From fe2180e4d75379f2dc31365a86ac6ba2ad98f9cd Mon Sep 17 00:00:00 2001 From: Subindev D <64056430+subindev-d@users.noreply.github.com> Date: Wed, 10 Jul 2024 17:38:43 +0100 Subject: [PATCH 1/4] Create jmol plugin using jsmol --- .../visualizations/jmol/config/jmol.xml | 16 + .../visualizations/jmol/static/JSmol.min.js | 265 + .../J/adapter/readers/cif/BCIFDataParser.js | 138 + .../j2s/J/adapter/readers/cif/BCIFDecoder.js | 385 + .../j2s/J/adapter/readers/cif/BCIFReader.js | 158 + .../J/adapter/readers/cif/Cif2DataParser.js | 194 + .../j2s/J/adapter/readers/cif/Cif2Reader.js | 9 + .../j2s/J/adapter/readers/cif/CifReader.js | 1326 + .../j2s/J/adapter/readers/cif/MMCifReader.js | 653 + .../readers/cif/MMCifValidationParser.js | 129 + .../j2s/J/adapter/readers/cif/MMTFReader.js | 289 + .../j2s/J/adapter/readers/cif/MSCifParser.js | 319 + .../static/j2s/J/adapter/readers/cif/MSRdr.js | 596 + .../j2s/J/adapter/readers/cif/Subsystem.js | 119 + .../J/adapter/readers/cif/TopoCifParser.js | 1079 + .../J/adapter/readers/molxyz/Mol3DReader.js | 9 + .../j2s/J/adapter/readers/molxyz/MolReader.js | 353 + .../j2s/J/adapter/readers/molxyz/V3000Rdr.js | 175 + .../j2s/J/adapter/readers/molxyz/XyzReader.js | 81 + .../j2s/J/adapter/readers/more/AFLOWReader.js | 190 + .../J/adapter/readers/more/BinaryDcdReader.js | 152 + .../j2s/J/adapter/readers/more/CDXReader.js | 13 + .../adapter/readers/more/ForceFieldReader.js | 88 + .../J/adapter/readers/more/GromacsReader.js | 86 + .../J/adapter/readers/more/JcampdxReader.js | 255 + .../j2s/J/adapter/readers/more/MdCrdReader.js | 77 + .../j2s/J/adapter/readers/more/MdTopReader.js | 156 + .../j2s/J/adapter/readers/more/Mol2Reader.js | 171 + .../adapter/readers/more/TlsDataOnlyReader.js | 84 + .../J/adapter/readers/pdb/JmolDataReader.js | 84 + .../j2s/J/adapter/readers/pdb/P2nReader.js | 22 + .../j2s/J/adapter/readers/pdb/PdbReader.js | 1189 + .../j2s/J/adapter/readers/pdb/PqrReader.js | 16 + .../j2s/J/adapter/readers/pymol/JmolObject.js | 259 + .../J/adapter/readers/pymol/PickleReader.js | 308 + .../j2s/J/adapter/readers/pymol/PyMOL.js | 208 + .../j2s/J/adapter/readers/pymol/PyMOLGroup.js | 44 + .../J/adapter/readers/pymol/PyMOLReader.js | 1103 + .../j2s/J/adapter/readers/pymol/PyMOLScene.js | 1220 + .../J/adapter/readers/quantum/AdfReader.js | 309 + .../J/adapter/readers/quantum/AmsReader.js | 9 + .../readers/quantum/BasisFunctionReader.js | 141 + .../J/adapter/readers/quantum/CsfReader.js | 412 + .../J/adapter/readers/quantum/DgridReader.js | 173 + .../J/adapter/readers/quantum/GamessReader.js | 288 + .../adapter/readers/quantum/GamessUKReader.js | 77 + .../adapter/readers/quantum/GamessUSReader.js | 188 + .../readers/quantum/GaussianFchkReader.js | 255 + .../adapter/readers/quantum/GaussianReader.js | 437 + .../readers/quantum/GaussianWfnReader.js | 9 + .../J/adapter/readers/quantum/GenNBOReader.js | 617 + .../J/adapter/readers/quantum/JaguarReader.js | 247 + .../j2s/J/adapter/readers/quantum/MOReader.js | 311 + .../J/adapter/readers/quantum/MoldenReader.js | 405 + .../readers/quantum/MopacGraphfReader.js | 124 + .../readers/quantum/MopacSlaterReader.js | 184 + .../J/adapter/readers/quantum/NBOParser.js | 399 + .../J/adapter/readers/quantum/NWChemReader.js | 407 + .../J/adapter/readers/quantum/OrcaReader.js | 195 + .../J/adapter/readers/quantum/PsiReader.js | 202 + .../J/adapter/readers/quantum/QCJSONReader.js | 212 + .../J/adapter/readers/quantum/QchemReader.js | 316 + .../J/adapter/readers/quantum/SlaterReader.js | 124 + .../J/adapter/readers/quantum/WebMOReader.js | 189 + .../J/adapter/readers/simple/AlchemyReader.js | 76 + .../J/adapter/readers/simple/AmpacReader.js | 89 + .../J/adapter/readers/simple/CubeReader.js | 44 + .../j2s/J/adapter/readers/simple/FAHReader.js | 142 + .../readers/simple/FoldingXyzReader.js | 103 + .../readers/simple/GhemicalMMReader.js | 90 + .../adapter/readers/simple/HyperChemReader.js | 75 + .../J/adapter/readers/simple/InputReader.js | 320 + .../J/adapter/readers/simple/JSONReader.js | 200 + .../j2s/J/adapter/readers/simple/JmeReader.js | 65 + .../readers/simple/MopacArchiveReader.js | 110 + .../J/adapter/readers/simple/MopacReader.js | 139 + .../J/adapter/readers/simple/OrcaReader.js | 70 + .../J/adapter/readers/simple/TinkerReader.js | 5 + .../adapter/readers/spartan/OdysseyReader.js | 14 + .../adapter/readers/spartan/SpartanArchive.js | 450 + .../readers/spartan/SpartanInputReader.js | 89 + .../adapter/readers/spartan/SpartanReader.js | 72 + .../readers/spartan/SpartanSmolReader.js | 182 + .../J/adapter/readers/spartan/SpartanUtil.js | 252 + .../J/adapter/readers/xml/XmlArgusReader.js | 118 + .../j2s/J/adapter/readers/xml/XmlCdxReader.js | 443 + .../J/adapter/readers/xml/XmlChem3dReader.js | 105 + .../j2s/J/adapter/readers/xml/XmlCmlReader.js | 572 + .../j2s/J/adapter/readers/xml/XmlHandler.js | 72 + .../j2s/J/adapter/readers/xml/XmlMOReader.js | 200 + .../J/adapter/readers/xml/XmlMagResReader.js | 38 + .../J/adapter/readers/xml/XmlMolproReader.js | 60 + .../J/adapter/readers/xml/XmlOdysseyReader.js | 104 + .../j2s/J/adapter/readers/xml/XmlQEReader.js | 74 + .../j2s/J/adapter/readers/xml/XmlReader.js | 220 + .../J/adapter/readers/xml/XmlVaspReader.js | 159 + .../j2s/J/adapter/readers/xml/XmlXsdReader.js | 71 + .../J/adapter/readers/xtal/AbinitReader.js | 107 + .../j2s/J/adapter/readers/xtal/AimsReader.js | 70 + .../J/adapter/readers/xtal/BilbaoReader.js | 178 + .../J/adapter/readers/xtal/CastepReader.js | 520 + .../j2s/J/adapter/readers/xtal/CgdReader.js | 163 + .../j2s/J/adapter/readers/xtal/CmdfReader.js | 121 + .../J/adapter/readers/xtal/CrystalReader.js | 812 + .../j2s/J/adapter/readers/xtal/DmolReader.js | 103 + .../J/adapter/readers/xtal/EspressoReader.js | 102 + .../j2s/J/adapter/readers/xtal/GulpReader.js | 247 + .../j2s/J/adapter/readers/xtal/JanaReader.js | 562 + .../J/adapter/readers/xtal/MagresReader.js | 178 + .../J/adapter/readers/xtal/OptimadeReader.js | 181 + .../j2s/J/adapter/readers/xtal/PWmatReader.js | 214 + .../j2s/J/adapter/readers/xtal/ShelxReader.js | 226 + .../J/adapter/readers/xtal/SiestaReader.js | 206 + .../adapter/readers/xtal/VaspChgcarReader.js | 5 + .../adapter/readers/xtal/VaspOutcarReader.js | 188 + .../adapter/readers/xtal/VaspPoscarReader.js | 140 + .../J/adapter/readers/xtal/Wien2kReader.js | 115 + .../J/adapter/readers/xtal/XcrysdenReader.js | 72 + .../jmol/static/j2s/J/adapter/smarter/Atom.js | 113 + .../j2s/J/adapter/smarter/AtomIterator.js | 126 + .../J/adapter/smarter/AtomSetCollection.js | 880 + .../smarter/AtomSetCollectionReader.js | 1325 + .../j2s/J/adapter/smarter/AtomSetObject.js | 7 + .../jmol/static/j2s/J/adapter/smarter/Bond.js | 24 + .../j2s/J/adapter/smarter/BondIterator.js | 46 + .../j2s/J/adapter/smarter/MSInterface.js | 3 + .../static/j2s/J/adapter/smarter/Resolver.js | 487 + .../J/adapter/smarter/SmarterJmolAdapter.js | 285 + .../static/j2s/J/adapter/smarter/Structure.js | 74 + .../J/adapter/smarter/StructureIterator.js | 85 + .../j2s/J/adapter/smarter/XtalSymmetry.js | 1162 + .../j2s/J/adapter/writers/CDXMLWriter.js | 504 + .../static/j2s/J/adapter/writers/CIFWriter.js | 219 + .../static/j2s/J/adapter/writers/CMLWriter.js | 101 + .../static/j2s/J/adapter/writers/MOLWriter.js | 252 + .../static/j2s/J/adapter/writers/PDBWriter.js | 177 + .../j2s/J/adapter/writers/PWMATWriter.js | 186 + .../j2s/J/adapter/writers/QCJSONWriter.js | 468 + .../static/j2s/J/adapter/writers/XSFWriter.js | 69 + .../static/j2s/J/adapter/writers/XtlWriter.js | 53 + .../static/j2s/J/api/AtomIndexIterator.js | 3 + .../jmol/static/j2s/J/api/EventManager.js | 3 + .../jmol/static/j2s/J/api/FontManager.js | 3 + .../static/j2s/J/api/GenericFileInterface.js | 3 + .../jmol/static/j2s/J/api/GenericGraphics.js | 3 + .../static/j2s/J/api/GenericImageDialog.js | 3 + .../static/j2s/J/api/GenericMenuInterface.js | 3 + .../static/j2s/J/api/GenericMouseInterface.js | 3 + .../jmol/static/j2s/J/api/GenericPlatform.js | 5 + .../jmol/static/j2s/J/api/Interface.js | 31 + .../jmol/static/j2s/J/api/JSVInterface.js | 3 + .../static/j2s/J/api/JmolAbstractButton.js | 3 + .../jmol/static/j2s/J/api/JmolAdapter.js | 52 + .../j2s/J/api/JmolAdapterAtomIterator.js | 3 + .../j2s/J/api/JmolAdapterBondIterator.js | 5 + .../j2s/J/api/JmolAdapterStructureIterator.js | 5 + .../static/j2s/J/api/JmolAnnotationParser.js | 3 + .../jmol/static/j2s/J/api/JmolAppAPI.js | 3 + .../j2s/J/api/JmolAppConsoleInterface.js | 3 + .../static/j2s/J/api/JmolAppletInterface.js | 3 + .../jmol/static/j2s/J/api/JmolAudioPlayer.js | 3 + .../static/j2s/J/api/JmolCallbackListener.js | 3 + .../jmol/static/j2s/J/api/JmolDataManager.js | 5 + .../static/j2s/J/api/JmolDialogInterface.js | 3 + .../jmol/static/j2s/J/api/JmolDropEditor.js | 3 + .../jmol/static/j2s/J/api/JmolEnvCalc.js | 3 + .../j2s/J/api/JmolFilesReaderInterface.js | 3 + .../j2s/J/api/JmolGestureServerInterface.js | 5 + .../static/j2s/J/api/JmolGraphicsInterface.js | 3 + .../jmol/static/j2s/J/api/JmolInChI.js | 3 + .../jmol/static/j2s/J/api/JmolJDXMOLParser.js | 3 + .../jmol/static/j2s/J/api/JmolJDXMOLReader.js | 3 + .../jmol/static/j2s/J/api/JmolJSpecView.js | 3 + .../static/j2s/J/api/JmolMeasurementClient.js | 3 + .../static/j2s/J/api/JmolModulationSet.js | 3 + .../j2s/J/api/JmolMovieCreatorInterface.js | 3 + .../jmol/static/j2s/J/api/JmolNMRInterface.js | 3 + .../j2s/J/api/JmolNavigatorInterface.js | 3 + .../static/j2s/J/api/JmolParallelProcessor.js | 3 + .../j2s/J/api/JmolPdfCreatorInterface.js | 3 + .../static/j2s/J/api/JmolPropertyManager.js | 3 + .../static/j2s/J/api/JmolRendererInterface.js | 3 + .../static/j2s/J/api/JmolRepaintManager.js | 3 + .../static/j2s/J/api/JmolSceneGenerator.js | 3 + .../j2s/J/api/JmolScriptEditorInterface.js | 3 + .../static/j2s/J/api/JmolScriptEvaluator.js | 3 + .../static/j2s/J/api/JmolScriptFunction.js | 3 + .../static/j2s/J/api/JmolScriptManager.js | 5 + .../static/j2s/J/api/JmolSelectionListener.js | 3 + .../static/j2s/J/api/JmolStatusListener.js | 3 + .../static/j2s/J/api/JmolSyncInterface.js | 3 + .../j2s/J/api/JmolTouchSimulatorInterface.js | 3 + .../jmol/static/j2s/J/api/JmolViewer.js | 63 + .../jmol/static/j2s/J/api/JmolWriter.js | 3 + .../jmol/static/j2s/J/api/JmolZipUtilities.js | 3 + .../jmol/static/j2s/J/api/PlatformViewer.js | 3 + .../jmol/static/j2s/J/api/PymolAtomReader.js | 3 + .../jmol/static/j2s/J/api/SC.js | 3 + .../j2s/J/api/SmilesMatcherInterface.js | 3 + .../static/j2s/J/api/SymmetryInterface.js | 3 + .../jmol/static/j2s/J/api/Translator.js | 3 + .../j2s/J/api/js/GenericConsoleTextArea.js | 3 + .../jmol/static/j2s/J/api/js/JSConsole.js | 3 + .../static/j2s/J/api/js/JSmolAppletObject.js | 3 + .../j2s/J/api/js/JmolToJSmolInterface.js | 3 + .../jmol/static/j2s/J/appletjs/Jmol.js | 18 + .../jmol/static/j2s/J/atomdata/AtomData.js | 39 + .../static/j2s/J/atomdata/AtomDataServer.js | 3 + .../jmol/static/j2s/J/atomdata/RadiusData.js | 54 + .../jmol/static/j2s/J/awtjs/Event.js | 5 + .../jmol/static/j2s/J/awtjs/Platform.js | 28 + .../jmol/static/j2s/J/awtjs/README.txt | 9 + .../jmol/static/j2s/J/awtjs2d/Display.js | 67 + .../jmol/static/j2s/J/awtjs2d/Image.js | 53 + .../jmol/static/j2s/J/awtjs2d/JSFile.js | 60 + .../jmol/static/j2s/J/awtjs2d/JSFont.js | 39 + .../jmol/static/j2s/J/awtjs2d/JSJmolPopup.js | 33 + .../static/j2s/J/awtjs2d/JSModelKitPopup.js | 41 + .../static/j2s/J/awtjs2d/JSPopupHelper.js | 93 + .../jmol/static/j2s/J/awtjs2d/JsG2D.js | 180 + .../jmol/static/j2s/J/awtjs2d/Mouse.js | 290 + .../jmol/static/j2s/J/awtjs2d/Platform.js | 288 + .../jmol/static/j2s/J/bspt/Bspf.js | 60 + .../jmol/static/j2s/J/bspt/Bspt.js | 32 + .../jmol/static/j2s/J/bspt/CubeIterator.js | 103 + .../jmol/static/j2s/J/bspt/Element.js | 8 + .../jmol/static/j2s/J/bspt/Leaf.js | 43 + .../jmol/static/j2s/J/bspt/Node.js | 72 + .../jmol/static/j2s/J/bspt/PointIterator.js | 96 + .../jmol/static/j2s/J/bspt/package.html | 45 + .../visualizations/jmol/static/j2s/J/c/CBK.js | 47 + .../visualizations/jmol/static/j2s/J/c/FIL.js | 20 + .../visualizations/jmol/static/j2s/J/c/HB.js | 57 + .../visualizations/jmol/static/j2s/J/c/PAL.js | 93 + .../jmol/static/j2s/J/c/STER.js | 34 + .../visualizations/jmol/static/j2s/J/c/STR.js | 47 + .../visualizations/jmol/static/j2s/J/c/VDW.js | 47 + .../static/j2s/J/console/GenericConsole.js | 404 + .../static/j2s/J/console/GenericTextArea.js | 3 + .../jmol/static/j2s/J/console/ImageDialog.js | 158 + .../static/j2s/J/consolejs/AppletConsole.js | 365 + .../jmol/static/j2s/J/consolejs/JSConsole.js | 3 + .../jmol/static/j2s/J/dialog/Dialog.js | 415 + .../jmol/static/j2s/J/dialog/FileChooser.js | 31 + .../jmol/static/j2s/J/dialog/FilePreview.js | 125 + .../static/j2s/J/dssx/AnnotationParser.js | 429 + .../jmol/static/j2s/J/dssx/Bridge.js | 51 + .../jmol/static/j2s/J/dssx/DSSP.js | 366 + .../jmol/static/j2s/J/dssx/DSSR0.js | 5 + .../jmol/static/j2s/J/dssx/DSSR1.js | 279 + .../jmol/static/j2s/J/export/Export3D.js | 397 + .../jmol/static/j2s/J/export/JSExporter.js | 127 + .../jmol/static/j2s/J/export/MeshData.js | 87 + .../jmol/static/j2s/J/export/UseTable.js | 28 + .../jmol/static/j2s/J/export/_IdtfExporter.js | 532 + .../jmol/static/j2s/J/export/_MayaExporter.js | 127 + .../jmol/static/j2s/J/export/_ObjExporter.js | 503 + .../static/j2s/J/export/_PovrayExporter.js | 245 + .../jmol/static/j2s/J/export/_StlExporter.js | 147 + .../static/j2s/J/export/_TachyonExporter.js | 227 + .../jmol/static/j2s/J/export/_VrmlExporter.js | 552 + .../jmol/static/j2s/J/export/_X3dExporter.js | 231 + .../j2s/J/export/__CartesianExporter.js | 210 + .../j2s/J/export/__RayTracerExporter.js | 139 + .../jmol/static/j2s/J/export/___Exporter.js | 331 + .../jmol/static/j2s/J/g3d/CircleRenderer.js | 154 + .../jmol/static/j2s/J/g3d/CylinderRenderer.js | 603 + .../jmol/static/j2s/J/g3d/G3DRenderer.js | 3 + .../jmol/static/j2s/J/g3d/Graphics3D.js | 1205 + .../jmol/static/j2s/J/g3d/HermiteRenderer.js | 364 + .../jmol/static/j2s/J/g3d/LineRenderer.js | 621 + .../jmol/static/j2s/J/g3d/Pixelator.js | 50 + .../static/j2s/J/g3d/PixelatorScreened.js | 15 + .../jmol/static/j2s/J/g3d/PixelatorShaded.js | 51 + .../jmol/static/j2s/J/g3d/PixelatorT.js | 20 + .../jmol/static/j2s/J/g3d/Platform3D.js | 121 + .../static/j2s/J/g3d/PrecisionRenderer.js | 43 + .../jmol/static/j2s/J/g3d/SphereRenderer.js | 392 + .../jmol/static/j2s/J/g3d/TextRenderer.js | 140 + .../jmol/static/j2s/J/g3d/TextString.js | 28 + .../jmol/static/j2s/J/g3d/TriangleRenderer.js | 244 + .../jmol/static/j2s/J/g3d/package.html | 61 + .../j2s/J/geodesic/EnvelopeCalculation.js | 359 + .../jmol/static/j2s/J/i18n/GT.js | 186 + .../jmol/static/j2s/J/i18n/Language.js | 29 + .../jmol/static/j2s/J/i18n/Resource.js | 87 + .../jmol/static/j2s/J/image/AviCreator.js | 11 + .../jmol/static/j2s/J/inchi/InChIJS.js | 52 + .../jmol/static/j2s/J/io/DOMReader.js | 34 + .../jmol/static/j2s/J/io/FileReader.js | 92 + .../jmol/static/j2s/J/io/FilesReader.js | 56 + .../jmol/static/j2s/J/io/JmolUtil.js | 251 + .../jmol/static/j2s/J/jsv/JDXMOLParser.js | 293 + .../jmol/static/j2s/J/jsv/JSpecView.js | 134 + .../static/j2s/J/jvxl/api/MeshDataServer.js | 3 + .../static/j2s/J/jvxl/api/VertexDataServer.js | 3 + .../static/j2s/J/jvxl/calc/MarchingCubes.js | 337 + .../static/j2s/J/jvxl/calc/MarchingSquares.js | 241 + .../jmol/static/j2s/J/jvxl/data/JvxlCoder.js | 698 + .../jmol/static/j2s/J/jvxl/data/JvxlData.js | 162 + .../jmol/static/j2s/J/jvxl/data/MeshData.js | 206 + .../jmol/static/j2s/J/jvxl/data/VolumeData.js | 384 + .../static/j2s/J/jvxl/readers/ApbsReader.js | 37 + .../j2s/J/jvxl/readers/AtomDataReader.js | 378 + .../j2s/J/jvxl/readers/AtomPropertyMapper.js | 118 + .../j2s/J/jvxl/readers/BCifDensityReader.js | 201 + .../j2s/J/jvxl/readers/CastepDensityReader.js | 87 + .../j2s/J/jvxl/readers/CifDensityReader.js | 53 + .../static/j2s/J/jvxl/readers/CubeReader.js | 37 + .../j2s/J/jvxl/readers/DelPhiBinaryReader.js | 79 + .../j2s/J/jvxl/readers/Dsn6BinaryReader.js | 125 + .../static/j2s/J/jvxl/readers/EfvetReader.js | 80 + .../static/j2s/J/jvxl/readers/IsoFxyReader.js | 99 + .../j2s/J/jvxl/readers/IsoFxyzReader.js | 20 + .../J/jvxl/readers/IsoIntersectAtomReader.js | 136 + .../J/jvxl/readers/IsoIntersectGridReader.js | 41 + .../j2s/J/jvxl/readers/IsoIntersectReader.js | 136 + .../static/j2s/J/jvxl/readers/IsoMOReader.js | 248 + .../static/j2s/J/jvxl/readers/IsoMepReader.js | 34 + .../static/j2s/J/jvxl/readers/IsoMlpReader.js | 14 + .../j2s/J/jvxl/readers/IsoPlaneReader.js | 21 + .../j2s/J/jvxl/readers/IsoShapeReader.js | 375 + .../j2s/J/jvxl/readers/IsoSolventReader.js | 633 + .../static/j2s/J/jvxl/readers/JaguarReader.js | 56 + .../static/j2s/J/jvxl/readers/JvxlReader.js | 195 + .../j2s/J/jvxl/readers/JvxlXmlReader.js | 700 + .../j2s/J/jvxl/readers/KinemageReader.js | 122 + .../j2s/J/jvxl/readers/MapFileReader.js | 108 + .../j2s/J/jvxl/readers/MrcBinaryReader.js | 178 + .../static/j2s/J/jvxl/readers/MsmsReader.js | 54 + .../static/j2s/J/jvxl/readers/NffReader.js | 75 + .../static/j2s/J/jvxl/readers/ObjReader.js | 100 + .../static/j2s/J/jvxl/readers/Parameters.js | 549 + .../jvxl/readers/PeriodicVolumeFileReader.js | 62 + .../j2s/J/jvxl/readers/PltFormattedReader.js | 40 + .../static/j2s/J/jvxl/readers/Pmesh4Reader.js | 102 + .../static/j2s/J/jvxl/readers/PmeshReader.js | 205 + .../j2s/J/jvxl/readers/PolygonFileReader.js | 31 + .../j2s/J/jvxl/readers/PyMOLMeshReader.js | 127 + .../static/j2s/J/jvxl/readers/Ras3DReader.js | 97 + .../j2s/J/jvxl/readers/SurfaceFileReader.js | 140 + .../j2s/J/jvxl/readers/SurfaceGenerator.js | 866 + .../j2s/J/jvxl/readers/SurfaceReader.js | 649 + .../static/j2s/J/jvxl/readers/UhbdReader.js | 53 + .../j2s/J/jvxl/readers/VaspChgcarReader.js | 74 + .../j2s/J/jvxl/readers/VolumeDataReader.js | 181 + .../j2s/J/jvxl/readers/VolumeFileReader.js | 411 + .../static/j2s/J/jvxl/readers/XmlReader.js | 132 + .../static/j2s/J/jvxl/readers/XplorReader.js | 72 + .../static/j2s/J/jvxl/readers/XsfReader.js | 62 + .../jmol/static/j2s/J/modelkit/ModelKit.js | 2797 + .../static/j2s/J/modelkit/ModelKitPopup.js | 221 + .../J/modelkit/ModelKitPopupResourceBundle.js | 28 + .../static/j2s/J/modelkit/images/atoms.png | Bin 0 -> 1408 bytes .../static/j2s/J/modelkit/images/bonds.png | Bin 0 -> 1378 bytes .../j2s/J/modelkit/images/dotdotdot.png | Bin 0 -> 169 bytes .../j2s/J/modelkit/images/undoButton.gif | Bin 0 -> 969 bytes .../static/j2s/J/modelkit/images/xtal.png | Bin 0 -> 9054 bytes .../j2s/J/modelkit/images/xtal_pngj.png | Bin 0 -> 81243 bytes .../jmol/static/j2s/J/navigate/Navigator.js | 538 + .../jmol/static/j2s/J/popup/GenericPopup.js | 375 + .../static/j2s/J/popup/JmolGenericPopup.js | 76 + .../jmol/static/j2s/J/popup/JmolPopup.js | 712 + .../j2s/J/popup/MainPopupResourceBundle.js | 41 + .../jmol/static/j2s/J/popup/PopupHelper.js | 3 + .../jmol/static/j2s/J/popup/PopupResource.js | 109 + .../static/j2s/J/quantum/MOCalculation.js | 764 + .../static/j2s/J/quantum/MepCalculation.js | 144 + .../static/j2s/J/quantum/MlpCalculation.js | 37 + .../static/j2s/J/quantum/NMRCalculation.js | 585 + .../jmol/static/j2s/J/quantum/NMRNoeMatrix.js | 650 + .../static/j2s/J/quantum/NciCalculation.js | 370 + .../jmol/static/j2s/J/quantum/QMAtom.js | 73 + .../jmol/static/j2s/J/quantum/QS.js | 71 + .../j2s/J/quantum/QuantumCalculation.js | 156 + .../j2s/J/quantum/QuantumPlaneCalculation.js | 5 + .../jmol/static/j2s/J/quantum/SlaterData.js | 30 + .../j2s/J/quantum/atomicLipophilicity.txt | 105 + .../jmol/static/j2s/J/quantum/mo/DataAdder.js | 3 + .../static/j2s/J/quantum/mo/DataAdder11H.js | 19 + .../static/j2s/J/quantum/mo/DataAdder13I.js | 19 + .../static/j2s/J/quantum/mo/DataAdder7F.js | 145 + .../static/j2s/J/quantum/mo/DataAdder9G.js | 19 + .../static/j2s/J/quantum/mo/DataAdderF.js | 120 + .../static/j2s/J/quantum/mo/DataAdderG.js | 19 + .../static/j2s/J/quantum/mo/DataAdderH.js | 19 + .../static/j2s/J/quantum/mo/DataAdderI.js | 19 + .../jmol/static/j2s/J/quantum/nmr_data.txt | 83 + .../jmol/static/j2s/J/render/AxesRenderer.js | 161 + .../jmol/static/j2s/J/render/BallsRenderer.js | 22 + .../static/j2s/J/render/BbcageRenderer.js | 18 + .../jmol/static/j2s/J/render/CageRenderer.js | 81 + .../jmol/static/j2s/J/render/EchoRenderer.js | 57 + .../j2s/J/render/FontLineShapeRenderer.js | 242 + .../jmol/static/j2s/J/render/FrankRenderer.js | 38 + .../jmol/static/j2s/J/render/HalosRenderer.js | 76 + .../jmol/static/j2s/J/render/HoverRenderer.js | 39 + .../static/j2s/J/render/LabelsRenderer.js | 138 + .../static/j2s/J/render/MeasuresRenderer.js | 264 + .../jmol/static/j2s/J/render/MeshRenderer.js | 351 + .../static/j2s/J/render/RepaintManager.js | 180 + .../jmol/static/j2s/J/render/ShapeRenderer.js | 48 + .../jmol/static/j2s/J/render/StarsRenderer.js | 50 + .../static/j2s/J/render/SticksRenderer.js | 413 + .../jmol/static/j2s/J/render/TextRenderer.js | 110 + .../static/j2s/J/render/UccageRenderer.js | 136 + .../j2s/J/renderbio/BackboneRenderer.js | 26 + .../static/j2s/J/renderbio/BioMeshRenderer.js | 280 + .../j2s/J/renderbio/BioShapeRenderer.js | 327 + .../static/j2s/J/renderbio/CartoonRenderer.js | 57 + .../j2s/J/renderbio/MeshRibbonRenderer.js | 27 + .../static/j2s/J/renderbio/NucleicRenderer.js | 267 + .../static/j2s/J/renderbio/RibbonsRenderer.js | 11 + .../static/j2s/J/renderbio/RocketRenderer.js | 168 + .../static/j2s/J/renderbio/RocketsRenderer.js | 68 + .../static/j2s/J/renderbio/StrandsRenderer.js | 48 + .../static/j2s/J/renderbio/TraceRenderer.js | 16 + .../static/j2s/J/rendercgo/CGORenderer.js | 299 + .../j2s/J/renderspecial/DipolesRenderer.js | 132 + .../j2s/J/renderspecial/DotsRenderer.js | 82 + .../j2s/J/renderspecial/DrawRenderer.js | 388 + .../j2s/J/renderspecial/EllipsoidsRenderer.js | 371 + .../j2s/J/renderspecial/GeoSurfaceRenderer.js | 58 + .../j2s/J/renderspecial/PolyhedraRenderer.js | 135 + .../j2s/J/renderspecial/VectorsRenderer.js | 172 + .../j2s/J/rendersurface/ContactRenderer.js | 5 + .../j2s/J/rendersurface/IsosurfaceRenderer.js | 379 + .../J/rendersurface/LcaoCartoonRenderer.js | 5 + .../rendersurface/MolecularOrbitalRenderer.js | 25 + .../static/j2s/J/rendersurface/NBORenderer.js | 5 + .../j2s/J/rendersurface/Plot3DRenderer.js | 5 + .../j2s/J/rendersurface/PmeshRenderer.js | 9 + .../jmol/static/j2s/J/shape/AtomShape.js | 148 + .../jmol/static/j2s/J/shape/Axes.js | 147 + .../jmol/static/j2s/J/shape/Balls.js | 95 + .../jmol/static/j2s/J/shape/Bbcage.js | 22 + .../jmol/static/j2s/J/shape/Echo.js | 217 + .../jmol/static/j2s/J/shape/FontLineShape.js | 42 + .../jmol/static/j2s/J/shape/Frank.js | 66 + .../jmol/static/j2s/J/shape/Halos.js | 37 + .../jmol/static/j2s/J/shape/Hover.js | 60 + .../jmol/static/j2s/J/shape/Labels.js | 522 + .../jmol/static/j2s/J/shape/Measures.js | 556 + .../jmol/static/j2s/J/shape/Mesh.js | 431 + .../jmol/static/j2s/J/shape/MeshCollection.js | 479 + .../jmol/static/j2s/J/shape/Shape.js | 183 + .../jmol/static/j2s/J/shape/Stars.js | 9 + .../jmol/static/j2s/J/shape/Sticks.js | 168 + .../jmol/static/j2s/J/shape/TextShape.js | 191 + .../jmol/static/j2s/J/shape/Uccage.js | 15 + .../jmol/static/j2s/J/shapebio/Backbone.js | 78 + .../jmol/static/j2s/J/shapebio/BioShape.js | 235 + .../j2s/J/shapebio/BioShapeCollection.js | 168 + .../jmol/static/j2s/J/shapebio/Cartoon.js | 10 + .../jmol/static/j2s/J/shapebio/MeshRibbon.js | 9 + .../jmol/static/j2s/J/shapebio/Ribbons.js | 5 + .../jmol/static/j2s/J/shapebio/Rockets.js | 13 + .../jmol/static/j2s/J/shapebio/Strands.js | 7 + .../jmol/static/j2s/J/shapebio/Trace.js | 86 + .../jmol/static/j2s/J/shapecgo/CGO.js | 184 + .../jmol/static/j2s/J/shapecgo/CGOMesh.js | 231 + .../jmol/static/j2s/J/shapespecial/Dipole.js | 168 + .../jmol/static/j2s/J/shapespecial/Dipoles.js | 499 + .../jmol/static/j2s/J/shapespecial/Dots.js | 186 + .../jmol/static/j2s/J/shapespecial/Draw.js | 1261 + .../static/j2s/J/shapespecial/DrawMesh.js | 100 + .../static/j2s/J/shapespecial/Ellipsoid.js | 128 + .../static/j2s/J/shapespecial/Ellipsoids.js | 324 + .../static/j2s/J/shapespecial/GeoSurface.js | 11 + .../static/j2s/J/shapespecial/Polyhedra.js | 987 + .../static/j2s/J/shapespecial/Polyhedron.js | 401 + .../jmol/static/j2s/J/shapespecial/Vectors.js | 24 + .../jmol/static/j2s/J/shapesurface/Contact.js | 546 + .../static/j2s/J/shapesurface/Isosurface.js | 1316 + .../j2s/J/shapesurface/IsosurfaceMesh.js | 709 + .../static/j2s/J/shapesurface/LcaoCartoon.js | 221 + .../j2s/J/shapesurface/MolecularOrbital.js | 412 + .../jmol/static/j2s/J/shapesurface/NBO.js | 11 + .../static/j2s/J/shapesurface/PMeshWriter.js | 196 + .../jmol/static/j2s/J/shapesurface/Plot3D.js | 10 + .../jmol/static/j2s/J/shapesurface/Pmesh.js | 75 + .../static/j2s/J/thread/AnimationThread.js | 91 + .../static/j2s/J/thread/HoverWatcherThread.js | 41 + .../jmol/static/j2s/J/thread/JmolThread.js | 113 + .../jmol/static/j2s/J/thread/MoveToThread.js | 278 + .../jmol/static/j2s/J/thread/SpinThread.js | 131 + .../jmol/static/j2s/J/thread/TimeoutThread.js | 100 + .../static/j2s/J/thread/VibrationThread.js | 46 + .../J/translation/JmolApplet/JmolApplet.pot | 2563 + .../static/j2s/J/translation/JmolApplet/ar.po | 2601 + .../static/j2s/J/translation/JmolApplet/bs.po | 2564 + .../static/j2s/J/translation/JmolApplet/ca.po | 2649 + .../J/translation/JmolApplet/ca@valencia.po | 2544 + .../static/j2s/J/translation/JmolApplet/cs.po | 2643 + .../static/j2s/J/translation/JmolApplet/da.po | 2636 + .../static/j2s/J/translation/JmolApplet/de.po | 2661 + .../static/j2s/J/translation/JmolApplet/el.po | 2605 + .../j2s/J/translation/JmolApplet/en_GB.po | 2636 + .../static/j2s/J/translation/JmolApplet/es.po | 2599 + .../static/j2s/J/translation/JmolApplet/et.po | 2575 + .../static/j2s/J/translation/JmolApplet/eu.po | 2628 + .../static/j2s/J/translation/JmolApplet/fi.po | 2647 + .../static/j2s/J/translation/JmolApplet/fr.po | 2652 + .../static/j2s/J/translation/JmolApplet/fy.po | 2564 + .../static/j2s/J/translation/JmolApplet/hu.po | 2619 + .../static/j2s/J/translation/JmolApplet/hy.po | 2568 + .../static/j2s/J/translation/JmolApplet/id.po | 2641 + .../static/j2s/J/translation/JmolApplet/it.po | 2650 + .../static/j2s/J/translation/JmolApplet/ja.po | 2637 + .../static/j2s/J/translation/JmolApplet/jv.po | 2585 + .../static/j2s/J/translation/JmolApplet/ko.po | 2617 + .../static/j2s/J/translation/JmolApplet/ms.po | 2641 + .../static/j2s/J/translation/JmolApplet/nb.po | 2590 + .../static/j2s/J/translation/JmolApplet/nl.po | 2641 + .../static/j2s/J/translation/JmolApplet/oc.po | 2603 + .../static/j2s/J/translation/JmolApplet/pl.po | 2605 + .../static/j2s/J/translation/JmolApplet/pt.po | 2611 + .../j2s/J/translation/JmolApplet/pt_BR.po | 2633 + .../static/j2s/J/translation/JmolApplet/ru.po | 2636 + .../static/j2s/J/translation/JmolApplet/sl.po | 2599 + .../static/j2s/J/translation/JmolApplet/sv.po | 2637 + .../static/j2s/J/translation/JmolApplet/ta.po | 2578 + .../static/j2s/J/translation/JmolApplet/te.po | 2566 + .../static/j2s/J/translation/JmolApplet/tr.po | 2626 + .../static/j2s/J/translation/JmolApplet/ug.po | 2564 + .../static/j2s/J/translation/JmolApplet/uk.po | 2656 + .../static/j2s/J/translation/JmolApplet/uz.po | 2532 + .../j2s/J/translation/JmolApplet/zh_CN.po | 2623 + .../j2s/J/translation/JmolApplet/zh_TW.po | 2627 + .../jmol/static/j2s/J/translation/PO.js | 5 + .../jmol/static/j2s/JM/AlphaMonomer.js | 155 + .../jmol/static/j2s/JM/AlphaPolymer.js | 183 + .../jmol/static/j2s/JM/AminoMonomer.js | 224 + .../jmol/static/j2s/JM/AminoPolymer.js | 245 + .../jmol/static/j2s/JM/Annotation.js | 5 + .../visualizations/jmol/static/j2s/JM/Atom.js | 1152 + .../jmol/static/j2s/JM/AtomCollection.js | 2084 + .../static/j2s/JM/AtomIteratorWithinModel.js | 120 + .../j2s/JM/AtomIteratorWithinModelSet.js | 32 + .../jmol/static/j2s/JM/BasePair.js | 26 + .../jmol/static/j2s/JM/BioExt.js | 731 + .../jmol/static/j2s/JM/BioModel.js | 301 + .../jmol/static/j2s/JM/BioModelSet.js | 659 + .../jmol/static/j2s/JM/BioPolymer.js | 335 + .../jmol/static/j2s/JM/BioResolver.js | 692 + .../visualizations/jmol/static/j2s/JM/Bond.js | 143 + .../jmol/static/j2s/JM/BondCollection.js | 537 + .../jmol/static/j2s/JM/BondIterator.js | 3 + .../static/j2s/JM/BondIteratorSelected.js | 44 + .../jmol/static/j2s/JM/BondSet.js | 22 + .../jmol/static/j2s/JM/CarbohydrateMonomer.js | 50 + .../jmol/static/j2s/JM/CarbohydratePolymer.js | 10 + .../jmol/static/j2s/JM/Chain.js | 44 + .../jmol/static/j2s/JM/FF/AtomType.js | 28 + .../jmol/static/j2s/JM/FF/Calculation.js | 56 + .../jmol/static/j2s/JM/FF/Calculations.js | 426 + .../jmol/static/j2s/JM/FF/CalculationsMMFF.js | 139 + .../jmol/static/j2s/JM/FF/CalculationsUFF.js | 106 + .../jmol/static/j2s/JM/FF/FFParam.js | 9 + .../jmol/static/j2s/JM/FF/ForceField.js | 279 + .../jmol/static/j2s/JM/FF/ForceFieldMMFF.js | 1170 + .../jmol/static/j2s/JM/FF/ForceFieldUFF.js | 207 + .../jmol/static/j2s/JM/FF/MMFFAngleCalc.js | 29 + .../jmol/static/j2s/JM/FF/MMFFDistanceCalc.js | 32 + .../jmol/static/j2s/JM/FF/MMFFESCalc.js | 23 + .../jmol/static/j2s/JM/FF/MMFFOOPCalc.js | 37 + .../jmol/static/j2s/JM/FF/MMFFSBCalc.js | 40 + .../jmol/static/j2s/JM/FF/MMFFTorsionCalc.js | 30 + .../jmol/static/j2s/JM/FF/MMFFVDWCalc.js | 49 + .../jmol/static/j2s/JM/FF/UFFAngleCalc.js | 96 + .../jmol/static/j2s/JM/FF/UFFDistanceCalc.js | 30 + .../jmol/static/j2s/JM/FF/UFFOOPCalc.js | 70 + .../jmol/static/j2s/JM/FF/UFFTorsionCalc.js | 99 + .../jmol/static/j2s/JM/FF/UFFVDWCalc.js | 48 + .../static/j2s/JM/FF/data/MMFF94-smarts.txt | 260 + .../jmol/static/j2s/JM/FF/data/UFF.txt | 281 + .../jmol/static/j2s/JM/FF/data/UFF_2d.txt | 281 + .../jmol/static/j2s/JM/FF/data/mmff94.par.txt | 5077 ++ .../static/j2s/JM/FF/data/mmff94_2d.par.txt | 5058 ++ .../j2s/JM/FF/mmff/validate/MMFF94SYMB.PAR | 222 + .../JM/FF/mmff/validate/MMFF94_dative.mol2 | 43300 +++++++++ .../FF/mmff/validate/MMFF94_hypervalent.mol2 | 43301 +++++++++ .../j2s/JM/FF/mmff/validate/checkmm.spt | 235 + .../JM/FF/mmff/validate/jmol-validation.txt | 40 + .../mmff/validate/mmff-validation-energy.dat | 761 + .../JM/FF/mmff/validate/mmff-validation.dat | 3805 + .../jmol/static/j2s/JM/Group.js | 335 + .../jmol/static/j2s/JM/HBond.js | 22 + .../jmol/static/j2s/JM/Helix.js | 23 + .../jmol/static/j2s/JM/LabelToken.js | 392 + .../jmol/static/j2s/JM/MMConstraint.js | 30 + .../jmol/static/j2s/JM/Measurement.js | 482 + .../jmol/static/j2s/JM/MeasurementData.js | 157 + .../jmol/static/j2s/JM/MeasurementPending.js | 59 + .../jmol/static/j2s/JM/MinAngle.js | 15 + .../jmol/static/j2s/JM/MinAtom.js | 80 + .../jmol/static/j2s/JM/MinBond.js | 25 + .../jmol/static/j2s/JM/MinObject.js | 33 + .../jmol/static/j2s/JM/MinPosition.js | 11 + .../jmol/static/j2s/JM/MinTorsion.js | 10 + .../jmol/static/j2s/JM/MinimizationThread.js | 52 + .../jmol/static/j2s/JM/Minimizer.js | 576 + .../jmol/static/j2s/JM/Model.js | 189 + .../jmol/static/j2s/JM/ModelLoader.js | 1055 + .../jmol/static/j2s/JM/ModelSet.js | 3172 + .../jmol/static/j2s/JM/Monomer.js | 363 + .../jmol/static/j2s/JM/NucleicMonomer.js | 401 + .../jmol/static/j2s/JM/NucleicPolymer.js | 88 + .../jmol/static/j2s/JM/Orientation.js | 77 + .../jmol/static/j2s/JM/PhosphorusMonomer.js | 80 + .../jmol/static/j2s/JM/PhosphorusPolymer.js | 9 + .../jmol/static/j2s/JM/ProteinStructure.js | 157 + .../jmol/static/j2s/JM/Sheet.js | 72 + .../jmol/static/j2s/JM/StateScript.js | 57 + .../jmol/static/j2s/JM/Structure.js | 3 + .../visualizations/jmol/static/j2s/JM/Text.js | 520 + .../jmol/static/j2s/JM/TickInfo.js | 18 + .../jmol/static/j2s/JM/Trajectory.js | 150 + .../visualizations/jmol/static/j2s/JM/Turn.js | 11 + .../visualizations/jmol/static/j2s/JM/Util.js | 270 + .../jmol/static/j2s/JS/AbstractButton.js | 82 + .../jmol/static/j2s/JS/AbstractTableModel.js | 3 + .../jmol/static/j2s/JS/BorderLayout.js | 5 + .../jmol/static/j2s/JS/ButtonGroup.js | 21 + .../jmol/static/j2s/JS/CIPChirality.js | 986 + .../jmol/static/j2s/JS/CIPData.js | 303 + .../jmol/static/j2s/JS/CIPDataSmiles.js | 112 + .../jmol/static/j2s/JS/CIPDataTracker.js | 106 + .../visualizations/jmol/static/j2s/JS/Cell.js | 23 + .../jmol/static/j2s/JS/CmdExt.js | 4955 + .../jmol/static/j2s/JS/Color.js | 43 + .../static/j2s/JS/ColumnSelectionModel.js | 3 + .../static/j2s/JS/CommandWatcherThread.js | 49 + .../jmol/static/j2s/JS/Component.js | 120 + .../jmol/static/j2s/JS/Container.js | 65 + .../jmol/static/j2s/JS/ContextToken.js | 27 + .../jmol/static/j2s/JS/Dimension.js | 18 + .../jmol/static/j2s/JS/Document.js | 3 + .../jmol/static/j2s/JS/FileLoadThread.js | 50 + .../jmol/static/j2s/JS/FlowLayout.js | 5 + .../visualizations/jmol/static/j2s/JS/Grid.js | 46 + .../jmol/static/j2s/JS/GridBagConstraints.js | 36 + .../jmol/static/j2s/JS/GridBagLayout.js | 5 + .../jmol/static/j2s/JS/HTMLElement.js | 3 + .../jmol/static/j2s/JS/HTMLWindowEvent.js | 3 + .../jmol/static/j2s/JS/HallInfo.js | 111 + .../jmol/static/j2s/JS/HallRotation.js | 51 + .../jmol/static/j2s/JS/HallRotationTerm.js | 134 + .../jmol/static/j2s/JS/HallTranslation.js | 80 + .../jmol/static/j2s/JS/Insets.js | 17 + .../static/j2s/JS/InvalidSmilesException.js | 23 + .../jmol/static/j2s/JS/IsoExt.js | 3337 + .../jmol/static/j2s/JS/JButton.js | 15 + .../jmol/static/j2s/JS/JCheckBox.js | 14 + .../jmol/static/j2s/JS/JCheckBoxMenuItem.js | 9 + .../jmol/static/j2s/JS/JComboBox.js | 36 + .../jmol/static/j2s/JS/JComponent.js | 25 + .../jmol/static/j2s/JS/JComponentImp.js | 9 + .../jmol/static/j2s/JS/JContentPane.js | 18 + .../jmol/static/j2s/JS/JDialog.js | 86 + .../jmol/static/j2s/JS/JEditorPane.js | 16 + .../jmol/static/j2s/JS/JLabel.js | 18 + .../jmol/static/j2s/JS/JMenu.js | 213 + .../jmol/static/j2s/JS/JMenuItem.js | 30 + .../jmol/static/j2s/JS/JPanel.js | 39 + .../jmol/static/j2s/JS/JPopupMenu.js | 36 + .../static/j2s/JS/JRadioButtonMenuItem.js | 11 + .../jmol/static/j2s/JS/JScrollPane.js | 23 + .../jmol/static/j2s/JS/JSplitPane.js | 65 + .../jmol/static/j2s/JS/JTable.js | 67 + .../jmol/static/j2s/JS/JTextField.js | 16 + .../jmol/static/j2s/JS/JTextPane.js | 25 + .../jmol/static/j2s/JS/LayoutManager.js | 5 + .../jmol/static/j2s/JS/ListSelectionModel.js | 3 + .../jmol/static/j2s/JS/MathExt.js | 3274 + .../jmol/static/j2s/JS/PointGroup.js | 864 + .../static/j2s/JS/PolyhedronStereoSorter.js | 39 + .../visualizations/jmol/static/j2s/JS/SV.js | 1456 + .../jmol/static/j2s/JS/ScriptCompiler.js | 2111 + .../jmol/static/j2s/JS/ScriptContext.js | 115 + .../jmol/static/j2s/JS/ScriptDelayThread.js | 52 + .../jmol/static/j2s/JS/ScriptError.js | 297 + .../jmol/static/j2s/JS/ScriptEval.js | 6868 ++ .../jmol/static/j2s/JS/ScriptException.js | 30 + .../jmol/static/j2s/JS/ScriptExpr.js | 1943 + .../jmol/static/j2s/JS/ScriptExt.js | 185 + .../jmol/static/j2s/JS/ScriptFlowContext.js | 80 + .../jmol/static/j2s/JS/ScriptFunction.js | 133 + .../jmol/static/j2s/JS/ScriptInterruption.js | 10 + .../jmol/static/j2s/JS/ScriptManager.js | 521 + .../jmol/static/j2s/JS/ScriptMathProcessor.js | 1337 + .../static/j2s/JS/ScriptParallelProcessor.js | 128 + .../jmol/static/j2s/JS/ScriptParam.js | 1144 + .../jmol/static/j2s/JS/ScriptProcess.js | 13 + .../static/j2s/JS/ScriptProcessRunnable.js | 44 + .../jmol/static/j2s/JS/ScriptQueueThread.js | 49 + .../jmol/static/j2s/JS/ScriptTokenParser.js | 1095 + .../jmol/static/j2s/JS/SmilesAromatic.js | 264 + .../jmol/static/j2s/JS/SmilesAtom.js | 595 + .../jmol/static/j2s/JS/SmilesBond.js | 239 + .../jmol/static/j2s/JS/SmilesExt.js | 201 + .../jmol/static/j2s/JS/SmilesGenerator.js | 863 + .../jmol/static/j2s/JS/SmilesMatcher.js | 405 + .../jmol/static/j2s/JS/SmilesMeasure.js | 84 + .../jmol/static/j2s/JS/SmilesParser.js | 933 + .../jmol/static/j2s/JS/SmilesRing.js | 34 + .../jmol/static/j2s/JS/SmilesRingSet.js | 35 + .../jmol/static/j2s/JS/SmilesSearch.js | 1167 + .../jmol/static/j2s/JS/SmilesStereo.js | 735 + .../jmol/static/j2s/JS/SpaceGroup.js | 1130 + .../jmol/static/j2s/JS/SpaceGroupFinder.js | 735 + .../jmol/static/j2s/JS/SwingConstants.js | 5 + .../jmol/static/j2s/JS/SwingController.js | 3 + .../jmol/static/j2s/JS/Symmetry.js | 1034 + .../jmol/static/j2s/JS/SymmetryDesc.js | 1317 + .../jmol/static/j2s/JS/SymmetryInfo.js | 132 + .../jmol/static/j2s/JS/SymmetryOperation.js | 1407 + .../visualizations/jmol/static/j2s/JS/T.js | 263 + .../jmol/static/j2s/JS/TableCellRenderer.js | 3 + .../jmol/static/j2s/JS/TableColumn.js | 3 + .../jmol/static/j2s/JS/UnitCell.js | 810 + .../jmol/static/j2s/JS/UnitCellIterator.js | 149 + .../jmol/static/j2s/JS/VTemp.js | 26 + .../jmol/static/j2s/JS/WyckoffFinder.js | 440 + .../jmol/static/j2s/JS/package.html | 886 + .../jmol/static/j2s/JS/sg/allWyckoff.txt | 2687 + .../j2s/JS/sg/json/aflow_structures.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_1.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_10.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_100.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_101.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_102.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_103.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_104.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_105.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_106.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_107.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_108.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_109.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_11.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_110.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_111.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_112.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_113.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_114.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_115.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_116.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_117.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_118.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_119.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_12.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_120.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_121.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_122.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_123.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_124.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_125.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_126.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_127.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_128.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_129.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_13.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_130.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_131.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_132.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_133.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_134.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_135.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_136.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_137.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_138.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_139.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_14.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_140.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_141.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_142.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_143.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_144.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_145.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_146.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_147.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_148.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_149.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_15.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_150.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_151.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_152.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_153.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_154.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_155.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_156.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_157.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_158.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_159.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_16.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_160.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_161.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_162.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_163.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_164.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_165.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_166.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_167.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_168.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_169.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_17.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_170.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_171.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_172.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_173.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_174.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_175.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_176.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_177.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_178.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_179.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_18.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_180.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_181.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_182.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_183.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_184.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_185.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_186.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_187.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_188.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_189.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_19.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_190.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_191.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_192.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_193.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_194.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_195.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_196.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_197.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_198.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_199.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_2.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_20.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_200.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_201.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_202.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_203.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_204.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_205.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_206.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_207.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_208.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_209.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_21.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_210.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_211.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_212.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_213.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_214.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_215.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_216.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_217.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_218.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_219.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_22.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_220.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_221.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_222.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_223.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_224.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_225.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_226.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_227.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_228.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_229.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_23.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_230.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_24.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_25.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_26.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_27.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_28.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_29.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_3.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_30.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_31.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_32.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_33.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_34.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_35.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_36.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_37.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_38.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_39.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_4.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_40.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_41.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_42.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_43.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_44.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_45.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_46.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_47.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_48.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_49.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_5.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_50.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_51.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_52.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_53.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_54.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_55.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_56.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_57.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_58.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_59.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_6.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_60.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_61.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_62.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_63.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_64.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_65.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_66.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_67.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_68.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_69.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_7.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_70.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_71.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_72.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_73.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_74.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_75.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_76.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_77.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_78.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_79.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_8.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_80.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_81.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_82.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_83.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_84.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_85.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_86.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_87.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_88.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_89.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_9.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_90.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_91.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_92.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_93.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_94.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_95.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_96.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_97.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_98.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_99.json | 1 + .../jmol/static/j2s/JS/sg/json/ita_all.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_1.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_10.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_100.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_101.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_102.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_103.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_104.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_105.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_106.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_107.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_108.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_109.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_11.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_110.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_111.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_112.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_113.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_114.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_115.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_116.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_117.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_118.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_119.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_12.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_120.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_121.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_122.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_123.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_124.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_125.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_126.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_127.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_128.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_129.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_13.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_130.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_131.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_132.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_133.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_134.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_135.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_136.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_137.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_138.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_139.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_14.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_140.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_141.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_142.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_143.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_144.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_145.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_146.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_147.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_148.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_149.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_15.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_150.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_151.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_152.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_153.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_154.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_155.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_156.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_157.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_158.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_159.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_16.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_160.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_161.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_162.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_163.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_164.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_165.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_166.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_167.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_168.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_169.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_17.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_170.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_171.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_172.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_173.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_174.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_175.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_176.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_177.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_178.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_179.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_18.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_180.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_181.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_182.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_183.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_184.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_185.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_186.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_187.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_188.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_189.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_19.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_190.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_191.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_192.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_193.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_194.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_195.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_196.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_197.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_198.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_199.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_2.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_20.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_200.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_201.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_202.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_203.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_204.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_205.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_206.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_207.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_208.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_209.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_21.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_210.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_211.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_212.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_213.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_214.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_215.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_216.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_217.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_218.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_219.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_22.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_220.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_221.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_222.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_223.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_224.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_225.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_226.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_227.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_228.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_229.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_23.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_230.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_24.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_25.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_26.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_27.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_28.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_29.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_3.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_30.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_31.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_32.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_33.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_34.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_35.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_36.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_37.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_38.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_39.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_4.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_40.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_41.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_42.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_43.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_44.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_45.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_46.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_47.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_48.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_49.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_5.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_50.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_51.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_52.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_53.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_54.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_55.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_56.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_57.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_58.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_59.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_6.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_60.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_61.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_62.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_63.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_64.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_65.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_66.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_67.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_68.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_69.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_7.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_70.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_71.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_72.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_73.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_74.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_75.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_76.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_77.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_78.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_79.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_8.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_80.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_81.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_82.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_83.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_84.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_85.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_86.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_87.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_88.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_89.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_9.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_90.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_91.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_92.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_93.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_94.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_95.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_96.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_97.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_98.json | 1 + .../jmol/static/j2s/JS/sg/json/sub_99.json | 1 + .../jmol/static/j2s/JS/sg/missingSettings.txt | 86 + .../static/j2s/JS/sg/sggroups_ordered.txt | 613 + .../jmol/static/j2s/JS/sg/sgmap.txt | 1033 + .../jmol/static/j2s/JS/sg/sgops_ordered.txt | 1030 + .../jmol/static/j2s/JS/sg/spt/getAFLOW.spt | 63 + .../jmol/static/j2s/JS/sg/spt/getITA.spt | 535 + .../static/j2s/JS/sg/spt/getSubgroups.spt | 225 + .../jmol/static/j2s/JS/sg/spt/sg.spt | 39 + .../static/j2s/JS/sg/txt/cleg_settings.tab | 612 + .../static/j2s/JS/sg/txt/cleg_subgroups.tab | 3768 + .../static/j2s/JS/sg/txt/ita_settings.tab | 612 + .../jmol/static/j2s/JSV/api/AnnotationData.js | 3 + .../jmol/static/j2s/JSV/api/AppletFrame.js | 3 + .../static/j2s/JSV/api/ExportInterface.js | 3 + .../static/j2s/JSV/api/JSVAppInterface.js | 3 + .../static/j2s/JSV/api/JSVAppletInterface.js | 3 + .../jmol/static/j2s/JSV/api/JSVExporter.js | 3 + .../jmol/static/j2s/JSV/api/JSVFileDropper.js | 3 + .../jmol/static/j2s/JSV/api/JSVFileHelper.js | 3 + .../jmol/static/j2s/JSV/api/JSVMainPanel.js | 3 + .../jmol/static/j2s/JSV/api/JSVPanel.js | 3 + .../jmol/static/j2s/JSV/api/JSVPdfWriter.js | 3 + .../jmol/static/j2s/JSV/api/JSVPrintDialog.js | 3 + .../jmol/static/j2s/JSV/api/JSVTree.js | 3 + .../jmol/static/j2s/JSV/api/JSVTreeNode.js | 3 + .../jmol/static/j2s/JSV/api/JSVTreePath.js | 3 + .../jmol/static/j2s/JSV/api/JSVViewPanel.js | 3 + .../static/j2s/JSV/api/JSVZipInterface.js | 3 + .../jmol/static/j2s/JSV/api/JSVZipReader.js | 3 + .../jmol/static/j2s/JSV/api/PanelListener.js | 3 + .../jmol/static/j2s/JSV/api/PlatformDialog.js | 3 + .../static/j2s/JSV/api/ScriptInterface.js | 3 + .../jmol/static/j2s/JSV/api/SourceReader.js | 3 + .../static/j2s/JSV/api/VisibleInterface.js | 3 + .../static/j2s/JSV/api/js/JSVAppletObject.js | 3 + .../j2s/JSV/api/js/JSVToJSmolInterface.js | 3 + .../jmol/static/j2s/JSV/app/GenericMouse.js | 180 + .../jmol/static/j2s/JSV/app/JSVApp.js | 375 + .../jmol/static/j2s/JSV/app/JSVAppPro.js | 27 + .../jmol/static/j2s/JSV/appletjs/JSVApplet.js | 295 + .../static/j2s/JSV/appletjs/JSVAppletPro.js | 29 + .../jmol/static/j2s/JSV/common/Annotation.js | 117 + .../static/j2s/JSV/common/ColorParameters.js | 143 + .../j2s/JSV/common/ColoredAnnotation.js | 21 + .../static/j2s/JSV/common/CoordComparator.js | 9 + .../jmol/static/j2s/JSV/common/Coordinate.js | 255 + .../jmol/static/j2s/JSV/common/ExportType.js | 33 + .../jmol/static/j2s/JSV/common/GraphSet.js | 3011 + .../jmol/static/j2s/JSV/common/ImageView.js | 252 + .../jmol/static/j2s/JSV/common/Integral.js | 12 + .../j2s/JSV/common/IntegralComparator.js | 9 + .../static/j2s/JSV/common/IntegralData.js | 341 + .../static/j2s/JSV/common/JSVFileManager.js | 526 + .../JSV/common/JSVZipFileSequentialReader.js | 134 + .../jmol/static/j2s/JSV/common/JSVZipUtil.js | 13 + .../jmol/static/j2s/JSV/common/JSVersion.js | 50 + .../jmol/static/j2s/JSV/common/JSViewer.js | 1697 + .../jmol/static/j2s/JSV/common/Measurement.js | 75 + .../static/j2s/JSV/common/MeasurementData.js | 142 + .../jmol/static/j2s/JSV/common/PDFWriter.js | 151 + .../jmol/static/j2s/JSV/common/PanelData.js | 1217 + .../jmol/static/j2s/JSV/common/PanelNode.js | 124 + .../jmol/static/j2s/JSV/common/Parameters.js | 108 + .../jmol/static/j2s/JSV/common/PeakData.js | 85 + .../jmol/static/j2s/JSV/common/PeakInfo.js | 160 + .../jmol/static/j2s/JSV/common/PeakPick.js | 16 + .../static/j2s/JSV/common/PeakPickEvent.js | 26 + .../jmol/static/j2s/JSV/common/PlotWidget.js | 58 + .../jmol/static/j2s/JSV/common/PrintLayout.js | 35 + .../static/j2s/JSV/common/RepaintManager.js | 31 + .../jmol/static/j2s/JSV/common/ScaleData.js | 312 + .../jmol/static/j2s/JSV/common/ScriptToken.js | 210 + .../static/j2s/JSV/common/ScriptTokenizer.js | 71 + .../jmol/static/j2s/JSV/common/Spectrum.js | 478 + .../j2s/JSV/common/SubSpecChangeEvent.js | 25 + .../jmol/static/j2s/JSV/common/ViewData.js | 143 + .../jmol/static/j2s/JSV/common/Visible.js | 50 + .../static/j2s/JSV/common/XYScaleConverter.js | 3 + .../jmol/static/j2s/JSV/common/ZoomEvent.js | 5 + .../static/j2s/JSV/dialog/DialogManager.js | 97 + .../static/j2s/JSV/dialog/DialogParams.js | 5 + .../j2s/JSV/dialog/IntegrationDialog.js | 80 + .../jmol/static/j2s/JSV/dialog/JSVDialog.js | 664 + .../j2s/JSV/dialog/MeasurementsDialog.js | 22 + .../j2s/JSV/dialog/OverlayLegendDialog.js | 22 + .../static/j2s/JSV/dialog/PeakListDialog.js | 27 + .../jmol/static/j2s/JSV/dialog/ViewsDialog.js | 168 + .../static/j2s/JSV/exception/JSVException.js | 5 + .../jmol/static/j2s/JSV/export/AMLExporter.js | 24 + .../jmol/static/j2s/JSV/export/CMLExporter.js | 23 + .../static/j2s/JSV/export/ExportInterface.js | 3 + .../jmol/static/j2s/JSV/export/Exporter.js | 242 + .../jmol/static/j2s/JSV/export/FormContext.js | 319 + .../static/j2s/JSV/export/FormExporter.js | 39 + .../static/j2s/JSV/export/JDXCompressor.js | 153 + .../jmol/static/j2s/JSV/export/JDXExporter.js | 153 + .../jmol/static/j2s/JSV/export/SVGExporter.js | 237 + .../jmol/static/j2s/JSV/export/XMLExporter.js | 198 + .../j2s/JSV/export/resources/animl_nmr.vm | 247 + .../j2s/JSV/export/resources/animl_tmp.vm | 215 + .../j2s/JSV/export/resources/cml_nmr.vm | 65 + .../j2s/JSV/export/resources/cml_tmp.vm | 57 + .../static/j2s/JSV/export/resources/plot.vm | 240 + .../j2s/JSV/export/resources/plot_ink.vm | 103 + .../static/j2s/JSV/js2d/DialogTableModel.js | 83 + .../jmol/static/j2s/JSV/js2d/Display.js | 41 + .../jmol/static/j2s/JSV/js2d/Image.js | 74 + .../jmol/static/j2s/JSV/js2d/JsDialog.js | 237 + .../static/j2s/JSV/js2d/JsDialogManager.js | 75 + .../jmol/static/j2s/JSV/js2d/JsFile.js | 56 + .../jmol/static/j2s/JSV/js2d/JsFileHelper.js | 51 + .../jmol/static/j2s/JSV/js2d/JsFont.js | 39 + .../jmol/static/j2s/JSV/js2d/JsG2D.js | 180 + .../jmol/static/j2s/JSV/js2d/JsMainPanel.js | 62 + .../jmol/static/j2s/JSV/js2d/JsPanel.js | 197 + .../jmol/static/j2s/JSV/js2d/JsParameters.js | 25 + .../jmol/static/j2s/JSV/js2d/JsPlatform.js | 240 + .../jmol/static/j2s/JSV/js2d/JsPopup.js | 33 + .../static/j2s/JSV/popup/JSVGenericPopup.js | 203 + .../j2s/JSV/popup/JSVPopupResourceBundle.js | 29 + .../jmol/static/j2s/JSV/source/AnIMLReader.js | 193 + .../static/j2s/JSV/source/BrukerReader.js | 245 + .../jmol/static/j2s/JSV/source/CMLReader.js | 245 + .../static/j2s/JSV/source/JDXDataObject.js | 551 + .../static/j2s/JSV/source/JDXDecompressor.js | 328 + .../jmol/static/j2s/JSV/source/JDXHeader.js | 133 + .../jmol/static/j2s/JSV/source/JDXReader.js | 735 + .../jmol/static/j2s/JSV/source/JDXSource.js | 98 + .../JSV/source/JDXSourceStreamTokenizer.js | 172 + .../jmol/static/j2s/JSV/source/XMLParser.js | 357 + .../jmol/static/j2s/JSV/source/XMLReader.js | 180 + .../jmol/static/j2s/JSV/tree/SimpleTree.js | 76 + .../j2s/JSV/tree/SimpleTreeEnumeration.js | 20 + .../static/j2s/JSV/tree/SimpleTreeModel.js | 21 + .../static/j2s/JSV/tree/SimpleTreeNode.js | 54 + .../static/j2s/JSV/tree/SimpleTreePath.js | 15 + .../visualizations/jmol/static/j2s/JU/A4.js | 87 + .../visualizations/jmol/static/j2s/JU/AU.js | 364 + .../jmol/static/j2s/JU/Adler32.js | 60 + .../jmol/static/j2s/JU/AjaxURLConnection.js | 39 + .../static/j2s/JU/AjaxURLStreamHandler.js | 34 + .../j2s/JU/AjaxURLStreamHandlerFactory.js | 16 + .../jmol/static/j2s/JU/ArrayDataReader.js | 31 + .../jmol/static/j2s/JU/BArray.js | 29 + .../visualizations/jmol/static/j2s/JU/BC.js | 74 + .../visualizations/jmol/static/j2s/JU/BS.js | 359 + .../jmol/static/j2s/JU/BSUtil.js | 125 + .../jmol/static/j2s/JU/BZone.js | 510 + .../jmol/static/j2s/JU/Base64.js | 54 + .../jmol/static/j2s/JU/BinaryDocument.js | 226 + .../jmol/static/j2s/JU/BoxInfo.js | 232 + .../visualizations/jmol/static/j2s/JU/C.js | 201 + .../jmol/static/j2s/JU/CRC32.js | 36 + .../visualizations/jmol/static/j2s/JU/CU.js | 136 + .../jmol/static/j2s/JU/Checksum.js | 3 + .../jmol/static/j2s/JU/CifDataParser.js | 475 + .../jmol/static/j2s/JU/ColorEncoder.js | 581 + .../jmol/static/j2s/JU/CommandHistory.js | 147 + .../jmol/static/j2s/JU/CompoundDocDirEntry.js | 64 + .../jmol/static/j2s/JU/CompoundDocHeader.js | 68 + .../jmol/static/j2s/JU/CompoundDocument.js | 286 + .../jmol/static/j2s/JU/ContactPair.js | 84 + .../visualizations/jmol/static/j2s/JU/DF.js | 96 + .../jmol/static/j2s/JU/DataReader.js | 34 + .../jmol/static/j2s/JU/DebugJS.js | 12 + .../jmol/static/j2s/JU/DefaultLogger.js | 53 + .../jmol/static/j2s/JU/Deflate.js | 911 + .../jmol/static/j2s/JU/Deflater.js | 58 + .../static/j2s/JU/DeflaterOutputStream.js | 110 + .../visualizations/jmol/static/j2s/JU/Edge.js | 256 + .../jmol/static/j2s/JU/Eigen.js | 251 + .../jmol/static/j2s/JU/EigenSort.js | 11 + .../jmol/static/j2s/JU/Elements.js | 194 + .../jmol/static/j2s/JU/Encoding.js | 11 + .../jmol/static/j2s/JU/Escape.js | 466 + .../visualizations/jmol/static/j2s/JU/Font.js | 100 + .../jmol/static/j2s/JU/GData.js | 477 + .../jmol/static/j2s/JU/GZIPException.js | 5 + .../jmol/static/j2s/JU/GZIPHeader.js | 133 + .../jmol/static/j2s/JU/GZIPInputStream.js | 5 + .../jmol/static/j2s/JU/GZIPOutputStream.js | 5 + .../jmol/static/j2s/JU/GenericApplet.js | 786 + .../jmol/static/j2s/JU/Geodesic.js | 170 + .../jmol/static/j2s/JU/InfBlocks.js | 505 + .../jmol/static/j2s/JU/InfCodes.js | 505 + .../jmol/static/j2s/JU/InfTree.js | 218 + .../jmol/static/j2s/JU/Inflate.js | 556 + .../jmol/static/j2s/JU/Inflater.js | 49 + .../jmol/static/j2s/JU/InflaterInputStream.js | 164 + .../jmol/static/j2s/JU/Int2IntHash.js | 58 + .../jmol/static/j2s/JU/JSJSONParser.js | 222 + .../jmol/static/j2s/JU/JSONException.js | 5 + .../jmol/static/j2s/JU/JSONWriter.js | 187 + .../jmol/static/j2s/JU/JZlib.js | 9 + .../jmol/static/j2s/JU/JmolAudio.js | 91 + .../jmol/static/j2s/JU/JmolMolecule.js | 249 + .../jmol/static/j2s/JU/LimitedLineReader.js | 35 + .../jmol/static/j2s/JU/ListDataReader.js | 31 + .../jmol/static/j2s/JU/Logger.js | 183 + .../jmol/static/j2s/JU/LoggerInterface.js | 3 + .../visualizations/jmol/static/j2s/JU/Lst.js | 25 + .../visualizations/jmol/static/j2s/JU/M3.js | 299 + .../visualizations/jmol/static/j2s/JU/M34.js | 336 + .../visualizations/jmol/static/j2s/JU/M4.js | 492 + .../jmol/static/j2s/JU/Matrix.js | 224 + .../jmol/static/j2s/JU/Measure.js | 625 + .../jmol/static/j2s/JU/MeshCapper.js | 439 + .../jmol/static/j2s/JU/MeshSlicer.js | 489 + .../jmol/static/j2s/JU/MeshSurface.js | 226 + .../jmol/static/j2s/JU/MessagePackReader.js | 423 + .../jmol/static/j2s/JU/Modulation.js | 181 + .../jmol/static/j2s/JU/ModulationSet.js | 332 + .../visualizations/jmol/static/j2s/JU/Node.js | 3 + .../jmol/static/j2s/JU/Normix.js | 90 + .../visualizations/jmol/static/j2s/JU/OC.js | 296 + .../visualizations/jmol/static/j2s/JU/P3.js | 30 + .../visualizations/jmol/static/j2s/JU/P3i.js | 13 + .../visualizations/jmol/static/j2s/JU/P4.js | 25 + .../visualizations/jmol/static/j2s/JU/PT.js | 979 + .../jmol/static/j2s/JU/Parser.js | 81 + .../jmol/static/j2s/JU/PatternMatcher.js | 58 + .../jmol/static/j2s/JU/Point3fi.js | 24 + .../visualizations/jmol/static/j2s/JU/Quat.js | 425 + .../visualizations/jmol/static/j2s/JU/Rdr.js | 383 + .../jmol/static/j2s/JU/Rectangle.js | 14 + .../jmol/static/j2s/JU/Rgb16.js | 50 + .../visualizations/jmol/static/j2s/JU/SB.js | 152 + .../jmol/static/j2s/JU/Shader.js | 267 + .../jmol/static/j2s/JU/SimpleEdge.js | 3 + .../jmol/static/j2s/JU/SimpleNode.js | 3 + .../jmol/static/j2s/JU/SimpleUnitCell.js | 491 + .../jmol/static/j2s/JU/StaticTree.js | 24 + .../jmol/static/j2s/JU/StringDataReader.js | 13 + .../visualizations/jmol/static/j2s/JU/T3.js | 151 + .../visualizations/jmol/static/j2s/JU/T3d.js | 90 + .../visualizations/jmol/static/j2s/JU/T3i.js | 51 + .../visualizations/jmol/static/j2s/JU/T4.js | 37 + .../jmol/static/j2s/JU/TempArray.js | 141 + .../jmol/static/j2s/JU/Tensor.js | 341 + .../visualizations/jmol/static/j2s/JU/Tree.js | 147 + .../jmol/static/j2s/JU/TriangleData.js | 9 + .../jmol/static/j2s/JU/Triangulator.js | 135 + .../visualizations/jmol/static/j2s/JU/Txt.js | 5 + .../visualizations/jmol/static/j2s/JU/V3.js | 29 + .../visualizations/jmol/static/j2s/JU/V3d.js | 36 + .../jmol/static/j2s/JU/Vibration.js | 72 + .../jmol/static/j2s/JU/XmlUtil.js | 67 + .../jmol/static/j2s/JU/ZStream.js | 125 + .../jmol/static/j2s/JU/ZStreamException.js | 5 + .../jmol/static/j2s/JU/ZipData.js | 45 + .../jmol/static/j2s/JU/ZipTools.js | 394 + .../static/j2s/JU/colorschemes/_lut2txt.spt | 8 + .../j2s/JU/colorschemes/_luttxt2span.xlsx | Bin 0 -> 80371 bytes .../static/j2s/JU/colorschemes/_schemes.htm | 2357 + .../static/j2s/JU/colorschemes/batlow.lut.txt | 256 + .../j2s/JU/colorschemes/cividis.lut.txt | 256 + .../j2s/JU/colorschemes/inferno.lut.txt | 256 + .../static/j2s/JU/colorschemes/kry.lut.txt | 256 + .../static/j2s/JU/colorschemes/magma.lut.txt | 256 + .../static/j2s/JU/colorschemes/plasma.lut.txt | 256 + .../static/j2s/JU/colorschemes/schemes.htm | 1305 + .../j2s/JU/colorschemes/thermal.lut.txt | 256 + .../static/j2s/JU/colorschemes/turbo.lut.txt | 257 + .../j2s/JU/colorschemes/viridis.lut.txt | 256 + .../jmol/static/j2s/JV/ActionManager.js | 1451 + .../jmol/static/j2s/JV/AnimationManager.js | 402 + .../jmol/static/j2s/JV/ChimeMessenger.js | 105 + .../jmol/static/j2s/JV/ColorManager.js | 240 + .../jmol/static/j2s/JV/DataManager.js | 235 + .../jmol/static/j2s/JV/FileManager.js | 1013 + .../jmol/static/j2s/JV/GlobalSettings.js | 811 + .../visualizations/jmol/static/j2s/JV/JC.js | 388 + .../jmol/static/j2s/JV/Jmol.properties | 18994 ++++ .../jmol/static/j2s/JV/JmolAsyncException.js | 16 + .../jmol/static/j2s/JV/JmolChimeMessenger.js | 3 + .../jmol/static/j2s/JV/JmolStateCreator.js | 5 + .../jmol/static/j2s/JV/ModelManager.js | 53 + .../jmol/static/j2s/JV/MouseState.js | 43 + .../jmol/static/j2s/JV/OutputManager.js | 750 + .../jmol/static/j2s/JV/OutputManagerAwt.js | 129 + .../jmol/static/j2s/JV/OutputManagerJS.js | 29 + .../jmol/static/j2s/JV/PropertyManager.js | 1413 + .../jmol/static/j2s/JV/SelectionManager.js | 254 + .../jmol/static/j2s/JV/ShapeManager.js | 401 + .../jmol/static/j2s/JV/StateCreator.js | 1127 + .../jmol/static/j2s/JV/StateManager.js | 448 + .../jmol/static/j2s/JV/StatusManager.js | 618 + .../jmol/static/j2s/JV/TransformManager.js | 1714 + .../jmol/static/j2s/JV/TransformManager4D.js | 108 + .../jmol/static/j2s/JV/Viewer.js | 7138 ++ .../jmol/static/j2s/JV/binding/Binding.js | 238 + .../jmol/static/j2s/JV/binding/DragBinding.js | 20 + .../jmol/static/j2s/JV/binding/JmolBinding.js | 77 + .../static/j2s/JV/binding/PfaatBinding.js | 18 + .../static/j2s/JV/binding/RasmolBinding.js | 15 + .../jmol/static/j2s/Jmol.properties | 3 + .../jmol/static/j2s/_ES6/molfile-to-inchi.js | 104 + .../static/j2s/_WASM/molfile_to_inchi.wasm | Bin 0 -> 600856 bytes .../jmol/static/j2s/_WASM/wasi.esm.js | 177 + .../static/j2s/com/jcraft/jzlib/Adler32.js | 60 + .../jmol/static/j2s/com/jcraft/jzlib/CRC32.js | 36 + .../static/j2s/com/jcraft/jzlib/Checksum.js | 3 + .../static/j2s/com/jcraft/jzlib/Deflate.js | 911 + .../static/j2s/com/jcraft/jzlib/Deflater.js | 58 + .../com/jcraft/jzlib/DeflaterOutputStream.js | 105 + .../j2s/com/jcraft/jzlib/GZIPException.js | 5 + .../static/j2s/com/jcraft/jzlib/GZIPHeader.js | 133 + .../j2s/com/jcraft/jzlib/GZIPInputStream.js | 5 + .../j2s/com/jcraft/jzlib/GZIPOutputStream.js | 5 + .../static/j2s/com/jcraft/jzlib/InfBlocks.js | 505 + .../static/j2s/com/jcraft/jzlib/InfCodes.js | 505 + .../static/j2s/com/jcraft/jzlib/InfTree.js | 218 + .../static/j2s/com/jcraft/jzlib/Inflate.js | 556 + .../static/j2s/com/jcraft/jzlib/Inflater.js | 49 + .../com/jcraft/jzlib/InflaterInputStream.js | 164 + .../jmol/static/j2s/com/jcraft/jzlib/JZlib.js | 9 + .../static/j2s/com/jcraft/jzlib/StaticTree.js | 24 + .../jmol/static/j2s/com/jcraft/jzlib/Tree.js | 147 + .../static/j2s/com/jcraft/jzlib/ZStream.js | 125 + .../j2s/com/jcraft/jzlib/ZStreamException.js | 5 + .../jmol/static/j2s/core/corebinary.js | 742 + .../jmol/static/j2s/core/corebinary.z.js | 26 + .../jmol/static/j2s/core/corebio.js | 7736 ++ .../jmol/static/j2s/core/corebio.z.js | 383 + .../jmol/static/j2s/core/coreconsole.js | 896 + .../jmol/static/j2s/core/coreconsole.z.js | 33 + .../jmol/static/j2s/core/corejmol.js | 60350 +++++++++++++ .../jmol/static/j2s/core/corejmol.z.js | 2719 + .../jmol/static/j2s/core/corejmoldebug.js | 2687 + .../jmol/static/j2s/core/corejmoljsv.js | 75178 ++++++++++++++++ .../jmol/static/j2s/core/corejmoljsv.z.js | 3451 + .../jmol/static/j2s/core/corejsv.js | 28851 ++++++ .../jmol/static/j2s/core/corejsv.z.js | 1224 + .../jmol/static/j2s/core/corejsvdialog.js | 938 + .../jmol/static/j2s/core/corejsvdialog.z.js | 42 + .../jmol/static/j2s/core/corejsvexport.js | 2609 + .../jmol/static/j2s/core/corejsvexport.z.js | 116 + .../jmol/static/j2s/core/corejsvmenu.js | 392 + .../jmol/static/j2s/core/corejsvmenu.z.js | 22 + .../jmol/static/j2s/core/coremenu.js | 1566 + .../jmol/static/j2s/core/coremenu.z.js | 146 + .../jmol/static/j2s/core/coremin.js | 4218 + .../jmol/static/j2s/core/coremin.z.js | 185 + .../jmol/static/j2s/core/coreprop.js | 1540 + .../jmol/static/j2s/core/coreprop.z.js | 78 + .../jmol/static/j2s/core/corepymol.js | 3272 + .../jmol/static/j2s/core/corepymol.z.js | 275 + .../jmol/static/j2s/core/corescript.js | 17066 ++++ .../jmol/static/j2s/core/corescript.z.js | 749 + .../jmol/static/j2s/core/corescriptcmd.js | 5264 ++ .../jmol/static/j2s/core/corescriptcmd.z.js | 209 + .../jmol/static/j2s/core/corescriptmath.js | 3552 + .../jmol/static/j2s/core/corescriptmath.z.js | 147 + .../jmol/static/j2s/core/coresmiles.js | 4996 + .../jmol/static/j2s/core/coresmiles.z.js | 214 + .../jmol/static/j2s/core/corestate.js | 1256 + .../jmol/static/j2s/core/corestate.z.js | 74 + .../jmol/static/j2s/core/coresurface.js | 12867 +++ .../jmol/static/j2s/core/coresurface.z.js | 673 + .../jmol/static/j2s/core/coreswing.js | 1351 + .../jmol/static/j2s/core/coreswing.z.js | 108 + .../jmol/static/j2s/core/coresym.js | 8356 ++ .../jmol/static/j2s/core/coresym.z.js | 410 + .../jmol/static/j2s/core/coretext.js | 2798 + .../jmol/static/j2s/core/coretext.z.js | 134 + .../jmol/static/j2s/core/corezip.js | 3996 + .../jmol/static/j2s/core/corezip.z.js | 165 + .../jmol/static/j2s/core/package.js | 282 + .../jmol/static/j2s/img/JSmol_spinner.gif | Bin 0 -> 673 bytes .../jmol/static/j2s/img/cursor_wait.gif | Bin 0 -> 673 bytes .../jmol/static/j2s/img/play_make_live.jpg | Bin 0 -> 14022 bytes .../static/j2s/java/io/BufferedInputStream.js | 144 + .../j2s/java/io/BufferedOutputStream.js | 62 + .../jmol/static/j2s/java/io/BufferedReader.js | 204 + .../jmol/static/j2s/java/io/BufferedWriter.js | 125 + .../j2s/java/io/ByteArrayInputStream.js | 71 + .../j2s/java/io/ByteArrayOutputStream.js | 75 + .../static/j2s/java/io/CharArrayReader.js | 101 + .../static/j2s/java/io/CharArrayWriter.js | 112 + .../jmol/static/j2s/java/io/Closeable.js | 2 + .../jmol/static/j2s/java/io/DataInput.js | 2 + .../static/j2s/java/io/DataInputStream.js | 213 + .../jmol/static/j2s/java/io/DataOutput.js | 2 + .../jmol/static/j2s/java/io/Externalizable.js | 2 + .../static/j2s/java/io/FilterInputStream.js | 43 + .../static/j2s/java/io/FilterOutputStream.js | 37 + .../jmol/static/j2s/java/io/Flushable.js | 2 + .../jmol/static/j2s/java/io/InputStream.js | 70 + .../static/j2s/java/io/InputStreamReader.js | 79 + .../static/j2s/java/io/ObjectStreamField.js | 178 + .../jmol/static/j2s/java/io/OutputStream.js | 22 + .../static/j2s/java/io/PushbackInputStream.js | 105 + .../jmol/static/j2s/java/io/Reader.js | 43 + .../jmol/static/j2s/java/io/Serializable.js | 2 + .../j2s/java/io/StringBufferInputStream.js | 63 + .../jmol/static/j2s/java/io/StringReader.js | 71 + .../jmol/static/j2s/java/io/StringWriter.js | 77 + .../jmol/static/j2s/java/io/Writer.js | 66 + .../jmol/static/j2s/java/lang/Enum.js | 57 + .../jmol/static/j2s/java/lang/Enum0.js | 81 + .../jmol/static/j2s/java/lang/Thread.js | 105 + .../jmol/static/j2s/java/lang/ThreadGroup.js | 37 + .../j2s/java/net/MalformedURLException.js | 9 + .../jmol/static/j2s/java/net/Parts.js | 33 + .../jmol/static/j2s/java/net/URL.js | 250 + .../jmol/static/j2s/java/net/URLConnection.js | 56 + .../jmol/static/j2s/java/net/URLDecoder.js | 9 + .../jmol/static/j2s/java/net/URLEncoder.js | 9 + .../static/j2s/java/net/URLStreamHandler.js | 170 + .../j2s/java/net/URLStreamHandlerFactory.js | 3 + .../j2s/java/net/UnknownServiceException.js | 9 + .../static/j2s/java/text/MessageFormat.js | 27 + .../j2s/java/util/AbstractCollection.js | 136 + .../jmol/static/j2s/java/util/AbstractList.js | 426 + .../jmol/static/j2s/java/util/AbstractMap.js | 255 + .../static/j2s/java/util/AbstractQueue.js | 41 + .../j2s/java/util/AbstractSequentialList.js | 57 + .../jmol/static/j2s/java/util/AbstractSet.js | 40 + .../j2s/java/util/AbstractStringBuilder.js | 412 + .../jmol/static/j2s/java/util/ArrayList.js | 386 + .../jmol/static/j2s/java/util/Arrays.js | 166 + .../jmol/static/j2s/java/util/Collection.js | 2 + .../jmol/static/j2s/java/util/Collections.js | 2171 + .../jmol/static/j2s/java/util/Comparator.js | 2 + .../jmol/static/j2s/java/util/Dictionary.js | 4 + .../jmol/static/j2s/java/util/Enumeration.js | 2 + .../static/j2s/java/util/EventListener.js | 2 + .../j2s/java/util/EventListenerProxy.js | 14 + .../jmol/static/j2s/java/util/EventObject.js | 19 + .../jmol/static/j2s/java/util/HashMap.js | 670 + .../jmol/static/j2s/java/util/HashSet.js | 76 + .../jmol/static/j2s/java/util/Hashtable.js | 758 + .../static/j2s/java/util/IdentityHashMap.js | 447 + .../jmol/static/j2s/java/util/Iterator.js | 2 + .../static/j2s/java/util/LinkedHashMap.js | 338 + .../static/j2s/java/util/LinkedHashSet.js | 27 + .../jmol/static/j2s/java/util/LinkedList.js | 473 + .../jmol/static/j2s/java/util/List.js | 2 + .../jmol/static/j2s/java/util/ListIterator.js | 2 + .../j2s/java/util/ListResourceBundle.js | 71 + .../jmol/static/j2s/java/util/Locale.js | 241 + .../jmol/static/j2s/java/util/Map.js | 9 + .../jmol/static/j2s/java/util/MapEntry.js | 60 + .../jmol/static/j2s/java/util/Observable.js | 57 + .../jmol/static/j2s/java/util/Observer.js | 2 + .../jmol/static/j2s/java/util/Properties.js | 176 + .../jmol/static/j2s/java/util/Queue.js | 2 + .../jmol/static/j2s/java/util/Random.js | 238 + .../jmol/static/j2s/java/util/RandomAccess.js | 2 + .../static/j2s/java/util/ResourceBundle.js | 206 + .../jmol/static/j2s/java/util/Set.js | 2 + .../jmol/static/j2s/java/util/SortedMap.js | 2 + .../jmol/static/j2s/java/util/SortedSet.js | 2 + .../jmol/static/j2s/java/util/Stack.js | 46 + .../static/j2s/java/util/StringTokenizer.js | 76 + .../jmol/static/j2s/java/util/TreeMap.js | 1006 + .../jmol/static/j2s/java/util/TreeSet.js | 120 + .../jmol/static/j2s/java/util/Vector.js | 424 + .../jmol/static/j2s/java/util/WeakHashMap.js | 489 + .../jmol/static/j2s/java/util/zip/CRC32.js | 5 + .../j2s/java/util/zip/CheckedInputStream.js | 44 + .../jmol/static/j2s/java/util/zip/Deflater.js | 9 + .../j2s/java/util/zip/DeflaterOutputStream.js | 18 + .../j2s/java/util/zip/GZIPInputStream.js | 102 + .../jmol/static/j2s/java/util/zip/Inflater.js | 9 + .../j2s/java/util/zip/InflaterInputStream.js | 12 + .../static/j2s/java/util/zip/ZipConstants.js | 9 + .../j2s/java/util/zip/ZipConstants64.js | 5 + .../jmol/static/j2s/java/util/zip/ZipEntry.js | 133 + .../static/j2s/java/util/zip/ZipException.js | 5 + .../j2s/java/util/zip/ZipInputStream.js | 268 + .../j2s/java/util/zip/ZipOutputStream.js | 373 + .../jmol/static/j2s/javajs/J2SIgnoreImport.js | 2 + .../static/j2s/javajs/J2SRequireImport.js | 2 + .../jmol/static/j2s/javajs/api/BytePoster.js | 3 + .../static/j2s/javajs/api/EigenInterface.js | 3 + .../j2s/javajs/api/GenericBinaryDocument.js | 3 + .../javajs/api/GenericBinaryDocumentReader.js | 3 + .../j2s/javajs/api/GenericCifDataParser.js | 5 + .../static/j2s/javajs/api/GenericColor.js | 3 + .../j2s/javajs/api/GenericImageEncoder.js | 3 + .../j2s/javajs/api/GenericLineReader.js | 3 + .../j2s/javajs/api/GenericOutputChannel.js | 3 + .../j2s/javajs/api/GenericZipInputStream.js | 5 + .../static/j2s/javajs/api/GenericZipTools.js | 3 + .../jmol/static/j2s/javajs/api/Interface.js | 19 + .../jmol/static/j2s/javajs/api/JSFunction.js | 3 + .../jmol/static/j2s/javajs/api/JSInterface.js | 3 + .../static/j2s/javajs/api/JSONEncodable.js | 3 + .../static/j2s/javajs/api/ZInputStream.js | 3 + .../j2s/javajs/api/js/J2SObjectInterface.js | 3 + .../j2s/javajs/api/js/JSAppletObject.js | 3 + .../static/j2s/javajs/export/PDFCreator.js | 297 + .../static/j2s/javajs/export/PDFObject.js | 115 + .../jmol/static/j2s/javajs/img/BMPDecoder.js | 141 + .../jmol/static/j2s/javajs/img/CRCEncoder.js | 74 + .../jmol/static/j2s/javajs/img/GifEncoder.js | 622 + .../static/j2s/javajs/img/ImageEncoder.js | 41 + .../static/j2s/javajs/img/Jpg64Encoder.js | 23 + .../jmol/static/j2s/javajs/img/JpgEncoder.js | 743 + .../jmol/static/j2s/javajs/img/PdfEncoder.js | 58 + .../jmol/static/j2s/javajs/img/PngEncoder.js | 167 + .../jmol/static/j2s/javajs/img/PpmEncoder.js | 24 + .../jmol/static/j2s/jme/AtomDisplayLabel.js | 106 + .../visualizations/jmol/static/j2s/jme/JME.js | 2231 + .../jmol/static/j2s/jme/JMEUtil.js | 351 + .../jmol/static/j2s/jme/JMEmol.js | 4000 + .../org/apache/tools/bzip2/BZip2Constants.js | 16 + .../apache/tools/bzip2/CBZip2InputStream.js | 691 + .../tools/bzip2/CBZip2InputStreamFactory.js | 10 + .../static/j2s/org/apache/tools/bzip2/CRC.js | 44 + .../static/j2s/org/qcschema/QCSchemaUnits.js | 169 + .../visualizations/jmol/static/logo.png | Bin 0 -> 32833 bytes .../visualizations/jmol/templates/jmol.mako | 51 + 1702 files changed, 751821 insertions(+) create mode 100644 config/plugins/visualizations/jmol/config/jmol.xml create mode 100755 config/plugins/visualizations/jmol/static/JSmol.min.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFDataParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFDecoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Cif2DataParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Cif2Reader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/CifReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMCifReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMCifValidationParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMTFReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MSCifParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MSRdr.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Subsystem.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/TopoCifParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/Mol3DReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/MolReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/V3000Rdr.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/XyzReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/AFLOWReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/BinaryDcdReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/CDXReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/ForceFieldReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/GromacsReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/JcampdxReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/MdCrdReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/MdTopReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/Mol2Reader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/TlsDataOnlyReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/JmolDataReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/P2nReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/PdbReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/PqrReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/JmolObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PickleReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOL.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLGroup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLScene.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/AdfReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/AmsReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/BasisFunctionReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/CsfReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/DgridReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessUKReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessUSReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianFchkReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianWfnReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GenNBOReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/JaguarReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MOReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MoldenReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MopacGraphfReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MopacSlaterReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/NBOParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/NWChemReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/OrcaReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/PsiReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/QCJSONReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/QchemReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/SlaterReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/WebMOReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/AlchemyReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/AmpacReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/CubeReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/FAHReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/FoldingXyzReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/GhemicalMMReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/HyperChemReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/InputReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/JSONReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/JmeReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/MopacArchiveReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/MopacReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/OrcaReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/TinkerReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/OdysseyReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanArchive.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanInputReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanSmolReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanUtil.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlArgusReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlCdxReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlChem3dReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlCmlReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlHandler.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMOReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMagResReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMolproReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlOdysseyReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlQEReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlVaspReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlXsdReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/AbinitReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/AimsReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/BilbaoReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CastepReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CgdReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CmdfReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CrystalReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/DmolReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/EspressoReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/GulpReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/JanaReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/MagresReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/OptimadeReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/PWmatReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/ShelxReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/SiestaReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspChgcarReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspOutcarReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspPoscarReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/Wien2kReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/XcrysdenReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Atom.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetCollection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetCollectionReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Bond.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/BondIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/MSInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Resolver.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/SmarterJmolAdapter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Structure.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/StructureIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/XtalSymmetry.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CDXMLWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CIFWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CMLWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/MOLWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/PDBWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/PWMATWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/QCJSONWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/XSFWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/XtlWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/AtomIndexIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/EventManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/FontManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/GenericFileInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/GenericGraphics.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/GenericImageDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/GenericMenuInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/GenericMouseInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/GenericPlatform.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/Interface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JSVInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAbstractButton.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterAtomIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterBondIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterStructureIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAnnotationParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppAPI.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppConsoleInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppletInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolAudioPlayer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolCallbackListener.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolDataManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolDialogInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolDropEditor.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolEnvCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolFilesReaderInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolGestureServerInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolGraphicsInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolInChI.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolJDXMOLParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolJDXMOLReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolJSpecView.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolMeasurementClient.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolModulationSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolMovieCreatorInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolNMRInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolNavigatorInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolParallelProcessor.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolPdfCreatorInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolPropertyManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolRendererInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolRepaintManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolSceneGenerator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptEditorInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptEvaluator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptFunction.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolSelectionListener.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolStatusListener.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolSyncInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolTouchSimulatorInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolViewer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/JmolZipUtilities.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/PlatformViewer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/PymolAtomReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/SC.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/SmilesMatcherInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/SymmetryInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/Translator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/js/GenericConsoleTextArea.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/js/JSConsole.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/js/JSmolAppletObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/api/js/JmolToJSmolInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/appletjs/Jmol.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/atomdata/AtomData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/atomdata/AtomDataServer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/atomdata/RadiusData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs/Event.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs/Platform.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs/README.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Display.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Image.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSFile.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSFont.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSJmolPopup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSModelKitPopup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSPopupHelper.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JsG2D.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Mouse.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Platform.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/bspt/Bspf.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/bspt/Bspt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/bspt/CubeIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/bspt/Element.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/bspt/Leaf.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/bspt/Node.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/bspt/PointIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/bspt/package.html create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/c/CBK.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/c/FIL.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/c/HB.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/c/PAL.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/c/STER.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/c/STR.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/c/VDW.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/console/GenericConsole.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/console/GenericTextArea.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/console/ImageDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/consolejs/AppletConsole.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/consolejs/JSConsole.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/dialog/Dialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/dialog/FileChooser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/dialog/FilePreview.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/dssx/AnnotationParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/dssx/Bridge.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSP.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSR0.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSR1.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/Export3D.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/JSExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/MeshData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/UseTable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/_IdtfExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/_MayaExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/_ObjExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/_PovrayExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/_StlExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/_TachyonExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/_VrmlExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/_X3dExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/__CartesianExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/__RayTracerExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/export/___Exporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/CircleRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/CylinderRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/G3DRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/Graphics3D.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/HermiteRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/LineRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/Pixelator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorScreened.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorShaded.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorT.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/Platform3D.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/PrecisionRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/SphereRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/TextRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/TextString.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/TriangleRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/g3d/package.html create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/geodesic/EnvelopeCalculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/i18n/GT.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/i18n/Language.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/i18n/Resource.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/image/AviCreator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/inchi/InChIJS.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/io/DOMReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/io/FileReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/io/FilesReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/io/JmolUtil.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jsv/JDXMOLParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jsv/JSpecView.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/api/MeshDataServer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/api/VertexDataServer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/calc/MarchingCubes.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/calc/MarchingSquares.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/JvxlCoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/JvxlData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/MeshData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/VolumeData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/ApbsReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/AtomDataReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/AtomPropertyMapper.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/BCifDensityReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CastepDensityReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CifDensityReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CubeReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/DelPhiBinaryReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Dsn6BinaryReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/EfvetReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoFxyReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoFxyzReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectAtomReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectGridReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMOReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMepReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMlpReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoPlaneReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoShapeReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoSolventReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JaguarReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JvxlReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JvxlXmlReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/KinemageReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MapFileReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MrcBinaryReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MsmsReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/NffReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/ObjReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Parameters.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PeriodicVolumeFileReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PltFormattedReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Pmesh4Reader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PmeshReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PolygonFileReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PyMOLMeshReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Ras3DReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceFileReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceGenerator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/UhbdReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VaspChgcarReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VolumeDataReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VolumeFileReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XmlReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XplorReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XsfReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKit.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKitPopup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKitPopupResourceBundle.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/atoms.png create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/bonds.png create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/dotdotdot.png create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/undoButton.gif create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/xtal.png create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/xtal_pngj.png create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/navigate/Navigator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/popup/GenericPopup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/popup/JmolGenericPopup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/popup/JmolPopup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/popup/MainPopupResourceBundle.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/popup/PopupHelper.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/popup/PopupResource.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/MOCalculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/MepCalculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/MlpCalculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/NMRCalculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/NMRNoeMatrix.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/NciCalculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/QMAtom.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/QS.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/QuantumCalculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/QuantumPlaneCalculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/SlaterData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/atomicLipophilicity.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder11H.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder13I.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder7F.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder9G.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderF.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderG.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderH.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderI.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/quantum/nmr_data.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/AxesRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/BallsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/BbcageRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/CageRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/EchoRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/FontLineShapeRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/FrankRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/HalosRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/HoverRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/LabelsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/MeasuresRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/MeshRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/RepaintManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/ShapeRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/StarsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/SticksRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/TextRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/render/UccageRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/BackboneRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/BioMeshRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/BioShapeRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/CartoonRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/MeshRibbonRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/NucleicRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/RibbonsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/RocketRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/RocketsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/StrandsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderbio/TraceRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/rendercgo/CGORenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DipolesRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DotsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DrawRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderspecial/EllipsoidsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderspecial/GeoSurfaceRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderspecial/PolyhedraRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/renderspecial/VectorsRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/rendersurface/ContactRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/rendersurface/IsosurfaceRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/rendersurface/LcaoCartoonRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/rendersurface/MolecularOrbitalRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/rendersurface/NBORenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/rendersurface/Plot3DRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/rendersurface/PmeshRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/AtomShape.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Axes.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Balls.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Bbcage.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Echo.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/FontLineShape.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Frank.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Halos.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Hover.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Labels.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Measures.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Mesh.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/MeshCollection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Shape.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Stars.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Sticks.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/TextShape.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shape/Uccage.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/Backbone.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/BioShape.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/BioShapeCollection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/Cartoon.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/MeshRibbon.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/Ribbons.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/Rockets.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/Strands.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapebio/Trace.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapecgo/CGO.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapecgo/CGOMesh.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dipole.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dipoles.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dots.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Draw.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/DrawMesh.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Ellipsoid.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Ellipsoids.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/GeoSurface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Polyhedra.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Polyhedron.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Vectors.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Contact.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Isosurface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/IsosurfaceMesh.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/LcaoCartoon.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/MolecularOrbital.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/NBO.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/PMeshWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Plot3D.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Pmesh.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/thread/AnimationThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/thread/HoverWatcherThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/thread/JmolThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/thread/MoveToThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/thread/SpinThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/thread/TimeoutThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/thread/VibrationThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/JmolApplet.pot create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ar.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/bs.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ca.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ca@valencia.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/cs.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/da.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/de.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/el.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/en_GB.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/es.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/et.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/eu.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fi.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fr.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fy.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/hu.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/hy.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/id.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/it.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ja.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/jv.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ko.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ms.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/nb.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/nl.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/oc.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pl.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pt.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pt_BR.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ru.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/sl.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/sv.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ta.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/te.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/tr.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ug.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/uk.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/uz.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/zh_CN.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/zh_TW.po create mode 100755 config/plugins/visualizations/jmol/static/j2s/J/translation/PO.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/AlphaMonomer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/AlphaPolymer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/AminoMonomer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/AminoPolymer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Annotation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Atom.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/AtomCollection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/AtomIteratorWithinModel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/AtomIteratorWithinModelSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BasePair.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BioExt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BioModel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BioModelSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BioPolymer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BioResolver.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Bond.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BondCollection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BondIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BondIteratorSelected.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/BondSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/CarbohydrateMonomer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/CarbohydratePolymer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Chain.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/AtomType.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/Calculation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/Calculations.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/CalculationsMMFF.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/CalculationsUFF.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/FFParam.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceField.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceFieldMMFF.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceFieldUFF.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFAngleCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFDistanceCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFESCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFOOPCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFSBCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFTorsionCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFVDWCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFAngleCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFDistanceCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFOOPCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFTorsionCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFVDWCalc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/data/MMFF94-smarts.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/data/UFF.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/data/UFF_2d.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/data/mmff94.par.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/data/mmff94_2d.par.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94SYMB.PAR create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94_dative.mol2 create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94_hypervalent.mol2 create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/checkmm.spt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/jmol-validation.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/mmff-validation-energy.dat create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/mmff-validation.dat create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Group.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/HBond.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Helix.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/LabelToken.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MMConstraint.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Measurement.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MeasurementData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MeasurementPending.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MinAngle.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MinAtom.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MinBond.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MinObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MinPosition.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MinTorsion.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/MinimizationThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Minimizer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Model.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/ModelLoader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/ModelSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Monomer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/NucleicMonomer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/NucleicPolymer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Orientation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/PhosphorusMonomer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/PhosphorusPolymer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/ProteinStructure.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Sheet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/StateScript.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Structure.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Text.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/TickInfo.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Trajectory.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Turn.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JM/Util.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/AbstractButton.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/AbstractTableModel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/BorderLayout.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ButtonGroup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/CIPChirality.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/CIPData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/CIPDataSmiles.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/CIPDataTracker.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Cell.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/CmdExt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Color.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ColumnSelectionModel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/CommandWatcherThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Component.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Container.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ContextToken.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Dimension.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Document.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/FileLoadThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/FlowLayout.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Grid.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/GridBagConstraints.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/GridBagLayout.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/HTMLElement.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/HTMLWindowEvent.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/HallInfo.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/HallRotation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/HallRotationTerm.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/HallTranslation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Insets.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/InvalidSmilesException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/IsoExt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JButton.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JCheckBox.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JCheckBoxMenuItem.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JComboBox.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JComponent.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JComponentImp.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JContentPane.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JEditorPane.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JLabel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JMenu.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JMenuItem.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JPanel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JPopupMenu.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JRadioButtonMenuItem.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JScrollPane.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JSplitPane.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JTable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JTextField.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/JTextPane.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/LayoutManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ListSelectionModel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/MathExt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/PointGroup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/PolyhedronStereoSorter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SV.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptCompiler.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptContext.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptDelayThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptError.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptEval.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptExpr.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptExt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptFlowContext.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptFunction.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptInterruption.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptMathProcessor.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptParallelProcessor.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptParam.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptProcess.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptProcessRunnable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptQueueThread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/ScriptTokenParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesAromatic.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesAtom.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesBond.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesExt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesGenerator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesMatcher.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesMeasure.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesRing.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesRingSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesSearch.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SmilesStereo.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SpaceGroup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SpaceGroupFinder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SwingConstants.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SwingController.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/Symmetry.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SymmetryDesc.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SymmetryInfo.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/SymmetryOperation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/T.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/TableCellRenderer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/TableColumn.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/UnitCell.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/UnitCellIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/VTemp.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/WyckoffFinder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/package.html create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/allWyckoff.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/aflow_structures.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_1.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_10.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_100.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_101.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_102.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_103.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_104.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_105.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_106.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_107.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_108.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_109.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_11.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_110.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_111.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_112.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_113.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_114.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_115.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_116.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_117.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_118.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_119.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_12.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_120.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_121.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_122.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_123.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_124.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_125.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_126.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_127.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_128.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_129.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_13.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_130.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_131.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_132.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_133.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_134.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_135.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_136.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_137.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_138.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_139.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_14.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_140.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_141.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_142.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_143.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_144.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_145.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_146.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_147.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_148.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_149.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_15.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_150.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_151.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_152.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_153.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_154.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_155.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_156.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_157.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_158.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_159.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_16.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_160.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_161.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_162.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_163.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_164.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_165.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_166.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_167.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_168.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_169.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_17.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_170.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_171.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_172.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_173.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_174.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_175.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_176.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_177.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_178.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_179.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_18.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_180.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_181.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_182.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_183.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_184.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_185.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_186.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_187.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_188.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_189.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_19.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_190.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_191.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_192.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_193.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_194.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_195.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_196.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_197.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_198.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_199.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_2.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_20.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_200.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_201.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_202.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_203.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_204.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_205.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_206.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_207.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_208.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_209.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_21.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_210.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_211.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_212.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_213.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_214.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_215.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_216.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_217.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_218.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_219.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_22.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_220.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_221.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_222.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_223.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_224.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_225.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_226.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_227.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_228.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_229.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_23.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_230.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_24.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_25.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_26.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_27.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_28.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_29.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_3.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_30.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_31.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_32.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_33.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_34.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_35.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_36.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_37.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_38.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_39.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_4.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_40.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_41.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_42.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_43.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_44.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_45.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_46.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_47.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_48.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_49.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_5.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_50.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_51.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_52.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_53.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_54.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_55.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_56.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_57.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_58.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_59.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_6.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_60.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_61.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_62.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_63.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_64.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_65.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_66.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_67.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_68.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_69.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_7.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_70.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_71.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_72.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_73.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_74.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_75.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_76.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_77.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_78.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_79.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_8.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_80.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_81.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_82.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_83.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_84.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_85.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_86.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_87.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_88.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_89.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_9.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_90.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_91.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_92.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_93.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_94.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_95.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_96.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_97.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_98.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_99.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_all.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_1.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_10.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_100.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_101.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_102.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_103.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_104.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_105.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_106.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_107.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_108.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_109.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_11.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_110.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_111.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_112.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_113.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_114.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_115.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_116.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_117.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_118.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_119.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_12.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_120.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_121.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_122.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_123.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_124.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_125.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_126.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_127.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_128.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_129.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_13.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_130.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_131.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_132.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_133.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_134.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_135.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_136.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_137.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_138.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_139.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_14.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_140.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_141.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_142.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_143.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_144.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_145.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_146.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_147.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_148.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_149.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_15.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_150.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_151.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_152.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_153.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_154.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_155.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_156.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_157.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_158.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_159.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_16.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_160.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_161.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_162.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_163.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_164.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_165.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_166.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_167.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_168.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_169.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_17.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_170.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_171.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_172.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_173.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_174.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_175.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_176.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_177.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_178.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_179.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_18.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_180.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_181.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_182.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_183.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_184.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_185.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_186.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_187.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_188.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_189.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_19.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_190.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_191.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_192.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_193.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_194.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_195.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_196.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_197.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_198.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_199.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_2.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_20.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_200.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_201.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_202.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_203.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_204.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_205.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_206.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_207.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_208.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_209.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_21.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_210.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_211.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_212.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_213.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_214.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_215.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_216.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_217.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_218.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_219.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_22.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_220.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_221.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_222.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_223.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_224.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_225.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_226.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_227.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_228.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_229.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_23.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_230.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_24.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_25.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_26.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_27.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_28.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_29.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_3.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_30.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_31.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_32.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_33.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_34.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_35.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_36.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_37.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_38.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_39.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_4.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_40.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_41.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_42.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_43.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_44.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_45.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_46.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_47.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_48.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_49.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_5.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_50.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_51.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_52.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_53.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_54.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_55.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_56.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_57.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_58.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_59.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_6.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_60.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_61.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_62.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_63.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_64.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_65.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_66.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_67.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_68.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_69.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_7.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_70.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_71.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_72.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_73.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_74.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_75.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_76.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_77.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_78.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_79.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_8.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_80.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_81.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_82.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_83.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_84.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_85.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_86.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_87.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_88.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_89.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_9.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_90.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_91.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_92.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_93.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_94.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_95.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_96.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_97.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_98.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_99.json create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/missingSettings.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/sggroups_ordered.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/sgmap.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/sgops_ordered.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getAFLOW.spt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getITA.spt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getSubgroups.spt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/sg.spt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/cleg_settings.tab create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/cleg_subgroups.tab create mode 100755 config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/ita_settings.tab create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/AnnotationData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/AppletFrame.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/ExportInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVAppInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVAppletInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVFileDropper.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVFileHelper.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVMainPanel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPanel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPdfWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPrintDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTree.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTreeNode.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTreePath.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVViewPanel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVZipInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVZipReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/PanelListener.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/PlatformDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/ScriptInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/SourceReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/VisibleInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/js/JSVAppletObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/api/js/JSVToJSmolInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/app/GenericMouse.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/app/JSVApp.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/app/JSVAppPro.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/appletjs/JSVApplet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/appletjs/JSVAppletPro.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/Annotation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ColorParameters.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ColoredAnnotation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/CoordComparator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/Coordinate.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ExportType.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/GraphSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ImageView.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/Integral.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/IntegralComparator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/IntegralData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVFileManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVZipFileSequentialReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVZipUtil.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVersion.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/JSViewer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/Measurement.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/MeasurementData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PDFWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PanelData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PanelNode.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/Parameters.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakInfo.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakPick.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakPickEvent.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PlotWidget.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/PrintLayout.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/RepaintManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ScaleData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ScriptToken.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ScriptTokenizer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/Spectrum.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/SubSpecChangeEvent.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ViewData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/Visible.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/XYScaleConverter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/common/ZoomEvent.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/dialog/DialogManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/dialog/DialogParams.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/dialog/IntegrationDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/dialog/JSVDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/dialog/MeasurementsDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/dialog/OverlayLegendDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/dialog/PeakListDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/dialog/ViewsDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/exception/JSVException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/AMLExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/CMLExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/ExportInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/Exporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/FormContext.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/FormExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/JDXCompressor.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/JDXExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/SVGExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/XMLExporter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/animl_nmr.vm create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/animl_tmp.vm create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/cml_nmr.vm create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/cml_tmp.vm create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/plot.vm create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/plot_ink.vm create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/DialogTableModel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/Display.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/Image.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsDialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsDialogManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFile.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFileHelper.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFont.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsG2D.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsMainPanel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPanel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsParameters.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPlatform.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPopup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/popup/JSVGenericPopup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/popup/JSVPopupResourceBundle.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/AnIMLReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/BrukerReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/CMLReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXDataObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXDecompressor.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXHeader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXSource.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXSourceStreamTokenizer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/XMLParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/source/XMLReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/tree/SimpleTree.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/tree/SimpleTreeEnumeration.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/tree/SimpleTreeModel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/tree/SimpleTreeNode.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JSV/tree/SimpleTreePath.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/A4.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/AU.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Adler32.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/AjaxURLConnection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/AjaxURLStreamHandler.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/AjaxURLStreamHandlerFactory.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ArrayDataReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/BArray.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/BC.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/BS.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/BSUtil.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/BZone.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Base64.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/BinaryDocument.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/BoxInfo.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/C.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/CRC32.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/CU.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Checksum.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/CifDataParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ColorEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/CommandHistory.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/CompoundDocDirEntry.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/CompoundDocHeader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/CompoundDocument.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ContactPair.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/DF.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/DataReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/DebugJS.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/DefaultLogger.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Deflate.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Deflater.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/DeflaterOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Edge.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Eigen.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/EigenSort.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Elements.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Encoding.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Escape.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Font.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/GData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/GZIPException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/GZIPHeader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/GZIPInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/GZIPOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/GenericApplet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Geodesic.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/InfBlocks.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/InfCodes.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/InfTree.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Inflate.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Inflater.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/InflaterInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Int2IntHash.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/JSJSONParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/JSONException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/JSONWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/JZlib.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/JmolAudio.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/JmolMolecule.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/LimitedLineReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ListDataReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Logger.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/LoggerInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Lst.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/M3.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/M34.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/M4.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Matrix.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Measure.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/MeshCapper.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/MeshSlicer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/MeshSurface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/MessagePackReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Modulation.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ModulationSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Node.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Normix.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/OC.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/P3.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/P3i.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/P4.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/PT.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Parser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/PatternMatcher.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Point3fi.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Quat.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Rdr.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Rectangle.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Rgb16.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/SB.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Shader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/SimpleEdge.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/SimpleNode.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/SimpleUnitCell.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/StaticTree.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/StringDataReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/T3.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/T3d.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/T3i.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/T4.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/TempArray.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Tensor.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Tree.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/TriangleData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Triangulator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Txt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/V3.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/V3d.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/Vibration.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/XmlUtil.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ZStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ZStreamException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ZipData.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/ZipTools.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/_lut2txt.spt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/_luttxt2span.xlsx create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/_schemes.htm create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/batlow.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/cividis.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/inferno.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/kry.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/magma.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/plasma.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/schemes.htm create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/thermal.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/turbo.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JU/colorschemes/viridis.lut.txt create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/ActionManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/AnimationManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/ChimeMessenger.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/ColorManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/DataManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/FileManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/GlobalSettings.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/JC.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/Jmol.properties create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/JmolAsyncException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/JmolChimeMessenger.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/JmolStateCreator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/ModelManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/MouseState.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/OutputManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/OutputManagerAwt.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/OutputManagerJS.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/PropertyManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/SelectionManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/ShapeManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/StateCreator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/StateManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/StatusManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/TransformManager.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/TransformManager4D.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/Viewer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/binding/Binding.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/binding/DragBinding.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/binding/JmolBinding.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/binding/PfaatBinding.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/JV/binding/RasmolBinding.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/Jmol.properties create mode 100755 config/plugins/visualizations/jmol/static/j2s/_ES6/molfile-to-inchi.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/_WASM/molfile_to_inchi.wasm create mode 100755 config/plugins/visualizations/jmol/static/j2s/_WASM/wasi.esm.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Adler32.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/CRC32.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Checksum.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Deflate.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Deflater.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/DeflaterOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPHeader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfBlocks.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfCodes.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfTree.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Inflate.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Inflater.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InflaterInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/JZlib.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/StaticTree.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Tree.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/ZStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/ZStreamException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corebinary.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corebinary.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corebio.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corebio.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coreconsole.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coreconsole.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejmol.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejmol.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejmoldebug.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejmoljsv.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejmoljsv.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejsv.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejsv.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejsvdialog.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejsvdialog.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejsvexport.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejsvexport.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejsvmenu.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corejsvmenu.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coremenu.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coremenu.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coremin.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coremin.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coreprop.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coreprop.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corepymol.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corepymol.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corescript.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corescript.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corescriptcmd.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corescriptcmd.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corescriptmath.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corescriptmath.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coresmiles.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coresmiles.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corestate.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corestate.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coresurface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coresurface.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coreswing.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coreswing.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coresym.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coresym.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coretext.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/coretext.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corezip.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/corezip.z.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/core/package.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/img/JSmol_spinner.gif create mode 100755 config/plugins/visualizations/jmol/static/j2s/img/cursor_wait.gif create mode 100755 config/plugins/visualizations/jmol/static/j2s/img/play_make_live.jpg create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/BufferedInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/BufferedOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/BufferedReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/BufferedWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/ByteArrayInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/ByteArrayOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/CharArrayReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/CharArrayWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/Closeable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/DataInput.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/DataInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/DataOutput.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/Externalizable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/FilterInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/FilterOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/Flushable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/InputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/InputStreamReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/ObjectStreamField.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/OutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/PushbackInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/Reader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/Serializable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/StringBufferInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/StringReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/StringWriter.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/io/Writer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/lang/Enum.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/lang/Enum0.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/lang/Thread.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/lang/ThreadGroup.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/MalformedURLException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/Parts.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/URL.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/URLConnection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/URLDecoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/URLEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/URLStreamHandler.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/URLStreamHandlerFactory.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/net/UnknownServiceException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/text/MessageFormat.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/AbstractCollection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/AbstractList.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/AbstractMap.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/AbstractQueue.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/AbstractSequentialList.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/AbstractSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/AbstractStringBuilder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/ArrayList.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Arrays.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Collection.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Collections.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Comparator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Dictionary.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Enumeration.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/EventListener.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/EventListenerProxy.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/EventObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/HashMap.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/HashSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Hashtable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/IdentityHashMap.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Iterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/LinkedHashMap.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/LinkedHashSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/LinkedList.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/List.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/ListIterator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/ListResourceBundle.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Locale.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Map.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/MapEntry.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Observable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Observer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Properties.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Queue.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Random.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/RandomAccess.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/ResourceBundle.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Set.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/SortedMap.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/SortedSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Stack.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/StringTokenizer.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/TreeMap.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/TreeSet.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/Vector.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/WeakHashMap.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/CRC32.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/CheckedInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/Deflater.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/DeflaterOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/GZIPInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/Inflater.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/InflaterInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipConstants.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipConstants64.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipEntry.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipException.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipOutputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/J2SIgnoreImport.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/J2SRequireImport.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/BytePoster.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/EigenInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericBinaryDocument.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericBinaryDocumentReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericCifDataParser.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericColor.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericImageEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericLineReader.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericOutputChannel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericZipInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericZipTools.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/Interface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/JSFunction.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/JSInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/JSONEncodable.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/ZInputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/js/J2SObjectInterface.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/api/js/JSAppletObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/export/PDFCreator.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/export/PDFObject.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/BMPDecoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/CRCEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/GifEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/ImageEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/Jpg64Encoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/JpgEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/PdfEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/PngEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/javajs/img/PpmEncoder.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/jme/AtomDisplayLabel.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/jme/JME.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/jme/JMEUtil.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/jme/JMEmol.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/BZip2Constants.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CBZip2InputStream.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CBZip2InputStreamFactory.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CRC.js create mode 100755 config/plugins/visualizations/jmol/static/j2s/org/qcschema/QCSchemaUnits.js create mode 100755 config/plugins/visualizations/jmol/static/logo.png create mode 100644 config/plugins/visualizations/jmol/templates/jmol.mako diff --git a/config/plugins/visualizations/jmol/config/jmol.xml b/config/plugins/visualizations/jmol/config/jmol.xml new file mode 100644 index 000000000000..c30db37543f2 --- /dev/null +++ b/config/plugins/visualizations/jmol/config/jmol.xml @@ -0,0 +1,16 @@ + + + + This is a visualiser for molecular structures using Jmol + + + HistoryDatasetAssociation + data.Data + dataset_id + + + + dataset_id + + + \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/JSmol.min.js b/config/plugins/visualizations/jmol/static/JSmol.min.js new file mode 100755 index 000000000000..a871ab9e89d6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/JSmol.min.js @@ -0,0 +1,265 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0org.pdb.query.simple.AdvancedKeywordQueryText SearchQUERY",_restReportUrl:"http://www.pdb.org/pdb/rest/customReport?pdbids=IDLIST&customReportColumns=structureId,structureTitle"},_debugAlert:!1,_document:a,_isXHTML:!1,_lastAppletID:null,_mousePageX:null, +_mouseOwner:null,_serverUrl:"https://your.server.here/jsmol.php",_syncId:(""+Math.random()).substring(3),_touching:!1,_XhtmlElement:null,_XhtmlAppendChild:!1};a=a.location.href.toLowerCase();j._debugCore=0<=a.indexOf("j2sdebugcore");j._httpProto=0==a.indexOf("https")?"https://":"http://";j._isFile=0==a.indexOf("file:");j._isFile&&$.ajaxSetup({mimeType:"text/plain"});j._ajaxTestSite=j._httpProto+"google.com";a=j._isFile||0==a.indexOf("http://localhost")||0==a.indexOf("http://127.");j._tracker=!a&& +"https://chemapps.stolaf.edu/jmol/JmolTracker.php?id=UA-45940799-1";j._isChrome=0<=navigator.userAgent.toLowerCase().indexOf("chrome");j._isSafari=!j._isChrome&&0<=navigator.userAgent.toLowerCase().indexOf("safari");j._isMsie=void 0!==window.ActiveXObject;j._isEdge=0<=navigator.userAgent.indexOf("Edge/");j._useDataURI=!j._isMsie&&!j._isEdge;window.requestAnimationFrame||(window.requestAnimationFrame=window.setTimeout);for(var g in Jmol)j[g]=Jmol[g];return j}(document,Jmol)); +(function(a,j){a.clazzAlert=function(){};a.__$=j;j(document).ready(function(){a._document=null});a.$=function(a,e){null==a&&alert(e+arguments.callee.caller.toString());return j(e?"#"+a._id+"_"+e:a)};a._$=function(a){return"string"==typeof a?j("#"+a):a};a.$ajax=function(c){a._ajaxCall=c.url;c.cache="NO"!=c.cache;c.url=a._fixProtocol(c.url);return j.ajax(c)};a._fixProtocol=function(c){0<=c.indexOf("get3d=True")&&(c=c.replace(/get3d\=True/,"get3d=true"));return 0==c.indexOf("http://www.rcsb.org/pdb/files/")&& +0>c.indexOf("/ligand/")?"http://files.rcsb.org/view/"+c.substring(30).replace(/\.gz/,""):0==c.indexOf("http://")&&("https://"==a._httpProto||0e?h[0].scrollHeight:e)}; +a.$setEnabled=function(c,e){return a._$(c).attr("disabled",e?null:"disabled")};a.$getSize=function(c){c=a._$(c);return[c.width(),c.height()]};a.$setSize=function(c,e,h){return a._$(c).width(e).height(h)};a.$is=function(c,e){return a._$(c).is(e)};a.$setVisible=function(c,e){var h=a._$(c);return e?h.show():h.hide()};a.$submit=function(c){return a._$(c).submit()};a.$val=function(c,e){var h=a._$(c);return 1==arguments.length?h.val():h.val(e)};a._clearVars=function(){delete jQuery;delete j;delete a;delete SwingController; +delete J;delete JM;delete JS;delete JSV;delete JU;delete JV;delete java;delete javajs;delete Clazz;delete c$};var g=document,d=window,b={};b.ua=navigator.userAgent.toLowerCase();var f;a:{f=["linux","unix","mac","win"];for(var k=f.length;k--;)if(-1!=b.ua.indexOf(f[k])){f=f[k];break a}f="unknown"}b.os=f;b.browser=function(){for(var a=b.ua,e="konqueror webkit omniweb opera webtv icab msie mozilla".split(" "),h=0;hnavigator.appVersion.indexOf("MSIE 8");b.getDefaultLanguage=function(){return navigator.language||navigator.userLanguage||"en-US"};b._webGLtest=0;b.supportsWebGL=function(){if(!a.featureDetection._webGLtest){var c;a.featureDetection._webGLtest=d.WebGLRenderingContext&& +((c=g.createElement("canvas")).getContext("webgl")||c.getContext("experimental-webgl"))?1:-1}return 0=b.browserVersion&&"mac"==e||"webkit"==b.browserName&&125.12>b.browserVersion||"msie"==b.browserName&&"mac"==e||"konqueror"==b.browserName&&3.3>=b.browserVersion)a=!1;return a};b.isFullyCompliant=function(){return b.compliantBrowser()&&b.supportsJava()};b.useIEObject="win"==b.os&&"msie"==b.browserName&&5.5<=b.browserVersion;b.useHtml4Object="mozilla"==b.browserName&& +5<=b.browserVersion||"opera"==b.browserName&&8<=b.browserVersion||"webkit"==b.browserName;b.hasFileReader=d.File&&d.FileReader;a.featureDetection=b;a._ajax=function(c){if(!c.async)return a.$ajax(c).responseText;a._ajaxQueue.push(c);1==a._ajaxQueue.length&&a._ajaxDone()};a._ajaxDone=function(){var c=a._ajaxQueue.shift();c&&a.$ajax(c)};a._grabberOptions=[["$","NCI(small molecules)"],[":","PubChem(small molecules)"],["=","RCSB(macromolecules)"],["*","PDBe(macromolecules)"]];a._getGrabberOptions=function(c){if(0== +a._grabberOptions.length)return"";var e='',h='';1==a._grabberOptions.length?(e=""+e+'',h=""+h):e+="
";for(var e=e+'"+h).replace(/ID/g,c._id);return"
"+e};a._getScriptForDatabase=function(c){return"$"==c?a.db._nciLoadScript:":"==c?a.db._pubChemLoadScript:a.db._fileLoadScript};a._setInfo=function(a,e,h){var b=[],d="";if(0==h.indexOf("ERROR"))d=h;else switch(e){case "=":e=h.split("");b=[""];for(h=1;h"),b.push("");b.push("
"+e[h].substring(0,4)+""+e[h].split("Title>")[1].split("
");d=e.length-1+" matches";break;case "$":case ":":break;default:return}a._infoHeader=d;a._info=b.join("");a._showInfo(!0)};a._loadSuccess=function(c,e){e&&(a._ajaxDone(),e(c))};a._loadError=function(c){a._ajaxDone();a.say("Error connecting to server: "+a._ajaxCall);null!=c&&c()};a._isDatabaseCall=function(c){return 0<=a.db._databasePrefixes.indexOf(c.substring(0, +1))};a._getDirectDatabaseCall=function(c,e){if(e&&!a.featureDetection.supportsXhr2())return c;var h=2,b=c.substring(0,h),d=a.db._DirectDatabaseCalls[b]||a.db._DirectDatabaseCalls[b=c.substring(0,--h)];d&&(":"==b?(b=c.toLowerCase(),isNaN(parseInt(c.substring(1)))?0==b.indexOf(":smiles:")?(d+="?POST?smiles="+c.substring(8),c="smiles"):0==b.indexOf(":cid:")?c="cid/"+c.substring(5):(0==b.indexOf(":name:")?c=c.substring(5):0==b.indexOf(":cas:")&&(c=c.substring(4)),c="name/"+encodeURIComponent(c.substring(h))): +c="cid/"+c.substring(1)):c=encodeURIComponent(c.substring(h)),0<=c.indexOf(".mmtf")?c="https://mmtf.rcsb.org/v1.0/full/"+c.replace(/\.mmtf/,""):0<=d.indexOf("FILENCI")?(c=c.replace(/\%2F/g,"/"),c=d.replace(/\%FILENCI/,c)):c=d.replace(/\%FILE/,c));return c};a._getRawDataFromServer=function(c,e,h,b,d,f){c="?call=getRawDataFromDatabase&database="+c+(0<=e.indexOf("?POST?")?"?POST?":"")+"&query="+encodeURIComponent(e)+(d?"&encoding=base64":"")+(f?"":"&script="+encodeURIComponent(a._getScriptForDatabase(c))); +return a._contactServer(c,h,b)};a._checkFileName=function(c,e,h){a._isDatabaseCall(e)&&(h&&a._setQueryTerm(c,e),e=a._getDirectDatabaseCall(e,!0),a._isDatabaseCall(e)&&(e=a._getDirectDatabaseCall(e,!1),h&&(h[0]=!0)));return e};a._checkCache=function(c,e,h){if(c._cacheFiles&&a._fileCache&&!e.endsWith(".js")){if(c=a._fileCache[e])return System.out.println("using "+c.length+" bytes of cached data for "+e),h(c),null;h=function(c,e){h(a._fileCache[c]=e)}}return h};a.playAudio=function(c){a.playAudio(null, +c)};a.playAudio=function(a,e){var h=e.get?function(a){return e.get(a)}:null,b=e.put?function(a,c){return e.put(a,c)}:null,d=h?h("audioFile"):e,f=h&&h("audioPlayer"),g=document.createElement("audio");b&&b("audioElement",g);var k=null;f&&(k=function(a){f.processUpdate(a)},f.myClip={open:function(){k("open")},start:function(){g.play();k("start")},loop:function(a){g.loop=0!=a},stop:function(){g.pause()},close:function(){k("close")},setMicrosecondPosition:function(a){g.currentTime=a/1E6}});g.controls= +"true";g.src=d;h&&h("loop")&&(g.loop="true");k&&(g.addEventListener("pause",function(){k("pause")}),g.addEventListener("play",function(){k("play")}),g.addEventListener("playing",function(){k("playing")}),g.addEventListener("ended",function(){k("ended")}),k("open"))};a._loadFileData=function(c,e,h,b){var d=[];e=a._checkFileName(c,e,d);h=a._checkCache(c,e,h);d[0]?a._getRawDataFromServer("_",e,h,b):(c={type:"GET",dataType:"text",url:e,async:a._asynchronous,success:function(c){a._loadSuccess(c,h)},error:function(){a._loadError(b)}}, +a._checkAjaxPost(c),a._ajax(c))};a._getInfoFromDatabase=function(c,e,h){if("===="==e){var b=a.db._restQueryXml.replace(/QUERY/,h),b={dataType:"text",type:"POST",contentType:"application/x-www-form-urlencoded",url:a.db._restQueryUrl,data:encodeURIComponent(b)+"&req=browser",success:function(b){a._ajaxDone();a._extractInfoFromRCSB(c,e,h,b)},error:function(){a._loadError(null)},async:a._asynchronous};return a._ajax(b)}h="?call=getInfoFromDatabase&database="+e+"&query="+encodeURIComponent(h);return a._contactServer(h, +function(h){a._setInfo(c,e,h)})};a._extractInfoFromRCSB=function(c,e,h,b){var d=b.length/5;if(0!=d&&4==h.length&&1!=d){h=h.toUpperCase();var f=b.indexOf(h);0f.indexOf("?")&&f==c._thisJmolModel)){c._thisJmolModel=f;var g;b&&null!=c._viewSet&&null!=(g=a.View.__findView(c._viewSet,{chemID:f}))?a.View.__setView(g,c,!1):("$"==d||":"==d?c._jmolFileType="MOL":"="==d&&(c._jmolFileType="PDB"),c._searchDatabase(e,d,h))}};a._searchDatabase=function(c,e,h,b){c._showInfo(!1);return 0<=e.indexOf("?")?(a._getInfoFromDatabase(c,h,e.split("?")[0]),!0):a.db._DirectDatabaseCalls[h]?(c._loadFile(h+e,b),!0):!1};a._syncBinaryOK= +"?";a._canSyncBinary=function(c){if(a._isAsync)return!0;if(self.VBArray)return a._syncBinaryOK=!1;if("?"!=a._syncBinaryOK)return a._syncBinaryOK;a._syncBinaryOK=!0;try{var e=new window.XMLHttpRequest;e.open("text",a._ajaxTestSite,!1);e.hasOwnProperty("responseType")?e.responseType="arraybuffer":e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined")}catch(h){return System.out.println("JSmolCore.js: synchronous binary file transfer is requested but not available"),a._alertNoBinary&& +!c&&alert("JSmolCore.js: synchronous binary file transfer is requested but not available"),a._syncBinaryOK=!1}return!0};a._binaryTypes="mmtf .bcif .gz .bz2 .jpg .gif .png .zip .jmol .bin .smol .spartan .pmb .mrc .map .ccp4 .dn6 .delphi .omap .pse .dcd .lut .uk/pdbe/densities/".split(" ");a.isBinaryUrl=function(c){for(var e=a._binaryTypes.length;0<=--e;)if(0<=c.indexOf(a._binaryTypes[e]))return!0;return!1};a._getFileData=function(c,e,h){var b=a.isBinaryUrl(c),d=0<=c.indexOf(".gz")&&0<=c.indexOf("rcsb.org"); +d&&(c=c.replace(/\.gz/,""),b=!1);var d=b&&!e&&!a._canSyncBinary(d),f=0<=c.indexOf("?POST?");0==c.indexOf("file:/")&&0!=c.indexOf("file:///")&&(c="file://"+c.substring(5));var g=0>c.indexOf("://")||0==c.indexOf(document.location.protocol)&&0<=c.indexOf(document.location.host),k="https://"==a._httpProto&&0==c.indexOf("http://"),j=a._isDirectCall(c);!j&&0<=c.indexOf("?ALLOWSORIGIN?")&&(j=!0,c=c.replace(/\?ALLOWSORIGIN\?/,""));var l=!g&&a.$supportsIECrossDomainScripting(),m=null;if(k||d||!g&&!j||!e&& +l)m=a._getRawDataFromServer("_",c,e,e,d,!0);else{c=c.replace(/file:\/\/\/\//,"file://");var r={dataType:b?"binary":"text",async:!!e};f?(r.type="POST",r.url=c.split("?POST?")[0],r.data=c.split("?POST?")[1]):(r.type="GET",r.url=c);e&&(r.success=function(){e(a._xhrReturn(r.xhr))},r.error=function(){e(r.xhr.statusText)});r.xhr=a.$ajax(r);e||(m=a._xhrReturn(r.xhr))}if(!h)return m;null==m&&(m="",b=!1);b&&(b=a._canSyncBinary(!0));return b?a._strToBytes(m):JU.SB.newS(m)};a._xhrReturn=function(a){return!a.responseText&& +""!==a.responseText||self.Clazz&&Clazz.instanceOf(a.response,self.ArrayBuffer)?a.response||a.statusText:a.responseText};a._isDirectCall=function(c){if(0<=c.indexOf("?ALLOWSORIGIN?"))return!0;for(var e in a.db._DirectDatabaseCalls)if(0<=e.indexOf(".")&&0<=c.indexOf(e))return!0;return!1};a._cleanFileData=function(a){return 0<=a.indexOf("\r")&&0<=a.indexOf("\n")?a.replace(/\r\n/g,"\n"):0<=a.indexOf("\r")?a.replace(/\r/g,"\n"):a};a._getFileType=function(a){var e=a.substring(0,1);if("$"==e||":"==e)return"MOL"; +if("="==e)return"="==a.substring(1,2)?"LCIF":"PDB";a=a.split(".").pop().toUpperCase();return a.substring(0,Math.min(a.length,3))};a._getZ=function(c,e){return c&&c._z&&c._z[e]||a._z[e]};a._incrZ=function(c,e){return c&&c._z&&++c._z[e]||++a._z[e]};a._hideLocalFileReader=function(c){c._localReader&&a.$setVisible(c._localReader,!1);c._readingLocal=!1;a.setCursor(c,0)};a.loadFileFromDialog=function(c){a.loadFileAsynchronously(null,c,null,null)};a.loadFileAsynchronously=function(c,e,h,b){if(h&&0!=h.indexOf("?")){var d= +h;h=a._checkFileName(e,h);var f=function(f){a._setData(c,h,d,f,b,e)},f=a._checkCache(e,h,f);0<=h.indexOf("|")&&(h=h.split("|")[0]);return null==f?null:a._getFileData(h,f)}if(!a.featureDetection.hasFileReader)return c?c.setData("Local file reading is not enabled in your browser",null,null,b,e):alert("Local file reading is not enabled in your browser");e._localReader||(f='
', +a.$after("#"+e._id+"_appletdiv",f.replace(/ID/g,e._id+"_localReader")),e._localReader=a.$(e,"localReader"));a.$appEvent(e,"localReader_loadurl","click");a.$appEvent(e,"localReader_loadurl","click",function(){var c=prompt("Enter a URL");c&&(a._hideLocalFileReader(e,0),a._setData(null,c,c,null,b,e))});a.$appEvent(e,"localReader_loadfile","click");a.$appEvent(e,"localReader_loadfile","click",function(){var h=a.$(e,"localReader_files")[0].files[0],d=new FileReader;d.onloadend=function(d){d.target.readyState== +FileReader.DONE&&(a._hideLocalFileReader(e,0),a._setData(c,h.name,h.name,d.target.result,b,e))};try{d.readAsArrayBuffer(h)}catch(f){alert("You must select a file first.")}});a.$appEvent(e,"localReader_cancel","click");a.$appEvent(e,"localReader_cancel","click",function(){a._hideLocalFileReader(e);c&&c.setData("#CANCELED#",null,null,b,e)});a.$setVisible(e._localReader,!0);e._readingLocal=!0};a._setData=function(c,e,h,b,d,f){b&&(b=a._strToBytes(b));null!=b&&(null==c||0<=e.indexOf(".jdx"))&&a.Cache.put("cache://"+ +e,b);null==c?f._applet.openFileAsyncSpecial(null==b?e:"cache://"+e,1):c.setData(e,h,b,d)};a.doAjax=function(c,e,h){c=c.toString();if(h){if(0!=c.indexOf("http://")&&0!=c.indexOf("https://"))return a._saveFile(c,h);c={async:!1,url:c,type:"POST",data:"string"==typeof data?h:";base64,"+(JU||J.util).Base64.getBase64(h).toString(),processData:!1};return a.$ajax(c).responseText}e&&(c+="?POST?"+e);return a._getFileData(c,null,!0)};a._saveFile=function(c,e,h,b){if(a._localFileSaveFunction&&a._localFileSaveFunction(c, +e))return"OK";c=c.substring(c.lastIndexOf("/")+1);h||(h=0<=c.indexOf(".pdf")?"application/pdf":0<=c.indexOf(".png")?"image/png":0<=c.indexOf(".gif")?"image/gif":0<=c.indexOf(".jpg")?"image/jpg":"");var d="string"==typeof e;e=d&&0<=e.indexOf(";base64,")?e.split(";base64,")[1]:(JU||J.util).Base64.getBase64(d?e.getBytes("UTF-8"):e).toString();b||(b="base64");(d=a._serverUrl)&&0<=d.indexOf("your.server")&&(d="");a._useDataURI||!d?(b=document.createElement("a"),b.href="data:"+h+";base64,"+e,b.type=h|| +"text/plain;charset=utf-8",b.download=c,b.target="_blank",j("body").append(b),b.click(),b.remove()):(a._formdiv||(a.$after("body",''), +a._formdiv="__jsmolform__"),a.$attr(a._formdiv,"action",d+"?"+(new Date).getMilliseconds()),a.$val("__jsmoldata__",e),a.$val("__jsmolfilename__",c),a.$val("__jsmolmimetype__",h),a.$val("__jsmolencoding__",b),a.$submit("__jsmolform__"),a.$val("__jsmoldata__",""),a.$val("__jsmolfilename__",""));return"OK"};a._strToBytes=function(a){if(Clazz.instanceOf(a,self.ArrayBuffer))return Clazz.newByteArray(-1,a);for(var e=Clazz.newByteArray(a.length,0),h=a.length;0<=--h;)e[h]=a.charCodeAt(h)&255;return e};a._setConsoleDiv= +function(a){self.Clazz&&Clazz.setConsoleDiv(a)};a._registerApplet=function(c,e){return window[c]=a._applets[c]=a._applets.master=a._applets[c+"__"+a._syncId+"__"]=e};a._readyCallback=function(c,e,h,b,d){c=c.split("_object")[0];var f=a._applets[c];if(h=h.booleanValue?h.booleanValue():h)f._appletPanel=d||b,f._applet=b;a._track(f)._readyCallback(c,e,h)};a._getWrapper=function(c,e){var h;if(e){var b="";if(c._coverImage)var b=' onclick="Jmol.coverApplet(ID, false)" title="'+c._coverTitle+'"',d='",b='
"+d+"
";d=c._isJava?"":'';h=a._appletCssText.replace(/\'/g,'"');var f=c._getSpinner&&c._getSpinner();c._spinner=f=!f||"none"==f?"":"background-image:url("+f+"); background-repeat:no-repeat; background-position:center;";h=f+(0<=h.indexOf('style="')?h.split('style="')[1]:'" '+h);h='...
IMG WAIT......
";var f=c._height,g=c._width;if("string"!==typeof f||0>f.indexOf("%"))f+="px";if("string"!==typeof g||0>g.indexOf("%"))g+="px";h=h.replace(/IMG/,b).replace(/WAIT/,d).replace(/Hpx/g,f).replace(/Wpx/g,g)}else h='......
............
..................
......
...
'; +return h.replace(/\.\.\./g,"").replace(/[\n\r]/g,"").replace(/ID/g,c._id)};a._hideLoadingSpinner=function(c){c._spinner&&a.$css(a.$(c,"appletdiv"),{"background-image":""})};a._documentWrite=function(c){if(a._document){if(a._isXHTML&&!a._XhtmlElement){var e=document.getElementsByTagName("script");a._XhtmlElement=e.item(e.length-1);a._XhtmlAppendChild=!1}a._XhtmlElement?a._domWrite(c):a._document.write(c)}return c};a._domWrite=function(c){for(var e=[0];e[0]c.jarFile.indexOf("Signed")&&(c.jarFile=c.jarFile.replace(/Applet/,"AppletSigned")),c.use= +c.use.replace(/SIGNED/,"JAVA"),c.isSigned=!0)};a._syncedApplets=[];a._syncedCommands=[];a._syncedReady=[];a._syncReady=!1;a._isJmolJSVSync=!1;a._setReady=function(c){a._syncedReady[c]=1;for(var e=0,h=0;hc[0]?-1:0}if(!a||"object"!=typeof a)return[];for(var h=[],b=a.length-1;0<=b;b--)for(var d=0,f=a[b].length;de.type.indexOf("touch"))return!1;var b=a.$offset(c.id),d,f=e.originalEvent;e.pageX||(e.pageX=f.pageX);e.pageY||(e.pageY=f.pageY);a._mousePageX=e.pageX;a._mousePageY=e.pageY;f.targetTouches&&f.targetTouches[0]?(d=f.targetTouches[0].pageX-b.left,b=f.targetTouches[0].pageY-b.top):f.changedTouches?(d=f.changedTouches[0].pageX-b.left,b=f.changedTouches[0].pageY- +b.top):(d=e.pageX-b.left,b=e.pageY-b.top);return void 0==d?null:[Math.round(d),Math.round(b),a._jsGetMouseModifiers(e)]};a.setCursor=function(c,e){if(!c._isJava&&!c._readingLocal){var b;switch(e){case 1:b="crosshair";break;case 3:b="wait";a.$setVisible(a.$(c,"waitimage"),!0);break;case 8:b="ns-resize";break;case 12:b="grab";break;case 13:b="move";break;default:a.$setVisible(a.$(c,"waitimage"),!1),b="default"}c._canvas.style.cursor=b}};a._gestureUpdate=function(c,e){e.stopPropagation();e.preventDefault(); +var b=e.originalEvent;switch(e.type){case "touchstart":a._touching=!0;break;case "touchend":a._touching=!1}if(!b.touches||2!=b.touches.length)return!1;switch(e.type){case "touchstart":c._touches=[[],[]];break;case "touchmove":var d=a.$offset(c.id),f=c._touches[0],g=c._touches[1];f.push([b.touches[0].pageX-d.left,b.touches[0].pageY-d.top]);g.push([b.touches[1].pageX-d.left,b.touches[1].pageY-d.top]);b=f.length;3d?-1:1,0,b]);return!1});a.$bind(c,"contextmenu",function(){return!1});a.$bind(c,"mouseout",function(b){if(e(b))return!0;a._mouseOwner&&(!a._mouseOwner.mouseMove&&!a._mouseOwner.isDragging)&& +a._setMouseOwner(null);c.applet._appletPanel&&c.applet._appletPanel.startHoverWatcher(!1);a._jsGetXY(c,b);return!1});a.$bind(c,"mouseenter",function(b){if(e(b))return!0;c.applet._appletPanel&&c.applet._appletPanel.startHoverWatcher(!0);if(0===b.buttons||0===b.which){c.isDragging=!1;b=a._jsGetXY(c,b);if(!b)return!1;c.applet._processEvent(504,b);c.applet._processEvent(502,b);return!1}});a.$bind(c,"mousemoveoutjsmol",function(b,d,f){if(e(f))return!0;if(c==a._mouseOwner&&c.isDragging)return a._drag(c, +f)});c.applet._is2D&&a.$resize(function(){c.applet&&c.applet._resize()});a.$bind("body","mouseup touchend",function(b){if(e(b))return!0;c.applet&&(c.isDragging=!1);a._setMouseOwner(null)})};a._jsUnsetMouse=function(c){c.applet=null;a.$bind(c,"mousedown touchstart mousemove touchmove mouseup touchend DOMMouseScroll mousewheel contextmenu mouseout mouseenter",null);a._setMouseOwner(null)};a.Swing={count:0,menuInitialized:0,menuCounter:0,htDialogs:{}};var l=a.Swing;SwingController=l;l.setDraggable=function(c){c= +c.prototype;c.setContainer||(c.setContainer=function(c){this.container=c;c.obj=this;this.ignoreMouse=this.isDragging=!1;var b=this;c.bind("mousedown touchstart",function(c){if(b.ignoreMouse)return b.ignoreMouse=!1,!0;a._setMouseOwner(b,!0);b.isDragging=!0;b.pageX=c.pageX;b.pageY=c.pageY;return!1});c.bind("mousemove touchmove",function(c){if(b.isDragging&&a._mouseOwner==b)return b.mouseMove(c),!1});c.bind("mouseup touchend",function(c){b.mouseUp(c);a._setMouseOwner(null)})},c.mouseUp=function(c){if(this.isDragging&& +a._mouseOwner==this)return this.pageX0+=c.pageX-this.pageX,this.pageY0+=c.pageY-this.pageY,this.isDragging=!1;a._setMouseOwner(null)},c.setPosition=function(){if(null===a._mousePageX){var c=a.$offset(this.applet._id+"_"+(this.applet._is2D?"canvas2d":"canvas"));a._mousePageX=c.left;a._mousePageY=c.top}this.pageX0=a._mousePageX;this.pageY0=a._mousePageY;this.container.css({top:a._mousePageY+"px",left:a._mousePageX+"px"})},c.mouseMove=function(c){if(this.isDragging&&a._mouseOwner==this){this.timestamp= +System.currentTimeMillis();var b=this.pageX0+(c.pageX-this.pageX);c=this.pageY0+(c.pageY-this.pageY);a._mousePageX=b;a._mousePageY=c;this.container.css({top:c+"px",left:b+"px"})}},c.dragBind=function(c){this.applet._ignoreMouse=!c;this.container.unbind("mousemoveoutjsmol");this.container.unbind("touchmoveoutjsmol");this.container.unbind("mouseupoutjsmol");this.container.unbind("touchendoutjsmol");a._setMouseOwner(null);if(c){var b=this;this.container.bind("mousemoveoutjsmol touchmoveoutjsmol",function(a, +c,e){b.mouseMove(e)});this.container.bind("mouseupoutjsmol touchendoutjsmol",function(a,c,e){b.mouseUp(e)})}})};l.JSDialog=function(){};l.setDraggable(l.JSDialog);l.getScreenDimensions=function(a){a.width=j(window).width();a.height=j(window).height()};l.dispose=function(c){a.$remove(c.id+"_mover");delete l.htDialogs[c.id];c.container.obj.dragBind(!1)};l.register=function(a,b){a.id=b+ ++l.count;l.htDialogs[a.id]=a};l.setDialog=function(c){a._setMouseOwner(null);a.$remove(c.id);var b=c.id+"_mover", +h=a._$(b),d;h[0]?(h.html(c.html),d=h[0].jd):(a.$after("body","
"+c.html+"
"),d=new l.JSDialog,h=a._$(b),c.container=h,d.applet=c.manager.vwr.html5Applet,d.setContainer(h),d.dialog=c,d.setPosition(),d.dragBind(!0),h[0].jd=d);a.$bind("#"+c.id+" .JButton","mousedown touchstart",function(){d.ignoreMouse=!0});a.$bind("#"+c.id+" .JComboBox","mousedown touchstart",function(){d.ignoreMouse=!0});a.$bind("#"+c.id+" .JCheckBox","mousedown touchstart", +function(){d.ignoreMouse=!0});a.$bind("#"+c.id+" .JTextField","mousedown touchstart",function(){d.ignoreMouse=!0});a.$bind("#"+c.id+" .JTable","mousedown touchstart",function(){d.ignoreMouse=!0});a.$bind("#"+c.id+" .JScrollPane","mousedown touchstart",function(){d.ignoreMouse=!0});a.$bind("#"+c.id+" .JEditorPane","mousedown touchstart",function(){d.ignoreMouse=!0})};l.setSelected=function(c){a.$prop(c.id,"checked",!!c.selected)};l.setSelectedIndex=function(c){a.$prop(c.id,"selectedIndex",c.selectedIndex)}; +l.setText=function(c){a.$prop(c.id,"value",c.text)};l.setVisible=function(c){a.$setVisible(c.id,c._visible)};l.setEnabled=function(c){a.$setEnabled(c.id,c.enabled)};l.click=function(c,b){var h=l.htDialogs[c.id];if(h){var d=h.toString();if(0<=d.indexOf("JCheck"))h.selected=c.checked;else if(0<=d.indexOf("JCombo"))h.selectedIndex=c.selectedIndex;else if(null!=h.text&&(h.text=c.value,b&&13!=(b.charCode||b.keyCode)))return}d=l.htDialogs[a.$getAncestorDiv(c.id,"JDialog").id];d.manager.actionPerformed(h? +h.name:d.registryKey+"/"+c.id)};l.setFront=function(c){var b=c.manager.vwr.html5Applet;c.zIndex!=a._getZ(b,"dialog")&&(c.zIndex=a._incrZ(b,"dialog"));c.container&&((c.container[0]||c.container).style.zIndex=c.zIndex)};l.hideMenus=function(a){if(a=a._menus)for(var b in a)a[b]._visible&&l.hideMenu(a[b])};l.windowClosing=function(c){c=l.htDialogs[a.$getAncestorDiv(c.id,"JDialog").id];c.registryKey?c.manager.processWindowClosing(c.registryKey):c.dispose()};a._track=function(c){if(a._tracker){try{var b= +'';a.$after("body",b)}catch(h){}delete a._tracker}return c};var m;a.getProfile=function(a){if(self.Clazz&&self.JSON)return m||Clazz._startProfiling(m=0==arguments.length||a),Clazz.getProfile()};a._getInChIKey=function(a,b){0<=b.indexOf("MOL=")&&b.split("MOL=")[1].split('"')}; +a._getAttr=function(a,b){var h=a.indexOf(b+"=");return 0<=h&&0<=(h=a.indexOf('"',h))?a.substring(h+1,a.indexOf('"',h+1)):null};a.User={viewUpdatedCallback:null};a.View={count:0,applets:{},sets:{}};(function(b){b.resetView=function(b,c){debugger;if(c){if(c._viewSet){var d=a.View.applets[c._viewSet];for(b in d)b!=c&&a.View.resetView(b)}}else b&&(b._reset(),a.View.updateView(b))};b.updateView=function(e,d){if(null!=e._viewSet){d||(d={});d.chemID||(e._searchQuery=null);d.data||(d.data="N/A");d.type=e._viewType; +if(null==(e._currentView=b.__findView(e._viewSet,d)))e._currentView=b.__createViewSet(e._viewSet,d.chemID,d.viewID||d.chemID);e._currentView[d.type].data=d.data;e._currentView[d.type].smiles=e._getSmiles();a.User.viewUpdatedCallback&&a.User.viewUpdatedCallback(e,"updateView");b.__setView(e._currentView,e,!1)}};b.updateFromSync=function(e,d){e._updateMsg=d;var f=a._getAttr(d,"sourceID")||a._getAttr(d,"file");if(f){var g=b.__findView(e._viewSet,{viewID:f});if(null==g)return a.updateView(e,d);g!=e._currentView&& +b.__setView(g,e,!0);var k=(f=a._getAttr(d,"atoms"))&&0<=d.indexOf("selectionhalos ON")?eval("["+f+"]"):[];setTimeout(function(){e._currentView==g&&b.updateAtomPick(e,k)},10);a.User.viewUpdatedCallback&&a.User.viewUpdatedCallback(e,"updateFromSync")}};b.updateAtomPick=function(b,c){var d=b._currentView;if(null!=d){for(var f in d)"info"!=f&&d[f].applet!=b&&d[f].applet._updateAtomPick(c);a.User.viewUpdatedCallback&&a.User.viewUpdatedCallback(b,"updateAtomPick")}};b.dumpViews=function(a){var d=b.sets[a]; +if(d){var f="View set "+a+":\n";a=b.applets[a];for(var g in a)f+="\napplet "+a[g]._id+" currentView="+(a[g]._currentView?a[g]._currentView.info.viewID:null);for(g=d.length;0<=--g;){a=d[g];var f=f+("\n\nview="+g+" viewID="+a.info.viewID+" chemID="+a.info.chemID+"\n"),k,j;for(j in a)"info"!=j&&(f+="\nview="+g+" type="+j+" applet="+((k=a[j]).applet?k.applet._id:null)+" SMILES="+k.smiles+"\n atomMap="+JSON.stringify(k.atomMap)+"\n data=\n"+k.data+"\n")}return f}};b.__init=function(a){var d=a._viewSet, +f=b.applets;f[d]||(f[d]={});f[d][a._viewType]=a};b.__findView=function(a,d){var f=b.sets[a];null==f&&(f=b.sets[a]=[]);for(var g=f.length;0<=--g;){var k=f[g];if(d.viewID){if(k.info.viewID==d.viewID)return k}else{if(null!=d.chemID&&d.chemID==k.info.chemID)return k;for(var j in k)if("info"!=j&&(null!=d.data&&null!=k[j].data?d.data==k[j].data:d.type==j))return k}}return null};b.__createViewSet=function(e,d,f){b.count++;d={info:{chemID:d,viewID:f||"model_"+b.count}};for(var g in a._applets)f=a._applets[g], +f._viewSet==e&&(d[f._viewType]={applet:f,data:null});b.sets[e].push(d);return d};b.__setView=function(a,b,c){for(var d in a)if("info"!=d){var f=a[d],g=f.applet,k=c||null!=g&&""==g._molData;if(!(null==g||g==b&&!k)){var j=null==f.data,l=null!=g._currentView;g._currentView=a;if(!l||!(a[d].data==f.data&&!j&!k))if(g._loadModelFromView(a),j)break}}}})(a.View);a.Cache={fileCache:{}};a.Cache.get=function(b){return a.Cache.fileCache[b]};a.Cache.put=function(b,e){a.Cache.fileCache[b]=e};a.Cache.setDragDrop= +function(b,e){a.$appEvent(b,e,"dragover",function(a){a=a.originalEvent;a.stopPropagation();a.preventDefault();a.dataTransfer.dropEffect="copy"});a.$appEvent(b,e,"drop",function(d){var f=d.originalEvent;f.stopPropagation();f.preventDefault();var g=f.dataTransfer.files[0];if(null==g)try{g=""+f.dataTransfer.getData("text"),(0==g.indexOf("file:/")||0==g.indexOf("http:/")||0==g.indexOf("https:/"))&&b._scriptLoad(g)}catch(k){}else f=new FileReader,f.onloadend=function(f){if(f.target.readyState==FileReader.DONE){var k= +"cache://DROP_"+g.name;f=Clazz.newByteArray(-1,f.target.result);if("console_input"==e)k=String.instantialize(f),a.$(b,e).val(0>k.indexOf("\x00")?k:f.length+" bytes");else{k.endsWith(".spt")||b._appletPanel.cacheFileByName("cache://DROP_*",!1);"JSV"==b._viewType||k.endsWith(".jdx")?a.Cache.put(k,f):b._appletPanel.cachePut(k,f);f=a._jsGetXY(b._canvas,d);var j=[null];f&&(!b._appletPanel.setStatusDragDropped||b._appletPanel.setStatusDragDropped(0,f[0],f[1],k,j))&&b._appletPanel.openFileAsyncSpecialType(k, +1,j[0])}}},f.readAsArrayBuffer(g)})}})(Jmol,jQuery);Jmol._debugCode=document&&document.location&&0<=document.location.href.indexOf("j2sdebugcode"); +(function(a){a._isAsync=!1;a._asyncCallbacks={};a._coreFiles=[];var j=!1,g=[],d=[],b=0,f=[],k=[],l=function(c){arguments.length||(c=!0);delete b;for(var f;0k.join("").indexOf(d[b])&&k.push(c+"/core/core"+d[b]+".z.js");for(b=0;b"));d+=a._getWrapper(this,!1);c.addSelectionOptions&&(d+=a._getGrabberOptions(this)); +a._debugAlert&&!a._document&&alert(d);this._code=a._documentWrite(d)};c._newCanvas=function(a){this._is2D?this._createCanvas2d(a):this._GLmol.create()};c._getHtml5Canvas=function(){return this._canvas};c._getWidth=function(){return this._canvas.width};c._getHeight=function(){return this._canvas.height};c._getContentLayer=function(){return a.$(this,"contentLayer")[0]};c._repaintNow=function(){a.repaint(this,!1)};c._createCanvas2d=function(){var b=a.$(this,"appletdiv");try{b[0].removeChild(this._canvas), +this._canvas.frontLayer&&b[0].removeChild(this._canvas.frontLayer),this._canvas.rearLayer&&b[0].removeChild(this._canvas.rearLayer),this._canvas.contentLayer&&b[0].removeChild(this._canvas.contentLayer),a._jsUnsetMouse(this._mouseInterface)}catch(c){}var d=Math.round(b.width()),e=Math.round(b.height()),f=document.createElement("canvas");f.tabIndex=1;f.outline="none";f.applet=this;this._canvas=f;f.style.width="100%";f.style.height="100%";f.width=d;f.height=e;f.id=this._id+"_canvas2d";b.append(f);a._$(f.id).css({"z-index":a._getZ(this, +"main")});if(this._isLayered){var g=document.createElement("div");f.contentLayer=g;g.id=this._id+"_contentLayer";b.append(g);a._$(g.id).css({zIndex:a._getZ(this,"image"),position:"absolute",left:"0px",top:"0px",width:(this._isSwing?d:0)+"px",height:(this._isSwing?e:0)+"px",overflow:"hidden"});this._isSwing?(b=document.createElement("div"),b.id=this._id+"_swingdiv",a._$(this._id+"_appletinfotablediv").append(b),a._$(b.id).css({zIndex:a._getZ(this,"rear"),position:"absolute",left:"0px",top:"0px",width:d+ +"px",height:e+"px",overflow:"hidden"}),this._mouseInterface=f.contentLayer,f.contentLayer.applet=this):this._mouseInterface=this._getLayer("front",b,d,e,!1)}else this._mouseInterface=f;a._jsSetMouse(this._mouseInterface)};c._getLayer=function(b,c,d,e,f){var g=document.createElement("canvas");this._canvas[b+"Layer"]=g;g.style.width="100%";g.style.height="100%";g.id=this._id+"_"+b+"Layer";g.width=d;g.height=e;c.append(g);g.applet=this;a._$(g.id).css({background:f?"rgb(0,0,0,1)":"rgb(0,0,0,0.001)","z-index":a._getZ(this, +b),position:"absolute",left:"0px",top:"0px",overflow:"hidden"});return g};c._setupJS=function(){window["j2s.lib"]={base:this._j2sPath+"/",alias:".",console:this._console,monitorZIndex:a._getZ(this,"monitorZIndex")};0==d.length&&a._addExec([this,m,null,"loadClazz"]);this._addCoreFiles();a._addExec([this,this.__startAppletJS,null,"start applet"]);this._isSigned=!0;this._ready=!1;this._applet=null;this._canScript=function(){return!0};this._savedOrientations=[];b&&clearTimeout(b);b=setTimeout(l,100)}; +c.__startAppletJS=function(b){0==a._version.indexOf("$Date: ")&&(a._version=(a._version.substring(7)+" -").split(" -")[0]+" (JSmol/j2s)");var c=Clazz._4Name("java.util.Hashtable").newInstance();a._setAppletParams(b._availableParams,c,b.__Info,Boolean.TRUE);c.put("appletReadyCallback","Jmol._readyCallback");c.put("applet",Boolean.TRUE);c.put("name",b._id);c.put("syncId",a._syncId);a._isAsync&&c.put("async",Boolean.TRUE);b._color&&c.put("bgcolor",b._color);b._startupScript&&c.put("script",b._startupScript); +a._syncedApplets.length&&c.put("synccallback","Jmol._mySyncCallback");c.put("signedApplet","true");c.put("platform",b._platform);b._is2D&&c.put("display",b._id+"_canvas2d");c.put("documentBase",document.location.href);var d=b._j2sPath+"/";if(0>d.indexOf("://")){var e=document.location.href.split("#")[0].split("?")[0].split("/");0==d.indexOf("/")?e=[e[0],d.substring(1)]:e[e.length-1]=d;d=e.join("/")}b._j2sFullPath=d.substring(0,d.length-1);c.put("codePath",d);a._registerApplet(b._id,b);try{b._newApplet(c)}catch(f){b= +(a._isAsync?"normal async abort? from ":"")+f;a._debugCode&&alert(b);System.out.println(b);return}b._jsSetScreenDimensions();l()};c._restoreState||(c._restoreState=function(){});c._jsSetScreenDimensions=function(){if(this._appletPanel){var b=a._getElement(this,this._is2D?"canvas2d":"canvas");this._appletPanel.setScreenDimension(b.width,b.height)}};c._show=function(b){a.$setVisible(a.$(this,"appletdiv"),b);b&&a.repaint(this,!0)};c._canScript=function(){return!0};c.equals=function(a){return this==a}; +c.clone=function(){return this};c.hashCode=function(){return parseInt(this._uniqueId)};c._processGesture=function(a){return this._appletPanel.processTwoPointGesture(a)};c._processEvent=function(a,b){this._appletPanel.processMouseEvent(a,b[0],b[1],b[2],System.currentTimeMillis())};c._processKeyEvent=function(a,b,c){this._appletPanel.processKeyEvent({getID:function(){return a},getKeyCode:function(){return c.keyCode},getModifiers:function(){return b[2]},consume:function(){}})};c._resize=function(){var b= +"__resizeTimeout_"+this._id;a[b]&&clearTimeout(a[b]);var c=this;a[b]=setTimeout(function(){a.repaint(c,!0);a[b]=null},100)};return c};a.repaint=function(b,c){if(b&&b._appletPanel){var d=a.$(b,"appletdiv"),f=Math.round(d.width()),d=Math.round(d.height());if(b._is2D&&(b._canvas.width!=f||b._canvas.height!=d))b._newCanvas(!0),b._appletPanel.setDisplay(b._canvas);b._appletPanel.setScreenDimension(f,d);f=function(){b._appletPanel.paint?b._appletPanel.paint(null):b._appletPanel.update(null)};c?requestAnimationFrame(f): +f()}};a.loadImage=function(b,c,d,f,g,k){var j="echo_"+c+d+(f?"_"+f.length:""),l=a.getHiddenCanvas(b.vwr.html5Applet,j,0,0,!1,!0);if(null==l){if(null==k){k=new Image;if(null==f)return k.onload=function(){a.loadImage(b,c,d,null,g,k)},k.src=d,null;System.out.println("Jsmol.js Jmol.loadImage using data URI for "+j);k.src="string"==typeof f?f:"data:"+JU.Rdr.guessMimeTypeForBytes(f)+";base64,"+JU.Base64.getBase64(f)}var m=k.width,u=k.height;"webgl"==c&&(m/=2,u/=2);l=a.getHiddenCanvas(b.vwr.html5Applet, +j,m,u,!0,!1);l.imageWidth=m;l.imageHeight=u;l.id=j;l.image=k;a.setCanvasImage(l,m,u)}else System.out.println("Jsmol.js Jmol.loadImage reading cached image for "+j);return null==f?g(l,d):l};a._canvasCache={};a.getHiddenCanvas=function(b,c,d,f,g,k){c=b._id+"_"+c;b=a._canvasCache[c];if(k)return b;if(g||!b||b.width!=d||b.height!=f)b=document.createElement("canvas"),b.width=b.style.width=d,b.height=b.style.height=f,b.id=c,a._canvasCache[c]=b;return b};a.setCanvasImage=function(a,b,c){a.buf32=null;a.width= +b;a.height=c;a.getContext("2d").drawImage(a.image,0,0,a.image.width,a.image.height,0,0,b,c)};a.applyFunc=function(a,b){return a(b)}})(Jmol); +(function(a,j){a._Applet=function(b,d,g){window[b]=this;this._jmolType="Jmol._Applet"+(d.isSigned?" (signed)":"");this._viewType="Jmol";this._isJava=!0;this._syncKeyword="Select:";this._availableParams=";progressbar;progresscolor;boxbgcolor;boxfgcolor;allowjavascript;boxmessage;\t\t\t;animframecallback;appletreadycallback;atommovedcallback;audiocallback;\t\t\t;clickcallback;dragdropcallback;echocallback;errorcallback;evalcallback;hovercallback;\t\t\t;imagecallback;loadstructcallback;measurecallback;messagecallback;minimizationcallback;modelkitcallback;pickcallback;\t\t\t;resizecallback;scriptcallback;selectcallback;servicecallback;structuremodifiedcallback;synccallback;\t\t\t;statusform;statustext;statustextarea;usecommandthread;syncid;appletid;startupscript;language;menufile;";if(g)return this; +this._isSigned=d.isSigned;this._readyFunction=d.readyFunction;this._ready=!1;this._isJava=!0;this._isInfoVisible=!1;this._applet=null;this._memoryLimit=d.memoryLimit||512;this._canScript=function(){return!0};this._savedOrientations=[];this._initialize=function(b,g){var c=!1;a._jarFile&&(g=a._jarFile);if(this._jarFile){var e=this._jarFile;0<=e.indexOf("/")?(alert("This web page URL is requesting that the applet used be "+e+". This is a possible security risk, particularly if the applet is signed, because signed applets can read and write files on your local machine or network."), +"yes"==prompt("Do you want to use applet "+e+"? ","yes or no")?(b=e.substring(0,e.lastIndexOf("/")),g=e.substring(e.lastIndexOf("/")+1)):c=!0):g=e;this_isSigned=d.isSigned=0<=g.indexOf("Signed")}this._jarPath=d.jarPath=b||".";this._jarFile=d.jarFile="string"==typeof g?g:(g?"JmolAppletSigned":"JmolApplet")+"0.jar";c&&alert("The web page URL was ignored. Continuing using "+this._jarFile+' in directory "'+this._jarPath+'"');void 0==a.controls||a.controls._onloadResetForms()};this._create(b,d);return this}; +var g=a._Applet,d=a._Applet.prototype;g._get=function(b,d,k){k||(k=!1);d||(d={});a._addDefaultInfo(d,{color:"#FFFFFF",width:300,height:300,addSelectionOptions:!1,serverURL:"http://your.server.here/jsmol.php",defaultModel:"",script:null,src:null,readyFunction:null,use:"HTML5",jarPath:"java",jarFile:"JmolApplet0.jar",isSigned:!1,j2sPath:"j2s",coverImage:null,makeLiveImage:null,coverTitle:"",coverCommand:"",deferApplet:!1,deferUncover:!1,disableJ2SLoadMonitor:!1,disableInitialConsole:!0,debug:!1});a._debugAlert= +d.debug;d.serverURL&&(a._serverUrl=d.serverURL);for(var j=!1,m=null,c=d.use.toUpperCase().split("#")[0].split(" "),e=0;ek.codePath.indexOf("://")){var e=j.location.href.split("#")[0].split("?")[0].split("/");e[e.length-1]=k.codePath;k.codePath=e.join("/")}k.archive=l;k.mayscript="true";k.java_arguments="-Xmx"+Math.round(d.memoryLimit||b._memoryLimit)+"m";k.permissions=b._isSigned?"all-permissions":"sandbox";k.documentLocation=j.location.href;k.documentBase=j.location.href.split("#")[0].split("?")[0];k.jarPath=d.jarPath;a._syncedApplets.length&&(k.synccallback="Jmol._mySyncCallback"); +b._startupScript&&(k.script=b._startupScript);var e="\n",h;for(h in k)k[h]&&(e+=" \n");e=a.featureDetection.useIEObject||a.featureDetection.useHtml4Object?"":" type='application/x-java-applet'>")+e+"

\n"+ +g._noJavaMsg+"

\n":"\n"+e+"
\n"+g._noJavaMsg+"
\n";b._deferApplet&&(b._javaCode=e,e="");e=a._getWrapper(b,!0)+e+a._getWrapper(b,!1)+(d.addSelectionOptions?a._getGrabberOptions(b):"");a._debugAlert&&alert(e);b._code=a._documentWrite(e)};d._newApplet=function(a){this._is2D||a.put("script",(a.get("script")|| +"")+";set multipleBondSpacing 0.35;");this._viewerOptions=a;return new J.appletjs.Jmol(a)};d._addCoreFiles=function(){a._addCoreFile("jmol"+(a._debugCode?"debug":""),this._j2sPath,this.__Info.preloadCore);a._debugCode&&a._addCoreFile("jmoldebug",this._j2sPath,this.__Info.preloadCore);this._is2D||a._addExec([this,null,"J.export.JSExporter","load JSExporter"]);a._debugCode&&a._addExec([this,null,"J.appletjs.Jmol","load Jmol"])};d._create=function(b,d){a._setObject(this,b,d);var k={syncId:a._syncId, +progressbar:"true",progresscolor:"blue",boxbgcolor:this._color||"black",boxfgcolor:"white",boxmessage:"Downloading JmolApplet ...",script:this._color?'background "'+this._color+'"':"",code:"JmolApplet.class"};a._setAppletParams(this._availableParams,k,d);var j;d.inlineModel?(j=d.inlineModel,j=j.replace(/\r|\n|\r\n/g,0<=j.indexOf("|")?"\\/n":"|").replace(/'/g,"'"),a._debugAlert&&alert("inline model:\n"+j)):j="";k.loadInline=j;k.appletReadyCallback="Jmol._readyCallback";a._syncedApplets.length&& +(k.synccallback="Jmol._mySyncCallback");k.java_arguments="-Xmx"+Math.round(d.memoryLimit||this._memoryLimit)+"m";this._initialize(d.jarPath,d.jarFile);g._createApplet(this,d,k)};d._restoreState=function(b,d){System.out.println("\n\nasynchronous restore state for "+b+" "+d);var g=this,j=g._applet&&g._applet.viewer;switch(d){case "setOptions":return function(){g.__startAppletJS(g)};case "render":return function(){setTimeout(function(){j.refresh(2)},10)};default:switch(b){case "J.shape.Balls":case "J.shape.Sticks":case "J.shape.Frank":return null}if(j&& +j.isScriptExecuting&&j.isScriptExecuting()){if(a._asyncCallbacks[b])return System.out.println("...ignored"),1;var m=j.getEvalContextAndHoldQueue(j.eval),c=m.pc-1;m.asyncID=b;a._asyncCallbacks[b]=function(a){m.pc=a;System.out.println("sc.asyncID="+m.asyncID+" sc.pc = "+m.pc);j.eval.resumeEval(m)};j.eval.pc=j.eval.pcEnd;System.out.println("setting resume for pc="+m.pc+" "+b+" to "+a._asyncCallbacks[b]+"//");return function(){System.out.println("resuming "+b+" "+a._asyncCallbacks[b]);a._asyncCallbacks[b](c)}}System.out.println(b+ +"?????????????????????"+d);return function(){setTimeout(function(){j.refresh(2)},10)}}};d._notifyAudioEnded=function(a){this._applet.notifyAudioEnded(a)};d._readyCallback=function(b,d,g){if(g){a._setDestroy(this);this._ready=!0;b=this._readyScript;this._defaultModel?a._search(this,this._defaultModel,b?";"+b:""):b?this._script(b):this._src&&this._script('load "'+this._src+'"');this._showInfo(!0);this._showInfo(!1);a.Cache.setDragDrop(this,"appletdiv");this._readyFunction&&this._readyFunction(this); +a._setReady(this);if((b=this._2dapplet)&&b._isEmbedded&&b._ready&&b.__Info.visible)this._show2d(!0),this._show2d(!1),this._show2d(!0);a._hideLoadingSpinner(this)}};d._showInfo=function(b){b&&this._2dapplet&&this._2dapplet._show(!1);a.$html(a.$(this,"infoheaderspan"),this._infoHeader);this._info&&a.$html(a.$(this,"infodiv"),this._info);if(!this._isInfoVisible!=!b){this._isInfoVisible=b;if(this._isJava){var d=b?2:"100%";a.$setSize(a.$(this,"appletdiv"),d,d)}a.$setVisible(a.$(this,"infotablediv"),b); +a.$setVisible(a.$(this,"infoheaderdiv"),b);this._show(!b)}};d._show2d=function(a){this._2dapplet._show2d(a);this._2dapplet._isEmbedded&&(this._showInfo(!1),this._show(!a),this._2dapplet.__showContainer(!0,!0))};d._getSpinner=function(){return this.__Info.appletLoadingImage||this._j2sPath+"/img/JSmol_spinner.gif"};d._getAtomCorrelation=function(a,d){var g=this._evaluate("{*}.count");if(0!=g){this._loadMolData(a,"atommap = compare({1.1} {2.1} 'MAP' "+(d?"":"'H'")+"); zap 2.1",!0);for(var j=this._evaluate("atommap"), +m=[],c=[],e=0;earguments.length&&(d=1);var g=this._savedOrientations[a];return!g||""==g?g.replace(/1\.0/,d):this._scriptWait(g)};d._resizeApplet=function(b){function d(b, +g){var c=""+b;return 0==c.length?g?"":a._allowedJmolSize[2]:c.indexOf("%")==c.length-1?c:1>=(b=parseFloat(b))&&0a._allowedJmolSize[1]?a._allowedJmolSize[1]:b)+(g?g:"")}var g;"object"==typeof b&&null!=b?(g=b[0]||b.width,b=b[1]||b.height):g=b;g=[d(g,"px"),d(b,"px")];b=a._getElement(this,"appletinfotablediv");b.style.width=g[0];b.style.height=g[1];this._containerWidth=g[0];this._containerHeight= +g[1];this._is2D&&a.repaint(this,!0)};d._search=function(b,d){a._search(this,b,d)};d._searchDatabase=function(b,d,g){if(this._2dapplet&&this._2dapplet._isEmbedded&&!a.$(this,"appletdiv:visible")[0])return this._2dapplet._searchDatabase(b,d,g);this._showInfo(!1);0<=b.indexOf("?")?a._getInfoFromDatabase(this,d,b.split("?")[0]):(g||(g=a._getScriptForDatabase(d)),b=d+b,this._currentView=null,this._searchQuery=b,this._loadFile(b,g,b))};d._loadFile=function(b,d,g){this._showInfo(!1);d||(d="");this._thisJmolModel= +""+Math.random();this._fileName=b;if(!this._scriptLoad(b,d)){var j=this;a._loadFileData(this,b,function(a){j.__loadModel(a,d,g)},function(){j.__loadModel(null)})}};d._scriptLoad=function(a,d){d||(d="");var g=this._isJava||!this._noscript;g&&this._script("zap;set echo middle center;echo Retrieving data...");if(!this._isSigned||null!=this._viewSet)return!1;g?this._script('load async "'+a+'";'+d):this._applet.openFile(a);this._checkDeferred("");return!0};d.__loadModel=function(b,d,g){null!=b&&(null!= +this._viewSet&&(d||(d=""),d+=";if ({*}.molecule.max > 1 || {*}.modelindex.max > 0){ delete molecule > 1 or modelindex > 0;x = getProperty('extractModel',{*});load inline @x};"),!d&&this._noscript?this._applet.loadInlineString(b,"",!1):this._loadMolData(b,d,!1),null!=this._viewSet&&a.View.updateView(this,{chemID:g,data:b}))};d._loadMolData=function(a,d,g){d||(d="");g=g?"append":"model";this._applet.scriptWait('load DATA "'+g+'"'+a+'\nEND "'+g+'" ;'+d)};d._loadModelFromView=function(b){this._currentView= +b;var d=b.Jmol;null!=d.data?this.__loadModel(d.data,null,b.info.chemID):null!=b.info.chemID?a._searchMol(this,b.info.chemID,null,!1):(d=b.JME)&&d.applet._show2d(!1,this)};d._reset=function(){this._scriptWait("zap",!0)};d._updateView=function(){null!=this._viewSet&&this._applet&&(chemID=""+this._getPropertyAsJavaObject("variableInfo","script('show chemical inchiKey')"),chemID=36>chemID.length?null:chemID.substring(36).split("\n")[0],a.View.updateView(this,{chemID:chemID,data:""+this._getPropertyAsJavaObject("evaluate", +"extractModel","{visible}")}))};d._atomPickedCallback=function(b,d){if(!(0>d)){var g=[d+1];a.View.updateAtomPick(this,g);this._updateAtomPick(g)}};d._updateAtomPick=function(a){this._script(0==a.length?"select none":"select on visible and (@"+a.join(",@")+")")};d._isDeferred=function(){return!this._canvas&&this._cover&&this._isCovered&&this._deferApplet};d._checkDeferred=function(a){return this._isDeferred()?(this._coverScript=a,this._cover(!1),!0):!1};d._cover=function(b){b||!this._deferApplet?this._displayCoverImage(b): +(b=this._coverScript?this._coverScript:"",this._coverScript="",this._deferUncover&&(b+=";refresh;javascript "+this._id+"._displayCoverImage(false)"),this._script(b,!0),this._deferUncover&&"activate 3D model"==this._coverTitle&&(a._getElement(this,"coverimage").title="3D model is loading..."),this._isJava||this._newCanvas(!1),this._defaultModel&&a._search(this,this._defaultModel),this._showInfo(!1),this._deferUncover||this._displayCoverImage(!1),this._isJava&&a.$html(a.$(this,"appletdiv"),this._javaCode), +this._init&&this._init())};d._displayCoverImage=function(b){this._coverImage&&this._isCovered!=b&&(this._isCovered=b,a._getElement(this,"coverdiv").style.display=b?"block":"none")};d._getSmiles=function(){return this._evaluate("{visible}.find('SMILES')")};d._getMol=function(){return this._evaluate("getProperty('ExtractModel',{visible})")};d._getMol2D=function(){return this._evaluate("script('select visible;show chemical sdf')")};a.jmolSmiles=function(a){return a._getSmiles()}})(Jmol,document); +(function(a){var j=a.controls={_hasResetForms:!1,_scripts:[""],_checkboxMasters:{},_checkboxItems:{},_actions:{},_buttonCount:0,_checkboxCount:0,_radioGroupCount:0,_radioCount:0,_linkCount:0,_cmdCount:0,_menuCount:0,_previousOnloadHandler:null,_control:null,_element:null,_appletCssClass:null,_appletCssText:"",_buttonCssClass:null,_buttonCssText:"",_checkboxCssClass:null,_checkboxCssText:"",_radioCssClass:null,_radioCssText:"",_linkCssClass:null,_linkCssText:"",_menuCssClass:null,_menuCssText:""}; +j._addScript=function(a,d){var b=j._scripts.length;j._scripts[b]=[a,d];return b};j._getIdForControl=function(a,d){return"string"==typeof a?a:!d||!a._canScript||a._canScript(d)?a._id:null};j._radio=function(a,d,b,f,k,l,m,c){var e=j._getIdForControl(a,d);if(null==e)return null;++j._radioCount;void 0!=l&&null!=l||(l="jmolRadioGroup"+(j._radioGroupCount-1));if(!d)return"";void 0!=m&&null!=m||(m="jmolRadio"+(j._radioCount-1));void 0!=b&&null!=b||(b=d.substring(0,32));k||(k="");a="";j._actions[m]= +j._addScript(e,d);d='";0<=b.toLowerCase().indexOf("")&&(d+=a,a="");return d+('"+a+k)};j._scriptExecute=function(g,d){var b=a._applets[d[0]],f=d[1];if("object"==typeof f)f[0](g,f, +b);else"function"==typeof f?f(b):a.script(b,f)};j.__checkScript=function(a,d){var b=0<=d.value.indexOf("JSCONSOLE ")||""===a._scriptCheck(d.value);d.style.color=b?"black":"red";return b};j.__getCmd=function(a,d){if(d._cmds&&d._cmds.length){var b=d._cmds[d._cmdpt=(d._cmdpt+d._cmds.length+a)%d._cmds.length];setTimeout(function(){d.value=b},10);d._cmdadd=1;d._cmddir=a}};j._commandKeyPress=function(g,d,b){g=13==g?13:window.event?window.event.keyCode:g?g.keyCode||g.which:0;var f=document.getElementById(d), +k=a._applets[b];switch(g){case 13:return d=f.value,j._scriptExecute(f,[b,d]),f._cmds||(f._cmds=[],f._cmddir=0,f._cmdpt=-1,f._cmdadd=0),d&&0==f._cmdadd?(++f._cmdpt,f._cmds.splice(f._cmdpt,0,d),f._cmdadd=0,f._cmddir=0):f._cmdadd=0,f.value="",!1;case 27:return setTimeout(function(){f.value=""},20),!1;case 38:j.__getCmd(-1,f);break;case 40:j.__getCmd(1,f);break;default:f._cmdadd=0}setTimeout(function(){j.__checkScript(k,f)},20);return!0};j._click=function(a,d){j._element=a;1==arguments.length&&(d=j._actions[a.id]); +j._scriptExecute(a,j._scripts[d])};j._menuSelected=function(a){var d=a.value;if(void 0!=d)j._scriptExecute(a,j._scripts[d]);else{d=a.length;if("number"==typeof d)for(var b=0;b";a._debugAlert&&alert(d);return a._documentWrite(d)};j._getCheckbox=function(g,d,b,f,k,l,m){var c=j._getIdForControl(g,d);null!=c&&(c=j._getIdForControl(g,b));if(null==c)return"";void 0!=l&&null!=l||(l="jmolCheckbox"+j._checkboxCount);++j._checkboxCount;if(void 0==d||null==d||void 0==b||null==b)alert("jmolCheckbox requires two scripts");else if(void 0==f||null==f)alert("jmolCheckbox requires a label");else return j._actions[l]=[j._addScript(c,d),j._addScript(c,b)],g="", +k='",0<=f.toLowerCase().indexOf("")&&(k+=g,g=""),k+='"+g,a._debugAlert&&alert(k),a._documentWrite(k)};j._getCommandInput=function(g,d,b,f,k,l){g=j._getIdForControl(g,"x");if(null==g)return""; +void 0!=f&&null!=f||(f="jmolCmd"+j._cmdCount);void 0!=d&&null!=d||(d="Execute");void 0!=b&&!isNaN(b)||(b=60);void 0!=l||(l="help");++j._cmdCount;d='";a._debugAlert&&alert(d);return a._documentWrite(d)}; +j._getLink=function(g,d,b,f,k){g=j._getIdForControl(g,d);if(null==g)return"";void 0!=f&&null!=f||(f="jmolLink"+j._linkCount);void 0!=b&&null!=b||(b=d.substring(0,32));++j._linkCount;d=j._addScript(g,d);b='"+b+"";a._debugAlert&&alert(b);return a._documentWrite(b)}; +j._getMenu=function(g,d,b,f,k){var l=j._getIdForControl(g,null);void 0!=f&&null!=f||(f="jmolMenu"+j._menuCount);++j._menuCount;l=typeof d;if(null!=l&&"object"==l&&d.length){var m=d.length;"number"!=typeof b||1==b?b=null:0>b&&(b=m);b='";a._debugAlert&&alert(b);return a._documentWrite(b)}};j._getRadio=function(g,d,b,f,k,l,m,c){0==j._radioGroupCount&&++j._radioGroupCount;l||(l="jmolRadioGroup"+(j._radioGroupCount-1));g=j._radio(g,d,b,f,k,l,m?m:l+"_"+j._radioCount,c?c:0);if(null== +g)return"";a._debugAlert&&alert(g);return a._documentWrite(g)};j._getRadioGroup=function(g,d,b,f,k,l){var m=typeof d;if("object"!=m||null==m||!d.length)alert("invalid arrayOfRadioButtons");else{void 0!=b&&null!=b||(b="  ");var c=d.length;++j._radioGroupCount;f||(f="jmolRadioGroup"+(j._radioGroupCount-1));for(var e="",h=0;h";a._debugAlert&&alert(e);return a._documentWrite(e)}}})(Jmol); +(function(a){var j=function(a){a="&"+a+"=";return decodeURI(("&"+document.location.search.substring(1)+a).split(a)[1].split("&")[0])};a._j2sPath=j("_J2S");a._jarFile=j("_JAR");a._use=j("_USE");a.getVersion=function(){return a._jmolInfo.version};a.getApplet=function(g,d,b){return a._Applet._get(g,d,b)};a.getJMEApplet=function(g,d,b,f){return a._JMEApplet._get(g,d,b,f)};a.getJSVApplet=function(g,d,b){return a._JSVApplet._get(g,d,b)};a.setCallback=function(a,d,b){a._setCallback(d,b)};a.loadFile=function(a, +d,b){a._loadFile(d,b)};a.script=function(a,d){a._checkDeferred(d)||a._script(d)};a.scriptCheck=function(a,d){return a&&a._scriptCheck&&a._ready&&a._scriptCheck(d)};a.scriptWait=function(a,d){return a._scriptWait(d)};a.scriptEcho=function(a,d){return a._scriptEcho(d)};a.scriptMessage=function(a,d){return a._scriptMessage(d)};a.scriptWaitOutput=function(a,d){return a._scriptWait(d)};a.scriptWaitAsArray=function(a,d){return a._scriptWaitAsArray(d)};a.search=function(a,d,b){a._search(d,b)};a.evaluateVar= +function(a,d){return a._evaluate(d)};a.evaluate=function(a,d){return a._evaluateDEPRECATED(d)};a.getAppletHtml=function(g,d){if(d){var b=a._document;a._document=null;g=a.getApplet(g,d);a._document=b}return g._code};a.getPropertyAsArray=function(a,d,b){return a._getPropertyAsArray(d,b)};a.getPropertyAsJavaObject=function(a,d,b){return a._getPropertyAsJavaObject(d,b)};a.getPropertyAsJSON=function(a,d,b){return a._getPropertyAsJSON(d,b)};a.getPropertyAsString=function(a,d,b){return a._getPropertyAsString(d, +b)};a.getStatus=function(a,d){return a._getStatus(d)};a.resizeApplet=function(a,d){return a._resizeApplet(d)};a.restoreOrientation=function(a,d){return a._restoreOrientation(d)};a.restoreOrientationDelayed=function(a,d,b){return a._restoreOrientationDelayed(d,b)};a.saveOrientation=function(a,d){return a._saveOrientation(d)};a.say=function(a){alert(a)};a.clearConsole=function(a){a._clearConsole()};a.getInfo=function(a){return a._info};a.setInfo=function(a,d,b){a._info=d;2")};a.jmolButton=function(g,d,b,f,j){return a.controls._getButton(g,d,b,f,j)};a.jmolCheckbox=function(g,d,b,f,j,l,m){return a.controls._getCheckbox(g,d,b,f,j,l,m)};a.jmolCommandInput=function(g,d,b,f,j,l){return a.controls._getCommandInput(g,d,b,f,j,l)};a.jmolHtml=function(g){return a._documentWrite(g)};a.jmolLink=function(g,d,b,f,j){return a.controls._getLink(g,d,b,f,j)}; +a.jmolMenu=function(g,d,b,f,j){return a.controls._getMenu(g,d,b,f,j)};a.jmolRadio=function(g,d,b,f,j,l,m,c){return a.controls._getRadio(g,d,b,f,j,l,m,c)};a.jmolRadioGroup=function(g,d,b,f,j,l){return a.controls._getRadioGroup(g,d,b,f,j,l)};a.setCheckboxGroup=function(g,d){a.controls._cbSetCheckboxGroup(g,d,arguments)};a.setDocument=function(g){a._document=g};a.setXHTML=function(g){a._isXHTML=!0;a._XhtmlElement=null;a._XhtmlAppendChild=!1;g&&(a._XhtmlElement=document.getElementById(g),a._XhtmlAppendChild= +!0)};a.setAppletCss=function(g,d){null!=g&&(a._appletCssClass=g);a._appletCssText=d?d+" ":g?'class="'+g+'" ':""};a.setButtonCss=function(g,d){null!=g&&(a.controls._buttonCssClass=g);a.controls._buttonCssText=d?d+" ":g?'class="'+g+'" ':""};a.setCheckboxCss=function(g,d){null!=g&&(a.controls._checkboxCssClass=g);a.controls._checkboxCssText=d?d+" ":g?'class="'+g+'" ':""};a.setRadioCss=function(g,d){null!=g&&(a.controls._radioCssClass=g);a.controls._radioCssText=d?d+" ":g?'class="'+g+'" ':""};a.setLinkCss= +function(g,d){null!=g&&(a.controls._linkCssClass=g);a.controls._linkCssText=d?d+" ":g?'class="'+g+'" ':""};a.setMenuCss=function(g,d){null!=g&&(a.controls._menuCssClass=g);a.controls._menuCssText=d?d+" ":g?'class="'+g+'" ':""};a.setAppletSync=function(g,d,b){a._syncedApplets=g;a._syncedCommands=d;a._syncedReady={};a._isJmolJSVSync=b};a.setGrabberOptions=function(g){a._grabberOptions=g};a.setAppletHtml=function(g,d){g._code&&(a.$html(d,g._code),g._init&&!g._deferApplet&&g._init())};a.coverApplet=function(a, +d){a._cover&&a._cover(d)};a.setFileCaching=function(g,d){g?g._cacheFiles=d:a.fileCache=d?{}:null};a.resetView=function(g,d){a.View.resetView(g,d)};a.updateView=function(a,d,b){a._updateView(d,b)};a.getChemicalInfo=function(g,d,b){d||(d="name");"string"!=typeof g&&(g=g._getSmiles());return a._getNCIInfo(g,d,b)};a.saveImage=function(g,d,b){d=(d||"png").toLowerCase();b||(b=g.id+"."+d.toLowerCase());0>b.indexOf(".")&&(b+="."+d);switch(g._viewType){case "Jmol":return g._script('write PNGJ "'+b+'"');case "JSV":if("PDF"== +d)return g._script("write PDF");break;case "JME":return g._script("print")}a._saveFile(b,g._canvas.toDataURL("image/png"))}})(Jmol); +LoadClazz=function(){TypeError.prototype.printStackTrace=ReferenceError.prototype.printStackTrace=function(){console.log(this)};window["j2s.clazzloaded"]||(window["j2s.clazzloaded"]=!1);window["j2s.clazzloaded"]||(window["j2s.clazzloaded"]=!0,window["j2s.object.native"]=!0,Clazz={_isQuiet:!1,_debugging:!1},function(a,j){try{a._debugging=0<=document.location.href.indexOf("j2sdebug")}catch(g){}var d=["j2s.clazzloaded","j2s.object.native"];a.setGlobal=function(a,b){d.push(a);window[a]=b};a.getGlobals= +function(){return d.sort().join("\n")};a.setConsoleDiv=function(a){window["j2s.lib"]&&(window["j2s.lib"].console=a)};var b=null;a._startProfiling=function(a){b=a&&self.JSON?{}:null};NullObject=function(){};a._supportsNativeObject=window["j2s.object.native"];a._supportsNativeObject?(a._O=function(){},a._O.__CLASS_NAME__="Object",a._O.getClass=function(){return a._O}):a._O=Object;a.Console={};a.dateToString=Date.prototype.toString;a._hashCode=0;var f=a._O.prototype;f.equals=function(a){return this== +a};f.hashCode=function(){return this._$hashcode||(this._$hashcode=++a._hashCode)};f.getClass=function(){return a.getClass(this)};f.clone=function(){return a.clone(this)};a.clone=function(a){var b=a instanceof Array?Array(a.length):new a.constructor,c;for(c in a)b[c]=a[c];return b};f.finalize=function(){};f.notify=function(){};f.notifyAll=function(){};f.wait=function(){};f.to$tring=Object.prototype.toString;f.toString=function(){return this.__CLASS_NAME__?"["+this.__CLASS_NAME__+" object]":this.to$tring.apply(this, +arguments)};a._extendedObjectMethods="equals hashCode getClass clone finalize notify notifyAll wait to$tring toString".split(" ");a.extendJO=function(b,c){c&&(b.__CLASS_NAME__=b.prototype.__CLASS_NAME__=c,a._setDeclared(c,b));if(a._supportsNativeObject)for(var d=0;de)return"["==d.charAt(0)?a.extractClassName(d):d.replace(/[^a-zA-Z0-9]/g,"");var e=e+8,f=d.indexOf("(",e);if(0>f)break;d=d.substring(e,f);if(0<=d.indexOf("Array"))return"Array";d= +d.replace(/^\s+/,"").replace(/\s+$/,"");return"anonymous"==d||""==d?"Function":d;case "object":if(b.__CLASS_NAME__)return b.__CLASS_NAME__;if(!b.constructor)break;if(!b.constructor.__CLASS_NAME__){if(b instanceof Number)return"Number";if(b instanceof Boolean)return"Boolean";if(b instanceof Array||b.BYTES_PER_ELEMENT)return"Array";d=b.toString();if("["==d.charAt(0))return a.extractClassName(d)}return a.getClassName(b.constructor,!0)}return"Object"};a.getClass=function(b){if(!b)return a._O;if("function"== +typeof b)return b;if(b instanceof a.CastedNull)b=b.clazzName;else switch(typeof b){case "string":return String;case "object":if(!b.__CLASS_NAME__)return b.constructor||a._O;b=b.__CLASS_NAME__;break;default:return b.constructor}return a.evalType(b,!0)};var k=function(b,c){for(var d=0;dd;){if(e.implementz)for(var f=e.implementz,g=0;gb.indexOf(".")&&(b="java.lang."+b);a.allClasses[b]=c};a._getDeclared=function(b){0>b.indexOf(".")&&(b="java.lang."+b);return a.allClasses[b]};a.instanceOf=function(b,c){if(null==b)return!1;"string"==typeof c&&(c=a._getDeclared(c));return!c?!1:c==String?"string"==typeof b:null!=b&&c&&(b==c||b instanceof c||0<=a.getInheritedLevel(a.getClassName(b),c))};a.exceptionOf=function(b,c){if(b.__CLASS_NAME__){if("string"== +typeof c){var d=a._getDeclared(c);if(!d)return!1;c=d}return a.instanceOf(b,c)}b.getMessage||(b.getMessage=function(){return""+b+(b.stack?"\n"+b.stack:"")});b.printStackTrace||(b.printStackTrace=function(){System.err.println(""+b)});if(c==Error){if(0>(""+b).indexOf("Error"))return!1;System.out.println(a.getStackTrace());return!0}return c==Exception||c==Throwable||c==NullPointerException&&e(b)};a.superCall=function(b,c,d,e){var f=null,g=-1,h=b[d];if(h)if(h.claxxOwner)h.claxxOwner!==c&&(f=h);else if(!h.stacks&& +(!h.lastClaxxRef||!h.lastClaxxRef.prototype[d]||!h.lastClaxxRef.prototype[d].stacks))f=h;else{var j=h.stacks;j||(j=h.lastClaxxRef.prototype[d].stacks);for(g=j.length;0<=--g;)if(c===j[g]){f=0a;d&&(a=-a);try{for(var e=0;e",b=b+(e+" "+(c.exName?(c.claxxOwner?c.claxxOwner.__CLASS_NAME__+".":"")+c.exName+f.replace(/function /,""):f)+"\n");if(c==c.caller){b+="\n";break}if(d)for(var g=c.arguments,h=0;hu.indexOf(E)&&(u+=E+"\n");b[E]||(b[E]=0);b[E]++}if(fx.lastParams==f.typeString&&fx.lastClaxxRef===e){if(f.hasCastedNull){e= +[];for(A=0;Ap[r]){sa=!1;break}sa&&(p[m.length]=F,B.push(p))}if(0==B.length)l=null;else{n=B[0];for(F=1;FT(l,d)&&l.push(d);k&&(k.claxxOwner===d?(j[k.funParams]=k,k.claxxOwner=null,k.funParams=null):k.claxxOwner||(j["\\unknown"]=k));f.exClazz=d;j[g]=f;return j};duplicatedMethods={};var S=function(b,c,d){var e=b.prototype[c];if(e&&(e.claxxOwner|| +e.claxxReference)===b)key=b.__CLASS_NAME__+"."+c+d,(b=duplicatedMethods[key])?(c="Warning! Duplicate method found for "+key,System.out.println(c),a.alert(c),duplicatedMethods[key]=b+1):duplicatedMethods[key]=1};a.showDuplicates=function(a){var b="",c=duplicatedMethods,d=0,e;for(e in c)1c.length)break;if(c.indexOf(g)==c.length-g.length){c=c.substring(0,c.length-g.length+1);break}}else c=a._Loader.getClasspathFor(d,!0);else(e=a.binaryFolders)&&e.length&&(c=e[0]);c||(c="j2s/");c=c.replace(/\\/g,"/");e=c.length;e=c.charAt(e-1);"/"!=e&&(c+="/");this.base?d=c+b:(e=d.lastIndexOf("."),d=-1==e||this.base? +c+b:c+d.substring(0,e).replace(/\./g,"/")+"/"+b)}c=null;try{if(0>d.indexOf(":/")){var k=document.location.href.split("?")[0].split("/");k[k.length-1]=d;d=k.join("/")}c=new java.net.URL(d)}catch(l){}k=null==c?null:j._getFileData(d.toString());if(!k||"error"==k||0==k.indexOf("[Exception"))return null;k=(new java.lang.String(k)).getBytes();k=new java.io.BufferedInputStream(new java.io.ByteArrayInputStream(k));k.url=c;return k},defineMethod:function(b,c,d){a.defineMethod(this,b,c,d)},defineStaticMethod:function(b, +c,d){a.defineMethod(this,b,c,d);this[b]=this.prototype[b]},makeConstructor:function(b,c){a.makeConstructor(this,b,c)}};var Y=[];a.pu$h=function(a){a||(a=self.c$);a&&Y.push(a)};a.p0p=function(){return Y.pop()};a.decorateAsClass=function(b,c,d,e,f,g){var h=null;c&&(h=c.__PKG_NAME__,h||(h=c.__CLASS_NAME__));var j=(h?h+".":"")+d;a._Loader._classPending[j]&&(delete a._Loader._classPending[j],a._Loader._classCountOK++,a._Loader._classCountPending--);a._Loader&&a._Loader._checkLoad&&System.out.println("decorating class "+ +h+"."+d);(h=a.unloadedClasses[j])&&(b=h);Z(b,c,d);g?a.inheritClass(b,e,g):e&&a.inheritClass(b,e);f&&a.implementOf(b,f);return b};var Z=function(b,c,d,e){var f;c?c.__PKG_NAME__?(f=c.__PKG_NAME__+"."+d,c[d]=b,c===java.lang&&a.setGlobal(d,b)):(f=c.__CLASS_NAME__+"."+d,c[d]=b):(f=d,a.setGlobal(d,b));a.extendJO(b,f);c=a.innerFunctionNames;for(d=0;da?Math.ceil(a):Math.floor(a)};a.floatToByte=a.floatToShort=a.floatToLong=a.floatToInt; +a.doubleToByte=a.doubleToShort=a.doubleToLong=a.doubleToInt=a.floatToInt;a.floatToChar=function(a){return String.fromCharCode(0>a?Math.ceil(a):Math.floor(a))};a.doubleToChar=a.floatToChar;var aa=function(a,b){a||(a=0);if("object"==typeof a)var c=a;else for(var c=Array(a),d=0;d>3;c._fake=!0;return c},P=function(a,b){a||(a=0);b||(b=this.length);if(this._fake){var c=new this.constructor(b-a);System.arraycopy(this,a,c,0,b-a);return c}return new this.constructor(this.buffer.slice(a* +this.BYTES_PER_ELEMENT,b*this.BYTES_PER_ELEMENT))};!0==(a.haveInt32=!!(self.Int32Array&&self.Int32Array!=Array))?Int32Array.prototype.sort||(Int32Array.prototype.sort=Array.prototype.sort):(Int32Array=function(a){return aa(a,32)},Int32Array.prototype.sort=Array.prototype.sort,Int32Array.prototype.toString=function(){return"[object Int32Array]"});Int32Array.prototype.slice||(Int32Array.prototype.slice=function(){return P.apply(this,arguments)});Int32Array.prototype.clone=function(){var a=this.slice(); +a.BYTES_PER_ELEMENT=4;return a};!0==(a.haveFloat64=!!(self.Float64Array&&self.Float64Array!=Array))?Float64Array.prototype.sort||(Float64Array.prototype.sort=Array.prototype.sort):(Float64Array=function(a){return aa(a,64)},Float64Array.prototype.sort=Array.prototype.sort,Float64Array.prototype.toString=function(){return"[object Float64Array]"});Float64Array.prototype.slice||(Float64Array.prototype.slice=function(){return P.apply(this,arguments)});Float64Array.prototype.clone=function(){return this.slice()}; +a.newArray=function(a,b,c,d){if(-1!=a||2==arguments.length)return G(arguments,0);a=b.slice(c,d);a.BYTES_PER_ELEMENT=b.BYTES_PER_ELEMENT;return a};var G=function(a,b){var c=a[0];"string"==typeof c&&(c=c.charCodeAt(0));var d=a.length-1,e=a[d];if(1c&&(c=e);switch(b){case 8:return d=new Int8Array(c),d.BYTES_PER_ELEMENT=1,d;case 32:return d=new Int32Array(c),d.BYTES_PER_ELEMENT=4,d;case 64:return d=new Float64Array(c), +d.BYTES_PER_ELEMENT=8,d;default:d=0>c?e:Array(c);d.BYTES_PER_ELEMENT=0;if(0d)for(;0<=--e;)c[d++]=a[b++];else{d+=e;for(b+=e;0<=--e;)a[--d]=a[--b]}},currentTimeMillis:function(){return(new Date).getTime()},gc:function(){},getProperties:function(){return System.props},getProperty:function(a,b){if(System.props)return System.props.getProperty(a,b);var c=System.$props[a];if("undefined"!=typeof c)return c;if(0=n.STATUS_LOAD_COMPLETE))h?window.setTimeout(f,25):f()}else{var k=b.getClasspathFor(c);j=e[k];if(!j)for(h=w.length;0<=--h;)if(w[h].path==k||w[h].name==c){j=!0;break}if(j){if(f&&(j=D(c)))if(j.onLoaded){if(f!=j.onLoaded){var l=j.onLoaded,m=f;j.onLoaded=function(){l();m()}}}else j.onLoaded=f}else{j=a.unloadedClasses[c]&&D(c)||new n;j.name=c;j.path=k;j.isPackage=k.lastIndexOf("package.js")== +k.length-10;fa(k,c,j);j.onLoaded=f;j.status=n.STATUS_KNOWN;c=!1;for(h=w.length;0<=--h;)if(w[h].status!=n.STATUS_LOAD_COMPLETE){c=!0;break}if(j.isPackage){for(h=w.length;0<=--h&&!w[h].isPackage;)w[h+1]=w[h];w[++h]=j}else c&&w.push(j);if(!c){var t=!1;f&&(t=K,K=!0);g&&(f=null);ba(d,j,!0);G(j,j.path,j.requiredBy,!1,f?function(){K=t;f()}:null)}}}};b.loadPackage=function(a,c){c||(c=null);window[a+".registered"]=!1;b.loadPackageClasspath(a,b.J2SLibBase||(b.J2SLibBase=b.getJ2SLibBase()||"j2s/"),!0,c)};b.jarClasspath= +function(a,b){b instanceof Array||(b=[b]);v(b);j._debugCore&&(a=a.replace(/\.z\./,"."));for(var c=b.length;0<=--c;)C["#"+b[c]]=a;C["$"+a]=b};b.registerPackages=function(c,d){for(var e=b.getClasspathFor(c+".*",!0),f=0;f>");h=e[d];e[d]=!0;ka(w,d);ga=!0;ha=!1;b._checkLoad&&System.out.println("\t"+d+(g?"\n -- required by "+g:"")+" ajax="+ga+" async="+ha);g=d;a._debugging&&(d=d.replace(/\.z\.js/,".js"));h||System.out.println("loadScript "+d);b.onScriptLoading(d);if(ga&&!ha){var l=j._getFileData(d);try{M(d,g,l,h)}catch(m){alert(m+" loading file "+d+" "+c.name+" "+a.getStackTrace())}k&&k()}else c= +{dataType:"script",async:!0,type:"GET",url:d,success:L(d,!1,k),error:L(d,!0,k)},f++,h?setTimeout(c.success,0):j.$ajax(c)},L=function(c,d,e){a.getStackTrace();return function(){m&&this.timeoutHandle&&(window.clearTimeout(this.timeoutHandle),this.timeoutHandle=null);0q;q++)for(;k=j[q](n.STATUS_CONTENT_LOADED);)1==q&&m===k&&(k.status=n.STATUS_LOAD_COMPLETE),updateNode(k),m=k;for(;!(O=[],!P(d,c)););for(q=0;2>q;q++)for(m=null;(k=j[q](n.STATUS_DECLARED))&&m!==k;)updateNode(m=k);m=[];for(q=0;2>q;q++)for(;k=j[q](n.STATUS_DECLARED);)m.push(k), +k.status=n.STATUS_LOAD_COMPLETE;if(m.length){for(q=0;q= +n.STATUS_DECLARED););if(0<=f){if(b._checkLoad){var g;System.out.println("cycle found loading "+c+" for "+a)}for(;fg;g++){j=h[g];for(f=j.length;0<=--f;)if(j[f].status== +n.STATUS_DECLARED&&P(j[f],c))return!0}d.length=e;return!1};b._classCountPending=0;b._classCountOK=0;b._classPending={};b.showPending=function(){var a=[],c;for(c in b._classPending){var d=D(c);d?(a.push(d),System.out.println(R("","",d,"",0))):alert("No node for "+c)}return a};var R=function(a,b,c,d,e){b+="--"+c.name;a+=b+"\n";if(5=n.STATUS_LOAD_COMPLETE)Q(a);else{var c=!0;if(a.musts.length&&a.declaration)for(var d=a.musts.length,e=d;0<=--e;){var f=a.musts[e];f.requiredBy=a;if(f.statusn.STATUS_KNOWN&&!a.declaration||S(a.musts,n.STATUS_LOAD_COMPLETE)&&S(a.optionals,n.STATUS_LOAD_COMPLETE)){c=n.STATUS_LOAD_COMPLETE;if(!T(a, +c))return!1;if(a.declaration&&a.declaration.clazzList){h=0;j=a.declaration.clazzList;for(k=j.length;hc.indexOf("Opera")&&document.all?0==f?d:g:0>c.indexOf("Gecko")?f==e.offsetHeight&&f==e.scrollHeight?d:g:d;R!=c&&(R=c,v.style.bottom=R+4+"px");b&&N()}};var da=function(a){if(a)for(var b=a.childNodes.length;0<=--b;){var c=a.childNodes[b];if(c){c.childNodes&&c.childNodes.length&&da(c);try{a.removeChild(c)}catch(d){}}}},ea=function(a){L&& +a==x.DEFAULT_OPACITY&&(window.clearTimeout(L),L=null);M=a;navigator.userAgent.toLowerCase();v.style.filter="Alpha(Opacity="+a+")";v.style.opacity=a/100},ra=function(){x.hideMonitor()},ca=!1,N=function(){"none"!=v.style.display&&(M==x.DEFAULT_OPACITY?(L=window.setTimeout(function(){N()},750),M-=5):0<=M-10?(ea(M-10),L=window.setTimeout(function(){N()},40)):v.style.display="none")},p=a.Console,y=System;p.maxTotalLines=1E4;p.setMaxTotalLines=function(a){p.maxTotalLines=0p.maxTotalLines){for(var d= +0;dc.childNodes.length)h= +document.createElement("DIV"),c.appendChild(h),h.style.whiteSpace="nowrap",p.linesCount++;else try{h=c.childNodes[c.childNodes.length-1]}catch(j){h=document.createElement("DIV"),c.appendChild(h),h.style.whiteSpace="nowrap",p.linesCount++}var k=document.createElement("SPAN");h.appendChild(k);k.style.whiteSpace="nowrap";b&&(k.style.color=b);h=f[d];0==h.length&&(h=z);k.appendChild(document.createTextNode(h));p.pinning||(c.scrollTop+=100);p.metLineBreak=d!=g||e}d=c.parentNode.className;!p.pinning&&(d&& +-1!=d.indexOf("composite"))&&(c.parentNode.scrollTop=c.parentNode.scrollHeight);p.lastOutputTime=(new Date).getTime()};p.clear=function(){try{p.metLineBreak=!0;var a=window["j2s.lib"],b=a&&a.console;if(b&&(b=document.getElementById(b))){for(var c=b.childNodes,d=c.length;0<=--d;)b.removeChild(c[d]);p.linesCount=0}}catch(e){}};a.alert=function(a){p.consoleOutput(a+"\r\n");j.clazzAlert(a)};y.out.print=function(a){p.consoleOutput(a)};y.out.println=function(a){p.consoleOutput("undefined"==typeof a?"\r\n": +null==a?"null\r\n":a+"\r\n")};y.out.write=function(a,b,c){y.out.print(String.instantialize(a).substring(b,b+c))};y.err.__CLASS_NAME__="java.io.PrintStream";y.err.print=function(a){p.consoleOutput(a,"red")};y.err.println=function(a){p.consoleOutput("undefined"==typeof a?"\r\n":null==a?"null\r\n":a+"\r\n","red")};y.err.write=function(a,b,c){y.err.print(String.instantialize(a).substring(b,b+c))}}(Clazz,Jmol))};Jmol.___JmolDate="$Date: 2024-06-07 15:31:04 +0100 (Fri, 07 Jun 2024) $"; +Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties";Jmol.___JmolVersion="16.2.17"; diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFDataParser.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFDataParser.js new file mode 100755 index 000000000000..90a9af9793a3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFDataParser.js @@ -0,0 +1,138 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["JU.CifDataParser"], "J.adapter.readers.cif.BCIFDataParser", ["java.io.BufferedInputStream", "$.FileInputStream", "JU.BinaryDocument", "$.MessagePackReader", "J.adapter.readers.cif.BCIFDecoder"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.rdr = null; +this.categoryName = null; +this.rowCount = 0; +this.columnMaps = null; +this.columnDecoders = null; +this.rowPt = 0; +this.ifield = 0; +this.dfield = 0; +this.fieldStr = null; +this.fieldIsValid = false; +this.cifMap = null; +this.header = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "BCIFDataParser", JU.CifDataParser); +Clazz.makeConstructor(c$, +function(bcifReader, debugging){ +Clazz.superConstructor (this, J.adapter.readers.cif.BCIFDataParser, []); +this.rdr = bcifReader; +this.debugging = debugging; +}, "J.adapter.readers.cif.BCIFReader,~B"); +Clazz.defineMethod(c$, "getDecoder", +function(key, col, rowCount, catName){ +var sb = null; +var d = new J.adapter.readers.cif.BCIFDecoder(sb, key, col).setRowCount(rowCount, catName).finalizeDecoding(null); +return (d == null || d.dataType == 0 ? null : d); +}, "~S,java.util.Map,~N,~S"); +Clazz.defineMethod(c$, "initializeCategory", +function(catName, rowCount, columns){ +this.columnMaps = columns; +this.rowCount = rowCount; +this.categoryName = catName; +var n = this.columnCount = columns.length; +if (this.columnNames == null || this.columnNames.length < n) this.columnNames = new Array(n); +for (var i = 0; i < n; i++) { +this.columnNames[i] = (catName + "_" + (columns[i]).get("name")).toLowerCase(); +} +}, "~S,~N,~A"); +Clazz.overrideMethod(c$, "parseDataBlockParameters", +function(fieldNames, key, data, key2col, col2key){ +this.haveData = false; +this.rowPt = -1; +for (var i = 100; --i >= 0; ) { +col2key[i] = key2col[i] = -1; +} +if (!JU.CifDataParser.htFields.containsKey(fieldNames[0])) { +for (var i = fieldNames.length; --i >= 0; ) JU.CifDataParser.htFields.put(fieldNames[i], Integer.$valueOf(i)); + +}this.columnDecoders = new Array(this.columnCount); +for (var pt = 0; pt < this.columnCount; pt++) { +var s = this.columnNames[pt]; +var iField = JU.CifDataParser.htFields.get(s); +var keyIndex = col2key[pt] = (iField == null ? -1 : iField.intValue()); +var d = (keyIndex == -1 ? null : this.getDecoder(s, this.getDataColumn(pt), this.rowCount, this.categoryName)); +if (d == null) { +if (keyIndex >= 0) key2col[keyIndex] = -2; +} else { +this.columnDecoders[pt] = d; +key2col[keyIndex] = pt; +this.haveData = true; +}} +}, "~A,~S,~S,~A,~A"); +Clazz.defineMethod(c$, "decodeAndGetData", +function(icol){ +this.columnDecoders = Clazz.newArray(-1, [this.getDecoder(null, this.getDataColumn(icol), this.rowCount, this.categoryName)]); +this.getColumnData(0); +this.columnDecoders = null; +}, "~N"); +Clazz.overrideMethod(c$, "getData", +function(){ +this.rowPt++; +var done = this.rowPt >= this.rowCount; +if (done) { +for (var i = this.columnDecoders.length; --i >= 0; ) this.columnDecoders[i] = null; + +}return !done; +}); +Clazz.overrideMethod(c$, "getColumnData", +function(colPt){ +this.rdr.key = this.getColumnName(colPt); +this.ifield = -2147483648; +this.dfield = NaN; +if (colPt >= this.columnDecoders.length) System.out.println("???"); +if (this.columnDecoders[colPt] == null) { +this.fieldIsValid = false; +return this.fieldStr = this.nullString; +}switch (this.columnDecoders[colPt].dataType) { +case 1: +this.ifield = this.columnDecoders[colPt].getIntValue(this.rowPt); +this.fieldStr = (this.ifield == -2147483648 ? this.nullString : "_"); +break; +case 2: +this.dfield = this.columnDecoders[colPt].getFixedPtValue(this.rowPt); +this.fieldStr = (Double.isNaN(this.dfield) ? this.nullString : "_"); +break; +case 3: +this.fieldStr = this.columnDecoders[colPt].getStringValue(this.rowPt); +break; +} +this.fieldIsValid = (this.fieldStr !== this.nullString); +return this.fieldStr; +}, "~N"); +Clazz.defineMethod(c$, "isFieldValid", +function(){ +return this.fieldIsValid; +}); +Clazz.defineMethod(c$, "getDataColumn", +function(icol){ +return (icol >= 0 && icol < this.columnCount ? this.columnMaps[icol] : null); +}, "~N"); +Clazz.overrideMethod(c$, "getAllCifData", +function(){ +return null; +}); +c$.main = Clazz.defineMethod(c$, "main", +function(args){ +try { +var testFile = (args.length == 0 ? "c:/temp/1cbs.bcif" : args[0]); +var binaryDoc = new JU.BinaryDocument(); +var bis = new java.io.BufferedInputStream( new java.io.FileInputStream(testFile)); +binaryDoc.setStream(bis, true); +var msgMap; +msgMap = ( new JU.MessagePackReader(binaryDoc, false)).readMap(); +var parser = new J.adapter.readers.cif.BCIFDataParser(null, true); +parser.debugConstructCifMap(msgMap); +binaryDoc.close(); +System.out.println("OK - DONE"); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFDecoder.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFDecoder.js new file mode 100755 index 000000000000..9ddff6f888ec --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFDecoder.js @@ -0,0 +1,385 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(null, "J.adapter.readers.cif.BCIFDecoder", ["JU.BC", "$.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dataType = 1; +this.type = null; +this.key = null; +this.encodings = null; +this.offsetDecoder = null; +this.dataDecoder = null; +this.maskDecoder = null; +this.data = null; +this.btype = 0; +this.byteLen = 0; +this.srcType = 0; +this.mode = 0; +this.unsigned = false; +this.srcSize = 0; +this.rowCount = 0; +this.catname = null; +this.name = null; +this.byteCount = 0; +this.origin = -2147483648; +this.factor = 0; +this.byteData = null; +this.stringData = null; +this.stringLen = 0; +this.floatDoubleData = null; +this.intData = null; +this.indices = null; +this.mask = null; +this.offsets = null; +this.isDecoded = false; +this.kind = '\0'; +this.packingSize = 0; +this.dtype = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "BCIFDecoder", null); +Clazz.makeConstructor(c$, +function(sb, key, map, byteData, ekey){ +{ +switch (arguments.length) { +case 3: +byteData = ekey = null; +break; +case 4: +ekey = key; +break; +} +}this.key = key; +var data = (byteData == null ? map.get("data") : byteData); +if (Clazz.instanceOf(data,"java.util.Map")) { +this.data = data; +data = this.data.get("data"); +}if (Clazz.instanceOf(data,Array)) { +this.setByteData(data); +}if (ekey == null) { +if (this.data == null) { +this.encodings = map.get("encoding"); +} else { +this.name = map.get("name"); +this.encodings = this.data.get("encoding"); +var mask = map.get("mask"); +if (mask != null) { +this.maskDecoder = new J.adapter.readers.cif.BCIFDecoder(sb, null, mask, null); +this.maskDecoder.dtype = "m"; +}}} else { +this.encodings = map.get(ekey); +this.dtype = ekey.substring(0, 1); +}this.initializeEncodings(this.encodings, sb); +if (sb != null) { +this.type = this.debugGetDecoderType(this.encodings); +if (this.maskDecoder != null) this.type += ".mask." + this.maskDecoder.toString(); +sb.append(this + "\n"); +}}, "JU.SB,~S,java.util.Map,~O,~S"); +Clazz.defineMethod(c$, "setRowCount", +function(rowCount, catName){ +this.rowCount = rowCount; +this.catname = catName; +return this; +}, "~N,~S"); +Clazz.defineMethod(c$, "setByteData", +function(data){ +this.byteData = data; +this.byteLen = this.byteData.length; +}, "~O"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.type + (this.dtype == null ? "" : this.dtype) + (this.btype == 0 ? "[" + this.byteLen + "]" : "(srcSize/rowcount=" + this.srcSize + "/" + this.rowCount + " mode=" + this.mode + " bt=" + this.btype + " bl=" + this.byteLen + " sl=" + this.stringLen + ")") + (this.key == null ? "" : ":" + this.key); +}); +c$.getMapChar = Clazz.defineMethod(c$, "getMapChar", +function(ht, key){ +var s = ht.get(key); +return (s != null && s.length > 0 ? s.charAt(0) : 0); +}, "java.util.Map,~S"); +c$.geMapInt = Clazz.defineMethod(c$, "geMapInt", +function(o){ +return (o == null ? 0 : (o).intValue()); +}, "~O"); +c$.getMapBool = Clazz.defineMethod(c$, "getMapBool", +function(o){ +return (o === Boolean.TRUE); +}, "~O"); +Clazz.defineMethod(c$, "initializeEncodings", +function(encodings, sb){ +var n = encodings.length; +for (var i = 0; i < n; i++) { +var encoding = encodings[i]; +var kind = J.adapter.readers.cif.BCIFDecoder.getMapChar(encoding, "kind"); +if (encoding.containsKey("min")) { +kind = 'Q'; +this.dataType = 0; +}if ((this.kind).charCodeAt(0) == 0) this.kind = kind; +switch ((kind).charCodeAt(0)) { +case 70: +this.factor = J.adapter.readers.cif.BCIFDecoder.geMapInt(encoding.get("factor")); +this.dataType = 2; +this.mode |= 8; +break; +case 68: +this.origin = J.adapter.readers.cif.BCIFDecoder.geMapInt(encoding.get("origin")); +this.mode |= 1; +break; +case 82: +this.mode |= 2; +this.srcSize = J.adapter.readers.cif.BCIFDecoder.geMapInt(encoding.get("srcSize")); +break; +case 73: +this.mode |= 4; +this.packingSize = J.adapter.readers.cif.BCIFDecoder.geMapInt(encoding.get("srcSize")); +if (this.srcSize == 0) this.srcSize = this.packingSize; +this.unsigned = J.adapter.readers.cif.BCIFDecoder.getMapBool(encoding.get("isUnsigned")); +continue; +case 66: +this.btype = J.adapter.readers.cif.BCIFDecoder.geMapInt(encoding.get("type")); +this.byteCount = (this.btype == 33 ? 8 : this.btype == 32 ? 4 : 1 << (((this.btype - 1) % 3))); +if (this.btype >= 32) { +this.dataType = 2; +}continue; +case 83: +this.dataType = 3; +this.stringData = encoding.get("stringData"); +this.stringLen = this.stringData.length; +this.dataDecoder = new J.adapter.readers.cif.BCIFDecoder(sb, "dataEncoding", encoding, this.byteData); +this.offsetDecoder = new J.adapter.readers.cif.BCIFDecoder(sb, "offsetEncoding", encoding, encoding.get("offsets")); +continue; +} +if (this.srcType == 0) { +this.srcType = J.adapter.readers.cif.BCIFDecoder.geMapInt(encoding.get("srcType")); +}} +}, "~A,JU.SB"); +Clazz.defineMethod(c$, "finalizeDecoding", +function(sb){ +if (this.isDecoded) return this; +if (sb != null) sb.append("finalizing " + this + "\n"); +this.isDecoded = true; +this.mask = (this.maskDecoder == null ? null : this.maskDecoder.finalizeDecoding(sb).intData); +if (this.mask != null && !J.adapter.readers.cif.BCIFDecoder.haveCheckMask(this.mask)) { +if (sb != null) sb.append("no valid data (mask completely \'.\' or \'?\'\n"); +this.dataType = 0; +return null; +}if (this.mask != null && sb != null) sb.append("mask = " + J.adapter.readers.cif.BCIFDecoder.debugToStr(this.mask) + "\n"); +if (this.dataDecoder != null) { +this.indices = this.dataDecoder.finalizeDecoding(sb).intData; +this.offsets = this.offsetDecoder.finalizeDecoding(sb).intData; +if (sb != null) { +sb.append("stringData = " + J.adapter.readers.cif.BCIFDecoder.debugToStr(this.stringData) + "\n"); +sb.append("indices = " + J.adapter.readers.cif.BCIFDecoder.debugToStr(this.indices) + "\n"); +sb.append("offsets = " + J.adapter.readers.cif.BCIFDecoder.debugToStr(this.offsets) + "\n"); +}} else { +if (sb != null) sb.append("bytes->int " + Clazz.doubleToInt(this.byteData.length / this.byteCount) + " rc=" + this.rowCount + " ps=" + this.packingSize + "\n"); +var run = null; +var len = this.srcSize; +if ((this.mode & 2) == 2) { +run = J.adapter.readers.cif.BCIFDecoder.getTemp(this.srcSize); +len = this.srcSize; +}if ((this.mode & 4) == 4) { +this.intData = J.adapter.readers.cif.BCIFDecoder.unpackInts(this.byteData, this.byteCount, len, this.unsigned, this.origin, run); +} else if (this.btype == 32 || this.btype == 33) { +this.floatDoubleData = this.bytesToFixedPt(this.byteData, this.btype == 32 ? 4 : 8); +} else { +this.intData = J.adapter.readers.cif.BCIFDecoder.bytesToInt(this.byteData, this.byteCount, len, this.unsigned, this.origin, run); +}}return this; +}, "JU.SB"); +c$.haveCheckMask = Clazz.defineMethod(c$, "haveCheckMask", +function(mask){ +for (var i = mask.length; --i >= 0; ) { +if (mask[i] == 0) return true; +} +return false; +}, "~A"); +Clazz.defineMethod(c$, "getStringValue", +function(row){ +if (this.dataType != 3 || this.mask != null && this.mask[row] != 0) return "\u0000"; +var pt = this.indices[row]; +return this.stringData.substring(this.offsets[pt++], (pt == this.rowCount ? this.stringLen : this.offsets[pt])); +}, "~N"); +Clazz.defineMethod(c$, "getIntValue", +function(row){ +return (this.dataType != 1 || this.mask != null && this.mask[row] != 0 ? -2147483648 : this.intData[row]); +}, "~N"); +Clazz.defineMethod(c$, "getFixedPtValue", +function(row){ +return (this.dataType != 2 || this.mask != null && this.mask[row] != 0 ? NaN : this.floatDoubleData == null ? this.intData[row] / this.factor : this.floatDoubleData[row]); +}, "~N"); +Clazz.defineMethod(c$, "bytesToFixedPt", +function(b, byteLen){ +if (b == null) return null; +var n = Clazz.doubleToInt(b.length / byteLen); +var a = Clazz.newFloatArray (n, 0); +try { +switch (byteLen) { +case 4: +for (var i = 0, j = 0; i < n; i++, j += 4) { +a[i] = JU.BC.bytesToFloat(b, j, false); +} +break; +case 8: +for (var i = 0, j = 0; i < n; i++, j += 8) { +a[i] = JU.BC.bytesToDoubleToFloat(b, j, false); +} +break; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return a; +}, "~A,~N"); +c$.bytesToInt = Clazz.defineMethod(c$, "bytesToInt", +function(b, byteLen, rowCount, unsigned, origin, run){ +if (b == null) return null; +var n = Clazz.doubleToInt(b.length / byteLen); +var ret = Clazz.newIntArray (rowCount == 0 ? n : rowCount, 0); +var a = (run == null ? ret : run); +var ii; +switch (byteLen) { +case 1: +for (var i = 0, j = 0; i < n; i++, j++) { +ii = b[j] & 0xFF; +a[i] = (unsigned ? ii : ii > 0xEF ? ii - 0x100 : ii); +} +break; +case 2: +for (var i = 0, j = 0; i < n; i++, j += 2) { +ii = JU.BC.bytesToShort(b, j, false); +a[i] = (unsigned ? ii & 0xFFFF : ii); +} +break; +case 4: +for (var i = 0, j = 0; i < n; i++, j += 4) { +a[i] = JU.BC.bytesToInt(b, j, false); +} +break; +} +if (run != null) { +for (var p = 0, i = 0; i < n; ) { +var val = a[i++]; +for (var j = a[i++]; --j >= 0; ) ret[p++] = val; + +} +}if (origin != -2147483648) { +for (var i = 0; i < rowCount; i++) { +origin = ret[i] = origin + ret[i]; +} +}return ret; +}, "~A,~N,~N,~B,~N,~A"); +c$.unpackInts = Clazz.defineMethod(c$, "unpackInts", +function(b, byteLen, srcSize, unsigned, origin, run){ +if (b == null) return null; +var ret = Clazz.newIntArray (srcSize, 0); +var a = (run == null ? ret : run); +var max; +switch (byteLen) { +case 1: +max = (unsigned ? 0xFF : 127); +for (var i = 0, pt = 0, n = b.length, offset = 0; pt < n; ) { +var val = b[pt++]; +if (unsigned) val = val & max; +if (val == max || val == -128) { +offset += val; +} else { +a[i++] = val + offset; +offset = 0; +}} +break; +case 2: +max = (unsigned ? 0xFFFF : 32767); +for (var i = 0, pt = 0, n = Clazz.doubleToInt(b.length / 2), offset = 0; pt < n; ) { +var val = JU.BC.bytesToShort(b, (pt++) << 1, false); +if (unsigned) val = val & max; +if (val == max || val == -32768) { +offset += val; +} else { +a[i++] = val + offset; +offset = 0; +}} +break; +} +if (run != null) { +for (var p = 0, i = 0; p < srcSize; i++) { +var val = a[i]; +for (var j = a[++i]; --j >= 0; ) ret[p++] = val; + +} +}if (origin != -2147483648) { +for (var i = 0; i < srcSize; i++) { +origin = ret[i] = origin + ret[i]; +} +}return ret; +}, "~A,~N,~N,~B,~N,~A"); +c$.getTemp = Clazz.defineMethod(c$, "getTemp", +function(n){ +if (J.adapter.readers.cif.BCIFDecoder.temp == null || J.adapter.readers.cif.BCIFDecoder.temp.length < n) J.adapter.readers.cif.BCIFDecoder.temp = Clazz.newIntArray (Math.max(n, 1000), 0); +return J.adapter.readers.cif.BCIFDecoder.temp; +}, "~N"); +c$.clearTemp = Clazz.defineMethod(c$, "clearTemp", +function(){ +J.adapter.readers.cif.BCIFDecoder.temp = null; +}); +c$.debugToStr = Clazz.defineMethod(c$, "debugToStr", +function(o){ +if (Clazz.instanceOf(o,Array)) return J.adapter.readers.cif.BCIFDecoder.debugToStrI(o); +if (Clazz.instanceOf(o,Array)) return J.adapter.readers.cif.BCIFDecoder.debugToStrB(o); +if (Clazz.instanceOf(o,Array)) return J.adapter.readers.cif.BCIFDecoder.debugToStrD(o); +if ((typeof(o)=='string')) { +var s = o; +return (s.length < 100 ? s : s.substring(0, 100) + "..." + s.length); +}return J.adapter.readers.cif.BCIFDecoder.debugToStrO(o); +}, "~O"); +c$.debugToStrO = Clazz.defineMethod(c$, "debugToStrO", +function(o){ +var sb = new JU.SB(); +var sep = '['; +var n = Math.min(o.length, 20); +for (var i = 0; i < n; i++) { +sb.appendC(sep).appendO(o[i]); +sep = ','; +} +if (n < o.length) sb.append("...").appendI(o.length); +sb.appendC(']'); +return sb.toString(); +}, "~A"); +c$.debugToStrI = Clazz.defineMethod(c$, "debugToStrI", +function(o){ +var sb = new JU.SB(); +var sep = '['; +var n = Math.min(o.length, 20); +for (var i = 0; i < n; i++) { +sb.appendC(sep).appendI(o[i]); +sep = ','; +} +if (n < o.length) sb.append("...").appendI(o.length); +sb.appendC(']'); +return sb.toString(); +}, "~A"); +c$.debugToStrB = Clazz.defineMethod(c$, "debugToStrB", +function(o){ +var sb = new JU.SB(); +var sep = '['; +var n = Math.min(o.length, 20); +for (var i = 0; i < n; i++) { +sb.appendC(sep).appendI(o[i]); +sep = ','; +} +if (n < o.length) sb.append("...").appendI(o.length); +sb.appendC(']'); +return sb.toString(); +}, "~A"); +c$.debugToStrD = Clazz.defineMethod(c$, "debugToStrD", +function(o){ +var sb = new JU.SB(); +var sep = '['; +var n = Math.min(o.length, 20); +for (var i = 0; i < n; i++) { +sb.appendC(sep).appendF(o[i]); +sep = ','; +} +if (n < o.length) sb.append("...").appendI(o.length); +sb.appendC(']'); +return sb.toString(); +}, "~A"); +c$.temp = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFReader.js new file mode 100755 index 000000000000..e16640a73848 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/BCIFReader.js @@ -0,0 +1,158 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["J.adapter.readers.cif.MMCifReader"], "J.adapter.readers.cif.BCIFReader", ["JU.MessagePackReader", "J.adapter.readers.cif.BCIFDataParser", "$.BCIFDecoder", "$.CifReader"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bcifParser = null; +this.version = null; +this.catName = null; +this.colCount = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "BCIFReader", J.adapter.readers.cif.MMCifReader); +Clazz.overrideMethod(c$, "getCifDataParser", +function(){ +return this.cifParser = this.bcifParser = new J.adapter.readers.cif.BCIFDataParser(this, this.debugging); +}); +Clazz.overrideMethod(c$, "setup", +function(fullPath, htParams, reader){ +this.isBinary = true; +this.setupASCR(fullPath, htParams, reader); +}, "~S,java.util.Map,~O"); +Clazz.overrideMethod(c$, "processBinaryDocument", +function(){ +var t = System.currentTimeMillis(); +this.binaryDoc.setBigEndian(true); +var msgMap = ( new JU.MessagePackReader(this.binaryDoc, false)).readMap(); +this.binaryDoc.close(); +this.version = msgMap.get("version"); +System.out.println("BCIFReader: BCIF version " + this.version); +var dataBlock = (msgMap.get("dataBlocks"))[0]; +System.out.println("BCIFReader processed MessagePack in " + (System.currentTimeMillis() - t) + " ms"); +this.getCifDataParser(); +var categories = dataBlock.get("categories"); +this.bcifParser.header = dataBlock.get("header"); +for (var j = 0; j < categories.length; j++) { +var cat = categories[j]; +if (!cat.isEmpty()) this.processCategory(cat); +} +System.out.println("BCIFReader processed binary file in " + (System.currentTimeMillis() - t) + " ms"); +}); +Clazz.defineMethod(c$, "finalizeSubclassReader", +function(){ +Clazz.superCall(this, J.adapter.readers.cif.BCIFReader, "finalizeSubclassReader", []); +J.adapter.readers.cif.BCIFDecoder.clearTemp(); +}); +Clazz.defineMethod(c$, "processCategory", +function(cat){ +var catName = (cat.get("name")).toLowerCase(); +if (!this.isCategoryOfInterest(catName)) return false; +this.bcifParser.initializeCategory(catName, J.adapter.readers.cif.BCIFDecoder.geMapInt(cat.get("rowCount")), cat.get("columns")); +this.processCategoryName(catName); +return false; +}, "java.util.Map"); +Clazz.defineMethod(c$, "isCategoryOfInterest", +function(catName){ +switch (catName) { +case "_entry": +case "_atom_site": +case "_atom_type": +case "_atom_sites": +case "_cell": +case "_struct_ncs_oper": +case "_pdbx_struct_oper_list": +case "_pdbx_struct_assembly_gen": +case "_struct_ref_seq_dif": +case "_struct_site_gen": +case "_chem_comp": +case "_struct_conf": +case "_struct_sheet_range": +case "_chem_comp_bond": +case "_struct_conn": +return true; +} +return false; +}, "~S"); +Clazz.defineMethod(c$, "processCategoryName", +function(catName){ +this.catName = catName; +switch (catName) { +case "_entry": +return this.processEntry(); +case "_atom_site": +return this.processAtomSiteLoopBlock(false); +case "_atom_type": +return this.processAtomTypeLoopBlock(); +case "_atom_sites": +return this.processAtomSites(); +case "_cell": +return this.processCellBlock(); +} +switch (catName) { +case "_struct_ncs_oper": +case "_pdbx_struct_oper_list": +case "_pdbx_struct_assembly_gen": +case "_struct_ref_seq_dif": +case "_struct_site_gen": +case "_chem_comp": +case "_struct_conf": +case "_struct_sheet_range": +case "_chem_comp_bond": +case "_struct_conn": +this.key0 = catName + "."; +return this.processSubclassLoopBlock(); +} +return false; +}, "~S"); +Clazz.defineMethod(c$, "processEntry", +function(){ +this.bcifParser.decodeAndGetData(0); +this.pdbID = this.bcifParser.fieldStr; +return true; +}); +Clazz.defineMethod(c$, "processAtomSites", +function(){ +for (var i = 0; i < this.colCount; i++) { +this.bcifParser.decodeAndGetData(i); +this.processUnitCellTransformMatrix(); +} +return true; +}); +Clazz.defineMethod(c$, "processCellBlock", +function(){ +for (var i = 0; i < this.colCount; i++) { +this.bcifParser.decodeAndGetData(i); +this.processCellParameter(); +} +return true; +}); +Clazz.overrideMethod(c$, "parseLoopParameters", +function(fields){ +this.bcifParser.parseDataBlockParameters(fields, null, null, this.key2col, this.col2key); +}, "~A"); +Clazz.overrideMethod(c$, "isFieldValid", +function(){ +if (this.bcifParser.fieldStr != null) this.firstChar = this.bcifParser.fieldStr.charAt(0); +return this.bcifParser.isFieldValid(); +}); +Clazz.overrideMethod(c$, "parseIntField", +function(){ +return this.bcifParser.ifield; +}); +Clazz.overrideMethod(c$, "parseFloatField", +function(){ +return this.bcifParser.dfield; +}); +Clazz.overrideMethod(c$, "parseCartesianField", +function(){ +return Math.round(this.bcifParser.dfield * 1000) / 1000; +}); +Clazz.overrideMethod(c$, "parseIntFieldTok", +function(tok){ +this.getFieldString(tok); +return this.bcifParser.ifield; +}, "~N"); +Clazz.overrideMethod(c$, "getFloatColumnData", +function(i){ +this.bcifParser.getColumnData(i); +return this.bcifParser.dfield; +}, "~N"); +c$.temp = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Cif2DataParser.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Cif2DataParser.js new file mode 100755 index 000000000000..03e9bb1ac9c6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Cif2DataParser.js @@ -0,0 +1,194 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["JU.CifDataParser"], "J.adapter.readers.cif.Cif2DataParser", ["java.util.Hashtable", "JU.PT"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.cif, "Cif2DataParser", JU.CifDataParser); +Clazz.overrideMethod(c$, "getVersion", +function(){ +return 2; +}); +Clazz.overrideMethod(c$, "toUnicode", +function(data){ +return data; +}, "~S"); +Clazz.overrideMethod(c$, "isQuote", +function(ch){ +switch ((ch).charCodeAt(0)) { +case 1: +case 39: +case 34: +case 91: +case 93: +case 123: +case 125: +case 59: +return true; +} +return false; +}, "~S"); +Clazz.overrideMethod(c$, "getQuotedStringOrObject", +function(ch){ +return this.processQuotedString(); +}, "~S"); +Clazz.overrideMethod(c$, "preprocessString", +function(){ +this.line = (this.ich == 0 ? this.str : this.str.substring(this.ich)); +return this.setString(this.processSemiString()); +}); +Clazz.defineMethod(c$, "processQuotedString", +function(){ +var str = null; +var quoteChar = this.str.charAt(this.ich); +var tripleChar = null; +try { +switch ((quoteChar).charCodeAt(0)) { +case 1: +str = this.str.substring(1, (this.ich = this.str.indexOf("\1", this.ich + 1))); +this.ich++; +break; +case 91: +return this.readList(); +case 93: +this.ich++; +return "]"; +case 123: +return this.readTable(); +case 125: +this.ich++; +return "}"; +case 39: +case 34: +if (this.str.indexOf("'''") == this.ich) tripleChar = "'''"; + else if (this.str.indexOf("\"\"\"") == this.ich) tripleChar = "\"\"\""; +var nchar = (tripleChar == null ? 1 : 3); +var pt = this.ich + nchar; +var pt1 = 0; +while ((pt1 = (tripleChar == null ? this.str.indexOf(quoteChar, pt) : this.str.indexOf(tripleChar, pt))) < 0) { +if (this.readLine() == null) break; +this.str += this.line; +} +this.ich = pt1 + nchar; +this.cch = this.str.length; +str = this.str.substring(pt, pt1); +break; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("exception in Cif2DataParser ; " + e); +} else { +throw e; +} +} +return (this.cterm == '\0' || this.asObject ? str : JU.PT.esc(str)); +}); +Clazz.defineMethod(c$, "processSemiString", +function(){ +var pt1; +var pt2; +var str = this.preprocessSemiString(); +if (str.indexOf(';') != 1 && (pt1 = str.indexOf('\\')) > 1 && ((pt2 = str.indexOf('\n')) > pt1 || pt2 < 0)) { +var prefix = str.substring(1, pt1); +str = JU.PT.rep(str, "\n" + prefix, "\n"); +str = "\1" + str.substring(str.charAt(pt1 + 1) == '\\' ? pt1 + 1 : pt2 < 0 ? str.length - 1 : pt2 + 1); +}this.ich = 0; +return this.fixLineFolding(str); +}); +Clazz.defineMethod(c$, "readTable", +function(){ +this.ich++; +var cterm0 = this.cterm; +this.cterm = '}'; +var ns = this.nullString; +this.nullString = null; +var map = (this.asObject ? new java.util.Hashtable() : null); +var n = 0; +var str = ""; +while (true) { +var key = this.getNextToken(); +if (key == null || key.equals("}")) break; +while (this.isSpaceOrColon(this.ich)) this.ich++; + +if (this.asObject) { +map.put(key, this.getNextTokenObject()); +} else { +if (n++ > 0) str += ","; +str += key + " : " + this.getNextToken(); +}} +this.cterm = cterm0; +this.nullString = ns; +return (this.asObject ? map : "{" + str + "}"); +}); +Clazz.defineMethod(c$, "isSpaceOrColon", +function(ich){ +if (ich < this.cch) switch ((this.line.charAt(ich)).charCodeAt(0)) { +case 32: +case 9: +case 10: +case 58: +return true; +} +return false; +}, "~N"); +Clazz.overrideMethod(c$, "unquoted", +function(s){ +if (this.cterm == '\0' && !this.asObject) return s; +var n = s.length; +if (n > 0) { +var c = s.charAt(0); +if (JU.PT.isDigit(c) || c == '-' || c == '.' && n > 1) { +var pt = s.indexOf('('); +var isFloat = (s.indexOf(".") >= 0); +if (n > 1 && pt > 0 && s.indexOf(')', pt + 1) == n - 1) s = s.substring(0, pt); +try { +if (isFloat) { +var f = Float.parseFloat(s); +if (this.asObject) return Float.$valueOf(f); +s = "" + f; +if (s.indexOf(".") < 0 && s.indexOf("E") < 0) s += ".0"; +return s; +}var i = Integer.parseInt(s); +return (this.asObject ? Integer.$valueOf(i) : "" + i); +} catch (e) { +} +}}return (this.asObject ? s : JU.PT.esc(s)); +}, "~S"); +Clazz.defineMethod(c$, "fixLineFolding", +function(str){ +if (str.indexOf('\\') < 0) return str; +var n = str.length; +if (str.endsWith("\\\1")) str = str.substring(0, n - 1) + "\n\1"; +var pt = 0; +while ((pt = str.indexOf('\\', pt + 1)) >= 0) { +var eol = str.indexOf('\n', pt); +if (eol < 0) break; +for (var i = eol; --i > pt; ) { +var ch = str.charAt(i); +if (!JU.PT.isWhitespace(ch)) { +if (ch == '\\') { +pt = i; +break; +}pt = eol; +break; +}} +if (pt < eol) str = str.substring(0, pt) + str.substring(eol + 1); +} +return str; +}, "~S"); +c$.getArrayFromStringList = Clazz.defineMethod(c$, "getArrayFromStringList", +function(s, n){ +var f = Clazz.newFloatArray (n, 0); +JU.PT.parseFloatArrayInfested(JU.PT.getTokens(s.$replace(',', ' ').$replace('[', ' ')), f); +var d = Clazz.newDoubleArray (n, 0); +for (var i = 0; i < n; i++) d[i] = f[i]; + +return d; +}, "~S,~N"); +c$.getIntArrayFromStringList = Clazz.defineMethod(c$, "getIntArrayFromStringList", +function(s, n){ +var f = Clazz.newFloatArray (n, 0); +JU.PT.parseFloatArrayInfested(JU.PT.getTokens(s.$replace(',', ' ').$replace('[', ' ')), f); +var a = Clazz.newIntArray (n, 0); +for (var i = 0; i < n; i++) a[i] = Clazz.floatToInt(f[i]); + +return a; +}, "~S,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Cif2Reader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Cif2Reader.js new file mode 100755 index 000000000000..3edcbf9f78fa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Cif2Reader.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["J.adapter.readers.cif.CifReader"], "J.adapter.readers.cif.Cif2Reader", ["J.adapter.readers.cif.Cif2DataParser"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.cif, "Cif2Reader", J.adapter.readers.cif.CifReader); +Clazz.overrideMethod(c$, "getCifDataParser", +function(){ +return new J.adapter.readers.cif.Cif2DataParser().set(this, null, this.debugging); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/CifReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/CifReader.js new file mode 100755 index 000000000000..57af2b7bd273 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/CifReader.js @@ -0,0 +1,1326 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "JU.Lst", "$.P3"], "J.adapter.readers.cif.CifReader", ["java.util.Hashtable", "javajs.api.Interface", "JU.BS", "$.CifDataParser", "$.PT", "$.Rdr", "$.V3", "J.adapter.smarter.Atom", "J.api.JmolAdapter", "JU.Logger", "$.Vibration"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.subParser = null; +this.modr = null; +this.cifParser = null; +this.isAFLOW = false; +this.filterAssembly = false; +this.allowRotations = true; +this.readIdeal = true; +this.configurationPtr = -2147483648; +this.useAuthorChainID = true; +this.thisDataSetName = ""; +this.lastDataSetName = null; +this.chemicalName = ""; +this.thisStructuralFormula = ""; +this.thisFormula = ""; +this.iHaveDesiredModel = false; +this.isMMCIF = false; +this.isLigand = false; +this.isMagCIF = false; +this.haveHAtoms = false; +this.molecularType = "GEOM_BOND default"; +this.lastAltLoc = '\0'; +this.haveAromatic = false; +this.conformationIndex = 0; +this.nMolecular = 0; +this.appendedData = null; +this.skipping = false; +this.nAtoms = 0; +this.ac = 0; +this.auditBlockCode = null; +this.lastSpaceGroupName = null; +this.modulated = false; +this.isCourseGrained = false; +this.haveCellWaveVector = false; +this.htGroup1 = null; +this.nAtoms0 = 0; +this.titleAtomSet = 1; +this.addAtomLabelNumbers = false; +this.ignoreGeomBonds = false; +this.allowWyckoff = true; +this.htCellTypes = null; +this.modelMap = null; +this.haveGlobalDummy = false; +this.htAudit = null; +this.symops = null; +this.pdbID = null; +this.htOxStates = null; +this.bondTypes = null; +this.disorderAssembly = "."; +this.lastDisorderAssembly = null; +this.lattvecs = null; +this.magCenterings = null; +this.maxSerial = 0; +this.atomRadius = null; +this.bsConnected = null; +this.bsSets = null; +this.ptOffset = null; +this.bsMolecule = null; +this.bsExclude = null; +this.firstAtom = 0; +this.atoms = null; +this.bsBondDuplicates = null; +this.key = null; +this.key0 = null; +this.field = null; +this.isLoop = false; +this.col2key = null; +this.key2col = null; +this.firstChar = '\0'; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "CifReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.bondTypes = new JU.Lst(); +this.ptOffset = new JU.P3(); +this.col2key = Clazz.newIntArray (100, 0); +this.key2col = Clazz.newIntArray (100, 0); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.initSubclass(); +this.allowPDBFilter = true; +this.appendedData = this.htParams.get("appendedData"); +var conf = this.getFilter("CONF "); +if (conf != null) this.configurationPtr = this.parseIntStr(conf); +this.isMolecular = this.checkFilterKey("MOLECUL") && !this.checkFilterKey("BIOMOLECULE"); +this.ignoreGeomBonds = this.checkFilterKey("IGNOREGEOMBOND") || this.checkFilterKey("IGNOREBOND"); +this.isPrimitive = this.checkFilterKey("PRIMITIVE"); +this.readIdeal = !this.checkFilterKey("NOIDEAL"); +this.allowWyckoff = !this.checkFilterKey("NOWYCKOFF"); +this.filterAssembly = this.checkFilterKey("$"); +this.useAuthorChainID = !this.checkFilterKey("NOAUTHORCHAINS"); +if (this.isMolecular) { +this.forceSymmetry(false); +this.molecularType = "filter \"MOLECULAR\""; +}this.checkNearAtoms = !this.checkFilterKey("NOSPECIAL"); +this.allowRotations = !this.checkFilterKey("NOSYM"); +if (this.binaryDoc != null) return; +this.readCifData(); +this.continuing = false; +}); +Clazz.defineMethod(c$, "initSubclass", +function(){ +}); +Clazz.defineMethod(c$, "readCifData", +function(){ +this.cifParser = this.getCifDataParser(); +this.line = ""; +this.cifParser.peekToken(); +this.addAtomLabelNumbers = (this.cifParser.getFileHeader().startsWith("# primitive CIF file created by Jmol")); +while (this.continueWith(this.key = this.cifParser.peekToken()) && this.readEntryOrLoopData()) { +} +if (this.appendedData != null) { +this.cifParser = (this.getInterface("JU.CifDataParser")).set(null, JU.Rdr.getBR(this.appendedData), this.debugging); +while ((this.key = this.cifParser.peekToken()) != null) if (!this.readEntryOrLoopData()) break; + +}}); +Clazz.defineMethod(c$, "continueWith", +function(key){ +var ret = (key != null && (this.ac == 0 || !key.equals("_shelx_hkl_file"))); +return ret; +}, "~S"); +Clazz.defineMethod(c$, "getCifDataParser", +function(){ +return new JU.CifDataParser().set(this, null, this.debugging); +}); +Clazz.defineMethod(c$, "readEntryOrLoopData", +function(){ +if (this.key.startsWith("data_")) { +this.isLigand = false; +if (this.asc.atomSetCount == 0) this.iHaveDesiredModel = false; +if (this.iHaveDesiredModel) return false; +if (this.desiredModelNumber != -2147483648) this.appendLoadNote(null); +this.newModel(-1); +this.haveCellWaveVector = false; +if (this.auditBlockCode == null) this.modulated = false; +if (!this.skipping) { +this.nAtoms0 = this.asc.ac; +this.processDataParameter(); +this.nAtoms = this.asc.ac; +}return true; +}if (this.skipping && this.key.equals("_audit_block_code")) { +this.iHaveDesiredModel = false; +this.skipping = false; +}this.isLoop = this.isLoopKey(); +if (this.isLoop) { +if (this.skipping && !this.isMMCIF) { +this.cifParser.getTokenPeeked(); +this.skipLoop(false); +} else { +this.processLoopBlock(); +}return true; +}if (this.key.indexOf("_") != 0) { +JU.Logger.warn(this.key.startsWith("save_") ? "CIF reader ignoring save_" : "CIF ERROR ? should be an underscore: " + this.key); +this.cifParser.getTokenPeeked(); +} else if (!this.getData()) { +return true; +}if (!this.skipping) { +this.key = this.cifParser.fixKey(this.key0 = this.key); +if (this.key.startsWith("_chemical_name") || this.key.equals("_chem_comp_name")) { +this.processChemicalInfo("name"); +} else if (this.key.startsWith("_chemical_formula_structural")) { +this.processChemicalInfo("structuralFormula"); +} else if (this.key.startsWith("_chemical_formula_sum") || this.key.equals("_chem_comp_formula")) { +this.processChemicalInfo("formula"); +} else if (this.key.equals("_cell_modulation_dimension")) { +this.modDim = this.parseIntField(); +if (this.modr != null) this.modr.setModDim(this.modDim); +} else if (this.skipKey(this.key)) { +} else if (this.key.startsWith("_cell") && this.key.indexOf("_commen_") < 0) { +this.processCellParameter(); +} else if (this.key.startsWith("_atom_sites_fract_tran")) { +this.processUnitCellTransformMatrix(); +} else if (this.key.startsWith("_audit")) { +if (this.key.equals("_audit_block_code")) { +this.auditBlockCode = J.adapter.readers.cif.CifReader.fullTrim(this.field).toUpperCase(); +this.appendLoadNote(this.auditBlockCode); +if (this.htAudit != null && this.auditBlockCode.contains("_MOD_")) { +var key = JU.PT.rep(this.auditBlockCode, "_MOD_", "_REFRNCE_"); +if (this.asc.setSymmetry(this.htAudit.get(key)) != null) { +this.unitCellParams = this.asc.getSymmetry().getUnitCellParams(); +this.iHaveUnitCell = true; +}} else if (this.htAudit != null) { +if (this.symops != null) for (var i = 0; i < this.symops.size(); i++) this.setSymmetryOperator(this.symops.get(i)); + +}if (this.lastSpaceGroupName != null) this.setSpaceGroupName(this.lastSpaceGroupName); +} else if (this.key.equals("_audit_creation_date")) { +this.symmetry = null; +}} else if (this.key.startsWith("_chem_comp_atom") || this.key.startsWith("_atom")) { +this.processLoopBlock(); +} else if (this.key.startsWith("_symmetry_space_group_name_h-m") || this.key.equals("_space_group_it_number") || this.key.startsWith("_symmetry_space_group_name_hall") || this.key.startsWith("_space_group_name") || this.key.contains("_ssg_name") || this.key.contains("_magn_name") || this.key.contains("_bns_name")) { +this.processSymmetrySpaceGroupName(); +} else if (this.key.startsWith("_space_group_transform") || this.key.startsWith("_parent_space_group") || this.key.startsWith("_space_group_magn_transform")) { +this.processUnitCellTransform(); +} else if (this.key.contains("_database_code")) { +this.addModelTitle("ID"); +} else if ("__citation_title__publ_section_title__active_magnetic_irreps_details__".contains("_" + this.key + "__")) { +this.addModelTitle("TITLE"); +} else if (this.key.startsWith("_aflow_")) { +this.isAFLOW = true; +} else if (this.key.equals("_symmetry_int_tables_number")) { +var intTableNo = this.parseIntStr(this.field); +this.rotateHexCell = (this.isAFLOW && (intTableNo >= 143 && intTableNo <= 194)); +} else if (this.key.equals("_entry_id")) { +this.pdbID = this.field; +} else if (this.key.startsWith("_topol_")) { +this.getTopologyParser().ProcessRecord(this.key, this.field); +} else { +this.processSubclassEntry(); +}}return true; +}); +Clazz.defineMethod(c$, "skipKey", +function(key){ +return key.startsWith("_shelx_") || key.startsWith("_reflns_") || key.startsWith("_diffrn_"); +}, "~S"); +Clazz.defineMethod(c$, "addModelTitle", +function(key){ +if (this.asc.atomSetCount > this.titleAtomSet) this.appendLoadNote("\nMODEL: " + (this.titleAtomSet = this.asc.atomSetCount)); +this.appendLoadNote(key + ": " + J.adapter.readers.cif.CifReader.fullTrim(this.field)); +}, "~S"); +Clazz.defineMethod(c$, "processSubclassEntry", +function(){ +if (this.modDim > 0) this.getModulationReader().processEntry(); +}); +Clazz.defineMethod(c$, "processUnitCellTransform", +function(){ +this.field = JU.PT.replaceAllCharacters(this.field, " ", ""); +if (this.key.contains("_from_parent") || this.key.contains("child_transform")) this.addCellType("parent", this.field, true); + else if (this.key.contains("_to_standard") || this.key.contains("transform_bns_pp_abc")) this.addCellType("standard", this.field, false); +this.appendLoadNote(this.key + ": " + this.field); +}); +Clazz.defineMethod(c$, "addCellType", +function(type, data, isFrom){ +if (this.htCellTypes == null) this.htCellTypes = new java.util.Hashtable(); +if (data.startsWith("!")) { +data = data.substring(1); +isFrom = !isFrom; +}var cell = (isFrom ? "!" : "") + data; +this.htCellTypes.put(type, cell); +if (type.equalsIgnoreCase(this.strSupercell)) { +this.strSupercell = cell; +this.htCellTypes.put("super", (isFrom ? "!" : "") + data); +this.htCellTypes.put("conventional", (isFrom ? "" : "!") + data); +}}, "~S,~S,~B"); +Clazz.defineMethod(c$, "getModulationReader", +function(){ +return (this.modr == null ? this.initializeMSCIF() : this.modr); +}); +Clazz.defineMethod(c$, "initializeMSCIF", +function(){ +if (this.modr == null) this.ms = this.modr = this.getInterface("J.adapter.readers.cif.MSCifParser"); +this.modulated = (this.modr.initialize(this, this.modDim) > 0); +return this.modr; +}); +Clazz.defineMethod(c$, "newModel", +function(modelNo){ +if (modelNo < 0) { +if (this.modelNumber == 1 && this.asc.ac == 0 && this.nAtoms == 0 && !this.haveGlobalDummy && !this.skipping) { +this.modelNumber = 0; +this.haveModel = false; +this.haveGlobalDummy = true; +this.asc.removeCurrentAtomSet(); +}modelNo = ++this.modelNumber; +}this.skipping = !this.doGetModel(this.modelNumber = modelNo, null); +if (this.skipping) { +if (!this.isMMCIF) this.cifParser.getTokenPeeked(); +return; +}this.chemicalName = ""; +this.thisStructuralFormula = ""; +this.thisFormula = ""; +this.iHaveDesiredModel = this.isLastModel(this.modelNumber); +if (this.isCourseGrained) this.asc.setCurrentModelInfo("courseGrained", Boolean.TRUE); +if (this.nAtoms0 > 0 && this.nAtoms0 == this.asc.ac) { +this.modelNumber--; +this.haveModel = false; +this.asc.removeCurrentAtomSet(); +} else if (this.asc.iSet >= 0) { +this.applySymmetryAndSetTrajectory(); +}this.isMolecular = false; +if (this.auditBlockCode == null) { +this.modDim = 0; +}}, "~N"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (this.htOxStates != null) this.setOxidationStates(); +if (this.asc.iSet > 0 && this.asc.getAtomSetAtomCount(this.asc.iSet) == 0) this.asc.atomSetCount--; + else if (!this.finalizeSubclass()) this.applySymmetryAndSetTrajectory(); +var n = this.asc.atomSetCount; +if (n > 1) this.asc.setCollectionName(""); +if (this.pdbID != null) this.asc.setCurrentModelInfo("pdbID", this.pdbID); +this.finalizeReaderASCR(); +this.addHeader(); +if (this.haveAromatic) this.addJmolScript("calculate aromatic"); +}); +Clazz.defineMethod(c$, "setOxidationStates", +function(){ +for (var i = this.asc.ac; --i >= 0; ) { +var a = this.asc.atoms[i]; +var sym = a.typeSymbol; +var data; +if (sym != null && (data = this.htOxStates.get(sym)) != null) { +var charge = data[0]; +var radius = data[1]; +if (!Float.isNaN(charge)) { +a.formalCharge = Math.round(charge); +}if (!Float.isNaN(radius)) { +a.bondingRadius = radius; +}}} +}); +Clazz.defineMethod(c$, "addHeader", +function(){ +var header = this.cifParser.getFileHeader(); +if (header.length > 0) { +var s = this.setLoadNote(); +this.appendLoadNote(null); +this.appendLoadNote(header); +this.appendLoadNote(s); +this.setLoadNote(); +this.asc.setInfo("fileHeader", header); +}}); +Clazz.defineMethod(c$, "finalizeSubclass", +function(){ +return (this.subParser == null ? false : this.subParser.finalizeReader()); +}); +Clazz.overrideMethod(c$, "doPreSymmetry", +function(){ +if (this.magCenterings != null) this.addLatticeVectors(); +if (this.modDim > 0) this.getModulationReader().setModulation(false, null); +if (this.isMagCIF) { +this.asc.getXSymmetry().scaleFractionalVibs(); +this.vibsFractional = true; +}}); +Clazz.overrideMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +if (this.isMMCIF) this.checkNearAtoms = false; +var doCheckBonding = this.doCheckUnitCell && !this.isMMCIF; +if (this.isMMCIF && this.asc.iSet >= 0) { +var modelIndex = this.asc.iSet; +this.asc.setCurrentModelInfo("PDB_CONECT_firstAtom_count_max", Clazz.newIntArray(-1, [this.asc.getAtomSetAtomIndex(modelIndex), this.asc.getAtomSetAtomCount(modelIndex), this.maxSerial])); +}if (this.htCellTypes != null) { +for (var e, $e = this.htCellTypes.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.asc.setCurrentModelInfo("unitcell_" + e.getKey(), e.getValue()); + +this.htCellTypes = null; +}if (!this.haveCellWaveVector) this.modDim = 0; +if (this.doApplySymmetry && !this.iHaveFractionalCoordinates) this.fractionalizeCoordinates(true); +if (!this.haveCellWaveVector) { +this.modDim = 0; +}this.applySymTrajASCR(); +if (!this.haveCellWaveVector) { +if (!this.isMolecular) { +this.asc.setBSAtomsForSet(-1); +}}if (doCheckBonding && (this.bondTypes.size() > 0 || this.isMolecular)) this.setBondingAndMolecules(); +this.asc.setCurrentModelInfo("fileHasUnitCell", Boolean.TRUE); +this.asc.xtalSymmetry = null; +}); +Clazz.overrideMethod(c$, "finalizeSubclassSymmetry", +function(haveSymmetry){ +var sym = (haveSymmetry ? this.asc.getXSymmetry().getBaseSymmetry() : null); +if (sym != null && sym.getSpaceGroup() == null) { +if (!this.isBinary && !this.isMMCIF) this.appendLoadNote("Invalid or missing space group operations!"); +sym = null; +}if (this.modDim > 0 && sym != null) { +this.addLatticeVectors(); +this.asc.setTensors(); +this.getModulationReader().setModulation(true, sym); +this.modr.finalizeModulation(); +}if (this.isMagCIF) { +this.asc.setNoAutoBond(); +if (sym != null) { +this.addJmolScript("vectors on;vectors 0.15;"); +var n = this.asc.getXSymmetry().setSpinVectors(); +this.appendLoadNote(n + " magnetic moments - use VECTORS ON/OFF or VECTOR MAX x.x or SELECT VXYZ>0"); +}}if (sym != null && this.auditBlockCode != null && this.auditBlockCode.contains("REFRNCE")) { +if (this.htAudit == null) this.htAudit = new java.util.Hashtable(); +this.htAudit.put(this.auditBlockCode, sym); +}if (this.subParser != null) this.subParser.finalizeSymmetry(haveSymmetry); +}, "~B"); +Clazz.defineMethod(c$, "processDataParameter", +function(){ +this.bondTypes.clear(); +this.cifParser.getTokenPeeked(); +this.thisDataSetName = (this.key.length < 6 ? "" : this.key.substring(5)); +if (this.thisDataSetName.length > 0) this.nextAtomSet(); +if (this.debugging) JU.Logger.debug(this.key); +}); +Clazz.defineMethod(c$, "nextAtomSet", +function(){ +this.asc.setCurrentModelInfo("isCIF", Boolean.TRUE); +if (this.asc.iSet >= 0) { +if (this.isMMCIF) { +this.setModelPDB(true); +if (this.pdbID != null) this.asc.setCurrentModelInfo("pdbID", this.pdbID); +}this.asc.newAtomSet(); +if (this.isMMCIF) { +this.setModelPDB(true); +if (this.pdbID != null) this.asc.setCurrentModelInfo("pdbID", this.pdbID); +}} else { +this.asc.setCollectionName(this.thisDataSetName); +}}); +Clazz.defineMethod(c$, "processChemicalInfo", +function(type){ +var field = this.field; +if (type.equals("name")) { +this.chemicalName = field = J.adapter.readers.cif.CifReader.fullTrim(field); +this.appendLoadNote(this.chemicalName); +if (!field.equals("?")) this.asc.setInfo("modelLoadNote", field); +} else if (type.equals("structuralFormula")) { +this.thisStructuralFormula = field = J.adapter.readers.cif.CifReader.fullTrim(field); +} else if (type.equals("formula")) { +this.thisFormula = field = J.adapter.readers.cif.CifReader.fullTrim(field); +if (this.thisFormula.length > 1) this.appendLoadNote(this.thisFormula); +}if (this.debugging) { +JU.Logger.debug(type + " = " + field); +}return field; +}, "~S"); +Clazz.defineMethod(c$, "processSymmetrySpaceGroupName", +function(){ +if (this.key.indexOf("_ssg_name") >= 0) { +this.modulated = true; +this.latticeType = (this.field).substring(0, 1); +} else if (this.modulated) { +return; +}var s = this.cifParser.toUnicode(this.field); +this.setSpaceGroupName(this.lastSpaceGroupName = (this.key.indexOf("h-m") > 0 ? "HM:" : this.modulated ? "SSG:" : this.key.indexOf("bns") >= 0 ? "BNS:" : this.key.indexOf("hall") >= 0 ? "Hall:" : "") + s); +}); +Clazz.defineMethod(c$, "addLatticeVectors", +function(){ +this.lattvecs = null; +if (this.magCenterings != null) { +this.latticeType = "Magnetic"; +this.lattvecs = new JU.Lst(); +for (var i = 0; i < this.magCenterings.size(); i++) { +var s = this.magCenterings.get(i); +var f = Clazz.newFloatArray (this.modDim + 4, 0); +if (s.indexOf("x1") >= 0) for (var j = 1; j <= this.modDim + 3; j++) s = JU.PT.rep(s, "x" + j, ""); + +var tokens = JU.PT.split(JU.PT.replaceAllCharacters(s, "xyz+", ""), ","); +var n = 0; +for (var j = 0; j < tokens.length; j++) { +s = tokens[j].trim(); +if (s.length == 0) continue; +if ((f[j] = JU.PT.parseFloatFraction(s)) != 0) n++; +} +if (n >= 2) this.lattvecs.addLast(f); +} +this.magCenterings = null; +} else if (this.latticeType != null && "ABCFI".indexOf(this.latticeType) >= 0) { +this.lattvecs = new JU.Lst(); +try { +this.ms.addLatticeVector(this.lattvecs, this.latticeType); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}if (this.lattvecs != null && this.lattvecs.size() > 0 && this.asc.getSymmetry().addLatticeVectors(this.lattvecs)) { +this.appendLoadNote("Note! " + this.lattvecs.size() + " symmetry operators added for lattice centering " + this.latticeType); +for (var i = 0; i < this.lattvecs.size(); i++) this.appendLoadNote(JU.PT.toJSON(null, this.lattvecs.get(i))); + +}this.latticeType = null; +}); +Clazz.defineMethod(c$, "processCellParameter", +function(){ +for (var i = 6; --i >= 0; ) { +if (this.key.equals(J.api.JmolAdapter.cellParamNames[i])) { +var p = this.parseFloatField(); +if (this.rotateHexCell && i == 5 && p == 120) p = -1; +this.setUnitCellItem(i, p); +return; +}} +}); +Clazz.defineMethod(c$, "processUnitCellTransformMatrix", +function(){ +var v = this.parseFloatField(); +if (Float.isNaN(v)) return; +for (var i = 0; i < J.adapter.readers.cif.CifReader.TransformFields.length; i++) { +if (this.key.indexOf(J.adapter.readers.cif.CifReader.TransformFields[i]) >= 0) { +this.setUnitCellItem(6 + i, v); +return; +}} +}); +Clazz.defineMethod(c$, "processLoopBlock", +function(){ +if (this.isLoop) { +this.skipLoopKeyword(); +this.key = this.cifParser.peekToken(); +if (this.key == null) return; +this.key = this.cifParser.fixKey(this.key0 = this.key); +}if (this.modDim > 0) { +switch (this.getModulationReader().processLoopBlock()) { +case 0: +break; +case -1: +this.skipLoop(false); +case 1: +return; +} +}var isLigand = false; +if (this.key.startsWith("_atom_site") || (isLigand = this.key.startsWith("_chem_comp_atom_"))) { +if (!this.processAtomSiteLoopBlock(isLigand)) return; +if (this.thisDataSetName.equals("global")) this.asc.setCollectionName(this.thisDataSetName = this.chemicalName); +if (!this.thisDataSetName.equals(this.lastDataSetName)) { +this.asc.setAtomSetName(this.thisDataSetName); +this.lastDataSetName = this.thisDataSetName; +}this.asc.setCurrentModelInfo("chemicalName", this.chemicalName); +this.asc.setCurrentModelInfo("structuralFormula", this.thisStructuralFormula); +this.asc.setCurrentModelInfo("formula", this.thisFormula); +return; +}if (this.key.startsWith("_space_group_symop") || this.key.startsWith("_symmetry_equiv_pos") || this.key.startsWith("_symmetry_ssg_equiv")) { +if (this.ignoreFileSymmetryOperators || this.modDim > 0 && this.key.indexOf("ssg") < 0) { +JU.Logger.warn("ignoring file-based symmetry operators"); +this.skipLoop(false); +} else { +this.processSymmetryOperationsLoopBlock(); +}return; +}if (this.key.startsWith("_citation")) { +this.processCitationListBlock(); +return; +}if (this.key.startsWith("_atom_type")) { +this.processAtomTypeLoopBlock(); +return; +}if (this.key.startsWith("_geom_bond")) { +this.processGeomBondLoopBlock(); +return; +}if (this.processSubclassLoopBlock()) return; +if (this.key.equals("_propagation_vector_seq_id")) { +this.addMore(); +return; +}this.skipLoop(false); +}); +Clazz.defineMethod(c$, "processSubclassLoopBlock", +function(){ +if (this.key.startsWith("_topol_")) { +return this.getTopologyParser().processBlock(this.key); +}return false; +}); +Clazz.defineMethod(c$, "getTopologyParser", +function(){ +if (this.subParser == null) { +this.subParser = (javajs.api.Interface.getInterface("J.adapter.readers.cif.TopoCifParser")); +this.subParser = this.subParser.setReader(this); +}return this.subParser; +}); +Clazz.defineMethod(c$, "addMore", +function(){ +var str; +var n = 0; +try { +while ((str = this.cifParser.peekToken()) != null && str.charAt(0) == '_') { +this.cifParser.getTokenPeeked(); +n++; +} +var m = 0; +var s = ""; +while ((str = this.cifParser.getNextDataToken()) != null) { +s += str + (m % n == 0 ? "=" : " "); +if (++m % n == 0) { +this.appendUunitCellInfo(s.trim()); +s = ""; +}} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "disableField", +function(fieldIndex){ +var i = this.key2col[fieldIndex]; +if (i != -1) this.col2key[i] = -1; +}, "~N"); +Clazz.defineMethod(c$, "processAtomTypeLoopBlock", +function(){ +this.parseLoopParameters(J.adapter.readers.cif.CifReader.atomTypeFields); +while (this.cifParser.getData()) { +var sym = this.getFieldString(0); +if (sym == null) continue; +var oxno = this.parseFloatStr(this.getFieldString(1)); +var radius = this.parseFloatStr(this.getFieldString(2)); +if (Float.isNaN(oxno) && Float.isNaN(radius)) continue; +if (this.htOxStates == null) this.htOxStates = new java.util.Hashtable(); +this.htOxStates.put(sym, Clazz.newFloatArray(-1, [oxno, radius])); +} +return true; +}); +Clazz.defineMethod(c$, "parseLoopParametersFor", +function(key, fieldNames){ +if (fieldNames[0].charAt(0) == '*') for (var i = fieldNames.length; --i >= 0; ) if (fieldNames[i].charAt(0) == '*') fieldNames[i] = key + fieldNames[i].substring(1); + +this.parseLoopParameters(fieldNames); +}, "~S,~A"); +Clazz.defineMethod(c$, "fieldProperty", +function(col){ +var k = (col < 0 ? -1 : this.col2key[col]); +if (k == -1) return -1; +this.field = this.cifParser.getColumnData(col); +return (col >= 0 && this.isFieldValid() ? this.col2key[col] : -1); +}, "~N"); +Clazz.defineMethod(c$, "processAtomSiteLoopBlock", +function(isLigand){ +this.isLigand = isLigand; +var pdbModelNo = -1; +var haveCoord = true; +var noPreviousReferences = this.asc.atomSymbolicMap.isEmpty(); +this.parseLoopParametersFor("_atom_site", J.adapter.readers.cif.CifReader.atomFields); +if (this.key2col[55] != -1) { +this.setFractionalCoordinates(false); +} else if (this.key2col[6] != -1 || this.key2col[52] != -1) { +this.setFractionalCoordinates(false); +this.disableField(3); +this.disableField(4); +this.disableField(5); +if (this.key2col[16] != -1 && !this.isMMCIF) { +this.setIsPDB(); +this.isMMCIF = true; +}} else if (this.key2col[3] != -1) { +this.setFractionalCoordinates(true); +this.disableField(6); +this.disableField(7); +this.disableField(8); +} else if (this.key2col[20] != -1 || this.key2col[21] != -1 || this.key2col[63] != -1) { +haveCoord = false; +} else { +this.skipLoop(false); +return false; +}var modelField = this.key2col[17]; +var siteMult = 0; +var atomLabels = (this.isMMCIF ? null : ""); +while (this.cifParser.getData()) { +if (modelField >= 0) { +pdbModelNo = this.checkPDBModelField(modelField, pdbModelNo); +if (pdbModelNo < 0) break; +if (this.skipping) continue; +}var atom = null; +var atomName = null; +if (this.isMMCIF) { +if (haveCoord) { +atom = new J.adapter.smarter.Atom(); +} else { +if (this.fieldProperty(this.key2col[20]) != -1 || this.fieldProperty(this.key2col[21]) != -1 || this.fieldProperty(this.key2col[63]) != -1) { +if ((atom = this.asc.getAtomFromName(this.field)) == null) continue; +} else { +continue; +}}} else { +var f = -1; +var f0 = -1; +if ((f0 = f = this.fieldProperty(this.key2col[1])) != -1 || (f = this.fieldProperty(this.key2col[49])) != -1 || (f = this.fieldProperty(this.key2col[73])) != -1 || (f0 = f = this.fieldProperty(this.key2col[20])) != -1 || (f = this.fieldProperty(this.key2col[21])) != -1 || (f = this.fieldProperty(this.key2col[63])) != -1) { +if (f0 != -1 && atomLabels != null) { +atom = this.asc.getAtomFromName(this.field); +if (this.addAtomLabelNumbers || atom != null) { +var key = ";" + this.field + ";"; +if (noPreviousReferences) { +atomLabels += key; +}if (atomLabels.indexOf(key) < 0) { +atomLabels += key; +} else { +this.field = atomName = (this.field) + (this.asc.ac + 1); +System.err.println("CifReader found duplicate atom_site_label! New label is " + this.field); +atom = null; +}}}}var field = this.field; +if (atom == null) { +atom = new J.adapter.smarter.Atom(); +if (f != -1) { +if (this.asc.iSet < 0) { +this.nextAtomSet(); +this.asc.newAtomSet(); +}this.asc.atomSymbolicMap.put(field, atom); +}}}var componentId = null; +var id = null; +var authAtom = null; +var authComp = null; +var authSeq = -2147483648; +var authAsym = null; +var wyckoff = null; +var haveAuth = false; +var seqID = 0; +var n = this.cifParser.getColumnCount(); +for (var i = 0; i < n; ++i) { +var tok = this.fieldProperty(i); +var field = this.field; +switch (tok) { +case -1: +break; +case 70: +id = field; +break; +case 50: +case 0: +var elementSymbol; +if (field.length < 2) { +elementSymbol = field; +} else { +var ch1 = Character.toLowerCase(field.charAt(1)); +if (J.adapter.smarter.Atom.isValidSym2(this.firstChar, ch1)) { +elementSymbol = "" + this.firstChar + ch1; +} else { +elementSymbol = "" + this.firstChar; +if (!this.haveHAtoms && this.firstChar == 'H') this.haveHAtoms = true; +}}atom.elementSymbol = elementSymbol; +atom.typeSymbol = field; +break; +case 49: +case 1: +case 73: +atom.atomName = (atomName == null ? field : atomName); +break; +case 2: +haveAuth = true; +authAtom = field; +break; +case 48: +case 72: +atom.group3 = field; +break; +case 11: +authComp = field; +haveAuth = true; +break; +case 59: +componentId = field; +break; +case 12: +authAsym = field; +haveAuth = true; +break; +case 71: +atom.sequenceNumber = seqID = this.parseIntField(); +break; +case 74: +if (this.allowWyckoff) { +wyckoff = field; +}break; +case 13: +haveAuth = true; +authSeq = this.parseIntField(); +break; +case 55: +var x = this.parseFloatField(); +if (this.readIdeal && !Float.isNaN(x)) atom.x = x; +break; +case 56: +var y = this.parseFloatField(); +if (this.readIdeal && !Float.isNaN(y)) atom.y = y; +break; +case 57: +var z = this.parseFloatField(); +if (this.readIdeal && !Float.isNaN(z)) atom.z = z; +break; +case 3: +atom.x = this.parsePrecision(field); +break; +case 52: +case 6: +atom.x = this.parseCartesianField(); +break; +case 4: +atom.y = this.parsePrecision(field); +break; +case 53: +case 7: +atom.y = this.parseCartesianField(); +break; +case 5: +atom.z = this.parsePrecision(field); +break; +case 54: +case 8: +atom.z = this.parseCartesianField(); +break; +case 51: +atom.formalCharge = this.parseIntStr(field); +break; +case 9: +var floatOccupancy = this.parseFloatField(); +if (!Float.isNaN(floatOccupancy)) atom.foccupancy = floatOccupancy; +break; +case 10: +atom.bfactor = this.parseFloatField() * (this.isMMCIF ? 1 : 100); +break; +case 14: +atom.insertionCode = this.firstChar; +break; +case 15: +case 60: +atom.altLoc = this.firstChar; +break; +case 58: +this.disorderAssembly = field; +break; +case 19: +if (this.firstChar == '-' && field.length > 1) { +atom.altLoc = field.charAt(1); +atom.isNegDisorder = true; +} else { +atom.altLoc = this.firstChar; +}break; +case 16: +if ("HETATM".equals(field)) atom.isHetero = true; +break; +case 18: +if ("dum".equals(field)) { +atom.x = NaN; +continue; +}break; +case 75: +case 61: +siteMult = this.parseIntField(); +break; +case 62: +case 47: +if (field.equalsIgnoreCase("Uiso")) { +var j = this.key2col[34]; +if (j != -1) this.asc.setU(atom, 7, this.getFloatColumnData(j)); +}break; +case 22: +case 23: +case 24: +case 25: +case 26: +case 27: +case 28: +case 29: +case 30: +case 31: +case 32: +case 33: +this.asc.setU(atom, (this.col2key[i] - 22) % 6, this.parseFloatField()); +break; +case 35: +case 36: +case 37: +case 38: +case 39: +case 40: +this.asc.setU(atom, 6, 4); +this.asc.setU(atom, (this.col2key[i] - 35) % 6, this.parseFloatField()); +break; +case 41: +case 42: +case 43: +case 44: +case 45: +case 46: +this.asc.setU(atom, 6, 0); +this.asc.setU(atom, (this.col2key[i] - 41) % 6, this.parseFloatField()); +break; +case 64: +case 65: +case 66: +case 67: +case 68: +case 69: +this.isMagCIF = true; +var pt = atom.vib; +if (pt == null) atom.vib = pt = new JU.Vibration().setType(-2); +var v = this.parseFloatField(); +switch (tok) { +case 64: +case 67: +pt.x = v; +this.appendLoadNote("magnetic moment: " + this.line); +break; +case 65: +case 68: +pt.y = v; +break; +case 66: +case 69: +pt.z = v; +break; +} +break; +} +} +if (!haveCoord) continue; +if (Float.isNaN(atom.x) || Float.isNaN(atom.y) || Float.isNaN(atom.z)) { +JU.Logger.warn("atom " + atom.atomName + " has invalid/unknown coordinates"); +continue; +}if (siteMult > 0 && wyckoff != null && wyckoff.length > 0) seqID = (siteMult << 16) + (wyckoff.charAt(0)).charCodeAt(0); +var strChain = componentId; +if (haveAuth) { +if (authAtom != null) atom.atomName = authAtom; +if (authComp != null) atom.group3 = authComp; +if (authSeq != -2147483648) atom.sequenceNumber = authSeq; +if (authAsym != null && this.useAuthorChainID) strChain = authAsym; +}if (strChain != null) { +this.setChainID(atom, strChain); +}if (this.maxSerial != -2147483648) this.maxSerial = Math.max(this.maxSerial, atom.sequenceNumber); +if (!this.addCifAtom(atom, id, componentId, strChain)) continue; +if ((id != null || wyckoff != null) && seqID > 0) { +var pt = atom.vib; +if (pt == null) pt = this.asc.addVibrationVector(atom.index, 0, NaN, 1094713365); +pt.x = seqID; +}if (this.modDim > 0 && siteMult != 0) atom.vib = JU.V3.new3(siteMult, 0, NaN); +} +this.asc.setCurrentModelInfo("isCIF", Boolean.TRUE); +if (this.isMMCIF) this.setModelPDB(true); +if (this.isMMCIF && this.skipping) this.skipping = false; +return true; +}, "~B"); +Clazz.defineMethod(c$, "parseCartesianField", +function(){ +return this.parseFloatField(); +}); +Clazz.defineMethod(c$, "addCifAtom", +function(atom, id, componentId, strChain){ +if (atom.elementSymbol == null && atom.atomName != null) atom.getElementSymbol(); +if (!this.filterCIFAtom(atom, componentId)) return false; +this.setAtomCoord(atom); +if (this.isMMCIF && !this.processSubclassAtom(atom, componentId, strChain)) return false; +if (this.asc.iSet < 0) this.nextAtomSet(); +this.asc.addAtomWithMappedName(atom); +if (id != null) { +this.asc.atomSymbolicMap.put(id, atom); +}this.ac++; +return true; +}, "J.adapter.smarter.Atom,~S,~S,~S"); +Clazz.defineMethod(c$, "checkPDBModelField", +function(modelField, currentModelNo){ +return 0; +}, "~N,~N"); +Clazz.defineMethod(c$, "processSubclassAtom", +function(atom, assemblyId, strChain){ +return true; +}, "J.adapter.smarter.Atom,~S,~S"); +Clazz.defineMethod(c$, "filterCIFAtom", +function(atom, componentId){ +if (!this.filterAtom(atom, -1)) return false; +if (this.filterAssembly && this.filterReject(this.filter, "$", componentId)) return false; +if (this.configurationPtr > 0) { +if (!this.disorderAssembly.equals(this.lastDisorderAssembly)) { +this.lastDisorderAssembly = this.disorderAssembly; +this.lastAltLoc = '\0'; +this.conformationIndex = this.configurationPtr; +}if (atom.altLoc != '\0') { +if (this.conformationIndex >= 0 && atom.altLoc != this.lastAltLoc) { +this.lastAltLoc = atom.altLoc; +this.conformationIndex--; +}if (this.conformationIndex != 0) { +JU.Logger.info("ignoring " + atom.atomName); +return false; +}}}return true; +}, "J.adapter.smarter.Atom,~S"); +Clazz.defineMethod(c$, "processCitationListBlock", +function(){ +this.parseLoopParameters(J.adapter.readers.cif.CifReader.citationFields); +while (this.cifParser.getData()) { +var title = this.getFieldString(0); +if (!this.isNull(title)) this.appendLoadNote("TITLE: " + this.cifParser.toUnicode(title)); +} +}); +Clazz.defineMethod(c$, "processSymmetryOperationsLoopBlock", +function(){ +this.parseLoopParametersFor("_space_group_symop", J.adapter.readers.cif.CifReader.symmetryOperationsFields); +var n; +this.symops = new JU.Lst(); +for (n = J.adapter.readers.cif.CifReader.symmetryOperationsFields.length; --n >= 0; ) if (this.key2col[n] != -1) break; + +if (n < 0) { +JU.Logger.warn("required _space_group_symop key not found"); +this.skipLoop(false); +return; +}n = 0; +var isMag = false; +while (this.cifParser.getData()) { +var ssgop = false; +var nn = this.cifParser.getColumnCount(); +var timeRev = (this.fieldProperty(this.key2col[7]) == -1 && this.fieldProperty(this.key2col[8]) == -1 && this.fieldProperty(this.key2col[6]) == -1 ? 0 : (this.field).equals("-1") ? -1 : 1); +for (var i = 0; i < nn; ++i) { +var tok = this.fieldProperty(i); +var field = this.field; +switch (tok) { +case 5: +if (field.indexOf('~') >= 0) field = JU.PT.rep(field, "~", ""); +case 2: +case 3: +this.modulated = true; +ssgop = true; +case 0: +case 4: +case 1: +if (this.allowRotations || timeRev != 0 || ++n == 1) if (!this.modulated || ssgop) { +if (tok == 1 || tok == 3) { +isMag = true; +timeRev = (field.endsWith(",+1") || field.endsWith(",1") ? 1 : field.endsWith(",-1") ? -1 : 0); +if (timeRev != 0) field = field.substring(0, field.lastIndexOf(',')); +}if (timeRev != 0) field += "," + (timeRev == 1 ? "m" : "-m"); +field = field.$replace(';', ' '); +this.symops.addLast(field); +this.setSymmetryOperator(field); +if (this.modulated && this.modDim == 0) this.modDim = this.getModulationReader().modDim; +}break; +case 9: +case 10: +case 11: +isMag = true; +if (this.magCenterings == null) this.magCenterings = new JU.Lst(); +this.magCenterings.addLast(field); +break; +} +} +} +if (this.ms != null && !isMag) this.addLatticeVectors(); +}); +Clazz.defineMethod(c$, "getBondOrder", +function(field){ +switch ((field.toUpperCase().charAt(0)).charCodeAt(0)) { +default: +JU.Logger.warn("unknown CIF bond order: " + field); +case 0: +case 83: +return 1; +case 68: +return 2; +case 84: +return 3; +case 81: +return 4; +case 65: +this.haveAromatic = true; +return 515; +} +}, "~S"); +Clazz.defineMethod(c$, "processGeomBondLoopBlock", +function(){ +var ok = !this.modulated && (this.isMolecular || !this.doApplySymmetry && !this.ignoreGeomBonds && !(this.stateScriptVersionInt >= 130304 && this.stateScriptVersionInt < 140403)); +if (ok) { +this.parseLoopParameters(J.adapter.readers.cif.CifReader.geomBondFields); +ok = this.checkAllFieldsPresent(J.adapter.readers.cif.CifReader.geomBondFields, 2, true); +}if (!ok) { +this.skipLoop(false); +return; +}var bondCount = 0; +while (this.cifParser.getData()) { +var name1 = this.getFieldString(0); +var name2 = this.getFieldString(1); +var order = this.getBondOrder(this.getFieldString(3)); +var sdist = this.getFieldString(2); +var distance = this.parseFloatStr(sdist); +if (distance == 0 || Float.isNaN(distance)) { +if (!this.iHaveFractionalCoordinates) { +var a = this.getAtomFromNameCheckCase(name1); +var b = this.getAtomFromNameCheckCase(name2); +if (a == null || b == null) { +System.err.println("ATOM_SITE atom for name " + (a != null ? name2 : b != null ? name1 : name1 + " and " + name2) + " not found"); +continue; +}this.asc.addNewBondWithOrder(a.index, b.index, order); +}continue; +}var dx = this.getStandardDeviation(sdist); +bondCount++; +this.bondTypes.addLast( Clazz.newArray(-1, [name1, name2, Float.$valueOf(distance), Float.$valueOf(dx), Integer.$valueOf(order)])); +} +if (bondCount > 0) { +JU.Logger.info(bondCount + " bonds read"); +if (!this.doApplySymmetry) { +this.isMolecular = true; +this.forceSymmetry(false); +}}}); +Clazz.defineMethod(c$, "getStandardDeviation", +function(sdist){ +var pt = sdist.indexOf('('); +if (pt >= 0) { +var data = sdist.toCharArray(); +var sdx = sdist.substring(pt + 1, data.length - 1); +var n = sdx.length; +for (var j = pt; --j >= 0; ) { +if (data[j] == '.' && --j < 0) break; +data[j] = (--n < 0 ? '0' : data[pt + 1 + n]); +} +var dx = this.parseFloatStr(String.valueOf(data)); +if (!Float.isNaN(dx)) { +return dx; +}}JU.Logger.info("CifReader error reading uncertainty for " + sdist + " (set to 0.015) on line " + this.line); +return 0.015; +}, "~S"); +Clazz.defineMethod(c$, "getAtomFromNameCheckCase", +function(name){ +var a = this.asc.getAtomFromName(name); +if (a == null) { +if (!this.asc.atomMapAnyCase) { +this.asc.setAtomMapAnyCase(); +}a = this.asc.getAtomFromName(name.toUpperCase()); +}return a; +}, "~S"); +Clazz.defineMethod(c$, "setBondingAndMolecules", +function(){ +this.atoms = this.asc.atoms; +this.firstAtom = this.asc.getLastAtomSetAtomIndex(); +var nat = this.asc.getLastAtomSetAtomCount(); +this.ac = this.firstAtom + nat; +JU.Logger.info("CIF creating molecule for " + nat + " atoms " + (this.bondTypes.size() > 0 ? " using GEOM_BOND records" : "")); +this.bsSets = new Array(nat); +this.symmetry = this.asc.getSymmetry(); +for (var i = this.firstAtom; i < this.ac; i++) { +var ipt = this.asc.getAtomFromName(this.atoms[i].atomName).index - this.firstAtom; +if (ipt < 0) continue; +if (this.bsSets[ipt] == null) this.bsSets[ipt] = new JU.BS(); +this.bsSets[ipt].set(i - this.firstAtom); +} +if (this.isMolecular) { +this.atomRadius = Clazz.newFloatArray (this.ac, 0); +for (var i = this.firstAtom; i < this.ac; i++) { +var elemnoWithIsotope = J.api.JmolAdapter.getElementNumber(this.atoms[i].getElementSymbol()); +this.atoms[i].elementNumber = elemnoWithIsotope; +var charge = (this.atoms[i].formalCharge == -2147483648 ? 0 : this.atoms[i].formalCharge); +if (elemnoWithIsotope > 0) this.atomRadius[i] = J.api.JmolAdapter.getBondingRadius(elemnoWithIsotope, charge); +} +this.bsConnected = new Array(this.ac); +for (var i = this.firstAtom; i < this.ac; i++) this.bsConnected[i] = new JU.BS(); + +this.bsMolecule = new JU.BS(); +this.bsExclude = new JU.BS(); +}var isFirst = true; +this.bsBondDuplicates = new JU.BS(); +while (this.createBonds(isFirst)) { +isFirst = false; +} +if (this.isMolecular && this.iHaveFractionalCoordinates && !this.bsMolecule.isEmpty()) { +var bs = this.asc.getBSAtoms(this.asc.bsAtoms == null ? this.firstAtom : 0); +bs.clearBits(this.firstAtom, this.ac); +bs.or(this.bsMolecule); +bs.andNot(this.bsExclude); +for (var i = this.firstAtom; i < this.ac; i++) { +if (bs.get(i)) this.symmetry.toCartesian(this.atoms[i], true); + else if (this.debugging) JU.Logger.debug(this.molecularType + " removing " + i + " " + this.atoms[i].atomName + " " + this.atoms[i]); +} +this.asc.setCurrentModelInfo("unitCellParams", null); +if (this.nMolecular++ == this.asc.iSet) { +this.asc.clearGlobalBoolean(0); +this.asc.clearGlobalBoolean(1); +this.asc.clearGlobalBoolean(2); +}}if (this.bondTypes.size() > 0) this.asc.setCurrentModelInfo("hasBonds", Boolean.TRUE); +this.bondTypes.clear(); +this.atomRadius = null; +this.bsSets = null; +this.bsConnected = null; +this.bsMolecule = null; +this.bsExclude = null; +}); +Clazz.defineMethod(c$, "fixAtomForBonding", +function(pt, i){ +pt.setT(this.atoms[i]); +if (this.iHaveFractionalCoordinates) this.symmetry.toCartesian(pt, true); +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "createBonds", +function(doInit){ +var list = ""; +var haveH = false; +for (var i = this.bondTypes.size(); --i >= 0; ) { +if (this.bsBondDuplicates.get(i)) continue; +var o = this.bondTypes.get(i); +var distance = (o[2]).floatValue(); +var dx = (o[3]).floatValue(); +var order = (o[4]).intValue(); +var a1 = this.getAtomFromNameCheckCase(o[0]); +var a2 = this.getAtomFromNameCheckCase(o[1]); +if (a1 == null || a2 == null) { +System.err.println("CifReader checking GEOM_BOND " + o[0] + "-" + o[1] + " found " + a1 + " " + a2); +continue; +}if (Float.isNaN(a1.x) || Float.isNaN(a2.x)) { +System.err.println("CifReader checking GEOM_BOND " + o[0] + "-" + o[1] + " found x coord NaN"); +continue; +}var iatom1 = a1.index; +var iatom2 = a2.index; +if (doInit) { +var key = ";" + iatom1 + ";" + iatom2 + ";" + distance; +if (list.indexOf(key) >= 0) { +this.bsBondDuplicates.set(i); +continue; +}list += key; +}var bs1 = this.bsSets[iatom1 - this.firstAtom]; +var bs2 = this.bsSets[iatom2 - this.firstAtom]; +if (bs1 == null || bs2 == null) continue; +if (this.atoms[iatom1].elementNumber == 1 || this.atoms[iatom2].elementNumber == 1) haveH = true; +for (var j = bs1.nextSetBit(0); j >= 0; j = bs1.nextSetBit(j + 1)) { +for (var k = bs2.nextSetBit(0); k >= 0; k = bs2.nextSetBit(k + 1)) { +if ((!this.isMolecular || !this.bsConnected[j + this.firstAtom].get(k)) && this.checkBondDistance(this.atoms[j + this.firstAtom], this.atoms[k + this.firstAtom], distance, dx)) { +this.addNewBond(j + this.firstAtom, k + this.firstAtom, order); +}} +} +} +if (!this.iHaveFractionalCoordinates) return false; +if (this.bondTypes.size() > 0 && !haveH) for (var i = this.firstAtom; i < this.ac; i++) if (this.atoms[i].elementNumber == 1) { +var checkAltLoc = (this.atoms[i].altLoc != '\0'); +for (var k = this.firstAtom; k < this.ac; k++) if (k != i && this.atoms[k].elementNumber != 1 && (!checkAltLoc || this.atoms[k].altLoc == '\0' || this.atoms[k].altLoc == this.atoms[i].altLoc)) { +if (!this.bsConnected[i].get(k) && this.checkBondDistance(this.atoms[i], this.atoms[k], 1.1, 0)) this.addNewBond(i, k, 1); +} +} +if (!this.isMolecular) return false; +if (doInit) for (var i = this.firstAtom; i < this.ac; i++) if (this.atoms[i].atomSite + this.firstAtom == i && !this.bsMolecule.get(i)) this.setBs(this.atoms, i, this.bsConnected, this.bsMolecule); + +var bondTolerance = this.vwr.getFloat(570425348); +var bsBranch = new JU.BS(); +var cart1 = new JU.P3(); +var cart2 = new JU.P3(); +var nFactor = 2; +for (var i = this.firstAtom; i < this.ac; i++) if (!this.bsMolecule.get(i) && !this.bsExclude.get(i)) for (var j = this.bsMolecule.nextSetBit(0); j >= 0; j = this.bsMolecule.nextSetBit(j + 1)) if (this.symmetry.checkDistance(this.atoms[j], this.atoms[i], this.atomRadius[i] + this.atomRadius[j] + bondTolerance, 0, nFactor, nFactor, nFactor, this.ptOffset)) { +this.setBs(this.atoms, i, this.bsConnected, bsBranch); +for (var k = bsBranch.nextSetBit(0); k >= 0; k = bsBranch.nextSetBit(k + 1)) { +this.atoms[k].add(this.ptOffset); +this.fixAtomForBonding(cart1, k); +var bs = this.bsSets[this.asc.getAtomIndex(this.atoms[k].atomName) - this.firstAtom]; +if (bs != null) for (var ii = bs.nextSetBit(0); ii >= 0; ii = bs.nextSetBit(ii + 1)) { +if (ii + this.firstAtom == k) continue; +this.fixAtomForBonding(cart2, ii + this.firstAtom); +if (cart2.distance(cart1) < 0.1) { +this.bsExclude.set(k); +break; +}} +this.bsMolecule.set(k); +} +return true; +} + +return false; +}, "~B"); +Clazz.defineMethod(c$, "checkBondDistance", +function(a, b, distance, dx){ +if (this.iHaveFractionalCoordinates) return this.symmetry.checkDistance(a, b, distance, dx, 0, 0, 0, this.ptOffset); +var d = a.distance(b); +return (dx > 0 ? Math.abs(d - distance) <= dx : d <= distance && d > 0.1); +}, "J.adapter.smarter.Atom,J.adapter.smarter.Atom,~N,~N"); +Clazz.defineMethod(c$, "addNewBond", +function(i, j, order){ +this.asc.addNewBondWithOrder(i, j, order); +if (!this.isMolecular) return; +this.bsConnected[i].set(j); +this.bsConnected[j].set(i); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setBs", +function(atoms, iatom, bsBonds, bs){ +var bsBond = bsBonds[iatom]; +bs.set(iatom); +for (var i = bsBond.nextSetBit(0); i >= 0; i = bsBond.nextSetBit(i + 1)) { +if (!bs.get(i)) this.setBs(atoms, i, bsBonds, bs); +} +}, "~A,~N,~A,JU.BS"); +Clazz.defineMethod(c$, "checkSubclassSymmetry", +function(){ +return this.doCheckUnitCell; +}); +Clazz.defineMethod(c$, "checkAllFieldsPresent", +function(keys, lastKey, critical){ +for (var i = (lastKey < 0 ? keys.length : lastKey); --i >= 0; ) if (this.key2col[i] == -1) { +if (critical) JU.Logger.warn("CIF reader missing property: " + keys[i]); +return false; +} +return true; +}, "~A,~N,~B"); +Clazz.defineMethod(c$, "isNull", +function(key){ +return key.equals("\0"); +}, "~S"); +Clazz.defineMethod(c$, "skipLoop", +function(doReport){ +if (this.isLoop) this.cifParser.skipLoop(doReport); +}, "~B"); +c$.fullTrim = Clazz.defineMethod(c$, "fullTrim", +function(s){ +var str = s; +var pt0 = -1; +var pt1 = str.length; +while (++pt0 < pt1 && JU.PT.isWhitespace(str.charAt(pt0))) { +} +while (--pt1 > pt0 && JU.PT.isWhitespace(str.charAt(pt1))) { +} +return str.substring(pt0, pt1 + 1); +}, "~O"); +Clazz.defineMethod(c$, "isFieldValid", +function(){ +return ((this.field).length > 0 && (this.firstChar = (this.field).charAt(0)) != '\0'); +}); +Clazz.defineMethod(c$, "parseIntField", +function(){ +return this.parseIntStr(this.field); +}); +Clazz.defineMethod(c$, "parseFloatField", +function(){ +return this.parseFloatStr(this.field); +}); +Clazz.defineMethod(c$, "getData", +function(){ +this.key = this.cifParser.getTokenPeeked(); +if (!this.continueWith(this.key)) return false; +if (this.skipKey(this.key)) { +this.field = this.cifParser.skipNextToken(); +} else { +this.field = this.cifParser.getNextToken(); +}if (this.field == null) { +JU.Logger.warn("CIF ERROR ? end of file; data missing: " + this.key); +return false; +}var field = this.field; +return (field.length == 0 || field.charAt(0) != '\0'); +}); +Clazz.defineMethod(c$, "parseLoopParameters", +function(fieldNames){ +this.cifParser.parseDataBlockParameters(fieldNames, this.isLoop ? null : this.key0, this.field, this.key2col, this.col2key); +}, "~A"); +Clazz.defineMethod(c$, "getFieldString", +function(type){ +var i = this.key2col[type]; +return (i <= -1 ? "\0" : this.cifParser.getColumnData(i)); +}, "~N"); +Clazz.defineMethod(c$, "skipLoopKeyword", +function(){ +this.cifParser.getTokenPeeked(); +}); +Clazz.defineMethod(c$, "isLoopKey", +function(){ +return this.key.startsWith("loop_"); +}); +Clazz.defineMethod(c$, "getFloatColumnData", +function(i){ +return this.parseFloatStr(this.cifParser.getColumnData(i)); +}, "~N"); +Clazz.declareInterface(J.adapter.readers.cif.CifReader, "Parser"); +c$.TransformFields = Clazz.newArray(-1, ["x[1][1]", "x[1][2]", "x[1][3]", "r[1]", "x[2][1]", "x[2][2]", "x[2][3]", "r[2]", "x[3][1]", "x[3][2]", "x[3][3]", "r[3]"]); +c$.atomTypeFields = Clazz.newArray(-1, ["_atom_type_symbol", "_atom_type_oxidation_number", "_atom_type_radius_bond"]); +c$.atomFields = Clazz.newArray(-1, ["*_type_symbol", "*_label", "*_auth_atom_id", "*_fract_x", "*_fract_y", "*_fract_z", "*_cartn_x", "*_cartn_y", "*_cartn_z", "*_occupancy", "*_b_iso_or_equiv", "*_auth_comp_id", "*_auth_asym_id", "*_auth_seq_id", "*_pdbx_pdb_ins_code", "*_label_alt_id", "*_group_pdb", "*_pdbx_pdb_model_num", "*_calc_flag", "*_disorder_group", "*_aniso_label", "*_anisotrop_id", "*_aniso_u_11", "*_aniso_u_22", "*_aniso_u_33", "*_aniso_u_12", "*_aniso_u_13", "*_aniso_u_23", "*_anisotrop_u[1][1]", "*_anisotrop_u[2][2]", "*_anisotrop_u[3][3]", "*_anisotrop_u[1][2]", "*_anisotrop_u[1][3]", "*_anisotrop_u[2][3]", "*_u_iso_or_equiv", "*_aniso_b_11", "*_aniso_b_22", "*_aniso_b_33", "*_aniso_b_12", "*_aniso_b_13", "*_aniso_b_23", "*_aniso_beta_11", "*_aniso_beta_22", "*_aniso_beta_33", "*_aniso_beta_12", "*_aniso_beta_13", "*_aniso_beta_23", "*_adp_type", "_chem_comp_atom_comp_id", "_chem_comp_atom_atom_id", "_chem_comp_atom_type_symbol", "_chem_comp_atom_charge", "_chem_comp_atom_model_cartn_x", "_chem_comp_atom_model_cartn_y", "_chem_comp_atom_model_cartn_z", "_chem_comp_atom_pdbx_model_cartn_x_ideal", "_chem_comp_atom_pdbx_model_cartn_y_ideal", "_chem_comp_atom_pdbx_model_cartn_z_ideal", "*_disorder_assembly", "*_label_asym_id", "*_subsystem_code", "*_symmetry_multiplicity", "*_thermal_displace_type", "*_moment_label", "*_moment_crystalaxis_mx", "*_moment_crystalaxis_my", "*_moment_crystalaxis_mz", "*_moment_crystalaxis_x", "*_moment_crystalaxis_y", "*_moment_crystalaxis_z", "*_id", "*_label_seq_id", "*_label_comp_id", "*_label_atom_id", "*_wyckoff_label", "*_site_symmetry_multiplicity"]); +c$.citationFields = Clazz.newArray(-1, ["_citation_title"]); +c$.symmetryOperationsFields = Clazz.newArray(-1, ["*_operation_xyz", "*_magn_operation_xyz", "*_ssg_operation_algebraic", "*_magn_ssg_operation_algebraic", "_symmetry_equiv_pos_as_xyz", "_symmetry_ssg_equiv_pos_as_xyz", "*_magn_operation_timereversal", "*_magn_ssg_operation_timereversal", "*_operation_timereversal", "*_magn_centering_xyz", "*_magn_ssg_centering_algebraic", "*_magn_ssg_centering_xyz"]); +c$.geomBondFields = Clazz.newArray(-1, ["_geom_bond_atom_site_label_1", "_geom_bond_atom_site_label_2", "_geom_bond_distance", "_ccdc_geom_bond_type"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMCifReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMCifReader.js new file mode 100755 index 000000000000..53640fd0a708 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMCifReader.js @@ -0,0 +1,653 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["J.adapter.readers.cif.CifReader"], "J.adapter.readers.cif.MMCifReader", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.M4", "$.P3", "$.PT", "$.SB", "J.adapter.smarter.Atom", "$.Structure", "J.c.STR", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isBiomolecule = false; +this.byChain = false; +this.bySymop = false; +this.chainAtomMap = null; +this.chainAtomCounts = null; +this.vBiomolecules = null; +this.htBiomts = null; +this.htSites = null; +this.htHetero = null; +this.htBondMap = null; +this.assemblyIdAtoms = null; +this.thisChain = -1; +this.modelIndex = 0; +this.chainSum = null; +this.chainAtomCount = null; +this.isLigandBondBug = false; +this.mident = null; +this.requiresSorting = false; +this.structConnMap = null; +this.structConnList = ""; +this.doSetBonds = false; +this.modelStrings = ""; +this.done = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "MMCifReader", J.adapter.readers.cif.CifReader); +Clazz.overrideMethod(c$, "initSubclass", +function(){ +this.setIsPDB(); +this.mident = JU.M4.newM4(null); +if (!this.filteredPrecision) { +this.precision = 3; +this.filteredPrecision = true; +}this.isMMCIF = true; +if (this.isDSSP1) this.asc.setInfo("isDSSP1", Boolean.TRUE); +if (this.htParams.containsKey("isMutate")) this.asc.setInfo("isMutate", Boolean.TRUE); +this.doSetBonds = this.checkFilterKey("ADDBONDS"); +this.byChain = this.checkFilterKey("BYCHAIN"); +if (this.checkFilterKey("BIOMOLECULE")) this.filter = JU.PT.rep(this.filter, "BIOMOLECULE", "ASSEMBLY"); +this.isBiomolecule = this.checkFilterKey("ASSEMBLY"); +if (this.isBiomolecule) { +this.filter = this.filter.$replace(':', ' '); +this.bySymop = this.checkFilterKey("BYSYMOP"); +}this.isCourseGrained = this.byChain || this.bySymop; +if (this.isCourseGrained) { +this.chainAtomMap = new java.util.Hashtable(); +this.chainAtomCounts = new java.util.Hashtable(); +}this.isLigandBondBug = (this.stateScriptVersionInt >= 140204 && this.stateScriptVersionInt <= 140208 || this.stateScriptVersionInt >= 140304 && this.stateScriptVersionInt <= 140308); +}); +Clazz.overrideMethod(c$, "processSubclassEntry", +function(){ +if (this.key0.startsWith("_pdbx_struct_assembly_gen.") || this.key0.startsWith("_struct_conn.") || this.key0.startsWith("_struct_ref_seq_dif.") || this.key0.startsWith("_struct_conf.") || this.key0.startsWith("_struct_sheet_range.")) this.processSubclassLoopBlock(); + else if (this.key.equals("_rna3d")) { +this.addedData = this.field; +this.addedDataKey = this.key; +} else if (this.key.equals("_dssr")) { +this.dssr = this.vwr.parseJSONMap(this.reader.readLine()); +this.reader.readLine(); +}}); +Clazz.overrideMethod(c$, "processSubclassLoopBlock", +function(){ +if (this.key0.startsWith("_struct_ncs_oper.")) return this.processStructOperListBlock(true); +if (this.key0.startsWith("_pdbx_struct_oper_list.")) return this.processStructOperListBlock(false); +if (this.key0.startsWith("_pdbx_struct_assembly_gen.")) return this.processAssemblyGenBlock(); +if (this.key0.startsWith("_struct_ref_seq_dif.")) return this.processSequence(); +if (this.isCourseGrained) return false; +if (this.key0.startsWith("_struct_site_gen.")) return this.processStructSiteBlock(); +if (this.key0.startsWith("_chem_comp.")) return this.processChemCompLoopBlock(); +if (this.key0.startsWith("_struct_conf.")) return this.processStructConfLoopBlock(); +if (this.key0.startsWith("_struct_sheet_range.")) return this.processStructSheetRangeLoopBlock(); +if (this.isLigandBondBug) return false; +if (this.key0.startsWith("_chem_comp_bond.")) return this.processCompBondLoopBlock(); +if (this.key0.startsWith("_struct_conn.")) return this.processStructConnLoopBlock(); +return false; +}); +Clazz.defineMethod(c$, "sortAssemblyModels", +function(){ +var natoms = this.asc.ac; +var lastSet = -1; +var atoms = this.asc.atoms; +var newAtoms = new Array(natoms); +var ids = JU.PT.split("," + this.modelStrings + ",", ",,"); +var bsAtomsNew = (this.asc.bsAtoms == null ? null : JU.BS.newN(this.asc.bsAtoms.size())); +for (var im = 1, n = 0; im < ids.length; im++) { +var sModel = ids[im]; +var modelIndex = -1; +for (var is = 0; is < this.asc.atomSetCount; is++) { +var ia0 = this.asc.getAtomSetAtomIndex(is); +var ia1 = ia0 + this.asc.getAtomSetAtomCount(is); +var am = "" + this.modelMap.get("_" + is); +if (am.equals(sModel)) { +if (modelIndex < 0 && (modelIndex = is) > lastSet) lastSet = is; +for (var i = ia0; i < ia1; i++) { +if (bsAtomsNew == null || this.asc.bsAtoms.get(i)) { +if (bsAtomsNew != null) bsAtomsNew.set(n); +atoms[i].atomSetIndex = modelIndex; +newAtoms[n++] = atoms[i]; +}} +}} +} +this.asc.atoms = newAtoms; +this.asc.bsAtoms = bsAtomsNew; +if (++lastSet < this.asc.atomSetCount) this.asc.atomSetCount = lastSet; +}); +Clazz.overrideMethod(c$, "finalizeSubclass", +function(){ +if (this.byChain && !this.isBiomolecule) for (var id, $id = this.chainAtomMap.keySet().iterator (); $id.hasNext()&& ((id = $id.next ()) || true);) this.createParticle(id); + +var haveBiomolecule = (this.isBiomolecule && this.vBiomolecules != null && this.vBiomolecules.size() > 0); +if (!this.isCourseGrained && this.asc.ac == this.nAtoms) { +this.asc.removeCurrentAtomSet(); +} else { +if ((this.dssr != null || this.validation != null || this.addedData != null) && !this.isCourseGrained && !this.requiresSorting) { +var vs = (this.getInterface("J.adapter.readers.cif.MMCifValidationParser")).set(this); +var note = null; +if (this.addedData == null) { +if (this.validation != null || this.dssr != null) note = vs.finalizeValidations(this.vwr, this.modelMap); +} else if (this.addedDataKey.equals("_rna3d")) { +note = vs.finalizeRna3d(this.modelMap); +}if (note != null) this.appendLoadNote(note); +}this.setHetero(); +if (this.doSetBonds) this.setBonds(); +}if (this.asc.ac == 0 && !this.isCourseGrained) return false; +var spaceGroup = this.sgName; +if (this.htSites != null) this.addSites(this.htSites); +if (haveBiomolecule) { +this.asc.setCurrentModelInfo("biomolecules", this.vBiomolecules); +this.setBiomolecules(); +if (this.thisBiomolecule != null) { +if (this.iHaveFractionalCoordinates) this.fractionalizeCoordinates(false); +this.asc.getXSymmetry().applySymmetryBio(this.thisBiomolecule, this.applySymmetryToBonds, this.filter); +this.asc.xtalSymmetry = null; +}this.doCheckUnitCell = new Boolean (this.doCheckUnitCell &(this.iHaveUnitCell && this.doApplySymmetry)).valueOf(); +if (this.doCheckUnitCell) { +this.ignoreFileSpaceGroupName = true; +this.sgName = spaceGroup; +this.fractionalizeCoordinates(true); +this.asc.setCurrentModelInfo("biosymmetry", null); +this.asc.setCurrentModelInfo("biosymmetryCount", null); +this.checkNearAtoms = false; +if (this.byChain) return true; +}}if (this.latticeCells != null && this.latticeCells[0] != 0) this.addJmolScript("unitcell;axes on;axes unitcell;"); +if (this.requiresSorting) this.sortAssemblyModels(); +return true; +}); +Clazz.overrideMethod(c$, "checkSubclassSymmetry", +function(){ +this.checkNearAtoms = false; +var modelIndex = this.asc.iSet; +this.asc.setCurrentModelInfo("PDB_CONECT_firstAtom_count_max", Clazz.newIntArray(-1, [this.asc.getAtomSetAtomIndex(modelIndex), this.asc.getAtomSetAtomCount(modelIndex), this.maxSerial])); +return false; +}); +Clazz.defineMethod(c$, "setBonds", +function(){ +if (this.htBondMap == null) return; +var bsAtoms = this.asc.bsAtoms; +if (bsAtoms == null) bsAtoms = JU.BSUtil.newBitSet2(0, this.asc.ac); +var atoms = this.asc.atoms; +var seqid = -1; +var comp = null; +var map = null; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = atoms[i]; +var pt = a.sequenceNumber; +if (pt != seqid) { +seqid = pt; +if (comp != null) this.processBonds(this.htBondMap.get(comp), map, false); +map = new java.util.Hashtable(); +comp = atoms[i].group3; +if (!this.htBondMap.containsKey(comp)) { +comp = null; +continue; +}}if (comp == null) continue; +map.put(a.atomName, Integer.$valueOf(a.index)); +} +if (comp != null) this.processBonds(this.htBondMap.get(comp), map, false); +if (this.structConnMap != null) { +map = new java.util.Hashtable(); +seqid = -1; +comp = null; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = atoms[i]; +var pt = a.sequenceNumber; +if (pt != seqid) { +seqid = pt; +var ckey = a.chainID + a.group3 + seqid; +if (this.structConnList.indexOf(ckey) < 0) { +comp = null; +continue; +}comp = ckey; +}if (comp == null) continue; +map.put(comp + a.atomName + a.altLoc, Integer.$valueOf(a.index)); +} +this.processBonds(this.structConnMap, map, true); +}this.appendLoadNote(this.asc.bondCount + " bonds added"); +}); +Clazz.defineMethod(c$, "processBonds", +function(cmap, map, isStructConn){ +var i1; +var i2; +for (var i = 0, n = cmap.size(); i < n; i++) { +var o = cmap.get(i); +if ((i1 = map.get(o[0])) == null || (i2 = map.get(o[1])) == null) continue; +if (this.debugging) JU.Logger.debug((isStructConn ? "_struct_conn" : "_comp_bond") + " adding bond " + i1 + " " + i2 + " order=" + o[2]); +this.asc.addNewBondWithOrder(i1.intValue(), i2.intValue(), (o[2]).intValue()); +} +}, "JU.Lst,java.util.Map,~B"); +Clazz.defineMethod(c$, "processSequence", +function(){ +this.parseLoopParameters(J.adapter.readers.cif.MMCifReader.structRefFields); +var g1; +var g3; +while (this.cifParser.getData()) { +if (this.isNull(g1 = this.getFieldString(1).toLowerCase()) || g1.length != 1 || this.isNull(g3 = this.getFieldString(0))) continue; +if (this.htGroup1 == null) this.asc.setInfo("htGroup1", this.htGroup1 = new java.util.Hashtable()); +this.htGroup1.put(g3, g1); +} +return true; +}); +Clazz.defineMethod(c$, "processAssemblyGenBlock", +function(){ +this.parseLoopParameters(J.adapter.readers.cif.MMCifReader.assemblyFields); +while (this.cifParser.getData()) { +var assem = new Array(3); +var count = 0; +var p; +var n = this.cifParser.getColumnCount(); +for (var i = 0; i < n; ++i) { +switch (p = this.fieldProperty(i)) { +case 0: +case 1: +case 2: +count++; +assem[p] = this.field; +break; +} +} +if (count == 3) this.addAssembly(assem); +} +return true; +}); +Clazz.defineMethod(c$, "addAssembly", +function(assem){ +var id = assem[0]; +var list = assem[2]; +var operators = assem[1]; +var name = "biomolecule " + id; +JU.Logger.info(name + " operators " + operators + " ASYM_IDs " + list); +this.appendLoadNote("found " + name + ": " + list); +if (this.vBiomolecules == null) this.vBiomolecules = new JU.Lst(); +var info = null; +for (var i = this.vBiomolecules.size(); --i >= 0; ) if (this.vBiomolecules.get(i).get("name").equals(name)) { +info = this.vBiomolecules.get(i); +break; +} +if (info == null) { +info = new java.util.Hashtable(); +info.put("name", name); +var iMolecule = this.parseIntStr(id); +info.put("molecule", iMolecule == -2147483648 ? id : Integer.$valueOf(iMolecule)); +info.put("biomts", new JU.Lst()); +info.put("chains", new JU.Lst()); +info.put("assemblies", new JU.Lst()); +info.put("operators", new JU.Lst()); +this.vBiomolecules.addLast(info); +}(info.get("assemblies")).addLast("$" + list.$replace(',', '$')); +(info.get("operators")).addLast(this.decodeAssemblyOperators(operators)); +this.checkFilterAssembly(id, info); +}, "~A"); +Clazz.defineMethod(c$, "checkFilterAssembly", +function(id, info){ +if (this.checkFilterKey("ASSEMBLY " + id + ";") || this.checkFilterKey("ASSEMBLY=" + id + ";")) this.thisBiomolecule = info; +}, "~S,java.util.Map"); +Clazz.defineMethod(c$, "decodeAssemblyOperators", +function(ops){ +var pt = ops.indexOf(")("); +if (pt >= 0) return this.crossBinary(this.decodeAssemblyOperators(ops.substring(0, pt + 1)), this.decodeAssemblyOperators(ops.substring(pt + 1))); +if (ops.startsWith("(")) { +if (ops.indexOf("-") >= 0) ops = JU.BS.unescape("({" + ops.substring(1, ops.length - 1).$replace('-', ':').$replace(',', ' ') + "})").toJSON(); +ops = JU.PT.rep(ops, " ", ""); +ops = ops.substring(1, ops.length - 1); +}return ops; +}, "~S"); +Clazz.defineMethod(c$, "crossBinary", +function(ops1, ops2){ +var sb = new JU.SB(); +var opsLeft = JU.PT.split(ops1, ","); +var opsRight = JU.PT.split(ops2, ","); +for (var i = 0; i < opsLeft.length; i++) for (var j = 0; j < opsRight.length; j++) sb.append(",").append(opsLeft[i]).append("|").append(opsRight[j]); + + +return sb.toString().substring(1); +}, "~S,~S"); +Clazz.defineMethod(c$, "processStructOperListBlock", +function(isNCS){ +this.parseLoopParametersFor((isNCS ? "_struct_ncs_oper" : "_pdbx_struct_oper_list"), isNCS ? J.adapter.readers.cif.MMCifReader.ncsoperFields : J.adapter.readers.cif.MMCifReader.operFields); +var m = Clazz.newFloatArray (16, 0); +m[15] = 1; +while (this.cifParser.getData()) { +var count = 0; +var id = null; +var xyz = null; +var n = this.cifParser.getColumnCount(); +for (var i = 0; i < n; ++i) { +var p = this.fieldProperty(i); +switch (p) { +case -1: +break; +case 12: +id = this.field; +break; +case 13: +xyz = this.field; +break; +default: +m[p] = this.parseFloatField(); +++count; +} +} +if (id != null && (count == 12 || xyz != null && this.symmetry != null)) { +JU.Logger.info((isNCS ? "noncrystallographic symmetry operator " : "assembly operator ") + id + " " + xyz); +var m4 = new JU.M4(); +if (count != 12) { +this.symmetry.getMatrixFromString(xyz, m); +m[3] *= this.symmetry.getUnitCellInfoType(0) / 12; +m[7] *= this.symmetry.getUnitCellInfoType(1) / 12; +m[11] *= this.symmetry.getUnitCellInfoType(2) / 12; +}m4.setA(m); +this.addMatrix(id, m4, isNCS); +}} +return true; +}, "~B"); +Clazz.defineMethod(c$, "addMatrix", +function(id, m4, isNCS){ +if (isNCS) { +if (m4.equals(this.mident)) return; +m4.m33 = 0; +if (this.lstNCS == null) this.lstNCS = new JU.Lst(); +this.lstNCS.addLast(m4); +} else { +if (this.htBiomts == null) this.htBiomts = new java.util.Hashtable(); +this.htBiomts.put(id, m4); +}}, "~S,JU.M4,~B"); +Clazz.defineMethod(c$, "processChemCompLoopBlock", +function(){ +this.parseLoopParameters(J.adapter.readers.cif.MMCifReader.chemCompFields); +var groupName; +var hetName; +while (this.cifParser.getData()) if (!this.isNull(groupName = this.getFieldString(0)) && !this.isNull(hetName = this.getFieldString(1))) this.addHetero(groupName, hetName, true, true); + +return true; +}); +Clazz.defineMethod(c$, "addHetero", +function(groupName, hetName, doCheck, addNote){ +if (doCheck && !this.vwr.getJBR().isHetero(groupName)) return; +if (this.htHetero == null) this.htHetero = new java.util.Hashtable(); +if (doCheck && this.htHetero.containsKey(groupName)) return; +this.htHetero.put(groupName, hetName); +if (addNote) this.appendLoadNote(groupName + " = " + hetName); +}, "~S,~S,~B,~B"); +Clazz.defineMethod(c$, "processStructConfLoopBlock", +function(){ +if (this.ignoreStructure) { +this.skipLoop(false); +return false; +}this.parseLoopParametersFor("_struct_conf", J.adapter.readers.cif.MMCifReader.structConfFields); +if (!this.checkAllFieldsPresent(J.adapter.readers.cif.MMCifReader.structConfFields, -1, true)) { +this.skipLoop(true); +return false; +}while (this.cifParser.getData()) { +var structure = new J.adapter.smarter.Structure(-1, J.c.STR.HELIX, J.c.STR.HELIX, null, null, 0, null); +var type = this.getFieldString(0); +if (type.startsWith("TURN")) structure.structureType = structure.substructureType = J.c.STR.TURN; + else if (!type.startsWith("HELX")) structure.structureType = structure.substructureType = J.c.STR.NONE; + else structure.substructureType = J.adapter.smarter.Structure.getHelixType(this.parseIntFieldTok(9)); +structure.strandID = this.getFieldString(8); +structure.structureID = this.getFieldString(7); +this.addStructure(structure); +} +return true; +}); +Clazz.defineMethod(c$, "addStructure", +function(structure){ +structure.startChainID = this.vwr.getChainID(this.getFieldString(1), true); +structure.startSequenceNumber = this.parseIntFieldTok(2); +structure.startInsertionCode = (this.getFieldString(3)).charAt(0); +structure.endChainID = this.vwr.getChainID(this.getFieldString(4), true); +structure.endSequenceNumber = this.parseIntFieldTok(5); +structure.endInsertionCode = (this.getFieldString(6)).charAt(0); +this.asc.addStructure(structure); +}, "J.adapter.smarter.Structure"); +Clazz.defineMethod(c$, "parseIntFieldTok", +function(tok){ +return this.parseIntStr(this.getFieldString(tok)); +}, "~N"); +Clazz.defineMethod(c$, "processStructSheetRangeLoopBlock", +function(){ +if (this.ignoreStructure) { +this.skipLoop(false); +return false; +}this.parseLoopParametersFor("_struct_sheet_range", J.adapter.readers.cif.MMCifReader.structSheetRangeFields); +if (!this.checkAllFieldsPresent(J.adapter.readers.cif.MMCifReader.structSheetRangeFields, -1, true)) { +this.skipLoop(true); +return false; +}while (this.cifParser.getData()) this.addStructure( new J.adapter.smarter.Structure(-1, J.c.STR.SHEET, J.c.STR.SHEET, this.getFieldString(0), this.getFieldString(7), 1, null)); + +return true; +}); +Clazz.defineMethod(c$, "processStructSiteBlock", +function(){ +this.parseLoopParametersFor("_struct_site_gen", J.adapter.readers.cif.MMCifReader.structSiteFields); +var htSite = null; +this.htSites = new java.util.Hashtable(); +var seqNum; +var resID; +while (this.cifParser.getData()) { +if (this.isNull(seqNum = this.getFieldString(3)) || this.isNull(resID = this.getFieldString(1))) continue; +var siteID = this.getFieldString(0); +htSite = this.htSites.get(siteID); +if (htSite == null) { +htSite = new java.util.Hashtable(); +htSite.put("groups", ""); +this.htSites.put(siteID, htSite); +}var insCode = this.getFieldString(4); +var chainID = this.getFieldString(2); +var group = "[" + resID + "]" + seqNum + (this.isNull(insCode) ? "" : "^" + insCode) + (this.isNull(chainID) ? "" : ":" + chainID); +var groups = htSite.get("groups"); +groups += (groups.length == 0 ? "" : ",") + group; +htSite.put("groups", groups); +} +return true; +}); +Clazz.defineMethod(c$, "setBiomolecules", +function(){ +if (this.assemblyIdAtoms == null && this.chainAtomCounts == null) return; +var bsAll = new JU.BS(); +for (var i = this.vBiomolecules.size(); --i >= 0; ) { +var biomolecule = this.vBiomolecules.get(i); +this.setBiomolecule(biomolecule, (biomolecule === this.thisBiomolecule ? bsAll : null)); +} +if (this.isBiomolecule && bsAll.cardinality() < this.asc.ac) { +if (this.asc.bsAtoms != null) this.asc.bsAtoms.and(bsAll); + else if (!this.isCourseGrained) this.asc.bsAtoms = bsAll; +}}); +Clazz.defineMethod(c$, "setBiomolecule", +function(biomolecule, bsAll){ +var biomtchains = biomolecule.get("chains"); +var biomts = biomolecule.get("biomts"); +var operators = biomolecule.get("operators"); +var assemblies = biomolecule.get("assemblies"); +var sum = new JU.P3(); +var count = 0; +var bsAtoms = new JU.BS(); +var nAtomsTotal = 0; +var isBioCourse = (this.isBiomolecule && this.isCourseGrained); +for (var i = operators.size(); --i >= 0; ) { +var ops = JU.PT.split(operators.get(i), ","); +var ids = JU.PT.split(assemblies.get(i), "$"); +var chainlist = ""; +var nAtoms = 0; +for (var j = 1; j < ids.length; j++) { +var id = ids[j]; +chainlist += ":" + id + ";"; +if (this.assemblyIdAtoms != null) { +biomolecule.put("asemblyIdAtoms", this.assemblyIdAtoms); +var bs = this.assemblyIdAtoms.get(id); +if (bs != null) { +bsAtoms.or(bs); +if (bsAll != null) bsAll.or(bs); +nAtoms += bs.cardinality(); +}} else if (isBioCourse) { +var asum = this.chainAtomMap.get(id); +if (asum != null) { +if (this.bySymop) { +sum.add(asum); +count += this.chainAtomCounts.get(id)[0]; +} else { +this.createParticle(id); +nAtoms++; +}}}} +if (!this.isBiomolecule) continue; +for (var j = 0; j < ops.length; j++) { +var m = this.getOpMatrix(ops[j]); +if (m == null) return 0; +if (m.equals(this.mident)) { +biomts.add(0, this.mident); +biomtchains.add(0, chainlist); +} else { +biomts.addLast(m); +biomtchains.addLast(chainlist); +}} +if (this.bySymop && bsAll != null) { +nAtoms = 1; +var a1 = new J.adapter.smarter.Atom(); +a1.setT(sum); +a1.scale(1 / count); +a1.radius = 16; +this.asc.addAtom(a1); +}nAtoms *= ops.length; +nAtomsTotal += nAtoms; +} +biomolecule.put("atomCount", Integer.$valueOf(nAtomsTotal)); +return nAtomsTotal; +}, "java.util.Map,JU.BS"); +Clazz.defineMethod(c$, "createParticle", +function(id){ +var asum = this.chainAtomMap.get(id); +var c = this.chainAtomCounts.get(id)[0]; +var a = new J.adapter.smarter.Atom(); +a.setT(asum); +a.scale(1 / c); +a.elementSymbol = "Pt"; +this.setChainID(a, id); +a.radius = 16; +this.asc.addAtom(a); +}, "~S"); +Clazz.defineMethod(c$, "getOpMatrix", +function(ops){ +if (this.htBiomts == null) return JU.M4.newM4(null); +var pt = ops.indexOf("|"); +if (pt >= 0) { +var m = JU.M4.newM4(this.htBiomts.get(ops.substring(0, pt))); +m.mul(this.htBiomts.get(ops.substring(pt + 1))); +return m; +}return this.htBiomts.get(ops); +}, "~S"); +Clazz.defineMethod(c$, "processStructConnLoopBlock", +function(){ +this.parseLoopParametersFor("_struct_conn", J.adapter.readers.cif.MMCifReader.structConnFields); +while (this.cifParser.getData()) { +var sym1 = this.getFieldString(5); +var sym2 = this.getFieldString(11); +if (!sym1.equals(sym2) || !this.isNull(sym1) && !sym1.equals("1_555")) continue; +var type = this.getFieldString(12); +if (!type.startsWith("covale") && !type.equals("disulf") && !type.equals("metalc")) continue; +if (this.htBondMap == null) this.htBondMap = new java.util.Hashtable(); +var key1 = this.vwr.getChainID(this.getFieldString(0), true) + this.getFieldString(2) + this.parseIntFieldTok(1) + this.getFieldString(3) + this.getFieldString(4); +var key2 = this.vwr.getChainID(this.getFieldString(6), true) + this.getFieldString(8) + this.parseIntFieldTok(7) + this.getFieldString(9) + this.getFieldString(10); +var order = this.getBondOrder(this.getFieldString(13)); +if (this.structConnMap == null) this.structConnMap = new JU.Lst(); +this.structConnMap.addLast( Clazz.newArray(-1, [key1, key2, Integer.$valueOf(order)])); +if (this.structConnList.indexOf(key1) < 0) this.structConnList += key1; +if (this.structConnList.indexOf(key2) < 0) this.structConnList += key2; +} +return true; +}); +Clazz.defineMethod(c$, "processCompBondLoopBlock", +function(){ +this.doSetBonds = true; +this.parseLoopParametersFor("_chem_comp_bond", J.adapter.readers.cif.MMCifReader.chemCompBondFields); +while (this.cifParser.getData()) { +var comp = this.getFieldString(0); +var atom1 = this.getFieldString(1); +var atom2 = this.getFieldString(2); +var order = this.getBondOrder(this.getFieldString(3)); +if (this.getFieldString(4).charAt(0) == 'Y') switch (order) { +case 1: +order = 513; +break; +case 2: +order = 514; +break; +} +if (this.isLigand) { +this.asc.addNewBondWithOrderA(this.asc.getAtomFromName(atom1), this.asc.getAtomFromName(atom2), order); +} else if (this.haveHAtoms || this.htHetero != null && this.htHetero.containsKey(comp)) { +if (this.htBondMap == null) this.htBondMap = new java.util.Hashtable(); +var cmap = this.htBondMap.get(comp); +if (cmap == null) this.htBondMap.put(comp, cmap = new JU.Lst()); +cmap.addLast( Clazz.newArray(-1, [atom1, atom2, Integer.$valueOf(this.haveHAtoms ? order : 1)])); +}} +return true; +}); +Clazz.overrideMethod(c$, "processSubclassAtom", +function(atom, assemblyId, strChain){ +if (this.isBiomolecule) { +if (this.isCourseGrained) { +var sum = this.chainAtomMap.get(assemblyId); +if (sum == null) { +this.chainAtomMap.put(assemblyId, sum = new JU.P3()); +this.chainAtomCounts.put(assemblyId, Clazz.newIntArray (1, 0)); +}this.chainAtomCounts.get(assemblyId)[0]++; +sum.add(atom); +return false; +}} else if (this.byChain) { +if (this.thisChain != atom.chainID) { +this.thisChain = atom.chainID; +this.chainSum = this.chainAtomMap.get(strChain); +if (this.chainSum == null) { +this.chainAtomMap.put(strChain, this.chainSum = new JU.P3()); +this.chainAtomCounts.put(strChain, this.chainAtomCount = Clazz.newIntArray (1, 0)); +}}this.chainSum.add(atom); +this.chainAtomCount[0]++; +return false; +}if (assemblyId != null) { +if (this.assemblyIdAtoms == null) this.assemblyIdAtoms = new java.util.Hashtable(); +var bs = this.assemblyIdAtoms.get(assemblyId); +if (bs == null) this.assemblyIdAtoms.put(assemblyId, bs = new JU.BS()); +bs.set(this.ac); +}return true; +}, "J.adapter.smarter.Atom,~S,~S"); +Clazz.overrideMethod(c$, "checkPDBModelField", +function(modelField, currentModelNo){ +this.fieldProperty(modelField); +var modelNo = this.parseIntField(); +return (modelNo == currentModelNo ? modelNo : this.incrementModel(modelNo)); +}, "~N,~N"); +Clazz.defineMethod(c$, "incrementModel", +function(modelNo){ +var isAssembly = (this.thisDataSetName != null && this.thisDataSetName.indexOf("-assembly-") >= 0); +if (isAssembly) { +this.useFileModelNumbers = true; +var key = "," + modelNo + ","; +if (this.modelStrings.indexOf(key) >= 0) { +this.requiresSorting = true; +} else { +this.modelStrings += key; +}}if (this.iHaveDesiredModel && this.asc.atomSetCount > 0 && !isAssembly) { +this.done = true; +if (this.cifParser != null) { +this.skipLoop(false); +this.skipping = false; +}this.continuing = true; +return -2147483648; +}var modelNumberToUse = (this.useFileModelNumbers ? modelNo : ++this.modelIndex); +this.setHetero(); +this.newModel(modelNumberToUse); +if (!this.skipping) { +this.nextAtomSet(); +if (this.modelMap == null || this.asc.ac == 0) this.modelMap = new java.util.Hashtable(); +this.modelMap.put("" + modelNo, Integer.$valueOf(Math.max(0, this.asc.iSet))); +this.modelMap.put("_" + Math.max(0, this.asc.iSet), Integer.$valueOf(modelNo)); +}return modelNo; +}, "~N"); +Clazz.defineMethod(c$, "setHetero", +function(){ +if (this.htHetero != null) { +this.asc.setCurrentModelInfo("hetNames", this.htHetero); +this.asc.setInfo("hetNames", this.htHetero); +}}); +c$.ncsoperFields = Clazz.newArray(-1, ["*_matrix[1][1]", "*_matrix[1][2]", "*_matrix[1][3]", "*_vector[1]", "*_matrix[2][1]", "*_matrix[2][2]", "*_matrix[2][3]", "*_vector[2]", "*_matrix[3][1]", "*_matrix[3][2]", "*_matrix[3][3]", "*_vector[3]", "*_id", "*_symmetry_operation"]); +c$.operFields = Clazz.newArray(-1, ["*_matrix[1][1]", "*_matrix[1][2]", "*_matrix[1][3]", "*_vector[1]", "*_matrix[2][1]", "*_matrix[2][2]", "*_matrix[2][3]", "*_vector[2]", "*_matrix[3][1]", "*_matrix[3][2]", "*_matrix[3][3]", "*_vector[3]", "*_id", "*_symmetry_operation"]); +c$.assemblyFields = Clazz.newArray(-1, ["_pdbx_struct_assembly_gen_assembly_id", "_pdbx_struct_assembly_gen_oper_expression", "_pdbx_struct_assembly_gen_asym_id_list"]); +c$.structRefFields = Clazz.newArray(-1, ["_struct_ref_seq_dif_mon_id", "_struct_ref_seq_dif_db_mon_id"]); +c$.chemCompFields = Clazz.newArray(-1, ["_chem_comp_id", "_chem_comp_name"]); +c$.structConfFields = Clazz.newArray(-1, ["*_conf_type_id", "*_beg_auth_asym_id", "*_beg_auth_seq_id", "*_pdbx_beg_pdb_ins_code", "*_end_auth_asym_id", "*_end_auth_seq_id", "*_pdbx_end_pdb_ins_code", "*_id", "*_pdbx_pdb_helix_id", "*_pdbx_pdb_helix_class"]); +c$.structSheetRangeFields = Clazz.newArray(-1, ["*_sheet_id", "*_beg_auth_asym_id", "*_beg_auth_seq_id", "*_pdbx_beg_pdb_ins_code", "*_end_auth_asym_id", "*_end_auth_seq_id", "*_pdbx_end_pdb_ins_code", "*_id"]); +c$.structSiteFields = Clazz.newArray(-1, ["*_site_id", "*_auth_comp_id", "*_auth_asym_id", "*_auth_seq_id", "*_pdbx_auth_ins_code"]); +c$.structConnFields = Clazz.newArray(-1, ["*_ptnr1_auth_asym_id", "*_ptnr1_auth_seq_id", "*_ptnr1_auth_comp_id", "*_ptnr1_label_atom_id", "*_pdbx_ptnr1_label_alt_id", "*_ptnr1_symmetry", "*_ptnr2_auth_asym_id", "*_ptnr2_auth_seq_id", "*_ptnr2_auth_comp_id", "*_ptnr2_label_atom_id", "*_pdbx_ptnr2_label_alt_id", "*_ptnr2_symmetry", "*_conn_type_id", "*_pdbx_value_order"]); +c$.chemCompBondFields = Clazz.newArray(-1, ["*_comp_id", "*_atom_id_1", "*_atom_id_2", "*_value_order", "*_pdbx_aromatic_flag"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMCifValidationParser.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMCifValidationParser.js new file mode 100755 index 000000000000..e1aee151175c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMCifValidationParser.js @@ -0,0 +1,129 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(null, "J.adapter.readers.cif.MMCifValidationParser", ["java.util.Hashtable", "JU.Lst", "$.PT", "JS.SV", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.asResidues = false; +this.reader = null; +this.resMap = null; +this.atomMap = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "MMCifValidationParser", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(reader){ +this.reader = reader; +this.asResidues = reader.checkFilterKey("ASRES"); +return this; +}, "J.adapter.smarter.AtomSetCollectionReader"); +Clazz.defineMethod(c$, "finalizeValidations", +function(vwr, modelMap){ +var map = this.reader.dssr; +if (map != null) return vwr.getAnnotationParser(true).fixDSSRJSONMap(map); +this.mapAtomResIDs(modelMap); +var svMap = this.reader.validation; +var retProps = this.reader.vwr.getAnnotationParser(false).catalogValidations(this.reader.vwr, svMap, this.getModelAtomIndices(), this.resMap, (this.asResidues ? null : this.atomMap), modelMap); +var note = (retProps == null || retProps.size() == 0 ? null : this.setProperties(retProps)); +svMap.mapPut("_note", JS.SV.newS(note)); +return note; +}, "JV.Viewer,java.util.Map"); +Clazz.defineMethod(c$, "finalizeRna3d", +function(modelMap){ +this.mapAtomResIDs(modelMap); +var svMap = this.getRna3dMap(this.reader.addedData); +var note = this.reader.vwr.getAnnotationParser(false).catalogStructureUnits(this.reader.vwr, svMap, this.getModelAtomIndices(), this.resMap, null, modelMap); +svMap.mapPut("_note", JS.SV.newS(note)); +for (var i = this.reader.asc.atomSetCount; --i >= 0; ) { +var info = this.reader.asc.getAtomSetAuxiliaryInfo(i); +info.put("rna3d", svMap); +} +return note; +}, "java.util.Map"); +Clazz.defineMethod(c$, "getRna3dMap", +function(addedData){ +var map = new java.util.Hashtable(); +var next = Clazz.newIntArray (1, 0); +var id = ""; +while ((id = JU.PT.getQuotedStringNext(addedData, next)).length > 0) { +var units = JU.PT.getQuotedStringNext(addedData, next); +var type = "?"; +switch ((id.charAt(0)).charCodeAt(0)) { +case 72: +type = "hairpinLoops"; +break; +case 73: +type = "internalLoops"; +break; +case 74: +type = "junctions"; +break; +default: +JU.Logger.error("MMCif could not read: " + id + " " + units); +continue; +} +var list = map.get(type); +if (list == null) map.put(type, list = new JU.Lst()); +var m = new java.util.Hashtable(); +m.put("index", Integer.$valueOf(JU.PT.parseInt(id.substring(id.lastIndexOf("_") + 1)))); +m.put("units", units); +list.addLast(m); +} +return JS.SV.getVariableMap(map); +}, "~S"); +Clazz.defineMethod(c$, "mapAtomResIDs", +function(modelMap){ +var atoms = this.reader.asc.atoms; +this.resMap = new java.util.Hashtable(); +this.atomMap = new java.util.Hashtable(); +var iresLast = -1; +var resLast = null; +var smodel = "" + modelMap.get("_0"); +for (var i = 0, model = 1, i0 = 0, n = this.reader.asc.getAtomSetAtomCount(0); i < n; i++) { +var a = atoms[i]; +var ires = a.sequenceNumber; +var res = smodel + "_" + a.chainID + "_" + ires + "_" + (a.insertionCode == '\0' ? "" : "" + a.insertionCode); +var atom = res + "_" + a.atomName.toUpperCase() + "_" + (a.altLoc == '\0' ? "" : "" + Character.toLowerCase(a.altLoc)); +var ia = Integer.$valueOf(i - i0); +if (ires != iresLast) { +iresLast = ires; +if (resLast != null) resLast[1] = i - i0; +this.resMap.put(res, resLast = Clazz.newIntArray(-1, [i - i0, n])); +}this.atomMap.put(atom, ia); +if (i == n - 1) { +i0 += n; +n = this.reader.asc.getAtomSetAtomCount(model++); +}} +}, "java.util.Map"); +Clazz.defineMethod(c$, "getModelAtomIndices", +function(){ +var indices = Clazz.newIntArray (this.reader.asc.atomSetCount + 1, 0); +for (var m = indices.length - 1; --m >= 0; ) indices[m] = this.reader.baseAtomIndex + this.reader.asc.getAtomSetAtomIndex(m); + +indices[indices.length - 1] = this.reader.asc.ac; +return indices; +}); +Clazz.defineMethod(c$, "setProperties", +function(propList){ +var note = "Validations loaded:"; +for (var i = 0, n = propList.size(); i < n; ) { +var key = propList.get(i++); +var f = propList.get(i++); +var model = (propList.get(i++)).intValue(); +var isGroup = (propList.get(i++)).booleanValue(); +var count = 0; +var max = 0; +var reslast = -1; +var i0 = this.reader.asc.getAtomSetAtomIndex(model); +for (var j = f.length; --j >= 0; ) if (f[j] != 0) { +if (isGroup) { +var res = this.reader.asc.atoms[i0 + j].sequenceNumber; +if (res != reslast) { +reslast = res; +count++; +}} else { +count++; +}max = Math.max(f[j], max); +} +note += "\n property_" + key + " (" + (isGroup ? "residues: " : "atoms: ") + count + (max == 1 ? "" : ", max: " + (Clazz.floatToInt(max * 100)) / 100) + ")"; +this.reader.asc.setAtomProperties(key, f, model, isGroup); +} +return note; +}, "JU.Lst"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMTFReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMTFReader.js new file mode 100755 index 000000000000..974e71f323e1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MMTFReader.js @@ -0,0 +1,289 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["J.adapter.readers.cif.MMCifReader"], "J.adapter.readers.cif.MMTFReader", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.M4", "$.MessagePackReader", "$.PT", "$.SB", "J.adapter.smarter.Atom", "$.Bond", "$.Structure", "JS.SV", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveStructure = false; +this.$pdbID = null; +this.map = null; +this.fileAtomCount = 0; +this.opCount = 0; +this.groupModels = null; +this.groupMap = null; +this.groupDSSP = null; +this.atomGroup = null; +this.labelAsymList = null; +this.atomMap = null; +this.entities = null; +this.groupCount = 0; +this.ac0 = 0; +this.bsStructures = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "MMTFReader", J.adapter.readers.cif.MMCifReader); +Clazz.overrideMethod(c$, "addHeader", +function(){ +}); +Clazz.overrideMethod(c$, "setup", +function(fullPath, htParams, reader){ +this.isBinary = true; +this.isMMCIF = true; +this.iHaveFractionalCoordinates = false; +this.setupASCR(fullPath, htParams, reader); +}, "~S,java.util.Map,~O"); +Clazz.overrideMethod(c$, "processBinaryDocument", +function(){ +var t = System.currentTimeMillis(); +var doDoubleBonds = (!this.isCourseGrained && !this.checkFilterKey("NODOUBLE")); +this.isDSSP1 = !this.checkFilterKey("DSSP2"); +var mmtfImplementsDSSP2 = false; +this.applySymmetryToBonds = true; +this.map = ( new JU.MessagePackReader(this.binaryDoc, true)).readMap(); +this.entities = this.map.get("entityList"); +if (JU.Logger.debugging) { +for (var s, $s = this.map.keySet().iterator (); $s.hasNext()&& ((s = $s.next ()) || true);) JU.Logger.info(s); + +}this.asc.setInfo("noAutoBond", Boolean.TRUE); +JU.Logger.info("MMTF version " + this.map.get("mmtfVersion")); +JU.Logger.info("MMTF Producer " + this.map.get("mmtfProducer")); +var title = this.map.get("title"); +if (title != null) this.appendLoadNote(title); +this.$pdbID = this.map.get("structureId"); +if (this.$pdbID == null) this.$pdbID = this.map.get("pdbId"); +this.fileAtomCount = (this.map.get("numAtoms")).intValue(); +var nBonds = (this.map.get("numBonds")).intValue(); +this.groupCount = (this.map.get("numGroups")).intValue(); +this.groupModels = Clazz.newIntArray (this.groupCount, 0); +this.groupDSSP = Clazz.newIntArray (this.groupCount, 0); +this.groupMap = Clazz.newIntArray (this.groupCount, 0); +var modelCount = (this.map.get("numModels")).intValue(); +this.appendLoadNote("id=" + this.$pdbID + " numAtoms=" + this.fileAtomCount + " numBonds=" + nBonds + " numGroups=" + this.groupCount + " numModels=" + modelCount); +this.getMMTFAtoms(doDoubleBonds); +System.out.println("MMTF read and parsed in " + (System.currentTimeMillis() - t) + " ms"); +if (!this.isCourseGrained) { +var bo = this.decode("bondOrderList"); +var bi = this.decode("bondAtomList"); +this.addMMTFBonds(bo, bi, 0, doDoubleBonds, true); +if (this.isDSSP1 || mmtfImplementsDSSP2) this.getStructure(); +}this.setMMTFSymmetry(); +this.getMMTFBioAssembly(); +this.setModelPDB(true); +if (JU.Logger.debuggingHigh) JU.Logger.info(JS.SV.getVariable(this.map).asString()); +}); +Clazz.defineMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +this.ac0 = this.ac; +Clazz.superCall(this, J.adapter.readers.cif.MMTFReader, "applySymmetryAndSetTrajectory", []); +this.addStructureSymmetry(); +}); +Clazz.defineMethod(c$, "getMMTFAtoms", +function(doMulti){ +var chainsPerModel = this.map.get("chainsPerModel"); +var groupsPerChain = this.map.get("groupsPerChain"); +this.labelAsymList = this.decode("chainIdList"); +var authAsymList = this.decode("chainNameList"); +var groupTypeList = this.decode("groupTypeList"); +var groupIdList = this.decode("groupIdList"); +var groupList = this.map.get("groupList"); +var insCodes = this.decode("insCodeList"); +var atomId = this.decode("atomIdList"); +var haveSerial = (atomId != null); +var altloc = this.decode("altLocList"); +var occ = this.decode("occupancyList"); +var x = this.decode("xCoordList"); +var y = this.decode("yCoordList"); +var z = this.decode("zCoordList"); +var bf = this.decode("bFactorList"); +var nameList = (this.useAuthorChainID ? authAsymList : this.labelAsymList); +var iModel = -1; +var iChain = 0; +var nChain = 0; +var iGroup = 0; +var nGroup = 0; +var chainpt = 0; +var seqNo = 0; +var iatom = 0; +var chainID = ""; +var authAsym = ""; +var labelAsym = ""; +var insCode = '\u0000'; +this.atomMap = new Array(this.fileAtomCount); +this.atomGroup = Clazz.newIntArray (this.fileAtomCount, 0); +for (var j = 0, thisGroup = -1; j < this.groupCount; j++) { +if (++iGroup >= nGroup) { +chainID = nameList[chainpt]; +authAsym = authAsymList[chainpt]; +labelAsym = this.labelAsymList[chainpt]; +nGroup = groupsPerChain[chainpt++]; +iGroup = 0; +if (++iChain >= nChain) { +this.groupModels[j] = ++iModel; +nChain = chainsPerModel[iModel]; +iChain = 0; +this.setModelPDB(true); +this.incrementModel(iModel + 1); +this.asc.setCurrentModelInfo("pdbID", this.$pdbID); +this.nAtoms0 = this.asc.ac; +if (this.done) return; +}}var g = groupList[groupTypeList[j]]; +var atomNameList = g.get("atomNameList"); +var len = atomNameList.length; +if (this.skipping) { +iatom += len; +continue; +}var a0 = iatom; +if (insCodes != null) insCode = insCodes[j]; +seqNo = groupIdList[j]; +var group3 = g.get("groupName"); +var isHetero = this.vwr.getJBR().isHetero(group3); +if (isHetero) { +var hetName = "" + g.get("chemCompType"); +if (this.htHetero == null || !this.htHetero.containsKey(group3)) { +if (this.entities != null && hetName.equals("NON-POLYMER")) out : for (var i = this.entities.length; --i >= 0; ) { +var entity = this.entities[i]; +var chainList = entity.get("chainIndexList"); +for (var k = chainList.length; --k >= 0; ) if (chainList[k] == iChain) { +hetName = "a component of the entity \"" + entity.get("description") + "\""; +break out; +} +} +this.addHetero(group3, hetName, false, true); +}}var elementList = g.get("elementList"); +var haveAtom = false; +for (var ia = 0, pt = 0; ia < len; ia++, iatom++) { +var a = new J.adapter.smarter.Atom(); +a.isHetero = isHetero; +if (insCode.charCodeAt(0) != 0) a.insertionCode = insCode; +this.setAtomCoordXYZ(a, x[iatom], y[iatom], z[iatom]); +a.elementSymbol = elementList[pt]; +a.atomName = atomNameList[pt++]; +if (seqNo >= 0) this.maxSerial = Math.max(this.maxSerial, a.sequenceNumber = seqNo); +a.group3 = group3; +this.setChainID(a, chainID); +if (bf != null) a.bfactor = bf[iatom]; +if (altloc != null) a.altLoc = altloc[iatom]; +if (occ != null) a.foccupancy = occ[iatom]; +if (haveSerial) a.atomSerial = atomId[iatom]; +if (!this.filterAtom(a, -1) || !this.processSubclassAtom(a, labelAsym, authAsym)) continue; +if (!haveAtom) { +thisGroup++; +haveAtom = true; +}if (haveSerial) { +this.asc.addAtomWithMappedSerialNumber(a); +} else { +this.asc.addAtom(a); +}this.atomMap[iatom] = a; +this.atomGroup[this.ac] = j; +this.groupMap[j] = thisGroup; +this.ac++; +} +if (!this.isCourseGrained) { +var bo = g.get("bondOrderList"); +var bi = g.get("bondAtomList"); +this.addMMTFBonds(bo, bi, a0, doMulti, false); +}} +this.asc.setCurrentModelInfo("pdbID", this.$pdbID); +}, "~B"); +Clazz.defineMethod(c$, "addMMTFBonds", +function(bo, bi, a0, doMulti, isInter){ +if (bi == null) return; +doMulti = new Boolean (doMulti & (bo != null)).valueOf(); +for (var bj = 0, pt = 0, nj = Clazz.doubleToInt(bi.length / 2); bj < nj; bj++) { +var a1 = this.atomMap[bi[pt++] + a0]; +var a2 = this.atomMap[bi[pt++] + a0]; +if (a1 != null && a2 != null) { +var bond = new J.adapter.smarter.Bond(a1.index, a2.index, doMulti ? bo[bj] : 1); +this.asc.addBond(bond); +if (JU.Logger.debugging && isInter) { +JU.Logger.info("inter-group (" + (a1.atomSetIndex + 1) + "." + a1.index + "/" + (a2.atomSetIndex + 1) + "." + a2.index + ") bond " + a1.group3 + a1.sequenceNumber + "." + a1.atomName + " - " + a2.group3 + a2.sequenceNumber + "." + a2.atomName + " " + bond.order); +}}} +}, "~A,~A,~N,~B,~B"); +Clazz.defineMethod(c$, "setMMTFSymmetry", +function(){ +this.setSpaceGroupName(this.map.get("spaceGroup")); +var o = this.map.get("unitCell"); +if (o != null) for (var i = 0; i < 6; i++) this.setUnitCellItem(i, o[i]); + +}); +Clazz.defineMethod(c$, "getMMTFBioAssembly", +function(){ +var o = this.map.get("bioAssemblyList"); +if (o == null) return; +if (this.vBiomolecules == null) this.vBiomolecules = new JU.Lst(); +for (var i = o.length; --i >= 0; ) { +var info = new java.util.Hashtable(); +this.vBiomolecules.addLast(info); +var iMolecule = i + 1; +this.checkFilterAssembly("" + iMolecule, info); +info.put("name", "biomolecule " + iMolecule); +info.put("molecule", Integer.$valueOf(iMolecule)); +var assemb = new JU.Lst(); +var ops = new JU.Lst(); +info.put("biomts", new JU.Lst()); +info.put("chains", new JU.Lst()); +info.put("assemblies", assemb); +info.put("operators", ops); +var m = o[i]; +var tlist = m.get("transformList"); +var chlist = new JU.SB(); +for (var j = 0, n = tlist.length; j < n; j++) { +var t = tlist[j]; +chlist.setLength(0); +var chainList = t.get("chainIndexList"); +for (var k = 0, kn = chainList.length; k < kn; k++) chlist.append("$").append(this.labelAsymList[chainList[k]]); + +assemb.addLast(chlist.append("$").toString()); +var id = "" + (++this.opCount); +this.addMatrix(id, JU.M4.newA16(t.get("matrix")), false); +ops.addLast(id); +} +} +}); +Clazz.defineMethod(c$, "getStructure", +function(){ +var a = this.decode("secStructList"); +if (JU.Logger.debugging) JU.Logger.info(JU.PT.toJSON("secStructList", a)); +this.bsStructures = Clazz.newArray(-1, [ new JU.BS(), null, new JU.BS(), new JU.BS(), new JU.BS(), null, new JU.BS()]); +var lastGroup = -1; +for (var j = 0; j < a.length; j++) { +var type = a[j]; +switch (type) { +case 0: +case 2: +case 3: +case 4: +case 6: +var igroup = this.groupMap[j]; +this.bsStructures[type].set(igroup); +this.groupDSSP[igroup] = type + 1; +lastGroup = j; +} +} +var n = (this.isDSSP1 ? this.asc.iSet : this.groupModels[lastGroup]); +if (lastGroup >= 0) { +this.haveStructure = true; +this.asc.addStructure( new J.adapter.smarter.Structure(n, null, null, null, null, 0, this.bsStructures)); +}}); +Clazz.defineMethod(c$, "addStructureSymmetry", +function(){ +if (this.asc.ac == 0 || !this.haveStructure || this.thisBiomolecule == null || this.ac0 == this.asc.ac) return; +var atoms = this.asc.atoms; +var bsAtoms = this.asc.bsAtoms; +var ptGroup = -1; +var mygroup = -1; +for (var i = this.bsStructures.length; --i >= 0; ) if (this.bsStructures[i] != null) this.bsStructures[i].clearAll(); + +for (var i = this.ac0, n = this.asc.ac; i < n; i++) { +if (bsAtoms == null || bsAtoms.get(i)) { +var a = atoms[i]; +var igroup = this.atomGroup[a.atomSite]; +if (igroup != mygroup) { +mygroup = igroup; +ptGroup++; +var dssp = this.groupDSSP[igroup]; +if (dssp > 0) { +this.bsStructures[dssp - 1].set(ptGroup); +}}}} +}); +Clazz.defineMethod(c$, "decode", +function(key){ +return JU.MessagePackReader.decode(this.map.get(key)); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MSCifParser.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MSCifParser.js new file mode 100755 index 000000000000..9aad743b1db8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MSCifParser.js @@ -0,0 +1,319 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["J.adapter.readers.cif.MSRdr"], "J.adapter.readers.cif.MSCifParser", ["JU.M3", "$.Matrix", "$.PT", "J.adapter.readers.cif.Cif2DataParser"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.field = null; +this.comSSMat = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "MSCifParser", J.adapter.readers.cif.MSRdr); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.cif.MSCifParser, []); +}); +Clazz.defineMethod(c$, "processEntry", +function(){ +var cr = this.cr; +if (cr.key.equals("_cell_commen_t_section_1")) { +this.isCommensurate = true; +this.commensurateSection1 = cr.parseIntField(); +}if (cr.key.startsWith("_cell_commen_supercell_matrix")) { +this.isCommensurate = true; +if (this.comSSMat == null) this.comSSMat = JU.M3.newM3(null); +var tokens = JU.PT.split(cr.key, "_"); +var r = cr.parseIntStr(tokens[tokens.length - 2]); +var c = cr.parseIntStr(tokens[tokens.length - 1]); +if (r > 0 && c > 0) this.comSSMat.setElement(r - 1, c - 1, cr.parseFloatField()); +}}); +Clazz.defineMethod(c$, "processLoopBlock", +function(){ +var cr = this.cr; +var key = cr.key; +if (key.equals("_cell_subsystem_code")) return this.processSubsystemLoopBlock(); +if (!key.startsWith("_cell_wave") && !key.contains("fourier") && !key.contains("legendre") && !key.contains("_special_func")) { +if (key.contains("crenel_ortho")) cr.appendLoadNote("WARNING: Orthogonalized non-Legendre functions not supported.\nThe following block has been ignored. Use Legendre functions instead.\n\n" + cr.cifParser.skipLoop(true) + "=================================\n"); +return 0; +}if (cr.asc.iSet < 0) cr.asc.newAtomSet(); +cr.parseLoopParametersFor("_atom_site", J.adapter.readers.cif.MSCifParser.modulationFields); +var tok; +while (cr.cifParser.getData()) { +var ignore = false; +var type_id = null; +var atomLabel = null; +var axis = null; +var pt = Clazz.newDoubleArray(-1, [NaN, NaN, NaN]); +var q = null; +var c = NaN; +var w = NaN; +var fid = null; +var n = cr.cifParser.getColumnCount(); +var sep = "_"; +for (var i = 0; i < n; ++i) { +switch (tok = this.fieldProperty(cr, i)) { +case 0: +pt[0] = pt[1] = pt[2] = 0; +type_id = "F_"; +fid = this.field; +sep = ""; +break; +case 1: +cr.haveCellWaveVector = true; +type_id = "W_" + this.field; +sep = ""; +break; +case 41: +case 42: +case 43: +pt[0] = pt[1] = pt[2] = 0; +sep = ""; +case 14: +case 26: +case 51: +case 36: +case 44: +case 45: +case 46: +switch (tok) { +case 41: +case 42: +case 43: +fid = "?id" + this.field; +pt[2] = 1; +sep = "_"; +continue; +case 44: +case 45: +case 46: +atomLabel = axis = "*"; +sep = "_id"; +type_id = J.adapter.readers.cif.MSCifParser.modulationFields[tok].substring(11, 12).toUpperCase(); +break; +case 14: +case 26: +case 51: +case 36: +type_id = J.adapter.readers.cif.MSCifParser.modulationFields[tok].substring(11, 12).toUpperCase(); +break; +} +type_id += sep + this.field; +break; +case 47: +type_id = "J_O"; +pt[0] = pt[2] = 1; +axis = "0"; +atomLabel = this.field; +break; +case 31: +type_id = "O_0"; +axis = "0"; +atomLabel = this.field; +break; +case 19: +type_id = "D_S"; +axis = "0"; +atomLabel = this.field; +break; +case 56: +type_id = "M_T"; +axis = "0"; +atomLabel = this.field; +break; +case 62: +type_id = "D_L"; +atomLabel = this.field; +break; +case 66: +type_id = "U_L"; +atomLabel = this.field; +break; +case 70: +type_id = "O_L"; +atomLabel = this.field; +break; +case 12: +case 25: +case 49: +case 34: +atomLabel = this.field; +break; +case 13: +case 50: +case 63: +axis = this.field; +if (this.modAxes != null && this.modAxes.indexOf(axis.toUpperCase()) < 0) ignore = true; +break; +case 67: +case 35: +axis = this.field.toUpperCase(); +break; +case 8: +q = J.adapter.readers.cif.Cif2DataParser.getArrayFromStringList(this.field, this.modDim); +break; +default: +var f = this.parseDouble(this.field); +switch (tok) { +case 65: +case 72: +case 69: +pt[0] = f; +if (f != 0) pt[2] = 0; +break; +case 32: +case 28: +case 16: +case 53: +case 38: +case 78: +case 74: +case 76: +pt[2] = 0; +case 2: +case 5: +case 20: +case 57: +pt[0] = f; +break; +case 9: +if (q == null) q = Clazz.newDoubleArray (this.modDim, 0); +q[0] = f; +break; +case 10: +if (q == null) q = Clazz.newDoubleArray (this.modDim, 0); +q[1] = f; +break; +case 11: +if (q == null) q = Clazz.newDoubleArray (this.modDim, 0); +q[2] = f; +break; +case 17: +case 29: +case 54: +case 39: +pt[0] = f; +pt[2] = 1; +break; +case 71: +case 75: +axis = "0"; +case 64: +case 68: +case 3: +case 6: +case 27: +case 18: +case 30: +case 55: +case 40: +case 33: +case 21: +case 58: +case 48: +case 15: +case 52: +case 37: +case 73: +case 77: +pt[1] = f; +break; +case 4: +case 7: +case 22: +case 59: +pt[2] = f; +break; +case 23: +case 60: +c = f; +break; +case 24: +case 61: +w = f; +break; +} +break; +} +} +if (ignore || type_id == null && q == null || atomLabel != null && !atomLabel.equals("*") && cr.rejectAtomName(atomLabel)) continue; +var ok = true; +if (q != null) { +for (var j = 0, nzero = q.length; j < q.length; j++) if (Double.isNaN(q[j]) || q[j] > 1e100 || q[j] == 0 && --nzero == 0) { +ok = false; +} +if (!ok) continue; +this.addMod(key, "F_coefs_", fid, q); +pt[0] = NaN; +}for (var j = 0, nzero = pt.length; j < pt.length; j++) if (Double.isNaN(pt[j]) || pt[j] > 1e100 || pt[j] == 0 && --nzero == 0) { +ok = false; +break; +} +if (!ok) continue; +var tchar = type_id.charAt(0); +switch ((tchar).charCodeAt(0)) { +case 67: +case 68: +case 79: +case 77: +case 85: +case 74: +if (atomLabel == null || axis == null && tchar != 'O') continue; +if (type_id.equals("D_S") || type_id.equals("M_T")) { +if (Double.isNaN(c) || Double.isNaN(w)) continue; +if (pt[0] != 0) this.addMod(key, type_id + "#x;" + atomLabel, fid, Clazz.newDoubleArray(-1, [c, w, pt[0]])); +if (pt[1] != 0) this.addMod(key, type_id + "#y;" + atomLabel, fid, Clazz.newDoubleArray(-1, [c, w, pt[1]])); +if (pt[2] != 0) this.addMod(key, type_id + "#z;" + atomLabel, fid, Clazz.newDoubleArray(-1, [c, w, pt[2]])); +continue; +}if (type_id.indexOf("_L") == 1) { +if (type_id.startsWith("U")) type_id += Clazz.doubleToInt(pt[1]); + else axis += Clazz.doubleToInt(pt[1]); +}type_id += "#" + (axis == null ? "*" : axis) + ";" + atomLabel; +break; +} +this.addMod(key, type_id, fid, pt); +} +return 1; +}); +Clazz.defineMethod(c$, "addMod", +function(key, id, fid, params){ +var k = (fid == null ? id : id + fid); +this.addModulation(null, k, params, -1); +}, "~S,~S,~S,~A"); +Clazz.defineMethod(c$, "processSubsystemLoopBlock", +function(){ +var cr = this.cr; +cr.parseLoopParameters(null); +while (cr.cifParser.getData()) { +this.fieldProperty(cr, 0); +var id = this.field; +this.addSubsystem(id, this.getSparseMatrix(cr, "_w_", 1, 3 + this.modDim)); +} +return 1; +}); +Clazz.defineMethod(c$, "getSparseMatrix", +function(cr, term, i, dim){ +var m = new JU.Matrix(null, dim, dim); +var a = m.getArray(); +var key; +var p; +var n = cr.cifParser.getColumnCount(); +for (; i < n; ++i) { +if ((p = this.fieldProperty(cr, i)) < 0 || !(key = cr.cifParser.getColumnName(p)).contains(term)) continue; +var tokens = JU.PT.split(key, "_"); +var r = cr.parseIntStr(tokens[tokens.length - 2]); +var c = cr.parseIntStr(tokens[tokens.length - 1]); +if (r > 0 && c > 0) a[r - 1][c - 1] = this.parseDouble(this.field); +} +return m; +}, "J.adapter.readers.cif.CifReader,~S,~N,~N"); +Clazz.defineMethod(c$, "parseDouble", +function(field){ +var d = this.cr.parseFloatStr(field); +return this.fixDouble(d); +}, "~S"); +Clazz.defineMethod(c$, "fixDouble", +function(d){ +return d; +}, "~N"); +Clazz.defineMethod(c$, "fieldProperty", +function(cr, i){ +return ((this.field = cr.cifParser.getColumnData(i)).length > 0 && this.field.charAt(0) != '\0' ? cr.col2key[i] : -1); +}, "J.adapter.readers.cif.CifReader,~N"); +c$.modulationFields = Clazz.newArray(-1, ["*_fourier_wave_vector_seq_id", "_cell_wave_vector_seq_id", "_cell_wave_vector_x", "_cell_wave_vector_y", "_cell_wave_vector_z", "*_fourier_wave_vector_x", "*_fourier_wave_vector_y", "*_fourier_wave_vector_z", "*_fourier_wave_vector_q_coeff", "*_fourier_wave_vector_q1_coeff", "*_fourier_wave_vector_q2_coeff", "*_fourier_wave_vector_q3_coeff", "*_displace_fourier_atom_site_label", "*_displace_fourier_axis", "*_displace_fourier_wave_vector_seq_id", "*_displace_fourier_param_cos", "*_displace_fourier_param_sin", "*_displace_fourier_param_modulus", "*_displace_fourier_param_phase", "*_displace_special_func_atom_site_label", "*_displace_special_func_sawtooth_ax", "*_displace_special_func_sawtooth_ay", "*_displace_special_func_sawtooth_az", "*_displace_special_func_sawtooth_c", "*_displace_special_func_sawtooth_w", "*_occ_fourier_atom_site_label", "*_occ_fourier_wave_vector_seq_id", "*_occ_fourier_param_cos", "*_occ_fourier_param_sin", "*_occ_fourier_param_modulus", "*_occ_fourier_param_phase", "*_occ_special_func_atom_site_label", "*_occ_special_func_crenel_c", "*_occ_special_func_crenel_w", "*_u_fourier_atom_site_label", "*_u_fourier_tens_elem", "*_u_fourier_wave_vector_seq_id", "*_u_fourier_param_cos", "*_u_fourier_param_sin", "*_u_fourier_param_modulus", "*_u_fourier_param_phase", "*_displace_fourier_id", "*_occ_fourier_id", "*_u_fourier_id", "*_displace_fourier_param_id", "*_occ_fourier_param_id", "*_u_fourier_param_id", "*_occ_fourier_absolute_site_label", "*_occ_fourier_absolute", "*_moment_fourier_atom_site_label", "*_moment_fourier_axis", "*_moment_fourier_wave_vector_seq_id", "*_moment_fourier_param_cos", "*_moment_fourier_param_sin", "*_moment_fourier_param_modulus", "*_moment_fourier_param_phase", "*_moment_special_func_atom_site_label", "*_moment_special_func_sawtooth_ax", "*_moment_special_func_sawtooth_ay", "*_moment_special_func_sawtooth_az", "*_moment_special_func_sawtooth_c", "*_moment_special_func_sawtooth_w", "*_displace_legendre_atom_site_label", "*_displace_legendre_axis", "*_displace_legendre_param_order", "*_displace_legendre_param_coeff", "*_u_legendre_atom_site_label", "*_u_legendre_tens_elem", "*_u_legendre_param_order", "*_u_legendre_param_coeff", "*_occ_legendre_atom_site_label", "*_occ_legendre_param_order", "*_occ_legendre_param_coeff", "*_displace_fourier_cos", "*_displace_fourier_sin", "*_occ_fourier_cos", "*_occ_fourier_sin", "*_u_fourier_cos", "*_u_fourier_sin"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MSRdr.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MSRdr.js new file mode 100755 index 000000000000..88da8f7eafb7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/MSRdr.js @@ -0,0 +1,596 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["J.adapter.smarter.MSInterface"], "J.adapter.readers.cif.MSRdr", ["java.util.Hashtable", "JU.Lst", "$.M3", "$.Matrix", "$.P3", "$.PT", "J.adapter.readers.cif.Subsystem", "J.adapter.smarter.AtomSetCollectionReader", "JU.BoxInfo", "$.Escape", "$.Logger", "$.Modulation", "$.ModulationSet", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cr = null; +this.modDim = 0; +this.modAxes = null; +this.modAverage = false; +this.isCommensurate = false; +this.commensurateSection1 = 0; +this.modPack = false; +this.modVib = false; +this.modType = null; +this.modCell = null; +this.modDebug = false; +this.modSelected = -1; +this.modLast = false; +this.sigma = null; +this.htModulation = null; +this.htAtomMods = null; +this.iopLast = -1; +this.gammaE = null; +this.nOps = 0; +this.haveOccupancy = false; +this.atoms = null; +this.ac = 0; +this.haveAtomMods = false; +this.modCoord = false; +this.finalized = false; +this.symmetry = null; +this.supercellSymmetry = null; +this.legendres = null; +this.atModel = "@0"; +this.modMatrices = null; +this.qlist100 = null; +this.qs = null; +this.modCount = 0; +this.modTUV = null; +this.htSubsystems = null; +this.minXYZ0 = null; +this.maxXYZ0 = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "MSRdr", null, J.adapter.smarter.MSInterface); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "getSigma", +function(){ +return this.sigma; +}); +Clazz.overrideMethod(c$, "initialize", +function(r, modDim){ +this.cr = r; +this.modCoord = r.checkFilterKey("MODCOORD"); +this.modDebug = r.checkFilterKey("MODDEBUG"); +this.modPack = !r.checkFilterKey("MODNOPACK"); +this.modLast = r.checkFilterKey("MODLAST"); +this.modAxes = r.getFilter("MODAXES="); +this.modType = r.getFilter("MODTYPE="); +this.modCell = r.getFilter("MODCELL="); +this.modSelected = r.parseIntStr("" + r.getFilter("MOD=")); +this.modVib = r.checkFilterKey("MODVIB"); +this.modAverage = r.checkFilterKey("MODAVE"); +var smodTUV = r.getFilter("MODT="); +if (smodTUV != null || (smodTUV = r.getFilter("MODTUV=")) != null) { +this.modTUV = new JU.P3(); +var tuv = (JU.PT.replaceAllCharacters(smodTUV, "{}()", "") + ",0,0,0").$plit(","); +this.modTUV.x = JU.PT.parseFloatFraction(tuv[0]); +this.modTUV.y = JU.PT.parseFloatFraction(tuv[1]); +this.modTUV.z = JU.PT.parseFloatFraction(tuv[2]); +if (Float.isNaN(this.modTUV.lengthSquared())) { +JU.Logger.error("MSRdr cannot read modTUV=" + smodTUV); +this.modTUV = null; +}}this.setModDim(modDim); +return modDim; +}, "J.adapter.smarter.AtomSetCollectionReader,~N"); +Clazz.defineMethod(c$, "setSubsystemOptions", +function(){ +this.cr.forceSymmetry(this.modPack); +if (this.modCell != null) this.cr.addJmolScript("unitcell {%" + this.modCell + "}"); +}); +Clazz.defineMethod(c$, "setModDim", +function(ndim){ +this.htModulation = new java.util.Hashtable(); +this.modDim = ndim; +this.cr.appendLoadNote("Modulation dimension = " + this.modDim); +}, "~N"); +Clazz.overrideMethod(c$, "addModulation", +function(map, id, pt, iModel){ +var ch = id.charAt(0); +switch ((ch).charCodeAt(0)) { +case 79: +case 68: +case 77: +case 85: +if (this.modType != null && this.modType.indexOf(ch) < 0 || this.modSelected > 0 && this.modSelected != 1) return; +break; +} +var isOK = false; +for (var i = pt.length; --i >= 0; ) { +if (this.modSelected > 0 && i + 1 != this.modSelected && id.contains("_coefs_")) { +pt[i] = 0; +} else if (pt[i] != 0) { +isOK = true; +break; +}} +if (!isOK) return; +if (map == null) map = this.htModulation; +if (id.indexOf("@") < 0) id += "@" + (iModel >= 0 ? iModel : this.cr.asc.iSet); +if (id.startsWith("D_L#") || id.startsWith("U_L")) { +if (this.legendres == null) this.legendres = new JU.Lst(); +this.legendres.addLast(id); +}JU.Logger.info("Adding " + id + " " + JU.Escape.e(pt)); +map.put(id, pt); +}, "java.util.Map,~S,~A,~N"); +Clazz.overrideMethod(c$, "setModulation", +function(isPost, symmetry){ +if (this.modDim == 0 || this.htModulation == null) return; +if (this.modDebug) JU.Logger.debugging = JU.Logger.debuggingHigh = true; +this.cr.asc.setInfo(JV.JC.getBoolName(9), Boolean.TRUE); +this.symmetry = symmetry; +this.setModulationForStructure(this.cr.asc.iSet, isPost); +if (this.modDebug) JU.Logger.debugging = JU.Logger.debuggingHigh = false; +}, "~B,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.overrideMethod(c$, "finalizeModulation", +function(){ +if (!this.finalized && this.modDim > 0 && !this.modVib) { +if (this.modTUV != null) this.cr.appendLoadNote("modTUV=" + this.modTUV); +this.cr.asc.setInfo("modulationOn", this.modTUV == null ? Boolean.TRUE : this.modTUV); +this.cr.addJmolScript("set modulateOccupancy " + (this.haveOccupancy && !this.isCommensurate ? true : false)); +}this.finalized = true; +}); +Clazz.defineMethod(c$, "checkKey", +function(key, checkQ){ +var pt = key.indexOf(this.atModel); +return (pt < 0 || key.indexOf("_pos#") >= 0 || key.indexOf("*;*") >= 0 || checkQ && key.indexOf("?") >= 0 ? null : key.substring(0, pt)); +}, "~S,~B"); +Clazz.overrideMethod(c$, "getMod", +function(key){ +return this.htModulation.get(key + this.atModel); +}, "~S"); +Clazz.overrideMethod(c$, "getModulationMap", +function(){ +return this.htModulation; +}); +Clazz.defineMethod(c$, "setModulationForStructure", +function(iModel, isPost){ +this.atModel = "@" + iModel; +if (this.htModulation.containsKey("X_" + this.atModel)) return; +if (!isPost) { +this.initModForStructure(iModel); +return; +}this.htModulation.put("X_" + this.atModel, Clazz.newDoubleArray (0, 0)); +this.cr.appendLoadNote(this.modCount + " modulations for " + this.ac + " modulated atoms"); +if (!this.haveAtomMods) return; +var n = this.cr.asc.ac; +this.atoms = this.cr.asc.atoms; +if (this.symmetry != null) this.nOps = this.symmetry.getSpaceGroupOperationCount(); +this.supercellSymmetry = this.cr.asc.getXSymmetry().getSymmetry(); +if (this.supercellSymmetry === this.symmetry) this.supercellSymmetry = null; +this.iopLast = -1; +var i0 = this.cr.asc.getLastAtomSetAtomIndex(); +for (var i = i0; i < n; i++) this.modulateAtom(this.atoms[i]); + +this.htAtomMods = null; +if (this.minXYZ0 != null) this.trimAtomSet(); +this.htSubsystems = null; +}, "~N,~B"); +Clazz.defineMethod(c$, "initModForStructure", +function(iModel){ +var key; +if (this.legendres != null) this.fixLegendre(); +this.sigma = new JU.Matrix(null, this.modDim, 3); +this.qs = null; +this.qlist100 = null; +this.modMatrices = Clazz.newArray(-1, [this.sigma, null]); +var pt; +for (var i = 0; i < this.modDim; i++) { +pt = this.getMod("W_" + (i + 1)); +if (pt == null) { +this.cr.appendLoadNote("NOTE!: Not enough cell wave vectors for d=" + this.modDim); +return; +}this.cr.fixDoubleA(pt); +this.cr.appendLoadNote("W_" + (i + 1) + " = " + JU.Escape.e(pt)); +this.cr.appendUunitCellInfo("q" + (i + 1) + "=" + pt[0] + " " + pt[1] + " " + pt[2]); +this.sigma.getArray()[i] = Clazz.newDoubleArray(-1, [pt[0], pt[1], pt[2]]); +} +var map = new java.util.Hashtable(); +for (var e, $e = this.htModulation.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +if ((key = this.checkKey(k, false)) == null) continue; +pt = e.getValue(); +var ch = key.charAt(0); +switch ((ch).charCodeAt(0)) { +case 79: +this.haveOccupancy = true; +case 68: +case 77: +case 85: +if (pt[2] == 1 && key.charAt(2) != 'S' && key.charAt(2) != 'T' && key.charAt(2) != 'L') { +var ipt = key.indexOf("?"); +if (ipt >= 0) { +k = key.substring(0, 2) + "_" + key.substring(ipt + 1) + "#*;*"; +pt = this.getMod(k); +if (pt == null) { +k = key.substring(0, 1) + "_" + key.substring(ipt + 1) + "#*;*"; +pt = this.getMod(k); +}if (pt != null) this.addModulation(map, key = key.substring(0, ipt), pt, iModel); +} else { +var a = pt[0]; +var d = 2 * 3.141592653589793 * pt[1]; +pt[0] = (a * Math.cos(d)); +pt[1] = (a * Math.sin(-d)); +pt[2] = 0; +JU.Logger.info("msCIF setting " + key + " " + JU.Escape.e(pt)); +}}break; +case 87: +if (this.modDim > 1) { +continue; +}case 70: +if (key.indexOf("_coefs_") >= 0) { +this.cr.appendLoadNote("Wave vector " + key + "=" + JU.Escape.eAD(pt)); +} else { +var ptHarmonic = this.calculateQCoefs(pt); +if (ptHarmonic == null) { +this.cr.appendLoadNote("Cannot match atom wave vector " + key + " " + JU.Escape.eAD(pt) + " to a cell wave vector or its harmonic"); +} else { +var k2 = key + "_coefs_"; +if (!this.htModulation.containsKey(k2 + this.atModel)) { +this.addModulation(map, k2, ptHarmonic, iModel); +if (key.startsWith("F_")) this.cr.appendLoadNote("atom wave vector " + key + " = " + JU.Escape.e(pt) + " fn = " + JU.Escape.e(ptHarmonic)); +}}}break; +} +} +if (!map.isEmpty()) this.htModulation.putAll(map); +if (this.htSubsystems == null) { +this.haveAtomMods = false; +} else { +this.cr.strSupercell = null; +this.haveAtomMods = true; +this.htAtomMods = new java.util.Hashtable(); +}for (var e, $e = this.htModulation.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +if ((key = this.checkKey(k, true)) == null) continue; +var params = e.getValue(); +var atomName = key.substring(key.indexOf(";") + 1); +var pt_ = atomName.indexOf("#="); +if (pt_ >= 0) { +params = this.getMod(atomName.substring(pt_ + 2)); +atomName = atomName.substring(0, pt_); +}if (JU.Logger.debuggingHigh) JU.Logger.debug("SetModulation: " + key + " " + JU.Escape.e(params)); +var type = key.charAt(0); +pt_ = key.indexOf("#") + 1; +var utens = null; +switch ((type).charCodeAt(0)) { +case 85: +utens = key.substring(pt_, key.indexOf(";")); +case 79: +case 68: +case 77: +if (this.modAverage) break; +var axis = key.charAt(pt_); +type = this.getModType(key); +if (this.htAtomMods == null) this.htAtomMods = new java.util.Hashtable(); +var p = Clazz.newDoubleArray (params.length, 0); +for (var i = p.length; --i >= 0; ) p[i] = params[i]; + +var qcoefs = this.getQCoefs(key); +if (qcoefs == null) { +System.err.println("MSRdr missing cell wave vector for atom wave vector for " + key + " " + JU.Escape.e(params)); +break; +}this.addAtomModulation(atomName, axis, type, p, utens, qcoefs); +this.haveAtomMods = true; +break; +} +} +}, "~N"); +Clazz.defineMethod(c$, "fixLegendre", +function(){ +for (var i = this.legendres.size(); --i >= 0; ) { +var key = this.legendres.get(i); +var pt = this.htModulation.get(key); +if (pt != null) { +var key1 = "O_0#0" + key.substring(key.indexOf(";")); +var pt1 = this.htModulation.get(key1); +if (pt1 == null) { +JU.Logger.error("Crenel " + key1 + " not found for legendre modulation " + key); +pt[2] = NaN; +} else { +this.htModulation.put(key, Clazz.newDoubleArray(-1, [pt1[0], pt1[1], pt[0], pt[1]])); +}}} +}); +Clazz.overrideMethod(c$, "getQCoefs", +function(key){ +var id = key.charAt(2); +var fn = ("STL0".indexOf(id) >= 0 ? 0 : this.cr.parseIntAt(key, 2)); +if (fn < 0) System.err.println("warning only -- MSRdr missing cell wave vector for atom wave vector for " + key + " 1 assumed"); +if (fn <= 0) { +if (this.qlist100 == null) { +this.qlist100 = Clazz.newDoubleArray (this.modDim, 0); +this.qlist100[0] = 1; +}return this.qlist100; +}var p = this.getMod("F_" + fn + "_coefs_"); +if (p == null) { +p = this.getMod("F_coefs_" + fn); +}return p; +}, "~S"); +Clazz.overrideMethod(c$, "getModType", +function(key){ +var type = key.charAt(0); +var id = key.charAt(2); +return (type == 'D' && id == 'S' ? 's' : type == 'D' && id == 'L' ? 'l' : type == 'O' && id == '0' ? 'c' : type == 'M' && id == 'T' ? 't' : type == 'U' && id == 'L' ? 'L' : type == 'D' ? 'f' : type == 'O' ? 'o' : type == 'M' ? 'm' : type == 'U' ? 'u' : '?'); +}, "~S"); +Clazz.defineMethod(c$, "calculateQCoefs", +function(p){ +if (this.qs == null) { +this.qs = new Array(this.modDim); +for (var i = 0; i < this.modDim; i++) { +this.qs[i] = this.toP3(this.getMod("W_" + (i + 1))); +} +}var pt = this.toP3(p); +for (var i = 0; i < this.modDim; i++) if (this.qs[i] != null) { +var ifn = this.approxInt(pt.dot(this.qs[i]) / this.qs[i].dot(this.qs[i])); +if (ifn != 0) { +p = Clazz.newDoubleArray (this.modDim, 0); +p[i] = ifn; +return p; +}} +var p3 = this.toP3(p); +var jmin = (this.modDim < 2 ? 0 : -3); +var jmax = (this.modDim < 2 ? 0 : 3); +var kmin = (this.modDim < 3 ? 0 : -3); +var kmax = (this.modDim < 3 ? 0 : 3); +for (var i = -4; i <= 4; i++) for (var j = jmin; j <= jmax; j++) for (var k = kmin; k <= kmax; k++) { +pt.setT(this.qs[0]); +pt.scale(i); +if (this.modDim > 1 && this.qs[1] != null) pt.scaleAdd2(j, this.qs[1], pt); +if (this.modDim > 2 && this.qs[2] != null) pt.scaleAdd2(k, this.qs[2], pt); +if (pt.distanceSquared(p3) < 0.0001) { +p = Clazz.newDoubleArray (this.modDim, 0); +switch (this.modDim) { +default: +p[2] = k; +case 2: +p[1] = j; +case 1: +p[0] = i; +break; +} +return p; +}pt.setT(this.qs[0]); +pt.scale(1 / i); +if (this.modDim > 1 && this.qs[1] != null) pt.scaleAdd2(1 / j, this.qs[1], pt); +if (this.modDim > 2 && this.qs[2] != null) pt.scaleAdd2(1 / k, this.qs[2], pt); +if (pt.distanceSquared(p3) < 0.0001) { +p = Clazz.newDoubleArray (this.modDim, 0); +switch (this.modDim) { +default: +p[2] = 1 / k; +case 2: +p[1] = 1 / j; +case 1: +p[0] = 1 / i; +break; +} +return p; +}} + + +pt = this.toP3(p); +for (var i = 0; i < this.modDim; i++) if (this.qs[i] != null) { +p3 = this.qs[i]; +var ifn = 0; +if (pt.x != 0) ifn = this.approxInt(pt.x / p3.x); +if (pt.y != 0) ifn = Math.max(this.approxInt(pt.y / p3.y), ifn); +if (ifn == 0 && pt.z != 0) ifn = Math.max(this.approxInt(pt.z / p3.z), ifn); +if (ifn == 0) continue; +if (p3.x != 0 && this.approxInt(10 + p3.x * ifn - pt.x) == 0 || p3.y != 0 && this.approxInt(10 + p3.y * ifn - pt.y) == 0 || p3.z != 0 && this.approxInt(10 + p3.z * ifn - pt.z) == 0) continue; +p = Clazz.newDoubleArray (this.modDim, 0); +p[i] = ifn; +return p; +} +return null; +}, "~A"); +Clazz.defineMethod(c$, "approxInt", +function(fn){ +var ifn = Math.round(fn); +return (Math.abs(fn - ifn) < 0.001 ? ifn : 0); +}, "~N"); +Clazz.defineMethod(c$, "toP3", +function(x){ +return JU.P3.new3(x[0], x[1], x[2]); +}, "~A"); +Clazz.defineMethod(c$, "addAtomModulation", +function(atomName, axis, type, params, utens, qcoefs){ +var list = this.htAtomMods.get(atomName); +if (list == null) { +this.ac++; +this.htAtomMods.put(atomName, list = new JU.Lst()); +}list.addLast( new JU.Modulation(axis, type, params, utens, qcoefs)); +this.modCount++; +}, "~S,~S,~S,~A,~S,~A"); +Clazz.overrideMethod(c$, "addSubsystem", +function(code, w){ +if (code == null) return; +var ss = new J.adapter.readers.cif.Subsystem(this, code, w); +this.cr.appendLoadNote("subsystem " + code + "\n" + w); +this.setSubsystem(code, ss); +}, "~S,JU.Matrix"); +Clazz.defineMethod(c$, "addUStr", +function(atom, id, val){ +var i = Clazz.doubleToInt("U11U22U33U12U13U23UISO".indexOf(id) / 3); +if (JU.Logger.debuggingHigh) JU.Logger.debug("MOD RDR adding " + id + " " + i + " " + val + " to " + atom.anisoBorU[i]); +this.cr.asc.setU(atom, i, val + atom.anisoBorU[i]); +}, "J.adapter.smarter.Atom,~S,~N"); +Clazz.defineMethod(c$, "modulateAtom", +function(a){ +var list = this.htAtomMods.get(a.atomName); +if (list == null && a.altLoc != '\0' && this.htSubsystems != null) { +list = new JU.Lst(); +}if (list == null || this.symmetry == null || a.bsSymmetry == null) return; +var iop = Math.max(a.bsSymmetry.nextSetBit(0), 0); +if (this.modLast) iop = Math.max((a.bsSymmetry.length() - 1) % this.nOps, iop); +if (JU.Logger.debuggingHigh) JU.Logger.info("\nsetModulation: i=" + a.index + " " + a.atomName + " xyz=" + a + " occ=" + a.foccupancy); +if (iop != this.iopLast) { +this.iopLast = iop; +this.gammaE = new JU.M3(); +this.getSymmetry(a).getSpaceGroupOperation(iop).getRotationScale(this.gammaE); +}if (JU.Logger.debugging) { +JU.Logger.debug("setModulation iop = " + iop + " " + this.symmetry.getSpaceGroupXyz(iop, false) + " " + a.bsSymmetry); +}var ms = new JU.ModulationSet().setMod(a.index + " " + a.atomName, this.getAtomR0(this.cr.asc.atoms[a.atomSite]), this.getAtomR0(a), this.modDim, list, this.gammaE, this.getMatrices(a), this.getSymmetry(a), this.nOps, iop, Clazz.instanceOf(a.vib,"JU.Vibration") ? a.vib : null, this.isCommensurate); +ms.calculate(this.modTUV, false); +if (!Float.isNaN(ms.vOcc)) { +a.foccupancy = ms.setOccupancy(this.getMod("J_O#0;" + a.atomName), a.foccupancy, (a.vib == null ? 0 : a.vib.x)); +}if (ms.htUij != null) { +var t = (a.tensors == null ? null : a.tensors.get(0)); +if (t != null && t.parBorU != null) { +a.anisoBorU = Clazz.newFloatArray (8, 0); +for (var i = 0; i < 8; i++) a.anisoBorU[i] = t.parBorU[i]; + +t.isUnmodulated = true; +}if (a.anisoBorU == null) { +JU.Logger.error("MOD RDR cannot modulate nonexistent atom anisoBorU for atom " + a.atomName); +} else { +if (JU.Logger.debuggingHigh) { +JU.Logger.info("setModulation Uij(initial) " + a.atomName + " =" + JU.Escape.eAF(a.anisoBorU)); +JU.Logger.info("setModulation tensor " + a.atomName + "=" + JU.Escape.e((a.tensors.get(0)).getInfo("all"))); +}for (var e, $e = ms.htUij.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.addUStr(a, e.getKey(), e.getValue().floatValue()); + +var sym = this.getAtomSymmetry(a, this.symmetry); +t = this.cr.asc.getXSymmetry().addRotatedTensor(a, sym.getTensor(this.cr.vwr, a.anisoBorU), iop, false, sym); +t.isModulated = true; +t.id = JU.Escape.e(a.anisoBorU); +a.bfactor = a.anisoBorU[7] * 100; +a.anisoBorU = null; +if (JU.Logger.debuggingHigh) { +JU.Logger.debug("setModulation Uij(final)=" + JU.Escape.eAF(a.anisoBorU) + "\n"); +JU.Logger.debug("setModulation tensor=" + JU.Escape.e((a.tensors.get(1)).getInfo("all"))); +}}}if (Float.isNaN(ms.x)) ms.set(0, 0, 0); +a.vib = ms; +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "getAtomR0", +function(atom){ +var r0 = JU.P3.newP(atom); +if (this.supercellSymmetry != null) { +this.supercellSymmetry.toCartesian(r0, true); +this.symmetry.toFractional(r0, true); +}return r0; +}, "J.adapter.smarter.Atom"); +Clazz.overrideMethod(c$, "getAtomSymmetry", +function(a, defaultSymmetry){ +var ss; +return (this.htSubsystems == null || (ss = this.getSubsystem(a)) == null ? defaultSymmetry : ss.getSymmetry()); +}, "J.adapter.smarter.Atom,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "setSubsystem", +function(code, system){ +if (this.htSubsystems == null) this.htSubsystems = new java.util.Hashtable(); +this.htSubsystems.put(code, system); +this.setSubsystemOptions(); +}, "~S,J.adapter.readers.cif.Subsystem"); +Clazz.defineMethod(c$, "getMatrices", +function(a){ +var ss = this.getSubsystem(a); +return (ss == null ? this.modMatrices : ss.getModMatrices()); +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "getSymmetry", +function(a){ +var ss = this.getSubsystem(a); +return (ss == null ? this.symmetry : ss.getSymmetry()); +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "getSubsystem", +function(a){ +return (this.htSubsystems == null ? null : this.htSubsystems.get("" + a.altLoc)); +}, "J.adapter.smarter.Atom"); +Clazz.overrideMethod(c$, "setMinMax0", +function(minXYZ, maxXYZ){ +if (this.htSubsystems == null) { +this.minXYZ0 = this.maxXYZ0 = null; +return; +}var symmetry = this.getDefaultUnitCell(); +this.minXYZ0 = JU.P3.newP(minXYZ); +this.maxXYZ0 = JU.P3.newP(maxXYZ); +var pt0 = JU.P3.newP(minXYZ); +var pt1 = JU.P3.newP(maxXYZ); +var pt = new JU.P3(); +symmetry.toCartesian(pt0, true); +symmetry.toCartesian(pt1, true); +var pts = JU.BoxInfo.unitCubePoints; +if (this.sigma == null) { +JU.Logger.error("Why are we in MSRdr.setMinMax0 without modulation init?"); +return; +}for (var e, $e = this.htSubsystems.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var sym = e.getValue().getSymmetry(); +for (var i = 8; --i >= 0; ) { +pt.x = (pts[i].x == 0 ? pt0.x : pt1.x); +pt.y = (pts[i].y == 0 ? pt0.y : pt1.y); +pt.z = (pts[i].z == 0 ? pt0.z : pt1.z); +this.expandMinMax(pt, sym, minXYZ, maxXYZ); +} +} +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "expandMinMax", +function(pt, sym, minXYZ, maxXYZ){ +var pt2 = JU.P3.newP(pt); +var slop = 0.0001; +sym.toFractional(pt2, false); +if (minXYZ.x > pt2.x + slop) minXYZ.x = Clazz.doubleToInt(Math.floor(pt2.x)) - 1; +if (minXYZ.y > pt2.y + slop) minXYZ.y = Clazz.doubleToInt(Math.floor(pt2.y)) - 1; +if (minXYZ.z > pt2.z + slop) minXYZ.z = Clazz.doubleToInt(Math.floor(pt2.z)) - 1; +if (maxXYZ.x < pt2.x - slop) maxXYZ.x = Clazz.doubleToInt(Math.ceil(pt2.x)) + 1; +if (maxXYZ.y < pt2.y - slop) maxXYZ.y = Clazz.doubleToInt(Math.ceil(pt2.y)) + 1; +if (maxXYZ.z < pt2.z - slop) maxXYZ.z = Clazz.doubleToInt(Math.ceil(pt2.z)) + 1; +}, "JU.P3,J.adapter.smarter.XtalSymmetry.FileSymmetry,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "trimAtomSet", +function(){ +if (!this.cr.doApplySymmetry) return; +var asc = this.cr.asc; +var sym = this.getDefaultUnitCell(); +var atoms = asc.atoms; +var pt = new JU.P3(); +var bs = asc.getBSAtoms(-1); +var i0 = this.cr.asc.getLastAtomSetAtomIndex(); +var packing = this.cr.getPackingRangeValue(0.001); +for (var i = bs.nextSetBit(i0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = atoms[i]; +var isOK = (!this.isCommensurate || this.modAverage || a.foccupancy >= 0.5); +if (isOK) { +pt.setT(a); +if (a.vib != null) pt.add(a.vib); +this.getSymmetry(a).toCartesian(pt, false); +sym.toFractional(pt, false); +this.cr.fixFloatPt(pt, 100000.0); +isOK = asc.xtalSymmetry.isWithinCell(3, pt, this.minXYZ0.x, this.maxXYZ0.x, this.minXYZ0.y, this.maxXYZ0.y, this.minXYZ0.z, this.maxXYZ0.z, packing); +}if (isOK) { +this.cr.fixFloatPt(a, 100000.0); +} else { +bs.clear(i); +}} +}); +Clazz.defineMethod(c$, "getDefaultUnitCell", +function(){ +return (this.modCell != null && this.htSubsystems.containsKey(this.modCell) ? this.htSubsystems.get(this.modCell).getSymmetry() : this.cr.asc.getSymmetry()); +}); +Clazz.overrideMethod(c$, "getSymmetryFromCode", +function(code){ +return this.htSubsystems.get(code).getSymmetry(); +}, "~S"); +Clazz.overrideMethod(c$, "addLatticeVector", +function(lattvecs, data){ +var a = null; +var c = data.charAt(0); +var dim = this.modDim + 3; +switch ((c).charCodeAt(0)) { +case 80: +case 88: +break; +case 65: +case 66: +case 67: +case 73: +a = Clazz.newFloatArray(-1, [0.5, 0.5, 0.5]); +if (c != 'I') a[c.charCodeAt(0) - 65] = 0; +break; +case 70: +this.addLatticeVector(lattvecs, "A"); +this.addLatticeVector(lattvecs, "B"); +this.addLatticeVector(lattvecs, "C"); +break; +case 77: +dim++; +case 48: +if (data.indexOf(".") >= 0) a = J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(data, null, dim); +break; +default: +return false; +} +if (a != null) lattvecs.addLast(a); +return true; +}, "JU.Lst,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Subsystem.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Subsystem.js new file mode 100755 index 000000000000..547583cad99c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/Subsystem.js @@ -0,0 +1,119 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(null, "J.adapter.readers.cif.Subsystem", ["JU.Lst", "$.Matrix", "$.V3", "JU.Logger", "$.SimpleUnitCell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.msRdr = null; +this.code = null; +this.d = 0; +this.w = null; +this.symmetry = null; +this.modMatrices = null; +this.isFinalized = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "Subsystem", null); +Clazz.makeConstructor(c$, +function(msRdr, code, w){ +this.msRdr = msRdr; +this.code = code; +this.w = w; +this.d = w.getArray().length - 3; +}, "J.adapter.readers.cif.MSRdr,~S,JU.Matrix"); +Clazz.defineMethod(c$, "getSymmetry", +function(){ +if (!this.isFinalized) this.setSymmetry(true); +return this.symmetry; +}); +Clazz.defineMethod(c$, "getModMatrices", +function(){ +if (!this.isFinalized) this.setSymmetry(true); +return this.modMatrices; +}); +Clazz.defineMethod(c$, "setSymmetry", +function(setOperators){ +var a; +JU.Logger.info("[subsystem " + this.code + "]"); +var winv = this.w.inverse(); +JU.Logger.info("w=" + this.w); +JU.Logger.info("w_inv=" + winv); +var w33 = this.w.getSubmatrix(0, 0, 3, 3); +var wd3 = this.w.getSubmatrix(3, 0, this.d, 3); +var w3d = this.w.getSubmatrix(0, 3, 3, this.d); +var wdd = this.w.getSubmatrix(3, 3, this.d, this.d); +var sigma = this.msRdr.getSigma(); +var sigma_nu = wdd.mul(sigma).add(wd3).mul(w3d.mul(sigma).add(w33).inverse()); +var tFactor = wdd.sub(sigma_nu.mul(w3d)); +JU.Logger.info("sigma_nu = " + sigma_nu); +var s0 = this.msRdr.cr.asc.getSymmetry(); +var vu43 = s0.getUnitCellVectors(); +var vr43 = JU.SimpleUnitCell.getReciprocal(vu43, null, 1); +var mard3 = new JU.Matrix(null, 3 + this.d, 3); +var mar3 = new JU.Matrix(null, 3, 3); +var mard3a = mard3.getArray(); +var mar3a = mar3.getArray(); +for (var i = 0; i < 3; i++) mard3a[i] = mar3a[i] = Clazz.newDoubleArray(-1, [vr43[i + 1].x, vr43[i + 1].y, vr43[i + 1].z]); + +var sx = sigma.mul(mar3); +a = sx.getArray(); +for (var i = 0; i < this.d; i++) mard3a[i + 3] = a[i]; + +a = this.w.mul(mard3).getArray(); +var uc_nu = new Array(4); +uc_nu[0] = vu43[0]; +for (var i = 0; i < 3; i++) uc_nu[i + 1] = JU.V3.new3(a[i][0], a[i][1], a[i][2]); + +uc_nu = JU.SimpleUnitCell.getReciprocal(uc_nu, null, 1); +(this.symmetry = this.msRdr.cr.asc.newFileSymmetry()).getUnitCell(uc_nu, false, null); +this.modMatrices = Clazz.newArray(-1, [sigma_nu, tFactor]); +if (!setOperators) return; +this.isFinalized = true; +JU.Logger.info("unit cell parameters: " + this.symmetry.getUnitCellInfo(true)); +this.symmetry.createSpaceGroup(-1, "[subsystem " + this.code + "]", new JU.Lst(), this.d); +var nOps = s0.getSpaceGroupOperationCount(); +for (var iop = 0; iop < nOps; iop++) { +var rv = s0.getOperationRsVs(iop); +var r0 = rv.getRotation(); +var v0 = rv.getTranslation(); +var r = this.cleanMatrix(this.w.mul(r0).mul(winv)); +var v = this.cleanMatrix(this.w.mul(v0)); +var code = this.code; +if (this.isMixed(r)) { +for (var e, $e = this.msRdr.htSubsystems.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ss = e.getValue(); +if (ss === this) continue; +var rj = this.cleanMatrix(ss.w.mul(r0).mul(winv)); +if (!this.isMixed(rj)) { +r = rj; +v = ss.w.mul(v0); +code = ss.code; +break; +}} +}var jf = this.symmetry.addSubSystemOp(code, r, v, sigma_nu); +JU.Logger.info(this.code + "." + (iop + 1) + (this.code.equals(code) ? " " : ">" + code + " ") + jf); +} +}, "~B"); +Clazz.defineMethod(c$, "cleanMatrix", +function(m){ +var a = m.getArray(); +var d1 = a.length; +var d2 = a[0].length; +for (var i = d1; --i >= 0; ) for (var j = d2; --j >= 0; ) if (J.adapter.readers.cif.Subsystem.approxZero(a[i][j])) a[i][j] = 0; + + +return m; +}, "JU.Matrix"); +c$.approxZero = Clazz.defineMethod(c$, "approxZero", +function(d){ +return d < 1e-7 && d > -1.0E-7; +}, "~N"); +Clazz.defineMethod(c$, "isMixed", +function(r){ +var a = r.getArray(); +for (var i = 3; --i >= 0; ) for (var j = 3 + this.d; --j >= 3; ) if (a[i][j] != 0) return true; + + +return false; +}, "JU.Matrix"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "Subsystem " + this.code + "\n" + this.w; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/TopoCifParser.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/TopoCifParser.js new file mode 100755 index 000000000000..0f2ca9d9e43a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/cif/TopoCifParser.js @@ -0,0 +1,1079 @@ +Clazz.declarePackage("J.adapter.readers.cif"); +Clazz.load(["J.adapter.readers.cif.CifReader", "J.adapter.smarter.Atom", "$.Bond", "JU.Lst", "$.P3"], "J.adapter.readers.cif.TopoCifParser", ["java.util.Hashtable", "JU.BS", "J.adapter.readers.cif.Cif2DataParser", "J.api.JmolAdapter", "JS.SymmetryOperation", "JU.JmolMolecule"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.reader = null; +this.atoms = null; +this.nodes = null; +this.links = null; +this.nets = null; +this.singleNet = null; +this.netCount = 0; +this.linkCount = 0; +this.atomCount = 0; +this.temp1 = null; +this.temp2 = null; +this.ac0 = -1; +this.bc0 = 0; +this.cifParser = null; +this.failed = null; +this.ops = null; +this.i0 = 0; +this.b0 = 0; +this.allowedTypes = null; +this.netNotes = ""; +this.sym = null; +this.selectedNet = null; +if (!Clazz.isClassDefined("J.adapter.readers.cif.TopoCifParser.TNet")) { +J.adapter.readers.cif.TopoCifParser.$TopoCifParser$TNet$ (); +} +if (!Clazz.isClassDefined("J.adapter.readers.cif.TopoCifParser.TAtom")) { +J.adapter.readers.cif.TopoCifParser.$TopoCifParser$TAtom$ (); +} +if (!Clazz.isClassDefined("J.adapter.readers.cif.TopoCifParser.TNode")) { +J.adapter.readers.cif.TopoCifParser.$TopoCifParser$TNode$ (); +} +if (!Clazz.isClassDefined("J.adapter.readers.cif.TopoCifParser.TLink")) { +J.adapter.readers.cif.TopoCifParser.$TopoCifParser$TLink$ (); +} +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif, "TopoCifParser", null, J.adapter.readers.cif.CifReader.Parser); +Clazz.prepareFields (c$, function(){ +this.atoms = new JU.Lst(); +this.nodes = new JU.Lst(); +this.links = new JU.Lst(); +this.nets = new JU.Lst(); +this.temp1 = new JU.P3(); +this.temp2 = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +c$.getBondType = Clazz.defineMethod(c$, "getBondType", +function(type, order){ +if (type == null) return 0; +type = type.toUpperCase(); +if (type.equals("V")) return (order == 0 ? 1 : order); +if (type.equals("sb")) type = "?"; +switch ((type.charAt(0)).charCodeAt(0)) { +case 86: +return 14; +} +if (type.length > 3) type = type.substring(0, 3); +return Math.max(1, Clazz.doubleToInt(J.adapter.readers.cif.TopoCifParser.linkTypes.indexOf(type) / 3)); +}, "~S,~N"); +Clazz.overrideMethod(c$, "setReader", +function(reader){ +if (!reader.checkFilterKey("TOPOL")) { +reader.appendLoadNote("This file has Topology analysis records.\nUse LOAD \"\" {1 1 1} FILTER \"TOPOL\" to load the topology."); +return this; +}this.reader = reader; +var net = reader.getFilter("TOPOLNET="); +this.selectedNet = net; +var types = reader.getFilter("TOPOS_TYPES="); +if (types == null) types = reader.getFilter("TOPOS_TYPE="); +if (types != null && types.length > 0) { +types = "+" + types.toLowerCase() + "+"; +this.allowedTypes = types; +}this.i0 = reader.baseAtomIndex; +this.b0 = reader.baseBondIndex; +return this; +}, "J.adapter.readers.cif.CifReader"); +Clazz.overrideMethod(c$, "ProcessRecord", +function(key, data){ +if (this.reader == null || this.failed != null) { +return; +}var pt = key.indexOf("."); +if (pt < 0) { +pt = key.indexOf('_', key.indexOf('_', 1) + 1); +if (pt < 0) return; +key = key.substring(0, pt) + '.' + key.substring(pt + 1); +}this.processBlock(key); +}, "~S,~S"); +Clazz.overrideMethod(c$, "processBlock", +function(key){ +if (this.reader == null || this.failed != null) { +return false; +}if (this.ac0 < 0) { +this.reader.asc.firstAtomToBond = this.reader.asc.getAtomSetAtomIndex(this.reader.asc.iSet); +this.ac0 = this.reader.asc.ac; +this.bc0 = this.reader.asc.bondCount; +}if (this.reader.ucItems != null) { +this.reader.allow_a_len_1 = true; +for (var i = 0; i < 6; i++) this.reader.setUnitCellItem(i, this.reader.ucItems[i]); + +}this.reader.parseLoopParameters(J.adapter.readers.cif.TopoCifParser.topolFields); +this.cifParser = this.reader.cifParser; +if (key.startsWith("_topol_net")) { +this.processNets(); +} else if (key.startsWith("_topol_link")) { +this.processLinks(); +} else if (key.startsWith("_topol_node")) { +this.processNodes(); +} else if (key.startsWith("_topol_atom")) { +this.processAtoms(); +} else { +return false; +}return true; +}, "~S"); +Clazz.defineMethod(c$, "processNets", +function(){ +while (this.cifParser.getData()) { +var id = this.getDataValue(0); +var netLabel = this.getDataValue(1); +if (id == null) id = "" + (this.netCount + 1); +var net = this.getNetFor(id, netLabel, true); +net.specialDetails = this.getDataValue(2); +net.line = this.reader.line; +} +}); +Clazz.defineMethod(c$, "processLinks", +function(){ +while (this.cifParser.getData()) { +var t = this.getDataValue(18); +var type = (t == null ? null : t.toLowerCase()); +if (this.allowedTypes != null && (type == null || this.allowedTypes.indexOf("+" + type + "+") < 0)) continue; +var link = Clazz.innerTypeInstance(J.adapter.readers.cif.TopoCifParser.TLink, this, null); +link.type = type; +var t1 = Clazz.newIntArray (3, 0); +var t2 = Clazz.newIntArray (3, 0); +var n = this.cifParser.getColumnCount(); +for (var i = 0; i < n; ++i) { +var p = this.reader.fieldProperty(i); +var field = this.reader.field; +switch (p) { +case 3: +link.id = field; +break; +case 4: +link.netID = field; +break; +case 5: +link.nodeIds[0] = field; +break; +case 6: +link.nodeIds[1] = field; +break; +case 56: +link.nodeLabels[0] = field; +break; +case 57: +link.nodeLabels[1] = field; +break; +case 46: +case 7: +link.symops[0] = this.getInt(field) - 1; +break; +case 50: +case 12: +link.symops[1] = this.getInt(field) - 1; +break; +case 21: +link.topoOrder = this.getInt(field); +break; +case 54: +case 47: +case 48: +case 49: +case 8: +case 9: +case 10: +case 11: +t1 = this.processTranslation(p, t1, field); +break; +case 55: +case 51: +case 52: +case 53: +case 13: +case 14: +case 15: +case 16: +t2 = this.processTranslation(p, t2, field); +break; +case 17: +link.cartesianDistance = this.getFloat(field); +break; +case 19: +link.multiplicity = this.getInt(field); +break; +case 20: +link.voronoiAngle = this.getFloat(field); +} +} +if (!link.setLink(t1, t2, this.reader.line)) { +this.failed = "invalid link! " + link; +return; +}this.links.addLast(link); +} +}); +Clazz.defineMethod(c$, "processNodes", +function(){ +while (this.cifParser.getData()) { +var node = Clazz.innerTypeInstance(J.adapter.readers.cif.TopoCifParser.TNode, this, null); +var t = Clazz.newIntArray (3, 0); +var n = this.cifParser.getColumnCount(); +for (var i = 0; i < n; ++i) { +var p = this.reader.fieldProperty(i); +var field = this.reader.field; +switch (p) { +case 22: +node.id = field; +break; +case 24: +node.label = field; +break; +case 23: +node.netID = field; +break; +case 25: +node.symop = this.getInt(field) - 1; +break; +case 26: +case 27: +case 28: +case 29: +t = this.processTranslation(p, t, field); +break; +case 30: +node.x = this.getFloat(field); +break; +case 31: +node.y = this.getFloat(field); +break; +case 32: +node.z = this.getFloat(field); +break; +} +} +if (node.setNode(t, this.reader.line)) this.nodes.addLast(node); +} +}); +Clazz.defineMethod(c$, "processAtoms", +function(){ +while (this.cifParser.getData()) { +var atom = Clazz.innerTypeInstance(J.adapter.readers.cif.TopoCifParser.TAtom, this, null); +var t = Clazz.newIntArray (3, 0); +var n = this.cifParser.getColumnCount(); +for (var i = 0; i < n; ++i) { +var p = this.reader.fieldProperty(i); +var field = this.reader.field; +switch (p) { +case 33: +atom.id = field; +break; +case 34: +atom.atomLabel = field; +break; +case 35: +atom.nodeID = field; +break; +case 36: +atom.linkID = field; +break; +case 37: +atom.symop = this.getInt(field) - 1; +break; +case 38: +case 39: +case 40: +case 41: +t = this.processTranslation(p, t, field); +break; +case 42: +atom.x = this.getFloat(field); +break; +case 43: +atom.y = this.getFloat(field); +break; +case 44: +atom.z = this.getFloat(field); +break; +case 45: +atom.elementSymbol = field; +break; +} +} +if (atom.setAtom(t, this.reader.line)) this.atoms.addLast(atom); +} +}); +Clazz.defineMethod(c$, "processTranslation", +function(p, t, field){ +switch (p) { +case 54: +case 55: +case 8: +case 13: +case 26: +case 38: +t = J.adapter.readers.cif.Cif2DataParser.getIntArrayFromStringList(field, 3); +break; +case 47: +case 51: +case 9: +case 14: +case 27: +case 39: +t[0] = this.getInt(field); +break; +case 48: +case 52: +case 10: +case 15: +case 28: +case 40: +t[1] = this.getInt(field); +break; +case 49: +case 53: +case 11: +case 16: +case 29: +case 41: +t[2] = this.getInt(field); +break; +} +return t; +}, "~N,~A,~S"); +Clazz.overrideMethod(c$, "finalizeReader", +function(){ +if (this.reader == null || this.reader.symops == null) return false; +this.cifParser = null; +this.reader.applySymmetryToBonds = true; +var symops = this.reader.symops; +var nOps = symops.size(); +this.ops = new Array(nOps); +var v = Clazz.newFloatArray (16, 0); +for (var i = 0; i < nOps; i++) { +this.ops[i] = JS.SymmetryOperation.getMatrixFromXYZ("!" + symops.get(i), v, true); +} +for (var i = 0; i < this.atoms.size(); i++) { +this.atoms.get(i).finalizeAtom(); +} +this.sym = this.reader.getSymmetry(); +for (var i = 0; i < this.links.size(); i++) { +this.links.get(i).finalizeLink(); +} +for (var i = this.links.size(); --i >= 0; ) { +if (!this.links.get(i).finalized) this.links.removeItemAt(i); +} +if (this.reader.doApplySymmetry) { +this.reader.applySymmetryAndSetTrajectory(); +}if (this.selectedNet != null) this.selectNet(); +return true; +}); +Clazz.defineMethod(c$, "selectNet", +function(){ +var net = this.getNetFor(null, this.selectedNet, false); +if (net == null) { +net = this.getNetFor(this.selectedNet, null, false); +}if (net == null) return; +var bsAtoms = this.reader.asc.getBSAtoms(-1); +var atoms = this.reader.asc.atoms; +for (var i = this.reader.asc.ac; --i >= 0; ) { +var a = atoms[i]; +if (!(Clazz.instanceOf(a,"J.adapter.readers.cif.TopoCifParser.TPoint")) || (a).getNet() !== net) { +bsAtoms.clear(i); +}} +}); +Clazz.overrideMethod(c$, "finalizeSymmetry", +function(haveSymmetry){ +if (this.reader == null || !haveSymmetry || this.links.size() == 0) return; +var bsConnected = new JU.BS(); +var bsAtoms = new JU.BS(); +var nLinks = this.processAssociations(bsConnected, bsAtoms); +var bsExclude = J.adapter.readers.cif.TopoCifParser.shiftBits(bsAtoms, bsConnected); +if (!bsConnected.isEmpty()) { +this.reader.asc.bsAtoms = bsAtoms; +this.reader.asc.atomSetInfo.put("bsExcludeBonding", bsExclude); +}this.reader.appendLoadNote("TopoCifParser created " + bsConnected.cardinality() + " nodes and " + nLinks + " links"); +var info = new JU.Lst(); +for (var i = 0, n = this.links.size(); i < n; i++) { +info.addLast(this.links.get(i).getLinkInfo()); +} +this.reader.asc.setCurrentModelInfo("topology", info); +var script = "if (autobond) {delete !connected && !(atomName LIKE \'*_Link*\' or atomName LIKE \'*_Node*\')}; display displayed or " + this.nets.get(0).label + "__*"; +this.reader.addJmolScript(script); +for (var i = 0; i < this.nets.size(); i++) { +this.nets.get(i).finalizeNet(); +} +}, "~B"); +c$.shiftBits = Clazz.defineMethod(c$, "shiftBits", +function(bsAtoms, bs){ +var bsNew = new JU.BS(); +for (var pt = 0, i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +while (bsAtoms.get(i)) { +bsNew.setBitTo(pt++, bs.get(i++)); +} +} +return bsNew; +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "processAssociations", +function(bsConnected, bsAtoms){ +var nlinks = 0; +var bsAtoms0 = this.reader.asc.bsAtoms; +var atoms = this.reader.asc.atoms; +for (var i = this.reader.asc.ac; --i >= this.ac0; ) { +var a = atoms[i]; +if (bsAtoms0 != null && !bsAtoms0.get(i)) continue; +var idx = (Clazz.instanceOf(a,"J.adapter.readers.cif.TopoCifParser.TAtom") ? (a).idx1 : 0); +if (idx == -2147483648 || idx == 0) continue; +if (idx > 0) { +var node = this.getAssociatedNodeByIdx(idx - 1); +if (node.bsAtoms == null) node.bsAtoms = new JU.BS(); +node.bsAtoms.set(this.i0 + a.index); +} else { +var link = this.getAssoiatedLinkByIdx(-idx - 1); +if (link != null) { +if (link.bsAtoms == null) link.bsAtoms = new JU.BS(); +link.bsAtoms.set(this.i0 + a.index); +}}bsAtoms.set(a.index); +} +var checkDistance = this.reader.doPackUnitCell; +var distance; +var bonds = this.reader.asc.bonds; +for (var i = this.reader.asc.bondCount; --i >= this.bc0; ) { +var b = bonds[i]; +if (b.order >= 33554432) { +bonds[i] = null; +} else if (b.order >= 16777216) { +if (bsAtoms0 != null && (!bsAtoms0.get(b.atomIndex1) || !bsAtoms0.get(b.atomIndex2))) { +bonds[i] = null; +continue; +}b.order -= 16777216; +var link = this.getAssoiatedLinkByIdx(b.order >> 4); +if (checkDistance && Math.abs((distance = this.calculateDistance(atoms[b.atomIndex1], atoms[b.atomIndex2])) - link.distance) >= J.adapter.readers.cif.TopoCifParser.ERROR_TOLERANCE) { +System.err.println("Distance error! removed! distance=" + distance + " for " + link + link.linkNodes[0] + link.linkNodes[1]); +bonds[i] = null; +continue; +}if (link.bsBonds == null) link.bsBonds = new JU.BS(); +link.bsBonds.set(this.b0 + i); +switch (b.order & 0xF) { +default: +b.order = 1; +break; +case 2: +b.order = 2; +break; +case 3: +b.order = 3; +break; +case 4: +b.order = 4; +break; +case 5: +b.order = 5; +break; +case 6: +b.order = 6; +break; +case 10: +b.order = 1; +break; +case 11: +case 12: +b.order = 515; +break; +case 13: +b.order = 2048; +break; +case 14: +b.order = 33; +break; +} +bsConnected.set(b.atomIndex1); +bsConnected.set(b.atomIndex2); +nlinks++; +}} +bsAtoms.or(bsConnected); +if (bsAtoms0 != null) bsAtoms.and(bsAtoms0); +for (var i = this.nodes.size(); --i >= 0; ) { +var node = this.nodes.get(i); +if (node.bsAtoms != null) { +node.bsAtoms = J.adapter.readers.cif.TopoCifParser.shiftBits(bsAtoms, node.bsAtoms); +}} +for (var i = this.links.size(); --i >= 0; ) { +var link = this.links.get(i); +if (link.bsAtoms != null) { +link.bsAtoms = J.adapter.readers.cif.TopoCifParser.shiftBits(bsAtoms, link.bsAtoms); +}} +return nlinks; +}, "JU.BS,JU.BS"); +c$.isEqualD = Clazz.defineMethod(c$, "isEqualD", +function(p1, p2, d){ +return (Double.isNaN(d) || Math.abs(p1.distance(p2) - d) < J.adapter.readers.cif.TopoCifParser.ERROR_TOLERANCE); +}, "JU.T3,JU.T3,~N"); +Clazz.defineMethod(c$, "getDataValue", +function(key){ +var f = this.reader.getFieldString(key); +return ("\0".equals(f) ? null : f); +}, "~N"); +Clazz.defineMethod(c$, "getInt", +function(f){ +return (f == null ? -2147483648 : this.reader.parseIntStr(f)); +}, "~S"); +Clazz.defineMethod(c$, "getFloat", +function(f){ +return (f == null ? NaN : this.reader.parseFloatStr(f)); +}, "~S"); +c$.getMF = Clazz.defineMethod(c$, "getMF", +function(tatoms){ +var n = tatoms.size(); +if (n < 2) return (n == 0 ? "" : tatoms.get(0).elementSymbol); +var atNos = Clazz.newIntArray (n, 0); +for (var i = 0; i < n; i++) { +atNos[i] = J.api.JmolAdapter.getElementNumber(tatoms.get(i).getElementSymbol()); +} +var m = new JU.JmolMolecule(); +m.atNos = atNos; +return m.getMolecularFormula(false, null, false); +}, "JU.Lst"); +c$.setTAtom = Clazz.defineMethod(c$, "setTAtom", +function(a, b){ +b.setT(a); +b.formalCharge = a.formalCharge; +b.bondingRadius = a.bondingRadius; +}, "J.adapter.smarter.Atom,J.adapter.smarter.Atom"); +c$.setElementSymbol = Clazz.defineMethod(c$, "setElementSymbol", +function(a, sym){ +var name = a.atomName; +if (sym == null) { +a.atomName = (a.atomName == null ? "X" : a.atomName.substring(a.atomName.indexOf('_') + 1)); +} else { +a.atomName = sym; +}a.getElementSymbol(); +a.atomName = name; +}, "J.adapter.smarter.Atom,~S"); +c$.applySymmetry = Clazz.defineMethod(c$, "applySymmetry", +function(a, ops, op, t){ +if (op >= 0) { +if (op >= 1 || t.x != 0 || t.y != 0 || t.z != 0) { +if (op >= 1) ops[op].rotTrans(a); +a.add(t); +}}}, "J.adapter.smarter.Atom,~A,~N,JU.T3"); +Clazz.defineMethod(c$, "getNetByID", +function(id){ +for (var i = this.nets.size(); --i >= 0; ) { +var n = this.nets.get(i); +if (n.id.equalsIgnoreCase(id)) return n; +} +var n = Clazz.innerTypeInstance(J.adapter.readers.cif.TopoCifParser.TNet, this, null, this.netCount++, id, "Net" + id, null); +this.nets.addLast(n); +return n; +}, "~S"); +Clazz.defineMethod(c$, "getAtomFromName", +function(atomLabel){ +return (atomLabel == null ? null : this.reader.asc.getAtomFromName(atomLabel)); +}, "~S"); +Clazz.defineMethod(c$, "calculateDistance", +function(p1, p2){ +this.temp1.setT(p1); +this.temp2.setT(p2); +this.sym.toCartesian(this.temp1, true); +this.sym.toCartesian(this.temp2, true); +return this.temp1.distance(this.temp2); +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "getNetFor", +function(id, label, forceNew){ +var net = null; +if (id != null) { +net = this.getNetByID(id); +if (net != null && label != null && forceNew) net.label = label; +} else if (label != null) { +for (var i = this.nets.size(); --i >= 0; ) { +var n = this.nets.get(i); +if (n.label.equalsIgnoreCase(label)) { +net = n; +break; +}} +}if (net == null) { +if (!forceNew) return null; +net = this.getNetByID(id == null ? "1" : id); +}if (net != null && label != null && forceNew) net.label = label; +return net; +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "getAssociatedNodeByIdx", +function(idx){ +for (var i = this.nodes.size(); --i >= 0; ) { +var n = this.nodes.get(i); +if (n.idx == idx) return n; +} +return null; +}, "~N"); +Clazz.defineMethod(c$, "getAssoiatedLinkByIdx", +function(idx){ +for (var i = this.links.size(); --i >= 0; ) { +var l = this.links.get(i); +if (l.idx == idx) return l; +} +return null; +}, "~N"); +Clazz.defineMethod(c$, "findNode", +function(nodeID, op, trans){ +for (var i = this.nodes.size(); --i >= 0; ) { +var n = this.nodes.get(i); +if (n.id.equals(nodeID) && (op < 0 && n.linkSymop == 0 && n.linkTrans.equals(J.adapter.readers.cif.TopoCifParser.ZERO) || n.linkSymop == op && n.linkTrans.equals(trans))) return n; +} +return null; +}, "~S,~N,JU.P3"); +c$.$TopoCifParser$TNet$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.line = null; +this.id = null; +this.nLinks = 0; +this.nNodes = 0; +this.label = null; +this.specialDetails = null; +this.idx = 0; +this.hasAtoms = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif.TopoCifParser, "TNet", null); +Clazz.makeConstructor(c$, +function(index, id, label, specialDetails){ +this.idx = index; +this.id = id; +this.label = label; +this.specialDetails = specialDetails; +}, "~N,~S,~S,~S"); +Clazz.defineMethod(c$, "finalizeNet", +function(){ +if (this.id == null) this.id = "" + (this.idx + 1); +if (this.b$["J.adapter.readers.cif.TopoCifParser"].selectedNet != null && !this.label.equalsIgnoreCase(this.b$["J.adapter.readers.cif.TopoCifParser"].selectedNet) && !this.id.equalsIgnoreCase(this.b$["J.adapter.readers.cif.TopoCifParser"].selectedNet)) return; +var netKey = "," + this.id + ","; +if (this.b$["J.adapter.readers.cif.TopoCifParser"].netNotes.indexOf(netKey) < 0) { +this.b$["J.adapter.readers.cif.TopoCifParser"].reader.appendLoadNote("Net " + this.label + (this.specialDetails == null ? "" : " '" + this.specialDetails + "'") + " created from " + this.nLinks + " links and " + this.nNodes + " nodes.\n" + "Use DISPLAY " + (this.hasAtoms ? this.label + "__* to display it without associated atoms\nUse DISPLAY " + this.label + "_* to display it with its associated atoms" : this.label + "* to display it" + "")); +}}); +/*eoif4*/})(); +}; +c$.$TopoCifParser$TAtom$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.id = null; +this.atomLabel = null; +this.nodeID = null; +this.linkID = null; +this.symop = 0; +this.trans = null; +this.line = null; +this.isFinalized = false; +this.idx = 0; +this.net = null; +this.idx1 = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif.TopoCifParser, "TAtom", J.adapter.smarter.Atom, J.adapter.readers.cif.TopoCifParser.TPoint); +Clazz.prepareFields (c$, function(){ +this.trans = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, J.adapter.readers.cif.TopoCifParser.TAtom); +var i = 0; +}); +Clazz.defineMethod(c$, "getTClone", +function(){ +try { +var ta = this.clone(); +ta.idx = this.b$["J.adapter.readers.cif.TopoCifParser"].atomCount++; +return ta; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "getNet", +function(){ +return this.net; +}); +Clazz.defineMethod(c$, "setAtom", +function(a, line){ +this.line = line; +if (Float.isNaN(this.x) != Float.isNaN(this.y) || Float.isNaN(this.y) != Float.isNaN(this.z)) return false; +this.idx = this.b$["J.adapter.readers.cif.TopoCifParser"].atomCount++; +if (Float.isNaN(this.x)) { +this.trans = JU.P3.new3(a[0], a[1], a[2]); +} else { +this.symop = 0; +}this.atomName = this.atomLabel; +return true; +}, "~A,~S"); +Clazz.defineMethod(c$, "finalizeAtom", +function(){ +if (this.isFinalized) return; +this.isFinalized = true; +var a = this.b$["J.adapter.readers.cif.TopoCifParser"].getAtomFromName(this.atomLabel); +J.adapter.readers.cif.TopoCifParser.setElementSymbol(this, this.elementSymbol); +if (a == null && Float.isNaN(this.x)) { +throw new Exception("_topol_atom: no atom " + this.atomLabel + " line=" + this.line); +}var node = null; +if (this.nodeID != null) { +node = this.b$["J.adapter.readers.cif.TopoCifParser"].findNode(this.nodeID, -1, null); +}var link = null; +if (this.linkID != null) { +link = this.getLinkById(this.linkID); +}if (node == null && link == null) { +System.out.println("TAtom " + this + " ignored"); +return; +}if (a != null && Float.isNaN(this.x)) { +J.adapter.readers.cif.TopoCifParser.setTAtom(a, this); +J.adapter.readers.cif.TopoCifParser.applySymmetry(this, this.b$["J.adapter.readers.cif.TopoCifParser"].ops, this.symop, this.trans); +}this.atomName = this.atomLabel; +if (node != null) { +node.addAtom(this); +}var ta = this; +if (link != null) ta = link.addAtom(this); +this.b$["J.adapter.readers.cif.TopoCifParser"].reader.addCifAtom(this, this.atomName, null, null); +if (ta !== this) this.b$["J.adapter.readers.cif.TopoCifParser"].reader.addCifAtom(ta, this.atomName, null, null); +}); +Clazz.defineMethod(c$, "getLinkById", +function(linkID){ +for (var i = this.b$["J.adapter.readers.cif.TopoCifParser"].links.size(); --i >= 0; ) { +var l = this.b$["J.adapter.readers.cif.TopoCifParser"].links.get(i); +if (l.id.equalsIgnoreCase(linkID)) return l; +} +return null; +}, "~S"); +Clazz.defineMethod(c$, "toString", +function(){ +return this.line + " " + Clazz.superCall(this, J.adapter.readers.cif.TopoCifParser.TAtom, "toString", []); +}); +/*eoif4*/})(); +}; +c$.$TopoCifParser$TNode$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.id = null; +this.atomLabel = null; +this.netID = null; +this.label = null; +this.symop = 0; +this.trans = null; +this.tatoms = null; +this.bsAtoms = null; +this.linkSymop = 0; +this.linkTrans = null; +this.net = null; +this.isFinalized = false; +this.idx = 0; +this.atom = null; +this.line = null; +this.mf = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif.TopoCifParser, "TNode", J.adapter.smarter.Atom, J.adapter.readers.cif.TopoCifParser.TPoint); +Clazz.prepareFields (c$, function(){ +this.trans = new JU.P3(); +this.linkTrans = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, J.adapter.readers.cif.TopoCifParser.TNode); +var i = 0; +}); +Clazz.makeConstructor(c$, +function(idx, atom, net, op, trans){ +Clazz.superConstructor(this, J.adapter.readers.cif.TopoCifParser.TNode); +this.idx = idx; +this.atom = atom; +this.net = net; +this.linkSymop = op; +this.linkTrans = trans; +this.label = this.atomName = this.atomLabel = atom.atomName; +this.elementSymbol = atom.elementSymbol; +J.adapter.readers.cif.TopoCifParser.setTAtom(atom, this); +}, "~N,J.adapter.smarter.Atom,J.adapter.readers.cif.TopoCifParser.TNet,~N,JU.P3"); +Clazz.defineMethod(c$, "getMolecularFormula", +function(){ +return (this.mf == null ? (this.mf = J.adapter.readers.cif.TopoCifParser.getMF(this.tatoms)) : this.mf); +}); +Clazz.overrideMethod(c$, "getNet", +function(){ +return this.net; +}); +Clazz.defineMethod(c$, "setNode", +function(a, line){ +this.line = line; +if (this.tatoms == null) { +if (Float.isNaN(this.x) != Float.isNaN(this.y) || Float.isNaN(this.y) != Float.isNaN(this.z)) return false; +this.idx = this.b$["J.adapter.readers.cif.TopoCifParser"].atomCount++; +if (Float.isNaN(this.x)) { +this.trans = JU.P3.new3(a[0], a[1], a[2]); +} else { +this.symop = 0; +}}return true; +}, "~A,~S"); +Clazz.defineMethod(c$, "addAtom", +function(atom){ +if (this.tatoms == null) this.tatoms = new JU.Lst(); +atom.atomName = "Node_" + atom.nodeID + "_" + atom.atomLabel; +this.tatoms.addLast(atom); +}, "J.adapter.readers.cif.TopoCifParser.TAtom"); +Clazz.defineMethod(c$, "finalizeNode", +function(ops){ +if (this.isFinalized) return; +this.isFinalized = true; +if (this.net == null) this.net = this.b$["J.adapter.readers.cif.TopoCifParser"].getNetFor(this.netID, null, true); +var haveXYZ = !Float.isNaN(this.x); +var a; +if (this.tatoms == null) { +a = null; +if (!haveXYZ) { +throw new Exception("_topol_node no atom " + this.atomLabel + " line=" + this.line); +}} else { +if (Float.isNaN(this.x)) this.setCentroid(); +if (this.tatoms.size() == 1) { +var ta = this.tatoms.get(0); +this.elementSymbol = ta.elementSymbol; +this.atomLabel = ta.atomLabel; +this.formalCharge = ta.formalCharge; +this.tatoms = null; +} else { +this.net.hasAtoms = true; +this.elementSymbol = "Xx"; +for (var i = this.tatoms.size(); --i >= 0; ) { +var ta = this.tatoms.get(i); +ta.idx1 = this.idx + 1; +if (ta.atomName == null || !ta.atomName.startsWith(this.net.label + "_")) ta.atomName = this.net.label + "_" + ta.atomName; +ta.net = this.net; +} +}a = this; +}if ((a != null && a === this.atom) || !haveXYZ) { +if (a !== this) { +J.adapter.readers.cif.TopoCifParser.setTAtom(a, this); +}J.adapter.readers.cif.TopoCifParser.applySymmetry(this, ops, this.symop, this.trans); +}this.atomName = this.net.label.$replace(' ', '_') + "__"; +if (this.label != null && this.label.startsWith(this.atomName)) { +this.atomName = ""; +}this.atomName += (this.label != null ? this.label : this.atomLabel != null ? this.atomLabel : "Node_" + this.id); +this.addNode(); +}, "~A"); +Clazz.defineMethod(c$, "addNode", +function(){ +this.b$["J.adapter.readers.cif.TopoCifParser"].reader.addCifAtom(this, this.atomName, null, null); +this.net.nNodes++; +if (this.tatoms != null && this.tatoms.size() > 1) this.b$["J.adapter.readers.cif.TopoCifParser"].reader.appendLoadNote("_topos_node " + this.id + " " + this.atomName + " has formula " + this.getMolecularFormula()); +}); +Clazz.defineMethod(c$, "setCentroid", +function(){ +this.x = this.y = this.z = 0; +var n = this.tatoms.size(); +for (var i = n; --i >= 0; ) this.add(this.tatoms.get(i)); + +this.x /= n; +this.y /= n; +this.z /= n; +}); +Clazz.defineMethod(c$, "info", +function(){ +return "[node idx=" + this.idx + " id=" + this.id + " " + this.label + "/" + this.atomName + " " + Clazz.superCall(this, J.adapter.readers.cif.TopoCifParser.TNode, "toString", []) + "]"; +}); +Clazz.defineMethod(c$, "toString", +function(){ +return this.info(); +}); +Clazz.defineMethod(c$, "copy", +function(){ +var node = this.clone(); +node.idx = this.b$["J.adapter.readers.cif.TopoCifParser"].atomCount++; +if (node.isFinalized) node.addNode(); +if (this.tatoms != null) { +node.tatoms = new JU.Lst(); +for (var i = 0, n = this.tatoms.size(); i < n; i++) { +var ta = this.tatoms.get(i).getTClone(); +node.tatoms.addLast(ta); +this.b$["J.adapter.readers.cif.TopoCifParser"].reader.addCifAtom(ta, ta.atomName, null, null); +} +}return node; +}); +Clazz.defineMethod(c$, "clone", +function(){ +try { +return Clazz.superCall(this, J.adapter.readers.cif.TopoCifParser.TNode, "clone", []); +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +/*eoif4*/})(); +}; +c$.$TopoCifParser$TLink$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.id = null; +this.nodeIds = null; +this.nodeLabels = null; +this.symops = null; +this.translations = null; +this.netID = null; +this.netLabel = null; +this.type = ""; +this.multiplicity = 0; +this.topoOrder = 0; +this.voronoiAngle = 0; +this.cartesianDistance = 0; +this.idx = 0; +this.net = null; +this.linkNodes = null; +this.typeBondOrder = 0; +this.tatoms = null; +this.bsAtoms = null; +this.bsBonds = null; +this.line = null; +this.finalized = false; +this.mf = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.cif.TopoCifParser, "TLink", J.adapter.smarter.Bond); +Clazz.prepareFields (c$, function(){ +this.nodeIds = new Array(2); +this.nodeLabels = new Array(2); +this.symops = Clazz.newIntArray (2, 0); +this.translations = new Array(2); +this.linkNodes = new Array(2); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, J.adapter.readers.cif.TopoCifParser.TLink, [0, 0, 0]); +var i = 0; +}); +Clazz.defineMethod(c$, "setLink", +function(t1, t2, line){ +this.line = line; +this.idx = this.b$["J.adapter.readers.cif.TopoCifParser"].linkCount++; +if (this.nodeIds[1] == null) this.nodeIds[1] = this.nodeIds[0]; +this.typeBondOrder = J.adapter.readers.cif.TopoCifParser.getBondType(this.type, this.topoOrder); +this.translations[0] = JU.P3.new3(t1[0], t1[1], t1[2]); +this.translations[1] = JU.P3.new3(t2[0], t2[1], t2[2]); +System.out.println("TopoCifParser.setLink " + this); +return true; +}, "~A,~A,~S"); +Clazz.defineMethod(c$, "addAtom", +function(atom){ +if (this.tatoms == null) this.tatoms = new JU.Lst(); +if (atom.nodeID != null) { +atom = atom.getTClone(); +atom.nodeID = null; +}atom.atomName = "Link_" + atom.linkID + "_" + atom.atomLabel; +this.tatoms.addLast(atom); +return atom; +}, "J.adapter.readers.cif.TopoCifParser.TAtom"); +Clazz.defineMethod(c$, "finalizeLink", +function(){ +this.netID = (this.nodeIds[0] == null ? null : this.b$["J.adapter.readers.cif.TopoCifParser"].findNode(this.nodeIds[0], -1, null).netID); +if (this.netID == null && this.netLabel == null) { +if (this.b$["J.adapter.readers.cif.TopoCifParser"].nets.size() > 0) this.net = this.b$["J.adapter.readers.cif.TopoCifParser"].nets.get(0); + else this.net = this.b$["J.adapter.readers.cif.TopoCifParser"].getNetFor(null, null, true); +} else { +this.net = this.b$["J.adapter.readers.cif.TopoCifParser"].getNetFor(this.netID, this.netLabel, true); +}this.netLabel = this.net.label; +this.net.nLinks++; +if (this.b$["J.adapter.readers.cif.TopoCifParser"].selectedNet != null) { +if (!this.b$["J.adapter.readers.cif.TopoCifParser"].selectedNet.equalsIgnoreCase(this.net.label) && !this.b$["J.adapter.readers.cif.TopoCifParser"].selectedNet.equalsIgnoreCase(this.net.id)) { +return; +}}this.finalizeLinkNode(0); +this.finalizeLinkNode(1); +if (this.tatoms != null) { +var n = this.tatoms.size(); +this.net.hasAtoms = true; +for (var i = n; --i >= 0; ) { +var a = this.tatoms.get(i); +a.idx1 = -this.idx - 1; +a.atomName = this.netLabel + "_" + a.atomName; +a.net = this.net; +} +if (n >= 0) { +this.mf = J.adapter.readers.cif.TopoCifParser.getMF(this.tatoms); +this.b$["J.adapter.readers.cif.TopoCifParser"].reader.appendLoadNote("_topos_link " + this.id + " for net " + this.netLabel + " has formula " + this.mf); +}}this.order = 16777216 + (this.idx << 4) + this.typeBondOrder; +this.distance = this.b$["J.adapter.readers.cif.TopoCifParser"].calculateDistance(this.linkNodes[0], this.linkNodes[1]); +if (this.cartesianDistance != 0 && Math.abs(this.distance - this.cartesianDistance) >= J.adapter.readers.cif.TopoCifParser.ERROR_TOLERANCE) System.err.println("Distance error! distance=" + this.distance + " for " + this.line); +System.out.println("link d=" + this.distance + " " + this + this.linkNodes[0] + this.linkNodes[1]); +this.b$["J.adapter.readers.cif.TopoCifParser"].reader.asc.addBond(this); +this.finalized = true; +}); +Clazz.defineMethod(c$, "finalizeLinkNode", +function(index){ +var id = this.nodeIds[index]; +var atomLabel = this.nodeLabels[index]; +var op = this.symops[index]; +var trans = this.translations[index]; +var node = this.getNodeWithSym(id, atomLabel, op, trans); +var node0 = node; +if (node == null && id != null) { +node = this.getNodeWithSym(id, null, -1, null); +}var atom = (node == null && atomLabel != null ? this.b$["J.adapter.readers.cif.TopoCifParser"].getAtomFromName(atomLabel) : null); +if (atom != null) { +node = Clazz.innerTypeInstance(J.adapter.readers.cif.TopoCifParser.TNode, this, null, this.b$["J.adapter.readers.cif.TopoCifParser"].atomCount++, atom, this.net, op, trans); +} else if (node != null) { +if (node0 == null) node = node.copy(); +node.linkSymop = op; +node.linkTrans = trans; +this.nodeLabels[index] = node.atomName; +} else { +throw new Exception("_topol_link: no atom or node " + atomLabel + " line=" + this.line); +}this.b$["J.adapter.readers.cif.TopoCifParser"].nodes.addLast(node); +this.linkNodes[index] = node; +if (index == 1 && node === this.linkNodes[0]) { +this.linkNodes[1] = node.copy(); +}node.finalizeNode(this.b$["J.adapter.readers.cif.TopoCifParser"].ops); +if (node0 == null) J.adapter.readers.cif.TopoCifParser.applySymmetry(node, this.b$["J.adapter.readers.cif.TopoCifParser"].ops, op, trans); +if (index == 0) { +this.atomIndex1 = node.index; +} else { +this.atomIndex2 = node.index; +}}, "~N"); +Clazz.defineMethod(c$, "getNodeWithSym", +function(nodeID, nodeLabel, op, trans){ +if (nodeID != null) return this.b$["J.adapter.readers.cif.TopoCifParser"].findNode(nodeID, op, trans); +for (var i = this.b$["J.adapter.readers.cif.TopoCifParser"].nodes.size(); --i >= 0; ) { +var n = this.b$["J.adapter.readers.cif.TopoCifParser"].nodes.get(i); +if (n.label.equals(nodeLabel) && (op == -1 && n.linkSymop == 0 && n.linkTrans.equals(J.adapter.readers.cif.TopoCifParser.ZERO) || op == n.linkSymop && trans.equals(n.linkTrans))) return n; +} +return null; +}, "~S,~S,~N,JU.P3"); +Clazz.defineMethod(c$, "getLinkInfo", +function(){ +var info = new java.util.Hashtable(); +info.put("index", Integer.$valueOf(this.idx + 1)); +if (this.id != null) info.put("id", this.id); +info.put("netID", this.net.id); +info.put("netLabel", this.net.label); +if (this.nodeLabels[0] != null) info.put("nodeLabel1", this.nodeLabels[0]); +if (this.nodeLabels[1] != null) info.put("nodeLabel2", this.nodeLabels[1]); +if (this.nodeIds[0] != null) info.put("nodeId1", this.nodeIds[0]); +if (this.nodeIds[1] != null) info.put("nodeId2", this.nodeIds[1]); +info.put("distance", Float.$valueOf(this.cartesianDistance)); +if (!Float.isNaN(this.distance)) info.put("distance", Float.$valueOf(this.distance)); +info.put("symops1", Integer.$valueOf(this.symops[0] + 1)); +info.put("symops2", Integer.$valueOf(this.symops[1] + 1)); +info.put("translation1", this.translations[0]); +info.put("translation2", this.translations[1]); +info.put("multiplicity", Integer.$valueOf(this.multiplicity)); +if (this.type != null) info.put("type", this.type); +info.put("voronoiSolidAngle", Float.$valueOf(this.voronoiAngle)); +info.put("atomIndex1", Integer.$valueOf(this.b$["J.adapter.readers.cif.TopoCifParser"].i0 + this.linkNodes[0].index)); +info.put("atomIndex2", Integer.$valueOf(this.b$["J.adapter.readers.cif.TopoCifParser"].i0 + this.linkNodes[1].index)); +if (this.bsAtoms != null && !this.bsAtoms.isEmpty()) info.put("representedAtoms", this.bsAtoms); +info.put("topoOrder", Integer.$valueOf(this.topoOrder)); +info.put("order", Integer.$valueOf(this.typeBondOrder)); +return info; +}); +Clazz.defineMethod(c$, "info", +function(){ +return "[link " + this.line + " : " + this.distance + "]"; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.info(); +}); +/*eoif4*/})(); +}; +Clazz.declareInterface(J.adapter.readers.cif.TopoCifParser, "TPoint"); +c$.linkTypes = "? SINDOUTRIQUAQUISEXSEPOCTAROPOLDELPI HBOVDW"; +c$.ERROR_TOLERANCE = 0.001; +c$.topolFields = Clazz.newArray(-1, ["_topol_net_id", "_topol_net_label", "_topol_net_special_details", "_topol_link_id", "_topol_link_net_id", "_topol_link_node_id_1", "_topol_link_node_id_2", "_topol_link_symop_id_1", "_topol_link_translation_1", "_topol_link_translation_1_x", "_topol_link_translation_1_y", "_topol_link_translation_1_z", "_topol_link_symop_id_2", "_topol_link_translation_2", "_topol_link_translation_2_x", "_topol_link_translation_2_y", "_topol_link_translation_2_z", "_topol_link_distance", "_topol_link_type", "_topol_link_multiplicity", "_topol_link_voronoi_solidangle", "_topol_link_order", "_topol_node_id", "_topol_node_net_id", "_topol_node_label", "_topol_node_symop_id", "_topol_node_translation", "_topol_node_translation_x", "_topol_node_translation_y", "_topol_node_translation_z", "_topol_node_fract_x", "_topol_node_fract_y", "_topol_node_fract_z", "_topol_atom_id", "_topol_atom_atom_label", "_topol_atom_node_id", "_topol_atom_link_id", "_topol_atom_symop_id", "_topol_atom_translation", "_topol_atom_translation_x", "_topol_atom_translation_y", "_topol_atom_translation_z", "_topol_atom_fract_x", "_topol_atom_fract_y", "_topol_atom_fract_z", "_topol_atom_element_symbol", "_topol_link_site_symmetry_symop_1", "_topol_link_site_symmetry_translation_1_x", "_topol_link_site_symmetry_translation_1_y", "_topol_link_site_symmetry_translation_1_z", "_topol_link_site_symmetry_symop_2", "_topol_link_site_symmetry_translation_2_x", "_topol_link_site_symmetry_translation_2_y", "_topol_link_site_symmetry_translation_2_z", "_topol_link_site_symmetry_translation_1", "_topol_link_site_symmetry_translation_2", "_topol_link_node_label_1", "_topol_link_node_label_2", "_topol_link_atom_label_1", "_topol_link_atom_label_2"]); +c$.ZERO = new JU.P3(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/Mol3DReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/Mol3DReader.js new file mode 100755 index 000000000000..aca1d050a685 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/Mol3DReader.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("J.adapter.readers.molxyz"); +Clazz.load(["J.adapter.readers.molxyz.MolReader"], "J.adapter.readers.molxyz.Mol3DReader", null, function(){ +var c$ = Clazz.declareType(J.adapter.readers.molxyz, "Mol3DReader", J.adapter.readers.molxyz.MolReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.allow2D = false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/MolReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/MolReader.js new file mode 100755 index 000000000000..520664a6165e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/MolReader.js @@ -0,0 +1,353 @@ +Clazz.declarePackage("J.adapter.readers.molxyz"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.molxyz.MolReader", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "J.adapter.smarter.Atom", "J.api.JmolAdapter", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveAtomSerials = false; +this.allow2D = true; +this.iatom0 = 0; +this.vr = null; +this.atomCount = 0; +this.atomData = null; +this.bsDeleted = null; +this.haveNonzeroZ = false; +this.fixN = false; +this.is3D = false; +this.nDouble = 0; +this.nH = 0; +this.nC = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.molxyz, "MolReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.fixN = this.checkFilterKey("FIXN"); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +var isMDL = (this.line.startsWith("$MDL")); +if (isMDL) { +this.discardLinesUntilStartsWith("$HDR"); +this.rd(); +if (this.line == null) { +JU.Logger.warn("$HDR not found in MDL RG file"); +this.continuing = false; +return false; +}} else if (this.line.equals("M END")) { +return true; +}if (this.doGetModel(++this.modelNumber, null)) { +this.iatom0 = this.asc.ac; +this.processMolSdHeader(); +this.processCtab(isMDL); +this.vr = null; +if (this.isLastModel(this.modelNumber)) { +this.continuing = false; +return false; +}}if (this.line != null && this.line.indexOf("$$$$") < 0) this.discardLinesUntilStartsWith("$$$$"); +return true; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderMR(); +}); +Clazz.defineMethod(c$, "finalizeReaderMR", +function(){ +if (this.fixN) { +this.addJmolScript("{search('[Nv4+0,nv4+0]')}.formalCharge=1;{search('{[Ov1-0]}[Nv4+1,nv4+1]')}.formalCharge=-1;"); +}this.check2D3D(); +if (this.bsDeleted != null) { +this.asc.getBSAtoms(-1).andNot(this.bsDeleted); +}this.isTrajectory = false; +this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "check2D3D", +function(){ +if (this.haveNonzeroZ) { +if (this.is2D) { +this.is2D = this.optimize2D = false; +}} else if (!this.is2D && !this.is3D) { +if (this.nC > 0 && this.nH == 0 && this.nDouble != 0) { +this.is2D = true; +}}if (this.is2D) { +if (!this.allow2D) { +throw new Exception("File is 2D, not 3D"); +}this.set2D(); +}}); +Clazz.defineMethod(c$, "processMolSdHeader", +function(){ +var header = ""; +var thisDataSetName = this.line.trim(); +this.asc.setCollectionName(thisDataSetName); +header += this.line + "\n"; +this.rd(); +if (this.line == null) return; +header += this.line + "\n"; +var dim = (this.line.length >= 22 ? this.line.substring(20, 22) : null); +this.is3D = "3D".equals(dim); +this.is2D = !this.is3D && ("2D".equals(dim) || this.line.startsWith("JME ")); +this.rd(); +if (this.line == null) return; +this.line = this.line.trim(); +header += this.line + "\n"; +JU.Logger.info(header); +this.checkCurrentLineForScript(); +this.asc.setInfo("fileHeader", header); +this.newAtomSet(thisDataSetName); +}); +Clazz.defineMethod(c$, "processCtab", +function(isMDL){ +if (isMDL) this.discardLinesUntilStartsWith("$CTAB"); +if (this.rd() == null) return; +if (this.line.indexOf("V3000") >= 0) { +this.optimize2D = this.is2D && !this.noHydrogens; +this.vr = (this.getInterface("J.adapter.readers.molxyz.V3000Rdr")).set(this); +this.discardLinesUntilContains("COUNTS"); +this.vr.readAtomsAndBonds(this.getTokens()); +} else { +this.readAtomsAndBonds(this.parseIntRange(this.line, 0, 3), this.parseIntRange(this.line, 3, 6)); +}this.applySymmetryAndSetTrajectory(); +}, "~B"); +Clazz.defineMethod(c$, "readAtomsAndBonds", +function(ac, bc){ +this.atomCount = ac; +for (var i = 0; i < ac; ++i) { +this.rd(); +var len = this.line.length; +var elementSymbol; +var x; +var y; +var z; +var charge = 0; +var isotope = 0; +var iAtom = -2147483648; +x = this.parseFloatRange(this.line, 0, 10); +y = this.parseFloatRange(this.line, 10, 20); +z = this.parseFloatRange(this.line, 20, 30); +if (len < 34) { +elementSymbol = this.line.substring(31).trim(); +} else { +elementSymbol = this.line.substring(31, 34).trim(); +if (elementSymbol.equals("H1")) { +elementSymbol = "H"; +isotope = 1; +}if (len >= 39) { +var code = this.parseIntRange(this.line, 36, 39); +if (code >= 1 && code <= 7) charge = 4 - code; +code = this.parseIntRange(this.line, 34, 36); +if (code != 0 && code >= -3 && code <= 4) { +isotope = J.api.JmolAdapter.getNaturalIsotope(J.api.JmolAdapter.getElementNumber(elementSymbol)) + code; +}if (iAtom == -2147483648 && this.haveAtomSerials) iAtom = i + 1; +}}this.addMolAtom(iAtom, isotope, elementSymbol, charge, x, y, z); +} +this.asc.setModelInfoForSet("dimension", (this.is2D ? "2D" : "3D"), this.asc.iSet); +this.rd(); +if (this.line.startsWith("V ")) { +this.readAtomValues(); +}if (bc == 0) this.asc.setNoAutoBond(); +for (var i = 0; i < bc; ++i) { +if (i > 0) this.rd(); +var iAtom1; +var iAtom2; +var stereo = 0; +iAtom1 = this.line.substring(0, 3).trim(); +iAtom2 = this.line.substring(3, 6).trim(); +var order = this.parseIntRange(this.line, 6, 9); +if ((this.is2D || !this.is3D) && order == 1 && this.line.length >= 12) stereo = this.parseIntRange(this.line, 9, 12); +if (stereo != 0 && !this.is3D) this.is2D = true; +order = this.fixOrder(order, stereo); +if (this.haveAtomSerials) this.asc.addNewBondFromNames(iAtom1, iAtom2, order); + else this.asc.addNewBondWithOrder(this.iatom0 + this.parseIntStr(iAtom1) - 1, this.iatom0 + this.parseIntStr(iAtom2) - 1, order); +} +var molData = new java.util.Hashtable(); +var _keyList = new JU.Lst(); +this.rd(); +while (this.line != null && this.line.indexOf("$$$$") != 0) { +if (this.line.indexOf(">") == 0) { +this.readMolData(molData, _keyList); +continue; +}if (this.line.startsWith("M ISO")) { +this.readIsotopes(); +continue; +}this.rd(); +} +if (this.atomData != null) { +var atomValueName = molData.get("atom_value_name"); +molData.put(atomValueName == null ? "atom_values" : atomValueName.toString(), this.atomData); +}if (!molData.isEmpty()) { +this.asc.setCurrentModelInfo("molDataKeys", _keyList); +this.asc.setCurrentModelInfo("molData", molData); +}}, "~N,~N"); +Clazz.defineMethod(c$, "readAtomValues", +function(){ +this.atomData = new Array(this.atomCount); +for (var i = this.atomData.length; --i >= 0; ) this.atomData[i] = ""; + +while (this.line.indexOf("V ") == 0) { +var iAtom = this.parseIntAt(this.line, 3); +if (iAtom < 1 || iAtom > this.atomCount) { +JU.Logger.error("V nnn does not evalute to a valid atom number: " + iAtom); +return; +}var s = this.line.substring(6).trim(); +this.atomData[iAtom - 1] = s; +this.rd(); +} +}); +Clazz.defineMethod(c$, "readIsotopes", +function(){ +var n = this.parseIntAt(this.line, 6); +try { +var i0 = this.asc.getLastAtomSetAtomIndex(); +for (var i = 0, pt = 9; i < n; i++) { +var ipt = this.parseIntAt(this.line, pt); +var atom = this.asc.atoms[ipt + i0 - 1]; +var iso = this.parseIntAt(this.line, pt + 4); +pt += 8; +var sym = JU.PT.replaceAllCharacters(atom.elementSymbol, "0123456789", ""); +if (iso == 17 && sym.equals("C")) { +atom.elementSymbol = "N"; +} else if (iso == 5 && sym.equals("H")) { +this.deleteAtom(atom); +} else { +atom.elementSymbol = "" + iso + sym; +}} +} catch (e) { +} +this.rd(); +}); +Clazz.defineMethod(c$, "deleteAtom", +function(atom){ +if (this.bsDeleted == null) this.bsDeleted = new JU.BS(); +this.bsDeleted.set(atom.index); +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "readMolData", +function(molData, _keyList){ +var atoms = this.asc.atoms; +var dataName = JU.PT.trim(this.line, "> <").toLowerCase(); +var data = ""; +var fdata = null; +while (this.rd() != null && !this.line.equals("$$$$") && this.line.length > 0) data += (this.line.length == 81 && this.line.charAt(80) == '+' ? this.line.substring(0, 80) : this.line + "\n"); + +data = JU.PT.trim(data, "\n"); +JU.Logger.info(dataName + ":" + JU.PT.esc(data)); +molData.put(dataName, data); +_keyList.addLast(dataName); +var ndata = 0; +if (dataName.toUpperCase().contains("_PARTIAL_CHARGES")) { +try { +fdata = JU.PT.parseFloatArray(data); +for (var i = this.asc.getLastAtomSetAtomIndex(), n = this.asc.ac; i < n; i++) atoms[i].partialCharge = 0; + +var pt = 0; +for (var i = Clazz.floatToInt(fdata[pt++]); --i >= 0; ) { +var atomIndex = Clazz.floatToInt(fdata[pt++]) + this.iatom0 - 1; +var partialCharge = fdata[pt++]; +atoms[atomIndex].partialCharge = partialCharge; +ndata++; +} +} catch (e) { +for (var i = this.asc.getLastAtomSetAtomIndex(), n = this.asc.ac; i < n; i++) atoms[i].partialCharge = 0; + +JU.Logger.error("error reading " + dataName + " field -- partial charges cleared"); +} +JU.Logger.info(ndata + " partial charges read"); +} else if (dataName.toUpperCase().contains("ATOM_NAMES")) { +ndata = 0; +try { +var tokens = JU.PT.getTokens(data); +var pt = 0; +for (var i = this.parseIntStr(tokens[pt++]); --i >= 0; ) { +var iatom; +while ((iatom = this.parseIntStr(tokens[pt++])) == -2147483648) { +} +var atomIndex = iatom + this.iatom0 - 1; +var name = tokens[pt++]; +if (!name.equals(".")) atoms[atomIndex].atomName = name; +ndata++; +} +} catch (e) { +JU.Logger.error("error reading " + dataName + " field"); +} +JU.Logger.info(ndata + " atom names read"); +}}, "java.util.Map,JU.Lst"); +Clazz.defineMethod(c$, "addMolAtom", +function(iAtom, isotope, elementSymbol, charge, x, y, z){ +if ("H".equals(elementSymbol)) this.nH++; + else if ("C".equals(elementSymbol)) this.nC++; +this.haveNonzeroZ = new Boolean (this.haveNonzeroZ | (z != 0)).valueOf(); +switch (isotope) { +case 0: +break; +case 1: +elementSymbol = "1H"; +break; +case 2: +elementSymbol = "2H"; +break; +case 3: +elementSymbol = "3H"; +break; +default: +elementSymbol = isotope + elementSymbol; +} +var atom = new J.adapter.smarter.Atom(); +atom.elementSymbol = elementSymbol; +atom.formalCharge = charge; +this.setAtomCoordXYZ(atom, x, y, z); +if (iAtom == -2147483648) { +this.asc.addAtom(atom); +} else { +this.haveAtomSerials = true; +atom.atomSerial = iAtom; +this.asc.addAtomWithMappedSerialNumber(atom); +}return atom; +}, "~N,~N,~S,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "fixOrder", +function(order, stereo){ +switch (order) { +default: +case 0: +case -10: +return 1; +case 1: +switch (stereo) { +case 1: +this.is2D = true; +return 1025; +case 3: +case 6: +this.is2D = true; +return 1041; +case 2: +case 4: +this.is2D = true; +return 1057; +} +break; +case 2: +case 3: +this.nDouble++; +break; +case 4: +return 515; +case 5: +return 66; +case 6: +return 513; +case 7: +return 514; +case 8: +case 9: +return 33; +case 14: +return 4; +case 15: +return 5; +case 16: +return 6; +} +return order; +}, "~N,~N"); +Clazz.defineMethod(c$, "addMolBond", +function(iAtom1, iAtom2, order, stereo){ +order = this.fixOrder(order, stereo); +if (this.haveAtomSerials) return this.asc.addNewBondFromNames(iAtom1, iAtom2, order); +return this.asc.addNewBondWithOrder(this.iatom0 + this.parseIntStr(iAtom1) - 1, this.iatom0 + this.parseIntStr(iAtom2) - 1, order); +}, "~S,~S,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/V3000Rdr.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/V3000Rdr.js new file mode 100755 index 000000000000..04282d53da44 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/V3000Rdr.js @@ -0,0 +1,175 @@ +Clazz.declarePackage("J.adapter.readers.molxyz"); +Clazz.load(null, "J.adapter.readers.molxyz.V3000Rdr", ["java.util.Hashtable", "JU.BS", "$.PT", "J.api.JmolAdapter"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mr = null; +this.line = null; +this.bsXx = null; +this.userData = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.molxyz, "V3000Rdr", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(mr){ +this.mr = mr; +return this; +}, "J.adapter.smarter.AtomSetCollectionReader"); +Clazz.defineMethod(c$, "readAtomsAndBonds", +function(tokens){ +var ac = this.mr.parseIntStr(tokens[3]); +this.readAtoms(ac); +this.mr.asc.setModelInfoForSet("dimension", (this.mr.is2D ? "2D" : "3D"), this.mr.asc.iSet); +this.readBonds(this.mr.parseIntStr(tokens[4])); +this.readUserData(ac); +}, "~A"); +Clazz.defineMethod(c$, "readAtoms", +function(ac){ +this.mr.discardLinesUntilContains("BEGIN ATOM"); +for (var i = 0; i < ac; ++i) { +this.rdContinuation(); +var tokens = JU.PT.getTokens(this.line); +var iAtom = this.mr.parseIntStr(tokens[2]); +var elementSymbol = tokens[3]; +if (elementSymbol.equals("*")) continue; +var pt = 3; +if (elementSymbol.charAt(0) == '"') { +while (!tokens[pt].endsWith("\"")) { +pt++; +} +}var x = this.mr.parseFloatStr(tokens[++pt]); +var y = this.mr.parseFloatStr(tokens[++pt]); +var z = this.mr.parseFloatStr(tokens[++pt]); +var charge = 0; +var isotope = 0; +for (var j = ++pt; j < tokens.length; j++) { +var s = tokens[j].toUpperCase(); +if (s.startsWith("CHG=")) charge = this.mr.parseIntAt(tokens[j], 4); + else if (s.startsWith("MASS=")) isotope = this.mr.parseIntAt(tokens[j], 5); +} +if (isotope > 1 && elementSymbol.equals("H")) isotope = 1 - isotope; +var a = this.mr.addMolAtom(iAtom, isotope, elementSymbol, charge, x, y, z); +a.elementNumber = J.api.JmolAdapter.getElementNumber(elementSymbol); +if (a.elementNumber == 0) { +System.err.println("V3000: Could not read elementSymbol for " + this.line); +if (this.bsXx == null) this.bsXx = new JU.BS(); +this.bsXx.set(a.index); +}} +this.mr.discardLinesUntilContains("END ATOM"); +}, "~N"); +Clazz.defineMethod(c$, "readBonds", +function(bondCount){ +this.mr.discardLinesUntilContains("BEGIN BOND"); +if (bondCount == 0) this.mr.asc.setNoAutoBond(); +for (var i = 0; i < bondCount; ++i) { +var stereo = 0; +this.rdContinuation(); +var tokens = JU.PT.getTokens(this.line); +var order = this.mr.parseIntStr(tokens[3]); +var iAtom1 = tokens[4]; +var iAtom2 = tokens[5]; +var cfg = this.getField("CFG"); +if (cfg == null) { +var endpts = this.getField("ENDPTS"); +if (endpts != null && this.line.indexOf("ATTACH=ALL") >= 0) { +tokens = JU.PT.getTokens(endpts); +var n = this.mr.parseIntStr(tokens[0]); +var o = this.mr.fixOrder(order, 0); +for (var k = 1; k <= n; k++) { +var b = this.mr.asc.addNewBondFromNames(iAtom1, tokens[k], o); +if (this.bsXx != null) { +this.bsXx.clear(b.atomIndex1); +this.bsXx.clear(b.atomIndex2); +}} +}} else { +stereo = this.mr.parseIntStr(cfg); +}var b = this.mr.addMolBond(iAtom1, iAtom2, order, stereo); +if (this.bsXx != null) { +this.bsXx.clear(b.atomIndex1); +this.bsXx.clear(b.atomIndex2); +}} +if (this.bsXx != null && !this.bsXx.isEmpty()) { +if (this.mr.bsDeleted == null) this.mr.bsDeleted = new JU.BS(); +this.mr.bsDeleted.or(this.bsXx); +}this.mr.discardLinesUntilContains("END BOND"); +}, "~N"); +Clazz.defineMethod(c$, "readUserData", +function(ac){ +this.userData = null; +var pc = null; +while (!this.rd().contains("END CTAB")) { +if (!this.line.contains("BEGIN SGROUP")) continue; +var atoms; +var name; +var data; +while (!this.rdContinuation().contains("END SGROUP")) { +if (this.userData == null) this.userData = new java.util.Hashtable(); +if ((atoms = this.getField("ATOMS")) == null || (name = this.getField("FIELDNAME")) == null || (data = this.getField("FIELDDATA")) == null) continue; +name = name.toLowerCase(); +var isPartial = (name.indexOf("partial") >= 0); +if (isPartial) { +if (pc == null) pc = name; + else if (!pc.equals(name)) isPartial = false; +}if (isPartial) { +var at = this.mr.asc.atoms; +for (var i = this.mr.asc.getLastAtomSetAtomIndex(), n = this.mr.asc.ac; i < n; i++) at[i].partialCharge = 0; + +}var a = null; +var f = 0; +if (isPartial) f = this.mr.parseFloatStr(data); + else if ((a = this.userData.get(name)) == null) this.userData.put(name, a = new Array(ac)); +try { +var tokens = JU.PT.getTokens(atoms); +for (var i = tokens.length; --i >= 1; ) { +var atom = tokens[i]; +if (isPartial) this.mr.asc.getAtomFromName(atom).partialCharge = f; + else a[this.mr.parseIntStr(atom) - 1] = data; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +} +if (this.userData == null) return; +for (var key, $key = this.userData.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var a = this.userData.get(key); +var f = Clazz.newFloatArray (a.length, 0); +for (var i = 0; i < a.length; i++) f[i] = (a[i] == null ? 0 : this.mr.parseFloatStr(a[i])); + +this.mr.asc.setAtomProperties(key, f, -1, false); +} +}, "~N"); +Clazz.defineMethod(c$, "getField", +function(key){ +var pt = this.line.indexOf(key + "="); +if (pt < 0) return null; +pt += key.length + 1; +var term = ' '; +switch ((this.line.charAt(pt)).charCodeAt(0)) { +case 34: +term = '"'; +break; +case 40: +term = ')'; +break; +case 43: +break; +default: +pt--; +break; +} +return this.line.substring(pt + 1, (this.line + term).indexOf(term, pt + 1)); +}, "~S"); +Clazz.defineMethod(c$, "rd", +function(){ +return (this.line = this.mr.rd()); +}); +Clazz.defineMethod(c$, "rdContinuation", +function(){ +this.rd(); +while (this.line.endsWith("-")) { +this.line = this.line.substring(0, this.line.length - 1) + this.rd().substring(7); +} +return this.line; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/XyzReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/XyzReader.js new file mode 100755 index 000000000000..3693d8e980c6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/molxyz/XyzReader.js @@ -0,0 +1,81 @@ +Clazz.declarePackage("J.adapter.readers.molxyz"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.molxyz.XyzReader", ["JU.Logger"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.molxyz, "XyzReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "checkLine", +function(){ +var modelAtomCount = this.parseIntStr(this.line); +if (modelAtomCount == -2147483648) { +this.continuing = false; +return false; +}this.vibrationNumber = ++this.modelNumber; +if (this.desiredVibrationNumber <= 0 ? this.doGetModel(this.modelNumber, null) : this.doGetVibration(this.vibrationNumber)) { +this.rd(); +this.checkCurrentLineForScript(); +this.asc.newAtomSet(); +var name = this.line.trim(); +this.readAtoms(modelAtomCount); +this.applySymmetryAndSetTrajectory(); +this.asc.setAtomSetName(name); +if (this.isLastModel(this.modelNumber)) { +this.continuing = false; +return false; +}} else { +this.skipAtomSet(modelAtomCount); +}this.discardLinesUntilNonBlank(); +return false; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.isTrajectory = false; +this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "skipAtomSet", +function(modelAtomCount){ +this.rd(); +for (var i = modelAtomCount; --i >= 0; ) this.rd(); + +}, "~N"); +Clazz.defineMethod(c$, "readAtoms", +function(modelAtomCount){ +for (var i = 0; i < modelAtomCount; ++i) { +this.rd(); +var tokens = this.getTokens(); +if (tokens.length < 4) { +JU.Logger.warn("line cannot be read for XYZ atom data: " + this.line); +continue; +}var atom = this.addAtomXYZSymName(tokens, 1, null, null); +this.setElementAndIsotope(atom, tokens[0]); +var vpt = 4; +switch (tokens.length) { +case 4: +continue; +case 5: +case 6: +case 8: +case 9: +if (tokens[4].indexOf(".") >= 0) { +atom.partialCharge = this.parseFloatStr(tokens[4]); +} else { +var charge = this.parseIntStr(tokens[4]); +if (charge != -2147483648) atom.formalCharge = charge; +}switch (tokens.length) { +case 5: +continue; +case 6: +atom.radius = this.parseFloatStr(tokens[5]); +continue; +case 9: +atom.atomSerial = this.parseIntStr(tokens[8]); +} +vpt++; +default: +var vx = this.parseFloatStr(tokens[vpt++]); +var vy = this.parseFloatStr(tokens[vpt++]); +var vz = this.parseFloatStr(tokens[vpt++]); +if (Float.isNaN(vx) || Float.isNaN(vy) || Float.isNaN(vz)) continue; +this.asc.addVibrationVector(atom.index, vx, vy, vz); +} +} +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/AFLOWReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/AFLOWReader.js new file mode 100755 index 000000000000..3a7ed85d841f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/AFLOWReader.js @@ -0,0 +1,190 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.readers.xtal.VaspPoscarReader", "java.util.Hashtable"], "J.adapter.readers.more.AFLOWReader", ["java.util.Arrays", "JU.BS", "$.Lst", "$.PT", "$.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.aabb = null; +this.readPRE = false; +this.fracB = NaN; +this.compositions = null; +this.getComposition = false; +this.listKey = null; +this.listKeyCase = null; +this.fileModelNumber = 0; +this.havePRE = false; +this.titleMsg = null; +this.keyMap = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.more, "AFLOWReader", J.adapter.readers.xtal.VaspPoscarReader); +Clazz.prepareFields (c$, function(){ +this.keyMap = new java.util.Hashtable(); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.readPRE = this.checkFilterKey("PRE"); +var s; +s = this.getFilter("CA="); +if (s != null) this.fracB = (1 - this.parseFloatStr(s)); +s = this.getFilter("CB="); +if (s != null) this.fracB = this.parseFloatStr(s); +s = this.getFilter("LIST="); +this.listKey = (s == null ? "HF" : s); +this.listKeyCase = this.listKey; +this.getComposition = !Float.isNaN(this.fracB); +this.discardLinesUntilStartsWith("["); +this.aabb = this.line.substring(1, this.line.indexOf("]")); +var pt = (JU.PT.isUpperCase(this.aabb.charAt(1)) ? 1 : 2); +this.defaultLabels = Clazz.newArray(-1, [this.aabb.substring(0, pt), this.aabb.substring(pt)]); +while (this.rd().indexOf("] REFERENCE:") >= 0) this.appendLoadNote(this.line); + +this.compositions = new java.util.Hashtable(); +this.quiet = true; +this.asc.bsAtoms = new JU.BS(); +this.addJmolScript("unitcell off;axes off;"); +this.havePRE = (this.line.indexOf("Structure PRE") >= 0); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (!this.havePRE) this.discardLinesUntilContains("Structure PRE"); +this.havePRE = false; +if (this.line == null) return false; +this.continuing = new Boolean (this.continuing & this.readPrePost()).valueOf(); +return this.continuing; +}); +Clazz.defineMethod(c$, "readPrePost", +function(){ +this.fileModelNumber++; +this.titleMsg = "#" + (this.modelNumber + 1) + (this.getComposition ? "," + this.fileModelNumber + ", Cb=" + this.fracB : ""); +this.elementLabel = null; +var n0 = this.asc.bsAtoms.cardinality(); +if (this.readPRE) { +this.readStructure(this.titleMsg); +} else { +this.readElementLabelsOnly(); +this.discardLinesUntilContains("Structure POST"); +this.readStructure(this.titleMsg); +}if (this.getData()) { +this.applySymmetryAndSetTrajectory(); +} else { +this.asc.bsAtoms.clearBits(this.asc.getLastAtomSetAtomIndex(), this.asc.ac); +this.doCheckUnitCell = false; +}this.finalizeModel(); +if (n0 != this.asc.bsAtoms.cardinality()) JU.Logger.info("AFLOW: file#, saved#, atoms: " + this.fileModelNumber + " " + this.modelNumber + " " + (this.asc.bsAtoms.cardinality() - n0)); +return !this.haveModel || this.modelNumber != this.desiredModelNumber; +}); +Clazz.defineMethod(c$, "finalizeModel", +function(){ +this.asc.removeLastUnselectedAtoms(); +}); +Clazz.defineMethod(c$, "readElementLabelsOnly", +function(){ +this.readLines(5); +this.rdline(); +var n = this.getTokens().length; +this.elementLabel = new Array(n); +this.rdline(); +this.line = ""; +var s = null; +var last = null; +for (var i = 0; i < n; i++) { +while (s == null || s.equals(last)) { +this.rdline(); +var tokens = this.getTokens(); +if (tokens.length != 4 || (s = this.elementLabel[i] = this.getElement(tokens[3])) == null) { +i = n + 1; +break; +}} +last = s; +} +if (s == null) this.elementLabel = this.defaultLabels; +}); +Clazz.defineMethod(c$, "getData", +function(){ +this.discardLinesUntilContains("- DATA -"); +var htAFLOW = new java.util.Hashtable(); +htAFLOW.put("fileModelNumber", Integer.$valueOf(this.fileModelNumber)); +htAFLOW.put("modelNumber", Integer.$valueOf(this.modelNumber + 1)); +htAFLOW.put("AaBb", this.aabb); +var pt = 0; +var sb = new JU.SB(); +var listVal = 3.4028235E38; +var strcb = "?"; +var listValStr = null; +var cb = 0; +while (this.rdline() != null && (pt = this.line.indexOf(" # ")) >= 0) { +var key = this.line.substring(pt + 3).trim(); +var val = this.line.substring(0, pt).trim(); +sb.append(key).append("=").append(val).append(" | "); +if (key.toUpperCase().startsWith(this.listKey)) { +this.listKey = key.toUpperCase(); +this.listKeyCase = key; +listValStr = val; +listVal = this.parseFloatStr(val); +}if (key.equals("Ca")) { +var ca = this.parseFloatStr(val); +if (this.getComposition && Math.abs((1 - ca) - this.fracB) > 0.01) return false; +} else if (key.equals("Cb")) { +cb = this.parseFloatStr(strcb = val); +if (this.getComposition && Math.abs(cb - this.fracB) > 0.01) return false; +} else if (key.equals("Hf_atom [eV] (VASP)")) { +var e = this.parseFloatStr(val); +this.asc.setAtomSetEnergy(val, e); +}} +this.asc.setAtomSetName(this.titleMsg + (this.getComposition ? "" : " Cb=" + cb) + " " + this.listKey + "=" + listValStr); +var count_min = this.compositions.get(strcb); +if (!this.doGetModel(++this.modelNumber, null)) return false; +if (count_min == null) this.compositions.put(strcb, count_min = Clazz.newFloatArray(-1, [0, 3.4028235E38, 0])); +count_min[0]++; +if (listVal < count_min[1]) { +count_min[1] = listVal; +count_min[2] = this.fileModelNumber; +}while (this.line.indexOf("- URL -") < 0) this.rdline(); + +sb.append("URL=" + this.rdline() + "|"); +while (this.line.indexOf("aurl=") < 0) this.rdline(); + +sb.append(this.line); +var pairs = JU.PT.split(sb.toString(), " | "); +for (var i = pairs.length; --i >= 0; ) { +var kv = pairs[i].$plit("="); +if (kv.length < 2) continue; +var f = this.parseFloatStr(kv[1]); +var o = Float.isNaN(f) ? kv[1] : Float.$valueOf(f); +htAFLOW.put(kv[0], o); +var kvclean = this.cleanKey(kv[0]); +if (kvclean !== kv[0]) htAFLOW.put(kvclean, o); +} +this.asc.setCurrentModelInfo("aflowInfo", htAFLOW); +return true; +}); +Clazz.defineMethod(c$, "cleanKey", +function(key){ +var kclean = this.keyMap.get(key); +if (kclean != null) return kclean; +var chars = key.toCharArray(); +for (var i = chars.length; --i >= 0; ) if (!JU.PT.isLetterOrDigit(chars[i])) chars[i] = '_'; + +this.keyMap.put(key, kclean = JU.PT.trim(JU.PT.rep( String.instantialize(chars), "__", "_"), "_")); +return kclean; +}, "~S"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.alignUnitCells(); +this.listCompositions(); +this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "listCompositions", +function(){ +var list = new JU.Lst(); +for (var e, $e = this.compositions.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var count_min = e.getValue(); +list.addLast(e.getKey() + "\t" + (Clazz.floatToInt(count_min[0])) + "\t" + Clazz.floatToInt(count_min[2]) + "\t" + this.listKeyCase + "\t" + count_min[1]); +} +var a = new Array(list.size()); +list.toArray(a); +java.util.Arrays.sort(a); +for (var i = 0, n = a.length; i < n; i++) this.appendLoadNote(this.aabb + "\t" + a[i]); + +}); +Clazz.defineMethod(c$, "alignUnitCells", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/BinaryDcdReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/BinaryDcdReader.js new file mode 100755 index 000000000000..4f29ec4fa078 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/BinaryDcdReader.js @@ -0,0 +1,152 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.more.BinaryDcdReader", ["JU.BS", "$.P3", "$.SB", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nModels = 0; +this.nAtoms = 0; +this.nFree = 0; +this.bsFree = null; +this.xAll = null; +this.yAll = null; +this.zAll = null; +this.crystGroup = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.more, "BinaryDcdReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "setup", +function(fullPath, htParams, reader){ +this.isBinary = true; +this.requiresBSFilter = true; +this.setupASCR(fullPath, htParams, reader); +}, "~S,java.util.Map,~O"); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.initializeTrajectoryFile(); +this.asc.setInfo("ignoreUnitCell", Boolean.TRUE); +}); +Clazz.overrideMethod(c$, "processBinaryDocument", +function(){ +var bytes = Clazz.newByteArray (40, 0); +this.binaryDoc.setStream(null, this.binaryDoc.readInt() == 0x54); +this.binaryDoc.readInt(); +this.nModels = this.binaryDoc.readInt(); +var nPriv = this.binaryDoc.readInt(); +var nSaveC = this.binaryDoc.readInt(); +var nStep = this.binaryDoc.readInt(); +this.binaryDoc.readInt(); +this.binaryDoc.readInt(); +this.binaryDoc.readInt(); +var ndegf = this.binaryDoc.readInt(); +this.nFree = Clazz.doubleToInt(ndegf / 3); +var nFixed = this.binaryDoc.readInt(); +var delta4 = this.binaryDoc.readInt(); +this.crystGroup = this.binaryDoc.readInt(); +this.binaryDoc.readByteArray(bytes, 0, 32); +this.binaryDoc.readInt(); +this.binaryDoc.readInt(); +this.binaryDoc.readInt(); +var sb = new JU.SB(); +for (var i = 0, n = this.binaryDoc.readInt(); i < n; i++) sb.append(this.trimString(this.binaryDoc.readString(80))).appendC('\n'); + +this.binaryDoc.readInt(); +JU.Logger.info("BinaryDcdReadaer:\n" + sb); +this.binaryDoc.readInt(); +this.nAtoms = this.binaryDoc.readInt(); +this.binaryDoc.readInt(); +this.nFree = this.nAtoms - nFixed; +if (nFixed != 0) { +this.binaryDoc.readInt(); +this.bsFree = JU.BS.newN(this.nFree); +for (var i = 0; i < this.nFree; i++) this.bsFree.set(this.binaryDoc.readInt() - 1); + +this.binaryDoc.readInt(); +JU.Logger.info("free: " + this.bsFree.cardinality() + " " + JU.Escape.eBS(this.bsFree)); +}this.readCoordinates(); +JU.Logger.info("Total number of trajectory steps=" + this.trajectorySteps.size()); +}); +Clazz.defineMethod(c$, "trimString", +function(s){ +var pt = s.indexOf('\0'); +if (pt >= 0) s = s.substring(0, pt); +return s.trim(); +}, "~S"); +Clazz.defineMethod(c$, "readFloatArray", +function(){ +var n = Clazz.doubleToInt(this.binaryDoc.readInt() / 4); +var data = Clazz.newFloatArray (n, 0); +for (var i = 0; i < n; i++) data[i] = this.binaryDoc.readFloat(); + +this.binaryDoc.readInt(); +return data; +}); +Clazz.defineMethod(c$, "readDoubleArray", +function(){ +var n = Clazz.doubleToInt(this.binaryDoc.readInt() / 8); +var data = Clazz.newDoubleArray (n, 0); +for (var i = 0; i < n; i++) data[i] = this.binaryDoc.readDouble(); + +this.binaryDoc.readInt(); +return data; +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +var ac = (this.bsFilter == null ? this.templateAtomCount : (this.htParams.get("filteredAtomCount")).intValue()); +for (var i = 0; i < this.nModels; i++) if (this.doGetModel(++this.modelNumber, null)) { +var trajectoryStep = new Array(ac); +if (!this.getTrajectoryStep(trajectoryStep)) return; +this.trajectorySteps.addLast(trajectoryStep); +if (this.isLastModel(this.modelNumber)) return; +} else { +if (this.crystGroup > 0) this.readDoubleArray(); +this.readFloatArray(); +this.readFloatArray(); +this.readFloatArray(); +} +}); +Clazz.defineMethod(c$, "getTrajectoryStep", +function(trajectoryStep){ +try { +var ac = trajectoryStep.length; +var n = -1; +if (this.crystGroup > 0) this.calcUnitCell(this.readDoubleArray()); +var x = this.readFloatArray(); +var y = this.readFloatArray(); +var z = this.readFloatArray(); +var bs = (this.xAll == null ? null : this.bsFree); +if (bs == null) { +this.xAll = x; +this.yAll = y; +this.zAll = z; +}for (var i = 0, vpt = 0; i < this.nAtoms; i++) { +var pt = new JU.P3(); +if (bs == null || bs.get(i)) { +pt.set(x[vpt], y[vpt], z[vpt]); +vpt++; +} else { +pt.set(this.xAll[i], this.yAll[i], this.zAll[i]); +}if (this.bsFilter == null || this.bsFilter.get(i)) { +if (++n == ac) return true; +trajectoryStep[n] = pt; +}} +return true; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~A"); +Clazz.defineMethod(c$, "calcUnitCell", +function(abc){ +var a = abc[0]; +var angle1 = abc[1]; +var b = abc[2]; +var angle2 = abc[3]; +var angle3 = abc[4]; +var c = abc[5]; +var alpha = (1.5707963267948966 - Math.asin(angle3)) * 180 / 3.141592653589793; +var beta = (1.5707963267948966 - Math.asin(angle2)) * 180 / 3.141592653589793; +var gamma = (1.5707963267948966 - Math.asin(angle1)) * 180 / 3.141592653589793; +System.out.println("unitcell:[" + a + " " + b + " " + c + " " + alpha + " " + beta + " " + gamma + "]"); +return Clazz.newFloatArray(-1, [a, b, c, alpha, beta, gamma]); +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/CDXReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/CDXReader.js new file mode 100755 index 000000000000..b41599713ef9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/CDXReader.js @@ -0,0 +1,13 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.readers.xml.XmlCdxReader"], "J.adapter.readers.more.CDXReader", ["JU.Rdr", "J.adapter.writers.CDXMLWriter"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.more, "CDXReader", J.adapter.readers.xml.XmlCdxReader); +Clazz.defineMethod(c$, "processXml2", +function(parent, saxReader){ +var xml = J.adapter.writers.CDXMLWriter.fromCDX(this.binaryDoc); +this.reader = JU.Rdr.getBR(xml); +Clazz.superCall(this, J.adapter.readers.more.CDXReader, "processXml2", [this, saxReader]); +this.binaryDoc = null; +this.isCDX = true; +}, "J.adapter.readers.xml.XmlReader,~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/ForceFieldReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/ForceFieldReader.js new file mode 100755 index 000000000000..c9c821c7a736 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/ForceFieldReader.js @@ -0,0 +1,88 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "java.util.Properties"], "J.adapter.readers.more.ForceFieldReader", ["JU.PT", "J.adapter.smarter.Atom"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.userAtomTypes = null; +this.atomTypes = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.more, "ForceFieldReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.atomTypes = new java.util.Properties(); +}); +Clazz.defineMethod(c$, "setUserAtomTypes", +function(){ +this.userAtomTypes = this.htParams.get("atomTypes"); +if (this.userAtomTypes != null) this.userAtomTypes = ";" + this.userAtomTypes + ";"; +}); +Clazz.defineMethod(c$, "getElementSymbol", +function(atom, atomType){ +var elementSymbol = this.atomTypes.get(atomType); +if (elementSymbol != null) { +atom.elementSymbol = elementSymbol; +return true; +}var nChar = atomType.length; +var haveSymbol = (nChar < 2); +var ptType; +if (this.userAtomTypes != null && (ptType = this.userAtomTypes.indexOf(";" + atomType + "=>")) >= 0) { +ptType += nChar + 3; +elementSymbol = this.userAtomTypes.substring(ptType, this.userAtomTypes.indexOf(";", ptType)).trim(); +haveSymbol = true; +} else if (nChar == 1) { +elementSymbol = atomType.toUpperCase(); +haveSymbol = true; +} else { +var ch0 = atomType.charAt(0); +var ch1 = atomType.charAt(1); +var isXx = (JU.PT.isUpperCase(ch0) && JU.PT.isLowerCase(ch1)); +if (" IM IP sz az sy ay ayt ".indexOf(atomType) >= 0) { +if (ch0 == 'I') { +elementSymbol = atom.atomName.substring(0, 2); +if (!JU.PT.isLowerCase(elementSymbol.charAt(1))) elementSymbol = elementSymbol.substring(0, 1); +} else { +elementSymbol = (ch0 == 's' ? "Si" : "Al"); +}} else if (nChar == 2 && isXx) { +} else if (JU.PT.isLetter(ch0) && !JU.PT.isLetter(ch1)) { +elementSymbol = "" + Character.toUpperCase(ch0); +} else if (nChar > 2 && isXx && !JU.PT.isLetter(atomType.charAt(2))) { +elementSymbol = "" + ch0 + ch1; +} else { +ch0 = Character.toUpperCase(ch0); +var check = " " + atomType + " "; +if (" CA CB CC CD CE CF CG CH CI CJ CK CM CN CP CQ CR CT CV CW HA HP HC HO HS HW LP NA NB NC NT OH OS OW SH AH BH HT HY AC BC CS OA OB OE OT dw hc hi hn ho hp hs hw hscp htip ca cg ci cn co coh cp cr cs ct c3h c3m c4h c4m na nb nh nho nh+ ni nn np npc nr nt nz oc oe oh op oscp otip sc sh sp br cl ca+ ar si lp nu sz oz az pz ga ge tioc titd li+ na+ rb+ cs+ mg2+ ca2+ ba2+ cu2+ cl- br- so4 sy oy ay ayt nac+ mg2c fe2c mn4c mn3c co2c ni2c lic+ pd2+ ti4c sr2c ca2c cly- hocl py vy nh4+ so4y lioh naoh koh foh cloh beoh al CE1 CF1 CF2 CF3 CG CD2 CH1E CH2E CH3E CM CP3 CPH1 CPH2 CQ66 CR55 CR56 CR66 CS66 CT CT3 CT4 CUA1 CUA2 CUA3 CUY1 CUY2 HA HC HMU HO HT LP NC NC2 NO2 NP NR1 NR2 NR3 NR55 NR56 NR66 NT NX OA OAC OC OE OH2 OK OM OS OSH OSI OT OW PO3 PO4 PT PUA1 PUY1 SE SH1E SK SO1 SO2 SO3 SO4 ST ST2 ST2 br br- br1 cl cl- cl1 cl12 cl13 cl14 cl1p ca+ cu+2 fe+2 mg+2 zn+2 cs+ li+ na+ rb+ al4z si si4 si4c si4z ar he kr ne xe dw hi hw ca cg ci co coh cp cr cs ct ct3 na nb nh nho ni no np nt nt2 nz oa oc oh op os ot sp bt cl\' si4l si5l si5t si6 si6o si\' br ca cc cd ce cf cl cp cq cu cv cx cy ha hc hn ho hp hs na nb nc nd nh oh os pb pc pd pe pf px py sh ss sx sy hn2 ho2 cz oo oz si sio hsi osi ".indexOf(check) < 0) { +} else if (" AH BH AC BC ".indexOf(check) >= 0) { +elementSymbol = "" + ch1; +} else if (" al al4z ar ba2+ beoh br br- br1 ca+ ca2+ ca2c cl cl\' cl- cl1 cl12 cl13 cl14 cl1p cloh cly- co2c cs+ cu+2 cu2+ fe+2 fe2c ga ge he kr li+ lic+ lioh lp LP mg+2 mg2+ mg2c mn3c mn4c na+ nac+ naoh ne ni2c nu pd2+ rb+ si si\' si4 si4c si4l si4z si5l si5t si6 si6o sio sr2c ti4c tioc titd xe zn+2 ".indexOf(check) >= 0) { +elementSymbol = "" + ch0 + ch1; +} else { +elementSymbol = "" + ch0; +}}if (elementSymbol == null) { +elementSymbol = "" + ch0 + Character.toLowerCase(ch1); +} else { +haveSymbol = true; +}}atom.elementSymbol = elementSymbol; +if (haveSymbol) this.atomTypes.put(atomType, elementSymbol); +return haveSymbol; +}, "J.adapter.smarter.Atom,~S"); +c$.deducePdbElementSymbol = Clazz.defineMethod(c$, "deducePdbElementSymbol", +function(isHetero, XX, group3){ +var i = XX.indexOf('\0'); +var atomType = null; +if (i >= 0) { +atomType = XX.substring(i + 1); +XX = XX.substring(0, i); +if (atomType != null && atomType.length == 1) return atomType; +}if (XX.equalsIgnoreCase(group3)) return XX; +var len = XX.length; +var ch1 = ' '; +i = 0; +while (i < len && (ch1 = XX.charAt(i++)) <= '9') { +} +var ch2 = (i < len ? XX.charAt(i) : ' '); +var full = group3 + "." + ch1 + ch2; +if (("OEC.CA ICA.CA OC1.CA OC2.CA OC4.CA").indexOf(full) >= 0) return "Ca"; +if (XX.indexOf("'") > 0 || XX.indexOf("*") >= 0 || "HCNO".indexOf(ch1) >= 0 && ch2 <= 'H' || XX.startsWith("CM")) return "" + ch1; +if (isHetero && J.adapter.smarter.Atom.isValidSymNoCase(ch1, ch2)) return ("" + ch1 + ch2).trim(); +if (J.adapter.smarter.Atom.isValidSym1(ch1)) return "" + ch1; +if (J.adapter.smarter.Atom.isValidSym1(ch2)) return "" + ch2; +return "Xx"; +}, "~B,~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/GromacsReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/GromacsReader.js new file mode 100755 index 000000000000..d28921057404 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/GromacsReader.js @@ -0,0 +1,86 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.more.GromacsReader", ["JU.P3", "J.adapter.smarter.Atom", "JU.Logger"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.more, "GromacsReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setIsPDB(); +this.asc.newAtomSet(); +this.setModelPDB(true); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +this.checkCurrentLineForScript(); +this.asc.setAtomSetName(this.line.trim()); +this.readAtoms(); +this.readUnitCell(); +this.continuing = false; +return false; +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +var modelAtomCount = this.parseIntStr(this.rd()); +for (var i = 0; i < modelAtomCount; ++i) { +this.rd(); +var len = this.line.length; +if (len != 44 && len != 68) { +JU.Logger.warn("line cannot be read for GROMACS atom data: " + this.line); +continue; +}var atom = new J.adapter.smarter.Atom(); +atom.sequenceNumber = this.parseIntRange(this.line, 0, 5); +this.setAtomName(atom, this.parseTokenRange(this.line, 5, 9).trim(), this.line.substring(11, 15).trim()); +atom.atomSerial = this.parseIntRange(this.line, 15, 20); +atom.x = this.parseFloatRange(this.line, 20, 28) * 10; +atom.y = this.parseFloatRange(this.line, 28, 36) * 10; +atom.z = this.parseFloatRange(this.line, 36, 44) * 10; +if (Float.isNaN(atom.x) || Float.isNaN(atom.y) || Float.isNaN(atom.z)) { +JU.Logger.warn("line cannot be read for GROMACS atom data: " + this.line); +atom.set(0, 0, 0); +}this.setAtomCoord(atom); +atom.elementSymbol = this.deduceElementSymbol(atom.group3, atom.atomName); +if (!this.filterAtom(atom, i)) continue; +atom.isHetero = false; +this.asc.addAtom(atom); +if (len < 69) continue; +var vx = this.parseFloatRange(this.line, 44, 52) * 10; +var vy = this.parseFloatRange(this.line, 52, 60) * 10; +var vz = this.parseFloatRange(this.line, 60, 68) * 10; +if (Float.isNaN(vx) || Float.isNaN(vy) || Float.isNaN(vz)) continue; +this.asc.addVibrationVector(atom.index, vx, vy, vz); +} +}); +Clazz.defineMethod(c$, "setAtomName", +function(atom, gname, aname){ +atom.atomName = aname; +if (gname.equals("SOL") && aname.length == 3 && "OW1;HW2;HW3".indexOf(aname) >= 0) gname = "WAT"; +atom.group3 = gname; +}, "J.adapter.smarter.Atom,~S,~S"); +Clazz.defineMethod(c$, "deduceElementSymbol", +function(group3, atomName){ +if (atomName.length <= 2 && group3.equals(atomName)) return atomName; +var ch1 = (atomName.length == 4 ? atomName.charAt(0) : '\0'); +var ch2 = atomName.charAt(atomName.length == 4 ? 1 : 0); +var isHetero = this.vwr.getJBR().isHetero(group3); +if (J.adapter.smarter.Atom.isValidSymNoCase(ch1, ch2)) return (isHetero || ch1 != 'H' ? "" + ch1 + ch2 : "H"); +if (J.adapter.smarter.Atom.isValidSym1(ch2)) return "" + ch2; +if (J.adapter.smarter.Atom.isValidSym1(ch1)) return "" + ch1; +return "Xx"; +}, "~S,~S"); +Clazz.defineMethod(c$, "readUnitCell", +function(){ +if (this.rd() == null) return; +var tokens = this.getTokens(); +if (tokens.length < 3 || !this.doApplySymmetry) return; +var a = 10 * this.parseFloatStr(tokens[0]); +var b = 10 * this.parseFloatStr(tokens[1]); +var c = 10 * this.parseFloatStr(tokens[2]); +this.setUnitCell(a, b, c, 90, 90, 90); +this.setSpaceGroupName("P1"); +var atoms = this.asc.atoms; +var pt = JU.P3.new3(0.5, 0.5, 0.5); +for (var i = this.asc.ac; --i >= 0; ) { +this.setAtomCoord(atoms[i]); +atoms[i].add(pt); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/JcampdxReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/JcampdxReader.js new file mode 100755 index 000000000000..3a08f10b4663 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/JcampdxReader.js @@ -0,0 +1,255 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.readers.molxyz.MolReader", "J.api.JmolJDXMOLReader", "JU.Lst"], "J.adapter.readers.more.JcampdxReader", ["JU.BS", "$.PT", "$.Rdr", "J.adapter.smarter.SmarterJmolAdapter", "J.api.Interface", "JU.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.selectedModel = 0; +this.mpr = null; +this.acdMolFile = null; +this.nPeaks = 0; +this.acdAssignments = null; +this.title = null; +this.nucleus = ""; +this.type = null; +this.peakData = null; +this.allTypes = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.more, "JcampdxReader", J.adapter.readers.molxyz.MolReader, J.api.JmolJDXMOLReader); +Clazz.prepareFields (c$, function(){ +this.peakData = new JU.Lst(); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.vwr.setBooleanProperty("_JSpecView".toLowerCase(), true); +if (this.isTrajectory) { +JU.Logger.warn("TRAJECTORY keyword ignored"); +this.isTrajectory = false; +}if (this.reverseModels) { +JU.Logger.warn("REVERSE keyword ignored"); +this.reverseModels = false; +}this.selectedModel = this.desiredModelNumber; +this.desiredModelNumber = -2147483648; +if (!this.checkFilterKey("NOSYNC")) this.addJmolScript("sync on"); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +var i = this.line.indexOf("="); +if (i < 0 || !this.line.startsWith("##")) return true; +var label = JU.PT.replaceAllCharacters(this.line.substring(0, i).trim(), " ", "").toUpperCase(); +if (label.length > 12) label = label.substring(0, 12); +var pt = ("##$MODELS ##$PEAKS ##$SIGNALS ##$MOLFILE ##NPOINTS ##TITLE ##PEAKASSIGN##$UVIR_ASSI##$MS_FRAGME##.OBSERVENU##DATATYPE ").indexOf(label); +if (pt < 0) return true; +if (this.mpr == null) this.mpr = (J.api.Interface.getOption("jsv.JDXMOLParser", this.vwr, "file")).set(this, this.filePath, this.htParams); +var value = this.line.substring(i + 1).trim(); +this.mpr.setLine(value); +switch (pt) { +case 0: +this.mpr.readModels(); +break; +case 12: +case 24: +this.mpr.readPeaks(pt == 24, -1); +break; +case 36: +this.acdMolFile = this.mpr.readACDMolFile(); +this.processModelData(this.acdMolFile, this.title + " (assigned)", "MOL", "mol", "", 0.01, NaN, true); +if (this.asc.errorMessage != null) { +this.continuing = false; +return false; +}break; +case 48: +this.nPeaks = JU.PT.parseInt(value); +break; +case 60: +this.title = JU.PT.split(value, "$$")[0].trim(); +break; +case 72: +case 84: +case 96: +this.acdAssignments = this.mpr.readACDAssignments(this.nPeaks, pt == 72); +break; +case 108: +this.nucleus = value.substring(1); +break; +case 120: +this.type = value; +if ((pt = this.type.indexOf(" ")) >= 0) this.type = this.type.substring(0, pt); +break; +} +return true; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (this.mpr != null) this.processPeakData(); +this.finalizeReaderMR(); +}); +Clazz.overrideMethod(c$, "processModelData", +function(data, id, type, base, last, modelScale, vibScale, isFirst){ +var model0 = this.asc.iSet; +var model = null; +while (true) { +var ret = J.adapter.smarter.SmarterJmolAdapter.staticGetAtomSetCollectionReader(this.filePath, type, JU.Rdr.getBR(data), this.htParams); +if ((typeof(ret)=='string')) { +JU.Logger.warn("" + ret); +if ((ret).startsWith(JV.JC.READER_NOT_FOUND)) this.asc.errorMessage = ret; +break; +}ret = J.adapter.smarter.SmarterJmolAdapter.staticGetAtomSetCollection(ret); +if ((typeof(ret)=='string')) { +JU.Logger.warn("" + ret); +break; +}model = ret; +var baseModel = base; +if (baseModel.length == 0) baseModel = last; +if (baseModel.length != 0) { +var ibase = this.findModelById(baseModel); +if (ibase >= 0) { +this.asc.setModelInfoForSet("jdxModelID", baseModel, ibase); +for (var i = model.atomSetCount; --i >= 0; ) model.setModelInfoForSet("jdxBaseModel", baseModel, i); + +if (model.bondCount == 0) this.setBonding(model, ibase); +}}if (!Float.isNaN(vibScale)) { +JU.Logger.info("JcampdxReader applying vibration scaling of " + vibScale + " to " + model.ac + " atoms"); +var atoms = model.atoms; +for (var i = model.ac; --i >= 0; ) { +if (atoms[i].vib != null && !Float.isNaN(atoms[i].vib.z)) atoms[i].vib.scale(vibScale); +} +}if (!Float.isNaN(modelScale)) { +JU.Logger.info("JcampdxReader applying model scaling of " + modelScale + " to " + model.ac + " atoms"); +var atoms = model.atoms; +for (var i = model.ac; --i >= 0; ) atoms[i].scale(modelScale); + +}JU.Logger.info("jdx model=" + id + " type=" + model.fileTypeName); +this.asc.appendAtomSetCollection(-1, model); +break; +} +this.updateModelIDs(id, model0, isFirst); +}, "~S,~S,~S,~S,~S,~N,~N,~B"); +Clazz.defineMethod(c$, "setBonding", +function(a, ibase){ +var n0 = this.asc.getAtomSetAtomCount(ibase); +var n = a.ac; +if (n % n0 != 0) { +JU.Logger.warn("atom count in secondary model (" + n + ") is not a multiple of " + n0 + " -- bonding ignored"); +return; +}var bonds = this.asc.bonds; +var b0 = 0; +for (var i = 0; i < ibase; i++) b0 += this.asc.getAtomSetBondCount(i); + +var b1 = b0 + this.asc.getAtomSetBondCount(ibase); +var ii0 = this.asc.getAtomSetAtomIndex(ibase); +var nModels = a.atomSetCount; +for (var j = 0; j < nModels; j++) { +var i0 = a.getAtomSetAtomIndex(j) - ii0; +if (a.getAtomSetAtomCount(j) != n0) { +JU.Logger.warn("atom set atom count in secondary model (" + a.getAtomSetAtomCount(j) + ") is not equal to " + n0 + " -- bonding ignored"); +return; +}for (var i = b0; i < b1; i++) a.addNewBondWithOrder(bonds[i].atomIndex1 + i0, bonds[i].atomIndex2 + i0, bonds[i].order); + +} +}, "J.adapter.smarter.AtomSetCollection,~N"); +Clazz.defineMethod(c$, "updateModelIDs", +function(id, model0, isFirst){ +var n = this.asc.atomSetCount; +if (isFirst && n == model0 + 2) { +this.asc.setCurrentModelInfo("modelID", id); +return; +}for (var pt = 0, i = model0; ++i < n; ) this.asc.setModelInfoForSet("modelID", id + "." + (++pt), i); + +}, "~S,~N,~B"); +Clazz.overrideMethod(c$, "addPeakData", +function(info){ +this.peakData.addLast(info); +}, "~S"); +Clazz.defineMethod(c$, "processPeakData", +function(){ +if (this.acdAssignments != null) { +try { +this.mpr.setACDAssignments(this.title, this.nucleus + this.type, 0, this.acdAssignments, this.acdMolFile); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}var n = this.peakData.size(); +if (n == 0) return; +var bsModels = new JU.BS(); +var havePeaks = (n > 0); +for (var p = 0; p < n; p++) { +this.line = this.peakData.get(p); +var type = this.mpr.getAttribute(this.line, "type"); +var id = this.mpr.getAttribute(this.line, "model"); +var i = this.findModelById(id); +if (i < 0) { +JU.Logger.warn("cannot find model " + id + " required for " + this.line); +continue; +}this.addType(i, type); +var title = type + ": " + this.mpr.getAttribute(this.line, "title"); +var key = "jdxAtomSelect_" + this.mpr.getAttribute(this.line, "type"); +bsModels.set(i); +var s; +if (this.mpr.getAttribute(this.line, "atoms").length != 0) { +this.processPeakSelectAtom(i, key, this.line); +s = type + ": "; +} else if (this.processPeakSelectModel(i, title)) { +s = "model: "; +} else { +s = "ignored: "; +}JU.Logger.info(s + this.line); +} +n = this.asc.atomSetCount; +for (var i = n; --i >= 0; ) { +var id = this.asc.getAtomSetAuxiliaryInfoValue(i, "modelID"); +if (havePeaks && !bsModels.get(i) && id.indexOf(".") >= 0) { +this.asc.removeAtomSet(i); +n--; +}} +if (this.selectedModel == -2147483648) { +if (this.allTypes != null) this.appendLoadNote(this.allTypes); +} else { +if (this.selectedModel == 0) this.selectedModel = n - 1; +for (var i = this.asc.atomSetCount; --i >= 0; ) if (i + 1 != this.selectedModel) this.asc.removeAtomSet(i); + +if (n > 0) this.appendLoadNote(this.asc.getAtomSetAuxiliaryInfoValue(0, "name")); +}for (var i = this.asc.atomSetCount; --i >= 0; ) this.asc.setAtomSetNumber(i, i + 1); + +this.asc.centralize(); +}); +Clazz.defineMethod(c$, "findModelById", +function(modelID){ +for (var i = this.asc.atomSetCount; --i >= 0; ) { +var id = this.asc.getAtomSetAuxiliaryInfoValue(i, "modelID"); +if (modelID.equals(id)) return i; +} +return -1; +}, "~S"); +Clazz.defineMethod(c$, "addType", +function(imodel, type){ +var types = this.addTypeStr(this.asc.getAtomSetAuxiliaryInfoValue(imodel, "spectrumTypes"), type); +if (types == null) return; +this.asc.setModelInfoForSet("spectrumTypes", types, imodel); +var s = this.addTypeStr(this.allTypes, type); +if (s != null) this.allTypes = s; +}, "~N,~S"); +Clazz.defineMethod(c$, "addTypeStr", +function(types, type){ +if (types != null && types.contains(type)) return null; +if (types == null) types = ""; + else types += ","; +return types + type; +}, "~S,~S"); +Clazz.defineMethod(c$, "processPeakSelectAtom", +function(i, key, data){ +var peaks = this.asc.getAtomSetAuxiliaryInfoValue(i, key); +if (peaks == null) this.asc.setModelInfoForSet(key, peaks = new JU.Lst(), i); +peaks.addLast(data); +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "processPeakSelectModel", +function(i, title){ +if (this.asc.getAtomSetAuxiliaryInfoValue(i, "jdxModelSelect") != null) return false; +this.asc.setModelInfoForSet("name", title, i); +this.asc.setModelInfoForSet("jdxModelSelect", this.line, i); +return true; +}, "~N,~S"); +Clazz.overrideMethod(c$, "setSpectrumPeaks", +function(nH, piUnitsX, piUnitsY){ +}, "~N,~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/MdCrdReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/MdCrdReader.js new file mode 100755 index 000000000000..c1f0b6669065 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/MdCrdReader.js @@ -0,0 +1,77 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.more.MdCrdReader", ["JU.P3", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ptFloat = 0; +this.lenLine = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.more, "MdCrdReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "setup", +function(fullPath, htParams, readerOrDocument){ +this.requiresBSFilter = true; +this.setupASCR(fullPath, htParams, readerOrDocument); +}, "~S,java.util.Map,~O"); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.initializeTrajectoryFile(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +this.readCoordinates(); +JU.Logger.info("Total number of trajectory steps=" + this.trajectorySteps.size()); +this.continuing = false; +return false; +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +this.line = null; +var ac = (this.bsFilter == null ? this.templateAtomCount : (this.htParams.get("filteredAtomCount")).intValue()); +var isPeriodic = this.htParams.containsKey("isPeriodic"); +var floatCount = this.templateAtomCount * 3 + (isPeriodic ? 3 : 0); +while (true) if (this.doGetModel(++this.modelNumber, null)) { +var trajectoryStep = new Array(ac); +if (!this.getTrajectoryStep(trajectoryStep, isPeriodic)) return; +this.trajectorySteps.addLast(trajectoryStep); +if (this.isLastModel(this.modelNumber)) return; +} else { +if (!this.skipFloats(floatCount)) return; +} +}); +Clazz.defineMethod(c$, "getFloat", +function(){ +while (this.line == null || this.ptFloat >= this.lenLine) { +if (this.rd() == null) return NaN; +this.ptFloat = 0; +this.lenLine = this.line.length; +} +this.ptFloat += 8; +return this.parseFloatRange(this.line, this.ptFloat - 8, this.ptFloat); +}); +Clazz.defineMethod(c$, "getPoint", +function(){ +var x = this.getFloat(); +var y = this.getFloat(); +var z = this.getFloat(); +return (Float.isNaN(z) ? null : JU.P3.new3(x, y, z)); +}); +Clazz.defineMethod(c$, "getTrajectoryStep", +function(trajectoryStep, isPeriodic){ +var ac = trajectoryStep.length; +var n = -1; +for (var i = 0; i < this.templateAtomCount; i++) { +var pt = this.getPoint(); +if (pt == null) return false; +if (this.bsFilter == null || this.bsFilter.get(i)) { +if (++n == ac) return false; +trajectoryStep[n] = pt; +}} +if (isPeriodic) this.getPoint(); +return (this.line != null); +}, "~A,~B"); +Clazz.defineMethod(c$, "skipFloats", +function(n){ +var i = 0; +while (i < n && this.rd() != null) i += this.getTokens().length; + +return (this.line != null); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/MdTopReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/MdTopReader.js new file mode 100755 index 000000000000..b04e3271dc0c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/MdTopReader.js @@ -0,0 +1,156 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.readers.more.ForceFieldReader"], "J.adapter.readers.more.MdTopReader", ["JU.Lst", "J.adapter.smarter.Atom", "$.Bond", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nAtoms = 0; +this.ac = 0; +this.bonds1 = null; +this.bonds2 = null; +this.$atomTypes = null; +this.group3s = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.more, "MdTopReader", J.adapter.readers.more.ForceFieldReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setIsPDB(); +this.setUserAtomTypes(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf("%FLAG ") != 0) return true; +this.line = this.line.substring(6).trim(); +if (this.line.equals("POINTERS")) this.getPointers(); + else if (this.line.equals("ATOM_NAME")) this.getAtomNames(); + else if (this.line.equals("BONDS_INC_HYDROGEN")) this.readBonds(); + else if (this.line.equals("BONDS_WITHOUT_HYDROGEN")) this.readBonds(); + else if (this.line.equals("CHARGE")) this.getCharges(); + else if (this.line.equals("RESIDUE_LABEL")) this.getResidueLabels(); + else if (this.line.equals("RESIDUE_POINTER")) this.getResiduePointers(); + else if (this.line.equals("AMBER_ATOM_TYPE")) this.getAtomTypes(); + else if (this.line.equals("MASS")) this.getMasses(); +return false; +}); +Clazz.defineMethod(c$, "readBonds", +function(){ +if (this.bonds1 == null) { +this.bonds1 = this.getDataBlock(); +return; +}if (this.bonds2 == null) { +this.bonds2 = this.getDataBlock(); +}}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.createBonds(this.bonds1); +this.createBonds(this.bonds2); +this.finalizeReaderASCR(); +var atoms = this.asc.atoms; +var atom; +for (var i = 0; i < this.ac; i++) { +atom = atoms[i]; +atom.isHetero = this.vwr.getJBR().isHetero(atom.group3); +var atomType = this.$atomTypes[i]; +if (!this.getElementSymbol(atom, atomType)) atom.elementSymbol = J.adapter.readers.more.ForceFieldReader.deducePdbElementSymbol(atom.isHetero, atom.atomName, atom.group3); +} +var atoms2 = null; +if (this.filter == null) { +this.nAtoms = this.ac; +} else { +atoms2 = new Array(atoms.length); +this.nAtoms = 0; +for (var i = 0; i < this.ac; i++) if (this.filterAtom(atoms[i], i)) atoms2[this.nAtoms++] = atoms[i]; + +}for (var i = 0, j = 0, k = 0; i < this.ac; i++) { +if (this.filter == null || this.bsFilter.get(i)) { +if (k % 100 == 0) j++; +this.setAtomCoordXYZ(atoms[i], (i % 100) * 2, j * 2, 0); +}} +if (atoms2 != null) { +this.discardPreviousAtoms(); +for (var i = 0; i < this.nAtoms; i++) this.asc.addAtom(atoms2[i]); + +}JU.Logger.info("Total number of atoms used=" + this.nAtoms); +this.setModelPDB(true); +this.htParams.put("defaultType", "mdcrd"); +}); +Clazz.defineMethod(c$, "createBonds", +function(bonds){ +if (bonds == null) return; +for (var i = 0; i < bonds.length; i++) { +var a1 = Clazz.doubleToInt(Integer.parseInt(bonds[i++]) / 3); +var a2 = Clazz.doubleToInt(Integer.parseInt(bonds[i++]) / 3); +if (a1 < this.asc.ac && a2 < this.asc.ac) this.asc.addBond( new J.adapter.smarter.Bond(a1, a2, 1)); +} +}, "~A"); +Clazz.defineMethod(c$, "getDataBlock", +function(){ +var vdata = new JU.Lst(); +this.discardLinesUntilContains("FORMAT"); +var n = J.adapter.smarter.AtomSetCollectionReader.getFortranFormatLengths(this.line.substring(this.line.indexOf("("))).get(0).intValue(); +var i = 0; +var len = 0; +while (true) { +if (i >= len) { +if (this.rd() == null) break; +i = 0; +len = this.line.length; +if (len == 0 || this.line.indexOf("FLAG") >= 0) break; +}vdata.addLast(this.line.substring(i, i + n).trim()); +i += n; +} +return vdata.toArray( new Array(vdata.size())); +}); +Clazz.defineMethod(c$, "getPointers", +function(){ +var tokens = this.getDataBlock(); +this.ac = this.parseIntStr(tokens[0]); +var isPeriodic = (tokens[27].charAt(0) != '0'); +if (isPeriodic) { +JU.Logger.info("Periodic type: " + tokens[27]); +this.htParams.put("isPeriodic", Boolean.TRUE); +}JU.Logger.info("Total number of atoms read=" + this.ac); +this.htParams.put("templateAtomCount", Integer.$valueOf(this.ac)); +for (var i = 0; i < this.ac; i++) this.asc.addAtom( new J.adapter.smarter.Atom()); + +}); +Clazz.defineMethod(c$, "getAtomTypes", +function(){ +this.$atomTypes = this.getDataBlock(); +}); +Clazz.defineMethod(c$, "getCharges", +function(){ +var data = this.getDataBlock(); +if (data.length != this.ac) return; +var atoms = this.asc.atoms; +for (var i = this.ac; --i >= 0; ) atoms[i].partialCharge = this.parseFloatStr(data[i]); + +}); +Clazz.defineMethod(c$, "getResiduePointers", +function(){ +var resPtrs = this.getDataBlock(); +JU.Logger.info("Total number of residues=" + resPtrs.length); +var pt1 = this.ac; +var pt2; +var atoms = this.asc.atoms; +for (var i = resPtrs.length; --i >= 0; ) { +var ptr = pt2 = this.parseIntStr(resPtrs[i]) - 1; +while (ptr < pt1) { +if (this.group3s != null) atoms[ptr].group3 = this.group3s[i]; +atoms[ptr++].sequenceNumber = i + 1; +} +pt1 = pt2; +} +}); +Clazz.defineMethod(c$, "getResidueLabels", +function(){ +this.group3s = this.getDataBlock(); +}); +Clazz.defineMethod(c$, "getAtomNames", +function(){ +var names = this.getDataBlock(); +var atoms = this.asc.atoms; +for (var i = 0; i < this.ac; i++) atoms[i].atomName = names[i]; + +}); +Clazz.defineMethod(c$, "getMasses", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/Mol2Reader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/Mol2Reader.js new file mode 100755 index 000000000000..92c547f3a11f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/Mol2Reader.js @@ -0,0 +1,171 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.readers.more.ForceFieldReader"], "J.adapter.readers.more.Mol2Reader", ["JU.PT", "J.adapter.smarter.Bond"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nAtoms = 0; +this.ac = 0; +this.isPDB = false; +this.lastSequenceNumber = 2147483647; +this.chainID = 64; +Clazz.instantialize(this, arguments);}, J.adapter.readers.more, "Mol2Reader", J.adapter.readers.more.ForceFieldReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setUserAtomTypes(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.equals("@MOLECULE")) { +if (!this.processMolecule()) { +return true; +}this.continuing = !this.isLastModel(this.modelNumber); +return false; +}if (this.line.length != 0 && this.line.charAt(0) == '#') { +this.checkCurrentLineForScript(); +}return true; +}); +Clazz.defineMethod(c$, "processMolecule", +function(){ +this.isPDB = false; +var thisDataSetName = this.rd().trim(); +if (!this.doGetModel(++this.modelNumber, thisDataSetName)) { +return false; +}this.lastSequenceNumber = 2147483647; +this.chainID = 64; +this.rd(); +this.line += " 0 0 0 0 0 0"; +this.ac = this.parseIntStr(this.line); +var bondCount = this.parseInt(); +if (bondCount == 0) this.asc.setNoAutoBond(); +var resCount = this.parseInt(); +this.rd(); +this.rd(); +if (this.rd() != null && (this.line.length == 0 || this.line.charAt(0) != '@')) { +if (this.rd() != null && this.line.length != 0 && this.line.charAt(0) != '@') { +if (this.line.indexOf("jmolscript:") >= 0) { +this.checkCurrentLineForScript(); +if (this.line.equals("#")) { +this.line = ""; +}}if (this.line.length != 0) { +thisDataSetName += ": " + this.line.trim(); +}}}this.newAtomSet(thisDataSetName); +while (this.line != null && !this.line.equals("@MOLECULE")) { +if (this.line.equals("@ATOM")) { +this.readAtoms(this.ac); +this.asc.setAtomSetName(thisDataSetName); +} else if (this.line.equals("@BOND")) { +this.readBonds(bondCount); +} else if (this.line.equals("@SUBSTRUCTURE")) { +this.readResInfo(resCount); +} else if (this.line.equals("@CRYSIN")) { +this.readCrystalInfo(); +}this.rd(); +} +this.nAtoms += this.ac; +if (this.isPDB) { +this.setIsPDB(); +this.setModelPDB(true); +}this.applySymmetryAndSetTrajectory(); +return true; +}); +Clazz.defineMethod(c$, "readAtoms", +function(ac){ +if (ac == 0) return; +var i0 = this.asc.ac; +for (var i = 0; i < ac; ++i) { +var atom = this.asc.addNewAtom(); +var tokens = JU.PT.getTokens(this.rd()); +var atomType = tokens[5]; +var name = tokens[1]; +var pt = atomType.indexOf("."); +if (pt >= 0) { +atom.elementSymbol = atomType.substring(0, pt); +} else { +atom.atomName = name; +atom.elementSymbol = atom.getElementSymbol(); +}atom.atomName = name + '\0' + atomType; +atom.set(this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3]), this.parseFloatStr(tokens[4])); +if (tokens.length > 6) { +atom.sequenceNumber = this.parseIntStr(tokens[6]); +if (atom.sequenceNumber < this.lastSequenceNumber) { +if (this.chainID == 90) this.chainID = 96; +this.chainID++; +}this.lastSequenceNumber = atom.sequenceNumber; +this.setChainID(atom, "" + String.fromCharCode(this.chainID)); +}if (tokens.length > 7) atom.group3 = tokens[7]; +if (tokens.length > 8) { +atom.partialCharge = this.parseFloatStr(tokens[8]); +if (atom.partialCharge == Clazz.floatToInt(atom.partialCharge)) atom.formalCharge = Clazz.floatToInt(atom.partialCharge); +}} +var atoms = this.asc.atoms; +var g3 = atoms[i0].group3; +if (g3 == null) return; +var isPDB = false; +if (!g3.equals("UNK") && !g3.startsWith("RES")) { +for (var i = this.asc.ac; --i >= i0; ) if (!g3.equals(atoms[this.asc.ac - 1].group3)) { +isPDB = true; +break; +} +if (isPDB) { +isPDB = false; +for (var i = this.asc.ac; --i >= i0; ) { +var pt = this.getPDBGroupLength(atoms[i].group3); +if (pt == 0 || pt > 3) break; +if (this.vwr.getJBR().isKnownPDBGroup(g3.substring(0, pt), 2147483647)) { +isPDB = this.isPDB = true; +break; +}} +}}for (var i = this.asc.ac; --i >= i0; ) { +if (isPDB) { +g3 = atoms[i].group3; +g3 = g3.substring(0, this.getPDBGroupLength(g3)); +atoms[i].isHetero = this.vwr.getJBR().isHetero(g3); +} else { +g3 = null; +}atoms[i].group3 = g3; +} +}, "~N"); +Clazz.defineMethod(c$, "getPDBGroupLength", +function(g3){ +var pt0 = g3.length; +var pt = pt0; +while (--pt > 0 && Character.isDigit(g3.charAt(pt))) { +} +return ++pt; +}, "~S"); +Clazz.defineMethod(c$, "readBonds", +function(bondCount){ +for (var i = 0; i < bondCount; ++i) { +var tokens = JU.PT.getTokens(this.rd()); +var atomIndex1 = this.parseIntStr(tokens[1]); +var atomIndex2 = this.parseIntStr(tokens[2]); +var order = this.parseIntStr(tokens[3]); +if (order == -2147483648) order = (tokens[3].equals("ar") ? 515 : tokens[3].equals("am") ? 1 : 17); +this.asc.addBond( new J.adapter.smarter.Bond(this.nAtoms + atomIndex1 - 1, this.nAtoms + atomIndex2 - 1, order)); +} +}, "~N"); +Clazz.defineMethod(c$, "readResInfo", +function(resCount){ +for (var i = 0; i < resCount; ++i) { +this.rd(); +} +}, "~N"); +Clazz.defineMethod(c$, "readCrystalInfo", +function(){ +this.rd(); +var tokens = this.getTokens(); +if (tokens.length < 6) return; +var name = ""; +for (var i = 6; i < tokens.length; i++) name += " " + tokens[i]; + +if (name === "") name = " P1"; + else name += " *"; +name = name.substring(1); +this.setSpaceGroupName(name); +if (this.ignoreFileUnitCell) return; +for (var i = 0; i < 6; i++) this.setUnitCellItem(i, this.parseFloatStr(tokens[i])); + +var atoms = this.asc.atoms; +for (var i = 0; i < this.ac; ++i) this.setAtomCoord(atoms[this.nAtoms + i]); + +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/TlsDataOnlyReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/TlsDataOnlyReader.js new file mode 100755 index 000000000000..2e789be7eae6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/more/TlsDataOnlyReader.js @@ -0,0 +1,84 @@ +Clazz.declarePackage("J.adapter.readers.more"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.more.TlsDataOnlyReader", ["java.util.Hashtable", "JU.Lst", "$.P3", "$.PT", "$.SB", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vTlsModels = null; +this.sbTlsErrors = null; +this.tlsGroupID = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.more, "TlsDataOnlyReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.readTlsData(); +this.continuing = false; +}); +Clazz.defineMethod(c$, "readTlsData", +function(){ +this.vTlsModels = new JU.Lst(); +var tlsGroups; +var tlsGroup = null; +var ranges = null; +var range = null; +tlsGroups = new JU.Lst(); +while (this.rd() != null) { +var tokens = JU.PT.getTokens(this.line.$replace('\'', ' ')); +if (tokens.length == 0) continue; +if (tokens[0].equals("TLS")) { +tlsGroup = new java.util.Hashtable(); +ranges = new JU.Lst(); +tlsGroup.put("ranges", ranges); +tlsGroups.addLast(tlsGroup); +tlsGroup.put("id", Integer.$valueOf(++this.tlsGroupID)); +} else if (tokens[0].equals("RANGE")) { +range = new java.util.Hashtable(); +var chain1 = tokens[1].charAt(0); +var chain2 = tokens[3].charAt(0); +var res1 = JU.PT.parseInt(tokens[2]); +var res2 = JU.PT.parseInt(tokens[4]); +if (chain1 == chain2) { +range.put("chains", "" + chain1 + chain2); +if (res1 <= res2) { +range.put("residues", Clazz.newIntArray(-1, [res1, res2])); +ranges.addLast(range); +} else { +this.tlsAddError(" TLS group residues are not in order (range ignored)"); +}} else { +this.tlsAddError(" TLS group chains are different (range ignored)"); +}} else if (tokens[0].equals("ORIGIN")) { +var origin = new JU.P3(); +tlsGroup.put("origin", origin); +origin.set(this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3])); +if (Float.isNaN(origin.x) || Float.isNaN(origin.y) || Float.isNaN(origin.z)) { +origin.set(NaN, NaN, NaN); +this.tlsAddError("invalid origin: " + this.line); +}} else if (tokens[0].equals("T") || tokens[0].equals("L") || tokens[0].equals("S")) { +var tensorType = tokens[0].charAt(0); +var nn = (tensorType == 'S' ? J.adapter.readers.more.TlsDataOnlyReader.Snn : J.adapter.readers.more.TlsDataOnlyReader.TLnn); +var tensor = Clazz.newFloatArray (3, 3, 0); +tlsGroup.put("t" + tensorType, tensor); +for (var i = 1; i < tokens.length; i++) { +var ti = (nn[i].charAt(0)).charCodeAt(0) - 49; +var tj = (nn[i].charAt(1)).charCodeAt(0) - 49; +tensor[ti][tj] = this.parseFloatStr(tokens[++i]); +if (ti < tj) tensor[tj][ti] = tensor[ti][tj]; +} +if (tensorType == 'S') tensor[0][0] = -tensor[0][0]; +for (var i = 0; i < 3; i++) for (var j = 0; j < 3; j++) if (Float.isNaN(tensor[i][j])) { +this.tlsAddError("invalid tensor: " + JU.Escape.escapeFloatAA(tensor, false)); +} + +}} +JU.Logger.info(this.tlsGroupID + " TLS groups read"); +var groups = new java.util.Hashtable(); +groups.put("groupCount", Integer.$valueOf(this.tlsGroupID)); +groups.put("groups", tlsGroups); +this.vTlsModels.addLast(groups); +this.htParams.put("vTlsModels", this.vTlsModels); +}); +Clazz.defineMethod(c$, "tlsAddError", +function(error){ +if (this.sbTlsErrors == null) this.sbTlsErrors = new JU.SB(); +this.sbTlsErrors.append(this.fileName).appendC('\t').append("TLS group ").appendI(this.tlsGroupID).appendC('\t').append(error).appendC('\n'); +}, "~S"); +c$.TLnn = Clazz.newArray(-1, ["11", "22", "33", "12", "13", "23"]); +c$.Snn = Clazz.newArray(-1, ["22", "11", "12", "13", "23", "21", "31", "32"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/JmolDataReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/JmolDataReader.js new file mode 100755 index 000000000000..23ec57e730d4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/JmolDataReader.js @@ -0,0 +1,84 @@ +Clazz.declarePackage("J.adapter.readers.pdb"); +Clazz.load(["J.adapter.readers.pdb.PdbReader"], "J.adapter.readers.pdb.JmolDataReader", ["java.util.Hashtable", "JU.P3", "JU.Logger", "$.Parser"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.props = null; +this.residueNames = null; +this.atomNames = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.pdb, "JmolDataReader", J.adapter.readers.pdb.PdbReader); +Clazz.overrideMethod(c$, "checkRemark", +function(){ +while (true) { +if (this.line.length < 30 || this.line.indexOf("Jmol") != 11) break; +switch ("Ppard".indexOf(this.line.substring(16, 17))) { +case 0: +this.props = new java.util.Hashtable(); +this.asc.setInfo("jmolData", this.line); +if (!this.line.endsWith("#noautobond")) this.line += "#noautobond"; +break; +case 1: +var pt1 = this.line.indexOf("["); +var pt2 = this.line.indexOf("]"); +if (pt1 < 25 || pt2 <= pt1) return; +var name = this.line.substring(25, pt1).trim(); +this.line = this.line.substring(pt1 + 1, pt2).$replace(',', ' '); +var tokens = this.getTokens(); +JU.Logger.info("reading " + name + " " + tokens.length); +var prop = Clazz.newFloatArray (tokens.length, 0); +for (var i = prop.length; --i >= 0; ) prop[i] = this.parseFloatStr(tokens[i]); + +this.props.put(name, prop); +break; +case 2: +this.line = this.line.substring(27); +this.atomNames = this.getTokens(); +JU.Logger.info("reading atom names " + this.atomNames.length); +break; +case 3: +this.line = this.line.substring(30); +this.residueNames = this.getTokens(); +JU.Logger.info("reading residue names " + this.residueNames.length); +break; +case 4: +JU.Logger.info(this.line); +var data = Clazz.newFloatArray (15, 0); +JU.Parser.parseStringInfestedFloatArray(this.line.substring(10).$replace('=', ' ').$replace('{', ' ').$replace('}', ' '), null, data); +var minXYZ = JU.P3.new3(data[0], data[1], data[2]); +var maxXYZ = JU.P3.new3(data[3], data[4], data[5]); +this.fileScaling = JU.P3.new3(data[6], data[7], data[8]); +this.fileOffset = JU.P3.new3(data[9], data[10], data[11]); +var plotScale = JU.P3.new3(data[12], data[13], data[14]); +if (plotScale.x <= 0) plotScale.x = 100; +if (plotScale.y <= 0) plotScale.y = 100; +if (plotScale.z <= 0) plotScale.z = 100; +if (this.fileScaling.y == 0) this.fileScaling.y = 1; +if (this.fileScaling.z == 0) this.fileScaling.z = 1; +this.setFractionalCoordinates(true); +this.latticeCells = Clazz.newIntArray (4, 0); +this.asc.xtalSymmetry = null; +this.setUnitCell(plotScale.x * 2 / (maxXYZ.x - minXYZ.x), plotScale.y * 2 / (maxXYZ.y - minXYZ.y), plotScale.z * 2 / (maxXYZ.z == minXYZ.z ? 1 : maxXYZ.z - minXYZ.z), 90, 90, 90); +this.unitCellOffset = JU.P3.newP(plotScale); +this.unitCellOffset.scale(-1); +this.getSymmetry(); +this.symmetry.toFractional(this.unitCellOffset, false); +this.unitCellOffset.scaleAdd2(-1.0, minXYZ, this.unitCellOffset); +this.symmetry.setOffsetPt(this.unitCellOffset); +this.asc.setInfo("jmolDataScaling", Clazz.newArray(-1, [minXYZ, maxXYZ, plotScale])); +this.doApplySymmetry = true; +break; +} +break; +} +this.checkCurrentLineForScript(); +}); +Clazz.overrideMethod(c$, "setAdditionalAtomParameters", +function(atom){ +if (this.residueNames != null && atom.index < this.residueNames.length) atom.group3 = this.residueNames[atom.index]; +if (this.atomNames != null && atom.index < this.atomNames.length) atom.atomName = this.atomNames[atom.index]; +}, "J.adapter.smarter.Atom"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.asc.setCurrentModelInfo("jmolDataProperties", this.props); +this.finalizeReaderPDB(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/P2nReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/P2nReader.js new file mode 100755 index 000000000000..f621e9138205 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/P2nReader.js @@ -0,0 +1,22 @@ +Clazz.declarePackage("J.adapter.readers.pdb"); +Clazz.load(["J.adapter.readers.pdb.PdbReader", "JU.Lst"], "J.adapter.readers.pdb.P2nReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.altNames = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.pdb, "P2nReader", J.adapter.readers.pdb.PdbReader); +Clazz.prepareFields (c$, function(){ +this.altNames = new JU.Lst(); +}); +Clazz.overrideMethod(c$, "setAdditionalAtomParameters", +function(atom){ +var altName = this.line.substring(69, 72).trim(); +if (altName.length == 0) altName = atom.atomName; +if (this.useAltNames) atom.atomName = altName; + else this.altNames.addLast(altName); +}, "J.adapter.smarter.Atom"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderPDB(); +if (!this.useAltNames) this.asc.setCurrentModelInfo("altName", this.altNames.toArray( new Array(this.altNames.size()))); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/PdbReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/PdbReader.js new file mode 100755 index 000000000000..abc08cbc98d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/PdbReader.js @@ -0,0 +1,1189 @@ +Clazz.declarePackage("J.adapter.readers.pdb"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "java.util.Hashtable"], "J.adapter.readers.pdb.PdbReader", ["JU.Lst", "$.M4", "$.P3", "$.PT", "$.SB", "J.adapter.smarter.Atom", "$.Structure", "J.api.JmolAdapter", "J.c.STR", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.serMode = 0; +this.seqMode = 0; +this.serial = 0; +this.lineLength = 0; +this.pdbHeader = null; +this.applySymmetry = false; +this.getTlsGroups = false; +this.isMultiModel = false; +this.haveMappedSerials = false; +this.isConnectStateBug = false; +this.isLegacyModelType = false; +this.gromacsWideFormat = false; +this.htFormul = null; +this.htHetero = null; +this.htSites = null; +this.htElementsInCurrentGroup = null; +this.htMolIds = null; +this.vCompnds = null; +this.vBiomolecules = null; +this.vTlsModels = null; +this.sbTlsErrors = null; +this.biomtChainAtomCounts = null; +this.sbIgnored = null; +this.sbSelected = null; +this.sbConect = null; +this.sb = null; +this.ac = 0; +this.maxSerial = 0; +this.nUNK = 0; +this.nRes = 0; +this.currentCompnd = null; +this.currentGroup3 = null; +this.currentKey = null; +this.currentResno = -2147483648; +this.configurationPtr = -2147483648; +this.resetKey = true; +this.$compnd = null; +this.conformationIndex = 0; +this.fileAtomIndex = 0; +this.lastAltLoc = '\0'; +this.lastGroup = -2147483648; +this.lastInsertion = '\0'; +this.lastSourceSerial = -2147483648; +this.lastTargetSerial = -2147483648; +this.tlsGroupID = 0; +this.atomTypePt0 = 0; +this.atomTypeLen = 0; +this.isCourseGrained = false; +this.isbiomol = false; +this.$cryst1 = 0; +this.fileSgName = null; +this.htGroup1 = null; +this.maxLength = 80; +this.pdbID = null; +this.haveDoubleBonds = false; +this.dataT = null; +this.tlsU = null; +this.vConnect = null; +this.connectNextAtomIndex = 0; +this.connectNextAtomSet = 0; +this.connectLast = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.pdb, "PdbReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.htFormul = new java.util.Hashtable(); +this.dataT = Clazz.newFloatArray (8, 0); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.allowPDBFilter = true; +this.pdbHeader = (this.getHeader ? new JU.SB() : null); +this.applySymmetry = !this.checkFilterKey("NOSYMMETRY"); +if (this.isDSSP1) this.asc.setInfo("isDSSP1", Boolean.TRUE); +this.getTlsGroups = this.checkFilterKey("TLS"); +if (this.checkFilterKey("ASSEMBLY")) this.filter = JU.PT.rep(this.filter, "ASSEMBLY", "BIOMOLECULE"); +this.isbiomol = this.checkFilterKey("BIOMOLECULE"); +if (this.isbiomol) this.filter = this.filter.$replace(':', ' '); +var byChain = this.isbiomol && this.checkFilterKey("BYCHAIN"); +var bySymop = this.isbiomol && this.checkFilterKey("BYSYMOP"); +this.isCourseGrained = byChain || bySymop; +if (!this.isCourseGrained) this.setIsPDB(); +this.isConcatenated = new Boolean (this.isConcatenated | this.filePath.endsWith(".dssr")).valueOf(); +if (this.htParams.containsKey("vTlsModels")) { +this.vTlsModels = this.htParams.remove("vTlsModels"); +}var s = this.getFilter("TYPE "); +if (s != null) { +var tokens = JU.PT.getTokens(s.$replace(',', ' ')); +this.atomTypePt0 = Integer.parseInt(tokens[0]) - 1; +var pt = tokens[1].indexOf("="); +if (pt >= 0) { +this.setFilterAtomTypeStr(tokens[1].substring(pt + 1).toUpperCase()); +} else { +pt = tokens[1].length; +}this.atomTypeLen = Integer.parseInt(tokens[1].substring(0, pt)); +}var conf = this.getFilter("CONF "); +if (conf != null) { +this.configurationPtr = this.parseIntStr(conf); +this.sbIgnored = new JU.SB(); +this.sbSelected = new JU.SB(); +}this.isLegacyModelType = (this.stateScriptVersionInt < 120000); +this.isConnectStateBug = (this.stateScriptVersionInt >= 120151 && this.stateScriptVersionInt <= 120220 || this.stateScriptVersionInt >= 120300 && this.stateScriptVersionInt <= 120320); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +var ptOption = ((this.lineLength = this.line.length) < 6 ? -1 : "ATOM HETATM MODEL CONECT HELIX SHEET TURN HET HETNAM ANISOU SITE CRYST1 SCALE1 SCALE2 SCALE3 EXPDTA FORMUL REMARK HEADER COMPND SOURCE TITLE SEQADV ".indexOf(this.line.substring(0, 6))) >> 3; +var isAtom = (ptOption == 0 || ptOption == 1); +var isModel = (ptOption == 2); +this.serial = (isAtom ? this.getSerial(6, 11) : 0); +var forceNewModel = ((this.isTrajectory || this.isSequential) && !this.isMultiModel && isAtom && this.serial == 1); +if (this.getHeader) { +if (isAtom || isModel) this.getHeader = false; + else this.readHeader(false); +}if (isModel || forceNewModel) { +this.isMultiModel = isModel; +this.getHeader = false; +var modelNo = (forceNewModel ? this.modelNumber + 1 : this.getModelNumber()); +var modelName = this.getModelName(); +this.modelNumber = (this.useFileModelNumbers ? modelNo : this.modelNumber + 1); +if (!this.doGetModel(this.modelNumber, null)) { +this.handleTlsMissingModels(); +var isOK = this.checkLastModel(); +if (!isOK && this.isConcatenated) isOK = this.continuing = true; +return isOK; +}if (!this.isCourseGrained) this.connectAll(this.maxSerial, this.isConnectStateBug); +if (this.ac > 0) this.applySymmetryAndSetTrajectory(); +this.model(modelNo, modelName); +if (this.isLegacyModelType || !isAtom) return true; +}if (this.isMultiModel && !this.doProcessLines) { +return true; +}if (isAtom) { +this.getHeader = false; +this.atom(); +return true; +}switch (ptOption) { +case 3: +this.conect(); +return true; +case 4: +case 5: +case 6: +if (!this.ignoreStructure) this.structure(); +return true; +case 7: +this.het(); +return true; +case 8: +this.hetnam(); +return true; +case 9: +this.anisou(); +return true; +case 10: +this.site(); +return true; +case 11: +this.cryst1(); +return true; +case 12: +case 13: +case 14: +this.scale(ptOption - 11); +return true; +case 15: +this.expdta(); +return true; +case 16: +this.formul(); +return true; +case 17: +if (this.line.startsWith("REMARK 285")) return this.remark285(); +if (this.line.startsWith("REMARK 350")) return this.remark350(); +if (this.line.startsWith("REMARK 290")) return this.remark290(); +if (this.line.contains("This file does not adhere to the PDB standard")) { +this.gromacsWideFormat = true; +}if (this.getTlsGroups) { +if (this.line.indexOf("TLS DETAILS") > 0) return this.remarkTls(); +}this.checkRemark(); +return true; +case 18: +this.header(); +return true; +case 19: +case 20: +this.compnd(ptOption == 20); +return true; +case 21: +this.title(); +return true; +case 22: +this.seqAdv(); +return true; +} +return true; +}); +Clazz.defineMethod(c$, "checkRemark", +function(){ +this.checkCurrentLineForScript(); +}); +Clazz.defineMethod(c$, "seqAdv", +function(){ +var g1 = this.line.substring(39, 42).trim().toLowerCase(); +if (g1.length != 1) return; +if (this.htGroup1 == null) this.asc.setInfo("htGroup1", this.htGroup1 = new java.util.Hashtable()); +var g3 = this.line.substring(12, 15).trim(); +this.htGroup1.put(g3, g1); +}); +Clazz.defineMethod(c$, "readHeader", +function(getLine){ +if (getLine) { +this.rd(); +if (!this.getHeader) return this.line; +}this.pdbHeader.append(this.line).appendC('\n'); +return this.line; +}, "~B"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderPDB(); +}); +Clazz.defineMethod(c$, "finalizeReaderPDB", +function(){ +this.checkNotPDB(); +if (this.pdbID != null && this.pdbID.length > 0) { +if (!this.isMultiModel) this.asc.setAtomSetName(this.pdbID); +this.asc.setCurrentModelInfo("pdbID", this.pdbID); +}this.checkUnitCellParams(); +if (!this.isCourseGrained) this.connectAll(this.maxSerial, this.isConnectStateBug); +var symmetry; +if (this.vBiomolecules != null && this.vBiomolecules.size() > 0 && this.asc.ac > 0) { +this.asc.setCurrentModelInfo("biomolecules", this.vBiomolecules); +this.setBiomoleculeAtomCounts(); +if (this.thisBiomolecule != null && this.applySymmetry) { +this.asc.getXSymmetry().applySymmetryBio(this.thisBiomolecule, this.applySymmetryToBonds, this.filter); +this.vTlsModels = null; +this.asc.xtalSymmetry = null; +}}if (this.vTlsModels != null) { +symmetry = this.asc.newFileSymmetry(); +var n = this.asc.atomSetCount; +if (n == this.vTlsModels.size()) { +for (var i = n; --i >= 0; ) this.setTlsGroups(i, i, symmetry); + +} else { +JU.Logger.info(n + " models but " + this.vTlsModels.size() + " TLS descriptions"); +if (this.vTlsModels.size() == 1) { +JU.Logger.info(" -- assuming all models have the same TLS description -- check REMARK 3 for details."); +for (var i = n; --i >= 0; ) this.setTlsGroups(0, i, symmetry); + +}}this.checkForResidualBFactors(symmetry); +}if (this.sbTlsErrors != null) { +this.asc.setInfo("tlsErrors", this.sbTlsErrors.toString()); +this.appendLoadNote(this.sbTlsErrors.toString()); +}this.doCheckUnitCell = new Boolean (this.doCheckUnitCell &(this.iHaveUnitCell && this.doApplySymmetry)).valueOf(); +if (this.doCheckUnitCell && this.isbiomol) { +this.ignoreFileSpaceGroupName = true; +this.sgName = this.fileSgName; +this.fractionalizeCoordinates(true); +this.asc.setModelInfoForSet("biosymmetry", null, this.asc.iSet); +this.checkNearAtoms = false; +}if (this.latticeCells != null && this.latticeCells[0] != 0) this.addJmolScript("unitcell;axes on;axes unitcell;"); +this.finalizeReaderASCR(); +if (this.vCompnds != null) { +this.asc.setInfo("compoundSource", this.vCompnds); +for (var i = this.asc.iSet + 1; --i >= 0; ) this.asc.setModelInfoForSet("compoundSource", this.vCompnds, i); + +}if (this.htSites != null) { +this.addSites(this.htSites); +}if (this.pdbHeader != null) this.asc.setInfo("fileHeader", this.pdbHeader.toString()); +if (this.configurationPtr > 0) { +JU.Logger.info(this.sbSelected.toString()); +JU.Logger.info(this.sbIgnored.toString()); +}}); +Clazz.defineMethod(c$, "checkUnitCellParams", +function(){ +if (this.isbiomol && (this.unitCellParams == null || Double.isNaN(this.unitCellParams[0]))) { +this.setUnitCell(1, 1, 1, 90, 90, 90); +this.addSpaceGroupName("P1"); +}if (this.iHaveUnitCell) { +this.asc.setCurrentModelInfo("unitCellParams", this.unitCellParams); +if (this.sgName != null) this.asc.setCurrentModelInfo("spaceGroup", this.sgName); +}}); +Clazz.defineMethod(c$, "checkForResidualBFactors", +function(symmetry){ +var atoms = this.asc.atoms; +var isResidual = false; +for (var i = this.asc.ac; --i >= 0; ) { +var anisou = this.tlsU.get(atoms[i]); +if (anisou == null) continue; +var resid = anisou[7] - (anisou[0] + anisou[1] + anisou[2]) / 3; +if (resid < 0 || Float.isNaN(resid)) { +isResidual = true; +break; +}} +JU.Logger.info("TLS analysis suggests Bfactors are " + (isResidual ? "" : "NOT") + " residuals"); +for (var entry, $entry = this.tlsU.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var anisou = entry.getValue(); +var resid = anisou[7]; +if (resid == 0) continue; +if (!isResidual) resid -= (anisou[0] + anisou[1] + anisou[2]) / 3; +anisou[0] += resid; +anisou[1] += resid; +anisou[2] += resid; +entry.getKey().addTensor(symmetry.getTensor(this.vwr, anisou).setType(null), "TLS-R", false); +JU.Logger.info("TLS-U: " + JU.Escape.eAF(anisou)); +anisou = (entry.getKey().anisoBorU); +if (anisou != null) JU.Logger.info("ANISOU: " + JU.Escape.eAF(anisou)); +} +this.tlsU = null; +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "header", +function(){ +if (this.lineLength < 8) return; +this.appendLoadNote(this.line.substring(7).trim()); +if (this.lineLength == 80) this.maxLength = 72; +this.pdbID = (this.lineLength >= 66 ? this.line.substring(62, 66).trim() : ""); +if (this.pdbID.length == 4) { +this.asc.setCollectionName(this.pdbID); +this.asc.setInfo("havePDBHeaderName", Boolean.TRUE); +}if (this.lineLength > 50) this.line = this.line.substring(0, 50); +this.asc.setInfo("CLASSIFICATION", this.line.substring(7).trim()); +}); +Clazz.defineMethod(c$, "title", +function(){ +if (this.lineLength > 10) this.appendLoadNote(this.line.substring(10, Math.min(this.maxLength, this.line.length)).trim()); +}); +Clazz.defineMethod(c$, "compnd", +function(isSource){ +if (!isSource) { +if (this.$compnd == null) this.$compnd = ""; + else this.$compnd += " "; +var s = this.line; +if (this.lineLength > 62) s = s.substring(0, 62); +this.$compnd += s.substring(10).trim(); +this.asc.setInfo("COMPND", this.$compnd); +}if (this.vCompnds == null) { +if (isSource) return; +this.vCompnds = new JU.Lst(); +this.htMolIds = new java.util.Hashtable(); +this.currentCompnd = new java.util.Hashtable(); +this.currentCompnd.put("select", "(*)"); +this.currentKey = "MOLECULE"; +this.htMolIds.put("", this.currentCompnd); +}if (isSource && this.resetKey) { +this.resetKey = false; +this.currentKey = "SOURCE"; +this.currentCompnd = this.htMolIds.get(""); +}this.line = this.line.substring(10, Math.min(this.lineLength, 72)).trim(); +var pt = this.line.indexOf(":"); +if (pt < 0 || pt > 0 && this.line.charAt(pt - 1) == '\\') pt = this.line.length; +var key = this.line.substring(0, pt).trim(); +var value = (pt < this.line.length ? this.line.substring(pt + 1).trim() : null); +if (key.equals("MOL_ID")) { +if (value == null) return; +if (isSource) { +this.currentCompnd = this.htMolIds.remove(value); +return; +}this.currentCompnd = new java.util.Hashtable(); +this.vCompnds.addLast(this.currentCompnd); +this.htMolIds.put(value, this.currentCompnd); +}if (this.currentCompnd == null) return; +if (value == null) { +value = this.currentCompnd.get(this.currentKey); +if (value == null) value = ""; +value += key; +if (this.vCompnds.size() == 0) this.vCompnds.addLast(this.currentCompnd); +} else { +this.currentKey = key; +}if (value.endsWith(";")) value = value.substring(0, value.length - 1); +this.currentCompnd.put(this.currentKey, value); +if (this.currentKey.equals("CHAIN")) this.currentCompnd.put("select", "(:" + JU.PT.rep(JU.PT.rep(value, ", ", ",:"), " ", "") + ")"); +}, "~B"); +Clazz.defineMethod(c$, "setBiomoleculeAtomCounts", +function(){ +for (var i = this.vBiomolecules.size(); --i >= 0; ) { +var biomolecule = this.vBiomolecules.get(i); +var biomts = biomolecule.get("biomts"); +var biomtchains = biomolecule.get("chains"); +var nTransforms = biomts.size(); +var nAtoms = 0; +for (var k = nTransforms; --k >= 0; ) { +var chains = biomtchains.get(k); +for (var j = chains.length - 1; --j >= 0; ) if (chains.charAt(j) == ':') nAtoms += this.biomtChainAtomCounts[0 + (chains.charAt(j + 1)).charCodeAt(0)]; + +} +biomolecule.put("atomCount", Integer.$valueOf(nAtoms)); +} +}); +Clazz.defineMethod(c$, "remark350", +function(){ +var biomts = null; +var biomtchains = null; +this.vBiomolecules = new JU.Lst(); +this.biomtChainAtomCounts = Clazz.newIntArray (255, 0); +var title = ""; +var chainlist = ""; +var id = ""; +var needLine = true; +var info = null; +var nBiomt = 0; +var mIdent = JU.M4.newM4(null); +while (true) { +if (needLine) this.readHeader(true); + else needLine = true; +if (this.line == null || !this.line.startsWith("REMARK 350")) break; +try { +if (this.line.startsWith("REMARK 350 BIOMOLECULE:")) { +if (nBiomt > 0) JU.Logger.info("biomolecule " + id + ": number of transforms: " + nBiomt); +info = new java.util.Hashtable(); +id = this.line.substring(this.line.indexOf(":") + 1).trim(); +title = this.line.trim(); +info.put("name", "biomolecule " + id); +info.put("molecule", id.length == 3 ? id : Integer.$valueOf(this.parseIntStr(id))); +info.put("title", title); +info.put("chains", biomtchains = new JU.Lst()); +info.put("biomts", biomts = new JU.Lst()); +this.vBiomolecules.addLast(info); +nBiomt = 0; +}if (this.line.indexOf("APPLY THE FOLLOWING TO CHAINS:") >= 0) { +if (info == null) { +needLine = false; +this.line = "REMARK 350 BIOMOLECULE: 1 APPLY THE FOLLOWING TO CHAINS:"; +continue; +}var list = this.line.substring(41).trim(); +this.appendLoadNote("found biomolecule " + id + ": " + list); +chainlist = ":" + list.$replace(',', ';').$replace(' ', ':'); +needLine = false; +while (this.readHeader(true) != null && this.line.indexOf("BIOMT") < 0 && this.line.indexOf("350") == 7) chainlist += ":" + this.line.substring(11).trim().$replace(',', ';').$replace(' ', ':'); + +chainlist += ";"; +if (this.checkFilterKey("BIOMOLECULE " + id + ";") || this.checkFilterKey("BIOMOLECULE=" + id + ";")) { +this.setFilter(this.filterCased + chainlist); +JU.Logger.info("filter set to \"" + this.filter + "\""); +this.thisBiomolecule = info; +this.haveMappedSerials = this.applySymmetry; +}continue; +}if (this.line.startsWith("REMARK 350 BIOMT1 ")) { +nBiomt++; +var mat = Clazz.newFloatArray (16, 0); +for (var i = 0; i < 12; ) { +var tokens = this.getTokens(); +mat[i++] = this.parseFloatStr(tokens[4]); +mat[i++] = this.parseFloatStr(tokens[5]); +mat[i++] = this.parseFloatStr(tokens[6]); +mat[i++] = this.parseFloatStr(tokens[7]); +if (i == 4 || i == 8) this.readHeader(true); +} +mat[15] = 1; +var m4 = new JU.M4(); +m4.setA(mat); +if (m4.equals(mIdent)) { +biomts.add(0, m4); +biomtchains.add(0, chainlist); +} else { +biomts.addLast(m4); +biomtchains.addLast(chainlist); +}continue; +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.thisBiomolecule = null; +this.vBiomolecules = null; +return false; +} else { +throw e; +} +} +} +if (nBiomt > 0) JU.Logger.info("biomolecule " + id + ": number of transforms: " + nBiomt); +return false; +}); +Clazz.defineMethod(c$, "remark285", +function(){ +return true; +}); +Clazz.defineMethod(c$, "remark290", +function(){ +while (this.readHeader(true) != null && this.line.startsWith("REMARK 290")) { +if (this.line.indexOf("NNNMMM OPERATOR") >= 0) { +while (this.readHeader(true) != null) { +var tokens = this.getTokens(); +if (tokens.length < 4) break; +if (this.doApplySymmetry || this.isbiomol) this.setSymmetryOperator(tokens[3]); +} +}} +return false; +}); +Clazz.defineMethod(c$, "getSerial", +function(i, j){ +var c = this.line.charAt(i); +var isBase10 = (c == ' ' || this.line.charAt(j - 1) == ' '); +switch (this.serMode) { +default: +case 0: +if (isBase10) return this.parseIntRange(this.line, i, j); +try { +return this.serial = Integer.parseInt(this.line.substring(i, j)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.serMode = (JU.PT.isDigit(c) ? 1 : 2); +return this.getSerial(i, j); +} else { +throw e; +} +} +case 2: +return (isBase10 || JU.PT.isDigit(c) ? this.parseIntRange(this.line, i, j) : JU.PT.parseIntRadix(this.line.substring(i, j), 36) + (JU.PT.isUpperCase(c) ? -16696160 : 26973856)); +case 1: +if (!isBase10) return this.serial = JU.PT.parseIntRadix(this.line.substring(i, j), 16); +this.serMode = 0; +return this.getSerial(i, j); +} +}, "~N,~N"); +Clazz.defineMethod(c$, "getSeqNo", +function(i, j){ +var c = this.line.charAt(i); +var isBase10 = (c == ' ' || this.line.charAt(j - 1) == ' '); +switch (this.seqMode) { +default: +case 0: +if (isBase10) return this.parseIntRange(this.line, i, j); +try { +return Integer.parseInt(this.line.substring(i, j)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.seqMode = (JU.PT.isDigit(c) ? 1 : 2); +return this.getSeqNo(i, j); +} else { +throw e; +} +} +case 2: +return (isBase10 || JU.PT.isDigit(c) ? this.parseIntRange(this.line, i, j) : JU.PT.parseIntRadix(this.line.substring(i, j), 36) + (JU.PT.isUpperCase(c) ? -456560 : 756496)); +case 1: +if (!isBase10) return JU.PT.parseIntRadix(this.line.substring(i, j), 16); +this.seqMode = 0; +return this.getSeqNo(i, j); +} +}, "~N,~N"); +Clazz.defineMethod(c$, "processAtom", +function(atom, name, altID, group3, chainID, seqNo, insCode, isHetero, sym){ +atom.atomName = name; +if (altID != ' ') atom.altLoc = altID; +atom.group3 = (group3 == null ? "UNK" : group3); +atom.chainID = chainID; +if (this.biomtChainAtomCounts != null) this.biomtChainAtomCounts[chainID % 256]++; +atom.sequenceNumber = seqNo; +atom.insertionCode = J.api.JmolAdapter.canonizeInsertionCode(insCode); +atom.isHetero = isHetero; +atom.elementSymbol = sym; +return atom; +}, "J.adapter.smarter.Atom,~S,~S,~S,~N,~N,~S,~B,~S"); +Clazz.defineMethod(c$, "processAtom2", +function(atom, serial, x, y, z, charge){ +atom.atomSerial = serial; +if (serial > this.maxSerial) this.maxSerial = serial; +if (atom.group3 == null) { +if (this.currentGroup3 != null) { +this.currentGroup3 = null; +this.currentResno = -2147483648; +this.htElementsInCurrentGroup = null; +}} else if (!atom.group3.equals(this.currentGroup3) || atom.sequenceNumber != this.currentResno) { +this.currentGroup3 = atom.group3; +this.currentResno = atom.sequenceNumber; +this.htElementsInCurrentGroup = this.htFormul.get(atom.group3); +this.nRes++; +if (atom.group3.equals("UNK")) this.nUNK++; +}this.setAtomCoordXYZ(atom, x, y, z); +atom.formalCharge = charge; +this.setAdditionalAtomParameters(atom); +if (this.haveMappedSerials) this.asc.addAtomWithMappedSerialNumber(atom); + else this.asc.addAtom(atom); +if (this.ac++ == 0 && !this.isCourseGrained) this.setModelPDB(true); +if (atom.isHetero) { +if (this.htHetero != null) { +this.asc.setCurrentModelInfo("hetNames", this.htHetero); +this.htHetero = null; +}}}, "J.adapter.smarter.Atom,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "atom", +function(){ +var isHetero = this.line.startsWith("HETATM"); +var atom = this.processAtom( new J.adapter.smarter.Atom(), this.line.substring(12, 16).trim(), this.line.charAt(16), this.parseTokenRange(this.line, 17, 20), this.vwr.getChainID(this.line.substring(21, 22), true), this.getSeqNo(22, 26), this.line.charAt(26), isHetero, this.deduceElementSymbol(isHetero)); +if (this.atomTypeLen > 0) { +var s = this.line.substring(this.atomTypePt0, this.atomTypePt0 + this.atomTypeLen).trim(); +if (s.length > 0) atom.atomName += "\0" + s; +}if (!this.filterPDBAtom(atom, this.fileAtomIndex++)) return; +var charge = 0; +var x; +var y; +var z; +if (this.gromacsWideFormat) { +x = this.parseFloatRange(this.line, 30, 40); +y = this.parseFloatRange(this.line, 40, 50); +z = this.parseFloatRange(this.line, 50, 60); +} else { +if (this.lineLength >= 80) { +var chMagnitude = this.line.charAt(78); +var chSign = this.line.charAt(79); +if (chSign >= '0' && chSign <= '7') { +var chT = chSign; +chSign = chMagnitude; +chMagnitude = chT; +}if ((chSign == '+' || chSign == '-' || chSign == ' ') && chMagnitude >= '0' && chMagnitude <= '7') { +charge = chMagnitude.charCodeAt(0) - 48; +if (chSign == '-') charge = -charge; +}}x = this.parseFloatRange(this.line, 30, 38); +y = this.parseFloatRange(this.line, 38, 46); +z = this.parseFloatRange(this.line, 46, 54); +}this.processAtom2(atom, this.serial, x, y, z, charge); +}); +Clazz.defineMethod(c$, "filterPDBAtom", +function(atom, iAtom){ +if (!this.filterAtom(atom, iAtom)) return false; +if (this.configurationPtr > 0) { +if (atom.sequenceNumber != this.lastGroup || atom.insertionCode != this.lastInsertion) { +this.conformationIndex = this.configurationPtr - 1; +this.lastGroup = atom.sequenceNumber; +this.lastInsertion = atom.insertionCode; +this.lastAltLoc = '\0'; +}if (atom.altLoc != '\0') { +var msg = " atom [" + atom.group3 + "]" + atom.sequenceNumber + (atom.insertionCode == '\0' ? "" : "^" + atom.insertionCode) + (atom.chainID == 0 ? "" : ":" + this.vwr.getChainIDStr(atom.chainID)) + "." + atom.atomName + "%" + atom.altLoc + "\n"; +if (this.conformationIndex >= 0 && atom.altLoc != this.lastAltLoc) { +this.lastAltLoc = atom.altLoc; +this.conformationIndex--; +}if (this.conformationIndex < 0 && atom.altLoc != this.lastAltLoc) { +this.sbIgnored.append("ignoring").append(msg); +return false; +}this.sbSelected.append("loading").append(msg); +}}return true; +}, "J.adapter.smarter.Atom,~N"); +Clazz.defineMethod(c$, "setAdditionalAtomParameters", +function(atom){ +var floatOccupancy; +if (this.gromacsWideFormat) { +floatOccupancy = this.parseFloatRange(this.line, 60, 68); +atom.bfactor = J.adapter.readers.pdb.PdbReader.fixRadius(this.parseFloatRange(this.line, 68, 76)); +} else { +floatOccupancy = this.parseFloatRange(this.line, 54, 60); +atom.bfactor = this.parseFloatRange(this.line, 60, 66); +}atom.foccupancy = (Float.isNaN(floatOccupancy) ? 1 : floatOccupancy); +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "deduceElementSymbol", +function(isHetero){ +if (this.lineLength >= 78) { +var ch76 = this.line.charAt(76); +var ch77 = this.line.charAt(77); +if (ch76 == ' ' && J.adapter.smarter.Atom.isValidSym1(ch77)) return "" + ch77; +if (J.adapter.smarter.Atom.isValidSymNoCase(ch76, ch77)) return "" + ch76 + ch77; +}var ch12 = this.line.charAt(12); +var ch13 = this.line.charAt(13); +if ((this.htElementsInCurrentGroup == null || this.htElementsInCurrentGroup.get(this.line.substring(12, 14)) != null) && J.adapter.smarter.Atom.isValidSymNoCase(ch12, ch13)) return (isHetero || ch12 != 'H' ? "" + ch12 + ch13 : "H"); +if (ch12 == 'H') return "H"; +if ((this.htElementsInCurrentGroup == null || this.htElementsInCurrentGroup.get("" + ch13) != null) && J.adapter.smarter.Atom.isValidSym1(ch13)) return "" + ch13; +if (ch12 != ' ' && (this.htElementsInCurrentGroup == null || this.htElementsInCurrentGroup.get("" + ch12) != null) && J.adapter.smarter.Atom.isValidSym1(ch12)) return "" + ch12; +var ch14 = this.line.charAt(14); +if (ch12 == ' ' && ch13 != 'X' && (this.htElementsInCurrentGroup == null || this.htElementsInCurrentGroup.get(this.line.substring(13, 15)) != null) && J.adapter.smarter.Atom.isValidSymNoCase(ch13, ch14)) return "" + ch13 + ch14; +return "Xx"; +}, "~B"); +Clazz.defineMethod(c$, "conect", +function(){ +if (this.sbConect == null) { +this.sbConect = new JU.SB(); +this.sb = new JU.SB(); +} else { +this.sb.setLength(0); +}var sourceSerial = this.getSerial(6, 11); +if (sourceSerial < 0) return; +var order = 1; +var pt1 = this.line.trim().length; +if (pt1 > 56) pt1 = this.line.substring(0, 56).trim().length; +for (var pt = 11; pt < pt1; pt += 5) { +switch (pt) { +case 31: +order = 2048; +break; +case 41: +continue; +} +var targetSerial = this.getSerial(pt, pt + 5); +if (targetSerial < 0) continue; +var isDoubleBond = (sourceSerial == this.lastSourceSerial && targetSerial == this.lastTargetSerial); +if (isDoubleBond) this.haveDoubleBonds = true; +this.lastSourceSerial = sourceSerial; +this.lastTargetSerial = targetSerial; +var isSwapped = (targetSerial < sourceSerial); +var i1; +if (isSwapped) { +i1 = targetSerial; +targetSerial = sourceSerial; +} else { +i1 = sourceSerial; +}var st = ";" + i1 + " " + targetSerial + ";"; +if (this.sbConect.indexOf(st) >= 0 && !isDoubleBond) continue; +if (this.haveDoubleBonds) { +var st1 = "--" + st; +if (this.sbConect.indexOf(st1) >= 0) continue; +this.sb.append(st1); +}this.sbConect.append(st); +this.addConnection( Clazz.newIntArray(-1, [i1, targetSerial, order])); +} +this.sbConect.appendSB(this.sb); +}); +Clazz.defineMethod(c$, "structure", +function(){ +var structureType = J.c.STR.NONE; +var substructureType = J.c.STR.NONE; +var startChainIDIndex; +var startIndex; +var endChainIDIndex; +var endIndex; +var strandCount = 0; +if (this.line.startsWith("HELIX ")) { +structureType = J.c.STR.HELIX; +startChainIDIndex = 19; +startIndex = 21; +endChainIDIndex = 31; +endIndex = 33; +if (this.line.length >= 40) substructureType = J.adapter.smarter.Structure.getHelixType(this.parseIntRange(this.line, 38, 40)); +} else if (this.line.startsWith("SHEET ")) { +structureType = J.c.STR.SHEET; +startChainIDIndex = 21; +startIndex = 22; +endChainIDIndex = 32; +endIndex = 33; +strandCount = this.parseIntRange(this.line, 14, 16); +} else if (this.line.startsWith("TURN ")) { +structureType = J.c.STR.TURN; +startChainIDIndex = 19; +startIndex = 20; +endChainIDIndex = 30; +endIndex = 31; +} else return; +if (this.lineLength < endIndex + 4) return; +var structureID = this.line.substring(11, 15).trim(); +var serialID = this.line.substring(7, 10).trim(); +var startChainID = this.vwr.getChainID(this.line.substring(startChainIDIndex, startChainIDIndex + 1), true); +var startSequenceNumber = this.parseIntRange(this.line, startIndex, startIndex + 4); +var startInsertionCode = this.line.charAt(startIndex + 4); +var endChainID = this.vwr.getChainID(this.line.substring(endChainIDIndex, endChainIDIndex + 1), true); +var endSequenceNumber = this.parseIntRange(this.line, endIndex, endIndex + 4); +var endInsertionCode = ' '; +if (this.lineLength > endIndex + 4) endInsertionCode = this.line.charAt(endIndex + 4); +if (substructureType === J.c.STR.NONE) substructureType = structureType; +var structure = new J.adapter.smarter.Structure(-1, structureType, substructureType, structureID, serialID, strandCount, null); +structure.set(startChainID, startSequenceNumber, startInsertionCode, endChainID, endSequenceNumber, endInsertionCode, 0, 0); +this.asc.addStructure(structure); +}); +Clazz.defineMethod(c$, "getModelNumber", +function(){ +var startModelColumn = 6; +var endModelColumn = 14; +if (endModelColumn > this.lineLength) endModelColumn = this.lineLength; +var iModel = this.parseIntRange(this.line, startModelColumn, endModelColumn); +return (iModel == -2147483648 ? 0 : iModel); +}); +Clazz.defineMethod(c$, "getModelName", +function(){ +if (this.lineLength < 16) return null; +if (this.line.startsWith("ATOM")) return ""; +var name = this.line.substring(15, this.lineLength).trim(); +return (name.length == 0 ? null : name); +}); +Clazz.defineMethod(c$, "model", +function(modelNumber, name){ +this.checkNotPDB(); +if (name == null) name = this.pdbID; +this.haveMappedSerials = (this.thisBiomolecule != null && this.applySymmetry); +this.sbConect = null; +this.asc.newAtomSet(); +this.asc.setCurrentModelInfo("pdbID", this.pdbID); +if (this.asc.iSet == 0 || this.isTrajectory) this.asc.setAtomSetName(this.pdbID); +this.asc.setCurrentModelInfo("name", name); +this.checkUnitCellParams(); +if (!this.isCourseGrained) this.setModelPDB(true); +this.asc.setCurrentAtomSetNumber(modelNumber); +if (this.isCourseGrained) this.asc.setCurrentModelInfo("courseGrained", Boolean.TRUE); +}, "~N,~S"); +Clazz.defineMethod(c$, "checkNotPDB", +function(){ +var isPDB = (!this.isCourseGrained && (this.nRes == 0 || this.nUNK != this.nRes)); +this.checkNearAtoms = !isPDB; +this.setModelPDB(isPDB); +this.nUNK = this.nRes = 0; +this.currentGroup3 = null; +}); +Clazz.defineMethod(c$, "cryst1", +function(){ +var a = this.$cryst1 = this.getFloat(6, 9); +if (a == 1) a = NaN; +this.setUnitCell(a, this.getFloat(15, 9), this.getFloat(24, 9), this.getFloat(33, 7), this.getFloat(40, 7), this.getFloat(47, 7)); +this.addSpaceGroupName(JU.PT.parseTrimmedRange(this.line, 55, 66)); +}); +Clazz.defineMethod(c$, "addSpaceGroupName", +function(name){ +if (this.isbiomol) this.doConvertToFractional = false; +if (this.sgName == null || this.sgName.equals("unspecified!")) this.setSpaceGroupName(name); +this.fileSgName = this.sgName; +}, "~S"); +Clazz.defineMethod(c$, "getFloat", +function(ich, cch){ +return this.parseFloatRange(this.line, ich, ich + cch); +}, "~N,~N"); +Clazz.defineMethod(c$, "scale", +function(n){ +if (this.unitCellParams == null) return; +var pt = n * 4 + 2; +this.unitCellParams[0] = this.$cryst1; +this.setUnitCellItem(pt++, this.getFloat(10, 10)); +this.setUnitCellItem(pt++, this.getFloat(20, 10)); +this.setUnitCellItem(pt++, this.getFloat(30, 10)); +this.setUnitCellItem(pt++, this.getFloat(45, 10)); +if (this.isbiomol) this.doConvertToFractional = false; +}, "~N"); +Clazz.defineMethod(c$, "expdta", +function(){ +if (this.line.toUpperCase().indexOf("NMR") >= 0) this.asc.setInfo("isNMRdata", "true"); +}); +Clazz.defineMethod(c$, "formul", +function(){ +var groupName = this.parseTokenRange(this.line, 12, 15); +var formula = JU.PT.parseTrimmedRange(this.line, 19, 70); +var ichLeftParen = formula.indexOf('('); +if (ichLeftParen >= 0) { +var ichRightParen = formula.indexOf(')'); +if (ichRightParen < 0 || ichLeftParen >= ichRightParen || ichLeftParen + 1 == ichRightParen) return; +formula = JU.PT.parseTrimmedRange(formula, ichLeftParen + 1, ichRightParen); +}var htElementsInGroup = this.htFormul.get(groupName); +if (htElementsInGroup == null) this.htFormul.put(groupName, htElementsInGroup = new java.util.Hashtable()); +this.next[0] = 0; +var elementWithCount; +while ((elementWithCount = this.parseTokenNext(formula)) != null) { +if (elementWithCount.length < 2) continue; +var chFirst = elementWithCount.charAt(0); +var chSecond = elementWithCount.charAt(1); +if (J.adapter.smarter.Atom.isValidSymNoCase(chFirst, chSecond)) htElementsInGroup.put("" + chFirst + chSecond, Boolean.TRUE); + else if (J.adapter.smarter.Atom.isValidSym1(chFirst)) htElementsInGroup.put("" + chFirst, Boolean.TRUE); +} +}); +Clazz.defineMethod(c$, "het", +function(){ +if (this.line.length < 30) { +return; +}if (this.htHetero == null) { +this.htHetero = new java.util.Hashtable(); +}var groupName = this.parseTokenRange(this.line, 7, 10); +if (this.htHetero.containsKey(groupName)) { +return; +}var hetName = JU.PT.parseTrimmedRange(this.line, 30, 70); +this.htHetero.put(groupName, hetName); +}); +Clazz.defineMethod(c$, "hetnam", +function(){ +if (this.htHetero == null) { +this.htHetero = new java.util.Hashtable(); +}var groupName = this.parseTokenRange(this.line, 11, 14); +var hetName = JU.PT.parseTrimmedRange(this.line, 15, 70); +if (groupName == null) { +JU.Logger.error("ERROR: HETNAM record does not contain a group name: " + this.line); +return; +}var htName = this.htHetero.get(groupName); +if (htName != null) { +hetName = htName + hetName; +}this.htHetero.put(groupName, hetName); +this.appendLoadNote(groupName + " = " + hetName); +}); +Clazz.defineMethod(c$, "anisou", +function(){ +var data = Clazz.newFloatArray (8, 0); +data[6] = 1; +var serial = this.line.substring(6, 11).trim(); +if (!this.haveMappedSerials && this.asc.ac > 0) { +for (var i = this.asc.getAtomSetAtomIndex(this.asc.iSet); i < this.asc.ac; i++) { +var atomSerial = this.asc.atoms[i].atomSerial; +if (atomSerial != -2147483648) this.asc.atomSymbolicMap.put("" + atomSerial, this.asc.atoms[i]); +} +this.haveMappedSerials = true; +}var atom = this.asc.getAtomFromName(serial); +if (atom == null) { +return; +}for (var i = 28, pt = 0; i < 70; i += 7, pt++) data[pt] = this.parseFloatRange(this.line, i, i + 7); + +for (var i = 0; i < 6; i++) { +if (Float.isNaN(data[i])) { +JU.Logger.error("Bad ANISOU record: " + this.line); +return; +}data[i] /= 10000; +} +this.asc.setAnisoBorU(atom, data, 12); +}); +Clazz.defineMethod(c$, "site", +function(){ +if (this.htSites == null) { +this.htSites = new java.util.Hashtable(); +}var nResidues = this.parseIntRange(this.line, 15, 17); +var siteID = JU.PT.parseTrimmedRange(this.line, 11, 14); +var htSite = this.htSites.get(siteID); +if (htSite == null) { +htSite = new java.util.Hashtable(); +htSite.put("nResidues", Integer.$valueOf(nResidues)); +htSite.put("groups", ""); +this.htSites.put(siteID, htSite); +}var groups = htSite.get("groups"); +for (var i = 0; i < 4; i++) { +var pt = 18 + i * 11; +var resName = JU.PT.parseTrimmedRange(this.line, pt, pt + 3); +if (resName.length == 0) break; +var chainID = JU.PT.parseTrimmedRange(this.line, pt + 4, pt + 5); +var seq = JU.PT.parseTrimmedRange(this.line, pt + 5, pt + 9); +var iCode = JU.PT.parseTrimmedRange(this.line, pt + 9, pt + 10); +groups += (groups.length == 0 ? "" : ",") + "[" + resName + "]" + seq; +if (iCode.length > 0) groups += "^" + iCode; +if (chainID.length > 0) groups += ":" + chainID; +htSite.put("groups", groups); +} +}); +Clazz.defineMethod(c$, "remarkTls", +function(){ +var nGroups = 0; +var iGroup = 0; +var components = null; +var tlsGroups = null; +var tlsGroup = null; +var ranges = null; +var range = null; +var remark = this.line.substring(0, 11); +while (this.readHeader(true) != null && this.line.startsWith(remark)) { +try { +var tokens = JU.PT.getTokens(this.line.substring(10).$replace(':', ' ')); +if (tokens.length < 2) continue; +JU.Logger.info(this.line); +if (tokens[1].equalsIgnoreCase("GROUP")) { +tlsGroup = new java.util.Hashtable(); +ranges = new JU.Lst(); +tlsGroup.put("ranges", ranges); +tlsGroups.addLast(tlsGroup); +this.tlsGroupID = this.parseIntStr(tokens[tokens.length - 1]); +tlsGroup.put("id", Integer.$valueOf(this.tlsGroupID)); +} else if (tokens[0].equalsIgnoreCase("NUMBER")) { +if (tokens[2].equalsIgnoreCase("COMPONENTS")) { +} else { +nGroups = this.parseIntStr(tokens[tokens.length - 1]); +if (nGroups < 1) break; +if (this.vTlsModels == null) this.vTlsModels = new JU.Lst(); +tlsGroups = new JU.Lst(); +this.appendLoadNote(this.line.substring(11).trim()); +}} else if (tokens[0].equalsIgnoreCase("COMPONENTS")) { +components = this.line; +} else if (tokens[0].equalsIgnoreCase("RESIDUE")) { +range = new java.util.Hashtable(); +var chain1; +var chain2; +var res1; +var res2; +if (tokens.length == 6) { +chain1 = tokens[2].charAt(0); +chain2 = tokens[4].charAt(0); +res1 = this.parseIntStr(tokens[3]); +res2 = this.parseIntStr(tokens[5]); +} else { +var toC = components.indexOf(" C "); +var fromC = components.indexOf(" C ", toC + 4); +chain1 = this.line.charAt(fromC); +chain2 = this.line.charAt(toC); +res1 = this.parseIntRange(this.line, fromC + 1, toC); +res2 = this.parseIntStr(this.line.substring(toC + 1)); +}if (chain1 == chain2) { +range.put("chains", "" + chain1 + chain2); +if (res1 <= res2) { +range.put("residues", Clazz.newIntArray(-1, [res1, res2])); +ranges.addLast(range); +} else { +this.tlsAddError(" TLS group residues are not in order (range ignored)"); +}} else { +this.tlsAddError(" TLS group chains are different (range ignored)"); +}} else if (tokens[0].equalsIgnoreCase("SELECTION")) { +var chain = '\u0000'; +for (var i = 1; i < tokens.length; i++) { +if (tokens[i].toUpperCase().indexOf("CHAIN") >= 0) { +chain = tokens[++i].charAt(0); +continue; +}var resno = this.parseIntStr(tokens[i]); +if (resno == -2147483648) continue; +range = new java.util.Hashtable(); +range.put("residues", Clazz.newIntArray(-1, [resno, this.parseIntStr(tokens[++i])])); +if (chain != '\0') range.put("chains", "" + chain + chain); +ranges.addLast(range); +} +} else if (tokens[0].equalsIgnoreCase("ORIGIN")) { +var origin = new JU.P3(); +tlsGroup.put("origin", origin); +if (tokens.length == 8) { +origin.set(this.parseFloatStr(tokens[5]), this.parseFloatStr(tokens[6]), this.parseFloatStr(tokens[7])); +} else { +var n = this.line.length; +origin.set(this.parseFloatRange(this.line, n - 27, n - 18), this.parseFloatRange(this.line, n - 18, n - 9), this.parseFloatRange(this.line, n - 9, n)); +}if (Float.isNaN(origin.x) || Float.isNaN(origin.y) || Float.isNaN(origin.z)) { +origin.set(NaN, NaN, NaN); +this.tlsAddError("invalid origin: " + this.line); +}} else if (tokens[1].equalsIgnoreCase("TENSOR")) { +var tensorType = tokens[0].charAt(0); +var s = (this.readHeader(true).substring(10) + this.readHeader(true).substring(10) + this.readHeader(true).substring(10)).$replace(tensorType, ' ').$replace(':', ' '); +tokens = JU.PT.getTokens(s); +var data = Clazz.newFloatArray (3, 3, 0); +tlsGroup.put("t" + tensorType, data); +for (var i = 0; i < tokens.length; i++) { +var ti = (tokens[i].charAt(0)).charCodeAt(0) - 49; +var tj = (tokens[i].charAt(1)).charCodeAt(0) - 49; +data[ti][tj] = this.parseFloatStr(tokens[++i]); +if (ti < tj) data[tj][ti] = data[ti][tj]; +} +for (var i = 0; i < 3; i++) for (var j = 0; j < 3; j++) if (Float.isNaN(data[i][j])) this.tlsAddError("invalid tensor: " + JU.Escape.escapeFloatAA(data, false)); + + +if (tensorType == 'S' && ++iGroup == nGroups) { +JU.Logger.info(nGroups + " TLS groups read"); +this.readHeader(true); +break; +}}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error(this.line + "\nError in TLS parser: "); +System.out.println(e.getMessage()); +tlsGroups = null; +break; +} else { +throw e; +} +} +} +if (tlsGroups != null) { +var tlsModel = new java.util.Hashtable(); +tlsModel.put("groupCount", Integer.$valueOf(nGroups)); +tlsModel.put("groups", tlsGroups); +this.vTlsModels.addLast(tlsModel); +}return (nGroups < 1); +}); +Clazz.defineMethod(c$, "handleTlsMissingModels", +function(){ +this.vTlsModels = null; +}); +Clazz.defineMethod(c$, "setTlsGroups", +function(iGroup, iModel, symmetry){ +JU.Logger.info("TLS model " + (iModel + 1) + " set " + (iGroup + 1)); +var tlsGroupInfo = this.vTlsModels.get(iGroup); +var groups = tlsGroupInfo.get("groups"); +var index0 = this.asc.getAtomSetAtomIndex(iModel); +var data = Clazz.newFloatArray (this.asc.getAtomSetAtomCount(iModel), 0); +var indexMax = index0 + data.length; +var atoms = this.asc.atoms; +var nGroups = groups.size(); +for (var i = 0; i < nGroups; i++) { +var group = groups.get(i); +var ranges = group.get("ranges"); +this.tlsGroupID = (group.get("id")).intValue(); +for (var j = ranges.size(); --j >= 0; ) { +var chains = ranges.get(j).get("chains"); +var residues = ranges.get(j).get("residues"); +var chain0 = 0 + (chains.charAt(0)).charCodeAt(0); +var chain1 = 0 + (chains.charAt(1)).charCodeAt(0); +var res0 = residues[0]; +var res1 = residues[1]; +var index1 = this.findAtomForRange(index0, indexMax, chain0, res0, false); +var index2 = (index1 >= 0 ? this.findAtomForRange(index1, indexMax, chain1, res1, false) : -1); +if (index2 < 0) { +JU.Logger.info("TLS processing terminated"); +return; +}JU.Logger.info("TLS ID=" + this.tlsGroupID + " model atom index range " + index1 + "-" + index2); +var isSameChain = (chain0 == chain1); +for (var iAtom = index0; iAtom < indexMax; iAtom++) { +var atom = atoms[iAtom]; +if (isSameChain ? atom.sequenceNumber >= res0 && atom.sequenceNumber <= res1 : atom.chainID > chain0 && atom.chainID < chain1 || atom.chainID == chain0 && atom.sequenceNumber >= res0 || atom.chainID == chain1 && atom.sequenceNumber <= res1) { +data[iAtom - index0] = this.tlsGroupID; +this.setTlsTensor(atom, group, symmetry); +}} +} +} +this.asc.setAtomProperties("tlsGroup", data, iModel, true); +this.asc.setModelInfoForSet("TLS", tlsGroupInfo, iModel); +this.asc.setTensors(); +}, "~N,~N,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "findAtomForRange", +function(atom1, atom2, chain, resno, isLast){ +var iAtom = this.findAtom(atom1, atom2, chain, resno, true); +return (isLast && iAtom >= 0 ? this.findAtom(iAtom, atom2, chain, resno, false) : iAtom); +}, "~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "findAtom", +function(atom1, atom2, chain, resno, isTrue){ +var atoms = this.asc.atoms; +for (var i = atom1; i < atom2; i++) { +var atom = atoms[i]; +if ((atom.chainID == chain && atom.sequenceNumber == resno) == isTrue) return i; +} +if (isTrue) { +JU.Logger.warn("PdbReader findAtom chain=" + chain + " resno=" + resno + " not found"); +this.tlsAddError("atom not found: chain=" + chain + " resno=" + resno); +}return (isTrue ? -1 : atom2); +}, "~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "setTlsTensor", +function(atom, group, symmetry){ +var origin = group.get("origin"); +if (Float.isNaN(origin.x)) return; +var T = group.get("tT"); +var L = group.get("tL"); +var S = group.get("tS"); +if (T == null || L == null || S == null) return; +var x = ((atom.x - origin.x) * 0.017453292519943295); +var y = ((atom.y - origin.y) * 0.017453292519943295); +var z = ((atom.z - origin.z) * 0.017453292519943295); +var xx = x * x; +var yy = y * y; +var zz = z * z; +var xy = x * y; +var xz = x * z; +var yz = y * z; +this.dataT[0] = T[0][0]; +this.dataT[1] = T[1][1]; +this.dataT[2] = T[2][2]; +this.dataT[3] = T[0][1]; +this.dataT[4] = T[0][2]; +this.dataT[5] = T[1][2]; +this.dataT[6] = 12; +var anisou = Clazz.newFloatArray (8, 0); +var bresidual = (Float.isNaN(atom.bfactor) ? 0 : (atom.bfactor / 78.95683520871486)); +anisou[0] = this.dataT[0] + L[1][1] * zz + L[2][2] * yy - 2 * L[1][2] * yz + 2 * S[1][0] * z - 2 * S[2][0] * y; +anisou[1] = this.dataT[1] + L[0][0] * zz + L[2][2] * xx - 2 * L[2][0] * xz - 2 * S[0][1] * z + 2 * S[2][1] * x; +anisou[2] = this.dataT[2] + L[0][0] * yy + L[1][1] * xx - 2 * L[0][1] * xy - 2 * S[1][2] * x + 2 * S[0][2] * y; +anisou[3] = this.dataT[3] - L[2][2] * xy + L[1][2] * xz + L[2][0] * yz - L[0][1] * zz - S[0][0] * z + S[1][1] * z + S[2][0] * x - S[2][1] * y; +anisou[4] = this.dataT[4] - L[1][1] * xz + L[1][2] * xy - L[2][0] * yy + L[0][1] * yz + S[0][0] * y - S[2][2] * y + S[1][2] * z - S[1][0] * x; +anisou[5] = this.dataT[5] - L[0][0] * yz - L[1][2] * xx + L[2][0] * xy + L[0][1] * xz - S[1][1] * x + S[2][2] * x + S[0][1] * y - S[0][2] * z; +anisou[6] = 12; +anisou[7] = bresidual; +if (this.tlsU == null) this.tlsU = new java.util.Hashtable(); +this.tlsU.put(atom, anisou); +atom.addTensor(symmetry.getTensor(this.vwr, this.dataT).setType(null), "TLS-U", false); +}, "J.adapter.smarter.Atom,java.util.Map,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "tlsAddError", +function(error){ +if (this.sbTlsErrors == null) this.sbTlsErrors = new JU.SB(); +this.sbTlsErrors.append(this.fileName).appendC('\t').append("TLS group ").appendI(this.tlsGroupID).appendC('\t').append(error).appendC('\n'); +}, "~S"); +c$.fixRadius = Clazz.defineMethod(c$, "fixRadius", +function(r){ +return (r < 0.9 ? 1 : r); +}, "~N"); +Clazz.defineMethod(c$, "addConnection", +function(is){ +if (this.vConnect == null) { +this.connectLast = null; +this.vConnect = new JU.Lst(); +}if (this.connectLast != null) { +if (is[0] == this.connectLast[0] && is[1] == this.connectLast[1] && is[2] != 2048) { +this.connectLast[2]++; +return; +}}this.vConnect.addLast(this.connectLast = is); +}, "~A"); +Clazz.defineMethod(c$, "connectAllBad", +function(maxSerial){ +var firstAtom = this.connectNextAtomIndex; +for (var i = this.connectNextAtomSet; i < this.asc.atomSetCount; i++) { +var count = this.asc.getAtomSetAtomCount(i); +this.asc.setModelInfoForSet("PDB_CONECT_firstAtom_count_max", Clazz.newIntArray(-1, [firstAtom, count, maxSerial]), i); +if (this.vConnect != null) { +this.asc.setModelInfoForSet("PDB_CONECT_bonds", this.vConnect, i); +this.asc.setGlobalBoolean(3); +}firstAtom += count; +} +this.vConnect = null; +this.connectNextAtomSet = this.asc.iSet + 1; +this.connectNextAtomIndex = firstAtom; +}, "~N"); +Clazz.defineMethod(c$, "connectAll", +function(maxSerial, isConnectStateBug){ +var a = this.asc; +var index = a.iSet; +if (index < 0) return; +if (isConnectStateBug) { +this.connectAllBad(maxSerial); +return; +}a.setCurrentModelInfo("PDB_CONECT_firstAtom_count_max", Clazz.newIntArray(-1, [a.getAtomSetAtomIndex(index), a.getAtomSetAtomCount(index), maxSerial])); +if (this.vConnect == null) return; +var firstAtom = this.connectNextAtomIndex; +for (var i = a.atomSetCount; --i >= this.connectNextAtomSet; ) { +a.setModelInfoForSet("PDB_CONECT_bonds", this.vConnect, i); +a.setGlobalBoolean(3); +firstAtom += a.getAtomSetAtomCount(i); +} +this.vConnect = null; +this.connectNextAtomSet = index + 1; +this.connectNextAtomIndex = firstAtom; +}, "~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/PqrReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/PqrReader.js new file mode 100755 index 000000000000..6c5c86ae78f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pdb/PqrReader.js @@ -0,0 +1,16 @@ +Clazz.declarePackage("J.adapter.readers.pdb"); +Clazz.load(["J.adapter.readers.pdb.PdbReader"], "J.adapter.readers.pdb.PqrReader", null, function(){ +var c$ = Clazz.declareType(J.adapter.readers.pdb, "PqrReader", J.adapter.readers.pdb.PdbReader); +Clazz.overrideMethod(c$, "setAdditionalAtomParameters", +function(atom){ +if (this.gromacsWideFormat) { +atom.partialCharge = this.parseFloatRange(this.line, 60, 68); +atom.radius = J.adapter.readers.pdb.PdbReader.fixRadius(this.parseFloatRange(this.line, 68, 76)); +} else { +var tokens = this.getTokens(); +var pt = tokens.length - 2 - (this.line.length > 75 ? 1 : 0); +atom.partialCharge = this.parseFloatStr(tokens[pt++]); +atom.radius = J.adapter.readers.pdb.PdbReader.fixRadius(this.parseFloatStr(tokens[pt])); +}}, "J.adapter.smarter.Atom"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/JmolObject.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/JmolObject.js new file mode 100755 index 000000000000..027253aec5d5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/JmolObject.js @@ -0,0 +1,259 @@ +Clazz.declarePackage("J.adapter.readers.pymol"); +Clazz.load(null, "J.adapter.readers.pymol.JmolObject", ["JU.P3", "$.PT", "$.SB", "J.adapter.readers.pymol.PyMOLReader", "JU.BSUtil", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.id = 0; +this.bsAtoms = null; +this.info = null; +this.size = -1; +this.colors = null; +this.modelIndex = -2147483648; +this.jmolName = null; +this.argb = 0; +this.translucency = 0; +this.visible = true; +this.rd = null; +this.cacheID = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.pymol, "JmolObject", null); +Clazz.makeConstructor(c$, +function(id, branchNameID, bsAtoms, info){ +this.id = id; +this.bsAtoms = bsAtoms; +this.info = info; +this.jmolName = branchNameID; +}, "~N,~S,JU.BS,~O"); +Clazz.defineMethod(c$, "offset", +function(modelOffset, atomOffset){ +if (modelOffset > 0) { +if (this.modelIndex != -2147483648) this.modelIndex += modelOffset; +switch (this.id) { +case 1610625028: +case 12294: +return; +case 4115: +var i = (this.info).intValue(); +if (i >= 0) this.info = Integer.$valueOf(modelOffset + i); +return; +case 1073742031: +var movie = this.info; +var frames = movie.get("frames"); +for (var j = frames.length; --j >= 0; ) frames[j] += modelOffset; + +return; +} +}if (atomOffset <= 0) return; +if (this.id == 12290) { +var map = (this.info).values(); +for (var o, $o = map.iterator (); $o.hasNext()&& ((o = $o.next ()) || true);) JU.BSUtil.offset(o, 0, atomOffset); + +return; +}if (this.bsAtoms != null) JU.BSUtil.offset(this.bsAtoms, 0, atomOffset); +if (this.colors != null) { +var colixes = this.colors[0]; +var c = Clazz.newShortArray (colixes.length + atomOffset, 0); +System.arraycopy(colixes, 0, c, atomOffset, colixes.length); +this.colors[0] = c; +}}, "~N,~N"); +Clazz.defineMethod(c$, "finalizeObject", +function(pymolScene, m, mepList, doCache){ +var sm = m.sm; +var color = "color"; +var sID; +var sb = null; +if (this.bsAtoms != null) this.modelIndex = this.getModelIndex(m); +switch (this.id) { +case 2097194: +sm.vwr.displayAtoms(this.bsAtoms, false, false, 1275069441, true); +return; +case 12295: +var bs = sm.vwr.getModelUndeletedAtomsBitSet(this.argb); +JU.BSUtil.invertInPlace(bs, sm.vwr.ms.ac); +sm.vwr.select(bs, false, 0, true); +sm.restrictSelected(false, true); +return; +case 1610625028: +case 12294: +if (this.bsAtoms == null) { +if (this.info == null) { +sm.vwr.displayAtoms(null, true, false, 0, true); +}sm.vwr.setObjectProp(this.info, this.id); +} else { +sm.vwr.displayAtoms(this.bsAtoms, this.id == 1610625028, false, 1275069441, true); +}return; +case 12290: +sm.vwr.defineAtomSets(this.info); +return; +case 1073742031: +sm.vwr.am.setMovie(this.info); +return; +case 4115: +var frame = (this.info).intValue(); +if (frame >= 0) { +sm.vwr.setCurrentModelIndex(frame); +} else { +sm.vwr.setAnimationRange(-1, -1); +sm.vwr.setCurrentModelIndex(-1); +}return; +case 1073742139: +sm.vwr.stm.saveScene(this.jmolName, this.info); +sm.vwr.stm.saveOrientation(this.jmolName, (this.info).get("pymolView")); +return; +case 5: +sm.loadShape(this.id); +sm.setShapePropertyBs(this.id, "pymolLabels", this.info, this.bsAtoms); +return; +case 1677721602: +break; +case 659488: +case 1: +if (this.size != -1) { +sm.setShapeSizeBs(1, this.size, null, this.bsAtoms); +var bsBonds = (sm.getShapePropertyIndex(1, "sets", 0))[1]; +pymolScene.setUniqueBonds(bsBonds, this.id == 1); +this.size = -1; +}this.id = 1; +break; +case 1153433601: +this.id = 0; +break; +case 0: +break; +case 10: +case 9: +sm.loadShape(this.id); +var bsCarb = m.getAtoms(2097188, null); +JU.BSUtil.andNot(this.bsAtoms, bsCarb); +break; +case 16: +sm.loadShape(this.id); +sm.setShapePropertyBs(this.id, "ignore", JU.BSUtil.copyInvert(this.bsAtoms, sm.vwr.ms.ac), null); +break; +default: +if (!this.visible) return; +break; +} +switch (this.id) { +case 23: +sm.vwr.setCGO(this.info); +break; +case 16: +case 0: +case 7: +case 20: +case 11: +case 9: +case 10: +case 24: +if (Clazz.instanceOf(this.info,Array)) { +sm.loadShape(this.id); +sm.setShapePropertyBs(this.id, "params", this.info, this.bsAtoms); +}break; +case 6: +if (this.modelIndex < 0) return; +sm.loadShape(this.id); +var md = this.info; +md.setModelSet(m); +var points = md.points; +for (var i = points.size(); --i >= 0; ) (points.get(i)).mi = this.modelIndex; + +sm.setShapePropertyBs(this.id, "measure", md, this.bsAtoms); +return; +case 135180: +sID = (this.bsAtoms == null ? this.info : this.jmolName); +if (sm.getShapeIdFromObjectName(sID) >= 0) { +sm.vwr.setObjectProp(sID, 1610625028); +return; +}sb = new JU.SB(); +sb.append("isosurface ID ").append(JU.PT.esc(sID)); +if (this.modelIndex < 0) this.modelIndex = sm.vwr.am.cmi; +if (this.bsAtoms == null) { +sb.append(" model ").append(m.getModelNumberDotted(this.modelIndex)).append(" color density sigma 1.0 ").append(JU.PT.esc(this.cacheID)).append(" ").append(JU.PT.esc(sID)); +if (doCache) sb.append(";isosurface cache"); +} else { +var lighting = (this.info)[0]; +var only = (this.info)[1]; +only = " only"; +var bsCarve = (this.info)[2]; +var carveDistance = ((this.info)[3]).floatValue(); +var resolution = ""; +if (lighting == null) { +lighting = "mesh nofill"; +resolution = " resolution 1.5"; +}var haveMep = JU.PT.isOneOf(sID, mepList); +var model = m.getModelNumberDotted(this.modelIndex); +var ignore = ""; +var type = (this.size < 0 ? " sasurface " : " solvent "); +sb.append(" model ").append(model).append(resolution).append(" select ").append(JU.Escape.eBS(this.bsAtoms)).append(only).append(ignore).append(type).appendF(Math.abs(this.size / 1000)); +if (!haveMep) { +if (this.argb == 0) sb.append(" map property color"); + else sb.append(";color isosurface ").append(JU.Escape.escapeColor(this.argb)); +}sb.append(";isosurface frontOnly ").append(lighting); +if (this.translucency > 0) sb.append(";color isosurface translucent " + this.translucency); +if (bsCarve != null && !bsCarve.isEmpty()) sb.append(";isosurface slab within " + carveDistance + " {" + model + " and " + JU.Escape.eBS(bsCarve) + "}"); +if (doCache && !haveMep) sb.append(";isosurface cache"); +}break; +case 1073742016: +var mep = this.info; +sID = mep.get(mep.size() - 2).toString(); +var mapID = mep.get(mep.size() - 1).toString(); +var min = J.adapter.readers.pymol.PyMOLReader.floatAt(J.adapter.readers.pymol.PyMOLReader.listAt(mep, 3), 0); +var max = J.adapter.readers.pymol.PyMOLReader.floatAt(J.adapter.readers.pymol.PyMOLReader.listAt(mep, 3), 2); +sb = new JU.SB(); +sb.append(";isosurface ID ").append(JU.PT.esc(sID)).append(" map ").append(JU.PT.esc(this.cacheID)).append(" ").append(JU.PT.esc(mapID)).append(";color isosurface range " + min + " " + max + ";isosurface colorscheme rwb;set isosurfacekey true"); +if (this.translucency > 0) sb.append(";color isosurface translucent " + this.translucency); +if (doCache) sb.append(";isosurface cache"); +break; +case 1073742018: +this.modelIndex = sm.vwr.am.cmi; +var mesh = this.info; +sID = mesh.get(mesh.size() - 2).toString(); +sb = new JU.SB(); +sb.append("isosurface ID ").append(JU.PT.esc(sID)).append(" model ").append(m.getModelNumberDotted(this.modelIndex)).append(" color ").append(JU.Escape.escapeColor(this.argb)).append(" ").append(JU.PT.esc(this.cacheID)).append(" ").append(JU.PT.esc(sID)).append(" mesh nofill frontonly"); +var list = J.adapter.readers.pymol.PyMOLReader.sublistAt(mesh, [2, 0]); +var within = J.adapter.readers.pymol.PyMOLReader.floatAt(list, 11); +list = J.adapter.readers.pymol.PyMOLReader.listAt(list, 12); +if (within > 0) { +var pt = new JU.P3(); +sb.append(";isosurface slab within ").appendF(within).append(" [ "); +for (var j = list.size() - 3; j >= 0; j -= 3) { +J.adapter.readers.pymol.PyMOLReader.pointAt(list, j, pt); +sb.append(JU.Escape.eP(pt)); +} +sb.append(" ]"); +}if (doCache && !JU.PT.isOneOf(sID, mepList)) sb.append(";isosurface cache"); +sb.append(";set meshScale ").appendI(Clazz.doubleToInt(this.size / 500)); +break; +case 134222850: +sb = this.info; +break; +case 1112152078: +sm.loadShape(this.id = 10); +sm.setShapePropertyBs(this.id, "putty", this.info, this.bsAtoms); +break; +} +if (sb != null) { +sm.vwr.runScriptCautiously(sb.toString()); +return; +}if (this.size != -1 || this.rd != null) sm.setShapeSizeBs(this.id, this.size, this.rd, this.bsAtoms); +if (this.argb != 0) sm.setShapePropertyBs(this.id, color, Integer.$valueOf(this.argb), this.bsAtoms); +if (this.translucency > 0) { +sm.setShapePropertyBs(this.id, "translucentLevel", Float.$valueOf(this.translucency), this.bsAtoms); +sm.setShapePropertyBs(this.id, "translucency", "translucent", this.bsAtoms); +} else if (this.colors != null) sm.setShapePropertyBs(this.id, "colors", this.colors, this.bsAtoms); +}, "J.adapter.readers.pymol.PyMOLScene,JM.ModelSet,~S,~B"); +Clazz.defineMethod(c$, "getModelIndex", +function(m){ +if (this.bsAtoms == null) return -1; +var iAtom = this.bsAtoms.nextSetBit(0); +if (iAtom >= m.at.length) System.out.println("PyMOL LOADING ERROR IN MERGE"); +return (iAtom < 0 ? -1 : m.at[iAtom].mi); +}, "JM.ModelSet"); +Clazz.defineMethod(c$, "setColors", +function(colixes, translucency){ +this.colors = Clazz.newArray(-1, [colixes, Float.$valueOf(translucency)]); +}, "~A,~N"); +Clazz.defineMethod(c$, "setSize", +function(size){ +this.size = Clazz.floatToInt(size * 1000); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PickleReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PickleReader.js new file mode 100755 index 000000000000..e3c08e421766 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PickleReader.js @@ -0,0 +1,308 @@ +Clazz.declarePackage("J.adapter.readers.pymol"); +Clazz.load(["java.util.Hashtable", "JU.Lst"], "J.adapter.readers.pymol.PickleReader", ["JU.AU", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.binaryDoc = null; +this.stack = null; +this.marks = null; +this.build = null; +this.memo = null; +this.logging = false; +this.id = 0; +this.markCount = 0; +this.filePt = 0; +this.emptyListPt = 0; +this.thisSection = null; +this.inMovie = false; +this.inNames = false; +this.thisName = null; +this.lastMark = 0; +this.retrieveCount = 0; +this.ipt = 0; +this.aTemp = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.pymol, "PickleReader", null); +Clazz.prepareFields (c$, function(){ +this.stack = new JU.Lst(); +this.marks = new JU.Lst(); +this.build = new JU.Lst(); +this.memo = new java.util.Hashtable(); +this.aTemp = Clazz.newByteArray (16, 0); +}); +Clazz.makeConstructor(c$, +function(doc, vwr){ +this.binaryDoc = doc; +this.vwr = vwr; +this.stack.ensureCapacity(1000); +}, "javajs.api.GenericBinaryDocument,JV.Viewer"); +Clazz.defineMethod(c$, "log", +function(s){ +this.vwr.log(s + "\0"); +}, "~S"); +Clazz.defineMethod(c$, "getMap", +function(logging){ +this.logging = logging; +var b; +var i; +var mark; +var d; +var o; +var a; +var map; +var l; +this.ipt = 0; +var going = true; +while (going) { +b = this.binaryDoc.readByte(); +this.ipt++; +switch (b) { +case 125: +this.push( new java.util.Hashtable()); +break; +case 97: +o = this.pop(); +(this.peek()).addLast(o); +break; +case 101: +l = this.getObjects(this.getMark()); +if (this.inNames && this.markCount == 2) { +var pt = this.binaryDoc.getPosition(); +var l2 = new JU.Lst(); +l2.addLast(Integer.$valueOf(this.filePt)); +l2.addLast(Integer.$valueOf(pt - this.filePt)); +l.addLast(l2); +}(this.peek()).addAll(l); +break; +case 71: +d = this.binaryDoc.readDouble(); +this.push(Double.$valueOf(d)); +break; +case 74: +i = this.binaryDoc.readIntLE(); +this.push(Integer.$valueOf(i)); +break; +case 75: +i = this.binaryDoc.readByte() & 0xff; +this.push(Integer.$valueOf(i)); +break; +case 77: +i = (this.binaryDoc.readByte() & 0xff | ((this.binaryDoc.readByte() & 0xff) << 8)) & 0xffff; +this.push(Integer.$valueOf(i)); +break; +case 113: +i = this.binaryDoc.readByte(); +this.putMemo(i, false); +break; +case 114: +i = this.binaryDoc.readIntLE(); +this.putMemo(i, true); +break; +case 104: +i = this.binaryDoc.readByte(); +o = this.getMemo(i); +this.push(o == null ? "BINGET" + (++this.id) : o); +break; +case 106: +i = this.binaryDoc.readIntLE(); +o = this.getMemo(i); +this.push(o == null ? "LONG_BINGET" + (++this.id) : o); +break; +case 85: +i = this.binaryDoc.readByte() & 0xff; +a = Clazz.newByteArray (i, 0); +this.binaryDoc.readByteArray(a, 0, i); +if (this.inNames && this.markCount == 3 && this.lastMark == this.stack.size()) { +this.thisName = this.bytesToString(a); +this.filePt = this.emptyListPt; +}this.push(a); +break; +case 84: +i = this.binaryDoc.readIntLE(); +a = Clazz.newByteArray (i, 0); +this.binaryDoc.readByteArray(a, 0, i); +this.push(a); +break; +case 88: +i = this.binaryDoc.readIntLE(); +a = Clazz.newByteArray (i, 0); +this.binaryDoc.readByteArray(a, 0, i); +this.push(a); +break; +case 93: +this.emptyListPt = this.binaryDoc.getPosition() - 1; +this.push( new JU.Lst()); +break; +case 99: +l = new JU.Lst(); +l.addLast("global"); +l.addLast(this.readStringAsBytes()); +l.addLast(this.readStringAsBytes()); +this.push(l); +break; +case 98: +o = this.pop(); +this.build.addLast(o); +break; +case 40: +this.putMark(this.stack.size()); +break; +case 78: +this.push(null); +break; +case 111: +this.push(this.getObjects(this.getMark())); +break; +case 115: +o = this.pop(); +var s = this.bytesToString(this.pop()); +(this.peek()).put(s, o); +break; +case 117: +mark = this.getMark(); +l = this.getObjects(mark); +o = this.peek(); +if (Clazz.instanceOf(o,"JU.Lst")) { +for (i = 0; i < l.size(); i++) { +var oo = l.get(i); +(o).addLast(oo); +} +} else { +map = o; +for (i = l.size(); --i >= 0; ) { +o = l.get(i); +var key = this.bytesToString(l.get(--i)); +map.put(key, o); +} +}break; +case 46: +going = false; +break; +case 116: +this.push(this.getObjects(this.getMark())); +break; +case 76: +var val = String.instantialize(this.readStringAsBytes()); +if (val.endsWith("L")) { +val = val.substring(0, val.length - 1); +}this.push(Long.$valueOf(val)); +break; +case 82: +this.pop(); +break; +case 73: +s = this.bytesToString(this.readStringAsBytes()); +try { +this.push(Integer.$valueOf(Integer.parseInt(s))); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +var ll = Long.parseLong(s); +this.push(Integer.$valueOf((ll & 0xFFFFFFFF))); +} else { +throw e; +} +} +break; +case 41: +this.push( new JU.Lst()); +break; +default: +JU.Logger.error("Pickle reader error: " + b + " " + this.binaryDoc.getPosition()); +} +} +if (logging) this.log(""); +JU.Logger.info("PyMOL Pickle reader cached " + this.memo.size() + " tokens; retrieved " + this.retrieveCount); +map = this.stack.removeItemAt(0); +if (map.size() == 0) for (i = this.stack.size(); --i >= 0; ) { +o = this.stack.get(i--); +a = this.stack.get(i); +map.put(this.bytesToString(a), o); +} +this.memo = null; +return map; +}, "~B"); +Clazz.defineMethod(c$, "bytesToString", +function(o){ +try { +return (JU.AU.isAB(o) ? String.instantialize(o, "UTF-8") : o.toString()); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.UnsupportedEncodingException")){ +return ""; +} else { +throw e; +} +} +}, "~O"); +Clazz.defineMethod(c$, "putMemo", +function(i, doCheck){ +var o = this.peek(); +if (JU.AU.isAB(o)) o = this.bytesToString(o); +if ((typeof(o)=='string')) { +this.memo.put(Integer.$valueOf(i), o); +}}, "~N,~B"); +Clazz.defineMethod(c$, "getMemo", +function(i){ +var o = this.memo.get(Integer.$valueOf(i)); +if (o == null) return o; +this.retrieveCount++; +return o; +}, "~N"); +Clazz.defineMethod(c$, "getObjects", +function(mark){ +var n = this.stack.size() - mark; +var args = new JU.Lst(); +args.ensureCapacity(n); +for (var i = mark; i < this.stack.size(); ++i) { +var oo = this.stack.get(i); +args.addLast(oo); +} +for (var i = this.stack.size(); --i >= mark; ) this.stack.removeItemAt(i); + +return args; +}, "~N"); +Clazz.defineMethod(c$, "readStringAsBytes", +function(){ +var n = 0; +var a = this.aTemp; +while (true) { +var b = this.binaryDoc.readByte(); +if (b == 0xA) break; +if (n >= a.length) a = this.aTemp = JU.AU.arrayCopyByte(a, a.length * 2); +a[n++] = b; +} +return JU.AU.arrayCopyByte(a, n); +}); +Clazz.defineMethod(c$, "putMark", +function(i){ +if (this.logging) this.log("\n " + Integer.toHexString(this.binaryDoc.getPosition()) + " ["); +this.marks.addLast(Integer.$valueOf(this.lastMark = i)); +this.markCount++; +switch (this.markCount) { +case 2: +var o = this.stack.get(i - 2); +if (JU.AU.isAB(o)) { +this.thisSection = this.bytesToString(o); +this.inMovie = "movie".equals(this.thisSection); +this.inNames = "names".equals(this.thisSection); +}break; +default: +break; +} +}, "~N"); +Clazz.defineMethod(c$, "getMark", +function(){ +return this.marks.removeItemAt(--this.markCount).intValue(); +}); +Clazz.defineMethod(c$, "push", +function(o){ +if (this.logging && ((typeof(o)=='string') || Clazz.instanceOf(o, Double) || Clazz.instanceOf(o, Integer))) this.log(((typeof(o)=='string') ? "'" + o + "'" : o) + ", "); +this.stack.addLast(o); +}, "~O"); +Clazz.defineMethod(c$, "peek", +function(){ +return this.stack.get(this.stack.size() - 1); +}); +Clazz.defineMethod(c$, "pop", +function(){ +return this.stack.removeItemAt(this.stack.size() - 1); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOL.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOL.js new file mode 100755 index 000000000000..7f6ec448fa27 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOL.js @@ -0,0 +1,208 @@ +Clazz.declarePackage("J.adapter.readers.pymol"); +Clazz.load(["java.util.Hashtable"], "J.adapter.readers.pymol.PyMOL", ["JU.Logger"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.pymol, "PyMOL", null); +c$.getRGB = Clazz.defineMethod(c$, "getRGB", +function(color){ +if (J.adapter.readers.pymol.PyMOL.moreColors != null) { +var key = Integer.$valueOf(color); +var c = J.adapter.readers.pymol.PyMOL.moreColors.get(key); +if (c != null) return c.intValue(); +}if (color < J.adapter.readers.pymol.PyMOL.colors.length) return (J.adapter.readers.pymol.PyMOL.colors[color]); +return 0; +}, "~N"); +c$.addColor = Clazz.defineMethod(c$, "addColor", +function(id, value){ +J.adapter.readers.pymol.PyMOL.moreColors.put(id, Integer.$valueOf(value)); +}, "Integer,~N"); +c$.getDefaultSetting = Clazz.defineMethod(c$, "getDefaultSetting", +function(i, pymolVersion){ +switch (i) { +case 173: +case 236: +case 570: +case 235: +case 526: +case 210: +case 376: +case 144: +case 574: +case 146: +case 378: +case 530: +case 531: +case 532: +case 156: +return -1; +case 327: +case 569: +case 155: +case 90: +case 448: +case 214: +case 194: +case 193: +case 84: +case 88: +case 111: +case 529: +case 19: +return 1; +case 172: +case 571: +case 666: +case 524: +case 279: +case 198: +case 138: +case 6: +case 180: +case 143: +case 338: +case 49: +case 64: +case 441: +case 118: +case 581: +case 749: +case 23: +case 20: +case 237: +case 203: +case 344: +return 0; +case 92: +return 0.2; +case 96: +return 1.4; +case 65: +return 0.25; +case 192: +return 0.45; +case 453: +return 14; +case 66: +return -6; +case 328: +return 5; +case 213: +case 382: +case 431: +return 2; +case 361: +case 380: +return 4; +case 377: +return 0.4; +case 379: +return 0.6; +case 381: +return 1.5; +case 103: +return 0.5; +case 4: +return 1.4; +case 107: +return 2.5; +case 44: +return 1.49; +case 106: +return 3; +case 152: +return 20; +case 550: +return 30; +case 21: +return 0.25; +case 100: +return 1.2; +case 101: +return 0.25; +default: +JU.Logger.error("PyMOL " + pymolVersion + " default float setting not found: " + i); +return 0; +} +}, "~N,~N"); +c$.getDefaultSettingPt = Clazz.defineMethod(c$, "getDefaultSettingPt", +function(i, pymolVersion, pt){ +switch (i) { +case 471: +pt.set(0, 0, 0.75); +break; +default: +JU.Logger.error("PyMOL " + pymolVersion + " default point setting not found: " + i); +break; +} +return pt; +}, "~N,~N,JU.P3"); +c$.getDefaultSettingS = Clazz.defineMethod(c$, "getDefaultSettingS", +function(i, pymolVersion){ +switch (i) { +case 342: +break; +default: +JU.Logger.info("PyMOL " + pymolVersion + " does not have String setting " + i); +break; +} +return ""; +}, "~N,~N"); +c$.getVArray = Clazz.defineMethod(c$, "getVArray", +function(version){ +var va = null; +var varray = null; +switch (version) { +case 176: +va = J.adapter.readers.pymol.PyMOL.v176; +break; +case 177: +va = J.adapter.readers.pymol.PyMOL.v177; +break; +case 181: +va = J.adapter.readers.pymol.PyMOL.v181; +break; +} +if (va != null) { +varray = Clazz.newIntArray (60, 0); +for (var i = 0; i < va.length; ) varray[va[i++]] = va[i++]; + +}return varray; +}, "~N"); +c$.getVArrayB = Clazz.defineMethod(c$, "getVArrayB", +function(version){ +var va = null; +var varray = null; +switch (version) { +case 176: +va = J.adapter.readers.pymol.PyMOL.v176b; +break; +case 177: +va = J.adapter.readers.pymol.PyMOL.v177b; +break; +case 181: +va = J.adapter.readers.pymol.PyMOL.v181b; +break; +} +if (va != null) { +varray = Clazz.newIntArray (10, 0); +for (var i = 0; i < va.length; ) varray[va[i++]] = va[i++]; + +}return varray; +}, "~N"); +c$.REP_LIST = Clazz.newArray(-1, ["sticks", "spheres", "surface", "labels", "nb_spheres", "cartoon", "ribbon", "lines", "mesh", "dots", "dashes", "nonbonded", "cell", "cgo", "callback", "extent", "slice", "angles", "dihedrals", "ellipsoid", "volume"]); +c$.FLAG_exfoliate = 0x01000000; +c$.FLAG_ignore = 0x02000000; +c$.FLAG_no_smooth = 0x04000000; +c$.FLAG_polymer = 0x08000000; +c$.FLAG_solvent = 0x10000000; +c$.FLAG_organic = 0x20000000; +c$.FLAG_inorganic = 0x40000000; +c$.FLAG_NOSURFACE = J.adapter.readers.pymol.PyMOL.FLAG_ignore | J.adapter.readers.pymol.PyMOL.FLAG_exfoliate; +c$.colors = Clazz.newIntArray(-1, [0xFFFFFFFF, 0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFFFF0000, 0xFF00FFFF, 0xFFFFFF00, 0xFFFFFF00, 0xFFFF00FF, 0xFFFF9999, 0xFF7FFF7F, 0xFF7F7FFF, 0xFFFF007F, 0xFFFF7F00, 0xFF7FFF00, 0xFF00FF7F, 0xFF7F00FF, 0xFF007FFF, 0xFFC4B200, 0xFFBF00BF, 0xFF00BFBF, 0xFF993333, 0xFF339933, 0xFF3F3FA5, 0xFF7F7F7F, 0xFF7F7F7F, 0xFF33FF33, 0xFF3333FF, 0xFFFF4C4C, 0xFFE5E5E5, 0xFFFFB233, 0xFFE5C53F, 0xFFFF3333, 0xFF33FF33, 0xFF4C4CFF, 0xFFFFFF33, 0xFFFFDD5E, 0xFFFF8C26, 0xFF1919FF, 0xFF3319E5, 0xFF4C19CC, 0xFF6619B2, 0xFF7F1999, 0xFF99197F, 0xFFB21966, 0xFFCC194C, 0xFFE51933, 0xFFFF1919, 0xFFFFA5D8, 0xFFB12121, 0xFF8D381C, 0xFFA5512B, 0xFFFCD1A5, 0xFFFF7FFF, 0xFF000000, 0xFF020202, 0xFF050505, 0xFF070707, 0xFF0A0A0A, 0xFF0C0C0C, 0xFF0F0F0F, 0xFF121212, 0xFF141414, 0xFF171717, 0xFF191919, 0xFF1C1C1C, 0xFF1E1E1E, 0xFF212121, 0xFF242424, 0xFF262626, 0xFF292929, 0xFF2B2B2B, 0xFF2E2E2E, 0xFF303030, 0xFF333333, 0xFF363636, 0xFF383838, 0xFF3B3B3B, 0xFF3D3D3D, 0xFF404040, 0xFF424242, 0xFF454545, 0xFF484848, 0xFF4A4A4A, 0xFF4D4D4D, 0xFF4F4F4F, 0xFF525252, 0xFF555555, 0xFF575757, 0xFF5A5A5A, 0xFF5C5C5C, 0xFF5F5F5F, 0xFF616161, 0xFF646464, 0xFF676767, 0xFF696969, 0xFF6C6C6C, 0xFF6E6E6E, 0xFF717171, 0xFF737373, 0xFF767676, 0xFF797979, 0xFF7B7B7B, 0xFF7E7E7E, 0xFF808080, 0xFF838383, 0xFF858585, 0xFF888888, 0xFF8B8B8B, 0xFF8D8D8D, 0xFF909090, 0xFF929292, 0xFF959595, 0xFF979797, 0xFF9A9A9A, 0xFF9D9D9D, 0xFF9F9F9F, 0xFFA2A2A2, 0xFFA4A4A4, 0xFFA7A7A7, 0xFFAAAAAA, 0xFFACACAC, 0xFFAFAFAF, 0xFFB1B1B1, 0xFFB4B4B4, 0xFFB6B6B6, 0xFFB9B9B9, 0xFFBCBCBC, 0xFFBEBEBE, 0xFFC1C1C1, 0xFFC3C3C3, 0xFFC6C6C6, 0xFFC8C8C8, 0xFFCBCBCB, 0xFFCECECE, 0xFFD0D0D0, 0xFFD3D3D3, 0xFFD5D5D5, 0xFFD8D8D8, 0xFFDADADA, 0xFFDDDDDD, 0xFFE0E0E0, 0xFFE2E2E2, 0xFFE5E5E5, 0xFFE7E7E7, 0xFFEAEAEA, 0xFFECECEC, 0xFFEFEFEF, 0xFFF2F2F2, 0xFFF4F4F4, 0xFFF7F7F7, 0xFFF9F9F9, 0xFFFCFCFC, 0xFFFFFFFF, 0xFFFF33CC, 0xFFFF00FF, 0xFFFD00FF, 0xFFFB00FF, 0xFFFA00FF, 0xFFF800FF, 0xFFF700FF, 0xFFF500FF, 0xFFF400FF, 0xFFF200FF, 0xFFF100FF, 0xFFEF00FF, 0xFFEE00FF, 0xFFEC00FF, 0xFFEB00FF, 0xFFE900FF, 0xFFE800FF, 0xFFE600FF, 0xFFE400FF, 0xFFE300FF, 0xFFE100FF, 0xFFE000FF, 0xFFDE00FF, 0xFFDD00FF, 0xFFDB00FF, 0xFFDA00FF, 0xFFD800FF, 0xFFD700FF, 0xFFD500FF, 0xFFD400FF, 0xFFD200FF, 0xFFD100FF, 0xFFCF00FF, 0xFFCE00FF, 0xFFCC00FF, 0xFFCA00FF, 0xFFC900FF, 0xFFC700FF, 0xFFC600FF, 0xFFC400FF, 0xFFC300FF, 0xFFC100FF, 0xFFC000FF, 0xFFBE00FF, 0xFFBD00FF, 0xFFBB00FF, 0xFFBA00FF, 0xFFB800FF, 0xFFB700FF, 0xFFB500FF, 0xFFB400FF, 0xFFB200FF, 0xFFB000FF, 0xFFAF00FF, 0xFFAD00FF, 0xFFAC00FF, 0xFFAA00FF, 0xFFA900FF, 0xFFA700FF, 0xFFA600FF, 0xFFA400FF, 0xFFA300FF, 0xFFA100FF, 0xFFA000FF, 0xFF9E00FF, 0xFF9D00FF, 0xFF9B00FF, 0xFF9A00FF, 0xFF9800FF, 0xFF9600FF, 0xFF9500FF, 0xFF9300FF, 0xFF9200FF, 0xFF9000FF, 0xFF8F00FF, 0xFF8D00FF, 0xFF8C00FF, 0xFF8A00FF, 0xFF8900FF, 0xFF8700FF, 0xFF8600FF, 0xFF8400FF, 0xFF8300FF, 0xFF8100FF, 0xFF8000FF, 0xFF7E00FF, 0xFF7C00FF, 0xFF7B00FF, 0xFF7900FF, 0xFF7800FF, 0xFF7600FF, 0xFF7500FF, 0xFF7300FF, 0xFF7200FF, 0xFF7000FF, 0xFF6F00FF, 0xFF6D00FF, 0xFF6C00FF, 0xFF6A00FF, 0xFF6900FF, 0xFF6700FF, 0xFF6600FF, 0xFF6400FF, 0xFF6200FF, 0xFF6100FF, 0xFF5F00FF, 0xFF5E00FF, 0xFF5C00FF, 0xFF5B00FF, 0xFF5900FF, 0xFF5800FF, 0xFF5600FF, 0xFF5500FF, 0xFF5300FF, 0xFF5200FF, 0xFF5000FF, 0xFF4F00FF, 0xFF4D00FF, 0xFF4B00FF, 0xFF4A00FF, 0xFF4800FF, 0xFF4700FF, 0xFF4500FF, 0xFF4400FF, 0xFF4200FF, 0xFF4100FF, 0xFF3F00FF, 0xFF3E00FF, 0xFF3C00FF, 0xFF3B00FF, 0xFF3900FF, 0xFF3800FF, 0xFF3600FF, 0xFF3500FF, 0xFF3300FF, 0xFF3100FF, 0xFF3000FF, 0xFF2E00FF, 0xFF2D00FF, 0xFF2B00FF, 0xFF2A00FF, 0xFF2800FF, 0xFF2700FF, 0xFF2500FF, 0xFF2400FF, 0xFF2200FF, 0xFF2100FF, 0xFF1F00FF, 0xFF1E00FF, 0xFF1C00FF, 0xFF1B00FF, 0xFF1900FF, 0xFF1700FF, 0xFF1600FF, 0xFF1400FF, 0xFF1300FF, 0xFF1100FF, 0xFF1000FF, 0xFF0E00FF, 0xFF0D00FF, 0xFF0B00FF, 0xFF0A00FF, 0xFF0800FF, 0xFF0700FF, 0xFF0500FF, 0xFF0400FF, 0xFF0200FF, 0xFF0100FF, 0xFF0000FF, 0xFF0002FF, 0xFF0003FF, 0xFF0005FF, 0xFF0006FF, 0xFF0008FF, 0xFF0009FF, 0xFF000BFF, 0xFF000CFF, 0xFF000EFF, 0xFF000FFF, 0xFF0011FF, 0xFF0012FF, 0xFF0014FF, 0xFF0015FF, 0xFF0017FF, 0xFF0018FF, 0xFF001AFF, 0xFF001CFF, 0xFF001DFF, 0xFF001FFF, 0xFF0020FF, 0xFF0022FF, 0xFF0023FF, 0xFF0025FF, 0xFF0026FF, 0xFF0028FF, 0xFF0029FF, 0xFF002BFF, 0xFF002CFF, 0xFF002EFF, 0xFF002FFF, 0xFF0031FF, 0xFF0032FF, 0xFF0034FF, 0xFF0036FF, 0xFF0037FF, 0xFF0039FF, 0xFF003AFF, 0xFF003CFF, 0xFF003DFF, 0xFF003FFF, 0xFF0040FF, 0xFF0042FF, 0xFF0043FF, 0xFF0045FF, 0xFF0046FF, 0xFF0048FF, 0xFF0049FF, 0xFF004BFF, 0xFF004DFF, 0xFF004EFF, 0xFF0050FF, 0xFF0051FF, 0xFF0053FF, 0xFF0054FF, 0xFF0056FF, 0xFF0057FF, 0xFF0059FF, 0xFF005AFF, 0xFF005CFF, 0xFF005DFF, 0xFF005FFF, 0xFF0060FF, 0xFF0062FF, 0xFF0063FF, 0xFF0065FF, 0xFF0067FF, 0xFF0068FF, 0xFF006AFF, 0xFF006BFF, 0xFF006DFF, 0xFF006EFF, 0xFF0070FF, 0xFF0071FF, 0xFF0073FF, 0xFF0074FF, 0xFF0076FF, 0xFF0077FF, 0xFF0079FF, 0xFF007AFF, 0xFF007CFF, 0xFF007DFF, 0xFF007FFF, 0xFF0081FF, 0xFF0082FF, 0xFF0084FF, 0xFF0085FF, 0xFF0087FF, 0xFF0088FF, 0xFF008AFF, 0xFF008BFF, 0xFF008DFF, 0xFF008EFF, 0xFF0090FF, 0xFF0091FF, 0xFF0093FF, 0xFF0094FF, 0xFF0096FF, 0xFF0097FF, 0xFF0099FF, 0xFF009BFF, 0xFF009CFF, 0xFF009EFF, 0xFF009FFF, 0xFF00A1FF, 0xFF00A2FF, 0xFF00A4FF, 0xFF00A5FF, 0xFF00A7FF, 0xFF00A8FF, 0xFF00AAFF, 0xFF00ABFF, 0xFF00ADFF, 0xFF00AEFF, 0xFF00B0FF, 0xFF00B1FF, 0xFF00B3FF, 0xFF00B5FF, 0xFF00B6FF, 0xFF00B8FF, 0xFF00B9FF, 0xFF00BBFF, 0xFF00BCFF, 0xFF00BEFF, 0xFF00BFFF, 0xFF00C1FF, 0xFF00C2FF, 0xFF00C4FF, 0xFF00C5FF, 0xFF00C7FF, 0xFF00C8FF, 0xFF00CAFF, 0xFF00CBFF, 0xFF00CDFF, 0xFF00CFFF, 0xFF00D0FF, 0xFF00D2FF, 0xFF00D3FF, 0xFF00D5FF, 0xFF00D6FF, 0xFF00D8FF, 0xFF00D9FF, 0xFF00DBFF, 0xFF00DCFF, 0xFF00DEFF, 0xFF00DFFF, 0xFF00E1FF, 0xFF00E2FF, 0xFF00E4FF, 0xFF00E6FF, 0xFF00E7FF, 0xFF00E9FF, 0xFF00EAFF, 0xFF00ECFF, 0xFF00EDFF, 0xFF00EFFF, 0xFF00F0FF, 0xFF00F2FF, 0xFF00F3FF, 0xFF00F5FF, 0xFF00F6FF, 0xFF00F8FF, 0xFF00F9FF, 0xFF00FBFF, 0xFF00FCFF, 0xFF00FEFF, 0xFF00FFFD, 0xFF00FFFC, 0xFF00FFFA, 0xFF00FFF9, 0xFF00FFF7, 0xFF00FFF6, 0xFF00FFF4, 0xFF00FFF3, 0xFF00FFF1, 0xFF00FFF0, 0xFF00FFEE, 0xFF00FFED, 0xFF00FFEB, 0xFF00FFEA, 0xFF00FFE8, 0xFF00FFE7, 0xFF00FFE5, 0xFF00FFE3, 0xFF00FFE2, 0xFF00FFE0, 0xFF00FFDF, 0xFF00FFDD, 0xFF00FFDC, 0xFF00FFDA, 0xFF00FFD9, 0xFF00FFD7, 0xFF00FFD6, 0xFF00FFD4, 0xFF00FFD3, 0xFF00FFD1, 0xFF00FFD0, 0xFF00FFCE, 0xFF00FFCD, 0xFF00FFCB, 0xFF00FFC9, 0xFF00FFC8, 0xFF00FFC6, 0xFF00FFC5, 0xFF00FFC3, 0xFF00FFC2, 0xFF00FFC0, 0xFF00FFBF, 0xFF00FFBD, 0xFF00FFBC, 0xFF00FFBA, 0xFF00FFB9, 0xFF00FFB7, 0xFF00FFB6, 0xFF00FFB4, 0xFF00FFB3, 0xFF00FFB1, 0xFF00FFAF, 0xFF00FFAE, 0xFF00FFAC, 0xFF00FFAB, 0xFF00FFA9, 0xFF00FFA8, 0xFF00FFA6, 0xFF00FFA5, 0xFF00FFA3, 0xFF00FFA2, 0xFF00FFA0, 0xFF00FF9F, 0xFF00FF9D, 0xFF00FF9C, 0xFF00FF9A, 0xFF00FF99, 0xFF00FF97, 0xFF00FF95, 0xFF00FF94, 0xFF00FF92, 0xFF00FF91, 0xFF00FF8F, 0xFF00FF8E, 0xFF00FF8C, 0xFF00FF8B, 0xFF00FF89, 0xFF00FF88, 0xFF00FF86, 0xFF00FF85, 0xFF00FF83, 0xFF00FF82, 0xFF00FF80, 0xFF00FF7E, 0xFF00FF7D, 0xFF00FF7B, 0xFF00FF7A, 0xFF00FF78, 0xFF00FF77, 0xFF00FF75, 0xFF00FF74, 0xFF00FF72, 0xFF00FF71, 0xFF00FF6F, 0xFF00FF6E, 0xFF00FF6C, 0xFF00FF6B, 0xFF00FF69, 0xFF00FF68, 0xFF00FF66, 0xFF00FF64, 0xFF00FF63, 0xFF00FF61, 0xFF00FF60, 0xFF00FF5E, 0xFF00FF5D, 0xFF00FF5B, 0xFF00FF5A, 0xFF00FF58, 0xFF00FF57, 0xFF00FF55, 0xFF00FF54, 0xFF00FF52, 0xFF00FF51, 0xFF00FF4F, 0xFF00FF4E, 0xFF00FF4C, 0xFF00FF4A, 0xFF00FF49, 0xFF00FF47, 0xFF00FF46, 0xFF00FF44, 0xFF00FF43, 0xFF00FF41, 0xFF00FF40, 0xFF00FF3E, 0xFF00FF3D, 0xFF00FF3B, 0xFF00FF3A, 0xFF00FF38, 0xFF00FF37, 0xFF00FF35, 0xFF00FF34, 0xFF00FF32, 0xFF00FF30, 0xFF00FF2F, 0xFF00FF2D, 0xFF00FF2C, 0xFF00FF2A, 0xFF00FF29, 0xFF00FF27, 0xFF00FF26, 0xFF00FF24, 0xFF00FF23, 0xFF00FF21, 0xFF00FF20, 0xFF00FF1E, 0xFF00FF1D, 0xFF00FF1B, 0xFF00FF1A, 0xFF00FF18, 0xFF00FF16, 0xFF00FF15, 0xFF00FF13, 0xFF00FF12, 0xFF00FF10, 0xFF00FF0F, 0xFF00FF0D, 0xFF00FF0C, 0xFF00FF0A, 0xFF00FF09, 0xFF00FF07, 0xFF00FF06, 0xFF00FF04, 0xFF00FF03, 0xFF00FF01, 0xFF00FF00, 0xFF01FF00, 0xFF03FF00, 0xFF04FF00, 0xFF06FF00, 0xFF07FF00, 0xFF09FF00, 0xFF0AFF00, 0xFF0CFF00, 0xFF0DFF00, 0xFF0FFF00, 0xFF10FF00, 0xFF12FF00, 0xFF13FF00, 0xFF15FF00, 0xFF16FF00, 0xFF18FF00, 0xFF1AFF00, 0xFF1BFF00, 0xFF1DFF00, 0xFF1EFF00, 0xFF20FF00, 0xFF21FF00, 0xFF23FF00, 0xFF24FF00, 0xFF26FF00, 0xFF27FF00, 0xFF29FF00, 0xFF2AFF00, 0xFF2CFF00, 0xFF2DFF00, 0xFF2FFF00, 0xFF30FF00, 0xFF32FF00, 0xFF34FF00, 0xFF35FF00, 0xFF37FF00, 0xFF38FF00, 0xFF3AFF00, 0xFF3BFF00, 0xFF3DFF00, 0xFF3EFF00, 0xFF40FF00, 0xFF41FF00, 0xFF43FF00, 0xFF44FF00, 0xFF46FF00, 0xFF47FF00, 0xFF49FF00, 0xFF4AFF00, 0xFF4CFF00, 0xFF4EFF00, 0xFF4FFF00, 0xFF51FF00, 0xFF52FF00, 0xFF54FF00, 0xFF55FF00, 0xFF57FF00, 0xFF58FF00, 0xFF5AFF00, 0xFF5BFF00, 0xFF5DFF00, 0xFF5EFF00, 0xFF60FF00, 0xFF61FF00, 0xFF63FF00, 0xFF64FF00, 0xFF66FF00, 0xFF68FF00, 0xFF69FF00, 0xFF6BFF00, 0xFF6CFF00, 0xFF6EFF00, 0xFF6FFF00, 0xFF71FF00, 0xFF72FF00, 0xFF74FF00, 0xFF75FF00, 0xFF77FF00, 0xFF78FF00, 0xFF7AFF00, 0xFF7BFF00, 0xFF7DFF00, 0xFF7EFF00, 0xFF80FF00, 0xFF82FF00, 0xFF83FF00, 0xFF85FF00, 0xFF86FF00, 0xFF88FF00, 0xFF89FF00, 0xFF8BFF00, 0xFF8CFF00, 0xFF8EFF00, 0xFF8FFF00, 0xFF91FF00, 0xFF92FF00, 0xFF94FF00, 0xFF95FF00, 0xFF97FF00, 0xFF98FF00, 0xFF9AFF00, 0xFF9CFF00, 0xFF9DFF00, 0xFF9FFF00, 0xFFA0FF00, 0xFFA2FF00, 0xFFA3FF00, 0xFFA5FF00, 0xFFA6FF00, 0xFFA8FF00, 0xFFA9FF00, 0xFFABFF00, 0xFFACFF00, 0xFFAEFF00, 0xFFAFFF00, 0xFFB1FF00, 0xFFB3FF00, 0xFFB4FF00, 0xFFB6FF00, 0xFFB7FF00, 0xFFB9FF00, 0xFFBAFF00, 0xFFBCFF00, 0xFFBDFF00, 0xFFBFFF00, 0xFFC0FF00, 0xFFC2FF00, 0xFFC3FF00, 0xFFC5FF00, 0xFFC6FF00, 0xFFC8FF00, 0xFFC9FF00, 0xFFCBFF00, 0xFFCDFF00, 0xFFCEFF00, 0xFFD0FF00, 0xFFD1FF00, 0xFFD3FF00, 0xFFD4FF00, 0xFFD6FF00, 0xFFD7FF00, 0xFFD9FF00, 0xFFDAFF00, 0xFFDCFF00, 0xFFDDFF00, 0xFFDFFF00, 0xFFE0FF00, 0xFFE2FF00, 0xFFE3FF00, 0xFFE5FF00, 0xFFE7FF00, 0xFFE8FF00, 0xFFEAFF00, 0xFFEBFF00, 0xFFEDFF00, 0xFFEEFF00, 0xFFF0FF00, 0xFFF1FF00, 0xFFF3FF00, 0xFFF4FF00, 0xFFF6FF00, 0xFFF7FF00, 0xFFF9FF00, 0xFFFAFF00, 0xFFFCFF00, 0xFFFDFF00, 0xFFFFFE00, 0xFFFFFC00, 0xFFFFFB00, 0xFFFFF900, 0xFFFFF800, 0xFFFFF600, 0xFFFFF500, 0xFFFFF300, 0xFFFFF200, 0xFFFFF000, 0xFFFFEF00, 0xFFFFED00, 0xFFFFEC00, 0xFFFFEA00, 0xFFFFE900, 0xFFFFE700, 0xFFFFE600, 0xFFFFE400, 0xFFFFE200, 0xFFFFE100, 0xFFFFDF00, 0xFFFFDE00, 0xFFFFDC00, 0xFFFFDB00, 0xFFFFD900, 0xFFFFD800, 0xFFFFD600, 0xFFFFD500, 0xFFFFD300, 0xFFFFD200, 0xFFFFD000, 0xFFFFCF00, 0xFFFFCD00, 0xFFFFCC00, 0xFFFFCA00, 0xFFFFC800, 0xFFFFC700, 0xFFFFC500, 0xFFFFC400, 0xFFFFC200, 0xFFFFC100, 0xFFFFBF00, 0xFFFFBE00, 0xFFFFBC00, 0xFFFFBB00, 0xFFFFB900, 0xFFFFB800, 0xFFFFB600, 0xFFFFB500, 0xFFFFB300, 0xFFFFB100, 0xFFFFB000, 0xFFFFAE00, 0xFFFFAD00, 0xFFFFAB00, 0xFFFFAA00, 0xFFFFA800, 0xFFFFA700, 0xFFFFA500, 0xFFFFA400, 0xFFFFA200, 0xFFFFA100, 0xFFFF9F00, 0xFFFF9E00, 0xFFFF9C00, 0xFFFF9B00, 0xFFFF9900, 0xFFFF9700, 0xFFFF9600, 0xFFFF9400, 0xFFFF9300, 0xFFFF9100, 0xFFFF9000, 0xFFFF8E00, 0xFFFF8D00, 0xFFFF8B00, 0xFFFF8A00, 0xFFFF8800, 0xFFFF8700, 0xFFFF8500, 0xFFFF8400, 0xFFFF8200, 0xFFFF8100, 0xFFFF7F00, 0xFFFF7D00, 0xFFFF7C00, 0xFFFF7A00, 0xFFFF7900, 0xFFFF7700, 0xFFFF7600, 0xFFFF7400, 0xFFFF7300, 0xFFFF7100, 0xFFFF7000, 0xFFFF6E00, 0xFFFF6D00, 0xFFFF6B00, 0xFFFF6A00, 0xFFFF6800, 0xFFFF6700, 0xFFFF6500, 0xFFFF6300, 0xFFFF6200, 0xFFFF6000, 0xFFFF5F00, 0xFFFF5D00, 0xFFFF5C00, 0xFFFF5A00, 0xFFFF5900, 0xFFFF5700, 0xFFFF5600, 0xFFFF5400, 0xFFFF5300, 0xFFFF5100, 0xFFFF5000, 0xFFFF4E00, 0xFFFF4D00, 0xFFFF4B00, 0xFFFF4900, 0xFFFF4800, 0xFFFF4600, 0xFFFF4500, 0xFFFF4300, 0xFFFF4200, 0xFFFF4000, 0xFFFF3F00, 0xFFFF3D00, 0xFFFF3C00, 0xFFFF3A00, 0xFFFF3900, 0xFFFF3700, 0xFFFF3600, 0xFFFF3400, 0xFFFF3300, 0xFFFF3100, 0xFFFF2F00, 0xFFFF2E00, 0xFFFF2C00, 0xFFFF2B00, 0xFFFF2900, 0xFFFF2800, 0xFFFF2600, 0xFFFF2500, 0xFFFF2300, 0xFFFF2200, 0xFFFF2000, 0xFFFF1F00, 0xFFFF1D00, 0xFFFF1C00, 0xFFFF1A00, 0xFFFF1800, 0xFFFF1700, 0xFFFF1500, 0xFFFF1400, 0xFFFF1200, 0xFFFF1100, 0xFFFF0F00, 0xFFFF0E00, 0xFFFF0C00, 0xFFFF0B00, 0xFFFF0900, 0xFFFF0800, 0xFFFF0600, 0xFFFF0500, 0xFFFF0300, 0xFFFF0200, 0xFFFF0000, 0xFFFF0001, 0xFFFF0002, 0xFFFF0004, 0xFFFF0005, 0xFFFF0007, 0xFFFF0008, 0xFFFF000A, 0xFFFF000B, 0xFFFF000D, 0xFFFF000E, 0xFFFF0010, 0xFFFF0011, 0xFFFF0013, 0xFFFF0014, 0xFFFF0016, 0xFFFF0017, 0xFFFF0019, 0xFFFF001B, 0xFFFF001C, 0xFFFF001E, 0xFFFF001F, 0xFFFF0021, 0xFFFF0022, 0xFFFF0024, 0xFFFF0025, 0xFFFF0027, 0xFFFF0028, 0xFFFF002A, 0xFFFF002B, 0xFFFF002D, 0xFFFF002E, 0xFFFF0030, 0xFFFF0031, 0xFFFF0033, 0xFFFF0035, 0xFFFF0036, 0xFFFF0038, 0xFFFF0039, 0xFFFF003B, 0xFFFF003C, 0xFFFF003E, 0xFFFF003F, 0xFFFF0041, 0xFFFF0042, 0xFFFF0044, 0xFFFF0045, 0xFFFF0047, 0xFFFF0048, 0xFFFF004A, 0xFFFF004B, 0xFFFF004D, 0xFFFF004F, 0xFFFF0050, 0xFFFF0052, 0xFFFF0053, 0xFFFF0055, 0xFFFF0056, 0xFFFF0058, 0xFFFF0059, 0xFFFF005B, 0xFFFF005C, 0xFFFF005E, 0xFFFF005F, 0xFFFF0061, 0xFFFF0062, 0xFFFF0064, 0xFFFF0065, 0xFFFF0067, 0xFFFF0069, 0xFFFF006A, 0xFFFF006C, 0xFFFF006D, 0xFFFF006F, 0xFFFF0070, 0xFFFF0072, 0xFFFF0073, 0xFFFF0075, 0xFFFF0076, 0xFFFF0078, 0xFFFF0079, 0xFFFF007B, 0xFFFF007C, 0xFFFF007E, 0xFFFF0080, 0xFFFF0081, 0xFFFF0083, 0xFFFF0084, 0xFFFF0086, 0xFFFF0087, 0xFFFF0089, 0xFFFF008A, 0xFFFF008C, 0xFFFF008D, 0xFFFF008F, 0xFFFF0090, 0xFFFF0092, 0xFFFF0093, 0xFFFF0095, 0xFFFF0096, 0xFFFF0098, 0xFFFF009A, 0xFFFF009B, 0xFFFF009D, 0xFFFF009E, 0xFFFF00A0, 0xFFFF00A1, 0xFFFF00A3, 0xFFFF00A4, 0xFFFF00A6, 0xFFFF00A7, 0xFFFF00A9, 0xFFFF00AA, 0xFFFF00AC, 0xFFFF00AD, 0xFFFF00AF, 0xFFFF00B0, 0xFFFF00B2, 0xFFFF00B4, 0xFFFF00B5, 0xFFFF00B7, 0xFFFF00B8, 0xFFFF00BA, 0xFFFF00BB, 0xFFFF00BD, 0xFFFF00BE, 0xFFFF00C0, 0xFFFF00C1, 0xFFFF00C3, 0xFFFF00C4, 0xFFFF00C6, 0xFFFF00C7, 0xFFFF00C9, 0xFFFF00CA, 0xFFFF00CC, 0xFFFF00CE, 0xFFFF00CF, 0xFFFF00D1, 0xFFFF00D2, 0xFFFF00D4, 0xFFFF00D5, 0xFFFF00D7, 0xFFFF00D8, 0xFFFF00DA, 0xFFFF00DB, 0xFFFF00DD, 0xFFFF00DE, 0xFFFF00E0, 0xFFFF00E1, 0xFFFF00E3, 0xFFFF00E4, 0xFFFF00E6, 0xFFFF00E8, 0xFFFF00E9, 0xFFFF00EB, 0xFFFF00EC, 0xFFFF00EE, 0xFFFF00EF, 0xFFFF00F1, 0xFFFF00F2, 0xFFFF00F4, 0xFFFF00F5, 0xFFFF00F7, 0xFFFF00F8, 0xFFFF00FA, 0xFFFF00FB, 0xFFFF00FD, 0xFFFFFF00, 0xFFFDFF00, 0xFFFBFF00, 0xFFFAFF00, 0xFFF8FF00, 0xFFF7FF00, 0xFFF5FF00, 0xFFF4FF00, 0xFFF2FF00, 0xFFF1FF00, 0xFFEFFF00, 0xFFEEFF00, 0xFFECFF00, 0xFFEBFF00, 0xFFE9FF00, 0xFFE8FF00, 0xFFE6FF00, 0xFFE4FF00, 0xFFE3FF00, 0xFFE1FF00, 0xFFE0FF00, 0xFFDEFF00, 0xFFDDFF00, 0xFFDBFF00, 0xFFDAFF00, 0xFFD8FF00, 0xFFD7FF00, 0xFFD5FF00, 0xFFD4FF00, 0xFFD2FF00, 0xFFD1FF00, 0xFFCFFF00, 0xFFCEFF00, 0xFFCCFF00, 0xFFCAFF00, 0xFFC9FF00, 0xFFC7FF00, 0xFFC6FF00, 0xFFC4FF00, 0xFFC3FF00, 0xFFC1FF00, 0xFFC0FF00, 0xFFBEFF00, 0xFFBDFF00, 0xFFBBFF00, 0xFFBAFF00, 0xFFB8FF00, 0xFFB7FF00, 0xFFB5FF00, 0xFFB4FF00, 0xFFB2FF00, 0xFFB0FF00, 0xFFAFFF00, 0xFFADFF00, 0xFFACFF00, 0xFFAAFF00, 0xFFA9FF00, 0xFFA7FF00, 0xFFA6FF00, 0xFFA4FF00, 0xFFA3FF00, 0xFFA1FF00, 0xFFA0FF00, 0xFF9EFF00, 0xFF9DFF00, 0xFF9BFF00, 0xFF9AFF00, 0xFF98FF00, 0xFF96FF00, 0xFF95FF00, 0xFF93FF00, 0xFF92FF00, 0xFF90FF00, 0xFF8FFF00, 0xFF8DFF00, 0xFF8CFF00, 0xFF8AFF00, 0xFF89FF00, 0xFF87FF00, 0xFF86FF00, 0xFF84FF00, 0xFF83FF00, 0xFF81FF00, 0xFF80FF00, 0xFF7EFF00, 0xFF7CFF00, 0xFF7BFF00, 0xFF79FF00, 0xFF78FF00, 0xFF76FF00, 0xFF75FF00, 0xFF73FF00, 0xFF72FF00, 0xFF70FF00, 0xFF6FFF00, 0xFF6DFF00, 0xFF6CFF00, 0xFF6AFF00, 0xFF69FF00, 0xFF67FF00, 0xFF66FF00, 0xFF64FF00, 0xFF62FF00, 0xFF61FF00, 0xFF5FFF00, 0xFF5EFF00, 0xFF5CFF00, 0xFF5BFF00, 0xFF59FF00, 0xFF58FF00, 0xFF56FF00, 0xFF55FF00, 0xFF53FF00, 0xFF52FF00, 0xFF50FF00, 0xFF4FFF00, 0xFF4DFF00, 0xFF4BFF00, 0xFF4AFF00, 0xFF48FF00, 0xFF47FF00, 0xFF45FF00, 0xFF44FF00, 0xFF42FF00, 0xFF41FF00, 0xFF3FFF00, 0xFF3EFF00, 0xFF3CFF00, 0xFF3BFF00, 0xFF39FF00, 0xFF38FF00, 0xFF36FF00, 0xFF35FF00, 0xFF33FF00, 0xFF31FF00, 0xFF30FF00, 0xFF2EFF00, 0xFF2DFF00, 0xFF2BFF00, 0xFF2AFF00, 0xFF28FF00, 0xFF27FF00, 0xFF25FF00, 0xFF24FF00, 0xFF22FF00, 0xFF21FF00, 0xFF1FFF00, 0xFF1EFF00, 0xFF1CFF00, 0xFF1BFF00, 0xFF19FF00, 0xFF17FF00, 0xFF16FF00, 0xFF14FF00, 0xFF13FF00, 0xFF11FF00, 0xFF10FF00, 0xFF0EFF00, 0xFF0DFF00, 0xFF0BFF00, 0xFF0AFF00, 0xFF08FF00, 0xFF07FF00, 0xFF05FF00, 0xFF04FF00, 0xFF02FF00, 0xFF01FF00, 0xFF00FF00, 0xFF00FF02, 0xFF00FF03, 0xFF00FF05, 0xFF00FF06, 0xFF00FF08, 0xFF00FF09, 0xFF00FF0B, 0xFF00FF0C, 0xFF00FF0E, 0xFF00FF0F, 0xFF00FF11, 0xFF00FF12, 0xFF00FF14, 0xFF00FF15, 0xFF00FF17, 0xFF00FF18, 0xFF00FF1A, 0xFF00FF1C, 0xFF00FF1D, 0xFF00FF1F, 0xFF00FF20, 0xFF00FF22, 0xFF00FF23, 0xFF00FF25, 0xFF00FF26, 0xFF00FF28, 0xFF00FF29, 0xFF00FF2B, 0xFF00FF2C, 0xFF00FF2E, 0xFF00FF2F, 0xFF00FF31, 0xFF00FF32, 0xFF00FF34, 0xFF00FF36, 0xFF00FF37, 0xFF00FF39, 0xFF00FF3A, 0xFF00FF3C, 0xFF00FF3D, 0xFF00FF3F, 0xFF00FF40, 0xFF00FF42, 0xFF00FF43, 0xFF00FF45, 0xFF00FF46, 0xFF00FF48, 0xFF00FF49, 0xFF00FF4B, 0xFF00FF4D, 0xFF00FF4E, 0xFF00FF50, 0xFF00FF51, 0xFF00FF53, 0xFF00FF54, 0xFF00FF56, 0xFF00FF57, 0xFF00FF59, 0xFF00FF5A, 0xFF00FF5C, 0xFF00FF5D, 0xFF00FF5F, 0xFF00FF60, 0xFF00FF62, 0xFF00FF63, 0xFF00FF65, 0xFF00FF67, 0xFF00FF68, 0xFF00FF6A, 0xFF00FF6B, 0xFF00FF6D, 0xFF00FF6E, 0xFF00FF70, 0xFF00FF71, 0xFF00FF73, 0xFF00FF74, 0xFF00FF76, 0xFF00FF77, 0xFF00FF79, 0xFF00FF7A, 0xFF00FF7C, 0xFF00FF7D, 0xFF00FF7F, 0xFF00FF81, 0xFF00FF82, 0xFF00FF84, 0xFF00FF85, 0xFF00FF87, 0xFF00FF88, 0xFF00FF8A, 0xFF00FF8B, 0xFF00FF8D, 0xFF00FF8E, 0xFF00FF90, 0xFF00FF91, 0xFF00FF93, 0xFF00FF94, 0xFF00FF96, 0xFF00FF97, 0xFF00FF99, 0xFF00FF9B, 0xFF00FF9C, 0xFF00FF9E, 0xFF00FF9F, 0xFF00FFA1, 0xFF00FFA2, 0xFF00FFA4, 0xFF00FFA5, 0xFF00FFA7, 0xFF00FFA8, 0xFF00FFAA, 0xFF00FFAB, 0xFF00FFAD, 0xFF00FFAE, 0xFF00FFB0, 0xFF00FFB1, 0xFF00FFB3, 0xFF00FFB5, 0xFF00FFB6, 0xFF00FFB8, 0xFF00FFB9, 0xFF00FFBB, 0xFF00FFBC, 0xFF00FFBE, 0xFF00FFBF, 0xFF00FFC1, 0xFF00FFC2, 0xFF00FFC4, 0xFF00FFC5, 0xFF00FFC7, 0xFF00FFC8, 0xFF00FFCA, 0xFF00FFCB, 0xFF00FFCD, 0xFF00FFCF, 0xFF00FFD0, 0xFF00FFD2, 0xFF00FFD3, 0xFF00FFD5, 0xFF00FFD6, 0xFF00FFD8, 0xFF00FFD9, 0xFF00FFDB, 0xFF00FFDC, 0xFF00FFDE, 0xFF00FFDF, 0xFF00FFE1, 0xFF00FFE2, 0xFF00FFE4, 0xFF00FFE6, 0xFF00FFE7, 0xFF00FFE9, 0xFF00FFEA, 0xFF00FFEC, 0xFF00FFED, 0xFF00FFEF, 0xFF00FFF0, 0xFF00FFF2, 0xFF00FFF3, 0xFF00FFF5, 0xFF00FFF6, 0xFF00FFF8, 0xFF00FFF9, 0xFF00FFFB, 0xFF00FFFC, 0xFF00FFFE, 0xFF00FDFF, 0xFF00FCFF, 0xFF00FAFF, 0xFF00F9FF, 0xFF00F7FF, 0xFF00F6FF, 0xFF00F4FF, 0xFF00F3FF, 0xFF00F1FF, 0xFF00F0FF, 0xFF00EEFF, 0xFF00EDFF, 0xFF00EBFF, 0xFF00EAFF, 0xFF00E8FF, 0xFF00E7FF, 0xFF00E5FF, 0xFF00E3FF, 0xFF00E2FF, 0xFF00E0FF, 0xFF00DFFF, 0xFF00DDFF, 0xFF00DCFF, 0xFF00DAFF, 0xFF00D9FF, 0xFF00D7FF, 0xFF00D6FF, 0xFF00D4FF, 0xFF00D3FF, 0xFF00D1FF, 0xFF00D0FF, 0xFF00CEFF, 0xFF00CDFF, 0xFF00CBFF, 0xFF00C9FF, 0xFF00C8FF, 0xFF00C6FF, 0xFF00C5FF, 0xFF00C3FF, 0xFF00C2FF, 0xFF00C0FF, 0xFF00BFFF, 0xFF00BDFF, 0xFF00BCFF, 0xFF00BAFF, 0xFF00B9FF, 0xFF00B7FF, 0xFF00B6FF, 0xFF00B4FF, 0xFF00B3FF, 0xFF00B1FF, 0xFF00AFFF, 0xFF00AEFF, 0xFF00ACFF, 0xFF00ABFF, 0xFF00A9FF, 0xFF00A8FF, 0xFF00A6FF, 0xFF00A5FF, 0xFF00A3FF, 0xFF00A2FF, 0xFF00A0FF, 0xFF009FFF, 0xFF009DFF, 0xFF009CFF, 0xFF009AFF, 0xFF0099FF, 0xFF0097FF, 0xFF0095FF, 0xFF0094FF, 0xFF0092FF, 0xFF0091FF, 0xFF008FFF, 0xFF008EFF, 0xFF008CFF, 0xFF008BFF, 0xFF0089FF, 0xFF0088FF, 0xFF0086FF, 0xFF0085FF, 0xFF0083FF, 0xFF0082FF, 0xFF0080FF, 0xFF007EFF, 0xFF007DFF, 0xFF007BFF, 0xFF007AFF, 0xFF0078FF, 0xFF0077FF, 0xFF0075FF, 0xFF0074FF, 0xFF0072FF, 0xFF0071FF, 0xFF006FFF, 0xFF006EFF, 0xFF006CFF, 0xFF006BFF, 0xFF0069FF, 0xFF0068FF, 0xFF0066FF, 0xFF0064FF, 0xFF0063FF, 0xFF0061FF, 0xFF0060FF, 0xFF005EFF, 0xFF005DFF, 0xFF005BFF, 0xFF005AFF, 0xFF0058FF, 0xFF0057FF, 0xFF0055FF, 0xFF0054FF, 0xFF0052FF, 0xFF0051FF, 0xFF004FFF, 0xFF004EFF, 0xFF004CFF, 0xFF004AFF, 0xFF0049FF, 0xFF0047FF, 0xFF0046FF, 0xFF0044FF, 0xFF0043FF, 0xFF0041FF, 0xFF0040FF, 0xFF003EFF, 0xFF003DFF, 0xFF003BFF, 0xFF003AFF, 0xFF0038FF, 0xFF0037FF, 0xFF0035FF, 0xFF0034FF, 0xFF0032FF, 0xFF0030FF, 0xFF002FFF, 0xFF002DFF, 0xFF002CFF, 0xFF002AFF, 0xFF0029FF, 0xFF0027FF, 0xFF0026FF, 0xFF0024FF, 0xFF0023FF, 0xFF0021FF, 0xFF0020FF, 0xFF001EFF, 0xFF001DFF, 0xFF001BFF, 0xFF001AFF, 0xFF0018FF, 0xFF0016FF, 0xFF0015FF, 0xFF0013FF, 0xFF0012FF, 0xFF0010FF, 0xFF000FFF, 0xFF000DFF, 0xFF000CFF, 0xFF000AFF, 0xFF0009FF, 0xFF0007FF, 0xFF0006FF, 0xFF0004FF, 0xFF0003FF, 0xFF0001FF, 0xFF0000FF, 0xFF0100FF, 0xFF0300FF, 0xFF0400FF, 0xFF0600FF, 0xFF0700FF, 0xFF0900FF, 0xFF0A00FF, 0xFF0C00FF, 0xFF0D00FF, 0xFF0F00FF, 0xFF1000FF, 0xFF1200FF, 0xFF1300FF, 0xFF1500FF, 0xFF1600FF, 0xFF1800FF, 0xFF1A00FF, 0xFF1B00FF, 0xFF1D00FF, 0xFF1E00FF, 0xFF2000FF, 0xFF2100FF, 0xFF2300FF, 0xFF2400FF, 0xFF2600FF, 0xFF2700FF, 0xFF2900FF, 0xFF2A00FF, 0xFF2C00FF, 0xFF2D00FF, 0xFF2F00FF, 0xFF3000FF, 0xFF3200FF, 0xFF3400FF, 0xFF3500FF, 0xFF3700FF, 0xFF3800FF, 0xFF3A00FF, 0xFF3B00FF, 0xFF3D00FF, 0xFF3E00FF, 0xFF4000FF, 0xFF4100FF, 0xFF4300FF, 0xFF4400FF, 0xFF4600FF, 0xFF4700FF, 0xFF4900FF, 0xFF4A00FF, 0xFF4C00FF, 0xFF4E00FF, 0xFF4F00FF, 0xFF5100FF, 0xFF5200FF, 0xFF5400FF, 0xFF5500FF, 0xFF5700FF, 0xFF5800FF, 0xFF5A00FF, 0xFF5B00FF, 0xFF5D00FF, 0xFF5E00FF, 0xFF6000FF, 0xFF6100FF, 0xFF6300FF, 0xFF6400FF, 0xFF6600FF, 0xFF6800FF, 0xFF6900FF, 0xFF6B00FF, 0xFF6C00FF, 0xFF6E00FF, 0xFF6F00FF, 0xFF7100FF, 0xFF7200FF, 0xFF7400FF, 0xFF7500FF, 0xFF7700FF, 0xFF7800FF, 0xFF7A00FF, 0xFF7B00FF, 0xFF7D00FF, 0xFF7E00FF, 0xFF8000FF, 0xFF8200FF, 0xFF8300FF, 0xFF8500FF, 0xFF8600FF, 0xFF8800FF, 0xFF8900FF, 0xFF8B00FF, 0xFF8C00FF, 0xFF8E00FF, 0xFF8F00FF, 0xFF9100FF, 0xFF9200FF, 0xFF9400FF, 0xFF9500FF, 0xFF9700FF, 0xFF9800FF, 0xFF9A00FF, 0xFF9C00FF, 0xFF9D00FF, 0xFF9F00FF, 0xFFA000FF, 0xFFA200FF, 0xFFA300FF, 0xFFA500FF, 0xFFA600FF, 0xFFA800FF, 0xFFA900FF, 0xFFAB00FF, 0xFFAC00FF, 0xFFAE00FF, 0xFFAF00FF, 0xFFB100FF, 0xFFB300FF, 0xFFB400FF, 0xFFB600FF, 0xFFB700FF, 0xFFB900FF, 0xFFBA00FF, 0xFFBC00FF, 0xFFBD00FF, 0xFFBF00FF, 0xFFC000FF, 0xFFC200FF, 0xFFC300FF, 0xFFC500FF, 0xFFC600FF, 0xFFC800FF, 0xFFC900FF, 0xFFCB00FF, 0xFFCD00FF, 0xFFCE00FF, 0xFFD000FF, 0xFFD100FF, 0xFFD300FF, 0xFFD400FF, 0xFFD600FF, 0xFFD700FF, 0xFFD900FF, 0xFFDA00FF, 0xFFDC00FF, 0xFFDD00FF, 0xFFDF00FF, 0xFFE000FF, 0xFFE200FF, 0xFFE300FF, 0xFFE500FF, 0xFFE700FF, 0xFFE800FF, 0xFFEA00FF, 0xFFEB00FF, 0xFFED00FF, 0xFFEE00FF, 0xFFF000FF, 0xFFF100FF, 0xFFF300FF, 0xFFF400FF, 0xFFF600FF, 0xFFF700FF, 0xFFF900FF, 0xFFFA00FF, 0xFFFC00FF, 0xFFFD00FF, 0xFFFF00FE, 0xFFFF00FC, 0xFFFF00FB, 0xFFFF00F9, 0xFFFF00F8, 0xFFFF00F6, 0xFFFF00F5, 0xFFFF00F3, 0xFFFF00F2, 0xFFFF00F0, 0xFFFF00EF, 0xFFFF00ED, 0xFFFF00EC, 0xFFFF00EA, 0xFFFF00E9, 0xFFFF00E7, 0xFFFF00E6, 0xFFFF00E4, 0xFFFF00E2, 0xFFFF00E1, 0xFFFF00DF, 0xFFFF00DE, 0xFFFF00DC, 0xFFFF00DB, 0xFFFF00D9, 0xFFFF00D8, 0xFFFF00D6, 0xFFFF00D5, 0xFFFF00D3, 0xFFFF00D2, 0xFFFF00D0, 0xFFFF00CF, 0xFFFF00CD, 0xFFFF00CC, 0xFFFF00CA, 0xFFFF00C8, 0xFFFF00C7, 0xFFFF00C5, 0xFFFF00C4, 0xFFFF00C2, 0xFFFF00C1, 0xFFFF00BF, 0xFFFF00BE, 0xFFFF00BC, 0xFFFF00BB, 0xFFFF00B9, 0xFFFF00B8, 0xFFFF00B6, 0xFFFF00B5, 0xFFFF00B3, 0xFFFF00B1, 0xFFFF00B0, 0xFFFF00AE, 0xFFFF00AD, 0xFFFF00AB, 0xFFFF00AA, 0xFFFF00A8, 0xFFFF00A7, 0xFFFF00A5, 0xFFFF00A4, 0xFFFF00A2, 0xFFFF00A1, 0xFFFF009F, 0xFFFF009E, 0xFFFF009C, 0xFFFF009B, 0xFFFF0099, 0xFFFF0097, 0xFFFF0096, 0xFFFF0094, 0xFFFF0093, 0xFFFF0091, 0xFFFF0090, 0xFFFF008E, 0xFFFF008D, 0xFFFF008B, 0xFFFF008A, 0xFFFF0088, 0xFFFF0087, 0xFFFF0085, 0xFFFF0084, 0xFFFF0082, 0xFFFF0081, 0xFFFF007F, 0xFFFF007D, 0xFFFF007C, 0xFFFF007A, 0xFFFF0079, 0xFFFF0077, 0xFFFF0076, 0xFFFF0074, 0xFFFF0073, 0xFFFF0071, 0xFFFF0070, 0xFFFF006E, 0xFFFF006D, 0xFFFF006B, 0xFFFF006A, 0xFFFF0068, 0xFFFF0067, 0xFFFF0065, 0xFFFF0063, 0xFFFF0062, 0xFFFF0060, 0xFFFF005F, 0xFFFF005D, 0xFFFF005C, 0xFFFF005A, 0xFFFF0059, 0xFFFF0057, 0xFFFF0056, 0xFFFF0054, 0xFFFF0053, 0xFFFF0051, 0xFFFF0050, 0xFFFF004E, 0xFFFF004D, 0xFFFF004B, 0xFFFF0049, 0xFFFF0048, 0xFFFF0046, 0xFFFF0045, 0xFFFF0043, 0xFFFF0042, 0xFFFF0040, 0xFFFF003F, 0xFFFF003D, 0xFFFF003C, 0xFFFF003A, 0xFFFF0039, 0xFFFF0037, 0xFFFF0036, 0xFFFF0034, 0xFFFF0033, 0xFFFF0031, 0xFFFF002F, 0xFFFF002E, 0xFFFF002C, 0xFFFF002B, 0xFFFF0029, 0xFFFF0028, 0xFFFF0026, 0xFFFF0025, 0xFFFF0023, 0xFFFF0022, 0xFFFF0020, 0xFFFF001F, 0xFFFF001D, 0xFFFF001C, 0xFFFF001A, 0xFFFF0018, 0xFFFF0017, 0xFFFF0015, 0xFFFF0014, 0xFFFF0012, 0xFFFF0011, 0xFFFF000F, 0xFFFF000E, 0xFFFF000C, 0xFFFF000B, 0xFFFF0009, 0xFFFF0008, 0xFFFF0006, 0xFFFF0005, 0xFFFF0003, 0xFFFF0002, 0xFFFF0000, 0xFFFF0100, 0xFFFF0200, 0xFFFF0400, 0xFFFF0500, 0xFFFF0700, 0xFFFF0800, 0xFFFF0A00, 0xFFFF0B00, 0xFFFF0D00, 0xFFFF0E00, 0xFFFF1000, 0xFFFF1100, 0xFFFF1300, 0xFFFF1400, 0xFFFF1600, 0xFFFF1700, 0xFFFF1900, 0xFFFF1B00, 0xFFFF1C00, 0xFFFF1E00, 0xFFFF1F00, 0xFFFF2100, 0xFFFF2200, 0xFFFF2400, 0xFFFF2500, 0xFFFF2700, 0xFFFF2800, 0xFFFF2A00, 0xFFFF2B00, 0xFFFF2D00, 0xFFFF2E00, 0xFFFF3000, 0xFFFF3100, 0xFFFF3300, 0xFFFF3500, 0xFFFF3600, 0xFFFF3800, 0xFFFF3900, 0xFFFF3B00, 0xFFFF3C00, 0xFFFF3E00, 0xFFFF3F00, 0xFFFF4100, 0xFFFF4200, 0xFFFF4400, 0xFFFF4500, 0xFFFF4700, 0xFFFF4800, 0xFFFF4A00, 0xFFFF4B00, 0xFFFF4D00, 0xFFFF4F00, 0xFFFF5000, 0xFFFF5200, 0xFFFF5300, 0xFFFF5500, 0xFFFF5600, 0xFFFF5800, 0xFFFF5900, 0xFFFF5B00, 0xFFFF5C00, 0xFFFF5E00, 0xFFFF5F00, 0xFFFF6100, 0xFFFF6200, 0xFFFF6400, 0xFFFF6500, 0xFFFF6700, 0xFFFF6900, 0xFFFF6A00, 0xFFFF6C00, 0xFFFF6D00, 0xFFFF6F00, 0xFFFF7000, 0xFFFF7200, 0xFFFF7300, 0xFFFF7500, 0xFFFF7600, 0xFFFF7800, 0xFFFF7900, 0xFFFF7B00, 0xFFFF7C00, 0xFFFF7E00, 0xFFFF8000, 0xFFFF8100, 0xFFFF8300, 0xFFFF8400, 0xFFFF8600, 0xFFFF8700, 0xFFFF8900, 0xFFFF8A00, 0xFFFF8C00, 0xFFFF8D00, 0xFFFF8F00, 0xFFFF9000, 0xFFFF9200, 0xFFFF9300, 0xFFFF9500, 0xFFFF9600, 0xFFFF9800, 0xFFFF9A00, 0xFFFF9B00, 0xFFFF9D00, 0xFFFF9E00, 0xFFFFA000, 0xFFFFA100, 0xFFFFA300, 0xFFFFA400, 0xFFFFA600, 0xFFFFA700, 0xFFFFA900, 0xFFFFAA00, 0xFFFFAC00, 0xFFFFAD00, 0xFFFFAF00, 0xFFFFB000, 0xFFFFB200, 0xFFFFB400, 0xFFFFB500, 0xFFFFB700, 0xFFFFB800, 0xFFFFBA00, 0xFFFFBB00, 0xFFFFBD00, 0xFFFFBE00, 0xFFFFC000, 0xFFFFC100, 0xFFFFC300, 0xFFFFC400, 0xFFFFC600, 0xFFFFC700, 0xFFFFC900, 0xFFFFCA00, 0xFFFFCC00, 0xFFFFCE00, 0xFFFFCF00, 0xFFFFD100, 0xFFFFD200, 0xFFFFD400, 0xFFFFD500, 0xFFFFD700, 0xFFFFD800, 0xFFFFDA00, 0xFFFFDB00, 0xFFFFDD00, 0xFFFFDE00, 0xFFFFE000, 0xFFFFE100, 0xFFFFE300, 0xFFFFE400, 0xFFFFE600, 0xFFFFE800, 0xFFFFE900, 0xFFFFEB00, 0xFFFFEC00, 0xFFFFEE00, 0xFFFFEF00, 0xFFFFF100, 0xFFFFF200, 0xFFFFF400, 0xFFFFF500, 0xFFFFF700, 0xFFFFF800, 0xFFFFFA00, 0xFFFFFB00, 0xFFFFFD00, 0xFFFFFF00, 0xFFFBFB03, 0xFFF8F806, 0xFFF5F509, 0xFFF2F20C, 0xFFEFEF0F, 0xFFECEC12, 0xFFE9E915, 0xFFE6E618, 0xFFE3E31B, 0xFFE0E01E, 0xFFDDDD21, 0xFFDADA24, 0xFFD7D727, 0xFFD4D42A, 0xFFD1D12D, 0xFFCECE30, 0xFFCACA34, 0xFFC7C737, 0xFFC4C43A, 0xFFC1C13D, 0xFFBEBE40, 0xFFBBBB43, 0xFFB8B846, 0xFFB5B549, 0xFFB2B24C, 0xFFAFAF4F, 0xFFACAC52, 0xFFA9A955, 0xFFA6A658, 0xFFA3A35B, 0xFFA0A05E, 0xFF9D9D61, 0xFF9A9A64, 0xFF969668, 0xFF93936B, 0xFF90906E, 0xFF8D8D71, 0xFF8A8A74, 0xFF878777, 0xFF84847A, 0xFF81817D, 0xFF7E7E80, 0xFF7B7B83, 0xFF787886, 0xFF757589, 0xFF72728C, 0xFF6F6F8F, 0xFF6C6C92, 0xFF696995, 0xFF666698, 0xFF62629C, 0xFF5F5F9F, 0xFF5C5CA2, 0xFF5959A5, 0xFF5656A8, 0xFF5353AB, 0xFF5050AE, 0xFF4D4DB1, 0xFF4A4AB4, 0xFF4747B7, 0xFF4444BA, 0xFF4141BD, 0xFF3E3EC0, 0xFF3B3BC3, 0xFF3838C6, 0xFF3535C9, 0xFF3131CD, 0xFF2E2ED0, 0xFF2B2BD3, 0xFF2828D6, 0xFF2525D9, 0xFF2222DC, 0xFF1F1FDF, 0xFF1C1CE2, 0xFF1919E5, 0xFF1616E8, 0xFF1313EB, 0xFF1010EE, 0xFF0D0DF1, 0xFF0A0AF4, 0xFF0707F7, 0xFF0404FA, 0xFF0101FD, 0xFF0200FC, 0xFF0500F9, 0xFF0800F6, 0xFF0B00F3, 0xFF0E00F0, 0xFF1100ED, 0xFF1400EA, 0xFF1700E7, 0xFF1A00E4, 0xFF1D00E1, 0xFF2000DE, 0xFF2300DB, 0xFF2600D8, 0xFF2900D5, 0xFF2C00D2, 0xFF2F00CF, 0xFF3200CC, 0xFF3600C8, 0xFF3900C5, 0xFF3C00C2, 0xFF3F00BF, 0xFF4200BC, 0xFF4500B9, 0xFF4800B6, 0xFF4B00B3, 0xFF4E00B0, 0xFF5100AD, 0xFF5400AA, 0xFF5700A7, 0xFF5A00A4, 0xFF5D00A1, 0xFF60009E, 0xFF63009B, 0xFF670097, 0xFF6A0094, 0xFF6D0091, 0xFF70008E, 0xFF73008B, 0xFF760088, 0xFF790085, 0xFF7C0082, 0xFF7F007F, 0xFF82007C, 0xFF850079, 0xFF880076, 0xFF8B0073, 0xFF8E0070, 0xFF91006D, 0xFF94006A, 0xFF970067, 0xFF9B0063, 0xFF9E0060, 0xFFA1005D, 0xFFA4005A, 0xFFA70057, 0xFFAA0054, 0xFFAD0051, 0xFFB0004E, 0xFFB3004B, 0xFFB60048, 0xFFB90045, 0xFFBC0042, 0xFFBF003F, 0xFFC2003C, 0xFFC50039, 0xFFC80036, 0xFFCB0033, 0xFFCF002F, 0xFFD2002C, 0xFFD50029, 0xFFD80026, 0xFFDB0023, 0xFFDE0020, 0xFFE1001D, 0xFFE4001A, 0xFFE70017, 0xFFEA0014, 0xFFED0011, 0xFFF0000E, 0xFFF3000B, 0xFFF60008, 0xFFF90005, 0xFFFC0002, 0xFFFD0100, 0xFFFA0400, 0xFFF70700, 0xFFF40A00, 0xFFF10D00, 0xFFEE1000, 0xFFEB1300, 0xFFE81600, 0xFFE51900, 0xFFE21C00, 0xFFDF1F00, 0xFFDC2200, 0xFFD92500, 0xFFD62800, 0xFFD32B00, 0xFFD02E00, 0xFFCD3100, 0xFFC93500, 0xFFC63800, 0xFFC33B00, 0xFFC03E00, 0xFFBD4100, 0xFFBA4400, 0xFFB74700, 0xFFB44A00, 0xFFB14D00, 0xFFAE5000, 0xFFAB5300, 0xFFA85600, 0xFFA55900, 0xFFA25C00, 0xFF9F5F00, 0xFF9C6200, 0xFF996500, 0xFF956900, 0xFF926C00, 0xFF8F6F00, 0xFF8C7200, 0xFF897500, 0xFF867800, 0xFF837B00, 0xFF807E00, 0xFF7D8100, 0xFF7A8400, 0xFF778700, 0xFF748A00, 0xFF718D00, 0xFF6E9000, 0xFF6B9300, 0xFF689600, 0xFF649A00, 0xFF619D00, 0xFF5EA000, 0xFF5BA300, 0xFF58A600, 0xFF55A900, 0xFF52AC00, 0xFF4FAF00, 0xFF4CB200, 0xFF49B500, 0xFF46B800, 0xFF43BB00, 0xFF40BE00, 0xFF3DC100, 0xFF3AC400, 0xFF37C700, 0xFF34CA00, 0xFF30CE00, 0xFF2DD100, 0xFF2AD400, 0xFF27D700, 0xFF24DA00, 0xFF21DD00, 0xFF1EE000, 0xFF1BE300, 0xFF18E600, 0xFF15E900, 0xFF12EC00, 0xFF0FEF00, 0xFF0CF200, 0xFF09F500, 0xFF06F800, 0xFF03FB00, 0xFF00FE00, 0xFF03FB03, 0xFF06F806, 0xFF09F509, 0xFF0CF20C, 0xFF0FEF0F, 0xFF12EC12, 0xFF15E915, 0xFF18E618, 0xFF1BE31B, 0xFF1EE01E, 0xFF21DD21, 0xFF24DA24, 0xFF27D727, 0xFF2AD42A, 0xFF2DD12D, 0xFF30CE30, 0xFF34CA34, 0xFF37C737, 0xFF3AC43A, 0xFF3DC13D, 0xFF40BE40, 0xFF43BB43, 0xFF46B846, 0xFF49B549, 0xFF4CB24C, 0xFF4FAF4F, 0xFF52AC52, 0xFF55A955, 0xFF58A658, 0xFF5BA35B, 0xFF5EA05E, 0xFF619D61, 0xFF649A64, 0xFF689668, 0xFF6B936B, 0xFF6E906E, 0xFF718D71, 0xFF748A74, 0xFF778777, 0xFF7A847A, 0xFF7D817D, 0xFF807E80, 0xFF837B83, 0xFF867886, 0xFF897589, 0xFF8C728C, 0xFF8F6F8F, 0xFF926C92, 0xFF956995, 0xFF986698, 0xFF9C629C, 0xFF9F5F9F, 0xFFA25CA2, 0xFFA559A5, 0xFFA856A8, 0xFFAB53AB, 0xFFAE50AE, 0xFFB14DB1, 0xFFB44AB4, 0xFFB747B7, 0xFFBA44BA, 0xFFBD41BD, 0xFFC03EC0, 0xFFC33BC3, 0xFFC638C6, 0xFFC935C9, 0xFFCD31CD, 0xFFD02ED0, 0xFFD32BD3, 0xFFD628D6, 0xFFD925D9, 0xFFDC22DC, 0xFFDF1FDF, 0xFFE21CE2, 0xFFE519E5, 0xFFE816E8, 0xFFEB13EB, 0xFFEE10EE, 0xFFF10DF1, 0xFFF40AF4, 0xFFF707F7, 0xFFFA04FA, 0xFFFD01FD, 0xFFFC02FF, 0xFFF905FF, 0xFFF608FF, 0xFFF30BFF, 0xFFF00EFF, 0xFFED11FF, 0xFFEA14FF, 0xFFE717FF, 0xFFE41AFF, 0xFFE11DFF, 0xFFDE20FF, 0xFFDB23FF, 0xFFD826FF, 0xFFD529FF, 0xFFD22CFF, 0xFFCF2FFF, 0xFFCC32FF, 0xFFC836FF, 0xFFC539FF, 0xFFC23CFF, 0xFFBF3FFF, 0xFFBC42FF, 0xFFB945FF, 0xFFB648FF, 0xFFB34BFF, 0xFFB04EFF, 0xFFAD51FF, 0xFFAA54FF, 0xFFA757FF, 0xFFA45AFF, 0xFFA15DFF, 0xFF9E60FF, 0xFF9B63FF, 0xFF9767FF, 0xFF946AFF, 0xFF916DFF, 0xFF8E70FF, 0xFF8B73FF, 0xFF8876FF, 0xFF8579FF, 0xFF827CFF, 0xFF7F7FFF, 0xFF7C82FF, 0xFF7985FF, 0xFF7688FF, 0xFF738BFF, 0xFF708EFF, 0xFF6D91FF, 0xFF6A94FF, 0xFF6797FF, 0xFF639BFF, 0xFF609EFF, 0xFF5DA1FF, 0xFF5AA4FF, 0xFF57A7FF, 0xFF54AAFF, 0xFF51ADFF, 0xFF4EB0FF, 0xFF4BB3FF, 0xFF48B6FF, 0xFF45B9FF, 0xFF42BCFF, 0xFF3FBFFF, 0xFF3CC2FF, 0xFF39C5FF, 0xFF36C8FF, 0xFF33CBFF, 0xFF2FCFFF, 0xFF2CD2FF, 0xFF29D5FF, 0xFF26D8FF, 0xFF23DBFF, 0xFF20DEFF, 0xFF1DE1FF, 0xFF1AE4FF, 0xFF17E7FF, 0xFF14EAFF, 0xFF11EDFF, 0xFF0EF0FF, 0xFF0BF3FF, 0xFF08F6FF, 0xFF05F9FF, 0xFF02FCFF, 0xFF01FFFD, 0xFF04FFFA, 0xFF07FFF7, 0xFF0AFFF4, 0xFF0DFFF1, 0xFF10FFEE, 0xFF13FFEB, 0xFF16FFE8, 0xFF19FFE5, 0xFF1CFFE2, 0xFF1FFFDF, 0xFF22FFDC, 0xFF25FFD9, 0xFF28FFD6, 0xFF2BFFD3, 0xFF2EFFD0, 0xFF31FFCD, 0xFF35FFC9, 0xFF38FFC6, 0xFF3BFFC3, 0xFF3EFFC0, 0xFF41FFBD, 0xFF44FFBA, 0xFF47FFB7, 0xFF4AFFB4, 0xFF4DFFB1, 0xFF50FFAE, 0xFF53FFAB, 0xFF56FFA8, 0xFF59FFA5, 0xFF5CFFA2, 0xFF5FFF9F, 0xFF62FF9C, 0xFF65FF99, 0xFF69FF95, 0xFF6CFF92, 0xFF6FFF8F, 0xFF72FF8C, 0xFF75FF89, 0xFF78FF86, 0xFF7BFF83, 0xFF7EFF80, 0xFF81FF7D, 0xFF84FF7A, 0xFF87FF77, 0xFF8AFF74, 0xFF8DFF71, 0xFF90FF6E, 0xFF93FF6B, 0xFF96FF68, 0xFF9AFF64, 0xFF9DFF61, 0xFFA0FF5E, 0xFFA3FF5B, 0xFFA6FF58, 0xFFA9FF55, 0xFFACFF52, 0xFFAFFF4F, 0xFFB2FF4C, 0xFFB5FF49, 0xFFB8FF46, 0xFFBBFF43, 0xFFBEFF40, 0xFFC1FF3D, 0xFFC4FF3A, 0xFFC7FF37, 0xFFCAFF34, 0xFFCEFF30, 0xFFD1FF2D, 0xFFD4FF2A, 0xFFD7FF27, 0xFFDAFF24, 0xFFDDFF21, 0xFFE0FF1E, 0xFFE3FF1B, 0xFFE6FF18, 0xFFE9FF15, 0xFFECFF12, 0xFFEFFF0F, 0xFFF2FF0C, 0xFFF5FF09, 0xFFF8FF06, 0xFFFBFF03, 0xFFFEFF00, 0xFFFBFF00, 0xFFF8FF00, 0xFFF5FF00, 0xFFF2FF00, 0xFFEFFF00, 0xFFECFF00, 0xFFE9FF00, 0xFFE6FF00, 0xFFE3FF00, 0xFFE0FF00, 0xFFDDFF00, 0xFFDAFF00, 0xFFD7FF00, 0xFFD4FF00, 0xFFD1FF00, 0xFFCEFF00, 0xFFCAFF00, 0xFFC7FF00, 0xFFC4FF00, 0xFFC1FF00, 0xFFBEFF00, 0xFFBBFF00, 0xFFB8FF00, 0xFFB5FF00, 0xFFB2FF00, 0xFFAFFF00, 0xFFACFF00, 0xFFA9FF00, 0xFFA6FF00, 0xFFA3FF00, 0xFFA0FF00, 0xFF9DFF00, 0xFF9AFF00, 0xFF96FF00, 0xFF93FF00, 0xFF90FF00, 0xFF8DFF00, 0xFF8AFF00, 0xFF87FF00, 0xFF84FF00, 0xFF81FF00, 0xFF7EFF00, 0xFF7BFF00, 0xFF78FF00, 0xFF75FF00, 0xFF72FF00, 0xFF6FFF00, 0xFF6CFF00, 0xFF69FF00, 0xFF66FF00, 0xFF62FF00, 0xFF5FFF00, 0xFF5CFF00, 0xFF59FF00, 0xFF56FF00, 0xFF53FF00, 0xFF50FF00, 0xFF4DFF00, 0xFF4AFF00, 0xFF47FF00, 0xFF44FF00, 0xFF41FF00, 0xFF3EFF00, 0xFF3BFF00, 0xFF38FF00, 0xFF35FF00, 0xFF31FF00, 0xFF2EFF00, 0xFF2BFF00, 0xFF28FF00, 0xFF25FF00, 0xFF22FF00, 0xFF1FFF00, 0xFF1CFF00, 0xFF19FF00, 0xFF16FF00, 0xFF13FF00, 0xFF10FF00, 0xFF0DFF00, 0xFF0AFF00, 0xFF07FF00, 0xFF04FF00, 0xFF01FF00, 0xFF00FC02, 0xFF00F905, 0xFF00F608, 0xFF00F30B, 0xFF00F00E, 0xFF00ED11, 0xFF00EA14, 0xFF00E717, 0xFF00E41A, 0xFF00E11D, 0xFF00DE20, 0xFF00DB23, 0xFF00D826, 0xFF00D529, 0xFF00D22C, 0xFF00CF2F, 0xFF00CC32, 0xFF00C836, 0xFF00C539, 0xFF00C23C, 0xFF00BF3F, 0xFF00BC42, 0xFF00B945, 0xFF00B648, 0xFF00B34B, 0xFF00B04E, 0xFF00AD51, 0xFF00AA54, 0xFF00A757, 0xFF00A45A, 0xFF00A15D, 0xFF009E60, 0xFF009B63, 0xFF009767, 0xFF00946A, 0xFF00916D, 0xFF008E70, 0xFF008B73, 0xFF008876, 0xFF008579, 0xFF00827C, 0xFF007F7F, 0xFF007C82, 0xFF007985, 0xFF007688, 0xFF00738B, 0xFF00708E, 0xFF006D91, 0xFF006A94, 0xFF006797, 0xFF00639B, 0xFF00609E, 0xFF005DA1, 0xFF005AA4, 0xFF0057A7, 0xFF0054AA, 0xFF0051AD, 0xFF004EB0, 0xFF004BB3, 0xFF0048B6, 0xFF0045B9, 0xFF0042BC, 0xFF003FBF, 0xFF003CC2, 0xFF0039C5, 0xFF0036C8, 0xFF0033CB, 0xFF002FCF, 0xFF002CD2, 0xFF0029D5, 0xFF0026D8, 0xFF0023DB, 0xFF0020DE, 0xFF001DE1, 0xFF001AE4, 0xFF0017E7, 0xFF0014EA, 0xFF0011ED, 0xFF000EF0, 0xFF000BF3, 0xFF0008F6, 0xFF0005F9, 0xFF0002FC, 0xFF0100FF, 0xFF0400FF, 0xFF0700FF, 0xFF0A00FF, 0xFF0D00FF, 0xFF1000FF, 0xFF1300FF, 0xFF1600FF, 0xFF1900FF, 0xFF1C00FF, 0xFF1F00FF, 0xFF2200FF, 0xFF2500FF, 0xFF2800FF, 0xFF2B00FF, 0xFF2E00FF, 0xFF3100FF, 0xFF3500FF, 0xFF3800FF, 0xFF3B00FF, 0xFF3E00FF, 0xFF4100FF, 0xFF4400FF, 0xFF4700FF, 0xFF4A00FF, 0xFF4D00FF, 0xFF5000FF, 0xFF5300FF, 0xFF5600FF, 0xFF5900FF, 0xFF5C00FF, 0xFF5F00FF, 0xFF6200FF, 0xFF6500FF, 0xFF6900FF, 0xFF6C00FF, 0xFF6F00FF, 0xFF7200FF, 0xFF7500FF, 0xFF7800FF, 0xFF7B00FF, 0xFF7E00FF, 0xFF8100FF, 0xFF8400FF, 0xFF8700FF, 0xFF8A00FF, 0xFF8D00FF, 0xFF9000FF, 0xFF9300FF, 0xFF9600FF, 0xFF9A00FF, 0xFF9D00FF, 0xFFA000FF, 0xFFA300FF, 0xFFA600FF, 0xFFA900FF, 0xFFAC00FF, 0xFFAF00FF, 0xFFB200FF, 0xFFB500FF, 0xFFB800FF, 0xFFBB00FF, 0xFFBE00FF, 0xFFC100FF, 0xFFC400FF, 0xFFC700FF, 0xFFCA00FF, 0xFFCE00FF, 0xFFD100FF, 0xFFD400FF, 0xFFD700FF, 0xFFDA00FF, 0xFFDD00FF, 0xFFE000FF, 0xFFE300FF, 0xFFE600FF, 0xFFE900FF, 0xFFEC00FF, 0xFFEF00FF, 0xFFF200FF, 0xFFF500FF, 0xFFF800FF, 0xFFFB00FF, 0xFFFE00FF, 0xFFFF03FB, 0xFFFF06F8, 0xFFFF09F5, 0xFFFF0CF2, 0xFFFF0FEF, 0xFFFF12EC, 0xFFFF15E9, 0xFFFF18E6, 0xFFFF1BE3, 0xFFFF1EE0, 0xFFFF21DD, 0xFFFF24DA, 0xFFFF27D7, 0xFFFF2AD4, 0xFFFF2DD1, 0xFFFF30CE, 0xFFFF34CA, 0xFFFF37C7, 0xFFFF3AC4, 0xFFFF3DC1, 0xFFFF40BE, 0xFFFF43BB, 0xFFFF46B8, 0xFFFF49B5, 0xFFFF4CB2, 0xFFFF4FAF, 0xFFFF52AC, 0xFFFF55A9, 0xFFFF58A6, 0xFFFF5BA3, 0xFFFF5EA0, 0xFFFF619D, 0xFFFF649A, 0xFFFF6896, 0xFFFF6B93, 0xFFFF6E90, 0xFFFF718D, 0xFFFF748A, 0xFFFF7787, 0xFFFF7A84, 0xFFFF7D81, 0xFFFF807E, 0xFFFF837B, 0xFFFF8678, 0xFFFF8975, 0xFFFF8C72, 0xFFFF8F6F, 0xFFFF926C, 0xFFFF9569, 0xFFFF9866, 0xFFFF9C62, 0xFFFF9F5F, 0xFFFFA25C, 0xFFFFA559, 0xFFFFA856, 0xFFFFAB53, 0xFFFFAE50, 0xFFFFB14D, 0xFFFFB44A, 0xFFFFB747, 0xFFFFBA44, 0xFFFFBD41, 0xFFFFC03E, 0xFFFFC33B, 0xFFFFC638, 0xFFFFC935, 0xFFFFCD31, 0xFFFFD02E, 0xFFFFD32B, 0xFFFFD628, 0xFFFFD925, 0xFFFFDC22, 0xFFFFDF1F, 0xFFFFE21C, 0xFFFFE519, 0xFFFFE816, 0xFFFFEB13, 0xFFFFEE10, 0xFFFFF10D, 0xFFFFF40A, 0xFFFFF707, 0xFFFFFA04, 0xFFFFFD01, 0xFFFFFC00, 0xFFFFF900, 0xFFFFF600, 0xFFFFF300, 0xFFFFF000, 0xFFFFED00, 0xFFFFEA00, 0xFFFFE700, 0xFFFFE400, 0xFFFFE100, 0xFFFFDE00, 0xFFFFDB00, 0xFFFFD800, 0xFFFFD500, 0xFFFFD200, 0xFFFFCF00, 0xFFFFCC00, 0xFFFFC800, 0xFFFFC500, 0xFFFFC200, 0xFFFFBF00, 0xFFFFBC00, 0xFFFFB900, 0xFFFFB600, 0xFFFFB300, 0xFFFFB000, 0xFFFFAD00, 0xFFFFAA00, 0xFFFFA700, 0xFFFFA400, 0xFFFFA100, 0xFFFF9E00, 0xFFFF9B00, 0xFFFF9700, 0xFFFF9400, 0xFFFF9100, 0xFFFF8E00, 0xFFFF8B00, 0xFFFF8800, 0xFFFF8500, 0xFFFF8200, 0xFFFF7F00, 0xFFFF7C00, 0xFFFF7900, 0xFFFF7600, 0xFFFF7300, 0xFFFF7000, 0xFFFF6D00, 0xFFFF6A00, 0xFFFF6700, 0xFFFF6300, 0xFFFF6000, 0xFFFF5D00, 0xFFFF5A00, 0xFFFF5700, 0xFFFF5400, 0xFFFF5100, 0xFFFF4E00, 0xFFFF4B00, 0xFFFF4800, 0xFFFF4500, 0xFFFF4200, 0xFFFF3F00, 0xFFFF3C00, 0xFFFF3900, 0xFFFF3600, 0xFFFF3300, 0xFFFF2F00, 0xFFFF2C00, 0xFFFF2900, 0xFFFF2600, 0xFFFF2300, 0xFFFF2000, 0xFFFF1D00, 0xFFFF1A00, 0xFFFF1700, 0xFFFF1400, 0xFFFF1100, 0xFFFF0E00, 0xFFFF0B00, 0xFFFF0800, 0xFFFF0500, 0xFFFF0200, 0xFFFD0101, 0xFFFA0404, 0xFFF70707, 0xFFF40A0A, 0xFFF10D0D, 0xFFEE1010, 0xFFEB1313, 0xFFE81616, 0xFFE51919, 0xFFE21C1C, 0xFFDF1F1F, 0xFFDC2222, 0xFFD92525, 0xFFD62828, 0xFFD32B2B, 0xFFD02E2E, 0xFFCD3131, 0xFFC93535, 0xFFC63838, 0xFFC33B3B, 0xFFC03E3E, 0xFFBD4141, 0xFFBA4444, 0xFFB74747, 0xFFB44A4A, 0xFFB14D4D, 0xFFAE5050, 0xFFAB5353, 0xFFA85656, 0xFFA55959, 0xFFA25C5C, 0xFF9F5F5F, 0xFF9C6262, 0xFF996565, 0xFF956969, 0xFF926C6C, 0xFF8F6F6F, 0xFF8C7272, 0xFF897575, 0xFF867878, 0xFF837B7B, 0xFF807E7E, 0xFF7D8181, 0xFF7A8484, 0xFF778787, 0xFF748A8A, 0xFF718D8D, 0xFF6E9090, 0xFF6B9393, 0xFF689696, 0xFF649A9A, 0xFF619D9D, 0xFF5EA0A0, 0xFF5BA3A3, 0xFF58A6A6, 0xFF55A9A9, 0xFF52ACAC, 0xFF4FAFAF, 0xFF4CB2B2, 0xFF49B5B5, 0xFF46B8B8, 0xFF43BBBB, 0xFF40BEBE, 0xFF3DC1C1, 0xFF3AC4C4, 0xFF37C7C7, 0xFF34CACA, 0xFF30CECE, 0xFF2DD1D1, 0xFF2AD4D4, 0xFF27D7D7, 0xFF24DADA, 0xFF21DDDD, 0xFF1EE0E0, 0xFF1BE3E3, 0xFF18E6E6, 0xFF15E9E9, 0xFF12ECEC, 0xFF0FEFEF, 0xFF0CF2F2, 0xFF09F5F5, 0xFF06F8F8, 0xFF03FBFB, 0xFFFFFF00, 0xFFFFFF06, 0xFFFFFF0C, 0xFFFFFF12, 0xFFFFFF18, 0xFFFFFF1E, 0xFFFFFF24, 0xFFFFFF2A, 0xFFFFFF30, 0xFFFFFF37, 0xFFFFFF3D, 0xFFFFFF43, 0xFFFFFF49, 0xFFFFFF4F, 0xFFFFFF55, 0xFFFFFF5B, 0xFFFFFF61, 0xFFFFFF68, 0xFFFFFF6E, 0xFFFFFF74, 0xFFFFFF7A, 0xFFFFFF80, 0xFFFFFF86, 0xFFFFFF8C, 0xFFFFFF92, 0xFFFFFF98, 0xFFFFFF9F, 0xFFFFFFA5, 0xFFFFFFAB, 0xFFFFFFB1, 0xFFFFFFB7, 0xFFFFFFBD, 0xFFFFFFC3, 0xFFFFFFC9, 0xFFFFFFD0, 0xFFFFFFD6, 0xFFFFFFDC, 0xFFFFFFE2, 0xFFFFFFE8, 0xFFFFFFEE, 0xFFFFFFF4, 0xFFFFFFFA, 0xFFFCFCFF, 0xFFF6F6FF, 0xFFF0F0FF, 0xFFEAEAFF, 0xFFE4E4FF, 0xFFDEDEFF, 0xFFD8D8FF, 0xFFD2D2FF, 0xFFCCCCFF, 0xFFC5C5FF, 0xFFBFBFFF, 0xFFB9B9FF, 0xFFB3B3FF, 0xFFADADFF, 0xFFA7A7FF, 0xFFA1A1FF, 0xFF9B9BFF, 0xFF9494FF, 0xFF8E8EFF, 0xFF8888FF, 0xFF8282FF, 0xFF7C7CFF, 0xFF7676FF, 0xFF7070FF, 0xFF6A6AFF, 0xFF6363FF, 0xFF5D5DFF, 0xFF5757FF, 0xFF5151FF, 0xFF4B4BFF, 0xFF4545FF, 0xFF3F3FFF, 0xFF3939FF, 0xFF3333FF, 0xFF2C2CFF, 0xFF2626FF, 0xFF2020FF, 0xFF1A1AFF, 0xFF1414FF, 0xFF0E0EFF, 0xFF0808FF, 0xFF0202FF, 0xFF0404FF, 0xFF0A0AFF, 0xFF1010FF, 0xFF1616FF, 0xFF1C1CFF, 0xFF2222FF, 0xFF2828FF, 0xFF2E2EFF, 0xFF3535FF, 0xFF3B3BFF, 0xFF4141FF, 0xFF4747FF, 0xFF4D4DFF, 0xFF5353FF, 0xFF5959FF, 0xFF5F5FFF, 0xFF6565FF, 0xFF6C6CFF, 0xFF7272FF, 0xFF7878FF, 0xFF7E7EFF, 0xFF8484FF, 0xFF8A8AFF, 0xFF9090FF, 0xFF9696FF, 0xFF9D9DFF, 0xFFA3A3FF, 0xFFA9A9FF, 0xFFAFAFFF, 0xFFB5B5FF, 0xFFBBBBFF, 0xFFC1C1FF, 0xFFC7C7FF, 0xFFCECEFF, 0xFFD4D4FF, 0xFFDADAFF, 0xFFE0E0FF, 0xFFE6E6FF, 0xFFECECFF, 0xFFF2F2FF, 0xFFF8F8FF, 0xFFFEFEFF, 0xFFFFF8F8, 0xFFFFF2F2, 0xFFFFECEC, 0xFFFFE6E6, 0xFFFFE0E0, 0xFFFFDADA, 0xFFFFD4D4, 0xFFFFCECE, 0xFFFFC7C7, 0xFFFFC1C1, 0xFFFFBBBB, 0xFFFFB5B5, 0xFFFFAFAF, 0xFFFFA9A9, 0xFFFFA3A3, 0xFFFF9D9D, 0xFFFF9696, 0xFFFF9090, 0xFFFF8A8A, 0xFFFF8484, 0xFFFF7E7E, 0xFFFF7878, 0xFFFF7272, 0xFFFF6C6C, 0xFFFF6666, 0xFFFF5F5F, 0xFFFF5959, 0xFFFF5353, 0xFFFF4D4D, 0xFFFF4747, 0xFFFF4141, 0xFFFF3B3B, 0xFFFF3535, 0xFFFF2E2E, 0xFFFF2828, 0xFFFF2222, 0xFFFF1C1C, 0xFFFF1616, 0xFFFF1010, 0xFFFF0A0A, 0xFFFF0404, 0xFFFF0202, 0xFFFF0808, 0xFFFF0E0E, 0xFFFF1414, 0xFFFF1A1A, 0xFFFF2020, 0xFFFF2626, 0xFFFF2C2C, 0xFFFF3232, 0xFFFF3939, 0xFFFF3F3F, 0xFFFF4545, 0xFFFF4B4B, 0xFFFF5151, 0xFFFF5757, 0xFFFF5D5D, 0xFFFF6363, 0xFFFF6A6A, 0xFFFF7070, 0xFFFF7676, 0xFFFF7C7C, 0xFFFF8282, 0xFFFF8888, 0xFFFF8E8E, 0xFFFF9494, 0xFFFF9B9B, 0xFFFFA1A1, 0xFFFFA7A7, 0xFFFFADAD, 0xFFFFB3B3, 0xFFFFB9B9, 0xFFFFBFBF, 0xFFFFC5C5, 0xFFFFCBCB, 0xFFFFD2D2, 0xFFFFD8D8, 0xFFFFDEDE, 0xFFFFE4E4, 0xFFFFEAEA, 0xFFFFF0F0, 0xFFFFF6F6, 0xFFFFFCFC, 0xFFFAFFFA, 0xFFF4FFF4, 0xFFEEFFEE, 0xFFE8FFE8, 0xFFE2FFE2, 0xFFDCFFDC, 0xFFD6FFD6, 0xFFD0FFD0, 0xFFC9FFC9, 0xFFC3FFC3, 0xFFBDFFBD, 0xFFB7FFB7, 0xFFB1FFB1, 0xFFABFFAB, 0xFFA5FFA5, 0xFF9FFF9F, 0xFF99FF99, 0xFF92FF92, 0xFF8CFF8C, 0xFF86FF86, 0xFF80FF80, 0xFF7AFF7A, 0xFF74FF74, 0xFF6EFF6E, 0xFF68FF68, 0xFF61FF61, 0xFF5BFF5B, 0xFF55FF55, 0xFF4FFF4F, 0xFF49FF49, 0xFF43FF43, 0xFF3DFF3D, 0xFF37FF37, 0xFF30FF30, 0xFF2AFF2A, 0xFF24FF24, 0xFF1EFF1E, 0xFF18FF18, 0xFF12FF12, 0xFF0CFF0C, 0xFF06FF06, 0xFF00FF00, 0xFF06FF06, 0xFF0CFF0C, 0xFF12FF12, 0xFF18FF18, 0xFF1EFF1E, 0xFF24FF24, 0xFF2AFF2A, 0xFF30FF30, 0xFF37FF37, 0xFF3DFF3D, 0xFF43FF43, 0xFF49FF49, 0xFF4FFF4F, 0xFF55FF55, 0xFF5BFF5B, 0xFF61FF61, 0xFF68FF68, 0xFF6EFF6E, 0xFF74FF74, 0xFF7AFF7A, 0xFF80FF80, 0xFF86FF86, 0xFF8CFF8C, 0xFF92FF92, 0xFF98FF98, 0xFF9FFF9F, 0xFFA5FFA5, 0xFFABFFAB, 0xFFB1FFB1, 0xFFB7FFB7, 0xFFBDFFBD, 0xFFC3FFC3, 0xFFC9FFC9, 0xFFD0FFD0, 0xFFD6FFD6, 0xFFDCFFDC, 0xFFE2FFE2, 0xFFE8FFE8, 0xFFEEFFEE, 0xFFF4FFF4, 0xFFFAFFFA, 0xFFFFFCFF, 0xFFFFF6FF, 0xFFFFF0FF, 0xFFFFEAFF, 0xFFFFE4FF, 0xFFFFDEFF, 0xFFFFD8FF, 0xFFFFD2FF, 0xFFFFCCFF, 0xFFFFC5FF, 0xFFFFBFFF, 0xFFFFB9FF, 0xFFFFB3FF, 0xFFFFADFF, 0xFFFFA7FF, 0xFFFFA1FF, 0xFFFF9BFF, 0xFFFF94FF, 0xFFFF8EFF, 0xFFFF88FF, 0xFFFF82FF, 0xFFFF7CFF, 0xFFFF76FF, 0xFFFF70FF, 0xFFFF6AFF, 0xFFFF63FF, 0xFFFF5DFF, 0xFFFF57FF, 0xFFFF51FF, 0xFFFF4BFF, 0xFFFF45FF, 0xFFFF3FFF, 0xFFFF39FF, 0xFFFF33FF, 0xFFFF2CFF, 0xFFFF26FF, 0xFFFF20FF, 0xFFFF1AFF, 0xFFFF14FF, 0xFFFF0EFF, 0xFFFF08FF, 0xFFFF02FF, 0xFFFF04FF, 0xFFFF0AFF, 0xFFFF10FF, 0xFFFF16FF, 0xFFFF1CFF, 0xFFFF22FF, 0xFFFF28FF, 0xFFFF2EFF, 0xFFFF35FF, 0xFFFF3BFF, 0xFFFF41FF, 0xFFFF47FF, 0xFFFF4DFF, 0xFFFF53FF, 0xFFFF59FF, 0xFFFF5FFF, 0xFFFF65FF, 0xFFFF6CFF, 0xFFFF72FF, 0xFFFF78FF, 0xFFFF7EFF, 0xFFFF84FF, 0xFFFF8AFF, 0xFFFF90FF, 0xFFFF96FF, 0xFFFF9DFF, 0xFFFFA3FF, 0xFFFFA9FF, 0xFFFFAFFF, 0xFFFFB5FF, 0xFFFFBBFF, 0xFFFFC1FF, 0xFFFFC7FF, 0xFFFFCEFF, 0xFFFFD4FF, 0xFFFFDAFF, 0xFFFFE0FF, 0xFFFFE6FF, 0xFFFFECFF, 0xFFFFF2FF, 0xFFFFF8FF, 0xFFFFFEFF, 0xFFF8FFFF, 0xFFF2FFFF, 0xFFECFFFF, 0xFFE6FFFF, 0xFFE0FFFF, 0xFFDAFFFF, 0xFFD4FFFF, 0xFFCEFFFF, 0xFFC7FFFF, 0xFFC1FFFF, 0xFFBBFFFF, 0xFFB5FFFF, 0xFFAFFFFF, 0xFFA9FFFF, 0xFFA3FFFF, 0xFF9DFFFF, 0xFF96FFFF, 0xFF90FFFF, 0xFF8AFFFF, 0xFF84FFFF, 0xFF7EFFFF, 0xFF78FFFF, 0xFF72FFFF, 0xFF6CFFFF, 0xFF66FFFF, 0xFF5FFFFF, 0xFF59FFFF, 0xFF53FFFF, 0xFF4DFFFF, 0xFF47FFFF, 0xFF41FFFF, 0xFF3BFFFF, 0xFF35FFFF, 0xFF2EFFFF, 0xFF28FFFF, 0xFF22FFFF, 0xFF1CFFFF, 0xFF16FFFF, 0xFF10FFFF, 0xFF0AFFFF, 0xFF04FFFF, 0xFF02FFFF, 0xFF08FFFF, 0xFF0EFFFF, 0xFF14FFFF, 0xFF1AFFFF, 0xFF20FFFF, 0xFF26FFFF, 0xFF2CFFFF, 0xFF32FFFF, 0xFF39FFFF, 0xFF3FFFFF, 0xFF45FFFF, 0xFF4BFFFF, 0xFF51FFFF, 0xFF57FFFF, 0xFF5DFFFF, 0xFF63FFFF, 0xFF6AFFFF, 0xFF70FFFF, 0xFF76FFFF, 0xFF7CFFFF, 0xFF82FFFF, 0xFF88FFFF, 0xFF8EFFFF, 0xFF94FFFF, 0xFF9BFFFF, 0xFFA1FFFF, 0xFFA7FFFF, 0xFFADFFFF, 0xFFB3FFFF, 0xFFB9FFFF, 0xFFBFFFFF, 0xFFC5FFFF, 0xFFCBFFFF, 0xFFD2FFFF, 0xFFD8FFFF, 0xFFDEFFFF, 0xFFE4FFFF, 0xFFEAFFFF, 0xFFF0FFFF, 0xFFF6FFFF, 0xFFFCFFFF, 0xFFFFFFFA, 0xFFFFFFF4, 0xFFFFFFEE, 0xFFFFFFE8, 0xFFFFFFE2, 0xFFFFFFDC, 0xFFFFFFD6, 0xFFFFFFD0, 0xFFFFFFC9, 0xFFFFFFC3, 0xFFFFFFBD, 0xFFFFFFB7, 0xFFFFFFB1, 0xFFFFFFAB, 0xFFFFFFA5, 0xFFFFFF9F, 0xFFFFFF99, 0xFFFFFF92, 0xFFFFFF8C, 0xFFFFFF86, 0xFFFFFF80, 0xFFFFFF7A, 0xFFFFFF74, 0xFFFFFF6E, 0xFFFFFF68, 0xFFFFFF61, 0xFFFFFF5B, 0xFFFFFF55, 0xFFFFFF4F, 0xFFFFFF49, 0xFFFFFF43, 0xFFFFFF3D, 0xFFFFFF37, 0xFFFFFF30, 0xFFFFFF2A, 0xFFFFFF24, 0xFFFFFF1E, 0xFFFFFF18, 0xFFFFFF12, 0xFFFFFF0C, 0xFFFFFF06, 0xFFFFFF00, 0xFFFFFF06, 0xFFFFFF0C, 0xFFFFFF12, 0xFFFFFF18, 0xFFFFFF1E, 0xFFFFFF24, 0xFFFFFF2A, 0xFFFFFF30, 0xFFFFFF37, 0xFFFFFF3D, 0xFFFFFF43, 0xFFFFFF49, 0xFFFFFF4F, 0xFFFFFF55, 0xFFFFFF5B, 0xFFFFFF61, 0xFFFFFF68, 0xFFFFFF6E, 0xFFFFFF74, 0xFFFFFF7A, 0xFFFFFF80, 0xFFFFFF86, 0xFFFFFF8C, 0xFFFFFF92, 0xFFFFFF98, 0xFFFFFF9F, 0xFFFFFFA5, 0xFFFFFFAB, 0xFFFFFFB1, 0xFFFFFFB7, 0xFFFFFFBD, 0xFFFFFFC3, 0xFFFFFFC9, 0xFFFFFFD0, 0xFFFFFFD6, 0xFFFFFFDC, 0xFFFFFFE2, 0xFFFFFFE8, 0xFFFFFFEE, 0xFFFFFFF4, 0xFFFFFFFA, 0xFFFCFFFC, 0xFFF6FFF6, 0xFFF0FFF0, 0xFFEAFFEA, 0xFFE4FFE4, 0xFFDEFFDE, 0xFFD8FFD8, 0xFFD2FFD2, 0xFFCCFFCC, 0xFFC5FFC5, 0xFFBFFFBF, 0xFFB9FFB9, 0xFFB3FFB3, 0xFFADFFAD, 0xFFA7FFA7, 0xFFA1FFA1, 0xFF9BFF9B, 0xFF94FF94, 0xFF8EFF8E, 0xFF88FF88, 0xFF82FF82, 0xFF7CFF7C, 0xFF76FF76, 0xFF70FF70, 0xFF6AFF6A, 0xFF63FF63, 0xFF5DFF5D, 0xFF57FF57, 0xFF51FF51, 0xFF4BFF4B, 0xFF45FF45, 0xFF3FFF3F, 0xFF39FF39, 0xFF33FF33, 0xFF2CFF2C, 0xFF26FF26, 0xFF20FF20, 0xFF1AFF1A, 0xFF14FF14, 0xFF0EFF0E, 0xFF08FF08, 0xFF02FF02, 0xFF04FF04, 0xFF0AFF0A, 0xFF10FF10, 0xFF16FF16, 0xFF1CFF1C, 0xFF22FF22, 0xFF28FF28, 0xFF2EFF2E, 0xFF35FF35, 0xFF3BFF3B, 0xFF41FF41, 0xFF47FF47, 0xFF4DFF4D, 0xFF53FF53, 0xFF59FF59, 0xFF5FFF5F, 0xFF65FF65, 0xFF6CFF6C, 0xFF72FF72, 0xFF78FF78, 0xFF7EFF7E, 0xFF84FF84, 0xFF8AFF8A, 0xFF90FF90, 0xFF96FF96, 0xFF9DFF9D, 0xFFA3FFA3, 0xFFA9FFA9, 0xFFAFFFAF, 0xFFB5FFB5, 0xFFBBFFBB, 0xFFC1FFC1, 0xFFC7FFC7, 0xFFCEFFCE, 0xFFD4FFD4, 0xFFDAFFDA, 0xFFE0FFE0, 0xFFE6FFE6, 0xFFECFFEC, 0xFFF2FFF2, 0xFFF8FFF8, 0xFFFEFFFE, 0xFFF8F8FF, 0xFFF2F2FF, 0xFFECECFF, 0xFFE6E6FF, 0xFFE0E0FF, 0xFFDADAFF, 0xFFD4D4FF, 0xFFCECEFF, 0xFFC7C7FF, 0xFFC1C1FF, 0xFFBBBBFF, 0xFFB5B5FF, 0xFFAFAFFF, 0xFFA9A9FF, 0xFFA3A3FF, 0xFF9D9DFF, 0xFF9696FF, 0xFF9090FF, 0xFF8A8AFF, 0xFF8484FF, 0xFF7E7EFF, 0xFF7878FF, 0xFF7272FF, 0xFF6C6CFF, 0xFF6666FF, 0xFF5F5FFF, 0xFF5959FF, 0xFF5353FF, 0xFF4D4DFF, 0xFF4747FF, 0xFF4141FF, 0xFF3B3BFF, 0xFF3535FF, 0xFF2E2EFF, 0xFF2828FF, 0xFF2222FF, 0xFF1C1CFF, 0xFF1616FF, 0xFF1010FF, 0xFF0A0AFF, 0xFF0404FF, 0xFF0202FF, 0xFF0808FF, 0xFF0E0EFF, 0xFF1414FF, 0xFF1A1AFF, 0xFF2020FF, 0xFF2626FF, 0xFF2C2CFF, 0xFF3232FF, 0xFF3939FF, 0xFF3F3FFF, 0xFF4545FF, 0xFF4B4BFF, 0xFF5151FF, 0xFF5757FF, 0xFF5D5DFF, 0xFF6363FF, 0xFF6A6AFF, 0xFF7070FF, 0xFF7676FF, 0xFF7C7CFF, 0xFF8282FF, 0xFF8888FF, 0xFF8E8EFF, 0xFF9494FF, 0xFF9B9BFF, 0xFFA1A1FF, 0xFFA7A7FF, 0xFFADADFF, 0xFFB3B3FF, 0xFFB9B9FF, 0xFFBFBFFF, 0xFFC5C5FF, 0xFFCBCBFF, 0xFFD2D2FF, 0xFFD8D8FF, 0xFFDEDEFF, 0xFFE4E4FF, 0xFFEAEAFF, 0xFFF0F0FF, 0xFFF6F6FF, 0xFFFCFCFF, 0xFFFFFAFF, 0xFFFFF4FF, 0xFFFFEEFF, 0xFFFFE8FF, 0xFFFFE2FF, 0xFFFFDCFF, 0xFFFFD6FF, 0xFFFFD0FF, 0xFFFFC9FF, 0xFFFFC3FF, 0xFFFFBDFF, 0xFFFFB7FF, 0xFFFFB1FF, 0xFFFFABFF, 0xFFFFA5FF, 0xFFFF9FFF, 0xFFFF99FF, 0xFFFF92FF, 0xFFFF8CFF, 0xFFFF86FF, 0xFFFF80FF, 0xFFFF7AFF, 0xFFFF74FF, 0xFFFF6EFF, 0xFFFF68FF, 0xFFFF61FF, 0xFFFF5BFF, 0xFFFF55FF, 0xFFFF4FFF, 0xFFFF49FF, 0xFFFF43FF, 0xFFFF3DFF, 0xFFFF37FF, 0xFFFF30FF, 0xFFFF2AFF, 0xFFFF24FF, 0xFFFF1EFF, 0xFFFF18FF, 0xFFFF12FF, 0xFFFF0CFF, 0xFFFF06FF, 0xFFFF00FF, 0xFFFF06FF, 0xFFFF0CFF, 0xFFFF12FF, 0xFFFF18FF, 0xFFFF1EFF, 0xFFFF24FF, 0xFFFF2AFF, 0xFFFF30FF, 0xFFFF37FF, 0xFFFF3DFF, 0xFFFF43FF, 0xFFFF49FF, 0xFFFF4FFF, 0xFFFF55FF, 0xFFFF5BFF, 0xFFFF61FF, 0xFFFF68FF, 0xFFFF6EFF, 0xFFFF74FF, 0xFFFF7AFF, 0xFFFF80FF, 0xFFFF86FF, 0xFFFF8CFF, 0xFFFF92FF, 0xFFFF98FF, 0xFFFF9FFF, 0xFFFFA5FF, 0xFFFFABFF, 0xFFFFB1FF, 0xFFFFB7FF, 0xFFFFBDFF, 0xFFFFC3FF, 0xFFFFC9FF, 0xFFFFD0FF, 0xFFFFD6FF, 0xFFFFDCFF, 0xFFFFE2FF, 0xFFFFE8FF, 0xFFFFEEFF, 0xFFFFF4FF, 0xFFFFFAFF, 0xFFFFFFFC, 0xFFFFFFF6, 0xFFFFFFF0, 0xFFFFFFEA, 0xFFFFFFE4, 0xFFFFFFDE, 0xFFFFFFD8, 0xFFFFFFD2, 0xFFFFFFCC, 0xFFFFFFC5, 0xFFFFFFBF, 0xFFFFFFB9, 0xFFFFFFB3, 0xFFFFFFAD, 0xFFFFFFA7, 0xFFFFFFA1, 0xFFFFFF9B, 0xFFFFFF94, 0xFFFFFF8E, 0xFFFFFF88, 0xFFFFFF82, 0xFFFFFF7C, 0xFFFFFF76, 0xFFFFFF70, 0xFFFFFF6A, 0xFFFFFF63, 0xFFFFFF5D, 0xFFFFFF57, 0xFFFFFF51, 0xFFFFFF4B, 0xFFFFFF45, 0xFFFFFF3F, 0xFFFFFF39, 0xFFFFFF33, 0xFFFFFF2C, 0xFFFFFF26, 0xFFFFFF20, 0xFFFFFF1A, 0xFFFFFF14, 0xFFFFFF0E, 0xFFFFFF08, 0xFFFFFF02, 0xFFFFFF04, 0xFFFFFF0A, 0xFFFFFF10, 0xFFFFFF16, 0xFFFFFF1C, 0xFFFFFF22, 0xFFFFFF28, 0xFFFFFF2E, 0xFFFFFF35, 0xFFFFFF3B, 0xFFFFFF41, 0xFFFFFF47, 0xFFFFFF4D, 0xFFFFFF53, 0xFFFFFF59, 0xFFFFFF5F, 0xFFFFFF65, 0xFFFFFF6C, 0xFFFFFF72, 0xFFFFFF78, 0xFFFFFF7E, 0xFFFFFF84, 0xFFFFFF8A, 0xFFFFFF90, 0xFFFFFF96, 0xFFFFFF9D, 0xFFFFFFA3, 0xFFFFFFA9, 0xFFFFFFAF, 0xFFFFFFB5, 0xFFFFFFBB, 0xFFFFFFC1, 0xFFFFFFC7, 0xFFFFFFCE, 0xFFFFFFD4, 0xFFFFFFDA, 0xFFFFFFE0, 0xFFFFFFE6, 0xFFFFFFEC, 0xFFFFFFF2, 0xFFFFFFF8, 0xFFFFFFFE, 0xFFFFF8F8, 0xFFFFF2F2, 0xFFFFECEC, 0xFFFFE6E6, 0xFFFFE0E0, 0xFFFFDADA, 0xFFFFD4D4, 0xFFFFCECE, 0xFFFFC7C7, 0xFFFFC1C1, 0xFFFFBBBB, 0xFFFFB5B5, 0xFFFFAFAF, 0xFFFFA9A9, 0xFFFFA3A3, 0xFFFF9D9D, 0xFFFF9696, 0xFFFF9090, 0xFFFF8A8A, 0xFFFF8484, 0xFFFF7E7E, 0xFFFF7878, 0xFFFF7272, 0xFFFF6C6C, 0xFFFF6666, 0xFFFF5F5F, 0xFFFF5959, 0xFFFF5353, 0xFFFF4D4D, 0xFFFF4747, 0xFFFF4141, 0xFFFF3B3B, 0xFFFF3535, 0xFFFF2E2E, 0xFFFF2828, 0xFFFF2222, 0xFFFF1C1C, 0xFFFF1616, 0xFFFF1010, 0xFFFF0A0A, 0xFFFF0404, 0xFFFF0202, 0xFFFF0808, 0xFFFF0E0E, 0xFFFF1414, 0xFFFF1A1A, 0xFFFF2020, 0xFFFF2626, 0xFFFF2C2C, 0xFFFF3232, 0xFFFF3939, 0xFFFF3F3F, 0xFFFF4545, 0xFFFF4B4B, 0xFFFF5151, 0xFFFF5757, 0xFFFF5D5D, 0xFFFF6363, 0xFFFF6A6A, 0xFFFF7070, 0xFFFF7676, 0xFFFF7C7C, 0xFFFF8282, 0xFFFF8888, 0xFFFF8E8E, 0xFFFF9494, 0xFFFF9B9B, 0xFFFFA1A1, 0xFFFFA7A7, 0xFFFFADAD, 0xFFFFB3B3, 0xFFFFB9B9, 0xFFFFBFBF, 0xFFFFC5C5, 0xFFFFCBCB, 0xFFFFD2D2, 0xFFFFD8D8, 0xFFFFDEDE, 0xFFFFE4E4, 0xFFFFEAEA, 0xFFFFF0F0, 0xFFFFF6F6, 0xFFFFFCFC, 0xFFFAFFFF, 0xFFF4FFFF, 0xFFEEFFFF, 0xFFE8FFFF, 0xFFE2FFFF, 0xFFDCFFFF, 0xFFD6FFFF, 0xFFD0FFFF, 0xFFC9FFFF, 0xFFC3FFFF, 0xFFBDFFFF, 0xFFB7FFFF, 0xFFB1FFFF, 0xFFABFFFF, 0xFFA5FFFF, 0xFF9FFFFF, 0xFF99FFFF, 0xFF92FFFF, 0xFF8CFFFF, 0xFF86FFFF, 0xFF80FFFF, 0xFF7AFFFF, 0xFF74FFFF, 0xFF6EFFFF, 0xFF68FFFF, 0xFF61FFFF, 0xFF5BFFFF, 0xFF55FFFF, 0xFF4FFFFF, 0xFF49FFFF, 0xFF43FFFF, 0xFF3DFFFF, 0xFF37FFFF, 0xFF30FFFF, 0xFF2AFFFF, 0xFF24FFFF, 0xFF1EFFFF, 0xFF18FFFF, 0xFF12FFFF, 0xFF0CFFFF, 0xFF06FFFF, 0xFF191999, 0xFF000000, 0xFF020202, 0xFF050505, 0xFF070707, 0xFF0A0A0A, 0xFF0C0C0C, 0xFF0F0F0F, 0xFF121212, 0xFF141414, 0xFF171717, 0xFF191919, 0xFF1C1C1C, 0xFF1E1E1E, 0xFF212121, 0xFF242424, 0xFF262626, 0xFF292929, 0xFF2B2B2B, 0xFF2E2E2E, 0xFF303030, 0xFF333333, 0xFF363636, 0xFF383838, 0xFF3B3B3B, 0xFF3D3D3D, 0xFF404040, 0xFF424242, 0xFF454545, 0xFF484848, 0xFF4A4A4A, 0xFF4D4D4D, 0xFF4F4F4F, 0xFF525252, 0xFF555555, 0xFF575757, 0xFF5A5A5A, 0xFF5C5C5C, 0xFF5F5F5F, 0xFF616161, 0xFF646464, 0xFF676767, 0xFF696969, 0xFF6C6C6C, 0xFF6E6E6E, 0xFF717171, 0xFF737373, 0xFF767676, 0xFF797979, 0xFF7B7B7B, 0xFF7E7E7E, 0xFF808080, 0xFF838383, 0xFF858585, 0xFF888888, 0xFF8B8B8B, 0xFF8D8D8D, 0xFF909090, 0xFF929292, 0xFF959595, 0xFF979797, 0xFF9A9A9A, 0xFF9D9D9D, 0xFF9F9F9F, 0xFFA2A2A2, 0xFFA4A4A4, 0xFFA7A7A7, 0xFFAAAAAA, 0xFFACACAC, 0xFFAFAFAF, 0xFFB1B1B1, 0xFFB4B4B4, 0xFFB6B6B6, 0xFFB9B9B9, 0xFFBCBCBC, 0xFFBEBEBE, 0xFFC1C1C1, 0xFFC3C3C3, 0xFFC6C6C6, 0xFFC8C8C8, 0xFFCBCBCB, 0xFFCECECE, 0xFFD0D0D0, 0xFFD3D3D3, 0xFFD5D5D5, 0xFFD8D8D8, 0xFFDADADA, 0xFFDDDDDD, 0xFFE0E0E0, 0xFFE2E2E2, 0xFFE5E5E5, 0xFFE7E7E7, 0xFFEAEAEA, 0xFFECECEC, 0xFFEFEFEF, 0xFFF2F2F2, 0xFFF4F4F4, 0xFFF7F7F7, 0xFFF9F9F9, 0xFFFCFCFC, 0xFFFFFFFF, 0xFFFF00FF, 0xFFFD00FF, 0xFFFC00FF, 0xFFFA00FF, 0xFFF900FF, 0xFFF700FF, 0xFFF600FF, 0xFFF500FF, 0xFFF300FF, 0xFFF200FF, 0xFFF000FF, 0xFFEF00FF, 0xFFED00FF, 0xFFEC00FF, 0xFFEB00FF, 0xFFE900FF, 0xFFE800FF, 0xFFE600FF, 0xFFE500FF, 0xFFE300FF, 0xFFE200FF, 0xFFE100FF, 0xFFDF00FF, 0xFFDE00FF, 0xFFDC00FF, 0xFFDB00FF, 0xFFD900FF, 0xFFD800FF, 0xFFD700FF, 0xFFD500FF, 0xFFD400FF, 0xFFD200FF, 0xFFD100FF, 0xFFCF00FF, 0xFFCE00FF, 0xFFCD00FF, 0xFFCB00FF, 0xFFC900FF, 0xFFC700FF, 0xFFC400FF, 0xFFC200FF, 0xFFC000FF, 0xFFBE00FF, 0xFFBC00FF, 0xFFBA00FF, 0xFFB800FF, 0xFFB500FF, 0xFFB300FF, 0xFFB100FF, 0xFFAF00FF, 0xFFAD00FF, 0xFFAB00FF, 0xFFA900FF, 0xFFA600FF, 0xFFA400FF, 0xFFA200FF, 0xFFA000FF, 0xFF9E00FF, 0xFF9C00FF, 0xFF9A00FF, 0xFF9700FF, 0xFF9500FF, 0xFF9300FF, 0xFF9100FF, 0xFF8F00FF, 0xFF8D00FF, 0xFF8B00FF, 0xFF8800FF, 0xFF8600FF, 0xFF8400FF, 0xFF8200FF, 0xFF8000FF, 0xFF7D00FF, 0xFF7900FF, 0xFF7600FF, 0xFF7200FF, 0xFF6F00FF, 0xFF6B00FF, 0xFF6800FF, 0xFF6400FF, 0xFF6000FF, 0xFF5D00FF, 0xFF5900FF, 0xFF5600FF, 0xFF5200FF, 0xFF4F00FF, 0xFF4B00FF, 0xFF4700FF, 0xFF4400FF, 0xFF4000FF, 0xFF3D00FF, 0xFF3900FF, 0xFF3600FF, 0xFF3200FF, 0xFF2E00FF, 0xFF2B00FF, 0xFF2700FF, 0xFF2400FF, 0xFF2000FF, 0xFF1D00FF, 0xFF1900FF, 0xFF1500FF, 0xFF1200FF, 0xFF0E00FF, 0xFF0B00FF, 0xFF0700FF, 0xFF0400FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0001FF, 0xFF0003FF, 0xFF0004FF, 0xFF0005FF, 0xFF0007FF, 0xFF0008FF, 0xFF000AFF, 0xFF000BFF, 0xFF000DFF, 0xFF000EFF, 0xFF000FFF, 0xFF0011FF, 0xFF0012FF, 0xFF0014FF, 0xFF0015FF, 0xFF0017FF, 0xFF0018FF, 0xFF0019FF, 0xFF001BFF, 0xFF001CFF, 0xFF001EFF, 0xFF001FFF, 0xFF0021FF, 0xFF0022FF, 0xFF0023FF, 0xFF0025FF, 0xFF0026FF, 0xFF0028FF, 0xFF0029FF, 0xFF002BFF, 0xFF002CFF, 0xFF002DFF, 0xFF002FFF, 0xFF0030FF, 0xFF0032FF, 0xFF0033FF, 0xFF0036FF, 0xFF0038FF, 0xFF003AFF, 0xFF003CFF, 0xFF003EFF, 0xFF0040FF, 0xFF0042FF, 0xFF0045FF, 0xFF0047FF, 0xFF0049FF, 0xFF004BFF, 0xFF004DFF, 0xFF004FFF, 0xFF0051FF, 0xFF0054FF, 0xFF0056FF, 0xFF0058FF, 0xFF005AFF, 0xFF005CFF, 0xFF005EFF, 0xFF0060FF, 0xFF0063FF, 0xFF0065FF, 0xFF0067FF, 0xFF0069FF, 0xFF006BFF, 0xFF006DFF, 0xFF006FFF, 0xFF0072FF, 0xFF0074FF, 0xFF0076FF, 0xFF0078FF, 0xFF007AFF, 0xFF007CFF, 0xFF007EFF, 0xFF0081FF, 0xFF0083FF, 0xFF0085FF, 0xFF0087FF, 0xFF0089FF, 0xFF008BFF, 0xFF008DFF, 0xFF0090FF, 0xFF0092FF, 0xFF0094FF, 0xFF0096FF, 0xFF0098FF, 0xFF009AFF, 0xFF009CFF, 0xFF009FFF, 0xFF00A1FF, 0xFF00A3FF, 0xFF00A5FF, 0xFF00A7FF, 0xFF00A9FF, 0xFF00ABFF, 0xFF00AEFF, 0xFF00B0FF, 0xFF00B2FF, 0xFF00B4FF, 0xFF00B6FF, 0xFF00B8FF, 0xFF00BAFF, 0xFF00BDFF, 0xFF00BFFF, 0xFF00C1FF, 0xFF00C3FF, 0xFF00C5FF, 0xFF00C7FF, 0xFF00C9FF, 0xFF00CBFF, 0xFF00CDFF, 0xFF00CEFF, 0xFF00D0FF, 0xFF00D1FF, 0xFF00D3FF, 0xFF00D4FF, 0xFF00D5FF, 0xFF00D7FF, 0xFF00D8FF, 0xFF00DAFF, 0xFF00DBFF, 0xFF00DDFF, 0xFF00DEFF, 0xFF00DFFF, 0xFF00E1FF, 0xFF00E2FF, 0xFF00E4FF, 0xFF00E5FF, 0xFF00E7FF, 0xFF00E8FF, 0xFF00E9FF, 0xFF00EBFF, 0xFF00ECFF, 0xFF00EEFF, 0xFF00EFFF, 0xFF00F1FF, 0xFF00F2FF, 0xFF00F3FF, 0xFF00F5FF, 0xFF00F6FF, 0xFF00F8FF, 0xFF00F9FF, 0xFF00FBFF, 0xFF00FCFF, 0xFF00FDFF, 0xFF00FFFE, 0xFF00FFFD, 0xFF00FFFB, 0xFF00FFFA, 0xFF00FFF8, 0xFF00FFF7, 0xFF00FFF6, 0xFF00FFF4, 0xFF00FFF3, 0xFF00FFF1, 0xFF00FFF0, 0xFF00FFEE, 0xFF00FFED, 0xFF00FFEC, 0xFF00FFEA, 0xFF00FFE9, 0xFF00FFE7, 0xFF00FFE6, 0xFF00FFE4, 0xFF00FFE3, 0xFF00FFE2, 0xFF00FFE0, 0xFF00FFDF, 0xFF00FFDD, 0xFF00FFDC, 0xFF00FFDA, 0xFF00FFD9, 0xFF00FFD8, 0xFF00FFD6, 0xFF00FFD5, 0xFF00FFD3, 0xFF00FFD2, 0xFF00FFD0, 0xFF00FFCF, 0xFF00FFCE, 0xFF00FFCC, 0xFF00FFCA, 0xFF00FFC8, 0xFF00FFC6, 0xFF00FFC4, 0xFF00FFC2, 0xFF00FFC0, 0xFF00FFBD, 0xFF00FFBB, 0xFF00FFB9, 0xFF00FFB7, 0xFF00FFB5, 0xFF00FFB3, 0xFF00FFB1, 0xFF00FFAE, 0xFF00FFAC, 0xFF00FFAA, 0xFF00FFA8, 0xFF00FFA6, 0xFF00FFA4, 0xFF00FFA2, 0xFF00FF9F, 0xFF00FF9D, 0xFF00FF9B, 0xFF00FF99, 0xFF00FF97, 0xFF00FF95, 0xFF00FF93, 0xFF00FF90, 0xFF00FF8E, 0xFF00FF8C, 0xFF00FF8A, 0xFF00FF88, 0xFF00FF86, 0xFF00FF84, 0xFF00FF81, 0xFF00FF7F, 0xFF00FF7D, 0xFF00FF7B, 0xFF00FF79, 0xFF00FF77, 0xFF00FF75, 0xFF00FF72, 0xFF00FF70, 0xFF00FF6E, 0xFF00FF6C, 0xFF00FF6A, 0xFF00FF68, 0xFF00FF66, 0xFF00FF63, 0xFF00FF61, 0xFF00FF5F, 0xFF00FF5D, 0xFF00FF5B, 0xFF00FF59, 0xFF00FF57, 0xFF00FF54, 0xFF00FF52, 0xFF00FF50, 0xFF00FF4E, 0xFF00FF4C, 0xFF00FF4A, 0xFF00FF48, 0xFF00FF45, 0xFF00FF43, 0xFF00FF41, 0xFF00FF3F, 0xFF00FF3D, 0xFF00FF3B, 0xFF00FF39, 0xFF00FF36, 0xFF00FF34, 0xFF00FF32, 0xFF00FF31, 0xFF00FF2F, 0xFF00FF2E, 0xFF00FF2D, 0xFF00FF2B, 0xFF00FF2A, 0xFF00FF28, 0xFF00FF27, 0xFF00FF25, 0xFF00FF24, 0xFF00FF23, 0xFF00FF21, 0xFF00FF20, 0xFF00FF1E, 0xFF00FF1D, 0xFF00FF1B, 0xFF00FF1A, 0xFF00FF19, 0xFF00FF17, 0xFF00FF16, 0xFF00FF14, 0xFF00FF13, 0xFF00FF11, 0xFF00FF10, 0xFF00FF0F, 0xFF00FF0D, 0xFF00FF0C, 0xFF00FF0A, 0xFF00FF09, 0xFF00FF07, 0xFF00FF06, 0xFF00FF05, 0xFF00FF03, 0xFF00FF02, 0xFF00FF00, 0xFF00FF00, 0xFF02FF00, 0xFF03FF00, 0xFF04FF00, 0xFF06FF00, 0xFF07FF00, 0xFF09FF00, 0xFF0AFF00, 0xFF0CFF00, 0xFF0DFF00, 0xFF0EFF00, 0xFF10FF00, 0xFF11FF00, 0xFF13FF00, 0xFF14FF00, 0xFF16FF00, 0xFF17FF00, 0xFF18FF00, 0xFF1AFF00, 0xFF1BFF00, 0xFF1DFF00, 0xFF1EFF00, 0xFF20FF00, 0xFF21FF00, 0xFF22FF00, 0xFF24FF00, 0xFF25FF00, 0xFF27FF00, 0xFF28FF00, 0xFF2AFF00, 0xFF2BFF00, 0xFF2CFF00, 0xFF2EFF00, 0xFF2FFF00, 0xFF31FF00, 0xFF32FF00, 0xFF34FF00, 0xFF36FF00, 0xFF38FF00, 0xFF3AFF00, 0xFF3DFF00, 0xFF3FFF00, 0xFF41FF00, 0xFF43FF00, 0xFF45FF00, 0xFF47FF00, 0xFF49FF00, 0xFF4CFF00, 0xFF4EFF00, 0xFF50FF00, 0xFF52FF00, 0xFF54FF00, 0xFF56FF00, 0xFF58FF00, 0xFF5BFF00, 0xFF5DFF00, 0xFF5FFF00, 0xFF61FF00, 0xFF63FF00, 0xFF65FF00, 0xFF67FF00, 0xFF6AFF00, 0xFF6CFF00, 0xFF6EFF00, 0xFF70FF00, 0xFF72FF00, 0xFF74FF00, 0xFF76FF00, 0xFF79FF00, 0xFF7BFF00, 0xFF7DFF00, 0xFF7FFF00, 0xFF81FF00, 0xFF83FF00, 0xFF85FF00, 0xFF88FF00, 0xFF8AFF00, 0xFF8CFF00, 0xFF8EFF00, 0xFF90FF00, 0xFF92FF00, 0xFF94FF00, 0xFF97FF00, 0xFF99FF00, 0xFF9BFF00, 0xFF9DFF00, 0xFF9FFF00, 0xFFA1FF00, 0xFFA3FF00, 0xFFA6FF00, 0xFFA8FF00, 0xFFAAFF00, 0xFFACFF00, 0xFFAEFF00, 0xFFB0FF00, 0xFFB2FF00, 0xFFB5FF00, 0xFFB7FF00, 0xFFB9FF00, 0xFFBBFF00, 0xFFBDFF00, 0xFFBFFF00, 0xFFC1FF00, 0xFFC4FF00, 0xFFC6FF00, 0xFFC8FF00, 0xFFCAFF00, 0xFFCCFF00, 0xFFCDFF00, 0xFFCFFF00, 0xFFD0FF00, 0xFFD2FF00, 0xFFD3FF00, 0xFFD4FF00, 0xFFD6FF00, 0xFFD7FF00, 0xFFD9FF00, 0xFFDAFF00, 0xFFDCFF00, 0xFFDDFF00, 0xFFDEFF00, 0xFFE0FF00, 0xFFE1FF00, 0xFFE3FF00, 0xFFE4FF00, 0xFFE6FF00, 0xFFE7FF00, 0xFFE8FF00, 0xFFEAFF00, 0xFFEBFF00, 0xFFEDFF00, 0xFFEEFF00, 0xFFF0FF00, 0xFFF1FF00, 0xFFF2FF00, 0xFFF4FF00, 0xFFF5FF00, 0xFFF7FF00, 0xFFF8FF00, 0xFFFAFF00, 0xFFFBFF00, 0xFFFCFF00, 0xFFFEFF00, 0xFFFFFE00, 0xFFFFFD00, 0xFFFFFD00, 0xFFFFFC00, 0xFFFFFB00, 0xFFFFFB00, 0xFFFFFA00, 0xFFFFF900, 0xFFFFF800, 0xFFFFF800, 0xFFFFF700, 0xFFFFF600, 0xFFFFF600, 0xFFFFF500, 0xFFFFF400, 0xFFFFF300, 0xFFFFF300, 0xFFFFF200, 0xFFFFF100, 0xFFFFF100, 0xFFFFF000, 0xFFFFEF00, 0xFFFFEE00, 0xFFFFEE00, 0xFFFFED00, 0xFFFFEC00, 0xFFFFEC00, 0xFFFFEB00, 0xFFFFEA00, 0xFFFFE900, 0xFFFFE900, 0xFFFFE800, 0xFFFFE700, 0xFFFFE700, 0xFFFFE600, 0xFFFFE500, 0xFFFFE400, 0xFFFFE300, 0xFFFFE200, 0xFFFFE100, 0xFFFFE000, 0xFFFFDF00, 0xFFFFDE00, 0xFFFFDD00, 0xFFFFDC00, 0xFFFFDA00, 0xFFFFD900, 0xFFFFD800, 0xFFFFD700, 0xFFFFD600, 0xFFFFD500, 0xFFFFD400, 0xFFFFD300, 0xFFFFD200, 0xFFFFD100, 0xFFFFD000, 0xFFFFCF00, 0xFFFFCE00, 0xFFFFCD00, 0xFFFFCB00, 0xFFFFCA00, 0xFFFFC900, 0xFFFFC800, 0xFFFFC700, 0xFFFFC600, 0xFFFFC500, 0xFFFFC400, 0xFFFFC300, 0xFFFFC200, 0xFFFFC100, 0xFFFFC000, 0xFFFFBF00, 0xFFFFBE00, 0xFFFFBC00, 0xFFFFBB00, 0xFFFFBA00, 0xFFFFB900, 0xFFFFB800, 0xFFFFB700, 0xFFFFB600, 0xFFFFB500, 0xFFFFB400, 0xFFFFB300, 0xFFFFB200, 0xFFFFB100, 0xFFFFB000, 0xFFFFAF00, 0xFFFFAD00, 0xFFFFAC00, 0xFFFFAB00, 0xFFFFAA00, 0xFFFFA900, 0xFFFFA800, 0xFFFFA700, 0xFFFFA600, 0xFFFFA500, 0xFFFFA400, 0xFFFFA300, 0xFFFFA200, 0xFFFFA100, 0xFFFFA000, 0xFFFF9E00, 0xFFFF9D00, 0xFFFF9C00, 0xFFFF9B00, 0xFFFF9A00, 0xFFFF9900, 0xFFFF9800, 0xFFFF9700, 0xFFFF9700, 0xFFFF9600, 0xFFFF9500, 0xFFFF9500, 0xFFFF9400, 0xFFFF9300, 0xFFFF9200, 0xFFFF9200, 0xFFFF9100, 0xFFFF9000, 0xFFFF9000, 0xFFFF8F00, 0xFFFF8E00, 0xFFFF8D00, 0xFFFF8D00, 0xFFFF8C00, 0xFFFF8B00, 0xFFFF8B00, 0xFFFF8A00, 0xFFFF8900, 0xFFFF8800, 0xFFFF8800, 0xFFFF8700, 0xFFFF8600, 0xFFFF8600, 0xFFFF8500, 0xFFFF8400, 0xFFFF8300, 0xFFFF8300, 0xFFFF8200, 0xFFFF8100, 0xFFFF8100, 0xFFFF8000, 0xFFFF7F00, 0xFFFF7E00, 0xFFFF7E00, 0xFFFF7D00, 0xFFFF7C00, 0xFFFF7C00, 0xFFFF7B00, 0xFFFF7A00, 0xFFFF7900, 0xFFFF7900, 0xFFFF7800, 0xFFFF7700, 0xFFFF7700, 0xFFFF7600, 0xFFFF7500, 0xFFFF7400, 0xFFFF7400, 0xFFFF7300, 0xFFFF7200, 0xFFFF7200, 0xFFFF7100, 0xFFFF7000, 0xFFFF6F00, 0xFFFF6F00, 0xFFFF6E00, 0xFFFF6D00, 0xFFFF6D00, 0xFFFF6C00, 0xFFFF6B00, 0xFFFF6A00, 0xFFFF6A00, 0xFFFF6900, 0xFFFF6800, 0xFFFF6800, 0xFFFF6700, 0xFFFF6600, 0xFFFF6600, 0xFFFF6500, 0xFFFF6400, 0xFFFF6300, 0xFFFF6300, 0xFFFF6200, 0xFFFF6100, 0xFFFF6100, 0xFFFF6000, 0xFFFF5F00, 0xFFFF5E00, 0xFFFF5E00, 0xFFFF5D00, 0xFFFF5C00, 0xFFFF5C00, 0xFFFF5B00, 0xFFFF5A00, 0xFFFF5900, 0xFFFF5900, 0xFFFF5800, 0xFFFF5700, 0xFFFF5700, 0xFFFF5600, 0xFFFF5500, 0xFFFF5400, 0xFFFF5400, 0xFFFF5300, 0xFFFF5200, 0xFFFF5200, 0xFFFF5100, 0xFFFF5000, 0xFFFF4F00, 0xFFFF4F00, 0xFFFF4E00, 0xFFFF4D00, 0xFFFF4D00, 0xFFFF4C00, 0xFFFF4B00, 0xFFFF4A00, 0xFFFF4A00, 0xFFFF4900, 0xFFFF4800, 0xFFFF4800, 0xFFFF4700, 0xFFFF4600, 0xFFFF4500, 0xFFFF4500, 0xFFFF4400, 0xFFFF4300, 0xFFFF4300, 0xFFFF4200, 0xFFFF4100, 0xFFFF4000, 0xFFFF4000, 0xFFFF3F00, 0xFFFF3E00, 0xFFFF3E00, 0xFFFF3D00, 0xFFFF3C00, 0xFFFF3B00, 0xFFFF3B00, 0xFFFF3A00, 0xFFFF3900, 0xFFFF3900, 0xFFFF3800, 0xFFFF3700, 0xFFFF3600, 0xFFFF3600, 0xFFFF3500, 0xFFFF3400, 0xFFFF3400, 0xFFFF3300, 0xFFFF3200, 0xFFFF3000, 0xFFFF2F00, 0xFFFF2D00, 0xFFFF2C00, 0xFFFF2B00, 0xFFFF2900, 0xFFFF2800, 0xFFFF2600, 0xFFFF2500, 0xFFFF2300, 0xFFFF2200, 0xFFFF2100, 0xFFFF1F00, 0xFFFF1E00, 0xFFFF1C00, 0xFFFF1B00, 0xFFFF1900, 0xFFFF1800, 0xFFFF1700, 0xFFFF1500, 0xFFFF1400, 0xFFFF1200, 0xFFFF1100, 0xFFFF0F00, 0xFFFF0E00, 0xFFFF0D00, 0xFFFF0B00, 0xFFFF0A00, 0xFFFF0800, 0xFFFF0700, 0xFFFF0500, 0xFFFF0400, 0xFFFF0300, 0xFFFF0100, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0004, 0xFFFF0007, 0xFFFF000B, 0xFFFF000E, 0xFFFF0012, 0xFFFF0015, 0xFFFF0019, 0xFFFF001D, 0xFFFF0020, 0xFFFF0024, 0xFFFF0027, 0xFFFF002B, 0xFFFF002E, 0xFFFF0032, 0xFFFF0036, 0xFFFF0039, 0xFFFF003D, 0xFFFF0040, 0xFFFF0044, 0xFFFF0047, 0xFFFF004B, 0xFFFF004F, 0xFFFF0052, 0xFFFF0056, 0xFFFF0059, 0xFFFF005D, 0xFFFF0060, 0xFFFF0064, 0xFFFF0068, 0xFFFF006B, 0xFFFF006F, 0xFFFF0072, 0xFFFF0076, 0xFFFF0079, 0xFFFF007D, 0xFFFF0080, 0xFFFF0082, 0xFFFF0084, 0xFFFF0086, 0xFFFF0088, 0xFFFF008B, 0xFFFF008D, 0xFFFF008F, 0xFFFF0091, 0xFFFF0093, 0xFFFF0095, 0xFFFF0097, 0xFFFF009A, 0xFFFF009C, 0xFFFF009E, 0xFFFF00A0, 0xFFFF00A2, 0xFFFF00A4, 0xFFFF00A6, 0xFFFF00A9, 0xFFFF00AB, 0xFFFF00AD, 0xFFFF00AF, 0xFFFF00B1, 0xFFFF00B3, 0xFFFF00B5, 0xFFFF00B8, 0xFFFF00BA, 0xFFFF00BC, 0xFFFF00BE, 0xFFFF00C0, 0xFFFF00C2, 0xFFFF00C4, 0xFFFF00C7, 0xFFFF00C9, 0xFFFF00CB, 0xFFFF00CD, 0xFFFF00CE, 0xFFFF00CF, 0xFFFF00D1, 0xFFFF00D2, 0xFFFF00D4, 0xFFFF00D5, 0xFFFF00D7, 0xFFFF00D8, 0xFFFF00D9, 0xFFFF00DB, 0xFFFF00DC, 0xFFFF00DE, 0xFFFF00DF, 0xFFFF00E1, 0xFFFF00E2, 0xFFFF00E3, 0xFFFF00E5, 0xFFFF00E6, 0xFFFF00E8, 0xFFFF00E9, 0xFFFF00EB, 0xFFFF00EC, 0xFFFF00ED, 0xFFFF00EF, 0xFFFF00F0, 0xFFFF00F2, 0xFFFF00F3, 0xFFFF00F5, 0xFFFF00F6, 0xFFFF00F7, 0xFFFF00F9, 0xFFFF00FA, 0xFFFF00FC, 0xFFFF00FD, 0xFFFFFF7F, 0xFF7FFFFF, 0xFFFF7F7F, 0xFFA5E5A5, 0xFF999919, 0xFF991999, 0xFF199999, 0xFFBFBFFF, 0xFFFFCC7F, 0xFFCCFFFF, 0xFF66B2B2, 0xFF84BF00, 0xFFB24C66, 0xFFB78C4C, 0xFF8CB266, 0xFF8C3F99, 0xFFB27F7F, 0xFFFF7F7F, 0xFFFFBFDD, 0xFF3FFFBF, 0xFFBFFF3F, 0xFF337FCC, 0xFFD8D8FF, 0xFFD8337F, 0xFFBA8C84, 0xFFD9FFFF, 0xFFCC7FFF, 0xFFC2FF00, 0xFFFFB5B5, 0xFFB3FFFF, 0xFFB3E3F5, 0xFFAB5CF2, 0xFF8AFF00, 0xFFBFA6A6, 0xFFF0C8A0, 0xFFFF7F00, 0xFF1FF01F, 0xFF7FD1E3, 0xFF8F3FD4, 0xFF3DFF00, 0xFFE6E6E6, 0xFFBFC2C7, 0xFFA6A6AB, 0xFF8A99C7, 0xFF9C7AC7, 0xFFE06633, 0xFFF090A0, 0xFF50D050, 0xFFC87F33, 0xFF7D7FB0, 0xFFC28F8F, 0xFF668F8F, 0xFFBD7FE3, 0xFFFFA100, 0xFFA62929, 0xFF5CB8D1, 0xFF702EB0, 0xFF00FF00, 0xFF94FFFF, 0xFF94E0E0, 0xFF73C2C9, 0xFF54B5B5, 0xFF3B9E9E, 0xFF248F8F, 0xFF0A7D8C, 0xFF006985, 0xFFC0C0C0, 0xFFFFD98F, 0xFFA67573, 0xFF667F7F, 0xFF9E63B5, 0xFFD47A00, 0xFF940094, 0xFF429EB0, 0xFF57178F, 0xFF00C900, 0xFF70D4FF, 0xFFFFFFC7, 0xFFD9FFC7, 0xFFC7FFC7, 0xFFA3FFC7, 0xFF8FFFC7, 0xFF61FFC7, 0xFF45FFC7, 0xFF30FFC7, 0xFF1FFFC7, 0xFF00FF9C, 0xFF00E675, 0xFF00D452, 0xFF00BF38, 0xFF00AB24, 0xFF4DC2FF, 0xFF4DA6FF, 0xFF2194D6, 0xFF267DAB, 0xFF266696, 0xFF175487, 0xFFD0D0E0, 0xFFFFD123, 0xFFB8B8D0, 0xFFA6544D, 0xFF575961, 0xFF9E4FB5, 0xFFAB5C00, 0xFF754F45, 0xFF428296, 0xFF420066, 0xFF007D00, 0xFF70ABFA, 0xFF00BAFF, 0xFF00A1FF, 0xFF008FFF, 0xFF007FFF, 0xFF006BFF, 0xFF545CF2, 0xFF785CE3, 0xFF8A4FE3, 0xFFA136D4, 0xFFB31FD4, 0xFFB31FBA, 0xFFB30DA6, 0xFFBD0D87, 0xFFC70066, 0xFFCC0059, 0xFFD1004F, 0xFFD90045, 0xFFE00038, 0xFFE6002E, 0xFFEB0026, 0xFFE5E5E5]); +c$.moreColors = new java.util.Hashtable(); +c$.v176 = Clazz.newIntArray(-1, [0, 164, 1, 0, 2, 4, 3, 8, 4, 12, 5, 16, 6, 20, 7, 24, 9, 32, 10, 36, 11, 40, 13, 48, 14, 52, 15, 56, 16, 60, 17, -64, 18, -68, 19, -72, 20, 76, 28, 80, 29, 82, 30, 83, 21, 84, 22, 85, 43, 86, 31, 87, 32, 88, 24, 90, 44, 91, 33, 92, 25, 93, 26, 94, 27, 95, 46, 0x01, 47, 0x01, 48, 0x01, 49, 0x01, 50, 0x01, 51, 0x01, 34, 96, 35, 100, 36, 105, 37, 110, 38, 115, 39, 122, 40, 124, 41, 126, 45, 132]); +c$.v177 = Clazz.newIntArray(-1, [0, 144, 1, 8, 2, 12, 3, 16, 4, 20, 5, 24, 6, 28, 7, 32, 9, 40, 10, 44, 11, 48, 13, 56, 14, 60, 15, 64, 16, 68, 17, -72, 18, -76, 19, -80, 20, 84, 21, 96, 22, 96, 24, 96, 25, 97, 26, 97, 27, 97, 46, 0x01, 47, 0x02, 48, 0x08, 49, 0x01, 50, 0x02, 51, 0x04, 28, 98, 29, 99, 30, 100, 31, 101, 32, 102, 33, 103, 34, 104, 35, 108, 36, 113, 37, 118, 38, 123, 39, 129, 40, 131, 41, 133, 43, 140, 44, 141]); +c$.v181 = Clazz.newIntArray(-1, [0, 120, 45, 0, 35, -12, 34, -16, 41, -20, 36, -24, 17, -28, 18, -32, 19, -36, 1, 40, 2, 44, 3, 48, 4, 52, 5, 56, 6, 60, 7, 64, 9, 68, 10, 72, 11, 76, 13, 80, 14, 84, 15, 88, 16, 92, 20, 96, 21, 100, 22, 100, 24, 100, 25, 100, 26, 100, 27, 100, 46, 0x01, 47, 0x02, 48, 0x04, 49, 0x08, 50, 0x10, 51, 0x20, 28, 101, 30, 102, 31, 103, 32, 104, 33, 105, 42, 106, 37, 107, 39, 112, 40, 114, 29, 116, 43, 117, 44, 118]); +c$.v176b = Clazz.newIntArray(-1, [0, 32, 1, 0, 2, 4, 3, 8, 4, 12, 5, 16, 6, 26]); +c$.v177b = Clazz.newIntArray(-1, [0, 24, 1, 0, 2, 4, 4, 8, 5, 12, 3, 20, 6, 23]); +c$.v181b = Clazz.newIntArray(-1, [0, 20, 1, 0, 2, 4, 4, 8, 5, 12, 3, 16, 6, 18]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLGroup.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLGroup.js new file mode 100755 index 000000000000..64d93514247e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLGroup.js @@ -0,0 +1,44 @@ +Clazz.declarePackage("J.adapter.readers.pymol"); +Clazz.load(["java.util.Hashtable", "JU.BS"], "J.adapter.readers.pymol.PyMOLGroup", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.name = null; +this.objectNameID = null; +this.list = null; +this.object = null; +this.visible = true; +this.occluded = false; +this.bsAtoms = null; +this.firstAtom = 0; +this.type = 0; +this.parent = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.pymol, "PyMOLGroup", null); +Clazz.prepareFields (c$, function(){ +this.list = new java.util.Hashtable(); +this.bsAtoms = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(name){ +this.name = name; +}, "~S"); +Clazz.defineMethod(c$, "addList", +function(child){ +var group = this.list.get(child.name); +if (group != null) return; +this.list.put(child.name, child); +child.parent = this; +}, "J.adapter.readers.pymol.PyMOLGroup"); +Clazz.defineMethod(c$, "set", +function(){ +if (this.parent != null) return; +}); +Clazz.defineMethod(c$, "addGroupAtoms", +function(bs){ +this.bsAtoms.or(bs); +if (this.parent != null) this.parent.addGroupAtoms(this.bsAtoms); +}, "JU.BS"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.name; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLReader.js new file mode 100755 index 000000000000..222f3f3bed57 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLReader.js @@ -0,0 +1,1103 @@ +Clazz.declarePackage("J.adapter.readers.pymol"); +Clazz.load(["J.adapter.readers.pdb.PdbReader", "J.api.PymolAtomReader", "JU.BS", "$.P3"], "J.adapter.readers.pymol.PyMOLReader", ["java.util.Hashtable", "JU.AU", "$.BC", "$.CU", "$.Lst", "$.PT", "$.V3", "J.adapter.readers.pymol.PickleReader", "$.PyMOL", "$.PyMOLScene", "J.adapter.smarter.Atom", "$.Bond", "$.Structure", "J.c.STR", "JU.BSUtil", "$.BoxInfo", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.allowSurface = true; +this.doResize = false; +this.doCache = false; +this.isStateScript = false; +this.sourcePNGJ = false; +this.ac0 = 0; +this.$ac = 0; +this.stateCount = 0; +this.structureCount = 0; +this.isHidden = false; +this.bsStructureDefined = null; +this.bsBytesExcluded = null; +this.atomMap = null; +this.ssMapSeq = null; +this.pymolScene = null; +this.xyzMin = null; +this.xyzMax = null; +this.nModels = 0; +this.logging = false; +this.reps = null; +this.isMovie = false; +this.pymolFrame = 0; +this.allStates = false; +this.totalAtomCount = 0; +this.pymolVersion = 0; +this.trajectoryStep = null; +this.trajectoryPtr = 0; +this.objectName = null; +this.volumeData = null; +this.mapObjects = null; +this.haveMeasurements = false; +this.frames = null; +this.uniqueSettings = null; +this.atoms = null; +this.haveScenes = false; +this.baseModelIndex = 0; +this.sceneOrder = null; +this.bondCount = 0; +this.haveBinaryArrays = true; +this.ptTemp = null; +this.aTemp = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.pymol, "PyMOLReader", J.adapter.readers.pdb.PdbReader, J.api.PymolAtomReader); +Clazz.prepareFields (c$, function(){ +this.bsStructureDefined = new JU.BS(); +this.xyzMin = JU.P3.new3(1e6, 1e6, 1e6); +this.xyzMax = JU.P3.new3(-1000000.0, -1000000.0, -1000000.0); +this.reps = new Array(23); +this.ptTemp = new JU.P3(); +this.aTemp = Clazz.newByteArray (16, 0); +}); +Clazz.overrideMethod(c$, "setup", +function(fullPath, htParams, reader){ +this.isBinary = this.mustFinalizeModelSet = true; +this.setupASCR(fullPath, htParams, reader); +}, "~S,java.util.Map,~O"); +Clazz.defineMethod(c$, "initializeReader", +function(){ +this.baseAtomIndex = (this.htParams.get("baseAtomIndex")).intValue(); +this.baseModelIndex = (this.htParams.get("baseModelIndex")).intValue(); +this.asc.setInfo("noAutoBond", Boolean.TRUE); +this.asc.setCurrentModelInfo("pdbNoHydrogens", Boolean.TRUE); +this.asc.setInfo("isPyMOL", Boolean.TRUE); +if (this.isTrajectory) this.trajectorySteps = new JU.Lst(); +this.isStateScript = this.htParams.containsKey("isStateScript"); +this.sourcePNGJ = this.htParams.containsKey("sourcePNGJ"); +this.doResize = this.checkFilterKey("DORESIZE"); +this.allowSurface = !this.checkFilterKey("NOSURFACE"); +this.doCache = this.checkFilterKey("DOCACHE"); +if (this.doCache && this.sourcePNGJ) this.doCache = false; + else if (this.sourcePNGJ && !this.doCache) this.sourcePNGJ = false; +if (this.doCache) this.bsBytesExcluded = new JU.BS(); +Clazz.superCall(this, J.adapter.readers.pymol.PyMOLReader, "initializeReader", []); +}); +Clazz.overrideMethod(c$, "processBinaryDocument", +function(){ +var logFile = this.vwr.getLogFileName(); +this.logging = (logFile.length > 0); +JU.Logger.info(this.logging ? "PyMOL (1) file data streaming to " + logFile : "To view raw PyMOL file data, use 'set logFile \"some_filename\" "); +var reader = new J.adapter.readers.pymol.PickleReader(this.binaryDoc, this.vwr); +var map = reader.getMap(this.logging && JU.Logger.debuggingHigh); +reader = null; +this.process(map); +}); +Clazz.overrideMethod(c$, "setAdditionalAtomParameters", +function(atom){ +}, "J.adapter.smarter.Atom"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderPDB(); +this.asc.setTensors(); +}); +Clazz.overrideMethod(c$, "finalizeModelSet", +function(){ +this.pymolScene.setReaderObjects(); +if (this.haveMeasurements) { +this.appendLoadNote(this.vwr.getMeasurementInfoAsString()); +this.setLoadNote(); +}if (this.haveScenes) { +var scenes = new Array(this.sceneOrder.size()); +for (var i = scenes.length; --i >= 0; ) scenes[i] = J.adapter.readers.pymol.PyMOLReader.stringAt(this.sceneOrder, i); + +this.vwr.ms.msInfo.put("scenes", scenes); +}this.vwr.ms.setTrajectoryBs(JU.BSUtil.newBitSet2(this.baseModelIndex, this.vwr.ms.mc)); +if (!this.isStateScript) this.pymolScene.setFrameObject(0, null); +if (this.bsBytesExcluded != null) { +var nExcluded = this.bsBytesExcluded.cardinality(); +var bytes0 = this.vwr.fm.getFileAsBytes(this.filePath, null); +var bytes = Clazz.newByteArray (bytes0.length - nExcluded, 0); +for (var i = this.bsBytesExcluded.nextClearBit(0), n = bytes0.length, pt = 0; i < n; i = this.bsBytesExcluded.nextClearBit(i + 1)) bytes[pt++] = bytes0[i]; + +bytes0 = null; +var fileName = this.filePath; +this.vwr.cachePut(fileName, bytes); +}}); +Clazz.defineMethod(c$, "process", +function(map){ +this.pymolVersion = (map.get("version")).intValue(); +this.appendLoadNote("PyMOL version: " + this.pymolVersion); +var settings = this.fixSettings(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "settings")); +var lst = J.adapter.readers.pymol.PyMOLReader.listAt(settings, 749); +this.haveBinaryArrays = (lst != null && J.adapter.readers.pymol.PyMOLReader.floatAt(lst, 2) == 1); +this.sceneOrder = J.adapter.readers.pymol.PyMOLReader.getMapList(map, "scene_order"); +this.haveScenes = this.getFrameScenes(map); +var file = J.adapter.readers.pymol.PyMOLReader.listAt(settings, 440); +if (file != null && file.size() > 2) JU.Logger.info("PyMOL session file: " + file.get(2)); +this.setUniqueSettings(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "unique_settings")); +this.pymolScene = new J.adapter.readers.pymol.PyMOLScene(this, this.vwr, settings, this.uniqueSettings, this.pymolVersion, this.haveScenes, this.baseAtomIndex, this.baseModelIndex, this.doCache, this.filePath); +var logFile = this.vwr.getLogFileName(); +this.logging = (logFile.length > 0); +JU.Logger.info(this.logging ? "PyMOL file data streaming to " + logFile : "To view raw PyMOL file data, use 'set logFile \"some_filename\" "); +var names = J.adapter.readers.pymol.PyMOLReader.getMapList(map, "names"); +for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +JU.Logger.info(name); +if (name.equals("names")) { +for (var i = 1; i < names.size(); i++) { +var obj = J.adapter.readers.pymol.PyMOLReader.listAt(names, i); +JU.Logger.info(" " + J.adapter.readers.pymol.PyMOLReader.stringAt(obj, 0)); +} +}} +if (this.logging) { +if (this.logging) this.vwr.log("$CLEAR$"); +for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (!"names".equals(name)) { +this.vwr.log("\n===" + name + "==="); +this.vwr.log(JU.PT.rep(e.getValue().toString(), "[", "\n[")); +}} +this.vwr.log("\n===names==="); +for (var i = 1; i < names.size(); i++) { +this.vwr.log(""); +var list = names.get(i); +this.vwr.log(" =" + J.adapter.readers.pymol.PyMOLReader.bytesToString(list.get(0)) + "="); +try { +this.vwr.log(JU.PT.rep(list.toString(), "[", "\n[")); +} catch (e) { +} +} +}this.addColors(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "colors"), this.pymolScene.globalSetting(214) != 0); +this.allStates = (this.pymolScene.globalSetting(49) != 0); +this.pymolFrame = Clazz.floatToInt(this.pymolScene.globalSetting(194)); +this.getAtomAndStateCount(names); +this.pymolScene.setStateCount(this.stateCount); +var pymolState = Clazz.floatToInt(this.pymolScene.globalSetting(193)); +if (!this.isMovie) this.pymolScene.setFrameObject(4115, (this.allStates ? Integer.$valueOf(-1) : Integer.$valueOf(pymolState - 1))); +this.appendLoadNote("frame=" + this.pymolFrame + " state=" + pymolState + " all_states=" + this.allStates); +if (!this.isStateScript && this.doResize) { +var width = 0; +var height = 0; +var main = J.adapter.readers.pymol.PyMOLReader.getMapList(map, "main"); +if (main != null) { +width = J.adapter.readers.pymol.PyMOLReader.intAt(main, 0); +height = J.adapter.readers.pymol.PyMOLReader.intAt(main, 1); +}var note; +if (width > 0 && height > 0) { +note = "PyMOL dimensions width=" + width + " height=" + height; +this.asc.setInfo("preferredWidthHeight", Clazz.newIntArray(-1, [width, height])); +this.vwr.resizeInnerPanel(width, height); +} else { +note = "PyMOL dimensions?"; +}this.appendLoadNote(note); +}var mov; +if (!this.isStateScript && !this.allStates && (mov = J.adapter.readers.pymol.PyMOLReader.getMapList(map, "movie")) != null) { +var frameCount = J.adapter.readers.pymol.PyMOLReader.intAt(mov, 0); +if (frameCount > 0) this.processMovie(mov, frameCount); +}if (this.totalAtomCount == 0) this.asc.newAtomSet(); +if (this.allStates && this.desiredModelNumber == -2147483648) { +} else if (this.isMovie) { +switch (this.desiredModelNumber) { +case -2147483648: +break; +default: +this.desiredModelNumber = this.frames[(this.desiredModelNumber > 0 && this.desiredModelNumber <= this.frames.length ? this.desiredModelNumber : this.pymolFrame) - 1]; +this.pymolScene.setFrameObject(4115, Integer.$valueOf(this.desiredModelNumber - 1)); +break; +} +} else if (this.desiredModelNumber == 0) { +this.desiredModelNumber = pymolState; +} else { +}var n = names.size(); +for (var j = 0; j < this.stateCount; j++) { +if (!this.doGetModel(++this.nModels, null)) continue; +this.model(this.nModels, null); +this.pymolScene.currentAtomSetIndex = this.asc.iSet; +if (this.isTrajectory) { +this.trajectoryStep = new Array(this.totalAtomCount); +this.trajectorySteps.addLast(this.trajectoryStep); +this.trajectoryPtr = 0; +}for (var i = 1; i < n; i++) this.processObject(J.adapter.readers.pymol.PyMOLReader.listAt(names, i), true, j); + +} +for (var i = 1; i < n; i++) this.processObject(J.adapter.readers.pymol.PyMOLReader.listAt(names, i), false, 0); + +this.pymolScene.setReaderObjectInfo(null, 0, null, false, null, null, null); +if (this.mapObjects != null && this.allowSurface) this.processMeshes(); +if (this.isTrajectory) { +this.appendLoadNote("PyMOL trajectories read: " + this.trajectorySteps.size()); +this.asc.finalizeTrajectoryAs(this.trajectorySteps, null); +}this.processDefinitions(); +this.processSelectionsAndScenes(map); +this.pymolScene.finalizeVisibility(); +if (!this.isStateScript) { +this.vwr.initialize(false, true); +this.addJmolScript(this.pymolScene.getViewScript(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "view")).toString()); +}if (this.$ac == 0) this.asc.setInfo("dataOnly", Boolean.TRUE); +this.pymolScene.offsetObjects(); +}, "java.util.Map"); +Clazz.defineMethod(c$, "fixSettings", +function(settings){ +var n = settings.size(); +for (var i = 0; i < n; i++) { +var i2 = J.adapter.readers.pymol.PyMOLReader.intAt(settings.get(i), 0); +if (i2 == -1) { +JU.Logger.info("PyMOL reader adding null setting #" + i); +settings.set(i, new JU.Lst()); +} else { +while (i < i2) { +JU.Logger.info("PyMOL reader adding null setting #" + i); +settings.add(i++, new JU.Lst()); +n++; +} +}} +return settings; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getFrameScenes", +function(map){ +if (this.sceneOrder == null) return false; +var scenes = map.get("scene_dict"); +for (var i = 0; i < this.sceneOrder.size(); i++) { +var name = J.adapter.readers.pymol.PyMOLReader.stringAt(this.sceneOrder, i); +var thisScene = J.adapter.readers.pymol.PyMOLReader.getMapList(scenes, name); +if (thisScene == null || thisScene.get(2) == null) this.sceneOrder.removeItemAt(i--); +} +return (this.sceneOrder != null && this.sceneOrder.size() != 0); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setUniqueSettings", +function(list){ +this.uniqueSettings = new java.util.Hashtable(); +var max = 0; +if (list != null && list.size() != 0) { +for (var i = list.size(); --i >= 0; ) { +var atomSettings = list.get(i); +var id = J.adapter.readers.pymol.PyMOLReader.intAt(atomSettings, 0); +if (id > max) max = id; +var mySettings = atomSettings.get(1); +for (var j = mySettings.size(); --j >= 0; ) { +var setting = mySettings.get(j); +var uid = (id << 10) + J.adapter.readers.pymol.PyMOLReader.intAt(setting, 0); +this.uniqueSettings.put(Integer.$valueOf(uid), setting); +} +} +}return max; +}, "JU.Lst"); +Clazz.defineMethod(c$, "addColors", +function(colors, isClamped){ +if (colors == null || colors.size() == 0) return; +for (var i = colors.size(); --i >= 0; ) { +var c = J.adapter.readers.pymol.PyMOLReader.listAt(colors, i); +J.adapter.readers.pymol.PyMOL.addColor(c.get(1), isClamped ? J.adapter.readers.pymol.PyMOLReader.colorSettingClamped(c, this.ptTemp) : J.adapter.readers.pymol.PyMOLReader.getColorPt(c.get(2), this.ptTemp)); +} +}, "JU.Lst,~B"); +Clazz.defineMethod(c$, "getAtomAndStateCount", +function(names){ +var n = 0; +for (var i = 1; i < names.size(); i++) { +var execObject = J.adapter.readers.pymol.PyMOLReader.listAt(names, i); +var type = J.adapter.readers.pymol.PyMOLReader.intAt(execObject, 4); +if (!this.checkObject(execObject)) continue; +if (type == 1) { +var pymolObject = J.adapter.readers.pymol.PyMOLReader.listAt(execObject, 5); +var states = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 4); +var ns = states.size(); +if (ns > this.stateCount) this.stateCount = ns; +var nAtoms; +var nBonds; +if (this.haveBinaryArrays) { +nBonds = Clazz.doubleToInt((J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 6).get(1)).length / 20); +nAtoms = Clazz.doubleToInt((J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 7).get(1)).length / 120); +n += nAtoms; +} else { +nBonds = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 6).size(); +nAtoms = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 7).size(); +}System.out.println("Object " + this.objectName + " nBonds=" + nBonds + ", nAtoms = " + nAtoms); +for (var j = 0; j < ns; j++) { +var state = J.adapter.readers.pymol.PyMOLReader.listAt(states, j); +var idxToAtm = J.adapter.readers.pymol.PyMOLReader.listAt(state, 3); +if (idxToAtm == null) { +this.isTrajectory = false; +} else { +var m = idxToAtm.size(); +n += m; +if (this.isTrajectory && m != nAtoms) this.isTrajectory = false; +}} +}} +this.totalAtomCount = n; +JU.Logger.info("PyMOL total atom count = " + this.totalAtomCount); +JU.Logger.info("PyMOL state count = " + this.stateCount); +}, "JU.Lst"); +Clazz.defineMethod(c$, "checkObject", +function(execObject){ +this.objectName = J.adapter.readers.pymol.PyMOLReader.stringAt(execObject, 0); +this.isHidden = (J.adapter.readers.pymol.PyMOLReader.intAt(execObject, 2) != 1); +return (this.objectName.indexOf("_") != 0); +}, "JU.Lst"); +Clazz.defineMethod(c$, "processMovie", +function(mov, frameCount){ +var movie = new java.util.Hashtable(); +movie.put("frameCount", Integer.$valueOf(frameCount)); +movie.put("currentFrame", Integer.$valueOf(this.pymolFrame - 1)); +var haveCommands = false; +var haveViews = false; +var haveFrames = false; +var list = J.adapter.readers.pymol.PyMOLReader.listAt(mov, 4); +for (var i = list.size(); --i >= 0; ) if (J.adapter.readers.pymol.PyMOLReader.intAt(list, i) != 0) { +this.frames = Clazz.newIntArray (list.size(), 0); +for (var j = this.frames.length; --j >= 0; ) this.frames[j] = J.adapter.readers.pymol.PyMOLReader.intAt(list, j) + 1; + +movie.put("frames", this.frames); +haveFrames = true; +break; +} +var cmds = J.adapter.readers.pymol.PyMOLReader.listAt(mov, 5); +var cmd; +for (var i = cmds.size(); --i >= 0; ) if ((cmd = J.adapter.readers.pymol.PyMOLReader.stringAt(cmds, i)) != null && cmd.length > 1) { +cmds = J.adapter.readers.pymol.PyMOLReader.fixMovieCommands(cmds); +if (cmds != null) { +movie.put("commands", cmds); +haveCommands = true; +break; +}} +var views = J.adapter.readers.pymol.PyMOLReader.listAt(mov, 6); +var view; +for (var i = views.size(); --i >= 0; ) if ((view = J.adapter.readers.pymol.PyMOLReader.listAt(views, i)) != null && view.size() >= 12 && view.get(1) != null) { +haveViews = true; +views = J.adapter.readers.pymol.PyMOLReader.fixMovieViews(views); +if (views != null) { +movie.put("views", views); +break; +}} +this.appendLoadNote("PyMOL movie frameCount = " + frameCount); +if (haveFrames && !haveCommands && !haveViews) { +this.isMovie = true; +this.pymolScene.setReaderObjectInfo(null, 0, null, false, null, null, null); +this.pymolScene.setFrameObject(1073742031, movie); +} else { +}}, "JU.Lst,~N"); +c$.fixMovieViews = Clazz.defineMethod(c$, "fixMovieViews", +function(views){ +return views; +}, "JU.Lst"); +c$.fixMovieCommands = Clazz.defineMethod(c$, "fixMovieCommands", +function(cmds){ +return cmds; +}, "JU.Lst"); +Clazz.defineMethod(c$, "processObject", +function(execObject, moleculeOnly, iState){ +if (execObject == null) return; +var type = J.adapter.readers.pymol.PyMOLReader.intAt(execObject, 4); +var startLen = execObject.get(execObject.size() - 1); +if ((type == 1) != moleculeOnly || !this.checkObject(execObject)) return; +var pymolObject = J.adapter.readers.pymol.PyMOLReader.listAt(execObject, 5); +var stateSettings = null; +if (type == 1) { +var states = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 4); +var state = J.adapter.readers.pymol.PyMOLReader.listAt(states, iState); +var idxToAtm = J.adapter.readers.pymol.PyMOLReader.listAt(state, 3); +if (iState > 0 && (idxToAtm == null || idxToAtm.size() == 0)) return; +stateSettings = J.adapter.readers.pymol.PyMOLReader.listAt(state, 7); +} else if (iState > 0) { +return; +}JU.Logger.info("PyMOL model " + (this.nModels) + " Object " + this.objectName + (this.isHidden ? " (hidden)" : " (visible)")); +if (!this.isHidden && !this.isMovie && !this.allStates) { +if (this.pymolFrame > 0 && this.pymolFrame != this.nModels) { +this.pymolFrame = this.nModels; +this.allStates = true; +this.pymolScene.setFrameObject(4115, Integer.$valueOf(-1)); +}}var objectHeader = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 0); +var parentGroupName = (execObject.size() < 8 ? null : J.adapter.readers.pymol.PyMOLReader.stringAt(execObject, 6)); +if (parentGroupName != null && "".equals(parentGroupName.trim())) parentGroupName = null; +this.pymolScene.setReaderObjectInfo(this.objectName, type, parentGroupName, this.isHidden, J.adapter.readers.pymol.PyMOLReader.listAt(objectHeader, 8), stateSettings, (moleculeOnly ? "_" + (iState + 1) : "")); +var bsAtoms = null; +var doExclude = (this.bsBytesExcluded != null); +var msg = null; +switch (type) { +default: +msg = "" + type; +break; +case -1: +this.pymolScene.processSelection(execObject); +break; +case 1: +doExclude = false; +bsAtoms = this.processMolecule(pymolObject, iState); +break; +case 4: +doExclude = false; +this.processMeasure(pymolObject); +break; +case 3: +case 2: +this.processMap(pymolObject, type == 3, false); +break; +case 8: +this.processGadget(pymolObject); +break; +case 12: +if (parentGroupName == null) parentGroupName = ""; +break; +case 6: +msg = "CGO"; +this.processCGO(pymolObject); +break; +case 11: +msg = "ALIGNEMENT"; +break; +case 9: +msg = "CALCULATOR"; +break; +case 5: +msg = "CALLBACK"; +break; +case 10: +msg = "SLICE"; +break; +case 7: +msg = "SURFACE"; +break; +} +if (parentGroupName != null || bsAtoms != null) this.pymolScene.addGroup(execObject, parentGroupName, type, bsAtoms); +if (doExclude) { +var i0 = J.adapter.readers.pymol.PyMOLReader.intAt(startLen, 0); +var len = J.adapter.readers.pymol.PyMOLReader.intAt(startLen, 1); +this.bsBytesExcluded.setBits(i0, i0 + len); +JU.Logger.info("cached PSE file excludes PyMOL object type " + type + " name=" + this.objectName + " len=" + len); +}if (msg != null) JU.Logger.error("Unprocessed object type " + msg + " " + this.objectName); +}, "JU.Lst,~B,~N"); +Clazz.defineMethod(c$, "processCGO", +function(pymolObject){ +if (this.isStateScript) return; +if (this.isHidden) return; +var data = J.adapter.readers.pymol.PyMOLReader.sublistAt(pymolObject, [2, 0]); +var color = J.adapter.readers.pymol.PyMOL.getRGB(J.adapter.readers.pymol.PyMOLReader.intAt(J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 0), 2)); +var name = this.pymolScene.addCGO(data, color); +if (name != null) this.appendLoadNote("CGO " + name); +}, "JU.Lst"); +Clazz.defineMethod(c$, "processGadget", +function(pymolObject){ +if (this.objectName.endsWith("_e_pot")) this.processMap(pymolObject, true, true); +}, "JU.Lst"); +Clazz.defineMethod(c$, "processMap", +function(pymolObject, isObject, isGadget){ +if (isObject) { +if (this.sourcePNGJ) return; +if (this.isHidden && !isGadget) return; +if (this.mapObjects == null) this.mapObjects = new JU.Lst(); +this.mapObjects.addLast(pymolObject); +} else { +if (this.volumeData == null) this.volumeData = new java.util.Hashtable(); +this.volumeData.put(this.objectName, pymolObject); +if (!this.isHidden && !this.isStateScript) this.pymolScene.addIsosurface(this.objectName); +}pymolObject.addLast(this.objectName); +}, "JU.Lst,~B,~B"); +Clazz.defineMethod(c$, "processMeasure", +function(pymolObject){ +if (this.isStateScript) return; +if (this.isHidden) return; +JU.Logger.info("PyMOL measure " + this.objectName); +var measure = J.adapter.readers.pymol.PyMOLReader.sublistAt(pymolObject, [2, 0]); +var pt; +var nCoord = (Clazz.instanceOf(measure.get(pt = 1),"JU.Lst") ? 2 : Clazz.instanceOf(measure.get(pt = 4),"JU.Lst") ? 3 : Clazz.instanceOf(measure.get(pt = 6),"JU.Lst") ? 4 : 0); +if (nCoord == 0) return; +var setting = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 0); +var bsReps = J.adapter.readers.pymol.PyMOLReader.getBsReps(J.adapter.readers.pymol.PyMOLReader.listAt(setting, 3)); +var list = J.adapter.readers.pymol.PyMOLReader.listAt(measure, pt); +var offsets = J.adapter.readers.pymol.PyMOLReader.listAt(measure, 8); +var haveLabels = (measure.size() > 8); +var color = J.adapter.readers.pymol.PyMOLReader.intAt(setting, 2); +if (this.pymolScene.addMeasurements(null, nCoord, list, bsReps, color, offsets, haveLabels)) this.haveMeasurements = true; +}, "JU.Lst"); +Clazz.defineMethod(c$, "processMolecule", +function(pymolObject, iState){ +var states = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 4); +var state = J.adapter.readers.pymol.PyMOLReader.listAt(states, iState); +var idxToAtm; +var coords; +var labelPositions; +var idxArray = null; +var coordsArray = null; +var labelArray = null; +var nBonds = J.adapter.readers.pymol.PyMOLReader.intAt(pymolObject, 2); +var nAtoms = J.adapter.readers.pymol.PyMOLReader.intAt(pymolObject, 3); +var n = nAtoms; +if (this.haveBinaryArrays && JU.AU.isAB(state.get(3))) { +idxToAtm = coords = labelPositions = null; +idxArray = Clazz.newIntArray (nAtoms, 0); +coordsArray = Clazz.newFloatArray (nAtoms * 3, 0); +this.fillFloatArrayFromBytes(state.get(2), coordsArray); +this.fillIntArrayFromBytes(state.get(3), idxArray); +var b = state.get(8); +if (b != null) { +labelArray = Clazz.newFloatArray (nAtoms * 7, 0); +this.fillFloatArrayFromBytes(b, labelArray); +}} else { +coords = J.adapter.readers.pymol.PyMOLReader.listAt(state, 2); +idxToAtm = J.adapter.readers.pymol.PyMOLReader.listAt(state, 3); +labelPositions = J.adapter.readers.pymol.PyMOLReader.listAt(state, 8); +if (idxToAtm != null) n = idxToAtm.size(); +}if (n == 0) return null; +this.$ac = this.ac0 = this.asc.ac; +if (nAtoms == 0) return null; +this.ssMapSeq = new java.util.Hashtable(); +if (iState == 0) this.processMolCryst(J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 10)); +var bonds = this.getBondList(J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 6)); +var pymolAtoms = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 7); +this.atomMap = Clazz.newIntArray (nAtoms, 0); +var bsAtoms = this.pymolScene.setAtomMap(this.atomMap, this.ac0); +for (var i = 0; i < 23; i++) this.reps[i] = JU.BS.newN(1000); + +if (iState == 0 || !this.isTrajectory) { +this.pymolScene.ensureCapacity(n); +var lexStr = null; +var atomArray = null; +var vArray = null; +if (this.haveBinaryArrays) { +var ver = J.adapter.readers.pymol.PyMOLReader.intAt(pymolAtoms, 0); +atomArray = pymolAtoms.get(1); +lexStr = this.getLexStr(pymolAtoms.get(2)); +System.out.println("PyMOL atom dump version " + ver); +vArray = (this.haveBinaryArrays ? J.adapter.readers.pymol.PyMOL.getVArray(ver) : null); +}for (var idx = 0; idx < n; idx++) { +var a = this.addAtom(pymolAtoms, (idxToAtm != null ? J.adapter.readers.pymol.PyMOLReader.intAt(idxToAtm, idx) : idxArray != null ? idxArray[idx] : idx), atomArray, vArray, lexStr, idx, coords, coordsArray, labelPositions, labelArray, bsAtoms, iState); +if (a != null) this.trajectoryStep[this.trajectoryPtr++] = a; +} +}this.addBonds(bonds); +this.addMolStructures(); +this.atoms = this.asc.atoms; +if (!this.isStateScript) this.createShapeObjects(); +this.ssMapSeq = null; +JU.Logger.info("reading " + (this.$ac - this.ac0) + " atoms and " + nBonds + " bonds"); +JU.Logger.info("----------"); +return bsAtoms; +}, "JU.Lst,~N"); +Clazz.defineMethod(c$, "getLexStr", +function(lex){ +var pt = 0; +var n = JU.BC.bytesToInt(lex, pt, false); +var index = Clazz.newIntArray (n, 0); +var imax = 0; +for (var i = 0; i < n; i++) { +pt += 4; +var ipt = index[i] = JU.BC.bytesToInt(lex, pt, false); +if (ipt > imax) imax = ipt; +} +var tokens = new Array(imax + 1); +tokens[0] = " "; +pt += 4; +for (var i = 0; i < n; i++) { +var s = tokens[index[i]] = this.getCStr(lex, pt); +pt += s.length + 1; +} +return tokens; +}, "~A"); +Clazz.defineMethod(c$, "getCStr", +function(lex, pt){ +try { +var a = this.aTemp; +var apt = 0; +var b = 0; +while ((b = lex[pt++]) != 0) { +if (apt >= a.length) a = this.aTemp = JU.AU.doubleLengthByte(a); +a[apt++] = b; +} +return String.instantialize(JU.AU.arrayCopyByte(a, apt), "UTF-8"); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.UnsupportedEncodingException")){ +return null; +} else { +throw e; +} +} +}, "~A,~N"); +Clazz.defineMethod(c$, "processMolCryst", +function(cryst){ +if (cryst == null || cryst.size() == 0) return; +var l = J.adapter.readers.pymol.PyMOLReader.sublistAt(cryst, [0, 0]); +var a = J.adapter.readers.pymol.PyMOLReader.sublistAt(cryst, [0, 1]); +this.setUnitCell(J.adapter.readers.pymol.PyMOLReader.floatAt(l, 0), J.adapter.readers.pymol.PyMOLReader.floatAt(l, 1), J.adapter.readers.pymol.PyMOLReader.floatAt(l, 2), J.adapter.readers.pymol.PyMOLReader.floatAt(a, 0), J.adapter.readers.pymol.PyMOLReader.floatAt(a, 1), J.adapter.readers.pymol.PyMOLReader.floatAt(a, 2)); +this.setSpaceGroupName(J.adapter.readers.pymol.PyMOLReader.stringAt(cryst, 1)); +}, "JU.Lst"); +Clazz.defineMethod(c$, "getBondList", +function(bonds){ +var asSingle = !this.pymolScene.booleanSetting(64); +var b = null; +var vArray = null; +var n = bonds.size(); +var len = 0; +if (this.haveBinaryArrays && n == 2) { +var ver = J.adapter.readers.pymol.PyMOLReader.intAt(bonds, 0); +System.out.println("PyMOL bond dump version " + ver); +vArray = J.adapter.readers.pymol.PyMOL.getVArrayB(ver); +b = bonds.get(1); +len = vArray[0]; +n = Clazz.doubleToInt(b.length / len); +}var bondList = new JU.Lst(); +bondList.ensureCapacity(n); +var ia; +var ib; +var order; +var uid = -1; +for (var i = 0, apt = 0; i < n; i++) { +if (this.haveBinaryArrays) { +ia = JU.BC.bytesToInt(b, apt + vArray[1], false); +ib = JU.BC.bytesToInt(b, apt + vArray[2], false); +uid = (b[apt + vArray[6]] == 0 ? -1 : JU.BC.bytesToInt(b, apt + vArray[5], false)); +order = b[apt + vArray[3]]; +apt += len; +} else { +var lst = J.adapter.readers.pymol.PyMOLReader.listAt(bonds, i); +ia = J.adapter.readers.pymol.PyMOLReader.intAt(lst, 0); +ib = J.adapter.readers.pymol.PyMOLReader.intAt(lst, 1); +order = J.adapter.readers.pymol.PyMOLReader.intAt(lst, 2); +uid = (lst.size() > 6 && J.adapter.readers.pymol.PyMOLReader.intAt(lst, 6) != 0 ? J.adapter.readers.pymol.PyMOLReader.intAt(lst, 5) : -1); +}if (order < 1 || order > 3) order = 1; +order |= (asSingle || order == 1 ? 65536 : 98304); +var bond = new J.adapter.smarter.Bond(ia, ib, order); +bond.uniqueID = uid; +bondList.addLast(bond); +} +return bondList; +}, "JU.Lst"); +Clazz.defineMethod(c$, "fillIntArrayFromBytes", +function(b, array){ +for (var i = 0, pt = 0; i < b.length; i += 4) array[pt++] = JU.BC.bytesToInt(b, i, false); + +}, "~A,~A"); +Clazz.defineMethod(c$, "fillFloatArrayFromBytes", +function(b, array){ +try { +for (var i = 0, pt = 0; i < b.length; i += 4) array[pt++] = JU.BC.bytesToFloat(b, i, false); + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A,~A"); +Clazz.defineMethod(c$, "addAtom", +function(pymolAtoms, apt, atomArray, vArray, lexStr, icoord, coords, coordArray, labelPositions, labelArray, bsState, iState){ +this.atomMap[apt] = -1; +var chainID; +var altLoc; +var group3; +var name; +var sym; +var label; +var ssType; +var resi; +var insCode = null; +var bfactor; +var occupancy; +var radius; +var partialCharge; +var seqNo; +var intReps; +var formalCharge; +var atomColor; +var serNo; +var cartoonType; +var flags; +var uniqueID = -1; +var isHetero; +var bonded; +var anisou = null; +var bsReps = null; +if (this.haveBinaryArrays) { +var vpt; +var pt = apt * vArray[0]; +seqNo = this.atomInt(atomArray, pt, vArray[1]); +chainID = this.atomStr(atomArray, pt, vArray[34], lexStr); +resi = this.atomStr(atomArray, pt, vArray[38], lexStr); +group3 = this.atomStr(atomArray, pt, vArray[41], lexStr); +if (group3.length > 3) group3 = group3.substring(0, 3); +name = this.atomStr(atomArray, pt, vArray[36], lexStr); +sym = this.atomStr(atomArray, pt, vArray[37], lexStr); +label = this.atomStr(atomArray, pt, vArray[19], lexStr); +ssType = this.atomStr(atomArray, pt, vArray[39], null); +altLoc = this.atomStr(atomArray, pt, vArray[40], null); +if ((vpt = vArray[42]) == 0) { +resi = this.atomStr(atomArray, pt, vArray[38], null); +} else { +var b = atomArray[pt + vpt]; +insCode = (b == 0 ? " " : "" + String.fromCharCode(b)); +}bfactor = this.atomFloat(atomArray, pt, vArray[4]); +occupancy = this.atomFloat(atomArray, pt, vArray[5]); +radius = this.atomFloat(atomArray, pt, vArray[6]); +partialCharge = this.atomFloat(atomArray, pt, vArray[7]); +formalCharge = atomArray[pt + vArray[28]]; +if (formalCharge > 125) formalCharge -= 512; +intReps = this.atomInt(atomArray, pt, vArray[20]); +atomColor = this.atomInt(atomArray, pt, vArray[9]); +serNo = this.atomInt(atomArray, pt, vArray[10]); +cartoonType = this.atomInt(atomArray, pt, vArray[30]); +flags = this.atomInt(atomArray, pt, vArray[11]); +uniqueID = this.atomInt(atomArray, pt, vArray[13]); +if (uniqueID == 0) uniqueID = -1; +anisou = Clazz.newFloatArray (8, 0); +if ((vpt = vArray[45]) > 0) for (var i = 0; i < 6; i++) anisou[i] = JU.BC.bytesToShort(atomArray, pt + vpt + (i << 1), false); + +bonded = this.atomBool(atomArray, pt, vArray[22], vArray[47]); +isHetero = this.atomBool(atomArray, pt, vArray[21], vArray[46]); +} else { +var a = J.adapter.readers.pymol.PyMOLReader.listAt(pymolAtoms, apt); +seqNo = J.adapter.readers.pymol.PyMOLReader.intAt(a, 0); +chainID = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 1); +if (chainID.length == 0) chainID = " "; +altLoc = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 2); +resi = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 3); +group3 = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 5); +name = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 6); +sym = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 7); +label = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 9); +ssType = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 10); +if (ssType.length == 0) ssType = " "; +ssType = ssType.substring(0, 1); +bfactor = J.adapter.readers.pymol.PyMOLReader.floatAt(a, 14); +occupancy = J.adapter.readers.pymol.PyMOLReader.floatAt(a, 15); +radius = J.adapter.readers.pymol.PyMOLReader.floatAt(a, 16); +partialCharge = J.adapter.readers.pymol.PyMOLReader.floatAt(a, 17); +formalCharge = J.adapter.readers.pymol.PyMOLReader.intAt(a, 18); +isHetero = (J.adapter.readers.pymol.PyMOLReader.intAt(a, 19) != 0); +bsReps = J.adapter.readers.pymol.PyMOLReader.getBsReps(J.adapter.readers.pymol.PyMOLReader.listAt(a, 20)); +intReps = (bsReps == null ? J.adapter.readers.pymol.PyMOLReader.intAt(a, 20) : 0); +atomColor = J.adapter.readers.pymol.PyMOLReader.intAt(a, 21); +serNo = J.adapter.readers.pymol.PyMOLReader.intAt(a, 22); +cartoonType = J.adapter.readers.pymol.PyMOLReader.intAt(a, 23); +flags = J.adapter.readers.pymol.PyMOLReader.intAt(a, 24); +bonded = (J.adapter.readers.pymol.PyMOLReader.intAt(a, 25) != 0); +uniqueID = (a.size() > 40 && J.adapter.readers.pymol.PyMOLReader.intAt(a, 40) == 1 ? J.adapter.readers.pymol.PyMOLReader.intAt(a, 32) : -1); +if (a.size() > 46) anisou = J.adapter.readers.pymol.PyMOLReader.floatsAt(a, 41, Clazz.newFloatArray (8, 0), 6); +}if (insCode == null) { +var len = resi.length; +var ch = (len > 0 ? resi.charAt(len - 1) : ' '); +insCode = (JU.PT.isDigit(ch) ? " " : "" + ch); +}if (group3.length > 3) group3 = group3.substring(0, 3); +if (group3.equals(" ")) group3 = "UNK"; +if (sym.equals("A")) sym = "C"; +var ichain = this.vwr.getChainID(chainID, true); +var atom = this.processAtom( new J.adapter.smarter.Atom(), name, (altLoc.length == 0 ? ' ' : altLoc.charAt(0)), group3, ichain, seqNo, insCode.charAt(0), isHetero, sym); +if (!this.filterPDBAtom(atom, this.fileAtomIndex++)) return null; +var x; +var y; +var z; +icoord *= 3; +if (this.haveBinaryArrays) { +x = coordArray[icoord]; +y = coordArray[++icoord]; +z = coordArray[++icoord]; +} else { +x = J.adapter.readers.pymol.PyMOLReader.floatAt(coords, icoord); +y = J.adapter.readers.pymol.PyMOLReader.floatAt(coords, ++icoord); +z = J.adapter.readers.pymol.PyMOLReader.floatAt(coords, ++icoord); +}JU.BoxInfo.addPointXYZ(x, y, z, this.xyzMin, this.xyzMax, 0); +if (this.isTrajectory && iState > 0) return null; +var isNucleic = (J.adapter.readers.pymol.PyMOLReader.nucleic.indexOf(group3) >= 0); +if (bsState != null) bsState.set(this.$ac); +if (seqNo >= -1000 && (!ssType.equals(" ") || name.equals("CA") || isNucleic)) { +var bs = this.ssMapSeq.get(ssType); +if (bs == null) this.ssMapSeq.put(ssType, bs = new JU.BS()); +bs.set(seqNo - -1000); +ssType += ichain; +bs = this.ssMapSeq.get(ssType); +if (bs == null) this.ssMapSeq.put(ssType, bs = new JU.BS()); +bs.set(seqNo - -1000); +}atom.bfactor = bfactor; +atom.foccupancy = occupancy; +atom.radius = radius; +if (atom.radius == 0) atom.radius = 1; +atom.partialCharge = partialCharge; +atom.vib = JU.V3.new3(uniqueID, cartoonType, NaN); +if (anisou != null && anisou[0] != 0) this.asc.setAnisoBorU(atom, anisou, 12); +this.pymolScene.setAtomColor(atomColor); +this.processAtom2(atom, serNo, x, y, z, formalCharge); +if (!bonded) this.pymolScene.bsNonbonded.set(this.$ac); +if (!label.equals(" ")) { +this.pymolScene.bsLabeled.set(this.$ac); +var labelPos = Clazz.newFloatArray (7, 0); +if (labelArray != null) { +for (var i = 0; i < 7; i++) labelPos[i] = labelArray[apt * 7 + i]; + +} else { +var labelOffset = J.adapter.readers.pymol.PyMOLReader.listAt(labelPositions, apt); +if (labelOffset != null) { +for (var i = 0; i < 7; i++) labelPos[i] = J.adapter.readers.pymol.PyMOLReader.floatAt(labelOffset, i); + +}}this.pymolScene.addLabel(this.$ac, uniqueID, atomColor, labelPos, label); +}if (this.isHidden) this.pymolScene.bsHidden.set(this.$ac); +if (isNucleic) this.pymolScene.bsNucleic.set(this.$ac); +for (var i = 0; i < 21; i++) if (bsReps == null ? ((intReps & (1 << i)) != 0) : bsReps.get(i)) this.reps[i].set(this.$ac); + +if (atom.elementSymbol.equals("H")) this.pymolScene.bsHydrogen.set(this.$ac); +if ((flags & J.adapter.readers.pymol.PyMOL.FLAG_NOSURFACE) != 0) this.pymolScene.bsNoSurface.set(this.$ac); +this.atomMap[apt] = this.$ac++; +return null; +}, "JU.Lst,~N,~A,~A,~A,~N,JU.Lst,~A,JU.Lst,~A,JU.BS,~N"); +Clazz.defineMethod(c$, "atomBool", +function(atomArray, pt, offset, mask){ +return ((atomArray[pt + offset] & mask) != 0); +}, "~A,~N,~N,~N"); +Clazz.defineMethod(c$, "atomFloat", +function(atomArray, pt, offset){ +try { +return JU.BC.bytesToFloat(atomArray, pt + offset, false); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return 0; +} else { +throw e; +} +} +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "atomStr", +function(atomArray, pt, offset, lexStr){ +if (offset < 0) return lexStr[JU.BC.bytesToInt(atomArray, pt - offset, false)]; +var s = this.getCStr(atomArray, pt + offset); +return (s.length == 0 ? " " : s); +}, "~A,~N,~N,~A"); +Clazz.defineMethod(c$, "atomInt", +function(atomArray, pt, offset){ +return JU.BC.bytesToInt(atomArray, pt + offset, false); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "addBonds", +function(bonds){ +var n = bonds.size(); +for (var i = 0; i < n; i++) { +var bond = bonds.get(i); +bond.atomIndex1 = this.atomMap[bond.atomIndex1]; +bond.atomIndex2 = this.atomMap[bond.atomIndex2]; +if (bond.atomIndex1 < 0 || bond.atomIndex2 < 0) continue; +this.pymolScene.setUniqueBond(this.bondCount++, bond.uniqueID); +this.asc.addBond(bond); +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "addMolStructures", +function(){ +this.addMolSS("H", J.c.STR.HELIX); +this.addMolSS("S", J.c.STR.SHEET); +this.addMolSS("L", J.c.STR.TURN); +this.addMolSS(" ", J.c.STR.NONE); +}); +Clazz.defineMethod(c$, "addMolSS", +function(ssType, type){ +if (this.ssMapSeq.get(ssType) == null) return; +var istart = -1; +var iend = -1; +var ichain = 0; +var atoms = this.asc.atoms; +var bsSeq = null; +var bsAtom = this.pymolScene.getSSMapAtom(ssType); +var n = this.$ac + 1; +var seqNo = -1; +var thischain = 0; +var imodel = -1; +var thisModel = -1; +for (var i = this.ac0; i < n; i++) { +if (i == this.$ac) { +thischain = 0; +} else { +seqNo = atoms[i].sequenceNumber; +thischain = atoms[i].chainID; +thisModel = atoms[i].atomSetIndex; +}if (thischain != ichain || thisModel != imodel) { +ichain = thischain; +imodel = thisModel; +bsSeq = this.ssMapSeq.get(ssType + thischain); +--i; +if (istart < 0) continue; +} else if (bsSeq != null && seqNo >= -1000 && bsSeq.get(seqNo - -1000)) { +iend = i; +if (istart < 0) istart = i; +continue; +} else if (istart < 0) { +continue; +}if (type !== J.c.STR.NONE) { +var pt = this.bsStructureDefined.nextSetBit(istart); +if (pt >= 0 && pt <= iend) continue; +this.bsStructureDefined.setBits(istart, iend + 1); +var structure = new J.adapter.smarter.Structure(imodel, type, type, type.toString(), "" + (++this.structureCount), type === J.c.STR.SHEET ? 1 : 0, null); +var a = atoms[istart]; +var b = atoms[iend]; +var i0 = this.asc.getAtomSetAtomIndex(thisModel); +structure.set(a.chainID, a.sequenceNumber, a.insertionCode, b.chainID, b.sequenceNumber, b.insertionCode, istart - i0, iend - i0); +this.asc.addStructure(structure); +}bsAtom.setBits(istart, iend + 1); +istart = -1; +} +}, "~S,J.c.STR"); +Clazz.defineMethod(c$, "createShapeObjects", +function(){ +this.pymolScene.createShapeObjects(this.reps, this.allowSurface && !this.isHidden, this.ac0, this.$ac); +}); +Clazz.defineMethod(c$, "processMeshes", +function(){ +var fileName = this.vwr.fm.getFilePath(this.pymolScene.surfaceInfoName, true, false); +this.vwr.cachePut(fileName, this.volumeData); +for (var i = this.mapObjects.size(); --i >= 0; ) { +var obj = this.mapObjects.get(i); +var objName = obj.get(obj.size() - 1).toString(); +var isMep = objName.endsWith("_e_pot"); +var mapName; +var tok; +if (isMep) { +tok = 1073742016; +var root = objName.substring(0, objName.length - 3); +mapName = root + "map"; +var isosurfaceName = this.pymolScene.getObjectID(root + "chg"); +if (isosurfaceName == null) continue; +obj.addLast(isosurfaceName); +this.pymolScene.mepList += ";" + isosurfaceName + ";"; +} else { +tok = 1073742018; +mapName = J.adapter.readers.pymol.PyMOLReader.stringAt(J.adapter.readers.pymol.PyMOLReader.sublistAt(obj, [2, 0]), 1); +}var surface = this.volumeData.get(mapName); +if (surface == null) continue; +obj.addLast(mapName); +this.volumeData.put(objName, obj); +this.volumeData.put("__pymolSurfaceData__", obj); +if (!this.isStateScript) this.pymolScene.addMesh(tok, obj, objName, isMep); +this.appendLoadNote("PyMOL object " + objName + " references map " + mapName); +} +}); +Clazz.defineMethod(c$, "processDefinitions", +function(){ +var s = this.vwr.getAtomDefs(this.pymolScene.setAtomDefs()); +if (s.length > 2) s = s.substring(0, s.length - 2); +this.appendLoadNote(s); +}); +Clazz.defineMethod(c$, "processSelectionsAndScenes", +function(map){ +if (!this.pymolScene.needSelections()) return; +var htObjNames = J.adapter.readers.pymol.PyMOLReader.listToMap(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "names")); +if (this.haveScenes) { +var scenes = map.get("scene_dict"); +this.finalizeSceneData(); +var htSecrets = J.adapter.readers.pymol.PyMOLReader.listToMap(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "selector_secrets")); +for (var i = 0; i < this.sceneOrder.size(); i++) { +var name = J.adapter.readers.pymol.PyMOLReader.stringAt(this.sceneOrder, i); +var thisScene = J.adapter.readers.pymol.PyMOLReader.getMapList(scenes, name); +if (thisScene == null) continue; +this.pymolScene.buildScene(name, thisScene, htObjNames, htSecrets); +this.appendLoadNote("scene: " + name); +} +}this.pymolScene.setCarveSets(htObjNames); +}, "java.util.Map"); +Clazz.defineMethod(c$, "finalizeSceneData", +function(){ +var cartoonTypes = Clazz.newIntArray (this.$ac, 0); +var uniqueIDs = Clazz.newIntArray (this.$ac, 0); +var sequenceNumbers = Clazz.newIntArray (this.$ac, 0); +var newChain = Clazz.newBooleanArray(this.$ac, false); +var radii = Clazz.newFloatArray (this.$ac, 0); +var lastAtomChain = -2147483648; +var lastAtomSet = -2147483648; +for (var i = 0; i < this.$ac; i++) { +cartoonTypes[i] = this.getCartoonType(i); +uniqueIDs[i] = this.getUniqueID(i); +sequenceNumbers[i] = this.getSequenceNumber(i); +radii[i] = this.getVDW(i); +if (lastAtomChain != this.atoms[i].chainID || lastAtomSet != this.atoms[i].atomSetIndex) { +newChain[i] = true; +lastAtomChain = this.atoms[i].chainID; +lastAtomSet = this.atoms[i].atomSetIndex; +}} +this.pymolScene.setAtomInfo(uniqueIDs, cartoonTypes, sequenceNumbers, newChain, radii); +}); +c$.intAt = Clazz.defineMethod(c$, "intAt", +function(list, i){ +return (list == null ? -1 : (list.get(i)).intValue()); +}, "JU.Lst,~N"); +c$.pointAt = Clazz.defineMethod(c$, "pointAt", +function(list, i, pt){ +pt.set(J.adapter.readers.pymol.PyMOLReader.floatAt(list, i++), J.adapter.readers.pymol.PyMOLReader.floatAt(list, i++), J.adapter.readers.pymol.PyMOLReader.floatAt(list, i)); +return pt; +}, "JU.Lst,~N,JU.P3"); +c$.floatsAt = Clazz.defineMethod(c$, "floatsAt", +function(a, pt, data, len){ +if (a == null) return null; +for (var i = 0; i < len; i++) data[i] = J.adapter.readers.pymol.PyMOLReader.floatAt(a, pt++); + +return data; +}, "JU.Lst,~N,~A,~N"); +c$.floatAt = Clazz.defineMethod(c$, "floatAt", +function(list, i){ +return (list == null || i >= list.size() ? 0 : (list.get(i)).floatValue()); +}, "JU.Lst,~N"); +c$.listAt = Clazz.defineMethod(c$, "listAt", +function(list, i){ +if (list == null || i >= list.size()) return null; +var o = list.get(i); +return (Clazz.instanceOf(o,"JU.Lst") ? o : null); +}, "JU.Lst,~N"); +c$.sublistAt = Clazz.defineMethod(c$, "sublistAt", +function(mesh, pt){ +for (var i = 0; i < pt.length; i++) mesh = mesh.get(pt[i]); + +return mesh; +}, "JU.Lst,~A"); +c$.listToMap = Clazz.defineMethod(c$, "listToMap", +function(list){ +var map = new java.util.Hashtable(); +for (var i = list.size(); --i >= 0; ) { +var item = J.adapter.readers.pymol.PyMOLReader.listAt(list, i); +if (item != null && item.size() > 0) map.put(J.adapter.readers.pymol.PyMOLReader.stringAt(item, 0), item); +} +return map; +}, "JU.Lst"); +c$.stringAt = Clazz.defineMethod(c$, "stringAt", +function(list, i){ +var o = list.get(i); +if ((typeof(o)=='string')) return o; +var a = list.get(i); +return (a.length == 0 ? " " : J.adapter.readers.pymol.PyMOLReader.bytesToString(a)); +}, "JU.Lst,~N"); +c$.bytesToString = Clazz.defineMethod(c$, "bytesToString", +function(object){ +try { +return String.instantialize(object, "UTF-8"); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return object.toString(); +} else { +throw e; +} +} +}, "~O"); +c$.colorSettingClamped = Clazz.defineMethod(c$, "colorSettingClamped", +function(c, ptTemp){ +return J.adapter.readers.pymol.PyMOLReader.getColorPt(c.get(c.size() < 6 || J.adapter.readers.pymol.PyMOLReader.intAt(c, 4) == 0 ? 2 : 5), ptTemp); +}, "JU.Lst,JU.P3"); +c$.getColorPt = Clazz.defineMethod(c$, "getColorPt", +function(o, ptTemp){ +return (o == null ? 0 : Clazz.instanceOf(o, Integer) ? (o).intValue() : JU.CU.colorPtToFFRGB(J.adapter.readers.pymol.PyMOLReader.pointAt(o, 0, ptTemp))); +}, "~O,JU.P3"); +c$.getMapList = Clazz.defineMethod(c$, "getMapList", +function(map, key){ +return map.get(key); +}, "java.util.Map,~S"); +c$.getBsReps = Clazz.defineMethod(c$, "getBsReps", +function(list){ +if (list == null) return null; +var bsReps = new JU.BS(); +var n = Math.min(list.size(), 21); +for (var i = 0; i < n; i++) { +if (J.adapter.readers.pymol.PyMOLReader.intAt(list, i) == 1) bsReps.set(i); +} +return bsReps; +}, "JU.Lst"); +Clazz.overrideMethod(c$, "getUniqueID", +function(iAtom){ +return Clazz.floatToInt(this.atoms[iAtom].vib.x); +}, "~N"); +Clazz.overrideMethod(c$, "getCartoonType", +function(iAtom){ +return Clazz.floatToInt(this.atoms[iAtom].vib.y); +}, "~N"); +Clazz.overrideMethod(c$, "getVDW", +function(iAtom){ +return this.atoms[iAtom].radius; +}, "~N"); +Clazz.overrideMethod(c$, "getSequenceNumber", +function(iAtom){ +return this.atoms[iAtom].sequenceNumber; +}, "~N"); +Clazz.overrideMethod(c$, "compareAtoms", +function(iPrev, i){ +return this.atoms[iPrev].chainID != this.atoms[i].chainID; +}, "~N,~N"); +c$.nucleic = " A C G T U ADE THY CYT GUA URI DA DC DG DT DU "; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLScene.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLScene.js new file mode 100755 index 000000000000..0a16e38c04c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/pymol/PyMOLScene.js @@ -0,0 +1,1220 @@ +Clazz.declarePackage("J.adapter.readers.pymol"); +Clazz.load(["J.api.JmolSceneGenerator", "java.util.Hashtable", "JU.BS", "$.Lst", "$.P3"], "J.adapter.readers.pymol.PyMOLScene", ["JU.AU", "$.CU", "$.PT", "$.SB", "J.adapter.readers.pymol.JmolObject", "$.PyMOL", "$.PyMOLGroup", "$.PyMOLReader", "J.atomdata.RadiusData", "J.c.VDW", "JM.Text", "JU.BSUtil", "$.C", "$.Escape", "$.Logger", "$.Point3fi"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.pymolVersion = 0; +this.bsHidden = null; +this.bsNucleic = null; +this.bsNonbonded = null; +this.bsLabeled = null; +this.bsHydrogen = null; +this.bsNoSurface = null; +this.htSpacefill = null; +this.ssMapAtom = null; +this.atomColorList = null; +this.occludedObjects = null; +this.labels = null; +this.colixes = null; +this.frameObj = null; +this.groups = null; +this.objectSettings = null; +this.bsCartoon = null; +this.htCarveSets = null; +this.htDefinedAtoms = null; +this.htHiddenObjects = null; +this.moleculeNames = null; +this.jmolObjects = null; +this.htAtomMap = null; +this.htObjectAtoms = null; +this.htObjectGroups = null; +this.htMeasures = null; +this.htObjectSettings = null; +this.objectInfo = null; +this.settings = null; +this.htStateSettings = null; +this.stateSettings = null; +this.uniqueSettings = null; +this.uniqueList = null; +this.bsUniqueBonds = null; +this.bgRgb = 0; +this.dotColor = 0; +this.surfaceMode = 0; +this.surfaceColor = 0; +this.cartoonColor = 0; +this.ribbonColor = 0; +this.sphereColor = 0; +this.labelFontId = 0; +this.labelColor = 0; +this.cartoonTranslucency = 0; +this.ribbonTranslucency = 0; +this.labelSize = 0; +this.meshWidth = 0; +this.nonbondedSize = 0; +this.nonbondedTranslucency = 0; +this.sphereScale = 0; +this.sphereTranslucency = 0; +this.stickTranslucency = 0; +this.transparency = 0; +this.cartoonLadderMode = false; +this.cartoonRockets = false; +this.haveNucleicLadder = false; +this.labelPosition = null; +this.labelPosition0 = null; +this.objectName = null; +this.objectNameID = null; +this.objectJmolName = null; +this.objectType = 0; +this.bsAtoms = null; +this.objectHidden = false; +this.reader = null; +this.uniqueIDs = null; +this.cartoonTypes = null; +this.sequenceNumbers = null; +this.newChain = null; +this.radii = null; +this.baseModelIndex = 0; +this.baseAtomIndex = 0; +this.stateCount = 0; +this.mepList = ""; +this.doCache = false; +this.haveScenes = false; +this.bsCarve = null; +this.solventAccessible = false; +this.bsLineBonds = null; +this.bsStickBonds = null; +this.thisState = 0; +this.currentAtomSetIndex = 0; +this.surfaceInfoName = null; +this.ptTemp = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.pymol, "PyMOLScene", null, J.api.JmolSceneGenerator); +Clazz.prepareFields (c$, function(){ +this.bsHidden = new JU.BS(); +this.bsNucleic = new JU.BS(); +this.bsNonbonded = new JU.BS(); +this.bsLabeled = new JU.BS(); +this.bsHydrogen = new JU.BS(); +this.bsNoSurface = new JU.BS(); +this.htSpacefill = new java.util.Hashtable(); +this.ssMapAtom = new java.util.Hashtable(); +this.atomColorList = new JU.Lst(); +this.occludedObjects = new java.util.Hashtable(); +this.labels = new java.util.Hashtable(); +this.bsCartoon = new JU.BS(); +this.htCarveSets = new java.util.Hashtable(); +this.htDefinedAtoms = new java.util.Hashtable(); +this.htHiddenObjects = new java.util.Hashtable(); +this.moleculeNames = new JU.Lst(); +this.jmolObjects = new JU.Lst(); +this.htAtomMap = new java.util.Hashtable(); +this.htObjectAtoms = new java.util.Hashtable(); +this.htObjectGroups = new java.util.Hashtable(); +this.htMeasures = new java.util.Hashtable(); +this.htObjectSettings = new java.util.Hashtable(); +this.objectInfo = new java.util.Hashtable(); +this.htStateSettings = new java.util.Hashtable(); +this.labelPosition0 = new JU.P3(); +this.bsLineBonds = new JU.BS(); +this.bsStickBonds = new JU.BS(); +this.ptTemp = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(reader, vwr, settings, uniqueSettings, pymolVersion, haveScenes, baseAtomIndex, baseModelIndex, doCache, filePath){ +this.reader = reader; +this.vwr = vwr; +this.settings = settings; +this.uniqueSettings = uniqueSettings; +this.pymolVersion = pymolVersion; +this.haveScenes = haveScenes; +this.baseAtomIndex = baseAtomIndex; +this.baseModelIndex = baseModelIndex; +this.doCache = doCache; +this.surfaceInfoName = filePath + "##JmolSurfaceInfo##"; +this.setVersionSettings(); +settings.trimToSize(); +this.bgRgb = this.colorSetting(6); +this.labelPosition0 = this.pointSetting(471); +}, "J.api.PymolAtomReader,JV.Viewer,JU.Lst,java.util.Map,~N,~B,~N,~N,~B,~S"); +Clazz.defineMethod(c$, "clearReaderData", +function(){ +this.reader = null; +this.colixes = null; +this.atomColorList = null; +this.objectSettings = null; +this.stateSettings = null; +if (this.haveScenes) return; +this.settings = null; +this.groups = null; +this.labels = null; +this.ssMapAtom = null; +this.htSpacefill = null; +this.htAtomMap = null; +this.htMeasures = null; +this.htObjectGroups = null; +this.htObjectAtoms = null; +this.htObjectSettings = null; +this.htStateSettings = null; +this.htHiddenObjects = null; +this.objectInfo = null; +this.occludedObjects = null; +this.bsHidden = this.bsNucleic = this.bsNonbonded = this.bsLabeled = this.bsHydrogen = this.bsNoSurface = this.bsCartoon = null; +}); +Clazz.defineMethod(c$, "setUniqueBond", +function(index, uniqueID){ +if (uniqueID < 0) return; +if (this.uniqueList == null) { +this.uniqueList = new java.util.Hashtable(); +this.bsUniqueBonds = new JU.BS(); +}this.uniqueList.put(Integer.$valueOf(index), Integer.$valueOf(uniqueID)); +this.bsUniqueBonds.set(index); +}, "~N,~N"); +Clazz.defineMethod(c$, "setStateCount", +function(stateCount){ +this.stateCount = stateCount; +}, "~N"); +Clazz.defineMethod(c$, "colorSetting", +function(i){ +var pos = J.adapter.readers.pymol.PyMOLReader.listAt(this.settings, i); +var o = (pos == null || pos.size() != 3 ? null : pos.get(2)); +if (o == null) return Clazz.floatToInt(J.adapter.readers.pymol.PyMOL.getDefaultSetting(i, this.pymolVersion)); +return (Clazz.instanceOf(o, Integer) ? (o).intValue() : JU.CU.colorPtToFFRGB(J.adapter.readers.pymol.PyMOLReader.pointAt(o, 0, this.ptTemp))); +}, "~N"); +Clazz.defineMethod(c$, "pointSetting", +function(i){ +var pt = new JU.P3(); +var pos = J.adapter.readers.pymol.PyMOLReader.listAt(this.settings, i); +if (pos != null && pos.size() == 3) return J.adapter.readers.pymol.PyMOLReader.pointAt(pos.get(2), 0, pt); +return J.adapter.readers.pymol.PyMOL.getDefaultSettingPt(i, this.pymolVersion, pt); +}, "~N"); +Clazz.defineMethod(c$, "ensureCapacity", +function(n){ +this.atomColorList.ensureCapacity(this.atomColorList.size() + n); +}, "~N"); +Clazz.defineMethod(c$, "setReaderObjectInfo", +function(name, type, groupName, isHidden, listObjSettings, listStateSettings, ext){ +this.objectName = name; +this.objectHidden = isHidden; +this.objectNameID = (this.objectName == null ? null : this.fixName(this.objectName + ext)); +this.objectSettings = new java.util.Hashtable(); +this.stateSettings = new java.util.Hashtable(); +if (this.objectName != null) { +this.objectJmolName = this.getJmolName(name); +if (groupName != null) { +this.htObjectGroups.put(this.objectName, groupName); +this.htObjectGroups.put(this.objectNameID, groupName); +}this.objectInfo.put(this.objectName, Clazz.newArray(-1, [this.objectNameID, Integer.$valueOf(type)])); +if (this.htObjectSettings.get(this.objectName) == null) { +this.listToSettings(listObjSettings, this.objectSettings); +this.htObjectSettings.put(this.objectName, this.objectSettings); +}if (this.htStateSettings.get(this.objectNameID) == null) { +this.listToSettings(listStateSettings, this.stateSettings); +this.htStateSettings.put(this.objectNameID, this.stateSettings); +}}this.getObjectSettings(); +}, "~S,~N,~S,~B,JU.Lst,JU.Lst,~S"); +Clazz.defineMethod(c$, "listToSettings", +function(list, objectSettings){ +if (list != null && list.size() != 0) { +for (var i = list.size(); --i >= 0; ) { +var setting = list.get(i); +objectSettings.put(setting.get(0), setting); +} +}}, "JU.Lst,java.util.Map"); +Clazz.defineMethod(c$, "getObjectSettings", +function(){ +this.transparency = this.floatSetting(138); +this.dotColor = Clazz.floatToInt(this.floatSetting(210)); +this.nonbondedSize = this.floatSetting(65); +this.nonbondedTranslucency = this.floatSetting(524); +this.sphereScale = this.floatSetting(155); +this.cartoonColor = Clazz.floatToInt(this.floatSetting(236)); +this.ribbonColor = Clazz.floatToInt(this.floatSetting(235)); +this.sphereColor = Clazz.floatToInt(this.floatSetting(173)); +this.cartoonTranslucency = this.floatSetting(279); +this.ribbonTranslucency = this.floatSetting(666); +this.stickTranslucency = this.floatSetting(198); +this.sphereTranslucency = this.floatSetting(172); +this.cartoonLadderMode = this.booleanSetting(448); +this.cartoonRockets = this.booleanSetting(180); +this.surfaceMode = Clazz.floatToInt(this.floatSetting(143)); +this.surfaceColor = Clazz.floatToInt(this.floatSetting(144)); +this.solventAccessible = this.booleanSetting(338); +this.meshWidth = this.floatSetting(90); +var carveSet = this.stringSetting(342).trim(); +if (carveSet.length == 0) { +this.bsCarve = null; +} else { +this.bsCarve = this.htCarveSets.get(carveSet); +if (this.bsCarve == null) this.htCarveSets.put(carveSet, this.bsCarve = new JU.BS()); +}this.labelPosition = new JU.P3(); +try { +var setting = this.getObjectSetting(471); +J.adapter.readers.pymol.PyMOLReader.pointAt(J.adapter.readers.pymol.PyMOLReader.listAt(setting, 2), 0, this.labelPosition); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.labelPosition.add(this.labelPosition0); +this.labelColor = Clazz.floatToInt(this.floatSetting(66)); +this.labelSize = this.floatSetting(453); +this.labelFontId = Clazz.floatToInt(this.floatSetting(328)); +}); +Clazz.defineMethod(c$, "setAtomInfo", +function(uniqueIDs, cartoonTypes, sequenceNumbers, newChain, radii){ +this.uniqueIDs = uniqueIDs; +this.cartoonTypes = cartoonTypes; +this.sequenceNumbers = sequenceNumbers; +this.newChain = newChain; +this.radii = radii; +}, "~A,~A,~A,~A,~A"); +Clazz.defineMethod(c$, "setSceneObject", +function(name, istate){ +this.objectName = name; +this.objectType = this.getObjectType(name); +this.objectJmolName = this.getJmolName(name); +this.objectNameID = (istate == 0 && this.objectType != 0 ? this.getObjectID(name) : this.objectJmolName + "_" + istate); +this.bsAtoms = this.htObjectAtoms.get(name); +this.objectSettings = this.htObjectSettings.get(name); +this.stateSettings = this.htStateSettings.get(name + "_" + istate); +var groupName = this.htObjectGroups.get(name); +this.objectHidden = (this.htHiddenObjects.containsKey(name) || groupName != null && !this.groups.get(groupName).visible); +this.getObjectSettings(); +}, "~S,~N"); +Clazz.defineMethod(c$, "buildScene", +function(name, thisScene, htObjNames, htSecrets){ +var frame = thisScene.get(2); +var smap = new java.util.Hashtable(); +smap.put("pymolFrame", frame); +smap.put("generator", this); +smap.put("name", name); +var view = J.adapter.readers.pymol.PyMOLReader.listAt(thisScene, 0); +if (view != null) smap.put("pymolView", this.getPymolView(view, false)); +var visibilities = thisScene.get(1); +smap.put("visibilities", visibilities); +var sname = "_scene_" + name + "_"; +var reps = new Array(J.adapter.readers.pymol.PyMOL.REP_LIST.length); +for (var j = J.adapter.readers.pymol.PyMOL.REP_LIST.length; --j >= 0; ) { +var list = htObjNames.get(sname + J.adapter.readers.pymol.PyMOL.REP_LIST[j]); +var data = J.adapter.readers.pymol.PyMOLReader.listAt(list, 5); +if (data != null && data.size() > 0) reps[j] = J.adapter.readers.pymol.PyMOLReader.listToMap(data); +} +smap.put("moleculeReps", reps); +sname = "_!c_" + name + "_"; +var colorection = J.adapter.readers.pymol.PyMOLReader.listAt(thisScene, 3); +var n = colorection.size(); +n -= n % 2; +var colors = new Array(Clazz.doubleToInt(n / 2)); +for (var j = 0, i = 0; j < n; j += 2) { +var color = J.adapter.readers.pymol.PyMOLReader.intAt(colorection, j); +var c = htSecrets.get(sname + color); +if (c != null && c.size() > 1) colors[i++] = Clazz.newArray(-1, [Integer.$valueOf(color), c.get(1)]); +} +smap.put("colors", colors); +this.addJmolObject(1073742139, null, smap).jmolName = name; +}, "~S,JU.Lst,java.util.Map,java.util.Map"); +Clazz.overrideMethod(c$, "generateScene", +function(scene){ +JU.Logger.info("PyMOLScene - generateScene " + scene.get("name")); +this.jmolObjects.clear(); +this.bsHidden.clearAll(); +this.occludedObjects.clear(); +this.htHiddenObjects.clear(); +var frame = scene.get("pymolFrame"); +this.thisState = frame.intValue(); +this.addJmolObject(4115, null, Integer.$valueOf(this.thisState - 1)); +try { +this.generateVisibilities(scene.get("visibilities")); +this.generateColors(scene.get("colors")); +this.generateShapes(scene.get("moleculeReps")); +this.finalizeVisibility(); +this.offsetObjects(); +this.finalizeObjects(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info("PyMOLScene exception " + e); +e.printStackTrace(); +} else { +throw e; +} +} +}, "java.util.Map"); +Clazz.defineMethod(c$, "generateColors", +function(colors){ +if (colors == null) return; +for (var i = colors.length; --i >= 0; ) { +var item = colors[i]; +var color = (item[0]).intValue(); +var icolor = J.adapter.readers.pymol.PyMOL.getRGB(color); +var molecules = item[1]; +var bs = this.getSelectionAtoms(molecules, this.thisState, new JU.BS()); +this.addJmolObject(1153433601, bs, null).argb = icolor; +} +}, "~A"); +Clazz.defineMethod(c$, "processSelection", +function(selection){ +var id = J.adapter.readers.pymol.PyMOLReader.stringAt(selection, 0); +id = "_" + (id.equals("sele") ? id : "sele_" + id); +var g = this.getGroup(id); +this.getSelectionAtoms(J.adapter.readers.pymol.PyMOLReader.listAt(selection, 5), 0, g.bsAtoms); +}, "JU.Lst"); +Clazz.defineMethod(c$, "getSelectionAtoms", +function(molecules, istate, bs){ +if (molecules != null) for (var j = molecules.size(); --j >= 0; ) this.selectAllAtoms(J.adapter.readers.pymol.PyMOLReader.listAt(molecules, j), istate, bs); + +return bs; +}, "JU.Lst,~N,JU.BS"); +Clazz.defineMethod(c$, "selectAllAtoms", +function(obj, istate, bs){ +var name = J.adapter.readers.pymol.PyMOLReader.stringAt(obj, 0); +this.setSceneObject(name, istate); +var atomList = J.adapter.readers.pymol.PyMOLReader.listAt(obj, 1); +var k0 = (istate == 0 ? 1 : istate); +var k1 = (istate == 0 ? this.stateCount : istate); +for (var k = k0; k <= k1; k++) { +var atomMap = this.htAtomMap.get(this.fixName(name + "_" + k)); +if (atomMap == null) continue; +this.getBsAtoms(atomList, atomMap, bs); +} +}, "JU.Lst,~N,JU.BS"); +Clazz.defineMethod(c$, "generateVisibilities", +function(vis){ +if (vis == null) return; +var bs = new JU.BS(); +this.addJmolObject(12294, null, null); +for (var e, $e = this.groups.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) e.getValue().visible = true; + +for (var e, $e = vis.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (name.equals("all")) continue; +var list = e.getValue(); +var tok = (J.adapter.readers.pymol.PyMOLReader.intAt(list, 0) == 1 ? 1610625028 : 12294); +if (tok == 12294) this.htHiddenObjects.put(name, Boolean.TRUE); +switch (this.getObjectType(name)) { +case 12: +var g = this.groups.get(name); +if (g != null) g.visible = (tok == 1610625028); +break; +} +} +this.setGroupVisibilities(); +for (var e, $e = vis.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (name.equals("all")) continue; +this.setSceneObject(name, this.thisState); +if (this.objectHidden) continue; +var list = e.getValue(); +var tok = (this.objectHidden ? 12294 : 1610625028); +bs = null; +var info = this.objectJmolName; +switch (this.objectType) { +case 0: +case 12: +continue; +case 1: +bs = this.vwr.getDefinedAtomSet(info); +if (bs.nextSetBit(0) < 0) continue; +break; +case 4: +if (tok == 1610625028) { +var mdList = this.htMeasures.get(name); +if (mdList != null) this.addMeasurements(mdList, mdList[0].points.size(), null, this.getBS(J.adapter.readers.pymol.PyMOLReader.listAt(list, 2)), J.adapter.readers.pymol.PyMOLReader.intAt(list, 3), null, true); +}info += "_*"; +break; +case 6: +case 3: +case 2: +break; +} +this.addJmolObject(tok, bs, info); +} +}, "java.util.Map"); +Clazz.defineMethod(c$, "generateShapes", +function(reps){ +if (reps == null) return; +this.addJmolObject(12295, null, null).argb = this.thisState - 1; +for (var m = 0; m < this.moleculeNames.size(); m++) { +this.setSceneObject(this.moleculeNames.get(m), this.thisState); +if (this.objectHidden) continue; +var molReps = new Array(23); +for (var i = 0; i < 23; i++) molReps[i] = new JU.BS(); + +for (var i = reps.length; --i >= 0; ) { +var repMap = reps[i]; +var list = (repMap == null ? null : repMap.get(this.objectName)); +if (list != null) this.selectAllAtoms(list, this.thisState, molReps[i]); +} +this.createShapeObjects(molReps, true, -1, -1); +} +}, "~A"); +Clazz.defineMethod(c$, "getBS", +function(list){ +var bs = new JU.BS(); +for (var i = list.size(); --i >= 0; ) bs.set(J.adapter.readers.pymol.PyMOLReader.intAt(list, i)); + +return bs; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getBsAtoms", +function(list, atomMap, bs){ +for (var i = list.size(); --i >= 0; ) bs.set(atomMap[J.adapter.readers.pymol.PyMOLReader.intAt(list, i)]); + +}, "JU.Lst,~A,JU.BS"); +Clazz.defineMethod(c$, "setReaderObjects", +function(){ +this.clearReaderData(); +this.finalizeObjects(); +if (!this.haveScenes) { +this.uniqueSettings = null; +this.bsUniqueBonds = this.bsStickBonds = this.bsLineBonds = null; +}}); +Clazz.defineMethod(c$, "finalizeObjects", +function(){ +this.vwr.setStringProperty("defaults", "PyMOL"); +for (var i = 0; i < this.jmolObjects.size(); i++) { +try { +var obj = this.jmolObjects.get(i); +obj.finalizeObject(this, this.vwr.ms, this.mepList, this.doCache); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e); +e.printStackTrace(); +} else { +throw e; +} +} +} +this.finalizeUniqueBonds(); +this.jmolObjects.clear(); +}); +Clazz.defineMethod(c$, "offsetObjects", +function(){ +for (var i = 0, n = this.jmolObjects.size(); i < n; i++) this.jmolObjects.get(i).offset(this.baseModelIndex, this.baseAtomIndex); + +}); +Clazz.defineMethod(c$, "getJmolObject", +function(id, bsAtoms, info){ +if (this.baseAtomIndex > 0) bsAtoms = JU.BSUtil.copy(bsAtoms); +return new J.adapter.readers.pymol.JmolObject(id, this.objectNameID, bsAtoms, info); +}, "~N,JU.BS,~O"); +Clazz.defineMethod(c$, "addJmolObject", +function(id, bsAtoms, info){ +return this.addObject(this.getJmolObject(id, bsAtoms, info)); +}, "~N,JU.BS,~O"); +Clazz.defineMethod(c$, "getPymolView", +function(view, isViewObj){ +var pymolView = Clazz.newFloatArray (21, 0); +var depthCue = this.booleanSetting(84); +var fog = this.booleanSetting(88); +var fog_start = this.floatSetting(192); +var pt = 0; +var i = 0; +for (var j = 0; j < 3; j++) pymolView[pt++] = J.adapter.readers.pymol.PyMOLReader.floatAt(view, i++); + +if (isViewObj) i++; +for (var j = 0; j < 3; j++) pymolView[pt++] = J.adapter.readers.pymol.PyMOLReader.floatAt(view, i++); + +if (isViewObj) i++; +for (var j = 0; j < 3; j++) pymolView[pt++] = J.adapter.readers.pymol.PyMOLReader.floatAt(view, i++); + +if (isViewObj) i += 5; +for (var j = 0; j < 8; j++) pymolView[pt++] = J.adapter.readers.pymol.PyMOLReader.floatAt(view, i++); + +var isOrtho = this.booleanSetting(23); +var fov = this.floatSetting(152); +pymolView[pt++] = (isOrtho ? fov : -fov); +pymolView[pt++] = (depthCue ? 1 : 0); +pymolView[pt++] = (fog ? 1 : 0); +pymolView[pt++] = fog_start; +return pymolView; +}, "JU.Lst,~B"); +Clazz.defineMethod(c$, "globalSetting", +function(i){ +var setting = J.adapter.readers.pymol.PyMOLReader.listAt(this.settings, i); +if (setting != null && setting.size() == 3) return (setting.get(2)).floatValue(); +return J.adapter.readers.pymol.PyMOL.getDefaultSetting(i, this.pymolVersion); +}, "~N"); +Clazz.defineMethod(c$, "addGroup", +function(object, parent, type, bsAtoms){ +if (this.groups == null) this.groups = new java.util.Hashtable(); +var myGroup = this.getGroup(this.objectName); +myGroup.object = object; +myGroup.objectNameID = this.objectNameID; +myGroup.visible = !this.objectHidden; +myGroup.type = type; +if (!myGroup.visible) { +this.occludedObjects.put(this.objectNameID, Boolean.TRUE); +this.htHiddenObjects.put(this.objectName, Boolean.TRUE); +}if (parent != null && parent.length != 0) this.getGroup(parent).addList(myGroup); +if (bsAtoms != null) myGroup.addGroupAtoms(bsAtoms); +return myGroup; +}, "JU.Lst,~S,~N,JU.BS"); +Clazz.defineMethod(c$, "getGroup", +function(name){ +var g = this.groups.get(name); +if (g == null) { +this.groups.put(name, (g = new J.adapter.readers.pymol.PyMOLGroup(name))); +this.defineAtoms(name, g.bsAtoms); +}return g; +}, "~S"); +Clazz.defineMethod(c$, "finalizeVisibility", +function(){ +this.setGroupVisibilities(); +if (this.groups != null) for (var i = this.jmolObjects.size(); --i >= 0; ) { +var obj = this.jmolObjects.get(i); +if (obj.jmolName != null && this.occludedObjects.containsKey(obj.jmolName)) obj.visible = false; +} +if (!this.bsHidden.isEmpty()) this.addJmolObject(2097194, this.bsHidden, null); +}); +Clazz.defineMethod(c$, "setCarveSets", +function(htObjNames){ +if (this.htCarveSets.isEmpty()) return; +for (var e, $e = this.htCarveSets.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.getSelectionAtoms(J.adapter.readers.pymol.PyMOLReader.listAt(htObjNames.get(e.getKey()), 5), 0, e.getValue()); + +}, "java.util.Map"); +Clazz.defineMethod(c$, "setGroupVisibilities", +function(){ +if (this.groups == null) return; +var list = this.groups.values(); +var bsAll = new JU.BS(); +for (var g, $g = list.iterator (); $g.hasNext()&& ((g = $g.next ()) || true);) { +bsAll.or(g.bsAtoms); +if (g.parent == null) this.setGroupVisible(g, true); + else if (g.list.isEmpty()) g.addGroupAtoms( new JU.BS()); +} +this.defineAtoms("all", bsAll); +}); +Clazz.defineMethod(c$, "defineAtoms", +function(name, bs){ +this.htDefinedAtoms.put(this.getJmolName(name), bs); +}, "~S,JU.BS"); +Clazz.defineMethod(c$, "getJmolName", +function(name){ +return "__" + this.fixName(name); +}, "~S"); +Clazz.defineMethod(c$, "createShapeObjects", +function(reps, allowSurface, ac0, ac){ +if (ac >= 0) { +this.bsAtoms = JU.BSUtil.newBitSet2(ac0, ac); +var jo; +jo = this.addJmolObject(1153433601, this.bsAtoms, null); +this.colixes = JU.AU.ensureLengthShort(this.colixes, ac); +for (var i = ac; --i >= ac0; ) this.colixes[i] = this.atomColorList.get(i).intValue(); + +jo.setColors(this.colixes, 0); +jo.setSize(0); +jo = this.addJmolObject(1, this.bsAtoms, null); +jo.setSize(0); +}this.createShapeObject(7, reps[7]); +this.createShapeObject(0, reps[0]); +this.fixReps(reps); +this.createSpacefillObjects(); +for (var i = 0; i < 23; i++) switch (i) { +case 7: +case 0: +continue; +case 8: +case 2: +if (!allowSurface) continue; +switch (this.surfaceMode) { +case 0: +reps[i].andNot(this.bsNoSurface); +break; +case 1: +case 3: +break; +case 2: +case 4: +reps[i].andNot(this.bsHydrogen); +break; +} +default: +this.createShapeObject(i, reps[i]); +continue; +} + +this.bsAtoms = null; +}, "~A,~B,~N,~N"); +Clazz.defineMethod(c$, "addLabel", +function(atomIndex, uniqueID, atomColor, labelPos, label){ +var icolor = Clazz.floatToInt(this.getUniqueFloatDef(uniqueID, 66, this.labelColor)); +if (icolor == -7 || icolor == -6) { +} else if (icolor < 0) { +icolor = atomColor; +}if (labelPos == null) { +var offset = this.getUniquePoint(uniqueID, 471, null); +if (offset == null) offset = this.labelPosition; + else offset.add(this.labelPosition); +this.setLabelPosition(offset, labelPos); +}this.labels.put(Integer.$valueOf(atomIndex), this.newTextLabel(label, labelPos, icolor, this.labelFontId, this.labelSize)); +}, "~N,~N,~N,~A,~S"); +Clazz.defineMethod(c$, "getUniqueFloatDef", +function(id, key, defaultValue){ +var setting; +if (id <= 0 || (setting = this.uniqueSettings.get(Integer.$valueOf((id << 10) + key))) == null) return defaultValue; +var v = (setting.get(2)).floatValue(); +if (JU.Logger.debugging) JU.Logger.debug("Pymol unique setting for " + id + ": [" + key + "] = " + v); +return v; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getUniquePoint", +function(id, key, pt){ +var setting; +if (id <= 0 || (setting = this.uniqueSettings.get(Integer.$valueOf((id << 10) + key))) == null) return pt; +pt = new JU.P3(); +J.adapter.readers.pymol.PyMOLReader.pointAt(setting.get(2), 0, pt); +JU.Logger.info("Pymol unique setting for " + id + ": " + key + " = " + pt); +return pt; +}, "~N,~N,JU.P3"); +Clazz.defineMethod(c$, "getObjectSetting", +function(i){ +return this.objectSettings.get(Integer.$valueOf(i)); +}, "~N"); +Clazz.defineMethod(c$, "booleanSetting", +function(i){ +return (this.floatSetting(i) != 0); +}, "~N"); +Clazz.defineMethod(c$, "floatSetting", +function(i){ +var setting = this.getSetting(i); +if (setting != null && setting.size() == 3) return (setting.get(2)).floatValue(); +return J.adapter.readers.pymol.PyMOL.getDefaultSetting(i, this.pymolVersion); +}, "~N"); +Clazz.defineMethod(c$, "stringSetting", +function(i){ +var setting = this.getSetting(i); +if (setting != null && setting.size() == 3) return J.adapter.readers.pymol.PyMOLReader.stringAt(setting, 2); +return J.adapter.readers.pymol.PyMOL.getDefaultSettingS(i, this.pymolVersion); +}, "~N"); +Clazz.defineMethod(c$, "getSetting", +function(i){ +var setting = null; +if (this.stateSettings != null) setting = this.stateSettings.get(Integer.$valueOf(i)); +if (setting == null && this.objectSettings != null) setting = this.objectSettings.get(Integer.$valueOf(i)); +if (setting == null && i < this.settings.size()) setting = this.settings.get(i); +return setting; +}, "~N"); +Clazz.defineMethod(c$, "setLabelPosition", +function(offset, labelPos){ +labelPos[0] = 1; +labelPos[1] = offset.x; +labelPos[2] = offset.y; +labelPos[3] = offset.z; +return labelPos; +}, "JU.P3,~A"); +Clazz.defineMethod(c$, "addCGO", +function(data, color){ +data.addLast(this.objectName); +var jo = this.addJmolObject(23, null, data); +jo.argb = color; +jo.translucency = this.floatSetting(441); +return this.fixName(this.objectName); +}, "JU.Lst,~N"); +Clazz.defineMethod(c$, "addMeasurements", +function(mdList, nCoord, list, bsReps, color, offsets, haveLabels){ +var isNew = (mdList == null); +var n = (isNew ? Clazz.doubleToInt(Clazz.doubleToInt(list.size() / 3) / nCoord) : mdList.length); +if (n == 0) return false; +var drawLabel = haveLabels && bsReps.get(3); +var drawDashes = bsReps.get(10); +var rad = this.floatSetting(107) / 20; +if (rad == 0) rad = 0.05; +if (!drawDashes) rad = -5.0E-4; +if (color < 0) color = Clazz.floatToInt(this.floatSetting(574)); +var c = J.adapter.readers.pymol.PyMOL.getRGB(color); +var colix = JU.C.getColix(c); +var clabel = (this.labelColor < 0 ? color : this.labelColor); +if (isNew) { +mdList = new Array(n); +this.htMeasures.put(this.objectName, mdList); +}var bs = JU.BSUtil.newAndSetBit(0); +for (var index = 0, p = 0; index < n; index++) { +var md; +var offset; +if (isNew) { +var points = new JU.Lst(); +for (var i = 0; i < nCoord; i++, p += 3) points.addLast(J.adapter.readers.pymol.PyMOLReader.pointAt(list, p, new JU.Point3fi())); + +offset = J.adapter.readers.pymol.PyMOLReader.floatsAt(J.adapter.readers.pymol.PyMOLReader.listAt(offsets, index), 0, Clazz.newFloatArray (7, 0), 7); +if (offset == null) offset = this.setLabelPosition(this.labelPosition, Clazz.newFloatArray (7, 0)); +md = mdList[index] = this.vwr.newMeasurementData(this.objectNameID + "_" + (index + 1), points); +md.note = this.objectName; +} else { +md = mdList[index]; +offset = md.text.pymolOffset; +}var nDigits = Clazz.floatToInt(this.floatSetting(J.adapter.readers.pymol.PyMOLScene.MEAS_DIGITS[nCoord - 2])); +var strFormat = nCoord + ": " + (drawLabel ? "%0." + (nDigits < 0 ? 1 : nDigits) + "VALUE" : ""); +var text = this.newTextLabel(strFormat, offset, clabel, Clazz.floatToInt(this.floatSetting(328)), this.floatSetting(453)); +md.set(12290, null, null, null, strFormat, "angstroms", null, false, false, null, false, Clazz.floatToInt(rad * 2000), colix, text, NaN, null); +this.addJmolObject(6, bs, md); +} +return true; +}, "~A,~N,JU.Lst,JU.BS,~N,JU.Lst,~B"); +Clazz.defineMethod(c$, "getViewScript", +function(view){ +var sb = new JU.SB(); +var pymolView = this.getPymolView(view, true); +sb.append(";set translucent " + (this.globalSetting(213) != 2) + ";set zshadePower 1;set traceAlpha " + (this.globalSetting(111) != 0)); +var rockets = this.cartoonRockets; +sb.append(";set cartoonRockets " + rockets); +if (rockets) sb.append(";set rocketBarrels " + rockets); +sb.append(";set cartoonLadders " + this.haveNucleicLadder); +sb.append(";set ribbonBorder " + (this.globalSetting(118) != 0)); +sb.append(";set cartoonFancy " + (this.globalSetting(118) == 0)); +var s = "000000" + Integer.toHexString(this.bgRgb & 0xFFFFFF); +s = "[x" + s.substring(s.length - 6) + "]"; +sb.append(";background " + s); +sb.append(";moveto 0 PyMOL " + JU.Escape.eAF(pymolView)); +sb.append(";save orientation 'default';"); +return sb; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getColix", +function(colorIndex, translucency){ +var colix = (colorIndex == -7 ? (JU.C.getBgContrast(this.bgRgb) == 8 ? 4 : 8) : colorIndex == -6 ? JU.C.getBgContrast(this.bgRgb) : JU.C.getColixO(Integer.$valueOf(J.adapter.readers.pymol.PyMOL.getRGB(colorIndex)))); +return JU.C.getColixTranslucent3(colix, translucency > 0, translucency); +}, "~N,~N"); +Clazz.defineMethod(c$, "setAtomColor", +function(atomColor){ +this.atomColorList.addLast(Integer.$valueOf(this.getColix(atomColor, 0))); +}, "~N"); +Clazz.defineMethod(c$, "setFrameObject", +function(type, info){ +if (info != null) { +this.frameObj = this.getJmolObject(type, null, info); +return; +}if (this.frameObj == null) return; +this.frameObj.finalizeObject(this, this.vwr.ms, null, false); +this.frameObj = null; +}, "~N,~O"); +Clazz.defineMethod(c$, "fixName", +function(name){ +var chars = name.toLowerCase().toCharArray(); +for (var i = chars.length; --i >= 0; ) if (!JU.PT.isLetterOrDigit(chars[i])) chars[i] = '_'; + +return String.valueOf(chars); +}, "~S"); +Clazz.defineMethod(c$, "getObjectID", +function(name){ +return this.objectInfo.get(name)[0]; +}, "~S"); +Clazz.defineMethod(c$, "getObjectType", +function(name){ +var o = this.objectInfo.get(name); +return (o == null ? 0 : (o[1]).intValue()); +}, "~S"); +Clazz.defineMethod(c$, "setAtomMap", +function(atomMap, ac0){ +this.htAtomMap.put(this.objectNameID, atomMap); +var bsAtoms = this.htDefinedAtoms.get(this.objectJmolName); +if (bsAtoms == null) { +bsAtoms = JU.BS.newN(ac0 + atomMap.length); +JU.Logger.info("PyMOL molecule " + this.objectName); +this.htDefinedAtoms.put(this.objectJmolName, bsAtoms); +this.htObjectAtoms.put(this.objectName, bsAtoms); +this.moleculeNames.addLast(this.objectName); +}return bsAtoms; +}, "~A,~N"); +Clazz.defineMethod(c$, "newTextLabel", +function(label, labelOffset, colorIndex, fontID, fontSize){ +var face; +var factor = 1; +switch (fontID) { +default: +case 11: +case 12: +case 13: +case 14: +face = "SansSerif"; +break; +case 0: +case 1: +face = "Monospaced"; +break; +case 9: +case 10: +case 15: +case 16: +case 17: +case 18: +face = "Serif"; +break; +} +var style; +switch (fontID) { +default: +style = "Plain"; +break; +case 6: +case 12: +case 16: +case 17: +style = "Italic"; +break; +case 7: +case 10: +case 13: +style = "Bold"; +break; +case 8: +case 14: +case 18: +style = "BoldItalic"; +break; +} +var font = this.vwr.getFont3D(face, style, fontSize == 0 ? 12 : fontSize * factor); +var t = JM.Text.newLabel(this.vwr, font, label, this.getColix(colorIndex, 0), 0, 0, 0); +if (t != null) t.pymolOffset = labelOffset; +return t; +}, "~S,~A,~N,~N,~N"); +Clazz.defineMethod(c$, "setVersionSettings", +function(){ +if (this.pymolVersion < 100) { +this.addSetting(550, 2, Integer.$valueOf(0)); +this.addSetting(529, 2, Integer.$valueOf(2)); +this.addSetting(471, 4, Clazz.newDoubleArray(-1, [1, 1, 0])); +if (this.pymolVersion < 99) { +this.addSetting(448, 2, Integer.$valueOf(0)); +this.addSetting(431, 2, Integer.$valueOf(0)); +this.addSetting(361, 2, Integer.$valueOf(1)); +}}}); +Clazz.defineMethod(c$, "addSetting", +function(key, type, val){ +var settingCount = this.settings.size(); +if (settingCount <= key) for (var i = key + 1; --i >= settingCount; ) this.settings.addLast(null); + +if (type == 4) { +var d = val; +var list; +val = list = new JU.Lst(); +for (var i = 0; i < 3; i++) list.addLast(Double.$valueOf(d[i])); + +}var setting = new JU.Lst(); +setting.addLast(Integer.$valueOf(key)); +setting.addLast(Integer.$valueOf(type)); +setting.addLast(val); +this.settings.set(key, setting); +}, "~N,~N,~O"); +Clazz.defineMethod(c$, "fixReps", +function(reps){ +this.htSpacefill.clear(); +this.bsCartoon.clearAll(); +for (var iAtom = this.bsAtoms.nextSetBit(0); iAtom >= 0; iAtom = this.bsAtoms.nextSetBit(iAtom + 1)) { +var rad = 0; +var uniqueID = (this.reader == null ? this.uniqueIDs[iAtom] : this.reader.getUniqueID(iAtom)); +if (reps[1].get(iAtom)) { +rad = (this.reader == null ? this.radii[iAtom] : this.reader.getVDW(iAtom)) * this.getUniqueFloatDef(uniqueID, 155, this.sphereScale); +} else if (reps[4].get(iAtom)) { +rad = this.nonbondedSize; +}if (rad != 0) { +var r = Float.$valueOf(rad); +var bsr = this.htSpacefill.get(r); +if (bsr == null) this.htSpacefill.put(r, bsr = new JU.BS()); +bsr.set(iAtom); +}var cartoonType = (this.reader == null ? this.cartoonTypes[iAtom] : this.reader.getCartoonType(iAtom)); +if (reps[5].get(iAtom)) { +switch (cartoonType) { +case 1: +case 4: +reps[21].set(iAtom); +case -1: +reps[5].clear(iAtom); +this.bsCartoon.clear(iAtom); +break; +case 7: +reps[22].set(iAtom); +reps[5].clear(iAtom); +this.bsCartoon.clear(iAtom); +break; +default: +this.bsCartoon.set(iAtom); +} +}} +reps[5].and(this.bsCartoon); +this.cleanSingletons(reps[5]); +this.cleanSingletons(reps[6]); +this.cleanSingletons(reps[21]); +this.cleanSingletons(reps[22]); +this.bsCartoon.and(reps[5]); +}, "~A"); +Clazz.defineMethod(c$, "cleanSingletons", +function(bs){ +if (bs.isEmpty()) return; +bs.and(this.bsAtoms); +var bsr = new JU.BS(); +var n = bs.length(); +var pass = 0; +while (true) { +for (var i = 0, offset = 0, iPrev = -2147483648, iSeqLast = -2147483648, iSeq = -2147483648; i < n; i++) { +if (iPrev < 0 || (this.reader == null ? this.newChain[i] : this.reader.compareAtoms(iPrev, i))) offset++; +iSeq = (this.reader == null ? this.sequenceNumbers[i] : this.reader.getSequenceNumber(i)); +if (iSeq != iSeqLast) { +iSeqLast = iSeq; +offset++; +}if (pass == 0) { +if (bs.get(i)) bsr.set(offset); +} else if (!bsr.get(offset)) bs.clear(i); +iPrev = i; +} +if (++pass == 2) break; +var bsnot = new JU.BS(); +for (var i = bsr.nextSetBit(0); i >= 0; i = bsr.nextSetBit(i + 1)) if (!bsr.get(i - 1) && !bsr.get(i + 1)) bsnot.set(i); + +bsr.andNot(bsnot); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "createShapeObject", +function(shapeID, bs){ +if (bs.isEmpty()) return; +var jo = null; +switch (shapeID) { +case 11: +bs.and(this.bsNonbonded); +if (bs.isEmpty()) return; +this.setUniqueObjects(7, bs, 0, 0, 524, this.nonbondedTranslucency, 0, this.nonbondedSize, 0.5); +break; +case 4: +case 1: +this.setUniqueObjects(0, bs, 173, this.sphereColor, 172, this.sphereTranslucency, 155, this.sphereScale, 1); +break; +case 19: +var ellipsoidTranslucency = this.floatSetting(571); +var ellipsoidColor = Clazz.floatToInt(this.floatSetting(570)); +var ellipsoidScale = this.floatSetting(569); +this.setUniqueObjects(20, bs, 570, ellipsoidColor, 571, ellipsoidTranslucency, 569, ellipsoidScale, 50); +break; +case 9: +this.setUniqueObjects(16, bs, 210, this.dotColor, 0, 0, 155, this.sphereScale, 1); +break; +case 2: +var withinDistance = this.floatSetting(344); +jo = this.addJmolObject(135180, bs, Clazz.newArray(-1, [this.booleanSetting(156) ? "FULLYLIT" : "FRONTLIT", (this.surfaceMode == 3 || this.surfaceMode == 4) ? " only" : "", this.bsCarve, Float.$valueOf(withinDistance)])); +jo.setSize(this.floatSetting(4) * (this.solventAccessible ? -1 : 1)); +jo.translucency = this.transparency; +if (this.surfaceColor >= 0) jo.argb = J.adapter.readers.pymol.PyMOL.getRGB(this.surfaceColor); +jo.modelIndex = this.currentAtomSetIndex; +jo.cacheID = this.surfaceInfoName; +this.setUniqueObjects(24, bs, 144, this.surfaceColor, 138, this.transparency, 0, 0, 0); +break; +case 8: +jo = this.addJmolObject(135180, bs, null); +jo.setSize(this.floatSetting(4)); +jo.translucency = this.transparency; +this.setUniqueObjects(24, bs, 144, this.surfaceColor, 138, this.transparency, 0, 0, 0); +break; +case 3: +bs.and(this.bsLabeled); +if (bs.isEmpty()) return; +jo = this.addJmolObject(5, bs, this.labels); +break; +case 10: +case 7: +jo = this.addJmolObject(659488, bs, null); +jo.setSize(this.floatSetting(44) / 15); +var color = Clazz.floatToInt(this.floatSetting(526)); +if (color >= 0) jo.argb = J.adapter.readers.pymol.PyMOL.getRGB(color); +break; +case 0: +jo = this.addJmolObject(1, bs, null); +jo.setSize(this.floatSetting(21) * 2); +jo.translucency = this.stickTranslucency; +var col = Clazz.floatToInt(this.floatSetting(376)); +if (col >= 0) jo.argb = J.adapter.readers.pymol.PyMOL.getRGB(col); +break; +case 5: +this.createCartoonObject("H", (this.cartoonRockets ? 181 : 100)); +this.createCartoonObject("S", 96); +this.createCartoonObject("L", 92); +this.createCartoonObject(" ", 92); +break; +case 22: +this.createPuttyObject(bs); +break; +case 21: +this.createTraceObject(bs); +break; +case 6: +this.createRibbonObject(bs); +break; +default: +JU.Logger.error("Unprocessed representation type " + shapeID); +} +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "setUniqueObjects", +function(shape, bs, setColor, color, setTrans, trans, setSize, size, f){ +var n = bs.cardinality(); +var colixes = (setColor == 0 ? null : Clazz.newShortArray (n, 0)); +var atrans = (setTrans == 0 ? null : Clazz.newFloatArray (n, 0)); +var sizes = Clazz.newFloatArray (n, 0); +for (var pt = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), pt++) { +var id = (this.reader == null ? this.uniqueIDs[i] : this.reader.getUniqueID(i)); +if (colixes != null) { +var c = Clazz.floatToInt(this.getUniqueFloatDef(id, setColor, color)); +if (c > 0) colixes[pt] = this.getColix(c, 0); +}if (atrans != null) { +atrans[pt] = this.getUniqueFloatDef(id, setTrans, trans); +}sizes[pt] = this.getUniqueFloatDef(id, setSize, size) * f; +} +return this.addJmolObject(shape, bs, Clazz.newArray(-1, [colixes, atrans, sizes])); +}, "~N,JU.BS,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "createSpacefillObjects", +function(){ +for (var e, $e = this.htSpacefill.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var r = e.getKey().floatValue(); +var bs = e.getValue(); +this.addJmolObject(1153433601, bs, null).rd = new J.atomdata.RadiusData(null, r, J.atomdata.RadiusData.EnumType.ABSOLUTE, J.c.VDW.AUTO); +} +this.htSpacefill.clear(); +}); +Clazz.defineMethod(c$, "createTraceObject", +function(bs){ +this.checkNucleicObject(bs, true); +if (bs.isEmpty()) return; +var r = this.floatSetting(103); +var jo = this.setUniqueObjects(10, bs, 236, this.cartoonColor, 0, 0, 0, 0, 0); +jo.setSize(r * 2); +jo.translucency = this.cartoonTranslucency; +}, "JU.BS"); +Clazz.defineMethod(c$, "checkNucleicObject", +function(bs, isTrace){ +var jo; +var bsNuc = JU.BSUtil.copy(this.bsNucleic); +bsNuc.and(bs); +if (!bsNuc.isEmpty()) { +if (isTrace && this.cartoonLadderMode) this.haveNucleicLadder = true; +jo = this.addJmolObject(11, bsNuc, null); +jo.translucency = this.cartoonTranslucency; +jo.setSize(this.floatSetting(103) * 2); +bs.andNot(bsNuc); +}}, "JU.BS,~B"); +Clazz.defineMethod(c$, "createPuttyObject", +function(bs){ +var info = Clazz.newFloatArray(-1, [this.floatSetting(378), this.floatSetting(377), this.floatSetting(382), this.floatSetting(379), this.floatSetting(380), this.floatSetting(381), this.floatSetting(581)]); +this.addJmolObject(1112152078, bs, info).translucency = this.cartoonTranslucency; +}, "JU.BS"); +Clazz.defineMethod(c$, "createRibbonObject", +function(bs){ +var isTrace = (this.floatSetting(19) > 1); +var r = this.floatSetting(20) * 2; +var rayScale = this.floatSetting(327); +if (r == 0) r = this.floatSetting(106) * (isTrace ? 1 : (rayScale <= 1 ? 0.5 : rayScale)) * 0.1; +var jo = this.setUniqueObjects((isTrace ? 10 : 9), bs, 235, this.ribbonColor, 0, 0, 0, 0, 0); +jo.setSize(r); +jo.translucency = this.ribbonTranslucency; +}, "JU.BS"); +Clazz.defineMethod(c$, "createCartoonObject", +function(key, sizeID){ +var bs = JU.BSUtil.copy(this.ssMapAtom.get(key)); +if (bs == null) return; +bs.and(this.bsCartoon); +if (bs.isEmpty()) return; +if (key.equals(" ")) { +this.checkNucleicObject(bs, false); +if (bs.isEmpty()) return; +}var jo = this.setUniqueObjects(11, bs, 236, this.cartoonColor, 0, 0, 0, 0, 0); +jo.setSize(this.floatSetting(sizeID) * 2); +jo.translucency = this.cartoonTranslucency; +}, "~S,~N"); +Clazz.defineMethod(c$, "addObject", +function(obj){ +this.jmolObjects.addLast(obj); +return obj; +}, "J.adapter.readers.pymol.JmolObject"); +Clazz.defineMethod(c$, "setGroupVisible", +function(g, parentVis){ +var vis = parentVis && g.visible; +if (vis) return; +g.visible = false; +this.occludedObjects.put(g.objectNameID, Boolean.TRUE); +this.htHiddenObjects.put(g.name, Boolean.TRUE); +switch (g.type) { +case 1: +this.bsHidden.or(g.bsAtoms); +break; +default: +g.occluded = true; +break; +} +for (var gg, $gg = g.list.values().iterator (); $gg.hasNext()&& ((gg = $gg.next ()) || true);) { +this.setGroupVisible(gg, vis); +} +}, "J.adapter.readers.pymol.PyMOLGroup,~B"); +Clazz.defineMethod(c$, "getSSMapAtom", +function(ssType){ +var bs = this.ssMapAtom.get(ssType); +if (bs == null) this.ssMapAtom.put(ssType, bs = new JU.BS()); +return bs; +}, "~S"); +Clazz.defineMethod(c$, "setAtomDefs", +function(){ +this.setGroupVisibilities(); +var defs = new java.util.Hashtable(); +for (var e, $e = this.htDefinedAtoms.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var bs = e.getValue(); +if (!bs.isEmpty()) defs.put(e.getKey(), bs); +} +this.addJmolObject(12290, null, defs); +return defs; +}); +Clazz.defineMethod(c$, "needSelections", +function(){ +return this.haveScenes || !this.htCarveSets.isEmpty(); +}); +Clazz.defineMethod(c$, "setUniqueBonds", +function(bsBonds, isSticks){ +if (isSticks) { +this.bsStickBonds.or(bsBonds); +this.bsStickBonds.andNot(this.bsLineBonds); +} else { +this.bsLineBonds.or(bsBonds); +this.bsLineBonds.andNot(this.bsStickBonds); +}}, "JU.BS,~B"); +Clazz.defineMethod(c$, "finalizeUniqueBonds", +function(){ +if (this.uniqueList == null) return; +var bondCount = this.vwr.ms.bondCount; +var bonds = this.vwr.ms.bo; +for (var i = this.bsUniqueBonds.nextSetBit(0); i >= 0; i = this.bsUniqueBonds.nextSetBit(i + 1)) { +var rad = NaN; +var id = this.uniqueList.get(Integer.$valueOf(i)).intValue(); +if (this.bsLineBonds.get(i)) { +rad = this.getUniqueFloatDef(id, 44, NaN) / 30; +} else if (this.bsStickBonds.get(i)) { +rad = this.getUniqueFloatDef(id, 21, NaN); +}var c = Clazz.floatToInt(this.getUniqueFloatDef(id, 376, 2147483647)); +if (c != 2147483647) c = J.adapter.readers.pymol.PyMOL.getRGB(c); +var valence = this.getUniqueFloatDef(id, 64, NaN); +var t = this.getUniqueFloatDef(id, 198, NaN); +if (i < 0 || i >= bondCount) return; +var b = bonds[i]; +this.setBondParameters(b, this.thisState - 1, rad, valence, c, t); +} +}); +Clazz.defineMethod(c$, "setBondParameters", +function(b, modelIndex, rad, pymolValence, argb, trans){ +if (modelIndex >= 0 && b.atom1.mi != modelIndex) return; +if (!Float.isNaN(rad)) b.mad = Clazz.floatToShort(rad * 2000); +var colix = b.colix; +if (argb != 2147483647) colix = JU.C.getColix(argb); +if (!Float.isNaN(trans)) b.colix = JU.C.getColixTranslucent3(colix, trans != 0, trans); + else if (b.colix != colix) b.colix = JU.C.copyColixTranslucency(b.colix, colix); +if (pymolValence == 1) b.order |= 98304; + else if (pymolValence == 0) b.order |= 65536; +}, "JM.Bond,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "addMesh", +function(tok, obj, objName, isMep){ +var jo = this.addJmolObject(tok, null, obj); +this.setSceneObject(objName, -1); +var meshColor = Clazz.floatToInt(this.floatSetting(146)); +if (meshColor < 0) meshColor = J.adapter.readers.pymol.PyMOLReader.intAt(J.adapter.readers.pymol.PyMOLReader.listAt(obj, 0), 2); +if (!isMep) { +jo.setSize(this.meshWidth); +jo.argb = J.adapter.readers.pymol.PyMOL.getRGB(meshColor); +}jo.translucency = this.transparency; +jo.cacheID = this.surfaceInfoName; +}, "~N,JU.Lst,~S,~B"); +Clazz.defineMethod(c$, "addIsosurface", +function(objectName){ +var jo = this.addJmolObject(135180, null, objectName); +jo.cacheID = this.surfaceInfoName; +return jo; +}, "~S"); +c$.MEAS_DIGITS = Clazz.newIntArray(-1, [530, 531, 532]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/AdfReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/AdfReader.js new file mode 100755 index 000000000000..48a24a2f945d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/AdfReader.js @@ -0,0 +1,309 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.SlaterReader"], "J.adapter.readers.quantum.AdfReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.api.JmolAdapter", "J.quantum.SlaterData", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.htSymmetries = null; +this.vSymmetries = null; +this.energy = null; +this.nXX = 0; +this.symLine = null; +this.isADF = false; +this.lastModel = -1; +if (!Clazz.isClassDefined("J.adapter.readers.quantum.AdfReader.SymmetryData")) { +J.adapter.readers.quantum.AdfReader.$AdfReader$SymmetryData$ (); +} +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "AdfReader", J.adapter.readers.quantum.SlaterReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.isADF = true; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf("Irreducible Representations, including subspecies") >= 0) { +this.readSymmetries(); +return true; +}if (this.line.indexOf("S F O s *** (Symmetrized Fragment Orbitals) ***") >= 0) { +this.readSlaterBasis(); +return true; +}if (this.line.indexOf("current energy") >= 0) { +var tokens = JU.PT.getTokens(this.line); +this.energy = tokens[2]; +return true; +}if (this.isADF ? this.line.indexOf(" Coordinates (Cartesian)") >= 0 || this.line.indexOf("G E O M E T R Y ***") >= 0 : this.line.indexOf("Formula:") >= 0) { +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.readCoordinates(); +return true; +}if (this.line.startsWith("Atomic charges")) { +this.readCharges(); +return true; +}if (this.line.indexOf(" ====== Eigenvectors (rows) in BAS representation") >= 0) { +if (this.doReadMolecularOrbitals) this.readMolecularOrbitals(JU.PT.getTokens(this.symLine)[1]); +return true; +}if (!this.doProcessLines) { +return true; +}if (this.line.indexOf("Total Bonding Energy:") >= 0) { +var tokens = JU.PT.getTokens(this.line.substring(this.line.indexOf("Total Bonding Energy:"))); +var bondingEnergy = tokens[3]; +this.asc.setModelInfoForSet("bondingEnergy", Double.$valueOf(bondingEnergy), this.asc.iSet); +this.asc.setAtomSetModelProperty("bondingEnergy", bondingEnergy); +return true; +}if (this.line.indexOf(this.isADF ? "Vibrations" : "Normal Modes") >= 0) { +this.readFrequencies(); +return true; +}if (this.line.indexOf(" === ") >= 0) { +this.symLine = this.line; +return true; +}if (this.line.indexOf(" ====== Eigenvectors (rows) in BAS representation") >= 0) { +this.readMolecularOrbitals(JU.PT.getTokens(this.symLine)[1]); +return true; +}if (!this.isADF && this.line.startsWith(" Old frequency:")) { +this.readOldFrequency(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "readOldFrequency", +function(){ +var tokens = JU.PT.getTokens(this.line); +var frqOld = JU.PT.parseFloat(tokens[2].$replace(",", "")); +var frqNew = JU.PT.parseFloat(tokens[4]); +var finalModel = this.modelNumber + this.vibrationNumber; +for (var i = this.modelNumber; i < finalModel; i++) { +var cname = this.asc.getAtomSetAuxiliaryInfoValue(i, "name"); +var frqPrev = cname.$replace(" cm^-1", ""); +var frqOldFmt = JU.PT.formatStringF("%.3f", "f", frqOld); +if (frqOldFmt.equals(frqPrev)) { +var frqNewFmt = JU.PT.formatStringF("%.3f", "f", frqNew); +cname += " (now " + frqNewFmt + " cm^-1)"; +this.asc.setAtomSetModelPropertyForSet("name", cname, i); +this.asc.setAtomSetModelPropertyForSet("modelName", cname, i); +break; +}} +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +var isGeometry = (!this.isADF || this.line.indexOf("G E O M E T R Y") >= 0); +this.asc.newAtomSet(); +this.lastModel = this.asc.iSet; +var modelName = "model " + String.valueOf(this.modelNumber); +if (this.energy != null) modelName = modelName + " e=" + this.energy + " a.u."; +this.asc.setAtomSetName(modelName); +var startGeomDelimiter = (this.isADF ? "----" : "Index Symbol"); +var pt0 = (isGeometry ? 2 : 5); +this.discardLinesUntilContains(startGeomDelimiter); +this.nXX = 0; +var tokens; +while (this.rd() != null && !this.line.startsWith(" -----")) { +tokens = this.getTokens(); +if (tokens.length < 5) break; +var symbol = tokens[1]; +var name = null; +if (symbol.indexOf(".") >= 0) { +name = symbol; +symbol = symbol.substring(0, symbol.indexOf(".")); +}if (J.api.JmolAdapter.getElementNumber(symbol) < 1) this.nXX++; + else this.addAtomXYZSymName(tokens, pt0, symbol, name); +} +}); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +this.rd(); +if (!this.isADF) { +this.discardLinesUntilContains("Number of removed rigid"); +}while (this.rd() != null) { +this.discardLinesUntilContains2(this.isADF ? "." : "Mode:", "===="); +if (this.line == null || this.line.indexOf(".") < 0) return; +var freqdata = this.getTokens(); +this.rd(); +var iAtom0 = this.asc.ac; +var ac = this.asc.getLastAtomSetAtomCount(); +var frequencyCount = (this.isADF ? freqdata.length : 1); +var ignore = Clazz.newBooleanArray(frequencyCount, false); +for (var i = 0; i < frequencyCount; ++i) { +ignore[i] = !this.doGetVibration(++this.vibrationNumber); +if (ignore[i]) continue; +var frequency = freqdata[this.isADF ? i : 4]; +this.asc.cloneLastAtomSet(); +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, frequency, null); +} +this.readLines(this.nXX); +this.fillFrequencyData(iAtom0, ac, ac, ignore, true, 0, 0, null, 0, null); +} +}); +Clazz.defineMethod(c$, "readSymmetries", +function(){ +this.vSymmetries = new JU.Lst(); +this.htSymmetries = new java.util.Hashtable(); +this.rd(); +var index = 0; +var syms = ""; +while (this.rd() != null && this.line.length > 1) syms += this.line; + +var tokens = JU.PT.getTokens(syms); +for (var i = 0; i < tokens.length; i++) { +var sd = Clazz.innerTypeInstance(J.adapter.readers.quantum.AdfReader.SymmetryData, this, null, index++, tokens[i]); +this.htSymmetries.put(tokens[i], sd); +this.vSymmetries.addLast(sd); +} +}); +Clazz.defineMethod(c$, "readSlaterBasis", +function(){ +if (this.vSymmetries == null) return; +var nBF = 0; +for (var i = 0; i < this.vSymmetries.size(); i++) { +var sd = this.vSymmetries.get(i); +JU.Logger.info(sd.sym); +this.discardLinesUntilContains("=== " + sd.sym + " ==="); +if (this.line == null) { +JU.Logger.error("Symmetry slater basis section not found: " + sd.sym); +return; +}sd.nSFO = this.parseIntAt(this.rd(), 15); +sd.nBF = this.parseIntAt(this.rd(), 75); +var funcList = ""; +while (this.rd() != null && this.line.length > 1) funcList += this.line; + +var tokens = JU.PT.getTokens(funcList); +if (tokens.length != sd.nBF) return; +sd.basisFunctions = Clazz.newIntArray (tokens.length, 0); +for (var j = tokens.length; --j >= 0; ) { +var n = this.parseIntStr(tokens[j]); +if (n > nBF) nBF = n; +sd.basisFunctions[j] = n - 1; +} +} +this.slaterArray = new Array(nBF); +this.discardLinesUntilContains("(power of)"); +this.readLines(2); +while (this.rd() != null && this.line.length > 3 && this.line.charAt(3) == ' ') { +var data = this.line; +while (this.rd().indexOf("---") < 0) data += this.line; + +var tokens = JU.PT.getTokens(data); +var nAtoms = tokens.length - 1; +var atomList = Clazz.newIntArray (nAtoms, 0); +for (var i = 1; i <= nAtoms; i++) atomList[i - 1] = this.parseIntStr(tokens[i]) - 1; + +this.rd(); +while (this.line.length >= 10) { +data = this.line; +while (this.rd().length > 35 && this.line.substring(0, 35).trim().length == 0) data += this.line; + +tokens = JU.PT.getTokens(data); +var isCore = tokens[0].equals("Core"); +var pt = (isCore ? 1 : 0); +var x = this.parseIntStr(tokens[pt++]); +var y = this.parseIntStr(tokens[pt++]); +var z = this.parseIntStr(tokens[pt++]); +var r = this.parseIntStr(tokens[pt++]); +var zeta = this.parseFloatStr(tokens[pt++]); +for (var i = 0; i < nAtoms; i++) { +var ptBF = this.parseIntStr(tokens[pt++]) - 1; +this.slaterArray[ptBF] = new J.quantum.SlaterData(atomList[i], x, y, z, r, zeta, 1); +this.slaterArray[ptBF].index = ptBF; +} +} +} +}); +Clazz.defineMethod(c$, "readMolecularOrbitals", +function(sym){ +var sd = this.htSymmetries.get(sym); +if (sd == null) return; +var ptSym = sd.index; +var isLast = (ptSym == this.vSymmetries.size() - 1); +var n = 0; +var nBF = this.slaterArray.length; +sd.coefs = Clazz.newFloatArray (sd.nSFO, nBF, 0); +while (n < sd.nBF) { +this.rd(); +var nLine = JU.PT.getTokens(this.rd()).length; +this.rd(); +sd.mos = JU.AU.createArrayOfHashtable(sd.nSFO); +var data = new Array(sd.nSFO); +this.fillDataBlock(data, 0); +for (var j = 1; j < nLine; j++) { +var pt = sd.basisFunctions[n++]; +for (var i = 0; i < sd.nSFO; i++) sd.coefs[i][pt] = this.parseFloatStr(data[i][j]); + +} +} +for (var i = 0; i < sd.nSFO; i++) { +var mo = new java.util.Hashtable(); +mo.put("coefficients", sd.coefs[i]); +mo.put("id", sym + " " + (i + 1)); +sd.mos[i] = mo; +} +if (!isLast) return; +var nSym = this.htSymmetries.size(); +this.discardLinesUntilContains(nSym == 1 ? "Orbital Energies, per Irrep" : "Orbital Energies, all Irreps"); +this.readLines(4); +var pt = (nSym == 1 ? 0 : 1); +if (nSym == 1) sym = this.rd().trim(); +while (this.rd() != null && this.line.length > 10) { +this.line = this.line.$replace('(', ' ').$replace(')', ' '); +var tokens = this.getTokens(); +var len = tokens.length; +if (nSym > 1) sym = tokens[0]; +var moPt = this.parseIntStr(tokens[pt]); +var occ = this.parseFloatStr(tokens[len - 4 + pt]); +var energy = this.parseFloatStr(tokens[len - 2 + pt]); +this.addMo(sym, moPt, occ, energy); +} +var iAtom0 = this.asc.getLastAtomSetAtomIndex(); +for (var i = 0; i < nBF; i++) this.slaterArray[i].atomNo += iAtom0 + 1; + +this.setSlaters(true); +this.sortOrbitals(); +this.setMOs("eV"); +}, "~S"); +Clazz.defineMethod(c$, "addMo", +function(sym, moPt, occ, energy){ +var sd = this.htSymmetries.get(sym); +if (sd == null) { +for (var entry, $entry = this.htSymmetries.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) if (entry.getKey().startsWith(sym + ":")) { +sd = entry.getValue(); +break; +} +if (sd == null) return; +}var mo = sd.mos[moPt - 1]; +mo.put("occupancy", Float.$valueOf(occ > 2 ? 2 : occ)); +mo.put("energy", Float.$valueOf(energy)); +mo.put("symmetry", sd.sym + "_" + moPt); +this.setMO(mo); +}, "~S,~N,~N,~N"); +Clazz.defineMethod(c$, "readCharges", +function(){ +if (this.lastModel < 0) return; +this.rd(); +this.rd(); +var n = this.asc.getAtomSetAtomCount(this.lastModel); +var charges = Clazz.newFloatArray (n, 0); +for (var i = 0; i < n; i++) { +this.rd(); +var tokens = this.getTokens(); +var iatom = this.parseIntStr(tokens[0]); +charges[iatom - 1] = this.parseFloatStr(tokens[2]); +} +for (var p = 0, i = this.asc.getAtomSetAtomIndex(this.lastModel); i < this.asc.ac; i++, p = (p + 1) % n) { +this.asc.atoms[i].partialCharge = charges[p]; +} +}); +c$.$AdfReader$SymmetryData$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.index = 0; +this.sym = null; +this.nSFO = 0; +this.nBF = 0; +this.coefs = null; +this.mos = null; +this.basisFunctions = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum.AdfReader, "SymmetryData", null); +Clazz.makeConstructor(c$, +function(index, sym){ +JU.Logger.info((this.b$["J.adapter.readers.quantum.AdfReader"].isADF ? "ADF" : "AMS") + " reader creating SymmetryData " + sym + " " + index); +this.index = index; +this.sym = sym; +}, "~N,~S"); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/AmsReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/AmsReader.js new file mode 100755 index 000000000000..fc8e5ef5c102 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/AmsReader.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.AdfReader"], "J.adapter.readers.quantum.AmsReader", null, function(){ +var c$ = Clazz.declareType(J.adapter.readers.quantum, "AmsReader", J.adapter.readers.quantum.AdfReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.isADF = false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/BasisFunctionReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/BasisFunctionReader.js new file mode 100755 index 000000000000..e1effe2ed423 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/BasisFunctionReader.js @@ -0,0 +1,141 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "java.util.Hashtable", "JU.Lst", "J.quantum.QS"], "J.adapter.readers.quantum.BasisFunctionReader", ["java.util.Arrays", "JU.PT", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.shells = null; +this.slaters = null; +this.slaterArray = null; +this.moData = null; +this.orbitals = null; +this.nOrbitals = 0; +this.ignoreMOs = false; +this.alphaBeta = ""; +this.dfCoefMaps = null; +this.filterTokens = null; +this.filterIsNot = false; +this.spin = null; +if (!Clazz.isClassDefined("J.adapter.readers.quantum.BasisFunctionReader.MOEnergySorter")) { +J.adapter.readers.quantum.BasisFunctionReader.$BasisFunctionReader$MOEnergySorter$ (); +} +this.orbitalMaps = null; +this.highLEnabled = null; +this.nCoef = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "BasisFunctionReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.moData = new java.util.Hashtable(); +this.orbitals = new JU.Lst(); +this.orbitalMaps = new java.util.Hashtable(); +this.highLEnabled = Clazz.newIntArray (J.quantum.QS.idSpherical.length, 0); +}); +Clazz.defineMethod(c$, "filterMO", +function(){ +var isHeader = (this.line.indexOf('\n') == 0); +if (!isHeader && !this.doReadMolecularOrbitals) return false; +var isOK = true; +this.line += " " + this.alphaBeta; +var ucline = this.line.toUpperCase(); +if (this.filter != null) { +var nOK = 0; +if (this.filterTokens == null) { +this.filterIsNot = (this.filter.indexOf("!") >= 0); +this.filterTokens = JU.PT.getTokens(this.filter.$replace('!', ' ').$replace(',', ' ').$replace(';', ' ')); +}for (var i = 0; i < this.filterTokens.length; i++) if (ucline.indexOf(this.filterTokens[i]) >= 0) { +if (!this.filterIsNot) { +nOK = this.filterTokens.length; +break; +}} else if (this.filterIsNot) { +nOK++; +} +isOK = (nOK == this.filterTokens.length); +if (!isHeader) JU.Logger.info("filter MOs: " + isOK + " for \"" + this.line + "\""); +}this.spin = (ucline.indexOf("ALPHA") >= 0 ? "alpha" : ucline.indexOf("BETA") >= 0 ? "beta" : null); +return isOK; +}); +Clazz.defineMethod(c$, "setMO", +function(mo){ +if (this.dfCoefMaps != null) mo.put("dfCoefMaps", this.dfCoefMaps); +this.orbitals.addLast(mo); +mo.put("index", Integer.$valueOf(this.orbitals.size())); +if (this.spin != null) mo.put("spin", this.spin); +this.moData.put("highLEnabled", this.highLEnabled); +}, "java.util.Map"); +Clazz.defineMethod(c$, "getDFMap", +function(shell, fileList, shellType, jmolList, minLength){ +this.orbitalMaps.put(shell, fileList); +this.moData.put("orbitalMaps", this.orbitalMaps); +this.enableShell(shellType); +if (fileList.equals(jmolList)) return true; +this.getDfCoefMaps(); +var isOK = J.quantum.QS.createDFMap(this.dfCoefMaps[shellType], fileList, jmolList, minLength); +if (!isOK) JU.Logger.error("Disabling orbitals of type " + shellType + " -- Cannot read orbital order for: " + fileList + "\n expecting: " + jmolList); +return isOK; +}, "~S,~S,~N,~S,~N"); +Clazz.defineMethod(c$, "enableShell", +function(shellType){ +this.highLEnabled[shellType] = 1; +}, "~N"); +Clazz.defineMethod(c$, "getDfCoefMaps", +function(){ +return (this.dfCoefMaps == null ? (this.dfCoefMaps = J.quantum.QS.getNewDfCoefMap()) : this.dfCoefMaps); +}); +c$.canonicalizeQuantumSubshellTag = Clazz.defineMethod(c$, "canonicalizeQuantumSubshellTag", +function(tag){ +var firstChar = tag.charAt(0); +if (firstChar == 'X' || firstChar == 'Y' || firstChar == 'Z') { +var sorted = tag.toCharArray(); +java.util.Arrays.sort(sorted); +return String.instantialize(sorted); +}return tag; +}, "~S"); +Clazz.defineMethod(c$, "fixSlaterTypes", +function(typeOld, typeNew){ +if (this.shells == null) return 0; +this.nCoef = 0; +for (var i = this.shells.size(); --i >= 0; ) { +var slater = this.shells.get(i); +if (slater[1] == typeOld) slater[1] = typeNew; +var m = this.getDfCoefMaps()[slater[1]].length; +this.nCoef += m; +} +return this.nCoef; +}, "~N,~N"); +c$.getQuantumShellTagIDSpherical = Clazz.defineMethod(c$, "getQuantumShellTagIDSpherical", +function(tag){ +return J.quantum.QS.getQuantumShellTagIDSpherical(tag); +}, "~S"); +c$.getQuantumShellTagID = Clazz.defineMethod(c$, "getQuantumShellTagID", +function(tag){ +return J.quantum.QS.getQuantumShellTagID(tag); +}, "~S"); +c$.getQuantumShellTag = Clazz.defineMethod(c$, "getQuantumShellTag", +function(id){ +return J.quantum.QS.getQuantumShellTag(id); +}, "~N"); +Clazz.overrideMethod(c$, "discardPreviousAtoms", +function(){ +this.asc.discardPreviousAtoms(); +this.moData.remove("mos"); +this.orbitals.clear(); +}); +Clazz.defineMethod(c$, "clearOrbitals", +function(){ +this.orbitals = new JU.Lst(); +this.moData = new java.util.Hashtable(); +this.alphaBeta = ""; +this.slaterArray = null; +this.slaters = null; +}); +c$.$BasisFunctionReader$MOEnergySorter$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum.BasisFunctionReader, "MOEnergySorter", null, java.util.Comparator); +Clazz.overrideMethod(c$, "compare", +function(a, b){ +var ea = ((a).get("energy")).floatValue(); +var eb = ((b).get("energy")).floatValue(); +return (ea < eb ? -1 : ea > eb ? 1 : 0); +}, "~O,~O"); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/CsfReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/CsfReader.js new file mode 100755 index 000000000000..0f032fbb3225 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/CsfReader.js @@ -0,0 +1,412 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MopacSlaterReader", "java.util.Hashtable"], "J.adapter.readers.quantum.CsfReader", ["JU.AU", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "J.adapter.smarter.Atom", "$.Bond", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nAtoms = 0; +this.strAtomicNumbers = ""; +this.fieldCount = 0; +this.nVibrations = 0; +this.nGaussians = 0; +this.nSlaters = 0; +this.htBonds = null; +this.propertyItemCounts = null; +this.fieldTypes = null; +this.connectors = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "CsfReader", J.adapter.readers.quantum.MopacSlaterReader); +Clazz.prepareFields (c$, function(){ +this.propertyItemCounts = new java.util.Hashtable(); +this.fieldTypes = Clazz.newIntArray (100, 0); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.equals("local_transform")) { +this.processLocalTransform(); +return true; +}if (this.line.startsWith("object_class")) { +if (this.line.equals("object_class connector")) { +this.processConnectorObject(); +return false; +}if (this.line.equals("object_class atom")) { +this.processAtomObject(); +return false; +}if (this.line.equals("object_class bond")) { +this.processBondObject(); +return false; +}if (this.line.equals("object_class vibrational_level")) { +this.processVibrationObject(); +return false; +}if (this.line.equals("object_class mol_orbital")) { +this.processMolecularOrbitalObject(); +return false; +}if (this.line.equals("object_class sto_basis_fxn")) { +this.processBasisObject("sto"); +return false; +}if (this.line.equals("object_class gto_basis_fxn")) { +this.processBasisObject("gto"); +return false; +}}return true; +}); +Clazz.defineMethod(c$, "processLocalTransform", +function(){ +var tokens = JU.PT.getTokens(this.rd() + " " + this.rd() + " " + this.rd() + " " + this.rd()); +this.setTransform(this.parseFloatStr(tokens[0]), this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[4]), this.parseFloatStr(tokens[5]), this.parseFloatStr(tokens[6]), this.parseFloatStr(tokens[8]), this.parseFloatStr(tokens[9]), this.parseFloatStr(tokens[10])); +}); +Clazz.defineMethod(c$, "getPropertyCount", +function(what){ +var count = this.propertyItemCounts.get(what); +return (what.equals("ID") ? 1 : count == null ? 0 : count.intValue()); +}, "~S"); +Clazz.defineMethod(c$, "parseLineParameters", +function(fields, fieldMap){ +for (var i = 0; i < this.fieldCount; i++) this.fieldTypes[i] = 0; + +this.fieldCount = -1; +if (this.line == null || this.line.startsWith("property_flags:")) this.rd(); +if (this.line == null || this.line.startsWith("object_class")) return this.fieldCount; +var tokens = new Array(0); +while (this.line != null) { +tokens = this.getTokens(); +if (this.line.indexOf("property ") == 0) this.propertyItemCounts.put(tokens[1], Integer.$valueOf((tokens[6].equals("STRING") ? 1 : this.parseIntStr(tokens[5])))); + else if (this.line.indexOf("ID") == 0) break; +this.rd(); +} +for (var ipt = 0, fpt = 0; ipt < tokens.length; ipt++) { +var field = tokens[ipt]; +for (var i = fields.length; --i >= 0; ) if (field.equals(fields[i])) { +this.fieldTypes[fpt] = fieldMap[i]; +this.fieldCount = fpt + 1; +break; +} +fpt += this.getPropertyCount(field); +} +return this.fieldCount; +}, "~A,~A"); +Clazz.defineMethod(c$, "fillCsfArray", +function(property, tokens, i0, f, isInteger){ +var n = this.getPropertyCount(property); +var ioffset = i0; +for (var i = 0; i < n; i++) { +var ipt = ioffset + i; +if (ipt == tokens.length) { +tokens = JU.PT.getTokens(this.rd()); +ioffset -= ipt - i0; +ipt = i0; +}if (isInteger) (f)[i] = this.parseIntStr(tokens[ipt]); + else (f)[i] = this.parseFloatStr(tokens[ipt]); +} +}, "~S,~A,~N,~O,~B"); +Clazz.defineMethod(c$, "processConnectorObject", +function(){ +this.connectors = new java.util.Hashtable(); +this.rd(); +this.parseLineParameters(J.adapter.readers.quantum.CsfReader.connectorFields, J.adapter.readers.quantum.CsfReader.connectorFieldMap); +out : for (; this.rd() != null; ) { +if (this.line.startsWith("property_flags:")) break; +var thisAtomID = null; +var thisBondID = null; +var tokens = this.getTokens(); +var field2 = ""; +var isVibration = false; +for (var i = 0; i < this.fieldCount; ++i) { +var field = tokens[i]; +switch (this.fieldTypes[i]) { +case 1: +if (!field.equals("atom")) continue out; +break; +case 3: +field2 = field; +if (field.equals("sto_basis_fxn")) this.nSlaters++; + else if (field.equals("gto_basis_fxn")) this.nGaussians++; + else if (field.equals("vibrational_level")) isVibration = true; + else if (!field.equals("bond")) continue out; +break; +case 2: +thisAtomID = field; +break; +case 4: +thisBondID = field2 + field; +if (isVibration) this.nVibrations = Math.max(this.nVibrations, this.parseIntStr(field)); +break; +default: +} +} +if (thisAtomID != null && thisBondID != null) { +if (this.connectors.containsKey(thisBondID)) { +var connect = this.connectors.get(thisBondID); +connect[1] = thisAtomID; +if (this.htBonds != null) this.setBond(this.htBonds.get(thisBondID), connect); +} else { +var connect = new Array(2); +connect[0] = thisAtomID; +this.connectors.put(thisBondID, connect); +}}} +}); +Clazz.defineMethod(c$, "setBond", +function(bond, connect){ +bond.atomIndex1 = this.asc.getAtomIndex(connect[0]); +bond.atomIndex2 = this.asc.getAtomIndex(connect[1]); +this.asc.addBond(bond); +}, "J.adapter.smarter.Bond,~A"); +Clazz.defineMethod(c$, "processAtomObject", +function(){ +this.rd(); +this.parseLineParameters(J.adapter.readers.quantum.CsfReader.atomFields, J.adapter.readers.quantum.CsfReader.atomFieldMap); +this.nAtoms = 0; +for (; this.rd() != null; ) { +if (this.line.startsWith("property_flags:")) break; +var tokens = this.getTokens(); +var atom = new J.adapter.smarter.Atom(); +var field; +for (var i = 0; i < this.fieldCount; i++) { +var type = this.fieldTypes[i]; +if (type == 0) continue; +if ((field = tokens[i]) == null) JU.Logger.warn("field == null in " + this.line); +switch (type) { +case -1: +atom.atomSerial = JU.PT.parseInt(field); +break; +case 1: +atom.elementSymbol = field; +atom.atomName = field + atom.atomSerial; +break; +case 2: +this.strAtomicNumbers += field + " "; +break; +case 3: +atom.formalCharge = this.parseIntStr(field); +break; +case 5: +atom.partialCharge = this.parseFloatStr(field); +break; +case 4: +this.setAtomCoordTokens(atom, tokens, i); +i += 2; +break; +} +} +if (Float.isNaN(atom.x) || Float.isNaN(atom.y) || Float.isNaN(atom.z)) { +JU.Logger.warn("atom " + atom.atomName + " has invalid/unknown coordinates"); +} else { +this.nAtoms++; +this.asc.addAtomWithMappedSerialNumber(atom); +}} +}); +Clazz.defineMethod(c$, "processBondObject", +function(){ +this.rd(); +this.parseLineParameters(J.adapter.readers.quantum.CsfReader.bondFields, J.adapter.readers.quantum.CsfReader.bondFieldMap); +for (; this.rd() != null; ) { +if (this.line.startsWith("property_flags:")) break; +var thisBondID = null; +var tokens = this.getTokens(); +for (var i = 0; i < this.fieldCount; ++i) { +var field = tokens[i]; +switch (this.fieldTypes[i]) { +case -1: +thisBondID = "bond" + field; +break; +case 1: +var order = 1; +if (field.equals("single")) order = 1; + else if (field.equals("double")) order = 2; + else if (field.equals("triple")) order = 3; + else JU.Logger.warn("unknown CSF bond order: " + field); +var bond = new J.adapter.smarter.Bond(-1, -1, 1); +bond.order = order; +if (this.connectors == null) { +if (this.htBonds == null) this.htBonds = new java.util.Hashtable(); +this.htBonds.put(thisBondID, bond); +} else { +this.setBond(bond, this.connectors.get(thisBondID)); +}break; +} +} +} +}); +Clazz.defineMethod(c$, "processVibrationObject", +function(){ +var vibData = Clazz.newFloatArray (this.nVibrations, this.nAtoms * 3, 0); +var energies = new Array(this.nVibrations); +this.rd(); +while (this.line != null && this.parseLineParameters(J.adapter.readers.quantum.CsfReader.vibFields, J.adapter.readers.quantum.CsfReader.vibFieldMap) > 0) { +while (this.rd() != null && !this.line.startsWith("property_flags:")) { +var tokens = this.getTokens(); +var thisvib = -1; +for (var i = 0; i < this.fieldCount; ++i) { +var field = tokens[i]; +switch (this.fieldTypes[i]) { +case -1: +thisvib = this.parseIntStr(field) - 1; +break; +case 1: +this.fillCsfArray("normalMode", tokens, i, vibData[thisvib], false); +break; +case 2: +energies[thisvib] = field; +break; +} +} +} +} +for (var i = 0; i < this.nVibrations; i++) { +if (!this.doGetVibration(++this.vibrationNumber)) continue; +this.asc.cloneAtomSetWithBonds(false); +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, energies[i], null); +var ipt = 0; +var baseAtom = this.nAtoms * (i + 1); +for (var iAtom = 0; iAtom < this.nAtoms; iAtom++) this.asc.addVibrationVector(baseAtom + iAtom, vibData[i][ipt++], vibData[i][ipt++], vibData[i][ipt++]); + +} +}); +Clazz.defineMethod(c$, "processMolecularOrbitalObject", +function(){ +if (this.nSlaters == 0 && this.nGaussians == 0 || !this.doReadMolecularOrbitals) { +this.rd(); +return; +}this.nOrbitals = (this.nSlaters + this.nGaussians); +JU.Logger.info("Reading CSF data for " + this.nOrbitals + " molecular orbitals"); +var energy = Clazz.newFloatArray (this.nOrbitals, 0); +var occupancy = Clazz.newFloatArray (this.nOrbitals, 0); +var list = Clazz.newFloatArray (this.nOrbitals, this.nOrbitals, 0); +var listCompressed = null; +var coefIndices = null; +var ipt = 0; +var isCompressed = false; +this.rd(); +while (this.line != null && this.parseLineParameters(J.adapter.readers.quantum.CsfReader.moFields, J.adapter.readers.quantum.CsfReader.moFieldMap) > 0) while (this.rd() != null && !this.line.startsWith("property_flags:")) { +var tokens = this.getTokens(); +for (var i = 0; i < this.fieldCount; ++i) { +switch (this.fieldTypes[i]) { +case -1: +ipt = this.parseIntStr(tokens[i]) - 1; +break; +case 1: +energy[ipt] = this.parseFloatStr(tokens[i]); +break; +case 2: +occupancy[ipt] = this.parseFloatStr(tokens[i]); +break; +case 3: +this.fillCsfArray("eig_vec", tokens, i, list[ipt], false); +break; +case 4: +isCompressed = true; +if (listCompressed == null) listCompressed = Clazz.newFloatArray (this.nOrbitals, this.nOrbitals, 0); +this.fillCsfArray("eig_vec_compressed", tokens, i, listCompressed[ipt], false); +break; +case 5: +if (coefIndices == null) coefIndices = Clazz.newIntArray (this.nOrbitals, this.nOrbitals, 0); +this.fillCsfArray("coef_indices", tokens, i, coefIndices[ipt], true); +break; +} +} +} + +for (var iMo = 0; iMo < this.nOrbitals; iMo++) { +if (isCompressed) { +for (var i = 0; i < coefIndices[iMo].length; i++) { +var pt = coefIndices[iMo][i] - 1; +if (pt < 0) break; +list[iMo][pt] = listCompressed[iMo][i]; +} +}for (var i = 0; i < this.nOrbitals; i++) if (Math.abs(list[iMo][i]) < 1.0E-4) list[iMo][i] = 0; + +var mo = new java.util.Hashtable(); +mo.put("energy", Float.$valueOf(energy[iMo])); +mo.put("occupancy", Float.$valueOf(occupancy[iMo])); +mo.put("coefficients", list[iMo]); +this.setMO(mo); +} +this.setMOs("eV"); +}); +Clazz.defineMethod(c$, "processBasisObject", +function(sto_gto){ +var atomNos = JU.PT.getTokens(this.strAtomicNumbers); +this.atomicNumbers = Clazz.newIntArray (atomNos.length, 0); +for (var i = 0; i < this.atomicNumbers.length; i++) this.atomicNumbers[i] = this.parseIntStr(atomNos[i]); + +this.nOrbitals = (this.nSlaters + this.nGaussians); +var isGaussian = (sto_gto.equals("gto")); +var zetas = JU.AU.newFloat2(this.nOrbitals); +var contractionCoefs = null; +var types = new Array(this.nOrbitals); +var shells = Clazz.newIntArray (this.nOrbitals, 0); +var nZetas = 0; +this.rd(); +while (this.line != null && this.parseLineParameters(J.adapter.readers.quantum.CsfReader.moFields, J.adapter.readers.quantum.CsfReader.moFieldMap) > 0) { +if (nZetas == 0) nZetas = this.getPropertyCount(sto_gto + "_exp"); +var ipt = 0; +while (this.rd() != null && !this.line.startsWith("property_flags:")) { +var tokens = this.getTokens(); +for (var i = 0; i < this.fieldCount; ++i) { +var field = tokens[i]; +switch (this.fieldTypes[i]) { +case -1: +ipt = this.parseIntStr(field) - 1; +break; +case 6: +types[ipt] = field; +break; +case 7: +case 9: +zetas[ipt] = Clazz.newFloatArray (nZetas, 0); +this.fillCsfArray(sto_gto + "_exp", tokens, i, zetas[ipt], false); +break; +case 10: +shells[ipt] = this.parseIntStr(field); +break; +case 8: +if (contractionCoefs == null) contractionCoefs = Clazz.newFloatArray (this.nOrbitals, nZetas, 0); +this.fillCsfArray("contractions", tokens, i, contractionCoefs[ipt], false); +} +} +} +} +if (isGaussian) { +var sdata = new JU.Lst(); +var gdata = new JU.Lst(); +var iShell = 0; +var gaussianCount = 0; +for (var ipt = 0; ipt < this.nGaussians; ipt++) { +if (shells[ipt] != iShell) { +iShell = shells[ipt]; +var slater = Clazz.newIntArray (4, 0); +var iAtom = this.asc.getAtomIndex(this.connectors.get(sto_gto + "_basis_fxn" + (ipt + 1))[0]); +slater[0] = iAtom + 1; +slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(types[ipt].substring(0, 1)); +var nZ = 0; +while (++nZ < nZetas && zetas[ipt][nZ] != 0) { +} +slater[2] = gaussianCount; +slater[3] = nZ; +sdata.addLast(slater); +gaussianCount += nZ; +for (var i = 0; i < nZ; i++) gdata.addLast( Clazz.newFloatArray(-1, [zetas[ipt][i], contractionCoefs[ipt][i]])); + +}} +var garray = JU.AU.newFloat2(gaussianCount); +for (var i = 0; i < gaussianCount; i++) garray[i] = gdata.get(i); + +this.moData.put("shells", sdata); +this.moData.put("gaussians", garray); +} else { +for (var ipt = 0; ipt < this.nSlaters; ipt++) { +var iAtom = this.asc.getAtomIndex(this.connectors.get(sto_gto + "_basis_fxn" + (ipt + 1))[0]); +for (var i = 0; i < nZetas; i++) { +if (zetas[ipt][i] == 0) break; +this.createSphericalSlaterByType(iAtom, this.atomicNumbers[iAtom], types[ipt], zetas[ipt][i] * (i == 0 ? 1 : -1), contractionCoefs == null ? 1 : contractionCoefs[ipt][i]); +} +} +this.setSlaters(false); +}}, "~S"); +c$.connectorFields = Clazz.newArray(-1, ["objCls1", "objID1", "objCls2", "objID2"]); +c$.connectorFieldMap = Clazz.newByteArray(-1, [1, 2, 3, 4]); +c$.atomFields = Clazz.newArray(-1, ["ID", "sym", "anum", "chrg", "xyz_coordinates", "pchrg"]); +c$.atomFieldMap = Clazz.newByteArray(-1, [-1, 1, 2, 3, 4, 5]); +c$.bondFields = Clazz.newArray(-1, ["ID", "type"]); +c$.bondFieldMap = Clazz.newByteArray(-1, [-1, 1]); +c$.vibFields = Clazz.newArray(-1, ["ID", "normalMode", "Energy", "transitionDipole"]); +c$.vibFieldMap = Clazz.newByteArray(-1, [-1, 1, 2, 3]); +c$.moFields = Clazz.newArray(-1, ["ID", "eig_val", "mo_occ", "eig_vec", "eig_vec_compressed", "coef_indices", "bfxn_ang", "sto_exp", "contractions", "gto_exp", "shell"]); +c$.moFieldMap = Clazz.newByteArray(-1, [-1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/DgridReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/DgridReader.js new file mode 100755 index 000000000000..5efcd20a5c5b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/DgridReader.js @@ -0,0 +1,173 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.SlaterReader", "java.util.Hashtable"], "J.adapter.readers.quantum.DgridReader", ["JU.PT", "$.SB", "J.quantum.SlaterData", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.title = null; +this.htExponents = null; +this.htFuncMap = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "DgridReader", J.adapter.readers.quantum.SlaterReader); +Clazz.prepareFields (c$, function(){ +this.htExponents = new java.util.Hashtable(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf(":title") == 0) { +this.title = this.rd().substring(2); +return true; +}if (this.line.indexOf("basis: CARTESIAN STO") >= 0) { +this.readSlaterBasis(); +return true; +}if (this.line.indexOf(":atom") == 0) { +this.readCoordinates(); +return true; +}if (this.line.indexOf(" MO DATA ") >= 0) { +if (this.doReadMolecularOrbitals) this.readMolecularOrbitals(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +this.asc.newAtomSet(); +this.asc.setAtomSetName(this.title); +this.discardLinesUntilContains("----"); +while (this.rd() != null && !this.line.startsWith(":-----")) { +var tokens = this.getTokens(); +if (tokens.length < 5) break; +this.setAtomCoordScaled(null, tokens, 2, 0.5291772).elementSymbol = tokens[0]; +} +}); +Clazz.defineMethod(c$, "readSlaterBasis", +function(){ +this.discardLinesUntilContains(":-"); +var ch = 'a'; +while (this.rd() != null && this.line.indexOf(":-") < 0) { +var atomSymbol = this.line.substring(3, 6).trim(); +var xyz = this.line.substring(19, 21); +var code = atomSymbol + xyz; +if (this.htExponents.get(code) == null) { +ch = 'a'; +} else { +code += "_" + ($c$ = ch, ch = String.fromCharCode(ch.charCodeAt(0)+1), $c$); +}var exp = this.line.substring(34); +this.htExponents.put(code, Float.$valueOf(this.parseFloatStr(exp))); +} +}); +Clazz.defineMethod(c$, "readMolecularOrbitals", +function(){ +this.htFuncMap = new java.util.Hashtable(); +this.readLines(3); +this.getSlaters(); +while (this.line != null && this.line.indexOf(":") != 0) { +this.discardLinesUntilContains("sym: "); +var symmetry = this.line.substring(4, 10).trim(); +if (symmetry.indexOf("_FC") >= 0) break; +var data = new JU.SB(); +data.append(this.line.substring(15)); +while (this.rd() != null && this.line.length >= 15) data.append(this.line); + +var tokens = JU.PT.getTokens(data.toString()); +var nFuncs = Clazz.doubleToInt(tokens.length / 2); +var ptSlater = Clazz.newIntArray (nFuncs, 0); +var atoms = this.asc.atoms; +for (var i = 0, pt = 0; i < tokens.length; ) { +var iAtom = this.parseIntStr(tokens[i++]) - 1; +var code = tokens[i++]; +var key = iAtom + "_" + code; +if (this.htFuncMap.containsKey(key)) { +ptSlater[pt++] = this.htFuncMap.get(key).intValue(); +} else { +var n = this.slaters.size(); +ptSlater[pt++] = n; +this.htFuncMap.put(key, Integer.$valueOf(n)); +this.addSlater(this.createSlaterData(iAtom + 1, atoms[iAtom].elementSymbol, code), n); +}} +this.discardLinesUntilContains(":-"); +this.rd(); +while (this.line != null && this.line.length >= 20) { +var iOrb = this.parseIntRange(this.line, 0, 10); +var energy = this.parseFloatRange(this.line, 10, 20); +var cData = new JU.SB(); +cData.append(this.line.substring(20)); +while (this.rd() != null && this.line.length >= 10) { +if (this.line.charAt(3) != ' ') break; +cData.append(this.line); +} +var list = Clazz.newFloatArray (this.slaters.size(), 0); +tokens = JU.PT.getTokens(cData.toString()); +if (tokens.length != nFuncs) JU.Logger.error("DgridReader: number of coefficients (" + tokens.length + ") does not equal number of functions (" + nFuncs + ")"); +for (var i = 0; i < tokens.length; i++) { +var pt = ptSlater[i]; +list[pt] = this.parseFloatStr(tokens[i]); +} +var mo = new java.util.Hashtable(); +mo.put("energy", Float.$valueOf(energy)); +mo.put("coefficients", list); +mo.put("symmetry", symmetry + "_" + iOrb); +this.setMO(mo); +} +} +this.discardLinesUntilContains(": # symmetry"); +this.rd(); +for (var i = 0; i < this.orbitals.size(); i++) { +this.rd(); +var occupancy = this.parseFloatRange(this.line, 31, 45) + this.parseFloatRange(this.line, 47, 61); +this.orbitals.get(i).put("occupancy", Float.$valueOf(occupancy)); +} +this.sortOrbitals(); +this.setSlaters(true); +this.setMOs("eV"); +}); +Clazz.defineMethod(c$, "createSlaterData", +function(iAtom, atomSymbol, xyz){ +var ch; +var abc = ' '; +var type = ' '; +var exp = 1; +var el = 0; +var x = 0; +var y = 0; +var z = 0; +for (var i = xyz.length; --i >= 0; ) { +switch ((ch = xyz.charAt(i)).charCodeAt(0)) { +case 95: +type = abc; +break; +case 49: +case 50: +case 51: +case 52: +exp = ch.charCodeAt(0) - 48; +break; +case 120: +x = exp; +el += exp; +exp = 1; +break; +case 121: +y = exp; +el += exp; +exp = 1; +break; +case 122: +z = exp; +el += exp; +exp = 1; +break; +case 115: +case 112: +case 100: +case 102: +default: +abc = ch; +} +} +var r = (exp - el - 1); +var code = atomSymbol + xyz.substring(0, 2); +if (type != ' ') code += "_" + type; +var f = this.htExponents.get(code); +var zeta = 0; +if (f == null) JU.Logger.error("Exponent for " + code + " not found"); + else zeta = f.floatValue(); +return new J.quantum.SlaterData(iAtom, x, y, z, r, zeta, 1); +}, "~N,~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessReader.js new file mode 100755 index 000000000000..ecdb5822c397 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessReader.js @@ -0,0 +1,288 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MopacSlaterReader"], "J.adapter.readers.quantum.GamessReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomNames = null; +this.calcOptions = null; +this.isTypeSet = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "GamessReader", J.adapter.readers.quantum.MopacSlaterReader); +Clazz.defineMethod(c$, "initializeReader", +function(){ +this.allowMopacDCoef = false; +Clazz.superCall(this, J.adapter.readers.quantum.GamessReader, "initializeReader", []); +}); +Clazz.defineMethod(c$, "setAtom", +function(atom, atomicNumber, name, id){ +atom.elementNumber = atomicNumber; +atom.atomName = name; +this.atomNames.addLast(id == null ? name : id); +}, "J.adapter.smarter.Atom,~N,~S,~S"); +Clazz.defineMethod(c$, "readEnergy", +function(){ +var searchTerm = "ENERGY"; +var energyToken = 2; +var energyType = "ENERGY"; +if (this.line.indexOf("E(MP2)") > 0) { +searchTerm = "E(MP2)="; +energyType = "MP2"; +energyToken = 1; +} else if (this.line.indexOf("E(CCSD)") > 0) { +searchTerm = "E(CCSD)"; +energyType = "CCSD"; +energyToken = 2; +} else if (this.line.indexOf("E( CCSD(T))") > 0) { +searchTerm = "E( CCSD(T))"; +energyType = "CCSD(T)"; +energyToken = 3; +}var tokens = JU.PT.getTokens(this.line.substring(this.line.indexOf(searchTerm))); +if (tokens.length < energyToken + 1) return; +var strEnergy = tokens[energyToken]; +var e = this.parseFloatStr(strEnergy); +if (!Float.isNaN(e)) { +this.asc.setAtomSetEnergy(strEnergy, e); +this.asc.setCurrentModelInfo("EnergyType", energyType); +if (!energyType.equals("ENERGY")) this.appendLoadNote("GamessReader Energy type " + energyType); +}}); +Clazz.defineMethod(c$, "readGaussianBasis", +function(initiator, terminator){ +var gdata = new JU.Lst(); +this.gaussianCount = 0; +var nGaussians = 0; +this.shellCount = 0; +var thisShell = "0"; +var tokens; +this.discardLinesUntilContains(initiator); +this.rd(); +var slater = null; +var shellsByAtomType = new java.util.Hashtable(); +var slatersByAtomType = new JU.Lst(); +var atomType = null; +while (this.rd() != null && this.line.indexOf(terminator) < 0) { +if (this.line.indexOf("(") >= 0) this.line = J.adapter.readers.quantum.GamessReader.fixBasisLine(this.line); +tokens = this.getTokens(); +switch (tokens.length) { +case 1: +if (atomType != null) { +if (slater != null) { +slater[2] = nGaussians; +slatersByAtomType.addLast(slater); +slater = null; +}shellsByAtomType.put(atomType, slatersByAtomType); +}slatersByAtomType = new JU.Lst(); +atomType = tokens[0]; +break; +case 0: +break; +default: +if (!tokens[0].equals(thisShell)) { +if (slater != null) { +slater[2] = nGaussians; +slatersByAtomType.addLast(slater); +}thisShell = tokens[0]; +this.shellCount++; +slater = Clazz.newIntArray(-1, [J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(this.fixShellTag(tokens[1])), this.gaussianCount, 0]); +nGaussians = 0; +}++nGaussians; +++this.gaussianCount; +gdata.addLast(tokens); +} +} +if (slater != null) { +slater[2] = nGaussians; +slatersByAtomType.addLast(slater); +}if (atomType != null) shellsByAtomType.put(atomType, slatersByAtomType); +this.gaussians = JU.AU.newFloat2(this.gaussianCount); +for (var i = 0; i < this.gaussianCount; i++) { +tokens = gdata.get(i); +this.gaussians[i] = Clazz.newFloatArray (tokens.length - 3, 0); +for (var j = 3; j < tokens.length; j++) this.gaussians[i][j - 3] = this.parseFloatStr(tokens[j]); + +} +var ac = this.atomNames.size(); +if (this.shells == null && ac > 0) { +this.shells = new JU.Lst(); +for (var i = 0; i < ac; i++) { +atomType = this.atomNames.get(i); +var slaters = shellsByAtomType.get(atomType); +if (slaters == null) { +JU.Logger.error("slater for atom " + i + " atomType " + atomType + " was not found in listing. Ignoring molecular orbitals"); +return; +}for (var j = 0; j < slaters.size(); j++) { +slater = slaters.get(j); +this.shells.addLast( Clazz.newIntArray(-1, [i + 1, slater[0], slater[1] + 1, slater[2]])); +} +} +}if (this.debugging) { +JU.Logger.debug(this.shellCount + " slater shells read"); +JU.Logger.debug(this.gaussianCount + " gaussian primitives read"); +}}, "~S,~S"); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +this.discardLinesUntilContains("FREQUENCY:"); +var haveFreq = false; +while (this.line != null && this.line.indexOf("FREQUENCY:") >= 0) { +var frequencyCount = 0; +var tokens = this.getTokens(); +var frequencies = Clazz.newFloatArray (tokens.length, 0); +for (var i = 0; i < tokens.length; i++) { +var frequency = this.parseFloatStr(tokens[i]); +if (tokens[i].equals("I")) frequencies[frequencyCount - 1] = -frequencies[frequencyCount - 1]; +if (Float.isNaN(frequency)) continue; +frequencies[frequencyCount++] = frequency; +if (this.debugging) { +JU.Logger.debug((this.vibrationNumber + 1) + " frequency=" + frequency); +}} +var red_masses = null; +var intensities = null; +this.rd(); +if (this.line.indexOf("MASS") >= 0) { +red_masses = this.getTokens(); +this.rd(); +}if (this.line.indexOf("INTENS") >= 0) { +intensities = this.getTokens(); +}var ac = this.asc.getLastAtomSetAtomCount(); +var iAtom0 = this.asc.ac; +var ignore = Clazz.newBooleanArray(frequencyCount, false); +for (var i = 0; i < frequencyCount; i++) { +ignore[i] = !this.doGetVibration(++this.vibrationNumber); +if (ignore[i]) continue; +if (haveFreq) { +this.asc.cloneLastAtomSet(); +} else { +haveFreq = true; +iAtom0 -= ac; +}this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, "" + frequencies[i], null); +if (red_masses != null) this.asc.setAtomSetModelProperty("ReducedMass", red_masses[red_masses.length - frequencyCount + i] + " AMU"); +if (intensities != null) this.asc.setAtomSetModelProperty("IRIntensity", intensities[intensities.length - frequencyCount + i] + " D^2/AMU-Angstrom^2"); +} +this.discardLinesUntilBlank(); +this.fillFrequencyData(iAtom0, ac, ac, ignore, false, 20, 12, null, 0, null); +this.readLines(13); +} +}); +c$.fixBasisLine = Clazz.defineMethod(c$, "fixBasisLine", +function(line){ +var pt; +var pt1; +line = line.$replace(')', ' '); +while ((pt = line.indexOf("(")) >= 0) { +pt1 = pt; +while (line.charAt(--pt1) == ' ') { +} +while (line.charAt(--pt1) != ' ') { +} +line = line.substring(0, ++pt1) + line.substring(pt + 1); +} +return line; +}, "~S"); +Clazz.defineMethod(c$, "setCalculationType", +function(){ +if (this.calcOptions == null || this.isTypeSet) return; +this.isTypeSet = true; +var SCFtype = this.calcOptions.get("contrl_options_SCFTYP"); +var Runtype = this.calcOptions.get("contrl_options_RUNTYP"); +var igauss = this.calcOptions.get("basis_options_IGAUSS"); +var gbasis = this.calcOptions.get("basis_options_GBASIS"); +if (gbasis != null && "AM1 MNDO PM3 PM6 PM7 RM1".indexOf(gbasis) >= 0) { +this.mopacBasis = J.adapter.readers.quantum.MopacSlaterReader.getMopacAtomZetaSPD(gbasis); +this.getSlaters(); +this.calculationType = gbasis; +} else { +var DFunc = !"0".equals(this.calcOptions.get("basis_options_NDFUNC")); +var PFunc = !"0".equals(this.calcOptions.get("basis_options_NPFUNC")); +var FFunc = !"0".equals(this.calcOptions.get("basis_options_NFFUNC")); +var DFTtype = this.calcOptions.get("contrl_options_DFTTYP"); +var perturb = this.parseIntStr(this.calcOptions.get("contrl_options_MPLEVL")); +var CItype = this.calcOptions.get("contrl_options_CITYP"); +var CCtype = this.calcOptions.get("contrl_options_CCTYP"); +if (igauss == null && SCFtype == null) return; +if (this.calculationType.equals("?")) this.calculationType = ""; +if (igauss != null) { +if ("0".equals(igauss)) { +var recognized = false; +if (this.calculationType.length > 0) this.calculationType += " "; +if (gbasis.startsWith("ACC")) this.calculationType += "aug-cc-p"; +if (gbasis.startsWith("CC")) this.calculationType += "cc-p"; +if ((gbasis.startsWith("ACC") || gbasis.startsWith("CC")) && gbasis.endsWith("C")) this.calculationType += "C"; +if (gbasis.indexOf("CCD") >= 0) { +this.calculationType += "VDZ"; +recognized = true; +}if (gbasis.indexOf("CCT") >= 0) { +this.calculationType += "VTZ"; +recognized = true; +}if (gbasis.indexOf("CCQ") >= 0) { +this.calculationType += "VQZ"; +recognized = true; +}if (gbasis.indexOf("CC5") >= 0) { +this.calculationType += "V5Z"; +recognized = true; +}if (gbasis.indexOf("CC6") >= 0) { +this.calculationType += "V6Z"; +recognized = true; +}if (!recognized) this.calculationType += gbasis; +} else { +if (this.calculationType.length > 0) this.calculationType += " "; +this.calculationType += igauss + "-" + JU.PT.rep(gbasis, "N", ""); +if ("T".equals(this.calcOptions.get("basis_options_DIFFSP"))) { +if ("T".equals(this.calcOptions.get("basis_options_DIFFS"))) this.calculationType += "+"; +this.calculationType += "+"; +}this.calculationType += "G"; +if (DFunc || PFunc || FFunc) { +this.calculationType += "("; +if (FFunc) { +this.calculationType += "f"; +if (DFunc || PFunc) this.calculationType += ","; +}if (DFunc) { +this.calculationType += "d"; +if (PFunc) this.calculationType += ","; +}if (PFunc) this.calculationType += "p"; +this.calculationType += ")"; +}}if (DFTtype != null && DFTtype.indexOf("NONE") < 0) { +if (this.calculationType.length > 0) this.calculationType += " "; +this.calculationType += DFTtype; +}if (CItype != null && CItype.indexOf("NONE") < 0) { +if (this.calculationType.length > 0) this.calculationType += " "; +this.calculationType += CItype; +}if (CCtype != null && CCtype.indexOf("NONE") < 0) { +if (this.calculationType.length > 0) this.calculationType += " "; +this.calculationType += CCtype; +}if (perturb > 0) { +if (this.calculationType.length > 0) this.calculationType += " "; +this.calculationType += "MP" + perturb; +}if (SCFtype != null) { +if (this.calculationType.length > 0) this.calculationType += " "; +this.calculationType += SCFtype + " " + Runtype; +}}}}); +Clazz.defineMethod(c$, "readControlInfo", +function(){ +this.readCalculationInfo("contrl_options_"); +}); +Clazz.defineMethod(c$, "readBasisInfo", +function(){ +this.readCalculationInfo("basis_options_"); +}); +Clazz.defineMethod(c$, "readCalculationInfo", +function(type){ +if (this.calcOptions == null) { +this.calcOptions = new java.util.Hashtable(); +this.asc.setInfo("calculationOptions", this.calcOptions); +}while (this.rd() != null && (this.line = this.line.trim()).length > 0) { +if (this.line.indexOf("=") < 0) continue; +var tokens = JU.PT.getTokens(JU.PT.rep(this.line, "=", " = ") + " ?"); +for (var i = 0; i < tokens.length; i++) { +if (!tokens[i].equals("=")) continue; +try { +var key = type + tokens[i - 1]; +var value = (key.equals("basis_options_SPLIT3") ? tokens[++i] + " " + tokens[++i] + " " + tokens[++i] : tokens[++i]); +if (this.debugging) JU.Logger.debug(key + " = " + value); +this.calcOptions.put(key, value); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +} +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessUKReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessUKReader.js new file mode 100755 index 000000000000..c2c7d347f16d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessUKReader.js @@ -0,0 +1,77 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.GamessReader"], "J.adapter.readers.quantum.GamessUKReader", ["JU.Lst", "$.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.symmetries = null; +this.occupancies = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "GamessUKReader", J.adapter.readers.quantum.GamessReader); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf("BASIS OPTIONS") >= 0) { +this.readBasisInfo(); +return true; +}if (this.line.indexOf("$CONTRL OPTIONS") >= 0) { +this.readControlInfo(); +return true; +}if (this.line.indexOf("contracted primitive functions") >= 0) { +this.readGaussianBasis("======================================================", "======"); +return false; +}if (this.line.indexOf("molecular geometry") >= 0) { +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.atomNames = new JU.Lst(); +this.readAtomsInBohrCoordinates(); +return true; +}if (!this.doProcessLines) return true; +if (this.line.indexOf("FREQUENCY_INFO_WOULD_BE_HERE") >= 0) { +return true; +}if (this.line.indexOf("SYMMETRY ASSIGNMENT") >= 0) { +this.readOrbitalSymmetryAndOccupancy(); +return false; +}if (this.line.indexOf("- ALPHA SET -") >= 0) this.alphaBeta = "alpha"; + else if (this.line.indexOf("- BETA SET -") >= 0) this.alphaBeta = "beta"; + else if (this.line.indexOf("eigenvectors") >= 0) { +this.readMolecularOrbitals(3); +this.setOrbitalSymmetryAndOccupancy(); +return false; +}return this.checkNboLine(); +}); +Clazz.overrideMethod(c$, "readAtomsInBohrCoordinates", +function(){ +this.discardLinesUntilContains("*****"); +this.discardLinesUntilContains("atom"); +this.discardLinesUntilContains("*****"); +this.asc.newAtomSet(); +while (this.rd() != null && this.line.indexOf("*****") < 0) { +if (this.line.charAt(14) == ' ') continue; +var tokens = this.getTokens(); +var atomicNumber = Clazz.floatToInt(this.parseFloatStr(tokens[2])); +var atom = this.setAtomCoordScaled(null, tokens, 3, 0.5291772); +atom.elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(atomicNumber); +this.setAtom(atom, atomicNumber, tokens[1], null); +} +}); +Clazz.overrideMethod(c$, "fixShellTag", +function(tag){ +return tag.substring(1).toUpperCase(); +}, "~S"); +Clazz.defineMethod(c$, "readOrbitalSymmetryAndOccupancy", +function(){ +this.readLines(4); +this.symmetries = new JU.Lst(); +this.occupancies = new JU.Lst(); +while (this.rd() != null && this.line.indexOf("====") < 0) { +var tokens = JU.PT.getTokens(this.line.substring(20)); +this.symmetries.addLast(tokens[0] + " " + tokens[1]); +this.occupancies.addLast(Float.$valueOf(this.parseFloatStr(tokens[5]))); +} +}); +Clazz.defineMethod(c$, "setOrbitalSymmetryAndOccupancy", +function(){ +if (this.symmetries.size() < this.orbitals.size()) return; +for (var i = this.orbitals.size(); --i >= 0; ) { +var mo = this.orbitals.get(i); +mo.put("symmetry", this.symmetries.get(i)); +mo.put("occupancy", this.occupancies.get(i)); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessUSReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessUSReader.js new file mode 100755 index 000000000000..6d4ec61df47a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GamessUSReader.js @@ -0,0 +1,188 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.GamessReader"], "J.adapter.readers.quantum.GamessUSReader", ["JU.Lst", "$.PT", "$.V3", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.lowdenCharges = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "GamessUSReader", J.adapter.readers.quantum.GamessReader); +Clazz.defineMethod(c$, "initializeReader", +function(){ +this.lowdenCharges = this.checkAndRemoveFilterKey("CHARGE=LOW"); +Clazz.superCall(this, J.adapter.readers.quantum.GamessUSReader, "initializeReader", []); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.startsWith(" $DATA")) return this.readInputDeck(); +if (this.line.indexOf("***************") >= 0) JU.Logger.info(this.rd()); +var isBohr; +if (this.line.indexOf("FINAL ENERGY IS") >= 0 || this.line.indexOf("TOTAL ENERGY = ") >= 0 || this.line.indexOf("FINAL RHF ENERGY IS") >= 0 || this.line.indexOf("E(MP2)=") >= 0 || this.line.indexOf("COUPLED-CLUSTER ENERGY E(CCSD) =") >= 0 || this.line.indexOf("COUPLED-CLUSTER ENERGY E( CCSD(T)) =") >= 0) { +this.readEnergy(); +}if (this.line.indexOf("BASIS OPTIONS") >= 0) { +this.readBasisInfo(); +return true; +}if (this.line.indexOf("$CONTRL OPTIONS") >= 0) { +this.readControlInfo(); +return true; +}if (this.line.indexOf("ATOMIC BASIS SET") >= 0) { +this.readGaussianBasis("SHELL TYPE", "TOTAL"); +return false; +}if ((isBohr = this.line.indexOf("COORDINATES (BOHR)") >= 0) || this.line.indexOf("COORDINATES OF ALL ATOMS ARE (ANGS)") >= 0) { +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.atomNames = new JU.Lst(); +if (isBohr) this.readAtomsInBohrCoordinates(); + else this.readAtomsInAngstromCoordinates(); +return true; +}if (!this.doProcessLines) return true; +if (this.line.indexOf("FREQUENCIES IN CM") >= 0) { +this.readFrequencies(); +return true; +}if (this.line.indexOf("SUMMARY OF THE EFFECTIVE FRAGMENT") >= 0) { +this.readEFPInBohrCoordinates(); +return false; +}if (this.line.indexOf(" TOTAL MULLIKEN AND LOWDIN ATOMIC POPULATIONS") >= 0) { +this.readPartialCharges(); +return false; +}if (this.line.indexOf("ELECTROSTATIC MOMENTS") >= 0) { +this.readDipoleMoment(); +return true; +}if (this.line.indexOf("- ALPHA SET -") >= 0) this.alphaBeta = "alpha"; + else if (this.line.indexOf("- BETA SET -") >= 0) this.alphaBeta = "beta"; + else if (this.line.indexOf(" EIGENVECTORS") >= 0 || this.line.indexOf(" INITIAL GUESS ORBITALS") >= 0 || this.line.indexOf(" MCSCF OPTIMIZED ORBITALS") >= 0 || this.line.indexOf(" MCSCF NATURAL ORBITALS") >= 0 || this.line.indexOf(" MOLECULAR ORBITALS") >= 0 && this.line.indexOf(" MOLECULAR ORBITALS LOCALIZED BY THE POPULATION METHOD") < 0) { +if (!this.filterMO()) return true; +this.readMolecularOrbitals(1); +return false; +}if (this.line.indexOf("EDMISTON-RUEDENBERG ENERGY LOCALIZED ORBITALS") >= 0 || this.line.indexOf(" THE PIPEK-MEZEY POPULATION LOCALIZED ORBITALS ARE") >= 0) { +if (!this.filterMO()) return true; +this.readMolecularOrbitals(0); +return false; +}if (this.line.indexOf(" NATURAL ORBITALS IN ATOMIC ORBITAL BASIS") >= 0) { +if (!this.filterMO()) return true; +this.readMolecularOrbitals(2); +return false; +}return this.checkNboLine(); +}); +Clazz.defineMethod(c$, "readInputDeck", +function(){ +this.readLines(2); +this.asc.newAtomSet(); +while (this.rd().indexOf("$END") < 0) { +var tokens = this.getTokens(); +if (tokens.length > 4) this.addAtomXYZSymName(tokens, 2, tokens[0], null).elementNumber = this.parseIntStr(tokens[1]); +} +return (this.continuing = false); +}); +Clazz.defineMethod(c$, "readMolecularOrbitals", +function(headerType){ +this.setCalculationType(); +Clazz.superCall(this, J.adapter.readers.quantum.GamessUSReader, "readMolecularOrbitals", [headerType]); +}, "~N"); +Clazz.defineMethod(c$, "readEFPInBohrCoordinates", +function(){ +var acInFirstModel = this.asc.ac; +this.discardLinesUntilContains("MULTIPOLE COORDINATES"); +this.rd(); +this.rd(); +while (this.rd() != null && this.line.length >= 72) { +var atomName = this.line.substring(1, 2); +if (atomName.charAt(0) == 'Z') atomName = this.line.substring(2, 3); + else if (this.parseFloatRange(this.line, 67, 73) == 0) continue; +var x = this.parseFloatRange(this.line, 8, 25); +var y = this.parseFloatRange(this.line, 25, 40); +var z = this.parseFloatRange(this.line, 40, 56); +if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) break; +var atom = this.asc.addNewAtom(); +atom.atomName = atomName + (++acInFirstModel); +this.setAtomCoordXYZ(atom, x * 0.5291772, y * 0.5291772, z * 0.5291772); +this.atomNames.addLast(atomName); +} +}); +Clazz.overrideMethod(c$, "readAtomsInBohrCoordinates", +function(){ +this.rd(); +var atomName; +this.asc.newAtomSet(); +var n = 0; +while (this.rd() != null && (atomName = this.parseTokenRange(this.line, 1, 11)) != null) { +var x = this.parseFloatRange(this.line, 17, 37); +var y = this.parseFloatRange(this.line, 37, 57); +var z = this.parseFloatRange(this.line, 57, 77); +if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) break; +var atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, x * 0.5291772, y * 0.5291772, z * 0.5291772); +var atomicNumber = this.parseIntRange(this.line, 11, 14); +atom.elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(atomicNumber); +this.setAtom(atom, atomicNumber, atom.elementSymbol + (++n), atomName); +} +}); +Clazz.defineMethod(c$, "readAtomsInAngstromCoordinates", +function(){ +this.rd(); +this.rd(); +var atomName; +this.asc.newAtomSet(); +var n = 0; +while (this.rd() != null && (atomName = this.parseTokenRange(this.line, 1, 11)) != null) { +var x = this.parseFloatRange(this.line, 16, 31); +var y = this.parseFloatRange(this.line, 31, 46); +var z = this.parseFloatRange(this.line, 46, 61); +if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) break; +var atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, x, y, z); +var atomicNumber = this.parseIntRange(this.line, 11, 14); +atom.elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(atomicNumber); +this.setAtom(atom, atomicNumber, atom.elementSymbol + (++n), atomName); +} +if (this.line.indexOf("COORDINATES OF FRAGMENT MULTIPOLE CENTERS (ANGS)") >= 0) { +this.rd(); +this.rd(); +this.rd(); +while (this.rd() != null && (atomName = this.parseTokenRange(this.line, 1, 2)) != null) { +if (this.parseTokenRange(this.line, 1, 2).equals("Z")) atomName = this.parseTokenRange(this.line, 2, 3); + else if (this.parseTokenRange(this.line, 1, 9).equals("FRAGNAME")) continue; + else atomName = this.parseTokenRange(this.line, 1, 2); +var x = this.parseFloatRange(this.line, 16, 31); +var y = this.parseFloatRange(this.line, 31, 46); +var z = this.parseFloatRange(this.line, 46, 61); +if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) break; +var atom = this.asc.addNewAtom(); +atom.atomName = atomName + (++n); +this.setAtomCoordXYZ(atom, x, y, z); +this.atomNames.addLast(atomName); +} +}}); +Clazz.overrideMethod(c$, "fixShellTag", +function(tag){ +return tag; +}, "~S"); +Clazz.defineMethod(c$, "readPartialCharges", +function(){ +var tokens = null; +var searchstr = (this.lowdenCharges ? "LOW.POP." : "MULL.POP."); +while (this.rd() != null && ("".equals(this.line.trim()) || this.line.indexOf("ATOM") >= 0)) { +tokens = this.getTokens(); +} +var poploc = 0; +for (; ++poploc < tokens.length; ) if (searchstr.equals(tokens[poploc])) break; + +if (++poploc >= tokens.length || !"CHARGE".equals(tokens[poploc++])) return; +var atoms = this.asc.atoms; +var startAtom = this.asc.getLastAtomSetAtomIndex(); +var endAtom = this.asc.ac; +for (var i = startAtom; i < endAtom && this.rd() != null; ++i) atoms[i].partialCharge = this.parseFloatStr(JU.PT.getTokens(this.prevline)[poploc]); + +}); +Clazz.defineMethod(c$, "readDipoleMoment", +function(){ +var tokens = null; +this.rd(); +while (this.line != null && ("".equals(this.line.trim()) || this.line.indexOf("DX") < 0)) { +this.rd(); +} +tokens = this.getTokens(); +if (tokens.length != 5) return; +if ("DX".equals(tokens[0]) && "DY".equals(tokens[1]) && "DZ".equals(tokens[2])) { +tokens = JU.PT.getTokens(this.rd()); +var dipole = JU.V3.new3(this.parseFloatStr(tokens[0]), this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2])); +JU.Logger.info("Molecular dipole for model " + this.asc.atomSetCount + " = " + dipole); +this.asc.setCurrentModelInfo("dipole", dipole); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianFchkReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianFchkReader.js new file mode 100755 index 000000000000..ff5ae1c59fb3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianFchkReader.js @@ -0,0 +1,255 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.GaussianReader"], "J.adapter.readers.quantum.GaussianFchkReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "$.V3", "J.adapter.readers.quantum.BasisFunctionReader", "J.adapter.smarter.Bond", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.fileData = null; +this.atomCount = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "GaussianFchkReader", J.adapter.readers.quantum.GaussianReader); +Clazz.defineMethod(c$, "initializeReader", +function(){ +Clazz.superCall(this, J.adapter.readers.quantum.GaussianFchkReader, "initializeReader", []); +this.energyUnits = ""; +this.fileData = new java.util.Hashtable(); +this.fileData.put("title", this.rd().trim()); +this.calculationType = JU.PT.rep(this.rd(), " ", " "); +this.asc.newAtomSet(); +this.asc.setCurrentModelInfo("fileData", this.fileData); +this.readAllData(); +this.readAtoms(); +this.readBonds(); +this.readDipoleMoment(); +this.readPartialCharges(); +this.readBasis(); +this.readMolecularObitals(); +this.checkForFreq(); +this.continuing = false; +}); +Clazz.defineMethod(c$, "checkForFreq", +function(){ +var n = this.fileData.get("Vib-NDim"); +if (n == null) { +this.readFrequencies("NumFreq", false); +return; +}try { +var nModes = n.intValue(); +var vibE2 = this.fileData.get("Vib-E2"); +var modes = this.fileData.get("Vib-Modes"); +var frequencies = this.fillFloat(vibE2, 0, nModes); +var red_masses = this.fillFloat(vibE2, nModes, nModes); +var frc_consts = this.fillFloat(vibE2, nModes * 2, nModes); +var intensities = this.fillFloat(vibE2, nModes * 3, nModes); +var ac = this.asc.getLastAtomSetAtomCount(); +var ignore = Clazz.newBooleanArray(nModes, false); +var fpt = 0; +for (var i = 0; i < nModes; ++i) { +ignore[i] = !this.doGetVibration(++this.vibrationNumber); +if (ignore[i]) continue; +var iAtom0 = this.asc.ac; +this.asc.cloneAtomSetWithBonds(true); +var name = this.asc.setAtomSetFrequency(this.vibrationNumber, "Calculation " + this.calculationNumber, null, "" + frequencies[i], null); +this.appendLoadNote("model " + this.asc.atomSetCount + ": " + name); +this.namedSets.set(this.asc.iSet); +this.asc.setAtomSetModelProperty("ReducedMass", red_masses[i] + " AMU"); +this.asc.setAtomSetModelProperty("ForceConstant", frc_consts[i] + " mDyne/A"); +this.asc.setAtomSetModelProperty("IRIntensity", intensities[i] + " KM/Mole"); +for (var iAtom = 0; iAtom < ac; iAtom++) { +this.asc.addVibrationVectorWithSymmetry(iAtom0 + iAtom, modes[fpt++], modes[fpt++], modes[fpt++], false); +} +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Could not read Vib-E2 section: " + e.getMessage()); +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "fillFloat", +function(f0, i, n){ +var f = Clazz.newFloatArray (n, 0); +for (var i1 = 0, ilast = i + n; i < ilast; i++, i1++) f[i1] = f0[i]; + +return f; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "readAllData", +function(){ +while ((this.line == null ? this.rd() : this.line) != null) { +if (this.line.length < 40) { +if (this.line.indexOf("NumAtom") == 0) { +return; +}continue; +}var name = JU.PT.rep(this.line.substring(0, 40).trim(), " ", ""); +var type = this.line.charAt(43); +var isArray = (this.line.indexOf("N=") >= 0); +var v = this.line.substring(50).trim(); +JU.Logger.info(name + " = " + v + " " + isArray); +var o = null; +if (isArray) { +switch ((type).charCodeAt(0)) { +case 73: +case 82: +o = this.fillFloatArray(null, 0, Clazz.newFloatArray (this.parseIntStr(v), 0)); +this.line = null; +break; +default: +v = this.rd().trim(); +while (this.rd() != null && this.line.indexOf(" N= ") < 0) v += " " + this.line.trim(); + +o = v; +break; +} +} else { +switch ((type).charCodeAt(0)) { +case 73: +o = Integer.$valueOf(this.parseIntStr(v)); +break; +case 82: +o = Double.$valueOf(Double.parseDouble(v)); +break; +case 67: +case 76: +o = v; +break; +} +this.line = null; +}if (o != null) this.fileData.put(name, o); +} +}); +Clazz.overrideMethod(c$, "readAtoms", +function(){ +var atomNumbers = this.fileData.get("Atomicnumbers"); +var data = this.fileData.get("Currentcartesiancoordinates"); +var e = "" + this.fileData.get("TotalEnergy"); +this.asc.setAtomSetEnergy(e, this.parseFloatStr(e)); +this.atomCount = atomNumbers.length; +var f = 0.5291772; +for (var i = 0, pt = 0; i < this.atomCount; i++) { +var atom = this.asc.addNewAtom(); +atom.elementNumber = Clazz.floatToShort(atomNumbers[i]); +if (atom.elementNumber < 0) atom.elementNumber = 0; +this.setAtomCoordXYZ(atom, data[pt++] * f, data[pt++] * f, data[pt++] * f); +} +}); +Clazz.defineMethod(c$, "readBonds", +function(){ +try { +var nBond = this.fileData.get("NBond"); +var iBond = this.fileData.get("IBond"); +if (nBond.length == 0) return; +var rBond = this.fileData.get("RBond"); +var mxBond = Clazz.doubleToInt(rBond.length / nBond.length); +for (var ia = 0, pt = 0; ia < this.atomCount; ia++) for (var j = 0; j < mxBond; j++, pt++) { +var ib = Clazz.floatToInt(iBond[pt]) - 1; +if (ib <= ia) continue; +var order = rBond[pt]; +var iorder = (order == 1.5 ? 515 : Clazz.floatToInt(order)); +this.asc.addBond( new J.adapter.smarter.Bond(ia, ib, iorder)); +} + +this.addJmolScript("connect 1.1 {_H} {*} "); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info("GaussianFchkReader -- bonding ignored"); +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "readDipoleMoment", +function(){ +var data = this.fileData.get("DipoleMoment"); +if (data == null) return; +var dipole = JU.V3.new3(data[0], data[1], data[2]); +JU.Logger.info("Molecular dipole for model " + this.asc.atomSetCount + " = " + dipole); +this.asc.setCurrentModelInfo("dipole", dipole); +}); +Clazz.overrideMethod(c$, "readPartialCharges", +function(){ +var data = this.fileData.get("Mulliken Charges"); +if (data == null) return; +var atoms = this.asc.atoms; +for (var i = 0; i < this.atomCount; ++i) { +var c = data[i]; +atoms[i].partialCharge = c; +if (Math.abs(c) > 0.8) atoms[i].formalCharge = Math.round(c); +} +JU.Logger.info("Mulliken charges found for Model " + this.asc.atomSetCount); +}); +Clazz.overrideMethod(c$, "readBasis", +function(){ +var types = this.fileData.get("Shelltypes"); +this.gaussianCount = 0; +this.shellCount = 0; +if (types == null) return; +this.shellCount = types.length; +this.shells = new JU.Lst(); +var pps = this.fileData.get("Numberofprimitivespershell"); +var atomMap = this.fileData.get("Shelltoatommap"); +var exps = this.fileData.get("Primitiveexponents"); +var coefs = this.fileData.get("Contractioncoefficients"); +var spcoefs = this.fileData.get("P(S=P)Contractioncoefficients"); +this.gaussians = JU.AU.newFloat2(exps.length); +for (var i = 0; i < this.shellCount; i++) { +var oType = J.adapter.readers.quantum.GaussianFchkReader.AO_TYPES[Clazz.floatToInt(types[i]) + 3]; +var nGaussians = Clazz.floatToInt(pps[i]); +var iatom = Clazz.floatToInt(atomMap[i]); +var slater = Clazz.newIntArray (4, 0); +slater[0] = iatom; +if (oType.equals("F7") || oType.equals("D5")) slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagIDSpherical(oType.substring(0, 1)); + else slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(oType); +slater[2] = this.gaussianCount + 1; +slater[3] = nGaussians; +if (this.debugging) JU.Logger.debug("Slater " + this.shells.size() + " " + JU.Escape.eAI(slater)); +this.shells.addLast(slater); +for (var j = 0; j < nGaussians; j++) { +var g = this.gaussians[this.gaussianCount] = Clazz.newFloatArray (3, 0); +g[0] = exps[this.gaussianCount]; +g[1] = coefs[this.gaussianCount]; +if (spcoefs != null) g[2] = spcoefs[this.gaussianCount]; +this.gaussianCount++; +} +} +JU.Logger.info(this.shellCount + " slater shells read"); +JU.Logger.info(this.gaussianCount + " gaussian primitives read"); +}); +Clazz.defineMethod(c$, "readMolecularObitals", +function(){ +if (this.shells == null) return; +var nElec = (this.fileData.get("Numberofelectrons")).intValue(); +var nAlpha = (this.fileData.get("Numberofalphaelectrons")).intValue(); +var nBeta = (this.fileData.get("Numberofbetaelectrons")).intValue(); +var aenergies = this.fileData.get("AlphaOrbitalEnergies"); +var benergies = this.fileData.get("BetaOrbitalEnergies"); +var acoefs = this.fileData.get("AlphaMOcoefficients"); +var bcoefs = this.fileData.get("BetaMOcoefficients"); +if (acoefs == null) return; +var occ = (bcoefs == null ? 2 : 1); +var n = (bcoefs == null ? nElec : nAlpha); +this.getOrbitals(aenergies, acoefs, occ, n); +if (bcoefs != null) this.getOrbitals(benergies, bcoefs, occ, nBeta); +this.setMOData(false); +}); +Clazz.defineMethod(c$, "getOrbitals", +function(e, c, occ, nElec){ +var nOrb = e.length; +var nCoef = c.length; +nCoef /= nOrb; +this.alphaBeta = (occ == 2 ? "" : this.alphaBeta.equals("alpha") ? "beta" : "alpha"); +var pt = 0; +var n = 0; +for (var i = 0; i < nOrb; i++) { +var coefs = Clazz.newFloatArray (nCoef, 0); +for (var j = 0; j < nCoef; j++) coefs[j] = c[pt++]; + +var mo = new java.util.Hashtable(); +mo.put("coefficients", coefs); +mo.put("occupancy", Float.$valueOf(occ)); +n += occ; +if (n >= nElec) occ = 0; +mo.put("energy", Float.$valueOf(e[i])); +mo.put("type", this.alphaBeta); +this.setMO(mo); +} +}, "~A,~A,~N,~N"); +c$.AO_TYPES = Clazz.newArray(-1, ["F7", "D5", "L", "S", "P", "D", "F", "G", "H"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianReader.js new file mode 100755 index 000000000000..e8cd80d9a7a1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianReader.js @@ -0,0 +1,437 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MOReader", "JU.BS"], "J.adapter.readers.quantum.GaussianReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "$.V3", "J.adapter.readers.quantum.BasisFunctionReader", "J.adapter.smarter.SmarterJmolAdapter", "J.quantum.QS", "JU.Escape", "$.Logger", "$.Tensor"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.energyString = ""; +this.energyKey = ""; +this.calculationNumber = 1; +this.scanPoint = -1; +this.equivalentAtomSets = 0; +this.stepNumber = 0; +this.moModelSet = -1; +this.namedSets = null; +this.isHighPrecision = false; +this.haveHighPrecision = false; +this.allowHighPrecision = false; +this.orientationInput = false; +this.orientation = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "GaussianReader", J.adapter.readers.quantum.MOReader); +Clazz.prepareFields (c$, function(){ +this.namedSets = new JU.BS(); +}); +Clazz.defineMethod(c$, "initializeReader", +function(){ +this.allowHighPrecision = !this.checkAndRemoveFilterKey("NOHP"); +this.orientation = (this.checkFilterKey("ORIENTATION:INPUT") ? "Input" : this.checkFilterKey("ORIENTATION:STANDARD") ? "Standard" : null); +this.orientationInput = (this.orientation === "Input"); +this.appendLoadNote("Orientation:" + (this.orientation == null ? "ALL" : this.orientation)); +if (this.orientation != null) this.orientation += " orientation:"; +Clazz.superCall(this, J.adapter.readers.quantum.GaussianReader, "initializeReader", []); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.startsWith(" Step number")) { +this.equivalentAtomSets = 0; +this.stepNumber++; +var scanPointIndex = this.line.indexOf("scan point"); +if (scanPointIndex > 0) { +this.scanPoint = this.parseIntAt(this.line, scanPointIndex + 10); +} else { +this.scanPoint = -1; +}return true; +}if (this.line.indexOf("-- Stationary point found") > 0) { +if (this.scanPoint >= 0) this.scanPoint++; +return true; +}if (this.orientation == null ? this.line.indexOf("Input orientation:") >= 0 || this.line.indexOf("Z-Matrix orientation:") >= 0 || this.line.indexOf("Standard orientation:") >= 0 : this.line.indexOf(this.orientation) >= 0 || this.orientationInput && this.line.indexOf("Z-Matrix orientation:") >= 0) { +if (!this.doGetModel(++this.modelNumber, null)) { +return this.checkLastModel(); +}this.equivalentAtomSets++; +JU.Logger.info(this.asc.atomSetCount + " model " + this.modelNumber + " step " + this.stepNumber + " equivalentAtomSet " + this.equivalentAtomSets + " calculation " + this.calculationNumber + " scan point " + this.scanPoint + this.line); +this.readAtoms(); +return false; +}if (!this.doProcessLines) return true; +if (this.line.startsWith(" Energy=")) { +this.setEnergy(); +return true; +}if (this.line.startsWith(" SCF Done:")) { +this.readSCFDone(); +return true; +}if (this.line.startsWith(" Calculating GIAO")) { +this.readCSATensors(); +return false; +}if (this.line.startsWith(" Total nuclear spin-spin coupling")) { +this.readCouplings(); +return false; +}if (!this.orientationInput && this.line.startsWith(" Harmonic frequencies")) { +this.readFrequencies(":", true); +return true; +}if (this.line.startsWith(" Total atomic charges:") || this.line.startsWith(" Mulliken atomic charges:")) { +this.readPartialCharges(); +return true; +}if (this.line.startsWith(" Dipole moment")) { +this.readDipoleMoment(); +return true; +}if (this.line.startsWith(" Standard basis:") || this.line.startsWith(" General basis read from")) { +this.energyUnits = ""; +this.calculationType = this.line.substring(this.line.indexOf(":") + 1).trim(); +return true; +} else if (this.line.startsWith(" Basis read from chk")) { +this.energyUnits = ""; +this.calculationType = this.line.substring(this.line.lastIndexOf("\"") + 1).trim(); +return true; +}if (this.line.startsWith(" AO basis set")) { +this.readBasis(); +return true; +}if (this.line.indexOf("Molecular Orbital Coefficients") >= 0 || this.line.indexOf("Natural Orbital Coefficients") >= 0 || this.line.indexOf("Natural Transition Orbitals") >= 0) { +if (!this.filterMO()) return true; +this.readMolecularOrbitals(); +JU.Logger.info(this.orbitals.size() + " molecular orbitals read"); +return true; +}if (this.line.startsWith(" Normal termination of Gaussian")) { +++this.calculationNumber; +this.equivalentAtomSets = 0; +return true; +}if (this.line.startsWith(" Mulliken atomic spin densities:")) { +this.getSpinDensities(11); +return true; +}if (this.line.startsWith(" Mulliken charges and spin densities:")) { +this.getSpinDensities(21); +return true; +}return this.checkNboLine(); +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (this.orientation == null) { +this.appendLoadNote("\nUse filter 'orientation:xxx' where 'xxx' is one of: input (includes z-matrix), standard, or ALL"); +} else { +this.appendLoadNote("\nfilter: " + this.filter); +}}); +Clazz.defineMethod(c$, "getSpinDensities", +function(pt){ +this.rd(); +var data = Clazz.newFloatArray (this.asc.getLastAtomSetAtomCount(), 0); +for (var i = 0; i < data.length; i++) data[i] = this.parseFloatStr(this.rd().substring(pt, pt + 10)); + +this.asc.setAtomProperties("spin", data, -1, false); +this.appendLoadNote(data.length + " spin densities loaded into model " + (this.asc.iSet + 1)); +}, "~N"); +Clazz.defineMethod(c$, "readSCFDone", +function(){ +var tokens = JU.PT.getTokensAt(this.line, 11); +if (tokens.length < 4) return; +this.energyKey = tokens[0]; +this.asc.setAtomSetEnergy(tokens[2], this.parseFloatStr(tokens[2])); +this.energyString = tokens[2] + " " + tokens[3]; +this.setNames(this.energyKey + " = " + this.energyString, this.namedSets, this.equivalentAtomSets); +this.setProps(this.energyKey, this.energyString, this.equivalentAtomSets); +tokens = JU.PT.getTokens(this.rd()); +if (tokens.length > 2) { +this.setProps(tokens[0], tokens[2], this.equivalentAtomSets); +if (tokens.length > 5) this.setProps(tokens[3], tokens[5], this.equivalentAtomSets); +tokens = JU.PT.getTokens(this.rd()); +}if (tokens.length > 2) this.setProps(tokens[0], tokens[2], this.equivalentAtomSets); +}); +Clazz.defineMethod(c$, "setProps", +function(key, value, n){ +for (var i = this.asc.iSet; --n >= 0 && i >= 0; --i) this.asc.setAtomSetModelPropertyForSet(key, value, i); + +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "setNames", +function(atomSetName, namedSets, n){ +for (var i = this.asc.iSet; --n >= 0 && i >= 0; --i) if (namedSets == null || !namedSets.get(i)) this.asc.setModelInfoForSet("name", atomSetName, i); + +}, "~S,JU.BS,~N"); +Clazz.defineMethod(c$, "setEnergy", +function(){ +var tokens = this.getTokens(); +this.energyKey = "Energy"; +this.energyString = tokens[1]; +this.setNames("Energy = " + tokens[1], this.namedSets, this.equivalentAtomSets); +this.asc.setAtomSetEnergy(this.energyString, this.parseFloatStr(this.energyString)); +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.asc.newAtomSet(); +this.haveHighPrecision = false; +if (this.energyKey.length != 0) this.asc.setAtomSetName(this.energyKey + " = " + this.energyString); +this.asc.setAtomSetEnergy(this.energyString, this.parseFloatStr(this.energyString)); +var path = this.getTokens()[0]; +this.readLines(4); +var tokens; +while (this.rd() != null && !this.line.startsWith(" --")) { +tokens = this.getTokens(); +var atom = this.asc.addNewAtom(); +atom.elementNumber = this.parseIntStr(tokens[1]); +if (atom.elementNumber < 0) atom.elementNumber = 0; +this.setAtomCoordTokens(atom, tokens, tokens.length - 3); +} +this.asc.setAtomSetModelProperty(".PATH", "Calculation " + this.calculationNumber + (this.scanPoint >= 0 ? (J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR + "Scan Point " + this.scanPoint) : "") + J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR + path); +}); +Clazz.defineMethod(c$, "readBasis", +function(){ +this.shells = new JU.Lst(); +var gdata = new JU.Lst(); +var ac = 0; +this.gaussianCount = 0; +this.shellCount = 0; +var lastAtom = ""; +var tokens; +var doSphericalD = (this.calculationType != null && (this.calculationType.indexOf("5D") > 0)); +var doSphericalF = (this.calculationType != null && (this.calculationType.indexOf("7F") > 0)); +var doSpherical = (doSphericalD || doSphericalF); +var isGeneral = (this.line.indexOf("general basis input") >= 0); +if (isGeneral) { +while (this.rd() != null && this.line.length > 0) { +this.shellCount++; +tokens = this.getTokens(); +ac++; +while (this.rd().indexOf("****") < 0) { +var slater = Clazz.newIntArray (4, 0); +slater[0] = ac; +tokens = this.getTokens(); +var oType = tokens[0]; +if (doSphericalF && (oType.indexOf("F") >= 0 || oType.indexOf("G") >= 0 || oType.indexOf("H") >= 0 || oType.indexOf("I") >= 0) || doSphericalD && oType.indexOf("D") >= 0) slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagIDSpherical(oType); + else slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(oType); +var nGaussians = this.parseIntStr(tokens[1]); +slater[2] = this.gaussianCount + 1; +slater[3] = nGaussians; +if (this.debugging) JU.Logger.debug("Slater " + this.shells.size() + " " + JU.Escape.eAI(slater)); +this.shells.addLast(slater); +this.gaussianCount += nGaussians; +for (var i = 0; i < nGaussians; i++) { +this.rd(); +this.line = JU.PT.rep(this.line, "D ", "D+"); +tokens = this.getTokens(); +if (this.debugging) JU.Logger.debug("Gaussians " + (i + 1) + " " + JU.Escape.eAS(tokens, true)); +gdata.addLast(tokens); +} +} +} +} else { +while (this.rd() != null && this.line.startsWith(" Atom")) { +this.shellCount++; +tokens = this.getTokens(); +var slater = Clazz.newIntArray (4, 0); +if (!tokens[1].equals(lastAtom)) ac++; +lastAtom = tokens[1]; +slater[0] = ac; +var oType = tokens[4]; +if (doSpherical && (doSphericalD && oType.indexOf("D") >= 0 || doSphericalF && (oType.indexOf("F") >= 0 || oType.indexOf("G") >= 0 || oType.indexOf("H") >= 0 || oType.indexOf("I") >= 0))) slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagIDSpherical(oType); + else slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(oType); +this.enableShell(slater[1]); +var nGaussians = this.parseIntStr(tokens[5]); +slater[2] = this.gaussianCount + 1; +slater[3] = nGaussians; +this.shells.addLast(slater); +this.gaussianCount += nGaussians; +for (var i = 0; i < nGaussians; i++) { +gdata.addLast(JU.PT.getTokens(this.rd())); +} +} +}if (ac == 0) ac = 1; +this.gaussians = JU.AU.newFloat2(this.gaussianCount); +for (var i = 0; i < this.gaussianCount; i++) { +tokens = gdata.get(i); +this.gaussians[i] = Clazz.newFloatArray (tokens.length, 0); +for (var j = 0; j < tokens.length; j++) this.gaussians[i][j] = this.parseFloatStr(tokens[j]); + +} +JU.Logger.info(this.shellCount + " slater shells read"); +JU.Logger.info(this.gaussianCount + " gaussian primitives read"); +}); +Clazz.defineMethod(c$, "readMolecularOrbitals", +function(){ +if (this.shells == null) return; +var mos = JU.AU.createArrayOfHashtable(5); +var data = JU.AU.createArrayOfArrayList(5); +var nThisLine = 0; +var isNOtype = this.line.contains("Natural Orbital"); +while (this.rd() != null && this.line.toUpperCase().indexOf("DENS") < 0) { +var tokens; +if (this.line.indexOf("eta Molecular Orbital Coefficients") >= 0) { +this.addMOData(nThisLine, data, mos); +nThisLine = 0; +if (!this.filterMO()) break; +}if (this.line.indexOf(" ") == 0) { +this.addMOData(nThisLine, data, mos); +if (isNOtype) { +tokens = this.getTokens(); +nThisLine = tokens.length; +tokens = JU.PT.getTokens(this.rd()); +} else { +tokens = JU.PT.getTokens(this.rd()); +nThisLine = tokens.length; +}for (var i = 0; i < nThisLine; i++) { +mos[i] = new java.util.Hashtable(); +data[i] = new JU.Lst(); +var sym; +if (isNOtype) { +mos[i].put("occupancy", Float.$valueOf(JU.PT.parseFloat(tokens[i + 2]))); +} else { +sym = tokens[i]; +mos[i].put("symmetry", sym); +if (sym.indexOf("O") >= 0) mos[i].put("occupancy", Float.$valueOf(2)); + else if (sym.indexOf("V") >= 0) mos[i].put("occupancy", Float.$valueOf(0)); +}} +if (isNOtype) continue; +this.line = this.rd().substring(21); +tokens = this.getTokens(); +if (tokens.length != nThisLine) tokens = J.adapter.smarter.AtomSetCollectionReader.getStrings(this.line, nThisLine, 10); +for (var i = 0; i < nThisLine; i++) { +mos[i].put("energy", Float.$valueOf(tokens[i])); +} +continue; +} else if (this.line.length < 21 || (this.line.charAt(5) != ' ' && !JU.PT.isDigit(this.line.charAt(5)))) { +continue; +}try { +this.line = JU.PT.rep(this.line, " 0 ", "0 "); +tokens = this.getTokens(); +var type = tokens[tokens.length - nThisLine - 1].substring(1); +if (JU.PT.isDigit(type.charAt(0))) type = type.substring(1); +if (!J.quantum.QS.isQuantumBasisSupported(type.charAt(0)) && "XYZ".indexOf(type.charAt(0)) >= 0) type = (type.length == 2 ? "D" : "F") + type; +if (!J.quantum.QS.isQuantumBasisSupported(type.charAt(0))) continue; +tokens = J.adapter.smarter.AtomSetCollectionReader.getStrings(this.line.substring(this.line.length - 10 * nThisLine), nThisLine, 10); +for (var i = 0; i < nThisLine; i++) data[i].addLast(tokens[i]); + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Error reading Gaussian file Molecular Orbitals at line: " + this.line); +break; +} else { +throw e; +} +} +} +this.addMOData(nThisLine, data, mos); +this.setMOData(this.moModelSet != this.asc.atomSetCount); +this.moModelSet = this.asc.atomSetCount; +}); +Clazz.defineMethod(c$, "readFrequencies", +function(key, mustHave){ +this.discardLinesUntilContains2(key, ":"); +if (this.line == null && mustHave) throw ( new Exception("No frequencies encountered")); +this.line = this.rd(); +var ac = this.asc.getLastAtomSetAtomCount(); +var data = new Array(ac); +var temp = null; +var atomIndices = Clazz.newIntArray (ac, 0); +while (this.line != null && this.line.length > 20 && this.line.indexOf("Temperature") < 0) { +var symmetries = JU.PT.getTokens(this.rd()); +this.discardLinesUntilContains(" Frequencies"); +if (this.line == null) return; +this.isHighPrecision = (this.line.indexOf("---") > 0); +if (this.isHighPrecision ? !this.allowHighPrecision : this.haveHighPrecision) return; +if (this.isHighPrecision && !this.haveHighPrecision) { +this.appendLoadNote("high precision vibrational modes enabled. Use filter 'NOHP' to disable."); +this.haveHighPrecision = true; +}if (temp == null) temp = Clazz.newArray(this.isHighPrecision ? 3 : 1, 0, null); +var width = (this.isHighPrecision ? 22 : 15); +var frequencies = JU.PT.getTokensAt(this.line, width); +var red_masses = JU.PT.getTokensAt(this.discardLinesUntilContains(this.isHighPrecision ? "Reduced masses" : "Red. masses"), width); +var frc_consts = JU.PT.getTokensAt(this.discardLinesUntilContains(this.isHighPrecision ? "Force constants" : "Frc consts"), width); +var intensities = JU.PT.getTokensAt(this.discardLinesUntilContains(this.isHighPrecision ? "IR Intensities" : "IR Inten"), width); +var iAtom0 = this.asc.ac; +var frequencyCount = frequencies.length; +var ignore = Clazz.newBooleanArray(frequencyCount, false); +for (var i = 0; i < frequencyCount; ++i) { +ignore[i] = !this.doGetVibration(++this.vibrationNumber); +if (ignore[i]) continue; +this.asc.cloneAtomSetWithBonds(true); +var name = this.asc.setAtomSetFrequency(this.vibrationNumber, "Calculation " + this.calculationNumber, symmetries[i], frequencies[i], null); +this.appendLoadNote("model " + this.asc.atomSetCount + ": " + name); +this.namedSets.set(this.asc.iSet); +this.asc.setAtomSetModelProperty("ReducedMass", red_masses[i] + " AMU"); +this.asc.setAtomSetModelProperty("ForceConstant", frc_consts[i] + " mDyne/A"); +this.asc.setAtomSetModelProperty("IRIntensity", intensities[i] + " KM/Mole"); +} +this.discardLinesUntilContains(" Atom "); +if (this.isHighPrecision) { +while (true) { +this.fillFrequencyData(iAtom0, 1, ac, ignore, false, 23, 10, null, 9, temp); +if (temp[0] == null) break; +} +} else { +var nLines = 0; +var nMin = frequencyCount * 3 + 1; +while (true) { +this.fillDataBlockFixed(temp, 0, 0, 0); +if (temp[0].length < nMin) break; +atomIndices[nLines] = Integer.$valueOf(temp[0][0]).intValue() - 1; +data[nLines++] = temp[0]; +} +this.fillFrequencyData(iAtom0, nLines, ac, ignore, true, 0, 0, atomIndices, 0, data); +}} +}, "~S,~B"); +Clazz.defineMethod(c$, "readDipoleMoment", +function(){ +var tokens = JU.PT.getTokens(this.rd()); +if (tokens.length != 8) return; +var dipole = JU.V3.new3(this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[3]), this.parseFloatStr(tokens[5])); +JU.Logger.info("Molecular dipole for model " + this.asc.atomSetCount + " = " + dipole); +this.asc.setCurrentModelInfo("dipole", dipole); +}); +Clazz.defineMethod(c$, "readPartialCharges", +function(){ +this.rd(); +var ac = this.asc.ac; +var i0 = this.asc.getLastAtomSetAtomIndex(); +var atoms = this.asc.atoms; +for (var i = i0; i < ac; ++i) { +while (atoms[i].elementNumber == 0) ++i; + +var charge = this.parseFloatStr(JU.PT.getTokens(this.rd())[2]); +atoms[i].partialCharge = charge; +} +JU.Logger.info("Mulliken charges found for Model " + this.asc.atomSetCount); +}); +Clazz.defineMethod(c$, "readCSATensors", +function(){ +this.rd(); +this.rd(); +while (this.line != null && this.line.indexOf("Isotropic") >= 0) { +var iatom = this.parseIntAt(this.line, 0); +var data = (this.rd() + this.rd() + this.rd()).$plit("="); +this.addTensor(iatom, data); +if (this.rd() != null && this.line.indexOf("Eigen") >= 0) this.rd(); +} +this.appendLoadNote("NMR shift tensors are available for model=" + (this.asc.iSet + 1) + "\n using \"ellipsoids set 'csa'."); +}); +Clazz.defineMethod(c$, "addTensor", +function(iatom, data){ +var i0 = this.asc.getLastAtomSetAtomIndex(); +var a = Clazz.newDoubleArray (3, 3, 0); +for (var i = 0, p = 1; i < 3; i++) { +for (var j = 0; j < 3; j++, p++) { +a[i][j] = this.parseFloatStr(data[p]); +} +} +var t = new JU.Tensor().setFromAsymmetricTensor(a, "csa", "csa" + iatom); +this.asc.atoms[i0 + iatom - 1].addTensor(t, "csa", false); +System.out.println("calc Tensor " + t + "calc isotropy=" + t.getInfo("isotropy") + " anisotropy=" + t.getInfo("anisotropy") + "\n"); +}, "~N,~A"); +Clazz.defineMethod(c$, "readCouplings", +function(){ +var type = (this.line.indexOf(" K ") >= 0 ? "K" : "J"); +var n = this.asc.getLastAtomSetAtomCount(); +var data = Clazz.newFloatArray (n, n, 0); +var k0 = 0; +while (true) { +this.rd(); +for (var i = k0; i < n; i++) { +this.rd(); +var tokens = this.getTokens(); +for (var j = 1, nj = tokens.length; j < nj; j++) { +var v = this.parseFloatStr(tokens[j]); +data[i][k0 + j - 1] = data[k0 + j - 1][i] = v; +} +} +k0 += 5; +if (k0 >= n) break; +} +System.out.println(data); +this.asc.setModelInfoForSet("NMR_" + type + "_couplings", data, this.asc.iSet); +if (type === "J") { +this.asc.setAtomProperties("J", data, this.asc.iSet, false); +this.appendLoadNote("NMR J Couplings saved for model=" + (this.asc.iSet + 1) + " as property_J;\n use set measurementUnits \"+hz\" to measure them."); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianWfnReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianWfnReader.js new file mode 100755 index 000000000000..18a355f3c43c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GaussianWfnReader.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.quantum.GaussianWfnReader", null, function(){ +var c$ = Clazz.declareType(J.adapter.readers.quantum, "GaussianWfnReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.continuing = false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GenNBOReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GenNBOReader.js new file mode 100755 index 000000000000..61b03dd4ccf9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/GenNBOReader.js @@ -0,0 +1,617 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MOReader"], "J.adapter.readers.quantum.GenNBOReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.P3", "$.PT", "$.Rdr", "$.SB", "J.adapter.readers.quantum.NBOParser", "JU.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isOutputFile = false; +this.nboType = ""; +this.nOrbitals0 = 0; +this.is47File = false; +this.isOpenShell = false; +this.alphaOnly = false; +this.betaOnly = false; +this.nAOs = 0; +this.nNOs = 0; +this.topoType = "A"; +this.nStructures = 0; +this.nboParser = null; +this.addBetaSet = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "GenNBOReader", J.adapter.readers.quantum.MOReader); +Clazz.defineMethod(c$, "initializeReader", +function(){ +var line1 = this.rd().trim().toUpperCase(); +this.is47File = (line1.indexOf("$GENNBO") >= 0 || line1.indexOf("$NBO") >= 0); +if (this.is47File) { +if (line1.indexOf("BOHR") >= 0) { +this.fileOffset = new JU.P3(); +this.fileScaling = JU.P3.new3(0.5291772, 0.5291772, 0.5291772); +}this.readData47(); +return; +}this.alphaOnly = this.checkFilterKey("ALPHA"); +this.betaOnly = this.checkFilterKey("BETA"); +var isOK; +var line2 = this.rd(); +this.line = line1 + line2; +this.isOutputFile = (line2.indexOf("****") >= 0); +if (this.isOutputFile) { +isOK = this.getFile31(); +Clazz.superCall(this, J.adapter.readers.quantum.GenNBOReader, "initializeReader", []); +} else if (line2.indexOf("s in the AO basis:") >= 0) { +this.nboType = line2.substring(1, line2.indexOf("s")); +this.asc.setCollectionName(line1 + ": " + this.nboType + "s"); +isOK = this.getFile31(); +} else { +this.nboType = "AO"; +this.asc.setCollectionName(line1 + ": " + this.nboType + "s"); +isOK = this.readData31(line1); +}if (!isOK) JU.Logger.error("Unimplemented shell type -- no orbitals available: " + this.line); +if (this.isOutputFile) return; +if (isOK) this.readMOs(); +this.continuing = false; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.appendLoadNote("NBO type " + this.nboType); +if (this.isOpenShell) this.asc.setCurrentModelInfo("isOpenShell", Boolean.TRUE); +this.finalizeReaderASCR(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf("SECOND ORDER PERTURBATION THEORY ANALYSIS") >= 0 && !this.orbitalsRead) { +this.nboType = "NBO"; +var data = this.getFileData(".37"); +if (data == null) return true; +var readerSave = this.reader; +this.reader = JU.Rdr.getBR(data); +this.rd(); +this.rd(); +this.readMOs(); +this.reader = readerSave; +this.orbitalsRead = false; +return true; +}if (this.line.indexOf("$NRTSTRA") >= 0) { +this.getStructures("NRTSTRA"); +return true; +}if (this.line.indexOf("$NRTSTRB") >= 0) { +this.getStructures("NRTSTRB"); +return true; +}if (this.line.indexOf("$NRTSTR") >= 0) { +this.getStructures("NRTSTR"); +return true; +}if (this.line.indexOf(" TOPO ") >= 0) { +this.getStructures("TOPO" + this.topoType); +this.topoType = "B"; +return true; +}if (this.line.indexOf("$CHOOSE") >= 0) { +this.getStructures("CHOOSE"); +return true; +}return this.checkNboLine(); +}); +Clazz.defineMethod(c$, "getStructures", +function(type){ +if (this.nboParser == null) this.nboParser = new J.adapter.readers.quantum.NBOParser(); +var structures = this.getStructureList(); +var sb = new JU.SB(); +while (!this.rd().trim().equals("$END")) sb.append(this.line).append("\n"); + +this.nStructures = this.nboParser.getStructures(sb.toString(), type, structures); +this.appendLoadNote(this.nStructures + " NBO " + type + " resonance structures"); +}, "~S"); +Clazz.defineMethod(c$, "getStructureList", +function(){ +var structures = this.asc.getAtomSetAuxiliaryInfo(this.asc.iSet).get("nboStructures"); +if (structures == null) this.asc.setCurrentModelInfo("nboStructures", structures = new JU.Lst()); +return structures; +}); +Clazz.defineMethod(c$, "getFileData", +function(ext){ +var fileName = this.filePath; +var pt = fileName.lastIndexOf("."); +if (pt < 0) pt = fileName.length; +fileName = fileName.substring(0, pt); +this.moData.put("nboRoot", fileName); +if (ext.startsWith(".")) { +fileName += ext; +} else { +pt = fileName.lastIndexOf("/"); +fileName = fileName.substring(0, pt + 1) + ext; +}var data = this.vwr.getFileAsString3(fileName, false, null); +JU.Logger.info(data.length + " bytes read from " + fileName); +var isError = (data.indexOf("java.io.") >= 0); +if (data.length == 0 || isError && this.nboType !== "AO") throw new Exception(" supplemental file " + fileName + " was not found"); +if (!isError) J.adapter.readers.quantum.GenNBOReader.addAuxFile(this.moData, fileName, this.htParams); +return (isError ? null : data); +}, "~S"); +Clazz.defineMethod(c$, "getFile31", +function(){ +try { +var data = this.getFileData(".31"); +if (data == null) return false; +var readerSave = this.reader; +this.reader = JU.Rdr.getBR(data); +return (this.readData31(null) && (this.reader = readerSave) != null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "getFile46", +function(){ +this.nNOs = this.nAOs = this.nOrbitals; +var labelKey = J.adapter.readers.quantum.GenNBOReader.getLabelKey(this.nboType); +var map = null; +var readerSave = this.reader; +try { +this.reader = JU.Rdr.getBR(this.getFileData(".46")); +map = this.readData46(labelKey); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +try { +map = this.readOutputProperties(this.getFileData("output.properties")); +} catch (ee) { +if (Clazz.exceptionOf(ee, Exception)){ +map = new java.util.Hashtable(); +this.setMap(map, "NHO", this.nNOs, false); +this.setMap(map, "NBO", this.nNOs, false); +this.setMap(map, "NAO", this.nNOs, false); +} else { +throw ee; +} +} +} else { +throw e; +} +} +this.setMap(map, labelKey, this.nNOs, true); +this.reader = readerSave; +}); +Clazz.defineMethod(c$, "readOutputProperties", +function(data){ +var map = new java.util.Hashtable(); +var lines = data.$plit("\n"); +for (var i = lines.length; --i >= 0; ) { +var line = lines[i]; +if (line.startsWith("Natural Atomic Orbitals=")) { +this.setLabels(map, "NAO", line); +} else if (line.startsWith("Natural Hybrid Orbitals=")) { +this.setLabels(map, "NHO", line); +} else if (line.startsWith("Natural Bond Orbitals=")) { +this.setLabels(map, "NBO", line); +}} +return map; +}, "~S"); +Clazz.defineMethod(c$, "setLabels", +function(map, key, line){ +var tokens = JU.PT.split(line, ":"); +for (var i = tokens.length; --i >= 0; ) { +var s = JU.PT.split(tokens[i], ",")[1]; +tokens[i] = (s.indexOf("%") >= 0 ? s.substring(0, s.indexOf(" ")) : JU.PT.rep(s, " ", "")); +} +map.put(key, tokens); +}, "java.util.Map,~S,~S"); +Clazz.defineMethod(c$, "readData47", +function(){ +this.allowNoOrbitals = true; +this.discardLinesUntilContains("$COORD"); +this.asc.newAtomSet(); +this.asc.setAtomSetName(this.rd().trim()); +while (this.rd().indexOf("$END") < 0) { +var tokens = this.getTokens(); +this.addAtomXYZSymName(tokens, 2, null, null).elementNumber = this.parseIntStr(tokens[0]); +} +this.discardLinesUntilContains("$BASIS"); +this.appendLoadNote("basis AOs are unnormalized"); +var centers = this.getIntData(); +var labels = this.getIntData(); +this.discardLinesUntilContains("NSHELL ="); +this.shellCount = this.parseIntAt(this.line, 10); +this.gaussianCount = this.parseIntAt(this.rd(), 10); +this.rd(); +var ncomp = this.getIntData(); +var nprim = this.getIntData(); +var nptr = this.getIntData(); +this.shells = new JU.Lst(); +this.gaussians = JU.AU.newFloat2(this.gaussianCount); +for (var i = 0; i < this.gaussianCount; i++) this.gaussians[i] = Clazz.newFloatArray (6, 0); + +this.nOrbitals = 0; +var ptCenter = 0; +var l = this.line; +for (var i = 0; i < this.shellCount; i++) { +var slater = Clazz.newIntArray (4, 0); +var nc = ncomp[i]; +slater[0] = centers[ptCenter]; +this.line = ""; +for (var ii = 0; ii < nc; ii++) this.line += labels[ptCenter++] + " "; + +if (!this.fillSlater(slater, nc, nptr[i] - 1, nprim[i])) return; +} +this.line = l; +this.getAlphasAndExponents(); +this.nboType = "AO"; +this.readMOs(); +this.continuing = false; +}); +Clazz.defineMethod(c$, "getIntData", +function(){ +while (this.line.indexOf("=") < 0) this.rd(); + +var s = this.line.substring(this.line.indexOf("=") + 1); +this.line = ""; +while (this.rd().indexOf("=") < 0 && this.line.indexOf("$") < 0) s += this.line; + +var tokens = JU.PT.getTokens(s); +var f = Clazz.newIntArray (tokens.length, 0); +for (var i = f.length; --i >= 0; ) f[i] = this.parseIntStr(tokens[i]); + +return f; +}); +Clazz.defineMethod(c$, "fillSlater", +function(slater, n, pt, ng){ +this.nOrbitals += n; +switch (n) { +case 1: +slater[1] = 0; +break; +case 3: +if (!this.getDFMap("P", this.line, 1, J.adapter.readers.quantum.GenNBOReader.$P_LIST, 3) && this.resetDF() && !this.getDFMap("P", this.line, 1, J.adapter.readers.quantum.GenNBOReader.PS_LIST, 3)) return false; +slater[1] = 1; +break; +case 4: +if (!this.getDFMap("SP", this.line, 2, J.adapter.readers.quantum.GenNBOReader.SP_LIST, 1) && this.resetDF() && !this.getDFMap("SP", this.line, 2, J.adapter.readers.quantum.GenNBOReader.SPS_LIST, 2)) return false; +slater[1] = 2; +break; +case 5: +if (!this.getDFMap("DS", this.line, 3, J.adapter.readers.quantum.GenNBOReader.$DS_LIST, 3)) return false; +slater[1] = 3; +break; +case 6: +if (!this.getDFMap("DC", this.line, 4, J.adapter.readers.quantum.GenNBOReader.$DC_LIST, 3)) return false; +slater[1] = 4; +break; +case 7: +if (!this.getDFMap("FS", this.line, 5, J.adapter.readers.quantum.GenNBOReader.$FS_LIST, 3)) return false; +slater[1] = 5; +break; +case 10: +if (!this.getDFMap("FC", this.line, 6, J.adapter.readers.quantum.GenNBOReader.$FC_LIST, 3)) return false; +slater[1] = 6; +break; +case 9: +if (!this.getDFMap("GS", this.line, 7, J.adapter.readers.quantum.GenNBOReader.GS_LIST, 3)) return false; +slater[1] = 7; +break; +case 15: +if (!this.getDFMap("GC", this.line, 8, J.adapter.readers.quantum.GenNBOReader.GC_LIST, 3)) return false; +slater[1] = 8; +break; +case 11: +if (!this.getDFMap("HS", this.line, 9, J.adapter.readers.quantum.GenNBOReader.HS_LIST, 3)) return false; +slater[1] = 9; +break; +case 21: +if (!this.getDFMap("HC", this.line, 10, J.adapter.readers.quantum.GenNBOReader.HC_LIST, 3)) return false; +slater[1] = 10; +break; +case 13: +if (!this.getDFMap("IS", this.line, 11, J.adapter.readers.quantum.GenNBOReader.IS_LIST, 3)) return false; +slater[1] = 11; +break; +case 28: +if (!this.getDFMap("IC", this.line, 12, J.adapter.readers.quantum.GenNBOReader.IC_LIST, 3)) return false; +slater[1] = 12; +break; +default: +JU.Logger.error("Unrecognized orbital slater count: " + n); +break; +} +slater[2] = pt + 1; +slater[3] = ng; +this.shells.addLast(slater); +return true; +}, "~A,~N,~N,~N"); +Clazz.defineMethod(c$, "resetDF", +function(){ +this.dfCoefMaps[1][0] = 0; +return true; +}); +Clazz.defineMethod(c$, "getAlphasAndExponents", +function(){ +for (var j = 0; j < 5; j++) { +if (this.line.indexOf("=") < 0) this.rd(); +if (this.line.indexOf("$END") >= 0) break; +this.line = this.line.substring(this.line.indexOf("=") + 1); +var temp = this.fillFloatArray(this.line, 0, Clazz.newFloatArray (this.gaussianCount, 0)); +for (var i = 0; i < this.gaussianCount; i++) { +this.gaussians[i][j] = temp[i]; +if (j > 1) this.gaussians[i][5] += temp[i]; +} +} +for (var i = 0; i < this.gaussianCount; i++) { +if (this.gaussians[i][1] == 0) this.gaussians[i][1] = this.gaussians[i][5]; +} +if (this.debugging) { +JU.Logger.debug(this.shells.size() + " slater shells read"); +JU.Logger.debug(this.gaussians.length + " gaussian primitives read"); +}}); +Clazz.defineMethod(c$, "readData31", +function(line1){ +if (line1 == null) { +line1 = this.rd(); +this.rd(); +}this.rd(); +var tokens = JU.PT.getTokens(this.rd()); +var ac = this.parseIntStr(tokens[0]); +this.shellCount = this.parseIntStr(tokens[1]); +this.gaussianCount = this.parseIntStr(tokens[2]); +if (tokens.length < 4) JU.Logger.error("NOTE! .31 file is old; d orbitals are not normalized"); +this.rd(); +this.asc.newAtomSet(); +this.asc.setAtomSetName(this.nboType + "s: " + line1.trim()); +this.asc.setCurrentModelInfo("nboType", this.nboType); +for (var i = 0; i < ac; i++) { +tokens = JU.PT.getTokens(this.rd()); +var z = this.parseIntStr(tokens[0]); +if (z < 0) continue; +var atom = this.asc.addNewAtom(); +atom.elementNumber = z; +this.setAtomCoordTokens(atom, tokens, 1); +} +this.shells = new JU.Lst(); +this.gaussians = JU.AU.newFloat2(this.gaussianCount); +for (var i = 0; i < this.gaussianCount; i++) this.gaussians[i] = Clazz.newFloatArray (6, 0); + +this.rd(); +this.nOrbitals = 0; +for (var i = 0; i < this.shellCount; i++) { +tokens = JU.PT.getTokens(this.rd()); +var slater = Clazz.newIntArray (4, 0); +slater[0] = this.parseIntStr(tokens[0]); +var n = this.parseIntStr(tokens[1]); +var pt = this.parseIntStr(tokens[2]) - 1; +var ng = this.parseIntStr(tokens[3]); +this.line = this.rd(); +for (var j = Clazz.doubleToInt((n - 1) / 10); --j >= 0; ) this.line += this.rd().substring(1); + +this.line = this.line.trim(); +if (!this.fillSlater(slater, n, pt, ng)) return false; +} +this.rd(); +this.getAlphasAndExponents(); +return true; +}, "~S"); +Clazz.defineMethod(c$, "readData46", +function(labelKey){ +var map = new java.util.Hashtable(); +var tokens = new Array(0); +this.rd(); +var nNOs = this.nNOs; +while (this.line != null && this.line.length > 0) { +tokens = JU.PT.getTokens(this.line); +var type = tokens[0]; +this.isOpenShell = (tokens.length == 3); +var ab = (this.isOpenShell ? tokens[1] : ""); +var count = tokens[tokens.length - 1]; +var key = (ab.equals("BETA") ? "beta_" : "") + type; +if (this.parseIntStr(count) != this.nOrbitals) { +JU.Logger.error("file 46 number of orbitals for " + this.line + " (" + count + ") does not match nOrbitals: " + this.nOrbitals + "\n"); +nNOs = this.parseIntStr(count); +}if (type.equals(labelKey)) this.nNOs = nNOs; +var sb = new JU.SB(); +while (this.rd() != null && this.line.length > 4 && " NA NB AO NH".indexOf(this.line.substring(1, 4)) < 0) sb.append(this.line.substring(1)); + +tokens = new Array(Clazz.doubleToInt(sb.length() / 10)); +for (var i = 0, pt = 0; i < tokens.length; i++, pt += 10) tokens[i] = JU.PT.rep(sb.substring2(pt, pt + 10), " ", ""); + +map.put(key, tokens); +} +return map; +}, "~S"); +Clazz.defineMethod(c$, "setMap", +function(map, labelKey, nNOs, doAll){ +var tokens = map.get((this.betaOnly ? "beta_" : "") + labelKey); +this.moData.put("nboLabelMap", map); +if (tokens == null) { +tokens = new Array(nNOs); +for (var i = 0; i < nNOs; i++) tokens[i] = this.nboType + (i + 1); + +map.put(labelKey, tokens); +if (this.isOpenShell) map.put("beta_" + labelKey, tokens); +}if (!doAll) return; +this.moData.put("nboLabels", tokens); +this.addBetaSet = (this.isOpenShell && !this.betaOnly && !this.is47File); +if (this.addBetaSet) this.nOrbitals *= 2; +for (var i = 0; i < this.nOrbitals; i++) this.setMO( new java.util.Hashtable()); + +J.adapter.readers.quantum.GenNBOReader.setNboLabels(tokens, nNOs, this.orbitals, this.nOrbitals0, this.nboType); +if (this.addBetaSet) { +this.moData.put("firstBeta", Integer.$valueOf(nNOs)); +J.adapter.readers.quantum.GenNBOReader.setNboLabels(map.get("beta_" + labelKey), nNOs, this.orbitals, this.nOrbitals0 + nNOs, this.nboType); +}var structures = this.getStructureList(); +J.adapter.readers.quantum.NBOParser.getStructures46(map.get("NBO"), "alpha", structures, this.asc.ac); +J.adapter.readers.quantum.NBOParser.getStructures46(map.get("beta_NBO"), "beta", structures, this.asc.ac); +}, "java.util.Map,~S,~N,~B"); +c$.getLabelKey = Clazz.defineMethod(c$, "getLabelKey", +function(labelKey){ +if (labelKey.startsWith("P")) labelKey = labelKey.substring(1); +if (labelKey.equals("NLMO")) labelKey = "NBO"; +if (labelKey.equals("MO")) labelKey = "NO"; +return labelKey; +}, "~S"); +Clazz.defineMethod(c$, "readNBOCoefficients", +function(moData, nboType, vwr){ +var ext = JV.JC.getNBOTypeFromName(nboType); +var isAO = nboType.equals("AO"); +var isNBO = nboType.equals("NBO"); +var hasNoBeta = JU.PT.isOneOf(nboType, ";AO;PNAO;NAO;"); +var map = moData.get("nboLabelMap"); +var nAOs = map.get("AO").length; +var labelKey = J.adapter.readers.quantum.GenNBOReader.getLabelKey(nboType); +var nboLabels = map.get(labelKey); +if (nboLabels == null) { +nboLabels = new Array(nAOs); +for (var i = 0; i < nAOs; i++) nboLabels[i] = nboType + (i + 1); + +labelKey = nboType; +map.put(labelKey, nboLabels); +if (!hasNoBeta) map.put("beta_" + labelKey, nboLabels); +}var nMOs = nboLabels.length; +try { +var orbitals = moData.get(nboType + "_coefs"); +if (orbitals == null) { +var data = null; +if (!isAO) { +var fileName = moData.get("nboRoot") + "." + ext; +if ((data = vwr.getFileAsString3(fileName, true, null)) == null || data.indexOf("Exception:") >= 0) return false; +J.adapter.readers.quantum.GenNBOReader.addAuxFile(moData, fileName, null); +data = data.substring(data.indexOf("--\n") + 3).toLowerCase(); +if (ext == 33) data = data.substring(0, data.indexOf("--\n") + 3); +}orbitals = moData.get("mos"); +var dfCoefMaps = orbitals.get(0).get("dfCoefMaps"); +orbitals = new JU.Lst(); +var len = 0; +var next = null; +var nOrbitals = nMOs; +if (!isAO) { +if (data.indexOf("alpha") >= 0) { +nOrbitals *= 2; +data = data.substring(data.indexOf("alpha") + 10); +}len = data.length; +next = Clazz.newIntArray (1, 0); +}for (var i = nOrbitals; --i >= 0; ) { +var mo = new java.util.Hashtable(); +orbitals.addLast(mo); +if (dfCoefMaps != null) mo.put("dfCoefMaps", dfCoefMaps); +} +J.adapter.readers.quantum.GenNBOReader.setNboLabels(nboLabels, nMOs, orbitals, 0, nboType); +for (var i = 0; i < nOrbitals; i++) { +if (!isAO && i == nMOs) { +if (isNBO) J.adapter.readers.quantum.GenNBOReader.getNBOOccupanciesStatic(orbitals, nMOs, 0, data, len, next); +nboLabels = map.get("beta_" + labelKey); +next[0] = (hasNoBeta ? 0 : data.indexOf("beta spin") + 12); +}var mo = orbitals.get(i); +var coefs = Clazz.newFloatArray (nAOs, 0); +if (isAO) { +coefs[i % nAOs] = 1; +} else if (i >= nAOs && hasNoBeta) { +coefs = orbitals.get(i % nAOs).get("coefficients"); +} else { +for (var j = 0; j < nAOs; j++) { +coefs[j] = JU.PT.parseFloatChecked(data, len, next, false); +if (Float.isNaN(coefs[j])) System.out.println("oops = IsoExt "); +} +}mo.put("coefficients", coefs); +} +if (isNBO) J.adapter.readers.quantum.GenNBOReader.getNBOOccupanciesStatic(orbitals, nMOs, nOrbitals - nMOs, data, len, next); +moData.put(nboType + "_coefs", orbitals); +}moData.put("nboType", nboType); +moData.put("nboLabels", nboLabels); +moData.put("mos", orbitals); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return false; +} else { +throw e; +} +} +return true; +}, "java.util.Map,~S,JV.Viewer"); +c$.addAuxFile = Clazz.defineMethod(c$, "addAuxFile", +function(moData, fileName, htParams){ +var auxFiles = moData.get("auxFiles"); +if (auxFiles == null) moData.put("auxFiles", auxFiles = new JU.Lst()); +auxFiles.addLast(fileName); +if (htParams != null) htParams.put("auxFiles", auxFiles); +}, "java.util.Map,~S,java.util.Map"); +c$.getNBOOccupanciesStatic = Clazz.defineMethod(c$, "getNBOOccupanciesStatic", +function(orbitals, nAOs, pt, data, len, next){ +var occupancies = Clazz.newFloatArray (nAOs, 0); +for (var j = 0; j < nAOs; j++) occupancies[j] = JU.PT.parseFloatChecked(data, len, next, false); + +for (var i = 0; i < nAOs; i++) { +var mo = orbitals.get(pt + i); +mo.put("occupancy", Float.$valueOf(occupancies[i])); +} +}, "JU.Lst,~N,~N,~S,~N,~A"); +Clazz.defineMethod(c$, "readMOs", +function(){ +var isAO = this.nboType.equals("AO"); +var isNBO = this.nboType.equals("NBO"); +var discardExtra = JU.PT.isOneOf(this.nboType, ";NBO;NLMO;"); +var hasNoBeta = JU.PT.isOneOf(this.nboType, ";AO;PNAO;NAO;"); +this.nOrbitals0 = this.orbitals.size(); +this.getFile46(); +if (this.betaOnly) { +this.discardLinesUntilContains("BETA"); +this.filterMO(); +}this.nOrbitals = this.orbitals.size(); +if (this.nOrbitals == 0) return; +this.line = null; +var pt = 0; +for (var i = this.nOrbitals0, n = this.nOrbitals0 + this.nNOs; i < n; i++, pt++) { +if (pt == this.nNOs) { +if (isNBO) { +this.readNBO37Occupancies(pt); +}if (discardExtra) this.discardLinesUntilContains2("BETA", "beta"); +}var mo = this.orbitals.get(i); +var coefs = Clazz.newFloatArray (this.nAOs, 0); +if (isAO) { +coefs[pt % this.nAOs] = 1; +} else if (pt >= this.nNOs && hasNoBeta) { +coefs = this.orbitals.get(pt % this.nNOs).get("coefficients"); +} else { +if (this.line == null) { +while (this.rd() != null && Float.isNaN(this.parseFloatStr(this.line))) { +this.filterMO(); +} +} else { +this.line = null; +}this.fillFloatArray(this.line, 0, coefs); +this.line = null; +}mo.put("coefficients", coefs); +} +if (isNBO) this.readNBO37Occupancies(pt); +this.moData.put(this.nboType + "_coefs", this.orbitals); +this.setMOData(false); +this.moData.put("nboType", this.nboType); +JU.Logger.info((this.orbitals.size() - this.nOrbitals0) + " orbitals read"); +}); +Clazz.defineMethod(c$, "readNBO37Occupancies", +function(pt){ +var occupancies = Clazz.newFloatArray (this.nNOs, 0); +this.fillFloatArray(null, 0, occupancies); +for (var i = 0; i < this.nNOs; i++) { +var mo = this.orbitals.get(this.nOrbitals0 + pt - this.nNOs + i); +mo.put("occupancy", Float.$valueOf(occupancies[i])); +} +}, "~N"); +c$.setNboLabels = Clazz.defineMethod(c$, "setNboLabels", +function(tokens, nLabels, orbitals, nOrbitals0, moType){ +var alphaBeta = (orbitals.size() == nLabels * 2); +var addOccupancy = !JU.PT.isOneOf(moType, ";AO;NAO;PNAO;MO;NO;"); +var ab = (!alphaBeta ? "" : nOrbitals0 == 0 ? " alpha" : " beta"); +for (var j = 0; j < nLabels; j++) { +var mo = orbitals.get(j + nOrbitals0); +var type = tokens[j]; +mo.put("type", moType + " " + type + ab); +if (addOccupancy) mo.put("occupancy", Float.$valueOf(alphaBeta ? 1 : type.indexOf("*") >= 0 || type.indexOf("(ry)") >= 0 ? 0 : 2)); +} +}, "~A,~N,JU.Lst,~N,~S"); +c$.$P_LIST = "101 102 103"; +c$.PS_LIST = "151 152 153"; +c$.SP_LIST = "1 101 102 103"; +c$.SPS_LIST = "51 151 152 153"; +c$.$DS_LIST = "255 252 253 254 251"; +c$.$DC_LIST = "201 204 206 202 203 205"; +c$.$FS_LIST = "351 352 353 354 355 356 357"; +c$.$FC_LIST = "301 307 310 304 302 303 306 309 308 305"; +c$.GS_LIST = "451 452 453 454 455 456 457 458 459"; +c$.GC_LIST = "415 414 413 412 411 410 409 408 407 406 405 404 403 402 401"; +c$.HS_LIST = "551 552 553 554 555 556 557 558 559 560 561"; +c$.HC_LIST = "521 520 519 518 517 516 515 514 513 512 511 510 509 508 507 506 505 504 503 502 501"; +c$.IS_LIST = "651 652 653 654 655 656 657 658 659 660 661 662 663"; +c$.IC_LIST = "628 627 626 625 624 623 622 621 620 619 618 617 616 615 614 613 612 611 610 609 608 607 606 605 604 603 602 601"; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/JaguarReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/JaguarReader.js new file mode 100755 index 000000000000..2d05037dff96 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/JaguarReader.js @@ -0,0 +1,247 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MOReader"], "J.adapter.readers.quantum.JaguarReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.moCount = 0; +this.lumoEnergy = 3.4028235E38; +this.haveLine = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "JaguarReader", J.adapter.readers.quantum.MOReader); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.startsWith(" Input geometry:") || this.line.startsWith(" Symmetrized geometry:") || this.line.startsWith(" final geometry:")) { +this.readAtoms(); +return true; +}if (this.line.startsWith(" Atomic charges from electrostatic potential:")) { +this.readCharges(); +return true; +}if (this.line.startsWith(" number of basis functions....")) { +this.moCount = this.parseIntAt(this.line, 32); +return true; +}if (this.line.startsWith(" basis set:")) { +this.moData.put("energyUnits", ""); +this.moData.put("calculationType", this.calculationType = this.line.substring(13).trim()); +if ("sto-3g".equals(this.calculationType)) { +JU.Logger.error("STO-3G not supported for Jaguar -- unusual SP basis definition."); +}return true; +}if (this.line.indexOf("XXXXXShell information") >= 0) { +this.readUnnormalizedBasis(); +return true; +}if (this.line.indexOf("Normalized coefficients") >= 0) { +if (!"sto-3g".equals(this.calculationType)) this.readBasisNormalized(); +return true; +}if (this.line.startsWith(" LUMO energy:")) { +this.lumoEnergy = this.parseFloatStr(this.line.substring(13)); +return true; +}if (this.line.indexOf("final wvfn") >= 0) { +if (this.shells != null) this.readJaguarMolecularOrbitals(); +return true; +}if (this.line.startsWith(" harmonic frequencies in")) { +this.readFrequencies(); +this.continuing = false; +return false; +}return this.checkNboLine(); +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.discardPreviousAtoms(); +this.readLines(2); +while (this.rd() != null && this.line.length >= 60 && this.line.charAt(2) != ' ') { +var tokens = this.getTokens(); +var atomName = tokens[0]; +if (atomName.length < 2) return; +var ch2 = atomName.charAt(1); +var elementSymbol = (ch2 >= 'a' && ch2 <= 'z' ? atomName.substring(0, 2) : atomName.substring(0, 1)); +this.addAtomXYZSymName(tokens, 1, elementSymbol, atomName); +} +}); +Clazz.defineMethod(c$, "readCharges", +function(){ +var iAtom = 0; +while (this.rd() != null && this.line.indexOf("sum") < 0) { +if (this.line.indexOf("Charge") < 0) continue; +var tokens = this.getTokens(); +for (var i = 1; i < tokens.length; i++) this.asc.atoms[iAtom++].partialCharge = this.parseFloatStr(tokens[i]); + +} +}); +Clazz.defineMethod(c$, "readUnnormalizedBasis", +function(){ +var lastAtom = ""; +var iAtom = 0; +var sdata = Clazz.newIntArray (this.moCount, 4, 0); +var sgdata = JU.AU.createArrayOfArrayList(this.moCount); +var tokens; +this.gaussianCount = 0; +this.discardLinesUntilContains("--------"); +while (this.rd() != null && (tokens = this.getTokens()).length == 9) { +var jCont = this.parseIntStr(tokens[2]); +if (jCont > 0) { +if (!tokens[0].equals(lastAtom)) iAtom++; +lastAtom = tokens[0]; +var iFunc = this.parseIntStr(tokens[5]); +var iType = this.parseIntStr(tokens[4]); +if (iType <= 2) iType--; +if (sgdata[iFunc] == null) { +sdata[iFunc][0] = iAtom; +sdata[iFunc][1] = iType; +sdata[iFunc][2] = 0; +sdata[iFunc][3] = 0; +sgdata[iFunc] = new JU.Lst(); +}var factor = 1; +sgdata[iFunc].addLast( Clazz.newFloatArray(-1, [this.parseFloatStr(tokens[6]), this.parseFloatStr(tokens[8]) * factor])); +this.gaussianCount += jCont; +for (var i = jCont - 1; --i >= 0; ) { +tokens = JU.PT.getTokens(this.rd()); +sgdata[iFunc].addLast( Clazz.newFloatArray(-1, [this.parseFloatStr(tokens[6]), this.parseFloatStr(tokens[8]) * factor])); +} +}} +var garray = JU.AU.newFloat2(this.gaussianCount); +var sarray = new JU.Lst(); +this.gaussianCount = 0; +for (var i = 0; i < this.moCount; i++) if (sgdata[i] != null) { +var n = sgdata[i].size(); +sdata[i][2] = this.gaussianCount; +sdata[i][3] = n; +for (var j = 0; j < n; j++) { +garray[this.gaussianCount++] = sgdata[i].get(j); +} +sarray.addLast(sdata[i]); +} +this.moData.put("shells", sarray); +this.moData.put("gaussians", garray); +if (this.debugging) { +JU.Logger.debug(sarray.size() + " slater shells read"); +JU.Logger.debug(this.gaussianCount + " gaussian primitives read"); +}}); +Clazz.defineMethod(c$, "readBasisNormalized", +function(){ +var lastAtom = ""; +var iAtom = 0; +var id; +var iFunc = 0; +var iFuncLast = -1; +var sarray = new JU.Lst(); +var gdata = new JU.Lst(); +this.gaussianCount = 0; +var sdata = null; +this.discardLinesUntilContains("--------"); +while (this.rd() != null && this.line.length > 3) { +var tokens = this.getTokens(); +if (tokens.length == 4) { +id = tokens[0]; +continue; +}if (!tokens[0].equals(lastAtom)) iAtom++; +lastAtom = tokens[0]; +id = tokens[2]; +var iType = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(id); +iFunc = this.parseIntStr(tokens[3]) - 1; +var gPtr = gdata.size(); +if (iFunc == iFuncLast) { +sdata[3]++; +} else if (iFunc < iFuncLast) { +for (var i = gdata.size(); --i >= 0; ) { +if (gdata.get(i)[2] == iFunc) { +gPtr = i + 1; +break; +}} +for (var i = sarray.size(); --i >= 0; ) { +if (sarray.get(i)[4] == iFunc) { +sarray.get(i)[3]++; +while (++i < sarray.size()) { +sarray.get(i)[2]++; +} +break; +}} +} else { +sdata = Clazz.newIntArray(-1, [iAtom, iType, this.gaussianCount + 1, 1, iFunc]); +sarray.addLast(sdata); +iFuncLast = iFunc; +}this.gaussianCount++; +var z = this.parseFloatStr(tokens[4]); +var rCoef = this.parseFloatStr(tokens[5]); +if (id.equals("XX")) rCoef *= 1.7320508; +gdata.add(gPtr, Clazz.newFloatArray(-1, [z, rCoef, iFunc])); +} +var garray = JU.AU.newFloat2(this.gaussianCount); +for (var i = gdata.size(); --i >= 0; ) garray[i] = gdata.get(i); + +this.moData.put("shells", this.shells = sarray); +this.moData.put("gaussians", garray); +if (this.debugging) { +JU.Logger.debug(sarray.size() + " slater shells read"); +JU.Logger.debug(this.gaussianCount + " gaussian primitives read"); +}this.moData.put("isNormalized", Boolean.TRUE); +}); +Clazz.defineMethod(c$, "readJaguarMolecularOrbitals", +function(){ +var dataBlock = new Array(this.moCount); +this.rd(); +this.rd(); +this.rd(); +var nMo = 0; +while (this.line != null) { +this.rd(); +this.rd(); +this.rd(); +if (this.line == null || this.line.indexOf("eigenvalues-") < 0) break; +var eigenValues = this.getTokens(); +var n = eigenValues.length - 1; +this.fillDataBlock(dataBlock, 0); +var occ = 2; +for (var iOrb = 0; iOrb < n; iOrb++) { +var coefs = Clazz.newFloatArray (this.moCount, 0); +var mo = new java.util.Hashtable(); +var energy = this.parseFloatStr(eigenValues[iOrb + 1]); +mo.put("energy", Float.$valueOf(energy)); +if (Math.abs(energy - this.lumoEnergy) < 0.0001) { +this.moData.put("HOMO", Integer.$valueOf(nMo)); +this.lumoEnergy = 3.4028235E38; +occ = 0; +}mo.put("occupancy", Float.$valueOf(occ)); +nMo++; +for (var i = 0, pt = 0; i < this.moCount; i++) { +coefs[pt++] = this.parseFloatStr(dataBlock[i][iOrb + 3]); +} +mo.put("coefficients", coefs); +this.setMO(mo); +} +} +this.moData.put("mos", this.orbitals); +this.finalizeMOData(this.moData); +}); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +var ac = this.asc.getLastAtomSetAtomCount(); +this.discardLinesUntilStartsWith(" frequencies "); +while (this.line != null && this.line.startsWith(" frequencies ")) { +var iAtom0 = this.asc.ac; +var frequencies = this.getTokens(); +var frequencyCount = frequencies.length - 1; +var ignore = Clazz.newBooleanArray(frequencyCount, false); +var symmetries = null; +var intensities = null; +while (this.line != null && this.line.charAt(2) != ' ') { +if (this.line.indexOf("symmetries") >= 0) symmetries = this.getTokens(); + else if (this.line.indexOf("intensities") >= 0) intensities = this.getTokens(); +this.rd(); +} +for (var i = 0; i < frequencyCount; i++) { +ignore[i] = !this.doGetVibration(++this.vibrationNumber); +if (ignore[i]) continue; +this.asc.cloneFirstAtomSet(0); +this.asc.setAtomSetFrequency(this.vibrationNumber, null, symmetries == null ? null : symmetries[i + 1], frequencies[i + 1], null); +if (intensities != null) this.asc.setAtomSetModelProperty("IRIntensity", intensities[i + 1] + " km/mol"); +} +this.haveLine = true; +this.fillFrequencyData(iAtom0, ac, ac, ignore, false, 0, 0, null, 0, null); +this.rd(); +this.rd(); +} +}); +Clazz.defineMethod(c$, "rd", +function(){ +if (!this.haveLine) return Clazz.superCall(this, J.adapter.readers.quantum.JaguarReader, "rd", []); +this.haveLine = false; +return this.line; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MOReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MOReader.js new file mode 100755 index 000000000000..b706d7de0ac5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MOReader.js @@ -0,0 +1,311 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.BasisFunctionReader"], "J.adapter.readers.quantum.MOReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.quantum.QS", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.shellCount = 0; +this.gaussianCount = 0; +this.gaussians = null; +this.energyUnits = ""; +this.moTypes = null; +this.getNBOs = false; +this.getNBOCharges = false; +this.haveNboCharges = false; +this.haveNboOrbitals = false; +this.orbitalsRead = false; +this.lastMoData = null; +this.allowNoOrbitals = false; +this.forceMOPAC = false; +this.HEADER_GAMESS_UK_MO = 3; +this.HEADER_GAMESS_OCCUPANCIES = 2; +this.HEADER_GAMESS_ORIGINAL = 1; +this.HEADER_NONE = 0; +this.haveCoeffMap = false; +this.iMo0 = 1; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "MOReader", J.adapter.readers.quantum.BasisFunctionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.line = "\nNBOs"; +this.getNBOs = (this.filter != null && this.filterMO()); +this.line = "\nNBOCHARGES"; +this.getNBOCharges = (this.filter != null && this.filterMO()); +this.checkAndRemoveFilterKey("NBOCHARGES"); +this.forceMOPAC = this.checkAndRemoveFilterKey("MOPAC"); +}); +Clazz.defineMethod(c$, "checkNboLine", +function(){ +if (this.getNBOs) { +if (this.line.indexOf("(Occupancy) Bond orbital/ Coefficients/ Hybrids") >= 0) { +this.getNboTypes(); +return false; +}if (this.line.indexOf("NBOs in the AO basis:") >= 0) { +this.readMolecularOrbitals(0); +return false; +}if (this.line.indexOf(" SECOND ORDER PERTURBATION THEORY ANALYSIS") >= 0) { +this.readSecondOrderData(); +return false; +}}if (this.getNBOCharges && this.line.indexOf("Summary of Natural Population Analysis:") >= 0) { +this.getNboCharges(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "getNboCharges", +function(){ +if (this.haveNboCharges) return; +this.discardLinesUntilContains("----"); +this.discardLinesUntilContains("----"); +this.haveNboCharges = true; +var ac = this.asc.ac; +var i0 = this.asc.getLastAtomSetAtomIndex(); +var atoms = this.asc.atoms; +for (var i = i0; i < ac; ++i) { +while (atoms[i].elementNumber == 0) ++i; + +var tokens = JU.PT.getTokens(this.rd()); +var charge; +if (tokens == null || tokens.length < 3 || Float.isNaN(charge = this.parseFloatStr(tokens[2]))) { +JU.Logger.info("Error reading NBO charges: " + this.line); +return; +}atoms[i].partialCharge = charge; +if (this.debugging) JU.Logger.debug("Atom " + i + " using NBOcharge: " + charge); +} +JU.Logger.info("Using NBO charges for Model " + this.asc.atomSetCount); +}); +Clazz.defineMethod(c$, "getNboTypes", +function(){ +this.moTypes = new JU.Lst(); +this.iMo0 = (this.orbitals == null ? 0 : this.orbitals.size()) + 1; +this.rd(); +this.rd(); +var n = 0; +var pt = 0; +while (this.line != null && (pt = this.line.indexOf(".")) >= 0 && pt < 10) { +if (this.parseIntRange(this.line, 0, pt) != n + 1) break; +this.moTypes.add(n++, this.line.substring(pt + 1, Math.min(40, this.line.length)).trim()); +while (this.rd() != null && this.line.startsWith(" ")) { +} +} +JU.Logger.info(n + " natural bond AO basis functions found"); +}); +Clazz.defineMethod(c$, "readMolecularOrbitals", +function(headerType){ +if (this.ignoreMOs) { +this.rd(); +return; +}this.addSlaterBasis(); +this.dfCoefMaps = null; +if (this.haveNboOrbitals) { +this.orbitals = new JU.Lst(); +this.alphaBeta = ""; +}this.haveNboOrbitals = this.getNBOs; +this.orbitalsRead = true; +var mos = null; +var data = null; +var dCoeffLabels = ""; +var fCoeffLabels = ""; +var pCoeffLabels = ""; +var ptOffset = -1; +var fieldSize = 0; +var nThisLine = 0; +this.rd(); +var moCount = 0; +var nBlank = 0; +var haveMOs = false; +if (this.line.indexOf("---") >= 0) this.rd(); +while (this.rd() != null) { +var tokens = this.getTokens(); +if (this.debugging) { +JU.Logger.debug(tokens.length + " --- " + this.line); +}if (this.line.indexOf("end") >= 0) break; +if (this.line.indexOf(" ALPHA SET ") >= 0) { +this.alphaBeta = "alpha"; +if (this.rd() == null) break; +} else if (this.line.indexOf(" BETA SET ") >= 0) { +if (haveMOs) break; +this.alphaBeta = "beta"; +if (this.rd() == null) break; +}var str = this.line.toUpperCase(); +if (str.length == 0 || str.indexOf("--") >= 0 || str.indexOf(".....") >= 0 || str.indexOf("NBO BASIS") >= 0 || str.indexOf("CI EIGENVECTORS WILL BE LABELED") >= 0 || str.indexOf("LZ VALUE") >= 0 || str.indexOf(" THIS LOCALIZATION HAD") >= 0) { +if (!this.haveCoeffMap) { +this.haveCoeffMap = true; +var isOK = true; +if (pCoeffLabels.length > 0) isOK = this.getDFMap("P", pCoeffLabels, 1, "(PX) (PY) (PZ)", 4); +if (dCoeffLabels.length > 0) { +if (dCoeffLabels.indexOf("X") >= 0) isOK = this.getDFMap("DC", dCoeffLabels, 4, "DXX DYY DZZ DXY DXZ DYZ", 2); + else if (dCoeffLabels.indexOf("(D6)") >= 0) isOK = this.getDFMap("DC", dCoeffLabels, 4, "(D1) (D4) (D6) (D2) (D3) (D5)", 4); + else isOK = this.getDFMap("DS", dCoeffLabels, 3, "(D5) (D2) (D3) (D4) (D1)", 4); +}if (fCoeffLabels.length > 0) { +if (fCoeffLabels.indexOf("X") >= 0) isOK = this.getDFMap("FC", fCoeffLabels, 6, "XXX YYY ZZZ XYY XXY XXZ XZZ YZZ YYZ XYZ", 2); + else if (fCoeffLabels.indexOf("(F10)") >= 0) isOK = this.getDFMap("FC", fCoeffLabels, 6, J.adapter.readers.quantum.MOReader.FC_LIST, 5); + else isOK = this.getDFMap("FS", fCoeffLabels, 5, "(F1) (F2) (F3) (F4) (F5) (F6) (F7)", 4); +}if (!isOK) { +}}if (str.length == 0) nBlank++; + else nBlank = 0; +if (nBlank == 2) break; +if (str.indexOf("LZ VALUE") >= 0) this.discardLinesUntilBlank(); +for (var iMo = 0; iMo < nThisLine; iMo++) { +var coefs = Clazz.newFloatArray (data[iMo].size(), 0); +var iCoeff = 0; +while (iCoeff < coefs.length) { +coefs[iCoeff] = this.parseFloatStr(data[iMo].get(iCoeff)); +iCoeff++; +} +haveMOs = true; +this.addCoef(mos[iMo], coefs, null, NaN, NaN, moCount++); +} +nThisLine = 0; +if (this.line.length == 0) continue; +break; +}nBlank = 0; +if (nThisLine == 0) { +nThisLine = tokens.length; +if (tokens[0].equals("AO")) { +nThisLine--; +ptOffset = 16; +fieldSize = 8; +}if (mos == null || nThisLine > mos.length) { +mos = JU.AU.createArrayOfHashtable(nThisLine); +data = JU.AU.createArrayOfArrayList(nThisLine); +}for (var i = 0; i < nThisLine; i++) { +mos[i] = new java.util.Hashtable(); +data[i] = new JU.Lst(); +} +this.getMOHeader(headerType, tokens, mos, nThisLine); +continue; +}var nSkip = tokens.length - nThisLine; +var type = tokens[nSkip - 1]; +var ch; +if (type.charAt(0) == '(') { +ch = type.charAt(1); +if (!this.haveCoeffMap) { +switch ((ch).charCodeAt(0)) { +case 112: +pCoeffLabels += " " + type.toUpperCase(); +break; +case 100: +dCoeffLabels += " " + J.adapter.readers.quantum.BasisFunctionReader.canonicalizeQuantumSubshellTag(type.toUpperCase()); +break; +case 102: +fCoeffLabels += " " + J.adapter.readers.quantum.BasisFunctionReader.canonicalizeQuantumSubshellTag(type.toUpperCase()); +break; +case 115: +} +}} else { +var nChar = type.length; +ch = (nChar < 4 ? 'S' : nChar == 4 ? 'G' : nChar == 5 ? 'H' : '?'); +if (!this.haveCoeffMap && nChar == 3) fCoeffLabels += " " + J.adapter.readers.quantum.BasisFunctionReader.canonicalizeQuantumSubshellTag(type.toUpperCase()); + else if (!this.haveCoeffMap && nChar == 2) dCoeffLabels += " " + J.adapter.readers.quantum.BasisFunctionReader.canonicalizeQuantumSubshellTag(type.toUpperCase()); +}if (J.quantum.QS.isQuantumBasisSupported(ch)) { +if (ptOffset < 0) { +for (var i = 0; i < nThisLine; i++) data[i].addLast(tokens[i + nSkip]); + +} else { +var pt = ptOffset; +for (var i = 0; i < nThisLine; i++, pt += fieldSize) data[i].addLast(this.line.substring(pt, pt + fieldSize).trim()); + +}}this.line = ""; +} +this.energyUnits = "a.u."; +this.setMOData(!this.alphaBeta.equals("alpha")); +this.haveCoeffMap = false; +this.dfCoefMaps = null; +}, "~N"); +Clazz.defineMethod(c$, "addSlaterBasis", +function(){ +}); +Clazz.defineMethod(c$, "addCoef", +function(mo, coefs, type, energy, occ, moCount){ +mo.put("coefficients", coefs); +if (this.moTypes != null) { +type = this.moTypes.get(moCount % this.moTypes.size()); +occ = (type.indexOf("*") >= 0 ? 0 : 2); +} else if (this.alphaBeta.length > 0) { +type = this.alphaBeta; +}if (type != null) mo.put("type", type); +if (!Float.isNaN(energy)) mo.put("energy", Float.$valueOf(energy)); +if (!Float.isNaN(occ)) mo.put("occupancy", Float.$valueOf(occ)); +this.setMO(mo); +}, "java.util.Map,~A,~S,~N,~N,~N"); +Clazz.defineMethod(c$, "getMOHeader", +function(headerType, tokens, mos, nThisLine){ +this.rd(); +switch (headerType) { +default: +case 0: +return; +case 3: +for (var i = 0; i < nThisLine; i++) mos[i].put("energy", Float.$valueOf(tokens[i])); + +this.readLines(5); +return; +case 1: +tokens = this.getTokens(); +if (tokens.length == 0) tokens = JU.PT.getTokens(this.rd()); +for (var i = 0; i < nThisLine; i++) { +mos[i].put("energy", Float.$valueOf(tokens[i])); +} +this.rd(); +break; +case 2: +var haveSymmetry = (this.line.length > 0 || this.rd() != null); +tokens = this.getTokens(); +for (var i = 0; i < nThisLine; i++) mos[i].put("occupancy", Float.$valueOf(tokens[i].charAt(0) == '-' ? 2.0 : this.parseFloatStr(tokens[i]))); + +this.rd(); +if (!haveSymmetry) return; +} +if (this.line.length > 0) { +tokens = this.getTokens(); +for (var i = 0; i < nThisLine; i++) mos[i].put("symmetry", tokens[i]); + +}}, "~N,~A,~A,~N"); +Clazz.defineMethod(c$, "addMOData", +function(nColumns, data, mos){ +for (var i = 0; i < nColumns; i++) { +var coefs = Clazz.newFloatArray (data[i].size(), 0); +for (var j = coefs.length; --j >= 0; ) coefs[j] = this.parseFloatStr(data[i].get(j)); + +mos[i].put("coefficients", coefs); +this.setMO(mos[i]); +} +}, "~N,~A,~A"); +Clazz.defineMethod(c$, "setMOData", +function(clearOrbitals){ +if (!this.allowNoOrbitals && this.orbitals.size() == 0) return; +if (this.shells != null && this.gaussians != null) { +this.moData.put("calculationType", this.calculationType); +this.moData.put("energyUnits", this.energyUnits); +this.moData.put("shells", this.shells); +this.moData.put("gaussians", this.gaussians); +this.moData.put("mos", this.orbitals); +this.finalizeMOData(this.lastMoData = this.moData); +}if (clearOrbitals) { +this.clearOrbitals(); +}}, "~B"); +Clazz.defineMethod(c$, "readSecondOrderData", +function(){ +this.readLines(5); +if (this.lastMoData == null || this.moTypes == null) return; +var ht = new java.util.Hashtable(); +for (var i = this.moTypes.size(); --i >= 0; ) ht.put(JU.PT.rep(this.moTypes.get(i).substring(10), " ", ""), Integer.$valueOf(i + this.iMo0)); + +var strSecondOrderData = new JU.Lst(); +while (this.rd() != null && this.line.indexOf("NBO") < 0) { +if (this.line.length < 5 || this.line.charAt(4) != '.') continue; +strSecondOrderData.addLast( Clazz.newArray(-1, [JU.PT.rep(this.line.substring(5, 27).trim(), " ", ""), JU.PT.rep(this.line.substring(32, 54).trim(), " ", ""), this.line.substring(55, 62).trim(), this.line.substring(71).trim()])); +} +var secondOrderData = Clazz.newFloatArray (strSecondOrderData.size(), 4, 0); +this.lastMoData.put("secondOrderData", secondOrderData); +this.lastMoData = null; +var IMO; +for (var i = strSecondOrderData.size(); --i >= 0; ) { +var a = strSecondOrderData.get(i); +IMO = ht.get(a[0]); +if (IMO != null) secondOrderData[i][0] = IMO.intValue(); +IMO = ht.get(a[1]); +if (IMO != null) secondOrderData[i][1] = IMO.intValue(); +secondOrderData[i][2] = this.parseFloatStr(a[2]); +secondOrderData[i][3] = this.parseFloatStr(a[3]); +} +}); +c$.FC_LIST = "(F1) (F2) (F10) (F4) (F2) (F3) (F6) (F9) (F8) (F5)"; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MoldenReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MoldenReader.js new file mode 100755 index 000000000000..b95c30498d7d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MoldenReader.js @@ -0,0 +1,405 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MopacSlaterReader", "JU.BS"], "J.adapter.readers.quantum.MoldenReader", ["java.util.Arrays", "$.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.loadGeometries = false; +this.loadVibrations = false; +this.vibOnly = false; +this.optOnly = false; +this.doSort = true; +this.orbitalType = ""; +this.modelAtomCount = 0; +this.lineBuffer = null; +this.bsAtomOK = null; +this.bsBadIndex = null; +this.nSPDF = null; +this.haveEnergy = true; +this.ptLineBuf = 0; +this.bufLen = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "MoldenReader", J.adapter.readers.quantum.MopacSlaterReader); +Clazz.prepareFields (c$, function(){ +this.bsAtomOK = new JU.BS(); +this.bsBadIndex = new JU.BS(); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.vibOnly = this.checkFilterKey("VIBONLY"); +this.optOnly = this.checkFilterKey("OPTONLY"); +this.doSort = !this.checkFilterKey("NOSORT"); +this.loadGeometries = !this.vibOnly && this.desiredVibrationNumber < 0 && !this.checkFilterKey("NOOPT"); +this.loadVibrations = !this.optOnly && this.desiredModelNumber < 0 && !this.checkFilterKey("NOVIB"); +if (this.checkFilterKey("ALPHA")) this.filter = "alpha"; + else if (this.checkFilterKey("BETA")) this.filter = "beta"; + else this.filter = this.getFilter("SYM="); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (!this.line.contains("[")) return true; +this.line = this.line.toUpperCase().trim(); +if (!this.line.startsWith("[")) return true; +JU.Logger.info(this.line); +if (this.line.indexOf("[ATOMS]") == 0) { +this.readAtoms(); +this.modelAtomCount = this.asc.getAtomSetAtomCount(0); +if (this.asc.atomSetCount == 1 && this.moData != null) this.finalizeMOData(this.moData); +return false; +}if (this.line.indexOf("[GTO]") == 0) return this.readGaussianBasis(); +if (this.line.indexOf("[STO]") == 0) return this.readSlaterBasis(); +if (this.line.indexOf("[MO]") == 0) return (!this.doReadMolecularOrbitals || this.readMolecularOrbitals()); +if (this.line.indexOf("[FREQ]") == 0) return (!this.loadVibrations || this.readFreqsAndModes()); +if (this.line.indexOf("[GEOCONV]") == 0) return (!this.loadGeometries || this.readGeometryOptimization()); +if (this.checkOrbitalType(this.line)) return true; +if (this.checkSymmetry()) return false; +return true; +}); +Clazz.defineMethod(c$, "checkSymmetry", +function(){ +if (this.line.startsWith("[SPACEGROUP]")) { +this.setSpaceGroupName(this.rd()); +this.rd(); +return true; +}if (this.line.startsWith("[OPERATORS]")) { +while (this.rd() != null && this.line.indexOf("[") < 0) if (this.line.length > 0) { +JU.Logger.info("adding operator " + this.line); +this.setSymmetryOperator(this.line); +} +return true; +}if (this.line.startsWith("[CELL]")) { +this.rd(); +JU.Logger.info("setting cell dimensions " + this.line); +this.next[0] = 0; +for (var i = 0; i < 6; i++) this.setUnitCellItem(i, this.parseFloat()); + +this.rd(); +return true; +}if (this.line.startsWith("[CELLAXES]")) { +var f = Clazz.newFloatArray (9, 0); +this.fillFloatArray(null, 0, f); +this.addExplicitLatticeVector(0, f, 0); +this.addExplicitLatticeVector(1, f, 3); +this.addExplicitLatticeVector(2, f, 6); +return true; +}return false; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (!this.bsBadIndex.isEmpty()) try { +var ilast = 0; +var atoms = this.asc.atoms; +var nAtoms = this.asc.ac; +this.bsAtomOK.set(nAtoms); +var n = this.shells.size(); +for (var i = 0; i < n; i++) { +var iatom = this.shells.get(i)[0]; +if (iatom != 2147483647) { +ilast = atoms[iatom - 1].elementNumber; +continue; +}for (var j = this.bsAtomOK.nextClearBit(0); j >= 0; j = this.bsAtomOK.nextClearBit(j + 1)) { +if (atoms[j].elementNumber == ilast) { +this.shells.get(i)[0] = j + 1; +JU.Logger.info("MoldenReader assigning shells starting with " + i + " for ** to atom " + (j + 1) + " z " + ilast); +for (; ++i < n && !this.bsBadIndex.get(i) && this.shells.get(i)[0] == 2147483647; ) this.shells.get(i)[0] = j + 1; + +i--; +this.bsAtomOK.set(j); +break; +}} +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Molden reader could not assign shells -- abandoning MOs"); +this.asc.setCurrentModelInfo("moData", null); +} else { +throw e; +} +} +this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +var coordUnit = JU.PT.getTokens(this.line.$replace(']', ' '))[1]; +var isFractional = (coordUnit.indexOf("FRACTIONAL") >= 0); +var isAU = (!isFractional && coordUnit.indexOf("ANGS") < 0); +if (isAU && coordUnit.indexOf("AU") < 0) JU.Logger.error("Molden atom line does not indicate units ANGS, AU, or FRACTIONAL -- AU assumed: " + this.line); +this.setFractionalCoordinates(isFractional); +var f = (isAU ? 0.5291772 : 1); +while (this.rd() != null && this.line.indexOf('[') < 0) { +var tokens = this.getTokens(); +if (tokens.length < 6) continue; +var atom = this.setAtomCoordScaled(null, tokens, 3, f); +atom.atomName = tokens[0]; +atom.elementNumber = this.parseIntStr(tokens[2]); +} +}); +Clazz.defineMethod(c$, "readSlaterBasis", +function(){ +var stoFactor = (this.line.indexOf("ANGS") >= 0 ? 0.5291772 : 1); +this.scaleSlaters = (this.line.indexOf("MOPAC") >= 0); +this.nCoef = 0; +while (this.rd() != null && this.line.indexOf("[") < 0) { +var tokens = this.getTokens(); +if (tokens.length < 7) continue; +var zeta = this.parseFloatStr(tokens[5]) * stoFactor; +this.addSlater(this.parseIntStr(tokens[0]), this.parseIntStr(tokens[1]), this.parseIntStr(tokens[2]), this.parseIntStr(tokens[3]), this.parseIntStr(tokens[4]), zeta, this.parseFloatStr(tokens[6])); +this.nCoef++; +} +this.setSlaters(false); +return false; +}); +Clazz.defineMethod(c$, "readGaussianBasis", +function(){ +this.shells = new JU.Lst(); +var gdata = new JU.Lst(); +var atomIndex = 0; +var gaussianPtr = 0; +this.nCoef = 0; +this.nSPDF = Clazz.newIntArray (12, 0); +this.discardLinesUntilNonBlank(); +while (this.line != null && !((this.line = this.line.trim()).length == 0 || this.line.charAt(0) == '[')) { +var tokens = this.getTokens(); +atomIndex = this.parseIntStr(tokens[0]) - 1; +if (atomIndex == 2147483647) { +this.bsBadIndex.set(this.shells.size()); +} else { +this.bsAtomOK.set(atomIndex); +}while (this.rd() != null && (this.line = this.line.trim()).length > 0 && this.line.charAt(0) != '[') { +tokens = this.getTokens(); +var shellLabel = tokens[0].toUpperCase(); +var type = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(shellLabel); +var nPrimitives = this.parseIntStr(tokens[1]); +var slater = Clazz.newIntArray (4, 0); +this.nSPDF[type]++; +slater[0] = atomIndex + 1; +slater[1] = type; +slater[2] = gaussianPtr + 1; +slater[3] = nPrimitives; +for (var ip = nPrimitives; --ip >= 0; ) { +var primTokens = JU.PT.getTokens(this.rd()); +var nTokens = primTokens.length; +var orbData = Clazz.newFloatArray (nTokens, 0); +for (var d = 0; d < nTokens; d++) orbData[d] = this.parseFloatStr(primTokens[d]); + +gdata.addLast(orbData); +gaussianPtr++; +} +this.shells.addLast(slater); +} +if (this.line.length > 0 && this.line.charAt(0) == '[') break; +this.rd(); +} +var garray = JU.AU.newFloat2(gaussianPtr); +for (var i = 0; i < gaussianPtr; i++) { +garray[i] = gdata.get(i); +} +this.moData.put("shells", this.shells); +this.moData.put("gaussians", garray); +JU.Logger.info(this.shells.size() + " slater shells read"); +JU.Logger.info(garray.length + " gaussian primitives read"); +this.asc.setCurrentModelInfo("moData", this.moData); +return false; +}); +Clazz.defineMethod(c$, "readMolecularOrbitals", +function(){ +while (this.checkOrbitalType(this.rd())) { +} +if (this.orbitalType === "") { +this.createLineBuffer(); +}this.fixOrbitalType(); +JU.Logger.info(this.nCoef + " MO coefficients expected for orbital type " + this.orbitalType); +var tokens = this.getMoTokens(this.line); +while (tokens != null && tokens.length > 0 && tokens[0].indexOf('[') < 0) { +var mo = new java.util.Hashtable(); +var data = new JU.Lst(); +var energy = NaN; +var occupancy = NaN; +var symmetry = null; +var key; +while (this.parseIntStr(key = tokens[0]) == -2147483648) { +if (key.startsWith("Ene")) { +energy = this.parseFloatStr(tokens[1]); +} else if (key.startsWith("Occup")) { +occupancy = this.parseFloatStr(tokens[1]); +} else if (key.startsWith("Sym")) { +symmetry = tokens[1]; +} else if (key.startsWith("Spin")) { +this.alphaBeta = tokens[1].toLowerCase(); +}tokens = this.getMoTokens(null); +} +var pt = 0; +var offset = 0; +while (tokens != null && tokens.length > 0 && this.parseIntStr(tokens[0]) != -2147483648) { +if (tokens.length != 2) throw new Exception("invalid MO coefficient specification"); +var i = this.parseIntStr(tokens[0]); +if (pt == 0 && i == this.nCoef + 1 && "beta".equals(this.alphaBeta)) { +offset = -this.nCoef; +}i += offset; +while (i > ++pt) data.addLast("0"); + +data.addLast(tokens[1]); +tokens = this.getMoTokens(null); +} +if (this.orbitalType.equals("") && data.size() < this.nCoef) { +JU.Logger.info("too few orbital coefficients for 6D"); +this.checkOrbitalType("[5D]"); +}while (++pt <= this.nCoef) { +data.addLast("0"); +} +var coefs = Clazz.newFloatArray (this.nCoef, 0); +for (var i = data.size(); --i >= 0; ) coefs[i] = this.parseFloatStr(data.get(i)); + +var l = this.line; +this.line = "" + symmetry; +if (this.filterMO()) { +mo.put("coefficients", coefs); +if (Float.isNaN(energy)) { +this.haveEnergy = false; +} else { +mo.put("energy", Float.$valueOf(energy)); +}if (!Float.isNaN(occupancy)) mo.put("occupancy", Float.$valueOf(occupancy)); +if (symmetry != null) mo.put("symmetry", symmetry); +if (this.alphaBeta.length > 0) mo.put("type", this.alphaBeta); +this.setMO(mo); +if (this.debugging) { +JU.Logger.debug(coefs.length + " coefficients in MO " + this.orbitals.size()); +}}this.line = l; +} +if (this.debugging) JU.Logger.debug("read " + this.orbitals.size() + " MOs"); +this.setMOs(""); +if (this.haveEnergy && this.doSort) this.sortMOs(); +return false; +}); +Clazz.defineMethod(c$, "rd", +function(){ +if (++this.ptLineBuf < this.bufLen) { +return this.line = this.lineBuffer.get(this.ptLineBuf); +}if (this.bufLen > 0) { +this.lineBuffer = null; +this.bufLen = -1; +return null; +}return Clazz.superCall(this, J.adapter.readers.quantum.MoldenReader, "rd", []); +}); +Clazz.defineMethod(c$, "createLineBuffer", +function(){ +if (this.lineBuffer != null) return; +this.lineBuffer = new JU.Lst(); +var l0 = this.line; +while (Clazz.superCall(this, J.adapter.readers.quantum.MoldenReader, "rd", []) != null) { +if (!this.line.contains("[") || !this.checkOrbitalType(this.line)) { +this.lineBuffer.addLast(this.line); +}} +this.bufLen = this.lineBuffer.size(); +this.ptLineBuf = -1; +this.line = l0; +}); +Clazz.defineMethod(c$, "sortMOs", +function(){ +var list = this.orbitals.toArray( new Array(this.orbitals.size())); +java.util.Arrays.sort(list, Clazz.innerTypeInstance(J.adapter.readers.quantum.BasisFunctionReader.MOEnergySorter, this, null)); +this.orbitals.clear(); +for (var i = 0; i < list.length; i++) this.orbitals.addLast(list[i]); + +}); +Clazz.defineMethod(c$, "getMoTokens", +function(line){ +return (line == null && (line = this.rd()) == null ? null : JU.PT.getTokens(line.$replace('=', ' '))); +}, "~S"); +Clazz.defineMethod(c$, "checkOrbitalType", +function(line){ +if (line.length > 3 && "5D 6D 7F 10 9G 15 11 21".indexOf(line.substring(1, 3)) >= 0) { +if (this.orbitalType.indexOf(line) >= 0) return true; +if (line.indexOf("G") >= 0 || line.indexOf("H") >= 0 || line.indexOf("I") >= 0) this.appendLoadNote("Unsupported orbital type ignored: " + line); +this.orbitalType += line; +JU.Logger.info("Orbital type set to " + this.orbitalType); +this.fixOrbitalType(); +return true; +}return false; +}, "~S"); +Clazz.defineMethod(c$, "fixOrbitalType", +function(){ +if (this.orbitalType.contains("5D")) { +this.fixSlaterTypes(4, 3); +this.fixSlaterTypes(6, 5); +this.fixSlaterTypes(8, 7); +this.fixSlaterTypes(10, 9); +}if (this.orbitalType.contains("10F")) { +this.fixSlaterTypes(5, 6); +this.fixSlaterTypes(7, 8); +this.fixSlaterTypes(9, 10); +}if (this.orbitalType.contains("15G")) { +this.fixSlaterTypes(7, 8); +this.fixSlaterTypes(9, 10); +}}); +Clazz.defineMethod(c$, "readFreqsAndModes", +function(){ +var tokens; +var frequencies = new JU.Lst(); +while (this.rd() != null && this.line.indexOf('[') < 0) { +var f = this.getTokens()[0]; +frequencies.addLast(f); +} +var nFreqs = frequencies.size(); +this.skipTo("[FR-COORD]"); +if (!this.vibOnly) this.readAtomSet("frequency base geometry", true, true); +this.skipTo("[FR-NORM-COORD]"); +var haveVib = false; +for (var nFreq = 0; nFreq < nFreqs; nFreq++) { +this.skipTo("vibration"); +this.doGetVibration(++this.vibrationNumber); +if (haveVib) this.asc.cloneLastAtomSet(); +haveVib = true; +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, "" + Double.$valueOf(frequencies.get(nFreq)), null); +var i0 = this.asc.getLastAtomSetAtomIndex(); +for (var i = 0; i < this.modelAtomCount; i++) { +tokens = JU.PT.getTokens(this.rd()); +this.asc.addVibrationVector(i + i0, this.parseFloatStr(tokens[0]) * 0.5291772, this.parseFloatStr(tokens[1]) * 0.5291772, this.parseFloatStr(tokens[2]) * 0.5291772); +} +} +return true; +}); +Clazz.defineMethod(c$, "readGeometryOptimization", +function(){ +var energies = new JU.Lst(); +this.rd(); +while (this.rd() != null && this.line.indexOf("force") < 0) energies.addLast("" + Double.$valueOf(this.line.trim())); + +this.skipTo("[GEOMETRIES] XYZ"); +var nGeom = energies.size(); +var firstModel = (this.optOnly || this.desiredModelNumber >= 0 ? 0 : 1); +this.modelNumber = firstModel; +var haveModel = false; +if (this.desiredModelNumber == 0 || this.desiredModelNumber == nGeom) this.desiredModelNumber = nGeom; + else if (this.asc.atomSetCount > 0) this.finalizeMOData(this.moData); +for (var i = 0; i < nGeom; i++) { +this.readLines(2); +if (this.doGetModel(++this.modelNumber, null)) { +this.readAtomSet("Step " + (this.modelNumber - firstModel) + "/" + nGeom + ": " + energies.get(i), false, !this.optOnly || haveModel); +haveModel = true; +} else { +this.readLines(this.modelAtomCount); +}} +return true; +}); +Clazz.defineMethod(c$, "skipTo", +function(key){ +key = key.toUpperCase(); +if (this.line == null || !this.line.toUpperCase().contains(key)) while (this.rd() != null && this.line.toUpperCase().indexOf(key) < 0) { +} +}, "~S"); +Clazz.defineMethod(c$, "readAtomSet", +function(atomSetName, isBohr, asClone){ +if (asClone && this.desiredModelNumber < 0) this.asc.cloneFirstAtomSet(0); +var f = (isBohr ? 0.5291772 : 1); +this.asc.setAtomSetName(atomSetName); +if (this.asc.ac == 0) { +while (this.rd() != null && this.line.indexOf('[') < 0) { +var tokens = this.getTokens(); +if (tokens.length == 4) this.setAtomCoordScaled(null, tokens, 1, f).atomName = tokens[0]; +} +this.modelAtomCount = this.asc.getLastAtomSetAtomCount(); +return; +}var atoms = this.asc.atoms; +var i0 = this.asc.getLastAtomSetAtomIndex(); +for (var i = 0; i < this.modelAtomCount; i++) this.setAtomCoordScaled(atoms[i + i0], JU.PT.getTokens(this.rd()), 1, f); + +}, "~S,~B,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MopacGraphfReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MopacGraphfReader.js new file mode 100755 index 000000000000..c606c118f00e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MopacGraphfReader.js @@ -0,0 +1,124 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MopacSlaterReader"], "J.adapter.readers.quantum.MopacGraphfReader", ["java.util.Hashtable", "JU.AU", "$.Lst"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ac = 0; +this.nCoefficients = 0; +this.invMatrix = null; +this.isNewFormat = false; +this.orbitalData = null; +this.orbitalInfo = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "MopacGraphfReader", J.adapter.readers.quantum.MopacSlaterReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.alphaBeta = "alpha"; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +this.readAtoms(); +if (this.doReadMolecularOrbitals) { +this.readSlaterBasis(); +this.readMolecularOrbitals(false); +if (this.readKeywords()) this.readMolecularOrbitals(true); +}this.continuing = false; +return false; +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.asc.newAtomSet(); +this.ac = this.parseIntStr(this.line); +this.atomicNumbers = Clazz.newIntArray (this.ac, 0); +for (var i = 0; i < this.ac; i++) { +this.rd(); +this.atomicNumbers[i] = this.parseIntRange(this.line, 0, 4); +var atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, this.parseFloatRange(this.line, 4, 17), this.parseFloatRange(this.line, 17, 29), this.parseFloatRange(this.line, 29, 41)); +if (this.line.length > 41) atom.partialCharge = this.parseFloatStr(this.line.substring(41)); +atom.elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(this.atomicNumbers[i]); +} +}); +Clazz.defineMethod(c$, "readSlaterBasis", +function(){ +this.nCoefficients = 0; +this.getSlaters(); +var values = Clazz.newFloatArray (3, 0); +for (var iAtom = 0; iAtom < this.ac; iAtom++) { +J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(this.rd(), values, 3); +var atomicNumber = this.atomicNumbers[iAtom]; +this.createMopacSlaters(iAtom, atomicNumber, values, true); +} +this.nCoefficients = this.slaters.size(); +this.setSlaters(false); +}); +Clazz.defineMethod(c$, "readMolecularOrbitals", +function(isBeta){ +if (isBeta) this.alphaBeta = "beta"; +var list = null; +if (this.rd() == null) return; +this.isNewFormat = (this.line.indexOf("ORBITAL") >= 0); +if (this.isNewFormat) { +this.orbitalData = new JU.Lst(); +if (this.line.length > 10) this.orbitalInfo = new JU.Lst(); +} else { +list = Clazz.newFloatArray (this.nCoefficients, this.nCoefficients, 0); +}for (var iMo = 0; iMo < this.nCoefficients; iMo++) { +if (iMo != 0) this.rd(); +var data; +if (this.isNewFormat) { +if (this.line == null || this.line.indexOf("ORBITAL") < 0 || this.line.indexOf("ORBITAL_LIST") >= 0) break; +this.orbitalData.addLast(data = Clazz.newFloatArray (this.nCoefficients, 0)); +if (this.orbitalInfo != null) this.orbitalInfo.addLast(this.line); +this.rd(); +} else { +data = list[iMo]; +}this.fillFloatArray(this.line, 15, data); +} +if (this.invMatrix == null) { +if (this.isNewFormat && this.line.indexOf("MATRIX") < 0) this.rd(); +this.invMatrix = JU.AU.newFloat2(this.nCoefficients); +for (var iMo = 0; iMo < this.nCoefficients; iMo++) this.fillFloatArray(null, 15, this.invMatrix[iMo] = Clazz.newFloatArray (iMo + 1, 0)); + +}this.nOrbitals = (this.orbitalData == null ? this.nCoefficients : this.orbitalData.size()); +if (this.orbitalData != null) { +list = JU.AU.newFloat2(this.nOrbitals); +for (var i = this.nOrbitals; --i >= 0; ) list[i] = this.orbitalData.get(i); + +}var list2 = Clazz.newFloatArray (this.nOrbitals, this.nCoefficients, 0); +for (var i = 0; i < this.nOrbitals; i++) for (var j = 0; j < this.nCoefficients; j++) { +for (var k = 0; k < this.nCoefficients; k++) list2[i][j] += (list[i][k] * (k >= j ? this.invMatrix[k][j] : this.invMatrix[j][k])); + +if (Math.abs(list2[i][j]) < 1.0E-4) list2[i][j] = 0; +} + +if (this.isNewFormat && this.orbitalInfo == null && this.line != null && this.line.indexOf("ORBITAL_LIST") < 0) this.rd(); +var values = Clazz.newFloatArray (2, 0); +for (var iMo = 0; iMo < this.nOrbitals; iMo++) { +var mo = new java.util.Hashtable(); +if (this.orbitalInfo != null) { +this.line = this.orbitalInfo.get(iMo); +var tokens = this.getTokens(); +mo.put("energy", Float.$valueOf(this.parseFloatStr(tokens[3]))); +mo.put("occupancy", Float.$valueOf(this.parseFloatStr(tokens[1]))); +} else if (this.rd() != null) { +J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(this.line, values, 2); +mo.put("energy", Float.$valueOf(values[0])); +mo.put("occupancy", Float.$valueOf(values[1])); +}mo.put("coefficients", list2[iMo]); +if (isBeta) mo.put("type", "beta"); +this.line = "\n"; +if (this.filterMO()) this.setMO(mo); +} +this.setMOs("eV"); +}, "~B"); +Clazz.defineMethod(c$, "readKeywords", +function(){ +if (this.rd() == null || this.line.indexOf(" Keywords:") < 0) return false; +this.moData.put("calculationType", this.calculationType = this.line.substring(11).trim()); +var isUHF = (this.line.indexOf("UHF") >= 0); +if (isUHF) { +for (var i = this.orbitals.size(); --i >= 0; ) { +this.orbitals.get(i).put("type", "alpha"); +} +}return isUHF; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MopacSlaterReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MopacSlaterReader.js new file mode 100755 index 000000000000..4ab7ae498244 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/MopacSlaterReader.js @@ -0,0 +1,184 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.SlaterReader"], "J.adapter.readers.quantum.MopacSlaterReader", ["java.util.Hashtable"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomicNumbers = null; +this.mopacBasis = null; +this.allowMopacDCoef = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "MopacSlaterReader", J.adapter.readers.quantum.SlaterReader); +Clazz.defineMethod(c$, "scaleSlater", +function(ex, ey, ez, er, zeta){ +var el = Math.abs(ex + ey + ez); +switch (el) { +case 0: +return J.adapter.readers.quantum.MopacSlaterReader.getSlaterConstSSpherical(er + 1, Math.abs(zeta)); +case 1: +return J.adapter.readers.quantum.MopacSlaterReader.getSlaterConstPSpherical(er + 2, Math.abs(zeta)); +} +if (ex >= 0 && ey >= 0) { +return Clazz.superCall(this, J.adapter.readers.quantum.MopacSlaterReader, "scaleSlater", [ex, ey, ez, er, zeta]); +}if (el == 3) { +return 0; +}return J.adapter.readers.quantum.MopacSlaterReader.getSlaterConstDSpherical(el + er + 1, Math.abs(zeta), ex, ey); +}, "~N,~N,~N,~N,~N"); +c$.getSlaterConstDSpherical = Clazz.defineMethod(c$, "getSlaterConstDSpherical", +function(n, zeta, ex, ey){ +return J.adapter.readers.quantum.SlaterReader.fact(15 / (ex < 0 ? 12 : ey < 0 ? 4 : 1), zeta, n); +}, "~N,~N,~N,~N"); +c$.getSlaterConstSSpherical = Clazz.defineMethod(c$, "getSlaterConstSSpherical", +function(n, zeta){ +return Math.pow(2 * zeta, n + 0.5) * Math.sqrt(0.07957747154594767 / J.adapter.readers.quantum.SlaterReader.fact_2n[n]); +}, "~N,~N"); +c$.getSlaterConstPSpherical = Clazz.defineMethod(c$, "getSlaterConstPSpherical", +function(n, zeta){ +var f = J.adapter.readers.quantum.SlaterReader.fact_2n[n] / 3; +return Math.pow(2 * zeta, n + 0.5) * Math.sqrt(0.07957747154594767 / f); +}, "~N,~N"); +Clazz.defineMethod(c$, "setMOData", +function(clearOrbitals){ +if (!this.allowNoOrbitals && this.orbitals.size() == 0) return; +if (this.mopacBasis == null || !this.forceMOPAC && this.gaussians != null && this.shells != null) { +if (this.forceMOPAC) System.out.println("MopacSlaterReader ignoring MOPAC zeta parameters -- using Gaussian contractions"); +Clazz.superCall(this, J.adapter.readers.quantum.MopacSlaterReader, "setMOData", [clearOrbitals]); +return; +}this.setSlaters(false); +this.moData.put("calculationType", this.calculationType); +this.moData.put("energyUnits", this.energyUnits); +this.moData.put("mos", this.orbitals); +this.finalizeMOData(this.lastMoData = this.moData); +if (clearOrbitals) { +this.clearOrbitals(); +}}, "~B"); +c$.getNPQ = Clazz.defineMethod(c$, "getNPQ", +function(atomicNumber){ +return (atomicNumber < J.adapter.readers.quantum.MopacSlaterReader.principalQuantumNumber.length ? J.adapter.readers.quantum.MopacSlaterReader.principalQuantumNumber[atomicNumber] : 0); +}, "~N"); +c$.getNPQs = Clazz.defineMethod(c$, "getNPQs", +function(atomicNumber){ +var n = J.adapter.readers.quantum.MopacSlaterReader.getNPQ(atomicNumber); +switch (atomicNumber) { +case 10: +case 18: +case 36: +case 54: +case 86: +return n + 1; +default: +return n; +} +}, "~N"); +c$.getNPQp = Clazz.defineMethod(c$, "getNPQp", +function(atomicNumber){ +var n = J.adapter.readers.quantum.MopacSlaterReader.getNPQ(atomicNumber); +switch (atomicNumber) { +case 2: +return n + 1; +default: +return n; +} +}, "~N"); +c$.getNPQd = Clazz.defineMethod(c$, "getNPQd", +function(atomicNumber){ +return (atomicNumber < J.adapter.readers.quantum.MopacSlaterReader.npqd.length ? J.adapter.readers.quantum.MopacSlaterReader.npqd[atomicNumber] : 0); +}, "~N"); +Clazz.overrideMethod(c$, "addSlaterBasis", +function(){ +if (this.mopacBasis == null || this.slaters != null && this.slaters.size() > 0) return; +var ac = this.asc.ac; +var i0 = this.asc.getLastAtomSetAtomIndex(); +var atoms = this.asc.atoms; +for (var i = i0; i < ac; ++i) { +var an = atoms[i].elementNumber; +this.createMopacSlaters(i, an, this.mopacBasis[an], this.allowMopacDCoef); +} +}); +Clazz.defineMethod(c$, "createMopacSlaters", +function(iAtom, atomicNumber, values, allowD){ +var zeta; +if ((zeta = values[0]) != 0) { +this.createSphericalSlaterByType(iAtom, atomicNumber, "S", zeta, 1); +}if ((zeta = values[1]) != 0) { +this.createSphericalSlaterByType(iAtom, atomicNumber, "Px", zeta, 1); +this.createSphericalSlaterByType(iAtom, atomicNumber, "Py", zeta, 1); +this.createSphericalSlaterByType(iAtom, atomicNumber, "Pz", zeta, 1); +}if ((zeta = values[2]) != 0 && allowD) { +this.createSphericalSlaterByType(iAtom, atomicNumber, "Dx2-y2", zeta, 1); +this.createSphericalSlaterByType(iAtom, atomicNumber, "Dxz", zeta, 1); +this.createSphericalSlaterByType(iAtom, atomicNumber, "Dz2", zeta, 1); +this.createSphericalSlaterByType(iAtom, atomicNumber, "Dyz", zeta, 1); +this.createSphericalSlaterByType(iAtom, atomicNumber, "Dxy", zeta, 1); +}}, "~N,~N,~A,~B"); +Clazz.defineMethod(c$, "createSphericalSlaterByType", +function(iAtom, atomicNumber, type, zeta, coef){ +var pt = "S Px Py Pz Dx2-y2Dxz Dz2 Dyz Dxy".indexOf(type); +switch (pt) { +case 0: +var sd = this.addSlater(iAtom + 1, 0, 0, 0, J.adapter.readers.quantum.MopacSlaterReader.getNPQs(atomicNumber) - 1, zeta, coef); +sd.elemNo = atomicNumber; +return; +case 2: +case 5: +case 8: +this.addSlater(iAtom + 1, pt == 2 ? 1 : 0, pt == 5 ? 1 : 0, pt == 8 ? 1 : 0, J.adapter.readers.quantum.MopacSlaterReader.getNPQp(atomicNumber) - 2, zeta, coef); +return; +} +pt = (pt >> 2) * 3 - 9; +this.addSlater(iAtom + 1, J.adapter.readers.quantum.MopacSlaterReader.sphericalDValues[pt++], J.adapter.readers.quantum.MopacSlaterReader.sphericalDValues[pt++], J.adapter.readers.quantum.MopacSlaterReader.sphericalDValues[pt++], J.adapter.readers.quantum.MopacSlaterReader.getNPQd(atomicNumber) - 3, zeta, coef); +}, "~N,~N,~S,~N,~N"); +c$.getMopacAtomZetaSPD = Clazz.defineMethod(c$, "getMopacAtomZetaSPD", +function(type){ +if (J.adapter.readers.quantum.MopacSlaterReader.mopacParams == null) J.adapter.readers.quantum.MopacSlaterReader.mopacParams = new java.util.Hashtable(); +var params = J.adapter.readers.quantum.MopacSlaterReader.mopacParams.get(type); +if (params == null) { +J.adapter.readers.quantum.MopacSlaterReader.mopacParams.put(type, params = Clazz.newFloatArray (120, 3, 0)); +var data = null; +switch ("AM1 MNDO PM3 PM6 PM7 RM1".indexOf(type)) { +case 0: +data = J.adapter.readers.quantum.MopacSlaterReader._AM1_C; +break; +case 5: +data = J.adapter.readers.quantum.MopacSlaterReader._MNDO_C; +break; +case 10: +data = J.adapter.readers.quantum.MopacSlaterReader._PM3_C; +break; +case 15: +data = J.adapter.readers.quantum.MopacSlaterReader._PM6_C; +break; +case 20: +data = J.adapter.readers.quantum.MopacSlaterReader._PM7_C; +break; +case 25: +J.adapter.readers.quantum.MopacSlaterReader.addData(params, J.adapter.readers.quantum.MopacSlaterReader._AM1_C); +data = J.adapter.readers.quantum.MopacSlaterReader._RM1_C; +break; +default: +System.err.println("MopacSlaterReader could not find MOPAC params for " + type); +return null; +} +J.adapter.readers.quantum.MopacSlaterReader.addData(params, data); +}System.out.println("MopacSlaterReader using MOPAC params for " + type); +return params; +}, "~S"); +c$.addData = Clazz.defineMethod(c$, "addData", +function(params, data){ +for (var i = 0, p = 0, a = 0; i < data.length; i++) { +var d = data[i]; +if (d < 0) { +a = Clazz.floatToInt(-d); +p = 0; +continue; +}params[a][p++] = d; +} +}, "~A,~A"); +c$.principalQuantumNumber = Clazz.newIntArray(-1, [0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]); +c$.npqd = Clazz.newIntArray(-1, [0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7]); +c$.sphericalDValues = Clazz.newIntArray(-1, [0, -2, 0, 1, 0, 1, -2, 0, 0, 0, 1, 1, 1, 1, 0]); +c$.mopacParams = null; +c$._AM1_C = Clazz.newFloatArray(-1, [-1, 1.188078, -2, 2.1956103, 6.9012486, -3, 0.7973487, 0.9045583, -4, 0.7425237, 0.8080499, -6, 1.808665, 1.685116, -7, 2.31541, 2.15794, -8, 3.108032, 2.524039, -9, 3.770082, 2.49467, -10, 5.998377, 4.1699304, -11, 0.789009, 1.1399864, -12, 1.0128928, 1.1798191, -13, 1.516593, 1.306347, -14, 1.830697, 1.284953, -15, 1.98128, 1.87515, -16, 2.366515, 1.667263, -17, 3.631376, 2.076799, -18, 0.9714216, 5.9236231, -19, 1.2660244, 0.9555939, -20, 1.1767754, 1.273852, -30, 1.954299, 1.372365, -31, 4.000216, 1.3540466, -32, 1.219631, 1.982794, -33, 2.2576897, 1.724971, -34, 2.684157, 2.0506164, -35, 3.064133, 2.038333, -36, 3.5931632, 2.0944633, -37, 4.0000187, 1.0140619, -38, 1.5236848, 1.5723524, -42, 1.945, 1.477, 2.468, -49, 1.8281576, 1.48475, -50, 1.6182807, 1.5084984, -51, 2.254823, 2.218592, -52, 2.1321165, 1.971268, -53, 2.102858, 2.161153, -54, 4.9675243, 3.1432142, -55, 5.7873708, 1.0311693, -56, 1.9136517, 1.3948894, -80, 2.036413, 1.955766, -81, 3.8077333, 1.5511578, -82, 2.4432161, 1.5506706, -83, 4.0007862, 0.9547714, -102, 4, 0.3, 0.3, -104]); +c$._MNDO_C = Clazz.newFloatArray(-1, [-1, 1.331967, -2, 1.7710761, 6.9018258, -3, 0.4296141, 0.7554884, -4, 1.00421, 1.00421, -5, 1.506801, 1.506801, -6, 1.787537, 1.787537, -7, 2.255614, 2.255614, -8, 2.699905, 2.699905, -9, 2.848487, 2.848487, -10, 5.9998745, 4.17526, -11, 0.8213124, 1.030327, -12, 0.9394811, 1.3103428, -13, 1.444161, 1.444161, -14, 1.315986, 1.709943, -15, 2.10872, 1.78581, -16, 2.312962, 2.009146, -17, 3.784645, 2.036263, -18, 0.9821697, 5.999715, -19, 0.7276039, 0.9871174, -20, 1.0034161, 1.3102564, -21, 1.3951231, 5.0160943, 0.9264186, -22, 0.8961552, 0.9676159, 1.8698884, -23, 1.2873544, 1.1744379, 2.015022, -24, 2.1495003, 1.3131074, 2.3289346, -26, 1.4536275, 0.8933716, 1.8691105, -27, 0.59975, 0.607314, 1.856797, -28, 0.7735888, 6.0000132, 2.7857108, -29, 3.3957872, 1.786178, 3.3573266, -30, 2.047359, 1.460946, -31, 0.6986316, 1.8386933, -32, 1.29318, 2.020564, -33, 2.5614338, 1.6117315, -34, 0.7242956, 1.9267288, -35, 3.8543019, 2.1992091, -36, 3.5608622, 1.9832062, -37, 4.0001632, 0.9187408, -38, 1.3729266, 1.1118128, -40, 1.5386288, 1.1472515, 1.8744783, -42, 2.0001083, 1.4112837, 2.1944707, -46, 1.6942397, 6.0000131, 2.2314824, -47, 2.6156672, 1.5209942, 3.1178537, -48, 1.4192491, 1.0480637, -49, 1.762574, 1.8648962, -50, 2.08038, 1.937106, -51, 3.6458835, 1.9733156, -52, 2.7461609, 1.6160376, -53, 2.272961, 2.169498, -54, 4.9900791, 2.6929255, -55, 6.000417, 0.8986916, -56, 1.9765973, 1.3157348, -78, 1.8655763, 1.9475781, 2.8552253, -80, 2.218184, 2.065038, -81, 4.0000447, 1.8076332, -82, 2.498286, 2.082071, -83, 2.6772255, 0.6936864, -85, -87, -90, 1.435306, 1.435306, -100, -101, -102, 4, 0.3, 0.3, -103, -104, -105]); +c$._PM3_C = Clazz.newFloatArray(-1, [-1, 0.967807, -2, 1.7710761, 6.9018258, -3, 0.65, 0.75, -4, 0.877439, 1.508755, -5, 1.5312597, 1.1434597, -6, 1.565085, 1.842345, -7, 2.028094, 2.313728, -8, 3.796544, 2.389402, -9, 4.708555, 2.491178, -10, 5.9998745, 4.17526, -11, 2.6618938, 0.8837425, -12, 0.698552, 1.483453, -13, 1.702888, 1.073629, -14, 1.635075, 1.313088, -15, 2.017563, 1.504732, -16, 1.891185, 1.658972, -17, 2.24621, 2.15101, -18, 0.9821697, 5.999715, -19, 0.8101687, 0.9578342, -20, 1.2087415, 0.940937, -30, 1.819989, 1.506922, -31, 1.84704, 0.839411, -32, 2.2373526, 1.5924319, -33, 2.636177, 1.703889, -34, 2.828051, 1.732536, -35, 5.348457, 2.12759, -36, 3.5608622, 1.9832062, -37, 4.0000415, 1.013459, -38, 1.2794532, 1.39125, -48, 1.679351, 2.066412, -49, 2.016116, 1.44535, -50, 2.373328, 1.638233, -51, 2.343039, 1.899992, -52, 4.165492, 1.647555, -53, 7.001013, 2.454354, -54, 4.9900791, 2.6929255, -55, 3.5960298, 0.9255168, -56, 1.9258219, 1.4519912, -80, 1.476885, 2.479951, -81, 6.867921, 1.969445, -82, 3.141289, 1.892418, -83, 4.916451, 1.934935, -87, -102, 4, 0.3, -104]); +c$._PM6_C = Clazz.newFloatArray(-1, [-1, 1.268641, -2, 3.313204, 3.657133, -3, 0.981041, 2.953445, -4, 1.212539, 1.276487, -5, 1.634174, 1.479195, -6, 2.047558, 1.702841, -7, 2.380406, 1.999246, -8, 5.421751, 2.27096, -9, 6.043849, 2.906722, -10, 6.000148, 3.834528, -11, 0.686327, 0.950068, -12, 1.31083, 1.388897, -13, 2.364264, 1.749102, 1.269384, -14, 1.752741, 1.198413, 2.128593, -15, 2.158033, 1.805343, 1.230358, -16, 2.192844, 1.841078, 3.109401, -17, 2.63705, 2.118146, 1.324033, -18, 6.000272, 5.94917, -19, 6.000478, 1.127503, -20, 1.528258, 2.060094, -21, 1.402469, 1.345196, 1.859012, -22, 5.324777, 1.164068, 1.41828, -23, 1.97433, 1.063106, 1.394806, -24, 3.28346, 1.029394, 1.623119, -25, 2.13168, 1.52588, 2.6078, -26, 1.47915, 6.002246, 1.080747, -27, 1.166613, 3, 1.860218, -28, 1.591828, 2.304739, 2.514761, -29, 1.669096, 3, 2.73499, -30, 1.512875, 1.789482, -31, 2.339067, 1.729592, -32, 2.546073, 1.70913, -33, 2.926171, 1.765191, 1.392142, -34, 2.512366, 2.007576, -35, 4.670684, 2.035626, 1.521031, -36, 1.312248, 4.491371, -37, 5.510145, 1.33517, -38, 2.197303, 1.730137, -39, 0.593368, 1.490422, 1.650893, -40, 1.69259, 1.694916, 1.567392, -41, 2.355562, 1.386907, 1.977324, -42, 1.060429, 1.350412, 1.827152, -43, 1.956245, 6.006299, 1.76736, -44, 1.459195, 5.537201, 2.093164, -45, 1.324919, 4.306111, 2.901406, -46, 1.658503, 1.156718, 2.219861, -47, 1.994004, 0.681817, 6.007328, -48, 1.384108, 1.957413, -49, 2.023087, 2.106618, -50, 2.383941, 2.057908, -51, 2.391178, 1.773006, 2.46559, -52, 2.769862, 1.731319, -53, 4.498653, 1.917072, 1.875175, -54, 2.759787, 1.977446, -55, 5.956008, 1.619485, -56, 1.395379, 1.430139, -57, 2.67378, 1.248192, 1.688562, -71, 5.471741, 1.712296, 2.225892, -72, 3.085344, 1.575819, 1.84084, -73, 4.578087, 4.841244, 1.838249, -74, 2.66456, 1.62401, 1.7944, -75, 2.411839, 1.815351, 2.522766, -76, 3.031, 1.59396, 1.77557, -77, 1.500907, 4.106373, 2.676047, -78, 2.301264, 1.662404, 3.168852, -79, 1.814169, 1.618657, 5.053167, -80, 2.104896, 1.516293, -81, 3.335883, 1.766141, -82, 2.368901, 1.685246, -83, 3.702377, 1.872327, -85, -87, -90, 1.435306, 1.435306, -97, -98, 2, -100, -101, -102, 4, -103, -104, -105]); +c$._PM7_C = Clazz.newFloatArray(-1, [-1, 1.260237, -2, 3.313204, 3.657133, -3, 0.804974, 6.02753, -4, 1.036199, 1.764629, -5, 1.560481, 1.449712, -6, 1.942244, 1.708723, -7, 2.354344, 2.028288, -8, 5.972309, 2.349017, -9, 6.07003, 2.930631, -10, 6.000148, 3.834528, -11, 1.666701, 1.397571, -12, 1.170297, 1.840439, -13, 1.232599, 1.219336, 1.617502, -14, 1.433994, 1.671776, 1.221915, -15, 2.257933, 1.555172, 1.235995, -16, 2.046153, 1.807678, 3.510309, -17, 2.223076, 2.264466, 0.949994, -18, 6.000272, 5.94917, -19, 5.422018, 1.471023, -20, 1.477988, 2.220194, -21, 1.794897, 2.174934, 5.99286, -22, 1.448579, 1.940695, 1.093648, -23, 6.051795, 2.249871, 1.087345, -24, 2.838413, 1.37956, 1.188729, -25, 1.66644, 2.078735, 2.89707, -26, 1.157576, 2.737621, 1.860792, -27, 1.789441, 1.531664, 1.951497, -28, 1.70834, 2.000099, 5.698724, -29, 1.735325, 3.219976, 6.013523, -30, 1.56014, 1.915631, -31, 1.913326, 1.811217, -32, 2.762845, 1.531131, -33, 3.21385, 1.628384, 3.314358, -34, 2.75113, 1.901764, -35, 3.72548, 2.242318, 1.591034, -36, 1.312248, 4.491371, -37, 1.314831, 6.015581, -38, 2.092264, 3.314082, -39, 1.605083, 2.131069, 6.021645, -40, 1.373517, 1.141705, 1.618769, -41, 2.761686, 5.999062, 1.611677, -42, 1.595399, 1.426575, 1.787748, -43, 2.104672, 2.669984, 3.030496, -44, 1.605646, 4.58082, 1.244578, -45, 1.591465, 4.546046, 2.685918, -46, 5.790768, 2.169788, 1.327661, -47, 1.793032, 2.528721, 3.524808, -48, 3.670047, 1.857036, -49, 1.902085, 1.940127, -50, 1.959238, 1.976146, -51, 1.9986, 1.887062, 1.475516, -52, 3.024819, 2.598283, -53, 3.316202, 2.449124, 1.716121, -54, 3.208788, 2.727979, -55, 1.776064, 6.02531, -56, 1.75049, 1.968788, -57, 3.398968, 1.811983, 1.894574, -71, 2.327039, 6.000335, 1.208414, -72, 2.854938, 3.079458, 2.067146, -73, 4.116264, 3.380936, 1.755408, -74, 3.881177, 2.044717, 1.928901, -75, 2.452162, 1.583194, 2.414839, -76, 3.094808, 2.845232, 1.986395, -77, 1.924564, 3.510744, 2.437796, -78, 2.922551, 0.725689, 2.158085, -79, 1.904923, 2.408005, 4.377691, -80, 2.575831, 1.955505, -81, 1.903342, 2.838647, 5.015677, -82, 4.706006, 2.591455, -83, 5.465413, 2.037481, 2.8554, -85, -87, -90, 1.435306, 1.435306, -97, -98, 2, -100, -101, -102, 4, -103, -104, -105]); +c$._RM1_C = Clazz.newFloatArray(-1, [-1, 1.0826737, -6, 1.850188, 1.7683009, -7, 2.3744716, 1.9781257, -8, 3.1793691, 2.5536191, -9, 4.4033791, 2.6484156, -15, 2.1224012, 1.7432795, -16, 2.1334431, 1.8746065, -17, 3.8649107, 1.8959314, -35, 5.7315721, 2.0314758, -53, 2.5300375, 2.3173868, -57, 1.272677, 1.423276, 1.410369, -58, 1.281028, 1.425366, 1.412866, -59, 1.538039, 1.581647, 1.374904, -60, 1.45829, 1.570516, 1.513561, -61, 1.065536, 1.846925, 1.424049, -62, 1.293914, 1.738656, 1.521378, -63, 1.350342, 1.733714, 1.494122, -64, 1.272776, 1.908122, 1.515905, -65, 1.210052, 1.921514, 1.528123, -66, 1.295275, 1.912107, 1.413397, -67, 1.33055, 1.779559, 1.536524, -68, 1.347757, 1.806481, 1.466189, -69, 1.369147, 1.674365, 1.714394, -70, 1.239808, 1.849144, 1.485378, -71, 1.425302, 1.790353, 1.642603, -102, 4, 0.3]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/NBOParser.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/NBOParser.js new file mode 100755 index 000000000000..33c5d9799204 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/NBOParser.js @@ -0,0 +1,399 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(null, "J.adapter.readers.quantum.NBOParser", ["java.util.Hashtable", "JU.Lst", "$.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.haveBeta = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "NBOParser", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(vwr){ +this.vwr = vwr; +return this; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "getAllStructures", +function(output, list){ +if (output == null) return null; +if (list == null) list = new JU.Lst(); +output = JU.PT.rep(output, "the $CHOOSE", ""); +this.getStructures(this.getBlock(output, "$CHOOSE"), "CHOOSE", list); +this.getStructures(this.getBlock(output, "$NRTSTR"), "NRTSTR", list); +this.getStructures(this.getBlock(output, "$NRTSTRA"), "NRTSTRA", list); +this.getStructures(this.getBlock(output, "$NRTSTRB"), "NRTSTRB", list); +this.getStructuresTOPO(this.getData(output, "TOPO matrix", "* Total *", 1), "RSA", list); +this.getStructuresTOPO(this.getData(output, "TOPO matrix", "* Total *", 2), "RSB", list); +return list; +}, "~S,JU.Lst"); +Clazz.defineMethod(c$, "getBlock", +function(output, key){ +var pt = output.indexOf(key); +var pt1 = output.indexOf("$END", pt + 1); +return (pt < 0 || pt1 < 0 ? null : output.substring(pt + key.length, pt1)); +}, "~S,~S"); +c$.getStructures46 = Clazz.defineMethod(c$, "getStructures46", +function(tokens, type, structures, nAtoms){ +if (tokens == null) return; +var htData = new java.util.Hashtable(); +structures.addLast(htData); +var matrix = Clazz.newIntArray (nAtoms, nAtoms, 0); +htData.put("matrix", matrix); +htData.put("type", type); +htData.put("spin", type); +htData.put("index", Integer.$valueOf(0)); +for (var n = tokens.length, i = 0; i < n; i++) { +var org = tokens[i]; +if (org.contains("(ry)") || org.contains("Ryd") || org.contains("RY")) break; +if (org.contains("*") || org.contains("(cr)") || org.startsWith("CR(") || org.contains("Cor(")) continue; +if (org.startsWith("LP(")) { +var ia = J.adapter.readers.quantum.NBOParser.getAtomIndex(org.substring(org.indexOf(")") + 1)); +matrix[ia][ia] += 1; +continue; +}var isLP = org.endsWith("(lp)"); +if (isLP || org.endsWith("(lv)")) { +var ia = J.adapter.readers.quantum.NBOParser.getAtomIndex(org.substring(0, org.length - 4)); +matrix[ia][ia] += (isLP ? 1 : 10); +continue; +}var names = JU.PT.split(org, "-"); +switch (names.length) { +case 3: +System.out.println("NBOParser 3-center bonnd " + org + " ignored for Kekule structure"); +continue; +case 2: +if (names[0].startsWith("BD(")) { +names[0] = names[0].substring(names[0].indexOf(")") + 1); +}var ia = J.adapter.readers.quantum.NBOParser.getAtomIndex(names[0]); +var ib = J.adapter.readers.quantum.NBOParser.getAtomIndex(names[1]); +matrix[ia][ib]++; +break; +} +} +J.adapter.readers.quantum.NBOParser.dumpMatrix(type, 0, matrix); +}, "~A,~S,JU.Lst,~N"); +c$.getAtomIndex = Clazz.defineMethod(c$, "getAtomIndex", +function(xx99){ +for (var n = xx99.length, i = n, val = 0, pow = 1, ch = 0; --i >= 0; ) { +if ((ch = (xx99.charAt(i)).charCodeAt(0)) < 48 || ch > 57) return val - 1; +val += (ch - 48) * pow; +pow *= 10; +} +return 0; +}, "~S"); +Clazz.defineMethod(c$, "getStructuresTOPO", +function(data, nrtType, list){ +if (data == null || data.length == 0) return; +var parts = JU.PT.split(data, "Resonance"); +if (parts.length < 2) return; +var pt = parts[0].lastIndexOf("."); +var nAtoms = JU.PT.parseInt(parts[0].substring(pt - 3, pt)); +if (nAtoms < 0) return; +var tokens = JU.PT.getTokens(JU.PT.rep(JU.PT.rep(parts[0], ".", ".1"), "Atom", "-1")); +var raw = Clazz.newFloatArray (tokens.length, 0); +var n = JU.PT.parseFloatArrayInfested(tokens, raw); +var table = Clazz.newIntArray (nAtoms, nAtoms, 0); +var atom1 = -1; +var atom2 = 0; +var atom0 = 0; +for (var i = 0; i < n; i++) { +var f = raw[i]; +if (f < 0) { +atom1 = -1; +continue; +}if (f % 1 == 0) { +if (atom1 == -1) { +atom0 = Clazz.floatToInt(f); +atom1 = -2; +}if (atom1 < 0) continue; +table[atom1][atom2++] = Clazz.floatToInt(f); +} else { +atom1 = Clazz.floatToInt(f - 1); +atom2 = atom0 - 1; +}} +var matrix = null; +tokens = parts[1].$plit("\n"); +var s = ""; +for (var i = 3; i < tokens.length; i++) if (tokens[i].indexOf("--") < 0) s += tokens[i].substring(10) + "\n"; + +s = s.$replace('-', ' '); +s = JU.PT.rep(s, ".", ".1"); +s = JU.PT.rep(s, "(", " -1 "); +s = JU.PT.rep(s, ")", " -2 "); +s = JU.PT.rep(s, ",", " -3 "); +tokens = JU.PT.getTokens(s); +raw = Clazz.newFloatArray (tokens.length, 0); +n = JU.PT.parseFloatArrayInfested(tokens, raw); +var htData = null; +var dir = 1; +atom1 = atom2 = -1; +for (var i = 0, index = 0; i < n; i++) { +var f = raw[i]; +var remain = f % 1; +if (remain == 0) { +var v = Clazz.floatToInt(f); +switch (v) { +case -1: +dir = -1; +atom1 = atom2 = -1; +continue; +case -2: +break; +case -3: +if (atom1 < 0) continue; +break; +default: +if (atom1 < 0) { +atom1 = atom2 = v - 1; +} else { +atom2 = v - 1; +}continue; +} +matrix[atom1][atom2] += dir; +atom1 = atom2 = -1; +dir = 1; +} else { +if (htData == null) matrix = table; +J.adapter.readers.quantum.NBOParser.dumpMatrix(nrtType, index, matrix); +if (raw[i + 2] == 0) break; +list.addLast(htData = new java.util.Hashtable()); +s = "" + (Clazz.floatToInt(f) * 100 + Clazz.doubleToInt((remain - 0.0999999) * 1000)); +var len = s.length; +s = (len == 2 ? "0" : "") + s.substring(0, len - 2) + "." + s.substring(len - 2); +htData.put("weight", s); +htData.put("index", Integer.$valueOf(index++)); +htData.put("type", nrtType.toLowerCase()); +htData.put("spin", nrtType.indexOf("B") >= 0 ? "beta" : "alpha"); +matrix = Clazz.newIntArray (nAtoms, nAtoms, 0); +htData.put("matrix", matrix); +for (var j = 0; j < nAtoms; j++) for (var k = 0; k < nAtoms; k++) matrix[j][k] = table[j][k]; + + +}} +}, "~S,~S,JU.Lst"); +c$.dumpMatrix = Clazz.defineMethod(c$, "dumpMatrix", +function(nrtType, index, matrix){ +System.out.println("NBOParser matrix " + nrtType + " " + index); +for (var j = 0, nAtoms = matrix.length; j < nAtoms; j++) System.out.println(JU.PT.toJSON(null, matrix[j])); + +System.out.println("-------------------"); +}, "~S,~N,~A"); +Clazz.defineMethod(c$, "getData", +function(output, start, end, n){ +var pt = 0; +var pt1 = 0; +for (var i = 0; i < n; i++) { +pt = output.indexOf(start, pt1 + 1); +pt1 = output.indexOf(end, pt + 1); +} +return (pt < 0 || pt1 < 0 ? null : output.substring(pt, pt1)); +}, "~S,~S,~S,~N"); +Clazz.defineMethod(c$, "getStructures", +function(data, nrtType, list){ +if (data == null || data.length == 0) return 0; +var n = 0; +try { +var ignoreSTR = (data.indexOf("ALPHA") >= 0); +if (!ignoreSTR && !data.contains("STR")) data = "STR " + data + " END"; +nrtType = nrtType.toLowerCase(); +var spin = (nrtType.equals("nrtstrb") ? "beta" : "alpha"); +if (nrtType.equals("choose")) nrtType = null; +var htData = null; +var tokens = JU.PT.getTokens(data.$replace('\r', ' ').$replace('\n', ' ').$replace('\t', ' ')); +var lastType = ""; +var index = 0; +for (var i = 0, nt = tokens.length; i < nt; i++) { +var tok = tokens[i]; +switch ("STR = ALPHABETA LONE BOND 3C".indexOf(tok)) { +case 0: +if (ignoreSTR) continue; +tok = spin; +case 10: +case 15: +list.addLast(htData = new java.util.Hashtable()); +if (!lastType.equals(tok)) { +lastType = tok; +index = 0; +}htData.put("index", Integer.$valueOf(index++)); +htData.put("spin", spin = tok.toLowerCase()); +if (spin.equals("beta")) this.haveBeta = true; +htData.put("type", nrtType == null ? "choose" + spin.substring(0, 1) : nrtType); +n++; +break; +case 5: +htData.put("weight", tokens[++i]); +break; +case 20: +var lone = new JU.Lst(); +htData.put("lone", lone); +while (!(tok = tokens[++i]).equals("END")) { +var at1 = Integer.parseInt(tok); +var nlp = Integer.parseInt(tokens[++i]); +lone.addLast( Clazz.newIntArray(-1, [nlp, at1])); +} +break; +case 25: +var bonds = new JU.Lst(); +htData.put("bond", bonds); +while (!(tok = tokens[++i]).equals("END")) { +var order = "DTQ".indexOf(tok.charAt(0)) + 2; +var at1 = Integer.parseInt(tokens[++i]); +var at2 = Integer.parseInt(tokens[++i]); +bonds.addLast( Clazz.newIntArray(-1, [order, at1, at2])); +} +break; +case 30: +var threeCenter = new JU.Lst(); +htData.put("3c", threeCenter); +while (!(tok = tokens[++i]).equals("END")) { +var order = "DTQ".indexOf(tok.charAt(0)) + 2; +var at1 = Integer.parseInt(tokens[++i]); +var at2 = Integer.parseInt(tokens[++i]); +var at3 = Integer.parseInt(tokens[++i]); +threeCenter.addLast( Clazz.newIntArray(-1, [order, at1, at2, at3])); +} +break; +} +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +list.clear(); +return -1; +} else { +throw e; +} +} +return n; +}, "~S,~S,JU.Lst"); +Clazz.defineMethod(c$, "isOpenShell", +function(){ +return this.haveBeta; +}); +c$.getStructureMap = Clazz.defineMethod(c$, "getStructureMap", +function(structureList, type, index){ +if (type == null || structureList == null) return null; +type = type.toLowerCase(); +var spin = (type.indexOf("b") < 0 ? "alpha" : "beta"); +for (var i = 0; i < structureList.size(); i++) { +var map = structureList.get(i); +if (spin.equals(map.get("spin")) && type.equals(map.get("type")) && (index < 0 || index == (map.get("index")).intValue())) { +return map; +}} +return null; +}, "JU.Lst,~S,~N"); +Clazz.defineMethod(c$, "connectNBO", +function(modelIndex, type){ +try { +if (type == null) type = "alpha"; +type = type.toLowerCase(); +if (type.length == 0 || type.equals("46")) type = "alpha"; +var map = this.vwr.ms.getModelAuxiliaryInfo(modelIndex); +this.haveBeta = map.containsKey("isOpenShell"); +var list = map.get("nboStructures"); +if (list == null || list.size() == 0) return false; +type = type.toLowerCase(); +var index = type.indexOf("_"); +if (index > 0) { +if (list.size() <= 2) { +var fname = map.get("fileName"); +if (fname != null && !fname.endsWith(".nbo")) { +fname = fname.substring(0, fname.lastIndexOf(".")) + ".nbo"; +this.getAllStructures(this.vwr.getAsciiFileOrNull(fname), list); +}}var tokens = JU.PT.split(type, "_"); +index = JU.PT.parseInt(tokens[1]) - 1; +type = tokens[0]; +} else { +index = 0; +}var structureMap = J.adapter.readers.quantum.NBOParser.getStructureMap(list, type, index); +if (structureMap == null || !this.setJmolLewisStructure(structureMap, modelIndex, index + 1)) { +return false; +}map.put("nboStructure", structureMap); +} catch (e) { +e.printStackTrace(); +return false; +} +return true; +}, "~N,~S"); +Clazz.defineMethod(c$, "setJmolLewisStructure", +function(structureMap, modelIndex, resNo){ +if (structureMap == null || modelIndex < 0) return false; +var type = structureMap.get("type"); +System.out.println("creating structure " + modelIndex + " " + type); +var bonds = structureMap.get("bond"); +var lonePairs = structureMap.get("lone"); +var matrix = structureMap.get("matrix"); +var lplv = structureMap.get("lplv"); +var bondCounts = structureMap.get("bondCounts"); +var needLP = (lplv == null); +var bsAtoms = this.vwr.ms.getModelAtomBitSetIncludingDeleted(modelIndex, false); +var atomCount = bsAtoms.cardinality(); +var iatom0 = bsAtoms.nextSetBit(0); +if (matrix != null && atomCount != matrix.length) return false; +if (matrix != null) J.adapter.readers.quantum.NBOParser.dumpMatrix(type, resNo, matrix); +if (needLP) { +structureMap.put("lplv", lplv = Clazz.newIntArray (atomCount, 0)); +structureMap.put("bondCounts", bondCounts = Clazz.newIntArray (atomCount, 0)); +}if (needLP) { +if (lonePairs != null) { +for (var i = lonePairs.size(); --i >= 0; ) { +var na = lonePairs.get(i); +var nlp = na[0]; +var a1 = na[1] - 1; +lplv[a1] = nlp; +} +} else if (matrix != null) { +for (var i = atomCount; --i >= 0; ) { +lplv[i] = matrix[i][i]; +} +}}this.vwr.ms.deleteModelBonds(modelIndex); +var mad = this.vwr.ms.getDefaultMadFromOrder(1); +if (bonds != null) { +for (var i = bonds.size(); --i >= 0; ) { +var oab = bonds.get(i); +var a1 = iatom0 + oab[1] - 1; +var a2 = iatom0 + oab[2] - 1; +var order = oab[0]; +if (needLP) { +bondCounts[a1] += order; +bondCounts[a2] += order; +}this.vwr.ms.bondAtoms(this.vwr.ms.at[a1], this.vwr.ms.at[a2], order, mad, null, 0, true, true); +} +} else if (matrix != null) { +for (var i = 0; i < atomCount - 1; i++) { +var m = matrix[i]; +for (var j = i + 1; j < atomCount; j++) { +var order = m[j]; +if (order == 0) continue; +System.out.println("adding bond " + this.vwr.ms.at[i + iatom0] + " " + this.vwr.ms.at[j + iatom0]); +this.vwr.ms.bondAtoms(this.vwr.ms.at[i + iatom0], this.vwr.ms.at[j + iatom0], order, mad, null, 0, false, true); +if (needLP) { +bondCounts[i] += order; +bondCounts[j] += order; +}} +} +}for (var i = 0, ia = bsAtoms.nextSetBit(0); ia >= 0; ia = bsAtoms.nextSetBit(ia + 1), i++) { +var a = this.vwr.ms.at[ia]; +a.setValence(bondCounts[i]); +a.setFormalCharge(0); +var nH = this.vwr.ms.getMissingHydrogenCount(a, true); +if (a.getElementNumber() == 6 && nH == 1) { +if (bondCounts[i] == 3 && lplv[i] % 10 == 0 || bondCounts[i] == 2) nH -= 2; +}a.setFormalCharge(-nH); +} +return true; +}, "java.util.Map,~N,~N"); +Clazz.defineMethod(c$, "getNBOAtomLabel", +function(a){ +var name = a.getAtomName(); +var modelIndex = a.getModelIndex(); +var structureMap = this.vwr.ms.getModelAuxiliaryInfo(modelIndex).get("nboStructure"); +if (this.vwr == null || structureMap == null) return name; +var lplv = structureMap.get("lplv"); +var i = a.i - this.vwr.ms.am[modelIndex].firstAtomIndex; +var addFormalCharge = this.vwr.getBoolean(603979891); +var charge = (addFormalCharge ? this.vwr.ms.at[i].getFormalCharge() : 0); +if (lplv[i] == 0 && charge == 0) return name; +if (lplv[i] % 10 > 0) name = "(" + (lplv[i] % 10) + ")" + name; +if (lplv[i] >= 10) name = "*" + name; +if (addFormalCharge) { +if (charge != 0) name += "" + Math.abs(charge) + (charge > 0 ? "+" : charge < 0 ? "-" : "") + ""; +}return name; +}, "JM.Atom"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/NWChemReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/NWChemReader.js new file mode 100755 index 000000000000..45f421a9d376 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/NWChemReader.js @@ -0,0 +1,407 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MOReader", "java.util.Hashtable"], "J.adapter.readers.quantum.NWChemReader", ["JU.AU", "$.BS", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "J.adapter.smarter.SmarterJmolAdapter", "J.api.JmolAdapter", "JU.Elements", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.taskNumber = 1; +this.equivalentAtomSets = 0; +this.energyKey = ""; +this.energyValue = ""; +this.converged = false; +this.haveEnergy = false; +this.haveAt = false; +this.inInput = false; +this.atomTypes = null; +this.htMOs = null; +this.nBasisFunctions = 0; +this.moCount = 0; +this.purging = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "NWChemReader", J.adapter.readers.quantum.MOReader); +Clazz.prepareFields (c$, function(){ +this.htMOs = new java.util.Hashtable(); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.calculationType = "(NWCHEM)"; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.trim().startsWith("NWChem")) { +this.inInput = (this.line.indexOf("NWChem Input Module") >= 0); +if (this.inInput) { +this.checkMOs(); +}}if (this.line.startsWith(" Step")) { +this.init(); +return true; +}if (this.line.indexOf(" wavefunction = ") >= 0) { +this.calculationType = this.line.substring(this.line.indexOf("=") + 1).trim() + "(NWCHEM)"; +this.moData.put("calculationType", this.calculationType); +return true; +}if (this.line.indexOf("Total") >= 0) { +this.readTotal(); +return true; +}if (this.line.indexOf("@") >= 0) { +this.readAtSign(); +return true; +}if (this.line.startsWith(" Task times")) { +this.init(); +this.taskNumber++; +return true; +}if (this.line.startsWith(" Optimization converged")) { +this.converged = true; +return true; +}if (this.line.startsWith(" Symmetry information")) { +this.readSymmetry(); +return true; +}if (this.line.indexOf("Output coordinates in ") >= 0) { +var thisLine = this.line; +if (!this.htMOs.isEmpty()) this.checkMOs(); +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.equivalentAtomSets++; +this.readAtoms(thisLine); +return true; +}if (this.line.indexOf("Vibrational analysis") >= 0) { +this.readFrequencies(); +return true; +}if (!this.doProcessLines) return true; +if (this.line.startsWith(" Mulliken analysis of the total density")) { +if (this.equivalentAtomSets != 0) this.readPartialCharges(); +return true; +}if (this.line.contains("Basis \"ao basis\"") && this.doReadMolecularOrbitals) { +return this.readBasis(); +}if (this.line.contains("Molecular Orbital Analysis")) { +if (this.equivalentAtomSets != 0) this.readMOs(); +return true; +}return true; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.checkMOs(); +this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "init", +function(){ +this.haveEnergy = false; +this.haveAt = false; +this.converged = false; +this.inInput = false; +this.equivalentAtomSets = 0; +}); +Clazz.defineMethod(c$, "setEnergies", +function(key, value, nAtomSets){ +this.energyKey = key; +this.energyValue = value; +this.setProps(this.energyKey, this.energyValue, this.equivalentAtomSets); +this.setNames(this.energyKey + " = " + this.energyValue, null, this.equivalentAtomSets); +this.asc.setAtomSetEnergy(value, this.parseFloatStr(value)); +this.haveEnergy = true; +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "setEnergy", +function(key, value){ +this.energyKey = key; +this.energyValue = value; +this.asc.setAtomSetModelProperty(this.energyKey, this.energyValue); +this.asc.setAtomSetName(this.energyKey + " = " + this.energyValue); +this.haveEnergy = true; +}, "~S,~S"); +Clazz.defineMethod(c$, "readSymmetry", +function(){ +var tokens = JU.PT.getTokens(this.readLines(3)); +this.setProps("Symmetry group name", tokens[tokens.length - 1], this.equivalentAtomSets); +}); +Clazz.defineMethod(c$, "readTotal", +function(){ +var tokens = this.getTokens(); +try { +if (tokens[2].startsWith("energy")) { +if (!this.haveAt) this.setEnergies("E(" + tokens[1] + ")", tokens[tokens.length - 1], this.equivalentAtomSets); +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "readAtSign", +function(){ +if (this.line.charAt(2) == 'S') { +if (this.readLines(2) == null) return; +}var tokens = this.getTokens(); +if (!this.haveEnergy) { +this.setEnergies("E", tokens[2], this.equivalentAtomSets); +} else { +this.setEnergies(this.energyKey, this.energyValue, this.equivalentAtomSets); +}this.setProps("Step", tokens[1], this.equivalentAtomSets); +this.haveAt = true; +}); +Clazz.defineMethod(c$, "setProps", +function(key, value, n){ +for (var i = this.asc.iSet; --n >= 0 && i >= 0; --i) this.asc.setAtomSetModelPropertyForSet(key, value, i); + +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "setNames", +function(atomSetName, namedSets, n){ +for (var i = this.asc.iSet; --n >= 0 && i >= 0; --i) if (namedSets == null || !namedSets.get(i)) this.asc.setModelInfoForSet("name", atomSetName, i); + +}, "~S,JU.BS,~N"); +Clazz.defineMethod(c$, "readAtoms", +function(thisLine){ +var scale = (thisLine.indexOf("angstroms") < 0 ? 0.5291772 : 1); +this.readLines(3); +var tokens; +this.haveEnergy = false; +this.asc.newAtomSet(); +this.asc.setAtomSetModelProperty(".PATH", "Task " + this.taskNumber + (this.inInput ? J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR + "Input" : J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR + "Geometry")); +this.atomTypes = new JU.Lst(); +while (this.rd() != null && this.line.length > 0) { +tokens = this.getTokens(); +if (tokens.length < 6) break; +var name = this.fixTag(tokens[1]); +this.setAtomCoordScaled(null, tokens, 3, scale).atomName = name; +this.atomTypes.addLast(name); +} +if (this.converged) { +this.setEnergy(this.energyKey, this.energyValue); +this.asc.setAtomSetModelProperty("Step", "converged"); +} else if (this.inInput) { +this.asc.setAtomSetName("Input"); +}}, "~S"); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +var firstFrequencyAtomSetIndex = this.asc.atomSetCount; +var firstVibrationNumber = this.vibrationNumber; +var path = "Task " + this.taskNumber + J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR + "Frequencies"; +this.discardLinesUntilContains("Atom information"); +this.readLines(2); +this.asc.newAtomSet(); +var tokens; +while (this.rd() != null && this.line.indexOf("---") < 0) { +tokens = this.getTokens(); +this.setAtomCoordScaled(null, tokens, 2, 0.5291772).atomName = this.fixTag(tokens[0]); +} +this.discardLinesUntilContains("(Projected Frequencies expressed in cm-1)"); +this.readLines(3); +var firstTime = true; +var bsIgnore = new JU.BS(); +while (this.rd() != null && this.line.indexOf("P.Frequency") >= 0) { +tokens = JU.PT.getTokensAt(this.line, 12); +var frequencyCount = tokens.length; +var iAtom0 = this.asc.ac; +var ac = this.asc.getLastAtomSetAtomCount(); +if (firstTime) iAtom0 -= ac; +var ignore = Clazz.newBooleanArray(frequencyCount, false); +for (var i = 0; i < frequencyCount; ++i) { +ignore[i] = (tokens[i].equals("0.00") || !this.doGetVibration(++this.vibrationNumber)); +if (ignore[i]) { +bsIgnore.set(this.vibrationNumber); +continue; +}if (!firstTime) this.asc.cloneLastAtomSet(); +firstTime = false; +this.asc.setAtomSetFrequency(this.vibrationNumber, path, null, tokens[i], null); +} +this.readLines(1); +this.fillFrequencyData(iAtom0, ac, ac, ignore, false, 0, 0, null, 0, null); +this.readLines(3); +} +try { +this.discardLinesUntilContains("Infra Red Intensities"); +this.readLines(2); +var idx = firstFrequencyAtomSetIndex; +for (var i = firstVibrationNumber; i < this.vibrationNumber; ++i) { +if (this.rd() == null) return; +if (bsIgnore.get(i)) continue; +tokens = this.getTokens(); +var iset = this.asc.iSet; +this.asc.iSet = idx++; +this.asc.setAtomSetModelProperty("IRIntensity", tokens[3] + " au"); +this.asc.iSet = iset; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("nwchem infra red issue" + e); +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "readPartialCharges", +function(){ +var tokens; +this.readLines(4); +var ac = this.asc.ac; +var i0 = this.asc.getLastAtomSetAtomIndex(); +var atoms = this.asc.atoms; +for (var i = i0; i < ac; ++i) { +while (atoms[i].elementNumber == 0) ++i; + +do { +if (this.rd() == null || this.line.length < 3) return; +tokens = this.getTokens(); +} while (tokens[0].indexOf(".") >= 0); +atoms[i].partialCharge = this.parseIntStr(tokens[2]) - this.parseFloatStr(tokens[3]); +} +}); +Clazz.defineMethod(c$, "fixTag", +function(tag){ +if (tag.equalsIgnoreCase("bq")) return "X"; +if (tag.toLowerCase().startsWith("bq")) tag = tag.substring(2) + "-Bq"; +return "" + Character.toUpperCase(tag.charAt(0)) + (tag.length == 1 ? "" : "" + Character.toLowerCase(tag.charAt(1))); +}, "~S"); +Clazz.defineMethod(c$, "readBasis", +function(){ +this.gaussianCount = 0; +this.shellCount = 0; +this.nBasisFunctions = 0; +var isD6F10 = (this.line.indexOf("cartesian") >= 0); +if (isD6F10) { +this.getDFMap("DC", J.adapter.readers.quantum.NWChemReader.$DC_LIST, 4, "DXX DYY DZZ DXY DXZ DYZ", 3); +this.getDFMap("FC", J.adapter.readers.quantum.NWChemReader.$FC_LIST, 6, "XXX YYY ZZZ XYY XXY XXZ XZZ YZZ YYZ XYZ", 3); +} else { +this.getDFMap("DS", J.adapter.readers.quantum.NWChemReader.$DS_LIST, 3, "d0 d1+ d1- d2+ d2-", 2); +this.getDFMap("FS", J.adapter.readers.quantum.NWChemReader.$FS_LIST, 5, "f0 f1+ f1- f2+ f2- f3+ f3-", 2); +}this.shells = new JU.Lst(); +var atomInfo = new java.util.Hashtable(); +var atomSym = null; +var atomData = null; +var shellData = null; +while (this.line != null) { +var nBlankLines = 0; +while (this.line.length < 3 || this.line.charAt(2) == ' ') { +shellData = new JU.Lst(); +this.rd(); +if (this.line.length < 3) nBlankLines++; +} +if (nBlankLines >= 2) break; +if (this.parseIntStr(this.line) == -2147483648) { +atomSym = this.getTokens()[0]; +if (atomSym.length > 2) atomSym = J.api.JmolAdapter.getElementSymbol(JU.Elements.elementNumberFromName(atomSym)); +atomData = new JU.Lst(); +atomInfo.put(atomSym, atomData); +this.rd(); +this.rd(); +continue; +}while (this.line != null && this.line.length > 3) { +var tokens = this.getTokens(); +var o = Clazz.newArray(-1, [tokens[1], Clazz.newFloatArray(-1, [this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3])])]); +shellData.addLast(o); +this.rd(); +} +atomData.addLast(shellData); +} +var nD = (isD6F10 ? 6 : 5); +var nF = (isD6F10 ? 10 : 7); +var gdata = new JU.Lst(); +for (var i = 0; i < this.atomTypes.size(); i++) { +atomData = atomInfo.get(this.atomTypes.get(i)); +var nShells = atomData.size(); +for (var ishell = 0; ishell < nShells; ishell++) { +this.shellCount++; +shellData = atomData.get(ishell); +var nGaussians = shellData.size(); +var type = shellData.get(0)[0]; +switch ((type.charAt(0)).charCodeAt(0)) { +case 83: +this.nBasisFunctions += 1; +break; +case 80: +this.nBasisFunctions += 3; +break; +case 68: +this.nBasisFunctions += nD; +break; +case 70: +this.nBasisFunctions += nF; +break; +} +var slater = Clazz.newIntArray (4, 0); +slater[0] = i + 1; +slater[1] = (isD6F10 ? J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(type) : J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagIDSpherical(type)); +slater[2] = this.gaussianCount + 1; +slater[3] = nGaussians; +this.shells.addLast(slater); +for (var ifunc = 0; ifunc < nGaussians; ifunc++) gdata.addLast(shellData.get(ifunc)[1]); + +this.gaussianCount += nGaussians; +} +} +this.gaussians = JU.AU.newFloat2(this.gaussianCount); +for (var i = 0; i < this.gaussianCount; i++) this.gaussians[i] = gdata.get(i); + +JU.Logger.info(this.gaussianCount + " Gaussians read"); +return true; +}); +Clazz.defineMethod(c$, "readMOs", +function(){ +var lines = new JU.Lst(); +this.htMOs.put(this.line, lines); +lines.addLast(this.line); +var nblank = 0; +while (nblank != 2 && this.rd() != null) { +lines.addLast(this.line); +if (this.line.length < 2) nblank++; + else nblank = 0; +} +return true; +}); +Clazz.defineMethod(c$, "checkMOs", +function(){ +if (this.shells == null) return; +for (var entry, $entry = this.htMOs.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +this.line = entry.getKey(); +this.alphaBeta = this.line.substring(0, this.line.indexOf("Final")).trim() + " "; +var moCount = 0; +if (!this.filterMO()) continue; +var list = entry.getValue(); +var n = list.size(); +JU.Logger.info(this.line); +for (var i = 3; i < n; i++) { +while (i < n && ((this.line = list.get(i)).length < 2 || this.line.charAt(1) != 'V')) i++; + +if (i == n) break; +this.line = this.line.$replace('=', ' '); +var tokens = this.getTokens(); +var occupancy = this.parseFloatStr(tokens[3]); +var energy = this.parseFloatStr(tokens[5]); +var symmetry = (tokens.length > 7 ? tokens[7] : null); +var mo = new java.util.Hashtable(); +mo.put("occupancy", Float.$valueOf(occupancy)); +mo.put("energy", Float.$valueOf(energy)); +if (symmetry != null) mo.put("symmetry", symmetry); +var coefs = null; +this.setMO(mo); +mo.put("type", this.alphaBeta + (++moCount)); +coefs = Clazz.newFloatArray (this.nBasisFunctions, 0); +mo.put("coefficients", coefs); +i += 3; +while ((this.line = list.get(++i)) != null && this.line.length > 3) { +tokens = this.getTokens(); +coefs[this.parseIntStr(tokens[0]) - 1] = this.parseFloatStr(tokens[1]); +var pt = Clazz.doubleToInt(tokens.length / 2); +if (pt == 5 || pt == 6) coefs[this.parseIntStr(tokens[pt]) - 1] = this.parseFloatStr(tokens[pt + 1]); +} +} +} +this.energyUnits = "a.u."; +this.setMOData(true); +this.htMOs.clear(); +}); +Clazz.overrideMethod(c$, "rd", +function(){ +this.RL(); +if (!this.purging && this.line != null && this.line.startsWith("--")) { +this.purging = true; +if (this.rd().indexOf("EAF") == 0) { +this.rd(); +this.discardLinesUntilStartsWith("--"); +this.purging = false; +return this.rd(); +}this.discardLinesUntilStartsWith("*"); +this.rd(); +this.purging = false; +this.RL(); +}return this.line; +}); +c$.$DS_LIST = "d2- d1- d0 d1+ d2+"; +c$.$FS_LIST = "f3- f2- f1- f0 f1+ f2+ f3+"; +c$.$DC_LIST = "DXX DXY DXZ DYY DYZ DZZ"; +c$.$FC_LIST = "XXX XXY XXZ XYY XYZ XZZ YYY YYZ YZZ ZZZ"; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/OrcaReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/OrcaReader.js new file mode 100755 index 000000000000..ce4ad80da433 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/OrcaReader.js @@ -0,0 +1,195 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MOReader"], "J.adapter.readers.quantum.OrcaReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "J.quantum.QS", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.chargeTag = null; +this.atomCount = 0; +this.xyzBohr = false; +this.moModelSet = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "OrcaReader", J.adapter.readers.quantum.MOReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.chargeTag = (this.checkAndRemoveFilterKey("CHARGE=LOW") ? "LOEW" : "MULL"); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.startsWith("! Bohrs")) { +this.xyzBohr = true; +return true; +}if (this.line.startsWith("* xyz") || this.line.startsWith("*xyz")) { +this.processInputFile(); +this.continuing = false; +return false; +}if (this.line.indexOf("CARTESIAN COORDINATES (ANG") >= 0) { +this.processAtoms(); +return true; +}if (this.line.indexOf("ATOMIC CHARGES") >= 0 && this.line.indexOf(this.chargeTag) >= 0) { +this.processAtomicCharges(); +return true; +}if (this.line.startsWith("Total Energy")) { +this.processEnergyLine(); +return true; +}if (this.line.indexOf("BASIS SET IN INPUT FORMAT") == 0) { +this.processBasis(); +}if (this.line.trim().equals("MOLECULAR ORBITALS")) { +this.processMolecularOrbitals(); +}return true; +}); +Clazz.defineMethod(c$, "processEnergyLine", +function(){ +var tokens = this.getTokens(); +this.asc.setAtomSetEnergy(tokens[3], Float.parseFloat(tokens[3])); +}); +Clazz.defineMethod(c$, "processInputFile", +function(){ +while (this.rd() != null) { +while (this.line.trim().length == 0 || this.line.startsWith("#")) { +this.rd(); +} +if (this.line.indexOf("*") >= 0) break; +var tokens = this.getTokens(); +var a = this.addAtomXYZSymName(tokens, 1, tokens[0], null); +if (this.xyzBohr) a.scale(0.5291772); +} +}); +Clazz.defineMethod(c$, "processAtoms", +function(){ +this.modelNumber++; +if (!this.doGetModel(this.modelNumber, null)) return; +this.asc.newAtomSet(); +this.baseAtomIndex = this.asc.ac; +this.rd(); +while (this.rd() != null) { +var tokens = this.getTokens(); +if (tokens.length != 4) break; +this.addAtomXYZSymName(tokens, 1, tokens[0], null); +} +if (this.baseAtomIndex == 0) this.atomCount = this.asc.ac; +}); +Clazz.defineMethod(c$, "processAtomicCharges", +function(){ +this.rd(); +for (var i = 0; i < this.atomCount; i++) { +this.rd(); +this.asc.atoms[i + this.baseAtomIndex].partialCharge = Float.parseFloat(this.line.substring(this.line.indexOf(":") + 1)); +} +}); +Clazz.defineMethod(c$, "processBasis", +function(){ +if (this.shells != null) return; +this.shells = new JU.Lst(); +var gdata = new JU.Lst(); +var doSphericalF = true; +var doSphericalD = true; +this.calculationType = "5D7F"; +var basisLines = new java.util.Hashtable(); +this.rd(); +while (this.discardLinesUntilContains2("#", "-----").indexOf("#") >= 0) { +var element = this.line.substring(this.line.indexOf(":") + 1).trim(); +var lines = new JU.Lst(); +basisLines.put(element, lines); +this.rd(); +while (this.rd().indexOf("end;") < 0) { +if (this.line.length > 10) this.line = this.line.substring(4); +lines.addLast(this.getTokens()); +} +} +for (var ac = 0; ac < this.atomCount; ac++) { +var lines = basisLines.get(this.asc.atoms[ac].elementSymbol); +for (var j = 0; j < lines.size(); ) { +var tokens = lines.get(j++); +this.shellCount++; +var slater = Clazz.newIntArray (4, 0); +slater[0] = ac + 1; +var oType = tokens[0]; +if (doSphericalF && oType.indexOf("F") >= 0 || doSphericalD && oType.indexOf("D") >= 0) slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagIDSpherical(oType); + else slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(oType); +var nGaussians = this.parseIntStr(tokens[1]); +slater[2] = this.gaussianCount + 1; +slater[3] = nGaussians; +if (this.debugging) JU.Logger.debug("Slater " + this.shells.size() + " " + JU.Escape.eAI(slater)); +this.shells.addLast(slater); +this.gaussianCount += nGaussians; +for (var i = 0; i < nGaussians; i++) { +tokens = lines.get(j++); +if (this.debugging) JU.Logger.debug("Gaussians " + (i + 1) + " " + JU.Escape.eAS(tokens, true)); +gdata.addLast(tokens); +} +} +} +this.gaussians = JU.AU.newFloat2(this.gaussianCount); +for (var i = 0; i < this.gaussianCount; i++) { +var tokens = gdata.get(i); +this.gaussians[i] = Clazz.newFloatArray (tokens.length, 0); +for (var j = 0; j < tokens.length; j++) this.gaussians[i][j] = this.parseFloatStr(tokens[j]); + +} +JU.Logger.info(this.shellCount + " slater shells read"); +JU.Logger.info(this.gaussianCount + " gaussian primitives read"); +}); +Clazz.defineMethod(c$, "processMolecularOrbitals", +function(){ +if (this.shells == null) return; +var mos = JU.AU.createArrayOfHashtable(6); +var data = JU.AU.createArrayOfArrayList(6); +var nThisLine = 0; +this.rd(); +var labels = new JU.Lst(); +while (this.rd() != null && this.line.indexOf("----") < 0) { +if (this.line.length == 0) continue; +var tokens; +if (this.line.startsWith(" ")) { +this.addMODataOR(nThisLine, labels, data, mos); +labels.clear(); +this.rd(); +tokens = this.getTokens(); +nThisLine = tokens.length; +for (var i = 0; i < nThisLine; i++) { +mos[i] = new java.util.Hashtable(); +data[i] = new JU.Lst(); +mos[i].put("energy", Float.$valueOf(tokens[i])); +} +this.rd(); +tokens = this.getTokens(); +for (var i = 0; i < nThisLine; i++) { +mos[i].put("occupancy", Float.$valueOf(tokens[i])); +} +this.rd(); +continue; +}try { +tokens = this.getTokens(); +var type = tokens[tokens.length - nThisLine - 1].substring(1).toUpperCase(); +labels.addLast(type); +if (JU.PT.isDigit(type.charAt(0))) type = type.substring(1); +if (!J.quantum.QS.isQuantumBasisSupported(type.charAt(0)) && "XYZ".indexOf(type.charAt(0)) >= 0) type = (type.length == 2 ? "D" : "F") + type; +if (!J.quantum.QS.isQuantumBasisSupported(type.charAt(0))) continue; +tokens = J.adapter.smarter.AtomSetCollectionReader.getStrings(this.line.substring(this.line.length - 10 * nThisLine), nThisLine, 10); +for (var i = 0; i < nThisLine; i++) data[i].addLast(tokens[i]); + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Error reading Gaussian file Molecular Orbitals at line: " + this.line); +break; +} else { +throw e; +} +} +} +this.addMODataOR(nThisLine, labels, data, mos); +this.setMOData(this.moModelSet != this.asc.atomSetCount); +this.moModelSet = this.asc.atomSetCount; +}); +Clazz.defineMethod(c$, "addMODataOR", +function(nThisLine, labels, data, mos){ +if (labels.size() == 0) return; +for (var i = 0; i < labels.size(); i++) { +if (labels.get(i).equals("PZ")) { +for (var j = 0; j < nThisLine; j++) { +var d = data[j]; +var s = d.removeItemAt(i); +d.add(i + 2, s); +} +}} +this.addMOData(nThisLine, data, mos); +}, "~N,JU.Lst,~A,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/PsiReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/PsiReader.js new file mode 100755 index 000000000000..818f807adbb7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/PsiReader.js @@ -0,0 +1,202 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MOReader", "java.util.Hashtable", "JU.Lst"], "J.adapter.readers.quantum.PsiReader", ["JU.AU", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "J.api.JmolAdapter", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomNames = null; +this.shellsByUniqueAtom = null; +this.uniqueAtomMap = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "PsiReader", J.adapter.readers.quantum.MOReader); +Clazz.prepareFields (c$, function(){ +this.atomNames = new JU.Lst(); +this.shellsByUniqueAtom = new JU.Lst(); +this.uniqueAtomMap = new java.util.Hashtable(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf("-Geometry after Center-of-Mass shift and reorientation (a.u.):") >= 0) { +this.readAtoms(true); +this.doProcessLines = true; +return true; +}if (this.line.indexOf("-Unique atoms in the canonical coordinate system (a.u.):") >= 0) { +this.readUniqueAtoms(); +this.doProcessLines = true; +return true; +}if (!this.doProcessLines) return true; +if (this.line.indexOf("New Cartesian Geometry in a.u.") >= 0) { +this.readAtoms(false); +return true; +}if (this.line.startsWith(" label = ")) { +this.moData.put("calculationType", this.calculationType = this.line.substring(17).trim()); +return true; +}if (this.line.startsWith("molecular orbitals for ")) { +this.moData.put("energyUnits", ""); +return true; +}if (this.line.startsWith(" -BASIS SETS:")) { +this.readBasis(); +return true; +}if (this.line.indexOf("Molecular Orbital Coefficients") >= 0) { +if (this.filterMO()) this.readPsiMolecularOrbitals(); +return true; +}if (this.line.indexOf("SCF total energy =") >= 0) { +this.readSCFDone(); +return true; +}if (this.line.indexOf("Normal Modes") >= 0) { +this.readFrequencies(); +return true; +}return this.checkNboLine(); +}); +Clazz.defineMethod(c$, "readSCFDone", +function(){ +this.asc.setAtomSetName(this.line); +}); +Clazz.defineMethod(c$, "readAtoms", +function(isInitial){ +if (isInitial) { +this.asc.newAtomSet(); +this.asc.setAtomSetName(""); +this.discardLinesUntilContains("----"); +}var atomPt = 0; +while (this.rd() != null && this.line.length > 0) { +var tokens = this.getTokens(); +var atom = (isInitial ? this.asc.addNewAtom() : this.asc.atoms[atomPt++]); +if (isInitial) { +this.atomNames.addLast(tokens[0]); +if (tokens[0].length <= 2) atom.elementNumber = J.api.JmolAdapter.getElementNumber(tokens[0]); +} else { +atom.elementNumber = this.parseIntStr(tokens[0]); +}if (atom.elementNumber < 0) atom.elementNumber = 0; +this.setAtomCoordScaled(atom, tokens, 1, 0.5291772); +} +}, "~B"); +Clazz.defineMethod(c$, "readBasis", +function(){ +var gdata = new JU.Lst(); +this.gaussianCount = 0; +this.shellCount = 0; +var tokens; +var slater = null; +var slatersByUniqueAtom = null; +this.rd(); +while (this.rd() != null && this.line.startsWith(" -Basis set on")) { +slatersByUniqueAtom = new JU.Lst(); +var nGaussians = 0; +while (this.rd() != null && !this.line.startsWith(" )")) { +this.line = this.line.$replace('(', ' ').$replace(')', ' '); +tokens = this.getTokens(); +var ipt = 0; +switch (tokens.length) { +case 3: +if (slater != null) { +slatersByUniqueAtom.addLast(slater); +}ipt = 1; +slater = Clazz.newIntArray (3, 0); +slater[0] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(tokens[0]); +slater[1] = this.gaussianCount; +this.shellCount++; +break; +case 2: +break; +} +nGaussians++; +gdata.addLast( Clazz.newArray(-1, [tokens[ipt], tokens[ipt + 1]])); +slater[2] = nGaussians; +} +if (slater != null) { +slatersByUniqueAtom.addLast(slater); +}this.shellsByUniqueAtom.addLast(slatersByUniqueAtom); +this.gaussianCount += nGaussians; +this.rd(); +} +var garray = JU.AU.newFloat2(this.gaussianCount); +for (var i = 0; i < this.gaussianCount; i++) { +tokens = gdata.get(i); +garray[i] = Clazz.newFloatArray (tokens.length, 0); +for (var j = 0; j < tokens.length; j++) garray[i][j] = this.parseFloatStr(tokens[j]); + +} +this.moData.put("gaussians", garray); +if (this.debugging) { +JU.Logger.debug(this.shellCount + " slater shells read"); +JU.Logger.debug(this.gaussianCount + " gaussian primitives read"); +}}); +Clazz.defineMethod(c$, "readUniqueAtoms", +function(){ +var sdata = new JU.Lst(); +this.discardLinesUntilContains("----"); +var n = 0; +while (this.rd() != null && this.line.length > 0) { +var tokens = this.getTokens(); +this.uniqueAtomMap.put(tokens[0], Integer.$valueOf(n++)); +} +var ac = this.atomNames.size(); +for (var i = 0; i < ac; i++) { +var atomType = this.atomNames.get(i); +var iUnique = this.uniqueAtomMap.get(atomType).intValue(); +var slaters = this.shellsByUniqueAtom.get(iUnique); +if (slaters == null) { +JU.Logger.error("slater for atom " + i + " atomType " + atomType + " was not found in listing. Ignoring molecular orbitals"); +return; +}for (var j = 0; j < slaters.size(); j++) { +var slater = slaters.get(j); +sdata.addLast( Clazz.newIntArray(-1, [i + 1, slater[0], slater[1], slater[2]])); +} +} +this.moData.put("shells", sdata); +}); +Clazz.defineMethod(c$, "readPsiMolecularOrbitals", +function(){ +var mos = JU.AU.createArrayOfHashtable(5); +var data = JU.AU.createArrayOfArrayList(5); +var nThisLine = 0; +while (this.rd() != null && this.line.toUpperCase().indexOf("DENS") < 0) { +var tokens = this.getTokens(); +var ptData = (this.line.charAt(5) == ' ' ? 2 : 4); +if (this.line.indexOf(" ") == 0) { +this.addMOData(nThisLine, data, mos); +nThisLine = tokens.length; +tokens = JU.PT.getTokens(this.rd()); +for (var i = 0; i < nThisLine; i++) { +mos[i] = new java.util.Hashtable(); +data[i] = new JU.Lst(); +mos[i].put("symmetry", tokens[i]); +} +tokens = J.adapter.smarter.AtomSetCollectionReader.getStrings(this.rd().substring(21), nThisLine, 10); +for (var i = 0; i < nThisLine; i++) { +mos[i].put("energy", Float.$valueOf(tokens[i])); +} +continue; +}try { +for (var i = 0; i < nThisLine; i++) { +data[i].addLast(tokens[i + ptData]); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Error reading Psi3 file molecular orbitals at line: " + this.line); +break; +} else { +throw e; +} +} +} +this.addMOData(nThisLine, data, mos); +this.moData.put("mos", this.orbitals); +this.finalizeMOData(this.moData); +}); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +this.rd(); +var ac = this.asc.getLastAtomSetAtomCount(); +var tokens; +while (this.rd() != null && this.line.indexOf("Frequency") >= 0) { +tokens = this.getTokens(); +var iAtom0 = this.asc.ac; +var ignore = Clazz.newBooleanArray(1, false); +if (!this.doGetVibration(++this.vibrationNumber)) continue; +this.asc.cloneLastAtomSet(); +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, tokens[1], null); +this.readLines(2); +this.fillFrequencyData(iAtom0, ac, ac, ignore, true, 0, 0, null, 0, null); +this.rd(); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/QCJSONReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/QCJSONReader.js new file mode 100755 index 000000000000..e4046eb97fe1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/QCJSONReader.js @@ -0,0 +1,212 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MoldenReader"], "J.adapter.readers.quantum.QCJSONReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.SB", "J.api.JmolAdapter", "JU.Logger", "org.qcschema.QCSchemaUnits"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.job = null; +this.jobCount = 0; +this.modelCount = 0; +this.lastBasisID = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "QCJSONReader", J.adapter.readers.quantum.MoldenReader); +Clazz.defineMethod(c$, "initializeReader", +function(){ +Clazz.superCall(this, J.adapter.readers.quantum.QCJSONReader, "initializeReader", []); +var sb = new JU.SB(); +try { +while (this.rd() != null) sb.append(this.line); + +var json = this.vwr.parseJSONArray(sb.toString()); +JU.Logger.info(json.get(0).toString()); +this.jobCount = json.size() - 2; +for (var i = 0; i < this.jobCount; i++) this.processJob(json.get(i + 2)); + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +this.continuing = false; +}); +Clazz.defineMethod(c$, "processJob", +function(job){ +this.job = job; +this.readSteps(); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "readSteps", +function(){ +var steps = org.qcschema.QCSchemaUnits.getList(this.job, "steps"); +var nSteps = steps.size(); +for (var iStep = 0; iStep < nSteps; iStep++) { +if (!this.doGetModel(++this.modelCount, null)) { +if (!this.checkLastModel()) return; +continue; +}this.asc.newAtomSet(); +var step = steps.get(iStep); +var topology = J.adapter.readers.quantum.QCJSONReader.getMapSafely(step, "topology"); +var atoms = J.adapter.readers.quantum.QCJSONReader.getMapSafely(topology, "atoms"); +var symbols = org.qcschema.QCSchemaUnits.getStringArray(atoms, "symbol"); +var atomNumbers = org.qcschema.QCSchemaUnits.getIntArray(atoms, "atom_number"); +var atom_names = org.qcschema.QCSchemaUnits.getStringArray(atoms, "atom_names"); +var coords = org.qcschema.QCSchemaUnits.getDoubleArray(atoms, "coords"); +this.modelAtomCount = Clazz.doubleToInt(coords.length / 3); +var f = org.qcschema.QCSchemaUnits.getConversionFactor(atoms, "coords", "angstroms"); +var isFractional = (f == 0); +this.setFractionalCoordinates(isFractional); +if (isFractional) { +f = org.qcschema.QCSchemaUnits.getConversionFactor(atoms, "unit_cell", "angstroms"); +var cell = org.qcschema.QCSchemaUnits.getDoubleArray(atoms, "unit_cell"); +if (cell == null) { +JU.Logger.error("topology.unit_cell is missing even though atoms are listed as fractional"); +} else { +for (var i = 0; i < 6; i++) { +switch (i) { +case 3: +f = 1; +default: +this.setUnitCellItem(i, (cell[i] * f)); +break; +} +} +}}for (var i = 0, pt = 0; i < this.modelAtomCount; i++) { +var atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, (coords[pt++] * f), (coords[pt++] * f), (coords[pt++] * f)); +var sym = (symbols == null ? J.api.JmolAdapter.getElementSymbol(atomNumbers[i]) : symbols[i]); +atom.atomName = (atom_names == null ? sym : atom_names[i]); +atom.elementNumber = (atomNumbers == null ? J.api.JmolAdapter.getElementNumber(sym) : atomNumbers[i]); +} +if (this.doReadMolecularOrbitals) { +this.readMolecularOrbitalsQC(J.adapter.readers.quantum.QCJSONReader.getMapSafely(step, "molecular_orbitals")); +this.clearOrbitals(); +}this.applySymmetryAndSetTrajectory(); +if (this.loadVibrations) { +this.readFreqsAndModesQC(org.qcschema.QCSchemaUnits.getList(step, "vibrations")); +}} +}); +Clazz.defineMethod(c$, "readFreqsAndModesQC", +function(vibrations){ +if (vibrations != null) { +var n = vibrations.size(); +for (var i = 0; i < n; i++) { +if (!this.doGetVibration(++this.vibrationNumber)) continue; +var vib = vibrations.get(i); +var freq = org.qcschema.QCSchemaUnits.getDouble(vib, "frequency", "cm-1"); +var vectors = org.qcschema.QCSchemaUnits.getDoubleArray(vib, "vectors"); +if (i > 0) this.asc.cloneLastAtomSet(); +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, "" + freq, "cm-1"); +var i0 = this.asc.getLastAtomSetAtomIndex(); +for (var j = 0, pt = 0; j < this.modelAtomCount; j++) { +this.asc.addVibrationVector(j + i0, (vectors[pt++] * 0.5291772), (vectors[pt++] * 0.5291772), (vectors[pt++] * 0.5291772)); +} +} +}return true; +}, "java.util.ArrayList"); +Clazz.defineMethod(c$, "readMolecularOrbitalsQC", +function(molecular_orbitals){ +if (molecular_orbitals == null) return false; +var moBasisID = molecular_orbitals.get("basis_id").toString(); +if (!this.readBasisQC(moBasisID)) return false; +var isNormalized = molecular_orbitals.get("__jmol_normalized"); +if (isNormalized != null && isNormalized.booleanValue()) this.moData.put("isNormalized", isNormalized); +this.calculationType = molecular_orbitals.get("__jmol_calculation_type"); +if (this.calculationType == null) this.calculationType = "?"; +this.moData.put("calculationType", this.calculationType); +var mos = org.qcschema.QCSchemaUnits.getList(molecular_orbitals, "orbitals"); +var n = mos.size(); +for (var i = 0; i < n; i++) { +var thisMO = mos.get(i); +var energy = org.qcschema.QCSchemaUnits.getDouble(thisMO, "energy", "ev"); +var occupancy = org.qcschema.QCSchemaUnits.getDouble(thisMO, "occupancy", null); +var symmetry = thisMO.get("symmetry"); +var spin = thisMO.get("type"); +if (spin != null) { +if (spin.indexOf("beta") >= 0) this.alphaBeta = "beta"; + else if (spin.indexOf("alpha") >= 0) this.alphaBeta = "alpha"; +}var coefs = this.toFloatArray(org.qcschema.QCSchemaUnits.getDoubleArray(thisMO, "coefficients")); +this.line = "" + symmetry; +if (this.filterMO()) { +var mo = new java.util.Hashtable(); +mo.put("coefficients", coefs); +if (Double.isNaN(energy)) { +this.haveEnergy = false; +} else { +mo.put("energy", Float.$valueOf(energy)); +}if (!Double.isNaN(occupancy)) mo.put("occupancy", Float.$valueOf(occupancy)); +if (symmetry != null) mo.put("symmetry", symmetry); +if (this.alphaBeta.length > 0) mo.put("type", this.alphaBeta); +this.setMO(mo); +if (this.debugging) { +JU.Logger.debug(coefs.length + " coefficients in MO " + this.orbitals.size()); +}}} +if (this.debugging) JU.Logger.debug("read " + this.orbitals.size() + " MOs"); +var units = org.qcschema.QCSchemaUnits.getList(molecular_orbitals, "orbitals_energy_units"); +var sunits = (units == null ? null : units.get(0).toString()); +this.setMOs(sunits == null || sunits.equals("?") ? "?" : sunits); +if (this.haveEnergy && this.doSort) this.sortMOs(); +return false; +}, "java.util.Map"); +Clazz.defineMethod(c$, "toFloatArray", +function(da){ +var fa = Clazz.newFloatArray (da.length, 0); +for (var j = da.length; --j >= 0; ) fa[j] = da[j]; + +return fa; +}, "~A"); +Clazz.defineMethod(c$, "readBasisQC", +function(moBasisID){ +var moBasisData = J.adapter.readers.quantum.QCJSONReader.getMapSafely(this.job, "mo_bases"); +var moBasis = J.adapter.readers.quantum.QCJSONReader.getMapSafely(moBasisData, moBasisID); +if (moBasis == null) { +JU.Logger.error("No job.mo_bases entry for " + moBasisID); +return false; +}if (moBasisID === this.lastBasisID) return true; +this.lastBasisID = moBasisID; +var listG = org.qcschema.QCSchemaUnits.getList(moBasis, "gaussians"); +var listS = org.qcschema.QCSchemaUnits.getList(moBasis, "shells"); +if (listG == null && listS == null) { +listG = listS = org.qcschema.QCSchemaUnits.getList(moBasis, "slaters"); +}if ((listG == null) != (listS == null)) { +JU.Logger.error("gaussians/shells or slaters missing"); +return false; +}if (listG === listS) { +this.readSlaterBasisQC(listS); +} else { +this.readGaussianBasisQC(listG, listS); +}return true; +}, "~S"); +Clazz.defineMethod(c$, "readSlaterBasisQC", +function(listS){ +this.nCoef = listS.size(); +for (var i = 0; i < this.nCoef; i++) { +var a = org.qcschema.QCSchemaUnits.getDoubleArray(listS.get(i), null); +this.addSlater(Clazz.doubleToInt(a[0]), Clazz.doubleToInt(a[1]), Clazz.doubleToInt(a[2]), Clazz.doubleToInt(a[3]), Clazz.doubleToInt(a[4]), a[5], a[6]); +} +this.scaleSlaters = false; +this.setSlaters(false); +return true; +}, "java.util.ArrayList"); +Clazz.defineMethod(c$, "readGaussianBasisQC", +function(listG, listS){ +this.shells = new JU.Lst(); +for (var i = 0; i < listS.size(); i++) this.shells.addLast(org.qcschema.QCSchemaUnits.getIntArray(listS.get(i), null)); + +var gaussianPtr = listG.size(); +var garray = JU.AU.newFloat2(gaussianPtr); +for (var i = 0; i < gaussianPtr; i++) garray[i] = this.toFloatArray(org.qcschema.QCSchemaUnits.getDoubleArray(listG.get(i), null)); + +this.moData.put("shells", this.shells); +this.moData.put("gaussians", garray); +JU.Logger.info(this.shells.size() + " slater shells read"); +JU.Logger.info(garray.length + " gaussian primitives read"); +this.asc.setCurrentModelInfo("moData", this.moData); +return false; +}, "java.util.ArrayList,java.util.ArrayList"); +c$.getMapSafely = Clazz.defineMethod(c$, "getMapSafely", +function(map, key){ +return (map == null ? null : map.get(key)); +}, "java.util.Map,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/QchemReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/QchemReader.js new file mode 100755 index 000000000000..ebb3ac1dafcb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/QchemReader.js @@ -0,0 +1,316 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MOReader"], "J.adapter.readers.quantum.QchemReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "J.api.JmolAdapter", "J.quantum.QS", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.calculationNumber = 1; +this.isFirstJob = true; +this.alphas = null; +this.betas = null; +this.nBasis = 0; +this.dFixed = false; +this.fFixed = false; +this.dList = ""; +this.fList = ""; +this.dSpherical = false; +this.fSpherical = false; +if (!Clazz.isClassDefined("J.adapter.readers.quantum.QchemReader.MOInfo")) { +J.adapter.readers.quantum.QchemReader.$QchemReader$MOInfo$ (); +} +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "QchemReader", J.adapter.readers.quantum.MOReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.energyUnits = "au"; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf("Standard Nuclear Orientation") >= 0) { +this.readAtoms(); +this.moData = null; +return true; +}if (this.line.indexOf("Total energy") >= 0 || this.line.indexOf("total energy") >= 0 || this.line.indexOf("Energy is") >= 0) { +if (this.line.indexOf("Excitation") == -1) this.readEnergy(); +return true; +}if (this.line.indexOf("Requested basis set is") >= 0) { +this.readCalculationType(); +return true; +}if (this.line.indexOf("VIBRATIONAL FREQUENCIES") >= 0) { +this.readFrequencies(); +return true; +}if (this.line.indexOf("Mulliken Net Atomic Charges") >= 0) { +this.readPartialCharges(); +return true; +}if (this.line.startsWith("Job ") || this.line.startsWith("Running Job")) { +if (this.isFirstJob && this.line.startsWith("Running")) this.calculationNumber = 0; +this.calculationNumber++; +this.isFirstJob = false; +this.moData = null; +return true; +}if (this.line.indexOf("Basis set in general basis input format") >= 0) { +if (this.moData == null) { +this.readBasis(); +}return true; +}if (this.moData == null) return true; +if (this.line.indexOf("Orbital Energies (a.u.) and Symmetries") >= 0) { +this.readESym(true); +return true; +}if (this.line.indexOf("Orbital Energies (a.u.)") >= 0) { +this.readESym(false); +return true; +}if (this.line.indexOf("MOLECULAR ORBITAL COEFFICIENTS") >= 0) { +if (this.filterMO()) this.readQchemMolecularOrbitals(); +return true; +}return this.checkNboLine(); +}); +Clazz.defineMethod(c$, "readCalculationType", +function(){ +this.calculationType = this.line.substring(this.line.indexOf("set is") + 6).trim(); +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.asc.newAtomSet(); +this.setMOData(true); +this.dFixed = this.fFixed = false; +this.readLines(2); +var tokens; +while (this.rd() != null && !this.line.startsWith(" --")) { +tokens = this.getTokens(); +if (tokens.length < 5) continue; +var symbol = tokens[1]; +if (J.api.JmolAdapter.getElementNumber(symbol) > 0) this.addAtomXYZSymName(tokens, 2, symbol, null); +} +this.asc.setAtomSetModelProperty(".PATH", "Job " + this.calculationNumber); +}); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +while (this.rd() != null && this.line.indexOf("STANDARD") < 0) { +if (!this.line.startsWith(" Frequency:")) this.discardLinesUntilStartsWith(" Frequency:"); +var frequencies = this.getTokens(); +var frequencyCount = frequencies.length - 1; +var ignore = Clazz.newBooleanArray(frequencyCount, false); +var ac = this.asc.getLastAtomSetAtomCount(); +var iAtom0 = this.asc.ac; +for (var i = 0; i < frequencyCount; ++i) { +ignore[i] = !this.doGetVibration(++this.vibrationNumber); +if (ignore[i]) continue; +this.asc.cloneLastAtomSet(); +this.asc.setAtomSetFrequency(this.vibrationNumber, "Job " + this.calculationNumber, null, frequencies[i + 1], null); +} +this.discardLinesUntilStartsWith(" X"); +this.fillFrequencyData(iAtom0, ac, ac, ignore, true, 0, 0, null, 0, null); +this.discardLinesUntilBlank(); +} +}); +Clazz.defineMethod(c$, "readPartialCharges", +function(){ +this.readLines(3); +var atoms = this.asc.atoms; +var ac = this.asc.getLastAtomSetAtomCount(); +for (var i = 0; i < ac && this.rd() != null; ++i) atoms[i].partialCharge = this.parseFloatStr(this.getTokens()[2]); + +}); +Clazz.defineMethod(c$, "readEnergy", +function(){ +var ac = this.asc.getLastAtomSetAtomCount(); +var tokens = this.getTokens(); +var energyKey = "E(" + tokens[0] + ")"; +var energyString = tokens[tokens.length - 1]; +this.asc.setAtomSetEnergy(energyString, this.parseFloatStr(energyString)); +this.asc.setAtomSetName(energyKey + " = " + energyString); +this.asc.setModelInfoForSet("name", energyKey + " " + energyString, ac); +}); +Clazz.defineMethod(c$, "readBasis", +function(){ +this.moData = new java.util.Hashtable(); +var ac = 1; +var shellCount = 0; +var gaussianCount = 0; +this.shells = new JU.Lst(); +var gdata = new JU.Lst(); +var tokens; +this.discardLinesUntilStartsWith("$basis"); +this.rd(); +while (this.rd() != null) { +if (this.line.startsWith("****")) { +ac++; +if (this.rd() != null && this.line.startsWith("$end")) break; +continue; +}shellCount++; +var slater = Clazz.newIntArray (4, 0); +tokens = this.getTokens(); +slater[0] = ac; +slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(tokens[0]); +slater[2] = gaussianCount + 1; +var nGaussians = this.parseIntStr(tokens[1]); +slater[3] = nGaussians; +this.shells.addLast(slater); +gaussianCount += nGaussians; +for (var i = 0; i < nGaussians; i++) { +gdata.addLast(JU.PT.getTokens(this.rd())); +} +} +this.gaussians = JU.AU.newFloat2(gaussianCount); +for (var i = 0; i < gaussianCount; i++) { +tokens = gdata.get(i); +this.gaussians[i] = Clazz.newFloatArray (tokens.length, 0); +for (var j = 0; j < tokens.length; j++) this.gaussians[i][j] = this.parseFloatStr(tokens[j]); + +} +if (this.debugging) { +JU.Logger.debug(shellCount + " slater shells read"); +JU.Logger.debug(gaussianCount + " gaussian primitives read"); +}this.discardLinesUntilStartsWith(" There are"); +tokens = this.getTokens(); +this.nBasis = this.parseIntStr(tokens[5]); +}); +Clazz.defineMethod(c$, "readESym", +function(haveSym){ +this.alphas = new Array(this.nBasis); +this.betas = new Array(this.nBasis); +var moInfos; +var ne = 0; +var readBetas = false; +this.discardLinesUntilStartsWith(" Alpha"); +var tokens = this.getTokens(); +moInfos = this.alphas; +for (var e = 0; e < 2; e++) { +var nMO = 0; +while (this.rd() != null) { +if (this.line.startsWith(" -- ")) { +ne = 0; +if (this.line.indexOf("Vacant") < 0) { +if (this.line.indexOf("Occupied") > 0) ne = 1; +}this.rd(); +}if (this.line.startsWith(" -------")) { +e = 2; +break; +}var nOrbs = this.getTokens().length; +if (nOrbs == 0 || this.line.startsWith(" Warning")) { +this.discardLinesUntilStartsWith(" Beta"); +readBetas = true; +moInfos = this.betas; +break; +}if (haveSym) tokens = JU.PT.getTokens(this.rd()); +for (var i = 0, j = 0; i < nOrbs; i++, j += 2) { +var info = Clazz.innerTypeInstance(J.adapter.readers.quantum.QchemReader.MOInfo, this, null); +info.ne = ne; +if (haveSym) info.moSymmetry = tokens[j] + tokens[j + 1] + " "; +moInfos[nMO] = info; +nMO++; +} +} +} +if (!readBetas) this.betas = this.alphas; +}, "~B"); +Clazz.defineMethod(c$, "readQchemMolecularOrbitals", +function(){ +var orbitalType = this.getTokens()[0]; +this.alphaBeta = "A"; +this.readMOs(orbitalType.equals("RESTRICTED"), this.alphas); +if (orbitalType.equals("ALPHA")) { +this.discardLinesUntilContains("BETA"); +this.alphaBeta = "B"; +this.readMOs(false, this.betas); +}var isOK = true; +if (this.dList.length > 0) { +if (this.dSpherical) isOK = this.getDFMap("DS", this.dList, 3, J.adapter.readers.quantum.QchemReader.$DS_LIST, 2); + else isOK = this.getDFMap("DC", this.dList, 4, J.adapter.readers.quantum.QchemReader.$DC_LIST, 3); +if (!isOK) { +JU.Logger.error("atomic orbital order is unrecognized -- skipping reading of MOs. dList=" + this.dList); +this.shells = null; +}}if (this.fList.length > 0) { +if (this.fSpherical) isOK = this.getDFMap("FS", this.fList, 5, J.adapter.readers.quantum.QchemReader.$FS_LIST, 2); + else isOK = this.getDFMap("FC", this.fList, 6, J.adapter.readers.quantum.QchemReader.$FC_LIST, 3); +if (!isOK) { +JU.Logger.error("atomic orbital order is unrecognized -- skipping reading of MOs. fList=" + this.fList); +this.shells = null; +}}this.setMOData(this.shells == null); +this.shells = null; +}); +Clazz.defineMethod(c$, "readMOs", +function(restricted, moInfos){ +var mos = JU.AU.createArrayOfHashtable(6); +var mocoef = JU.AU.newFloat2(6); +var moid = Clazz.newIntArray (6, 0); +var tokens; +var energy; +var nMOs = 0; +while (this.rd().length > 2) { +tokens = this.getTokens(); +var nMO = tokens.length; +energy = JU.PT.getTokens(this.rd().substring(13)); +for (var i = 0; i < nMO; i++) { +moid[i] = this.parseIntStr(tokens[i]) - 1; +mocoef[i] = Clazz.newFloatArray (this.nBasis, 0); +mos[i] = new java.util.Hashtable(); +} +for (var i = 0, pt = 0; i < this.nBasis; i++) { +tokens = JU.PT.getTokens(this.rd()); +var s = this.line.substring(12, 17).trim(); +var ch = s.charAt(0); +switch ((ch).charCodeAt(0)) { +case 100: +s = s.substring(s.length - 3).toUpperCase(); +if (s.startsWith("D ")) { +if (!this.dFixed) this.fixSlaterTypes(4, 3); +s = "D" + s.charAt(2); +this.dSpherical = true; +}if (this.dList.indexOf(s) < 0) this.dList += s + " "; +this.dFixed = true; +break; +case 102: +s = s.substring(s.length - 3).toUpperCase(); +if (s.startsWith("F ")) { +if (!this.fFixed) this.fixSlaterTypes(6, 5); +s = "F" + s.charAt(2); +this.fSpherical = true; +}if (this.fList.indexOf(s) < 0) this.fList += s + " "; +this.fFixed = true; +break; +default: +if (!J.quantum.QS.isQuantumBasisSupported(ch)) continue; +break; +} +for (var j = tokens.length - nMO, k = 0; k < nMO; j++, k++) mocoef[k][pt] = this.parseFloatStr(tokens[j]); + +pt++; +} +for (var i = 0; i < nMO; i++) { +var moInfo = moInfos[moid[i]]; +mos[i].put("energy", Float.$valueOf(energy[i])); +mos[i].put("coefficients", mocoef[i]); +var label = this.alphaBeta; +var ne = moInfo.ne; +if (restricted) ne = this.alphas[moid[i]].ne + this.betas[moid[i]].ne; +mos[i].put("occupancy", Float.$valueOf(ne)); +switch (ne) { +case 2: +label = "AB"; +break; +case 1: +break; +case 0: +if (restricted) label = "V"; + else label = "V" + label; +break; +} +mos[i].put("symmetry", moInfo.moSymmetry + label + "(" + (moid[i] + 1) + ")"); +this.orbitals.addLast(mos[i]); +} +nMOs += nMO; +} +return nMOs; +}, "~B,~A"); +c$.$QchemReader$MOInfo$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.ne = 0; +this.moSymmetry = ""; +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum.QchemReader, "MOInfo", null); +/*eoif4*/})(); +}; +c$.$DC_LIST = "DXX DYY DZZ DXY DXZ DYZ"; +c$.$DS_LIST = "D3 D4 D2 D5 D1"; +c$.$FC_LIST = "XXX YYY ZZZ XYY XXY XXZ XZZ YZZ YYZ XYZ"; +c$.$FS_LIST = "F4 F5 F3 F6 F2 F7 F1"; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/SlaterReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/SlaterReader.js new file mode 100755 index 000000000000..9745f5b3fdc1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/SlaterReader.js @@ -0,0 +1,124 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MOReader"], "J.adapter.readers.quantum.SlaterReader", ["java.util.Arrays", "JU.Lst", "J.quantum.SlaterData", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.scaleSlaters = true; +if (!Clazz.isClassDefined("J.adapter.readers.quantum.SlaterReader.SlaterSorter")) { +J.adapter.readers.quantum.SlaterReader.$SlaterReader$SlaterSorter$ (); +} +if (!Clazz.isClassDefined("J.adapter.readers.quantum.SlaterReader.OrbitalSorter")) { +J.adapter.readers.quantum.SlaterReader.$SlaterReader$OrbitalSorter$ (); +} +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum, "SlaterReader", J.adapter.readers.quantum.MOReader); +Clazz.defineMethod(c$, "addSlater", +function(iAtom, a, b, c, d, zeta, coef){ +var sd = new J.quantum.SlaterData(iAtom, a, b, c, d, zeta, coef); +this.getSlaters().addLast(sd); +return sd; +}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getSlaters", +function(){ +return (this.slaters == null ? this.slaters = new JU.Lst() : this.slaters); +}); +Clazz.defineMethod(c$, "addSlater", +function(sd, n){ +sd.index = n; +this.getSlaters().addLast(sd); +}, "J.quantum.SlaterData,~N"); +Clazz.defineMethod(c$, "setSlaters", +function(doSort){ +if (this.slaters == null || this.slaters.size() == 0) return; +if (this.slaterArray == null) { +var nSlaters = this.slaters.size(); +this.slaterArray = new Array(nSlaters); +for (var i = 0; i < this.slaterArray.length; i++) this.slaterArray[i] = this.slaters.get(i); + +}if (this.scaleSlaters) for (var i = 0; i < this.slaterArray.length; i++) { +var sd = this.slaterArray[i]; +sd.coef *= this.scaleSlater(sd.x, sd.y, sd.z, sd.r, sd.zeta); +if (this.debugging) { +JU.Logger.debug("SlaterReader " + i + ": " + sd.atomNo + " " + sd.x + " " + sd.y + " " + sd.z + " " + sd.r + " " + sd.zeta + " " + sd.coef); +}} +if (doSort) { +java.util.Arrays.sort(this.slaterArray, Clazz.innerTypeInstance(J.adapter.readers.quantum.SlaterReader.SlaterSorter, this, null)); +var pointers = Clazz.newIntArray (this.slaterArray.length, 0); +for (var i = 0; i < this.slaterArray.length; i++) pointers[i] = this.slaterArray[i].index; + +this.sortOrbitalCoefficients(pointers); +}this.moData.put("slaters", this.slaterArray); +this.asc.setCurrentModelInfo("moData", this.moData); +}, "~B"); +Clazz.defineMethod(c$, "setMOs", +function(units){ +this.moData.put("mos", this.orbitals); +this.moData.put("energyUnits", units); +this.finalizeMOData(this.moData); +}, "~S"); +Clazz.defineMethod(c$, "sortOrbitalCoefficients", +function(pointers){ +for (var i = this.orbitals.size(); --i >= 0; ) { +var mo = this.orbitals.get(i); +var coefs = mo.get("coefficients"); +var sorted = Clazz.newFloatArray (pointers.length, 0); +for (var j = 0; j < pointers.length; j++) { +var k = pointers[j]; +if (k < coefs.length) sorted[j] = coefs[k]; +} +mo.put("coefficients", sorted); +} +}, "~A"); +Clazz.defineMethod(c$, "sortOrbitals", +function(){ +var array = this.orbitals.toArray( new Array(0)); +java.util.Arrays.sort(array, Clazz.innerTypeInstance(J.adapter.readers.quantum.SlaterReader.OrbitalSorter, this, null)); +this.orbitals.clear(); +for (var i = 0; i < array.length; i++) this.orbitals.addLast(array[i]); + +}); +Clazz.defineMethod(c$, "scaleSlater", +function(ex, ey, ez, er, zeta){ +var el = ex + ey + ez; +switch (el) { +case 0: +case 1: +ez = -1; +break; +} +return J.adapter.readers.quantum.SlaterReader.getSlaterConstCartesian(el + er + 1, Math.abs(zeta), el, ex, ey, ez); +}, "~N,~N,~N,~N,~N"); +c$.fact = Clazz.defineMethod(c$, "fact", +function(f, zeta, n){ +return Math.pow(2 * zeta, n + 0.5) * Math.sqrt(f * 0.07957747154594767 / J.adapter.readers.quantum.SlaterReader.fact_2n[n]); +}, "~N,~N,~N"); +c$.getSlaterConstCartesian = Clazz.defineMethod(c$, "getSlaterConstCartesian", +function(n, zeta, el, ex, ey, ez){ +var f = ez < 0 ? J.adapter.readers.quantum.SlaterReader.dfact2[el + 1] : J.adapter.readers.quantum.SlaterReader.dfact2[el + 1] / J.adapter.readers.quantum.SlaterReader.dfact2[ex] / J.adapter.readers.quantum.SlaterReader.dfact2[ey] / J.adapter.readers.quantum.SlaterReader.dfact2[ez]; +return J.adapter.readers.quantum.SlaterReader.fact(f, zeta, n); +}, "~N,~N,~N,~N,~N,~N"); +c$.$SlaterReader$SlaterSorter$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum.SlaterReader, "SlaterSorter", null, java.util.Comparator); +Clazz.overrideMethod(c$, "compare", +function(sd1, sd2){ +return (sd1.atomNo < sd2.atomNo ? -1 : sd1.atomNo > sd2.atomNo ? 1 : 0); +}, "J.quantum.SlaterData,J.quantum.SlaterData"); +/*eoif4*/})(); +}; +c$.$SlaterReader$OrbitalSorter$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +Clazz.instantialize(this, arguments);}, J.adapter.readers.quantum.SlaterReader, "OrbitalSorter", null, java.util.Comparator); +Clazz.overrideMethod(c$, "compare", +function(mo1, mo2){ +var e1 = (mo1.get("energy")).floatValue(); +var e2 = (mo2.get("energy")).floatValue(); +return (e1 < e2 ? -1 : e2 < e1 ? 1 : 0); +}, "java.util.Map,java.util.Map"); +/*eoif4*/})(); +}; +c$.fact_2n = Clazz.newDoubleArray(-1, [1, 2, 24, 720, 40320, 3628800, 479001600]); +c$.dfact2 = Clazz.newDoubleArray(-1, [1, 1, 3, 15, 105]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/WebMOReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/WebMOReader.js new file mode 100755 index 000000000000..3c1ac80f3c67 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/quantum/WebMOReader.js @@ -0,0 +1,189 @@ +Clazz.declarePackage("J.adapter.readers.quantum"); +Clazz.load(["J.adapter.readers.quantum.MopacSlaterReader"], "J.adapter.readers.quantum.WebMOReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "J.adapter.smarter.Bond", "JU.Logger"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.quantum, "WebMOReader", J.adapter.readers.quantum.MopacSlaterReader); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.equals("[HEADER]")) { +this.readHeader(); +return true; +}if (this.line.equals("[ATOMS]")) { +this.readAtoms(); +return false; +}if (this.line.equals("[BONDS]")) { +this.readBonds(); +return false; +}if (!this.doReadMolecularOrbitals) return true; +if (this.line.equals("[AO_ORDER]")) { +this.readAtomicOrbitalOrder(); +return false; +}if (this.line.equals("[GTO]")) { +this.readGaussianBasis(); +return false; +}if (this.line.equals("[STO]")) { +this.readSlaterBasis(); +return false; +}if (this.line.indexOf("[MO") == 0) { +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.readMolecularOrbital(); +return false; +}return true; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderASCR(); +if (this.nOrbitals > 0) this.setMOs("eV"); +if (this.debugging) JU.Logger.debug(this.orbitals.size() + " molecular orbitals read"); +}); +Clazz.defineMethod(c$, "readHeader", +function(){ +this.moData.put("isNormalized", Boolean.TRUE); +while (this.rd() != null && this.line.length > 0) { +this.moData.put("calculationType", "?"); +var tokens = this.getTokens(); +tokens[0] = tokens[0].substring(0, 1).toLowerCase() + tokens[0].substring(1, tokens[0].length); +var str = ""; +for (var i = 1; i < tokens.length; i++) str += (i == 1 ? "" : " ") + tokens[i].toLowerCase(); + +this.moData.put(tokens[0], str); +} +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +while (this.getLine()) { +var tokens = this.getTokens(); +if (tokens.length == 0) continue; +var sym = tokens[0]; +var atNo = this.parseIntStr(sym); +this.setAtomCoordScaled(null, tokens, 1, 0.5291772).elementSymbol = (atNo == -2147483648 ? sym : J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(atNo)); +} +}); +Clazz.defineMethod(c$, "readBonds", +function(){ +while (this.getLine()) { +var tokens = this.getTokens(); +if (tokens.length == 0) continue; +var atomIndex1 = this.parseIntStr(tokens[0]); +var atomIndex2 = this.parseIntStr(tokens[1]); +var order = this.parseIntStr(tokens[2]); +this.asc.addBond( new J.adapter.smarter.Bond(atomIndex1 - 1, atomIndex2 - 1, order)); +} +}); +Clazz.defineMethod(c$, "readAtomicOrbitalOrder", +function(){ +while (this.getLine()) { +var tokens = this.getTokens(); +if (tokens.length == 0) continue; +var data = this.line.substring(9).trim().toLowerCase(); +var isOK = false; +switch (tokens.length - 1) { +case 3: +case 4: +isOK = true; +break; +case 5: +isOK = (tokens[0].equals("DOrbitals") && this.getDFMap("DS", data, 3, J.adapter.readers.quantum.WebMOReader.$DS_LIST, 99)); +break; +case 6: +isOK = (tokens[0].equals("DOrbitals") && this.getDFMap("DC", data, 4, J.adapter.readers.quantum.WebMOReader.$DC_LIST, 2)); +break; +case 7: +isOK = (tokens[0].equals("FOrbitals") && this.getDFMap("FS", data, 5, J.adapter.readers.quantum.WebMOReader.$FS_LIST, 99)); +break; +case 10: +isOK = (tokens[0].equals("FOrbitals") && this.getDFMap("FC", data, 6, J.adapter.readers.quantum.WebMOReader.$FC_LIST, 3)); +break; +} +if (!isOK) { +JU.Logger.error("atomic orbital order is unrecognized -- skipping reading of MOs due to line: " + this.line); +this.orbitals = null; +}} +}); +Clazz.defineMethod(c$, "getLine", +function(){ +return (this.rd() != null && (this.line.length == 0 || this.line.charAt(0) != '[')); +}); +Clazz.defineMethod(c$, "readGaussianBasis", +function(){ +var sdata = new JU.Lst(); +var gdata = new JU.Lst(); +var atomNo = 1; +var gaussianPtr = 0; +while (this.getLine()) { +var tokens = this.getTokens(); +if (tokens.length == 0) continue; +if (tokens.length != 1) throw new Exception("Error reading GTOs: missing atom index"); +var slater = Clazz.newIntArray (4, 0); +atomNo = this.parseIntStr(tokens[0]); +tokens = JU.PT.getTokens(this.rd()); +var nGaussians = this.parseIntStr(tokens[1]); +slater[0] = atomNo; +slater[1] = J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(tokens[0]); +slater[2] = gaussianPtr + 1; +slater[3] = nGaussians; +for (var i = 0; i < nGaussians; i++) { +var strData = JU.PT.getTokens(this.rd()); +var nData = strData.length; +var data = Clazz.newFloatArray (nData, 0); +for (var d = 0; d < nData; d++) { +data[d] = this.parseFloatStr(strData[d]); +} +gdata.addLast(data); +gaussianPtr++; +} +sdata.addLast(slater); +} +var garray = JU.AU.newFloat2(gaussianPtr); +for (var i = 0; i < gaussianPtr; i++) { +garray[i] = gdata.get(i); +} +this.moData.put("shells", sdata); +this.moData.put("gaussians", garray); +if (this.debugging) { +JU.Logger.debug(sdata.size() + " slater shells read"); +JU.Logger.debug(garray.length + " gaussian primitives read"); +}this.asc.setCurrentModelInfo("moData", this.moData); +}); +Clazz.defineMethod(c$, "readSlaterBasis", +function(){ +while (this.getLine()) { +var tokens = this.getTokens(); +if (tokens.length < 7) continue; +this.addSlater(this.parseIntStr(tokens[0]), this.parseIntStr(tokens[1]), this.parseIntStr(tokens[2]), this.parseIntStr(tokens[3]), this.parseIntStr(tokens[4]), this.parseFloatStr(tokens[5]), this.parseFloatStr(tokens[6])); +} +this.scaleSlaters = false; +this.setSlaters(false); +}); +Clazz.defineMethod(c$, "readMolecularOrbital", +function(){ +if (this.orbitals == null) { +JU.Logger.error("MOLECULAR ORBITALS SKIPPED"); +while (this.getLine()) { +} +return; +}var mo = new java.util.Hashtable(); +var data = new JU.Lst(); +var energy = this.parseFloatStr(this.rd()); +var occupancy = this.parseFloatStr(this.rd()); +while (this.getLine()) { +var tokens = this.getTokens(); +if (tokens.length == 0) { +continue; +}data.addLast(tokens[1]); +} +var coefs = Clazz.newFloatArray (data.size(), 0); +for (var i = data.size(); --i >= 0; ) { +coefs[i] = this.parseFloatStr(data.get(i)); +} +mo.put("energy", Float.$valueOf(energy)); +mo.put("occupancy", Float.$valueOf(occupancy)); +mo.put("coefficients", coefs); +this.orbitals.addLast(mo); +this.nOrbitals++; +if (occupancy > 0) this.moData.put("HOMO", Integer.$valueOf(this.nOrbitals)); +}); +c$.$DS_LIST = "NOT IMPLEMENTED IN THIS READER"; +c$.$DC_LIST = "xx yy zz xy xz yz"; +c$.$FS_LIST = "NOT IMPLEMENTED IN THIS READER"; +c$.$FC_LIST = "xxx yyy zzz yyx xxy xxz zzx zzy yyz xyz"; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/AlchemyReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/AlchemyReader.js new file mode 100755 index 000000000000..c049035ed19e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/AlchemyReader.js @@ -0,0 +1,76 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.AlchemyReader", ["JU.PT", "J.adapter.smarter.Atom"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isM3D = false; +this.ac = 0; +this.bondCount = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "AlchemyReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.asc.newAtomSet(); +this.rd(); +if (this.line.indexOf("ATOMS") < 0) { +this.isM3D = true; +this.rd(); +}var tokens = this.getTokens(); +this.ac = this.parseIntStr(tokens[0]); +this.bondCount = this.parseIntStr(tokens[this.isM3D ? 1 : 2]); +this.readAtoms(); +this.readBonds(); +this.continuing = false; +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +var pt = (this.isM3D ? 3 : 2); +for (var i = this.ac; --i >= 0; ) { +var tokens = JU.PT.getTokens(this.rd()); +var atom = new J.adapter.smarter.Atom(); +atom.atomSerial = this.parseIntStr(tokens[0]); +var name = tokens[1]; +if (!this.isM3D) { +atom.atomName = name; +atom.elementSymbol = name.substring(0, 1); +var c1 = name.charAt(0); +var c2 = ' '; +var nChar = (name.length == 2 && (J.adapter.smarter.Atom.isValidSym2(c1, c2 = Character.toLowerCase(name.charAt(1))) || name.equals("Du")) ? 2 : 1); +name = (nChar == 1 ? "" + c1 : "" + c1 + c2); +}atom.elementSymbol = name; +this.setAtomCoordTokens(atom, tokens, pt); +atom.partialCharge = (tokens.length >= 6 ? this.parseFloatStr(tokens[pt + 3]) : 0); +this.asc.addAtomWithMappedSerialNumber(atom); +} +}); +Clazz.defineMethod(c$, "readBonds", +function(){ +for (var i = this.bondCount; --i >= 0; ) { +var tokens = JU.PT.getTokens(this.rd()); +var atomSerial1 = tokens[1]; +var atomSerial2 = tokens[2]; +var sOrder = (tokens.length < 4 ? "1" : tokens[3].toUpperCase()); +var order = 0; +switch ((sOrder.charAt(0)).charCodeAt(0)) { +default: +case 49: +case 83: +order = 1; +break; +case 50: +case 68: +order = 2; +break; +case 51: +case 84: +order = 3; +break; +case 65: +order = 515; +break; +case 72: +order = 2048; +break; +} +this.asc.addNewBondFromNames(atomSerial1, atomSerial2, order); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/AmpacReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/AmpacReader.js new file mode 100755 index 000000000000..556bd23ec920 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/AmpacReader.js @@ -0,0 +1,89 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.AmpacReader", ["JU.P3"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ac = 0; +this.freqAtom0 = -1; +this.partialCharges = null; +this.atomPositions = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "AmpacReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf("CARTESIAN COORDINATES") >= 0) { +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.readCoordinates(); +return true; +}if (!this.doProcessLines) return true; +if (this.line.indexOf("NET ATOMIC CHARGES") >= 0) { +this.readPartialCharges(); +return true; +}if (this.line.indexOf("VIBRATIONAL FREQUENCIES") >= 0) { +this.readFrequencies(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +var haveFreq = (this.freqAtom0 >= 0); +if (haveFreq) { +this.atomPositions = new Array(this.ac); +} else { +this.asc.newAtomSet(); +}this.rd(); +this.ac = 0; +while (this.rd() != null) { +var tokens = this.getTokens(); +if (tokens.length < 5) break; +if (haveFreq) { +this.atomPositions[this.ac] = JU.P3.new3(this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3]), this.parseFloatStr(tokens[4])); +} else { +this.addAtomXYZSymName(tokens, 2, tokens[1], null); +}this.ac++; +} +if (haveFreq) this.setPositions(); +}); +Clazz.defineMethod(c$, "setPositions", +function(){ +var maxAtom = this.asc.ac; +var atoms = this.asc.atoms; +for (var i = this.freqAtom0; i < maxAtom; i++) { +atoms[i].setT(this.atomPositions[i % this.ac]); +atoms[i].partialCharge = this.partialCharges[i % this.ac]; +} +}); +Clazz.defineMethod(c$, "readPartialCharges", +function(){ +this.rd(); +this.partialCharges = Clazz.newFloatArray (this.ac, 0); +var tokens; +for (var i = 0; i < this.ac; i++) { +if (this.rd() == null || (tokens = this.getTokens()).length < 4) break; +this.partialCharges[i] = this.parseFloatStr(tokens[2]); +} +}); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +while (this.rd() != null && this.line.indexOf("FREQ :") < 0) { +} +while (this.line != null && this.line.indexOf("FREQ :") >= 0) { +var frequencies = this.getTokens(); +while (this.rd() != null && this.line.indexOf("IR I") < 0) { +} +var iAtom0 = this.asc.ac; +if (this.vibrationNumber == 0) this.freqAtom0 = iAtom0; +var frequencyCount = frequencies.length - 2; +var ignore = Clazz.newBooleanArray(frequencyCount, false); +for (var i = 0; i < frequencyCount; ++i) { +ignore[i] = !this.doGetVibration(++this.vibrationNumber); +if (ignore[i]) continue; +this.asc.cloneLastAtomSet(); +this.asc.setAtomSetName(frequencies[i + 2] + " cm^-1"); +this.asc.setAtomSetModelProperty("Frequency", frequencies[i + 2] + " cm^-1"); +this.asc.setAtomSetModelProperty(".PATH", "Frequencies"); +} +this.fillFrequencyData(iAtom0, this.ac, this.ac, ignore, false, 8, 9, null, 0, null); +this.rd(); +this.rd(); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/CubeReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/CubeReader.js new file mode 100755 index 000000000000..d4c34287cf8e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/CubeReader.js @@ -0,0 +1,44 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.CubeReader", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ac = 0; +this.isAngstroms = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "CubeReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.asc.newAtomSet(); +this.readTitleLines(); +this.readAtomCountAndOrigin(); +this.readLines(3); +this.readAtoms(); +this.applySymmetryAndSetTrajectory(); +this.continuing = false; +}); +Clazz.defineMethod(c$, "readTitleLines", +function(){ +if (this.rd().indexOf("#JVXL") == 0) while (this.rd().indexOf("#") == 0) { +} +this.checkCurrentLineForScript(); +var name = this.line.trim(); +this.rd(); +this.checkCurrentLineForScript(); +this.asc.setAtomSetName(name + " - " + this.line.trim()); +}); +Clazz.defineMethod(c$, "readAtomCountAndOrigin", +function(){ +this.rd(); +this.isAngstroms = (this.line.indexOf("ANGSTROMS") >= 0); +var tokens = this.getTokens(); +if (tokens[0].charAt(0) == '+') tokens[0] = tokens[0].substring(1); +this.ac = Math.abs(this.parseIntStr(tokens[0])); +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +var f = (this.isAngstroms ? 1 : 0.5291772); +for (var i = 0; i < this.ac; ++i) { +var tokens = JU.PT.getTokens(this.rd()); +this.setAtomCoordScaled(null, tokens, 2, f).elementNumber = this.parseIntStr(tokens[0]); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/FAHReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/FAHReader.js new file mode 100755 index 000000000000..02c836f2f1d4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/FAHReader.js @@ -0,0 +1,142 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.FAHReader", ["JU.PT", "$.Rdr", "J.adapter.smarter.Atom", "$.Bond", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.factor = 1; +this.pt = null; +this.readerSave = null; +this.units = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "FAHReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.pt = Clazz.newIntArray (1, 0); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.asc.setNoAutoBond(); +this.setModelPDB(true); +this.finalizeReaderASCR(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.startsWith("{")) { +return this.readTopAtomsAndBonds(); +}if (this.line.startsWith("[")) { +return this.readVnnCoords(); +}return true; +}); +Clazz.defineMethod(c$, "readTopAtomsAndBonds", +function(){ +if (this.readerSave == null) this.appendLoadNote(" -- FAH:: is required for Frame files but not the Top file.\n -- automatic calculation of structure using DSSP\n -- Both files are required; three load options:\n \n LOAD FILES \"ViewerTop.json\" + \"ViewerFrame22.json\" // explicit joining to two files\n \n LOAD ViewerTop.json; \n LOAD XYZ FAH::ViewerFrame22.json // first the atoms, then the coordinates\n \n LOAD FAH::ViewerFrame22.json // just the coordinates with associated ViewerTop.json assumed present\n \n -- Subsequent calls to LOAD XYZ will replace coordinates and recalculate DSSP only.\n\n LOAD ViewerTop.json; \n LOAD XYZ FAH::ViewerFrame0.json \n delay 1.0\n LOAD XYZ FAH::ViewerFrame22.json \n \n"); +this.discardLinesUntilContains("\""); +if (this.line.indexOf("units") >= 0) { +this.pt[0] = this.line.indexOf(":"); +this.units = JU.PT.getQuotedStringNext(this.line, this.pt); +if (this.units != null && (this.units.equalsIgnoreCase("NM") || this.units.toUpperCase().indexOf("NANOMETER") >= 0)) { +this.factor = 0.1; +}JU.Logger.info("FAHReader units are " + this.units + " factor = " + this.factor); +}this.discardLinesUntilContains("atoms"); +var index = 0; +while (this.rd() != null) { +var tokens = this.getTokens(); +this.pt[0] = 0; +var name = JU.PT.getQuotedStringNext(tokens[0], this.pt); +this.pt[0] = 0; +var group = JU.PT.getQuotedStringNext(tokens[5], this.pt); +var elemNo = this.parseIntStr(tokens[4]); +var atom = new J.adapter.smarter.Atom(); +atom.elementNumber = elemNo; +atom.atomName = name; +atom.group3 = group; +atom.set(0, 0, index++); +this.asc.addAtom(atom); +if (this.line.trim().endsWith("]")) break; +} +this.discardLinesUntilContains("bonds"); +while (this.rd() != null) { +this.pt[0] = this.line.indexOf("[") + 1; +var a = JU.PT.parseIntNext(this.line, this.pt); +this.pt[0] = this.line.indexOf(",") + 1; +var b = JU.PT.parseIntNext(this.line, this.pt); +this.asc.addBond( new J.adapter.smarter.Bond(a, b, 1)); +if (this.line.trim().endsWith("]")) break; +} +JU.Logger.info("FAHReader " + this.asc.ac + " top atoms read"); +this.rd(); +this.rd(); +return true; +}); +Clazz.defineMethod(c$, "readVnnCoords", +function(){ +var iatom = 0; +if (this.asc.ac == 0 && this.readerSave == null && !"xyz".equals(this.htParams.get("dataType"))) { +this.getTopData(); +}var atoms = this.asc.atoms; +var atomCount = this.asc.ac; +while (this.rd() != null) { +this.pt[0] = 0; +this.line = this.line.trim(); +var tokens = this.line.substring(1, this.line.length - 1).$plit(","); +var x = this.parseFloatStr(tokens[0]) * this.factor; +var y = this.parseFloatStr(tokens[1]) * this.factor; +var z = this.parseFloatStr(tokens[2]) * this.factor; +var atom = (iatom >= atomCount ? this.asc.addAtom( new J.adapter.smarter.Atom()) : atoms[iatom]); +atom.set(x, y, z); +iatom++; +if (this.line.trim().endsWith("]")) break; +} +JU.Logger.info("FAHReader " + iatom + " atom coordinates read"); +if (!this.checkBondlengths()) this.checkBondlengths(); +this.rd(); +return true; +}); +Clazz.defineMethod(c$, "checkBondlengths", +function(){ +var d = 1; +if (this.asc.bondCount > 0) { +var b = this.asc.bonds[0]; +d = this.asc.atoms[b.atomIndex1].distance(this.asc.atoms[b.atomIndex2]); +} else { +for (var i = Math.min(this.asc.ac, 10); --i >= 0; ) { +for (var j = i; --j >= 0; ) { +d = Math.min(d, this.asc.atoms[i].distance(this.asc.atoms[j])); +} +} +}if (d < 0.5) { +for (var i = this.asc.ac; --i >= 0; ) { +this.asc.atoms[i].scale(10); +} +var msg = "FAHReader CORRECTION: Top.json file units=" + this.units + "\n but we found NANOMETERS based on\n " + (this.asc.bondCount > 0 ? "bonds[0].length" : "shortest distance among first 10 atoms") + "=" + d; +this.appendLoadNote(msg); +return false; +}return true; +}); +Clazz.defineMethod(c$, "getTopData", +function(){ +var fileName = this.filePath; +var pt = fileName.lastIndexOf("."); +if (pt < 0) pt = fileName.length; +var ptv = fileName.lastIndexOf("Frame", pt); +fileName = fileName.substring(0, ptv) + "Top" + fileName.substring(pt); +var data = this.vwr.getFileAsString3(fileName, false, null); +JU.Logger.info("FAHReader " + data.length + " bytes read from " + fileName); +var isError = (data.indexOf("\"atoms\"") < 0); +if (isError) { +JU.Logger.error("FAHReader " + fileName + "was not found"); +} else { +this.readerSave = this.reader; +this.reader = JU.Rdr.getBR(data); +try { +this.rd(); +this.checkLine(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.reader = this.readerSave; +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/FoldingXyzReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/FoldingXyzReader.js new file mode 100755 index 000000000000..21852ff8db10 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/FoldingXyzReader.js @@ -0,0 +1,103 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.FoldingXyzReader", ["java.util.Hashtable", "JU.PT", "J.adapter.smarter.Atom"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.simple, "FoldingXyzReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (this.asc.bondCount > 0) this.asc.setNoAutoBond(); +this.isTrajectory = false; +this.finalizeReaderASCR(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +var next = Clazz.newIntArray(-1, [0]); +var token = JU.PT.parseTokenNext(this.line, next); +if (token == null) return true; +var addAtoms = this.doGetModel(++this.modelNumber, null); +var modelAtomCount = this.parseIntStr(token); +if (addAtoms) { +this.asc.newAtomSet(); +var tokens = this.getTokens(); +this.asc.setAtomSetName(tokens.length == 2 ? "Protein " + tokens[1] : this.line.substring(next[0]).trim()); +}var readLine = this.readAtoms(modelAtomCount + 1, addAtoms); +this.continuing = !addAtoms || !this.isLastModel(this.modelNumber); +return readLine; +}); +Clazz.defineMethod(c$, "readAtoms", +function(ac, addAtoms){ +var htBondCounts = new java.util.Hashtable(); +var bonds = new Array(ac); +var haveAtomTypes = true; +var checking = true; +var lastAtom = null; +var readNextLine = true; +for (var i = 0; i < ac; i++) { +this.discardLinesUntilNonBlank(); +if (this.line == null) break; +var tokens = this.getTokens(); +var sIndex = tokens[0]; +if (sIndex.equals(lastAtom)) { +readNextLine = false; +break; +}lastAtom = sIndex; +if (!addAtoms) continue; +var atom = new J.adapter.smarter.Atom(); +atom.atomName = tokens[1]; +atom.elementSymbol = this.getElement(tokens[1]); +atom.atomSerial = this.parseIntStr(sIndex); +if (!this.filterAtom(atom, i)) continue; +this.setAtomCoordTokens(atom, tokens, 2); +this.asc.addAtomWithMappedSerialNumber(atom); +var n = tokens.length - 5; +bonds[i] = new Array(n + 1); +bonds[i][n] = sIndex; +for (var j = 0; j < n; j++) { +var t = tokens[j + 5]; +var i2 = this.parseIntStr(t); +bonds[i][j] = t; +if (checking) { +if (n == 0 || t.equals(sIndex) || i2 <= 0 || i2 > ac) { +haveAtomTypes = (n > 0); +checking = false; +} else { +var count = htBondCounts.get(t); +if (count == null) htBondCounts.put(t, count = Clazz.newIntArray (1, 0)); +if (++count[0] > 10) haveAtomTypes = !(checking = false); +}}} +} +if (addAtoms) { +this.makeBonds(bonds, !checking && haveAtomTypes); +this.applySymmetryAndSetTrajectory(); +}return readNextLine; +}, "~N,~B"); +Clazz.defineMethod(c$, "makeBonds", +function(bonds, haveAtomTypes){ +for (var i = bonds.length; --i >= 0; ) { +var b = bonds[i]; +if (b == null) continue; +var a1 = this.asc.getAtomFromName(b[b.length - 1]); +var b0 = 0; +if (haveAtomTypes) a1.atomName += "\0" + b[b0++]; +for (var j = b.length - 1; --j >= b0; ) { +var a2 = this.asc.getAtomFromName(b[j]); +if (a1.index < a2.index) this.asc.addNewBondWithOrderA(a1, a2, 1); +} +} +}, "~A,~B"); +Clazz.defineMethod(c$, "getElement", +function(name){ +var n = name.length; +switch (n) { +case 1: +break; +default: +var c1 = name.charAt(0); +var c2 = name.charAt(1); +n = (J.adapter.smarter.Atom.isValidSym2(c1, c2) || c1 == 'C' && c2 == 'L' ? 2 : 1); +} +return name.substring(0, n); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/GhemicalMMReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/GhemicalMMReader.js new file mode 100755 index 000000000000..d7e0745f3b9a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/GhemicalMMReader.js @@ -0,0 +1,90 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.GhemicalMMReader", ["JU.PT"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.simple, "GhemicalMMReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.startsWith("!Header")) { +this.processHeader(); +return true; +}if (this.line.startsWith("!Info")) { +this.processInfo(); +return true; +}if (this.line.startsWith("!Atoms")) { +this.processAtoms(); +return true; +}if (this.line.startsWith("!Bonds")) { +this.processBonds(); +return true; +}if (this.line.startsWith("!Coord")) { +this.processCoord(); +return true; +}if (this.line.startsWith("!Charges")) { +this.processCharges(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "processHeader", +function(){ +}); +Clazz.defineMethod(c$, "processInfo", +function(){ +}); +Clazz.defineMethod(c$, "processAtoms", +function(){ +var ac = this.parseIntAt(this.line, 6); +for (var i = 0; i < ac; ++i) { +if (this.asc.ac != i) throw new Exception("GhemicalMMReader error #1"); +this.rd(); +var atomIndex = this.parseIntStr(this.line); +if (atomIndex != i) throw new Exception("bad atom index in !Atomsexpected: " + i + " saw:" + atomIndex); +var elementNumber = this.parseInt(); +var atom = this.asc.addNewAtom(); +atom.elementNumber = elementNumber; +} +}); +Clazz.defineMethod(c$, "processBonds", +function(){ +var bondCount = this.parseIntAt(this.line, 6); +for (var i = 0; i < bondCount; ++i) { +this.rd(); +var atomIndex1 = this.parseIntStr(this.line); +var atomIndex2 = this.parseInt(); +var orderCode = this.parseToken(); +var order = 0; +switch ((orderCode.charAt(0)).charCodeAt(0)) { +case 67: +order = 515; +break; +case 84: +order = 3; +break; +case 68: +order = 2; +break; +case 83: +default: +order = 1; +} +this.asc.addNewBondWithOrder(atomIndex1, atomIndex2, order); +} +}); +Clazz.defineMethod(c$, "processCoord", +function(){ +var atoms = this.asc.atoms; +var ac = this.asc.ac; +for (var i = 0; i < ac; ++i) this.setAtomCoordScaled(atoms[i], JU.PT.getTokens(this.rd()), 1, 10); + +}); +Clazz.defineMethod(c$, "processCharges", +function(){ +var atoms = this.asc.atoms; +var ac = this.asc.ac; +for (var i = 0; i < ac; ++i) { +this.rd(); +var atomIndex = this.parseIntStr(this.line); +if (atomIndex != i) throw new Exception("bad atom index in !Chargesexpected: " + i + " saw:" + atomIndex); +atoms[i].partialCharge = this.parseFloat(); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/HyperChemReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/HyperChemReader.js new file mode 100755 index 000000000000..5a89601adb92 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/HyperChemReader.js @@ -0,0 +1,75 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.HyperChemReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomIndex = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "HyperChemReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.length == 0 || this.line.charAt(0) == ';') return true; +if (this.line.startsWith("mol ")) { +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.processMol(); +return true; +}if (!this.doProcessLines) return true; +if (this.line.startsWith("atom ")) { +this.processAtom(); +return true; +}if (this.line.startsWith("endmol ")) { +this.applySymmetryAndSetTrajectory(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "processMol", +function(){ +this.asc.newAtomSet(); +var molName = this.getMolName(); +this.asc.setAtomSetName(molName); +this.atomIndex = 0; +this.baseAtomIndex = this.asc.ac; +}); +Clazz.defineMethod(c$, "getMolName", +function(){ +this.parseTokenStr(this.line); +this.parseToken(); +return this.parseToken(); +}); +Clazz.defineMethod(c$, "processAtom", +function(){ +var fileAtomNumber = this.parseIntAt(this.line, 5); +if (fileAtomNumber - 1 != this.atomIndex) { +throw new Exception("bad atom number sequence ... expected:" + (this.atomIndex + 1) + " found:" + fileAtomNumber); +}var atom = this.asc.addNewAtom(); +this.parseToken(); +atom.elementSymbol = this.parseToken(); +this.parseToken(); +this.parseToken(); +atom.partialCharge = this.parseFloat(); +this.setAtomCoordXYZ(atom, this.parseFloat(), this.parseFloat(), this.parseFloat()); +var bondCount = this.parseInt(); +for (var i = 0; i < bondCount; ++i) { +var otherAtomNumber = this.parseInt(); +var bondTypeToken = this.parseToken(); +if (otherAtomNumber > this.atomIndex) continue; +var bondOrder; +switch ((bondTypeToken.charAt(0)).charCodeAt(0)) { +case 115: +bondOrder = 1; +break; +case 100: +bondOrder = 2; +break; +case 116: +bondOrder = 3; +break; +case 97: +bondOrder = 515; +break; +default: +throw new Exception("unrecognized bond type:" + bondTypeToken + " atom #" + fileAtomNumber); +} +this.asc.addNewBondWithOrder(this.baseAtomIndex + this.atomIndex, this.baseAtomIndex + otherAtomNumber - 1, bondOrder); +} +++this.atomIndex; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/InputReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/InputReader.js new file mode 100755 index 000000000000..0f352eacfe57 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/InputReader.js @@ -0,0 +1,320 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "java.util.Hashtable", "JU.Lst", "$.P3", "$.P4", "$.V3"], "J.adapter.readers.simple.InputReader", ["JU.Measure", "$.PT", "$.Quat", "J.adapter.smarter.Atom", "$.Bond", "J.api.JmolAdapter", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ac = 0; +this.vAtoms = null; +this.atomMap = null; +this.tokens = null; +this.isJmolZformat = false; +this.lineBuffer = null; +this.symbolicMap = null; +this.isMopac = false; +this.isHeader = true; +this.firstLine = true; +this.pt0 = null; +this.v1 = null; +this.v2 = null; +this.plane1 = null; +this.plane2 = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "InputReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.vAtoms = new JU.Lst(); +this.atomMap = new java.util.Hashtable(); +this.lineBuffer = new JU.Lst(); +this.symbolicMap = new java.util.Hashtable(); +this.pt0 = new JU.P3(); +this.v1 = new JU.V3(); +this.v2 = new JU.V3(); +this.plane1 = new JU.P4(); +this.plane2 = new JU.P4(); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.firstLine) { +this.firstLine = false; +var tokens = this.getTokens(); +if (tokens.length == 3 && this.parseIntStr(tokens[0]) > 0 && this.parseIntStr(tokens[1]) > 0 && this.parseIntStr(tokens[2]) > 0) { +this.readConFile(); +return this.continuing = false; +}}this.cleanLine(); +if (this.line.length <= 2) this.isHeader = false; +if (this.line.startsWith("#") || this.line.startsWith("*") || this.isMopac && this.isHeader) { +if (this.line.startsWith("#ZMATRIX")) this.isJmolZformat = this.line.toUpperCase().indexOf("GAUSSIAN") < 0 && !(this.isMopac = (this.line.toUpperCase().indexOf("MOPAC") >= 0)); +this.checkCurrentLineForScript(); +return true; +}if (this.line.indexOf("#") >= 0) this.line = this.line.substring(0, this.line.indexOf("#")); +if (this.line.indexOf(":") >= 0) return true; +if (this.line.contains("$molecule")) { +this.rd(); +return this.readBlock("$end"); +}if (this.line.startsWith("$")) return true; +if (this.line.contains("%mem")) { +this.discardLinesUntilBlank(); +this.discardLinesUntilBlank(); +this.rd(); +return this.readBlock(null); +}if (this.line.contains("ATOMS cartesian")) { +return this.readBlock("END"); +}if (this.line.contains("geometry units angstroms")) { +return this.readBlock("end"); +}if (this.line.contains("&zmat")) { +return this.readBlock("&"); +}if (this.line.contains("%coords")) { +this.discardLinesUntilContains("coords"); +return this.readBlock("end"); +}if (this.line.contains("GEOM=PQS")) { +return this.readBlock("BASIS"); +}if (this.line.contains("geometry={")) { +this.readLines(2); +return this.readBlock("}"); +}this.tokens = this.getTokens(); +if (this.tokens.length > 10) return this.readVFI(); +switch (this.tokens.length) { +case 1: +if (this.tokens[0].indexOf("=") < 0) { +this.lineBuffer.clear(); +break; +}this.tokens = JU.PT.split(this.tokens[0], "="); +case 2: +if (this.parseIntStr(this.line) > 0 && this.parseInt() >= 0) { +this.readCFI(); +return (this.continuing = false); +}this.getSymbolic(); +return true; +case 10: +if (this.tokens[0].equals("0")) return (this.continuing = false); +if (this.tokens[1].indexOf(".") < 0) return true; +if (this.lineBuffer.size() > 0 && this.lineBuffer.get(this.lineBuffer.size() - 1).length < 8) this.lineBuffer.clear(); +break; +} +this.lineBuffer.addLast(this.tokens); +return true; +}); +Clazz.defineMethod(c$, "readConFile", +function(){ +this.rd(); +var map = new java.util.Hashtable(); +var lstTokens = new JU.Lst(); +var n = 0; +while (this.rd() != null && this.line.length > 40) { +n++; +var tokens = this.getTokens(); +lstTokens.addLast(tokens); +map.put(tokens[1], this.addAtomXYZSymName(tokens, 2, tokens[0], null)); +} +for (var i = 0; i < n; i++) { +var tokens = lstTokens.get(i); +var a = map.get(tokens[1]); +for (var j = 6; j < tokens.length; j++) this.asc.addBond( new J.adapter.smarter.Bond(a.index, map.get(tokens[j]).index, 1)); + +} +}); +Clazz.defineMethod(c$, "readCFI", +function(){ +this.tokens = this.getTokens(); +var nAtoms = Clazz.floatToInt(this.getValue(0)); +var nBonds = Clazz.floatToInt(this.getValue(1)); +var map = new java.util.Hashtable(); +for (var i = 0; i < nAtoms; i++) { +this.tokens = JU.PT.getTokens(this.rd()); +if (this.tokens[1].equals("0") || this.tokens[1].equals("2")) continue; +var a = this.addAtomXYZSymName(this.tokens, 2, null, null); +a.elementNumber = Clazz.floatToShort(this.getValue(1)); +map.put(this.tokens[0], a); +} +var bonds = this.fillFloatArray(null, 0, Clazz.newFloatArray (nBonds * 2, 0)); +var orders = this.fillFloatArray(null, 0, Clazz.newFloatArray (nBonds, 0)); +for (var i = 0, pt = 0; i < nBonds; i++) this.asc.addBond( new J.adapter.smarter.Bond(map.get("" + Clazz.floatToInt(bonds[pt++])).index, map.get("" + Clazz.floatToInt(bonds[pt++])).index, Clazz.floatToInt(orders[i]))); + +}); +Clazz.defineMethod(c$, "readVFI", +function(){ +var map = new java.util.Hashtable(); +var bonds = new JU.Lst(); +while (this.tokens != null && this.tokens.length > 0) { +for (var i = this.tokens.length; --i >= 11; ) bonds.addLast( Clazz.newArray(-1, [this.tokens[3], this.tokens[i]])); + +var id = this.tokens[3]; +this.tokens = (this.tokens[2].equals("0") ? Clazz.newArray(-1, [this.tokens[4]]) : this.tokens[1].equals("0") ? Clazz.newArray(-1, [this.tokens[4], this.tokens[2], this.tokens[5]]) : this.tokens[0].equals("0") ? Clazz.newArray(-1, [this.tokens[4], this.tokens[2], this.tokens[5], this.tokens[1], this.tokens[7]]) : Clazz.newArray(-1, [this.tokens[4], this.tokens[2], this.tokens[5], this.tokens[1], this.tokens[7], this.tokens[0], this.tokens[9]])); +var atom = this.getAtom(); +map.put(id, atom); +this.tokens = JU.PT.getTokens(this.rd()); +} +for (var i = bonds.size(); --i >= 0; ) { +var b = bonds.get(i); +this.asc.addBond( new J.adapter.smarter.Bond(map.get(b[0]).index, map.get(b[1]).index, 1)); +} +return (this.continuing = false); +}); +Clazz.defineMethod(c$, "readBlock", +function(strEnd){ +this.lineBuffer.clear(); +while (this.rd() != null && this.cleanLine() != null && (strEnd == null ? this.line.length > 0 : this.line.indexOf(strEnd) < 0)) this.lineBuffer.addLast(this.getTokens()); + +return (this.continuing = false); +}, "~S"); +Clazz.defineMethod(c$, "cleanLine", +function(){ +this.line = this.line.$replace(',', ' '); +var pt1; +var pt2; +while ((pt1 = this.line.indexOf('(')) >= 0 && (pt2 = this.line.indexOf('(', pt1)) >= 0) this.line = this.line.substring(0, pt1) + " " + this.line.substring(pt2 + 1); + +return (this.line = this.line.trim()); +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +var firstLine = 0; +for (var i = firstLine; i < this.lineBuffer.size(); i++) if ((this.tokens = this.lineBuffer.get(i)).length > 0) this.getAtom(); + +this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "getSymbolic", +function(){ +if (this.symbolicMap.containsKey(this.tokens[0])) return; +var f = this.parseFloatStr(this.tokens[1]); +this.symbolicMap.put(this.tokens[0], Float.$valueOf(f)); +JU.Logger.info("symbolic " + this.tokens[0] + " = " + f); +}); +Clazz.defineMethod(c$, "getAtom", +function(){ +var atom = new J.adapter.smarter.Atom(); +var element = this.tokens[0]; +var i = element.length; +while (--i >= 0 && JU.PT.isDigit(element.charAt(i))) { +} +if (++i == 0) element = J.api.JmolAdapter.getElementSymbol(this.parseIntStr(element)); +if (i == 0 || i == element.length) { +atom.atomName = element + (this.ac + 1); +} else { +atom.atomName = element; +element = element.substring(0, i); +}if (this.isMopac && i != this.tokens[0].length) element = this.tokens[0].substring(i) + element; +this.parseAtomTokens(atom, element); +return atom; +}); +Clazz.defineMethod(c$, "parseAtomTokens", +function(atom, element){ +this.setElementAndIsotope(atom, element); +if (this.tokens.length > 5 && this.tokens[1].indexOf(".") >= 0) { +var t = this.tokens; +var l = t.length; +this.tokens = (t[l - 3].equals("0") ? Clazz.newArray(-1, [t[0]]) : t[l - 2].equals("0") ? Clazz.newArray(-1, [t[0], t[l - 3], t[1]]) : t[l - 1].equals("0") ? Clazz.newArray(-1, [t[0], t[l - 3], t[1], t[l - 2], t[3]]) : Clazz.newArray(-1, [t[0], t[l - 3], t[1], t[l - 2], t[3], t[l - 1], t[5]])); +}var ia = this.getAtomIndex(1); +var bondOrder = 0; +switch (this.tokens.length) { +case 8: +case 6: +atom = this.getAtomGeneral(atom, ia, bondOrder = Clazz.floatToInt(this.getValue(this.tokens.length - 1))); +break; +case 5: +if (this.tokens[1].equals("0")) { +atom.set(this.getValue(2), this.getValue(3), this.getValue(4)); +break; +}case 7: +atom = this.getAtomGeneral(atom, ia, 0); +break; +case 4: +if (this.getAtomIndex(1) < 0) { +atom.set(this.getValue(1), this.getValue(2), this.getValue(3)); +break; +}bondOrder = Clazz.floatToInt(this.getValue(3)); +case 3: +if (this.ac != 1 || (ia = this.getAtomIndex(1)) != 0) { +atom = null; +} else { +atom.set(this.getValue(2), 0, 0); +}break; +case 1: +if (this.ac != 0) atom = null; + else atom.set(0, 0, 0); +break; +default: +atom = null; +} +if (atom == null) throw new Exception("bad Z-Matrix line"); +this.vAtoms.addLast(atom); +this.atomMap.put(atom.atomName, Integer.$valueOf(this.ac++)); +if (element.startsWith("X") && J.api.JmolAdapter.getElementNumber(element) < 1) { +JU.Logger.info("#dummy atom ignored: atom " + this.ac + " - " + atom.atomName); +} else { +this.asc.addAtom(atom); +this.setAtomCoord(atom); +JU.Logger.info(atom.atomName + " " + atom.x + " " + atom.y + " " + atom.z); +if (bondOrder < 0 || this.isJmolZformat && bondOrder > 0) this.asc.addBond( new J.adapter.smarter.Bond(atom.index, this.vAtoms.get(ia).index, Math.abs(bondOrder))); +}}, "J.adapter.smarter.Atom,~S"); +Clazz.defineMethod(c$, "getAtomGeneral", +function(atom, ia, bondOrder){ +var ib; +var ic; +if (this.tokens.length < 7 && this.ac != 2 || (ib = this.getAtomIndex(3)) < 0 || (ic = (this.tokens.length < 7 ? -2 : this.getAtomIndex(5))) == -1) { +return null; +}var d = this.getValue(2); +var theta1 = this.getValue(4); +var theta2 = (this.tokens.length < 7 ? 3.4028235E38 : this.getValue(6)); +if (this.tokens.length == 8 && !this.isJmolZformat && !this.isMopac && bondOrder == 1) d = -Math.abs(d); +return atom = this.setAtom(atom, ia, ib, ic, d, theta1, theta2); +}, "J.adapter.smarter.Atom,~N,~N"); +Clazz.defineMethod(c$, "getSymbolic", +function(key){ +var isNeg = key.startsWith("-"); +var F = this.symbolicMap.get(isNeg ? key.substring(1) : key); +if (F == null) return NaN; +var f = F.floatValue(); +return (isNeg ? -f : f); +}, "~S"); +Clazz.defineMethod(c$, "getValue", +function(i){ +var f = this.getSymbolic(this.tokens[i]); +if (Float.isNaN(f)) { +f = this.parseFloatStr(this.tokens[i]); +if (Float.isNaN(f)) throw new Exception("Bad Z-matrix value: " + this.tokens[i]); +}return f; +}, "~N"); +Clazz.defineMethod(c$, "getAtomIndex", +function(i){ +var name; +if (i >= this.tokens.length || (name = this.tokens[i]).indexOf(".") >= 0 || !JU.PT.isLetterOrDigit(name.charAt(0))) return -1; +var ia = this.parseIntStr(name); +if (ia <= 0 || name.length != ("" + ia).length) { +var I = this.atomMap.get(name); +if (I == null) { +for (i = this.vAtoms.size(); --i >= 0; ) { +var atom = this.vAtoms.get(i); +if (atom.atomName.startsWith(name) && atom.atomName.length > name.length && JU.PT.isDigit(atom.atomName.charAt(name.length))) { +I = this.atomMap.get(atom.atomName); +break; +}} +}if (I == null) ia = -1; + else ia = I.intValue(); +} else { +ia--; +}return ia; +}, "~N"); +Clazz.defineMethod(c$, "setAtom", +function(atom, ia, ib, ic, d, theta1, theta2){ +if (Float.isNaN(theta1) || Float.isNaN(theta2)) return null; +this.pt0.setT(this.vAtoms.get(ia)); +this.v1.sub2(this.vAtoms.get(ib), this.pt0); +this.v1.normalize(); +if (theta2 == 3.4028235E38) { +this.v2.set(0, 0, 1); +(JU.Quat.newVA(this.v2, theta1)).transform2(this.v1, this.v2); +} else if (d >= 0) { +this.v2.sub2(this.vAtoms.get(ic), this.pt0); +this.v2.cross(this.v1, this.v2); +(JU.Quat.newVA(this.v2, theta1)).transform2(this.v1, this.v2); +(JU.Quat.newVA(this.v1, -theta2)).transform2(this.v2, this.v2); +} else { +JU.Measure.getPlaneThroughPoint(this.setAtom(atom, ia, ib, ic, -d, theta1, 0), this.v1, this.plane1); +JU.Measure.getPlaneThroughPoint(this.setAtom(atom, ia, ic, ib, -d, theta2, 0), this.v1, this.plane2); +var list = JU.Measure.getIntersectionPP(this.plane1, this.plane2); +if (list.size() == 0) return null; +this.pt0.setT(list.get(0)); +d = Math.sqrt(d * d - this.pt0.distanceSquared(this.vAtoms.get(ia))) * Math.signum(theta1) * Math.signum(theta2); +this.v2.setT(list.get(1)); +}atom.scaleAdd2(d, this.v2, this.pt0); +return atom; +}, "J.adapter.smarter.Atom,~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/JSONReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/JSONReader.js new file mode 100755 index 000000000000..daf4bf59e382 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/JSONReader.js @@ -0,0 +1,200 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.JSONReader", ["JU.P3", "$.PT", "J.adapter.smarter.Bond", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.scale = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "JSONReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.asc.setCollectionName("JSON"); +this.asc.newAtomSet(); +var s = ""; +while (this.rd() != null) s += this.line; + +s = JU.PT.replaceAllCharacters(s, "\" \t", "").$replace(',', ':'); +if (s.contains("_is2D:true")) this.set2D(); +if (s.contains("_scale:")) this.getScaling(this.getSection(s, "_scale", false)); +s = JU.PT.replaceAllCharacters(s, "}", "").$replace(',', ':'); +if (s.indexOf("atomArray:[") >= 0) { +this.readAtomArray(this.getSection(s, "atomArray", true)); +this.readBondArray(this.getSection(s, "bondArray", true)); +} else { +this.readAtoms(this.getSection(s, "a", true)); +this.readBonds(this.getSection(s, "b", true)); +}this.continuing = false; +}); +Clazz.defineMethod(c$, "getScaling", +function(s){ +var xyz = JU.PT.split(s[0], ":"); +this.scale = JU.P3.new3(1, 1, 1); +for (var j = 0; j < xyz.length; j += 2) if (xyz[j].length == 1) switch ((xyz[j].charAt(0)).charCodeAt(0)) { +case 120: +this.scale.x = this.parseFloatStr(xyz[j + 1]); +break; +case 121: +this.scale.y = this.parseFloatStr(xyz[j + 1]); +break; +case 122: +this.scale.z = this.parseFloatStr(xyz[j + 1]); +break; +} + +JU.Logger.info("scale set to " + this.scale); +}, "~A"); +Clazz.defineMethod(c$, "getSection", +function(json, key, isArray){ +var a = JU.PT.split(json, key + ":" + (isArray ? "[" : "") + "{"); +if (a.length < 2) return a; +var data = a[1]; +data = data.substring(0, data.indexOf((isArray ? "]" : "}"))) + ":"; +return JU.PT.split(data, "{"); +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "readAtoms", +function(atoms){ +for (var i = 0; i < atoms.length; ++i) { +var lxyz = JU.PT.split(atoms[i], ":"); +var atom = this.asc.addNewAtom(); +var x = 0; +var y = 0; +var z = 0; +var l = "C"; +for (var j = 0; j < lxyz.length; j += 2) if (lxyz[j].length == 1) switch ((lxyz[j].charAt(0)).charCodeAt(0)) { +case 120: +x = this.parseFloatStr(lxyz[j + 1]); +break; +case 121: +y = this.parseFloatStr(lxyz[j + 1]); +break; +case 122: +z = this.parseFloatStr(lxyz[j + 1]); +break; +case 108: +l = lxyz[j + 1]; +break; +} + +if (this.scale != null) { +x /= this.scale.x; +y /= this.scale.y; +z /= this.scale.z; +}this.setAtomCoordXYZ(atom, x, y, z); +atom.elementSymbol = l; +} +}, "~A"); +Clazz.defineMethod(c$, "readBonds", +function(bonds){ +for (var i = 0; i < bonds.length; ++i) { +var beo = JU.PT.split(bonds[i], ":"); +var b = 0; +var e = 0; +var order = 1; +for (var j = 0; j < beo.length; j += 2) if (beo[j].length == 1) switch ((beo[j].charAt(0)).charCodeAt(0)) { +case 98: +b = this.parseIntStr(beo[j + 1]); +break; +case 101: +e = this.parseIntStr(beo[j + 1]); +break; +case 111: +var o = Clazz.floatToInt(this.parseFloatStr(beo[j + 1]) * 2); +switch (o) { +case 0: +continue; +case 2: +case 4: +case 6: +case 8: +order = Clazz.doubleToInt(o / 2); +break; +case 1: +order = 33; +break; +case 3: +order = 66; +break; +case 5: +order = 97; +break; +default: +order = 1; +break; +} +break; +} + +this.asc.addBond( new J.adapter.smarter.Bond(b, e, order)); +} +}, "~A"); +Clazz.defineMethod(c$, "readAtomArray", +function(atoms){ +for (var i = 0; i < atoms.length; ++i) { +var lxyz = JU.PT.split(atoms[i], ":"); +var atom = this.asc.addNewAtom(); +var x = 0; +var y = 0; +var z = 0; +var l = "C"; +for (var j = 0; j < lxyz.length; j += 2) { +switch ((lxyz[j].charAt(0)).charCodeAt(0)) { +case 120: +x = this.parseFloatStr(lxyz[j + 1]); +break; +case 121: +y = this.parseFloatStr(lxyz[j + 1]); +break; +case 122: +z = this.parseFloatStr(lxyz[j + 1]); +break; +case 101: +l = lxyz[j + 1]; +break; +} +} +if (this.scale != null) { +x /= this.scale.x; +y /= this.scale.y; +z /= this.scale.z; +}this.setAtomCoordXYZ(atom, x, y, z); +atom.elementSymbol = l; +} +}, "~A"); +Clazz.defineMethod(c$, "readBondArray", +function(bonds){ +for (var i = 0; i < bonds.length; ++i) { +var beo = JU.PT.split(bonds[i], ":"); +var b = 0; +var e = 0; +var order = 1; +for (var j = 0; j < beo.length; j += 2) { +if (beo[j].length > 1) { +switch ((beo[j].charAt(1)).charCodeAt(0)) { +case 49: +b = this.parseIntStr(beo[j + 1]) - 1; +break; +case 50: +e = this.parseIntStr(beo[j + 1]) - 1; +break; +case 121: +var type = beo[j + 1]; +switch ((type.charAt(0)).charCodeAt(0)) { +case 68: +order = 2; +break; +case 65: +order = 1; +break; +case 83: +default: +order = 1; +break; +} +break; +} +} else { +System.err.println("JSONReader error bond tag " + beo[j]); +}} +if (b >= this.asc.ac || e >= this.asc.ac) System.err.println("JSONReader error bond referencing atoms " + b + " " + e + " atomCount=" + this.asc.ac + " for " + this.fileName); + else this.asc.addBond( new J.adapter.smarter.Bond(b, e, order)); +} +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/JmeReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/JmeReader.js new file mode 100755 index 000000000000..6c1740bc3ec1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/JmeReader.js @@ -0,0 +1,65 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.JmeReader", ["JU.PT", "J.adapter.smarter.Bond"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.simple, "JmeReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.asc.setCollectionName("JME"); +this.asc.newAtomSet(); +this.line = this.rd().$replace('\t', ' '); +this.checkCurrentLineForScript(); +this.addJmolScript("jmeString='" + this.line + "'"); +var ac = this.parseInt(); +var bondCount = this.parseInt(); +this.readAtoms(ac); +this.readBonds(bondCount); +if (this.asc.ac == 0 && this.line.equals("0") && !this.merging) { +var atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, NaN, NaN, 0); +this.addJmolScript("delete thisModel"); +} else { +this.set2D(); +}this.continuing = false; +}); +Clazz.defineMethod(c$, "readAtoms", +function(ac){ +for (var i = 0; i < ac; ++i) { +var strAtom = this.parseToken(); +var atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, this.parseFloat(), this.parseFloat(), 0); +var indexColon = strAtom.indexOf(':'); +var elementSymbol = (indexColon > 0 ? strAtom.substring(0, indexColon) : strAtom); +if (elementSymbol.indexOf("+") >= 0) { +elementSymbol = JU.PT.trim(elementSymbol, "+"); +atom.formalCharge = 1; +} else if (elementSymbol.indexOf("-") >= 0) { +elementSymbol = JU.PT.trim(elementSymbol, "-"); +atom.formalCharge = -1; +}atom.elementSymbol = elementSymbol; +} +if (ac > 0) this.asc.setModelInfoForSet("dimension", "2D", this.asc.iSet); +}, "~N"); +Clazz.defineMethod(c$, "readBonds", +function(bondCount){ +for (var i = 0; i < bondCount; ++i) { +var atomIndex1 = this.parseInt() - 1; +var atomIndex2 = this.parseInt() - 1; +var order = this.parseInt(); +switch (order) { +default: +continue; +case 1: +case 2: +case 3: +break; +case -1: +order = 1025; +break; +case -2: +order = 1041; +break; +} +this.asc.addBond( new J.adapter.smarter.Bond(atomIndex1, atomIndex2, order)); +} +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/MopacArchiveReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/MopacArchiveReader.js new file mode 100755 index 000000000000..72795f57ede8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/MopacArchiveReader.js @@ -0,0 +1,110 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.readers.simple.InputReader"], "J.adapter.readers.simple.MopacArchiveReader", ["JU.P3", "J.adapter.smarter.Atom", "J.api.JmolAdapter"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.energyWithUnits = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "MopacArchiveReader", J.adapter.readers.simple.InputReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.asc.newAtomSet(); +if (!this.checkFilterKey("NOCENTER")) this.doCentralize = true; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.indexOf("=") == 34) return this.getMyValue(); +if (this.line.indexOf("FINAL GEOMETRY OBTAINED") >= 0) return this.readCoordinates(); +return true; +}); +Clazz.defineMethod(c$, "getMyValue", +function(){ +if (this.line.substring(0, 10).trim().length != 0) return true; +var key = this.line.substring(0, 34).trim().$replace(' ', '_'); +var value = this.line.substring(35).trim(); +this.asc.setCurrentModelInfo(key, value); +if (this.line.indexOf("TOTAL ENERGY") >= 0) { +var tokens = this.getTokens(); +this.energyWithUnits = " (" + tokens[3] + " " + tokens[4] + ")"; +this.asc.setAtomSetEnergy(tokens[3], this.parseFloatStr(tokens[3])); +}return true; +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +this.rd(); +this.line = this.rd().trim(); +this.asc.setAtomSetName(this.line + (this.energyWithUnits == null ? "" : this.energyWithUnits)); +this.rd(); +var atom = null; +var sym = null; +this.setFractionalCoordinates(false); +while (this.rd() != null && this.line.length >= 50) { +this.vAtoms.addLast(atom = new J.adapter.smarter.Atom()); +atom.x = this.parseFloatRange(this.line, 5, 18); +atom.y = this.parseFloatRange(this.line, 21, 34); +atom.z = this.parseFloatRange(this.line, 37, 50); +if (this.line.length > 58 && this.line.charAt(58) != ' ') { +switch (this.ac) { +case 0: +break; +case 1: +atom.sub(this.vAtoms.get(0)); +break; +case 2: +this.setAtom(atom, 0, 1, 0, atom.x, atom.y, 3.4028235E38); +break; +default: +this.setAtom(atom, this.parseIntRange(this.line, 54, 59) - 1, this.parseIntRange(this.line, 60, 65) - 1, this.parseIntRange(this.line, 66, 71) - 1, atom.x, atom.y, atom.z); +} +}sym = this.line.substring(1, 3).trim(); +atom.elementSymbol = sym; +if (!sym.equals("Tv")) { +this.ac++; +if (this.line.length >= 84) atom.partialCharge = this.parseFloatRange(this.line, 76, 84); +if (J.api.JmolAdapter.getElementNumber(sym) != 0) this.asc.addAtom(atom); +this.setAtomCoord(atom); +}} +if (sym.equals("Tv")) { +this.setSpaceGroupName("P1"); +var nTv = this.vAtoms.size() - this.ac; +for (var i = nTv; i < 3; i++) this.vAtoms.addLast( new J.adapter.smarter.Atom()); + +var xyz = Clazz.newFloatArray (9, 0); +for (var i = 0; i < 3; i++) { +var j = i * 3; +atom = this.vAtoms.get(this.ac + i); +if (!Float.isNaN(atom.x)) { +xyz[j] = atom.x; +xyz[j + 1] = atom.y; +xyz[j + 2] = atom.z; +}this.addExplicitLatticeVector(i, xyz, j); +} +for (var i = this.ac; --i >= 0; ) this.setAtomCoord(this.vAtoms.get(i)); + +var ptMax = JU.P3.new3(-3.4028235E38, -3.4028235E38, -3.4028235E38); +var ptMin = JU.P3.new3(3.4028235E38, 3.4028235E38, 3.4028235E38); +if (this.doCentralize) { +for (var i = this.ac; --i >= 0; ) { +atom = this.vAtoms.get(i); +ptMax.x = Math.max(ptMax.x, atom.x); +ptMax.y = Math.max(ptMax.y, atom.y); +ptMax.z = Math.max(ptMax.z, atom.z); +ptMin.x = Math.min(ptMin.x, atom.x); +ptMin.y = Math.min(ptMin.y, atom.y); +ptMin.z = Math.min(ptMin.z, atom.z); +} +var ptCenter = new JU.P3(); +switch (nTv) { +case 3: +ptCenter.x = 0.5; +case 2: +ptCenter.y = 0.5; +case 1: +ptCenter.z = 0.5; +} +ptCenter.scaleAdd2(-0.5, ptMin, ptCenter); +ptCenter.scaleAdd2(-0.5, ptMax, ptCenter); +for (var i = this.ac; --i >= 0; ) this.vAtoms.get(i).add(ptCenter); + +}this.doCentralize = false; +}return true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/MopacReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/MopacReader.js new file mode 100755 index 000000000000..2369a8013b88 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/MopacReader.js @@ -0,0 +1,139 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.MopacReader", ["JU.BS", "$.PT", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.chargesFound = false; +this.haveHeader = false; +this.mopacVersion = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "MopacReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +while (this.mopacVersion == 0) { +this.discardLinesUntilContains("MOPAC"); +if (this.line.indexOf("2009") >= 0) this.mopacVersion = 2009; + else if (this.line.indexOf("6.") >= 0) this.mopacVersion = 6; + else if (this.line.indexOf("7.") >= 0) this.mopacVersion = 7; + else if (this.line.indexOf("93") >= 0) this.mopacVersion = 93; + else if (this.line.indexOf("2002") >= 0) this.mopacVersion = 2002; + else if (this.line.indexOf("MOPAC2") >= 0) this.mopacVersion = JU.PT.parseInt(this.line.substring(this.line.indexOf("MOPAC2") + 5)); +} +JU.Logger.info("MOPAC version " + this.mopacVersion); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (!this.haveHeader) { +if (this.line.trim().equals("CARTESIAN COORDINATES")) { +this.processCoordinates(); +this.asc.setAtomSetName("Input Structure"); +return true; +}this.haveHeader = this.line.startsWith(" ---"); +return true; +}if (this.line.indexOf("TOTAL ENERGY") >= 0) { +this.processTotalEnergy(); +return true; +}if (this.line.indexOf("ATOMIC CHARGES") >= 0) { +this.processAtomicCharges(); +return true; +}if (this.line.trim().equals("CARTESIAN COORDINATES")) { +this.processCoordinates(); +return true; +}if (this.line.indexOf("ORIENTATION OF MOLECULE IN FORCE") >= 0) { +this.processCoordinates(); +this.asc.setAtomSetName("Orientation in Force Field"); +return true; +}if (this.line.indexOf("NORMAL COORDINATE ANALYSIS") >= 0) { +this.readFrequencies(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "processTotalEnergy", +function(){ +}); +Clazz.defineMethod(c$, "processAtomicCharges", +function(){ +this.readLines(2); +this.asc.newAtomSet(); +this.baseAtomIndex = this.asc.ac; +var expectedAtomNumber = 0; +while (this.rd() != null) { +var atomNumber = this.parseIntStr(this.line); +if (atomNumber == -2147483648) break; +++expectedAtomNumber; +if (atomNumber != expectedAtomNumber) throw new Exception("unexpected atom number in atomic charges"); +var atom = this.asc.addNewAtom(); +atom.elementSymbol = this.parseToken(); +atom.partialCharge = this.parseFloat(); +} +this.chargesFound = true; +}); +Clazz.defineMethod(c$, "processCoordinates", +function(){ +if (!this.chargesFound) { +this.asc.newAtomSet(); +this.baseAtomIndex = this.asc.ac; +} else { +this.chargesFound = false; +}var atoms = this.asc.atoms; +var atomNumber; +while (this.rd().trim().length == 0 || this.line.indexOf("ATOM") >= 0) { +} +while (this.line != null) { +var tokens = this.getTokens(); +if (tokens.length == 0 || (atomNumber = this.parseIntStr(tokens[0])) == -2147483648) break; +var atom = atoms[this.baseAtomIndex + atomNumber - 1]; +if (atom == null) atom = this.asc.addNewAtom(); +atom.atomSerial = atomNumber; +this.setAtomCoordTokens(atom, tokens, 2); +var elementSymbol = tokens[1]; +var atno = this.parseIntStr(elementSymbol); +if (atno != -2147483648) elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(atno); +atom.elementSymbol = elementSymbol; +this.rd(); +} +}); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +var bsOK = new JU.BS(); +var n0 = this.asc.iSet + 1; +var tokens; +var done = false; +while (!done && this.rd() != null && this.line.indexOf("DESCRIPTION") < 0 && this.line.indexOf("MASS-WEIGHTED") < 0) if (this.line.toUpperCase().indexOf("ROOT") >= 0) { +this.discardLinesUntilNonBlank(); +tokens = this.getTokens(); +if (Float.isNaN(JU.PT.parseFloatStrict(tokens[tokens.length - 1]))) { +this.discardLinesUntilNonBlank(); +tokens = this.getTokens(); +}var frequencyCount = tokens.length; +this.rd(); +var iAtom0 = this.asc.ac; +var ac = this.asc.getLastAtomSetAtomCount(); +var ignore = Clazz.newBooleanArray(frequencyCount, false); +var freq1 = JU.PT.parseFloatStrict(tokens[0]); +var ignoreNegative = (freq1 < 0); +for (var i = 0; i < frequencyCount; ++i) { +ignore[i] = done || (done = (!ignoreNegative && JU.PT.parseFloatStrict(tokens[i]) < 1)) || !this.doGetVibration(++this.vibrationNumber); +if (ignore[i]) continue; +bsOK.set(this.vibrationNumber - 1); +this.asc.cloneLastAtomSet(); +} +this.fillFrequencyData(iAtom0, ac, ac, ignore, false, 0, 0, null, 2, null); +} +var info = new Array(this.vibrationNumber); +if (this.line.indexOf("DESCRIPTION") < 0) this.discardLinesUntilContains("DESCRIPTION"); +while (this.discardLinesUntilContains("VIBRATION") != null) { +tokens = this.getTokens(); +var freqNo = this.parseIntStr(tokens[1]); +tokens[0] = JU.PT.getTokens(this.rd())[1]; +if (tokens[2].equals("ATOM")) tokens[2] = null; +info[freqNo - 1] = tokens; +if (freqNo == this.vibrationNumber) break; +} +for (var i = this.vibrationNumber - 1; --i >= 0; ) if (info[i] == null) info[i] = info[i + 1]; + +for (var i = 0, n = n0; i < this.vibrationNumber; i++) { +if (!bsOK.get(i)) continue; +this.asc.iSet = n++; +this.asc.setAtomSetFrequency(this.vibrationNumber, null, info[i][2], info[i][0], null); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/OrcaReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/OrcaReader.js new file mode 100755 index 000000000000..81d252156637 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/OrcaReader.js @@ -0,0 +1,70 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.simple.OrcaReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.chargeTag = null; +this.atomCount = 0; +this.xyzBohr = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.simple, "OrcaReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.chargeTag = (this.checkAndRemoveFilterKey("CHARGE=LOW") ? "LOEW" : "MULL"); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.startsWith("! Bohrs")) { +this.xyzBohr = true; +return true; +}if (this.line.startsWith("* xyz") || this.line.startsWith("*xyz")) { +this.processInputFile(); +this.continuing = false; +return false; +}if (this.line.indexOf("CARTESIAN COORDINATES (ANG") >= 0) { +this.processCoordinates(); +return true; +}if (this.line.indexOf("ATOMIC CHARGES") >= 0 && this.line.indexOf(this.chargeTag) >= 0) { +this.processAtomicCharges(); +return true; +}if (this.line.startsWith("Total Energy")) { +this.processEnergyLine(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "processEnergyLine", +function(){ +var tokens = this.getTokens(); +this.asc.setAtomSetEnergy(tokens[3], Float.parseFloat(tokens[3])); +}); +Clazz.defineMethod(c$, "processInputFile", +function(){ +while (this.rd() != null) { +while (this.line.trim().length == 0 || this.line.startsWith("#")) { +this.rd(); +} +if (this.line.indexOf("*") >= 0) break; +var tokens = this.getTokens(); +var a = this.addAtomXYZSymName(tokens, 1, tokens[0], null); +if (this.xyzBohr) a.scale(0.5291772); +} +}); +Clazz.defineMethod(c$, "processCoordinates", +function(){ +this.asc.newAtomSet(); +this.baseAtomIndex = this.asc.ac; +this.rd(); +while (this.rd() != null) { +var tokens = this.getTokens(); +if (tokens.length != 4) break; +this.addAtomXYZSymName(tokens, 1, tokens[0], null); +} +if (this.baseAtomIndex == 0) this.atomCount = this.asc.ac; +}); +Clazz.defineMethod(c$, "processAtomicCharges", +function(){ +this.rd(); +for (var i = 0; i < this.atomCount; i++) { +this.rd(); +this.asc.atoms[i + this.baseAtomIndex].partialCharge = Float.parseFloat(this.line.substring(this.line.indexOf(":") + 1)); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/TinkerReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/TinkerReader.js new file mode 100755 index 000000000000..62ddc0c99b13 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/simple/TinkerReader.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.adapter.readers.simple"); +Clazz.load(["J.adapter.readers.simple.FoldingXyzReader"], "J.adapter.readers.simple.TinkerReader", null, function(){ +var c$ = Clazz.declareType(J.adapter.readers.simple, "TinkerReader", J.adapter.readers.simple.FoldingXyzReader); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/OdysseyReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/OdysseyReader.js new file mode 100755 index 000000000000..8042919af5e4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/OdysseyReader.js @@ -0,0 +1,14 @@ +Clazz.declarePackage("J.adapter.readers.spartan"); +Clazz.load(["J.adapter.readers.spartan.SpartanInputReader"], "J.adapter.readers.spartan.OdysseyReader", null, function(){ +var c$ = Clazz.declareType(J.adapter.readers.spartan, "OdysseyReader", J.adapter.readers.spartan.SpartanInputReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +var title = this.readInputRecords(); +this.asc.setAtomSetName(title == null ? "Odyssey file" : title); +while (this.line != null && this.line.indexOf("END ") < 0 && this.line.indexOf("MOLSTATE") < 0) this.rd(); + +if (this.line != null && this.line.indexOf("MOLSTATE") >= 0) this.readTransform(); +this.continuing = false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanArchive.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanArchive.js new file mode 100755 index 000000000000..7aab3baf1d29 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanArchive.js @@ -0,0 +1,450 @@ +Clazz.declarePackage("J.adapter.readers.spartan"); +Clazz.load(null, "J.adapter.readers.spartan.SpartanArchive", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "$.V3", "J.adapter.smarter.AtomSetCollectionReader", "$.Bond", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modelCount = 0; +this.modelAtomCount = 0; +this.ac = 0; +this.bondData = null; +this.moCount = 0; +this.coefCount = 0; +this.shellCount = 0; +this.gaussianCount = 0; +this.endCheck = null; +this.isSMOL = false; +this.r = null; +this.line = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.spartan, "SpartanArchive", null); +Clazz.makeConstructor(c$, +function(r, bondData, endCheck, smolAtomCount){ +this.initialize(r, bondData); +this.modelAtomCount = smolAtomCount; +this.endCheck = endCheck; +this.isSMOL = (endCheck != null); +}, "J.adapter.readers.quantum.BasisFunctionReader,~S,~S,~N"); +Clazz.defineMethod(c$, "initialize", +function(r, bondData){ +this.r = r; +r.moData.put("isNormalized", Boolean.TRUE); +r.moData.put("energyUnits", ""); +this.bondData = bondData; +}, "J.adapter.readers.quantum.BasisFunctionReader,~S"); +Clazz.defineMethod(c$, "readArchive", +function(infoLine, haveGeometryLine, ac0, doAddAtoms){ +this.modelAtomCount = this.setInfo(infoLine); +this.line = (haveGeometryLine ? "GEOMETRY" : ""); +var haveMOData = false; +var skipping = false; +while (this.line != null) { +if (this.line.equals("GEOMETRY")) { +if (!this.isSMOL && !this.r.doGetModel(++this.modelCount, null)) { +this.readLine(); +skipping = true; +continue; +}skipping = false; +this.readAtoms(ac0, doAddAtoms); +if (doAddAtoms && this.bondData.length > 0) this.addBonds(this.bondData, ac0); +} else if (this.line.indexOf("BASIS") == 0) { +if (this.r.doReadMolecularOrbitals) { +this.readBasis(); +} else { +this.r.discardLinesUntilContains("ENERGY"); +this.line = this.r.line; +continue; +}} else if (this.line.indexOf("WAVEFUNC") == 0 || this.line.indexOf("BETA") == 0) { +if (this.r.doReadMolecularOrbitals && !skipping) { +this.readMolecularOrbital(); +haveMOData = true; +} else { +this.r.discardLinesUntilContains("GEOM"); +this.line = this.r.line; +}} else if (this.line.indexOf("ENERGY") == 0 && !skipping) { +this.readEnergy(); +} else if (this.line.equals("ENDARCHIVE") || this.isSMOL && this.line.indexOf(this.endCheck) == 0) { +break; +}this.readLine(); +} +if (haveMOData) this.r.finalizeMOData(this.r.moData); +return this.modelAtomCount; +}, "~S,~B,~N,~B"); +Clazz.defineMethod(c$, "readEnergy", +function(){ +var tokens = JU.PT.getTokens(this.readLine()); +var value = this.parseFloat(tokens[0]); +this.r.asc.setCurrentModelInfo("energy", Float.$valueOf(value)); +if (this.isSMOL) (this.r).setEnergy(value); +this.r.asc.setAtomSetEnergy(tokens[0], value); +}); +Clazz.defineMethod(c$, "setInfo", +function(info){ +var tokens = JU.PT.getTokens(info); +if (JU.Logger.debugging) { +JU.Logger.debug("reading Spartan archive info :" + info); +}this.modelAtomCount = this.parseInt(tokens[0]); +this.coefCount = this.parseInt(tokens[1]); +this.shellCount = this.parseInt(tokens[2]); +this.gaussianCount = this.parseInt(tokens[3]); +this.moCount = this.parseInt(tokens[6]); +this.r.calculationType = tokens[9]; +var s = this.r.moData.get("calculationType"); +if (s == null) s = this.r.calculationType; + else if (s.indexOf(this.r.calculationType) < 0) s = this.r.calculationType + s; +this.r.moData.put("calculationType", this.r.calculationType = s); +return this.modelAtomCount; +}, "~S"); +Clazz.defineMethod(c$, "readAtoms", +function(ac0, doAddAtoms){ +for (var i = 0; i < this.modelAtomCount; i++) { +var tokens = JU.PT.getTokens(this.readLine()); +var atom = (doAddAtoms ? this.r.asc.addNewAtom() : this.r.asc.atoms[ac0 - this.modelAtomCount + i]); +atom.elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(this.parseInt(tokens[0])); +this.r.setAtomCoordScaled(atom, tokens, 1, 0.5291772); +} +if (doAddAtoms && JU.Logger.debugging) { +JU.Logger.debug(this.r.asc.ac + " atoms read"); +}}, "~N,~B"); +Clazz.defineMethod(c$, "addBonds", +function(data, ac0){ +var tokens = JU.PT.getTokens(data); +for (var i = this.modelAtomCount; i < tokens.length; ) { +var sourceIndex = this.parseInt(tokens[i++]) - 1 + ac0; +var targetIndex = this.parseInt(tokens[i++]) - 1 + ac0; +var bondOrder = this.parseInt(tokens[i++]); +if (bondOrder > 0) { +this.r.asc.addBond( new J.adapter.smarter.Bond(sourceIndex, targetIndex, bondOrder < 4 ? bondOrder : bondOrder == 5 ? 515 : 1)); +}} +var bondCount = this.r.asc.bondCount; +if (JU.Logger.debugging) { +JU.Logger.debug(bondCount + " bonds read"); +}}, "~S,~N"); +Clazz.defineMethod(c$, "readBasis", +function(){ +var shells = new JU.Lst(); +var gaussians = JU.AU.newFloat2(this.gaussianCount); +var typeArray = Clazz.newIntArray (this.gaussianCount, 0); +for (var i = 0; i < this.shellCount; i++) { +var tokens = JU.PT.getTokens(this.readLine()); +var isSpherical = (tokens[4].charAt(0) == '1'); +var slater = Clazz.newIntArray (4, 0); +slater[0] = this.parseInt(tokens[3]); +var iBasis = this.parseInt(tokens[0]); +switch (iBasis) { +case 0: +iBasis = 0; +break; +case 1: +iBasis = (isSpherical ? 1 : 2); +break; +case 2: +iBasis = (isSpherical ? 3 : 4); +break; +case 3: +iBasis = (isSpherical ? 5 : 6); +break; +} +slater[1] = iBasis; +slater[2] = this.parseInt(tokens[2]); +var gaussianPtr = slater[2] - 1; +var nGaussians = slater[3] = this.parseInt(tokens[1]); +for (var j = 0; j < nGaussians; j++) typeArray[gaussianPtr + j] = iBasis; + +shells.addLast(slater); +} +for (var i = 0; i < this.gaussianCount; i++) { +var alpha = this.parseFloat(this.readLine()); +var tokens = JU.PT.getTokens(this.readLine()); +var nData = tokens.length; +var data = Clazz.newFloatArray (nData + 1, 0); +data[0] = alpha; +switch (typeArray[i]) { +case 0: +data[1] = this.parseFloat(tokens[0]); +break; +case 1: +data[1] = this.parseFloat(tokens[1]); +break; +case 2: +data[1] = this.parseFloat(tokens[0]); +data[2] = this.parseFloat(tokens[1]); +if (data[1] == 0) { +data[1] = data[2]; +typeArray[i] = 2; +}break; +case 4: +case 3: +data[1] = this.parseFloat(tokens[2]); +break; +case 6: +case 5: +data[1] = this.parseFloat(tokens[3]); +break; +} +gaussians[i] = data; +} +var nCoeff = 0; +for (var i = 0; i < this.shellCount; i++) { +var slater = shells.get(i); +switch (typeArray[slater[2] - 1]) { +case 0: +nCoeff++; +break; +case 1: +slater[1] = 1; +nCoeff += 3; +break; +case 2: +nCoeff += 4; +break; +case 3: +nCoeff += 5; +break; +case 4: +nCoeff += 6; +break; +case 5: +nCoeff += 7; +break; +case 6: +nCoeff += 10; +break; +} +} +var isD5F7 = (nCoeff < this.coefCount); +if (isD5F7) for (var i = 0; i < this.shellCount; i++) { +var slater = shells.get(i); +switch (typeArray[i]) { +case 4: +slater[1] = 3; +break; +case 6: +slater[1] = 5; +break; +} +} +this.r.moData.put("shells", shells); +this.r.moData.put("gaussians", gaussians); +if (JU.Logger.debugging) { +JU.Logger.debug(shells.size() + " slater shells read"); +JU.Logger.debug(gaussians.length + " gaussian primitives read"); +}}); +Clazz.defineMethod(c$, "readMolecularOrbital", +function(){ +var tokenPt = 0; +this.r.orbitals = new JU.Lst(); +var tokens = JU.PT.getTokens(""); +var energies = Clazz.newFloatArray (this.moCount, 0); +var coefficients = Clazz.newFloatArray (this.moCount, this.coefCount, 0); +for (var i = 0; i < this.moCount; i++) { +if (tokenPt == tokens.length) { +tokens = JU.PT.getTokens(this.readLine()); +tokenPt = 0; +}energies[i] = this.parseFloat(tokens[tokenPt++]); +} +for (var i = 0; i < this.moCount; i++) { +for (var j = 0; j < this.coefCount; j++) { +if (tokenPt == tokens.length) { +tokens = JU.PT.getTokens(this.readLine()); +tokenPt = 0; +}coefficients[i][j] = this.parseFloat(tokens[tokenPt++]); +} +} +for (var i = 0; i < this.moCount; i++) { +var mo = new java.util.Hashtable(); +mo.put("energy", Float.$valueOf(energies[i])); +mo.put("coefficients", coefficients[i]); +this.r.setMO(mo); +} +if (JU.Logger.debugging) { +JU.Logger.debug(this.r.orbitals.size() + " molecular orbitals read"); +}this.r.moData.put("mos", this.r.orbitals); +}); +Clazz.defineMethod(c$, "readProperties", +function(){ +if (JU.Logger.debugging) JU.Logger.debug("Reading PROPARC properties records..."); +while (this.readLine() != null && !this.line.startsWith("ENDPROPARC") && !this.line.startsWith("END Directory Entry ")) { +if (this.line.startsWith("PROP")) this.readProperty(); + else if (this.line.startsWith("DIPOLE")) this.readDipole(); + else if (this.line.startsWith("VIBFREQ")) this.readVibFreqs(); +} +this.setVibrationsFromProperties(); +}); +Clazz.defineMethod(c$, "readDipole", +function(){ +this.setDipole(JU.PT.getTokens(this.readLine())); +}); +Clazz.defineMethod(c$, "setDipole", +function(tokens){ +if (tokens.length != 3) return; +var dipole = JU.V3.new3(this.parseFloat(tokens[0]), this.parseFloat(tokens[1]), this.parseFloat(tokens[2])); +this.r.asc.setCurrentModelInfo("dipole", dipole); +}, "~A"); +Clazz.defineMethod(c$, "readProperty", +function(){ +var tokens = JU.PT.getTokens(this.line); +if (tokens.length == 0) return; +var isString = (tokens[1].startsWith("STRING")); +var keyName = tokens[2]; +var isDipole = (keyName.equals("DIPOLE_VEC")); +var value = new Clazz._O(); +var vector = new JU.Lst(); +if (tokens[3].equals("=")) { +if (isString) { +value = this.getQuotedString(tokens[4].substring(0, 1)); +} else { +value = Float.$valueOf(this.parseFloat(tokens[4])); +}} else if (tokens[tokens.length - 1].equals("BEGIN")) { +var nValues = this.parseInt(tokens[tokens.length - 2]); +if (nValues == 0) nValues = 1; +var isArray = (tokens.length == 6); +var atomInfo = new JU.Lst(); +var ipt = 0; +while (this.readLine() != null && !this.line.substring(0, 3).equals("END")) { +if (isString) { +value = this.getQuotedString("\""); +vector.addLast(value); +} else { +var tokens2 = JU.PT.getTokens(this.line); +if (isDipole) this.setDipole(tokens2); +for (var i = 0; i < tokens2.length; i++, ipt++) { +if (isArray) { +atomInfo.addLast(Float.$valueOf(this.parseFloat(tokens2[i]))); +if ((ipt + 1) % nValues == 0) { +vector.addLast(atomInfo); +atomInfo = new JU.Lst(); +}} else { +value = Float.$valueOf(this.parseFloat(tokens2[i])); +vector.addLast(value); +}} +}} +value = null; +} else { +if (JU.Logger.debugging) { +JU.Logger.debug(" Skipping property line " + this.line); +}}if (value != null) this.r.asc.setInfo(keyName, value); +if (vector.size() != 0) this.r.asc.setInfo(keyName, vector); +}); +Clazz.defineMethod(c$, "readVibFreqs", +function(){ +this.readLine(); +var label = ""; +var frequencyCount = this.parseInt(this.line); +var vibrations = new JU.Lst(); +var freqs = new JU.Lst(); +if (JU.Logger.debugging) { +JU.Logger.debug("reading VIBFREQ vibration records: frequencyCount = " + frequencyCount); +}var ignore = Clazz.newBooleanArray(frequencyCount, false); +for (var i = 0; i < frequencyCount; ++i) { +var ac0 = this.r.asc.ac; +ignore[i] = !this.r.doGetVibration(++this.r.vibrationNumber); +if (!ignore[i] && this.r.desiredVibrationNumber <= 0) { +this.r.asc.cloneLastAtomSet(); +this.addBonds(this.bondData, ac0); +}this.readLine(); +var info = new java.util.Hashtable(); +var freq = this.parseFloat(this.line); +info.put("freq", Float.$valueOf(freq)); +if (this.line.length > 15 && !(label = this.line.substring(15, this.line.length)).equals("???")) info.put("label", label); +freqs.addLast(info); +if (!ignore[i]) { +this.r.asc.setAtomSetFrequency(this.r.vibrationNumber, null, label, "" + freq, null); +}} +this.r.asc.setInfo("VibFreqs", freqs); +var ac = this.r.asc.getAtomSetAtomCount(0); +var vib = new JU.Lst(); +var vibatom = new JU.Lst(); +var ifreq = 0; +var iatom = ac; +var nValues = 3; +var atomInfo = Clazz.newFloatArray (3, 0); +while (this.readLine() != null) { +var tokens2 = JU.PT.getTokens(this.line); +for (var i = 0; i < tokens2.length; i++) { +var f = this.parseFloat(tokens2[i]); +atomInfo[i % nValues] = f; +vibatom.addLast(Float.$valueOf(f)); +if ((i + 1) % nValues == 0) { +if (!ignore[ifreq]) { +this.r.asc.addVibrationVector(iatom, atomInfo[0], atomInfo[1], atomInfo[2]); +vib.addLast(vibatom); +vibatom = new JU.Lst(); +}++iatom; +}} +if (iatom % ac == 0) { +if (!ignore[ifreq]) { +vibrations.addLast(vib); +}vib = new JU.Lst(); +if (++ifreq == frequencyCount) { +break; +}}} +this.r.asc.setInfo("vibration", vibrations); +}); +Clazz.defineMethod(c$, "setVibrationsFromProperties", +function(){ +var freq_modes = this.r.asc.atomSetInfo.get("FREQ_MODES"); +if (freq_modes == null) { +return; +}var freq_lab = this.r.asc.atomSetInfo.get("FREQ_LAB"); +var freq_val = this.r.asc.atomSetInfo.get("FREQ_VAL"); +var frequencyCount = freq_val.size(); +var vibrations = new JU.Lst(); +var freqs = new JU.Lst(); +if (JU.Logger.debugging) { +JU.Logger.debug("reading PROP VALUE:VIB FREQ_MODE vibration records: frequencyCount = " + frequencyCount); +}var v; +for (var i = 0; i < frequencyCount; ++i) { +var ac0 = this.r.asc.ac; +this.r.asc.cloneLastAtomSet(); +this.addBonds(this.bondData, ac0); +var info = new java.util.Hashtable(); +info.put("freq", (v = freq_val.get(i))); +var freq = v.floatValue(); +var label = freq_lab.get(i); +if (!label.equals("???")) { +info.put("label", label); +}freqs.addLast(info); +this.r.asc.setAtomSetName(label + " " + freq + " cm^-1"); +this.r.asc.setAtomSetModelProperty("Frequency", freq + " cm^-1"); +this.r.asc.setAtomSetModelProperty(".PATH", "Frequencies"); +} +this.r.asc.setInfo("VibFreqs", freqs); +var ac = this.r.asc.getAtomSetAtomCount(0); +var iatom = ac; +for (var i = 0; i < frequencyCount; i++) { +if (!this.r.doGetVibration(i + 1)) continue; +var ipt = 0; +var vib = new JU.Lst(); +var mode = freq_modes.get(i); +for (var ia = 0; ia < ac; ia++, iatom++) { +var vibatom = new JU.Lst(); +var vx = (v = mode.get(ipt++)).floatValue(); +vibatom.addLast(v); +var vy = (v = mode.get(ipt++)).floatValue(); +vibatom.addLast(v); +var vz = (v = mode.get(ipt++)).floatValue(); +vibatom.addLast(v); +this.r.asc.addVibrationVector(iatom, vx, vy, vz); +vib.addLast(vibatom); +} +vibrations.addLast(vib); +} +this.r.asc.setInfo("vibration", vibrations); +}); +Clazz.defineMethod(c$, "getQuotedString", +function(strQuote){ +var i = this.line.indexOf(strQuote); +var j = this.line.lastIndexOf(strQuote); +return (j == i ? "" : this.line.substring(i + 1, j)); +}, "~S"); +Clazz.defineMethod(c$, "parseInt", +function(info){ +return this.r.parseIntStr(info); +}, "~S"); +Clazz.defineMethod(c$, "parseFloat", +function(info){ +return this.r.parseFloatStr(info); +}, "~S"); +Clazz.defineMethod(c$, "readLine", +function(){ +return (this.line = this.r.rd()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanInputReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanInputReader.js new file mode 100755 index 000000000000..3dd78814bfdf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanInputReader.js @@ -0,0 +1,89 @@ +Clazz.declarePackage("J.adapter.readers.spartan"); +Clazz.load(["J.adapter.readers.quantum.BasisFunctionReader"], "J.adapter.readers.spartan.SpartanInputReader", ["JU.PT", "J.adapter.smarter.Bond", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modelAtomCount = 0; +this.bondData = ""; +this.constraints = ""; +Clazz.instantialize(this, arguments);}, J.adapter.readers.spartan, "SpartanInputReader", J.adapter.readers.quantum.BasisFunctionReader); +Clazz.defineMethod(c$, "readInputRecords", +function(){ +var ac0 = this.asc.ac; +var modelName = this.readInputHeader(); +while (this.rd() != null) { +var tokens = this.getTokens(); +if (tokens.length == 2 && this.parseIntStr(tokens[0]) != -2147483648 && this.parseIntStr(tokens[1]) >= 0) break; +} +if (this.line == null) return null; +this.readInputAtoms(); +this.discardLinesUntilContains("ATOMLABELS"); +if (this.line != null) this.readAtomNames(); +if (this.modelAtomCount > 1) { +this.discardLinesUntilContains("HESSIAN"); +if (this.line != null) this.readBonds(ac0); +if (this.line != null && this.line.indexOf("BEGINCONSTRAINTS") >= 0) this.readConstraints(); +}return modelName; +}); +Clazz.defineMethod(c$, "readConstraints", +function(){ +this.constraints = ""; +while (this.rd() != null && this.line.indexOf("END") < 0) this.constraints += (this.constraints === "" ? "" : "\n") + this.line; + +this.rd(); +if (this.constraints.length == 0) return; +this.asc.setCurrentModelInfo("constraints", this.constraints); +this.asc.setAtomSetModelProperty(".PATH", "EnergyProfile"); +this.asc.setAtomSetModelProperty("Constraint", this.constraints); +}); +Clazz.defineMethod(c$, "readTransform", +function(){ +this.rd(); +var tokens = JU.PT.getTokens(this.rd() + " " + this.rd()); +this.setTransform(this.parseFloatStr(tokens[0]), this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[4]), this.parseFloatStr(tokens[5]), this.parseFloatStr(tokens[6]), this.parseFloatStr(tokens[8]), this.parseFloatStr(tokens[9]), this.parseFloatStr(tokens[10])); +}); +Clazz.defineMethod(c$, "readInputHeader", +function(){ +while (this.rd() != null && !this.line.startsWith(" ")) { +} +this.rd(); +return this.line.substring(0, (this.line + ";").indexOf(";")).trim(); +}); +Clazz.defineMethod(c$, "readInputAtoms", +function(){ +this.modelAtomCount = 0; +while (this.rd() != null && !this.line.startsWith("ENDCART")) { +var tokens = this.getTokens(); +this.addAtomXYZSymName(tokens, 1, J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(this.parseIntStr(tokens[0])), null); +this.modelAtomCount++; +} +if (this.debugging) JU.Logger.debug(this.asc.ac + " atoms read"); +}); +Clazz.defineMethod(c$, "readAtomNames", +function(){ +var atom0 = this.asc.ac - this.modelAtomCount; +for (var i = 0; i < this.modelAtomCount; i++) { +this.line = this.rd().trim(); +var name = this.line.substring(1, this.line.length - 1); +this.asc.atoms[atom0 + i].atomName = name; +} +}); +Clazz.defineMethod(c$, "readBonds", +function(ac0){ +var nAtoms = this.modelAtomCount; +this.bondData = ""; +while (this.rd() != null && !this.line.startsWith("ENDHESS")) { +var tokens = this.getTokens(); +this.bondData += this.line + " "; +if (nAtoms == 0) { +var sourceIndex = this.parseIntStr(tokens[0]) - 1 + ac0; +var targetIndex = this.parseIntStr(tokens[1]) - 1 + ac0; +var bondOrder = this.parseIntStr(tokens[2]); +if (bondOrder > 0) { +this.asc.addBond( new J.adapter.smarter.Bond(sourceIndex, targetIndex, bondOrder < 4 ? bondOrder : bondOrder == 5 ? 515 : 1)); +}} else { +nAtoms -= tokens.length; +}} +this.rd(); +if (this.debugging) JU.Logger.debug(this.asc.bondCount + " bonds read"); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanReader.js new file mode 100755 index 000000000000..4ff40991b8e2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanReader.js @@ -0,0 +1,72 @@ +Clazz.declarePackage("J.adapter.readers.spartan"); +Clazz.load(["J.adapter.readers.quantum.BasisFunctionReader"], "J.adapter.readers.spartan.SpartanReader", ["java.util.Hashtable", "J.adapter.readers.spartan.SpartanArchive"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.spartan, "SpartanReader", J.adapter.readers.quantum.BasisFunctionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +var cartesianHeader = "Cartesian Coordinates (Ang"; +if (this.isSpartanArchive(cartesianHeader)) { +this.moData = new java.util.Hashtable(); +var spartanArchive = new J.adapter.readers.spartan.SpartanArchive(this, "", null, 0); +var ac = spartanArchive.readArchive(this.line, true, 0, true); +if (ac > 0) this.asc.setAtomSetName("Spartan file"); +} else if (this.line.indexOf(cartesianHeader) >= 0) { +this.readAtoms(); +this.discardLinesUntilContains("Vibrational Frequencies"); +if (this.line != null) this.readFrequencies(); +}this.continuing = false; +}); +Clazz.defineMethod(c$, "isSpartanArchive", +function(strNotArchive){ +var lastLine = ""; +while (this.rd() != null) { +if (this.line.equals("GEOMETRY")) { +this.line = lastLine; +return true; +}if (this.line.indexOf(strNotArchive) >= 0) return false; +lastLine = this.line; +} +return false; +}, "~S"); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.discardLinesUntilBlank(); +while (this.rd() != null && (this.parseIntRange(this.line, 0, 3)) > 0) { +var atom = this.asc.addNewAtom(); +atom.elementSymbol = this.parseTokenRange(this.line, 4, 6); +atom.atomName = this.parseTokenRange(this.line, 7, 13); +this.setAtomCoordXYZ(atom, this.parseFloatRange(this.line, 17, 30), this.parseFloatRange(this.line, 31, 44), this.parseFloatRange(this.line, 45, 58)); +} +}); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +var ac = this.asc.getAtomSetAtomCount(0); +while (true) { +this.discardLinesUntilNonBlank(); +var lineBaseFreqCount = this.vibrationNumber; +this.next[0] = 16; +var lineFreqCount; +var ignore = Clazz.newBooleanArray(3, false); +for (lineFreqCount = 0; lineFreqCount < 3; ++lineFreqCount) { +var frequency = this.parseFloat(); +if (Float.isNaN(frequency)) break; +ignore[lineFreqCount] = !this.doGetVibration(++this.vibrationNumber); +if (!ignore[lineFreqCount]) { +if (this.vibrationNumber > 1) this.asc.cloneFirstAtomSet(0); +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, "" + frequency, null); +}} +if (lineFreqCount == 0) return; +this.readLines(2); +for (var i = 0; i < ac; ++i) { +this.rd(); +for (var j = 0; j < lineFreqCount; ++j) { +var ichCoords = j * 23 + 10; +var x = this.parseFloatRange(this.line, ichCoords, ichCoords + 7); +var y = this.parseFloatRange(this.line, ichCoords + 7, ichCoords + 14); +var z = this.parseFloatRange(this.line, ichCoords + 14, ichCoords + 21); +if (!ignore[j]) this.asc.addVibrationVector(i + (lineBaseFreqCount + j) * ac, x, y, z); +} +} +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanSmolReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanSmolReader.js new file mode 100755 index 000000000000..15454d0a3000 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanSmolReader.js @@ -0,0 +1,182 @@ +Clazz.declarePackage("J.adapter.readers.spartan"); +Clazz.load(["J.adapter.readers.spartan.SpartanInputReader"], "J.adapter.readers.spartan.SpartanSmolReader", ["java.util.Hashtable", "JU.BC", "$.PT", "$.SB", "J.adapter.readers.spartan.SpartanArchive", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.iHaveModelStatement = false; +this.isCompoundDocument = false; +this.inputOnly = false; +this.espCharges = false; +this.natCharges = false; +this.isInputFirst = false; +this.iHaveNewDir = false; +this.title = null; +this.spartanArchive = null; +this.titles = null; +this.haveCharges = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.spartan, "SpartanSmolReader", J.adapter.readers.spartan.SpartanInputReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.isCompoundDocument = (this.rd().indexOf("Compound Document File Directory") >= 0); +this.inputOnly = this.checkFilterKey("INPUT"); +this.natCharges = this.checkFilterKey("NATCHAR"); +this.espCharges = !this.natCharges && !this.checkFilterKey("MULLIKEN"); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +var pt = 3; +var isNewDir = (this.isCompoundDocument && this.line.startsWith("NEW Directory M") && !this.line.startsWith("NEW Directory Molecules")); +if (isNewDir) this.iHaveNewDir = true; +var isMolecule = (!this.iHaveNewDir && !isNewDir && this.isCompoundDocument && this.line.equals("BEGIN Directory Entry Molecule")); +var isMacDir = (!this.isCompoundDocument && (pt = this.line.indexOf("#JMOL_MODEL")) >= 0); +if (isNewDir || isMolecule || isMacDir) { +if (this.modelNumber > 0 && !this.isInputFirst) this.applySymmetryAndSetTrajectory(); +this.iHaveModelStatement = true; +var modelNo = (isMolecule ? 0 : this.parseIntAt(this.line, pt + 12)); +this.modelNumber = (this.bsModels == null && modelNo != -2147483648 && modelNo != 0 ? modelNo : this.modelNumber + 1); +this.bondData = ""; +if (!this.doGetModel(this.modelNumber, null)) { +if (this.isInputFirst) { +this.asc.removeCurrentAtomSet(); +this.discardLinesUntilContains("BEGIN Directory Entry Input"); +} else if (isNewDir) { +this.discardLinesUntilContains("NEW Directory M"); +} else if (isMolecule) { +this.discardLinesUntilContains("BEGIN Directory Entry M"); +} else { +this.discardLinesUntilContains("#JMOL_MODEL"); +}this.checkLastModel(); +return false; +}if (!this.isInputFirst) { +this.makeNewAtomSet(); +}this.moData = new java.util.Hashtable(); +this.moData.put("isNormalized", Boolean.TRUE); +var isOK = false; +if (modelNo == -2147483648 || this.titles == null) { +modelNo = this.modelNumber; +this.title = "Model " + modelNo; +} else { +isOK = true; +this.title = this.titles.get("Title" + modelNo); +this.title = "Profile " + modelNo + (this.title == null ? "" : ": " + this.title); +}if (this.constraints == null && (isOK || !this.isInputFirst)) this.asc.setAtomSetName(this.title); +this.setModelPDB(false); +this.asc.setCurrentAtomSetNumber(modelNo); +if (isMolecule) this.readMyTransform(); +return true; +}if (this.iHaveModelStatement && !this.doProcessLines) return true; +if ((this.line.indexOf("BEGIN") == 0)) { +var lcline = this.line.toLowerCase(); +if (lcline.endsWith("input")) { +if (!this.iHaveModelStatement) this.isInputFirst = true; +if (this.isInputFirst) { +this.makeNewAtomSet(); +}this.bondData = ""; +this.title = this.readInputRecords(); +if (this.asc.errorMessage != null) { +this.continuing = false; +return false; +}if (this.title != null && this.constraints == null) this.asc.setAtomSetName(this.title); +this.setCharges(); +if (this.inputOnly) { +this.continuing = false; +return false; +}} else if (lcline.endsWith("_output")) { +return true; +} else if (lcline.endsWith("output")) { +this.readOutput(); +return false; +} else if (lcline.endsWith("molecule") || lcline.endsWith("molecule:asbinarystring")) { +this.readMyTransform(); +return false; +} else if (lcline.endsWith("proparc") || lcline.endsWith("propertyarchive")) { +this.readProperties(); +return false; +} else if (lcline.endsWith("molstate")) { +this.readTransform(); +return false; +} else if (lcline.endsWith("archive")) { +this.asc.setAtomSetName(this.readArchive()); +return false; +}return true; +}if (this.line.indexOf("5D shell") >= 0) this.moData.put("calculationType", this.calculationType = this.line); +return true; +}); +Clazz.defineMethod(c$, "makeNewAtomSet", +function(){ +if (this.asc.ac == 0) this.asc.removeCurrentAtomSet(); +this.asc.newAtomSet(); +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderASCR(); +if (this.asc.ac > 0 && this.spartanArchive != null && this.asc.bondCount == 0 && this.bondData != null) this.spartanArchive.addBonds(this.bondData, 0); +if (this.moData != null) { +var n = this.asc.atomSetInfo.get("HOMO_N"); +if (n != null) { +var i = n.intValue(); +this.moData.put("HOMO", Integer.$valueOf(i)); +}}}); +Clazz.defineMethod(c$, "readMyTransform", +function(){ +var mat; +var binaryCodes = this.rd(); +var tokens = JU.PT.getTokens(binaryCodes.trim()); +if (tokens.length < 16) return; +var bytes = Clazz.newByteArray (tokens.length, 0); +for (var i = 0; i < tokens.length; i++) bytes[i] = JU.PT.parseIntRadix(tokens[i], 16); + +mat = Clazz.newFloatArray (16, 0); +for (var i = 16, j = bytes.length - 8; --i >= 0; j -= 8) mat[i] = JU.BC.bytesToDoubleToFloat(bytes, j, false); + +this.setTransform(mat[0], mat[1], mat[2], mat[4], mat[5], mat[6], mat[8], mat[9], mat[10]); +}); +Clazz.defineMethod(c$, "readOutput", +function(){ +this.titles = new java.util.Hashtable(); +var header = new JU.SB(); +var pt; +while (this.rd() != null && !this.line.startsWith("END ") && !this.line.startsWith("ENDOUTPUT")) { +header.append(this.line).append("\n"); +if ((pt = this.line.indexOf(")")) > 0) this.titles.put("Title" + this.parseIntRange(this.line, 0, pt), (this.line.substring(pt + 1).trim())); +} +this.asc.setInfo("fileHeader", header.toString()); +}); +Clazz.defineMethod(c$, "readArchive", +function(){ +this.spartanArchive = new J.adapter.readers.spartan.SpartanArchive(this, this.bondData, "END Directory Entry ", 0); +var modelName = this.readArchiveHeader(); +if (modelName != null) this.modelAtomCount = this.spartanArchive.readArchive(this.line, false, this.asc.ac, false); +return (this.constraints == null ? modelName : null); +}); +Clazz.defineMethod(c$, "setCharges", +function(){ +if (this.haveCharges || this.asc.ac == 0) return; +this.haveCharges = (this.espCharges && this.asc.setAtomSetCollectionPartialCharges("ESPCHARGES") || this.natCharges && this.asc.setAtomSetCollectionPartialCharges("NATCHARGES") || this.asc.setAtomSetCollectionPartialCharges("MULCHARGES") || this.asc.setAtomSetCollectionPartialCharges("Q1_CHARGES") || this.asc.setAtomSetCollectionPartialCharges("ESPCHARGES")); +}); +Clazz.defineMethod(c$, "readProperties", +function(){ +if (this.modelAtomCount == 0) { +this.rd(); +return; +}if (this.spartanArchive == null) this.spartanArchive = new J.adapter.readers.spartan.SpartanArchive(this, this.bondData, "END Directory Entry ", this.modelAtomCount); +this.spartanArchive.readProperties(); +this.rd(); +this.setCharges(); +}); +Clazz.defineMethod(c$, "readArchiveHeader", +function(){ +var modelInfo = this.rd(); +if (this.debugging) JU.Logger.debug(modelInfo); +if (modelInfo.indexOf("Error:") == 0) return null; +this.asc.setCollectionName(modelInfo); +this.asc.setAtomSetName(modelInfo); +var modelName = this.rd(); +if (this.debugging) JU.Logger.debug(modelName); +this.rd(); +return modelName; +}); +Clazz.defineMethod(c$, "setEnergy", +function(value){ +this.asc.setAtomSetName(this.constraints + (this.constraints.length == 0 ? "" : " ") + "Energy=" + value + " KJ"); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanUtil.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanUtil.js new file mode 100755 index 000000000000..a85a11b2eedc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/spartan/SpartanUtil.js @@ -0,0 +1,252 @@ +Clazz.declarePackage("J.adapter.readers.spartan"); +Clazz.load(null, "J.adapter.readers.spartan.SpartanUtil", ["java.io.BufferedInputStream", "java.util.Hashtable", "$.StringTokenizer", "javajs.api.GenericZipInputStream", "JU.Lst", "$.PT", "$.Rdr", "$.SB", "J.api.Interface", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.fm = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.spartan, "SpartanUtil", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(fm){ +this.fm = fm; +return this; +}, "JV.FileManager"); +Clazz.defineMethod(c$, "getFileList", +function(name, isTypeCheckOnly){ +var pt = name.lastIndexOf(".spardir"); +var info = null; +if (name.endsWith(".spardir.zip")) { +info = Clazz.newArray(-1, ["SpartanSmol", "Directory Entry ", name + "|output"]); +} else { +name = name.$replace('\\', '/'); +if (!name.endsWith(".spardir") && name.indexOf(".spardir/") < 0) return null; +info = (name.lastIndexOf("/") > pt ? Clazz.newArray(-1, ["SpartanSmol", "Directory Entry ", name + "/input", name + "/archive", name + "/parchive", name + "/Molecule:asBinaryString", name + "/proparc"]) : Clazz.newArray(-1, ["SpartanSmol", "Directory Entry ", name + "/output"])); +}if (isTypeCheckOnly) return info; +var name00 = name; +var header = info[1]; +var outputFileName = info[2]; +var fileData = new java.util.Hashtable(); +if (info.length == 3) { +outputFileName = this.spartanGetObjectAsSections(outputFileName, header, fileData); +fileData.put("OUTPUT", outputFileName); +info = this.spartanFileList(name, fileData.get(outputFileName)); +if (info.length == 3) { +outputFileName = this.spartanGetObjectAsSections(info[2], header, fileData); +fileData.put("OUTPUT", outputFileName); +info = this.spartanFileList(info[1], fileData.get(outputFileName)); +}}var sb = new JU.SB(); +var s; +if (fileData.get("OUTPUT") != null) { +sb.append(fileData.get(fileData.get("OUTPUT"))); +}for (var i = 2; i < info.length; i++) { +name = info[i]; +name = this.spartanGetObjectAsSections(name, header, fileData); +JU.Logger.info("reading " + name); +s = fileData.get(name); +sb.append(s); +} +s = sb.toString(); +if (this.fm.spardirCache == null) this.fm.spardirCache = new java.util.Hashtable(); +this.fm.spardirCache.put(name00.$replace('\\', '/'), s.getBytes()); +return JU.Rdr.getBR(s); +}, "~S,~B"); +Clazz.defineMethod(c$, "getData", +function(is, zipDirectory){ +var data = new JU.SB(); +data.append("Zip File Directory: ").append("\n").append(JU.Escape.eAS(zipDirectory, true)).append("\n"); +var fileData = new java.util.Hashtable(); +this.getAllZipData(is, Clazz.newArray(-1, []), "", "Molecule", "__MACOSX", fileData); +var prefix = "|"; +var outputData = fileData.get(prefix + "output"); +if (outputData == null) outputData = fileData.get((prefix = "|" + zipDirectory[1]) + "output"); +data.append(outputData); +var files = this.getSpartanFileList(prefix, this.getSpartanDirs(outputData)); +for (var i = 2; i < files.length; i++) { +var name = files[i]; +if (fileData.containsKey(name)) data.append(fileData.get(name)); + else data.append(name + "\n"); +} +return data; +}, "java.io.InputStream,~A"); +Clazz.defineMethod(c$, "spartanFileList", +function(name, outputFileData){ +var dirNums = this.getSpartanDirs(outputFileData); +if (dirNums.length == 0) { +if (name.endsWith(".spardir")) return this.getSpartanFileList(name, Clazz.newArray(-1, ["M0001"])); +if (name.endsWith(".spardir.zip")) { +if (outputFileData.indexOf(".zip|output") >= 0) { +var sname = name.$replace('\\', '/'); +var pt = name.lastIndexOf(".spardir"); +pt = sname.lastIndexOf("/"); +sname = name + "|" + JU.PT.rep(name.substring(pt + 1, name.length - 4), "DROP_", ""); +return Clazz.newArray(-1, ["SpartanSmol", sname, sname + "/output"]); +}}}return this.getSpartanFileList(name, dirNums); +}, "~S,~S"); +Clazz.defineMethod(c$, "getSpartanDirs", +function(outputFileData){ +if (outputFileData == null) return Clazz.newArray(-1, []); +var v = new JU.Lst(); +var token; +var lastToken = ""; +if (outputFileData.startsWith("java.io.FileNotFoundException") || outputFileData.startsWith("FILE NOT FOUND") || outputFileData.indexOf("= 0) return new Array(0); +try { +var tokens = new java.util.StringTokenizer(outputFileData, " \t\r\n"); +while (tokens.hasMoreTokens()) { +if ((token = tokens.nextToken()).equals(")")) v.addLast(lastToken); + else if (token.equals("Start-") && tokens.nextToken().equals("Molecule")) v.addLast(JU.PT.split(tokens.nextToken(), "\"")[1]); + else if (token.equals("Molecules")) { +var n = JU.PT.parseInt(lastToken); +for (var i = 1; i <= n; i++) { +var s = "0000" + i; +v.addLast("M" + s.substring(s.length - 4)); +} +}lastToken = token; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return (v.size() == 0 ? Clazz.newArray(-1, ["M0001"]) : v.toArray( new Array(v.size()))); +}, "~S"); +Clazz.defineMethod(c$, "getSpartanFileList", +function(name, dirNums){ +var files = new Array(2 + dirNums.length * 6); +files[0] = "SpartanSmol"; +files[1] = "Directory Entry "; +var pt = 2; +name = name.$replace('\\', '/'); +if (name.endsWith("/")) name = name.substring(0, name.length - 1); +var sep = (name.equals("|") ? "" : name.endsWith(".zip") ? "|" : "/"); +for (var i = 0; i < dirNums.length; i++) { +var path = name + sep; +var s = dirNums[i]; +path += (JU.PT.isDigit(s.charAt(0)) ? "Profile." + s : s) + "/"; +files[pt++] = path + "#JMOL_MODEL " + dirNums[i]; +files[pt++] = path + "input"; +files[pt++] = path + "archive"; +files[pt++] = path + "parchive"; +files[pt++] = path + "Molecule:asBinaryString"; +files[pt++] = path + "proparc"; +} +return files; +}, "~S,~A"); +Clazz.defineMethod(c$, "spartanGetObjectAsSections", +function(name, header, fileData){ +if (name == null) return null; +var subFileList = null; +var asBinaryString = false; +var path = name.$replace('\\', '/'); +if (name.indexOf(":asBinaryString") >= 0) { +asBinaryString = true; +name = name.substring(0, name.indexOf(":asBinaryString")); +}var sb = null; +if (fileData.containsKey(path)) return path; +if (path.indexOf("#JMOL_MODEL ") >= 0) { +fileData.put(path, path + "\n"); +return path; +}var fullName = name; +if (name.indexOf("|") >= 0) { +subFileList = JU.PT.split(name, "|"); +name = subFileList[0]; +}var bis = null; +try { +var t = this.fm.getBufferedInputStreamOrErrorMessageFromName(name, fullName, false, false, null, false, true); +if ((typeof(t)=='string')) { +fileData.put(path, t + "\n"); +return path; +}name = name.$replace('\\', '/'); +bis = t; +if (JU.Rdr.isCompoundDocumentS(bis)) { +var doc = J.api.Interface.getInterface("JU.CompoundDocument", this.fm.vwr, "file"); +doc.setDocStream(this.fm.vwr.getJzt(), bis); +doc.getAllDataMapped(name, "Molecule", fileData); +} else if (JU.Rdr.isZipS(bis)) { +this.getAllZipData(bis, subFileList, name, "Molecule", "__MACOSX", fileData); +} else if (asBinaryString) { +var bd = J.api.Interface.getInterface("JU.BinaryDocument", this.fm.vwr, "file"); +bd.setStream(bis, false); +sb = new JU.SB(); +if (header != null) sb.append("BEGIN Directory Entry " + path + "\n"); +try { +while (true) sb.append(Integer.toHexString(bd.readByte() & 0xFF)).appendC(' '); + +} catch (e1) { +if (Clazz.exceptionOf(e1, Exception)){ +sb.appendC('\n'); +} else { +throw e1; +} +} +if (header != null) sb.append("\nEND Directory Entry " + path + "\n"); +fileData.put(path, sb.toString()); +} else { +var br = JU.Rdr.getBufferedReader(JU.Rdr.isGzipS(bis) ? new java.io.BufferedInputStream(this.fm.vwr.getJzt().newGZIPInputStream(bis)) : bis, null); +var line; +sb = new JU.SB(); +if (header != null) sb.append("BEGIN Directory Entry " + path + "\n"); +while ((line = br.readLine()) != null) { +sb.append(line); +sb.appendC('\n'); +} +br.close(); +if (header != null) sb.append("\nEND Directory Entry " + path + "\n"); +fileData.put(path, sb.toString()); +}} catch (ioe) { +if (Clazz.exceptionOf(ioe, Exception)){ +fileData.put(path, ioe.toString()); +} else { +throw ioe; +} +} +if (bis != null) try { +bis.close(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (!fileData.containsKey(path)) fileData.put(path, "FILE NOT FOUND: " + path + "\n"); +return path; +}, "~S,~S,java.util.Map"); +Clazz.defineMethod(c$, "getAllZipData", +function(is, subfileList, name0, binaryFileList, exclude, fileData){ +var zis = new javajs.api.GenericZipInputStream(Clazz.instanceOf(is,"java.io.BufferedInputStream") ? is : new java.io.BufferedInputStream(is)); +var ze; +var listing = new JU.SB(); +binaryFileList = "|" + binaryFileList + "|"; +var prefix = JU.PT.join(subfileList, '/', 1); +var prefixd = null; +if (prefix != null) { +prefixd = prefix.substring(0, prefix.indexOf("/") + 1); +if (prefixd.length == 0) prefixd = null; +}try { +while ((ze = zis.getNextEntry()) != null) { +var name = ze.getName(); +if (prefix != null && prefixd != null && !(name.equals(prefix) || name.startsWith(prefixd)) || exclude != null && name.contains(exclude)) continue; +listing.append(name).appendC('\n'); +var sname = "|" + name.substring(name.lastIndexOf("/") + 1) + "|"; +var asBinaryString = (binaryFileList.indexOf(sname) >= 0); +var bytes = JU.Rdr.getLimitedStreamBytes(zis, ze.getSize()); +var str; +if (asBinaryString) { +var ret = new JU.SB(); +for (var i = 0; i < bytes.length; i++) ret.append(Integer.toHexString(bytes[i] & 0xFF)).appendC(' '); + +str = ret.toString(); +name += ":asBinaryString"; +} else { +str = JU.Rdr.fixUTF(bytes); +}str = "BEGIN Directory Entry " + name + "\n" + str + "\nEND Directory Entry " + name + "\n"; +var key = name0 + "|" + name; +fileData.put(key, str); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +fileData.put("#Directory_Listing", listing.toString()); +}, "java.io.InputStream,~A,~S,~S,~S,java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlArgusReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlArgusReader.js new file mode 100755 index 000000000000..cb78a54f9661 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlArgusReader.js @@ -0,0 +1,118 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader"], "J.adapter.readers.xml.XmlArgusReader", ["J.adapter.smarter.Atom"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomName1 = null; +this.atomName2 = null; +this.bondOrder = 0; +this.elementContext = 0; +this.trans = null; +this.ptTrans = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlArgusReader", J.adapter.readers.xml.XmlReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlArgusReader, []); +}); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +for (var i = J.adapter.readers.xml.XmlArgusReader.keepCharsList.length; --i >= 0; ) if (J.adapter.readers.xml.XmlArgusReader.keepCharsList[i].equals(localName)) { +this.setKeepChars(true); +break; +} +if ("molecule".equals(localName)) { +this.asc.newAtomSet(); +return; +}if ("atom".equals(localName)) { +this.elementContext = 2; +this.atom = new J.adapter.smarter.Atom(); +return; +}if ("bond".equals(localName)) { +this.elementContext = 3; +this.atomName1 = null; +this.atomName2 = null; +this.bondOrder = this.parseBondToken(this.atts.get("order")); +return; +}if ("transformmat".equals(localName)) { +this.elementContext = 4; +this.trans = Clazz.newFloatArray (16, 0); +return; +}}, "~S,~S"); +Clazz.defineMethod(c$, "parseBondToken", +function(str){ +var floatOrder = this.parseFloatStr(str); +if (Float.isNaN(floatOrder) && str.length >= 1) { +str = str.toUpperCase(); +switch ((str.charAt(0)).charCodeAt(0)) { +case 83: +return 1; +case 68: +return 2; +case 84: +return 3; +case 65: +return 515; +} +return this.parseIntStr(str); +}if (floatOrder == 1.5) return 515; +if (floatOrder == 2) return 2; +if (floatOrder == 3) return 3; +return 1; +}, "~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +var n = this.chars.length(); +if (n > 0 && this.chars.charAt(n - 1) == '\n') this.chars.setLength(n - 1); +if ("molecule".equals(localName)) { +this.elementContext = 0; +return; +}if ("atom".equals(localName)) { +if (this.atom.elementSymbol != null && !Float.isNaN(this.atom.z)) { +this.parent.setAtomCoord(this.atom); +this.asc.addAtomWithMappedName(this.atom); +}this.atom = null; +this.elementContext = 0; +return; +}if ("bond".equals(localName)) { +if (this.atomName2 != null) this.asc.addNewBondFromNames(this.atomName1, this.atomName2, this.bondOrder); +this.elementContext = 0; +return; +}if ("transformmat".equals(localName)) { +this.elementContext = 0; +this.parent.setTransform(this.trans[0], this.trans[1], this.trans[2], this.trans[4], this.trans[5], this.trans[6], this.trans[8], this.trans[9], this.trans[10]); +return; +}if (this.elementContext == 1) { +if ("name".equals(localName)) { +this.asc.setAtomSetName(this.chars.toString()); +this.setKeepChars(false); +}return; +}if (this.atom != null && this.elementContext == 2) { +if ("x".equals(localName)) { +this.atom.x = this.parseFloatStr(this.chars.toString()); +} else if ("y".equals(localName)) { +this.atom.y = this.parseFloatStr(this.chars.toString()); +return; +} else if ("z".equals(localName)) { +this.atom.z = this.parseFloatStr(this.chars.toString()); +return; +} else if ("atsym".equals(localName)) { +this.atom.elementSymbol = this.chars.toString(); +return; +} else if ("formalchg".equals(localName)) { +this.atom.formalCharge = this.parseIntStr(this.chars.toString()); +} else if ("atomkey".equals(localName)) { +this.atom.atomName = this.chars.toString(); +}this.setKeepChars(false); +return; +}if (this.elementContext == 3) { +if ("atomkey".equals(localName)) { +if (this.atomName1 == null) this.atomName1 = this.chars.toString(); + else this.atomName2 = this.chars.toString(); +this.setKeepChars(false); +}return; +}if (this.elementContext == 4) { +this.trans[this.ptTrans++] = this.parseFloatStr(this.chars.toString()); +this.setKeepChars(false); +return; +}}, "~S"); +c$.keepCharsList = Clazz.newArray(-1, ["name", "x", "y", "z", "formalchg", "atomkey", "atsym", "e00", "e01", "e02", "e03", "e10", "e11", "e12", "e13", "e20", "e21", "e22", "e23", "e30", "e31", "e32", "e33"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlCdxReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlCdxReader.js new file mode 100755 index 000000000000..07e8942f08c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlCdxReader.js @@ -0,0 +1,443 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader", "J.adapter.smarter.Atom", "$.Bond", "java.util.HashMap", "$.Stack", "JU.Lst"], "J.adapter.readers.xml.XmlCdxReader", ["JU.BS", "$.PT", "J.api.JmolAdapter", "JU.Edge", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.minX = 3.4028235E38; +this.minY = 3.4028235E38; +this.minZ = 3.4028235E38; +this.maxZ = -3.4028235E38; +this.maxY = -3.4028235E38; +this.maxX = -3.4028235E38; +this.no3D = false; +if (!Clazz.isClassDefined("J.adapter.readers.xml.XmlCdxReader.CDNode")) { +J.adapter.readers.xml.XmlCdxReader.$XmlCdxReader$CDNode$ (); +} +if (!Clazz.isClassDefined("J.adapter.readers.xml.XmlCdxReader.CDBond")) { +J.adapter.readers.xml.XmlCdxReader.$XmlCdxReader$CDBond$ (); +} +this.fragments = null; +this.thisFragmentID = null; +this.thisNode = null; +this.nodes = null; +this.nostereo = null; +this.objectsByID = null; +this.textBuffer = null; +this.isCDX = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlCdxReader", J.adapter.readers.xml.XmlReader); +Clazz.prepareFields (c$, function(){ +this.fragments = new java.util.Stack(); +this.nodes = new java.util.Stack(); +this.nostereo = new JU.Lst(); +this.objectsByID = new java.util.HashMap(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlCdxReader, []); +}); +Clazz.overrideMethod(c$, "processXml", +function(parent, saxReader){ +this.is2D = true; +if (parent == null) { +this.processXml2(this, saxReader); +parent = this; +} else { +this.no3D = parent.checkFilterKey("NO3D"); +this.noHydrogens = parent.noHydrogens; +this.processXml2(parent, saxReader); +this.filter = parent.filter; +}}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +var id = this.atts.get("id"); +if ("fragment".equals(localName)) { +this.objectsByID.put(id, this.setFragment(id)); +return; +}if ("n".equals(localName)) { +this.objectsByID.put(id, this.setNode(id)); +return; +}if ("b".equals(localName)) { +this.objectsByID.put(id, this.setBond(id)); +return; +}if ("t".equals(localName)) { +this.textBuffer = ""; +}if ("s".equals(localName)) { +this.setKeepChars(true); +}}, "~S,~S"); +Clazz.defineMethod(c$, "setFragment", +function(id){ +this.fragments.push(this.thisFragmentID = id); +var fragmentNode = (this.thisNode == null || !this.thisNode.isFragment ? null : this.thisNode); +if (fragmentNode != null) { +fragmentNode.setInnerFragmentID(id); +}var s = this.atts.get("connectionorder"); +if (s != null) { +System.out.println(id + " ConnectionOrder is " + s); +this.thisNode.setConnectionOrder(JU.PT.split(s.trim(), " ")); +}return fragmentNode; +}, "~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +if ("fragment".equals(localName)) { +this.thisFragmentID = this.fragments.pop(); +return; +}if ("n".equals(localName)) { +this.thisNode = (this.nodes.size() == 0 ? null : this.nodes.pop()); +return; +}if ("s".equals(localName)) { +this.textBuffer += this.chars.toString(); +}if ("t".equals(localName)) { +if (this.thisNode == null) { +System.out.println("XmlChemDrawReader unassigned text: " + this.textBuffer); +} else { +this.thisNode.text = this.textBuffer; +if (this.atom.elementNumber == 0) { +System.err.println("XmlChemDrawReader: Problem with \"" + this.textBuffer + "\""); +}if (this.thisNode.warning != null) this.parent.appendLoadNote("Warning: " + this.textBuffer + " " + this.thisNode.warning); +}this.textBuffer = ""; +}this.setKeepChars(false); +}, "~S"); +Clazz.defineMethod(c$, "setNode", +function(id){ +var nodeType = this.atts.get("nodetype"); +if (this.asc.bsAtoms == null) this.asc.bsAtoms = new JU.BS(); +if (this.thisNode != null) this.nodes.push(this.thisNode); +if ("_".equals(nodeType)) { +this.atom = this.thisNode = null; +return null; +}this.atom = this.thisNode = Clazz.innerTypeInstance(J.adapter.readers.xml.XmlCdxReader.CDNode, this, null, id, nodeType, this.thisFragmentID, this.thisNode); +this.asc.addAtomWithMappedSerialNumber(this.atom); +this.asc.bsAtoms.set(this.atom.index); +var w = this.atts.get("warning"); +if (w != null) { +this.thisNode.warning = JU.PT.rep(w, "'", "'"); +this.thisNode.isValid = (w.indexOf("ChemDraw can't interpret") < 0); +}var element = this.atts.get("element"); +var s = this.atts.get("genericnickname"); +if (s != null) { +element = s; +}this.atom.elementNumber = (!this.checkWarningOK(w) ? 0 : element == null ? 6 : this.parseIntStr(element)); +element = J.api.JmolAdapter.getElementSymbol(this.atom.elementNumber); +s = this.atts.get("isotope"); +if (s != null) element = s + element; +this.setElementAndIsotope(this.atom, element); +s = this.atts.get("charge"); +if (s != null) { +this.atom.formalCharge = this.parseIntStr(s); +}var hasXYZ = (this.atts.containsKey("xyz")); +var hasXY = (this.atts.containsKey("p")); +if (hasXYZ && (!this.no3D || !hasXY)) { +this.is2D = false; +this.setAtom("xyz"); +} else if (this.atts.containsKey("p")) { +this.setAtom("p"); +}s = this.atts.get("attachments"); +if (s != null) { +System.out.println(id + " Attachments is " + s); +this.thisNode.setMultipleAttachments(JU.PT.split(s.trim(), " ")); +}s = this.atts.get("bondordering"); +if (s != null) { +System.out.println(id + " BondOrdering is " + s); +this.thisNode.setBondOrdering(JU.PT.split(s.trim(), " ")); +}if (JU.Logger.debugging) JU.Logger.info("XmlChemDraw id=" + id + " " + element + " " + this.atom); +return this.thisNode; +}, "~S"); +Clazz.defineMethod(c$, "checkWarningOK", +function(warning){ +return (warning == null || warning.indexOf("valence") >= 0 || warning.indexOf("very close") >= 0 || warning.indexOf("two identical colinear bonds") >= 0); +}, "~S"); +Clazz.defineMethod(c$, "setBond", +function(id){ +var atom1 = this.atts.get("b"); +var atom2 = this.atts.get("e"); +var a = this.atts.get("beginattach"); +var beginAttach = (a == null ? 0 : this.parseIntStr(a)); +a = this.atts.get("endattach"); +var endAttach = (a == null ? 0 : this.parseIntStr(a)); +var s = this.atts.get("order"); +var disp = this.atts.get("display"); +var disp2 = this.atts.get("display2"); +var order = 131071; +var invertEnds = false; +if (disp == null) { +if (s == null) { +order = 1; +} else if (s.equals("1.5")) { +order = 515; +} else { +if (s.indexOf(".") > 0 && !"Dash".equals(disp2)) { +s = s.substring(0, s.indexOf(".")); +}order = JU.Edge.getBondOrderFromString(s); +}} else if (disp.equals("WedgeBegin")) { +order = 1025; +} else if (disp.equals("Hash") || disp.equals("WedgedHashBegin")) { +order = 1041; +} else if (disp.equals("WedgeEnd")) { +invertEnds = true; +order = 1025; +} else if (disp.equals("WedgedHashEnd")) { +invertEnds = true; +order = 1041; +} else if (disp.equals("Wavy")) { +order = 1057; +}if (order == 131071) { +System.err.println("XmlChemDrawReader ignoring bond type " + s); +return null; +}var b = (invertEnds ? Clazz.innerTypeInstance(J.adapter.readers.xml.XmlCdxReader.CDBond, this, null, id, atom2, atom1, order) : Clazz.innerTypeInstance(J.adapter.readers.xml.XmlCdxReader.CDBond, this, null, id, atom1, atom2, order)); +var node1 = this.asc.atoms[b.atomIndex1]; +var node2 = this.asc.atoms[b.atomIndex2]; +if (order == 1057) { +if (!this.nostereo.contains(node1)) this.nostereo.addLast(node1); +if (!this.nostereo.contains(node2)) this.nostereo.addLast(node2); +}if (node1.hasMultipleAttachments) { +node1.attachedAtom = node2; +return b; +} else if (node2.hasMultipleAttachments) { +node2.attachedAtom = node1; +return b; +}if (node1.isFragment && beginAttach == 0) beginAttach = 1; +if (node2.isFragment && endAttach == 0) endAttach = 1; +if (beginAttach > 0) { +(invertEnds ? node2 : node1).addAttachedAtom(b, beginAttach); +}if (endAttach > 0) { +(invertEnds ? node1 : node2).addAttachedAtom(b, endAttach); +}if (node1.isExternalPt) { +node1.setInternalAtom(node2); +}if (node2.isExternalPt) { +node2.setInternalAtom(node1); +}this.asc.addBondNoCheck(b); +return b; +}, "~S"); +Clazz.defineMethod(c$, "setAtom", +function(key){ +var xyz = this.atts.get(key); +var tokens = JU.PT.getTokens(xyz); +var x = this.parseFloatStr(tokens[0]); +var y = -this.parseFloatStr(tokens[1]); +var z = (key === "xyz" ? this.parseFloatStr(tokens[2]) : 0); +if (x < this.minX) this.minX = x; +if (x > this.maxX) this.maxX = x; +if (y < this.minY) this.minY = y; +if (y > this.maxY) this.maxY = y; +if (z < this.minZ) this.minZ = z; +if (z > this.maxZ) this.maxZ = z; +this.atom.set(x, y, z); +}, "~S"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.fixConnections(); +this.fixInvalidAtoms(); +this.centerAndScale(); +this.parent.appendLoadNote((this.isCDX ? "CDX: " : "CDXML: ") + (this.is2D ? "2D" : "3D")); +this.asc.setInfo("minimize3D", Boolean.$valueOf(!this.is2D && !this.noHydrogens)); +this.asc.setInfo("is2D", Boolean.$valueOf(this.is2D)); +if (this.is2D) { +this.optimize2D = !this.noHydrogens && !this.noMinimize; +this.asc.setModelInfoForSet("dimension", "2D", this.asc.iSet); +this.set2D(); +}}); +Clazz.defineMethod(c$, "fixConnections", +function(){ +for (var i = this.asc.ac; --i >= 0; ) { +var a = this.asc.atoms[i]; +if (a.isFragment || a.hasMultipleAttachments) a.fixAttachments(); +} +for (var i = 0, n = this.asc.bondCount; i < n; i++) { +var b = this.asc.bonds[i]; +if (b == null) { +continue; +}var a1 = this.asc.atoms[b.atomIndex1]; +var a2 = this.asc.atoms[b.atomIndex2]; +a1.isConnected = true; +a2.isConnected = true; +if (this.nostereo.contains(a1) != this.nostereo.contains(a2)) { +b.order = 1; +}} +}); +Clazz.defineMethod(c$, "centerAndScale", +function(){ +if (this.minX > this.maxX) return; +var sum = 0; +var n = 0; +var lenH = 1; +for (var i = this.asc.bondCount; --i >= 0; ) { +var a1 = this.asc.atoms[this.asc.bonds[i].atomIndex1]; +var a2 = this.asc.atoms[this.asc.bonds[i].atomIndex2]; +var d = a1.distance(a2); +if (a1.elementNumber > 1 && a2.elementNumber > 1) { +sum += d; +n++; +} else { +lenH = d; +}} +var f = (sum > 0 ? 1.45 * n / sum : lenH > 0 ? 1 / lenH : 1); +if (f > 0.5) f = 1; +var cx = (this.maxX + this.minX) / 2; +var cy = (this.maxY + this.minY) / 2; +var cz = (this.maxZ + this.minZ) / 2; +for (var i = this.asc.ac; --i >= 0; ) { +var a = this.asc.atoms[i]; +a.x = (a.x - cx) * f; +a.y = (a.y - cy) * f; +a.z = (a.z - cz) * f; +} +}); +Clazz.defineMethod(c$, "fixInvalidAtoms", +function(){ +for (var i = this.asc.ac; --i >= 0; ) { +var a = this.asc.atoms[i]; +a.atomSerial = -2147483648; +if (a.isFragment || a.isExternalPt || !a.isConnected && (!a.isValid || a.elementNumber == 6 || a.elementNumber == 0)) { +this.asc.bsAtoms.clear(a.index); +}} +}); +c$.$XmlCdxReader$CDNode$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.warning = null; +this.id = null; +this.intID = 0; +this.isValid = true; +this.isConnected = false; +this.isExternalPt = false; +this.nodeType = null; +this.isFragment = false; +this.outerFragmentID = null; +this.innerFragmentID = null; +this.text = null; +this.parentNode = null; +this.orderedConnectionBonds = null; +this.internalAtom = null; +this.orderedExternalPoints = null; +this.attachments = null; +this.bondOrdering = null; +this.connectionOrder = null; +this.hasMultipleAttachments = false; +this.attachedAtom = null; +this.isGeneric = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml.XmlCdxReader, "CDNode", J.adapter.smarter.Atom); +Clazz.makeConstructor(c$, +function(id, nodeType, fragmentID, parent){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlCdxReader.CDNode, []); +this.id = id; +this.outerFragmentID = fragmentID; +this.atomSerial = this.intID = Integer.parseInt(id); +this.nodeType = nodeType; +this.parentNode = parent; +this.isFragment = "Fragment".equals(nodeType) || "Nickname".equals(nodeType); +this.isExternalPt = "ExternalConnectionPoint".equals(nodeType); +this.isGeneric = "GenericNickname".equals(nodeType); +}, "~S,~S,~S,J.adapter.readers.xml.XmlCdxReader.CDNode"); +Clazz.defineMethod(c$, "setInnerFragmentID", +function(id){ +this.innerFragmentID = id; +}, "~S"); +Clazz.defineMethod(c$, "setBondOrdering", +function(bondOrdering){ +this.bondOrdering = bondOrdering; +}, "~A"); +Clazz.defineMethod(c$, "setConnectionOrder", +function(connectionOrder){ +this.connectionOrder = connectionOrder; +}, "~A"); +Clazz.defineMethod(c$, "setMultipleAttachments", +function(attachments){ +this.attachments = attachments; +this.hasMultipleAttachments = true; +}, "~A"); +Clazz.defineMethod(c$, "addExternalPoint", +function(externalPoint){ +if (this.orderedExternalPoints == null) this.orderedExternalPoints = new JU.Lst(); +var i = this.orderedExternalPoints.size(); +while (--i >= 0 && this.orderedExternalPoints.get(i).intID >= externalPoint.internalAtom.intID) { +} +this.orderedExternalPoints.add(++i, externalPoint); +}, "J.adapter.readers.xml.XmlCdxReader.CDNode"); +Clazz.defineMethod(c$, "setInternalAtom", +function(a){ +this.internalAtom = a; +if (this.parentNode == null) { +} else { +this.parentNode.addExternalPoint(this); +}}, "J.adapter.readers.xml.XmlCdxReader.CDNode"); +Clazz.defineMethod(c$, "addAttachedAtom", +function(bond, pt){ +if (this.orderedConnectionBonds == null) this.orderedConnectionBonds = new JU.Lst(); +var i = this.orderedConnectionBonds.size(); +while (--i >= 0 && (this.orderedConnectionBonds.get(i)[0]).intValue() > pt) { +} +this.orderedConnectionBonds.add(++i, Clazz.newArray(-1, [Integer.$valueOf(pt), bond])); +}, "J.adapter.readers.xml.XmlCdxReader.CDBond,~N"); +Clazz.defineMethod(c$, "fixAttachments", +function(){ +if (this.hasMultipleAttachments && this.attachedAtom != null) { +var order = JU.Edge.getBondOrderFromString("partial"); +var a1 = this.attachedAtom.index; +for (var i = this.attachments.length; --i >= 0; ) { +var a = this.b$["J.adapter.readers.xml.XmlCdxReader"].objectsByID.get(this.attachments[i]); +if (a != null) this.b$["J.adapter.readers.xml.XmlCdxReader"].asc.addBondNoCheck( new J.adapter.smarter.Bond(a1, a.index, order)); +} +}if (this.orderedExternalPoints == null || this.text == null) return; +var n = this.orderedExternalPoints.size(); +if (n != this.orderedConnectionBonds.size()) { +System.err.println("XmlCdxReader cannot fix attachments for fragment " + this.text); +return; +}System.out.println("XmlCdxReader attaching fragment " + this.outerFragmentID + " " + this.text); +if (this.bondOrdering == null) { +this.bondOrdering = new Array(n); +for (var i = 0; i < n; i++) { +this.bondOrdering[i] = (this.orderedConnectionBonds.get(i)[1]).id; +} +}if (this.connectionOrder == null) { +this.connectionOrder = new Array(n); +for (var i = 0; i < n; i++) { +this.connectionOrder[i] = this.orderedExternalPoints.get(i).id; +} +}for (var i = 0; i < n; i++) { +var b = this.b$["J.adapter.readers.xml.XmlCdxReader"].objectsByID.get(this.bondOrdering[i]); +var pt = this.b$["J.adapter.readers.xml.XmlCdxReader"].objectsByID.get(this.connectionOrder[i]); +var a = pt.internalAtom; +this.updateExternalBond(b, a); +} +}); +Clazz.defineMethod(c$, "updateExternalBond", +function(bond2f, intAtom){ +if (bond2f.atomIndex2 == this.index) { +bond2f.atomIndex2 = intAtom.index; +} else if (bond2f.atomIndex1 == this.index) { +bond2f.atomIndex1 = intAtom.index; +} else { +System.err.println("XmlCdxReader attachment failed! " + intAtom + " " + bond2f); +}}, "J.adapter.readers.xml.XmlCdxReader.CDBond,J.adapter.readers.xml.XmlCdxReader.CDNode"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[CDNode " + this.id + " " + this.elementSymbol + " " + this.elementNumber + " index=" + this.index + " ext=" + this.isExternalPt + " frag=" + this.isFragment + " " + this.elementSymbol + " " + this.x + " " + this.y + "]"; +}); +/*eoif4*/})(); +}; +c$.$XmlCdxReader$CDBond$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.id = null; +this.id1 = null; +this.id2 = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml.XmlCdxReader, "CDBond", J.adapter.smarter.Bond); +Clazz.makeConstructor(c$, +function(id, id1, id2, order){ +Clazz.superConstructor(this, J.adapter.readers.xml.XmlCdxReader.CDBond, [(this.b$["J.adapter.readers.xml.XmlCdxReader"].objectsByID.get(id1)).index, (this.b$["J.adapter.readers.xml.XmlCdxReader"].objectsByID.get(id2)).index, order]); +this.id = id; +this.id1 = id1; +this.id2 = id2; +}, "~S,~S,~S,~N"); +Clazz.defineMethod(c$, "getOtherNode", +function(a){ +return this.b$["J.adapter.readers.xml.XmlCdxReader"].asc.atoms[this.atomIndex1 == a.index ? this.atomIndex2 : this.atomIndex1]; +}, "J.adapter.readers.xml.XmlCdxReader.CDNode"); +Clazz.defineMethod(c$, "toString", +function(){ +return "[CDBond " + this.id + " id1=" + this.id1 + " id2=" + this.id2 + Clazz.superCall(this, J.adapter.readers.xml.XmlCdxReader.CDBond, "toString", []) + "]"; +}); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlChem3dReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlChem3dReader.js new file mode 100755 index 000000000000..1280c5053673 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlChem3dReader.js @@ -0,0 +1,105 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader", "JU.Lst"], "J.adapter.readers.xml.XmlChem3dReader", ["java.util.Hashtable", "JU.PT", "J.adapter.smarter.Atom", "J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.orbitals = null; +this.moData = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlChem3dReader", J.adapter.readers.xml.XmlReader); +Clazz.prepareFields (c$, function(){ +this.orbitals = new JU.Lst(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlChem3dReader, []); +}); +Clazz.overrideMethod(c$, "processXml", +function(parent, saxReader){ +this.processXml2(parent, saxReader); +this.finalizeMOData(this.moData); +}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +var tokens; +if ("model".equals(localName)) { +this.asc.newAtomSet(); +return; +}if ("atom".equals(localName)) { +this.atom = new J.adapter.smarter.Atom(); +this.atom.atomName = this.atts.get("id"); +this.atom.elementSymbol = this.atts.get("symbol"); +if (this.atts.containsKey("cartcoords")) { +var xyz = this.atts.get("cartcoords"); +tokens = JU.PT.getTokens(xyz); +this.atom.set(this.parseFloatStr(tokens[0]), this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2])); +}return; +}if ("bond".equals(localName)) { +var atom1 = this.atts.get("bondatom1"); +var atom2 = this.atts.get("bondatom2"); +var order = 1; +if (this.atts.containsKey("bondorder")) order = this.parseIntStr(this.atts.get("bondorder")); +this.asc.addNewBondFromNames(atom1, atom2, order); +return; +}if ("electronicstructurecalculation".equals(localName)) { +tokens = JU.PT.getTokens(this.atts.get("calcpartialcharges")); +var tokens2 = JU.PT.getTokens(this.atts.get("calcatoms")); +for (var i = this.parseIntStr(tokens[0]); --i >= 0; ) this.asc.mapPartialCharge(tokens2[i + 1], this.parseFloatStr(tokens[i + 1])); + +}if ("griddata".equals(localName)) { +var nPointsX = this.parseIntStr(this.atts.get("griddatxdim")); +var nPointsY = this.parseIntStr(this.atts.get("griddatydim")); +var nPointsZ = this.parseIntStr(this.atts.get("griddatzdim")); +var xStep = this.parseFloatStr(this.atts.get("griddatxsize")) / (nPointsX); +var yStep = this.parseFloatStr(this.atts.get("griddatysize")) / (nPointsY); +var zStep = this.parseFloatStr(this.atts.get("griddatzsize")) / (nPointsZ); +tokens = JU.PT.getTokens(this.atts.get("griddatorigin")); +var ox = this.parseFloatStr(tokens[0]); +var oy = this.parseFloatStr(tokens[1]); +var oz = this.parseFloatStr(tokens[2]); +tokens = JU.PT.getTokens(this.atts.get("griddatdata")); +var pt = 1; +var voxelData = Clazz.newFloatArray (nPointsX, nPointsY, nPointsZ, 0); +var sum = 0; +for (var z = 0; z < nPointsZ; z++) for (var y = 0; y < nPointsY; y++) for (var x = 0; x < nPointsX; x++) { +var f = this.parseFloatStr(tokens[pt++]); +voxelData[x][y][z] = f; +sum += f * f; +} + + +sum = (1 / Math.sqrt(sum)); +for (var z = 0; z < nPointsZ; z++) for (var y = 0; y < nPointsY; y++) for (var x = 0; x < nPointsX; x++) { +voxelData[x][y][z] *= sum; +} + + +var vd = J.api.Interface.getOption("jvxl.data.VolumeData", this.vwr, "file"); +vd.setVoxelCounts(nPointsX, nPointsY, nPointsZ); +vd.setVolumetricVector(0, xStep, 0, 0); +vd.setVolumetricVector(1, 0, yStep, 0); +vd.setVolumetricVector(2, 0, 0, zStep); +vd.setVolumetricOrigin(ox, oy, oz); +vd.setVoxelDataAsArray(voxelData); +if (this.moData == null) { +this.moData = new java.util.Hashtable(); +this.moData.put("defaultCutoff", Float.$valueOf(0.01)); +this.moData.put("haveVolumeData", Boolean.TRUE); +this.moData.put("calculationType", "Chem3D"); +this.orbitals = new JU.Lst(); +this.moData.put("mos", this.orbitals); +}var mo = new java.util.Hashtable(); +mo.put("volumeData", vd); +this.orbitals.addLast(mo); +JU.Logger.info("Chem3D molecular orbital data displayable using ISOSURFACE MO " + this.orbitals.size()); +return; +}}, "~S,~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +if ("atom".equals(localName)) { +if (this.atom.elementSymbol != null && !Float.isNaN(this.atom.z)) { +this.parent.setAtomCoord(this.atom); +this.asc.addAtomWithMappedName(this.atom); +}this.atom = null; +return; +}this.setKeepChars(false); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlCmlReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlCmlReader.js new file mode 100755 index 000000000000..008ad2d03e86 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlCmlReader.js @@ -0,0 +1,572 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader"], "J.adapter.readers.xml.XmlCmlReader", ["java.util.Hashtable", "$.Properties", "$.StringTokenizer", "JU.BS", "$.Lst", "$.PT", "J.adapter.smarter.Atom", "$.Bond", "J.api.JmolAdapter", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.scalarDictRef = null; +this.scalarDictValue = null; +this.scalarTitle = null; +this.cellParameterType = null; +this.checkedSerial = false; +this.isSerial = false; +this.moleculeNesting = 0; +this.latticeVectorPtr = 0; +this.embeddedCrystal = false; +this.atomIdNames = null; +this.tokens = null; +this.aaLen = 0; +this.atomArray = null; +this.bondCount = 0; +this.bondArray = null; +this.tokenCount = 0; +this.moduleNestingLevel = 0; +this.haveMolecule = false; +this.localSpaceGroupName = null; +this.processing = true; +this.state = 0; +this.atomIndex0 = 0; +this.joinList = null; +this.mapRtoA = null; +this.deleteAtoms = null; +this.moleculeID = null; +this.htModelAtomMap = null; +this.optimize2d = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlCmlReader", J.adapter.readers.xml.XmlReader); +Clazz.prepareFields (c$, function(){ +this.tokens = new Array(16); +this.atomArray = new Array(100); +this.bondArray = new Array(100); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlCmlReader, []); +}); +Clazz.overrideMethod(c$, "processXml", +function(parent, saxReader){ +this.optimize2d = parent.checkFilterKey("2D"); +this.processXml2(parent, saxReader); +if (this.optimize2d) this.set2D(); +}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.overrideMethod(c$, "processStartElement", +function(name, nodeName){ +if (!this.processing) return; +this.processStart2(name); +}, "~S,~S"); +Clazz.defineMethod(c$, "processStart2", +function(name){ +name = name.toLowerCase(); +var val; +switch (this.state) { +case 0: +if (name.equals("molecule")) { +this.moleculeID = this.atts.get("id"); +this.state = 6; +this.haveMolecule = true; +if (this.moleculeNesting == 0) this.createNewAtomSet(); +this.moleculeNesting++; +} else if (name.equals("crystal")) { +this.state = 2; +} else if (name.equals("symmetry")) { +this.state = 17; +if ((val = this.atts.get("spacegroup")) != null) { +this.localSpaceGroupName = val; +} else { +this.localSpaceGroupName = "P1"; +this.parent.clearUnitCell(); +}} else if (name.equals("module")) { +this.moduleNestingLevel++; +} else if (name.equals("latticevector")) { +this.state = 18; +this.setKeepChars(true); +}break; +case 2: +this.checkedSerial = true; +this.isSerial = false; +if (name.equals("scalar")) { +this.state = 3; +this.setKeepChars(true); +this.scalarTitle = this.atts.get("title"); +this.getDictRefValue(); +} else if (name.equals("symmetry")) { +this.state = 4; +if ((val = this.atts.get("spacegroup")) != null) { +this.localSpaceGroupName = val; +for (var i = 0; i < this.localSpaceGroupName.length; i++) if (this.localSpaceGroupName.charAt(i) == '_') this.localSpaceGroupName = this.localSpaceGroupName.substring(0, i) + this.localSpaceGroupName.substring((i--) + 1); + +}} else if (name.equals("cellparameter")) { +if ((val = this.atts.get("parametertype")) != null) { +this.cellParameterType = val; +this.setKeepChars(true); +}}break; +case 18: +this.setKeepChars(true); +break; +case 17: +case 3: +case 4: +if (name.equals("transform3")) { +this.state = 5; +this.setKeepChars(true); +}break; +case 5: +case 6: +if (name.equals("fragmentlist")) { +this.joinList = new JU.Lst(); +this.mapRtoA = new java.util.Hashtable(); +if (this.deleteAtoms == null) this.deleteAtoms = new JU.BS(); +} else if (name.equals("crystal")) { +this.state = 2; +this.embeddedCrystal = true; +} else if (name.equals("molecule")) { +this.state = 6; +this.moleculeNesting++; +} else if (name.equals("join")) { +var order = -1; +this.tokenCount = 0; +if ((val = this.atts.get("atomrefs2")) != null) { +this.breakOutTokens(val); +if ((val = this.atts.get("order")) != null) order = this.parseBondToken(val); +if (this.tokenCount == 2 && order > 0) this.joinList.addLast( Clazz.newArray(-1, [this.tokens[0], this.tokens[1], "" + order])); +}} else if (name.equals("bondarray")) { +this.state = 10; +this.bondCount = 0; +if ((val = this.atts.get("order")) != null) { +this.breakOutBondTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.bondArray[i].order = this.parseBondToken(this.tokens[i]); + +}if ((val = this.atts.get("atomref1")) != null) { +this.breakOutBondTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.bondArray[i].atomIndex1 = this.getAtomIndex(this.tokens[i]); + +}if ((val = this.atts.get("atomref2")) != null) { +this.breakOutBondTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.bondArray[i].atomIndex2 = this.getAtomIndex(this.tokens[i]); + +}} else if (name.equals("atomarray")) { +this.state = 7; +this.aaLen = 0; +var coords3D = false; +if ((val = this.atts.get("atomid")) != null) { +this.breakOutAtomTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.atomArray[i].atomName = this.tokens[i]; + +}var is3d = (!this.optimize2d && (val = this.atts.get("x3")) != null); +if (is3d) { +is3d = true; +coords3D = true; +this.breakOutAtomTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.atomArray[i].x = this.parseFloatStr(this.tokens[i]); + +if ((val = this.atts.get("y3")) != null) { +this.breakOutAtomTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.atomArray[i].y = this.parseFloatStr(this.tokens[i]); + +}if ((val = this.atts.get("z3")) != null) { +this.breakOutAtomTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.atomArray[i].z = this.parseFloatStr(this.tokens[i]); + +}} else { +if ((val = this.atts.get("x2")) != null) { +this.breakOutAtomTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.atomArray[i].x = this.parseFloatStr(this.tokens[i]); + +}if ((val = this.atts.get("y2")) != null) { +this.breakOutAtomTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.atomArray[i].y = this.parseFloatStr(this.tokens[i]); + +}}if ((val = this.atts.get("elementtype")) != null) { +this.breakOutAtomTokens(val); +for (var i = this.tokenCount; --i >= 0; ) this.atomArray[i].elementSymbol = this.tokens[i]; + +}for (var i = this.aaLen; --i >= 0; ) { +var atom = this.atomArray[i]; +if (!coords3D) atom.z = 0; +this.addAtom(atom); +} +} else if (name.equals("formula")) { +this.state = 13; +} else if (name.equals("association")) { +this.state = 19; +}break; +case 10: +if (name.equals("bond")) { +this.state = 11; +var order = -1; +this.tokenCount = 0; +if ((val = this.atts.get("atomrefs2")) != null) this.breakOutTokens(val); +if ((val = this.atts.get("order")) != null) order = this.parseBondToken(val); +if (this.tokenCount == 2 && order > 0) { +this.addNewBond(this.tokens[0], this.tokens[1], order); +}}break; +case 7: +if (name.equals("atom")) { +this.state = 8; +this.atom = new J.adapter.smarter.Atom(); +this.parent.setFractionalCoordinates(false); +var id = this.atts.get("id"); +if ((val = this.atts.get("name")) != null) this.atom.atomName = val; + else if ((val = this.atts.get("title")) != null) this.atom.atomName = val; + else if ((val = this.atts.get("label")) != null) this.atom.atomName = val; + else this.atom.atomName = id; +if (!this.checkedSerial) { +this.isSerial = (id != null && id.length > 1 && id.startsWith("a") && JU.PT.parseInt(id.substring(1)) != -2147483648); +this.checkedSerial = true; +}if (this.isSerial) this.atom.atomSerial = JU.PT.parseInt(id.substring(1)); +if ((val = this.atts.get("xfract")) != null && (this.parent.iHaveUnitCell || !this.atts.containsKey("x3"))) { +this.parent.setFractionalCoordinates(true); +this.atom.set(this.parseFloatStr(val), this.parseFloatStr(this.atts.get("yfract")), this.parseFloatStr(this.atts.get("zfract"))); +} else if ((val = this.atts.get("x3")) != null) { +this.atom.set(this.parseFloatStr(val), this.parseFloatStr(this.atts.get("y3")), this.parseFloatStr(this.atts.get("z3"))); +} else if ((val = this.atts.get("x2")) != null) { +this.atom.set(this.parseFloatStr(val), this.parseFloatStr(this.atts.get("y2")), 0); +}if ((val = this.atts.get("elementtype")) != null) { +var sym = val; +if ((val = this.atts.get("isotope")) != null) this.atom.elementNumber = ((this.parseIntStr(val) << 7) + J.api.JmolAdapter.getElementNumber(sym)); +this.atom.elementSymbol = sym; +}if ((val = this.atts.get("formalcharge")) != null) this.atom.formalCharge = this.parseIntStr(val); +}break; +case 11: +if ((val = this.atts.get("builtin")) != null) { +this.setKeepChars(true); +this.state = 15; +this.scalarDictValue = val; +} else if (name.equals("bondstereo")) { +this.state = 12; +}break; +case 12: +this.setKeepChars(true); +this.state = 12; +break; +case 8: +if (name.equals("scalar")) { +this.state = 9; +this.setKeepChars(true); +this.scalarTitle = this.atts.get("title"); +this.getDictRefValue(); +} else if ((val = this.atts.get("builtin")) != null) { +this.setKeepChars(true); +this.state = 14; +this.scalarDictValue = val; +}break; +case 9: +break; +case 13: +break; +case 14: +break; +case 15: +break; +} +}, "~S"); +Clazz.defineMethod(c$, "getAtomIndex", +function(label){ +return this.asc.getAtomIndex(this.isSerial ? label.substring(1) : label); +}, "~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(name){ +if (!this.processing) return; +this.processEnd2(name); +}, "~S"); +Clazz.defineMethod(c$, "processEnd2", +function(name){ +name = name.toLowerCase(); +switch (this.state) { +case 0: +if (name.equals("module")) { +if (--this.moduleNestingLevel == 0) { +if (this.parent.iHaveUnitCell) this.applySymmetryAndSetTrajectory(); +this.setAtomNames(); +}}break; +case 19: +if (name.equals("association")) this.state = 6; +break; +case 2: +if (name.equals("crystal")) { +if (this.embeddedCrystal) { +this.state = 6; +this.embeddedCrystal = false; +} else { +this.state = 0; +}} else if (name.equals("cellparameter") && this.keepChars) { +var tokens = JU.PT.getTokens(this.chars.toString()); +this.setKeepChars(false); +if (tokens.length != 3 || this.cellParameterType == null) { +} else if (this.cellParameterType.equals("length")) { +for (var i = 0; i < 3; i++) this.parent.setUnitCellItem(i, this.parseFloatStr(tokens[i])); + +break; +} else if (this.cellParameterType.equals("angle")) { +for (var i = 0; i < 3; i++) this.parent.setUnitCellItem(i + 3, this.parseFloatStr(tokens[i])); + +break; +}JU.Logger.error("bad cellParameter information: parameterType=" + this.cellParameterType + " data=" + this.chars); +this.parent.setFractionalCoordinates(false); +}break; +case 3: +if (name.equals("scalar")) { +this.state = 2; +if (this.scalarTitle != null) this.checkUnitCellItem(J.adapter.readers.xml.XmlCmlReader.unitCellParamTags, this.scalarTitle); + else if (this.scalarDictRef != null) this.checkUnitCellItem(J.api.JmolAdapter.cellParamNames, (this.scalarDictValue.startsWith("_") ? this.scalarDictValue : "_" + this.scalarDictValue)); +}this.setKeepChars(false); +this.scalarTitle = null; +this.scalarDictRef = null; +break; +case 5: +if (name.equals("transform3")) { +this.setKeepChars(false); +this.state = 4; +}break; +case 18: +var values = J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(this.chars.toString(), null, 3); +this.parent.addExplicitLatticeVector(this.latticeVectorPtr, values, 0); +this.latticeVectorPtr = (this.latticeVectorPtr + 1) % 3; +this.setKeepChars(false); +this.state = 0; +break; +case 4: +case 17: +if (name.equals("symmetry")) this.state = (this.state == 4 ? 2 : 0); +if (this.moduleNestingLevel == 0 && this.parent.iHaveUnitCell && !this.embeddedCrystal) this.applySymmetryAndSetTrajectory(); +break; +case 6: +if (name.equals("fragmentlist")) { +for (var i = this.joinList.size(); --i >= 0; ) { +var join = this.joinList.get(i); +var r1 = this.asc.getAtomFromName(this.fixSerialName(join[0])); +var r2 = this.asc.getAtomFromName(this.fixSerialName(join[1])); +if (r1 != null && r2 != null) { +this.deleteAtoms.set(r1.index); +this.deleteAtoms.set(r2.index); +this.addNewBond(this.mapRtoA.get(r1), this.mapRtoA.get(r2), this.parseIntStr(join[2])); +}} +this.joinList = null; +this.mapRtoA = null; +}if (name.equals("molecule")) { +if (--this.moleculeNesting == 0) { +this.applySymmetryAndSetTrajectory(); +this.setAtomNames(); +this.state = 0; +} else { +this.state = 6; +}}break; +case 10: +if (name.equals("bondarray")) { +this.state = 6; +for (var i = 0; i < this.bondCount; ++i) this.addBond(this.bondArray[i]); + +this.parent.applySymmetryToBonds = true; +}break; +case 7: +if (name.equals("atomarray")) { +this.state = 6; +}break; +case 11: +if (name.equals("bond")) { +this.state = 10; +}break; +case 8: +if (name.equals("atom")) { +this.state = 7; +this.addAtom(this.atom); +this.atom = null; +}break; +case 9: +if (name.equals("scalar")) { +this.state = 8; +if ("jmol:charge".equals(this.scalarDictRef)) { +this.atom.partialCharge = this.parseFloatStr(this.chars.toString()); +} else if (this.scalarDictRef != null && "_atom_site_label".equals(this.scalarDictValue)) { +if (this.atomIdNames == null) this.atomIdNames = new java.util.Properties(); +this.atomIdNames.put(this.atom.atomName, this.chars.toString()); +}}this.setKeepChars(false); +this.scalarTitle = null; +this.scalarDictRef = null; +break; +case 14: +this.state = 8; +if (this.scalarDictValue.equals("x3")) this.atom.x = this.parseFloatStr(this.chars.toString()); + else if (this.scalarDictValue.equals("y3")) this.atom.y = this.parseFloatStr(this.chars.toString()); + else if (this.scalarDictValue.equals("z3")) this.atom.z = this.parseFloatStr(this.chars.toString()); + else if (this.scalarDictValue.equals("elementType")) this.atom.elementSymbol = this.chars.toString(); +this.setKeepChars(false); +break; +case 12: +var stereo = this.chars.toString(); +if (this.bond.order == 1) this.bond.order = (stereo.equals("H") ? 1041 : 1025); +this.setKeepChars(false); +this.state = 11; +break; +case 15: +this.state = 11; +if (this.scalarDictValue.equals("atomRef")) { +if (this.tokenCount == 0) this.tokens = new Array(2); +if (this.tokenCount < 2) this.tokens[this.tokenCount++] = this.chars.toString(); +} else if (this.scalarDictValue.equals("order")) { +var order = this.parseBondToken(this.chars.toString()); +if (order > 0 && this.tokenCount == 2) this.addNewBond(this.tokens[0], this.tokens[1], order); +}this.setKeepChars(false); +break; +case 13: +this.state = 6; +break; +} +}, "~S"); +Clazz.defineMethod(c$, "addBond", +function(bond){ +var a1 = this.asc.atoms[bond.atomIndex1]; +var a2 = this.asc.atoms[bond.atomIndex2]; +if (this.joinList != null && !this.checkBondToR(a1.atomName, a2.atomName)) this.asc.addBond(bond); +}, "J.adapter.smarter.Bond"); +Clazz.defineMethod(c$, "checkBondToR", +function(a1name, a2name){ +var a1 = this.asc.getAtomFromName(a1name); +var a2 = this.asc.getAtomFromName(a2name); +if (a1 == null || a2 == null) return true; +if ("R".equals(a1.elementSymbol)) { +this.mapRtoA.put(a1, a2.atomName); +return true; +} else if ("R".equals(a2.elementSymbol)) { +this.mapRtoA.put(a2, a1.atomName); +return true; +}return false; +}, "~S,~S"); +Clazz.defineMethod(c$, "setAtomNames", +function(){ +if (this.atomIdNames == null) return; +var s; +var atoms = this.asc.atoms; +for (var i = this.atomIndex0; i < this.asc.ac; i++) if ((s = this.atomIdNames.getProperty(atoms[i].atomName)) != null) atoms[i].atomName = s; + +this.atomIdNames = null; +this.atomIndex0 = this.asc.ac; +}); +Clazz.defineMethod(c$, "addNewBond", +function(a1, a2, order){ +if (a1 == null || a2 == null) return; +this.parent.applySymmetryToBonds = true; +a1 = this.fixSerialName(a1); +a2 = this.fixSerialName(a2); +if (this.joinList == null || !this.checkBondToR(a1, a2)) { +this.asc.addNewBondFromNames(a1, a2, order); +this.bond = this.asc.bonds[this.asc.bondCount - 1]; +}}, "~S,~S,~N"); +Clazz.defineMethod(c$, "fixSerialName", +function(a){ +return (this.isSerial ? a.substring(1) : a); +}, "~S"); +Clazz.defineMethod(c$, "getDictRefValue", +function(){ +this.scalarDictRef = this.atts.get("dictref"); +if (this.scalarDictRef != null) { +var iColon = this.scalarDictRef.indexOf(":"); +this.scalarDictValue = this.scalarDictRef.substring(iColon + 1); +}}); +Clazz.defineMethod(c$, "checkUnitCellItem", +function(tags, value){ +for (var i = tags.length; --i >= 0; ) if (value.equals(tags[i])) { +this.parent.setUnitCellItem(i, this.parseFloatStr(this.chars.toString())); +return; +} +}, "~A,~S"); +Clazz.defineMethod(c$, "addAtom", +function(atom){ +if ((atom.elementSymbol == null && atom.elementNumber < 0) || Float.isNaN(atom.z)) return; +this.parent.setAtomCoord(atom); +if (this.htModelAtomMap != null) this.htModelAtomMap.put(this.moleculeID + atom.atomName, atom); +if (this.isSerial) this.asc.addAtomWithMappedSerialNumber(atom); + else this.asc.addAtomWithMappedName(atom); +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "parseBondToken", +function(str){ +var floatOrder = this.parseFloatStr(str); +if (Float.isNaN(floatOrder) && str.length >= 1) { +str = str.toUpperCase(); +switch ((str.charAt(0)).charCodeAt(0)) { +case 83: +return 1; +case 68: +return 2; +case 84: +return 3; +case 65: +return 515; +case 80: +return 66; +} +return this.parseIntStr(str); +}if (floatOrder == 1.5) return 515; +if (floatOrder == 2) return 2; +if (floatOrder == 3) return 3; +return 1; +}, "~S"); +Clazz.defineMethod(c$, "breakOutTokens", +function(str){ +var st = new java.util.StringTokenizer(str); +this.tokenCount = st.countTokens(); +if (this.tokenCount > this.tokens.length) this.tokens = new Array(this.tokenCount); +for (var i = 0; i < this.tokenCount; ++i) { +try { +this.tokens[i] = st.nextToken(); +} catch (nsee) { +if (Clazz.exceptionOf(nsee,"java.util.NoSuchElementException")){ +this.tokens[i] = null; +} else { +throw nsee; +} +} +} +}, "~S"); +Clazz.defineMethod(c$, "breakOutAtomTokens", +function(str){ +this.breakOutTokens(str); +this.checkAtomArrayLength(this.tokenCount); +}, "~S"); +Clazz.defineMethod(c$, "checkAtomArrayLength", +function(newAtomCount){ +if (this.aaLen == 0) { +if (newAtomCount > this.atomArray.length) this.atomArray = new Array(newAtomCount); +for (var i = newAtomCount; --i >= 0; ) this.atomArray[i] = new J.adapter.smarter.Atom(); + +this.aaLen = newAtomCount; +} else if (newAtomCount != this.aaLen) { +throw new IndexOutOfBoundsException("bad atom attribute length"); +}}, "~N"); +Clazz.defineMethod(c$, "breakOutBondTokens", +function(str){ +this.breakOutTokens(str); +this.checkBondArrayLength(this.tokenCount); +}, "~S"); +Clazz.defineMethod(c$, "checkBondArrayLength", +function(newBondCount){ +if (this.bondCount == 0) { +if (newBondCount > this.bondArray.length) this.bondArray = new Array(newBondCount); +for (var i = newBondCount; --i >= 0; ) this.bondArray[i] = new J.adapter.smarter.Bond(-1, -1, 1); + +this.bondCount = newBondCount; +} else if (newBondCount != this.bondCount) { +throw new IndexOutOfBoundsException("bad bond attribute length"); +}}, "~N"); +Clazz.defineMethod(c$, "createNewAtomSet", +function(){ +this.asc.newAtomSet(); +var val; +if (this.htModelAtomMap != null) this.htModelAtomMap.put("" + this.asc.iSet, "" + this.moleculeID); +var collectionName = ((val = this.atts.get("title")) != null || (val = this.atts.get("id")) != null ? val : null); +if (collectionName != null) { +this.asc.setAtomSetName(collectionName); +}}); +Clazz.defineMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +if (this.moduleNestingLevel > 0 || !this.haveMolecule || this.localSpaceGroupName == null) return; +this.parent.setSpaceGroupName(this.localSpaceGroupName); +this.parent.iHaveSymmetryOperators = this.iHaveSymmetryOperators; +if (this.parent === this) Clazz.superCall(this, J.adapter.readers.xml.XmlCmlReader, "applySymmetryAndSetTrajectory", []); + else this.parent.applySymmetryAndSetTrajectory(); +}); +Clazz.overrideMethod(c$, "endDocument", +function(){ +if (this.deleteAtoms != null) { +var bs = (this.asc.bsAtoms == null ? this.asc.bsAtoms = JU.BSUtil.newBitSet2(0, this.asc.ac) : this.asc.bsAtoms); +bs.andNot(this.deleteAtoms); +}}); +c$.unitCellParamTags = Clazz.newArray(-1, ["a", "b", "c", "alpha", "beta", "gamma"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlHandler.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlHandler.js new file mode 100755 index 000000000000..69bbb1c64017 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlHandler.js @@ -0,0 +1,72 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["org.xml.sax.helpers.DefaultHandler"], "J.adapter.readers.xml.XmlHandler", ["JU.Logger", "org.xml.sax.InputSource"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.xmlReader = null; +this.debugContext = ""; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlHandler", org.xml.sax.helpers.DefaultHandler); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlHandler, []); +}); +Clazz.defineMethod(c$, "parseXML", +function(xmlReader, saxReaderObj, reader){ +this.xmlReader = xmlReader; +var saxReader = saxReaderObj; +saxReader.setFeature("http://xml.org/sax/features/validation", false); +saxReader.setFeature("http://xml.org/sax/features/namespaces", true); +saxReader.setEntityResolver(this); +saxReader.setContentHandler(this); +saxReader.setErrorHandler(this); +var is = new org.xml.sax.InputSource(reader); +is.setSystemId("foo"); +saxReader.parse(is); +}, "J.adapter.readers.xml.XmlReader,~O,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "startDocument", +function(){ +}); +Clazz.overrideMethod(c$, "endDocument", +function(){ +this.xmlReader.endDocument(); +}); +Clazz.overrideMethod(c$, "startElement", +function(namespaceURI, localName, nodeName, attributes){ +this.xmlReader.atts.clear(); +for (var i = attributes.getLength(); --i >= 0; ) this.xmlReader.atts.put(attributes.getLocalName(i).toLowerCase(), attributes.getValue(i)); + +if (JU.Logger.debugging) { +this.debugContext += " " + localName; +JU.Logger.debug("start " + this.debugContext); +}this.xmlReader.processStartElement(localName.toLowerCase(), nodeName.toLowerCase()); +}, "~S,~S,~S,org.xml.sax.Attributes"); +Clazz.overrideMethod(c$, "endElement", +function(uri, localName, qName){ +if (JU.Logger.debugging) { +if (JU.Logger.debugging) { +JU.Logger.debug("end " + this.debugContext); +}this.debugContext = this.debugContext.substring(0, this.debugContext.lastIndexOf(" ")); +}this.xmlReader.processEndElement(localName.toLowerCase()); +}, "~S,~S,~S"); +Clazz.overrideMethod(c$, "characters", +function(ch, start, length){ +if (this.xmlReader.keepChars) this.xmlReader.chars.appendCB(ch, start, length); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "resolveEntity", +function(name, publicId, baseURI, systemId){ +if (JU.Logger.debugging) { +JU.Logger.debug("Not resolving this:\n name: " + name + "\n systemID: " + systemId + "\n publicID: " + publicId + "\n baseURI: " + baseURI); +}return null; +}, "~S,~S,~S,~S"); +Clazz.overrideMethod(c$, "error", +function(exception){ +JU.Logger.error("SAX ERROR:" + exception.getMessage()); +}, "org.xml.sax.SAXParseException"); +Clazz.overrideMethod(c$, "fatalError", +function(exception){ +JU.Logger.error("SAX FATAL:" + exception.getMessage()); +}, "org.xml.sax.SAXParseException"); +Clazz.overrideMethod(c$, "warning", +function(exception){ +JU.Logger.warn("SAX WARNING:" + exception.getMessage()); +}, "org.xml.sax.SAXParseException"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMOReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMOReader.js new file mode 100755 index 000000000000..174bf0621637 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMOReader.js @@ -0,0 +1,200 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlCmlReader"], "J.adapter.readers.xml.XmlMOReader", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "J.adapter.readers.quantum.BasisFunctionReader", "J.adapter.smarter.Resolver", "J.quantum.QS", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.moReader = null; +this.skipMOs = false; +this.htSlaterIDs = null; +this.basisData = null; +this.basisId = null; +this.isSpherical = false; +this.minL = 0; +this.maxL = 0; +this.basisIds = null; +this.basisAtoms = null; +this.orbOcc = 0; +this.orbEnergy = 0; +this.gaussianCount = 0; +this.slaterCount = 0; +this.coefCount = 0; +this.groupCount = 0; +this.lstGaussians = null; +this.moCount = 0; +this.calcType = null; +this.iModelMO = 0; +this.dclist = null; +this.dslist = null; +this.fclist = null; +this.fslist = null; +this.iHaveCoefMaps = false; +this.maxContraction = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlMOReader", J.adapter.readers.xml.XmlCmlReader); +Clazz.overrideMethod(c$, "processXml", +function(parent, saxReader){ +this.htModelAtomMap = new java.util.Hashtable(); +this.processXml2(parent, saxReader); +}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.defineMethod(c$, "processStartMO", +function(localName){ +if (!this.parent.doReadMolecularOrbitals) return false; +if (localName.equals("molecule")) { +var method = this.atts.get("method"); +if (method != null) this.calcType = method + "(" + this.atts.get("basis") + ")"; +return true; +}if (localName.equals("basisset")) { +this.iModelMO = this.asc.iSet; +this.lstGaussians = new JU.Lst(); +this.htSlaterIDs = new java.util.Hashtable(); +this.coefCount = this.groupCount = this.gaussianCount = this.slaterCount = 0; +if (this.moReader == null && !this.skipMOs) { +var rdr = J.adapter.smarter.Resolver.getReader("MO", this.parent.htParams); +if (((typeof(rdr)=='string'))) { +this.skipMOs = true; +} else { +this.moReader = rdr; +this.moReader.asc = this.asc; +if (this.iHaveCoefMaps) { +var m = this.moReader.getDfCoefMaps(); +if (this.dclist != null) J.quantum.QS.createDFMap(m[4], this.dclist, "DXX DYY DZZ DXY DXZ DYZ", 2); +if (this.dslist != null) J.quantum.QS.createDFMap(m[3], this.dslist, "d0 d1+ d1- d2+ d2-", 2); +if (this.fclist != null) J.quantum.QS.createDFMap(m[6], this.fclist, "XXX YYY ZZZ XYY XXY XXZ XZZ YZZ YYZ XYZ", 2); +if (this.fslist != null) J.quantum.QS.createDFMap(m[5], this.fslist, "f0 f1+ f1- f2+ f2- f3+ f3-", 2); +}}}if (this.moReader != null) this.moReader.calculationType = this.calcType; +return true; +}if (this.moReader != null) { +if (localName.equals("basisgroup")) { +this.groupCount++; +this.basisId = this.atts.get("id"); +this.isSpherical = "spherical".equalsIgnoreCase(this.atts.get("angular")); +this.minL = JU.PT.parseInt(this.atts.get("minl")); +this.maxL = JU.PT.parseInt(this.atts.get("maxl")); +var nContractions = JU.PT.parseInt(this.atts.get("contractions")); +var n = nContractions * (this.isSpherical ? this.minL * 2 + 1 : Clazz.doubleToInt(this.minL * (this.minL + 3) / 2) + 1); +this.htModelAtomMap.put(this.basisId + "_count", Integer.$valueOf(n)); +return true; +}if (localName.equals("basisexponents") || localName.equals("basiscontraction")) { +this.setKeepChars(true); +return true; +}if (localName.equals("orbital") && this.gaussianCount > 0) { +this.orbOcc = JU.PT.parseFloat(this.atts.get("occupation")); +this.orbEnergy = JU.PT.parseFloat(this.atts.get("energy")); +this.setKeepChars(true); +return true; +}}return false; +}, "~S"); +Clazz.defineMethod(c$, "processEndMO", +function(localName){ +if (this.moReader != null) { +if (localName.equals("basisexponents")) { +this.basisData = new JU.Lst(); +this.basisData.addLast(JU.PT.parseFloatArray(this.chars.toString())); +this.setKeepChars(false); +return true; +}if (localName.equals("basiscontraction")) { +var data = JU.PT.parseFloatArray(this.chars.toString()); +this.basisData.addLast(data); +if (this.basisData.size() > this.maxContraction) this.maxContraction = this.basisData.size(); +this.setKeepChars(false); +return true; +}if (localName.equals("basisgroup")) { +var otype; +switch (this.minL) { +case 0: +otype = (this.maxL == 1 ? "L" : "S"); +break; +case 1: +otype = "P"; +break; +default: +otype = (this.minL <= 7 ? "SPDFGHI".substring(this.minL, this.minL + 1) : "?"); +if (this.isSpherical) otype = (2 * (this.minL) + 1) + otype; +} +this.lstGaussians.addLast(this.basisData); +var nPrimitives = this.basisData.get(0).length; +for (var i = 1, n = this.basisData.size(); i < n; i++) { +this.htSlaterIDs.put(this.basisId + "_" + i, Clazz.newIntArray(-1, [-1, J.adapter.readers.quantum.BasisFunctionReader.getQuantumShellTagID(otype), this.gaussianCount + 1, nPrimitives])); +this.gaussianCount += nPrimitives; +} +return true; +}if (localName.equals("basisset")) { +this.buildSlaters(); +return true; +}if (localName.equals("orbital")) { +if (this.gaussianCount == 0) return true; +var coef = JU.PT.parseFloatArray(this.chars.toString()); +if (this.moCount == 0) { +if (coef.length != this.coefCount) { +JU.Logger.error("Number of orbital coefficients (" + coef.length + ") does not agree with expected number (" + this.coefCount + ")"); +this.moReader = null; +return this.skipMOs = true; +}JU.Logger.info(this.coefCount + " coefficients found"); +}this.moReader.addCoef( new java.util.Hashtable(), coef, null, this.orbEnergy, this.orbOcc, this.moCount++); +this.setKeepChars(false); +return true; +}if (localName.equals("orbitals")) { +this.moReader.setMOData(true); +JU.Logger.info("XmlMOReader created\n " + this.gaussianCount + " gaussians\n " + this.slaterCount + " slaters\n " + this.groupCount + " groups\n " + this.coefCount + " orbital coefficients\n " + this.moCount + " orbitals"); +return true; +}if (this.state == 19) { +if (localName.equals("bases")) { +this.basisIds = this.getXlink(this.atts.get("href"), "basisGroup", false); +} else if (localName.equals("atoms")) { +this.basisAtoms = this.getXlink(this.atts.get("href"), "atom", true); +} else if (localName.equals("association")) { +this.state = 6; +for (var i = this.basisAtoms.length; --i >= 0; ) { +var a = this.htModelAtomMap.get(this.basisAtoms[i]); +if (a == null) { +JU.Logger.error("XmlMOReader atom not found; orbitals skipped: " + a); +this.moReader = null; +return this.skipMOs = true; +}this.htModelAtomMap.put(this.basisAtoms[i] + "_basis", this.basisIds); +} +this.slaterCount += this.basisIds.length * this.basisAtoms.length; +}return true; +}}return false; +}, "~S"); +Clazz.defineMethod(c$, "buildSlaters", +function(){ +var gaussians = JU.AU.newFloat2(this.gaussianCount); +for (var i = 0, p = 0, n = this.lstGaussians.size(); i < n; i++) { +this.basisData = this.lstGaussians.get(i); +var exp = this.basisData.get(0); +for (var ii = 1, nn = this.basisData.size(); ii < nn; ii++) { +var coef = this.basisData.get(ii); +for (var j = 0; j < exp.length; j++) gaussians[p++] = Clazz.newFloatArray(-1, [exp[j], coef[j], 0]); + +} +} +this.moReader.gaussians = gaussians; +var slaters = new JU.Lst(); +var modelID = this.htModelAtomMap.get("" + this.iModelMO); +var i0 = this.asc.getAtomSetAtomIndex(this.iModelMO); +for (var i = 0, n = this.asc.getAtomSetAtomCount(this.iModelMO); i < n; i++) { +var ids = this.htModelAtomMap.get(modelID + this.asc.atoms[i0 + i].atomName + "_basis"); +if (ids == null) continue; +for (var k = 0; k < ids.length; k++) { +var key = ids[k] + "_count"; +this.coefCount += (this.htModelAtomMap.get(key)).intValue(); +for (var kk = 1; kk < this.maxContraction; kk++) { +var slater = this.htSlaterIDs.get(ids[k] + "_" + kk); +if (slater == null) break; +slater = JU.AU.arrayCopyI(slater, -1); +this.moReader.shells = slaters; +slater[0] = i + 1; +slaters.addLast(slater); +} +} +} +}); +Clazz.defineMethod(c$, "getXlink", +function(href, key, addMoleculeID){ +var p = href.indexOf(key + "[") + 1; +var tokens = JU.PT.split(href.substring(p), "'"); +var data = new Array(Clazz.doubleToInt(tokens.length / 2)); +var molID = (addMoleculeID ? JU.PT.getQuotedAttribute(href.substring(0, p).$replace('\'', '"'), "molecule[@id") : ""); +for (var i = 1, pt = 0; i < tokens.length; i += 2) data[pt++] = molID + tokens[i]; + +return data; +}, "~S,~S,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMagResReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMagResReader.js new file mode 100755 index 000000000000..6a93fefc6087 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMagResReader.js @@ -0,0 +1,38 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader"], "J.adapter.readers.xml.XmlMagResReader", ["JU.Logger"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.xml, "XmlMagResReader", J.adapter.readers.xml.XmlReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlMagResReader, []); +}); +Clazz.overrideMethod(c$, "processXml", +function(parent, saxReader){ +parent.doProcessLines = true; +this.processXml2(parent, saxReader); +}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +if (this.debugging) JU.Logger.debug("xmlmagres: start " + localName); +if (!this.parent.continuing) return; +if ("calculation".equals(localName)) { +this.setKeepChars(true); +return; +}if ("atoms".equals(localName)) { +this.setKeepChars(true); +return; +}}, "~S,~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +if (this.debugging) JU.Logger.debug("xmlmagres: end " + localName); +while (true) { +if ("calculation".equals(localName)) { +break; +}if (!this.parent.doProcessLines) break; +if ("atoms".equals(localName)) { +break; +}return; +} +this.setKeepChars(false); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMolproReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMolproReader.js new file mode 100755 index 000000000000..f3f9cf7a5f36 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlMolproReader.js @@ -0,0 +1,60 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlMOReader"], "J.adapter.readers.xml.XmlMolproReader", ["JU.PT"], function(){ +var c$ = Clazz.declareType(J.adapter.readers.xml, "XmlMolproReader", J.adapter.readers.xml.XmlMOReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlMolproReader, []); +this.dslist = "d0 d2- d1+ d2+ d1-"; +this.fclist = "XXX YYY ZZZ XXY XXZ XYY YYZ XZZ YZZ XYZ"; +this.fslist = "f1+ f1- f0 f3+ f2- f3- f2+"; +this.iHaveCoefMaps = true; +}); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +if (!this.processing) return; +this.processStart2(localName); +if (!this.processStartMO(localName)) { +if (localName.equals("normalcoordinate")) { +this.setKeepChars(false); +if (!this.parent.doGetVibration(++this.vibrationNumber)) return; +try { +this.asc.cloneLastAtomSet(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("" + e); +this.asc.errorMessage = "Error processing normalCoordinate: " + e.getMessage(); +this.vibrationNumber = 0; +return; +} else { +throw e; +} +} +if (this.atts.containsKey("wavenumber")) { +var wavenumber = this.atts.get("wavenumber"); +var units = "cm^-1"; +if (this.atts.containsKey("units")) { +units = this.atts.get("units"); +if (units.startsWith("inverseCent")) units = "cm^-1"; +}this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, wavenumber, units); +this.setKeepChars(true); +}return; +}if (localName.equals("vibrations")) { +this.vibrationNumber = 0; +return; +}}}, "~S,~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +if (!this.processEndMO(localName)) { +if (localName.equals("normalcoordinate")) { +if (!this.keepChars) return; +var ac = this.asc.getLastAtomSetAtomCount(); +var baseAtomIndex = this.asc.getLastAtomSetAtomIndex(); +this.tokens = JU.PT.getTokens(this.chars.toString()); +for (var offset = this.tokens.length - ac * 3, i = 0; i < ac; i++) { +this.asc.addVibrationVector(i + baseAtomIndex, this.parseFloatStr(this.tokens[offset++]), this.parseFloatStr(this.tokens[offset++]), this.parseFloatStr(this.tokens[offset++])); +} +this.setKeepChars(false); +}}this.processEnd2(localName); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlOdysseyReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlOdysseyReader.js new file mode 100755 index 000000000000..b439d613825f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlOdysseyReader.js @@ -0,0 +1,104 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader"], "J.adapter.readers.xml.XmlOdysseyReader", ["JU.P3", "$.PT", "J.adapter.smarter.Atom"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modelName = null; +this.formula = null; +this.phase = null; +this.formalCharge = -2147483648; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlOdysseyReader", J.adapter.readers.xml.XmlReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlOdysseyReader, []); +}); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +if ("structure".equals(localName)) { +this.asc.newAtomSet(); +return; +}if ("atom".equals(localName)) { +var id = this.atts.get("id"); +(this.atom = new J.adapter.smarter.Atom()).atomName = this.atts.get(this.atts.containsKey("label") ? "label" : "id"); +if (id != null && this.stateScriptVersionInt >= 140400) this.asc.atomSymbolicMap.put(id, this.atom); +if (this.atts.containsKey("xyz")) { +var xyz = this.atts.get("xyz"); +var tokens = JU.PT.getTokens(xyz); +this.atom.set(this.parseFloatStr(tokens[0]), this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2])); +}if (this.atts.containsKey("element")) { +this.atom.elementSymbol = this.atts.get("element"); +}return; +}if ("bond".equals(localName)) { +var atom1 = this.atts.get("a"); +var atom2 = this.atts.get("b"); +var order = 1; +if (this.atts.containsKey("order")) order = this.parseBondToken(this.atts.get("order")); +this.asc.addNewBondFromNames(atom1, atom2, order); +return; +}if ("group".equals(localName)) { +var charge = this.atts.get("charge"); +if (charge != null && charge.indexOf(".") < 0) { +this.formalCharge = JU.PT.parseInt(charge); +}return; +}if ("member".equals(localName) && this.formalCharge != -2147483648) { +var atom = this.asc.getAtomFromName(this.atts.get("entity")); +if (atom != null) atom.formalCharge = this.formalCharge; +return; +}if ("boundary".equals(localName)) { +var boxDim = JU.PT.getTokens(this.atts.get("box")); +var x = this.parseFloatStr(boxDim[0]); +var y = this.parseFloatStr(boxDim[1]); +var z = this.parseFloatStr(boxDim[2]); +this.parent.setUnitCellItem(0, x); +this.parent.setUnitCellItem(1, y); +this.parent.setUnitCellItem(2, z); +this.parent.setUnitCellItem(3, 90); +this.parent.setUnitCellItem(4, 90); +this.parent.setUnitCellItem(5, 90); +var pt = JU.P3.new3(-x / 2, -y / 2, -z / 2); +var atoms = this.asc.atoms; +for (var i = this.asc.ac; --i >= 0; ) { +atoms[i].sub(pt); +this.parent.setAtomCoord(atoms[i]); +} +if (this.parent.latticeCells[0] == 0) this.parent.latticeCells[0] = this.parent.latticeCells[1] = this.parent.latticeCells[2] = 1; +return; +}if ("odyssey_simulation".equals(localName)) { +if (this.modelName != null && this.phase != null) this.modelName += " - " + this.phase; +if (this.modelName != null) this.asc.setAtomSetName(this.modelName); +if (this.formula != null) this.asc.setCurrentModelInfo("formula", this.formula); +}if ("title".equals(localName) || "formula".equals(localName) || "phase".equals(localName)) this.setKeepChars(true); +}, "~S,~S"); +Clazz.defineMethod(c$, "parseBondToken", +function(str){ +if (str.length >= 1) { +switch ((str.charAt(0)).charCodeAt(0)) { +case 115: +return 1; +case 100: +return 2; +case 116: +return 3; +case 97: +return 515; +} +return this.parseIntStr(str); +}return 1; +}, "~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +if ("atom".equals(localName)) { +if (this.atom.elementSymbol != null && !Float.isNaN(this.atom.z)) { +this.asc.addAtomWithMappedName(this.atom); +}this.atom = null; +return; +}if ("group".equals(localName)) { +this.formalCharge = -2147483648; +} else if ("title".equals(localName)) { +this.modelName = this.chars.toString(); +} else if ("formula".equals(localName)) { +this.formula = this.chars.toString(); +} else if ("phase".equals(localName)) { +this.phase = this.chars.toString(); +}this.setKeepChars(false); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlQEReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlQEReader.js new file mode 100755 index 000000000000..68da9f3d94f7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlQEReader.js @@ -0,0 +1,74 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader"], "J.adapter.readers.xml.XmlQEReader", ["JU.PT", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.a = 0; +this.b = 0; +this.c = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlQEReader", J.adapter.readers.xml.XmlReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlQEReader, []); +}); +Clazz.overrideMethod(c$, "processXml", +function(parent, saxReader){ +parent.doProcessLines = true; +this.processXml2(parent, saxReader); +}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +if (this.debugging) JU.Logger.debug("xmlqe: start " + localName); +if (!this.parent.continuing) return; +if ("number_of_atoms".equals(localName) || "cell_dimensions".equals(localName) || "at".equals(localName)) { +this.setKeepChars(true); +return; +}if (localName.startsWith("atom.")) { +this.parent.setAtomCoordScaled(null, JU.PT.getTokens(this.atts.get("tau")), 0, 0.5291772).elementSymbol = this.atts.get("species").trim(); +}if ("structure".equals(localName)) { +if (!this.parent.doGetModel(++this.parent.modelNumber, null)) { +this.parent.checkLastModel(); +return; +}this.parent.setFractionalCoordinates(true); +this.asc.doFixPeriodic = true; +this.asc.newAtomSet(); +return; +}if (!this.parent.doProcessLines) return; +}, "~S,~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +if (this.debugging) JU.Logger.debug("xmlqe: end " + localName); +while (true) { +if (!this.parent.doProcessLines) break; +if ("cell_dimensions".equals(localName)) { +this.parent.setFractionalCoordinates(true); +var data = J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(this.chars.toString(), null, 6); +this.a = data[0]; +this.b = (data[1] == 0 ? this.a : data[1]); +this.c = (data[2] == 0 ? this.a : data[2]); +break; +}if ("at".equals(localName)) { +var m = J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(this.chars.toString(), null, 9); +for (var i = 0; i < 9; i += 3) { +m[i] *= this.a; +m[i + 1] *= this.b; +m[i + 2] *= this.c; +} +this.parent.addExplicitLatticeVector(0, m, 0); +this.parent.addExplicitLatticeVector(1, m, 3); +this.parent.addExplicitLatticeVector(2, m, 6); +break; +}if ("geometry_info".equals(localName)) { +try { +this.parent.applySymmetryAndSetTrajectory(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +break; +}return; +} +this.setKeepChars(false); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlReader.js new file mode 100755 index 000000000000..3644d8d8dbdd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlReader.js @@ -0,0 +1,220 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "JU.SB"], "J.adapter.readers.xml.XmlReader", ["java.util.Hashtable", "JU.Rdr", "J.adapter.smarter.AtomSetCollection", "$.Resolver", "J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atom = null; +this.bond = null; +this.parent = null; +this.atts = null; +this.thisReader = null; +this.keepChars = false; +this.chars = null; +this.domObj = null; +this.attribs = null; +if (!Clazz.isClassDefined("J.adapter.readers.xml.XmlReader.NVPair")) { +J.adapter.readers.xml.XmlReader.$XmlReader$NVPair$ (); +} +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.parent = this; +this.chars = JU.SB.newN(2000); +this.domObj = new Array(1); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.atts = new java.util.Hashtable(); +this.setMyError(this.parseXML()); +this.continuing = false; +}); +Clazz.defineMethod(c$, "setMyError", +function(err){ +if (err != null && (this.asc == null || this.asc.errorMessage == null)) { +this.asc = new J.adapter.smarter.AtomSetCollection("xml", this, null, null); +this.asc.errorMessage = err; +}}, "~S"); +Clazz.defineMethod(c$, "parseXML", +function(){ +var saxReader = null; +{ +}return this.selectReaderAndGo(saxReader); +}); +Clazz.defineMethod(c$, "selectReaderAndGo", +function(saxReader){ +var className = null; +var pt = this.readerName.indexOf("("); +var name = (pt < 0 ? this.readerName : this.readerName.substring(0, pt)); +className = J.adapter.smarter.Resolver.getReaderClassBase(name); +if (className.equals(this.getClass().getName())) { +this.thisReader = this.parent = this; +} else { +this.asc = new J.adapter.smarter.AtomSetCollection(this.readerName, this, null, null); +if ((this.thisReader = this.getInterface(className)) == null) return "File reader was not found: " + className; +}try { +this.thisReader.processXml(this, saxReader); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return "Error reading XML: " + (e.getMessage()); +} else { +throw e; +} +} +return null; +}, "~O"); +Clazz.defineMethod(c$, "processXml", +function(parent, saxReader){ +this.processXml2(parent, saxReader); +}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.defineMethod(c$, "processXml2", +function(parent, saxReader){ +this.parent = parent; +if (parent !== this) { +this.asc = parent.asc; +this.reader = parent.reader; +this.atts = parent.atts; +}if (saxReader == null) { +this.attribs = new Array(1); +this.domObj = new Array(1); +var o = ""; +var data = null; +{ +o = this.reader.lock.lock; if (o.$in) data = o.$in.buf; +}if (Clazz.instanceOf(o,"java.io.BufferedInputStream")) o = JU.Rdr.streamToUTF8String(JU.Rdr.getBIS(data)); +var isjs = false; +{ +isjs = true; +}if (isjs) { +this.domObj[0] = this.createDomNodeJS("xmlReader", o); +this.walkDOMTree(); +this.createDomNodeJS("xmlReader", null); +}} else { +(J.api.Interface.getOption("adapter.readers.xml.XmlHandler", this.vwr, "file")).parseXML(this, saxReader, this.reader); +}}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.defineMethod(c$, "createDomNodeJS", +function(id, data){ +var applet = (this.parent == null ? this : this.parent).vwr.html5Applet; +var d = null; +{ +if (!data) +return null; +if (data.indexOf("") >= 0) { +var D = data.split("/>"); +for (var i = D.length - 1; --i >= 0;) { +var s = D[i]; +var pt = s.lastIndexOf("<") + 1; +var pt2 = pt; +var len = s.length; +var name = ""; +while (++pt2 < len) { +if (" \t\n\r".indexOf(s.charAt(pt2))>= 0) { +var name = s.substring(pt, pt2); +D[i] = s + ">"; +break; +} +} +} +data = D.join(''); +} +d = document.createElement("_xml"); +d.innerHTML = data; +}return d; +}, "~S,~O"); +Clazz.overrideMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +try { +if (this.parent == null || this.parent === this) this.applySymTrajASCR(); + else this.parent.applySymmetryAndSetTrajectory(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("applySymmetry failed: " + e); +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "processDOM", +function(DOMNode){ +this.domObj = Clazz.newArray(-1, [DOMNode]); +this.setMyError(this.selectReaderAndGo(null)); +}, "~O"); +Clazz.defineMethod(c$, "processStartElement", +function(localName, nodeName){ +}, "~S,~S"); +Clazz.defineMethod(c$, "setKeepChars", +function(TF){ +this.keepChars = TF; +this.chars.setLength(0); +}, "~B"); +Clazz.defineMethod(c$, "processEndElement", +function(localName){ +}, "~S"); +Clazz.defineMethod(c$, "walkDOMTree", +function(){ +var localName; +{ +localName = "nodeName"; +}var nodeName = (this.jsObjectGetMember(this.domObj, localName)); +localName = this.fixLocal(nodeName); +if (localName == null) return; +if (localName.equals("#text")) { +if (this.keepChars) this.chars.append(this.jsObjectGetMember(this.domObj, "data")); +return; +}localName = localName.toLowerCase(); +nodeName = nodeName.toLowerCase(); +this.attribs[0] = this.jsObjectGetMember(this.domObj, "attributes"); +this.getDOMAttributesA(this.attribs); +this.processStartElement(localName, nodeName); +var haveChildren = false; +{ +haveChildren = this.domObj[0].hasChildNodes; +}if (haveChildren) { +var nextNode = this.jsObjectGetMember(this.domObj, "firstChild"); +while (nextNode != null) { +this.domObj[0] = nextNode; +this.walkDOMTree(); +this.domObj[0] = nextNode; +nextNode = this.jsObjectGetMember(this.domObj, "nextSibling"); +} +}this.processEndElement(localName); +}); +Clazz.defineMethod(c$, "fixLocal", +function(name){ +{ +var pt = (name== null ? -1 : name.indexOf(":")); return (pt >= +0 ? name.substring(pt+1) : name); +}}, "~S"); +Clazz.defineMethod(c$, "getDOMAttributesA", +function(attributes){ +this.atts.clear(); +if (attributes == null) return; +var nodes = null; +{ +nodes = attributes[0]; +}for (var i = nodes.length; --i >= 0; ) this.atts.put(this.fixLocal(nodes[i].name).toLowerCase(), nodes[i].value); + +}, "~A"); +Clazz.defineMethod(c$, "jsObjectGetMember", +function(jsObject, name){ +{ +return jsObject[0][name]; +}}, "~A,~S"); +Clazz.defineMethod(c$, "endDocument", +function(){ +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (this.thisReader != null && this.thisReader !== this) this.thisReader.finalizeSubclassReader(); +this.thisReader = null; +}); +c$.$XmlReader$NVPair$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.name = null; +this.value = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml.XmlReader, "NVPair", null); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlVaspReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlVaspReader.js new file mode 100755 index 000000000000..29596b6b535c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlVaspReader.js @@ -0,0 +1,159 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader"], "J.adapter.readers.xml.XmlVaspReader", ["JU.PT", "$.SB", "$.V3", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.data = null; +this.name = null; +this.ac = 0; +this.iAtom = 0; +this.isE_wo_entrp = false; +this.isE_fr_energy = false; +this.enthalpy = null; +this.gibbsEnergy = null; +this.haveUnitCell = false; +this.atomNames = null; +this.atomSyms = null; +this.atomName = null; +this.atomSym = null; +this.a = 0; +this.b = 0; +this.c = 0; +this.alpha = 0; +this.beta = 0; +this.gamma = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlVaspReader", J.adapter.readers.xml.XmlReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlVaspReader, []); +}); +Clazz.overrideMethod(c$, "processXml", +function(parent, saxReader){ +parent.doProcessLines = true; +this.processXml2(parent, saxReader); +}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +if (this.debugging) JU.Logger.debug("xmlvasp: start " + localName); +if (!this.parent.continuing) return; +if ("calculation".equals(localName)) { +this.enthalpy = null; +this.gibbsEnergy = null; +return; +}if ("i".equals(localName)) { +var s = this.atts.get("name"); +if (s.charAt(0) != 'e') return; +this.isE_wo_entrp = s.equals("e_wo_entrp"); +this.isE_fr_energy = s.equals("e_fr_energy"); +this.setKeepChars(this.isE_wo_entrp || this.isE_fr_energy); +return; +}if ("structure".equals(localName)) { +if (!this.parent.doGetModel(++this.parent.modelNumber, null)) { +this.parent.checkLastModel(); +return; +}this.parent.setFractionalCoordinates(true); +this.asc.doFixPeriodic = true; +this.asc.newAtomSet(); +if (this.enthalpy != null) { +this.asc.setCurrentModelInfo("enthalpy", Double.$valueOf(this.enthalpy)); +}if (this.gibbsEnergy != null) { +this.asc.setAtomSetEnergy("" + this.gibbsEnergy, this.parseFloatStr(this.gibbsEnergy)); +this.asc.setCurrentModelInfo("gibbsEnergy", Double.$valueOf(this.gibbsEnergy)); +}if (this.enthalpy != null && this.gibbsEnergy != null) this.asc.setAtomSetName("Enthalpy = " + this.enthalpy + " eV Gibbs Energy = " + this.gibbsEnergy + " eV"); +return; +}if (!this.parent.doProcessLines) return; +if ("v".equals(localName)) { +this.setKeepChars(this.data != null); +return; +}if ("c".equals(localName)) { +this.setKeepChars(this.iAtom < this.ac); +return; +}if ("varray".equals(localName)) { +this.name = this.atts.get("name"); +if (this.name != null && JU.PT.isOneOf(this.name, ";basis;positions;forces;")) this.data = new JU.SB(); +return; +}if ("atoms".equals(localName)) { +this.setKeepChars(true); +return; +}}, "~S,~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +if (this.debugging) JU.Logger.debug("xmlvasp: end " + localName); +while (true) { +if (!this.parent.doProcessLines) break; +if (this.isE_wo_entrp) { +this.isE_wo_entrp = false; +this.enthalpy = this.chars.toString().trim(); +break; +}if (this.isE_fr_energy) { +this.isE_fr_energy = false; +this.gibbsEnergy = this.chars.toString().trim(); +break; +}if ("v".equals(localName) && this.data != null) { +this.data.append(this.chars.toString()); +break; +}if ("c".equals(localName)) { +if (this.iAtom < this.ac) { +if (this.atomName == null) { +this.atomName = this.atomSym = this.chars.toString().trim(); +} else { +this.atomNames[this.iAtom++] = this.atomName + this.chars.toString().trim(); +this.atomName = null; +}}break; +}if ("atoms".equals(localName)) { +this.ac = this.parseIntStr(this.chars.toString()); +this.atomNames = new Array(this.ac); +this.atomSyms = new Array(this.ac); +this.iAtom = 0; +break; +}if ("varray".equals(localName) && this.data != null) { +if (this.name == null) { +} else if ("basis".equals(this.name) && !this.haveUnitCell) { +this.haveUnitCell = true; +var ijk = J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(this.data.toString(), null, 9); +var va = JU.V3.new3(ijk[0], ijk[1], ijk[2]); +var vb = JU.V3.new3(ijk[3], ijk[4], ijk[5]); +var vc = JU.V3.new3(ijk[6], ijk[7], ijk[8]); +this.a = va.length(); +this.b = vb.length(); +this.c = vc.length(); +va.normalize(); +vb.normalize(); +vc.normalize(); +this.alpha = (Math.acos(vb.dot(vc)) * 180 / 3.141592653589793); +this.beta = (Math.acos(va.dot(vc)) * 180 / 3.141592653589793); +this.gamma = (Math.acos(va.dot(vb)) * 180 / 3.141592653589793); +} else if ("positions".equals(this.name)) { +this.parent.setUnitCell(this.a, this.b, this.c, this.alpha, this.beta, this.gamma); +var fdata = Clazz.newFloatArray (this.ac * 3, 0); +J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(this.data.toString(), fdata, this.ac * 3); +var fpt = 0; +for (var i = 0; i < this.ac; i++) { +var atom = this.asc.addNewAtom(); +this.parent.setAtomCoordXYZ(atom, fdata[fpt++], fdata[fpt++], fdata[fpt++]); +atom.elementSymbol = this.atomSyms[i]; +atom.atomName = this.atomNames[i]; +} +} else if ("forces".equals(this.name)) { +var fdata = Clazz.newFloatArray (this.ac * 3, 0); +J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(this.data.toString(), fdata, this.ac * 3); +var fpt = 0; +var i0 = this.asc.getLastAtomSetAtomIndex(); +for (var i = 0; i < this.ac; i++) this.asc.addVibrationVector(i0 + i, fdata[fpt++], fdata[fpt++], fdata[fpt++]); + +}this.data = null; +break; +}if ("structure".equals(localName)) { +try { +this.parent.applySymmetryAndSetTrajectory(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +break; +}return; +} +this.setKeepChars(false); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlXsdReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlXsdReader.js new file mode 100755 index 000000000000..77057c4fb0dd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xml/XmlXsdReader.js @@ -0,0 +1,71 @@ +Clazz.declarePackage("J.adapter.readers.xml"); +Clazz.load(["J.adapter.readers.xml.XmlReader", "JU.BS"], "J.adapter.readers.xml.XmlXsdReader", ["JU.PT", "J.adapter.smarter.Atom"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bsBackbone = null; +this.iChain = -1; +this.iGroup = 0; +this.iAtom = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xml, "XmlXsdReader", J.adapter.readers.xml.XmlReader); +Clazz.prepareFields (c$, function(){ +this.bsBackbone = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xml.XmlXsdReader, []); +}); +Clazz.overrideMethod(c$, "processXml", +function(parent, saxReader){ +parent.htParams.put("backboneAtoms", this.bsBackbone); +this.processXml2(parent, saxReader); +this.asc.atomSymbolicMap.clear(); +}, "J.adapter.readers.xml.XmlReader,~O"); +Clazz.overrideMethod(c$, "processStartElement", +function(localName, nodeName){ +var tokens; +if ("molecule".equals(localName)) { +this.asc.newAtomSet(); +this.asc.setAtomSetName(this.atts.get("name")); +return; +}if ("linearchain".equals(localName)) { +this.iGroup = 0; +this.iChain++; +}if ("repeatunit".equals(localName)) { +this.iGroup++; +}if ("atom3d".equals(localName)) { +this.atom = new J.adapter.smarter.Atom(); +this.atom.elementSymbol = this.atts.get("components"); +this.atom.atomName = this.atts.get("id"); +this.atom.atomSerial = ++this.iAtom; +if (this.iChain >= 0) this.parent.setChainID(this.atom, "" + String.fromCharCode((this.iChain - 1) % 26 + 65)); +this.atom.group3 = "UNK"; +if (this.iGroup == 0) this.iGroup = 1; +this.atom.sequenceNumber = this.iGroup; +var xyz = this.atts.get("xyz"); +if (xyz != null) { +tokens = JU.PT.getTokens(xyz.$replace(',', ' ')); +this.atom.set(this.parseFloatStr(tokens[0]), this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2])); +}var isBackbone = "1".equals(this.atts.get("isbackboneatom")); +if (isBackbone) this.bsBackbone.set(this.iAtom); +return; +}if ("bond".equals(localName)) { +var atoms = JU.PT.split(this.atts.get("connects"), ","); +var order = 1; +if (this.atts.containsKey("type")) { +var type = this.atts.get("type"); +if (type.equals("Double")) order = 2; + else if (type.equals("Triple")) order = 3; +}this.asc.addNewBondFromNames(atoms[0], atoms[1], order); +return; +}}, "~S,~S"); +Clazz.overrideMethod(c$, "processEndElement", +function(localName){ +if ("atom3d".equalsIgnoreCase(localName)) { +if (this.atom.elementSymbol != null && !Float.isNaN(this.atom.z)) { +this.parent.setAtomCoord(this.atom); +this.asc.addAtomWithMappedName(this.atom); +}this.atom = null; +return; +}this.setKeepChars(false); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/AbinitReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/AbinitReader.js new file mode 100755 index 000000000000..b0d79aeb9f64 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/AbinitReader.js @@ -0,0 +1,107 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.AbinitReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.znucl = null; +this.inputOnly = false; +this.nAtom = 0; +this.nType = 0; +this.typeArray = null; +this.cellLattice = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "AbinitReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setSpaceGroupName("P1"); +this.doApplySymmetry = true; +this.setFractionalCoordinates(false); +this.inputOnly = this.checkFilterKey("INPUT"); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.contains("natom")) { +this.readNoatom(); +} else if (this.line.contains("ntypat") || this.line.contains("ntype")) { +this.readNotypes(); +} else if (this.line.contains("typat") || this.line.contains("type")) { +this.readTypesequence(); +} else if (this.line.contains("Pseudopotential")) { +this.readAtomSpecies(); +} else if (this.line.contains("Symmetries :")) { +this.readSpaceGroup(); +} else if (this.line.contains("Real(R)+Recip(G)")) { +this.readIntiallattice(); +if (this.inputOnly) this.continuing = false; +} else if (this.line.contains("xcart")) { +this.readAtoms(); +}return true; +}); +Clazz.defineMethod(c$, "readNoatom", +function(){ +var tokens = this.getTokens(); +if (tokens.length <= 2) this.nAtom = this.parseIntStr(tokens[1]); +}); +Clazz.defineMethod(c$, "readNotypes", +function(){ +var tokens = this.getTokens(); +if (tokens.length <= 2) this.nType = this.parseIntStr(tokens[1]); +}); +Clazz.defineMethod(c$, "readTypesequence", +function(){ +this.fillFloatArray(this.line.substring(12), 0, this.typeArray = Clazz.newFloatArray (this.nAtom, 0)); +}); +Clazz.defineMethod(c$, "readAtomSpecies", +function(){ +this.znucl = Clazz.newFloatArray (this.nType, 0); +for (var i = 0; i < this.nType; i++) { +this.discardLinesUntilContains("zion"); +var tokens = this.getTokens(); +this.znucl[i] = this.parseFloatStr(tokens[tokens[0] === "-" ? 1 : 0]); +} +}); +Clazz.defineMethod(c$, "readSpaceGroup", +function(){ +}); +Clazz.defineMethod(c$, "readIntiallattice", +function(){ +var f = 0; +this.cellLattice = Clazz.newFloatArray (9, 0); +for (var i = 0; i < 9; i++) { +if (i % 3 == 0) { +this.line = this.rd().substring(6); +f = this.parseFloatStr(this.line); +}this.cellLattice[i] = f * 0.5291772; +f = this.parseFloat(); +} +this.applySymmetry(); +}); +Clazz.defineMethod(c$, "applySymmetry", +function(){ +if (this.cellLattice == null) return; +this.setSpaceGroupName("P1"); +for (var i = 0; i < 3; i++) this.addExplicitLatticeVector(i, this.cellLattice, i * 3); + +var atoms = this.asc.atoms; +var i0 = this.asc.getAtomSetAtomIndex(this.asc.iSet); +if (!this.iHaveFractionalCoordinates) for (var i = this.asc.ac; --i >= i0; ) this.setAtomCoord(atoms[i]); + +this.applySymmetryAndSetTrajectory(); +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.asc.newAtomSet(); +this.iHaveFractionalCoordinates = false; +var i0 = this.asc.ac; +this.line = this.line.substring(12); +while (this.line != null && !this.line.contains("x")) { +var atom = this.asc.addNewAtom(); +this.setAtomCoordScaled(atom, this.getTokens(), 0, 0.5291772); +this.rd(); +} +this.discardLinesUntilContains("z"); +if (this.znucl == null) this.fillFloatArray(this.line.substring(12), 0, this.znucl = Clazz.newFloatArray (this.nType, 0)); +var atoms = this.asc.atoms; +for (var i = 0; i < this.nAtom; i++) atoms[i + i0].elementNumber = Clazz.floatToShort(this.znucl[Clazz.floatToInt(this.typeArray[i]) - 1]); + +this.applySymmetry(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/AimsReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/AimsReader.js new file mode 100755 index 000000000000..d009ace82597 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/AimsReader.js @@ -0,0 +1,70 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.AimsReader", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.globalDoApplySymmetry = false; +this.isFractional = false; +this.nLatticeVectors = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "AimsReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.globalDoApplySymmetry = this.doApplySymmetry; +this.doApplySymmetry = true; +this.isFractional = true; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +var tokens = this.getTokens(); +if (tokens.length == 0) return true; +if (tokens[0].equals("lattice_vector")) { +this.readLatticeVector(tokens); +return true; +}if (tokens[0].equals("atom")) { +this.readAtom(tokens, false); +return true; +}if (tokens[0].equals("atom_frac")) { +this.readAtom(tokens, true); +return true; +}if (tokens[0].equals("multipole")) { +this.readMultipole(tokens); +return true; +}return true; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.doApplySymmetry = this.globalDoApplySymmetry; +if (this.nLatticeVectors == 1 || this.nLatticeVectors == 2) { +JU.Logger.warn("ignoring translation symmetry for more or less than 3 dimensions(which is currently neither supported by FHI-aims"); +}this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "readLatticeVector", +function(tokens){ +if (tokens.length < 4) { +JU.Logger.warn("cannot read line with FHI-aims lattice vector: " + this.line); +} else if (this.nLatticeVectors == 3) { +JU.Logger.warn("more than 3 FHI-aims lattice vectors found with line: " + this.line); +} else { +this.addExplicitLatticeVector(this.nLatticeVectors++, Clazz.newFloatArray(-1, [this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3])]), 0); +this.setFractionalCoordinates(this.nLatticeVectors == 3); +}}, "~A"); +Clazz.defineMethod(c$, "readAtom", +function(tokens, isFractional){ +if (tokens.length < 5) { +JU.Logger.warn("cannot read line with FHI-aims line: " + this.line); +return; +}if (this.isFractional != isFractional) this.setFractionalCoordinates(this.isFractional = isFractional); +this.addAtomXYZSymName(tokens, 1, tokens[4], null); +}, "~A,~B"); +Clazz.defineMethod(c$, "readMultipole", +function(tokens){ +if (tokens.length < 6) { +JU.Logger.warn("cannot read line with FHI-aims atom data: " + this.line); +return; +}var order = this.parseIntStr(tokens[4]); +if (order > 0) { +JU.Logger.warn("multipole line ignored since only monopoles are currently supported: " + this.line); +return; +}if (this.isFractional) this.setFractionalCoordinates(this.isFractional = false); +this.addAtomXYZSymName(tokens, 1, null, null).partialCharge = this.parseFloatStr(tokens[5]); +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/BilbaoReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/BilbaoReader.js new file mode 100755 index 000000000000..e05f975743cb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/BilbaoReader.js @@ -0,0 +1,178 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.BilbaoReader", ["JU.PT", "$.SB", "$.V3", "JU.Vibration"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.getHigh = false; +this.getSym = false; +this.normDispl = false; +this.doDisplace = false; +this.kvec = null; +this.i0 = 0; +this.nAtoms = 0; +this.isBCSfile = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "BilbaoReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.normDispl = !this.checkFilterKey("NONORM"); +this.doDisplace = this.isTrajectory; +this.getSym = true; +this.getHigh = this.checkFilterKey("HIGH") && !this.doDisplace; +this.asc.vibScale = 1; +this.appendLoadNote("Bilbao Crystallographic Server\ncryst@wm.lc.ehu.es"); +if (this.rd().indexOf("<") < 0) { +this.readBilbaoDataFile(); +this.continuing = false; +}}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.contains(">Bilbao Crystallographic Server<")) { +this.line = this.line.substring(this.line.lastIndexOf(">") + 1).trim(); +if (this.line.length > 0) this.appendLoadNote(this.line + "\n"); +} else if (this.line.contains("High symmetry structure<")) { +if (this.getHigh) this.readBilbaoFormat("high symmetry", NaN); +} else if (this.line.contains("Low symmetry structure<")) { +if (!this.doDisplace) this.readBilbaoFormat("low symmetry", NaN); +} else if (this.line.contains("structure in the subgroup basis<")) { +if (!this.doDisplace) this.readBilbaoFormat("high symmetry in the subgroup basis", NaN); +} else if (this.line.contains("Low symmetry structure after the origin shift<")) { +this.readBilbaoFormat("low symmetry after origin shift", NaN); +} else if (this.line.contains("

Irrep:")) { +this.readVirtual(); +}return true; +}); +Clazz.defineMethod(c$, "readBilbaoDataFile", +function(){ +this.isBCSfile = true; +this.checkComment(); +while (this.line != null) { +this.readBilbaoFormat(null, NaN); +if (this.rdLine() == null || this.line.indexOf("##disp-par##") < 0) { +this.applySymmetryAndSetTrajectory(); +} else { +this.readDisplacements(1); +this.rdLine(); +}} +}); +Clazz.defineMethod(c$, "checkComment", +function(){ +if (!this.line.startsWith("#") || this.line.indexOf("disp-par") >= 0) return false; +if (this.isBCSfile) { +this.appendLoadNote(this.line); +if (this.line.startsWith("# Title:")) this.asc.setAtomSetName(this.line.substring(8).trim()); +}return true; +}); +Clazz.defineMethod(c$, "readBilbaoFormat", +function(title, fAmp){ +this.setFractionalCoordinates(true); +if (!this.doGetModel(++this.modelNumber, title)) return; +this.asc.newAtomSet(); +if (this.line.startsWith("#")) this.rdLine(); +if (this.line.startsWith("Bilbao Crys:")) { +title = this.line.substring(13).trim(); +this.rdLine(); +}this.setTitle(title); +var ptPre = this.line.indexOf("
");
+if (ptPre >= 0) this.line = this.line.substring(ptPre + 5);
+var intTableNo = this.parseIntStr(this.line);
+if (intTableNo == 0) {
+this.setSpaceGroupName(this.line.substring(2));
+} else {
+while (intTableNo < 0 && this.rdLine() != null) intTableNo = this.parseIntStr(this.line);
+
+this.setSpaceGroupName("" + intTableNo);
+}var data =  Clazz.newFloatArray (6, 0);
+this.fillFloatArray(this.rdLine(), 0, data);
+for (var i = 0; i < 6; i++) this.setUnitCellItem(i, data[i]);
+
+this.i0 = this.asc.ac;
+this.nAtoms = this.parseIntStr(this.rdLine());
+for (var i = this.nAtoms; --i >= 0; ) {
+var tokens = JU.PT.getTokens(this.rdLine());
+if (!this.getSym && tokens[1].contains("_")) continue;
+if (tokens.length == 3) this.addAtomXYZSymName(tokens, 0, "Be", "Be1");
+ else this.addAtomXYZSymName(tokens, 3, tokens[0], tokens[0] + tokens[1]);
+}
+if (Float.isNaN(fAmp)) {
+if (ptPre >= 0) this.applySymmetryAndSetTrajectory();
+return;
+}this.line = null;
+this.readDisplacements(fAmp);
+}, "~S,~N");
+Clazz.defineMethod(c$, "setSpaceGroupName", 
+function(name){
+if (!this.ignoreFileSpaceGroupName) {
+name = "bilbao:" + name;
+} else if (this.sgName.startsWith(":")) {
+var pt = name.indexOf(':');
+if (pt < 0) pt = name.length;
+name = name.substring(0, pt);
+var s = this.htParams.get("loadScript");
+if (s != null) {
+pt = s.indexOf("spacegroup \":");
+if (pt > 0) s.insert(pt + 12, name);
+}name += this.sgName;
+this.ignoreFileSpaceGroupName = false;
+}Clazz.superCall(this, J.adapter.readers.xtal.BilbaoReader, "setSpaceGroupName", [name]);
+}, "~S");
+Clazz.defineMethod(c$, "readDisplacements", 
+function(fAmp){
+for (var i = 0; i < this.nAtoms; i++) {
+if (this.line == null) this.rdLine();
+var tokens = JU.PT.split(this.line, "x|x");
+if (this.getSym || !tokens[0].contains("_")) this.asc.atoms[this.i0 + i].vib = JU.V3.new3(this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3]));
+this.line = null;
+}
+this.applySymmetryAndSetTrajectory();
+for (var i = this.asc.ac; --i >= this.i0; ) {
+var a = this.asc.atoms[i];
+if (a.vib != null) {
+var v =  new JU.Vibration();
+v.setT(a.vib);
+a.vib = v;
+this.asc.getSymmetry().toCartesian(v, true);
+v.scale(1 / fAmp);
+}}
+this.appendLoadNote((this.asc.ac - this.i0) + " displacements");
+}, "~N");
+Clazz.defineMethod(c$, "setTitle", 
+function(title){
+if (title != null) {
+this.asc.setAtomSetName(title);
+this.appendLoadNote(title);
+}}, "~S");
+Clazz.defineMethod(c$, "rdLine", 
+function(){
+while (this.rd() != null && (this.line.trim().length == 0 || this.checkComment())) {
+}
+return this.line;
+});
+Clazz.defineMethod(c$, "readVirtual", 
+function(){
+if (this.line.contains("

K-vector:")) this.kvec = this.line.substring(this.line.indexOf("("), this.line.indexOf(")") + 1); +var s = this.getLinesUntil("\"BCS\""); +var pt = s.indexOf("The amplitude"); +pt = s.indexOf("=", pt); +var amp = s.substring(pt + 2, s.indexOf(" ", pt + 2)); +var fAmp = (this.normDispl ? this.parseFloatStr(amp) : 1); +var irrep = this.getAttr(s, "irrep"); +if (irrep.indexOf(":") >= 0) irrep = irrep.substring(0, irrep.indexOf(":")); +this.line = this.line.substring(this.line.indexOf("value=") + 7); +this.readBilbaoFormat(this.kvec + " " + irrep + " (" + amp + " Ang.)", fAmp); +}); +Clazz.defineMethod(c$, "getAttr", +function(s, key){ +var pt = s.indexOf("value", s.indexOf("\"" + key + "\"")); +s = JU.PT.getQuotedStringAt(s, pt); +s = JU.PT.rep(s, "", ""); +s = JU.PT.rep(s, "", ""); +return s.trim(); +}, "~S,~S"); +Clazz.defineMethod(c$, "getLinesUntil", +function(key){ +var sb = new JU.SB(); +do { +sb.append(this.line); +} while (!this.rd().contains(key)); +return sb.toString(); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CastepReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CastepReader.js new file mode 100755 index 000000000000..aecc1ef6369e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CastepReader.js @@ -0,0 +1,520 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.CastepReader", ["JU.DF", "$.Lst", "$.M4", "$.P3", "$.PT", "$.V3", "J.adapter.smarter.Atom", "JU.Escape", "$.Logger", "$.Tensor"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tokens = null; +this.isPhonon = false; +this.isTS = false; +this.isOutput = false; +this.isCell = false; +this.a = 0; +this.b = 0; +this.c = 0; +this.alpha = 0; +this.beta = 0; +this.gamma = 0; +this.abc = null; +this.ac = 0; +this.atomPts = null; +this.havePhonons = false; +this.lastQPt = null; +this.qpt2 = 0; +this.desiredQpt = null; +this.desiredQ = null; +this.chargeType = "MULL"; +this.isAllQ = false; +this.haveCharges = false; +this.tsType = null; +this.matSupercell = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "CastepReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.abc = new Array(3); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +if (this.filter != null) { +this.chargeType = this.getFilter("CHARGE="); +if (this.chargeType != null && this.chargeType.length > 4) this.chargeType = this.chargeType.substring(0, 4); +this.filter = this.filter.$replace('(', '{').$replace(')', '}'); +this.filter = JU.PT.rep(this.filter, " ", " "); +this.isAllQ = this.checkFilterKey("Q=ALL"); +this.tsType = this.getFilter("TSTYPE="); +if (!this.isAllQ && this.filter.indexOf("{") >= 0) this.setDesiredQpt(this.filter.substring(this.filter.indexOf("{"))); +this.filter = JU.PT.rep(this.filter, "-PT", ""); +}this.continuing = this.readFileData(); +}); +Clazz.defineMethod(c$, "setDesiredQpt", +function(s){ +this.desiredQpt = new JU.V3(); +this.desiredQ = ""; +var num = 1; +var denom = 1; +var ipt = 0; +var xyz = 0; +var useSpace = (s.indexOf(',') < 0); +for (var i = 0; i < s.length; i++) { +var c = s.charAt(i); +switch ((c).charCodeAt(0)) { +case 123: +ipt = i + 1; +num = 1; +denom = 1; +break; +case 47: +num = this.parseFloatStr(s.substring(ipt, i)); +ipt = i + 1; +denom = 0; +break; +case 44: +case 32: +case 125: +if (c == '}') this.desiredQ = s.substring(0, i + 1); + else if ((c == ' ') != useSpace) break; +if (denom == 0) { +denom = this.parseFloatStr(s.substring(ipt, i)); +} else { +num = this.parseFloatStr(s.substring(ipt, i)); +}num /= denom; +switch (xyz++) { +case 0: +this.desiredQpt.x = num; +break; +case 1: +this.desiredQpt.y = num; +break; +case 2: +this.desiredQpt.z = num; +break; +} +denom = 1; +if (c == '}') i = s.length; +ipt = i + 1; +break; +} +} +JU.Logger.info("Looking for q-pt=" + this.desiredQpt); +}, "~S"); +Clazz.defineMethod(c$, "readFileData", +function(){ +while (this.tokenizeCastepCell() > 0) if (this.tokens.length >= 2 && this.tokens[0].equalsIgnoreCase("%BLOCK")) { +JU.Logger.info(this.line); +if (this.tokens[1].equalsIgnoreCase("LATTICE_ABC")) { +this.readLatticeAbc(); +continue; +}if (this.tokens[1].equalsIgnoreCase("LATTICE_CART")) { +this.readLatticeCart(); +continue; +}if (this.tokens[1].equalsIgnoreCase("POSITIONS_FRAC")) { +this.setFractionalCoordinates(true); +this.readPositionsFrac(); +continue; +}if (this.tokens[1].equalsIgnoreCase("POSITIONS_ABS")) { +this.setFractionalCoordinates(false); +this.readPositionsAbs(); +continue; +}} +if (this.isPhonon || this.isOutput || this.isTS) { +if (this.isPhonon) { +this.isTrajectory = (this.desiredVibrationNumber <= 0); +this.asc.allowMultiple = false; +}return true; +}return false; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.isOutput) { +if (this.line.contains("Real Lattice(A)")) { +this.readOutputUnitCell(); +} else if (this.line.contains("Fractional coordinates of atoms")) { +if (this.doGetModel(++this.modelNumber, null)) { +this.readOutputAtoms(); +}} else if (this.doProcessLines && (this.line.contains("Atomic Populations (Mulliken)") || this.line.contains("Hirshfield Charge (e)"))) { +this.readOutputCharges(); +} else if (this.doProcessLines && this.line.contains("Born Effective Charges")) { +this.readOutputBornChargeTensors(); +} else if (this.line.contains("Final energy ")) { +this.readEnergy(3, null); +} else if (this.line.contains("Dispersion corrected final energy*")) { +this.readEnergy(5, null); +} else if (this.line.contains("Total energy corrected")) { +this.readEnergy(8, null); +}return true; +}if (this.line.contains("<-- E")) { +this.readPhononTrajectories(); +return true; +}if (this.line.indexOf("Unit cell vectors") == 1) { +this.readPhononUnitCell(); +return true; +}if (this.line.indexOf("Fractional Co-ordinates") >= 0) { +this.readPhononFractionalCoord(); +return true; +}if (this.line.indexOf("q-pt") >= 0) { +this.readPhononFrequencies(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "readOutputUnitCell", +function(){ +this.applySymmetryAndSetTrajectory(); +this.asc.newAtomSetClear(false); +this.setFractionalCoordinates(true); +this.abc = this.read3Vectors(false); +this.setLatticeVectors(); +}); +Clazz.defineMethod(c$, "readOutputAtoms", +function(){ +this.readLines(2); +while (this.rd().indexOf("xxx") < 0) { +var atom = new J.adapter.smarter.Atom(); +this.tokens = this.getTokens(); +atom.elementSymbol = this.tokens[1]; +atom.atomName = this.tokens[1] + this.tokens[2]; +this.asc.addAtomWithMappedName(atom); +this.setAtomCoordTokens(atom, this.tokens, 3); +} +}); +Clazz.defineMethod(c$, "readEnergy", +function(pt, prefix){ +if (this.isTrajectory) this.applySymmetryAndSetTrajectory(); +this.tokens = this.getTokens(); +try { +var energy = Double.$valueOf(Double.parseDouble(this.tokens[pt])); +this.asc.setAtomSetName(prefix + "Energy = " + energy + " eV"); +this.asc.setAtomSetEnergy("" + energy, energy.floatValue()); +this.asc.setCurrentModelInfo("Energy", energy); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.appendLoadNote("CASTEP Energy could not be read: " + this.line); +} else { +throw e; +} +} +}, "~N,~S"); +Clazz.defineMethod(c$, "readPhononTrajectories", +function(){ +if (!this.isTS) this.isTrajectory = (this.desiredVibrationNumber <= 0); +if (this.isTrajectory) this.asc.setTrajectory(); +this.doApplySymmetry = true; +while (this.line != null && this.line.contains("<-- E")) { +var skip = (this.isTS && this.tsType != null && this.prevline.indexOf(this.tsType) < 0); +if (!skip) { +this.asc.newAtomSetClear(false); +if (this.isTS) this.readEnergy(0, JU.PT.getTokens(this.prevline + " -")[0] + " "); +this.discardLinesUntilContains("<-- h"); +this.setSpaceGroupName("P1"); +this.abc = this.read3Vectors(true); +this.setLatticeVectors(); +this.setFractionalCoordinates(false); +this.discardLinesUntilContains("<-- R"); +while (this.line != null && this.line.contains("<-- R")) { +this.tokens = this.getTokens(); +this.setAtomCoordScaled(null, this.tokens, 2, 0.5291772).elementSymbol = this.tokens[0]; +this.rd(); +} +this.applySymmetryAndSetTrajectory(); +}this.discardLinesUntilContains("<-- E"); +} +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (this.isPhonon || this.isOutput || this.isTS) { +this.isTrajectory = false; +} else { +this.doApplySymmetry = true; +this.setLatticeVectors(); +var nAtoms = this.asc.ac; +for (var i = 0; i < nAtoms; i++) this.setAtomCoord(this.asc.atoms[i]); + +}this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "setLatticeVectors", +function(){ +if (this.abc[0] == null) { +this.setUnitCell(this.a, this.b, this.c, this.alpha, this.beta, this.gamma); +return; +}var lv = Clazz.newFloatArray (3, 0); +for (var i = 0; i < 3; i++) { +lv[0] = this.abc[i].x; +lv[1] = this.abc[i].y; +lv[2] = this.abc[i].z; +this.addExplicitLatticeVector(i, lv, 0); +} +}); +Clazz.defineMethod(c$, "readLatticeAbc", +function(){ +if (this.tokenizeCastepCell() == 0) return; +var factor = this.readLengthUnit(this.tokens[0]); +if (this.tokens.length >= 3) { +this.a = this.parseFloatStr(this.tokens[0]) * factor; +this.b = this.parseFloatStr(this.tokens[1]) * factor; +this.c = this.parseFloatStr(this.tokens[2]) * factor; +} else { +JU.Logger.warn("error reading a,b,c in %BLOCK LATTICE_ABC in CASTEP .cell file"); +return; +}if (this.tokenizeCastepCell() == 0) return; +if (this.tokens.length >= 3) { +this.alpha = this.parseFloatStr(this.tokens[0]); +this.beta = this.parseFloatStr(this.tokens[1]); +this.gamma = this.parseFloatStr(this.tokens[2]); +} else { +JU.Logger.warn("error reading alpha,beta,gamma in %BLOCK LATTICE_ABC in CASTEP .cell file"); +}}); +Clazz.defineMethod(c$, "readLatticeCart", +function(){ +if (this.tokenizeCastepCell() == 0) return; +var factor = this.readLengthUnit(this.tokens[0]); +var x; +var y; +var z; +for (var i = 0; i < 3; i++) { +if (this.tokens.length >= 3) { +x = this.parseFloatStr(this.tokens[0]) * factor; +y = this.parseFloatStr(this.tokens[1]) * factor; +z = this.parseFloatStr(this.tokens[2]) * factor; +this.abc[i] = JU.V3.new3(x, y, z); +} else { +JU.Logger.warn("error reading coordinates of lattice vector " + Integer.toString(i + 1) + " in %BLOCK LATTICE_CART in CASTEP .cell file"); +return; +}if (this.tokenizeCastepCell() == 0) return; +} +this.a = this.abc[0].length(); +this.b = this.abc[1].length(); +this.c = this.abc[2].length(); +this.alpha = (this.abc[1].angle(this.abc[2]) * 57.29577951308232); +this.beta = (this.abc[2].angle(this.abc[0]) * 57.29577951308232); +this.gamma = (this.abc[0].angle(this.abc[1]) * 57.29577951308232); +}); +Clazz.defineMethod(c$, "readPositionsFrac", +function(){ +if (this.tokenizeCastepCell() == 0) return; +this.readAtomData(1.0); +}); +Clazz.defineMethod(c$, "readPositionsAbs", +function(){ +if (this.tokenizeCastepCell() == 0) return; +var factor = this.readLengthUnit(this.tokens[0]); +this.readAtomData(factor); +}); +Clazz.defineMethod(c$, "readLengthUnit", +function(units){ +var factor = 1.0; +for (var i = 0; i < J.adapter.readers.xtal.CastepReader.lengthUnitIds.length; i++) if (units.equalsIgnoreCase(J.adapter.readers.xtal.CastepReader.lengthUnitIds[i])) { +factor = J.adapter.readers.xtal.CastepReader.lengthUnitFactors[i]; +this.tokenizeCastepCell(); +break; +} +return factor; +}, "~S"); +Clazz.defineMethod(c$, "readAtomData", +function(factor){ +do { +if (this.tokens.length >= 4) { +var atom = this.asc.addNewAtom(); +var pt = this.tokens[0].indexOf(":"); +if (pt >= 0) { +atom.elementSymbol = this.tokens[0].substring(0, pt); +atom.atomName = this.tokens[0]; +} else { +atom.elementSymbol = this.tokens[0]; +}atom.set(this.parseFloatStr(this.tokens[1]), this.parseFloatStr(this.tokens[2]), this.parseFloatStr(this.tokens[3])); +atom.scale(factor); +} else { +JU.Logger.warn("cannot read line with CASTEP atom data: " + this.line); +}} while (this.tokenizeCastepCell() > 0 && !this.tokens[0].equalsIgnoreCase("%ENDBLOCK")); +}, "~N"); +Clazz.defineMethod(c$, "tokenizeCastepCell", +function(){ +while (this.rd() != null) { +if ((this.line = this.line.trim()).length == 0 || this.line.startsWith("#") || this.line.startsWith("!")) continue; +if (!this.isCell) { +if (this.line.startsWith("%")) { +this.isCell = true; +break; +}if (this.line.startsWith("LST")) { +this.isTS = true; +JU.Logger.info("reading CASTEP .ts file"); +return -1; +}if (this.line.startsWith("BEGIN header")) { +this.isPhonon = true; +JU.Logger.info("reading CASTEP .phonon file"); +return -1; +}if (this.line.contains("CASTEP")) { +this.isOutput = true; +JU.Logger.info("reading CASTEP .castep file"); +return -1; +}}break; +} +return (this.line == null ? 0 : (this.tokens = this.getTokens()).length); +}); +Clazz.defineMethod(c$, "readOutputBornChargeTensors", +function(){ +if (this.rd().indexOf("--------") < 0) return; +var atoms = this.asc.atoms; +this.appendLoadNote("Ellipsoids: Born Charge Tensors"); +while (this.rd().indexOf('=') < 0) this.getTensor(atoms[this.readOutputAtomIndex()], this.line.substring(12)); + +}); +Clazz.defineMethod(c$, "readOutputAtomIndex", +function(){ +this.tokens = this.getTokens(); +return this.asc.getAtomIndex(this.tokens[0] + this.tokens[1]); +}); +Clazz.defineMethod(c$, "getTensor", +function(atom, line0){ +var data = Clazz.newFloatArray (9, 0); +var a = Clazz.newDoubleArray (3, 3, 0); +this.fillFloatArray(line0, 0, data); +JU.Logger.info("tensor " + atom.atomName + "\t" + JU.Escape.eAF(data)); +for (var p = 0, i = 0; i < 3; i++) for (var j = 0; j < 3; j++) a[i][j] = data[p++]; + + +atom.addTensor(( new JU.Tensor()).setFromAsymmetricTensor(a, "charge", atom.atomName + " " + line0), null, false); +if (!this.haveCharges) this.appendLoadNote("Ellipsoids set \"charge\": Born Effective Charges"); +this.haveCharges = true; +}, "J.adapter.smarter.Atom,~S"); +Clazz.defineMethod(c$, "readOutputCharges", +function(){ +if (this.line.toUpperCase().indexOf(this.chargeType) < 0) return; +JU.Logger.info("reading charges: " + this.line); +this.readLines(2); +var haveSpin = (this.line.indexOf("Spin") >= 0); +this.rd(); +var atoms = this.asc.atoms; +var spins = (haveSpin ? Clazz.newFloatArray (atoms.length, 0) : null); +if (spins != null) for (var i = 0; i < spins.length; i++) spins[i] = 0; + +while (this.rd() != null && this.line.indexOf('=') < 0) { +var index = this.readOutputAtomIndex(); +var charge = this.parseFloatStr(this.tokens[haveSpin ? this.tokens.length - 2 : this.tokens.length - 1]); +atoms[index].partialCharge = charge; +if (haveSpin) spins[index] = this.parseFloatStr(this.tokens[this.tokens.length - 1]); +} +if (haveSpin) this.asc.setAtomProperties("spin", spins, -1, false); +}); +Clazz.defineMethod(c$, "readPhononUnitCell", +function(){ +this.abc = this.read3Vectors(this.line.indexOf("bohr") >= 0); +this.setSpaceGroupName("P1"); +this.setLatticeVectors(); +}); +Clazz.defineMethod(c$, "readPhononFractionalCoord", +function(){ +this.setFractionalCoordinates(true); +while (this.rd() != null && this.line.indexOf("END") < 0) { +this.tokens = this.getTokens(); +this.addAtomXYZSymName(this.tokens, 1, this.tokens[4], null).bfactor = this.parseFloatStr(this.tokens[5]); +} +this.ac = this.asc.ac; +this.atomPts = new Array(this.ac); +var atoms = this.asc.atoms; +for (var i = 0; i < this.ac; i++) this.atomPts[i] = JU.P3.newP(atoms[i]); + +}); +Clazz.defineMethod(c$, "readPhononFrequencies", +function(){ +this.tokens = this.getTokens(); +var v = new JU.V3(); +var qvec = JU.V3.new3(this.parseFloatStr(this.tokens[2]), this.parseFloatStr(this.tokens[3]), this.parseFloatStr(this.tokens[4])); +var fcoord = this.getFractionalCoord(qvec); +var qtoks = "{" + this.tokens[2] + " " + this.tokens[3] + " " + this.tokens[4] + "}"; +if (fcoord == null) fcoord = qtoks; + else fcoord = "{" + fcoord + "}"; +var isOK = this.isAllQ; +var isSecond = (this.tokens[1].equals(this.lastQPt)); +this.qpt2 = (isSecond ? this.qpt2 + 1 : 1); +this.lastQPt = this.tokens[1]; +if (!isOK && this.checkFilterKey("Q=")) { +if (this.desiredQpt != null) { +v.sub2(this.desiredQpt, qvec); +if (v.length() < 0.001) fcoord = this.desiredQ; +}isOK = (this.checkFilterKey("Q=" + fcoord + "." + this.qpt2 + ";") || this.checkFilterKey("Q=" + this.lastQPt + "." + this.qpt2 + ";") || !isSecond && this.checkFilterKey("Q=" + fcoord + ";") || !isSecond && this.checkFilterKey("Q=" + this.lastQPt + ";")); +if (!isOK) return; +}var isGammaPoint = (qvec.length() == 0); +var nx = 1; +var ny = 1; +var nz = 1; +if (this.ptSupercell != null && !isOK && !isSecond) { +this.matSupercell = new JU.M4(); +this.matSupercell.m00 = this.ptSupercell.x; +this.matSupercell.m11 = this.ptSupercell.y; +this.matSupercell.m22 = this.ptSupercell.z; +this.matSupercell.m33 = 1; +JU.Logger.info("Using supercell \n" + this.matSupercell); +nx = this.ptSupercell.x; +ny = this.ptSupercell.y; +nz = this.ptSupercell.z; +var dx = (qvec.x == 0 ? 1 : qvec.x) * nx; +var dy = (qvec.y == 0 ? 1 : qvec.y) * ny; +var dz = (qvec.z == 0 ? 1 : qvec.z) * nz; +if ((nx != 1 || ny != 1 || nz != 1) && isGammaPoint || !J.adapter.readers.xtal.CastepReader.isInt(dx) || !J.adapter.readers.xtal.CastepReader.isInt(dy) || !J.adapter.readers.xtal.CastepReader.isInt(dz)) return; +isOK = true; +}if (this.ptSupercell == null || !this.havePhonons) this.appendLoadNote(this.line); +if (!isOK && isSecond) return; +if (!isOK && (this.ptSupercell == null) == !isGammaPoint) return; +if (this.havePhonons && !this.isAllQ) return; +this.havePhonons = true; +var qname = "q=" + this.lastQPt + " " + fcoord; +this.applySymmetryAndSetTrajectory(); +if (isGammaPoint) qvec = null; +var freqs = new JU.Lst(); +while (this.rd() != null && this.line.indexOf("Phonon") < 0) { +this.tokens = this.getTokens(); +freqs.addLast(Float.$valueOf(this.parseFloatStr(this.tokens[1]))); +} +this.rd(); +var frequencyCount = freqs.size(); +var data = Clazz.newFloatArray (8, 0); +var t = new JU.V3(); +this.asc.setCollectionName(qname); +for (var i = 0; i < frequencyCount; i++) { +if (!this.doGetVibration(++this.vibrationNumber)) { +for (var j = 0; j < this.ac; j++) this.rd(); + +continue; +}if (this.desiredVibrationNumber <= 0) { +if (!this.isTrajectory) { +this.cloneLastAtomSet(this.ac, this.atomPts); +this.applySymmetryAndSetTrajectory(); +}}this.symmetry = this.asc.getSymmetry(); +var iatom = this.asc.getLastAtomSetAtomIndex(); +var freq = freqs.get(i).floatValue(); +var atoms = this.asc.atoms; +var aCount = this.asc.ac; +for (var j = 0; j < this.ac; j++) { +this.fillFloatArray(null, 0, data); +for (var k = iatom++; k < aCount; k++) if (atoms[k].atomSite == j) { +t.sub2(atoms[k], atoms[atoms[k].atomSite]); +if (this.matSupercell != null) this.matSupercell.rotTrans(t); +this.setPhononVector(data, atoms[k], t, qvec, v); +this.asc.addVibrationVectorWithSymmetry(k, v.x, v.y, v.z, true); +} +} +if (this.isTrajectory) this.asc.setTrajectory(); +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, "" + freq, null); +this.asc.setAtomSetName(JU.DF.formatDecimal(freq, 2) + " cm-1 " + qname); +} +}); +Clazz.defineMethod(c$, "getFractionalCoord", +function(qvec){ +return (this.symmetry != null && J.adapter.readers.xtal.CastepReader.isInt(qvec.x * 12) && J.adapter.readers.xtal.CastepReader.isInt(qvec.y * 12) && J.adapter.readers.xtal.CastepReader.isInt(qvec.z * 12) ? this.symmetry.fcoord(qvec) : null); +}, "JU.V3"); +c$.isInt = Clazz.defineMethod(c$, "isInt", +function(f){ +return (Math.abs(f - Math.round(f)) < 0.001); +}, "~N"); +Clazz.defineMethod(c$, "setPhononVector", +function(data, atom, rTrans, qvec, v){ +if (qvec == null) { +v.set(data[2], data[4], data[6]); +} else { +var phase = qvec.dot(rTrans); +var cosph = Math.cos(6.283185307179586 * phase); +var sinph = Math.sin(6.283185307179586 * phase); +v.x = (cosph * data[2] - sinph * data[3]); +v.y = (cosph * data[4] - sinph * data[5]); +v.z = (cosph * data[6] - sinph * data[7]); +}v.scale(Math.sqrt(1 / atom.bfactor)); +}, "~A,J.adapter.smarter.Atom,JU.V3,JU.V3,JU.V3"); +c$.lengthUnitIds = Clazz.newArray(-1, ["bohr", "m", "cm", "nm", "ang", "a0"]); +c$.lengthUnitFactors = Clazz.newFloatArray(-1, [0.5291772, 1E10, 1E8, 1E1, 1.0, 0.5291772]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CgdReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CgdReader.js new file mode 100755 index 000000000000..41f3478a2f83 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CgdReader.js @@ -0,0 +1,163 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "JU.V3"], "J.adapter.readers.xtal.CgdReader", ["java.util.Hashtable", "JU.Lst", "$.M3", "$.P3", "$.PT", "J.adapter.smarter.Bond", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.noBondSym = false; +this.tokens = null; +this.htEdges = null; +this.lastName = null; +this.edgeData = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "CgdReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setFractionalCoordinates(true); +this.asc.setNoAutoBond(); +this.asc.vibScale = 1; +this.forceSymmetry(!this.noPack); +this.noBondSym = this.checkFilterKey("NOBONDSYM"); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +this.line = this.line.trim(); +if (this.line.length == 0 || this.line.startsWith("#")) return true; +if (!Character.isLetter(this.line.charAt(0))) this.line = this.lastName + " " + this.line; +this.tokens = this.getTokens(); +if (this.tokens.length > 0) { +this.lastName = this.tokens[0].toUpperCase(); +var pt = "NAME |CELL |GROUP|ATOM |EDGE |".indexOf(this.lastName); +if (this.tokens.length > 1 && (pt == 0 || this.doProcessLines)) switch (pt) { +case 0: +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.applySymmetryAndSetTrajectory(); +this.setFractionalCoordinates(true); +this.asc.newAtomSet(); +this.asc.setAtomSetName(this.line.substring(6).trim()); +this.htEdges = null; +this.edgeData = null; +break; +case 6: +for (var i = 0; i < 6; i++) this.setUnitCellItem(i, (i < 3 ? 10 : 1) * this.parseFloatStr(this.tokens[i + 1])); + +break; +case 12: +this.setSpaceGroupName("bilbao:" + this.group(this.tokens[1])); +break; +case 18: +this.atom(); +break; +case 24: +if (!this.doApplySymmetry) break; +if (this.edgeData == null) this.edgeData = new JU.Lst(); +this.edgeData.addLast(this.line); +break; +} +}return true; +}); +Clazz.defineMethod(c$, "group", +function(name){ +var name0 = null; +if (name.charAt(0) == '"') name = name.substring(1, name.length - 1); +var pt = ";P2=P121;P21=P1211;C2=C121;A2=A121;I2=I121;Pm=P1m1;Pc=P1c1;Pn=P1n1;Pa=P1a1;Cm=C1m1;Am=A1m1;Im=I1m1;Cc=C1c1;An=A1n1;Ia=I1a1;Aa=A1a1;Cn=C1n1;Ic=I1c1;P2/m=P12/m1;P21/m=P121/m1;C2/m=C12/m1;A2/m=A12/m1;I2/m=I12/m1;P2/c=P12/c1;P2/n=P12/n1;P2/a=P12/a1;P21/c=P121/c1;P21/n=P121/n1;P21/a=P121/a1;C2/c=C12/c1;A2/n=A12/n1;I2/a=I12/a1;A2/a=A12/a1;C2/n=C12/n1;I2/c=I12/c1;Pm3=Pm-3;Pn3=Pn-3;Fm3=Fm-3;Fd3=Fd-3;Im3=Im-3;Pa3=Pa-3;Ia3=Ia-3;Pm3m=Pm-3m;Pn3n=Pn-3n;Pm3n=Pm-3n;Pn3m=Pn-3m;Fm3m=Fm-3m;Fm3c=Fm-3c;Fd3m=Fd-3m;Fd3c=Fd-3c;Im3m=Im-3m;Ia3d=Ia-3d;".indexOf(";" + name + "="); +if (pt >= 0) { +name0 = name; +name = ";P2=P121;P21=P1211;C2=C121;A2=A121;I2=I121;Pm=P1m1;Pc=P1c1;Pn=P1n1;Pa=P1a1;Cm=C1m1;Am=A1m1;Im=I1m1;Cc=C1c1;An=A1n1;Ia=I1a1;Aa=A1a1;Cn=C1n1;Ic=I1c1;P2/m=P12/m1;P21/m=P121/m1;C2/m=C12/m1;A2/m=A12/m1;I2/m=I12/m1;P2/c=P12/c1;P2/n=P12/n1;P2/a=P12/a1;P21/c=P121/c1;P21/n=P121/n1;P21/a=P121/a1;C2/c=C12/c1;A2/n=A12/n1;I2/a=I12/a1;A2/a=A12/a1;C2/n=C12/n1;I2/c=I12/c1;Pm3=Pm-3;Pn3=Pn-3;Fm3=Fm-3;Fd3=Fd-3;Im3=Im-3;Pa3=Pa-3;Ia3=Ia-3;Pm3m=Pm-3m;Pn3n=Pn-3n;Pm3n=Pm-3n;Pn3m=Pn-3m;Fm3m=Fm-3m;Fm3c=Fm-3c;Fd3m=Fd-3m;Fd3c=Fd-3c;Im3m=Im-3m;Ia3d=Ia-3d;".substring(";P2=P121;P21=P1211;C2=C121;A2=A121;I2=I121;Pm=P1m1;Pc=P1c1;Pn=P1n1;Pa=P1a1;Cm=C1m1;Am=A1m1;Im=I1m1;Cc=C1c1;An=A1n1;Ia=I1a1;Aa=A1a1;Cn=C1n1;Ic=I1c1;P2/m=P12/m1;P21/m=P121/m1;C2/m=C12/m1;A2/m=A12/m1;I2/m=I12/m1;P2/c=P12/c1;P2/n=P12/n1;P2/a=P12/a1;P21/c=P121/c1;P21/n=P121/n1;P21/a=P121/a1;C2/c=C12/c1;A2/n=A12/n1;I2/a=I12/a1;A2/a=A12/a1;C2/n=C12/n1;I2/c=I12/c1;Pm3=Pm-3;Pn3=Pn-3;Fm3=Fm-3;Fd3=Fd-3;Im3=Im-3;Pa3=Pa-3;Ia3=Ia-3;Pm3m=Pm-3m;Pn3n=Pn-3n;Pm3n=Pm-3n;Pn3m=Pn-3m;Fm3m=Fm-3m;Fm3c=Fm-3c;Fd3m=Fd-3m;Fd3c=Fd-3c;Im3m=Im-3m;Ia3d=Ia-3d;".indexOf("=", pt) + 1, ";P2=P121;P21=P1211;C2=C121;A2=A121;I2=I121;Pm=P1m1;Pc=P1c1;Pn=P1n1;Pa=P1a1;Cm=C1m1;Am=A1m1;Im=I1m1;Cc=C1c1;An=A1n1;Ia=I1a1;Aa=A1a1;Cn=C1n1;Ic=I1c1;P2/m=P12/m1;P21/m=P121/m1;C2/m=C12/m1;A2/m=A12/m1;I2/m=I12/m1;P2/c=P12/c1;P2/n=P12/n1;P2/a=P12/a1;P21/c=P121/c1;P21/n=P121/n1;P21/a=P121/a1;C2/c=C12/c1;A2/n=A12/n1;I2/a=I12/a1;A2/a=A12/a1;C2/n=C12/n1;I2/c=I12/c1;Pm3=Pm-3;Pn3=Pn-3;Fm3=Fm-3;Fd3=Fd-3;Im3=Im-3;Pa3=Pa-3;Ia3=Ia-3;Pm3m=Pm-3m;Pn3n=Pn-3n;Pm3n=Pm-3n;Pn3m=Pn-3m;Fm3m=Fm-3m;Fm3c=Fm-3c;Fd3m=Fd-3m;Fd3c=Fd-3c;Im3m=Im-3m;Ia3d=Ia-3d;".indexOf(";", pt + 1)); +}JU.Logger.info("CgdReader using GROUP " + name + (name0 == null ? "" : " alias of " + name0)); +return name; +}, "~S"); +Clazz.defineMethod(c$, "atom", +function(){ +var name = this.getName(this.tokens[1]); +var edgeCount = this.parseIntStr(this.tokens[2]); +for (var i = 3; i < 6; i++) if (this.tokens[i].indexOf("/") >= 0) this.tokens[i] = "" + JU.PT.parseFloatFraction(this.tokens[i]); + +var a = this.addAtomXYZSymName(this.tokens, 3, null, name); +if (!this.doApplySymmetry) return; +this.asc.atomSymbolicMap.put(name, a); +this.asc.addVibrationVector(a.index, 1, 3, 7); +if (this.htEdges == null) this.htEdges = new java.util.Hashtable(); +this.htEdges.put(a, new Array(edgeCount)); +}); +Clazz.defineMethod(c$, "getName", +function(name){ +return (name.charAt(0) == '"' ? name.substring(1, name.length - 1) : Character.isDigit(name.charAt(0)) ? "C" + name : name); +}, "~S"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderASCR(); +if (this.doApplySymmetry) this.finalizeNet(); +}); +Clazz.defineMethod(c$, "finalizeEdges", +function(){ +var p; +var name; +var a; +var atomEdges; +for (var j = 0; j < this.edgeData.size(); j++) { +this.tokens = JU.PT.getTokens(this.line = this.edgeData.get(j)); +switch (this.tokens.length) { +case 3: +name = this.getName(this.tokens[1]); +a = this.asc.getAtomFromName(name); +atomEdges = this.htEdges.get(a); +p = this.asc.getAtomFromName(this.getName(this.tokens[2])); +break; +case 5: +name = this.getName(this.tokens[1]); +a = this.asc.getAtomFromName(name); +atomEdges = this.htEdges.get(a); +p = this.getCoord(2); +break; +case 7: +atomEdges = this.htEdges.get(this.findAtom(this.getCoord(1))); +p = this.getCoord(4); +break; +default: +JU.Logger.error("EDGE record skipped: " + this.line); +continue; +} +for (var i = 0, n = atomEdges.length; i < n; i++) if (atomEdges[i] == null) { +atomEdges[i] = JU.V3.newV(p); +break; +} +} +}); +Clazz.defineMethod(c$, "getCoord", +function(i){ +return JU.P3.new3(JU.PT.parseFloatFraction(this.tokens[i++]), JU.PT.parseFloatFraction(this.tokens[i++]), JU.PT.parseFloatFraction(this.tokens[i++])); +}, "~N"); +Clazz.defineMethod(c$, "finalizeNet", +function(){ +this.finalizeEdges(); +var m = new JU.M3(); +var pt = new JU.P3(); +for (var i = 0, n = this.asc.ac; i < n; i++) { +var a = this.asc.atoms[i]; +var a0 = this.asc.atoms[a.atomSite]; +if (this.noBondSym && a !== a0) continue; +var edges = this.htEdges.get(a0); +if (edges == null) continue; +var ix = Clazz.floatToInt(a.vib.x) + 7; +var iy = Clazz.floatToInt(a.vib.y) + 7; +var iz = Clazz.floatToInt(a.vib.z) + 7; +m.setRowV(0, J.adapter.readers.xtal.CgdReader.vecs[ix]); +m.setRowV(1, J.adapter.readers.xtal.CgdReader.vecs[iy]); +m.setRowV(2, J.adapter.readers.xtal.CgdReader.vecs[iz]); +for (var j = 0, n1 = edges.length; j < n1; j++) { +pt.sub2(edges[j], a0); +m.rotate(pt); +pt.add(a); +var b = this.findAtom(pt); +if (b != null) this.asc.addBond( new J.adapter.smarter.Bond(a.index, b.index, 1)); + else if (pt.x >= 0 && pt.x <= 1 && pt.y >= 0 && pt.y <= 1 && pt.z >= 0 && pt.z <= 1) JU.Logger.error(" not found: i=" + i + " pt=" + pt + " for a=" + a + "\n a0=" + a0 + " edge[" + j + "]=" + edges[j] + "\n a.vib=" + a.vib + "\n m=" + m); +} +a.vib = null; +} +}); +Clazz.defineMethod(c$, "findAtom", +function(pt){ +for (var i = this.asc.ac; --i >= 0; ) if (this.asc.atoms[i].distanceSquared(pt) < 0.00001) return this.asc.atoms[i]; + +return null; +}, "JU.P3"); +c$.vecs = Clazz.newArray(-1, [JU.V3.new3(0, 0, -1), JU.V3.new3(1, 0, -1), null, JU.V3.new3(0, 1, -1), JU.V3.new3(0, -1, 0), JU.V3.new3(1, -1, 0), JU.V3.new3(-1, 0, 0), null, JU.V3.new3(1, 0, 0), JU.V3.new3(-1, 1, 0), JU.V3.new3(0, 1, 0), JU.V3.new3(0, -1, 1), null, JU.V3.new3(-1, 0, 1), JU.V3.new3(0, 0, 1)]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CmdfReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CmdfReader.js new file mode 100755 index 000000000000..6ec8510a6392 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CmdfReader.js @@ -0,0 +1,121 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.CmdfReader", ["J.adapter.smarter.Atom", "J.api.JmolAdapter"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "CmdfReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.buf = Clazz.newByteArray (100, 0); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setFractionalCoordinates(true); +}); +Clazz.overrideMethod(c$, "processBinaryDocument", +function(){ +this.binaryDoc.setStream(null, false); +this.binaryDoc.seek(28); +var len = this.binaryDoc.readInt(); +System.out.println("file length: " + len + " " + Integer.toHexString(len)); +this.seek("CELL", 32); +var uc = Clazz.newFloatArray (6, 0); +for (var i = 0; i < 6; i++) { +uc[i] = this.binaryDoc.readFloat(); +} +this.setUnitCell(uc[0], uc[1], uc[2], uc[3], uc[4], uc[5]); +this.seek("SYMM", -1); +var sg = J.adapter.readers.xtal.CmdfReader.fixSpaceGroup(this.binaryDoc.readString(20)); +this.setSpaceGroupName(sg); +System.out.println("Space group is " + sg); +this.readAtoms(); +System.out.println("done"); +}); +c$.fixSpaceGroup = Clazz.defineMethod(c$, "fixSpaceGroup", +function(sg){ +var pt = sg.indexOf('\0'); +if (pt == 0) System.out.println("SYMM: empty;NO space group??"); +return (pt < 0 ? sg : sg.substring(0, pt)).trim(); +}, "~S"); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.seek("AUN7", 32); +var nSites = this.binaryDoc.readInt(); +System.out.println(nSites + " sites"); +for (var i = 0; i < nSites; i++) this.readSite(); + +}); +Clazz.defineMethod(c$, "readSite", +function(){ +var nOccupants = this.binaryDoc.readByte(); +var atoms = new Array(nOccupants); +for (var i = 0; i < nOccupants; i++) { +var a = atoms[i] = new J.adapter.smarter.Atom(); +var ch2 = String.fromCharCode(this.binaryDoc.readByte()); +var ch1 = String.fromCharCode(this.binaryDoc.readByte()); +a.elementSymbol = J.adapter.readers.xtal.CmdfReader.getSymbol("" + ch1 + ch2); +if (J.api.JmolAdapter.getElementNumber(a.elementSymbol) == 0) { +System.out.println("ELEMENT error " + a.elementSymbol + " " + this.fileName); +}a.foccupancy = this.binaryDoc.readFloat(); +this.asc.addAtom(a); +} +this.binaryDoc.readInt(); +var sym0 = atoms[0].elementSymbol; +var name = this.readString(); +var valence = this.binaryDoc.readInt(); +for (var i = 0; i < nOccupants; i++) { +atoms[i].atomName = (i == 0 || sym0.length > name.length ? name : atoms[i].elementSymbol + name.substring(sym0.length)); +} +var unk3s = this.binaryDoc.readShort() & 0xFFFF; +var x = this.binaryDoc.readFloat(); +var y = this.binaryDoc.readFloat(); +var z = this.binaryDoc.readFloat(); +for (var i = 0; i < nOccupants; i++) { +this.setAtomCoordXYZ(atoms[i], x, y, z); +} +var index2 = this.binaryDoc.readInt() / 32; +var unk4b = this.binaryDoc.readByte() & 0xFF; +var siteNumber = this.binaryDoc.readShort(); +var unk5b = this.binaryDoc.readByte() & 0xFF; +var wyn = this.binaryDoc.readInt(); +var wyabc = this.binaryDoc.readByte(); +var wyckoff = "" + wyn + String.fromCharCode(0x60 + wyabc); +System.out.println("SITE " + siteNumber + " occ=" + nOccupants + " " + atoms[0].elementSymbol + " " + atoms[0].atomName + " " + wyckoff + " " + atoms[0] + (nOccupants > 1 ? atoms[1].atomName : "") + " valence=" + valence + " " + index2 + " " + Integer.toHexString(unk3s) + " " + Integer.toHexString(unk4b) + " " + Integer.toHexString(unk5b)); +return; +}); +Clazz.defineMethod(c$, "readString", +function(){ +var n = this.binaryDoc.readByte(); +this.binaryDoc.readByteArray(this.buf, 0, n); +return String.instantialize(this.buf, 0, n); +}); +Clazz.defineMethod(c$, "seek", +function(label, where){ +var bytes = label.getBytes(); +if (where > 0) this.binaryDoc.seek(where); +var p = (where >= 0 ? where : this.binaryDoc.getPosition()); +System.out.println("looking for " + label + " @" + p); +var off = 0; +var n = bytes.length; +var p0 = p; +while (off < n) { +var b = this.binaryDoc.readByte(); +p++; +if (b == bytes[off]) { +off++; +} else if (off > 0) { +this.binaryDoc.seek(p = p0 = p0 + 1); +off = 0; +}} +System.out.println(label + " found at " + (p - n)); +return p; +}, "~S,~N"); +c$.getSymbol = Clazz.defineMethod(c$, "getSymbol", +function(sym){ +if (sym == null) return "Xx"; +var len = sym.length; +if (len < 2) return sym; +var ch1 = sym.charAt(1); +if (ch1 >= 'a' && ch1 <= 'z') return sym.substring(0, 2); +return "" + sym.charAt(0); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CrystalReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CrystalReader.js new file mode 100755 index 000000000000..deb01b20b2d5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/CrystalReader.js @@ -0,0 +1,812 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "JU.Lst", "$.P3"], "J.adapter.readers.xtal.CrystalReader", ["java.util.Arrays", "$.Hashtable", "JU.DF", "$.M3", "$.M4", "$.PT", "$.Quat", "$.SB", "$.V3", "JS.SymmetryOperation", "JU.Logger", "$.Tensor"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isVersion3 = false; +this.isPolymer = false; +this.isSlab = false; +this.haveCharges = false; +this.inputOnly = false; +this.isLongMode = false; +this.getLastConventional = false; +this.havePrimitiveMapping = false; +this.isProperties = false; +this.state = 0; +this.ac = 0; +this.atomIndexLast = 0; +this.atomFrag = null; +this.primitiveToIndex = null; +this.nuclearCharges = null; +this.lstCoords = null; +this.energy = null; +this.ptOriginShift = null; +this.directLatticeVectors = null; +this.spaceGroupName = null; +this.checkModelTrigger = false; +this.fullSymmetry = false; +this.htCriticalPoints = null; +this.directLatticeVectorsFirst = false; +this.cpno = -1; +this.symops = null; +this.f14 = null; +this.f16 = null; +this.primitiveVolume = 0; +this.primitiveDensity = 0; +this.firstLine = null; +this.type = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "CrystalReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.ptOriginShift = new JU.P3(); +this.symops = new JU.Lst(); +this.f14 = Clazz.newFloatArray (14, 0); +this.f16 = Clazz.newFloatArray (16, 0); +}); +Clazz.defineMethod(c$, "rd", +function(){ +while (Clazz.superCall(this, J.adapter.readers.xtal.CrystalReader, "rd", []) != null && (this.line.startsWith(" PROCESS") || this.line.startsWith(" INFORMATION") || this.line.startsWith(" WARNING"))) { +} +return this.line; +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.doProcessLines = false; +this.inputOnly = this.checkFilterKey("INPUT"); +this.isPrimitive = !this.inputOnly && !this.checkFilterKey("CONV"); +this.addVibrations = new Boolean (this.addVibrations & (!this.inputOnly && this.desiredModelNumber < 0)).valueOf(); +this.getLastConventional = (!this.isPrimitive && this.desiredModelNumber == 0); +this.fullSymmetry = this.checkFilterKey("FULLSYM"); +this.setFractionalCoordinates(this.readHeader()); +this.asc.crystalReaderLatticeOpsOnly = !this.inputOnly; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.firstLine != null) { +this.line = this.firstLine; +this.firstLine = null; +}if (this.line.startsWith(" TYPE OF CALCULATION")) { +this.calculationType = this.line.substring(this.line.indexOf(":") + 1).trim(); +return true; +}if (this.line.indexOf("DIMENSIONALITY OF THE SYSTEM") >= 0) { +this.isMolecular = this.isSlab = this.isPolymer = false; +if (this.line.indexOf("2") >= 0) this.isSlab = true; + else if (this.line.indexOf("1") >= 0) this.isPolymer = true; + else if (this.line.indexOf("0") >= 0) this.isMolecular = true; +return true; +}if (!this.isPolymer && this.line.indexOf("CONSTRUCTION OF A NANOTUBE FROM A SLAB") >= 0) { +this.isPolymer = true; +this.isSlab = false; +return true; +}if (!this.isMolecular && this.line.indexOf("* CLUSTER CALCULATION") >= 0) { +this.isMolecular = true; +this.isSlab = false; +this.isPolymer = false; +return true; +}if (this.line.startsWith(" INPUT COORDINATES")) { +this.state = 1; +if (this.inputOnly) { +this.newAtomSet(); +this.readCoordLines(); +this.continuing = false; +}return true; +}if (this.line.startsWith(" GEOMETRY INPUT FROM EXTERNAL")) { +this.state = 2; +if (this.inputOnly) this.continuing = false; +return true; +}if (this.line.startsWith(" GEOMETRY FOR WAVE FUNCTION")) { +this.state = 3; +return true; +}if (this.line.startsWith(" COORDINATE OPTIMIZATION - POINT")) { +this.state = 4; +return true; +}if (this.line.startsWith(" FINAL OPTIMIZED GEOMETRY")) { +this.getLastConventional = false; +this.state = 5; +return true; +}if (this.addVibrations && this.line.contains(this.isVersion3 ? "EIGENVALUES (EV) OF THE MASS" : "EIGENVALUES (EIGV) OF THE MASS") || this.line.indexOf("LONGITUDINAL OPTICAL (LO)") >= 0) { +this.state = 6; +this.isLongMode = (this.line.indexOf("LONGITUDINAL OPTICAL (LO)") >= 0); +this.readFrequencies(); +return true; +}if (this.line.startsWith(" TRANSFORMATION MATRIX")) { +this.readPrimitiveLatticeVectors(); +return true; +}if (this.line.startsWith(" COORDINATES OF THE EQUIVALENT ATOMS") || this.line.startsWith(" INPUT LIST - ATOM N.")) { +return true; +}if (this.line.indexOf("SYMMOPS - ") >= 0) { +this.readSymmetryOperators(); +return true; +}if (this.line.startsWith(" LATTICE PARAMETER")) { +this.newLattice(this.line.indexOf("- CONVENTIONAL") >= 0); +return true; +}if (this.line.startsWith(" CRYSTALLOGRAPHIC CELL")) { +if (!this.isPrimitive) { +this.newLattice(true); +}return true; +}if (this.line.startsWith(" DIRECT LATTICE VECTOR")) { +this.getDirect(); +return true; +}if (this.line.startsWith(" COORDINATES IN THE CRYSTALLOGRAPHIC CELL")) { +this.checkModelTrigger = !this.isPrimitive; +if (this.checkModelTrigger) { +this.readCoordLines(); +}return true; +}if (this.addVibrations && this.line.startsWith(" FREQUENCIES COMPUTED ON A FRAGMENT")) { +this.readFreqFragments(); +return true; +}if (this.checkModelTrigger) { +if (this.line.indexOf("CARTESIAN COORDINATES") >= 0 || this.line.indexOf("TOTAL ENERGY") >= 0 || this.line.indexOf("REFERENCE GEOMETRY DEFINED") >= 0 || this.line.indexOf("FUNCTIONS") >= 0) { +this.checkModelTrigger = false; +if (!this.addModel()) return true; +}}if (this.line.startsWith(" ATOMS IN THE ASYMMETRIC UNIT")) { +if (this.isMolecular) return (this.doGetModel(++this.modelNumber, null) ? this.readAtoms() : this.checkLastModel()); +this.readCoordLines(); +this.checkModelTrigger = true; +}if (this.isProperties && this.line.startsWith(" ATOM N.AT.")) { +if (this.doGetModel(++this.modelNumber, null)) this.readAtoms(); + else this.checkLastModel(); +}if (!this.doProcessLines) return true; +if (this.line.startsWith(" TOTAL ENERGY(")) { +this.line = JU.PT.rep(this.line, "( ", "("); +var tokens = this.getTokens(); +this.energy = Double.$valueOf(Double.parseDouble(tokens[2])); +this.setEnergy(); +this.rd(); +if (this.line.startsWith(" ********")) this.discardLinesUntilContains("SYMMETRY ALLOWED"); + else if (this.line.startsWith(" TTTTTTTT")) this.discardLinesUntilContains(" *******"); +return true; +}if (this.line.startsWith(" MULLIKEN POPULATION ANALYSIS")) return this.readPartialCharges(); +if (this.line.startsWith(" TOTAL ATOMIC CHARGES")) return this.readTotalAtomicCharges(); +if (this.line.startsWith(" MAX GRADIENT")) return this.readGradient(); +if (this.line.startsWith(" ATOMIC SPINS SET")) return this.readData("spin", 3); +if (this.line.startsWith(" TOTAL ATOMIC SPINS :")) return this.readData("magneticMoment", 1); +if (this.line.startsWith(" BORN CHARGE TENSOR.")) return this.readBornChargeTensors(); +if (!this.isProperties) return true; +if (this.line.startsWith(" DEFINITION OF TRACELESS")) return this.getQuadrupoleTensors(); +if (this.line.startsWith(" MULTIPOLE ANALYSIS BY ATOMS")) { +this.appendLoadNote("Multipole Analysis"); +return true; +}if (this.line.startsWith(" CP N. ")) { +this.cpno = this.parseIntAt(this.line, 6); +return true; +}if (this.line.startsWith(" CP TYPE ")) { +this.processNextCriticalPoint(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "processNextCriticalPoint", +function(){ +if (this.htCriticalPoints == null) { +this.htCriticalPoints = new java.util.Hashtable(); +this.asc.setModelInfoForSet("criticalPoints", this.htCriticalPoints, 0); +}var nblank = 0; +var id = null; +var entry = null; +var f = 0.5291772; +var m = null; +var v = NaN; +var g = NaN; +var rho = NaN; +var evalues = null; +var type = null; +while (this.line != null || this.rd().length > 0 || ++nblank < 2) { +if (this.line.indexOf("CLUSTER") >= 0) { +break; +}if (this.line.length > 0) nblank = 0; +var pt = this.line.indexOf(":"); +if (pt > 0) { +var key = this.line.substring(0, pt).trim(); +var value = this.line.substring(pt + 1); +if (key.equals("CP TYPE")) { +type = J.adapter.readers.xtal.CrystalReader.crtypes[Clazz.doubleToInt("??,-3,-1,+1,+3".indexOf(value.substring(5, 7)) / 3)]; +entry = this.htCriticalPoints.get(type); +if (entry == null) { +this.htCriticalPoints.put(type, entry = new JU.Lst()); +}m = new java.util.Hashtable(); +entry.addLast(m); +var i = entry.size(); +id = "cp_" + i; +m.put("cpno", Integer.$valueOf(this.cpno)); +m.put("id", id); +m.put("type", type); +m.put("index", Integer.$valueOf(i)); +} else if (key.equals("COORD(AU) (X Y Z)")) { +var xyz = JU.P3.new3(f * this.parseFloatStr(value.substring(0, 12)), f * this.parseFloatStr(value.substring(12, 24)), f * this.parseFloatStr(value.substring(24, 36))); +m.put("point", xyz); +JU.Logger.info("CRYSTAL TOPOND critical point " + type + " " + xyz); +} else if (key.equals("PROPERTIES (RHO,GRHO,LAP)")) { +rho = this.parseFloatStr(value.substring(0, 12)); +m.put("rho", Float.$valueOf(rho)); +m.put("lap", Float.$valueOf(this.parseFloatStr(value.substring(24, 36)))); +} else if (key.equals("PROPERTIES (-LAP,GLAP,RHO)")) { +m.put("lap", Float.$valueOf(-this.parseFloatStr(value.substring(0, 12)))); +rho = this.parseFloatStr(value.substring(24, 36)); +m.put("rho", Float.$valueOf(rho)); +} else if (key.equals("KINETIC ENERGY DENSITIES (G,K)")) { +g = this.parseFloatStr(value.substring(0, 12)); +m.put("kineticEnergyG", Float.$valueOf(g)); +} else if (key.equals("VIRIAL DENSITY")) { +v = this.parseFloatStr(value.substring(0, 12)); +m.put("virialDensityV", Float.$valueOf(v)); +m.put("ratioVG", Float.$valueOf(Math.abs(v) / g)); +m.put("energyDensityH", Float.$valueOf(g + v)); +m.put("ratioHRho", Float.$valueOf((g + v) / rho)); +} else if (key.equals("EIGENVALUES (L1 L2 L3)")) { +var e1 = this.parseFloatStr(value.substring(0, 12)); +var e2 = this.parseFloatStr(value.substring(12, 24)); +var e3 = this.parseFloatStr(value.substring(24, 36)); +evalues = Clazz.newFloatArray(-1, [e1, e2, e3]); +m.put("eigenvalues", evalues); +m.put("ellipticity", Float.$valueOf(e1 / e2 - 1)); +m.put("anisotropy", Float.$valueOf(e3 - Math.abs(e1 + e2) / 2)); +} else if (key.equals("EIGENVECTORS")) { +value = value + this.rd().substring(33) + this.rd().substring(33); +var ev = Clazz.newDoubleArray (3, 3, 0); +for (var ei = 0, p = 0; ei < 3; ei++) { +for (var ej = 0; ej < 3; ej++, p += 12) { +ev[ej][ei] = this.parseFloatStr(value.substring(p, p + 12)); +} +} +var evectors = new Array(3); +evectors[0] = JU.P3.new3(ev[0][0], ev[0][1], ev[0][2]); +evectors[1] = JU.P3.new3(ev[1][0], ev[1][1], ev[1][2]); +evectors[2] = JU.P3.new3(ev[2][0], ev[2][1], ev[2][2]); +System.out.println("evpts " + evectors[0] + " " + evectors[1] + " " + evectors[2]); +m.put("eigenvectors", evectors); +var t = new JU.Tensor().setFromEigenVectors(evectors, evalues, "cp", id, null); +m.put("tensor", t); +}}this.line = null; +} +}); +Clazz.defineMethod(c$, "newLattice", +function(isConv){ +this.lstCoords = null; +this.readLatticeParams(!isConv); +this.symops.clear(); +if (!isConv) this.primitiveToCrystal = null; +if (!this.directLatticeVectorsFirst) this.directLatticeVectors = null; +}, "~B"); +Clazz.defineMethod(c$, "addModel", +function(){ +if (this.getLastConventional) { +return true; +}if (!this.doGetModel(++this.modelNumber, null)) { +this.lstCoords = null; +this.checkLastModel(); +if (this.asc.iSet >= 0) this.asc.removeAtomSet(this.asc.iSet); +return false; +}this.processCoordLines(); +return true; +}); +Clazz.defineMethod(c$, "readSymmetryOperators", +function(){ +this.symops.clear(); +this.rd(); +this.f16[15] = 1; +while (this.rd() != null && this.line.length > 0 && this.line.indexOf("END") < 0) { +if (this.line.indexOf("V INV") >= 0) continue; +this.fillFloatArray(this.line, 0, this.f14); +if (Float.isNaN(this.f14[0])) break; +for (var i = 0; i < 12; i++) this.f16[i] = this.f14[J.adapter.readers.xtal.CrystalReader.smap[i]]; + +JU.Logger.info("CrystalReader: " + this.line); +if (this.isSlab || this.isPolymer) continue; +var m4 = JU.M4.newA16(this.f16); +var xyz = JS.SymmetryOperation.getXYZFromMatrix(m4, false, false, false); +if (xyz.indexOf("0y") >= 0 || xyz.indexOf("0z") >= 0) { +JU.Logger.error("CrystalReader: Symmetry operator could not be created for " + xyz); +} else { +this.symops.addLast(xyz); +JU.Logger.info("CrystalReader: state=" + this.state + " Symmop " + this.symops.size() + ": " + xyz); +}} +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.asc.setInfo("symmetryType", (this.isSlab ? "2D - SLAB" : this.isPolymer ? "1D - POLYMER" : this.type)); +this.processCoordLines(); +if (this.energy != null) this.setEnergy(); +this.finalizeReaderASCR(); +this.asc.checkNoEmptyModel(); +if (this.htCriticalPoints != null) { +var note = ""; +var list; +list = this.htCriticalPoints.get("nuclei"); +if (list != null) note += "\n _M.criticalPoints.nuclei.length = " + list.size(); +list = this.htCriticalPoints.get("bonds"); +if (list != null) note += "\n _M.criticalPoints.bonds.length = " + list.size(); +list = this.htCriticalPoints.get("rings"); +if (list != null) note += "\n _M.criticalPoints.rings.length = " + list.size(); +list = this.htCriticalPoints.get("cages"); +if (list != null) note += "\n _M.criticalPoints.cages.length = " + list.size(); +note += "\n Use MACRO TOPOND for TOPOND functions."; +this.addJmolScript("set drawHover"); +this.appendLoadNote(note); +this.setLoadNote(); +}}); +Clazz.defineMethod(c$, "getDirect", +function(){ +this.directLatticeVectors = this.read3Vectors(this.line.indexOf("(BOHR") >= 0); +if (!this.iHaveUnitCell) this.directLatticeVectorsFirst = true; +}); +Clazz.defineMethod(c$, "setUnitCellOrientation", +function(){ +if (this.directLatticeVectors == null) return; +var a = new JU.V3(); +var b = new JU.V3(); +if (this.isPrimitive) { +a = this.directLatticeVectors[0]; +b = this.directLatticeVectors[1]; +} else { +if (this.primitiveToCrystal == null) return; +var mp = new JU.M3(); +mp.setColumnV(0, this.directLatticeVectors[0]); +mp.setColumnV(1, this.directLatticeVectors[1]); +mp.setColumnV(2, this.directLatticeVectors[2]); +mp.mul(this.primitiveToCrystal); +a = new JU.V3(); +b = new JU.V3(); +mp.getColumnV(0, a); +mp.getColumnV(1, b); +}this.matUnitCellOrientation = JU.Quat.getQuaternionFrame( new JU.P3(), a, b).getMatrix(); +JU.Logger.info("oriented unit cell is in model " + this.asc.atomSetCount); +}); +Clazz.defineMethod(c$, "readPrimitiveLatticeVectors", +function(){ +this.primitiveToCrystal = JU.M3.newA9(this.fillFloatArray(null, 0, Clazz.newFloatArray (9, 0))); +}); +Clazz.defineMethod(c$, "readHeader", +function(){ +this.havePrimitiveMapping = true; +this.discardLinesUntilContains("*******************************************************************************"); +this.readLines(2); +this.isVersion3 = (this.line.indexOf("CRYSTAL03") >= 0); +this.discardLinesUntilContains("EEEEEEEEEE"); +this.rd(); +var name; +if (this.line.length == 0) { +this.discardLinesUntilContains("*********"); +name = this.rd().trim(); +} else { +name = this.line.trim(); +this.rd(); +}this.type = this.rd().trim(); +var pt = this.type.indexOf("- PROPERTIES"); +if (pt >= 0) { +this.isProperties = true; +this.type = this.type.substring(0, pt).trim(); +}this.asc.setCollectionName(name + (!this.isProperties && this.desiredModelNumber == 0 ? " (optimized)" : "")); +if (this.type.indexOf("GEOMETRY INPUT FROM EXTERNAL FILE") >= 0) { +this.firstLine = this.line; +this.type = this.rd().trim(); +}this.isPolymer = (this.type.equals("1D - POLYMER") || this.type.equals("POLYMER CALCULATION")); +this.isSlab = (this.type.equals("2D - SLAB") || this.type.equals("SLAB CALCULATION")); +if ((this.isPolymer || this.isSlab) && !this.isPrimitive) { +JU.Logger.error("Cannot use FILTER \"conventional\" with POLYMER or SLAB"); +this.isPrimitive = true; +}this.asc.setInfo("unitCellType", (this.isPrimitive ? "primitive" : "conventional")); +if (this.type.indexOf("MOLECULAR") >= 0) { +this.isMolecular = this.doProcessLines = true; +this.rd(); +this.asc.setInfo("molecularCalculationPointGroup", this.line.substring(this.line.indexOf(" OR ") + 4).trim()); +return false; +}this.discardLinesUntilContains2("SPACE GROUP", "****"); +pt = this.line.indexOf(":"); +if (pt >= 0 && !this.isPrimitive) this.spaceGroupName = this.line.substring(pt + 1).trim(); +this.doApplySymmetry = this.isProperties; +return !this.isProperties; +}); +Clazz.defineMethod(c$, "readLatticeParams", +function(isPrimitive){ +var f = (this.line.indexOf("(BOHR") >= 0 ? 0.5291772 : 1); +if (isPrimitive) this.newAtomSet(); +this.primitiveVolume = 0; +this.primitiveDensity = 0; +if (this.isPolymer && !isPrimitive && this.line.indexOf("BOHR =") < 0) { +this.setUnitCell(this.parseFloatStr(this.line.substring(this.line.indexOf("CELL") + 4)) * f, -1, -1, 90, 90, 90); +} else { +while (this.rd().indexOf("GAMMA") < 0) if (this.line.indexOf("VOLUME=") >= 0) { +this.primitiveVolume = this.parseFloatStr(this.line.substring(43)); +this.primitiveDensity = this.parseFloatStr(this.line.substring(66)); +} +var tokens = JU.PT.getTokens(this.rd()); +var a = this.parseFloatStr(tokens[0]); +var b = this.parseFloatStr(tokens[1]); +if (!this.isSlab && !this.isPolymer && tokens.length == 7) { +this.primitiveVolume = this.parseFloatStr(tokens[6]); +if (Math.abs(this.primitiveVolume - a * b) < 0.1) { +this.isSlab = true; +}}if (this.isSlab) { +if (isPrimitive) this.setUnitCell(a * f, b * f, -1, this.parseFloatStr(tokens[3]), this.parseFloatStr(tokens[4]), this.parseFloatStr(tokens[5])); + else this.setUnitCell(a * f, b * f, -1, 90, 90, this.parseFloatStr(tokens[2])); +} else if (this.isPolymer) { +this.setUnitCell(a, -1, -1, this.parseFloatStr(tokens[3]), this.parseFloatStr(tokens[4]), this.parseFloatStr(tokens[5])); +} else { +this.setUnitCell(a * f, b * f, this.parseFloatStr(tokens[2]) * f, this.parseFloatStr(tokens[3]), this.parseFloatStr(tokens[4]), this.parseFloatStr(tokens[5])); +}}}, "~B"); +Clazz.defineMethod(c$, "getAtomIndexFromPrimitiveIndex", +function(iPrim){ +return (this.primitiveToIndex == null ? iPrim : this.primitiveToIndex[iPrim]); +}, "~N"); +Clazz.defineMethod(c$, "readAtoms", +function(){ +if (this.isMolecular) this.newAtomSet(); +this.lstCoords = null; +while (this.rd() != null && this.line.indexOf("*") < 0) { +if (this.line.indexOf("X(ANGSTROM") >= 0) { +this.setFractionalCoordinates(false); +this.isMolecular = true; +}} +var i = this.atomIndexLast; +var doNormalizePrimitive = false; +this.atomIndexLast = this.asc.ac; +var isFractional = this.iHaveFractionalCoordinates; +if (!isFractional) { +this.setUnitCellOrientation(); +if (this.matUnitCellOrientation != null) this.getSymmetry().initializeOrientation(this.matUnitCellOrientation); +}while (this.rd() != null && this.line.length > 0 && this.line.indexOf(this.isPrimitive ? "*" : "=") < 0) { +var atom = this.asc.addNewAtom(); +var tokens = this.getTokens(); +var pt = (this.isProperties ? 1 : 2); +atom.elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(this.getAtomicNumber(tokens[pt++])); +atom.atomName = J.adapter.readers.xtal.CrystalReader.fixAtomName(tokens[pt++]); +if (this.isProperties) pt++; +var x = this.parseFloatStr(tokens[pt++]); +var y = this.parseFloatStr(tokens[pt++]); +var z = this.parseFloatStr(tokens[pt]); +if (this.haveCharges) atom.partialCharge = this.asc.atoms[i++].partialCharge; +if (isFractional && !this.isProperties) { +if (x < 0 && (this.isPolymer || this.isSlab || doNormalizePrimitive)) x += 1; +if (y < 0 && (this.isSlab || doNormalizePrimitive)) y += 1; +if (z < 0 && doNormalizePrimitive) z += 1; +}this.setAtomCoordXYZ(atom, x, y, z); +} +this.ac = this.asc.ac - this.atomIndexLast; +return true; +}); +c$.fixAtomName = Clazz.defineMethod(c$, "fixAtomName", +function(s){ +return (s.length > 1 && JU.PT.isLetter(s.charAt(1)) ? s.substring(0, 1) + Character.toLowerCase(s.charAt(1)) + s.substring(2) : s); +}, "~S"); +Clazz.defineMethod(c$, "getAtomicNumber", +function(token){ +return this.parseIntStr(token) % 100; +}, "~S"); +Clazz.defineMethod(c$, "readCoordLines", +function(){ +var atom = (this.inputOnly ? " ATOM" : " ATOM"); +if (this.line.indexOf(atom) < 0) this.discardLinesUntilContains(atom); +this.lstCoords = new JU.Lst(); +while (this.rd() != null && this.line.length > 0) if (this.line.indexOf("****") < 0) this.lstCoords.addLast(this.line); + +}); +Clazz.defineMethod(c$, "processCoordLines", +function(){ +if (this.lstCoords == null) return; +this.ac = this.lstCoords.size(); +var irreducible = null; +for (var i = 0; i < this.ac; i++) { +var atom = this.asc.addNewAtom(); +var tokens = JU.PT.getTokens(this.lstCoords.get(i)); +atom.atomSerial = this.parseIntStr(tokens[0]); +var atomicNumber; +var offset; +switch (tokens.length) { +case 8: +case 7: +atomicNumber = this.getAtomicNumber(tokens[2]); +offset = 4; +if (i == 0) irreducible = Clazz.newFloatArray (this.ac, 0); +if (tokens[1].equals("T")) irreducible[i] = 1; +break; +default: +atomicNumber = this.getAtomicNumber(tokens[1]); +offset = 2; +break; +} +var x = this.parseFloatStr(tokens[offset++]) + this.ptOriginShift.x; +var y = this.parseFloatStr(tokens[offset++]) + this.ptOriginShift.y; +var z = this.parseFloatStr(tokens[offset]) + this.ptOriginShift.z; +this.setAtomCoordXYZ(atom, x, y, z); +atom.elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(atomicNumber); +} +this.lstCoords = null; +if (irreducible != null) { +this.asc.setAtomProperties("irreducible", irreducible, -1, false); +}if (this.primitiveVolume > 0) { +this.asc.setAtomSetModelProperty("volumePrimitive", JU.DF.formatDecimal(this.primitiveVolume, 3)); +this.asc.setModelInfoForSet("primitiveVolume", Float.$valueOf(this.primitiveVolume), this.asc.iSet); +}if (this.primitiveDensity > 0) { +this.asc.setAtomSetModelProperty("densityPrimitive", JU.DF.formatDecimal(this.primitiveDensity, 3)); +this.asc.setModelInfoForSet("primitiveDensity", Float.$valueOf(this.primitiveDensity), this.asc.iSet); +}}); +Clazz.overrideMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +this.setUnitCellOrientation(); +var m4p2c; +var m4c2p; +if (this.primitiveToCrystal != null) { +this.asc.setModelInfoForSet("primitiveToCrystal", this.primitiveToCrystal, this.asc.iSet); +m4p2c = new JU.M4(); +m4p2c.setRotationScale(this.primitiveToCrystal); +m4p2c.m33 = 1; +this.asc.setModelInfoForSet("mat4PrimitiveToCrystal", m4p2c, this.asc.iSet); +m4c2p = JU.M4.newM4(m4p2c); +m4c2p.invert(); +this.asc.setModelInfoForSet("mat4CrystalToPrimitive", m4c2p, this.asc.iSet); +if (this.symops.size() > 0) { +this.asc.setModelInfoForSet("fileSymmetryOperations", this.symops.clone(), this.asc.iSet); +}}this.iHaveSymmetryOperators = false; +this.applySymTrajASCR(); +}); +Clazz.defineMethod(c$, "newAtomSet", +function(){ +if (this.ac > 0 && this.asc.ac > 0) { +this.applySymmetryAndSetTrajectory(); +this.asc.newAtomSet(); +}if (this.spaceGroupName != null) { +this.setSpaceGroupName(this.spaceGroupName); +}this.ac = 0; +}); +Clazz.defineMethod(c$, "setEnergy", +function(){ +this.asc.setAtomSetEnergy("" + this.energy, this.energy.floatValue()); +this.asc.setCurrentModelInfo("Energy", this.energy); +this.asc.setInfo("Energy", this.energy); +this.asc.setAtomSetName("Energy = " + this.energy + " Hartree"); +}); +Clazz.defineMethod(c$, "readPartialCharges", +function(){ +if (this.haveCharges || this.asc.ac == 0) return true; +this.haveCharges = true; +this.readLines(3); +var atoms = this.asc.atoms; +var i0 = this.asc.getLastAtomSetAtomIndex(); +var iPrim = 0; +while (this.rd() != null && this.line.length > 3) if (this.line.charAt(3) != ' ') { +var iConv = this.getAtomIndexFromPrimitiveIndex(iPrim); +if (iConv >= 0) atoms[i0 + iConv].partialCharge = this.parseFloatRange(this.line, 9, 11) - this.parseFloatRange(this.line, 12, 18); +iPrim++; +} +return true; +}); +Clazz.defineMethod(c$, "readTotalAtomicCharges", +function(){ +var data = new JU.SB(); +while (this.rd() != null && this.line.indexOf("T") < 0) data.append(this.line); + +var tokens = JU.PT.getTokens(data.toString()); +var charges = Clazz.newFloatArray (tokens.length, 0); +if (this.nuclearCharges == null || this.nuclearCharges.length != charges.length) this.nuclearCharges = charges; +if (this.asc.ac == 0) return true; +var atoms = this.asc.atoms; +var i0 = this.asc.getLastAtomSetAtomIndex(); +for (var i = 0; i < charges.length; i++) { +var iConv = this.getAtomIndexFromPrimitiveIndex(i); +if (iConv >= 0) { +charges[i] = this.parseFloatStr(tokens[i]); +atoms[i0 + iConv].partialCharge = this.nuclearCharges[i] - charges[i]; +}} +return true; +}); +Clazz.defineMethod(c$, "readFreqFragments", +function(){ +var numAtomsFrag = this.parseIntRange(this.line, 39, 44); +if (numAtomsFrag < 0) return; +this.atomFrag = Clazz.newIntArray (numAtomsFrag, 0); +var Sfrag = ""; +while (this.rd() != null && this.line.indexOf("(") >= 0) Sfrag += this.line; + +Sfrag = JU.PT.rep(Sfrag, "(", " "); +Sfrag = JU.PT.rep(Sfrag, ")", " "); +var tokens = JU.PT.getTokens(Sfrag); +for (var i = 0, pos = 0; i < numAtomsFrag; i++, pos += 3) this.atomFrag[i] = this.getAtomIndexFromPrimitiveIndex(this.parseIntStr(tokens[pos]) - 1); + +java.util.Arrays.sort(this.atomFrag); +}); +Clazz.defineMethod(c$, "readFrequencies", +function(){ +this.getLastConventional = false; +this.addModel(); +this.energy = null; +this.discardLinesUntilContains("MODES"); +var haveIntensities = (this.line.indexOf("INTENS") >= 0); +this.rd(); +var vData = new JU.Lst(); +var freqAtomCount = (this.atomFrag == null ? this.ac : 0); +while (this.rd() != null && this.line.length > 0) { +var i0 = this.parseIntRange(this.line, 1, 5); +var i1 = this.parseIntRange(this.line, 6, 10); +var irrep = (this.isLongMode ? this.line.substring(48, 51) : this.line.substring(49, 52)).trim(); +var intens = (!haveIntensities ? "not available" : (this.isLongMode ? this.line.substring(53, 61) : this.line.substring(59, 69).$replace(')', ' ')).trim()); +var irActivity = (this.isLongMode ? "A" : this.line.substring(55, 58).trim()); +var ramanActivity = (this.isLongMode ? "I" : this.line.substring(71, 73).trim()); +var data = Clazz.newArray(-1, [irrep, intens, irActivity, ramanActivity]); +for (var i = i0; i <= i1; i++) vData.addLast(data); + +} +var test = (this.isLongMode ? "LO MODES FOR IRREP" : this.isVersion3 ? "THE CORRESPONDING MODES" : "NORMAL MODES NORMALIZED TO CLASSICAL AMPLITUDES"); +this.rd(); +var ramanData = null; +if (this.line.indexOf("") >= 0) ramanData = this.readRaman(null); +if (!this.line.contains(test)) this.discardLinesUntilContains(test); +this.rd(); +var modelAtomCount = -1; +while (this.rd() != null && this.line.startsWith(" FREQ(CM**-1)")) { +var tokens = JU.PT.getTokens(this.line.substring(15)); +var frequencies = Clazz.newFloatArray (tokens.length, 0); +var frequencyCount = frequencies.length; +for (var i = 0; i < frequencyCount; i++) { +frequencies[i] = this.parseFloatStr(tokens[i]); +if (this.debugging) JU.Logger.debug((this.vibrationNumber + i) + " frequency=" + frequencies[i]); +} +var ignore = Clazz.newBooleanArray(frequencyCount, false); +var iAtom0 = 0; +var nData = vData.size(); +var isFirst = true; +for (var i = 0; i < frequencyCount; i++) { +tokens = vData.get(this.vibrationNumber % nData); +ignore[i] = (!this.doGetVibration(++this.vibrationNumber) || tokens == null); +if (ignore[i]) continue; +this.applySymmetryAndSetTrajectory(); +if (isFirst) { +modelAtomCount = this.asc.getLastAtomSetAtomCount(); +}this.cloneLastAtomSet(this.ac, null); +if (isFirst) { +iAtom0 = this.asc.getLastAtomSetAtomIndex(); +isFirst = false; +}this.setFreqValue(frequencies[i], tokens); +} +this.rd(); +this.fillFrequencyData(iAtom0, freqAtomCount, modelAtomCount, ignore, false, 14, 10, this.atomFrag, 0, null); +this.rd(); +} +if (ramanData != null) this.readRaman(ramanData); +}); +Clazz.defineMethod(c$, "setFreqValue", +function(freq, data){ +var activity = "IR: " + data[2] + ", Ram.: " + data[3]; +this.asc.setAtomSetFrequency(this.vibrationNumber, null, activity, "" + freq, null); +this.asc.setAtomSetModelProperty("IRintensity", data[1] + " km/Mole"); +this.asc.setAtomSetModelProperty("vibrationalSymmetry", data[0]); +this.asc.setAtomSetModelProperty("IRactivity", data[2]); +this.asc.setAtomSetModelProperty("Ramanactivity", data[3]); +this.asc.setAtomSetName((this.isLongMode ? "LO " : "") + data[0] + " " + JU.DF.formatDecimal(freq, 2) + " cm-1 (" + JU.DF.formatDecimal(Float.parseFloat(data[1]), 0) + " km/Mole), " + activity); +}, "~N,~A"); +Clazz.defineMethod(c$, "readRaman", +function(ramanData){ +if (ramanData == null) { +ramanData = new JU.Lst(); +this.rd(); +while (this.rd() != null && !this.line.contains("")) ramanData.addLast(this.line); + +return ramanData; +}var info; +var i = 0; +var n = ramanData.size(); +for (; i < n; i++) { +this.line = ramanData.get(i); +if (this.line.contains("---")) break; +} +for (++i; i < n; i++) { +this.line = ramanData.get(i); +if (this.line.length == 0) break; +var mode1 = this.parseIntRange(this.line, 1, 5); +var mode2 = this.parseIntRange(this.line, 6, 10); +var i_tot = this.parseFloatRange(this.line, 30, 40); +var i_par = this.parseFloatRange(this.line, 40, 50); +var i_perp = this.parseFloatRange(this.line, 50, 60); +for (var i0 = 0, mode = mode1; mode <= mode2; mode++) { +var imodel = this.getModelForMode(i0, mode); +if (imodel < 0) continue; +i0 = imodel + 1; +info = this.asc.getAtomSetAuxiliaryInfoValue(imodel, "ramanInfo"); +if (info == null) this.asc.setModelInfoForSet("ramanInfo", info = new java.util.Hashtable(), imodel); +info.put("isotropicIntensities", Clazz.newFloatArray(-1, [i_tot, i_par, i_perp])); +} +} +for (; i < n; i++) { +this.line = ramanData.get(i); +if (this.line.contains("---")) break; +} +for (++i; i < n; i++) { +this.line = ramanData.get(i); +if (this.line.length == 0) break; +var mode1 = this.parseIntRange(this.line, 1, 5); +var mode2 = this.parseIntRange(this.line, 6, 10); +var i_xx = this.parseFloatRange(this.line, 30, 38); +var i_xy = this.parseFloatRange(this.line, 38, 46); +var i_xz = this.parseFloatRange(this.line, 46, 54); +var i_yy = this.parseFloatRange(this.line, 54, 62); +var i_yz = this.parseFloatRange(this.line, 62, 70); +var i_zz = this.parseFloatRange(this.line, 70, 78); +for (var i0 = 0, mode = mode1; mode <= mode2; mode++) { +var imodel = this.getModelForMode(i0, mode); +if (imodel < 0) continue; +i0 = imodel + 1; +var a = Clazz.newArray(-1, [ Clazz.newDoubleArray(-1, [i_xx, i_xy, i_xz]), Clazz.newDoubleArray(-1, [i_xy, i_yy, i_yz]), Clazz.newDoubleArray(-1, [i_xz, i_yz, i_zz])]); +this.asc.atoms[this.asc.getAtomSetAtomIndex(imodel)].addTensor( new JU.Tensor().setFromAsymmetricTensor(a, "raman", "mode" + mode), "raman", false); +} +} +this.appendLoadNote("Ellipsoids set \"raman\": Raman tensors"); +return null; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getModelForMode", +function(i0, mode){ +var n = this.asc.atomSetCount; +for (var i = i0; i < n; i++) { +var imode = this.asc.getAtomSetAuxiliaryInfoValue(i, "vibrationalMode"); +var m = (imode == null ? 0 : imode.intValue()); +if (m == mode) return i; +} +return -1; +}, "~N,~N"); +Clazz.defineMethod(c$, "readGradient", +function(){ +var key = null; +while (this.line != null) { +var tokens = this.getTokens(); +if (this.line.indexOf("MAX GRAD") >= 0) key = "maxGradient"; + else if (this.line.indexOf("RMS GRAD") >= 0) key = "rmsGradient"; + else if (this.line.indexOf("MAX DISP") >= 0) key = "maxDisplacement"; + else if (this.line.indexOf("RMS DISP") >= 0) key = "rmsDisplacement"; + else break; +if (this.asc.ac > 0) this.asc.setAtomSetModelProperty(key, tokens[2]); +this.rd(); +} +return true; +}); +Clazz.defineMethod(c$, "readData", +function(name, nfields){ +this.processCoordLines(); +var f = Clazz.newFloatArray (this.ac, 0); +for (var i = 0; i < this.ac; i++) f[i] = 0; + +var data = ""; +while (this.rd() != null && (this.line.length < 4 || JU.PT.isDigit(this.line.charAt(3)))) data += this.line; + +data = JU.PT.rep(data, "-", " -"); +var tokens = JU.PT.getTokens(data); +for (var i = 0, pt = nfields - 1; i < this.ac; i++, pt += nfields) { +var iConv = this.getAtomIndexFromPrimitiveIndex(i); +if (iConv >= 0) f[iConv] = this.parseFloatStr(tokens[pt]); +} +this.asc.setAtomProperties(name, f, -1, false); +return true; +}, "~S,~N"); +Clazz.defineMethod(c$, "getQuadrupoleTensors", +function(){ +this.readLines(6); +var atoms = this.asc.atoms; +var vectors = new Array(3); +if (this.directLatticeVectors == null) vectors = Clazz.newArray(-1, [JU.V3.new3(1, 0, 0), JU.V3.new3(0, 1, 0), JU.V3.new3(0, 0, 1)]); + else for (var i = 0; i < 3; i++) { +vectors[i] = JU.V3.newV(this.directLatticeVectors[i]); +vectors[i].normalize(); +} +while (this.rd() != null && this.line.startsWith(" *** ATOM")) { +var tokens = this.getTokens(); +var index = this.parseIntStr(tokens[3]) - 1; +tokens = JU.PT.getTokens(this.readLines(3)); +atoms[index].addTensor( new JU.Tensor().setFromEigenVectors(vectors, Clazz.newFloatArray(-1, [this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[3]), this.parseFloatStr(tokens[5])]), "quadrupole", atoms[index].atomName, null), null, false); +this.rd(); +} +this.appendLoadNote("Ellipsoids set \"quadrupole\": Quadrupole tensors"); +return true; +}); +Clazz.defineMethod(c$, "readBornChargeTensors", +function(){ +this.processCoordLines(); +this.rd(); +var atoms = this.asc.atoms; +while (this.rd().startsWith(" ATOM")) { +var index = this.parseIntAt(this.line, 5) - 1; +var atom = atoms[index]; +this.readLines(2); +atom.addTensor( new JU.Tensor().setFromAsymmetricTensor(this.fill3x3(null, -3), "charge", atom.elementSymbol + (index + 1)), null, false); +this.rd(); +} +this.appendLoadNote("Ellipsoids set \"charge\": Born charge tensors"); +return false; +}); +c$.crtypes = Clazz.newArray(-1, ["??", "nuclei", "bonds", "rings", "cages"]); +c$.smap = Clazz.newIntArray(-1, [2, 3, 4, 11, 5, 6, 7, 12, 8, 9, 10, 13]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/DmolReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/DmolReader.js new file mode 100755 index 000000000000..81be3a55e7a6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/DmolReader.js @@ -0,0 +1,103 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.DmolReader", ["JU.DF", "$.PT", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.unitCellData = null; +this.totE = null; +this.geomOpt = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "DmolReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.contains("** GEOMETRY OPTIMIZATION IN DELOCALIZED COORDINATES **")) { +this.geomOpt = true; +} else if (this.line.contains("INCOOR, atomic coordinates")) { +this.geomOpt = false; +} else if (!this.geomOpt ? this.line.contains("$cell vectors") : this.line.contains("Lattice:")) { +this.readCellParam(); +} else if (!this.geomOpt ? this.line.contains("$coordinates") : this.line.contains("Input Coordinates")) { +this.readCoord(); +} else if (this.line.contains(" Total Energy")) { +this.readEnergy(); +} else if (this.line.contains("Frequencies (cm-1)")) { +this.readFreq(); +}return true; +}); +Clazz.defineMethod(c$, "readCellParam", +function(){ +this.unitCellData = Clazz.newFloatArray (9, 0); +for (var n = 0, i = 0; n < 3; n++) { +var tokens = JU.PT.getTokens(this.rd()); +this.unitCellData[i++] = this.parseFloatStr(!this.geomOpt ? tokens[0] : tokens[4]) * 0.5291772; +this.unitCellData[i++] = this.parseFloatStr(!this.geomOpt ? tokens[1] : tokens[5]) * 0.5291772; +this.unitCellData[i++] = this.parseFloatStr(!this.geomOpt ? tokens[2] : tokens[6]) * 0.5291772; +} +}); +Clazz.defineMethod(c$, "newAtomSet", +function(){ +this.applySymmetryAndSetTrajectory(); +this.asc.newAtomSet(); +if (this.totE != null) this.setEnergy(); +this.doApplySymmetry = true; +if (this.unitCellData != null) { +this.addExplicitLatticeVector(0, this.unitCellData, 0); +this.addExplicitLatticeVector(1, this.unitCellData, 3); +this.addExplicitLatticeVector(2, this.unitCellData, 6); +this.setSpaceGroupName("P1"); +}this.setFractionalCoordinates(false); +}); +Clazz.defineMethod(c$, "readCoord", +function(){ +this.newAtomSet(); +if (this.geomOpt) this.readLines(2); +while (this.rd() != null && !this.geomOpt ? !this.line.contains("$end") : !this.line.contains("-----")) { +var tokens = this.getTokens(); +var atom = this.asc.addNewAtom(); +atom.atomName = !this.geomOpt ? tokens[0] : tokens[1]; +var factor = (!this.geomOpt ? 0.5291772 : 1.00); +var x = this.parseFloatStr(!this.geomOpt ? tokens[1] : tokens[2]) * factor; +var y = this.parseFloatStr(!this.geomOpt ? tokens[2] : tokens[3]) * factor; +var z = this.parseFloatStr(!this.geomOpt ? tokens[3] : tokens[4]) * factor; +atom.set(x, y, z); +this.setAtomCoord(atom); +} +}); +Clazz.defineMethod(c$, "readEnergy", +function(){ +this.rd(); +if (this.line.contains("Ef")) this.totE = Double.$valueOf(Double.parseDouble(JU.PT.getTokens(this.line.substring(this.line.indexOf("Ef") + 1, this.line.indexOf("Ha")))[1])); +}); +Clazz.defineMethod(c$, "setEnergy", +function(){ +this.asc.setAtomSetEnergy("" + this.totE, this.totE.floatValue()); +this.asc.setInfo("Energy", this.totE); +this.asc.setAtomSetName("E = " + this.totE + " Hartree"); +}); +Clazz.defineMethod(c$, "readFreq", +function(){ +var lastAtomCount = 0; +var ac = this.asc.getLastAtomSetAtomCount(); +while (this.rd() != null && this.line.charAt(1) == ' ') { +var tokens = this.getTokens(); +var frequencyCount = Clazz.doubleToInt(tokens.length / 2); +var frequencies = Clazz.newFloatArray (frequencyCount, 0); +for (var i = 1, n = 0; i < tokens.length; i += 2, n++) { +frequencies[n] = this.parseFloatStr(tokens[i]); +if (this.debugging) JU.Logger.debug((this.vibrationNumber + n) + " frequency=" + frequencies[n]); +} +var ignore = Clazz.newBooleanArray(frequencyCount, false); +var iAtom0 = 0; +for (var i = 0; i < frequencyCount; i++) { +ignore[i] = (!this.doGetVibration(++this.vibrationNumber)); +if (ignore[i]) continue; +this.applySymmetryAndSetTrajectory(); +lastAtomCount = this.cloneLastAtomSet(ac, null); +if (i == 0) iAtom0 = this.asc.getLastAtomSetAtomIndex(); +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, String.valueOf(frequencies[i]), null); +this.asc.setAtomSetName(JU.DF.formatDecimal(frequencies[i], 2) + " cm-1"); +} +this.rd(); +this.fillFrequencyData(iAtom0, ac, lastAtomCount, ignore, false, 5, 13, null, 0, null); +this.readLines(2); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/EspressoReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/EspressoReader.js new file mode 100755 index 000000000000..ff0cfae55eda --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/EspressoReader.js @@ -0,0 +1,102 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.EspressoReader", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cellParams = null; +this.totEnergy = null; +this.endFlag = false; +this.aPar = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "EspressoReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setSpaceGroupName("P1"); +this.doApplySymmetry = true; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.contains("lattice parameter (a_0)") || this.line.contains("lattice parameter (alat)")) { +this.readAparam(); +} else if (this.line.contains("crystal axes:")) { +this.readCellParam(false); +} else if (this.line.contains("CELL_PARAMETERS (")) { +this.readCellParam(true); +} else if (this.line.contains("Cartesian axes")) { +this.discardLinesUntilContains("positions ("); +if (this.doGetModel(++this.modelNumber, null)) this.readAtoms(); +} else if (this.line.contains("POSITIONS (")) { +if (this.doGetModel(++this.modelNumber, null)) this.readAtoms(); +} else if (this.line.contains("! total energy")) { +this.readEnergy(); +} else if (this.line.contains("A final scf")) { +this.endFlag = true; +}return true; +}); +Clazz.defineMethod(c$, "readAparam", +function(){ +this.aPar = this.parseFloatStr(this.getTokens()[4]) * 0.5291772; +}); +Clazz.defineMethod(c$, "readCellParam", +function(andAPar){ +var i0 = (andAPar ? 0 : 3); +if (this.line.contains("bohr")) this.aPar = 0.5291772; +if (andAPar && this.line.contains("=")) this.aPar = this.parseFloatStr(this.line.substring(this.line.indexOf("=") + 1)) * 0.5291772; +this.cellParams = Clazz.newFloatArray (9, 0); +for (var n = 0, i = 0; n < 3; n++) { +var tokens = JU.PT.getTokens(this.rd()); +this.cellParams[i++] = this.parseFloatStr(tokens[i0]) * this.aPar; +this.cellParams[i++] = this.parseFloatStr(tokens[i0 + 1]) * this.aPar; +this.cellParams[i++] = this.parseFloatStr(tokens[i0 + 2]) * this.aPar; +} +}, "~B"); +Clazz.defineMethod(c$, "newAtomSet", +function(){ +this.asc.newAtomSet(); +if (this.totEnergy != null) this.setEnergy(); +}); +Clazz.defineMethod(c$, "setCellParams", +function(){ +if (this.cellParams != null) { +this.addExplicitLatticeVector(0, this.cellParams, 0); +this.addExplicitLatticeVector(1, this.cellParams, 3); +this.addExplicitLatticeVector(2, this.cellParams, 6); +this.setSpaceGroupName("P1"); +}}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.newAtomSet(); +var isAlat = (this.line.contains("alat") || this.line.contains("a_0")); +var firstStr = (this.line.contains("site n.")); +var isFractional = this.line.contains("crystal"); +var isBohr = this.line.contains("bohr"); +var isAngstrom = this.line.contains("angstrom"); +if (isAlat || isFractional || isAngstrom) this.setCellParams(); +this.setFractionalCoordinates(isFractional); +while (this.rd() != null && this.line.length > 45) { +var tokens = this.getTokens(); +var atom = this.asc.addNewAtom(); +atom.atomName = tokens[(isBohr || tokens.length == 4 || !firstStr ? 0 : 1)]; +var i1 = (isBohr || tokens.length == 4 || !firstStr ? 1 : tokens.length - 4); +var x = this.parseFloatStr(tokens[i1++]); +var y = this.parseFloatStr(tokens[i1++]); +var z = this.parseFloatStr(tokens[i1++]); +atom.set(x, y, z); +if (isBohr) { +atom.scale(0.5291772); +} else if (isAlat) { +atom.scale(this.aPar); +}this.setAtomCoord(atom); +} +this.applySymmetryAndSetTrajectory(); +if (this.endFlag) this.discardLinesUntilContains("Harris-Foulkes estimate"); +}); +Clazz.defineMethod(c$, "readEnergy", +function(){ +this.totEnergy = Double.$valueOf(Double.parseDouble(JU.PT.getTokens(this.line.substring(this.line.indexOf("=") + 1))[0])); +}); +Clazz.defineMethod(c$, "setEnergy", +function(){ +this.asc.setAtomSetEnergy("" + this.totEnergy, this.totEnergy.floatValue()); +this.asc.setInfo("Energy", this.totEnergy); +this.asc.setAtomSetName("E = " + this.totEnergy + " Ry"); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/GulpReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/GulpReader.js new file mode 100755 index 000000000000..9c565bdb199f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/GulpReader.js @@ -0,0 +1,247 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.GulpReader", ["java.util.Hashtable", "JU.PT", "$.V3"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isSlab = false; +this.isPolymer = false; +this.$isPrimitive = false; +this.sep = "-------"; +this.coordinatesArePrimitive = false; +this.atomCharges = null; +this.bTest = false; +this.a = 0; +this.b = 0; +this.c = 0; +this.alpha = 0; +this.beta = 0; +this.gamma = 0; +this.primitiveData = null; +this.totEnergy = null; +this.energyUnits = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "GulpReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.$isPrimitive = !this.checkFilterKey("CONV"); +this.coordinatesArePrimitive = true; +this.setFractionalCoordinates(this.readDimensionality()); +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (this.atomCharges == null) return; +var atoms = this.asc.atoms; +var f; +for (var i = this.asc.ac; --i >= 0; ) if ((f = this.atomCharges.get(atoms[i].atomName)) != null || (f = this.atomCharges.get(atoms[i].getElementSymbol())) != null) atoms[i].partialCharge = f.floatValue(); + +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.contains("Space group ")) { +this.readSpaceGroup(); +return true; +}if (this.isSlab ? this.line.contains("Surface cell parameters") : this.isPolymer ? this.line.contains("Polymer cell parameter") : (this.bTest = this.line.contains("Cartesian lattice vectors")) || this.line.contains("Cell parameters (Angstroms/Degrees)") || this.line.contains("Primitive cell parameters")) { +this.readCellParameters(this.bTest); +return true; +}if (this.line.contains("Monopole - monopole (total)")) { +this.readEnergy(); +return true; +}if (this.line.contains("Fractional coordinates of asymmetric unit :") || (this.bTest = this.line.contains("Final asymmetric unit coordinates")) || (this.bTest = this.line.contains("Final fractional coordinates ")) || this.line.contains("Mixed fractional/Cartesian coordinates") || this.line.contains("Cartesian coordinates of cluster ") || this.line.contains("Final cartesian coordinates of atoms :") && this.isMolecular) { +if (this.doGetModel(++this.modelNumber, null)) this.readAtomicPos(!this.bTest); +return true; +}if (this.line.contains("Species output for all configurations")) { +this.readPartialCharges(); +return true; +}if (!this.doProcessLines) return true; +if (this.line.contains("Final cell parameters and derivatives")) { +this.readFinalCell(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "readDimensionality", +function(){ +this.discardLinesUntilContains("Dimensionality"); +var tokens = this.getTokens(); +switch (this.parseIntStr(tokens[2])) { +case 0: +this.isMolecular = true; +this.$isPrimitive = false; +return false; +case 1: +this.isPolymer = true; +this.$isPrimitive = false; +break; +case 2: +this.isSlab = true; +this.$isPrimitive = false; +break; +} +return true; +}); +Clazz.defineMethod(c$, "readSpaceGroup", +function(){ +this.sgName = this.line.substring(this.line.indexOf(":") + 1).trim(); +}); +c$.parameterIndex = Clazz.defineMethod(c$, "parameterIndex", +function(key){ +for (var i = J.adapter.readers.xtal.GulpReader.tags.length; --i >= 0; ) if (J.adapter.readers.xtal.GulpReader.tags[i].equals(key)) return i; + +return -1; +}, "~S"); +Clazz.defineMethod(c$, "setParameter", +function(key, value){ +switch (J.adapter.readers.xtal.GulpReader.parameterIndex(key)) { +case 0: +this.a = value; +break; +case 1: +this.b = value; +break; +case 2: +this.c = value; +break; +case 3: +this.alpha = value; +break; +case 4: +this.beta = value; +break; +case 5: +this.gamma = value; +break; +} +}, "~S,~N"); +Clazz.defineMethod(c$, "newAtomSet", +function(doSetUnitCell){ +this.asc.newAtomSet(); +if (doSetUnitCell) { +this.setModelParameters(this.coordinatesArePrimitive); +if (this.totEnergy != null) this.setEnergy(); +}}, "~B"); +Clazz.defineMethod(c$, "setModelParameters", +function(isPrimitive){ +if (this.sgName != null) this.setSpaceGroupName(isPrimitive ? "P1" : this.sgName); +if (isPrimitive && this.primitiveData != null) { +this.addExplicitLatticeVector(0, this.primitiveData, 0); +this.addExplicitLatticeVector(1, this.primitiveData, 3); +this.addExplicitLatticeVector(2, this.primitiveData, 6); +} else if (this.a != 0) { +if (this.isSlab) { +this.c = -1; +this.beta = this.gamma = 90; +} else if (this.isPolymer) { +this.b = this.c = -1; +this.alpha = this.beta = this.gamma = 90; +}this.setUnitCell(this.a, this.b, this.c, this.alpha, this.beta, this.gamma); +}}, "~B"); +Clazz.defineMethod(c$, "readCellParameters", +function(isLatticeVectors){ +if (isLatticeVectors) { +this.rd(); +this.primitiveData = this.fillFloatArray(null, 0, Clazz.newFloatArray (9, 0)); +this.a = 0; +return; +}var i0 = (this.line.indexOf("Full cell") < 0 ? 0 : 4); +this.coordinatesArePrimitive = (i0 == 0); +this.rd(); +while (this.rd() != null && this.line.contains("=")) { +var tokens = JU.PT.getTokens(this.line.$replace('=', ' ')); +for (var i = i0; i < i0 + 4; i += 2) if (tokens.length > i + 1) this.setParameter(tokens[i], this.parseFloatStr(tokens[i + 1])); + +} +}, "~B"); +Clazz.defineMethod(c$, "readFinalCell", +function(){ +this.discardLinesUntilContains(this.sep); +var tokens; +while (this.rd() != null && (tokens = this.getTokens()).length >= 2) this.setParameter(tokens[0], this.parseFloatStr(tokens[1])); + +if (this.primitiveData != null) { +this.scalePrimitiveData(0, this.a); +this.scalePrimitiveData(3, this.b); +this.scalePrimitiveData(6, this.c); +if (!this.coordinatesArePrimitive) while (this.rd() != null && this.line.indexOf("Final") < 0) if (this.line.indexOf("Non-primitive lattice parameters") > 0) { +this.rd(); +for (var i = 0; i < 2; i++) { +tokens = JU.PT.getTokens(this.rd().$replace('=', ' ')); +this.setParameter(tokens[0], this.parseFloatStr(tokens[1])); +this.setParameter(tokens[2], this.parseFloatStr(tokens[3])); +this.setParameter(tokens[4], this.parseFloatStr(tokens[5])); +} +break; +} +}this.setModelParameters(this.coordinatesArePrimitive); +this.applySymmetryAndSetTrajectory(); +if (this.totEnergy != null) this.setEnergy(); +}); +Clazz.defineMethod(c$, "scalePrimitiveData", +function(i, value){ +var v = JU.V3.new3(this.primitiveData[i], this.primitiveData[i + 1], this.primitiveData[i + 2]); +v.normalize(); +v.scale(value); +this.primitiveData[i++] = v.x; +this.primitiveData[i++] = v.y; +this.primitiveData[i++] = v.z; +}, "~N,~N"); +Clazz.overrideMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +if (this.coordinatesArePrimitive && this.iHaveUnitCell && this.doCheckUnitCell && this.primitiveData != null && !this.$isPrimitive) { +this.setModelParameters(false); +var symFull = this.symmetry; +this.setModelParameters(true); +var atoms = this.asc.atoms; +var i0 = this.asc.getLastAtomSetAtomIndex(); +var i1 = this.asc.ac; +for (var i = i0; i < i1; i++) { +var atom = atoms[i]; +this.symmetry.toCartesian(atom, true); +symFull.toFractional(atom, true); +this.fixFloatPt(atom, 100000.0); +} +this.setModelParameters(false); +}this.applySymTrajASCR(); +}); +Clazz.defineMethod(c$, "readAtomicPos", +function(finalizeSymmetry){ +this.newAtomSet(finalizeSymmetry); +this.discardLinesUntilContains(this.sep); +this.discardLinesUntilContains(this.sep); +while (this.rd() != null) { +if (this.line.indexOf(this.sep) >= 0 && this.rd().indexOf("Region") < 0) break; +if (this.line.indexOf("Region") >= 0) { +this.rd(); +continue; +}this.line = this.line.$replace('*', ' '); +var tokens = this.getTokens(); +if (tokens[2].equals("c")) this.addAtomXYZSymName(tokens, 3, null, tokens[1]); +} +if (finalizeSymmetry) this.applySymmetryAndSetTrajectory(); +}, "~B"); +Clazz.defineMethod(c$, "readPartialCharges", +function(){ +this.atomCharges = new java.util.Hashtable(); +this.discardLinesUntilContains(this.sep); +this.discardLinesUntilContains(this.sep); +var tokens; +while ((tokens = JU.PT.getTokens(this.rd())).length > 5) { +var species = tokens[0]; +var charge = this.atomCharges.get(species); +var f = (charge == null ? 0 : charge.floatValue()); +this.atomCharges.put(species, Float.$valueOf((f + this.parseFloatStr(tokens[4])))); +} +}); +Clazz.defineMethod(c$, "readEnergy", +function(){ +if (this.line.indexOf("=") < 0) this.discardLinesUntilContains("="); +var tokens = JU.PT.getTokens(this.line.substring(this.line.indexOf("="))); +this.totEnergy = Double.$valueOf(Double.parseDouble(tokens[1])); +this.energyUnits = tokens[2]; +this.discardLinesUntilContains(this.sep); +}); +Clazz.defineMethod(c$, "setEnergy", +function(){ +this.asc.setAtomSetEnergy("" + this.totEnergy, this.totEnergy.floatValue()); +this.asc.setInfo("Energy", this.totEnergy); +this.asc.setAtomSetName("E = " + this.totEnergy + " " + this.energyUnits); +this.totEnergy = null; +}); +c$.tags = Clazz.newArray(-1, ["a", "b", "c", "alpha", "beta", "gamma"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/JanaReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/JanaReader.js new file mode 100755 index 000000000000..ba33c09fa562 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/JanaReader.js @@ -0,0 +1,562 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.JanaReader", ["java.util.Hashtable", "JU.A4", "$.BS", "$.Lst", "$.Matrix", "$.P3", "$.PT", "$.Quat", "$.Rdr", "$.V3", "J.adapter.smarter.Atom", "J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.lattvecs = null; +this.thisSub = 0; +this.modAxes = null; +this.haveM40Data = false; +this.qicount = 0; +this.molName = null; +this.molAtoms = null; +this.molTtypes = null; +this.modelMolecule = null; +this.molHasTLS = false; +this.matR = null; +this.rho = null; +this.firstPosition = false; +this.vR = null; +this.v0Cart = null; +this.isLegendre = false; +this.floats = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "JanaReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.floats = Clazz.newFloatArray (6, 0); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.modAxes = this.getFilter("MODAXES="); +this.setFractionalCoordinates(true); +this.asc.newAtomSet(); +this.asc.setCurrentModelInfo("autoBondUsingOccupation", Boolean.TRUE); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.length < 3) return true; +JU.Logger.info(this.line); +this.parseTokenStr(this.line); +switch ("tit cell ndim qi lat sym spg end wma".indexOf(this.line.substring(0, 3))) { +case 0: +this.asc.setAtomSetName(this.line.substring(5).trim()); +break; +case 5: +this.cell(); +this.setSymmetryOperator("x,y,z"); +break; +case 10: +this.ndim(); +break; +case 20: +if (this.lattvecs == null) this.lattvecs = new JU.Lst(); +if (!this.ms.addLatticeVector(this.lattvecs, this.line.substring(8))) this.appendLoadNote(this.line + " not supported"); +break; +case 30: +this.setSpaceGroupName(this.getTokens()[1]); +break; +case 25: +this.symmetry(); +break; +case 15: +this.qi(); +break; +case 35: +while (this.rd() != null) { +if (this.line.startsWith("command") || this.parseIntStr(this.line) >= 0) { +this.readM40Data(true); +break; +}} +this.continuing = false; +break; +case 40: +var n = 3 + this.modDim; +var m; +if (this.thisSub++ == 0) { +m = JU.Matrix.identity(n, n); +this.ms.addSubsystem("" + this.thisSub++, m); +}m = new JU.Matrix(null, n, n); +var a = m.getArray(); +var data = Clazz.newFloatArray (n * n, 0); +this.fillFloatArray(null, 0, data); +for (var i = 0, pt = 0; i < n; i++) for (var j = 0; j < n; j++, pt++) a[i][j] = data[pt]; + + +this.ms.addSubsystem("" + this.thisSub, m); +} +return true; +}); +Clazz.overrideMethod(c$, "doPreSymmetry", +function(){ +if (this.ms != null) this.ms.setModulation(false, null); +if (this.vibsFractional) this.asc.getXSymmetry().scaleFractionalVibs(); +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (!this.haveM40Data) this.readM40Data(false); +if (this.lattvecs != null && this.lattvecs.size() > 0) this.asc.getSymmetry().addLatticeVectors(this.lattvecs); +this.applySymmetryAndSetTrajectory(); +this.finalizeReaderASCR(); +}); +Clazz.overrideMethod(c$, "finalizeSubclassSymmetry", +function(haveSymmetry){ +this.adjustM40Occupancies(); +if (this.ms != null && haveSymmetry) { +this.ms.setModulation(true, this.asc.getXSymmetry().getBaseSymmetry()); +this.ms.finalizeModulation(); +}}, "~B"); +Clazz.defineMethod(c$, "cell", +function(){ +for (var ipt = 0; ipt < 6; ipt++) this.setUnitCellItem(ipt, this.parseFloat()); + +}); +Clazz.defineMethod(c$, "ndim", +function(){ +this.ms = J.api.Interface.getOption("adapter.readers.cif.MSRdr", this.vwr, "file"); +this.modDim = this.ms.initialize(this, (this.parseIntStr(this.getTokens()[1]) - 3)); +}); +Clazz.defineMethod(c$, "qi", +function(){ +var pt = Clazz.newDoubleArray (this.modDim, 0); +pt[this.qicount] = 1; +var a = Clazz.newDoubleArray(-1, [this.parseFloat(), this.parseFloat(), this.parseFloat()]); +this.parseTokenStr(this.rd()); +for (var i = 0; i < 3; i++) a[i] += this.parseFloat(); + +this.ms.addModulation(null, "W_" + (++this.qicount), a, -1); +this.ms.addModulation(null, "F_" + this.qicount + "_coefs_", pt, -1); +}); +Clazz.defineMethod(c$, "symmetry", +function(){ +this.setSymmetryOperator(JU.PT.rep(this.line.substring(9).trim(), " ", ",")); +}); +Clazz.defineMethod(c$, "readM40Data", +function(haveReader){ +if (haveReader) { +this.parseM40Floats(); +} else { +var m40File = this.filePath; +var ipt = m40File.lastIndexOf("."); +if (ipt < 0) return; +m40File = m40File.substring(0, ipt + 2) + "40"; +var id = m40File.substring(0, ipt); +this.reader.close(); +this.reader = JU.Rdr.getBR(this.vwr.getLigandModel(id, m40File, "_file", "----")); +if (this.out != null) this.out.append("******************************* M40 DATA *******************************\n"); +this.readM40Floats(); +}this.haveM40Data = true; +if (this.line.startsWith("command")) this.readM40WaveVectors(); +var nFree = 0; +var nGroups = 0; +var isAxial = false; +var newSub = (this.thisSub == 0 ? null : new JU.BS()); +var iSub = (this.thisSub == 0 ? 1 : this.thisSub); +for (var i = 0, n = 0, pt = 0; i < iSub; i++, pt += 10) { +nFree = this.getInt(pt, pt + 5); +nGroups = this.getInt(pt + 5, pt + 10); +isAxial = (this.getInt(pt + 15, pt + 20) == 1); +if (nGroups != 0 && i > 0) { +throw new Exception("Jmol cannot read rigid body M40 files for composites"); +}if (newSub != null) newSub.set(n = n + nFree); +} +iSub = (newSub == null ? 0 : 1); +var nAtoms = -1; +var refAtomName = null; +this.rho = null; +if (nGroups > 0) { +JU.Logger.info("JanaReader found " + nFree + " free atoms and " + nGroups + " groups"); +this.molName = null; +this.molAtoms = new JU.Lst(); +this.molTtypes = new JU.Lst(); +}while (this.skipToNextAtom() != null) { +nAtoms++; +var atom = new J.adapter.smarter.Atom(); +JU.Logger.info(this.line); +var name = this.line.substring(0, 9).trim(); +atom.atomName = name; +var isRefAtom = name.equals(refAtomName); +atom.foccupancy = this.floats[2]; +var isJanaMolecule = Float.isNaN(atom.foccupancy); +if (isJanaMolecule) { +var pointGroup = this.getStr(12, 18); +if (pointGroup.length > 0 && !pointGroup.equals("1")) { +throw new Exception("Jmol cannot process M40 files with molecule positions based on point-group symmetry."); +}refAtomName = null; +if (Float.isNaN(this.floats[4])) refAtomName = this.getStr(28, 37); + else this.rho = JU.P3.new3(this.floats[3], this.floats[4], this.floats[5]); +this.molName = name; +this.molAtoms.clear(); +this.molTtypes.clear(); +this.molHasTLS = false; +this.firstPosition = true; +this.modelMolecule = new JU.Lst(); +continue; +}var isExcluded = false; +var posName = (name.startsWith("pos#") ? name : null); +if (posName == null) { +if (!this.filterAtom(atom, 0)) { +if (!isRefAtom) continue; +isExcluded = true; +}this.setAtomCoordXYZ(atom, this.floats[3], this.floats[4], this.floats[5]); +if (isRefAtom) { +this.rho = JU.P3.newP(atom); +if (isExcluded) continue; +}this.asc.addAtom(atom); +if (iSub > 0) { +if (newSub.get(nAtoms)) iSub++; +atom.altLoc = ("" + iSub).charAt(0); +}this.readAtomRecord(atom, null, null, false); +if (this.molAtoms != null) this.molAtoms.addLast(atom); +} else { +if (this.molAtoms.size() == 0) continue; +this.processPosition(posName, atom, isAxial); +}} +}, "~B"); +Clazz.defineMethod(c$, "getInt", +function(col1, col2){ +var n = this.line.length; +return (n > col1 ? this.parseIntStr(this.getStr(col1, col2)) : 0); +}, "~N,~N"); +Clazz.defineMethod(c$, "getStr", +function(col1, col2){ +var n = this.line.length; +return (n > col1 ? this.line.substring(col1, Math.min(n, col2)).trim() : ""); +}, "~N,~N"); +Clazz.defineMethod(c$, "getFlag", +function(i){ +return (this.getInt(i, i + 1) > 0); +}, "~N"); +Clazz.defineMethod(c$, "skipToNextAtom", +function(){ +while (this.readM40Floats() != null && (this.line.length == 0 || this.line.charAt(0) == ' ' || this.line.charAt(0) == '-')) { +} +return this.line; +}); +Clazz.defineMethod(c$, "readM40WaveVectors", +function(){ +while (!this.readM40Floats().contains("end")) if (this.line.startsWith("wave")) { +var tokens = this.getTokens(); +var pt = Clazz.newDoubleArray (this.modDim, 0); +for (var i = 0; i < this.modDim; i++) pt[i] = this.parseFloatStr(tokens[i + 2]); + +this.ms.addModulation(null, "F_" + this.parseIntStr(tokens[1]) + "_coefs_", pt, -1); +} +this.readM40Floats(); +}); +Clazz.defineMethod(c$, "processPosition", +function(posName, pos, isAxial){ +pos.atomName = this.molName + "_" + posName; +var isImproper = (this.getInt(9, 11) == -1); +var systType = this.getInt(13, 14); +var rm = (systType == 0 ? null : new JU.P3()); +var rp = (systType == 0 ? null : new JU.P3()); +if (systType != 0) { +throw new Exception("Jmol can only read rigid body groups with basic crystallographic settings."); +}var rotData = this.readAtomRecord(pos, rm, rp, true); +var name = pos.atomName; +var n = this.molAtoms.size(); +JU.Logger.info(name + " Molecular group " + this.molName + " has " + n + " atoms"); +var ext = "_" + posName.substring(4); +var vTrans = JU.V3.new3(pos.anisoBorU[3], pos.anisoBorU[4], pos.anisoBorU[5]); +var phi = JU.Quat.newAA(JU.A4.newVA(JU.V3.new3(0, 0, 1), (pos.anisoBorU[0] / 180 * 3.141592653589793))); +var chi = JU.Quat.newAA(JU.A4.newVA(isAxial ? JU.V3.new3(0, 1, 0) : JU.V3.new3(1, 0, 0), (pos.anisoBorU[1] / 180 * 3.141592653589793))); +var psi = JU.Quat.newAA(JU.A4.newVA(isAxial ? JU.V3.new3(1, 0, 0) : JU.V3.new3(0, 0, 1), (pos.anisoBorU[2] / 180 * 3.141592653589793))); +this.matR = phi.mulQ(chi).mulQ(psi).getMatrix(); +if (isImproper) this.matR.scale(-1); +var script = ""; +for (var i = 0; i < n; i++) { +var a = this.molAtoms.get(i); +var newName = a.atomName; +script += ", " + newName; +if (this.firstPosition) { +newName += ext; +this.modelMolecule.addLast(JU.P3.newP(a)); +} else { +a = this.asc.newCloneAtom(a); +newName = newName.substring(0, newName.lastIndexOf("_")) + ext; +}a.atomName = newName; +var v0 = JU.V3.newVsub(this.modelMolecule.get(i), this.rho); +this.getSymmetry().toCartesian(this.v0Cart = JU.V3.newV(v0), true); +this.vR = JU.V3.newV(v0); +this.cartesianProduct(this.vR, null); +a.setT(this.rho); +a.add(vTrans); +a.add(this.vR); +this.copyModulations(";" + pos.atomName, ";" + newName); +if (rotData != null) this.setRigidBodyRotations(";" + newName, rotData); +} +this.firstPosition = false; +script = "@" + this.molName + ext + script.substring(1); +this.addJmolScript(script); +this.appendLoadNote(script); +}, "~S,J.adapter.smarter.Atom,~B"); +Clazz.defineMethod(c$, "cartesianProduct", +function(vA, vB){ +this.symmetry.toCartesian(vA, true); +if (vB == null) this.matR.rotate2(vA, vA); + else vA.cross(vA, vB); +this.symmetry.toFractional(vA, true); +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "readAtomRecord", +function(atom, rm, rp, isPos){ +var label = ";" + atom.atomName; +var tType = (isPos ? -1 : this.getInt(13, 14)); +if (!isPos && this.molTtypes != null) this.molTtypes.addLast(Integer.$valueOf(tType)); +var haveSpecialOcc = this.getFlag(60); +var haveSpecialDisp = this.getFlag(61); +var haveSpecialUij = this.getFlag(62); +var nOcc = this.getInt(65, 68); +var nDisp = this.getInt(68, 71); +var nUij = this.getInt(71, 74); +if (rm != null) { +this.readM40Floats(); +rm.set(this.floats[0], this.floats[1], this.floats[2]); +rp.set(this.floats[3], this.floats[4], this.floats[5]); +}if (tType > 2) this.readM40Floats(); +this.readM40Floats(); +switch (tType) { +case 6: +case 5: +case 4: +case 3: +this.readLines(tType - 1); +this.appendLoadNote("Skipping temperature factors with order > 2"); +case 2: +case -1: +for (var j = 0; j < 6; j++) this.asc.setU(atom, j, this.floats[j]); + +break; +case 1: +if (this.floats[0] != 0) this.asc.setU(atom, 7, this.floats[0]); +break; +case 0: +this.molHasTLS = true; +this.appendLoadNote("Jmol cannot process molecular TLS parameters"); +break; +} +if (this.modDim == 0) return null; +if (isPos && this.molHasTLS) this.readLines(4); +var pt; +var o_0 = (nOcc > 0 && !haveSpecialOcc ? this.parseFloatStr(this.rd()) : 1); +if (o_0 != 1) this.ms.addModulation(null, "J_O#0" + label, Clazz.newDoubleArray(-1, [atom.foccupancy, o_0, 0]), -1); +atom.foccupancy *= o_0; +var wv = 0; +var a1; +var a2; +this.isLegendre = false; +for (var j = 0; j < nOcc; j++) { +if (haveSpecialOcc) { +var data = this.readM40FloatLines(2, 1); +a2 = data[0][0]; +a1 = data[1][0]; +} else { +wv = j + 1; +this.readM40Floats(); +a1 = this.floats[0]; +a2 = this.floats[1]; +}pt = Clazz.newDoubleArray(-1, [a1, a2, 0]); +if (a1 != 0 || a2 != 0) this.ms.addModulation(null, "O_" + wv + "#0" + label, pt, -1); +} +for (var j = 0; j < nDisp; j++) { +if (haveSpecialDisp) { +this.readM40Floats(); +var c = this.floats[3]; +var w = this.floats[4]; +for (var k = 0; k < 3; k++) if (this.floats[k] != 0) this.ms.addModulation(null, "D_S#" + J.adapter.readers.xtal.JanaReader.XYZ[k] + label, Clazz.newDoubleArray(-1, [c, w, this.floats[k]]), -1); + +} else { +this.addSinCos(j, "D_", label, isPos); +}} +var rotData = (isPos && nDisp > 0 ? this.readM40FloatLines(nDisp, 6) : null); +if (!isPos) { +if (this.isLegendre) nUij *= 2; +for (var j = 0; j < nUij; j++) { +if (tType == 1) { +this.addSinCos(j, "U_", label, false); +} else { +if (haveSpecialUij) { +JU.Logger.error("JanaReader -- not interpreting SpecialUij flag: " + this.line); +} else if (this.isLegendre) { +var data = this.readM40FloatLines(1, 6); +var order = j + 1; +var coeff = 0; +for (var k = 0, p = 0; k < 6; k++, p += 3) { +if ((coeff = data[0][k]) != 0) this.ms.addModulation(null, "U_L" + order + "#" + "U11U22U33U12U13U23UISO".substring(p, p + 3) + label, Clazz.newDoubleArray(-1, [coeff, order, 0]), -1); +} +} else { +var data = this.readM40FloatLines(2, 6); +for (var k = 0, p = 0; k < 6; k++, p += 3) { +var csin = data[1][k]; +var ccos = data[0][k]; +this.ms.addModulation(null, "U_" + (j + 1) + "#" + "U11U22U33U12U13U23UISO".substring(p, p + 3) + label, Clazz.newDoubleArray(-1, [csin, ccos, 0]), -1); +} +}}} +}return rotData; +}, "J.adapter.smarter.Atom,JU.P3,JU.P3,~B"); +Clazz.defineMethod(c$, "addSinCos", +function(j, key, label, isPos){ +this.readM40Floats(); +if (this.isLegendre) { +for (var i = 0; i < 2; i++) { +var order = (j * 2 + i + 1); +for (var k = 0; k < 3; ++k) { +var coeff = this.floats[3 * i + k]; +if (coeff == 0) { +continue; +}var axis = J.adapter.readers.xtal.JanaReader.XYZ[k % 3]; +if (this.modAxes != null && this.modAxes.indexOf(axis.toUpperCase()) < 0) continue; +var id = key + "L#" + axis + order + label; +this.ms.addModulation(null, id, Clazz.newDoubleArray(-1, [coeff, order, 0]), -1); +} +} +return; +}this.ensureFourier(j); +for (var k = 0; k < 3; ++k) { +var csin = this.floats[k]; +var ccos = this.floats[k + 3]; +if (csin == 0 && ccos == 0) { +if (!isPos) continue; +csin = 1e-10; +}var axis = J.adapter.readers.xtal.JanaReader.XYZ[k % 3]; +if (this.modAxes != null && this.modAxes.indexOf(axis.toUpperCase()) < 0) continue; +var id = key + (j + 1) + "#" + axis + label; +this.ms.addModulation(null, id, Clazz.newDoubleArray(-1, [csin, ccos, 0]), -1); +} +}, "~N,~S,~S,~B"); +Clazz.defineMethod(c$, "ensureFourier", +function(j){ +var pt; +if (j > 0 && this.ms.getMod("F_" + (++j) + "_coefs_") == null && (pt = this.ms.getMod("F_1_coefs_")) != null) { +var p = Clazz.newDoubleArray (this.modDim, 0); +for (var i = this.modDim; --i >= 0; ) p[i] = pt[i] * j; + +this.ms.addModulation(null, "F_" + j + "_coefs_", p, -1); +}}, "~N"); +Clazz.defineMethod(c$, "readM40Floats", +function(){ +if ((this.line = this.rd()) == null || this.line.indexOf("-------") >= 0) return (this.line = null); +if (this.debugging) JU.Logger.debug(this.line); +this.parseM40Floats(); +return this.line; +}); +Clazz.defineMethod(c$, "parseM40Floats", +function(){ +var ptLast = this.line.length - 9; +for (var i = 0, pt = 0; i < 6; i++, pt += 9) { +this.floats[i] = (pt <= ptLast ? this.parseFloatStr(this.line.substring(pt, pt + 9)) : NaN); +} +}); +Clazz.defineMethod(c$, "readM40FloatLines", +function(nLines, nFloats){ +var data = Clazz.newFloatArray (nLines, nFloats, 0); +for (var i = 0; i < nLines; i++) { +this.readM40Floats(); +if (this.line.indexOf("Legendre") == 19) this.isLegendre = true; +for (var j = 0; j < nFloats; j++) data[i][j] = this.floats[j]; + +} +return data; +}, "~N,~N"); +Clazz.defineMethod(c$, "adjustM40Occupancies", +function(){ +var htSiteMult = new java.util.Hashtable(); +var atoms = this.asc.atoms; +var symmetry = this.asc.getSymmetry(); +for (var i = this.asc.ac; --i >= 0; ) { +var a = atoms[i]; +var ii = htSiteMult.get(a.atomName); +if (ii == null) htSiteMult.put(a.atomName, ii = Integer.$valueOf(symmetry.getSiteMultiplicity(a))); +a.foccupancy *= ii.intValue(); +} +}); +Clazz.defineMethod(c$, "copyModulations", +function(label, newLabel){ +var mapTemp = new java.util.Hashtable(); +for (var e, $e = this.ms.getModulationMap().entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +if (!key.contains(label)) continue; +key = JU.PT.rep(key, label, newLabel); +var val = e.getValue(); +switch ((key.charAt(0)).charCodeAt(0)) { +case 79: +this.setRigidBodyPhase(key, val = Clazz.newDoubleArray(-1, [val[0], val[1], 0])); +break; +case 68: +break; +case 85: +continue; +} +mapTemp.put(key, val); +} +for (var e, $e = mapTemp.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.ms.addModulation(null, e.getKey(), e.getValue(), -1); + +}, "~S,~S"); +Clazz.defineMethod(c$, "setRigidBodyPhase", +function(key, v){ +var isCenter = false; +switch ((this.ms.getModType(key)).charCodeAt(0)) { +case 111: +case 102: +case 117: +break; +case 99: +case 115: +isCenter = true; +break; +} +var nqDotD = 0; +var n = -1; +var qcoefs = this.ms.getQCoefs(key); +for (var i = this.modDim; --i >= 0; ) { +if (qcoefs[i] != 0) { +n = qcoefs[i]; +var q = this.ms.getMod("W_" + (i + 1)); +nqDotD = n * (q[0] * this.vR.x + q[1] * this.vR.y + q[2] * this.vR.z); +break; +}} +if (isCenter) { +v[0] += nqDotD; +} else { +var sA = v[0]; +var cA = v[1]; +var sX = Math.sin(2 * 3.141592653589793 * nqDotD); +var cX = Math.cos(2 * 3.141592653589793 * nqDotD); +v[0] = sA * cX + cA * sX; +v[1] = -sA * sX + cA * cX; +}return v; +}, "~S,~A"); +Clazz.defineMethod(c$, "setRigidBodyRotations", +function(label, params){ +var n = params.length; +for (var i = 0; i < n; i++) { +this.ensureFourier(i); +var key = "D_" + (i + 1); +var data = params[i]; +var vsin = JU.V3.new3(data[0], data[1], data[2]); +var vcos = JU.V3.new3(data[3], data[4], data[5]); +this.cartesianProduct(vcos, this.v0Cart); +this.cartesianProduct(vsin, this.v0Cart); +var keyx = key + "#x" + label; +var keyy = key + "#y" + label; +var keyz = key + "#z" + label; +var vx = this.combineModulation(keyx, vsin.x, vcos.x); +var vy = this.combineModulation(keyy, vsin.y, vcos.y); +var vz = this.combineModulation(keyz, vsin.z, vcos.z); +vsin.set(vx[0], vy[0], vz[0]); +vcos.set(vx[1], vy[1], vz[1]); +this.cartesianProduct(vsin, null); +this.cartesianProduct(vcos, null); +this.setMolecularModulation(keyx, vsin.x, vcos.x); +this.setMolecularModulation(keyy, vsin.y, vcos.y); +this.setMolecularModulation(keyz, vsin.z, vcos.z); +} +}, "~S,~A"); +Clazz.defineMethod(c$, "combineModulation", +function(key, csin, ccos){ +var v = this.ms.getMod(key); +return Clazz.newDoubleArray(-1, [v[0] + csin, v[1] + ccos, 0]); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "setMolecularModulation", +function(key, csin, ccos){ +this.ms.addModulation(null, key, this.setRigidBodyPhase(key, Clazz.newDoubleArray(-1, [csin, ccos, 0])), -1); +}, "~S,~N,~N"); +c$.XYZ = Clazz.newArray(-1, ["x", "y", "z"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/MagresReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/MagresReader.js new file mode 100755 index 000000000000..ad44ea811a89 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/MagresReader.js @@ -0,0 +1,178 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "java.util.Hashtable", "JU.Lst", "$.SB"], "J.adapter.readers.xtal.MagresReader", ["JU.PT", "J.adapter.smarter.Atom", "JU.Escape", "$.Logger", "$.Tensor"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.currentBlock = -1; +this.cellParams = null; +this.magresUnits = null; +this.interactionTensors = null; +this.header = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "MagresReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.magresUnits = new java.util.Hashtable(); +this.interactionTensors = new JU.Lst(); +this.header = new JU.SB(); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setFractionalCoordinates(false); +this.ignoreFileSpaceGroupName = true; +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.asc.setInfo("fileHeader", this.header.toString()); +this.finalizeReaderASCR(); +if (this.interactionTensors.size() > 0) this.asc.setCurrentModelInfo("interactionTensors", this.interactionTensors); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (!this.trimLine()) return true; +switch (this.checkBlock()) { +case 0: +this.header.append(this.line).append("\n"); +this.appendLoadNote(this.line); +break; +case 1: +if (this.cellParams == null && this.line.startsWith("lattice")) return this.readCellParams(); +if (this.line.startsWith("symmetry")) return this.readSymmetry(); +if (this.line.startsWith("units")) return this.setUnits(false); +if (this.line.startsWith("atom")) return this.readAtom(); +break; +case 2: +if (this.line.startsWith("units")) return this.setUnits(true); +return this.readTensor(); +} +return true; +}); +Clazz.defineMethod(c$, "trimLine", +function(){ +var pt = this.line.indexOf("#"); +if (pt >= 0) this.line = this.line.substring(0, pt); +this.line = this.line.trim(); +return (this.line.length > 0); +}); +Clazz.defineMethod(c$, "checkBlock", +function(){ +if (!(this.line.startsWith("<") && this.line.endsWith(">")) && !(this.line.startsWith("[") && this.line.endsWith("]"))) return this.currentBlock; +this.line = JU.PT.rep(this.line, "<", "["); +this.line = JU.PT.rep(this.line, ">", "]"); +switch (Clazz.doubleToInt(("...............[calculation]..[/calculation].[atoms]........[/atoms].......[magres].......[/magres]......").indexOf(this.line + ".") / 15)) { +case 0: +JU.Logger.info("block indicator ignored: " + this.line); +break; +case 1: +if (this.currentBlock == -1) this.currentBlock = 0; +break; +case 2: +if (this.currentBlock == 0) this.currentBlock = -1; +break; +case 3: +if (this.currentBlock == -1) { +this.currentBlock = 1; +this.asc.newAtomSet(); +this.magresUnits = new java.util.Hashtable(); +}break; +case 4: +if (this.currentBlock == 1) this.currentBlock = -1; +break; +case 5: +if (this.currentBlock == -1) { +this.currentBlock = 2; +this.magresUnits = new java.util.Hashtable(); +this.asc.setCurrentModelInfo("magresUnits", this.magresUnits); +}break; +case 6: +if (this.currentBlock == 2) this.currentBlock = -1; +break; +} +return -2; +}); +Clazz.defineMethod(c$, "setUnits", +function(isMagresBlock){ +var tokens = this.getTokens(); +var id = tokens[1]; +if (isMagresBlock) this.appendLoadNote("Ellipsoid set " + JU.PT.esc(id) + ": " + (id.startsWith("ms") ? "Magnetic Shielding" : id.startsWith("efg") ? "Electric Field Gradient" : id.startsWith("isc") ? "J-Coupling" : "?")); +this.magresUnits.put(id, tokens[2]); +return true; +}, "~B"); +Clazz.defineMethod(c$, "readSymmetry", +function(){ +this.setSymmetryOperator(this.getTokens()[1]); +return true; +}); +Clazz.defineMethod(c$, "readCellParams", +function(){ +var tokens = this.getTokens(); +this.cellParams = Clazz.newFloatArray (9, 0); +for (var i = 0; i < 9; i++) this.cellParams[i] = this.parseFloatStr(tokens[i + 1]); + +this.addExplicitLatticeVector(0, this.cellParams, 0); +this.addExplicitLatticeVector(1, this.cellParams, 3); +this.addExplicitLatticeVector(2, this.cellParams, 6); +this.setSpaceGroupName("P1"); +return true; +}); +Clazz.defineMethod(c$, "readAtom", +function(){ +var units = this.magresUnits.get("atom"); +if (units == null) return true; +var f = (units.startsWith("A") ? 1 : 0.5291772); +var tokens = this.getTokens(); +var atom = new J.adapter.smarter.Atom(); +var pt = 1; +atom.elementSymbol = tokens[pt++]; +atom.atomName = J.adapter.readers.xtal.MagresReader.getAtomName(tokens[pt++], tokens[pt++]); +this.asc.addAtomWithMappedName(atom); +var x = this.parseFloatStr(tokens[pt++]) * f; +var y = this.parseFloatStr(tokens[pt++]) * f; +var z = this.parseFloatStr(tokens[pt++]) * f; +atom.set(x, y, z); +this.setAtomCoord(atom); +return true; +}); +c$.getAtomName = Clazz.defineMethod(c$, "getAtomName", +function(name, index){ +return name + "_" + index; +}, "~S,~S"); +Clazz.defineMethod(c$, "readTensor", +function(){ +var tokens = this.getTokens(); +var type = tokens[0]; +var units = this.magresUnits.get(type); +if (units == null) { +JU.Logger.warn(type + " ignored; no units defined; line: " + this.line); +return true; +}var isIsc = type.startsWith("isc"); +if (tokens.length == 10) { +this.magresUnits.remove(type); +var data = Clazz.newFloatArray (9, 0); +for (var i = 0; i < 9; ) data[i] = this.parseFloatStr(tokens[++i]); + +JU.Logger.info("Magres reader creating magres_" + type + ": " + JU.Escape.eAF(data)); +this.asc.setCurrentModelInfo("magres_" + type, data); +}var atomName1 = J.adapter.readers.xtal.MagresReader.getAtomName(tokens[1], tokens[2]); +var pt = 3; +var atomName2 = (isIsc ? J.adapter.readers.xtal.MagresReader.getAtomName(tokens[pt++], tokens[pt++]) : null); +if (atomName1.equals(atomName2)) { +JU.Logger.warn(type + " ignored; atom1 == atom2 for " + atomName1 + " line: " + this.line); +return true; +}var id = atomName1; +if (atomName2 != null) id += "//" + atomName2; +var a = Clazz.newDoubleArray (3, 3, 0); +for (var i = 0; i < 3; i++) for (var j = 0; j < 3; j++) a[i][j] = Double.$valueOf(tokens[pt++]).doubleValue(); + + +var a1 = this.asc.getAtomFromName(atomName1); +if (a1 == null) return true; +var a2 = null; +var t = new JU.Tensor().setFromAsymmetricTensor(a, type, id); +if (atomName2 == null) { +a1.addTensor(t, null, false); +} else { +a2 = this.asc.getAtomFromName(atomName2); +if (a2 == null) return true; +this.interactionTensors.addLast(t); +}t.setAtomIndexes(a1.index, (a2 == null ? -1 : a2.index)); +return true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/OptimadeReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/OptimadeReader.js new file mode 100755 index 000000000000..ba32584c7d70 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/OptimadeReader.js @@ -0,0 +1,181 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.OptimadeReader", ["java.util.HashMap", "JU.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modelNo = 0; +this.iHaveDesiredModel = false; +this.permutation = 0; +this.isPolymer = false; +this.isSlab = false; +this.noSlab = false; +this.xyz = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "OptimadeReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.xyz = Clazz.newFloatArray (3, 0); +}); +Clazz.defineMethod(c$, "initializeReader", +function(){ +Clazz.superCall(this, J.adapter.readers.xtal.OptimadeReader, "initializeReader", []); +this.noSlab = this.checkFilterKey("NOSLAB"); +try { +var strJSON = this.htParams.get("fileData"); +if (strJSON == null) { +var sb = new JU.SB(); +while (this.rd() != null) sb.append(this.line); + +strJSON = sb.toString(); +this.line = null; +}var aData = null; +if (strJSON.startsWith("[")) { +var data = this.vwr.parseJSONArray(strJSON); +for (var i = 0; i < data.size(); i++) { +if (Clazz.instanceOf(data.get(i),"java.util.Map")) { +aData = (data.get(i)).get("data"); +if (aData != null) { +break; +}}} +} else { +aData = this.vwr.parseJSONMap(strJSON).get("data"); +}if (aData != null) { +for (var i = 0; !this.iHaveDesiredModel && i < aData.size(); i++) { +var data = aData.get(i); +if ("structures".equals(data.get("type"))) { +this.readModel(data.get("attributes")); +}} +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +this.continuing = false; +}); +Clazz.defineMethod(c$, "readModel", +function(map){ +if (!this.doGetModel(this.modelNumber = ++this.modelNo, null)) return; +this.iHaveDesiredModel = this.isLastModel(this.modelNumber); +this.applySymmetryAndSetTrajectory(); +this.asc.newAtomSet(); +this.setFractionalCoordinates(false); +var dimensionType = Clazz.newFloatArray (3, 0); +if (J.adapter.readers.xtal.OptimadeReader.toFloatArray(map.get("dimension_types"), dimensionType)) { +this.checkDimensionType(dimensionType); +}if (!this.isMolecular) { +this.setSpaceGroupName("P1"); +this.asc.setInfo("symmetryType", (this.isSlab ? "2D - SLAB" : this.isPolymer ? "1D - POLYMER" : "3D")); +}this.asc.setAtomSetName(map.get("chemical_formula_descriptive")); +this.doConvertToFractional = (!this.isMolecular && this.readLattice(map.get("lattice_vectors"))); +this.readAtoms(map.get("species"), map.get("species_at_sites"), map.get("cartesian_site_positions")); +}, "java.util.Map"); +Clazz.defineMethod(c$, "checkDimensionType", +function(dt){ +this.isPolymer = this.isSlab = this.isMolecular = false; +if (this.noSlab) return; +this.permutation = 0; +switch (Clazz.floatToInt(dt[2] + dt[1] * 2 + dt[0] * 4)) { +default: +case 0: +this.isMolecular = true; +break; +case 1: +this.isPolymer = true; +this.permutation = 1; +break; +case 2: +this.isPolymer = true; +this.permutation = 2; +break; +case 3: +this.isSlab = true; +this.permutation = 2; +break; +case 5: +this.isSlab = true; +this.permutation = 1; +break; +case 4: +this.isPolymer = true; +break; +case 6: +this.isSlab = true; +break; +case 7: +break; +} +}, "~A"); +Clazz.defineMethod(c$, "readLattice", +function(lattice){ +if (lattice == null) return false; +var abc = Clazz.newFloatArray (3, 0); +for (var i = 0; i < 3; i++) { +if (!J.adapter.readers.xtal.OptimadeReader.toFloatArray(lattice.get(i), this.xyz)) { +return false; +}this.unitCellParams[0] = NaN; +if (this.isSlab || this.isPolymer) { +abc[i] = Math.sqrt(this.xyz[0] * this.xyz[0] + this.xyz[1] * this.xyz[1] + this.xyz[2] * this.xyz[2]); +if (abc[i] >= 500) { +this.xyz[0] /= abc[i]; +this.xyz[1] /= abc[i]; +this.xyz[2] /= abc[i]; +}}if (this.isSlab || this.isPolymer) this.unitCellParams[0] = 0; +if (i == 2) { +if (this.isSlab || this.isPolymer) { +this.unitCellParams[0] = abc[this.permutation]; +if (this.isSlab) this.unitCellParams[1] = abc[(this.permutation + 1) % 3]; +}}this.addExplicitLatticeVector((i + this.permutation) % 3, this.xyz, 0); +} +this.doApplySymmetry = true; +return true; +}, "java.util.List"); +Clazz.defineMethod(c$, "readAtoms", +function(species, sites, coords){ +var natoms = sites.size(); +var speciesByName = null; +if (species == null) { +JU.Logger.error("OptimadeReader - no 'species' key"); +} else { +speciesByName = new java.util.HashMap(); +for (var i = species.size(); --i >= 0; ) { +var s = species.get(i); +speciesByName.put(s.get("name"), s); +} +}for (var i = 0; i < natoms; i++) { +var sname = sites.get(i); +J.adapter.readers.xtal.OptimadeReader.toFloatArray(coords.get(i), this.xyz); +if (species == null) { +this.addAtom(this.xyz, sites.get(i), sname); +} else { +var sp = speciesByName.get(sname); +var syms = sp.get("chemical_symbols"); +var nOcc = syms.size(); +if (nOcc > 1) { +var conc = Clazz.newFloatArray (nOcc, 0); +if (J.adapter.readers.xtal.OptimadeReader.toFloatArray(sp.get("concentration"), conc)) { +for (var j = 0; j < conc.length; j++) { +var a = this.addAtom(this.xyz, syms.get(j), sname); +a.foccupancy = conc[j]; +} +continue; +}}this.addAtom(this.xyz, syms.get(0), sname); +}} +}, "java.util.List,java.util.List,java.util.List"); +Clazz.defineMethod(c$, "addAtom", +function(xyz, sym, name){ +var atom = this.asc.addNewAtom(); +if (sym != null) atom.elementSymbol = sym; +if (name != null) atom.atomName = name; +this.setAtomCoordXYZ(atom, xyz[0], xyz[1], xyz[2]); +return atom; +}, "~A,~S,~S"); +c$.toFloatArray = Clazz.defineMethod(c$, "toFloatArray", +function(list, a){ +if (list == null) return false; +for (var i = a.length; --i >= 0; ) { +var d = list.get(i); +if (d == null) return false; +a[i] = list.get(i).floatValue(); +} +return true; +}, "java.util.List,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/PWmatReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/PWmatReader.js new file mode 100755 index 000000000000..04924dc04704 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/PWmatReader.js @@ -0,0 +1,214 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.PWmatReader", ["java.util.Hashtable", "JU.Lst", "$.PT", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nAtoms = 0; +this.haveLattice = false; +this.havePositions = false; +this.haveMagnetic = false; +this.global3 = ";STRESS_MASK;STRESS_EXTERNAL;PTENSOR_EXTERNAL;"; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "PWmatReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.readers.xtal.PWmatReader, []); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.doApplySymmetry = true; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.nAtoms == 0) { +this.readComments(); +this.setSpaceGroupName("P1"); +this.nAtoms = JU.PT.parseInt(this.line); +this.setFractionalCoordinates(true); +return true; +}this.removeComments(); +var lc = this.line.toLowerCase().trim(); +if (lc.length == 0) return true; +if (!this.haveLattice) { +if (lc.startsWith("lattice")) { +this.readUnitCell(); +this.haveLattice = true; +}return true; +}if (!this.havePositions) { +if (lc.startsWith("position")) { +this.readCoordinates(); +this.havePositions = true; +}return true; +}if (!this.readDataBlock(lc)) { +this.continuing = false; +}return true; +}); +Clazz.defineMethod(c$, "readComments", +function(){ +}); +Clazz.defineMethod(c$, "readUnitCell", +function(){ +var unitCellData = Clazz.newFloatArray (3, 0); +this.addExplicitLatticeVector(0, this.fillFloatArray(this.getLine(), 0, unitCellData), 0); +this.addExplicitLatticeVector(1, this.fillFloatArray(this.getLine(), 0, unitCellData), 0); +this.addExplicitLatticeVector(2, this.fillFloatArray(this.getLine(), 0, unitCellData), 0); +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +var constraints = new JU.Lst(); +var haveConstraints = true; +var i = 0; +while (i++ < this.nAtoms && this.getLine() != null) { +var tokens = this.getTokens(); +var z = Integer.parseInt(tokens[0]); +this.addAtomXYZSymName(tokens, 1, J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(z), null).elementNumber = z; +haveConstraints = (tokens.length >= 7) && haveConstraints; +if (haveConstraints) constraints.addLast( Clazz.newFloatArray(-1, [Float.parseFloat(tokens[4]), Float.parseFloat(tokens[5]), Float.parseFloat(tokens[6])])); +} +var cx = Clazz.newFloatArray (this.nAtoms, 0); +var cy = Clazz.newFloatArray (this.nAtoms, 0); +var cz = Clazz.newFloatArray (this.nAtoms, 0); +var c = Clazz.newFloatArray(-1, [1, 1, 1]); +for (i = this.nAtoms; --i >= 0; ) { +if (haveConstraints) c = constraints.get(i); +cx[i] = c[0]; +cy[i] = c[1]; +cz[i] = c[2]; +} +this.setVectors("constraints", cx, cy, cz, this.nAtoms); +}); +Clazz.defineMethod(c$, "readDataBlock", +function(name){ +name = this.trimPWPropertyNameTo(name, " ([,"); +this.getLine(); +if (this.line == null) return false; +var tokens = this.getTokens(); +switch (tokens.length) { +case 1: +case 2: +case 3: +this.readItems(name, tokens.length - 1, null); +return true; +case 4: +this.readVectors(name, 1, true); +return true; +default: +JU.Logger.error("PWmatReader block " + name.toUpperCase() + " ignored"); +return false; +} +}, "~S"); +Clazz.defineMethod(c$, "trimPWPropertyNameTo", +function(name, chars){ +for (var i = chars.length; --i >= 0; ) { +var pt = name.indexOf(chars.charAt(i)); +if (pt > 0) name = name.substring(0, pt); +} +return name; +}, "~S,~S"); +Clazz.defineMethod(c$, "readItems", +function(name, offset, values){ +if (name.equalsIgnoreCase("magnetic")) this.haveMagnetic = true; +var isGlobal = JU.PT.isOneOf(name.toUpperCase(), this.global3); +if (isGlobal) { +var lines = new Array(3); +lines[0] = this.line; +lines[1] = this.getLine(); +lines[2] = this.getLine(); +var info = this.asc.getAtomSetAuxiliaryInfo(0); +var data = info.get("globalPWmatData"); +if (data == null) info.put("globalPWmatData", data = new java.util.Hashtable()); +data.put(name, lines); +} else { +name = "pwm_" + name; +if (values == null) { +values = Clazz.newFloatArray (this.nAtoms, 0); +} else { +this.getLine(); +}var n = 0; +for (var i = 0; ; ) { +var tokens = this.getTokens(); +if ((values[i] = Float.parseFloat(tokens[offset])) != 0) n++; +if (++i == this.nAtoms) break; +this.getLine(); +} +this.setProperties(name, values, n); +}}, "~S,~N,~A"); +Clazz.defineMethod(c$, "setProperties", +function(name, values, n){ +this.asc.setAtomProperties(name, values, this.asc.iSet, false); +JU.Logger.info("PWmatReader: " + name.toUpperCase() + " processed for " + n + " atoms"); +this.appendLoadNote("PWmatReader read property_" + name); +}, "~S,~A,~N"); +Clazz.defineMethod(c$, "readVectors", +function(name, offset, haveLine){ +if (!haveLine) this.getLine(); +var valuesX = Clazz.newFloatArray (this.nAtoms, 0); +var valuesY = Clazz.newFloatArray (this.nAtoms, 0); +var valuesZ = Clazz.newFloatArray (this.nAtoms, 0); +var n = 0; +for (var i = 0; ; ) { +var tokens = this.getTokens(); +if ((((valuesX[i] = Float.parseFloat(tokens[offset])) == 0 ? 0 : 1) | ((valuesY[i] = Float.parseFloat(tokens[offset + 1])) == 0 ? 0 : 1) | ((valuesZ[i] = Float.parseFloat(tokens[offset + 2])) == 0 ? 0 : 1)) != 0) n++; +if (++i == this.nAtoms) break; +this.getLine(); +} +this.setVectors(name, valuesX, valuesY, valuesZ, n); +}, "~S,~N,~B"); +Clazz.defineMethod(c$, "getLine", +function(){ +this.rd(); +return this.removeComments(); +}); +Clazz.defineMethod(c$, "removeComments", +function(){ +if (this.line != null) { +var pt = this.line.indexOf("#"); +if (pt >= 0) { +this.line = this.line.substring(0, pt).trim(); +}}return this.line; +}); +Clazz.defineMethod(c$, "setVectors", +function(name, valuesX, valuesY, valuesZ, n){ +name = "pwm_" + name; +this.asc.setAtomProperties(name + "_x", valuesX, this.asc.iSet, false); +this.asc.setAtomProperties(name + "_y", valuesY, this.asc.iSet, false); +this.asc.setAtomProperties(name + "_z", valuesZ, this.asc.iSet, false); +JU.Logger.info("PWmatReader: " + name.toUpperCase() + " processed for " + n + " atoms"); +this.appendLoadNote("PWmatReader read property_" + name + "_x"); +this.appendLoadNote("PWmatReader read property_" + name + "_y"); +this.appendLoadNote("PWmatReader read property_" + name + "_z"); +if (name.equals("pwm_magnetic_xyz")) { +for (var i = 0; i < this.nAtoms; i++) { +this.asc.addVibrationVector(i, valuesX[i], valuesY[i], valuesZ[i]); +} +this.addJmolScript("vectors 0.2;set vectorscentered"); +}}, "~S,~A,~A,~A,~N"); +Clazz.defineMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +Clazz.superCall(this, J.adapter.readers.xtal.PWmatReader, "applySymmetryAndSetTrajectory", []); +if (this.nAtoms != this.asc.ac) { +this.nAtoms = this.asc.ac; +var p = this.asc.getAtomSetAuxiliaryInfoValue(this.asc.iSet, "atomProperties"); +if (p != null) { +var atoms = this.asc.atoms; +var n = (this.asc.bsAtoms == null ? this.nAtoms : this.asc.bsAtoms.cardinality()); +var map = (n == this.nAtoms ? null : Clazz.newIntArray (this.nAtoms, 0)); +if (map != null) { +for (var j = 0, k = 0; j < this.nAtoms; j++) { +if (this.asc.bsAtoms.get(j)) map[j] = k++; +} +}for (var e, $e = p.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +if (key.startsWith("pwm_")) { +var af = e.getValue(); +var af2 = Clazz.newFloatArray (n, 0); +for (var j = 0; j < this.nAtoms; j++) { +af2[map == null ? j : map[j]] = af[atoms[j].atomSite]; +} +e.setValue(af2); +}} +}}}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (!this.haveMagnetic && this.asc.ac > 0) { +this.setProperties("pwm_magnetic", Clazz.newFloatArray (this.asc.ac, 0), this.nAtoms); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/ShelxReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/ShelxReader.js new file mode 100755 index 000000000000..509eead87b4d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/ShelxReader.js @@ -0,0 +1,226 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.ShelxReader", ["JU.AU", "$.PT", "J.adapter.smarter.Atom", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sfacElementSymbols = null; +this.isCmdf = false; +this.tokens = null; +this.altloc = '\0'; +this.isCentroSymmetric = false; +this.haveXYZ = false; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "ShelxReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setFractionalCoordinates(true); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +var lineLength; +while ((lineLength = (this.line = this.line.trim()).length) > 0 && this.line.charAt(lineLength - 1) == '=') this.line = this.line.substring(0, lineLength - 1) + this.rd(); + +this.tokens = this.getTokens(); +if (this.tokens.length == 0) return true; +var command = this.tokens[0].toUpperCase(); +if (command.equals("TITL")) { +if (!this.doGetModel(++this.modelNumber, null)) return this.checkLastModel(); +this.sfacElementSymbols = null; +this.applySymmetryAndSetTrajectory(); +this.setFractionalCoordinates(true); +this.asc.newAtomSet(); +this.asc.setAtomSetName(this.line.substring(4).trim()); +return true; +}if (command.equals("NOTE")) { +this.isCmdf = true; +return true; +}if (!this.doProcessLines || lineLength < 3) return true; +if (";ZERR;DISP;UNIT;LAUE;REM;MORE;TIME;HKLF;OMIT;SHEL;BASF;TWIN;EXTI;SWAT;HOPE;MERG;SPEC;RESI;MOVE;ANIS;AFIX;HFIX;FRAG;FEND;EXYZ;EXTI;EADP;EQIV;CONN;BIND;FREE;DFIX;DANG;BUMP;SAME;SADI;CHIV;FLAT;DELU;SIMU;DEFS;ISOR;NCSY;SUMP;L.S.;CGLS;BLOC;DAMP;STIR;WGHT;FVAR;BOND;CONF;MPLA;RTAB;HTAB;LIST;ACTA;SIZE;TEMP;WPDB;FMAP;GRID;PLAN;MOLE;".indexOf(";" + command + ";") >= 0) return true; +for (var i = J.adapter.readers.xtal.ShelxReader.supportedRecordTypes.length; --i >= 0; ) if (command.equals(J.adapter.readers.xtal.ShelxReader.supportedRecordTypes[i])) { +this.processSupportedRecord(i); +return true; +} +if (!this.isCmdf) this.assumeAtomRecord(); +return true; +}); +Clazz.defineMethod(c$, "processSupportedRecord", +function(recordIndex){ +switch (recordIndex) { +case 0: +case 9: +break; +case 1: +this.cell(); +break; +case 2: +this.setSpaceGroupName(JU.PT.parseTrimmedAt(this.line, 4)); +break; +case 3: +this.parseSfacRecord(); +break; +case 4: +this.parseLattRecord(); +break; +case 5: +this.parseSymmRecord(); +break; +case 6: +this.isCmdf = true; +break; +case 7: +this.isCmdf = true; +this.processCmdfAtoms(); +break; +case 8: +this.processPartRecord(); +break; +} +}, "~N"); +Clazz.defineMethod(c$, "processPartRecord", +function(){ +var part = this.parseIntStr(this.tokens[1]); +this.altloc = String.fromCharCode(part == 0 ? 0 : 48 + part); +}); +Clazz.defineMethod(c$, "parseLattRecord", +function(){ +var latt = this.parseIntStr(this.tokens[1]); +this.isCentroSymmetric = (latt > 0); +if (latt == 1 || latt == -1) return; +this.asc.getXSymmetry().setLatticeParameter(latt); +}); +Clazz.defineMethod(c$, "parseSymmRecord", +function(){ +if (!this.haveXYZ) { +this.setSymmetryOperator("x,y,z"); +this.haveXYZ = true; +}this.setSymmetryOperator(this.line.substring(4).trim()); +}); +Clazz.defineMethod(c$, "cell", +function(){ +var ioff = this.tokens.length - 6; +if (ioff == 2) this.asc.setInfo("wavelength", Float.$valueOf(this.parseFloatStr(this.tokens[1]))); +for (var ipt = 0; ipt < 6; ipt++) this.setUnitCellItem(ipt, this.parseFloatStr(this.tokens[ipt + ioff])); + +}); +Clazz.defineMethod(c$, "parseSfacRecord", +function(){ +var allElementSymbols = true; +for (var i = this.tokens.length; allElementSymbols && --i >= 1; ) { +var token = this.tokens[i]; +allElementSymbols = J.adapter.readers.xtal.ShelxReader.isValidElementSymbolNoCaseSecondChar(token); +} +var sfacTokens = JU.PT.getTokens(this.line.substring(4)); +if (allElementSymbols) this.parseSfacElementSymbols(sfacTokens); + else this.parseSfacCoefficients(sfacTokens); +}); +Clazz.defineMethod(c$, "parseSfacElementSymbols", +function(sfacTokens){ +if (this.sfacElementSymbols == null) { +this.sfacElementSymbols = sfacTokens; +} else { +var oldCount = this.sfacElementSymbols.length; +var tokenCount = sfacTokens.length; +this.sfacElementSymbols = JU.AU.arrayCopyS(this.sfacElementSymbols, oldCount + tokenCount); +for (var i = tokenCount; --i >= 0; ) this.sfacElementSymbols[oldCount + i] = sfacTokens[i]; + +}}, "~A"); +Clazz.defineMethod(c$, "parseSfacCoefficients", +function(sfacTokens){ +var a1 = this.parseFloatStr(sfacTokens[1]); +var a2 = this.parseFloatStr(sfacTokens[3]); +var a3 = this.parseFloatStr(sfacTokens[5]); +var a4 = this.parseFloatStr(sfacTokens[7]); +var c = this.parseFloatStr(sfacTokens[9]); +var z = Math.round(a1 + a2 + a3 + a4 + c); +var elementSymbol = J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(z); +var oldCount = 0; +if (this.sfacElementSymbols == null) { +this.sfacElementSymbols = new Array(1); +} else { +oldCount = this.sfacElementSymbols.length; +this.sfacElementSymbols = JU.AU.arrayCopyS(this.sfacElementSymbols, oldCount + 1); +this.sfacElementSymbols[oldCount] = elementSymbol; +}this.sfacElementSymbols[oldCount] = elementSymbol; +}, "~A"); +Clazz.defineMethod(c$, "assumeAtomRecord", +function(){ +var x = NaN; +var y = NaN; +var z = NaN; +var occ = 1; +var elementIndex = -1; +var atomName = null; +try { +atomName = this.tokens[0]; +elementIndex = this.parseIntStr(this.tokens[1]) - 1; +x = this.parseFloatStr(this.tokens[2]) % 10; +y = this.parseFloatStr(this.tokens[3]) % 10; +z = this.parseFloatStr(this.tokens[4]) % 10; +occ = this.parseFloatStr(this.tokens[5]) % 10; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) { +JU.Logger.error("skipping line " + this.line); +return; +}var atom = this.asc.addNewAtom(); +atom.atomName = atomName; +atom.foccupancy = occ; +var isQPeak = atomName.startsWith("Q"); +if (isQPeak) { +atom.elementSymbol = "Xx"; +} else if (this.sfacElementSymbols != null && elementIndex >= 0 && elementIndex < this.sfacElementSymbols.length) { +atom.elementSymbol = this.sfacElementSymbols[elementIndex]; +}this.setAtomCoordXYZ(atom, x, y, z); +atom.altLoc = this.altloc; +if (this.tokens.length == 12) { +var data = Clazz.newFloatArray (8, 0); +data[0] = this.parseFloatStr(this.tokens[6]); +data[1] = this.parseFloatStr(this.tokens[7]); +data[2] = this.parseFloatStr(this.tokens[8]); +data[3] = this.parseFloatStr(this.tokens[11]); +data[4] = this.parseFloatStr(this.tokens[10]); +data[5] = this.parseFloatStr(this.tokens[9]); +for (var i = 0; i < 6; i++) if (Float.isNaN(data[i])) { +JU.Logger.error("Bad anisotropic Uij data: " + this.line); +return; +} +this.asc.setAnisoBorU(atom, data, 8); +}}); +Clazz.defineMethod(c$, "processCmdfAtoms", +function(){ +while (this.rd() != null && this.line.length > 10) { +this.tokens = this.getTokens(); +this.addAtomXYZSymName(this.tokens, 2, this.getSymbol(this.tokens[0]), this.tokens[1]); +} +}); +Clazz.defineMethod(c$, "getSymbol", +function(sym){ +if (sym == null) return "Xx"; +var len = sym.length; +if (len < 2) return sym; +var ch1 = sym.charAt(1); +if (ch1 >= 'a' && ch1 <= 'z') return sym.substring(0, 2); +return "" + sym.charAt(0); +}, "~S"); +c$.isValidElementSymbolNoCaseSecondChar = Clazz.defineMethod(c$, "isValidElementSymbolNoCaseSecondChar", +function(str){ +if (str == null) return false; +var length = str.length; +if (length == 0) return false; +var chFirst = str.charAt(0); +if (length == 1) return J.adapter.smarter.Atom.isValidSym1(chFirst); +if (length > 2) return false; +var chSecond = str.charAt(1); +return J.adapter.smarter.Atom.isValidSymNoCase(chFirst, chSecond); +}, "~S"); +Clazz.overrideMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +if (this.isCentroSymmetric && !this.ignoreFileSymmetryOperators) { +this.asc.getXSymmetry().getSymmetry().addInversion(); +this.isCentroSymmetric = false; +}this.applySymTrajASCR(); +}); +c$.supportedRecordTypes = Clazz.newArray(-1, ["TITL", "CELL", "SPGR", "SFAC", "LATT", "SYMM", "NOTE", "ATOM", "PART", "END"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/SiestaReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/SiestaReader.js new file mode 100755 index 000000000000..d8a14229508c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/SiestaReader.js @@ -0,0 +1,206 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.SiestaReader", ["java.util.Hashtable", "JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.noAtoms = 0; +this.acfUnits = "bohr"; +this.tokens = null; +this.STATE_UNKNOWN = 0; +this.STATE_INPUT = 1; +this.STATE_OUTPUT = 2; +this.state = 0; +this.acfFactor = 0; +this.htSpecies = null; +this.unitCellVectors = null; +this.unitCellParamsS = null; +this.latticeConstant = 1; +this.latticeUnits = null; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "SiestaReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.doApplySymmetry = true; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.length == 0 || this.line.charAt(0) == '#' || this.line.indexOf(' ') < 0 && this.line.indexOf('\t') < 0) return true; +switch (this.state) { +case 0: +if (this.line.indexOf("Dump of input data file") >= 0) { +this.state = 1; +return true; +}this.tokens = this.getTokens(); +if (this.fixToken(0).equals("numberofspecies")) { +this.state = 1; +return false; +}return true; +case 1: +if (this.line.indexOf("End of input data file") >= 0) { +this.state = 2; +return true; +}this.tokens = this.getTokens(); +if (this.tokens[0].equals("%block")) { +this.readBlock(this.fixToken(1)); +} else { +this.readValue(this.fixToken(0)); +}return true; +} +if (this.line.contains("outcoor: Atomic coordinates")) { +if (this.doGetModel(++this.modelNumber, null)) this.readAtomsCartGeomThenCell(); +return true; +}return true; +}); +Clazz.defineMethod(c$, "readValue", +function(key){ +if (key.equals("latticeconstant")) { +this.setCell("latticeconstant"); +} else if (key.equals("atomiccoordinatesformat")) { +this.readAtomicCoordinatesFormat(); +}}, "~S"); +Clazz.defineMethod(c$, "readBlock", +function(key){ +if (key.equals("latticevectors") || key.equals("latticeparameters")) return this.setCell(key); +if (key.equals("chemicalspecieslabel")) return this.readSpecies(); +if (key.equals("atomiccoordinatesandatomicspecies")) { +if (!this.doGetModel(++this.modelNumber, null)) { +this.skipModel(); +return false; +}return this.readAtoms(); +}this.discardLinesUntilContains("%endblock"); +return true; +}, "~S"); +Clazz.defineMethod(c$, "readSpecies", +function(){ +this.htSpecies = new java.util.Hashtable(); +while (this.rdSiesta().indexOf("%") < 0) { +this.tokens = this.getTokens(); +this.htSpecies.put(this.tokens[0], this.tokens); +} +return false; +}); +Clazz.defineMethod(c$, "fixToken", +function(i){ +return JU.PT.replaceAllCharacters(this.tokens[i], "_.-", "").toLowerCase(); +}, "~N"); +Clazz.defineMethod(c$, "rdSiesta", +function(){ +var s = this.rd(); +var pt = s.indexOf("#"); +return (pt < 0 ? s : s.substring(pt)).trim(); +}); +Clazz.defineMethod(c$, "getACFValue", +function(v){ +if (this.acfFactor == 0) { +var isScaledCartesian = (this.acfUnits === "scaledcartesian"); +if (isScaledCartesian) this.acfUnits = this.latticeUnits; +this.acfUnits = JU.PT.rep(this.acfUnits, "notscaledcartesian", ""); +switch ((this.acfUnits.charAt(0)).charCodeAt(0)) { +default: +case 98: +this.setFractionalCoordinates(isScaledCartesian); +this.acfFactor = (1.8897268777743552); +break; +case 109: +this.setFractionalCoordinates(isScaledCartesian); +this.acfFactor = (1.0E-10); +break; +case 110: +this.setFractionalCoordinates(isScaledCartesian); +this.acfFactor = (0.1); +break; +case 97: +this.setFractionalCoordinates(isScaledCartesian); +this.acfFactor = 1; +break; +case 102: +case 115: +this.setFractionalCoordinates(true); +this.acfFactor = 1; +break; +} +if (isScaledCartesian) { +this.acfFactor /= this.latticeConstant; +this.setFractionalCoordinates(true); +}}return (this.acfFactor * v); +}, "~N"); +Clazz.defineMethod(c$, "readAtomicCoordinatesFormat", +function(){ +this.acfUnits = this.tokens[1].toLowerCase().intern(); +}); +Clazz.defineMethod(c$, "skipModel", +function(){ +this.discardLinesUntilContains("%endblock AtomicCoordinatesAndAtomicSpecies"); +}); +Clazz.defineMethod(c$, "setCell", +function(key){ +if (key.equals("latticevectors")) { +this.unitCellVectors = Clazz.newFloatArray (9, 0); +this.fillFloatArray(null, 0, this.unitCellVectors); +} else if (key.equals("latticeconstant")) { +var tokens = this.getTokens(); +this.latticeConstant = this.parseFloatStr(tokens[1]); +this.latticeUnits = tokens[2].toLowerCase(); +} else if (key.equals("latticeparameters")) { +this.unitCellParamsS = Clazz.newFloatArray (6, 0); +this.fillFloatArray(this.line.substring(this.line.indexOf("ters") + 4), 0, this.unitCellParamsS); +}return true; +}, "~S"); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.newAtomSet(); +if (this.unitCellVectors != null) { +this.addExplicitLatticeVector(0, this.unitCellVectors, 0); +this.addExplicitLatticeVector(1, this.unitCellVectors, 3); +this.addExplicitLatticeVector(2, this.unitCellVectors, 6); +} else if (this.unitCellParamsS != null) { +this.setUnitCell(this.unitCellParamsS[0] * this.latticeConstant, this.unitCellParamsS[1] * this.latticeConstant, this.unitCellParamsS[2] * this.latticeConstant, this.unitCellParamsS[3], this.unitCellParamsS[4], this.unitCellParamsS[5]); +}while (this.rdSiesta() != null && this.line.indexOf("%endblock Atomic") < 0) { +var tokens = this.getTokens(); +var species = (this.htSpecies == null ? Clazz.newArray(-1, [null, null, tokens[4]]) : this.htSpecies.get(tokens[3])); +var name = species[2]; +var sym = (species[1] == null ? name : J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(this.parseIntStr(species[1]))); +this.addAtomXYZSymName(tokens, 0, sym, name); +} +this.noAtoms = this.asc.ac; +return true; +}); +Clazz.defineMethod(c$, "setAtomCoordXYZ", +function(atom, x, y, z){ +Clazz.superCall(this, J.adapter.readers.xtal.SiestaReader, "setAtomCoordXYZ", [atom, this.getACFValue(x), this.getACFValue(y), this.getACFValue(z)]); +}, "J.adapter.smarter.Atom,~N,~N,~N"); +Clazz.defineMethod(c$, "newAtomSet", +function(){ +this.applySymmetryAndSetTrajectory(); +this.asc.newAtomSet(); +this.setSpaceGroupName("P1"); +this.setFractionalCoordinates(false); +}); +Clazz.defineMethod(c$, "readAtomsCartGeomThenCell", +function(){ +this.readLines(1); +this.newAtomSet(); +var atom0 = this.asc.ac; +for (var i = 0; i < this.noAtoms; i++) { +var tokens = this.getTokens(); +var atom = this.asc.addNewAtom(); +atom.atomName = tokens[4]; +var x = this.parseFloatStr(tokens[0]); +var y = this.parseFloatStr(tokens[1]); +var z = this.parseFloatStr(tokens[2]); +atom.set(x, y, z); +this.rdSiesta(); +} +this.discardLinesUntilContains("outcell: Unit cell vectors"); +this.setCell("vectors"); +var atoms = this.asc.atoms; +var ac = this.asc.ac; +for (var i = atom0; i < ac; i++) this.setAtomCoord(atoms[i]); + +this.discardLinesUntilContains("siesta: E_KS(eV) = "); +var tokens = this.getTokens(); +var energy = Double.$valueOf(Double.parseDouble(tokens[3])); +this.asc.setAtomSetEnergy("" + energy, energy.floatValue()); +this.asc.setCurrentModelInfo("Energy", energy); +this.asc.setInfo("Energy", energy); +this.asc.setAtomSetName("Energy = " + energy + " eV"); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspChgcarReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspChgcarReader.js new file mode 100755 index 000000000000..0ea0663f05f0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspChgcarReader.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.readers.xtal.VaspPoscarReader"], "J.adapter.readers.xtal.VaspChgcarReader", null, function(){ +var c$ = Clazz.declareType(J.adapter.readers.xtal, "VaspChgcarReader", J.adapter.readers.xtal.VaspPoscarReader); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspOutcarReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspOutcarReader.js new file mode 100755 index 000000000000..a19499a171e4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspOutcarReader.js @@ -0,0 +1,188 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader", "JU.Lst"], "J.adapter.readers.xtal.VaspOutcarReader", ["JU.DF", "$.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomNames = null; +this.ac = 0; +this.inputOnly = false; +this.mDsimulation = false; +this.vaspVersion = 0; +this.elementNames = null; +this.gibbsEnergy = null; +this.gibbsEntropy = null; +this.electronEne = null; +this.kinEne = null; +this.totEne = null; +this.temp = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "VaspOutcarReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.elementNames = new JU.Lst(); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.isPrimitive = true; +this.setSpaceGroupName("P1"); +this.setFractionalCoordinates(true); +this.inputOnly = this.checkFilterKey("INPUT"); +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.vaspVersion == 0 && this.line.contains(" vasp.")) { +this.readVersion(); +if (this.vaspVersion > 0) this.appendLoadNote("VASP version " + this.vaspVersion + " " + this.line); +} else if (this.line.toUpperCase().startsWith(" POTCAR:")) { +this.readElementNames(); +} else if (this.line.contains("ions per type")) { +this.readAtomCountAndSetNames(); +} else if (this.line.contains("molecular dynamics for ions")) { +this.mDsimulation = true; +} else if (this.line.contains("direct lattice vectors")) { +this.readUnitCellVectors(); +} else if (this.ac > 0 && this.line.contains("position of ions in fractional coordinates")) { +this.readInitialCoordinates(); +if (this.inputOnly) this.continuing = false; +} else if (this.line.contains("POSITION")) { +this.readPOSITION(); +return true; +} else if (this.line.startsWith(" FREE ENERGIE") && !this.mDsimulation) { +this.readEnergy(); +} else if (this.line.contains("ENERGIE OF THE ELECTRON-ION-THERMOSTAT") && this.mDsimulation) { +this.readMdyn(); +} else if (this.line.startsWith(" Eigenvectors and eigenvalues of the dynamical matrix")) { +this.readFrequency(); +}return true; +}); +Clazz.defineMethod(c$, "readVersion", +function(){ +var tokens = JU.PT.split(this.line, "."); +this.vaspVersion = JU.PT.parseInt(tokens[1]); +}); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.setSymmetry(); +}); +Clazz.defineMethod(c$, "readElementNames", +function(){ +this.line = JU.PT.rep(this.line, " _ ", "_"); +var tokens = this.getTokens(); +var pt = tokens[1].indexOf(":"); +var name = (pt >= 0 ? tokens[1].substring(0, pt) : tokens[2]); +this.elementNames.addLast(name); +}); +Clazz.defineMethod(c$, "readAtomCountAndSetNames", +function(){ +var numofElement = Clazz.newIntArray (100, 0); +var tokens = JU.PT.getTokens(this.line.substring(this.line.indexOf("=") + 1)); +this.ac = 0; +for (var i = 0; i < tokens.length; i++) this.ac += (numofElement[i] = this.parseIntStr(tokens[i])); + +this.atomNames = new Array(this.ac); +var nElements = this.elementNames.size(); +for (var pt = 0, i = 0; i < nElements; i++) for (var j = 0; j < numofElement[i] && pt < this.ac; j++) this.atomNames[pt++] = this.elementNames.get(i); + + +}); +Clazz.defineMethod(c$, "readUnitCellVectors", +function(){ +if (this.asc.ac > 0) { +this.setSymmetry(); +this.asc.newAtomSet(); +this.setAtomSetInfo(); +}var f = Clazz.newFloatArray (3, 0); +for (var i = 0; i < 3; i++) this.addExplicitLatticeVector(i, this.fillFloatArray(this.fixMinus(this.rd()), 0, f), 0); + +}); +Clazz.defineMethod(c$, "fixMinus", +function(line){ +return JU.PT.rep(line, "-", " -"); +}, "~S"); +Clazz.defineMethod(c$, "setSymmetry", +function(){ +this.applySymmetryAndSetTrajectory(); +this.setSpaceGroupName("P1"); +this.setFractionalCoordinates(false); +}); +Clazz.defineMethod(c$, "readInitialCoordinates", +function(){ +var counter = 0; +while (this.rd() != null && this.line.length > 10) { +this.addAtomXYZSymName(JU.PT.getTokens(this.fixMinus(this.line)), 0, null, this.atomNames[counter++]); +} +this.asc.setAtomSetName("Initial Coordinates"); +}); +Clazz.defineMethod(c$, "readPOSITION", +function(){ +var counter = 0; +this.readLines(1); +while (this.rd() != null && this.line.indexOf("----------") < 0) this.addAtomXYZSymName(this.getTokens(), 0, null, this.atomNames[counter++]); + +}); +Clazz.defineMethod(c$, "readEnergy", +function(){ +this.rd(); +var tokens = JU.PT.getTokens(this.rd()); +this.gibbsEnergy = Double.$valueOf(Double.parseDouble(tokens[4])); +this.rd(); +tokens = JU.PT.getTokens(this.rd()); +var enthalpy = Double.parseDouble(tokens[3]); +this.gibbsEntropy = Double.$valueOf(enthalpy - this.gibbsEnergy.doubleValue()); +}); +Clazz.defineMethod(c$, "setAtomSetInfo", +function(){ +if (this.gibbsEnergy == null) return; +this.asc.setAtomSetEnergy("" + this.gibbsEnergy, this.gibbsEnergy.floatValue()); +this.asc.setCurrentModelInfo("Energy", this.gibbsEnergy); +this.asc.setCurrentModelInfo("Entropy", this.gibbsEntropy); +this.asc.setInfo("Energy", this.gibbsEnergy); +this.asc.setInfo("Entropy", this.gibbsEntropy); +this.asc.setAtomSetName("G = " + this.gibbsEnergy + " eV, T*S = " + this.gibbsEntropy + " eV"); +}); +Clazz.defineMethod(c$, "readMdyn", +function(){ +var tokens = this.getTokens(); +this.rd(); +tokens = JU.PT.getTokens(this.rd()); +this.electronEne = Double.$valueOf(Double.parseDouble(tokens[4])); +tokens = JU.PT.getTokens(this.rd()); +this.kinEne = Double.$valueOf(Double.parseDouble(tokens[4])); +this.temp = this.parseFloatStr(tokens[6]); +this.readLines(3); +tokens = JU.PT.getTokens(this.rd()); +this.totEne = Double.$valueOf(Double.parseDouble(tokens[4])); +this.setAtomSetInfoMd(); +}); +Clazz.defineMethod(c$, "setAtomSetInfoMd", +function(){ +this.asc.setAtomSetName("Temp. = " + JU.DF.formatDecimal((this.temp), 2) + " K, Energy = " + this.totEne + " eV"); +this.asc.setCurrentModelInfo("Energy", this.totEne); +this.asc.setInfo("Energy", this.totEne); +this.asc.setCurrentModelInfo("EleEnergy", this.kinEne); +this.asc.setInfo("EleEnergy", this.electronEne); +this.asc.setCurrentModelInfo("Kinetic", this.electronEne); +this.asc.setInfo("Kinetic", this.kinEne); +this.asc.setCurrentModelInfo("Temperature", JU.DF.formatDecimal((this.temp), 2)); +this.asc.setInfo("Temperature", JU.DF.formatDecimal((this.temp), 2)); +}); +Clazz.defineMethod(c$, "readFrequency", +function(){ +var pt = this.asc.iSet; +this.asc.baseSymmetryAtomCount = this.ac; +if (this.vaspVersion >= 5) { +this.readLines(3); +} else { +this.discardLinesUntilContains("Eigenvectors after division by SQRT(mass)"); +this.readLines(5); +}var ignore = Clazz.newBooleanArray(1, false); +while (this.rd() != null && (this.line.contains("f = ") || this.line.contains("f/i= "))) { +this.applySymmetryAndSetTrajectory(); +var iAtom0 = this.asc.ac; +this.cloneLastAtomSet(this.ac, null); +if (!ignore[0]) { +this.asc.iSet = ++pt; +this.asc.setAtomSetFrequency(this.vibrationNumber, null, null, this.line.substring(this.line.indexOf("2PiTHz") + 6, this.line.indexOf("c") - 1).trim(), null); +}this.rd(); +this.fillFrequencyData(iAtom0, this.ac, this.ac, ignore, true, 35, 12, null, 0, null); +this.rd(); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspPoscarReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspPoscarReader.js new file mode 100755 index 000000000000..4959c0e2672b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/VaspPoscarReader.js @@ -0,0 +1,140 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.VaspPoscarReader", ["JU.Lst", "$.M3", "$.PT", "$.SB", "J.api.JmolAdapter", "JU.Logger", "$.Parser"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomLabels = null; +this.haveAtomLabels = true; +this.atomsLabeledInline = false; +this.scaleFac = 0; +this.ac = 0; +this.title = null; +this.quiet = false; +this.defaultLabels = null; +this.unitCellData = null; +this.elementLabel = null; +this.radiusPt = -2147483648; +this.elementPt = -2147483648; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "VaspPoscarReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.isPrimitive = true; +this.readStructure(null); +this.continuing = false; +}); +Clazz.defineMethod(c$, "readStructure", +function(titleMsg){ +this.title = this.rd().trim(); +var pt = this.title.indexOf("--params"); +if ((pt = this.title.indexOf("& ", pt + 1)) >= 0) { +this.latticeType = this.title.substring(pt + 2, pt + 3); +JU.Logger.info("AFLOW lattice:" + this.latticeType + " title=" + this.title); +}this.readUnitCellVectors(); +this.readMolecularFormula(); +this.readCoordinates(); +this.asc.setAtomSetName(this.title + (titleMsg == null ? "" : "[" + titleMsg + "]")); +}, "~S"); +Clazz.overrideMethod(c$, "finalizeSubclassReader", +function(){ +if (!this.iHaveFractionalCoordinates) this.fractionalizeCoordinates(true); +if (!this.haveAtomLabels && !this.atomsLabeledInline) this.appendLoadNote("VASP POSCAR reader using pseudo atoms Al B C Db..."); +this.finalizeReaderASCR(); +}); +Clazz.defineMethod(c$, "readUnitCellVectors", +function(){ +this.setSpaceGroupName("P1"); +this.setFractionalCoordinates(true); +this.scaleFac = this.parseFloatStr(this.rdline().trim()); +var isVolume = (this.scaleFac < 0); +if (isVolume) this.scaleFac = Math.pow(-this.scaleFac, 0.3333333333333333); +this.unitCellData = Clazz.newFloatArray (9, 0); +var s = this.rdline() + " " + this.rdline() + " " + this.rdline(); +JU.Parser.parseStringInfestedFloatArray(s, null, this.unitCellData); +if (isVolume) { +var m = JU.M3.newA9(this.unitCellData); +this.scaleFac /= m.determinant3(); +}if (this.scaleFac != 1) for (var i = 0; i < this.unitCellData.length; i++) this.unitCellData[i] *= this.scaleFac; + +}); +Clazz.defineMethod(c$, "readMolecularFormula", +function(){ +if (this.elementLabel == null) this.elementLabel = JU.PT.getTokens(this.discardLinesUntilNonBlank()); +var elementCounts; +if (JU.PT.parseInt(this.elementLabel[0]) == -2147483648) { +this.atomsLabeledInline = false; +elementCounts = JU.PT.getTokens(this.rdline()); +while (this.line != null && (elementCounts.length == 0 || this.parseIntStr(elementCounts[0]) == -2147483648)) elementCounts = JU.PT.getTokens(this.rdline()); + +} else { +elementCounts = this.elementLabel; +this.elementLabel = JU.PT.split(this.title, " "); +if (this.elementLabel.length != elementCounts.length || this.elementLabel[0].length > 2) { +this.elementLabel = JU.PT.split("Al B C Db Eu F Ga Hf I K Li Mn N O P Ru S Te U V W Xe Yb Zn", " "); +this.haveAtomLabels = false; +}}var labels = this.elementLabel; +var mf = new JU.SB(); +this.atomLabels = new JU.Lst(); +this.ac = 0; +for (var i = 0; i < elementCounts.length; i++) { +var n = Integer.parseInt(elementCounts[i]); +this.ac += n; +var label = labels[i]; +mf.append(" ").append(label).appendI(n); +for (var j = n; --j >= 0; ) this.atomLabels.addLast(label); + +} +var s = mf.toString(); +if (!this.quiet) this.appendLoadNote(this.ac + " atoms identified for" + s); +this.asc.newAtomSet(); +this.asc.setAtomSetName(s); +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +var isSelective = this.discardLinesUntilNonBlank().toLowerCase().contains("selective"); +if (isSelective) this.rd(); +var isCartesian = (this.line.toLowerCase().contains("cartesian")); +if (isCartesian) { +this.setFractionalCoordinates(false); +}this.addExplicitLatticeVector(0, this.unitCellData, 0); +this.addExplicitLatticeVector(1, this.unitCellData, 3); +this.addExplicitLatticeVector(2, this.unitCellData, 6); +for (var i = 0; i < this.ac; i++) { +var radius = NaN; +var tokens = JU.PT.getTokens(this.rdline()); +if (this.radiusPt == -2147483648) { +for (var j = tokens.length; --j > 2; ) { +var t = tokens[j]; +if (t.equals("radius")) { +this.radiusPt = j + 1; +} else if (!t.equals("T") && !t.equals("F") && this.getElement(t) != null) { +this.elementPt = j; +this.atomsLabeledInline = true; +}} +}if (this.radiusPt >= 0) radius = this.parseFloatStr(tokens[this.radiusPt]); +var label = (this.atomsLabeledInline ? tokens[this.elementPt] : this.atomLabels.get(i)); +if (isCartesian) for (var j = 0; j < 3; j++) tokens[j] = "" + this.parseFloatStr(tokens[j]) * this.scaleFac; + +var atom = this.addAtomXYZSymName(tokens, 0, null, label); +if (!Float.isNaN(radius)) atom.radius = radius * this.scaleFac; +if (this.asc.bsAtoms != null) this.asc.bsAtoms.set(atom.index); +} +}); +Clazz.defineMethod(c$, "getElement", +function(token){ +var s = null; +switch (token.length) { +default: +s = (token.length > 2 ? token.substring(0, 2) : null); +if (s != null && J.api.JmolAdapter.getElementNumber(s) >= 0) return s; +case 1: +if (J.api.JmolAdapter.getElementNumber(s = token.substring(0)) >= 0) return s; +case 0: +return null; +} +}, "~S"); +Clazz.defineMethod(c$, "rdline", +function(){ +this.rd(); +if (this.line != null && this.line.startsWith("[")) this.line = this.line.substring(this.line.indexOf("]") + 1).trim(); +return this.line; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/Wien2kReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/Wien2kReader.js new file mode 100755 index 000000000000..b0d2dd59772d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/Wien2kReader.js @@ -0,0 +1,115 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.Wien2kReader", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isrhombohedral = false; +this.latticeCode = '\0'; +this.doSymmetry = true; +this.cxyz = " x y z"; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "Wien2kReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.doSymmetry = !this.sgName.equals("none"); +this.setFractionalCoordinates(true); +this.asc.setCollectionName(this.rd()); +this.readUnitCell(); +this.readAtoms(); +this.readSymmetry(); +this.readEmbeddedScript(); +this.continuing = false; +}); +Clazz.defineMethod(c$, "readUnitCell", +function(){ +this.rd(); +this.isrhombohedral = ((this.latticeCode = this.line.charAt(0)) == 'R'); +if (this.line.startsWith("CYZ")) this.latticeCode = 'A'; + else if (this.line.startsWith("CXZ")) this.latticeCode = 'B'; + else if (this.line.startsWith("B")) this.latticeCode = 'I'; +if (this.latticeCode != 'R' && this.latticeCode != 'H') this.asc.getXSymmetry().setLatticeParameter(this.latticeCode.charCodeAt(0)); +if (this.line.length > 32) { +var name = this.line.substring(32).trim(); +if (name.indexOf(" ") >= 0) name = name.substring(name.indexOf(" ") + 1); +if (name.indexOf("_") >= 0) name = name.substring(name.indexOf("_") + 1); +this.setSpaceGroupName(name); +}var factor = (this.rd().toLowerCase().indexOf("ang") >= 0 ? 1 : 0.5291772); +this.rd(); +var a = this.parseFloatRange(this.line, 0, 10) * factor; +var b = this.parseFloatRange(this.line, 10, 20) * factor; +var c = this.parseFloatRange(this.line, 20, 30) * factor; +var l = this.line.length; +var alpha = (l >= 40 ? this.parseFloatRange(this.line, 30, 40) : 0); +var beta = (l >= 50 ? this.parseFloatRange(this.line, 40, 50) : 0); +var gamma = (l >= 60 ? this.parseFloatRange(this.line, 50, 60) : 0); +if (this.isrhombohedral) { +var ar = Math.sqrt(a * a / 3 + c * c / 9); +alpha = beta = gamma = (Math.acos((2 * c * c - 3 * a * a) / (2 * c * c + 6 * a * a)) * 180 / 3.141592653589793); +a = b = c = ar; +}if (Float.isNaN(alpha) || alpha == 0) alpha = 90; +if (Float.isNaN(beta) || beta == 0) beta = 90; +if (Float.isNaN(gamma) || gamma == 0) gamma = 90; +this.setUnitCell(a, b, c, alpha, beta, gamma); +}); +Clazz.defineMethod(c$, "readAtoms", +function(){ +this.rd(); +while (this.line != null && (this.line.indexOf("ATOM") == 0 || !this.doSymmetry && this.line.indexOf(":") == 8)) { +var thisAtom = this.asc.ac; +this.addAtom(); +if (this.rd().indexOf("MULT=") == 10) for (var i = this.parseIntRange(this.line, 15, 18); --i >= 0; ) { +this.rd(); +if (!this.doSymmetry) this.addAtom(); +} +var atomName = this.line.substring(0, 10); +var sym = atomName.substring(0, 2).trim(); +if (sym.length == 2 && JU.PT.isDigit(sym.charAt(1))) sym = sym.substring(0, 1); +atomName = JU.PT.rep(atomName, " ", ""); +var n = 0; +for (var i = this.asc.ac; --i >= thisAtom; ) { +var atom = this.asc.atoms[i]; +atom.elementSymbol = sym; +atom.atomName = atomName + "_" + (n++); +} +while (this.rd() != null && this.line.indexOf("ATOM") < 0 && this.line.indexOf("SYMMETRY") < 0) { +} +} +}); +Clazz.defineMethod(c$, "addAtom", +function(){ +var a = this.parseFloatRange(this.line, 12, 22); +var b = this.parseFloatRange(this.line, 25, 35); +var c = this.parseFloatRange(this.line, 38, 48); +var atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, a, b, c); +}); +Clazz.defineMethod(c$, "readSymmetry", +function(){ +if (this.line.indexOf("SYMMETRY") < 0) return; +var n = this.parseIntRange(this.line, 0, 4); +for (var i = n; --i >= 0; ) { +var xyz = this.getJones() + "," + this.getJones() + "," + this.getJones(); +if (this.doSymmetry) this.setSymmetryOperator(xyz); +this.rd(); +} +}); +Clazz.defineMethod(c$, "getJones", +function(){ +this.rd(); +var xyz = ""; +var trans = this.parseFloatStr(this.line.substring(6)); +for (var i = 0; i < 6; i++) { +if (this.line.charAt(i) == '-') xyz += "-"; +if (this.line.charAt(++i) == '1') { +xyz += " x y z".charAt(i); +if (trans > 0) xyz += "+"; +if (trans != 0) xyz += trans; +}} +return xyz; +}); +Clazz.defineMethod(c$, "readEmbeddedScript", +function(){ +while (this.line != null) { +this.checkCurrentLineForScript(); +this.rd(); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/XcrysdenReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/XcrysdenReader.js new file mode 100755 index 000000000000..3296b50e836a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/readers/xtal/XcrysdenReader.js @@ -0,0 +1,72 @@ +Clazz.declarePackage("J.adapter.readers.xtal"); +Clazz.load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.xtal.XcrysdenReader", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nAtoms = 0; +this.animation = false; +this.unitCellData = null; +this.animationStep = 0; +Clazz.instantialize(this, arguments);}, J.adapter.readers.xtal, "XcrysdenReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz.prepareFields (c$, function(){ +this.unitCellData = Clazz.newFloatArray (9, 0); +}); +Clazz.overrideMethod(c$, "initializeReader", +function(){ +this.setFractionalCoordinates(false); +this.doApplySymmetry = true; +}); +Clazz.overrideMethod(c$, "checkLine", +function(){ +if (this.line.startsWith("ATOMS")) { +this.doApplySymmetry = false; +return this.readCoordinates(); +}if (this.line.contains("ANIMSTEP")) { +this.animation = true; +} else if (this.line.contains("PRIMVEC")) { +this.readUnitCell(); +} else if (this.line.contains("PRIMCOORD")) { +return this.readCoordinates(); +}return true; +}); +Clazz.defineMethod(c$, "readUnitCell", +function(){ +this.setSymmetry(); +this.fillFloatArray(null, 0, this.unitCellData); +this.setUnitCell(); +}); +Clazz.defineMethod(c$, "setUnitCell", +function(){ +this.addExplicitLatticeVector(0, this.unitCellData, 0); +this.addExplicitLatticeVector(1, this.unitCellData, 3); +this.addExplicitLatticeVector(2, this.unitCellData, 6); +}); +Clazz.defineMethod(c$, "setSymmetry", +function(){ +this.applySymmetryAndSetTrajectory(); +this.asc.newAtomSet(); +this.setSpaceGroupName("P1"); +this.setFractionalCoordinates(false); +}); +Clazz.defineMethod(c$, "readCoordinates", +function(){ +if (this.doApplySymmetry) { +var atomStr = JU.PT.getTokens(this.rd()); +this.nAtoms = Integer.parseInt(atomStr[0]); +} else { +this.nAtoms = 2147483647; +}this.setFractionalCoordinates(false); +var counter = 0; +while (counter < this.nAtoms && this.rd() != null) { +var tokens = this.getTokens(); +var an = JU.PT.parseInt(tokens[0]); +if (an < 0) { +break; +}this.line = null; +this.addAtomXYZSymName(tokens, 1, null, J.adapter.smarter.AtomSetCollectionReader.getElementSymbol(an)); +counter++; +} +this.asc.setAtomSetName(this.animation ? "Structure " + (++this.animationStep) : "Initial coordinates"); +if (this.line != null) this.setSymmetry(); +return (this.line == null); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Atom.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Atom.js new file mode 100755 index 000000000000..254dc949ce39 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Atom.js @@ -0,0 +1,113 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(["JU.P3"], "J.adapter.smarter.Atom", ["JU.AU", "$.Lst", "$.V3"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomSetIndex = 0; +this.index = 0; +this.bsSymmetry = null; +this.atomSite = 0; +this.elementSymbol = null; +this.elementNumber = -1; +this.atomName = null; +this.formalCharge = -2147483648; +this.partialCharge = NaN; +this.vib = null; +this.bfactor = NaN; +this.foccupancy = 1; +this.radius = NaN; +this.isHetero = false; +this.atomSerial = -2147483648; +this.chainID = 0; +this.bondingRadius = NaN; +this.altLoc = '\0'; +this.group3 = null; +this.sequenceNumber = -2147483648; +this.insertionCode = '\0'; +this.anisoBorU = null; +this.tensors = null; +this.isNegDisorder = false; +this.typeSymbol = null; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "Atom", JU.P3, Cloneable); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.smarter.Atom, []); +this.set(NaN, NaN, NaN); +}); +Clazz.defineMethod(c$, "addTensor", +function(tensor, type, reset){ +if (tensor == null) return null; +if (reset || this.tensors == null) this.tensors = new JU.Lst(); +this.tensors.addLast(tensor); +if (type != null) tensor.setType(type); +return tensor; +}, "JU.Tensor,~S,~B"); +Clazz.defineMethod(c$, "getClone", +function(){ +var a; +try { +a = this.clone(); +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +if (this.vib != null) { +if (Clazz.instanceOf(this.vib,"JU.Vibration")) { +a.vib = (this.vib).clone(); +} else { +a.vib = JU.V3.newV(a.vib); +}}if (this.anisoBorU != null) a.anisoBorU = JU.AU.arrayCopyF(this.anisoBorU, -1); +if (this.tensors != null) { +a.tensors = new JU.Lst(); +for (var i = this.tensors.size(); --i >= 0; ) a.tensors.addLast((this.tensors.get(i)).copyTensor()); + +}return a; +}); +Clazz.defineMethod(c$, "getElementSymbol", +function(){ +if (this.elementSymbol == null && this.atomName != null) { +var len = this.atomName.length; +var ichFirst = 0; +var chFirst = String.fromCharCode(0); +while (ichFirst < len && !J.adapter.smarter.Atom.isValidSymChar1(chFirst = this.atomName.charAt(ichFirst))) ++ichFirst; + +switch (len - ichFirst) { +case 0: +break; +default: +var chSecond = this.atomName.charAt(ichFirst + 1); +if (J.adapter.smarter.Atom.isValidSymNoCase(chFirst, chSecond)) { +this.elementSymbol = "" + chFirst + chSecond; +break; +}case 1: +if (J.adapter.smarter.Atom.isValidSym1(chFirst)) this.elementSymbol = "" + chFirst; +break; +} +}return this.elementSymbol; +}); +c$.isValidSym1 = Clazz.defineMethod(c$, "isValidSym1", +function(ch){ +return (ch >= 'A' && ch <= 'Z' && J.adapter.smarter.Atom.elementCharMasks[ch.charCodeAt(0) - 65] < 0); +}, "~S"); +c$.isValidSym2 = Clazz.defineMethod(c$, "isValidSym2", +function(ch1, ch2){ +return (ch1 >= 'A' && ch1 <= 'Z' && ch2 >= 'a' && ch2 <= 'z' && ((J.adapter.smarter.Atom.elementCharMasks[ch1.charCodeAt(0) - 65] >> (ch2.charCodeAt(0) - 97)) & 1) != 0); +}, "~S,~S"); +c$.isValidSymNoCase = Clazz.defineMethod(c$, "isValidSymNoCase", +function(ch1, ch2){ +return J.adapter.smarter.Atom.isValidSym2(ch1, ch2 < 'a' ? String.fromCharCode(ch2.charCodeAt(0) + 32) : ch2); +}, "~S,~S"); +c$.isValidSymChar1 = Clazz.defineMethod(c$, "isValidSymChar1", +function(ch){ +return (ch >= 'A' && ch <= 'Z' && J.adapter.smarter.Atom.elementCharMasks[ch.charCodeAt(0) - 65] != 0); +}, "~S"); +Clazz.defineMethod(c$, "copyTo", +function(pt, asc){ +var a = asc.newCloneAtom(this); +a.setT(pt); +return a; +}, "JU.P3,J.adapter.smarter.AtomSetCollection"); +c$.elementCharMasks = Clazz.newIntArray(-1, [1972292, -2147351151, -2146019271, -2130706430, 1441792, -2147348464, 25, -2147205008, -2147344384, 0, -2147352576, 1179905, 548936, -2147434213, -2147221504, -2145759221, 0, 1056947, -2147339946, -2147477097, -2147483648, -2147483648, -2147483648, 8388624, -2147483646, 139264]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomIterator.js new file mode 100755 index 000000000000..d0629eba17fe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomIterator.js @@ -0,0 +1,126 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(["J.api.JmolAdapterAtomIterator"], "J.adapter.smarter.AtomIterator", ["J.api.JmolAdapter"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.iatom = 0; +this.atom = null; +this.ac = 0; +this.atoms = null; +this.bsAtoms = null; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "AtomIterator", null, J.api.JmolAdapterAtomIterator); +Clazz.makeConstructor(c$, +function(asc){ +this.ac = asc.ac; +this.atoms = asc.atoms; +this.bsAtoms = asc.bsAtoms; +this.iatom = 0; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +if (this.iatom == this.ac) return false; +while ((this.atom = this.atoms[this.iatom++]) == null || (this.bsAtoms != null && !this.bsAtoms.get(this.atom.index))) if (this.iatom == this.ac) return false; + +this.atoms[this.iatom - 1] = null; +return true; +}); +Clazz.overrideMethod(c$, "getAtomSetIndex", +function(){ +return this.atom.atomSetIndex; +}); +Clazz.overrideMethod(c$, "getSymmetry", +function(){ +return this.atom.bsSymmetry; +}); +Clazz.overrideMethod(c$, "getAtomSite", +function(){ +return this.atom.atomSite + 1; +}); +Clazz.overrideMethod(c$, "getUniqueID", +function(){ +return Integer.$valueOf(this.atom.index); +}); +Clazz.overrideMethod(c$, "getElementNumber", +function(){ +return (this.atom.elementNumber > 0 ? this.atom.elementNumber : J.api.JmolAdapter.getElementNumber(this.atom.getElementSymbol())); +}); +Clazz.overrideMethod(c$, "getAtomName", +function(){ +return this.atom.atomName; +}); +Clazz.overrideMethod(c$, "getFormalCharge", +function(){ +return (this.atom.formalCharge == -2147483648 ? 0 : this.atom.formalCharge); +}); +Clazz.overrideMethod(c$, "getPartialCharge", +function(){ +return this.atom.partialCharge; +}); +Clazz.overrideMethod(c$, "getTensors", +function(){ +return this.atom.tensors; +}); +Clazz.overrideMethod(c$, "getRadius", +function(){ +return this.atom.radius; +}); +Clazz.overrideMethod(c$, "getBondRadius", +function(){ +return this.atom.bondingRadius; +}); +Clazz.overrideMethod(c$, "getVib", +function(){ +return (this.atom.vib == null || Float.isNaN(this.atom.vib.z) ? null : this.atom.vib); +}); +Clazz.overrideMethod(c$, "getSeqID", +function(){ +return (this.atom.vib == null || !Float.isNaN(this.atom.vib.y) || this.atom.vib.z != 1094713365 ? 0 : Clazz.floatToInt(this.atom.vib.x)); +}); +Clazz.overrideMethod(c$, "getBfactor", +function(){ +return this.atom.bfactor; +}); +Clazz.overrideMethod(c$, "getOccupancy", +function(){ +return this.atom.foccupancy * 100; +}); +Clazz.overrideMethod(c$, "getIsHetero", +function(){ +return this.atom.isHetero; +}); +Clazz.overrideMethod(c$, "getSerial", +function(){ +return this.atom.atomSerial; +}); +Clazz.overrideMethod(c$, "getChainID", +function(){ +return this.atom.chainID; +}); +Clazz.overrideMethod(c$, "getAltLoc", +function(){ +return J.api.JmolAdapter.canonizeAlternateLocationID(this.atom.altLoc); +}); +Clazz.overrideMethod(c$, "getGroup3", +function(){ +return this.atom.group3; +}); +Clazz.overrideMethod(c$, "getSequenceNumber", +function(){ +return this.atom.sequenceNumber; +}); +Clazz.overrideMethod(c$, "getInsertionCode", +function(){ +return J.api.JmolAdapter.canonizeInsertionCode(this.atom.insertionCode); +}); +Clazz.overrideMethod(c$, "getXYZ", +function(){ +return this.atom; +}); +Clazz.overrideMethod(c$, "getElement", +function(){ +return this.getElementNumber() & 0x7F; +}); +Clazz.overrideMethod(c$, "getIsotope", +function(){ +return this.getElementNumber() >> 7; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetCollection.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetCollection.js new file mode 100755 index 000000000000..ac1829901019 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetCollection.js @@ -0,0 +1,880 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(["java.util.Hashtable"], "J.adapter.smarter.AtomSetCollection", ["java.util.Collections", "$.Properties", "JU.AU", "$.BS", "$.Lst", "$.P3", "$.V3", "J.adapter.smarter.Atom", "$.Bond", "$.SmarterJmolAdapter", "J.api.Interface", "JU.BSUtil", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.reader = null; +this.bsAtoms = null; +this.fileTypeName = null; +this.collectionName = null; +this.atomSetInfo = null; +this.atoms = null; +this.ac = 0; +this.bonds = null; +this.bondCount = 0; +this.structures = null; +this.structureCount = 0; +this.atomSetCount = 0; +this.iSet = -1; +this.atomSetNumbers = null; +this.atomSetAtomIndexes = null; +this.atomSetAtomCounts = null; +this.atomSetBondCounts = null; +this.atomSetAuxiliaryInfo = null; +this.errorMessage = null; +this.coordinatesAreFractional = false; +this.isTrajectory = false; +this.trajectoryStepCount = 0; +this.trajectorySteps = null; +this.vibrationSteps = null; +this.trajectoryNames = null; +this.doFixPeriodic = false; +this.allowMultiple = false; +this.readerList = null; +this.atomMapAnyCase = false; +this.fixedSite = 0; +this.bsStructuredModels = null; +this.haveAnisou = false; +this.baseSymmetryAtomCount = 0; +this.crystalReaderLatticeOpsOnly = false; +this.xtalSymmetry = null; +this.bondIndex0 = 0; +this.atomSymbolicMap = null; +this.haveUnitCell = false; +this.vibScale = 0; +this.firstAtomToBond = -1; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "AtomSetCollection", null); +Clazz.prepareFields (c$, function(){ +this.atomSetInfo = new java.util.Hashtable(); +this.atoms = new Array(256); +this.bonds = new Array(256); +this.structures = new Array(16); +this.atomSetNumbers = Clazz.newIntArray (16, 0); +this.atomSetAtomIndexes = Clazz.newIntArray (16, 0); +this.atomSetAtomCounts = Clazz.newIntArray (16, 0); +this.atomSetBondCounts = Clazz.newIntArray (16, 0); +this.atomSetAuxiliaryInfo = new Array(16); +this.atomSymbolicMap = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(fileTypeName, reader, array, list){ +this.fileTypeName = fileTypeName; +this.reader = reader; +this.allowMultiple = (reader == null || reader.desiredVibrationNumber < 0); +var p = new java.util.Properties(); +p.put("PATH_KEY", ".PATH"); +p.put("PATH_SEPARATOR", J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR); +this.setInfo("properties", p); +if (reader != null) { +var ii = reader.htParams.get("appendToModelIndex"); +if (ii != null) this.setInfo("appendToModelIndex", ii); +ii = reader.htParams.get("fixedSite"); +if (ii != null) this.fixedSite = ii.intValue(); +}if (array != null) { +var n = 0; +this.readerList = new JU.Lst(); +for (var i = 0; i < array.length; i++) if (array[i] != null && (array[i].ac > 0 || array[i].reader != null && array[i].reader.mustFinalizeModelSet)) this.appendAtomSetCollection(n++, array[i]); + +if (n > 1) this.setInfo("isMultiFile", Boolean.TRUE); +} else if (list != null) { +this.setInfo("isMultiFile", Boolean.TRUE); +this.appendAtomSetCollectionList(list); +}}, "~S,J.adapter.smarter.AtomSetCollectionReader,~A,JU.Lst"); +Clazz.defineMethod(c$, "setCollectionName", +function(collectionName){ +if (collectionName != null && (collectionName = collectionName.trim()).length > 0) this.collectionName = collectionName; +}, "~S"); +Clazz.defineMethod(c$, "clearGlobalBoolean", +function(globalIndex){ +this.atomSetInfo.remove(JV.JC.getBoolName(globalIndex)); +}, "~N"); +Clazz.defineMethod(c$, "setGlobalBoolean", +function(globalIndex){ +this.setInfo(JV.JC.getBoolName(globalIndex), Boolean.TRUE); +}, "~N"); +Clazz.defineMethod(c$, "getGlobalBoolean", +function(globalIndex){ +return (this.atomSetInfo.get(JV.JC.getBoolName(globalIndex)) === Boolean.TRUE); +}, "~N"); +Clazz.defineMethod(c$, "appendAtomSetCollectionList", +function(list){ +var n = list.size(); +if (n == 0) { +this.errorMessage = "No file found!"; +return; +}for (var i = 0; i < n; i++) { +var o = list.get(i); +if (Clazz.instanceOf(o,"JU.Lst")) this.appendAtomSetCollectionList(o); + else this.appendAtomSetCollection(i, o); +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "setTrajectory", +function(){ +if (!this.isTrajectory) this.trajectorySteps = new JU.Lst(); +this.isTrajectory = true; +var n = (this.bsAtoms == null ? this.ac : this.bsAtoms.cardinality()); +if (n <= 1) return; +var trajectoryStep = new Array(n); +var haveVibrations = (n > 0 && this.atoms[0].vib != null && !Float.isNaN(this.atoms[0].vib.z)); +var vibrationStep = (haveVibrations ? new Array(n) : null); +var prevSteps = (this.trajectoryStepCount == 0 ? null : this.trajectorySteps.get(this.trajectoryStepCount - 1)); +for (var i = 0, ii = 0; i < this.ac; i++) { +if (this.bsAtoms != null && !this.bsAtoms.get(i)) continue; +var pt = JU.P3.newP(this.atoms[i]); +if (this.doFixPeriodic && prevSteps != null) pt = J.adapter.smarter.AtomSetCollection.fixPeriodic(pt, prevSteps[i]); +trajectoryStep[ii] = pt; +if (haveVibrations) vibrationStep[ii] = this.atoms[i].vib; +ii++; +} +if (haveVibrations) { +if (this.vibrationSteps == null) { +this.vibrationSteps = new JU.Lst(); +for (var i = 0; i < this.trajectoryStepCount; i++) this.vibrationSteps.addLast(null); + +}this.vibrationSteps.addLast(vibrationStep); +}this.trajectorySteps.addLast(trajectoryStep); +this.trajectoryStepCount++; +}); +Clazz.defineMethod(c$, "appendAtomSetCollection", +function(collectionIndex, collection){ +if (collection.reader != null && collection.reader.mustFinalizeModelSet) this.readerList.addLast(collection.reader); +var existingAtomsCount = this.ac; +this.setInfo("loadState", collection.atomSetInfo.get("loadState")); +if (collection.bsAtoms != null) { +this.getBSAtoms(0); +for (var i = collection.bsAtoms.nextSetBit(0); i >= 0; i = collection.bsAtoms.nextSetBit(i + 1)) this.bsAtoms.set(existingAtomsCount + i); + +}var clonedAtoms = 0; +var atomSetCount0 = this.atomSetCount; +for (var atomSetNum = 0; atomSetNum < collection.atomSetCount; atomSetNum++) { +this.newAtomSet(); +var info = this.atomSetAuxiliaryInfo[this.iSet] = collection.atomSetAuxiliaryInfo[atomSetNum]; +var atomInfo = info.get("PDB_CONECT_firstAtom_count_max"); +if (atomInfo != null) atomInfo[0] += existingAtomsCount; +this.setCurrentModelInfo("title", collection.collectionName); +this.setAtomSetName(collection.getAtomSetName(atomSetNum)); +for (var atomNum = 0; atomNum < collection.atomSetAtomCounts[atomSetNum]; atomNum++) { +if (this.bsAtoms != null) this.bsAtoms.set(this.ac); +this.newCloneAtom(collection.atoms[clonedAtoms]); +clonedAtoms++; +} +this.atomSetNumbers[this.iSet] = (collectionIndex < 0 ? this.iSet + 1 : ((collectionIndex + 1) * 1000000) + collection.atomSetNumbers[atomSetNum]); +} +for (var bondNum = 0; bondNum < collection.bondCount; bondNum++) { +var bond = collection.bonds[bondNum]; +this.addNewBondWithOrder(bond.atomIndex1 + existingAtomsCount, bond.atomIndex2 + existingAtomsCount, bond.order); +} +for (var i = JV.JC.globalBooleans.length; --i >= 0; ) if (collection.getGlobalBoolean(i)) this.setGlobalBoolean(i); + +for (var i = 0; i < collection.structureCount; i++) { +var s = collection.structures[i]; +this.addStructure(s); +s.modelStartEnd[0] += atomSetCount0; +s.modelStartEnd[1] += atomSetCount0; +} +}, "~N,J.adapter.smarter.AtomSetCollection"); +Clazz.defineMethod(c$, "setNoAutoBond", +function(){ +this.setInfo("noAutoBond", Boolean.TRUE); +}); +Clazz.defineMethod(c$, "freeze", +function(reverseModels){ +if (this.atomSetCount == 1 && this.collectionName == null) this.collectionName = this.getAtomSetAuxiliaryInfoValue(0, "name"); +if (reverseModels) this.reverseAtomSets(); +if (this.trajectoryStepCount > 1) this.finalizeTrajectory(); +this.getList(true); +this.getList(false); +for (var i = 0; i < this.atomSetCount; i++) { +this.setModelInfoForSet("initialAtomCount", Integer.$valueOf(this.atomSetAtomCounts[i]), i); +this.setModelInfoForSet("initialBondCount", Integer.$valueOf(this.atomSetBondCounts[i]), i); +} +}, "~B"); +Clazz.defineMethod(c$, "reverseAtomSets", +function(){ +this.reverseArray(this.atomSetAtomIndexes); +this.reverseArray(this.atomSetNumbers); +this.reverseArray(this.atomSetAtomCounts); +this.reverseArray(this.atomSetBondCounts); +J.adapter.smarter.AtomSetCollection.reverseList(this.trajectorySteps); +J.adapter.smarter.AtomSetCollection.reverseList(this.trajectoryNames); +J.adapter.smarter.AtomSetCollection.reverseList(this.vibrationSteps); +this.reverseObject(this.atomSetAuxiliaryInfo); +for (var i = 0; i < this.ac; i++) this.atoms[i].atomSetIndex = this.atomSetCount - 1 - this.atoms[i].atomSetIndex; + +for (var i = 0; i < this.structureCount; i++) { +var m = this.structures[i].modelStartEnd[0]; +if (m >= 0) { +this.structures[i].modelStartEnd[0] = this.atomSetCount - 1 - this.structures[i].modelStartEnd[1]; +this.structures[i].modelStartEnd[1] = this.atomSetCount - 1 - m; +}} +for (var i = 0; i < this.bondCount; i++) this.bonds[i].atomSetIndex = this.atomSetCount - 1 - this.atoms[this.bonds[i].atomIndex1].atomSetIndex; + +this.reverseSets(this.bonds, this.bondCount); +var lists = JU.AU.createArrayOfArrayList(this.atomSetCount); +for (var i = 0; i < this.atomSetCount; i++) lists[i] = new JU.Lst(); + +for (var i = 0; i < this.ac; i++) lists[this.atoms[i].atomSetIndex].addLast(this.atoms[i]); + +var newIndex = Clazz.newIntArray (this.ac, 0); +var n = this.ac; +for (var i = this.atomSetCount; --i >= 0; ) for (var j = lists[i].size(); --j >= 0; ) { +var a = this.atoms[--n] = lists[i].get(j); +newIndex[a.index] = n; +a.index = n; +} + +for (var i = 0; i < this.bondCount; i++) { +this.bonds[i].atomIndex1 = newIndex[this.bonds[i].atomIndex1]; +this.bonds[i].atomIndex2 = newIndex[this.bonds[i].atomIndex2]; +} +for (var i = 0; i < this.atomSetCount; i++) { +var conect = this.getAtomSetAuxiliaryInfoValue(i, "PDB_CONECT_firstAtom_count_max"); +if (conect == null) continue; +conect[0] = newIndex[conect[0]]; +conect[1] = this.atomSetAtomCounts[i]; +} +}); +Clazz.defineMethod(c$, "reverseSets", +function(o, n){ +var lists = JU.AU.createArrayOfArrayList(this.atomSetCount); +for (var i = 0; i < this.atomSetCount; i++) lists[i] = new JU.Lst(); + +for (var i = 0; i < n; i++) { +var index = o[i].atomSetIndex; +if (index < 0) return; +lists[o[i].atomSetIndex].addLast(o[i]); +} +for (var i = this.atomSetCount; --i >= 0; ) for (var j = lists[i].size(); --j >= 0; ) o[--n] = lists[i].get(j); + + +}, "~A,~N"); +Clazz.defineMethod(c$, "reverseObject", +function(o){ +var n = this.atomSetCount; +for (var i = Clazz.doubleToInt(n / 2); --i >= 0; ) JU.AU.swap(o, i, n - 1 - i); + +}, "~A"); +c$.reverseList = Clazz.defineMethod(c$, "reverseList", +function(list){ +if (list == null) return; +java.util.Collections.reverse(list); +}, "JU.Lst"); +Clazz.defineMethod(c$, "reverseArray", +function(a){ +var n = this.atomSetCount; +for (var i = Clazz.doubleToInt(n / 2); --i >= 0; ) JU.AU.swapInt(a, i, n - 1 - i); + +}, "~A"); +Clazz.defineMethod(c$, "getList", +function(isAltLoc){ +var i; +for (i = this.ac; --i >= 0; ) if (this.atoms[i] != null && (isAltLoc ? this.atoms[i].altLoc : this.atoms[i].insertionCode) != '\0') break; + +if (i < 0) return; +var lists = new Array(this.atomSetCount); +for (i = 0; i < this.atomSetCount; i++) lists[i] = ""; + +var pt; +for (i = 0; i < this.ac; i++) { +if (this.atoms[i] == null) continue; +var id = (isAltLoc ? this.atoms[i].altLoc : this.atoms[i].insertionCode); +if (id != '\0' && lists[pt = this.atoms[i].atomSetIndex].indexOf(id) < 0) lists[pt] += id; +} +var type = (isAltLoc ? "altLocs" : "insertionCodes"); +for (i = 0; i < this.atomSetCount; i++) if (lists[i].length > 0) this.setModelInfoForSet(type, lists[i], i); + +}, "~B"); +Clazz.defineMethod(c$, "finish", +function(){ +if (this.reader != null) this.reader.finalizeModelSet(); + else if (this.readerList != null) for (var i = 0; i < this.readerList.size(); i++) this.readerList.get(i).finalizeModelSet(); + +this.atoms = null; +this.atomSetAtomCounts = Clazz.newIntArray (16, 0); +this.atomSetAuxiliaryInfo = new Array(16); +this.atomSetInfo = new java.util.Hashtable(); +this.atomSetCount = 0; +this.atomSetNumbers = Clazz.newIntArray (16, 0); +this.atomSymbolicMap = new java.util.Hashtable(); +this.bonds = null; +this.iSet = -1; +this.readerList = null; +this.xtalSymmetry = null; +this.structures = new Array(16); +this.structureCount = 0; +this.trajectorySteps = null; +this.vibrationSteps = null; +}); +Clazz.defineMethod(c$, "discardPreviousAtoms", +function(){ +for (var i = this.ac; --i >= 0; ) this.atoms[i] = null; + +this.ac = 0; +this.clearMap(); +this.atomSetCount = 0; +this.iSet = -1; +for (var i = this.atomSetAuxiliaryInfo.length; --i >= 0; ) { +this.atomSetAtomCounts[i] = 0; +this.atomSetBondCounts[i] = 0; +this.atomSetAuxiliaryInfo[i] = null; +} +}); +Clazz.defineMethod(c$, "removeCurrentAtomSet", +function(){ +if (this.iSet < 0) return; +var ai = this.atomSetAtomIndexes[this.iSet]; +if (this.bsAtoms != null) this.bsAtoms.clearBits(ai, this.ac); +this.ac = ai; +this.atomSetAtomCounts[this.iSet] = 0; +this.iSet--; +this.atomSetCount--; +this.reader.doCheckUnitCell = false; +}); +Clazz.defineMethod(c$, "getHydrogenAtomCount", +function(){ +var n = 0; +for (var i = 0; i < this.ac; i++) if (this.atoms[i].elementNumber == 1 || this.atoms[i].elementSymbol.equals("H")) n++; + +return n; +}); +Clazz.defineMethod(c$, "newCloneAtom", +function(atom){ +var clone = atom.getClone(); +this.addAtom(clone); +return clone; +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "cloneFirstAtomSet", +function(atomCount){ +if (!this.allowMultiple) return 0; +this.newAtomSet(); +if (atomCount == 0) atomCount = this.atomSetAtomCounts[0]; +for (var i = 0; i < atomCount; ++i) this.newCloneAtom(this.atoms[i]); + +return this.ac; +}, "~N"); +Clazz.defineMethod(c$, "cloneAtomSetWithBonds", +function(isLast){ +var nBonds = this.atomSetBondCounts[isLast ? this.iSet : 0]; +var atomIncrement = (isLast ? this.cloneLastAtomSet() : this.cloneFirstAtomSet(0)); +if (atomIncrement > 0) for (var i = 0; i < nBonds; i++) { +var bond = this.bonds[this.bondCount - nBonds]; +this.addNewBondWithOrder(bond.atomIndex1 + atomIncrement, bond.atomIndex2 + atomIncrement, bond.order); +} +}, "~B"); +Clazz.defineMethod(c$, "cloneLastAtomSet", +function(){ +return this.cloneLastAtomSetFromPoints(0, null); +}); +Clazz.defineMethod(c$, "cloneLastAtomSetFromPoints", +function(ac, pts){ +if (!this.allowMultiple) return 0; +var count = (ac > 0 ? ac : this.getLastAtomSetAtomCount()); +var atomIndex = this.getLastAtomSetAtomIndex(); +this.newAtomSet(); +for (var i = 0; i < count; ++i) { +var atom = this.newCloneAtom(this.atoms[atomIndex++]); +if (pts != null) atom.setT(pts[i]); +} +return count; +}, "~N,~A"); +Clazz.defineMethod(c$, "getLastAtomSetAtomCount", +function(){ +return this.atomSetAtomCounts[this.iSet]; +}); +Clazz.defineMethod(c$, "getLastAtomSetAtomIndex", +function(){ +return this.ac - this.atomSetAtomCounts[this.iSet]; +}); +Clazz.defineMethod(c$, "addNewAtom", +function(){ +return this.addAtom( new J.adapter.smarter.Atom()); +}); +Clazz.defineMethod(c$, "addAtom", +function(atom){ +if (this.ac == this.atoms.length) { +if (this.ac > 200000) this.atoms = JU.AU.ensureLength(this.atoms, this.ac + 50000); + else this.atoms = JU.AU.doubleLength(this.atoms); +}if (this.atomSetCount == 0) this.newAtomSet(); +atom.index = this.ac; +this.atoms[this.ac++] = atom; +atom.atomSetIndex = this.iSet; +atom.atomSite = (this.fixedSite > 0 ? this.fixedSite - 1 : this.atomSetAtomCounts[this.iSet]++); +return atom; +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "addAtomWithMappedName", +function(atom){ +var atomName = this.addAtom(atom).atomName; +if (atomName != null) this.atomSymbolicMap.put(atomName, atom); +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "addAtomWithMappedSerialNumber", +function(atom){ +var atomSerial = this.addAtom(atom).atomSerial; +if (atomSerial != -2147483648) this.atomSymbolicMap.put("" + atomSerial, atom); +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "getAtomFromName", +function(atomName){ +return this.atomSymbolicMap.get(atomName); +}, "~S"); +Clazz.defineMethod(c$, "setAtomMapAnyCase", +function(){ +this.atomMapAnyCase = true; +var newMap = new java.util.Hashtable(); +newMap.putAll(this.atomSymbolicMap); +for (var e, $e = this.atomSymbolicMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +var uc = name.toUpperCase(); +if (!uc.equals(name)) newMap.put(uc, e.getValue()); +} +this.atomSymbolicMap = newMap; +}); +Clazz.defineMethod(c$, "getAtomIndex", +function(name){ +var a = this.atomSymbolicMap.get(name); +if (a == null && this.atomMapAnyCase) a = this.atomSymbolicMap.get(name.toUpperCase()); +return (a == null ? -1 : a.index); +}, "~S"); +Clazz.defineMethod(c$, "addNewBondWithOrder", +function(atomIndex1, atomIndex2, order){ +var b = null; +if (atomIndex1 >= 0 && atomIndex1 < this.ac && atomIndex2 >= 0 && atomIndex2 < this.ac && atomIndex1 != atomIndex2) { +b = new J.adapter.smarter.Bond(atomIndex1, atomIndex2, order); +this.addBond(b); +}return b; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "addNewBondFromNames", +function(atomName1, atomName2, order){ +return this.addNewBondWithOrderA(this.getAtomFromName(atomName1), this.getAtomFromName(atomName2), order); +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "addNewBondWithOrderA", +function(atom1, atom2, order){ +return (atom1 != null && atom2 != null ? this.addNewBondWithOrder(atom1.index, atom2.index, order) : null); +}, "J.adapter.smarter.Atom,J.adapter.smarter.Atom,~N"); +Clazz.defineMethod(c$, "addBond", +function(bond){ +if (this.trajectoryStepCount > 0) return; +if (bond.atomIndex1 < 0 || bond.atomIndex2 < 0 || bond.order < 0 || bond.atomIndex1 == bond.atomIndex2 || this.atoms[bond.atomIndex1].atomSetIndex != this.atoms[bond.atomIndex2].atomSetIndex) { +if (JU.Logger.debugging) { +JU.Logger.debug(">>>>>>BAD BOND:" + bond.atomIndex1 + "-" + bond.atomIndex2 + " order=" + bond.order); +}return; +}this.addBondNoCheck(bond); +}, "J.adapter.smarter.Bond"); +Clazz.defineMethod(c$, "addBondNoCheck", +function(bond){ +if (this.bondCount == this.bonds.length) this.bonds = JU.AU.arrayCopyObject(this.bonds, this.bondCount + 1024); +this.bonds[this.bondCount++] = bond; +this.atomSetBondCounts[this.iSet]++; +}, "J.adapter.smarter.Bond"); +Clazz.defineMethod(c$, "finalizeStructures", +function(){ +if (this.structureCount == 0) return; +this.bsStructuredModels = new JU.BS(); +var map = new java.util.Hashtable(); +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.modelStartEnd[0] == -1) { +s.modelStartEnd[0] = 0; +s.modelStartEnd[1] = this.atomSetCount - 1; +}this.bsStructuredModels.setBits(s.modelStartEnd[0], s.modelStartEnd[1] + 1); +if (s.strandCount == 0) continue; +var key = s.structureID + " " + s.modelStartEnd[0]; +var v = map.get(key); +var count = (v == null ? 0 : v.intValue()) + 1; +map.put(key, Integer.$valueOf(count)); +} +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.strandCount == 1) s.strandCount = map.get(s.structureID + " " + s.modelStartEnd[0]).intValue(); +} +}); +Clazz.defineMethod(c$, "addStructure", +function(structure){ +if (this.structureCount == this.structures.length) this.structures = JU.AU.arrayCopyObject(this.structures, this.structureCount + 32); +this.structures[this.structureCount++] = structure; +}, "J.adapter.smarter.Structure"); +Clazz.defineMethod(c$, "addVibrationVectorWithSymmetry", +function(iatom, vx, vy, vz, withSymmetry){ +if (!withSymmetry) { +this.addVibrationVector(iatom, vx, vy, vz); +return; +}var atomSite = this.atoms[iatom].atomSite; +var atomSetIndex = this.atoms[iatom].atomSetIndex; +for (var i = iatom; i < this.ac && this.atoms[i].atomSetIndex == atomSetIndex; i++) { +if (this.atoms[i].atomSite == atomSite) this.addVibrationVector(i, vx, vy, vz); +} +}, "~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "addVibrationVector", +function(iatom, x, y, z){ +if (!this.allowMultiple) iatom = iatom % this.ac; +return (this.atoms[iatom].vib = JU.V3.new3(x, y, z)); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setCoordinatesAreFractional", +function(tf){ +this.coordinatesAreFractional = tf; +this.setCurrentModelInfo("coordinatesAreFractional", Boolean.$valueOf(tf)); +if (tf) this.setGlobalBoolean(0); +}, "~B"); +Clazz.defineMethod(c$, "setAnisoBorU", +function(atom, data, type){ +this.haveAnisou = true; +atom.anisoBorU = data; +data[6] = type; +}, "J.adapter.smarter.Atom,~A,~N"); +Clazz.defineMethod(c$, "setU", +function(atom, i, val){ +var data = atom.anisoBorU; +if (data == null) this.setAnisoBorU(atom, data = Clazz.newFloatArray (8, 0), 8); +data[i] = val; +}, "J.adapter.smarter.Atom,~N,~N"); +Clazz.defineMethod(c$, "getXSymmetry", +function(){ +if (this.xtalSymmetry == null) this.xtalSymmetry = (J.api.Interface.getOption("adapter.smarter.XtalSymmetry", this.reader.vwr, "file")).set(this.reader); +return this.xtalSymmetry; +}); +Clazz.defineMethod(c$, "getSymmetry", +function(){ +return this.getXSymmetry().getSymmetry(); +}); +Clazz.defineMethod(c$, "setSymmetry", +function(symmetry){ +return (symmetry == null ? null : this.getXSymmetry().setSymmetry(symmetry)); +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "newFileSymmetry", +function(){ +return this.getXSymmetry().newFileSymmetry(); +}); +Clazz.defineMethod(c$, "setTensors", +function(){ +if (this.haveAnisou) this.getXSymmetry().setTensors(); +}); +Clazz.defineMethod(c$, "setInfo", +function(key, value){ +if (value == null) this.atomSetInfo.remove(key); + else this.atomSetInfo.put(key, value); +}, "~S,~O"); +Clazz.defineMethod(c$, "setAtomSetCollectionPartialCharges", +function(auxKey){ +if (!this.atomSetInfo.containsKey(auxKey)) return false; +var atomData = this.atomSetInfo.get(auxKey); +var n = atomData.size(); +for (var i = this.ac; --i >= 0; ) this.atoms[i].partialCharge = atomData.get(i % n).floatValue(); + +JU.Logger.info("Setting partial charges type " + auxKey); +return true; +}, "~S"); +Clazz.defineMethod(c$, "mapPartialCharge", +function(atomName, charge){ +this.getAtomFromName(atomName).partialCharge = charge; +}, "~S,~N"); +c$.fixPeriodic = Clazz.defineMethod(c$, "fixPeriodic", +function(pt, pt0){ +pt.x = J.adapter.smarter.AtomSetCollection.fixPoint(pt.x, pt0.x); +pt.y = J.adapter.smarter.AtomSetCollection.fixPoint(pt.y, pt0.y); +pt.z = J.adapter.smarter.AtomSetCollection.fixPoint(pt.z, pt0.z); +return pt; +}, "JU.P3,JU.P3"); +c$.fixPoint = Clazz.defineMethod(c$, "fixPoint", +function(x, x0){ +while (x - x0 > 0.9) { +x -= 1; +} +while (x - x0 < -0.9) { +x += 1; +} +return x; +}, "~N,~N"); +Clazz.defineMethod(c$, "finalizeTrajectoryAs", +function(trajectorySteps, vibrationSteps){ +this.trajectorySteps = trajectorySteps; +this.vibrationSteps = vibrationSteps; +this.trajectoryStepCount = trajectorySteps.size(); +this.finalizeTrajectory(); +}, "JU.Lst,JU.Lst"); +Clazz.defineMethod(c$, "finalizeTrajectory", +function(){ +if (this.trajectoryStepCount == 0) return; +var trajectory = this.trajectorySteps.get(0); +var vibrations = (this.vibrationSteps == null ? null : this.vibrationSteps.get(0)); +var n = (this.bsAtoms == null ? this.ac : this.bsAtoms.cardinality()); +if (this.vibrationSteps != null && vibrations != null && vibrations.length < n || trajectory.length < n) { +this.errorMessage = "File cannot be loaded as a trajectory"; +return; +}var v = new JU.V3(); +for (var i = 0, ii = 0; i < this.ac; i++) { +if (this.bsAtoms != null && !this.bsAtoms.get(i)) continue; +if (this.vibrationSteps != null) this.atoms[i].vib = (vibrations == null ? v : vibrations[ii]); +if (trajectory[ii] != null) this.atoms[i].setT(trajectory[ii]); +ii++; +} +this.setInfo("trajectorySteps", this.trajectorySteps); +if (this.vibrationSteps != null) this.setInfo("vibrationSteps", this.vibrationSteps); +if (this.ac == 0) this.ac = trajectory.length; +}); +Clazz.defineMethod(c$, "newAtomSet", +function(){ +this.newAtomSetClear(true); +}); +Clazz.defineMethod(c$, "newAtomSetClear", +function(doClearMap){ +if (!this.allowMultiple && this.iSet >= 0) this.reader.discardPreviousAtoms(); +this.bondIndex0 = this.bondCount; +if (this.isTrajectory) this.reader.discardPreviousAtoms(); +this.iSet = this.atomSetCount++; +if (this.atomSetCount > this.atomSetNumbers.length) { +this.atomSetAtomIndexes = JU.AU.doubleLengthI(this.atomSetAtomIndexes); +this.atomSetAtomCounts = JU.AU.doubleLengthI(this.atomSetAtomCounts); +this.atomSetBondCounts = JU.AU.doubleLengthI(this.atomSetBondCounts); +this.atomSetAuxiliaryInfo = JU.AU.doubleLength(this.atomSetAuxiliaryInfo); +}this.atomSetAtomIndexes[this.iSet] = this.ac; +if (this.atomSetCount + this.trajectoryStepCount > this.atomSetNumbers.length) { +this.atomSetNumbers = JU.AU.doubleLengthI(this.atomSetNumbers); +}if (this.isTrajectory) { +this.atomSetNumbers[this.iSet + this.trajectoryStepCount] = this.atomSetCount + this.trajectoryStepCount; +} else { +this.atomSetNumbers[this.iSet] = this.atomSetCount; +}if (doClearMap) { +this.clearMap(); +}this.setCurrentModelInfo("title", this.collectionName); +}, "~B"); +Clazz.defineMethod(c$, "clearMap", +function(){ +this.atomSymbolicMap.clear(); +this.atomMapAnyCase = false; +}); +Clazz.defineMethod(c$, "getAtomSetAtomIndex", +function(i){ +return this.atomSetAtomIndexes[i]; +}, "~N"); +Clazz.defineMethod(c$, "getAtomSetAtomCount", +function(i){ +return this.atomSetAtomCounts[i]; +}, "~N"); +Clazz.defineMethod(c$, "getAtomSetBondCount", +function(i){ +return this.atomSetBondCounts[i]; +}, "~N"); +Clazz.defineMethod(c$, "setAtomSetName", +function(atomSetName){ +if (atomSetName == null) return; +if (this.isTrajectory) { +this.setTrajectoryName(atomSetName); +return; +}var name0 = (this.iSet < 0 ? null : this.getAtomSetName(this.iSet)); +this.setModelInfoForSet("name", atomSetName, this.iSet); +if (this.reader != null && atomSetName.length > 0 && !atomSetName.equals(name0)) this.reader.appendLoadNote(atomSetName); +if (!this.allowMultiple) this.setCollectionName(atomSetName); +}, "~S"); +Clazz.defineMethod(c$, "setTrajectoryName", +function(name){ +if (this.trajectoryStepCount == 0) return; +if (this.trajectoryNames == null) { +this.trajectoryNames = new JU.Lst(); +}for (var i = this.trajectoryNames.size(); i < this.trajectoryStepCount; i++) this.trajectoryNames.addLast(null); + +this.trajectoryNames.set(this.trajectoryStepCount - 1, name); +}, "~S"); +Clazz.defineMethod(c$, "setCurrentAtomSetNumber", +function(atomSetNumber){ +this.setAtomSetNumber(this.iSet + (this.isTrajectory ? this.trajectoryStepCount : 0), atomSetNumber); +}, "~N"); +Clazz.defineMethod(c$, "setAtomSetNumber", +function(index, atomSetNumber){ +this.atomSetNumbers[index] = atomSetNumber; +}, "~N,~N"); +Clazz.defineMethod(c$, "setAtomSetModelProperty", +function(key, value){ +this.setAtomSetModelPropertyForSet(key, value, this.iSet); +}, "~S,~S"); +Clazz.defineMethod(c$, "setAtomSetModelPropertyForSet", +function(key, value, atomSetIndex){ +var p = this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "modelProperties"); +if (p == null) this.setModelInfoForSet("modelProperties", p = new java.util.Properties(), atomSetIndex); +p.put(key, value); +if (key.startsWith(".")) p.put(key.substring(1), value); +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "setAtomProperties", +function(key, data, atomSetIndex, isGroup){ +if ((typeof(data)=='string') && !(data).endsWith("\n")) data = data + "\n"; +if (atomSetIndex < 0) atomSetIndex = this.iSet; +var p = this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "atomProperties"); +if (p == null) this.setModelInfoForSet("atomProperties", p = new java.util.Hashtable(), atomSetIndex); +p.put(key, data); +}, "~S,~O,~N,~B"); +Clazz.defineMethod(c$, "setAtomSetPartialCharges", +function(auxKey){ +if (!this.atomSetAuxiliaryInfo[this.iSet].containsKey(auxKey)) { +return false; +}var atomData = this.getAtomSetAuxiliaryInfoValue(this.iSet, auxKey); +for (var i = atomData.size(); --i >= 0; ) { +this.atoms[i].partialCharge = atomData.get(i).floatValue(); +} +return true; +}, "~S"); +Clazz.defineMethod(c$, "getAtomSetAuxiliaryInfoValue", +function(index, key){ +return this.atomSetAuxiliaryInfo[index >= 0 ? index : this.iSet].get(key); +}, "~N,~S"); +Clazz.defineMethod(c$, "setCurrentModelInfo", +function(key, value){ +this.setModelInfoForSet(key, value, this.iSet); +}, "~S,~O"); +Clazz.defineMethod(c$, "setModelInfoForSet", +function(key, value, atomSetIndex){ +if (atomSetIndex < 0) return; +if (this.atomSetAuxiliaryInfo[atomSetIndex] == null) this.atomSetAuxiliaryInfo[atomSetIndex] = new java.util.Hashtable(); +if (value == null) this.atomSetAuxiliaryInfo[atomSetIndex].remove(key); + else this.atomSetAuxiliaryInfo[atomSetIndex].put(key, value); +}, "~S,~O,~N"); +Clazz.defineMethod(c$, "getAtomSetNumber", +function(atomSetIndex){ +return this.atomSetNumbers[atomSetIndex >= this.atomSetCount ? 0 : atomSetIndex]; +}, "~N"); +Clazz.defineMethod(c$, "getAtomSetName", +function(atomSetIndex){ +if (this.trajectoryNames != null && atomSetIndex < this.trajectoryNames.size()) return this.trajectoryNames.get(atomSetIndex); +if (atomSetIndex >= this.atomSetCount) atomSetIndex = this.atomSetCount - 1; +return this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "name"); +}, "~N"); +Clazz.defineMethod(c$, "getAtomSetAuxiliaryInfo", +function(atomSetIndex){ +var i = (atomSetIndex >= this.atomSetCount ? this.atomSetCount - 1 : atomSetIndex); +return (i < 0 ? null : this.atomSetAuxiliaryInfo[i]); +}, "~N"); +Clazz.defineMethod(c$, "setAtomSetEnergy", +function(energyString, value){ +if (this.iSet < 0) return; +JU.Logger.info("Energy for model " + (this.iSet + 1) + " = " + energyString); +this.setCurrentModelInfo("EnergyString", energyString); +this.setCurrentModelInfo("Energy", Float.$valueOf(value)); +this.setAtomSetModelProperty("Energy", "" + value); +}, "~S,~N"); +Clazz.defineMethod(c$, "setAtomSetFrequency", +function(mode, pathKey, label, freq, units){ +this.setAtomSetModelProperty("FreqValue", freq); +freq += " " + (units == null ? "cm^-1" : units); +var name = (label == null ? "" : label + " ") + freq; +this.setAtomSetName(name); +this.setAtomSetModelProperty("Frequency", freq); +this.setAtomSetModelProperty("Mode", "" + mode); +this.setModelInfoForSet("vibrationalMode", Integer.$valueOf(mode), this.iSet); +if (label != null) this.setAtomSetModelProperty("FrequencyLabel", label); +this.setAtomSetModelProperty(".PATH", (pathKey == null ? "" : pathKey + J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR + "Frequencies") + "Frequencies"); +return name; +}, "~N,~S,~S,~S,~S"); +Clazz.defineMethod(c$, "getBondList", +function(){ +var info = new Array(this.bondCount); +for (var i = 0; i < this.bondCount; i++) { +info[i] = Clazz.newArray(-1, [this.atoms[this.bonds[i].atomIndex1].atomName, this.atoms[this.bonds[i].atomIndex2].atomName, "" + this.bonds[i].order]); +} +return info; +}); +Clazz.defineMethod(c$, "centralize", +function(){ +var pt = new JU.P3(); +for (var i = 0; i < this.atomSetCount; i++) { +var n = this.atomSetAtomCounts[i]; +var atom0 = this.atomSetAtomIndexes[i]; +pt.set(0, 0, 0); +for (var j = atom0 + n; --j >= atom0; ) pt.add(this.atoms[j]); + +pt.scale(1 / n); +for (var j = atom0 + n; --j >= atom0; ) this.atoms[j].sub(pt); + +} +}); +Clazz.defineMethod(c$, "mergeTrajectories", +function(a){ +if (!this.isTrajectory || !a.isTrajectory || this.vibrationSteps != null) return; +for (var i = 0; i < a.trajectoryStepCount; i++) this.trajectorySteps.add(this.trajectoryStepCount++, a.trajectorySteps.get(i)); + +this.setInfo("trajectorySteps", this.trajectorySteps); +this.setInfo("ignoreUnitCell", a.atomSetInfo.get("ignoreUnitCell")); +}, "J.adapter.smarter.AtomSetCollection"); +Clazz.defineMethod(c$, "removeAtomSet", +function(imodel){ +if (this.bsAtoms == null) this.bsAtoms = JU.BSUtil.newBitSet2(0, this.ac); +var i0 = this.atomSetAtomIndexes[imodel]; +var nAtoms = this.atomSetAtomCounts[imodel]; +var i1 = i0 + nAtoms; +this.bsAtoms.clearBits(i0, i1); +for (var i = i1; i < this.ac; i++) this.atoms[i].atomSetIndex--; + +for (var i = imodel + 1; i < this.atomSetCount; i++) { +this.atomSetAuxiliaryInfo[i - 1] = this.atomSetAuxiliaryInfo[i]; +this.atomSetAtomIndexes[i - 1] = this.atomSetAtomIndexes[i]; +this.atomSetBondCounts[i - 1] = this.atomSetBondCounts[i]; +this.atomSetAtomCounts[i - 1] = this.atomSetAtomCounts[i]; +this.atomSetNumbers[i - 1] = this.atomSetNumbers[i]; +} +for (var i = 0; i < this.bondCount; i++) this.bonds[i].atomSetIndex = this.atoms[this.bonds[i].atomIndex1].atomSetIndex; + +this.atomSetAuxiliaryInfo[--this.atomSetCount] = null; +var n = 0; +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.modelStartEnd[0] == imodel && s.modelStartEnd[1] == imodel) { +this.structures[i] = null; +n++; +}} +if (n > 0) { +var ss = new Array(this.structureCount - n); +for (var i = 0, pt = 0; i < this.structureCount; i++) if (this.structures[i] != null) ss[pt++] = this.structures[i]; + +this.structures = ss; +}}, "~N"); +Clazz.defineMethod(c$, "removeLastUnselectedAtoms", +function(){ +var n = this.ac; +var nremoved = 0; +var i0 = this.getLastAtomSetAtomIndex(); +var nnow = 0; +for (var i = i0; i < n; i++) { +if (!this.bsAtoms.get(i)) { +nremoved++; +this.ac--; +this.atoms[i] = null; +continue; +}if (nremoved > 0) { +this.atoms[this.atoms[i].index = i - nremoved] = this.atoms[i]; +this.atoms[i] = null; +}nnow++; +} +this.atomSetAtomCounts[this.iSet] = nnow; +if (nnow == 0) { +this.iSet--; +this.atomSetCount--; +} else { +this.bsAtoms.setBits(i0, i0 + nnow); +}}); +Clazz.defineMethod(c$, "checkNoEmptyModel", +function(){ +while (this.atomSetCount > 0 && this.atomSetAtomCounts[this.atomSetCount - 1] == 0) this.atomSetCount--; + +}); +Clazz.defineMethod(c$, "getBSAtoms", +function(n){ +if (this.bsAtoms == null) { +this.bsAtoms = new JU.BS(); +if (n != 0) this.bsAtoms.setBits(0, (n < 0 ? this.ac : n)); +}return this.bsAtoms; +}, "~N"); +Clazz.defineMethod(c$, "setBSAtomsForSet", +function(iSet){ +if (this.bsAtoms != null) { +if (iSet < 0) iSet = this.iSet; +var pt = this.atomSetAtomIndexes[iSet]; +if (this.bsAtoms.nextSetBit(pt) < 0) { +var n = this.atomSetAtomCounts[iSet]; +this.bsAtoms.setBits(pt, pt + n); +}}}, "~N"); +Clazz.defineMethod(c$, "fix2Stereo", +function(){ +this.getBSAtoms(-1); +for (var i = this.bondCount; --i >= 0; ) { +var b = this.bonds[i]; +if (this.atoms[b.atomIndex2].elementSymbol.equals("H") && b.order != 1025 && b.order != 1041 && this.atoms[b.atomIndex1].elementSymbol.equals("C")) { +this.bsAtoms.clear(b.atomIndex2); +} else if (this.atoms[b.atomIndex1].elementSymbol.equals("H") && this.atoms[b.atomIndex2].elementSymbol.equals("C")) { +this.bsAtoms.clear(b.atomIndex1); +}} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetCollectionReader.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetCollectionReader.js new file mode 100755 index 000000000000..19771a96f821 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetCollectionReader.js @@ -0,0 +1,1325 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(["javajs.api.GenericLineReader", "JU.SB", "JV.Viewer"], "J.adapter.smarter.AtomSetCollectionReader", ["JU.BS", "$.Lst", "$.M3", "$.P3", "$.PT", "$.Quat", "$.V3", "J.adapter.smarter.Atom", "$.AtomSetCollection", "J.api.Interface", "$.JmolAdapter", "JU.BSUtil", "$.Logger", "$.SimpleUnitCell", "JV.FileManager", "$.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isBinary = false; +this.debugging = false; +this.requiresBSFilter = false; +this.primitiveToCrystal = null; +this.asc = null; +this.reader = null; +this.binaryDoc = null; +this.readerName = null; +this.htParams = null; +this.trajectorySteps = null; +this.domains = null; +this.validation = null; +this.dssr = null; +this.isConcatenated = false; +this.addedData = null; +this.addedDataKey = null; +this.thisBiomolecule = null; +this.lstNCS = null; +this.floatifyJavaDouble = true; +this.line = null; +this.prevline = null; +this.next = null; +this.ptLine = 0; +this.checkNearAtoms = true; +this.latticeType = null; +this.latticeCells = null; +this.fillRange = null; +this.doProcessLines = false; +this.iHaveUnitCell = false; +this.iHaveSymmetryOperators = false; +this.continuing = true; +this.vwr = null; +this.doApplySymmetry = false; +this.ignoreFileSymmetryOperators = false; +this.isTrajectory = false; +this.applySymmetryToBonds = false; +this.doCheckUnitCell = false; +this.getHeader = false; +this.isSequential = false; +this.optimize2D = false; +this.noHydrogens = false; +this.noMinimize = false; +this.is2D = false; +this.isMolecular = false; +this.templateAtomCount = 0; +this.modelNumber = 0; +this.vibrationNumber = 0; +this.desiredVibrationNumber = -2147483648; +this.bsModels = null; +this.useFileModelNumbers = false; +this.havePartialChargeFilter = false; +this.calculationType = "?"; +this.sgName = null; +this.ignoreFileUnitCell = false; +this.ignoreFileSpaceGroupName = false; +this.unitCellParams = null; +this.desiredModelNumber = -2147483648; +this.symmetry = null; +this.out = null; +this.iHaveFractionalCoordinates = false; +this.doPackUnitCell = false; +this.ptSupercell = null; +this.mustFinalizeModelSet = false; +this.forcePacked = false; +this.packingRange = null; +this.cellSlop = 1.0E-4; +this.rotateHexCell = false; +this.isPrimitive = false; +this.modDim = 0; +this.lowPrecision = false; +this.highprecision0 = false; +this.loadNote = null; +this.doConvertToFractional = false; +this.fileCoordinatesAreFractional = false; +this.merging = false; +this.symmetryRange = 0; +this.firstLastStep = null; +this.lastModelNumber = 2147483647; +this.desiredSpaceGroupIndex = -1; +this.latticeScaling = NaN; +this.unitCellOffset = null; +this.unitCellOffsetFractional = false; +this.moreUnitCellInfo = null; +this.paramsLattice = null; +this.paramsCentroid = false; +this.paramsPacked = false; +this.fileScaling = null; +this.fileOffset = null; +this.fileOffsetFractional = null; +this.filePath = null; +this.fileName = null; +this.baseAtomIndex = 0; +this.baseBondIndex = 0; +this.stateScriptVersionInt = 2147483647; +this.isFinalized = false; +this.noPack = false; +this.isSUPERCELL = false; +this.precision = 0; +this.haveModel = false; +this.previousSpaceGroup = null; +this.previousUnitCell = null; +this.nMatrixElements = 0; +this.ucItems = null; +this.matUnitCellOrientation = null; +this.bsFilter = null; +this.filter = null; +this.filterCased = null; +this.haveAtomFilter = false; +this.filterAltLoc = false; +this.filterGroup3 = false; +this.filterChain = false; +this.filterAtomName = false; +this.filterAtomType = false; +this.filterAtomTypeStr = null; +this.filterAtomNameTerminator = ";"; +this.filterElement = false; +this.filterHetero = false; +this.filterAllHetero = false; +this.filterEveryNth = false; +this.filterSymop = null; +this.filterN = 0; +this.nFiltered = 0; +this.doSetOrientation = false; +this.doCentralize = false; +this.addVibrations = false; +this.useAltNames = false; +this.ignoreStructure = false; +this.isDSSP1 = false; +this.allowPDBFilter = false; +this.doReadMolecularOrbitals = false; +this.reverseModels = false; +this.nameRequired = null; +this.doCentroidUnitCell = false; +this.centroidPacked = false; +this.strSupercell = null; +this.allow_a_len_1 = false; +this.slabXY = false; +this.polymerX = false; +this.fixUnitCell = false; +this.filteredPrecision = false; +this.filter1 = null; +this.filter2 = null; +this.filter1Cased = null; +this.filter2Cased = null; +this.matRot = null; +this.ms = null; +this.vibsFractional = false; +this.previousScript = null; +this.siteScript = null; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "AtomSetCollectionReader", null, javajs.api.GenericLineReader); +Clazz.prepareFields (c$, function(){ +this.next = Clazz.newIntArray (1, 0); +this.highprecision0 = JV.Viewer.isHighPrecision; +this.loadNote = new JU.SB(); +}); +Clazz.defineMethod(c$, "getPackingRangeValue", +function(def){ +return (this.packingRange != null ? this.packingRange.floatValue() : def != 0 ? def : 0.02); +}, "~N"); +Clazz.defineMethod(c$, "setup", +function(fullPath, htParams, readerOrDocument){ +this.setupASCR(fullPath, htParams, readerOrDocument); +}, "~S,java.util.Map,~O"); +Clazz.defineMethod(c$, "setupASCR", +function(fullPath, htParams, readerOrDocument){ +if (fullPath == null) return; +this.debugging = JU.Logger.debugging; +this.htParams = htParams; +this.filePath = JV.FileManager.stripTypePrefix("" + htParams.get("fullPathName")); +var i = this.filePath.lastIndexOf('/'); +this.fileName = this.filePath.substring(i + 1); +if (Clazz.instanceOf(readerOrDocument,"java.io.BufferedReader")) this.reader = readerOrDocument; + else if (Clazz.instanceOf(readerOrDocument,"javajs.api.GenericBinaryDocument")) this.binaryDoc = readerOrDocument; +}, "~S,java.util.Map,~O"); +Clazz.defineMethod(c$, "readData", +function(){ +this.initialize(); +this.asc = new J.adapter.smarter.AtomSetCollection(this.readerName, this, null, null); +try { +this.initializeReader(); +if (this.binaryDoc == null) { +if (this.line == null && this.continuing) this.rd(); +while (this.line != null && this.continuing) if (this.checkLine()) this.rd(); + +} else { +this.binaryDoc.setOutputChannel(this.out); +this.processBinaryDocument(); +}this.finalizeSubclassReader(); +if (!this.isFinalized) this.finalizeReaderASCR(); +} catch (e) { +JU.Logger.info("Reader error: " + e); +e.printStackTrace(); +this.setError(e); +} +if (this.reader != null) this.reader.close(); +if (this.binaryDoc != null) this.binaryDoc.close(); +return this.finish(); +}); +Clazz.defineMethod(c$, "fixBaseIndices", +function(){ +try { +var ii = this.htParams.get("baseModelIndex"); +if (ii == null) return; +var baseModelIndex = ii.intValue(); +this.baseAtomIndex += this.asc.ac; +this.baseBondIndex += this.asc.bondCount; +baseModelIndex += this.asc.atomSetCount; +this.htParams.put("baseAtomIndex", Integer.$valueOf(this.baseAtomIndex)); +this.htParams.put("baseBondIndex", Integer.$valueOf(this.baseBondIndex)); +this.htParams.put("baseModelIndex", Integer.$valueOf(baseModelIndex)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "readDataObject", +function(node){ +this.initialize(); +this.asc = new J.adapter.smarter.AtomSetCollection(this.readerName, this, null, null); +this.initializeReader(); +this.processDOM(node); +return this.finish(); +}, "~O"); +Clazz.defineMethod(c$, "processDOM", +function(DOMNode){ +}, "~O"); +Clazz.defineMethod(c$, "processBinaryDocument", +function(){ +}); +Clazz.defineMethod(c$, "initializeReader", +function(){ +}); +Clazz.defineMethod(c$, "checkLine", +function(){ +return true; +}); +Clazz.defineMethod(c$, "checkLastModel", +function(){ +if (this.isLastModel(this.modelNumber) && this.doProcessLines) return (this.continuing = this.doProcessLines = false); +this.doProcessLines = false; +return true; +}); +Clazz.defineMethod(c$, "isLastModel", +function(modelNumber){ +return (this.desiredModelNumber > 0 || modelNumber >= this.lastModelNumber); +}, "~N"); +Clazz.defineMethod(c$, "appendLoadNote", +function(info){ +if (info == null) { +this.loadNote = new JU.SB(); +return; +}this.loadNote.append(info).append("\n"); +JU.Logger.info(info); +}, "~S"); +Clazz.defineMethod(c$, "initializeTrajectoryFile", +function(){ +this.asc.addAtom( new J.adapter.smarter.Atom()); +this.trajectorySteps = this.htParams.get("trajectorySteps"); +if (this.trajectorySteps == null) this.htParams.put("trajectorySteps", this.trajectorySteps = new JU.Lst()); +}); +Clazz.defineMethod(c$, "finalizeSubclassReader", +function(){ +}); +Clazz.defineMethod(c$, "finalizeReaderASCR", +function(){ +this.isFinalized = true; +if (this.asc.atomSetCount > 0) { +if (this.asc.atomSetCount == 1) { +this.asc.setCurrentModelInfo("dbName", this.htParams.get("dbName")); +this.asc.setCurrentModelInfo("auxFiles", this.htParams.get("auxFiles")); +}this.applySymmetryAndSetTrajectory(); +this.asc.finalizeStructures(); +if (this.doCentralize) this.asc.centralize(); +if (this.fillRange != null) this.asc.setInfo("boundbox", this.fillRange); +var info = this.asc.getAtomSetAuxiliaryInfo(0); +if (info != null) { +if (this.domains != null) { +this.asc.setGlobalBoolean(5); +var s = (this.domains).getMapKeys(2, true); +var pt = s.indexOf("{ ", 2); +if (pt >= 0) s = s.substring(pt + 2); +pt = s.indexOf("_metadata"); +if (pt < 0) pt = s.indexOf("metadata"); +if (pt >= 0) s = s.substring(0, pt); +s = JU.PT.rep(JU.PT.replaceAllCharacters(s, "{}", "").trim(), "\n", "\n ") + "\n\nUse SHOW DOMAINS for details."; +this.appendLoadNote("\nDomains loaded:\n " + s); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("domains", this.domains); +} +}if (this.validation != null) { +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("validation", this.validation); +} +}if (this.dssr != null) { +info.put("dssrJSON", Boolean.TRUE); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("dssr", this.dssr); +} +}}}if (!this.floatifyJavaDouble) this.asc.setInfo("highPrecision", Boolean.TRUE); +this.setLoadNote(); +}); +Clazz.defineMethod(c$, "setLoadNote", +function(){ +var s = this.loadNote.toString(); +if (this.loadNote.length() > 0) this.asc.setInfo("modelLoadNote", s); +return s; +}); +Clazz.defineMethod(c$, "setIsPDB", +function(){ +this.asc.setGlobalBoolean(4); +if (this.htParams.get("pdbNoHydrogens") != null) this.asc.setInfo("pdbNoHydrogens", this.htParams.get("pdbNoHydrogens")); +if (this.checkFilterKey("ADDHYDROGENS")) this.asc.setInfo("pdbAddHydrogens", Boolean.TRUE); +}); +Clazz.defineMethod(c$, "setModelPDB", +function(isPDB){ +if (isPDB) this.asc.setGlobalBoolean(4); + else this.asc.clearGlobalBoolean(4); +this.asc.setCurrentModelInfo(JV.JC.getBoolName(4), isPDB ? Boolean.TRUE : null); +}, "~B"); +Clazz.defineMethod(c$, "finish", +function(){ +if (false != this.highprecision0) this.vwr.setBooleanPropertyTok("doubleprecision", 603979831, this.highprecision0); +var s = this.htParams.get("loadState"); +this.asc.setInfo("loadState", s == null ? "" : s); +s = this.htParams.get("smilesString"); +if (s != null) this.asc.setInfo("smilesString", s); +if (!this.htParams.containsKey("templateAtomCount")) this.htParams.put("templateAtomCount", Integer.$valueOf(this.asc.ac)); +if (this.bsFilter != null) { +this.htParams.put("filteredAtomCount", Integer.$valueOf(JU.BSUtil.cardinalityOf(this.bsFilter))); +this.htParams.put("bsFilter", this.bsFilter); +}if (!this.calculationType.equals("?")) this.asc.setInfo("calculationType", this.calculationType); +var name = this.asc.fileTypeName; +var fileType = name; +if (fileType.indexOf("(") >= 0) fileType = fileType.substring(0, fileType.indexOf("(")); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +this.asc.setModelInfoForSet("fileName", this.filePath, i); +this.asc.setModelInfoForSet("fileType", fileType, i); +} +this.asc.freeze(this.reverseModels); +if (this.asc.errorMessage != null) return this.asc.errorMessage + "\nfor file " + this.filePath + "\ntype " + name; +if (!this.merging && (this.asc.bsAtoms == null ? this.asc.ac == 0 : this.asc.bsAtoms.nextSetBit(0) < 0) && fileType.indexOf("DataOnly") < 0 && this.asc.atomSetInfo.get("dataOnly") == null) return "No atoms found\nfor file " + this.filePath + "\ntype " + name; +this.fixBaseIndices(); +return this.asc; +}); +Clazz.defineMethod(c$, "setError", +function(e){ +var s = e.getMessage(); +if (this.line == null) this.asc.errorMessage = "Error reading file at end of file \n" + s; + else this.asc.errorMessage = "Error reading file at line " + this.ptLine + ":\n" + this.line + "\n" + s; +e.printStackTrace(); +}, "Throwable"); +Clazz.defineMethod(c$, "initialize", +function(){ +if (this.htParams.containsKey("baseAtomIndex")) this.baseAtomIndex = (this.htParams.get("baseAtomIndex")).intValue(); +if (this.htParams.containsKey("baseBondIndex")) this.baseBondIndex = (this.htParams.get("baseBondIndex")).intValue(); +this.initializeSymmetry(); +this.vwr = this.htParams.remove("vwr"); +if (this.htParams.containsKey("stateScriptVersionInt")) this.stateScriptVersionInt = (this.htParams.get("stateScriptVersionInt")).intValue(); +this.packingRange = this.htParams.get("packingRange"); +var isHighPrecision = (this.htParams.get("highPrecision") != null); +if (this.packingRange == null && isHighPrecision) { +this.floatifyJavaDouble = false; +this.packingRange = Float.$valueOf(1.0E-4); +}this.merging = this.htParams.containsKey("merging"); +this.getHeader = this.htParams.containsKey("getHeader"); +this.isSequential = this.htParams.containsKey("isSequential"); +this.readerName = this.htParams.get("readerName"); +if (this.htParams.containsKey("outputChannel")) this.out = this.htParams.get("outputChannel"); +if (this.htParams.containsKey("vibrationNumber")) this.desiredVibrationNumber = (this.htParams.get("vibrationNumber")).intValue(); + else if (this.htParams.containsKey("modelNumber")) this.desiredModelNumber = (this.htParams.get("modelNumber")).intValue(); +this.applySymmetryToBonds = this.htParams.containsKey("applySymmetryToBonds"); +this.bsFilter = (this.requiresBSFilter ? this.htParams.get("bsFilter") : null); +this.setFilter(null); +this.fillRange = this.htParams.get("fillRange"); +this.paramsLattice = this.htParams.get("lattice"); +var o = this.htParams.get("supercell"); +this.noPack = this.checkFilterKey("NOPACK"); +if (this.strSupercell != null && !this.noPack) { +this.forcePacked = true; +}if (Clazz.instanceOf(o,"JU.P3")) { +var s = this.ptSupercell = o; +if (s.length() != 1) { +this.strSupercell = (Clazz.floatToInt(s.x)) + "a," + (Clazz.floatToInt(s.y)) + "b," + (Clazz.floatToInt(s.z)) + "c"; +this.isSUPERCELL = true; +}} else if ((typeof(o)=='string')) { +this.strSupercell = o; +this.isSUPERCELL = true; +}var ptFile = (this.htParams.containsKey("ptFile") ? (this.htParams.get("ptFile")).intValue() : -1); +this.isTrajectory = this.htParams.containsKey("isTrajectory"); +if (ptFile > 0 && this.htParams.containsKey("firstLastSteps")) { +var val = (this.htParams.get("firstLastSteps")).get(ptFile - 1); +if (Clazz.instanceOf(val,"JU.BS")) { +this.bsModels = val; +} else { +this.firstLastStep = val; +}} else if (this.htParams.containsKey("firstLastStep")) { +this.firstLastStep = this.htParams.get("firstLastStep"); +} else if (this.htParams.containsKey("bsModels")) { +this.bsModels = this.htParams.get("bsModels"); +}this.useFileModelNumbers = this.htParams.containsKey("useFileModelNumbers") || this.checkFilterKey("USEFILEMODELNUMBERS"); +if (this.htParams.containsKey("templateAtomCount")) this.templateAtomCount = (this.htParams.get("templateAtomCount")).intValue(); +if (this.bsModels != null || this.firstLastStep != null) this.desiredModelNumber = -2147483648; +if (this.bsModels == null && this.firstLastStep != null) { +if (this.firstLastStep[0] < 0) this.firstLastStep[0] = 0; +if (this.firstLastStep[2] == 0 || this.firstLastStep[1] < this.firstLastStep[0]) this.firstLastStep[1] = -1; +if (this.firstLastStep[2] < 1) this.firstLastStep[2] = 1; +this.bsModels = JU.BSUtil.newAndSetBit(this.firstLastStep[0]); +if (this.firstLastStep[1] > this.firstLastStep[0]) { +for (var i = this.firstLastStep[0]; i <= this.firstLastStep[1]; i += this.firstLastStep[2]) this.bsModels.set(i); + +}}if (this.bsModels != null && (this.firstLastStep == null || this.firstLastStep[1] != -1)) this.lastModelNumber = this.bsModels.length(); +this.symmetryRange = (this.htParams.containsKey("symmetryRange") ? (this.htParams.get("symmetryRange")).floatValue() : 0); +this.paramsCentroid = this.htParams.containsKey("centroid"); +this.paramsPacked = this.htParams.containsKey("packed"); +this.initializeSymmetryOptions(); +if (this.htParams.containsKey("spaceGroupIndex")) { +this.desiredSpaceGroupIndex = (this.htParams.get("spaceGroupIndex")).intValue(); +if (this.desiredSpaceGroupIndex == -2) this.sgName = this.htParams.get("spaceGroupName"); +this.ignoreFileSpaceGroupName = (this.desiredSpaceGroupIndex == -2 || this.desiredSpaceGroupIndex >= 0); +this.ignoreFileSymmetryOperators = (this.desiredSpaceGroupIndex != -1); +}if (this.htParams.containsKey("unitCellOffset")) { +this.fileScaling = JU.P3.new3(1, 1, 1); +this.fileOffset = this.htParams.get("unitCellOffset"); +this.fileOffsetFractional = JU.P3.newP(this.fileOffset); +this.unitCellOffsetFractional = this.htParams.containsKey("unitCellOffsetFractional"); +}if (this.htParams.containsKey("unitcell")) { +var fParams = this.htParams.get("unitcell"); +if (this.merging) this.setFractionalCoordinates(true); +if (fParams.length == 9) { +this.addExplicitLatticeVector(0, fParams, 0); +this.addExplicitLatticeVector(1, fParams, 3); +this.addExplicitLatticeVector(2, fParams, 6); +} else { +this.setUnitCell(fParams[0], fParams[1], fParams[2], fParams[3], fParams[4], fParams[5]); +}this.ignoreFileUnitCell = this.iHaveUnitCell; +if (this.merging && !this.iHaveUnitCell) this.setFractionalCoordinates(false); +}this.domains = this.htParams.get("domains"); +this.validation = this.htParams.get("validation"); +this.dssr = this.htParams.get("dssr"); +this.isConcatenated = this.htParams.containsKey("concatenate"); +}); +Clazz.defineMethod(c$, "parsePrecision", +function(s){ +if (!this.filteredPrecision) { +var pt = s.indexOf('.') + 1; +if (pt >= 0) { +var n = s.indexOf('('); +if (n < 0) { +this.precision = Math.max(this.precision, s.length - pt); +} else { +if (this.precision == 0) this.precision = n; +this.precision = Math.min(this.precision, n - 1 - pt); +}}}return this.parseFloatStr(s); +}, "~S"); +Clazz.defineMethod(c$, "setLowPrecision", +function(){ +this.lowPrecision = true; +this.cellSlop = 1.0E-4; +if (this.packingRange == null) this.packingRange = Double.$valueOf(1.0E-4); +}); +Clazz.defineMethod(c$, "setPrecision", +function(){ +var isHigh; +if (this.lowPrecision) { +isHigh = false; +this.precision = 4; +} else { +if (this.precision > 1000) { +this.precision -= 1000; +} else { +this.precision = Math.min(12, Math.max(4, this.precision)); +}isHigh = (this.precision >= 7); +if (isHigh) { +this.vwr.setBooleanProperty("doubleprecision", true); +if (JV.Viewer.isHighPrecision) { +this.cellSlop = 1.0E-12; +if (!this.paramsPacked) this.packingRange = Double.$valueOf(this.cellSlop); +this.asc.setInfo("highPrecision", Boolean.TRUE); +} else { +isHigh = false; +this.precision = 6; +this.appendLoadNote("Structure read has high precision but this version of Jmol uses float precision.\nUse JmolD.jar or JavaScript for full precision."); +}}}if (!isHigh) { +if (this.precision < 10) { +this.cellSlop = Math.pow(10, -this.precision); +}}this.symmetry.setPrecision(this.cellSlop); +this.unitCellParams[26] = this.cellSlop; +if (this.fileCoordinatesAreFractional) { +for (var i = this.asc.ac, n = this.asc.getLastAtomSetAtomIndex(); --i >= n; ) { +this.symmetry.twelfthify(this.asc.atoms[i]); +} +}this.appendLoadNote("Precision set to " + this.precision + "; packing set to " + (this.packingRange == null ? 0.02 : this.packingRange.floatValue())); +}); +Clazz.defineMethod(c$, "initializeSymmetryOptions", +function(){ +this.latticeCells = Clazz.newIntArray (4, 0); +this.doApplySymmetry = false; +var pt = this.paramsLattice; +if (pt == null || pt.length() == 0) { +if (!this.forcePacked && this.strSupercell == null) return; +pt = JU.P3.new3(1, 1, 1); +}this.latticeCells[0] = Clazz.floatToInt(pt.x); +this.latticeCells[1] = Clazz.floatToInt(pt.y); +this.latticeCells[2] = Clazz.floatToInt(pt.z); +if (Clazz.instanceOf(pt,"JU.T4")) this.latticeCells[3] = Clazz.floatToInt((pt).w); +this.doCentroidUnitCell = this.paramsCentroid; +if (this.doCentroidUnitCell && (this.latticeCells[2] == -1 || this.latticeCells[2] == 0)) this.latticeCells[2] = 1; +var isPacked = this.forcePacked || this.paramsPacked; +this.centroidPacked = this.doCentroidUnitCell && isPacked; +this.doPackUnitCell = !this.doCentroidUnitCell && (isPacked || this.latticeCells[2] < 0); +this.doApplySymmetry = (this.latticeCells[0] > 0 && this.latticeCells[1] > 0); +if (!this.doApplySymmetry) this.latticeCells = Clazz.newIntArray (3, 0); +}); +Clazz.defineMethod(c$, "doGetModel", +function(modelNumber, title){ +if (title != null && this.nameRequired != null && this.nameRequired.length > 0 && title.toUpperCase().indexOf(this.nameRequired) < 0) return false; +var isOK = (this.bsModels == null ? this.desiredModelNumber < 1 || modelNumber == this.desiredModelNumber : modelNumber > this.lastModelNumber ? false : modelNumber > 0 && this.bsModels.get(modelNumber - 1) || this.haveModel && this.firstLastStep != null && this.firstLastStep[1] < 0 && (this.firstLastStep[2] < 2 || (modelNumber - 1 - this.firstLastStep[0]) % this.firstLastStep[2] == 0)); +if (isOK && this.desiredModelNumber == 0) this.discardPreviousAtoms(); +this.haveModel = new Boolean (this.haveModel | isOK).valueOf(); +if (isOK) this.doProcessLines = true; +return isOK; +}, "~N,~S"); +Clazz.defineMethod(c$, "discardPreviousAtoms", +function(){ +this.asc.discardPreviousAtoms(); +}); +Clazz.defineMethod(c$, "initializeSymmetry", +function(){ +this.previousSpaceGroup = this.sgName; +this.previousUnitCell = this.unitCellParams; +this.iHaveUnitCell = this.ignoreFileUnitCell; +if (!this.ignoreFileUnitCell) { +this.unitCellParams = Clazz.newFloatArray (27, 0); +for (var i = 27; --i >= 0; ) this.unitCellParams[i] = NaN; + +this.unitCellParams[25] = this.latticeScaling; +this.unitCellParams[26] = this.cellSlop; +this.symmetry = null; +}if (!this.ignoreFileSpaceGroupName) this.sgName = "unspecified!"; +this.doCheckUnitCell = false; +}); +Clazz.defineMethod(c$, "newAtomSet", +function(name){ +if (this.asc.iSet >= 0) { +this.asc.newAtomSet(); +this.asc.setCollectionName(""); +} else { +this.asc.setCollectionName(name); +}this.asc.setModelInfoForSet("name", name, Math.max(0, this.asc.iSet)); +this.asc.setAtomSetName(name); +}, "~S"); +Clazz.defineMethod(c$, "cloneLastAtomSet", +function(ac, pts){ +var lastAtomCount = this.asc.getLastAtomSetAtomCount(); +this.asc.cloneLastAtomSetFromPoints(ac, pts); +if (this.asc.haveUnitCell) { +this.iHaveUnitCell = true; +this.doCheckUnitCell = true; +this.sgName = this.previousSpaceGroup; +this.unitCellParams = this.previousUnitCell; +}return lastAtomCount; +}, "~N,~A"); +Clazz.defineMethod(c$, "setSpaceGroupName", +function(name){ +if (this.ignoreFileSpaceGroupName || name == null) return; +var s = name.trim(); +if (s.length == 0 || s.equals("HM:") || s.equals(this.sgName)) return; +if (!s.equals("P1")) JU.Logger.info("Setting space group name to " + s); +this.sgName = s; +}, "~S"); +Clazz.defineMethod(c$, "setSymmetryOperator", +function(xyz){ +if (this.ignoreFileSymmetryOperators) return -1; +var isym = this.asc.getXSymmetry().addSpaceGroupOperation(xyz, true); +if (isym < 0) JU.Logger.warn("Skippings symmetry operation " + xyz); +this.iHaveSymmetryOperators = true; +return isym; +}, "~S"); +Clazz.defineMethod(c$, "initializeCartesianToFractional", +function(){ +for (var i = 0; i < 16; i++) if (!Float.isNaN(this.unitCellParams[6 + i])) return; + +for (var i = 0; i < 16; i++) this.unitCellParams[6 + i] = ((i % 5 == 0 ? 1 : 0)); + +this.nMatrixElements = 0; +}); +Clazz.defineMethod(c$, "clearUnitCell", +function(){ +if (this.ignoreFileUnitCell) return; +for (var i = 6; i < 22; i++) this.unitCellParams[i] = NaN; + +this.checkUnitCell(6); +}); +Clazz.defineMethod(c$, "setUnitCellItem", +function(i, x){ +if (this.ignoreFileUnitCell) return; +if (i == 0 && x == 1 && !this.allow_a_len_1 || i == 3 && x == 0) { +if (this.ucItems == null) this.ucItems = Clazz.newFloatArray (6, 0); +this.ucItems[i] = x; +return; +}if (this.ucItems != null && i < 6) this.ucItems[i] = x; +if (!Float.isNaN(x) && i >= 6 && Float.isNaN(this.unitCellParams[6])) this.initializeCartesianToFractional(); +this.unitCellParams[i] = x; +if (this.debugging) { +JU.Logger.debug("setunitcellitem " + i + " " + x); +}if (i < 6 || Float.isNaN(x)) this.iHaveUnitCell = this.checkUnitCell(6); + else if (++this.nMatrixElements == 12) this.iHaveUnitCell = this.checkUnitCell(22); +}, "~N,~N"); +Clazz.defineMethod(c$, "setUnitCell", +function(a, b, c, alpha, beta, gamma){ +if (this.ignoreFileUnitCell) return; +this.clearUnitCell(); +this.unitCellParams[0] = a; +this.unitCellParams[1] = b; +this.unitCellParams[2] = c; +if (alpha != 0) this.unitCellParams[3] = alpha; +if (beta != 0) this.unitCellParams[4] = beta; +if (gamma != 0) this.unitCellParams[5] = gamma; +this.iHaveUnitCell = this.checkUnitCell(6); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "addExplicitLatticeVector", +function(i, xyz, i0){ +if (this.ignoreFileUnitCell) return; +if (i == 0) for (var j = 0; j < 6; j++) this.unitCellParams[j] = 0; + +i = 6 + i * 3; +this.unitCellParams[i++] = xyz[i0++]; +this.unitCellParams[i++] = xyz[i0++]; +this.unitCellParams[i] = xyz[i0]; +if (Float.isNaN(this.unitCellParams[0])) { +for (i = 0; i < 6; i++) this.unitCellParams[i] = -1; + +}this.iHaveUnitCell = this.checkUnitCell(15); +if (this.iHaveUnitCell) { +if (this.slabXY || this.polymerX) this.unitCellParams[2] = -1; +if (this.polymerX) this.unitCellParams[1] = -1; +}}, "~N,~A,~N"); +Clazz.defineMethod(c$, "checkUnitCell", +function(n){ +for (var i = 0; i < n; i++) if (Float.isNaN(this.unitCellParams[i])) return false; + +this.fixFloatA(this.unitCellParams); +if (n == 22 && this.unitCellParams[0] == 1) { +if (this.unitCellParams[1] == 1 && this.unitCellParams[2] == 1 && this.unitCellParams[6] == 1 && this.unitCellParams[11] == 1 && this.unitCellParams[16] == 1) { +return false; +}}if (n == 6 && Float.isNaN(this.unitCellParams[6])) { +if (this.slabXY && this.unitCellParams[2] > 0) { +JU.SimpleUnitCell.addVectors(this.unitCellParams); +this.unitCellParams[2] = -1; +} else if (this.polymerX && this.unitCellParams[1] > 0) { +JU.SimpleUnitCell.addVectors(this.unitCellParams); +this.unitCellParams[1] = this.unitCellParams[2] = -1; +}}if (this.doApplySymmetry) { +this.getSymmetry(); +this.doConvertToFractional = !this.fileCoordinatesAreFractional; +}return true; +}, "~N"); +Clazz.defineMethod(c$, "getSymmetry", +function(){ +if (!this.iHaveUnitCell) return null; +if (this.symmetry == null) { +(this.symmetry = this.asc.newFileSymmetry()).setUnitCellFromParams(this.unitCellParams, false, this.cellSlop); +this.checkUnitCellOffset(); +}if (this.symmetry == null) this.iHaveUnitCell = false; + else this.symmetry.setSpaceGroupName(this.sgName); +return this.symmetry; +}); +Clazz.defineMethod(c$, "checkUnitCellOffset", +function(){ +if (this.fileOffsetFractional == null || this.symmetry == null) return; +this.fileOffset.setT(this.fileOffsetFractional); +if (this.unitCellOffsetFractional != this.fileCoordinatesAreFractional) { +if (this.unitCellOffsetFractional) this.symmetry.toCartesian(this.fileOffset, false); + else this.symmetry.toFractional(this.fileOffset, false); +}}); +Clazz.defineMethod(c$, "fractionalizeCoordinates", +function(toFrac){ +if (this.getSymmetry() == null) return; +var a = this.asc.atoms; +if (toFrac) for (var i = this.asc.ac; --i >= 0; ) this.symmetry.toFractional(a[i], false); + + else for (var i = this.asc.ac; --i >= 0; ) this.symmetry.toCartesian(a[i], false); + +this.setFractionalCoordinates(toFrac); +}, "~B"); +Clazz.defineMethod(c$, "setFractionalCoordinates", +function(TF){ +this.iHaveFractionalCoordinates = this.fileCoordinatesAreFractional = TF; +this.checkUnitCellOffset(); +}, "~B"); +Clazz.defineMethod(c$, "setFilterAtomTypeStr", +function(s){ +this.filterAtomTypeStr = s; +this.filterAtomNameTerminator = "\0"; +}, "~S"); +Clazz.defineMethod(c$, "setFilter", +function(filter0){ +if (filter0 == null) { +filter0 = this.htParams.get("filter"); +} else { +this.bsFilter = null; +this.filterCased = null; +}if (this.filterCased == null) this.filterCased = (filter0 == null ? null : filter0 + ";"); +if (filter0 != null) filter0 = filter0.toUpperCase(); +this.filter = filter0; +this.doSetOrientation = !this.checkFilterKey("NOORIENT"); +this.doCentralize = (!this.checkFilterKey("NOCENTER") && this.checkFilterKey("CENTER")); +this.addVibrations = !this.checkFilterKey("NOVIB"); +this.ignoreStructure = this.checkFilterKey("DSSP"); +this.isDSSP1 = this.checkFilterKey("DSSP1"); +this.doReadMolecularOrbitals = !this.checkFilterKey("NOMO"); +this.useAltNames = this.checkFilterKey("ALTNAME"); +this.reverseModels = this.checkFilterKey("REVERSEMODELS"); +this.allow_a_len_1 = this.checkFilterKey("TOPOS"); +this.slabXY = this.checkFilterKey("SLABXY"); +this.polymerX = !this.slabXY && this.checkFilterKey("POLYMERX"); +this.noHydrogens = this.checkFilterKey("NOH"); +this.noMinimize = this.checkFilterKey("NOMIN"); +this.optimize2D = this.checkFilterKey("2D") && !this.noHydrogens && !this.noMinimize; +if (this.filter == null) return; +this.fixUnitCell = this.checkFilterKey("FIXUNITCELL"); +if (this.checkFilterKey("LOWPRECISION")) { +this.setLowPrecision(); +}if (this.checkFilterKey("HETATM")) { +this.filterHetero = true; +this.filter = JU.PT.rep(this.filter, "HETATM", "HETATM-Y"); +this.filterCased = JU.PT.rep(this.filterCased, "HETATM", "HETATM-Y"); +}if (this.checkFilterKey("ATOM")) { +this.filterHetero = true; +this.filter = JU.PT.rep(this.filter, "ATOM", "HETATM-N"); +this.filterCased = JU.PT.rep(this.filterCased, "ATOM", "HETATM-N"); +}if (this.checkFilterKey("CELL=")) this.strSupercell = this.filter.substring(this.filter.indexOf("CELL=") + 5).toLowerCase(); +this.nameRequired = JU.PT.getQuotedAttribute(this.filter, "NAME"); +if (this.nameRequired != null) { +if (this.nameRequired.startsWith("'")) this.nameRequired = JU.PT.split(this.nameRequired, "'")[1]; + else if (this.nameRequired.startsWith("\"")) this.nameRequired = JU.PT.split(this.nameRequired, "\"")[1]; +this.filter = JU.PT.rep(this.filter, this.nameRequired, ""); +filter0 = this.filter = JU.PT.rep(this.filter, "NAME=", ""); +}this.filterAtomName = this.checkFilterKey("*.") || this.checkFilterKey("!."); +if (this.filter.startsWith("_") || this.filter.startsWith("!_") || this.filter.indexOf(";_") >= 0) this.filterElement = this.checkFilterKey("_"); +this.filterGroup3 = this.checkFilterKey("["); +this.filterChain = this.checkFilterKey(":"); +this.filterAltLoc = this.checkFilterKey("%"); +this.filterEveryNth = this.checkFilterKey("/="); +this.filterAllHetero = this.checkFilterKey("ALLHET"); +if (this.filterEveryNth) this.filterN = this.parseIntAt(this.filter, this.filter.indexOf("/=") + 2); + else if (this.filter.startsWith("=") || this.filter.indexOf(";=") >= 0) this.filterAtomType = this.checkFilterKey("="); +if (this.filterN == -2147483648) this.filterEveryNth = false; +this.haveAtomFilter = this.filterAtomName || this.filterAtomType || this.filterElement || this.filterGroup3 || this.filterChain || this.filterAltLoc || this.filterHetero || this.filterEveryNth || this.checkFilterKey("/="); +if (this.bsFilter == null) { +this.bsFilter = new JU.BS(); +this.htParams.put("bsFilter", this.bsFilter); +this.filter = (";" + this.filter + ";").$replace(',', ';'); +var p = this.getFilter("PRECISION="); +if (p != null) { +var prec = JU.PT.parseInt(p); +if (prec > 0 && prec <= 16) { +this.precision = 1000 + prec; +this.filteredPrecision = true; +}}var s = this.getFilter("LATTICESCALING="); +if (s != null && this.unitCellParams.length > 25) this.unitCellParams[25] = this.latticeScaling = this.parseFloatStr(s); +s = this.getFilter("SYMOP="); +if (s != null) this.filterSymop = " " + s + " "; +JU.Logger.info("filtering with " + this.filter); +if (this.haveAtomFilter) { +var ipt; +this.filter1Cased = this.filterCased; +this.filter2Cased = ""; +if ((ipt = this.filter.indexOf("|")) >= 0) { +this.filter1Cased = this.filter.substring(0, ipt).trim() + ";"; +this.filter2Cased = ";" + this.filter.substring(ipt).trim(); +}this.filter1 = this.filter1Cased.toUpperCase(); +this.filter2 = (this.filter2Cased.length == 0 ? null : this.filter2Cased.toUpperCase()); +}}}, "~S"); +Clazz.defineMethod(c$, "getFilterWithCase", +function(key){ +var pt = (this.filterCased == null ? -1 : this.filterCased.toUpperCase().indexOf(key.toUpperCase())); +return (pt < 0 ? null : this.filterCased.substring(pt + key.length, this.filterCased.indexOf(";", pt))); +}, "~S"); +Clazz.defineMethod(c$, "getFilter", +function(key){ +var pt = (this.filter == null ? -1 : this.filter.indexOf(key)); +return (pt < 0 ? null : this.filter.substring(pt + key.length, this.filter.indexOf(";", pt))); +}, "~S"); +Clazz.defineMethod(c$, "checkFilterKey", +function(key){ +return (this.filter != null && this.filter.indexOf(key) >= 0); +}, "~S"); +Clazz.defineMethod(c$, "checkAndRemoveFilterKey", +function(key){ +if (!this.checkFilterKey(key)) return false; +this.filter = JU.PT.rep(this.filter, key, ""); +if (this.filter.length < 3) this.filter = null; +return true; +}, "~S"); +Clazz.defineMethod(c$, "filterAtom", +function(atom, iAtom){ +if (!this.haveAtomFilter) return true; +var isOK = this.checkFilter(atom, this.filter1, this.filter1Cased); +if (this.filter2 != null) isOK = new Boolean (isOK | this.checkFilter(atom, this.filter2, this.filter2Cased)).valueOf(); +if (isOK && this.filterEveryNth && (!atom.isHetero || !this.filterAllHetero)) isOK = (((this.nFiltered++) % this.filterN) == 0); +this.bsFilter.setBitTo(iAtom >= 0 ? iAtom : this.asc.ac, isOK); +return isOK; +}, "J.adapter.smarter.Atom,~N"); +Clazz.defineMethod(c$, "checkFilter", +function(atom, f, fCased){ +if (atom.isHetero && this.filterAllHetero) return true; +return (!this.filterGroup3 || atom.group3 == null || !this.filterReject(f, "[", atom.group3.toUpperCase() + "]")) && (!this.filterAtomName || this.allowAtomName(atom.atomName, f)) && (this.filterAtomTypeStr == null || atom.atomName == null || atom.atomName.toUpperCase().indexOf("\0" + this.filterAtomTypeStr) >= 0) && (!this.filterElement || atom.elementSymbol == null || !this.filterReject(f, "_", atom.elementSymbol.toUpperCase() + ";")) && (!this.filterChain || atom.chainID == 0 || !this.filterReject(fCased, ":", "" + this.vwr.getChainIDStr(atom.chainID))) && (!this.filterAltLoc || atom.altLoc == '\0' || !this.filterReject(f, "%", "" + atom.altLoc)) && (!this.filterHetero || !this.allowPDBFilter || !this.filterReject(f, "HETATM", atom.isHetero ? "-Y" : "-N")); +}, "J.adapter.smarter.Atom,~S,~S"); +Clazz.defineMethod(c$, "rejectAtomName", +function(name){ +return this.filterAtomName && !this.allowAtomName(name, this.filter); +}, "~S"); +Clazz.defineMethod(c$, "allowAtomName", +function(atomName, f){ +return (atomName == null || !this.filterReject(f, ".", atomName.toUpperCase() + this.filterAtomNameTerminator)); +}, "~S,~S"); +Clazz.defineMethod(c$, "filterReject", +function(f, code, atomCode){ +return (f.indexOf(code) >= 0 && (f.indexOf("!" + code) >= 0) == (f.indexOf(code + atomCode) >= 0)); +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "set2D", +function(){ +this.asc.setInfo("is2D", Boolean.TRUE); +this.asc.getBSAtoms(-1); +if (this.noHydrogens) { +this.asc.setInfo("noHydrogen", Boolean.TRUE); +this.optimize2D = false; +}if (this.optimize2D) { +this.asc.fix2Stereo(); +this.asc.setInfo("doMinimize", Boolean.TRUE); +this.appendLoadNote("This model is 2D. Its 3D structure was generated."); +} else { +this.appendLoadNote("This model is 2D. Its 3D structure has not been generated; use LOAD \"\" FILTER \"2D\" to optimize 3D."); +this.addJmolScript("select thismodel;wireframe only"); +}}); +Clazz.defineMethod(c$, "doGetVibration", +function(vibrationNumber){ +return this.addVibrations && (this.desiredVibrationNumber <= 0 || vibrationNumber == this.desiredVibrationNumber); +}, "~N"); +Clazz.defineMethod(c$, "setTransform", +function(x1, y1, z1, x2, y2, z2, x3, y3, z3){ +if (this.matRot != null || !this.doSetOrientation) return; +this.matRot = new JU.M3(); +var v = JU.V3.new3(x1, y1, z1); +v.normalize(); +this.matRot.setColumnV(0, v); +v.set(x2, y2, z2); +v.normalize(); +this.matRot.setColumnV(1, v); +v.set(x3, y3, z3); +v.normalize(); +this.matRot.setColumnV(2, v); +this.asc.setInfo("defaultOrientationMatrix", JU.M3.newM3(this.matRot)); +var q = JU.Quat.newM(this.matRot); +this.asc.setInfo("defaultOrientationQuaternion", q); +JU.Logger.info("defaultOrientationMatrix = " + this.matRot); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setAtomCoordXYZ", +function(atom, x, y, z){ +atom.set(x, y, z); +this.setAtomCoord(atom); +}, "J.adapter.smarter.Atom,~N,~N,~N"); +Clazz.defineMethod(c$, "setAtomCoordScaled", +function(atom, tokens, i, f){ +if (atom == null) atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, this.parsePrecision(tokens[i]) * f, this.parsePrecision(tokens[i + 1]) * f, this.parsePrecision(tokens[i + 2]) * f); +return atom; +}, "J.adapter.smarter.Atom,~A,~N,~N"); +Clazz.defineMethod(c$, "setAtomCoordTokens", +function(atom, tokens, i){ +this.setAtomCoordXYZ(atom, this.parsePrecision(tokens[i]), this.parsePrecision(tokens[i + 1]), this.parsePrecision(tokens[i + 2])); +}, "J.adapter.smarter.Atom,~A,~N"); +Clazz.defineMethod(c$, "addAtomXYZSymName", +function(tokens, i, sym, name){ +var atom = this.asc.addNewAtom(); +if (sym != null) atom.elementSymbol = sym; +if (name != null) atom.atomName = name; +this.setAtomCoordTokens(atom, tokens, i); +return atom; +}, "~A,~N,~S,~S"); +Clazz.defineMethod(c$, "setAtomCoord", +function(atom){ +var mustFractionalize = (this.doConvertToFractional && !this.fileCoordinatesAreFractional && this.getSymmetry() != null); +if (this.fileScaling != null) { +atom.x = atom.x * this.fileScaling.x + this.fileOffset.x; +atom.y = atom.y * this.fileScaling.y + this.fileOffset.y; +atom.z = atom.z * this.fileScaling.z + this.fileOffset.z; +}if (mustFractionalize) { +if (!this.symmetry.haveUnitCell()) this.symmetry.setUnitCellFromParams(this.unitCellParams, false, NaN); +this.symmetry.toFractional(atom, false); +this.iHaveFractionalCoordinates = true; +}if (this.floatifyJavaDouble && this.fileCoordinatesAreFractional) this.fixFloatPt(atom, 100000.0); +this.doCheckUnitCell = true; +}, "J.adapter.smarter.Atom"); +Clazz.defineMethod(c$, "addSites", +function(htSites){ +this.asc.setCurrentModelInfo("pdbSites", htSites); +var sites = ""; +for (var entry, $entry = htSites.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var htSite = entry.getValue(); +var ch; +for (var i = name.length; --i >= 0; ) if (!JU.PT.isLetterOrDigit(ch = name.charAt(i)) && ch != '\'') name = name.substring(0, i) + "_" + name.substring(i + 1); + +var groups = htSite.get("groups"); +if (groups.length == 0) continue; +this.addSiteScript("@site_" + name + " " + groups); +this.addSiteScript("site_" + name + " = [\"" + JU.PT.rep(groups, ",", "\",\"") + "\"]"); +sites += ",\"site_" + name + "\""; +} +if (sites.length > 0) this.addSiteScript("site_list = [" + sites.substring(1) + "]"); +}, "java.util.Map"); +Clazz.defineMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +this.applySymTrajASCR(); +}); +Clazz.defineMethod(c$, "applySymTrajASCR", +function(){ +if (this.forcePacked) this.initializeSymmetryOptions(); +var doApply = (this.iHaveUnitCell && this.doCheckUnitCell); +var sym = null; +if (doApply) { +sym = this.getSymmetry(); +this.setPrecision(); +sym = this.asc.getXSymmetry().applySymmetryFromReader(sym); +} else { +this.asc.setTensors(); +}if (this.isTrajectory) this.asc.setTrajectory(); +if (this.moreUnitCellInfo != null) { +this.asc.setCurrentModelInfo("moreUnitCellInfo", this.moreUnitCellInfo); +this.moreUnitCellInfo = null; +}this.finalizeSubclassSymmetry(sym != null); +if (this.merging && sym != null && this.iHaveFractionalCoordinates && this.iHaveUnitCell && this.iHaveSymmetryOperators) { +this.fractionalizeCoordinates(false); +this.addJmolScript("modelkit spacegroup P1"); +}this.initializeSymmetry(); +return sym; +}); +Clazz.defineMethod(c$, "finalizeSubclassSymmetry", +function(haveSymmetry){ +}, "~B"); +Clazz.defineMethod(c$, "doPreSymmetry", +function(){ +}); +Clazz.defineMethod(c$, "finalizeMOData", +function(moData){ +this.asc.setCurrentModelInfo("moData", moData); +if (moData == null) return; +var orbitals = moData.get("mos"); +if (orbitals != null) JU.Logger.info(orbitals.size() + " molecular orbitals read in model " + this.asc.atomSetCount); +}, "java.util.Map"); +c$.getElementSymbol = Clazz.defineMethod(c$, "getElementSymbol", +function(elementNumber){ +return J.api.JmolAdapter.getElementSymbol(elementNumber); +}, "~N"); +Clazz.defineMethod(c$, "fillDataBlock", +function(data, minLineLen){ +var nLines = data.length; +for (var i = 0; i < nLines; i++) { +data[i] = JU.PT.getTokens(this.discardLinesUntilNonBlank()); +if (data[i].length < minLineLen) --i; +} +}, "~A,~N"); +Clazz.defineMethod(c$, "fill3x3", +function(tokens, pt){ +var a = Clazz.newDoubleArray (3, 3, 0); +var needTokens = (tokens == null); +var pt0 = pt; +for (var i = 0; i < 3; i++) { +if (needTokens || pt >= tokens.length) { +while ((tokens = JU.PT.getTokens(this.rd())).length < 3) { +} +pt = (pt0 < 0 ? tokens.length + pt0 : pt0); +}for (var j = 0; j < 3; j++) a[i][j] = Double.$valueOf(tokens[pt++]).doubleValue(); + +} +return a; +}, "~A,~N"); +Clazz.defineMethod(c$, "fillFloatArray", +function(s, width, data){ +var tokens = new Array(0); +var pt = 0; +for (var i = 0; i < data.length; i++) { +while (tokens != null && pt >= tokens.length) { +if (s == null) s = this.rd(); +if (width == 0) { +tokens = JU.PT.getTokens(s); +} else { +tokens = new Array(Clazz.doubleToInt(s.length / width)); +for (var j = 0; j < tokens.length; j++) tokens[j] = s.substring(j * width, (j + 1) * width); + +}s = null; +pt = 0; +} +if (tokens == null) break; +data[i] = this.parseFloatStr(tokens[pt++]); +} +return data; +}, "~S,~N,~A"); +Clazz.defineMethod(c$, "fillFrequencyData", +function(iAtom0, ac, modelAtomCount, ignore, isWide, col0, colWidth, atomIndexes, minLineLen, data){ +var withSymmetry = (ac != 0 && modelAtomCount != ac && data == null); +if (ac == 0 && atomIndexes != null) ac = atomIndexes.length; +var nLines = (isWide ? ac : ac * 3); +var nFreq = ignore.length; +if (data == null) { +data = new Array(nLines); +this.fillDataBlockFixed(data, col0, colWidth, minLineLen); +} else if (!isWide) { +var ptNonblank = minLineLen; +this.fillDataBlockFixed(data, col0, colWidth, -ptNonblank); +if (data[0] == null) return; +iAtom0 += this.parseIntAt(this.line, ptNonblank - 5) - 1; +}for (var i = 0, atomPt = 0; i < nLines; i++, atomPt++) { +var values = data[i]; +var valuesY = (isWide ? null : data[++i]); +var valuesZ = (isWide ? null : data[++i]); +var dataPt = values.length - (isWide ? nFreq * 3 : nFreq) - 1; +for (var j = 0, jj = 0; jj < nFreq; jj++) { +++dataPt; +var x = values[dataPt]; +if (x.charAt(0) == ')') x = x.substring(1); +var vx = this.parseFloatStr(x); +var vy = this.parseFloatStr(isWide ? values[++dataPt] : valuesY[dataPt]); +var vz = this.parseFloatStr(isWide ? values[++dataPt] : valuesZ[dataPt]); +if (ignore[jj]) continue; +var iAtom = (atomIndexes == null ? atomPt : atomIndexes[atomPt]); +if (iAtom < 0) continue; +iAtom += iAtom0 + modelAtomCount * j++; +if (this.debugging) JU.Logger.debug("atom " + iAtom + " vib" + j + ": " + vx + " " + vy + " " + vz); +this.asc.addVibrationVectorWithSymmetry(iAtom, vx, vy, vz, withSymmetry); +} +} +}, "~N,~N,~N,~A,~B,~N,~N,~A,~N,~A"); +Clazz.defineMethod(c$, "fillDataBlockFixed", +function(data, col0, colWidth, minLineLen){ +if (colWidth == 0) { +this.fillDataBlock(data, minLineLen); +return; +}var nLines = data.length; +for (var i = 0; i < nLines; i++) { +this.discardLinesUntilNonBlank(); +if (minLineLen < 0 && this.line.charAt(-minLineLen) == ' ') { +data[0] = null; +return; +}var nFields = Clazz.doubleToInt((this.line.length - col0 + 1) / colWidth); +data[i] = new Array(nFields); +for (var j = 0, start = col0; j < nFields; j++, start += colWidth) data[i][j] = this.line.substring(start, Math.min(this.line.length, start + colWidth)); + +} +}, "~A,~N,~N,~N"); +Clazz.defineMethod(c$, "readLines", +function(nLines){ +for (var i = nLines; --i >= 0; ) this.rd(); + +return this.line; +}, "~N"); +Clazz.defineMethod(c$, "discardLinesUntilStartsWith", +function(startsWith){ +while (this.rd() != null && !this.line.startsWith(startsWith)) { +} +return this.line; +}, "~S"); +Clazz.defineMethod(c$, "discardLinesUntilContains", +function(containsMatch){ +while (this.rd() != null && this.line.indexOf(containsMatch) < 0) { +} +return this.line; +}, "~S"); +Clazz.defineMethod(c$, "discardLinesUntilContains2", +function(s1, s2){ +while (this.rd() != null && this.line.indexOf(s1) < 0 && this.line.indexOf(s2) < 0) { +} +return this.line; +}, "~S,~S"); +Clazz.defineMethod(c$, "discardLinesUntilBlank", +function(){ +while (this.rd() != null && this.line.trim().length != 0) { +} +return this.line; +}); +Clazz.defineMethod(c$, "discardLinesUntilNonBlank", +function(){ +while (this.rd() != null && this.line.trim().length == 0) { +} +return this.line; +}); +Clazz.defineMethod(c$, "checkLineForScript", +function(line){ +this.line = line; +this.checkCurrentLineForScript(); +}, "~S"); +Clazz.defineMethod(c$, "checkCurrentLineForScript", +function(){ +if (this.line.endsWith("#noautobond")) { +this.line = this.line.substring(0, this.line.lastIndexOf('#')).trim(); +this.asc.setNoAutoBond(); +}var pt = this.line.indexOf("jmolscript:"); +if (pt >= 0) { +var script = this.line.substring(pt + 11, this.line.length); +if (script.indexOf("#") >= 0) { +script = script.substring(0, script.indexOf("#")); +}this.addJmolScript(script); +this.line = this.line.substring(0, pt).trim(); +}}); +Clazz.defineMethod(c$, "addJmolScript", +function(script){ +JU.Logger.info("#jmolScript: " + script); +if (this.previousScript == null) this.previousScript = ""; + else if (!this.previousScript.endsWith(";")) this.previousScript += ";"; +this.previousScript += script; +this.asc.setInfo("jmolscript", this.previousScript); +}, "~S"); +Clazz.defineMethod(c$, "addSiteScript", +function(script){ +if (this.siteScript == null) this.siteScript = ""; + else if (!this.siteScript.endsWith(";")) this.siteScript += ";"; +this.siteScript += script; +this.asc.setInfo("sitescript", this.siteScript); +}, "~S"); +Clazz.defineMethod(c$, "rd", +function(){ +return this.RL(); +}); +Clazz.defineMethod(c$, "RL", +function(){ +this.prevline = this.line; +this.line = this.reader.readLine(); +if (this.out != null && this.line != null) this.out.append(this.line).append("\n"); +this.ptLine++; +if (this.debugging && this.line != null) JU.Logger.info(this.line); +return this.line; +}); +c$.getStrings = Clazz.defineMethod(c$, "getStrings", +function(sinfo, nFields, width){ +var fields = new Array(nFields); +for (var i = 0, pt = 0; i < nFields; i++, pt += width) fields[i] = sinfo.substring(pt, pt + width); + +return fields; +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "getTokens", +function(){ +return JU.PT.getTokens(this.line); +}); +c$.getTokensFloat = Clazz.defineMethod(c$, "getTokensFloat", +function(s, f, n){ +if (f == null) f = Clazz.newFloatArray (n, 0); +JU.PT.parseFloatArrayDataN(JU.PT.getTokens(s), f, n); +return f; +}, "~S,~A,~N"); +Clazz.defineMethod(c$, "parseFloat", +function(){ +return JU.PT.parseFloatNext(this.line, this.next); +}); +Clazz.defineMethod(c$, "parseFloatStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseFloatNext(s, this.next); +}, "~S"); +Clazz.defineMethod(c$, "parseFloatRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseFloatRange(s, iEnd, this.next); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "parseInt", +function(){ +return JU.PT.parseIntNext(this.line, this.next); +}); +Clazz.defineMethod(c$, "parseIntStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseIntNext(s, this.next); +}, "~S"); +Clazz.defineMethod(c$, "parseIntAt", +function(s, iStart){ +this.next[0] = iStart; +return JU.PT.parseIntNext(s, this.next); +}, "~S,~N"); +Clazz.defineMethod(c$, "parseIntRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseIntRange(s, iEnd, this.next); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "parseToken", +function(){ +return JU.PT.parseTokenNext(this.line, this.next); +}); +Clazz.defineMethod(c$, "parseTokenStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseTokenNext(s, this.next); +}, "~S"); +Clazz.defineMethod(c$, "parseTokenNext", +function(s){ +return JU.PT.parseTokenNext(s, this.next); +}, "~S"); +Clazz.defineMethod(c$, "parseTokenRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseTokenRange(s, iEnd, this.next); +}, "~S,~N,~N"); +c$.getFortranFormatLengths = Clazz.defineMethod(c$, "getFortranFormatLengths", +function(s){ +var vdata = new JU.Lst(); +var n = 0; +var c = 0; +var factor = 1; +var inN = false; +var inCount = true; +s += ","; +for (var i = 0; i < s.length; i++) { +var ch = s.charAt(i); +switch ((ch).charCodeAt(0)) { +case 46: +inN = false; +continue; +case 44: +for (var j = 0; j < c; j++) vdata.addLast(Integer.$valueOf(n * factor)); + +inN = false; +inCount = true; +c = 0; +continue; +case 88: +n = c; +c = 1; +factor = -1; +continue; +} +var isDigit = JU.PT.isDigit(ch); +if (isDigit) { +if (inN) n = n * 10 + ch.charCodeAt(0) - 48; + else if (inCount) c = c * 10 + ch.charCodeAt(0) - 48; +} else if (JU.PT.isLetter(ch)) { +n = 0; +inN = true; +inCount = false; +factor = 1; +} else { +inN = false; +}} +return vdata; +}, "~S"); +Clazz.defineMethod(c$, "read3Vectors", +function(isBohr){ +var vectors = new Array(3); +var f = Clazz.newFloatArray (3, 0); +for (var i = 0; i < 3; i++) { +if (i > 0 || Float.isNaN(this.parseFloatStr(this.line))) { +this.rd(); +if (i == 0 && this.line != null) { +i = -1; +continue; +}}this.fillFloatArray(this.line, 0, f); +vectors[i] = new JU.V3(); +vectors[i].setA(f); +if (isBohr) vectors[i].scale(0.5291772); +} +return vectors; +}, "~B"); +Clazz.defineMethod(c$, "setElementAndIsotope", +function(atom, str){ +var isotope = this.parseIntStr(str); +if (isotope == -2147483648) { +atom.elementSymbol = str; +} else { +str = str.substring(("" + isotope).length); +atom.elementNumber = (str.length == 0 ? isotope : ((isotope << 7) + J.api.JmolAdapter.getElementNumber(str))); +}}, "J.adapter.smarter.Atom,~S"); +Clazz.defineMethod(c$, "finalizeModelSet", +function(){ +}); +Clazz.defineMethod(c$, "setChainID", +function(atom, label){ +atom.chainID = this.vwr.getChainID(label, true); +}, "J.adapter.smarter.Atom,~S"); +Clazz.overrideMethod(c$, "readNextLine", +function(){ +if (this.rd() != null && this.line.indexOf("#jmolscript:") >= 0) this.checkCurrentLineForScript(); +return this.line; +}); +Clazz.defineMethod(c$, "appendUunitCellInfo", +function(info){ +if (this.moreUnitCellInfo == null) this.moreUnitCellInfo = new JU.Lst(); +this.moreUnitCellInfo.addLast(info); +this.appendLoadNote(info); +}, "~S"); +Clazz.defineMethod(c$, "getInterface", +function(className){ +var o = J.api.Interface.getInterface(className, this.vwr, "file"); +if (o == null) throw new NullPointerException("Interface"); +return o; +}, "~S"); +Clazz.defineMethod(c$, "forceSymmetry", +function(andPack){ +if (andPack) this.doPackUnitCell = andPack; +if (!this.doApplySymmetry) { +this.doApplySymmetry = true; +this.latticeCells[0] = this.latticeCells[1] = this.latticeCells[2] = 1; +}}, "~B"); +Clazz.defineMethod(c$, "fixFloatA", +function(pts){ +if (this.floatifyJavaDouble) for (var i = pts.length; --i >= 0; ) if (!Float.isNaN(pts[i])) pts[i] = JU.PT.fixFloat(pts[i], 100000.0); + +}, "~A"); +Clazz.defineMethod(c$, "fixDoubleA", +function(pts){ +if (this.floatifyJavaDouble) for (var i = pts.length; --i >= 0; ) if (!Double.isNaN(pts[i])) pts[i] = JU.PT.fixDouble(pts[i], 100000.0); + +}, "~A"); +Clazz.defineMethod(c$, "fixFloatPt", +function(pt, prec){ +if (this.floatifyJavaDouble) JU.PT.fixPtFloats(pt, prec); +}, "JU.P3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetObject.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetObject.js new file mode 100755 index 000000000000..9db13d486e6e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/AtomSetObject.js @@ -0,0 +1,7 @@ +Clazz.declarePackage("J.adapter.smarter"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomSetIndex = 0; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "AtomSetObject", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Bond.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Bond.js new file mode 100755 index 000000000000..5a34304cb2b7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Bond.js @@ -0,0 +1,24 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(["J.adapter.smarter.AtomSetObject"], "J.adapter.smarter.Bond", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atomIndex1 = 0; +this.atomIndex2 = 0; +this.order = 0; +this.radius = -1; +this.colix = -1; +this.uniqueID = -1; +this.distance = 0; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "Bond", J.adapter.smarter.AtomSetObject); +Clazz.makeConstructor(c$, +function(atomIndex1, atomIndex2, order){ +Clazz.superConstructor (this, J.adapter.smarter.Bond, []); +this.atomIndex1 = atomIndex1; +this.atomIndex2 = atomIndex2; +this.order = order; +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[Bond " + this.atomIndex1 + " " + this.atomIndex2 + " " + this.order + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/BondIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/BondIterator.js new file mode 100755 index 000000000000..9bd28bd28e76 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/BondIterator.js @@ -0,0 +1,46 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(["J.api.JmolAdapterBondIterator"], "J.adapter.smarter.BondIterator", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bsAtoms = null; +this.bonds = null; +this.ibond = 0; +this.bond = null; +this.bondCount = 0; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "BondIterator", J.api.JmolAdapterBondIterator); +Clazz.makeConstructor(c$, +function(asc){ +Clazz.superConstructor (this, J.adapter.smarter.BondIterator, []); +this.bsAtoms = asc.bsAtoms; +this.bonds = asc.bonds; +this.bondCount = asc.bondCount; +this.ibond = 0; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +if (this.ibond == this.bondCount) return false; +while ((this.bond = this.bonds[this.ibond++]) == null || (this.bsAtoms != null && (!this.bsAtoms.get(this.bond.atomIndex1) || !this.bsAtoms.get(this.bond.atomIndex2)))) if (this.ibond == this.bondCount) return false; + +return true; +}); +Clazz.overrideMethod(c$, "getAtomUniqueID1", +function(){ +return Integer.$valueOf(this.bond.atomIndex1); +}); +Clazz.overrideMethod(c$, "getAtomUniqueID2", +function(){ +return Integer.$valueOf(this.bond.atomIndex2); +}); +Clazz.overrideMethod(c$, "getEncodedOrder", +function(){ +return this.bond.order; +}); +Clazz.overrideMethod(c$, "getRadius", +function(){ +return this.bond.radius; +}); +Clazz.overrideMethod(c$, "getColix", +function(){ +return this.bond.colix; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/MSInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/MSInterface.js new file mode 100755 index 000000000000..19af8c9701da --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/MSInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.declareInterface(J.adapter.smarter, "MSInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Resolver.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Resolver.js new file mode 100755 index 000000000000..cc9d71328548 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Resolver.js @@ -0,0 +1,487 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(null, "J.adapter.smarter.Resolver", ["java.io.BufferedInputStream", "java.util.StringTokenizer", "JU.LimitedLineReader", "$.PT", "$.Rdr", "J.adapter.smarter.AtomSetCollectionReader", "$.SmarterJmolAdapter", "J.api.Interface", "JU.Logger", "JV.JC"], function(){ +var c$ = Clazz.declareType(J.adapter.smarter, "Resolver", null); +c$.getReaderClassBase = Clazz.defineMethod(c$, "getReaderClassBase", +function(type){ +var name = type + "Reader"; +if (type.startsWith("Xml")) return "J.adapter.readers." + "xml." + name; +var key = ";" + type + ";"; +for (var i = 1; i < J.adapter.smarter.Resolver.readerSets.length; i += 2) if (J.adapter.smarter.Resolver.readerSets[i].indexOf(key) >= 0) return "J.adapter.readers." + J.adapter.smarter.Resolver.readerSets[i - 1] + name; + +return "J.adapter.readers." + "???." + name; +}, "~S"); +c$.getFileType = Clazz.defineMethod(c$, "getFileType", +function(br){ +try { +return J.adapter.smarter.Resolver.determineAtomSetCollectionReader(br, null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "java.io.BufferedReader"); +c$.getAtomCollectionReader = Clazz.defineMethod(c$, "getAtomCollectionReader", +function(fullName, type, readerOrDocument, htParams, ptFile){ +var readerName; +fullName = J.adapter.smarter.Resolver.fixDOSName(fullName); +var errMsg = null; +if (type == null && htParams != null) { +type = J.adapter.smarter.Resolver.getFileTypefromFilter(htParams.get("filter")); +}if (type != null) { +readerName = J.adapter.smarter.Resolver.getReaderFromType(type); +if (readerName == null) readerName = J.adapter.smarter.Resolver.getReaderFromType("Xml" + type); +if (readerName == null) errMsg = "unrecognized file format type " + type + " file=" + fullName; + else JU.Logger.info("The Resolver assumes " + readerName + " file=" + fullName); +} else { +readerName = J.adapter.smarter.Resolver.determineAtomSetCollectionReader(readerOrDocument, htParams); +if (readerName.charAt(0) == '\n') { +type = (htParams == null ? null : htParams.get("defaultType")); +if (type != null) { +type = J.adapter.smarter.Resolver.getReaderFromType(type); +if (type != null) readerName = type; +}}if (readerName.charAt(0) == '\n') errMsg = "unrecognized file format for file\n" + fullName + "\n" + J.adapter.smarter.Resolver.split(readerName, 50); + else if (readerName.equals("spt")) errMsg = "NOTE: file recognized as a script file: " + fullName + "\n"; + else if (!fullName.equals("ligand")) JU.Logger.info("The Resolver thinks " + readerName); +}if (errMsg != null) { +J.adapter.smarter.SmarterJmolAdapter.close(readerOrDocument); +return errMsg; +}htParams.put("ptFile", Integer.$valueOf(ptFile)); +if (ptFile <= 0) htParams.put("readerName", readerName); +return J.adapter.smarter.Resolver.getReader(readerName, htParams); +}, "~S,~S,~O,java.util.Map,~N"); +c$.getReader = Clazz.defineMethod(c$, "getReader", +function(readerName, htParams){ +var rdr = null; +var className = null; +var err = null; +className = J.adapter.smarter.Resolver.getReaderClassBase(readerName); +if ((rdr = J.api.Interface.getInterface(className, null, "reader")) == null) { +err = JV.JC.READER_NOT_FOUND + className; +JU.Logger.error(err); +return err; +}return rdr; +}, "~S,java.util.Map"); +c$.getReaderFromType = Clazz.defineMethod(c$, "getReaderFromType", +function(type){ +if (type.endsWith("(XML)")) { +type = "Xml" + type.substring(0, type.length - 5); +}type = ";" + type.toLowerCase() + ";"; +if (";zmatrix;cfi;c;vfi;v;mnd;jag;gms;g;gau;mp;nw;orc;pqs;qc;".indexOf(type) >= 0) return "Input"; +var set; +var pt; +for (var i = J.adapter.smarter.Resolver.readerSets.length; --i >= 0; ) { +if ((pt = (set = J.adapter.smarter.Resolver.readerSets[i--]).toLowerCase().indexOf(type)) >= 0) return set.substring(pt + 1, set.indexOf(";", pt + 2)); +} +return null; +}, "~S"); +c$.split = Clazz.defineMethod(c$, "split", +function(a, n){ +var s = ""; +var l = a.length; +for (var i = 0, j = 0; i < l; i = j) s += a.substring(i, (j = Math.min(i + n, l))) + "\n"; + +return s; +}, "~S,~N"); +c$.DOMResolve = Clazz.defineMethod(c$, "DOMResolve", +function(htParams){ +var rdrName = J.adapter.smarter.Resolver.getXmlType(htParams.get("nameSpaceInfo")); +if (JU.Logger.debugging) { +JU.Logger.debug("The Resolver thinks " + rdrName); +}htParams.put("readerName", rdrName); +return J.adapter.smarter.Resolver.getReader("XmlReader", htParams); +}, "java.util.Map"); +c$.determineAtomSetCollectionReader = Clazz.defineMethod(c$, "determineAtomSetCollectionReader", +function(readerOrDocument, htParams){ +var readerName; +if (Clazz.instanceOf(readerOrDocument,"javajs.api.GenericBinaryDocument")) { +var doc = readerOrDocument; +readerName = J.adapter.smarter.Resolver.getBinaryType(doc.getInputStream()); +return (readerName == null ? "binary file type not recognized" : readerName); +}if (Clazz.instanceOf(readerOrDocument,"java.io.InputStream")) { +readerName = J.adapter.smarter.Resolver.getBinaryType(readerOrDocument); +if (readerName != null) return readerName; +readerOrDocument = JU.Rdr.getBufferedReader( new java.io.BufferedInputStream(readerOrDocument), null); +}var rdr = readerOrDocument; +var llr = new JU.LimitedLineReader(rdr, 16384); +var leader = llr.getHeader(64).trim(); +if (leader.length == 0) throw new java.io.EOFException("File contains no data."); +if (leader.indexOf("PNG") == 1 && leader.indexOf("PNGJ") >= 0) return "pngj"; +if (leader.indexOf("PNG") == 1 || leader.indexOf("JPG") == 1 || leader.indexOf("JFIF") == 6) return "spt"; +if (leader.indexOf("\"num_pairs\"") >= 0) return "dssr"; +if (leader.indexOf("output.31\n") >= 0) return "GenNBO|output.31"; +if ((readerName = J.adapter.smarter.Resolver.checkFileStart(leader)) != null) { +return (readerName.equals("Xml") ? J.adapter.smarter.Resolver.getXmlType(llr.getHeader(0)) : readerName); +}var msg; +var isJSONMap = (leader.charAt(0) == '{'); +var lines = new Array(16); +var nLines = 0; +for (var i = 0; i < lines.length; ++i) { +lines[i] = llr.readLineWithNewline(); +if (lines[i].length > 0) nLines++; +} +if ((readerName = J.adapter.smarter.Resolver.checkSpecial1(nLines, lines, leader)) != null) return readerName; +if ((readerName = J.adapter.smarter.Resolver.checkLineStarts(lines)) != null) return readerName; +if ((readerName = J.adapter.smarter.Resolver.checkHeaderContains(llr.getHeader(0))) != null) { +return readerName; +}if ((readerName = J.adapter.smarter.Resolver.checkSpecial2(lines)) != null) return readerName; +if (isJSONMap) { +var json = rdr.readLine(); +if ((readerName = J.adapter.smarter.Resolver.checkJSONContains(json)) != null) { +if (htParams != null) htParams.put("fileData", json); +return readerName; +}msg = (htParams == null ? null : json.substring(0, Math.min(100, json.length))); +} else { +msg = (htParams == null ? null : "\n" + lines[0] + "\n" + lines[1] + "\n" + lines[2] + "\n"); +}return msg; +}, "~O,java.util.Map"); +c$.getBinaryType = Clazz.defineMethod(c$, "getBinaryType", +function(inputStream){ +var magic4 = null; +return (JU.Rdr.isPickleS(inputStream) ? "PyMOL" : (JU.Rdr.getMagic(inputStream, 1)[0] & 0xFF) == 0xDE ? "MMTF" : (JU.Rdr.getMagic(inputStream, 10)[9] & 0xFF) == 0xB6 ? "BCIF" : J.adapter.smarter.Resolver.bytesMatch((magic4 = JU.Rdr.getMagic(inputStream, 4)), J.adapter.smarter.Resolver.cdxMagic) ? "CDX" : J.adapter.smarter.Resolver.bytesMatch(magic4, J.adapter.smarter.Resolver.cmdfMagic) ? "Cmdf" : null); +}, "java.io.InputStream"); +c$.bytesMatch = Clazz.defineMethod(c$, "bytesMatch", +function(a, b){ +if (b.length > a.length) return false; +for (var i = b.length; --i >= 0; ) { +if (a[i] != b[i]) return false; +} +return true; +}, "~A,~A"); +c$.checkFileStart = Clazz.defineMethod(c$, "checkFileStart", +function(leader){ +for (var i = 0; i < J.adapter.smarter.Resolver.fileStartsWithRecords.length; ++i) { +var recordTags = J.adapter.smarter.Resolver.fileStartsWithRecords[i]; +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +if (leader.startsWith(recordTag)) return recordTags[0]; +} +} +return null; +}, "~S"); +c$.checkSpecial1 = Clazz.defineMethod(c$, "checkSpecial1", +function(nLines, lines, leader){ +if (nLines == 1 && lines[0].length > 0 && JU.PT.isDigit(lines[0].charAt(0))) return "Jme"; +if (J.adapter.smarter.Resolver.checkMopacGraphf(lines)) return "MopacGraphf"; +if (J.adapter.smarter.Resolver.checkOdyssey(lines)) return "Odyssey"; +switch (J.adapter.smarter.Resolver.checkMol(lines)) { +case 1: +case 3: +case 2000: +case 3000: +return "Mol"; +} +switch (J.adapter.smarter.Resolver.checkXyz(lines)) { +case 1: +return "Xyz"; +case 2: +return "Bilbao"; +case 3: +return "PWmat"; +} +if (J.adapter.smarter.Resolver.checkAlchemy(lines[0])) return "Alchemy"; +if (J.adapter.smarter.Resolver.checkFoldingXyz(lines)) return "FoldingXyz"; +if (J.adapter.smarter.Resolver.checkXSF(lines)) return "Xcrysden"; +if (J.adapter.smarter.Resolver.checkCube(lines)) return "Cube"; +if (J.adapter.smarter.Resolver.checkWien2k(lines)) return "Wien2k"; +if (J.adapter.smarter.Resolver.checkAims(lines)) return "Aims"; +if (J.adapter.smarter.Resolver.checkGenNBO(lines, leader)) return "GenNBO"; +return null; +}, "~N,~A,~S"); +c$.checkXSF = Clazz.defineMethod(c$, "checkXSF", +function(lines){ +var i = 0; +while (lines[i].length == 0) { +i++; +} +return (lines[i].startsWith("ANIMSTEPS ") || lines[i].equals("ATOMS\n") && JU.PT.parseInt(lines[i + 1]) > 0); +}, "~A"); +c$.checkAims = Clazz.defineMethod(c$, "checkAims", +function(lines){ +for (var i = 0; i < lines.length; i++) { +if (lines[i].startsWith("mol 1")) return false; +var tokens = JU.PT.getTokens(lines[i]); +if (tokens.length == 0) continue; +if (tokens[0].startsWith("atom") && tokens.length > 4 && Float.isNaN(JU.PT.parseFloat(tokens[4])) || tokens[0].startsWith("multipole") && tokens.length >= 6 || tokens[0].startsWith("lattice_vector") && tokens.length >= 4) return true; +} +return false; +}, "~A"); +c$.checkAlchemy = Clazz.defineMethod(c$, "checkAlchemy", +function(line){ +var pt; +if ((pt = line.indexOf("ATOMS")) > 0 && line.indexOf("BONDS") > pt) { +var n = JU.PT.parseInt(line.substring(0, pt).trim()); +return (n > 0); +}return false; +}, "~S"); +c$.isInt = Clazz.defineMethod(c$, "isInt", +function(s){ +J.adapter.smarter.Resolver.n[0] = 0; +s = s.trim(); +return s.length > 0 && JU.PT.parseIntNext(s, J.adapter.smarter.Resolver.n) != -2147483648 && J.adapter.smarter.Resolver.n[0] == s.length; +}, "~S"); +c$.isFloat = Clazz.defineMethod(c$, "isFloat", +function(s){ +return !Float.isNaN(JU.PT.parseFloat(s)); +}, "~S"); +c$.checkCube = Clazz.defineMethod(c$, "checkCube", +function(lines){ +for (var j = 2; j <= 5; j++) { +var tokens2 = new java.util.StringTokenizer(lines[j]); +var n = tokens2.countTokens(); +if (!(n == 4 || j == 2 && n == 5) || !J.adapter.smarter.Resolver.isInt(tokens2.nextToken())) return false; +for (var i = 3; --i >= 0; ) if (!J.adapter.smarter.Resolver.isFloat(tokens2.nextToken())) return false; + +if (n == 5 && !J.adapter.smarter.Resolver.isInt(tokens2.nextToken())) return false; +} +return true; +}, "~A"); +c$.checkFoldingXyz = Clazz.defineMethod(c$, "checkFoldingXyz", +function(lines){ +var tokens = new java.util.StringTokenizer(lines[0].trim(), " \t"); +if (tokens.countTokens() < 2 || !J.adapter.smarter.Resolver.isInt(tokens.nextToken().trim())) return false; +var secondLine = lines[1].trim(); +if (secondLine.length == 0) secondLine = lines[2].trim(); +tokens = new java.util.StringTokenizer(secondLine, " \t"); +return (tokens.countTokens() > 0 && J.adapter.smarter.Resolver.isInt(tokens.nextToken().trim())); +}, "~A"); +c$.checkGenNBO = Clazz.defineMethod(c$, "checkGenNBO", +function(lines, leader){ +return (leader.indexOf("$GENNBO") >= 0 || lines[1].startsWith(" Basis set information needed for plotting orbitals") || lines[1].indexOf("s in the AO basis:") >= 0 || lines[1].indexOf("***** NBO ") >= 0 || lines[2].indexOf(" N A T U R A L A T O M I C O R B I T A L") >= 0); +}, "~A,~S"); +c$.checkMol = Clazz.defineMethod(c$, "checkMol", +function(lines){ +var line4trimmed = ("X" + lines[3]).trim().toUpperCase(); +if (line4trimmed.length < 7 || line4trimmed.indexOf(".") >= 0 || lines[0].startsWith("data_")) return 0; +if (line4trimmed.endsWith("V2000")) return 2000; +if (line4trimmed.endsWith("V3000")) return 3000; +var n1 = JU.PT.parseInt(lines[3].substring(0, 3).trim()); +var n2 = JU.PT.parseInt(lines[3].substring(3, 6).trim()); +return (n1 > 0 && n2 >= 0 && lines[0].indexOf("@") != 0 && lines[1].indexOf("@") != 0 && lines[2].indexOf("@") != 0 ? 3 : 0); +}, "~A"); +c$.checkMopacGraphf = Clazz.defineMethod(c$, "checkMopacGraphf", +function(lines){ +return (lines[0].indexOf("MOPAC-Graphical data") > 2); +}, "~A"); +c$.checkOdyssey = Clazz.defineMethod(c$, "checkOdyssey", +function(lines){ +var i; +for (i = 0; i < lines.length; i++) if (!lines[i].startsWith("C ") && lines[i].length != 0) break; + +if (i >= lines.length || lines[i].charAt(0) != ' ' || (i = i + 2) + 1 >= lines.length) return false; +var l = lines[i]; +if (l.length < 3) return false; +var spin = JU.PT.parseInt(l.substring(2).trim()); +var charge = JU.PT.parseInt(l.substring(0, 2).trim()); +if ((l = lines[i + 1]).length < 2) return false; +var atom1 = JU.PT.parseInt(l.substring(0, 2).trim()); +if (spin < 0 || spin > 5 || atom1 <= 0 || charge == -2147483648 || charge > 5) return false; +var atomline = J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(l, null, 5); +return !Float.isNaN(atomline[1]) && !Float.isNaN(atomline[2]) && !Float.isNaN(atomline[3]) && Float.isNaN(atomline[4]); +}, "~A"); +c$.checkWien2k = Clazz.defineMethod(c$, "checkWien2k", +function(lines){ +return (lines[2].startsWith("MODE OF CALC=") || lines[2].startsWith(" RELA") || lines[2].startsWith(" NREL")); +}, "~A"); +c$.checkXyz = Clazz.defineMethod(c$, "checkXyz", +function(lines){ +var checkPWM = false; +var i = JU.PT.parseInt(lines[0]); +if (i >= 0 && lines[0].trim().equals("" + i)) { +if (J.adapter.smarter.Resolver.isInt(lines[2])) return 2; +checkPWM = true; +}if (lines[0].indexOf("Bilbao Crys") >= 0) return 2; +var s; +if ((checkPWM || lines.length > 5 && i > 0) && ((s = lines[1].trim().toUpperCase()).startsWith("LATTICE VECTOR") || s.equals("LATTICE"))) return 3; +return (checkPWM ? 1 : 0); +}, "~A"); +c$.checkLineStarts = Clazz.defineMethod(c$, "checkLineStarts", +function(lines){ +for (var i = 0; i < J.adapter.smarter.Resolver.lineStartsWithRecords.length; ++i) { +var recordTags = J.adapter.smarter.Resolver.lineStartsWithRecords[i]; +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +for (var k = 0; k < lines.length; k++) { +if (lines[k].startsWith(recordTag)) return recordTags[0]; +} +} +} +return null; +}, "~A"); +c$.checkHeaderContains = Clazz.defineMethod(c$, "checkHeaderContains", +function(header){ +for (var i = 0; i < J.adapter.smarter.Resolver.headerContainsRecords.length; ++i) { +var fileType = J.adapter.smarter.Resolver.checkHeaderRecords(header, J.adapter.smarter.Resolver.headerContainsRecords[i]); +if (fileType != null) return fileType; +} +return null; +}, "~S"); +c$.checkJSONContains = Clazz.defineMethod(c$, "checkJSONContains", +function(header){ +for (var i = 0; i < J.adapter.smarter.Resolver.jsonContainsRecords.length; ++i) { +var fileType = J.adapter.smarter.Resolver.checkHeaderRecords(header, J.adapter.smarter.Resolver.jsonContainsRecords[i]); +if (fileType != null) return fileType; +} +return null; +}, "~S"); +c$.checkHeaderRecords = Clazz.defineMethod(c$, "checkHeaderRecords", +function(header, recordTags){ +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +if (header.indexOf(recordTag) < 0) continue; +var type = recordTags[0]; +if (!type.equals("Xml")) return type; +if (header.indexOf("/AFLOWDATA/") >= 0 || header.indexOf("-- Structure PRE --") >= 0) return "AFLOW"; +return (header.indexOf("= 0) ? J.adapter.smarter.Resolver.getXmlType(header) : null); +} +return null; +}, "~S,~A"); +c$.getXmlType = Clazz.defineMethod(c$, "getXmlType", +function(header){ +if (header.indexOf("http://www.molpro.net/") >= 0) { +return "XmlMolpro"; +}if (header.indexOf("odyssey") >= 0) { +return "XmlOdyssey"; +}if (header.indexOf("C3XML") >= 0) { +return "XmlChem3d"; +}if (header.indexOf("CDXML") >= 0) { +return "XmlCdx"; +}if (header.indexOf("arguslab") >= 0) { +return "XmlArgus"; +}if (header.indexOf("jvxl") >= 0 || header.indexOf("http://www.xml-cml.org/schema") >= 0 || header.indexOf("cml:") >= 0 || header.indexOf("") >= 0) { +return "XmlCml"; +}if (header.indexOf("XSD") >= 0) { +return "XmlXsd"; +}if (header.indexOf(">vasp") >= 0) { +return "XmlVasp"; +}if (header.indexOf("") >= 0) { +return "XmlQE"; +}return "XmlCml(unidentified)"; +}, "~S"); +c$.checkSpecial2 = Clazz.defineMethod(c$, "checkSpecial2", +function(lines){ +if (J.adapter.smarter.Resolver.checkGromacs(lines)) return "Gromacs"; +if (J.adapter.smarter.Resolver.checkCrystal(lines)) return "Crystal"; +if (J.adapter.smarter.Resolver.checkFAH(lines)) return "FAH"; +var s = J.adapter.smarter.Resolver.checkCastepVaspSiesta(lines); +if (s != null) return s; +return null; +}, "~A"); +c$.checkFAH = Clazz.defineMethod(c$, "checkFAH", +function(lines){ +var s = lines[0].trim() + lines[2].trim(); +return s.equals("{\"atoms\": ["); +}, "~A"); +c$.checkCrystal = Clazz.defineMethod(c$, "checkCrystal", +function(lines){ +var s = lines[1].trim(); +if (s.equals("SLAB") || s.equals("MOLECULE") || s.equals("CRYSTAL") || s.equals("POLYMER") || (s = lines[3]).equals("SLAB") || s.equals("MOLECULE") || s.equals("POLYMER")) return true; +for (var i = 0; i < lines.length; i++) { +if (lines[i].trim().equals("OPTGEOM") || lines[i].trim().equals("FREQCALC") || lines[i].contains("DOVESI") || lines[i].contains("TORINO") || lines[i].contains("http://www.crystal.unito.it") || lines[i].contains("Pcrystal") || lines[i].contains("MPPcrystal") || lines[i].contains("crystal executable")) return true; +} +return false; +}, "~A"); +c$.checkGromacs = Clazz.defineMethod(c$, "checkGromacs", +function(lines){ +if (JU.PT.parseInt(lines[1]) == -2147483648) return false; +var len = -1; +for (var i = 2; i < 16 && len != 0; i++) if ((len = lines[i].length) != 69 && len != 45 && len != 0) return false; + +return true; +}, "~A"); +c$.checkCastepVaspSiesta = Clazz.defineMethod(c$, "checkCastepVaspSiesta", +function(lines){ +for (var i = 0; i < lines.length; i++) { +var line = lines[i].toUpperCase(); +if (line.indexOf("FREQUENCIES IN CM-1") == 1 || line.contains("CASTEP") || line.startsWith("%BLOCK LATTICE_ABC") || line.startsWith("%BLOCK LATTICE_CART") || line.startsWith("%BLOCK POSITIONS_FRAC") || line.startsWith("%BLOCK POSITIONS_ABS") || line.contains("<-- E")) return "Castep"; +if (line.contains("%BLOCK")) return "Siesta"; +if (i >= 6 && i < 10 && (line.startsWith("DIRECT") || line.startsWith("CARTESIAN"))) return "VaspPoscar"; +} +return null; +}, "~A"); +c$.getFileTypefromFilter = Clazz.defineMethod(c$, "getFileTypefromFilter", +function(filter){ +var pt = (filter == null ? -1 : filter.toLowerCase().indexOf("filetype")); +return (pt < 0 ? null : filter.substring(pt + 8, (filter + ";").indexOf(";", pt)).$replace('=', ' ').trim()); +}, "~S"); +c$.fixDOSName = Clazz.defineMethod(c$, "fixDOSName", +function(fileName){ +return (fileName.indexOf(":\\") >= 0 ? fileName.$replace('\\', '/') : fileName); +}, "~S"); +c$.readerSets = Clazz.newArray(-1, ["cif.", ";Cif;Cif2;MMCif;MMTF;MagCif;BCIF;", "molxyz.", ";Mol3D;Mol;Xyz;", "more.", ";AFLOW;BinaryDcd;CDX;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;TlsDataOnly;", "quantum.", ";Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GaussianFchk;GaussianWfn;Jaguar;Molden;MopacGraphf;GenNBO;NWChem;Psi;Qchem;QCJSON;WebMO;Orca;MO;Ams;", "pdb.", ";Pdb;Pqr;P2n;JmolData;", "pymol.", ";PyMOL;", "simple.", ";Alchemy;Ampac;Cube;FoldingXyz;GhemicalMM;HyperChem;Jme;JSON;Mopac;MopacArchive;Tinker;Input;FAH;", "spartan.", ";Spartan;SpartanSmol;Odyssey;", "xtal.", ";Abinit;Aims;Bilbao;Castep;Cgd;Crystal;Dmol;Espresso;Gulp;Jana;Magres;Shelx;Siesta;VaspOutcar;VaspPoscar;Wien2k;Xcrysden;PWmat;Optimade;Cmdf;", "xml.", ";XmlCdx;XmlArgus;XmlCml;XmlChem3d;XmlMolpro;XmlOdyssey;XmlXsd;XmlVasp;XmlQE;"]); +c$.cdxMagic = Clazz.newByteArray(-1, ['V', 'j', 'C', 'D']); +c$.cmdfMagic = Clazz.newByteArray(-1, ['C', 'M', 'D', 'F']); +c$.sptRecords = Clazz.newArray(-1, ["spt", "# Jmol state", "# Jmol script", "JmolManifest"]); +c$.m3dStartRecords = Clazz.newArray(-1, ["Alchemy", "STRUCTURE 1.00 1"]); +c$.cubeFileStartRecords = Clazz.newArray(-1, ["Cube", "JVXL", "#JVXL"]); +c$.mol2Records = Clazz.newArray(-1, ["Mol2", "mol2", "@"]); +c$.webmoFileStartRecords = Clazz.newArray(-1, ["WebMO", "[HEADER]"]); +c$.moldenFileStartRecords = Clazz.newArray(-1, ["Molden", "[Molden", "MOLDEN", "[MOLDEN"]); +c$.dcdFileStartRecords = Clazz.newArray(-1, ["BinaryDcd", "T\0\0\0CORD", "\0\0\0TCORD"]); +c$.tlsDataOnlyFileStartRecords = Clazz.newArray(-1, ["TlsDataOnly", "REFMAC\n\nTL", "REFMAC\r\n\r\n", "REFMAC\r\rTL"]); +c$.inputFileStartRecords = Clazz.newArray(-1, ["Input", "#ZMATRIX", "%mem=", "AM1", "$rungauss"]); +c$.magresFileStartRecords = Clazz.newArray(-1, ["Magres", "#$magres", "# magres"]); +c$.pymolStartRecords = Clazz.newArray(-1, ["PyMOL", "}q"]); +c$.janaStartRecords = Clazz.newArray(-1, ["Jana", "Version Jana"]); +c$.jsonStartRecords = Clazz.newArray(-1, ["JSON", "{\"mol\":"]); +c$.jcampdxStartRecords = Clazz.newArray(-1, ["Jcampdx", "##TITLE"]); +c$.jmoldataStartRecords = Clazz.newArray(-1, ["JmolData", "REMARK 6 Jmol"]); +c$.pqrStartRecords = Clazz.newArray(-1, ["Pqr", "REMARK 1 PQR", "REMARK The B-factors"]); +c$.p2nStartRecords = Clazz.newArray(-1, ["P2n", "REMARK 1 P2N"]); +c$.cif2StartRecords = Clazz.newArray(-1, ["Cif2", "#\\#CIF_2", "\u00EF\u00BB\u00BF#\\#CIF_2"]); +c$.xmlStartRecords = Clazz.newArray(-1, ["Xml", "Bilbao Crystallographic Server<"]); +c$.xmlContainsRecords = Clazz.newArray(-1, ["Xml", "", " 0 && size <= 3 && f.startsWith("{")) { +var type = (f.contains("version\":\"DSSR") ? "dssr" : f.contains("/outliers/") ? "validation" : "domains"); +var x = vwr.parseJSONMap(f); +if (x != null) htParams.put(type, (type.equals("dssr") ? x : JS.SV.getVariableMap(x))); +continue; +}if (name.indexOf("|") >= 0) name = JU.PT.rep(name, "_", "/"); +if (i == 1) { +if (name.indexOf("/rna3dhub/") >= 0) { +s += "\n_rna3d \n;" + f + "\n;\n"; +continue; +}if (name.indexOf("/dssr/") >= 0) { +s += "\n_dssr \n;" + f + "\n;\n"; +continue; +}}s += f; +if (!s.endsWith("\n")) s += "\n"; +} +size = 1; +reader = JU.Rdr.getBR(s); +}var readers = (getReadersOnly ? new Array(size) : null); +var atomsets = (getReadersOnly ? null : new Array(size)); +var r = null; +for (var i = 0; i < size; i++) { +try { +htParams.put("vwr", vwr); +if (reader == null) reader = filesReader.getBufferedReaderOrBinaryDocument(i, false); +if (!(Clazz.instanceOf(reader,"java.io.BufferedReader") || Clazz.instanceOf(reader,"javajs.api.GenericBinaryDocument"))) return reader; +var fullPathName = names[i]; +htParams.put("fullPathName", fullPathName); +var ret = J.adapter.smarter.Resolver.getAtomCollectionReader(names[i], (types == null ? null : types[i]), reader, htParams, i); +if (!(Clazz.instanceOf(ret,"J.adapter.smarter.AtomSetCollectionReader"))) return ret; +r = ret; +r.setup(null, null, null); +if (r.isBinary) { +r.setup(names[i], htParams, filesReader.getBufferedReaderOrBinaryDocument(i, true)); +} else { +r.setup(names[i], htParams, reader); +}reader = null; +if (getReadersOnly) { +readers[i] = r; +} else { +ret = r.readData(); +if (!(Clazz.instanceOf(ret,"J.adapter.smarter.AtomSetCollection"))) return ret; +atomsets[i] = ret; +if (atomsets[i].errorMessage != null) return atomsets[i].errorMessage; +}} catch (e) { +JU.Logger.error("" + e); +e.printStackTrace(); +return "" + e; +} +} +if (getReadersOnly) return readers; +return this.getAtomSetCollectionFromSet(readers, atomsets, htParams); +}, "J.api.JmolFilesReaderInterface,~A,~A,java.util.Map,~B"); +Clazz.overrideMethod(c$, "getAtomSetCollectionFromSet", +function(readerSet, atomsets, htParams){ +var readers = readerSet; +var asc = (atomsets == null ? new Array(readers.length) : atomsets); +if (atomsets == null) { +for (var i = 0; i < readers.length; i++) { +if (readers[i] != null) try { +var ret = readers[i].readData(); +if (!(Clazz.instanceOf(ret,"J.adapter.smarter.AtomSetCollection"))) return ret; +asc[i] = ret; +if (asc[i].errorMessage != null) return asc[i].errorMessage; +} catch (e) { +JU.Logger.error("" + e); +return "" + e; +} +} +}var result; +if (htParams.containsKey("trajectorySteps")) { +result = asc[0]; +try { +if (asc.length > 1) asc[0].setInfo("ignoreUnitCell", asc[1].atomSetInfo.get("ignoreUnitCell")); +result.finalizeTrajectoryAs(htParams.get("trajectorySteps"), htParams.get("vibrationSteps")); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (result.errorMessage == null) result.errorMessage = "" + e; +} else { +throw e; +} +} +} else if (asc[0].isTrajectory) { +result = asc[0]; +for (var i = 1; i < asc.length; i++) asc[0].mergeTrajectories(asc[i]); + +} else { +result = (asc.length == 1 ? asc[0] : new J.adapter.smarter.AtomSetCollection("Array", null, asc, null)); +}return (result.errorMessage == null ? result : result.errorMessage); +}, "~O,~O,java.util.Map"); +Clazz.overrideMethod(c$, "getAtomSetCollectionFromDOM", +function(DOMNode, htParams){ +throw new UnsupportedOperationException(); +}, "~O,java.util.Map"); +Clazz.overrideMethod(c$, "finish", +function(asc){ +(asc).finish(); +}, "~O"); +Clazz.overrideMethod(c$, "getAtomSetCollectionName", +function(asc){ +return (asc).collectionName; +}, "~O"); +Clazz.overrideMethod(c$, "getAtomSetCollectionAuxiliaryInfo", +function(asc){ +return (asc).atomSetInfo; +}, "~O"); +Clazz.overrideMethod(c$, "getAtomSetCount", +function(asc){ +return (asc).atomSetCount; +}, "~O"); +Clazz.overrideMethod(c$, "getAtomSetNumber", +function(asc, atomSetIndex){ +return (asc).getAtomSetNumber(atomSetIndex); +}, "~O,~N"); +Clazz.overrideMethod(c$, "getAtomSetName", +function(asc, atomSetIndex){ +return (asc).getAtomSetName(atomSetIndex); +}, "~O,~N"); +Clazz.overrideMethod(c$, "getAtomSetAuxiliaryInfo", +function(asc, atomSetIndex){ +return (asc).getAtomSetAuxiliaryInfo(atomSetIndex); +}, "~O,~N"); +Clazz.overrideMethod(c$, "getHydrogenAtomCount", +function(asc){ +return (asc).getHydrogenAtomCount(); +}, "~O"); +Clazz.overrideMethod(c$, "getBondList", +function(asc){ +return (asc).getBondList(); +}, "~O"); +Clazz.overrideMethod(c$, "getAtomCount", +function(asc, atomSetIndex){ +var a = asc; +if (atomSetIndex < 0) return (a.bsAtoms == null ? a.ac : a.bsAtoms.cardinality()); +if (a.bsAtoms == null) return a.getAtomSetAtomCount(atomSetIndex); +var b = JU.BSUtil.copy(a.bsAtoms); +var i0 = a.getAtomSetAtomIndex(atomSetIndex); +b.and(JU.BSUtil.newBitSet2(i0, i0 + a.getAtomSetAtomCount(atomSetIndex))); +return b.cardinality(); +}, "~O,~N"); +Clazz.overrideMethod(c$, "coordinatesAreFractional", +function(asc){ +return (asc).coordinatesAreFractional; +}, "~O"); +Clazz.overrideMethod(c$, "getAtomIterator", +function(asc){ +return new J.adapter.smarter.AtomIterator(asc); +}, "~O"); +Clazz.overrideMethod(c$, "getBondIterator", +function(asc){ +return ((asc).bondCount == 0 ? null : new J.adapter.smarter.BondIterator(asc)); +}, "~O"); +Clazz.overrideMethod(c$, "getStructureIterator", +function(asc){ +return (asc).structureCount == 0 ? null : new J.adapter.smarter.StructureIterator(asc); +}, "~O"); +c$.close = Clazz.defineMethod(c$, "close", +function(bufferedReader){ +if (Clazz.instanceOf(bufferedReader,"java.io.BufferedReader")) (bufferedReader).close(); + else (bufferedReader).close(); +}, "~O"); +c$.PATH_SEPARATOR = System.getProperty("path.separator", "/"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Structure.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Structure.js new file mode 100755 index 000000000000..35228b9fc847 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/Structure.js @@ -0,0 +1,74 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(null, "J.adapter.smarter.Structure", ["J.c.STR"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.structureType = null; +this.substructureType = null; +this.structureID = null; +this.strandID = null; +this.strandCount = 0; +this.startSequenceNumber = 0; +this.startChainID = 0; +this.startInsertionCode = '\0'; +this.endSequenceNumber = 0; +this.endChainID = 0; +this.endInsertionCode = '\0'; +this.atomStartEnd = null; +this.modelStartEnd = null; +this.bsAll = null; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "Structure", null, Cloneable); +Clazz.prepareFields (c$, function(){ +this.atomStartEnd = Clazz.newIntArray (2, 0); +this.modelStartEnd = Clazz.newIntArray(-1, [-1, -1]); +}); +Clazz.makeConstructor(c$, +function(modelIndex, structureType, substructureType, structureID, strandID, strandCount, bsAll){ +if (bsAll != null) { +this.modelStartEnd = Clazz.newIntArray(-1, [0, modelIndex]); +this.bsAll = bsAll; +return; +}this.structureType = structureType; +this.substructureType = substructureType; +if (structureID == null) return; +this.modelStartEnd[0] = this.modelStartEnd[1] = modelIndex; +this.structureID = structureID; +this.strandCount = strandCount; +this.strandID = strandID; +}, "~N,J.c.STR,J.c.STR,~S,~S,~N,~A"); +c$.getHelixType = Clazz.defineMethod(c$, "getHelixType", +function(type){ +switch (type) { +case 1: +return J.c.STR.HELIXALPHA; +case 3: +return J.c.STR.HELIXPI; +case 5: +return J.c.STR.HELIX310; +} +return J.c.STR.HELIX; +}, "~N"); +Clazz.defineMethod(c$, "set", +function(startChainID, startSequenceNumber, startInsertionCode, endChainID, endSequenceNumber, endInsertionCode, istart, iend){ +this.startChainID = startChainID; +this.startSequenceNumber = startSequenceNumber; +this.startInsertionCode = startInsertionCode; +this.endChainID = endChainID; +this.endSequenceNumber = endSequenceNumber; +this.endInsertionCode = endInsertionCode; +this.atomStartEnd[0] = istart; +this.atomStartEnd[1] = iend; +}, "~N,~N,~S,~N,~N,~S,~N,~N"); +Clazz.defineMethod(c$, "clone", +function(){ +var s = null; +try { +s = Clazz.superCall(this, J.adapter.smarter.Structure, "clone", []); +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +} else { +throw e; +} +} +return s; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/StructureIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/StructureIterator.js new file mode 100755 index 000000000000..f14bf0331cd7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/StructureIterator.js @@ -0,0 +1,85 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(["J.api.JmolAdapterStructureIterator"], "J.adapter.smarter.StructureIterator", ["J.api.JmolAdapter"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.structureCount = 0; +this.structures = null; +this.structure = null; +this.istructure = 0; +this.bsModelsDefined = null; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "StructureIterator", J.api.JmolAdapterStructureIterator); +Clazz.makeConstructor(c$, +function(asc){ +Clazz.superConstructor (this, J.adapter.smarter.StructureIterator, []); +this.structureCount = asc.structureCount; +this.structures = asc.structures; +this.istructure = 0; +this.bsModelsDefined = asc.bsStructuredModels; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +if (this.istructure == this.structureCount) return false; +this.structure = this.structures[this.istructure++]; +return true; +}); +Clazz.overrideMethod(c$, "getStructureType", +function(){ +return this.structure.structureType; +}); +Clazz.overrideMethod(c$, "getSubstructureType", +function(){ +return this.structure.substructureType; +}); +Clazz.overrideMethod(c$, "getStructureID", +function(){ +return this.structure.structureID; +}); +Clazz.overrideMethod(c$, "getStrandID", +function(){ +return this.structure.strandID; +}); +Clazz.overrideMethod(c$, "getStartChainID", +function(){ +return this.structure.startChainID; +}); +Clazz.overrideMethod(c$, "getStartSequenceNumber", +function(){ +return this.structure.startSequenceNumber; +}); +Clazz.overrideMethod(c$, "getStartInsertionCode", +function(){ +return J.api.JmolAdapter.canonizeInsertionCode(this.structure.startInsertionCode); +}); +Clazz.overrideMethod(c$, "getEndChainID", +function(){ +return this.structure.endChainID; +}); +Clazz.overrideMethod(c$, "getEndSequenceNumber", +function(){ +return this.structure.endSequenceNumber; +}); +Clazz.overrideMethod(c$, "getEndInsertionCode", +function(){ +return this.structure.endInsertionCode; +}); +Clazz.overrideMethod(c$, "getStrandCount", +function(){ +return this.structure.strandCount; +}); +Clazz.overrideMethod(c$, "getStructuredModels", +function(){ +return this.bsModelsDefined; +}); +Clazz.overrideMethod(c$, "getAtomIndices", +function(){ +return this.structure.atomStartEnd; +}); +Clazz.overrideMethod(c$, "getModelIndices", +function(){ +return this.structure.modelStartEnd; +}); +Clazz.overrideMethod(c$, "getBSAll", +function(){ +return this.structure.bsAll; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/XtalSymmetry.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/XtalSymmetry.js new file mode 100755 index 000000000000..ce3990a49d03 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/smarter/XtalSymmetry.js @@ -0,0 +1,1162 @@ +Clazz.declarePackage("J.adapter.smarter"); +Clazz.load(["JS.Symmetry", "JU.P3", "$.SB"], "J.adapter.smarter.XtalSymmetry", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.M3", "$.M4", "$.P3i", "$.PT", "$.V3", "J.adapter.smarter.Atom", "JS.SpaceGroup", "$.SymmetryOperation", "$.UnitCell", "JU.BSUtil", "$.Logger", "$.SimpleUnitCell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.acr = null; +this.applySymmetryToBonds = false; +this.asc = null; +this.baseSymmetry = null; +this.bondCount0 = 0; +this.bondsFound = null; +this.centroidPacked = false; +this.checkAll = false; +this.checkNearAtoms = false; +this.crystalReaderLatticeOpsOnly = false; +this.disorderMap = null; +this.disorderMapMax = 0; +this.doCentroidUnitCell = false; +this.doNormalize = true; +this.doPackUnitCell = false; +this.filterSymop = null; +this.firstAtom = 0; +this.latticeCells = null; +this.latticeOp = 0; +this.mident = null; +this.minXYZ = null; +this.maxXYZ = null; +this.minXYZ0 = null; +this.maxXYZ0 = null; +this.mTemp = null; +this.ndims = 3; +this.noSymmetryCount = 0; +this.nVib = 0; +this.packingRange = 0; +this.ptOffset = null; +this.ptTemp = null; +this.rminx = 0; +this.rminy = 0; +this.rminz = 0; +this.rmaxx = 0; +this.rmaxy = 0; +this.rmaxz = 0; +this.symmetry = null; +this.symmetryRange = 0; +this.trajectoryUnitCells = null; +this.unitCellParams = null; +this.unitCellTranslations = null; +Clazz.instantialize(this, arguments);}, J.adapter.smarter, "XtalSymmetry", null); +Clazz.prepareFields (c$, function(){ +this.bondsFound = new JU.SB(); +this.ptOffset = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "addRotatedTensor", +function(a, t, iSym, reset, symmetry){ +if (this.ptTemp == null) { +this.ptTemp = new JU.P3(); +this.mTemp = new JU.M3(); +}return a.addTensor((this.acr.getInterface("JU.Tensor")).setFromEigenVectors(symmetry.rotateAxes(iSym, t.eigenVectors, this.ptTemp, this.mTemp), t.eigenValues, t.isIsotropic ? "iso" : t.type, t.id, t), null, reset); +}, "J.adapter.smarter.Atom,JU.Tensor,~N,~B,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "applySymmetryBio", +function(thisBiomolecule, applySymmetryToBonds, filter){ +var biomts = thisBiomolecule.get("biomts"); +var len = biomts.size(); +if (this.mident == null) { +this.mident = new JU.M4(); +this.mident.setIdentity(); +}this.acr.lstNCS = null; +this.setLatticeCells(); +var lc = (this.latticeCells != null && this.latticeCells[0] != 0 ? Clazz.newIntArray (3, 0) : null); +if (lc != null) for (var i = 0; i < 3; i++) lc[i] = this.latticeCells[i]; + +this.latticeCells = null; +var bmChains = this.acr.getFilterWithCase("BMCHAINS"); +var fixBMChains = (bmChains == null ? -1 : bmChains.length < 2 ? 0 : JU.PT.parseInt(bmChains.substring(1))); +if (fixBMChains == -2147483648) { +fixBMChains = -(bmChains.charAt(1)).charCodeAt(0); +}var particleMode = (filter.indexOf("BYCHAIN") >= 0 ? 1 : filter.indexOf("BYSYMOP") >= 0 ? 2 : 0); +this.doNormalize = false; +var biomtchains = thisBiomolecule.get("chains"); +(this.symmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry()).setSpaceGroup(this.doNormalize); +this.addSpaceGroupOperation("x,y,z", false); +var name = thisBiomolecule.get("name"); +this.setAtomSetSpaceGroupName(this.acr.sgName = name); +this.applySymmetryToBonds = applySymmetryToBonds; +this.bondCount0 = this.asc.bondCount; +this.firstAtom = this.asc.getLastAtomSetAtomIndex(); +var atomMax = this.asc.ac; +var ht = new java.util.Hashtable(); +var nChain = 0; +var atoms = this.asc.atoms; +var addBonds = (this.bondCount0 > this.asc.bondIndex0 && applySymmetryToBonds); +switch (particleMode) { +case 1: +for (var i = atomMax; --i >= this.firstAtom; ) { +var id = Integer.$valueOf(atoms[i].chainID); +var bs = ht.get(id); +if (bs == null) { +nChain++; +ht.put(id, bs = new JU.BS()); +}bs.set(i); +} +this.asc.bsAtoms = new JU.BS(); +for (var i = 0; i < nChain; i++) { +this.asc.bsAtoms.set(atomMax + i); +var a = new J.adapter.smarter.Atom(); +a.set(0, 0, 0); +a.radius = 16; +this.asc.addAtom(a); +} +var ichain = 0; +for (var e, $e = ht.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var a = atoms[atomMax + ichain++]; +var bs = e.getValue(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) a.add(atoms[i]); + +a.scale(1 / bs.cardinality()); +a.atomName = "Pt" + ichain; +a.chainID = e.getKey().intValue(); +} +this.firstAtom = atomMax; +atomMax += nChain; +addBonds = false; +break; +case 2: +this.asc.bsAtoms = new JU.BS(); +this.asc.bsAtoms.set(atomMax); +var a = atoms[atomMax] = new J.adapter.smarter.Atom(); +a.set(0, 0, 0); +for (var i = atomMax; --i >= this.firstAtom; ) a.add(atoms[i]); + +a.scale(1 / (atomMax - this.firstAtom)); +a.atomName = "Pt"; +a.radius = 16; +this.asc.addAtom(a); +this.firstAtom = atomMax++; +addBonds = false; +break; +} +var assemblyIdAtoms = thisBiomolecule.get("asemblyIdAtoms"); +if (filter.indexOf("#<") >= 0) { +len = Math.min(len, JU.PT.parseInt(filter.substring(filter.indexOf("#<") + 2)) - 1); +filter = JU.PT.rep(filter, "#<", "_<"); +}var maxChain = 0; +for (var iAtom = this.firstAtom; iAtom < atomMax; iAtom++) { +atoms[iAtom].bsSymmetry = new JU.BS(); +var chainID = atoms[iAtom].chainID; +if (chainID > maxChain) maxChain = chainID; +} +var bsAtoms = this.asc.bsAtoms; +var atomMap = (addBonds ? Clazz.newIntArray (this.asc.ac, 0) : null); +for (var imt = (biomtchains == null ? 1 : 0); imt < len; imt++) { +if (filter.indexOf("!#") >= 0) { +if (filter.indexOf("!#" + (imt + 1) + ";") >= 0) continue; +} else if (filter.indexOf("#") >= 0 && filter.indexOf("#" + (imt + 1) + ";") < 0) { +continue; +}var mat = biomts.get(imt); +var notIdentity = !mat.equals(this.mident); +var chains = (biomtchains == null ? null : biomtchains.get(imt)); +if (chains != null && assemblyIdAtoms != null) { +bsAtoms = new JU.BS(); +for (var e, $e = assemblyIdAtoms.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (chains.indexOf(":" + e.getKey() + ";") >= 0) bsAtoms.or(e.getValue()); + +if (this.asc.bsAtoms != null) bsAtoms.and(this.asc.bsAtoms); +chains = null; +}var lastID = -1; +var id; +var skipping = false; +for (var iAtom = this.firstAtom; iAtom < atomMax; iAtom++) { +if (bsAtoms != null) { +skipping = !bsAtoms.get(iAtom); +} else if (chains != null && (id = atoms[iAtom].chainID) != lastID) { +skipping = (chains.indexOf(":" + this.acr.vwr.getChainIDStr(lastID = id) + ";") < 0); +}if (skipping) continue; +try { +var atomSite = atoms[iAtom].atomSite; +var atom1; +if (addBonds) atomMap[atomSite] = this.asc.ac; +atom1 = this.asc.newCloneAtom(atoms[iAtom]); +atom1.bondingRadius = imt; +this.asc.atomSymbolicMap.put("" + atom1.atomSerial, atom1); +if (this.asc.bsAtoms != null) this.asc.bsAtoms.set(atom1.index); +atom1.atomSite = atomSite; +if (notIdentity) mat.rotTrans(atom1); +atom1.bsSymmetry = JU.BSUtil.newAndSetBit(imt); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.asc.errorMessage = "appendAtomCollection error: " + e; +} else { +throw e; +} +} +} +if (notIdentity) this.symmetry.addBioMoleculeOperation(mat, false); +if (addBonds) { +for (var bondNum = this.asc.bondIndex0; bondNum < this.bondCount0; bondNum++) { +var bond = this.asc.bonds[bondNum]; +var iAtom1 = atomMap[atoms[bond.atomIndex1].atomSite]; +var iAtom2 = atomMap[atoms[bond.atomIndex2].atomSite]; +this.asc.addNewBondWithOrder(iAtom1, iAtom2, bond.order); +} +}} +if (biomtchains != null) { +if (this.asc.bsAtoms == null) this.asc.bsAtoms = JU.BSUtil.newBitSet2(0, this.asc.ac); +this.asc.bsAtoms.clearBits(this.firstAtom, atomMax); +if (particleMode == 0) { +if (fixBMChains != -1) { +var assignABC = (fixBMChains != 0); +var bsChains = (assignABC ? new JU.BS() : null); +atoms = this.asc.atoms; +var firstNew = 0; +if (assignABC) { +firstNew = (fixBMChains < 0 ? Math.max(-fixBMChains, maxChain + 1) : Math.max(maxChain + fixBMChains, 65)); +bsChains.setBits(0, firstNew - 1); +bsChains.setBits(91, 97); +bsChains.setBits(123, 200); +}var bsAll = (this.asc.structureCount == 1 ? this.asc.structures[0].bsAll : null); +var chainMap = new java.util.Hashtable(); +var knownMap = new java.util.Hashtable(); +var knownAtomMap = (bsAll == null ? null : new java.util.Hashtable()); +var lastKnownAtom = null; +for (var i = atomMax, n = this.asc.ac; i < n; i++) { +var ic = atoms[i].chainID; +var isym = atoms[i].bsSymmetry.nextSetBit(0); +var ch0 = this.acr.vwr.getChainIDStr(ic); +var ch = (isym == 0 ? ch0 : ch0 + isym); +var known = chainMap.get(ch); +if (known == null) { +if (assignABC && isym != 0) { +var pt = (firstNew < 200 ? bsChains.nextClearBit(firstNew) : 200); +if (pt < 200) { +bsChains.set(pt); +known = Integer.$valueOf(this.acr.vwr.getChainID("" + String.fromCharCode(pt), true)); +firstNew = pt; +} else { +}}if (known == null) known = Integer.$valueOf(this.acr.vwr.getChainID(ch, true)); +if (ch !== ch0) { +knownMap.put(known, Integer.$valueOf(ic)); +if (bsAll != null) { +if (lastKnownAtom != null) lastKnownAtom[1] = i; +knownAtomMap.put(known, lastKnownAtom = Clazz.newIntArray(-1, [i, n])); +}}chainMap.put(ch, known); +}atoms[i].chainID = known.intValue(); +} +if (this.asc.structureCount > 0) { +var strucs = this.asc.structures; +var nStruc = this.asc.structureCount; +for (var e, $e = knownMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var known = e.getKey(); +var ch1 = known.intValue(); +var ch0 = e.getValue().intValue(); +for (var i = 0; i < nStruc; i++) { +var s = strucs[i]; +if (s.bsAll != null) { +} else if (s.startChainID == s.endChainID) { +if (s.startChainID == ch0) { +var s1 = s.clone(); +s1.startChainID = s1.endChainID = ch1; +this.asc.addStructure(s1); +}} else { +System.err.println("XtalSymmetry not processing biomt chain structure " + this.acr.vwr.getChainIDStr(ch0) + " to " + this.acr.vwr.getChainIDStr(ch1)); +}} +} +}}var vConnect = this.asc.getAtomSetAuxiliaryInfoValue(-1, "PDB_CONECT_bonds"); +if (!addBonds && vConnect != null) { +for (var i = vConnect.size(); --i >= 0; ) { +var bond = vConnect.get(i); +var a = this.asc.getAtomFromName("" + bond[0]); +var b = this.asc.getAtomFromName("" + bond[1]); +if (a != null && b != null && a.bondingRadius != b.bondingRadius && (bsAtoms == null || bsAtoms.get(a.index) && bsAtoms.get(b.index)) && a.distanceSquared(b) > 25.0) { +vConnect.removeItemAt(i); +System.out.println("long interchain bond removed for @" + a.atomSerial + "-@" + b.atomSerial); +}} +}}for (var i = atomMax, n = this.asc.ac; i < n; i++) { +this.asc.atoms[i].bondingRadius = NaN; +} +}this.noSymmetryCount = atomMax - this.firstAtom; +this.finalizeSymmetry(this.symmetry); +this.setCurrentModelInfo(len, null, null); +this.reset(); +}, "java.util.Map,~B,~S"); +Clazz.defineMethod(c$, "getBaseSymmetry", +function(){ +return (this.baseSymmetry == null ? this.symmetry : this.baseSymmetry); +}); +Clazz.defineMethod(c$, "getOverallSpan", +function(){ +return (this.maxXYZ0 == null ? JU.V3.new3(this.maxXYZ.x - this.minXYZ.x, this.maxXYZ.y - this.minXYZ.y, this.maxXYZ.z - this.minXYZ.z) : JU.V3.newVsub(this.maxXYZ0, this.minXYZ0)); +}); +Clazz.defineMethod(c$, "getSymmetry", +function(){ +return (this.symmetry == null ? (this.symmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry()) : this.symmetry); +}); +Clazz.defineMethod(c$, "isWithinCell", +function(ndims, pt, minX, maxX, minY, maxY, minZ, maxZ, slop){ +return (pt.x > minX - slop && pt.x < maxX + slop && (ndims < 2 || pt.y > minY - slop && pt.y < maxY + slop) && (ndims < 3 || pt.z > minZ - slop && pt.z < maxZ + slop)); +}, "~N,JU.P3,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "scaleFractionalVibs", +function(){ +var params = this.acr.unitCellParams; +var ptScale = JU.P3.new3(1 / params[0], 1 / params[1], 1 / params[2]); +var i0 = this.asc.getAtomSetAtomIndex(this.asc.iSet); +for (var i = this.asc.ac; --i >= i0; ) { +var v = this.asc.atoms[i].vib; +if (v != null) { +v.scaleT(ptScale); +}} +}); +Clazz.defineMethod(c$, "set", +function(reader){ +this.acr = reader; +this.asc = reader.asc; +this.getSymmetry(); +return this; +}, "J.adapter.smarter.AtomSetCollectionReader"); +Clazz.defineMethod(c$, "setLatticeParameter", +function(latt){ +this.symmetry.setSpaceGroup(this.doNormalize); +this.symmetry.setLattice(latt); +}, "~N"); +Clazz.defineMethod(c$, "setSpinVectors", +function(){ +if (this.nVib > 0 || this.asc.iSet < 0 || !this.acr.vibsFractional) return this.nVib; +var i0 = this.asc.getAtomSetAtomIndex(this.asc.iSet); +var sym = this.getBaseSymmetry(); +for (var i = this.asc.ac; --i >= i0; ) { +var v = this.asc.atoms[i].vib; +if (v != null) { +if (v.modDim > 0) { +(v).setMoment(); +} else { +v = v.clone(); +sym.toCartesian(v, true); +this.asc.atoms[i].vib = v; +}this.nVib++; +}} +return this.nVib; +}); +Clazz.defineMethod(c$, "addSpaceGroupOperation", +function(xyz, andSetLattice){ +this.symmetry.setSpaceGroup(this.doNormalize); +if (andSetLattice && this.symmetry.getSpaceGroupOperationCount() == 1) this.setLatticeCells(); +return this.symmetry.addSpaceGroupOperation(xyz, 0); +}, "~S,~B"); +Clazz.defineMethod(c$, "applySymmetryFromReader", +function(readerSymmetry){ +this.asc.setCoordinatesAreFractional(this.acr.iHaveFractionalCoordinates); +this.setAtomSetSpaceGroupName(this.acr.sgName); +this.symmetryRange = this.acr.symmetryRange; +this.asc.setInfo("symmetryRange", Float.$valueOf(this.symmetryRange)); +if (this.acr.doConvertToFractional || this.acr.fileCoordinatesAreFractional) { +this.setLatticeCells(); +var doApplySymmetry = true; +if (this.acr.ignoreFileSpaceGroupName || !this.acr.iHaveSymmetryOperators) { +if (this.acr.unitCellParams[0] == 0 && this.acr.unitCellParams[2] == 0) { +JU.SimpleUnitCell.fillParams(null, null, null, this.acr.unitCellParams); +}if (!this.acr.merging || readerSymmetry == null) readerSymmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry(); +doApplySymmetry = readerSymmetry.createSpaceGroup(this.acr.desiredSpaceGroupIndex, (this.acr.sgName.indexOf("!") >= 0 ? "P1" : this.acr.sgName), this.acr.unitCellParams, this.acr.modDim); +} else { +this.acr.doPreSymmetry(); +readerSymmetry = null; +}this.packingRange = this.acr.getPackingRangeValue(0); +if (doApplySymmetry) { +if (readerSymmetry != null) this.getSymmetry().setSpaceGroupTo(readerSymmetry.getSpaceGroup()); +this.applySymmetryLattice(); +if (readerSymmetry != null && this.filterSymop == null) this.setAtomSetSpaceGroupName(readerSymmetry.getSpaceGroupName()); +} else { +this.setUnitCellSafely(); +}}if (this.acr.iHaveFractionalCoordinates && this.acr.merging && readerSymmetry != null) { +var atoms = this.asc.atoms; +for (var i = this.asc.getLastAtomSetAtomIndex(), n = this.asc.ac; i < n; i++) readerSymmetry.toCartesian(atoms[i], true); + +this.asc.setCoordinatesAreFractional(false); +this.acr.addVibrations = false; +}return this.symmetry; +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "setSymmetry", +function(symmetry){ +return (this.symmetry = symmetry); +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "setTensors", +function(){ +var n = this.asc.ac; +for (var i = this.asc.getLastAtomSetAtomIndex(); i < n; i++) { +var a = this.asc.atoms[i]; +if (a.anisoBorU == null) continue; +a.addTensor(this.symmetry.getTensor(this.acr.vwr, a.anisoBorU), null, false); +if (Float.isNaN(a.bfactor)) a.bfactor = a.anisoBorU[7] * 100; +a.anisoBorU = null; +} +}); +Clazz.defineMethod(c$, "adjustRangeMinMax", +function(oabc){ +var pa = new JU.P3(); +var pb = new JU.P3(); +var pc = new JU.P3(); +if (this.acr.forcePacked) { +pa.setT(oabc[1]); +pb.setT(oabc[2]); +pc.setT(oabc[3]); +pa.scale(this.packingRange); +pb.scale(this.packingRange); +pc.scale(this.packingRange); +}oabc[0].scaleAdd2(this.minXYZ.x, oabc[1], oabc[0]); +oabc[0].scaleAdd2(this.minXYZ.y, oabc[2], oabc[0]); +oabc[0].scaleAdd2(this.minXYZ.z, oabc[3], oabc[0]); +oabc[0].sub(pa); +oabc[0].sub(pb); +oabc[0].sub(pc); +var pt = JU.P3.newP(oabc[0]); +this.symmetry.toFractional(pt, true); +this.setSymmetryMinMax(pt); +oabc[1].scale(this.maxXYZ.x - this.minXYZ.x); +oabc[2].scale(this.maxXYZ.y - this.minXYZ.y); +oabc[3].scale(this.maxXYZ.z - this.minXYZ.z); +oabc[1].scaleAdd2(2, pa, oabc[1]); +oabc[2].scaleAdd2(2, pb, oabc[2]); +oabc[3].scaleAdd2(2, pc, oabc[3]); +for (var i = 0; i < 3; i++) { +for (var j = i + 1; j < 4; j++) { +pt.add2(oabc[i], oabc[j]); +if (i != 0) pt.add(oabc[0]); +this.symmetry.toFractional(pt, false); +this.setSymmetryMinMax(pt); +} +} +this.symmetry.toCartesian(pt, false); +pt.add(oabc[1]); +this.symmetry.toFractional(pt, false); +this.setSymmetryMinMax(pt); +this.minXYZ = JU.P3i.new3(Clazz.doubleToInt(Math.min(0, Math.floor(this.rminx + 0.001))), Clazz.doubleToInt(Math.min(0, Math.floor(this.rminy + 0.001))), Clazz.doubleToInt(Math.min(0, Math.floor(this.rminz + 0.001)))); +this.maxXYZ = JU.P3i.new3(Clazz.doubleToInt(Math.max(1, Math.ceil(this.rmaxx - 0.001))), Clazz.doubleToInt(Math.max(1, Math.ceil(this.rmaxy - 0.001))), Clazz.doubleToInt(Math.max(1, Math.ceil(this.rmaxz - 0.001)))); +}, "~A"); +Clazz.defineMethod(c$, "applyAllSymmetry", +function(ms, bsAtoms){ +if (this.asc.ac == 0 || bsAtoms != null && bsAtoms.isEmpty()) return; +var n = this.noSymmetryCount = this.asc.baseSymmetryAtomCount > 0 ? this.asc.baseSymmetryAtomCount : bsAtoms == null ? this.asc.getLastAtomSetAtomCount() : this.asc.ac - bsAtoms.nextSetBit(this.asc.getLastAtomSetAtomIndex()); +this.asc.setTensors(); +this.applySymmetryToBonds = this.acr.applySymmetryToBonds; +this.doPackUnitCell = this.acr.doPackUnitCell && !this.applySymmetryToBonds; +this.bondCount0 = this.asc.bondCount; +this.ndims = JU.SimpleUnitCell.getDimensionFromParams(this.acr.unitCellParams); +this.finalizeSymmetry(this.symmetry); +var operationCount = this.symmetry.getSpaceGroupOperationCount(); +var excludedOps = (this.acr.thisBiomolecule == null ? null : new JU.BS()); +this.checkNearAtoms = this.acr.checkNearAtoms || excludedOps != null; +JU.SimpleUnitCell.setMinMaxLatticeParameters(this.ndims, this.minXYZ, this.maxXYZ, 0); +this.latticeOp = this.symmetry.getLatticeOp(); +this.crystalReaderLatticeOpsOnly = (this.asc.crystalReaderLatticeOpsOnly && this.latticeOp >= 0); +if (this.doCentroidUnitCell) this.asc.setInfo("centroidMinMax", Clazz.newIntArray(-1, [this.minXYZ.x, this.minXYZ.y, this.minXYZ.z, this.maxXYZ.x, this.maxXYZ.y, this.maxXYZ.z, (this.centroidPacked ? 1 : 0)])); +if (this.doCentroidUnitCell || this.acr.doPackUnitCell || this.symmetryRange != 0 && this.maxXYZ.x - this.minXYZ.x == 1 && this.maxXYZ.y - this.minXYZ.y == 1 && this.maxXYZ.z - this.minXYZ.z == 1) { +this.minXYZ0 = JU.P3.new3(this.minXYZ.x, this.minXYZ.y, this.minXYZ.z); +this.maxXYZ0 = JU.P3.new3(this.maxXYZ.x, this.maxXYZ.y, this.maxXYZ.z); +if (ms != null) { +ms.setMinMax0(this.minXYZ0, this.maxXYZ0); +this.minXYZ.set(Clazz.floatToInt(this.minXYZ0.x), Clazz.floatToInt(this.minXYZ0.y), Clazz.floatToInt(this.minXYZ0.z)); +this.maxXYZ.set(Clazz.floatToInt(this.maxXYZ0.x), Clazz.floatToInt(this.maxXYZ0.y), Clazz.floatToInt(this.maxXYZ0.z)); +}switch (this.ndims) { +case 3: +this.minXYZ.z--; +this.maxXYZ.z++; +case 2: +this.minXYZ.y--; +this.maxXYZ.y++; +case 1: +this.minXYZ.x--; +this.maxXYZ.x++; +} +}var nCells = (this.maxXYZ.x - this.minXYZ.x) * (this.maxXYZ.y - this.minXYZ.y) * (this.maxXYZ.z - this.minXYZ.z); +var nsym = n * (this.crystalReaderLatticeOpsOnly ? 4 : operationCount); +var cartesianCount = (this.checkNearAtoms || this.acr.thisBiomolecule != null ? nsym * nCells : this.symmetryRange > 0 ? nsym : 1); +var cartesians = new Array(cartesianCount); +var atoms = this.asc.atoms; +for (var i = 0; i < n; i++) atoms[this.firstAtom + i].bsSymmetry = JU.BS.newN(operationCount * (nCells + 1)); + +var pt = 0; +this.unitCellTranslations = new Array(nCells); +var iCell = 0; +var cell555Count = 0; +var absRange = Math.abs(this.symmetryRange); +var checkCartesianRange = (this.symmetryRange != 0); +var checkRangeNoSymmetry = (this.symmetryRange < 0); +var checkRange111 = (this.symmetryRange > 0); +if (checkCartesianRange) { +this.rminx = this.rminy = this.rminz = 3.4028235E38; +this.rmaxx = this.rmaxy = this.rmaxz = -3.4028235E38; +}var sym = this.symmetry; +var lastSymmetry = sym; +this.checkAll = (this.crystalReaderLatticeOpsOnly || this.asc.atomSetCount == 1 && this.checkNearAtoms && this.latticeOp >= 0); +var lstNCS = this.acr.lstNCS; +if (lstNCS != null && lstNCS.get(0).m33 == 0) { +var nOp = sym.getSpaceGroupOperationCount(); +var nn = lstNCS.size(); +for (var i = nn; --i >= 0; ) { +var m = lstNCS.get(i); +m.m33 = 1; +sym.toFractionalM(m); +} +for (var i = 1; i < nOp; i++) { +var m1 = sym.getSpaceGroupOperation(i); +for (var j = 0; j < nn; j++) { +var m = JU.M4.newM4(lstNCS.get(j)); +m.mul2(m1, m); +if (this.doNormalize && this.noSymmetryCount > 0) JS.SymmetryOperation.normalizeOperationToCentroid(3, m, atoms, this.firstAtom, this.noSymmetryCount); +lstNCS.addLast(m); +} +} +}var pttemp = null; +var op = sym.getSpaceGroupOperation(0); +if (this.doPackUnitCell) { +pttemp = new JU.P3(); +this.ptOffset.set(0, 0, 0); +}var atomMap = (this.bondCount0 > this.asc.bondIndex0 && this.applySymmetryToBonds ? Clazz.newIntArray (n, 0) : null); +var unitCells = Clazz.newIntArray (nCells, 0); +for (var tx = this.minXYZ.x; tx < this.maxXYZ.x; tx++) { +for (var ty = this.minXYZ.y; ty < this.maxXYZ.y; ty++) { +for (var tz = this.minXYZ.z; tz < this.maxXYZ.z; tz++) { +this.unitCellTranslations[iCell] = JU.V3.new3(tx, ty, tz); +unitCells[iCell++] = 555 + tx * 100 + ty * 10 + tz; +if (tx != 0 || ty != 0 || tz != 0 || cartesians.length == 0) continue; +for (pt = 0; pt < n; pt++) { +var atom = atoms[this.firstAtom + pt]; +if (ms != null) { +sym = ms.getAtomSymmetry(atom, this.symmetry); +if (sym !== lastSymmetry) { +if (sym.getSpaceGroupOperationCount() == 0) this.finalizeSymmetry(lastSymmetry = sym); +op = sym.getSpaceGroupOperation(0); +}}var c = JU.P3.newP(atom); +op.rotTrans(c); +sym.toCartesian(c, false); +if (this.doPackUnitCell) { +sym.toUnitCellRnd(c, this.ptOffset); +pttemp.setT(c); +sym.toFractional(pttemp, false); +this.acr.fixFloatPt(pttemp, 100000.0); +if (bsAtoms == null) atom.setT(pttemp); + else if (atom.distance(pttemp) < 1.0E-4) bsAtoms.set(atom.index); + else { +bsAtoms.clear(atom.index); +continue; +}}if (bsAtoms != null) atom.bsSymmetry.clearAll(); +atom.bsSymmetry.set(iCell * operationCount); +atom.bsSymmetry.set(0); +if (checkCartesianRange) this.setSymmetryMinMax(c); +if (pt < cartesianCount) cartesians[pt] = c; +} +if (checkRangeNoSymmetry) { +this.rminx -= absRange; +this.rminy -= absRange; +this.rminz -= absRange; +this.rmaxx += absRange; +this.rmaxy += absRange; +this.rmaxz += absRange; +}cell555Count = pt = this.symmetryAddAtoms(0, 0, 0, 0, pt, iCell * operationCount, cartesians, ms, excludedOps, atomMap); +} +} +} +if (checkRange111) { +this.rminx -= absRange; +this.rminy -= absRange; +this.rminz -= absRange; +this.rmaxx += absRange; +this.rmaxy += absRange; +this.rmaxz += absRange; +}iCell = 0; +for (var tx = this.minXYZ.x; tx < this.maxXYZ.x; tx++) { +for (var ty = this.minXYZ.y; ty < this.maxXYZ.y; ty++) { +for (var tz = this.minXYZ.z; tz < this.maxXYZ.z; tz++) { +iCell++; +if (tx != 0 || ty != 0 || tz != 0) pt = this.symmetryAddAtoms(tx, ty, tz, cell555Count, pt, iCell * operationCount, cartesians, ms, excludedOps, atomMap); +} +} +} +if (iCell * n == this.asc.ac - this.firstAtom) this.duplicateAtomProperties(iCell); +this.setCurrentModelInfo(n, sym, unitCells); +this.unitCellParams = null; +this.reset(); +}, "J.adapter.smarter.MSInterface,JU.BS"); +Clazz.defineMethod(c$, "applyRangeSymmetry", +function(bsAtoms){ +var range = this.acr.fillRange; +bsAtoms = this.updateBSAtoms(); +this.acr.forcePacked = true; +this.doPackUnitCell = false; +var minXYZ2 = JU.P3i.new3(this.minXYZ.x, this.minXYZ.y, this.minXYZ.z); +var maxXYZ2 = JU.P3i.new3(this.maxXYZ.x, this.maxXYZ.y, this.maxXYZ.z); +var oabc = new Array(4); +for (var i = 0; i < 4; i++) oabc[i] = JU.P3.newP(range[i]); + +this.setUnitCellSafely(); +this.adjustRangeMinMax(oabc); +var superSymmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry(); +superSymmetry.getUnitCell(this.acr.fillRange, false, null); +this.applyAllSymmetry(this.acr.ms, bsAtoms); +var pt0 = new JU.P3(); +var atoms = this.asc.atoms; +for (var i = this.asc.ac; --i >= this.firstAtom; ) { +pt0.setT(atoms[i]); +this.symmetry.toCartesian(pt0, false); +superSymmetry.toFractional(pt0, false); +if (this.acr.noPack ? !this.removePacking(this.ndims, pt0, minXYZ2.x, maxXYZ2.x, minXYZ2.y, maxXYZ2.y, minXYZ2.z, maxXYZ2.z, this.packingRange) : !this.isWithinCell(this.ndims, pt0, minXYZ2.x, maxXYZ2.x, minXYZ2.y, maxXYZ2.y, minXYZ2.z, maxXYZ2.z, this.packingRange)) bsAtoms.clear(i); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "applySuperSymmetry", +function(supercell, bsAtoms, iAtomFirst, oabc, pt0, vabc, slop){ +this.asc.setGlobalBoolean(7); +var doPack0 = this.doPackUnitCell; +this.doPackUnitCell = doPack0; +this.applyAllSymmetry(this.acr.ms, null); +this.doPackUnitCell = doPack0; +var atoms = this.asc.atoms; +var atomCount = this.asc.ac; +for (var i = iAtomFirst; i < atomCount; i++) { +this.symmetry.toCartesian(atoms[i], true); +bsAtoms.set(i); +} +this.asc.setCurrentModelInfo("unitcell_conventional", this.symmetry.getV0abc("a,b,c", null)); +var va = vabc[0]; +var vb = vabc[1]; +var vc = vabc[2]; +this.symmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry(); +this.setUnitCell( Clazz.newFloatArray(-1, [0, 0, 0, 0, 0, 0, va.x, va.y, va.z, vb.x, vb.y, vb.z, vc.x, vc.y, vc.z, 0, 0, 0, 0, 0, 0, NaN, NaN, NaN, NaN, NaN, slop]), null, null); +var name = oabc == null || supercell == null ? "P1" : "cell=" + supercell; +this.setAtomSetSpaceGroupName(name); +this.symmetry.setSpaceGroupName(name); +this.symmetry.setSpaceGroup(this.doNormalize); +this.symmetry.addSpaceGroupOperation("x,y,z", 0); +if (pt0 != null && pt0.length() == 0) pt0 = null; +if (pt0 != null) this.symmetry.toFractional(pt0, true); +for (var i = iAtomFirst; i < atomCount; i++) { +this.symmetry.toFractional(atoms[i], true); +if (pt0 != null) atoms[i].sub(pt0); +} +this.asc.haveAnisou = false; +this.asc.setCurrentModelInfo("matUnitCellOrientation", null); +}, "~S,JU.BS,~N,~A,JU.P3,~A,~N"); +Clazz.defineMethod(c$, "applySymmetryLattice", +function(){ +if (!this.asc.coordinatesAreFractional || this.symmetry.getSpaceGroup() == null) return; +var maxX = this.latticeCells[0]; +var maxY = this.latticeCells[1]; +var maxZ = Math.abs(this.latticeCells[2]); +var kcode = this.latticeCells[3]; +this.firstAtom = this.asc.getLastAtomSetAtomIndex(); +var bsAtoms = this.asc.bsAtoms; +if (bsAtoms != null) { +this.updateBSAtoms(); +this.firstAtom = bsAtoms.nextSetBit(this.firstAtom); +}this.rminx = this.rminy = this.rminz = 3.4028235E38; +this.rmaxx = this.rmaxy = this.rmaxz = -3.4028235E38; +if (this.acr.latticeType == null) this.acr.latticeType = "" + this.symmetry.getLatticeType(); +if (this.acr.isPrimitive) { +this.asc.setCurrentModelInfo("isprimitive", Boolean.TRUE); +if (!"P".equals(this.acr.latticeType) || this.acr.primitiveToCrystal != null) { +this.asc.setCurrentModelInfo("unitcell_conventional", this.symmetry.getConventionalUnitCell(this.acr.latticeType, this.acr.primitiveToCrystal)); +}}this.setUnitCellSafely(); +this.asc.setCurrentModelInfo("f2c", this.symmetry.getUnitCellF2C()); +var s = this.symmetry.getSpaceGroupTitle(); +if (s.indexOf("--") < 0) this.asc.setCurrentModelInfo("f2cTitle", s); +this.asc.setCurrentModelInfo("f2cParams", this.symmetry.getUnitCellParams()); +if (this.acr.latticeType != null) { +this.asc.setCurrentModelInfo("latticeType", this.acr.latticeType); +if ((typeof(this.acr.fillRange)=='string')) { +var range = this.setLatticeRange(this.acr.latticeType, this.acr.fillRange); +if (range == null) { +this.acr.appendLoadNote(this.acr.fillRange + " symmetry could not be implemented"); +this.acr.fillRange = null; +} else { +this.acr.fillRange = range; +}}}this.baseSymmetry = this.symmetry; +if (this.acr.fillRange != null) { +this.setMinMax(this.ndims, kcode, maxX, maxY, maxZ); +this.applyRangeSymmetry(bsAtoms); +return; +}var oabc = null; +var slop = 1e-6; +this.nVib = 0; +var supercell = this.acr.strSupercell; +var isSuper = (supercell != null && supercell.indexOf(",") >= 0); +var matSuper = null; +var pt0 = null; +var vabc = new Array(3); +if (isSuper) { +matSuper = new JU.M4(); +if (this.mident == null) this.mident = new JU.M4(); +this.setUnitCellSafely(); +oabc = this.symmetry.getV0abc(supercell, matSuper); +matSuper.transpose33(); +if (oabc != null && !matSuper.equals(this.mident)) { +this.setMinMax(this.ndims, kcode, maxX, maxY, maxZ); +pt0 = JU.P3.newP(oabc[0]); +vabc[0] = JU.V3.newV(oabc[1]); +vabc[1] = JU.V3.newV(oabc[2]); +vabc[2] = JU.V3.newV(oabc[3]); +this.adjustRangeMinMax(oabc); +}}var iAtomFirst = this.asc.getLastAtomSetAtomIndex(); +if (bsAtoms != null) iAtomFirst = bsAtoms.nextSetBit(iAtomFirst); +if (this.rminx == 3.4028235E38) { +supercell = null; +oabc = null; +} else { +bsAtoms = this.updateBSAtoms(); +slop = this.symmetry.getPrecision(); +this.applySuperSymmetry(supercell, bsAtoms, iAtomFirst, oabc, pt0, vabc, slop); +}this.setMinMax(this.ndims, kcode, maxX, maxY, maxZ); +if (oabc == null) { +this.applyAllSymmetry(this.acr.ms, bsAtoms); +if (!this.acr.noPack && (!this.applySymmetryToBonds || !this.acr.doPackUnitCell)) { +return; +}this.setMinMax(this.ndims, kcode, maxX, maxY, maxZ); +}if (this.acr.forcePacked || this.acr.doPackUnitCell || this.acr.noPack) { +this.trimToUnitCell(iAtomFirst); +}this.updateSupercellAtomSites(matSuper, bsAtoms, slop); +}); +Clazz.defineMethod(c$, "duplicateAtomProperties", +function(nTimes){ +var p = this.asc.getAtomSetAuxiliaryInfoValue(-1, "atomProperties"); +if (p != null) for (var entry, $entry = p.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var val = entry.getValue(); +if ((typeof(val)=='string')) { +var data = val; +var s = new JU.SB(); +for (var i = nTimes; --i >= 0; ) s.append(data); + +p.put(key, s.toString()); +} else { +var f = val; +var fnew = Clazz.newFloatArray (f.length * nTimes, 0); +for (var i = nTimes; --i >= 0; ) System.arraycopy(f, 0, fnew, i * f.length, f.length); + +}} +}, "~N"); +Clazz.defineMethod(c$, "finalizeSymmetry", +function(symmetry){ +var name = this.asc.getAtomSetAuxiliaryInfoValue(-1, "spaceGroup"); +symmetry.setFinalOperations(this.ndims, name, this.asc.atoms, this.firstAtom, this.noSymmetryCount, this.doNormalize, this.filterSymop); +if (this.filterSymop != null || name == null || name.equals("unspecified!")) { +this.setAtomSetSpaceGroupName(symmetry.getSpaceGroupName()); +}if (this.unitCellParams != null || Float.isNaN(this.acr.unitCellParams[0])) return; +if (symmetry.fixUnitCell(this.acr.unitCellParams)) { +this.acr.appendLoadNote("Unit cell parameters were adjusted to match space group!"); +}this.setUnitCellSafely(); +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz.defineMethod(c$, "removePacking", +function(ndims, pt, minX, maxX, minY, maxY, minZ, maxZ, slop){ +return (pt.x > minX - slop && pt.x < maxX - slop && (ndims < 2 || pt.y > minY - slop && pt.y < maxY - slop) && (ndims < 3 || pt.z > minZ - slop && pt.z < maxZ - slop)); +}, "~N,JU.P3,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "reset", +function(){ +this.asc.coordinatesAreFractional = false; +this.asc.setCurrentModelInfo("hasSymmetry", Boolean.TRUE); +this.asc.setGlobalBoolean(1); +}); +Clazz.defineMethod(c$, "setAtomSetSpaceGroupName", +function(spaceGroupName){ +this.symmetry.setSpaceGroupName(spaceGroupName); +this.asc.setCurrentModelInfo("spaceGroup", spaceGroupName + ""); +}, "~S"); +Clazz.defineMethod(c$, "setCurrentModelInfo", +function(n, sym, unitCells){ +if (sym == null) { +this.asc.setCurrentModelInfo("presymmetryAtomCount", Integer.$valueOf(this.noSymmetryCount)); +this.asc.setCurrentModelInfo("biosymmetryCount", Integer.$valueOf(n)); +this.asc.setCurrentModelInfo("biosymmetry", this.symmetry); +} else { +this.asc.setCurrentModelInfo("presymmetryAtomCount", Integer.$valueOf(n)); +this.asc.setCurrentModelInfo("latticeDesignation", sym.getLatticeDesignation()); +this.asc.setCurrentModelInfo("ML_unitCellRange", unitCells); +if (this.acr.isSUPERCELL) this.asc.setCurrentModelInfo("supercell", this.acr.strSupercell); +}this.asc.setCurrentModelInfo("presymmetryAtomIndex", Integer.$valueOf(this.firstAtom)); +var operationCount = this.symmetry.getSpaceGroupOperationCount(); +if (operationCount > 0) { +var symmetryList = new Array(operationCount); +for (var i = 0; i < operationCount; i++) symmetryList[i] = "" + this.symmetry.getSpaceGroupXyz(i, this.doNormalize); + +this.asc.setCurrentModelInfo("symmetryOperations", symmetryList); +this.asc.setCurrentModelInfo("symmetryOps", this.symmetry.getSymmetryOperations()); +}this.asc.setCurrentModelInfo("symmetryCount", Integer.$valueOf(operationCount)); +this.asc.setCurrentModelInfo("latticeType", this.acr.latticeType == null ? "P" : this.acr.latticeType); +this.asc.setCurrentModelInfo("intlTableNo", this.symmetry.getIntTableNumber()); +this.asc.setCurrentModelInfo("intlTableIndex", this.symmetry.getSpaceGroupInfoObj("itaIndex", null, false, false)); +this.asc.setCurrentModelInfo("intlTableTransform", this.symmetry.getSpaceGroupInfoObj("itaTransform", null, false, false)); +this.asc.setCurrentModelInfo("intlTableJmolID", this.symmetry.getIntTableNumberFull()); +this.asc.setCurrentModelInfo("spaceGroupIndex", Integer.$valueOf(this.symmetry.getSpaceGroupIndex())); +this.asc.setCurrentModelInfo("spaceGroupTitle", this.symmetry.getSpaceGroupTitle()); +if (this.acr.sgName == null || this.acr.sgName.indexOf("?") >= 0 || this.acr.sgName.indexOf("!") >= 0) this.setAtomSetSpaceGroupName(this.acr.sgName = this.symmetry.getSpaceGroupName()); +}, "~N,J.adapter.smarter.XtalSymmetry.FileSymmetry,~A"); +Clazz.defineMethod(c$, "setCurrentModelUCInfo", +function(unitCellParams, unitCellOffset, matUnitCellOrientation){ +if (unitCellParams != null) this.asc.setCurrentModelInfo("unitCellParams", unitCellParams); +if (unitCellOffset != null) this.asc.setCurrentModelInfo("unitCellOffset", unitCellOffset); +if (matUnitCellOrientation != null) this.asc.setCurrentModelInfo("matUnitCellOrientation", matUnitCellOrientation); +}, "~A,JU.P3,JU.M3"); +Clazz.defineMethod(c$, "setLatticeCells", +function(){ +this.latticeCells = this.acr.latticeCells; +var isLatticeRange = (this.latticeCells[0] <= 555 && this.latticeCells[1] >= 555 && (this.latticeCells[2] == 0 || this.latticeCells[2] == 1 || this.latticeCells[2] == -1)); +this.doNormalize = this.latticeCells[0] != 0 && (!isLatticeRange || this.latticeCells[2] == 1); +this.applySymmetryToBonds = this.acr.applySymmetryToBonds; +this.doPackUnitCell = this.acr.doPackUnitCell && !this.applySymmetryToBonds; +this.doCentroidUnitCell = this.acr.doCentroidUnitCell; +this.centroidPacked = this.acr.centroidPacked; +this.filterSymop = this.acr.filterSymop; +}); +Clazz.defineMethod(c$, "setLatticeRange", +function(latticetype, rangeType){ +var range = null; +var isRhombohedral = "R".equals(latticetype); +if (rangeType.equals("conventional")) { +range = this.symmetry.getConventionalUnitCell(latticetype, this.acr.primitiveToCrystal); +} else if (rangeType.equals("primitive")) { +range = this.symmetry.getUnitCellVectors(); +this.symmetry.toFromPrimitive(true, latticetype.charAt(0), range, this.acr.primitiveToCrystal); +} else if (isRhombohedral && rangeType.equals("rhombohedral")) { +if (this.symmetry.getUnitCellInfoType(7) == 1) { +rangeType = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"; +} else { +rangeType = null; +}} else if (isRhombohedral && rangeType.equals("trigonal")) { +if (this.symmetry.getUnitCellInfoType(8) == 1) { +rangeType = "a-b,b-c,a+b+c"; +} else { +rangeType = null; +}} else if (rangeType.indexOf(",") < 0 || rangeType.indexOf("a") < 0 || rangeType.indexOf("b") < 0 || rangeType.indexOf("c") < 0) { +rangeType = null; +} else { +rangeType = null; +}if (rangeType != null && range == null && (range = this.symmetry.getV0abc(rangeType, null)) == null) { +rangeType = null; +}if (rangeType == null) return null; +this.acr.addJmolScript("unitcell " + JU.PT.esc(rangeType)); +return range; +}, "~S,~S"); +Clazz.defineMethod(c$, "setMinMax", +function(dim, kcode, maxX, maxY, maxZ){ +this.minXYZ = new JU.P3i(); +this.maxXYZ = JU.P3i.new3(maxX, maxY, maxZ); +JU.SimpleUnitCell.setMinMaxLatticeParameters(dim, this.minXYZ, this.maxXYZ, kcode); +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setSymmetryMinMax", +function(c){ +if (this.rminx > c.x) this.rminx = c.x; +if (this.rminy > c.y) this.rminy = c.y; +if (this.rminz > c.z) this.rminz = c.z; +if (this.rmaxx < c.x) this.rmaxx = c.x; +if (this.rmaxy < c.y) this.rmaxy = c.y; +if (this.rmaxz < c.z) this.rmaxz = c.z; +}, "JU.P3"); +Clazz.defineMethod(c$, "setUnitCell", +function(info, matUnitCellOrientation, unitCellOffset){ +this.unitCellParams = Clazz.newFloatArray (info.length, 0); +for (var i = 0; i < info.length; i++) this.unitCellParams[i] = info[i]; + +this.asc.haveUnitCell = true; +if (this.asc.isTrajectory) { +if (this.trajectoryUnitCells == null) { +this.trajectoryUnitCells = new JU.Lst(); +this.asc.setInfo("unitCells", this.trajectoryUnitCells); +}this.trajectoryUnitCells.addLast(this.unitCellParams); +}this.asc.setGlobalBoolean(2); +this.getSymmetry().setUnitCellFromParams(this.unitCellParams, false, this.unitCellParams[26]); +if (unitCellOffset != null) this.symmetry.setOffsetPt(unitCellOffset); +if (matUnitCellOrientation != null) this.symmetry.initializeOrientation(matUnitCellOrientation); +this.setCurrentModelUCInfo(this.unitCellParams, unitCellOffset, matUnitCellOrientation); +}, "~A,JU.M3,JU.P3"); +Clazz.defineMethod(c$, "setUnitCellSafely", +function(){ +if (this.unitCellParams == null) this.setUnitCell(this.acr.unitCellParams, this.acr.matUnitCellOrientation, this.acr.unitCellOffset); +}); +Clazz.defineMethod(c$, "symmetryAddAtoms", +function(transX, transY, transZ, baseCount, pt, iCellOpPt, cartesians, ms, excludedOps, atomMap){ +var isBaseCell = (baseCount == 0); +var addBonds = (atomMap != null); +if (this.doPackUnitCell) this.ptOffset.set(transX, transY, transZ); +var range2 = this.symmetryRange * this.symmetryRange; +var checkRangeNoSymmetry = (this.symmetryRange < 0); +var checkRange111 = (this.symmetryRange > 0); +var checkSymmetryMinMax = (isBaseCell && checkRange111); +checkRange111 = new Boolean (checkRange111 & !isBaseCell).valueOf(); +var nOp = this.symmetry.getSpaceGroupOperationCount(); +var lstNCS = this.acr.lstNCS; +var nNCS = (lstNCS == null ? 0 : lstNCS.size()); +var nOperations = nOp + nNCS; +nNCS = Clazz.doubleToInt(nNCS / nOp); +var checkNearAtoms = (this.checkNearAtoms && (nOperations > 1 || this.doPackUnitCell)); +var checkSymmetryRange = (checkRangeNoSymmetry || checkRange111); +var checkDistances = (checkNearAtoms || checkSymmetryRange); +var checkOps = (excludedOps != null); +var addCartesian = (checkNearAtoms || checkSymmetryMinMax); +var bsAtoms = (this.acr.isMolecular ? null : this.asc.bsAtoms); +var sym = this.symmetry; +if (checkRangeNoSymmetry) baseCount = this.noSymmetryCount; +var atomMax = this.firstAtom + this.noSymmetryCount; +var bondAtomMin = (this.asc.firstAtomToBond < 0 ? atomMax : this.asc.firstAtomToBond); +var pttemp = new JU.P3(); +var code = null; +var minCartDist2 = (checkOps ? 0.01 : 1.0E-4); +var subSystemId = '\u0000'; +var j00 = (bsAtoms == null ? this.firstAtom : bsAtoms.nextSetBit(this.firstAtom)); +out : for (var iSym = 0; iSym < nOperations; iSym++) { +if (isBaseCell && iSym == 0 || this.crystalReaderLatticeOpsOnly && iSym > 0 && (iSym % this.latticeOp) != 0 || excludedOps != null && excludedOps.get(iSym)) continue; +var pt0 = this.firstAtom + (checkNearAtoms ? pt : checkRange111 ? baseCount : 0); +var spinOp = (iSym >= nOp ? 0 : this.asc.vibScale == 0 ? sym.getSpinOp(iSym) : this.asc.vibScale); +var i0 = Math.max(this.firstAtom, (bsAtoms == null ? 0 : bsAtoms.nextSetBit(0))); +var checkDistance = checkDistances; +var spt = (iSym >= nOp ? Clazz.doubleToInt((iSym - nOp) / nNCS) : iSym); +var cpt = spt + iCellOpPt; +for (var i = i0; i < atomMax; i++) { +var a = this.asc.atoms[i]; +if (bsAtoms != null && !bsAtoms.get(i)) continue; +if (ms == null) { +sym.newSpaceGroupPoint(a, iSym, (iSym >= nOp ? lstNCS.get(iSym - nOp) : null), transX, transY, transZ, pttemp); +} else { +sym = ms.getAtomSymmetry(a, this.symmetry); +sym.newSpaceGroupPoint(a, iSym, null, transX, transY, transZ, pttemp); +code = sym.getSpaceGroupOperationCode(iSym); +if (code != null) { +subSystemId = code.charAt(0); +sym = ms.getSymmetryFromCode(code); +if (sym.getSpaceGroupOperationCount() == 0) this.finalizeSymmetry(sym); +}}this.acr.fixFloatPt(pttemp, 100000.0); +var c = JU.P3.newP(pttemp); +sym.toCartesian(c, false); +if (this.doPackUnitCell) { +sym.toUnitCellRnd(c, this.ptOffset); +pttemp.setT(c); +sym.toFractional(pttemp, false); +this.acr.fixFloatPt(pttemp, 100000.0); +if (!this.isWithinCell(this.ndims, pttemp, this.minXYZ0.x, this.maxXYZ0.x, this.minXYZ0.y, this.maxXYZ0.y, this.minXYZ0.z, this.maxXYZ0.z, this.packingRange)) { +continue; +}}if (checkSymmetryMinMax) this.setSymmetryMinMax(c); +var special = null; +if (checkDistance) { +if (checkSymmetryRange && (c.x < this.rminx || c.y < this.rminy || c.z < this.rminz || c.x > this.rmaxx || c.y > this.rmaxy || c.z > this.rmaxz)) continue; +var minDist2 = 3.4028235E38; +var j0 = (this.checkAll ? this.asc.ac : pt0); +var name = a.atomName; +var id = (code == null ? a.altLoc : subSystemId); +for (var j = j00; j < j0; j++) { +if (bsAtoms != null && !bsAtoms.get(j)) continue; +var pc = cartesians[j - this.firstAtom]; +if (pc == null) continue; +var d2 = c.distanceSquared(pc); +if (checkNearAtoms && d2 < minCartDist2) { +if (checkOps) { +excludedOps.set(iSym); +continue out; +}special = this.asc.atoms[j]; +if ((special.atomName == null || special.atomName.equals(name)) && special.altLoc == id) break; +special = null; +}if (checkRange111 && j < baseCount && d2 < minDist2) minDist2 = d2; +} +if (checkRange111 && minDist2 > range2) continue; +}if (checkOps) { +checkDistance = false; +}var atomSite = a.atomSite; +if (special != null) { +if (addBonds) atomMap[atomSite] = special.index; +special.bsSymmetry.set(cpt); +special.bsSymmetry.set(spt); +} else { +if (addBonds) atomMap[atomSite] = this.asc.ac; +var atom1 = a.copyTo(pttemp, this.asc); +if (this.asc.bsAtoms != null) this.asc.bsAtoms.set(atom1.index); +if (spinOp != 0 && atom1.vib != null) { +sym.getSpaceGroupOperation(iSym).rotate(atom1.vib); +atom1.vib.scale(spinOp); +}if (atom1.isNegDisorder) { +if (this.disorderMap == null) this.disorderMap = new java.util.Hashtable(); +var key = Integer.$valueOf(iSym * 1000 + atom1.altLoc.charCodeAt(0)); +var ch = this.disorderMap.get(key); +if (ch == null) { +if (this.disorderMapMax == 0 || this.disorderMapMax == 90) this.disorderMapMax = ('@').charCodeAt(0); +this.disorderMap.put(key, ch = new Character(String.fromCharCode(++this.disorderMapMax))); +}atom1.altLoc = ch.charValue(); +}atom1.atomSite = atomSite; +if (code != null) atom1.altLoc = subSystemId; +atom1.bsSymmetry = JU.BSUtil.newAndSetBit(cpt); +atom1.bsSymmetry.set(spt); +if (addCartesian) cartesians[pt++] = c; +var tensors = a.tensors; +if (tensors != null) { +atom1.tensors = null; +for (var j = tensors.size(); --j >= 0; ) { +var t = tensors.get(j); +if (t == null) continue; +if (nOp == 1) atom1.addTensor(t.copyTensor(), null, false); + else this.addRotatedTensor(atom1, t, iSym, false, sym); +} +}}} +if (addBonds) { +var bonds = this.asc.bonds; +var atoms = this.asc.atoms; +var key; +for (var bondNum = this.asc.bondIndex0; bondNum < this.bondCount0; bondNum++) { +var bond = bonds[bondNum]; +var atom1 = atoms[bond.atomIndex1]; +var atom2 = atoms[bond.atomIndex2]; +if (atom1 == null || atom2 == null || atom2.atomSetIndex < atom1.atomSetIndex) continue; +var ia1 = atomMap[atom1.atomSite]; +var ia2 = atomMap[atom2.atomSite]; +if (ia1 > ia2) { +var i = ia1; +ia1 = ia2; +ia2 = i; +}if (ia1 != ia2 && (ia1 >= bondAtomMin || ia2 >= bondAtomMin) && this.bondsFound.indexOf(key = "-" + ia1 + "," + ia2) < 0) { +this.bondsFound.append(key); +this.asc.addNewBondWithOrder(ia1, ia2, bond.order); +}} +}} +return pt; +}, "~N,~N,~N,~N,~N,~N,~A,J.adapter.smarter.MSInterface,JU.BS,~A"); +Clazz.defineMethod(c$, "trimToUnitCell", +function(iAtomFirst){ +var atoms = this.asc.atoms; +var bs = this.updateBSAtoms(); +if (this.acr.noPack) { +for (var i = bs.nextSetBit(iAtomFirst); i >= 0; i = bs.nextSetBit(i + 1)) { +if (!this.removePacking(this.ndims, atoms[i], this.minXYZ.x, this.maxXYZ.x, this.minXYZ.y, this.maxXYZ.y, this.minXYZ.z, this.maxXYZ.z, this.packingRange)) bs.clear(i); +} +} else { +for (var i = bs.nextSetBit(iAtomFirst); i >= 0; i = bs.nextSetBit(i + 1)) { +if (!this.isWithinCell(this.ndims, atoms[i], this.minXYZ.x, this.maxXYZ.x, this.minXYZ.y, this.maxXYZ.y, this.minXYZ.z, this.maxXYZ.z, this.packingRange)) bs.clear(i); +} +}}, "~N"); +Clazz.defineMethod(c$, "updateBSAtoms", +function(){ +var bs = this.asc.bsAtoms; +if (bs == null) bs = this.asc.bsAtoms = JU.BSUtil.newBitSet2(0, this.asc.ac); +if (bs.nextSetBit(this.firstAtom) < 0) bs.setBits(this.firstAtom, this.asc.ac); +return bs; +}); +Clazz.defineMethod(c$, "updateSupercellAtomSites", +function(matSuper, bsAtoms, slop){ +var n = bsAtoms.cardinality(); +var baseAtoms = new Array(n); +var nbase = 0; +var slop2 = slop * slop; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.asc.atoms[i]; +var p = new J.adapter.smarter.Atom(); +p.setT(a); +if (matSuper != null) { +matSuper.rotTrans(p); +JU.SimpleUnitCell.unitizeDimRnd(3, p, slop); +}p.atomSerial = a.atomSite; +p.atomSite = a.atomSite; +this.symmetry.unitize(p); +var found = false; +for (var ib = 0; ib < nbase; ib++) { +var b = baseAtoms[ib]; +if (p.atomSerial == b.atomSerial && p.distanceSquared(b) < slop2) { +found = true; +a.atomSite = b.atomSite; +break; +}} +if (!found) { +a.atomSite = p.atomSite = nbase; +baseAtoms[nbase++] = p; +}} +}, "JU.M4,JU.BS,~N"); +Clazz.defineMethod(c$, "newFileSymmetry", +function(){ +return new J.adapter.smarter.XtalSymmetry.FileSymmetry(); +}); +/*if3*/;(function(){ +var c$ = Clazz.declareType(J.adapter.smarter.XtalSymmetry, "FileSymmetry", JS.Symmetry); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.smarter.XtalSymmetry.FileSymmetry, []); +}); +Clazz.defineMethod(c$, "addLatticeVectors", +function(lattvecs){ +return this.spaceGroup.addLatticeVectors(lattvecs); +}, "JU.Lst"); +Clazz.defineMethod(c$, "addSubSystemOp", +function(code, rs, vs, sigma){ +this.spaceGroup.isSSG = true; +var s = JS.SymmetryOperation.getXYZFromRsVs(rs, vs, false); +var i = this.spaceGroup.addSymmetry(s, -1, true); +this.spaceGroup.operations[i].setSigma(code, sigma); +return s; +}, "~S,JU.Matrix,JU.Matrix,JU.Matrix"); +Clazz.defineMethod(c$, "checkDistance", +function(f1, f2, distance, dx, iRange, jRange, kRange, ptOffset){ +return this.unitCell.checkDistance(f1, f2, distance, dx, iRange, jRange, kRange, ptOffset); +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N,JU.P3"); +Clazz.defineMethod(c$, "createSpaceGroup", +function(desiredSpaceGroupIndex, name, data, modDim){ +this.spaceGroup = JS.SpaceGroup.createSpaceGroup(desiredSpaceGroupIndex, name, data, modDim); +if (this.spaceGroup != null && JU.Logger.debugging) JU.Logger.debug("using generated space group " + this.spaceGroup.dumpInfo()); +return this.spaceGroup != null; +}, "~N,~S,~O,~N"); +Clazz.defineMethod(c$, "fcoord", +function(p){ +return JS.SymmetryOperation.fcoord(p, " "); +}, "JU.T3"); +Clazz.defineMethod(c$, "getMatrixFromString", +function(xyz, rotTransMatrix){ +JS.SymmetryOperation.getMatrixFromString(null, xyz, rotTransMatrix, false, true, false); +}, "~S,~A"); +Clazz.defineMethod(c$, "getSpaceGroupOperationCode", +function(iOp){ +return this.spaceGroup.operations[iOp].subsystemCode; +}, "~N"); +Clazz.defineMethod(c$, "getTensor", +function(vwr, parBorU){ +if (parBorU == null) return null; +if (this.unitCell == null) this.unitCell = JS.UnitCell.fromParams( Clazz.newFloatArray(-1, [1, 1, 1, 90, 90, 90]), true, 1.0E-4); +return this.unitCell.getTensor(vwr, parBorU); +}, "JV.Viewer,~A"); +Clazz.defineMethod(c$, "getSpaceGroupTitle", +function(){ +var s = this.getSpaceGroupName(); +return (s.startsWith("cell=") ? s : this.spaceGroup != null ? this.spaceGroup.asString() : this.unitCell != null && this.unitCell.name.length > 0 ? "cell=" + this.unitCell.name : ""); +}); +Clazz.defineMethod(c$, "setPrecision", +function(prec){ +this.unitCell.setPrecision(prec); +}, "~N"); +Clazz.defineMethod(c$, "toFractionalM", +function(m){ +if (!this.$isBio) this.unitCell.toFractionalM(m); +}, "JU.M4"); +Clazz.defineMethod(c$, "toUnitCellRnd", +function(pt, offset){ +this.unitCell.toUnitCellRnd(pt, offset); +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "twelfthify", +function(pt){ +this.unitCell.twelfthify(pt); +}, "JU.P3"); +Clazz.defineMethod(c$, "getConventionalUnitCell", +function(latticeType, primitiveToCrystal){ +return (this.unitCell == null || latticeType == null ? null : this.unitCell.getConventionalUnitCell(latticeType, primitiveToCrystal)); +}, "~S,JU.M3"); +Clazz.defineMethod(c$, "getSpaceGroupIndex", +function(){ +return this.spaceGroup.getIndex(); +}); +Clazz.defineMethod(c$, "getUnitCellF2C", +function(){ +return this.unitCell.getF2C(); +}); +Clazz.defineMethod(c$, "addInversion", +function(){ +var ops = this.spaceGroup.operations; +var inv = new JU.M4(); +inv.m00 = inv.m11 = inv.m22 = -1; +inv.m33 = 1; +var n = this.getSpaceGroupOperationCount(); +var m = new JU.M4(); +for (var i = 0; i < n; i++) { +m.mul2(inv, ops[i]); +var s = JS.SymmetryOperation.getXYZFromMatrix(m, true, true, false); +this.addSpaceGroupOperation(s, 0); +} +}); +/*eoif3*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CDXMLWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CDXMLWriter.js new file mode 100755 index 000000000000..b5ae7197019d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CDXMLWriter.js @@ -0,0 +1,504 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(["J.adapter.writers.CMLWriter", "java.util.Stack", "JU.SB"], "J.adapter.writers.CDXMLWriter", ["java.util.Hashtable", "JU.PT", "$.Rdr", "J.adapter.smarter.SmarterJmolAdapter"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.doc = null; +this.objects = null; +this.sb = null; +this.sbpt = 0; +this.id = 0; +Clazz.instantialize(this, arguments);}, J.adapter.writers, "CDXMLWriter", J.adapter.writers.CMLWriter); +Clazz.prepareFields (c$, function(){ +this.objects = new java.util.Stack(); +this.sb = new JU.SB(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.writers.CDXMLWriter, []); +}); +Clazz.overrideMethod(c$, "set", +function(viewer, out, data){ +throw new NullPointerException("CDXMLWriter is not implemented for writing"); +}, "JV.Viewer,JU.OC,~A"); +Clazz.overrideMethod(c$, "write", +function(bs){ +throw new NullPointerException("CDXMLWriter is not implemented for writing"); +}, "JU.BS"); +c$.fromCDX = Clazz.defineMethod(c$, "fromCDX", +function(binaryDoc){ +return new J.adapter.writers.CDXMLWriter().cdxToCdxml(binaryDoc); +}, "javajs.api.GenericBinaryDocument"); +c$.fromASC = Clazz.defineMethod(c$, "fromASC", +function(asc){ +return new J.adapter.writers.CDXMLWriter().ascToCdxml(asc); +}, "J.adapter.smarter.AtomSetCollection"); +Clazz.defineMethod(c$, "ascToCdxml", +function(asc){ +var a = new J.adapter.smarter.SmarterJmolAdapter(); +var atomIterator = a.getAtomIterator(asc); +var bondIterator = a.getBondIterator(asc); +J.adapter.writers.CMLWriter.openDocument(this.sb); +J.adapter.writers.CDXMLWriter.appendHeader(this.sb); +J.adapter.writers.CMLWriter.openTag(this.sb, "page"); +this.id = 0; +this.openID(this.sb, "fragment"); +J.adapter.writers.CMLWriter.terminateTag(this.sb); +var indexToID = new java.util.Hashtable(); +while (atomIterator.hasNext()) { +this.openID(this.sb, "n"); +indexToID.put(atomIterator.getUniqueID(), Integer.$valueOf(this.id)); +var xyz = atomIterator.getXYZ(); +var ele = atomIterator.getElement(); +var iso = atomIterator.getIsotope(); +var charge = atomIterator.getFormalCharge(); +J.adapter.writers.CMLWriter.addAttribute(this.sb, "p", J.adapter.writers.CDXMLWriter.cdxCoord(xyz.x, 200) + " " + J.adapter.writers.CDXMLWriter.cdxCoord(-xyz.y, 400)); +if (ele != 6) J.adapter.writers.CMLWriter.addAttribute(this.sb, "Element", "" + ele); +if (iso != 0) J.adapter.writers.CMLWriter.addAttribute(this.sb, "Isotope", "" + iso); +if (charge != 0) J.adapter.writers.CMLWriter.addAttribute(this.sb, "Charge", "" + charge); +J.adapter.writers.CMLWriter.terminateEmptyTag(this.sb); +} +while (bondIterator.hasNext()) { +this.openID(this.sb, "b"); +var id1 = bondIterator.getAtomUniqueID1(); +var id2 = bondIterator.getAtomUniqueID2(); +var order = "1"; +var display = null; +var display2 = null; +var bo = bondIterator.getEncodedOrder(); +switch (bo) { +case 515: +order = "1.5"; +display2 = "Dash"; +break; +case 514: +order = "2"; +break; +default: +if ((bo & 0x07) != 0) order = "" + (bo & 0x07); +break; +} +switch (bo) { +case 1025: +order = "1"; +display = "WedgeBegin"; +break; +case 1041: +order = "1"; +display = "WedgedHashBegin"; +break; +case 1057: +order = "1"; +display = "Wavy"; +break; +} +J.adapter.writers.CMLWriter.addAttribute(this.sb, "B", indexToID.get(id1).toString()); +J.adapter.writers.CMLWriter.addAttribute(this.sb, "E", indexToID.get(id2).toString()); +if (!order.equals("1")) J.adapter.writers.CMLWriter.addAttribute(this.sb, "Order", order); +if (display != null) J.adapter.writers.CMLWriter.addAttribute(this.sb, "Display", display); +if (display2 != null) J.adapter.writers.CMLWriter.addAttribute(this.sb, "Display2", display2); +J.adapter.writers.CMLWriter.terminateEmptyTag(this.sb); +} +J.adapter.writers.CMLWriter.closeTag(this.sb, "fragment"); +J.adapter.writers.CMLWriter.closeTag(this.sb, "page"); +J.adapter.writers.CMLWriter.closeTag(this.sb, "CDXML"); +return this.sb.toString(); +}, "J.adapter.smarter.AtomSetCollection"); +c$.cdxCoord = Clazz.defineMethod(c$, "cdxCoord", +function(x, off){ +return "" + (off + Math.round(x / 1.45 * 14.4 * 100) / 100); +}, "~N,~N"); +Clazz.defineMethod(c$, "openID", +function(sb, name){ +J.adapter.writers.CMLWriter.startOpenTag(sb, name); +J.adapter.writers.CMLWriter.addAttribute(sb, "id", "" + ++this.id); +}, "JU.SB,~S"); +Clazz.defineMethod(c$, "cdxToCdxml", +function(doc){ +this.doc = doc; +try { +J.adapter.writers.CMLWriter.openDocument(this.sb); +J.adapter.writers.CDXMLWriter.appendHeader(this.sb); +doc.setStreamData(null, false); +doc.seek(22); +this.processObject(doc.readShort()); +this.sb.append("\n"); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(this.sb + "\n" + this.objects); +e.printStackTrace(); +return null; +} else { +throw e; +} +} +return this.sb.toString(); +}, "javajs.api.GenericBinaryDocument"); +c$.appendHeader = Clazz.defineMethod(c$, "appendHeader", +function(sb){ +sb.append("\n"); +J.adapter.writers.CMLWriter.startOpenTag(sb, "CDXML"); +J.adapter.writers.CMLWriter.addAttributes(sb, J.adapter.writers.CDXMLWriter.cdxAttributes); +J.adapter.writers.CMLWriter.terminateTag(sb); +}, "JU.SB"); +Clazz.defineMethod(c$, "processObject", +function(type){ +var id = this.doc.readInt(); +type = type & 0xFFFF; +var terminated = false; +var name = null; +switch (type) { +case 32768: +case 32770: +default: +id = -2147483648; +terminated = true; +break; +case 32769: +name = "page"; +id = -2147483648; +break; +case 32771: +name = "fragment"; +break; +case 32772: +name = "n"; +break; +case 32773: +name = "b"; +break; +case 32774: +name = "t"; +id = -2147483648; +break; +} +this.sbpt = this.sb.length(); +this.objects.push(name); +if (name != null) { +J.adapter.writers.CMLWriter.startOpenTag(this.sb, name); +if (id != -2147483648) { +J.adapter.writers.CMLWriter.addAttribute(this.sb, "id", "" + id); +}}var prop; +while ((prop = this.doc.readShort()) != 0) { +if ((prop & 0x8000) != 0) { +if (!terminated) { +J.adapter.writers.CMLWriter.terminateTag(this.sb); +terminated = true; +}this.processObject(prop); +continue; +}var len = this.readLength(); +switch (type) { +case 32772: +this.writeNodeProperties(prop, len); +break; +case 32774: +if (!terminated) { +J.adapter.writers.CMLWriter.terminateTag(this.sb); +terminated = true; +}this.writeTextProperty(prop, len); +break; +case 32773: +this.writeBondProperties(prop, len); +break; +default: +this.skip(len); +break; +} +} +if (name != null) { +if (!terminated) { +J.adapter.writers.CMLWriter.terminateEmptyTag(this.sb); +} else { +J.adapter.writers.CMLWriter.closeTag(this.sb, name); +}}}, "~N"); +Clazz.defineMethod(c$, "writeNodeProperties", +function(prop, len){ +switch (prop) { +case 512: +var y = J.adapter.writers.CDXMLWriter.toPoint(this.readInt(len >> 1)); +var x = J.adapter.writers.CDXMLWriter.toPoint(this.readInt(len >> 1)); +J.adapter.writers.CMLWriter.addAttribute(this.sb, "p", x + " " + y); +break; +case 1024: +var nodeType = J.adapter.writers.CDXMLWriter.getNodeType(this.readInt(len)); +J.adapter.writers.CMLWriter.addAttribute(this.sb, "NodeType", nodeType); +break; +case 1026: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "Element", "" + this.readInt(len)); +break; +case 1056: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "Isotope", "" + this.readInt(len)); +break; +case 1057: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "Charge", "" + this.readInt(len)); +break; +case 16: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "Warning", this.readString(len)); +break; +case 1073: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "BondOrdering", this.readArray()); +break; +case 1285: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "ConnectionOrder", this.readArray()); +break; +case 1074: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "Attachments", this.readArray()); +break; +case 1075: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "GenericNickname", this.readString(len)); +break; +default: +this.skip(len); +} +}, "~N,~N"); +Clazz.defineMethod(c$, "writeBondProperties", +function(prop, len){ +switch (prop) { +case 1536: +var order = J.adapter.writers.CDXMLWriter.getBondOrder(this.readInt(len)); +if (order == null) { +this.removeObject(); +return; +}J.adapter.writers.CMLWriter.addAttribute(this.sb, "Order", order); +break; +case 1537: +var d = J.adapter.writers.CDXMLWriter.getBondDisplay(this.readInt(len)); +if (d == null) { +this.removeObject(); +return; +}J.adapter.writers.CMLWriter.addAttribute(this.sb, "Display", d); +break; +case 1538: +var d2 = J.adapter.writers.CDXMLWriter.getBondDisplay(this.readInt(len)); +if (d2 != null) J.adapter.writers.CMLWriter.addAttribute(this.sb, "Display2", d2); +break; +case 1540: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "B", "" + this.readInt(len)); +break; +case 1541: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "E", "" + this.readInt(len)); +break; +case 1544: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "BeginAttach", "" + this.readInt(len)); +break; +case 1545: +J.adapter.writers.CMLWriter.addAttribute(this.sb, "EndAttach", "" + this.readInt(len)); +break; +default: +this.skip(len); +} +}, "~N,~N"); +Clazz.defineMethod(c$, "writeTextProperty", +function(prop, len){ +switch (prop) { +case 1792: +var text = this.readString(len); +System.out.println("CDXMLW text=" + text); +J.adapter.writers.CMLWriter.openTag(this.sb, "s"); +this.sb.setLength(this.sb.length() - 1); +this.sb.append(J.adapter.writers.CDXMLWriter.wrapCData(text)); +J.adapter.writers.CMLWriter.closeTag(this.sb, "s"); +break; +default: +this.skip(len); +} +}, "~N,~N"); +c$.wrapCData = Clazz.defineMethod(c$, "wrapCData", +function(s){ +return (s.indexOf("&") < 0 && s.indexOf("<") < 0 ? s : "", "]]]]>") + "]]>"); +}, "~S"); +c$.getNodeType = Clazz.defineMethod(c$, "getNodeType", +function(n){ +var name = null; +switch (n) { +case 0: +return "Unspecified"; +case 1: +return "Element"; +case 4: +return "Nickname"; +case 5: +return "Fragment"; +case 7: +return "GenericNickname"; +case 10: +return "MultiAttachment"; +case 11: +return "VariableAttachment"; +case 12: +return "ExternalConnectionPoint"; +case 2: +name = "ElementList"; +break; +case 3: +name = "ElementListNickname"; +break; +case 6: +name = "Formula"; +break; +case 8: +name = "AnonymousAlternativeGroup"; +break; +case 9: +name = "NamedAnonymousGroup"; +break; +case 13: +name = "LinkNode"; +break; +} +System.err.println("CDXMLWriter Node type " + name + " not identified"); +return "_"; +}, "~N"); +c$.getBondDisplay = Clazz.defineMethod(c$, "getBondDisplay", +function(i){ +switch (i) { +case 0: +return "Solid"; +case 1: +return "Dash"; +case 2: +return "Hash"; +case 3: +return "WedgedHashBegin"; +case 4: +return "WedgedHashEnd"; +case 5: +return "Bold"; +case 6: +return "WedgeBegin"; +case 7: +return "WedgeEnd"; +case 8: +return "Wavy"; +case 9: +return "HollowWedgeBegin"; +case 10: +return "HollowWedgeEnd"; +case 11: +return "WavyWedgeBegin"; +case 12: +return "WavyWedgeEnd"; +case 13: +return "Dot"; +case 14: +return "DashDot"; +} +return null; +}, "~N"); +c$.getBondOrder = Clazz.defineMethod(c$, "getBondOrder", +function(i){ +switch (i) { +case 1: +return "1"; +case 2: +return "2"; +case 4: +return "3"; +case 8: +return "4"; +case 16: +return "5"; +case 32: +return "6"; +case 64: +return "0.5"; +case 128: +return "1.5"; +case 256: +return "2.5"; +case 512: +return "3.5"; +case 1024: +return "4.5"; +case 2048: +return "5.5"; +case 4096: +return "dative"; +case 8192: +return "ionic"; +case 16384: +return "hydrogen"; +case 32768: +return "threecenter"; +} +return null; +}, "~N"); +Clazz.defineMethod(c$, "removeObject", +function(){ +this.sb.setLength(this.sbpt); +}); +Clazz.defineMethod(c$, "skip", +function(len){ +this.doc.seek(this.doc.getPosition() + len); +}, "~N"); +Clazz.defineMethod(c$, "readInt", +function(len){ +switch (len) { +case 1: +return (256 + this.doc.readByte()) % 256; +case 2: +return this.doc.readShort(); +case 4: +return this.doc.readInt(); +case 8: +return this.doc.readLong(); +} +System.err.println("CDXMLWriter.readInt len " + len); +return 0; +}, "~N"); +Clazz.defineMethod(c$, "readString", +function(len){ +var nStyles = this.doc.readShort(); +len -= 2; +switch (nStyles) { +case 0: +break; +default: +this.skip(nStyles * 10); +len -= nStyles * 10; +break; +} +return this.doc.readString(len); +}, "~N"); +Clazz.defineMethod(c$, "readArray", +function(){ +var s = ""; +for (var i = this.doc.readShort(); --i >= 0; ) { +s += " " + this.doc.readInt(); +} +return s.trim(); +}); +Clazz.defineMethod(c$, "readLength", +function(){ +var len = this.doc.readShort(); +if (len == -1) { +len = this.doc.readInt(); +}return len; +}); +c$.toPoint = Clazz.defineMethod(c$, "toPoint", +function(i){ +return Math.round(i / 655.36) / 100.0; +}, "~N"); +c$.main = Clazz.defineMethod(c$, "main", +function(args){ +}, "~A"); +c$.fromString = Clazz.defineMethod(c$, "fromString", +function(vwr, type, mol){ +var htParams = new java.util.Hashtable(); +htParams.put("filter", "filetype=" + type); +var o; +try { +o = vwr.getModelAdapter().getAtomSetCollectionFromReader("", JU.Rdr.getBR(mol), htParams); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return null; +} else { +throw e; +} +} +if ((typeof(o)=='string')) { +return null; +}return J.adapter.writers.CDXMLWriter.fromASC(o); +}, "JV.Viewer,~S,~S"); +c$.cdxAttributes = Clazz.newArray(-1, ["HashSpacing", "2.50", "MarginWidth", "1.60", "LineWidth", "0.60", "BoldWidth", "2", "BondLength", "14.40", "BondSpacing", "18"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CIFWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CIFWriter.js new file mode 100755 index 000000000000..668de09b7d1f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CIFWriter.js @@ -0,0 +1,219 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(["J.adapter.writers.XtlWriter", "J.api.JmolWriter", "JU.P3"], "J.adapter.writers.CIFWriter", ["JU.BS", "$.PT", "$.SB", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.oc = null; +this.isP1 = false; +Clazz.instantialize(this, arguments);}, J.adapter.writers, "CIFWriter", J.adapter.writers.XtlWriter, J.api.JmolWriter); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.writers.CIFWriter, []); +}); +Clazz.overrideMethod(c$, "set", +function(viewer, oc, data){ +this.vwr = viewer; +this.oc = (oc == null ? this.vwr.getOutputChannel(null, null) : oc); +this.isP1 = (data != null && data.length > 0 && "P1".equals(data[0])); +}, "JV.Viewer,JU.OC,~A"); +Clazz.overrideMethod(c$, "write", +function(bs){ +if (bs == null) bs = this.vwr.bsA(); +try { +var mi = this.vwr.ms.at[bs.nextSetBit(0)].mi; +var uc = this.vwr.getCurrentUnitCell(); +this.haveUnitCell = (uc != null); +if (!this.haveUnitCell) uc = this.vwr.getSymTemp().setUnitCellFromParams(null, false, 0.00001); +this.slop = uc.getPrecision(); +this.isHighPrecision = (this.slop == 1.0E-12); +this.precision = Clazz.doubleToInt(-Math.log10(this.slop)); +var offset = uc.getFractionalOffset(); +var fractionalOffset = offset != null && (offset.x != Clazz.floatToInt(offset.x) || offset.y != Clazz.floatToInt(offset.y) || offset.z != Clazz.floatToInt(offset.z)); +var fset; +var haveCustom = (fractionalOffset || (fset = uc.getUnitCellMultiplier()) != null && (fset.z == 1 ? !fset.equals(J.adapter.writers.CIFWriter.fset0) : fset.z != 0)); +var ucm = uc.getUnitCellMultiplied(); +this.isP1 = (this.isP1 || ucm !== uc || fractionalOffset || uc.getSpaceGroupOperationCount() < 2); +uc = ucm; +var modelAU = (!this.haveUnitCell ? bs : this.isP1 ? uc.removeDuplicates(this.vwr.ms, bs, false) : this.vwr.ms.am[mi].bsAsymmetricUnit); +var bsOut; +if (modelAU == null) { +bsOut = bs; +} else { +bsOut = new JU.BS(); +bsOut.or(modelAU); +bsOut.and(bs); +}this.vwr.setErrorMessage(null, " (" + bsOut.cardinality() + " atoms)"); +if (bsOut.isEmpty()) return ""; +var sb = new JU.SB(); +sb.append("## CIF file created by Jmol " + JV.Viewer.getJmolVersion()); +if (haveCustom) { +sb.append(JU.PT.rep("\n" + uc.getUnitCellInfo(false), "\n", "\n##Jmol_orig ")); +}sb.append("\ndata_global"); +var params = uc.getUnitCellAsArray(false); +this.appendKey(sb, "_cell_length_a").append(this.cleanT(params[0])); +this.appendKey(sb, "_cell_length_b").append(this.cleanT(params[1])); +this.appendKey(sb, "_cell_length_c").append(this.cleanT(params[2])); +this.appendKey(sb, "_cell_angle_alpha").append(this.cleanT(params[3])); +this.appendKey(sb, "_cell_angle_beta").append(this.cleanT(params[4])); +this.appendKey(sb, "_cell_angle_gamma").append(this.cleanT(params[5])); +sb.append("\n"); +var n; +var hallName; +var hmName; +var ita; +if (this.isP1) { +ita = "1"; +hallName = "P 1"; +hmName = "P1"; +n = 0; +} else { +uc.getSpaceGroupInfo(this.vwr.ms, null, mi, true, null); +ita = uc.getSpaceGroupNameType("ITA"); +hallName = uc.getSpaceGroupNameType("Hall"); +hmName = uc.getSpaceGroupNameType("HM"); +n = uc.getSpaceGroupOperationCount(); +}this.appendKey(sb, "_space_group_IT_number").append(ita == null ? "?" : ita.toString()); +this.appendKey(sb, "_space_group_name_Hall").append(hallName == null || hallName.equals("?") ? "?" : "'" + hallName + "'"); +this.appendKey(sb, "_space_group_name_H-M_alt").append(hmName == null ? "?" : "'" + hmName + "'"); +sb.append("\n\nloop_\n_space_group_symop_id\n_space_group_symop_operation_xyz"); +if (n == 0) { +sb.append("\n1 x,y,z"); +} else { +for (var i = 0; i < n; i++) { +sb.append("\n").appendI(i + 1).append("\t").append(uc.getSpaceGroupXyz(i, false).replaceAll(" ", "")); +} +}var atoms = this.vwr.ms.at; +var elements = ""; +var haveOccupancy = false; +var occ = (this.haveUnitCell ? this.vwr.ms.occupancies : null); +if (occ != null) { +for (var i = bsOut.nextSetBit(0); i >= 0; i = bsOut.nextSetBit(i + 1)) { +if (occ[i] != 1) { +haveOccupancy = true; +break; +}} +}var haveAltLoc = false; +for (var i = bsOut.nextSetBit(0); i >= 0; i = bsOut.nextSetBit(i + 1)) { +if (atoms[i].altloc != '\0') { +haveAltLoc = true; +break; +}} +var sbLength = sb.length(); +sb.append("\n\nloop_\n_atom_site_label\n_atom_site_type_symbol\n_atom_site_fract_x\n_atom_site_fract_y\n_atom_site_fract_z"); +if (haveAltLoc) { +sb.append("\n_atom_site_disorder_group"); +}if (haveOccupancy) { +sb.append("\n_atom_site_occupancy"); +} else if (!this.haveUnitCell) { +sb.append("\n_atom_site_Cartn_x\n_atom_site_Cartn_y\n_atom_site_Cartn_z"); +}sb.append("\n"); +var jmol_atom = new JU.SB(); +jmol_atom.append("\n\nloop_\n_jmol_atom_index\n_jmol_atom_name\n_jmol_atom_site_label\n"); +var nAtoms = 0; +var p = new JU.P3(); +var elemNums = Clazz.newIntArray (130, 0); +for (var i = bsOut.nextSetBit(0); i >= 0; i = bsOut.nextSetBit(i + 1)) { +var a = atoms[i]; +p.setT(a); +if (this.haveUnitCell) { +uc.toFractional(p, !this.isP1); +}nAtoms++; +var name = a.getAtomName(); +var sym = a.getElementSymbol(); +var elemno = a.getElementNumber(); +var key = sym + "\n"; +if (elements.indexOf(key) < 0) elements += key; +var label = sym + ++elemNums[elemno]; +sb.append(JU.PT.formatS(label, 5, 0, true, false)).append(" ").append(JU.PT.formatS(sym, 3, 0, true, false)).append(this.clean(p.x)).append(this.clean(p.y)).append(this.clean(p.z)); +if (haveAltLoc) { +sb.append(" ").appendC(a.altloc == '\0' ? '.' : a.altloc); +}if (haveOccupancy) sb.append(" ").append(this.clean(occ[i] / 100)); + else if (!this.haveUnitCell) sb.append(this.clean(a.x)).append(this.clean(a.y)).append(this.clean(a.z)); +sb.append("\n"); +jmol_atom.append(JU.PT.formatS("" + a.getIndex(), 3, 0, false, false)).append(" "); +this.writeChecked(jmol_atom, name); +jmol_atom.append(" ").append(JU.PT.formatS(label, 5, 0, false, false)).append("\n"); +} +if (nAtoms > 0) { +sb.append("\nloop_\n_atom_type_symbol\n").append(elements).append("\n"); +sb.appendSB(jmol_atom); +} else { +sb.setLength(sbLength); +}sb.append("\n_jmol_atom_count " + nAtoms); +sb.append("\n_jmol_precision " + this.precision + "\n"); +this.oc.append(sb.toString()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (!JV.Viewer.isJS) e.printStackTrace(); +} else { +throw e; +} +} +return this.toString(); +}, "JU.BS"); +Clazz.defineMethod(c$, "writeChecked", +function(output, val){ +if (val == null || val.length == 0) { +output.append(". "); +return false; +}var escape = val.charAt(0) == '_'; +var escapeCharStart = "'"; +var escapeCharEnd = "' "; +var hasWhitespace = false; +var hasSingle = false; +var hasDouble = false; +for (var i = 0; i < val.length; i++) { +var c = val.charAt(i); +switch ((c).charCodeAt(0)) { +case 9: +case 32: +hasWhitespace = true; +break; +case 10: +this.writeMultiline(output, val); +return true; +case 34: +if (hasSingle) { +this.writeMultiline(output, val); +return true; +}hasDouble = true; +escape = true; +escapeCharStart = "'"; +escapeCharEnd = "' "; +break; +case 39: +if (hasDouble) { +this.writeMultiline(output, val); +return true; +}escape = true; +hasSingle = true; +escapeCharStart = "\""; +escapeCharEnd = "\" "; +break; +} +} +var fst = val.charAt(0); +if (!escape && (fst == '#' || fst == '$' || fst == ';' || fst == '[' || fst == ']' || hasWhitespace)) { +escapeCharStart = "'"; +escapeCharEnd = "' "; +escape = true; +}if (escape) { +output.append(escapeCharStart).append(val).append(escapeCharEnd); +} else { +output.append(val).append(" "); +}return false; +}, "JU.SB,~S"); +Clazz.defineMethod(c$, "writeMultiline", +function(output, val){ +output.append("\n;").append(val).append("\n;\n"); +}, "JU.SB,~S"); +Clazz.defineMethod(c$, "appendKey", +function(sb, key){ +return sb.append("\n").append(JU.PT.formatS(key, 27, 0, true, false)); +}, "JU.SB,~S"); +Clazz.defineMethod(c$, "toString", +function(){ +return (this.oc == null ? "" : this.oc.toString()); +}); +c$.fset0 = JU.P3.new3(555, 555, 1); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CMLWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CMLWriter.js new file mode 100755 index 000000000000..4f0b1a5c6fbf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/CMLWriter.js @@ -0,0 +1,101 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(["J.api.JmolWriter"], "J.adapter.writers.CMLWriter", ["JU.BS", "$.PT", "$.SB", "JU.Edge"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.oc = null; +this.atomsMax = 0; +this.addBonds = false; +this.doTransform = false; +this.allTrajectories = false; +Clazz.instantialize(this, arguments);}, J.adapter.writers, "CMLWriter", null, J.api.JmolWriter); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "set", +function(viewer, out, data){ +this.vwr = viewer; +this.oc = (this.oc == null ? this.vwr.getOutputChannel(null, null) : this.oc); +this.atomsMax = (data[0]).intValue(); +this.addBonds = (data[1]).booleanValue(); +this.doTransform = (data[2]).booleanValue(); +this.allTrajectories = (data[3]).booleanValue(); +}, "JV.Viewer,JU.OC,~A"); +Clazz.overrideMethod(c$, "write", +function(bs){ +var sb = new JU.SB(); +var nAtoms = bs.cardinality(); +if (nAtoms == 0) return ""; +J.adapter.writers.CMLWriter.openTag(sb, "molecule"); +J.adapter.writers.CMLWriter.openTag(sb, "atomArray"); +var bsAtoms = new JU.BS(); +var atoms = this.vwr.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (--this.atomsMax < 0) break; +var atom = atoms[i]; +var name = atom.getAtomName(); +JU.PT.rep(name, "\"", "''"); +bsAtoms.set(atom.i); +J.adapter.writers.CMLWriter.appendEmptyTag(sb, "atom", Clazz.newArray(-1, ["id", "a" + (atom.i + 1), "title", atom.getAtomName(), "elementType", atom.getElementSymbol(), "x3", "" + atom.x, "y3", "" + atom.y, "z3", "" + atom.z])); +} +J.adapter.writers.CMLWriter.closeTag(sb, "atomArray"); +if (this.addBonds) { +J.adapter.writers.CMLWriter.openTag(sb, "bondArray"); +var bondCount = this.vwr.ms.bondCount; +var bonds = this.vwr.ms.bo; +for (var i = 0; i < bondCount; i++) { +var bond = bonds[i]; +var a1 = bond.atom1; +var a2 = bond.atom2; +if (!bsAtoms.get(a1.i) || !bsAtoms.get(a2.i)) continue; +var order = JU.Edge.getCmlBondOrder(bond.order); +if (order == null) continue; +J.adapter.writers.CMLWriter.appendEmptyTag(sb, "bond", Clazz.newArray(-1, ["atomRefs2", "a" + (bond.atom1.i + 1) + " a" + (bond.atom2.i + 1), "order", order])); +} +J.adapter.writers.CMLWriter.closeTag(sb, "bondArray"); +}J.adapter.writers.CMLWriter.closeTag(sb, "molecule"); +this.oc.append(sb.toString()); +return this.toString(); +}, "JU.BS"); +c$.openDocument = Clazz.defineMethod(c$, "openDocument", +function(sb){ +sb.append("\n"); +}, "JU.SB"); +c$.openTag = Clazz.defineMethod(c$, "openTag", +function(sb, name){ +sb.append("<").append(name).append(">\n"); +}, "JU.SB,~S"); +c$.startOpenTag = Clazz.defineMethod(c$, "startOpenTag", +function(sb, name){ +sb.append("<").append(name); +}, "JU.SB,~S"); +c$.terminateTag = Clazz.defineMethod(c$, "terminateTag", +function(sb){ +sb.append(">\n"); +}, "JU.SB"); +c$.terminateEmptyTag = Clazz.defineMethod(c$, "terminateEmptyTag", +function(sb){ +sb.append("/>\n"); +}, "JU.SB"); +c$.appendEmptyTag = Clazz.defineMethod(c$, "appendEmptyTag", +function(sb, name, attributes){ +J.adapter.writers.CMLWriter.startOpenTag(sb, name); +J.adapter.writers.CMLWriter.addAttributes(sb, attributes); +J.adapter.writers.CMLWriter.terminateEmptyTag(sb); +}, "JU.SB,~S,~A"); +c$.addAttributes = Clazz.defineMethod(c$, "addAttributes", +function(sb, attributes){ +for (var i = 0; i < attributes.length; i++) { +J.adapter.writers.CMLWriter.addAttribute(sb, attributes[i], attributes[++i]); +} +}, "JU.SB,~A"); +c$.addAttribute = Clazz.defineMethod(c$, "addAttribute", +function(sb, key, val){ +sb.append(" ").append(key).append("=").append(JU.PT.esc(val)); +}, "JU.SB,~S,~S"); +c$.closeTag = Clazz.defineMethod(c$, "closeTag", +function(sb, name){ +sb.append("\n"); +}, "JU.SB,~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +return (this.oc == null ? "" : this.oc.toString()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/MOLWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/MOLWriter.js new file mode 100755 index 000000000000..baabf99ec14c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/MOLWriter.js @@ -0,0 +1,252 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(null, "J.adapter.writers.MOLWriter", ["java.util.Arrays", "$.Hashtable", "JU.Lst", "$.Measure", "$.P3", "$.PT", "$.SB", "$.V3", "JS.T", "JU.Elements", "$.Escape", "JV.PropertyManager", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.ptTemp = null; +this.vNorm = null; +this.vTemp = null; +this.connections = null; +Clazz.instantialize(this, arguments);}, J.adapter.writers, "MOLWriter", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +return this; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "addMolFile", +function(title, iModel, mol, bsAtoms, bsBonds, asV3000, asJSON, noAromatic, q, is2d){ +var nAtoms = bsAtoms.cardinality(); +var nBonds = bsBonds.cardinality(); +if (!asV3000 && !asJSON && (nAtoms > 999 || nBonds > 999)) return false; +if (!asJSON) { +if (title.length > 80) title = title.substring(0, 77) + "..."; +mol.append(title).append("\n"); +var version = JV.Viewer.getJmolVersion(); +mol.append(JV.PropertyManager.getSDFDateLine("__Jmol-" + version, is2d)); +mol.append("Jmol version ").append(version).append(" EXTRACT: ").append(JU.Escape.eBS(bsAtoms)).append("\n"); +}var asSDF = (iModel >= 0); +var molData = (asSDF ? this.vwr.ms.getInfo(iModel, "molData") : null); +var _keyList = (asSDF ? this.vwr.ms.getInfo(iModel, "molDataKeys") : null); +var ms = this.vwr.ms; +var atomMap = Clazz.newIntArray (ms.ac, 0); +var pTemp = new JU.P3(); +if (asV3000) { +mol.append(" 0 0 0 0 0 0 999 V3000"); +} else if (asJSON) { +mol.append("{\"mol\":{\"createdBy\":\"Jmol " + JV.Viewer.getJmolVersion() + "\",\"a\":["); +} else { +JU.PT.rightJustify(mol, " ", "" + nAtoms); +JU.PT.rightJustify(mol, " ", "" + nBonds); +mol.append(" 0 0 0 0 999 V2000"); +}if (!asJSON) mol.append("\n"); +if (asV3000) { +mol.append("M V30 BEGIN CTAB\nM V30 COUNTS ").appendI(nAtoms).append(" ").appendI(nBonds).append(" 0 0 0\n").append("M V30 BEGIN ATOM\n"); +}var o = (molData == null ? null : molData.get("atom_value_name")); +if (Clazz.instanceOf(o,"JS.SV")) o = (o).asString(); +var valueType = (o == null ? 0 : JS.T.getTokFromName("" + o)); +var atomValues = (valueType == 0 && !asSDF ? null : new JU.SB()); +for (var i = bsAtoms.nextSetBit(0), n = 0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +this.getAtomRecordMOL(iModel, ms, mol, atomMap[i] = ++n, ms.at[i], q, pTemp, asV3000, asJSON, atomValues, valueType, asSDF); +} +if (asV3000) { +mol.append("M V30 END ATOM\nM V30 BEGIN BOND\n"); +} else if (asJSON) { +mol.append("],\"b\":["); +}for (var i = bsBonds.nextSetBit(0), n = 0; i >= 0; i = bsBonds.nextSetBit(i + 1)) { +this.getBondRecordMOL(mol, ++n, ms.bo[i], atomMap, asV3000, asJSON, noAromatic, is2d); +} +if (asV3000) { +mol.append("M V30 END BOND\nM V30 END CTAB\n"); +}if (asJSON) mol.append("]}}"); + else { +if (atomValues != null && atomValues.length() > 0) mol.append(atomValues.toString()); +mol.append("M END\n"); +}if (asSDF) { +try { +var pc = ms.getPartialCharges(); +if (molData == null) molData = new java.util.Hashtable(); +var sb = new JU.SB(); +if (pc != null) { +sb.appendI(nAtoms).appendC('\n'); +for (var i = bsAtoms.nextSetBit(0), n = 0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) sb.appendI(++n).append(" ").appendF(pc[i]).appendC('\n'); + +molData.put("jmol_partial_charges", sb.toString()); +}sb.setLength(0); +sb.appendI(nAtoms).appendC('\n'); +for (var i = bsAtoms.nextSetBit(0), n = 0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var name = ms.at[i].getAtomName().trim(); +if (name.length == 0) name = "."; +sb.appendI(++n).append(" ").append(name.$replace(' ', '_')).appendC('\n'); +} +molData.put("jmol_atom_names", sb.toString()); +if (_keyList == null) _keyList = new JU.Lst(); +for (var key, $key = molData.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (!_keyList.contains(key)) _keyList.addLast(key); + +for (var i = 0, n = _keyList.size(); i < n; i++) { +var key = _keyList.get(i); +if (key.startsWith(">")) continue; +o = molData.get(key); +if (Clazz.instanceOf(o,"JS.SV")) o = (o).asString(); +mol.append("> <" + key.toUpperCase() + ">\n"); +this.output80CharWrap(mol, o.toString(), 80); +mol.append("\n\n"); +} +} catch (e) { +} +mol.append("$$$$\n"); +}return true; +}, "~S,~N,JU.SB,JU.BS,JU.BS,~B,~B,~B,JU.Quat,~B"); +Clazz.defineMethod(c$, "getAtomRecordMOL", +function(iModel, ms, mol, n, a, q, pTemp, asV3000, asJSON, atomValues, tokValue, asSDF){ +ms.getPointTransf(iModel, a, q, pTemp); +var elemNo = a.getElementNumber(); +var sym = (a.isDeleted() ? "Xx" : JU.Elements.elementSymbolFromNumber(elemNo)); +var isotope = a.getIsotopeNumber(); +var charge = a.getFormalCharge(); +var o = Clazz.newArray(-1, [pTemp]); +if (asV3000) { +mol.append("M V30 ").appendI(n).append(" ").append(sym).append(JU.PT.sprintf(" %12.5p %12.5p %12.5p 0", "p", o)); +if (charge != 0) mol.append(" CHG=").appendI(charge); +if (isotope != 0) mol.append(" MASS=").appendI(isotope); +mol.append("\n"); +} else if (asJSON) { +if (n != 1) mol.append(","); +mol.append("{"); +if (a.getElementNumber() != 6) mol.append("\"l\":\"").append(a.getElementSymbol()).append("\","); +if (charge != 0) mol.append("\"c\":").appendI(charge).append(","); +if (isotope != 0) mol.append("\"m\":").appendI(isotope).append(","); +mol.append("\"x\":").appendF(a.x).append(",\"y\":").appendF(a.y).append(",\"z\":").appendF(a.z).append("}"); +} else { +mol.append(JU.PT.sprintf("%10.4p%10.4p%10.4p", "p", o)); +mol.append(" ").append(sym); +if (sym.length == 1) mol.append(" "); +JU.PT.rightJustify(mol, " ", "" + (isotope > 0 ? isotope - JU.Elements.getNaturalIsotope(a.getElementNumber()) : 0)); +if (asSDF && isotope > 0) { +atomValues.append("M ISO 1"); +JU.PT.rightJustify(atomValues, " ", "" + n); +JU.PT.rightJustify(atomValues, " ", "" + isotope); +atomValues.append("\n"); +}JU.PT.rightJustify(mol, " ", "" + (charge == 0 ? 0 : 4 - charge)); +mol.append(" ").append(this.getAtomParity(a)); +mol.append(" 0 0 0\n"); +var label = (tokValue == 0 || asV3000 ? null : this.getAtomPropertyAsString(a, tokValue)); +if (label != null && (label = label.trim()).length > 0) { +var sn = " " + n + " "; +atomValues.append("V ").append(sn.substring(sn.length - 4)); +this.output80CharWrap(atomValues, label, 73); +}}}, "~N,JM.ModelSet,JU.SB,~N,JM.Atom,JU.Quat,JU.P3,~B,~B,JU.SB,~N,~B"); +Clazz.defineMethod(c$, "getAtomParity", +function(a){ +if (a.getCovalentBondCount() == 4) { +if (this.connections == null) { +this.connections = Clazz.newIntArray (4, 0); +this.vTemp = new JU.V3(); +this.vNorm = new JU.V3(); +}var bonds = a.bonds; +var nH = 0; +for (var pt = 0, i = bonds.length; --i >= 0; ) { +if (bonds[i].isCovalent()) { +var b = bonds[i].getOtherAtom(a); +if (b.getAtomicAndIsotopeNumber() == 1) nH++; +this.connections[pt++] = b.i; +}} +if (nH < 3) { +java.util.Arrays.sort(this.connections); +var atoms = this.vwr.ms.at; +JU.Measure.getNormalThroughPoints(atoms[this.connections[0]], atoms[this.connections[1]], atoms[this.connections[2]], this.vNorm, this.vTemp); +this.vTemp.sub2(atoms[this.connections[3]], atoms[this.connections[0]]); +return (this.vTemp.dot(this.vNorm) > 0 ? "1" : "2"); +}}return "0"; +}, "JM.Atom"); +Clazz.defineMethod(c$, "getAtomPropertyAsString", +function(a, tok){ +switch (tok & 1136656384) { +case 1094713344: +var i = a.atomPropertyInt(tok); +return (tok == 1765808134 ? JU.PT.trim(JU.Escape.escapeColor(i), "[x]").toUpperCase() : "" + i); +case 1086324736: +return a.atomPropertyString(this.vwr, tok); +case 1111490560: +var f = a.atomPropertyFloat(this.vwr, tok, null); +return (Float.isNaN(f) ? null : "" + f); +default: +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +a.atomPropertyTuple(this.vwr, tok, this.ptTemp); +return (this.ptTemp == null ? null : this.ptTemp.toString()); +} +}, "JM.Atom,~N"); +Clazz.defineMethod(c$, "getBondRecordMOL", +function(mol, n, b, atomMap, asV3000, asJSON, noAromatic, is2d){ +var a1 = atomMap[b.atom1.i]; +var a2 = atomMap[b.atom2.i]; +var order = b.getValence(); +var cfg = ""; +if (order > 3) order = 1; +if (is2d) { +if (asJSON) { +} else { +switch (b.order) { +case 1057: +cfg = (asV3000 ? " CFG=3" : " 4"); +break; +case 1025: +cfg = (asV3000 ? " CFG=1" : " 1"); +break; +case 1041: +cfg = (asV3000 ? " CFG=2" : " 3"); +break; +default: +cfg = " 0"; +break; +} +}}switch (b.order & 131071) { +case 515: +order = (asJSON ? -3 : 4); +break; +case 66: +order = (asJSON ? -3 : 5); +break; +case 513: +order = (asJSON || noAromatic ? 1 : 6); +break; +case 514: +order = (asJSON || noAromatic ? 2 : 7); +break; +case 33: +order = (asJSON ? -1 : 8); +break; +} +if (asV3000) { +mol.append("M V30 ").appendI(n).append(" ").appendI(order).append(" ").appendI(a1).append(" ").appendI(a2).append(cfg).appendC('\n'); +} else if (asJSON) { +if (n != 1) mol.append(","); +mol.append("{\"b\":").appendI(a1 - 1).append(",\"e\":").appendI(a2 - 1); +if (order != 1) { +mol.append(",\"o\":"); +if (order < 0) { +mol.appendF(-order / 2); +} else { +mol.appendI(order); +}}mol.append("}"); +} else { +JU.PT.rightJustify(mol, " ", "" + a1); +JU.PT.rightJustify(mol, " ", "" + a2); +mol.append(" ").appendI(order).append(cfg).append("\n"); +}}, "JU.SB,~N,JM.Bond,~A,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "output80CharWrap", +function(mol, data, maxN){ +if (maxN < 80) data = JU.PT.rep(data, "\n", "|"); +var lines = JU.PT.split(JU.PT.trim(JU.PT.rep(data, "\n\n", "\n"), "\n"), "\n"); +for (var i = 0; i < lines.length; i++) this.outputLines(mol, lines[i], maxN); + +}, "JU.SB,~S,~N"); +Clazz.defineMethod(c$, "outputLines", +function(mol, data, maxN){ +var done = false; +for (var i = 0, n = data.length; i < n && !done; i += 80) { +mol.append(data.substring(i, Math.min(i + maxN, n))); +if (!(done = (maxN != 80)) && i + 80 < n) mol.append("+"); +mol.append("\n"); +} +}, "JU.SB,~S,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/PDBWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/PDBWriter.js new file mode 100755 index 000000000000..5f840dba05ce --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/PDBWriter.js @@ -0,0 +1,177 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(["J.api.JmolWriter"], "J.adapter.writers.PDBWriter", ["java.util.Arrays", "$.Date", "$.Hashtable", "JU.Lst", "$.P3", "$.PT", "JM.LabelToken", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.oc = null; +this.isPQR = false; +this.doTransform = false; +this.allTrajectories = false; +Clazz.instantialize(this, arguments);}, J.adapter.writers, "PDBWriter", null, J.api.JmolWriter); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "set", +function(viewer, oc, data){ +this.vwr = viewer; +this.oc = (oc == null ? this.vwr.getOutputChannel(null, null) : oc); +this.isPQR = (data[0]).booleanValue(); +this.doTransform = (data[1]).booleanValue(); +this.allTrajectories = (data[2]).booleanValue(); +}, "JV.Viewer,JU.OC,~A"); +Clazz.overrideMethod(c$, "write", +function(bs){ +var type = this.oc.getType(); +this.isPQR = new Boolean (this.isPQR | (type != null && type.indexOf("PQR") >= 0)).valueOf(); +this.doTransform = new Boolean (this.doTransform | (type != null && type.indexOf("-coord true") >= 0)).valueOf(); +var atoms = this.vwr.ms.at; +var models = this.vwr.ms.am; +var occTemp = "%6.2Q%6.2b "; +if (this.isPQR) { +occTemp = "%8.4P%7.4V "; +var charge = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) charge += atoms[i].getPartialCharge(); + +this.oc.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: " + charge + " e\nREMARK 6\n"); +}var iModel = atoms[bs.nextSetBit(0)].mi; +var iModelLast = -1; +var lastAtomIndex = bs.length() - 1; +var lastModelIndex = atoms[lastAtomIndex].mi; +var isMultipleModels = (iModel != lastModelIndex); +var bsModels = this.vwr.ms.getModelBS(bs, true); +var nModels = bsModels.cardinality(); +var lines = new JU.Lst(); +var isMultipleBondPDB = models[iModel].isPdbWithMultipleBonds; +var uniqueAtomNumbers = false; +if (nModels > 1) { +var conectArray = null; +for (var nFiles = 0, i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +var a = this.vwr.ms.getModelAuxiliaryInfo(i).get("PDB_CONECT_bonds"); +if (a !== conectArray || !this.vwr.ms.am[i].isBioModel) { +conectArray = a; +if (nFiles++ > 0) { +uniqueAtomNumbers = true; +break; +}}} +}var tokens; +var ptTemp = new JU.P3(); +var o = Clazz.newArray(-1, [ptTemp]); +var q = (this.doTransform ? this.vwr.tm.getRotationQ() : null); +var map = new java.util.Hashtable(); +var isBiomodel = false; +var firstAtomIndexNew = (uniqueAtomNumbers ? Clazz.newIntArray (nModels, 0) : null); +var modelPt = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = atoms[i]; +isBiomodel = models[a.mi].isBioModel; +if (isMultipleModels && a.mi != iModelLast) { +if (iModelLast != -1) { +modelPt = this.fixPDBFormat(lines, map, this.oc, firstAtomIndexNew, modelPt); +this.oc.append("ENDMDL\n"); +}lines = new JU.Lst(); +iModel = iModelLast = a.mi; +this.oc.append("MODEL " + (iModelLast + 1) + "\n"); +}var sa = a.getAtomName(); +var leftJustify = (a.getElementSymbol().length == 2 || sa.length >= 4 || JU.PT.isDigit(sa.charAt(0))); +var isHetero = a.isHetero(); +if (!isBiomodel) tokens = (leftJustify ? JM.LabelToken.compile(this.vwr, "HETATM%5.-5i %-4.4a%1AUNK %1c 1%1E _XYZ_" + occTemp, '\0', null) : JM.LabelToken.compile(this.vwr, "HETATM%5.-5i %-3.3a%1AUNK %1c 1%1E _XYZ_" + occTemp, '\0', null)); + else if (isHetero) tokens = (leftJustify ? JM.LabelToken.compile(this.vwr, "HETATM%5.-5i %-4.4a%1A%3.3n %1c%4.-4R%1E _XYZ_" + occTemp, '\0', null) : JM.LabelToken.compile(this.vwr, "HETATM%5.-5i %-3.3a%1A%3.3n %1c%4.-4R%1E _XYZ_" + occTemp, '\0', null)); + else tokens = (leftJustify ? JM.LabelToken.compile(this.vwr, "ATOM %5.-5i %-4.4a%1A%3.3n %1c%4.-4R%1E _XYZ_" + occTemp, '\0', null) : JM.LabelToken.compile(this.vwr, "ATOM %5.-5i %-3.3a%1A%3.3n %1c%4.-4R%1E _XYZ_" + occTemp, '\0', null)); +var XX = a.getElementSymbolIso(false).toUpperCase(); +XX = this.pdbKey(a.group.getBioPolymerIndexInModel()) + this.pdbKey(a.group.groupIndex) + JM.LabelToken.formatLabelAtomArray(this.vwr, a, tokens, '\0', null, ptTemp) + (XX.length == 1 ? " " + XX : XX.substring(0, 2)) + " "; +this.vwr.ms.getPointTransf(-1, a, q, ptTemp); +var xyz = JU.PT.sprintf("%8.3p%8.3p%8.3p", "p", o); +if (xyz.length > 24) xyz = JU.PT.sprintf("%8.2p%8.2p%8.2p", "p", o); +XX = JU.PT.rep(XX, "_XYZ_", xyz); +lines.addLast(XX); +} +this.fixPDBFormat(lines, map, this.oc, firstAtomIndexNew, modelPt); +if (isMultipleModels) this.oc.append("ENDMDL\n"); +modelPt = -1; +iModelLast = -1; +var conectKey = "" + (isMultipleModels ? modelPt : 0); +isBiomodel = false; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = atoms[i]; +if (a.mi != iModelLast) { +var m = models[a.mi]; +iModelLast = a.mi; +isBiomodel = m.isBioModel; +modelPt++; +}var isHetero = (!isBiomodel || a.isHetero()); +var isCysS = !isHetero && (a.getElementNumber() == 16); +if (isHetero || isMultipleBondPDB || isCysS) { +var bonds = a.bonds; +if (bonds == null) continue; +for (var j = 0; j < bonds.length; j++) { +var b = bonds[j]; +var iThis = a.getAtomNumber(); +var a2 = b.getOtherAtom(a); +if (!bs.get(a2.i)) continue; +var n = b.getCovalentOrder(); +if (n == 1 && (isMultipleBondPDB && !isHetero && !isCysS || isCysS && a2.getElementNumber() != 16)) continue; +var iOther = a2.getAtomNumber(); +switch (n) { +case 2: +case 3: +if (iOther < iThis) continue; +case 1: +var inew = map.get(conectKey + "." + Integer.$valueOf(iThis)); +var inew2 = map.get(conectKey + "." + Integer.$valueOf(iOther)); +if (inew == null || inew2 == null) break; +this.oc.append("CONECT").append(JU.PT.formatStringS("%5s", "s", "" + inew)); +var s = JU.PT.formatStringS("%5s", "s", "" + inew2); +for (var k = 0; k < n; k++) this.oc.append(s); + +this.oc.append("\n"); +break; +} +} +}} +return this.toString(); +}, "JU.BS"); +Clazz.defineMethod(c$, "pdbKey", +function(np){ +var xp = (np < 0 ? "~999" : " " + np); +return xp.substring(xp.length - 4); +}, "~N"); +Clazz.defineMethod(c$, "fixPDBFormat", +function(lines, map, out, firstAtomIndexNew, modelPt){ +lines.addLast("~999~999XXXXXX99999999999999999999~99~"); +var alines = new Array(lines.size()); +lines.toArray(alines); +java.util.Arrays.sort(alines); +lines.clear(); +for (var i = 0, n = alines.length; i < n; i++) { +lines.addLast(alines[i]); +} +var lastPoly = null; +var lastLine = null; +var n = lines.size(); +var newAtomNumber = 0; +var iBase = (firstAtomIndexNew == null ? 0 : firstAtomIndexNew[modelPt]); +for (var i = 0; i < n; i++) { +var s = lines.get(i); +var poly = s.substring(0, 4); +s = s.substring(8); +var isTerm = false; +var isLast = (s.indexOf("~99~") >= 0); +if (!poly.equals(lastPoly) || isLast) { +if (lastPoly != null && !lastPoly.equals("~999")) { +isTerm = true; +s = "TER " + lastLine.substring(6, 11) + " " + lastLine.substring(17, 27); +lines.add(i, poly + "~~~~" + s); +n++; +}lastPoly = poly; +}if (isLast && !isTerm) break; +lastLine = s; +newAtomNumber = i + 1 + iBase; +if (map != null && !isTerm) map.put("" + modelPt + "." + Integer.$valueOf(JU.PT.parseInt(s.substring(6, 11))), Integer.$valueOf(newAtomNumber)); +var si = " " + newAtomNumber; +out.append(s.substring(0, 6)).append(si.substring(si.length - 5)).append(s.substring(11)).append("\n"); +} +if (firstAtomIndexNew != null && ++modelPt < firstAtomIndexNew.length) firstAtomIndexNew[modelPt] = newAtomNumber; +return modelPt; +}, "JU.Lst,java.util.Map,JU.OC,~A,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return (this.oc == null ? "" : this.oc.toString()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/PWMATWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/PWMATWriter.js new file mode 100755 index 000000000000..7a83092e2fba --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/PWMATWriter.js @@ -0,0 +1,186 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(["J.adapter.writers.XtlWriter", "J.api.JmolWriter"], "J.adapter.writers.PWMATWriter", ["JU.P3", "$.PT", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.oc = null; +this.uc = null; +this.names = null; +this.bs = null; +this.isSlab = false; +this.writeGlobals = false; +Clazz.instantialize(this, arguments);}, J.adapter.writers, "PWMATWriter", J.adapter.writers.XtlWriter, J.api.JmolWriter); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.writers.PWMATWriter, []); +this.isHighPrecision = true; +}); +Clazz.overrideMethod(c$, "set", +function(viewer, oc, data){ +this.vwr = viewer; +this.isSlab = (data != null && data[0] != null && data[0].equals("slab")); +this.oc = (oc == null ? this.vwr.getOutputChannel(null, null) : oc); +}, "JV.Viewer,JU.OC,~A"); +Clazz.overrideMethod(c$, "write", +function(bs){ +if (bs == null) bs = this.vwr.bsA(); +try { +this.uc = this.vwr.ms.getUnitCellForAtom(bs.nextSetBit(0)); +this.bs = (this.isSlab ? bs : this.uc.removeDuplicates(this.vwr.ms, bs, false)); +this.names = this.vwr.getDataObj("property_pwm_*", null, -1); +this.writeHeader(); +this.writeLattice(); +this.writePositions(); +this.writeDataBlocks(); +if (this.writeGlobals) this.writeGlobalBlocks(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.err.println("Error writing PWmat file " + e); +} else { +throw e; +} +} +return this.toString(); +}, "JU.BS"); +Clazz.defineMethod(c$, "writeHeader", +function(){ +this.oc.append(JU.PT.formatStringI("%12i\n", "i", this.bs.cardinality())); +}); +Clazz.defineMethod(c$, "writeLattice", +function(){ +this.oc.append("Lattice vector\n"); +if (this.uc == null) { +this.uc = this.vwr.getSymTemp(); +var bb = this.vwr.getBoundBoxCornerVector(); +var len = Math.round(bb.length() * 2); +this.uc.setUnitCellFromParams( Clazz.newFloatArray(-1, [len, len, len, 90, 90, 90]), false, 1.0E-12); +}var abc = this.uc.getUnitCellVectors(); +var f = "%18.10p%18.10p%18.10p\n"; +this.oc.append(JU.PT.sprintf(f, "p", Clazz.newArray(-1, [abc[1]]))); +this.oc.append(JU.PT.sprintf(f, "p", Clazz.newArray(-1, [abc[2]]))); +this.oc.append(JU.PT.sprintf(f, "p", Clazz.newArray(-1, [abc[3]]))); +JU.Logger.info("PWMATWriter: LATTICE VECTORS"); +}); +Clazz.defineMethod(c$, "writePositions", +function(){ +var cx = this.getData("CONSTRAINTS_X"); +var cy = (cx == null ? null : this.getData("CONSTRAINTS_Y")); +var cz = (cy == null ? null : this.getData("CONSTRAINTS_Z")); +this.oc.append("Position, move_x, move_y, move_z\n"); +var f = "%4i%40s" + (cz == null ? " 1 1 1" : "%4i%4i%4i") + "\n"; +var a = this.vwr.ms.at; +var p = new JU.P3(); +for (var ic = 0, i = this.bs.nextSetBit(0); i >= 0; i = this.bs.nextSetBit(i + 1), ic++) { +p.setT(a[i]); +this.uc.toFractional(p, false); +var coord = this.clean(p.x) + this.clean(p.y) + this.clean(p.z); +if (cz == null) { +this.oc.append(JU.PT.sprintf(f, "is", Clazz.newArray(-1, [Integer.$valueOf(a[i].getElementNumber()), coord]))); +} else { +var ix = Clazz.floatToInt(cx[ic]); +var iy = Clazz.floatToInt(cy[ic]); +var iz = Clazz.floatToInt(cz[ic]); +this.oc.append(JU.PT.sprintf(f, "isiii", Clazz.newArray(-1, [Integer.$valueOf(a[i].getElementNumber()), coord, Integer.$valueOf(ix), Integer.$valueOf(iy), Integer.$valueOf(iz)]))); +}} +JU.Logger.info("PWMATWriter: POSITIONS"); +}); +Clazz.defineMethod(c$, "getData", +function(name){ +name = "property_pwm_" + name.toLowerCase(); +for (var i = this.names.size(); --i >= 0; ) { +var n = this.names.get(i); +if (name.equalsIgnoreCase(n)) { +this.names.removeItemAt(i); +return this.vwr.getDataObj(n, this.bs, 1); +}} +return null; +}, "~S"); +Clazz.defineMethod(c$, "getVectors", +function(name){ +var vectors = Clazz.newArray(-1, [this.getData(name + "_x"), this.getData(name + "_y"), this.getData(name + "_z")]); +return (vectors[0] == null || vectors[1] == null || vectors[2] == null ? null : vectors); +}, "~S"); +Clazz.defineMethod(c$, "writeDataBlocks", +function(){ +this.writeVectors("FORCE"); +this.writeVectors("VELOCITY"); +this.writeMagnetic(); +this.writeMoreData(); +}); +Clazz.defineMethod(c$, "writeVectors", +function(name){ +var xyz = this.getVectors(name); +if (xyz == null) return; +var a = this.vwr.ms.at; +var p = new JU.P3(); +this.oc.append(name.toUpperCase()).append("\n"); +var f = "%4i%18.12p%18.12p%18.12p\n"; +for (var ic = 0, i = this.bs.nextSetBit(0); i >= 0; i = this.bs.nextSetBit(i + 1), ic++) { +p.set(xyz[0][ic], xyz[1][ic], xyz[2][ic]); +this.oc.append(JU.PT.sprintf(f, "ip", Clazz.newArray(-1, [Integer.$valueOf(a[i].getElementNumber()), p]))); +} +JU.Logger.info("PWMATWriter: " + name); +}, "~S"); +Clazz.defineMethod(c$, "writeMagnetic", +function(){ +var m = this.writeItems("MAGNETIC"); +if (m == null) return; +this.writeItem2(m, "CONSTRAINT_MAG"); +}); +Clazz.defineMethod(c$, "writeItem2", +function(m, name){ +var v = this.getData(name); +if (v == null) return; +var a = this.vwr.ms.at; +this.oc.append(name.toUpperCase()).append("\n"); +var f = "%4i%18.12f%18.12f\n"; +for (var ic = 0, i = this.bs.nextSetBit(0); i >= 0; i = this.bs.nextSetBit(i + 1), ic++) { +this.oc.append(JU.PT.sprintf(f, "iff", Clazz.newArray(-1, [Integer.$valueOf(a[i].getElementNumber()), Float.$valueOf(m[ic]), Float.$valueOf(v[ic])]))); +} +}, "~A,~S"); +Clazz.defineMethod(c$, "writeItems", +function(name){ +var m = this.getData(name); +if (m == null) return null; +var a = this.vwr.ms.at; +name = name.toUpperCase(); +this.oc.append(name).append("\n"); +var f = "%4i%18.12f\n"; +for (var ic = 0, i = this.bs.nextSetBit(0); i >= 0; i = this.bs.nextSetBit(i + 1), ic++) { +this.oc.append(JU.PT.sprintf(f, "if", Clazz.newArray(-1, [Integer.$valueOf(a[i].getElementNumber()), Float.$valueOf(m[ic])]))); +} +JU.Logger.info("PWMATWriter: " + name); +return m; +}, "~S"); +Clazz.defineMethod(c$, "writeMoreData", +function(){ +var n = this.names.size(); +var i0 = 0; +while (this.names.size() > i0 && --n >= 0) { +var name = this.names.get(i0).substring(13); +System.out.println(name); +if (name.endsWith("_y") || name.endsWith("_z")) { +i0++; +continue; +}if (name.endsWith("_x")) { +this.writeVectors(name.substring(0, name.length - 2)); +i0 = 0; +} else { +this.writeItems(name); +}} +}); +Clazz.defineMethod(c$, "writeGlobalBlocks", +function(){ +var globals = this.vwr.getModelForAtomIndex(this.bs.nextSetBit(0)).auxiliaryInfo.get("globalPWmatData"); +if (globals != null) for (var e, $e = globals.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +this.oc.append(e.getKey()).append("\n"); +var lines = e.getValue(); +for (var i = 0; i < lines.length; i++) this.oc.append(lines[i]).append("\n"); + +} +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return (this.oc == null ? "" : this.oc.toString()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/QCJSONWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/QCJSONWriter.js new file mode 100755 index 000000000000..99472ce8fa5b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/QCJSONWriter.js @@ -0,0 +1,468 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(["JU.SB", "J.api.JmolWriter", "JU.JSONWriter", "java.util.Hashtable"], "J.adapter.writers.QCJSONWriter", ["java.util.Date", "JU.DF", "$.P3", "$.PT", "org.qcschema.QCSchemaUnits"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.moBases = null; +this.htBasisMap = null; +this.filterMOs = false; +this.vwr = null; +this.basisID = 0; +this.shells = null; +this.dfCoefMaps = null; +if (!Clazz.isClassDefined("J.adapter.writers.QCJSONWriter.SparseArray")) { +J.adapter.writers.QCJSONWriter.$QCJSONWriter$SparseArray$ (); +} +Clazz.instantialize(this, arguments);}, J.adapter.writers, "QCJSONWriter", JU.JSONWriter, J.api.JmolWriter); +Clazz.prepareFields (c$, function(){ +this.moBases = new java.util.Hashtable(); +this.htBasisMap = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.adapter.writers.QCJSONWriter, []); +}); +Clazz.overrideMethod(c$, "set", +function(viewer, oc, data){ +this.vwr = viewer; +this.oc = (oc == null ? this.vwr.getOutputChannel(null, null) : oc); +this.setWriteNullAsString(false); +this.setStream(oc); +}, "JV.Viewer,JU.OC,~A"); +Clazz.overrideMethod(c$, "write", +function(bs){ +this.writeJSON(); +return this.toString(); +}, "JU.BS"); +Clazz.defineMethod(c$, "toString", +function(){ +return (this.oc == null ? "{}" : this.oc.toString()); +}); +Clazz.defineMethod(c$, "writeJSON", +function(){ +this.openSchema(); +this.writeMagic(); +this.oc.append(",\n"); +this.writeSchemaMetadata(); +this.writeJobs(); +this.closeSchema(); +}); +Clazz.defineMethod(c$, "writeSchemaMetadata", +function(){ +this.mapOpen(); +this.mapAddKeyValue("__jmol_created", new java.util.Date(), ",\n"); +this.mapAddKeyValue("__jmol_source", this.vwr.getP("_modelFile"), ""); +this.mapClose(); +}); +Clazz.defineMethod(c$, "openSchema", +function(){ +this.arrayOpen(false); +}); +Clazz.defineMethod(c$, "writeMagic", +function(){ +this.writeString(org.qcschema.QCSchemaUnits.version); +}); +Clazz.defineMethod(c$, "closeSchema", +function(){ +this.oc.append("\n"); +this.arrayClose(false); +this.closeStream(); +}); +Clazz.defineMethod(c$, "writeJobs", +function(){ +this.writeJob(1); +}); +Clazz.defineMethod(c$, "writeJob", +function(iJob){ +this.append(",\n"); +this.mapOpen(); +{ +this.mapAddKeyValue("__jmol_block", "Job " + iJob, ",\n"); +this.writeJobMetadata(); +this.writeModels(); +this.writeMOBases(); +}this.mapClose(); +}, "~N"); +Clazz.defineMethod(c$, "writeJobMetadata", +function(){ +this.mapAddKey("metadata"); +this.mapOpen(); +{ +this.mapAddMapAllExcept("__jmol_info", this.vwr.getModelSetAuxiliaryInfo(), ";group3Counts;properties;group3Lists;models;unitCellParams;"); +}this.mapClose(); +}); +Clazz.defineMethod(c$, "writeModels", +function(){ +var nModels = this.vwr.ms.mc; +this.oc.append(",\n"); +this.mapAddKey("steps"); +this.arrayOpen(true); +{ +this.oc.append("\n"); +for (var i = 0; i < nModels; ) { +if (i > 0) this.append(",\n"); +i = this.writeModel(i); +} +}this.arrayClose(true); +}); +Clazz.defineMethod(c$, "writeModel", +function(modelIndex){ +var nextModel = modelIndex + 1; +this.append(""); +this.mapOpen(); +{ +this.mapAddKeyValue("__jmol_block", "Model " + (modelIndex + 1), ",\n"); +this.writeTopology(modelIndex); +if (this.isVibration(modelIndex)) { +this.oc.append(",\n"); +nextModel = this.writeVibrations(modelIndex); +}if (this.haveMOData(modelIndex)) { +this.oc.append(",\n"); +this.writeMOData(modelIndex); +}this.oc.append(",\n"); +this.writeModelMetadata(modelIndex); +}this.mapClose(); +this.oc.append("\n"); +return nextModel; +}, "~N"); +Clazz.defineMethod(c$, "writeTopology", +function(modelIndex){ +this.mapAddKey("topology"); +this.mapOpen(); +{ +this.writeAtoms(modelIndex); +this.writeBonds(modelIndex); +}this.mapClose(); +}, "~N"); +Clazz.defineMethod(c$, "getProperty", +function(modelIndex, key){ +var props = (modelIndex >= this.vwr.ms.am.length ? null : this.vwr.ms.am[modelIndex].auxiliaryInfo.get("modelProperties")); +return (props == null ? null : props.get(key)); +}, "~N,~S"); +Clazz.defineMethod(c$, "isVibration", +function(modelIndex){ +return (this.vwr.ms.getLastVibrationVector(modelIndex, 0) >= 0); +}, "~N"); +Clazz.defineMethod(c$, "writeModelMetadata", +function(modelIndex){ +this.mapAddKey("metadata"); +this.mapOpen(); +{ +this.mapAddMapAllExcept("__jmol_info", this.vwr.ms.am[modelIndex].auxiliaryInfo, ";.PATH;PATH;fileName;moData;unitCellParams;"); +}this.mapClose(); +}, "~N"); +Clazz.defineMethod(c$, "writeAtoms", +function(modelIndex){ +var symbols = Clazz.innerTypeInstance(J.adapter.writers.QCJSONWriter.SparseArray, this, null, "_RLE_"); +var numbers = Clazz.innerTypeInstance(J.adapter.writers.QCJSONWriter.SparseArray, this, null, "_RLE_"); +var charges = Clazz.innerTypeInstance(J.adapter.writers.QCJSONWriter.SparseArray, this, null, "_RLE_"); +var names = Clazz.innerTypeInstance(J.adapter.writers.QCJSONWriter.SparseArray, this, null, "_RLE_"); +var types = Clazz.innerTypeInstance(J.adapter.writers.QCJSONWriter.SparseArray, this, null, "_RLE_"); +this.mapAddKey("atoms"); +this.mapOpen(); +{ +var unitCell = this.vwr.ms.getUnitCell(modelIndex); +var isFractional = (unitCell != null && !unitCell.isBio()); +if (isFractional) { +var params = unitCell.getUnitCellAsArray(false); +this.writePrefix_Units("unit_cell", "angstroms"); +this.mapAddKeyValue("unit_cell", params, ",\n"); +}this.writePrefix_Units("coords", isFractional ? "fractional" : "angstroms"); +this.mapAddKey("coords"); +this.arrayOpen(true); +{ +this.oc.append("\n"); +var bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +var last = bs.length() - 1; +var pt = new JU.P3(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = this.vwr.ms.at[i]; +this.append(""); +pt.setT(a); +if (isFractional) unitCell.toFractional(pt, false); +this.oc.append(this.formatNumber(pt.x)).append(",\t").append(this.formatNumber(pt.y)).append(",\t").append(this.formatNumber(pt.z)).append(i < last ? ",\n" : "\n"); +symbols.add(JU.PT.esc(a.getElementSymbol())); +numbers.add("" + a.getElementNumber()); +charges.add("" + a.getPartialCharge()); +var name = a.getAtomName(); +names.add(name); +var type = a.getAtomType(); +types.add(type.equals(name) ? null : type); +} +}this.arrayClose(true); +this.oc.append(",\n"); +if (charges.isNumericAndNonZero()) { +this.mapAddKeyValueRaw("charge", charges, ",\n"); +}if (types.hasValues()) { +this.mapAddKeyValueRaw("types", types, ",\n"); +}this.mapAddKeyValueRaw("symbol", symbols, ",\n"); +this.mapAddKeyValueRaw("atom_number", numbers, "\n"); +}this.mapClose(); +}, "~N"); +Clazz.defineMethod(c$, "formatNumber", +function(x){ +return (x < 0 ? "" : " ") + JU.DF.formatDecimal(x, -6); +}, "~N"); +Clazz.defineMethod(c$, "writePrefix_Units", +function(prefix, units){ +this.mapAddKeyValueRaw(prefix + "_units", org.qcschema.QCSchemaUnits.getUnitsJSON(units, false), ",\n"); +}, "~S,~S"); +Clazz.defineMethod(c$, "writeBonds", +function(modelIndex){ +}, "~N"); +Clazz.defineMethod(c$, "writeVibrations", +function(modelIndex){ +this.mapAddKey("vibrations"); +this.arrayOpen(true); +{ +this.oc.append("\n"); +var sep = null; +var ivib = 0; +modelIndex--; +while (this.isVibration(++modelIndex)) { +if (sep != null) this.oc.append(sep); +sep = ",\n"; +this.append(""); +this.mapOpen(); +{ +this.mapAddKeyValue("__jmol_block", "Vibration " + (++ivib), ",\n"); +var value = this.getProperty(modelIndex, "FreqValue"); +var freq = this.getProperty(modelIndex, "Frequency"); +var intensity = this.getProperty(modelIndex, "IRIntensity"); +var tokens; +if (value == null) { +System.out.println("model " + modelIndex + " has no _M.properties.FreqValue"); +}if (freq == null) { +System.out.println("model " + modelIndex + " has no _M.properties.Frequency"); +} else { +tokens = JU.PT.split(freq, " "); +if (tokens.length == 1) { +System.out.println("model " + modelIndex + " has no frequency units"); +}this.writeMapKeyValueUnits("frequency", value, tokens[1]); +}if (intensity != null) { +tokens = JU.PT.split(intensity, " "); +this.writeMapKeyValueUnits("ir_intensity", tokens[0], tokens[1]); +}var label = this.getProperty(modelIndex, "FrequencyLabel"); +if (label != null) this.mapAddKeyValue("label", label, ",\n"); +this.mapAddKey("vectors"); +this.arrayOpen(true); +{ +this.oc.append("\n"); +var bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +var last = bs.length() - 1; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = this.vwr.ms.at[i]; +var v = a.getVibrationVector(); +this.append(""); +this.oc.append(this.formatNumber(v.x)).append(",\t").append(this.formatNumber(v.y)).append(",\t").append(this.formatNumber(v.z)).append(i < last ? ",\n" : "\n"); +} +}this.arrayClose(true); +}this.append(""); +this.mapClose(); +} +}this.oc.append("\n"); +this.arrayClose(true); +return modelIndex; +}, "~N"); +Clazz.defineMethod(c$, "writeMapKeyValueUnits", +function(key, value, units){ +this.mapAddKeyValueRaw(key, "{\"value\":" + value + ",\"units\":" + org.qcschema.QCSchemaUnits.getUnitsJSON(units, false) + "}", ",\n"); +}, "~S,~O,~S"); +Clazz.defineMethod(c$, "haveMOData", +function(modelIndex){ +return (this.getAuxiliaryData(modelIndex, "moData") != null); +}, "~N"); +Clazz.defineMethod(c$, "getAuxiliaryData", +function(modelIndex, key){ +return this.vwr.ms.am[modelIndex].auxiliaryInfo.get(key); +}, "~N,~S"); +Clazz.defineMethod(c$, "writeMOData", +function(modelIndex){ +var moData = this.getAuxiliaryData(modelIndex, "moData"); +var moDataJSON = new java.util.Hashtable(); +moDataJSON.put("orbitals", moData.get("mos")); +var units = moData.get("EnergyUnits"); +if (units == null) units = "?"; +moDataJSON.put("orbitals_energy_units", org.qcschema.QCSchemaUnits.getUnitsJSON(units, true)); +moDataJSON.put("__jmol_normalized", Boolean.$valueOf(moData.get("isNormalized") === Boolean.TRUE)); +var type = moData.get("calculationType"); +moDataJSON.put("__jmol_calculation_type", type == null ? "?" : type); +this.setDFCoord(moData); +moDataJSON.put("basis_id", this.addBasis(moData)); +this.filterMOs = true; +this.setModifyKeys(J.adapter.writers.QCJSONWriter.fixIntegration()); +this.mapAddKeyValue("molecular_orbitals", moDataJSON, "\n"); +this.setModifyKeys(null); +this.filterMOs = false; +this.append(""); +}, "~N"); +c$.fixIntegration = Clazz.defineMethod(c$, "fixIntegration", +function(){ +if (J.adapter.writers.QCJSONWriter.integrationKeyMap == null) { +J.adapter.writers.QCJSONWriter.integrationKeyMap = new java.util.Hashtable(); +J.adapter.writers.QCJSONWriter.integrationKeyMap.put("integration", "__jmol_integration"); +}return J.adapter.writers.QCJSONWriter.integrationKeyMap; +}); +Clazz.overrideMethod(c$, "getAndCheckValue", +function(map, key){ +if (this.filterMOs) { +if (key.equals("dfCoefMaps")) return null; +if (key.equals("symmetry")) return (map.get(key)).$replace('_', ' ').trim(); +if (key.equals("coefficients") && this.dfCoefMaps != null) { +return this.fixCoefficients(map.get(key)); +}}return map.get(key); +}, "java.util.Map,~S"); +Clazz.defineMethod(c$, "fixCoefficients", +function(coeffs){ +var c = Clazz.newDoubleArray (coeffs.length, 0); +for (var i = 0, n = this.shells.size(); i < n; i++) { +var shell = this.shells.get(i); +var type = shell[1]; +var map = this.dfCoefMaps[type]; +for (var j = 0, coefPtr = 0; j < map.length; j++, coefPtr++) c[coefPtr + j] = coeffs[coefPtr + map[j]]; + +} +return c; +}, "~A"); +Clazz.defineMethod(c$, "setDFCoord", +function(moData){ +this.dfCoefMaps = moData.get("dfCoefMaps"); +if (this.dfCoefMaps != null) { +var haveMap = false; +for (var i = 0; !haveMap && i < this.dfCoefMaps.length; i++) { +var m = this.dfCoefMaps[i]; +for (var j = 0; j < m.length; j++) if (m[j] != 0) { +haveMap = true; +break; +} +} +if (!haveMap) this.dfCoefMaps = null; +}}, "java.util.Map"); +Clazz.defineMethod(c$, "addBasis", +function(moData){ +var hash = 1; +var gaussians = moData.get("gaussians"); +if (gaussians != null) { +hash ^= gaussians.hashCode(); +}this.shells = moData.get("shells"); +if (this.shells != null) { +hash ^= this.shells.hashCode(); +}var slaters = moData.get("slaters"); +if (slaters != null) { +hash ^= slaters.hashCode(); +}var strHash = "" + hash; +var key = this.htBasisMap.get(strHash); +if (key == null) { +this.htBasisMap.put(strHash, key = "MOBASIS_" + ++this.basisID); +var map = new java.util.Hashtable(); +if (gaussians != null) map.put("gaussians", gaussians); +if (this.shells != null) { +map.put("shells", this.shells); +}if (slaters != null) map.put("slaters", slaters); +this.moBases.put(key, map); +}return key; +}, "java.util.Map"); +Clazz.defineMethod(c$, "writeMOBases", +function(){ +if (this.moBases.isEmpty()) return; +this.oc.append(",\n"); +this.mapAddKey("mo_bases"); +this.mapOpen(); +{ +var sep = null; +for (var key, $key = this.moBases.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (key.startsWith("!")) continue; +this.append(sep); +this.mapAddKeyValue(key, this.moBases.get(key), "\n"); +sep = ",\n"; +} +}this.mapClose(); +this.moBases.clear(); +}); +Clazz.defineMethod(c$, "writeObject", +function(o){ +if (Clazz.instanceOf(o,"J.quantum.SlaterData")) { +this.oc.append(o.toString()); +} else { +Clazz.superCall(this, J.adapter.writers.QCJSONWriter, "writeObject", [o]); +}}, "~O"); +c$.$QCJSONWriter$SparseArray$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.repeatCount = 0; +this.elementCount = 0; +this.$lastElement = null; +this.sep = ""; +this.type = null; +this.isRLE = false; +Clazz.instantialize(this, arguments);}, J.adapter.writers.QCJSONWriter, "SparseArray", JU.SB); +Clazz.makeConstructor(c$, +function(type){ +Clazz.superConstructor (this, J.adapter.writers.QCJSONWriter.SparseArray, []); +this.type = type; +this.isRLE = (type.equals("_RLE_")); +}, "~S"); +Clazz.defineMethod(c$, "add", +function(element){ +if (element == null) element = "null"; +if (!this.isRLE) { +this.append(this.sep); +this.append(element); +this.sep = ","; +return; +}if (this.repeatCount > 0 && !element.equals(this.$lastElement)) { +this.append(this.sep); +this.appendI(this.repeatCount); +this.sep = ","; +this.append(this.sep); +this.append(this.$lastElement); +this.repeatCount = 0; +}this.$lastElement = element; +this.repeatCount++; +this.elementCount++; +}, "~S"); +Clazz.defineMethod(c$, "lastElement", +function(){ +return this.$lastElement; +}); +Clazz.defineMethod(c$, "isEmpty", +function(){ +return (this.elementCount == 0); +}); +Clazz.defineMethod(c$, "allNaN", +function(){ +return (this.allSame() && JU.PT.parseFloat(this.$lastElement) == NaN); +}); +Clazz.defineMethod(c$, "allNull", +function(){ +return (this.allSame() && this.$lastElement.equals("null")); +}); +Clazz.defineMethod(c$, "allEmptyString", +function(){ +return (this.allSame() && this.$lastElement.equals("")); +}); +Clazz.defineMethod(c$, "allSame", +function(){ +return (!this.isEmpty() && this.elementCount == this.repeatCount); +}); +Clazz.defineMethod(c$, "allZero", +function(){ +return (this.allSame() && JU.PT.parseFloat(this.$lastElement) != NaN); +}); +Clazz.defineMethod(c$, "hasValues", +function(){ +return (!this.allSame() || !this.allNull() && !this.allEmptyString()); +}); +Clazz.defineMethod(c$, "isNumericAndNonZero", +function(){ +return (this.allSame() && !this.allNaN() && !this.allZero()); +}); +Clazz.defineMethod(c$, "toString", +function(){ +var s = Clazz.superCall(this, J.adapter.writers.QCJSONWriter.SparseArray, "toString", []); +return (s.length == 0 ? "[]" : "[\"" + this.type + "\"," + s + (this.repeatCount > 0 ? this.sep + this.repeatCount + "," + this.$lastElement : "") + "]"); +}); +/*eoif4*/})(); +}; +c$.integrationKeyMap = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/XSFWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/XSFWriter.js new file mode 100755 index 000000000000..a2786dad656c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/XSFWriter.js @@ -0,0 +1,69 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(["J.api.JmolWriter"], "J.adapter.writers.XSFWriter", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.oc = null; +this.uc = null; +this.len = 0; +Clazz.instantialize(this, arguments);}, J.adapter.writers, "XSFWriter", null, J.api.JmolWriter); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "set", +function(viewer, oc, data){ +this.vwr = viewer; +this.oc = (oc == null ? this.vwr.getOutputChannel(null, null) : oc); +}, "JV.Viewer,JU.OC,~A"); +Clazz.overrideMethod(c$, "write", +function(bs){ +if (bs == null) bs = this.vwr.bsA(); +this.len = bs.length(); +if (this.len == 0) return ""; +try { +var a = this.vwr.ms.at; +var i0 = bs.nextSetBit(0); +this.uc = this.vwr.ms.getUnitCellForAtom(i0); +var model1 = a[i0].getModelIndex(); +var model2 = a[this.len - 1].getModelIndex(); +var isAnim = (model2 != model1); +if (isAnim) { +var nModels = this.vwr.ms.getModelBS(bs, false).cardinality(); +this.oc.append("ANIMSTEPS " + nModels + "\n"); +}if (this.uc != null) this.oc.append("CRYSTAL\n"); +var f = "%4i%18.12p%18.12p%18.12p\n"; +var prefix = (this.uc == null ? "ATOMS" : "PRIMCOORD"); +for (var lastmi = -1, imodel = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var atom = a[i]; +var mi = atom.getModelIndex(); +if (mi != lastmi) { +var sn = (isAnim ? " " + (++imodel) : ""); +var header = prefix + sn + "\n"; +this.uc = this.vwr.ms.getUnitCellForAtom(i); +if (this.uc == null) { +this.oc.append(header); +} else { +this.writeLattice(sn); +this.oc.append(header); +var bsm = this.vwr.restrictToModel(bs, mi); +this.oc.append(JU.PT.formatStringI("%6i 1\n", "i", bsm.cardinality())); +}lastmi = mi; +}this.oc.append(JU.PT.sprintf(f, "ip", Clazz.newArray(-1, [Integer.$valueOf(atom.getElementNumber()), atom]))); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return this.toString(); +}, "JU.BS"); +Clazz.defineMethod(c$, "writeLattice", +function(sn){ +var abc = this.uc.getUnitCellVectors(); +var f = "%18.10p%18.10p%18.10p\n"; +var s = JU.PT.sprintf(f, "p", Clazz.newArray(-1, [abc[1]])) + JU.PT.sprintf(f, "p", Clazz.newArray(-1, [abc[2]])) + JU.PT.sprintf(f, "p", Clazz.newArray(-1, [abc[3]])); +this.oc.append("PRIMVEC" + sn + "\n").append(s).append("CONVVEC" + sn + "\n").append(s); +}, "~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +return (this.oc == null ? "" : this.oc.toString()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/XtlWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/XtlWriter.js new file mode 100755 index 000000000000..e226b45e2082 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/adapter/writers/XtlWriter.js @@ -0,0 +1,53 @@ +Clazz.declarePackage("J.adapter.writers"); +Clazz.load(null, "J.adapter.writers.XtlWriter", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveUnitCell = true; +this.isHighPrecision = true; +this.slop = 0; +this.precision = 0; +Clazz.instantialize(this, arguments);}, J.adapter.writers, "XtlWriter", null); +Clazz.defineMethod(c$, "clean", +function(d){ +if (!this.isHighPrecision) return this.cleanF(d); +var t; +return (!this.haveUnitCell || (t = J.adapter.writers.XtlWriter.twelfthsOf(d)) < 0 ? JU.PT.formatF(d, 18, 12, false, false) : (d < 0 ? " -" : " ") + J.adapter.writers.XtlWriter.twelfths[t]); +}, "~N"); +c$.twelfthsOf = Clazz.defineMethod(c$, "twelfthsOf", +function(f){ +if (f == 0) return 0; +f = Math.abs(f * 12); +var i = Math.round(f); +return (i <= 12 && Math.abs(f - i) < J.adapter.writers.XtlWriter.SLOPD * 12 ? i : -1); +}, "~N"); +Clazz.defineMethod(c$, "cleanF", +function(f){ +var t; +if (this.slop != 0) return this.cleanSlop(f); +return (!this.haveUnitCell || (t = J.adapter.writers.XtlWriter.twelfthsOfF(f)) < 0 ? JU.PT.formatF(f, 12, 7, false, false) : (f < 0 ? " -" : " ") + J.adapter.writers.XtlWriter.twelfthsF[t]); +}, "~N"); +Clazz.defineMethod(c$, "cleanSlop", +function(f){ +return JU.PT.formatF(f, this.precision + 6, this.precision, false, false); +}, "~N"); +c$.twelfthsOfF = Clazz.defineMethod(c$, "twelfthsOfF", +function(f){ +if (f == 0) return 0; +f = Math.abs(f * 12); +var i = Math.round(f); +return (i <= 12 && Math.abs(f - i) < J.adapter.writers.XtlWriter.SLOPF * 12 ? i : -1); +}, "~N"); +Clazz.defineMethod(c$, "cleanT", +function(d){ +var s = this.clean(d); +if (this.isHighPrecision) return s; +var i = s.length; +while (--i >= 2 && s.charAt(i) == '0' && s.charAt(i - 1) != '.') { +} +return s.substring(0, i + 1); +}, "~N"); +c$.SLOPD = 0.000000000010; +c$.SLOPF = 0.0000010; +c$.twelfths = Clazz.newArray(-1, ["0.000000000000", "0.083333333333", "0.166666666667", "0.250000000000", "0.333333333333", "0.416666666667", "0.500000000000", "0.583333333333", "0.666666666667", "0.750000000000", "0.833333333333", "0.916666666667", "1.000000000000"]); +c$.twelfthsF = Clazz.newArray(-1, ["0.0000000", "0.0833333", "0.1666667", "0.2500000", "0.3333333", "0.4166667", "0.5000000", "0.5833333", "0.6666667", "0.7500000", "0.8333333", "0.9166667", "1.0000000"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/AtomIndexIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/api/AtomIndexIterator.js new file mode 100755 index 000000000000..ef9ba3f961e3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/AtomIndexIterator.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "AtomIndexIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/EventManager.js b/config/plugins/visualizations/jmol/static/j2s/J/api/EventManager.js new file mode 100755 index 000000000000..af6fe18aa780 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/EventManager.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "EventManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/FontManager.js b/config/plugins/visualizations/jmol/static/j2s/J/api/FontManager.js new file mode 100755 index 000000000000..4dfb6dca0524 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/FontManager.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "FontManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/GenericFileInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericFileInterface.js new file mode 100755 index 000000000000..cd49d0b119cb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericFileInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "GenericFileInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/GenericGraphics.js b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericGraphics.js new file mode 100755 index 000000000000..95f2e81446f6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericGraphics.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "GenericGraphics"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/GenericImageDialog.js b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericImageDialog.js new file mode 100755 index 000000000000..88fe29beafe2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericImageDialog.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "GenericImageDialog"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/GenericMenuInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericMenuInterface.js new file mode 100755 index 000000000000..75e3e50e7869 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericMenuInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "GenericMenuInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/GenericMouseInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericMouseInterface.js new file mode 100755 index 000000000000..de3dd80f6730 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericMouseInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "GenericMouseInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/GenericPlatform.js b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericPlatform.js new file mode 100755 index 000000000000..a6a14d17cae5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/GenericPlatform.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.api"); +Clazz.load(["J.api.FontManager"], "J.api.GenericPlatform", null, function(){ +var c$ = Clazz.declareInterface(J.api, "GenericPlatform", J.api.FontManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/Interface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/Interface.js new file mode 100755 index 000000000000..817ca2cf62af --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/Interface.js @@ -0,0 +1,31 @@ +Clazz.declarePackage("J.api"); +Clazz.load(null, "J.api.Interface", ["JU.Logger"], function(){ +var c$ = Clazz.declareType(J.api, "Interface", null); +c$.getInterface = Clazz.defineMethod(c$, "getInterface", +function(name, vwr, state){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S,JV.Viewer,~S"); +c$.getOption = Clazz.defineMethod(c$, "getOption", +function(className, vwr, state){ +return J.api.Interface.getInterface("J." + className, vwr, state); +}, "~S,JV.Viewer,~S"); +c$.getUtil = Clazz.defineMethod(c$, "getUtil", +function(name, vwr, state){ +return J.api.Interface.getInterface("JU." + name, vwr, state); +}, "~S,JV.Viewer,~S"); +c$.getSymmetry = Clazz.defineMethod(c$, "getSymmetry", +function(vwr, state){ +return J.api.Interface.getInterface("JS.Symmetry", vwr, state); +}, "JV.Viewer,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JSVInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JSVInterface.js new file mode 100755 index 000000000000..e8286be15ee9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JSVInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JSVInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAbstractButton.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAbstractButton.js new file mode 100755 index 000000000000..230c6172f485 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAbstractButton.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolAbstractButton"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapter.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapter.js new file mode 100755 index 000000000000..5a970dfed349 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapter.js @@ -0,0 +1,52 @@ +Clazz.declarePackage("J.api"); +Clazz.load(null, "J.api.JmolAdapter", ["JU.PT", "J.api.JmolViewer", "JU.Elements"], function(){ +var c$ = Clazz.declareType(J.api, "JmolAdapter", null); +c$.getElementSymbol = Clazz.defineMethod(c$, "getElementSymbol", +function(elementNumber){ +return JU.Elements.elementSymbolFromNumber(elementNumber); +}, "~N"); +c$.getElementNumber = Clazz.defineMethod(c$, "getElementNumber", +function(elementSymbol){ +return JU.Elements.elementNumberFromSymbol(elementSymbol, false); +}, "~S"); +c$.getNaturalIsotope = Clazz.defineMethod(c$, "getNaturalIsotope", +function(elementNumber){ +return JU.Elements.getNaturalIsotope(elementNumber); +}, "~N"); +c$.getBondingRadius = Clazz.defineMethod(c$, "getBondingRadius", +function(atomicNumberWithIsotope, charge){ +return JU.Elements.getBondingRadius(atomicNumberWithIsotope, charge); +}, "~N,~N"); +Clazz.defineMethod(c$, "getAtomSetCollectionFromReaderType", +function(name, type, bufferedReader, htParams){ +var a = this.getAtomSetCollectionReader(name, type, bufferedReader, (J.api.JmolViewer.allocateViewer(null, this)).setLoadParameters(htParams, false)); +if ((typeof(a)=='string')) return a; +return this.getAtomSetCollection(a); +}, "~S,~S,~O,java.util.Map"); +Clazz.defineMethod(c$, "openBufferedReader", +function(name, bufferedReader){ +return this.getAtomSetCollectionFromReaderType(name, null, bufferedReader, null); +}, "~S,java.io.BufferedReader"); +Clazz.defineMethod(c$, "openBufferedReader", +function(name, bufferedReader, htParams){ +return this.getAtomSetCollectionFromReaderType(name, null, bufferedReader, htParams); +}, "~S,java.io.BufferedReader,java.util.Map"); +Clazz.defineMethod(c$, "openBufferedReader", +function(name, type, bufferedReader){ +return this.getAtomSetCollectionFromReaderType(name, type, bufferedReader, null); +}, "~S,~S,java.io.BufferedReader"); +c$.canonizeAlphaDigit = Clazz.defineMethod(c$, "canonizeAlphaDigit", +function(ch){ +return (JU.PT.isLetterOrDigit(ch) ? ch : '\0'); +}, "~S"); +c$.canonizeInsertionCode = Clazz.defineMethod(c$, "canonizeInsertionCode", +function(insertionCode){ +return J.api.JmolAdapter.canonizeAlphaDigit(insertionCode); +}, "~S"); +c$.canonizeAlternateLocationID = Clazz.defineMethod(c$, "canonizeAlternateLocationID", +function(altLoc){ +return J.api.JmolAdapter.canonizeAlphaDigit(altLoc); +}, "~S"); +c$.cellParamNames = Clazz.newArray(-1, ["_cell_length_a", "_cell_length_b", "_cell_length_c", "_cell_angle_alpha", "_cell_angle_beta", "_cell_angle_gamma"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterAtomIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterAtomIterator.js new file mode 100755 index 000000000000..ca7497ebb788 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterAtomIterator.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolAdapterAtomIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterBondIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterBondIterator.js new file mode 100755 index 000000000000..f163aa233164 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterBondIterator.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.api"); +(function(){ +var c$ = Clazz.declareType(J.api, "JmolAdapterBondIterator", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterStructureIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterStructureIterator.js new file mode 100755 index 000000000000..e2a51ddf1d2b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAdapterStructureIterator.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.api"); +(function(){ +var c$ = Clazz.declareType(J.api, "JmolAdapterStructureIterator", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAnnotationParser.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAnnotationParser.js new file mode 100755 index 000000000000..859ec05f9f33 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAnnotationParser.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolAnnotationParser"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppAPI.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppAPI.js new file mode 100755 index 000000000000..531ed31a4ba2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppAPI.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolAppAPI"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppConsoleInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppConsoleInterface.js new file mode 100755 index 000000000000..a140be61ad14 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppConsoleInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolAppConsoleInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppletInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppletInterface.js new file mode 100755 index 000000000000..310e80e9d81c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAppletInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolAppletInterface", J.api.JmolSyncInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAudioPlayer.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAudioPlayer.js new file mode 100755 index 000000000000..aa8890609073 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolAudioPlayer.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolAudioPlayer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolCallbackListener.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolCallbackListener.js new file mode 100755 index 000000000000..09aa371b28a0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolCallbackListener.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolCallbackListener"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDataManager.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDataManager.js new file mode 100755 index 000000000000..93676efd0f10 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDataManager.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.api"); +(function(){ +var c$ = Clazz.declareInterface(J.api, "JmolDataManager"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDialogInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDialogInterface.js new file mode 100755 index 000000000000..8b594896fff6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDialogInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolDialogInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDropEditor.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDropEditor.js new file mode 100755 index 000000000000..db026c0b1ccb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolDropEditor.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolDropEditor"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolEnvCalc.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolEnvCalc.js new file mode 100755 index 000000000000..c9a29b476841 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolEnvCalc.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolEnvCalc"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolFilesReaderInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolFilesReaderInterface.js new file mode 100755 index 000000000000..b77bcf1274e1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolFilesReaderInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolFilesReaderInterface", Runnable); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolGestureServerInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolGestureServerInterface.js new file mode 100755 index 000000000000..3e371645b3e9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolGestureServerInterface.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.api"); +(function(){ +var c$ = Clazz.declareInterface(J.api, "JmolGestureServerInterface"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolGraphicsInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolGraphicsInterface.js new file mode 100755 index 000000000000..3817ed490dd0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolGraphicsInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolGraphicsInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolInChI.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolInChI.js new file mode 100755 index 000000000000..fc5cb21b044c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolInChI.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolInChI"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJDXMOLParser.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJDXMOLParser.js new file mode 100755 index 000000000000..0ba5cd63a79c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJDXMOLParser.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolJDXMOLParser"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJDXMOLReader.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJDXMOLReader.js new file mode 100755 index 000000000000..eb4c74d501ad --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJDXMOLReader.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolJDXMOLReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJSpecView.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJSpecView.js new file mode 100755 index 000000000000..e47dd118d426 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolJSpecView.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolJSpecView"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolMeasurementClient.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolMeasurementClient.js new file mode 100755 index 000000000000..d11b522d2ad0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolMeasurementClient.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolMeasurementClient"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolModulationSet.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolModulationSet.js new file mode 100755 index 000000000000..0de82eedbeb8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolModulationSet.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolModulationSet"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolMovieCreatorInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolMovieCreatorInterface.js new file mode 100755 index 000000000000..53b9a701cd50 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolMovieCreatorInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolMovieCreatorInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolNMRInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolNMRInterface.js new file mode 100755 index 000000000000..104a57d771cd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolNMRInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolNMRInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolNavigatorInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolNavigatorInterface.js new file mode 100755 index 000000000000..602976d69778 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolNavigatorInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolNavigatorInterface", Runnable); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolParallelProcessor.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolParallelProcessor.js new file mode 100755 index 000000000000..d1db103b4484 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolParallelProcessor.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolParallelProcessor"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolPdfCreatorInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolPdfCreatorInterface.js new file mode 100755 index 000000000000..9ec369aab9a7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolPdfCreatorInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolPdfCreatorInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolPropertyManager.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolPropertyManager.js new file mode 100755 index 000000000000..8b1d42cb1474 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolPropertyManager.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolPropertyManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolRendererInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolRendererInterface.js new file mode 100755 index 000000000000..b1ffac29bb53 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolRendererInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolRendererInterface", J.api.JmolGraphicsInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolRepaintManager.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolRepaintManager.js new file mode 100755 index 000000000000..a26d4e09d2c0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolRepaintManager.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolRepaintManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSceneGenerator.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSceneGenerator.js new file mode 100755 index 000000000000..6f283fb39dc6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSceneGenerator.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolSceneGenerator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptEditorInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptEditorInterface.js new file mode 100755 index 000000000000..5d407c5ec45b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptEditorInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolScriptEditorInterface", J.api.JmolDropEditor); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptEvaluator.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptEvaluator.js new file mode 100755 index 000000000000..84deaf578701 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptEvaluator.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolScriptEvaluator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptFunction.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptFunction.js new file mode 100755 index 000000000000..e9723ee3ee32 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptFunction.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolScriptFunction"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptManager.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptManager.js new file mode 100755 index 000000000000..a4e92f6d3021 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolScriptManager.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.api"); +(function(){ +var c$ = Clazz.declareInterface(J.api, "JmolScriptManager"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSelectionListener.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSelectionListener.js new file mode 100755 index 000000000000..195a4d790eb0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSelectionListener.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolSelectionListener"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolStatusListener.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolStatusListener.js new file mode 100755 index 000000000000..f5ee7da8122f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolStatusListener.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolStatusListener", J.api.JmolCallbackListener); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSyncInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSyncInterface.js new file mode 100755 index 000000000000..73cc277436e4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolSyncInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolSyncInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolTouchSimulatorInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolTouchSimulatorInterface.js new file mode 100755 index 000000000000..42042893360f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolTouchSimulatorInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolTouchSimulatorInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolViewer.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolViewer.js new file mode 100755 index 000000000000..145f858dcf70 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolViewer.js @@ -0,0 +1,63 @@ +Clazz.declarePackage("J.api"); +Clazz.load(null, "J.api.JmolViewer", ["java.util.Hashtable", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.menuStructure = null; +this.apiPlatform = null; +Clazz.instantialize(this, arguments);}, J.api, "JmolViewer", null); +c$.allocateViewer = Clazz.defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, implementedPlatform){ +var info = new java.util.Hashtable(); +if (display != null) info.put("display", display); +if (modelAdapter != null) info.put("adapter", modelAdapter); +if (statusListener != null) info.put("statuslistener", statusListener); +if (implementedPlatform != null) info.put("platform", implementedPlatform); +if (commandOptions != null) info.put("options", commandOptions); +if (fullName != null) info.put("fullname", fullName); +if (documentBase != null) info.put("documentbase", documentBase); +if (codeBase != null) info.put("codebase", codeBase); +info.put("isApp", Boolean.TRUE); +return new JV.Viewer(info); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform"); +c$.allocateViewer = Clazz.defineMethod(c$, "allocateViewer", +function(container, jmolAdapter){ +return J.api.JmolViewer.allocateViewer(container, jmolAdapter, null, null, null, null, null, null); +}, "~O,J.api.JmolAdapter"); +c$.allocateViewer = Clazz.defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener){ +return J.api.JmolViewer.allocateViewer(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, null); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener"); +Clazz.defineMethod(c$, "setConsole", +function(console){ +this.getProperty("DATA_API", "getAppConsole", console); +}, "J.api.JmolAppConsoleInterface"); +c$.getJmolVersion = Clazz.defineMethod(c$, "getJmolVersion", +function(){ +return JV.Viewer.getJmolVersion(); +}); +c$.getJmolVersionNoDate = Clazz.defineMethod(c$, "getJmolVersionNoDate", +function(){ +return JV.JC.version; +}); +Clazz.defineMethod(c$, "openReader", +function(fullPathName, reader){ +return this.openReader(fullPathName == null ? "String" : fullPathName, null, reader); +}, "~S,~O"); +Clazz.defineMethod(c$, "openFileAsync", +function(fileName){ +this.openFileAsyncSpecial(fileName, 0); +}, "~S"); +Clazz.defineMethod(c$, "renderScreenImage", +function(g, currentSize, rectClip){ +this.apiPlatform.renderScreenImage(g, currentSize); +}, "~O,~O,~O"); +Clazz.defineMethod(c$, "runScriptCautiously", +function(script){ +return null; +}, "~S"); +Clazz.defineMethod(c$, "dispose", +function(){ +}); +{ +}{ +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolWriter.js new file mode 100755 index 000000000000..a19de06a9217 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolWriter.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolWriter"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/JmolZipUtilities.js b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolZipUtilities.js new file mode 100755 index 000000000000..6b704b75152a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/JmolZipUtilities.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "JmolZipUtilities"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/PlatformViewer.js b/config/plugins/visualizations/jmol/static/j2s/J/api/PlatformViewer.js new file mode 100755 index 000000000000..a663e7b92bff --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/PlatformViewer.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "PlatformViewer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/PymolAtomReader.js b/config/plugins/visualizations/jmol/static/j2s/J/api/PymolAtomReader.js new file mode 100755 index 000000000000..cdb3e92a8f11 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/PymolAtomReader.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "PymolAtomReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/SC.js b/config/plugins/visualizations/jmol/static/j2s/J/api/SC.js new file mode 100755 index 000000000000..363219457876 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/SC.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "SC"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/SmilesMatcherInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/SmilesMatcherInterface.js new file mode 100755 index 000000000000..a75863465eaa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/SmilesMatcherInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "SmilesMatcherInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/SymmetryInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/SymmetryInterface.js new file mode 100755 index 000000000000..03b418a0bf07 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/SymmetryInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "SymmetryInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/Translator.js b/config/plugins/visualizations/jmol/static/j2s/J/api/Translator.js new file mode 100755 index 000000000000..abcb60cb0919 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/Translator.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api"); +Clazz.declareInterface(J.api, "Translator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/js/GenericConsoleTextArea.js b/config/plugins/visualizations/jmol/static/j2s/J/api/js/GenericConsoleTextArea.js new file mode 100755 index 000000000000..937133757c09 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/js/GenericConsoleTextArea.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api.js"); +Clazz.declareInterface(J.api.js, "GenericConsoleTextArea"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/js/JSConsole.js b/config/plugins/visualizations/jmol/static/j2s/J/api/js/JSConsole.js new file mode 100755 index 000000000000..72297327044c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/js/JSConsole.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api.js"); +Clazz.declareInterface(J.api.js, "JSConsole"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/js/JSmolAppletObject.js b/config/plugins/visualizations/jmol/static/j2s/J/api/js/JSmolAppletObject.js new file mode 100755 index 000000000000..e523fac88813 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/js/JSmolAppletObject.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api.js"); +Clazz.declareInterface(J.api.js, "JSmolAppletObject", javajs.api.js.JSAppletObject); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/api/js/JmolToJSmolInterface.js b/config/plugins/visualizations/jmol/static/j2s/J/api/js/JmolToJSmolInterface.js new file mode 100755 index 000000000000..4845cab94f20 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/api/js/JmolToJSmolInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.api.js"); +Clazz.declareInterface(J.api.js, "JmolToJSmolInterface", javajs.api.js.J2SObjectInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/appletjs/Jmol.js b/config/plugins/visualizations/jmol/static/j2s/J/appletjs/Jmol.js new file mode 100755 index 000000000000..564a8673c816 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/appletjs/Jmol.js @@ -0,0 +1,18 @@ +Clazz.declarePackage("J.appletjs"); +Clazz.load(["JU.GenericApplet"], "J.appletjs.Jmol", ["java.util.Hashtable"], function(){ +var c$ = Clazz.declareType(J.appletjs, "Jmol", JU.GenericApplet); +Clazz.makeConstructor(c$, +function(vwrOptions){ +Clazz.superConstructor (this, J.appletjs.Jmol, []); +this.htParams = new java.util.Hashtable(); +if (vwrOptions == null) vwrOptions = new java.util.Hashtable(); +this.vwrOptions = vwrOptions; +for (var entry, $entry = vwrOptions.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.htParams.put(entry.getKey().toLowerCase(), entry.getValue()); + +this.documentBase = "" + vwrOptions.get("documentBase"); +this.codeBase = "" + vwrOptions.get("codePath"); +JU.GenericApplet.isJS = true; +this.init(this); +}, "java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/atomdata/AtomData.js b/config/plugins/visualizations/jmol/static/j2s/J/atomdata/AtomData.js new file mode 100755 index 000000000000..dcb03a9aa89c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/atomdata/AtomData.js @@ -0,0 +1,39 @@ +Clazz.declarePackage("J.atomdata"); +Clazz.load(null, "J.atomdata.AtomData", ["JU.P3", "JU.BSUtil"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.programInfo = null; +this.fileName = null; +this.modelName = null; +this.modelIndex = 0; +this.bsSelected = null; +this.bsIgnored = null; +this.bsMolecules = null; +this.radiusData = null; +this.firstAtomIndex = 0; +this.firstModelIndex = 0; +this.lastModelIndex = 0; +this.hAtomRadius = 0; +this.atomIndex = null; +this.atoms = null; +this.xyz = null; +this.atomRadius = null; +this.atomicNumber = null; +this.atomMolecule = null; +this.hAtoms = null; +this.ac = 0; +this.hydrogenAtomCount = 0; +this.adpMode = 0; +Clazz.instantialize(this, arguments);}, J.atomdata, "AtomData", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "transformXYZ", +function(mat, bs){ +var p = new Array(this.xyz.length); +if (bs == null) bs = JU.BSUtil.newBitSet2(0, this.xyz.length); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (this.xyz[i] == null) continue; +p[i] = JU.P3.newP(this.xyz[i]); +mat.rotTrans(p[i]); +} +this.xyz = p; +}, "JU.M4,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/atomdata/AtomDataServer.js b/config/plugins/visualizations/jmol/static/j2s/J/atomdata/AtomDataServer.js new file mode 100755 index 000000000000..de7c53b088bd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/atomdata/AtomDataServer.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.atomdata"); +Clazz.declareInterface(J.atomdata, "AtomDataServer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/atomdata/RadiusData.js b/config/plugins/visualizations/jmol/static/j2s/J/atomdata/RadiusData.js new file mode 100755 index 000000000000..d3bc8e1936ed --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/atomdata/RadiusData.js @@ -0,0 +1,54 @@ +Clazz.declarePackage("J.atomdata"); +Clazz.load(["java.lang.Enum", "J.c.VDW"], "J.atomdata.RadiusData", ["JU.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.info = null; +this.factorType = null; +this.vdwType = null; +this.value = NaN; +this.valueExtended = 0; +this.values = null; +Clazz.instantialize(this, arguments);}, J.atomdata, "RadiusData", null); +Clazz.prepareFields (c$, function(){ +this.factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +this.vdwType = J.c.VDW.AUTO; +}); +Clazz.makeConstructor(c$, +function(values, value, factorType, vdwType){ +if (values != null) { +this.values = values; +this.value = 2147483647; +return; +}if (factorType == null) return; +this.factorType = factorType; +this.value = value; +if (vdwType != null) this.vdwType = vdwType; +}, "~A,~N,J.atomdata.RadiusData.EnumType,J.c.VDW"); +Clazz.overrideMethod(c$, "toString", +function(){ +if (Float.isNaN(this.value)) return ""; +var sb = new JU.SB(); +switch (this.factorType) { +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +sb.appendF(this.value); +break; +case J.atomdata.RadiusData.EnumType.OFFSET: +sb.append(this.value > 0 ? "+" : "").appendF(this.value); +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +sb.appendI(Clazz.floatToInt(this.value * 100)).append("%"); +if (this.vdwType !== J.c.VDW.AUTO) sb.append(this.vdwType.getVdwLabel()); +break; +case J.atomdata.RadiusData.EnumType.SCREEN: +sb.appendI(Clazz.floatToInt(this.value)); +} +return sb.toString(); +}); +/*if2*/;(function(){ +var c$ = Clazz.declareType(J.atomdata.RadiusData, "EnumType", Enum); +Clazz.defineEnumConstant(c$, "ABSOLUTE", 0, []); +Clazz.defineEnumConstant(c$, "OFFSET", 1, []); +Clazz.defineEnumConstant(c$, "FACTOR", 2, []); +Clazz.defineEnumConstant(c$, "SCREEN", 3, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs/Event.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs/Event.js new file mode 100755 index 000000000000..f8278e33d01e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs/Event.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.awtjs"); +(function(){ +var c$ = Clazz.declareType(J.awtjs, "Event", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs/Platform.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs/Platform.js new file mode 100755 index 000000000000..3a25595fa49d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs/Platform.js @@ -0,0 +1,28 @@ +Clazz.declarePackage("J.awtjs"); +Clazz.load(["J.awtjs2d.Platform"], "J.awtjs.Platform", null, function(){ +var c$ = Clazz.declareType(J.awtjs, "Platform", J.awtjs2d.Platform); +Clazz.overrideMethod(c$, "drawImage", +function(g, img, x, y, width, height, isDTI){ +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "getTextPixels", +function(text, font3d, gObj, image, width, height, ascent){ +return null; +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "getGraphics", +function(image){ +return null; +}, "~O"); +Clazz.overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return null; +}, "~O,~B"); +Clazz.overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +return null; +}, "~O,~N,~N"); +Clazz.overrideMethod(c$, "newOffScreenImage", +function(w, h){ +return null; +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs/README.txt b/config/plugins/visualizations/jmol/static/j2s/J/awtjs/README.txt new file mode 100755 index 000000000000..7104fe73ab52 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs/README.txt @@ -0,0 +1,9 @@ +awtjs and awtjs.swing are minimal AWT/Swing-like +implementations used by Jmol and JSpecView to +provide consoles without any reference to AWT +or Swing. It is a relatively simple implementation +without many features. It does do the job for Jmol +and JSpecView, and it is very tight, but I don't +recommend it. + +Bob Hanson \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Display.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Display.js new file mode 100755 index 000000000000..d7e35794716f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Display.js @@ -0,0 +1,67 @@ +Clazz.declarePackage("J.awtjs2d"); +(function(){ +var c$ = Clazz.declareType(J.awtjs2d, "Display", null); +c$.getFullScreenDimensions = Clazz.defineMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +{ +widthHeight[0] = canvas.width; +widthHeight[1] = canvas.height; +}}, "~O,~A"); +c$.hasFocus = Clazz.defineMethod(c$, "hasFocus", +function(canvas){ +{ +}return true; +}, "~O"); +c$.requestFocusInWindow = Clazz.defineMethod(c$, "requestFocusInWindow", +function(canvas){ +{ +}}, "~O"); +c$.renderScreenImage = Clazz.defineMethod(c$, "renderScreenImage", +function(vwr, g, size){ +{ +}}, "J.api.PlatformViewer,~O,~O"); +c$.prompt = Clazz.defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +{ +var s = (data == null ? alert(label) : prompt(label, data)); +if (s != null)return s; +}return "null"; +}, "~S,~S,~A,~B"); +c$.convertPointFromScreen = Clazz.defineMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +{ +}}, "~O,JU.P3"); +c$.drawImage = Clazz.defineMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +{ +var buf8 = canvas.buf8; +var buf32 = canvas.buf32; +var n = canvas.width * canvas.height; +var di = 1; +if (isDTI) { +var diw = width % 2; +width = Math.floor(width/2); +di = Math.floor(canvas.width/width); +} +var dw = (canvas.width - width || x) * 4; +for (var i = 0, p = 0, j = x * 4; i < n;) { +buf8[j++] = (buf32[i] >> 16) & 0xFF; +buf8[j++] = (buf32[i] >> 8) & 0xFF; +buf8[j++] = buf32[i] & 0xFF; +buf8[j++] = 0xFF; +i += di; +if (++p%width==0) { +if (diw) { +i += 1; +buf8[j] = 0; +buf8[j+1] = 0; +buf8[j+2] = 0; +buf8[j+3] = 0; +} +j += dw; +} +} +context.putImageData(canvas.imgdata,0,0); +}}, "~O,~O,~N,~N,~N,~N,~B"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Image.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Image.js new file mode 100755 index 000000000000..3578a86fbf4f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Image.js @@ -0,0 +1,53 @@ +Clazz.declarePackage("J.awtjs2d"); +Clazz.load(null, "J.awtjs2d.Image", ["J.awtjs2d.Platform"], function(){ +var c$ = Clazz.declareType(J.awtjs2d, "Image", null); +c$.getWidth = Clazz.defineMethod(c$, "getWidth", +function(canvas){ +{ +return (canvas.imageWidth ? canvas.imageWidth : canvas.width); +}}, "~O"); +c$.getHeight = Clazz.defineMethod(c$, "getHeight", +function(canvas){ +{ +return (canvas.imageHeight ? canvas.imageHeight : canvas.height); +}}, "~O"); +c$.grabPixels = Clazz.defineMethod(c$, "grabPixels", +function(context, width, height){ +var data = null; +{ +data = context.getImageData(0, 0, width, height).data; +}return J.awtjs2d.Image.toIntARGB(data); +}, "~O,~N,~N"); +c$.toIntARGB = Clazz.defineMethod(c$, "toIntARGB", +function(imgData){ +var n = Clazz.doubleToInt(imgData.length / 4); +var iData = Clazz.newIntArray (n, 0); +for (var i = 0, j = 0; i < n; ) { +iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | (imgData[j++] << 24); +} +return iData; +}, "~A"); +c$.getTextPixels = Clazz.defineMethod(c$, "getTextPixels", +function(text, font3d, context, width, height, ascent){ +{ +context.fillStyle = "#000000"; +context.fillRect(0, 0, width, height); +context.fillStyle = "#FFFFFF"; +context.font = font3d.font; +context.fillText(text, 0, ascent); +}return J.awtjs2d.Image.grabPixels(context, width, height); +}, "~S,JU.Font,~O,~N,~N,~N"); +c$.allocateRgbImage = Clazz.defineMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, canvas){ +{ +if (canvas == null) +canvas = {width:windowWidth,height:windowHeight}; +canvas.buf32 = pBuffer; +}return canvas; +}, "~N,~N,~A,~N,~B,~O"); +c$.getImageDialog = Clazz.defineMethod(c$, "getImageDialog", +function(vwr, title, imageMap){ +return J.awtjs2d.Platform.Jmol().consoleGetImageDialog(vwr, title, imageMap); +}, "JV.Viewer,~S,java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSFile.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSFile.js new file mode 100755 index 000000000000..cd2db85abafb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSFile.js @@ -0,0 +1,60 @@ +Clazz.declarePackage("J.awtjs2d"); +Clazz.load(["J.api.GenericFileInterface"], "J.awtjs2d.JSFile", ["JU.OC", "$.PT", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.name = null; +this.fullName = null; +Clazz.instantialize(this, arguments);}, J.awtjs2d, "JSFile", null, J.api.GenericFileInterface); +Clazz.makeConstructor(c$, +function(name){ +this.name = name.$replace('\\', '/'); +this.fullName = name; +if (!this.fullName.startsWith("/") && JU.OC.urlTypeIndex(name) < 0) this.fullName = JV.Viewer.jsDocumentBase + "/" + this.fullName; +this.fullName = JU.PT.rep(this.fullName, "/./", "/"); +name = name.substring(name.lastIndexOf("/") + 1); +}, "~S"); +c$.newFile = Clazz.defineMethod(c$, "newFile", +function(name){ +return new J.awtjs2d.JSFile(name); +}, "~S"); +Clazz.overrideMethod(c$, "getParentAsFile", +function(){ +var pt = this.fullName.lastIndexOf("/"); +return (pt < 0 ? null : new J.awtjs2d.JSFile(this.fullName.substring(0, pt))); +}); +Clazz.overrideMethod(c$, "getFullPath", +function(){ +return this.fullName; +}); +Clazz.overrideMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz.overrideMethod(c$, "isDirectory", +function(){ +return this.fullName.endsWith("/"); +}); +Clazz.overrideMethod(c$, "length", +function(){ +return 0; +}); +c$.getURLContents = Clazz.defineMethod(c$, "getURLContents", +function(url, outputBytes, post){ +try { +var conn = url.openConnection(); +if (outputBytes != null) conn.outputBytes(outputBytes); + else if (post != null) conn.outputString(post); +return conn.getContents(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return e.toString(); +} else { +throw e; +} +} +}, "java.net.URL,~A,~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.fullName; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSFont.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSFont.js new file mode 100755 index 000000000000..f87a739eb4a4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSFont.js @@ -0,0 +1,39 @@ +Clazz.declarePackage("J.awtjs2d"); +(function(){ +var c$ = Clazz.declareType(J.awtjs2d, "JSFont", null); +c$.newFont = Clazz.defineMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize, type){ +fontFace = (fontFace.equals("Monospaced") ? "Courier" : fontFace.startsWith("Sans") ? "Helvetica Neue, Sans-serif" : "Serif"); +return (isBold ? "bold " : "") + (isItalic ? "italic " : "") + fontSize + type + " " + fontFace; +}, "~S,~B,~B,~N,~S"); +c$.getFontMetrics = Clazz.defineMethod(c$, "getFontMetrics", +function(font, context){ +{ +if (context.font != font.font) { +context.font = font.font; +font.font = context.font; +context._fontAscent = Math.ceil(font.fontSize); //pt, not px +// the descent is actually (px - pt) +// but I know of no way of getting access to the drawn height +context._fontDescent = Math.ceil(font.fontSize * 0.25);//approx +} +}return context; +}, "JU.Font,~O"); +c$.getAscent = Clazz.defineMethod(c$, "getAscent", +function(context){ +{ +return Math.ceil(context._fontAscent); +}}, "~O"); +c$.getDescent = Clazz.defineMethod(c$, "getDescent", +function(context){ +{ +return Math.ceil(context._fontDescent); +}}, "~O"); +c$.stringWidth = Clazz.defineMethod(c$, "stringWidth", +function(font, context, text){ +{ +context.font = font.font; +return Math.ceil(context.measureText(text).width); +}}, "JU.Font,~O,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSJmolPopup.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSJmolPopup.js new file mode 100755 index 000000000000..59fcde4e76ce --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSJmolPopup.js @@ -0,0 +1,33 @@ +Clazz.declarePackage("J.awtjs2d"); +Clazz.load(["J.popup.JmolPopup"], "J.awtjs2d.JSJmolPopup", ["J.awtjs2d.JSPopupHelper"], function(){ +var c$ = Clazz.declareType(J.awtjs2d, "JSJmolPopup", J.popup.JmolPopup); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.awtjs2d.JSJmolPopup, []); +this.helper = new J.awtjs2d.JSPopupHelper(this); +}); +Clazz.overrideMethod(c$, "menuShowPopup", +function(popup, x, y){ +try { +(popup).show(this.isTainted ? this.vwr.html5Applet : null, x, y); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.isTainted = false; +}, "J.api.SC,~N,~N"); +Clazz.overrideMethod(c$, "getUnknownCheckBoxScriptToRun", +function(item, name, what, TF){ +return null; +}, "J.api.SC,~S,~S,~B"); +Clazz.overrideMethod(c$, "getImageIcon", +function(fileName){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "menuFocusCallback", +function(name, actionCommand, b){ +}, "~S,~S,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSModelKitPopup.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSModelKitPopup.js new file mode 100755 index 000000000000..727b439b1421 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSModelKitPopup.js @@ -0,0 +1,41 @@ +Clazz.declarePackage("J.awtjs2d"); +Clazz.load(["J.modelkit.ModelKitPopup"], "J.awtjs2d.JSModelKitPopup", ["J.awtjs2d.JSPopupHelper"], function(){ +var c$ = Clazz.declareType(J.awtjs2d, "JSModelKitPopup", J.modelkit.ModelKitPopup); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.awtjs2d.JSModelKitPopup, []); +this.helper = new J.awtjs2d.JSPopupHelper(this); +}); +Clazz.overrideMethod(c$, "menuShowPopup", +function(popup, x, y){ +try { +(popup).show(this.isTainted ? this.vwr.html5Applet : null, x, y); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.isTainted = false; +}, "J.api.SC,~N,~N"); +Clazz.overrideMethod(c$, "menuHidePopup", +function(popup){ +try { +(popup).setVisible(false); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "J.api.SC"); +Clazz.overrideMethod(c$, "getImageIcon", +function(fileName){ +return "J/modelkit/images/" + fileName; +}, "~S"); +Clazz.overrideMethod(c$, "menuCheckBoxCallback", +function(source){ +this.doMenuCheckBoxCallback(source); +}, "J.api.SC"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSPopupHelper.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSPopupHelper.js new file mode 100755 index 000000000000..a1c57f7d96f9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JSPopupHelper.js @@ -0,0 +1,93 @@ +Clazz.declarePackage("J.awtjs2d"); +Clazz.load(["J.popup.PopupHelper"], "J.awtjs2d.JSPopupHelper", ["JS.ButtonGroup", "$.JCheckBoxMenuItem", "$.JMenu", "$.JMenuItem", "$.JPopupMenu", "$.JRadioButtonMenuItem"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.popup = null; +this.buttonGroup = null; +Clazz.instantialize(this, arguments);}, J.awtjs2d, "JSPopupHelper", null, J.popup.PopupHelper); +Clazz.makeConstructor(c$, +function(popup){ +this.popup = popup; +}, "J.popup.GenericPopup"); +Clazz.overrideMethod(c$, "menuCreatePopup", +function(name, applet){ +var j = new JS.JPopupMenu(name); +j.setInvoker(applet); +return j; +}, "~S,~O"); +Clazz.overrideMethod(c$, "getMenu", +function(name){ +var jm = new JS.JMenu(); +jm.setName(name); +return jm; +}, "~S"); +Clazz.overrideMethod(c$, "getMenuItem", +function(text){ +return new JS.JMenuItem(text); +}, "~S"); +Clazz.overrideMethod(c$, "getRadio", +function(name){ +return new JS.JRadioButtonMenuItem(); +}, "~S"); +Clazz.overrideMethod(c$, "getCheckBox", +function(name){ +return new JS.JCheckBoxMenuItem(); +}, "~S"); +Clazz.overrideMethod(c$, "menuAddButtonGroup", +function(item){ +if (item == null) { +if (this.buttonGroup != null && this.buttonGroup.getButtonCount() > 0) this.buttonGroup = null; +return; +}if (this.buttonGroup == null) this.buttonGroup = new JS.ButtonGroup(); +this.buttonGroup.add(item); +}, "J.api.SC"); +Clazz.overrideMethod(c$, "getItemType", +function(m){ +return (m).btnType; +}, "J.api.SC"); +Clazz.overrideMethod(c$, "menuInsertSubMenu", +function(menu, subMenu, index){ +(subMenu).setParent(menu); +}, "J.api.SC,J.api.SC,~N"); +Clazz.overrideMethod(c$, "getSwingComponent", +function(component){ +return component; +}, "~O"); +Clazz.overrideMethod(c$, "menuClearListeners", +function(menu){ +if (menu != null) (menu).disposeMenu(); +}, "J.api.SC"); +Clazz.defineMethod(c$, "itemStateChanged", +function(e){ +if (this.popup != null) this.popup.menuCheckBoxCallback(e.getSource()); +}, "java.awt.event.ItemEvent"); +Clazz.defineMethod(c$, "actionPerformed", +function(e){ +if (this.popup != null) this.popup.menuClickCallback(e.getSource(), e.getActionCommand()); +}, "java.awt.event.ActionEvent"); +Clazz.overrideMethod(c$, "getButtonGroup", +function(){ +return this.buttonGroup; +}); +Clazz.defineMethod(c$, "handleEvent", +function(e){ +var type = "" + e.getID(); +if (type === "mouseenter") this.mouseEntered(e); + else if (type === "mouseleave") this.mouseExited(e); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseEntered", +function(e){ +var jmi = e.getSource(); +this.popup.menuFocusCallback(jmi.getName(), jmi.getActionCommand(), true); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseExited", +function(e){ +var jmi = e.getSource(); +this.popup.menuFocusCallback(jmi.getName(), jmi.getActionCommand(), false); +}, "java.awt.event.MouseEvent"); +Clazz.overrideMethod(c$, "dispose", +function(popupMenu){ +this.menuClearListeners(popupMenu); +this.popup = null; +}, "J.api.SC"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JsG2D.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JsG2D.js new file mode 100755 index 000000000000..386a35c4012d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/JsG2D.js @@ -0,0 +1,180 @@ +Clazz.declarePackage("J.awtjs2d"); +Clazz.load(["J.api.GenericGraphics"], "J.awtjs2d.JsG2D", ["JU.CU", "JS.Color", "J.awtjs2d.Platform"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.windowWidth = 0; +this.windowHeight = 0; +this.isShifted = false; +this.inPath = false; +Clazz.instantialize(this, arguments);}, J.awtjs2d, "JsG2D", null, J.api.GenericGraphics); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "getColor4", +function(r, g, b, a){ +return JS.Color.get4(r, g, b, a); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "getColor3", +function(r, g, b){ +return JS.Color.get3(r, g, b); +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "getColor1", +function(rgb){ +return JS.Color.get1(rgb); +}, "~N"); +Clazz.overrideMethod(c$, "newGrayScaleImage", +function(context, image, width, height, grayBuffer){ +return J.awtjs2d.Platform.Jmol().newGrayScaleImage(context, image, width, height, grayBuffer); +}, "~O,~O,~N,~N,~A"); +Clazz.overrideMethod(c$, "drawGrayScaleImage", +function(g, image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1){ +var iw; +var ih; +{ +iw = image.w; +ih = image.h; +}var dw = (destX1 - destX0 + 1); +var dh = (destY1 - destY0 + 1); +var sw = (srcX1 - srcX0 + 1); +var sh = (srcY1 - srcY0 + 1); +var x = -srcX0 * dw / sw; +var w = iw * dw / sw; +var y = -srcY0 * dh / sh; +var h = ih * dh / sh; +{ +image.width = w; +image.height = h; +var div = image.div; +var layer = image.layer; +layer.style.left = destX0 + "px"; +layer.style.top = destY0 + "px"; +layer.style.width = dw + "px"; +layer.style.height = dh+ "px"; +div.style.left= x + "px"; +div.style.top = y + "px"; +div.style.width = w + "px"; +div.style.height = h + "px"; +}}, "~O,~O,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawLine", +function(g, x0, y0, x1, y1){ +var inPath = this.inPath; +{ +if (!inPath) g.beginPath(); +g.moveTo(x0, y0); +g.lineTo(x1, y1); +if (!inPath) g.stroke(); +}}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawCircle", +function(g, x, y, diameter){ +{ +var r = diameter/2; +g.beginPath(); +g.arc(x + r, y + r, r, 0, 2 * Math.PI, false); +g.stroke(); +}}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.doPoly(g, ayPoints, axPoints, nPoints, false); +}, "~O,~A,~A,~N"); +Clazz.defineMethod(c$, "doPoly", +function(g, axPoints, ayPoints, nPoints, doFill){ +{ +g.beginPath(); +g.moveTo(axPoints[0], ayPoints[0]); +for (var i = 1; i < nPoints; i++) +g.lineTo(axPoints[i], ayPoints[i]); +if (doFill) +g.fill(); +else +g.stroke(); +}}, "~O,~A,~A,~N,~B"); +Clazz.overrideMethod(c$, "drawRect", +function(g, x, y, width, height){ +{ +g.beginPath(); +g.rect(x ,y, width, height); +g.stroke(); +}}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawString", +function(g, s, x, y){ +{ +g.fillText(s,x,y); +}}, "~O,~S,~N,~N"); +Clazz.overrideMethod(c$, "drawStringRotated", +function(g, s, x, y, angle){ +}, "~O,~S,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillBackground", +function(g, bgcolor){ +if (bgcolor == null) { +{ +if (!this.isShifted) { +g.translate(-0.5, -0.5); +this.isShifted = true; +} +g.clearRect(0,0, this.windowWidth, this.windowHeight); +return; +}}this.setGraphicsColor(g, bgcolor); +this.fillRect(g, 0, 0, this.windowWidth, this.windowHeight); +}, "~O,javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "fillCircle", +function(g, x, y, diameter){ +{ +var r = diameter/2; +g.beginPath(); +g.arc(x + r, y + r, r, 0, 2 * Math.PI, false); +g.fill(); +}}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.doPoly(g, ayPoints, axPoints, nPoints, true); +}, "~O,~A,~A,~N"); +Clazz.overrideMethod(c$, "fillRect", +function(g, x, y, width, height){ +{ +g.fillRect(x, y, width, height); +}}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "setGraphicsColor", +function(g, c){ +var s = JU.CU.toCSSString(c); +{ +g.fillStyle = g.strokeStyle = s; +}}, "~O,javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "setFont", +function(g, font){ +var s = font.getInfo(); +var pt = s.indexOf(" "); +s = s.substring(0, pt) + "px" + s.substring(pt); +{ +g.font = s; +}return font; +}, "~O,JU.Font"); +Clazz.overrideMethod(c$, "setStrokeBold", +function(g, tf){ +{ +g.lineWidth = (tf ? 2 : 1); +}}, "~O,~B"); +Clazz.overrideMethod(c$, "setWindowParameters", +function(width, height){ +this.windowWidth = width; +this.windowHeight = height; +}, "~N,~N"); +Clazz.overrideMethod(c$, "translateScale", +function(g, x, y, scale){ +}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "canDoLineTo", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "doStroke", +function(g, isBegin){ +this.inPath = isBegin; +{ +if (isBegin) { +g.beginPath(); +} else { +g.stroke(); +} +}}, "~O,~B"); +Clazz.overrideMethod(c$, "lineTo", +function(g, x2, y2){ +{ +g.lineTo(x2, y2); +}}, "~O,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Mouse.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Mouse.js new file mode 100755 index 000000000000..83cb4b26c36b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Mouse.js @@ -0,0 +1,290 @@ +Clazz.declarePackage("J.awtjs2d"); +Clazz.load(["J.api.GenericMouseInterface"], "J.awtjs2d.Mouse", ["JU.PT", "$.V3", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.manager = null; +this.keyBuffer = ""; +this.isMouseDown = false; +this.wheeling = false; +this.modifiersDown = 0; +this.xWhenPressed = 0; +this.yWhenPressed = 0; +this.modifiersWhenPressed10 = 0; +Clazz.instantialize(this, arguments);}, J.awtjs2d, "Mouse", null, J.api.GenericMouseInterface); +Clazz.makeConstructor(c$, +function(privateKey, vwr, display){ +this.vwr = vwr; +this.manager = this.vwr.acm; +}, "~N,JV.Viewer,~O"); +Clazz.overrideMethod(c$, "clear", +function(){ +}); +Clazz.overrideMethod(c$, "dispose", +function(){ +}); +Clazz.overrideMethod(c$, "processEvent", +function(id, x, y, modifiers, time){ +if (id != 507) modifiers = J.awtjs2d.Mouse.applyLeftMouse(modifiers); +switch (id) { +case 507: +this.wheeled(time, x, modifiers); +break; +case 501: +this.xWhenPressed = x; +this.yWhenPressed = y; +this.modifiersWhenPressed10 = modifiers; +this.pressed(time, x, y, modifiers, false); +break; +case 506: +this.dragged(time, x, y); +break; +case 504: +this.entry(time, x, y, false); +break; +case 505: +this.entry(time, x, y, true); +break; +case 503: +this.moved(time, x, y, modifiers); +break; +case 502: +this.released(time, x, y, modifiers); +if (x == this.xWhenPressed && y == this.yWhenPressed && modifiers == this.modifiersWhenPressed10) { +this.clicked(time, x, y, modifiers, 1); +}break; +default: +return false; +} +return true; +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "processTwoPointGesture", +function(touches){ +if (touches[0].length < 2) return; +var t1 = touches[0]; +var t2 = touches[1]; +var t1first = t1[0]; +var t1last = t1[t2.length - 1]; +var x1first = t1first[0]; +var x1last = t1last[0]; +var dx1 = x1last - x1first; +var y1first = t1first[1]; +var y1last = t1last[1]; +var dy1 = y1last - y1first; +var v1 = JU.V3.new3(dx1, dy1, 0); +var d1 = v1.length(); +var t2first = t2[0]; +var t2last = t2[t2.length - 1]; +var x2first = t2first[0]; +var x2last = t2last[0]; +var dx2 = x2last - x2first; +var y2first = t2first[1]; +var y2last = t2last[1]; +var dy2 = y2last - y2first; +var v2 = JU.V3.new3(dx2, dy2, 0); +var d2 = v2.length(); +if (d1 < 1 || d2 < 1) return; +v1.normalize(); +v2.normalize(); +var cos12 = (v1.dot(v2)); +if (cos12 > 0.8) { +var deltaX = Clazz.floatToInt(x1last - t1[t1.length - 2][0]); +var deltaY = Clazz.floatToInt(y1last - t1[t1.length - 2][1]); +this.vwr.translateXYBy(deltaX, deltaY); +} else if (cos12 < -0.8) { +v1 = JU.V3.new3(x2first - x1first, y2first - y1first, 0); +v2 = JU.V3.new3(x2last - x1last, y2last - y1last, 0); +var dx = v2.length() - v1.length(); +this.wheeled(System.currentTimeMillis(), dx < 0 ? -1 : 1, 32); +}}, "~A"); +Clazz.defineMethod(c$, "mouseClicked", +function(e){ +this.clicked(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.getClickCount()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseEntered", +function(e){ +this.entry(e.getWhen(), e.getX(), e.getY(), false); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseExited", +function(e){ +this.entry(e.getWhen(), e.getX(), e.getY(), true); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mousePressed", +function(e){ +this.pressed(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.isPopupTrigger()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseReleased", +function(e){ +this.released(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseDragged", +function(e){ +var modifiers = e.getModifiers(); +if ((modifiers & 28) == 0) modifiers |= 16; +this.dragged(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseMoved", +function(e){ +this.moved(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseWheelMoved", +function(e){ +e.consume(); +this.wheeled(e.getWhen(), e.getWheelRotation(), e.getModifiers()); +}, "java.awt.event.MouseWheelEvent"); +Clazz.defineMethod(c$, "keyTyped", +function(ke){ +ke.consume(); +if (!this.vwr.menuEnabled()) return; +var ch = ke.getKeyChar(); +var modifiers = ke.getModifiers(); +if (JU.Logger.debuggingHigh) JU.Logger.debug("MouseManager keyTyped: " + ch + " " + (0 + ch.charCodeAt(0)) + " " + modifiers); +if (modifiers != 0 && modifiers != 1) { +switch ((ch).charCodeAt(0)) { +case String.fromCharCode(11): +case 107: +var isON = !this.vwr.getBooleanProperty("allowKeyStrokes"); +switch (modifiers) { +case 2: +this.vwr.setBooleanProperty("allowKeyStrokes", isON); +this.vwr.setBooleanProperty("showKeyStrokes", true); +break; +case 10: +case 1: +this.vwr.setBooleanProperty("allowKeyStrokes", isON); +this.vwr.setBooleanProperty("showKeyStrokes", false); +break; +} +this.clearKeyBuffer(); +this.vwr.refresh(3, "showkey"); +break; +case 22: +case 118: +switch (modifiers) { +case 2: +break; +} +break; +case 26: +case 122: +switch (modifiers) { +case 2: +this.vwr.undoMoveAction(4165, 1); +break; +case 3: +this.vwr.undoMoveAction(4140, 1); +break; +} +break; +case 25: +case 121: +switch (modifiers) { +case 2: +this.vwr.undoMoveAction(4140, 1); +break; +} +break; +} +return; +}if (!this.vwr.getBooleanProperty("allowKeyStrokes")) return; +this.addKeyBuffer(ke.getModifiers() == 1 ? Character.toUpperCase(ch) : ch); +}, "java.awt.event.KeyEvent"); +Clazz.defineMethod(c$, "keyPressed", +function(ke){ +if (this.vwr.isApplet) ke.consume(); +this.manager.keyPressed(ke.getKeyCode(), ke.getModifiers()); +}, "java.awt.event.KeyEvent"); +Clazz.defineMethod(c$, "keyReleased", +function(ke){ +ke.consume(); +this.manager.keyReleased(ke.getKeyCode()); +}, "java.awt.event.KeyEvent"); +Clazz.defineMethod(c$, "clearKeyBuffer", +function(){ +if (this.keyBuffer.length == 0) return; +this.keyBuffer = ""; +if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo \"\"", true, true); +}); +Clazz.defineMethod(c$, "addKeyBuffer", +function(ch){ +if (ch.charCodeAt(0) == 10) { +this.sendKeyBuffer(); +return; +}if (ch.charCodeAt(0) == 8) { +if (this.keyBuffer.length > 0) this.keyBuffer = this.keyBuffer.substring(0, this.keyBuffer.length - 1); +} else { +this.keyBuffer += ch; +}if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo " + JU.PT.esc("\1" + this.keyBuffer), true, true); +}, "~S"); +Clazz.defineMethod(c$, "sendKeyBuffer", +function(){ +var kb = this.keyBuffer; +if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo " + JU.PT.esc(this.keyBuffer), true, true); +this.clearKeyBuffer(); +this.vwr.evalStringQuietSync(kb, false, true); +}); +Clazz.defineMethod(c$, "entry", +function(time, x, y, isExit){ +this.wheeling = false; +this.isMouseDown = false; +this.modifiersDown = 0; +this.manager.mouseEnterExit(time, x, y, isExit); +}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "clicked", +function(time, x, y, modifiers, clickCount){ +this.clearKeyBuffer(); +this.manager.mouseAction(2, time, x, y, 1, modifiers); +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "moved", +function(time, x, y, modifiers){ +this.clearKeyBuffer(); +if (this.isMouseDown) this.manager.mouseAction(1, time, x, y, 0, this.modifiersDown); + else this.manager.mouseAction(0, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "wheeled", +function(time, rotation, modifiers){ +this.clearKeyBuffer(); +this.wheeling = true; +this.manager.mouseAction(3, time, 0, rotation, 0, modifiers & -29 | 32); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "pressed", +function(time, x, y, modifiers, isPopupTrigger){ +this.clearKeyBuffer(); +this.isMouseDown = true; +this.modifiersDown = modifiers; +this.wheeling = false; +this.manager.mouseAction(4, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "released", +function(time, x, y, modifiers){ +this.isMouseDown = false; +this.modifiersDown = 0; +this.wheeling = false; +this.manager.mouseAction(5, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "dragged", +function(time, x, y){ +if (this.wheeling) return; +if ((this.modifiersDown & 20) == 20) this.modifiersDown = this.modifiersDown & -5 | 2; +this.manager.mouseAction(1, time, x, y, 0, this.modifiersDown); +}, "~N,~N,~N"); +c$.applyLeftMouse = Clazz.defineMethod(c$, "applyLeftMouse", +function(modifiers){ +return ((modifiers & 28) == 0) ? (modifiers | 16) : modifiers; +}, "~N"); +Clazz.overrideMethod(c$, "processKeyEvent", +function(event){ +var e = event; +switch (e.getID()) { +case 401: +this.keyPressed(e); +break; +case 402: +this.keyReleased(e); +break; +case 400: +this.keyTyped(e); +break; +} +}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Platform.js b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Platform.js new file mode 100755 index 000000000000..9a4991dab4d3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/awtjs2d/Platform.js @@ -0,0 +1,288 @@ +Clazz.declarePackage("J.awtjs2d"); +Clazz.load(["J.api.GenericPlatform"], "J.awtjs2d.Platform", ["java.net.URL", "JU.AjaxURLStreamHandlerFactory", "$.Rdr", "J.api.Interface", "J.awtjs2d.Display", "$.Image", "$.JSFile", "$.JSFont", "$.Mouse"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.canvas = null; +this.vwr = null; +this.context = null; +Clazz.instantialize(this, arguments);}, J.awtjs2d, "Platform", null, J.api.GenericPlatform); +Clazz.overrideMethod(c$, "setViewer", +function(vwr, canvas){ +{ +this.vwr = vwr; +if (canvas == null) { +canvas = document.createElement('canvas'); +this.context = canvas.getContext("2d"); +} else { +this.context = canvas.getContext("2d"); +canvas.imgdata = this.context.getImageData(0, 0, canvas.width, canvas.height); +canvas.buf8 = canvas.imgdata.data; +} +}this.canvas = canvas; +try { +java.net.URL.setURLStreamHandlerFactory( new JU.AjaxURLStreamHandlerFactory()); +} catch (e) { +} +}, "J.api.PlatformViewer,~O"); +Clazz.overrideMethod(c$, "isSingleThreaded", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "getJsObjectInfo", +function(jsObject, method, args){ +{ +return (method == null ? null : method == "localName" ? jsObject[0]["nodeName"] : args == null ? jsObject[0][method] : jsObject[0][method](args[0])); +}}, "~A,~S,~A"); +Clazz.overrideMethod(c$, "isHeadless", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "getMouseManager", +function(privateKey, display){ +return new J.awtjs2d.Mouse(privateKey, this.vwr, display); +}, "~N,~O"); +Clazz.overrideMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +J.awtjs2d.Display.convertPointFromScreen(canvas, ptTemp); +}, "~O,JU.P3"); +Clazz.overrideMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +J.awtjs2d.Display.getFullScreenDimensions(canvas, widthHeight); +}, "~O,~A"); +Clazz.overrideMethod(c$, "getMenuPopup", +function(menuStructure, type){ +var c = (type == 'j' ? "awtjs2d.JSJmolPopup" : "awtjs2d.JSModelKitPopup"); +var jmolpopup = J.api.Interface.getOption(c, this.vwr, "popup"); +try { +if (jmolpopup != null) jmolpopup.jpiInitialize(this.vwr, menuStructure); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +c = "Exception creating " + c + ":" + e; +System.out.println(c); +return null; +} else { +throw e; +} +} +return jmolpopup; +}, "~S,~S"); +Clazz.overrideMethod(c$, "hasFocus", +function(canvas){ +return J.awtjs2d.Display.hasFocus(canvas); +}, "~O"); +Clazz.overrideMethod(c$, "prompt", +function(label, data, list, asButtons){ +return J.awtjs2d.Display.prompt(label, data, list, asButtons); +}, "~S,~S,~A,~B"); +Clazz.overrideMethod(c$, "renderScreenImage", +function(context, size){ +J.awtjs2d.Display.renderScreenImage(this.vwr, context, size); +}, "~O,~O"); +Clazz.overrideMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +J.awtjs2d.Display.drawImage(context, canvas, x, y, width, height, isDTI); +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "requestFocusInWindow", +function(canvas){ +J.awtjs2d.Display.requestFocusInWindow(canvas); +}, "~O"); +Clazz.overrideMethod(c$, "repaint", +function(canvas){ +var jmol = null; +{ +jmol = (self.Jmol && Jmol.repaint ? Jmol : null); +}if (jmol != null) jmol.repaint((this.vwr).html5Applet, true); +}, "~O"); +Clazz.overrideMethod(c$, "setTransparentCursor", +function(canvas){ +}, "~O"); +Clazz.overrideMethod(c$, "setCursor", +function(c, canvas){ +J.awtjs2d.Platform.Jmol().setCursor((this.vwr).html5Applet, c); +}, "~N,~O"); +Clazz.overrideMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, isImageWrite){ +if (pBuffer == null) { +pBuffer = this.grabPixels(null, 0, 0, null); +{ +windowWidth = this.canvas.width; +windowHeight = this.canvas.height; +}}return J.awtjs2d.Image.allocateRgbImage(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, (isImageWrite ? null : this.canvas)); +}, "~N,~N,~A,~N,~B,~B"); +Clazz.overrideMethod(c$, "notifyEndOfRendering", +function(){ +}); +Clazz.overrideMethod(c$, "disposeGraphics", +function(gOffscreen){ +}, "~O"); +Clazz.overrideMethod(c$, "grabPixels", +function(canvas, width, height, pixels){ +var context2d = null; +var isWebGL = (canvas == null); +{ +if(isWebGL) { this.canvas = canvas = +Jmol.loadImage(this,"webgl","" ++System.currentTimeMillis(),this +.vwr.html5Applet._canvas.toDataURL(),null,null); width = +canvas.imageWidth; height = canvas.imageHeight; +canvas.imageWidth = 0; } +if (canvas.image && (width != canvas.width || height != +canvas.height)) Jmol.setCanvasImage(canvas, width, height); +if (canvas.buf32) return canvas.buf32; context2d = +canvas.getContext('2d'); +}var buf = J.awtjs2d.Image.grabPixels(context2d, width, height); +{ +canvas.buf32 = buf; +}if (isWebGL) for (var i = buf.length; --i >= 0; ) if (buf[i] == 0) buf[i] = -1; + +return buf; +}, "~O,~N,~N,~A"); +Clazz.overrideMethod(c$, "drawImageToBuffer", +function(gOffscreen, imageOffscreen, canvas, width, height, bgcolor){ +return this.grabPixels(canvas, width, height, null); +}, "~O,~O,~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "getTextPixels", +function(text, font3d, context, image, width, height, ascent){ +return J.awtjs2d.Image.getTextPixels(text, font3d, context, width, height, ascent); +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "flushImage", +function(imagePixelBuffer){ +}, "~O"); +Clazz.overrideMethod(c$, "getGraphics", +function(canvas){ +{ +return (canvas == null ? this.context : canvas.getContext("2d")); +}}, "~O"); +Clazz.overrideMethod(c$, "getImageHeight", +function(canvas){ +return (canvas == null ? -1 : J.awtjs2d.Image.getHeight(canvas)); +}, "~O"); +Clazz.overrideMethod(c$, "getImageWidth", +function(canvas){ +return (canvas == null ? -1 : J.awtjs2d.Image.getWidth(canvas)); +}, "~O"); +Clazz.overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return this.getGraphics(image); +}, "~O,~B"); +Clazz.overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +return J.awtjs2d.Platform.Jmol().getHiddenCanvas((this.vwr).html5Applet, "stereoImage", w, h); +}, "~O,~N,~N"); +Clazz.overrideMethod(c$, "newOffScreenImage", +function(w, h){ +return J.awtjs2d.Platform.Jmol().getHiddenCanvas((this.vwr).html5Applet, "textImage", w, h); +}, "~N,~N"); +Clazz.overrideMethod(c$, "waitForDisplay", +function(echoNameAndPath, zipBytes){ +return false; +}, "~O,~O"); +Clazz.overrideMethod(c$, "createImage", +function(name_path_bytes){ +var echoName = (name_path_bytes)[0]; +var path = (name_path_bytes)[1]; +var bytes = (name_path_bytes)[2]; +var vwr = this.vwr; +var sc = (bytes == null ? vwr.getEvalContextAndHoldQueue(vwr.eval) : null); +var f = null; +{ +f = function(canvas, pathOrError) { vwr.loadImageData(canvas, pathOrError, echoName, sc) }; +}return J.awtjs2d.Platform.Jmol().loadImage(this, echoName, path, bytes, f); +}, "~O"); +Clazz.overrideMethod(c$, "fontStringWidth", +function(font, text){ +return J.awtjs2d.JSFont.stringWidth(font, this.context, text); +}, "JU.Font,~S"); +Clazz.overrideMethod(c$, "getFontAscent", +function(context){ +return J.awtjs2d.JSFont.getAscent(context); +}, "~O"); +Clazz.overrideMethod(c$, "getFontDescent", +function(context){ +return J.awtjs2d.JSFont.getDescent(context); +}, "~O"); +Clazz.overrideMethod(c$, "getFontMetrics", +function(font, context){ +return J.awtjs2d.JSFont.getFontMetrics(font, context == null ? this.context : context); +}, "JU.Font,~O"); +Clazz.overrideMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize){ +return J.awtjs2d.JSFont.newFont(fontFace, isBold, isItalic, fontSize, "px"); +}, "~S,~B,~B,~N"); +Clazz.overrideMethod(c$, "getDateFormat", +function(isoType){ +{ +if (isoType == null) { +} else if (isoType.indexOf("8824") >= 0) { +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + (1 + d.getMonth()); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} else if (isoType.indexOf("8601") >= 0){ +var d = new Date(); +var x = d.toString().split(" "); +// Firefox now doing this? +if (x.length == 1) +return x; +var MM = "0" + (1 + d.getMonth()); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + '-' + MM + '-' + dd + 'T' + x[4] +} +return ("" + (new Date())).split(" (")[0]; +}}, "~S"); +Clazz.overrideMethod(c$, "newFile", +function(name){ +return new J.awtjs2d.JSFile(name); +}, "~S"); +Clazz.overrideMethod(c$, "getBufferedFileInputStream", +function(name){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "getURLContents", +function(url, outputBytes, post, asString){ +return J.awtjs2d.Platform.getURLContentsStatic(url, outputBytes, post, asString); +}, "java.net.URL,~A,~S,~B"); +c$.getURLContentsStatic = Clazz.defineMethod(c$, "getURLContentsStatic", +function(url, outputBytes, post, asString){ +var ret = J.awtjs2d.JSFile.getURLContents(url, outputBytes, post); +try { +return (!asString ? ret : (typeof(ret)=='string') ? ret : Clazz.instanceOf(ret,"JU.SB") ? (ret).toString() : Clazz.instanceOf(ret,Array) ? String.instantialize(ret) : String.instantialize(JU.Rdr.getStreamAsBytes(ret, null))); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return "" + e; +} else { +throw e; +} +} +}, "java.net.URL,~A,~S,~B"); +Clazz.overrideMethod(c$, "getLocalUrl", +function(fileName){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "getImageDialog", +function(title, imageMap){ +return J.awtjs2d.Image.getImageDialog(this.vwr, title, imageMap); +}, "~S,java.util.Map"); +c$.Jmol = Clazz.defineMethod(c$, "Jmol", +function(){ +{ +return Jmol; +}}); +Clazz.overrideMethod(c$, "forceAsyncLoad", +function(filename){ +return J.awtjs2d.Platform.Jmol().isBinaryUrl(filename); +}, "~S"); +Clazz.overrideMethod(c$, "getInChI", +function(){ +return (J.awtjs2d.Platform.inchi == null ? (J.awtjs2d.Platform.inchi = J.api.Interface.getInterface("J.inchi.InChIJS", this.vwr, "platform")) : J.awtjs2d.Platform.inchi); +}); +Clazz.overrideMethod(c$, "confirm", +function(msg, msgNo){ +var ok = false; +if (ok) return 0; +if (msgNo != null) ok = false; +return (ok ? 1 : 2); +}, "~S,~S"); +c$.inchi = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/bspt/Bspf.js b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Bspf.js new file mode 100755 index 000000000000..fe4ec1518e7e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Bspf.js @@ -0,0 +1,60 @@ +Clazz.declarePackage("J.bspt"); +Clazz.load(null, "J.bspt.Bspf", ["JU.AU", "J.bspt.Bspt"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dimMax = 0; +this.bspts = null; +this.isValid = false; +this.bsptsValid = null; +this.cubeIterators = null; +Clazz.instantialize(this, arguments);}, J.bspt, "Bspf", null); +Clazz.makeConstructor(c$, +function(dimMax){ +this.dimMax = dimMax; +this.bspts = new Array(1); +this.bsptsValid = Clazz.newBooleanArray(1, false); +this.cubeIterators = new Array(0); +}, "~N"); +Clazz.defineMethod(c$, "validateModel", +function(i, isValid){ +this.bsptsValid[i] = isValid; +}, "~N,~B"); +Clazz.defineMethod(c$, "isInitializedIndex", +function(bsptIndex){ +return this.bspts.length > bsptIndex && this.bspts[bsptIndex] != null && this.bsptsValid[bsptIndex]; +}, "~N"); +Clazz.defineMethod(c$, "addTuple", +function(bsptIndex, tuple){ +if (bsptIndex >= this.bspts.length) { +this.bspts = JU.AU.arrayCopyObject(this.bspts, bsptIndex + 1); +this.bsptsValid = JU.AU.arrayCopyBool(this.bsptsValid, bsptIndex + 1); +}var bspt = this.bspts[bsptIndex]; +if (bspt == null) { +bspt = this.bspts[bsptIndex] = new J.bspt.Bspt(this.dimMax, bsptIndex); +}bspt.addTuple(tuple); +}, "~N,JU.P3"); +Clazz.defineMethod(c$, "stats", +function(){ +for (var i = 0; i < this.bspts.length; ++i) if (this.bspts[i] != null) this.bspts[i].stats(); + +}); +Clazz.defineMethod(c$, "getCubeIterator", +function(bsptIndex){ +if (bsptIndex < 0) return this.getNewCubeIterator(-1 - bsptIndex); +if (bsptIndex >= this.cubeIterators.length) this.cubeIterators = JU.AU.arrayCopyObject(this.cubeIterators, bsptIndex + 1); +if (this.cubeIterators[bsptIndex] == null && this.bspts[bsptIndex] != null) this.cubeIterators[bsptIndex] = this.getNewCubeIterator(bsptIndex); +this.cubeIterators[bsptIndex].set(this.bspts[bsptIndex]); +return this.cubeIterators[bsptIndex]; +}, "~N"); +Clazz.defineMethod(c$, "getNewCubeIterator", +function(bsptIndex){ +return this.bspts[bsptIndex].allocateCubeIterator(); +}, "~N"); +Clazz.defineMethod(c$, "initialize", +function(modelIndex, atoms, modelAtomBitSet){ +if (this.bspts[modelIndex] != null) this.bspts[modelIndex].reset(); +for (var i = modelAtomBitSet.nextSetBit(0); i >= 0; i = modelAtomBitSet.nextSetBit(i + 1)) this.addTuple(modelIndex, atoms[i]); + +this.bsptsValid[modelIndex] = true; +}, "~N,~A,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/bspt/Bspt.js b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Bspt.js new file mode 100755 index 000000000000..f5f7d30e074e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Bspt.js @@ -0,0 +1,32 @@ +Clazz.declarePackage("J.bspt"); +Clazz.load(null, "J.bspt.Bspt", ["J.bspt.CubeIterator", "$.Leaf"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.treeDepth = 0; +this.dimMax = 0; +this.index = 0; +this.eleRoot = null; +Clazz.instantialize(this, arguments);}, J.bspt, "Bspt", null); +Clazz.makeConstructor(c$, +function(dimMax, index){ +this.dimMax = dimMax; +this.index = index; +this.reset(); +}, "~N,~N"); +Clazz.defineMethod(c$, "reset", +function(){ +this.eleRoot = new J.bspt.Leaf(this, null, 0); +this.treeDepth = 1; +}); +Clazz.defineMethod(c$, "addTuple", +function(tuple){ +this.eleRoot = this.eleRoot.addTuple(0, tuple); +}, "JU.T3"); +Clazz.defineMethod(c$, "stats", +function(){ +}); +Clazz.defineMethod(c$, "allocateCubeIterator", +function(){ +return new J.bspt.CubeIterator(this); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/bspt/CubeIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/bspt/CubeIterator.js new file mode 100755 index 000000000000..182122379d98 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/bspt/CubeIterator.js @@ -0,0 +1,103 @@ +Clazz.declarePackage("J.bspt"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bspt = null; +this.stack = null; +this.sp = 0; +this.leafIndex = 0; +this.leaf = null; +this.radius = 0; +this.cx = 0; +this.cy = 0; +this.cz = 0; +this.dx = 0; +this.dy = 0; +this.dz = 0; +this.tHemisphere = false; +Clazz.instantialize(this, arguments);}, J.bspt, "CubeIterator", null); +Clazz.makeConstructor(c$, +function(bspt){ +this.set(bspt); +}, "J.bspt.Bspt"); +Clazz.defineMethod(c$, "set", +function(bspt){ +this.bspt = bspt; +this.stack = new Array(bspt.treeDepth); +}, "J.bspt.Bspt"); +Clazz.defineMethod(c$, "initialize", +function(center, radius, hemisphereOnly){ +this.radius = radius; +this.tHemisphere = false; +this.cx = center.x; +this.cy = center.y; +this.cz = center.z; +this.leaf = null; +if (this.stack.length < this.bspt.treeDepth) this.set(this.bspt); +this.stack[0] = this.bspt.eleRoot; +this.sp = 1; +this.findLeftLeaf(); +this.tHemisphere = hemisphereOnly; +}, "JU.T3,~N,~B"); +Clazz.defineMethod(c$, "release", +function(){ +this.set(this.bspt); +}); +Clazz.defineMethod(c$, "hasMoreElements", +function(){ +while (this.leaf != null) { +for (; this.leafIndex < this.leaf.count; ++this.leafIndex) if (this.isWithinRadius(this.leaf.tuples[this.leafIndex])) return true; + +this.findLeftLeaf(); +} +return false; +}); +Clazz.defineMethod(c$, "nextElement", +function(){ +return this.leaf.tuples[this.leafIndex++]; +}); +Clazz.defineMethod(c$, "foundDistance2", +function(){ +return this.dx * this.dx + this.dy * this.dy + this.dz * this.dz; +}); +Clazz.defineMethod(c$, "findLeftLeaf", +function(){ +this.leaf = null; +if (this.sp == 0) return; +var ele = this.stack[--this.sp]; +while (Clazz.instanceOf(ele,"J.bspt.Node")) { +var node = ele; +var minValue; +switch (node.dim) { +case 0: +minValue = this.cx; +break; +case 1: +minValue = this.cy; +break; +case 2: +default: +minValue = this.cz; +break; +} +var maxValue = minValue + this.radius; +if (!this.tHemisphere || node.dim != 0) minValue -= this.radius; +if (minValue <= node.maxLeft && maxValue >= node.minLeft) { +if (maxValue >= node.minRight && minValue <= node.maxRight) { +this.stack[this.sp++] = node.eleRight; +}ele = node.eleLeft; +} else if (maxValue >= node.minRight && minValue <= node.maxRight) { +ele = node.eleRight; +} else { +if (this.sp == 0) return; +ele = this.stack[--this.sp]; +}} +this.leaf = ele; +this.leafIndex = 0; +}); +Clazz.defineMethod(c$, "isWithinRadius", +function(t){ +this.dx = t.x - this.cx; +return ((!this.tHemisphere || this.dx >= 0) && (this.dx = Math.abs(this.dx)) <= this.radius && (this.dy = Math.abs(t.y - this.cy)) <= this.radius && (this.dz = Math.abs(t.z - this.cz)) <= this.radius); +}, "JU.T3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/bspt/Element.js b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Element.js new file mode 100755 index 000000000000..a8df7f79b59d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Element.js @@ -0,0 +1,8 @@ +Clazz.declarePackage("J.bspt"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bspt = null; +this.count = 0; +Clazz.instantialize(this, arguments);}, J.bspt, "Element", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/bspt/Leaf.js b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Leaf.js new file mode 100755 index 000000000000..7fe1ed436301 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Leaf.js @@ -0,0 +1,43 @@ +Clazz.declarePackage("J.bspt"); +Clazz.load(["J.bspt.Element"], "J.bspt.Leaf", ["J.bspt.Node"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tuples = null; +Clazz.instantialize(this, arguments);}, J.bspt, "Leaf", J.bspt.Element); +Clazz.makeConstructor(c$, +function(bspt, leaf, countToKeep){ +this.bspt = bspt; +this.count = 0; +this.tuples = new Array(2); +if (leaf == null) return; +for (var i = countToKeep; i < 2; ++i) { +this.tuples[this.count++] = leaf.tuples[i]; +leaf.tuples[i] = null; +} +leaf.count = countToKeep; +}, "J.bspt.Bspt,J.bspt.Leaf,~N"); +Clazz.defineMethod(c$, "sort", +function(dim){ +for (var i = this.count; --i > 0; ) { +var champion = this.tuples[i]; +var championValue = J.bspt.Node.getDimensionValue(champion, dim); +for (var j = i; --j >= 0; ) { +var challenger = this.tuples[j]; +var challengerValue = J.bspt.Node.getDimensionValue(challenger, dim); +if (challengerValue > championValue) { +this.tuples[i] = challenger; +this.tuples[j] = champion; +champion = challenger; +championValue = challengerValue; +}} +} +}, "~N"); +Clazz.overrideMethod(c$, "addTuple", +function(level, tuple){ +if (this.count < 2) { +this.tuples[this.count++] = tuple; +return this; +}var node = new J.bspt.Node(this.bspt, level, this); +return node.addTuple(level, tuple); +}, "~N,JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/bspt/Node.js b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Node.js new file mode 100755 index 000000000000..5ffb3da63efe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/bspt/Node.js @@ -0,0 +1,72 @@ +Clazz.declarePackage("J.bspt"); +Clazz.load(["J.bspt.Element"], "J.bspt.Node", ["J.bspt.Leaf"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dim = 0; +this.minLeft = 0; +this.maxLeft = 0; +this.eleLeft = null; +this.minRight = 0; +this.maxRight = 0; +this.eleRight = null; +Clazz.instantialize(this, arguments);}, J.bspt, "Node", J.bspt.Element); +Clazz.makeConstructor(c$, +function(bspt, level, leafLeft){ +this.bspt = bspt; +if (level == bspt.treeDepth) { +bspt.treeDepth = level + 1; +}if (leafLeft.count != 2) throw new NullPointerException(); +this.dim = level % bspt.dimMax; +leafLeft.sort(this.dim); +var leafRight = new J.bspt.Leaf(bspt, leafLeft, 1); +this.minLeft = J.bspt.Node.getDimensionValue(leafLeft.tuples[0], this.dim); +this.maxLeft = J.bspt.Node.getDimensionValue(leafLeft.tuples[leafLeft.count - 1], this.dim); +this.minRight = J.bspt.Node.getDimensionValue(leafRight.tuples[0], this.dim); +this.maxRight = J.bspt.Node.getDimensionValue(leafRight.tuples[leafRight.count - 1], this.dim); +this.eleLeft = leafLeft; +this.eleRight = leafRight; +this.count = 2; +}, "J.bspt.Bspt,~N,J.bspt.Leaf"); +Clazz.defineMethod(c$, "addTuple", +function(level, tuple){ +var dimValue = J.bspt.Node.getDimensionValue(tuple, this.dim); +++this.count; +var addLeft; +if (dimValue < this.maxLeft) { +addLeft = true; +} else if (dimValue > this.minRight) { +addLeft = false; +} else if (dimValue == this.maxLeft) { +if (dimValue == this.minRight) { +if (this.eleLeft.count < this.eleRight.count) addLeft = true; + else addLeft = false; +} else { +addLeft = true; +}} else if (dimValue == this.minRight) { +addLeft = false; +} else { +if (this.eleLeft.count < this.eleRight.count) addLeft = true; + else addLeft = false; +}if (addLeft) { +if (dimValue < this.minLeft) this.minLeft = dimValue; + else if (dimValue > this.maxLeft) this.maxLeft = dimValue; +this.eleLeft = this.eleLeft.addTuple(level + 1, tuple); +} else { +if (dimValue < this.minRight) this.minRight = dimValue; + else if (dimValue > this.maxRight) this.maxRight = dimValue; +this.eleRight = this.eleRight.addTuple(level + 1, tuple); +}return this; +}, "~N,JU.T3"); +c$.getDimensionValue = Clazz.defineMethod(c$, "getDimensionValue", +function(pt, dim){ +if (pt == null) System.out.println("bspt.Node ???"); +switch (dim) { +case 0: +return pt.x; +case 1: +return pt.y; +default: +return pt.z; +} +}, "JU.T3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/bspt/PointIterator.js b/config/plugins/visualizations/jmol/static/j2s/J/bspt/PointIterator.js new file mode 100755 index 000000000000..89df94da09fe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/bspt/PointIterator.js @@ -0,0 +1,96 @@ +Clazz.declarePackage("J.bspt"); +Clazz.load(null, "J.bspt.PointIterator", ["JU.BS", "$.Lst", "$.P3", "J.bspt.Bspt", "JU.BSUtil", "$.Point3fi"], function(){ +var c$ = Clazz.declareType(J.bspt, "PointIterator", null); +c$.withinDistPoints = Clazz.defineMethod(c$, "withinDistPoints", +function(distance, pt, ap3, ap31, bsSelected, ret){ +var pts = new JU.Lst(); +var bspt = new J.bspt.Bspt(3, 0); +var iter; +if (pt != null && Float.isNaN(pt.x)) { +var pt3 = new Array(ap3.length); +var p; +for (var i = pt3.length; --i >= 0; ) { +var p3 = ap3[i]; +if (p3 == null) return 0; +if (bsSelected == null) { +p = new JU.Point3fi(); +p.setT(p3); +p.i = i; +pt3[i] = p; +bspt.addTuple(p); +} else { +bspt.addTuple(p3); +}} +iter = bspt.allocateCubeIterator(); +var bsp; +if (bsSelected != null) { +bsp = JU.BS.newN(ap31.length); +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) { +iter.initialize(ap31[i], distance, false); +var d2 = distance * distance; +while (iter.hasMoreElements()) { +if (iter.nextElement().distanceSquared(ap31[i]) <= d2) { +bsp.set(i); +break; +}} +} +ret[0] = bsp; +return 10; +}bsp = JU.BSUtil.newBitSet2(0, ap3.length); +for (var i = pt3.length; --i >= 0; ) { +iter.initialize(p = pt3[i], distance, false); +var d2 = distance * distance; +var n = 0; +while (iter.hasMoreElements()) { +var pt2 = iter.nextElement(); +if (bsp.get(pt2.i) && pt2.distanceSquared(p) <= d2 && (++n > 1)) bsp.clear(pt2.i); +} +} +for (var i = bsp.nextSetBit(0); i >= 0; i = bsp.nextSetBit(i + 1)) pts.addLast(JU.P3.newP(pt3[i])); + +ret[0] = pts; +return 1073742001; +}if (distance == 0) { +if (ap31 == null) { +var d2 = 3.4028235E38; +var pt3 = null; +for (var i = ap3.length; --i >= 0; ) { +var pta = ap3[i]; +distance = pta.distanceSquared(pt); +if (distance < d2) { +pt3 = pta; +d2 = distance; +}} +ret[0] = (pt3 == null ? "" : pt3); +return (pt3 == null ? 4 : 134217751); +}var ptsOut = Clazz.newIntArray (ap31.length, 0); +for (var i = ptsOut.length; --i >= 0; ) { +var d2 = 3.4028235E38; +var imin = -1; +pt = ap31[i]; +for (var j = ap3.length; --j >= 0; ) { +var pta = ap3[j]; +distance = pta.distanceSquared(pt); +if (distance < d2) { +imin = j; +d2 = distance; +}} +ptsOut[i] = imin; +} +ret[0] = ptsOut; +return 1275068418; +}for (var i = ap3.length; --i >= 0; ) bspt.addTuple(ap3[i]); + +iter = bspt.allocateCubeIterator(); +iter.initialize(pt, distance, false); +var d2 = distance * distance; +while (iter.hasMoreElements()) { +var pt2 = iter.nextElement(); +if (pt2.distanceSquared(pt) <= d2) pts.addLast(pt2); +} +iter.release(); +ret[0] = pts; +return 1073742001; +}, "~N,JU.P3,~A,~A,JU.BS,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/bspt/package.html b/config/plugins/visualizations/jmol/static/j2s/J/bspt/package.html new file mode 100755 index 000000000000..84a3f4c08c13 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/bspt/package.html @@ -0,0 +1,45 @@ + + + + + + + +

+ Provides Binary Space Partitioning Functionality to spacially + separate data structures in n-dimensions +

+ +

+ For some useful background info, search the web for "bsp tree faq". +

+ + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/J/c/CBK.js b/config/plugins/visualizations/jmol/static/j2s/J/c/CBK.js new file mode 100755 index 000000000000..154e8188c3c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/c/CBK.js @@ -0,0 +1,47 @@ +Clazz.declarePackage("J.c"); +Clazz.load(["java.lang.Enum"], "J.c.CBK", ["JU.SB"], function(){ +var c$ = Clazz.declareType(J.c, "CBK", Enum); +c$.getCallback = Clazz.defineMethod(c$, "getCallback", +function(name){ +name = name.toUpperCase(); +var pt = name.indexOf("CALLBACK"); +if (pt > 0) name = name.substring(0, pt); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.name().equalsIgnoreCase(name)) return item; + +return null; +}, "~S"); +c$.getNameList = Clazz.defineMethod(c$, "getNameList", +function(){ +if (J.c.CBK.nameList == null) { +var names = new JU.SB(); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) names.append(item.name().toLowerCase()).append("Callback;"); + +J.c.CBK.nameList = names.toString(); +}return J.c.CBK.nameList; +}); +c$.nameList = null; +Clazz.defineEnumConstant(c$, "ANIMFRAME", 0, []); +Clazz.defineEnumConstant(c$, "APPLETREADY", 1, []); +Clazz.defineEnumConstant(c$, "ATOMMOVED", 2, []); +Clazz.defineEnumConstant(c$, "AUDIO", 3, []); +Clazz.defineEnumConstant(c$, "CLICK", 4, []); +Clazz.defineEnumConstant(c$, "DRAGDROP", 5, []); +Clazz.defineEnumConstant(c$, "ECHO", 6, []); +Clazz.defineEnumConstant(c$, "ERROR", 7, []); +Clazz.defineEnumConstant(c$, "EVAL", 8, []); +Clazz.defineEnumConstant(c$, "HOVER", 9, []); +Clazz.defineEnumConstant(c$, "IMAGE", 10, []); +Clazz.defineEnumConstant(c$, "LOADSTRUCT", 11, []); +Clazz.defineEnumConstant(c$, "MEASURE", 12, []); +Clazz.defineEnumConstant(c$, "MESSAGE", 13, []); +Clazz.defineEnumConstant(c$, "MINIMIZATION", 14, []); +Clazz.defineEnumConstant(c$, "MODELKIT", 15, []); +Clazz.defineEnumConstant(c$, "PICK", 16, []); +Clazz.defineEnumConstant(c$, "RESIZE", 17, []); +Clazz.defineEnumConstant(c$, "SCRIPT", 18, []); +Clazz.defineEnumConstant(c$, "SELECT", 19, []); +Clazz.defineEnumConstant(c$, "SERVICE", 20, []); +Clazz.defineEnumConstant(c$, "STRUCTUREMODIFIED", 21, []); +Clazz.defineEnumConstant(c$, "SYNC", 22, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/c/FIL.js b/config/plugins/visualizations/jmol/static/j2s/J/c/FIL.js new file mode 100755 index 000000000000..b51f61a55601 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/c/FIL.js @@ -0,0 +1,20 @@ +Clazz.declarePackage("J.c"); +Clazz.load(["java.lang.Enum"], "J.c.FIL", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.code = 0; +Clazz.instantialize(this, arguments);}, J.c, "FIL", Enum); +Clazz.defineMethod(c$, "getCode", +function(){ +return this.code; +}); +Clazz.makeConstructor(c$, +function(code){ +this.code = code; +}, "~N"); +Clazz.defineEnumConstant(c$, "DELETED", 0, [5]); +Clazz.defineEnumConstant(c$, "CREATED", 1, [3]); +Clazz.defineEnumConstant(c$, "CREATING_MODELSET", 2, [2]); +Clazz.defineEnumConstant(c$, "ZAPPED", 3, [0]); +Clazz.defineEnumConstant(c$, "NOT_LOADED", 4, [-1]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/c/HB.js b/config/plugins/visualizations/jmol/static/j2s/J/c/HB.js new file mode 100755 index 000000000000..2270b02eb009 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/c/HB.js @@ -0,0 +1,57 @@ +Clazz.declarePackage("J.c"); +Clazz.load(["java.lang.Enum"], "J.c.HB", null, function(){ +var c$ = Clazz.declareType(J.c, "HB", Enum); +c$.getType = Clazz.defineMethod(c$, "getType", +function(atom){ +var group = atom.group; +var considerHydrogens = !atom.isHetero(); +switch (atom.getElementNumber()) { +default: +return J.c.HB.NOT; +case 1: +if (atom.getCovalentBondCount() == 0) return J.c.HB.DONOR; +var bonds = atom.bonds; +if (bonds == null) return J.c.HB.NOT; +switch (bonds[0].getOtherAtom(atom).getElementNumber()) { +case 7: +case 8: +case 16: +return J.c.HB.DONOR; +} +return J.c.HB.NOT; +case 7: +if (atom === group.getNitrogenAtom()) return J.c.HB.DONOR; +if (group.groupID == 9) return J.c.HB.UNKNOWN; +if (atom.getCovalentHydrogenCount() > 0) return J.c.HB.DONOR; +if (considerHydrogens) return J.c.HB.ACCEPTOR; +switch (group.groupID) { +case 2: +case 3: +case 12: +case 6: +case 19: +return J.c.HB.DONOR; +} +return J.c.HB.UNKNOWN; +case 8: +if (atom === group.getCarbonylOxygenAtom() || atom.getFormalCharge() == -1) return J.c.HB.ACCEPTOR; +if (atom.getCovalentBondCount() == 0 || atom.getCovalentHydrogenCount() > 0) return J.c.HB.UNKNOWN; +if (considerHydrogens) return J.c.HB.ACCEPTOR; +switch (group.groupID) { +case 4: +case 7: +return J.c.HB.ACCEPTOR; +} +return J.c.HB.UNKNOWN; +} +}, "JM.Atom"); +c$.isPossibleHBond = Clazz.defineMethod(c$, "isPossibleHBond", +function(typeA, typeB){ +return (typeA === J.c.HB.NOT || typeB === J.c.HB.NOT ? false : typeA === J.c.HB.UNKNOWN || typeA !== typeB); +}, "J.c.HB,J.c.HB"); +Clazz.defineEnumConstant(c$, "NOT", 0, []); +Clazz.defineEnumConstant(c$, "ACCEPTOR", 1, []); +Clazz.defineEnumConstant(c$, "DONOR", 2, []); +Clazz.defineEnumConstant(c$, "UNKNOWN", 3, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/c/PAL.js b/config/plugins/visualizations/jmol/static/j2s/J/c/PAL.js new file mode 100755 index 000000000000..f6148fc58af5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/c/PAL.js @@ -0,0 +1,93 @@ +Clazz.declarePackage("J.c"); +Clazz.load(["java.lang.Enum"], "J.c.PAL", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$$name = null; +this.id = 0; +Clazz.instantialize(this, arguments);}, J.c, "PAL", Enum); +Clazz.makeConstructor(c$, +function(name, id){ +this.$$name = name; +this.id = id; +}, "~S,~N"); +c$.pidOf = Clazz.defineMethod(c$, "pidOf", +function(value){ +return (Clazz.instanceOf(value,"J.c.PAL") ? (value).id : Clazz.instanceOf(value, Byte) ? (value).byteValue() : J.c.PAL.UNKNOWN.id); +}, "~O"); +c$.isPaletteVariable = Clazz.defineMethod(c$, "isPaletteVariable", +function(pid){ +return ((pid & 64) != 0); +}, "~N"); +c$.getPalette = Clazz.defineMethod(c$, "getPalette", +function(paletteName){ +if (paletteName.indexOf('_') < 0) for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (paletteName.equalsIgnoreCase(item.$$name)) return item; + +return (paletteName.indexOf("property_") == 0 ? J.c.PAL.PROPERTY : J.c.PAL.UNKNOWN); +}, "~S"); +c$.getPaletteID = Clazz.defineMethod(c$, "getPaletteID", +function(paletteName){ +if (paletteName.indexOf('_') < 0) for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (paletteName.equalsIgnoreCase(item.$$name)) return item.id; + +return (paletteName.indexOf("property_") == 0 ? J.c.PAL.PROPERTY.id : J.c.PAL.UNKNOWN.id); +}, "~S"); +c$.getPaletteName = Clazz.defineMethod(c$, "getPaletteName", +function(pid){ +for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.id == pid) return item.$$name; + +return null; +}, "~N"); +c$.PALETTE_VOLATILE = 0x40; +c$.PALETTE_NONE = 0; +c$.PALETTE_CPK = 1; +c$.PALETTE_PARTIAL_CHARGE = 2; +c$.PALETTE_FORMAL_CHARGE = 3; +c$.PALETTE_TEMP = 68; +c$.PALETTE_FIXEDTEMP = 5; +c$.PALETTE_SURFACE = 70; +c$.PALETTE_STRUCTURE = 7; +c$.PALETTE_AMINO = 8; +c$.PALETTE_SHAPELY = 9; +c$.PALETTE_CHAIN = 10; +c$.PALETTE_GROUP = 75; +c$.PALETTE_MONOMER = 76; +c$.PALETTE_MOLECULE = 77; +c$.PALETTE_ALTLOC = 14; +c$.PALETTE_INSERTION = 15; +c$.PALETTE_JMOL = 16; +c$.PALETTE_RASMOL = 17; +c$.PALETTE_TYPE = 18; +c$.PALETTE_ENERGY = 19; +c$.PALETTE_PROPERTY = 84; +c$.PALETTE_VARIABLE = 85; +c$.PALETTE_STRAIGHTNESS = 86; +c$.PALETTE_POLYMER = 87; +c$.PALETTE_NUCLEIC = 24; +c$.argbsCpkRasmol = Clazz.newIntArray(-1, [16716947, 33554431, 50315467, 62005794, 83951360, 113821896, 126849023, 149946368, 165324064, 184549631, 203590434, 226525328, 249210144, 268412160, 285198386, 285277952, 343965840, 377520272, 411074704, 427851920, 452961536, 480586282, 497363498, 514140714, 598026794, 796950672, 899686640, 956278016, 1339729184]); +c$.argbsCpk = Clazz.newIntArray(-1, [0xFFFF1493, 0xFFFFFFFF, 0xFFD9FFFF, 0xFFCC80FF, 0xFFC2FF00, 0xFFFFB5B5, 0xFF909090, 0xFF3050F8, 0xFFFF0D0D, 0xFF90E050, 0xFFB3E3F5, 0xFFAB5CF2, 0xFF8AFF00, 0xFFBFA6A6, 0xFFF0C8A0, 0xFFFF8000, 0xFFFFFF30, 0xFF1FF01F, 0xFF80D1E3, 0xFF8F40D4, 0xFF3DFF00, 0xFFE6E6E6, 0xFFBFC2C7, 0xFFA6A6AB, 0xFF8A99C7, 0xFF9C7AC7, 0xFFE06633, 0xFFF090A0, 0xFF50D050, 0xFFC88033, 0xFF7D80B0, 0xFFC28F8F, 0xFF668F8F, 0xFFBD80E3, 0xFFFFA100, 0xFFA62929, 0xFF5CB8D1, 0xFF702EB0, 0xFF00FF00, 0xFF94FFFF, 0xFF94E0E0, 0xFF73C2C9, 0xFF54B5B5, 0xFF3B9E9E, 0xFF248F8F, 0xFF0A7D8C, 0xFF006985, 0xFFC0C0C0, 0xFFFFD98F, 0xFFA67573, 0xFF668080, 0xFF9E63B5, 0xFFD47A00, 0xFF940094, 0xFF429EB0, 0xFF57178F, 0xFF00C900, 0xFF70D4FF, 0xFFFFFFC7, 0xFFD9FFC7, 0xFFC7FFC7, 0xFFA3FFC7, 0xFF8FFFC7, 0xFF61FFC7, 0xFF45FFC7, 0xFF30FFC7, 0xFF1FFFC7, 0xFF00FF9C, 0xFF00E675, 0xFF00D452, 0xFF00BF38, 0xFF00AB24, 0xFF4DC2FF, 0xFF4DA6FF, 0xFF2194D6, 0xFF267DAB, 0xFF266696, 0xFF175487, 0xFFD0D0E0, 0xFFFFD123, 0xFFB8B8D0, 0xFFA6544D, 0xFF575961, 0xFF9E4FB5, 0xFFAB5C00, 0xFF754F45, 0xFF428296, 0xFF420066, 0xFF007D00, 0xFF70ABFA, 0xFF00BAFF, 0xFF00A1FF, 0xFF008FFF, 0xFF0080FF, 0xFF006BFF, 0xFF545CF2, 0xFF785CE3, 0xFF8A4FE3, 0xFFA136D4, 0xFFB31FD4, 0xFFB31FBA, 0xFFB30DA6, 0xFFBD0D87, 0xFFC70066, 0xFFCC0059, 0xFFD1004F, 0xFFD90045, 0xFFE00038, 0xFFE6002E, 0xFFEB0026]); +Clazz.defineEnumConstant(c$, "UNKNOWN", 0, [null, 0xFF]); +Clazz.defineEnumConstant(c$, "NONE", 1, ["none", 0]); +Clazz.defineEnumConstant(c$, "CPK", 2, ["cpk", 1]); +Clazz.defineEnumConstant(c$, "PARTIAL_CHARGE", 3, ["partialcharge", 2]); +Clazz.defineEnumConstant(c$, "FORMAL_CHARGE", 4, ["formalcharge", 3]); +Clazz.defineEnumConstant(c$, "TEMP", 5, ["temperature", 68]); +Clazz.defineEnumConstant(c$, "FIXEDTEMP", 6, ["fixedtemperature", 5]); +Clazz.defineEnumConstant(c$, "SURFACE", 7, ["surfacedistance", 70]); +Clazz.defineEnumConstant(c$, "STRUCTURE", 8, ["structure", 7]); +Clazz.defineEnumConstant(c$, "AMINO", 9, ["amino", 8]); +Clazz.defineEnumConstant(c$, "SHAPELY", 10, ["shapely", 9]); +Clazz.defineEnumConstant(c$, "CHAIN", 11, ["chain", 10]); +Clazz.defineEnumConstant(c$, "GROUP", 12, ["group", 75]); +Clazz.defineEnumConstant(c$, "MONOMER", 13, ["monomer", 76]); +Clazz.defineEnumConstant(c$, "MOLECULE", 14, ["molecule", 77]); +Clazz.defineEnumConstant(c$, "ALTLOC", 15, ["altloc", 14]); +Clazz.defineEnumConstant(c$, "INSERTION", 16, ["insertion", 15]); +Clazz.defineEnumConstant(c$, "JMOL", 17, ["jmol", 16]); +Clazz.defineEnumConstant(c$, "RASMOL", 18, ["rasmol", 17]); +Clazz.defineEnumConstant(c$, "TYPE", 19, ["type", 18]); +Clazz.defineEnumConstant(c$, "ENERGY", 20, ["energy", 19]); +Clazz.defineEnumConstant(c$, "PROPERTY", 21, ["property", 84]); +Clazz.defineEnumConstant(c$, "VARIABLE", 22, ["variable", 85]); +Clazz.defineEnumConstant(c$, "STRAIGHTNESS", 23, ["straightness", 86]); +Clazz.defineEnumConstant(c$, "POLYMER", 24, ["polymer", 87]); +Clazz.defineEnumConstant(c$, "NUCLEIC", 25, ["nucleic", 24]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/c/STER.js b/config/plugins/visualizations/jmol/static/j2s/J/c/STER.js new file mode 100755 index 000000000000..724b5207cfac --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/c/STER.js @@ -0,0 +1,34 @@ +Clazz.declarePackage("J.c"); +Clazz.load(["java.lang.Enum"], "J.c.STER", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$$name = null; +this.$isBiColor = false; +Clazz.instantialize(this, arguments);}, J.c, "STER", Enum); +Clazz.makeConstructor(c$, +function(name, isBiColor){ +this.$$name = name; +this.$isBiColor = isBiColor; +}, "~S,~B"); +Clazz.defineMethod(c$, "getName", +function(){ +return this.$$name; +}); +Clazz.defineMethod(c$, "isBiColor", +function(){ +return this.$isBiColor; +}); +c$.getStereoMode = Clazz.defineMethod(c$, "getStereoMode", +function(id){ +for (var item, $item = 0, $$item = J.c.STER.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.$$name.equalsIgnoreCase(id)) return item; + +return null; +}, "~S"); +Clazz.defineEnumConstant(c$, "NONE", 0, ["OFF", false]); +Clazz.defineEnumConstant(c$, "DOUBLE", 1, ["", false]); +Clazz.defineEnumConstant(c$, "REDCYAN", 2, ["REDCYAN", true]); +Clazz.defineEnumConstant(c$, "REDBLUE", 3, ["REDBLUE", true]); +Clazz.defineEnumConstant(c$, "REDGREEN", 4, ["REDGREEN", true]); +Clazz.defineEnumConstant(c$, "DTI", 5, ["DTI", false]); +Clazz.defineEnumConstant(c$, "CUSTOM", 6, ["", true]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/c/STR.js b/config/plugins/visualizations/jmol/static/j2s/J/c/STR.js new file mode 100755 index 000000000000..29a7a4c29f8e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/c/STR.js @@ -0,0 +1,47 @@ +Clazz.declarePackage("J.c"); +Clazz.load(["java.lang.Enum"], "J.c.STR", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.id = 0; +this.color = 0; +Clazz.instantialize(this, arguments);}, J.c, "STR", Enum); +Clazz.makeConstructor(c$, +function(id, color){ +this.id = id; +this.color = color; +}, "~N,~N"); +Clazz.defineMethod(c$, "getId", +function(){ +return this.id; +}); +Clazz.defineMethod(c$, "getColor", +function(){ +return this.color; +}); +c$.getProteinStructureType = Clazz.defineMethod(c$, "getProteinStructureType", +function(name){ +for (var item, $item = 0, $$item = J.c.STR.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (name.equalsIgnoreCase(item.name())) return (item.isProtein() ? item : J.c.STR.NOT); + +return J.c.STR.NOT; +}, "~S"); +Clazz.defineMethod(c$, "getBioStructureTypeName", +function(isGeneric){ +return (this.id < 0 ? "" : isGeneric && this.isProtein() ? "protein" : this.name()); +}, "~B"); +Clazz.defineMethod(c$, "isProtein", +function(){ +return this.id >= 0 && this.id <= 3 || this.id >= 7; +}); +Clazz.defineEnumConstant(c$, "NOT", 0, [-1, 0xFF808080]); +Clazz.defineEnumConstant(c$, "NONE", 1, [0, 0xFFFFFFFF]); +Clazz.defineEnumConstant(c$, "TURN", 2, [1, 0xFF6080FF]); +Clazz.defineEnumConstant(c$, "SHEET", 3, [2, 0xFFFFC800]); +Clazz.defineEnumConstant(c$, "HELIX", 4, [3, 0xFFFF0080]); +Clazz.defineEnumConstant(c$, "DNA", 5, [4, 0xFFAE00FE]); +Clazz.defineEnumConstant(c$, "RNA", 6, [5, 0xFFFD0162]); +Clazz.defineEnumConstant(c$, "CARBOHYDRATE", 7, [6, 0xFFA6A6FA]); +Clazz.defineEnumConstant(c$, "HELIX310", 8, [7, 0xFFA00080]); +Clazz.defineEnumConstant(c$, "HELIXALPHA", 9, [8, 0xFFFF0080]); +Clazz.defineEnumConstant(c$, "HELIXPI", 10, [9, 0xFF600080]); +Clazz.defineEnumConstant(c$, "ANNOTATION", 11, [-2, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/c/VDW.js b/config/plugins/visualizations/jmol/static/j2s/J/c/VDW.js new file mode 100755 index 000000000000..d76b1c88defc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/c/VDW.js @@ -0,0 +1,47 @@ +Clazz.declarePackage("J.c"); +Clazz.load(["java.lang.Enum"], "J.c.VDW", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pt = 0; +this.type = null; +this.type2 = null; +Clazz.instantialize(this, arguments);}, J.c, "VDW", Enum); +Clazz.makeConstructor(c$, +function(pt, type, type2){ +this.pt = pt; +this.type = type; +this.type2 = type2; +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "getVdwLabel", +function(){ +return (this.type == null ? this.type2 : this.type); +}); +c$.getVdwType = Clazz.defineMethod(c$, "getVdwType", +function(label){ +if (label != null) for (var item, $item = 0, $$item = J.c.VDW.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (label.equalsIgnoreCase(item.type)) return item; + +return null; +}, "~S"); +c$.getVdwType2 = Clazz.defineMethod(c$, "getVdwType2", +function(label){ +if (label != null) for (var item, $item = 0, $$item = J.c.VDW.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (label.equalsIgnoreCase(item.type2)) return item; + +return null; +}, "~S"); +Clazz.defineEnumConstant(c$, "JMOL", 0, [0, "Jmol", null]); +Clazz.defineEnumConstant(c$, "BABEL", 1, [1, "Babel", null]); +Clazz.defineEnumConstant(c$, "RASMOL", 2, [2, "RasMol", null]); +Clazz.defineEnumConstant(c$, "BABEL21", 3, [3, "Babel21", null]); +Clazz.defineEnumConstant(c$, "AUTO_JMOL", 4, [0, null, "Jmol"]); +Clazz.defineEnumConstant(c$, "AUTO_BABEL", 5, [1, null, "Babel"]); +Clazz.defineEnumConstant(c$, "AUTO_RASMOL", 6, [2, null, "RasMol"]); +Clazz.defineEnumConstant(c$, "AUTO", 7, [0, "Auto", null]); +Clazz.defineEnumConstant(c$, "USER", 8, [-1, "User", null]); +Clazz.defineEnumConstant(c$, "ADPMAX", 9, [-1, null, "adpmax"]); +Clazz.defineEnumConstant(c$, "ADPMIN", 10, [-1, null, "adpmin"]); +Clazz.defineEnumConstant(c$, "HYDRO", 11, [-1, null, "hydrophobic"]); +Clazz.defineEnumConstant(c$, "BONDING", 12, [-1, null, "bondingradius"]); +Clazz.defineEnumConstant(c$, "TEMP", 13, [-1, null, "temperature"]); +Clazz.defineEnumConstant(c$, "NOJMOL", 14, [-1, null, null]); +Clazz.defineEnumConstant(c$, "NADA", 15, [-1, null, null]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/console/GenericConsole.js b/config/plugins/visualizations/jmol/static/j2s/J/console/GenericConsole.js new file mode 100755 index 000000000000..59e674b1d686 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/console/GenericConsole.js @@ -0,0 +1,404 @@ +Clazz.declarePackage("J.console"); +Clazz.load(["J.api.JmolAppConsoleInterface", "$.JmolCallbackListener", "java.util.Hashtable"], "J.console.GenericConsole", ["JU.PT", "J.c.CBK", "J.i18n.GT", "JS.T", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.input = null; +this.output = null; +this.vwr = null; +this.menuMap = null; +this.editButton = null; +this.runButton = null; +this.historyButton = null; +this.stateButton = null; +this.clearOutButton = null; +this.clearInButton = null; +this.loadButton = null; +this.defaultMessage = null; +this.label1 = null; +this.nTab = 0; +this.incompleteCmd = null; +Clazz.instantialize(this, arguments);}, J.console, "GenericConsole", null, [J.api.JmolAppConsoleInterface, J.api.JmolCallbackListener]); +Clazz.prepareFields (c$, function(){ +this.menuMap = new java.util.Hashtable(); +}); +Clazz.defineMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +if (J.console.GenericConsole.labels == null) { +var l = new java.util.Hashtable(); +l.put("title", J.i18n.GT.$("Jmol Script Console") + " " + JV.Viewer.getJmolVersion()); +this.setupLabels(l); +J.console.GenericConsole.labels = l; +}}, "JV.Viewer"); +Clazz.defineMethod(c$, "addButton", +function(b, label){ +b.addConsoleListener(this); +this.menuMap.put(label, b); +return b; +}, "J.api.JmolAbstractButton,~S"); +Clazz.defineMethod(c$, "getLabel1", +function(){ +return null; +}); +Clazz.defineMethod(c$, "setupLabels", +function(labels){ +labels.put("saveas", J.i18n.GT.$("&Save As...")); +labels.put("file", J.i18n.GT.$("&File")); +labels.put("close", J.i18n.GT.$("&Close")); +this.setupLabels0(labels); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setupLabels0", +function(labels){ +labels.put("help", J.i18n.GT.$("&Help")); +labels.put("search", J.i18n.GT.$("&Search...")); +labels.put("commands", J.i18n.GT.$("&Commands")); +labels.put("functions", J.i18n.GT.$("Math &Functions")); +labels.put("parameters", J.i18n.GT.$("Set &Parameters")); +labels.put("more", J.i18n.GT.$("&More")); +labels.put("Editor", J.i18n.GT.$("Editor")); +labels.put("State", J.i18n.GT.$("State")); +labels.put("Run", J.i18n.GT.$("Run")); +labels.put("Clear Output", J.i18n.GT.$("Clear Output")); +labels.put("Clear Input", J.i18n.GT.$("Clear Input")); +labels.put("History", J.i18n.GT.$("History")); +labels.put("Load", J.i18n.GT.$("Load")); +labels.put("label1", J.i18n.GT.$("press CTRL-ENTER for new line or paste model data and press Load")); +labels.put("default", J.i18n.GT.$("Messages will appear here. Enter commands in the box below. Click the console Help menu item for on-line help, which will appear in a new browser window.")); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setLabels", +function(){ +var doTranslate = J.i18n.GT.setDoTranslate(true); +this.editButton = this.setButton("Editor"); +this.stateButton = this.setButton("State"); +this.runButton = this.setButton("Run"); +this.clearOutButton = this.setButton("Clear Output"); +this.clearInButton = this.setButton("Clear Input"); +this.historyButton = this.setButton("History"); +this.loadButton = this.setButton("Load"); +this.defaultMessage = J.console.GenericConsole.getLabel("default"); +this.setTitle(); +J.i18n.GT.setDoTranslate(doTranslate); +}); +c$.getLabel = Clazz.defineMethod(c$, "getLabel", +function(key){ +return J.console.GenericConsole.labels.get(key); +}, "~S"); +Clazz.defineMethod(c$, "displayConsole", +function(){ +this.layoutWindow(null); +this.outputMsg(this.defaultMessage); +}); +Clazz.defineMethod(c$, "updateLabels", +function(){ +return; +}); +Clazz.defineMethod(c$, "completeCommand", +function(thisCmd){ +if (thisCmd.length == 0) return null; +var strCommand = (this.nTab <= 0 || this.incompleteCmd == null ? thisCmd : this.incompleteCmd); +this.incompleteCmd = strCommand; +var splitCmd = J.console.GenericConsole.splitCommandLine(thisCmd); +if (splitCmd == null) return null; +var asCommand = splitCmd[2] == null; +var inBrace = (splitCmd[3] != null); +var notThis = splitCmd[asCommand ? 1 : 2]; +var s = splitCmd[1]; +if (notThis.length == 0) return null; +var token = JS.T.getTokenFromName(s.trim().toLowerCase()); +var cmdtok = (token == null ? 0 : token.tok); +var isSelect = JS.T.tokAttr(cmdtok, 12288); +splitCmd = J.console.GenericConsole.splitCommandLine(strCommand); +var cmd = null; +if (!asCommand && (notThis.charAt(0) == '"' || notThis.charAt(0) == '\'')) { +var q = notThis.charAt(0); +notThis = JU.PT.trim(notThis, "\"\'"); +var stub = JU.PT.trim(splitCmd[2], "\"\'"); +cmd = this.nextFileName(stub, this.nTab); +if (cmd != null) cmd = splitCmd[0] + splitCmd[1] + q + cmd + q; +} else { +var map = null; +if (!asCommand) { +notThis = s; +if (inBrace || splitCmd[2].startsWith("$") || isSelect) { +map = new java.util.Hashtable(); +this.vwr.getObjectMap(map, inBrace || isSelect ? '{' : splitCmd[2].startsWith("$") ? '$' : '0'); +}}cmd = JS.T.completeCommand(map, s.equalsIgnoreCase("set "), asCommand, asCommand ? splitCmd[1] : splitCmd[2], this.nTab); +cmd = splitCmd[0] + (cmd == null ? notThis : asCommand ? cmd : splitCmd[1] + cmd); +}return (cmd == null || cmd.equals(strCommand) ? null : cmd); +}, "~S"); +Clazz.defineMethod(c$, "doAction", +function(source){ +if (source === this.runButton) { +this.execute(null); +} else if (source === this.editButton) { +this.vwr.getProperty("DATA_API", "scriptEditor", null); +} else if (source === this.historyButton) { +this.clearContent(this.vwr.getSetHistory(2147483647)); +} else if (source === this.stateButton) { +this.clearContent(this.vwr.getStateInfo()); +} else if (source === this.clearInButton) { +this.input.setText(""); +return; +}if (source === this.clearOutButton) { +this.output.setText(""); +return; +}if (source === this.loadButton) { +this.vwr.loadInlineAppend(this.input.getText(), false); +return; +}if (this.isMenuItem(source)) { +this.execute((source).getName()); +return; +}}, "~O"); +Clazz.defineMethod(c$, "execute", +function(strCommand){ +var cmd = (strCommand == null ? this.input.getText() : strCommand); +if (strCommand == null) this.input.setText(null); +var strErrorMessage = this.vwr.script(cmd + "; ## GUI ##\u0001## EDITOR_IGNORE ##; ## GUI ##"); +if (strErrorMessage != null && !strErrorMessage.equals("pending")) this.outputMsg(strErrorMessage); +}, "~S"); +Clazz.defineMethod(c$, "destroyConsole", +function(){ +if (this.vwr.isApplet) this.vwr.getProperty("DATA_API", "getAppConsole", Boolean.FALSE); +}); +c$.setAbstractButtonLabels = Clazz.defineMethod(c$, "setAbstractButtonLabels", +function(menuMap, labels){ +for (var key, $key = menuMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var m = menuMap.get(key); +var label = labels.get(key); +if (key.indexOf("Tip") == key.length - 3) { +m.setToolTipText(labels.get(key)); +} else { +var mnemonic = J.console.GenericConsole.getMnemonic(label); +if (mnemonic != ' ') m.setMnemonic(mnemonic); +label = J.console.GenericConsole.getLabelWithoutMnemonic(label); +m.setText(label); +}} +}, "java.util.Map,java.util.Map"); +c$.getLabelWithoutMnemonic = Clazz.defineMethod(c$, "getLabelWithoutMnemonic", +function(label){ +if (label == null) { +return null; +}var index = label.indexOf('&'); +if (index == -1) { +return label; +}return label.substring(0, index) + ((index < label.length - 1) ? label.substring(index + 1) : ""); +}, "~S"); +c$.getMnemonic = Clazz.defineMethod(c$, "getMnemonic", +function(label){ +if (label == null) { +return ' '; +}var index = label.indexOf('&'); +if ((index == -1) || (index == label.length - 1)) { +return ' '; +}return label.charAt(index + 1); +}, "~S"); +c$.map = Clazz.defineMethod(c$, "map", +function(button, key, label, menuMap){ +var mnemonic = J.console.GenericConsole.getMnemonic(label); +if (mnemonic != ' ') (button).setMnemonic(mnemonic); +if (menuMap != null) menuMap.put(key, button); +}, "~O,~S,~S,java.util.Map"); +Clazz.overrideMethod(c$, "notifyEnabled", +function(type){ +switch (type) { +case J.c.CBK.ECHO: +case J.c.CBK.MEASURE: +case J.c.CBK.MESSAGE: +case J.c.CBK.PICK: +return true; +case J.c.CBK.ANIMFRAME: +case J.c.CBK.APPLETREADY: +case J.c.CBK.ATOMMOVED: +case J.c.CBK.AUDIO: +case J.c.CBK.CLICK: +case J.c.CBK.DRAGDROP: +case J.c.CBK.ERROR: +case J.c.CBK.EVAL: +case J.c.CBK.HOVER: +case J.c.CBK.IMAGE: +case J.c.CBK.LOADSTRUCT: +case J.c.CBK.MINIMIZATION: +case J.c.CBK.MODELKIT: +case J.c.CBK.SERVICE: +case J.c.CBK.RESIZE: +case J.c.CBK.SCRIPT: +case J.c.CBK.SELECT: +case J.c.CBK.STRUCTUREMODIFIED: +case J.c.CBK.SYNC: +break; +} +return false; +}, "J.c.CBK"); +Clazz.overrideMethod(c$, "notifyCallback", +function(type, data){ +var strInfo = (data == null || data[1] == null ? null : data[1].toString()); +switch (type) { +case J.c.CBK.ECHO: +this.sendConsoleEcho(strInfo); +break; +case J.c.CBK.MEASURE: +var mystatus = data[3]; +if (mystatus.indexOf("Picked") >= 0 || mystatus.indexOf("Sequence") >= 0) this.sendConsoleMessage(strInfo); + else if (mystatus.indexOf("Completed") >= 0) this.sendConsoleEcho(strInfo); +break; +case J.c.CBK.MESSAGE: +this.sendConsoleMessage(data == null ? null : strInfo); +break; +case J.c.CBK.PICK: +this.sendConsoleMessage(strInfo); +break; +} +}, "J.c.CBK,~A"); +Clazz.overrideMethod(c$, "getText", +function(){ +return this.output.getText(); +}); +Clazz.overrideMethod(c$, "sendConsoleEcho", +function(strEcho){ +if (strEcho == null) { +this.updateLabels(); +this.outputMsg(null); +strEcho = this.defaultMessage; +} else if (strEcho.equals("\0")) { +{ +Clazz.Console.clear(); +}strEcho = null; +}this.outputMsg(strEcho); +}, "~S"); +Clazz.defineMethod(c$, "outputMsg", +function(message){ +var n = (message == null ? -1 : message.length); +switch (n) { +case -1: +this.output.setText(""); +return; +default: +if (message.charAt(n - 1) == '\n') break; +case 0: +message += "\n"; +} +this.output.append(message); +}, "~S"); +Clazz.defineMethod(c$, "clearContent", +function(text){ +this.output.setText(text); +}, "~S"); +Clazz.overrideMethod(c$, "sendConsoleMessage", +function(strInfo){ +if (strInfo != null && this.output.getText().startsWith(this.defaultMessage)) this.outputMsg(null); +this.outputMsg(strInfo); +}, "~S"); +Clazz.overrideMethod(c$, "setCallbackFunction", +function(callbackType, callbackFunction){ +}, "~S,~S"); +Clazz.overrideMethod(c$, "zap", +function(){ +}); +Clazz.defineMethod(c$, "recallCommand", +function(up, pageUp){ +var cmd = this.vwr.getSetHistory(up ? -1 : 1); +if (cmd != null) { +cmd = this.trimGUI(cmd); +this.input.setText(JU.PT.escUnicode(cmd)); +}}, "~B,~B"); +Clazz.defineMethod(c$, "trimGUI", +function(cmd){ +var pt = cmd.indexOf("\u0001##"); +if (pt >= 0) cmd = cmd.substring(0, pt); +pt = cmd.indexOf("; ## GUI ##"); +if (pt >= 0) cmd = cmd.substring(0, pt); +return JU.PT.trim(cmd, "; "); +}, "~S"); +Clazz.defineMethod(c$, "processKey", +function(kcode, kid, isControlDown){ +var mode = 0; +switch (kid) { +case 401: +switch (kcode) { +case 9: +var s = this.input.getText(); +if (s.endsWith("\n") || s.endsWith("\t")) return 0; +mode = 1; +if (this.input.getCaretPosition() == s.length) { +var cmd = this.completeCommand(s); +if (cmd != null) this.input.setText(JU.PT.escUnicode(cmd).$replace('\t', ' ')); +this.nTab++; +return mode; +}break; +case 27: +mode = 1; +this.input.setText(""); +break; +} +this.nTab = 0; +if (kcode == 10 && !isControlDown) { +this.execute(null); +return mode; +}if (kcode == 38 || kcode == 40) { +this.recallCommand(kcode == 38, false); +return mode; +}break; +case 402: +if (kcode == 10 && !isControlDown) return mode; +break; +} +return mode | 2; +}, "~N,~N,~B"); +c$.splitCommandLine = Clazz.defineMethod(c$, "splitCommandLine", +function(cmd){ +var sout = new Array(4); +var isEscaped1 = false; +var isEscaped2 = false; +var isEscaped = false; +if (cmd.length == 0) return null; +var ptQ = -1; +var ptCmd = 0; +var ptToken = 0; +var nBrace = 0; +var ch; +for (var i = 0; i < cmd.length; i++) { +switch ((ch = cmd.charAt(i)).charCodeAt(0)) { +case 34: +if (!isEscaped && !isEscaped1) { +isEscaped2 = !isEscaped2; +if (isEscaped2) ptQ = ptToken = i; +}break; +case 39: +if (!isEscaped && !isEscaped2) { +isEscaped1 = !isEscaped1; +if (isEscaped1) ptQ = ptToken = i; +}break; +case 92: +isEscaped = !isEscaped; +continue; +case 32: +if (!isEscaped && !isEscaped1 && !isEscaped2) { +ptToken = i + 1; +ptQ = -1; +}break; +case 59: +if (!isEscaped1 && !isEscaped2) { +ptCmd = ptToken = i + 1; +ptQ = -1; +nBrace = 0; +}break; +case 123: +case 125: +if (!isEscaped1 && !isEscaped2) { +nBrace += (ch == '{' ? 1 : -1); +ptToken = i + 1; +ptQ = -1; +}break; +default: +if (!isEscaped1 && !isEscaped2) ptQ = -1; +} +isEscaped = false; +} +sout[0] = cmd.substring(0, ptCmd); +sout[1] = (ptToken == ptCmd ? cmd.substring(ptCmd) : cmd.substring(ptCmd, (ptToken > ptQ ? ptToken : ptQ))); +sout[2] = (ptToken == ptCmd ? null : cmd.substring(ptToken)); +sout[3] = (nBrace > 0 ? "{" : null); +return sout; +}, "~S"); +c$.labels = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/console/GenericTextArea.js b/config/plugins/visualizations/jmol/static/j2s/J/console/GenericTextArea.js new file mode 100755 index 000000000000..13398b6ee370 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/console/GenericTextArea.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.console"); +Clazz.declareInterface(J.console, "GenericTextArea"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/console/ImageDialog.js b/config/plugins/visualizations/jmol/static/j2s/J/console/ImageDialog.js new file mode 100755 index 000000000000..abb13fd38716 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/console/ImageDialog.js @@ -0,0 +1,158 @@ +Clazz.declarePackage("J.console"); +Clazz.load(["javax.swing.JDialog", "$.JPanel", "J.api.GenericImageDialog"], "J.console.ImageDialog", ["java.util.Hashtable", "JU.PT", "javax.swing.JMenuBar", ], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.menubar = null; +this.image = null; +this.vwr = null; +this.canvas = null; +this.$title = null; +this.imageMap = null; +this.console = null; +if (!Clazz.isClassDefined("J.console.ImageDialog.ImageCanvas")) { +J.console.ImageDialog.$ImageDialog$ImageCanvas$ (); +} +Clazz.instantialize(this, arguments);}, J.console, "ImageDialog", javax.swing.JDialog, [J.api.GenericImageDialog, java.awt.event.WindowListener, java.awt.event.ActionListener]); +Clazz.makeConstructor(c$, +function(vwr, title, imageMap){ +Clazz.superConstructor(this, J.console.ImageDialog, [Clazz.instanceOf(J.awt.Platform.getWindow(vwr.display),"javax.swing.JFrame") ? J.awt.Platform.getWindow(vwr.display) : null, title, false]); +this.vwr = vwr; +this.setResizable(false); +this.console = vwr.getConsole(); +this.addWindowListener(this); +this.$title = title; +this.imageMap = imageMap; +imageMap.put(title, this); +var wrapper = new javax.swing.JPanel( new java.awt.BorderLayout()); +wrapper.setBackground( new java.awt.Color(255, 0, 0)); +this.canvas = Clazz.innerTypeInstance(J.console.ImageDialog.ImageCanvas, this, null); +wrapper.add(this.canvas, "Center"); +var container = new javax.swing.JPanel(); +container.setLayout( new java.awt.BorderLayout()); +this.menubar = new javax.swing.JMenuBar(); +this.menubar.add(this.createMenu()); +this.setJMenuBar(this.menubar); +container.add(wrapper, "Center"); +this.getContentPane().add(container); +this.pack(); +this.setLocation(100, 100); +this.setVisible(true); +}, "JV.Viewer,~S,java.util.Map"); +Clazz.defineMethod(c$, "createMenu", +function(){ +var itemKeys = JU.PT.getTokens("saveas close"); +this.vwr.getConsole(); +var menu = this.console.newJMenu("file"); +for (var i = 0; i < itemKeys.length; i++) { +var item = itemKeys[i]; +var mi = this.createMenuItem(item); +menu.add(mi); +} +menu.setVisible(true); +return menu; +}); +Clazz.defineMethod(c$, "createMenuItem", +function(cmd){ +var mi = this.console.newJMenuItem(cmd); +mi.setActionCommand(cmd); +mi.addActionListener(this); +mi.setVisible(true); +return mi; +}, "~S"); +Clazz.overrideMethod(c$, "actionPerformed", +function(e){ +var cmd = e.getActionCommand(); +if (cmd.equals("close")) { +this.closeMe(); +} else if (cmd.equals("saveas")) { +this.saveAs(); +}}, "java.awt.event.ActionEvent"); +Clazz.defineMethod(c$, "saveAs", +function(){ +(((Clazz.isClassDefined("J.console.ImageDialog$2") ? 0 : J.console.ImageDialog.$ImageDialog$2$ ()), Clazz.innerTypeInstance(J.console.ImageDialog$2, this, null, ((Clazz.isClassDefined("J.console.ImageDialog$1") ? 0 : J.console.ImageDialog.$ImageDialog$1$ ()), Clazz.innerTypeInstance(J.console.ImageDialog$1, this, null))))).start(); +}); +Clazz.overrideMethod(c$, "closeMe", +function(){ +this.imageMap.remove(this.$title); +this.dispose(); +}); +Clazz.overrideMethod(c$, "setImage", +function(oimage){ +if (oimage == null) { +this.closeMe(); +return; +}var w = (oimage).getWidth(null); +var h = (oimage).getHeight(null); +this.image = new java.awt.image.BufferedImage(w, h, 1); +var g = this.image.getGraphics(); +g.setColor(java.awt.Color.white); +g.fillRect(0, 0, w, h); +g.drawImage(oimage, 0, 0, null); +g.dispose(); +this.setTitle(this.$title + " [" + w + " x " + h + "]"); +var d = new java.awt.Dimension(w, h); +this.canvas.setPreferredSize(d); +this.setBackground(java.awt.Color.WHITE); +this.getContentPane().setBackground(java.awt.Color.WHITE); +this.pack(); +}, "~O"); +Clazz.overrideMethod(c$, "windowClosed", +function(e){ +}, "java.awt.event.WindowEvent"); +Clazz.overrideMethod(c$, "windowOpened", +function(e){ +}, "java.awt.event.WindowEvent"); +Clazz.overrideMethod(c$, "windowClosing", +function(e){ +this.closeMe(); +}, "java.awt.event.WindowEvent"); +Clazz.overrideMethod(c$, "windowIconified", +function(e){ +}, "java.awt.event.WindowEvent"); +Clazz.overrideMethod(c$, "windowDeiconified", +function(e){ +}, "java.awt.event.WindowEvent"); +Clazz.overrideMethod(c$, "windowActivated", +function(e){ +}, "java.awt.event.WindowEvent"); +Clazz.overrideMethod(c$, "windowDeactivated", +function(e){ +}, "java.awt.event.WindowEvent"); +c$.$ImageDialog$ImageCanvas$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +Clazz.instantialize(this, arguments);}, J.console.ImageDialog, "ImageCanvas", javax.swing.JPanel); +Clazz.overrideMethod(c$, "paintComponent", +function(g){ +System.out.println(this.b$["J.console.ImageDialog"].image.getClass().getName()); +g.setColor(java.awt.Color.white); +g.fillRect(0, 0, this.b$["J.console.ImageDialog"].image.getWidth(null), this.b$["J.console.ImageDialog"].image.getHeight(null)); +g.drawImage(this.b$["J.console.ImageDialog"].image, 0, 0, null); +}, "java.awt.Graphics"); +/*eoif4*/})(); +}; +c$.$ImageDialog$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(J.console, "ImageDialog$2", Thread); +/*eoif5*/})(); +}; +c$.$ImageDialog$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(J.console, "ImageDialog$1", null, Runnable); +Clazz.overrideMethod(c$, "run", +function(){ +var params = new java.util.Hashtable(); +var fname = this.b$["J.console.ImageDialog"].vwr.dialogAsk("Save Image", "jmol.png", params); +if (fname == null) return; +var type = "PNG"; +var pt = fname.lastIndexOf("."); +if (pt > 0) type = fname.substring(pt + 1).toUpperCase(); +params.put("fileName", fname); +params.put("type", type); +params.put("image", this.b$["J.console.ImageDialog"].image); +this.b$["J.console.ImageDialog"].vwr.showString(this.b$["J.console.ImageDialog"].vwr.processWriteOrCapture(params), false); +}); +/*eoif5*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/consolejs/AppletConsole.js b/config/plugins/visualizations/jmol/static/j2s/J/consolejs/AppletConsole.js new file mode 100755 index 000000000000..df4ac5a04e16 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/consolejs/AppletConsole.js @@ -0,0 +1,365 @@ +Clazz.declarePackage("J.consolejs"); +Clazz.load(["J.console.GenericConsole"], "J.consolejs.AppletConsole", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.jsConsole = null; +Clazz.instantialize(this, arguments);}, J.consolejs, "AppletConsole", J.console.GenericConsole); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.consolejs.AppletConsole, []); +}); +Clazz.overrideMethod(c$, "start", +function(vwr){ +this.setViewer(vwr); +this.setLabels(); +this.displayConsole(); +}, "JV.Viewer"); +Clazz.overrideMethod(c$, "layoutWindow", +function(enabledButtons){ +{ +this.jsConsole = new Jmol.Console.JSConsole(this); +}this.setTitle(); +}, "~S"); +Clazz.overrideMethod(c$, "setTitle", +function(){ +if (this.jsConsole != null) this.jsConsole.setTitle(J.console.GenericConsole.getLabel("title")); +}); +Clazz.overrideMethod(c$, "setVisible", +function(visible){ +this.jsConsole.setVisible(visible); +}, "~B"); +Clazz.overrideMethod(c$, "setButton", +function(text){ +{ +return new Jmol.Console.Button(text); +}}, "~S"); +Clazz.overrideMethod(c$, "dispose", +function(){ +this.setVisible(false); +}); +Clazz.overrideMethod(c$, "isMenuItem", +function(source){ +return false; +}, "~O"); +Clazz.overrideMethod(c$, "getScriptEditor", +function(){ +return null; +}); +Clazz.overrideMethod(c$, "nextFileName", +function(stub, nTab){ +return null; +}, "~S,~N"); +Clazz.overrideMethod(c$, "newJMenu", +function(key){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "newJMenuItem", +function(key){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "regainFocus", +function(){ +}); +{ +{ +;Jmol.Console = { +buttons:{}, +buttonWidth:100, +click:function(id) { +Jmol.Console.buttons[id].console.appletConsole.doAction(Jmol.Console.buttons[id]); +} +} +Jmol.consoleGetImageDialog = function(vwr, title, imageMap) { +// JmolObjectInterface +return new Jmol.Console.Image(vwr, title, imageMap); +} +Jmol.Console.Image = function(vwr, title, imageMap) { +// page designer may indicate one of three divs for images on the page: +// _Image_app_holder for IMAGE command by itself (current app image) +// _Image__holder for IMAGE ID "xxx" ... or IMAGE "xxx" +// where cleaning is with .replace(/\W/g,"_") +// _Image_holder for all images not identified as above +// if a page div is not identified, then the image will be placed in a new floating div +this.vwr = vwr; +this.title = title; +this.imageMap = imageMap; +this.applet = vwr.html5Applet; +var id = this.applet._id + "_Image"; +this.id = id + "_" + (title == "" ? "app" : title).replace(/\W/g,"_"); +var jqobj = Jmol._$(this.id + "_holder"); +if (!jqobj[0] && (jqobj = Jmol._$(id + "_holder"))[0]) +this.id = id; +if (jqobj[0]) +this.div = jqobj; +else +Jmol.Console.createDOM(this, '
'); +System.out.println("image " + this.id + " created"); +var obj = imageMap.get(this.id); +if (obj) +obj.closeMe(); +imageMap.put(this.id, this); +imageMap.put(title, this); +} +Jmol.Console.Image.setCanvas = function(obj, canvas) { +// this method can be customized as desired +// it puts the canvas into a holder div +Jmol.$append(Jmol._$(obj.id + "_holder"), canvas); +Jmol.$html(obj.id + "_title", "
    close" + obj.title + " [" + canvas.width + " x " + canvas.height + "]
"); +} +Jmol.Console.Image.closeImage = function(obj) { +// this method can be customized as desired +obj.imageMap.remove(obj.title); +obj.imageMap.remove(obj.id); +if (obj.div) { +Jmol.$remove(obj.cid); +} else { +obj.dragBind(false); +Jmol.$remove(obj.id); +} +} +Jmol.Console.Image.prototype.setImage = function(canvas) { +// called by Jmol asynchronously after image is loaded +if (this.cid) +Jmol.$remove(this.cid); +var c = document.createElement("canvas"); +c.width = canvas.width; +c.height = canvas.height; +var cdx = c.getContext("2d"); +if (canvas.buf32) { +// image buffer from current view +// (note that buf32.length will be the same as buf8.length when images are antialiased) +var imgData = cdx.getImageData(0, 0, c.width, c.height); +var buf8 = imgData.data; +var buf32 = canvas.buf32; +var n = buf8.length >> 2; +for (var i = 0, j = 0; i < n; i++) { +buf8[j++] = (buf32[i] >> 16) & 0xFF; +buf8[j++] = (buf32[i] >> 8) & 0xFF; +buf8[j++] = buf32[i] & 0xFF; +buf8[j++] = 0xFF; +} +cdx.putImageData(imgData, 0, 0); +} else { +// asynchronous load of image from file +cdx.drawImage(canvas,0,0); +} +this.cid = c.id = this.id + "_image"; +Jmol.Console.Image.setCanvas(this, c); +} +Jmol.Console.Image.prototype.closeMe = function() { +// called by Jmol +Jmol.Console.Image.closeImage(this); +} +Jmol.Swing.setDraggable(Jmol.Console.Image); +Jmol.Console.createDOM = function(obj, s, userConsole) { +var id = obj.id; +Jmol.Console.buttons[id] = obj; +s = s.replace(/\$ID/g,id); +if (userConsole && userConsole[0]) { +Jmol.$html(userConsole,s); +} else { +Jmol.$after("body", s); +obj.setContainer(Jmol._$(id)); +obj.setPosition(); +obj.dragBind(true); +} +} +Jmol.Console.JSConsole = function(appletConsole) { +this.applet = appletConsole.vwr.html5Applet; +var id = this.id = this.applet._id+"_console"; +var console = this; +console.appletConsole = appletConsole; +console.input = appletConsole.input = new Jmol.Console.Input(console); +console.output = appletConsole.output = new Jmol.Console.Output(console); +// check to see if the user already has a div on the page with id such as "jmolApplet0_console" +var userConsole = Jmol.$("#" + id); +// set up this.appletConsole.input, this.appletconsole.output +// set up buttons, which are already made by this time: +// I would prefer NOT to use jQueryUI for this - just simple buttons with simple actions +// create and insert HTML code +var s = '
' +var w = 600, h = 362; +if (userConsole[0]) { +var dims = Jmol.$getSize(userConsole); +if (dims[0] == 0) +Jmol.$setSize(userConsole, w, h); +w = dims[0] || w; +h = dims[1] || h; +} else { +s = '
' + s + '
'; +} +Jmol.Console.createDOM(this, s, userConsole); +var setBtn = function(console, btn) { +btn.console = console; +btn.id = id + "_" + btn.label.replace(/\s/g,"_"); +Jmol.Console.buttons[btn.id] = btn; +return btn.html(); +} +s = setBtn(console, appletConsole.runButton) ++ setBtn(console, appletConsole.loadButton) ++ setBtn(console, appletConsole.clearInButton) ++ setBtn(console, appletConsole.clearOutButton) ++ setBtn(console, appletConsole.historyButton) ++ setBtn(console, appletConsole.stateButton); +Jmol.$html(id + "_buttondiv", s); +s = ""; +if (!userConsole[0]) +s += "    close"; +s += "    help"; +Jmol.$html(id + "_label1", s); +if (userConsole[0]) { +// leaves a little slop for margins +w = w - 10; +h = (h - Jmol.$getSize(id + "_label1")[1] - Jmol.$getSize(id + "_buttondiv")[1] - 20)/3; +} else { +w = w - 10; +h = (h - 62)/3; +} +Jmol.$html(id + "_inputdiv", ''); +Jmol.$html(id + "_outputdiv", ''); +Jmol.Cache.setDragDrop(this.applet, "console_output"); +Jmol.Cache.setDragDrop(this.applet, "console_input"); +Jmol.$bind("#" + id + "_input", "keydown keypress keyup", function(event) { console.input.keyEvent(event) }); +Jmol.$bind("#" + id + "_input", "mousedown touchstart", function(event) { console.ignoreMouse=true }); +Jmol.$bind("#" + id + "_output", "mousedown touchstart", function(event) { console.ignoreMouse=true }); +console.setButton = function(text) { +return new Jmol.Console.Button(this, text); +} +console.setVisible = function(b) { +if (b) +this.container.show(); +else +this.container.hide(); +this.dragBind(b); +} +console.setTitle = function(title) { +//Jmol.$html(this.id + "_title", title); +} +console.setVisible(false); +} +Jmol.Swing.setDraggable(Jmol.Console.JSConsole); +Jmol.Console.Input = function(console) { +this.console = console; +this.id = console.id + "_input"; +// something like this.... +this.getText = function() { +return Jmol.$val(this.id); +} +this.setText = function(text) { +if (text == null) +text = ""; +Jmol.$val(this.id, text); +} +this.keyEvent = function(ev) { +// chrome/safari +// for left paren: +// keyCode which key originalEvent.keyIdentifier +// keydown 57 57 - U+0039 +// keypress 40 40 - Down // why Down?? +// +// for down arrow +// keydown 40 40 - Down +// ff, msie +// for left paren: +// keyCode which key originalEvent.keyIdentifier +// keydown 57 57 ( - +// keypress 0 40 ( - +// +// for down arrow +// keydown 40 40 Down - +// in all cases: normal keys (as well as backspace[8] and delete[46]) are keydown keypress keyup +// special keys just keydown keyup +// keyup is only once when repeated; same as keydown +// ff/msie delivers key, chrome/safari does not +// chrome/safari has "feature" that keyIdentifier for "(" is reported as "Down" and similar issues for many other keys +//System.out.println(ev.type + " key:" + (!ev.key) + " keyCode:" + ev.keyCode + " which:" + ev.which + " " + ev.key + "--" + ev.originalEvent.keyIdentifier); +var mode; +var type = ev.type; +var isCtrl = ev.ctrlKey; +var kcode = ev.keyCode; +if (kcode == 13) +kcode=10; +// keycode is deprecated, but is essential still +if (type == "keyup") { +mode = (kcode == 38 || kcode == 40 ? 1 : this.console.appletConsole.processKey(kcode, 402, isCtrl)); +if ((mode & 1) == 1) +ev.preventDefault(); +return; +} +// includes keypress and keydown +// only assign "key" for keydown, as keypress gives erroneous identifier in chrome/safari +var isKeydown = (type == "keydown"); +var key = (isKeydown ? (ev.key || ev.originalEvent.keyIdentifier) : ""); +switch (kcode) { +case 38: // up-arrow, possibly +case 40: // down-arrow, possibly +// must be keydown, not keypress to be arrow key +if (!isKeydown) +kcode = 0; +break; +case 8: // bs +case 9: // tab +case 10: // CR +case 27: // esc +// only these are of interest to Jmol +break; +default: +kcode = 0; // nothing to report +} +mode = this.console.appletConsole.processKey(kcode, 401, isCtrl); +if (isCtrl && kcode == 10) +this.setText(this.getText() + "\n") +if (mode == 0 && ev.keyCode == 9) { +var me = this; +setTimeout(function(){me.setText(me.getText() + "\t"); Jmol.$focus(me.id)},10); +} +// ignore if... +if ((mode & 1) == 1 // Jmol has handled the key press +|| key == "Up" || key == "Down" // up and down arrows +|| isKeydown && ev.keyCode != 8 && ev.keyCode < 32 // a special character other than backspace, when keyDown +) { +ev.preventDefault(); +} +} +this.getCaretPosition = function() { +var el = Jmol._$(this.id)[0]; +if('selectionStart' in el) +return el.selectionStart; +if(!('selection' in document)) +return 0; +el.focus(); +var sel = document.selection.createRange(); +var len = document.selection.createRange().text.length; +sel.moveStart('character', -el.value.length); +return sel.text.length - len; +} +} +Jmol.Console.Output = function(console) { +this.id = console.id + "_output"; +this.getText = function() { +return Jmol.$val(this.id); +} +this.setText = function(text) { +if (text == null) +text = ""; +Jmol.$val(this.id, text); +} +this.append = function(message, att) { +this.setText(this.getText() + message); +Jmol.$scrollTo(this.id, -1); +} +} +Jmol.Console.Button = function(text) { +this.label = text; +} +Jmol.Console.Button.prototype.addConsoleListener = function(appletConsole) { +this.appletConsole = appletConsole; +Jmol.Console.buttons[this.id] = this; +} +Jmol.Console.Button.prototype.html = function() { +var s = '' +return s; +} +; +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/consolejs/JSConsole.js b/config/plugins/visualizations/jmol/static/j2s/J/consolejs/JSConsole.js new file mode 100755 index 000000000000..8ae96bafc80f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/consolejs/JSConsole.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.consolejs"); +Clazz.declareInterface(J.consolejs, "JSConsole"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/dialog/Dialog.js b/config/plugins/visualizations/jmol/static/j2s/J/dialog/Dialog.js new file mode 100755 index 000000000000..b3e40aabdbb1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/dialog/Dialog.js @@ -0,0 +1,415 @@ +Clazz.declarePackage("J.dialog"); +Clazz.load(["javax.swing.JPanel", "javax.swing.event.ChangeListener", "javax.swing.filechooser.FileFilter", "J.api.JmolDialogInterface"], "J.dialog.Dialog", ["java.io.File", "javax.swing.JComboBox", "$.JFileChooser", "$.JOptionPane", "$.JSlider", "$.SwingUtilities", "$.UIManager", "javax.swing.border.TitledBorder", "J.dialog.FileChooser", "$.FilePreview", "J.i18n.GT", "JU.Logger", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.extensions = null; +this.choice = null; +this.extension = null; +this.qSliderJPEG = null; +this.qSliderPNG = null; +this.cb = null; +this.qPanelJPEG = null; +this.qPanelPNG = null; +this.openPreview = null; +this.initialFile = null; +if (!Clazz.isClassDefined("J.dialog.Dialog.QualityListener")) { +J.dialog.Dialog.$Dialog$QualityListener$ (); +} +if (!Clazz.isClassDefined("J.dialog.Dialog.ExportChoiceListener")) { +J.dialog.Dialog.$Dialog$ExportChoiceListener$ (); +} +this.imageChoices = null; +this.imageExtensions = null; +this.outputFileName = null; +this.dialogType = null; +this.inputFileName = null; +this.vwr = null; +this.qualityJ = -1; +this.qualityP = -1; +this.imageType = null; +Clazz.instantialize(this, arguments);}, J.dialog, "Dialog", javax.swing.JPanel, J.api.JmolDialogInterface); +Clazz.prepareFields (c$, function(){ +this.extensions = new Array(10); +this.imageChoices = Clazz.newArray(-1, ["JPEG", "PNG", "GIF", "PPM"]); +this.imageExtensions = Clazz.newArray(-1, ["jpg", "png", "gif", "ppm"]); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.dialog.Dialog, []); +}); +Clazz.overrideMethod(c$, "getOpenFileNameFromDialog", +function(vwrOptions, vwr, fileName, jmolApp, windowName, allowAppend){ +if (J.dialog.Dialog.openChooser == null) { +J.dialog.Dialog.openChooser = new J.dialog.FileChooser(); +var temp = javax.swing.UIManager.get("FileChooser.fileNameLabelText"); +javax.swing.UIManager.put("FileChooser.fileNameLabelText", J.i18n.GT.$("File or URL:")); +J.dialog.Dialog.getXPlatformLook(J.dialog.Dialog.openChooser); +javax.swing.UIManager.put("FileChooser.fileNameLabelText", temp); +}if (this.openPreview == null && (vwr.isApplet || Boolean.$valueOf(System.getProperty("openFilePreview", "true")).booleanValue())) { +this.openPreview = new J.dialog.FilePreview(vwr, J.dialog.Dialog.openChooser, allowAppend, vwrOptions); +}if (jmolApp != null) { +var dim = jmolApp.getHistoryWindowSize(windowName); +if (dim != null) J.dialog.Dialog.openChooser.setDialogSize(dim); +var loc = jmolApp.getHistoryWindowPosition(windowName); +if (loc != null) J.dialog.Dialog.openChooser.setDialogLocation(loc); +}J.dialog.Dialog.openChooser.resetChoosableFileFilters(); +if (this.openPreview != null) this.openPreview.setPreviewOptions(allowAppend); +if (fileName != null) { +var pt = fileName.lastIndexOf("."); +var sType = fileName.substring(pt + 1); +if (pt >= 0 && sType.length > 0) J.dialog.Dialog.openChooser.addChoosableFileFilter( new J.dialog.Dialog.TypeFilter(sType)); +if (fileName.indexOf(".") == 0) fileName = "Jmol" + fileName; +if (fileName.length > 0) J.dialog.Dialog.openChooser.setSelectedFile( new java.io.File(fileName)); +}if (fileName == null || fileName.indexOf(":") < 0 && fileName.indexOf("/") != 0) { +var dir = JV.FileManager.getLocalDirectory(vwr, true); +J.dialog.Dialog.openChooser.setCurrentDirectory(dir); +}var file = null; +if (J.dialog.Dialog.openChooser.showOpenDialog(this) == 0) file = J.dialog.Dialog.openChooser.getSelectedFile(); +if (file == null) return this.closePreview(); +if (jmolApp != null) jmolApp.addHistoryWindowInfo(windowName, J.dialog.Dialog.openChooser.getDialog(), null); +var url = vwr.getLocalUrl(file.getAbsolutePath()); +if (url != null) { +fileName = url; +} else { +JV.FileManager.setLocalPath(vwr, file.getParent(), true); +fileName = file.getAbsolutePath(); +}if (fileName.startsWith("/")) fileName = "file://" + fileName; +var doCartoons = (jmolApp == null || allowAppend && this.openPreview != null && this.openPreview.isCartoonsSelected()); +var doAppend = (allowAppend && !JV.FileManager.isScriptType(fileName) && this.openPreview != null && this.openPreview.isAppendSelected()); +this.closePreview(); +return (doCartoons ? "" : "#NOCARTOONS#;") + (doAppend ? "#APPEND#;" : "") + fileName; +}, "java.util.Map,JV.Viewer,~S,J.api.JmolAppAPI,~S,~B"); +Clazz.defineMethod(c$, "closePreview", +function(){ +if (this.openPreview != null) this.openPreview.doUpdatePreview(null); +return null; +}); +Clazz.overrideMethod(c$, "getSaveFileNameFromDialog", +function(vwr, fileName, type){ +if (J.dialog.Dialog.saveChooser == null) { +J.dialog.Dialog.saveChooser = new javax.swing.JFileChooser(); +J.dialog.Dialog.getXPlatformLook(J.dialog.Dialog.saveChooser); +}J.dialog.Dialog.saveChooser.setCurrentDirectory(JV.FileManager.getLocalDirectory(vwr, true)); +var file = null; +J.dialog.Dialog.saveChooser.resetChoosableFileFilters(); +if (fileName != null) { +var pt = fileName.lastIndexOf("."); +var sType = fileName.substring(pt + 1); +if (pt >= 0 && sType.length > 0) J.dialog.Dialog.saveChooser.addChoosableFileFilter( new J.dialog.Dialog.TypeFilter(sType)); +if (fileName.equals("*")) fileName = vwr.getModelSetFileName(); +if (fileName.indexOf(".") == 0) fileName = "Jmol" + fileName; +file = new java.io.File(fileName); +}if (type != null) J.dialog.Dialog.saveChooser.addChoosableFileFilter( new J.dialog.Dialog.TypeFilter(type)); +J.dialog.Dialog.saveChooser.setSelectedFile(file); +if ((file = this.showSaveDialog(this, J.dialog.Dialog.saveChooser, file)) == null) return null; +JV.FileManager.setLocalPath(vwr, file.getParent(), true); +return file.getAbsolutePath(); +}, "JV.Viewer,~S,~S"); +Clazz.overrideMethod(c$, "getImageFileNameFromDialog", +function(vwr, fileName, type, imageChoices, imageExtensions, qualityJPG0, qualityPNG0){ +if (qualityJPG0 < 0 || qualityJPG0 > 100) qualityJPG0 = J.dialog.Dialog.qualityJPG; +if (qualityPNG0 < 0) qualityPNG0 = J.dialog.Dialog.qualityPNG; +if (qualityPNG0 > 9) qualityPNG0 = 2; +J.dialog.Dialog.qualityJPG = qualityJPG0; +J.dialog.Dialog.qualityPNG = qualityPNG0; +if (this.extension == null) this.extension = "jpg"; +if (J.dialog.Dialog.imageChooser == null) { +J.dialog.Dialog.imageChooser = new javax.swing.JFileChooser(); +J.dialog.Dialog.getXPlatformLook(J.dialog.Dialog.imageChooser); +}J.dialog.Dialog.imageChooser.setCurrentDirectory(JV.FileManager.getLocalDirectory(vwr, true)); +J.dialog.Dialog.imageChooser.resetChoosableFileFilters(); +var file = null; +if (fileName == null) { +fileName = vwr.getModelSetFileName(); +if (fileName.indexOf("?") >= 0) fileName = fileName.substring(0, fileName.indexOf("?")); +var pathName = J.dialog.Dialog.imageChooser.getCurrentDirectory().getPath(); +if (fileName != null && pathName != null) { +var extensionStart = fileName.lastIndexOf('.'); +if (extensionStart != -1) { +fileName = fileName.substring(0, extensionStart) + "." + this.extension; +}file = new java.io.File(pathName, fileName); +}} else { +if (fileName.indexOf(".") == 0) fileName = "Jmol" + fileName; +file = new java.io.File(fileName); +type = fileName.substring(fileName.lastIndexOf(".") + 1); +for (var i = 0; i < imageExtensions.length; i++) if (type.equals(imageChoices[i]) || type.toLowerCase().equals(imageExtensions[i])) { +type = imageChoices[i]; +break; +} +}this.createExportPanel(imageChoices, imageExtensions, type); +J.dialog.Dialog.imageChooser.setSelectedFile(this.initialFile = file); +if ((file = this.showSaveDialog(this, J.dialog.Dialog.imageChooser, file)) == null) return null; +J.dialog.Dialog.qualityJPG = this.qSliderJPEG.getValue(); +J.dialog.Dialog.qualityPNG = this.qSliderPNG.getValue(); +if (this.cb.getSelectedIndex() >= 0) J.dialog.Dialog.defaultChoice = this.cb.getSelectedIndex(); +JV.FileManager.setLocalPath(vwr, file.getParent(), true); +return file.getAbsolutePath(); +}, "JV.Viewer,~S,~S,~A,~A,~N,~N"); +Clazz.defineMethod(c$, "createExportPanel", +function(choices, extensions, type){ +J.dialog.Dialog.imageChooser.setAccessory(this); +this.setLayout( new java.awt.BorderLayout()); +if (type == null || type.equals("JPG")) type = "JPEG"; +for (J.dialog.Dialog.defaultChoice = choices.length; --J.dialog.Dialog.defaultChoice >= 1; ) if (choices[J.dialog.Dialog.defaultChoice].equals(type)) break; + +this.extension = extensions[J.dialog.Dialog.defaultChoice]; +this.choice = choices[J.dialog.Dialog.defaultChoice]; +this.extensions = extensions; +J.dialog.Dialog.imageChooser.resetChoosableFileFilters(); +J.dialog.Dialog.imageChooser.addChoosableFileFilter( new J.dialog.Dialog.TypeFilter(this.extension)); +var cbPanel = new javax.swing.JPanel(); +cbPanel.setLayout( new java.awt.FlowLayout()); +cbPanel.setBorder( new javax.swing.border.TitledBorder(J.i18n.GT.$("Image Type"))); +this.cb = new javax.swing.JComboBox(); +for (var i = 0; i < choices.length; i++) { +this.cb.addItem(choices[i]); +} +cbPanel.add(this.cb); +this.cb.setSelectedIndex(J.dialog.Dialog.defaultChoice); +this.cb.addItemListener(Clazz.innerTypeInstance(J.dialog.Dialog.ExportChoiceListener, this, null)); +this.add(cbPanel, "North"); +var qPanel2 = new javax.swing.JPanel(); +qPanel2.setLayout( new java.awt.BorderLayout()); +this.qPanelJPEG = new javax.swing.JPanel(); +this.qPanelJPEG.setLayout( new java.awt.BorderLayout()); +this.qPanelJPEG.setBorder( new javax.swing.border.TitledBorder(J.i18n.GT.i(J.i18n.GT.$("JPEG Quality ({0})"), J.dialog.Dialog.qualityJPG))); +this.qSliderJPEG = new javax.swing.JSlider(0, 50, 100, J.dialog.Dialog.qualityJPG); +this.qSliderJPEG.putClientProperty("JSlider.isFilled", Boolean.TRUE); +this.qSliderJPEG.setPaintTicks(true); +this.qSliderJPEG.setMajorTickSpacing(10); +this.qSliderJPEG.setPaintLabels(true); +this.qSliderJPEG.addChangeListener(Clazz.innerTypeInstance(J.dialog.Dialog.QualityListener, this, null, true, this.qSliderJPEG)); +this.qPanelJPEG.add(this.qSliderJPEG, "South"); +qPanel2.add(this.qPanelJPEG, "North"); +this.qPanelPNG = new javax.swing.JPanel(); +this.qPanelPNG.setLayout( new java.awt.BorderLayout()); +this.qPanelPNG.setBorder( new javax.swing.border.TitledBorder(J.i18n.GT.i(J.i18n.GT.$("PNG Compression ({0})"), J.dialog.Dialog.qualityPNG))); +this.qSliderPNG = new javax.swing.JSlider(0, 0, 9, J.dialog.Dialog.qualityPNG); +this.qSliderPNG.putClientProperty("JSlider.isFilled", Boolean.TRUE); +this.qSliderPNG.setPaintTicks(true); +this.qSliderPNG.setMajorTickSpacing(2); +this.qSliderPNG.setPaintLabels(true); +this.qSliderPNG.addChangeListener(Clazz.innerTypeInstance(J.dialog.Dialog.QualityListener, this, null, false, this.qSliderPNG)); +this.qPanelPNG.add(this.qSliderPNG, "South"); +qPanel2.add(this.qPanelPNG, "South"); +this.add(qPanel2, "South"); +}, "~A,~A,~S"); +Clazz.overrideMethod(c$, "getType", +function(){ +return this.choice; +}); +Clazz.overrideMethod(c$, "getQuality", +function(sType){ +return (sType.equals("JPEG") || sType.equals("JPG") ? J.dialog.Dialog.qualityJPG : sType.equals("PNG") ? J.dialog.Dialog.qualityPNG : -1); +}, "~S"); +c$.doOverWrite = Clazz.defineMethod(c$, "doOverWrite", +function(chooser, file){ +var options = Clazz.newArray(-1, [J.i18n.GT.$("Yes"), J.i18n.GT.$("No")]); +var opt = javax.swing.JOptionPane.showOptionDialog(chooser, J.i18n.GT.o(J.i18n.GT.$("Do you want to overwrite file {0}?"), file.getAbsolutePath()), J.i18n.GT.$("Warning"), -1, 2, null, options, options[0]); +return (opt == 0); +}, "javax.swing.JFileChooser,java.io.File"); +Clazz.defineMethod(c$, "showSaveDialog", +function(c, chooser, file){ +while (true) { +if (chooser.showSaveDialog(c) != 0) return null; +if (this.cb != null && this.cb.getSelectedIndex() >= 0) J.dialog.Dialog.defaultChoice = this.cb.getSelectedIndex(); +if ((file = chooser.getSelectedFile()) == null || !file.exists() || J.dialog.Dialog.doOverWrite(chooser, file)) return file; +} +}, "java.awt.Component,javax.swing.JFileChooser,java.io.File"); +Clazz.overrideMethod(c$, "setupUI", +function(forceNewTranslation){ +if (forceNewTranslation || !J.dialog.Dialog.haveTranslations) J.dialog.Dialog.setupUIManager(); +J.dialog.Dialog.haveTranslations = true; +}, "~B"); +c$.setupUIManager = Clazz.defineMethod(c$, "setupUIManager", +function(){ +javax.swing.UIManager.put("FileChooser.acceptAllFileFilterText", J.i18n.GT.$("All Files")); +javax.swing.UIManager.put("FileChooser.cancelButtonText", J.i18n.GT.$("Cancel")); +javax.swing.UIManager.put("FileChooser.cancelButtonToolTipText", J.i18n.GT.$("Abort file chooser dialog")); +javax.swing.UIManager.put("FileChooser.detailsViewButtonAccessibleName", J.i18n.GT.$("Details")); +javax.swing.UIManager.put("FileChooser.detailsViewButtonToolTipText", J.i18n.GT.$("Details")); +javax.swing.UIManager.put("FileChooser.directoryDescriptionText", J.i18n.GT.$("Directory")); +javax.swing.UIManager.put("FileChooser.directoryOpenButtonText", J.i18n.GT.$("Open")); +javax.swing.UIManager.put("FileChooser.directoryOpenButtonToolTipText", J.i18n.GT.$("Open selected directory")); +javax.swing.UIManager.put("FileChooser.fileAttrHeaderText", J.i18n.GT.$("Attributes")); +javax.swing.UIManager.put("FileChooser.fileDateHeaderText", J.i18n.GT.$("Modified")); +javax.swing.UIManager.put("FileChooser.fileDescriptionText", J.i18n.GT.$("Generic File")); +javax.swing.UIManager.put("FileChooser.fileNameHeaderText", J.i18n.GT.$("Name")); +javax.swing.UIManager.put("FileChooser.fileNameLabelText", J.i18n.GT.$("File Name:")); +javax.swing.UIManager.put("FileChooser.fileSizeHeaderText", J.i18n.GT.$("Size")); +javax.swing.UIManager.put("FileChooser.filesOfTypeLabelText", J.i18n.GT.$("Files of Type:")); +javax.swing.UIManager.put("FileChooser.fileTypeHeaderText", J.i18n.GT.$("Type")); +javax.swing.UIManager.put("FileChooser.helpButtonText", J.i18n.GT.$("Help")); +javax.swing.UIManager.put("FileChooser.helpButtonToolTipText", J.i18n.GT.$("FileChooser help")); +javax.swing.UIManager.put("FileChooser.homeFolderAccessibleName", J.i18n.GT.$("Home")); +javax.swing.UIManager.put("FileChooser.homeFolderToolTipText", J.i18n.GT.$("Home")); +javax.swing.UIManager.put("FileChooser.listViewButtonAccessibleName", J.i18n.GT.$("List")); +javax.swing.UIManager.put("FileChooser.listViewButtonToolTipText", J.i18n.GT.$("List")); +javax.swing.UIManager.put("FileChooser.lookInLabelText", J.i18n.GT.$("Look In:")); +javax.swing.UIManager.put("FileChooser.newFolderErrorText", J.i18n.GT.$("Error creating new folder")); +javax.swing.UIManager.put("FileChooser.newFolderAccessibleName", J.i18n.GT.$("New Folder")); +javax.swing.UIManager.put("FileChooser.newFolderToolTipText", J.i18n.GT.$("Create New Folder")); +javax.swing.UIManager.put("FileChooser.openButtonText", J.i18n.GT.$("Open")); +javax.swing.UIManager.put("FileChooser.openButtonToolTipText", J.i18n.GT.$("Open selected file")); +javax.swing.UIManager.put("FileChooser.openDialogTitleText", J.i18n.GT.$("Open")); +javax.swing.UIManager.put("FileChooser.saveButtonText", J.i18n.GT.$("Save")); +javax.swing.UIManager.put("FileChooser.saveButtonToolTipText", J.i18n.GT.$("Save selected file")); +javax.swing.UIManager.put("FileChooser.saveDialogTitleText", J.i18n.GT.$("Save")); +javax.swing.UIManager.put("FileChooser.saveInLabelText", J.i18n.GT.$("Save In:")); +javax.swing.UIManager.put("FileChooser.updateButtonText", J.i18n.GT.$("Update")); +javax.swing.UIManager.put("FileChooser.updateButtonToolTipText", J.i18n.GT.$("Update directory listing")); +javax.swing.UIManager.put("FileChooser.upFolderAccessibleName", J.i18n.GT.$("Up")); +javax.swing.UIManager.put("FileChooser.upFolderToolTipText", J.i18n.GT.$("Up One Level")); +javax.swing.UIManager.put("OptionPane.cancelButtonText", J.i18n.GT.$("Cancel")); +javax.swing.UIManager.put("OptionPane.noButtonText", J.i18n.GT.$("No")); +javax.swing.UIManager.put("OptionPane.okButtonText", J.i18n.GT.$("OK")); +javax.swing.UIManager.put("OptionPane.yesButtonText", J.i18n.GT.$("Yes")); +}); +c$.getXPlatformLook = Clazz.defineMethod(c$, "getXPlatformLook", +function(fc){ +if (J.dialog.Dialog.isMac) { +var lnf = javax.swing.UIManager.getLookAndFeel(); +if (lnf.isNativeLookAndFeel()) { +try { +javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getCrossPlatformLookAndFeelClassName()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e.getMessage()); +} else { +throw e; +} +} +fc.updateUI(); +try { +javax.swing.UIManager.setLookAndFeel(lnf); +} catch (e) { +if (Clazz.exceptionOf(e,"javax.swing.UnsupportedLookAndFeelException")){ +System.out.println(e.getMessage()); +} else { +throw e; +} +} +}} else { +fc.updateUI(); +}}, "javax.swing.JFileChooser"); +Clazz.overrideMethod(c$, "setImageInfo", +function(qualityJPG, qualityPNG, imageType){ +this.qualityJ = qualityJPG; +this.qualityP = qualityPNG; +this.imageType = imageType; +}, "~N,~N,~S"); +Clazz.overrideMethod(c$, "getFileNameFromDialog", +function(v, dType, iFileName){ +this.vwr = v; +this.dialogType = dType; +this.inputFileName = iFileName; +this.outputFileName = null; +try { +javax.swing.SwingUtilities.invokeAndWait(((Clazz.isClassDefined("J.dialog.Dialog$1") ? 0 : J.dialog.Dialog.$Dialog$1$ ()), Clazz.innerTypeInstance(J.dialog.Dialog$1, this, null))); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error(e.getMessage()); +} else { +throw e; +} +} +return this.outputFileName; +}, "JV.Viewer,~S,~S"); +c$.$Dialog$QualityListener$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.isJPEG = false; +this.slider = null; +Clazz.instantialize(this, arguments);}, J.dialog.Dialog, "QualityListener", null, javax.swing.event.ChangeListener); +Clazz.makeConstructor(c$, +function(isJPEG, slider){ +this.isJPEG = isJPEG; +this.slider = slider; +}, "~B,javax.swing.JSlider"); +Clazz.overrideMethod(c$, "stateChanged", +function(arg0){ +var value = this.slider.getValue(); +if (this.isJPEG) { +J.dialog.Dialog.qualityJPG = value; +this.b$["J.dialog.Dialog"].qPanelJPEG.setBorder( new javax.swing.border.TitledBorder(J.i18n.GT.i(J.i18n.GT.$("JPEG Quality ({0})"), value))); +} else { +J.dialog.Dialog.qualityPNG = value; +this.b$["J.dialog.Dialog"].qPanelPNG.setBorder( new javax.swing.border.TitledBorder(J.i18n.GT.i(J.i18n.GT.$("PNG Quality ({0})"), value))); +}}, "javax.swing.event.ChangeEvent"); +/*eoif4*/})(); +}; +c$.$Dialog$ExportChoiceListener$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +Clazz.instantialize(this, arguments);}, J.dialog.Dialog, "ExportChoiceListener", null, java.awt.event.ItemListener); +Clazz.overrideMethod(c$, "itemStateChanged", +function(e){ +var source = e.getSource(); +var selectedFile = J.dialog.Dialog.imageChooser.getSelectedFile(); +if (selectedFile == null) selectedFile = this.b$["J.dialog.Dialog"].initialFile; +var newFile = null; +var name; +var newExt = this.b$["J.dialog.Dialog"].extensions[source.getSelectedIndex()]; +if ((name = selectedFile.getName()) != null && name.endsWith("." + this.b$["J.dialog.Dialog"].extension)) { +name = name.substring(0, name.length - this.b$["J.dialog.Dialog"].extension.length); +name += newExt; +this.b$["J.dialog.Dialog"].initialFile = newFile = new java.io.File(selectedFile.getParent(), name); +}this.b$["J.dialog.Dialog"].extension = newExt; +J.dialog.Dialog.imageChooser.resetChoosableFileFilters(); +J.dialog.Dialog.imageChooser.addChoosableFileFilter( new J.dialog.Dialog.TypeFilter(this.b$["J.dialog.Dialog"].extension)); +if (newFile != null) J.dialog.Dialog.imageChooser.setSelectedFile(newFile); +this.b$["J.dialog.Dialog"].choice = source.getSelectedItem(); +}, "java.awt.event.ItemEvent"); +/*eoif4*/})(); +}; +c$.$Dialog$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(J.dialog, "Dialog$1", null, Runnable); +Clazz.overrideMethod(c$, "run", +function(){ +if (this.b$["J.dialog.Dialog"].dialogType.equals("Load")) { +this.b$["J.dialog.Dialog"].outputFileName = this.b$["J.dialog.Dialog"].getOpenFileNameFromDialog(this.b$["J.dialog.Dialog"].vwr.vwrOptions, this.b$["J.dialog.Dialog"].vwr, this.b$["J.dialog.Dialog"].inputFileName, null, null, false); +return; +}if (this.b$["J.dialog.Dialog"].dialogType.equals("Save")) { +this.b$["J.dialog.Dialog"].outputFileName = this.b$["J.dialog.Dialog"].getSaveFileNameFromDialog(this.b$["J.dialog.Dialog"].vwr, this.b$["J.dialog.Dialog"].inputFileName, null); +return; +}if (this.b$["J.dialog.Dialog"].dialogType.startsWith("Save Image")) { +this.b$["J.dialog.Dialog"].outputFileName = this.b$["J.dialog.Dialog"].getImageFileNameFromDialog(this.b$["J.dialog.Dialog"].vwr, this.b$["J.dialog.Dialog"].inputFileName, this.b$["J.dialog.Dialog"].imageType, this.b$["J.dialog.Dialog"].imageChoices, this.b$["J.dialog.Dialog"].imageExtensions, this.b$["J.dialog.Dialog"].qualityJ, this.b$["J.dialog.Dialog"].qualityP); +return; +}this.b$["J.dialog.Dialog"].outputFileName = null; +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.thisType = null; +Clazz.instantialize(this, arguments);}, J.dialog.Dialog, "TypeFilter", javax.swing.filechooser.FileFilter); +Clazz.makeConstructor(c$, +function(type){ +Clazz.superConstructor (this, J.dialog.Dialog.TypeFilter, []); +this.thisType = type.toLowerCase(); +}, "~S"); +Clazz.overrideMethod(c$, "accept", +function(f){ +if (f.isDirectory() || this.thisType == null) { +return true; +}var ext = f.getName(); +var pt = ext.lastIndexOf("."); +return (pt >= 0 && ext.substring(pt + 1).toLowerCase().equals(this.thisType)); +}, "java.io.File"); +Clazz.overrideMethod(c$, "getDescription", +function(){ +return this.thisType.toUpperCase() + " (*." + this.thisType + ")"; +}); +/*eoif3*/})(); +c$.defaultChoice = 0; +c$.qualityJPG = 75; +c$.qualityPNG = 2; +c$.imageChooser = null; +c$.saveChooser = null; +c$.openChooser = null; +c$.haveTranslations = false; +c$.isMac = System.getProperty("os.name", "").startsWith("Mac"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/dialog/FileChooser.js b/config/plugins/visualizations/jmol/static/j2s/J/dialog/FileChooser.js new file mode 100755 index 000000000000..2a86d8be3ba0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/dialog/FileChooser.js @@ -0,0 +1,31 @@ +Clazz.declarePackage("J.dialog"); +Clazz.load(["javax.swing.JFileChooser"], "J.dialog.FileChooser", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dialogLocation = null; +this.dialogSize = null; +this.$dialog = null; +Clazz.instantialize(this, arguments);}, J.dialog, "FileChooser", javax.swing.JFileChooser); +Clazz.defineMethod(c$, "createDialog", +function(parent){ +this.$dialog = Clazz.superCall(this, J.dialog.FileChooser, "createDialog", [parent]); +if (this.$dialog != null) { +if (this.dialogLocation != null) { +this.$dialog.setLocation(this.dialogLocation); +}if (this.dialogSize != null) { +this.$dialog.setSize(this.dialogSize); +}}return this.$dialog; +}, "java.awt.Component"); +Clazz.defineMethod(c$, "setDialogLocation", +function(p){ +this.dialogLocation = p; +}, "java.awt.Point"); +Clazz.defineMethod(c$, "setDialogSize", +function(d){ +this.dialogSize = d; +}, "java.awt.Dimension"); +Clazz.defineMethod(c$, "getDialog", +function(){ +return this.$dialog; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/dialog/FilePreview.js b/config/plugins/visualizations/jmol/static/j2s/J/dialog/FilePreview.js new file mode 100755 index 000000000000..72f1fe9e38f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/dialog/FilePreview.js @@ -0,0 +1,125 @@ +Clazz.declarePackage("J.dialog"); +Clazz.load(["java.beans.PropertyChangeListener", "javax.swing.JPanel", ], "J.dialog.FilePreview", ["JU.PT", "javax.swing.Box", "$.JCheckBox", "J.i18n.GT", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.active = null; +this.append = null; +this.cartoons = null; +this.chooser = null; +this.display = null; +this.vwr = null; +Clazz.instantialize(this, arguments);}, J.dialog, "FilePreview", javax.swing.JPanel, java.beans.PropertyChangeListener); +Clazz.makeConstructor(c$, +function(vwr, fileChooser, allowAppend, vwrOptions){ +Clazz.superConstructor(this, J.dialog.FilePreview); +this.vwr = vwr; +this.chooser = fileChooser; +var box = javax.swing.Box.createVerticalBox(); +this.active = new javax.swing.JCheckBox(J.i18n.GT.$("Preview"), false); +this.active.addActionListener(((Clazz.isClassDefined("J.dialog.FilePreview$1") ? 0 : J.dialog.FilePreview.$FilePreview$1$ ()), Clazz.innerTypeInstance(J.dialog.FilePreview$1, this, null))); +box.add(this.active); +this.display = new J.dialog.FilePreview.FPPanel(vwrOptions); +this.display.setPreferredSize( new java.awt.Dimension(80, 80)); +this.display.setMinimumSize( new java.awt.Dimension(50, 50)); +box.add(this.display); +if (allowAppend) { +this.append = new javax.swing.JCheckBox(J.i18n.GT.$("Append models"), false); +box.add(this.append); +this.cartoons = new javax.swing.JCheckBox(J.i18n.GT.$("PDB cartoons"), J.dialog.FilePreview.pdbCartoonChecked); +this.cartoons.addActionListener(((Clazz.isClassDefined("J.dialog.FilePreview$2") ? 0 : J.dialog.FilePreview.$FilePreview$2$ ()), Clazz.innerTypeInstance(J.dialog.FilePreview$2, this, null))); +box.add(this.cartoons); +}this.add(box); +fileChooser.setAccessory(this); +fileChooser.addPropertyChangeListener(this); +}, "JV.Viewer,javax.swing.JFileChooser,~B,java.util.Map"); +Clazz.defineMethod(c$, "doPreviewAction", +function(selected){ +this.doUpdatePreview(selected ? this.chooser.getSelectedFile() : null); +}, "~B"); +Clazz.defineMethod(c$, "isAppendSelected", +function(){ +return (this.append != null && this.append.isSelected()); +}); +Clazz.defineMethod(c$, "isCartoonsSelected", +function(){ +return J.dialog.FilePreview.pdbCartoonChecked = (this.cartoons != null && this.cartoons.isSelected()); +}); +Clazz.overrideMethod(c$, "propertyChange", +function(evt){ +if (this.active.isSelected()) { +var prop = evt.getPropertyName(); +if ("SelectedFileChangedProperty".equals(prop)) { +this.doUpdatePreview(evt.getNewValue()); +}}}, "java.beans.PropertyChangeEvent"); +Clazz.defineMethod(c$, "doUpdatePreview", +function(file){ +var script; +if (file == null) { +script = "zap"; +} else { +var fileName = file.getAbsolutePath(); +var url = this.vwr.getLocalUrl(fileName); +if (url != null) fileName = url; +fileName = fileName.$replace('\\', '/'); +script = " \"" + fileName + "\""; +if (fileName.indexOf(".spt") >= 0) { +script = "script " + script; +} else { +script = JU.PT.rep(this.display.vwr.getP("defaultdropscript"), "\"%FILE\"", script + " 1"); +script = JU.PT.rep(script, "%ALLOWCARTOONS", "" + (this.isCartoonsSelected() && !this.isAppendSelected())); +System.out.println(script); +}}this.display.vwr.evalStringQuiet(script); +}, "java.io.File"); +Clazz.defineMethod(c$, "setPreviewOptions", +function(TF){ +if (this.append == null) return; +this.append.setVisible(TF); +this.cartoons.setVisible(TF); +}, "~B"); +c$.$FilePreview$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(J.dialog, "FilePreview$1", null, java.awt.event.ActionListener); +Clazz.overrideMethod(c$, "actionPerformed", +function(e){ +this.b$["J.dialog.FilePreview"].doPreviewAction(this.b$["J.dialog.FilePreview"].active.isSelected()); +}, "java.awt.event.ActionEvent"); +/*eoif5*/})(); +}; +c$.$FilePreview$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(J.dialog, "FilePreview$2", null, java.awt.event.ActionListener); +Clazz.overrideMethod(c$, "actionPerformed", +function(e){ +if (this.b$["J.dialog.FilePreview"].active.isSelected()) { +this.b$["J.dialog.FilePreview"].doUpdatePreview(this.b$["J.dialog.FilePreview"].chooser.getSelectedFile()); +}}, "java.awt.event.ActionEvent"); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.currentSize = null; +Clazz.instantialize(this, arguments);}, J.dialog.FilePreview, "FPPanel", javax.swing.JPanel); +Clazz.prepareFields (c$, function(){ +this.currentSize = new java.awt.Dimension(); +}); +Clazz.makeConstructor(c$, +function(info){ +Clazz.superConstructor (this, J.dialog.FilePreview.FPPanel, []); +info.put("previewOnly", Boolean.TRUE); +var display = info.get("display"); +info.put("display", this); +this.vwr = new JV.Viewer(info); +info.put("display", display); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "paint", +function(g){ +this.getSize(this.currentSize); +this.vwr.setScreenDimension(this.currentSize.width, this.currentSize.height); +var rectClip = new java.awt.Rectangle(); +g.getClipBounds(rectClip); +this.vwr.renderScreenImage(g, this.currentSize.width, this.currentSize.height); +}, "java.awt.Graphics"); +/*eoif3*/})(); +c$.pdbCartoonChecked = true; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/dssx/AnnotationParser.js b/config/plugins/visualizations/jmol/static/j2s/J/dssx/AnnotationParser.js new file mode 100755 index 000000000000..8c4e5414c9f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/dssx/AnnotationParser.js @@ -0,0 +1,429 @@ +Clazz.declarePackage("J.dssx"); +Clazz.load(["J.api.JmolAnnotationParser"], "J.dssx.AnnotationParser", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.PT", "$.SB", "JM.Group", "JM.BioResolver", "JS.SV", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz.declareType(J.dssx, "AnnotationParser", null, J.api.JmolAnnotationParser); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "getAnnotationKVPairs", +function(a, match, dotPath, sb, pre, showDetail, isMappingOnly, type){ +var map = a.getMap(); +if (map == null || map.isEmpty()) return; +if (map.containsKey("_map")) map = map.get("_map").getMap(); +var detailKey = this.getDataKey(type); +if (showDetail && map.containsKey(detailKey)) { +if (match == null || dotPath.indexOf(match) >= 0) sb.append(map.get(detailKey).asString()).append("\n"); +return; +}for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +if (key.equals(detailKey)) continue; +if (key.equals("metadata")) sb.append("\n"); +var val = e.getValue(); +if (val.tok == 6) { +if (type == 1073742189 && !showDetail) { +sb.append(key).append("\n"); +} else { +this.getAnnotationKVPairs(val, match, (dotPath.length == 0 ? "" : dotPath + ".") + key, sb, (pre.length == 0 ? "" : pre + "\t") + key, showDetail, isMappingOnly, type); +}} else { +var s = val.asString(); +if (match == null || s.indexOf(match) >= 0 || pre.indexOf(match) >= 0 || key.indexOf(match) >= 0 || dotPath.indexOf(match) >= 0) { +if (showDetail && isMappingOnly) continue; +if (pre.length > 0) sb.append(pre).append("\t"); +sb.append(key).append("="); +sb.append(s).append("\n"); +}}} +}, "JS.SV,~S,~S,JU.SB,~S,~B,~B,~N"); +Clazz.defineMethod(c$, "getDataKey", +function(type){ +switch (type) { +case 1073741925: +return "mappings"; +case 1073742189: +return "outliers"; +} +return null; +}, "~N"); +Clazz.overrideMethod(c$, "catalogStructureUnits", +function(viewer, map0, modelAtomIndices, resMap, object, modelMap){ +var note = "Use within(rna3d, TYPE) where TYPE is one of: "; +var data = map0.getMap(); +if (data == null) return null; +try { +map0.mapPut("_map", JS.SV.newV(6, data)); +var list = new JU.Lst(); +var set = data.entrySet(); +var sv; +var map; +for (var e, $e = set.iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +sv = e.getValue(); +var structures = sv.getList(); +if (structures != null) { +var key = e.getKey(); +note += "\"" + key + "\" "; +var svPath = JS.SV.newS(key); +for (var j = structures.size(); --j >= 0; ) { +var struc = structures.get(j); +map = struc.getMap(); +sv = map.get("units"); +map.put("_isres", JS.SV.vT); +var units = (sv == null || sv.tok == 7 ? sv.getList() : sv.tok == 4 ? new JU.Lst() : null); +if (units != null) { +if (sv.tok == 4) { +var svl = JU.PT.split(sv.asString(), ","); +for (var i = svl.length; --i >= 0; ) units.addLast(JS.SV.newS(svl[i].trim())); + +}if (units.size() > 0) { +var bsAtoms = new JU.BS(); +map.put("_atoms", JS.SV.getVariable(bsAtoms)); +map.put("_path", svPath); +list.addLast(struc); +for (var k = units.size(); --k >= 0; ) { +this.catalogUnit(viewer, null, units.get(k).asString(), 0, bsAtoms, modelAtomIndices, resMap, null, modelMap); +} +}}} +}} +map0.mapPut("_list", JS.SV.newV(7, list)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info(e + " while cataloging structures"); +return null; +} else { +throw e; +} +} +return note; +}, "JV.Viewer,JS.SV,~A,java.util.Map,~O,java.util.Map"); +Clazz.overrideMethod(c$, "catalogValidations", +function(viewer, map0, modelAtomIndices, resMap, atomMap, modelMap){ +var data = map0.getMap(); +if (data == null) return null; +var retProperties = new JU.Lst(); +var nModels = modelAtomIndices.length - 1; +try { +data = this.getMainItem(data).getMap(); +map0.mapPut("_map", JS.SV.newV(6, data)); +var list = new JU.Lst(); +map0.mapPut("_list", JS.SV.newV(7, list)); +var set = data.entrySet(); +var sv; +var map; +for (var e, $e = set.iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var floats = JU.AU.newFloat2(nModels); +for (var m = nModels; --m >= 0; ) floats[m] = Clazz.newFloatArray (modelAtomIndices[m + 1] - modelAtomIndices[m], 0); + +sv = e.getValue(); +var outliers = sv.getList(); +if (outliers == null) { +map = sv.getMap(); +if (map != null && (sv = map.get("outliers")) != null) outliers = sv.getList(); +}if (outliers != null) { +var hasUnit = false; +var key = e.getKey(); +var svPath = JS.SV.newS(key); +var isRes = false; +for (var j = outliers.size(); --j >= 0; ) { +var out = outliers.get(j); +map = out.getMap(); +sv = map.get("units"); +var svv = map.get("value"); +var val = (svv == null ? 1 : JS.SV.fValue(svv)); +var units = (val == 0 || sv == null || sv.tok == 7 ? sv.getList() : sv.tok == 4 ? new JU.Lst() : null); +if (units != null) { +if (sv.tok == 4) { +var svl = JU.PT.split(sv.asString(), ","); +for (var i = svl.length; --i >= 0; ) units.addLast(JS.SV.newS(svl[i].trim())); + +}if (units.size() > 0) { +var bsAtoms = new JU.BS(); +map.put("_atoms", JS.SV.getVariable(bsAtoms)); +map.put("_path", svPath); +hasUnit = true; +list.addLast(out); +for (var k = units.size(); --k >= 0; ) { +var ret = this.catalogUnit(viewer, floats, units.get(k).asString(), val, bsAtoms, modelAtomIndices, resMap, atomMap, modelMap); +if (ret) map.put("_isres", JS.SV.vT); +isRes = new Boolean (isRes | ret).valueOf(); +} +}}} +if (hasUnit) { +for (var m = nModels; --m >= 0; ) if (floats[m] != null) { +retProperties.addLast(key); +retProperties.addLast(floats[m]); +retProperties.addLast(Integer.$valueOf(m)); +retProperties.addLast(Boolean.$valueOf(isRes)); +} +}}} +return retProperties; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info(e + " while cataloging validations"); +return null; +} else { +throw e; +} +} +}, "JV.Viewer,JS.SV,~A,java.util.Map,java.util.Map,java.util.Map"); +Clazz.defineMethod(c$, "getMainItem", +function(data){ +for (var e, $e = data.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +if (!key.contains("metadata")) return e.getValue(); +} +return null; +}, "java.util.Map"); +Clazz.overrideMethod(c$, "initializeAnnotation", +function(objAnn, type, modelIndex){ +var map = objAnn.getMap(); +var _list = map.get("_list"); +if (_list != null) return _list.getList(); +var dataKey = this.getDataKey(type); +var main = this.getMainItem(map); +map.put("_map", main); +var noSingles = true; +var _cat = new java.util.Hashtable(); +map.put("_cat", JS.SV.newV(6, _cat)); +var list = new JU.Lst(); +map.put("_list", _list = JS.SV.newV(7, list)); +for (var e, $e = main.getMap().entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var _dbName = e.getKey(); +var _dbMap = e.getValue(); +_cat.putAll(_dbMap.getMap()); +for (var e2, $e2 = _dbMap.getMap().entrySet().iterator (); $e2.hasNext()&& ((e2 = $e2.next ()) || true);) { +var _domainName = e2.getKey(); +var _domainMap = e2.getValue(); +var _domainList = _domainMap.mapGet(dataKey); +var _mapList = _domainList.getList(); +for (var i = _mapList.size(); --i >= 0; ) { +var mapping = _mapList.get(i); +list.addLast(mapping); +var mmap = mapping.getMap(); +var _chain = mmap.get("chain_id"); +var start = mmap.get("start"); +var end = mmap.get("end"); +var res1 = 0; +var res2 = 0; +var rescode = "modelIndex=" + modelIndex + "&chain='" + _chain.value + "'"; +if (start != null && end != null) { +res1 = start.mapGet("residue_number").intValue; +res2 = end.mapGet("residue_number").intValue; +rescode += "&seqid>=" + res1 + "&seqid<=" + res2; +} else { +res2 = 1; +rescode += "&seqid>0"; +}var _atoms = (noSingles && res1 >= res2 ? JS.SV.getVariable( new JU.BS()) : _cat.get(rescode)); +if (_atoms == null) _cat.put(rescode, _atoms = JS.SV.newS(rescode)); +mmap.put("_atoms", _atoms); +mmap.put("_path", JS.SV.newS(_dbName + "." + _domainName)); +mmap.put("domain", _domainMap); +} +} +} +return list; +}, "JS.SV,~N,~N"); +Clazz.defineMethod(c$, "findAnnotationAtoms", +function(vwr, name, _list, key, bs){ +if (_list == null) return; +System.out.println("Checking " + name + " for " + key); +var data = vwr.extractProperty(_list, "[" + key + "]", -1); +var list = null; +if (Clazz.instanceOf(data,"JU.Lst")) { +list = data; +} else if (Clazz.instanceOf(data,"JS.SV")) { +list = (data).getList(); +}if (list == null) return; +for (var i = 0, n = list.size(); i < n; i++) { +var o = list.get(i); +var mapping = (Clazz.instanceOf(o,"JS.SV") ? (o).getMap() : o); +if (mapping == null) return; +bs.or(this.setAnnotationAtoms(vwr, mapping, i)); +} +}, "JV.Viewer,~S,JU.Lst,~S,JU.BS"); +Clazz.defineMethod(c$, "setAnnotationAtoms", +function(vwr, mapping, i){ +var _atoms = mapping.get("_atoms"); +if (_atoms.tok != 10) { +var bs2 = vwr.getAtomBitSet(_atoms.value); +if (i >= 0) JU.Logger.info("#" + (i + 1) + " found " + bs2.cardinality() + " atoms for " + _atoms.value); +_atoms.tok = 10; +_atoms.value = bs2; +}return _atoms.value; +}, "JV.Viewer,java.util.Map,~N"); +Clazz.defineMethod(c$, "catalogUnit", +function(viewer, vals, unitID, val, bsAtoms, modelAtomIndices, resMap, atomMap, modelMap){ +var s = JU.PT.split(unitID + (vals == null ? "||||" : "|||"), "|"); +if (s.length < 8 || s[1].length == 0 || s[2].length == 0 || s[3].length == 0 || s[4].length == 0) return false; +var sm = (s[1].length == 0 ? "1" : s[1]); +var m = (modelMap == null ? JU.PT.parseInt(sm) - 1 : -1); +var im = (m >= 0 ? null : modelMap.get(sm)); +if (im != null) m = im.intValue(); +if (m >= modelAtomIndices.length) return false; +var res = s[1] + "_" + viewer.getChainID(s[2], true) + "_" + s[4] + "_" + s[7].toLowerCase(); +var i0 = modelAtomIndices[m]; +var isRes = (atomMap == null || s[5].length == 0); +if (isRes) { +var a2 = resMap.get(res); +if (a2 != null) for (var j = a2[1], j0 = a2[0]; --j >= j0; ) { +bsAtoms.set(i0 + j); +if (vals != null) vals[m][j] += Math.abs(val); +} +} else { +if (s[5].charAt(0) == 'H') s[5] = this.getAttachedAtomForPDBH(s[3], s[5]); +var atom = res + "_" + s[5] + "_" + s[6].toLowerCase(); +var ia = atomMap.get(atom); +if (ia != null) { +var j = ia.intValue(); +bsAtoms.set(i0 + j); +if (vals != null) vals[m][j] += Math.abs(val); +}}return isRes; +}, "JV.Viewer,~A,~S,~N,JU.BS,~A,java.util.Map,java.util.Map,java.util.Map"); +Clazz.overrideMethod(c$, "getAtomBits", +function(vwr, key, dbObj, annotationCache, type, modelIndex, bsModel){ +if (dbObj == null) return new JU.BS(); +var doCache = !key.contains("NOCACHE"); +if (!doCache) { +key = JU.PT.rep(key, "NOCACHE", "").trim(); +}var bs = (doCache ? annotationCache.get(key) : null); +if (bs != null) return bs; +bs = new JU.BS(); +if (doCache) annotationCache.put(key, bs); +try { +var list = this.initializeAnnotation(dbObj, type, modelIndex); +var pt = key.toLowerCase().indexOf(" where "); +var path = JU.PT.rep((pt < 0 ? key : key.substring(0, pt)), " ", ""); +var newKey = (pt < 0 ? "" : key.substring(pt + 7).trim()); +if (path.indexOf(".") < 0) { +path = " _path like '" + path + "*'"; +} else { +path = " _path='" + path + "'"; +}newKey = "select * where " + (pt < 0 ? path : "(" + newKey + ") and (" + path + ")"); +JU.Logger.info("looking for " + newKey); +this.findAnnotationAtoms(vwr, path, list, newKey, bs); +bs.and(bsModel); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e.toString() + " in AnnotationParser"); +bs.clearAll(); +} else { +throw e; +} +} +return bs; +}, "JV.Viewer,~S,~O,java.util.Map,~N,~N,JU.BS"); +Clazz.overrideMethod(c$, "getAtomValidation", +function(vwr, type, atom){ +var i = 0; +var n = 0; +var l = null; +var map = null; +var list = null; +try { +var ia = atom.i; +l = new JU.Lst(); +list = (vwr.ms.getModelAuxiliaryInfo(atom.mi).get("validation")).mapGet("_list").getList(); +for (i = 0, n = list.size(); i < n; i++) { +map = list.get(i).getMap(); +if (map.get("_path").value.equals(type) && (map.get("_atoms").value).get(ia)) { +var v = map.get("value"); +l.addLast(v.tok == 3 ? v.value : Float.$valueOf(v.asFloat())); +}} +return l; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "JV.Viewer,~S,JM.Atom"); +Clazz.overrideMethod(c$, "getAnnotationInfo", +function(vwr, a, match, type, modelIndex){ +var sb = new JU.SB(); +if ("".equals(match)) match = null; +var isDetail = (match != null && (match.equals("all") || match.endsWith(" all"))); +if (isDetail) { +var _list = this.initializeAnnotation(a, type, modelIndex); +for (var i = _list.size(); --i >= 0; ) this.setAnnotationAtoms(vwr, _list.get(i).getMap(), -1); + +match = match.substring(0, Math.max(0, match.length - 4)).trim(); +}if ("".equals(match)) match = null; +if (type == 1073742189 && !isDetail && match == null) return a.mapGet("_note").asString(); +var isMappingOnly = (match != null && match.indexOf(".") >= 0 && match.indexOf(".*") < 0); +match = JU.PT.rep(match, "*", ""); +try { +this.getAnnotationKVPairs(a, match, "", sb, "", isDetail, isMappingOnly, type); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +{ +System.out.println(e); +}} else { +throw e; +} +} +return sb.toString(); +}, "JV.Viewer,JS.SV,~S,~N,~N"); +Clazz.defineMethod(c$, "getAttachedAtomForPDBH", +function(group3, name){ +if (name.charAt(0) == 'H') { +if (J.dssx.AnnotationParser.pdbAtomForH == null) { +J.dssx.AnnotationParser.pdbAtomForH = new java.util.Hashtable(); +this.assignPDBH("", "N H H1 H2 H3 CB HB2 HB3 CD HD2 HD3 CG HG2 HG3 C2' H2'' H2' C5' H5'' H5' OXT HXT"); +for (var i = JM.BioResolver.pdbBondInfo.length; --i >= 1; ) { +this.assignPDBH(JM.Group.group3Names[i], JM.BioResolver.pdbBondInfo[i]); +} +}var a = J.dssx.AnnotationParser.pdbAtomForH.get(name); +if (a == null) a = J.dssx.AnnotationParser.pdbAtomForH.get(group3 + name); +if (a != null) return a; +}return name; +}, "~S,~S"); +Clazz.defineMethod(c$, "assignPDBH", +function(group3, sNames){ +var names = JU.PT.getTokens(JU.PT.rep(sNames, "@", " ")); +var a = null; +for (var i = 0, n = names.length; i < n; i++) { +var s = names[i]; +if (s.charAt(0) != 'H') { +a = s; +continue; +}s = group3 + s; +if (s.indexOf("?") >= 0) { +s = s.substring(0, s.length - 1); +J.dssx.AnnotationParser.pdbAtomForH.put(s + "1", a); +J.dssx.AnnotationParser.pdbAtomForH.put(s + "2", a); +J.dssx.AnnotationParser.pdbAtomForH.put(s + "3", a); +} else { +J.dssx.AnnotationParser.pdbAtomForH.put(s, a); +}} +}, "~S,~S"); +Clazz.overrideMethod(c$, "fixAtoms", +function(modelIndex, dbObj, bsAddedMask, type, margin){ +var _list = this.initializeAnnotation(dbObj, type, modelIndex); +for (var i = _list.size(); --i >= 0; ) { +var m = _list.get(i).getMap(); +var _atoms = m.get("_atoms"); +if (_atoms != null && _atoms.tok == 10) JU.BSUtil.shiftBits(_atoms.value, bsAddedMask, _list.get(i).mapGet("_isres") != null, (_atoms.value).length() + margin); +} +}, "~N,JS.SV,JU.BS,~N,~N"); +Clazz.overrideMethod(c$, "getBasePairs", +function(vwr, modelIndex){ +}, "JV.Viewer,~N"); +Clazz.overrideMethod(c$, "calculateDSSRStructure", +function(vwr, bsAtoms){ +return null; +}, "JV.Viewer,JU.BS"); +Clazz.overrideMethod(c$, "fixDSSRJSONMap", +function(map){ +return null; +}, "java.util.Map"); +Clazz.overrideMethod(c$, "getHBonds", +function(ms, modelIndex, vHBonds, doReport){ +return null; +}, "JM.ModelSet,~N,JU.Lst,~B"); +Clazz.overrideMethod(c$, "getAtomicDSSRData", +function(ms, modelIndex, dssrData, dataType){ +}, "JM.ModelSet,~N,~A,~S"); +Clazz.overrideMethod(c$, "setGroup1", +function(ms, modelIndex){ +}, "JM.ModelSet,~N"); +Clazz.overrideMethod(c$, "getDSSRFrame", +function(dssrNT){ +return null; +}, "java.util.Map"); +c$.pdbAtomForH = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/dssx/Bridge.js b/config/plugins/visualizations/jmol/static/j2s/J/dssx/Bridge.js new file mode 100755 index 000000000000..d19ea4a6edf0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/dssx/Bridge.js @@ -0,0 +1,51 @@ +Clazz.declarePackage("J.dssx"); +Clazz.load(null, "J.dssx.Bridge", ["JU.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.a = null; +this.b = null; +this.ladder = null; +this.isAntiparallel = false; +Clazz.instantialize(this, arguments);}, J.dssx, "Bridge", null); +Clazz.makeConstructor(c$, +function(a, b, htLadders){ +this.a = a; +this.b = b; +this.ladder = Clazz.newIntArray (2, 2, 0); +this.ladder[0][0] = this.ladder[0][1] = Math.min(a.i, b.i); +this.ladder[1][0] = this.ladder[1][1] = Math.max(a.i, b.i); +this.addLadder(htLadders); +}, "JM.Atom,JM.Atom,java.util.Map"); +Clazz.defineMethod(c$, "addBridge", +function(bridge, htLadders){ +if (bridge.isAntiparallel != this.isAntiparallel || !this.canAdd(bridge) || !bridge.canAdd(this)) return false; +this.extendLadder(bridge.ladder[0][0], bridge.ladder[1][0]); +this.extendLadder(bridge.ladder[0][1], bridge.ladder[1][1]); +bridge.ladder = this.ladder; +if (bridge.ladder !== this.ladder) { +htLadders.remove(bridge.ladder); +this.addLadder(htLadders); +}return true; +}, "J.dssx.Bridge,java.util.Map"); +Clazz.defineMethod(c$, "addLadder", +function(htLadders){ +htLadders.put(this.ladder, (this.isAntiparallel ? Boolean.TRUE : Boolean.FALSE)); +}, "java.util.Map"); +Clazz.defineMethod(c$, "canAdd", +function(bridge){ +var index1 = bridge.a.i; +var index2 = bridge.b.i; +return (this.isAntiparallel ? (index1 >= this.ladder[0][1] && index2 <= this.ladder[1][0] || index1 <= this.ladder[0][0] && index2 >= this.ladder[1][1]) : (index1 <= this.ladder[0][0] && index2 <= this.ladder[1][0] || index1 >= this.ladder[0][1] && index2 >= this.ladder[1][1])); +}, "J.dssx.Bridge"); +Clazz.defineMethod(c$, "extendLadder", +function(index1, index2){ +if (this.ladder[0][0] > index1) this.ladder[0][0] = index1; +if (this.ladder[0][1] < index1) this.ladder[0][1] = index1; +if (this.ladder[1][0] > index2) this.ladder[1][0] = index2; +if (this.ladder[1][1] < index2) this.ladder[1][1] = index2; +}, "~N,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return (this.isAntiparallel ? "a " : "p ") + this.a + " - " + this.b + "\t" + JU.Escape.e(this.ladder); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSP.js b/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSP.js new file mode 100755 index 000000000000..d0add9efe685 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSP.js @@ -0,0 +1,366 @@ +Clazz.declarePackage("J.dssx"); +Clazz.load(null, "J.dssx.DSSP", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.PT", "$.SB", "J.c.STR", "J.dssx.Bridge", "J.i18n.GT", "JM.HBond", "JU.Escape", "$.Logger", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bioPolymers = null; +this.vHBonds = null; +this.done = null; +this.doReport = false; +this.dsspIgnoreHydrogens = false; +this.setStructure = false; +this.labels = null; +this.bsBad = null; +this.bioPolymerCount = 0; +this.htBridges = null; +this.htLadders = null; +this.bridgesA = null; +this.bridgesP = null; +this.isDSSP2 = false; +this.sheetOffsets = null; +Clazz.instantialize(this, arguments);}, J.dssx, "DSSP", null); +Clazz.prepareFields (c$, function(){ +this.sheetOffsets = Clazz.newArray(-1, [ Clazz.newIntArray(-1, [0, -1, 1, 0, 1, 0, 0, -1]), Clazz.newIntArray(-1, [0, 0, 0, 0, 1, -1, 1, -1])]); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "calculateDssp", +function(objBioPolymers, bioPolymerCount, objVHBonds, doReport, dsspIgnoreHydrogens, setStructure, version){ +this.bioPolymers = objBioPolymers; +this.bioPolymerCount = bioPolymerCount; +this.vHBonds = objVHBonds; +this.doReport = doReport; +this.dsspIgnoreHydrogens = dsspIgnoreHydrogens; +this.setStructure = setStructure; +this.isDSSP2 = (version > 1); +var bsAmino = new JU.BS(); +for (var i = 0; i < bioPolymerCount; i++) if (Clazz.instanceOf(this.bioPolymers[i],"JM.AminoPolymer")) bsAmino.set(i); + +if (bsAmino.isEmpty()) return ""; +var m = this.bioPolymers[0].model; +var sb = new JU.SB(); +sb.append("Jmol ").append(JV.Viewer.getJmolVersion()).append(" DSSP analysis for model ").append(m.ms.getModelNumberDotted(m.modelIndex)).append(" - ").append(m.ms.getModelTitle(m.modelIndex)).append("\n"); +if (m.modelIndex == 0) sb.append("\nW. Kabsch and C. Sander, Biopolymers, vol 22, 1983, pp 2577-2637\n\nWe thank Wolfgang Kabsch and Chris Sander for writing the DSSP software,\nand we thank the CMBI for maintaining it to the extent that it was easy to\nre-engineer in Java for our purposes. \n\nSecond generation DSSP 2.0 is ").append(this.isDSSP2 ? "" : "NOT ").append("used in this analysis. See Int. J. Mol. Sci. 2014, 15, 7841-7864; doi:10.3390/ijms15057841.\n"); +if (setStructure && m.modelIndex == 0) sb.append("\nAll bioshapes have been deleted and must be regenerated.\n"); +if (m.altLocCount > 0) sb.append("\nNote: This model contains alternative locations. Use 'CONFIGURATION 1' to be consistent with CMBI DSSP.\n"); +this.labels = Clazz.newCharArray (bioPolymerCount, '\0'); +this.done = new Array(bioPolymerCount); +this.bsBad = new JU.BS(); +var haveWarned = false; +for (var i = bsAmino.nextSetBit(0); i >= 0; i = bsAmino.nextSetBit(i + 1)) { +var ap = this.bioPolymers[i]; +if (!haveWarned && (ap.monomers[0]).getExplicitNH() != null) { +if (dsspIgnoreHydrogens) sb.append(J.i18n.GT.o(J.i18n.GT.$("NOTE: Backbone amide hydrogen positions are present and will be ignored. Their positions will be approximated, as in standard DSSP analysis.\nUse {0} to not use this approximation.\n\n"), "SET dsspCalculateHydrogenAlways FALSE")); + else sb.append(J.i18n.GT.o(J.i18n.GT.$("NOTE: Backbone amide hydrogen positions are present and will be used. Results may differ significantly from standard DSSP analysis.\nUse {0} to ignore these hydrogen positions.\n\n"), "SET dsspCalculateHydrogenAlways TRUE")); +haveWarned = true; +}ap.recalculateLeadMidpointsAndWingVectors(); +var n = ap.monomerCount; +this.labels[i] = Clazz.newCharArray (n, '\0'); +this.done[i] = new JU.BS(); +for (var j = 0; j < n; j++) if ((ap.monomers[j]).getCarbonylOxygenAtom() == null) this.bsBad.set(ap.monomers[j].leadAtomIndex); + +} +var min = this.getDualHydrogenBondArray(); +this.bridgesA = new JU.Lst(); +this.bridgesP = new JU.Lst(); +this.htBridges = new java.util.Hashtable(); +this.htLadders = new java.util.Hashtable(); +this.getBridges(min); +this.getSheetStructures(); +var reports = new Array(bioPolymerCount); +for (var i = bsAmino.nextSetBit(0); i >= 0; i = bsAmino.nextSetBit(i + 1)) if (min[i] != null) reports[i] = this.findHelixes(i, min[i]); + +if (doReport) { +var sbSummary = new JU.SB(); +sb.append("\n------------------------------\n"); +for (var i = bsAmino.nextSetBit(0); i >= 0; i = bsAmino.nextSetBit(i + 1)) if (this.labels[i] != null) { +var ap = this.bioPolymers[i]; +sbSummary.append(this.dumpSummary(ap, this.labels[i])); +sb.append(reports[i]).append(this.dumpTags(ap, "$.1: " + String.valueOf(this.labels[i]), this.bsBad, 2)); +} +if (this.bsBad.nextSetBit(0) >= 0) sb.append("\nNOTE: '!' indicates a residue that is missing a backbone carbonyl oxygen atom.\n"); +sb.append("\n").append("SUMMARY:" + sbSummary); +}return sb.toString(); +}, "~A,~N,~O,~B,~B,~B,~N"); +Clazz.defineMethod(c$, "getDualHydrogenBondArray", +function(){ +var min = JU.AU.newInt4(this.bioPolymerCount); +for (var i = 0; i < this.bioPolymerCount; i++) { +if (!(Clazz.instanceOf(this.bioPolymers[i],"JM.AminoPolymer"))) continue; +var n = this.bioPolymers[i].monomerCount; +min[i] = Clazz.newIntArray (n, 2, 3, 0); +for (var j = 0; j < n; ++j) { +min[i][j][0][1] = min[i][j][1][1] = -2147483648; +min[i][j][0][2] = min[i][j][1][2] = 0; +} +} +for (var i = 0; i < this.bioPolymerCount; i++) if (min[i] != null) for (var j = 0; j < this.bioPolymerCount; j++) if (min[j] != null) this.bioPolymers[i].calcRasmolHydrogenBonds(this.bioPolymers[j], null, null, null, 2, min[i], false, this.dsspIgnoreHydrogens); + + +return min; +}); +Clazz.defineMethod(c$, "getBridges", +function(min){ +var atoms = this.bioPolymers[0].model.ms.at; +var bridge = null; +var htTemp = new java.util.Hashtable(); +for (var p1 = 0; p1 < min.length; p1++) if (Clazz.instanceOf(this.bioPolymers[p1],"JM.AminoPolymer")) { +var ap1 = (this.bioPolymers[p1]); +var n = min[p1].length - 1; +for (var a = 1; a < n; a++) { +var ia = ap1.monomers[a].leadAtomIndex; +if (this.bsBad.get(ia)) continue; +for (var p2 = p1; p2 < min.length; p2++) if (Clazz.instanceOf(this.bioPolymers[p2],"JM.AminoPolymer")) for (var b = (p1 == p2 ? a + 3 : 1); b < min[p2].length - 1; b++) { +var ap2 = this.bioPolymers[p2]; +var ib = ap2.monomers[b].leadAtomIndex; +if (this.bsBad.get(ib)) continue; +if ((bridge = this.getBridge(min, p1, a, p2, b, this.bridgesP, atoms[ia], atoms[ib], ap1, ap2, htTemp, false)) != null) { +} else if ((bridge = this.getBridge(min, p1, a, p2, b, this.bridgesA, atoms[ia], atoms[ib], ap1, ap2, htTemp, true)) != null) { +bridge.isAntiparallel = true; +} else { +continue; +}if (JU.Logger.debugging) JU.Logger.debug("Bridge found " + bridge); +this.done[p1].set(a); +this.done[p2].set(b); +this.htBridges.put(ia + "-" + ib, bridge); +} + +} +} +}, "~A"); +Clazz.defineMethod(c$, "getBridge", +function(min, p1, a, p2, b, bridges, atom1, atom2, ap1, ap2, htTemp, isAntiparallel){ +var b1 = null; +var b2 = null; +var ipt = 0; +var offsets = (isAntiparallel ? this.sheetOffsets[1] : this.sheetOffsets[0]); +if ((b1 = this.isHbonded(a + offsets[0], b + offsets[1], p1, p2, min)) != null && (b2 = this.isHbonded(b + offsets[2], a + offsets[3], p2, p1, min)) != null || (b1 = this.isHbonded(a + offsets[ipt = 4], b + offsets[5], p1, p2, min)) != null && (b2 = this.isHbonded(b + offsets[6], a + offsets[7], p2, p1, min)) != null) { +var bridge = new J.dssx.Bridge(atom1, atom2, this.htLadders); +bridges.addLast(bridge); +if (this.vHBonds != null) { +var type = (isAntiparallel ? 14336 : 6144); +this.addHbond(ap1.monomers[a + offsets[ipt]], ap2.monomers[b + offsets[++ipt]], b1[2], type, htTemp); +this.addHbond(ap2.monomers[b + offsets[++ipt]], ap1.monomers[a + offsets[++ipt]], b2[2], type, htTemp); +}return bridge; +}return null; +}, "~A,~N,~N,~N,~N,JU.Lst,JM.Atom,JM.Atom,JM.AminoPolymer,JM.AminoPolymer,java.util.Map,~B"); +Clazz.defineMethod(c$, "addHbond", +function(donor, acceptor, iEnergy, type, htTemp){ +var nitrogen = (donor).getNitrogenAtom(); +var oxygen = (acceptor).getCarbonylOxygenAtom(); +if (htTemp != null) { +var key = nitrogen.i + " " + oxygen.i; +if (htTemp.containsKey(key)) return; +htTemp.put(key, Boolean.TRUE); +}this.vHBonds.addLast( new JM.HBond(nitrogen, oxygen, type, 1, 0, iEnergy / 1000)); +}, "JM.Monomer,JM.Monomer,~N,~N,java.util.Map"); +Clazz.defineMethod(c$, "getSheetStructures", +function(){ +if (this.bridgesA.size() == 0 && this.bridgesP.size() == 0) return; +this.createLadders(this.bridgesA, true); +this.createLadders(this.bridgesP, false); +var bsEEE = new JU.BS(); +var bsB = new JU.BS(); +for (var ladder, $ladder = this.htLadders.keySet().iterator (); $ladder.hasNext()&& ((ladder = $ladder.next ()) || true);) { +if (ladder[0][0] == ladder[0][1] && ladder[1][0] == ladder[1][1]) { +bsB.set(ladder[0][0]); +bsB.set(ladder[1][0]); +} else { +bsEEE.setBits(ladder[0][0], ladder[0][1] + 1); +bsEEE.setBits(ladder[1][0], ladder[1][1] + 1); +}} +var bsSheet = new JU.BS(); +var bsBridge = new JU.BS(); +for (var i = this.bioPolymers.length; --i >= 0; ) { +if (!(Clazz.instanceOf(this.bioPolymers[i],"JM.AminoPolymer"))) continue; +bsSheet.clearAll(); +bsBridge.clearAll(); +var ap = this.bioPolymers[i]; +for (var iStart = 0; iStart < ap.monomerCount; ) { +var index = ap.monomers[iStart].leadAtomIndex; +if (bsEEE.get(index)) { +var iEnd = iStart + 1; +while (iEnd < ap.monomerCount && bsEEE.get(ap.monomers[iEnd].leadAtomIndex)) iEnd++; + +bsSheet.setBits(iStart, iEnd); +iStart = iEnd; +} else { +if (bsB.get(index)) bsBridge.set(iStart); +++iStart; +}} +if (this.doReport) { +this.setTag(this.labels[i], bsBridge, 'B'); +this.setTag(this.labels[i], bsSheet, 'E'); +}if (this.setStructure) { +ap.setStructureBS(0, 3, J.c.STR.SHEET, bsSheet, false); +}this.done[i].or(bsSheet); +this.done[i].or(bsBridge); +} +}); +Clazz.defineMethod(c$, "createLadders", +function(bridges, isAntiparallel){ +var dir = (isAntiparallel ? -1 : 1); +var n = bridges.size(); +for (var i = 0; i < n; i++) this.checkBridge(bridges.get(i), isAntiparallel, 1, dir); + +for (var i = 0; i < n; i++) this.checkBulge(bridges.get(i), isAntiparallel, 1); + +}, "JU.Lst,~B"); +Clazz.defineMethod(c$, "checkBridge", +function(bridge, isAntiparallel, n1, n2){ +var b = this.htBridges.get(bridge.a.getOffsetResidueAtom("\0", n1) + "-" + bridge.b.getOffsetResidueAtom("\0", n2)); +return (b != null && bridge.addBridge(b, this.htLadders)); +}, "J.dssx.Bridge,~B,~N,~N"); +Clazz.defineMethod(c$, "checkBulge", +function(bridge, isAntiparallel, dir){ +var dir1 = (isAntiparallel ? -1 : 1); +for (var i = 0; i < 3; i++) for (var j = (i == 0 ? 1 : 0); j < 6; j++) { +this.checkBridge(bridge, isAntiparallel, i * dir, j * dir1); +if (j > i) this.checkBridge(bridge, isAntiparallel, j * dir, i * dir1); +} + +}, "J.dssx.Bridge,~B,~N"); +Clazz.defineMethod(c$, "dumpSummary", +function(ap, labels){ +var a = ap.monomers[0].getLeadAtom(); +var id = a.getChainID(); +var prefix = (id == 0 ? "" : a.getChainIDStr() + ":"); +var sb = new JU.SB(); +var lastChar = '\u0000'; +var insCode1 = '\u0000'; +var insCode2 = '\u0000'; +var firstResno = -1; +var lastResno = -1; +var n = ap.monomerCount; +var m = ap.monomers; +for (var i = 0; i <= n; i++) { +if (i == n || labels[i] != lastChar) { +if (lastChar != '\0') sb.appendC('\n').appendC(lastChar).append(" : ").append(prefix).appendI(firstResno).append(insCode1 == '\0' ? "" : String.valueOf(insCode1)).append("_").append(prefix).appendI(lastResno).append(insCode2 == '\0' ? "" : String.valueOf(insCode2)); +if (i == n) break; +lastChar = labels[i]; +firstResno = m[i].getResno(); +insCode1 = m[i].getInsertionCode(); +}lastResno = m[i].getResno(); +insCode2 = m[i].getInsertionCode(); +} +return sb.toString(); +}, "JM.AminoPolymer,~A"); +Clazz.defineMethod(c$, "dumpTags", +function(ap, lines, bsBad, mode){ +var prefix = ap.monomers[0].getLeadAtom().getChainID() + "." + (ap.bioPolymerIndexInModel + 1); +lines = JU.PT.rep(lines, "$", prefix); +var iFirst = ap.monomers[0].getResno(); +var pre = "\n" + prefix; +var sb = new JU.SB(); +var sb0 = new JU.SB().append(pre + ".8: "); +var sb1 = new JU.SB().append(pre + ".7: "); +var sb2 = new JU.SB().append(pre + ".6: "); +var sb3 = new JU.SB().append(pre + ".0: "); +var i = iFirst; +var n = ap.monomerCount; +for (var ii = 0; ii < n; ii++) { +i = ap.monomers[ii].getResno(); +sb0.append(i % 100 == 0 ? "" + ((Clazz.doubleToInt(i / 100)) % 100) : " "); +sb1.append(i % 10 == 0 ? "" + ((Clazz.doubleToInt(i / 10)) % 10) : " "); +sb2.appendI(i % 10); +sb3.appendC(bsBad.get(ap.monomers[ii].leadAtomIndex) ? '!' : ap.monomers[ii].getGroup1()); +} +if ((mode & 1) == 1) sb.appendSB(sb0).appendSB(sb1).appendSB(sb2); +sb.append("\n"); +sb.append(lines); +if ((mode & 2) == 2) { +sb.appendSB(sb3); +sb.append("\n\n"); +}return sb.toString().$replace('\0', '.'); +}, "JM.AminoPolymer,~S,JU.BS,~N"); +Clazz.defineMethod(c$, "isHbonded", +function(indexDonor, indexAcceptor, pDonor, pAcceptor, min){ +if (indexDonor < 0 || indexAcceptor < 0) return null; +var min1 = min[pDonor]; +var min2 = min[pAcceptor]; +if (indexDonor >= min1.length || indexAcceptor >= min2.length) return null; +return (min1[indexDonor][0][0] == pAcceptor && min1[indexDonor][0][1] == indexAcceptor ? min1[indexDonor][0] : min1[indexDonor][1][0] == pAcceptor && min1[indexDonor][1][1] == indexAcceptor ? min1[indexDonor][1] : null); +}, "~N,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "findHelixes", +function(iPolymer, min){ +var ap = this.bioPolymers[iPolymer]; +if (JU.Logger.debugging) for (var j = 0; j < ap.monomerCount; j++) JU.Logger.debug(iPolymer + "." + ap.monomers[j].getResno() + "\t" + JU.Escape.e(min[j])); + +var bsTurn = new JU.BS(); +var line3; +var line4; +var line5; +if (this.isDSSP2) { +line5 = this.findHelixes2(0, iPolymer, 5, min, J.c.STR.HELIXPI, 12288, bsTurn, true); +line4 = this.findHelixes2(2, iPolymer, 4, min, J.c.STR.HELIXALPHA, 10240, bsTurn, false); +line3 = this.findHelixes2(4, iPolymer, 3, min, J.c.STR.HELIX310, 8192, bsTurn, false); +} else { +line4 = this.findHelixes2(2, iPolymer, 4, min, J.c.STR.HELIXALPHA, 10240, bsTurn, true); +line3 = this.findHelixes2(4, iPolymer, 3, min, J.c.STR.HELIX310, 8192, bsTurn, false); +line5 = this.findHelixes2(0, iPolymer, 5, min, J.c.STR.HELIXPI, 12288, bsTurn, false); +}if (this.setStructure) ap.setStructureBS(0, 6, J.c.STR.TURN, bsTurn, false); +if (this.doReport) { +this.setTag(this.labels[iPolymer], bsTurn, 'T'); +return this.dumpTags(ap, "$.5: " + line5 + "\n" + "$.4: " + line4 + "\n" + "$.3: " + line3, this.bsBad, 1); +}return ""; +}, "~N,~A"); +Clazz.defineMethod(c$, "findHelixes2", +function(mmtfType, iPolymer, pitch, min, subtype, type, bsTurn, isFirst){ +var ap = this.bioPolymers[iPolymer]; +var bsStart = new JU.BS(); +var bsNNN = new JU.BS(); +var bsX = new JU.BS(); +var bsStop = new JU.BS(); +var bsHelix = new JU.BS(); +var bsDone = this.done[iPolymer]; +var warning = ""; +var n = ap.monomerCount; +for (var i = pitch; i < n; ++i) { +var i0 = i - pitch; +var bpt = 0; +if (min[i][0][0] == iPolymer && min[i][0][1] == i0 || min[i][bpt = 1][0] == iPolymer && min[i][1][1] == i0) { +var ia = ap.monomers[i0].leadAtomIndex; +var ipt = this.bsBad.nextSetBit(ia); +var m = ap.monomers[i]; +if (ipt >= ia && ipt <= m.leadAtomIndex) continue; +bsStart.set(i0); +bsNNN.setBits(i0 + 1, i); +bsStop.set(i); +ipt = bsDone.nextSetBit(i0); +var isClear = (ipt < 0 || ipt >= i); +var addH = false; +if (i0 > 0 && bsStart.get(i0 - 1) && (isFirst || isClear)) { +bsHelix.setBits(i0, i); +if (!isClear) warning += " WARNING! Bridge to helix at " + ap.monomers[ipt]; +addH = true; +} else if (isClear || bsDone.nextClearBit(ipt) < i) { +addH = true; +}if (bsStop.get(i0)) bsX.set(i0); +if (addH && this.vHBonds != null) { +this.addHbond(m, ap.monomers[i0], min[i][bpt][2], type, null); +}}} +var taglines; +if (this.doReport) { +taglines = Clazz.newCharArray (n, '\0'); +this.setTag(taglines, bsNNN, String.fromCharCode(48 + pitch)); +this.setTag(taglines, bsStart, '>'); +this.setTag(taglines, bsStop, '<'); +this.setTag(taglines, bsX, 'X'); +} else { +taglines = null; +}bsDone.or(bsHelix); +bsNNN.andNot(bsDone); +bsTurn.or(bsNNN); +bsTurn.andNot(bsHelix); +if (this.setStructure) ap.setStructureBS(0, mmtfType, subtype, bsHelix, false); +if (this.doReport) { +this.setTag(this.labels[iPolymer], bsHelix, String.fromCharCode(68 + pitch)); +return String.valueOf(taglines) + warning; +}return ""; +}, "~N,~N,~N,~A,J.c.STR,~N,JU.BS,~B"); +Clazz.defineMethod(c$, "setTag", +function(tags, bs, ch){ +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) tags[i] = ch; + +}, "~A,JU.BS,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSR0.js b/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSR0.js new file mode 100755 index 000000000000..d665941700b2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSR0.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.dssx"); +(function(){ +var c$ = Clazz.declareType(J.dssx, "DSSR0", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSR1.js b/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSR1.js new file mode 100755 index 000000000000..816d2cfb3ad7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/dssx/DSSR1.js @@ -0,0 +1,279 @@ +Clazz.declarePackage("J.dssx"); +Clazz.load(["J.dssx.AnnotationParser"], "J.dssx.DSSR1", ["JU.BS", "$.Lst", "$.P3", "$.PT", "JM.HBond", "JM.BasePair", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.declareType(J.dssx, "DSSR1", J.dssx.AnnotationParser); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.dssx.DSSR1, []); +}); +Clazz.overrideMethod(c$, "calculateDSSRStructure", +function(vwr, bsAtoms){ +var bs = vwr.ms.getModelBS(bsAtoms == null ? vwr.bsA() : bsAtoms, true); +var s = ""; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) s += this.getDSSRForModel(vwr, i) + "\n"; + +return s; +}, "JV.Viewer,JU.BS"); +Clazz.defineMethod(c$, "getDSSRForModel", +function(vwr, modelIndex){ +var info = null; +var out = null; +while (true) { +if (!vwr.ms.am[modelIndex].isBioModel) break; +info = vwr.ms.getModelAuxiliaryInfo(modelIndex); +if (info.containsKey("dssr")) break; +var bs = vwr.restrictToModel(vwr.ms.getAtoms(2097166, null), modelIndex); +if (bs.nextClearBit(0) < 0) { +info = null; +break; +}try { +var name = vwr.setLoadFormat(false, "=dssrModel/", '=', false); +name = JU.PT.rep(name, "%20", " "); +JU.Logger.info("fetching " + name + "[pdb data]"); +var data = vwr.getPdbAtomData(bs, null, false, false); +var modelNumber = vwr.getModelNumber(vwr.ms.getModelBS(bs, false).nextSetBit(0)); +var s = " " + modelNumber; +data = "MODEL" + s.substring(s.length - 9) + "\n" + data + "ENDMDL\n"; +data = vwr.getFileAsString3(name + data, false, null); +var x = vwr.parseJSONMap(data); +if (x != null) { +info.put("dssr", x); +this.setGroup1(vwr.ms, modelIndex); +this.fixDSSRJSONMap(x); +this.setBioPolymers(vwr.ms.am[modelIndex], false); +}} catch (e) { +info = null; +out = "" + e; +} +break; +} +return (info != null ? JU.PT.rep(JU.Escape.escapeMap((info.get("dssr")).get("counts")), ",", ",\n") : out == null ? "model has no nucleotides" : out); +}, "JV.Viewer,~N"); +Clazz.overrideMethod(c$, "fixDSSRJSONMap", +function(map){ +var s = ""; +try { +this.fixIndices(map, "kissingLoops", "hairpin"); +this.fixIndices(map, "coaxStacks", "stem"); +if (map.containsKey("counts")) s += "_M.dssr.counts = " + map.get("counts").toString() + "\n"; +if (map.containsKey("dbn")) s += "_M.dssr.dbn = " + map.get("dbn").toString(); +} catch (e) { +} +return s; +}, "java.util.Map"); +Clazz.defineMethod(c$, "fixIndices", +function(map, key, root){ +var indices = root + "_indices"; +var original = root + "s"; +var lst = map.get(key); +if (lst != null) { +var hpins = map.get(original); +for (var i = lst.size(); --i >= 0; ) { +var kmap = lst.get(i); +var khlist = kmap.get(indices); +var n = khlist.size(); +if (n > 0) { +var khpins = new JU.Lst(); +kmap.put(original, khpins); +for (var j = n; --j >= 0; ) khpins.addLast(hpins.get((khlist.get(j)).intValue() - 1)); + +}} +}}, "java.util.Map,~S,~S"); +Clazz.overrideMethod(c$, "getBasePairs", +function(vwr, modelIndex){ +var ms = vwr.ms; +var info = ms.getInfo(modelIndex, "dssr"); +var pairs = (info == null ? null : info.get("pairs")); +var singles = (info == null ? null : info.get("ssSegments")); +if (pairs == null && singles == null) { +this.setBioPolymers(vwr.ms.am[modelIndex], true); +return; +}var bsAtoms = ms.am[modelIndex].bsAtoms; +try { +var bs = new JU.BS(); +var atoms = ms.at; +if (pairs != null) for (var i = pairs.size(); --i >= 0; ) { +var map = pairs.get(i); +var unit1 = map.get("nt1"); +var unit2 = map.get("nt2"); +var a1 = ms.getSequenceBits(unit1, bsAtoms, bs).nextSetBit(0); +bs.clearAll(); +var a2 = ms.getSequenceBits(unit2, bsAtoms, bs).nextSetBit(0); +bs.clearAll(); +JM.BasePair.add(map, this.setRes(atoms[a1]), this.setRes(atoms[a2])); +} +if (singles != null) for (var i = singles.size(); --i >= 0; ) { +var map = singles.get(i); +var units = map.get("nts_long"); +ms.getSequenceBits(units, bsAtoms, bs); +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) this.setRes(atoms[j]); + +} +} catch (e) { +JU.Logger.error("Exception " + e + " in DSSRParser.getBasePairs"); +} +}, "JV.Viewer,~N"); +Clazz.defineMethod(c$, "setBioPolymers", +function(m, b){ +var n = m.getBioPolymerCount(); +for (var i = n; --i >= 0; ) { +var bp = m.bioPolymers[i]; +if (bp.isNucleic()) (bp).isDssrSet = b; +} +}, "JM.BioModel,~B"); +Clazz.defineMethod(c$, "setRes", +function(atom){ +if (atom.group.getBioPolymerLength() == 0) return null; +var m = atom.group; +(m.bioPolymer).isDssrSet = true; +return m; +}, "JM.Atom"); +Clazz.overrideMethod(c$, "getAtomBits", +function(vwr, key, dbObj, annotationCache, type, modelIndex, bsModel){ +if (dbObj == null) return new JU.BS(); +var doCache = !key.contains("NOCACHE"); +if (!doCache) { +key = JU.PT.rep(key, "NOCACHE", "").trim(); +}var bs = null; +bs = new JU.BS(); +if (doCache) annotationCache.put(key, bs); +try { +key = JU.PT.rep(key, "[where", "[select * where"); +key = JU.PT.rep(key, "[WHERE", "[select * where"); +var ext = ""; +var n = -2147483648; +var pt = key.toLowerCase().indexOf("[select"); +if (pt >= 0) { +ext = key.substring(pt); +key = key.substring(0, pt); +pt = ext.lastIndexOf("].."); +if (pt >= 0 && (n = JU.PT.parseInt(ext.substring(pt + 3))) != -2147483648) ext = ext.substring(0, pt + 1); +}pt = key.toLowerCase().indexOf(" where "); +if (pt < 0) { +key = key.toLowerCase(); +pt = (n == -2147483648 ? key.lastIndexOf('.') : -1); +var haveIndex = false; +if (pt >= 0 && (haveIndex = (n = JU.PT.parseInt(key.substring(pt + 1))) != -2147483648)) key = key.substring(0, pt); +pt = "..bulges.nts_long..coaxstacks.stems.pairs.nt*..hairpins.nts_long..hbonds.atom1_id;atom2_id..helices.pairs.nt*..iloops.nts_long..isocanonpairs.nt*..junctions.nts_long..kissingloops.hairpins.nts_long..multiplets.nts_long..nonstack.nts_long..nts.nt_id..pairs.nt*..sssegments.nts_long..stacks.nts_long..stems.pairs.nt*..".indexOf(".." + key) + 2; +var len = key.length; +if (pt < 2) return bs; +var ptLast = (haveIndex ? pt + len : 2147483647); +while (pt >= 2 && pt < ptLast && len > 0) { +if (key.indexOf(".") < 0 && "..bulges.nts_long..coaxstacks.stems.pairs.nt*..hairpins.nts_long..hbonds.atom1_id;atom2_id..helices.pairs.nt*..iloops.nts_long..isocanonpairs.nt*..junctions.nts_long..kissingloops.hairpins.nts_long..multiplets.nts_long..nonstack.nts_long..nts.nt_id..pairs.nt*..sssegments.nts_long..stacks.nts_long..stems.pairs.nt*..".substring(pt + len, pt + len + 2).equals("..")) { +key = "[select (" + key + ")]"; +}dbObj = vwr.extractProperty(dbObj, key, -1); +pt += len + 1; +if (ext.length > 0) { +dbObj = vwr.extractProperty(dbObj, ext, -1); +ext = ""; +}var pt1 = "..bulges.nts_long..coaxstacks.stems.pairs.nt*..hairpins.nts_long..hbonds.atom1_id;atom2_id..helices.pairs.nt*..iloops.nts_long..isocanonpairs.nt*..junctions.nts_long..kissingloops.hairpins.nts_long..multiplets.nts_long..nonstack.nts_long..nts.nt_id..pairs.nt*..sssegments.nts_long..stacks.nts_long..stems.pairs.nt*..".indexOf(".", pt); +key = "..bulges.nts_long..coaxstacks.stems.pairs.nt*..hairpins.nts_long..hbonds.atom1_id;atom2_id..helices.pairs.nt*..iloops.nts_long..isocanonpairs.nt*..junctions.nts_long..kissingloops.hairpins.nts_long..multiplets.nts_long..nonstack.nts_long..nts.nt_id..pairs.nt*..sssegments.nts_long..stacks.nts_long..stems.pairs.nt*..".substring(pt, pt1); +len = key.length; +} +} else { +key = key.substring(0, pt).trim() + "[select * " + key.substring(pt + 1) + "]" + ext; +dbObj = vwr.extractProperty(dbObj, key, -1); +}if (n != -2147483648 && Clazz.instanceOf(dbObj,"JU.Lst")) { +if (n <= 0) n += (dbObj).size(); +dbObj = (dbObj).get(n - 1); +}bs.or(vwr.ms.getAtoms(1086324744, dbObj.toString())); +bs.and(bsModel); +} catch (e) { +System.out.println(e.toString() + " in AnnotationParser"); +bs.clearAll(); +} +return bs; +}, "JV.Viewer,~S,~O,java.util.Map,~N,~N,JU.BS"); +Clazz.overrideMethod(c$, "getHBonds", +function(ms, modelIndex, vHBonds, doReport){ +var info = ms.getInfo(modelIndex, "dssr"); +var list; +if (info == null || (list = info.get("hbonds")) == null) return "no DSSR hydrogen-bond data"; +var bsAtoms = ms.am[modelIndex].bsAtoms; +var unit1 = null; +var unit2 = null; +var a1 = 0; +var a2 = 0; +try { +var bs = new JU.BS(); +for (var i = list.size(); --i >= 0; ) { +var map = list.get(i); +unit1 = map.get("atom1_id"); +a1 = ms.getSequenceBits(unit1, bsAtoms, bs).nextSetBit(0); +if (a1 < 0) { +JU.Logger.error("Atom " + unit1 + " was not found"); +continue; +}unit2 = map.get("atom2_id"); +bs.clearAll(); +a2 = ms.getSequenceBits(unit2, bsAtoms, bs).nextSetBit(0); +if (a2 < 0) { +JU.Logger.error("Atom " + unit2 + " was not found"); +continue; +}bs.clearAll(); +var energy = 0; +vHBonds.addLast( new JM.HBond(ms.at[a1], ms.at[a2], 2048, 1, 0, energy)); +} +} catch (e) { +} +return "DSSR reports " + list.size() + " hydrogen bonds"; +}, "JM.ModelSet,~N,JU.Lst,~B"); +Clazz.overrideMethod(c$, "setGroup1", +function(ms, modelIndex){ +var info = ms.getInfo(modelIndex, "dssr"); +var list; +if (info == null || (list = info.get("nts")) == null) return; +var m = ms.am[modelIndex]; +var bsAtoms = m.bsAtoms; +var atoms = ms.at; +var bs = new JU.BS(); +for (var i = list.size(); --i >= 0; ) { +var map = list.get(i); +var ch = (map.get("nt_code")).charAt(0); +var unit1 = map.get("nt_id"); +ms.bioModelset.getAllSequenceBits(unit1, bsAtoms, bs); +var pt = bs.nextSetBit(0); +if (pt < 0) continue; +if ("ACGTU".indexOf(ch) < 0) atoms[pt].group.group1 = ch; +atoms[pt].group.dssrNT = map; +bs.clearAll(); +} +}, "JM.ModelSet,~N"); +Clazz.overrideMethod(c$, "getAtomicDSSRData", +function(ms, modelIndex, dssrData, dataType){ +var info = ms.getInfo(modelIndex, "dssr"); +var list; +if (info == null || (list = info.get(dataType)) == null) return; +var bsAtoms = ms.am[modelIndex].bsAtoms; +try { +var bs = new JU.BS(); +for (var i = list.size(); --i >= 0; ) { +var map = list.get(i); +bs.clearAll(); +ms.getSequenceBits(map.toString(), bsAtoms, bs); +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) dssrData[j] = i; + +} +} catch (e) { +} +}, "JM.ModelSet,~N,~A,~S"); +Clazz.overrideMethod(c$, "getDSSRFrame", +function(nt){ +var frame = nt.get("frame"); +if (frame == null) return null; +var oxyz = new Array(4); +for (var i = 4; --i >= 0; ) oxyz[i] = new JU.P3(); + +this.getPoint(frame, "origin", oxyz[0]); +this.getPoint(frame, "x_axis", oxyz[1]); +this.getPoint(frame, "y_axis", oxyz[2]); +this.getPoint(frame, "z_axis", oxyz[3]); +return oxyz; +}, "java.util.Map"); +Clazz.defineMethod(c$, "getPoint", +function(frame, item, pt){ +var xyz = frame.get(item); +pt.x = xyz.get(0).floatValue(); +pt.y = xyz.get(1).floatValue(); +pt.z = xyz.get(2).floatValue(); +}, "java.util.Map,~S,JU.P3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/Export3D.js b/config/plugins/visualizations/jmol/static/j2s/J/export/Export3D.js new file mode 100755 index 000000000000..d3a40aff9c4c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/Export3D.js @@ -0,0 +1,397 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.api.JmolRendererInterface", "JU.P3"], "J.export.Export3D", ["J.api.Interface", "J.g3d.HermiteRenderer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.exporter = null; +this.privateKey = 0; +this.gdata = null; +this.colix = 0; +this.hermite3d = null; +this.width = 0; +this.height = 0; +this.slab = 0; +this.depth = 0; +this.exportName = null; +this.webGL = false; +this.isCartesian = false; +this.ptA = null; +this.ptB = null; +this.ptC = null; +this.ptD = null; +Clazz.instantialize(this, arguments);}, J["export"], "Export3D", null, J.api.JmolRendererInterface); +Clazz.prepareFields (c$, function(){ +this.ptA = new JU.P3(); +this.ptB = new JU.P3(); +this.ptC = new JU.P3(); +this.ptD = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "isWebGL", +function(){ +return this.webGL; +}); +Clazz.overrideMethod(c$, "initializeExporter", +function(vwr, privateKey, gdata, params){ +this.exportName = params.get("type"); +this.webGL = this.exportName.equals("JS"); +if ((this.exporter = J.api.Interface.getOption("export." + (this.webGL ? "" : "_") + this.exportName + "Exporter", vwr, "export")) == null) return null; +this.exporter.export3D = this; +this.isCartesian = (this.exporter.exportType == 1); +this.gdata = gdata; +gdata.setNewWindowParametersForExport(); +this.slab = gdata.slab; +this.width = gdata.width; +this.height = gdata.height; +this.privateKey = privateKey; +return (this.initializeOutput(vwr, privateKey, params) ? this.exporter : null); +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz.overrideMethod(c$, "initializeOutput", +function(vwr, privateKey, params){ +return this.exporter.initializeOutput(vwr, privateKey, this.gdata, params); +}, "JV.Viewer,~N,java.util.Map"); +Clazz.overrideMethod(c$, "getExportType", +function(){ +return this.exporter.exportType; +}); +Clazz.overrideMethod(c$, "getExportName", +function(){ +return this.exportName; +}); +Clazz.overrideMethod(c$, "finalizeOutput", +function(){ +return this.exporter.finalizeOutput(); +}); +Clazz.overrideMethod(c$, "setSlab", +function(slabValue){ +this.gdata.setSlab(slabValue); +this.slab = this.gdata.slab; +}, "~N"); +Clazz.overrideMethod(c$, "setSlabAndZShade", +function(slabValue, depthValue, zSlab, zDepth, zPower){ +this.gdata.setSlab(slabValue); +this.slab = this.gdata.slab; +this.gdata.setDepth(depthValue); +this.depth = this.gdata.depth; +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "renderBackground", +function(me){ +if (!this.isCartesian) this.gdata.renderBackground(me); +}, "J.api.JmolRendererInterface"); +Clazz.overrideMethod(c$, "drawAtom", +function(atom, radius){ +this.exporter.drawAtom(atom, radius); +}, "JM.Atom,~N"); +Clazz.overrideMethod(c$, "drawRect", +function(x, y, z, zSlab, rWidth, rHeight){ +if (this.webGL) { +return; +}if (zSlab != 0 && this.gdata.isClippedZ(zSlab)) return; +var w = rWidth - 1; +var h = rHeight - 1; +var xRight = x + w; +var yBottom = y + h; +if (y >= 0 && y < this.height) this.drawHLine(x, y, z, w); +if (yBottom >= 0 && yBottom < this.height) this.drawHLine(x, yBottom, z, w); +if (x >= 0 && x < this.width) this.drawVLine(x, y, z, h); +if (xRight >= 0 && xRight < this.width) this.drawVLine(xRight, y, z, h); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawHLine", +function(x, y, z, w){ +var argbCurrent = this.gdata.getColorArgbOrGray(this.colix); +if (w < 0) { +x += w; +w = -w; +}for (var i = 0; i <= w; i++) { +this.exporter.drawTextPixel(argbCurrent, x + i, y, z); +} +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawVLine", +function(x, y, z, h){ +var argbCurrent = this.gdata.getColorArgbOrGray(this.colix); +if (h < 0) { +y += h; +h = -h; +}for (var i = 0; i <= h; i++) { +this.exporter.drawTextPixel(argbCurrent, x, y + i, z); +} +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawFilledCircle", +function(colixRing, colixFill, diameter, x, y, z){ +if (!this.gdata.isClippedZ(z)) this.exporter.drawFilledCircle(colixRing, colixFill, diameter, x, y, z); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawCircle", +function(colix, diameter, x, y, z, doFill){ +if (!this.gdata.isClippedZ(z)) this.exporter.drawCircle(x, y, z, diameter, colix, doFill); +}, "~N,~N,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "fillSphereXYZ", +function(diameter, x, y, z){ +this.ptA.set(x, y, z); +this.fillSphereBits(diameter, this.ptA); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillSphereI", +function(diameter, center){ +this.ptA.set(center.x, center.y, center.z); +this.fillSphereBits(diameter, this.ptA); +}, "~N,JU.P3i"); +Clazz.overrideMethod(c$, "fillSphereBits", +function(diameter, center){ +if (diameter != 0) this.exporter.fillSphere(this.colix, diameter, center); +}, "~N,JU.P3"); +Clazz.overrideMethod(c$, "fillTextRect", +function(x, y, z, zSlab, widthFill, heightFill){ +if (this.isCartesian || this.gdata.isClippedZ(zSlab)) return; +z = this.exporter.fixScreenZ(z); +this.ptA.set(x, y, z); +this.ptB.set(x + widthFill, y, z); +this.ptC.set(x + widthFill, y + heightFill, z); +this.ptD.set(x, y + heightFill, z); +this.fillQuadrilateral(this.ptA, this.ptB, this.ptC, this.ptD, false); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawString", +function(str, font3d, xBaseline, yBaseline, z, zSlab, bgcolix){ +if (str != null && !this.gdata.isClippedZ(zSlab)) this.drawStringNoSlab(str, font3d, xBaseline, yBaseline, z, bgcolix); +}, "~S,JU.Font,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawStringNoSlab", +function(str, font3d, xBaseline, yBaseline, z, bgcolix){ +if (str == null) return; +z = Math.max(this.slab, z); +if (font3d == null) font3d = this.gdata.getFont3DCurrent(); + else this.gdata.setFont(font3d); +this.exporter.plotText(xBaseline, yBaseline, z, this.colix, str, font3d); +}, "~S,JU.Font,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawImage", +function(objImage, x, y, z, zSlab, bgcolix, width, height){ +if (this.isCartesian || objImage == null || width == 0 || height == 0 || this.gdata.isClippedZ(zSlab)) return; +z = Math.max(this.slab, z); +this.exporter.plotImage(x, y, z, objImage, bgcolix, width, height); +}, "~O,~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawPixel", +function(x, y, z){ +this.plotPixelClipped(x, y, z); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "plotPixelClipped", +function(x, y, z){ +if (this.isClipped(x, y, z)) return; +this.exporter.drawPixel(this.colix, x, y, z, 1); +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "plotPixelClippedP3i", +function(screen){ +if (this.isClipped(screen.x, screen.y, screen.z)) return; +this.exporter.drawPixel(this.colix, screen.x, screen.y, screen.z, 1); +}, "JU.P3i"); +Clazz.overrideMethod(c$, "drawPoints", +function(count, coordinates, scale){ +for (var i = count * 3; i > 0; ) { +var z = coordinates[--i]; +var y = coordinates[--i]; +var x = coordinates[--i]; +if (this.isClipped(x, y, z)) continue; +this.exporter.drawPixel(this.colix, x, y, z, scale); +} +}, "~N,~A,~N"); +Clazz.overrideMethod(c$, "drawDashedLineBits", +function(run, rise, pointA, pointB){ +this.exporter.fillCylinderScreenMad(this.colix, 2, this.exporter.lineWidthMad, pointA, pointB); +}, "~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "drawLineXYZ", +function(x1, y1, z1, x2, y2, z2){ +this.ptA.set(x1, y1, z1); +this.ptB.set(x2, y2, z2); +this.exporter.fillCylinderScreenMad(this.colix, 2, this.exporter.lineWidthMad, this.ptA, this.ptB); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawLine", +function(colixA, colixB, xA, yA, zA, xB, yB, zB){ +this.fillCylinderXYZ(colixA, colixB, 2, this.exporter.lineWidthMad, xA, yA, zA, xB, yB, zB); +}, "~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawLineBits", +function(colixA, colixB, pointA, pointB){ +this.fillCylinderBits2(colixA, colixB, 2, this.exporter.lineWidthMad, pointA, pointB); +}, "~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "drawLineAB", +function(pointA, pointB){ +this.exporter.fillCylinderScreenMad(this.colix, 2, this.exporter.lineWidthMad, pointA, pointB); +}, "JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "drawBond", +function(atomA, atomB, colixA, colixB, endcaps, mad, bondOrder){ +if (mad == 1) mad = this.exporter.lineWidthMad; +this.exporter.drawCylinder(atomA, atomB, colixA, colixB, endcaps, mad, bondOrder); +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillCylinderXYZ", +function(colixA, colixB, endcaps, mad, xA, yA, zA, xB, yB, zB){ +this.ptA.set(xA, yA, zA); +this.ptB.set(xB, yB, zB); +this.exporter.drawCylinder(this.ptA, this.ptB, colixA, colixB, endcaps, mad, 1); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillCylinderScreen3I", +function(endcaps, diameter, pointA, pointB, pt0f, pt1f, radius){ +if (diameter <= 0) return; +this.exporter.fillCylinderScreen(this.colix, endcaps, diameter, pointA, pointB, pt0f, pt1f, radius); +}, "~N,~N,JU.P3,JU.P3,JU.P3,JU.P3,~N"); +Clazz.overrideMethod(c$, "fillCylinder", +function(endcaps, diameter, pointA, pointB){ +if (diameter <= 0) return; +this.ptA.set(pointA.x, pointA.y, pointA.z); +this.ptB.set(pointB.x, pointB.y, pointB.z); +this.exporter.fillCylinderScreenMad(this.colix, endcaps, diameter, this.ptA, this.ptB); +}, "~N,~N,JU.P3i,JU.P3i"); +Clazz.overrideMethod(c$, "fillCylinderBits", +function(endcaps, diameter, pointA, pointB){ +if (diameter == 0) return; +if (this.isCartesian) { +this.exporter.fillCylinderScreen(this.colix, endcaps, diameter, pointA, pointB, null, null, 0); +} else { +this.exporter.fillCylinderScreenMad(this.colix, endcaps, diameter, pointA, pointB); +}}, "~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillConeScreen3f", +function(endcap, screenDiameter, pointBase, screenTip, isBarb){ +this.exporter.fillConeScreen(this.colix, endcap, screenDiameter, pointBase, screenTip, isBarb); +}, "~N,~N,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "drawHermite4", +function(tension, s0, s1, s2, s3){ +this.hermite3d.renderHermiteRope(false, tension, 0, 0, 0, s0, s1, s2, s3); +}, "~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillHermite", +function(tension, diameterBeg, diameterMid, diameterEnd, s0, s1, s2, s3){ +this.hermite3d.renderHermiteRope(true, tension, diameterBeg, diameterMid, diameterEnd, s0, s1, s2, s3); +}, "~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "drawTriangle3C", +function(screenA, colixA, screenB, colixB, screenC, colixC, check){ +if ((check & 1) == 1) this.drawLine(colixA, colixB, screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z); +if ((check & 2) == 2) this.drawLine(colixB, colixC, screenB.x, screenB.y, screenB.z, screenC.x, screenC.y, screenC.z); +if ((check & 4) == 4) this.drawLine(colixA, colixC, screenA.x, screenA.y, screenA.z, screenC.x, screenC.y, screenC.z); +}, "JU.P3i,~N,JU.P3i,~N,JU.P3i,~N,~N"); +Clazz.defineMethod(c$, "drawLineBits", +function(screenA, screenB, colixA, colixB){ +this.exporter.drawCylinder(screenA, screenB, colixA, colixB, 2, this.exporter.lineWidthMad, 1); +}, "JU.P3,JU.P3,~N,~N"); +Clazz.overrideMethod(c$, "fillCylinderBits2", +function(colixA, colixB, endcaps, mad, screenA, screenB){ +this.exporter.drawCylinder(screenA, screenB, colixA, colixB, endcaps, mad, 1); +}, "~N,~N,~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillTriangle3CNBits", +function(pA, colixA, nA, pB, colixB, nB, pC, colixC, nC, twoSided){ +if (colixA != colixB || colixB != colixC) { +return; +}this.exporter.fillTriangle(colixA, pA, pB, pC, twoSided); +}, "JU.P3,~N,~N,JU.P3,~N,~N,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "fillTriangle3CN", +function(pointA, colixA, normixA, pointB, colixB, normixB, pointC, colixC, normixC){ +}, "JU.P3i,~N,~N,JU.P3i,~N,~N,JU.P3i,~N,~N"); +Clazz.overrideMethod(c$, "fillTriangleTwoSided", +function(normix, a, b, c){ +this.exporter.fillTriangle(this.colix, a, b, c, true); +}, "~N,JU.P3,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillTriangle3f", +function(pointA, pointB, pointC, setNoisy){ +this.exporter.fillTriangle(this.colix, pointA, pointB, pointC, false); +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "fillTriangle3i", +function(screenA, screenB, screenC, ptA0, ptB0, ptC0, doShade){ +this.exporter.fillTriangle(this.colix, screenA, screenB, screenC, true); +}, "JU.P3,JU.P3,JU.P3,JU.T3,JU.T3,JU.T3,~B"); +Clazz.overrideMethod(c$, "fillQuadrilateral", +function(pointA, pointB, pointC, pointD, isSolid){ +this.exporter.fillTriangle(this.colix, pointA, pointB, pointC, false); +this.exporter.fillTriangle(this.colix, pointA, pointC, pointD, false); +}, "JU.P3,JU.P3,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "drawSurface", +function(meshSurface, colix){ +this.exporter.drawSurface(meshSurface, colix); +}, "JU.MeshSurface,~N"); +Clazz.overrideMethod(c$, "fillEllipsoid", +function(center, points, x, y, z, diameter, mToEllipsoidal, coef, mDeriv, selectedOctant, octantPoints){ +this.exporter.fillEllipsoid(center, points, this.colix, x, y, z, diameter, mToEllipsoidal, coef, mDeriv, octantPoints); +}, "JU.P3,~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A"); +Clazz.overrideMethod(c$, "drawEllipse", +function(ptAtom, ptX, ptY, fillArc, wireframeOnly){ +return this.exporter.drawEllipse(ptAtom, ptX, ptY, this.colix, fillArc); +}, "JU.P3,JU.P3,JU.P3,~B,~B"); +Clazz.overrideMethod(c$, "isAntialiased", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "checkTranslucent", +function(isAlphaTranslucent){ +return true; +}, "~B"); +Clazz.overrideMethod(c$, "haveTranslucentObjects", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "setC", +function(colix){ +this.colix = colix; +this.gdata.setC(colix); +return true; +}, "~N"); +Clazz.overrideMethod(c$, "isInDisplayRange", +function(x, y){ +return (this.isCartesian || this.gdata.isInDisplayRange(x, y)); +}, "~N,~N"); +Clazz.defineMethod(c$, "clipCode", +function(x, y, z){ +return (this.isCartesian ? this.gdata.clipCode(z) : this.gdata.clipCode3(x, y, z)); +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "isClippedXY", +function(diameter, x, y){ +return (!this.isCartesian && this.gdata.isClippedXY(diameter, x, y)); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "isClipped", +function(x, y, z){ +return (this.gdata.isClippedZ(z) || this.isClipped(x, y)); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "isClipped", +function(x, y){ +return (!this.isCartesian && this.gdata.isClipped(x, y)); +}, "~N,~N"); +Clazz.defineMethod(c$, "getPrivateKey", +function(){ +return this.privateKey; +}); +Clazz.overrideMethod(c$, "volumeRender4", +function(diam, x, y, z){ +this.fillSphereXYZ(diam, x, y, z); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "renderCrossHairs", +function(minMax, screenWidth, screenHeight, navigationOffset, navigationDepthPercent){ +}, "~A,~N,~N,JU.P3,~N"); +Clazz.overrideMethod(c$, "volumeRender", +function(TF){ +}, "~B"); +Clazz.overrideMethod(c$, "addRenderer", +function(tok){ +if (tok == 553648143) this.hermite3d = new J.g3d.HermiteRenderer().set(this, this.gdata); +}, "~N"); +Clazz.overrideMethod(c$, "plotImagePixel", +function(argb, x, y, z, shade, bgargb, width, height, pbuf, p, transpLog){ +if (this.webGL) return; +z = Math.max(this.slab, z); +if (shade != 0) { +var a = (shade == 8 ? 0xFF : ((8 - shade) << 4) + (8 - shade)); +argb = (argb & 0xFFFFFF) | (a << 24); +}this.exporter.drawTextPixel(argb, x, y, z); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~A,~O,~N"); +Clazz.overrideMethod(c$, "drawHermite7", +function(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, colixBack){ +if (colixBack == 0 || this.webGL) { +this.hermite3d.renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, 0); +return; +}this.hermite3d.renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, 1); +var colix = this.colix; +this.setC(colixBack); +this.hermite3d.renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, -1); +this.setC(colix); +}, "~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N"); +Clazz.overrideMethod(c$, "renderAllStrings", +function(jr){ +if (this.webGL) { +return; +}this.gdata.renderAllStrings(this); +}, "~O"); +Clazz.overrideMethod(c$, "drawLinePixels", +function(sA, sB, z, zslab){ +return; +}, "JU.P3i,JU.P3i,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/JSExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/JSExporter.js new file mode 100755 index 000000000000..d249754bdfbe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/JSExporter.js @@ -0,0 +1,127 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.__CartesianExporter", "java.util.Hashtable", "J.export.Export3D", "$.___Exporter"], "J.export.JSExporter", ["J.export.UseTable"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.htSpheresRendered = null; +this.htObjects = null; +this.html5Applet = null; +this.useTable = null; +this.ret = null; +Clazz.instantialize(this, arguments);}, J["export"], "JSExporter", J["export"].__CartesianExporter); +Clazz.prepareFields (c$, function(){ +this.htSpheresRendered = new java.util.Hashtable(); +this.htObjects = new java.util.Hashtable(); +this.ret = new Array(1); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"].JSExporter, []); +}); +Clazz.defineMethod(c$, "jsInitExport", +function(applet){ +}, "~O"); +Clazz.defineMethod(c$, "jsEndExport", +function(applet){ +}, "~O"); +Clazz.defineMethod(c$, "jsCylinder", +function(applet, id, isNew, pt1, pt2, o){ +}, "~O,~S,~B,JU.P3,JU.P3,~A"); +Clazz.defineMethod(c$, "jsSphere", +function(applet, id, isNew, pt, o){ +}, "~O,~S,~B,JU.T3,~A"); +Clazz.defineMethod(c$, "jsSurface", +function(applet, vertices, normals, indices, nVertices, nPolygons, nFaces, bsPolygons, faceVertexMax, color, vertexColors, polygonColors){ +}, "~O,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,~A,~A"); +Clazz.defineMethod(c$, "jsTriangle", +function(applet, color, pt1, pt2, pt3){ +}, "~O,~N,JU.T3,JU.T3,JU.T3"); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.html5Applet = this.vwr.html5Applet; +this.useTable = new J["export"].UseTable("JS"); +this.htSpheresRendered.clear(); +this.htObjects.clear(); +this.jsInitExport(this.html5Applet); +}); +Clazz.overrideMethod(c$, "outputFooter", +function(){ +this.jsEndExport(this.html5Applet); +this.htSpheresRendered.clear(); +this.htObjects.clear(); +this.useTable = null; +}); +Clazz.overrideMethod(c$, "outputSphere", +function(ptCenter, radius, colix, checkRadius){ +var iRad = Math.round(radius * 100); +var check = J["export"].___Exporter.round(ptCenter) + (checkRadius ? " " + iRad : ""); +if (this.htSpheresRendered.get(check) != null) return; +this.htSpheresRendered.put(check, Boolean.TRUE); +var found = this.useTable.getDefRet("S" + colix + "_" + iRad, this.ret); +var o; +if (found) o = this.htObjects.get(this.ret[0]); + else this.htObjects.put(this.ret[0], o = Clazz.newArray(-1, [this.getColor(colix), Float.$valueOf(radius)])); +this.jsSphere(this.html5Applet, this.ret[0], !found, ptCenter, o); +}, "JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCylinder", +function(ptCenter, pt1, pt2, colix, endcaps, radius, ptX, ptY, checkRadius){ +if (ptX != null) return false; +var length = pt1.distance(pt2); +var found = this.useTable.getDefRet("C" + colix + "_" + Math.round(length * 100) + "_" + radius + "_" + endcaps, this.ret); +var o; +if (found) o = this.htObjects.get(this.ret[0]); + else this.htObjects.put(this.ret[0], o = Clazz.newArray(-1, [this.getColor(colix), Float.$valueOf(length), Float.$valueOf(radius)])); +this.jsCylinder(this.html5Applet, this.ret[0], !found, pt1, pt2, o); +return true; +}, "JU.P3,JU.P3,JU.P3,~N,~N,~N,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "outputCircle", +function(pt1, pt2, radius, colix, doFill){ +}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputEllipsoid", +function(center, points, colix){ +}, "JU.P3,~A,~N"); +Clazz.overrideMethod(c$, "outputCone", +function(ptBase, ptTip, radius, colix){ +this.outputCylinder(null, ptBase, ptTip, colix, 0, radius, null, null, false); +}, "JU.P3,JU.P3,~N,~N"); +Clazz.defineMethod(c$, "getColor", +function(colix){ +return Integer.$valueOf(this.gdata.getColorArgbOrGray(colix)); +}, "~N"); +Clazz.overrideMethod(c$, "outputSurface", +function(vertices, normals, vertexColixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, offset){ +var vertexColors = this.getColors(vertexColixes); +var polygonColors = this.getColors(polygonColixes); +this.jsSurface(this.html5Applet, vertices, normals, indices, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, this.gdata.getColorArgbOrGray(colix), vertexColors, polygonColors); +}, "~A,~A,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.overrideMethod(c$, "outputTriangle", +function(pt1, pt2, pt3, colix){ +this.jsTriangle(this.html5Applet, this.gdata.getColorArgbOrGray(colix), pt1, pt2, pt3); +}, "JU.T3,JU.T3,JU.T3,~N"); +Clazz.overrideMethod(c$, "outputTextPixel", +function(pt, argb){ +}, "JU.P3,~N"); +Clazz.overrideMethod(c$, "outputFace", +function(is, coordMap, faceVertexMax){ +}, "~A,~A,~N"); +Clazz.defineMethod(c$, "output", +function(pt){ +}, "JU.T3"); +Clazz.overrideMethod(c$, "plotImage", +function(x, y, z, image, bgcolix, width, height){ +}, "~N,~N,~N,~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "plotText", +function(x, y, z, colix, text, font3d){ +}, "~N,~N,~N,~N,~S,JU.Font"); +Clazz.defineMethod(c$, "getColors", +function(colixes){ +if (colixes == null) return null; +var colors = Clazz.newIntArray (colixes.length, 0); +for (var i = colors.length; --i >= 0; ) { +colors[i] = this.gdata.getColorArgbOrGray(colixes[i]); +} +return colors; +}, "~A"); +{ +{ +Jmol && Jmol.GLmol && Jmol.GLmol.extendJSExporter(J.export.JSExporter.prototype); +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/MeshData.js b/config/plugins/visualizations/jmol/static/j2s/J/export/MeshData.js new file mode 100755 index 000000000000..4ad6b98b72fb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/MeshData.js @@ -0,0 +1,87 @@ +Clazz.declarePackage("J.export"); +Clazz.load(null, "J.export.MeshData", ["JU.AU", "$.P3", "$.V3", "JU.MeshSurface"], function(){ +var c$ = Clazz.declareType(J["export"], "MeshData", null); +c$.getCircleData = Clazz.defineMethod(c$, "getCircleData", +function(){ +var ndeg = 10; +var n = Clazz.doubleToInt(360 / ndeg); +var vertexCount = n + 1; +var faces = JU.AU.newInt2(n); +for (var i = 0; i < n; i++) { +faces[i] = Clazz.newIntArray(-1, [i, (i + 1) % n, n]); +} +var vertexes = new Array(vertexCount); +var normals = new Array(vertexCount); +for (var i = 0; i < n; i++) { +var x = (Math.cos(i * ndeg / 180. * 3.141592653589793)); +var y = (Math.sin(i * ndeg / 180. * 3.141592653589793)); +vertexes[i] = JU.P3.new3(x, y, 0); +normals[i] = JU.P3.new3(0, 0, 1); +} +vertexes[n] = JU.P3.new3(0, 0, 0); +normals[n] = JU.P3.new3(0, 0, 1); +return JU.MeshSurface.newMesh(false, vertexes, 0, faces, normals, 0); +}); +c$.getTriangleData = Clazz.defineMethod(c$, "getTriangleData", +function(pt1, pt2, pt3){ +var vertexes = Clazz.newArray(-1, [pt1, pt2, pt3]); +var v1 = JU.V3.newVsub(pt3, pt1); +var v2 = JU.V3.newVsub(pt2, pt1); +v2.cross(v2, v1); +v2.normalize(); +var normals = Clazz.newArray(-1, [v2, v2, v2]); +var faces = Clazz.newArray(-1, [ Clazz.newIntArray(-1, [0, 1, 2])]); +return JU.MeshSurface.newMesh(false, vertexes, 0, faces, normals, 0); +}, "JU.T3,JU.T3,JU.T3"); +c$.getConeData = Clazz.defineMethod(c$, "getConeData", +function(){ +var ndeg = 10; +var n = Clazz.doubleToInt(360 / ndeg); +var vertices = new Array(n + 1); +var faces = JU.AU.newInt2(n); +for (var i = 0; i < n; i++) faces[i] = Clazz.newIntArray(-1, [i, (i + 1) % n, n]); + +var d = ndeg / 180. * 3.141592653589793; +for (var i = 0; i < n; i++) { +var x = (Math.cos(i * d)); +var y = (Math.sin(i * d)); +vertices[i] = JU.P3.new3(x, y, 0); +} +vertices[n] = JU.P3.new3(0, 0, 1); +return JU.MeshSurface.newMesh(false, vertices, 0, faces, vertices, 0); +}); +c$.getCylinderData = Clazz.defineMethod(c$, "getCylinderData", +function(inSide){ +var ndeg = 10; +var vertexCount = Clazz.doubleToInt(360 / ndeg) * 2; +var n = Clazz.doubleToInt(vertexCount / 2); +var faces = JU.AU.newInt2(vertexCount); +var fpt = -1; +for (var i = 0; i < n; i++) { +if (inSide) { +faces[++fpt] = Clazz.newIntArray(-1, [i + n, (i + 1) % n, i]); +faces[++fpt] = Clazz.newIntArray(-1, [i + n, (i + 1) % n + n, (i + 1) % n]); +} else { +faces[++fpt] = Clazz.newIntArray(-1, [i, (i + 1) % n, i + n]); +faces[++fpt] = Clazz.newIntArray(-1, [(i + 1) % n, (i + 1) % n + n, i + n]); +}} +var vertexes = new Array(vertexCount); +var normals = new Array(vertexCount); +for (var i = 0; i < n; i++) { +var x = (Math.cos(i * ndeg / 180. * 3.141592653589793)); +var y = (Math.sin(i * ndeg / 180. * 3.141592653589793)); +vertexes[i] = JU.P3.new3(x, y, 0); +normals[i] = JU.P3.new3(x, y, 0); +} +for (var i = 0; i < n; i++) { +var x = (Math.cos((i + 0.5) * ndeg / 180 * 3.141592653589793)); +var y = (Math.sin((i + 0.5) * ndeg / 180 * 3.141592653589793)); +vertexes[i + n] = JU.P3.new3(x, y, 1); +normals[i + n] = normals[i]; +} +if (inSide) for (var i = 0; i < n; i++) normals[i].scale(-1); + +return JU.MeshSurface.newMesh(false, vertexes, 0, faces, normals, 0); +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/UseTable.js b/config/plugins/visualizations/jmol/static/j2s/J/export/UseTable.js new file mode 100755 index 000000000000..2c1316400f41 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/UseTable.js @@ -0,0 +1,28 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["java.util.Hashtable"], "J.export.UseTable", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.iObj = 0; +this.keyword = null; +this.term = '\0'; +Clazz.instantialize(this, arguments);}, J["export"], "UseTable", java.util.Hashtable); +Clazz.makeConstructor(c$, +function(keyword){ +Clazz.superConstructor (this, J["export"].UseTable, []); +this.keyword = keyword; +this.term = keyword.charAt(keyword.length - 1); +}, "~S"); +Clazz.defineMethod(c$, "getDef", +function(key){ +if (this.containsKey(key)) return this.keyword + this.get(key) + this.term; +var id = "_" + (this.iObj++); +this.put(key, id); +return id; +}, "~S"); +Clazz.defineMethod(c$, "getDefRet", +function(key, ret){ +if ((ret[0] = this.get(key)) != null) return true; +this.put(key, ret[0] = "_" + key.charAt(0) + (this.iObj++)); +return false; +}, "~S,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/_IdtfExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/_IdtfExporter.js new file mode 100755 index 000000000000..734d3ecf4530 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/_IdtfExporter.js @@ -0,0 +1,532 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.__CartesianExporter", "java.util.Hashtable", "JU.AU", "$.M4", "$.P3", "$.SB"], "J.export._IdtfExporter", ["JU.Lst", "$.Quat", "JU.C", "$.Geodesic", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveSphere = false; +this.haveCylinder = false; +this.haveCylinderIn = false; +this.haveCone = false; +this.haveCircle = false; +this.ptMin = null; +this.ptMax = null; +this.iObj = 0; +this.htDefs = null; +this.m = null; +this.models = null; +this.resources = null; +this.modifiers = null; +this.htNodes = null; +this.cylinderMatrix = null; +this.sbTemp = null; +this.triangleFace = null; +Clazz.instantialize(this, arguments);}, J["export"], "_IdtfExporter", J["export"].__CartesianExporter); +Clazz.prepareFields (c$, function(){ +this.ptMin = JU.P3.new3(1e10, 1e10, 1e10); +this.ptMax = JU.P3.new3(-1.0E10, -1.0E10, -1.0E10); +this.htDefs = new java.util.Hashtable(); +this.m = new JU.M4(); +this.models = new JU.SB(); +this.resources = new JU.SB(); +this.modifiers = new JU.SB(); +this.htNodes = new java.util.Hashtable(); +this.cylinderMatrix = new JU.M4(); +this.triangleFace = JU.AU.newInt2(1); +{ +this.triangleFace[0] = Clazz.newIntArray(-1, [0, 1, 2]); +}}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"]._IdtfExporter, []); +this.commentChar = "% "; +}); +Clazz.defineMethod(c$, "output", +function(pt){ +this.output(pt, this.sbTemp, true); +}, "JU.T3"); +Clazz.defineMethod(c$, "output", +function(pt, sb, checkpt){ +if (checkpt) this.checkPoint(pt); +sb.append(J["export"].___Exporter.round(pt.x)).append(" ").append(J["export"].___Exporter.round(pt.y)).append(" ").append(J["export"].___Exporter.round(pt.z)).append(" "); +}, "JU.T3,JU.SB,~B"); +Clazz.defineMethod(c$, "checkPoint", +function(pt){ +if (pt.x < this.ptMin.x) this.ptMin.x = pt.x; +if (pt.y < this.ptMin.y) this.ptMin.y = pt.y; +if (pt.z < this.ptMin.z) this.ptMin.z = pt.z; +if (pt.x > this.ptMax.x) this.ptMax.x = pt.x; +if (pt.y > this.ptMax.y) this.ptMax.y = pt.y; +if (pt.z > this.ptMax.z) this.ptMax.z = pt.z; +}, "JU.T3"); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.output("FILE_FORMAT \"IDTF\"\nFORMAT_VERSION 100\n"); +this.m.setIdentity(); +this.m.setToM3(this.tm.matrixRotate); +this.m.rotate2(this.referenceCenter, this.tempP1); +this.m.m03 = -this.tempP1.x; +this.m.m13 = -this.tempP1.y; +this.m.m23 = -this.tempP1.z; +this.m.m33 = 1; +this.output("NODE \"GROUP\" {\n"); +this.output("NODE_NAME \"Jmol\"\n"); +this.output("PARENT_LIST {\nPARENT_COUNT 1\n"); +this.output("PARENT 0 {\n"); +this.output(this.getParentItem("", this.m)); +this.output("}}}\n"); +}); +Clazz.overrideMethod(c$, "finalizeOutput", +function(){ +this.finalizeOutput2(); +return this.getAuxiliaryFileData(); +}); +Clazz.defineMethod(c$, "getAuxiliaryFileData", +function(){ +var fName = this.fileName.substring(this.fileName.lastIndexOf("/") + 1); +fName = fName.substring(fName.lastIndexOf("\\") + 1); +var name = fName + "."; +name = name.substring(0, name.indexOf(".")); +return "% Created by: Jmol " + JV.Viewer.getJmolVersion() + "\n% Creation date: " + this.getExportDate() + "\n% File created: " + this.fileName + " (" + this.getByteCount() + " bytes)\n\n" + "\n\\documentclass[12pt,letter]{article}" + "\n\\usepackage{hyperref}" + "\n\\usepackage{media9}" + "\n\\usepackage{verbatim}" + "\n\\pagestyle{empty}" + "\n\\begin{document}" + "\n \\begin{center}" + "\n \\addmediapath{./} % here you can set the path where is been saved the u3d file" + "\n \\includemedia[" + "\n label=" + name + "," + "\n width=0.9\\textwidth," + "\n height=0.9\\textheight," + "\n activate=pageopen," + "\n deactivate=pageclose," + "\n 3Dtoolbar=false," + "\n 3Dnavpane=false," + "\n 3Dmenu," + "\n 3Droo=" + this.cameraDistance + "," + "\n 3Dcoo= 0.0 0.0 0.0," + "\n 3Dc2c=0.0 0.0 1.0," + "\n 3Daac=" + this.apertureAngle + "," + "\n 3Droll=0.0," + "\n 3Dbg=" + this.rgbFractionalFromColix(this.backgroundColix) + ", % to set the background color for 3D vwr; white = 1 1 1; so, you need to do the proportion: '255:1=[RGB]:x'" + "\n transparent=false," + "\n 3Dlights=Headlamp," + "\n 3Drender=Solid," + "\n 3Dpartsattrs=restore," + "\n ]{}{" + name + ".u3d}" + "\n% \\\\" + "\n%\\movieref[3Dcalculate]{" + name + "}{Click here!}" + "\n\\end{center}" + "\n\\end{document}" + "\n\\begin{comment}" + this.vwr.getWrappedStateScript() + "\n\\end{comment}"; +}); +Clazz.defineMethod(c$, "getParentItem", +function(name, m){ +var sb = new JU.SB(); +sb.append("PARENT_NAME \"" + name + "\"\n"); +sb.append("PARENT_TM {\n"); +sb.append(m.m00 + " " + m.m10 + " " + m.m20 + " 0.0\n"); +sb.append(m.m01 + " " + m.m11 + " " + m.m21 + " 0.0\n"); +sb.append(m.m02 + " " + m.m12 + " " + m.m22 + " 0.0\n"); +sb.append(m.m03 + " " + m.m13 + " " + m.m23 + " " + m.m33 + "\n"); +sb.append("}\n"); +return sb.toString(); +}, "~S,JU.M4"); +Clazz.defineMethod(c$, "addColix", +function(colix, haveColors){ +var key = "_" + colix; +if (this.htDefs.containsKey(key)) return; +var color = (haveColors ? "1.0 1.0 1.0" : this.rgbFractionalFromColix(colix)); +this.htDefs.put(key, Boolean.TRUE); +this.resources.append("RESOURCE_LIST \"SHADER\" {\n"); +this.resources.append("RESOURCE_COUNT 1\n"); +this.resources.append("RESOURCE 0 {\n"); +this.resources.append("RESOURCE_NAME \"Shader" + key + "\"\n"); +this.resources.append("ATTRIBUTE_USE_VERTEX_COLOR \"FALSE\"\n"); +this.resources.append("SHADER_MATERIAL_NAME \"Mat" + key + "\"\n"); +this.resources.append("SHADER_ACTIVE_TEXTURE_COUNT 0\n"); +this.resources.append("}}\n"); +this.resources.append("RESOURCE_LIST \"MATERIAL\" {\n"); +this.resources.append("RESOURCE_COUNT 1\n"); +this.resources.append("RESOURCE 0 {\n"); +this.resources.append("RESOURCE_NAME \"Mat" + key + "\"\n"); +this.resources.append("MATERIAL_AMBIENT " + color + "\n"); +this.resources.append("MATERIAL_DIFFUSE " + color + "\n"); +this.resources.append("MATERIAL_SPECULAR 0.0 0.0 0.0\n"); +this.resources.append("MATERIAL_EMISSIVE 0.0 0.0 0.0\n"); +this.resources.append("MATERIAL_REFLECTIVITY 0.00000\n"); +this.resources.append("MATERIAL_OPACITY " + J["export"].___Exporter.opacityFractionalFromColix(colix) + "\n"); +this.resources.append("}}\n"); +}, "~N,~B"); +Clazz.defineMethod(c$, "addShader", +function(key, colix){ +this.modifiers.append("MODIFIER \"SHADING\" {\n"); +this.modifiers.append("MODIFIER_NAME \"" + key + "\"\n"); +this.modifiers.append("PARAMETERS {\n"); +this.modifiers.append("SHADER_LIST_COUNT 1\n"); +this.modifiers.append("SHADING_GROUP {\n"); +this.modifiers.append("SHADER_LIST 0 {\n"); +this.modifiers.append("SHADER_COUNT 1\n"); +this.modifiers.append("SHADER_NAME_LIST {\n"); +this.modifiers.append("SHADER 0 NAME: \"Shader_" + colix + "\"\n"); +this.modifiers.append("}}}}}\n"); +}, "~S,~N"); +Clazz.overrideMethod(c$, "outputFooter", +function(){ +this.htDefs = null; +this.outputNodes(); +this.output(this.models.toString()); +this.output(this.resources.toString()); +this.output("RESOURCE_LIST \"VIEW\" {\n"); +this.output("\tRESOURCE_COUNT 1\n"); +this.output("\tRESOURCE 0 {\n"); +this.output("\t\tRESOURCE_NAME \"View0\"\n"); +this.output("\t\tVIEW_PASS_COUNT 1\n"); +this.output("\t\tVIEW_ROOT_NODE_LIST {\n"); +this.output("\t\t\tROOT_NODE 0 {\n"); +this.output("\t\t\t\tROOT_NODE_NAME \"\"\n"); +this.output("\t\t\t}\n"); +this.output("\t\t}\n"); +this.output("\t}\n"); +this.output("}\n\n"); +this.output(this.modifiers.toString()); +}); +Clazz.defineMethod(c$, "outputNodes", +function(){ +for (var entry, $entry = this.htNodes.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var v = entry.getValue(); +this.output("NODE \"MODEL\" {\n"); +this.output("NODE_NAME \"" + key + "\"\n"); +System.out.println("output idtf " + key); +var n = v.size(); +this.output("PARENT_LIST {\nPARENT_COUNT " + n + "\n"); +for (var i = 0; i < n; i++) { +this.output("PARENT " + i + " {\n"); +this.output(v.get(i)); +this.output("}\n"); +} +this.output("}\n"); +var i = key.indexOf("_"); +if (i > 0) { +key = key.substring(0, i); +}if (key.equals("Ellipse")) { +key = "Circle"; +}this.output("RESOURCE_NAME \"" + key + "_Mesh\"\n}\n"); +} +}); +Clazz.defineMethod(c$, "outputEllipsoid", +function(center, points, colix){ +var a = JU.Quat.getQuaternionFrame(center, points[1], points[3]).toAxisAngle4f(); +var sx = points[1].distance(center); +var sy = points[3].distance(center); +var sz = points[5].distance(center); +this.setSphereMatrix(center, sx, sy, sz, a, this.sphereMatrix); +this.outputEllipsoid(center, this.sphereMatrix, colix); +}, "JU.P3,~A,~N"); +Clazz.defineMethod(c$, "outputEllipsoid", +function(center, sphereMatrix, colix){ +if (!this.haveSphere) { +this.models.append(this.getSphereResource()); +this.haveSphere = true; +}this.checkPoint(center); +this.addColix(colix, false); +var key = "Sphere_" + colix; +var v = this.htNodes.get(key); +if (v == null) { +v = new JU.Lst(); +this.htNodes.put(key, v); +this.addShader(key, colix); +}v.addLast(this.getParentItem("Jmol", sphereMatrix)); +}, "JU.T3,JU.M4,~N"); +Clazz.defineMethod(c$, "getSphereResource", +function(){ +var sb = new JU.SB(); +sb.append("RESOURCE_LIST \"MODEL\" {\n").append("RESOURCE_COUNT 1\n").append("RESOURCE 0 {\n").append("RESOURCE_NAME \"Sphere_Mesh\"\n").append("MODEL_TYPE \"MESH\"\n").append("MESH {\n"); +var vertexCount = JU.Geodesic.getVertexCount(2); +var f = JU.Geodesic.getFaceVertexes(2); +var nFaces = Clazz.doubleToInt(f.length / 3); +var faces = Clazz.newIntArray (nFaces, 3, 0); +for (var i = 0, p = 0; i < nFaces; i++) for (var j = 0; j < 3; j++) faces[i][j] = f[p++]; + + +var vertexes = new Array(vertexCount); +for (var i = 0; i < vertexCount; i++) vertexes[i] = JU.Geodesic.getVertexVector(i); + +return this.getMeshData("Sphere", faces, vertexes, vertexes); +}); +Clazz.defineMethod(c$, "getMeshData", +function(type, indices, vertexes, normals){ +var nFaces = indices.length; +var vertexCount = vertexes.length; +var normalCount = normals.length; +var sb = new JU.SB(); +this.getMeshHeader(type, nFaces, vertexCount, normalCount, 0, sb); +var sb1 = new JU.SB(); +for (var i = 0; i < indices.length; i++) { +sb1.appendI(indices[i][0]).append(" "); +sb1.appendI(indices[i][1]).append(" "); +sb1.appendI(indices[i][2]).append(" "); +} +sb.append("MESH_FACE_POSITION_LIST { "); +sb.appendSB(sb1); +sb.append("}\n"); +sb.append("MESH_FACE_NORMAL_LIST { "); +sb.appendSB(sb1); +sb.append("}\n"); +sb.append("MESH_FACE_SHADING_LIST { "); +for (var i = 0; i < nFaces; i++) sb.append("0 "); + +sb.append("}\n"); +sb.append("MODEL_POSITION_LIST { "); +for (var i = 0; i < vertexCount; i++) this.output(vertexes[i], sb, false); + +sb.append("}\n"); +sb.append("MODEL_NORMAL_LIST { "); +for (var i = 0; i < normalCount; i++) this.output(normals[i], sb, false); + +sb.append("}\n}}}\n"); +return sb.toString(); +}, "~S,~A,~A,~A"); +Clazz.defineMethod(c$, "getMeshHeader", +function(type, nFaces, vertexCount, normalCount, colorCount, sb){ +sb.append("RESOURCE_LIST \"MODEL\" {\n").append("RESOURCE_COUNT 1\n").append("RESOURCE 0 {\n").append("RESOURCE_NAME \"").append(type).append("_Mesh\"\n").append("MODEL_TYPE \"MESH\"\n").append("MESH {\n").append("FACE_COUNT ").appendI(nFaces).append("\n").append("MODEL_POSITION_COUNT ").appendI(vertexCount).append("\n").append("MODEL_NORMAL_COUNT ").appendI(normalCount).append("\n").append("MODEL_DIFFUSE_COLOR_COUNT ").appendI(colorCount).append("\n").append("MODEL_SPECULAR_COLOR_COUNT 0\n").append("MODEL_TEXTURE_COORD_COUNT 0\n").append("MODEL_BONE_COUNT 0\n").append("MODEL_SHADING_COUNT 1\n").append("MODEL_SHADING_DESCRIPTION_LIST {\n").append("SHADING_DESCRIPTION 0 {\n").append("TEXTURE_LAYER_COUNT 0\n").append("SHADER_ID 0\n}}\n"); +}, "~S,~N,~N,~N,~N,JU.SB"); +Clazz.overrideMethod(c$, "outputCylinder", +function(ptCenter, pt1, pt2, colix, endcaps, radius, ptX, ptY, checkRadius){ +if (ptX != null) { +if (endcaps == 2) { +this.outputEllipse(ptCenter, pt1, ptX, ptY, colix); +this.tempP3.add2(ptCenter, ptCenter); +this.tempP3.sub(ptX); +this.outputEllipse(ptCenter, pt2, this.tempP3, ptY, colix); +}} else if (endcaps == 3) { +this.outputSphere(pt1, radius * 1.01, colix, true); +this.outputSphere(pt2, radius * 1.01, colix, true); +} else if (endcaps == 2) { +this.outputCircle(pt1, pt2, colix, radius); +this.outputCircle(pt2, pt1, colix, radius); +}if (!this.haveCylinder) { +this.models.append(this.getCylinderResource(false)); +this.haveCylinder = true; +}if (ptX != null && endcaps == 0 && !this.haveCylinderIn) { +this.models.append(this.getCylinderResource(true)); +this.haveCylinderIn = true; +}this.checkPoint(pt1); +this.checkPoint(pt2); +this.addColix(colix, false); +var n = (ptX != null && endcaps == 0 ? 2 : 1); +for (var i = 0; i < n; i++) { +var key = "Cylinder" + (i == 0 ? "_" : "In_") + colix; +var v = this.htNodes.get(key); +if (v == null) { +v = new JU.Lst(); +this.htNodes.put(key, v); +this.addShader(key, colix); +}if (ptX == null) this.cylinderMatrix.setToM3(this.getRotationMatrix(pt1, pt2, radius)); + else this.cylinderMatrix.setToM3(this.getRotationMatrix(ptCenter, pt2, radius, ptX, ptY)); +this.cylinderMatrix.m03 = pt1.x; +this.cylinderMatrix.m13 = pt1.y; +this.cylinderMatrix.m23 = pt1.z; +this.cylinderMatrix.m33 = 1; +v.addLast(this.getParentItem("Jmol", this.cylinderMatrix)); +radius *= 0.95; +} +return true; +}, "JU.P3,JU.P3,JU.P3,~N,~N,~N,JU.P3,JU.P3,~B"); +Clazz.defineMethod(c$, "outputCircle", +function(pt1, pt2, radius, colix, doFill){ +if (doFill) { +this.outputCircle(pt1, pt2, colix, radius); +return; +}}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.defineMethod(c$, "outputEllipse", +function(ptCenter, ptZ, ptX, ptY, colix){ +if (!this.haveCircle) { +this.models.append(this.getCircleResource()); +this.haveCircle = true; +this.cylinderMatrix = new JU.M4(); +}this.addColix(colix, false); +var key = "Ellipse_" + colix; +var v = this.htNodes.get(key); +if (v == null) { +v = new JU.Lst(); +this.htNodes.put(key, v); +this.addShader(key, colix); +}this.checkPoint(ptCenter); +this.cylinderMatrix.setToM3(this.getRotationMatrix(ptCenter, ptZ, 1, ptX, ptY)); +this.cylinderMatrix.m03 = ptZ.x; +this.cylinderMatrix.m13 = ptZ.y; +this.cylinderMatrix.m23 = ptZ.z; +this.cylinderMatrix.m33 = 1; +v.addLast(this.getParentItem("Jmol", this.cylinderMatrix)); +return true; +}, "JU.P3,JU.P3,JU.P3,JU.P3,~N"); +Clazz.defineMethod(c$, "outputCircle", +function(ptCenter, ptPerp, colix, radius){ +if (!this.haveCircle) { +this.models.append(this.getCircleResource()); +this.haveCircle = true; +this.cylinderMatrix = new JU.M4(); +}this.addColix(colix, false); +var key = "Circle_" + colix; +var v = this.htNodes.get(key); +if (v == null) { +v = new JU.Lst(); +this.htNodes.put(key, v); +this.addShader(key, colix); +}this.checkPoint(ptCenter); +this.cylinderMatrix.setToM3(this.getRotationMatrix(ptCenter, ptPerp, radius)); +this.cylinderMatrix.m03 = ptCenter.x; +this.cylinderMatrix.m13 = ptCenter.y; +this.cylinderMatrix.m23 = ptCenter.z; +this.cylinderMatrix.m33 = 1; +v.addLast(this.getParentItem("Jmol", this.cylinderMatrix)); +}, "JU.P3,JU.P3,~N,~N"); +Clazz.defineMethod(c$, "getCylinderResource", +function(inSide){ +var ndeg = 10; +var vertexCount = Clazz.doubleToInt(360 / ndeg) * 2; +var n = Clazz.doubleToInt(vertexCount / 2); +var faces = JU.AU.newInt2(vertexCount); +var fpt = -1; +for (var i = 0; i < n; i++) { +if (inSide) { +faces[++fpt] = Clazz.newIntArray(-1, [i + n, (i + 1) % n, i]); +faces[++fpt] = Clazz.newIntArray(-1, [i + n, (i + 1) % n + n, (i + 1) % n]); +} else { +faces[++fpt] = Clazz.newIntArray(-1, [i, (i + 1) % n, i + n]); +faces[++fpt] = Clazz.newIntArray(-1, [(i + 1) % n, (i + 1) % n + n, i + n]); +}} +var vertexes = new Array(vertexCount); +var normals = new Array(vertexCount); +for (var i = 0; i < n; i++) { +var x = (Math.cos(i * ndeg / 180. * 3.141592653589793)); +var y = (Math.sin(i * ndeg / 180. * 3.141592653589793)); +vertexes[i] = JU.P3.new3(x, y, 0); +normals[i] = JU.P3.new3(x, y, 0); +} +for (var i = 0; i < n; i++) { +var x = (Math.cos((i + 0.5) * ndeg / 180 * 3.141592653589793)); +var y = (Math.sin((i + 0.5) * ndeg / 180 * 3.141592653589793)); +vertexes[i + n] = JU.P3.new3(x, y, 1); +normals[i + n] = normals[i]; +} +if (inSide) for (var i = 0; i < n; i++) normals[i].scale(-1); + +return this.getMeshData(inSide ? "CylinderIn" : "Cylinder", faces, vertexes, normals); +}, "~B"); +Clazz.overrideMethod(c$, "outputFace", +function(face, map, faceVertexMax){ +this.sbTemp.append(" " + map[face[0]] + " " + map[face[1]] + " " + map[face[2]]); +if (faceVertexMax == 4 && face.length == 4) { +this.sbTemp.append(" " + map[face[0]] + " " + map[face[2]] + " " + map[face[3]]); +}}, "~A,~A,~N"); +Clazz.overrideMethod(c$, "outputSurface", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, offset){ +this.addColix(colix, polygonColixes != null || colixes != null); +if (polygonColixes != null) { +return; +}var sbFaceCoordIndices = this.sbTemp = new JU.SB(); +var map = Clazz.newIntArray (nVertices, 0); +var nCoord = this.getCoordinateMap(vertices, map, null); +this.outputIndices(indices, map, nPolygons, bsPolygons, faceVertexMax); +var sbFaceNormalIndices = this.sbTemp = new JU.SB(); +var vNormals = null; +if (normals != null) { +vNormals = new JU.Lst(); +map = this.getNormalMap(normals, nVertices, null, vNormals); +this.outputIndices(indices, map, nPolygons, bsPolygons, faceVertexMax); +}map = null; +var sbColorIndexes = new JU.SB(); +if (colorList != null) { +var isAll = (bsPolygons == null); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsPolygons.nextSetBit(i + 1))) { +sbColorIndexes.append(" " + htColixes.get(Short.$valueOf(colixes[indices[i][0]])) + " " + htColixes.get(Short.$valueOf(colixes[indices[i][1]])) + " " + htColixes.get(Short.$valueOf(colixes[indices[i][2]]))); +if (faceVertexMax == 4 && indices[i].length == 4) sbColorIndexes.append(" " + htColixes.get(Short.$valueOf(colixes[indices[i][0]])) + " " + htColixes.get(Short.$valueOf(colixes[indices[i][2]])) + " " + htColixes.get(Short.$valueOf(colixes[indices[i][3]]))); +} +}var sbCoords = this.sbTemp = new JU.SB(); +this.outputVertices(vertices, nVertices, offset); +var sbNormals = new JU.SB(); +var nNormals = 0; +if (normals != null) { +nNormals = vNormals.size(); +for (var i = 0; i < nNormals; i++) sbNormals.append(vNormals.get(i)); + +vNormals = null; +}var sbColors = new JU.SB(); +var nColors = 0; +if (colorList != null) { +nColors = colorList.size(); +for (var i = 0; i < nColors; i++) { +var c = colorList.get(i).shortValue(); +sbColors.append(this.rgbFractionalFromColix(c)).append(" ").append(J["export"].___Exporter.translucencyFractionalFromColix(c)).append(" "); +} +}var key = "mesh" + (++this.iObj); +this.addMeshData(key, nTriangles, nCoord, nNormals, nColors, sbFaceCoordIndices, sbFaceNormalIndices, sbColorIndexes, sbCoords, sbNormals, sbColors); +var v = new JU.Lst(); +this.htNodes.put(key, v); +this.addShader(key, colix); +this.cylinderMatrix.setIdentity(); +v.addLast(this.getParentItem("Jmol", this.cylinderMatrix)); +}, "~A,~A,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.defineMethod(c$, "addMeshData", +function(key, nFaces, nCoord, nNormals, nColors, sbFaceCoordIndices, sbFaceNormalIndices, sbColorIndices, sbCoords, sbNormals, sbColors){ +this.getMeshHeader(key, nFaces, nCoord, nNormals, nColors, this.models); +this.models.append("MESH_FACE_POSITION_LIST { ").appendSB(sbFaceCoordIndices).append(" }\n").append("MESH_FACE_NORMAL_LIST { ").appendSB(sbFaceNormalIndices).append(" }\n"); +this.models.append("MESH_FACE_SHADING_LIST { "); +for (var i = 0; i < nFaces; i++) this.models.append("0 "); + +this.models.append("}\n"); +if (nColors > 0) this.models.append("MESH_FACE_DIFFUSE_COLOR_LIST { ").appendSB(sbColorIndices).append(" }\n"); +this.models.append("MODEL_POSITION_LIST { ").appendSB(sbCoords).append(" }\n").append("MODEL_NORMAL_LIST { ").appendSB(sbNormals).append(" }\n"); +if (nColors > 0) this.models.append("MODEL_DIFFUSE_COLOR_LIST { ").appendSB(sbColors).append(" }\n"); +this.models.append("}}}\n"); +}, "~S,~N,~N,~N,~N,JU.SB,JU.SB,JU.SB,JU.SB,JU.SB,JU.SB"); +Clazz.overrideMethod(c$, "outputCone", +function(ptBase, ptTip, radius, colix){ +if (!this.haveCone) { +this.models.append(this.getConeResource()); +this.haveCone = true; +}this.checkPoint(ptBase); +this.checkPoint(ptTip); +this.addColix(colix, false); +var key = "Cone_" + colix; +var v = this.htNodes.get(key); +if (v == null) { +v = new JU.Lst(); +this.htNodes.put(key, v); +this.addShader(key, colix); +}this.cylinderMatrix.setToM3(this.getRotationMatrix(ptBase, ptTip, radius)); +this.cylinderMatrix.m03 = ptBase.x; +this.cylinderMatrix.m13 = ptBase.y; +this.cylinderMatrix.m23 = ptBase.z; +this.cylinderMatrix.m33 = 1; +v.addLast(this.getParentItem("Jmol", this.cylinderMatrix)); +}, "JU.P3,JU.P3,~N,~N"); +Clazz.defineMethod(c$, "getConeResource", +function(){ +var m = J["export"].___Exporter.getConeMesh(null, null, 0); +return this.getMeshData("Cone", m.pis, m.vs, m.vs); +}); +Clazz.defineMethod(c$, "getCircleResource", +function(){ +var ndeg = 10; +var n = Clazz.doubleToInt(360 / ndeg); +var vertexCount = n + 1; +var faces = JU.AU.newInt2(n); +for (var i = 0; i < n; i++) faces[i] = Clazz.newIntArray(-1, [i, (i + 1) % n, n]); + +var vertexes = new Array(vertexCount); +var normals = new Array(vertexCount); +for (var i = 0; i < n; i++) { +var x = (Math.cos(i * ndeg / 180. * 3.141592653589793)); +var y = (Math.sin(i * ndeg / 180. * 3.141592653589793)); +vertexes[i] = JU.P3.new3(x, y, 0); +normals[i] = JU.P3.new3(0, 0, 1); +} +vertexes[n] = JU.P3.new3(0, 0, 0); +normals[n] = JU.P3.new3(0, 0, 1); +return this.getMeshData("Circle", faces, vertexes, normals); +}); +Clazz.overrideMethod(c$, "outputSphere", +function(center, radius, colix, checkRadius){ +this.setSphereMatrix(center, radius, radius, radius, null, this.sphereMatrix); +this.outputEllipsoid(center, this.sphereMatrix, colix); +}, "JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputTextPixel", +function(pt, argb){ +var colix = JU.C.getColix(argb); +this.outputSphere(pt, 0.02, colix, true); +}, "JU.P3,~N"); +Clazz.overrideMethod(c$, "outputTriangle", +function(pt1, pt2, pt3, colix){ +this.addColix(colix, false); +var key = "T" + (++this.iObj); +this.models.append(this.getTriangleResource(key, pt1, pt2, pt3)); +var v = new JU.Lst(); +this.htNodes.put(key, v); +this.addShader(key, colix); +if (this.cylinderMatrix == null) this.cylinderMatrix = new JU.M4(); +this.cylinderMatrix.setIdentity(); +v.addLast(this.getParentItem("Jmol", this.cylinderMatrix)); +}, "JU.T3,JU.T3,JU.T3,~N"); +Clazz.defineMethod(c$, "getTriangleResource", +function(key, pt1, pt2, pt3){ +var vertexes = Clazz.newArray(-1, [pt1, pt2, pt3]); +this.tempV1.sub2(pt3, pt1); +this.tempV2.sub2(pt2, pt1); +this.tempV2.cross(this.tempV2, this.tempV1); +this.tempV2.normalize(); +var normals = Clazz.newArray(-1, [this.tempV2, this.tempV2, this.tempV2]); +return this.getMeshData(key, this.triangleFace, vertexes, normals); +}, "~S,JU.T3,JU.T3,JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/_MayaExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/_MayaExporter.js new file mode 100755 index 000000000000..70563863c63d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/_MayaExporter.js @@ -0,0 +1,127 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.__CartesianExporter"], "J.export._MayaExporter", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nBalls = 0; +this.nCyl = 0; +this.name = null; +this.id = null; +Clazz.instantialize(this, arguments);}, J["export"], "_MayaExporter", J["export"].__CartesianExporter); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"]._MayaExporter, []); +this.commentChar = "// "; +}); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.output("// Maya ASCII 8.5 scene\n"); +this.output("// Name: ball_stripped.ma\n"); +this.output("// Last modified: Thu, Jul 5, 2007 10:25:55 PM\n"); +this.output("// Codeset: UTF-8\n"); +this.output("requires maya \"8.5\";\n"); +this.output("currentUnit -l centimeter -a degree -t film;\n"); +this.output("fileInfo \"application\" \"maya\";\n"); +this.output("fileInfo \"product\" \"Maya Unlimited 8.5\";\n"); +this.output("fileInfo \"version\" \"8.5\";\n"); +this.output("fileInfo \"cutIdentifier\" \"200612170012-692032\";\n"); +this.output("fileInfo \"osv\" \"Mac OS X 10.4.9\"; \n"); +}); +Clazz.defineMethod(c$, "addAttr", +function(){ +this.output(" setAttr -k off \".v\";\n"); +this.output(" setAttr \".vir\" yes;\n"); +this.output(" setAttr \".vif\" yes;\n"); +this.output(" setAttr \".tw\" yes;\n"); +this.output(" setAttr \".covm[0]\" 0 1 1;\n"); +this.output(" setAttr \".cdvm[0]\" 0 1 1;\n"); +}); +Clazz.defineMethod(c$, "addConnect", +function(){ +this.output(" connectAttr \"make" + this.name + ".os\" \"" + this.id + ".cr\";\n"); +this.output("connectAttr \"" + this.id + ".iog\" \":initialShadingGroup.dsm\" -na;\n"); +}); +Clazz.defineMethod(c$, "setAttr", +function(attr, val){ +this.output(" setAttr \"." + attr + "\" " + val + ";\n"); +}, "~S,~N"); +Clazz.defineMethod(c$, "setAttr", +function(attr, val){ +this.output(" setAttr \"." + attr + "\" " + val + ";\n"); +}, "~S,~N"); +Clazz.defineMethod(c$, "setAttr", +function(attr, pt){ +this.output(" setAttr \"." + attr + "\" -type \"double3\" " + pt.x + " " + pt.y + " " + pt.z + ";\n"); +}, "~S,JU.T3"); +Clazz.overrideMethod(c$, "outputCylinder", +function(ptCenter, pt1, pt2, colix, endcaps, radius, ptX, ptY, checkRadius){ +if (ptX != null) return false; +this.nCyl++; +this.name = "nurbsCylinder" + this.nCyl; +this.id = "nurbsCylinderShape" + this.nCyl; +this.output(" createNode transform -n \"" + this.name + "\";\n"); +var length = pt1.distance(pt2); +this.tempV1.ave(pt2, pt1); +this.setAttr("t", this.tempV1); +this.tempV1.sub(pt1); +this.tempV2.setT(this.tempV1); +this.tempV2.normalize(); +var r = this.tempV1.length(); +var rX = (Math.acos(this.tempV1.y / r) * 57.29577951308232); +if (this.tempV1.x < 0) rX += 180; +var rY = (Math.atan2(this.tempV1.x, this.tempV1.z) * 57.29577951308232); +this.tempV2.set(rX, rY, 0); +this.setAttr("r", this.tempV2); +this.output(" createNode nurbsSurface -n \"" + this.id + "\" -p \"" + this.name + "\";\n"); +this.addAttr(); +this.output("createNode makeNurbCylinder -n \"make" + this.name + "\";\n"); +this.output(" setAttr \".ax\" -type \"double3\" 0 1 0;\n"); +this.setAttr("r", radius); +this.setAttr("s", 4); +this.setAttr("hr", length / radius); +this.addConnect(); +return true; +}, "JU.P3,JU.P3,JU.P3,~N,~N,~N,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "outputSphere", +function(pt, radius, colix, checkRadius){ +this.nBalls++; +this.name = "nurbsSphere" + this.nBalls; +this.id = "nurbsSphereShape" + this.nBalls; +this.output("createNode transform -n \"" + this.name + "\";\n"); +this.setAttr("t", pt); +this.output("createNode nurbsSurface -n \"" + this.id + "\" -p \"" + this.name + "\";\n"); +this.addAttr(); +this.output("createNode makeNurbSphere -n \"make" + this.name + "\";\n"); +this.output(" setAttr \".ax\" -type \"double3\" 0 1 0;\n"); +this.setAttr("r", radius); +this.setAttr("s", 4); +this.setAttr("nsp", 3); +this.addConnect(); +}, "JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "drawTextPixel", +function(argb, x, y, z){ +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputTextPixel", +function(pt, argb){ +}, "JU.P3,~N"); +Clazz.overrideMethod(c$, "outputSurface", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, offset){ +}, "~A,~A,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.overrideMethod(c$, "outputTriangle", +function(pt1, pt2, pt3, colix){ +}, "JU.T3,JU.T3,JU.T3,~N"); +Clazz.overrideMethod(c$, "outputCircle", +function(pt1, pt2, radius, colix, doFill){ +}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCone", +function(ptBase, ptTip, radius, colix){ +}, "JU.P3,JU.P3,~N,~N"); +Clazz.overrideMethod(c$, "outputEllipsoid", +function(center, points, colix){ +}, "JU.P3,~A,~N"); +Clazz.overrideMethod(c$, "outputFace", +function(is, coordMap, faceVertexMax){ +}, "~A,~A,~N"); +Clazz.defineMethod(c$, "output", +function(pt){ +}, "JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/_ObjExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/_ObjExporter.js new file mode 100755 index 000000000000..8512a6efd0d0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/_ObjExporter.js @@ -0,0 +1,503 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.__CartesianExporter", "java.util.HashSet", "JU.P3"], "J.export._ObjExporter", ["java.util.Hashtable", "JU.AU", "$.BS", "$.CU", "$.Lst", "$.M4", "$.PT", "$.Quat", "$.SB", "$.V3", "J.export.MeshData", "JU.Escape", "$.Logger", "$.MeshSurface", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.surfacesOnly = false; +this.normalizeUV = true; +this.mtlout = null; +this.objFileRootName = null; +this.nMtlBytes = 0; +this.textures = null; +this.textureFiles = null; +this.sphereNum = 1; +this.cylinderNum = 1; +this.ellipseNum = 1; +this.circleNum = 1; +this.ellipsoidNum = 1; +this.coneNum = 1; +this.triangleNum = 1; +this.surfaceNum = 1; +this.currentVertexOrigin = 1; +this.currentNormalOrigin = 1; +this.currentTextureOrigin = 1; +this.ptTemp = null; +Clazz.instantialize(this, arguments);}, J["export"], "_ObjExporter", J["export"].__CartesianExporter); +Clazz.prepareFields (c$, function(){ +this.textures = new java.util.HashSet(); +this.ptTemp = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"]._ObjExporter, []); +this.debugPrint("_WavefrontObjExporter CTOR"); +this.commentChar = "# "; +}); +Clazz.defineMethod(c$, "debugPrint", +function(string){ +if (false) { +JU.Logger.debug(string); +}}, "~S"); +Clazz.overrideMethod(c$, "outputFace", +function(face, map, faceVertexMax){ +}, "~A,~A,~N"); +Clazz.overrideMethod(c$, "outputCircle", +function(pt1, pt2, radius, colix, doFill){ +this.debugPrint("outputCircle"); +if (this.surfacesOnly) { +this.debugPrint(" Not done owing to surfacesOnly"); +return; +}if (doFill) { +this.outputCircle1(pt1, pt2, colix, radius); +}}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCone", +function(ptBase, ptTip, radius, colix){ +this.debugPrint("outputCone"); +if (this.surfacesOnly) { +this.debugPrint(" Not done owing to surfacesOnly"); +return; +}this.outputCone1(ptBase, ptTip, radius, colix); +}, "JU.P3,JU.P3,~N,~N"); +Clazz.overrideMethod(c$, "outputCylinder", +function(ptCenter, pt1, pt2, colix, endcaps, radius, ptX, ptY, checkRadius){ +if (false) { +this.debugPrint("outputCylinder: colix=" + String.format("%04x", [Short.$valueOf(colix)])); +this.debugPrint(" ptCenter=" + ptCenter); +this.debugPrint(" pt1=" + pt1); +this.debugPrint(" endcaps=" + endcaps + " NONE=" + 0 + " FLAT=" + 2 + " SPHERICAL=" + 3); +this.debugPrint(" radius=" + radius); +this.debugPrint(" pt2=" + pt2); +this.debugPrint(" ptX=" + ptX); +this.debugPrint(" ptY=" + ptY); +}if (this.surfacesOnly) { +this.debugPrint(" Not done owing to surfacesOnly"); +return true; +}if (ptX != null) { +if (endcaps == 2) { +this.outputEllipse1(ptCenter, pt1, ptX, ptY, colix); +this.tempP3.add2(ptCenter, ptCenter); +this.tempP3.sub(ptX); +this.outputEllipse1(ptCenter, pt2, this.tempP3, ptY, colix); +}} else if (endcaps == 3) { +this.outputSphere(pt1, radius * 1.01, colix, true); +this.outputSphere(pt2, radius * 1.01, colix, true); +} else if (endcaps == 2) { +this.outputCircle1(pt1, pt2, colix, radius); +this.outputCircle1(pt2, pt1, colix, radius); +}this.outputCylinder1(ptCenter, pt1, pt2, colix, endcaps, radius, ptX, ptY); +return true; +}, "JU.P3,JU.P3,JU.P3,~N,~N,~N,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "outputEllipsoid", +function(center, points, colix){ +if (false) { +this.debugPrint("outputEllipsoid: colix=" + String.format("%04x", [Short.$valueOf(colix)])); +this.debugPrint(" center=" + center); +this.debugPrint(" points[0]=" + points[0]); +this.debugPrint(" points[1]=" + points[1]); +this.debugPrint(" points[2]=" + points[2]); +}if (this.surfacesOnly) { +this.debugPrint(" Not done owing to surfacesOnly"); +return; +}var a = JU.Quat.getQuaternionFrame(center, points[1], points[3]).toAxisAngle4f(); +var sx = points[1].distance(center); +var sy = points[3].distance(center); +var sz = points[5].distance(center); +this.outputEllipsoid1(center, sx, sy, sz, a, colix); +}, "JU.P3,~A,~N"); +Clazz.overrideMethod(c$, "outputSphere", +function(center, radius, colix, checkRadius){ +if (false) { +this.debugPrint("outputSphere: colix=" + String.format("%04x", [Short.$valueOf(colix)])); +this.debugPrint(" center.getClass().getName()=" + center.getClass().getName()); +this.debugPrint(" center=" + center); +this.debugPrint(" center.x=" + center.x); +this.debugPrint(" center.y=" + center.y); +this.debugPrint(" center.z=" + center.z); +this.debugPrint(" radius=" + radius); +}if (this.surfacesOnly) { +this.debugPrint(" Not done owing to surfacesOnly"); +return; +}this.outputEllipsoid1(center, radius, radius, radius, null, colix); +}, "JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputTextPixel", +function(pt, argb){ +}, "JU.P3,~N"); +Clazz.overrideMethod(c$, "outputTriangle", +function(pt1, pt2, pt3, colix){ +if (this.surfacesOnly) { +return; +}this.outputTriangle1(pt1, pt2, pt3, colix); +}, "JU.T3,JU.T3,JU.T3,~N"); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.debugPrint("outputHeader"); +this.output("#obj Created by Jmol " + JV.Viewer.getJmolVersion() + "\n"); +}); +Clazz.defineMethod(c$, "output", +function(pt){ +this.debugPrint("output"); +}, "JU.T3"); +Clazz.overrideMethod(c$, "drawSurface", +function(meshSurface, colix){ +if (JU.Logger.debugging) { +this.debugPrint("outputSurface"); +this.debugPrint(" nVertices=" + meshSurface.vc); +if (meshSurface.normals == null) { +this.debugPrint(" no vertex normals"); +} else { +this.debugPrint(" nNormals=" + meshSurface.vc); +}if (meshSurface.vcs == null) { +this.debugPrint(" no vertex colors"); +} else { +this.debugPrint(" nColixes=" + meshSurface.vc); +}this.debugPrint(" number of triangles or quads=" + meshSurface.pc); +if (meshSurface.pcs == null) { +this.debugPrint(" no face colors"); +} else { +this.debugPrint(" nPolygonColixes=" + meshSurface.pc); +}if (meshSurface.bsPolygons == null) { +this.debugPrint(" all polygons used"); +} else { +this.debugPrint(" number of polygons used=" + meshSurface.bsPolygons.cardinality()); +}this.debugPrint(" solid color=" + this.gdata.getColorArgbOrGray(colix)); +}var bsPolygons = meshSurface.bsPolygons; +var nPolygons = meshSurface.pc; +if (meshSurface.normals != null) meshSurface.normalCount = meshSurface.vc; +var isAll = (bsPolygons == null); +var faces = JU.AU.newInt2(isAll ? nPolygons : bsPolygons.cardinality()); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0, ipt = 0; i >= 0; i = isAll ? i - 1 : bsPolygons.nextSetBit(i + 1)) { +var polygon = meshSurface.pis[i]; +faces[ipt++] = (meshSurface.haveQuads ? polygon : Clazz.newIntArray(-1, [polygon[0], polygon[1], polygon[2]])); +} +var data = JU.MeshSurface.newMesh(false, meshSurface.vs, meshSurface.vc, faces, meshSurface.normals, 0); +data.vcs = meshSurface.vcs; +var name = "Surface" + this.surfaceNum++; +var isSolidColor = (colix != 0); +this.addTexture(colix, isSolidColor ? null : name); +var dim = null; +if (isSolidColor) { +this.debugPrint("outputSurface: coloring solid"); +this.debugPrint(" Omitting texture map"); +} else { +var nFaces = faces.length; +var width = Clazz.doubleToInt(Math.ceil(Math.sqrt(nFaces))); +var height = Clazz.doubleToInt(nFaces / width); +if (nFaces % width != 0) { +height++; +}dim = Clazz.newIntArray(-1, [width, height]); +this.debugPrint(" width=" + width + " height=" + height + " size = " + (width * height)); +var file = this.createTextureFile(name, data, dim); +if (file == null || file.getByteCount() == 0) { +System.out.println("Error creating texture file: " + name); +this.textureFiles.addLast("Error creating texture file: " + name); +return; +}this.textureFiles.addLast(file.getByteCount() + " (" + width + "x" + height + ") " + name); +var shortName = file.getName(); +this.outputMtl(" map_Kd " + shortName + "\n"); +this.outputMtl(" map_Ka " + shortName + "\n"); +}var matrix = JU.M4.newM4(null); +matrix.setTranslation(JU.V3.newV(meshSurface.offset)); +var bsValid = new JU.BS(); +this.addMesh(name, data, matrix, null, colix, dim, bsValid); +}, "JU.MeshSurface,~N"); +Clazz.overrideMethod(c$, "initializeOutput", +function(vwr, privateKey, gdata, params){ +this.debugPrint("initializeOutput: + output"); +var retVal = this.initOutput(vwr, privateKey, gdata, params); +if (!retVal) { +this.debugPrint("End initializeOutput (error in super):"); +return false; +}if (this.fileName == null) { +throw new NullPointerException("Cannot output two files (OBJ and MTL) to string"); +}var dot = this.fileName.lastIndexOf("."); +if (dot < 0) { +this.debugPrint("End initializeOutput (Error creating .mtl file):"); +return false; +}this.objFileRootName = this.fileName.substring(0, dot); +try { +var mtlFileName = this.objFileRootName + ".mtl"; +this.mtlout = vwr.openExportChannel(privateKey, mtlFileName, true); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.debugPrint("End initializeOutput (" + ex.getMessage() + "):"); +return false; +} else { +throw ex; +} +} +this.outputMtl("# Created by Jmol " + JV.Viewer.getJmolVersion() + "\n"); +this.output("\nmtllib " + this.mtlout.getName() + "\n"); +this.textureFiles = new JU.Lst(); +this.debugPrint("End initializeOutput:"); +return true; +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz.overrideMethod(c$, "finalizeOutput", +function(){ +this.debugPrint("finalizeOutput"); +var retVal = this.finalizeOutput2(); +var ret = this.mtlout.closeChannel(); +if (ret != null) { +JU.Logger.info(ret); +ret = "ERROR EXPORTING MTL FILE: " + ret; +if (retVal.startsWith("OK")) return ret; +return retVal + " and " + ret; +}retVal += ", " + this.nMtlBytes + " " + this.mtlout.getFileName(); +for (var string, $string = this.textureFiles.iterator (); $string.hasNext()&& ((string = $string.next ()) || true);) { +retVal += ", " + string; +} +this.debugPrint(retVal); +this.debugPrint("End finalizeOutput:"); +return retVal; +}); +Clazz.defineMethod(c$, "outputMtl", +function(data){ +this.nMtlBytes += data.length; +this.mtlout.append(data); +}, "~S"); +Clazz.defineMethod(c$, "getTextureName", +function(colix){ +return "k" + JU.Escape.getHexColorFromRGB(this.gdata.getColorArgbOrGray(colix)); +}, "~N"); +Clazz.defineMethod(c$, "outputCircle1", +function(ptCenter, ptPerp, colix, radius){ +var data = J["export"].MeshData.getCircleData(); +var matrix = new JU.M4(); +this.addTexture(colix, null); +var name = "Circle" + this.circleNum++; +matrix.setToM3(this.getRotationMatrix(ptCenter, ptPerp, radius)); +matrix.m03 = ptCenter.x; +matrix.m13 = ptCenter.y; +matrix.m23 = ptCenter.z; +matrix.m33 = 1; +this.addMesh(name, data, matrix, matrix, colix, null, null); +}, "JU.P3,JU.P3,~N,~N"); +Clazz.defineMethod(c$, "outputCone1", +function(ptBase, ptTip, radius, colix){ +var data = J["export"].MeshData.getConeData(); +var matrix = new JU.M4(); +this.addTexture(colix, null); +var name = "Cone" + this.coneNum++; +matrix.setToM3(this.getRotationMatrix(ptBase, ptTip, radius)); +matrix.m03 = ptBase.x; +matrix.m13 = ptBase.y; +matrix.m23 = ptBase.z; +matrix.m33 = 1; +this.addMesh(name, data, matrix, matrix, colix, null, null); +}, "JU.P3,JU.P3,~N,~N"); +Clazz.defineMethod(c$, "outputEllipse1", +function(ptCenter, ptZ, ptX, ptY, colix){ +var data = J["export"].MeshData.getCircleData(); +var matrix = new JU.M4(); +this.addTexture(colix, null); +var name = "Ellipse" + this.ellipseNum++; +matrix.setToM3(this.getRotationMatrix(ptCenter, ptZ, 1, ptX, ptY)); +matrix.m03 = ptZ.x; +matrix.m13 = ptZ.y; +matrix.m23 = ptZ.z; +matrix.m33 = 1; +this.addMesh(name, data, matrix, matrix, colix, null, null); +return true; +}, "JU.P3,JU.P3,JU.P3,JU.P3,~N"); +Clazz.defineMethod(c$, "outputEllipsoid1", +function(center, rx, ry, rz, a, colix){ +var data = JU.MeshSurface.getSphereData(3); +this.addTexture(colix, null); +var name; +if (Clazz.instanceOf(center,"JM.Atom")) { +var atom = center; +name = JU.PT.replaceAllCharacters(atom.getAtomName(), " \t", "") + "_Atom"; +} else if (rx == ry && rx == rz) { +name = "Sphere" + this.sphereNum++; +} else { +name = "Ellipsoid" + this.ellipsoidNum++; +}this.setSphereMatrix(center, rx, ry, rz, a, this.sphereMatrix); +this.addMesh(name, data, this.sphereMatrix, this.sphereMatrix, colix, null, null); +}, "JU.T3,~N,~N,~N,JU.A4,~N"); +Clazz.defineMethod(c$, "outputCylinder1", +function(ptCenter, pt1, pt2, colix, endcaps, radius, ptX, ptY){ +var data = J["export"].MeshData.getCylinderData(false); +var matrix = new JU.M4(); +this.addTexture(colix, null); +var name = "Cylinder" + this.cylinderNum++; +var n = (ptX != null && endcaps == 0 ? 2 : 1); +for (var i = 0; i < n; i++) { +if (ptX == null) matrix.setToM3(this.getRotationMatrix(pt1, pt2, radius)); + else matrix.setToM3(this.getRotationMatrix(ptCenter, pt2, radius, ptX, ptY)); +matrix.m03 = pt1.x; +matrix.m13 = pt1.y; +matrix.m23 = pt1.z; +matrix.m33 = 1; +} +this.addMesh(name, data, matrix, matrix, colix, null, null); +}, "JU.P3,JU.P3,JU.P3,~N,~N,~N,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "outputTriangle1", +function(pt1, pt2, pt3, colix){ +var data = J["export"].MeshData.getTriangleData(pt1, pt2, pt3); +this.addTexture(colix, null); +var name = "Triangle" + this.triangleNum++; +var matrix = JU.M4.newM4(null); +this.addMesh(name, data, matrix, matrix, colix, null, null); +}, "JU.T3,JU.T3,JU.T3,~N"); +Clazz.defineMethod(c$, "addTexture", +function(colix, name){ +var scolix = Short.$valueOf(colix); +if (name == null && this.textures.contains(scolix)) { +return; +}this.textures.add(scolix); +var sb = new JU.SB(); +sb.append("\nnewmtl " + (name == null ? this.getTextureName(colix) : name) + "\n"); +sb.append(" Ns 163\n"); +sb.append(" Tr " + J["export"].___Exporter.opacityFractionalFromColix(colix) + "\n"); +sb.append(" Ni 0.001\n"); +sb.append(" illum 2\n"); +sb.append(" Ka 0.20 0.20 0.20\n"); +sb.append(" Kd " + this.rgbFractionalFromColix(colix) + "\n"); +sb.append(" Ks 0.25 0.25 0.25\n"); +this.outputMtl(sb.toString()); +}, "~N,~S"); +Clazz.defineMethod(c$, "addMesh", +function(name, data, matrix, matrix1, colix, dim, bsValid){ +if (this.surfacesOnly) { +if (name == null || !name.startsWith("Surface")) { +return; +}}this.output("\ng " + name + "\n"); +this.output("usemtl " + (dim == null ? this.getTextureName(colix) : name) + "\n"); +var faces = data.getFaces(); +var nFaces = faces.length; +if (bsValid != null) for (var face, $face = 0, $$face = faces; $face < $$face.length && ((face = $$face[$face]) || true); $face++) for (var i, $i = 0, $$i = face; $i < $$i.length && ((i = $$i[$i]) || true); $i++) bsValid.set(i); + + +var vertices = data.getVertices(); +var nVertices = data.vc; +var map = Clazz.newIntArray (nVertices, 0); +var nCoord = this.getCoordinateMap(vertices, map, bsValid); +this.output("# Number of vertices: " + nCoord + "\n"); +this.outputList(vertices, nVertices, matrix, "v ", bsValid); +nVertices = nCoord; +var normals = data.normals; +var nNormals = data.normalCount; +var map2 = null; +var vNormals = null; +if (normals != null) { +vNormals = new JU.Lst(); +map2 = this.getNormalMap(normals, nNormals, bsValid, vNormals); +nNormals = vNormals.size(); +this.output("# Number of normals: " + nNormals + "\n"); +for (var i = 0; i < nNormals; i++) this.output("vn " + vNormals.get(i)); + +}if (dim != null) { +this.output("# Number of texture coordinates: " + nFaces + "\n"); +var width = dim[0]; +var height = dim[1]; +var u; +var v; +for (var row = 0, iFace = 0; row < height; row++) { +v = row + .5; +if (this.normalizeUV) v /= height; +for (var col = 0; col < width; col++) { +u = col + .5; +if (this.normalizeUV) u /= width; +this.output("vt " + u + " " + v + "\n"); +if (++iFace == nFaces) break; +} +} +if (!this.normalizeUV) { +this.output("vt 0.0 0.0\n"); +this.output("vt " + width + " " + height + "\n"); +}}this.output("# Number of faces: " + nFaces + "\n"); +for (var i = 0; i < nFaces; i++) if (dim != null) this.outputFace2(faces[i], i, map, map2); + else this.outputFace1(faces[i], map, map2); + +if (dim != null) this.currentTextureOrigin += nFaces; +this.currentVertexOrigin += nVertices; +this.currentNormalOrigin += nNormals; +}, "~S,JU.MeshSurface,JU.M4,JU.M4,~N,~A,JU.BS"); +Clazz.defineMethod(c$, "outputList", +function(pts, nPts, m, prefix, bsValid){ +for (var i = 0; i < nPts; i++) { +if (bsValid != null && !bsValid.get(i)) continue; +this.ptTemp.setT(pts[i]); +if (m != null) m.rotTrans(this.ptTemp); +this.output(prefix + this.ptTemp.x + " " + this.ptTemp.y + " " + this.ptTemp.z + "\n"); +} +}, "~A,~N,JU.M4,~S,JU.BS"); +Clazz.defineMethod(c$, "outputFace1", +function(face, map, map2){ +this.output("f"); +for (var i, $i = 0, $$i = face; $i < $$i.length && ((i = $$i[$i]) || true); $i++) this.output(" " + ((map == null ? i : map[i]) + this.currentVertexOrigin) + "//" + ((map2 == null ? i : map2[i]) + this.currentNormalOrigin)); + +this.output("\n"); +}, "~A,~A,~A"); +Clazz.defineMethod(c$, "outputFace2", +function(face, vt, map, map2){ +this.output("f"); +for (var i, $i = 0, $$i = face; $i < $$i.length && ((i = $$i[$i]) || true); $i++) { +this.output(" " + ((map == null ? i : map[i]) + this.currentVertexOrigin) + "/" + (this.currentTextureOrigin + vt) + "/" + ((map2 == null ? i : map2[i]) + this.currentNormalOrigin)); +} +this.output("\n"); +}, "~A,~N,~A,~A"); +Clazz.defineMethod(c$, "createTextureFile", +function(name, data, dim){ +this.debugPrint("createTextureFile: " + name); +var colixes = (data.pcs == null ? data.vcs : data.pcs); +if (colixes == null || colixes.length == 0) { +this.debugPrint("createTextureFile: Array problem"); +this.debugPrint(" colixes=" + colixes + " data=" + data); +if (colixes != null) { +this.debugPrint(" colixes.length=" + colixes.length); +}return null; +}var nUsed = data.pis.length; +if (nUsed <= 0) { +this.debugPrint("createTextureFile: nFaces = 0"); +return null; +}var width = dim[0]; +var height = dim[1]; +var textureType = "png"; +var row = height - 1; +var col = 0; +var sum = new JU.P3(); +var w = width * 3; +var h = height * 3; +var bytes = (textureType.equals("tga") ? Clazz.newByteArray (h, w * 3, 0) : null); +var rgbbuf = (bytes == null ? Clazz.newIntArray (h * w, 0) : null); +var ptTemp = new JU.P3(); +for (var i = 0; i < data.pis.length; i++) { +var rgb; +if (data.pcs == null) { +var face = data.pis[i]; +sum.set(0, 0, 0); +for (var iVertex, $iVertex = 0, $$iVertex = face; $iVertex < $$iVertex.length && ((iVertex = $$iVertex[$iVertex]) || true); $iVertex++) sum.add(JU.CU.colorPtFromInt(this.gdata.getColorArgbOrGray(colixes[iVertex]), ptTemp)); + +sum.scale(1.0 / face.length); +rgb = JU.CU.colorPtToFFRGB(sum); +} else { +rgb = this.gdata.getColorArgbOrGray(colixes[i]); +}if (bytes == null) { +for (var j = 0; j < 3; j++) for (var k = 0; k < 3; k++) rgbbuf[(row * 3 + k) * w + col * 3 + j] = rgb; + + +} else { +}if ((col = (col + 1) % width) == 0) row--; +} +try { +var params = new java.util.Hashtable(); +var fname = this.fileName; +if (rgbbuf != null) { +params.put("rgbbuf", rgbbuf); +params.put("fileName", this.objFileRootName + "_" + name + "." + textureType); +params.put("type", textureType); +params.put("width", Integer.$valueOf(w)); +params.put("height", Integer.$valueOf(h)); +fname = this.fileName = this.vwr.outputToFile(params); +}this.debugPrint("End createTextureFile: " + fname); +return params.get("outputChannel"); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.debugPrint("End createTextureFile (" + ex.getMessage() + "):"); +return null; +} else { +throw ex; +} +} +}, "~S,JU.MeshSurface,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/_PovrayExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/_PovrayExporter.js new file mode 100755 index 000000000000..f6d4429e9d4c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/_PovrayExporter.js @@ -0,0 +1,245 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.__RayTracerExporter"], "J.export._PovrayExporter", ["JU.Measure", "$.P4", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveMacros = false; +Clazz.instantialize(this, arguments);}, J["export"], "_PovrayExporter", J["export"].__RayTracerExporter); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"]._PovrayExporter, []); +this.commentChar = "// "; +}); +Clazz.overrideMethod(c$, "finalizeOutput", +function(){ +this.finalizeOutput2(); +return this.getAuxiliaryFileData(); +}); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.initVars(); +this.output("// ******************************************************\n"); +this.output("// Created by Jmol " + JV.Viewer.getJmolVersion() + "\n"); +this.output("//\n"); +this.output("// This script was generated on " + this.getExportDate() + "\n"); +this.output("// ******************************************************\n"); +try { +this.output(this.vwr.getWrappedStateScript()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.output("\n"); +this.output(this.getJmolPerspective()); +this.output("\n"); +this.output("// ******************************************************\n"); +this.output("// Declare the resolution, camera, and light sources.\n"); +this.output("// ******************************************************\n"); +this.output("\n"); +this.output("// NOTE: if you plan to render at a different resolution,\n"); +this.output("// be sure to update the following two lines to maintain\n"); +this.output("// the correct aspect ratio.\n\n"); +this.output("#declare Width = " + this.screenWidth + ";\n"); +this.output("#declare Height = " + this.screenHeight + ";\n"); +this.output("#declare minScreenDimension = " + this.minScreenDimension + ";\n"); +this.output("#declare showAtoms = true;\n"); +this.output("#declare showBonds = true;\n"); +this.output("#declare noShadows = true;\n"); +this.output("camera{\n"); +var offsetX; +var offsetY; +var f; +if (this.wasPerspective) { +offsetX = this.vwr.tm.getTranslationXPercent() / 100 * this.screenWidth; +offsetY = this.vwr.tm.getTranslationYPercent() / 100 * this.screenHeight; +f = 1 / this.vwr.tm.getPerspectiveFactor((this.vwr.tm.getCameraDepth() - 0.5) * this.vwr.getScreenDim()); +this.output(" perspective\n"); +this.output(" angle " + this.apertureAngle + "\n"); +this.output(" right < " + this.screenWidth + ", 0, 0>\n"); +this.output(" up < 0, " + -this.screenHeight + ", 0 >\n"); +} else { +offsetX = offsetY = f = 0; +this.output(" orthographic\n"); +this.output(" right < " + -this.screenWidth + ", 0, 0>\n"); +this.output(" up < 0, " + this.screenHeight + ", 0 >\n"); +}this.output(" sky < 0, -1, 0 >\n"); +this.output(" location < " + (this.screenWidth / 2 + offsetX) + ", " + (this.screenHeight / 2 + offsetY) + ", 0>\n"); +this.output(" look_at < " + (this.screenWidth / 2 + f * offsetX) + ", " + (this.screenHeight / 2 + f * offsetY) + ", 1000 >\n"); +this.output("}\n"); +this.output("\n"); +this.output("background { color rgb <" + this.rgbFractionalFromColix(this.backgroundColix) + "> }\n"); +this.output("\n"); +var distance = Math.max(this.screenWidth, this.screenHeight); +this.output("light_source { <" + this.lightSource.x * distance + "," + this.lightSource.y * distance + ", " + (-1 * this.lightSource.z * distance) + "> " + " rgb <0.6,0.6,0.6> }\n"); +this.output("\n"); +this.output("\n"); +this.output("// ***********************************************\n"); +this.output("// macros for common shapes\n"); +this.output("// ***********************************************\n"); +this.output("\n"); +this.writeMacros(); +}); +Clazz.defineMethod(c$, "writeMacros", +function(){ +this.output("#default { finish {\n" + " ambient " + this.gdata.getAmbientPercent() / 100 + "\n" + " diffuse " + this.gdata.getDiffusePercent() / 100 + "\n" + " specular " + this.gdata.getSpecularPercent() / 100 + "\n" + " roughness .00001\n metallic\n phong 0.9\n phong_size 120\n}}" + "\n\n"); +this.output("#macro check_shadow()\n #if (noShadows)\n no_shadow \n #end\n#end\n\n"); +this.output("#declare slabZ = " + this.slabZ + ";\n" + "#declare depthZ = " + this.depthZ + ";\n" + "#declare dzSlab = 10;\n" + "#declare dzDepth = dzSlab;\n" + "#declare dzStep = 0.001;\n\n"); +this.output("#macro clip()\n clipped_by { box {<0,0,slabZ>,} }\n#end\n\n"); +this.output("#macro circleCap(Z,RADIUS,R,G,B,T)\n// cap for lower clip\n #local cutDiff = Z - slabZ;\n #local cutRadius2 = (RADIUS*RADIUS) - (cutDiff*cutDiff);\n #if (cutRadius2 > 0)\n #local cutRadius = sqrt(cutRadius2);\n #if (dzSlab > 0)\n #declare dzSlab = dzSlab - dzStep;\n #end\n cylinder{,,cutRadius\n pigment{rgbt}\n translucentFinish(T)\n check_shadow()}\n #end\n// cap for upper clip\n #declare cutDiff = Z - depthZ;\n #declare cutRadius2 = (RADIUS*RADIUS) - (cutDiff*cutDiff);\n #if (cutRadius2 > 0)\n #local cutRadius = sqrt(cutRadius2);\n #if (dzDepth > 0)\n #declare dzDepth = dzDepth - dzStep;\n #end\n cylinder{,,cutRadius\n pigment{rgbt}\n translucentFinish(T)\n check_shadow()}\n #end\n#end\n\n"); +this.writeMacrosFinish(); +this.writeMacrosAtom(); +this.writeMacrosBond(); +}); +Clazz.defineMethod(c$, "writeMacrosFinish", +function(){ +this.output("#macro translucentFinish(T)\n" + " #local shineFactor = T;\n" + " #if (T <= 0.25)\n" + " #declare shineFactor = (1.0-4*T);\n" + " #end\n" + " #if (T > 0.25)\n" + " #declare shineFactor = 0;\n" + " #end\n" + " finish {\n" + " ambient " + this.gdata.getAmbientPercent() / 100 + "\n" + " diffuse " + this.gdata.getDiffusePercent() / 100 + "\n" + " specular " + this.gdata.getSpecularPercent() / 100 + "\n" + " roughness .00001\n" + " metallic shineFactor\n" + " phong 0.9*shineFactor\n" + " phong_size 120*shineFactor\n}" + "#end\n\n"); +}); +Clazz.defineMethod(c$, "writeMacrosAtom", +function(){ +this.output("#macro a(X,Y,Z,RADIUS,R,G,B,T)\n sphere{,RADIUS\n pigment{rgbt}\n translucentFinish(T)\n clip()\n check_shadow()}\n" + (this.isSlabEnabled ? " circleCap(Z,RADIUS,R,G,B,T)\n" : "") + "#end\n\n"); +this.output("#macro q(XX,YY,ZZ,XY,XZ,YZ,X,Y,Z,J,R,G,B,T)\n quadric{,,,J\n pigment{rgbt}\n translucentFinish(T)\n clip()\n check_shadow()}\n#end\n\n"); +}); +Clazz.defineMethod(c$, "writeMacrosBond", +function(){ +this.output("#macro b(X1,Y1,Z1,RADIUS1,X2,Y2,Z2,RADIUS2,R,G,B,T)\n cone{,RADIUS1,,RADIUS2\n pigment{rgbt}\n translucentFinish(T)\n clip()\n check_shadow()}\n#end\n\n"); +this.output("#macro c(X1,Y1,Z1,RADIUS1,X2,Y2,Z2,RADIUS2,R,G,B,T)\n cone{,RADIUS1,,RADIUS2 open\n pigment{rgbt}\n translucentFinish(T)\n clip()\n check_shadow()}\n#end\n\n"); +}); +Clazz.defineMethod(c$, "writeMacros2", +function(){ +this.output("#macro r(X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3,R,G,B,T)\n triangle{,,\n pigment{rgbt}\n translucentFinish(T)\n clip()\n check_shadow()}\n#end\n\n"); +this.output("#macro p(X,Y,Z,R,G,B,T)\n box{,\n pigment{rgbt}\n clip()\n check_shadow()}\n#end\n\n"); +this.output("#macro barb(X1,Y1,Z1,RADIUS1,X2,Y2,Z2,RADIUS2,R,G,B,T,X3,Y3,Z3,W3)\n cone{,RADIUS1,,RADIUS2\n pigment{rgbt}\n translucentFinish(T)\n clip()\n clipped_by{plane{,W3}}\n check_shadow()}\n#end\n\n"); +this.haveMacros = true; +}); +Clazz.defineMethod(c$, "getTriad", +function(pt){ +if (Float.isNaN(pt.x)) return "0,0,0"; +return pt.x + "," + pt.y + "," + pt.z; +}, "JU.T3"); +Clazz.defineMethod(c$, "getTriad", +function(i){ +return i[0] + "," + i[1] + "," + i[2]; +}, "~A"); +Clazz.defineMethod(c$, "color4", +function(colix){ +return this.rgbFractionalFromColix(colix) + "," + J["export"].___Exporter.translucencyFractionalFromColix(colix); +}, "~N"); +Clazz.defineMethod(c$, "getAuxiliaryFileData", +function(){ +var fName = this.fileName.substring(this.fileName.lastIndexOf("/") + 1); +fName = fName.substring(fName.lastIndexOf("\\") + 1); +return "; Created by: Jmol " + JV.Viewer.getJmolVersion() + "\n; Creation date: " + this.getExportDate() + "\n; File created: " + this.fileName + " (" + this.getByteCount() + " bytes)\n\n" + (this.commandLineOptions != null ? this.commandLineOptions : "\n; Jmol state: (embedded in input file)\nInput_File_Name=" + fName + "\nOutput_to_File=true" + "\nOutput_File_Type=N" + "\nOutput_File_Name=" + fName + ".png" + "\nWidth=" + this.screenWidth + "\nHeight=" + this.screenHeight + "\nAntialias=true" + "\nAntialias_Threshold=0.1" + "\nDisplay=true" + "\nPause_When_Done=true" + "\nWarning_Level=5" + "\nVerbose=false" + "\n"); +}); +Clazz.defineMethod(c$, "output", +function(pt){ +this.output(", <" + this.getTriad(pt) + ">"); +}, "JU.T3"); +Clazz.overrideMethod(c$, "outputCircle", +function(x, y, z, radius, colix, doFill){ +this.output((doFill ? "b(" : "c(") + x + "," + y + "," + z + "," + radius + "," + x + "," + y + "," + (z + 1) + "," + (radius + (doFill ? 0 : 2)) + "," + this.color4(colix) + ")\n"); +}, "~N,~N,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCone", +function(screenBase, screenTip, radius, colix, isBarb){ +if (isBarb) { +if (!this.haveMacros) this.writeMacros2(); +this.tempP1.set(screenBase.x, screenTip.y, 12345.6789); +var plane = JU.Measure.getPlaneThroughPoints(screenBase, screenTip, this.tempP1, this.tempV1, this.tempV2, new JU.P4()); +this.output("barb(" + this.getTriad(screenBase) + "," + radius + "," + this.getTriad(screenTip) + ",0" + "," + this.color4(colix) + "," + plane.x + "," + plane.y + "," + plane.z + "," + -plane.w + ")\n"); +} else { +this.output("b(" + this.getTriad(screenBase) + "," + radius + "," + this.getTriad(screenTip) + ",0" + "," + this.color4(colix) + ")\n"); +}}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCylinder", +function(screenA, screenB, radius, colix, withCaps){ +var color = this.color4(colix); +this.output((withCaps ? "b(" : "c(") + this.getTriad(screenA) + "," + radius + "," + this.getTriad(screenB) + "," + radius + "," + color + ")\n"); +}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCylinderConical", +function(screenA, screenB, radius1, radius2, colix){ +this.output("b(" + this.getTriad(screenA) + "," + radius1 + "," + this.getTriad(screenB) + "," + radius2 + "," + this.color4(colix) + ")\n"); +}, "JU.P3,JU.P3,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputEllipsoid", +function(center, radius, coef, colix){ +var s = coef[0] + "," + coef[1] + "," + coef[2] + "," + coef[3] + "," + coef[4] + "," + coef[5] + "," + coef[6] + "," + coef[7] + "," + coef[8] + "," + coef[9] + "," + this.color4(colix); +this.output("q(" + s + ")\n"); +}, "JU.P3,~N,~A,~N"); +Clazz.overrideMethod(c$, "outputSurface", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, offset){ +if (polygonColixes != null) { +var isAll = (bsPolygons == null); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsPolygons.nextSetBit(i + 1))) { +this.output("polygon { 4\n"); +for (var j = 0; j <= 3; j++) this.outputVertex(vertices[indices[i][j % 3]], offset); + +this.output("\n"); +this.output("pigment{rgbt<" + this.color4(colix = polygonColixes[i]) + ">}\n"); +this.output(" translucentFinish(" + J["export"].___Exporter.translucencyFractionalFromColix(colix) + ")\n"); +this.output(" check_shadow()\n"); +this.output(" clip()\n"); +this.output("}\n"); +} +return; +}this.output("mesh2 {\n"); +this.output("vertex_vectors { " + nVertices); +for (var i = 0; i < nVertices; i++) this.outputVertex(vertices[i], offset); + +this.output("\n}\n"); +var haveNormals = (normals != null); +if (haveNormals) { +this.output("normal_vectors { " + nVertices); +for (var i = 0; i < nVertices; i++) { +J["export"].___Exporter.setTempVertex(vertices[i], offset, this.tempP2); +this.output(this.getScreenNormal(this.tempP2, normals[i], 1)); +this.output("\n"); +} +this.output("\n}\n"); +}if (colixes != null) { +var nColix = colorList.size(); +this.output("texture_list { " + nColix); +var finish = ">} translucentFinish(" + J["export"].___Exporter.translucencyFractionalFromColix(colixes[0]) + ")}"; +for (var i = 0; i < nColix; i++) this.output("\n, texture{pigment{rgbt<" + this.color4(colorList.get(i).shortValue()) + finish); + +this.output("\n}\n"); +}this.output("face_indices { " + nTriangles); +var isAll = (bsPolygons == null); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsPolygons.nextSetBit(i + 1))) { +this.output(", <" + this.getTriad(indices[i]) + ">"); +if (colixes != null) { +this.output("," + htColixes.get(Short.$valueOf(colixes[indices[i][0]]))); +this.output("," + htColixes.get(Short.$valueOf(colixes[indices[i][1]]))); +this.output("," + htColixes.get(Short.$valueOf(colixes[indices[i][2]]))); +}if (faceVertexMax == 4 && indices[i].length == 4) { +this.output(", <" + indices[i][0] + "," + indices[i][2] + "," + indices[i][3] + ">"); +if (colixes != null) { +this.output("," + htColixes.get(Short.$valueOf(colixes[indices[i][0]]))); +this.output("," + htColixes.get(Short.$valueOf(colixes[indices[i][2]]))); +this.output("," + htColixes.get(Short.$valueOf(colixes[indices[i][3]]))); +}}this.output("\n"); +} +this.output("\n}\n"); +if (colixes == null) { +this.output("pigment{rgbt<" + this.color4(colix) + ">}\n"); +this.output(" translucentFinish(" + J["export"].___Exporter.translucencyFractionalFromColix(colix) + ")\n"); +}this.output(" check_shadow()\n"); +this.output(" clip()\n"); +this.output("}\n"); +}, "~A,~A,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.overrideMethod(c$, "outputSphere", +function(x, y, z, radius, colix){ +this.output("a(" + x + "," + y + "," + z + "," + radius + "," + this.color4(colix) + ")\n"); +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputTextPixel", +function(x, y, z, argb){ +if (!this.haveMacros) this.writeMacros2(); +var tr = ((argb >> 24) & 0xFF); +tr = (255 - tr) / 255; +this.output("p(" + x + "," + y + "," + z + "," + this.rgbFractionalFromArgb(argb) + "," + tr + ")\n"); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputTriangle", +function(ptA, ptB, ptC, colix){ +if (!this.haveMacros) this.writeMacros2(); +this.output("r(" + this.getTriad(ptA) + "," + this.getTriad(ptB) + "," + this.getTriad(ptC) + "," + this.color4(colix) + ")\n"); +}, "JU.T3,JU.T3,JU.T3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/_StlExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/_StlExporter.js new file mode 100755 index 000000000000..d117ec8d3bff --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/_StlExporter.js @@ -0,0 +1,147 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export._VrmlExporter", "JU.M4"], "J.export._StlExporter", ["java.io.ByteArrayOutputStream", "JU.Lst", "$.Measure", "$.OC", "JU.Logger", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isDebug = false; +this.header = null; +this.oc = null; +this.bos = null; +this.m4 = null; +this.lstMatrix = null; +this.m4a = null; +this.nTri = 0; +Clazz.instantialize(this, arguments);}, J["export"], "_StlExporter", J["export"]._VrmlExporter); +Clazz.prepareFields (c$, function(){ +this.m4a = new JU.M4(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, J["export"]._StlExporter); +this.useTable = null; +this.lineWidthMad = 20; +this.noColor = true; +this.isDebug = JU.Logger.debugging; +if (!this.isDebug) { +this.oc = new JU.OC(); +this.oc.setBigEndian(false); +this.oc.setParams(null, null, false, this.bos = new java.io.ByteArrayOutputStream()); +}}); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.header = ("solid model generated by Jmol " + JV.Viewer.getJmolVersion() + " ").substring(0, 80); +if (this.isDebug) { +this.out.append(this.header); +this.out.append("\n"); +} else { +this.oc.write(this.header.getBytes(), 0, 80); +this.oc.write( Clazz.newByteArray (4, 0), 0, 4); +}this.lstMatrix = new JU.Lst(); +this.m4 = new JU.M4(); +this.m4.setIdentity(); +this.lstMatrix.addLast(this.m4); +this.outputInitialTransform(); +}); +Clazz.overrideMethod(c$, "pushMatrix", +function(){ +this.lstMatrix.addLast(this.m4); +this.m4 = JU.M4.newM4(this.m4); +}); +Clazz.overrideMethod(c$, "popMatrix", +function(){ +this.m4 = this.lstMatrix.removeItemAt(this.lstMatrix.size() - 1); +}); +Clazz.defineMethod(c$, "output", +function(data){ +}, "~S"); +Clazz.overrideMethod(c$, "outputChildStart", +function(){ +}); +Clazz.overrideMethod(c$, "outputChildClose", +function(){ +}); +Clazz.overrideMethod(c$, "outputRotation", +function(a){ +this.m4a.setToAA(a); +this.m4.mul(this.m4a); +}, "JU.A4"); +Clazz.overrideMethod(c$, "outputAttrPt", +function(attr, pt){ +this.outputAttr(attr, pt.x, pt.y, pt.z); +}, "~S,JU.T3"); +Clazz.overrideMethod(c$, "outputAttr", +function(attr, x, y, z){ +this.m4a.setIdentity(); +if (attr === "scale") { +this.m4a.m00 = x; +this.m4a.m11 = y; +this.m4a.m22 = z; +} else if (attr === "translation") { +this.m4a.m03 = x; +this.m4a.m13 = y; +this.m4a.m23 = z; +}this.m4.mul(this.m4a); +}, "~S,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputGeometry", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, bsPolygons, faceVertexMax, colorList, htColixes, offset){ +for (var i = 0; i < nPolygons; i++) { +if (bsPolygons != null && !bsPolygons.get(i)) continue; +var face = indices[i]; +this.writeFacet(vertices, face, 0, 1, 2); +if (faceVertexMax == 4 && face.length >= 4 && face[2] != face[3]) this.writeFacet(vertices, face, 2, 3, 0); +} +}, "~A,~A,~A,~A,~A,~N,~N,JU.BS,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.defineMethod(c$, "writeFacet", +function(vertices, face, i, j, k){ +this.tempQ1.setT(vertices[face[i]]); +this.tempQ2.setT(vertices[face[j]]); +this.tempQ3.setT(vertices[face[k]]); +this.m4.rotTrans(this.tempQ1); +this.m4.rotTrans(this.tempQ2); +this.m4.rotTrans(this.tempQ3); +JU.Measure.calcNormalizedNormal(this.tempQ1, this.tempQ2, this.tempQ3, this.tempV1, this.tempV2); +if (Float.isNaN(this.tempV1.x)) { +return; +}this.writePoint("facet normal", this.tempV1); +this.writePoint("outer loop\nvertex", this.tempQ1); +this.writePoint("vertex", this.tempQ2); +this.writePoint("vertex", this.tempQ3); +if (this.isDebug) { +this.out.append("endloop\nendfacet\n"); +} else { +this.oc.writeByteAsInt(0); +this.oc.writeByteAsInt(0); +}this.nTri++; +}, "~A,~A,~N,~N,~N"); +Clazz.overrideMethod(c$, "finalizeOutput", +function(){ +if (this.isDebug) { +this.out.append("endsolid model\n"); +} else { +var b = this.bos.toByteArray(); +b[80] = (this.nTri & 0xff); +b[81] = ((this.nTri >> 8) & 0xff); +b[82] = ((this.nTri >> 16) & 0xff); +b[83] = ((this.nTri >> 24) & 0xff); +this.out.write(b, 0, b.length); +}return this.finalizeOutput2(); +}); +Clazz.overrideMethod(c$, "outputCircle", +function(pt1, pt2, radius, colix, doFill){ +}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "plotText", +function(x, y, z, colix, text, font3d){ +}, "~N,~N,~N,~N,~S,JU.Font"); +Clazz.defineMethod(c$, "writePoint", +function(s, p){ +if (this.isDebug) this.out.append(s); +this.writeFloat(p.x); +this.writeFloat(p.y); +this.writeFloat(p.z); +if (this.isDebug) this.out.append("\n"); +}, "~S,JU.T3"); +Clazz.defineMethod(c$, "writeFloat", +function(f){ +if (this.isDebug) this.out.append(" " + f); + else this.oc.writeInt(Float.floatToIntBits(f)); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/_TachyonExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/_TachyonExporter.js new file mode 100755 index 000000000000..f5cec55f0e55 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/_TachyonExporter.js @@ -0,0 +1,227 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.__RayTracerExporter", "$.UseTable"], "J.export._TachyonExporter", ["JU.SB", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.lighting = null; +this.phong = null; +this.textures = null; +this.textureCode = null; +Clazz.instantialize(this, arguments);}, J["export"], "_TachyonExporter", J["export"].__RayTracerExporter); +Clazz.prepareFields (c$, function(){ +this.textures = new J["export"].UseTable(" "); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"]._TachyonExporter, []); +this.commentChar = "# "; +}); +Clazz.overrideMethod(c$, "initializeOutput", +function(vwr, privateKey, gdata, params){ +this.getLightingInfo(); +return this.initOutput(vwr, privateKey, gdata, params); +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz.defineMethod(c$, "getLightingInfo", +function(){ +this.lighting = " AMBIENT " + J["export"].___Exporter.round(this.gdata.getAmbientPercent() / 100) + " DIFFUSE " + J["export"].___Exporter.round(this.gdata.getDiffusePercent() / 100) + " SPECULAR " + J["export"].___Exporter.round(this.gdata.getSpecularPercent() / 100); +this.phong = " Phong Plastic 0.5 Phong_size " + this.gdata.getSpecularExponent(); +}); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.initVars(); +this.output("# ******************************************************\n"); +this.output("# Created by Jmol " + JV.Viewer.getJmolVersion() + "\n"); +this.output("#\n"); +this.output("# This script was generated on " + this.getExportDate() + "\n"); +this.output("#\n"); +this.output("# Requires Tachyon version 0.98.7 or newer\n"); +this.output("#\n"); +this.output("# Default tachyon rendering command for this scene:\n"); +this.output("# tachyon -aasamples 12 %s -format TARGA -o %s.tga\n"); +this.output("#\n"); +this.output("# ******************************************************\n"); +this.output("\n"); +this.output(this.getJmolPerspective()); +this.output("\n"); +this.output("Begin_Scene\n"); +this.output("Resolution " + this.screenWidth + " " + this.screenHeight + "\n"); +this.output("Shader_Mode Medium\n"); +this.output(" Trans_VMD\n"); +this.output(" Fog_VMD\n"); +this.output("End_Shader_Mode\n"); +this.output("Camera\n"); +this.output(" Zoom 3.0\n"); +this.output(" Aspectratio 1\n"); +this.output(" Antialiasing 12\n"); +this.output(" Raydepth 8\n"); +this.output(" Center " + this.triad(Clazz.doubleToInt(this.screenWidth / 2), Clazz.doubleToInt(this.screenHeight / 2), 0) + "\n"); +this.output(" Viewdir 0 0 1\n"); +this.output(" Updir 0 1 0\n"); +this.output("End_Camera\n"); +this.output("Directional_Light Direction " + J["export"].___Exporter.round(this.lightSource) + " Color 1 1 1\n"); +this.output("\n"); +this.output("Background " + this.rgbFractionalFromColix(this.backgroundColix) + "\n"); +this.output("\n"); +}); +Clazz.overrideMethod(c$, "outputFooter", +function(){ +this.output("End_Scene\n"); +}); +Clazz.defineMethod(c$, "output", +function(pt){ +this.output(this.triad(pt)); +}, "JU.T3"); +Clazz.defineMethod(c$, "triad", +function(x, y, z){ +return Clazz.floatToInt(x) + " " + Clazz.floatToInt(-y) + " " + Clazz.floatToInt(z); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "triad", +function(pt){ +if (Float.isNaN(pt.x)) return "0 0 0"; +return this.triad(pt.x, pt.y, pt.z); +}, "JU.T3"); +Clazz.defineMethod(c$, "outputTextureCode", +function(){ +this.output(this.textureCode); +this.output("\n"); +}); +Clazz.defineMethod(c$, "outputTexture", +function(colix, useTexDef){ +this.outputTexture2(this.rgbFractionalFromColix(colix), J["export"].___Exporter.opacityFractionalFromColix(colix), useTexDef); +}, "~N,~B"); +Clazz.defineMethod(c$, "outputTexture", +function(argb, useTexDef){ +this.outputTexture2(this.rgbFractionalFromArgb(argb), J["export"].___Exporter.opacityFractionalFromArgb(argb), useTexDef); +}, "~N,~B"); +Clazz.defineMethod(c$, "outputTexture2", +function(rgb, opacity, useTexDef){ +this.textureCode = (useTexDef ? this.textures.getDef("t" + rgb + opacity) : null); +if (useTexDef && this.textureCode.startsWith(" ")) return; +var sb = new JU.SB(); +sb.append(this.lighting); +sb.append(" Opacity " + opacity); +sb.append(this.phong); +sb.append(" Color " + rgb); +sb.append(" TexFunc 0\n"); +if (!useTexDef) { +this.textureCode = "Texture " + sb; +return; +}this.output("TexDef " + this.textureCode); +this.output(sb.toString()); +this.textureCode = " " + this.textureCode; +}, "~S,~S,~B"); +Clazz.overrideMethod(c$, "outputCircle", +function(x, y, z, radius, colix, doFill){ +this.tempV1.set(0, 0, -1); +this.outputRing(x, y, z, this.tempV1, radius, colix, doFill); +}, "~N,~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "outputRing", +function(x, y, z, tempV1, radius, colix, doFill){ +this.outputTexture(colix, true); +this.output("Ring Center "); +this.output(this.triad(x, y, z)); +this.output(" Normal " + this.triad(tempV1)); +this.output(" Inner " + J["export"].___Exporter.round((doFill ? 0 : radius * 0.95))); +this.output(" Outer " + J["export"].___Exporter.round(radius)); +this.outputTextureCode(); +}, "~N,~N,~N,JU.V3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCone", +function(screenBase, screenTip, radius, colix, isBarb){ +this.tm.unTransformPoint(screenBase, this.tempP1); +this.tm.unTransformPoint(screenTip, this.tempP2); +radius = this.vwr.tm.unscaleToScreen(screenBase.z, radius); +var matRotateScale = this.getRotationMatrix(this.tempP1, this.tempP2, radius); +this.export3D.drawSurface(J["export"].___Exporter.getConeMesh(this.tempP1, matRotateScale, colix), colix); +}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCylinder", +function(screenA, screenB, radius, colix, withCaps){ +this.outputTexture(colix, true); +this.output("FCylinder Base "); +this.output(this.triad(screenA)); +this.output(" Apex "); +this.output(this.triad(screenB)); +this.output(" Rad " + J["export"].___Exporter.round(radius)); +this.outputTextureCode(); +if (withCaps && radius > 1) { +this.tempV1.sub2(screenA, screenB); +this.outputRing(Clazz.floatToInt(screenA.x), Clazz.floatToInt(screenA.y), Clazz.floatToInt(screenA.z), this.tempV1, radius, colix, true); +this.tempV1.scale(-1); +this.outputRing(Clazz.floatToInt(screenB.x), Clazz.floatToInt(screenB.y), Clazz.floatToInt(screenB.z), this.tempV1, radius, colix, true); +}}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "fillConicalCylinder", +function(screenA, screenB, madBond, colix, endcaps){ +var diameter = Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.floatToInt((screenA.z + screenB.z) / 2), madBond)); +this.fillCylinderScreenMad(colix, endcaps, diameter, screenA, screenB); +}, "JU.P3,JU.P3,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputCylinderConical", +function(screenA, screenB, radius1, radius2, colix){ +}, "JU.P3,JU.P3,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputEllipsoid", +function(center, radius, coef, colix){ +this.tm.transformPt3f(center, this.tempP1); +this.outputSphere(this.tempP1.x, this.tempP1.y, this.tempP1.z, radius, colix); +}, "JU.P3,~N,~A,~N"); +Clazz.overrideMethod(c$, "outputSurface", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, offset){ +if (polygonColixes != null) { +var isAll = (bsPolygons == null); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsPolygons.nextSetBit(i + 1))) { +J["export"].___Exporter.setTempVertex(vertices[indices[i][0]], offset, this.tempP1); +J["export"].___Exporter.setTempVertex(vertices[indices[i][1]], offset, this.tempP2); +J["export"].___Exporter.setTempVertex(vertices[indices[i][2]], offset, this.tempP3); +this.tm.transformPt3f(this.tempP1, this.tempP1); +this.tm.transformPt3f(this.tempP2, this.tempP2); +this.tm.transformPt3f(this.tempP3, this.tempP3); +this.outputTriangle(this.tempP1, this.tempP2, this.tempP3, colix); +} +return; +}this.outputTexture(colixes == null ? colix : colixes[0], false); +this.output("VertexArray Numverts " + nVertices + "\nCoords\n"); +for (var i = 0; i < nVertices; i++) this.outputVertex(vertices[i], offset); + +this.output("\nNormals\n"); +for (var i = 0; i < nVertices; i++) { +J["export"].___Exporter.setTempVertex(vertices[i], offset, this.tempP1); +this.output(this.triad(this.getScreenNormal(this.tempP1, normals[i], 10)) + "\n"); +} +var rgb = (colixes == null ? this.rgbFractionalFromColix(colix) : null); +this.output("\nColors\n"); +for (var i = 0; i < nVertices; i++) { +this.output((colixes == null ? rgb : this.rgbFractionalFromColix(colixes[i])) + "\n"); +} +this.outputTextureCode(); +this.output("\nTriMesh " + nTriangles + "\n"); +var isAll = (bsPolygons == null); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsPolygons.nextSetBit(i + 1))) { +this.output(indices[i][0] + " " + indices[i][1] + " " + indices[i][2] + "\n"); +if (faceVertexMax == 4 && indices[i].length == 4) this.output(indices[i][0] + " " + indices[i][2] + " " + indices[i][3] + "\n"); +} +this.output("\nEnd_VertexArray\n"); +}, "~A,~A,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.overrideMethod(c$, "outputSphere", +function(x, y, z, radius, colix){ +this.outputTexture(colix, true); +this.output("Sphere Center "); +this.output(this.triad(x, y, z)); +this.output(" Rad " + J["export"].___Exporter.round(radius)); +this.outputTextureCode(); +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputTextPixel", +function(x, y, z, argb){ +this.outputTexture(argb, true); +this.output("Sphere Center "); +this.output(this.triad(x, y, z)); +this.output(" Rad 1"); +this.outputTextureCode(); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputTriangle", +function(ptA, ptB, ptC, colix){ +this.outputTexture(colix, true); +this.output("TRI"); +this.output(" V0 " + this.triad(ptA)); +this.output(" V1 " + this.triad(ptB)); +this.output(" V2 " + this.triad(ptC)); +this.outputTextureCode(); +}, "JU.T3,JU.T3,JU.T3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/_VrmlExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/_VrmlExporter.js new file mode 100755 index 000000000000..a6d3997fbf86 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/_VrmlExporter.js @@ -0,0 +1,552 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.__CartesianExporter", "java.util.Hashtable", "JU.P3"], "J.export._VrmlExporter", ["JU.A4", "$.AU", "$.Lst", "$.Measure", "$.PT", "$.Quat", "J.export.UseTable", "JU.Geodesic", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.useTable = null; +this.htSpheresRendered = null; +this.plateVertices = null; +this.plateIndices = null; +this.plateColixes = null; +this.tempQ1 = null; +this.tempQ2 = null; +this.tempQ3 = null; +this.oneFace = null; +this.threeVertices = null; +this.fontSize = 0; +this.fontFace = null; +this.fontStyle = null; +this.fontChild = null; +Clazz.instantialize(this, arguments);}, J["export"], "_VrmlExporter", J["export"].__CartesianExporter); +Clazz.prepareFields (c$, function(){ +this.htSpheresRendered = new java.util.Hashtable(); +this.tempQ1 = new JU.P3(); +this.tempQ2 = new JU.P3(); +this.tempQ3 = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"]._VrmlExporter, []); +this.useTable = new J["export"].UseTable("USE "); +this.commentChar = "# "; +this.canCapCylinders = true; +this.solidOnly = true; +}); +Clazz.defineMethod(c$, "output", +function(pt){ +this.output(J["export"].___Exporter.round(pt)); +}, "JU.T3"); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.output("#VRML V2.0 utf8 Generated by Jmol " + JV.Viewer.getJmolVersion() + "\n"); +this.output("WorldInfo { \n"); +this.output(" title " + JU.PT.esc(this.vwr.ms.modelSetName) + "\n"); +this.output(" info [ \"Generated by Jmol " + JV.Viewer.getJmolVersion() + " \", \n"); +this.output(" \"http://www.jmol.org \", \n"); +this.output(" \"Creation date: " + this.getExportDate() + " \" ]\n"); +this.output("} \n"); +this.output("NavigationInfo { type \"EXAMINE\" } \n"); +this.output("Background { skyColor [" + this.rgbFractionalFromColix(this.backgroundColix) + "] } \n"); +var angle = this.getViewpoint(); +this.output("Viewpoint{fieldOfView " + angle); +this.output(" position "); +this.cameraPosition.scale(this.exportScale); +this.output(this.cameraPosition); +this.output(" orientation "); +this.output(this.tempP1); +this.output(" " + -this.viewpoint.angle); +this.output("\n jump TRUE description \"v1\"\n}\n\n"); +this.output(this.getJmolPerspective()); +this.outputInitialTransform(); +this.output("\n"); +}); +Clazz.defineMethod(c$, "outputInitialTransform", +function(){ +this.pushMatrix(); +this.outputAttr("scale", this.exportScale, this.exportScale, this.exportScale); +this.outputCloseTag(); +this.outputChildStart(); +this.pushMatrix(); +this.tempP1.setT(this.center); +this.tempP1.scale(-1); +this.outputAttrPt("translation", this.tempP1); +this.outputCloseTag(); +this.outputChildStart(); +}); +Clazz.defineMethod(c$, "getViewpoint", +function(){ +this.viewpoint.setM(this.vwr.tm.matrixRotate); +this.tempP1.set(this.viewpoint.x, this.viewpoint.y, (this.viewpoint.angle == 0 ? 1 : this.viewpoint.z)); +return (this.apertureAngle * 3.141592653589793 / 180); +}); +Clazz.overrideMethod(c$, "outputFooter", +function(){ +this.useTable = null; +this.output("\n]}\n"); +this.output("]}"); +}); +Clazz.defineMethod(c$, "outputAppearance", +function(colix, isText){ +var def = this.getDef((isText ? "T" : "") + colix); +this.output("appearance "); +if (def.charAt(0) == '_') { +var color = this.rgbFractionalFromColix(colix); +this.output(" DEF " + def + " Appearance{material Material{diffuseColor "); +if (isText) this.output(" 0 0 0 specularColor 0 0 0 ambientIntensity 0.0 shininess 0.0 emissiveColor " + color + " }}"); + else this.output(color + " transparency " + J["export"].___Exporter.translucencyFractionalFromColix(colix) + "}}"); +return; +}this.output(def); +}, "~N,~B"); +Clazz.defineMethod(c$, "pushMatrix", +function(){ +this.output("Transform{"); +}); +Clazz.defineMethod(c$, "popMatrix", +function(){ +this.output("}\n"); +}); +Clazz.defineMethod(c$, "outputAttrPt", +function(attr, pt){ +this.output(" " + attr + " " + pt.x + " " + pt.y + " " + pt.z); +}, "~S,JU.T3"); +Clazz.defineMethod(c$, "outputAttr", +function(attr, x, y, z){ +this.output(" " + attr + " " + J["export"].___Exporter.round(x) + " " + J["export"].___Exporter.round(y) + " " + J["export"].___Exporter.round(z)); +}, "~S,~N,~N,~N"); +Clazz.defineMethod(c$, "outputRotation", +function(a){ +this.output(" rotation " + a.x + " " + a.y + " " + a.z + " " + a.angle); +}, "JU.A4"); +Clazz.defineMethod(c$, "outputTransRot", +function(pt1, pt2, x, y, z){ +this.tempV1.ave(pt2, pt1); +this.outputAttrPt("translation", this.tempV1); +this.tempV1.sub(pt1); +this.tempV1.normalize(); +this.tempV2.set(x, y, z); +this.tempV2.add(this.tempV1); +this.outputRotation(JU.A4.newVA(this.tempV2, 3.141592653589793)); +}, "JU.P3,JU.P3,~N,~N,~N"); +Clazz.defineMethod(c$, "outputQuaternionFrame", +function(ptCenter, ptX, ptY, ptZ, xScale, yScale, zScale){ +this.tempQ1.setT(ptX); +this.tempQ2.setT(ptY); +var a = JU.Quat.getQuaternionFrame(ptCenter, this.tempQ1, this.tempQ2).toAxisAngle4f(); +if (!Float.isNaN(a.x)) { +this.tempQ1.set(a.x, a.y, a.z); +this.outputRotation(a); +}var sx = (ptX.distance(ptCenter) * xScale); +var sy = (ptY.distance(ptCenter) * yScale); +var sz = (ptZ.distance(ptCenter) * zScale); +this.outputAttr("scale", sx, sy, sz); +}, "JU.P3,JU.P3,JU.P3,JU.P3,~N,~N,~N"); +Clazz.defineMethod(c$, "outputChildShapeStart", +function(){ +this.outputChildStart(); +this.outputShapeStart(); +}); +Clazz.defineMethod(c$, "outputChildStart", +function(){ +this.output(" children["); +}); +Clazz.defineMethod(c$, "outputShapeStart", +function(){ +this.output(" Shape{geometry "); +}); +Clazz.defineMethod(c$, "outputDefChildFaceSet", +function(child){ +if (child != null) this.output("DEF " + child + " "); +this.outputFaceSetStart(); +}, "~S"); +Clazz.defineMethod(c$, "outputFaceSetStart", +function(){ +this.output("IndexedFaceSet {"); +}); +Clazz.defineMethod(c$, "outputFaceSetClose", +function(){ +this.output("}\n"); +}); +Clazz.defineMethod(c$, "outputUseChildClose", +function(child){ +this.output(child); +}, "~S"); +Clazz.defineMethod(c$, "outputChildShapeClose", +function(){ +this.outputShapeClose(); +this.outputChildClose(); +}); +Clazz.defineMethod(c$, "outputChildClose", +function(){ +this.output("]"); +}); +Clazz.defineMethod(c$, "outputShapeClose", +function(){ +this.output("}"); +}); +Clazz.defineMethod(c$, "outputCloseTag", +function(){ +}); +Clazz.overrideMethod(c$, "outputCircle", +function(pt1, pt2, radius, colix, doFill){ +if (doFill) { +this.pushMatrix(); +this.tempV1.ave(pt1, pt2); +this.outputAttr("translation", this.tempV1.x, this.tempV1.y, this.tempV1.z); +this.output(" children [ Billboard{axisOfRotation 0 0 0 children [ Transform{rotation 1 0 0 1.5708"); +var height = (pt1.distance(pt2)); +this.outputAttr("scale", radius, height, radius); +this.outputCylinderChildScaled(colix, 2); +this.output("}] }]\n"); +this.popMatrix(); +return; +}var child = this.getDef("C" + colix + "_" + radius); +this.pushMatrix(); +this.outputTransRot(pt1, pt2, 0, 0, 1); +this.outputAttr("scale", radius, radius, radius); +this.output(" children ["); +if (child.charAt(0) == '_') { +this.output("DEF " + child); +this.output(" Billboard{axisOfRotation 0 0 0 children [ Transform{children["); +this.output(" Shape{"); +this.output("geometry Extrusion{beginCap FALSE convex FALSE endCap FALSE creaseAngle 1.57"); +this.output(" crossSection ["); +var rpd = 0.017453292; +var scale = 0.02 / radius; +for (var i = 0; i <= 360; i += 10) { +this.output(J["export"].___Exporter.round(Math.cos(i * rpd) * scale) + " "); +this.output(J["export"].___Exporter.round(Math.sin(i * rpd) * scale) + " "); +} +this.output("] spine ["); +for (var i = 0; i <= 360; i += 10) { +this.output(J["export"].___Exporter.round(Math.cos(i * rpd)) + " "); +this.output(J["export"].___Exporter.round(Math.sin(i * rpd)) + " 0 "); +} +this.output("]"); +this.output("}"); +this.outputAppearance(colix, false); +this.output("}"); +this.output("]} ]}"); +} else { +this.output(child); +}this.output("]"); +this.popMatrix(); +}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputCone", +function(ptBase, ptTip, radius, colix){ +var height = (ptBase.distance(ptTip)); +this.pushMatrix(); +this.outputTransRot(ptBase, ptTip, 0, 1, 0); +this.outputAttr("scale", radius, height, radius); +this.outputCloseTag(); +this.outputChildShapeStart(); +var child = this.getDef("c"); +if (child.charAt(0) == '_') { +this.outputDefChildFaceSet(child); +this.outputConeGeometry(true); +this.outputFaceSetClose(); +} else { +this.outputUseChildClose(child); +}this.outputAppearance(colix, false); +this.outputChildShapeClose(); +this.popMatrix(); +}, "JU.P3,JU.P3,~N,~N"); +Clazz.defineMethod(c$, "outputConeGeometry", +function(addBase){ +var ndeg = 10; +var n = Clazz.doubleToInt(360 / ndeg); +var vertexCount = n + (addBase ? 2 : 1); +var faces = JU.AU.newInt2(n * (addBase ? 2 : 1)); +for (var i = 0, fpt = 0; i < n; i++) { +faces[fpt++] = Clazz.newIntArray(-1, [i, (i + n - 1) % n, n]); +if (addBase) faces[fpt++] = Clazz.newIntArray(-1, [i, (i + 1) % n, n + 1]); +} +var vertexes = new Array(vertexCount); +for (var i = 0; i < n; i++) { +var x = (Math.cos(i * ndeg / 180. * 3.141592653589793)); +var y = (Math.sin(i * ndeg / 180. * 3.141592653589793)); +vertexes[i] = JU.P3.new3(x, -0.5, y); +} +vertexes[n++] = JU.P3.new3(0, 0.5, 0); +if (addBase) vertexes[n++] = JU.P3.new3(0, -0.5, 0); +this.outputGeometry(vertexes, null, null, faces, null, vertexCount, faces.length, null, 3, null, null, null); +}, "~B"); +Clazz.overrideMethod(c$, "outputCylinder", +function(ptCenter, pt1, pt2, colix, endcaps, radius, ptX, ptY, checkRadius){ +var height = (pt1.distance(pt2)); +if (radius < 0.01 || height == 0) return false; +this.pushMatrix(); +if (ptX == null) { +this.outputTransRot(pt1, pt2, 0, 1, 0); +this.outputAttr("scale", radius, height, radius); +} else { +this.outputAttrPt("translation", ptCenter); +this.outputQuaternionFrame(ptCenter, ptY, pt1, ptX, 2, 2, 2); +pt1.set(0, 0, -0.5); +pt2.set(0, 0, 0.5); +}this.outputCloseTag(); +this.outputCylinderChildScaled(colix, endcaps); +this.popMatrix(); +if (radius > 0.1) switch (endcaps) { +case 3: +this.outputSphere(pt1, radius * 1.01, colix, checkRadius); +case 5: +case 4: +this.outputSphere(pt2, radius * 1.01, colix, checkRadius); +break; +case 2: +break; +} +return true; +}, "JU.P3,JU.P3,JU.P3,~N,~N,~N,JU.P3,JU.P3,~B"); +Clazz.defineMethod(c$, "outputCylinderChildScaled", +function(colix, endcaps){ +this.outputChildShapeStart(); +var child = this.getDef("C" + "_" + endcaps); +if (child.charAt(0) == '_') { +this.outputDefChildFaceSet(child); +this.outputCylinderGeometry(endcaps); +this.outputFaceSetClose(); +} else { +this.outputUseChildClose(child); +}this.outputAppearance(colix, false); +this.outputChildShapeClose(); +}, "~N,~N"); +Clazz.defineMethod(c$, "outputCylinderGeometry", +function(endcaps){ +var ndeg = 10; +var n = Clazz.doubleToInt(360 / ndeg); +var vertexCount = n * 2; +var addEndcaps = false; +switch (endcaps) { +case 3: +case 5: +case 4: +case 2: +vertexCount += 2; +addEndcaps = true; +break; +} +var faces = JU.AU.newInt2(n * (addEndcaps ? 4 : 2)); +for (var i = 0, fpt = 0; i < n; i++) { +faces[fpt++] = Clazz.newIntArray(-1, [i, (i + 1) % n, i + n]); +faces[fpt++] = Clazz.newIntArray(-1, [(i + 1) % n, (i + 1) % n + n, i + n]); +if (addEndcaps) { +faces[fpt++] = Clazz.newIntArray(-1, [i, (i + n - 1) % n, vertexCount - 2]); +faces[fpt++] = Clazz.newIntArray(-1, [i + n, (i + n + 1) % n + n, vertexCount - 1]); +}} +var vertexes = new Array(vertexCount); +for (var i = 0; i < n; i++) { +var x = (Math.cos(i * ndeg / 180. * 3.141592653589793)); +var y = (Math.sin(i * ndeg / 180. * 3.141592653589793)); +vertexes[i] = JU.P3.new3(x, 0.5, y); +} +for (var i = 0; i < n; i++) { +var x = (Math.cos((i + 0.5) * ndeg / 180 * 3.141592653589793)); +var y = (Math.sin((i + 0.5) * ndeg / 180 * 3.141592653589793)); +vertexes[i + n] = JU.P3.new3(x, -0.5, y); +} +if (addEndcaps) { +vertexes[vertexCount - 2] = JU.P3.new3(0, 0.5, 0); +vertexes[vertexCount - 1] = JU.P3.new3(0, -0.5, 0); +}this.outputGeometry(vertexes, null, null, faces, null, vertexCount, faces.length, null, 3, null, null, null); +}, "~N"); +Clazz.overrideMethod(c$, "outputSphere", +function(ptCenter, radius, colix, checkRadius){ +var check = J["export"].___Exporter.round(ptCenter) + (checkRadius ? " " + Clazz.floatToInt(radius * 100) : ""); +if (this.htSpheresRendered.get(check) != null) return; +this.htSpheresRendered.put(check, Boolean.TRUE); +this.outputSphereChildScaled(ptCenter, radius, null, colix); +}, "JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputEllipsoid", +function(ptCenter, points, colix){ +this.outputSphereChildScaled(ptCenter, 1.0, points, colix); +}, "JU.P3,~A,~N"); +Clazz.defineMethod(c$, "outputSphereChildScaled", +function(ptCenter, radius, points, colix){ +this.pushMatrix(); +this.outputAttrPt("translation", ptCenter); +if (points == null) this.outputAttr("scale", radius, radius, radius); + else this.outputQuaternionFrame(ptCenter, points[1], points[3], points[5], 1, 1, 1); +this.outputCloseTag(); +this.outputChildShapeStart(); +var child = this.getDef("S"); +if (child.charAt(0) == '_') { +this.outputDefChildFaceSet(child); +this.outputSphereGeometry(); +this.outputFaceSetClose(); +} else { +this.outputUseChildClose(child); +}this.outputAppearance(colix, false); +this.outputChildShapeClose(); +this.popMatrix(); +}, "JU.P3,~N,~A,~N"); +Clazz.defineMethod(c$, "outputSphereGeometry", +function(){ +var vertices = JU.Geodesic.getVertexVectors(); +var nVertices = 162; +var faceList = JU.Geodesic.getFaceVertexes(2); +var nFaces = Clazz.doubleToInt(faceList.length / 3); +var indices = Clazz.newIntArray (nFaces, 3, 0); +for (var i = 0, p = 0; i < nFaces; i++) for (var j = 0; j < 3; j++) indices[i][j] = faceList[p++]; + + +this.outputGeometry(vertices, null, null, indices, null, nVertices, nFaces, null, 3, null, null, null); +}); +Clazz.overrideMethod(c$, "outputSolidPlate", +function(tempP1, tempP2, tempP3, colix){ +if (this.plateVertices == null) { +this.plateVertices = new Array(6); +for (var i = 0; i < 6; i++) this.plateVertices[i] = new JU.P3(); + +this.plateIndices = Clazz.newArray(-1, [ Clazz.newIntArray(-1, [0, 1, 2]), Clazz.newIntArray(-1, [5, 4, 3]), Clazz.newIntArray(-1, [0, 3, 1]), Clazz.newIntArray(-1, [1, 3, 4]), Clazz.newIntArray(-1, [1, 4, 2]), Clazz.newIntArray(-1, [2, 4, 5]), Clazz.newIntArray(-1, [2, 5, 0]), Clazz.newIntArray(-1, [0, 5, 3])]); +}JU.Measure.calcNormalizedNormal(tempP1, tempP2, tempP3, this.tempV1, this.tempV2); +this.tempV1.scale(0.2); +this.plateVertices[0].setT(tempP1); +this.plateVertices[1].setT(tempP2); +this.plateVertices[2].setT(tempP3); +for (var i = 0; i < 3; i++) this.plateVertices[i].add(this.tempV1); + +this.tempV1.scale(-2); +for (var i = 3; i < 6; i++) this.plateVertices[i].add2(this.plateVertices[i - 3], this.tempV1); + +this.outputSurface(this.plateVertices, null, null, this.plateIndices, this.plateColixes, 6, 8, 8, null, 3, colix, null, null, null); +}, "JU.P3,JU.P3,JU.P3,~N"); +Clazz.overrideMethod(c$, "outputSurface", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, offset){ +this.outputShapeStart(); +this.outputDefChildFaceSet(null); +this.outputGeometry(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, bsPolygons, faceVertexMax, colorList, htColixes, offset); +this.outputFaceSetClose(); +this.outputAppearance(colix, false); +this.outputShapeClose(); +}, "~A,~A,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.defineMethod(c$, "outputGeometry", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, bsPolygons, faceVertexMax, colorList, htColixes, offset){ +if (polygonColixes == null) this.output(" creaseAngle 0.5 \n"); + else this.output(" colorPerVertex FALSE\n"); +this.output("coord Coordinate {\npoint [\n"); +this.outputVertices(vertices, nVertices, offset); +this.output(" ]\n"); +this.output(" }\n"); +this.output(" coordIndex [\n"); +var map = Clazz.newIntArray (nVertices, 0); +this.getCoordinateMap(vertices, map, null); +this.outputIndices(indices, map, nPolygons, bsPolygons, faceVertexMax); +this.output(" ]\n"); +if (normals != null) { +var vNormals = new JU.Lst(); +map = this.getNormalMap(normals, nVertices, null, vNormals); +this.output(" solid FALSE\n normalPerVertex TRUE\n normal Normal {\n vector [\n"); +this.outputNormals(vNormals); +this.output(" ]\n"); +this.output(" }\n"); +this.output(" normalIndex [\n"); +this.outputIndices(indices, map, nPolygons, bsPolygons, faceVertexMax); +this.output(" ]\n"); +}map = null; +if (colorList != null) { +this.output(" color Color { color [\n"); +this.outputColors(colorList); +this.output(" ] } \n"); +this.output(" colorIndex [\n"); +this.outputColorIndices(indices, nPolygons, bsPolygons, faceVertexMax, htColixes, colixes, polygonColixes); +this.output(" ]\n"); +}}, "~A,~A,~A,~A,~A,~N,~N,JU.BS,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.overrideMethod(c$, "outputFace", +function(face, map, faceVertexMax){ +this.output(map[face[0]] + " " + map[face[1]] + " " + map[face[2]] + " -1\n"); +if (faceVertexMax == 4 && face.length == 4) this.output(map[face[0]] + " " + map[face[2]] + " " + map[face[3]] + " -1\n"); +}, "~A,~A,~N"); +Clazz.defineMethod(c$, "outputNormals", +function(vNormals){ +var n = vNormals.size(); +for (var i = 0; i < n; i++) { +this.output(vNormals.get(i)); +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "outputColors", +function(colorList){ +var nColors = colorList.size(); +for (var i = 0; i < nColors; i++) { +var color = this.rgbFractionalFromColix(colorList.get(i).shortValue()); +this.output(" "); +this.output(color); +this.output("\n"); +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "outputColorIndices", +function(indices, nPolygons, bsPolygons, faceVertexMax, htColixes, colixes, polygonColixes){ +var isAll = (bsPolygons == null); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsPolygons.nextSetBit(i + 1))) { +if (polygonColixes == null) { +this.output(htColixes.get(Short.$valueOf(colixes[indices[i][0]])) + " " + htColixes.get(Short.$valueOf(colixes[indices[i][1]])) + " " + htColixes.get(Short.$valueOf(colixes[indices[i][2]])) + " -1\n"); +if (faceVertexMax == 4 && indices[i].length == 4) this.output(htColixes.get(Short.$valueOf(colixes[indices[i][0]])) + " " + htColixes.get(Short.$valueOf(colixes[indices[i][2]])) + " " + htColixes.get(Short.$valueOf(colixes[indices[i][3]])) + " -1\n"); +} else { +this.output(htColixes.get(Short.$valueOf(polygonColixes[i])) + "\n"); +}} +}, "~A,~N,JU.BS,~N,java.util.Map,~A,~A"); +Clazz.overrideMethod(c$, "outputTriangle", +function(pt1, pt2, pt3, colix){ +this.output("Shape{geometry IndexedFaceSet{ "); +this.outputTriangleGeometry(pt1, pt2, pt3, colix); +this.output("}\n"); +this.outputAppearance(colix, false); +this.output("}\n"); +}, "JU.T3,JU.T3,JU.T3,~N"); +Clazz.defineMethod(c$, "outputTriangleGeometry", +function(pt1, pt2, pt3, colix){ +if (this.oneFace == null) { +this.oneFace = Clazz.newArray(-1, [ Clazz.newIntArray(-1, [0, 1, 2])]); +this.threeVertices = Clazz.newArray(-1, [this.tempP1, this.tempP2, this.tempP3]); +}this.threeVertices[0].setT(pt1); +this.threeVertices[1].setT(pt2); +this.threeVertices[2].setT(pt3); +this.outputGeometry(this.threeVertices, null, null, this.oneFace, null, 3, 1, null, 3, null, null, null); +}, "JU.T3,JU.T3,JU.T3,~N"); +Clazz.overrideMethod(c$, "outputTextPixel", +function(pt, argb){ +}, "JU.P3,~N"); +Clazz.overrideMethod(c$, "plotText", +function(x, y, z, colix, text, font3d){ +this.pushMatrix(); +this.tempP3.set(x, y, this.fixScreenZ(z)); +this.tm.unTransformPoint(this.tempP3, this.tempP1); +this.outputAttrPt("translation", this.tempP1); +this.setFont(colix, text, font3d); +this.outputChildStart(); +if (this.fontChild.charAt(0) == '_') { +this.output("DEF " + this.fontChild + " Billboard{"); +this.outputAttr("axisOfRotation", 0, 0, 0); +this.outputChildStart(); +this.pushMatrix(); +this.outputChildShapeStart(); +this.output("Text{fontStyle "); +var fontstyle = this.getDef("F" + this.fontFace + this.fontStyle); +if (fontstyle.charAt(0) == '_') { +this.output("DEF " + fontstyle + " FontStyle{size " + this.fontSize + " family \"" + this.fontFace + "\" style \"" + this.fontStyle + "\"}"); +} else { +this.output(fontstyle); +}this.output(" string " + JU.PT.esc(text) + "}"); +this.outputAppearance(colix, true); +this.outputChildShapeClose(); +this.popMatrix(); +this.outputChildClose(); +this.output("}"); +} else { +this.output(this.fontChild); +}this.outputChildClose(); +this.popMatrix(); +}, "~N,~N,~N,~N,~S,JU.Font"); +Clazz.defineMethod(c$, "setFont", +function(colix, text, font3d){ +this.fontStyle = font3d.fontStyle.toUpperCase(); +this.fontFace = font3d.fontFace.toUpperCase(); +this.fontFace = (this.fontFace.equals("MONOSPACED") ? "TYPEWRITER" : this.fontFace.equals("SERIF") ? "SERIF" : "Arial"); +this.fontSize = font3d.fontSize * 0.015; +this.fontChild = this.getDef("T" + colix + this.fontFace + this.fontStyle + this.fontSize + "_" + text); +}, "~N,~S,JU.Font"); +Clazz.defineMethod(c$, "getDef", +function(key){ +return (this.useTable == null ? "_" : this.useTable.getDef(key)); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/_X3dExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/_X3dExporter.js new file mode 100755 index 000000000000..9c0dadd9a2c3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/_X3dExporter.js @@ -0,0 +1,231 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export._VrmlExporter"], "J.export._X3dExporter", ["JU.Lst", "$.PT", "J.export.UseTable", "JV.Viewer"], function(){ +var c$ = Clazz.declareType(J["export"], "_X3dExporter", J["export"]._VrmlExporter); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, J["export"]._X3dExporter); +this.useTable = new J["export"].UseTable("USE='"); +}); +Clazz.overrideMethod(c$, "outputHeader", +function(){ +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +this.output("\n"); +var angle = this.getViewpoint(); +this.output("\n"); +this.output("\n \n\n"); +this.commentChar = null; +this.outputInitialTransform(); +}); +Clazz.overrideMethod(c$, "outputAttrPt", +function(attr, pt){ +this.output(" " + attr + "='" + pt.x + " " + pt.y + " " + pt.z + "'"); +}, "~S,JU.T3"); +Clazz.overrideMethod(c$, "pushMatrix", +function(){ +this.output("\n"); +}); +Clazz.overrideMethod(c$, "outputAttr", +function(attr, x, y, z){ +this.output(" " + attr + "='" + J["export"].___Exporter.round(x) + " " + J["export"].___Exporter.round(y) + " " + J["export"].___Exporter.round(z) + "'"); +}, "~S,~N,~N,~N"); +Clazz.overrideMethod(c$, "outputRotation", +function(a){ +this.output(" rotation='" + a.x + " " + a.y + " " + a.z + " " + a.angle + "'"); +}, "JU.A4"); +Clazz.overrideMethod(c$, "outputFooter", +function(){ +this.useTable = null; +this.popMatrix(); +this.popMatrix(); +this.output("\n"); +this.output("\n"); +}); +Clazz.overrideMethod(c$, "outputAppearance", +function(colix, isText){ +var def = this.getDef((isText ? "T" : "") + colix); +this.output(""); + else this.output(color + "' transparency='" + J["export"].___Exporter.translucencyFractionalFromColix(colix) + "'/>"); +} else this.output(def + ">"); +this.output(""); +}, "~N,~B"); +Clazz.overrideMethod(c$, "outputChildShapeStart", +function(){ +this.outputShapeStart(); +}); +Clazz.overrideMethod(c$, "outputShapeStart", +function(){ +this.output(""); +this.outputFaceSetStart(); +}); +Clazz.overrideMethod(c$, "outputChildStart", +function(){ +}); +Clazz.overrideMethod(c$, "outputChildClose", +function(){ +}); +Clazz.overrideMethod(c$, "outputDefChildFaceSet", +function(child){ +if (child != null) this.output("DEF='" + child + "'"); +}, "~S"); +Clazz.overrideMethod(c$, "outputFaceSetStart", +function(){ +this.output("\n"); +}); +Clazz.overrideMethod(c$, "outputUseChildClose", +function(child){ +this.output(child + "/>"); +}, "~S"); +Clazz.overrideMethod(c$, "outputChildShapeClose", +function(){ +this.outputShapeClose(); +}); +Clazz.overrideMethod(c$, "outputShapeClose", +function(){ +this.output("\n"); +}); +Clazz.overrideMethod(c$, "outputCloseTag", +function(){ +this.output(">\n"); +}); +Clazz.overrideMethod(c$, "outputTriangle", +function(pt1, pt2, pt3, colix){ +this.output("\n"); +this.output(""); +this.output(""); +this.output("\n"); +this.outputAppearance(colix, false); +this.output("\n\n"); +}, "JU.T3,JU.T3,JU.T3,~N"); +Clazz.overrideMethod(c$, "outputCircle", +function(pt1, pt2, radius, colix, doFill){ +if (doFill) { +this.pushMatrix(); +this.output("translation='"); +this.tempV1.ave(this.tempP3, pt1); +this.output(this.tempV1); +this.output("'>"); +this.pushMatrix(); +this.output("rotation='1 0 0 1.5708'"); +var height = pt1.distance(pt2); +this.outputAttr("scale", radius, height, radius); +this.output(">"); +this.outputCylinderChildScaled(colix, 2); +this.popMatrix(); +this.output(""); +this.popMatrix(); +return; +}var child = this.getDef("C" + colix + "_" + radius); +this.pushMatrix(); +this.outputTransRot(this.tempP3, pt1, 0, 0, 1); +this.tempP3.set(1, 1, 1); +this.tempP3.scale(radius); +this.outputAttr("scale", this.tempP3.x, this.tempP3.y, this.tempP3.z); +this.output(">\n"); +this.pushMatrix(); +this.output(""); +this.outputAppearance(colix, false); +this.output(""); +this.popMatrix(); +} else { +this.output(child + ">"); +}this.output("\n"); +this.popMatrix(); +}, "JU.P3,JU.P3,~N,~N,~B"); +Clazz.overrideMethod(c$, "outputGeometry", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, bsPolygons, faceVertexMax, colorList, htColixes, offset){ +this.output(" creaseAngle='0.5'\n"); +if (polygonColixes != null) this.output(" colorPerVertex='false'\n"); +this.output("coordIndex='\n"); +var map = Clazz.newIntArray (nVertices, 0); +this.getCoordinateMap(vertices, map, null); +this.outputIndices(indices, map, nPolygons, bsPolygons, faceVertexMax); +this.output("'\n"); +var vNormals = null; +if (normals != null) { +vNormals = new JU.Lst(); +map = this.getNormalMap(normals, nVertices, null, vNormals); +this.output(" solid='false'\n normalPerVertex='true'\n normalIndex='\n"); +this.outputIndices(indices, map, nPolygons, bsPolygons, faceVertexMax); +this.output("'\n"); +}map = null; +if (colorList != null) { +this.output(" colorIndex='\n"); +this.outputColorIndices(indices, nPolygons, bsPolygons, faceVertexMax, htColixes, colixes, polygonColixes); +this.output("'\n"); +}this.output(">\n"); +this.output("\n"); +if (normals != null) { +this.output("\n"); +}if (colorList != null) { +this.output("\n"); +}}, "~A,~A,~A,~A,~A,~N,~N,JU.BS,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.overrideMethod(c$, "outputTextPixel", +function(pt, argb){ +}, "JU.P3,~N"); +Clazz.overrideMethod(c$, "plotText", +function(x, y, z, colix, text, font3d){ +}, "~N,~N,~N,~N,~S,JU.Font"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/__CartesianExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/__CartesianExporter.js new file mode 100755 index 000000000000..340390e6ffb4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/__CartesianExporter.js @@ -0,0 +1,210 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.___Exporter", "JU.A4", "$.M4"], "J.export.__CartesianExporter", ["java.util.Hashtable", "JU.M3", "$.P3", "JU.C", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.viewpoint = null; +this.canCapCylinders = false; +this.noColor = false; +this.sphereMatrix = null; +Clazz.instantialize(this, arguments);}, J["export"], "__CartesianExporter", J["export"].___Exporter); +Clazz.prepareFields (c$, function(){ +this.viewpoint = new JU.A4(); +this.sphereMatrix = new JU.M4(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"].__CartesianExporter, []); +this.exportType = 1; +this.lineWidthMad = 100; +}); +Clazz.defineMethod(c$, "getModelCenter", +function(){ +return this.referenceCenter; +}); +Clazz.defineMethod(c$, "getCameraPosition", +function(){ +var ptCamera = new JU.P3(); +var pt = JU.P3.new3(Clazz.doubleToInt(this.screenWidth / 2), Clazz.doubleToInt(this.screenHeight / 2), 0); +this.tm.unTransformPoint(pt, ptCamera); +ptCamera.sub(this.center); +this.tempP3.set(Clazz.doubleToInt(this.screenWidth / 2), Clazz.doubleToInt(this.screenHeight / 2), this.cameraDistance * this.scalePixelsPerAngstrom); +this.tm.unTransformPoint(this.tempP3, this.tempP3); +this.tempP3.sub(this.center); +ptCamera.add(this.tempP3); +return this.cameraPosition; +}); +Clazz.defineMethod(c$, "setTempPoints", +function(ptA, ptB, isCartesian){ +if (isCartesian) { +this.tempP1.setT(ptA); +this.tempP2.setT(ptB); +} else { +this.tm.unTransformPoint(ptA, this.tempP1); +this.tm.unTransformPoint(ptB, this.tempP2); +}}, "JU.P3,JU.P3,~B"); +Clazz.defineMethod(c$, "getCoordinateMap", +function(vertices, coordMap, bsValid){ +var n = 0; +for (var i = 0; i < coordMap.length; i++) { +if (bsValid != null && !bsValid.get(i) || Float.isNaN(vertices[i].x)) { +if (bsValid != null) bsValid.clear(i); +continue; +}coordMap[i] = n++; +} +return n; +}, "~A,~A,JU.BS"); +Clazz.defineMethod(c$, "getNormalMap", +function(normals, nNormals, bsValid, vNormals){ +var htNormals = new java.util.Hashtable(); +var normalMap = Clazz.newIntArray (nNormals, 0); +for (var i = 0; i < nNormals; i++) { +var s; +if (bsValid != null && !bsValid.get(i) || Float.isNaN(normals[i].x)) { +if (bsValid != null) bsValid.clear(i); +continue; +}s = this.getTriad(normals[i]) + "\n"; +if (htNormals.containsKey(s)) { +normalMap[i] = htNormals.get(s).intValue(); +} else { +normalMap[i] = vNormals.size(); +vNormals.addLast(s); +htNormals.put(s, Integer.$valueOf(normalMap[i])); +}} +return normalMap; +}, "~A,~N,JU.BS,JU.Lst"); +Clazz.defineMethod(c$, "outputIndices", +function(indices, map, nPolygons, bsPolygons, faceVertexMax){ +var isAll = (bsPolygons == null); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsPolygons.nextSetBit(i + 1))) this.outputFace(indices[i], map, faceVertexMax); + +}, "~A,~A,~N,JU.BS,~N"); +Clazz.overrideMethod(c$, "plotText", +function(x, y, z, colix, text, font3d){ +this.gdata.plotText(x, y, z, this.gdata.getColorArgbOrGray(colix), 0, text, font3d, this.export3D); +}, "~N,~N,~N,~N,~S,JU.Font"); +Clazz.overrideMethod(c$, "plotImage", +function(x, y, z, image, bgcolix, width, height){ +}, "~N,~N,~N,~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawAtom", +function(atom, radius){ +if (JU.Logger.debugging) this.outputComment("atom " + atom); +var colix = atom.colixAtom; +this.outputSphere(atom, radius == 0 ? atom.madAtom / 2000 : radius, colix, JU.C.isColixTranslucent(colix)); +}, "JM.Atom,~N"); +Clazz.overrideMethod(c$, "drawCircle", +function(x, y, z, diameter, colix, doFill){ +this.tempP3.set(x, y, z); +this.tm.unTransformPoint(this.tempP3, this.tempP1); +var radius = this.vwr.tm.unscaleToScreen(z, diameter) / 2; +this.tempP3.set(x, y, z + 1); +this.tm.unTransformPoint(this.tempP3, this.tempP3); +this.outputCircle(this.tempP1, this.tempP3, radius, colix, doFill); +}, "~N,~N,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "drawEllipse", +function(ptCenter, ptX, ptY, colix, doFill){ +this.tempV1.sub2(ptX, ptCenter); +this.tempV2.sub2(ptY, ptCenter); +this.tempV2.cross(this.tempV1, this.tempV2); +this.tempV2.normalize(); +this.tempV2.scale(doFill ? 0.002 : 0.005); +this.tempP1.sub2(ptCenter, this.tempV2); +this.tempP2.add2(ptCenter, this.tempV2); +return this.outputCylinder(ptCenter, this.tempP1, this.tempP2, colix, doFill ? 2 : 0, 1.01, ptX, ptY, true); +}, "JU.P3,JU.P3,JU.P3,~N,~B"); +Clazz.overrideMethod(c$, "drawPixel", +function(colix, x, y, z, scale){ +this.tempP3.set(x, y, z); +this.tm.unTransformPoint(this.tempP3, this.tempP1); +this.outputSphere(this.tempP1, 0.02 * scale, colix, true); +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawTextPixel", +function(argb, x, y, z){ +this.tempP3.set(x, y, z); +this.tm.unTransformPoint(this.tempP3, this.tempP1); +this.outputTextPixel(this.tempP1, argb); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillConeScreen", +function(colix, endcap, screenDiameter, screenBase, screenTip, isBarb){ +this.tm.unTransformPoint(screenBase, this.tempP1); +this.tm.unTransformPoint(screenTip, this.tempP2); +var radius = this.vwr.tm.unscaleToScreen(screenBase.z, screenDiameter) / 2; +if (radius < 0.05) radius = 0.05; +this.outputCone(this.tempP1, this.tempP2, radius, colix); +}, "~N,~N,~N,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "drawCylinder", +function(ptA, ptB, colix1, colix2, endcaps, mad, bondOrder){ +this.setTempPoints(ptA, ptB, bondOrder < 0); +var radius = mad / 2000; +if (JU.Logger.debugging) this.outputComment("bond " + ptA + " " + ptB); +if (colix1 == colix2 || this.noColor) { +this.outputCylinder(null, this.tempP1, this.tempP2, colix1, endcaps, radius, null, null, bondOrder != -1); +} else { +this.tempV2.ave(this.tempP2, this.tempP1); +this.tempP3.setT(this.tempV2); +if (this.solidOnly && endcaps == 0) endcaps = 2; + else if (this.canCapCylinders && endcaps == 3) endcaps = (this.solidOnly ? 5 : 4); +this.outputCylinder(null, this.tempP3, this.tempP1, colix1, (endcaps == 3 ? 0 : endcaps), radius, null, null, true); +this.outputCylinder(null, this.tempP3, this.tempP2, colix2, (endcaps == 3 ? 0 : endcaps), radius, null, null, true); +if (endcaps == 3) { +this.outputSphere(this.tempP1, radius * 1.01, colix1, bondOrder != -2); +this.outputSphere(this.tempP2, radius * 1.01, colix2, bondOrder != -2); +}}}, "JU.P3,JU.P3,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillCylinderScreenMad", +function(colix, endcaps, mad, screenA, screenB){ +var radius = mad / 2000; +this.setTempPoints(screenA, screenB, false); +this.outputCylinder(null, this.tempP1, this.tempP2, colix, endcaps, radius, null, null, true); +}, "~N,~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillCylinderScreen", +function(colix, endcaps, screenDiameter, screenA, screenB, ptA, ptB, radius){ +if (ptA != null) { +this.drawCylinder(ptA, ptB, colix, colix, endcaps, Math.round(radius * 2000), -1); +return; +}var mad = (screenDiameter < 0 ? -screenDiameter * 10 : Math.round(this.vwr.tm.unscaleToScreen((screenA.z + screenB.z) / 2, screenDiameter)) * 1000); +this.fillCylinderScreenMad(colix, endcaps, mad, screenA, screenB); +}, "~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3,~N"); +Clazz.overrideMethod(c$, "fillEllipsoid", +function(center, points, colix, x, y, z, diameter, toEllipsoidal, coef, deriv, octantPoints){ +this.outputEllipsoid(center, points, colix); +}, "JU.P3,~A,~N,~N,~N,~N,~N,JU.M3,~A,JU.M4,~A"); +Clazz.overrideMethod(c$, "fillSphere", +function(colix, diameter, pt){ +this.tm.unTransformPoint(pt, this.tempP1); +this.outputSphere(this.tempP1, this.vwr.tm.unscaleToScreen(pt.z, diameter) / 2, colix, true); +}, "~N,~N,JU.P3"); +Clazz.overrideMethod(c$, "fillTriangle", +function(colix, ptA, ptB, ptC, twoSided){ +this.tm.unTransformPoint(ptA, this.tempP1); +this.tm.unTransformPoint(ptB, this.tempP2); +this.tm.unTransformPoint(ptC, this.tempP3); +if (this.solidOnly) { +this.outputSolidPlate(this.tempP1, this.tempP2, this.tempP3, colix); +} else { +this.outputTriangle(this.tempP1, this.tempP2, this.tempP3, colix); +if (twoSided) this.outputTriangle(this.tempP1, this.tempP3, this.tempP2, colix); +}}, "~N,JU.T3,JU.T3,JU.T3,~B"); +Clazz.defineMethod(c$, "outputSolidPlate", +function(tempP1, tempP2, tempP3, colix){ +}, "JU.P3,JU.P3,JU.P3,~N"); +Clazz.defineMethod(c$, "setSphereMatrix", +function(center, rx, ry, rz, a, sphereMatrix){ +if (a != null) { +var m = new JU.M3(); +m.m00 = rx; +m.m11 = ry; +m.m22 = rz; +var mq = new JU.M3().setAA(a); +mq.mul(m); +sphereMatrix.setToM3(mq); +} else { +sphereMatrix.setIdentity(); +sphereMatrix.m00 = rx; +sphereMatrix.m11 = ry; +sphereMatrix.m22 = rz; +}sphereMatrix.m03 = center.x; +sphereMatrix.m13 = center.y; +sphereMatrix.m23 = center.z; +sphereMatrix.m33 = 1; +}, "JU.T3,~N,~N,~N,JU.A4,JU.M4"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/__RayTracerExporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/__RayTracerExporter.js new file mode 100755 index 000000000000..08ea30d832bd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/__RayTracerExporter.js @@ -0,0 +1,139 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["J.export.___Exporter"], "J.export.__RayTracerExporter", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isSlabEnabled = false; +this.minScreenDimension = 0; +this.wasPerspective = false; +Clazz.instantialize(this, arguments);}, J["export"], "__RayTracerExporter", J["export"].___Exporter); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J["export"].__RayTracerExporter, []); +this.exportType = 2; +this.lineWidthMad = 2; +}); +Clazz.defineMethod(c$, "initOutput", +function(vwr, privateKey, g3d, params){ +this.wasPerspective = vwr.tm.perspectiveDepth; +if (Clazz.superCall(this, J["export"].__RayTracerExporter, "initOutput", [vwr, privateKey, g3d, params])) { +vwr.tm.perspectiveDepth = false; +if (this.wasPerspective) vwr.shm.finalizeAtoms(null, false); +return true; +}return false; +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz.defineMethod(c$, "finalizeOutput2", +function(){ +this.vwr.tm.perspectiveDepth = this.wasPerspective; +return Clazz.superCall(this, J["export"].__RayTracerExporter, "finalizeOutput2", []); +}); +Clazz.overrideMethod(c$, "outputVertex", +function(pt, offset){ +J["export"].___Exporter.setTempVertex(pt, offset, this.tempP1); +this.tm.transformPt3f(this.tempP1, this.tempP1); +this.output(this.tempP1); +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "getScreenNormal", +function(pt, normal, factor){ +if (Float.isNaN(normal.x)) { +this.tempP3.set(0, 0, 0); +return this.tempP3; +}this.tempP1.add2(pt, normal); +this.tm.transformPt3f(pt, this.tempP2); +this.tm.transformPt3f(this.tempP1, this.tempP3); +this.tempP3.sub(this.tempP2); +this.tempP3.scale(factor); +return this.tempP3; +}, "JU.T3,JU.T3,~N"); +Clazz.defineMethod(c$, "initVars", +function(){ +this.isSlabEnabled = this.tm.slabEnabled; +this.minScreenDimension = Math.min(this.screenWidth, this.screenHeight); +}); +Clazz.overrideMethod(c$, "drawAtom", +function(atom, radius){ +this.outputSphere(atom.sX, atom.sY, atom.sZ, atom.sD / 2, atom.colixAtom); +}, "JM.Atom,~N"); +Clazz.overrideMethod(c$, "drawCircle", +function(x, y, z, diameter, colix, doFill){ +var radius = diameter / 2; +this.outputCircle(x, y, z, radius, colix, doFill); +}, "~N,~N,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "drawEllipse", +function(ptAtom, ptX, ptY, colix, doFill){ +return false; +}, "JU.P3,JU.P3,JU.P3,~N,~B"); +Clazz.overrideMethod(c$, "drawPixel", +function(colix, x, y, z, scale){ +this.outputSphere(x, y, z, 0.75 * scale, colix); +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawTextPixel", +function(argb, x, y, z){ +this.outputTextPixel(x, y, this.fixScreenZ(z), argb); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillConeScreen", +function(colix, endcap, screenDiameter, screenBase, screenTip, isBarb){ +this.outputCone(screenBase, screenTip, screenDiameter / 2, colix, isBarb); +}, "~N,~N,~N,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "drawCylinder", +function(screenA, screenB, colix1, colix2, endcaps, madBond, bondOrder){ +if (colix1 == colix2) { +this.fillConicalCylinder(screenA, screenB, madBond, colix1, endcaps); +} else { +this.tempV2.ave(screenB, screenA); +this.tempP1.setT(this.tempV2); +this.fillConicalCylinder(screenA, this.tempP1, madBond, colix1, endcaps); +this.fillConicalCylinder(this.tempP1, screenB, madBond, colix2, endcaps); +}if (endcaps != 3) return; +var radius = this.vwr.tm.scaleToScreen(Clazz.floatToInt(screenA.z), madBond) / 2; +if (radius <= 1) return; +this.outputSphere(screenA.x, screenA.y, screenA.z, radius, colix1); +radius = this.vwr.tm.scaleToScreen(Clazz.floatToInt(screenB.z), madBond) / 2; +if (radius <= 1) return; +this.outputSphere(screenB.x, screenB.y, screenB.z, radius, colix2); +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "fillConicalCylinder", +function(screenA, screenB, madBond, colix, endcaps){ +var radius1 = this.vwr.tm.scaleToScreen(Clazz.floatToInt(screenA.z), madBond) / 2; +if (radius1 == 0) return; +if (radius1 < 1) radius1 = 1; +if (screenA.distance(screenB) == 0) { +this.outputSphere(screenA.x, screenA.y, screenA.z, radius1, colix); +return; +}var radius2 = this.vwr.tm.scaleToScreen(Clazz.floatToInt(screenB.z), madBond) / 2; +if (radius2 == 0) return; +if (radius2 < 1) radius2 = 1; +this.outputCylinderConical(screenA, screenB, radius1, radius2, colix); +}, "JU.P3,JU.P3,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillCylinderScreenMad", +function(colix, endcaps, diameter, screenA, screenB){ +if (diameter == 0) return; +if (diameter < 1) diameter = 1; +var radius = diameter / 2; +if (screenA.distance(screenB) == 0) { +this.outputSphere(screenA.x, screenA.y, screenA.z, radius, colix); +return; +}this.outputCylinder(screenA, screenB, radius, colix, endcaps == 2); +if (endcaps != 3 || radius <= 1) return; +this.outputSphere(screenA.x, screenA.y, screenA.z, radius, colix); +this.outputSphere(screenB.x, screenB.y, screenB.z, radius, colix); +}, "~N,~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillCylinderScreen", +function(colix, endcaps, screenDiameter, screenA, screenB, ptA, ptB, radius){ +this.fillCylinderScreenMad(colix, endcaps, screenDiameter, screenA, screenB); +}, "~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3,~N"); +Clazz.overrideMethod(c$, "fillSphere", +function(colix, diameter, pt){ +this.outputSphere(pt.x, pt.y, pt.z, diameter / 2, colix); +}, "~N,~N,JU.P3"); +Clazz.overrideMethod(c$, "fillTriangle", +function(colix, ptA, ptB, ptC, twoSided){ +this.outputTriangle(ptA, ptB, ptC, colix); +}, "~N,JU.T3,JU.T3,JU.T3,~B"); +Clazz.overrideMethod(c$, "fillEllipsoid", +function(center, points, colix, x, y, z, diameter, toEllipsoidal, coef, deriv, octantPoints){ +var radius = diameter / 2; +if (radius == 0) return; +if (radius < 1) radius = 1; +this.outputEllipsoid(center, radius, coef, colix); +}, "JU.P3,~A,~N,~N,~N,~N,~N,JU.M3,~A,JU.M4,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/export/___Exporter.js b/config/plugins/visualizations/jmol/static/j2s/J/export/___Exporter.js new file mode 100755 index 000000000000..ca04a9685d94 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/export/___Exporter.js @@ -0,0 +1,331 @@ +Clazz.declarePackage("J.export"); +Clazz.load(["JU.P3", "$.V3"], "J.export.___Exporter", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.M3", "$.Quat", "$.SB", "JU.C", "$.Logger", "$.MeshSurface"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.solidOnly = false; +this.vwr = null; +this.tm = null; +this.privateKey = 0; +this.export3D = null; +this.out = null; +this.fileName = null; +this.commandLineOptions = null; +this.gdata = null; +this.backgroundColix = 0; +this.screenWidth = 0; +this.screenHeight = 0; +this.slabZ = 0; +this.depthZ = 0; +this.lightSource = null; +this.fixedRotationCenter = null; +this.referenceCenter = null; +this.cameraPosition = null; +this.cameraDistance = 0; +this.apertureAngle = 0; +this.scalePixelsPerAngstrom = 0; +this.exportScale = 1; +this.exportType = 0; +this.tempP1 = null; +this.tempP2 = null; +this.tempP3 = null; +this.center = null; +this.tempV1 = null; +this.tempV2 = null; +this.isWebGL = false; +this.commentChar = null; +this.tempC = null; +this.nText = 0; +this.nImage = 0; +this.lineWidthMad = 0; +Clazz.instantialize(this, arguments);}, J["export"], "___Exporter", null); +Clazz.prepareFields (c$, function(){ +this.tempP1 = new JU.P3(); +this.tempP2 = new JU.P3(); +this.tempP3 = new JU.P3(); +this.center = new JU.P3(); +this.tempV1 = new JU.V3(); +this.tempV2 = new JU.V3(); +this.tempC = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "initializeOutput", +function(vwr, privateKey, gdata, params){ +return this.initOutput(vwr, privateKey, gdata, params); +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz.defineMethod(c$, "initOutput", +function(vwr, privateKey, g3d, params){ +this.vwr = vwr; +this.tm = vwr.tm; +this.isWebGL = params.get("type").equals("JS"); +this.gdata = g3d; +this.privateKey = privateKey; +this.backgroundColix = vwr.getObjectColix(0); +this.center.setT(this.tm.fixedRotationCenter); +this.exportScale = vwr.getFloat(570425357); +if (this.exportScale == 0) { +this.exportScale = 10; +}JU.Logger.info("__Exporter exportScale: " + this.exportScale); +if ((this.screenWidth <= 0) || (this.screenHeight <= 0)) { +this.screenWidth = vwr.getScreenWidth(); +this.screenHeight = vwr.getScreenHeight(); +}this.slabZ = g3d.slab; +this.depthZ = g3d.depth; +this.lightSource = g3d.getLightSource(); +var cameraFactors = vwr.tm.getCameraFactors(); +this.referenceCenter = cameraFactors[0]; +this.cameraPosition = cameraFactors[1]; +this.fixedRotationCenter = cameraFactors[2]; +this.cameraDistance = cameraFactors[3].x; +this.apertureAngle = cameraFactors[3].y; +this.scalePixelsPerAngstrom = cameraFactors[3].z; +this.out = params.get("outputChannel"); +this.commandLineOptions = params.get("params"); +if (this.out != null) this.fileName = this.out.getFileName(); +this.outputHeader(); +return true; +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz.defineMethod(c$, "output", +function(data){ +this.out.append(data); +}, "~S"); +Clazz.defineMethod(c$, "getByteCount", +function(){ +return this.out.getByteCount(); +}); +Clazz.defineMethod(c$, "outputComment", +function(comment){ +if (this.commentChar != null) this.output(this.commentChar + comment + "\n"); +}, "~S"); +c$.setTempVertex = Clazz.defineMethod(c$, "setTempVertex", +function(pt, offset, ptTemp){ +ptTemp.setT(pt); +if (offset != null) ptTemp.add(offset); +}, "JU.T3,JU.T3,JU.T3"); +Clazz.defineMethod(c$, "outputVertices", +function(vertices, nVertices, offset){ +for (var i = 0; i < nVertices; i++) { +if (Float.isNaN(vertices[i].x)) continue; +this.outputVertex(vertices[i], offset); +this.output("\n"); +} +}, "~A,~N,JU.T3"); +Clazz.defineMethod(c$, "outputVertex", +function(pt, offset){ +J["export"].___Exporter.setTempVertex(pt, offset, this.tempV1); +this.output(this.tempV1); +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "outputJmolPerspective", +function(){ +this.outputComment(this.getJmolPerspective()); +}); +Clazz.defineMethod(c$, "getJmolPerspective", +function(){ +if (this.commentChar == null) return ""; +var sb = new JU.SB(); +sb.append(this.commentChar).append("Jmol perspective:"); +sb.append("\n").append(this.commentChar).append("screen width height dim: " + this.screenWidth + " " + this.screenHeight + " " + this.vwr.getScreenDim()); +sb.append("\n").append(this.commentChar).append("perspectiveDepth: " + this.vwr.tm.perspectiveDepth); +sb.append("\n").append(this.commentChar).append("cameraDistance(angstroms): " + this.cameraDistance); +sb.append("\n").append(this.commentChar).append("aperatureAngle(degrees): " + this.apertureAngle); +sb.append("\n").append(this.commentChar).append("scalePixelsPerAngstrom: " + this.scalePixelsPerAngstrom); +sb.append("\n").append(this.commentChar).append("light source: " + this.lightSource); +sb.append("\n").append(this.commentChar).append("lighting: " + this.vwr.getLightingState().$replace('\n', ' ')); +sb.append("\n").append(this.commentChar).append("center: " + this.center); +sb.append("\n").append(this.commentChar).append("rotationRadius: " + this.vwr.getFloat(570425388)); +sb.append("\n").append(this.commentChar).append("boundboxCenter: " + this.vwr.getBoundBoxCenter()); +sb.append("\n").append(this.commentChar).append("translationOffset: " + this.tm.getTranslationScript()); +sb.append("\n").append(this.commentChar).append("zoom: " + this.vwr.tm.zmPct); +sb.append("\n").append(this.commentChar).append("moveto command: " + this.vwr.getOrientation(4129, null, null, null)); +sb.append("\n"); +return sb.toString(); +}); +Clazz.defineMethod(c$, "outputFooter", +function(){ +}); +Clazz.defineMethod(c$, "finalizeOutput", +function(){ +return this.finalizeOutput2(); +}); +Clazz.defineMethod(c$, "finalizeOutput2", +function(){ +this.outputFooter(); +if (this.out == null) return null; +var ret = this.out.closeChannel(); +if (this.fileName == null) return ret; +if (ret != null) { +JU.Logger.info(ret); +return "ERROR EXPORTING FILE: " + ret; +}return "OK " + this.out.getByteCount() + " " + this.export3D.getExportName() + " " + this.fileName; +}); +Clazz.defineMethod(c$, "getExportDate", +function(){ +return this.vwr.apiPlatform.getDateFormat(null); +}); +Clazz.defineMethod(c$, "rgbFractionalFromColix", +function(colix){ +return this.rgbFractionalFromArgb(this.gdata.getColorArgbOrGray(colix)); +}, "~N"); +Clazz.defineMethod(c$, "getTriadC", +function(t){ +return this.getTriad(t); +}, "JU.T3"); +Clazz.defineMethod(c$, "getTriad", +function(t){ +return J["export"].___Exporter.round(t.x) + " " + J["export"].___Exporter.round(t.y) + " " + J["export"].___Exporter.round(t.z); +}, "JU.T3"); +Clazz.defineMethod(c$, "rgbFractionalFromArgb", +function(argb){ +var red = (argb >> 16) & 0xFF; +var green = (argb >> 8) & 0xFF; +var blue = argb & 0xFF; +this.tempC.set(red == 0 ? 0 : (red + 1) / 256, green == 0 ? 0 : (green + 1) / 256, blue == 0 ? 0 : (blue + 1) / 256); +return this.getTriadC(this.tempC); +}, "~N"); +c$.translucencyFractionalFromColix = Clazz.defineMethod(c$, "translucencyFractionalFromColix", +function(colix){ +return J["export"].___Exporter.round(JU.C.getColixTranslucencyFractional(colix)); +}, "~N"); +c$.opacityFractionalFromColix = Clazz.defineMethod(c$, "opacityFractionalFromColix", +function(colix){ +return J["export"].___Exporter.round(1 - JU.C.getColixTranslucencyFractional(colix)); +}, "~N"); +c$.opacityFractionalFromArgb = Clazz.defineMethod(c$, "opacityFractionalFromArgb", +function(argb){ +var opacity = (argb >> 24) & 0xFF; +return J["export"].___Exporter.round(opacity == 0 ? 0 : (opacity + 1) / 256); +}, "~N"); +c$.round = Clazz.defineMethod(c$, "round", +function(number){ +var s; +return (number == 0 ? "0" : number == 1 ? "1" : (s = "" + (Math.round(number * 1000) / 1000)).startsWith("0.") ? s.substring(1) : s.startsWith("-0.") ? "-" + s.substring(2) : s.endsWith(".0") ? s.substring(0, s.length - 2) : s); +}, "~N"); +c$.round = Clazz.defineMethod(c$, "round", +function(pt){ +return J["export"].___Exporter.round(pt.x) + " " + J["export"].___Exporter.round(pt.y) + " " + J["export"].___Exporter.round(pt.z); +}, "JU.T3"); +Clazz.defineMethod(c$, "getColorList", +function(i00, colixes, nVertices, bsSelected, htColixes){ +var nColix = 0; +var list = new JU.Lst(); +var isAll = (bsSelected == null); +var i0 = (isAll ? nVertices - 1 : bsSelected.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) { +var color = Short.$valueOf(colixes[i]); +if (!htColixes.containsKey(color)) { +list.addLast(color); +htColixes.put(color, Integer.$valueOf(i00 + nColix++)); +}} +return list; +}, "~N,~A,~N,JU.BS,java.util.Map"); +c$.getConeMesh = Clazz.defineMethod(c$, "getConeMesh", +function(centerBase, matRotateScale, colix){ +var ms = new JU.MeshSurface(); +var ndeg = 10; +var n = Clazz.doubleToInt(360 / ndeg); +ms.colix = colix; +ms.vs = new Array(ms.vc = n + 1); +ms.pis = JU.AU.newInt2(ms.pc = n); +for (var i = 0; i < n; i++) ms.pis[i] = Clazz.newIntArray(-1, [i, (i + 1) % n, n]); + +var d = ndeg / 180. * 3.141592653589793; +for (var i = 0; i < n; i++) { +var x = (Math.cos(i * d)); +var y = (Math.sin(i * d)); +ms.vs[i] = JU.P3.new3(x, y, 0); +} +ms.vs[n] = JU.P3.new3(0, 0, 1); +if (matRotateScale != null) { +ms.normals = new Array(ms.vc); +for (var i = 0; i < ms.vc; i++) { +matRotateScale.rotate(ms.vs[i]); +ms.normals[i] = JU.V3.newV(ms.vs[i]); +ms.normals[i].normalize(); +ms.vs[i].add(centerBase); +} +}return ms; +}, "JU.P3,JU.M3,~N"); +Clazz.defineMethod(c$, "getRotationMatrix", +function(pt1, pt2, radius){ +var m = new JU.M3(); +var m1; +if (pt2.x == pt1.x && pt2.y == pt1.y) { +m1 = JU.M3.newM3(null); +if (pt1.z > pt2.z) m1.m11 = m1.m22 = -1; +} else { +this.tempV1.sub2(pt2, pt1); +this.tempV2.set(0, 0, 1); +this.tempV2.cross(this.tempV2, this.tempV1); +this.tempV1.cross(this.tempV1, this.tempV2); +var q = JU.Quat.getQuaternionFrameV(this.tempV2, this.tempV1, null, false); +m1 = q.getMatrix(); +}m.m00 = radius; +m.m11 = radius; +m.m22 = pt2.distance(pt1); +m1.mul(m); +return m1; +}, "JU.P3,JU.P3,~N"); +Clazz.defineMethod(c$, "getRotationMatrix", +function(pt1, ptZ, radius, ptX, ptY){ +var m = new JU.M3(); +m.m00 = ptX.distance(pt1) * radius; +m.m11 = ptY.distance(pt1) * radius; +m.m22 = ptZ.distance(pt1) * 2; +var q = JU.Quat.getQuaternionFrame(pt1, ptX, ptY); +var m1 = q.getMatrix(); +m1.mul(m); +return m1; +}, "JU.P3,JU.P3,~N,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "drawSurface", +function(meshSurface, colix){ +var nVertices = meshSurface.vc; +if (nVertices == 0) return; +var nTriangles = 0; +var nPolygons = meshSurface.pc; +var bsPolygons = meshSurface.bsPolygons; +var faceVertexMax = (meshSurface.haveQuads ? 4 : 3); +var indices = meshSurface.pis; +var isAll = (bsPolygons == null); +var i0 = (isAll ? nPolygons - 1 : bsPolygons.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsPolygons.nextSetBit(i + 1))) nTriangles += (faceVertexMax == 4 && indices[i].length == 4 ? 2 : 1); + +if (nTriangles == 0) return; +var vertices = meshSurface.getVertices(); +var normals = meshSurface.normals; +var colorSolid = (colix != 0); +var colixes = (colorSolid ? null : meshSurface.vcs); +var polygonColixes = (colorSolid ? meshSurface.pcs : null); +var htColixes = null; +var colorList = null; +if (!this.isWebGL) { +htColixes = new java.util.Hashtable(); +if (polygonColixes != null) colorList = this.getColorList(0, polygonColixes, nPolygons, bsPolygons, htColixes); + else if (colixes != null) colorList = this.getColorList(0, colixes, nVertices, null, htColixes); +}this.outputSurface(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, meshSurface.offset); +}, "JU.MeshSurface,~N"); +Clazz.defineMethod(c$, "outputSurface", +function(vertices, normals, colixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, offset){ +}, "~A,~A,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,JU.Lst,java.util.Map,JU.P3"); +Clazz.defineMethod(c$, "drawFilledCircle", +function(colixRing, colixFill, diameter, x, y, z){ +if (colixRing != 0) this.drawCircle(x, y, z, diameter, colixRing, false); +if (colixFill != 0) this.drawCircle(x, y, z, diameter, colixFill, true); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "fixScreenZ", +function(z){ +return (z <= 3 ? z + Clazz.floatToInt(this.tm.cameraDistance) : z); +}, "~N"); +Clazz.defineMethod(c$, "plotImage", +function(x, y, z, image, bgcolix, width, height){ +this.outputComment("start image " + (++this.nImage)); +this.gdata.plotImage(x, y, z, image, this.export3D, bgcolix, width, height); +this.outputComment("end image " + this.nImage); +}, "~N,~N,~N,~O,~N,~N,~N"); +Clazz.defineMethod(c$, "plotText", +function(x, y, z, colix, text, font3d){ +this.outputComment("start text " + (++this.nText) + ": " + text); +this.gdata.plotText(x, y, z, this.gdata.getColorArgbOrGray(colix), 0, text, font3d, this.export3D); +this.outputComment("end text " + this.nText + ": " + text); +}, "~N,~N,~N,~N,~S,JU.Font"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/CircleRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/CircleRenderer.js new file mode 100755 index 000000000000..b36153bf26de --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/CircleRenderer.js @@ -0,0 +1,154 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["J.g3d.G3DRenderer"], "J.g3d.CircleRenderer", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g3d = null; +Clazz.instantialize(this, arguments);}, J.g3d, "CircleRenderer", null, J.g3d.G3DRenderer); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "set", +function(g3d, gdata){ +try { +this.g3d = g3d; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return this; +}, "J.api.JmolRendererInterface,JU.GData"); +Clazz.defineMethod(c$, "plotCircleCenteredClipped", +function(xCenter, yCenter, zCenter, diameter){ +var g = this.g3d; +var c = g.argbCurrent; +var width = g.width; +var zbuf = g.zbuf; +var p = g.pixel; +var r = Clazz.doubleToInt(diameter / 2); +var sizeCorrection = 1 - (diameter & 1); +var x = r; +var y = 0; +var xChange = 1 - 2 * r; +var yChange = 1; +var radiusError = 0; +while (x >= y) { +g.plotPixelClippedArgb(c, xCenter + x - sizeCorrection, yCenter + y - sizeCorrection, zCenter, width, zbuf, p); +g.plotPixelClippedArgb(c, xCenter + x - sizeCorrection, yCenter - y, zCenter, width, zbuf, p); +g.plotPixelClippedArgb(c, xCenter - x, yCenter + y - sizeCorrection, zCenter, width, zbuf, p); +g.plotPixelClippedArgb(c, xCenter - x, yCenter - y, zCenter, width, zbuf, p); +g.plotPixelClippedArgb(c, xCenter + y - sizeCorrection, yCenter + x - sizeCorrection, zCenter, width, zbuf, p); +g.plotPixelClippedArgb(c, xCenter + y - sizeCorrection, yCenter - x, zCenter, width, zbuf, p); +g.plotPixelClippedArgb(c, xCenter - y, yCenter + x - sizeCorrection, zCenter, width, zbuf, p); +g.plotPixelClippedArgb(c, xCenter - y, yCenter - x, zCenter, width, zbuf, p); +++y; +radiusError += yChange; +yChange += 2; +if (2 * radiusError + xChange > 0) { +--x; +radiusError += xChange; +xChange += 2; +}} +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "plotCircleCenteredUnclipped", +function(xCenter, yCenter, zCenter, diameter){ +var r = Clazz.doubleToInt(diameter / 2); +var sizeCorrection = 1 - (diameter & 1); +var x = r; +var y = 0; +var xChange = 1 - 2 * r; +var yChange = 1; +var radiusError = 0; +var g = this.g3d; +var p = g.pixel; +var width = g.width; +var zbuf = g.zbuf; +var c = g.argbCurrent; +while (x >= y) { +g.plotPixelUnclipped(c, xCenter + x - sizeCorrection, yCenter + y - sizeCorrection, zCenter, width, zbuf, p); +g.plotPixelUnclipped(c, xCenter + x - sizeCorrection, yCenter - y, zCenter, width, zbuf, p); +g.plotPixelUnclipped(c, xCenter - x, yCenter + y - sizeCorrection, zCenter, width, zbuf, p); +g.plotPixelUnclipped(c, xCenter - x, yCenter - y, zCenter, width, zbuf, p); +g.plotPixelUnclipped(c, xCenter + y - sizeCorrection, yCenter + x - sizeCorrection, zCenter, width, zbuf, p); +g.plotPixelUnclipped(c, xCenter + y - sizeCorrection, yCenter - x, zCenter, width, zbuf, p); +g.plotPixelUnclipped(c, xCenter - y, yCenter + x - sizeCorrection, zCenter, width, zbuf, p); +g.plotPixelUnclipped(c, xCenter - y, yCenter - x, zCenter, width, zbuf, p); +++y; +radiusError += yChange; +yChange += 2; +if (2 * radiusError + xChange > 0) { +--x; +radiusError += xChange; +xChange += 2; +}} +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "plotFilledCircleCenteredClipped", +function(xCenter, yCenter, zCenter, diameter){ +var r = Clazz.doubleToInt(diameter / 2); +var sizeCorrection = 1 - (diameter & 1); +var x = r; +var y = 0; +var xChange = 1 - 2 * r; +var yChange = 1; +var radiusError = 0; +var g = this.g3d; +var c = g.argbCurrent; +var width = g.width; +var height = g.height; +var zbuf = g.zbuf; +var p = g.pixel; +while (x >= y) { +this.plotPixelsClipped(c, 2 * x + 1 - sizeCorrection, xCenter - x, yCenter + y - sizeCorrection, zCenter, width, height, zbuf, p); +this.plotPixelsClipped(c, 2 * x + 1 - sizeCorrection, xCenter - x, yCenter - y, zCenter, width, height, zbuf, p); +this.plotPixelsClipped(c, 2 * y + 1 - sizeCorrection, xCenter - y, yCenter + x - sizeCorrection, zCenter, width, height, zbuf, p); +this.plotPixelsClipped(c, 2 * y + 1 - sizeCorrection, xCenter - y, yCenter - x, zCenter, width, height, zbuf, p); +++y; +radiusError += yChange; +yChange += 2; +if (2 * radiusError + xChange > 0) { +--x; +radiusError += xChange; +xChange += 2; +}} +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "plotPixelsClipped", +function(argb, count, x, y, z, width, height, zbuf, p){ +if (y < 0 || y >= height || x >= width) return; +if (x < 0) { +count += x; +x = 0; +}if (count + x > width) count = width - x; +if (count <= 0) return; +var offsetPbuf = y * width + x; +var offsetMax = offsetPbuf + count; +while (offsetPbuf < offsetMax) { +if (z < zbuf[offsetPbuf]) p.addPixel(offsetPbuf, z, argb); +offsetPbuf++; +} +}, "~N,~N,~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz.defineMethod(c$, "plotFilledCircleCenteredUnclipped", +function(xCenter, yCenter, zCenter, diameter){ +var r = Clazz.doubleToInt(diameter / 2); +var x = r; +var y = 0; +var xChange = 1 - 2 * r; +var yChange = 1; +var radiusError = 0; +var g = this.g3d; +var c = g.argbCurrent; +var width = g.width; +var zbuf = g.zbuf; +var p = g.pixel; +while (x >= y) { +g.plotPixelsUnclippedCount(c, 2 * x + 1, xCenter - x, yCenter + y, zCenter, width, zbuf, p); +g.plotPixelsUnclippedCount(c, 2 * x + 1, xCenter - x, yCenter - y, zCenter, width, zbuf, p); +g.plotPixelsUnclippedCount(c, 2 * y + 1, xCenter - y, yCenter + x, zCenter, width, zbuf, p); +g.plotPixelsUnclippedCount(c, 2 * y + 1, xCenter - y, yCenter - x, zCenter, width, zbuf, p); +++y; +radiusError += yChange; +yChange += 2; +if (2 * radiusError + xChange > 0) { +--x; +radiusError += xChange; +xChange += 2; +}} +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/CylinderRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/CylinderRenderer.js new file mode 100755 index 000000000000..6435bd140517 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/CylinderRenderer.js @@ -0,0 +1,603 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["JU.P3i"], "J.g3d.CylinderRenderer", ["JU.AU", "$.P3"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g3d = null; +this.line3d = null; +this.shader = null; +this.colixA = 0; +this.colixB = 0; +this.shadesA = null; +this.shadesB = null; +this.xA = 0; +this.yA = 0; +this.zA = 0; +this.xAend = 0; +this.yAend = 0; +this.zAend = 0; +this.dxB = 0; +this.dyB = 0; +this.dzB = 0; +this.xAf = 0; +this.yAf = 0; +this.zAf = 0; +this.dxBf = 0; +this.dyBf = 0; +this.dzBf = 0; +this.tEvenDiameter = false; +this.diameter = 0; +this.endcaps = 0; +this.endCapHidden = false; +this.xEndcap = 0; +this.yEndcap = 0; +this.zEndcap = 0; +this.argbEndcap = 0; +this.colixEndcap = 0; +this.endcapShadeIndex = 0; +this.radius = 0; +this.radius2 = 0; +this.cosTheta = 0; +this.cosPhi = 0; +this.sinPhi = 0; +this.clipped = false; +this.rasterCount = 0; +this.xyztRaster = null; +this.xyzfRaster = null; +this.ptA0 = null; +this.ptB0 = null; +this.ptA0i = null; +this.ptB0i = null; +this.xTip = 0; +this.yTip = 0; +this.zTip = 0; +Clazz.instantialize(this, arguments);}, J.g3d, "CylinderRenderer", null); +Clazz.prepareFields (c$, function(){ +this.xyztRaster = Clazz.newArray(-1, [ Clazz.newFloatArray (32, 0), Clazz.newFloatArray (32, 0), Clazz.newFloatArray (32, 0), Clazz.newFloatArray (32, 0)]); +this.xyzfRaster = Clazz.newArray(-1, [ Clazz.newIntArray (32, 0), Clazz.newIntArray (32, 0), Clazz.newIntArray (32, 0), Clazz.newIntArray (32, 0)]); +this.ptA0i = new JU.P3i(); +this.ptB0i = new JU.P3i(); +}); +Clazz.makeConstructor(c$, +function(g3d){ +this.g3d = g3d; +this.line3d = g3d.line3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz.defineMethod(c$, "renderOld", +function(colixA, colixB, screen, endcaps, diameter, xa, ya, za, xb, yb, zb){ +var r = Clazz.doubleToInt(diameter / 2) + 1; +var g = this.g3d; +var codeMinA = g.clipCode3(xa - r, ya - r, za - r); +var codeMaxA = g.clipCode3(xa + r, ya + r, za + r); +var codeMinB = g.clipCode3(xb - r, yb - r, zb - r); +var codeMaxB = g.clipCode3(xb + r, yb + r, zb + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxB = xb - xa; +this.dyB = yb - ya; +this.dzB = zb - za; +if (diameter <= 1) { +this.line3d.plotLineDeltaOld(g.getColorArgbOrGray(colixA), g.getColorArgbOrGray(colixB), xa, ya, za, this.dxB, this.dyB, this.dzB, this.clipped); +return; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.diameter = diameter; +this.xA = xa; +this.yA = ya; +this.zA = za; +this.endcaps = endcaps; +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.calcArgbEndcap(true, false); +this.calcCosSin(this.dxB, this.dyB, this.dzB); +this.calcPoints(3, false); +this.interpolate(0, 1, this.xyzfRaster, this.xyztRaster); +this.interpolate(1, 2, this.xyzfRaster, this.xyztRaster); +var xyzf = this.xyzfRaster; +if (endcaps == 2) this.renderFlatEndcap(true, false, xyzf); +g.setZMargin(5); +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +var p = g.pixel; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.line3d.plotLineDeltaAOld(this.shadesA, this.shadesB, screen, fpz, this.xA + x, this.yA + y, this.zA - z, this.dxB, this.dyB, this.dzB, this.clipped); +if (drawBackside) { +this.line3d.plotLineDeltaOld(this.shadesA[fpzBack], this.shadesB[fpzBack], this.xA - x, this.yA - y, this.zA + z, this.dxB, this.dyB, this.dzB, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "renderBitsFloat", +function(colixA, colixB, screen, endcaps, diameter, ptA, ptB){ +var g = this.g3d; +if (this.ptA0 == null) { +this.ptA0 = new JU.P3(); +this.ptB0 = new JU.P3(); +}this.ptA0.setT(ptA); +var r = Clazz.doubleToInt(diameter / 2) + 1; +var ixA = Math.round(ptA.x); +var iyA = Math.round(ptA.y); +var izA = Math.round(ptA.z); +var ixB = Math.round(ptB.x); +var iyB = Math.round(ptB.y); +var izB = Math.round(ptB.z); +var codeMinA = g.clipCode3(ixA - r, iyA - r, izA - r); +var codeMaxA = g.clipCode3(ixA + r, iyA + r, izA + r); +var codeMinB = g.clipCode3(ixB - r, iyB - r, izB - r); +var codeMaxB = g.clipCode3(ixB + r, iyB + r, izB + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxBf = ptB.x - ptA.x; +this.dyBf = ptB.y - ptA.y; +this.dzBf = ptB.z - ptA.z; +if (diameter > 0) { +this.diameter = diameter; +this.xAf = ptA.x; +this.yAf = ptA.y; +this.zAf = ptA.z; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.xA = Clazz.floatToInt(this.xAf); +this.yA = Clazz.floatToInt(this.yAf); +this.zA = Clazz.floatToInt(this.zAf); +this.dxB = Clazz.floatToInt(this.dxBf); +this.dyB = Clazz.floatToInt(this.dyBf); +this.dzB = Clazz.floatToInt(this.dzBf); +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.endcaps = endcaps; +this.calcArgbEndcap(true, true); +var xyzf = this.xyzfRaster; +if (diameter > 0) this.generateBaseEllipsePrecisely(false); +if (endcaps == 2) this.renderFlatEndcap(true, true, xyzf); +this.line3d.setLineBits(this.dxBf, this.dyBf); +g.setZMargin(5); +var p = g.pixel; +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.ptA0.set(this.xA + x, this.yA + y, this.zA - z); +this.ptB0.setT(this.ptA0); +this.ptB0.x += this.dxB; +this.ptB0.y += this.dyB; +this.ptB0.z += this.dzB; +this.line3d.plotLineDeltaABitsFloat(this.shadesA, this.shadesB, fpz, this.ptA0, this.ptB0, screen, this.clipped); +if (drawBackside) { +this.ptA0.set(this.xA - x, this.yA - y, this.zA + z); +this.ptB0.setT(this.ptA0); +this.ptB0.x += this.dxB; +this.ptB0.y += this.dyB; +this.ptB0.z += this.dzB; +this.line3d.plotLineDeltaABitsFloat(this.shadesA, this.shadesB, fpzBack, this.ptA0, this.ptB0, screen, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +this.xAf += this.dxBf; +this.yAf += this.dyBf; +this.zAf += this.dzBf; +}, "~N,~N,~N,~N,~N,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "renderBits", +function(colixA, colixB, screen, endcaps, diameter, ptA, ptB){ +var g = this.g3d; +if (diameter == 0 || diameter == 1) { +this.line3d.plotLineBits(g.getColorArgbOrGray(colixA), g.getColorArgbOrGray(colixB), ptA, ptB, 0, 0, false); +return; +}this.ptA0i.setT(ptA); +var r = Clazz.doubleToInt(diameter / 2) + 1; +var ixA = ptA.x; +var iyA = ptA.y; +var izA = ptA.z; +var ixB = ptB.x; +var iyB = ptB.y; +var izB = ptB.z; +var codeMinA = g.clipCode3(ixA - r, iyA - r, izA - r); +var codeMaxA = g.clipCode3(ixA + r, iyA + r, izA + r); +var codeMinB = g.clipCode3(ixB - r, iyB - r, izB - r); +var codeMaxB = g.clipCode3(ixB + r, iyB + r, izB + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxBf = ptB.x - ptA.x; +this.dyBf = ptB.y - ptA.y; +this.dzBf = ptB.z - ptA.z; +if (diameter > 0) { +this.diameter = diameter; +this.xAf = ptA.x; +this.yAf = ptA.y; +this.zAf = ptA.z; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.xA = Clazz.floatToInt(this.xAf); +this.yA = Clazz.floatToInt(this.yAf); +this.zA = Clazz.floatToInt(this.zAf); +this.dxB = Clazz.floatToInt(this.dxBf); +this.dyB = Clazz.floatToInt(this.dyBf); +this.dzB = Clazz.floatToInt(this.dzBf); +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.endcaps = endcaps; +this.calcArgbEndcap(true, true); +var xyzf = this.xyzfRaster; +if (diameter > 0) this.generateBaseEllipsePrecisely(false); +if (endcaps == 2) this.renderFlatEndcap(true, true, xyzf); +this.line3d.setLineBits(this.dxBf, this.dyBf); +g.setZMargin(5); +var p = g.pixel; +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.ptA0i.set(this.xA + x, this.yA + y, this.zA - z); +this.ptB0i.setT(this.ptA0i); +this.ptB0i.x += this.dxB; +this.ptB0i.y += this.dyB; +this.ptB0i.z += this.dzB; +this.line3d.plotLineDeltaABitsInt(this.shadesA, this.shadesB, fpz, this.ptA0i, this.ptB0i, screen, this.clipped); +if (drawBackside) { +this.ptA0i.set(this.xA - x, this.yA - y, this.zA + z); +this.ptB0i.setT(this.ptA0i); +this.ptB0i.x += this.dxB; +this.ptB0i.y += this.dyB; +this.ptB0i.z += this.dzB; +this.line3d.plotLineDeltaABitsInt(this.shadesA, this.shadesB, fpzBack, this.ptA0i, this.ptB0i, screen, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +this.xAf += this.dxBf; +this.yAf += this.dyBf; +this.zAf += this.dzBf; +}, "~N,~N,~N,~N,~N,JU.P3i,JU.P3i"); +Clazz.defineMethod(c$, "renderConeOld", +function(colix, endcap, diameter, xa, ya, za, xtip, ytip, ztip, doFill, isBarb){ +this.dxBf = (xtip) - (this.xAf = xa); +this.dyBf = (ytip) - (this.yAf = ya); +this.dzBf = (ztip) - (this.zAf = za); +this.xA = Clazz.doubleToInt(Math.floor(this.xAf)); +this.yA = Clazz.doubleToInt(Math.floor(this.yAf)); +this.zA = Clazz.doubleToInt(Math.floor(this.zAf)); +this.dxB = Clazz.doubleToInt(Math.floor(this.dxBf)); +this.dyB = Clazz.doubleToInt(Math.floor(this.dyBf)); +this.dzB = Clazz.doubleToInt(Math.floor(this.dzBf)); +this.xTip = xtip; +this.yTip = ytip; +this.zTip = ztip; +this.shadesA = this.g3d.getShades(this.colixA = colix); +var shadeIndexTip = this.shader.getShadeIndex(this.dxB, this.dyB, -this.dzB); +var g3d = this.g3d; +var p = g3d.pixel; +var width = g3d.width; +var zbuf = g3d.zbuf; +g3d.plotPixelClippedArgb(this.shadesA[shadeIndexTip], Clazz.floatToInt(xtip), Clazz.floatToInt(ytip), Clazz.floatToInt(ztip), width, zbuf, p); +this.diameter = diameter; +if (diameter <= 1) { +if (diameter == 1) this.line3d.plotLineDeltaOld(this.colixA, this.colixA, this.xA, this.yA, this.zA, this.dxB, this.dyB, this.dzB, this.clipped); +return; +}this.endcaps = endcap; +this.calcArgbEndcap(false, true); +this.generateBaseEllipsePrecisely(isBarb); +if (!isBarb && this.endcaps == 2) this.renderFlatEndcap(false, true, this.xyzfRaster); +g3d.setZMargin(5); +var xr = this.xyztRaster[0]; +var yr = this.xyztRaster[1]; +var zr = this.xyztRaster[2]; +var fr = this.xyzfRaster[3]; +var sA = this.shadesA; +var doOpen = (this.endCapHidden && this.argbEndcap != 0); +for (var i = this.rasterCount; --i >= 0; ) { +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +var fpz = fr[i] >> (8); +var xUp = this.xAf + x; +var yUp = this.yAf + y; +var zUp = this.zAf - z; +var xDn = this.xAf - x; +var yDn = this.yAf - y; +var zDn = this.zAf + z; +var argb = sA[0]; +if (doOpen) { +g3d.plotPixelClippedArgb(this.argbEndcap, Clazz.floatToInt(xUp), Clazz.floatToInt(yUp), Clazz.floatToInt(zUp), width, zbuf, p); +g3d.plotPixelClippedArgb(this.argbEndcap, Clazz.floatToInt(xDn), Clazz.floatToInt(yDn), Clazz.floatToInt(zDn), width, zbuf, p); +}if (argb != 0) { +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz.floatToInt(xUp), Clazz.floatToInt(yUp), Clazz.floatToInt(zUp), Clazz.doubleToInt(Math.ceil(this.xTip - xUp)), Clazz.doubleToInt(Math.ceil(this.yTip - yUp)), Clazz.doubleToInt(Math.ceil(this.zTip - zUp)), true); +if (doFill) { +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz.floatToInt(xUp), Clazz.floatToInt(yUp) + 1, Clazz.floatToInt(zUp), Clazz.doubleToInt(Math.ceil(this.xTip - xUp)), Clazz.doubleToInt(Math.ceil(this.yTip - yUp)) + 1, Clazz.doubleToInt(Math.ceil(this.zTip - zUp)), true); +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz.floatToInt(xUp) + 1, Clazz.floatToInt(yUp), Clazz.floatToInt(zUp), Clazz.doubleToInt(Math.ceil(this.xTip - xUp)) + 1, Clazz.doubleToInt(Math.ceil(this.yTip - yUp)), Clazz.doubleToInt(Math.ceil(this.zTip - zUp)), true); +}if (!isBarb && !(this.endcaps != 2 && this.dzB > 0)) { +this.line3d.plotLineDeltaOld(argb, argb, Clazz.floatToInt(xDn), Clazz.floatToInt(yDn), Clazz.floatToInt(zDn), Clazz.doubleToInt(Math.ceil(this.xTip - xDn)), Clazz.doubleToInt(Math.ceil(this.yTip - yDn)), Clazz.doubleToInt(Math.ceil(this.zTip - zDn)), true); +}}} +g3d.setZMargin(0); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~B,~B"); +Clazz.defineMethod(c$, "generateBaseEllipsePrecisely", +function(isBarb){ +this.calcCosSin(this.dxBf, this.dyBf, this.dzBf); +this.calcPoints(isBarb ? 2 : 3, true); +this.interpolatePrecisely(0, 1, this.xyzfRaster, this.xyztRaster); +if (!isBarb) this.interpolatePrecisely(1, 2, this.xyzfRaster, this.xyztRaster); +for (var i = 3; --i >= 0; ) for (var j = this.rasterCount; --j >= 0; ) this.xyzfRaster[i][j] = Clazz.doubleToInt(Math.floor(this.xyztRaster[i][j])); + + +}, "~B"); +Clazz.defineMethod(c$, "calcPoints", +function(count, isPrecise){ +this.calcRotatedPoint(0, 0, isPrecise, this.xyzfRaster, this.xyztRaster); +this.calcRotatedPoint(0.5, 1, isPrecise, this.xyzfRaster, this.xyztRaster); +if ((this.rasterCount = count) == 3) this.calcRotatedPoint(1, 2, isPrecise, this.xyzfRaster, this.xyztRaster); +}, "~N,~B"); +Clazz.defineMethod(c$, "calcCosSin", +function(dx, dy, dz){ +var mag2d2 = dx * dx + dy * dy; +if (mag2d2 == 0) { +this.cosTheta = 1; +this.cosPhi = 1; +this.sinPhi = 0; +} else { +var mag2d = Math.sqrt(mag2d2); +var mag3d = Math.sqrt(mag2d2 + dz * dz); +this.cosTheta = dz / mag3d; +this.cosPhi = dx / mag2d; +this.sinPhi = dy / mag2d; +}}, "~N,~N,~N"); +Clazz.defineMethod(c$, "calcRotatedPoint", +function(t, i, isPrecision, xyzf, xyzt){ +xyzt[3][i] = t; +var tPI = t * 3.141592653589793; +var xT = Math.sin(tPI) * this.cosTheta; +var yT = Math.cos(tPI); +var xR = this.radius * (xT * this.cosPhi - yT * this.sinPhi); +var yR = this.radius * (xT * this.sinPhi + yT * this.cosPhi); +var z2 = this.radius2 - (xR * xR + yR * yR); +var zR = (z2 > 0 ? Math.sqrt(z2) : 0); +if (isPrecision) { +xyzt[0][i] = xR; +xyzt[1][i] = yR; +xyzt[2][i] = zR; +} else if (this.tEvenDiameter) { +xyzf[0][i] = Clazz.doubleToInt(xR - 0.5); +xyzf[1][i] = Clazz.doubleToInt(yR - 0.5); +xyzf[2][i] = Clazz.doubleToInt(zR + 0.5); +} else { +xyzf[0][i] = Clazz.doubleToInt(xR); +xyzf[1][i] = Clazz.doubleToInt(yR); +xyzf[2][i] = Clazz.doubleToInt(zR + 0.5); +}xyzf[3][i] = this.shader.getShadeFp8(xR, yR, zR); +}, "~N,~N,~B,~A,~A"); +Clazz.defineMethod(c$, "allocRaster", +function(isPrecision, xyzf, xyzt){ +if (this.rasterCount >= xyzf[0].length) while (this.rasterCount >= xyzf[0].length) { +for (var i = 4; --i >= 0; ) xyzf[i] = JU.AU.doubleLengthI(xyzf[i]); + +xyzt[3] = JU.AU.doubleLengthF(xyzt[3]); +} +if (isPrecision) while (this.rasterCount >= xyzt[0].length) { +for (var i = 3; --i >= 0; ) xyzt[i] = JU.AU.doubleLengthF(xyzt[i]); + +} +return this.rasterCount++; +}, "~B,~A,~A"); +Clazz.defineMethod(c$, "interpolate", +function(iLower, iUpper, xyzf, xyzt){ +var x = xyzf[0]; +var y = xyzf[1]; +var dx = x[iUpper] - x[iLower]; +if (dx < 0) dx = -dx; +var dy = y[iUpper] - y[iLower]; +if (dy < 0) dy = -dy; +if ((dx + dy) <= 1) return; +var iMid = this.allocRaster(false, xyzf, xyzt); +x = xyzf[0]; +y = xyzf[1]; +var f = xyzf[3]; +var tLower = xyzt[3][iLower]; +var tUpper = xyzt[3][iUpper]; +for (var j = 4; --j >= 0; ) { +var tMid = (tLower + tUpper) / 2; +this.calcRotatedPoint(tMid, iMid, false, xyzf, xyzt); +if ((x[iMid] == x[iLower]) && (y[iMid] == y[iLower])) { +f[iLower] = (f[iLower] + f[iMid]) >>> 1; +tLower = tMid; +} else if ((x[iMid] == x[iUpper]) && (y[iMid] == y[iUpper])) { +f[iUpper] = (f[iUpper] + f[iMid]) >>> 1; +tUpper = tMid; +} else { +this.interpolate(iLower, iMid, xyzf, xyzt); +this.interpolate(iMid, iUpper, xyzf, xyzt); +return; +}} +x[iMid] = x[iLower]; +y[iMid] = y[iUpper]; +}, "~N,~N,~A,~A"); +Clazz.defineMethod(c$, "interpolatePrecisely", +function(iLower, iUpper, xyzf, xyzt){ +var x = xyzt[0]; +var y = xyzt[1]; +var dx = Clazz.doubleToInt(Math.floor(x[iUpper])) - Clazz.doubleToInt(Math.floor(x[iLower])); +if (dx < 0) dx = -dx; +var dy = Clazz.doubleToInt(Math.floor(y[iUpper])) - Clazz.doubleToInt(Math.floor(y[iLower])); +if (dy < 0) dy = -dy; +if ((dx + dy) <= 1) return; +var t = xyzt[3]; +var tLower = t[iLower]; +var tUpper = t[iUpper]; +var iMid = this.allocRaster(true, xyzf, xyzt); +x = xyzt[0]; +y = xyzt[1]; +t = xyzt[3]; +var f = xyzf[3]; +for (var j = 4; --j >= 0; ) { +var tMid = (tLower + tUpper) / 2; +this.calcRotatedPoint(tMid, iMid, true, xyzf, xyzt); +if ((Clazz.doubleToInt(Math.floor(x[iMid])) == Clazz.doubleToInt(Math.floor(x[iLower]))) && (Clazz.doubleToInt(Math.floor(y[iMid])) == Clazz.doubleToInt(Math.floor(y[iLower])))) { +f[iLower] = (f[iLower] + f[iMid]) >>> 1; +tLower = tMid; +} else if ((Clazz.doubleToInt(Math.floor(x[iMid])) == Clazz.doubleToInt(Math.floor(x[iUpper]))) && (Clazz.doubleToInt(Math.floor(y[iMid])) == Clazz.doubleToInt(Math.floor(y[iUpper])))) { +f[iUpper] = (f[iUpper] + f[iMid]) >>> 1; +tUpper = tMid; +} else { +this.interpolatePrecisely(iLower, iMid, xyzf, xyzt); +this.interpolatePrecisely(iMid, iUpper, xyzf, xyzt); +return; +}} +x[iMid] = x[iLower]; +y[iMid] = y[iUpper]; +}, "~N,~N,~A,~A"); +Clazz.defineMethod(c$, "renderFlatEndcap", +function(isCylinder, isPrecise, xyzf){ +var xT; +var yT; +var zT; +if (isPrecise) { +if (this.dzBf == 0 || this.colixEndcap == 0 || !this.g3d.setC(this.colixEndcap)) return; +var xTf = this.xAf; +var yTf = this.yAf; +var zTf = this.zAf; +if (isCylinder && this.dzBf < 0) { +xTf += this.dxBf; +yTf += this.dyBf; +zTf += this.dzBf; +}xT = Clazz.floatToInt(xTf); +yT = Clazz.floatToInt(yTf); +zT = Clazz.floatToInt(zTf); +} else { +if (this.dzB == 0 || this.colixEndcap == 0 || !this.g3d.setC(this.colixEndcap)) return; +xT = this.xAend; +yT = this.yAend; +zT = this.zAend; +if (isCylinder && this.dzB < 0) { +xT += this.dxB; +yT += this.dyB; +zT += this.dzB; +}}var yMin = xyzf[1][0]; +var yMax = xyzf[1][0]; +var zXMin = 0; +var zXMax = 0; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +for (var i = this.rasterCount; --i > 0; ) { +var y = yr[i]; +if (y < yMin) yMin = y; + else if (y > yMax) yMax = y; + else { +y = -y; +if (y < yMin) yMin = y; + else if (y > yMax) yMax = y; +}} +for (var y = yMin; y <= yMax; ++y) { +var xMin = 2147483647; +var xMax = -2147483648; +for (var i = this.rasterCount; --i >= 0; ) { +if (yr[i] == y) { +var x = xr[i]; +if (x < xMin) { +xMin = x; +zXMin = zr[i]; +}if (x > xMax) { +xMax = x; +zXMax = zr[i]; +}}if (yr[i] == -y) { +var x = -xr[i]; +if (x < xMin) { +xMin = x; +zXMin = -zr[i]; +}if (x > xMax) { +xMax = x; +zXMax = -zr[i]; +}}} +var count = xMax - xMin + 1; +this.g3d.setColorNoisy(this.endcapShadeIndex); +this.g3d.plotPixelsClippedRaster(count, xT + xMin, yT + y, zT - zXMin - 1, zT - zXMax - 1, null, null); +} +}, "~B,~B,~A"); +Clazz.defineMethod(c$, "renderSphericalEndcaps", +function(){ +if (this.colixA != 0 && this.g3d.setC(this.colixA)) this.g3d.fillSphereXYZ(this.diameter, this.xA, this.yA, this.zA + 1); +if (this.colixB != 0 && this.g3d.setC(this.colixB)) this.g3d.fillSphereXYZ(this.diameter, this.xA + this.dxB, this.yA + this.dyB, this.zA + this.dzB + 1); +}); +Clazz.defineMethod(c$, "calcArgbEndcap", +function(tCylinder, isFloat){ +this.tEvenDiameter = ((this.diameter & 1) == 0); +this.radius = this.diameter / 2.0; +this.radius2 = this.radius * this.radius; +this.endCapHidden = false; +var dzf = (isFloat ? this.dzBf : this.dzB); +if (this.endcaps == 3 || dzf == 0) return; +this.xEndcap = this.xAend = this.xA; +this.yEndcap = this.yAend = this.yA; +this.zEndcap = this.zAend = this.zA; +var shadesEndcap; +var dxf = (isFloat ? this.dxBf : this.dxB); +var dyf = (isFloat ? this.dyBf : this.dyB); +if (dzf >= 0 || !tCylinder) { +this.endcapShadeIndex = this.shader.getShadeIndex(-dxf, -dyf, dzf); +if (this.colixA == 0) { +this.xAend += Clazz.doubleToInt(this.dxB / 2); +this.yAend += Clazz.doubleToInt(this.dyB / 2); +this.zAend += Clazz.doubleToInt(this.dzB / 2); +this.colixEndcap = this.colixB; +} else { +this.colixEndcap = this.colixA; +}} else { +this.endcapShadeIndex = this.shader.getShadeIndex(dxf, dyf, -dzf); +if (this.colixB == 0) { +this.colixEndcap = this.colixA; +this.xAend -= Clazz.doubleToInt(this.dxB / 2); +this.yAend -= Clazz.doubleToInt(this.dyB / 2); +this.zAend -= Clazz.doubleToInt(this.dzB / 2); +} else { +this.colixEndcap = this.colixB; +this.xEndcap += this.dxB; +this.yEndcap += this.dyB; +this.zEndcap += this.dzB; +}}shadesEndcap = (this.colixEndcap == this.colixA ? this.shadesA : this.shadesB); +if (this.endcapShadeIndex > 56) this.endcapShadeIndex = 56; +this.argbEndcap = shadesEndcap[this.endcapShadeIndex]; +this.endCapHidden = (this.endcaps == 1); +}, "~B,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/G3DRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/G3DRenderer.js new file mode 100755 index 000000000000..c8546bbe89d3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/G3DRenderer.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.g3d"); +Clazz.declareInterface(J.g3d, "G3DRenderer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/Graphics3D.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/Graphics3D.js new file mode 100755 index 000000000000..7cabe4ec7719 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/Graphics3D.js @@ -0,0 +1,1205 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["J.api.JmolRendererInterface", "JU.GData", "JU.P3i", "$.V3"], "J.g3d.Graphics3D", ["java.util.Arrays", "JU.AU", "J.api.Interface", "J.c.STER", "J.g3d.CylinderRenderer", "$.LineRenderer", "$.Pixelator", "$.PixelatorScreened", "$.PixelatorShaded", "$.PixelatorT", "$.Platform3D", "$.SphereRenderer", "$.TextRenderer", "$.TextString", "JU.C", "$.Normix"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.platform = null; +this.line3d = null; +this.sphere3d = null; +this.cylinder3d = null; +this.triangle3d = null; +this.circle3d = null; +this.hermite3d = null; +this.isFullSceneAntialiasingEnabled = false; +this.antialias2 = false; +this.strings = null; +this.stringCount = 0; +this.anaglyphChannelBytes = null; +this.twoPass = false; +this.$haveTranslucentObjects = false; +this.pbuf = null; +this.pbufT = null; +this.zbuf = null; +this.zbufT = null; +this.translucencyMask = 0; +this.renderLow = false; +this.shadesCurrent = null; +this.anaglyphLength = 0; +this.pixel = null; +this.pixel0 = null; +this.pixelT0 = null; +this.pixelScreened = null; +this.pixelShaded = null; +this.zMargin = 0; +this.aobuf = null; +this.currentShadeIndex = 0; +this.lastRawColor = 0; +this.translucencyLog = 0; +this.wasScreened = false; +this.saveAmbient = 0; +this.saveDiffuse = 0; +this.sA = null; +this.sB = null; +this.sC = null; +this.vectorAB = null; +this.vectorAC = null; +this.vectorNormal = null; +this.shadeIndexes = null; +this.shadeIndexes2Sided = null; +this.pass2Flag01 = 0; +Clazz.instantialize(this, arguments);}, J.g3d, "Graphics3D", JU.GData, J.api.JmolRendererInterface); +Clazz.prepareFields (c$, function(){ +this.sA = new JU.P3i(); +this.sB = new JU.P3i(); +this.sC = new JU.P3i(); +this.vectorAB = new JU.V3(); +this.vectorAC = new JU.V3(); +this.vectorNormal = new JU.V3(); +this.shadeIndexes = Clazz.newByteArray (JU.GData.normixCount, 0); +this.shadeIndexes2Sided = Clazz.newByteArray (JU.GData.normixCount, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.g3d.Graphics3D, []); +for (var i = JU.GData.normixCount; --i >= 0; ) this.transformedVectors[i] = new JU.V3(); + +}); +Clazz.overrideMethod(c$, "isWebGL", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.stringCount = 0; +this.strings = null; +J.g3d.TextRenderer.clearFontCache(); +}); +Clazz.overrideMethod(c$, "destroy", +function(){ +this.releaseBuffers(); +this.platform = null; +this.pixel = this.pixel0 = this.pixelShaded = null; +this.pixelT0 = null; +this.pixelScreened = null; +this.graphicsForMetrics = null; +}); +Clazz.defineMethod(c$, "setZMargin", +function(dz){ +this.zMargin = dz; +}, "~N"); +Clazz.overrideMethod(c$, "initialize", +function(vwr, apiPlatform){ +this.vwr = vwr; +this.apiPlatform = apiPlatform; +this.platform = new J.g3d.Platform3D(apiPlatform); +this.pixel = this.pixel0 = new J.g3d.Pixelator(this); +this.graphicsForMetrics = this.platform.getGraphicsForMetrics(); +this.line3d = new J.g3d.LineRenderer(this); +this.sphere3d = new J.g3d.SphereRenderer(this); +this.cylinder3d = new J.g3d.CylinderRenderer(this); +}, "JV.Viewer,J.api.GenericPlatform"); +Clazz.overrideMethod(c$, "addRenderer", +function(tok){ +switch (tok) { +case 1073741880: +if (this.circle3d == null) this.circle3d = this.getRenderer("Circle"); +break; +case 553648143: +if (this.hermite3d == null) this.hermite3d = this.getRenderer("Hermite"); +case 1073742182: +if (this.triangle3d == null) { +this.triangle3d = this.getRenderer("Triangle"); +(this.triangle3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +}break; +} +}, "~N"); +Clazz.defineMethod(c$, "getRenderer", +function(type){ +var r = (J.api.Interface.getOption("g3d." + type + "Renderer", this.vwr, "render")); +if (r == null) throw new NullPointerException("Interface"); +r.set(this, this); +return r; +}, "~S"); +Clazz.overrideMethod(c$, "setWindowParameters", +function(width, height, antialias){ +this.setWinParams(width, height, antialias); +if (this.currentlyRendering) this.endRendering(); +}, "~N,~N,~B"); +Clazz.overrideMethod(c$, "checkTranslucent", +function(isAlphaTranslucent){ +if (isAlphaTranslucent) this.$haveTranslucentObjects = true; +return (!this.twoPass || this.twoPass && (this.isPass2 == isAlphaTranslucent)); +}, "~B"); +Clazz.overrideMethod(c$, "beginRendering", +function(rotationMatrix, translucentMode, isImageWrite, renderLow){ +if (this.currentlyRendering) this.endRendering(); +this.renderLow = renderLow; +if (this.windowWidth != this.newWindowWidth || this.windowHeight != this.newWindowHeight || this.newAntialiasing != this.isFullSceneAntialiasingEnabled) { +this.windowWidth = this.newWindowWidth; +this.windowHeight = this.newWindowHeight; +this.isFullSceneAntialiasingEnabled = this.newAntialiasing; +this.releaseBuffers(); +}this.setRotationMatrix(rotationMatrix); +(this.line3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +if (this.triangle3d != null) (this.triangle3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +this.antialiasEnabled = this.antialiasThisFrame = this.newAntialiasing; +this.currentlyRendering = true; +if (this.strings != null) for (var i = Math.min(this.strings.length, this.stringCount); --i >= 0; ) this.strings[i] = null; + +this.stringCount = 0; +this.twoPass = true; +this.isPass2 = false; +this.pass2Flag01 = 0; +this.colixCurrent = 0; +this.$haveTranslucentObjects = this.wasScreened = false; +this.pixel = this.pixel0; +this.pixel.bgcolor = this.bgcolor; +this.contrastColix = JU.C.getBgContrast(this.bgcolor); +this.translucentCoverOnly = !translucentMode; +if (this.pbuf == null) { +this.platform.allocateBuffers(this.windowWidth, this.windowHeight, this.antialiasThisFrame, isImageWrite); +this.pbuf = this.platform.pBuffer; +this.zbuf = this.platform.zBuffer; +this.aobuf = null; +this.pixel0.setBuf(); +if (this.pixelT0 != null) this.pixelT0.setBuf(); +if (this.pixelShaded != null) this.pixelShaded.setBuf(); +}this.setWidthHeight(this.antialiasThisFrame); +if (this.pixelScreened != null) this.pixelScreened.width = this.width; +this.platform.clearBuffer(); +if (this.backgroundImage != null) this.plotImage(-2147483648, 0, -2147483648, this.backgroundImage, null, 0, 0, 0); +this.textY = 0; +}, "JU.M3,~B,~B,~B"); +Clazz.overrideMethod(c$, "setBackgroundTransparent", +function(TF){ +if (this.platform != null) this.platform.setBackgroundTransparent(TF); +}, "~B"); +Clazz.defineMethod(c$, "releaseBuffers", +function(){ +this.pbuf = null; +this.zbuf = null; +this.pbufT = null; +this.zbufT = null; +this.aobuf = null; +this.platform.releaseBuffers(); +this.line3d.clearLineCache(); +}); +Clazz.overrideMethod(c$, "setPass2", +function(antialiasTranslucent){ +if (!this.$haveTranslucentObjects || !this.currentlyRendering) return false; +this.isPass2 = true; +this.pass2Flag01 = 1; +this.colixCurrent = 0; +if (this.pbufT == null || this.antialias2 != antialiasTranslucent) { +this.platform.allocateTBuffers(antialiasTranslucent); +this.pbufT = this.platform.pBufferT; +this.zbufT = this.platform.zBufferT; +}this.antialias2 = antialiasTranslucent; +if (this.antialiasThisFrame && !this.antialias2) this.downsampleFullSceneAntialiasing(true); +this.platform.clearTBuffer(); +if (this.pixelT0 == null) this.pixelT0 = new J.g3d.PixelatorT(this); +if (this.pixel.p0 == null) this.pixel = this.pixelT0; + else this.pixel.p0 = this.pixelT0; +return true; +}, "~B"); +Clazz.overrideMethod(c$, "endRendering", +function(){ +if (!this.currentlyRendering) return; +if (this.pbuf != null) { +if (this.isPass2 && this.pbufT != null) for (var offset = this.pbufT.length; --offset >= 0; ) this.pbuf[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pbuf[offset], this.pbufT[offset], this.bgcolor); + +if (this.pixel === this.pixelShaded && this.pixelShaded.zShadePower == 0) this.pixelShaded.showZBuffer(); +if (this.antialiasThisFrame) this.downsampleFullSceneAntialiasing(false); +}this.platform.setBackgroundColor(this.bgcolor); +this.platform.notifyEndOfRendering(); +this.currentlyRendering = this.isPass2 = false; +}); +c$.mergeBufferPixel = Clazz.defineMethod(c$, "mergeBufferPixel", +function(argbA, argbB, bgcolor){ +if (argbB == 0 || argbA == argbB) return argbA; +if (argbA == 0) argbA = bgcolor; +var rbA = (argbA & 0x00FF00FF); +var gA = (argbA & 0x0000FF00); +var rbB = (argbB & 0x00FF00FF); +var gB = (argbB & 0x0000FF00); +var logAlpha = (argbB >> 24) & 0xF; +switch (logAlpha) { +case 0: +rbA = rbB; +gA = gB; +break; +case 1: +rbA = (((rbB << 2) + (rbB << 1) + rbB + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 2) + +(gB << 1) + gB + gA) >> 3) & 0x0000FF00; +break; +case 2: +rbA = (((rbB << 1) + rbB + rbA) >> 2) & 0x00FF00FF; +gA = (((gB << 1) + gB + gA) >> 2) & 0x0000FF00; +break; +case 3: +rbA = (((rbB << 2) + rbB + (rbA << 1) + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 2) + gB + (gA << 1) + gA) >> 3) & 0x0000FF00; +break; +case 4: +rbA = ((rbA + rbB) >> 1) & 0x00FF00FF; +gA = ((gA + gB) >> 1) & 0x0000FF00; +break; +case 5: +rbA = (((rbB << 1) + rbB + (rbA << 2) + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 1) + gB + (gA << 2) + gA) >> 3) & 0x0000FF00; +break; +case 6: +rbA = (((rbA << 1) + rbA + rbB) >> 2) & 0x00FF00FF; +gA = (((gA << 1) + gA + gB) >> 2) & 0x0000FF00; +break; +case 7: +rbA = (((rbA << 2) + (rbA << 1) + rbA + rbB) >> 3) & 0x00FF00FF; +gA = (((gA << 2) + (gA << 1) + gA + gB) >> 3) & 0x0000FF00; +break; +} +return 0xFF000000 | rbA | gA; +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "getScreenImage", +function(isImageWrite){ +{ +var obj = this.platform.bufferedImage; if (isImageWrite) { +this.releaseBuffers(); } return obj; +}}, "~B"); +Clazz.overrideMethod(c$, "applyAnaglygh", +function(stereoMode, stereoColors){ +switch (stereoMode) { +case J.c.STER.REDCYAN: +for (var i = this.anaglyphLength; --i >= 0; ) { +var blue = this.anaglyphChannelBytes[i] & 0x000000FF; +var cyan = (blue << 8) | blue; +this.pbuf[i] = this.pbuf[i] & 0xFFFF0000 | cyan; +} +break; +case J.c.STER.CUSTOM: +var color1 = stereoColors[0]; +var color2 = stereoColors[1] & 0x00FFFFFF; +for (var i = this.anaglyphLength; --i >= 0; ) { +var a = this.anaglyphChannelBytes[i] & 0x000000FF; +a = (a | ((a | (a << 8)) << 8)) & color2; +this.pbuf[i] = (this.pbuf[i] & color1) | a; +} +break; +case J.c.STER.REDBLUE: +for (var i = this.anaglyphLength; --i >= 0; ) { +var blue = this.anaglyphChannelBytes[i] & 0x000000FF; +this.pbuf[i] = (this.pbuf[i] & 0xFFFF0000) | blue; +} +break; +case J.c.STER.REDGREEN: +for (var i = this.anaglyphLength; --i >= 0; ) { +var green = (this.anaglyphChannelBytes[i] & 0x000000FF) << 8; +this.pbuf[i] = (this.pbuf[i] & 0xFFFF0000) | green; +} +break; +case J.c.STER.DTI: +case J.c.STER.DOUBLE: +case J.c.STER.NONE: +break; +} +}, "J.c.STER,~A"); +Clazz.overrideMethod(c$, "snapshotAnaglyphChannelBytes", +function(){ +if (this.currentlyRendering) throw new NullPointerException(); +this.anaglyphLength = this.windowWidth * this.windowHeight; +if (this.anaglyphChannelBytes == null || this.anaglyphChannelBytes.length != this.anaglyphLength) this.anaglyphChannelBytes = Clazz.newByteArray (this.anaglyphLength, 0); +for (var i = this.anaglyphLength; --i >= 0; ) this.anaglyphChannelBytes[i] = this.pbuf[i]; + +}); +Clazz.overrideMethod(c$, "releaseScreenImage", +function(){ +this.platform.clearScreenBufferThreaded(); +}); +Clazz.overrideMethod(c$, "haveTranslucentObjects", +function(){ +return this.$haveTranslucentObjects; +}); +Clazz.overrideMethod(c$, "setSlabAndZShade", +function(slabValue, depthValue, zSlab, zDepth, zShadePower){ +this.setSlab(slabValue); +this.setDepth(depthValue); +if (zSlab < zDepth) { +if (this.pixelShaded == null) this.pixelShaded = new J.g3d.PixelatorShaded(this); +this.pixel = this.pixelShaded.set(zSlab, zDepth, zShadePower); +} else { +this.pixel = this.pixel0; +}}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "downsampleFullSceneAntialiasing", +function(downsampleZBuffer){ +var bgcheck = this.bgcolor; +if (downsampleZBuffer) bgcheck += ((bgcheck & 0xFF) == 0xFF ? -1 : 1); +J.g3d.Graphics3D.downsample2d(this.pbuf, this.windowWidth, this.windowHeight, bgcheck); +if (downsampleZBuffer) { +J.g3d.Graphics3D.downsample2dZ(this.pbuf, this.zbuf, this.windowWidth, this.windowHeight, bgcheck); +this.antialiasThisFrame = false; +this.setWidthHeight(false); +}}, "~B"); +c$.downsample2d = Clazz.defineMethod(c$, "downsample2d", +function(pbuf, width, height, bgcheck){ +var width4 = width << 1; +if (bgcheck != 0) { +bgcheck &= 0xFFFFFF; +for (var i = pbuf.length; --i >= 0; ) if (pbuf[i] == 0) pbuf[i] = bgcheck; + +}var bg0 = ((bgcheck >> 2) & 0x3F3F3F3F) << 2; +bg0 += (bg0 & 0xC0C0C0C0) >> 6; +var offset1 = 0; +var offset4 = 0; +for (var i = height; --i >= 0; offset4 += width4) for (var j = width; --j >= 0; ++offset1) { +var argb = ((pbuf[offset4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4++ + width4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4++ + width4] >> 2) & 0x3F3F3F3F); +argb += (argb & 0xC0C0C0C0) >> 6; +if (argb == bg0) argb = bgcheck; +{ +pbuf[offset1] = argb & 0x00FFFFFF | 0xFF000000; +}} + +}, "~A,~N,~N,~N"); +c$.downsample2dZ = Clazz.defineMethod(c$, "downsample2dZ", +function(pbuf, zbuf, width, height, bgcheck){ +var width4 = width << 1; +var offset1 = 0; +var offset4 = 0; +for (var i = height; --i >= 0; offset4 += width4) for (var j = width; --j >= 0; ++offset1, ++offset4) { +var z = Math.min(zbuf[offset4], zbuf[offset4 + width4]); +z = Math.min(z, zbuf[++offset4]); +z = Math.min(z, zbuf[offset4 + width4]); +if (z != 2147483647) z >>= 1; +zbuf[offset1] = (pbuf[offset1] == bgcheck ? 2147483647 : z); +} + +}, "~A,~A,~N,~N,~N"); +Clazz.defineMethod(c$, "hasContent", +function(){ +return this.platform.hasContent(); +}); +Clazz.overrideMethod(c$, "setC", +function(colix){ +var isLast = JU.C.isColixLastAvailable(colix); +if (!isLast && colix == this.colixCurrent && this.currentShadeIndex == -1) return true; +var mask = colix & 30720; +if (mask == 16384) return false; +if (this.renderLow) mask = 0; +var isTranslucent = (mask != 0); +var isScreened = (isTranslucent && mask == 30720); +this.setScreened(isScreened); +if (!this.checkTranslucent(isTranslucent && !isScreened)) return false; +if (this.isPass2) { +this.translucencyMask = (mask << 13) | 0xFFFFFF; +this.translucencyLog = mask >> 11; +} else { +this.translucencyLog = 0; +}this.colixCurrent = colix; +if (isLast) { +if (this.argbCurrent != this.lastRawColor) { +if (this.argbCurrent == 0) this.argbCurrent = 0xFFFFFFFF; +this.lastRawColor = this.argbCurrent; +this.shader.setLastColix(this.argbCurrent, this.inGreyscaleMode); +}}this.shadesCurrent = this.getShades(colix); +this.currentShadeIndex = -1; +this.setColor(this.getColorArgbOrGray(colix)); +return true; +}, "~N"); +Clazz.defineMethod(c$, "setScreened", +function(isScreened){ +if (this.wasScreened != isScreened) { +this.wasScreened = isScreened; +if (isScreened) { +if (this.pixelScreened == null) this.pixelScreened = new J.g3d.PixelatorScreened(this, this.pixel0); +if (this.pixel.p0 == null) this.pixel = this.pixelScreened; + else this.pixel.p0 = this.pixelScreened; +} else if (this.pixel.p0 == null || this.pixel === this.pixelScreened) { +this.pixel = (this.isPass2 ? this.pixelT0 : this.pixel0); +} else { +this.pixel.p0 = (this.isPass2 ? this.pixelT0 : this.pixel0); +}}return this.pixel; +}, "~B"); +Clazz.overrideMethod(c$, "drawFilledCircle", +function(colixRing, colixFill, diameter, x, y, z){ +if (this.isClippedZ(z)) return; +var r = Clazz.doubleToInt((diameter + 1) / 2); +var isClipped = x < r || x + r >= this.width || y < r || y + r >= this.height; +if (isClipped && this.isClippedXY(diameter, x, y)) return; +if (colixRing != 0 && this.setC(colixRing)) { +if (isClipped) { +if (!this.isClippedXY(diameter, x, y)) (this.circle3d).plotCircleCenteredClipped(x, y, z, diameter); +} else { +(this.circle3d).plotCircleCenteredUnclipped(x, y, z, diameter); +}}if (colixFill != 0 && this.setC(colixFill)) { +if (isClipped) (this.circle3d).plotFilledCircleCenteredClipped(x, y, z, diameter); + else (this.circle3d).plotFilledCircleCenteredUnclipped(x, y, z, diameter); +}}, "~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "volumeRender4", +function(diameter, x, y, z){ +if (diameter == 1) { +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +}if (this.isClippedZ(z)) return; +var r = Clazz.doubleToInt((diameter + 1) / 2); +var isClipped = x < r || x + r >= this.width || y < r || y + r >= this.height; +if (isClipped && this.isClippedXY(diameter, x, y)) return; +if (isClipped) (this.circle3d).plotFilledCircleCenteredClipped(x, y, z, diameter); + else (this.circle3d).plotFilledCircleCenteredUnclipped(x, y, z, diameter); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillSphereXYZ", +function(diameter, x, y, z){ +switch (diameter) { +case 1: +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +case 0: +return; +} +if (diameter <= (this.antialiasThisFrame ? 2000 : 1000)) this.sphere3d.render(this.shadesCurrent, diameter, x, y, z, null, null, null, -1, null); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "volumeRender", +function(TF){ +if (TF) { +this.saveAmbient = this.getAmbientPercent(); +this.saveDiffuse = this.getDiffusePercent(); +this.setAmbientPercent(100); +this.setDiffusePercent(0); +this.addRenderer(1073741880); +} else { +this.setAmbientPercent(this.saveAmbient); +this.setDiffusePercent(this.saveDiffuse); +}}, "~B"); +Clazz.overrideMethod(c$, "fillSphereI", +function(diameter, center){ +this.fillSphereXYZ(diameter, center.x, center.y, center.z); +}, "~N,JU.P3i"); +Clazz.overrideMethod(c$, "fillSphereBits", +function(diameter, center){ +this.fillSphereXYZ(diameter, Math.round(center.x), Math.round(center.y), Math.round(center.z)); +}, "~N,JU.P3"); +Clazz.overrideMethod(c$, "fillEllipsoid", +function(center, points, x, y, z, diameter, mToEllipsoidal, coef, mDeriv, selectedOctant, octantPoints){ +switch (diameter) { +case 1: +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +case 0: +return; +} +if (diameter <= (this.antialiasThisFrame ? 2000 : 1000)) this.sphere3d.render(this.shadesCurrent, diameter, x, y, z, mToEllipsoidal, coef, mDeriv, selectedOctant, octantPoints); +}, "JU.P3,~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A"); +Clazz.overrideMethod(c$, "drawRect", +function(x, y, z, zSlab, rWidth, rHeight){ +if (zSlab != 0 && this.isClippedZ(zSlab)) return; +var w = rWidth - 1; +var h = rHeight - 1; +var xRight = x + w; +var yBottom = y + h; +if (y >= 0 && y < this.height) this.drawHLine(x, y, z, w); +if (yBottom >= 0 && yBottom < this.height) this.drawHLine(x, yBottom, z, w); +if (x >= 0 && x < this.width) this.drawVLine(x, y, z, h); +if (xRight >= 0 && xRight < this.width) this.drawVLine(xRight, y, z, h); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawHLine", +function(x, y, z, w){ +if (w < 0) { +x += w; +w = -w; +}if (x < 0) { +w += x; +x = 0; +}if (x + w >= this.width) w = this.width - 1 - x; +var p = this.pixel; +var c = this.argbCurrent; +var offset = x + this.width * y; +for (var i = 0; i <= w; i++) { +if (z < this.zbuf[offset]) p.addPixel(offset, z, c); +offset++; +} +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawVLine", +function(x, y, z, h){ +if (h < 0) { +y += h; +h = -h; +}if (y < 0) { +h += y; +y = 0; +}if (y + h >= this.height) { +h = this.height - 1 - y; +}var offset = x + this.width * y; +var p = this.pixel; +var c = this.argbCurrent; +for (var i = 0; i <= h; i++) { +if (z < this.zbuf[offset]) p.addPixel(offset, z, c); +offset += this.width; +} +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillTextRect", +function(x, y, z, zSlab, widthFill, heightFill){ +if (this.isClippedZ(zSlab)) return; +var w = this.width; +if (x < 0) { +widthFill += x; +if (widthFill <= 0) return; +x = 0; +}if (x + widthFill > w) { +widthFill = w - x; +if (widthFill <= 0) return; +}if (y < 0) { +heightFill += y; +if (heightFill <= 0) return; +y = 0; +}if (y + heightFill > this.height) heightFill = this.height - y; +var c = this.argbCurrent; +if (this.isAntialiased()) c = J.g3d.Graphics3D.fixTextImageRGB(c); +var zb = this.zbuf; +var p = this.pixel; +while (--heightFill >= 0) this.plotPixelsUnclippedCount(c, widthFill, x, y++, z, w, zb, p); + +}, "~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawString", +function(str, font3d, xBaseline, yBaseline, z, zSlab, bgColix){ +this.currentShadeIndex = 0; +if (str == null) return; +if (this.isClippedZ(zSlab)) return; +this.drawStringNoSlab(str, font3d, xBaseline, yBaseline, z, bgColix); +}, "~S,JU.Font,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawStringNoSlab", +function(str, font3d, xBaseline, yBaseline, z, bgColix){ +if (str == null) return; +if (this.strings == null) this.strings = new Array(10); +if (this.stringCount == this.strings.length) this.strings = JU.AU.doubleLength(this.strings); +var t = new J.g3d.TextString(); +t.setText(str, font3d == null ? this.currentFont : (this.currentFont = font3d), this.argbCurrent, JU.C.isColixTranslucent(bgColix) ? (this.getColorArgbOrGray(bgColix) & 0xFFFFFF) | ((bgColix & 30720) << 13) : 0, xBaseline, yBaseline, z); +this.strings[this.stringCount++] = t; +}, "~S,JU.Font,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "renderAllStrings", +function(jmolRenderer){ +if (this.strings == null) return; +if (this.stringCount >= 2) { +if (J.g3d.Graphics3D.sort == null) J.g3d.Graphics3D.sort = new J.g3d.TextString(); +java.util.Arrays.sort(this.strings, J.g3d.Graphics3D.sort); +}for (var i = 0; i < this.stringCount; i++) { +var ts = this.strings[i]; +this.plotText(ts.x, ts.y, ts.z, ts.argb, ts.bgargb, ts.text, ts.font, jmolRenderer); +} +this.strings = null; +this.stringCount = 0; +}, "~O"); +Clazz.overrideMethod(c$, "plotText", +function(x, y, z, argb, bgargb, text, font3d, jmolRenderer){ +J.g3d.TextRenderer.plot(x, y, z, argb, bgargb, text, font3d, this, jmolRenderer, this.antialiasThisFrame); +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.api.JmolRendererInterface"); +Clazz.overrideMethod(c$, "drawImage", +function(objImage, x, y, z, zSlab, bgcolix, width, height){ +if (objImage != null && width > 0 && height > 0 && !this.isClippedZ(zSlab)) this.plotImage(x, y, z, objImage, null, bgcolix, width, height); +}, "~O,~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "plotImage", +function(x, y, z, image, jmolRenderer, bgcolix, imageWidth, imageHeight){ +this.setC(bgcolix); +if (!this.isPass2) this.translucencyMask = -1; +if (bgcolix == 0) this.argbCurrent = 0; +var isBackground = (x == -2147483648); +var bg = (isBackground ? this.bgcolor : this.argbCurrent); +if (isBackground) { +x = 0; +z = 2147483646; +imageWidth = this.width; +imageHeight = this.height; +}if (x + imageWidth <= 0 || x >= this.width || y + imageHeight <= 0 || y >= this.height) return; +var g; +{ +g = null; +}var buffer = this.apiPlatform.drawImageToBuffer(g, this.platform.offscreenImage, image, imageWidth, imageHeight, isBackground ? bg : 0); +if (buffer == null) return; +var zb = this.zbuf; +var w = this.width; +var p = this.pixel; +var h = this.height; +var t = this.translucencyLog; +if (jmolRenderer == null && (x >= 0 && x + imageWidth <= w && y >= 0 && y + imageHeight <= h)) { +for (var i = 0, offset = 0, pbufOffset = y * w + x; i < imageHeight; i++, pbufOffset += (w - imageWidth)) { +for (var j = 0; j < imageWidth; j++, offset++, pbufOffset++) { +if (z < zb[pbufOffset]) { +var b = buffer[offset]; +if ((b & 0xFF000000) == (-16777216)) p.addPixel(pbufOffset, z, b); +}} +} +} else { +if (jmolRenderer == null) jmolRenderer = this; +for (var i = 0, offset = 0; i < imageHeight; i++) for (var j = 0; j < imageWidth; j++) { +var b = buffer[offset++]; +if ((b & 0xFF000000) == (-16777216)) jmolRenderer.plotImagePixel(b, x + j, y + i, z, 8, bg, w, h, zb, p, t); +} + +}}, "~N,~N,~N,~O,J.api.JmolRendererInterface,~N,~N,~N"); +Clazz.overrideMethod(c$, "setFont", +function(font3d){ +this.currentFont = font3d; +}, "JU.Font"); +Clazz.overrideMethod(c$, "drawPixel", +function(x, y, z){ +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "drawPoints", +function(count, coordinates, scale){ +if (scale > 1) { +var s2 = scale * scale * 0.8; +for (var i = -scale; i < scale; i++) { +for (var j = -scale; j < scale; j++) { +if (i * i + j * j > s2) continue; +this.plotPoints(count, coordinates, i, j); +this.plotPoints(count, coordinates, i, j); +} +} +} else { +this.plotPoints(count, coordinates, 0, 0); +}}, "~N,~A,~N"); +Clazz.overrideMethod(c$, "drawDashedLineBits", +function(run, rise, pointA, pointB){ +if (this.isAntialiased()) { +run += run; +rise += rise; +}this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.drawLineABBits(run, rise, true); +}, "~N,~N,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "drawLineABBits", +function(run, rise, andClip){ +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +if (Math.abs(this.sA.x - this.sB.x) < Math.abs(this.sA.y - this.sB.y)) { +this.sA.x += 1; +this.sB.x += 1; +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +} else { +this.sA.y += 1; +this.sB.y += 1; +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +}}, "~N,~N,~B"); +Clazz.defineMethod(c$, "setScreeni", +function(pt, p){ +p.x = Math.round(pt.x); +p.y = Math.round(pt.y); +p.z = Math.round(pt.z); +}, "JU.P3,JU.P3i"); +Clazz.overrideMethod(c$, "drawLineXYZ", +function(x1, y1, z1, x2, y2, z2){ +this.line3d.plotLineOld(this.argbCurrent, this.argbCurrent, x1, y1, z1, x2, y2, z2); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawLine", +function(colixA, colixB, x1, y1, z1, x2, y2, z2){ +if (!this.setC(colixA)) colixA = 0; +var argbA = this.argbCurrent; +if (!this.setC(colixB)) colixB = 0; +if (colixA != 0 || colixB != 0) this.line3d.plotLineOld(argbA, this.argbCurrent, x1, y1, z1, x2, y2, z2); +}, "~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawLineBits", +function(colixA, colixB, pointA, pointB){ +if (!this.setC(colixA)) colixA = 0; +var argbA = this.argbCurrent; +if (!this.setC(colixB)) colixB = 0; +if (colixA != 0 || colixB != 0) { +this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.line3d.plotLineBits(argbA, this.argbCurrent, this.sA, this.sB, 0, 0, false); +}}, "~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "drawLinePixels", +function(a, b, z, zslab){ +this.sA.setT(a); +this.sB.setT(b); +this.sA.z = this.sB.z = z; +var slab0 = this.slab; +if (zslab == -2147483648) this.slab = 0; +this.drawLineABBits(0, 0, false); +this.slab = slab0; +}, "JU.P3i,JU.P3i,~N,~N"); +Clazz.overrideMethod(c$, "drawLineAB", +function(pointA, pointB){ +this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, 0, 0, false); +}, "JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillCylinderXYZ", +function(colixA, colixB, endcaps, diameter, xA, yA, zA, xB, yB, zB){ +if (diameter > this.ht3) return; +var screen = 0; +this.currentShadeIndex = 0; +if (!this.setC(colixB)) colixB = 0; +if (this.wasScreened) screen = 2; +if (!this.setC(colixA)) colixA = 0; +if (this.wasScreened) screen += 1; +if (colixA == 0 && colixB == 0) return; +this.cylinder3d.renderOld(colixA, colixB, screen, endcaps, diameter, xA, yA, zA, xB, yB, zB); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillCylinderScreen3I", +function(endcaps, diameter, screenA, screenB, pt0f, pt1f, radius){ +if (diameter <= this.ht3) this.cylinder3d.renderOld(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, Clazz.floatToInt(screenA.x), Clazz.floatToInt(screenA.y), Clazz.floatToInt(screenA.z), Clazz.floatToInt(screenB.x), Clazz.floatToInt(screenB.y), Clazz.floatToInt(screenB.z)); +}, "~N,~N,JU.P3,JU.P3,JU.P3,JU.P3,~N"); +Clazz.overrideMethod(c$, "fillCylinder", +function(endcaps, diameter, screenA, screenB){ +if (diameter <= this.ht3) this.cylinder3d.renderOld(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z); +}, "~N,~N,JU.P3i,JU.P3i"); +Clazz.overrideMethod(c$, "fillCylinderBits", +function(endcaps, diameter, screenA, screenB){ +if (diameter <= this.ht3 && screenA.z != 1 && screenB.z != 1) { +if (diameter == 0 || diameter == 1) { +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.line3d.plotLineBits(this.getColorArgbOrGray(this.colixCurrent), this.getColorArgbOrGray(this.colixCurrent), this.sA, this.sB, 0, 0, false); +return; +}this.cylinder3d.renderBitsFloat(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, screenA, screenB); +}}, "~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillCylinderBits2", +function(colixA, colixB, endcaps, diameter, screenA, screenB){ +if (diameter > this.ht3) return; +var screen = 0; +this.currentShadeIndex = 0; +if (!this.setC(colixB)) colixB = 0; +if (this.wasScreened) screen = 2; +if (!this.setC(colixA)) colixA = 0; +if (this.wasScreened) screen += 1; +if (colixA == 0 && colixB == 0) return; +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.cylinder3d.renderBits(colixA, colixB, screen, endcaps, diameter, this.sA, this.sB); +}, "~N,~N,~N,~N,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "fillConeScreen3f", +function(endcap, screenDiameter, screenBase, screenTip, isBarb){ +if (screenDiameter <= this.ht3) this.cylinder3d.renderConeOld(this.colixCurrent, endcap, screenDiameter, screenBase.x, screenBase.y, screenBase.z, screenTip.x, screenTip.y, screenTip.z, true, isBarb); +}, "~N,~N,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "drawHermite4", +function(tension, s0, s1, s2, s3){ +(this.hermite3d).renderHermiteRope(false, tension, 0, 0, 0, s0, s1, s2, s3); +}, "~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "drawHermite7", +function(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, colixBack){ +if (colixBack == 0) { +(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, 0); +return; +}(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, 1); +var colix = this.colixCurrent; +this.setC(colixBack); +(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, -1); +this.setC(colix); +}, "~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N"); +Clazz.overrideMethod(c$, "fillHermite", +function(tension, diameterBeg, diameterMid, diameterEnd, s0, s1, s2, s3){ +(this.hermite3d).renderHermiteRope(true, tension, diameterBeg, diameterMid, diameterEnd, s0, s1, s2, s3); +}, "~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "drawTriangle3C", +function(screenA, colixA, screenB, colixB, screenC, colixC, check){ +if ((check & 1) == 1) this.drawLine(colixA, colixB, screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z); +if ((check & 2) == 2) this.drawLine(colixB, colixC, screenB.x, screenB.y, screenB.z, screenC.x, screenC.y, screenC.z); +if ((check & 4) == 4) this.drawLine(colixA, colixC, screenA.x, screenA.y, screenA.z, screenC.x, screenC.y, screenC.z); +}, "JU.P3i,~N,JU.P3i,~N,JU.P3i,~N,~N"); +Clazz.overrideMethod(c$, "fillTriangleTwoSided", +function(normix, screenA, screenB, screenC){ +this.setColorNoisy(this.getShadeIndex(normix)); +this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "~N,JU.P3,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "fillTriangleP3f", +function(screenA, screenB, screenC, useGouraud){ +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.setScreeni(screenC, this.sC); +(this.triangle3d).fillTriangle(this.sA, this.sB, this.sC, useGouraud); +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "fillTriangle3f", +function(screenA, screenB, screenC, isSolid){ +var i = this.getShadeIndexP3(screenA, screenB, screenC, isSolid); +if (i < 0) return; +if (isSolid) this.setColorNoisy(i); + else this.setColor(this.shadesCurrent[i]); +this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "fillTriangle3i", +function(screenA, screenB, screenC, ptA, ptB, ptC, doShade){ +if (doShade) { +var v = this.vectorAB; +v.set(screenB.x - screenA.x, screenB.y - screenA.y, screenB.z - screenA.z); +var shadeIndex; +if (screenC == null) { +shadeIndex = this.shader.getShadeIndex(-v.x, -v.y, v.z); +} else { +this.vectorAC.set(screenC.x - screenA.x, screenC.y - screenA.y, screenC.z - screenA.z); +v.cross(v, this.vectorAC); +shadeIndex = v.z >= 0 ? this.shader.getShadeIndex(-v.x, -v.y, v.z) : this.shader.getShadeIndex(v.x, v.y, -v.z); +}if (shadeIndex > 56) shadeIndex = 56; +this.setColorNoisy(shadeIndex); +}this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "JU.P3,JU.P3,JU.P3,JU.T3,JU.T3,JU.T3,~B"); +Clazz.overrideMethod(c$, "fillTriangle3CN", +function(screenA, colixA, normixA, screenB, colixB, normixB, screenC, colixC, normixC){ +(this.triangle3d).fillTriangle(screenA, screenB, screenC, this.checkGouraud(colixA, colixB, colixC, normixA, normixB, normixC)); +}, "JU.P3i,~N,~N,JU.P3i,~N,~N,JU.P3i,~N,~N"); +Clazz.overrideMethod(c$, "fillTriangle3CNBits", +function(screenA, colixA, normixA, screenB, colixB, normixB, screenC, colixC, normixC, twoSided){ +this.fillTriangleP3f(screenA, screenB, screenC, this.checkGouraud(colixA, colixB, colixC, normixA, normixB, normixC)); +}, "JU.P3,~N,~N,JU.P3,~N,~N,JU.P3,~N,~N,~B"); +Clazz.defineMethod(c$, "checkGouraud", +function(colixA, colixB, colixC, normixA, normixB, normixC){ +if (!this.isPass2 && normixA == normixB && normixA == normixC && colixA == colixB && colixA == colixC) { +var shadeIndex = this.getShadeIndex(normixA); +if (colixA != this.colixCurrent || this.currentShadeIndex != shadeIndex) { +this.currentShadeIndex = -1; +this.setC(colixA); +this.setColorNoisy(shadeIndex); +}return false; +}this.setTriangleTranslucency(colixA, colixB, colixC); +(this.triangle3d).setGouraud(this.getShades(colixA)[this.getShadeIndex(normixA)], this.getShades(colixB)[this.getShadeIndex(normixB)], this.getShades(colixC)[this.getShadeIndex(normixC)]); +return true; +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getShadeIndex", +function(normix){ +return (normix == -10000 || normix == 9999 ? J.g3d.Graphics3D.nullShadeIndex : normix < 0 ? this.shadeIndexes2Sided[~normix] : this.shadeIndexes[normix]); +}, "~N"); +Clazz.defineMethod(c$, "setTriangleTranslucency", +function(colixA, colixB, colixC){ +if (this.isPass2) { +var maskA = colixA & 30720; +var maskB = colixB & 30720; +var maskC = colixC & 30720; +maskA &= -16385; +maskB &= -16385; +maskC &= -16385; +var mask = JU.GData.roundInt(Clazz.doubleToInt((maskA + maskB + maskC) / 3)) & 30720; +this.translucencyMask = (mask << 13) | 0xFFFFFF; +}}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "fillQuadrilateral", +function(screenA, screenB, screenC, screenD, isSolid){ +var i = this.getShadeIndexP3(screenA, screenB, screenC, isSolid); +if (i < 0) return; +this.setColorNoisy(i); +this.fillTriangleP3f(screenA, screenB, screenC, false); +this.fillTriangleP3f(screenA, screenC, screenD, false); +}, "JU.P3,JU.P3,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "drawSurface", +function(meshSurface, colix){ +}, "JU.MeshSurface,~N"); +Clazz.overrideMethod(c$, "plotPixelClippedP3i", +function(screen){ +this.plotPixelClippedArgb(this.argbCurrent, screen.x, screen.y, screen.z, this.width, this.zbuf, this.pixel); +}, "JU.P3i"); +Clazz.defineMethod(c$, "plotPixelClippedArgb", +function(argb, x, y, z, width, zbuf, p){ +if (this.isClipped3(x, y, z)) return; +var offset = y * width + x; +if (z < zbuf[offset]) p.addPixel(offset, z, argb); +}, "~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz.defineMethod(c$, "plotPixelUnclipped", +function(argb, x, y, z, width, zbuf, p){ +var offset = y * width + x; +if (z < zbuf[offset]) p.addPixel(offset, z, argb); +}, "~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz.defineMethod(c$, "plotImagePixel", +function(argb, x, y, z, shade, bgargb, width, height, zbuf, p, transpLog){ +if (x < 0 || x >= width || y < 0 || y >= height) return; +(p).addImagePixel(shade, transpLog, y * width + x, z, argb, bgargb); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~A,~O,~N"); +Clazz.defineMethod(c$, "plotPixelsClippedRaster", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right){ +var depth; +var slab; +if (count <= 0 || y < 0 || y >= this.height || x >= this.width || (zAtLeft < (slab = this.slab) && zPastRight < slab) || (zAtLeft > (depth = this.depth) && zPastRight > depth)) return; +var zb = this.zbuf; +var seed = (x << 16) + (y << 1) ^ 0x33333333; +var zScaled = (zAtLeft << 10) + (512); +var dz = zPastRight - zAtLeft; +var roundFactor = Clazz.doubleToInt(count / 2); +var zIncrementScaled = JU.GData.roundInt(Clazz.doubleToInt(((dz << 10) + (dz >= 0 ? roundFactor : -roundFactor)) / count)); +if (x < 0) { +x = -x; +zScaled += zIncrementScaled * x; +count -= x; +if (count <= 0) return; +x = 0; +}if (count + x > this.width) count = this.width - x; +var offsetPbuf = y * this.width + x; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var z = zScaled >> 10; +if (z >= slab && z <= depth && z < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, z, bits == 0 ? adn : (bits == 1 ? aup : ac)); +}++offsetPbuf; +zScaled += zIncrementScaled; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = Clazz.doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count); +var gScaled = rgb16Left.g; +var gIncrement = Clazz.doubleToInt((rgb16Right.g - gScaled) / count); +var bScaled = rgb16Left.b; +var bIncrement = Clazz.doubleToInt((rgb16Right.b - bScaled) / count); +while (--count >= 0) { +var z = zScaled >> 10; +if (z >= slab && z <= depth && z < zb[offsetPbuf]) p.addPixel(offsetPbuf, z, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +zScaled += zIncrementScaled; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16"); +Clazz.defineMethod(c$, "plotPixelsUnclippedRaster", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right){ +if (count <= 0) return; +var seed = ((x << 16) + (y << 1) ^ 0x33333333) & 0x7FFFFFFF; +var zScaled = (zAtLeft << 10) + (512); +var dz = zPastRight - zAtLeft; +var roundFactor = Clazz.doubleToInt(count / 2); +var zIncrementScaled = JU.GData.roundInt(Clazz.doubleToInt(((dz << 10) + (dz >= 0 ? roundFactor : -roundFactor)) / count)); +var offsetPbuf = y * this.width + x; +var zb = this.zbuf; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var z = zScaled >> 10; +if (z < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, z, bits == 0 ? adn : (bits == 1 ? aup : ac)); +}++offsetPbuf; +zScaled += zIncrementScaled; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = JU.GData.roundInt(Clazz.doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count)); +var gScaled = rgb16Left.g; +var gIncrement = JU.GData.roundInt(Clazz.doubleToInt((rgb16Right.g - gScaled) / count)); +var bScaled = rgb16Left.b; +var bIncrement = JU.GData.roundInt(Clazz.doubleToInt((rgb16Right.b - bScaled) / count)); +while (--count >= 0) { +var z = zScaled >> 10; +if (z < zb[offsetPbuf]) p.addPixel(offsetPbuf, z, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +zScaled += zIncrementScaled; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16"); +Clazz.defineMethod(c$, "plotPixelsClippedRasterBits", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right, a, b){ +var depth; +var slab; +if (count <= 0 || y < 0 || y >= this.height || x >= this.width || (zAtLeft < (slab = this.slab) && zPastRight < slab) || (zAtLeft > (depth = this.depth) && zPastRight > depth)) return; +var zb = this.zbuf; +var seed = (x << 16) + (y << 1) ^ 0x33333333; +if (x < 0) { +x = -x; +count -= x; +if (count <= 0) return; +x = 0; +}if (count + x > this.width) count = this.width - x; +var offsetPbuf = y * this.width + x; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent >= slab && zCurrent <= depth && zCurrent < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, zCurrent, bits < 2 ? adn : bits < 6 ? aup : ac); +}++offsetPbuf; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = Clazz.doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count); +var gScaled = rgb16Left.g; +var gIncrement = Clazz.doubleToInt((rgb16Right.g - gScaled) / count); +var bScaled = rgb16Left.b; +var bIncrement = Clazz.doubleToInt((rgb16Right.b - bScaled) / count); +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent >= slab && zCurrent <= depth && zCurrent < zb[offsetPbuf]) p.addPixel(offsetPbuf, zCurrent, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N"); +Clazz.defineMethod(c$, "plotPixelsUnclippedRasterBits", +function(count, x, y, rgb16Left, rgb16Right, a, b){ +if (count <= 0) return; +var seed = ((x << 16) + (y << 1) ^ 0x33333333) & 0x7FFFFFFF; +var offsetPbuf = y * this.width + x; +var zb = this.zbuf; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +var c = (bits == 0 ? adn : bits == 1 ? aup : ac); +p.addPixel(offsetPbuf, zCurrent, c); +}++offsetPbuf; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = JU.GData.roundInt(Clazz.doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count)); +var gScaled = rgb16Left.g; +var gIncrement = JU.GData.roundInt(Clazz.doubleToInt((rgb16Right.g - gScaled) / count)); +var bScaled = rgb16Left.b; +var bIncrement = JU.GData.roundInt(Clazz.doubleToInt((rgb16Right.b - bScaled) / count)); +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent < zb[offsetPbuf]) p.addPixel(offsetPbuf, zCurrent, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N"); +Clazz.defineMethod(c$, "plotPixelsUnclippedCount", +function(c, count, x, y, z, width, zbuf, p){ +var offsetPbuf = y * width + x; +while (--count >= 0) { +if (z < zbuf[offsetPbuf]) p.addPixel(offsetPbuf, z, c); +++offsetPbuf; +} +}, "~N,~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz.defineMethod(c$, "plotPoints", +function(count, coordinates, xOffset, yOffset){ +var p = this.pixel; +var c = this.argbCurrent; +var zb = this.zbuf; +var w = this.width; +var antialias = this.antialiasThisFrame; +for (var i = count * 3; i > 0; ) { +var z = coordinates[--i]; +var y = coordinates[--i] + yOffset; +var x = coordinates[--i] + xOffset; +if (this.isClipped3(x, y, z)) continue; +var offset = y * w + x++; +if (z < zb[offset]) p.addPixel(offset, z, c); +if (antialias) { +offset = y * w + x; +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +offset = (++y) * w + x; +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +offset = y * w + (--x); +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +}} +}, "~N,~A,~N,~N"); +Clazz.defineMethod(c$, "setColorNoisy", +function(shadeIndex){ +this.currentShadeIndex = shadeIndex; +this.argbCurrent = this.shadesCurrent[shadeIndex]; +this.argbNoisyUp = this.shadesCurrent[shadeIndex < 63 ? shadeIndex + 1 : 63]; +this.argbNoisyDn = this.shadesCurrent[shadeIndex > 0 ? shadeIndex - 1 : 0]; +}, "~N"); +Clazz.defineMethod(c$, "getShadeIndexP3", +function(screenA, screenB, screenC, isSolid){ +this.vectorAB.sub2(screenB, screenA); +this.vectorAC.sub2(screenC, screenA); +var v = this.vectorNormal; +v.cross(this.vectorAB, this.vectorAC); +var i = (v.z < 0 ? this.shader.getShadeIndex(v.x, v.y, -v.z) : isSolid ? -1 : this.shader.getShadeIndex(-v.x, -v.y, v.z)); +return i; +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "renderBackground", +function(jmolRenderer){ +if (this.backgroundImage != null) this.plotImage(-2147483648, 0, -2147483648, this.backgroundImage, jmolRenderer, 0, 0, 0); +}, "J.api.JmolRendererInterface"); +Clazz.overrideMethod(c$, "drawAtom", +function(atom, radius){ +this.fillSphereXYZ(atom.sD, atom.sX, atom.sY, atom.sZ); +}, "JM.Atom,~N"); +Clazz.overrideMethod(c$, "getExportType", +function(){ +return 0; +}); +Clazz.overrideMethod(c$, "getExportName", +function(){ +return null; +}); +Clazz.defineMethod(c$, "canDoTriangles", +function(){ +return true; +}); +Clazz.defineMethod(c$, "isCartesianExport", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "initializeExporter", +function(vwr, privateKey, g3d, params){ +return null; +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz.overrideMethod(c$, "finalizeOutput", +function(){ +return null; +}); +Clazz.overrideMethod(c$, "drawBond", +function(atomA, atomB, colixA, colixB, endcaps, mad, bondOrder){ +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawEllipse", +function(ptAtom, ptX, ptY, fillArc, wireframeOnly){ +return false; +}, "JU.P3,JU.P3,JU.P3,~B,~B"); +Clazz.defineMethod(c$, "getPrivateKey", +function(){ +return 0; +}); +Clazz.overrideMethod(c$, "clearFontCache", +function(){ +J.g3d.TextRenderer.clearFontCache(); +}); +Clazz.defineMethod(c$, "setRotationMatrix", +function(rotationMatrix){ +var vertexVectors = JU.Normix.getVertexVectors(); +for (var i = JU.GData.normixCount; --i >= 0; ) { +var tv = this.transformedVectors[i]; +rotationMatrix.rotate2(vertexVectors[i], tv); +this.shadeIndexes[i] = this.shader.getShadeB(tv.x, -tv.y, tv.z); +this.shadeIndexes2Sided[i] = (tv.z >= 0 ? this.shadeIndexes[i] : this.shader.getShadeB(-tv.x, tv.y, -tv.z)); +} +}, "JU.M3"); +Clazz.overrideMethod(c$, "renderCrossHairs", +function(minMax, screenWidth, screenHeight, navOffset, navDepth){ +var antialiased = this.isAntialiased(); +this.setC(navDepth < 0 ? 10 : navDepth > 100 ? 11 : 23); +var x = Math.max(Math.min(this.width, Math.round(navOffset.x)), 0); +var y = Math.max(Math.min(this.height, Math.round(navOffset.y)), 0); +var z = Math.round(navOffset.z) + 1; +var off = (antialiased ? 8 : 4); +var h = (antialiased ? 20 : 10); +var w = (antialiased ? 2 : 1); +this.drawRect(x - off, y, z, 0, h, w); +this.drawRect(x, y - off, z, 0, w, h); +this.drawRect(x - off, y - off, z, 0, h, h); +off = h; +h = h >> 1; +this.setC(minMax[1] < navOffset.x ? 21 : 11); +this.drawRect(x - off, y, z, 0, h, w); +this.setC(minMax[0] > navOffset.x ? 21 : 11); +this.drawRect(x + h, y, z, 0, h, w); +this.setC(minMax[3] < navOffset.y ? 21 : 11); +this.drawRect(x, y - off, z, 0, w, h); +this.setC(minMax[2] > navOffset.y ? 21 : 11); +this.drawRect(x, y + h, z, 0, w, h); +}, "~A,~N,~N,JU.P3,~N"); +Clazz.overrideMethod(c$, "initializeOutput", +function(vwr, privateKey, params){ +return false; +}, "JV.Viewer,~N,java.util.Map"); +c$.fixTextImageRGB = Clazz.defineMethod(c$, "fixTextImageRGB", +function(argb){ +return ((argb & 0xC0C0C0) == 0 ? argb | 0x040404 : argb); +}, "~N"); +c$.sort = null; +c$.nullShadeIndex = 50; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/HermiteRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/HermiteRenderer.js new file mode 100755 index 000000000000..403f892671ac --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/HermiteRenderer.js @@ -0,0 +1,364 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["J.g3d.G3DRenderer", "JU.P3", "$.V3"], "J.g3d.HermiteRenderer", ["JU.Lst", "$.P3i"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g3d = null; +this.gdata = null; +this.pLeft = null; +this.pRight = null; +this.sLeft = null; +this.sRight = null; +this.pTopLeft = null; +this.pTopRight = null; +this.pBotLeft = null; +this.pBotRight = null; +this.a1 = null; +this.a2 = null; +this.b1 = null; +this.b2 = null; +this.c1 = null; +this.c2 = null; +this.d1 = null; +this.d2 = null; +this.T1 = null; +this.T2 = null; +this.depth1 = null; +this.needToFill = null; +Clazz.instantialize(this, arguments);}, J.g3d, "HermiteRenderer", null, J.g3d.G3DRenderer); +Clazz.prepareFields (c$, function(){ +this.pLeft = new Array(16); +this.pRight = new Array(16); +this.sLeft = Clazz.newFloatArray (16, 0); +this.sRight = Clazz.newFloatArray (16, 0); +this.pTopLeft = new Array(16); +this.pTopRight = new Array(16); +this.pBotLeft = new Array(16); +this.pBotRight = new Array(16); +{ +for (var i = 16; --i >= 0; ) { +this.pLeft[i] = new JU.P3i(); +this.pRight[i] = new JU.P3i(); +this.pTopLeft[i] = new JU.P3(); +this.pTopRight[i] = new JU.P3(); +this.pBotLeft[i] = new JU.P3(); +this.pBotRight[i] = new JU.P3(); +} +}this.a1 = new JU.P3(); +this.a2 = new JU.P3(); +this.b1 = new JU.P3(); +this.b2 = new JU.P3(); +this.c1 = new JU.P3(); +this.c2 = new JU.P3(); +this.d1 = new JU.P3(); +this.d2 = new JU.P3(); +this.T1 = new JU.V3(); +this.T2 = new JU.V3(); +this.depth1 = new JU.V3(); +this.needToFill = Clazz.newBooleanArray(16, false); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "set", +function(g3d, gdata){ +this.g3d = g3d; +this.gdata = gdata; +return this; +}, "J.api.JmolRendererInterface,JU.GData"); +Clazz.defineMethod(c$, "renderHermiteRope", +function(fill, tension, diameterBeg, diameterMid, diameterEnd, p0, p1, p2, p3){ +var z1 = Clazz.floatToInt(p1.z); +var z2 = Clazz.floatToInt(p2.z); +if (p0.z == 1 || z1 == 1 || z2 == 1 || p3.z == 1) return; +if (this.gdata.isClippedZ(z1) || this.gdata.isClippedZ(z2)) return; +var x1 = Clazz.floatToInt(p1.x); +var y1 = Clazz.floatToInt(p1.y); +var x2 = Clazz.floatToInt(p2.x); +var y2 = Clazz.floatToInt(p2.y); +var xT1 = Clazz.doubleToInt(((x2 - Clazz.floatToInt(p0.x)) * tension) / 8); +var yT1 = Clazz.doubleToInt(((y2 - Clazz.floatToInt(p0.y)) * tension) / 8); +var zT1 = Clazz.doubleToInt(((z2 - Clazz.floatToInt(p0.z)) * tension) / 8); +var xT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.x) - x1) * tension) / 8); +var yT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.y) - y1) * tension) / 8); +var zT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.z) - z1) * tension) / 8); +this.sLeft[0] = 0; +this.pLeft[0].set(x1, y1, z1); +this.sRight[0] = 1; +this.pRight[0].set(x2, y2, z2); +var sp = 0; +var dDiameterFirstHalf = 0; +var dDiameterSecondHalf = 0; +if (fill) { +dDiameterFirstHalf = 2 * (diameterMid - diameterBeg); +dDiameterSecondHalf = 2 * (diameterEnd - diameterMid); +}do { +var a = this.pLeft[sp]; +var b = this.pRight[sp]; +var dx = b.x - a.x; +if (dx >= -1 && dx <= 1) { +var dy = b.y - a.y; +if (dy >= -1 && dy <= 1) { +var s = this.sLeft[sp]; +if (fill) { +var d = (s < 0.5 ? diameterBeg + Clazz.floatToInt(dDiameterFirstHalf * s) : diameterMid + Clazz.floatToInt(dDiameterSecondHalf * (s - 0.5))); +this.g3d.fillSphereI(d, a); +} else { +this.g3d.plotPixelClippedP3i(a); +}--sp; +continue; +}}var s = (this.sLeft[sp] + this.sRight[sp]) / 2; +var s2 = s * s; +var s3 = s2 * s; +var h1 = 2 * s3 - 3 * s2 + 1; +var h2 = -2 * s3 + 3 * s2; +var h3 = s3 - 2 * s2 + s; +var h4 = s3 - s2; +if (sp >= 15) break; +var pMid = this.pRight[sp + 1]; +pMid.x = Clazz.doubleToInt(h1 * x1 + h2 * x2 + h3 * xT1 + h4 * xT2); +pMid.y = Clazz.doubleToInt(h1 * y1 + h2 * y2 + h3 * yT1 + h4 * yT2); +pMid.z = Clazz.doubleToInt(h1 * z1 + h2 * z2 + h3 * zT1 + h4 * zT2); +this.pRight[sp + 1] = this.pRight[sp]; +this.sRight[sp + 1] = this.sRight[sp]; +this.pRight[sp] = pMid; +this.sRight[sp] = s; +++sp; +this.pLeft[sp].setT(pMid); +this.sLeft[sp] = s; +} while (sp >= 0); +}, "~B,~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "renderHermiteRibbon", +function(fill, border, tension, p0, p1, p2, p3, p4, p5, p6, p7, aspectRatio, fillType){ +if (p0.z == 1 || p1.z == 1 || p2.z == 1 || p3.z == 1 || p4.z == 1 || p5.z == 1 || p6.z == 1 || p7.z == 1) return; +if (!fill) { +tension = Math.abs(tension); +this.renderParallelPair(fill, tension, p0, p1, p2, p3, p4, p5, p6, p7); +return; +}var isRev = (tension < 0); +if (isRev) tension = -tension; +var ratio = 1 / aspectRatio; +var x1 = Clazz.floatToInt(p1.x); +var y1 = Clazz.floatToInt(p1.y); +var z1 = Clazz.floatToInt(p1.z); +var x2 = Clazz.floatToInt(p2.x); +var y2 = Clazz.floatToInt(p2.y); +var z2 = Clazz.floatToInt(p2.z); +var xT1 = Clazz.doubleToInt(((x2 - Clazz.floatToInt(p0.x)) * tension) / 8); +var yT1 = Clazz.doubleToInt(((y2 - Clazz.floatToInt(p0.y)) * tension) / 8); +var zT1 = Clazz.doubleToInt(((z2 - Clazz.floatToInt(p0.z)) * tension) / 8); +var xT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.x) - x1) * tension) / 8); +var yT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.y) - y1) * tension) / 8); +var zT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.z) - z1) * tension) / 8); +this.pTopLeft[0].set(x1, y1, z1); +this.pTopRight[0].set(x2, y2, z2); +var x5 = Clazz.floatToInt(p5.x); +var y5 = Clazz.floatToInt(p5.y); +var z5 = Clazz.floatToInt(p5.z); +var x6 = Clazz.floatToInt(p6.x); +var y6 = Clazz.floatToInt(p6.y); +var z6 = Clazz.floatToInt(p6.z); +var xT5 = Clazz.doubleToInt(((x6 - Clazz.floatToInt(p4.x)) * tension) / 8); +var yT5 = Clazz.doubleToInt(((y6 - Clazz.floatToInt(p4.y)) * tension) / 8); +var zT5 = Clazz.doubleToInt(((z6 - Clazz.floatToInt(p4.z)) * tension) / 8); +var xT6 = Clazz.doubleToInt(((Clazz.floatToInt(p7.x) - x5) * tension) / 8); +var yT6 = Clazz.doubleToInt(((Clazz.floatToInt(p7.y) - y5) * tension) / 8); +var zT6 = Clazz.doubleToInt(((Clazz.floatToInt(p7.z) - z5) * tension) / 8); +this.pBotLeft[0].set(x5, y5, z5); +this.pBotRight[0].set(x6, y6, z6); +this.sLeft[0] = 0; +this.sRight[0] = 1; +this.needToFill[0] = true; +var sp = 0; +var closeEnd = false; +do { +var a = this.pTopLeft[sp]; +var b = this.pTopRight[sp]; +var dxTop = b.x - a.x; +var dxTop2 = dxTop * dxTop; +if (dxTop2 < 10) { +var dyTop = b.y - a.y; +var dyTop2 = dyTop * dyTop; +if (dyTop2 < 10) { +var c = this.pBotLeft[sp]; +var d = this.pBotRight[sp]; +var dxBot = d.x - c.x; +var dxBot2 = dxBot * dxBot; +if (dxBot2 < 8) { +var dyBot = d.y - c.y; +var dyBot2 = dyBot * dyBot; +if (dyBot2 < 8) { +if (border) { +this.g3d.fillSphereBits(3, a); +this.g3d.fillSphereBits(3, c); +}if (this.needToFill[sp]) { +if (aspectRatio > 0) { +this.T1.sub2(a, c); +this.T1.scale(ratio); +this.T2.sub2(a, b); +this.depth1.cross(this.T1, this.T2); +this.depth1.scale(this.T1.length() / this.depth1.length()); +this.a1.add2(a, this.depth1); +this.a2.sub2(a, this.depth1); +this.b1.add2(b, this.depth1); +this.b2.sub2(b, this.depth1); +this.c1.add2(c, this.depth1); +this.c2.sub2(c, this.depth1); +this.d1.add2(d, this.depth1); +this.d2.sub2(d, this.depth1); +this.g3d.fillQuadrilateral(this.a1, this.b1, this.d1, this.c1, false); +this.g3d.fillQuadrilateral(this.a2, this.b2, this.d2, this.c2, false); +this.g3d.fillQuadrilateral(this.a1, this.b1, this.b2, this.a2, false); +this.g3d.fillQuadrilateral(this.c1, this.d1, this.d2, this.c2, false); +closeEnd = true; +} else { +if (fillType == 0) { +if (isRev) this.g3d.fillQuadrilateral(c, d, b, a, false); + else this.g3d.fillQuadrilateral(a, b, d, c, false); +} else { +if (isRev) { +if (fillType != J.g3d.HermiteRenderer.isFront(a, b, d)) this.g3d.fillTriangle3f(a, b, d, false); +if (fillType != J.g3d.HermiteRenderer.isFront(a, d, c)) this.g3d.fillTriangle3f(a, d, c, false); +} else { +if (fillType == J.g3d.HermiteRenderer.isFront(a, b, d)) this.g3d.fillTriangle3f(a, b, d, false); +if (fillType == J.g3d.HermiteRenderer.isFront(a, d, c)) this.g3d.fillTriangle3f(a, d, c, false); +}}}this.needToFill[sp] = false; +}if (dxTop2 + dyTop2 < 2 && dxBot2 + dyBot2 < 2) { +--sp; +continue; +}}}}}var s = (this.sLeft[sp] + this.sRight[sp]) / 2; +var s2 = s * s; +var s3 = s2 * s; +var h1 = 2 * s3 - 3 * s2 + 1; +var h2 = -2 * s3 + 3 * s2; +var h3 = s3 - 2 * s2 + s; +var h4 = s3 - s2; +if (sp >= 15) break; +var spNext = sp + 1; +var pMidTop = this.pTopRight[spNext]; +pMidTop.x = (h1 * x1 + h2 * x2 + h3 * xT1 + h4 * xT2); +pMidTop.y = (h1 * y1 + h2 * y2 + h3 * yT1 + h4 * yT2); +pMidTop.z = (h1 * z1 + h2 * z2 + h3 * zT1 + h4 * zT2); +var pMidBot = this.pBotRight[spNext]; +pMidBot.x = (h1 * x5 + h2 * x6 + h3 * xT5 + h4 * xT6); +pMidBot.y = (h1 * y5 + h2 * y6 + h3 * yT5 + h4 * yT6); +pMidBot.z = (h1 * z5 + h2 * z6 + h3 * zT5 + h4 * zT6); +this.pTopRight[spNext] = this.pTopRight[sp]; +this.pTopRight[sp] = pMidTop; +this.pBotRight[spNext] = this.pBotRight[sp]; +this.pBotRight[sp] = pMidBot; +this.sRight[spNext] = this.sRight[sp]; +this.sRight[sp] = s; +this.needToFill[spNext] = this.needToFill[sp]; +this.pTopLeft[spNext].setT(pMidTop); +this.pBotLeft[spNext].setT(pMidBot); +this.sLeft[spNext] = s; +++sp; +} while (sp >= 0); +if (closeEnd) { +this.a1.z += 1; +this.c1.z += 1; +this.c2.z += 1; +this.a2.z += 1; +this.g3d.fillQuadrilateral(this.a1, this.c1, this.c2, this.a2, false); +}}, "~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N"); +c$.isFront = Clazz.defineMethod(c$, "isFront", +function(a, b, c){ +J.g3d.HermiteRenderer.vAB.sub2(b, a); +J.g3d.HermiteRenderer.vAC.sub2(c, a); +J.g3d.HermiteRenderer.vAB.cross(J.g3d.HermiteRenderer.vAB, J.g3d.HermiteRenderer.vAC); +return (J.g3d.HermiteRenderer.vAB.z < 0 ? -1 : 1); +}, "JU.P3,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "renderParallelPair", +function(fill, tension, p0, p1, p2, p3, p4, p5, p6, p7){ +var endPoints = Clazz.newArray(-1, [p2, p1, p6, p5]); +var points = new JU.Lst(); +var whichPoint = 0; +var numTopStrandPoints = 2; +var numPointsPerSegment = 5.0; +var interval = (1.0 / numPointsPerSegment); +var currentInt = 0.0; +var x1 = Clazz.floatToInt(p1.x); +var y1 = Clazz.floatToInt(p1.y); +var z1 = Clazz.floatToInt(p1.z); +var x2 = Clazz.floatToInt(p2.x); +var y2 = Clazz.floatToInt(p2.y); +var z2 = Clazz.floatToInt(p2.z); +var xT1 = Clazz.doubleToInt(((x2 - Clazz.floatToInt(p0.x)) * tension) / 8); +var yT1 = Clazz.doubleToInt(((y2 - Clazz.floatToInt(p0.y)) * tension) / 8); +var zT1 = Clazz.doubleToInt(((z2 - Clazz.floatToInt(p0.z)) * tension) / 8); +var xT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.x) - x1) * tension) / 8); +var yT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.y) - y1) * tension) / 8); +var zT2 = Clazz.doubleToInt(((Clazz.floatToInt(p3.z) - z1) * tension) / 8); +this.sLeft[0] = 0; +this.pLeft[0].set(x1, y1, z1); +this.sRight[0] = 1; +this.pRight[0].set(x2, y2, z2); +var sp = 0; +for (var strands = 2; strands > 0; strands--) { +if (strands == 1) { +x1 = Clazz.floatToInt(p5.x); +y1 = Clazz.floatToInt(p5.y); +z1 = Clazz.floatToInt(p5.z); +x2 = Clazz.floatToInt(p6.x); +y2 = Clazz.floatToInt(p6.y); +z2 = Clazz.floatToInt(p6.z); +xT1 = Clazz.doubleToInt(((x2 - Clazz.floatToInt(p4.x)) * tension) / 8); +yT1 = Clazz.doubleToInt(((y2 - Clazz.floatToInt(p4.y)) * tension) / 8); +zT1 = Clazz.doubleToInt(((z2 - Clazz.floatToInt(p4.z)) * tension) / 8); +xT2 = Clazz.doubleToInt(((Clazz.floatToInt(p7.x) - x1) * tension) / 8); +yT2 = Clazz.doubleToInt(((Clazz.floatToInt(p7.y) - y1) * tension) / 8); +zT2 = Clazz.doubleToInt(((Clazz.floatToInt(p7.z) - z1) * tension) / 8); +this.sLeft[0] = 0; +this.pLeft[0].set(x1, y1, z1); +this.sRight[0] = 1; +this.pRight[0].set(x2, y2, z2); +sp = 0; +}points.addLast(endPoints[whichPoint++]); +currentInt = interval; +do { +var a = this.pLeft[sp]; +var b = this.pRight[sp]; +var dx = b.x - a.x; +var dy = b.y - a.y; +var dist2 = dx * dx + dy * dy; +if (dist2 <= 2) { +var s = this.sLeft[sp]; +this.g3d.fillSphereI(3, a); +if (s < 1.0 - currentInt) { +var temp = new JU.P3(); +temp.set(a.x, a.y, a.z); +points.addLast(temp); +currentInt += interval; +if (strands == 2) { +numTopStrandPoints++; +}}--sp; +} else { +var s = (this.sLeft[sp] + this.sRight[sp]) / 2; +var s2 = s * s; +var s3 = s2 * s; +var h1 = 2 * s3 - 3 * s2 + 1; +var h2 = -2 * s3 + 3 * s2; +var h3 = s3 - 2 * s2 + s; +var h4 = s3 - s2; +if (sp >= 15) break; +var pMid = this.pRight[sp + 1]; +pMid.x = Clazz.doubleToInt(h1 * x1 + h2 * x2 + h3 * xT1 + h4 * xT2); +pMid.y = Clazz.doubleToInt(h1 * y1 + h2 * y2 + h3 * yT1 + h4 * yT2); +pMid.z = Clazz.doubleToInt(h1 * z1 + h2 * z2 + h3 * zT1 + h4 * zT2); +this.pRight[sp + 1] = this.pRight[sp]; +this.sRight[sp + 1] = this.sRight[sp]; +this.pRight[sp] = pMid; +this.sRight[sp] = s; +++sp; +this.pLeft[sp].setT(pMid); +this.sLeft[sp] = s; +}} while (sp >= 0); +points.addLast(endPoints[whichPoint++]); +} +var size = points.size(); +for (var top = 0; top < numTopStrandPoints && (top + numTopStrandPoints) < size; top++) this.g3d.drawLineAB(points.get(top), points.get(top + numTopStrandPoints)); + +}, "~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3"); +c$.vAB = new JU.V3(); +c$.vAC = new JU.V3(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/LineRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/LineRenderer.js new file mode 100755 index 000000000000..dcef43595f2d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/LineRenderer.js @@ -0,0 +1,621 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["J.g3d.PrecisionRenderer", "java.util.Hashtable"], "J.g3d.LineRenderer", ["JU.BS"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g3d = null; +this.shader = null; +this.lineBits = null; +this.slope = 0; +this.lineTypeX = false; +this.nBits = 0; +this.lineCache = null; +this.slopeKey = null; +this.x1t = 0; +this.y1t = 0; +this.z1t = 0; +this.x2t = 0; +this.y2t = 0; +this.z2t = 0; +Clazz.instantialize(this, arguments);}, J.g3d, "LineRenderer", J.g3d.PrecisionRenderer); +Clazz.prepareFields (c$, function(){ +this.lineCache = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(g3d){ +Clazz.superConstructor (this, J.g3d.LineRenderer, []); +this.g3d = g3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz.defineMethod(c$, "setLineBits", +function(dx, dy){ +this.slope = (dx != 0 ? dy / dx : dy >= 0 ? 3.4028235E38 : -3.4028235E38); +this.lineTypeX = (this.slope <= 1 && this.slope >= -1); +this.nBits = (this.lineTypeX ? this.g3d.width : this.g3d.height); +this.slopeKey = Float.$valueOf(this.slope); +if (this.lineCache.containsKey(this.slopeKey)) { +this.lineBits = this.lineCache.get(this.slopeKey); +return; +}this.lineBits = JU.BS.newN(this.nBits); +dy = Math.abs(dy); +dx = Math.abs(dx); +if (dy > dx) { +var t = dx; +dx = dy; +dy = t; +}var twoDError = 0; +var twoDx = dx + dx; +var twoDy = dy + dy; +for (var i = 0; i < this.nBits; i++) { +twoDError += twoDy; +if (twoDError > dx) { +this.lineBits.set(i); +twoDError -= twoDx; +}} +this.lineCache.put(this.slopeKey, this.lineBits); +}, "~N,~N"); +Clazz.defineMethod(c$, "clearLineCache", +function(){ +this.lineCache.clear(); +}); +Clazz.defineMethod(c$, "plotLineOld", +function(argbA, argbB, xA, yA, zA, xB, yB, zB){ +this.x1t = xA; +this.x2t = xB; +this.y1t = yA; +this.y2t = yB; +this.z1t = zA; +this.z2t = zB; +var clipped = true; +switch (this.getTrimmedLineImpl()) { +case 0: +clipped = false; +break; +case 2: +return; +} +this.plotLineClippedOld(argbA, argbB, xA, yA, zA, xB - xA, yB - yA, zB - zA, clipped, 0, 0); +}, "~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "plotLineDeltaOld", +function(argbA, argbB, xA, yA, zA, dxBA, dyBA, dzBA, clipped){ +this.x1t = xA; +this.x2t = xA + dxBA; +this.y1t = yA; +this.y2t = yA + dyBA; +this.z1t = zA; +this.z2t = zA + dzBA; +if (clipped) switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +break; +} +this.plotLineClippedOld(argbA, argbB, xA, yA, zA, dxBA, dyBA, dzBA, clipped, 0, 0); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "plotLineDeltaAOld", +function(shades1, shades2, screenMask, shadeIndex, x, y, z, dx, dy, dz, clipped){ +this.x1t = x; +this.x2t = x + dx; +this.y1t = y; +this.y2t = y + dy; +this.z1t = z; +this.z2t = z + dz; +if (clipped) switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +} +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var argb = argb1; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yOffsetIncrement = width; +var x2 = x + dx; +var y2 = y + dy; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +}var twoDx = dx + dx; +var twoDy = dy + dy; +var zCurrentScaled = z << 10; +var argbUp = argb1Up; +var argbDn = argb1Dn; +if (dy <= dx) { +var roundingFactor = dx - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz.doubleToInt(((dz << 10) + roundingFactor) / dx); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz.doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}offset += xIncrement; +zCurrentScaled += zIncrementScaled; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, zCurrent, rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}runIndex = (runIndex + 1) % run; +} +} else { +var roundingFactor = dy - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz.doubleToInt(((dz << 10) + roundingFactor) / dy); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz.doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}offset += yOffsetIncrement; +zCurrentScaled += zIncrementScaled; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) { +var rand8 = this.g3d.shader.nextRandom8Bit(); +p.addPixel(offset, zCurrent, rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}runIndex = (runIndex + 1) % run; +} +}}, "~A,~A,~N,~N,~N,~N,~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "plotLineDeltaABitsFloat", +function(shades1, shades2, shadeIndex, ptA, ptB, screenMask, clipped){ +var x = Math.round(ptA.x); +var y = Math.round(ptA.y); +var z = Math.round(ptA.z); +var bx = Math.round(ptB.x); +var by = Math.round(ptB.y); +var bz = Math.round(ptB.z); +var dx = bx - x; +var dy = by - y; +this.x1t = x; +this.x2t = bx; +this.y1t = y; +this.y2t = by; +this.z1t = z; +this.z2t = bz; +if (clipped && this.getTrimmedLineImpl() == 2) return; +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var i0; +var iMid; +var i1; +var i2; +var iIncrement; +var xIncrement; +var yOffsetIncrement; +if (this.lineTypeX) { +i0 = x; +i1 = this.x1t; +i2 = this.x2t; +iMid = x + Clazz.doubleToInt(dx / 2); +iIncrement = (dx >= 0 ? 1 : -1); +xIncrement = iIncrement; +yOffsetIncrement = (dy >= 0 ? width : -width); +this.setRastABFloat(ptA.x, ptA.z, ptB.x, ptB.z); +} else { +i0 = y; +i1 = this.y1t; +i2 = this.y2t; +iMid = y + Clazz.doubleToInt(dy / 2); +iIncrement = (dy >= 0 ? 1 : -1); +xIncrement = (dy >= 0 ? width : -width); +yOffsetIncrement = (dx >= 0 ? 1 : -1); +this.setRastABFloat(ptA.y, ptA.z, ptB.y, ptB.z); +}var zCurrent = z; +var argb = argb1; +var argbUp = argb1Up; +var argbDn = argb1Dn; +var isInWindow = false; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}for (var i = i0, iBits = i0; ; i += iIncrement, iBits += iIncrement) { +if (i == i1) isInWindow = true; +if (i == iMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}if (argb != 0 && isInWindow && offset >= 0 && offset < offsetMax && runIndex < rise) { +zCurrent = this.getZCurrent(this.a, this.b, i); +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, Clazz.floatToInt(zCurrent), rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}if (i == i2) break; +runIndex = (runIndex + 1) % run; +offset += xIncrement; +while (iBits < 0) iBits += this.nBits; + +if (this.lineBits.get(iBits % this.nBits)) { +offset += yOffsetIncrement; +}} +}, "~A,~A,~N,JU.P3,JU.P3,~N,~B"); +Clazz.defineMethod(c$, "plotLineDeltaABitsInt", +function(shades1, shades2, shadeIndex, ptA, ptB, screenMask, clipped){ +var x = ptA.x; +var y = ptA.y; +var z = ptA.z; +var bx = ptB.x; +var by = ptB.y; +var bz = ptB.z; +var dx = bx - x; +var dy = by - y; +this.x1t = x; +this.x2t = bx; +this.y1t = y; +this.y2t = by; +this.z1t = z; +this.z2t = bz; +if (clipped && this.getTrimmedLineImpl() == 2) return; +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var i0; +var iMid; +var i1; +var i2; +var iIncrement; +var xIncrement; +var yOffsetIncrement; +if (this.lineTypeX) { +i0 = x; +i1 = this.x1t; +i2 = this.x2t; +iMid = x + Clazz.doubleToInt(dx / 2); +iIncrement = (dx >= 0 ? 1 : -1); +xIncrement = iIncrement; +yOffsetIncrement = (dy >= 0 ? width : -width); +this.setRastAB(ptA.x, ptA.z, ptB.x, ptB.z); +} else { +i0 = y; +i1 = this.y1t; +i2 = this.y2t; +iMid = y + Clazz.doubleToInt(dy / 2); +iIncrement = (dy >= 0 ? 1 : -1); +xIncrement = (dy >= 0 ? width : -width); +yOffsetIncrement = (dx >= 0 ? 1 : -1); +this.setRastAB(ptA.y, ptA.z, ptB.y, ptB.z); +}var zCurrent = z; +var argb = argb1; +var argbUp = argb1Up; +var argbDn = argb1Dn; +var isInWindow = false; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}for (var i = i0, iBits = i0; ; i += iIncrement, iBits += iIncrement) { +if (i == i1) isInWindow = true; +if (i == iMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}if (argb != 0 && isInWindow && offset >= 0 && offset < offsetMax && runIndex < rise) { +zCurrent = this.getZCurrent(this.a, this.b, i); +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, Clazz.floatToInt(zCurrent), rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}if (i == i2) break; +runIndex = (runIndex + 1) % run; +offset += xIncrement; +while (iBits < 0) iBits += this.nBits; + +if (this.lineBits.get(iBits % this.nBits)) { +offset += yOffsetIncrement; +}} +}, "~A,~A,~N,JU.P3i,JU.P3i,~N,~B"); +Clazz.defineMethod(c$, "plotLineBits", +function(argbA, argbB, ptA, ptB, run, rise, andClip){ +if (ptA.z <= 1 || ptB.z <= 1) return; +var clipped = true; +this.x1t = ptA.x; +this.y1t = ptA.y; +this.z1t = ptA.z; +this.x2t = ptB.x; +this.y2t = ptB.y; +this.z2t = ptB.z; +switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +break; +default: +if (andClip) { +ptA.set(this.x1t, this.y1t, this.z1t); +ptB.set(this.x2t, this.y2t, this.z2t); +}} +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +if (run == 0) { +rise = 2147483647; +run = 1; +}var x = ptA.x; +var y = ptA.y; +var z = ptA.z; +var dx = ptB.x - x; +var x2 = x + dx; +var dy = ptB.y - y; +var y2 = y + dy; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var argb = argbA; +var p = this.g3d.pixel; +if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yIncrement = 1; +var yOffsetIncrement = width; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +yIncrement = -1; +}var twoDx = dx + dx; +var twoDy = dy + dy; +if (dy <= dx) { +this.setRastAB(ptA.x, ptA.z, ptB.x, ptB.z); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz.doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argbB; +if (argb == 0) return; +}offset += xIncrement; +x += xIncrement; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = this.getZCurrent(this.a, this.b, x); +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +} else { +this.setRastAB(ptA.y, ptA.z, ptB.y, ptB.z); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz.doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argbB; +if (argb == 0) return; +}offset += yOffsetIncrement; +y += yIncrement; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = this.getZCurrent(this.a, this.b, y); +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +}}, "~N,~N,JU.P3i,JU.P3i,~N,~N,~B"); +Clazz.defineMethod(c$, "getTrimmedLineImpl", +function(){ +var cc1 = this.g3d.clipCode3(this.x1t, this.y1t, this.z1t); +var cc2 = this.g3d.clipCode3(this.x2t, this.y2t, this.z2t); +var c = (cc1 | cc2); +if ((cc1 | cc2) == 0) return 0; +if (c == -1) return 2; +var xLast = this.g3d.xLast; +var yLast = this.g3d.yLast; +var slab = this.g3d.slab; +var depth = this.g3d.depth; +do { +if ((cc1 & cc2) != 0) return 2; +var dx = this.x2t - this.x1t; +var dy = this.y2t - this.y1t; +var dz = this.z2t - this.z1t; +if (cc1 != 0) { +if ((cc1 & 8) != 0) { +this.y1t += Clazz.floatToInt((-this.x1t * dy) / dx); +this.z1t += Clazz.floatToInt((-this.x1t * dz) / dx); +this.x1t = 0; +} else if ((cc1 & 4) != 0) { +this.y1t += Clazz.floatToInt(((xLast - this.x1t) * dy) / dx); +this.z1t += Clazz.floatToInt(((xLast - this.x1t) * dz) / dx); +this.x1t = xLast; +} else if ((cc1 & 2) != 0) { +this.x1t += Clazz.floatToInt((-this.y1t * dx) / dy); +this.z1t += Clazz.floatToInt((-this.y1t * dz) / dy); +this.y1t = 0; +} else if ((cc1 & 1) != 0) { +this.x1t += Clazz.floatToInt(((yLast - this.y1t) * dx) / dy); +this.z1t += Clazz.floatToInt(((yLast - this.y1t) * dz) / dy); +this.y1t = yLast; +} else if ((cc1 & 32) != 0) { +this.x1t += Clazz.floatToInt(((slab - this.z1t) * dx) / dz); +this.y1t += Clazz.floatToInt(((slab - this.z1t) * dy) / dz); +this.z1t = slab; +} else { +this.x1t += Clazz.floatToInt(((depth - this.z1t) * dx) / dz); +this.y1t += Clazz.floatToInt(((depth - this.z1t) * dy) / dz); +this.z1t = depth; +}cc1 = this.g3d.clipCode3(this.x1t, this.y1t, this.z1t); +} else { +if ((cc2 & 8) != 0) { +this.y2t += Clazz.floatToInt((-this.x2t * dy) / dx); +this.z2t += Clazz.floatToInt((-this.x2t * dz) / dx); +this.x2t = 0; +} else if ((cc2 & 4) != 0) { +this.y2t += Clazz.floatToInt(((xLast - this.x2t) * dy) / dx); +this.z2t += Clazz.floatToInt(((xLast - this.x2t) * dz) / dx); +this.x2t = xLast; +} else if ((cc2 & 2) != 0) { +this.x2t += Clazz.floatToInt((-this.y2t * dx) / dy); +this.z2t += Clazz.floatToInt((-this.y2t * dz) / dy); +this.y2t = 0; +} else if ((cc2 & 1) != 0) { +this.x2t += Clazz.floatToInt(((yLast - this.y2t) * dx) / dy); +this.z2t += Clazz.floatToInt(((yLast - this.y2t) * dz) / dy); +this.y2t = yLast; +} else if ((cc2 & 32) != 0) { +this.x2t += Clazz.floatToInt(((slab - this.z2t) * dx) / dz); +this.y2t += Clazz.floatToInt(((slab - this.z2t) * dy) / dz); +this.z2t = slab; +} else { +this.x2t += Clazz.floatToInt(((depth - this.z2t) * dx) / dz); +this.y2t += Clazz.floatToInt(((depth - this.z2t) * dy) / dz); +this.z2t = depth; +}cc2 = this.g3d.clipCode3(this.x2t, this.y2t, this.z2t); +}} while ((cc1 | cc2) != 0); +return 1; +}); +Clazz.defineMethod(c$, "plotLineClippedOld", +function(argb1, argb2, x, y, z, dx, dy, dz, clipped, run, rise){ +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +if (run == 0) { +rise = 2147483647; +run = 1; +}var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var argb = argb1; +var p = this.g3d.pixel; +if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yOffsetIncrement = width; +var x2 = x + dx; +var y2 = y + dy; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +}var twoDx = dx + dx; +var twoDy = dy + dy; +var zCurrentScaled = z << 10; +if (dy <= dx) { +var roundingFactor = dx - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz.doubleToInt(((dz << 10) + roundingFactor) / dx); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz.doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +}offset += xIncrement; +zCurrentScaled += zIncrementScaled; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +} else { +var roundingFactor = dy - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz.doubleToInt(((dz << 10) + roundingFactor) / dy); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz.doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +}offset += yOffsetIncrement; +zCurrentScaled += zIncrementScaled; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +}}, "~N,~N,~N,~N,~N,~N,~N,~N,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/Pixelator.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/Pixelator.js new file mode 100755 index 000000000000..cb9f7907b386 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/Pixelator.js @@ -0,0 +1,50 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(null, "J.g3d.Pixelator", ["J.g3d.Graphics3D"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g = null; +this.p0 = null; +this.zb = null; +this.pb = null; +this.width = 0; +this.bgcolor = 0; +Clazz.instantialize(this, arguments);}, J.g3d, "Pixelator", null); +Clazz.makeConstructor(c$, +function(graphics3d){ +this.g = graphics3d; +this.bgcolor = this.g.bgcolor; +this.setBuf(); +}, "J.g3d.Graphics3D"); +Clazz.defineMethod(c$, "setBuf", +function(){ +this.zb = this.g.zbuf; +this.pb = this.g.pbuf; +}); +Clazz.defineMethod(c$, "clearPixel", +function(offset, z){ +if (this.zb[offset] > z) this.zb[offset] = 2147483647; +}, "~N,~N"); +Clazz.defineMethod(c$, "addPixel", +function(offset, z, p){ +this.zb[offset] = z; +this.pb[offset] = p; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "addImagePixel", +function(shade, tLog, offset, z, argb, bgargb){ +if (z < this.zb[offset]) { +switch (shade) { +case 0: +return; +case 8: +this.addPixel(offset, z, argb); +return; +default: +shade += tLog; +if (shade <= 7) { +var p = this.pb[offset]; +if (bgargb != 0) p = J.g3d.Graphics3D.mergeBufferPixel(p, bgargb, bgargb); +p = J.g3d.Graphics3D.mergeBufferPixel(p, (argb & 0xFFFFFF) | (shade << 24), this.bgcolor); +this.addPixel(offset, z, p); +}} +}}, "~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorScreened.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorScreened.js new file mode 100755 index 000000000000..9299c6c2fcde --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorScreened.js @@ -0,0 +1,15 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["J.g3d.Pixelator"], "J.g3d.PixelatorScreened", null, function(){ +var c$ = Clazz.declareType(J.g3d, "PixelatorScreened", J.g3d.Pixelator); +Clazz.makeConstructor(c$, +function(g, p0){ +Clazz.superConstructor(this, J.g3d.PixelatorScreened, [g]); +this.width = g.width; +this.p0 = p0; +}, "J.g3d.Graphics3D,J.g3d.Pixelator"); +Clazz.overrideMethod(c$, "addPixel", +function(offset, z, p){ +if ((offset % this.width) % 2 == (Clazz.doubleToInt(offset / this.width)) % 2) this.p0.addPixel(offset, z, p); +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorShaded.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorShaded.js new file mode 100755 index 000000000000..205c81b33b32 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorShaded.js @@ -0,0 +1,51 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["J.g3d.Pixelator"], "J.g3d.PixelatorShaded", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bgRGB = null; +this.tmp = null; +this.zSlab = 0; +this.zDepth = 0; +this.zShadePower = 0; +Clazz.instantialize(this, arguments);}, J.g3d, "PixelatorShaded", J.g3d.Pixelator); +Clazz.makeConstructor(c$, +function(g){ +Clazz.superConstructor(this, J.g3d.PixelatorShaded, [g]); +this.tmp = Clazz.newIntArray (3, 0); +}, "J.g3d.Graphics3D"); +Clazz.defineMethod(c$, "set", +function(zSlab, zDepth, zShadePower){ +this.bgcolor = this.g.bgcolor; +this.bgRGB = Clazz.newIntArray(-1, [this.bgcolor & 0xFF, (this.bgcolor >> 8) & 0xFF, (this.g.bgcolor >> 16) & 0xFF]); +this.zSlab = zSlab < 0 ? 0 : zSlab; +this.zDepth = zDepth < 0 ? 0 : zDepth; +this.zShadePower = zShadePower; +this.p0 = this.g.pixel0; +return this; +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "addPixel", +function(offset, z, p){ +if (z > this.zDepth) return; +if (z >= this.zSlab && this.zShadePower > 0) { +var t = this.tmp; +var zs = this.bgRGB; +t[0] = p; +t[1] = p >> 8; +t[2] = p >> 16; +var f = (this.zDepth - z) / (this.zDepth - this.zSlab); +if (this.zShadePower > 1) for (var i = 0; i < this.zShadePower; i++) f *= f; + +for (var i = 0; i < 3; i++) t[i] = zs[i] + Clazz.floatToInt(f * ((t[i] & 0xFF) - zs[i])); + +p = (t[2] << 16) | (t[1] << 8) | t[0] | (p & 0xFF000000); +}this.p0.addPixel(offset, z, p); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "showZBuffer", +function(){ +for (var i = this.p0.zb.length; --i >= 0; ) { +if (this.p0.pb[i] == 0) continue; +var z = Clazz.floatToInt(Math.min(255, Math.max(0, 255 * (this.zDepth - this.p0.zb[i]) / (this.zDepth - this.zSlab)))); +this.p0.pb[i] = 0xFF000000 | z | (z << 8) | (z << 16); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorT.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorT.js new file mode 100755 index 000000000000..a38a4a2352d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/PixelatorT.js @@ -0,0 +1,20 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["J.g3d.Pixelator"], "J.g3d.PixelatorT", ["J.g3d.Graphics3D"], function(){ +var c$ = Clazz.declareType(J.g3d, "PixelatorT", J.g3d.Pixelator); +Clazz.overrideMethod(c$, "clearPixel", +function(offset, z){ +}, "~N,~N"); +Clazz.overrideMethod(c$, "addPixel", +function(offset, z, p){ +var zT = this.g.zbufT[offset]; +if (z < zT) { +var argb = this.g.pbufT[offset]; +if (!this.g.translucentCoverOnly && argb != 0 && zT - z > this.g.zMargin) this.pb[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pb[offset], argb, this.g.bgcolor); +this.g.zbufT[offset] = z; +this.g.pbufT[offset] = p & this.g.translucencyMask; +} else if (z == zT) { +} else if (!this.g.translucentCoverOnly && z - zT > this.g.zMargin) { +this.pb[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pb[offset], p & this.g.translucencyMask, this.g.bgcolor); +}}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/Platform3D.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/Platform3D.js new file mode 100755 index 000000000000..3445a7422661 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/Platform3D.js @@ -0,0 +1,121 @@ +Clazz.declarePackage("J.g3d"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.windowWidth = 0; +this.windowHeight = 0; +this.windowSize = 0; +this.bufferWidth = 0; +this.bufferHeight = 0; +this.bufferSize = 0; +this.bufferSizeT = 0; +this.bufferedImage = null; +this.pBuffer = null; +this.pBufferT = null; +this.zBuffer = null; +this.zBufferT = null; +this.widthOffscreen = 0; +this.heightOffscreen = 0; +this.offscreenImage = null; +this.graphicsForTextOrImage = null; +this.apiPlatform = null; +Clazz.instantialize(this, arguments);}, J.g3d, "Platform3D", null); +Clazz.makeConstructor(c$, +function(apiPlatform){ +this.apiPlatform = apiPlatform; +}, "J.api.GenericPlatform"); +Clazz.defineMethod(c$, "getGraphicsForMetrics", +function(){ +return this.apiPlatform.getGraphics(this.allocateOffscreenImage(1, 1)); +}); +Clazz.defineMethod(c$, "allocateTBuffers", +function(antialiasTranslucent){ +this.bufferSizeT = (antialiasTranslucent ? this.bufferSize : this.windowSize); +this.zBufferT = Clazz.newIntArray (this.bufferSizeT, 0); +this.pBufferT = Clazz.newIntArray (this.bufferSizeT, 0); +}, "~B"); +Clazz.defineMethod(c$, "allocateBuffers", +function(width, height, antialias, isImageWrite){ +this.windowWidth = width; +this.windowHeight = height; +this.windowSize = width * height; +if (antialias) { +width *= 2; +height *= 2; +}this.bufferWidth = width; +this.bufferHeight = height; +this.bufferSize = this.bufferWidth * this.bufferHeight; +this.zBuffer = Clazz.newIntArray (this.bufferSize, 0); +this.pBuffer = Clazz.newIntArray (this.bufferSize, 0); +this.bufferedImage = this.apiPlatform.allocateRgbImage(this.windowWidth, this.windowHeight, this.pBuffer, this.windowSize, J.g3d.Platform3D.backgroundTransparent, isImageWrite); +}, "~N,~N,~B,~B"); +Clazz.defineMethod(c$, "releaseBuffers", +function(){ +this.windowWidth = this.windowHeight = this.bufferWidth = this.bufferHeight = this.bufferSize = -1; +if (this.bufferedImage != null) { +this.apiPlatform.flushImage(this.bufferedImage); +this.bufferedImage = null; +}this.pBuffer = null; +this.zBuffer = null; +this.pBufferT = null; +this.zBufferT = null; +}); +Clazz.defineMethod(c$, "hasContent", +function(){ +for (var i = this.bufferSize; --i >= 0; ) if (this.zBuffer[i] != 2147483647) return true; + +return false; +}); +Clazz.defineMethod(c$, "clearScreenBuffer", +function(){ +for (var i = this.bufferSize; --i >= 0; ) { +this.zBuffer[i] = 2147483647; +this.pBuffer[i] = 0; +} +}); +Clazz.defineMethod(c$, "setBackgroundColor", +function(bgColor){ +if (this.pBuffer == null) return; +for (var i = this.bufferSize; --i >= 0; ) if (this.pBuffer[i] == 0) this.pBuffer[i] = bgColor; + +}, "~N"); +Clazz.defineMethod(c$, "clearTBuffer", +function(){ +for (var i = this.bufferSizeT; --i >= 0; ) { +this.zBufferT[i] = 2147483647; +this.pBufferT[i] = 0; +} +}); +Clazz.defineMethod(c$, "clearBuffer", +function(){ +this.clearScreenBuffer(); +}); +Clazz.defineMethod(c$, "clearScreenBufferThreaded", +function(){ +}); +Clazz.defineMethod(c$, "notifyEndOfRendering", +function(){ +this.apiPlatform.notifyEndOfRendering(); +}); +Clazz.defineMethod(c$, "getGraphicsForTextOrImage", +function(width, height){ +if (width > this.widthOffscreen || height > this.heightOffscreen) { +if (this.offscreenImage != null) { +this.apiPlatform.disposeGraphics(this.graphicsForTextOrImage); +this.apiPlatform.flushImage(this.offscreenImage); +}if (width > this.widthOffscreen) this.widthOffscreen = width; +if (height > this.heightOffscreen) this.heightOffscreen = height; +this.offscreenImage = this.allocateOffscreenImage(this.widthOffscreen, this.heightOffscreen); +this.graphicsForTextOrImage = this.apiPlatform.getStaticGraphics(this.offscreenImage, J.g3d.Platform3D.backgroundTransparent); +}return this.graphicsForTextOrImage; +}, "~N,~N"); +Clazz.defineMethod(c$, "allocateOffscreenImage", +function(width, height){ +return this.apiPlatform.newOffScreenImage(width, height); +}, "~N,~N"); +Clazz.defineMethod(c$, "setBackgroundTransparent", +function(tf){ +J.g3d.Platform3D.backgroundTransparent = tf; +}, "~B"); +c$.backgroundTransparent = false; +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/PrecisionRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/PrecisionRenderer.js new file mode 100755 index 000000000000..1986d129dc0f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/PrecisionRenderer.js @@ -0,0 +1,43 @@ +Clazz.declarePackage("J.g3d"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.a = 0; +this.b = 0; +this.isOrthographic = false; +Clazz.instantialize(this, arguments);}, J.g3d, "PrecisionRenderer", null); +Clazz.defineMethod(c$, "getZCurrent", +function(a, b, x){ +return Math.round(a == 1.4E-45 ? b : this.isOrthographic ? a * x + b : a / (b - x)); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setRastABFloat", +function(xa, za, xb, zb){ +var zdif = (zb - za); +var xdif = (xb - xa); +if (zdif == 0 || xdif == 0) { +this.a = 1.4E-45; +this.b = za; +return; +}if (this.isOrthographic) { +this.a = zdif / xdif; +this.b = za - this.a * xa; +} else { +this.a = xdif * za * (zb / zdif); +this.b = (xb * zb - xa * za) / zdif; +}}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setRastAB", +function(xa, za, xb, zb){ +var zdif = (zb - za); +var xdif = (xb - xa); +if (xa == 1.4E-45 || zdif == 0 || xdif == 0) { +this.a = 1.4E-45; +this.b = zb; +return; +}if (this.isOrthographic) { +this.a = zdif / xdif; +this.b = za - this.a * xa; +} else { +this.a = xdif * za * (zb / zdif); +this.b = (xb * zb - xa * za) / zdif; +}}, "~N,~N,~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/SphereRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/SphereRenderer.js new file mode 100755 index 000000000000..d61d3d71413c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/SphereRenderer.js @@ -0,0 +1,392 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["JU.P3"], "J.g3d.SphereRenderer", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g3d = null; +this.shader = null; +this.zroot = null; +this.mat = null; +this.coef = null; +this.mDeriv = null; +this.selectedOctant = 0; +this.planeShade = 0; +this.zbuf = null; +this.width = 0; +this.height = 0; +this.depth = 0; +this.slab = 0; +this.offsetPbufBeginLine = 0; +this.ptTemp = null; +this.planeShades = null; +this.dxyz = null; +Clazz.instantialize(this, arguments);}, J.g3d, "SphereRenderer", null); +Clazz.prepareFields (c$, function(){ +this.zroot = Clazz.newDoubleArray (2, 0); +this.ptTemp = new JU.P3(); +this.planeShades = Clazz.newIntArray (3, 0); +this.dxyz = Clazz.newFloatArray (3, 3, 0); +}); +Clazz.makeConstructor(c$, +function(g3d){ +this.g3d = g3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz.defineMethod(c$, "render", +function(shades, diameter, x, y, z, mat, coef, mDeriv, selectedOctant, octantPoints){ +if (z == 1) return; +if (diameter > 49) diameter &= -2; +if (this.g3d.isClippedXY(diameter, x, y)) return; +this.slab = this.g3d.slab; +this.depth = this.g3d.depth; +var radius = (diameter + 1) >> 1; +var minZ = z - radius; +if (z + radius < this.slab || minZ > this.depth) return; +var minX = x - radius; +var maxX = x + radius; +var minY = y - radius; +var maxY = y + radius; +this.shader.nOut = this.shader.nIn = 0; +this.zbuf = this.g3d.zbuf; +this.height = this.g3d.height; +this.width = this.g3d.width; +this.offsetPbufBeginLine = this.width * y + x; +var sh = this.shader; +this.mat = mat; +if (mat != null) { +this.coef = coef; +this.mDeriv = mDeriv; +this.selectedOctant = selectedOctant; +if (sh.ellipsoidShades == null) sh.createEllipsoidShades(); +if (octantPoints != null) { +this.planeShade = -1; +for (var i = 0; i < 3; i++) { +var dx = this.dxyz[i][0] = octantPoints[i].x - x; +var dy = this.dxyz[i][1] = octantPoints[i].y - y; +var dz = this.dxyz[i][2] = octantPoints[i].z - z; +this.planeShades[i] = sh.getShadeIndex(dx, dy, -dz); +if (dx == 0 && dy == 0) { +this.planeShade = this.planeShades[i]; +break; +}} +}}if (mat != null || diameter > 128) { +this.renderQuadrant(-1, -1, x, y, z, diameter, shades); +this.renderQuadrant(-1, 1, x, y, z, diameter, shades); +this.renderQuadrant(1, -1, x, y, z, diameter, shades); +this.renderQuadrant(1, 1, x, y, z, diameter, shades); +if (mat != null) { +this.mat = null; +this.coef = null; +this.mDeriv = null; +}} else { +var ss = sh.sphereShapeCache[diameter - 1]; +if (ss == null) { +var countSE = 0; +var d = (diameter & 1) != 0; +var radiusF = diameter / 2.0; +var radiusF2 = radiusF * radiusF; +radius = Clazz.doubleToInt((diameter + 1) / 2); +var ys = d ? 0 : 0.5; +for (var i = 0; i < radius; ++i, ++ys) { +var y2 = ys * ys; +var xs = d ? 0 : 0.5; +for (var j = 0; j < radius; ++j, ++xs) { +var x2 = xs * xs; +var z2 = radiusF2 - y2 - x2; +if (z2 >= 0) ++countSE; +} +} +ss = Clazz.newIntArray (countSE, 0); +var offset = 0; +ys = d ? 0 : 0.5; +for (var i = 0; i < radius; ++i, ++ys) { +var y2 = ys * ys; +var xs = d ? 0 : 0.5; +for (var j = 0; j < radius; ++j, ++xs) { +var x2 = xs * xs; +var z2 = radiusF2 - y2 - x2; +if (z2 >= 0) { +var zs = Math.sqrt(z2); +var height = Clazz.floatToInt(zs); +var shadeIndexSE = sh.getShadeN(xs, ys, zs, radiusF); +var shadeIndexSW = sh.getShadeN(-xs, ys, zs, radiusF); +var shadeIndexNE = sh.getShadeN(xs, -ys, zs, radiusF); +var shadeIndexNW = sh.getShadeN(-xs, -ys, zs, radiusF); +var packed = (height | (shadeIndexSE << 7) | (shadeIndexSW << 13) | (shadeIndexNE << 19) | (shadeIndexNW << 25)); +ss[offset++] = packed; +}} +ss[offset - 1] |= 0x80000000; +} +sh.sphereShapeCache[diameter - 1] = ss; +}if (minX < 0 || maxX >= this.width || minY < 0 || maxY >= this.height || minZ < this.slab || z > this.depth) this.renderSphereClipped(ss, x, y, z, diameter, shades); + else this.renderSphereUnclipped(ss, z, diameter, shades); +}this.zbuf = null; +}, "~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A"); +Clazz.defineMethod(c$, "renderSphereUnclipped", +function(sphereShape, z, diameter, shades){ +var offsetSphere = 0; +var evenSizeCorrection = 1 - (diameter & 1); +var offsetSouthCenter = this.offsetPbufBeginLine; +var offsetNorthCenter = offsetSouthCenter - evenSizeCorrection * this.width; +var nLines = Clazz.doubleToInt((diameter + 1) / 2); +var zbuf = this.zbuf; +var width = this.width; +var p = this.g3d.pixel; +do { +var offsetSE = offsetSouthCenter; +var offsetSW = offsetSouthCenter - evenSizeCorrection; +var offsetNE = offsetNorthCenter; +var offsetNW = offsetNorthCenter - evenSizeCorrection; +var packed; +do { +packed = sphereShape[offsetSphere++]; +var zPixel = z - (packed & 0x7F); +if (zPixel < zbuf[offsetSE]) p.addPixel(offsetSE, zPixel, shades[((packed >> 7) & 0x3F)]); +if (zPixel < zbuf[offsetSW]) p.addPixel(offsetSW, zPixel, shades[((packed >> 13) & 0x3F)]); +if (zPixel < zbuf[offsetNE]) p.addPixel(offsetNE, zPixel, shades[((packed >> 19) & 0x3F)]); +if (zPixel < zbuf[offsetNW]) p.addPixel(offsetNW, zPixel, shades[((packed >> 25) & 0x3F)]); +++offsetSE; +--offsetSW; +++offsetNE; +--offsetNW; +} while (packed >= 0); +offsetSouthCenter += width; +offsetNorthCenter -= width; +} while (--nLines > 0); +}, "~A,~N,~N,~A"); +Clazz.defineMethod(c$, "renderSphereClipped", +function(sphereShape, x, y, z, diameter, shades){ +var w = this.width; +var h = this.height; +var offsetSphere = 0; +var evenSizeCorrection = 1 - (diameter & 1); +var offsetSouthCenter = this.offsetPbufBeginLine; +var offsetNorthCenter = offsetSouthCenter - evenSizeCorrection * w; +var nLines = Clazz.doubleToInt((diameter + 1) / 2); +var ySouth = y; +var yNorth = y - evenSizeCorrection; +var randu = (x << 16) + (y << 1) ^ 0x33333333; +var sh = shades; +var zb = this.zbuf; +var p = this.g3d.pixel; +var sl = this.slab; +var de = this.depth; +do { +var tSouthVisible = ySouth >= 0 && ySouth < h; +var tNorthVisible = yNorth >= 0 && yNorth < h; +var offsetSE = offsetSouthCenter; +var offsetSW = offsetSouthCenter - evenSizeCorrection; +var offsetNE = offsetNorthCenter; +var offsetNW = offsetNorthCenter - evenSizeCorrection; +var packed; +var xEast = x; +var xWest = x - evenSizeCorrection; +do { +var tWestVisible = xWest >= 0 && xWest < w; +var tEastVisible = xEast >= 0 && xEast < w; +packed = sphereShape[offsetSphere++]; +var isCore; +var zOffset = packed & 0x7F; +var zPixel; +if (z < sl) { +zPixel = z + zOffset; +isCore = (zPixel >= sl); +} else { +zPixel = z - zOffset; +isCore = (zPixel < sl); +}if (isCore) zPixel = sl; +if (zPixel >= sl && zPixel <= de) { +if (tSouthVisible) { +if (tEastVisible && zPixel < zb[offsetSE]) { +var i = (isCore ? 44 + ((randu >> 7) & 0x07) : (packed >> 7) & 0x3F); +p.addPixel(offsetSE, zPixel, sh[i]); +}if (tWestVisible && zPixel < zb[offsetSW]) { +var i = (isCore ? 44 + ((randu >> 13) & 0x07) : (packed >> 13) & 0x3F); +p.addPixel(offsetSW, zPixel, sh[i]); +}}if (tNorthVisible) { +if (tEastVisible && zPixel < zb[offsetNE]) { +var i = (isCore ? 44 + ((randu >> 19) & 0x07) : (packed >> 19) & 0x3F); +p.addPixel(offsetNE, zPixel, sh[i]); +}if (tWestVisible && zPixel < zb[offsetNW]) { +var i = (isCore ? 44 + ((randu >> 25) & 0x07) : (packed >> 25) & 0x3F); +p.addPixel(offsetNW, zPixel, sh[i]); +}}}++offsetSE; +--offsetSW; +++offsetNE; +--offsetNW; +++xEast; +--xWest; +if (isCore) randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +} while (packed >= 0); +offsetSouthCenter += w; +offsetNorthCenter -= w; +++ySouth; +--yNorth; +} while (--nLines > 0); +}, "~A,~N,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "renderQuadrant", +function(xSign, ySign, x, y, z, diameter, shades){ +var radius = Clazz.doubleToInt(diameter / 2); +var t = x + radius * xSign; +var xStatus = (x < 0 ? -1 : x < this.width ? 0 : 1) + (t < 0 ? -2 : t < this.width ? 0 : 2); +if (xStatus == -3 || xStatus == 3) return; +t = y + radius * ySign; +var yStatus = (y < 0 ? -1 : y < this.height ? 0 : 1) + (t < 0 ? -2 : t < this.height ? 0 : 2); +if (yStatus == -3 || yStatus == 3) return; +var unclipped = (this.mat == null && xStatus == 0 && yStatus == 0 && z - radius >= this.slab && z <= this.depth); +if (unclipped) this.renderQuadrantUnclipped(radius, xSign, ySign, z, shades); + else this.renderQuadrantClipped(radius, xSign, ySign, x, y, z, shades); +}, "~N,~N,~N,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "renderQuadrantUnclipped", +function(radius, xSign, ySign, z, s){ +var r2 = radius * radius; +var dDivisor = radius * 2 + 1; +var lineIncrement = (ySign < 0 ? -this.width : this.width); +var ptLine = this.offsetPbufBeginLine; +var zb = this.zbuf; +var p = this.g3d.pixel; +var indexes = this.shader.sphereShadeIndexes; +for (var i = 0, i2 = 0; i2 <= r2; i2 += i + (++i), ptLine += lineIncrement) { +var offset = ptLine; +var s2 = r2 - i2; +var z0 = z - radius; +var y8 = Clazz.doubleToInt(((i * ySign + radius) << 8) / dDivisor); +for (var j = 0, j2 = 0; j2 <= s2; j2 += j + (++j), offset += xSign) { +if (zb[offset] <= z0) continue; +var k = Clazz.doubleToInt(Math.sqrt(s2 - j2)); +z0 = z - k; +if (zb[offset] <= z0) continue; +var x8 = Clazz.doubleToInt(((j * xSign + radius) << 8) / dDivisor); +p.addPixel(offset, z0, s[indexes[((y8 << 8) + x8)]]); +} +} +}, "~N,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "renderQuadrantClipped", +function(radius, xSign, ySign, x, y, z, shades){ +var isEllipsoid = (this.mat != null); +var checkOctant = (this.selectedOctant >= 0); +var r2 = radius * radius; +var dDivisor = radius * 2 + 1; +var lineIncrement = (ySign < 0 ? -this.width : this.width); +var ptLine = this.offsetPbufBeginLine; +var randu = (x << 16) + (y << 1) ^ 0x33333333; +var y8 = 0; +var iShade = 0; +var p = this.g3d.pixel; +var z1 = 0; +var h = this.height; +var w = this.width; +var x0 = x; +var zb = this.zbuf; +var xyz = this.dxyz; +var y0 = y; +var z0 = z; +var sl = this.slab; +var de = this.depth; +var pt = this.ptTemp; +var c = this.coef; +var rt = this.zroot; +var oct = this.selectedOctant; +var s = this.shader; +var pl = this.planeShades; +var indexes = s.sphereShadeIndexes; +var ps = this.planeShade; +var m = this.mat; +for (var i = 0, i2 = 0, yC = y; i2 <= r2; i2 += i + (++i), ptLine += lineIncrement, yC += ySign) { +if (yC < 0) { +if (ySign < 0) return; +continue; +}if (yC >= h) { +if (ySign > 0) return; +continue; +}var s2 = r2 - (isEllipsoid ? 0 : i2); +if (!isEllipsoid) { +y8 = Clazz.doubleToInt(((i * ySign + radius) << 8) / dDivisor); +}randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +var xC = x0; +for (var j = 0, j2 = 0, iRoot = -1, mode = 1, offset = ptLine; j2 <= s2; j2 += j + (++j), offset += xSign, xC += xSign) { +if (xC < 0) { +if (xSign < 0) break; +continue; +}if (xC >= w) { +if (xSign > 0) break; +continue; +}var zPixel; +if (isEllipsoid) { +var b_2a = (c[4] * xC + c[5] * yC + c[8]) / c[2] / 2; +var c_a = (c[0] * xC * xC + c[1] * yC * yC + c[3] * xC * yC + c[6] * xC + c[7] * yC - 1) / c[2]; +var f = b_2a * b_2a - c_a; +if (f < 0) { +if (iRoot >= 0) { +break; +}continue; +}f = Math.sqrt(f); +rt[0] = (-b_2a - f); +rt[1] = (-b_2a + f); +iRoot = (z0 < sl ? 1 : 0); +if ((zPixel = Clazz.doubleToInt(rt[iRoot])) == 0) zPixel = z0; +mode = 2; +z1 = zPixel; +if (checkOctant) { +pt.set(xC - x0, yC - y0, zPixel - z0); +m.rotate(pt); +var thisOctant = 0; +if (pt.x < 0) thisOctant |= 1; +if (pt.y < 0) thisOctant |= 2; +if (pt.z < 0) thisOctant |= 4; +if (thisOctant == oct) { +if (ps >= 0) { +iShade = ps; +} else { +var iMin = 3; +var dz; +var zMin = 3.4028235E38; +for (var ii = 0; ii < 3; ii++) { +if ((dz = xyz[ii][2]) == 0) continue; +var ptz = z0 + (-xyz[ii][0] * (xC - x) - xyz[ii][1] * (yC - y0)) / dz; +if (ptz < zMin) { +zMin = ptz; +iMin = ii; +}} +if (iMin == 3) { +iMin = 0; +zMin = z0; +}rt[0] = zMin; +iShade = pl[iMin]; +}zPixel = Clazz.doubleToInt(rt[0]); +mode = 3; +}var isCore = (z0 < sl ? zPixel >= sl : zPixel < sl); +if (isCore) { +z1 = zPixel = sl; +mode = 0; +}}if (zPixel < sl || zPixel > de || zb[offset] <= z1) continue; +} else { +var zOffset = Clazz.doubleToInt(Math.sqrt(s2 - j2)); +zPixel = z0 + (z0 < sl ? zOffset : -zOffset); +var isCore = (z0 < sl ? zPixel >= sl : zPixel < sl); +if (isCore) { +zPixel = sl; +mode = 0; +}if (zPixel < sl || zPixel > de || zb[offset] <= zPixel) continue; +}switch (mode) { +case 0: +iShade = (44 + ((randu >> 8) & 0x07)); +randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +mode = 1; +break; +case 2: +iShade = s.getEllipsoidShade(xC, yC, rt[iRoot], radius, this.mDeriv); +break; +case 3: +p.clearPixel(offset, z1); +break; +default: +var x8 = Clazz.doubleToInt(((j * xSign + radius) << 8) / dDivisor); +iShade = indexes[(y8 << 8) + x8]; +break; +} +p.addPixel(offset, zPixel, shades[iShade]); +} +randu = ((randu + xC + yC) | 1) & 0x7FFFFFFF; +} +}, "~N,~N,~N,~N,~N,~N,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/TextRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/TextRenderer.js new file mode 100755 index 000000000000..fe9937d958de --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/TextRenderer.js @@ -0,0 +1,140 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["java.util.Hashtable"], "J.g3d.TextRenderer", ["JU.CU", "J.g3d.Graphics3D"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.height = 0; +this.ascent = 0; +this.width = 0; +this.mapWidth = 0; +this.size = 0; +this.tmap = null; +this.isInvalid = false; +Clazz.instantialize(this, arguments);}, J.g3d, "TextRenderer", null); +Clazz.makeConstructor(c$, +function(text, font3d){ +this.ascent = font3d.getAscent(); +this.height = font3d.getHeight(); +this.width = font3d.stringWidth(text); +if (this.width == 0) return; +this.mapWidth = this.width; +this.size = this.mapWidth * this.height; +}, "~S,JU.Font"); +c$.clearFontCache = Clazz.defineMethod(c$, "clearFontCache", +function(){ +if (J.g3d.TextRenderer.working) return; +J.g3d.TextRenderer.htFont3d.clear(); +J.g3d.TextRenderer.htFont3dAntialias.clear(); +}); +c$.plot = Clazz.defineMethod(c$, "plot", +function(x, y, z, argb, bgargb, text, font3d, g3d, jr, antialias){ +if (text.length == 0) return 0; +if (text.indexOf("= 0 || text.indexOf("= 0) return J.g3d.TextRenderer.plotByCharacter(x, y, z, argb, bgargb, text, font3d, g3d, jr, antialias); +var offset = font3d.getAscent(); +y -= offset; +var text3d = J.g3d.TextRenderer.getPlotText3D(x, y, g3d, text, font3d, antialias); +if (text3d.isInvalid) return text3d.width; +if (antialias) argb = J.g3d.Graphics3D.fixTextImageRGB(argb); +var textHeight = text3d.height; +var textWidth = text3d.width; +var tmap = text3d.tmap; +var g = g3d; +var width = g.width; +var height = g.height; +var zbuf = g.zbuf; +var p = g.pixel; +var tLog = g.translucencyLog; +if (jr != null || (x < 0 || x + text3d.width > width || y < 0 || y + text3d.height > height) && (jr = g3d) != null) { +for (var off = 0, i = 0; i < textHeight; i++) { +for (var j = 0; j < textWidth; j++) { +var shade = tmap[off++]; +if (shade != 0) jr.plotImagePixel(argb, x + j, y + i, z, shade, bgargb, width, height, zbuf, p, tLog); +} +} +} else { +for (var i = 0, off = 0, pbufOffset = y * width + x; i < textHeight; i++, pbufOffset += (width - textWidth)) for (var j = 0; j < textWidth; j++) p.addImagePixel(tmap[off++], tLog, pbufOffset++, z, argb, bgargb); + + +}return text3d.width; +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.g3d.Graphics3D,J.api.JmolRendererInterface,~B"); +c$.plotByCharacter = Clazz.defineMethod(c$, "plotByCharacter", +function(x, y, z, argb, bgargb, text, font3d, g3d, jmolRenderer, antialias){ +var w = 0; +var len = text.length; +var suboffset = Math.round(font3d.getHeight() * 0.25); +var supoffset = -Math.round(font3d.getHeight() * 0.3); +var argb0 = 0; +for (var i = 0; i < len; i++) { +if (text.charAt(i) == '<') { +if (i + 5 < len && text.substring(i, i + 6).equals("", i); +if (pt < 0) continue; +argb = JU.CU.getArgbFromString(text.substring(i + 7, pt).trim()); +i = pt; +continue; +}if (i + 7 < len && text.substring(i, i + 8).equals("")) { +i += 7; +argb = argb0; +continue; +}if (i + 4 < len && text.substring(i, i + 5).equals("")) { +i += 4; +y += suboffset; +continue; +}if (i + 4 < len && text.substring(i, i + 5).equals("")) { +i += 4; +y += supoffset; +continue; +}if (i + 5 < len && text.substring(i, i + 6).equals("")) { +i += 5; +y -= suboffset; +continue; +}if (i + 5 < len && text.substring(i, i + 6).equals("")) { +i += 5; +y -= supoffset; +continue; +}}var width = J.g3d.TextRenderer.plot(x + w, y, z, argb, bgargb, text.substring(i, i + 1), font3d, g3d, jmolRenderer, antialias); +w += width; +} +return w; +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.g3d.Graphics3D,J.api.JmolRendererInterface,~B"); +c$.getPlotText3D = Clazz.defineMethod(c$, "getPlotText3D", +function(x, y, g3d, text, font3d, antialias){ +J.g3d.TextRenderer.working = true; +var ht = (antialias ? J.g3d.TextRenderer.htFont3dAntialias : J.g3d.TextRenderer.htFont3d); +var htForThisFont = ht.get(font3d); +var text3d = null; +var newFont = false; +var newText = false; +if (htForThisFont != null) { +text3d = htForThisFont.get(text); +} else { +htForThisFont = new java.util.Hashtable(); +newFont = true; +}if (text3d == null) { +text3d = new J.g3d.TextRenderer(text, font3d); +newText = true; +}text3d.isInvalid = (text3d.width == 0 || x + text3d.width <= 0 || x >= g3d.width || y + text3d.height <= 0 || y >= g3d.height); +if (text3d.isInvalid) return text3d; +if (newFont) ht.put(font3d, htForThisFont); +if (newText) { +text3d.setTranslucency(text, font3d, g3d); +htForThisFont.put(text, text3d); +}J.g3d.TextRenderer.working = false; +return text3d; +}, "~N,~N,J.g3d.Graphics3D,~S,JU.Font,~B"); +Clazz.defineMethod(c$, "setTranslucency", +function(text, font3d, g3d){ +var pixels = g3d.apiPlatform.getTextPixels(text, font3d, g3d.platform.getGraphicsForTextOrImage(this.mapWidth, this.height), g3d.platform.offscreenImage, this.mapWidth, this.height, this.ascent); +if (pixels == null) return; +this.tmap = Clazz.newByteArray (this.size, 0); +for (var i = pixels.length; --i >= 0; ) { +var p = pixels[i] & 0xFF; +if (p != 0) { +this.tmap[i] = J.g3d.TextRenderer.translucency[p >> 5]; +}} +}, "~S,JU.Font,J.g3d.Graphics3D"); +c$.translucency = Clazz.newByteArray(-1, [7, 6, 5, 4, 3, 2, 1, 8]); +c$.working = false; +c$.htFont3d = new java.util.Hashtable(); +c$.htFont3dAntialias = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/TextString.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/TextString.js new file mode 100755 index 000000000000..97e13368a446 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/TextString.js @@ -0,0 +1,28 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["JU.P3i"], "J.g3d.TextString", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.text = null; +this.font = null; +this.argb = 0; +this.bgargb = 0; +Clazz.instantialize(this, arguments);}, J.g3d, "TextString", JU.P3i, java.util.Comparator); +Clazz.defineMethod(c$, "setText", +function(text, font, argb, bgargb, x, y, z){ +this.text = text; +this.font = font; +this.argb = argb; +this.bgargb = bgargb; +this.x = x; +this.y = y; +this.z = z; +}, "~S,JU.Font,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "compare", +function(a, b){ +return (a == null || b == null ? 0 : a.z > b.z ? -1 : a.z < b.z ? 1 : 0); +}, "J.g3d.TextString,J.g3d.TextString"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.asString() + " " + this.text; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/TriangleRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/g3d/TriangleRenderer.js new file mode 100755 index 000000000000..856d72a79e9c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/TriangleRenderer.js @@ -0,0 +1,244 @@ +Clazz.declarePackage("J.g3d"); +Clazz.load(["J.g3d.G3DRenderer", "$.PrecisionRenderer", "JU.Rgb16"], "J.g3d.TriangleRenderer", ["JU.GData"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g3d = null; +this.ax = null; +this.ay = null; +this.az = null; +this.aa = null; +this.bb = null; +this.axW = null; +this.azW = null; +this.axE = null; +this.azE = null; +this.rgb16sW = null; +this.rgb16sE = null; +this.rgb16sGouraud = null; +this.rgb16t1 = null; +this.rgb16t2 = null; +Clazz.instantialize(this, arguments);}, J.g3d, "TriangleRenderer", J.g3d.PrecisionRenderer, J.g3d.G3DRenderer); +Clazz.prepareFields (c$, function(){ +this.ax = Clazz.newIntArray (3, 0); +this.ay = Clazz.newIntArray (3, 0); +this.az = Clazz.newIntArray (3, 0); +this.aa = Clazz.newFloatArray (64, 0); +this.bb = Clazz.newFloatArray (64, 0); +this.axW = Clazz.newIntArray (64, 0); +this.azW = Clazz.newIntArray (64, 0); +this.axE = Clazz.newIntArray (64, 0); +this.azE = Clazz.newIntArray (64, 0); +this.rgb16t1 = new JU.Rgb16(); +this.rgb16t2 = new JU.Rgb16(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.g3d.TriangleRenderer, []); +}); +Clazz.overrideMethod(c$, "set", +function(g3d, gdata){ +try { +this.rgb16sW = new Array(64); +this.rgb16sE = new Array(64); +for (var i = 64; --i >= 0; ) { +this.rgb16sW[i] = new JU.Rgb16(); +this.rgb16sE[i] = new JU.Rgb16(); +} +this.g3d = g3d; +this.rgb16sGouraud = new Array(3); +for (var i = 3; --i >= 0; ) this.rgb16sGouraud[i] = new JU.Rgb16(); + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return this; +}, "J.api.JmolRendererInterface,JU.GData"); +Clazz.defineMethod(c$, "reallocRgb16s", +function(rgb16s, n){ +var t = new Array(n); +System.arraycopy(rgb16s, 0, t, 0, rgb16s.length); +for (var i = rgb16s.length; i < n; ++i) t[i] = new JU.Rgb16(); + +return t; +}, "~A,~N"); +Clazz.defineMethod(c$, "setGouraud", +function(rgbA, rgbB, rgbC){ +this.rgb16sGouraud[0].setInt(rgbA); +this.rgb16sGouraud[1].setInt(rgbB); +this.rgb16sGouraud[2].setInt(rgbC); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "fillTriangle", +function(screenA, screenB, screenC, useGouraud){ +this.ax[0] = screenA.x; +this.ax[1] = screenB.x; +this.ax[2] = screenC.x; +this.ay[0] = screenA.y; +this.ay[1] = screenB.y; +this.ay[2] = screenC.y; +this.az[0] = screenA.z; +this.az[1] = screenB.z; +this.az[2] = screenC.z; +if (this.az[0] <= 1 || this.az[1] <= 1 || this.az[2] <= 1) return; +var cc0 = this.g3d.clipCode3(this.ax[0], this.ay[0], this.az[0]); +var cc1 = this.g3d.clipCode3(this.ax[1], this.ay[1], this.az[1]); +var cc2 = this.g3d.clipCode3(this.ax[2], this.ay[2], this.az[2]); +var c = (cc0 | cc1 | cc2); +var isClipped = (c != 0); +if (isClipped) { +if (c == -1 || (cc0 & cc1 & cc2) != 0) { +return; +}}var iMinY = 0; +if (this.ay[1] < this.ay[iMinY]) iMinY = 1; +if (this.ay[2] < this.ay[iMinY]) iMinY = 2; +var iMidY = (iMinY + 1) % 3; +var iMaxY = (iMinY + 2) % 3; +if (this.ay[iMidY] > this.ay[iMaxY]) { +var t = iMidY; +iMidY = iMaxY; +iMaxY = t; +}var yMin = this.ay[iMinY]; +var yMid = this.ay[iMidY]; +var yMax = this.ay[iMaxY]; +var nLines = yMax - yMin + 1; +if (nLines > this.g3d.height * 3) return; +if (nLines > this.axW.length) { +var n = (nLines + 31) & -32; +this.axW = Clazz.newIntArray (n, 0); +this.azW = Clazz.newIntArray (n, 0); +this.axE = Clazz.newIntArray (n, 0); +this.azE = Clazz.newIntArray (n, 0); +this.aa = Clazz.newFloatArray (n, 0); +this.bb = Clazz.newFloatArray (n, 0); +this.rgb16sW = this.reallocRgb16s(this.rgb16sW, n); +this.rgb16sE = this.reallocRgb16s(this.rgb16sE, n); +}var gouraudW; +var gouraudE; +if (useGouraud) { +gouraudW = this.rgb16sW; +gouraudE = this.rgb16sE; +} else { +gouraudW = gouraudE = null; +}var dyMidMin = yMid - yMin; +if (dyMidMin == 0) { +if (this.ax[iMidY] < this.ax[iMinY]) { +var t = iMidY; +iMidY = iMinY; +iMinY = t; +}this.generateRaster(nLines, iMinY, iMaxY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines, iMidY, iMaxY, this.axE, this.azE, 0, gouraudE); +} else if (yMid == yMax) { +if (this.ax[iMaxY] < this.ax[iMidY]) { +var t = iMidY; +iMidY = iMaxY; +iMaxY = t; +}this.generateRaster(nLines, iMinY, iMidY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines, iMinY, iMaxY, this.axE, this.azE, 0, gouraudE); +} else { +var dxMaxMin = this.ax[iMaxY] - this.ax[iMinY]; +var roundFactor; +roundFactor = JU.GData.roundInt(Clazz.doubleToInt(nLines / 2)); +if (dxMaxMin < 0) roundFactor = -roundFactor; +var axSplit = this.ax[iMinY] + Clazz.doubleToInt((dxMaxMin * dyMidMin + roundFactor) / nLines); +if (axSplit < this.ax[iMidY]) { +this.generateRaster(nLines, iMinY, iMaxY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(dyMidMin + 1, iMinY, iMidY, this.axE, this.azE, 0, gouraudE); +this.generateRaster(nLines - dyMidMin, iMidY, iMaxY, this.axE, this.azE, dyMidMin, gouraudE); +} else { +this.generateRaster(dyMidMin + 1, iMinY, iMidY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines - dyMidMin, iMidY, iMaxY, this.axW, this.azW, dyMidMin, gouraudW); +this.generateRaster(nLines, iMinY, iMaxY, this.axE, this.azE, 0, gouraudE); +}}this.g3d.setZMargin(5); +var pass2Row = this.g3d.pass2Flag01; +var pass2Off = 1 - pass2Row; +var xW; +var i = 0; +if (yMin < 0) { +nLines += yMin; +i -= yMin; +yMin = 0; +}if (yMin + nLines > this.g3d.height) nLines = this.g3d.height - yMin; +if (useGouraud) { +if (isClipped) { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pixelCount > 0) this.g3d.plotPixelsClippedRaster(pixelCount, xW, yMin, this.azW[i], this.azE[i], this.rgb16sW[i], this.rgb16sE[i]); +} +} else { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pass2Row == 1 && pixelCount < 0) { +pixelCount = 1; +xW--; +}if (pixelCount > 0) this.g3d.plotPixelsUnclippedRaster(pixelCount, xW, yMin, this.azW[i], this.azE[i], this.rgb16sW[i], this.rgb16sE[i]); +} +}} else { +if (isClipped) { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pixelCount > 0) this.g3d.plotPixelsClippedRasterBits(pixelCount, xW, yMin, this.azW[i], this.azE[i], null, null, this.aa[i], this.bb[i]); +} +} else { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pass2Row == 1 && pixelCount < 0) { +pixelCount = 1; +xW--; +}if (pixelCount > 0) this.g3d.plotPixelsUnclippedRasterBits(pixelCount, xW, yMin, null, null, this.aa[i], this.bb[i]); +} +}}this.g3d.setZMargin(0); +}, "JU.P3i,JU.P3i,JU.P3i,~B"); +Clazz.defineMethod(c$, "generateRaster", +function(dy, iN, iS, axRaster, azRaster, iRaster, gouraud){ +var xN = this.ax[iN]; +var xS = this.ax[iS]; +var dx = xS - xN; +var xCurrent = xN; +var xIncrement; +var width; +var errorTerm; +if (dx >= 0) { +xIncrement = 1; +width = dx; +errorTerm = 0; +} else { +xIncrement = -1; +width = -dx; +errorTerm = 1 - dy; +}var xMajorIncrement; +var xMajorError; +if (width <= dy) { +xMajorIncrement = 0; +xMajorError = width; +} else { +xMajorIncrement = JU.GData.roundInt(Clazz.doubleToInt(dx / dy)); +xMajorError = width % dy; +}this.setRastAB(this.ay[iN], this.az[iN], this.ay[iS], this.az[iS]); +var a0 = this.a; +var b0 = this.b; +var isEast = (axRaster === this.axE); +for (var y = 0, zy = this.ay[iN], lastY = dy - 1, i = iRaster; y <= lastY; ++i, ++y, ++zy) { +if (i == 0 || i > iRaster) { +axRaster[i] = (y == lastY ? this.ax[iS] : xCurrent); +azRaster[i] = this.getZCurrent(a0, b0, zy); +if (isEast) { +this.setRastAB(this.axW[i], this.azW[i], axRaster[i], azRaster[i]); +this.aa[i] = this.a; +this.bb[i] = this.b; +}}xCurrent += xMajorIncrement; +errorTerm += xMajorError; +if (errorTerm > 0) { +xCurrent += xIncrement; +errorTerm -= dy; +}} +if (gouraud != null) { +var rgb16Base = this.rgb16t1; +rgb16Base.setRgb(this.rgb16sGouraud[iN]); +var rgb16Increment = this.rgb16t2; +rgb16Increment.diffDiv(this.rgb16sGouraud[iS], rgb16Base, dy); +for (var i = iRaster, iMax = iRaster + dy; i < iMax; ++i) gouraud[i].setAndIncrement(rgb16Base, rgb16Increment); + +}}, "~N,~N,~N,~A,~A,~N,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/g3d/package.html b/config/plugins/visualizations/jmol/static/j2s/J/g3d/package.html new file mode 100755 index 000000000000..dd367deda1a7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/g3d/package.html @@ -0,0 +1,61 @@ + + + + + + + +

+ Provides a software implementation of complete 3D graphics engine + for rendering molecules and associated shapes. + basic shapes. +

+

+ This package implements all graphics primitives used by Jmol. The + graphics engine does not use Java3D or OpenGL. It requires no specialized + graphics hardware. This allows Jmol and the JmolApplet to run on any + machine that has a JVM. +

+

+ It is a software implementation of a graphics z-buffer. An int[] called + pbuf (for pixel buffer) is used to hold ARGB values for pixels. A short[] + called zbuf holds the z-depth value. +

+

+ Shape primitives are provided for drawing spheres, cylinders, triangles, etc. + Shading primitives provide lighting/shading support +

+ +

Related Documentation

+ + Makes use of javax.vecmath classes. + + + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/J/geodesic/EnvelopeCalculation.js b/config/plugins/visualizations/jmol/static/j2s/J/geodesic/EnvelopeCalculation.js new file mode 100755 index 000000000000..1952b2cdd9da --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/geodesic/EnvelopeCalculation.js @@ -0,0 +1,359 @@ +Clazz.declarePackage("J.geodesic"); +Clazz.load(["J.api.JmolEnvCalc", "JU.P3", "J.atomdata.AtomData"], "J.geodesic.EnvelopeCalculation", ["JU.AU", "$.BS", "$.V3", "J.atomdata.RadiusData", "JU.BSUtil", "$.Geodesic", "$.Normix"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.geodesicMap = null; +this.mapT = null; +this.mads = null; +this.atomData = null; +this.vwr = null; +this.ac = 0; +this.maxRadius = 0; +this.modelZeroBased = false; +this.disregardNeighbors = false; +this.bsMySelected = null; +this.dotsConvexMaps = null; +this.dotsConvexMax = 0; +this.geodesicCount = 0; +this.bsSurface = null; +this.radiusP = 0; +this.diameterP = 0; +this.bsTemp = null; +this.bsIgnore = null; +this.onlySelectedDots = false; +this.isSurface = false; +this.multiModel = false; +this.currentPoints = null; +this.indexI = 0; +this.centerI = null; +this.radiusI = 0; +this.radiiIP2 = 0; +this.pointT = null; +this.centerT = null; +this.vertexTest = null; +this.neighborCount = 0; +this.neighborIndices = null; +this.neighborCenters = null; +this.neighborPlusProbeRadii2 = null; +this.neighborRadii2 = null; +Clazz.instantialize(this, arguments);}, J.geodesic, "EnvelopeCalculation", null, J.api.JmolEnvCalc); +Clazz.prepareFields (c$, function(){ +this.atomData = new J.atomdata.AtomData(); +this.pointT = new JU.P3(); +this.vertexTest = new Array(12); +{ +for (var i = 0; i < 12; i++) this.vertexTest[i] = new JU.P3(); + +}this.neighborIndices = Clazz.newIntArray (16, 0); +this.neighborCenters = new Array(16); +this.neighborPlusProbeRadii2 = Clazz.newFloatArray (16, 0); +this.neighborRadii2 = Clazz.newFloatArray (16, 0); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "set", +function(vwr, ac, mads){ +this.vwr = vwr; +this.ac = ac; +this.mads = mads; +this.geodesicCount = JU.Geodesic.getVertexCount(3); +this.geodesicMap = JU.BS.newN(this.geodesicCount); +this.mapT = JU.BS.newN(this.geodesicCount); +J.geodesic.EnvelopeCalculation.EMPTY_SET = JU.BSUtil.emptySet; +return this; +}, "J.atomdata.AtomDataServer,~N,~A"); +Clazz.defineMethod(c$, "getDotsConvexMaps", +function(){ +return this.dotsConvexMaps; +}); +Clazz.defineMethod(c$, "getDotsConvexMax", +function(){ +return this.dotsConvexMax; +}); +Clazz.defineMethod(c$, "allocDotsConvexMaps", +function(max){ +if (this.dotsConvexMax >= max) return; +this.dotsConvexMax = max; +this.dotsConvexMaps = new Array(max); +}, "~N"); +Clazz.overrideMethod(c$, "getBsSurfaceClone", +function(){ +return JU.BSUtil.copy(this.bsSurface); +}); +Clazz.defineMethod(c$, "setMads", +function(mads){ +this.mads = mads; +}, "~A"); +Clazz.defineMethod(c$, "setFromBits", +function(index, bs){ +this.geodesicMap.setBits(0, this.geodesicCount); +for (var iDot = this.geodesicCount; --iDot >= 0; ) if (!bs.get(iDot)) this.geodesicMap.clear(iDot); + +if (this.dotsConvexMaps == null) this.dotsConvexMaps = new Array(this.ac); +var map; +if (this.geodesicMap.isEmpty()) map = J.geodesic.EnvelopeCalculation.EMPTY_SET; + else map = JU.BSUtil.copy(this.geodesicMap); +if (index >= this.dotsConvexMaps.length) return; +this.dotsConvexMaps[index] = map; +this.dotsConvexMax = Math.max(this.dotsConvexMax, index); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "newSet", +function(){ +this.dotsConvexMax = 0; +this.dotsConvexMaps = null; +this.radiusP = this.diameterP = 0; +this.mads = null; +}); +Clazz.defineMethod(c$, "reCalculate", +function(bs, m){ +if (this.atomData.radiusData != null) { +this.calculate(null, this.maxRadius, bs, this.bsIgnore, this.disregardNeighbors, this.onlySelectedDots, this.isSurface, this.multiModel); +return; +}if (this.dotsConvexMaps == null || this.dotsConvexMax == 0) return; +var pt = new JU.V3(); +if (this.bsTemp == null) this.bsTemp = JU.Normix.newVertexBitSet(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (i >= this.dotsConvexMax) return; +var map = this.dotsConvexMaps[i]; +if (map == null || map.isEmpty()) continue; +var bsNew = new JU.BS(); +for (var j = map.nextSetBit(0); j >= 0; j = map.nextSetBit(j + 1)) { +pt.setT(JU.Geodesic.getVertexVector(j)); +m.rotate(pt); +bsNew.set(JU.Normix.getNormixV(pt, this.bsTemp)); +} +this.dotsConvexMaps[i] = bsNew; +} +}, "JU.BS,JU.M3"); +Clazz.overrideMethod(c$, "calculate", +function(rd, maxRadius, bsSelected, bsIgnore, disregardNeighbors, onlySelectedDots, isSurface, multiModel){ +if (rd == null) { +rd = this.atomData.radiusData; +if (rd == null) return; +} else { +this.atomData.radiusData = rd; +this.bsIgnore = bsIgnore; +this.onlySelectedDots = onlySelectedDots; +this.multiModel = multiModel; +this.isSurface = isSurface; +}if (rd.value == 3.4028235E38) rd.value = 3.0; +this.atomData.modelIndex = (multiModel ? -1 : 0); +this.modelZeroBased = !multiModel; +this.vwr.fillAtomData(this.atomData, 1 | (this.mads == null ? 2 : 0)); +this.ac = this.atomData.ac; +if (this.mads != null) for (var i = 0; i < this.ac; i++) this.atomData.atomRadius[i] = this.mads[i] / 1000; + +this.bsMySelected = (onlySelectedDots && bsSelected != null ? JU.BSUtil.copy(bsSelected) : bsIgnore != null ? JU.BSUtil.setAll(this.ac) : null); +JU.BSUtil.andNot(this.bsMySelected, bsIgnore); +this.disregardNeighbors = disregardNeighbors; +this.maxRadius = maxRadius; +this.bsSurface = new JU.BS(); +var isAll = (bsSelected == null); +var iter = this.vwr.getSelectedAtomIterator(this.bsMySelected, false, this.modelZeroBased, false); +this.checkNewDotsArray(); +var i0 = (isAll ? this.ac - 1 : bsSelected.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) if (bsIgnore == null || !bsIgnore.get(i)) { +this.setAtomI(i); +this.getNeighbors(iter); +this.calcConvexMap(isSurface); +} +iter.release(); +this.currentPoints = null; +this.setDotsConvexMax(); +}, "J.atomdata.RadiusData,~N,JU.BS,JU.BS,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "getRadius", +function(atomIndex){ +return this.atomData.atomRadius[atomIndex]; +}, "~N"); +Clazz.overrideMethod(c$, "getPoints", +function(){ +if (this.dotsConvexMaps == null) { +this.calculate( new J.atomdata.RadiusData(null, 3.0, J.atomdata.RadiusData.EnumType.ABSOLUTE, null), 3.4028235E38, this.bsMySelected, null, false, false, false, false); +}if (this.currentPoints != null) return this.currentPoints; +var nPoints = 0; +var dotCount = 42; +for (var i = this.dotsConvexMax; --i >= 0; ) if (this.dotsConvexMaps[i] != null) nPoints += this.dotsConvexMaps[i].cardinalityN(dotCount); + +var points = new Array(nPoints); +if (nPoints == 0) return points; +nPoints = 0; +for (var i = this.dotsConvexMax; --i >= 0; ) if (this.dotsConvexMaps[i] != null) { +var iDot = this.dotsConvexMaps[i].size(); +if (iDot > dotCount) iDot = dotCount; +while (--iDot >= 0) if (this.dotsConvexMaps[i].get(iDot)) { +var pt = new JU.P3(); +pt.scaleAdd2(this.atomData.atomRadius[i], JU.Geodesic.getVertexVector(iDot), this.atomData.xyz[i]); +points[nPoints++] = pt; +} +} +this.currentPoints = points; +return points; +}); +Clazz.defineMethod(c$, "setDotsConvexMax", +function(){ +if (this.dotsConvexMaps == null) this.dotsConvexMax = 0; + else { +var i; +for (i = this.ac; --i >= 0 && this.dotsConvexMaps[i] == null; ) { +} +this.dotsConvexMax = i + 1; +}}); +Clazz.defineMethod(c$, "getAppropriateRadius", +function(atomIndex){ +return (this.mads != null ? (atomIndex >= this.mads.length ? 0 : this.mads[atomIndex] / 1000) : this.atomData.atomRadius[atomIndex]); +}, "~N"); +Clazz.defineMethod(c$, "setAtomI", +function(indexI){ +this.indexI = indexI; +this.centerI = this.atomData.xyz[indexI]; +this.radiusI = this.atomData.atomRadius[indexI]; +this.radiiIP2 = this.radiusI + this.radiusP; +this.radiiIP2 *= this.radiiIP2; +}, "~N"); +Clazz.defineMethod(c$, "calcConvexMap", +function(isSurface){ +this.calcConvexBits(); +var map; +if (this.geodesicMap.isEmpty()) map = J.geodesic.EnvelopeCalculation.EMPTY_SET; + else { +this.bsSurface.set(this.indexI); +if (isSurface) { +this.addIncompleteFaces(this.geodesicMap); +this.addIncompleteFaces(this.geodesicMap); +}map = JU.BSUtil.copy(this.geodesicMap); +}this.dotsConvexMaps[this.indexI] = map; +}, "~B"); +Clazz.defineMethod(c$, "addIncompleteFaces", +function(points){ +this.mapT.clearAll(); +var faces = JU.Geodesic.getFaceVertexes(3); +var len = faces.length; +var maxPt = -1; +for (var f = 0; f < len; ) { +var p1 = faces[f++]; +var p2 = faces[f++]; +var p3 = faces[f++]; +var ok1 = points.get(p1); +var ok2 = points.get(p2); +var ok3 = points.get(p3); +if (!(ok1 || ok2 || ok3) || ok1 && ok2 && ok3) continue; +if (!ok1) { +this.mapT.set(p1); +if (maxPt < p1) maxPt = p1; +}if (!ok2) { +this.mapT.set(p2); +if (maxPt < p2) maxPt = p2; +}if (!ok3) { +this.mapT.set(p3); +if (maxPt < p3) maxPt = p3; +}} +for (var i = 0; i <= maxPt; i++) { +if (this.mapT.get(i)) points.set(i); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "calcConvexBits", +function(){ +this.geodesicMap.setBits(0, this.geodesicCount); +var combinedRadii = this.radiusI + this.radiusP; +if (this.neighborCount == 0) return; +var faceTest; +var p1; +var p2; +var p3; +var faces = JU.Geodesic.getFaceVertexes(3); +var p4 = J.geodesic.EnvelopeCalculation.power4[2]; +var ok1; +var ok2; +var ok3; +this.mapT.clearAll(); +for (var i = 0; i < 12; i++) { +this.vertexTest[i].scaleAdd2(combinedRadii, JU.Geodesic.getVertexVector(i), this.centerI); +} +for (var f = 0; f < 20; f++) { +faceTest = 0; +p1 = faces[3 * p4 * (4 * f + 0)]; +p2 = faces[3 * p4 * (4 * f + 1)]; +p3 = faces[3 * p4 * (4 * f + 2)]; +for (var j = 0; j < this.neighborCount; j++) { +var maxDist = this.neighborPlusProbeRadii2[j]; +this.centerT = this.neighborCenters[j]; +ok1 = this.vertexTest[p1].distanceSquared(this.centerT) >= maxDist; +ok2 = this.vertexTest[p2].distanceSquared(this.centerT) >= maxDist; +ok3 = this.vertexTest[p3].distanceSquared(this.centerT) >= maxDist; +if (!ok1) this.geodesicMap.clear(p1); +if (!ok2) this.geodesicMap.clear(p2); +if (!ok3) this.geodesicMap.clear(p3); +if (!ok1 && !ok2 && !ok3) { +faceTest = -1; +break; +}} +var kFirst = f * 12 * p4; +var kLast = kFirst + 12 * p4; +for (var k = kFirst; k < kLast; k++) { +var vect = faces[k]; +if (this.mapT.get(vect) || !this.geodesicMap.get(vect)) continue; +switch (faceTest) { +case -1: +this.geodesicMap.clear(vect); +break; +case 0: +for (var j = 0; j < this.neighborCount; j++) { +var maxDist = this.neighborPlusProbeRadii2[j]; +this.centerT = this.neighborCenters[j]; +this.pointT.scaleAdd2(combinedRadii, JU.Geodesic.getVertexVector(vect), this.centerI); +if (this.pointT.distanceSquared(this.centerT) < maxDist) this.geodesicMap.clear(vect); +} +break; +case 1: +} +this.mapT.set(vect); +} +} +}); +Clazz.defineMethod(c$, "checkNewDotsArray", +function(){ +if (this.dotsConvexMaps == null) { +this.dotsConvexMaps = new Array(this.ac); +} else if (this.dotsConvexMaps.length != this.ac) { +var a = new Array(this.ac); +for (var i = 0; i < this.ac && i < this.dotsConvexMaps.length; i++) a[i] = this.dotsConvexMaps[i]; + +this.dotsConvexMaps = a; +}}); +Clazz.defineMethod(c$, "getNeighbors", +function(iter){ +this.neighborCount = 0; +if (this.disregardNeighbors) return null; +this.vwr.setIteratorForAtom(iter, this.indexI, this.radiusI + this.diameterP + this.maxRadius); +while (iter.hasNext()) { +var indexN = iter.next(); +var neighborRadius = this.atomData.atomRadius[indexN]; +if (this.centerI.distance(this.atomData.xyz[indexN]) > this.radiusI + this.radiusP + this.radiusP + neighborRadius) continue; +if (this.neighborCount == this.neighborIndices.length) { +this.neighborIndices = JU.AU.doubleLengthI(this.neighborIndices); +this.neighborCenters = JU.AU.doubleLength(this.neighborCenters); +this.neighborPlusProbeRadii2 = JU.AU.doubleLengthF(this.neighborPlusProbeRadii2); +this.neighborRadii2 = JU.AU.doubleLengthF(this.neighborRadii2); +}this.neighborCenters[this.neighborCount] = this.atomData.xyz[indexN]; +this.neighborIndices[this.neighborCount] = indexN; +var r = neighborRadius + this.radiusP; +this.neighborPlusProbeRadii2[this.neighborCount] = r * r; +this.neighborRadii2[this.neighborCount] = neighborRadius * neighborRadius; +++this.neighborCount; +} +return iter; +}, "J.api.AtomIndexIterator"); +Clazz.defineMethod(c$, "deleteAtoms", +function(firstAtomDeleted, nAtomsDeleted){ +this.dotsConvexMaps = JU.AU.deleteElements(this.dotsConvexMaps, firstAtomDeleted, nAtomsDeleted); +this.dotsConvexMax = this.dotsConvexMaps.length; +if (this.mads != null) this.mads = JU.AU.deleteElements(this.mads, firstAtomDeleted, nAtomsDeleted); +this.atomData.atomRadius = JU.AU.deleteElements(this.atomData.atomRadius, firstAtomDeleted, nAtomsDeleted); +this.atomData.xyz = JU.AU.deleteElements(this.atomData.xyz, firstAtomDeleted, nAtomsDeleted); +this.atomData.ac -= nAtomsDeleted; +this.ac = this.atomData.ac; +}, "~N,~N"); +c$.EMPTY_SET = null; +c$.power4 = Clazz.newIntArray(-1, [1, 4, 16, 64, 256]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/i18n/GT.js b/config/plugins/visualizations/jmol/static/j2s/J/i18n/GT.js new file mode 100755 index 000000000000..f5a47063edd8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/i18n/GT.js @@ -0,0 +1,186 @@ +Clazz.declarePackage("J.i18n"); +Clazz.load(["J.api.Translator", "java.text.MessageFormat", "java.util.Hashtable", "JU.PT", "J.i18n.Language", "$.Resource"], "J.i18n.GT", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.resources = null; +this.resourceCount = 0; +this.doTranslate = true; +this.language = null; +Clazz.instantialize(this, arguments);}, J.i18n, "GT", null, J.api.Translator); +/*LV!1824 unnec constructor*/Clazz.makeConstructor(c$, +function(vr, langCode){ +{ +}this.resources = null; +this.resourceCount = 0; +J.i18n.GT.$getTextWrapper = this; +if (langCode != null && langCode.length == 0) langCode = "none"; +if (langCode != null) this.language = langCode; +if ("none".equals(this.language)) this.language = null; +if (this.language == null) this.language = J.i18n.Resource.getLanguage(); +if (this.language == null) this.language = "en"; +var la = this.language; +var la_co = null; +var la_co_va = null; +var i = this.language.indexOf("_"); +if (i >= 0) { +la = la.substring(0, i); +la_co = this.language; +if ((i = la_co.indexOf("_", ++i)) >= 0) { +la_co = la_co.substring(0, i); +la_co_va = this.language; +}}if ((this.language = this.getSupported(la_co_va)) == null && (this.language = this.getSupported(la_co)) == null && (this.language = this.getSupported(la)) == null) { +this.language = "en"; +System.out.println(this.language + " not supported -- using en"); +return; +}la_co_va = null; +la_co = null; +switch (this.language.length) { +default: +la_co_va = this.language; +la_co = this.language.substring(0, 5); +la = this.language.substring(0, 2); +break; +case 5: +la_co = this.language; +la = this.language.substring(0, 2); +break; +case 2: +la = this.language; +break; +} +la_co = this.getSupported(la_co); +la = this.getSupported(la); +if (la === la_co || "en_US".equals(la)) la = null; +if (la_co === la_co_va) la_co = null; +if ("en_US".equals(la_co)) return; +if (J.i18n.GT.allowDebug && JU.Logger.debugging) JU.Logger.debug("Instantiating gettext wrapper for " + this.language + " using files for language:" + la + " country:" + la_co + " variant:" + la_co_va); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", la_co_va, null, null); +this.addBundles(vr, "JmolApplet", la_co_va, null, null); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", null, la_co, null); +this.addBundles(vr, "JmolApplet", null, la_co, null); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", null, null, la); +this.addBundles(vr, "JmolApplet", null, null, la); +}, "JV.Viewer,~S"); +Clazz.overrideMethod(c$, "translate", +function(s){ +return J.i18n.GT.$(s); +}, "~S"); +c$.getLanguageList = Clazz.defineMethod(c$, "getLanguageList", +function(gt){ +if (J.i18n.GT.languageList == null) { +if (gt == null) gt = J.i18n.GT.getTextWrapper(); +gt.createLanguageList(); +}return J.i18n.GT.languageList; +}, "J.i18n.GT"); +c$.getLanguage = Clazz.defineMethod(c$, "getLanguage", +function(){ +return J.i18n.GT.getTextWrapper().language; +}); +c$.ignoreApplicationBundle = Clazz.defineMethod(c$, "ignoreApplicationBundle", +function(){ +J.i18n.GT.$ignoreApplicationBundle = true; +}); +c$.setDoTranslate = Clazz.defineMethod(c$, "setDoTranslate", +function(TF){ +var b = J.i18n.GT.getDoTranslate(); +J.i18n.GT.getTextWrapper().doTranslate = TF; +return b; +}, "~B"); +c$.getDoTranslate = Clazz.defineMethod(c$, "getDoTranslate", +function(){ +return J.i18n.GT.getTextWrapper().doTranslate; +}); +c$.$ = Clazz.defineMethod(c$, "$", +function(string){ +return J.i18n.GT.getTextWrapper().getString(string); +}, "~S"); +c$.o = Clazz.defineMethod(c$, "o", +function(s, o){ +if (Clazz.instanceOf(o,Array)) { +if ((o).length != 1) return java.text.MessageFormat.format(s, o); +o = (o)[0]; +}return JU.PT.rep(s, "{0}", o.toString()); +}, "~S,~O"); +c$.i = Clazz.defineMethod(c$, "i", +function(s, n){ +return JU.PT.rep(s, "{0}", "" + n); +}, "~S,~N"); +c$.escapeHTML = Clazz.defineMethod(c$, "escapeHTML", +function(msg){ +var ch; +for (var i = msg.length; --i >= 0; ) if ((ch = msg.charAt(i)).charCodeAt(0) > 0x7F) { +msg = msg.substring(0, i) + "&#" + ((ch).charCodeAt(0)) + ";" + msg.substring(i + 1); +} +return msg; +}, "~S"); +c$.getTextWrapper = Clazz.defineMethod(c$, "getTextWrapper", +function(){ +return (J.i18n.GT.$getTextWrapper == null ? J.i18n.GT.$getTextWrapper = new J.i18n.GT(null, null) : J.i18n.GT.$getTextWrapper); +}); +Clazz.defineMethod(c$, "createLanguageList", +function(){ +var wasTranslating = this.doTranslate; +this.doTranslate = false; +J.i18n.GT.languageList = J.i18n.Language.getLanguageList(); +this.doTranslate = wasTranslating; +}); +Clazz.defineMethod(c$, "getSupported", +function(code){ +if (code == null) return null; +var s = J.i18n.GT.htLanguages.get(code); +if (s != null) return (s.length == 0 ? null : s); +s = J.i18n.Language.getSupported(J.i18n.GT.getLanguageList(this), code); +J.i18n.GT.htLanguages.put(code, (s == null ? "" : s)); +return s; +}, "~S"); +Clazz.defineMethod(c$, "addBundles", +function(vwr, type, la_co_va, la_co, la){ +try { +var className = "J.translation." + type + "."; +if (la_co_va != null) this.addBundle(vwr, className, la_co_va); +if (la_co != null) this.addBundle(vwr, className, la_co); +if (la != null) this.addBundle(vwr, className, la); +} catch (exception) { +if (Clazz.exceptionOf(exception, Exception)){ +if (J.i18n.GT.allowDebug) JU.Logger.errorEx("Some exception occurred!", exception); +this.resources = null; +this.resourceCount = 0; +} else { +throw exception; +} +} +}, "JV.Viewer,~S,~S,~S,~S"); +Clazz.defineMethod(c$, "addBundle", +function(vwr, className, name){ +var resource = J.i18n.Resource.getResource(vwr, className, name); +if (resource != null) { +if (this.resources == null) { +this.resources = new Array(8); +this.resourceCount = 0; +}this.resources[this.resourceCount] = resource; +this.resourceCount++; +if (J.i18n.GT.allowDebug) JU.Logger.debug("GT adding " + className); +}}, "JV.Viewer,~S,~S"); +Clazz.defineMethod(c$, "getString", +function(s){ +var trans = null; +if (this.doTranslate) { +for (var bundle = 0; bundle < this.resourceCount; bundle++) { +trans = this.resources[bundle].getString(s); +if (trans != null) { +s = trans; +break; +}} +if (this.resourceCount > 0 && trans == null && J.i18n.GT.allowDebug && JU.Logger.debugging) JU.Logger.debug("No trans, using default: " + s); +}if (trans == null) { +if (s.startsWith("[")) s = s.substring(s.indexOf("]") + 1); + else if (s.endsWith("]")) s = s.substring(0, s.indexOf("[")); +}return s; +}, "~S"); +c$.$ignoreApplicationBundle = false; +c$.$getTextWrapper = null; +c$.languageList = null; +c$.allowDebug = false; +c$.vwr = null; +c$.htLanguages = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/i18n/Language.js b/config/plugins/visualizations/jmol/static/j2s/J/i18n/Language.js new file mode 100755 index 000000000000..45640dcbe94c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/i18n/Language.js @@ -0,0 +1,29 @@ +Clazz.declarePackage("J.i18n"); +Clazz.load(null, "J.i18n.Language", ["J.i18n.GT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.code = null; +this.language = null; +this.nativeLanguage = null; +this.display = false; +Clazz.instantialize(this, arguments);}, J.i18n, "Language", null); +Clazz.makeConstructor(c$, +function(code, language, nativeLanguage, display){ +this.code = code; +this.language = language; +this.nativeLanguage = nativeLanguage; +this.display = display; +}, "~S,~S,~S,~B"); +c$.getLanguageList = Clazz.defineMethod(c$, "getLanguageList", +function(){ +return Clazz.newArray(-1, [ new J.i18n.Language("ar", J.i18n.GT.$("Arabic"), "العربية", false), new J.i18n.Language("ast", J.i18n.GT.$("Asturian"), "Asturian", false), new J.i18n.Language("az", J.i18n.GT.$("Azerbaijani"), "azÉ™rbaycan dili", false), new J.i18n.Language("bs", J.i18n.GT.$("Bosnian"), "bosanski jezik", false), new J.i18n.Language("ca", J.i18n.GT.$("Catalan"), "Català", true), new J.i18n.Language("cs", J.i18n.GT.$("Czech"), "ÄŒeÅ¡tina", true), new J.i18n.Language("da", J.i18n.GT.$("Danish"), "Dansk", true), new J.i18n.Language("de", J.i18n.GT.$("German"), "Deutsch", true), new J.i18n.Language("el", J.i18n.GT.$("Greek"), "Ελληνικά", false), new J.i18n.Language("en_AU", J.i18n.GT.$("Australian English"), "Australian English", false), new J.i18n.Language("en_GB", J.i18n.GT.$("British English"), "British English", true), new J.i18n.Language("en_US", J.i18n.GT.$("American English"), "American English", true), new J.i18n.Language("es", J.i18n.GT.$("Spanish"), "Español", true), new J.i18n.Language("et", J.i18n.GT.$("Estonian"), "Eesti", false), new J.i18n.Language("eu", J.i18n.GT.$("Basque"), "Euskara", true), new J.i18n.Language("fi", J.i18n.GT.$("Finnish"), "Suomi", true), new J.i18n.Language("fo", J.i18n.GT.$("Faroese"), "Føroyskt", false), new J.i18n.Language("fr", J.i18n.GT.$("French"), "Français", true), new J.i18n.Language("fy", J.i18n.GT.$("Frisian"), "Frysk", false), new J.i18n.Language("gl", J.i18n.GT.$("Galician"), "Galego", false), new J.i18n.Language("hr", J.i18n.GT.$("Croatian"), "Hrvatski", false), new J.i18n.Language("hu", J.i18n.GT.$("Hungarian"), "Magyar", true), new J.i18n.Language("hy", J.i18n.GT.$("Armenian"), "Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶", false), new J.i18n.Language("id", J.i18n.GT.$("Indonesian"), "Indonesia", true), new J.i18n.Language("it", J.i18n.GT.$("Italian"), "Italiano", true), new J.i18n.Language("ja", J.i18n.GT.$("Japanese"), "日本語", true), new J.i18n.Language("jv", J.i18n.GT.$("Javanese"), "Basa Jawa", false), new J.i18n.Language("ko", J.i18n.GT.$("Korean"), "한국어", true), new J.i18n.Language("ms", J.i18n.GT.$("Malay"), "Bahasa Melayu", true), new J.i18n.Language("nb", J.i18n.GT.$("Norwegian Bokmal"), "Norsk BokmÃ¥l", false), new J.i18n.Language("nl", J.i18n.GT.$("Dutch"), "Nederlands", true), new J.i18n.Language("oc", J.i18n.GT.$("Occitan"), "Occitan", false), new J.i18n.Language("pl", J.i18n.GT.$("Polish"), "Polski", false), new J.i18n.Language("pt", J.i18n.GT.$("Portuguese"), "Português", false), new J.i18n.Language("pt_BR", J.i18n.GT.$("Brazilian Portuguese"), "Português brasileiro", true), new J.i18n.Language("ru", J.i18n.GT.$("Russian"), "РуÑÑкий", true), new J.i18n.Language("sl", J.i18n.GT.$("Slovenian"), "SlovenÅ¡Äina", false), new J.i18n.Language("sr", J.i18n.GT.$("Serbian"), "ÑрпÑки језик", false), new J.i18n.Language("sv", J.i18n.GT.$("Swedish"), "Svenska", true), new J.i18n.Language("ta", J.i18n.GT.$("Tamil"), "தமிழà¯", false), new J.i18n.Language("te", J.i18n.GT.$("Telugu"), "తెలà±à°—à±", false), new J.i18n.Language("tr", J.i18n.GT.$("Turkish"), "Türkçe", true), new J.i18n.Language("ug", J.i18n.GT.$("Uyghur"), "UyÆ£urqÉ™", false), new J.i18n.Language("uk", J.i18n.GT.$("Ukrainian"), "УкраїнÑька", true), new J.i18n.Language("uz", J.i18n.GT.$("Uzbek"), "O'zbek", false), new J.i18n.Language("zh_CN", J.i18n.GT.$("Simplified Chinese"), "简体中文", true), new J.i18n.Language("zh_TW", J.i18n.GT.$("Traditional Chinese"), "ç¹é«”中文", true)]); +}); +c$.getSupported = Clazz.defineMethod(c$, "getSupported", +function(list, code){ +for (var i = list.length; --i >= 0; ) if (list[i].code.equalsIgnoreCase(code)) return list[i].code; + +for (var i = list.length; --i >= 0; ) if (list[i].code.startsWith(code)) return list[i].code; + +return null; +}, "~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/i18n/Resource.js b/config/plugins/visualizations/jmol/static/j2s/J/i18n/Resource.js new file mode 100755 index 000000000000..46bcdb59f091 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/i18n/Resource.js @@ -0,0 +1,87 @@ +Clazz.declarePackage("J.i18n"); +Clazz.load(null, "J.i18n.Resource", ["java.util.Hashtable", "JU.PT", "$.Rdr", "J.translation.PO", "JU.Logger", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.resource = null; +this.resourceMap = null; +Clazz.instantialize(this, arguments);}, J.i18n, "Resource", null); +Clazz.makeConstructor(c$, +function(resource, className){ +if (className == null) this.resourceMap = resource; + else this.resource = resource; +}, "~O,~S"); +c$.getResource = Clazz.defineMethod(c$, "getResource", +function(vwr, className, name){ +try { +var br = JV.FileManager.getBufferedReaderForResource(vwr, new J.translation.PO(), "J/translation/", (className.indexOf("Applet") >= 0 ? "JmolApplet/" : "Jmol/") + name + ".po"); +var data = new Array(1); +JU.Rdr.readAllAsString(br, 2147483647, false, data, 0); +var poData = data[0]; +return J.i18n.Resource.getResourceFromPO(poData); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +return null; +} else { +throw e; +} +} +}, "JV.Viewer,~S,~S"); +Clazz.defineMethod(c$, "getString", +function(string){ +try { +return (this.resource == null ? this.resourceMap.get(string) : this.resource.getString(string)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +c$.getLanguage = Clazz.defineMethod(c$, "getLanguage", +function(){ +var language = null; +{ +language = Jmol.featureDetection.getDefaultLanguage().replace(/-/g,'_'); +}return language; +}); +c$.getResourceFromPO = Clazz.defineMethod(c$, "getResourceFromPO", +function(data){ +if (data == null || data.length == 0) return null; +var map = new java.util.Hashtable(); +try { +var lines = JU.PT.split(data, "\n"); +var mode = 0; +var msgstr = ""; +var msgid = ""; +for (var i = 0; i < lines.length; i++) { +var line = lines[i]; +if (line.length <= 2) { +if (mode == 2 && msgstr.length != 0 && msgid.length != 0) map.put(msgid, msgstr); +mode = 0; +} else if (line.indexOf("msgid") == 0) { +mode = 1; +msgid = J.i18n.Resource.fix(line); +} else if (line.indexOf("msgstr") == 0) { +mode = 2; +msgstr = J.i18n.Resource.fix(line); +} else if (mode == 1) { +msgid += J.i18n.Resource.fix(line); +} else if (mode == 2) { +msgstr += J.i18n.Resource.fix(line); +}} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +JU.Logger.info(map.size() + " translations loaded"); +return (map.size() == 0 ? null : new J.i18n.Resource(map, null)); +}, "~S"); +c$.fix = Clazz.defineMethod(c$, "fix", +function(line){ +if (line.indexOf("\\\"") >= 0) line = JU.PT.rep(line, "\\\"", "\""); +return JU.PT.rep(line.substring(line.indexOf("\"") + 1, line.lastIndexOf("\"")), "\\n", "\n"); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/image/AviCreator.js b/config/plugins/visualizations/jmol/static/j2s/J/image/AviCreator.js new file mode 100755 index 000000000000..d05c362326b0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/image/AviCreator.js @@ -0,0 +1,11 @@ +Clazz.declarePackage("J.image"); +Clazz.load(["J.api.JmolMovieCreatorInterface"], "J.image.AviCreator", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.errorMsg = null; +Clazz.instantialize(this, arguments);}, J.image, "AviCreator", null, J.api.JmolMovieCreatorInterface); +Clazz.overrideMethod(c$, "createMovie", +function(vwr, files, width, height, fps, fileName){ +return this.errorMsg; +}, "JV.Viewer,~A,~N,~N,~N,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/inchi/InChIJS.js b/config/plugins/visualizations/jmol/static/j2s/J/inchi/InChIJS.js new file mode 100755 index 000000000000..7e54bf549f8f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/inchi/InChIJS.js @@ -0,0 +1,52 @@ +Clazz.declarePackage("J.inchi"); +Clazz.load(["J.api.JmolInChI"], "J.inchi.InChIJS", ["JU.PT"], function(){ +var c$ = Clazz.declareType(J.inchi, "InChIJS", null, J.api.JmolInChI); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "getInchi", +function(vwr, atoms, molData, options){ +if (atoms == null ? molData == null : atoms.isEmpty()) return ""; +var ret = ""; +try { +if (options == null) options = ""; +options = JU.PT.rep(JU.PT.rep(options.$replace('-', ' '), " ", " ").trim(), " ", " -").toLowerCase(); +if (options.length > 0) options = "-" + options; +if (molData == null) molData = vwr.getModelExtract(atoms, false, false, "MOL"); +if ((typeof(molData)=='string') && (molData).startsWith("InChI=")) { +{ +ret = (Jmol.inchiToInchiKey ? Jmol.inchiToInchiKey(molData) : ""); +}return ret; +}var haveKey = (options.indexOf("key") >= 0); +if (haveKey) { +options = options.$replace("inchikey", "key"); +}if (options.indexOf("fixedh?") >= 0) { +var fxd = this.getInchi(vwr, atoms, molData, options.$replace('?', ' ')); +options = JU.PT.rep(options, "-fixedh?", ""); +if (haveKey) options = JU.PT.rep(options, "-key", ""); +var inchi = this.getInchi(vwr, atoms, molData, options); +if (fxd != null && fxd.length > inchi.length) inchi = fxd; +return (haveKey ? this.getInchi(vwr, atoms, inchi, "-key") : inchi); +}{ +ret = (Jmol.molfileToInChI ? Jmol.molfileToInChI(molData, +options) : ""); +}} catch (e) { +{ +e = (e.getMessage$ ? e.getMessage$() : e); +}System.err.println("InChIJS exception: " + e); +} +return ret; +}, "JV.Viewer,JU.BS,~O,~S"); +{ +var wasmPath = "/_WASM"; +var es6Path = "/_ES6"; +try { +{ +var j2sPath = Jmol._applets.master._j2sFullPath; +// +Jmol.inchiPath = j2sPath + wasmPath; +// +var importPath = j2sPath + es6Path; +// +import(importPath + "/molfile-to-inchi.js"); +}} catch (t) { +} +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/io/DOMReader.js b/config/plugins/visualizations/jmol/static/j2s/J/io/DOMReader.js new file mode 100755 index 000000000000..0a97d816a72a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/io/DOMReader.js @@ -0,0 +1,34 @@ +Clazz.declarePackage("J.io"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.fm = null; +this.vwr = null; +this.aDOMNode = null; +this.atomSetCollection = null; +this.htParams = null; +Clazz.instantialize(this, arguments);}, J.io, "DOMReader", null); +Clazz.prepareFields (c$, function(){ +this.aDOMNode = new Array(1); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "set", +function(fileManager, vwr, DOMNode, htParams){ +this.fm = fileManager; +this.vwr = vwr; +this.aDOMNode[0] = DOMNode; +this.htParams = htParams; +}, "JV.FileManager,JV.Viewer,~O,java.util.Map"); +Clazz.defineMethod(c$, "run", +function(){ +var info = null; +{ +}if (info != null) this.htParams.put("nameSpaceInfo", info); +this.vwr.zap(false, true, false); +this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollectionFromDOM(this.aDOMNode, this.htParams); +if ((typeof(this.atomSetCollection)=='string')) return; +this.fm.setFileInfo( Clazz.newArray(-1, ["JSNode"])); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/io/FileReader.js b/config/plugins/visualizations/jmol/static/j2s/J/io/FileReader.js new file mode 100755 index 000000000000..455184498917 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/io/FileReader.js @@ -0,0 +1,92 @@ +Clazz.declarePackage("J.io"); +Clazz.load(null, "J.io.FileReader", ["java.io.BufferedReader", "JU.AU", "$.PT", "$.Rdr", "J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.fileNameIn = null; +this.fullPathNameIn = null; +this.nameAsGivenIn = null; +this.fileTypeIn = null; +this.atomSetCollection = null; +this.readerOrDocument = null; +this.htParams = null; +this.isAppend = false; +this.bytesOrStream = null; +Clazz.instantialize(this, arguments);}, J.io, "FileReader", null); +Clazz.makeConstructor(c$, +function(vwr, fileName, fullPathName, nameAsGiven, type, reader, htParams, isAppend){ +this.vwr = vwr; +this.fileNameIn = (fileName == null ? fullPathName : fileName); +this.fullPathNameIn = (fullPathName == null ? this.fileNameIn : fullPathName); +this.nameAsGivenIn = (nameAsGiven == null ? this.fileNameIn : nameAsGiven); +this.fileTypeIn = type; +if (reader != null) { +if (JU.AU.isAB(reader) || Clazz.instanceOf(reader,"java.io.BufferedInputStream")) { +this.bytesOrStream = reader; +reader = null; +} else if (Clazz.instanceOf(reader,"java.io.Reader") && !(Clazz.instanceOf(reader,"java.io.BufferedReader"))) { +reader = new java.io.BufferedReader(reader); +}}this.readerOrDocument = reader; +this.htParams = htParams; +this.isAppend = isAppend; +}, "JV.Viewer,~S,~S,~S,~S,~O,java.util.Map,~B"); +Clazz.defineMethod(c$, "run", +function(){ +if (!this.isAppend && this.vwr.displayLoadErrors) this.vwr.zap(false, true, false); +var errorMessage = null; +var t = null; +if (this.fullPathNameIn.contains("#_DOCACHE_")) this.readerOrDocument = J.io.FileReader.getChangeableReader(this.vwr, this.nameAsGivenIn, this.fullPathNameIn); +if (this.readerOrDocument == null) { +t = this.vwr.fm.getUnzippedReaderOrStreamFromName(this.fullPathNameIn, this.bytesOrStream, true, false, false, true, this.htParams); +if (t == null || (typeof(t)=='string')) { +errorMessage = (t == null ? "error opening:" + this.nameAsGivenIn : t); +if (!errorMessage.startsWith("NOTE:")) JU.Logger.error("file ERROR: " + this.fullPathNameIn + "\n" + errorMessage); +this.atomSetCollection = errorMessage; +return; +}if (Clazz.instanceOf(t,"java.io.BufferedReader")) { +this.readerOrDocument = t; +} else if (Clazz.instanceOf(t,"javajs.api.ZInputStream")) { +var name = this.fullPathNameIn; +var subFileList = null; +name = name.$replace('\\', '/'); +if (name.indexOf("|") >= 0 && !name.endsWith(".zip")) { +subFileList = JU.PT.split(name, "|"); +name = subFileList[0]; +}if (subFileList != null) this.htParams.put("subFileList", subFileList); +var zis = t; +var zipDirectory = this.vwr.fm.getZipDirectory(name, true, true); +this.atomSetCollection = t = this.vwr.fm.getJzu().getAtomSetCollectionOrBufferedReaderFromZip(this.vwr, zis, name, zipDirectory, this.htParams, 1, false); +try { +zis.close(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}if (Clazz.instanceOf(t,"java.io.BufferedInputStream")) this.readerOrDocument = (J.api.Interface.getInterface("JU.BinaryDocument", this.vwr, "file")).setStream(t, !this.htParams.containsKey("isLittleEndian")); +if (this.readerOrDocument != null) { +this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollectionReader(this.fullPathNameIn, this.fileTypeIn, this.readerOrDocument, this.htParams); +if (!((typeof(this.atomSetCollection)=='string'))) this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollection(this.atomSetCollection); +try { +if (Clazz.instanceOf(this.readerOrDocument,"java.io.BufferedReader")) (this.readerOrDocument).close(); + else if (Clazz.instanceOf(this.readerOrDocument,"javajs.api.GenericBinaryDocument")) (this.readerOrDocument).close(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}if ((typeof(this.atomSetCollection)=='string')) return; +if (!this.isAppend && !this.vwr.displayLoadErrors) this.vwr.zap(false, true, false); +this.vwr.fm.setFileInfo( Clazz.newArray(-1, [this.fullPathNameIn, this.fileNameIn, this.nameAsGivenIn])); +}); +c$.getChangeableReader = Clazz.defineMethod(c$, "getChangeableReader", +function(vwr, nameAsGivenIn, fullPathNameIn){ +return JU.Rdr.getBR(vwr.getLigandModel(nameAsGivenIn, fullPathNameIn, "_file", null)); +}, "JV.Viewer,~S,~S"); +Clazz.defineMethod(c$, "getAtomSetCollection", +function(){ +return this.atomSetCollection; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/io/FilesReader.js b/config/plugins/visualizations/jmol/static/j2s/J/io/FilesReader.js new file mode 100755 index 000000000000..bbb7153d4c66 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/io/FilesReader.js @@ -0,0 +1,56 @@ +Clazz.declarePackage("J.io"); +Clazz.load(["J.api.JmolFilesReaderInterface"], "J.io.FilesReader", ["JU.Rdr", "J.api.Interface", "J.io.FileReader", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.fm = null; +this.vwr = null; +this.fullPathNamesIn = null; +this.namesAsGivenIn = null; +this.fileTypesIn = null; +this.atomSetCollection = null; +this.dataReaders = null; +this.htParams = null; +this.isAppend = false; +Clazz.instantialize(this, arguments);}, J.io, "FilesReader", null, J.api.JmolFilesReaderInterface); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "set", +function(fileManager, vwr, name, nameAsGiven, types, readers, htParams, isAppend){ +this.fm = fileManager; +this.vwr = vwr; +this.fullPathNamesIn = name; +this.namesAsGivenIn = nameAsGiven; +this.fileTypesIn = types; +this.dataReaders = readers; +this.htParams = htParams; +this.isAppend = isAppend; +}, "JV.FileManager,JV.Viewer,~A,~A,~A,~A,java.util.Map,~B"); +Clazz.overrideMethod(c$, "run", +function(){ +if (!this.isAppend && this.vwr.displayLoadErrors) this.vwr.zap(false, true, false); +var getReadersOnly = !this.vwr.displayLoadErrors; +this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollectionReaders(this, this.fullPathNamesIn, this.fileTypesIn, this.htParams, getReadersOnly); +this.dataReaders = null; +if (getReadersOnly && !((typeof(this.atomSetCollection)=='string'))) { +this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollectionFromSet(this.atomSetCollection, null, this.htParams); +}if ((typeof(this.atomSetCollection)=='string')) { +JU.Logger.error("file ERROR: " + this.atomSetCollection); +return; +}if (!this.isAppend && !this.vwr.displayLoadErrors) this.vwr.zap(false, true, false); +this.fm.setFileInfo( Clazz.newArray(-1, [this.dataReaders == null ? this.fullPathNamesIn[0] : "String[]"])); +}); +Clazz.overrideMethod(c$, "getBufferedReaderOrBinaryDocument", +function(i, forceBinary){ +if (this.dataReaders != null) return (forceBinary ? null : this.dataReaders[i].getBufferedReader()); +var name = this.fullPathNamesIn[i]; +if (name.contains("#_DOCACHE_")) return J.io.FileReader.getChangeableReader(this.vwr, this.namesAsGivenIn[i], name); +var t = this.fm.getUnzippedReaderOrStreamFromName(name, null, false, forceBinary, false, true, this.htParams); +if (Clazz.instanceOf(t,"java.io.BufferedInputStream") && JU.Rdr.isZipS(t)) { +var zipDirectory = this.fm.getZipDirectory(name, true, true); +t = this.fm.getBufferedInputStreamOrErrorMessageFromName(name, this.fullPathNamesIn[i], false, false, null, false, true); +t = this.fm.getJzu().getAtomSetCollectionOrBufferedReaderFromZip(this.vwr, t, name, zipDirectory, this.htParams, 1, true); +}return (Clazz.instanceOf(t,"java.io.BufferedInputStream") ? (J.api.Interface.getInterface("JU.BinaryDocument", this.vwr, "file")).setStream(t, true) : Clazz.instanceOf(t,"java.io.BufferedReader") || Clazz.instanceOf(t,"javajs.api.GenericBinaryDocument") ? t : t == null ? "error opening:" + this.namesAsGivenIn[i] : t); +}, "~N,~B"); +Clazz.overrideMethod(c$, "getAtomSetCollection", +function(){ +return this.atomSetCollection; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/io/JmolUtil.js b/config/plugins/visualizations/jmol/static/j2s/J/io/JmolUtil.js new file mode 100755 index 000000000000..b9b67c369669 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/io/JmolUtil.js @@ -0,0 +1,251 @@ +Clazz.declarePackage("J.io"); +Clazz.load(null, "J.io.JmolUtil", ["java.net.URL", "java.util.Hashtable", "JU.AU", "$.Lst", "$.OC", "$.PT", "$.Rdr", "J.adapter.smarter.AtomSetCollection", "J.api.Interface", "JU.Logger", "JV.FileManager", "$.Viewer"], function(){ +var c$ = Clazz.declareType(J.io, "JmolUtil", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "getImage", +function(vwr, fullPathNameOrBytes, echoName, forceSync){ +var image = null; +var info = null; +var apiPlatform = vwr.apiPlatform; +var createImage = false; +var fullPathName = "" + fullPathNameOrBytes; +if ((typeof(fullPathNameOrBytes)=='string')) { +var isBMP = fullPathName.toUpperCase().endsWith("BMP"); +if (forceSync || fullPathName.indexOf("|") > 0 || isBMP) { +var ret = vwr.fm.getFileAsBytes(fullPathName, null); +if (!JU.AU.isAB(ret)) return "" + ret; +if (JV.Viewer.isJS) info = Clazz.newArray(-1, [echoName, fullPathNameOrBytes, ret]); + else image = apiPlatform.createImage(ret); +} else if (JU.OC.urlTypeIndex(fullPathName) >= 0) { +if (JV.Viewer.isJS) info = Clazz.newArray(-1, [echoName, fullPathNameOrBytes, null]); + else try { +image = apiPlatform.createImage( new java.net.URL(Clazz.castNullAs("java.net.URL"), fullPathName, null)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return "bad URL: " + fullPathName; +} else { +throw e; +} +} +} else { +createImage = true; +}} else if (JV.Viewer.isJS) { +info = Clazz.newArray(-1, [echoName, JU.Rdr.guessMimeTypeForBytes(fullPathNameOrBytes), fullPathNameOrBytes]); +} else { +createImage = true; +}if (createImage) image = apiPlatform.createImage("\1close".equals(fullPathNameOrBytes) ? "\1close" + echoName : fullPathNameOrBytes); + else if (info != null) image = apiPlatform.createImage(info); +{ +return image; +}}, "JV.Viewer,~O,~S,~B"); +Clazz.defineMethod(c$, "getAtomSetCollectionOrBufferedReaderFromZip", +function(vwr, is, fileName, zipDirectory, htParams, subFilePtr, asBufferedReader){ +var adapter = vwr.getModelAdapter(); +var doCombine = (subFilePtr == 1); +htParams.put("zipSet", fileName); +var subFileList = htParams.get("subFileList"); +if (subFileList == null) subFileList = this.getSpartanSubfiles(zipDirectory); +var subFileName = (subFileList == null || subFilePtr >= subFileList.length ? htParams.get("SubFileName") : subFileList[subFilePtr]); +if (subFileName != null && (subFileName.startsWith("/") || subFileName.startsWith("\\"))) subFileName = subFileName.substring(1); +var selectedFile = 0; +if (subFileName == null && htParams.containsKey("modelNumber")) { +selectedFile = (htParams.get("modelNumber")).intValue(); +if (selectedFile > 0 && doCombine) htParams.remove("modelNumber"); +}var manifest = htParams.get("manifest"); +var useFileManifest = (manifest == null); +if (useFileManifest) manifest = (zipDirectory.length > 0 ? zipDirectory[0] : ""); +var haveManifest = (manifest.length > 0); +if (haveManifest) { +if (JU.Logger.debugging) JU.Logger.debug("manifest for " + fileName + ":\n" + manifest); +}var ignoreErrors = (manifest.indexOf("IGNORE_ERRORS") >= 0); +var selectAll = (manifest.indexOf("IGNORE_MANIFEST") >= 0); +var exceptFiles = (manifest.indexOf("EXCEPT_FILES") >= 0); +if (selectAll || subFileName != null) haveManifest = false; +if (useFileManifest && haveManifest) { +var path = JV.FileManager.getManifestScriptPath(manifest); +if (path != null) { +return "NOTE: file recognized as a script file: " + fileName + path + "\n"; +}}var vCollections = new JU.Lst(); +var htCollections = (haveManifest ? new java.util.Hashtable() : null); +var nFiles = 0; +try { +var spartanData = (this.isSpartanZip(zipDirectory) ? vwr.fm.spartanUtil().getData(is, zipDirectory) : null); +var zpt = vwr.getJzt(); +var ret; +if (spartanData != null) { +var reader = JU.Rdr.getBR(spartanData.toString()); +if (asBufferedReader) return reader; +ret = adapter.getAtomSetCollectionFromReader(fileName, reader, htParams); +if ((typeof(ret)=='string')) return ret; +if (Clazz.instanceOf(ret,"J.adapter.smarter.AtomSetCollection")) { +var atomSetCollection = ret; +if (atomSetCollection.errorMessage != null) { +if (ignoreErrors) return null; +return atomSetCollection.errorMessage; +}return atomSetCollection; +}if (ignoreErrors) return null; +return "unknown reader error"; +}if (Clazz.instanceOf(is,"java.io.BufferedInputStream")) is = JU.Rdr.getPngZipStream(is, true); +var zis = zpt.newZipInputStream(is); +var ze; +if (haveManifest) manifest = '|' + manifest.$replace('\r', '|').$replace('\n', '|') + '|'; +while ((ze = zis.getNextEntry()) != null && (selectedFile <= 0 || vCollections.size() < selectedFile)) { +if (ze.isDirectory()) continue; +var thisEntry = ze.getName(); +if (subFileName != null && !thisEntry.equals(subFileName)) continue; +if (subFileName != null) htParams.put("subFileName", subFileName); +if (thisEntry.startsWith("JmolManifest") || haveManifest && exceptFiles == manifest.indexOf("|" + thisEntry + "|") >= 0) continue; +var bytes = JU.Rdr.getLimitedStreamBytes(zis, ze.getSize()); +if (JU.Rdr.isGzipB(bytes)) bytes = JU.Rdr.getLimitedStreamBytes(zpt.getUnGzippedInputStream(bytes), -1); +if (JU.Rdr.isZipB(bytes) || JU.Rdr.isPngZipB(bytes)) { +var bis = JU.Rdr.getBIS(bytes); +var zipDir2 = zpt.getZipDirectoryAndClose(bis, "JmolManifest"); +bis = JU.Rdr.getBIS(bytes); +var atomSetCollections = this.getAtomSetCollectionOrBufferedReaderFromZip(vwr, bis, fileName + "|" + thisEntry, zipDir2, htParams, ++subFilePtr, asBufferedReader); +if ((typeof(atomSetCollections)=='string')) { +if (ignoreErrors) continue; +return atomSetCollections; +} else if (Clazz.instanceOf(atomSetCollections,"J.adapter.smarter.AtomSetCollection") || Clazz.instanceOf(atomSetCollections,"JU.Lst")) { +if (haveManifest && !exceptFiles) htCollections.put(thisEntry, atomSetCollections); + else vCollections.addLast(atomSetCollections); +} else if (Clazz.instanceOf(atomSetCollections,"java.io.BufferedReader")) { +if (doCombine) zis.close(); +return atomSetCollections; +} else { +if (ignoreErrors) continue; +zis.close(); +return "unknown zip reader error"; +}} else if (JU.Rdr.isPickleB(bytes)) { +var bis = JU.Rdr.getBIS(bytes); +if (doCombine) zis.close(); +return bis; +} else { +var sData; +if (JU.Rdr.isCompoundDocumentB(bytes)) { +var jd = J.api.Interface.getInterface("JU.CompoundDocument", vwr, "file"); +jd.setDocStream(zpt, JU.Rdr.getBIS(bytes)); +sData = jd.getAllDataFiles("Molecule", "Input").toString(); +} else { +sData = JU.Rdr.fixUTF(bytes); +}var reader = JU.Rdr.getBR(sData); +if (asBufferedReader) { +if (doCombine) zis.close(); +return reader; +}var fname = fileName + "|" + ze.getName(); +ret = adapter.getAtomSetCollectionFromReader(fname, reader, htParams); +if (!(Clazz.instanceOf(ret,"J.adapter.smarter.AtomSetCollection"))) { +if (ignoreErrors) continue; +zis.close(); +return "" + ret; +}if (haveManifest && !exceptFiles) htCollections.put(thisEntry, ret); + else vCollections.addLast(ret); +var a = ret; +if (a.errorMessage != null) { +if (ignoreErrors) continue; +zis.close(); +return a.errorMessage; +}}} +if (doCombine) zis.close(); +if (haveManifest && !exceptFiles) { +var list = JU.PT.split(manifest, "|"); +for (var i = 0; i < list.length; i++) { +var file = list[i]; +if (file.length == 0 || file.indexOf("#") == 0) continue; +if (htCollections.containsKey(file)) vCollections.addLast(htCollections.get(file)); + else if (JU.Logger.debugging) JU.Logger.debug("manifested file " + file + " was not found in " + fileName); +} +}if (!doCombine) return vCollections; +var result = (vCollections.size() == 1 && Clazz.instanceOf(vCollections.get(0),"J.adapter.smarter.AtomSetCollection") ? vCollections.get(0) : new J.adapter.smarter.AtomSetCollection("Array", null, null, vCollections)); +if (result.errorMessage != null) { +if (ignoreErrors) return null; +return result.errorMessage; +}if (nFiles == 1) selectedFile = 1; +if (selectedFile > 0 && selectedFile <= vCollections.size()) return vCollections.get(selectedFile - 1); +return result; +} catch (e$$) { +if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +if (ignoreErrors) return null; +JU.Logger.error("" + e); +return "" + e; +} +} else if (Clazz.exceptionOf(e$$, Error)){ +var er = e$$; +{ +JU.Logger.errorEx(null, er); +return "" + er; +} +} else { +throw e$$; +} +} +}, "JV.Viewer,java.io.InputStream,~S,~A,java.util.Map,~N,~B"); +Clazz.defineMethod(c$, "getCachedPngjBytes", +function(fm, pathName){ +if (pathName.startsWith("file:///")) pathName = "file:" + pathName.substring(7); +JU.Logger.info("JmolUtil checking PNGJ cache for " + pathName); +var shortName = this.shortSceneFilename(pathName); +if (fm.pngjCache == null && !this.clearAndCachePngjFile(fm, Clazz.newArray(-1, [pathName, null]))) return null; +var cache = fm.pngjCache; +var isMin = (pathName.indexOf(".min.") >= 0); +if (!isMin) { +var cName = fm.getCanonicalName(JU.Rdr.getZipRoot(pathName)); +if (!cache.containsKey(cName) && !this.clearAndCachePngjFile(fm, Clazz.newArray(-1, [pathName, null]))) return null; +if (pathName.indexOf("|") < 0) shortName = cName; +}if (cache.containsKey(shortName)) { +JU.Logger.info("FileManager using memory cache " + shortName); +return fm.pngjCache.get(shortName); +}if (!isMin || !this.clearAndCachePngjFile(fm, Clazz.newArray(-1, [pathName, null]))) return null; +JU.Logger.info("FileManager using memory cache " + shortName); +return cache.get(shortName); +}, "JV.FileManager,~S"); +Clazz.defineMethod(c$, "clearAndCachePngjFile", +function(fm, data){ +fm.pngjCache = new java.util.Hashtable(); +if (data == null || data[0] == null) return false; +data[0] = JU.Rdr.getZipRoot(data[0]); +var shortName = this.shortSceneFilename(data[0]); +var cache = fm.pngjCache; +try { +data[1] = fm.vwr.getJzt().cacheZipContents(JU.Rdr.getPngZipStream(fm.getBufferedInputStreamOrErrorMessageFromName(data[0], null, false, false, null, false, true), true), shortName, cache, false); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +if (data[1] == null) return false; +var bytes = data[1].getBytes(); +cache.put(fm.getCanonicalName(data[0]), bytes); +if (shortName.indexOf("_scene_") >= 0) { +cache.put(this.shortSceneFilename(data[0]), bytes); +bytes = cache.remove(shortName + "|state.spt"); +if (bytes != null) cache.put(this.shortSceneFilename(data[0] + "|state.spt"), bytes); +}return true; +}, "JV.FileManager,~A"); +Clazz.defineMethod(c$, "shortSceneFilename", +function(pathName){ +var pt = pathName.indexOf("_scene_") + 7; +if (pt < 7) return pathName; +var s = ""; +if (pathName.endsWith("|state.spt")) { +var pt1 = pathName.indexOf('.', pt); +if (pt1 < 0) return pathName; +s = pathName.substring(pt, pt1); +}var pt2 = pathName.lastIndexOf("|"); +return pathName.substring(0, pt) + s + (pt2 > 0 ? pathName.substring(pt2) : ""); +}, "~S"); +Clazz.defineMethod(c$, "getSpartanSubfiles", +function(zipDirectory){ +var name = (zipDirectory.length < 2 ? null : zipDirectory[1]); +return (name == null || zipDirectory.length != 2 || !name.endsWith(".spardir/") ? null : Clazz.newArray(-1, ["", JU.PT.trim(name, "/")])); +}, "~A"); +Clazz.defineMethod(c$, "isSpartanZip", +function(zipDirectory){ +for (var i = 1; i < zipDirectory.length; i++) if (zipDirectory[i].endsWith(".spardir/") || zipDirectory[i].indexOf("_spartandir") >= 0) return true; + +return false; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jsv/JDXMOLParser.js b/config/plugins/visualizations/jmol/static/j2s/J/jsv/JDXMOLParser.js new file mode 100755 index 000000000000..e79e4693aa3b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jsv/JDXMOLParser.js @@ -0,0 +1,293 @@ +Clazz.declarePackage("J.jsv"); +Clazz.load(["J.api.JmolJDXMOLParser"], "J.jsv.JDXMOLParser", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "$.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.line = null; +this.lastModel = ""; +this.thisModelID = null; +this.baseModel = null; +this.vibScale = 0; +this.piUnitsX = null; +this.piUnitsY = null; +this.loader = null; +this.modelIdList = ""; +this.peakIndex = null; +this.peakFilePath = null; +Clazz.instantialize(this, arguments);}, J.jsv, "JDXMOLParser", null, J.api.JmolJDXMOLParser); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "set", +function(loader, filePath, htParams){ +this.loader = loader; +this.peakFilePath = filePath; +this.peakIndex = Clazz.newIntArray (1, 0); +if (htParams != null) { +htParams.remove("modelNumber"); +if (htParams.containsKey("zipSet")) { +this.peakIndex = htParams.get("peakIndex"); +if (this.peakIndex == null) { +this.peakIndex = Clazz.newIntArray (1, 0); +htParams.put("peakIndex", this.peakIndex); +}if (!htParams.containsKey("subFileName")) this.peakFilePath = JU.PT.split(filePath, "|")[0]; +}}return this; +}, "J.api.JmolJDXMOLReader,~S,java.util.Map"); +Clazz.overrideMethod(c$, "getAttribute", +function(line, tag){ +var attr = JU.PT.getQuotedAttribute(line, tag); +return (attr == null ? "" : attr); +}, "~S,~S"); +Clazz.overrideMethod(c$, "getRecord", +function(key){ +if (this.line == null || this.line.indexOf(key) < 0) return null; +var s = this.line; +while (s.indexOf(">") < 0) s += " " + this.readLine(); + +return this.line = s; +}, "~S"); +Clazz.overrideMethod(c$, "readModels", +function(){ +if (!this.findRecord("Models")) return false; +this.line = ""; +this.thisModelID = ""; +var isFirst = true; +while (true) { +this.line = this.loader.discardLinesUntilNonBlank(); +if (this.getRecord("") < 0) s += " " + this.readLine(); + +s = s.trim(); +}s = JU.PT.replaceAllCharacters(s, "()<>", " ").trim(); +if (s.length == 0) break; +var pt = s.indexOf("'"); +if (pt >= 0) { +var pt2 = s.indexOf("'", pt + 1); +s = s.substring(0, pt) + JU.PT.rep(s.substring(pt + 1, pt2), ",", ";") + s.substring(pt2 + 1); +}JU.Logger.info("Peak Assignment: " + s); +var tokens = JU.PT.split(s, ","); +list.addLast(tokens); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Error reading peak assignments at " + this.line + ": " + e); +} else { +throw e; +} +} +return list; +}, "~N,~B"); +Clazz.overrideMethod(c$, "setACDAssignments", +function(model, mytype, peakCount, acdlist, molFile){ +try { +if (peakCount >= 0) this.peakIndex = Clazz.newIntArray(-1, [peakCount]); +var isMS = (mytype.indexOf("MASS") == 0); +var file = " file=" + JU.PT.esc(this.peakFilePath.$replace('\\', '/')); +model = " model=" + JU.PT.esc(model + " (assigned)"); +this.piUnitsX = ""; +this.piUnitsY = ""; +var dx = this.getACDPeakWidth(mytype) / 2; +var htSets = new java.util.Hashtable(); +var list = new JU.Lst(); +var zzcMap = null; +var ptx; +var pta; +var nAtoms = 0; +if (isMS) { +zzcMap = new java.util.Hashtable(); +var tokens = JU.PT.split(molFile, "M ZZC"); +for (var i = tokens.length; --i >= 1; ) { +var ab = JU.PT.getTokens(tokens[i]); +nAtoms = Math.max(nAtoms, JU.PT.parseInt(ab[0])); +zzcMap.put(ab[1], ab[0]); +} +ptx = 4; +pta = 0; +} else if (mytype.indexOf("NMR") >= 0) { +ptx = 0; +pta = 3; +} else { +ptx = 0; +pta = 2; +}var nPeaks = acdlist.size(); +for (var i = 0; i < nPeaks; i++) { +var data = acdlist.get(i); +var x = JU.PT.parseFloat(data[ptx]); +var a = data[pta]; +if (isMS) a = this.fixACDAtomList(a, zzcMap, nAtoms); + else a = a.$replace(';', ','); +if (a.indexOf("select") >= 0) { +var pt = a.indexOf("select atomno="); +if (pt < 0) continue; +a = JU.PT.split(a.substring(pt + 14), " ")[0]; +}var title = (isMS ? "m/z=" + Math.round(x) + ": " + data[2] + " (" + data[1] + ")" : pta == 2 ? "" + (Math.round(x * 10) / 10) : null); +this.getStringInfo(file, title, mytype, model, a, htSets, "" + x, list, " atoms=\"%ATOMS%\" xMin=\"" + (x - dx) + "\" xMax=\"" + (x + dx) + "\">"); +} +return this.setPeakData(list, 0); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return 0; +} else { +throw e; +} +} +}, "~S,~S,~N,JU.Lst,~S"); +Clazz.defineMethod(c$, "fixACDAtomList", +function(atoms, zzcMap, nAtoms){ +atoms = atoms.trim(); +var tokens = JU.PT.getTokens(atoms.$replace(';', ' ')); +var bs = new JU.BS(); +var isM = false; +for (var i = 0; i < tokens.length; i++) { +var a = tokens[i]; +isM = (a.indexOf("M") >= 0); +if (isM) a = "1-" + nAtoms; +var pt = a.indexOf('-'); +if (pt >= 0) { +var i1 = JU.PT.parseInt(a.substring(0, pt)); +var i2 = JU.PT.parseInt(a.substring(pt + 1)) + 1; +for (var k = i1; k < i2; k++) bs.set(isM ? k : JU.PT.parseInt(zzcMap.get("" + k))); + +} else { +bs.set(JU.PT.parseInt(zzcMap.get(a))); +}} +var s = bs.toJSON(); +return s.substring(1, s.length - 1); +}, "~S,java.util.Map,~N"); +Clazz.defineMethod(c$, "getACDPeakWidth", +function(type){ +return (type.indexOf("HNMR") >= 0 ? 0.05 : type.indexOf("CNMR") >= 0 ? 1 : type.indexOf("MASS") >= 0 ? 1 : 10); +}, "~S"); +Clazz.overrideMethod(c$, "readPeaks", +function(isSignals, peakCount){ +try { +if (peakCount >= 0) this.peakIndex = Clazz.newIntArray(-1, [peakCount]); +var offset = (isSignals ? 1 : 0); +var tag1 = (isSignals ? "Signals" : "Peaks"); +var tag2 = (isSignals ? "= 0; j = bs.nextSetBit(j + 1)) s += "," + (j + offset); + +var na = bs.cardinality(); +nH += na; +info = JU.PT.rep(info, "%ATOMS%", s.substring(1)); +info = JU.PT.rep(info, "%S%", (na == 1 ? "" : "s")); +info = JU.PT.rep(info, "%NATOMS%", "" + na); +}JU.Logger.info("adding PeakData " + info); +this.loader.addPeakData(info); +} +this.loader.setSpectrumPeaks(nH, this.piUnitsX, this.piUnitsY); +return n; +}, "JU.Lst,~N"); +Clazz.defineMethod(c$, "getStringInfo", +function(file, title, mytype, model, atoms, htSets, key, list, more){ +if ("HNMR".equals(mytype)) mytype = "1HNMR"; + else if ("CNMR".equals(mytype)) mytype = "13CNMR"; +var type = (mytype == null ? "" : " type=" + JU.PT.esc(mytype)); +if (title == null) title = ("1HNMR".equals(mytype) ? "atom%S%: %ATOMS%; integration: %NATOMS%" : ""); +title = " title=" + JU.PT.esc(title); +var stringInfo = "= 0) { +this.line = this.loader.discardLinesUntilContains(""); +return; +}this.modelIdList += key; +this.baseModel = this.getAttribute(this.line, "baseModel"); +while (this.line.indexOf(">") < 0 && this.line.indexOf("type") < 0) this.readLine(); + +var modelType = this.getAttribute(this.line, "type").toLowerCase(); +this.vibScale = JU.PT.parseFloat(this.getAttribute(this.line, "vibrationScale")); +if (modelType.equals("xyzvib")) modelType = "xyz"; + else if (modelType.length == 0) modelType = null; +var sb = new JU.SB(); +while (this.readLine() != null && !this.line.contains("")) sb.append(this.line).appendC('\n'); + +this.loader.processModelData(sb.toString(), this.thisModelID, modelType, this.baseModel, this.lastModel, NaN, this.vibScale, isFirst); +}, "~B"); +Clazz.defineMethod(c$, "findRecord", +function(tag){ +if (this.line == null) this.readLine(); +if (this.line != null && this.line.indexOf("<" + tag) < 0) this.line = this.loader.discardLinesUntilContains2("<" + tag, "##"); +return (this.line != null && this.line.indexOf("<" + tag) >= 0); +}, "~S"); +Clazz.defineMethod(c$, "readLine", +function(){ +return this.line = this.loader.rd(); +}); +Clazz.overrideMethod(c$, "setLine", +function(s){ +this.line = s; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jsv/JSpecView.js b/config/plugins/visualizations/jmol/static/j2s/J/jsv/JSpecView.js new file mode 100755 index 000000000000..9292f409ffc6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jsv/JSpecView.js @@ -0,0 +1,134 @@ +Clazz.declarePackage("J.jsv"); +Clazz.load(["J.api.JmolJSpecView"], "J.jsv.JSpecView", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "JU.Escape", "$.Logger", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +Clazz.instantialize(this, arguments);}, J.jsv, "JSpecView", null, J.api.JmolJSpecView); +Clazz.overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz.overrideMethod(c$, "atomPicked", +function(atomIndex){ +if (atomIndex < 0) return; +var peak = this.getPeakAtomRecord(atomIndex); +if (peak != null) this.sendJSpecView(peak + " src=\"JmolAtomSelect\""); +}, "~N"); +Clazz.defineMethod(c$, "getPeakAtomRecord", +function(atomIndex){ +var atoms = this.vwr.ms.at; +var iModel = atoms[atomIndex].mi; +var type = null; +switch (atoms[atomIndex].getElementNumber()) { +case 1: +type = "1HNMR"; +break; +case 6: +type = "13CNMR"; +break; +default: +return null; +} +var peaks = this.vwr.ms.getInfo(iModel, "jdxAtomSelect_" + type); +if (peaks == null) return null; +this.vwr.ms.htPeaks = new java.util.Hashtable(); +var htPeaks = this.vwr.ms.htPeaks; +for (var i = 0; i < peaks.size(); i++) { +var peak = peaks.get(i); +System.out.println("Jmol JSpecView.java peak=" + peak); +var bsPeak = htPeaks.get(peak); +System.out.println("Jmol JSpecView.java bspeak=" + bsPeak); +if (bsPeak == null) { +htPeaks.put(peak, bsPeak = new JU.BS()); +var satoms = JU.PT.getQuotedAttribute(peak, "atoms"); +var select = JU.PT.getQuotedAttribute(peak, "select"); +System.out.println("Jmol JSpecView.java satoms select " + satoms + " " + select); +var script = ""; +if (satoms != null) script += "visible & (atomno=" + JU.PT.rep(satoms, ",", " or atomno=") + ")"; + else if (select != null) script += "visible & (" + select + ")"; +System.out.println("Jmol JSpecView.java script : " + script); +bsPeak.or(this.vwr.getAtomBitSet(script)); +}System.out.println("Jmol JSpecView bsPeak now : " + bsPeak + " " + atomIndex); +if (bsPeak.get(atomIndex)) return peak; +} +return null; +}, "~N"); +Clazz.defineMethod(c$, "sendJSpecView", +function(peak){ +var msg = JU.PT.getQuotedAttribute(peak, "title"); +if (msg != null) this.vwr.scriptEcho(JU.Logger.debugging ? peak : msg); +peak = this.vwr.fullName + "JSpecView: " + peak; +JU.Logger.info("Jmol.JSpecView.sendJSpecView Jmol>JSV " + peak); +this.vwr.sm.syncSend(peak, ">", 0); +}, "~S"); +Clazz.overrideMethod(c$, "setModel", +function(modelIndex){ +var syncMode = ("sync on".equals(this.vwr.ms.getInfoM("jmolscript")) ? 1 : this.vwr.sm.getSyncMode()); +if (syncMode != 1) return; +var peak = this.vwr.ms.getInfo(modelIndex, "jdxModelSelect"); +if (peak != null) this.sendJSpecView(peak + " src=\"Jmol\""); +}, "~N"); +Clazz.overrideMethod(c$, "getBaseModelIndex", +function(modelIndex){ +var baseModel = this.vwr.ms.getInfo(modelIndex, "jdxBaseModel"); +if (baseModel != null) for (var i = this.vwr.ms.mc; --i >= 0; ) if (baseModel.equals(this.vwr.ms.getInfo(i, "jdxModelID"))) return i; + +return modelIndex; +}, "~N"); +Clazz.overrideMethod(c$, "processSync", +function(script, jsvMode){ +if (JU.Logger.debugging) JU.Logger.info("J.jsv.JSpecView jsvMode=" + jsvMode + " script=" + script); +switch (jsvMode) { +default: +return null; +case 0: +this.vwr.sm.syncSend(this.vwr.fullName + "JSpecView" + script.substring(10), ">", 0); +return null; +case 77: +case 28: +case 35: +this.vwr.sm.syncSend(this.vwr.fullName + "JSpecView:" + script, ">", 0); +return null; +case 21: +if (this.vwr.isApplet) return null; +return null; +case 14: +var filename = JU.PT.getQuotedAttribute(script, "file"); +var isSimulation = (filename != null && filename.startsWith(JV.FileManager.SIMULATION_PROTOCOL)); +var id = (!isSimulation || this.vwr.isApplet ? "" : JU.PT.getQuotedAttribute(filename.$replace('\'', '"'), "id")); +if (isSimulation && !this.vwr.isApplet && (filename.startsWith(JV.FileManager.SIMULATION_PROTOCOL + "C13/MOL=") || filename.startsWith(JV.FileManager.SIMULATION_PROTOCOL + "H1/MOL="))) filename = null; + else filename = JU.PT.rep(filename, "#molfile", ""); +var modelID = (isSimulation ? "molfile" : JU.PT.getQuotedAttribute(script, "model")); +var baseModel = JU.PT.getQuotedAttribute(script, "baseModel"); +var atoms = JU.PT.getQuotedAttribute(script, "atoms"); +var select = JU.PT.getQuotedAttribute(script, "select"); +var script2 = JU.PT.getQuotedAttribute(script, "script"); +if (id == null || id.length == 0) id = (modelID == null ? null : (filename == null ? "" : filename + "#") + modelID); +if ("".equals(baseModel)) id += ".baseModel"; +var modelIndex = (id == null ? -3 : this.vwr.getModelIndexFromId(id)); +if (modelIndex == -2) return null; +if (modelIndex != -1 || filename == null) { +script = ""; +} else if (isSimulation && !this.vwr.isApplet) { +return null; +} else { +if (isSimulation) filename += "#molfile"; +script = "load " + JU.PT.esc(filename); +}if (id != null) script += ";model " + JU.PT.esc(id); +if (atoms != null) script += ";select visible & (@" + JU.PT.rep(atoms, ",", " or @") + ")"; + else if (select != null) script += ";select visible & (" + select + ")"; +if (script2 != null) script += ";" + script2; +return script; +case 7: +var list = JU.Escape.unescapeStringArray(script.substring(7)); +var peaks = new JU.Lst(); +var type = "1HNMR"; +for (var i = 0; i < list.length; i++) { +if (i == 0 && list[i].indexOf(JV.FileManager.SIMULATION_PROTOCOL + "C13/") >= 0) type = "13CNMR"; +peaks.addLast(list[i]); +} +this.vwr.ms.setInfo(this.vwr.am.cmi, "jdxAtomSelect_" + type, peaks); +return null; +} +}, "~S,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/api/MeshDataServer.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/api/MeshDataServer.js new file mode 100755 index 000000000000..ec87297a5f68 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/api/MeshDataServer.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.jvxl.api"); +Clazz.declareInterface(J.jvxl.api, "MeshDataServer", J.jvxl.api.VertexDataServer); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/api/VertexDataServer.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/api/VertexDataServer.js new file mode 100755 index 000000000000..a90d248928a1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/api/VertexDataServer.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.jvxl.api"); +Clazz.declareInterface(J.jvxl.api, "VertexDataServer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/calc/MarchingCubes.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/calc/MarchingCubes.js new file mode 100755 index 000000000000..9a88925ac9fc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/calc/MarchingCubes.js @@ -0,0 +1,337 @@ +Clazz.declarePackage("J.jvxl.calc"); +Clazz.load(["JU.TriangleData", "JU.BS", "$.P3", "$.SB", "$.V3"], "J.jvxl.calc.MarchingCubes", ["J.jvxl.data.JvxlCoder"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.surfaceReader = null; +this.volumeData = null; +this.contourType = 0; +this.isContoured = false; +this.cutoff = 0; +this.isCutoffAbsolute = false; +this.isSquared = false; +this.isXLowToHigh = false; +this.cubeCountX = 0; +this.cubeCountY = 0; +this.cubeCountZ = 0; +this.nY = 0; +this.nZ = 0; +this.yzCount = 0; +this.colorDensity = false; +this.integrateSquared = true; +this.bsVoxels = null; +this.bsExcludedVertices = null; +this.bsExcludedTriangles = null; +this.bsExcludedPlanes = null; +this.edgeData = null; +this.excludePartialCubes = true; +this.isDensityRange = false; +this.mode = 0; +this.vertexValues = null; +this.edgeCount = 0; +this.voxelVertexVectors = null; +this.edgeVectors = null; +this.edgePointIndexes = null; +this.isoPointIndexPlanes = null; +this.yzPlanes = null; +this.mappingPlane = null; +this.allInside = false; +this.$isInside = false; +this.offset = null; +this.voxelData = null; +this.nTriangles = 0; +this.bsValues = null; +this.pt0 = null; +this.pointA = null; +this.edgeVertexPointers = null; +this.edgeVertexPlanes = null; +this.fReturn = null; +this.linearOffsets = null; +Clazz.instantialize(this, arguments);}, J.jvxl.calc, "MarchingCubes", JU.TriangleData); +Clazz.prepareFields (c$, function(){ +this.edgeData = new JU.SB(); +this.vertexValues = Clazz.newFloatArray (8, 0); +this.voxelVertexVectors = new Array(8); +this.edgeVectors = new Array(12); +{ +for (var i = 12; --i >= 0; ) this.edgeVectors[i] = new JU.V3(); + +}this.edgePointIndexes = Clazz.newIntArray (12, 0); +this.bsValues = new JU.BS(); +this.pt0 = new JU.P3(); +this.pointA = new JU.P3(); +this.fReturn = Clazz.newFloatArray (1, 0); +this.linearOffsets = Clazz.newIntArray (8, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.calc.MarchingCubes, []); +}); +Clazz.makeConstructor(c$, +function(surfaceReader, volumeData, params, bsVoxels){ +Clazz.superConstructor (this, J.jvxl.calc.MarchingCubes, []); +this.excludePartialCubes = true; +this.surfaceReader = surfaceReader; +this.bsVoxels = bsVoxels; +var bsExcluded = params.bsExcluded; +this.bsExcludedVertices = (bsExcluded[0] == null ? bsExcluded[0] = new JU.BS() : bsExcluded[0]); +this.bsExcludedPlanes = (bsExcluded[2] == null ? bsExcluded[2] = new JU.BS() : bsExcluded[2]); +this.bsExcludedTriangles = (bsExcluded[3] == null ? bsExcluded[3] = new JU.BS() : bsExcluded[3]); +this.mode = (volumeData.getVoxelData() != null || volumeData.mappingPlane != null ? 1 : bsVoxels != null ? 2 : 3); +this.setParameters(volumeData, params); +}, "J.jvxl.api.VertexDataServer,J.jvxl.data.VolumeData,J.jvxl.readers.Parameters,JU.BS"); +Clazz.defineMethod(c$, "setParameters", +function(volumeData, params){ +this.volumeData = volumeData; +this.colorDensity = params.colorDensity; +this.isContoured = params.thePlane == null && params.isContoured && !this.colorDensity; +this.cutoff = params.cutoff; +this.isCutoffAbsolute = params.isCutoffAbsolute; +this.isDensityRange = (params.cutoffRange != null); +this.contourType = params.contourType; +this.isSquared = params.isSquared; +this.isXLowToHigh = params.isXLowToHigh; +this.cubeCountX = volumeData.voxelCounts[0] - 1; +this.cubeCountY = volumeData.voxelCounts[1] - 1; +this.cubeCountZ = volumeData.voxelCounts[2] - 1; +volumeData.getYzCount(); +if (params.mapLattice != null) { +this.cubeCountX *= Math.abs(params.mapLattice.x); +this.cubeCountY *= Math.abs(params.mapLattice.y); +this.cubeCountZ *= Math.abs(params.mapLattice.z); +}this.nY = this.cubeCountY + 1; +this.nZ = this.cubeCountZ + 1; +this.yzCount = this.nY * this.nZ; +if (this.bsVoxels == null) this.bsVoxels = new JU.BS(); +this.edgeVertexPointers = (this.isXLowToHigh ? J.jvxl.calc.MarchingCubes.edgeVertexPointersLowToHigh : J.jvxl.calc.MarchingCubes.edgeVertexPointersHighToLow); +this.edgeVertexPlanes = (this.isXLowToHigh ? J.jvxl.calc.MarchingCubes.edgeVertexPlanesLowToHigh : J.jvxl.calc.MarchingCubes.edgeVertexPlanesHighToLow); +this.isoPointIndexPlanes = Clazz.newIntArray (2, this.yzCount, 3, 0); +this.yzPlanes = (this.mode == 3 ? Clazz.newFloatArray (2, this.yzCount, 0) : null); +this.setLinearOffsets(); +this.calcVoxelVertexVectors(); +}, "J.jvxl.data.VolumeData,J.jvxl.readers.Parameters"); +Clazz.defineMethod(c$, "calcVoxelVertexVectors", +function(){ +for (var i = 8; --i >= 0; ) this.volumeData.transform(J.jvxl.calc.MarchingCubes.cubeVertexVectors[i], this.voxelVertexVectors[i] = new JU.V3()); + +for (var i = 12; --i >= 0; ) this.edgeVectors[i].sub2(this.voxelVertexVectors[JU.TriangleData.edgeVertexes[i + i + 1]], this.voxelVertexVectors[JU.TriangleData.edgeVertexes[i + i]]); + +}); +Clazz.defineMethod(c$, "resetIndexPlane", +function(plane){ +for (var i = 0; i < this.yzCount; i++) for (var j = 0; j < 3; j++) plane[i][j] = -2147483648; + + +return plane; +}, "~A"); +Clazz.defineMethod(c$, "getEdgeData", +function(){ +if (this.cubeCountX < 0 || this.cubeCountY < 0 || this.cubeCountZ < 0) return ""; +this.mappingPlane = this.volumeData.mappingPlane; +this.edgeCount = 0; +var x0; +var x1; +var xStep; +var ptStep; +var pt; +var ptX; +if (this.isXLowToHigh) { +x0 = 0; +x1 = this.cubeCountX + (this.colorDensity ? 1 : 0); +if (this.colorDensity) { +x1 = this.cubeCountX + 1; +ptX = this.yzCount - 1; +} else { +x1 = this.cubeCountX; +ptX = (this.yzCount - 1) - this.nZ - 1; +}xStep = 1; +ptStep = this.yzCount; +} else { +if (this.colorDensity) { +x0 = this.cubeCountX; +ptX = (this.cubeCountX + 1) * this.yzCount - 1; +} else { +x0 = this.cubeCountX - 1; +ptX = (this.cubeCountX * this.yzCount - 1) - this.nZ - 1; +}x1 = -1; +xStep = -1; +ptStep = -this.yzCount; +}pt = ptX; +this.resetIndexPlane(this.isoPointIndexPlanes[1]); +this.voxelData = null; +var y1 = this.cubeCountY + (this.colorDensity ? 1 : 0); +var z1 = this.cubeCountZ + (this.colorDensity ? 1 : 0); +switch (this.mode) { +case 3: +this.getPlane(x0, false); +break; +case 1: +this.voxelData = this.volumeData.getVoxelData(); +break; +} +this.allInside = (this.colorDensity && (this.cutoff == 0 || this.mode == 2 && this.bsVoxels.nextSetBit(0) < 0)); +var colorDensityAll = (this.colorDensity && this.cutoff == 0); +var v = 0; +for (var x = x0; x != x1; x += xStep, ptX += ptStep, pt = ptX) { +if (this.mode == 3) { +if (x + xStep <= x1) this.getPlane(x + xStep, true); +}if (this.bsExcludedPlanes.get(x) && this.bsExcludedPlanes.get(x + xStep)) continue; +if (this.colorDensity) { +for (var y = y1; --y >= 0; ) for (var z = z1; --z >= 0; pt--) { +v = this.getValue(x, y, z, pt, 0); +if (colorDensityAll || this.$isInside) { +this.addVertex(x, y, z, pt, v); +}} + +continue; +}var indexPlane = this.isoPointIndexPlanes[0]; +this.isoPointIndexPlanes[0] = this.isoPointIndexPlanes[1]; +this.isoPointIndexPlanes[1] = this.resetIndexPlane(indexPlane); +var noValues = true; +for (var y = y1; --y >= 0; pt--) { +for (var z = z1; --z >= 0; pt--) { +var insideMask = 0; +for (var i = 8; --i >= 0; ) { +v = this.getValue(x, y, z, pt, i); +if (this.$isInside) insideMask |= JU.TriangleData.Pwr2[i]; +} +if (noValues && !Float.isNaN(v)) noValues = false; +if (insideMask == 0) { +continue; +}if (insideMask == 0xFF) { +continue; +}if (this.processOneCubical(insideMask, x, y, z, pt) && !this.isContoured && !this.colorDensity) { +this.processTriangles(insideMask); +}} +} +if (noValues) { +this.bsExcludedPlanes.set(x); +}} +return this.edgeData.toString(); +}); +Clazz.defineMethod(c$, "getValue", +function(x, y, z, pt, i){ +var v; +this.offset = JU.TriangleData.cubeVertexOffsets[i]; +var pti = pt + this.linearOffsets[i]; +switch (this.mode) { +case 3: +v = this.vertexValues[i] = this.getValueArray(x + this.offset.x, y + this.offset.y, z + this.offset.z, pti, this.yzPlanes[J.jvxl.calc.MarchingCubes.yzPlanePts[i]]); +this.$isInside = (this.allInside || this.bsVoxels.get(pti)); +break; +case 2: +this.$isInside = (this.allInside || this.bsVoxels.get(pti)); +v = this.vertexValues[i] = ((this.isDensityRange ? !this.$isInside : this.bsExcludedVertices.get(pti)) ? NaN : this.$isInside ? 1 : 0); +break; +default: +case 1: +if (this.mappingPlane == null) { +v = this.vertexValues[i] = this.voxelData[x + this.offset.x][y + this.offset.y][z + this.offset.z]; +} else { +this.volumeData.voxelPtToXYZ(x + this.offset.x, y + this.offset.y, z + this.offset.z, this.pt0); +v = this.vertexValues[i] = this.volumeData.distanceToMappingPlane(this.pt0); +}if (this.isSquared) this.vertexValues[i] *= this.vertexValues[i]; +this.$isInside = (this.allInside ? true : J.jvxl.calc.MarchingCubes.isInside(this.vertexValues[i], this.cutoff, this.isCutoffAbsolute)); +if (this.$isInside) this.bsVoxels.set(pti); +} +return v; +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getPlane", +function(i, andSwap){ +if (i < 0 || i > this.cubeCountX) return; +this.surfaceReader.getPlane(i); +if (andSwap) { +var plane = this.yzPlanes[0]; +this.yzPlanes[0] = this.yzPlanes[1]; +this.yzPlanes[1] = plane; +}}, "~N,~B"); +Clazz.defineMethod(c$, "processTriangles", +function(insideMask){ +var triangles = JU.TriangleData.triangleTable2[insideMask]; +for (var i = triangles.length; (i -= 4) >= 0; ) this.addTriangle(triangles[i], triangles[i + 1], triangles[i + 2], triangles[i + 3]); + +}, "~N"); +Clazz.defineMethod(c$, "addVertex", +function(x, y, z, pti, value){ +this.volumeData.voxelPtToXYZ(x, y, z, this.pt0); +if (this.surfaceReader.addVertexCopy(this.pt0, value, -4, true) < 0) this.bsExcludedVertices.set(pti); +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "addTriangle", +function(ia, ib, ic, edgeType){ +if (!this.bsExcludedTriangles.get(this.nTriangles) && this.surfaceReader.addTriangleCheck(this.edgePointIndexes[ia], this.edgePointIndexes[ib], this.edgePointIndexes[ic], edgeType, 0, this.isCutoffAbsolute, 0) < 0) { +this.bsExcludedTriangles.set(this.nTriangles); +}this.nTriangles++; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getValueArray", +function(x, y, z, pt, tempValues){ +var ptyz = pt % this.yzCount; +this.bsValues.set(pt); +var value = this.surfaceReader.getValue(x, y, z, ptyz); +if (this.isSquared) value *= value; +tempValues[ptyz] = value; +if (J.jvxl.calc.MarchingCubes.isInside(value, this.cutoff, this.isCutoffAbsolute)) this.bsVoxels.set(pt); +return value; +}, "~N,~N,~N,~N,~A"); +c$.isInside = Clazz.defineMethod(c$, "isInside", +function(voxelValue, max, isAbsolute){ +return ((max > 0 && (isAbsolute ? Math.abs(voxelValue) : voxelValue) >= max) || (max <= 0 && voxelValue <= max)); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "processOneCubical", +function(insideMask, x, y, z, pt){ +var edgeMask = J.jvxl.calc.MarchingCubes.insideMaskTable[insideMask]; +var isNaN = false; +for (var iEdge = 12; --iEdge >= 0; ) { +var xEdge = JU.TriangleData.Pwr2[iEdge]; +if ((edgeMask & xEdge) == 0) continue; +var iPlane = this.edgeVertexPlanes[iEdge]; +var iPt = (pt + this.linearOffsets[this.edgeVertexPointers[iEdge]]) % this.yzCount; +var iType = J.jvxl.calc.MarchingCubes.edgeTypeTable[iEdge]; +var index = this.edgePointIndexes[iEdge] = this.isoPointIndexPlanes[iPlane][iPt][iType]; +if (index != -2147483648) { +if (index == -1) isNaN = this.excludePartialCubes; +continue; +}var vertexA = JU.TriangleData.edgeVertexes[iEdge << 1]; +var vertexB = JU.TriangleData.edgeVertexes[(iEdge << 1) + 1]; +var valueA = this.vertexValues[vertexA]; +var valueB = this.vertexValues[vertexB]; +this.calcVertexPoint(x, y, z, vertexA, this.pointA); +this.edgeCount++; +var i = this.edgePointIndexes[iEdge] = this.isoPointIndexPlanes[iPlane][iPt][iType] = this.surfaceReader.getSurfacePointIndexAndFraction(this.cutoff, this.isCutoffAbsolute, x, y, z, JU.TriangleData.cubeVertexOffsets[vertexA], vertexA, vertexB, valueA, valueB, this.pointA, this.edgeVectors[iEdge], iType == this.contourType, this.fReturn); +this.addEdgeData(i < 0 ? NaN : this.fReturn[0]); +if (Float.isNaN(this.fReturn[0]) || i < 0) isNaN = this.excludePartialCubes; +} +return !isNaN; +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "addEdgeData", +function(f){ +var ch = J.jvxl.data.JvxlCoder.jvxlFractionAsCharacter(f); +this.edgeData.appendC(ch); +}, "~N"); +Clazz.defineMethod(c$, "calcVertexPoint", +function(x, y, z, vertex, pt){ +this.volumeData.voxelPtToXYZ(x, y, z, this.pt0); +pt.add2(this.pt0, this.voxelVertexVectors[vertex]); +}, "~N,~N,~N,~N,JU.P3"); +Clazz.defineMethod(c$, "setLinearOffsets", +function(){ +this.linearOffsets[0] = 0; +this.linearOffsets[1] = this.yzCount; +this.linearOffsets[2] = this.yzCount + 1; +this.linearOffsets[3] = 1; +this.linearOffsets[4] = this.nZ; +this.linearOffsets[5] = this.yzCount + this.nZ; +this.linearOffsets[6] = this.yzCount + this.nZ + 1; +this.linearOffsets[7] = this.nZ + 1; +}); +Clazz.defineMethod(c$, "getLinearOffset", +function(x, y, z, offset){ +return x * this.yzCount + y * this.nZ + z + this.linearOffsets[offset]; +}, "~N,~N,~N,~N"); +c$.yzPlanePts = Clazz.newIntArray(-1, [0, 1, 1, 0, 0, 1, 1, 0]); +c$.edgeVertexPointersLowToHigh = Clazz.newIntArray(-1, [1, 1, 2, 0, 5, 5, 6, 4, 0, 1, 2, 3]); +c$.edgeVertexPointersHighToLow = Clazz.newIntArray(-1, [0, 1, 3, 0, 4, 5, 7, 4, 0, 1, 2, 3]); +c$.edgeVertexPlanesLowToHigh = Clazz.newIntArray(-1, [1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0]); +c$.edgeVertexPlanesHighToLow = Clazz.newIntArray(-1, [1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1]); +c$.cubeVertexVectors = Clazz.newArray(-1, [JU.V3.new3(0, 0, 0), JU.V3.new3(1, 0, 0), JU.V3.new3(1, 0, 1), JU.V3.new3(0, 0, 1), JU.V3.new3(0, 1, 0), JU.V3.new3(1, 1, 0), JU.V3.new3(1, 1, 1), JU.V3.new3(0, 1, 1)]); +c$.edgeTypeTable = Clazz.newIntArray(-1, [0, 2, 0, 2, 0, 2, 0, 2, 1, 1, 1, 1]); +c$.insideMaskTable = Clazz.newShortArray(-1, [0x0000, 0x0109, 0x0203, 0x030A, 0x0406, 0x050F, 0x0605, 0x070C, 0x080C, 0x0905, 0x0A0F, 0x0B06, 0x0C0A, 0x0D03, 0x0E09, 0x0F00, 0x0190, 0x0099, 0x0393, 0x029A, 0x0596, 0x049F, 0x0795, 0x069C, 0x099C, 0x0895, 0x0B9F, 0x0A96, 0x0D9A, 0x0C93, 0x0F99, 0x0E90, 0x0230, 0x0339, 0x0033, 0x013A, 0x0636, 0x073F, 0x0435, 0x053C, 0x0A3C, 0x0B35, 0x083F, 0x0936, 0x0E3A, 0x0F33, 0x0C39, 0x0D30, 0x03A0, 0x02A9, 0x01A3, 0x00AA, 0x07A6, 0x06AF, 0x05A5, 0x04AC, 0x0BAC, 0x0AA5, 0x09AF, 0x08A6, 0x0FAA, 0x0EA3, 0x0DA9, 0x0CA0, 0x0460, 0x0569, 0x0663, 0x076A, 0x0066, 0x016F, 0x0265, 0x036C, 0x0C6C, 0x0D65, 0x0E6F, 0x0F66, 0x086A, 0x0963, 0x0A69, 0x0B60, 0x05F0, 0x04F9, 0x07F3, 0x06FA, 0x01F6, 0x00FF, 0x03F5, 0x02FC, 0x0DFC, 0x0CF5, 0x0FFF, 0x0EF6, 0x09FA, 0x08F3, 0x0BF9, 0x0AF0, 0x0650, 0x0759, 0x0453, 0x055A, 0x0256, 0x035F, 0x0055, 0x015C, 0x0E5C, 0x0F55, 0x0C5F, 0x0D56, 0x0A5A, 0x0B53, 0x0859, 0x0950, 0x07C0, 0x06C9, 0x05C3, 0x04CA, 0x03C6, 0x02CF, 0x01C5, 0x00CC, 0x0FCC, 0x0EC5, 0x0DCF, 0x0CC6, 0x0BCA, 0x0AC3, 0x09C9, 0x08C0, 0x08C0, 0x09C9, 0x0AC3, 0x0BCA, 0x0CC6, 0x0DCF, 0x0EC5, 0x0FCC, 0x00CC, 0x01C5, 0x02CF, 0x03C6, 0x04CA, 0x05C3, 0x06C9, 0x07C0, 0x0950, 0x0859, 0x0B53, 0x0A5A, 0x0D56, 0x0C5F, 0x0F55, 0x0E5C, 0x015C, 0x0055, 0x035F, 0x0256, 0x055A, 0x0453, 0x0759, 0x0650, 0x0AF0, 0x0BF9, 0x08F3, 0x09FA, 0x0EF6, 0x0FFF, 0x0CF5, 0x0DFC, 0x02FC, 0x03F5, 0x00FF, 0x01F6, 0x06FA, 0x07F3, 0x04F9, 0x05F0, 0x0B60, 0x0A69, 0x0963, 0x086A, 0x0F66, 0x0E6F, 0x0D65, 0x0C6C, 0x036C, 0x0265, 0x016F, 0x0066, 0x076A, 0x0663, 0x0569, 0x0460, 0x0CA0, 0x0DA9, 0x0EA3, 0x0FAA, 0x08A6, 0x09AF, 0x0AA5, 0x0BAC, 0x04AC, 0x05A5, 0x06AF, 0x07A6, 0x00AA, 0x01A3, 0x02A9, 0x03A0, 0x0D30, 0x0C39, 0x0F33, 0x0E3A, 0x0936, 0x083F, 0x0B35, 0x0A3C, 0x053C, 0x0435, 0x073F, 0x0636, 0x013A, 0x0033, 0x0339, 0x0230, 0x0E90, 0x0F99, 0x0C93, 0x0D9A, 0x0A96, 0x0B9F, 0x0895, 0x099C, 0x069C, 0x0795, 0x049F, 0x0596, 0x029A, 0x0393, 0x0099, 0x0190, 0x0F00, 0x0E09, 0x0D03, 0x0C0A, 0x0B06, 0x0A0F, 0x0905, 0x080C, 0x070C, 0x0605, 0x050F, 0x0406, 0x030A, 0x0203, 0x0109, 0x0000]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/calc/MarchingSquares.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/calc/MarchingSquares.js new file mode 100755 index 000000000000..6540033afc09 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/calc/MarchingSquares.js @@ -0,0 +1,241 @@ +Clazz.declarePackage("J.jvxl.calc"); +Clazz.load(["JU.P3", "java.util.Hashtable"], "J.jvxl.calc.MarchingSquares", ["JU.AU", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.surfaceReader = null; +this.volumeData = null; +this.nContourSegments = 0; +this.contourType = 0; +this.thisContour = 0; +this.valueMin = 0; +this.valueMax = 0; +this.pointA = null; +this.pointB = null; +this.contourFromZero = true; +this.contoursDiscrete = null; +this.contourVertexCount = 0; +this.contourVertexes = null; +if (!Clazz.isClassDefined("J.jvxl.calc.MarchingSquares.ContourVertex")) { +J.jvxl.calc.MarchingSquares.$MarchingSquares$ContourVertex$ (); +} +this.contourPlaneMinimumValue = 0; +this.contourPlaneMaximumValue = 0; +this.contourValuesUsed = null; +this.ptTemp = null; +this.triangleCount = 0; +this.triangles = null; +this.htPts = null; +if (!Clazz.isClassDefined("J.jvxl.calc.MarchingSquares.Triangle")) { +J.jvxl.calc.MarchingSquares.$MarchingSquares$Triangle$ (); +} +Clazz.instantialize(this, arguments);}, J.jvxl.calc, "MarchingSquares", null); +Clazz.prepareFields (c$, function(){ +this.pointA = new JU.P3(); +this.pointB = new JU.P3(); +this.contourVertexes = new Array(1000); +this.ptTemp = new JU.P3(); +this.triangles = new Array(1000); +this.htPts = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(surfaceReader, volumeData, thePlane, contoursDiscrete, nContours, thisContour, contourFromZero){ +this.surfaceReader = surfaceReader; +this.volumeData = volumeData; +this.thisContour = thisContour; +this.contoursDiscrete = contoursDiscrete; +this.contourFromZero = contourFromZero; +if (contoursDiscrete == null) { +var i = 0; +this.nContourSegments = (nContours == 0 ? 9 : nContours) + i; +if (this.nContourSegments > 100) this.nContourSegments = 100; +} else { +nContours = contoursDiscrete.length; +this.nContourSegments = nContours; +this.contourFromZero = false; +}}, "J.jvxl.api.VertexDataServer,J.jvxl.data.VolumeData,JU.P4,~A,~N,~N,~B"); +Clazz.defineMethod(c$, "setMinMax", +function(valueMin, valueMax){ +this.valueMin = valueMin; +this.valueMax = valueMax; +}, "~N,~N"); +Clazz.defineMethod(c$, "addContourVertex", +function(vertexXYZ, value){ +if (this.contourVertexCount == this.contourVertexes.length) this.contourVertexes = JU.AU.doubleLength(this.contourVertexes); +var vPt = this.surfaceReader.addVertexCopy(vertexXYZ, value, -2, true); +this.contourVertexes[this.contourVertexCount++] = Clazz.innerTypeInstance(J.jvxl.calc.MarchingSquares.ContourVertex, this, null, vertexXYZ); +return vPt; +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "setContourData", +function(i, value){ +this.contourVertexes[i].setValue(value); +}, "~N,~N"); +Clazz.defineMethod(c$, "calcContourPoint", +function(cutoff, valueA, valueB, pt){ +return this.volumeData.calculateFractionalPoint(cutoff, this.pointA, this.pointB, valueA, valueB, pt); +}, "~N,~N,~N,JU.P3"); +Clazz.defineMethod(c$, "addTriangle", +function(iA, iB, iC, check, iContour){ +if (this.triangleCount == this.triangles.length) this.triangles = JU.AU.doubleLength(this.triangles); +this.triangles[this.triangleCount++] = Clazz.innerTypeInstance(J.jvxl.calc.MarchingSquares.Triangle, this, null, iA, iB, iC, check, iContour); +return 0; +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "generateContourData", +function(haveData, zeroOffset){ +JU.Logger.info("generateContours: " + this.nContourSegments + " segments"); +this.getVertexValues(haveData); +this.createContours(this.valueMin, this.valueMax, zeroOffset); +this.addAllTriangles(); +return this.contourVertexCount; +}, "~B,~N"); +Clazz.defineMethod(c$, "getVertexValues", +function(haveData){ +this.contourPlaneMinimumValue = 3.4028235E38; +this.contourPlaneMaximumValue = -3.4028235E38; +for (var i = 0; i < this.contourVertexCount; i++) { +var c = this.contourVertexes[i]; +var value; +if (haveData) { +value = c.value; +} else { +value = this.volumeData.lookupInterpolatedVoxelValue(c, false); +c.setValue(value); +}if (value < this.contourPlaneMinimumValue) this.contourPlaneMinimumValue = value; +if (value > this.contourPlaneMaximumValue) this.contourPlaneMaximumValue = value; +} +}, "~B"); +Clazz.defineMethod(c$, "createContours", +function(min, max, zeroOffset){ +var diff = max - min; +this.contourValuesUsed = Clazz.newFloatArray (this.nContourSegments, 0); +for (var i = this.triangleCount; --i >= 0; ) this.triangles[i].check = 0; + +var minCutoff = -3.4028235E38; +var cutoff = minCutoff; +for (var i = 0; i < this.nContourSegments; i++) { +cutoff = (this.contoursDiscrete != null ? this.contoursDiscrete[i] : this.contourFromZero ? min + (i * 1 / this.nContourSegments) * diff : i == 0 ? -3.4028235E38 : i == this.nContourSegments - 1 ? 3.4028235E38 : min + ((i - 1) * 1 / (this.nContourSegments - 1)) * diff); +if (this.contoursDiscrete == null && Math.abs(cutoff) < zeroOffset) cutoff = (cutoff < 0 ? -zeroOffset : zeroOffset); +this.contourValuesUsed[i] = cutoff; +JU.Logger.info("#contour " + (i + 1) + " " + cutoff + " " + this.triangleCount); +this.htPts.clear(); +for (var ii = this.triangleCount; --ii >= 0; ) { +if (this.triangles[ii].isValid) this.checkContour(this.triangles[ii], i, cutoff); +} +if (this.thisContour > 0) { +if (i + 1 == this.thisContour) minCutoff = cutoff; +} else { +}} +if (this.contoursDiscrete != null) { +minCutoff = this.contoursDiscrete[0]; +}this.valueMin = this.contourValuesUsed[0]; +this.valueMax = (this.contourValuesUsed.length == 0 ? this.valueMin : this.contourValuesUsed[this.contourValuesUsed.length - 1]); +return true; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "intercept", +function(t, i, value){ +var iA = t.pts[i]; +var iB = t.pts[(i + 1) % 3]; +if (iA == 2147483647 || iB == 2147483647) return -1; +var key = (iA < iB ? iA + "_" + iB : iB + "_" + iA); +if (this.htPts.containsKey(key)) return this.htPts.get(key).intValue(); +var valueA = this.contourVertexes[iA].value; +var valueB = this.contourVertexes[iB].value; +var iPt = -1; +if (valueA != valueB) { +var f = (value - valueA) / (valueB - valueA); +if (f >= 0 && f <= 1) { +this.pointA.setT(this.contourVertexes[iA]); +this.pointB.setT(this.contourVertexes[iB]); +value = this.calcContourPoint(value, valueA, valueB, this.ptTemp); +if (!Float.isNaN(value)) { +iPt = this.addContourVertex(this.ptTemp, value); +if (iPt < 0) return -1; +this.contourVertexes[iPt].setValue(value); +} else { +}}}this.htPts.put(key, Integer.$valueOf(iPt)); +return iPt; +}, "J.jvxl.calc.MarchingSquares.Triangle,~N,~N"); +Clazz.defineMethod(c$, "checkContour", +function(t, i, value){ +if (this.thisContour > 0 && i + 1 != this.thisContour) return; +var ipt0 = this.intercept(t, 0, value); +var ipt1 = this.intercept(t, 1, value); +var ipt2 = this.intercept(t, 2, value); +var pts = t.pts; +var mode = 0; +if (ipt0 >= 0) { +mode += 1; +}if (ipt1 >= 0) { +mode += 2; +}if (ipt2 >= 0) { +mode += 4; +}switch (mode) { +case 3: +this.addTriangle(pts[0], ipt0, ipt1, 2 | (t.check & 1), i); +this.addTriangle(ipt0, pts[1], ipt1, 4 | (t.check & 3), i); +this.addTriangle(pts[0], ipt1, pts[2], (t.check & 6), i); +break; +case 5: +this.addTriangle(pts[0], ipt0, ipt2, 2 | (t.check & 5), i); +this.addTriangle(ipt0, pts[1], ipt2, 4 | (t.check & 1), i); +this.addTriangle(ipt2, pts[1], pts[2], (t.check & 6), i); +break; +case 6: +this.addTriangle(pts[0], pts[1], ipt2, (t.check & 5), i); +this.addTriangle(ipt2, pts[1], ipt1, 4 | (t.check & 2), i); +this.addTriangle(ipt2, ipt1, pts[2], 1 | (t.check & 6), i); +break; +default: +return; +} +t.isValid = false; +}, "J.jvxl.calc.MarchingSquares.Triangle,~N,~N"); +Clazz.defineMethod(c$, "getMinMax", +function(){ +return Clazz.newFloatArray(-1, [this.valueMin, this.valueMax]); +}); +Clazz.defineMethod(c$, "addAllTriangles", +function(){ +for (var i = 0; i < this.triangleCount; i++) if (this.triangles[i].isValid) { +var t = this.triangles[i]; +this.surfaceReader.addTriangleCheck(t.pts[0], t.pts[1], t.pts[2], t.check, t.contourIndex, false, -1); +} +}); +c$.$MarchingSquares$ContourVertex$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.value = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.calc.MarchingSquares, "ContourVertex", JU.P3); +Clazz.makeConstructor(c$, +function(vertexXYZ){ +Clazz.superConstructor (this, J.jvxl.calc.MarchingSquares.ContourVertex, []); +this.setT(vertexXYZ); +}, "JU.P3"); +Clazz.defineMethod(c$, "setValue", +function(value){ +this.value = value; +}, "~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.value + " " + this.x + " " + this.y + " " + this.z; +}); +/*eoif4*/})(); +}; +c$.$MarchingSquares$Triangle$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.pts = null; +this.check = 0; +this.isValid = true; +this.contourIndex = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.calc.MarchingSquares, "Triangle", null); +Clazz.makeConstructor(c$, +function(iA, iB, iC, check, contourIndex){ +this.pts = Clazz.newIntArray(-1, [iA, iB, iC]); +this.check = check; +this.contourIndex = contourIndex; +}, "~N,~N,~N,~N,~N"); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/JvxlCoder.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/JvxlCoder.js new file mode 100755 index 000000000000..aa084a0b5a48 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/JvxlCoder.js @@ -0,0 +1,698 @@ +Clazz.declarePackage("J.jvxl.data"); +Clazz.load(null, "J.jvxl.data.JvxlCoder", ["JU.BS", "$.Lst", "$.P3", "$.PT", "$.SB", "J.api.Interface", "J.jvxl.data.VolumeData", "JU.BSUtil", "$.C", "$.Escape", "$.Logger", "JV.Viewer"], function(){ +var c$ = Clazz.declareType(J.jvxl.data, "JvxlCoder", null); +c$.jvxlGetFile = Clazz.defineMethod(c$, "jvxlGetFile", +function(jvxlData, meshData, title, msg, includeHeader, nSurfaces, state, comment){ +J.jvxl.data.JvxlCoder.checkHaveXMLUtil(); +var data = new JU.SB(); +if ("TRAILERONLY".equals(msg)) { +JU.XmlUtil.closeTag(data, "jvxlSurfaceSet"); +JU.XmlUtil.closeTag(data, "jvxl"); +return data.toString(); +}var vertexDataOnly = (meshData != null); +var isHeaderOnly = ("HEADERONLY".equals(msg)); +if (includeHeader) { +JU.XmlUtil.openDocument(data); +JU.XmlUtil.openTagAttr(data, "jvxl", Clazz.newArray(-1, ["version", "2.4", "jmolVersion", jvxlData.version, "xmlns", "http://jmol.org/jvxl_schema", "xmlns:cml", "http://www.xml-cml.org/schema"])); +JU.XmlUtil.appendCdata(data, "jvxlFileTitle", null, jvxlData.jvxlFileTitle == null ? "\n" : "\n" + jvxlData.jvxlFileTitle); +if (jvxlData.moleculeXml != null) data.append(jvxlData.moleculeXml); +var volumeDataXml = (vertexDataOnly ? null : jvxlData.jvxlVolumeDataXml); +if (volumeDataXml == null) volumeDataXml = ( new J.jvxl.data.VolumeData()).setVolumetricXml(); +data.append(volumeDataXml); +JU.XmlUtil.openTagAttr(data, "jvxlSurfaceSet", Clazz.newArray(-1, ["count", "" + (nSurfaces > 0 ? nSurfaces : 1)])); +if (isHeaderOnly) return data.toString(); +}var sb; +var type = (vertexDataOnly ? "pmesh" : jvxlData.jvxlPlane == null ? "isosurface" : "plane"); +if (jvxlData.jvxlColorData != null && jvxlData.jvxlColorData.length > 0) type = "mapped " + type; +JU.XmlUtil.openTagAttr(data, "jvxlSurface", Clazz.newArray(-1, ["type", type])); +data.append(J.jvxl.data.JvxlCoder.jvxlGetInfoData(jvxlData, vertexDataOnly)); +J.jvxl.data.JvxlCoder.jvxlAppendCommandState(data, comment, state); +if (title != null || msg != null && msg.length > 0) { +sb = new JU.SB(); +if (msg != null && msg.length > 0) sb.append(msg).append("\n"); +if (title != null) for (var i = 0; i < title.length; i++) sb.append(title[i]).appendC('\n'); + +JU.XmlUtil.appendCdata(data, "jvxlSurfaceTitle", null, sb.toString()); +}sb = new JU.SB(); +JU.XmlUtil.openTagAttr(sb, "jvxlSurfaceData", (vertexDataOnly || jvxlData.jvxlPlane == null ? null : jvxlData.mapLattice == null ? Clazz.newArray(-1, ["plane", JU.Escape.eP4(jvxlData.jvxlPlane)]) : Clazz.newArray(-1, ["plane", JU.Escape.eP4(jvxlData.jvxlPlane), "maplattice", JU.Escape.eP(jvxlData.mapLattice)]))); +if (vertexDataOnly) { +J.jvxl.data.JvxlCoder.appendXmlVertexOnlyData(sb, jvxlData, meshData, true); +} else if (jvxlData.jvxlPlane == null) { +if (jvxlData.jvxlEdgeData == null) return ""; +J.jvxl.data.JvxlCoder.appendXmlEdgeData(sb, jvxlData); +J.jvxl.data.JvxlCoder.appendXmlColorData(sb, jvxlData.jvxlColorData, true, jvxlData.isJvxlPrecisionColor, jvxlData.valueMappedToRed, jvxlData.valueMappedToBlue); +} else { +J.jvxl.data.JvxlCoder.appendXmlColorData(sb, jvxlData.jvxlColorData, true, jvxlData.isJvxlPrecisionColor, jvxlData.valueMappedToRed, jvxlData.valueMappedToBlue); +}J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(sb, "jvxlInvalidatedVertexData", jvxlData.jvxlExcluded[1], -1, null); +if (jvxlData.excludedVertexCount > 0) { +J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(sb, "jvxlExcludedVertexData", jvxlData.jvxlExcluded[0], jvxlData.excludedVertexCount, null); +J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(sb, "jvxlExcludedPlaneData", jvxlData.jvxlExcluded[2], -1, null); +}J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(sb, "jvxlExcludedTriangleData", jvxlData.jvxlExcluded[3], jvxlData.excludedTriangleCount, null); +JU.XmlUtil.closeTag(sb, "jvxlSurfaceData"); +var len = sb.length(); +data.appendSB(sb); +if (jvxlData.vContours != null && jvxlData.vContours.length > 0) { +J.jvxl.data.JvxlCoder.jvxlEncodeContourData(jvxlData.vContours, data); +}if (jvxlData.vertexColorMap != null) { +if (jvxlData.baseColor == null) JU.XmlUtil.openTag(data, "jvxlVertexColorData"); + else JU.XmlUtil.openTagAttr(data, "jvxlVertexColorData", Clazz.newArray(-1, ["baseColor", jvxlData.baseColor])); +for (var entry, $entry = jvxlData.vertexColorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(data, "jvxlColorMap", entry.getValue(), -1, Clazz.newArray(-1, ["color", entry.getKey()])); + +jvxlData.vertexColorMap = null; +JU.XmlUtil.closeTag(data, "jvxlVertexColorData"); +}JU.XmlUtil.closeTag(data, "jvxlSurface"); +if (includeHeader) { +JU.XmlUtil.closeTag(data, "jvxlSurfaceSet"); +JU.XmlUtil.closeTag(data, "jvxl"); +}return J.jvxl.data.JvxlCoder.jvxlSetCompressionRatio(data, jvxlData, len); +}, "J.jvxl.data.JvxlData,J.jvxl.data.MeshData,~A,~S,~B,~N,~S,~S"); +c$.checkHaveXMLUtil = Clazz.defineMethod(c$, "checkHaveXMLUtil", +function(){ +if (!J.jvxl.data.JvxlCoder.haveXMLUtil) { +if (JV.Viewer.isJS) J.api.Interface.getInterface("JU.XmlUtil", null, "show"); +J.jvxl.data.JvxlCoder.haveXMLUtil = true; +}}); +c$.appendEncodedBitSetTag = Clazz.defineMethod(c$, "appendEncodedBitSetTag", +function(sb, name, bs, count, attribs){ +if (count < 0) count = JU.BSUtil.cardinalityOf(bs); +if (count == 0) return; +var sb1 = new JU.SB(); +sb1.append("\n "); +J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(bs, -1, sb1); +JU.XmlUtil.appendTagObj(sb, name, Clazz.newArray(-1, [attribs, "bsEncoding", "base90+35", "count", "" + count, "len", "" + bs.length()]), J.jvxl.data.JvxlCoder.jvxlCompressString(sb1.toString(), true)); +}, "JU.SB,~S,JU.BS,~N,~A"); +c$.jvxlSetCompressionRatio = Clazz.defineMethod(c$, "jvxlSetCompressionRatio", +function(data, jvxlData, len){ +var s = data.toString(); +var r = Clazz.floatToInt(jvxlData.nBytes > 0 ? (jvxlData.nBytes) / len : ((jvxlData.nPointsX * jvxlData.nPointsY * jvxlData.nPointsZ * 13)) / len); +return JU.PT.rep(s, "\"not calculated\"", (r > 0 ? "\"" + r + ":1\"" : "\"?\"")); +}, "JU.SB,J.jvxl.data.JvxlData,~N"); +c$.appendXmlEdgeData = Clazz.defineMethod(c$, "appendXmlEdgeData", +function(sb, jvxlData){ +JU.XmlUtil.appendTagObj(sb, "jvxlEdgeData", Clazz.newArray(-1, ["count", "" + (jvxlData.jvxlEdgeData.length - 1), "encoding", "base90f1", "bsEncoding", "base90+35c", "isXLowToHigh", "" + jvxlData.isXLowToHigh, "data", J.jvxl.data.JvxlCoder.jvxlCompressString(jvxlData.jvxlEdgeData, true)]), "\n" + J.jvxl.data.JvxlCoder.jvxlCompressString(jvxlData.jvxlSurfaceData, true)); +}, "JU.SB,J.jvxl.data.JvxlData"); +c$.jvxlAppendCommandState = Clazz.defineMethod(c$, "jvxlAppendCommandState", +function(data, cmd, state){ +if (cmd != null) JU.XmlUtil.appendCdata(data, "jvxlIsosurfaceCommand", null, "\n" + (cmd.indexOf("#") < 0 ? cmd : cmd.substring(0, cmd.indexOf("#"))) + "\n"); +if (state != null) { +if (state.indexOf("** XML ** ") >= 0) { +state = JU.PT.split(state, "** XML **")[1].trim(); +JU.XmlUtil.appendTag(data, "jvxlIsosurfaceState", "\n" + state + "\n"); +} else { +JU.XmlUtil.appendCdata(data, "jvxlIsosurfaceState", null, "\n" + state); +}}}, "JU.SB,~S,~S"); +c$.appendXmlColorData = Clazz.defineMethod(c$, "appendXmlColorData", +function(sb, data, isEncoded, isPrecisionColor, value1, value2){ +var n; +if (data == null || (n = data.length - 1) < 0) return; +if (isPrecisionColor) n /= 2; +JU.XmlUtil.appendTagObj(sb, "jvxlColorData", Clazz.newArray(-1, ["count", "" + n, "encoding", (isEncoded ? "base90f" + (isPrecisionColor ? "2" : "1") : "none"), "min", "" + value1, "max", "" + value2, "data", J.jvxl.data.JvxlCoder.jvxlCompressString(data, true)]), null); +}, "JU.SB,~S,~B,~B,~N,~N"); +c$.jvxlGetInfo = Clazz.defineMethod(c$, "jvxlGetInfo", +function(jvxlData){ +return J.jvxl.data.JvxlCoder.jvxlGetInfoData(jvxlData, jvxlData.vertexDataOnly); +}, "J.jvxl.data.JvxlData"); +c$.jvxlGetInfoData = Clazz.defineMethod(c$, "jvxlGetInfoData", +function(jvxlData, vertexDataOnly){ +if (jvxlData.jvxlSurfaceData == null) return ""; +J.jvxl.data.JvxlCoder.checkHaveXMLUtil(); +var attribs = new JU.Lst(); +var nSurfaceInts = jvxlData.nSurfaceInts; +var bytesUncompressedEdgeData = (vertexDataOnly ? 0 : jvxlData.jvxlEdgeData.length - 1); +var nColorData = (jvxlData.jvxlColorData == null ? -1 : (jvxlData.jvxlColorData.length - 1)); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n isModelConnected", "" + jvxlData.isModelConnected); +if (!vertexDataOnly) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n cutoff", (jvxlData.cutoffRange == null ? "" + jvxlData.cutoff : jvxlData.cutoffRange[0] + " " + jvxlData.cutoffRange[1])); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n isCutoffAbsolute", "" + jvxlData.isCutoffAbsolute); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n pointsPerAngstrom", "" + jvxlData.pointsPerAngstrom); +var n = jvxlData.jvxlSurfaceData.length + bytesUncompressedEdgeData + nColorData + 1; +if (n > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nBytesData", "" + n); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n isXLowToHigh", "" + jvxlData.isXLowToHigh); +if (jvxlData.jvxlPlane == null) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nSurfaceInts", "" + nSurfaceInts); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nBytesUncompressedEdgeData", "" + bytesUncompressedEdgeData); +}if (nColorData > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nBytesUncompressedColorData", "" + nColorData); +}jvxlData.excludedVertexCount = JU.BSUtil.cardinalityOf(jvxlData.jvxlExcluded[0]); +jvxlData.excludedTriangleCount = JU.BSUtil.cardinalityOf(jvxlData.jvxlExcluded[3]); +if (jvxlData.excludedVertexCount > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nExcludedVertexes", "" + jvxlData.excludedVertexCount); +if (jvxlData.excludedTriangleCount > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nExcludedTriangles", "" + jvxlData.excludedTriangleCount); +var n = JU.BSUtil.cardinalityOf(jvxlData.jvxlExcluded[1]); +if (n > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nInvalidatedVertexes", "" + n); +if (jvxlData.slabInfo != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n slabInfo", jvxlData.slabInfo); +if (jvxlData.isJvxlPrecisionColor) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n precisionColor", "true"); +if (jvxlData.colorDensity) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorDensity", "true"); +if (!Float.isNaN(jvxlData.pointSize)) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n pointSize", "" + jvxlData.pointSize); + else if (jvxlData.diameter != 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n diameter", "" + jvxlData.diameter); +if (!jvxlData.allowVolumeRender) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n allowVolumeRender", "false"); +if (jvxlData.jvxlPlane == null || vertexDataOnly) { +if (jvxlData.fixedLattice != null && !vertexDataOnly) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n fixedLattice", "" + jvxlData.fixedLattice); +if (jvxlData.isContoured) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n contoured", "true"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorMapped", "true"); +} else if (jvxlData.isBicolorMap) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n bicolorMap", "true"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorNegative", JU.C.getHexCode(jvxlData.minColorIndex)); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorPositive", JU.C.getHexCode(jvxlData.maxColorIndex)); +} else if (nColorData > 0) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorMapped", "true"); +}if (jvxlData.vContours != null && jvxlData.vContours.length > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nContourData", "" + jvxlData.vContours.length); +} else { +if (jvxlData.mapLattice != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n mapLattice", "" + jvxlData.mapLattice); +if (jvxlData.scale3d != 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n scale3d", "" + jvxlData.scale3d); +if (nColorData > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorMapped", "true"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n plane", JU.Escape.eP4(jvxlData.jvxlPlane)); +}if (jvxlData.color != null && jvxlData.color.indexOf("null") < 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n color", jvxlData.color); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n translucency", "" + jvxlData.translucency); +if (jvxlData.meshColor != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n meshColor", jvxlData.meshColor); +if (jvxlData.colorScheme != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorScheme", jvxlData.colorScheme); +if (jvxlData.rendering != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n rendering", jvxlData.rendering); +if (jvxlData.thisSet != null) { +var s = J.jvxl.data.JvxlCoder.subsetString(jvxlData.thisSet); +if (s.startsWith("[")) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n subset", s); + else J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n set", s); +}if (jvxlData.slabValue != -2147483648) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n slabValue", "" + jvxlData.slabValue); +if (jvxlData.isSlabbable) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n slabbable", "true"); +if (jvxlData.nVertexColors > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nVertexColors", "" + jvxlData.nVertexColors); +var min = (jvxlData.mappedDataMin == 3.4028235E38 ? 0 : jvxlData.mappedDataMin); +var blue = (jvxlData.isColorReversed ? jvxlData.valueMappedToRed : jvxlData.valueMappedToBlue); +var red = (jvxlData.isColorReversed ? jvxlData.valueMappedToBlue : jvxlData.valueMappedToRed); +if (jvxlData.jvxlColorData != null && jvxlData.jvxlColorData.length > 0 && !jvxlData.isBicolorMap) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n dataMinimum", "" + min); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n dataMaximum", "" + jvxlData.mappedDataMax); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n valueMappedToRed", "" + red); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n valueMappedToBlue", "" + blue); +}if (jvxlData.isContoured) { +if (jvxlData.contourValues == null || jvxlData.contourColixes == null) { +if (jvxlData.vContours == null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nContours", "" + Math.abs(jvxlData.nContours)); +} else { +if (jvxlData.jvxlPlane != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n contoured", "true"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nContours", "" + jvxlData.contourValues.length); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n contourValues", JU.Escape.eAF(jvxlData.contourValuesUsed == null ? jvxlData.contourValues : jvxlData.contourValuesUsed)); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n contourColors", jvxlData.contourColors); +}if (jvxlData.thisContour > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n thisContour", "" + jvxlData.thisContour); +}if (jvxlData.insideOut) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n insideOut", "true"); +if (jvxlData.vertexDataOnly) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n note", "vertex/face data only"); + else if (jvxlData.isXLowToHigh) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n note", "progressive JVXL+ -- X values read from low(0) to high(" + (jvxlData.nPointsX - 1) + ")"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n xyzMin", JU.Escape.eP(jvxlData.boundingBox[0])); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n xyzMax", JU.Escape.eP(jvxlData.boundingBox[1])); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n approximateCompressionRatio", "not calculated"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n jmolVersion", jvxlData.version); +var info = new JU.SB(); +JU.XmlUtil.openTagAttr(info, "jvxlSurfaceInfo", attribs.toArray( new Array(attribs.size()))); +JU.XmlUtil.closeTag(info, "jvxlSurfaceInfo"); +return info.toString(); +}, "J.jvxl.data.JvxlData,~B"); +c$.subsetString = Clazz.defineMethod(c$, "subsetString", +function(bs){ +var n = bs.cardinality(); +if (n > 1) { +var a = "[ "; +for (var ia = bs.nextSetBit(0); ia >= 0; ia = bs.nextSetBit(ia)) a += (++ia) + " "; + +return a + "]"; +}return "" + (bs.nextSetBit(0) + 1); +}, "JU.BS"); +c$.addAttrib = Clazz.defineMethod(c$, "addAttrib", +function(attribs, name, value){ +attribs.addLast( Clazz.newArray(-1, [name, value])); +}, "JU.Lst,~S,~S"); +c$.jvxlEncodeContourData = Clazz.defineMethod(c$, "jvxlEncodeContourData", +function(contours, sb){ +JU.XmlUtil.openTagAttr(sb, "jvxlContourData", Clazz.newArray(-1, ["count", "" + contours.length])); +for (var i = 0; i < contours.length; i++) { +if (contours[i].size() < 6) { +continue; +}var nPolygons = (contours[i].get(0)).intValue(); +var sb1 = new JU.SB(); +sb1.append("\n"); +var bs = contours[i].get(1); +J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(bs, nPolygons, sb1); +JU.XmlUtil.appendTagObj(sb, "jvxlContour", Clazz.newArray(-1, ["index", "" + i, "value", "" + contours[i].get(2), "color", JU.Escape.escapeColor((contours[i].get(4))[0]), "count", "" + bs.length(), "encoding", "base90iff1", "bsEncoding", "base90+35c", "data", J.jvxl.data.JvxlCoder.jvxlCompressString(contours[i].get(5).toString(), true)]), J.jvxl.data.JvxlCoder.jvxlCompressString(sb1.toString(), true)); +} +JU.XmlUtil.closeTag(sb, "jvxlContourData"); +}, "~A,JU.SB"); +c$.set3dContourVector = Clazz.defineMethod(c$, "set3dContourVector", +function(v, polygonIndexes, vertices){ +if (v.size() < 6) return; +var fData = v.get(5); +var bs = v.get(1); +var pt = 0; +var nBuf = fData.length(); +var type = 0; +var c1 = ' '; +var c2 = ' '; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var vertexIndexes = polygonIndexes[i]; +while (pt < nBuf && !JU.PT.isDigit(c1 = fData.charAt(pt++))) { +} +type = c1.charCodeAt(0) - 48; +while (pt < nBuf && JU.PT.isWhitespace(c1 = fData.charAt(pt++))) { +} +while (pt < nBuf && JU.PT.isWhitespace(c2 = fData.charAt(pt++))) { +} +var f1 = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(c1.charCodeAt(0), 35, 90, 0); +var f2 = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(c2.charCodeAt(0), 35, 90, 0); +var i1; +var i2; +var i3; +var i4; +if ((type & 1) == 0) { +i1 = vertexIndexes[1]; +i2 = i3 = vertexIndexes[2]; +i4 = vertexIndexes[0]; +} else { +i1 = vertexIndexes[0]; +i2 = vertexIndexes[1]; +if ((type & 2) != 0) { +i3 = i2; +i4 = vertexIndexes[2]; +} else { +i3 = vertexIndexes[2]; +i4 = i1; +}}v.addLast(J.jvxl.data.JvxlCoder.getContourPoint(vertices, i1, i2, f1)); +v.addLast(J.jvxl.data.JvxlCoder.getContourPoint(vertices, i3, i4, f2)); +} +}, "JU.Lst,~A,~A"); +c$.getContourPoint = Clazz.defineMethod(c$, "getContourPoint", +function(vertices, i, j, f){ +var pt = new JU.P3(); +pt.sub2(vertices[j], vertices[i]); +pt.scaleAdd2(f, pt, vertices[i]); +return pt; +}, "~A,~N,~N,~N"); +c$.appendContourTriangleIntersection = Clazz.defineMethod(c$, "appendContourTriangleIntersection", +function(type, f1, f2, fData){ +fData.appendI(type); +fData.appendC(J.jvxl.data.JvxlCoder.jvxlFractionAsCharacter(f1)); +fData.appendC(J.jvxl.data.JvxlCoder.jvxlFractionAsCharacter(f2)); +}, "~N,~N,~N,JU.SB"); +c$.jvxlCreateColorData = Clazz.defineMethod(c$, "jvxlCreateColorData", +function(jvxlData, vertexValues){ +if (vertexValues == null) { +jvxlData.jvxlColorData = ""; +return; +}var writePrecisionColor = jvxlData.isJvxlPrecisionColor; +var doTruncate = jvxlData.isTruncated; +var colorFractionBase = jvxlData.colorFractionBase; +var colorFractionRange = jvxlData.colorFractionRange; +var valueBlue = jvxlData.valueMappedToBlue; +var valueRed = jvxlData.valueMappedToRed; +var vertexCount = (jvxlData.saveVertexCount > 0 ? jvxlData.saveVertexCount : jvxlData.vertexCount); +if (vertexCount > vertexValues.length) System.out.println("JVXLCODER ERROR"); +var isPrecisionColor = jvxlData.isJvxlPrecisionColor; +var min = (isPrecisionColor ? jvxlData.mappedDataMin : jvxlData.valueMappedToRed); +var max = (isPrecisionColor ? jvxlData.mappedDataMax : jvxlData.valueMappedToBlue); +if (vertexValues.length < vertexCount) System.out.println("JVXLCOLOR OHOHO"); +jvxlData.jvxlColorData = J.jvxl.data.JvxlCoder.jvxlEncodeColorData(vertexValues, min, max, colorFractionBase, colorFractionRange, jvxlData.isTruncated, isPrecisionColor); +}, "J.jvxl.data.JvxlData,~A"); +c$.jvxlEncodeColorData = Clazz.defineMethod(c$, "jvxlEncodeColorData", +function(vertexValues, min, max, colorFractionBase, colorFractionRange, doTruncate, isPrecisionColor){ +var list1 = new JU.SB(); +var list2 = new JU.SB(); +for (var i = 0, n = vertexValues.length; i < n; i++) { +var value = vertexValues[i]; +if (Float.isNaN(value)) value = min; +if (doTruncate) value = (value > 0 ? 0.999 : -0.999); +if (isPrecisionColor) J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(value, min, max, colorFractionBase, colorFractionRange, list1, list2); + else list1.appendC(J.jvxl.data.JvxlCoder.jvxlValueAsCharacter(value, min, max, colorFractionBase, colorFractionRange)); +} +return list1.appendSB(list2).appendC('\n').toString(); +}, "~A,~N,~N,~N,~N,~B,~B"); +c$.appendXmlVertexOnlyData = Clazz.defineMethod(c$, "appendXmlVertexOnlyData", +function(sb, jvxlData, meshData, escapeXml){ +var vertexIdNew = Clazz.newIntArray (meshData.vc, 0); +if (J.jvxl.data.JvxlCoder.appendXmlTriangleData(sb, meshData.pis, meshData.pc, meshData.bsSlabDisplay, vertexIdNew, escapeXml)) J.jvxl.data.JvxlCoder.appendXmlVertexData(sb, jvxlData, vertexIdNew, meshData.vs, meshData.vvs, meshData.vc, meshData.polygonColorData, meshData.pc, meshData.bsSlabDisplay, jvxlData.vertexColors, jvxlData.jvxlColorData.length > 0, escapeXml); +}, "JU.SB,J.jvxl.data.JvxlData,J.jvxl.data.MeshData,~B"); +c$.appendXmlTriangleData = Clazz.defineMethod(c$, "appendXmlTriangleData", +function(sb, triangles, nData, bsSlabDisplay, vertexIdNew, escapeXml){ +var list1 = new JU.SB(); +var list2 = new JU.SB(); +var ilast = 1; +var p = 0; +var inew = 0; +var addPlus = false; +var nTri = 0; +var removeSlabbed = (bsSlabDisplay != null); +for (var i = 0; i < nData; ) { +if (triangles[i] == null || (removeSlabbed && !bsSlabDisplay.get(i))) { +i++; +continue; +}var idata = triangles[i][p]; +if (vertexIdNew[idata] > 0) { +idata = vertexIdNew[idata]; +} else { +idata = vertexIdNew[idata] = ++inew; +}var diff = idata - ilast; +ilast = idata; +if (diff == 0) { +list1.appendC('!'); +addPlus = false; +} else if (diff > 32) { +if (addPlus) list1.appendC('+'); +list1.appendI(diff); +addPlus = true; +} else if (diff < -32) { +list1.appendI(diff); +addPlus = true; +} else { +list1.appendC(String.fromCharCode(92 + diff)); +addPlus = false; +}if (++p % 3 == 0) { +list2.appendI(triangles[i][3]); +p = 0; +i++; +nTri++; +}} +if (list1.length() == 0) return true; +JU.XmlUtil.appendTagObj(sb, "jvxlTriangleData", Clazz.newArray(-1, ["count", "" + nTri, "encoding", "jvxltdiff", "data", J.jvxl.data.JvxlCoder.jvxlCompressString(list1.toString(), escapeXml)]), null); +JU.XmlUtil.appendTagObj(sb, "jvxlTriangleEdgeData", Clazz.newArray(-1, ["count", "" + nTri, "encoding", "jvxlsc", "data", J.jvxl.data.JvxlCoder.jvxlCompressString(list2.toString(), escapeXml)]), null); +return true; +}, "JU.SB,~A,~N,JU.BS,~A,~B"); +c$.appendXmlVertexData = Clazz.defineMethod(c$, "appendXmlVertexData", +function(sb, jvxlData, vertexIdNew, vertices, vertexValues, vertexCount, polygonColorData, polygonCount, bsSlabDisplay, vertexColors, addColorData, escapeXml){ +var colorFractionBase = jvxlData.colorFractionBase; +var colorFractionRange = jvxlData.colorFractionRange; +var p; +var min = jvxlData.boundingBox[0]; +var max = jvxlData.boundingBox[1]; +var list1 = new JU.SB(); +var list2 = new JU.SB(); +var vertexIdOld = null; +var removeSlabbed = (bsSlabDisplay != null); +if (polygonCount > 0) { +if (removeSlabbed) polygonCount = bsSlabDisplay.cardinality(); +removeSlabbed = false; +vertexIdOld = Clazz.newIntArray (vertexCount, 0); +for (var i = 0; i < vertexCount; i++) if (vertexIdNew[i] > 0) vertexIdOld[vertexIdNew[i] - 1] = i; + +}var n = 0; +for (var i = 0; i < vertexCount; i++) if (!removeSlabbed || bsSlabDisplay.get(i)) { +n++; +p = vertices[(polygonCount == 0 ? i : vertexIdOld[i])]; +J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(p.x, min.x, max.x, colorFractionBase, colorFractionRange, list1, list2); +J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(p.y, min.y, max.y, colorFractionBase, colorFractionRange, list1, list2); +J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(p.z, min.z, max.z, colorFractionBase, colorFractionRange, list1, list2); +} +list1.appendSB(list2); +JU.XmlUtil.appendTagObj(sb, "jvxlVertexData", Clazz.newArray(-1, ["count", "" + n, "min", JU.Escape.eP(min), "max", JU.Escape.eP(max), "encoding", "base90xyz2", "data", J.jvxl.data.JvxlCoder.jvxlCompressString(list1.toString(), escapeXml)]), null); +if (polygonColorData != null) JU.XmlUtil.appendTagObj(sb, "jvxlPolygonColorData", Clazz.newArray(-1, ["encoding", "jvxlnc", "count", "" + polygonCount]), "\n" + polygonColorData); +if (!addColorData) return; +list1 = new JU.SB(); +list2 = new JU.SB(); +if (vertexColors == null) { +for (var i = 0; i < vertexCount; i++) if (!removeSlabbed || bsSlabDisplay.get(i)) { +var value = vertexValues[polygonCount == 0 ? i : vertexIdOld[i]]; +J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(value, jvxlData.mappedDataMin, jvxlData.mappedDataMax, colorFractionBase, colorFractionRange, list1, list2); +} +} else { +var lastColor = 0; +list1.appendI(n).append(" "); +for (var i = 0; i < vertexCount; i++) if (!removeSlabbed || bsSlabDisplay.get(i)) { +var c = vertexColors[polygonCount == 0 ? i : vertexIdOld[i]]; +if (c == lastColor) c = 0; + else lastColor = c; +list1.appendI(c); +list1.append(" "); +} +}J.jvxl.data.JvxlCoder.appendXmlColorData(sb, list1.appendSB(list2).append("\n").toString(), (vertexColors == null), true, jvxlData.valueMappedToRed, jvxlData.valueMappedToBlue); +}, "JU.SB,J.jvxl.data.JvxlData,~A,~A,~A,~N,~S,~N,JU.BS,~A,~B,~B"); +c$.jvxlFractionAsCharacter = Clazz.defineMethod(c$, "jvxlFractionAsCharacter", +function(fraction){ +return J.jvxl.data.JvxlCoder.jvxlFractionAsCharacterRange(fraction, 35, 90); +}, "~N"); +c$.jvxlFractionAsCharacterRange = Clazz.defineMethod(c$, "jvxlFractionAsCharacterRange", +function(fraction, base, range){ +if (fraction > 0.9999) fraction = 0.9999; + else if (Float.isNaN(fraction)) fraction = 1.0001; +var ich = Clazz.doubleToInt(Math.floor(fraction * range + base)); +if (ich < base) return String.fromCharCode(base); +if (ich == 92) return '!'; +return String.fromCharCode(ich); +}, "~N,~N,~N"); +c$.jvxlAppendCharacter2 = Clazz.defineMethod(c$, "jvxlAppendCharacter2", +function(value, min, max, base, range, list1, list2){ +var fraction = (min == max ? value : (value - min) / (max - min)); +var ch1 = J.jvxl.data.JvxlCoder.jvxlFractionAsCharacterRange(fraction, base, range); +list1.appendC(ch1); +fraction -= J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(ch1.charCodeAt(0), base, range, 0); +list2.appendC(J.jvxl.data.JvxlCoder.jvxlFractionAsCharacterRange(fraction * range, base, range)); +}, "~N,~N,~N,~N,~N,JU.SB,JU.SB"); +c$.jvxlFractionFromCharacter = Clazz.defineMethod(c$, "jvxlFractionFromCharacter", +function(ich, base, range, fracOffset){ +if (ich == base + range) return NaN; +if (ich < base) ich = 92; +var fraction = (ich - base + fracOffset) / range; +if (fraction < 0) return 0; +if (fraction > 1) return 0.999999; +return fraction; +}, "~N,~N,~N,~N"); +c$.jvxlFractionFromCharacter2 = Clazz.defineMethod(c$, "jvxlFractionFromCharacter2", +function(ich1, ich2, base, range){ +var fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(ich1, base, range, 0); +var remains = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(ich2, base, range, 0.5); +return fraction + remains / range; +}, "~N,~N,~N,~N"); +c$.jvxlValueAsCharacter = Clazz.defineMethod(c$, "jvxlValueAsCharacter", +function(value, min, max, base, range){ +var fraction = (min == max ? value : (value - min) / (max - min)); +return J.jvxl.data.JvxlCoder.jvxlFractionAsCharacterRange(fraction, base, range); +}, "~N,~N,~N,~N,~N"); +c$.jvxlValueFromCharacter2 = Clazz.defineMethod(c$, "jvxlValueFromCharacter2", +function(ich, ich2, min, max, base, range){ +var fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(ich, ich2, base, range); +return (max == min ? fraction : min + fraction * (max - min)); +}, "~N,~N,~N,~N,~N,~N"); +c$.jvxlEncodeBitSet0 = Clazz.defineMethod(c$, "jvxlEncodeBitSet0", +function(bs, nPoints, sb){ +var dataCount = 0; +var prevCount = -1; +var nPrev = 0; +if (nPoints < 0) nPoints = bs.length(); +var n = 0; +var isset = false; +var lastPoint = nPoints - 1; +for (var i = 0; i < nPoints; ++i) { +if (isset == bs.get(i)) { +dataCount++; +} else { +if (dataCount == prevCount && i != lastPoint) { +nPrev++; +} else { +if (nPrev > 0) { +sb.appendC(' ').appendI(-nPrev); +nPrev = 0; +n++; +}sb.appendC(' ').appendI(dataCount); +n++; +prevCount = dataCount; +}dataCount = 1; +isset = !isset; +}} +sb.appendC(' ').appendI(dataCount).appendC('\n'); +return n; +}, "JU.BS,~N,JU.SB"); +c$.jvxlEncodeBitSet = Clazz.defineMethod(c$, "jvxlEncodeBitSet", +function(bs){ +var sb = new JU.SB(); +J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(bs, -1, sb); +return sb.toString(); +}, "JU.BS"); +c$.jvxlEncodeBitSetBuffer = Clazz.defineMethod(c$, "jvxlEncodeBitSetBuffer", +function(bs, nPoints, sb){ +var dataCount = 0; +var n = 0; +var isset = false; +if (nPoints < 0) nPoints = bs.length(); +if (nPoints == 0) return 0; +sb.append("-"); +for (var i = 0; i < nPoints; ++i) { +if (isset == bs.get(i)) { +dataCount++; +} else { +J.jvxl.data.JvxlCoder.jvxlAppendEncodedNumber(sb, dataCount, 35, 90); +n++; +dataCount = 1; +isset = !isset; +}} +J.jvxl.data.JvxlCoder.jvxlAppendEncodedNumber(sb, dataCount, 35, 90); +sb.appendC('\n'); +return n; +}, "JU.BS,~N,JU.SB"); +c$.jvxlAppendEncodedNumber = Clazz.defineMethod(c$, "jvxlAppendEncodedNumber", +function(sb, n, base, range){ +var isInRange = (n < range); +if (n == 0) sb.appendC(String.fromCharCode(base)); + else if (!isInRange) sb.appendC(String.fromCharCode(base + range)); +while (n > 0) { +var n1 = Clazz.doubleToInt(n / range); +var x = base + n - n1 * range; +if (x == 92) x = 33; +sb.appendC(String.fromCharCode(x)); +n = n1; +} +if (!isInRange) sb.append(" "); +}, "JU.SB,~N,~N,~N"); +c$.jvxlDecodeBitSetRange = Clazz.defineMethod(c$, "jvxlDecodeBitSetRange", +function(data, base, range){ +var bs = new JU.BS(); +var dataCount = 0; +var ptr = 0; +var isset = false; +var next = Clazz.newIntArray (1, 0); +while ((dataCount = J.jvxl.data.JvxlCoder.jvxlParseEncodedInt(data, base, range, next)) != -2147483648) { +if (isset) bs.setBits(ptr, ptr + dataCount); +ptr += dataCount; +isset = !isset; +} +return bs; +}, "~S,~N,~N"); +c$.jvxlParseEncodedInt = Clazz.defineMethod(c$, "jvxlParseEncodedInt", +function(str, offset, base, next){ +var digitSeen = false; +var value = 0; +var ich = next[0]; +var ichMax = str.length; +if (ich < 0) return -2147483648; +while (ich < ichMax && JU.PT.isWhitespace(str.charAt(ich))) ++ich; + +if (ich >= ichMax) return -2147483648; +var factor = 1; +var isLong = ((str.charAt(ich)).charCodeAt(0) == (offset + base)); +if (isLong) ich++; +while (ich < ichMax && !JU.PT.isWhitespace(str.charAt(ich))) { +var i = (str.charAt(ich)).charCodeAt(0); +if (i < offset) i = 92; +value += (i - offset) * factor; +digitSeen = true; +++ich; +if (!isLong) break; +factor *= base; +} +if (!digitSeen) value = -2147483648; +next[0] = ich; +return value; +}, "~S,~N,~N,~A"); +c$.jvxlDecodeBitSet = Clazz.defineMethod(c$, "jvxlDecodeBitSet", +function(data){ +if (data.startsWith("-")) return J.jvxl.data.JvxlCoder.jvxlDecodeBitSetRange(J.jvxl.data.JvxlCoder.jvxlDecompressString(data.substring(1)), 35, 90); +var bs = new JU.BS(); +var dataCount = 0; +var lastCount = 0; +var nPrev = 0; +var ptr = 0; +var isset = false; +var next = Clazz.newIntArray (1, 0); +while (true) { +dataCount = (nPrev++ < 0 ? dataCount : JU.PT.parseIntNext(data, next)); +if (dataCount == -2147483648) break; +if (dataCount < 0) { +nPrev = dataCount; +dataCount = lastCount; +continue; +}if (isset) bs.setBits(ptr, ptr + dataCount); +ptr += dataCount; +lastCount = dataCount; +isset = !isset; +} +return bs; +}, "~S"); +c$.jvxlCompressString = Clazz.defineMethod(c$, "jvxlCompressString", +function(data, escapeXml){ +if (data.indexOf("~") >= 0) return data; +var dataOut = new JU.SB(); +var chLast = '\u0000'; +var escaped = false; +var lastEscaped = false; +var nLast = 0; +var n = data.length; +for (var i = 0; i <= n; i++) { +var ch = (i == n ? '\0' : data.charAt(i)); +switch ((ch).charCodeAt(0)) { +case 10: +case 13: +continue; +case 38: +case 60: +escaped = escapeXml; +break; +default: +escaped = false; +} +if (ch == chLast) { +++nLast; +ch = '\0'; +} else if (nLast > 0 || lastEscaped) { +if (nLast < 4 && !lastEscaped || chLast == ' ' || chLast == '\t') { +while (--nLast >= 0) dataOut.appendC(chLast); + +} else { +if (lastEscaped) lastEscaped = false; + else dataOut.appendC('~'); +dataOut.appendI(nLast); +dataOut.appendC(' '); +}nLast = 0; +}if (ch != '\0') { +if (escaped) { +lastEscaped = true; +escaped = false; +dataOut.appendC('~'); +chLast = ch; +ch = String.fromCharCode(ch.charCodeAt(0)-1); +} else { +chLast = ch; +}dataOut.appendC(ch); +}} +return dataOut.toString(); +}, "~S,~B"); +c$.jvxlDecompressString = Clazz.defineMethod(c$, "jvxlDecompressString", +function(data){ +if (data.indexOf("~") < 0) return data; +var dataOut = new JU.SB(); +var chLast = '\u0000'; +var next = Clazz.newIntArray (1, 0); +for (var i = 0; i < data.length; i++) { +var ch = data.charAt(i); +if (ch == '~') { +next[0] = ++i; +switch ((ch = data.charAt(i)).charCodeAt(0)) { +case 59: +case 37: +next[0]++; +dataOut.appendC(chLast = (ch = String.fromCharCode(ch.charCodeAt(0)+1))); +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +case 55: +case 56: +case 57: +var nChar = JU.PT.parseIntNext(data, next); +for (var c = 0; c < nChar; c++) dataOut.appendC(chLast); + +i = next[0]; +continue; +case 126: +--i; +break; +default: +JU.Logger.error("Error uncompressing string " + data.substring(0, i) + "?"); +} +}dataOut.appendC(ch); +chLast = ch; +} +return dataOut.toString(); +}, "~S"); +c$.jvxlCreateHeaderWithoutTitleOrAtoms = Clazz.defineMethod(c$, "jvxlCreateHeaderWithoutTitleOrAtoms", +function(v, bs){ +J.jvxl.data.JvxlCoder.jvxlCreateHeader(v, bs); +}, "J.jvxl.data.VolumeData,JU.SB"); +c$.jvxlCreateHeader = Clazz.defineMethod(c$, "jvxlCreateHeader", +function(v, sb){ +v.setVolumetricXml(); +if (sb.length() == 0) sb.append("Line 1\nLine 2\n"); +}, "J.jvxl.data.VolumeData,JU.SB"); +c$.haveXMLUtil = false; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/JvxlData.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/JvxlData.js new file mode 100755 index 000000000000..df2ab2f7e06d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/JvxlData.js @@ -0,0 +1,162 @@ +Clazz.declarePackage("J.jvxl.data"); +Clazz.load(null, "J.jvxl.data.JvxlData", ["JU.SB", "J.jvxl.data.JvxlCoder"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.msg = ""; +this.wasJvxl = false; +this.wasCubic = false; +this.jvxlFileSource = null; +this.jvxlFileTitle = null; +this.jvxlFileMessage = null; +this.jvxlSurfaceData = null; +this.jvxlEdgeData = null; +this.jvxlColorData = null; +this.jvxlVolumeDataXml = null; +this.jvxlExcluded = null; +this.jvxlPlane = null; +this.isJvxlPrecisionColor = false; +this.jvxlDataIsColorMapped = false; +this.jvxlDataIs2dContour = false; +this.jvxlDataIsColorDensity = false; +this.isColorReversed = false; +this.thisSet = null; +this.edgeFractionBase = 35; +this.edgeFractionRange = 90; +this.colorFractionBase = 35; +this.colorFractionRange = 90; +this.isValid = true; +this.insideOut = false; +this.isXLowToHigh = false; +this.isContoured = false; +this.isBicolorMap = false; +this.isTruncated = false; +this.isCutoffAbsolute = false; +this.isModelConnected = false; +this.vertexDataOnly = false; +this.mappedDataMin = 0; +this.mappedDataMax = 0; +this.valueMappedToRed = 0; +this.valueMappedToBlue = 0; +this.cutoff = 0; +this.cutoffRange = null; +this.pointsPerAngstrom = 0; +this.nPointsX = 0; +this.nPointsY = 0; +this.nPointsZ = 0; +this.nBytes = 0; +this.nContours = 0; +this.nEdges = 0; +this.nSurfaceInts = 0; +this.vertexCount = 0; +this.vContours = null; +this.contourColixes = null; +this.contourColors = null; +this.contourValues = null; +this.contourValuesUsed = null; +this.thisContour = -1; +this.scale3d = 0; +this.minColorIndex = -1; +this.maxColorIndex = 0; +this.title = null; +this.version = null; +this.boundingBox = null; +this.excludedTriangleCount = 0; +this.excludedVertexCount = 0; +this.colorDensity = false; +this.pointSize = 0; +this.moleculeXml = null; +this.dataMin = 0; +this.dataMax = 0; +this.saveVertexCount = 0; +this.vertexColorMap = null; +this.nVertexColors = 0; +this.vertexColors = null; +this.color = null; +this.meshColor = null; +this.translucency = 0; +this.colorScheme = null; +this.rendering = null; +this.slabValue = -2147483648; +this.isSlabbable = false; +this.diameter = 0; +this.slabInfo = null; +this.allowVolumeRender = false; +this.voxelVolume = 0; +this.mapLattice = null; +this.fixedLattice = null; +this.baseColor = null; +this.integration = NaN; +this.sbOut = null; +Clazz.instantialize(this, arguments);}, J.jvxl.data, "JvxlData", null); +Clazz.prepareFields (c$, function(){ +this.jvxlExcluded = new Array(4); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "clear", +function(){ +this.allowVolumeRender = true; +this.jvxlSurfaceData = ""; +this.jvxlEdgeData = ""; +this.jvxlColorData = ""; +this.jvxlVolumeDataXml = ""; +this.color = null; +this.colorScheme = null; +this.colorDensity = false; +this.pointSize = NaN; +this.contourValues = null; +this.contourValuesUsed = null; +this.contourColixes = null; +this.contourColors = null; +this.integration = NaN; +this.isSlabbable = false; +this.isValid = true; +this.mapLattice = null; +this.meshColor = null; +this.msg = ""; +this.nPointsX = 0; +this.nVertexColors = 0; +this.fixedLattice = null; +this.slabInfo = null; +this.slabValue = -2147483648; +this.thisSet = null; +this.rendering = null; +this.thisContour = -1; +this.translucency = 0; +this.vContours = null; +this.vertexColorMap = null; +this.vertexColors = null; +this.voxelVolume = 0; +}); +Clazz.defineMethod(c$, "setSurfaceInfo", +function(thePlane, mapLattice, nSurfaceInts, surfaceData){ +this.jvxlSurfaceData = surfaceData; +this.jvxlPlane = thePlane; +this.mapLattice = mapLattice; +this.nSurfaceInts = nSurfaceInts; +}, "JU.P4,JU.P3,~N,~S"); +Clazz.defineMethod(c$, "setSurfaceInfoFromBitSet", +function(bs, thePlane){ +this.setSurfaceInfoFromBitSetPts(bs, thePlane, null); +}, "JU.BS,JU.P4"); +Clazz.defineMethod(c$, "setSurfaceInfoFromBitSetPts", +function(bs, thePlane, mapLattice){ +var sb = new JU.SB(); +var nSurfaceInts = (thePlane != null ? 0 : J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(bs, this.nPointsX * this.nPointsY * this.nPointsZ, sb)); +this.setSurfaceInfo(thePlane, mapLattice, nSurfaceInts, sb.toString()); +}, "JU.BS,JU.P4,JU.P3"); +Clazz.defineMethod(c$, "jvxlUpdateInfo", +function(title, nBytes){ +this.title = title; +this.nBytes = nBytes; +}, "~A,~N"); +c$.updateSurfaceData = Clazz.defineMethod(c$, "updateSurfaceData", +function(edgeData, vertexValues, vertexCount, vertexIncrement, isNaN){ +if (edgeData.length == 0) return ""; +var chars = edgeData.toCharArray(); +for (var i = 0, ipt = 0; i < vertexCount; i += vertexIncrement, ipt++) if (Float.isNaN(vertexValues[i])) chars[ipt] = isNaN; + +return String.copyValueOf(chars); +}, "~S,~A,~N,~N,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/MeshData.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/MeshData.js new file mode 100755 index 000000000000..9bf984722d96 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/MeshData.js @@ -0,0 +1,206 @@ +Clazz.declarePackage("J.jvxl.data"); +Clazz.load(["JU.MeshSurface"], "J.jvxl.data.MeshData", ["java.util.Arrays", "JU.AU", "$.BS", "$.V3", "JU.BSUtil"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.setsSuccessful = false; +this.vertexIncrement = 1; +this.polygonColorData = null; +if (!Clazz.isClassDefined("J.jvxl.data.MeshData.SSet")) { +J.jvxl.data.MeshData.$MeshData$SSet$ (); +} +if (!Clazz.isClassDefined("J.jvxl.data.MeshData.SortSet")) { +J.jvxl.data.MeshData.$MeshData$SortSet$ (); +} +Clazz.instantialize(this, arguments);}, J.jvxl.data, "MeshData", JU.MeshSurface); +Clazz.defineMethod(c$, "addVertexCopy", +function(vertex, value, assocVertex, asCopy){ +if (assocVertex < 0) this.vertexIncrement = -assocVertex; +return this.addVCVal(vertex, value, asCopy); +}, "JU.T3,~N,~N,~B"); +Clazz.defineMethod(c$, "getSurfaceSet", +function(){ +return (this.surfaceSet == null ? this.getSurfaceSetForLevel(0) : this.surfaceSet); +}); +Clazz.defineMethod(c$, "getSurfaceSetForLevel", +function(level){ +if (level == 0) { +this.surfaceSet = new Array(100); +this.nSets = 0; +}this.setsSuccessful = true; +for (var i = 0; i < this.pc; i++) if (this.pis[i] != null) { +if (this.bsSlabDisplay != null && !this.bsSlabDisplay.get(i)) continue; +var p = this.pis[i]; +var pt0 = this.findSet(p[0]); +var pt1 = this.findSet(p[1]); +var pt2 = this.findSet(p[2]); +if (pt0 < 0 && pt1 < 0 && pt2 < 0) { +this.createSet(p[0], p[1], p[2]); +continue; +}if (pt0 == pt1 && pt1 == pt2) continue; +if (pt0 >= 0) { +this.surfaceSet[pt0].set(p[1]); +this.surfaceSet[pt0].set(p[2]); +if (pt1 >= 0 && pt1 != pt0) this.mergeSets(pt0, pt1); +if (pt2 >= 0 && pt2 != pt0 && pt2 != pt1) this.mergeSets(pt0, pt2); +continue; +}if (pt1 >= 0) { +this.surfaceSet[pt1].set(p[0]); +this.surfaceSet[pt1].set(p[2]); +if (pt2 >= 0 && pt2 != pt1) this.mergeSets(pt1, pt2); +continue; +}this.surfaceSet[pt2].set(p[0]); +this.surfaceSet[pt2].set(p[1]); +} +var n = 0; +for (var i = 0; i < this.nSets; i++) if (this.surfaceSet[i] != null) n++; + +var temp = new Array(this.surfaceSet.length); +n = 0; +for (var i = 0; i < this.nSets; i++) if (this.surfaceSet[i] != null) temp[n++] = this.surfaceSet[i]; + +this.nSets = n; +this.surfaceSet = temp; +if (!this.setsSuccessful && level < 2) this.getSurfaceSetForLevel(level + 1); +if (level == 0) { +var sets = new Array(this.nSets); +for (var i = 0; i < this.nSets; i++) sets[i] = Clazz.innerTypeInstance(J.jvxl.data.MeshData.SSet, this, null, this.surfaceSet[i]); + +java.util.Arrays.sort(sets, Clazz.innerTypeInstance(J.jvxl.data.MeshData.SortSet, this, null)); +for (var i = 0; i < this.nSets; i++) this.surfaceSet[i] = sets[i].bs; + +this.setVertexSets(false); +}return this.surfaceSet; +}, "~N"); +Clazz.defineMethod(c$, "setVertexSets", +function(onlyIfNull){ +if (this.surfaceSet == null) return; +var nNull = 0; +for (var i = 0; i < this.nSets; i++) { +if (this.surfaceSet[i] != null && this.surfaceSet[i].nextSetBit(0) < 0) this.surfaceSet[i] = null; +if (this.surfaceSet[i] == null) nNull++; +} +if (nNull > 0) { +var bsNew = new Array(this.nSets - nNull); +for (var i = 0, n = 0; i < this.nSets; i++) if (this.surfaceSet[i] != null) bsNew[n++] = this.surfaceSet[i]; + +this.surfaceSet = bsNew; +this.nSets -= nNull; +} else if (onlyIfNull) { +return; +}this.vertexSets = Clazz.newIntArray (this.vc, 0); +for (var i = 0; i < this.nSets; i++) for (var j = this.surfaceSet[i].nextSetBit(0); j >= 0; j = this.surfaceSet[i].nextSetBit(j + 1)) this.vertexSets[j] = i; + + +}, "~B"); +Clazz.defineMethod(c$, "findSet", +function(vertex){ +for (var i = 0; i < this.nSets; i++) if (this.surfaceSet[i] != null && this.surfaceSet[i].get(vertex)) return i; + +return -1; +}, "~N"); +Clazz.defineMethod(c$, "createSet", +function(v1, v2, v3){ +var i; +for (i = 0; i < this.nSets; i++) if (this.surfaceSet[i] == null) break; + +if (i == this.surfaceSet.length) this.surfaceSet = JU.AU.ensureLength(this.surfaceSet, this.surfaceSet.length + 100); +this.surfaceSet[i] = new JU.BS(); +this.surfaceSet[i].set(v1); +this.surfaceSet[i].set(v2); +this.surfaceSet[i].set(v3); +if (i == this.nSets) this.nSets++; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "mergeSets", +function(a, b){ +this.surfaceSet[a].or(this.surfaceSet[b]); +this.surfaceSet[b] = null; +}, "~N,~N"); +Clazz.defineMethod(c$, "invalidateSurfaceSet", +function(i){ +for (var j = this.surfaceSet[i].nextSetBit(0); j >= 0; j = this.surfaceSet[i].nextSetBit(j + 1)) this.vvs[j] = NaN; + +this.surfaceSet[i] = null; +}, "~N"); +c$.checkCutoff = Clazz.defineMethod(c$, "checkCutoff", +function(iA, iB, iC, vertexValues){ +if (iA < 0 || iB < 0 || iC < 0) return false; +var val1 = vertexValues[iA]; +var val2 = vertexValues[iB]; +var val3 = vertexValues[iC]; +return (val1 >= 0 && val2 >= 0 && val3 >= 0 || val1 <= 0 && val2 <= 0 && val3 <= 0); +}, "~N,~N,~N,~A"); +c$.calculateVolumeOrArea = Clazz.defineMethod(c$, "calculateVolumeOrArea", +function(m, thisSet, isArea, getSets){ +if (getSets || m.nSets <= 0) m.getSurfaceSet(); +var justOne = (thisSet != null && thisSet.cardinality() == 1); +var n = (justOne || m.nSets <= 0 ? 1 : m.nSets); +var v = Clazz.newDoubleArray (n, 0); +var vAB = new JU.V3(); +var vAC = new JU.V3(); +var vTemp = new JU.V3(); +for (var i = m.pc; --i >= 0; ) { +if (m.setABC(i) == null) continue; +var iSet = (m.nSets <= 0 ? 0 : m.vertexSets[m.iA]); +if (thisSet != null && !thisSet.get(iSet)) continue; +if (isArea) { +vAB.sub2(m.vs[m.iB], m.vs[m.iA]); +vAC.sub2(m.vs[m.iC], m.vs[m.iA]); +vTemp.cross(vAB, vAC); +v[justOne ? 0 : iSet] += vTemp.length(); +} else { +vAB.setT(m.vs[m.iB]); +vAC.setT(m.vs[m.iC]); +vTemp.cross(vAB, vAC); +vAC.setT(m.vs[m.iA]); +v[justOne ? 0 : iSet] += vAC.dot(vTemp); +}} +var factor = (isArea ? 2 : 6); +for (var i = 0; i < n; i++) v[i] /= factor; + +if (justOne) return Float.$valueOf(v[0]); +if (thisSet != null) { +thisSet.and(JU.BSUtil.newBitSet2(0, v.length)); +var v1 = Clazz.newDoubleArray (thisSet.cardinality(), 0); +for (var pt = 0, i = thisSet.nextSetBit(0); i >= 0; i = thisSet.nextSetBit(i + 1)) { +v1[pt++] = v[i]; +} +v = v1; +}return v; +}, "J.jvxl.data.MeshData,JU.BS,~B,~B"); +Clazz.defineMethod(c$, "updateInvalidatedVertices", +function(bs){ +bs.clearAll(); +for (var i = 0; i < this.vc; i += this.vertexIncrement) if (Float.isNaN(this.vvs[i])) bs.set(i); + +}, "JU.BS"); +Clazz.defineMethod(c$, "invalidateVertices", +function(bsInvalid){ +for (var i = bsInvalid.nextSetBit(0); i >= 0; i = bsInvalid.nextSetBit(i + 1)) this.vvs[i] = NaN; + +}, "JU.BS"); +c$.$MeshData$SSet$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.bs = null; +this.n = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.data.MeshData, "SSet", null); +Clazz.makeConstructor(c$, +function(bs){ +this.bs = bs; +this.n = bs.cardinality(); +}, "JU.BS"); +/*eoif4*/})(); +}; +c$.$MeshData$SortSet$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +Clazz.instantialize(this, arguments);}, J.jvxl.data.MeshData, "SortSet", null, java.util.Comparator); +Clazz.overrideMethod(c$, "compare", +function(o1, o2){ +return (o1.n > o2.n ? -1 : o1.n < o2.n ? 1 : 0); +}, "J.jvxl.data.MeshData.SSet,J.jvxl.data.MeshData.SSet"); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/VolumeData.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/VolumeData.js new file mode 100755 index 000000000000..d2e049ddd658 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/data/VolumeData.js @@ -0,0 +1,384 @@ +Clazz.declarePackage("J.jvxl.data"); +Clazz.load(["JU.M3", "$.P3", "$.V3"], "J.jvxl.data.VolumeData", ["java.util.Hashtable", "JU.SB", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sr = null; +this.doIterate = true; +this.volumetricOrigin = null; +this.origin = null; +this.volumetricVectors = null; +this.voxelCounts = null; +this.nPoints = 0; +this.voxelData = null; +this.voxelMap = null; +this.volumetricVectorLengths = null; +this.maxVectorLength = 0; +this.minToPlaneDistance = 0; +this.yzCount = 0; +this.unitVolumetricVectors = null; +this.volumetricMatrix = null; +this.inverseMatrix = null; +this.thePlane = null; +this.thePlaneNormalMag = 0; +this.ptXyzTemp = null; +this.xmlData = null; +this.mappingPlane = null; +this.mappingPlaneNormalMag = 0; +this.minGrid = 0; +this.maxGrid = 0; +this.voxelVolume = 0; +this.oabc = null; +this.isPeriodic = false; +this.isSquared = false; +this.edgeVector = null; +this.ptTemp = null; +Clazz.instantialize(this, arguments);}, J.jvxl.data, "VolumeData", null); +Clazz.prepareFields (c$, function(){ +this.volumetricOrigin = new JU.P3(); +this.origin = Clazz.newFloatArray (3, 0); +this.volumetricVectors = new Array(3); +this.voxelCounts = Clazz.newIntArray (3, 0); +this.volumetricVectorLengths = Clazz.newFloatArray (3, 0); +this.unitVolumetricVectors = new Array(3); +this.volumetricMatrix = new JU.M3(); +this.inverseMatrix = new JU.M3(); +this.ptXyzTemp = new JU.P3(); +this.edgeVector = new JU.V3(); +this.ptTemp = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +this.volumetricVectors[0] = new JU.V3(); +this.volumetricVectors[1] = new JU.V3(); +this.volumetricVectors[2] = new JU.V3(); +this.unitVolumetricVectors[0] = new JU.V3(); +this.unitVolumetricVectors[1] = new JU.V3(); +this.unitVolumetricVectors[2] = new JU.V3(); +}); +Clazz.defineMethod(c$, "getVoxelData", +function(){ +return this.voxelData; +}); +Clazz.defineMethod(c$, "setVoxelDataAsArray", +function(voxelData){ +this.voxelData = voxelData; +if (voxelData != null) this.sr = null; +}, "~A"); +Clazz.defineMethod(c$, "hasPlane", +function(){ +return (this.thePlane != null); +}); +Clazz.defineMethod(c$, "setMappingPlane", +function(plane){ +this.mappingPlane = plane; +if (plane == null) return; +this.mappingPlaneNormalMag = Math.sqrt(plane.x * plane.x + plane.y * plane.y + plane.z * plane.z); +}, "JU.P4"); +Clazz.defineMethod(c$, "distanceToMappingPlane", +function(pt){ +return (this.mappingPlane.x * pt.x + this.mappingPlane.y * pt.y + this.mappingPlane.z * pt.z + this.mappingPlane.w) / this.mappingPlaneNormalMag; +}, "JU.T3"); +Clazz.defineMethod(c$, "setVolumetricOrigin", +function(x, y, z){ +this.volumetricOrigin.set(x, y, z); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getOriginFloat", +function(){ +return this.origin; +}); +Clazz.defineMethod(c$, "getYzCount", +function(){ +this.minGrid = this.volumetricVectors[0].length(); +this.minGrid = Math.min(this.minGrid, this.volumetricVectors[1].length()); +this.minGrid = Math.min(this.minGrid, this.volumetricVectors[2].length()); +this.maxGrid = this.volumetricVectors[0].length(); +this.maxGrid = Math.max(this.maxGrid, this.volumetricVectors[1].length()); +this.maxGrid = Math.max(this.maxGrid, this.volumetricVectors[2].length()); +this.nPoints = this.voxelCounts[0] * this.voxelCounts[1] * this.voxelCounts[2]; +return this.yzCount = this.voxelCounts[1] * this.voxelCounts[2]; +}); +Clazz.defineMethod(c$, "getVolumetricVectorLengths", +function(){ +return this.volumetricVectorLengths; +}); +Clazz.defineMethod(c$, "setVolumetricVector", +function(i, x, y, z){ +this.volumetricVectors[i].x = x; +this.volumetricVectors[i].y = y; +this.volumetricVectors[i].z = z; +this.setUnitVectors(); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getVoxelCounts", +function(){ +return this.voxelCounts; +}); +Clazz.defineMethod(c$, "setVoxelCounts", +function(nPointsX, nPointsY, nPointsZ){ +this.voxelCounts[0] = nPointsX; +this.voxelCounts[1] = nPointsY; +this.voxelCounts[2] = nPointsZ; +return nPointsX * nPointsY * nPointsZ; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getVoxelDataAt", +function(pt){ +var ix = Clazz.doubleToInt(pt / this.yzCount); +pt -= ix * this.yzCount; +var iy = Clazz.doubleToInt(pt / this.voxelCounts[2]); +var iz = pt - iy * this.voxelCounts[2]; +return this.voxelData[ix][iy][iz]; +}, "~N"); +Clazz.defineMethod(c$, "getPointIndex", +function(x, y, z){ +return x * this.yzCount + y * this.voxelCounts[2] + z; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getPoint", +function(ipt, pt){ +var ix = Clazz.doubleToInt(ipt / this.yzCount); +ipt -= ix * this.yzCount; +var iy = Clazz.doubleToInt(ipt / this.voxelCounts[2]); +var iz = ipt - iy * this.voxelCounts[2]; +this.voxelPtToXYZ(ix, iy, iz, pt); +}, "~N,JU.P3"); +Clazz.defineMethod(c$, "setVoxelData", +function(pt, value){ +var ix = Clazz.doubleToInt(pt / this.yzCount); +pt -= ix * this.yzCount; +var iy = Clazz.doubleToInt(pt / this.voxelCounts[2]); +var iz = pt - iy * this.voxelCounts[2]; +this.voxelData[ix][iy][iz] = value; +}, "~N,~N"); +Clazz.defineMethod(c$, "setVoxelMap", +function(){ +this.voxelMap = new java.util.Hashtable(); +this.getYzCount(); +}); +Clazz.defineMethod(c$, "setMatrix", +function(){ +for (var i = 0; i < 3; i++) this.volumetricMatrix.setColumnV(i, this.volumetricVectors[i]); + +try { +this.inverseMatrix.invertM(this.volumetricMatrix); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("VolumeData error setting matrix -- bad unit vectors? "); +return false; +} else { +throw e; +} +} +return true; +}); +Clazz.defineMethod(c$, "transform", +function(v1, v2){ +this.volumetricMatrix.rotate2(v1, v2); +}, "JU.V3,JU.V3"); +Clazz.defineMethod(c$, "setPlaneParameters", +function(plane){ +this.thePlane = plane; +this.thePlaneNormalMag = Math.sqrt(plane.x * plane.x + plane.y * plane.y + plane.z * plane.z); +}, "JU.P4"); +Clazz.defineMethod(c$, "calcVoxelPlaneDistance", +function(x, y, z){ +this.voxelPtToXYZ(x, y, z, this.ptXyzTemp); +return this.distancePointToPlane(this.ptXyzTemp); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getToPlaneParameter", +function(){ +return (Math.sqrt(this.thePlane.x * this.thePlane.x + this.thePlane.y * this.thePlane.y + this.thePlane.z * this.thePlane.z) * this.minToPlaneDistance); +}); +Clazz.defineMethod(c$, "isNearPlane", +function(x, y, z, toPlaneParameter){ +this.voxelPtToXYZ(x, y, z, this.ptXyzTemp); +return ((this.thePlane.x * this.ptXyzTemp.x + this.thePlane.y * this.ptXyzTemp.y + this.thePlane.z * this.ptXyzTemp.z + this.thePlane.w) < toPlaneParameter); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "distancePointToPlane", +function(pt){ +return (this.thePlane.x * pt.x + this.thePlane.y * pt.y + this.thePlane.z * pt.z + this.thePlane.w) / this.thePlaneNormalMag; +}, "JU.T3"); +Clazz.defineMethod(c$, "voxelPtToXYZ", +function(x, y, z, pt){ +pt.scaleAdd2(x, this.volumetricVectors[0], this.volumetricOrigin); +pt.scaleAdd2(y, this.volumetricVectors[1], pt); +pt.scaleAdd2(z, this.volumetricVectors[2], pt); +}, "~N,~N,~N,JU.T3"); +Clazz.defineMethod(c$, "setUnitVectors", +function(){ +this.maxVectorLength = 0; +this.voxelVolume = 1; +for (var i = 0; i < 3; i++) { +var d = this.volumetricVectorLengths[i] = this.volumetricVectors[i].length(); +if (d == 0) return false; +if (d > this.maxVectorLength) this.maxVectorLength = d; +this.voxelVolume *= d; +this.unitVolumetricVectors[i].setT(this.volumetricVectors[i]); +this.unitVolumetricVectors[i].normalize(); +} +this.minToPlaneDistance = this.maxVectorLength * 2; +this.origin[0] = this.volumetricOrigin.x; +this.origin[1] = this.volumetricOrigin.y; +this.origin[2] = this.volumetricOrigin.z; +this.oabc = new Array(4); +this.oabc[0] = JU.V3.newV(this.volumetricOrigin); +for (var i = 0; i < 3; i++) { +var v = this.oabc[i + 1] = new JU.V3(); +v.scaleAdd2(this.voxelCounts[i] - 1, this.volumetricVectors[i], v); +} +return this.setMatrix(); +}); +Clazz.defineMethod(c$, "xyzToVoxelPt", +function(x, y, z, pt3i){ +this.ptXyzTemp.set(x, y, z); +this.ptXyzTemp.sub(this.volumetricOrigin); +this.inverseMatrix.rotate(this.ptXyzTemp); +pt3i.set(Math.round(this.ptXyzTemp.x), Math.round(this.ptXyzTemp.y), Math.round(this.ptXyzTemp.z)); +}, "~N,~N,~N,JU.T3i"); +Clazz.defineMethod(c$, "lookupInterpolatedVoxelValue", +function(point, getSource){ +if (this.mappingPlane != null) return this.distanceToMappingPlane(point); +if (this.sr != null) { +var v = this.sr.getValueAtPoint(point, getSource); +return (this.isSquared ? v * v : v); +}this.ptXyzTemp.sub2(point, this.volumetricOrigin); +this.inverseMatrix.rotate(this.ptXyzTemp); +var iMax; +var xLower = this.indexLower(this.ptXyzTemp.x, iMax = this.voxelCounts[0] - 1); +var xUpper = this.indexUpper(this.ptXyzTemp.x, xLower, iMax); +var yLower = this.indexLower(this.ptXyzTemp.y, iMax = this.voxelCounts[1] - 1); +var yUpper = this.indexUpper(this.ptXyzTemp.y, yLower, iMax); +var zLower = this.indexLower(this.ptXyzTemp.z, iMax = this.voxelCounts[2] - 1); +var zUpper = this.indexUpper(this.ptXyzTemp.z, zLower, iMax); +var v1 = J.jvxl.data.VolumeData.getFractional2DValue(this.mantissa(this.ptXyzTemp.x - xLower), this.mantissa(this.ptXyzTemp.y - yLower), this.getVoxelValue(xLower, yLower, zLower), this.getVoxelValue(xUpper, yLower, zLower), this.getVoxelValue(xLower, yUpper, zLower), this.getVoxelValue(xUpper, yUpper, zLower)); +var v2 = J.jvxl.data.VolumeData.getFractional2DValue(this.mantissa(this.ptXyzTemp.x - xLower), this.mantissa(this.ptXyzTemp.y - yLower), this.getVoxelValue(xLower, yLower, zUpper), this.getVoxelValue(xUpper, yLower, zUpper), this.getVoxelValue(xLower, yUpper, zUpper), this.getVoxelValue(xUpper, yUpper, zUpper)); +return v1 + this.mantissa(this.ptXyzTemp.z - zLower) * (v2 - v1); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "mantissa", +function(f){ +return (this.isPeriodic ? f - Math.floor(f) : f); +}, "~N"); +Clazz.defineMethod(c$, "getVoxelValue", +function(x, y, z){ +if (this.voxelMap == null) return this.voxelData[x][y][z]; +var f = this.voxelMap.get(Integer.$valueOf(this.getPointIndex(x, y, z))); +return (f == null ? NaN : f.floatValue()); +}, "~N,~N,~N"); +c$.getFractional2DValue = Clazz.defineMethod(c$, "getFractional2DValue", +function(fx, fy, x11, x12, x21, x22){ +var v1 = x11 + fx * (x12 - x11); +var v2 = x21 + fx * (x22 - x21); +return v1 + fy * (v2 - v1); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "indexLower", +function(x, xMax){ +if (this.isPeriodic && xMax > 0) { +while (x < 0) x += xMax; + +while (x >= xMax) x -= xMax; + +return Clazz.doubleToInt(Math.floor(x)); +}if (x < 0) return 0; +var floor = Clazz.doubleToInt(Math.floor(x)); +return (floor > xMax ? xMax : floor); +}, "~N,~N"); +Clazz.defineMethod(c$, "indexUpper", +function(x, xLower, xMax){ +return (!this.isPeriodic && x < 0 || xLower == xMax ? xLower : xLower + 1); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "offsetCenter", +function(center){ +var pt = new JU.P3(); +pt.scaleAdd2((this.voxelCounts[0] - 1) / 2, this.volumetricVectors[0], pt); +pt.scaleAdd2((this.voxelCounts[1] - 1) / 2, this.volumetricVectors[1], pt); +pt.scaleAdd2((this.voxelCounts[2] - 1) / 2, this.volumetricVectors[2], pt); +this.volumetricOrigin.sub2(center, pt); +}, "JU.P3"); +Clazz.defineMethod(c$, "setDataDistanceToPlane", +function(plane){ +this.setPlaneParameters(plane); +var nx = this.voxelCounts[0]; +var ny = this.voxelCounts[1]; +var nz = this.voxelCounts[2]; +this.voxelData = Clazz.newFloatArray (nx, ny, nz, 0); +for (var x = 0; x < nx; x++) for (var y = 0; y < ny; y++) for (var z = 0; z < nz; z++) this.voxelData[x][y][z] = this.calcVoxelPlaneDistance(x, y, z); + + + +}, "JU.P4"); +Clazz.defineMethod(c$, "filterData", +function(isSquared, invertCutoff){ +var doInvert = (!Float.isNaN(invertCutoff)); +if (this.sr != null) { +this.isSquared = isSquared; +return; +}var nx = this.voxelCounts[0]; +var ny = this.voxelCounts[1]; +var nz = this.voxelCounts[2]; +if (isSquared) for (var x = 0; x < nx; x++) for (var y = 0; y < ny; y++) for (var z = 0; z < nz; z++) this.voxelData[x][y][z] *= this.voxelData[x][y][z]; + + + +if (doInvert) for (var x = 0; x < nx; x++) for (var y = 0; y < ny; y++) for (var z = 0; z < nz; z++) this.voxelData[x][y][z] = invertCutoff - this.voxelData[x][y][z]; + + + +}, "~B,~N"); +Clazz.defineMethod(c$, "capData", +function(plane, cutoff){ +if (this.voxelData == null) return; +var nx = this.voxelCounts[0]; +var ny = this.voxelCounts[1]; +var nz = this.voxelCounts[2]; +var normal = JU.V3.new3(plane.x, plane.y, plane.z); +normal.normalize(); +var f = 1; +for (var x = 0; x < nx; x++) for (var y = 0; y < ny; y++) for (var z = 0; z < nz; z++) { +var value = this.voxelData[x][y][z] - cutoff; +this.voxelPtToXYZ(x, y, z, this.ptXyzTemp); +var d = (this.ptXyzTemp.x * normal.x + this.ptXyzTemp.y * normal.y + this.ptXyzTemp.z * normal.z + plane.w - cutoff) / f; +if (d >= 0 || d > value) this.voxelData[x][y][z] = d; +} + + +}, "JU.P4,~N"); +Clazz.defineMethod(c$, "setVolumetricXml", +function(){ +var sb = new JU.SB(); +if (this.voxelCounts[0] == 0) { +sb.append("\n"); +} else { +sb.append("\n"); +for (var i = 0; i < 3; i++) sb.append("\n"); + +}sb.append("\n"); +return this.xmlData = sb.toString(); +}); +Clazz.defineMethod(c$, "setVoxelMapValue", +function(x, y, z, v){ +if (this.voxelMap == null) return; +this.voxelMap.put(Integer.$valueOf(this.getPointIndex(x, y, z)), Float.$valueOf(v)); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "calculateFractionalPoint", +function(cutoff, pointA, pointB, valueA, valueB, pt){ +var d = (valueB - valueA); +var fraction = (cutoff - valueA) / d; +this.edgeVector.sub2(pointB, pointA); +pt.scaleAdd2(fraction, this.edgeVector, pointA); +if (this.sr == null || !this.doIterate || valueB == valueA || fraction < 0.01 || fraction > 0.99 || (this.edgeVector.length()) < 0.01) return cutoff; +var n = 0; +this.ptTemp.setT(pt); +var v = this.lookupInterpolatedVoxelValue(this.ptTemp, false); +var v0 = NaN; +while (++n < 10) { +var fnew = (v - valueA) / d; +if (fnew < 0 || fnew > 1) break; +var diff = (cutoff - v) / d / 2; +fraction += diff; +if (fraction < 0 || fraction > 1) break; +pt.setT(this.ptTemp); +v0 = v; +if (Math.abs(diff) < 0.005) break; +this.ptTemp.scaleAdd2(diff, this.edgeVector, pt); +v = this.lookupInterpolatedVoxelValue(this.ptTemp, false); +} +return v0; +}, "~N,JU.P3,JU.P3,~N,~N,JU.P3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/ApbsReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/ApbsReader.js new file mode 100755 index 000000000000..1cab0763172b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/ApbsReader.js @@ -0,0 +1,37 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.ApbsReader", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "ApbsReader", J.jvxl.readers.VolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.ApbsReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +if (this.params.thePlane == null) this.params.insideOut = !this.params.insideOut; +this.isAngstroms = true; +this.nSurfaces = 1; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.jvxlFileHeaderBuffer = JU.SB.newS(this.skipComments(false)); +while (this.line != null && this.line.length == 0) this.rd(); + +this.jvxlFileHeaderBuffer.append("APBS OpenDx DATA ").append(this.line).append("\n"); +this.jvxlFileHeaderBuffer.append("see http://apbs.sourceforge.net\n"); +var atomLine = this.rd(); +var tokens = JU.PT.getTokens(atomLine); +if (tokens.length >= 4) { +this.volumetricOrigin.set(this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3])); +}J.jvxl.readers.VolumeFileReader.checkAtomLine(this.isXLowToHigh, this.isAngstroms, tokens[0], atomLine, this.jvxlFileHeaderBuffer); +this.readVoxelVector(0); +this.readVoxelVector(1); +this.readVoxelVector(2); +this.rd(); +tokens = this.getTokens(); +for (var i = 0; i < 3; i++) this.voxelCounts[i] = this.parseIntStr(tokens[i + 5]); + +this.rd(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/AtomDataReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/AtomDataReader.js new file mode 100755 index 000000000000..3190055ceae3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/AtomDataReader.js @@ -0,0 +1,378 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeDataReader", "JU.BS", "$.P3", "$.P3i", "J.atomdata.AtomData"], "J.jvxl.readers.AtomDataReader", ["java.util.Date", "JU.AU", "$.SB", "$.V3", "J.atomdata.RadiusData", "J.c.VDW", "J.jvxl.data.JvxlCoder", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.maxDistance = 0; +this.contactPair = null; +this.fileName = null; +this.fileDotModel = null; +this.modelIndex = 0; +this.atomData = null; +this.atomXyzTruncated = null; +this.atomRadius = null; +this.atomProp = null; +this.atomNo = null; +this.atomIndex = null; +this.myIndex = null; +this.ac = 0; +this.myAtomCount = 0; +this.nearbyAtomCount = 0; +this.firstNearbyAtom = 0; +this.bsMySelected = null; +this.bsMyIgnored = null; +this.bsNearby = null; +this.doAddHydrogens = false; +this.havePlane = false; +this.doUseIterator = false; +this.theProperty = 0; +this.haveOneProperty = false; +this.minPtsPerAng = 0; +this.sr = 0; +this.rs = null; +this.rs2 = null; +this.maxRS = 0; +this.thisPlane = null; +this.thisAtomSet = null; +this.thisX = 0; +this.margin = 0; +this.vl0 = 0; +this.vl1 = 0; +this.vl2 = 0; +this.bsSurfaceVoxels = null; +this.validSpheres = null; +this.noFaceSpheres = null; +this.voxelSource = null; +this.ptY0 = null; +this.ptZ0 = null; +this.pt0 = null; +this.pt1 = null; +this.ptV = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "AtomDataReader", J.jvxl.readers.VolumeDataReader); +Clazz.prepareFields (c$, function(){ +this.atomData = new J.atomdata.AtomData(); +this.bsMySelected = new JU.BS(); +this.bsMyIgnored = new JU.BS(); +this.ptY0 = new JU.P3(); +this.ptZ0 = new JU.P3(); +this.pt0 = new JU.P3i(); +this.pt1 = new JU.P3i(); +this.ptV = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.AtomDataReader, []); +}); +Clazz.defineMethod(c$, "initADR", +function(sg){ +this.initVDR(sg); +this.precalculateVoxelData = true; +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +}, "~B"); +Clazz.defineMethod(c$, "setup2", +function(){ +this.contactPair = this.params.contactPair; +this.doAddHydrogens = (this.sg.atomDataServer != null && this.params.addHydrogens); +this.modelIndex = this.params.modelIndex; +if (this.params.bsIgnore != null) this.bsMyIgnored = this.params.bsIgnore; +if (this.params.volumeData != null) { +this.setVolumeDataV(this.params.volumeData); +this.setBBox(this.volumeData.volumetricOrigin, 0); +this.ptV.setT(this.volumeData.volumetricOrigin); +for (var i = 0; i < 3; i++) this.ptV.scaleAdd2(this.volumeData.voxelCounts[i] - 1, this.volumeData.volumetricVectors[i], this.ptV); + +this.setBBox(this.ptV, 0); +}this.havePlane = (this.params.thePlane != null); +if (this.havePlane) this.volumeData.setPlaneParameters(this.params.thePlane); +}); +Clazz.defineMethod(c$, "markPlaneVoxels", +function(p, r){ +for (var i = 0, pt = this.thisX * this.yzCount, pt1 = pt + this.yzCount; pt < pt1; pt++, i++) { +this.volumeData.getPoint(pt, this.ptV); +this.thisPlane[i] = this.ptV.distance(p) - r; +} +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "setVolumeForPlane", +function(){ +if (this.useOriginStepsPoints) { +this.xyzMin = JU.P3.newP(this.params.origin); +this.xyzMax = JU.P3.newP(this.params.origin); +this.xyzMax.add3((this.params.points.x - 1) * this.params.steps.x, (this.params.points.y - 1) * this.params.steps.y, (this.params.points.z - 1) * this.params.steps.z); +} else if (this.params.boundingBox == null) { +this.getAtoms(this.params.bsSelected, false, true, false, false, false, false, this.params.mep_marginAngstroms, this.params.modelInvRotation); +if (this.xyzMin == null) { +this.xyzMin = JU.P3.new3(-10, -10, -10); +this.xyzMax = JU.P3.new3(10, 10, 10); +}} else { +this.xyzMin = JU.P3.newP(this.params.boundingBox[0]); +this.xyzMax = JU.P3.newP(this.params.boundingBox[1]); +}this.setRanges(this.params.plane_ptsPerAngstrom, this.params.plane_gridMax, 0); +}); +Clazz.defineMethod(c$, "getAtoms", +function(bsSelected, doAddHydrogens, getRadii, getMolecules, getAllModels, addNearbyAtoms, getAtomMinMax, marginAtoms, modelInvRotation){ +if (addNearbyAtoms) getRadii = true; +if (getRadii) { +if (this.params.atomRadiusData == null) this.params.atomRadiusData = new J.atomdata.RadiusData(null, 1, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO); +this.atomData.radiusData = this.params.atomRadiusData; +this.atomData.radiusData.valueExtended = this.params.solventExtendedAtomRadius; +if (doAddHydrogens) this.atomData.radiusData.vdwType = J.c.VDW.NOJMOL; +}this.atomData.modelIndex = this.modelIndex; +this.atomData.bsSelected = bsSelected; +this.atomData.bsIgnored = this.bsMyIgnored; +this.sg.fillAtomData(this.atomData, 1 | (getAllModels ? 16 : 0) | (getMolecules ? 4 : 0) | (getRadii ? 2 : 0)); +if (this.doUseIterator) this.atomData.bsSelected = null; +this.ac = this.atomData.ac; +this.modelIndex = this.atomData.firstModelIndex; +if (modelInvRotation != null) this.atomData.transformXYZ(modelInvRotation, bsSelected); +var needRadius = false; +for (var i = 0; i < this.ac; i++) { +if ((bsSelected == null || bsSelected.get(i)) && (!this.bsMyIgnored.get(i))) { +if (this.havePlane && Math.abs(this.volumeData.distancePointToPlane(this.atomData.xyz[i])) > 2 * (this.atomData.atomRadius[i] = this.getWorkingRadius(i, marginAtoms))) continue; +this.bsMySelected.set(i); +needRadius = !this.havePlane; +}if (getRadii && (addNearbyAtoms || needRadius)) this.atomData.atomRadius[i] = this.getWorkingRadius(i, marginAtoms); +} +var rH = (getRadii && doAddHydrogens ? this.getWorkingRadius(-1, marginAtoms) : 0); +this.myAtomCount = JU.BSUtil.cardinalityOf(this.bsMySelected); +var atomSet = JU.BSUtil.copy(this.bsMySelected); +var nH = 0; +this.atomProp = null; +this.theProperty = 3.4028235E38; +this.haveOneProperty = false; +var props = this.params.theProperty; +if (this.myAtomCount > 0) { +var hAtoms = null; +if (doAddHydrogens) { +this.atomData.bsSelected = atomSet; +this.sg.atomDataServer.fillAtomData(this.atomData, 8); +hAtoms = new Array(nH = this.atomData.hydrogenAtomCount); +for (var i = 0; i < this.atomData.hAtoms.length; i++) if (this.atomData.hAtoms[i] != null) for (var j = this.atomData.hAtoms[i].length; --j >= 0; ) hAtoms[--nH] = this.atomData.hAtoms[i][j]; + + +nH = hAtoms.length; +JU.Logger.info(nH + " attached hydrogens added"); +}var n = nH + this.myAtomCount; +if (getRadii) this.atomRadius = Clazz.newFloatArray (n, 0); +this.atomXyzTruncated = new Array(n); +if (this.params.theProperty != null) this.atomProp = Clazz.newFloatArray (n, 0); +this.atomNo = Clazz.newIntArray (n, 0); +this.atomIndex = Clazz.newIntArray (n, 0); +this.myIndex = Clazz.newIntArray (this.ac, 0); +for (var i = 0; i < nH; i++) { +if (getRadii) this.atomRadius[i] = rH; +this.atomXyzTruncated[i] = hAtoms[i]; +this.atomNo[i] = -1; +if (this.atomProp != null) this.addAtomProp(i, NaN); +} +this.myAtomCount = nH; +for (var i = atomSet.nextSetBit(0); i >= 0; i = atomSet.nextSetBit(i + 1)) { +if (this.atomProp != null) this.addAtomProp(this.myAtomCount, (props != null && i < props.length ? props[i] : NaN)); +this.atomXyzTruncated[this.myAtomCount] = this.atomData.xyz[i]; +this.atomNo[this.myAtomCount] = this.atomData.atomicNumber[i]; +this.atomIndex[this.myAtomCount] = i; +this.myIndex[i] = this.myAtomCount; +if (getRadii) this.atomRadius[this.myAtomCount] = this.atomData.atomRadius[i]; +this.myAtomCount++; +} +}this.firstNearbyAtom = this.myAtomCount; +if (!this.isQuiet) JU.Logger.info(this.myAtomCount + " atoms will be used in the surface calculation"); +if (this.myAtomCount == 0) { +this.setBBox(JU.P3.new3(10, 10, 10), 0); +this.setBBox(JU.P3.new3(-10, -10, -10), 0); +}for (var i = 0; i < this.myAtomCount; i++) this.setBBox(this.atomXyzTruncated[i], getRadii ? this.atomRadius[i] + 0.5 : 0); + +if (!Float.isNaN(this.params.scale)) { +var v = JU.V3.newVsub(this.xyzMax, this.xyzMin); +v.scale(0.5); +this.xyzMin.add(v); +v.scale(this.params.scale); +this.xyzMax.add2(this.xyzMin, v); +this.xyzMin.sub(v); +}if (!addNearbyAtoms || this.myAtomCount == 0) return; +var pt = new JU.P3(); +this.bsNearby = new JU.BS(); +for (var i = 0; i < this.ac; i++) { +if (atomSet.get(i) || this.bsMyIgnored.get(i)) continue; +var rA = this.atomData.atomRadius[i]; +if (this.params.thePlane != null && Math.abs(this.volumeData.distancePointToPlane(this.atomData.xyz[i])) > 2 * rA) continue; +if (this.params.theProperty != null) rA += this.maxDistance; +pt = this.atomData.xyz[i]; +if (pt.x + rA > this.xyzMin.x && pt.x - rA < this.xyzMax.x && pt.y + rA > this.xyzMin.y && pt.y - rA < this.xyzMax.y && pt.z + rA > this.xyzMin.z && pt.z - rA < this.xyzMax.z) { +this.bsNearby.set(i); +this.nearbyAtomCount++; +}} +var nAtoms = this.myAtomCount; +if (this.nearbyAtomCount != 0) { +nAtoms += this.nearbyAtomCount; +this.atomRadius = JU.AU.arrayCopyF(this.atomRadius, nAtoms); +this.atomXyzTruncated = JU.AU.arrayCopyObject(this.atomXyzTruncated, nAtoms); +if (this.atomIndex != null) this.atomIndex = JU.AU.arrayCopyI(this.atomIndex, nAtoms); +if (props != null) this.atomProp = JU.AU.arrayCopyF(this.atomProp, nAtoms); +for (var i = this.bsNearby.nextSetBit(0); i >= 0; i = this.bsNearby.nextSetBit(i + 1)) { +if (props != null) this.addAtomProp(this.myAtomCount, props[i]); +this.myIndex[i] = this.myAtomCount; +this.atomIndex[this.myAtomCount] = i; +this.atomXyzTruncated[this.myAtomCount] = this.atomData.xyz[i]; +this.atomRadius[this.myAtomCount++] = this.atomData.atomRadius[i]; +} +}if (getRadii) this.setRadii(); +this.haveOneProperty = (!Float.isNaN(this.theProperty)); +}, "JU.BS,~B,~B,~B,~B,~B,~B,~N,JU.M4"); +Clazz.defineMethod(c$, "setRadii", +function(){ +if (this.rs != null) return; +this.maxRS = 0; +this.rs = Clazz.newFloatArray (this.myAtomCount, 0); +this.rs2 = Clazz.newFloatArray (this.myAtomCount, 0); +for (var i = 0; i < this.myAtomCount; i++) { +var r = this.rs[i] = this.atomRadius[i] + this.sr; +if (r > this.maxRS) this.maxRS = r; +this.rs2[i] = this.rs[i] * this.rs[i]; +} +}); +Clazz.defineMethod(c$, "addAtomProp", +function(i, f){ +this.atomProp[i] = f; +if (!Float.isNaN(this.theProperty)) if (f != this.theProperty) this.theProperty = (this.theProperty == 3.4028235E38 ? f : NaN); +}, "~N,~N"); +Clazz.defineMethod(c$, "getWorkingRadius", +function(i, marginAtoms){ +var r = (i < 0 ? this.atomData.hAtomRadius : this.atomData.atomRadius[i]); +return (Float.isNaN(marginAtoms) ? Math.max(r, 0.1) : r + marginAtoms); +}, "~N,~N"); +Clazz.defineMethod(c$, "setHeader", +function(calcType, line2){ +this.jvxlFileHeaderBuffer = new JU.SB(); +if (this.atomData.programInfo != null) this.jvxlFileHeaderBuffer.append("#created by ").append(this.atomData.programInfo).append(" on ").append("" + new java.util.Date()).append("\n"); +this.jvxlFileHeaderBuffer.append(calcType).append("\n").append(line2).append("\n"); +}, "~S,~S"); +Clazz.defineMethod(c$, "setRanges", +function(ptsPerAngstrom, maxGrid, minPtsPerAng){ +if (this.xyzMin == null) return; +this.ptsPerAngstrom = ptsPerAngstrom; +this.maxGrid = maxGrid; +this.minPtsPerAng = minPtsPerAng; +this.setVolumeData(); +J.jvxl.data.JvxlCoder.jvxlCreateHeader(this.volumeData, this.jvxlFileHeaderBuffer); +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "setVolumeData", +function(){ +this.setVolumeDataADR(); +}); +Clazz.defineMethod(c$, "setVolumeDataADR", +function(){ +if (!this.setVolumeDataParams()) { +this.setVoxelRange(0, this.xyzMin.x, this.xyzMax.x, this.ptsPerAngstrom, this.maxGrid, this.minPtsPerAng); +this.setVoxelRange(1, this.xyzMin.y, this.xyzMax.y, this.ptsPerAngstrom, this.maxGrid, this.minPtsPerAng); +this.setVoxelRange(2, this.xyzMin.z, this.xyzMax.z, this.ptsPerAngstrom, this.maxGrid, this.minPtsPerAng); +}}); +Clazz.defineMethod(c$, "setVertexSource", +function(){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +if (this.params.vertexSource != null) { +this.params.vertexSource = JU.AU.arrayCopyI(this.params.vertexSource, this.meshData.vc); +for (var i = 0; i < this.meshData.vc; i++) this.params.vertexSource[i] = Math.abs(this.params.vertexSource[i]) - 1; + +}}); +Clazz.defineMethod(c$, "resetPlane", +function(value){ +for (var i = 0; i < this.yzCount; i++) this.thisPlane[i] = value; + +}, "~N"); +Clazz.defineMethod(c$, "resetVoxelData", +function(value){ +for (var x = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) this.voxelData[x][y][z] = value; + + + +}, "~N"); +Clazz.defineMethod(c$, "getVoxel", +function(i, j, k, ipt){ +return (this.isProgressive ? this.thisPlane[ipt % this.yzCount] : this.voxelData[i][j][k]); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "unsetVoxelData", +function(){ +this.unsetVoxelData2(); +}); +Clazz.defineMethod(c$, "unsetVoxelData2", +function(){ +if (this.isProgressive) for (var i = 0; i < this.yzCount; i++) { +if (this.thisPlane[i] == 3.4028235E38) this.thisPlane[i] = NaN; +} + else for (var x = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) if (this.voxelData[x][y][z] == 3.4028235E38) this.voxelData[x][y][z] = NaN; + + + +}); +Clazz.defineMethod(c$, "setGridLimitsForAtom", +function(ptA, rA, pt0, pt1){ +rA += this.margin; +this.volumeData.xyzToVoxelPt(ptA.x, ptA.y, ptA.z, pt0); +var x = Clazz.doubleToInt(Math.floor(rA / this.volumeData.volumetricVectorLengths[0])); +var y = Clazz.doubleToInt(Math.floor(rA / this.volumeData.volumetricVectorLengths[1])); +var z = Clazz.doubleToInt(Math.floor(rA / this.volumeData.volumetricVectorLengths[2])); +pt1.set(pt0.x + x, pt0.y + y, pt0.z + z); +pt0.set(pt0.x - x, pt0.y - y, pt0.z - z); +pt0.x = Math.max(pt0.x - 1, 0); +pt0.y = Math.max(pt0.y - 1, 0); +pt0.z = Math.max(pt0.z - 1, 0); +pt1.x = Math.min(pt1.x + 1, this.nPointsX); +pt1.y = Math.min(pt1.y + 1, this.nPointsY); +pt1.z = Math.min(pt1.z + 1, this.nPointsZ); +}, "JU.P3,~N,JU.P3i,JU.P3i"); +Clazz.defineMethod(c$, "getAtomMinMax", +function(bs, bsAtomMinMax){ +for (var i = 0; i < this.nPointsX; i++) bsAtomMinMax[i] = new JU.BS(); + +for (var iAtom = this.myAtomCount; --iAtom >= 0; ) { +if (bs != null && !bs.get(iAtom)) continue; +this.setGridLimitsForAtom(this.atomXyzTruncated[iAtom], this.atomRadius[iAtom], this.pt0, this.pt1); +for (var i = this.pt0.x; i < this.pt1.x; i++) bsAtomMinMax[i].set(iAtom); + +} +}, "JU.BS,~A"); +Clazz.defineMethod(c$, "markSphereVoxels", +function(r0, distance){ +var isWithin = (distance != 3.4028235E38 && this.point != null); +var v0 = this.volumetricVectors[0]; +var v1 = this.volumetricVectors[1]; +var v2 = this.volumetricVectors[2]; +for (var iAtom = this.thisAtomSet.nextSetBit(0); iAtom >= 0; iAtom = this.thisAtomSet.nextSetBit(iAtom + 1)) { +if (!this.havePlane && this.validSpheres != null && !this.validSpheres.get(iAtom)) continue; +var isSurface = (this.noFaceSpheres != null && this.noFaceSpheres.get(iAtom)); +var isNearby = (iAtom >= this.firstNearbyAtom); +var ptA = this.atomXyzTruncated[iAtom]; +var rA = this.atomRadius[iAtom]; +if (isWithin && ptA.distance(this.point) > distance + rA + 0.5) continue; +var rA0 = rA + r0; +this.setGridLimitsForAtom(ptA, rA0, this.pt0, this.pt1); +if (this.isProgressive) { +this.pt0.x = this.thisX; +this.pt1.x = this.thisX + 1; +}this.volumeData.voxelPtToXYZ(this.pt0.x, this.pt0.y, this.pt0.z, this.ptV); +for (var i = this.pt0.x; i < this.pt1.x; i++, this.ptV.add2(v0, this.ptY0)) { +this.ptY0.setT(this.ptV); +for (var j = this.pt0.y; j < this.pt1.y; j++, this.ptV.add2(v1, this.ptZ0)) { +this.ptZ0.setT(this.ptV); +for (var k = this.pt0.z; k < this.pt1.z; k++, this.ptV.add(v2)) { +var value = this.ptV.distance(ptA) - rA; +var ipt = this.volumeData.getPointIndex(i, j, k); +if ((r0 == 0 || value <= rA0) && value < this.getVoxel(i, j, k, ipt)) { +if (isNearby || isWithin && this.ptV.distance(this.point) > distance) value = NaN; +this.setVoxel(i, j, k, ipt, value); +if (!Float.isNaN(value)) { +if (this.voxelSource != null) this.voxelSource[ipt] = iAtom + 1; +if (value < 0 && isSurface) this.bsSurfaceVoxels.set(ipt); +}}} +} +} +} +}, "~N,~N"); +Clazz.defineMethod(c$, "setVoxel", +function(i, j, k, ipt, value){ +if (this.isProgressive) this.thisPlane[ipt % this.yzCount] = value; + else this.voxelData[i][j][k] = value; +}, "~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/AtomPropertyMapper.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/AtomPropertyMapper.js new file mode 100755 index 000000000000..63a709f5f439 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/AtomPropertyMapper.js @@ -0,0 +1,118 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.AtomDataReader"], "J.jvxl.readers.AtomPropertyMapper", ["J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mepCalc = null; +this.mepType = null; +this.calcType = 0; +this.doSmoothProperty = false; +this.iter = null; +this.smoothingPower = 0; +this.iAtomSurface = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "AtomPropertyMapper", J.jvxl.readers.AtomDataReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.AtomPropertyMapper, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initADR(sg); +this.mepType = sg.getReaderData(); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +this.haveSurfaceAtoms = true; +this.volumeData.sr = this; +this.volumeData.doIterate = false; +this.point = this.params.point; +this.doSmoothProperty = this.params.propertySmoothing; +this.doUseIterator = true; +if (this.doSmoothProperty) { +this.smoothingPower = this.params.propertySmoothingPower; +if (this.smoothingPower < 0) this.smoothingPower = 0; + else if (this.smoothingPower > 10) this.smoothingPower = 10; +if (this.smoothingPower == 0) this.doSmoothProperty = false; +this.smoothingPower = (this.smoothingPower - 11) / 2; +}this.maxDistance = this.params.propertyDistanceMax; +if (this.mepType != null) { +this.doSmoothProperty = true; +if (this.params.mep_calcType >= 0) this.calcType = this.params.mep_calcType; +this.mepCalc = J.api.Interface.getOption("quantum." + this.mepType + "Calculation", this.sg.atomDataServer, "file"); +}if (!this.doSmoothProperty && this.maxDistance == 2147483647) this.maxDistance = 5; +this.getAtoms(this.params.bsSelected, this.doAddHydrogens, true, false, false, true, false, NaN, null); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +if (!this.doSmoothProperty && this.meshData.vertexSource != null) { +this.hasColorData = true; +for (var i = this.meshData.vc; --i >= 0; ) { +var iAtom = this.meshData.vertexSource[i]; +if (iAtom >= 0) { +this.meshData.vvs[i] = this.params.theProperty[iAtom]; +} else { +this.hasColorData = false; +break; +}} +}this.setHeader("property", this.params.calculationType); +this.setRanges(this.params.solvent_ptsPerAngstrom, this.params.solvent_gridMax, 0); +this.params.cutoff = 0; +}, "~B"); +Clazz.overrideMethod(c$, "setVolumeData", +function(){ +if (this.params.thePlane != null) this.setVolumeDataADR(); +}); +Clazz.overrideMethod(c$, "initializeMapping", +function(){ +if (this.params.showTiming) JU.Logger.startTimer("property mapping"); +if (this.bsNearby != null) this.bsMySelected.or(this.bsNearby); +this.iter = this.sg.atomDataServer.getSelectedAtomIterator(this.bsMySelected, false, false, false); +}); +Clazz.overrideMethod(c$, "finalizeMapping", +function(){ +this.iter.release(); +this.iter = null; +if (this.params.showTiming) JU.Logger.checkTimer("property mapping", false); +}); +Clazz.overrideMethod(c$, "generateCube", +function(){ +}); +Clazz.overrideMethod(c$, "getSurfaceAtomIndex", +function(){ +return this.iAtomSurface; +}); +Clazz.overrideMethod(c$, "getValueAtPoint", +function(pt, getSource){ +if (this.haveOneProperty && !getSource) return this.theProperty; +var dmin = 3.4028235E38; +var dminNearby = 3.4028235E38; +var value = (this.doSmoothProperty ? 0 : NaN); +var vdiv = 0; +this.sg.atomDataServer.setIteratorForPoint(this.iter, this.modelIndex, pt, this.maxDistance); +this.iAtomSurface = -1; +while (this.iter.hasNext()) { +var ia = this.iter.next(); +var myAtom = this.myIndex[ia]; +var isNearby = (myAtom >= this.firstNearbyAtom); +var ptA = this.atomXyzTruncated[myAtom]; +var p = this.atomProp[myAtom]; +if (Float.isNaN(p)) continue; +var d2 = pt.distanceSquared(ptA); +if (isNearby) { +if (d2 < dminNearby) { +dminNearby = d2; +if (!this.doSmoothProperty && dminNearby < dmin) { +dmin = d2; +value = NaN; +}}} else if (d2 < dmin) { +dmin = d2; +this.iAtomSurface = ia; +if (!this.doSmoothProperty) value = p; +}if (this.mepCalc != null) { +value += this.mepCalc.valueFor(p, d2, this.calcType); +} else if (this.doSmoothProperty) { +d2 = Math.pow(d2, this.smoothingPower); +vdiv += d2; +value += d2 * p; +}} +return (this.mepCalc != null ? value : this.doSmoothProperty ? (vdiv == 0 || dminNearby < dmin ? NaN : value / vdiv) : value); +}, "JU.T3,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/BCifDensityReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/BCifDensityReader.js new file mode 100755 index 000000000000..0977489e3a9e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/BCifDensityReader.js @@ -0,0 +1,201 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.MapFileReader"], "J.jvxl.readers.BCifDensityReader", ["java.io.BufferedInputStream", "$.ByteArrayInputStream", "JU.AU", "$.BC", "$.MessagePackReader", "$.P3", "$.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.header = null; +this.pt = 0; +this.checkSum = 0; +this.values = null; +this.cifData = null; +this.thisData = null; +this.isDiff = false; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "BCifDensityReader", J.jvxl.readers.MapFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.BCifDensityReader, []); +}); +Clazz.defineMethod(c$, "getCifData", +function(fileName, data){ +this.binarydoc = this.newBinaryDocument(); +if (JU.AU.isAB(data)) this.binarydoc.setStream( new java.io.BufferedInputStream( new java.io.ByteArrayInputStream(data)), true); + else this.setStream(fileName, true); +this.nSurfaces = 1; +}, "~S,~O"); +Clazz.defineMethod(c$, "readCifP3", +function(key, p3){ +if (p3 == null) p3 = new JU.P3(); +var x = this.getCifFloat(key + "[0]"); +if (Float.isNaN(x)) { +p3.x = NaN; +} else { +p3.x = x; +p3.y = this.getCifFloat(key + "[1]"); +p3.z = this.getCifFloat(key + "[2]"); +}return p3; +}, "~S,JU.P3"); +Clazz.defineMethod(c$, "getCifMap", +function(type){ +if (this.cifData == null) try { +this.cifData = ( new JU.MessagePackReader(this.binarydoc, true)).readMap(); +System.out.println("BCifDensityReader BCIF encoder " + this.cifData.get("encoder") + " BCIF version " + this.cifData.get("version")); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("BCifDensityReader error " + e); +} else { +throw e; +} +} +var dataBlocks = this.cifData.get("dataBlocks"); +for (var i = dataBlocks.length; --i >= 0; ) { +var map = dataBlocks[i]; +this.header = map.get("header").toString(); +if ("EM".equals(this.header) || type.equalsIgnoreCase(this.header)) { +var categories = map.get("categories"); +for (var j = categories.length; --j >= 0; ) { +var cat = categories[j]; +var catName = cat.get("name"); +var columns = cat.get("columns"); +for (var k = columns.length; --k >= 0; ) { +var col = columns[k]; +map.put(catName + "_" + col.get("name"), col.get("data")); +} +} +map.remove("categories"); +return this.thisData = map; +}} +return null; +}, "~S"); +Clazz.defineMethod(c$, "getCifFloat", +function(key){ +var map = this.thisData.get(key); +var data = map.get("data"); +var encoding = (((map.get("encoding"))[0]).get("type")).intValue(); +var f = NaN; +try { +switch (encoding) { +case 3: +f = JU.BC.bytesToInt(data, 0, false); +break; +case 33: +f = JU.BC.bytesToDoubleToFloat(data, 0, false); +break; +default: +System.out.println("BCifDensityReader: Number encoding not recognized: " + encoding); +break; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +return f; +}, "~S"); +Clazz.defineMethod(c$, "readCifFloats", +function(key, values){ +var map = this.thisData.get(key); +var data = map.get("data"); +var encoding = (map.get("encoding"))[0]; +var min = (encoding.get("min")).floatValue(); +var max = (encoding.get("max")).floatValue(); +var numSteps = (encoding.get("numSteps")).intValue(); +var kind = encoding.get("kind"); +if ("IntervalQuantization".equals(kind)) { +var delta = (max - min) / (numSteps - 1); +for (var i = data.length; --i >= 0; ) { +values[i] = min + delta * ((data[i] + 256) % 256); +} +} else { +System.out.println("BCifDensityReader: value encoding type? " + kind); +}return values; +}, "~S,~A"); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.allowSigma = true; +this.init2MFR(sg, br); +var o2 = sg.getReaderData(); +var fileName = o2[0]; +var data = o2[1]; +this.isDiff = (fileName != null && fileName.indexOf("&diff=1") >= 0 || (typeof(data)=='string') && (data).indexOf("#diff=1") >= 0); +this.getCifData(fileName, data); +this.nSurfaces = 1; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.getCifMap(this.isDiff ? "FO-FC" : "2FO-FC"); +this.readCifP3("_volume_data_3d_info_axis_order", this.p3); +var axis_order = this.readCifP3("_volume_data_3d_info_axis_order", null); +var fracOrigin = this.readCifP3("_volume_data_3d_info_origin", null); +var fracDimensions = this.readCifP3("_volume_data_3d_info_dimensions", null); +var sampleCounts = this.readCifP3("_volume_data_3d_info_sample_count", this.p3); +this.mapc = Clazz.floatToInt(axis_order.x) + 1; +this.mapr = Clazz.floatToInt(axis_order.y) + 1; +this.maps = Clazz.floatToInt(axis_order.z) + 1; +var crs2abc = Clazz.newIntArray (3, 0); +crs2abc[this.mapc - 1] = 0; +crs2abc[this.mapr - 1] = 1; +crs2abc[this.maps - 1] = 2; +this.n0 = Clazz.floatToInt(sampleCounts.x); +this.n1 = Clazz.floatToInt(sampleCounts.y); +this.n2 = Clazz.floatToInt(sampleCounts.z); +this.na = Clazz.floatToInt(this.getXYZ(sampleCounts, crs2abc[0])); +this.nb = Clazz.floatToInt(this.getXYZ(sampleCounts, crs2abc[1])); +this.nc = Clazz.floatToInt(this.getXYZ(sampleCounts, crs2abc[2])); +this.readCifP3("_volume_data_3d_info_spacegroup_cell_size", this.p3); +this.a = this.p3.x; +this.b = this.p3.y; +this.c = this.p3.z; +var fa = this.getXYZ(fracDimensions, crs2abc[0]); +var fb = this.getXYZ(fracDimensions, crs2abc[1]); +var fc = this.getXYZ(fracDimensions, crs2abc[2]); +this.xyzStart[this.xIndex = 0] = this.getXYZ(fracOrigin, crs2abc[0]) * this.na / fa; +this.xyzStart[this.yIndex = 1] = this.getXYZ(fracOrigin, crs2abc[1]) * this.nb / fb; +this.xyzStart[this.zIndex = 2] = this.getXYZ(fracOrigin, crs2abc[2]) * this.nc / fc; +this.a *= fa; +this.b *= fb; +this.c *= fc; +this.readCifP3("_volume_data_3d_info_spacegroup_cell_angles", this.p3); +this.alpha = this.p3.x; +this.beta = this.p3.y; +this.gamma = this.p3.z; +this.values = this.readCifFloats("_volume_data_3d_values", Clazz.newFloatArray (this.na * this.nb * this.nc, 0)); +this.getVectorsAndOrigin(); +if (this.params.thePlane == null && (this.params.cutoffAutomatic || !Float.isNaN(this.params.sigma))) { +var sigma = (this.params.sigma < 0 || Float.isNaN(this.params.sigma) ? 1 : this.params.sigma); +this.dmean = this.getCifFloat("_volume_data_3d_info_mean_sampled"); +var rmsDeviation = this.getCifFloat("_volume_data_3d_info_sigma_sampled"); +this.params.cutoff = rmsDeviation * sigma + this.dmean; +JU.Logger.info("Cutoff set to (mean + rmsDeviation*" + sigma + " = " + this.params.cutoff + ")\n"); +}this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("BCifDensity reader type=" + this.header + "\n"); +}); +Clazz.defineMethod(c$, "getXYZ", +function(a, x){ +switch (Clazz.floatToInt(x)) { +case 0: +return a.x; +case 1: +return a.y; +case 2: +default: +return a.z; +} +}, "JU.P3,~N"); +Clazz.overrideMethod(c$, "nextVoxel", +function(){ +var v = this.values[this.pt++]; +this.checkSum += v; +return v; +}); +Clazz.overrideMethod(c$, "skipData", +function(nPoints){ +this.pt += nPoints; +}, "~N"); +Clazz.defineMethod(c$, "closeReader", +function(){ +if (this.readerClosed) return; +System.out.println("CifDensityReader checkSum=" + this.checkSum); +Clazz.superCall(this, J.jvxl.readers.BCifDensityReader, "closeReader", []); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CastepDensityReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CastepDensityReader.js new file mode 100755 index 000000000000..3c59a6d2374d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CastepDensityReader.js @@ -0,0 +1,87 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PeriodicVolumeFileReader"], "J.jvxl.readers.CastepDensityReader", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nFilePoints = 0; +this.nSkip = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "CastepDensityReader", J.jvxl.readers.PeriodicVolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.CastepDensityReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +this.isProgressive = false; +this.isAngstroms = true; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "gotoData", +function(n, nPoints){ +this.nSkip = n; +}, "~N,~N"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.jvxlFileHeaderBuffer = new JU.SB(); +while (this.rd() != null && this.line.indexOf(".") < 0) { +} +for (var i = 0; i < 3; ++i) { +var voxelVector = this.volumetricVectors[i]; +voxelVector.set(this.parseFloatStr(this.line), this.parseFloat(), this.parseFloat()); +this.rd(); +} +this.nSurfaces = this.parseIntStr(this.rd()); +this.rd(); +this.voxelCounts[0] = (this.nPointsX = this.parseIntStr(this.line)) + 1; +this.voxelCounts[1] = (this.nPointsY = this.parseInt()) + 1; +this.voxelCounts[2] = (this.nPointsZ = this.parseInt()) + 1; +this.nFilePoints = (this.nPointsX++) * (this.nPointsY++) * (this.nPointsZ++); +this.volumetricOrigin.set(0, 0, 0); +for (var i = 0; i < 3; i++) { +this.volumetricVectors[i].scale(1 / (this.voxelCounts[i] - 1)); +if (this.isAnisotropic) this.setVectorAnisotropy(this.volumetricVectors[i]); +} +while (this.rd().trim().length > 0) { +} +}); +Clazz.overrideMethod(c$, "getPeriodicVoxels", +function(){ +this.rd(); +var tokens = this.getTokens(); +if (this.nSkip > 0 && tokens.length < 3 + this.nSurfaces) { +for (var j = 0; j < this.nSkip; j++) for (var i = 0; i < this.nFilePoints; i++) this.rd(); + + +this.nSkip = 0; +}var dsf = this.downsampleFactor; +if (dsf > 1) { +for (var i = 0; i < this.nFilePoints; i++) { +var x = this.parseIntStr(this.line) - 1; +var y = this.parseInt() - 1; +var z = this.parseInt() - 1; +if (x % dsf == 0 && y % dsf == 0 && z % dsf == 0) { +if (this.nSkip > 0) this.skipPoints(this.nSkip); +this.voxelData[Clazz.doubleToInt(x / dsf)][Clazz.doubleToInt(y / dsf)][Clazz.doubleToInt(z / dsf)] = this.recordData(this.parseFloat()); +}this.rd(); +} +} else { +for (var i = 0; i < this.nFilePoints; i++) { +var x = this.parseIntStr(this.line) - 1; +var y = this.parseInt() - 1; +var z = this.parseInt() - 1; +if (this.nSkip > 0) this.skipPoints(this.nSkip); +this.voxelData[x][y][z] = this.recordData(this.parseFloat()); +this.rd(); +} +}}); +Clazz.defineMethod(c$, "skipPoints", +function(n){ +var pt = this.next[0]; +for (var i = 0; i < n; i++) { +while (pt < this.line.length && JU.PT.isWhitespace(this.line.charAt(pt++))) { +} +while (pt < this.line.length && !JU.PT.isWhitespace(this.line.charAt(pt++))) { +} +} +this.next[0] = pt; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CifDensityReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CifDensityReader.js new file mode 100755 index 000000000000..8d98c7691e58 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CifDensityReader.js @@ -0,0 +1,53 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.BCifDensityReader"], "J.jvxl.readers.CifDensityReader", ["JU.P3", "$.PT"], function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "CifDensityReader", J.jvxl.readers.BCifDensityReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.CifDensityReader, []); +}); +Clazz.overrideMethod(c$, "getCifData", +function(fileName, data){ +this.cifData = this.sg.atomDataServer.readCifData(fileName, data, "CIF"); +}, "~S,~O"); +Clazz.overrideMethod(c$, "readCifP3", +function(key, p3){ +if (p3 == null) p3 = new JU.P3(); +var x = this.getCifFloat(key + "[0]"); +if (Float.isNaN(x)) { +p3.x = NaN; +} else { +p3.x = x; +p3.y = this.getCifFloat(key + "[1]"); +p3.z = this.getCifFloat(key + "[2]"); +}return p3; +}, "~S,JU.P3"); +Clazz.overrideMethod(c$, "getCifMap", +function(type){ +type = "data_" + type; +var list = this.cifData.get("models"); +for (var i = 0; i < list.size(); i++) { +var map = list.get(i); +if (type.equalsIgnoreCase(map.get("name").toString())) return this.thisData = map; +} +return null; +}, "~S"); +Clazz.overrideMethod(c$, "getCifFloat", +function(key){ +var o = this.thisData.get(key); +var x = NaN; +if (o != null) { +if ((typeof(o)=='string')) { +x = JU.PT.parseFloat(o); +} else if (Clazz.instanceOf(o, Number)) { +x = (o).floatValue(); +}}return x; +}, "~S"); +Clazz.overrideMethod(c$, "readCifFloats", +function(key, values){ +var list = this.thisData.get(key); +for (var i = 0, n = values.length; i < n; i++) values[i] = JU.PT.parseFloat(list.get(i)); + +return values; +}, "~S,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CubeReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CubeReader.js new file mode 100755 index 000000000000..cfad7070cc82 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/CubeReader.js @@ -0,0 +1,37 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.CubeReader", ["JU.PT", "$.SB", "JU.Logger"], function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "CubeReader", J.jvxl.readers.VolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.CubeReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append(this.rd()).appendC('\n'); +this.jvxlFileHeaderBuffer.append(this.rd()).appendC('\n'); +var atomLine = this.rd(); +var tokens = JU.PT.getTokensAt(atomLine, 0); +this.ac = this.parseIntStr(tokens[0]); +this.negativeAtomCount = (this.ac < 0); +if (this.negativeAtomCount) this.ac = -this.ac; +this.volumetricOrigin.set(this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3])); +J.jvxl.readers.VolumeFileReader.checkAtomLine(this.isXLowToHigh, this.isAngstroms, tokens[0], atomLine, this.jvxlFileHeaderBuffer); +if (!this.isAngstroms) this.volumetricOrigin.scale(0.5291772); +for (var i = 0; i < 3; ++i) this.readVoxelVector(i); + +for (var i = 0; i < this.ac; ++i) this.jvxlFileHeaderBuffer.append(this.rd() + "\n"); + +if (!this.negativeAtomCount) { +this.nSurfaces = 1; +} else { +this.rd(); +JU.Logger.info("Reading extra CUBE information line: " + this.line); +this.nSurfaces = this.parseIntStr(this.line); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/DelPhiBinaryReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/DelPhiBinaryReader.js new file mode 100755 index 000000000000..acf6849c43ad --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/DelPhiBinaryReader.js @@ -0,0 +1,79 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.DelPhiBinaryReader", ["JU.SB", "$.V3", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.data = null; +this.pt = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "DelPhiBinaryReader", J.jvxl.readers.VolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.DelPhiBinaryReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +var fileName = (sg.getReaderData())[0]; +this.init2VFR(sg, br); +this.binarydoc = this.newBinaryDocument(); +this.setStream(fileName, false); +this.nSurfaces = 1; +if (this.params.thePlane == null) this.params.insideOut = !this.params.insideOut; +this.allowSigma = false; +this.isAngstroms = true; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +var uplbl = this.readString(); +JU.Logger.info(uplbl); +var nxttoplbl = this.readString(); +JU.Logger.info(nxttoplbl); +this.data = this.readFloatArray(); +JU.Logger.info("DelPhi data length: " + this.data.length); +var botlbl = this.readString(); +JU.Logger.info(botlbl); +var scalemid = this.readFloatArray(); +var scale = scalemid[0]; +JU.Logger.info("DelPhi scale: " + scale); +var dx = (scale == 1 ? 0.84375 : 1 / scale); +this.volumetricVectors[0] = JU.V3.new3(0, 0, dx); +this.volumetricVectors[1] = JU.V3.new3(0, dx, 0); +this.volumetricVectors[2] = JU.V3.new3(dx, 0, 0); +JU.Logger.info("DelPhi resolution (pts/angstrom) set to: " + dx); +var nx = 65; +this.voxelCounts[0] = this.voxelCounts[1] = this.voxelCounts[2] = nx; +JU.Logger.info("DelPhi voxel counts: " + nx); +dx *= Clazz.doubleToInt((nx - 1) / 2); +this.volumetricOrigin.set(scalemid[1], scalemid[2], scalemid[3]); +JU.Logger.info("DelPhi center " + this.volumetricOrigin); +this.volumetricOrigin.x -= dx; +this.volumetricOrigin.y -= dx; +this.volumetricOrigin.z -= dx; +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("DelPhi DATA ").append(nxttoplbl.$replace('\n', ' ').trim()).append("\n\n"); +}); +Clazz.defineMethod(c$, "readString", +function(){ +var n = this.binarydoc.readInt(); +var buf = Clazz.newByteArray (n, 0); +this.binarydoc.readByteArray(buf, 0, n); +this.binarydoc.readInt(); +return String.instantialize(buf); +}); +Clazz.defineMethod(c$, "readFloatArray", +function(){ +var n = this.binarydoc.readInt() >> 2; +var a = Clazz.newFloatArray (n, 0); +for (var i = 0; i < n; i++) a[i] = this.binarydoc.readFloat(); + +this.binarydoc.readInt(); +return a; +}); +Clazz.overrideMethod(c$, "nextVoxel", +function(){ +this.nBytes += 4; +return this.data[this.pt++]; +}); +Clazz.overrideMethod(c$, "skipData", +function(nPoints){ +this.pt += nPoints; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Dsn6BinaryReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Dsn6BinaryReader.js new file mode 100755 index 000000000000..d2b1a92552e9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Dsn6BinaryReader.js @@ -0,0 +1,125 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.MapFileReader"], "J.jvxl.readers.Dsn6BinaryReader", ["java.io.DataInputStream", "JU.Rdr", "$.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.byteFactor = 0; +this.xyCount = 0; +this.nBrickX = 0; +this.nBrickY = 0; +this.brickLayerVoxelCount = 0; +this.brickLayerByteCount = 0; +this.brickRowByteCount = 0; +this.brickLayer = null; +this.pt = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "Dsn6BinaryReader", J.jvxl.readers.MapFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.Dsn6BinaryReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, brNull){ +this.init2MFR(sg, this.br); +this.binarydoc = this.newBinaryDocument(); +var o2 = sg.getReaderData(); +var fileName = o2[0]; +var data = o2[1]; +if (data == null) this.binarydoc.setStream(sg.atomDataServer.getBufferedInputStream(fileName), true); + else this.binarydoc.setStreamData( new java.io.DataInputStream(JU.Rdr.getBIS(data.getBytes())), true); +if (this.params.thePlane == null) this.params.insideOut = !this.params.insideOut; +this.nSurfaces = 1; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +var header = Clazz.newShortArray (19, 0); +for (var i = 0; i < 19; i++) header[i] = this.binarydoc.readShort(); + +if (header[18] != 100) { +this.binarydoc.setStream(null, false); +for (var i = 0; i < 19; i++) header[i] = this.binarydoc.swapBytesS(header[i]); + +}this.xyzStart[0] = header[0]; +this.xyzStart[1] = header[1]; +this.xyzStart[2] = header[2]; +this.n0 = header[3]; +this.n1 = header[4]; +this.n2 = header[5]; +this.na = header[6]; +this.nb = header[7]; +this.nc = header[8]; +this.a = header[9]; +this.b = header[10]; +this.c = header[11]; +this.alpha = header[12]; +this.beta = header[13]; +this.gamma = header[14]; +var header16 = header[15]; +var header17 = header[16]; +var scalingFactor = header[17]; +var header19 = header[18]; +this.maps = 3; +this.mapr = 2; +this.mapc = 1; +this.dmin = (0 - header17) * header19 / header16; +this.dmax = (255 - header17) * header19 / header16; +this.drange = this.dmax - this.dmin; +this.byteFactor = this.drange / 255; +var dminError1 = (0 - header17 - 0.5) * header19 / (header16 - 0.5); +var dminError2 = (0 - header17 + 0.5) * header19 / (header16 + 0.5); +var dmaxError1 = (255 - header17 - 0.5) * header19 / (header16 - 0.5); +var dmaxError2 = (255 - header17 + 0.5) * header19 / (header16 + 0.5); +var dminError = Math.round((dminError2 - dminError1) / 0.002) * 0.001; +var dmaxError = Math.round((dmaxError2 - dmaxError1) / 0.002) * 0.001; +JU.Logger.info("DNS6 dmin,dmax = " + this.dmin + "+/-" + dminError + "," + this.dmax + "+/-" + dmaxError); +this.a /= scalingFactor; +this.b /= scalingFactor; +this.c /= scalingFactor; +this.alpha /= scalingFactor; +this.beta /= scalingFactor; +this.gamma /= scalingFactor; +this.binarydoc.seek(0x200); +this.getVectorsAndOrigin(); +this.setCutoffAutomatic(); +this.xyCount = this.n0 * this.n1; +this.brickLayerVoxelCount = this.xyCount * 8; +this.nBrickX = Clazz.doubleToInt((this.n0 + 7) / 8); +this.nBrickY = Clazz.doubleToInt((this.n1 + 7) / 8); +this.brickRowByteCount = this.nBrickX * 512; +this.brickLayerByteCount = this.brickRowByteCount * this.nBrickY; +this.brickLayer = Clazz.newByteArray (this.brickLayerByteCount, 0); +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("DNS6/O progressive brick data reader\n"); +this.jvxlFileHeaderBuffer.append("see http://www.uoxray.uoregon.edu/tnt/manual/node104.html\n"); +}); +Clazz.defineMethod(c$, "readBrickLayer", +function(){ +this.binarydoc.readByteArray(this.brickLayer, 0, this.brickLayerByteCount); +this.pt = 0; +this.nBytes = this.binarydoc.getPosition(); +}); +Clazz.defineMethod(c$, "getBrickValue", +function(pt){ +var x = pt % this.n0; +var y = (Clazz.doubleToInt(pt / this.n0)) % this.n1; +var z = Clazz.doubleToInt(pt / this.xyCount); +var brickX = x % 8; +var brickY = y % 8; +var brickZ = z % 8; +var bX = Clazz.doubleToInt(x / 8); +var bY = Clazz.doubleToInt(y / 8); +var bPt = bY * 512 * this.nBrickX + bX * 512 + brickZ * 64 + brickY * 8 + brickX; +if (bPt % 2 == 0) bPt++; + else bPt--; +var value = (this.brickLayer[bPt] + 256) % 256; +return this.dmin + value * this.byteFactor; +}, "~N"); +Clazz.overrideMethod(c$, "nextVoxel", +function(){ +if ((this.pt % this.brickLayerVoxelCount) == 0) this.readBrickLayer(); +return this.getBrickValue(this.pt++); +}); +Clazz.overrideMethod(c$, "skipData", +function(nPoints){ +for (var i = 0; i < nPoints; i++) this.binarydoc.readByte(); + +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/EfvetReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/EfvetReader.js new file mode 100755 index 000000000000..d408ef41619b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/EfvetReader.js @@ -0,0 +1,80 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PolygonFileReader"], "J.jvxl.readers.EfvetReader", ["JU.CU", "$.P3", "J.jvxl.data.JvxlCoder", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vertexMap = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "EfvetReader", J.jvxl.readers.PolygonFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.EfvetReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2PFR(sg, br); +this.jvxlFileHeaderBuffer.append("efvet file format\nvertices and triangles only\n"); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +this.hasColorData = true; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "getSurfaceData", +function(){ +this.getHeader(); +this.getVertices(); +this.getTriangles(); +JU.Logger.info("efvet file contains " + this.nVertices + " vertices and " + this.nTriangles + " triangles"); +}); +Clazz.defineMethod(c$, "getHeader", +function(){ +this.skipTo(" 0 && this.line.indexOf(">") < 0) this.jvxlFileHeaderBuffer.append("# " + this.line + "\n"); + +JU.Logger.info(this.jvxlFileHeaderBuffer.toString()); +}); +Clazz.defineMethod(c$, "getVertices", +function(){ +var pt = new JU.P3(); +var value = 0; +this.skipTo(" 0 && dataIndex < tokens.length) JU.Logger.info("property " + tokens[dataIndex]); + else JU.Logger.info(this.line); +for (var i = 0; i < this.nVertices; i++) { +this.skipTo(""); +pt.set(values[0], values[1], values[2]); +this.skipTo(null, "property"); +for (var j = 0; j < dataIndex; j++) value = this.parseFloat(); + +if (this.isAnisotropic) this.setVertexAnisotropy(pt); +var v = this.vertexMap[i + 1] = this.addVC(pt, value, i, true); +if (v >= 0 && this.jvxlData.vertexColors != null) { +this.jvxlData.vertexColors[v] = JU.CU.colorTriadToFFRGB(values[6], values[7], values[8]); +this.jvxlData.nVertexColors++; +}} +}); +Clazz.defineMethod(c$, "getTriangles", +function(){ +this.skipTo("= 0 && b >= 0 && c >= 0) this.addTriangleCheck(a, b, c, 7, 0, false, 0); +} +}); +Clazz.defineMethod(c$, "getInt", +function(){ +return this.vertexMap[this.parseInt()]; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoFxyReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoFxyReader.js new file mode 100755 index 000000000000..89cb8c795d9b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoFxyReader.js @@ -0,0 +1,99 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.AtomDataReader"], "J.jvxl.readers.IsoFxyReader", ["JU.SB", "J.jvxl.data.JvxlCoder"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.data = null; +this.isPlanarMapping = false; +this.func = null; +this.values = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoFxyReader", J.jvxl.readers.AtomDataReader); +Clazz.prepareFields (c$, function(){ +this.values = Clazz.newFloatArray (3, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoFxyReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initIFR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.defineMethod(c$, "initIFR", +function(sg){ +this.initADR(sg); +this.isXLowToHigh = true; +this.precalculateVoxelData = false; +this.params.fullyLit = true; +this.isPlanarMapping = (this.params.thePlane != null || this.params.state == 3); +this.volumeData.sr = (this.params.func == null ? null : this); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +if (this.params.functionInfo.size() > 5) this.data = this.params.functionInfo.get(5); +this.setupType("functionXY"); +}, "~B"); +Clazz.defineMethod(c$, "setupType", +function(type){ +this.func = this.params.func; +var functionName = this.params.functionInfo.get(0); +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append(type).append("\n").append(functionName).append("\n"); +if (this.params.thePlane != null || this.data == null && !this.useOriginStepsPoints) this.setVolumeForPlane(); + else if (this.data == null) this.setVolumeDataParams(); + else this.setVolumeData(); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +}, "~S"); +Clazz.overrideMethod(c$, "setVolumeData", +function(){ +if (this.data == null) { +this.setVolumeDataADR(); +return; +}this.volumetricOrigin.setT(this.params.functionInfo.get(1)); +for (var i = 0; i < 3; i++) { +var info = this.params.functionInfo.get(i + 2); +this.voxelCounts[i] = Math.abs(Clazz.floatToInt(info.x)); +this.volumetricVectors[i].set(info.y, info.z, info.w); +} +if (this.isAnisotropic) this.setVolumetricAnisotropy(); +}); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapData){ +if (this.volumeData.sr != null) return; +this.readSurfaceDataVDR(isMapData); +}, "~B"); +Clazz.overrideMethod(c$, "getPlane", +function(x){ +var plane = this.getPlaneSR(x); +this.setPlane(x, plane); +return plane; +}, "~N"); +Clazz.defineMethod(c$, "setPlane", +function(x, plane){ +for (var y = 0, ptyz = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) plane[ptyz++] = this.getValue(x, y, z, 0); + + +}, "~N,~A"); +Clazz.overrideMethod(c$, "getValue", +function(x, y, z, pxyz){ +var value; +if (this.data == null) { +value = this.evaluateValue(x, y, z); +} else { +this.volumeData.voxelPtToXYZ(x, y, z, this.ptTemp); +value = this.data[x][y]; +}return (this.isPlanarMapping ? value : value - this.ptTemp.z); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "getValueAtPoint", +function(pt, getSource){ +if (this.params.func == null) return 0; +this.values[0] = pt.x; +this.values[1] = pt.y; +this.values[2] = pt.z; +return this.sg.atomDataServer.evalFunctionFloat(this.func[0], this.func[1], this.values); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "evaluateValue", +function(x, y, z){ +this.volumeData.voxelPtToXYZ(x, y, z, this.ptTemp); +return this.getValueAtPoint(this.ptTemp, false); +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoFxyzReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoFxyzReader.js new file mode 100755 index 000000000000..2ea3123f1920 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoFxyzReader.js @@ -0,0 +1,20 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.IsoFxyReader"], "J.jvxl.readers.IsoFxyzReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$data = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoFxyzReader", J.jvxl.readers.IsoFxyReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoFxyzReader, []); +}); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +if (this.params.functionInfo.size() > 5) this.$data = this.params.functionInfo.get(5); +this.setupType("functionXYZ"); +}, "~B"); +Clazz.overrideMethod(c$, "getValue", +function(x, y, z, xyz){ +return (this.$data == null ? this.evaluateValue(x, y, z) : this.$data[x][y][z]); +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectAtomReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectAtomReader.js new file mode 100755 index 000000000000..9926c80237e4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectAtomReader.js @@ -0,0 +1,136 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.AtomDataReader", "JU.BS"], "J.jvxl.readers.IsoIntersectAtomReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.myBsA = null; +this.myBsB = null; +this.bsAtomMinMax = null; +this.func = null; +this.funcType = 0; +this.thisPlaneB = null; +this.values = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoIntersectAtomReader", J.jvxl.readers.AtomDataReader); +Clazz.prepareFields (c$, function(){ +this.myBsA = new JU.BS(); +this.myBsB = new JU.BS(); +this.bsAtomMinMax = new Array(2); +this.values = Clazz.newFloatArray (2, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoIntersectAtomReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initADR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.setup(isMapData); +if (isMapData) return false; +this.initializeVolumetricData(); +this.volumeData.setUnitVectors(); +this.thisPlaneB = Clazz.newFloatArray (this.volumeData.getYzCount(), 0); +this.voxelSource = Clazz.newIntArray (this.volumeData.nPoints, 0); +this.vl0 = this.volumeData.volumetricVectorLengths[0]; +this.vl1 = this.volumeData.volumetricVectorLengths[1]; +this.vl2 = this.volumeData.volumetricVectorLengths[2]; +this.getAtomMinMax(this.myBsA, this.bsAtomMinMax[0] = new Array(this.nPointsX)); +this.getAtomMinMax(this.myBsB, this.bsAtomMinMax[1] = new Array(this.nPointsX)); +return true; +}, "~B"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +this.params.fullyLit = true; +this.point = this.params.point; +if ((typeof(this.params.func)=='string')) { +this.funcType = (this.params.func.equals("a-b") ? 2 : this.params.func.equals("a+b") ? 1 : 3); +} else if (this.params.func == null || this.sg.atomDataServer == null) { +this.funcType = 2; +} else { +this.func = this.params.func; +}if (this.contactPair == null) { +var bsA = this.params.intersection[0]; +var bsB = this.params.intersection[1]; +var bsSelected = new JU.BS(); +bsSelected.or(bsA); +bsSelected.or(bsB); +this.doUseIterator = true; +this.getAtoms(bsSelected, this.doAddHydrogens, true, true, false, false, false, NaN, null); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) this.myBsA.set(this.myIndex[i]); + +for (var i = bsB.nextSetBit(0); i >= 0; i = bsB.nextSetBit(i + 1)) this.myBsB.set(this.myIndex[i]); + +this.setHeader("VDW intersection surface", this.params.calculationType); +this.setRanges(this.params.solvent_ptsPerAngstrom, this.params.solvent_gridMax, 0); +this.margin = 5; +} else { +this.setVolumeData(); +}this.isProgressive = this.isXLowToHigh = true; +}, "~B"); +Clazz.overrideMethod(c$, "getPlane", +function(x){ +if (this.yzCount == 0) { +this.initPlanes(); +}this.thisX = x; +this.thisPlane = this.yzPlanes[x % 2]; +if (this.contactPair == null) { +this.thisAtomSet = this.bsAtomMinMax[0][x]; +this.resetPlane(3.4028235E38); +this.markSphereVoxels(0, this.params.distance); +this.thisPlane = this.thisPlaneB; +this.thisAtomSet = this.bsAtomMinMax[1][x]; +this.resetPlane(3.4028235E38); +this.markSphereVoxels(0, this.params.distance); +} else { +this.markPlaneVoxels(this.contactPair.myAtoms[0], this.contactPair.radii[0]); +this.thisPlane = this.thisPlaneB; +this.markPlaneVoxels(this.contactPair.myAtoms[1], this.contactPair.radii[1]); +}this.thisPlane = this.yzPlanes[x % 2]; +if (!this.setVoxels()) this.resetPlane(0); +if (this.contactPair == null) this.unsetVoxelData(); +return this.thisPlane; +}, "~N"); +Clazz.defineMethod(c$, "setVoxels", +function(){ +for (var i = 0; i < this.yzCount; i++) { +var va = this.thisPlane[i]; +var vb = this.thisPlaneB[i]; +var v = this.getValueAB(va, vb); +if (Float.isNaN(v)) return false; +this.thisPlane[i] = v; +} +return true; +}); +Clazz.defineMethod(c$, "getValueAB", +function(va, vb){ +if (va == 3.4028235E38 || vb == 3.4028235E38 || Float.isNaN(va) || Float.isNaN(vb)) return 3.4028235E38; +switch (this.funcType) { +case 1: +return (va + vb); +case 2: +case 4: +return (va - vb); +case 3: +return (va > vb ? va : vb); +default: +this.values[0] = va; +this.values[1] = vb; +return this.sg.atomDataServer.evalFunctionFloat(this.func[0], this.func[1], this.values); +} +}, "~N,~N"); +Clazz.overrideMethod(c$, "getValueAtPoint", +function(pt, getSource){ +return this.getValueAB(this.getValueAtPoint2(pt, this.myBsA), this.getValueAtPoint2(pt, this.myBsB)); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "getValueAtPoint2", +function(pt, bs){ +var value = 3.4028235E38; +for (var iAtom = bs.nextSetBit(0); iAtom >= 0; iAtom = bs.nextSetBit(iAtom + 1)) { +var r = pt.distance(this.atomXyzTruncated[iAtom]) - this.atomRadius[iAtom]; +if (r < value) value = r; +} +return (value == 3.4028235E38 ? NaN : value); +}, "JU.T3,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectGridReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectGridReader.js new file mode 100755 index 000000000000..8d6cbc8bcbe9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectGridReader.js @@ -0,0 +1,41 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.IsoIntersectGridReader", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.readers = null; +this.factors = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoIntersectGridReader", J.jvxl.readers.VolumeFileReader); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initSR(sg); +var data = sg.getReaderData(); +this.readers = data[0]; +this.factors = data[1]; +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.defineMethod(c$, "readVolumeParameters", +function(isMapData){ +for (var i = this.readers.length; --i >= 0; ) if (!this.readers[i].readVolumeParameters(isMapData)) return false; + +return true; +}, "~B"); +Clazz.defineMethod(c$, "getNextVoxelValue", +function(){ +var f = 0; +for (var i = this.readers.length; --i >= 0; ) f += this.factors[i] * this.readers[i].getNextVoxelValue(); + +return f; +}); +Clazz.overrideMethod(c$, "closeReader", +function(){ +if (this.readerClosed) return; +this.readerClosed = true; +for (var i = this.readers.length; --i >= 0; ) this.readers[i].closeReaderSFR(); + +if (this.nData == 0 || this.dataMax == -3.4028235E38) return; +this.dataMean /= this.nData; +JU.Logger.info("IsoIntersectFileReader closing file: " + this.nData + " points read \ndata min/max/mean = " + this.dataMin + "/" + this.dataMax + "/" + this.dataMean); +}); +Clazz.overrideMethod(c$, "readParameters", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectReader.js new file mode 100755 index 000000000000..ccbfc6ab0ef4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoIntersectReader.js @@ -0,0 +1,136 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.AtomDataReader", "JU.BS"], "J.jvxl.readers.IsoIntersectReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.myBsA = null; +this.myBsB = null; +this.bsAtomMinMax = null; +this.func = null; +this.funcType = 0; +this.thisPlaneB = null; +this.values = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoIntersectReader", J.jvxl.readers.AtomDataReader); +Clazz.prepareFields (c$, function(){ +this.myBsA = new JU.BS(); +this.myBsB = new JU.BS(); +this.bsAtomMinMax = new Array(2); +this.values = Clazz.newFloatArray (2, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoIntersectReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initADR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.setup(isMapData); +if (isMapData) return false; +this.initializeVolumetricData(); +this.volumeData.setUnitVectors(); +this.thisPlaneB = Clazz.newFloatArray (this.volumeData.getYzCount(), 0); +this.voxelSource = Clazz.newIntArray (this.volumeData.nPoints, 0); +this.vl0 = this.volumeData.volumetricVectorLengths[0]; +this.vl1 = this.volumeData.volumetricVectorLengths[1]; +this.vl2 = this.volumeData.volumetricVectorLengths[2]; +this.getAtomMinMax(this.myBsA, this.bsAtomMinMax[0] = new Array(this.nPointsX)); +this.getAtomMinMax(this.myBsB, this.bsAtomMinMax[1] = new Array(this.nPointsX)); +return true; +}, "~B"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +this.params.fullyLit = true; +this.point = this.params.point; +if ((typeof(this.params.func)=='string')) { +this.funcType = (this.params.func.equals("a-b") ? 2 : this.params.func.equals("a+b") ? 1 : 3); +} else if (this.params.func == null || this.sg.atomDataServer == null) { +this.funcType = 2; +} else { +this.func = this.params.func; +}if (this.contactPair == null) { +var bsA = this.params.intersection[0]; +var bsB = this.params.intersection[1]; +var bsSelected = new JU.BS(); +bsSelected.or(bsA); +bsSelected.or(bsB); +this.doUseIterator = true; +this.getAtoms(bsSelected, this.doAddHydrogens, true, true, false, false, false, NaN, null); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) this.myBsA.set(this.myIndex[i]); + +for (var i = bsB.nextSetBit(0); i >= 0; i = bsB.nextSetBit(i + 1)) this.myBsB.set(this.myIndex[i]); + +this.setHeader("VDW intersection surface", this.params.calculationType); +this.setRanges(this.params.solvent_ptsPerAngstrom, this.params.solvent_gridMax, 0); +this.margin = 5; +} else { +this.setVolumeData(); +}this.isProgressive = this.isXLowToHigh = true; +}, "~B"); +Clazz.overrideMethod(c$, "getPlane", +function(x){ +if (this.yzCount == 0) { +this.initPlanes(); +}this.thisX = x; +this.thisPlane = this.yzPlanes[x % 2]; +if (this.contactPair == null) { +this.thisAtomSet = this.bsAtomMinMax[0][x]; +this.resetPlane(3.4028235E38); +this.markSphereVoxels(0, this.params.distance); +this.thisPlane = this.thisPlaneB; +this.thisAtomSet = this.bsAtomMinMax[1][x]; +this.resetPlane(3.4028235E38); +this.markSphereVoxels(0, this.params.distance); +} else { +this.markPlaneVoxels(this.contactPair.myAtoms[0], this.contactPair.radii[0]); +this.thisPlane = this.thisPlaneB; +this.markPlaneVoxels(this.contactPair.myAtoms[1], this.contactPair.radii[1]); +}this.thisPlane = this.yzPlanes[x % 2]; +if (!this.setVoxels()) this.resetPlane(0); +if (this.contactPair == null) this.unsetVoxelData(); +return this.thisPlane; +}, "~N"); +Clazz.defineMethod(c$, "setVoxels", +function(){ +for (var i = 0; i < this.yzCount; i++) { +var va = this.thisPlane[i]; +var vb = this.thisPlaneB[i]; +var v = this.getValueAB(va, vb); +if (Float.isNaN(v)) return false; +this.thisPlane[i] = v; +} +return true; +}); +Clazz.defineMethod(c$, "getValueAB", +function(va, vb){ +if (va == 3.4028235E38 || vb == 3.4028235E38 || Float.isNaN(va) || Float.isNaN(vb)) return 3.4028235E38; +switch (this.funcType) { +case 1: +return (va + vb); +case 2: +case 4: +return (va - vb); +case 3: +return (va > vb ? va : vb); +default: +this.values[0] = va; +this.values[1] = vb; +return this.sg.atomDataServer.evalFunctionFloat(this.func[0], this.func[1], this.values); +} +}, "~N,~N"); +Clazz.overrideMethod(c$, "getValueAtPoint", +function(pt, getSource){ +return this.getValueAB(this.getValueAtPoint2(pt, this.myBsA), this.getValueAtPoint2(pt, this.myBsB)); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "getValueAtPoint2", +function(pt, bs){ +var value = 3.4028235E38; +for (var iAtom = bs.nextSetBit(0); iAtom >= 0; iAtom = bs.nextSetBit(iAtom + 1)) { +var r = pt.distance(this.atomXyzTruncated[iAtom]) - this.atomRadius[iAtom]; +if (r < value) value = r; +} +return (value == 3.4028235E38 ? NaN : value); +}, "JU.T3,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMOReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMOReader.js new file mode 100755 index 000000000000..44483970e71d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMOReader.js @@ -0,0 +1,248 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.AtomDataReader"], "J.jvxl.readers.IsoMOReader", ["java.util.Random", "JU.AU", "$.Measure", "$.P3", "$.PT", "$.V3", "J.api.Interface", "J.quantum.QS", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.random = null; +this.points = null; +this.vTemp = null; +this.q = null; +this.mos = null; +this.isNci = false; +this.coef = null; +this.dfCoefMaps = null; +this.linearCombination = null; +this.coefs = null; +this.isElectronDensityCalc = false; +this.mo = null; +this.vDist = null; +this.qSetupDone = false; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoMOReader", J.jvxl.readers.AtomDataReader); +Clazz.prepareFields (c$, function(){ +this.vDist = Clazz.newFloatArray (3, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoMOReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initADR(sg); +this.isNci = (this.params.qmOrbitalType == 3); +if (this.isNci) { +this.isXLowToHigh = this.hasColorData = true; +this.precalculateVoxelData = false; +this.params.insideOut = !this.params.insideOut; +}}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.mos = this.params.moData.get("mos"); +this.linearCombination = this.params.qm_moLinearCombination; +this.mo = (this.mos != null && this.linearCombination == null ? this.mos.get(this.params.qm_moNumber - 1) : null); +var haveVolumeData = this.params.moData.containsKey("haveVolumeData"); +if (haveVolumeData && this.mo != null) this.params.volumeData = this.mo.get("volumeData"); +this.setup2(); +this.doAddHydrogens = false; +this.getAtoms(this.params.bsSelected, this.doAddHydrogens, !this.isNci, this.isNci, this.isNci, false, false, this.params.qm_marginAngstroms, (this.isNci ? null : this.params.modelInvRotation)); +var className; +if (this.isNci) { +className = "quantum.NciCalculation"; +this.setHeader("NCI (promolecular)", "see NCIPLOT: A Program for Plotting Noncovalent Interaction Regions, Julia Contreras-Garcia, et al., J. of Chemical Theory and Computation, 2011, 7, 625-632"); +} else { +className = "quantum.MOCalculation"; +this.setHeader("MO", "calculation type: " + this.params.moData.get("calculationType")); +}this.setRanges(this.params.qm_ptsPerAngstrom, this.params.qm_gridMax, 0); +if (haveVolumeData) { +for (var i = this.params.title.length; --i >= 0; ) this.fixTitleLine(i, this.mo); + +} else { +this.q = J.api.Interface.getOption(className, this.sg.atomDataServer, "file"); +if (this.isNci) { +this.qpc = this.q; +} else { +if (this.linearCombination == null) { +for (var i = this.params.title.length; --i >= 0; ) this.fixTitleLine(i, this.mo); + +this.coef = this.mo.get("coefficients"); +this.dfCoefMaps = this.mo.get("dfCoefMaps"); +} else { +this.coefs = JU.AU.newFloat2(this.mos.size()); +for (var i = 1; i < this.linearCombination.length; i += 2) { +var j = Clazz.floatToInt(this.linearCombination[i]); +if (j > this.mos.size() || j < 1) return; +this.coefs[j - 1] = this.mos.get(j - 1).get("coefficients"); +} +for (var i = this.params.title.length; --i >= 0; ) this.fixTitleLine(i, null); + +}}this.isElectronDensityCalc = (this.coef == null && this.linearCombination == null && !this.isNci); +}this.volumeData.sr = null; +if (isMapData && !this.isElectronDensityCalc && !haveVolumeData) { +this.volumeData.doIterate = false; +this.volumeData.setVoxelDataAsArray(this.voxelData = Clazz.newFloatArray (1, 1, 1, 0)); +this.volumeData.sr = this; +this.points = new Array(1); +this.points[0] = new JU.P3(); +if (!this.setupCalculation()) this.q = null; +} else if (this.params.psi_monteCarloCount > 0) { +this.vertexDataOnly = true; +this.random = new java.util.Random(this.params.randomSeed); +}}, "~B"); +Clazz.overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.setup(isMapData); +if (this.volumeData.sr == null) this.initializeVolumetricData(); +return true; +}, "~B"); +Clazz.defineMethod(c$, "fixTitleLine", +function(iLine, mo){ +if (this.params.title == null) return; +var line = this.params.title[iLine]; +if (line.indexOf(" MO ") >= 0) { +var nboType = this.params.moData.get("nboType"); +if (nboType != null) line = JU.PT.rep(line, " MO ", " " + nboType + " "); +}if (line.indexOf("%M") >= 0) line = this.params.title[iLine] = JU.PT.formatStringS(line, "M", this.atomData.modelName); +if (line.indexOf("%F") >= 0) line = this.params.title[iLine] = JU.PT.formatStringS(line, "F", JU.PT.rep(this.params.fileName, "DROP_", "")); +var pt = line.indexOf("%"); +if (line.length == 0 || pt < 0) return; +var rep = 0; +if (line.indexOf("%I") >= 0) line = JU.PT.formatStringS(line, "I", this.params.qm_moLinearCombination == null ? "" + this.params.qm_moNumber : J.quantum.QS.getMOString(this.params.qm_moLinearCombination)); +if (line.indexOf("%N") >= 0) line = JU.PT.formatStringS(line, "N", "" + this.params.qmOrbitalCount); +var energy = null; +if (mo == null) { +for (var i = 0; i < this.linearCombination.length; i += 2) if (this.linearCombination[i] != 0) { +mo = this.mos.get(Clazz.floatToInt(this.linearCombination[i + 1]) - 1); +var e = mo.get("energy"); +if (energy == null) { +if (e == null) break; +energy = e; +} else if (!energy.equals(e)) { +energy = null; +break; +}} +} else { +if (mo.containsKey("energy")) energy = mo.get("energy"); +}if (line.indexOf("%E") >= 0) { +line = JU.PT.formatStringS(line, "E", energy != null && ++rep != 0 ? "" + energy : ""); +} else if (energy != null) { +var s = JU.PT.formatStringF(line, "E", energy.floatValue()); +if (s !== line) { +line = s; +rep++; +}}if (line.indexOf("%U") >= 0) line = JU.PT.formatStringS(line, "U", energy != null && this.params.moData.containsKey("energyUnits") && ++rep != 0 ? this.params.moData.get("energyUnits") : ""); +if (line.indexOf("%S") >= 0) line = JU.PT.formatStringS(line, "S", mo != null && mo.containsKey("symmetry") && ++rep != 0 ? "" + mo.get("symmetry") : ""); +if (line.indexOf("%O") >= 0) { +var obj = (mo == null ? null : mo.get("occupancy")); +var o = (obj == null ? 0 : obj.floatValue()); +line = JU.PT.formatStringS(line, "O", obj != null && this.params.qm_moLinearCombination == null && ++rep != 0 ? (o == Clazz.floatToInt(o) ? "" + Clazz.floatToInt(o) : JU.PT.formatF(o, 0, 4, false, false)) : ""); +}if (line.indexOf("%T") >= 0) line = JU.PT.formatStringS(line, "T", mo != null && mo.containsKey("type") ? (this.params.qm_moLinearCombination == null && ++rep != 0 ? "" + mo.get("type") : "") + ((this.params.isSquared || this.params.isSquaredLinear) && ++rep != 0 ? " ^2" : "") : ""); +if (line.equals("string")) { +this.params.title[iLine] = ""; +return; +}var isOptional = (line.indexOf("?") == 0); +this.params.title[iLine] = (!isOptional ? line : rep > 0 && !line.trim().endsWith("=") ? line.substring(1) : ""); +}, "~N,java.util.Map"); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapData){ +if (this.volumeData.sr != null) return; +if (this.params.psi_monteCarloCount <= 0) { +this.readSurfaceDataVDR(isMapData); +return; +}if (this.points != null) return; +this.points = new Array(1000); +for (var j = 0; j < 1000; j++) this.points[j] = new JU.P3(); + +if (this.params.thePlane != null) this.vTemp = new JU.V3(); +for (var i = 0; i < 3; i++) this.vDist[i] = this.volumeData.volumetricVectorLengths[i] * this.volumeData.voxelCounts[i]; + +this.volumeData.setVoxelDataAsArray(this.voxelData = Clazz.newFloatArray (1000, 1, 1, 0)); +this.getValues(); +var value; +var f = 0; +for (var j = 0; j < 1000; j++) if ((value = Math.abs(this.voxelData[j][0][0])) > f) f = value; + +if (f < 0.0001) return; +for (var i = 0; i < this.params.psi_monteCarloCount; ) { +this.getValues(); +for (var j = 0; j < 1000; j++) { +value = this.voxelData[j][0][0]; +var absValue = Math.abs(value); +if (absValue <= this.getRnd(f)) continue; +this.addVC(this.points[j], value, 0, false); +if (++i == this.params.psi_monteCarloCount) break; +} +} +}, "~B"); +Clazz.overrideMethod(c$, "postProcessVertices", +function(){ +}); +Clazz.defineMethod(c$, "getValues", +function(){ +for (var j = 0; j < 1000; j++) { +this.voxelData[j][0][0] = 0; +this.points[j].set(this.volumeData.volumetricOrigin.x + this.getRnd(this.vDist[0]), this.volumeData.volumetricOrigin.y + this.getRnd(this.vDist[1]), this.volumeData.volumetricOrigin.z + this.getRnd(this.vDist[2])); +if (this.params.thePlane != null) JU.Measure.getPlaneProjection(this.points[j], this.params.thePlane, this.points[j], this.vTemp); +} +this.createOrbital(); +}); +Clazz.overrideMethod(c$, "getValueAtPoint", +function(pt, getSource){ +return (this.q == null ? 0 : this.q.processPt(pt)); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "getRnd", +function(f){ +return this.random.nextFloat() * f; +}, "~N"); +Clazz.overrideMethod(c$, "generateCube", +function(){ +if (this.params.volumeData != null) return; +this.newVoxelDataCube(); +this.createOrbital(); +}); +Clazz.defineMethod(c$, "createOrbital", +function(){ +var isMonteCarlo = (this.params.psi_monteCarloCount > 0); +if (this.isElectronDensityCalc) { +if (this.mos == null || isMonteCarlo) return; +System.out.println("createOrbital " + this.params.qm_moNumber); +for (var i = this.params.qm_moNumber; --i >= 0; ) { +JU.Logger.info(" generating isosurface data for MO " + (i + 1)); +var mo = this.mos.get(i); +this.coef = mo.get("coefficients"); +this.dfCoefMaps = mo.get("dfCoefMaps"); +if (!this.setupCalculation()) return; +this.q.createCube(); +} +} else { +if (!isMonteCarlo) JU.Logger.info("generating isosurface data for MO using cutoff " + this.params.cutoff); +if (!this.setupCalculation()) return; +this.q.createCube(); +this.jvxlData.integration = this.q.getIntegration(); +if (this.mo != null) this.mo.put("integration", Float.$valueOf(this.jvxlData.integration)); +}}); +Clazz.overrideMethod(c$, "getPlane", +function(x){ +if (!this.qSetupDone) this.setupCalculation(); +return this.getPlaneSR(x); +}, "~N"); +Clazz.defineMethod(c$, "setupCalculation", +function(){ +this.qSetupDone = true; +switch (this.params.qmOrbitalType) { +case 5: +break; +case 2: +case 1: +return (this.q).setupCalculation(this.params.moData, this.params.qmOrbitalType == 2, this.volumeData, this.bsMySelected, this.atomData.xyz, this.atomData.atoms, this.atomData.firstAtomIndex, this.dfCoefMaps, this.coef, this.linearCombination, this.params.isSquaredLinear, this.coefs, this.points); +case 3: +return (this.q).setupCalculation(this.volumeData, this.bsMySelected, this.params.bsSolvent, this.atomData.bsMolecules, this.atomData.atoms, this.atomData.firstAtomIndex, true, this.points, this.params.parameters, this.params.testFlags); +} +return false; +}); +Clazz.overrideMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +var zero = this.getSPF(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +if (this.q != null && !Float.isNaN(zero)) { +zero = this.q.processPt(ptReturn); +if (this.params.isSquared) zero *= zero; +}return zero; +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMepReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMepReader.js new file mode 100755 index 000000000000..4a252e7ca47f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMepReader.js @@ -0,0 +1,34 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.AtomDataReader"], "J.jvxl.readers.IsoMepReader", ["J.api.Interface"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.type = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoMepReader", J.jvxl.readers.AtomDataReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoMepReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initIMR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.defineMethod(c$, "initIMR", +function(sg){ +this.initADR(sg); +this.type = "Mep"; +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +this.doAddHydrogens = false; +this.getAtoms(this.params.bsSelected, this.doAddHydrogens, true, false, false, false, false, this.params.mep_marginAngstroms, null); +this.setHeader("MEP", ""); +this.setRanges(this.params.mep_ptsPerAngstrom, this.params.mep_gridMax, 0); +}, "~B"); +Clazz.overrideMethod(c$, "generateCube", +function(){ +this.newVoxelDataCube(); +var m = J.api.Interface.getOption("quantum." + this.type + "Calculation", this.sg.atomDataServer, "file"); +m.calculate(this.volumeData, this.bsMySelected, this.atomData.xyz, this.atomData.atoms, this.params.theProperty, this.params.mep_calcType); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMlpReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMlpReader.js new file mode 100755 index 000000000000..7dea26bb4df0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoMlpReader.js @@ -0,0 +1,14 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.IsoMepReader"], "J.jvxl.readers.IsoMlpReader", null, function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "IsoMlpReader", J.jvxl.readers.IsoMepReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoMlpReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initIMR(sg); +this.type = "Mlp"; +}, "J.jvxl.readers.SurfaceGenerator"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoPlaneReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoPlaneReader.js new file mode 100755 index 000000000000..2634aecb144d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoPlaneReader.js @@ -0,0 +1,21 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.AtomDataReader"], "J.jvxl.readers.IsoPlaneReader", null, function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "IsoPlaneReader", J.jvxl.readers.AtomDataReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoPlaneReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initADR(sg); +this.precalculateVoxelData = false; +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +this.setHeader("PLANE", this.params.thePlane.toString()); +this.params.cutoff = 0; +this.setVolumeForPlane(); +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoShapeReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoShapeReader.js new file mode 100755 index 000000000000..f1472bb32e3c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoShapeReader.js @@ -0,0 +1,375 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeDataReader", "JU.P3"], "J.jvxl.readers.IsoShapeReader", ["java.util.Random", "JU.Measure", "$.SB", "$.V3", "J.jvxl.data.JvxlCoder", "JU.Logger", "$.MeshSurface"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.psi_n = 2; +this.psi_l = 1; +this.psi_m = 1; +this.psi_Znuc = 1; +this.sphere_radiusAngstroms = 0; +this.monteCarloCount = 0; +this.random = null; +this.allowNegative = true; +this.rfactor = null; +this.pfactor = null; +this.radius = 0; +this.ptPsi = null; +this.psi_normalization = 0; +this.aoMax = 0; +this.aoMax2 = 0; +this.angMax2 = 0; +this.planeU = null; +this.planeV = null; +this.planeCenter = null; +this.planeRadius = 0; +this.rnl = 0; +this.surfaceDone = false; +this.nTries = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoShapeReader", J.jvxl.readers.VolumeDataReader); +Clazz.prepareFields (c$, function(){ +this.rfactor = Clazz.newDoubleArray (10, 0); +this.pfactor = Clazz.newDoubleArray (10, 0); +this.ptPsi = new JU.P3(); +this.psi_normalization = 1 / (2 * Math.sqrt(3.141592653589793)); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoShapeReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initVDR(sg); +var o = sg.getReaderData(); +if (Clazz.instanceOf(o, Float)) { +this.sphere_radiusAngstroms = (o).floatValue(); +} else { +this.sphere_radiusAngstroms = 0; +var data = o; +this.psi_n = Clazz.floatToInt(data[0]); +this.psi_l = Clazz.floatToInt(data[1]); +this.psi_m = Clazz.floatToInt(data[2]); +this.psi_Znuc = data[3]; +this.monteCarloCount = Clazz.floatToInt(data[4]); +}}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.volumeData.sr = this; +this.precalculateVoxelData = false; +this.isQuiet = true; +if (Float.isNaN(this.center.x)) this.center.set(0, 0, 0); +var type = "sphere"; +switch (this.dataType) { +case 1294: +this.calcFactors(this.psi_n, this.psi_l, this.psi_m); +this.autoScaleOrbital(); +this.ptsPerAngstrom = 5; +this.maxGrid = 40; +type = "hydrogen-like orbital"; +if (this.monteCarloCount > 0) { +this.vertexDataOnly = true; +this.random = new java.util.Random(this.params.randomSeed); +} else { +this.isQuiet = false; +}break; +case 70: +case 71: +type = "lp"; +this.vertexDataOnly = true; +this.radius = 0; +this.ptsPerAngstrom = 1; +this.maxGrid = 1; +break; +case 68: +this.allowNegative = false; +this.calcFactors(this.psi_n, this.psi_l, this.psi_m); +this.psi_normalization = 1; +this.radius = 1.1 * this.eccentricityRatio * this.eccentricityScale; +if (this.eccentricityScale > 0 && this.eccentricityScale < 1) this.radius /= this.eccentricityScale; +this.ptsPerAngstrom = 10; +this.maxGrid = 21; +type = "lobe"; +break; +case 67: +type = "ellipsoid(thermal)"; +this.radius = 3.0 * this.sphere_radiusAngstroms; +this.ptsPerAngstrom = 10; +this.maxGrid = 22; +break; +case 74: +if (!isMapData && this.monteCarloCount == 0) break; +type = "geodesic"; +case 66: +if (type.equals("sphere")) type = "ellipsoid"; +case 65: +default: +this.radius = 1.2 * this.sphere_radiusAngstroms * this.eccentricityScale; +this.ptsPerAngstrom = 10; +this.maxGrid = 22; +break; +} +if (this.monteCarloCount == 0) this.setVolumeData(); +this.setHeader(type + "\n"); +}, "~B"); +Clazz.overrideMethod(c$, "setVolumeData", +function(){ +this.setVoxelRange(0, -this.radius, this.radius, this.ptsPerAngstrom, this.maxGrid, 0); +this.setVoxelRange(1, -this.radius, this.radius, this.ptsPerAngstrom, this.maxGrid, 0); +if (this.allowNegative) this.setVoxelRange(2, -this.radius, this.radius, this.ptsPerAngstrom, this.maxGrid, 0); + else this.setVoxelRange(2, 0, this.radius / this.eccentricityRatio, this.ptsPerAngstrom, this.maxGrid, 0); +}); +Clazz.overrideMethod(c$, "getValue", +function(x, y, z, ptyz){ +this.volumeData.voxelPtToXYZ(x, y, z, this.ptPsi); +return this.getValueAtPoint(this.ptPsi, false); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "getValueAtPoint", +function(pt, getSource){ +this.ptTemp.sub2(pt, this.center); +if (this.isEccentric) this.eccentricityMatrixInverse.rotate(this.ptTemp); +if (this.isAnisotropic) { +this.ptTemp.x /= this.anisotropy[0]; +this.ptTemp.y /= this.anisotropy[1]; +this.ptTemp.z /= this.anisotropy[2]; +}if (this.sphere_radiusAngstroms > 0) { +if (this.params.anisoB != null) { +return this.sphere_radiusAngstroms - Math.sqrt(this.ptTemp.x * this.ptTemp.x + this.ptTemp.y * this.ptTemp.y + this.ptTemp.z * this.ptTemp.z) / (Math.sqrt(this.params.anisoB[0] * this.ptTemp.x * this.ptTemp.x + this.params.anisoB[1] * this.ptTemp.y * this.ptTemp.y + this.params.anisoB[2] * this.ptTemp.z * this.ptTemp.z + this.params.anisoB[3] * this.ptTemp.x * this.ptTemp.y + this.params.anisoB[4] * this.ptTemp.x * this.ptTemp.z + this.params.anisoB[5] * this.ptTemp.y * this.ptTemp.z)); +}return this.sphere_radiusAngstroms - Math.sqrt(this.ptTemp.x * this.ptTemp.x + this.ptTemp.y * this.ptTemp.y + this.ptTemp.z * this.ptTemp.z); +}var value = this.hydrogenAtomPsi(this.ptTemp); +if (Math.abs(value) < 1.0E-7) value = 0; +return (this.allowNegative || value >= 0 ? value : 0); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "setHeader", +function(line1){ +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append(line1); +if (this.sphere_radiusAngstroms > 0) { +this.jvxlFileHeaderBuffer.append(" rad=").appendF(this.sphere_radiusAngstroms); +} else { +this.jvxlFileHeaderBuffer.append(" n=").appendI(this.psi_n).append(", l=").appendI(this.psi_l).append(", m=").appendI(this.psi_m).append(" Znuc=").appendF(this.psi_Znuc).append(" res=").appendF(this.ptsPerAngstrom).append(" rad=").appendF(this.radius); +}this.jvxlFileHeaderBuffer.append(this.isAnisotropic ? " anisotropy=(" + this.anisotropy[0] + "," + this.anisotropy[1] + "," + this.anisotropy[2] + ")\n" : "\n"); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +}, "~S"); +Clazz.defineMethod(c$, "calcFactors", +function(n, el, m){ +var abm = Math.abs(m); +var NnlLnl = Math.pow(2 * this.psi_Znuc / n / 0.52918, 1.5) * Math.sqrt(J.jvxl.readers.IsoShapeReader.fact[n - el - 1] * J.jvxl.readers.IsoShapeReader.fact[n + el] / 2 / n); +var Plm = Math.pow(2, -el) * J.jvxl.readers.IsoShapeReader.fact[el] * J.jvxl.readers.IsoShapeReader.fact[el + abm] * Math.sqrt((2 * el + 1) * J.jvxl.readers.IsoShapeReader.fact[el - abm] / 2 / J.jvxl.readers.IsoShapeReader.fact[el + abm]); +for (var p = 0; p <= n - el - 1; p++) this.rfactor[p] = NnlLnl / J.jvxl.readers.IsoShapeReader.fact[p] / J.jvxl.readers.IsoShapeReader.fact[n - el - p - 1] / J.jvxl.readers.IsoShapeReader.fact[2 * el + p + 1]; + +for (var p = abm; p <= el; p++) this.pfactor[p] = Math.pow(-1, el - p) * Plm / J.jvxl.readers.IsoShapeReader.fact[p] / J.jvxl.readers.IsoShapeReader.fact[el + abm - p] / J.jvxl.readers.IsoShapeReader.fact[el - p] / J.jvxl.readers.IsoShapeReader.fact[p - abm]; + +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "autoScaleOrbital", +function(){ +this.aoMax = 0; +var rmax = 0; +this.aoMax2 = 0; +var rmax2 = 0; +var d; +if (this.params.distance == 0) { +for (var ir = 0; ir < 1000; ir++) { +var r = ir / 10; +d = Math.abs(this.radialPart(r)); +if (JU.Logger.debugging) JU.Logger.debug("R\t" + r + "\t" + d); +if (d >= this.aoMax) { +rmax = r; +this.aoMax = d; +}d *= d * r * r; +if (d >= this.aoMax2) { +rmax2 = r; +this.aoMax2 = d; +}} +} else { +this.aoMax = Math.abs(this.radialPart(this.params.distance)); +this.aoMax2 = this.aoMax * this.aoMax * this.params.distance * this.params.distance; +rmax = rmax2 = this.params.distance; +}JU.Logger.info("Atomic Orbital radial max = " + this.aoMax + " at " + rmax); +JU.Logger.info("Atomic Orbital r2R2 max = " + this.aoMax2 + " at " + rmax2); +if (this.monteCarloCount >= 0) { +this.angMax2 = 0; +for (var ang = 0; ang < 180; ang += 1) { +var th = ang / (6.283185307179586); +d = Math.abs(this.angularPart(th, 0, 0)); +if (JU.Logger.debugging) JU.Logger.debug("A\t" + ang + "\t" + d); +if (d > this.angMax2) { +this.angMax2 = d; +}} +this.angMax2 *= this.angMax2; +if (this.psi_m != 0) { +this.angMax2 *= 2; +}JU.Logger.info("Atomic Orbital phi^2theta^2 max = " + this.angMax2); +}var min; +if (this.params.cutoff == 0) { +min = (this.monteCarloCount > 0 ? this.aoMax * 0.01 : 0.01); +} else if (this.monteCarloCount > 0) { +this.aoMax = Math.abs(this.params.cutoff); +min = this.aoMax * 0.01; +} else { +min = Math.abs(this.params.cutoff / 2); +if (this.params.isSquared) min = Math.sqrt(min / 2); +}var r0 = 0; +for (var ir = 1000; --ir >= 0; ir -= 1) { +var r = ir / 10; +d = Math.abs(this.radialPart(r)); +if (d >= min) { +r0 = r; +break; +}} +this.radius = r0 + (this.monteCarloCount == 0 ? 1 : 0); +if (this.isAnisotropic) { +var aMax = 0; +for (var i = 3; --i >= 0; ) if (this.anisotropy[i] > aMax) aMax = this.anisotropy[i]; + +this.radius *= aMax; +}JU.Logger.info("Atomic Orbital radial extent set to " + this.radius + " for cutoff " + this.params.cutoff); +if (this.params.thePlane != null && this.monteCarloCount > 0) { +this.planeCenter = new JU.P3(); +this.planeU = new JU.V3(); +JU.Measure.getPlaneProjection(this.center, this.params.thePlane, this.planeCenter, this.planeU); +this.planeU.set(this.params.thePlane.x, this.params.thePlane.y, this.params.thePlane.z); +this.planeU.normalize(); +this.planeV = JU.V3.new3(1, 0, 0); +if (Math.abs(this.planeU.dot(this.planeV)) > 0.5) this.planeV.set(0, 1, 0); +this.planeV.cross(this.planeU, this.planeV); +this.planeU.cross(this.planeU, this.planeV); +this.aoMax2 = 0; +d = this.center.distance(this.planeCenter); +if (d < this.radius) { +this.planeRadius = Math.sqrt(this.radius * this.radius - d * d); +var ir = Clazz.floatToInt(this.planeRadius * 10); +for (var ix = -ir; ix <= ir; ix++) for (var iy = -ir; iy <= ir; iy++) { +this.ptPsi.setT(this.planeU); +this.ptPsi.scale(ix / 10); +this.ptPsi.scaleAdd2(iy / 10, this.planeV, this.ptPsi); +d = this.hydrogenAtomPsi(this.ptPsi); +d = Math.abs(this.hydrogenAtomPsi(this.ptPsi)); +if (d > this.aoMax2) this.aoMax2 = d; +} + +if (this.aoMax2 < 0.001) this.aoMax2 = 0; + else this.aoMax2 *= this.aoMax2; +}}}); +Clazz.defineMethod(c$, "radialPart", +function(r){ +var rho = 2 * this.psi_Znuc * r / this.psi_n / 0.52918; +var sum = 0; +for (var p = 0; p <= this.psi_n - this.psi_l - 1; p++) sum += Math.pow(-rho, p) * this.rfactor[p]; + +return Math.exp(-rho / 2) * Math.pow(rho, this.psi_l) * sum; +}, "~N"); +Clazz.defineMethod(c$, "hydrogenAtomPsi", +function(pt){ +var x2y2 = pt.x * pt.x + pt.y * pt.y; +this.rnl = this.radialPart(Math.sqrt(x2y2 + pt.z * pt.z)); +var ph = Math.atan2(pt.y, pt.x); +var th = Math.atan2(Math.sqrt(x2y2), pt.z); +var theta_lm_phi_m = this.angularPart(th, ph, this.psi_m); +return this.rnl * theta_lm_phi_m; +}, "JU.P3"); +Clazz.defineMethod(c$, "angularPart", +function(th, ph, m){ +var cth = Math.cos(th); +var sth = Math.sin(th); +var isS = (m == 0 && this.psi_l == 0); +var abm = Math.abs(m); +var sum = 0; +if (isS) sum = this.pfactor[0]; + else for (var p = abm; p <= this.psi_l; p++) sum += (p == abm ? 1 : Math.pow(1 + cth, p - abm)) * (p == this.psi_l ? 1 : Math.pow(1 - cth, this.psi_l - p)) * this.pfactor[p]; + +var theta_lm = (abm == 0 ? sum : Math.abs(Math.pow(sth, abm)) * sum); +var phi_m; +if (m == 0) phi_m = 1; + else if (m > 0) phi_m = Math.cos(m * ph) * 1.414214; + else phi_m = Math.sin(m * ph) * 1.414214; +return (Math.abs(phi_m) < 0.0000000001 ? 0 : theta_lm * phi_m * this.psi_normalization); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "createMonteCarloOrbital", +function(){ +if (this.surfaceDone || this.aoMax2 == 0 || this.params.distance > this.radius) return; +var isS = (this.psi_m == 0 && this.psi_l == 0); +this.surfaceDone = true; +var value; +var rave = 0; +this.nTries = 0; +for (var i = 0; i < this.monteCarloCount; this.nTries++) { +if (this.params.thePlane == null) { +var r; +if (this.params.distance == 0) { +r = this.random.nextDouble() * this.radius; +var rp = r * this.radialPart(r); +if (rp * rp <= this.aoMax2 * this.random.nextDouble()) continue; +} else { +r = this.params.distance; +}var u = this.random.nextDouble(); +var v = this.random.nextDouble(); +var theta = 2 * 3.141592653589793 * u; +var cosPhi = 2 * v - 1; +if (!isS) { +var phi = Math.acos(cosPhi); +var ap = this.angularPart(phi, theta, this.psi_m); +if (ap * ap <= this.angMax2 * this.random.nextDouble()) continue; +}var sinPhi = Math.sin(Math.acos(cosPhi)); +var x = r * Math.cos(theta) * sinPhi; +var y = r * Math.sin(theta) * sinPhi; +var z = r * cosPhi; +this.ptPsi.set(x, y, z); +this.ptPsi.add(this.center); +value = this.getValueAtPoint(this.ptPsi, false); +} else { +this.ptPsi.setT(this.planeU); +this.ptPsi.scale(this.random.nextFloat() * this.planeRadius * 2 - this.planeRadius); +this.ptPsi.scaleAdd2(this.random.nextFloat() * this.planeRadius * 2 - this.planeRadius, this.planeV, this.ptPsi); +this.ptPsi.add(this.planeCenter); +value = this.getValueAtPoint(this.ptPsi, false); +if (value * value <= this.aoMax2 * this.random.nextFloat()) continue; +}rave += this.ptPsi.distance(this.center); +this.addVC(this.ptPsi, value, 0, true); +i++; +} +if (this.params.distance == 0) JU.Logger.info("Atomic Orbital mean radius = " + rave / this.monteCarloCount + " for " + this.monteCarloCount + " points (" + this.nTries + " tries)"); +}); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapData){ +switch (this.params.dataType) { +case 1294: +if (this.monteCarloCount <= 0) break; +this.createMonteCarloOrbital(); +return; +case 70: +case 71: +this.ptPsi.set(0, 0, this.eccentricityScale / 2); +this.eccentricityMatrixInverse.rotate(this.ptPsi); +this.ptPsi.add(this.center); +this.addVC(this.center, 0, 0, true); +this.addVC(this.ptPsi, 0, 0, true); +this.addTriangleCheck(0, 0, 0, 0, 0, false, 0); +return; +case 74: +if (!isMapData) { +this.createGeodesic(); +return; +}} +this.readSurfaceDataVDR(isMapData); +}, "~B"); +Clazz.defineMethod(c$, "createGeodesic", +function(){ +var ms = JU.MeshSurface.getSphereData(4); +var pts = ms.altVertices; +for (var i = 0; i < pts.length; i++) { +var pt = JU.P3.newP(pts[i]); +pt.scale(this.params.distance); +pt.add(this.center); +this.addVC(pt, 0, i, false); +} +var faces = ms.pis; +for (var i = 0; i < faces.length; i++) { +var face = faces[i]; +this.addTriangleCheck(face[0], face[1], face[2], 7, 7, false, 0); +} +}); +c$.fact = Clazz.newFloatArray (20, 0); +{ +J.jvxl.readers.IsoShapeReader.fact[0] = 1; +for (var i = 1; i < 20; i++) J.jvxl.readers.IsoShapeReader.fact[i] = J.jvxl.readers.IsoShapeReader.fact[i - 1] * i; + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoSolventReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoSolventReader.js new file mode 100755 index 000000000000..0cafd9467172 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/IsoSolventReader.js @@ -0,0 +1,633 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["JU.P3", "J.jvxl.readers.AtomDataReader", "JU.P4", "$.V3"], "J.jvxl.readers.IsoSolventReader", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.Measure", "J.jvxl.data.MeshData", "JU.BSUtil", "$.Logger", "$.MeshSurface", "$.TempArray"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cavityRadius = 0; +this.envelopeRadius = 0; +this.dots = null; +this.doCalculateTroughs = false; +this.isCavity = false; +this.isPocket = false; +this.iter = null; +this.bsSurfacePoints = null; +this.bsSurfaceDone = null; +this.bsLocale = null; +this.htEdges = null; +this.vEdges = null; +this.vFaces = null; +this.ptS1 = null; +this.ptS2 = null; +this.vTemp = null; +this.plane = null; +this.ptTemp2 = null; +this.vTemp2 = null; +this.p = null; +this.bsAtomMinMax = null; +this.isSurfacePoint = false; +this.iAtomSurface = 0; +this.nTest = 0; +if (!Clazz.isClassDefined("J.jvxl.readers.IsoSolventReader.Edge")) { +J.jvxl.readers.IsoSolventReader.$IsoSolventReader$Edge$ (); +} +if (!Clazz.isClassDefined("J.jvxl.readers.IsoSolventReader.Face")) { +J.jvxl.readers.IsoSolventReader.$IsoSolventReader$Face$ (); +} +this.rAS = 0; +this.rBS = 0; +this.rAS2 = 0; +this.rBS2 = 0; +this.dAB = 0; +this.dAB2 = 0; +this.ecosASB2 = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "IsoSolventReader", J.jvxl.readers.AtomDataReader); +Clazz.prepareFields (c$, function(){ +this.ptS1 = new JU.P3(); +this.ptS2 = new JU.P3(); +this.vTemp = new JU.V3(); +this.plane = new JU.P4(); +this.ptTemp2 = new JU.P3(); +this.vTemp2 = new JU.V3(); +this.p = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.IsoSolventReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initADR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.setup(isMapData); +this.initializeVolumetricData(); +this.volumeData.setUnitVectors(); +this.vl0 = this.volumeData.volumetricVectorLengths[0]; +this.vl1 = this.volumeData.volumetricVectorLengths[1]; +this.vl2 = this.volumeData.volumetricVectorLengths[2]; +if (this.isProgressive) { +this.volumeData.getYzCount(); +this.bsAtomMinMax = new Array(this.nPointsX); +this.getAtomMinMax(null, this.bsAtomMinMax); +this.voxelSource = Clazz.newIntArray (this.volumeData.nPoints, 0); +}return true; +}, "~B"); +Clazz.overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +if (this.contactPair == null) { +this.cavityRadius = this.params.cavityRadius; +this.envelopeRadius = this.params.envelopeRadius; +this.sr = this.params.solventRadius; +this.point = this.params.point; +this.isCavity = (this.params.isCavity && this.meshDataServer != null); +this.isPocket = (this.params.pocket != null && this.meshDataServer != null); +this.doCalculateTroughs = (!isMapData && this.sg.atomDataServer != null && !this.isCavity && this.sr > 0 && (this.dataType == 1195 || this.dataType == 1203)); +this.doUseIterator = this.doCalculateTroughs; +this.getAtoms(this.params.bsSelected, this.doAddHydrogens, true, false, false, true, false, NaN, null); +if (this.isCavity || this.isPocket) this.dots = this.meshDataServer.calculateGeodesicSurface(this.bsMySelected, this.envelopeRadius); +this.setHeader("solvent/molecular surface", this.params.calculationType); +if (this.havePlane || !isMapData) { +var r = Math.max(this.params.solventExtendedAtomRadius, this.params.solventRadius); +var minPtsPerAng = (r >= 1 ? 1.5 / r : 0); +if (minPtsPerAng > 0) System.out.println("IsoSolventReader.minPtsPerAng=" + minPtsPerAng); +this.setRanges(this.params.solvent_ptsPerAngstrom, this.params.solvent_gridMax, minPtsPerAng); +this.volumeData.getYzCount(); +this.margin = this.volumeData.maxGrid * 2.0; +}if (this.bsNearby != null) this.bsMySelected.or(this.bsNearby); +} else if (!isMapData) { +this.setVolumeData(); +}if (!this.doCalculateTroughs) { +if (isMapData) { +this.precalculateVoxelData = false; +this.volumeData.sr = this; +} else if (!this.isCavity) { +this.isProgressive = this.isXLowToHigh = true; +}}if (this.thisAtomSet == null) this.thisAtomSet = JU.BSUtil.setAll(this.myAtomCount); +}, "~B"); +Clazz.overrideMethod(c$, "generateCube", +function(){ +if (this.isCavity && this.params.theProperty != null) return; +if (this.isCavity && this.dataType != 1207 && this.dataType != 1208) { +this.params.vertexSource = null; +this.newVoxelDataCube(); +this.resetVoxelData(3.4028235E38); +this.markSphereVoxels(this.cavityRadius, this.params.distance); +this.generateSolventCavity(); +this.resetVoxelData(3.4028235E38); +this.markSphereVoxels(0, NaN); +} else { +this.voxelSource = Clazz.newIntArray (this.volumeData.nPoints, 0); +this.generateSolventCube(); +}this.unsetVoxelData(); +var info = this.params.slabInfo; +if (info != null) for (var i = 0; i < info.size(); i++) if ((info.get(i)[2]).booleanValue() && Clazz.instanceOf(info.get(i)[0],"JU.P4")) { +this.volumeData.capData(info.get(i)[0], this.params.cutoff); +info.removeItemAt(i--); +} +}); +Clazz.overrideMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA0, vB0, fReturn, ptReturn){ +var vA = this.marchingCubes.getLinearOffset(x, y, z, vA0); +var vB = this.marchingCubes.getLinearOffset(x, y, z, vB0); +this.isSurfacePoint = (this.bsSurfaceVoxels != null && (this.bsSurfaceVoxels.get(vA) || this.bsSurfaceVoxels.get(vB))); +if (this.voxelSource != null) { +var vs = Math.abs(Float.isNaN(valueB) || valueA < valueB ? this.voxelSource[vA] : this.voxelSource[vB]); +if (vs > 0) this.iAtomSurface = this.atomIndex[vs - 1]; +}if (J.jvxl.readers.IsoSolventReader.testLinear || this.voxelSource == null || this.voxelSource[vA] == 0 || this.voxelSource[vA] != this.voxelSource[vB]) return this.getSPF(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +var fraction = fReturn[0] = JU.MeshSurface.getSphericalInterpolationFraction((this.voxelSource[vA] < 0 ? this.sr : this.atomRadius[this.voxelSource[vA] - 1]), valueA, valueB, edgeVector.length()); +ptReturn.scaleAdd2(fraction, edgeVector, pointA); +var diff = valueB - valueA; +return valueA + fraction * diff; +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz.overrideMethod(c$, "addVertexCopy", +function(vertexXYZ, value, assocVertex, asCopy){ +var i = this.addVC(vertexXYZ, value, assocVertex, asCopy); +if (i < 0) return i; +if (this.isSurfacePoint) this.bsSurfacePoints.set(i); +if (this.params.vertexSource != null) this.params.vertexSource[i] = this.iAtomSurface; +return i; +}, "JU.T3,~N,~N,~B"); +Clazz.overrideMethod(c$, "selectPocket", +function(doExclude){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +var v = this.meshData.vs; +var nVertices = this.meshData.vc; +var vv = this.meshData.vvs; +var nDots = this.dots.length; +for (var i = 0; i < nVertices; i++) { +for (var j = 0; j < nDots; j++) { +if (this.dots[j].distance(v[i]) < this.envelopeRadius) { +vv[i] = NaN; +continue; +}} +} +this.meshData.getSurfaceSet(); +var nSets = this.meshData.nSets; +var pocketSet = JU.BS.newN(nSets); +var ss; +for (var i = 0; i < nSets; i++) if ((ss = this.meshData.surfaceSet[i]) != null) for (var j = ss.nextSetBit(0); j >= 0; j = ss.nextSetBit(j + 1)) if (Float.isNaN(this.meshData.vvs[j])) { +pocketSet.set(i); +break; +} + +for (var i = 0; i < nSets; i++) if (this.meshData.surfaceSet[i] != null && pocketSet.get(i) == doExclude) this.meshData.invalidateSurfaceSet(i); + +this.updateSurfaceData(); +if (!doExclude) this.meshData.surfaceSet = null; +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 3, null); +this.meshData = new J.jvxl.data.MeshData(); +}}, "~B"); +Clazz.overrideMethod(c$, "postProcessVertices", +function(){ +this.setVertexSource(); +if (this.doCalculateTroughs && this.bsSurfacePoints != null) { +var bsAll = new JU.BS(); +var bsSurfaces = this.meshData.getSurfaceSet(); +var bsSources = null; +var volumes = (this.isPocket ? null : J.jvxl.data.MeshData.calculateVolumeOrArea(this.meshData, null, false, false)); +var minVolume = (this.isCavity ? (1.5 * 3.141592653589793 * Math.pow(this.sr, 3)) : 0); +var maxVolume = 0; +var maxIsNegative = false; +if (volumes != null && !this.isCavity) for (var i = 0; i < this.meshData.nSets; i++) { +var v = volumes[i]; +if (Math.abs(v) > maxVolume) { +maxVolume = Math.abs(v); +maxIsNegative = (v < 0); +}} +var factor = (maxIsNegative ? -1 : 1); +for (var i = 0; i < this.meshData.nSets; i++) { +var bss = bsSurfaces[i]; +if (bss.intersects(this.bsSurfacePoints)) { +if (volumes == null || volumes[i] * factor > minVolume) if (this.params.vertexSource != null) { +var bs = new JU.BS(); +if (bsSources == null) bsSources = new Array(bsSurfaces.length); +for (var j = bss.nextSetBit(0); j >= 0; j = bss.nextSetBit(j + 1)) { +var iatom = this.params.vertexSource[j]; +if (iatom < 0) continue; +if (bsAll.get(iatom)) { +this.meshData.invalidateSurfaceSet(i); +break; +}bs.set(iatom); +} +bsAll.or(bs); +continue; +}}this.meshData.invalidateSurfaceSet(i); +} +this.updateSurfaceData(); +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 3, null); +this.meshData = new J.jvxl.data.MeshData(); +}}if (this.params.thePlane != null && this.params.slabInfo == null) this.params.addSlabInfo(JU.TempArray.getSlabWithinRange(-100, 0)); +}); +Clazz.defineMethod(c$, "generateSolventCavity", +function(){ +var bs = JU.BS.newN(this.nPointsX * this.nPointsY * this.nPointsZ); +var i = 0; +var nDots = this.dots.length; +var n = 0; +var d; +var r2 = this.envelopeRadius; +for (var x = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) { +out : for (var z = 0; z < this.nPointsZ; ++z, ++i) if ((d = this.voxelData[x][y][z]) < 3.4028235E38 && d >= this.cavityRadius) { +this.volumeData.voxelPtToXYZ(x, y, z, this.ptV); +for (var j = 0; j < nDots; j++) { +if (this.dots[j].distance(this.ptV) < r2) continue out; +} +bs.set(i); +n++; +} +} + +JU.Logger.info("cavities include " + n + " voxel points"); +this.atomRadius = Clazz.newFloatArray (n, 0); +this.atomXyzTruncated = new Array(n); +for (var x = 0, ipt = 0, apt = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) if (bs.get(ipt++)) { +this.volumeData.voxelPtToXYZ(x, y, z, (this.atomXyzTruncated[apt] = new JU.P3())); +this.atomRadius[apt++] = this.voxelData[x][y][z]; +} + + +this.myAtomCount = this.firstNearbyAtom = n; +this.thisAtomSet = JU.BSUtil.setAll(this.myAtomCount); +this.rs = null; +this.setRadii(); +}); +Clazz.defineMethod(c$, "generateSolventCube", +function(){ +if (this.dataType == 1207) return; +this.params.vertexSource = Clazz.newIntArray (this.volumeData.nPoints, 0); +this.bsSurfaceDone = new JU.BS(); +this.bsSurfaceVoxels = new JU.BS(); +this.bsSurfacePoints = new JU.BS(); +if (this.doCalculateTroughs) { +this.iter = this.sg.atomDataServer.getSelectedAtomIterator(this.bsMySelected, true, false, false); +this.vEdges = new JU.Lst(); +this.bsLocale = new Array(this.myAtomCount); +this.htEdges = new java.util.Hashtable(); +this.getEdges(); +JU.Logger.info(this.vEdges.size() + " edges"); +this.vFaces = new JU.Lst(); +this.getFaces(); +JU.Logger.info(this.vFaces.size() + " faces"); +this.bsLocale = null; +this.htEdges = null; +this.iter.release(); +this.iter = null; +this.newVoxelDataCube(); +this.resetVoxelData(3.4028235E38); +this.markFaceVoxels(true); +this.markToroidVoxels(); +this.validSpheres.or(this.noFaceSpheres); +this.vEdges = null; +this.markFaceVoxels(false); +this.vFaces = null; +} else { +this.newVoxelDataCube(); +this.resetVoxelData(3.4028235E38); +}this.markSphereVoxels(0, this.doCalculateTroughs ? 3.4028235E38 : this.params.distance); +this.noFaceSpheres = null; +this.validSpheres = null; +}); +Clazz.defineMethod(c$, "getEdges", +function(){ +for (var iatomA = 0; iatomA < this.myAtomCount; iatomA++) this.bsLocale[iatomA] = new JU.BS(); + +for (var iatomA = 0; iatomA < this.myAtomCount; iatomA++) { +var ptA = this.atomXyzTruncated[iatomA]; +var rA = this.rs[iatomA]; +this.sg.atomDataServer.setIteratorForAtom(this.iter, this.atomIndex[iatomA], rA + this.maxRS); +while (this.iter.hasNext()) { +var iB = this.iter.next(); +var iatomB = this.myIndex[iB]; +if (iatomA >= this.firstNearbyAtom && iatomB >= this.firstNearbyAtom) continue; +var ptB = this.atomXyzTruncated[iatomB]; +var rB = this.rs[iatomB]; +var dAB = ptA.distance(ptB); +if (dAB >= rA + rB) continue; +var edge = Clazz.innerTypeInstance(J.jvxl.readers.IsoSolventReader.Edge, this, null, this, iatomA, iatomB, dAB); +this.vEdges.addLast(edge); +this.bsLocale[iatomA].set(iatomB); +this.bsLocale[iatomB].set(iatomA); +this.htEdges.put(edge.toString(), edge); +} +} +}); +Clazz.defineMethod(c$, "findEdge", +function(i, j){ +return this.htEdges.get(i < j ? i + "_" + j : j + "_" + i); +}, "~N,~N"); +Clazz.defineMethod(c$, "getFaces", +function(){ +var bs = new JU.BS(); +this.params.surfaceAtoms = this.validSpheres = new JU.BS(); +this.noFaceSpheres = JU.BSUtil.setAll(this.myAtomCount); +for (var i = this.vEdges.size(); --i >= 0; ) { +var edge = this.vEdges.get(i); +var ia = edge.ia; +var ib = edge.ib; +bs.clearAll(); +bs.or(this.bsLocale[ia]); +bs.and(this.bsLocale[ib]); +for (var ic = bs.nextSetBit(ib + 1); ic >= 0; ic = bs.nextSetBit(ic + 1)) { +if (this.getSolventPoints(edge, ia, ib, ic)) { +var f; +var isOK = false; +if ((f = this.validateFace(ia, ib, ic, edge, this.ptS1)) != null) { +this.vFaces.addLast(f); +isOK = true; +}if ((f = this.validateFace(ia, ib, ic, edge, this.ptS2)) != null) { +this.vFaces.addLast(f); +isOK = true; +}if (isOK) { +this.noFaceSpheres.clear(ia); +this.noFaceSpheres.clear(ib); +this.noFaceSpheres.clear(ic); +}}} +} +}); +Clazz.defineMethod(c$, "validateFace", +function(ia, ib, ic, edge, ptS){ +this.sg.atomDataServer.setIteratorForPoint(this.iter, this.modelIndex, ptS, this.maxRS); +var isValid = true; +while (this.iter.hasNext()) { +var iia = this.iter.next(); +var iatom = this.myIndex[iia]; +if (iatom == ia || iatom == ib || iatom == ic) continue; +var d = this.atomData.atoms[iia].distance(ptS); +if (d < this.atomData.atomRadius[iia] + this.sr) { +isValid = false; +break; +}} +var bc = this.findEdge(ib, ic); +var ca = this.findEdge(ia, ic); +var f = (isValid ? Clazz.innerTypeInstance(J.jvxl.readers.IsoSolventReader.Face, this, null, ia, ib, ic, ptS) : null); +edge.addFace(f); +bc.addFace(f); +ca.addFace(f); +if (!isValid) return null; +this.validSpheres.set(ia); +this.validSpheres.set(ib); +this.validSpheres.set(ic); +return f; +}, "~N,~N,~N,J.jvxl.readers.IsoSolventReader.Edge,JU.P3"); +Clazz.defineMethod(c$, "markFaceVoxels", +function(firstPass){ +var bsThisPass = new JU.BS(); +var v0 = this.volumetricVectors[0]; +var v1 = this.volumetricVectors[1]; +var v2 = this.volumetricVectors[2]; +for (var fi = this.vFaces.size(); --fi >= 0; ) { +var f = this.vFaces.get(fi); +var ptA = this.atomXyzTruncated[f.ia]; +var ptB = this.atomXyzTruncated[f.ib]; +var ptC = this.atomXyzTruncated[f.ic]; +var ptS = f.pS; +this.setGridLimitsForAtom(ptS, this.sr, this.pt0, this.pt1); +this.volumeData.voxelPtToXYZ(this.pt0.x, this.pt0.y, this.pt0.z, this.ptV); +for (var i = this.pt0.x; i < this.pt1.x; i++, this.ptV.add2(v0, this.ptY0)) { +this.ptY0.setT(this.ptV); +for (var j = this.pt0.y; j < this.pt1.y; j++, this.ptV.add2(v1, this.ptZ0)) { +this.ptZ0.setT(this.ptV); +for (var k = this.pt0.z; k < this.pt1.z; k++, this.ptV.add(v2)) { +var value = this.sr - this.ptV.distance(ptS); +var v = this.voxelData[i][j][k]; +var ipt = this.volumeData.getPointIndex(i, j, k); +if (firstPass && value > 0) this.bsSurfaceDone.set(ipt); +if (JU.Measure.isInTetrahedron(this.ptV, ptA, ptB, ptC, ptS, this.plane, this.vTemp, this.vTemp2, false)) { +if (!firstPass ? !this.bsSurfaceDone.get(ipt) && value < 0 && value > -this.volumeData.maxGrid * 1.8 && (value > v) == bsThisPass.get(ipt) : (value > 0 && (v < 0 || v == 3.4028235E38 || (value > v) == bsThisPass.get(ipt)))) { +bsThisPass.set(ipt); +this.setVoxel(i, j, k, ipt, value); +if (this.voxelSource != null) this.voxelSource[ipt] = -1 - f.ia; +if (value > 0) { +this.bsSurfaceVoxels.set(ipt); +}}}} +} +} +} +}, "~B"); +Clazz.defineMethod(c$, "markToroidVoxels", +function(){ +var v0 = this.volumetricVectors[0]; +var v1 = this.volumetricVectors[1]; +var v2 = this.volumetricVectors[2]; +for (var ei = this.vEdges.size(); --ei >= 0; ) { +var edge = this.vEdges.get(ei); +if (!edge.isValid()) continue; +var ia = edge.ia; +var ib = edge.ib; +var ptA = this.atomXyzTruncated[ia]; +var ptB = this.atomXyzTruncated[ib]; +this.rAS = this.rs[ia]; +this.rBS = this.rs[ib]; +this.rAS2 = this.rs2[ia]; +this.rBS2 = this.rs2[ib]; +this.dAB = edge.d; +this.dAB2 = edge.d2; +this.ecosASB2 = edge.cosASB2; +this.setGridLimitsForAtom(edge, edge.maxr, this.pt0, this.pt1); +this.volumeData.voxelPtToXYZ(this.pt0.x, this.pt0.y, this.pt0.z, this.ptV); +for (var i = this.pt0.x; i < this.pt1.x; i++, this.ptV.add2(v0, this.ptY0)) { +this.ptY0.setT(this.ptV); +for (var j = this.pt0.y; j < this.pt1.y; j++, this.ptV.add2(v1, this.ptZ0)) { +this.ptZ0.setT(this.ptV); +for (var k = this.pt0.z; k < this.pt1.z; k++, this.ptV.add(v2)) { +var dVS = this.checkSpecialVoxel(ptA, ptB, this.ptV); +if (Float.isNaN(dVS)) continue; +var value = this.sr - dVS; +if (value < this.voxelData[i][j][k]) { +var ipt = this.volumeData.getPointIndex(i, j, k); +this.setVoxel(i, j, k, ipt, value); +if (this.voxelSource != null) this.voxelSource[ipt] = -1 - ia; +}} +} +} +} +}); +Clazz.overrideMethod(c$, "unsetVoxelData", +function(){ +if (!this.havePlane) { +this.unsetVoxelData2(); +return; +}if (this.isProgressive) for (var i = 0; i < this.yzCount; i++) { +if (this.thisPlane[i] < 0.001) { +} else { +this.thisPlane[i] = 0.001; +}} + else for (var x = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) if (this.voxelData[x][y][z] < 0.001) { +} else { +this.voxelData[x][y][z] = 0.001; +} + + +}); +Clazz.defineMethod(c$, "getSolventPoints", +function(edge, ia, ib, ic){ +var rAS = this.rs[ia]; +var v = edge.v; +var cosAngleBAS = (edge.d2 + this.rs2[ia] - this.rs2[ib]) / (2 * edge.d * rAS); +var angleBAS = Math.acos(cosAngleBAS); +this.p.scaleAdd2(cosAngleBAS * rAS, v, this.atomXyzTruncated[ia]); +JU.Measure.getPlaneThroughPoint(this.p, v, this.plane); +var dPS = (Math.sin(angleBAS) * rAS); +var ptC = this.atomXyzTruncated[ic]; +var rCS = this.rs[ic]; +var dCT = JU.Measure.distanceToPlane(this.plane, ptC); +if (Math.abs(dCT) >= rCS * 0.9) return false; +this.ptTemp.scaleAdd2(-dCT, v, ptC); +var dpT = this.p.distance(this.ptTemp); +var dsp2 = dPS * dPS; +var dST2 = this.rs2[ic] - dCT * dCT; +var cosTheta = (dsp2 + dpT * dpT - dST2) / (2 * dPS * dpT); +if (Math.abs(cosTheta) >= 0.99) return false; +var vXS = this.vTemp2; +vXS.sub2(this.ptTemp, this.p); +vXS.normalize(); +this.ptTemp.scaleAdd2(dPS * cosTheta, vXS, this.p); +vXS.cross(v, vXS); +vXS.normalize(); +vXS.scale((Math.sqrt(1 - cosTheta * cosTheta) * dPS)); +this.ptS1.add2(this.ptTemp, vXS); +this.ptS2.sub2(this.ptTemp, vXS); +return true; +}, "J.jvxl.readers.IsoSolventReader.Edge,~N,~N,~N"); +Clazz.defineMethod(c$, "checkSpecialVoxel", +function(ptA, ptB, ptV){ +var dAV = ptA.distance(ptV); +var dAV2 = ptA.distanceSquared(ptV); +var f = this.rAS / dAV; +if (f > 1) { +this.p.set(ptA.x + (ptV.x - ptA.x) * f, ptA.y + (ptV.y - ptA.y) * f, ptA.z + (ptV.z - ptA.z) * f); +return (ptB.distanceSquared(this.p) >= this.rBS2 ? NaN : this.solventDistance(this.rAS, this.rAS2, this.rBS2, dAV, dAV2, ptB.distanceSquared(ptV))); +}var dBV = ptB.distance(ptV); +if ((f = this.rBS / dBV) > 1) { +this.p.set(ptB.x + (ptV.x - ptB.x) * f, ptB.y + (ptV.y - ptB.y) * f, ptB.z + (ptV.z - ptB.z) * f); +return (ptA.distanceSquared(this.p) >= this.rAS2 ? NaN : this.solventDistance(this.rBS, this.rBS2, this.rAS2, dBV, dBV * dBV, dAV2)); +}return NaN; +}, "JU.P3,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "solventDistance", +function(rAS, rAS2, rBS2, dAV, dAV2, dBV2){ +var angleVAB = Math.acos((dAV2 + this.dAB2 - dBV2) / (2 * dAV * this.dAB)); +var angleSAB = Math.acos((rAS2 + this.dAB2 - rBS2) / (2 * rAS * this.dAB)); +var dVS2 = (rAS2 + dAV2 - 2 * rAS * dAV * Math.cos(angleSAB - angleVAB)); +var dVS = Math.sqrt(dVS2); +return (this.ecosASB2 < (rAS2 + dVS2 - dAV * dAV) / (dVS * rAS) ? dVS : NaN); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "dumpLine", +function(pt1, pt2, label, color){ +this.sg.log("draw ID \"x" + label + (this.nTest++) + "\" " + JU.P3.newP(pt1) + " " + JU.P3.newP(pt2) + " color " + color); +}, "JU.P3,JU.T3,~S,~S"); +Clazz.defineMethod(c$, "dumpLine2", +function(pt1, pt2, label, d, color1, color2){ +var pt = new JU.V3(); +pt.setT(pt2); +pt.sub(pt1); +pt.normalize(); +pt.scale(d); +pt.add(pt1); +this.sg.log("draw ID \"" + label + (this.nTest++) + "\" " + JU.P3.newP(pt1) + " " + JU.P3.newP(pt) + " color " + color1); +this.sg.log("draw ID \"" + label + (this.nTest++) + "\"" + JU.P3.newP(pt) + " " + JU.P3.newP(pt2) + " color " + color2 + "\"" + label + "\""); +}, "JU.P3,JU.P3,~S,~N,~S,~S"); +Clazz.defineMethod(c$, "dumpPoint", +function(pt, label, color){ +this.sg.log("draw ID \"" + label + (this.nTest++) + "\"" + JU.P3.newP(pt) + " color " + color); +}, "JU.P3,~S,~S"); +Clazz.overrideMethod(c$, "getValueAtPoint", +function(pt, getSource){ +if (this.contactPair != null) return pt.distance(this.contactPair.myAtoms[1]) - this.contactPair.radii[1]; +var value = 3.4028235E38; +for (var iAtom = 0; iAtom < this.firstNearbyAtom; iAtom++) { +var r = pt.distance(this.atomXyzTruncated[iAtom]) - this.rs[iAtom]; +if (r < value) value = r; +} +return (value == 3.4028235E38 ? NaN : value); +}, "JU.T3,~B"); +Clazz.overrideMethod(c$, "discardTempData", +function(discardAll){ +this.rs = null; +this.rs2 = null; +this.discardTempDataSR(discardAll); +}, "~B"); +Clazz.overrideMethod(c$, "getPlane", +function(x){ +if (this.yzCount == 0) { +this.initPlanes(); +}this.thisX = x; +this.thisPlane = this.yzPlanes[x % 2]; +if (this.contactPair == null) { +this.resetPlane(3.4028235E38); +this.thisAtomSet = this.bsAtomMinMax[x]; +this.markSphereVoxels(0, this.params.distance); +this.unsetVoxelData(); +} else { +this.markPlaneVoxels(this.contactPair.myAtoms[0], this.contactPair.radii[0]); +}return this.thisPlane; +}, "~N"); +c$.$IsoSolventReader$Edge$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.ia = 0; +this.ib = 0; +this.nFaces = 0; +this.nInvalid = 0; +this.d = 0; +this.d2 = 0; +this.maxr = 0; +this.cosASB2 = 0; +this.v = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers.IsoSolventReader, "Edge", JU.P3); +Clazz.overrideConstructor(c$, +function(r, ia, ib, d){ +this.ia = Math.min(ia, ib); +this.ib = Math.max(ia, ib); +this.d = d; +this.d2 = d * d; +this.maxr = Math.sqrt(this.d2 / 4 + Math.max(r.rs2[ia], r.rs2[ib])); +this.ave(r.atomXyzTruncated[ia], r.atomXyzTruncated[ib]); +this.cosASB2 = (r.rs2[ia] + r.rs2[ib] - this.d2) / (r.rs[ib] * r.rs[ia]); +this.v = JU.V3.newVsub(r.atomXyzTruncated[ib], r.atomXyzTruncated[ia]); +this.v.normalize(); +}, "J.jvxl.readers.IsoSolventReader,~N,~N,~N"); +Clazz.defineMethod(c$, "addFace", +function(f){ +this.nFaces++; +if (f == null) { +this.nInvalid++; +return; +}}, "J.jvxl.readers.IsoSolventReader.Face"); +Clazz.defineMethod(c$, "isValid", +function(){ +return (this.nFaces == 0 || this.nInvalid != this.nFaces); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.ia + "_" + this.ib; +}); +/*eoif4*/})(); +}; +c$.$IsoSolventReader$Face$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.ia = 0; +this.ib = 0; +this.ic = 0; +this.pS = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers.IsoSolventReader, "Face", null); +Clazz.makeConstructor(c$, +function(ia, ib, ic, pS){ +this.ia = ia; +this.ib = ib; +this.ic = ic; +this.pS = JU.P3.newP(pS); +}, "~N,~N,~N,JU.P3"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.ia + "_" + this.ib + "_" + this.ic + "_" + this.pS; +}); +/*eoif4*/})(); +}; +c$.testLinear = false; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JaguarReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JaguarReader.js new file mode 100755 index 000000000000..085f348f2022 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JaguarReader.js @@ -0,0 +1,56 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.JaguarReader", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.extents = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "JaguarReader", J.jvxl.readers.VolumeFileReader); +Clazz.prepareFields (c$, function(){ +this.extents = Clazz.newFloatArray (3, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.JaguarReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +this.nSurfaces = 1; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("Jaguar data\n"); +this.jvxlFileHeaderBuffer.append("\n"); +var atomLine; +while ((atomLine = this.rd()) != null && atomLine.indexOf("origin=") < 0) { +} +var tokens = JU.PT.getTokensAt(atomLine, 0); +if (tokens.length == 4 && tokens[0].equals("origin=")) { +this.volumetricOrigin.set(this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3])); +J.jvxl.readers.VolumeFileReader.checkAtomLine(this.isXLowToHigh, this.isAngstroms, "0", "0 " + tokens[1] + " " + tokens[2] + " " + tokens[3], this.jvxlFileHeaderBuffer); +if (!this.isAngstroms) this.volumetricOrigin.scale(0.5291772); +}this.readExtents(0); +this.readExtents(1); +this.readExtents(2); +tokens = JU.PT.getTokens(this.rd()); +this.voxelCounts[0] = this.parseIntStr(tokens[1]); +this.voxelCounts[1] = this.parseIntStr(tokens[2]); +this.voxelCounts[2] = this.parseIntStr(tokens[3]); +var factor = (this.isAngstroms ? 1 : 0.5291772); +var d = this.extents[0] / (this.voxelCounts[0] - 1); +this.volumetricVectors[0].set(d * factor, 0, 0); +this.jvxlFileHeaderBuffer.append(this.voxelCounts[0] + " " + d + " 0.0 0.0\n"); +d = this.extents[1] / (this.voxelCounts[1] - 1); +this.volumetricVectors[1].set(0, d * factor, 0); +this.jvxlFileHeaderBuffer.append(this.voxelCounts[1] + " 0.0 " + d + " 0.0\n"); +d = this.extents[2] / (this.voxelCounts[2] - 1); +this.volumetricVectors[2].set(0, 0, d * factor); +this.jvxlFileHeaderBuffer.append(this.voxelCounts[2] + " 0.0 0.0 " + d + "\n"); +this.rd(); +}); +Clazz.defineMethod(c$, "readExtents", +function(voxelVectorIndex){ +var tokens = JU.PT.getTokens(this.rd()); +this.extents[voxelVectorIndex] = this.parseFloatStr(tokens[voxelVectorIndex + 1]); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JvxlReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JvxlReader.js new file mode 100755 index 000000000000..4995b5cb715b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JvxlReader.js @@ -0,0 +1,195 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.JvxlXmlReader"], "J.jvxl.readers.JvxlReader", ["JU.P4", "$.PT", "$.SB", "J.jvxl.data.JvxlCoder", "J.jvxl.readers.VolumeFileReader", "JU.C", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "JvxlReader", J.jvxl.readers.JvxlXmlReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.JvxlReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2JXR(sg, br); +this.isXmlFile = false; +this.JVXL_VERSION = "2.0"; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.jvxlFileHeaderBuffer = new JU.SB().append(this.skipComments(false)); +if (this.line == null || this.line.length == 0) this.line = "Line 1"; +this.jvxlFileHeaderBuffer.append(this.line).appendC('\n'); +if (this.rd() == null || this.line.length == 0) this.line = "Line 2"; +this.jvxlFileHeaderBuffer.append(this.line).appendC('\n'); +this.jvxlFileHeaderBuffer.append(this.skipComments(false)); +var atomLine = this.line; +var tokens = JU.PT.getTokensAt(atomLine, 0); +this.isXLowToHigh = false; +this.negativeAtomCount = true; +this.ac = 0; +if (tokens[0] === "-0") { +} else if (tokens[0].charAt(0) == '+') { +this.isXLowToHigh = true; +this.ac = this.parseIntStr(tokens[0].substring(1)); +} else { +this.ac = -this.parseIntStr(tokens[0]); +}if (this.ac == -2147483648) return; +this.volumetricOrigin.set(this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3])); +this.isAngstroms = J.jvxl.readers.VolumeFileReader.checkAtomLine(this.isXLowToHigh, this.isAngstroms, null, atomLine, this.jvxlFileHeaderBuffer); +if (!this.isAngstroms) this.volumetricOrigin.scale(0.5291772); +this.readVoxelVector(0); +this.readVoxelVector(1); +this.readVoxelVector(2); +for (var i = 0; i < this.ac; ++i) this.jvxlFileHeaderBuffer.append(this.rd() + "\n"); + +this.skipComments(true); +JU.Logger.info("Reading extra JVXL information line: " + this.line); +this.nSurfaces = this.parseIntStr(this.line); +if (!(this.isJvxl = (this.nSurfaces < 0))) return; +this.nSurfaces = -this.nSurfaces; +JU.Logger.info("jvxl file surfaces: " + this.nSurfaces); +var ich; +if ((ich = this.parseInt()) == -2147483648) { +JU.Logger.info("using default edge fraction base and range"); +} else { +this.edgeFractionBase = ich; +this.edgeFractionRange = this.parseInt(); +}if ((ich = this.parseInt()) == -2147483648) { +JU.Logger.info("using default color fraction base and range"); +} else { +this.colorFractionBase = ich; +this.colorFractionRange = this.parseInt(); +}this.cJvxlEdgeNaN = String.fromCharCode(this.edgeFractionBase + this.edgeFractionRange); +this.vertexDataOnly = this.jvxlData.vertexDataOnly = (this.volumetricVectors[0].length() == 0); +}); +Clazz.overrideMethod(c$, "jvxlReadFractionData", +function(type, nPoints){ +var str = ""; +try { +while (str.length < nPoints) { +this.rd(); +str += J.jvxl.data.JvxlCoder.jvxlDecompressString(this.line); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Error reading " + type + " data " + e); +throw new NullPointerException(); +} else { +throw e; +} +} +return str; +}, "~S,~N"); +Clazz.overrideMethod(c$, "gotoData", +function(n, nPoints){ +if (n > 0) JU.Logger.info("skipping " + n + " data sets, " + nPoints + " points each"); +this.vertexDataOnly = this.jvxlData.vertexDataOnly = (nPoints == 0); +for (var i = 0; i < n; i++) { +this.jvxlReadDefinitionLine(true); +JU.Logger.info("JVXL skipping: jvxlSurfaceDataCount=" + this.surfaceDataCount + " jvxlEdgeDataCount=" + this.edgeDataCount + " jvxlDataIsColorMapped=" + this.jvxlDataIsColorMapped); +this.jvxlSkipData(nPoints, true); +} +this.jvxlReadDefinitionLine(true); +}, "~N,~N"); +Clazz.defineMethod(c$, "jvxlReadDefinitionLine", +function(showMsg){ +var comment = this.skipComments(true); +if (showMsg) JU.Logger.info("reading jvxl data set: " + comment + this.line); +this.haveContourData = (comment.indexOf("+contourlines") >= 0); +this.jvxlCutoff = this.parseFloatStr(this.line); +JU.Logger.info("JVXL read: cutoff " + this.jvxlCutoff); +this.jvxlCutoffRange = this.parseFloatArray( Clazz.newFloatArray (2, 0), "[", "]"); +var param1 = this.parseInt(); +var param2 = this.parseInt(); +var param3 = this.parseInt(); +if (param3 == -2147483648 || param3 == -1) param3 = 0; +if (param1 == -1) { +try { +this.params.thePlane = JU.P4.new4(this.parseFloat(), this.parseFloat(), this.parseFloat(), this.parseFloat()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Error reading 4 floats for PLANE definition -- setting to 0 0 1 0 (z=0)"); +this.params.thePlane = JU.P4.new4(0, 0, 1, 0); +} else { +throw e; +} +} +JU.Logger.info("JVXL read: plane " + this.params.thePlane); +if (param2 == -1 && param3 < 0) param3 = -param3; +} else { +this.params.thePlane = null; +}if (param1 < 0 && param2 != -1) { +this.params.isContoured = (param3 != 0); +var nContoursRead = this.parseInt(); +if (nContoursRead == -2147483648) { +if (this.line.charAt(this.next[0]) == '[') { +this.jvxlData.contourValues = this.params.contoursDiscrete = this.parseFloatArray(null, null, null); +JU.Logger.info("JVXL read: contourValues " + JU.Escape.eAF(this.jvxlData.contourValues)); +this.jvxlData.contourColixes = this.params.contourColixes = JU.C.getColixArray(this.getQuotedStringNext()); +this.jvxlData.contourColors = JU.C.getHexCodes(this.jvxlData.contourColixes); +JU.Logger.info("JVXL read: contourColixes " + this.jvxlData.contourColors); +this.params.nContours = this.jvxlData.contourValues.length; +}} else { +if (nContoursRead < 0) { +nContoursRead = -1 - nContoursRead; +this.params.contourFromZero = false; +}if (nContoursRead != 0 && this.params.nContours == 0) { +this.params.nContours = nContoursRead; +JU.Logger.info("JVXL read: contours " + this.params.nContours); +}}} else { +this.params.isContoured = false; +}this.jvxlData.isJvxlPrecisionColor = (param1 == -1 && param2 == -2 || param3 < 0); +this.params.isBicolorMap = (param1 > 0 && param2 < 0); +this.jvxlDataIsColorMapped = (param3 != 0); +if (this.jvxlDataIsColorMapped) this.jvxlData.colorScheme = "RGB"; +this.jvxlDataIs2dContour = (this.jvxlDataIsColorMapped && this.params.isContoured); +if (this.params.isBicolorMap || this.params.colorBySign) this.jvxlCutoff = 0; +this.surfaceDataCount = (param1 < -1 ? -1 - param1 : param1 > 0 ? param1 : 0); +if (param1 == -1) this.edgeDataCount = 0; + else this.edgeDataCount = (param2 < -1 ? -param2 : param2 > 0 ? param2 : 0); +this.colorDataCount = (this.params.isBicolorMap ? -param2 : param3 < -1 ? -param3 : param3 > 0 ? param3 : 0); +if (this.params.colorBySign) this.params.isBicolorMap = true; +var dataMin = NaN; +var dataMax = NaN; +var red = NaN; +var blue = NaN; +var insideOut = (this.line.indexOf("insideOut") >= 0); +if (this.jvxlDataIsColorMapped) { +dataMin = this.parseFloat(); +dataMax = this.parseFloat(); +red = this.parseFloat(); +blue = this.parseFloat(); +}this.jvxlSetColorRanges(dataMin, dataMax, red, blue, insideOut); +}, "~B"); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapDataIgnored){ +this.thisInside = !this.params.isContoured; +if (!this.readSurfaceDataXML()) this.readSurfaceDataJXR(); +}, "~B"); +Clazz.overrideMethod(c$, "jvxlSkipData", +function(nPoints, doSkipColorData){ +if (this.surfaceDataCount > 0) this.jvxlSkipDataBlock(nPoints, true); +if (this.edgeDataCount > 0) this.jvxlSkipDataBlock(this.edgeDataCount, false); +if (this.jvxlDataIsColorMapped && doSkipColorData) this.jvxlSkipDataBlock(this.colorDataCount, false); +}, "~N,~B"); +Clazz.defineMethod(c$, "jvxlSkipDataBlock", +function(nPoints, isInt){ +var n = 0; +while (n < nPoints) { +this.rd(); +n += (isInt ? this.countData(this.line) : J.jvxl.data.JvxlCoder.jvxlDecompressString(this.line).length); +} +}, "~N,~B"); +Clazz.defineMethod(c$, "countData", +function(str){ +var $private = Clazz.checkPrivateMethod (arguments); +if ($private != null) { +return $private.apply (this, arguments); +} +var count = 0; +var n = this.parseIntStr(str); +while (n != -2147483648) { +count += n; +n = this.parseIntNext(str); +} +return count; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JvxlXmlReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JvxlXmlReader.js new file mode 100755 index 000000000000..fa35f9ebf95f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/JvxlXmlReader.js @@ -0,0 +1,700 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.JvxlXmlReader", ["java.util.Hashtable", "JU.AU", "$.BS", "$.CU", "$.Lst", "$.P3", "$.P4", "$.PT", "$.SB", "J.jvxl.data.JvxlCoder", "$.MeshData", "J.jvxl.readers.XmlReader", "J.shapesurface.IsosurfaceMesh", "JU.C", "$.ColorEncoder", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.JVXL_VERSION = "2.3"; +this.surfaceDataCount = 0; +this.edgeDataCount = 0; +this.colorDataCount = 0; +this.excludedTriangleCount = 0; +this.excludedVertexCount = 0; +this.invalidatedVertexCount = 0; +this.haveContourData = false; +this.xr = null; +this.isXmlFile = true; +this.thisInside = false; +this.tempDataXml = null; +this.bsVoxelBitSet = null; +this.includeValueNaN = true; +this.valueCount = 0; +this.valueMin = NaN; +this.valueRange = NaN; +this.fractionPtr = 0; +this.colorPtr = 0; +this.strFractionTemp = ""; +this.haveReadColorData = false; +this.jvxlColorEncodingRead = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "JvxlXmlReader", J.jvxl.readers.VolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.JvxlXmlReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2JXR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "init2JXR", +function(sg, br){ +this.init2VFR(sg, br); +this.jvxlData.wasJvxl = this.isJvxl = true; +this.isXLowToHigh = this.canDownsample = false; +this.xr = new J.jvxl.readers.XmlReader(br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readVolumeData", +function(isMapData){ +if (!this.readVolumeDataVFR(isMapData)) return false; +this.strFractionTemp = this.jvxlEdgeDataRead; +this.fractionPtr = 0; +return true; +}, "~B"); +Clazz.overrideMethod(c$, "gotoAndReadVoxelData", +function(isMapData){ +this.initializeVolumetricData(); +if (this.nPointsX < 0 || this.nPointsY < 0 || this.nPointsZ < 0) return true; +try { +this.gotoData(this.params.fileIndex - 1, this.nPointsX * this.nPointsY * this.nPointsZ); +if (this.vertexDataOnly) return true; +this.volumeData.setMappingPlane(this.params.thePlane); +this.readSurfaceData(isMapData); +this.volumeData.setMappingPlane(null); +if (this.edgeDataCount > 0) this.jvxlEdgeDataRead = this.jvxlReadFractionData("edge", this.edgeDataCount); +this.params.bsExcluded = this.jvxlData.jvxlExcluded = new Array(4); +this.hasColorData = (this.colorDataCount > 0); +if (this.hasColorData) this.jvxlColorDataRead = this.jvxlReadFractionData("color", this.colorDataCount); +if (this.excludedVertexCount > 0) { +this.jvxlData.jvxlExcluded[0] = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlExcludedVertexData", null, false, false)); +if (this.xr.isNext("jvxlExcludedPlaneData")) this.jvxlData.jvxlExcluded[2] = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlExcludedPlaneData", null, false, false)); +}if (this.excludedTriangleCount > 0) this.jvxlData.jvxlExcluded[3] = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlExcludedTriangleData", null, false, false)); +if (this.invalidatedVertexCount > 0) this.jvxlData.jvxlExcluded[1] = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlInvalidatedVertexData", null, false, false)); +if (this.haveContourData) this.jvxlDecodeContourData(this.jvxlData, this.xr.getXmlData("jvxlContourData", null, false, false)); +if (this.jvxlDataIsColorMapped && this.jvxlData.nVertexColors > 0) { +this.jvxlData.vertexColorMap = new java.util.Hashtable(); +var vdata = this.xr.getXmlData("jvxlVertexColorData", null, true, false); +var baseColor = J.jvxl.readers.XmlReader.getXmlAttrib(vdata, "baseColor"); +this.jvxlData.baseColor = (baseColor.length > 0 ? baseColor : null); +for (var i = 0; i < this.jvxlData.nVertexColors; i++) { +var s = this.xr.getXmlData("jvxlColorMap", vdata, true, false); +var color = J.jvxl.readers.XmlReader.getXmlAttrib(s, "color"); +var bs = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlColorMap", s, false, false)); +this.jvxlData.vertexColorMap.put(color, bs); +} +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return false; +} else { +throw e; +} +} +return true; +}, "~B"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +var s = this.xr.getXmlDataLF("jvxlFileTitle", null, false, false, true); +this.jvxlFileHeaderBuffer = JU.SB.newS(s == null ? "" : s); +this.xr.toTag("jvxlVolumeData"); +var data = this.tempDataXml = this.xr.getXmlData("jvxlVolumeData", null, true, false); +this.volumetricOrigin.setT(this.xr.getXmlPoint(data, "origin")); +this.isAngstroms = true; +this.readVector(0); +this.readVector(1); +this.readVector(2); +this.line = this.xr.toTag("jvxlSurfaceSet"); +this.nSurfaces = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(this.line, "count")); +JU.Logger.info("jvxl file surfaces: " + this.nSurfaces); +JU.Logger.info("using default edge fraction base and range"); +JU.Logger.info("using default color fraction base and range"); +this.cJvxlEdgeNaN = String.fromCharCode(this.edgeFractionBase + this.edgeFractionRange); +}); +Clazz.overrideMethod(c$, "getJVXLCutoff", +function(){ +return this.params.cutoff; +}); +Clazz.defineMethod(c$, "readVector", +function(voxelVectorIndex){ +var data = this.xr.getXmlData("jvxlVolumeVector", this.tempDataXml, true, true); +this.tempDataXml = this.tempDataXml.substring(this.tempDataXml.indexOf(data) + data.length); +var n = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "count")); +if (n == -2147483648) this.vertexDataOnly = true; +this.voxelCounts[voxelVectorIndex] = (n < 0 ? 0 : n); +this.volumetricVectors[voxelVectorIndex].setT(this.xr.getXmlPoint(data, "vector")); +if (this.isAnisotropic) this.setVectorAnisotropy(this.volumetricVectors[voxelVectorIndex]); +}, "~N"); +Clazz.overrideMethod(c$, "gotoData", +function(n, nPoints){ +if (n > 0) JU.Logger.info("skipping " + n + " data sets, " + nPoints + " points each"); +this.vertexDataOnly = this.jvxlData.vertexDataOnly = (nPoints == 0); +for (var i = 0; i < n; i++) { +this.jvxlSkipData(nPoints, true); +} +this.xr.toTag("jvxlSurface"); +this.jvxlReadSurfaceInfo(); +}, "~N,~N"); +Clazz.defineMethod(c$, "jvxlSkipData", +function(nPoints, doSkipColorData){ +this.rd(); +this.xr.skipTag("jvxlSurface"); +}, "~N,~B"); +Clazz.defineMethod(c$, "jvxlReadSurfaceInfo", +function(){ +var data = this.xr.getXmlData("jvxlSurfaceInfo", null, true, true); +this.isXLowToHigh = J.jvxl.readers.XmlReader.getXmlAttrib(data, "isXLowToHigh").equals("true"); +var s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "cutoff"); +if (s.indexOf(" ") < 0) { +this.jvxlCutoff = this.parseFloatStr(s); +if (!Double.isNaN(this.jvxlCutoff)) JU.Logger.info("JVXL read: cutoff " + this.jvxlCutoff); +} else { +this.jvxlCutoffRange = this.parseFloatArrayStr(s); +this.jvxlCutoff = this.jvxlCutoffRange[0]; +JU.Logger.info("JVXL read: cutoff " + JU.Escape.eAF(this.jvxlCutoffRange)); +}this.params.cutoff = this.jvxlCutoff; +var nContourData = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nContourData")); +this.haveContourData = (nContourData > 0); +this.params.isContoured = this.jvxlData.isModelConnected = J.jvxl.readers.XmlReader.getXmlAttrib(data, "contoured").equals("true"); +this.params.isModelConnected = J.jvxl.readers.XmlReader.getXmlAttrib(data, "isModelConnected").equals("true"); +if (this.params.isContoured) { +var nContoursRead = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nContours")); +if (nContoursRead <= 0) { +nContoursRead = 0; +} else { +if (this.params.thisContour < 0) this.params.thisContour = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "thisContour")); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "contourValues"); +if (s.length > 0) { +s = s.$replace('[', ' ').$replace(']', ' '); +this.jvxlData.contourValues = this.params.contoursDiscrete = this.parseFloatArrayStr(s); +JU.Logger.info("JVXL read: contourValues " + JU.Escape.eAF(this.jvxlData.contourValues)); +}s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "contourColors"); +if (s.length > 0) { +this.jvxlData.contourColixes = this.params.contourColixes = JU.C.getColixArray(s); +this.jvxlData.contourColors = JU.C.getHexCodes(this.jvxlData.contourColixes); +JU.Logger.info("JVXL read: contourColixes " + JU.C.getHexCodes(this.jvxlData.contourColixes)); +}this.params.contourFromZero = J.jvxl.readers.XmlReader.getXmlAttrib(data, "contourFromZero").equals("true"); +}this.params.nContours = (this.haveContourData ? nContourData : nContoursRead); +}this.jvxlData.nVertexColors = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nVertexColors")); +this.params.isBicolorMap = J.jvxl.readers.XmlReader.getXmlAttrib(data, "bicolorMap").equals("true"); +if (this.params.isBicolorMap) { +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorPositive"); +if (s.length > 0 && this.params.colorRgb == -2147483648 && this.params.colorPos == -16776961) this.params.colorPos = JU.CU.getArgbFromString(s); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorNegative"); +if (s.length > 0 && this.params.colorRgb == -2147483648 && this.params.colorNeg == -65536) this.params.colorNeg = JU.CU.getArgbFromString(s); +}if (this.params.isBicolorMap || this.params.colorBySign) this.jvxlCutoff = 0; +this.jvxlDataIsColorMapped = ((this.params.colorRgb == -2147483648 || this.params.colorRgb == 2147483647) && (this.params.isBicolorMap || J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorMapped").equals("true"))); +this.jvxlData.isJvxlPrecisionColor = J.jvxl.readers.XmlReader.getXmlAttrib(data, "precisionColor").equals("true"); +this.jvxlData.jvxlDataIsColorDensity = this.params.colorDensity = (this.params.colorRgb == -2147483648 && J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorDensity").equals("true")); +if (this.jvxlData.jvxlDataIsColorDensity && Float.isNaN(this.params.pointSize)) { +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "pointSize"); +if (s.length > 0) this.jvxlData.pointSize = this.params.pointSize = this.parseFloatStr(s); +}s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "allowVolumeRender"); +this.jvxlData.allowVolumeRender = this.params.allowVolumeRender = (s.length == 0 || s.equalsIgnoreCase("true")); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "plane"); +if (s.indexOf("{") >= 0) { +this.params.thePlane = null; +this.params.mapLattice = null; +try { +this.params.thePlane = JU.Escape.uP(s); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "maplattice"); +JU.Logger.info("JVXL read: plane " + this.params.thePlane); +if (s.indexOf("{") >= 0) { +this.params.mapLattice = JU.Escape.uP(s); +JU.Logger.info("JVXL read: mapLattice " + this.params.mapLattice); +}if (this.params.scale3d == 0) this.params.scale3d = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "scale3d")); +if (Float.isNaN(this.params.scale3d)) this.params.scale3d = 0; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (this.params.thePlane == null) { +JU.Logger.error("JVXL Error reading plane definition -- setting to 0 0 1 0 (z=0)"); +this.params.thePlane = JU.P4.new4(0, 0, 1, 0); +} else { +JU.Logger.error("JVXL Error reading mapLattice definition -- ignored"); +}} else { +throw e; +} +} +this.surfaceDataCount = 0; +this.edgeDataCount = 0; +} else { +this.params.thePlane = null; +this.surfaceDataCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nSurfaceInts")); +this.edgeDataCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nBytesUncompressedEdgeData")); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "fixedLattice"); +if (s.indexOf("{") >= 0) this.jvxlData.fixedLattice = JU.Escape.uP(s); +}this.excludedVertexCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nExcludedVertexes")); +this.excludedTriangleCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nExcludedTriangles")); +this.invalidatedVertexCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nInvalidatedVertexes")); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "slabInfo"); +if (s.length > 0) this.jvxlData.slabInfo = s; +this.colorDataCount = Math.max(0, this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nBytesUncompressedColorData"))); +this.jvxlDataIs2dContour = (this.params.thePlane != null && this.jvxlDataIsColorMapped); +this.jvxlData.color = J.jvxl.readers.XmlReader.getXmlAttrib(data, "color"); +if (this.jvxlData.color.length == 0 || this.jvxlData.color.indexOf("null") >= 0) this.jvxlData.color = "orange"; +this.jvxlData.translucency = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "translucency")); +if (Float.isNaN(this.jvxlData.translucency)) this.jvxlData.translucency = 0; +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "meshColor"); +if (s.length > 0) this.jvxlData.meshColor = s; +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "rendering"); +if (s.length > 0) this.jvxlData.rendering = s; +this.jvxlData.colorScheme = J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorScheme"); +if (this.jvxlData.colorScheme.length == 0) this.jvxlData.colorScheme = (this.jvxlDataIsColorMapped ? "roygb" : null); +if (this.jvxlData.thisSet == null) { +var n = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "set")); +if (n > 0) { +this.jvxlData.thisSet = new JU.BS(); +this.jvxlData.thisSet.set(n - 1); +}var a = J.jvxl.readers.XmlReader.getXmlAttrib(data, "subset"); +if (a != null && a.length > 2) { +var sets = a.$replace('[', ' ').$replace(']', ' ').trim().$plit(" "); +if (sets.length > 0) { +this.jvxlData.thisSet = new JU.BS(); +for (var i = sets.length; --i >= 0; ) { +this.jvxlData.thisSet.set(JU.PT.parseInt(sets[i]) - 1); +} +}}}this.jvxlData.slabValue = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "slabValue")); +this.jvxlData.isSlabbable = (J.jvxl.readers.XmlReader.getXmlAttrib(data, "slabbable").equalsIgnoreCase("true")); +this.jvxlData.diameter = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "diameter")); +if (this.jvxlData.diameter == -2147483648) this.jvxlData.diameter = 0; +if (this.jvxlDataIs2dContour) this.params.isContoured = true; +if (this.params.colorBySign) this.params.isBicolorMap = true; +var insideOut = J.jvxl.readers.XmlReader.getXmlAttrib(data, "insideOut").equals("true"); +var dataMin = NaN; +var dataMax = NaN; +var red = NaN; +var blue = NaN; +if (this.jvxlDataIsColorMapped) { +dataMin = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "dataMinimum")); +dataMax = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "dataMaximum")); +red = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "valueMappedToRed")); +blue = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "valueMappedToBlue")); +if (Float.isNaN(dataMin)) { +dataMin = red = -1.0; +dataMax = blue = 1; +}}this.jvxlSetColorRanges(dataMin, dataMax, red, blue, insideOut); +}); +Clazz.defineMethod(c$, "jvxlSetColorRanges", +function(dataMin, dataMax, red, blue, insideOut){ +if (this.jvxlDataIsColorMapped) { +if (!Float.isNaN(dataMin) && !Float.isNaN(dataMax)) { +if (dataMax == 0 && dataMin == 0) { +dataMin = -1; +dataMax = 1; +}this.params.mappedDataMin = dataMin; +this.params.mappedDataMax = dataMax; +JU.Logger.info("JVXL read: data_min/max " + this.params.mappedDataMin + "/" + this.params.mappedDataMax); +}if (!this.params.rangeDefined) if (!Float.isNaN(red) && !Float.isNaN(blue)) { +if (red == 0 && blue == 0) { +red = -1; +blue = 1; +}this.params.valueMappedToRed = Math.min(red, blue); +this.params.valueMappedToBlue = Math.max(red, blue); +this.params.isColorReversed = (red > blue); +this.params.rangeDefined = true; +} else { +this.params.valueMappedToRed = 0; +this.params.valueMappedToBlue = 1; +this.params.rangeDefined = true; +}JU.Logger.info("JVXL read: color red/blue: " + this.params.valueMappedToRed + "/" + this.params.valueMappedToBlue); +}this.jvxlData.valueMappedToRed = this.params.valueMappedToRed; +this.jvxlData.valueMappedToBlue = this.params.valueMappedToBlue; +this.jvxlData.mappedDataMin = this.params.mappedDataMin; +this.jvxlData.mappedDataMax = this.params.mappedDataMax; +this.jvxlData.isColorReversed = this.params.isColorReversed; +if (this.params.insideOut) insideOut = !insideOut; +this.params.insideOut = this.jvxlData.insideOut = insideOut; +}, "~N,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapDataIgnored){ +this.thisInside = !this.params.isContoured; +if (this.readSurfaceDataXML()) return; +this.tempDataXml = this.xr.getXmlData("jvxlEdgeData", null, true, false); +this.bsVoxelBitSet = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlEdgeData", this.tempDataXml, false, false)); +this.readSurfaceDataJXR(); +}, "~B"); +Clazz.defineMethod(c$, "readSurfaceDataXML", +function(){ +if (this.vertexDataOnly) { +this.getEncodedVertexData(); +return true; +}if (this.params.thePlane != null) { +this.volumeData.setDataDistanceToPlane(this.params.thePlane); +this.setVolumeDataV(this.volumeData); +this.params.cutoff = 0; +this.jvxlData.setSurfaceInfo(this.params.thePlane, this.params.mapLattice, 0, ""); +this.jvxlData.scale3d = this.params.scale3d; +return true; +}return false; +}); +Clazz.defineMethod(c$, "readSurfaceDataJXR", +function(){ +this.readSurfaceDataVFR(false); +this.volumeData.setMappingPlane(null); +}); +Clazz.defineMethod(c$, "jvxlReadFractionData", +function(type, nPoints){ +var str; +try { +if (type.equals("edge")) { +str = J.jvxl.data.JvxlCoder.jvxlDecompressString(J.jvxl.readers.XmlReader.getXmlAttrib(this.tempDataXml, "data")); +} else { +var data = this.xr.getXmlData("jvxlColorData", null, true, false); +this.jvxlData.isJvxlPrecisionColor = J.jvxl.readers.JvxlXmlReader.getEncoding(data).endsWith("2"); +str = J.jvxl.data.JvxlCoder.jvxlDecompressString(J.jvxl.readers.XmlReader.getXmlAttrib(data, "data")); +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Error reading " + type + " data " + e); +throw new NullPointerException(); +} else { +throw e; +} +} +return str; +}, "~S,~N"); +Clazz.overrideMethod(c$, "getVoxelBitSet", +function(nPoints){ +if (this.bsVoxelBitSet != null) return this.bsVoxelBitSet; +var bs = new JU.BS(); +var bsVoxelPtr = 0; +if (this.surfaceDataCount <= 0) return bs; +var nThisValue = 0; +while (bsVoxelPtr < nPoints) { +nThisValue = this.parseInt(); +if (nThisValue == -2147483648) { +this.rd(); +if (this.line == null || (nThisValue = this.parseIntStr(this.line)) == -2147483648) { +if (!this.endOfData) JU.Logger.error("end of file in JvxlReader?" + " line=" + this.line); +this.endOfData = true; +nThisValue = 10000; +}}this.thisInside = !this.thisInside; +++this.jvxlNSurfaceInts; +if (this.thisInside) bs.setBits(bsVoxelPtr, bsVoxelPtr + nThisValue); +bsVoxelPtr += nThisValue; +} +return bs; +}, "~N"); +Clazz.overrideMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +if (this.edgeDataCount <= 0) return this.getSPFv(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +ptReturn.scaleAdd2(fReturn[0] = this.jvxlGetNextFraction(this.edgeFractionBase, this.edgeFractionRange, 0.5), edgeVector, pointA); +if (Float.isNaN(this.valueMin)) this.setValueMinMax(); +return (this.valueCount == 0 || this.includeValueNaN && Float.isNaN(fReturn[0]) ? fReturn[0] : this.getNextValue()); +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz.defineMethod(c$, "getNextValue", +function(){ +var fraction = NaN; +while (this.colorPtr < this.valueCount && Float.isNaN(fraction)) { +if (this.jvxlData.isJvxlPrecisionColor) { +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(this.jvxlColorDataRead.charAt(this.colorPtr).charCodeAt(0), this.jvxlColorDataRead.charAt((this.colorPtr++) + this.valueCount).charCodeAt(0), this.colorFractionBase, this.colorFractionRange); +} else { +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(this.jvxlColorDataRead.charAt(this.colorPtr++).charCodeAt(0), this.colorFractionBase, this.colorFractionRange, 0.5); +}break; +} +return this.valueMin + fraction * this.valueRange; +}); +Clazz.defineMethod(c$, "setValueMinMax", +function(){ +this.valueCount = this.jvxlColorDataRead.length; +if (this.jvxlData.isJvxlPrecisionColor) this.valueCount /= 2; +this.includeValueNaN = (this.valueCount != this.jvxlEdgeDataRead.length); +this.valueMin = (!this.jvxlData.isJvxlPrecisionColor ? this.params.valueMappedToRed : this.params.mappedDataMin == 3.4028235E38 ? 0.0 : this.params.mappedDataMin); +this.valueRange = (!this.jvxlData.isJvxlPrecisionColor ? this.params.valueMappedToBlue : this.params.mappedDataMin == 3.4028235E38 ? 1.0 : this.params.mappedDataMax) - this.valueMin; +this.haveReadColorData = true; +}); +Clazz.defineMethod(c$, "jvxlGetNextFraction", +function(base, range, fracOffset){ +if (this.fractionPtr >= this.strFractionTemp.length) { +if (!this.endOfData) JU.Logger.error("end of file reading compressed fraction data"); +this.endOfData = true; +this.strFractionTemp = "" + String.fromCharCode(base); +this.fractionPtr = 0; +}return J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(this.strFractionTemp.charAt(this.fractionPtr++).charCodeAt(0), base, range, fracOffset); +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "readColorData", +function(){ +if (!this.jvxlDataIsColorMapped) return ""; +var vertexCount = this.jvxlData.vertexCount = this.meshData.vc; +var colixes = this.meshData.vcs; +var vertexValues = this.meshData.vvs; +if ("none".equals(this.jvxlColorEncodingRead)) { +this.jvxlData.vertexColors = Clazz.newIntArray (vertexCount, 0); +var nextc = Clazz.newIntArray (1, 0); +var n = JU.PT.parseIntNext(this.jvxlColorDataRead, nextc); +n = Math.min(n, vertexCount); +var tokens = JU.PT.getTokens(this.jvxlColorDataRead.substring(nextc[0])); +var haveTranslucent = false; +var trans = this.jvxlData.translucency; +var lastColor = 0; +for (var i = 0; i < n; i++) try { +var c = J.jvxl.readers.JvxlXmlReader.getColor(tokens[i]); +if (c == 0) c = lastColor; + else lastColor = c; +colixes[i] = JU.C.getColixTranslucent(this.jvxlData.vertexColors[i] = c); +if (JU.C.isColixTranslucent(colixes[i])) haveTranslucent = true; + else if (trans != 0) colixes[i] = JU.C.getColixTranslucent3(colixes[i], true, trans); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info("JvxlXmlReader: Cannot interpret color code: " + tokens[i]); +} else { +throw e; +} +} + +if (haveTranslucent && trans == 0) { +this.jvxlData.translucency = 0.5; +}return "-"; +}if (this.params.colorEncoder == null) this.params.colorEncoder = new JU.ColorEncoder(null, null); +this.params.colorEncoder.setColorScheme(null, false); +this.params.colorEncoder.setRange(this.params.valueMappedToRed, this.params.valueMappedToBlue, this.params.isColorReversed); +JU.Logger.info("JVXL reading color data mapped min/max: " + this.params.mappedDataMin + "/" + this.params.mappedDataMax + " for " + vertexCount + " vertices." + " using encoding keys " + this.colorFractionBase + " " + this.colorFractionRange); +JU.Logger.info("mapping red-->blue for " + this.params.valueMappedToRed + " to " + this.params.valueMappedToBlue + " colorPrecision:" + this.jvxlData.isJvxlPrecisionColor); +var getValues = (Float.isNaN(this.valueMin)); +if (getValues) this.setValueMinMax(); +var contourPlaneMinimumValue = 3.4028235E38; +var contourPlaneMaximumValue = -3.4028235E38; +if (colixes == null || colixes.length < vertexCount) this.meshData.vcs = colixes = Clazz.newShortArray (vertexCount, 0); +var colixNeg = 0; +var colixPos = 0; +if (this.params.colorBySign) { +colixPos = JU.C.getColix(this.params.isColorReversed ? this.params.colorNeg : this.params.colorPos); +colixNeg = JU.C.getColix(this.params.isColorReversed ? this.params.colorPos : this.params.colorNeg); +}var vertexIncrement = this.meshData.vertexIncrement; +var needContourMinMax = (this.params.mappedDataMin == 3.4028235E38); +for (var i = 0; i < vertexCount; i += vertexIncrement) { +var value; +if (getValues) value = vertexValues[i] = this.getNextValue(); + else value = vertexValues[i]; +if (needContourMinMax) { +if (value < contourPlaneMinimumValue) contourPlaneMinimumValue = value; +if (value > contourPlaneMaximumValue) contourPlaneMaximumValue = value; +}} +if (needContourMinMax) { +this.params.mappedDataMin = contourPlaneMinimumValue; +this.params.mappedDataMax = contourPlaneMaximumValue; +}if (this.jvxlData.colorScheme != null) { +var setContourValue = (this.marchingSquares != null && this.params.isContoured); +for (var i = 0; i < vertexCount; i += vertexIncrement) { +var value = vertexValues[i]; +if (setContourValue) { +this.marchingSquares.setContourData(i, value); +continue; +}var colix = (!this.params.colorBySign ? this.params.colorEncoder.getColorIndex(value) : (this.params.isColorReversed ? value > 0 : value <= 0) ? colixNeg : colixPos); +colixes[i] = JU.C.getColixTranslucent3(colix, true, this.jvxlData.translucency); +} +}return this.jvxlColorDataRead + "\n"; +}); +c$.getColor = Clazz.defineMethod(c$, "getColor", +function(c){ +var n = 0; +try { +switch ((c.charAt(0)).charCodeAt(0)) { +case 91: +n = JU.CU.getArgbFromString(c); +break; +case 48: +n = JU.PT.parseIntRadix(c.substring(2), 16); +break; +default: +n = JU.PT.parseIntRadix(c, 10); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return n; +}, "~S"); +Clazz.defineMethod(c$, "getEncodedVertexData", +function(){ +var sdata = this.xr.getXmlData("jvxlSurfaceData", null, true, false); +this.jvxlDecodeVertexData(this.xr.getXmlData("jvxlVertexData", sdata, true, false), false); +var tData = this.xr.getXmlData("jvxlTriangleData", sdata, true, false); +var edgeData = this.xr.getXmlData("jvxlTriangleEdgeData", sdata, true, false); +var polygonColorData = this.xr.getXmlData("jvxlPolygonColorData", sdata, false, false); +this.jvxlDecodeTriangleData(tData, edgeData, polygonColorData); +var cData = this.xr.getXmlData("jvxlColorData", sdata, true, false); +this.jvxlColorEncodingRead = J.jvxl.readers.JvxlXmlReader.getEncoding(cData); +this.jvxlData.isJvxlPrecisionColor = this.jvxlColorEncodingRead.endsWith("2"); +cData = this.getData(cData, "jvxlColorData"); +this.jvxlColorDataRead = (this.jvxlColorEncodingRead.equals("none") ? cData : J.jvxl.data.JvxlCoder.jvxlDecompressString(cData)); +this.jvxlDataIsColorMapped = ((this.params.colorRgb == -2147483648 || this.params.colorRgb == 2147483647) && this.jvxlColorDataRead.length > 0); +if (this.haveContourData) this.jvxlDecodeContourData(this.jvxlData, this.xr.getXmlData("jvxlContourData", null, false, false)); +}); +Clazz.defineMethod(c$, "getData", +function(sdata, name){ +var data = J.jvxl.readers.XmlReader.getXmlAttrib(sdata, "data"); +if (data.length == 0) data = this.xr.getXmlData(name, sdata, false, false); +return data; +}, "~S,~S"); +c$.getEncoding = Clazz.defineMethod(c$, "getEncoding", +function(data){ +if (J.jvxl.readers.XmlReader.getXmlAttrib(data, "len").length > 0) return ""; +var s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "encoding"); +return (s.length == 0 ? "none" : s); +}, "~S"); +Clazz.defineMethod(c$, "jvxlDecodeVertexData", +function(data, asArray){ +var vertexCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "count")); +if (!asArray) JU.Logger.info("Reading " + vertexCount + " vertices"); +var ptCount = vertexCount * 3; +var vertices = (asArray ? new Array(vertexCount) : null); +var fraction; +var vData = J.jvxl.readers.XmlReader.getXmlAttrib(data, "data"); +var encoding = J.jvxl.readers.JvxlXmlReader.getEncoding(data); +if ("none".equals(encoding)) { +if (vData.length == 0) vData = this.xr.getXmlData("jvxlVertexData", data, false, false); +var fdata = JU.PT.parseFloatArray(vData); +if (fdata[0] != vertexCount * 3) JU.Logger.info("JvxlXmlReader: vertexData count=" + (Clazz.floatToInt(fdata[0])) + "; expected " + (vertexCount * 3)); +for (var i = 0, pt = 1; i < vertexCount; i++) { +var p = JU.P3.new3(fdata[pt++], fdata[pt++], fdata[pt++]); +if (asArray) vertices[i] = p; + else this.addVertexCopy(p, 0, i, false); +} +} else { +var min = this.xr.getXmlPoint(data, "min"); +var range = this.xr.getXmlPoint(data, "max"); +range.sub(min); +var colorFractionBase = this.jvxlData.colorFractionBase; +var colorFractionRange = this.jvxlData.colorFractionRange; +var s = J.jvxl.data.JvxlCoder.jvxlDecompressString(vData); +if (s.length == 0) s = this.xr.getXmlData("jvxlVertexData", data, false, false); +for (var i = 0, pt = -1; i < vertexCount; i++) { +var p = new JU.P3(); +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(s.charAt(++pt).charCodeAt(0), s.charAt(pt + ptCount).charCodeAt(0), colorFractionBase, colorFractionRange); +p.x = min.x + fraction * range.x; +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(s.charAt(++pt).charCodeAt(0), s.charAt(pt + ptCount).charCodeAt(0), colorFractionBase, colorFractionRange); +p.y = min.y + fraction * range.y; +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(s.charAt(++pt).charCodeAt(0), s.charAt(pt + ptCount).charCodeAt(0), colorFractionBase, colorFractionRange); +p.z = min.z + fraction * range.z; +if (asArray) vertices[i] = p; + else this.addVertexCopy(p, 0, i, false); +} +}return vertices; +}, "~S,~B"); +Clazz.defineMethod(c$, "jvxlDecodeTriangleData", +function(tdata, edgeData, colorData){ +var nTriangles = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(tdata, "count")); +if (nTriangles < 0) return; +var nextc = Clazz.newIntArray (1, 0); +var nColors = (colorData == null ? -1 : 1); +var color = 0; +JU.Logger.info("Reading " + nTriangles + " triangles"); +var encoding = J.jvxl.readers.JvxlXmlReader.getEncoding(tdata); +tdata = this.getData(tdata, "jvxlTriangleData"); +var edata = this.getData(edgeData, "jvxlTriangleEdgeData"); +var vertex = Clazz.newIntArray (3, 0); +var nextp = Clazz.newIntArray (1, 0); +var nexte = null; +var edgeMask = 7; +var haveEdgeInfo; +var haveEncoding = !"none".equals(encoding); +if (haveEncoding) { +tdata = J.jvxl.data.JvxlCoder.jvxlDecompressString(tdata); +edata = J.jvxl.data.JvxlCoder.jvxlDecompressString(edata).trim(); +haveEdgeInfo = (edata.length == nTriangles); +} else { +var n = JU.PT.parseIntNext(tdata, nextp); +haveEdgeInfo = (edata.length > 0); +if (haveEdgeInfo) { +nexte = Clazz.newIntArray (1, 0); +JU.PT.parseIntNext(edata, nexte); +} else if (n > 0) { +JU.Logger.info("JvxlXmlReader: jvxlTriangleEdgeData count=" + n + "; expected " + nTriangles); +}}for (var i = 0, v = 0, p = 0, pt = -1; i < nTriangles; ) { +if (haveEncoding) { +var ch = tdata.charAt(++pt); +var diff; +switch ((ch).charCodeAt(0)) { +case 33: +diff = 0; +break; +case 43: +case 46: +case 32: +case 10: +case 13: +case 9: +case 44: +continue; +case 45: +case 48: +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +case 55: +case 56: +case 57: +nextp[0] = pt; +diff = JU.PT.parseIntNext(tdata, nextp); +pt = nextp[0] - 1; +break; +default: +diff = ch.charCodeAt(0) - 92; +} +v += diff; +} else { +v = JU.PT.parseIntNext(tdata, nextp) - 1; +}vertex[p] = v; +if (++p == 3) { +p = 0; +if (haveEdgeInfo) { +edgeMask = (nexte == null ? (edata.charAt(i)).charCodeAt(0) - 48 : JU.PT.parseIntNext(edata, nexte)); +if (edgeMask < 0 || edgeMask > 7) edgeMask = 7; +}if (--nColors == 0) { +nColors = (JU.PT.parseIntNext(colorData, nextc)); +var c = JU.PT.parseIntNext(colorData, nextc); +if (c == -2147483648) nColors = 0; + else color = c | 0xFF000000; +}this.addTriangleCheck(vertex[0], vertex[1], vertex[2], edgeMask, color, false, color); +i++; +}} +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "jvxlDecodeContourData", +function(jvxlData, data){ +var vs = new JU.Lst(); +var values = new JU.SB(); +var colors = new JU.SB(); +var pt = -1; +jvxlData.vContours = null; +if (data == null) return; +while ((pt = data.indexOf("= 0) { +var v = new JU.Lst(); +var s = this.xr.getXmlData("jvxlContour", data.substring(pt), true, false); +var value = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(s, "value")); +values.append(" ").appendF(value); +var color = J.jvxl.readers.JvxlXmlReader.getColor(J.jvxl.readers.XmlReader.getXmlAttrib(s, "color")); +var colix = JU.C.getColix(color); +colors.append(" ").append(JU.Escape.escapeColor(color)); +var fData = J.jvxl.data.JvxlCoder.jvxlDecompressString(J.jvxl.readers.XmlReader.getXmlAttrib(s, "data")); +var bs = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlContour", s, false, false)); +var n = bs.length(); +J.shapesurface.IsosurfaceMesh.setContourVector(v, n, bs, value, colix, color, JU.SB.newS(fData)); +vs.addLast(v); +} +var n = vs.size(); +if (n > 0) { +jvxlData.vContours = JU.AU.createArrayOfArrayList(n); +jvxlData.contourColixes = this.params.contourColixes = Clazz.newShortArray (n, 0); +jvxlData.contourValues = this.params.contoursDiscrete = Clazz.newFloatArray (n, 0); +for (var i = 0; i < n; i++) { +jvxlData.vContours[i] = vs.get(i); +jvxlData.contourValues[i] = (jvxlData.vContours[i].get(2)).floatValue(); +jvxlData.contourColixes[i] = (jvxlData.vContours[i].get(3))[0]; +} +jvxlData.contourColors = JU.C.getHexCodes(jvxlData.contourColixes); +JU.Logger.info("JVXL read: " + n + " discrete contours"); +JU.Logger.info("JVXL read: contour values: " + values); +JU.Logger.info("JVXL read: contour colors: " + colors); +}}, "J.jvxl.data.JvxlData,~S"); +Clazz.overrideMethod(c$, "postProcessVertices", +function(){ +var bsInvalid = this.params.bsExcluded[1]; +if (bsInvalid != null) { +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.invalidateVertices(bsInvalid); +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 4, null); +this.meshData = new J.jvxl.data.MeshData(); +}this.updateTriangles(); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/KinemageReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/KinemageReader.js new file mode 100755 index 000000000000..6aa0fe107c03 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/KinemageReader.js @@ -0,0 +1,122 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PmeshReader"], "J.jvxl.readers.KinemageReader", ["JU.CU", "$.P3", "$.PT", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nDots = 0; +this.vMin = -3.4028235E38; +this.vMax = 3.4028235E38; +this.pointType = 0; +this.findString = null; +this.lastAtom = ""; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "KinemageReader", J.jvxl.readers.PmeshReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.KinemageReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2PR(sg, br); +this.type = "kinemage"; +this.setHeader(); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +if (this.params.parameters != null && this.params.parameters.length >= 2) { +this.vMin = this.params.parameters[1]; +this.vMax = (this.params.parameters.length >= 3 ? this.params.parameters[2] : this.vMin); +this.pointType = (this.params.parameters.length >= 4 ? Clazz.floatToInt(this.params.parameters[3]) : 0); +this.findString = this.params.calculationType; +}return true; +}, "~B"); +Clazz.overrideMethod(c$, "readVertices", +function(){ +this.rd(); +var n0; +while (this.line != null) { +if (this.line.length != 0 && this.line.charAt(0) == '@') { +JU.Logger.info(this.line); +if (this.line.indexOf("contact}") >= 0 || this.line.indexOf("overlap}") >= 0 || this.line.indexOf("H-bonds}") >= 0) { +if (this.line.indexOf("@dotlist") == 0) { +n0 = this.nDots; +this.readDots(); +if (this.nDots > n0) JU.Logger.info("dots: " + (this.nDots - n0) + "/" + this.nDots); +continue; +} else if (this.line.indexOf("@vectorlist") == 0) { +n0 = this.nPolygons; +this.readVectors(); +if (this.nPolygons > n0) JU.Logger.info("lines: " + (this.nPolygons - n0) + "/" + this.nPolygons); +continue; +}}}this.rd(); +} +return true; +}); +Clazz.defineMethod(c$, "readDots", +function(){ +var color = Clazz.newIntArray (1, 0); +while (this.rd() != null && this.line.indexOf('@') < 0) { +var i = this.getPoint(this.line, 2, color, true); +if (i < 0) continue; +this.nDots++; +this.nTriangles = this.addTriangleCheck(i, i, i, 7, 0, false, color[0]); +} +}); +Clazz.defineMethod(c$, "readVectors", +function(){ +var color = Clazz.newIntArray (1, 0); +while (this.rd() != null && this.line.indexOf('@') < 0) { +var ia = this.getPoint(this.line, 3, color, true); +var ib = this.getPoint(this.line.substring(this.line.lastIndexOf('{')), 2, color, false); +if (ia < 0 || ib < 0) continue; +this.nPolygons++; +this.nTriangles = this.addTriangleCheck(ia, ib, ib, 7, 0, false, color[0]); +} +}); +Clazz.defineMethod(c$, "getPoint", +function(line, i, retColor, checkType){ +if (this.findString != null) { +var atom = line.substring(0, line.indexOf("}") + 1); +if (atom.length < 4) atom = this.lastAtom; + else this.lastAtom = atom; +if (atom.indexOf(this.findString) < 0) return -1; +}var tokens = JU.PT.getTokens(line.substring(line.indexOf("}") + 1)); +var value = this.assignValueFromGapColorForKin(tokens[0]); +if (Float.isNaN(value)) return -1; +if (checkType && this.pointType != 0) { +switch ((tokens[i - 1].charAt(1)).charCodeAt(0)) { +case 77: +if (this.pointType != 1) return -1; +break; +case 83: +if (this.pointType != 2) return -1; +break; +case 80: +if (this.pointType != 3) return -1; +break; +case 79: +if (this.pointType != 4) return -1; +break; +default: +return -1; +} +}retColor[0] = this.getColor(tokens[0]); +tokens = JU.PT.getTokens(tokens[i].$replace(',', ' ')); +var pt = JU.P3.new3(JU.PT.parseFloat(tokens[0]), JU.PT.parseFloat(tokens[1]), JU.PT.parseFloat(tokens[2])); +if (this.isAnisotropic) this.setVertexAnisotropy(pt); +return this.addVertexCopy(pt, value, this.nVertices++, false); +}, "~S,~N,~A,~B"); +Clazz.defineMethod(c$, "getColor", +function(color){ +if (color.equals("sky")) color = "skyblue"; + else if (color.equals("sea")) color = "seagreen"; +return JU.CU.getArgbFromString(color); +}, "~S"); +Clazz.defineMethod(c$, "assignValueFromGapColorForKin", +function(color){ +var value = (color.equals("greentint") ? 4 : color.equals("blue") ? 0.35 : color.equals("sky") ? 0.25 : color.equals("sea") ? 0.15 : color.equals("green") ? 0.0 : color.equals("yellowtint") ? -0.1 : color.equals("yellow") ? -0.2 : color.equals("orange") ? -0.3 : color.equals("red") ? -0.4 : -0.5); +return (value >= this.vMin && value <= this.vMax ? value : NaN); +}, "~S"); +Clazz.overrideMethod(c$, "readPolygons", +function(){ +return true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MapFileReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MapFileReader.js new file mode 100755 index 000000000000..f1e8ed831d77 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MapFileReader.js @@ -0,0 +1,108 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader", "JU.P3"], "J.jvxl.readers.MapFileReader", ["JU.Logger", "$.SimpleUnitCell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dmin = 3.4028235E38; +this.dmax = 0; +this.dmean = 0; +this.drange = 0; +this.mapc = 0; +this.mapr = 0; +this.maps = 0; +this.n0 = 0; +this.n1 = 0; +this.n2 = 0; +this.mode = 0; +this.xyzStart = null; +this.na = 0; +this.nb = 0; +this.nc = 0; +this.a = 0; +this.b = 0; +this.c = 0; +this.alpha = 0; +this.beta = 0; +this.gamma = 0; +this.origin = null; +this.vectors = null; +this.xIndex = -1; +this.yIndex = 0; +this.zIndex = 0; +this.p3 = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "MapFileReader", J.jvxl.readers.VolumeFileReader); +Clazz.prepareFields (c$, function(){ +this.xyzStart = Clazz.newFloatArray (3, 0); +this.origin = new JU.P3(); +this.vectors = new Array(3); +this.p3 = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.MapFileReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2MFR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "init2MFR", +function(sg, br){ +this.init2VFR(sg, br); +this.isAngstroms = true; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "checkInsideOut", +function(mapc, mapr, maps){ +if (this.params.thePlane == null) this.params.insideOut = (";123;231;312;".indexOf(";" + mapc + mapr + maps) >= 0); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getVectorsAndOrigin", +function(){ +this.checkInsideOut(this.mapc, this.mapr, this.maps); +JU.Logger.info("grid parameters: nx,ny,nz: " + this.n0 + "," + this.n1 + "," + this.n2); +JU.Logger.info("grid parameters: nxStart,nyStart,nzStart: " + this.xyzStart[0] + "," + this.xyzStart[1] + "," + this.xyzStart[2]); +JU.Logger.info("grid parameters: mx,my,mz: " + this.na + "," + this.nb + "," + this.nc); +JU.Logger.info("grid parameters: a,b,c,alpha,beta,gamma: " + this.a + "," + this.b + "," + this.c + "," + this.alpha + "," + this.beta + "," + this.gamma); +JU.Logger.info("grid parameters: mapc,mapr,maps: " + this.mapc + "," + this.mapr + "," + this.maps); +JU.Logger.info("grid parameters: originX,Y,Z: " + this.origin); +var unitCell = JU.SimpleUnitCell.newA( Clazz.newFloatArray(-1, [this.a / this.na, this.b / this.nb, this.c / this.nc, this.alpha, this.beta, this.gamma])); +this.vectors[0] = JU.P3.new3(1, 0, 0); +this.vectors[1] = JU.P3.new3(0, 1, 0); +this.vectors[2] = JU.P3.new3(0, 0, 1); +unitCell.toCartesian(this.vectors[0], false); +unitCell.toCartesian(this.vectors[1], false); +unitCell.toCartesian(this.vectors[2], false); +JU.Logger.info("Jmol unit cell vectors:"); +JU.Logger.info(" a: " + this.vectors[0]); +JU.Logger.info(" b: " + this.vectors[1]); +JU.Logger.info(" c: " + this.vectors[2]); +this.voxelCounts[0] = this.n2; +this.voxelCounts[1] = this.n1; +this.voxelCounts[2] = this.n0; +this.volumetricVectors[0].setT(this.vectors[this.maps - 1]); +this.volumetricVectors[1].setT(this.vectors[this.mapr - 1]); +this.volumetricVectors[2].setT(this.vectors[this.mapc - 1]); +if (this.origin.x == 0 && this.origin.y == 0 && this.origin.z == 0) { +if (this.xIndex == -1) { +var xyz2crs = Clazz.newIntArray (3, 0); +xyz2crs[this.mapc - 1] = 0; +xyz2crs[this.mapr - 1] = 1; +xyz2crs[this.maps - 1] = 2; +this.xIndex = xyz2crs[0]; +this.yIndex = xyz2crs[1]; +this.zIndex = xyz2crs[2]; +}this.origin.scaleAdd2(this.xyzStart[this.xIndex], this.vectors[0], this.origin); +this.origin.scaleAdd2(this.xyzStart[this.yIndex], this.vectors[1], this.origin); +this.origin.scaleAdd2(this.xyzStart[this.zIndex], this.vectors[2], this.origin); +}this.volumetricOrigin.setT(this.origin); +JU.Logger.info("Jmol grid origin in Cartesian coordinates: " + this.origin); +JU.Logger.info("Use isosurface OFFSET {x y z} if you want to shift it.\n"); +this.p3.set(this.na, this.nb, this.nc); +unitCell.toCartesian(this.p3, true); +this.p3.add(this.origin); +JU.Logger.info("boundbox corners " + this.origin + " " + this.p3 + ";draw bbox boundbox mesh nofill"); +}); +Clazz.defineMethod(c$, "setCutoffAutomatic", +function(){ +if (this.params.thePlane == null && this.params.cutoffAutomatic) { +this.params.cutoff = -1.0; +JU.Logger.info("MapReader: setting cutoff to default value of " + this.params.cutoff + (this.boundingBox == null ? " (no BOUNDBOX parameter)\n" : "\n")); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MrcBinaryReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MrcBinaryReader.js new file mode 100755 index 000000000000..8ceaf1bd45d7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MrcBinaryReader.js @@ -0,0 +1,178 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.MapFileReader"], "J.jvxl.readers.MrcBinaryReader", ["JU.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.labels = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "MrcBinaryReader", J.jvxl.readers.MapFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.MrcBinaryReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +var fileName = (sg.getReaderData())[0]; +this.init2MFR(sg, br); +this.binarydoc = this.newBinaryDocument(); +this.setStream(fileName, true); +this.nSurfaces = 1; +if (this.params.thePlane == null) this.params.insideOut = !this.params.insideOut; +this.allowSigma = true; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +var ispg; +var nsymbt; +var extra = Clazz.newByteArray (100, 0); +var map = Clazz.newByteArray (4, 0); +var machst = Clazz.newByteArray (4, 0); +var rmsDeviation; +var nlabel; +this.n0 = this.binarydoc.readInt(); +if (this.n0 < 0 || this.n0 > 256) { +this.setStream(null, false); +this.n0 = this.binarydoc.swapBytesI(this.n0); +if (this.n0 < 0 || this.n0 > 1000) { +JU.Logger.info("nx=" + this.n0 + " not displayable as MRC file"); +throw new Exception("MRC file type not readable"); +}JU.Logger.info("reading little-endian MRC file"); +}this.n1 = this.binarydoc.readInt(); +this.n2 = this.binarydoc.readInt(); +this.mode = this.binarydoc.readInt(); +if (this.mode < 0 || this.mode > 6) { +this.setStream(null, false); +this.n0 = this.binarydoc.swapBytesI(this.n0); +this.n1 = this.binarydoc.swapBytesI(this.n1); +this.n2 = this.binarydoc.swapBytesI(this.n2); +this.mode = this.binarydoc.swapBytesI(this.mode); +}JU.Logger.info("MRC header: mode: " + this.mode); +JU.Logger.info("MRC header: nx ny nz: " + this.n0 + " " + this.n1 + " " + this.n2); +this.xyzStart[0] = this.binarydoc.readInt(); +this.xyzStart[1] = this.binarydoc.readInt(); +this.xyzStart[2] = this.binarydoc.readInt(); +JU.Logger.info("MRC header: nxyzStart: " + this.xyzStart[0] + " " + this.xyzStart[1] + " " + this.xyzStart[2]); +this.na = this.binarydoc.readInt(); +this.nb = this.binarydoc.readInt(); +this.nc = this.binarydoc.readInt(); +if (this.na == 0) this.na = this.n0 - 1; +if (this.nb == 0) this.nb = this.n1 - 1; +if (this.nc == 0) this.nc = this.n2 - 1; +JU.Logger.info("MRC header: na nb nc: " + this.na + " " + this.nb + " " + this.nc); +this.a = this.binarydoc.readFloat(); +this.b = this.binarydoc.readFloat(); +this.c = this.binarydoc.readFloat(); +this.alpha = this.binarydoc.readFloat(); +this.beta = this.binarydoc.readFloat(); +this.gamma = this.binarydoc.readFloat(); +if (this.alpha == 0) { +this.alpha = this.beta = this.gamma = 90; +JU.Logger.info("MRC header: alpha,beta,gamma 0 changed to 90,90,90"); +JU.Logger.info("MRC header: alpha,beta,gamma 0 reversing insideOut sense"); +if (this.params.thePlane == null) this.params.insideOut = !this.params.insideOut; +}this.mapc = this.binarydoc.readInt(); +this.mapr = this.binarydoc.readInt(); +this.maps = this.binarydoc.readInt(); +if (this.mapc == 2 && this.mapr == 1 && this.params.thePlane == null) this.params.insideOut = !this.params.insideOut; +var s = "" + this.mapc + this.mapr + this.maps; +JU.Logger.info("MRC header: mapc mapr maps: " + s); +if (this.params.thePlane == null && "21321".indexOf(s) >= 1) { +JU.Logger.info("MRC header: data are xy-reversed"); +this.params.dataXYReversed = true; +}this.dmin = this.binarydoc.readFloat(); +this.dmax = this.binarydoc.readFloat(); +this.dmean = this.binarydoc.readFloat(); +JU.Logger.info("MRC header: dmin,dmax,dmean: " + this.dmin + "," + this.dmax + "," + this.dmean); +ispg = this.binarydoc.readInt(); +nsymbt = this.binarydoc.readInt(); +JU.Logger.info("MRC header: ispg,nsymbt: " + ispg + "," + nsymbt); +this.binarydoc.readByteArray(extra, 0, extra.length); +this.origin.x = this.binarydoc.readFloat(); +this.origin.y = this.binarydoc.readFloat(); +this.origin.z = this.binarydoc.readFloat(); +JU.Logger.info("MRC header: origin: " + this.origin); +this.binarydoc.readByteArray(map, 0, map.length); +this.binarydoc.readByteArray(machst, 0, machst.length); +rmsDeviation = this.binarydoc.readFloat(); +JU.Logger.info("MRC header: rms: " + rmsDeviation); +nlabel = this.binarydoc.readInt(); +JU.Logger.info("MRC header: labels: " + nlabel); +this.labels = new Array(nlabel); +if (nlabel > 0) this.labels[0] = "Jmol MrcBinaryReader"; +for (var i = 0; i < 10; i++) { +s = this.binarydoc.readString(80).trim(); +if (i < nlabel) { +this.labels[i] = s; +JU.Logger.info(this.labels[i]); +}} +for (var i = 0; i < nsymbt; i += 80) { +var position = this.binarydoc.getPosition(); +s = this.binarydoc.readString(80).trim(); +if (s.indexOf('\0') != s.lastIndexOf('\0')) { +JU.Logger.error("File indicates " + nsymbt + " symmetry lines, but " + i + " found!"); +this.binarydoc.seek(position); +break; +}JU.Logger.info("MRC file symmetry information: " + s); +} +JU.Logger.info("MRC header: bytes read: " + this.binarydoc.getPosition() + "\n"); +this.getVectorsAndOrigin(); +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("MRC DATA ").append(nlabel > 0 ? this.labels[0] : "").append("\n"); +this.jvxlFileHeaderBuffer.append("see http://ami.scripps.edu/software/mrctools/mrc_specification.php\n"); +if (this.params.thePlane == null && (this.params.cutoffAutomatic || !Float.isNaN(this.params.sigma))) { +var sigma = (this.params.sigma < 0 || Float.isNaN(this.params.sigma) ? 1 : this.params.sigma); +this.params.cutoff = rmsDeviation * sigma + this.dmean; +s = "cutoff set to " + this.params.cutoff + " (mean + rmsDeviation*sigma = " + this.dmean + " + " + rmsDeviation + "*" + sigma + ")"; +JU.Logger.info(s); +this.jvxlFileHeaderBuffer.append(s + "\n"); +}}); +Clazz.overrideMethod(c$, "nextVoxel", +function(){ +var voxelValue; +switch (this.mode) { +case 0: +voxelValue = this.binarydoc.readByte(); +break; +case 1: +voxelValue = this.binarydoc.readShort(); +break; +default: +case 2: +voxelValue = this.binarydoc.readFloat(); +break; +case 3: +voxelValue = this.binarydoc.readShort(); +this.binarydoc.readShort(); +break; +case 4: +voxelValue = this.binarydoc.readFloat(); +this.binarydoc.readFloat(); +break; +case 6: +voxelValue = this.binarydoc.readUnsignedShort(); +break; +} +this.nBytes = this.binarydoc.getPosition(); +return voxelValue; +}); +Clazz.overrideMethod(c$, "skipData", +function(nPoints){ +for (var i = 0; i < nPoints; i++) switch (this.mode) { +case 0: +this.binarydoc.readByte(); +break; +case 1: +case 6: +this.binarydoc.readByteArray(J.jvxl.readers.MrcBinaryReader.b8, 0, 2); +break; +default: +case 2: +case 3: +this.binarydoc.readByteArray(J.jvxl.readers.MrcBinaryReader.b8, 0, 4); +break; +case 4: +this.binarydoc.readByteArray(J.jvxl.readers.MrcBinaryReader.b8, 0, 8); +break; +} + +}, "~N"); +c$.b8 = Clazz.newByteArray (8, 0); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MsmsReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MsmsReader.js new file mode 100755 index 000000000000..f08b414b3ff9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/MsmsReader.js @@ -0,0 +1,54 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PmeshReader"], "J.jvxl.readers.MsmsReader", ["JU.PT", "$.Rdr", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.fileName = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "MsmsReader", J.jvxl.readers.PmeshReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.MsmsReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2PFR(sg, br); +this.fileName = (sg.getReaderData())[0]; +if (this.fileName == null) return; +this.type = "msms"; +this.onePerLine = true; +this.fixedCount = 3; +this.vertexBase = 1; +this.setHeader(); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readVertices", +function(){ +this.skipHeader(); +return this.readVerticesPM(); +}); +Clazz.overrideMethod(c$, "readPolygons", +function(){ +this.br.close(); +this.fileName = JU.PT.rep(this.fileName, ".vert", ".face"); +JU.Logger.info("reading from file " + this.fileName); +try { +this.br = JU.Rdr.getBufferedReader(this.sg.atomDataServer.getBufferedInputStream(this.fileName), null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info("Note: file " + this.fileName + " was not found"); +this.br = null; +return true; +} else { +throw e; +} +} +this.sg.addRequiredFile(this.fileName); +this.skipHeader(); +return this.readPolygonsPM(); +}); +Clazz.defineMethod(c$, "skipHeader", +function(){ +while (this.rd() != null && this.line.indexOf("#") >= 0) { +} +this.tokens = this.getTokens(); +this.iToken = 0; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/NffReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/NffReader.js new file mode 100755 index 000000000000..32225a0547d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/NffReader.js @@ -0,0 +1,75 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PolygonFileReader", "java.util.Hashtable", "JU.P3"], "J.jvxl.readers.NffReader", ["JU.CU", "J.jvxl.data.JvxlCoder", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nPolygons = 0; +this.vertexMap = null; +this.pt = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "NffReader", J.jvxl.readers.PolygonFileReader); +Clazz.prepareFields (c$, function(){ +this.vertexMap = new java.util.Hashtable(); +this.pt = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.NffReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2PFR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "setHeader", +function(){ +this.jvxlFileHeaderBuffer.append("NFF file format\nvertices and triangles only\n"); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +}); +Clazz.overrideMethod(c$, "getSurfaceData", +function(){ +if (this.readVerticesAndPolygons()) JU.Logger.info("NFF file contains " + this.nVertices + " vertices and " + this.nTriangles + " triangles"); + else JU.Logger.error(this.params.fileName + ": Error reading Nff data "); +}); +Clazz.defineMethod(c$, "readVerticesAndPolygons", +function(){ +var color = 0xFF0000; +try { +while (this.rd() != null) { +if (this.line.length == 0) continue; +var tokens = this.getTokens(); +switch ((this.line.charAt(0)).charCodeAt(0)) { +case 35: +this.vertexMap.clear(); +continue; +case 102: +color = JU.CU.colorTriadToFFRGB(this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2]), this.parseFloatStr(tokens[3])); +continue; +case 112: +if (this.line.equals("pp 3")) { +var i1 = this.getVertex(); +var i2 = this.getVertex(); +var i3 = this.getVertex(); +this.nTriangles++; +this.addTriangleCheck(i1, i2, i3, 7, 0, false, color); +}continue; +} +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return true; +}); +Clazz.defineMethod(c$, "getVertex", +function(){ +var i = this.vertexMap.get(this.rd()); +if (i == null) { +var tokens = this.getTokens(); +this.pt.set(this.parseFloatStr(tokens[0]), this.parseFloatStr(tokens[1]), this.parseFloatStr(tokens[2])); +if (!Float.isNaN(this.params.scale)) this.pt.scale(this.params.scale); +if (this.isAnisotropic) this.setVertexAnisotropy(this.pt); +i = Integer.$valueOf(this.addVertexCopy(this.pt, 0, this.nVertices++, true)); +this.vertexMap.put(this.line, i); +}return i.intValue(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/ObjReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/ObjReader.js new file mode 100755 index 000000000000..05bed82d8a9f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/ObjReader.js @@ -0,0 +1,100 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PmeshReader"], "J.jvxl.readers.ObjReader", ["java.util.Hashtable", "JU.BS", "$.CU", "$.P3", "$.PT"], function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "ObjReader", J.jvxl.readers.PmeshReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.ObjReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2PR(sg, br); +this.type = "obj"; +this.setHeader(); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readVertices", +function(){ +this.pmeshError = "pmesh ERROR: invalid vertex/face list"; +var pt = new JU.P3(); +var color = 0; +var ia; +var ib; +var ic; +var id = 0; +var i = 0; +var nPts = 0; +var htPymol = new java.util.Hashtable(); +var ipt = null; +var spt = null; +var pymolMap = Clazz.newIntArray (3, 0); +var bsOK = new JU.BS(); +while (this.rd() != null) { +if (this.line.length < 2 || this.line.charAt(1) != ' ') { +if (this.params.readAllData && this.line.startsWith("usemtl")) color = JU.CU.getArgbFromString("[x" + this.line.substring(8) + "]"); +continue; +}switch ((this.line.charAt(0)).charCodeAt(0)) { +case 118: +this.next[0] = 2; +pt.set(JU.PT.parseFloatNext(this.line, this.next), JU.PT.parseFloatNext(this.line, this.next), JU.PT.parseFloatNext(this.line, this.next)); +var addHt = false; +if (htPymol == null) { +i = this.nVertices; +} else if ((ipt = htPymol.get(spt = "" + pt)) == null) { +addHt = true; +i = this.nVertices; +} else { +i = ipt.intValue(); +}var j = i; +if (i == this.nVertices) { +if (this.isAnisotropic) this.setVertexAnisotropy(pt); +j = this.addVertexCopy(pt, 0, this.nVertices++, true); +if (j >= 0) bsOK.set(i); +}pymolMap[nPts % 3] = j; +if (addHt) htPymol.put(spt, Integer.$valueOf(i)); +nPts++; +if (htPymol != null && nPts > 3) htPymol = null; +break; +case 102: +if (nPts == 3 && this.line.indexOf("//") < 0) htPymol = null; +nPts = 0; +this.nPolygons++; +var tokens = JU.PT.getTokens(this.line); +var vertexCount = tokens.length - 1; +if (vertexCount == 4) htPymol = null; +if (htPymol == null) { +ia = JU.PT.parseInt(tokens[1]) - 1; +ib = JU.PT.parseInt(tokens[2]) - 1; +ic = JU.PT.parseInt(tokens[3]) - 1; +this.pmeshError = " " + ia + " " + ib + " " + ic + " " + this.line; +if (!bsOK.get(ia) || !bsOK.get(ib) || !bsOK.get(ic)) continue; +if (vertexCount == 4) { +id = JU.PT.parseInt(tokens[4]) - 1; +var isOK = (bsOK.get(id)); +this.nTriangles = this.addTriangleCheck(ia, ib, ic, (isOK ? 3 : 7), 0, false, color); +if (isOK) this.nTriangles = this.addTriangleCheck(ia, ic, id, 6, 0, false, color); +continue; +}} else { +ia = pymolMap[0]; +ib = pymolMap[1]; +ic = pymolMap[2]; +if (ia < 0 || ib < 0 || ic < 0) continue; +}this.nTriangles = this.addTriangleCheck(ia, ib, ic, 7, 0, false, color); +break; +case 103: +htPymol = null; +if (this.params.readAllData) try { +color = JU.PT.parseIntRadix(this.line.substring(3), 16); +} catch (e) { +color = 0; +} +break; +} +} +this.pmeshError = null; +return true; +}); +Clazz.overrideMethod(c$, "readPolygons", +function(){ +return true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Parameters.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Parameters.js new file mode 100755 index 000000000000..d5110f73d9a4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Parameters.js @@ -0,0 +1,549 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(null, "J.jvxl.readers.Parameters", ["java.util.Hashtable", "JU.A4", "$.Lst", "$.M3", "$.P3", "$.P4", "$.V3", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.state = 0; +this.testFlags = 0; +this.logMessages = false; +this.logCompression = false; +this.logCube = false; +this.isSilent = false; +this.assocCutoff = 0.3; +this.dataType = 0; +this.surfaceType = 0; +this.calculationType = ""; +this.atomRadiusData = null; +this.addHydrogens = false; +this.solventRadius = 0; +this.solventExtendedAtomRadius = 0; +this.propertySmoothing = false; +this.propertySmoothingPower = 4; +this.envelopeRadius = 0; +this.cavityRadius = 0; +this.isCavity = false; +this.pocket = null; +this.minSet = 0; +this.slabInfo = null; +this.slabPlaneOffset = NaN; +this.theProperty = null; +this.solvent_ptsPerAngstrom = 4; +this.solvent_gridMax = 60; +this.plane_ptsPerAngstrom = 4; +this.plane_gridMax = 81; +this.colorBySign = false; +this.colorByPhase = false; +this.colorBySets = false; +this.colorRgb = 0; +this.colorNeg = 0; +this.colorPos = 0; +this.colorPosLCAO = 0; +this.colorNegLCAO = 0; +this.colorPhase = 0; +this.colorDensity = false; +this.iAddGridPoints = false; +this.atomIndex = 0; +this.isAngstroms = false; +this.scale = 0; +this.scale3d = 0; +this.anisotropy = null; +this.isAnisotropic = false; +this.eccentricityMatrix = null; +this.eccentricityMatrixInverse = null; +this.isEccentric = false; +this.eccentricityScale = 0; +this.eccentricityRatio = 0; +this.aniosU = null; +this.anisoB = null; +this.lcaoType = null; +this.functionInfo = null; +this.psi_n = 2; +this.psi_l = 1; +this.psi_m = 1; +this.psi_Znuc = 1; +this.psi_ptsPerAngstrom = 5; +this.psi_monteCarloCount = 0; +this.mep_gridMax = 40; +this.mep_ptsPerAngstrom = 3; +this.mep_marginAngstroms = 1; +this.mep_calcType = -1; +this.qmOrbitalType = 0; +this.qmOrbitalCount = 0; +this.moData = null; +this.qm_gridMax = 80; +this.qm_ptsPerAngstrom = 10; +this.qm_marginAngstroms = 1; +this.qm_nAtoms = 0; +this.qm_moNumber = 2147483647; +this.qm_moLinearCombination = null; +this.center = null; +this.point = null; +this.distance = 0; +this.allowVolumeRender = false; +this.script = null; +this.bsSelected = null; +this.bsIgnore = null; +this.bsSolvent = null; +this.func = null; +this.title = null; +this.blockCubeData = false; +this.readAllData = false; +this.fileIndex = -1; +this.fileName = null; +this.modelIndex = -1; +this.modelInvRotation = null; +this.isXLowToHigh = false; +this.insideOut = false; +this.dataXYReversed = false; +this.cutoff = 3.4028235E38; +this.cutoffRange = null; +this.sigma = 3.4028235E38; +this.cutoffAutomatic = true; +this.isCutoffAbsolute = false; +this.isPositiveOnly = false; +this.rangeAll = false; +this.rangeSelected = false; +this.rangeDefined = false; +this.valueMappedToRed = 0; +this.valueMappedToBlue = 0; +this.mappedDataMin = 0; +this.mappedDataMax = 0; +this.isColorReversed = false; +this.isBicolorMap = false; +this.isSquared = false; +this.isSquaredLinear = false; +this.thePlane = null; +this.isContoured = false; +this.nContours = 0; +this.thisContour = 0; +this.contourFromZero = false; +this.parameters = null; +this.resolution = 0; +this.downsampleFactor = 0; +this.maxSet = 0; +this.contoursDiscrete = null; +this.contourColixes = null; +this.contourIncrements = null; +this.boundingBox = null; +this.bsExcluded = null; +this.contourType = 0; +this.colorSchemeTranslucent = false; +this.colorEncoder = null; +this.usePropertyForColorRange = true; +this.isPeriodic = false; +this.doFullMolecular = false; +this.propertyDistanceMax = 2147483647; +this.randomSeed = 0; +this.fullyLit = false; +this.vertexSource = null; +this.intersection = null; +this.origin = null; +this.steps = null; +this.points = null; +this.volumeData = null; +this.contactPair = null; +this.mapLattice = null; +this.extendGrid = 0; +this.isMapped = false; +this.showTiming = false; +this.pointSize = 0; +this.probes = null; +this.isModelConnected = false; +this.surfaceAtoms = null; +this.filesData = null; +this.probeValues = null; +this.sbOut = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "Parameters", null); +Clazz.prepareFields (c$, function(){ +this.anisotropy = Clazz.newFloatArray (3, 0); +}); +Clazz.defineMethod(c$, "initialize", +function(){ +this.addHydrogens = false; +this.allowVolumeRender = true; +this.atomRadiusData = null; +this.atomIndex = -1; +this.blockCubeData = false; +this.boundingBox = null; +this.bsExcluded = new Array(4); +this.bsIgnore = null; +this.bsSelected = null; +this.bsSolvent = null; +this.calculationType = ""; +this.center = new JU.P3(); +this.resetForMapping(true); +this.colorBySign = this.colorByPhase = this.colorBySets = false; +this.colorEncoder = null; +this.colorNeg = -65536; +this.colorNegLCAO = -8388480; +this.colorPos = -16776961; +this.colorPosLCAO = -23296; +this.colorRgb = -2147483648; +this.colorSchemeTranslucent = false; +this.contactPair = null; +this.contourIncrements = null; +this.contoursDiscrete = null; +this.contourColixes = null; +this.contourFromZero = true; +this.cutoff = 3.4028235E38; +this.cutoffAutomatic = true; +this.dataXYReversed = false; +this.distance = 3.4028235E38; +this.doFullMolecular = false; +this.envelopeRadius = 10; +this.extendGrid = 0; +this.fileIndex = 1; +this.readAllData = true; +this.fileName = ""; +this.filesData = null; +this.fullyLit = false; +this.functionInfo = null; +this.iAddGridPoints = false; +this.insideOut = false; +this.isAngstroms = false; +this.isBicolorMap = this.isCutoffAbsolute = this.isPositiveOnly = false; +this.isCavity = false; +this.isColorReversed = false; +this.isModelConnected = false; +this.isSquared = false; +this.isSquaredLinear = false; +this.isContoured = false; +this.isEccentric = false; +this.isMapped = false; +this.isPeriodic = false; +this.isSilent = false; +this.logCube = this.logCompression = false; +this.logMessages = JU.Logger.debugging; +this.mapLattice = null; +this.mep_calcType = -1; +this.minSet = 0; +this.modelIndex = -1; +this.modelInvRotation = null; +this.nContours = 0; +this.pocket = null; +this.pointSize = NaN; +this.probes = null; +this.probeValues = null; +this.propertyDistanceMax = 2147483647; +this.propertySmoothing = false; +this.propertySmoothingPower = 4; +this.rangeDefined = false; +this.rangeAll = false; +this.rangeSelected = false; +this.resolution = 3.4028235E38; +this.scale = NaN; +this.scale3d = 0; +this.sigma = NaN; +this.slabInfo = null; +this.solventExtendedAtomRadius = 0; +this.state = 1; +this.testFlags = 0; +this.thePlane = null; +this.theProperty = null; +this.thisContour = -1; +this.title = null; +this.usePropertyForColorRange = true; +this.vertexSource = null; +}); +Clazz.defineMethod(c$, "resetForMapping", +function(haveSurface){ +if (!haveSurface) this.state = 2; +this.center.x = NaN; +this.colorDensity = false; +this.func = null; +this.intersection = null; +this.isAnisotropic = false; +this.isMapped = true; +this.mappedDataMin = 3.4028235E38; +this.origin = null; +this.parameters = null; +this.points = null; +this.qmOrbitalType = 0; +this.steps = null; +this.volumeData = null; +}, "~B"); +Clazz.defineMethod(c$, "setAnisotropy", +function(pt){ +this.anisotropy[0] = pt.x; +this.anisotropy[1] = pt.y; +this.anisotropy[2] = pt.z; +this.isAnisotropic = true; +if (Float.isNaN(this.center.x)) this.center.set(0, 0, 0); +}, "JU.P3"); +Clazz.defineMethod(c$, "setEccentricity", +function(info){ +var ecc = JU.V3.new3(info.x, info.y, info.z); +var c = (this.scale > 0 ? this.scale : info.w < 0 ? 1 : ecc.length()); +var fab_c = Math.abs(info.w); +ecc.normalize(); +var z = JU.V3.new3(0, 0, 1); +ecc.add(z); +ecc.normalize(); +if (Float.isNaN(ecc.x)) ecc.set(1, 0, 0); +this.eccentricityMatrixInverse = new JU.M3(); +this.eccentricityMatrixInverse.invertM(this.eccentricityMatrix = new JU.M3().setAA(JU.A4.newVA(ecc, 3.141592653589793))); +this.isEccentric = this.isAnisotropic = true; +this.eccentricityScale = c; +this.eccentricityRatio = fab_c; +if (fab_c > 1) this.eccentricityScale *= fab_c; +this.anisotropy[0] = fab_c * c; +this.anisotropy[1] = fab_c * c; +this.anisotropy[2] = c; +if (Float.isNaN(this.center.x)) this.center.set(0, 0, 0); +}, "JU.P4"); +Clazz.defineMethod(c$, "setPlane", +function(plane){ +this.thePlane = plane; +if (this.thePlane.x == 0 && this.thePlane.y == 0 && this.thePlane.z == 0) this.thePlane.z = 1; +this.isContoured = true; +}, "JU.P4"); +Clazz.defineMethod(c$, "setSphere", +function(radius, isGeodesic){ +this.dataType = (isGeodesic ? 74 : 65); +this.distance = radius; +this.setEccentricity(JU.P4.new4(0, 0, 1, 1)); +this.cutoff = 1.4E-45; +this.isCutoffAbsolute = false; +this.isSilent = !this.logMessages; +this.script = this.getScriptParams() + " SPHERE " + radius + ";"; +}, "~N,~B"); +Clazz.defineMethod(c$, "setEllipsoidP4", +function(v){ +this.dataType = 66; +this.distance = 1; +this.setEccentricity(v); +this.cutoff = 1.4E-45; +this.isCutoffAbsolute = false; +this.isSilent = !this.logMessages; +}, "JU.P4"); +Clazz.defineMethod(c$, "setEllipsoidAF", +function(bList){ +this.anisoB = bList; +this.dataType = 67; +this.distance = 0.3 * (Float.isNaN(this.scale) ? 1 : this.scale); +this.cutoff = 1.4E-45; +this.isCutoffAbsolute = false; +this.isSilent = !this.logMessages; +if (Float.isNaN(this.center.x)) this.center.set(0, 0, 0); +if (this.resolution == 3.4028235E38) this.resolution = 6; +}, "~A"); +Clazz.defineMethod(c$, "setLobe", +function(v){ +this.dataType = 68; +this.setEccentricity(v); +if (this.cutoff == 3.4028235E38) { +this.cutoff = 0.14; +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isSilent = !this.logMessages; +this.script = this.getScriptParams() + " LOBE {" + v.x + " " + v.y + " " + v.z + " " + v.w + "};"; +}, "JU.P4"); +Clazz.defineMethod(c$, "getScriptParams", +function(){ +return " center " + JU.Escape.eP(this.center) + (Float.isNaN(this.scale) ? "" : " scale " + this.scale); +}); +Clazz.defineMethod(c$, "setLp", +function(v){ +this.dataType = 70; +this.setEccentricity(v); +if (this.cutoff == 3.4028235E38) { +this.cutoff = 0.14; +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isSilent = !this.logMessages; +this.script = " center " + JU.Escape.eP(this.center) + (Float.isNaN(this.scale) ? "" : " scale " + this.scale) + " LP {" + v.x + " " + v.y + " " + v.z + " " + v.w + "};"; +}, "JU.P4"); +Clazz.defineMethod(c$, "setRadical", +function(v){ +this.dataType = 71; +this.setEccentricity(v); +if (this.cutoff == 3.4028235E38) { +this.cutoff = 0.14; +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isSilent = !this.logMessages; +this.script = " center " + JU.Escape.eP(this.center) + (Float.isNaN(this.scale) ? "" : " scale " + this.scale) + " RAD {" + v.x + " " + v.y + " " + v.z + " " + v.w + "};"; +}, "JU.P4"); +Clazz.defineMethod(c$, "setLcao", +function(type, colorPtr){ +this.lcaoType = type; +if (colorPtr == 1) this.colorPosLCAO = this.colorNegLCAO; +this.isSilent = !this.logMessages; +}, "~S,~N"); +Clazz.defineMethod(c$, "setSolvent", +function(propertyName, radius){ +this.isEccentric = this.isAnisotropic = false; +this.solventRadius = Math.abs(radius); +this.dataType = (this.intersection != null ? 1333 : "nomap" === propertyName ? 1207 : "molecular" === propertyName ? 1203 : "sasurface" === propertyName || this.solventRadius == 0 ? 1196 : 1195); +if (this.state < 2 && (this.cutoffAutomatic || !this.colorDensity) && (this.intersection == null || this.cutoff == 3.4028235E38)) this.cutoff = 0.0; +switch (this.dataType) { +case 1333: +this.calculationType = "VDW intersection"; +break; +case 1207: +this.calculationType = "unmapped plane"; +break; +case 1203: +this.calculationType = "molecular surface with radius " + this.solventRadius; +if (this.minSet == 0) this.minSet = 50; +break; +case 1195: +this.calculationType = "solvent-excluded surface with radius " + this.solventRadius; +if (this.minSet == 0) this.minSet = 50; +break; +case 1196: +this.calculationType = "solvent-accessible surface with radius " + this.solventRadius; +if (this.minSet == 0) this.minSet = 50; +break; +} +switch (this.dataType) { +case 1207: +this.solventExtendedAtomRadius = this.solventRadius; +this.solventRadius = 0; +this.isContoured = false; +break; +case 1203: +this.solventExtendedAtomRadius = 0; +break; +case 1195: +this.solventExtendedAtomRadius = 0; +if (this.bsIgnore == null) this.bsIgnore = this.bsSolvent; + else if (this.bsSolvent != null) this.bsIgnore.or(this.bsSolvent); +break; +case 1196: +this.solventExtendedAtomRadius = this.solventRadius; +this.solventRadius = 0; +if (this.bsIgnore == null) this.bsIgnore = this.bsSolvent; + else if (this.bsSolvent != null) this.bsIgnore.or(this.bsSolvent); +break; +} +}, "~S,~N"); +Clazz.defineMethod(c$, "setFunctionXY", +function(value){ +this.dataType = 8; +this.functionInfo = value; +this.cutoff = 1.4E-45; +this.isEccentric = this.isAnisotropic = false; +}, "JU.Lst"); +Clazz.defineMethod(c$, "setFunctionXYZ", +function(value){ +this.dataType = 9; +this.functionInfo = value; +if (this.cutoff == 3.4028235E38) this.cutoff = 1.4E-45; +this.isEccentric = this.isAnisotropic = false; +}, "JU.Lst"); +Clazz.defineMethod(c$, "setAtomicOrbital", +function(nlmZprs){ +this.dataType = 1294; +this.setEccentricity(JU.P4.new4(0, 0, 1, 1)); +this.psi_n = Clazz.floatToInt(nlmZprs[0]); +this.psi_l = Clazz.floatToInt(nlmZprs[1]); +this.psi_m = Clazz.floatToInt(nlmZprs[2]); +this.psi_Znuc = nlmZprs[3]; +this.psi_monteCarloCount = Clazz.floatToInt(nlmZprs[4]); +this.distance = nlmZprs[5]; +if (this.distance != 0 || this.thePlane != null) this.allowVolumeRender = false; +this.randomSeed = Clazz.floatToInt(nlmZprs[6]); +this.psi_ptsPerAngstrom = 10; +if (this.cutoff == 3.4028235E38 || this.cutoff == 0.14) { +this.cutoff = (this.psi_monteCarloCount > 0 ? 0 : 0.04); +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isCutoffAbsolute = true; +if (this.state < 2 && this.thePlane == null && this.colorBySign) this.isBicolorMap = true; +return (this.psi_Znuc > 0 && Math.abs(this.psi_m) <= this.psi_l && this.psi_l < this.psi_n); +}, "~A"); +Clazz.defineMethod(c$, "setMep", +function(charges, isMLP){ +this.dataType = (isMLP ? 1329 : 1328); +this.theProperty = charges; +this.usePropertyForColorRange = false; +this.isEccentric = this.isAnisotropic = false; +if (this.cutoff == 3.4028235E38) { +this.cutoff = 0.1; +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isCutoffAbsolute = (this.cutoff > 0 && !this.isPositiveOnly); +this.contourFromZero = false; +if (this.state >= 2 || this.thePlane != null) { +if (!this.rangeDefined && !this.rangeAll) { +this.valueMappedToRed = -0.1; +this.valueMappedToBlue = 0.1; +this.rangeDefined = true; +}} else { +this.colorBySign = true; +this.isBicolorMap = true; +}}, "~A,~B"); +Clazz.defineMethod(c$, "setNci", +function(isPromolecular){ +this.fullyLit = true; +this.qm_gridMax = 200; +if (isPromolecular) this.dataType = 1844; +this.qm_marginAngstroms = 2; +this.qmOrbitalType = (isPromolecular ? 3 : 4); +if (isPromolecular) { +if (this.parameters == null || this.parameters.length < 2) this.parameters = Clazz.newFloatArray(-1, [this.cutoff, 2]); +}if (this.cutoff == 3.4028235E38 || this.cutoff == 0) this.cutoff = 0.3; +if (this.isSquared) this.cutoff *= this.cutoff; +if (this.title == null) this.title = new Array(0); +this.moData = new java.util.Hashtable(); +}, "~B"); +Clazz.defineMethod(c$, "setMO", +function(iMo, linearCombination){ +this.isModelConnected = true; +this.qm_moLinearCombination = linearCombination; +this.qm_moNumber = (linearCombination == null ? Math.abs(iMo) : Clazz.floatToInt(linearCombination[1])); +this.qmOrbitalType = (this.moData.containsKey("haveVolumeData") ? 5 : this.moData.containsKey("gaussians") ? 1 : this.moData.containsKey("slaters") ? 2 : 0); +var isElectronDensity = (iMo <= 0 && linearCombination == null); +if (this.qmOrbitalType == 0) { +JU.Logger.error("MO ERROR: No basis functions found in file for MO calculation. (GAUSSIAN 'gfprint' keyword may be missing?)"); +this.title = Clazz.newArray(-1, ["no basis functions found in file"]); +} else { +var mos = this.moData.get("mos"); +this.qmOrbitalCount = mos.size(); +this.calculationType = this.moData.get("calculationType"); +this.calculationType = "Molecular orbital #" + this.qm_moNumber + "/" + this.qmOrbitalCount + " " + (this.calculationType == null ? "" : this.calculationType); +if (!isElectronDensity) { +if (this.title == null) { +this.title = new Array(5); +this.title[0] = "%F"; +this.title[1] = "Model %M MO %I/%N %T"; +this.title[2] = "?Energy = %E %U"; +this.title[3] = "?Symmetry = %S"; +this.title[4] = "?Occupancy = %O"; +}}}this.dataType = 1837; +if (this.cutoff == 3.4028235E38) { +this.cutoff = (isElectronDensity ? 0.01 : 0.05); +}if (this.isSquared || this.isSquaredLinear) this.cutoff = this.cutoff * this.cutoff; +this.isEccentric = this.isAnisotropic = false; +this.isCutoffAbsolute = (this.cutoff > 0 && !this.isPositiveOnly); +if (this.state >= 2 || this.thePlane != null) return; +this.colorBySign = true; +if (this.colorByPhase && this.colorPhase == 0) this.colorByPhase = false; +this.isBicolorMap = true; +}, "~N,~A"); +Clazz.defineMethod(c$, "setMapRanges", +function(surfaceReader, haveData){ +if (!this.colorDensity) if (this.colorByPhase || this.colorBySign || (this.thePlane != null || this.isBicolorMap) && !this.isContoured) { +this.mappedDataMin = -1; +this.mappedDataMax = 1; +}if (this.mappedDataMin == 3.4028235E38 || this.mappedDataMin == this.mappedDataMax) { +var minMax = surfaceReader.getMinMaxMappedValues(haveData); +System.out.println("parameters - setmapranges " + minMax[0] + " " + minMax[1]); +this.mappedDataMin = minMax[0]; +this.mappedDataMax = minMax[1]; +}if (this.mappedDataMin == 0 && this.mappedDataMax == 0) { +this.mappedDataMin = -1; +this.mappedDataMax = 1; +}if (!this.rangeDefined) { +this.valueMappedToRed = this.mappedDataMin; +this.valueMappedToBlue = this.mappedDataMax; +}}, "J.jvxl.readers.SurfaceReader,~B"); +Clazz.defineMethod(c$, "addSlabInfo", +function(slabObject){ +if (this.slabInfo == null) this.slabInfo = new JU.Lst(); +this.slabInfo.addLast(slabObject); +}, "~A"); +Clazz.defineMethod(c$, "isInsideOut", +function(){ +return this.insideOut != this.dataXYReversed; +}); +Clazz.defineMethod(c$, "isFullyLit", +function(){ +return (this.thePlane != null || this.fullyLit); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PeriodicVolumeFileReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PeriodicVolumeFileReader.js new file mode 100755 index 000000000000..62390a42e831 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PeriodicVolumeFileReader.js @@ -0,0 +1,62 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.PeriodicVolumeFileReader", null, function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "PeriodicVolumeFileReader", J.jvxl.readers.VolumeFileReader); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapData){ +this.initializeSurfaceData(); +this.newVoxelDataCube(); +this.getPeriodicVoxels(); +if (this.params.extendGrid != 0) { +var n = Clazz.newIntArray (3, 0); +var nx = this.nPointsX - 1; +var ny = this.nPointsY - 1; +var nz = this.nPointsZ - 1; +for (var i = 0; i < 3; i++) { +var vi = this.voxelCounts[i] - 1; +n[i] = Clazz.floatToInt(vi * this.params.extendGrid); +this.volumetricOrigin.scaleAdd2(-n[i], this.volumetricVectors[i], this.volumetricOrigin); +vi += 2 * n[i]; +while (n[i] > 0) n[i] -= this.voxelCounts[i] - 1; + +this.voxelCounts[i] = vi + 1; +} +this.nPointsX = this.voxelCounts[0]; +this.nPointsY = this.voxelCounts[1]; +this.nPointsZ = this.voxelCounts[2]; +var vd = Clazz.newFloatArray (this.nPointsX, this.nPointsY, this.nPointsZ, 0); +for (var i = this.nPointsX; --i >= 0; ) for (var j = this.nPointsY; --j >= 0; ) for (var k = this.nPointsZ; --k >= 0; ) { +vd[i][j][k] = this.voxelData[(i - n[0]) % nx][(j - n[1]) % ny][(k - n[2]) % nz]; +} + + +this.voxelData = vd; +} else { +var n; +n = this.nPointsX - 1; +for (var i = 0; i < this.nPointsY; ++i) for (var j = 0; j < this.nPointsZ; ++j) this.voxelData[n][i][j] = this.voxelData[0][i][j]; + + +n = this.nPointsY - 1; +for (var i = 0; i < this.nPointsX; ++i) for (var j = 0; j < this.nPointsZ; ++j) this.voxelData[i][n][j] = this.voxelData[i][0][j]; + + +n = this.nPointsZ - 1; +for (var i = 0; i < this.nPointsX; ++i) for (var j = 0; j < this.nPointsY; ++j) this.voxelData[i][j][n] = this.voxelData[i][j][0]; + + +}if (isMapData && this.volumeData.hasPlane()) { +this.volumeData.setVoxelMap(); +for (var x = 0; x < this.nPointsX; ++x) { +for (var y = 0; y < this.nPointsY; ++y) { +for (var z = 0; z < this.nPointsZ; ++z) { +var f = this.volumeData.getToPlaneParameter(); +if (this.volumeData.isNearPlane(x, y, z, f)) this.volumeData.setVoxelMapValue(x, y, z, this.voxelData[x][y][z]); +} +} +} +this.voxelData = null; +}this.volumeData.setVoxelDataAsArray(this.voxelData); +if (this.dataMin > this.params.cutoff) this.params.cutoff = 2 * this.dataMin; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PltFormattedReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PltFormattedReader.js new file mode 100755 index 000000000000..b1db471fef75 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PltFormattedReader.js @@ -0,0 +1,40 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.PltFormattedReader", ["JU.SB", "JV.Viewer"], function(){ +var c$ = Clazz.declareType(J.jvxl.readers, "PltFormattedReader", J.jvxl.readers.VolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.PltFormattedReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +this.isAngstroms = true; +this.jvxlData.wasCubic = true; +this.jvxlFileHeaderBuffer = new JU.SB(); +this.nSurfaces = 1; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +var n1 = this.parseIntStr(this.rd()); +var n2 = this.parseInt(); +this.nPointsX = this.parseIntStr(this.rd()); +this.nPointsY = this.parseInt(); +this.nPointsZ = this.parseInt(); +this.jvxlFileHeaderBuffer.append("Plt formatted data (" + n1 + "," + n2 + ") " + this.nPointsX + " x " + this.nPointsY + " x " + this.nPointsZ + " \nJmol " + JV.Viewer.getJmolVersion() + '\n'); +this.volumetricOrigin.set(0, 0, 0); +var xmin = this.parseFloatStr(this.rd().substring(0, 12)); +var xmax = this.parseFloatRange(this.line, 12, 24); +var ymin = this.parseFloatRange(this.line, 24, 36); +var ymax = this.parseFloatRange(this.line, 36, 48); +var zmin = this.parseFloatRange(this.line, 48, 60); +var zmax = this.parseFloatRange(this.line, 60, 72); +this.volumetricOrigin.set(xmin, ymin, zmin); +this.voxelCounts[0] = this.nPointsX; +this.voxelCounts[1] = this.nPointsY; +this.voxelCounts[2] = this.nPointsZ; +this.volumetricVectors[0].set(0, 0, (xmax - xmin) / this.nPointsX); +this.volumetricVectors[1].set(0, (ymax - ymin) / this.nPointsY, 0); +this.volumetricVectors[2].set((zmax - zmin) / this.nPointsZ, 0, 0); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Pmesh4Reader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Pmesh4Reader.js new file mode 100755 index 000000000000..4e3b68b015b2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Pmesh4Reader.js @@ -0,0 +1,102 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PolygonFileReader"], "J.jvxl.readers.Pmesh4Reader", ["JU.CU", "$.P4", "J.jvxl.data.JvxlCoder", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nPolygons = 0; +this.pmeshError = null; +this.type = null; +this.color = 0; +this.transparency = 0; +this.nX = 0; +this.nY = 0; +this.tokens = null; +this.iToken = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "Pmesh4Reader", J.jvxl.readers.PolygonFileReader); +Clazz.prepareFields (c$, function(){ +this.tokens = new Array(0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.Pmesh4Reader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2PFR(sg, br); +var fileName = (sg.getReaderData())[0]; +if (fileName == null) return; +this.params.fullyLit = true; +this.type = "pmesh4"; +this.jvxlFileHeaderBuffer.append(this.type + " file format\nvertices and triangles only\n"); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "getSurfaceData", +function(){ +this.rd(); +if (this.readVerticesAndPolygons()) JU.Logger.info(this.type + " file contains " + this.nVertices + " 4D vertices and " + this.nPolygons + " polygons for " + this.nTriangles + " triangles"); + else JU.Logger.error(this.params.fileName + ": " + (this.pmeshError == null ? "Error reading pmesh4 data " : this.pmeshError)); +}); +Clazz.defineMethod(c$, "readVerticesAndPolygons", +function(){ +try { +this.readColor(); +this.nY = this.getInt(); +this.nX = this.getInt(); +this.readVertices(); +this.createMesh(); +return true; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (this.pmeshError == null) this.pmeshError = this.type + " ERROR: " + e; +} else { +throw e; +} +} +return false; +}); +Clazz.defineMethod(c$, "readColor", +function(){ +this.color = JU.CU.colorTriadToFFRGB(this.getFloat(), this.getFloat(), this.getFloat()); +this.transparency = this.getFloat(); +}); +Clazz.defineMethod(c$, "readVertices", +function(){ +this.nVertices = this.nX * this.nY; +this.iToken = 2147483647; +this.pmeshError = this.type + " ERROR: invalid vertex list"; +for (var i = 0; i < this.nVertices; i++) { +var pt = JU.P4.new4(this.getFloat(), this.getFloat(), this.getFloat(), this.getFloat()); +if (JU.Logger.debugging) JU.Logger.debug(i + ": " + pt); +this.addVertexCopy(pt, 0, i, false); +this.iToken = 2147483647; +} +this.pmeshError = null; +return true; +}); +Clazz.defineMethod(c$, "createMesh", +function(){ +for (var i = 0; i < this.nX - 1; i++) { +for (var j = 0; j < this.nY - 1; j++) { +this.nTriangles += 2; +this.addTriangleCheck(i * this.nY + j, (i + 1) * this.nY + j, (i + 1) * this.nY + j + 1, 3, 0, false, this.color); +this.addTriangleCheck((i + 1) * this.nY + j + 1, i * this.nY + j + 1, i * this.nY + j, 3, 0, false, this.color); +} +} +}); +Clazz.defineMethod(c$, "nextToken", +function(){ +while (this.iToken >= this.tokens.length) { +this.iToken = 0; +this.rd(); +this.tokens = this.getTokens(); +} +return this.tokens[this.iToken++]; +}); +Clazz.defineMethod(c$, "getInt", +function(){ +return this.parseIntStr(this.nextToken()); +}); +Clazz.defineMethod(c$, "getFloat", +function(){ +return this.parseFloatStr(this.nextToken()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PmeshReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PmeshReader.js new file mode 100755 index 000000000000..f8067324569b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PmeshReader.js @@ -0,0 +1,205 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PolygonFileReader"], "J.jvxl.readers.PmeshReader", ["JU.CU", "$.P3", "$.PT", "J.jvxl.data.JvxlCoder", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isBinary = false; +this.nPolygons = 0; +this.pmeshError = null; +this.type = null; +this.isClosedFace = false; +this.fixedCount = 0; +this.onePerLine = false; +this.vertexBase = 0; +this.vertexMap = null; +this.tokens = null; +this.iToken = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "PmeshReader", J.jvxl.readers.PolygonFileReader); +Clazz.prepareFields (c$, function(){ +this.tokens = new Array(0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.PmeshReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2PR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "init2PR", +function(sg, br){ +this.init2PFR(sg, br); +var fileName = (sg.getReaderData())[0]; +if (fileName == null) return; +this.type = "pmesh"; +this.setHeader(); +this.isBinary = this.checkBinary(fileName); +this.isClosedFace = !this.isBinary; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "setHeader", +function(){ +this.jvxlFileHeaderBuffer.append(this.type + " file format\nvertices and triangles only\n"); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +}); +Clazz.defineMethod(c$, "checkBinary", +function(fileName){ +try { +this.br.mark(4); +var buf = Clazz.newCharArray (5, '\0'); +this.br.read(buf, 0, 5); +if (( String.instantialize(buf)).startsWith("PM\u0001\u0000")) { +this.br.close(); +this.binarydoc = this.newBinaryDocument(); +this.setStream(fileName, (buf[4] == '\0')); +return true; +}this.br.reset(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e); +} else { +throw e; +} +} +return false; +}, "~S"); +Clazz.overrideMethod(c$, "getSurfaceData", +function(){ +if (this.readVerticesAndPolygons()) JU.Logger.info((this.isBinary ? "binary " : "") + this.type + " file contains " + this.nVertices + " vertices and " + this.nPolygons + " polygons for " + this.nTriangles + " triangles"); + else JU.Logger.error(this.params.fileName + ": " + (this.pmeshError == null ? "Error reading pmesh data " : this.pmeshError)); +}); +Clazz.defineMethod(c$, "readVerticesAndPolygons", +function(){ +try { +if (this.isBinary && !this.readBinaryHeader()) return false; +if (this.readVertices() && this.readPolygons()) return true; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (this.pmeshError == null) this.pmeshError = this.type + " ERROR: " + e; +} else { +throw e; +} +} +return false; +}); +Clazz.defineMethod(c$, "readBinaryHeader", +function(){ +this.pmeshError = "could not read binary Pmesh file header"; +try { +var ignored = Clazz.newByteArray (64, 0); +this.binarydoc.readByteArray(ignored, 0, 8); +this.nVertices = this.binarydoc.readInt(); +this.nPolygons = this.binarydoc.readInt(); +this.binarydoc.readByteArray(ignored, 0, 64); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.pmeshError += " " + e.toString(); +this.binarydoc.close(); +return false; +} else { +throw e; +} +} +this.pmeshError = null; +return true; +}); +Clazz.defineMethod(c$, "readVertices", +function(){ +return this.readVerticesPM(); +}); +Clazz.defineMethod(c$, "readVerticesPM", +function(){ +this.pmeshError = this.type + " ERROR: vertex count must be positive"; +if (!this.isBinary) { +this.nVertices = this.getInt(); +if (this.nVertices == -2147483648) this.nVertices = this.getInt(); +}if (this.onePerLine) this.iToken = 2147483647; +if (this.nVertices <= 0) { +this.pmeshError += " (" + this.nVertices + ")"; +return false; +}this.pmeshError = this.type + " ERROR: invalid vertex list"; +this.vertexMap = Clazz.newIntArray (this.nVertices, 0); +for (var i = 0; i < this.nVertices; i++) { +var pt = JU.P3.new3(this.getFloat(), this.getFloat(), this.getFloat()); +if (this.isAnisotropic) this.setVertexAnisotropy(pt); +if (JU.Logger.debugging) JU.Logger.debug(i + ": " + pt); +this.vertexMap[i] = this.addVertexCopy(pt, 0, i, false); +if (this.onePerLine) this.iToken = 2147483647; +} +this.pmeshError = null; +return true; +}); +Clazz.defineMethod(c$, "readPolygons", +function(){ +return this.readPolygonsPM(); +}); +Clazz.defineMethod(c$, "readPolygonsPM", +function(){ +this.pmeshError = this.type + " ERROR: polygon count must be zero or positive"; +if (!this.isBinary) this.nPolygons = this.getInt(); +if (this.onePerLine) this.iToken = 2147483647; +var vertices = Clazz.newIntArray (5, 0); +if (this.nPolygons == -1) this.nPolygons = 2147483647; +var nread = 0; +for (var iPoly = 0; iPoly < this.nPolygons; iPoly++) { +var intCount = (this.fixedCount == 0 ? this.getInt() : this.fixedCount); +if (intCount == 0) break; +nread++; +var haveColor = (intCount < 0); +if (haveColor) intCount = -intCount; +var vertexCount = intCount - (intCount > 3 && this.isClosedFace ? 1 : 0); +if (vertexCount < 1 || vertexCount > 4) { +this.pmeshError = this.type + " ERROR: bad polygon (must have 1-4 vertices) at #" + (iPoly + 1); +return false; +}var isOK = true; +for (var i = 0; i < intCount; ++i) { +if ((vertices[i] = this.getInt() - this.vertexBase) < 0 || vertices[i] >= this.nVertices) { +this.pmeshError = this.type + " ERROR: invalid vertex index: " + vertices[i]; +return false; +}if ((vertices[i] = this.vertexMap[vertices[i]]) < 0) isOK = false; +} +if (this.onePerLine) this.iToken = 2147483647; +if (!isOK) continue; +if (vertexCount < 3) for (var i = vertexCount; i < 3; ++i) vertices[i] = vertices[i - 1]; + +var color = 0; +if (haveColor) { +if (this.isBinary) { +color = this.getInt(); +} else { +var c = this.nextToken(); +try { +color = (c.startsWith("0x") ? JU.PT.parseIntRadix(c.substring(2), 16) : this.parseIntStr(c)); +} catch (e) { +color = -2147483648; +} +if (color == -2147483648) color = JU.CU.getArgbFromString(c); +}color |= 0xFF000000; +}if (vertexCount == 4) { +this.nTriangles += 2; +this.addTriangleCheck(vertices[0], vertices[1], vertices[3], 5, 0, false, color); +this.addTriangleCheck(vertices[1], vertices[2], vertices[3], 3, 0, false, color); +} else { +this.nTriangles++; +this.addTriangleCheck(vertices[0], vertices[1], vertices[2], 7, 0, false, color); +}} +if (this.isBinary) this.nBytes = this.binarydoc.getPosition(); +this.nPolygons = nread; +return true; +}); +Clazz.defineMethod(c$, "nextToken", +function(){ +while (this.iToken >= this.tokens.length) { +this.iToken = 0; +this.rd(); +this.tokens = this.getTokens(); +} +return this.tokens[this.iToken++]; +}); +Clazz.defineMethod(c$, "getInt", +function(){ +return (this.isBinary ? this.binarydoc.readInt() : this.parseIntStr(this.nextToken())); +}); +Clazz.defineMethod(c$, "getFloat", +function(){ +return (this.isBinary ? this.binarydoc.readFloat() : this.parseFloatStr(this.nextToken())); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PolygonFileReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PolygonFileReader.js new file mode 100755 index 000000000000..0b408295fc68 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PolygonFileReader.js @@ -0,0 +1,31 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.SurfaceFileReader"], "J.jvxl.readers.PolygonFileReader", ["java.util.Date", "JU.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nVertices = 0; +this.nTriangles = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "PolygonFileReader", J.jvxl.readers.SurfaceFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.PolygonFileReader, []); +}); +Clazz.defineMethod(c$, "init2PFR", +function(sg, br){ +this.init2SFR(sg, br); +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("#created ").append("" + new java.util.Date()).append("\n"); +this.vertexDataOnly = true; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +return true; +}, "~B"); +Clazz.overrideMethod(c$, "readVolumeData", +function(isMapData){ +return true; +}, "~B"); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapData){ +this.getSurfaceData(); +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PyMOLMeshReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PyMOLMeshReader.js new file mode 100755 index 000000000000..2ca1e15f6633 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/PyMOLMeshReader.js @@ -0,0 +1,127 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.MapFileReader"], "J.jvxl.readers.PyMOLMeshReader", ["JU.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.data = null; +this.voxelList = null; +this.surfaceName = null; +this.pymolType = 0; +this.isMesh = false; +this.pt = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "PyMOLMeshReader", J.jvxl.readers.MapFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.PyMOLMeshReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, brNull){ +this.init2MFR(sg, null); +this.allowSigma = true; +this.nSurfaces = 1; +var map = sg.getReaderData(); +this.data = map.get(this.params.calculationType); +if (this.data == null) return; +this.pymolType = Clazz.floatToInt(this.getFloat(J.jvxl.readers.PyMOLMeshReader.getList(this.data, 0), 0)); +this.isMesh = (this.pymolType == 3); +this.surfaceName = this.data.get(this.data.size() - 1); +JU.Logger.info("PyMOLMeshReader for " + this.params.calculationType + " pymolType=" + this.pymolType + "; isMesh=" + this.isMesh + " surfaceName=" + this.surfaceName); +this.data = J.jvxl.readers.PyMOLMeshReader.getList(J.jvxl.readers.PyMOLMeshReader.getList(this.data, 2), 0); +if (this.isMesh && this.params.thePlane == null && this.params.cutoffAutomatic) { +this.params.cutoff = this.getFloat(this.data, 8); +this.params.cutoffAutomatic = false; +}if (this.isMesh) this.data = J.jvxl.readers.PyMOLMeshReader.getList(J.jvxl.readers.PyMOLMeshReader.getList(map.get(this.surfaceName), 2), 0); +this.voxelList = J.jvxl.readers.PyMOLMeshReader.getList(J.jvxl.readers.PyMOLMeshReader.getList(J.jvxl.readers.PyMOLMeshReader.getList(this.data, 14), 2), 6); +JU.Logger.info("PyMOLMeshReader: Number of grid points = " + this.voxelList.size()); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +c$.getList = Clazz.defineMethod(c$, "getList", +function(list, i){ +return list.get(i); +}, "JU.Lst,~N"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +var t; +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("PyMOL surface reader\n"); +this.jvxlFileHeaderBuffer.append(this.surfaceName + " (" + this.params.calculationType + ")\n"); +var s = J.jvxl.readers.PyMOLMeshReader.getList(this.data, 1); +t = J.jvxl.readers.PyMOLMeshReader.getList(s, 0); +var haveUnitCell = false; +if (t != null) { +if (t.size() < 3) t = J.jvxl.readers.PyMOLMeshReader.getList(s = J.jvxl.readers.PyMOLMeshReader.getList(s, 0), 0); +this.a = this.getFloat(t, 0); +haveUnitCell = (this.a != 1); +if (haveUnitCell) { +this.b = this.getFloat(t, 1); +this.c = this.getFloat(t, 2); +t = J.jvxl.readers.PyMOLMeshReader.getList(s, 1); +this.alpha = this.getFloat(t, 0); +this.beta = this.getFloat(t, 1); +this.gamma = this.getFloat(t, 2); +}}t = J.jvxl.readers.PyMOLMeshReader.getList(this.data, 7); +this.origin.set(this.getFloat(t, 0), this.getFloat(t, 1), this.getFloat(t, 2)); +t = J.jvxl.readers.PyMOLMeshReader.getList(this.data, 10); +this.na = Clazz.floatToInt(this.getFloat(t, 0)); +this.nb = Clazz.floatToInt(this.getFloat(t, 1)); +this.nc = Clazz.floatToInt(this.getFloat(t, 2)); +t = J.jvxl.readers.PyMOLMeshReader.getList(this.data, 11); +this.xyzStart[0] = this.getFloat(t, 0); +this.xyzStart[1] = this.getFloat(t, 1); +this.xyzStart[2] = this.getFloat(t, 2); +t = J.jvxl.readers.PyMOLMeshReader.getList(this.data, 13); +this.n2 = Clazz.floatToInt(this.getFloat(t, 0)); +this.n1 = Clazz.floatToInt(this.getFloat(t, 1)); +this.n0 = Clazz.floatToInt(this.getFloat(t, 2)); +if (!haveUnitCell) { +this.na = this.n2 - 1; +this.nb = this.n1 - 1; +this.nc = this.n0 - 1; +t = J.jvxl.readers.PyMOLMeshReader.getList(this.data, 8); +this.a = this.getFloat(t, 0) - this.origin.x; +this.b = this.getFloat(t, 1) - this.origin.y; +this.c = this.getFloat(t, 2) - this.origin.z; +this.alpha = this.beta = this.gamma = 90; +}this.mapc = 3; +this.mapr = 2; +this.maps = 1; +this.getVectorsAndOrigin(); +this.setCutoffAutomatic(); +}); +Clazz.overrideMethod(c$, "nextVoxel", +function(){ +return this.getFloat(this.voxelList, this.pt++); +}); +Clazz.defineMethod(c$, "getFloat", +function(list, i){ +return (list.get(i)).floatValue(); +}, "JU.Lst,~N"); +Clazz.overrideMethod(c$, "skipData", +function(nPoints){ +}, "~N"); +Clazz.overrideMethod(c$, "setCutoffAutomatic", +function(){ +if (this.params.thePlane != null) return; +if (Float.isNaN(this.params.sigma)) { +if (!this.params.cutoffAutomatic) return; +this.params.cutoff = (this.boundingBox == null ? 3.0 : 1.6); +if (this.dmin != 3.4028235E38) { +if (this.params.cutoff > this.dmax) this.params.cutoff = this.dmax / 4; +}} else { +this.params.cutoff = this.calculateCutoff(); +}JU.Logger.info("MapReader: setting cutoff to default value of " + this.params.cutoff + (this.boundingBox == null ? " (no BOUNDBOX parameter)\n" : "\n")); +}); +Clazz.defineMethod(c$, "calculateCutoff", +function(){ +var n = this.voxelList.size(); +var sum = 0; +var sum2 = 0; +for (var i = 0; i < n; i++) { +var v = this.getFloat(this.voxelList, i); +sum += v; +sum2 += v * v; +} +var mean = sum / n; +var rmsd = Math.sqrt(sum2 / n); +JU.Logger.info("PyMOLMeshReader rmsd=" + rmsd + " mean=" + mean); +return this.params.sigma * rmsd + mean; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Ras3DReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Ras3DReader.js new file mode 100755 index 000000000000..c5b266743214 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/Ras3DReader.js @@ -0,0 +1,97 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PolygonFileReader"], "J.jvxl.readers.Ras3DReader", ["java.util.Hashtable", "JU.CU", "$.P3", "J.jvxl.data.JvxlCoder", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pmeshError = null; +this.type = null; +this.asQuads = false; +this.nPolygons = 0; +this.htVertices = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "Ras3DReader", J.jvxl.readers.PolygonFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.Ras3DReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2PR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "init2PR", +function(sg, br){ +this.init2PFR(sg, br); +var fileName = (sg.getReaderData())[0]; +if (fileName == null) return; +this.type = "ras3d"; +this.setHeader(); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "setHeader", +function(){ +this.jvxlFileHeaderBuffer.append(this.type + " file format\nvertices and triangles only\n"); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +}); +Clazz.overrideMethod(c$, "getSurfaceData", +function(){ +if (this.readVerticesAndPolygons()) JU.Logger.info(this.type + " file contains " + this.nVertices + " vertices and " + this.nPolygons + " polygons for " + this.nTriangles + " triangles"); + else JU.Logger.error(this.params.fileName + ": " + (this.pmeshError == null ? "Error reading pmesh data " : this.pmeshError)); +}); +Clazz.defineMethod(c$, "readVerticesAndPolygons", +function(){ +try { +if (this.readVertices()) return true; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (this.pmeshError == null) this.pmeshError = this.type + " ERROR: " + e; +} else { +throw e; +} +} +return false; +}); +Clazz.defineMethod(c$, "readVertices", +function(){ +this.htVertices = new java.util.Hashtable(); +var v0 = Clazz.newIntArray (3, 0); +var v1 = Clazz.newIntArray (3, 0); +var v2; +var c0 = 0; +var c1 = 0; +var c2; +if (this.rd().indexOf("DSSR") >= 0) this.asQuads = true; +while (this.rd() != null) { +while (!this.line.equals("1")) { +this.rd(); +} +this.rd(); +var tokens = this.getTokens(); +v0[0] = this.getPoint(tokens, 0); +v0[1] = this.getPoint(tokens, 3); +v0[2] = this.getPoint(tokens, 6); +this.nTriangles++; +c0 = JU.CU.colorTriadToFFRGB(this.parseFloatStr(tokens[9]), this.parseFloatStr(tokens[10]), this.parseFloatStr(tokens[11])); +if (this.asQuads) { +if (this.nTriangles % 2 == 1) { +v2 = v1; +v1 = v0; +v0 = v2; +c2 = c1; +c1 = c0; +c0 = c2; +continue; +}this.addTriangleCheck(v0[0], v0[1], v0[2], 6, 0, false, c0); +this.addTriangleCheck(v1[0], v1[1], v1[2], 3, 0, false, c1); +} else { +this.addTriangleCheck(v0[0], v0[1], v0[2], 7, 0, false, c0); +}this.nPolygons++; +} +return true; +}); +Clazz.defineMethod(c$, "getPoint", +function(tokens, i){ +var key = tokens[i] + ";" + tokens[i + 1] + ";" + tokens[i + 2]; +var v = this.htVertices.get(key); +if (v == null) { +this.addVertexCopy(JU.P3.new3(this.parseFloatStr(tokens[i]), this.parseFloatStr(tokens[i + 1]), this.parseFloatStr(tokens[i + 2])), 0, this.nVertices, false); +this.htVertices.put(key, v = Integer.$valueOf(this.nVertices++)); +}return v.intValue(); +}, "~A,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceFileReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceFileReader.js new file mode 100755 index 000000000000..46d6ef833c96 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceFileReader.js @@ -0,0 +1,140 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.SurfaceReader"], "J.jvxl.readers.SurfaceFileReader", ["JU.PT", "$.Rdr", "J.api.Interface"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.br = null; +this.binarydoc = null; +this.out = null; +this.line = null; +this.next = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "SurfaceFileReader", J.jvxl.readers.SurfaceReader); +Clazz.prepareFields (c$, function(){ +this.next = Clazz.newIntArray (1, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.SurfaceFileReader, []); +}); +Clazz.defineMethod(c$, "setStream", +function(fileName, isBigEndian){ +if (fileName == null) this.binarydoc.setStream(null, isBigEndian); + else try { +if (Clazz.instanceOf(this.br,"JU.Rdr.StreamReader")) { +var stream = (this.br).getStream(); +stream.reset(); +this.binarydoc.setStream(stream, true); +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("BCifDensityReader " + e); +this.binarydoc.setStream(this.sg.atomDataServer.getBufferedInputStream(fileName), isBigEndian); +} else { +throw e; +} +} +}, "~S,~B"); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initSR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.defineMethod(c$, "init2", +function(sg, br){ +this.init2SFR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "init2SFR", +function(sg, br){ +this.br = br; +this.init(sg); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "newBinaryDocument", +function(){ +return J.api.Interface.getInterface("JU.BinaryDocument", this.sg.atomDataServer, "file"); +}); +Clazz.overrideMethod(c$, "setOutputChannel", +function(out){ +if (this.binarydoc == null) this.out = out; + else this.sg.setOutputChannel(this.binarydoc, out); +}, "JU.OC"); +Clazz.overrideMethod(c$, "closeReader", +function(){ +this.closeReaderSFR(); +}); +Clazz.defineMethod(c$, "closeReaderSFR", +function(){ +if (this.br != null) try { +this.br.close(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +if (this.out != null) this.out.closeChannel(); +if (this.binarydoc != null) this.binarydoc.close(); +}); +Clazz.overrideMethod(c$, "discardTempData", +function(discardAll){ +this.closeReader(); +this.discardTempDataSR(discardAll); +}, "~B"); +Clazz.defineMethod(c$, "getTokens", +function(){ +return JU.PT.getTokensAt(this.line, 0); +}); +Clazz.defineMethod(c$, "parseFloat", +function(){ +return JU.PT.parseFloatNext(this.line, this.next); +}); +Clazz.defineMethod(c$, "parseFloatStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseFloatNext(s, this.next); +}, "~S"); +Clazz.defineMethod(c$, "parseFloatRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseFloatRange(s, iEnd, this.next); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "parseInt", +function(){ +return JU.PT.parseIntNext(this.line, this.next); +}); +Clazz.defineMethod(c$, "parseIntStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseIntNext(s, this.next); +}, "~S"); +Clazz.defineMethod(c$, "parseIntNext", +function(s){ +return JU.PT.parseIntNext(s, this.next); +}, "~S"); +Clazz.defineMethod(c$, "parseFloatArrayStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseFloatArrayNext(s, this.next, null, null, null); +}, "~S"); +Clazz.defineMethod(c$, "parseFloatArray", +function(a, strStart, strEnd){ +return JU.PT.parseFloatArrayNext(this.line, this.next, a, strStart, strEnd); +}, "~A,~S,~S"); +Clazz.defineMethod(c$, "getQuotedStringNext", +function(){ +return JU.PT.getQuotedStringNext(this.line, this.next); +}); +Clazz.defineMethod(c$, "skipTo", +function(info, what){ +if (info != null) while (this.rd().indexOf(info) < 0) { +} +if (what != null) this.next[0] = this.line.indexOf(what) + what.length + 2; +}, "~S,~S"); +Clazz.defineMethod(c$, "rd", +function(){ +this.line = this.br.readLine(); +if (this.line != null) { +this.nBytes += this.line.length; +if (this.out != null) { +var b = this.line.getBytes(); +this.out.write(b, 0, b.length); +this.out.writeByteAsInt(0x0A); +}}return this.line; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceGenerator.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceGenerator.js new file mode 100755 index 000000000000..a9baf010d6ed --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceGenerator.js @@ -0,0 +1,866 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["JU.P3", "$.V3"], "J.jvxl.readers.SurfaceGenerator", ["JU.AU", "$.BS", "$.Measure", "$.P4", "$.PT", "$.Rdr", "$.SB", "J.jvxl.data.JvxlCoder", "$.JvxlData", "$.MeshData", "$.VolumeData", "J.jvxl.readers.Parameters", "$.SurfaceReader", "JU.Logger", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.params = null; +this.jvxlData = null; +this.meshData = null; +this.volumeDataTemp = null; +this.meshDataServer = null; +this.atomDataServer = null; +this.marchingSquares = null; +this.version = null; +this.isValid = true; +this.fileType = null; +this.bsVdw = null; +this.colorPtr = 0; +this.surfaceReader = null; +this.out = null; +this.readerData = null; +this.vAB = null; +this.vNorm = null; +this.ptRef = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "SurfaceGenerator", null); +Clazz.prepareFields (c$, function(){ +this.vAB = new JU.V3(); +this.vNorm = new JU.V3(); +this.ptRef = JU.P3.new3(0, 0, 1e15); +}); +Clazz.makeConstructor(c$, +function(atomDataServer, meshDataServer, meshData, jvxlData){ +this.atomDataServer = atomDataServer; +this.meshDataServer = meshDataServer; +this.params = new J.jvxl.readers.Parameters(); +this.meshData = (meshData == null ? new J.jvxl.data.MeshData() : meshData); +this.jvxlData = (jvxlData == null ? new J.jvxl.data.JvxlData() : jvxlData); +this.volumeDataTemp = new J.jvxl.data.VolumeData(); +this.initializeIsosurface(); +}, "J.atomdata.AtomDataServer,J.jvxl.api.MeshDataServer,J.jvxl.data.MeshData,J.jvxl.data.JvxlData"); +Clazz.defineMethod(c$, "setJvxlData", +function(jvxlData){ +this.jvxlData = jvxlData; +if (jvxlData != null) jvxlData.version = this.version; +}, "J.jvxl.data.JvxlData"); +Clazz.defineMethod(c$, "setProp", +function(propertyName, value, bs){ +if ("debug" === propertyName) { +var TF = (value).booleanValue(); +this.params.logMessages = TF; +this.params.logCube = TF; +return true; +}if ("init" === propertyName) { +this.initializeIsosurface(); +if (Clazz.instanceOf(value,"J.jvxl.readers.Parameters")) { +this.params = value; +} else { +this.params.script = value; +if (this.params.script != null && this.params.script.indexOf(";#") >= 0) { +this.params.script = JU.PT.rep(this.params.script, ";#", "; #"); +}}return false; +}if ("silent" === propertyName) { +this.params.isSilent = true; +return true; +}if ("map" === propertyName) { +this.params.resetForMapping((value).booleanValue()); +if (this.surfaceReader != null) this.surfaceReader.minMax = null; +return true; +}if ("finalize" === propertyName) { +this.initializeIsosurface(); +return true; +}if ("clear" === propertyName) { +if (this.surfaceReader != null) this.surfaceReader.discardTempData(true); +return false; +}if ("fileIndex" === propertyName) { +this.params.fileIndex = (value).intValue(); +if (this.params.fileIndex < 0) this.params.fileIndex = 0; +this.params.readAllData = false; +return true; +}if ("blockData" === propertyName) { +this.params.blockCubeData = (value).booleanValue(); +return true; +}if ("withinPoints" === propertyName) { +this.params.boundingBox = (value)[1]; +return true; +}if ("boundingBox" === propertyName) { +var pts = value; +this.params.boundingBox = Clazz.newArray(-1, [JU.P3.newP(pts[0]), JU.P3.newP(pts[pts.length - 1])]); +return true; +}if ("func" === propertyName) { +this.params.func = value; +return true; +}if ("intersection" === propertyName) { +this.params.intersection = value; +return true; +}if ("bsSolvent" === propertyName) { +this.params.bsSolvent = value; +return true; +}if ("select" === propertyName) { +this.params.bsSelected = value; +return true; +}if ("ignore" === propertyName) { +this.params.bsIgnore = value; +return true; +}if ("propertySmoothing" === propertyName) { +this.params.propertySmoothing = (value).booleanValue(); +return true; +}if ("propertyDistanceMax" === propertyName) { +this.params.propertyDistanceMax = (value).floatValue(); +return true; +}if ("propertySmoothingPower" === propertyName) { +this.params.propertySmoothingPower = (value).intValue(); +return true; +}if ("title" === propertyName) { +if (value == null) { +this.params.title = null; +return true; +} else if (JU.AU.isAS(value)) { +this.params.title = value; +if (JU.Logger.debugging) for (var i = 0; i < this.params.title.length; i++) if (this.params.title[i].length > 0) JU.Logger.info(this.params.title[i]); + +}return true; +}if ("sigma" === propertyName) { +this.params.cutoff = this.params.sigma = (value).floatValue(); +this.params.cutoffRange = null; +this.params.cutoffAutomatic = false; +return true; +}if ("cutoff" === propertyName) { +this.params.cutoff = (value).floatValue(); +this.params.cutoffRange = null; +this.params.isPositiveOnly = false; +this.params.cutoffAutomatic = false; +return true; +}if ("cutoffPositive" === propertyName) { +this.params.cutoff = (value).floatValue(); +this.params.cutoffRange = null; +this.params.isPositiveOnly = true; +this.params.isCutoffAbsolute = false; +this.params.cutoffAutomatic = false; +return true; +}if ("cutoffRange" === propertyName) { +this.params.cutoffRange = value; +this.params.cutoff = this.params.cutoffRange[0]; +this.params.isPositiveOnly = false; +this.params.cutoffAutomatic = false; +return true; +}if ("parameters" === propertyName) { +this.params.parameters = JU.AU.ensureLengthA(value, 2); +if (this.params.parameters.length > 0 && this.params.parameters[0] != 0) this.params.cutoff = this.params.parameters[0]; +return true; +}if ("cap" === propertyName || "slab" === propertyName) { +if (value != null) this.params.addSlabInfo(value); +return true; +}if ("scale" === propertyName) { +this.params.scale = (value).floatValue(); +return true; +}if ("scale3d" === propertyName) { +this.params.scale3d = (value).floatValue(); +return true; +}if ("angstroms" === propertyName) { +this.params.isAngstroms = true; +return true; +}if ("resolution" === propertyName) { +var resolution = (value).floatValue(); +this.params.resolution = (resolution > 0 ? resolution : 3.4028235E38); +return true; +}if ("downsample" === propertyName) { +var rate = (value).intValue(); +this.params.downsampleFactor = (rate >= 0 ? rate : 0); +return true; +}if ("anisotropy" === propertyName) { +if ((this.params.dataType & 32) == 0) this.params.setAnisotropy(value); +return true; +}if ("eccentricity" === propertyName) { +this.params.setEccentricity(value); +return true; +}if ("addHydrogens" === propertyName) { +this.params.addHydrogens = (value).booleanValue(); +return true; +}if ("squareData" === propertyName) { +this.params.isSquared = (value == null ? false : (value).booleanValue()); +return true; +}if ("squareLinear" === propertyName) { +this.params.isSquaredLinear = (value == null ? false : (value).booleanValue()); +return true; +}if ("gridPoints" === propertyName) { +this.params.iAddGridPoints = true; +return true; +}if ("atomIndex" === propertyName) { +this.params.atomIndex = (value).intValue(); +return true; +}if ("insideOut" === propertyName) { +this.params.insideOut = true; +return true; +}if ("sign" === propertyName) { +this.params.isCutoffAbsolute = !this.params.isPositiveOnly; +this.params.colorBySign = true; +this.colorPtr = 0; +return true; +}if ("colorRGB" === propertyName) { +var rgb = (value).intValue(); +this.params.colorRgb = this.params.colorPos = this.params.colorPosLCAO = rgb; +if (this.colorPtr++ == 0) { +this.params.colorNeg = this.params.colorNegLCAO = rgb; +} else { +this.params.colorRgb = 2147483647; +}return true; +}if ("monteCarloCount" === propertyName) { +this.params.psi_monteCarloCount = (value).intValue(); +return true; +}if ("rangeAll" === propertyName) { +this.params.rangeAll = true; +return true; +}if ("rangeSelected" === propertyName) { +this.params.rangeSelected = true; +return true; +}if ("red" === propertyName) { +this.params.valueMappedToRed = (value).floatValue(); +return true; +}if ("blue" === propertyName) { +this.params.valueMappedToBlue = (value).floatValue(); +if (this.params.valueMappedToRed > this.params.valueMappedToBlue) { +var f = this.params.valueMappedToRed; +this.params.valueMappedToRed = this.params.valueMappedToBlue; +this.params.valueMappedToBlue = f; +this.params.isColorReversed = !this.params.isColorReversed; +}this.params.rangeDefined = true; +this.params.rangeAll = false; +return true; +}if ("reverseColor" === propertyName) { +this.params.isColorReversed = true; +return true; +}if ("setColorScheme" === propertyName) { +this.getSurfaceSets(); +this.params.colorBySets = true; +this.mapSurface(); +return true; +}if ("center" === propertyName) { +this.params.center.setT(value); +return true; +}if ("origin" === propertyName) { +this.params.origin = value; +return true; +}if ("step" === propertyName) { +this.params.steps = value; +return true; +}if ("modelInvRotation" === propertyName) { +this.params.modelInvRotation = value; +return true; +}if ("point" === propertyName) { +this.params.points = value; +return true; +}if ("withinDistance" === propertyName) { +this.params.distance = (value).floatValue(); +return true; +}if ("withinPoint" === propertyName) { +this.params.point = value; +return true; +}if ("progressive" === propertyName) { +this.params.isXLowToHigh = true; +return true; +}if ("phase" === propertyName) { +var color = value; +this.params.isCutoffAbsolute = true; +this.params.colorBySign = true; +this.params.colorByPhase = true; +this.params.colorPhase = J.jvxl.readers.SurfaceReader.getColorPhaseIndex(color); +if (this.params.colorPhase < 0) { +JU.Logger.warn(" invalid color phase: " + color); +this.params.colorPhase = 0; +}this.params.colorByPhase = this.params.colorPhase != 0; +if (this.params.state >= 2) { +this.params.dataType = this.params.surfaceType; +this.params.state = 3; +this.params.isBicolorMap = true; +this.surfaceReader.applyColorScale(); +}return true; +}if ("radius" === propertyName) { +JU.Logger.info("solvent probe radius set to " + value); +this.params.atomRadiusData = value; +return true; +}if ("envelopeRadius" === propertyName) { +this.params.envelopeRadius = (value).floatValue(); +return true; +}if ("cavityRadius" === propertyName) { +this.params.cavityRadius = (value).floatValue(); +return true; +}if ("cavity" === propertyName) { +this.params.isCavity = true; +return true; +}if ("doFullMolecular" === propertyName) { +this.params.doFullMolecular = true; +return true; +}if ("pocket" === propertyName) { +this.params.pocket = value; +this.params.fullyLit = this.params.pocket.booleanValue(); +return true; +}if ("minset" === propertyName) { +this.params.minSet = (value).intValue(); +return true; +}if ("maxset" === propertyName) { +this.params.maxSet = (value).intValue(); +return true; +}if ("plane" === propertyName) { +this.params.setPlane(value); +return true; +}if ("contour" === propertyName) { +this.params.isContoured = true; +var n; +if (JU.AU.isAF(value)) { +this.params.contoursDiscrete = value; +this.params.nContours = this.params.contoursDiscrete.length; +} else if (Clazz.instanceOf(value,"JU.P3")) { +var pt = this.params.contourIncrements = value; +var from = pt.x; +var to = pt.y; +var step = pt.z; +if (step <= 0) step = 1; +n = 0; +for (var p = from; p <= to + step / 10; p += step, n++) { +} +this.params.contoursDiscrete = Clazz.newFloatArray (n, 0); +var p = from; +for (var i = 0; i < n; i++, p += step) { +this.params.contoursDiscrete[i] = p; +} +this.params.nContours = n; +} else { +n = (value).intValue(); +this.params.thisContour = 0; +if (n == 0) this.params.nContours = 9; + else if (n > 0) this.params.nContours = n; + else this.params.thisContour = -n; +}return true; +}if ("colorDiscrete" === propertyName) { +this.params.contourColixes = value; +return true; +}if ("colorDensity" === propertyName) { +this.params.colorDensity = true; +if (value != null) this.params.pointSize = (value).floatValue(); +return false; +}if ("fullPlane" === propertyName) { +this.params.contourFromZero = !(value).booleanValue(); +return true; +}if ("mapLattice" === propertyName) { +this.params.mapLattice = value; +return true; +}if ("extendGrid" === propertyName) { +this.params.extendGrid = (value).floatValue(); +return true; +}if ("property" === propertyName) { +this.params.dataType = 1208; +this.params.theProperty = value; +this.mapSurface(); +return true; +}if ("sphere" === propertyName) { +this.params.setSphere((value).floatValue(), false); +this.readerData = Float.$valueOf(this.params.distance); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("geodesic" === propertyName) { +this.params.setSphere((value).floatValue(), true); +this.readerData = Float.$valueOf(this.params.distance); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("ellipsoid" === propertyName) { +if (Clazz.instanceOf(value,"JU.P4")) this.params.setEllipsoidP4(value); + else if (JU.AU.isAF(value)) this.params.setEllipsoidAF(value); + else return true; +this.readerData = Float.$valueOf(this.params.distance); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("ellipsoid3" === propertyName) { +this.params.setEllipsoidAF(value); +this.readerData = Float.$valueOf(this.params.distance); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("lp" === propertyName) { +this.params.setLp(value); +this.readerData = Clazz.newFloatArray(-1, [3, 2, 0, 15, 0]); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("rad" === propertyName) { +this.params.setRadical(value); +this.readerData = Clazz.newFloatArray(-1, [3, 2, 0, 15, 0]); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("lobe" === propertyName) { +this.params.setLobe(value); +this.readerData = Clazz.newFloatArray(-1, [3, 2, 0, 15, 0]); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("hydrogenOrbital" === propertyName) { +if (!this.params.setAtomicOrbital(value)) { +this.isValid = false; +return true; +}this.readerData = Clazz.newFloatArray(-1, [this.params.psi_n, this.params.psi_l, this.params.psi_m, this.params.psi_Znuc, this.params.psi_monteCarloCount]); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.processState(); +return true; +}if ("functionXY" === propertyName) { +this.params.setFunctionXY(value); +if (this.params.isContoured) this.volumeDataTemp.setPlaneParameters(this.params.thePlane == null ? this.params.thePlane = JU.P4.new4(0, 0, 1, 0) : this.params.thePlane); +if ((this.params.functionInfo.get(0)).indexOf("_xyz") >= 0) this.getFunctionZfromXY(); +this.processState(); +return true; +}if ("functionXYZ" === propertyName) { +this.params.setFunctionXYZ(value); +this.processState(); +return true; +}if ("lcaoType" === propertyName) { +this.params.setLcao(value, this.colorPtr); +return true; +}if ("lcaoCartoonCenter" === propertyName) { +if (++this.params.state != 2) return true; +if (Float.isNaN(this.params.center.x)) this.params.center.setT(value); +return false; +}if ("molecular" === propertyName || "solvent" === propertyName || "sasurface" === propertyName || "nomap" === propertyName) { +this.params.setSolvent(propertyName, (value).floatValue()); +if (!this.params.isSilent) JU.Logger.info(this.params.calculationType); +this.processState(); +return true; +}if ("moData" === propertyName) { +this.params.moData = value; +return true; +}if ("mepCalcType" === propertyName) { +this.params.mep_calcType = (value).intValue(); +return true; +}if ("mep" === propertyName) { +this.params.setMep(value, false); +this.processState(); +return true; +}if ("mlp" === propertyName) { +this.params.setMep(value, true); +this.processState(); +return true; +}if ("nci" === propertyName) { +var isPromolecular = (value).booleanValue(); +this.params.setNci(isPromolecular); +if (isPromolecular) this.processState(); +return true; +}if ("calculationType" === propertyName) { +this.params.calculationType = value; +return true; +}if ("charges" === propertyName) { +this.params.theProperty = value; +return true; +}if ("randomSeed" === propertyName) { +this.params.randomSeed = (value).intValue(); +return true; +}if ("molecularOrbital" === propertyName) { +var iMo = 0; +var linearCombination = null; +if (Clazz.instanceOf(value, Integer)) { +iMo = (value).intValue(); +} else { +linearCombination = value; +}this.params.setMO(iMo, linearCombination); +JU.Logger.info(this.params.calculationType); +this.processState(); +return true; +}if ("fileType" === propertyName) { +this.fileType = value; +return true; +}if ("fileName" === propertyName) { +this.params.fileName = value; +return true; +}if ("filesData" === propertyName) { +this.params.filesData = value; +return true; +}if ("outputChannel" === propertyName) { +this.out = value; +return true; +}if ("readFile" === propertyName) { +if ((this.surfaceReader = this.setFileData(this.atomDataServer, value)) == null) { +JU.Logger.error("Could not set the surface data"); +return true; +}this.surfaceReader.setOutputChannel(this.out); +this.generateSurface(); +return true; +}if ("mapColor" === propertyName) { +if ((this.surfaceReader = this.setFileData(this.atomDataServer, value)) == null) { +JU.Logger.error("Could not set the mapping data"); +return true; +}this.surfaceReader.setOutputChannel(this.out); +this.mapSurface(); +return true; +}if ("getSurfaceSets" === propertyName) { +this.getSurfaceSets(); +return true; +}if ("periodic" === propertyName) { +this.params.isPeriodic = true; +}return false; +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "newReader", +function(name){ +var sr = J.jvxl.readers.SurfaceGenerator.getInterface(name); +if (sr != null) sr.init(this); +return sr; +}, "~S"); +Clazz.defineMethod(c$, "newReaderBr", +function(name, br){ +var sr = J.jvxl.readers.SurfaceGenerator.getInterface(name); +if (sr != null) sr.init2(this, br); +return sr; +}, "~S,java.io.BufferedReader"); +c$.getInterface = Clazz.defineMethod(c$, "getInterface", +function(name){ +try { +var x = Clazz._4Name("J.jvxl.readers." + name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Interface.java Error creating instance for " + name + ": \n" + e.toString()); +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz.defineMethod(c$, "getSurfaceSets", +function(){ +if (this.meshDataServer == null) { +this.meshData.getSurfaceSet(); +} else { +this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.getSurfaceSet(); +this.meshDataServer.fillMeshData(this.meshData, 3, null); +}}); +Clazz.defineMethod(c$, "processState", +function(){ +if (this.params.state == 1 && this.params.thePlane != null) this.params.state++; +if (this.params.state >= 2) { +this.mapSurface(); +} else { +this.generateSurface(); +}}); +Clazz.defineMethod(c$, "setReader", +function(){ +this.readerData = null; +if (this.surfaceReader != null) return !this.surfaceReader.vertexDataOnly; +switch (this.params.dataType) { +case 1207: +this.surfaceReader = this.newReader("IsoPlaneReader"); +break; +case 1208: +this.surfaceReader = this.newReader("AtomPropertyMapper"); +break; +case 1328: +case 1329: +this.readerData = (this.params.dataType == 1328 ? "Mep" : "Mlp"); +if (this.params.state == 3) { +this.surfaceReader = this.newReader("AtomPropertyMapper"); +} else { +this.surfaceReader = this.newReader("Iso" + this.readerData + "Reader"); +}break; +case 1334: +this.surfaceReader = this.newReader("IsoIntersectFileReader"); +break; +case 1333: +this.surfaceReader = this.newReader("IsoIntersectAtomReader"); +break; +case 1195: +case 1203: +case 1196: +this.surfaceReader = this.newReader("IsoSolventReader"); +break; +case 1844: +case 1837: +this.surfaceReader = this.newReader("IsoMOReader"); +break; +case 8: +this.surfaceReader = this.newReader("IsoFxyReader"); +break; +case 9: +this.surfaceReader = this.newReader("IsoFxyzReader"); +break; +} +if (JU.Logger.debugging) JU.Logger.info("Using surface reader " + this.surfaceReader); +if (this.params.isSilent && this.surfaceReader != null) this.surfaceReader.isQuiet = true; +return true; +}); +Clazz.defineMethod(c$, "generateSurface", +function(){ +if (++this.params.state != 2) return; +this.setReader(); +if (this.params.sbOut == null) this.params.sbOut = new JU.SB(); +this.jvxlData.sbOut = this.params.sbOut; +var haveMeshDataServer = (this.meshDataServer != null); +if (this.params.colorBySign) this.params.isBicolorMap = true; +if (this.surfaceReader == null) { +JU.Logger.error("surfaceReader is null for " + this.params.dataType); +return; +}if (!this.surfaceReader.createIsosurface(false)) { +JU.Logger.error("Could not create isosurface"); +this.params.cutoff = NaN; +this.params.cutoffRange = null; +this.surfaceReader.closeReader(); +return; +}if (this.params.probes != null) { +for (var i = this.params.probeValues.length; --i >= 0; ) { +this.params.probeValues[i] = this.surfaceReader.getValueAtPoint(this.params.probes[i], false); +} +}if (this.params.pocket != null && haveMeshDataServer) this.surfaceReader.selectPocket(!this.params.pocket.booleanValue()); +if (this.params.minSet > 0) this.surfaceReader.excludeMinimumSet(); +if (this.params.maxSet > 0) this.surfaceReader.excludeMaximumSet(); +if (this.params.slabInfo != null) this.surfaceReader.slabIsosurface(this.params.slabInfo); +if (haveMeshDataServer && this.meshDataServer.notifySurfaceGenerationCompleted()) this.surfaceReader.hasColorData = false; +if (this.jvxlData.thisSet != null) this.getSurfaceSets(); +if (this.jvxlData.jvxlDataIs2dContour) { +this.surfaceReader.colorIsosurface(); +this.params.state = 3; +}if (this.jvxlData.jvxlDataIsColorDensity) { +this.params.state = 3; +}if (this.params.colorBySign || this.params.isBicolorMap) { +this.params.state = 3; +this.surfaceReader.applyColorScale(); +}if (this.jvxlData.vertexColorMap != null) { +this.jvxlData.vertexColorMap = null; +this.surfaceReader.hasColorData = false; +}this.surfaceReader.jvxlUpdateInfo(); +this.marchingSquares = this.surfaceReader.marchingSquares; +this.surfaceReader.discardTempData(false); +this.params.mappedDataMin = 3.4028235E38; +this.surfaceReader.closeReader(); +if (this.params.state != 3 && (this.surfaceReader.hasColorData || this.params.colorDensity)) { +this.params.state = 3; +this.colorIsosurface(); +}this.surfaceReader = null; +}); +Clazz.defineMethod(c$, "mapSurface", +function(){ +if (this.params.state == 1 && this.params.thePlane != null) this.params.state++; +if (++this.params.state < 3) return; +if (!this.setReader()) return; +if (this.params.isPeriodic) this.surfaceReader.volumeData.isPeriodic = true; +if (this.params.thePlane != null) { +var isSquared = this.params.isSquared; +this.params.isSquared = false; +this.params.cutoff = 0; +this.params.cutoffRange = null; +this.surfaceReader.volumeData.setMappingPlane(this.params.thePlane); +this.surfaceReader.createIsosurface(!this.params.isPeriodic); +this.surfaceReader.volumeData.setMappingPlane(null); +if (this.meshDataServer != null) this.meshDataServer.notifySurfaceGenerationCompleted(); +if (this.params.dataType == 1207) { +this.surfaceReader.discardTempData(true); +return; +}this.params.isSquared = isSquared; +this.params.mappedDataMin = 3.4028235E38; +this.surfaceReader.readVolumeData(true); +if (this.params.mapLattice != null) this.surfaceReader.volumeData.isPeriodic = true; +} else if (!this.params.colorBySets && !this.params.colorDensity) { +this.surfaceReader.readAndSetVolumeParameters(true); +this.params.mappedDataMin = 3.4028235E38; +this.surfaceReader.readVolumeData(true); +}this.colorIsosurface(); +this.surfaceReader.closeReader(); +this.surfaceReader = null; +}); +Clazz.defineMethod(c$, "colorIsosurface", +function(){ +this.surfaceReader.colorIsosurface(); +this.surfaceReader.jvxlUpdateInfo(); +this.surfaceReader.updateTriangles(); +this.surfaceReader.discardTempData(true); +if (this.meshDataServer != null) this.meshDataServer.notifySurfaceMappingCompleted(); +}); +Clazz.defineMethod(c$, "getProperty", +function(property, index){ +if (property === "jvxlFileData") return J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData, null, this.params.title, "", true, index, null, null); +if (property === "jvxlFileInfo") return J.jvxl.data.JvxlCoder.jvxlGetInfo(this.jvxlData); +return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "setFileData", +function(vwr, value){ +var fileType = this.fileType; +this.fileType = null; +if (Clazz.instanceOf(value,"java.util.Map")) { +var map = value; +if (map.containsKey("__pymolSurfaceData__")) { +this.readerData = map; +return this.newReaderBr("PyMOLMeshReader", null); +}value = map.get("volumeData"); +}if (Clazz.instanceOf(value,"J.jvxl.data.VolumeData")) { +this.volumeDataTemp = value; +return this.newReader("VolumeDataReader"); +}var data = null; +if ((typeof(value)=='string')) { +data = value; +value = JU.Rdr.getBR(value); +}if (Clazz.instanceOf(value,Array)) { +var a = (value)[0]; +var b = new Array(a.length); +for (var i = 0; i < a.length; i++) { +this.fileType = fileType; +b[i] = this.setFileData(vwr, a[i]); +} +(value)[0] = b; +this.readerData = value; +return this.newReader("IsoIntersectGridReader"); +}var br = value; +if (fileType == null) fileType = JV.FileManager.determineSurfaceFileType(br); +if (fileType != null && fileType.startsWith("UPPSALA")) { +var fname = this.params.fileName; +fname = fname.substring(0, fname.indexOf("/", 10)); +fname += JU.PT.getQuotedStringAt(fileType, fileType.indexOf("A HREF") + 1); +this.params.fileName = fname; +value = this.atomDataServer.getBufferedInputStream(fname); +if (value == null) { +JU.Logger.error("Isosurface: could not open file " + fname); +return null; +}try { +br = JU.Rdr.getBufferedReader(value, null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +fileType = JV.FileManager.determineSurfaceFileType(br); +}if (fileType == null) fileType = "UNKNOWN"; +JU.Logger.info("data file type was determined to be " + fileType); +if (fileType.equals("Jvxl+")) return this.newReaderBr("JvxlReader", br); +this.readerData = Clazz.newArray(-1, [this.params.fileName, data]); +if ("MRC DELPHI DSN6".indexOf(fileType.toUpperCase()) >= 0) { +fileType += "Binary"; +}return this.newReaderBr(fileType + "Reader", br); +}, "JV.Viewer,~O"); +Clazz.defineMethod(c$, "getReaderData", +function(){ +var o = this.readerData; +this.readerData = null; +return o; +}); +Clazz.defineMethod(c$, "initializeIsosurface", +function(){ +this.params.initialize(); +this.colorPtr = 0; +this.surfaceReader = null; +this.marchingSquares = null; +this.initState(); +}); +Clazz.defineMethod(c$, "initState", +function(){ +this.params.state = 1; +this.params.dataType = this.params.surfaceType = 0; +}); +Clazz.defineMethod(c$, "setLcao", +function(){ +this.params.colorPos = this.params.colorPosLCAO; +this.params.colorNeg = this.params.colorNegLCAO; +return this.params.lcaoType; +}); +Clazz.defineMethod(c$, "getFunctionZfromXY", +function(){ +var origin = this.params.functionInfo.get(1); +var counts = Clazz.newIntArray (3, 0); +var nearest = Clazz.newIntArray (3, 0); +var vectors = new Array(3); +for (var i = 0; i < 3; i++) { +var info = this.params.functionInfo.get(i + 2); +counts[i] = Math.abs(Clazz.floatToInt(info.x)); +vectors[i] = JU.V3.new3(info.y, info.z, info.w); +} +var nx = counts[0]; +var ny = counts[1]; +var pt = new JU.P3(); +var pta = new JU.P3(); +var ptb = new JU.P3(); +var ptc = new JU.P3(); +var data = this.params.functionInfo.get(5); +var data2 = Clazz.newFloatArray (nx, ny, 0); +var d; +for (var i = 0; i < nx; i++) for (var j = 0; j < ny; j++) { +pt.scaleAdd2(i, vectors[0], origin); +pt.scaleAdd2(j, vectors[1], pt); +var dist = J.jvxl.readers.SurfaceGenerator.findNearestThreePoints(pt.x, pt.y, data, nearest); +pta.set((d = data[nearest[0]])[0], d[1], d[2]); +if (dist < 0.00001) { +pt.z = d[2]; +} else { +ptb.set((d = data[nearest[1]])[0], d[1], d[2]); +ptc.set((d = data[nearest[2]])[0], d[1], d[2]); +pt.z = this.distanceVerticalToPlane(pt.x, pt.y, pta, ptb, ptc); +}data2[i][j] = pt.z; +} + +this.params.functionInfo.set(5, data2); +}); +Clazz.defineMethod(c$, "distanceVerticalToPlane", +function(x, y, pta, ptb, ptc){ +var d = JU.Measure.getDirectedNormalThroughPoints(pta, ptb, ptc, this.ptRef, this.vNorm, this.vAB); +return (this.vNorm.x * x + this.vNorm.y * y + d) / -this.vNorm.z; +}, "~N,~N,JU.P3,JU.P3,JU.P3"); +c$.findNearestThreePoints = Clazz.defineMethod(c$, "findNearestThreePoints", +function(x, y, xyz, result){ +var d; +var dist1; +var dist2; +var dist3; +var i1; +var i2; +var i3; +i1 = i2 = i3 = -1; +dist1 = dist2 = dist3 = 3.4028235E38; +for (var i = xyz.length; --i >= 0; ) { +d = (d = xyz[i][0] - x) * d + (d = xyz[i][1] - y) * d; +if (d < dist1) { +dist3 = dist2; +dist2 = dist1; +dist1 = d; +i3 = i2; +i2 = i1; +i1 = i; +} else if (d < dist2) { +dist3 = dist2; +dist2 = d; +i3 = i2; +i2 = i; +} else if (d < dist3) { +dist3 = d; +i3 = i; +}} +result[0] = i1; +result[1] = i2; +result[2] = i3; +return dist1; +}, "~N,~N,~A,~A"); +Clazz.defineMethod(c$, "addRequiredFile", +function(fileName){ +if (this.meshDataServer == null) return; +this.meshDataServer.addRequiredFile(fileName); +}, "~S"); +Clazz.defineMethod(c$, "setRequiredFile", +function(oldName, fileName){ +if (this.meshDataServer == null) return; +this.meshDataServer.setRequiredFile(oldName, fileName); +}, "~S,~S"); +Clazz.defineMethod(c$, "log", +function(msg){ +if (this.atomDataServer == null) System.out.println(msg); + else this.atomDataServer.log(msg); +}, "~S"); +Clazz.defineMethod(c$, "setOutputChannel", +function(binaryDoc, out){ +if (this.meshDataServer == null) return; +this.meshDataServer.setOutputChannel(binaryDoc, out); +}, "javajs.api.GenericBinaryDocument,JU.OC"); +Clazz.defineMethod(c$, "fillAtomData", +function(atomData, mode){ +if ((mode & 2) != 0 && atomData.bsSelected != null) { +if (this.bsVdw == null) this.bsVdw = new JU.BS(); +this.bsVdw.or(atomData.bsSelected); +}this.atomDataServer.fillAtomData(atomData, mode); +}, "J.atomdata.AtomData,~N"); +Clazz.defineMethod(c$, "getOriginVaVbVc", +function(){ +return (this.surfaceReader.volumeData == null ? null : this.surfaceReader.volumeData.oabc); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceReader.js new file mode 100755 index 000000000000..14aaf0e698d7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/SurfaceReader.js @@ -0,0 +1,649 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.api.VertexDataServer", "JU.P3"], "J.jvxl.readers.SurfaceReader", ["JU.AU", "$.BS", "J.jvxl.calc.MarchingCubes", "$.MarchingSquares", "J.jvxl.data.JvxlCoder", "$.MeshData", "JU.BoxInfo", "$.C", "$.ColorEncoder", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sg = null; +this.meshDataServer = null; +this.params = null; +this.meshData = null; +this.jvxlData = null; +this.volumeData = null; +this.edgeData = null; +this.haveSurfaceAtoms = false; +this.allowSigma = false; +this.isProgressive = false; +this.isXLowToHigh = false; +this.assocCutoff = 0.3; +this.isQuiet = false; +this.isPeriodic = false; +this.vertexDataOnly = false; +this.hasColorData = false; +this.dataMin = 3.4028235E38; +this.dataMax = -3.4028235E38; +this.dataMean = 0; +this.xyzMin = null; +this.xyzMax = null; +this.center = null; +this.anisotropy = null; +this.isAnisotropic = false; +this.eccentricityMatrix = null; +this.eccentricityMatrixInverse = null; +this.isEccentric = false; +this.eccentricityScale = 0; +this.eccentricityRatio = 0; +this.edgeCount = 0; +this.volumetricOrigin = null; +this.volumetricVectors = null; +this.voxelCounts = null; +this.voxelData = null; +this.nBytes = 0; +this.nDataPoints = 0; +this.nPointsX = 0; +this.nPointsY = 0; +this.nPointsZ = 0; +this.isJvxl = false; +this.edgeFractionBase = 0; +this.edgeFractionRange = 0; +this.colorFractionBase = 0; +this.colorFractionRange = 0; +this.jvxlFileHeaderBuffer = null; +this.fractionData = null; +this.jvxlEdgeDataRead = ""; +this.jvxlColorDataRead = ""; +this.jvxlVoxelBitSet = null; +this.jvxlDataIsColorMapped = false; +this.jvxlDataIsPrecisionColor = false; +this.jvxlDataIs2dContour = false; +this.jvxlDataIsColorDensity = false; +this.jvxlCutoff = 0; +this.jvxlCutoffRange = null; +this.jvxlNSurfaceInts = 0; +this.cJvxlEdgeNaN = '\0'; +this.contourVertexCount = 0; +this.marchingSquares = null; +this.marchingCubes = null; +this.yzPlanes = null; +this.yzCount = 0; +this.qpc = null; +this.ptTemp = null; +this.minMax = null; +this.haveSetAnisotropy = false; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "SurfaceReader", null, J.jvxl.api.VertexDataServer); +Clazz.prepareFields (c$, function(){ +this.ptTemp = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "initSR", +function(sg){ +this.sg = sg; +this.params = sg.params; +this.assocCutoff = this.params.assocCutoff; +this.isXLowToHigh = this.params.isXLowToHigh; +this.center = this.params.center; +this.anisotropy = this.params.anisotropy; +this.isAnisotropic = this.params.isAnisotropic; +this.eccentricityMatrix = this.params.eccentricityMatrix; +this.eccentricityMatrixInverse = this.params.eccentricityMatrixInverse; +this.isEccentric = this.params.isEccentric; +this.eccentricityScale = this.params.eccentricityScale; +this.eccentricityRatio = this.params.eccentricityRatio; +this.marchingSquares = sg.marchingSquares; +this.meshData = sg.meshData; +this.jvxlData = sg.jvxlData; +this.setVolumeDataV(sg.volumeDataTemp); +this.meshDataServer = sg.meshDataServer; +this.cJvxlEdgeNaN = String.fromCharCode(125); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.defineMethod(c$, "setOutputChannel", +function(out){ +}, "JU.OC"); +Clazz.defineMethod(c$, "newVoxelDataCube", +function(){ +this.volumeData.setVoxelDataAsArray(this.voxelData = Clazz.newFloatArray (this.nPointsX, this.nPointsY, this.nPointsZ, 0)); +}); +Clazz.defineMethod(c$, "setVolumeDataV", +function(v){ +this.nBytes = 0; +this.volumetricOrigin = v.volumetricOrigin; +this.volumetricVectors = v.volumetricVectors; +this.voxelCounts = v.voxelCounts; +this.voxelData = v.getVoxelData(); +this.volumeData = v; +}, "J.jvxl.data.VolumeData"); +Clazz.defineMethod(c$, "jvxlUpdateInfo", +function(){ +this.jvxlData.jvxlUpdateInfo(this.params.title, this.nBytes); +}); +Clazz.defineMethod(c$, "readAndSetVolumeParameters", +function(isMapData){ +if (!this.readVolumeParameters(isMapData)) return false; +if (this.vertexDataOnly) return true; +return (this.volumeData.setUnitVectors()); +}, "~B"); +Clazz.defineMethod(c$, "createIsosurface", +function(justForPlane){ +this.resetIsosurface(); +if (this.params.showTiming) JU.Logger.startTimer("isosurface creation"); +this.jvxlData.cutoff = NaN; +this.jvxlData.cutoffRange = null; +if (!this.readAndSetVolumeParameters(justForPlane)) return false; +if (!justForPlane && !Float.isNaN(this.params.sigma) && !this.allowSigma) { +if (this.params.sigma > 0) JU.Logger.error("Reader does not support SIGMA option -- using cutoff 1.6"); +this.params.cutoff = 1.6; +}if (this.params.sigma < 0) this.params.sigma = -this.params.sigma; +this.nPointsX = this.voxelCounts[0]; +this.nPointsY = this.voxelCounts[1]; +this.nPointsZ = this.voxelCounts[2]; +this.jvxlData.isSlabbable = ((this.params.dataType & 1024) != 0); +this.jvxlData.insideOut = this.params.isInsideOut(); +this.jvxlData.isBicolorMap = this.params.isBicolorMap; +this.jvxlData.nPointsX = this.nPointsX; +this.jvxlData.nPointsY = this.nPointsY; +this.jvxlData.nPointsZ = this.nPointsZ; +this.jvxlData.jvxlVolumeDataXml = this.volumeData.xmlData; +this.jvxlData.voxelVolume = this.volumeData.voxelVolume; +if (justForPlane) { +this.volumeData.setMappingPlane(this.params.thePlane); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.params.setMapRanges(this, false); +this.generateSurfaceData(); +this.volumeData.setMappingPlane(null); +} else { +if (!this.readVolumeData(false)) return false; +this.generateSurfaceData(); +}if (this.jvxlFileHeaderBuffer == null) { +this.jvxlData.jvxlFileTitle = ""; +this.jvxlData.jvxlFileSource = null; +this.jvxlData.jvxlFileMessage = null; +} else { +var s = this.jvxlFileHeaderBuffer.toString(); +var i = s.indexOf('\n', s.indexOf('\n', s.indexOf('\n') + 1) + 1) + 1; +this.jvxlData.jvxlFileTitle = s.substring(0, i); +this.jvxlData.jvxlFileSource = this.params.fileName; +}if (this.params.contactPair == null) this.setBBoxAll(); +this.jvxlData.isValid = (this.xyzMin.x != 3.4028235E38); +if (!this.params.isSilent) { +if (!this.jvxlData.isValid) JU.Logger.error("no isosurface points were found!"); + else JU.Logger.info("boundbox corners " + JU.Escape.eP(this.xyzMin) + " " + JU.Escape.eP(this.xyzMax)); +}this.jvxlData.boundingBox = Clazz.newArray(-1, [this.xyzMin, this.xyzMax]); +this.jvxlData.dataMin = this.dataMin; +this.jvxlData.dataMax = this.dataMax; +this.jvxlData.cutoffRange = (this.isJvxl ? this.jvxlCutoffRange : this.params.cutoffRange); +this.jvxlData.cutoff = (this.jvxlCutoffRange != null ? this.jvxlData.cutoffRange[0] : this.isJvxl ? this.jvxlCutoff : this.params.cutoff); +this.jvxlData.isCutoffAbsolute = this.params.isCutoffAbsolute; +this.jvxlData.isModelConnected = this.params.isModelConnected; +this.jvxlData.pointsPerAngstrom = 1 / this.volumeData.volumetricVectorLengths[0]; +this.jvxlData.jvxlColorData = ""; +this.jvxlData.jvxlPlane = this.params.thePlane; +this.jvxlData.jvxlEdgeData = this.edgeData; +this.jvxlData.isBicolorMap = this.params.isBicolorMap; +this.jvxlData.isContoured = this.params.isContoured; +this.jvxlData.colorDensity = this.params.colorDensity; +this.jvxlData.pointSize = this.params.pointSize; +if (this.jvxlData.vContours != null) this.params.nContours = this.jvxlData.vContours.length; +this.jvxlData.nContours = (this.params.contourFromZero ? this.params.nContours : -1 - this.params.nContours); +this.jvxlData.thisContour = this.params.thisContour; +this.jvxlData.nEdges = this.edgeCount; +this.jvxlData.edgeFractionBase = this.edgeFractionBase; +this.jvxlData.edgeFractionRange = this.edgeFractionRange; +this.jvxlData.colorFractionBase = this.colorFractionBase; +this.jvxlData.colorFractionRange = this.colorFractionRange; +this.jvxlData.jvxlDataIs2dContour = this.jvxlDataIs2dContour; +this.jvxlData.jvxlDataIsColorMapped = this.jvxlDataIsColorMapped; +this.jvxlData.jvxlDataIsColorDensity = this.jvxlDataIsColorDensity; +this.jvxlData.isXLowToHigh = this.isXLowToHigh; +this.jvxlData.vertexDataOnly = this.vertexDataOnly; +this.jvxlData.saveVertexCount = 0; +if (this.jvxlDataIsColorMapped || this.jvxlData.nVertexColors > 0) { +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshDataServer.fillMeshData(this.meshData, 2, null); +}this.jvxlData.jvxlColorData = this.readColorData(); +this.updateSurfaceData(); +if (this.meshDataServer != null) this.meshDataServer.notifySurfaceMappingCompleted(); +}if (this.params.showTiming) JU.Logger.checkTimer("isosurface creation", false); +return true; +}, "~B"); +Clazz.defineMethod(c$, "resetIsosurface", +function(){ +this.meshData = new J.jvxl.data.MeshData(); +this.xyzMin = this.xyzMax = null; +this.jvxlData.isBicolorMap = this.params.isBicolorMap; +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(null, 0, null); +this.contourVertexCount = 0; +if (this.params.cutoff == 3.4028235E38) this.params.cutoff = 0.02; +this.jvxlData.jvxlSurfaceData = ""; +this.jvxlData.jvxlEdgeData = ""; +this.jvxlData.jvxlColorData = ""; +this.edgeCount = 0; +this.edgeFractionBase = 35; +this.edgeFractionRange = 90; +this.colorFractionBase = 35; +this.colorFractionRange = 90; +this.params.mappedDataMin = 3.4028235E38; +}); +Clazz.defineMethod(c$, "discardTempData", +function(discardAll){ +this.discardTempDataSR(discardAll); +}, "~B"); +Clazz.defineMethod(c$, "discardTempDataSR", +function(discardAll){ +if (!discardAll) return; +this.voxelData = null; +this.sg.marchingSquares = this.marchingSquares = null; +this.marchingCubes = null; +}, "~B"); +Clazz.defineMethod(c$, "initializeVolumetricData", +function(){ +this.nPointsX = this.voxelCounts[0]; +this.nPointsY = this.voxelCounts[1]; +this.nPointsZ = this.voxelCounts[2]; +this.setVolumeDataV(this.volumeData); +}); +Clazz.defineMethod(c$, "gotoAndReadVoxelData", +function(isMapData){ +this.initializeVolumetricData(); +if (this.nPointsX > 0 && this.nPointsY > 0 && this.nPointsZ > 0) try { +this.gotoData(this.params.fileIndex - 1, this.nPointsX * this.nPointsY * this.nPointsZ); +this.readSurfaceData(isMapData); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return false; +} else { +throw e; +} +} +return true; +}, "~B"); +Clazz.defineMethod(c$, "gotoData", +function(n, nPoints){ +}, "~N,~N"); +Clazz.defineMethod(c$, "readColorData", +function(){ +if (this.jvxlData.vertexColors == null) return ""; +var vertexCount = this.jvxlData.vertexCount; +var colixes = this.meshData.vcs; +var vertexValues = this.meshData.vvs; +if (colixes == null || colixes.length < vertexCount) this.meshData.vcs = colixes = Clazz.newShortArray (vertexCount, 0); +if (vertexValues == null || vertexValues.length < vertexCount) this.meshData.vvs = vertexValues = Clazz.newFloatArray (vertexCount, 0); +for (var i = 0; i < vertexCount; i++) colixes[i] = JU.C.getColix(this.jvxlData.vertexColors[i]); + +return "-"; +}); +Clazz.overrideMethod(c$, "getPlane", +function(x){ +return this.getPlaneSR(x); +}, "~N"); +Clazz.defineMethod(c$, "getPlaneSR", +function(x){ +if (this.yzCount == 0) this.initPlanes(); +if (this.qpc != null) this.qpc.getPlane(x, this.yzPlanes[x % 2]); +return this.yzPlanes[x % 2]; +}, "~N"); +Clazz.defineMethod(c$, "initPlanes", +function(){ +this.yzCount = this.nPointsY * this.nPointsZ; +if (!this.isQuiet) JU.Logger.info("reading data progressively -- yzCount = " + this.yzCount); +this.yzPlanes = JU.AU.newFloat2(2); +this.yzPlanes[0] = Clazz.newFloatArray (this.yzCount, 0); +this.yzPlanes[1] = Clazz.newFloatArray (this.yzCount, 0); +}); +Clazz.overrideMethod(c$, "getValue", +function(x, y, z, ptyz){ +return this.getValue2(x, y, z, ptyz); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getValue2", +function(x, y, z, ptyz){ +return (this.yzPlanes == null ? this.voxelData[x][y][z] : this.yzPlanes[x % 2][ptyz]); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "generateSurfaceData", +function(){ +this.edgeData = ""; +if (this.vertexDataOnly) { +try { +this.readSurfaceData(false); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e.toString()); +JU.Logger.error("Exception in SurfaceReader::readSurfaceData: " + e.toString()); +} else { +throw e; +} +} +return; +}this.contourVertexCount = 0; +var contourType = -1; +this.marchingSquares = null; +if (this.params.thePlane != null || this.params.isContoured) { +this.marchingSquares = new J.jvxl.calc.MarchingSquares(this, this.volumeData, this.params.thePlane, this.params.contoursDiscrete, this.params.nContours, this.params.thisContour, this.params.contourFromZero); +contourType = this.marchingSquares.contourType; +this.marchingSquares.setMinMax(this.params.valueMappedToRed, this.params.valueMappedToBlue); +}this.params.contourType = contourType; +this.params.isXLowToHigh = this.isXLowToHigh; +this.marchingCubes = new J.jvxl.calc.MarchingCubes(this, this.volumeData, this.params, this.jvxlVoxelBitSet); +var data = this.marchingCubes.getEdgeData(); +if (this.params.thePlane == null) this.edgeData = data; +this.jvxlData.setSurfaceInfoFromBitSetPts(this.marchingCubes.bsVoxels, this.params.thePlane, this.params.mapLattice); +this.jvxlData.jvxlExcluded = this.params.bsExcluded; +if (this.isJvxl) this.edgeData = this.jvxlEdgeDataRead; +this.postProcessVertices(); +}); +Clazz.defineMethod(c$, "postProcessVertices", +function(){ +}); +Clazz.overrideMethod(c$, "getSurfacePointIndexAndFraction", +function(cutoff, isCutoffAbsolute, x, y, z, offset, vA, vB, valueA, valueB, pointA, edgeVector, isContourType, fReturn){ +var thisValue = this.getSurfacePointAndFraction(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, this.ptTemp); +if (this.marchingSquares != null && this.params.isContoured) return this.marchingSquares.addContourVertex(this.ptTemp, cutoff); +var assocVertex = (this.assocCutoff > 0 ? (fReturn[0] < this.assocCutoff ? vA : fReturn[0] > 1 - this.assocCutoff ? vB : -1) : -1); +if (assocVertex >= 0) assocVertex = this.marchingCubes.getLinearOffset(x, y, z, assocVertex); +var n = this.addVertexCopy(this.ptTemp, thisValue, assocVertex, true); +if (n >= 0 && this.params.iAddGridPoints) { +this.marchingCubes.calcVertexPoint(x, y, z, vB, this.ptTemp); +this.addVertexCopy(valueA < valueB ? pointA : this.ptTemp, Math.min(valueA, valueB), -3, true); +this.addVertexCopy(valueA < valueB ? this.ptTemp : pointA, Math.max(valueA, valueB), -3, true); +}return n; +}, "~N,~B,~N,~N,~N,JU.P3i,~N,~N,~N,~N,JU.T3,JU.V3,~B,~A"); +Clazz.defineMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +return this.getSPF(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz.defineMethod(c$, "getSPF", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +var diff = valueB - valueA; +var fraction = (cutoff - valueA) / diff; +if (isCutoffAbsolute && (fraction < 0 || fraction > 1)) fraction = (-cutoff - valueA) / diff; +if (fraction < 0 || fraction > 1) { +fraction = NaN; +}fReturn[0] = fraction; +ptReturn.scaleAdd2(fraction, edgeVector, pointA); +return valueA + fraction * diff; +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz.defineMethod(c$, "addVertexCopy", +function(vertexXYZ, value, assocVertex, asCopy){ +return this.addVC(vertexXYZ, value, assocVertex, asCopy); +}, "JU.T3,~N,~N,~B"); +Clazz.defineMethod(c$, "addVC", +function(vertexXYZ, value, assocVertex, asCopy){ +return (Float.isNaN(value) && assocVertex != -3 ? -1 : this.meshDataServer == null ? this.meshData.addVertexCopy(vertexXYZ, value, assocVertex, asCopy) : this.meshDataServer.addVertexCopy(vertexXYZ, value, assocVertex, asCopy)); +}, "JU.T3,~N,~N,~B"); +Clazz.defineMethod(c$, "addTriangleCheck", +function(iA, iB, iC, check, iContour, isAbsolute, color){ +if (this.marchingSquares != null && this.params.isContoured) { +if (color == 0) return this.marchingSquares.addTriangle(iA, iB, iC, check, iContour); +color = 0; +}return (this.meshDataServer != null ? this.meshDataServer.addTriangleCheck(iA, iB, iC, check, iContour, isAbsolute, color) : isAbsolute && !J.jvxl.data.MeshData.checkCutoff(iA, iB, iC, this.meshData.vvs) ? -1 : this.meshData.addTriangleCheck(iA, iB, iC, check, iContour, color)); +}, "~N,~N,~N,~N,~N,~B,~N"); +Clazz.defineMethod(c$, "colorIsosurface", +function(){ +if (this.params.isSquared && this.volumeData != null) this.volumeData.filterData(true, NaN); +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 1, null); +}this.jvxlData.saveVertexCount = 0; +if (this.params.isContoured && this.marchingSquares != null) { +this.initializeMapping(); +this.params.setMapRanges(this, false); +this.marchingSquares.setMinMax(this.params.valueMappedToRed, this.params.valueMappedToBlue); +this.jvxlData.saveVertexCount = this.marchingSquares.contourVertexCount; +this.contourVertexCount = this.marchingSquares.generateContourData(this.jvxlDataIs2dContour, (this.params.isSquared ? 1e-8 : 1e-4)); +this.jvxlData.contourValuesUsed = this.marchingSquares.contourValuesUsed; +this.minMax = this.marchingSquares.getMinMax(); +if (this.meshDataServer != null) this.meshDataServer.notifySurfaceGenerationCompleted(); +this.finalizeMapping(); +}this.applyColorScale(); +this.jvxlData.nContours = (this.params.contourFromZero ? this.params.nContours : -1 - this.params.nContours); +this.jvxlData.thisContour = this.params.thisContour; +this.jvxlData.jvxlFileMessage = "mapped: min = " + this.params.valueMappedToRed + "; max = " + this.params.valueMappedToBlue; +}); +Clazz.defineMethod(c$, "applyColorScale", +function(){ +this.colorFractionBase = this.jvxlData.colorFractionBase = 35; +this.colorFractionRange = this.jvxlData.colorFractionRange = 90; +if (this.params.colorPhase == 0) this.params.colorPhase = 1; +if (this.meshDataServer == null) { +this.meshData.vcs = Clazz.newShortArray (this.meshData.vc, 0); +} else { +this.meshDataServer.fillMeshData(this.meshData, 1, null); +if (this.params.contactPair == null) this.meshDataServer.fillMeshData(this.meshData, 2, null); +}var saveColorData = (this.params.colorDensity || this.params.isBicolorMap || this.params.colorBySign || !this.params.colorByPhase); +if (this.params.contactPair != null) saveColorData = false; +this.jvxlData.isJvxlPrecisionColor = true; +this.jvxlData.vertexCount = (this.contourVertexCount > 0 ? this.contourVertexCount : this.meshData.vc); +this.jvxlData.minColorIndex = -1; +this.jvxlData.maxColorIndex = 0; +this.jvxlData.contourValues = this.params.contoursDiscrete; +this.jvxlData.isColorReversed = this.params.isColorReversed; +if (!this.params.colorDensity) if (this.params.isBicolorMap && !this.params.isContoured || this.params.colorBySign) { +this.jvxlData.minColorIndex = JU.C.getColixTranslucent3(JU.C.getColix(this.params.isColorReversed ? this.params.colorPos : this.params.colorNeg), this.jvxlData.translucency != 0, this.jvxlData.translucency); +this.jvxlData.maxColorIndex = JU.C.getColixTranslucent3(JU.C.getColix(this.params.isColorReversed ? this.params.colorNeg : this.params.colorPos), this.jvxlData.translucency != 0, this.jvxlData.translucency); +}this.jvxlData.isTruncated = (this.jvxlData.minColorIndex >= 0 && !this.params.isContoured); +var useMeshDataValues = this.jvxlDataIs2dContour || this.hasColorData || this.vertexDataOnly || this.params.colorDensity || this.params.isBicolorMap && !this.params.isContoured; +if (!useMeshDataValues) { +if (this.haveSurfaceAtoms && this.meshData.vertexSource == null) this.meshData.vertexSource = Clazz.newIntArray (this.meshData.vc, 0); +var min = 3.4028235E38; +var max = -3.4028235E38; +var value; +this.initializeMapping(); +for (var i = this.meshData.vc; --i >= this.meshData.mergeVertexCount0; ) { +if (this.params.colorBySets) { +value = this.meshData.vertexSets[i]; +} else if (this.params.colorByPhase) { +value = this.getPhase(this.meshData.vs[i]); +} else { +var needSource = this.haveSurfaceAtoms; +value = this.volumeData.lookupInterpolatedVoxelValue(this.meshData.vs[i], needSource); +if (needSource) this.meshData.vertexSource[i] = this.getSurfaceAtomIndex(); +}if (value < min) min = value; +if (value > max && value != 3.4028235E38) max = value; +this.meshData.vvs[i] = value; +} +if (this.params.rangeSelected && this.minMax == null) this.minMax = Clazz.newFloatArray(-1, [min, max]); +this.finalizeMapping(); +}this.params.setMapRanges(this, true); +this.jvxlData.mappedDataMin = this.params.mappedDataMin; +this.jvxlData.mappedDataMax = this.params.mappedDataMax; +this.jvxlData.valueMappedToRed = this.params.valueMappedToRed; +this.jvxlData.valueMappedToBlue = this.params.valueMappedToBlue; +if (this.params.contactPair == null && this.jvxlData.vertexColors == null) this.colorData(); +J.jvxl.data.JvxlCoder.jvxlCreateColorData(this.jvxlData, (saveColorData ? this.meshData.vvs : null)); +if (this.haveSurfaceAtoms && this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 4, null); +if (this.meshDataServer != null && this.params.colorBySets) this.meshDataServer.fillMeshData(this.meshData, 3, null); +}); +Clazz.defineMethod(c$, "colorData", +function(){ +var vertexValues = this.meshData.vvs; +var vertexColixes = this.meshData.vcs; +this.meshData.pcs = null; +var valueBlue = this.jvxlData.valueMappedToBlue; +var valueRed = this.jvxlData.valueMappedToRed; +var minColorIndex = this.jvxlData.minColorIndex; +var maxColorIndex = this.jvxlData.maxColorIndex; +if (this.params.colorEncoder == null) this.params.colorEncoder = new JU.ColorEncoder(null, null); +this.params.colorEncoder.setRange(this.params.valueMappedToRed, this.params.valueMappedToBlue, this.params.isColorReversed); +for (var i = this.meshData.vc; --i >= 0; ) { +var value = vertexValues[i]; +if (minColorIndex >= 0) { +if (value <= 0) vertexColixes[i] = minColorIndex; + else if (value > 0) vertexColixes[i] = maxColorIndex; +} else { +if (value <= valueRed) value = valueRed; +if (value >= valueBlue) value = valueBlue; +vertexColixes[i] = this.params.colorEncoder.getColorIndex(value); +}} +if ((this.params.nContours > 0 || this.jvxlData.contourValues != null) && this.jvxlData.contourColixes == null) { +var n = (this.jvxlData.contourValues == null ? this.params.nContours : this.jvxlData.contourValues.length); +var colors = this.jvxlData.contourColixes = Clazz.newShortArray (n, 0); +var values = this.jvxlData.contourValues; +if (values == null) values = this.jvxlData.contourValuesUsed; +if (this.jvxlData.contourValuesUsed == null) this.jvxlData.contourValuesUsed = (values == null ? Clazz.newFloatArray (n, 0) : values); +var dv = (valueBlue - valueRed) / (n + 1); +this.params.colorEncoder.setRange(this.params.valueMappedToRed, this.params.valueMappedToBlue, this.params.isColorReversed); +for (var i = 0; i < n; i++) { +var v = (values == null ? valueRed + (i + 1) * dv : values[i]); +this.jvxlData.contourValuesUsed[i] = v; +colors[i] = JU.C.getColixTranslucent(this.params.colorEncoder.getArgb(v)); +} +this.jvxlData.contourColors = JU.C.getHexCodes(colors); +}}); +c$.getColorPhaseIndex = Clazz.defineMethod(c$, "getColorPhaseIndex", +function(color){ +var colorPhase = -1; +for (var i = 0; i < J.jvxl.readers.SurfaceReader.colorPhases.length; i++) if (color.equalsIgnoreCase(J.jvxl.readers.SurfaceReader.colorPhases[i])) { +colorPhase = i; +break; +} +return colorPhase; +}, "~S"); +Clazz.defineMethod(c$, "getPhase", +function(pt){ +switch (this.params.colorPhase) { +case 0: +case -1: +case 1: +return (pt.x > 0 ? 1 : -1); +case 2: +return (pt.y > 0 ? 1 : -1); +case 3: +return (pt.z > 0 ? 1 : -1); +case 4: +return (pt.x * pt.y > 0 ? 1 : -1); +case 5: +return (pt.y * pt.z > 0 ? 1 : -1); +case 6: +return (pt.x * pt.z > 0 ? 1 : -1); +case 7: +return (pt.x * pt.x - pt.y * pt.y > 0 ? 1 : -1); +case 8: +return (pt.z * pt.z * 2 - pt.x * pt.x - pt.y * pt.y > 0 ? 1 : -1); +} +return 1; +}, "JU.T3"); +Clazz.defineMethod(c$, "getMinMaxMappedValues", +function(haveData){ +if (this.minMax != null && this.minMax[0] != 3.4028235E38) return this.minMax; +if (this.params.colorBySets) return (this.minMax = Clazz.newFloatArray(-1, [0, Math.max(this.meshData.nSets - 1, 0)])); +var min = 3.4028235E38; +var max = -3.4028235E38; +if (this.params.usePropertyForColorRange && this.params.theProperty != null) { +for (var i = this.params.theProperty.length; --i >= 0; ) { +if (this.params.rangeSelected && !this.params.bsSelected.get(i)) continue; +var p = this.params.theProperty[i]; +if (Float.isNaN(p)) continue; +if (p < min) min = p; +if (p > max) max = p; +} +return (this.minMax = Clazz.newFloatArray(-1, [min, max])); +}var vertexCount = (this.contourVertexCount > 0 ? this.contourVertexCount : this.meshData.vc); +var vertexes = this.meshData.vs; +var useVertexValue = (haveData || this.jvxlDataIs2dContour || this.vertexDataOnly || this.params.colorDensity); +for (var i = this.meshData.mergeVertexCount0; i < vertexCount; i++) { +var v; +if (useVertexValue) v = this.meshData.vvs[i]; + else v = this.volumeData.lookupInterpolatedVoxelValue(vertexes[i], false); +if (v < min) min = v; +if (v > max && v != 3.4028235E38) max = v; +} +return (this.minMax = Clazz.newFloatArray(-1, [min, max])); +}, "~B"); +Clazz.defineMethod(c$, "updateTriangles", +function(){ +if (this.meshDataServer == null) { +this.meshData.invalidatePolygons(); +} else { +this.meshDataServer.invalidateTriangles(); +}}); +Clazz.defineMethod(c$, "updateSurfaceData", +function(){ +this.meshData.setVertexSets(true); +this.updateTriangles(); +if (this.params.bsExcluded[1] == null) this.params.bsExcluded[1] = new JU.BS(); +this.meshData.updateInvalidatedVertices(this.params.bsExcluded[1]); +}); +Clazz.defineMethod(c$, "selectPocket", +function(doExclude){ +}, "~B"); +Clazz.defineMethod(c$, "excludeMinimumSet", +function(){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.getSurfaceSet(); +var bs; +for (var i = this.meshData.nSets; --i >= 0; ) if ((bs = this.meshData.surfaceSet[i]) != null && bs.cardinality() < this.params.minSet) this.meshData.invalidateSurfaceSet(i); + +this.updateSurfaceData(); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 3, null); +}); +Clazz.defineMethod(c$, "excludeMaximumSet", +function(){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.getSurfaceSet(); +var bs; +for (var i = this.meshData.nSets; --i >= 0; ) if ((bs = this.meshData.surfaceSet[i]) != null && bs.cardinality() > this.params.maxSet) this.meshData.invalidateSurfaceSet(i); + +this.updateSurfaceData(); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 3, null); +}); +Clazz.defineMethod(c$, "slabIsosurface", +function(slabInfo){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.slabPolygonsList(slabInfo, true); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 4, null); +}, "JU.Lst"); +Clazz.defineMethod(c$, "setVertexAnisotropy", +function(pt){ +pt.x *= this.anisotropy[0]; +pt.y *= this.anisotropy[1]; +pt.z *= this.anisotropy[2]; +pt.add(this.center); +}, "JU.T3"); +Clazz.defineMethod(c$, "setVectorAnisotropy", +function(v){ +this.haveSetAnisotropy = true; +v.x *= this.anisotropy[0]; +v.y *= this.anisotropy[1]; +v.z *= this.anisotropy[2]; +}, "JU.T3"); +Clazz.defineMethod(c$, "setVolumetricAnisotropy", +function(){ +if (this.haveSetAnisotropy) return; +this.setVolumetricOriginAnisotropy(); +this.setVectorAnisotropy(this.volumetricVectors[0]); +this.setVectorAnisotropy(this.volumetricVectors[1]); +this.setVectorAnisotropy(this.volumetricVectors[2]); +}); +Clazz.defineMethod(c$, "setVolumetricOriginAnisotropy", +function(){ +this.volumetricOrigin.setT(this.center); +}); +Clazz.defineMethod(c$, "setBBoxAll", +function(){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.xyzMin = new JU.P3(); +this.xyzMax = new JU.P3(); +this.meshData.setBox(this.xyzMin, this.xyzMax); +}); +Clazz.defineMethod(c$, "setBBox", +function(pt, margin){ +if (this.xyzMin == null) { +this.xyzMin = JU.P3.new3(3.4028235E38, 3.4028235E38, 3.4028235E38); +this.xyzMax = JU.P3.new3(-3.4028235E38, -3.4028235E38, -3.4028235E38); +}JU.BoxInfo.addPoint(pt, this.xyzMin, this.xyzMax, margin); +}, "JU.T3,~N"); +Clazz.defineMethod(c$, "getValueAtPoint", +function(pt, getSource){ +return 0; +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "initializeMapping", +function(){ +}); +Clazz.defineMethod(c$, "finalizeMapping", +function(){ +}); +Clazz.defineMethod(c$, "getSurfaceAtomIndex", +function(){ +return -1; +}); +c$.colorPhases = Clazz.newArray(-1, ["_orb", "x", "y", "z", "xy", "yz", "xz", "x2-y2", "z2"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/UhbdReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/UhbdReader.js new file mode 100755 index 000000000000..1566603341d4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/UhbdReader.js @@ -0,0 +1,53 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.UhbdReader", ["JU.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.planeCount = 0; +this.voxelCount = 0; +this.pt = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "UhbdReader", J.jvxl.readers.VolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.UhbdReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +if (this.params.thePlane == null) this.params.insideOut = !this.params.insideOut; +this.isAngstroms = true; +this.nSurfaces = 1; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.rd(); +this.jvxlFileHeaderBuffer = JU.SB.newS(this.line); +this.jvxlFileHeaderBuffer.append("UHBD format ").append(this.line).append("\n"); +this.jvxlFileHeaderBuffer.append("see http://sourceforge.net/p/apbs/code/ci/9527462a39126fb6cd880924b3cc4880ec4b78a9/tree/src/mg/vgrid.c\n"); +this.rd(); +this.rd(); +this.voxelCounts[0] = this.parseIntStr(this.line.substring(0, 7)); +this.voxelCounts[1] = this.parseIntStr(this.line.substring(7, 14)); +this.voxelCounts[2] = this.parseIntStr(this.line.substring(14, 21)); +var dx = this.parseFloatStr(this.line.substring(21, 33)); +this.volumetricOrigin.set(this.parseFloatStr(this.line.substring(33, 45)), this.parseFloatStr(this.line.substring(45, 57)), this.parseFloatStr(this.line.substring(57, 69))); +this.volumetricVectors[0].set(0, 0, dx); +this.volumetricVectors[1].set(0, dx, 0); +this.volumetricVectors[2].set(dx, 0, 0); +this.planeCount = this.voxelCounts[0] * this.voxelCounts[1]; +this.rd(); +this.rd(); +}); +Clazz.overrideMethod(c$, "nextVoxel", +function(){ +if (this.voxelCount % this.planeCount == 0) { +this.rd(); +this.pt = 0; +}if (this.pt % 78 == 0) { +this.rd(); +this.pt = 0; +}this.voxelCount++; +var voxelValue = this.parseFloatStr(this.line.substring(this.pt, this.pt + 13)); +this.pt += 13; +return voxelValue; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VaspChgcarReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VaspChgcarReader.js new file mode 100755 index 000000000000..9163233819d7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VaspChgcarReader.js @@ -0,0 +1,74 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.PeriodicVolumeFileReader"], "J.jvxl.readers.VaspChgcarReader", ["JU.PT", "$.SB", "JU.Logger", "$.SimpleUnitCell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.volume = 0; +this.pt = 0; +this.nPerLine = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "VaspChgcarReader", J.jvxl.readers.PeriodicVolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.VaspChgcarReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +this.isAngstroms = true; +this.isPeriodic = true; +this.isProgressive = false; +this.nSurfaces = 1; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("Vasp CHGCAR format\n\n\n"); +this.rd(); +var scale = this.parseFloatStr(this.rd()); +var data = Clazz.newFloatArray (15, 0); +data[0] = -1; +for (var i = 0, pt = 6; i < 3; ++i) this.volumetricVectors[i].set(data[pt++] = this.parseFloatStr(this.rd()) * scale, data[pt++] = this.parseFloat() * scale, data[pt++] = this.parseFloat() * scale); + +this.volume = JU.SimpleUnitCell.newA(data).volume; +while (this.rd().length > 2) { +} +this.rd(); +var counts = this.getTokens(); +for (var i = 0; i < 3; ++i) { +this.volumetricVectors[i].scale(1 / ((this.voxelCounts[i] = this.parseIntStr(counts[i]) + 1) - 1)); +if (this.isAnisotropic) this.setVectorAnisotropy(this.volumetricVectors[i]); +} +this.swapXZ(); +this.volumetricOrigin.set(0, 0, 0); +if (this.params.thePlane == null && (this.params.cutoffAutomatic || !Float.isNaN(this.params.sigma))) { +this.params.cutoff = 0.5; +JU.Logger.info("Cutoff set to " + this.params.cutoff); +}}); +Clazz.overrideMethod(c$, "nextVoxel", +function(){ +if (this.pt++ % this.nPerLine == 0 && this.nData > 0) { +this.rd(); +this.next[0] = 0; +}return this.parseFloat() / this.volume; +}); +Clazz.overrideMethod(c$, "getPeriodicVoxels", +function(){ +var ni = this.voxelCounts[0] - 1; +var nj = this.voxelCounts[1] - 1; +var nk = this.voxelCounts[2] - 1; +var downSampling = (this.nSkipX > 0); +this.nPerLine = JU.PT.countTokens(this.rd(), 0); +for (var i = 0; i < ni; i++) { +for (var j = 0; j < nj; j++) { +for (var k = 0; k < nk; k++) { +this.voxelData[i][j][k] = this.recordData(this.nextVoxel()); +if (downSampling) for (var m = this.nSkipX; --m >= 0; ) this.nextVoxel(); + +} +if (downSampling) for (var m = this.nSkipY; --m >= 0; ) this.nextVoxel(); + +} +if (downSampling) for (var m = this.nSkipZ; --m >= 0; ) this.nextVoxel(); + +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VolumeDataReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VolumeDataReader.js new file mode 100755 index 000000000000..d8f53bcbe70f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VolumeDataReader.js @@ -0,0 +1,181 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.SurfaceReader"], "J.jvxl.readers.VolumeDataReader", ["JU.AU", "$.SB", "J.jvxl.data.JvxlCoder", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dataType = 0; +this.precalculateVoxelData = false; +this.allowMapData = false; +this.point = null; +this.ptsPerAngstrom = 0; +this.maxGrid = 0; +this.useOriginStepsPoints = false; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "VolumeDataReader", J.jvxl.readers.SurfaceReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.VolumeDataReader, []); +}); +Clazz.overrideMethod(c$, "init", +function(sg){ +this.initVDR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.defineMethod(c$, "initVDR", +function(sg){ +this.initSR(sg); +this.useOriginStepsPoints = (this.params.origin != null && this.params.points != null && this.params.steps != null); +this.dataType = this.params.dataType; +this.precalculateVoxelData = true; +this.allowMapData = true; +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz.defineMethod(c$, "setup", +function(isMapData){ +this.jvxlFileHeaderBuffer = new JU.SB().append("volume data read from file\n\n"); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +}, "~B"); +Clazz.overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.setup(isMapData); +this.initializeVolumetricData(); +return true; +}, "~B"); +Clazz.overrideMethod(c$, "readVolumeData", +function(isMapData){ +try { +this.readSurfaceData(isMapData); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e.toString()); +{ +}return false; +} else { +throw e; +} +} +return true; +}, "~B"); +Clazz.defineMethod(c$, "readVoxelDataIndividually", +function(isMapData){ +if (isMapData && !this.allowMapData) return; +if (!isMapData || this.volumeData.sr != null) { +this.volumeData.setVoxelDataAsArray(this.voxelData = null); +return; +}this.newVoxelDataCube(); +for (var x = 0; x < this.nPointsX; ++x) { +var plane = JU.AU.newFloat2(this.nPointsY); +this.voxelData[x] = plane; +var ptyz = 0; +for (var y = 0; y < this.nPointsY; ++y) { +var strip = plane[y] = Clazz.newFloatArray (this.nPointsZ, 0); +for (var z = 0; z < this.nPointsZ; ++z, ++ptyz) { +strip[z] = this.getValue(x, y, z, ptyz); +} +} +} +}, "~B"); +Clazz.defineMethod(c$, "setVolumeData", +function(){ +}); +Clazz.defineMethod(c$, "setVolumeDataParams", +function(){ +if (this.params.volumeData != null) { +this.setVolumeDataV(this.params.volumeData); +return true; +}if (!this.useOriginStepsPoints) { +return false; +}this.volumetricOrigin.setT(this.params.origin); +this.volumetricVectors[0].set(this.params.steps.x, 0, 0); +this.volumetricVectors[1].set(0, this.params.steps.y, 0); +this.volumetricVectors[2].set(0, 0, this.params.steps.z); +this.voxelCounts[0] = Clazz.floatToInt(this.params.points.x); +this.voxelCounts[1] = Clazz.floatToInt(this.params.points.y); +this.voxelCounts[2] = Clazz.floatToInt(this.params.points.z); +if (this.voxelCounts[0] < 1 || this.voxelCounts[1] < 1 || this.voxelCounts[2] < 1) return false; +this.showGridInfo(); +return true; +}); +Clazz.defineMethod(c$, "showGridInfo", +function(){ +JU.Logger.info("grid origin = " + this.params.origin); +JU.Logger.info("grid steps = " + this.params.steps); +JU.Logger.info("grid points = " + this.params.points); +this.ptTemp.x = this.params.steps.x * this.params.points.x; +this.ptTemp.y = this.params.steps.y * this.params.points.y; +this.ptTemp.z = this.params.steps.z * this.params.points.z; +JU.Logger.info("grid lengths = " + this.ptTemp); +this.ptTemp.add(this.params.origin); +JU.Logger.info("grid max xyz = " + this.ptTemp); +}); +Clazz.defineMethod(c$, "setVoxelRange", +function(index, min, max, ptsPerAngstrom, gridMax, minPointsPerAngstrom){ +var nGrid; +var d; +if (min - max >= -1.0E-4) { +min = -10; +max = 10; +}var range = max - min; +var resolution = this.params.resolution; +if (resolution != 3.4028235E38) { +ptsPerAngstrom = resolution; +minPointsPerAngstrom = 0; +}nGrid = Clazz.doubleToInt(Math.floor(range * ptsPerAngstrom)) + 1; +if (nGrid > gridMax) { +if ((this.dataType & 256) > 0) { +if (resolution == 3.4028235E38) { +if (!this.isQuiet) JU.Logger.info("Maximum number of voxels for index=" + index + " exceeded (" + nGrid + ") -- set to " + gridMax); +nGrid = gridMax; +} else { +if (!this.isQuiet) JU.Logger.info("Warning -- high number of grid points: " + nGrid); +}} else if (resolution == 3.4028235E38) { +nGrid = gridMax; +}}if (nGrid == 1) nGrid = 2; +ptsPerAngstrom = (nGrid - 1) / range; +if (ptsPerAngstrom < minPointsPerAngstrom) { +ptsPerAngstrom = minPointsPerAngstrom; +nGrid = Clazz.doubleToInt(Math.floor(ptsPerAngstrom * range + 1)); +ptsPerAngstrom = (nGrid - 1) / range; +}d = this.volumeData.volumetricVectorLengths[index] = 1 / ptsPerAngstrom; +this.voxelCounts[index] = nGrid; +if (this.params.sbOut != null) this.params.sbOut.append("isosurface resolution for axis " + (index + 1) + " set to " + ptsPerAngstrom + " points/Angstrom; " + this.voxelCounts[index] + " voxels\n"); +switch (index) { +case 0: +this.volumetricVectors[0].set(d, 0, 0); +this.volumetricOrigin.x = min; +break; +case 1: +this.volumetricVectors[1].set(0, d, 0); +this.volumetricOrigin.y = min; +break; +case 2: +this.volumetricVectors[2].set(0, 0, d); +this.volumetricOrigin.z = min; +if (this.isEccentric) this.eccentricityMatrix.rotate(this.volumetricOrigin); +if (this.center != null && !Float.isNaN(this.center.x)) this.volumetricOrigin.add(this.center); +if (this.params.sbOut != null) this.params.sbOut.append((this.voxelCounts[0] * this.voxelCounts[1] * this.voxelCounts[2]) + " voxels total\n"); +} +if (this.isEccentric) this.eccentricityMatrix.rotate(this.volumetricVectors[index]); +return this.voxelCounts[index]; +}, "~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapData){ +this.readSurfaceDataVDR(isMapData); +}, "~B"); +Clazz.defineMethod(c$, "readSurfaceDataVDR", +function(isMapData){ +if (this.isProgressive && !isMapData) { +this.nDataPoints = this.volumeData.setVoxelCounts(this.nPointsX, this.nPointsY, this.nPointsZ); +this.voxelData = null; +return; +}if (this.precalculateVoxelData) this.generateCube(); + else this.readVoxelDataIndividually(isMapData); +}, "~B"); +Clazz.defineMethod(c$, "generateCube", +function(){ +JU.Logger.info("data type: user volumeData"); +JU.Logger.info("voxel grid origin:" + this.volumetricOrigin); +for (var i = 0; i < 3; ++i) JU.Logger.info("voxel grid vector:" + this.volumetricVectors[i]); + +JU.Logger.info("Read " + this.nPointsX + " x " + this.nPointsY + " x " + this.nPointsZ + " data points"); +}); +Clazz.overrideMethod(c$, "closeReader", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VolumeFileReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VolumeFileReader.js new file mode 100755 index 000000000000..aa72e126c55e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/VolumeFileReader.js @@ -0,0 +1,411 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.SurfaceFileReader"], "J.jvxl.readers.VolumeFileReader", ["JU.AU", "$.PT", "$.SB", "J.api.Interface", "J.atomdata.AtomData", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.endOfData = false; +this.negativeAtomCount = false; +this.ac = 0; +this.nSurfaces = 0; +this.isAngstroms = false; +this.canDownsample = false; +this.downsampleRemainders = null; +this.getNCIPlanes = false; +this.nData = 0; +this.readerClosed = false; +this.downsampleFactor = 0; +this.nSkipX = 0; +this.nSkipY = 0; +this.nSkipZ = 0; +this.yzPlanesRaw = null; +this.iPlaneNCI = 0; +this.boundingBox = null; +this.isScaledAlready = false; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "VolumeFileReader", J.jvxl.readers.SurfaceFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.VolumeFileReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "init2VFR", +function(sg, br){ +this.init2SFR(sg, br); +this.canDownsample = this.isProgressive = this.isXLowToHigh = true; +this.jvxlData.wasCubic = true; +this.boundingBox = this.params.boundingBox; +if (this.params.qmOrbitalType == 4) { +this.hasColorData = (this.params.parameters == null || this.params.parameters[1] >= 0); +this.getNCIPlanes = true; +this.params.insideOut = !this.params.insideOut; +}}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.defineMethod(c$, "recordData", +function(value){ +if (Float.isNaN(value)) return value; +if (value < this.dataMin) this.dataMin = value; +if (value > this.dataMax) this.dataMax = value; +this.dataMean += value; +this.nData++; +return value; +}, "~N"); +Clazz.overrideMethod(c$, "closeReader", +function(){ +if (this.readerClosed) return; +this.readerClosed = true; +this.closeReaderSFR(); +if (this.nData == 0 || this.dataMax == -3.4028235E38) return; +this.dataMean /= this.nData; +JU.Logger.info("VolumeFileReader closing file: " + this.nData + " points read \ndata min/max/mean = " + this.dataMin + "/" + this.dataMax + "/" + this.dataMean); +}); +Clazz.overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.endOfData = false; +this.nSurfaces = this.readVolumetricHeader(); +if (this.nSurfaces == 0) return false; +if (this.nSurfaces < this.params.fileIndex) { +JU.Logger.warn("not enough surfaces in file -- resetting params.fileIndex to " + this.nSurfaces); +this.params.fileIndex = this.nSurfaces; +}return true; +}, "~B"); +Clazz.overrideMethod(c$, "readVolumeData", +function(isMapData){ +return this.readVolumeDataVFR(isMapData); +}, "~B"); +Clazz.defineMethod(c$, "readVolumeDataVFR", +function(isMapData){ +if (!this.gotoAndReadVoxelData(isMapData)) return false; +if (!this.vertexDataOnly) JU.Logger.info("JVXL read: " + this.nPointsX + " x " + this.nPointsY + " x " + this.nPointsZ + " data points"); +return true; +}, "~B"); +Clazz.defineMethod(c$, "readVolumetricHeader", +function(){ +try { +this.readParameters(); +if (this.ac == -2147483648) return 0; +if (!this.vertexDataOnly) JU.Logger.info("voxel grid origin:" + this.volumetricOrigin); +var downsampleFactor = this.params.downsampleFactor; +var downsampling = (this.canDownsample && downsampleFactor > 1); +if (downsampleFactor > 1 && !this.canDownsample) this.jvxlData.msg += "\ncannot downsample this file type"; +if (downsampling) { +this.downsampleRemainders = Clazz.newIntArray (3, 0); +JU.Logger.info("downsample factor = " + downsampleFactor); +for (var i = 0; i < 3; ++i) { +var n = this.voxelCounts[i]; +this.downsampleRemainders[i] = n % downsampleFactor; +this.voxelCounts[i] /= downsampleFactor; +if (this.isPeriodic) { +this.voxelCounts[i]++; +this.downsampleRemainders[i]--; +}this.volumetricVectors[i].scale(downsampleFactor); +JU.Logger.info("downsampling axis " + (i + 1) + " from " + n + " to " + this.voxelCounts[i]); +} +}if (!this.vertexDataOnly) for (var i = 0; i < 3; ++i) { +if (!this.isAngstroms) this.volumetricVectors[i].scale(0.5291772); +this.line = this.voxelCounts[i] + " " + this.volumetricVectors[i].x + " " + this.volumetricVectors[i].y + " " + this.volumetricVectors[i].z; +JU.Logger.info("voxel grid count/vector:" + this.line); +} +this.scaleIsosurface(this.params.scale); +this.volumeData.setVolumetricXml(); +return this.nSurfaces; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return 0; +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "skipComments", +function(allowBlankLines){ +var sb = new JU.SB(); +while (this.rd() != null && (allowBlankLines && this.line.length == 0 || this.line.indexOf("#") == 0)) sb.append(this.line).appendC('\n'); + +return sb.toString(); +}, "~B"); +Clazz.defineMethod(c$, "readVoxelVector", +function(voxelVectorIndex){ +this.rd(); +var voxelVector = this.volumetricVectors[voxelVectorIndex]; +if ((this.voxelCounts[voxelVectorIndex] = this.parseIntStr(this.line)) == -2147483648) this.next[0] = this.line.indexOf(" "); +voxelVector.set(this.parseFloat(), this.parseFloat(), this.parseFloat()); +if (this.isAnisotropic) this.setVectorAnisotropy(voxelVector); +}, "~N"); +Clazz.defineMethod(c$, "initializeSurfaceData", +function(){ +this.downsampleFactor = this.params.downsampleFactor; +this.nSkipX = 0; +this.nSkipY = 0; +this.nSkipZ = 0; +if (this.canDownsample && this.downsampleFactor > 0) { +this.nSkipX = this.downsampleFactor - 1; +this.nSkipY = this.downsampleRemainders[2] + (this.downsampleFactor - 1) * (this.nSkipZ = ((this.nPointsZ - (this.isPeriodic ? 1 : 0)) * this.downsampleFactor + this.downsampleRemainders[2])); +this.nSkipZ = this.downsampleRemainders[1] * this.nSkipZ + (this.downsampleFactor - 1) * this.nSkipZ * ((this.nPointsY - (this.isPeriodic ? 1 : 0)) * this.downsampleFactor + this.downsampleRemainders[1]); +}if (this.params.thePlane != null) { +this.params.cutoff = 0; +} else if (this.isJvxl) { +this.params.cutoff = (this.params.isBicolorMap || this.params.colorBySign ? 0.01 : this.getJVXLCutoff()); +}this.nDataPoints = 0; +this.next[0] = 0; +this.line = ""; +this.jvxlNSurfaceInts = 0; +}); +Clazz.defineMethod(c$, "getJVXLCutoff", +function(){ +return 0.5; +}); +Clazz.overrideMethod(c$, "readSurfaceData", +function(isMapData){ +this.readSurfaceDataVFR(isMapData); +}, "~B"); +Clazz.defineMethod(c$, "readSurfaceDataVFR", +function(isMapData){ +this.initializeSurfaceData(); +if (this.isProgressive && !isMapData || this.isJvxl) { +this.nDataPoints = this.volumeData.setVoxelCounts(this.nPointsX, this.nPointsY, this.nPointsZ); +this.voxelData = null; +if (this.isJvxl) this.jvxlVoxelBitSet = this.getVoxelBitSet(this.nDataPoints); +} else if (isMapData && this.volumeData.hasPlane()) { +this.volumeData.setVoxelMap(); +var f = this.volumeData.getToPlaneParameter(); +for (var x = 0; x < this.nPointsX; ++x) { +for (var y = 0; y < this.nPointsY; ++y) { +for (var z = 0; z < this.nPointsZ; ++z) { +var v = this.recordData(this.getNextVoxelValue()); +if (this.volumeData.isNearPlane(x, y, z, f)) this.volumeData.setVoxelMapValue(x, y, z, v); +if (this.nSkipX != 0) this.skipVoxels(this.nSkipX); +} +if (this.nSkipY != 0) this.skipVoxels(this.nSkipY); +} +if (this.nSkipZ != 0) this.skipVoxels(this.nSkipZ); +} +} else { +this.voxelData = JU.AU.newFloat3(this.nPointsX, -1); +for (var x = 0; x < this.nPointsX; ++x) { +var plane = JU.AU.newFloat2(this.nPointsY); +this.voxelData[x] = plane; +for (var y = 0; y < this.nPointsY; ++y) { +var strip = Clazz.newFloatArray (this.nPointsZ, 0); +plane[y] = strip; +for (var z = 0; z < this.nPointsZ; ++z) { +strip[z] = this.recordData(this.getNextVoxelValue()); +if (this.nSkipX != 0) this.skipVoxels(this.nSkipX); +} +if (this.nSkipY != 0) this.skipVoxels(this.nSkipY); +} +if (this.nSkipZ != 0) this.skipVoxels(this.nSkipZ); +} +}this.volumeData.setVoxelDataAsArray(this.voxelData); +}, "~B"); +Clazz.overrideMethod(c$, "getPlane", +function(x){ +if (x == 0) this.initPlanes(); +if (this.getNCIPlanes) return this.getPlaneNCI(x); +var plane = this.getPlaneSR(x); +if (this.qpc == null) this.getPlaneVFR(plane, true); +return plane; +}, "~N"); +Clazz.defineMethod(c$, "getPlaneNCI", +function(x){ +var plane; +if (this.iPlaneNCI == 0) { +this.qpc = J.api.Interface.getOption("quantum.NciCalculation", this.sg.atomDataServer, null); +var atomData = new J.atomdata.AtomData(); +atomData.modelIndex = -1; +atomData.bsSelected = this.params.bsSelected; +this.sg.fillAtomData(atomData, 1); +(this.qpc).setupCalculation(this.volumeData, this.sg.params.bsSelected, null, null, atomData.atoms, -1, true, null, this.params.parameters, this.params.testFlags); +this.iPlaneNCI = 1; +this.qpc.setPlanes(this.yzPlanesRaw = Clazz.newFloatArray (4, this.yzCount, 0)); +if (this.hasColorData) { +this.getPlaneVFR(this.yzPlanesRaw[0], false); +this.getPlaneVFR(this.yzPlanesRaw[1], false); +plane = this.yzPlanes[0]; +for (var i = 0; i < this.yzCount; i++) plane[i] = NaN; + +return plane; +}this.iPlaneNCI = -1; +}var nan = this.qpc.getNoValue(); +var x1 = this.nPointsX - 1; +switch (this.iPlaneNCI) { +case -1: +plane = this.yzPlanes[x % 2]; +x1++; +break; +case 3: +plane = this.yzPlanesRaw[0]; +this.yzPlanesRaw[0] = this.yzPlanesRaw[1]; +this.yzPlanesRaw[1] = this.yzPlanesRaw[2]; +this.yzPlanesRaw[2] = this.yzPlanesRaw[3]; +this.yzPlanesRaw[3] = plane; +plane = this.yzPlanesRaw[this.iPlaneNCI]; +break; +default: +this.iPlaneNCI++; +plane = this.yzPlanesRaw[this.iPlaneNCI]; +} +if (x < x1) { +this.getPlaneVFR(plane, false); +this.qpc.calcPlane(x, plane = this.yzPlanes[x % 2]); +for (var i = 0; i < this.yzCount; i++) if (plane[i] != nan) this.recordData(plane[i]); + +} else { +for (var i = 0; i < this.yzCount; i++) plane[i] = NaN; + +}return plane; +}, "~N"); +Clazz.defineMethod(c$, "getPlaneVFR", +function(plane, doRecord){ +try { +for (var y = 0, ptyz = 0; y < this.nPointsY; ++y) { +for (var z = 0; z < this.nPointsZ; ++z) { +var v = this.getNextVoxelValue(); +if (doRecord) this.recordData(v); +plane[ptyz++] = v; +if (this.nSkipX != 0) this.skipVoxels(this.nSkipX); +} +if (this.nSkipY != 0) this.skipVoxels(this.nSkipY); +} +if (this.nSkipZ != 0) this.skipVoxels(this.nSkipZ); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A,~B"); +Clazz.overrideMethod(c$, "getValue", +function(x, y, z, ptyz){ +if (this.boundingBox != null) { +this.volumeData.voxelPtToXYZ(x, y, z, this.ptTemp); +if (this.ptTemp.x < this.boundingBox[0].x || this.ptTemp.x > this.boundingBox[1].x || this.ptTemp.y < this.boundingBox[0].y || this.ptTemp.y > this.boundingBox[1].y || this.ptTemp.z < this.boundingBox[0].z || this.ptTemp.z > this.boundingBox[1].z) return NaN; +}return this.getValue2(x, y, z, ptyz); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "skipVoxels", +function(n){ +for (var i = n; --i >= 0; ) this.getNextVoxelValue(); + +}, "~N"); +Clazz.defineMethod(c$, "getVoxelBitSet", +function(nPoints){ +return null; +}, "~N"); +Clazz.defineMethod(c$, "getNextVoxelValue", +function(){ +var voxelValue = 0; +if (this.nSurfaces > 1 && !this.params.blockCubeData) { +for (var i = 1; i < this.params.fileIndex; i++) this.nextVoxel(); + +voxelValue = this.nextVoxel(); +for (var i = this.params.fileIndex; i < this.nSurfaces; i++) this.nextVoxel(); + +} else { +voxelValue = this.nextVoxel(); +}return voxelValue; +}); +Clazz.defineMethod(c$, "nextVoxel", +function(){ +var voxelValue = this.parseFloat(); +if (Float.isNaN(voxelValue)) { +while (this.rd() != null && Float.isNaN(voxelValue = this.parseFloatStr(this.line))) { +} +if (this.line == null) { +if (!this.endOfData) JU.Logger.warn("end of file reading cube voxel data? nBytes=" + this.nBytes + " nDataPoints=" + this.nDataPoints + " (line):" + this.line); +this.endOfData = true; +this.line = "0 0 0 0 0 0 0 0 0 0"; +}}return voxelValue; +}); +Clazz.overrideMethod(c$, "gotoData", +function(n, nPoints){ +if (!this.params.blockCubeData) return; +if (n > 0) JU.Logger.info("skipping " + n + " data sets, " + nPoints + " points each"); +for (var i = 0; i < n; i++) this.skipData(nPoints); + +}, "~N,~N"); +Clazz.defineMethod(c$, "skipData", +function(nPoints){ +this.skipDataVFR(nPoints); +}, "~N"); +Clazz.defineMethod(c$, "skipDataVFR", +function(nPoints){ +var iV = 0; +while (iV < nPoints) iV += this.countData(this.rd()); + +}, "~N"); +Clazz.defineMethod(c$, "countData", +function(str){ +var count = 0; +var ich = 0; +var ichMax = str.length; +var ch; +while (ich < ichMax) { +while (ich < ichMax && ((ch = str.charAt(ich)) == ' ' || ch == '\t')) ++ich; + +if (ich < ichMax) ++count; +while (ich < ichMax && ((ch = str.charAt(ich)) != ' ' && ch != '\t')) ++ich; + +} +return count; +}, "~S"); +c$.checkAtomLine = Clazz.defineMethod(c$, "checkAtomLine", +function(isXLowToHigh, isAngstroms, strAtomCount, atomLine, bs){ +if (atomLine.indexOf("ANGSTROMS") >= 0) isAngstroms = true; +var ac = (strAtomCount == null ? 2147483647 : JU.PT.parseInt(strAtomCount)); +switch (ac) { +case -2147483648: +ac = 0; +atomLine = " " + atomLine.substring(atomLine.indexOf(" ") + 1); +break; +case 2147483647: +ac = -2147483648; +break; +default: +var s = "" + ac; +atomLine = atomLine.substring(atomLine.indexOf(s) + s.length); +} +if (isAngstroms) { +if (atomLine.indexOf("ANGSTROM") < 0) atomLine += " ANGSTROMS"; +} else { +if (atomLine.indexOf("BOHR") < 0) atomLine += " BOHR"; +}atomLine = (ac == -2147483648 ? "" : (isXLowToHigh ? "+" : "-") + Math.abs(ac)) + atomLine + "\n"; +bs.append(atomLine); +return isAngstroms; +}, "~B,~B,~S,~S,JU.SB"); +Clazz.overrideMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +return this.getSPFv(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz.defineMethod(c$, "getSPFv", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +var zero = this.getSPF(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +if (this.qpc == null || Float.isNaN(zero) || !this.hasColorData) return zero; +vA = this.marchingCubes.getLinearOffset(x, y, z, vA); +vB = this.marchingCubes.getLinearOffset(x, y, z, vB); +return this.qpc.process(vA, vB, fReturn[0]); +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz.defineMethod(c$, "scaleIsosurface", +function(scale){ +if (this.isScaledAlready) return; +this.isScaledAlready = true; +if (this.isAnisotropic) this.setVolumetricAnisotropy(); +if (Float.isNaN(scale)) return; +JU.Logger.info("applying scaling factor of " + scale); +this.volumetricOrigin.scaleAdd2((1 - scale) / 2, this.volumetricVectors[0], this.volumetricOrigin); +this.volumetricOrigin.scaleAdd2((1 - scale) / 2, this.volumetricVectors[1], this.volumetricOrigin); +this.volumetricOrigin.scaleAdd2((1 - scale) / 2, this.volumetricVectors[2], this.volumetricOrigin); +this.volumetricVectors[0].scale(scale); +this.volumetricVectors[1].scale(scale); +this.volumetricVectors[2].scale(scale); +}, "~N"); +Clazz.defineMethod(c$, "swapXZ", +function(){ +var v = this.volumetricVectors[0]; +this.volumetricVectors[0] = this.volumetricVectors[2]; +this.volumetricVectors[2] = v; +var n = this.voxelCounts[0]; +this.voxelCounts[0] = this.voxelCounts[2]; +this.voxelCounts[2] = n; +this.params.insideOut = !this.params.insideOut; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XmlReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XmlReader.js new file mode 100755 index 000000000000..422a9f20d733 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XmlReader.js @@ -0,0 +1,132 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(null, "J.jvxl.readers.XmlReader", ["JU.P3", "$.PT", "$.SB", "JU.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.br = null; +this.line = null; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "XmlReader", null); +Clazz.makeConstructor(c$, +function(br){ +this.br = br; +}, "java.io.BufferedReader"); +Clazz.defineMethod(c$, "getLine", +function(){ +return this.line; +}); +Clazz.defineMethod(c$, "toTag", +function(name){ +this.skipTo("<" + name); +if (this.line == null) return ""; +var i = this.line.indexOf("<" + name) + name.length + 1; +if (i == this.line.length) return this.line; +if (this.line.charAt(i) == ' ' || this.line.charAt(i) == '>') return this.line; +this.line = null; +return this.toTag(name); +}, "~S"); +Clazz.defineMethod(c$, "skipTag", +function(name){ +this.skipTo(""); +}, "~S"); +Clazz.defineMethod(c$, "getXmlData", +function(name, data, withTag, allowSelfCloseOption){ +return this.getXmlDataLF(name, data, withTag, allowSelfCloseOption, false); +}, "~S,~S,~B,~B"); +Clazz.defineMethod(c$, "getXmlDataLF", +function(name, data, withTag, allowSelfCloseOption, addLF){ +var closer = ""; +var tag = "<" + name; +if (data == null) { +var sb = new JU.SB(); +try { +if (this.line == null) this.line = this.br.readLine(); +while (this.line.indexOf(tag) < 0) { +this.line = this.br.readLine(); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +sb.append(this.line); +if (addLF) sb.append("\n"); +var selfClosed = false; +var pt = this.line.indexOf("/>"); +var pt1 = this.line.indexOf(">"); +if (pt1 < 0 || pt == pt1 - 1) selfClosed = allowSelfCloseOption; +while (this.line.indexOf(closer) < 0 && (!selfClosed || this.line.indexOf("/>") < 0)) { +sb.append(this.line = this.br.readLine()); +if (addLF) sb.append("\n"); +} +data = sb.toString(); +}return J.jvxl.readers.XmlReader.extractTag(data, tag, closer, withTag); +}, "~S,~S,~B,~B,~B"); +c$.extractTagOnly = Clazz.defineMethod(c$, "extractTagOnly", +function(data, tag){ +return J.jvxl.readers.XmlReader.extractTag(data, "<" + tag + ">", "", false); +}, "~S,~S"); +c$.extractTag = Clazz.defineMethod(c$, "extractTag", +function(data, tag, closer, withTag){ +var pt1 = data.indexOf(tag); +if (pt1 < 0) return ""; +var pt2 = data.indexOf(closer, pt1); +if (pt2 < 0) { +pt2 = data.indexOf("/>", pt1); +closer = "/>"; +}if (pt2 < 0) return ""; +if (withTag) { +pt2 += closer.length; +return data.substring(pt1, pt2); +}var quoted = false; +for (; pt1 < pt2; pt1++) { +var ch; +if ((ch = data.charAt(pt1)) == '"') quoted = !quoted; + else if (quoted && ch == '\\') pt1++; + else if (!quoted && (ch == '>' || ch == '/')) break; +} +if (pt1 >= pt2) return ""; +while (JU.PT.isWhitespace(data.charAt(++pt1))) { +} +return J.jvxl.readers.XmlReader.unwrapCdata(data.substring(pt1, pt2)); +}, "~S,~S,~S,~B"); +c$.unwrapCdata = Clazz.defineMethod(c$, "unwrapCdata", +function(s){ +return (s.startsWith("") ? JU.PT.rep(s.substring(9, s.length - 3), "]]]]>", "]]>") : s); +}, "~S"); +c$.getXmlAttrib = Clazz.defineMethod(c$, "getXmlAttrib", +function(data, what){ +var nexta = Clazz.newIntArray (1, 0); +var pt = J.jvxl.readers.XmlReader.setNext(data, what, nexta, 1); +if (pt < 2 || (pt = J.jvxl.readers.XmlReader.setNext(data, "\"", nexta, 0)) < 2) return ""; +var pt1 = J.jvxl.readers.XmlReader.setNext(data, "\"", nexta, -1); +return (pt1 <= 0 ? "" : data.substring(pt, pt1)); +}, "~S,~S"); +Clazz.defineMethod(c$, "getXmlPoint", +function(data, key){ +var spt = J.jvxl.readers.XmlReader.getXmlAttrib(data, key).$replace('(', '{').$replace(')', '}'); +var value = JU.Escape.uP(spt); +if (Clazz.instanceOf(value,"JU.P3")) return value; +return new JU.P3(); +}, "~S,~S"); +c$.setNext = Clazz.defineMethod(c$, "setNext", +function(data, what, next, offset){ +var ipt = next[0]; +if (ipt < 0 || (ipt = data.indexOf(what, next[0])) < 0) return -1; +ipt += what.length; +next[0] = ipt + offset; +if (offset > 0 && ipt < data.length && data.charAt(ipt) != '=') return J.jvxl.readers.XmlReader.setNext(data, what, next, offset); +return next[0]; +}, "~S,~S,~A,~N"); +Clazz.defineMethod(c$, "skipTo", +function(key){ +if (this.line == null) this.line = this.br.readLine(); +while (this.line != null && this.line.indexOf(key) < 0) this.line = this.br.readLine(); + +}, "~S"); +Clazz.defineMethod(c$, "isNext", +function(name){ +if (this.line == null || this.line.indexOf("= 0 && this.line.indexOf("= 0); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XplorReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XplorReader.js new file mode 100755 index 000000000000..aa48fde51b1d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XplorReader.js @@ -0,0 +1,72 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.MapFileReader"], "J.jvxl.readers.XplorReader", ["JU.SB", "JU.Logger", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nBlock = 0; +this.linePt = 2147483647; +this.nRead = 0; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "XplorReader", J.jvxl.readers.MapFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.XplorReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2MFR(sg, br); +if (this.params.thePlane == null) this.params.insideOut = !this.params.insideOut; +this.nSurfaces = 1; +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.jvxlFileHeaderBuffer = new JU.SB(); +var nLines = this.parseIntStr(this.getLine()); +for (var i = nLines; --i >= 0; ) { +this.line = this.br.readLine().trim(); +JU.Logger.info("XplorReader: " + this.line); +this.jvxlFileHeaderBuffer.append("# ").append(this.line).appendC('\n'); +} +this.jvxlFileHeaderBuffer.append("Xplor data\nJmol " + JV.Viewer.getJmolVersion() + '\n'); +this.na = this.parseIntStr(this.getLine()); +this.xyzStart[0] = this.parseInt(); +this.n0 = Clazz.floatToInt(this.parseInt() - this.xyzStart[0] + 1); +this.nb = this.parseInt(); +this.xyzStart[1] = this.parseInt(); +this.n1 = Clazz.floatToInt(this.parseInt() - this.xyzStart[1] + 1); +this.nc = this.parseInt(); +this.xyzStart[2] = this.parseInt(); +this.n2 = Clazz.floatToInt(this.parseInt() - this.xyzStart[2] + 1); +this.a = this.parseFloatStr(this.getLine()); +this.b = this.parseFloat(); +this.c = this.parseFloat(); +this.alpha = this.parseFloat(); +this.beta = this.parseFloat(); +this.gamma = this.parseFloat(); +this.getLine(); +this.maps = 3; +this.mapr = 2; +this.mapc = 1; +this.getVectorsAndOrigin(); +this.setCutoffAutomatic(); +this.nBlock = this.voxelCounts[2] * this.voxelCounts[1]; +}); +Clazz.defineMethod(c$, "getLine", +function(){ +this.rd(); +while (this.line != null && (this.line.length == 0 || this.line.indexOf("REMARKS") >= 0 || this.line.indexOf("XPLOR:") >= 0)) this.rd(); + +return this.line; +}); +Clazz.overrideMethod(c$, "nextVoxel", +function(){ +if (this.linePt >= this.line.length) { +this.rd(); +this.linePt = 0; +if ((this.nRead % this.nBlock) == 0) { +this.rd(); +}}if (this.line == null) return 0; +var val = this.parseFloatRange(this.line, this.linePt, this.linePt + 12); +this.linePt += 12; +this.nRead++; +return val; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XsfReader.js b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XsfReader.js new file mode 100755 index 000000000000..1d3a1a84a6b7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/jvxl/readers/XsfReader.js @@ -0,0 +1,62 @@ +Clazz.declarePackage("J.jvxl.readers"); +Clazz.load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.XsfReader", ["JU.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isBXSF = false; +Clazz.instantialize(this, arguments);}, J.jvxl.readers, "XsfReader", J.jvxl.readers.VolumeFileReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.jvxl.readers.XsfReader, []); +}); +Clazz.overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz.overrideMethod(c$, "readParameters", +function(){ +this.isAngstroms = false; +this.params.blockCubeData = true; +this.jvxlFileHeaderBuffer = new JU.SB(); +this.jvxlFileHeaderBuffer.append("XsfReader file\n"); +var needCutoff = this.params.cutoffAutomatic; +this.isAngstroms = true; +var beginKey = "BEGIN_DATAGRID_3D"; +this.nSurfaces = 1; +while (this.rd() != null && this.line.indexOf(beginKey) < 0) { +JU.Logger.info(this.line); +if (this.line.indexOf("Fermi Energy:") >= 0) { +this.isBXSF = true; +beginKey = "BEGIN_BANDGRID_3D"; +if (needCutoff) { +this.params.cutoff = this.parseFloatStr(this.getTokens()[2]); +needCutoff = false; +}}continue; +} +if (needCutoff) this.params.cutoff = 0.05; +if (this.isBXSF) this.nSurfaces = this.parseIntStr(this.rd()); +this.voxelCounts[0] = this.parseIntStr(this.rd()); +this.voxelCounts[1] = this.parseInt(); +this.voxelCounts[2] = this.parseInt(); +this.volumetricOrigin.set(this.parseFloatStr(this.rd()), this.parseFloat(), this.parseFloat()); +for (var i = 0; i < 3; ++i) { +this.volumetricVectors[i].set(this.parseFloatStr(this.rd()), this.parseFloat(), this.parseFloat()); +this.volumetricVectors[i].scale(1.0 / (this.voxelCounts[i] - 1)); +} +if (this.isBXSF) { +} else { +this.swapXZ(); +}}); +Clazz.overrideMethod(c$, "gotoData", +function(n, nPoints){ +if (!this.params.blockCubeData) return; +if (n > 0) JU.Logger.info("skipping " + n + " data sets, " + nPoints + " points each"); +if (this.isBXSF) JU.Logger.info(this.rd()); +for (var i = 0; i < n; i++) this.skipData(nPoints); + +}, "~N,~N"); +Clazz.overrideMethod(c$, "skipData", +function(nPoints){ +this.skipDataVFR(nPoints); +if (this.isBXSF) JU.Logger.info(this.rd()); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKit.js b/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKit.js new file mode 100755 index 000000000000..aca6f14deec3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKit.js @@ -0,0 +1,2797 @@ +Clazz.declarePackage("J.modelkit"); +Clazz.load(["JU.Vibration", "JU.BS", "$.P3", "J.i18n.GT"], "J.modelkit.ModelKit", ["java.util.Arrays", "$.Hashtable", "JU.AU", "$.Lst", "$.M4", "$.Measure", "$.PT", "$.Quat", "$.SB", "$.V3", "JS.SV", "JU.BSUtil", "$.Edge", "$.Elements", "$.Logger", "$.SimpleUnitCell", "JV.JC", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.menu = null; +this.state = 0; +this.atomHoverLabel = "C"; +this.bondHoverLabel = J.i18n.GT.$("increase order"); +this.allOperators = null; +this.currentModelIndex = -1; +this.lastModelSet = null; +this.lastElementType = "C"; +this.bsHighlight = null; +this.bondIndex = -1; +this.bondAtomIndex1 = -1; +this.bondAtomIndex2 = -1; +this.bsRotateBranch = null; +this.branchAtomIndex = 0; +this.screenXY = null; +this.$isPickAtomAssignCharge = false; +this.isRotateBond = false; +this.showSymopInfo = true; +this.hasUnitCell = false; +this.alertedNoEdit = false; +this.$wasRotating = false; +this.addHydrogens = true; +this.clickToSetElement = true; +this.autoBond = false; +this.centerPoint = null; +this.pickAtomAssignType = "C"; +this.pickBondAssignType = 'p'; +this.viewOffset = null; +this.centerDistance = 0; +this.symop = null; +this.centerAtomIndex = -1; +this.secondAtomIndex = -1; +this.drawData = null; +this.drawScript = null; +this.iatom0 = 0; +this.lastCenter = "0 0 0"; +this.lastOffset = "0 0 0"; +this.a0 = null; +this.a3 = null; +this.constraint = null; +this.atomConstraints = null; +this.minBasisAtoms = null; +this.modelSyms = null; +this.minBasis = null; +this.minBasisFixed = null; +this.minBasisModelAtoms = null; +this.minBasisModel = 0; +this.minSelectionSaved = null; +this.minTempFixed = null; +this.minTempModelAtoms = null; +this.$setElementKeys = false; +this.bsElementKeyModels = null; +this.bsElementKeyModelsOFF = null; +this.haveElementKeys = false; +if (!Clazz.isClassDefined("J.modelkit.ModelKit.DrawAtomSet")) { +J.modelkit.ModelKit.$ModelKit$DrawAtomSet$ (); +} +this.drawAtomSymmetry = null; +Clazz.instantialize(this, arguments);}, J.modelkit, "ModelKit", null); +Clazz.prepareFields (c$, function(){ +this.bsHighlight = new JU.BS(); +this.screenXY = Clazz.newIntArray (2, 0); +this.bsElementKeyModels = new JU.BS(); +this.bsElementKeyModelsOFF = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +c$.getText = Clazz.defineMethod(c$, "getText", +function(key){ +switch (("invSter delAtom dragBon dragAto dragMin dragMol dragMMo incChar decChar rotBond bondTo0 bondTo1 bondTo2 bondTo3 incBond decBond").indexOf(key.substring(0, 7))) { +case 0: +return J.i18n.GT.$("invert ring stereochemistry"); +case 8: +return J.i18n.GT.$("delete atom"); +case 16: +return J.i18n.GT.$("drag to bond"); +case 24: +return J.i18n.GT.$("drag atom"); +case 32: +return J.i18n.GT.$("drag atom (and minimize)"); +case 40: +return J.i18n.GT.$("drag molecule (ALT to rotate)"); +case 48: +return J.i18n.GT.$("drag and minimize molecule (docking)"); +case 56: +return J.i18n.GT.$("increase charge"); +case 64: +return J.i18n.GT.$("decrease charge"); +case 72: +return J.i18n.GT.$("rotate bond"); +case 80: +return J.i18n.GT.$("delete bond"); +case 88: +return J.i18n.GT.$("single"); +case 96: +return J.i18n.GT.$("double"); +case 104: +return J.i18n.GT.$("triple"); +case 112: +return J.i18n.GT.$("increase order"); +case 120: +return J.i18n.GT.$("decrease order"); +} +return key; +}, "~S"); +c$.getTransform = Clazz.defineMethod(c$, "getTransform", +function(sym, a, b){ +var fa = JU.P3.newP(a); +sym.toFractional(fa, false); +var fb = JU.P3.newP(b); +sym.toFractional(fb, false); +return sym.getTransform(fa, fb, true); +}, "J.api.SymmetryInterface,JM.Atom,JM.Atom"); +c$.getElementKey = Clazz.defineMethod(c$, "getElementKey", +function(modelIndex){ +return "_!_elkey_" + (modelIndex < 0 ? "" : modelIndex + "_"); +}, "~N"); +c$.isTrue = Clazz.defineMethod(c$, "isTrue", +function(value){ +return (Boolean.$valueOf(value.toString()) === Boolean.TRUE); +}, "~O"); +c$.keyToElement = Clazz.defineMethod(c$, "keyToElement", +function(key){ +var ch1 = (key & 0xFF); +var ch2 = (key >> 8) & 0xFF; +var element = "" + String.fromCharCode(ch1) + (ch2 == 0 ? "" : ("" + String.fromCharCode(ch2)).toLowerCase()); +var n = JU.Elements.elementNumberFromSymbol(element, true); +return (n == 0 ? null : element); +}, "~N"); +c$.notImplemented = Clazz.defineMethod(c$, "notImplemented", +function(action){ +System.err.println("ModelKit.notImplemented(" + action + ")"); +}, "~S"); +c$.pointFromTriad = Clazz.defineMethod(c$, "pointFromTriad", +function(pos){ +var a = JU.PT.parseFloatArray(JU.PT.replaceAllCharacters(pos, "{,}", " ")); +return (a.length == 3 && !Float.isNaN(a[2]) ? JU.P3.new3(a[0], a[1], a[2]) : null); +}, "~S"); +Clazz.defineMethod(c$, "actionRotateBond", +function(deltaX, deltaY, x, y, forceFull){ +if (this.bondIndex < 0) return; +var bsBranch = this.bsRotateBranch; +var atomFix; +var atomMove; +var ms = this.vwr.ms; +var b = ms.bo[this.bondIndex]; +if (forceFull) { +bsBranch = null; +this.branchAtomIndex = -1; +}if (bsBranch == null) { +atomMove = (this.branchAtomIndex == b.atom1.i ? b.atom1 : b.atom2); +atomFix = (atomMove === b.atom1 ? b.atom2 : b.atom1); +this.vwr.undoMoveActionClear(atomFix.i, 2, true); +if (this.branchAtomIndex >= 0) bsBranch = this.vwr.getBranchBitSet(atomMove.i, atomFix.i, true); +if (bsBranch != null) for (var n = 0, i = atomFix.bonds.length; --i >= 0; ) { +if (bsBranch.get(atomFix.getBondedAtomIndex(i)) && ++n == 2) { +bsBranch = null; +break; +}} +if (bsBranch == null) { +bsBranch = ms.getMoleculeBitSetForAtom(atomFix.i); +forceFull = true; +}this.bsRotateBranch = bsBranch; +this.bondAtomIndex1 = atomFix.i; +this.bondAtomIndex2 = atomMove.i; +} else { +atomFix = ms.at[this.bondAtomIndex1]; +atomMove = ms.at[this.bondAtomIndex2]; +}if (forceFull) this.bsRotateBranch = null; +var v1 = JU.V3.new3(atomMove.sX - atomFix.sX, atomMove.sY - atomFix.sY, 0); +v1.scale(1 / v1.length()); +var v2 = JU.V3.new3(deltaX, deltaY, 0); +v1.cross(v1, v2); +var f = (v1.z > 0 ? 1 : -1); +var degrees = f * (Clazz.doubleToInt(Clazz.floatToInt(v2.length()) / 2) + 1); +if (!forceFull && this.a0 != null) { +var ang0 = JU.Measure.computeTorsion(this.a0, b.atom1, b.atom2, this.a3, true); +var ang1 = Math.round(ang0 + degrees); +degrees = ang1 - ang0; +}var bs = JU.BSUtil.copy(bsBranch); +bs.andNot(this.vwr.slm.getMotionFixedAtoms()); +this.vwr.rotateAboutPointsInternal(null, atomFix, atomMove, 0, degrees, false, bs, null, null, null, null, true); +}, "~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "addLockedAtoms", +function(sg, bsLocked){ +if (this.vwr.am.cmi < 0 || bsLocked.cardinality() == 0) return; +var bsm = this.vwr.getThisModelAtoms(); +var i0 = bsLocked.nextSetBit(0); +if (sg == null && (sg = this.getSym(i0)) == null) return; +for (var i = bsm.nextSetBit(0); i >= 0; i = bsm.nextSetBit(i + 1)) { +if (this.setConstraint(sg, i, J.modelkit.ModelKit.GET_CREATE).type == 6) { +bsLocked.set(i); +}} +}, "J.api.SymmetryInterface,JU.BS"); +Clazz.defineMethod(c$, "checkMovedAtoms", +function(bsFixed, bsAtoms, apos0){ +var i0 = bsAtoms.nextSetBit(0); +var n = bsAtoms.cardinality(); +var apos = new Array(n); +try { +var atoms = this.vwr.ms.at; +for (var ip = 0, i = i0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +apos[ip++] = JU.P3.newP(atoms[i]); +atoms[i].setT(apos0[i]); +} +var maxSite = 0; +for (var i = i0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var s = this.vwr.ms.at[i].getAtomSite(); +if (s > maxSite) maxSite = s; +} +var sites = Clazz.newIntArray (maxSite, 0); +var p1 = new JU.P3(); +var bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.ms.at[i0].mi); +var bsMoved = new JU.BS(); +for (var ip = 0, i = i0; i >= 0; i = bsAtoms.nextSetBit(i + 1), ip++) { +p1.setT(apos[ip]); +var s = this.vwr.ms.at[i].getAtomSite() - 1; +if (sites[s] == 0) { +sites[s] = i + 1; +bsMoved = this.moveConstrained(i, bsFixed, bsModelAtoms, p1, true, false, bsMoved); +if (bsMoved == null) { +n = 0; +break; +}}} +return (n != 0 && this.checkAtomPositions(apos0, apos, bsAtoms) ? n : 0); +} finally { +if (n == 0) { +this.vwr.ms.restoreAtomPositions(apos0); +bsAtoms.clearAll(); +} else { +this.updateDrawAtomSymmetry("atomsMoved", bsAtoms); +}} +}, "JU.BS,JU.BS,~A"); +Clazz.defineMethod(c$, "checkOption", +function(type, key){ +var check = null; +switch ((type).charCodeAt(0)) { +case 77: +check = ";view;edit;molecular;"; +break; +case 83: +check = ";none;applylocal;retainlocal;applyfull;"; +break; +case 85: +check = ";packed;extend;"; +break; +case 66: +check = ";key;elementkey;autobond;hidden;showsymopinfo;clicktosetelement;addhydrogen;addhydrogens;"; +break; +} +return (check != null && JU.PT.isOneOf(key.toLowerCase(), check)); +}, "~S,~S"); +Clazz.defineMethod(c$, "clearAtomConstraints", +function(){ +this.modelSyms = null; +this.minBasisAtoms = null; +if (this.atomConstraints != null) { +for (var i = this.atomConstraints.length; --i >= 0; ) this.atomConstraints[i] = null; + +}}); +Clazz.defineMethod(c$, "clickAssignAtom", +function(atomIndex, element, ptNew){ +var n = this.addAtomType(element, Clazz.newArray(-1, [(ptNew == null ? null : ptNew)]), JU.BSUtil.newAndSetBit(atomIndex), "", null, "click"); +if (n > 0) this.vwr.setPickingMode("dragAtom", 0); +}, "~N,~S,JU.P3"); +Clazz.defineMethod(c$, "cmdAssignAddAtoms", +function(type, pts, bsAtoms, packing, cmd){ +if (type.startsWith("_")) type = type.substring(1); +return Math.abs(this.addAtomType(type, pts, bsAtoms, packing, null, cmd)); +}, "~S,~A,JU.BS,~S,~S"); +Clazz.defineMethod(c$, "cmdAssignAtom", +function(bs, pt, type, cmd){ +if (pt != null && bs != null && bs.cardinality() > 1) bs = JU.BSUtil.newAndSetBit(bs.nextSetBit(0)); +if (type.startsWith("_")) type = type.substring(1); +this.assignAtomNoAddedSymmetry(pt, -1, bs, type, (pt != null), cmd, 0); +}, "JU.BS,JU.P3,~S,~S"); +Clazz.defineMethod(c$, "cmdAssignBond", +function(bondIndex, type, cmd){ +this.assignBondAndType(bondIndex, this.getBondOrder(type, this.vwr.ms.bo[bondIndex]), type, cmd); +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "cmdAssignConnect", +function(index, index2, type, cmd){ +var atoms = this.vwr.ms.at; +var a; +var b; +if (index < 0 || index2 < 0 || index >= atoms.length || index2 >= atoms.length || (a = atoms[index]) == null || (b = atoms[index2]) == null) return; +var state = this.getMKState(); +try { +var bond = null; +if (type != '1') { +var bs = new JU.BS(); +bs.set(index); +bs.set(index2); +bs = this.vwr.getBondsForSelectedAtoms(bs); +bond = this.vwr.ms.bo[bs.nextSetBit(0)]; +}var bondOrder = this.getBondOrder(type, bond); +var bs1 = this.vwr.ms.getSymmetryEquivAtoms(JU.BSUtil.newAndSetBit(index), null, null); +var bs2 = this.vwr.ms.getSymmetryEquivAtoms(JU.BSUtil.newAndSetBit(index2), null, null); +this.connectAtoms(a.distance(b), bondOrder, bs1, bs2); +if (this.vwr.getOperativeSymmetry() == null) { +bond = a.getBond(b); +if (bond != null) { +bs1.or(bs2); +this.assignBond(bond.index, 1, bs1); +}}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} finally { +this.setMKState(state); +} +}, "~N,~N,~S,~S"); +Clazz.defineMethod(c$, "cmdAssignDeleteAtoms", +function(bs){ +this.clearAtomConstraints(); +bs.and(this.vwr.getThisModelAtoms()); +bs = this.vwr.ms.getSymmetryEquivAtoms(bs, null, null); +if (!bs.isEmpty()) { +this.vwr.deleteAtoms(bs, false); +}return bs.cardinality(); +}, "JU.BS"); +Clazz.defineMethod(c$, "cmdAssignMoveAtoms", +function(bsSelected, iatom, p, pts, allowProjection, isMolecule){ +var sym = this.getSym(iatom); +var n; +if (sym != null) { +if (this.addHydrogens) this.vwr.ms.addConnectedHAtoms(this.vwr.ms.at[iatom], bsSelected); +n = this.assignMoveAtoms(sym, bsSelected, null, null, iatom, p, pts, allowProjection, isMolecule); +} else { +n = this.vwr.moveAtomWithHydrogens(iatom, this.addHydrogens ? 1 : 0, 0, 0, p, null); +}if (n == 0) this.vwr.showString("could not move atoms!", false); +return n; +}, "JU.BS,~N,JU.P3,~A,~B,~B"); +Clazz.defineMethod(c$, "cmdAssignSpaceGroup", +function(bs, name, paramsOrUC, isPacked, doDraw, cmd){ +var sym0 = this.vwr.getCurrentUnitCell(); +var sym = this.vwr.getOperativeSymmetry(); +if (sym0 != null && sym !== sym0) sym.getUnitCell(sym0.getV0abc(null, null), false, "modelkit"); +var sb = new JU.SB(); +var ret = this.assignSpaceGroup(sym, null, bs, paramsOrUC, JU.PT.split(name, ">"), 0, null, null, sb); +if (ret.endsWith("!")) return ret; +if (isPacked) { +var n; +if (doDraw) { +n = this.cmdAssignAddAtoms("N:G", null, null, "packed", cmd); +} else { +var transform = ret; +var bsModelAtoms = this.vwr.getThisModelAtoms(); +n = this.cmdAssignSpaceGroupPacked(bsModelAtoms, transform, cmd); +}sb.append("\n").append(J.i18n.GT.i(J.i18n.GT.$("{0} atoms added"), n)); +}var msg = sb.toString(); +var isError = msg.endsWith("!"); +if (doDraw && !isError) { +var s = this.drawSymmetry("sym", false, -1, null, 2147483647, null, null, null, 0, -2, 0, null, true); +this.appRunScript(s); +}return msg; +}, "JU.BS,~S,~O,~B,~B,~S"); +Clazz.defineMethod(c$, "cmdAssignSpaceGroupPacked", +function(bsAtoms, transform, cmd){ +var sym = this.vwr.getOperativeSymmetry(); +if (sym == null) return 0; +var opsCtr = sym.getSpaceGroupInfoObj("opsCtr", transform, false, false); +var n0 = bsAtoms.cardinality(); +this.addAtoms(null, null, bsAtoms, "packed", opsCtr, cmd); +bsAtoms = this.vwr.getThisModelAtoms(); +this.vwr.ms.setSpaceGroup(this.vwr.am.cmi, sym, new JU.BS()); +return bsAtoms.cardinality() - n0; +}, "JU.BS,~S,~S"); +Clazz.defineMethod(c$, "cmdMinimize", +function(eval, bsBasis, steps, crit, rangeFixed, flags){ +var wasAppend = this.vwr.getBoolean(603979792); +try { +this.vwr.setBooleanProperty("appendNew", true); +this.minimizeXtal(eval, bsBasis, steps, crit, rangeFixed, flags); +} finally { +this.vwr.setBooleanProperty("appendNew", wasAppend); +} +}, "J.api.JmolScriptEvaluator,JU.BS,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "cmdRotateAtoms", +function(bsAtoms, points, endDegrees){ +return this.rotateAtoms(bsAtoms, points, endDegrees); +}, "JU.BS,~A,~N"); +Clazz.defineMethod(c$, "dispose", +function(){ +this.menu.jpiDispose(); +this.menu.modelkit = null; +this.menu = null; +this.vwr = null; +}); +Clazz.defineMethod(c$, "getActiveMenu", +function(){ +return this.menu.activeMenu; +}); +Clazz.defineMethod(c$, "getDefaultModel", +function(){ +return (this.addHydrogens ? "5\n\nC 0 0 0\nH .63 .63 .63\nH -.63 -.63 .63\nH -.63 .63 -.63\nH .63 -.63 -.63" : "1\n\nC 0 0 0\n"); +}); +Clazz.defineMethod(c$, "getProperty", +function(name){ +name = name.toLowerCase().intern(); +if (name === "exists") return Boolean.TRUE; +if (name === "constraint") { +return this.constraint; +}if (name === "ismolecular") { +return Boolean.$valueOf(this.getMKState() == 0); +}if (name === "key" || name === "elementkey") { +return Boolean.$valueOf(this.isElementKeyOn(this.vwr.am.cmi)); +}if (name === "minimizing") return Boolean.$valueOf(this.minBasis != null); +if (name === "alloperators") { +return this.allOperators; +}if (name === "data") { +return this.getinfo(); +}return this.setProperty(name, null); +}, "~S"); +Clazz.defineMethod(c$, "getRotateBondIndex", +function(){ +return (this.getMKState() == 0 && this.isRotateBond ? this.bondIndex : -1); +}); +Clazz.defineMethod(c$, "getSym", +function(iatom){ +var modelIndex = this.vwr.ms.at[iatom].mi; +if (this.modelSyms == null || modelIndex >= this.modelSyms.length) { +this.modelSyms = new Array(this.vwr.ms.mc); +for (var imodel = this.modelSyms.length; --imodel >= 0; ) { +var sym = this.vwr.ms.getUnitCell(imodel); +if (sym == null || sym.getSymmetryOperations() != null) this.modelSyms[imodel] = sym; +} +}return (iatom < 0 ? null : this.modelSyms[modelIndex]); +}, "~N"); +Clazz.defineMethod(c$, "handleAssignNew", +function(pressed, dragged, mp, dragAtomIndex, key){ +var inRange = pressed.inRange(10, dragged.x, dragged.y); +if (mp != null && this.handleAtomDragging(mp.countPlusIndices)) return true; +var atomType = (key < 0 ? this.pickAtomAssignType : J.modelkit.ModelKit.keyToElement(key)); +if (atomType == null) return false; +var x = (inRange ? pressed.x : dragged.x); +var y = (inRange ? pressed.y : dragged.y); +if (this.vwr.antialiased) { +x <<= 1; +y <<= 1; +}return this.handleAtomOrBondPicked(x, y, mp, dragAtomIndex, atomType, inRange); +}, "JV.MouseState,JV.MouseState,JM.MeasurementPending,~N,~N"); +Clazz.defineMethod(c$, "hasConstraint", +function(iatom, ignoreGeneral, addNew){ +var c = this.setConstraint(this.getSym(iatom), iatom, addNew ? J.modelkit.ModelKit.GET_CREATE : J.modelkit.ModelKit.GET); +return (c != null && (!ignoreGeneral || c.type != 7)); +}, "~N,~B,~B"); +Clazz.defineMethod(c$, "initializeForModel", +function(isZap){ +this.resetBondFields(); +this.allOperators = null; +this.currentModelIndex = -999; +this.iatom0 = 0; +this.centerAtomIndex = this.secondAtomIndex = -1; +this.centerPoint = null; +this.symop = null; +this.setDefaultState(0); +if (isZap) { +if (this.$setElementKeys) { +this.updateModelElementKey(this.vwr.am.cmi, true); +}this.bsElementKeyModels.clearAll(); +this.bsElementKeyModelsOFF.clearAll(); +}}, "~B"); +Clazz.defineMethod(c$, "isHidden", +function(){ +return this.menu.hidden; +}); +Clazz.defineMethod(c$, "isPickAtomAssignCharge", +function(){ +return this.$isPickAtomAssignCharge; +}); +Clazz.defineMethod(c$, "minimizeEnd", +function(bsBasis2, isEnd){ +this.minimizeXtalEnd(bsBasis2, isEnd); +this.vwr.refresh(1, "modelkit minimize"); +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "moveMinConstrained", +function(iatom, p, bsAtoms){ +var bsMoved = this.moveConstrained(iatom, null, bsAtoms, p, true, true, null); +return (bsMoved == null ? 0 : bsMoved.cardinality()); +}, "~N,JU.P3,JU.BS"); +Clazz.defineMethod(c$, "setBondMeasure", +function(bi, mp){ +if (this.branchAtomIndex < 0) return null; +var b = this.vwr.ms.bo[bi]; +var a1 = b.atom1; +var a2 = b.atom2; +this.a0 = this.a3 = null; +if (a1.getCovalentBondCount() == 1 || a2.getCovalentBondCount() == 1) return null; +mp.addPoint((this.a0 = J.modelkit.ModelKit.getNearestBondedAtom(a1, a2)).i, null, true); +mp.addPoint(a1.i, null, true); +mp.addPoint(a2.i, null, true); +mp.addPoint((this.a3 = J.modelkit.ModelKit.getNearestBondedAtom(a2, a1)).i, null, true); +mp.mad = 50; +mp.inFront = true; +return mp; +}, "~N,JM.MeasurementPending"); +Clazz.defineMethod(c$, "setMenu", +function(menu){ +this.menu = menu; +this.vwr = menu.vwr; +menu.modelkit = this; +this.initializeForModel(false); +}, "J.modelkit.ModelKitPopup"); +Clazz.defineMethod(c$, "setProperty", +function(key, value){ +try { +if (this.vwr == null) return null; +key = key.toLowerCase().intern(); +if (key === "hoverlabel") { +return this.getHoverLabel((value).intValue()); +}if (key === "initializemodel") { +this.initializeForModel(true); +return null; +}if (key === "atomset") { +this.addAtomSet(value); +return null; +}if (key === "atomsMoved") { +if (this.drawAtomSymmetry != null) { +this.updateDrawAtomSymmetry(key, (value)[0]); +}return null; +}if (key === "updatemodelkeys") { +if (this.haveElementKeys) this.updateModelElementKeys(value == null ? null : (value)[1], true); +if (this.drawAtomSymmetry != null && value != null) { +this.updateDrawAtomSymmetry("atomsDeleted", (value)[0]); +}return null; +}if (key === "updatekeysfromstate") { +this.updateElementKeyFromStateScript(); +return null; +}if (key === "updateatomkeys") { +var bsAtoms = value; +this.updateElementKey(bsAtoms); +return null; +}if (key === "setelementkey") { +this.setElementKeys(J.modelkit.ModelKit.isTrue(value)); +return null; +}if (key === "frameresized") { +this.clearElementKey(-2); +this.updateModelElementKeys(null, true); +return null; +}if (key === "key" || key === "elementkey") { +var mi = this.vwr.am.cmi; +var isOn = J.modelkit.ModelKit.isTrue(value); +this.bsElementKeyModelsOFF.setBitTo(mi, !isOn); +this.bsElementKeyModels.setBitTo(mi, false); +this.setElementKey(mi, isOn); +return isOn ? "true" : "false"; +}if (key === "branchatomclicked") { +if (this.isRotateBond && !this.vwr.acm.isHoverable()) this.setBranchAtom((value).intValue(), true); +return null; +}if (key === "branchatomdragged") { +if (this.isRotateBond) this.setBranchAtom((value).intValue(), true); +return null; +}if (key === "hidemenu") { +this.menu.hidePopup(); +return null; +}if (key === "constraint") { +this.constraint = null; +this.clearAtomConstraints(); +var o = value; +if (o != null) { +var v1 = o[0]; +var v2 = o[1]; +var plane = o[2]; +if (v1 != null && v2 != null) { +this.constraint = new J.modelkit.ModelKit.Constraint(null, 4, Clazz.newArray(-1, [v1, v2])); +} else if (plane != null) { +this.constraint = new J.modelkit.ModelKit.Constraint(null, 5, Clazz.newArray(-1, [plane])); +} else if (v1 != null) this.constraint = new J.modelkit.ModelKit.Constraint(null, 6, null); +}return null; +}if (key === "reset") { +return null; +}if (key === "atompickingmode") { +if (JU.PT.isOneOf(value, ";identify;off;")) { +this.exitBondRotation(null); +this.vwr.setBooleanProperty("bondPicking", false); +this.vwr.acm.exitMeasurementMode("modelkit"); +}if ("dragatom".equals(value)) { +this.setHoverLabel("atomMenu", J.modelkit.ModelKit.getText("dragAtom")); +}return null; +}if (key === "bondpickingmode") { +if (value.equals("deletebond")) { +this.exitBondRotation(J.modelkit.ModelKit.getText("bondTo0")); +} else if (value.equals("identifybond")) { +this.exitBondRotation(""); +}return null; +}if (key === "rotateBond") { +var i = (value).intValue(); +if (i != this.bondAtomIndex2) this.bondAtomIndex1 = i; +this.bsRotateBranch = null; +return null; +}if (key === "bondindex") { +if (value != null) { +this.setBondIndex((value).intValue(), false); +}return (this.bondIndex < 0 ? null : Integer.$valueOf(this.bondIndex)); +}if (key === "rotatebondindex") { +if (value != null) { +this.setBondIndex((value).intValue(), true); +}return (this.bondIndex < 0 ? null : Integer.$valueOf(this.bondIndex)); +}if (key === "highlight") { +this.bsHighlight.clearAll(); +if (value != null) this.bsHighlight.or(value); +return null; +}if (key === "mode") { +var isEdit = ("edit".equals(value)); +this.setMKState("view".equals(value) ? 1 : isEdit ? 2 : 0); +if (isEdit) this.addHydrogens = false; +return null; +}if (key === "symmetry") { +this.setDefaultState(2); +key = (value).toLowerCase().intern(); +this.setSymEdit(key === "applylocal" ? 32 : key === "retainlocal" ? 64 : key === "applyfull" ? 128 : 0); +this.showXtalSymmetry(); +return null; +}if (key === "unitcell") { +var isPacked = "packed".equals(value); +this.setUnitCell(isPacked ? 0 : 256); +this.viewOffset = (isPacked ? J.modelkit.ModelKit.Pt000 : null); +return null; +}if (key === "center") { +this.setDefaultState(1); +this.centerPoint = value; +this.lastCenter = this.centerPoint.x + " " + this.centerPoint.y + " " + this.centerPoint.z; +this.centerAtomIndex = (Clazz.instanceOf(this.centerPoint,"JM.Atom") ? (this.centerPoint).i : -1); +this.secondAtomIndex = -1; +this.clickProcessAtom(this.centerAtomIndex); +return null; +}if (key === "assignBond") { +this.cmdAssignBond((value).intValue(), this.pickBondAssignType, "click"); +return null; +}if (key === "addhydrogen" || key === "addhydrogens") { +if (value != null) this.addHydrogens = J.modelkit.ModelKit.isTrue(value); +return Boolean.$valueOf(this.addHydrogens); +}if (key === "autobond") { +if (value != null) this.autoBond = J.modelkit.ModelKit.isTrue(value); +return Boolean.$valueOf(this.autoBond); +}if (key === "clicktosetelement") { +if (value != null) this.clickToSetElement = J.modelkit.ModelKit.isTrue(value); +return Boolean.$valueOf(this.clickToSetElement); +}if (key === "hidden") { +if (value != null) { +this.menu.hidden = J.modelkit.ModelKit.isTrue(value); +if (this.menu.hidden) this.menu.hidePopup(); +this.vwr.setBooleanProperty("modelkitMode", true); +}return Boolean.$valueOf(this.menu.hidden); +}if (key === "showsymopinfo") { +if (value != null) this.showSymopInfo = J.modelkit.ModelKit.isTrue(value); +return Boolean.$valueOf(this.showSymopInfo); +}if (key === "symop") { +this.setDefaultState(1); +if (value != null) { +if (key === "hoverlabel") { +return this.getHoverLabel((value).intValue()); +}this.symop = value; +this.showSymop(this.symop); +}return this.symop; +}if (key === "atomtype") { +this.$wasRotating = this.isRotateBond; +this.isRotateBond = false; +if (value != null) { +this.pickAtomAssignType = value; +this.$isPickAtomAssignCharge = (this.pickAtomAssignType.equalsIgnoreCase("pl") || this.pickAtomAssignType.equalsIgnoreCase("mi")); +if (this.$isPickAtomAssignCharge) { +this.setHoverLabel("atomMenu", J.modelkit.ModelKit.getText(this.pickAtomAssignType.equalsIgnoreCase("mi") ? "decCharge" : "incCharge")); +} else if ("X".equals(this.pickAtomAssignType)) { +this.setHoverLabel("atomMenu", J.modelkit.ModelKit.getText("delAtom")); +} else if (this.pickAtomAssignType.equals("Xx")) { +this.setHoverLabel("atomMenu", J.modelkit.ModelKit.getText("dragBond")); +} else { +this.setHoverLabel("atomMenu", "Click or click+drag to bond or for a new " + this.pickAtomAssignType); +this.lastElementType = this.pickAtomAssignType; +}}return this.pickAtomAssignType; +}if (key === "bondtype") { +if (value != null) { +var s = (value).substring(0, 1).toLowerCase(); +if (" 0123456pm".indexOf(s) > 0) { +this.pickBondAssignType = s.charAt(0); +this.setHoverLabel("bondMenu", J.modelkit.ModelKit.getText(this.pickBondAssignType == 'm' ? "decBond" : this.pickBondAssignType == 'p' ? "incBond" : "bondTo" + s)); +}this.isRotateBond = false; +}return "" + this.pickBondAssignType; +}if (key === "offset") { +if (value === "none") { +this.viewOffset = null; +} else if (value != null) { +this.viewOffset = (Clazz.instanceOf(value,"JU.P3") ? value : J.modelkit.ModelKit.pointFromTriad(value.toString())); +if (this.viewOffset != null) this.setSymViewState(8); +}this.showXtalSymmetry(); +return this.viewOffset; +}if (key === "screenxy") { +if (value != null) { +this.screenXY = value; +this.vwr.acm.exitMeasurementMode("modelkit"); +}return this.screenXY; +}if (key === "invariant") { +var iatom = (Clazz.instanceOf(value,"JU.BS") ? (value).nextSetBit(0) : -1); +var atom = this.vwr.ms.getAtom(iatom); +return (atom == null ? null : this.vwr.getSymmetryInfo(iatom, null, -1, null, atom, atom, 1275068418, null, 0, 0, 0, null)); +}if (key === "distance") { +this.setDefaultState(2); +var d = (value == null ? NaN : Clazz.instanceOf(value, Float) ? (value).floatValue() : JU.PT.parseFloat(value)); +if (!Float.isNaN(d)) { +J.modelkit.ModelKit.notImplemented("setProperty: distance"); +this.centerDistance = d; +}return Float.$valueOf(this.centerDistance); +}if (key === "addconstraint") { +J.modelkit.ModelKit.notImplemented("setProperty: addConstraint"); +return null; +}if (key === "removeconstraint") { +J.modelkit.ModelKit.notImplemented("setProperty: removeConstraint"); +return null; +}if (key === "removeallconstraints") { +J.modelkit.ModelKit.notImplemented("setProperty: removeAllConstraints"); +return null; +}if (key === "vibration") { +J.modelkit.ModelKit.WyckoffModulation.setVibrationMode(this, value); +return null; +}System.err.println("ModelKit.setProperty? " + key + " " + value); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return "?"; +} else { +throw e; +} +} +return null; +}, "~S,~O"); +Clazz.defineMethod(c$, "showMenu", +function(x, y){ +this.menu.jpiShow(x, y); +}, "~N,~N"); +Clazz.defineMethod(c$, "updateMenu", +function(){ +this.menu.jpiUpdateComputedMenus(); +}); +Clazz.defineMethod(c$, "wasRotating", +function(){ +var b = this.$wasRotating; +this.$wasRotating = false; +return b; +}); +Clazz.defineMethod(c$, "checkNewModel", +function(){ +var isNew = false; +if (this.vwr.ms !== this.lastModelSet) { +this.lastModelSet = this.vwr.ms; +isNew = true; +}this.currentModelIndex = Math.max(this.vwr.am.cmi, 0); +this.iatom0 = this.vwr.ms.am[this.currentModelIndex].firstAtomIndex; +return isNew; +}); +Clazz.defineMethod(c$, "clickProcessXtal", +function(id, action){ +if (this.processSymop(id, false)) return; +action = action.intern(); +if (action.startsWith("mkmode_")) { +if (!this.alertedNoEdit && action === "mkmode_edit") { +this.alertedNoEdit = true; +this.vwr.alert("ModelKit xtal edit has not been implemented"); +return; +}this.clickProcessMode(action); +} else if (action.startsWith("mksel_")) { +this.clickProcessSel(action); +} else if (action.startsWith("mkselop_")) { +while (action != null) action = this.clickProcessSelOp(action); + +} else if (action.startsWith("mksymmetry_")) { +this.clickProcessSym(action); +} else if (action.startsWith("mkunitcell_")) { +this.clickProcessUC(action); +} else { +J.modelkit.ModelKit.notImplemented("XTAL click " + action); +}this.menu.updateAllXtalMenuOptions(); +}, "~S,~S"); +Clazz.defineMethod(c$, "exitBondRotation", +function(text){ +this.$wasRotating = this.isRotateBond; +this.isRotateBond = false; +if (text != null) this.bondHoverLabel = text; +this.vwr.highlight(null); +}, "~S"); +Clazz.defineMethod(c$, "getAllOperators", +function(){ +if (this.allOperators != null) return this.allOperators; +var data = this.runScriptBuffered("show symop"); +this.allOperators = JU.PT.split(data.trim().$replace('\t', ' '), "\n"); +return this.allOperators; +}); +Clazz.defineMethod(c$, "getBasisAtom", +function(iatom){ +if (this.minBasisAtoms == null) { +this.minBasisAtoms = new Array(this.vwr.ms.ac + 10); +}if (this.minBasisAtoms.length < iatom + 10) { +var a = new Array(this.vwr.ms.ac + 10); +System.arraycopy(this.minBasisAtoms, 0, a, 0, this.minBasisAtoms.length); +this.minBasisAtoms = a; +}var b = this.minBasisAtoms[iatom]; +return (b == null ? (this.minBasisAtoms[iatom] = this.vwr.ms.getBasisAtom(iatom, false)) : b); +}, "~N"); +Clazz.defineMethod(c$, "getCenterText", +function(){ +return (this.centerAtomIndex < 0 && this.centerPoint == null ? null : this.centerAtomIndex >= 0 ? this.vwr.getAtomInfo(this.centerAtomIndex) : this.centerPoint.toString()); +}); +Clazz.defineMethod(c$, "getElementFromUser", +function(){ +var element = this.promptUser(J.i18n.GT.$("Element?"), ""); +return (element == null || JU.Elements.elementNumberFromSymbol(element, true) == 0 ? null : element); +}); +Clazz.defineMethod(c$, "getMKState", +function(){ +return this.state & 3; +}); +Clazz.defineMethod(c$, "getSymEditState", +function(){ +return this.state & 224; +}); +Clazz.defineMethod(c$, "getSymopText", +function(){ +return (this.symop == null || this.allOperators == null ? null : Clazz.instanceOf(this.symop, Integer) ? this.allOperators[(this.symop).intValue() - 1] : this.symop.toString()); +}); +Clazz.defineMethod(c$, "getSymViewState", +function(){ +return this.state & 28; +}); +Clazz.defineMethod(c$, "getUnitCellState", +function(){ +return this.state & 1792; +}); +Clazz.defineMethod(c$, "isXtalState", +function(){ +return ((this.state & 3) != 0); +}); +Clazz.defineMethod(c$, "processMKPropertyItem", +function(name, TF){ +name = name.substring(2); +var pt = name.indexOf("_"); +if (pt > 0) { +this.setProperty(name.substring(0, pt), name.substring(pt + 1)); +} else { +this.setProperty(name, Boolean.$valueOf(TF)); +}}, "~S,~B"); +Clazz.defineMethod(c$, "processSymop", +function(id, isFocus){ +var pt = id.indexOf(".mkop_"); +if (pt >= 0) { +var op = this.symop; +this.symop = Integer.$valueOf(id.substring(pt + 6)); +this.showSymop(this.symop); +if (isFocus) this.symop = op; +return true; +}return false; +}, "~S,~B"); +Clazz.defineMethod(c$, "resetAtomPickType", +function(){ +this.setProperty("atomtype", this.lastElementType); +}); +Clazz.defineMethod(c$, "setConstraint", +function(sym, ia, mode){ +if (ia < 0) return null; +var a = this.getBasisAtom(ia); +var iatom = a.i; +var ac = (this.atomConstraints != null && iatom < this.atomConstraints.length ? this.atomConstraints[iatom] : null); +if (ac != null || mode != J.modelkit.ModelKit.GET_CREATE) { +if (ac != null && mode == J.modelkit.ModelKit.GET_DELETE) { +this.atomConstraints[iatom] = null; +}return ac; +}if (sym == null) return this.addConstraint(iatom, new J.modelkit.ModelKit.Constraint(a, 0, null)); +var ops = sym.getInvariantSymops(a, null); +if (JU.Logger.debugging) System.out.println("MK.getConstraint atomIndex=" + iatom + " symops=" + java.util.Arrays.toString(ops)); +if (ops.length == 0) return this.addConstraint(iatom, new J.modelkit.ModelKit.Constraint(a, 7, null)); +var plane1 = null; +var line1 = null; +for (var i = ops.length; --i >= 0; ) { +var line2 = null; +var c = sym.getSymmetryInfoAtom(this.vwr.ms, iatom, null, ops[i], null, a, null, "invariant", 1275068418, 0, -1, 0, null); +if ((typeof(c)=='string')) { +continue; +} else if (Clazz.instanceOf(c,"JU.P4")) { +var plane = c; +if (plane1 == null) { +plane1 = plane; +continue; +}var line = JU.Measure.getIntersectionPP(plane1, plane); +if (line == null || line.size() == 0) { +return J.modelkit.ModelKit.locked; +}line2 = Clazz.newArray(-1, [line.get(0), line.get(1)]); +} else if (Clazz.instanceOf(c,"JU.P3")) { +return J.modelkit.ModelKit.locked; +} else { +line2 = c; +}if (line2 != null) { +if (line1 == null) { +line1 = line2; +} else { +var v1 = line1[1]; +if (Math.abs(v1.dot(line2[1])) < 0.999) return J.modelkit.ModelKit.locked; +}if (plane1 != null) { +if (Math.abs(plane1.dot(line2[1])) > 0.001) return J.modelkit.ModelKit.locked; +}}} +if (line1 != null) { +line1[0] = JU.P3.newP(a); +}return this.addConstraint(iatom, line1 != null ? new J.modelkit.ModelKit.Constraint(a, 4, line1) : plane1 != null ? new J.modelkit.ModelKit.Constraint(a, 5, Clazz.newArray(-1, [plane1])) : new J.modelkit.ModelKit.Constraint(a, 7, null)); +}, "J.api.SymmetryInterface,~N,~N"); +Clazz.defineMethod(c$, "setHasUnitCell", +function(){ +return this.hasUnitCell = (this.vwr.getOperativeSymmetry() != null); +}); +Clazz.defineMethod(c$, "setHoverLabel", +function(mode, text){ +if (text == null) return; +if (mode === "bondMenu") { +this.bondHoverLabel = text; +} else if (mode === "atomMenu") { +this.atomHoverLabel = text; +} else if (mode === "xtalMenu") { +this.atomHoverLabel = text; +}}, "~S,~S"); +Clazz.defineMethod(c$, "setMKState", +function(bits){ +this.state = (this.state & -4) | (this.hasUnitCell ? bits : 0); +}, "~N"); +Clazz.defineMethod(c$, "addAtomType", +function(type, pts, bsAtoms, packing, opsCtr, cmd){ +var sym = this.vwr.getOperativeSymmetry(); +var ipt = type.indexOf(":"); +var wyckoff = (ipt > 0 && ipt == type.length - 2 ? type.substring(ipt + 1) : null); +if (wyckoff != null) { +type = type.substring(0, ipt); +if (sym != null) { +var o = sym.getWyckoffPosition(this.vwr, null, wyckoff); +if (!(Clazz.instanceOf(o,"JU.P3"))) return 0; +pts = Clazz.newArray(-1, [o]); +}}return this.addAtoms(type, pts, bsAtoms, packing, opsCtr, cmd); +}, "~S,~A,JU.BS,~S,~A,~S"); +Clazz.defineMethod(c$, "addAtoms", +function(type, pts, bsAtoms, packing, opsCtr, cmd){ +try { +this.vwr.pushHoldRepaintWhy("modelkit"); +var sym = this.vwr.getOperativeSymmetry(); +if (type != null) { +var ipt = type.indexOf(":"); +var wyckoff = (ipt > 0 && ipt == type.length - 2 ? type.substring(ipt + 1) : null); +if (wyckoff != null) { +type = type.substring(0, ipt); +if (sym != null) { +var o = sym.getWyckoffPosition(this.vwr, null, wyckoff); +if (!(Clazz.instanceOf(o,"JU.P3"))) return 0; +pts = Clazz.newArray(-1, [o]); +}}}var isPoint = (bsAtoms == null); +var atomIndex = (isPoint ? -1 : bsAtoms.nextSetBit(0)); +if (!isPoint && atomIndex < 0 || sym == null && type == null) return 0; +var n = 0; +if (sym == null) { +if (isPoint) { +for (var i = 0; i < pts.length; i++) this.assignAtomNoAddedSymmetry(pts[i], -1, null, type, true, cmd, -1); + +n = -pts.length; +} else { +this.assignAtomNoAddedSymmetry(pts[0], atomIndex, null, type, true, cmd, -1); +n = -1; +}} else { +n = this.addAtomsWithSymmetry(sym, bsAtoms, type, atomIndex, isPoint, pts, packing, opsCtr); +}return n; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return 0; +} else { +throw e; +} +} finally { +this.vwr.popHoldRepaint("modelkit"); +} +}, "~S,~A,JU.BS,~S,~A,~S"); +Clazz.defineMethod(c$, "addAtomsWithSymmetry", +function(sym, bsAtoms, type, atomIndex, isPoint, pts, packing, opsCtr){ +var bsM = this.vwr.getThisModelAtoms(); +var n = bsM.cardinality(); +if (n == 0) packing = "zapped;" + packing; +var stype = "" + type; +var points = new JU.Lst(); +var site = 0; +var pf = null; +if (pts != null && pts.length == 1 && pts[0] != null) { +pf = JU.P3.newP(pts[0]); +sym.toFractional(pf, false); +isPoint = true; +}for (var i = bsM.nextSetBit(0); i >= 0; i = bsM.nextSetBit(i + 1)) { +var p = JU.P3.newP(this.vwr.ms.at[i]); +sym.toFractional(p, false); +if (pf != null && pf.distanceSquared(p) < 1.96E-6) { +site = this.vwr.ms.at[i].getAtomSite(); +if (type == null || pts == null) type = this.vwr.ms.at[i].getElementSymbolIso(true); +}points.addLast(p); +} +var nInitial = points.size(); +packing = "fromfractional;tocartesian;" + packing; +if (isPoint) { +var bsEquiv = (bsAtoms == null ? null : this.vwr.ms.getSymmetryEquivAtoms(bsAtoms, null, null)); +for (var i = 0; i < pts.length; i++) { +this.assignAtoms(JU.P3.newP(pts[i]), atomIndex, bsEquiv, stype, true, null, false, site, sym, points, packing, null); +} +} else { +var sites = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.vwr.ms.at[i]; +site = a.getAtomSite(); +if (sites.get(site)) continue; +sites.set(site); +stype = (type == null ? a.getElementSymbolIso(true) : stype); +this.assignAtoms(JU.P3.newP(a), -1, null, stype, false, null, false, site, sym, points, packing, opsCtr); +if (opsCtr == null) { +for (var j = points.size(); --j >= nInitial; ) points.removeItemAt(j); + +} else { +for (var j = points.size(); --j >= nInitial; ) { +var p = points.get(j); +sym.toFractional(p, false); +} +nInitial = points.size(); +}} +}return this.vwr.getThisModelAtoms().cardinality() - n; +}, "J.api.SymmetryInterface,JU.BS,~S,~N,~B,~A,~S,~A"); +Clazz.defineMethod(c$, "addConstraint", +function(iatom, c){ +if (c == null) { +if (this.atomConstraints != null && this.atomConstraints.length > iatom) { +this.atomConstraints[iatom] = null; +}return null; +}if (this.atomConstraints == null) { +this.atomConstraints = new Array(this.vwr.ms.ac + 10); +}if (this.atomConstraints.length < iatom + 10) { +var a = new Array(this.vwr.ms.ac + 10); +System.arraycopy(this.atomConstraints, 0, a, 0, this.atomConstraints.length); +this.atomConstraints = a; +}return this.atomConstraints[iatom] = c; +}, "~N,J.modelkit.ModelKit.Constraint"); +Clazz.defineMethod(c$, "addInfo", +function(info, key, value){ +if (value != null) info.put(key, value); +}, "java.util.Map,~S,~O"); +Clazz.defineMethod(c$, "addOccupiedAtomsToBitset", +function(bsSelected){ +var bs = new JU.BS(); +for (var iatom = bsSelected.nextSetBit(0); iatom >= 0; iatom = bsSelected.nextSetBit(iatom + 1)) { +var a = this.vwr.ms.at[iatom]; +if (this.vwr.ms.getOccupancyFloat(a.i) == 100) { +bsSelected.set(a.i); +} else { +bs.clearAll(); +this.vwr.ms.getAtomsWithin(0.0001, a, bs, a.mi); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (this.vwr.ms.getOccupancyFloat(i) == 100) { +bs.clear(i); +bsSelected.clear(i); +}} +bsSelected.or(bs); +}} +}, "JU.BS"); +Clazz.defineMethod(c$, "appRunScript", +function(script){ +this.vwr.runScript(script); +}, "~S"); +Clazz.defineMethod(c$, "assignAtomNoAddedSymmetry", +function(pt, atomIndex, bs, type, newPoint, cmd, site){ +this.assignAtoms(pt, atomIndex, bs, type, newPoint, cmd, false, site, null, null, null, null); +}, "JU.P3,~N,JU.BS,~S,~B,~S,~N"); +Clazz.defineMethod(c$, "assignAtoms", +function(pt, atomIndex, bs, type, newPoint, cmd, isClick, site, sym, points, packing, opsCtr){ +if (sym == null) sym = this.vwr.getOperativeSymmetry(); +var haveAtomByIndex = (atomIndex >= 0); +var isMultipleAtoms = (bs != null && bs.cardinality() > 1); +var nIgnored = 0; +var np = 0; +if (!haveAtomByIndex) atomIndex = (bs == null ? -1 : bs.nextSetBit(0)); +var atom = (atomIndex < 0 ? null : this.vwr.ms.at[atomIndex]); +var bd = (pt != null && atom != null ? pt.distance(atom) : -1); +if (points != null) { +np = nIgnored = points.size(); +sym.toFractional(pt, false); +points.addLast(pt); +if (newPoint && haveAtomByIndex) nIgnored++; +sym.getEquivPointList(points, nIgnored, packing + (newPoint && atomIndex < 0 ? "newpt" : ""), opsCtr); +}var bsEquiv = (atom == null ? null : sym != null ? this.vwr.ms.getSymmetryEquivAtoms(bs, sym, null) : bs == null || bs.cardinality() == 0 ? JU.BSUtil.newAndSetBit(atomIndex) : bs); +var bs0 = (bsEquiv == null ? null : sym == null ? JU.BSUtil.newAndSetBit(atomIndex) : JU.BSUtil.copy(bsEquiv)); +var mi = (atom == null ? this.vwr.am.cmi : atom.mi); +var ac = this.vwr.ms.ac; +var state = this.getMKState(); +var isDelete = type.equals("X"); +try { +if (isDelete) { +if (isClick) { +this.setProperty("rotatebondindex", Integer.$valueOf(-1)); +}this.setConstraint(null, atomIndex, J.modelkit.ModelKit.GET_DELETE); +}if (pt == null && points == null) { +if (atom == null) return; +this.vwr.sm.setStatusStructureModified(atomIndex, mi, 1, cmd, 1, bsEquiv); +for (var i = bsEquiv.nextSetBit(0); i >= 0; i = bsEquiv.nextSetBit(i + 1)) { +this.assignAtom(i, type, this.autoBond, sym == null, isClick); +} +if (!JU.PT.isOneOf(type, ";Mi;Pl;X;")) this.vwr.ms.setAtomNamesAndNumbers(atomIndex, -ac, null, true); +this.vwr.sm.setStatusStructureModified(atomIndex, mi, -1, "OK", 1, bsEquiv); +this.vwr.refresh(3, "assignAtom"); +this.updateElementKey(null); +return; +}this.setMKState(0); +var pts; +if (points == null) { +pts = Clazz.newArray(-1, [pt]); +} else { +pts = new Array(Math.max(0, points.size() - np)); +for (var i = pts.length; --i >= 0; ) { +pts[i] = points.get(np + i); +} +}var vConnections = new JU.Lst(); +var isConnected = false; +if (site == 0) { +if (atom != null) { +if (!isMultipleAtoms) { +vConnections.addLast(atom); +isConnected = true; +} else if (sym != null) { +var p = JU.P3.newP(atom); +sym.toFractional(p, false); +bs.or(bsEquiv); +var list = sym.getEquivPoints(null, p, packing); +for (var j = 0, n = list.size(); j < n; j++) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (this.vwr.ms.at[i].distanceSquared(list.get(j)) < 0.001) { +vConnections.addLast(this.vwr.ms.at[i]); +bs.clear(i); +}} +} +}isConnected = (vConnections.size() == pts.length); +if (isConnected) { +var d = 3.4028235E38; +for (var i = pts.length; --i >= 0; ) { +var d1 = vConnections.get(i).distance(pts[i]); +if (d == 3.4028235E38) d1 = d; + else if (Math.abs(d1 - d) > 0.001) { +isConnected = false; +break; +}} +}if (!isConnected) { +vConnections.clear(); +}this.vwr.sm.setStatusStructureModified(atomIndex, mi, 3, cmd, 1, null); +}if (pt != null || points != null) { +var bsM = this.vwr.getThisModelAtoms(); +for (var i = bsM.nextSetBit(0); i >= 0; i = bsM.nextSetBit(i + 1)) { +var as = this.vwr.ms.at[i].getAtomSite(); +if (as > site) site = as; +} +site++; +}}var pickingMode = this.vwr.acm.getAtomPickingMode(); +var wasHidden = this.menu.hidden; +var isMK = this.vwr.getBoolean(603983903); +if (!isMK && sym == null) { +this.vwr.setBooleanProperty("modelkitmode", true); +this.menu.hidden = true; +this.menu.allowPopup = false; +}var htParams = new java.util.Hashtable(); +if (site > 0) htParams.put("fixedSite", Integer.$valueOf(site)); +htParams.put("element", type); +bs = this.vwr.addHydrogensInline(bs, vConnections, pts, htParams); +if (bd > 0 && !isConnected && vConnections.isEmpty()) { +this.connectAtoms(bd, 1, bs0, bs); +}if (!isMK) { +this.vwr.setBooleanProperty("modelkitmode", false); +this.menu.hidden = wasHidden; +this.menu.allowPopup = true; +this.vwr.acm.setPickingMode(pickingMode); +this.menu.hidePopup(); +}var atomIndexNew = bs.nextSetBit(0); +if (points == null) { +this.assignAtom(atomIndexNew, type, false, atomIndex >= 0 && sym == null, true); +if (atomIndex >= 0) { +var doAutobond = (sym == null && !"H".equals(type)); +this.assignAtom(atomIndex, ".", false, doAutobond, isClick); +}this.vwr.ms.setAtomNamesAndNumbers(atomIndexNew, -ac, null, true); +this.vwr.sm.setStatusStructureModified(atomIndexNew, mi, -3, "OK", 1, bs); +return; +}if (atomIndexNew >= 0) { +for (var i = atomIndexNew; i >= 0; i = bs.nextSetBit(i + 1)) { +this.assignAtom(i, type, false, false, true); +this.vwr.ms.setSite(this.vwr.ms.at[i], -1, false); +this.vwr.ms.setSite(this.vwr.ms.at[i], site, true); +} +this.vwr.ms.updateBasisFromSite(mi); +}var firstAtom = this.vwr.ms.am[mi].firstAtomIndex; +this.vwr.ms.setAtomNamesAndNumbers(firstAtom, -ac, null, true); +this.vwr.sm.setStatusStructureModified(-1, mi, -3, "OK", 1, bs); +this.updateModelElementKey(mi, true); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +ex.printStackTrace(); +} else { +throw ex; +} +} finally { +this.setMKState(state); +} +}, "JU.P3,~N,JU.BS,~S,~B,~S,~B,~N,J.api.SymmetryInterface,JU.Lst,~S,~A"); +Clazz.defineMethod(c$, "assignAtom", +function(atomIndex, type, autoBond, addHsAndBond, isClick){ +if (isClick) { +if (this.vwr.isModelkitPickingRotateBond()) { +this.bondAtomIndex1 = atomIndex; +return -1; +}if (this.clickProcessAtom(atomIndex) || !this.clickToSetElement && this.vwr.ms.getAtom(atomIndex).getElementNumber() != 1) return -1; +}var atom = this.vwr.ms.at[atomIndex]; +if (atom == null) return -1; +this.vwr.ms.clearDB(atomIndex); +if (type == null) type = "C"; +var bs = new JU.BS(); +var wasH = (atom.getElementNumber() == 1); +var atomicNumber = ("PPlMiX".indexOf(type) > 0 ? -1 : type.equals("Xx") ? 0 : JU.PT.isUpperCase(type.charAt(0)) ? JU.Elements.elementNumberFromSymbol(type, true) : -1); +var isDelete = false; +if (atomicNumber >= 0) { +var doTaint = (atomicNumber > 1 || !addHsAndBond); +this.vwr.ms.setElement(atom, atomicNumber, doTaint); +this.vwr.shm.setShapeSizeBs(0, 0, this.vwr.rd, JU.BSUtil.newAndSetBit(atomIndex)); +this.vwr.ms.setAtomName(atomIndex, type + atom.getAtomNumber(), doTaint); +if (this.vwr.getBoolean(603983903)) this.vwr.ms.am[atom.mi].isModelKit = true; +if (!this.vwr.ms.am[atom.mi].isModelKit || atomicNumber > 1) this.vwr.ms.taintAtom(atomIndex, 0); +} else if (type.toLowerCase().equals("pl")) { +atom.setFormalCharge(atom.getFormalCharge() + 1); +} else if (type.toLowerCase().equals("mi")) { +atom.setFormalCharge(atom.getFormalCharge() - 1); +} else if (type.equals("X")) { +isDelete = true; +} else if (!type.equals(".") || !this.addHydrogens) { +return -1; +}if (!addHsAndBond && !isDelete) return atomicNumber; +if (!wasH) this.vwr.ms.removeUnnecessaryBonds(atom, isDelete); +var dx = 0; +if (atom.getCovalentBondCount() == 1) { +if (atomicNumber == 1) { +dx = 1.0; +} else { +dx = 1.5; +}}if (dx != 0) { +var v = JU.V3.newVsub(atom, this.vwr.ms.at[atom.getBondedAtomIndex(0)]); +var d = v.length(); +v.normalize(); +v.scale(dx - d); +this.vwr.ms.setAtomCoordRelative(atomIndex, v.x, v.y, v.z); +}var bsA = JU.BSUtil.newAndSetBit(atomIndex); +if (isDelete) { +this.vwr.deleteAtoms(bsA, false); +}if (atomicNumber != 1 && autoBond) { +this.vwr.ms.validateBspf(false); +bs = this.vwr.ms.getAtomsWithinRadius(1.0, bsA, false, null, null); +bs.andNot(bsA); +if (bs.nextSetBit(0) >= 0) this.vwr.deleteAtoms(bs, false); +bs = this.vwr.getModelUndeletedAtomsBitSet(atom.mi); +bs.andNot(this.vwr.ms.getAtomBitsMDa(1612709900, null, new JU.BS())); +this.vwr.ms.makeConnections2(0.1, 1.8, 1, 1073741904, bsA, bs, null, false, false, 0, null); +}if (this.addHydrogens) this.vwr.addHydrogens(bsA, 1); +return atomicNumber; +}, "~N,~S,~B,~B,~B"); +Clazz.defineMethod(c$, "assignBond", +function(bondIndex, bondOrder, bsAtoms){ +var bond = this.vwr.ms.bo[bondIndex]; +this.vwr.ms.clearDB(bond.atom1.i); +if (bondOrder < 0) return false; +try { +var a1H = (bond.atom1.getElementNumber() == 1); +var isH = (a1H || bond.atom2.getElementNumber() == 1); +if (isH && bondOrder > 1) { +this.vwr.deleteAtoms(JU.BSUtil.newAndSetBit(a1H ? bond.atom1.i : bond.atom2.i), false); +return true; +}if (bondOrder == 0) { +this.vwr.deleteBonds(JU.BSUtil.newAndSetBit(bond.index)); +} else { +bond.setOrder(bondOrder | 131072); +if (!isH) { +this.vwr.ms.removeUnnecessaryBonds(bond.atom1, false); +this.vwr.ms.removeUnnecessaryBonds(bond.atom2, false); +}}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Exception in seBondOrder: " + e.toString()); +} else { +throw e; +} +} +if (bondOrder != 0 && this.addHydrogens) this.vwr.addHydrogens(bsAtoms, 1); +return true; +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "assignBondAndType", +function(bondIndex, bondOrder, type, cmd){ +var modelIndex = -1; +var state = this.getMKState(); +try { +this.setMKState(0); +var a1 = this.vwr.ms.bo[bondIndex].atom1; +modelIndex = a1.mi; +var ac = this.vwr.ms.ac; +var bsAtoms = JU.BSUtil.newAndSetBit(a1.i); +bsAtoms.set(this.vwr.ms.bo[bondIndex].atom2.i); +this.vwr.sm.setStatusStructureModified(bondIndex, modelIndex, 6, cmd, 1, bsAtoms); +this.assignBond(bondIndex, bondOrder, bsAtoms); +this.vwr.ms.setAtomNamesAndNumbers(a1.i, -ac, null, true); +this.vwr.refresh(3, "setBondOrder"); +this.vwr.sm.setStatusStructureModified(bondIndex, modelIndex, -6, "" + type, 1, bsAtoms); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +JU.Logger.error("assignBond failed"); +this.vwr.sm.setStatusStructureModified(bondIndex, modelIndex, -6, "ERROR " + ex, 1, null); +} else { +throw ex; +} +} finally { +this.setMKState(state); +} +}, "~N,~N,~S,~S"); +Clazz.defineMethod(c$, "assignMoveAtom", +function(iatom, pt, bsFixed, bsModelAtoms, bsMoved){ +if (Float.isNaN(pt.x) || iatom < 0) return 0; +var bs = JU.BSUtil.newAndSetBit(iatom); +if (bsModelAtoms == null) bsModelAtoms = this.vwr.getThisModelAtoms(); +bs.and(bsModelAtoms); +if (bs.isEmpty()) return 0; +var state = this.getMKState(); +this.setMKState(0); +var n = 0; +try { +var sym = this.getSym(iatom); +var bseq = new JU.BS(); +this.vwr.ms.getSymmetryEquivAtomsForAtom(iatom, null, bsModelAtoms, bseq); +if (this.setConstraint(sym, bseq.nextSetBit(0), J.modelkit.ModelKit.GET_CREATE).type == 6) { +return 0; +}if (bsFixed != null && !bsFixed.isEmpty()) bseq.andNot(bsFixed); +n = bseq.cardinality(); +if (n == 0) { +return 0; +}var a = this.vwr.ms.at[iatom]; +var v0 = sym.getInvariantSymops(a, null); +var v1 = sym.getInvariantSymops(pt, v0); +if ((v1 == null) != (v0 == null) || !java.util.Arrays.equals(v0, v1)) return 0; +var points = new Array(n); +var ia0 = bseq.nextSetBit(0); +if (!this.fillPointsForMove(sym, bseq, ia0, a, pt, points)) { +return 0; +}bsMoved.or(bseq); +var mi = this.vwr.ms.at[ia0].mi; +this.vwr.sm.setStatusStructureModified(ia0, mi, 3, "dragatom", n, bseq); +for (var k = 0, ia = bseq.nextSetBit(0); ia >= 0; ia = bseq.nextSetBit(ia + 1)) { +var p = points[k++]; +this.vwr.ms.setAtomCoord(ia, p.x, p.y, p.z); +} +this.vwr.sm.setStatusStructureModified(ia0, mi, -3, "dragatom", n, bseq); +return n; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.err.println("Modelkit err" + e); +return 0; +} else { +throw e; +} +} finally { +this.setMKState(state); +if (n > 0) { +this.updateDrawAtomSymmetry("atomsMoved", bsMoved); +}} +}, "~N,JU.P3,JU.BS,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "assignMoveAtoms", +function(sym, bsSelected, bsFixed, bsModelAtoms, iatom, p, pts, allowProjection, isMolecule){ +if (sym == null) sym = this.getSym(iatom); +var npts = bsSelected.cardinality(); +if (npts == 0) return 0; +var n = 0; +var i0 = bsSelected.nextSetBit(0); +if (bsFixed == null) bsFixed = this.vwr.getMotionFixedAtoms(sym, null); +if (bsModelAtoms == null) bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.ms.at[i0].mi); +if (pts != null) { +if (npts != pts.length) return 0; +var bs = new JU.BS(); +for (var ip = 0, i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) { +bs.clearAll(); +bs.set(i); +n += this.assignMoveAtoms(sym, bs, bsFixed, bsModelAtoms, i, pts[ip++], null, true, isMolecule); +} +return n; +}var nAtoms = bsSelected.cardinality(); +if (bsSelected.intersects(bsFixed)) { +p.x = NaN; +return 0; +}this.addOccupiedAtomsToBitset(bsSelected); +nAtoms = bsSelected.cardinality(); +if (nAtoms == 1 && !isMolecule) { +var bsMoved = this.moveConstrained(iatom, bsFixed, bsModelAtoms, p, true, allowProjection, null); +return (bsMoved == null ? 0 : bsMoved.cardinality()); +}var p1 = JU.P3.newP(p); +p.x = NaN; +if (this.moveConstrained(iatom, bsFixed, bsModelAtoms, p1, false, true, null) == null) { +return 0; +}var vrel = JU.V3.newV(p1); +vrel.sub(this.vwr.ms.at[iatom]); +var apos0 = this.vwr.ms.saveAtomPositions(); +var bsAll = JU.BSUtil.copy(bsSelected); +if (isMolecule) { +var bsTest = JU.BSUtil.copy(bsModelAtoms); +bsTest.andNot(bsSelected); +var bsSites = new JU.BS(); +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) { +bsSites.set(this.vwr.ms.at[i].getAtomSite()); +} +for (var i = bsTest.nextSetBit(0); i >= 0; i = bsTest.nextSetBit(i + 1)) { +if (bsSites.get(this.vwr.ms.at[i].getAtomSite())) { +var bs = this.vwr.ms.getMoleculeBitSetForAtom(i); +n = bs.cardinality(); +if (n > nAtoms) { +nAtoms = n; +bsTest.andNot(bs); +bsAll = bs; +}}} +if (!bsAll.equals(bsSelected)) this.vwr.select(bsAll, false, 0, true); +}var apos = new Array(bsAll.cardinality()); +var maxSite = 0; +for (var i = bsAll.nextSetBit(0); i >= 0; i = bsAll.nextSetBit(i + 1)) { +var s = this.vwr.ms.at[i].getAtomSite(); +if (s > maxSite) maxSite = s; +} +var sites = Clazz.newIntArray (maxSite, 0); +pts = new Array(maxSite); +var bsMoved = new JU.BS(); +for (var ip = 0, i = bsAll.nextSetBit(0); i >= 0; i = bsAll.nextSetBit(i + 1), ip++) { +p1.setT(this.vwr.ms.at[i]); +p1.add(vrel); +apos[ip] = JU.P3.newP(p1); +var s = this.vwr.ms.at[i].getAtomSite() - 1; +if (sites[s] == 0) { +if (this.moveConstrained(i, bsFixed, bsModelAtoms, p1, false, true, bsMoved) == null) { +return 0; +}p1.sub(this.vwr.ms.at[i]); +p1.sub(vrel); +pts[s] = JU.P3.newP(p1); +sites[s] = i + 1; +}} +bsMoved.clearAll(); +for (var i = sites.length; --i >= 0; ) { +var ia = sites[i] - 1; +if (ia >= 0) { +p1.setT(this.vwr.ms.at[ia]); +p1.add(vrel); +if (this.moveConstrained(ia, bsFixed, bsModelAtoms, p1, true, true, bsMoved) == null) { +bsMoved = null; +break; +}}} +n = (bsMoved == null ? 0 : bsMoved.cardinality()); +if (n == 0) { +this.vwr.ms.restoreAtomPositions(apos0); +return 0; +}return (this.checkAtomPositions(apos0, apos, bsAll) ? n : 0); +}, "J.api.SymmetryInterface,JU.BS,JU.BS,JU.BS,~N,JU.P3,~A,~B,~B"); +Clazz.defineMethod(c$, "assignSpaceGroup", +function(sym00, ita00, bs, paramsOrUC, tokens, index, trm, prevNode, sb){ +if (index >= tokens.length) return "invalid CLEG expression!"; +var haveUCParams = (paramsOrUC != null); +if (tokens.length > 1 && haveUCParams) { +return "invalid syntax - can't mix transformations and UNITCELL option!"; +}var token = tokens[index].trim(); +var isSubgroupCalc = token.length == 0 || token.equals("sub") || token.equals("super"); +var calcNext = (isSubgroupCalc ? token : null); +if (isSubgroupCalc) { +token = tokens[++index].trim(); +}var isFinal = (index == tokens.length - 1); +var pt = token.lastIndexOf(":"); +var haveUnitCell = (sym00 != null); +var isUnknown = false; +var haveTransform = (token.length == 0 || token.indexOf(',') > 0 || "!r!h".indexOf(token) >= 0); +var haveJmolSetting = (!haveTransform && pt > 0 && pt < token.length - 1); +var isTransformOnly = (haveTransform && pt < 0); +var transform = (haveTransform ? token.substring(pt + 1) : null); +var trTemp = new JU.M4(); +var restarted = false; +var sym = this.vwr.getSymTemp(); +if (prevNode == null) { +if (!J.modelkit.ModelKit.ClegNode.checkSyntax(tokens, sym)) return "invalid CLEG expression!"; +if (!haveUnitCell && !haveUCParams && (haveTransform || (pt = token.indexOf('.')) > 0)) { +var ita = token.substring(0, pt); +var err = this.assignSpaceGroup(null, null, null, null, Clazz.newArray(-1, [ita]), 0, null, null, sb); +if (err.endsWith("!")) return err; +sym00 = this.vwr.getOperativeSymmetry(); +if (sym00 == null) return "modelkit spacegroup initialization error!"; +haveUnitCell = true; +restarted = true; +}var ita0 = (haveUnitCell ? sym00.getIntTableNumber() : null); +var trm0 = null; +if (haveUnitCell) { +if (ita0 == null || ita0.equals("0")) ita0 = sym00.getClegId(); + else trm0 = sym00.getSpaceGroupInfoObj("itaTransform", null, false, false); +}trm = new JU.M4(); +trm.setIdentity(); +prevNode = new J.modelkit.ModelKit.ClegNode(-1, ita0, trm0); +if (!prevNode.update(this.vwr, null, trm, trTemp, sym)) return prevNode.errString; +}if (isSubgroupCalc) { +prevNode.calcNext = calcNext; +}if (transform != null) { +switch (transform) { +case "r": +case "!h": +transform = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"; +break; +case "h": +case "!r": +transform = "!2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"; +break; +default: +if (haveJmolSetting) { +pt = 0; +haveTransform = false; +transform = null; +}} +if (pt > 0) token = token.substring(0, pt); +}if (isTransformOnly) { +if (isFinal) { +isUnknown = true; +return "CLEG pathway is incomplete!"; +}if (transform == null || transform.length == 0) transform = "a,b,c"; +sym.convertTransform(transform, trTemp); +if (trm == null) trm = trTemp; + else trm.mul(trTemp); +if (token.length != 0) { +prevNode.addTransform(trTemp); +System.out.println("ModelKit.assignSpaceGroup index=" + index + " trm=" + trm); +}return this.assignSpaceGroup(sym00, ita00, bs, null, tokens, ++index, trm, prevNode, sb); +}var node = new J.modelkit.ModelKit.ClegNode(index, token, transform); +if (!node.update(this.vwr, prevNode, trm, trTemp, sym)) return node.errString; +node.updateTokens(tokens, index); +if (!isFinal) return this.assignSpaceGroup(sym00, ita00, bs, null, tokens, ++index, trm, node, sb); +var params = null; +var oabc = null; +var origin = null; +params = (!haveUCParams || !JU.AU.isAD(paramsOrUC) ? null : paramsOrUC); +if (!haveUnitCell) { +sym.setUnitCellFromParams(params == null ? Clazz.newFloatArray(-1, [10, 10, 10, 90, 90, 90]) : params, false, NaN); +paramsOrUC = null; +haveUCParams = false; +}if (haveUCParams) { +if (JU.AU.isAD(paramsOrUC)) { +params = paramsOrUC; +} else { +oabc = paramsOrUC; +origin = oabc[0]; +}} else if (haveUnitCell) { +sym = sym00; +if (trm == null) { +trm = new JU.M4(); +trm.setIdentity(); +}oabc = sym.getV0abc( Clazz.newArray(-1, [trm]), null); +origin = oabc[0]; +}if (oabc != null) { +params = sym.getUnitCell(oabc, false, "assign").getUnitCellParams(); +if (origin == null) origin = oabc[0]; +}var isP1 = (token.equalsIgnoreCase("P1") || token.equals("ITA/1.1")); +this.clearAtomConstraints(); +try { +if (bs != null && bs.isEmpty()) return "no atoms specified!"; +var bsAtoms = this.vwr.getThisModelAtoms(); +var bsCell = (isP1 ? bsAtoms : JS.SV.getBitSet(this.vwr.evaluateExpressionAsVariable("{within(unitcell)}"), true)); +if (bs == null) { +bs = bsAtoms; +}if (bs != null) { +bsAtoms.and(bs); +if (!isP1) bsAtoms.and(bsCell); +}var noAtoms = bsAtoms.isEmpty(); +var mi = (noAtoms && this.vwr.am.cmi < 0 ? 0 : noAtoms ? this.vwr.am.cmi : this.vwr.ms.at[bsAtoms.nextSetBit(0)].getModelIndex()); +this.vwr.ms.getModelAuxiliaryInfo(mi).remove("spaceGroupInfo"); +if (haveUnitCell) { +sym.replaceTransformMatrix(trm); +}if (params == null) params = sym.getUnitCellMultiplied().getUnitCellParams(); +var sgInfo = (noAtoms && isUnknown ? null : this.vwr.findSpaceGroup(sym, isUnknown ? bsAtoms : null, isUnknown ? null : node.name, params, origin, oabc, 2 | (haveUnitCell ? 0 : 4))); +if (sgInfo == null) { +return "Space group " + node.name + " is unknown or not compatible!"; +}if (oabc == null || !haveUnitCell) oabc = sgInfo.get("unitcell"); +token = sgInfo.get("name"); +var jmolId = sgInfo.get("jmolId"); +var basis = sgInfo.get("basis"); +var sg = sgInfo.remove("sg"); +sym.getUnitCell(oabc, false, null); +sym.setSpaceGroupTo(sg == null ? jmolId : sg); +sym.setSpaceGroupName(token); +if (basis == null) { +basis = sym.removeDuplicates(this.vwr.ms, bsAtoms, true); +}this.vwr.ms.setSpaceGroup(mi, sym, basis); +if (!haveUnitCell || restarted) { +this.appRunScript("unitcell on; center unitcell;axes unitcell; axes 0.1; axes on;set perspectivedepth false;moveto 0 axis c1;draw delete;show spacegroup"); +}transform = sym.staticGetTransformABC(trm, false); +var msg = transform + "\n" + JU.PT.join(tokens, '>', 0) + (basis.isEmpty() ? "" : "\n basis=" + basis); +System.out.println("ModelKit trm=" + msg); +sb.append(msg).append("\n"); +return transform; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (!JV.Viewer.isJS) e.printStackTrace(); +return e.getMessage() + "!"; +} else { +throw e; +} +} +}, "J.api.SymmetryInterface,~S,JU.BS,~O,~A,~N,JU.M4,J.modelkit.ModelKit.ClegNode,JU.SB"); +c$.addSGTransform = Clazz.defineMethod(c$, "addSGTransform", +function(sym, tr, trm0, temp){ +if (trm0 == null) { +trm0 = new JU.M4(); +trm0.setIdentity(); +}if (tr != null) { +sym.convertTransform(tr, temp); +trm0.mul(temp); +}return trm0; +}, "J.api.SymmetryInterface,~S,JU.M4,JU.M4"); +Clazz.defineMethod(c$, "checkAtomPositions", +function(apos0, apos, bs){ +var ok = true; +for (var ip = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), ip++) { +if (this.vwr.ms.at[i].distanceSquared(apos[ip]) > 0.00000001) { +ok = false; +break; +}} +if (ok) return true; +this.vwr.ms.restoreAtomPositions(apos0); +return false; +}, "~A,~A,JU.BS"); +Clazz.defineMethod(c$, "clearElementKey", +function(modelIndex){ +if (!this.haveElementKeys) return; +var key = J.modelkit.ModelKit.getElementKey(modelIndex) + "*"; +var val = Clazz.newArray(-1, [ Clazz.newArray(-1, ["thisID", key]), Clazz.newArray(-1, ["delete", null])]); +this.vwr.shm.setShapeProperties(22, val); +this.vwr.shm.setShapeProperties(31, val); +switch (modelIndex) { +case -2: +break; +case -1: +this.bsElementKeyModels.clearAll(); +break; +default: +this.bsElementKeyModels.clear(modelIndex); +break; +} +this.haveElementKeys = !this.bsElementKeyModels.isEmpty(); +}, "~N"); +Clazz.defineMethod(c$, "clickProcessAtom", +function(atomIndex){ +switch (this.getMKState()) { +case 0: +return this.vwr.isModelkitPickingRotateBond(); +case 1: +this.centerAtomIndex = atomIndex; +if (this.getSymViewState() == 0) this.setSymViewState(8); +this.showXtalSymmetry(); +return true; +case 2: +if (atomIndex == this.centerAtomIndex) return true; +J.modelkit.ModelKit.notImplemented("edit click"); +return false; +} +J.modelkit.ModelKit.notImplemented("atom click unknown XTAL state"); +return false; +}, "~N"); +Clazz.defineMethod(c$, "clickProcessMode", +function(action){ +this.processMKPropertyItem(action, false); +}, "~S"); +Clazz.defineMethod(c$, "clickProcessSel", +function(action){ +if (action === "mksel_atom") { +this.centerPoint = null; +this.centerAtomIndex = -1; +this.secondAtomIndex = -1; +} else if (action === "mksel_position") { +var pos = this.promptUser("Enter three fractional coordinates", this.lastCenter); +if (pos == null) return; +this.lastCenter = pos; +var p = J.modelkit.ModelKit.pointFromTriad(pos); +if (p == null) { +this.clickProcessSel(action); +return; +}this.centerAtomIndex = -2147483647; +this.centerPoint = p; +this.showXtalSymmetry(); +}}, "~S"); +Clazz.defineMethod(c$, "clickProcessSelOp", +function(action){ +this.secondAtomIndex = -1; +if (action === "mkselop_addoffset") { +var pos = this.promptUser("Enter i j k for an offset for viewing the operator - leave blank to clear", this.lastOffset); +if (pos == null) return null; +this.lastOffset = pos; +if (pos.length == 0 || pos === "none") { +this.setProperty("offset", "none"); +return null; +}var p = J.modelkit.ModelKit.pointFromTriad(pos); +if (p == null) { +return action; +}this.setProperty("offset", p); +} else if (action === "mkselop_atom2") { +J.modelkit.ModelKit.notImplemented(action); +}return null; +}, "~S"); +Clazz.defineMethod(c$, "clickProcessSym", +function(action){ +if (action === "mksymmetry_none") { +this.setSymEdit(0); +} else { +this.processMKPropertyItem(action, false); +}}, "~S"); +Clazz.defineMethod(c$, "clickProcessUC", +function(action){ +this.processMKPropertyItem(action, false); +this.showXtalSymmetry(); +}, "~S"); +Clazz.defineMethod(c$, "connectAtoms", +function(bd, bondOrder, bs1, bs2){ +this.vwr.makeConnections((bd - 0.01), (bd + 0.01), bondOrder, 1073742026, bs1, bs2, new JU.BS(), false, false, 0); +}, "~N,~N,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "fillPointsForMove", +function(sg, bseq, i0, a, pt, points){ +var d = a.distance(pt); +var fa = JU.P3.newP(a); +var fb = JU.P3.newP(pt); +sg.toFractional(fa, false); +sg.toFractional(fb, false); +for (var k = 0, i = i0; i >= 0; i = bseq.nextSetBit(i + 1)) { +var p = JU.P3.newP(this.vwr.ms.at[i]); +var p0 = JU.P3.newP(p); +sg.toFractional(p, false); +var m = sg.getTransform(fa, p, false); +if (m == null) { +return false; +}var p2 = JU.P3.newP(fb); +m.rotTrans(p2); +sg.toCartesian(p2, false); +if (Math.abs(d - p0.distance(p2)) > 0.001) return false; +points[k++] = p2; +} +fa.setT(points[0]); +sg.toFractional(fa, false); +for (var k = points.length; --k >= 0; ) { +fb.setT(points[k]); +sg.toFractional(fb, false); +var m = sg.getTransform(fa, fb, false); +if (m == null) { +return false; +}for (var i = points.length; --i > k; ) { +if (points[i].distance(points[k]) < 0.1) return false; +} +} +return true; +}, "J.api.SymmetryInterface,JU.BS,~N,JU.P3,JU.P3,~A"); +Clazz.defineMethod(c$, "getBondLabel", +function(atoms){ +return atoms[Math.min(this.bondAtomIndex1, this.bondAtomIndex2)].getAtomName() + "-" + atoms[Math.max(this.bondAtomIndex1, this.bondAtomIndex2)].getAtomName(); +}, "~A"); +Clazz.defineMethod(c$, "getBondOrder", +function(type, bond){ +if (type == '-') type = this.pickBondAssignType; +var bondOrder = type.charCodeAt(0) - 48; +switch ((type).charCodeAt(0)) { +case 48: +case 49: +case 50: +case 51: +case 52: +case 53: +break; +case 112: +case 109: +bondOrder = (JU.Edge.getBondOrderNumberFromOrder(bond.getCovalentOrder()).charAt(0)).charCodeAt(0) - 48 + (type == 'p' ? 1 : -1); +if (bondOrder > 3) bondOrder = 1; + else if (bondOrder < 0) bondOrder = 3; +break; +default: +return -1; +} +return bondOrder; +}, "~S,JM.Bond"); +Clazz.defineMethod(c$, "getHoverLabel", +function(atomIndex){ +var state = this.getMKState(); +var msg = null; +switch (state) { +case 1: +if (this.symop == null) this.symop = Integer.$valueOf(1); +msg = "view symop " + this.symop + " for " + this.vwr.getAtomInfo(atomIndex); +break; +case 2: +msg = "start editing for " + this.vwr.getAtomInfo(atomIndex); +break; +case 0: +var atoms = this.vwr.ms.at; +if (this.isRotateBond) { +this.setBranchAtom(atomIndex, false); +msg = (this.branchAtomIndex >= 0 ? "rotate branch " + atoms[atomIndex].getAtomName() : "rotate bond for " + this.getBondLabel(atoms)); +}if (this.bondIndex < 0) { +if (this.atomHoverLabel.length <= 2) { +msg = this.atomHoverLabel = "Click to change to " + this.atomHoverLabel + " or drag to add " + this.atomHoverLabel; +} else { +msg = atoms[atomIndex].getAtomName() + ": " + this.atomHoverLabel; +this.vwr.highlight(JU.BSUtil.newAndSetBit(atomIndex)); +}} else { +if (msg == null) { +switch (this.isRotateBond ? this.bsHighlight.cardinality() : atomIndex >= 0 ? 1 : -1) { +case 0: +this.vwr.highlight(JU.BSUtil.newAndSetBit(atomIndex)); +case 1: +case 2: +var a = this.vwr.ms.at[atomIndex]; +if (!this.isRotateBond) { +this.menu.setActiveMenu("atomMenu"); +if (this.vwr.acm.getAtomPickingMode() == 1) return null; +}if (this.atomHoverLabel.indexOf("charge") >= 0) { +var ch = a.getFormalCharge(); +ch += (this.atomHoverLabel.indexOf("increase") >= 0 ? 1 : -1); +msg = this.atomHoverLabel + " to " + (ch > 0 ? "+" : "") + ch; +} else { +msg = this.atomHoverLabel; +}msg = atoms[atomIndex].getAtomName() + ": " + msg; +break; +case -1: +msg = (this.bondHoverLabel.length == 0 ? "" : this.bondHoverLabel + " for ") + this.getBondLabel(atoms); +break; +} +}}break; +} +return msg; +}, "~N"); +Clazz.defineMethod(c$, "getinfo", +function(){ +var info = new java.util.Hashtable(); +this.addInfo(info, "addHydrogens", Boolean.$valueOf(this.addHydrogens)); +this.addInfo(info, "autobond", Boolean.$valueOf(this.autoBond)); +this.addInfo(info, "clickToSetElement", Boolean.$valueOf(this.clickToSetElement)); +this.addInfo(info, "hidden", Boolean.$valueOf(this.menu.hidden)); +this.addInfo(info, "showSymopInfo", Boolean.$valueOf(this.showSymopInfo)); +this.addInfo(info, "centerPoint", this.centerPoint); +this.addInfo(info, "centerAtomIndex", Integer.$valueOf(this.centerAtomIndex)); +this.addInfo(info, "secondAtomIndex", Integer.$valueOf(this.secondAtomIndex)); +this.addInfo(info, "symop", this.symop); +this.addInfo(info, "offset", this.viewOffset); +this.addInfo(info, "drawData", this.drawData); +this.addInfo(info, "drawScript", this.drawScript); +this.addInfo(info, "isMolecular", Boolean.$valueOf(this.getMKState() == 0)); +return info; +}); +c$.getNearestBondedAtom = Clazz.defineMethod(c$, "getNearestBondedAtom", +function(a1, butNotThis){ +var b = a1.bonds; +var a2; +var ret = null; +var zmin = 2147483647; +for (var i = a1.getBondCount(); --i >= 0; ) { +if (b[i] != null && b[i].isCovalent() && (a2 = b[i].getOtherAtom(a1)) !== butNotThis && a2.sZ < zmin) { +zmin = a2.sZ; +ret = a2; +}} +return ret; +}, "JM.Atom,JM.Atom"); +Clazz.defineMethod(c$, "handleAtomDragging", +function(countPlusIndices){ +switch (this.getMKState()) { +case 0: +return false; +case 2: +if (countPlusIndices[0] > 2) return true; +J.modelkit.ModelKit.notImplemented("drag atom for XTAL edit"); +break; +case 1: +if (this.getSymViewState() == 0) this.setSymViewState(8); +switch (countPlusIndices[0]) { +case 1: +this.centerAtomIndex = countPlusIndices[1]; +this.secondAtomIndex = -1; +break; +case 2: +this.centerAtomIndex = countPlusIndices[1]; +this.secondAtomIndex = countPlusIndices[2]; +break; +} +this.showXtalSymmetry(); +return true; +} +return true; +}, "~A"); +Clazz.defineMethod(c$, "handleAtomOrBondPicked", +function(x, y, mp, dragAtomIndex, atomType, inRange){ +var isCharge = this.$isPickAtomAssignCharge; +if (mp != null && mp.count == 2) { +this.vwr.undoMoveActionClear(-1, 4146, true); +var a = mp.getAtom(1); +var b = mp.getAtom(2); +var bond = a.getBond(b); +if (bond == null) { +this.cmdAssignConnect(a.i, b.i, '1', "click"); +} else { +this.cmdAssignBond(bond.index, 'p', "click"); +}} else { +if (atomType.equals("Xx")) { +atomType = this.lastElementType; +}if (inRange) { +this.vwr.undoMoveActionClear(dragAtomIndex, 4, true); +} else { +this.vwr.undoMoveActionClear(-1, 4146, true); +}var a = this.vwr.ms.at[dragAtomIndex]; +var wasH = (a != null && a.getElementNumber() == 1); +this.clickAssignAtom(dragAtomIndex, atomType, null); +if (isCharge) { +this.appRunScript("{atomindex=" + dragAtomIndex + "}.label='%C'"); +} else { +this.vwr.undoMoveActionClear(-1, 4146, true); +if (a == null || inRange) return false; +if (wasH) { +this.clickAssignAtom(dragAtomIndex, "X", null); +} else { +var ptNew = JU.P3.new3(x, y, a.sZ); +this.vwr.tm.unTransformPoint(ptNew, ptNew); +this.clickAssignAtom(dragAtomIndex, atomType, ptNew); +}}}return true; +}, "~N,~N,JM.MeasurementPending,~N,~S,~B"); +Clazz.defineMethod(c$, "minimizeXtal", +function(eval, bsBasis, steps, crit, rangeFixed, flags){ +this.minBasisModel = this.vwr.am.cmi; +this.minSelectionSaved = this.vwr.bsA(); +this.vwr.am.setFrame(this.minBasisModel); +this.minBasis = bsBasis; +this.minBasisFixed = this.vwr.getMotionFixedAtoms(null, null); +this.minBasisModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.minBasisModel); +var cif = this.vwr.getModelExtract(bsBasis, false, false, "cif"); +var tempModelIndex = this.vwr.ms.mc; +var htParams = new java.util.Hashtable(); +htParams.put("eval", eval); +htParams.put("lattice", JU.P3.new3(444, 666, 1)); +htParams.put("fileData", cif); +htParams.put("loadScript", new JU.SB()); +if (this.vwr.loadModelFromFile(null, "", null, null, true, htParams, null, null, 0, " ") != null) return; +var bsBasis2 = JU.BSUtil.copy(this.vwr.ms.am[tempModelIndex].bsAsymmetricUnit); +this.minTempModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(tempModelIndex); +this.vwr.am.setFrame(tempModelIndex); +this.minTempFixed = JU.BSUtil.copy(this.minTempModelAtoms); +this.minTempFixed.andNot(bsBasis2); +this.vwr.getMotionFixedAtoms(null, this.minTempFixed); +this.vwr.minimize(eval, steps, crit, JU.BSUtil.copy(bsBasis2), this.minTempFixed, this.minTempModelAtoms, rangeFixed, flags & -257); +}, "J.api.JmolScriptEvaluator,JU.BS,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "minimizeXtalEnd", +function(bsBasis2, isEnd){ +if (this.minBasis == null) return; +if (bsBasis2 != null) { +var pts = new Array(bsBasis2.cardinality()); +for (var p = 0, j = this.minBasis.nextSetBit(0), i = bsBasis2.nextSetBit(0); i >= 0; i = bsBasis2.nextSetBit(i + 1), j = this.minBasis.nextSetBit(j + 1)) { +pts[p++] = JU.P3.newP(this.vwr.ms.at[i].getXYZ()); +} +var bs = JU.BSUtil.copy(this.minBasis); +bs.andNot(this.minBasisFixed); +this.assignMoveAtoms(null, bs, this.minBasisFixed, this.minBasisModelAtoms, this.minBasis.nextSetBit(0), null, pts, true, false); +}if (isEnd) { +this.minSelectionSaved = null; +this.minBasis = null; +this.minBasisFixed = null; +this.minTempFixed = null; +this.minTempModelAtoms = null; +this.minBasisModelAtoms = null; +this.minBasisAtoms = null; +this.modelSyms = null; +this.vwr.deleteModels(this.vwr.ms.mc - 1, null); +this.vwr.setSelectionSet(this.minSelectionSaved); +this.vwr.setCurrentModelIndex(this.minBasisModel); +}}, "JU.BS,~B"); +Clazz.defineMethod(c$, "moveConstrained", +function(iatom, bsFixed, bsModelAtoms, ptNew, doAssign, allowProjection, bsMoved){ +var sym = this.getSym(iatom); +if (sym == null) { +return null; +}if (bsMoved == null) bsMoved = JU.BSUtil.newAndSetBit(iatom); +var a = this.vwr.ms.at[iatom]; +var c = this.constraint; +var minv = null; +if (c == null) { +c = this.setConstraint(sym, iatom, J.modelkit.ModelKit.GET_CREATE); +if (c.type == 6) { +iatom = -1; +} else { +var b = this.getBasisAtom(iatom); +if (a !== b) { +var m = J.modelkit.ModelKit.getTransform(sym, a, b); +if (m == null) { +System.err.println("ModelKit - null matrix for " + iatom + " " + a + " to " + b); +iatom = -1; +} else { +if (!doAssign) { +minv = JU.M4.newM4(m); +minv.invert(); +}iatom = b.i; +var p = JU.P3.newP(ptNew); +sym.toFractional(p, false); +m.rotTrans(p); +sym.toCartesian(p, false); +ptNew.setT(p); +}}if (iatom >= 0) c.constrain(b, ptNew, allowProjection); +}} else { +c.constrain(a, ptNew, allowProjection); +}if (iatom >= 0 && !Float.isNaN(ptNew.x)) { +if (!doAssign) { +if (minv != null) { +var p = JU.P3.newP(ptNew); +sym.toFractional(p, false); +minv.rotTrans(p); +sym.toCartesian(p, false); +ptNew.setP(p); +}return bsMoved; +}if (this.assignMoveAtom(iatom, ptNew, bsFixed, bsModelAtoms, bsMoved) == 0) bsMoved = null; +}ptNew.x = NaN; +return bsMoved; +}, "~N,JU.BS,JU.BS,JU.P3,~B,~B,JU.BS"); +Clazz.defineMethod(c$, "promptUser", +function(msg, def){ +return this.vwr.prompt(msg, def, null, false); +}, "~S,~S"); +Clazz.defineMethod(c$, "resetBondFields", +function(){ +this.bsRotateBranch = null; +this.branchAtomIndex = this.bondAtomIndex1 = this.bondAtomIndex2 = -1; +}); +Clazz.defineMethod(c$, "rotateAtoms", +function(bsAtoms, points, endDegrees){ +var center = points[0]; +var p = new JU.P3(); +var i0 = bsAtoms.nextSetBit(0); +var sg = this.getSym(i0); +var bsAU = new JU.BS(); +var bsToMove = new JU.BS(); +for (var i = i0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var bai = this.getBasisAtom(i).i; +if (bsAU.get(bai)) { +continue; +}if (this.setConstraint(sg, bai, J.modelkit.ModelKit.GET_CREATE).type == 6) { +return 0; +}bsAU.set(bai); +bsToMove.set(i); +} +var nAtoms = bsAtoms.cardinality(); +var apos0 = this.vwr.ms.saveAtomPositions(); +var m = JU.Quat.newVA(JU.V3.newVsub(points[1], points[0]), endDegrees).getMatrix(); +var vt = new JU.V3(); +var apos = new Array(nAtoms); +for (var ip = 0, i = i0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.vwr.ms.at[i]; +p = apos[ip++] = JU.P3.newP(a); +vt.sub2(p, center); +m.rotate(vt); +p.add2(center, vt); +this.setConstraint(sg, i, J.modelkit.ModelKit.GET_CREATE).constrain(a, p, false); +if (Float.isNaN(p.x)) return 0; +} +nAtoms = 0; +var bsFixed = this.vwr.getMotionFixedAtoms(sg, null); +var bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.ms.at[i0].mi); +var bsMoved = new JU.BS(); +for (var ip = 0, i = i0; i >= 0; i = bsToMove.nextSetBit(i + 1), ip++) { +nAtoms += this.assignMoveAtom(i, apos[ip], bsFixed, bsModelAtoms, bsMoved); +} +var bs = JU.BSUtil.copy(bsAtoms); +bs.andNot(bsToMove); +return (this.checkAtomPositions(apos0, apos, bs) ? nAtoms : 0); +}, "JU.BS,~A,~N"); +Clazz.defineMethod(c$, "runScriptBuffered", +function(script){ +var sb = new JU.SB(); +try { +(this.vwr.eval).runBufferedSafely(script, sb); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +return sb.toString(); +}, "~S"); +Clazz.defineMethod(c$, "setBondIndex", +function(index, isRotate){ +if (!isRotate && this.vwr.isModelkitPickingRotateBond()) { +this.setProperty("rotatebondindex", Integer.$valueOf(index)); +return; +}var haveBond = (this.bondIndex >= 0); +if (!haveBond && index < 0) return; +if (index < 0) { +this.resetBondFields(); +return; +}this.bsRotateBranch = null; +this.branchAtomIndex = -1; +this.bondIndex = index; +this.isRotateBond = isRotate; +this.bondAtomIndex1 = this.vwr.ms.bo[index].getAtomIndex1(); +this.bondAtomIndex2 = this.vwr.ms.bo[index].getAtomIndex2(); +this.menu.setActiveMenu("bondMenu"); +}, "~N,~B"); +Clazz.defineMethod(c$, "setBranchAtom", +function(atomIndex, isClick){ +var isBondedAtom = (atomIndex == this.bondAtomIndex1 || atomIndex == this.bondAtomIndex2); +if (isBondedAtom) { +this.branchAtomIndex = atomIndex; +this.bsRotateBranch = null; +} else { +this.bsRotateBranch = null; +this.branchAtomIndex = -1; +}}, "~N,~B"); +Clazz.defineMethod(c$, "setDefaultState", +function(mode){ +if (!this.hasUnitCell) mode = 0; +if (!this.hasUnitCell || this.isXtalState() != this.hasUnitCell) { +this.setMKState(mode); +switch (mode) { +case 0: +break; +case 1: +if (this.getSymViewState() == 0) this.setSymViewState(8); +break; +case 2: +break; +} +}}, "~N"); +Clazz.defineMethod(c$, "isElementKeyOn", +function(modelIndex){ +var data = Clazz.newArray(-1, [J.modelkit.ModelKit.getElementKey(modelIndex) + "*", null]); +this.vwr.shm.getShapePropertyData(31, "checkID", data); +return (data[1] != null); +}, "~N"); +Clazz.defineMethod(c$, "updateElementKeyFromStateScript", +function(){ +for (var i = this.vwr.ms.mc; --i >= 0; ) { +if (this.isElementKeyOn(i)) { +this.bsElementKeyModels.set(i); +this.haveElementKeys = true; +}} +}); +Clazz.defineMethod(c$, "setElementKey", +function(modelIndex, isOn){ +if (isOn && (modelIndex >= 0 && this.bsElementKeyModels.get(modelIndex))) return; +this.clearElementKey(modelIndex); +if (!isOn || modelIndex < 0) return; + new J.modelkit.ModelKit.EKey(this.vwr, modelIndex).draw(this.vwr); +this.bsElementKeyModels.set(modelIndex); +this.haveElementKeys = true; +}, "~N,~B"); +Clazz.defineMethod(c$, "setSymEdit", +function(bits){ +this.state = (this.state & -225) | bits; +}, "~N"); +Clazz.defineMethod(c$, "setSymViewState", +function(bits){ +this.state = (this.state & -29) | bits; +}, "~N"); +Clazz.defineMethod(c$, "setUnitCell", +function(bits){ +this.state = (this.state & -1793) | bits; +}, "~N"); +Clazz.defineMethod(c$, "showSymop", +function(symop){ +this.secondAtomIndex = -1; +this.symop = symop; +this.showXtalSymmetry(); +}, "~O"); +Clazz.defineMethod(c$, "showXtalSymmetry", +function(){ +var script = null; +switch (this.getSymViewState()) { +case 0: +script = "draw * delete"; +break; +case 8: +default: +var offset = null; +if (this.secondAtomIndex >= 0) { +script = "draw ID sym symop " + (this.centerAtomIndex < 0 ? this.centerPoint : " {atomindex=" + this.centerAtomIndex + "}") + " {atomindex=" + this.secondAtomIndex + "}"; +} else { +offset = this.viewOffset; +if (this.symop == null) this.symop = Integer.$valueOf(1); +var iatom = (this.centerAtomIndex >= 0 ? this.centerAtomIndex : this.centerPoint != null ? -1 : this.iatom0); +script = "draw ID sym symop " + (this.symop == null ? "1" : (typeof(this.symop)=='string') ? "'" + this.symop + "'" : JU.PT.toJSON(null, this.symop)) + (iatom < 0 ? this.centerPoint : " {atomindex=" + iatom + "}") + (offset == null ? "" : " offset " + offset); +}this.drawData = this.runScriptBuffered(script); +this.drawScript = script; +this.drawData = (this.showSymopInfo ? this.drawData.substring(0, this.drawData.indexOf("\n") + 1) : ""); +this.appRunScript(";refresh;set echo top right;echo " + this.drawData.$replace('\t', ' ')); +break; +} +}); +Clazz.defineMethod(c$, "updateElementKey", +function(bsAtoms){ +if (bsAtoms == null) { +this.updateModelElementKey(this.vwr.am.cmi, true); +return; +}if (bsAtoms.cardinality() == 1) { +this.updateModelElementKey(this.vwr.ms.at[bsAtoms.nextSetBit(0)].mi, true); +return; +}for (var i = this.vwr.ms.mc; --i >= 0; ) { +if (this.vwr.ms.am[i].bsAtoms.intersects(bsAtoms)) { +this.updateModelElementKey(i, true); +}} +}, "JU.BS"); +Clazz.defineMethod(c$, "updateModelElementKeys", +function(bsModels, forceNew){ +if (bsModels == null) bsModels = JU.BSUtil.newBitSet2(0, this.vwr.ms.mc); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +this.updateModelElementKey(i, forceNew); +} +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "updateModelElementKey", +function(modelIndex, forceNew){ +if (this.doUpdateElementKey(modelIndex)) { +if (forceNew) this.clearElementKey(modelIndex); +this.setElementKey(modelIndex, true); +}}, "~N,~B"); +Clazz.defineMethod(c$, "doUpdateElementKey", +function(modelIndex){ +return modelIndex >= 0 && !this.vwr.ms.isJmolDataFrameForModel(modelIndex) && !this.bsElementKeyModelsOFF.get(modelIndex) && (this.$setElementKeys || this.bsElementKeyModels.get(modelIndex) || this.isElementKeyOn(modelIndex)); +}, "~N"); +Clazz.defineMethod(c$, "setElementKeys", +function(isOn){ +this.$setElementKeys = isOn; +if (isOn) { +this.clearElementKeysOFF(); +}this.clearElementKey(-1); +if (isOn) { +this.updateModelElementKeys(null, false); +}}, "~B"); +Clazz.defineMethod(c$, "clearElementKeysOFF", +function(){ +this.bsElementKeyModelsOFF.clearAll(); +}); +Clazz.defineMethod(c$, "transformAtomsToUnitCell", +function(sym, oabc, ucname){ +var bsAtoms = this.vwr.getThisModelAtoms(); +var n = bsAtoms.cardinality(); +var isReset = (sym == null || n == 0); +if (!isReset) { +var a = this.vwr.ms.at; +var fxyz = this.getFractionalCoordinates(sym, bsAtoms); +this.vwr.ms.setModelCagePts(-1, oabc, ucname); +sym = this.vwr.getCurrentUnitCell(); +for (var j = bsAtoms.nextSetBit(0), k = 0; j >= 0; j = bsAtoms.nextSetBit(j + 1), k++) { +a[j].setT(fxyz[k]); +this.vwr.toCartesianUC(sym, a[j], false); +} +this.vwr.ms.setTaintedAtoms(bsAtoms, 2); +}return isReset; +}, "J.api.SymmetryInterface,~A,~S"); +Clazz.defineMethod(c$, "getFractionalCoordinates", +function(sym, bsAtoms){ +var n = bsAtoms.cardinality(); +var a = this.vwr.ms.at; +var fxyz = new Array(n); +for (var j = bsAtoms.nextSetBit(0), k = 0; j >= 0; j = bsAtoms.nextSetBit(j + 1), k++) { +fxyz[k] = JU.P3.newP(a[j]); +this.vwr.toFractionalUC(sym, fxyz[k], false); +} +return fxyz; +}, "J.api.SymmetryInterface,JU.BS"); +Clazz.defineMethod(c$, "updateDrawAtomSymmetry", +function(mode, atoms){ +if (this.drawAtomSymmetry == null) return; +var cmd = ""; +for (var i = this.drawAtomSymmetry.size(); --i >= 0; ) { +var a = this.drawAtomSymmetry.get(i); +if (mode === "deleteModelAtoms" ? atoms.get(a.bsAtoms.nextSetBit(0)) : atoms.intersects(a.bsAtoms)) { +switch (mode) { +case "deleteModelAtoms": +case "atomsDeleted": +System.out.println("remove deleteatoms " + atoms + " " + a.bsAtoms + a.id); +this.drawAtomSymmetry.removeItemAt(i); +break; +case "atomsMoved": +try { +if (!this.checkDrawID(a.id)) { +this.drawAtomSymmetry.removeItemAt(i); +} else { +cmd += a.cmd + "#quiet" + "\n"; +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +break; +} +if (this.drawAtomSymmetry.size() == 0) this.drawAtomSymmetry = null; +}if (cmd.length > 0) this.vwr.evalStringGUI(cmd); +} +}, "~S,JU.BS"); +Clazz.defineMethod(c$, "checkDrawID", +function(id){ +var o = Clazz.newArray(-1, [id + "*", null]); +var exists = this.vwr.shm.getShapePropertyData(22, "checkID", o); +return (exists && o[1] != null); +}, "~S"); +Clazz.defineMethod(c$, "drawSymop", +function(a1, a2){ +var s = "({" + a1 + "}) ({" + a2 + "}) "; +var cmd = "draw ID 'sym' symop " + s; +this.vwr.evalStringGUI(cmd); +}, "~N,~N"); +Clazz.defineMethod(c$, "addAtomSet", +function(data){ +var tokens = JU.PT.split(data, "|"); +var id = tokens[0]; +this.clearAtomSets(id); +var a1 = JU.PT.parseInt(tokens[1]); +var a2 = JU.PT.parseInt(tokens[2]); +var cmd = tokens[3]; +var bs = JU.BSUtil.newAndSetBit(a1); +bs.set(a2); +if (this.drawAtomSymmetry == null) { +this.drawAtomSymmetry = new JU.Lst(); +}this.drawAtomSymmetry.addLast(Clazz.innerTypeInstance(J.modelkit.ModelKit.DrawAtomSet, this, null, bs, id, cmd)); +}, "~S"); +Clazz.defineMethod(c$, "clearAtomSets", +function(id){ +if (this.drawAtomSymmetry == null) return; +for (var i = this.drawAtomSymmetry.size(); --i >= 0; ) { +var a = this.drawAtomSymmetry.get(i); +if (a.id.equals(id)) { +this.drawAtomSymmetry.remove(i); +return; +}} +}, "~S"); +Clazz.defineMethod(c$, "drawUnitCell", +function(id, ucLattice, swidth){ +var sym = this.vwr.getOperativeSymmetry(); +if (sym == null) return; +var uc = this.vwr.getSymTemp().getUnitCell(sym.getUnitCellVectors(), false, "draw"); +uc.setOffsetPt(ucLattice); +var cellRange = Clazz.newArray(-1, [ new JU.P3(), new JU.P3()]); +var s = ""; +if (id == null) id = "uclat"; +var val = Clazz.newArray(-1, [ Clazz.newArray(-1, ["thisID", id + "*"]), Clazz.newArray(-1, ["delete", null])]); +this.vwr.shm.setShapeProperties(22, val); +JU.SimpleUnitCell.getCellRange(ucLattice, cellRange); +for (var p = 1, x = Clazz.floatToInt(cellRange[0].x); x < cellRange[1].x; x++) { +for (var y = Clazz.floatToInt(cellRange[0].y); y < cellRange[1].y; y++) { +for (var z = Clazz.floatToInt(cellRange[0].z); z < cellRange[1].z; z++, p++) { +s += "\ndraw ID " + JU.PT.esc(id + "_" + p) + " " + swidth + " unitcell \"a,b,c;" + x + "," + y + "," + z + "\""; +} +} +} +s += this.getDrawAxes(id, swidth); +this.appRunScript(s); +}, "~S,JU.T3,~S"); +Clazz.defineMethod(c$, "drawAxes", +function(id, swidth){ +var s = this.getDrawAxes(id, swidth); +if (s.length > 0) this.appRunScript(s); +}, "~S,~S"); +Clazz.defineMethod(c$, "getDrawAxes", +function(id, swidth){ +if (this.vwr.g.axesMode != 603979808 || this.vwr.shm.getShapePropertyIndex(34, "axesTypeXY", 0) === Boolean.TRUE) return ""; +if (id == null) id = "uca"; +if (swidth.indexOf(".") > 0) swidth += "05"; +var origin = this.vwr.shm.getShapePropertyIndex(34, "originPoint", 0); +var axisPoints = this.vwr.shm.getShapePropertyIndex(34, "axisPoints", 0); +var s = ""; +var colors = Clazz.newArray(-1, ["red", "green", "blue"]); +for (var i = 0, a = 6; i < 3; i++, a++) { +s += "\ndraw ID " + JU.PT.esc(id + "_axis_" + JV.JC.axisLabels[a]) + " " + swidth + " line " + origin + " " + axisPoints[i] + " color " + colors[i]; +} +return s; +}, "~S,~S"); +Clazz.defineMethod(c$, "drawSymmetry", +function(thisId, isSymop, iatom, xyz, iSym, trans, center, target, intScale, nth, options, opList, isModelkit){ +var s = null; +if (options != 0) { +var o = this.vwr.getSymmetryInfo(iatom, xyz, iSym, trans, center, target, 134217751, null, intScale / 100, nth, options, opList); +if (Clazz.instanceOf(o,"JU.P3")) target = o; + else s = ""; +}if (thisId == null) thisId = (isSymop ? "sym" : "sg"); +if (s == null) s = this.vwr.getSymmetryInfo(iatom, xyz, iSym, trans, center, target, 135176, thisId, Clazz.doubleToInt(intScale / 100), nth, options, opList); +if (s != null) { +s = "draw ID " + (isSymop ? "sg" : "sym") + "* delete;" + s; +s = "draw ID " + thisId + "* delete;" + s; +}if (isModelkit) s += ";draw ID sg_xes axes 0.05;"; +return s; +}, "~S,~B,~N,~S,~N,JU.P3,JU.P3,JU.P3,~N,~N,~N,~A,~B"); +c$.$ModelKit$DrawAtomSet$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.bsAtoms = null; +this.cmd = null; +this.id = null; +Clazz.instantialize(this, arguments);}, J.modelkit.ModelKit, "DrawAtomSet", null); +Clazz.makeConstructor(c$, +function(bs, id, cmd){ +this.bsAtoms = bs; +this.cmd = cmd; +this.id = id; +}, "JU.BS,~S,~S"); +/*eoif4*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.name = null; +this.setting = null; +this.myTrm = null; +this.myIta = null; +this.isITA = false; +this.isHM = false; +this.hallSymbol = null; +this.errString = null; +this.trLink = null; +this.index = 0; +this.calcNext = null; +this.calculated = null; +Clazz.instantialize(this, arguments);}, J.modelkit.ModelKit, "ClegNode", null); +Clazz.makeConstructor(c$, +function(index, name, setting){ +if (name == null) return; +this.index = index; +this.setting = (setting == null ? "a,b,c" : setting); +var pt; +this.isITA = name.startsWith("ITA/"); +if (this.isITA) { +name = name.substring(4); +}this.isHM = false; +this.hallSymbol = null; +if (name.charAt(0) == '[') { +pt = name.indexOf(']'); +if (pt < 0) { +this.errString = "invalid Hall symbol: " + name + "!"; +return; +}this.hallSymbol = name.substring(1, pt); +name = "Hall:" + this.hallSymbol; +} else if (name.startsWith("HM:")) { +this.isHM = true; +} else if (name.length <= 3) { +this.isITA = true; +for (var i = name.length; --i >= 0; ) { +if (!JU.PT.isDigit(name.charAt(i))) { +this.isITA = false; +break; +}} +if (this.isITA) { +name += ".1"; +}}if (!this.isITA && this.hallSymbol == null && !this.isHM) { +pt = (JU.PT.isDigit(name.charAt(0)) ? name.indexOf(" ") : -1); +if (pt > 0) name = name.substring(0, pt); +if (name.indexOf('.') > 0 && !Float.isNaN(JU.PT.parseFloat(name))) { +this.isITA = true; +if (!name.endsWith(".1") && setting != null) { +this.errString = "Space group ITA/" + name + " n.m syntax cannot be used with a setting!"; +return; +}}}this.name = name; +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "addTransform", +function(trm){ +if (this.trLink == null) { +this.trLink = new JU.M4(); +this.trLink.setIdentity(); +}this.trLink.mul(trm); +}, "JU.M4"); +Clazz.defineMethod(c$, "update", +function(vwr, prevNode, trm, trTemp, sym){ +if (this.errString != null) return false; +if (this.name == null) return true; +if (this.isITA) { +this.myTrm = (this.name.endsWith(".1") ? "a,b,c" : sym.getITASettingValue(vwr, this.name, "trm")); +if (this.myTrm == null) { +this.errString = "Unknown ITA setting: " + this.name + "!"; +return false; +}var tokens = JU.PT.split(this.name, "."); +this.myIta = tokens[0]; +this.name = "ITA/" + this.myIta + ":" + (this.myTrm == null || this.myTrm.equals("a,b,c") ? this.setting : this.myTrm); +} else if (this.hallSymbol != null) { +if (sym.getSpaceGroupInfoObj("nameToXYZList", "Hall:" + this.hallSymbol, false, false) == null) { +this.errString = "Invalid Hall notation: " + this.hallSymbol; +return false; +}var pt = this.hallSymbol.indexOf("("); +if (pt > 0) { +var vabc = JU.PT.split(this.hallSymbol.substring(pt + 1, this.hallSymbol.length - 1), " "); +this.hallSymbol = this.hallSymbol.substring(0, pt).trim(); +var v = JU.P3.new3(-JU.PT.parseFloat(vabc[0]) / 12, -JU.PT.parseFloat(vabc[1]) / 12, -JU.PT.parseFloat(vabc[2]) / 12); +this.setting = "a,b,c;" + sym.staticToRationalXYZ(v, ","); +}this.name = "[" + this.hallSymbol + "]" + (this.setting.equals("a,b,c") ? "" : ":" + this.setting); +} else { +this.myTrm = sym.getSpaceGroupInfoObj("itaTransform", this.name, false, false); +this.myIta = sym.getSpaceGroupInfoObj("itaNumber", this.name, false, false); +}var trm0 = null; +var haveCalc = false; +var haveReferenceCell = (prevNode != null && this.trLink == null && (this.hallSymbol != null || this.myIta != null && (this.myIta.equals(prevNode.myIta) || prevNode.calcNext != null))); +if (haveReferenceCell) { +trm0 = JU.M4.newM4(trm); +if (prevNode != null && prevNode.myTrm != null) { +J.modelkit.ModelKit.addSGTransform(sym, "!" + prevNode.setting, trm, trTemp); +J.modelkit.ModelKit.addSGTransform(sym, "!" + prevNode.myTrm, trm, trTemp); +}var trCalc = null; +if (prevNode.calcNext != null) { +var isSub = true; +var isImplicit = false; +switch (prevNode.calcNext) { +case "super": +isSub = false; +break; +case "sub": +break; +case "": +case "set": +prevNode.calcNext = "set"; +isImplicit = true; +break; +} +var ita1 = JU.PT.parseInt(prevNode.myIta); +var ita2 = JU.PT.parseInt(this.myIta); +var isSetting = (isImplicit && ita1 == ita2); +if (!isSetting) { +trCalc = sym.getSubgroupJSON(vwr, (isSub ? ita1 : ita2), (isSub ? ita2 : ita1), 0, 1); +haveCalc = (trCalc != null); +if (haveCalc && !isSub) trCalc = "!" + trCalc; +var calc = prevNode.myIta + ">" + trCalc + ">" + this.myIta; +if (!haveCalc) throw new RuntimeException(calc); +System.out.println("sub := " + calc); +J.modelkit.ModelKit.addSGTransform(sym, trCalc, trm, trTemp); +}}J.modelkit.ModelKit.addSGTransform(sym, this.myTrm, trm, trTemp); +J.modelkit.ModelKit.addSGTransform(sym, this.setting, trm, trTemp); +System.out.println("ClegNode " + this + "\n" + trm); +if (haveCalc) { +trm0.invert(); +var trm1 = JU.M4.newM4(trm); +trm1.mul(trm0); +this.calculated = sym.convertTransform(null, trm1); +}}return true; +}, "JV.Viewer,J.modelkit.ModelKit.ClegNode,JU.M4,JU.M4,J.api.SymmetryInterface"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[ClegNode #" + this.index + " " + this.name + " " + this.myIta + ":" + this.setting + " " + this.myTrm + "]"; +}); +c$.checkSyntax = Clazz.defineMethod(c$, "checkSyntax", +function(tokens, sym){ +for (var i = 0; i < tokens.length; i++) { +var s = tokens[i].trim(); +if (s.length == 0) continue; +var pt = s.indexOf(":"); +var transform; +if (pt > 0) { +transform = s.substring(pt + 1); +s = s.substring(0, pt); +} else if (s.indexOf(",") >= 0) { +transform = s; +s = null; +} else { +transform = ""; +}if (s != null) { +var itno = JU.PT.parseFloatStrict(s); +if (itno < 1 || itno >= 231) return false; +if (Float.isNaN(itno)) transform = s; +}switch (transform) { +case "": +case "sub": +case "r": +case "h": +case "!r": +case "!h": +break; +default: +if (transform.indexOf(",") >= 0) { +if ((sym.convertTransform(transform, null)).determinant3() == 0) return false; +}break; +} +} +return true; +}, "~A,J.api.SymmetryInterface"); +Clazz.defineMethod(c$, "updateTokens", +function(tokens, i){ +if (this.myIta != null && this.myTrm != null) tokens[i] = this.myIta + (this.myTrm.equals("a,b,c") ? "" : ":" + this.myTrm); +if (this.calculated != null) tokens[i - 1] = this.calculated; +}, "~A,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.type = 0; +this.pt = null; +this.offset = null; +this.plane = null; +this.unitVector = null; +Clazz.instantialize(this, arguments);}, J.modelkit.ModelKit, "Constraint", null); +Clazz.makeConstructor(c$, +function(pt, type, params){ +this.pt = pt; +this.type = type; +switch (type) { +case 0: +case 7: +case 6: +break; +case 4: +this.offset = params[0]; +this.unitVector = JU.V3.newV(params[1]); +this.unitVector.normalize(); +break; +case 5: +this.plane = params[0]; +break; +default: +throw new IllegalArgumentException(); +} +}, "JU.P3,~N,~A"); +Clazz.defineMethod(c$, "constrain", +function(ptOld, ptNew, allowProjection){ +var v = new JU.V3(); +var p = JU.P3.newP(ptOld); +var d = 0; +switch (this.type) { +case 0: +return; +case 7: +return; +case 6: +ptNew.x = NaN; +return; +case 4: +if (this.pt == null) { +d = JU.Measure.projectOntoAxis(p, this.offset, this.unitVector, v); +if (d * d >= 1.96E-6) { +ptNew.x = NaN; +break; +}}d = JU.Measure.projectOntoAxis(ptNew, this.offset, this.unitVector, v); +break; +case 5: +if (this.pt == null) { +if (Math.abs(JU.Measure.getPlaneProjection(p, this.plane, v, v)) > 0.01) { +ptNew.x = NaN; +break; +}}d = JU.Measure.getPlaneProjection(ptNew, this.plane, v, v); +ptNew.setT(v); +break; +} +if (!allowProjection && Math.abs(d) > 1e-10) { +ptNew.x = NaN; +}}, "JU.P3,JU.P3,~B"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bsElements = null; +this.nAtoms = 0; +this.elementStrings = null; +this.colors = null; +this.isotopeCounts = null; +this.modelIndex = 0; +Clazz.instantialize(this, arguments);}, J.modelkit.ModelKit, "EKey", null); +Clazz.prepareFields (c$, function(){ +this.bsElements = new JU.BS(); +this.elementStrings = Clazz.newArray(120, 10, null); +this.colors = Clazz.newIntArray (120, 10, 0); +this.isotopeCounts = Clazz.newIntArray (120, 0); +}); +Clazz.makeConstructor(c$, +function(vwr, modelIndex){ +var bsAtoms = vwr.getModelUndeletedAtomsBitSet(modelIndex); +this.nAtoms = (bsAtoms == null ? 0 : bsAtoms.cardinality()); +this.modelIndex = modelIndex; +if (this.nAtoms == 0) return; +var a = vwr.ms.at; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var elem = a[i].getElementSymbol(); +var elemno = a[i].getElementNumber(); +var color = a[i].atomPropertyInt(1765808134); +var j = 0; +var niso = this.isotopeCounts[elemno]; +for (; j < niso; j++) { +if (this.elementStrings[elemno][j].equals(elem)) { +if (this.colors[elemno][j] != color) { +this.nAtoms = 0; +return; +}break; +}} +if (j < niso) { +continue; +}this.bsElements.set(elemno); +this.isotopeCounts[elemno]++; +this.elementStrings[elemno][j] = elem; +this.colors[elemno][j] = color; +} +}, "JV.Viewer,~N"); +Clazz.defineMethod(c$, "draw", +function(vwr){ +if (this.nAtoms == 0) return; +var key = J.modelkit.ModelKit.getElementKey(this.modelIndex); +var h = vwr.getScreenHeight(); +var font = vwr.getFont3D("SansSerif", "Bold", Clazz.doubleToInt(h * 20 / 400)); +for (var y = 90, elemno = this.bsElements.nextSetBit(0); elemno >= 0; elemno = this.bsElements.nextSetBit(elemno + 1)) { +var n = this.isotopeCounts[elemno]; +if (n == 0) continue; +var elem = this.elementStrings[elemno]; +for (var j = 0; j < n; j++) { +var label = elem[j]; +var color = this.colors[elemno][j]; +vwr.shm.setShapeProperties(22, [ Clazz.newArray(-1, ["init", "elementKey"]), Clazz.newArray(-1, ["thisID", key + "d_" + label]), Clazz.newArray(-1, ["diameter", Float.$valueOf(2)]), Clazz.newArray(-1, ["modelIndex", Integer.$valueOf(this.modelIndex)]), Clazz.newArray(-1, ["points", Integer.$valueOf(0)]), Clazz.newArray(-1, ["coord", JU.P3.new3(90, y, -3.4028235E38)]), Clazz.newArray(-1, ["set", null]), Clazz.newArray(-1, ["color", Integer.$valueOf(color)]), Clazz.newArray(-1, ["thisID", null])]); +vwr.shm.setShapeProperties(31, [ Clazz.newArray(-1, ["thisID", null]), Clazz.newArray(-1, ["target", key + "e_" + label]), Clazz.newArray(-1, ["model", Integer.$valueOf(this.modelIndex)]), Clazz.newArray(-1, ["xypos", JU.P3.new3(91, y - 2, -3.4028235E38)]), Clazz.newArray(-1, ["text", label]), Clazz.newArray(-1, ["font", font]), Clazz.newArray(-1, ["color", Integer.$valueOf(-74566)]), Clazz.newArray(-1, ["thisID", null])]); +y -= 5; +} +} +var bs = vwr.getVisibleFramesBitSet(); +vwr.shm.getShape(22).setModelVisibilityFlags(bs); +vwr.shm.getShape(31).setModelVisibilityFlags(bs); +}, "JV.Viewer"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.oldVib = null; +this.atom = null; +this.t = 0; +this.baseAtom = null; +this.pt0 = null; +this.ptf = null; +this.sym = null; +this.c = null; +Clazz.instantialize(this, arguments);}, J.modelkit.ModelKit, "WyckoffModulation", JU.Vibration); +Clazz.prepareFields (c$, function(){ +this.pt0 = new JU.P3(); +this.ptf = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(sym, c, atom, baseAtom){ +Clazz.superConstructor (this, J.modelkit.ModelKit.WyckoffModulation, []); +this.setType(-3); +this.sym = sym; +this.c = c; +this.atom = atom; +this.baseAtom = baseAtom; +this.x = 1; +}, "J.api.SymmetryInterface,J.modelkit.ModelKit.Constraint,JM.Atom,JM.Atom"); +c$.setVibrationMode = Clazz.defineMethod(c$, "setVibrationMode", +function(mk, value){ +var atoms = mk.vwr.ms.at; +var bsAtoms = mk.vwr.getThisModelAtoms(); +if (("off").equals(value)) { +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var v = atoms[i].getVibrationVector(); +if (v != null && v.modDim != -3) continue; +mk.vwr.ms.setVibrationVector(i, (v).oldVib); +} +} else if (("wyckoff").equals(value)) { +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var v = atoms[i].getVibrationVector(); +if (v != null && v.modDim != -3) continue; +var sym = mk.getSym(i); +var wv = null; +if (sym != null) { +var c = mk.setConstraint(sym, i, J.modelkit.ModelKit.GET_CREATE); +if (c.type != 6) wv = new J.modelkit.ModelKit.WyckoffModulation(sym, c, atoms[i], mk.getBasisAtom(i)); +}mk.vwr.ms.setVibrationVector(i, wv); +} +}mk.vwr.setVibrationPeriod(NaN); +}, "J.modelkit.ModelKit,~O"); +Clazz.overrideMethod(c$, "setCalcPoint", +function(pt, t456, scale, modulationScale){ +var v = this.baseAtom.getVibrationVector(); +if (v == null || v.modDim != -3) return pt; +var wv = (v); +if (this.sym == null) return pt; +var m = null; +if (wv.atom !== this.atom) { +m = J.modelkit.ModelKit.getTransform(this.sym, wv.atom, this.atom); +if (m == null) return pt; +}if (wv.t != t456.x && (Clazz.floatToInt(t456.x * 10)) % 2 == 0) { +if (this.c.type != 6) { +wv.setPos(this.sym, this.c, scale); +}wv.t = t456.x; +}if (m == null) pt.setT(wv.ptf); + else m.rotTrans2(wv.ptf, pt); +this.sym.toCartesian(pt, false); +return pt; +}, "JU.T3,JU.T3,~N,~N"); +Clazz.defineMethod(c$, "setPos", +function(sym, c, scale){ +this.x = (Math.random() - 0.5) / 10 * scale; +this.y = (Math.random() - 0.5) / 10 * scale; +this.z = (Math.random() - 0.5) / 10 * scale; +this.pt0.setT(this.atom); +this.ptf.setT(this.pt0); +this.ptf.add(this); +c.constrain(this.pt0, this.ptf, true); +sym.toFractional(this.ptf, false); +}, "J.api.SymmetryInterface,J.modelkit.ModelKit.Constraint,~N"); +/*eoif3*/})(); +c$.locked = new J.modelkit.ModelKit.Constraint(null, 6, null); +c$.none = new J.modelkit.ModelKit.Constraint(null, 0, null); +c$.Pt000 = new JU.P3(); +c$.GET = 0; +c$.GET_CREATE = 1; +c$.GET_DELETE = 2; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKitPopup.js b/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKitPopup.js new file mode 100755 index 000000000000..908b47844458 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKitPopup.js @@ -0,0 +1,221 @@ +Clazz.declarePackage("J.modelkit"); +Clazz.load(["J.popup.JmolGenericPopup", "J.modelkit.ModelKitPopupResourceBundle"], "J.modelkit.ModelKitPopup", ["J.i18n.GT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modelkit = null; +this.hidden = false; +this.allowPopup = true; +this.activeMenu = null; +this.bondRotationCheckBox = null; +this.prevBondCheckBox = null; +this.bondRotationName = ".modelkitMenu.bondMenu.rotateBondP!RD"; +this.haveOperators = false; +Clazz.instantialize(this, arguments);}, J.modelkit, "ModelKitPopup", J.popup.JmolGenericPopup); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.modelkit.ModelKitPopup, []); +}); +Clazz.overrideMethod(c$, "getBundle", +function(menu){ +return J.modelkit.ModelKitPopup.bundle; +}, "~S"); +Clazz.defineMethod(c$, "jpiShow", +function(x, y){ +if (!this.hidden) { +this.updateCheckBoxesForModelKit(null); +Clazz.superCall(this, J.modelkit.ModelKitPopup, "jpiShow", [x, y]); +}}, "~N,~N"); +Clazz.overrideMethod(c$, "jpiUpdateComputedMenus", +function(){ +this.htMenus.get("xtalMenu").setEnabled(this.modelkit.setHasUnitCell()); +if (this.modelkit.checkNewModel()) { +this.haveOperators = false; +this.updateOperatorMenu(); +}this.updateAllXtalMenuOptions(); +}); +Clazz.overrideMethod(c$, "appUpdateForShow", +function(){ +this.jpiUpdateComputedMenus(); +}); +Clazz.defineMethod(c$, "hidePopup", +function(){ +this.menuHidePopup(this.popupMenu); +}); +Clazz.defineMethod(c$, "clearLastModelSet", +function(){ +this.modelkit.lastModelSet = null; +}); +Clazz.defineMethod(c$, "updateOperatorMenu", +function(){ +if (this.haveOperators) return; +this.haveOperators = true; +var menu = this.htMenus.get("xtalOp!PersistMenu"); +if (menu != null) this.addAllCheckboxItems(menu, this.modelkit.getAllOperators()); +}); +Clazz.defineMethod(c$, "addAllCheckboxItems", +function(menu, labels){ +this.menuRemoveAll(menu, 0); +var subMenu = menu; +var pt = (labels.length > 32 ? 0 : -2147483648); +for (var i = 0; i < labels.length; i++) { +if (pt >= 0 && (pt++ % 32) == 0) { +var id = "mtsymop" + pt + "Menu"; +subMenu = this.menuNewSubMenu((i + 1) + "..." + Math.min(i + 32, labels.length), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}if (i == 0) this.menuEnable(this.menuCreateItem(subMenu, J.i18n.GT.$("none"), "draw sym_* delete", null), true); +var sym = labels[i]; +this.menuEnable(this.menuCreateItem(subMenu, sym, sym, subMenu.getName() + "." + "mkop_" + (i + 1)), true); +} +}, "J.api.SC,~A"); +Clazz.defineMethod(c$, "updateAllXtalMenuOptions", +function(){ +var text = ""; +switch (this.modelkit.getMKState()) { +case 0: +text = " (not enabled)"; +break; +case 1: +text = " (view)"; +break; +case 2: +text = " (edit)"; +break; +} +this.setLabel("xtalModePersistMenu", "Crystal Mode: " + text); +text = this.modelkit.getCenterText(); +this.setLabel("xtalSelPersistMenu", "Center: " + (text == null ? "(not selected)" : text)); +text = this.modelkit.getSymopText(); +this.setLabel("operator", text == null ? "(no operator selected)" : text); +switch (this.modelkit.getSymEditState()) { +case 0: +text = "do not apply symmetry"; +break; +case 64: +text = "retain local symmetry"; +break; +case 32: +text = "apply local symmetry"; +break; +case 128: +text = "apply full symmetry"; +break; +} +this.setLabel("xtalEditOptPersistMenu", "Edit option: " + text); +switch (this.modelkit.getUnitCellState()) { +case 0: +text = "packed"; +break; +case 256: +text = "unpacked" + (this.modelkit.viewOffset == null ? "(no view offset)" : "(view offset=" + this.modelkit.viewOffset + ")"); +break; +} +this.setLabel("xtalPackingPersistMenu", "Packing: " + text); +}); +Clazz.defineMethod(c$, "setLabel", +function(key, label){ +this.menuSetLabel(this.htMenus.get(key), label); +}, "~S,~S"); +Clazz.defineMethod(c$, "setActiveMenu", +function(name){ +var active = (name.indexOf("xtalMenu") >= 0 ? "xtalMenu" : name.indexOf("atomMenu") >= 0 ? "atomMenu" : name.indexOf("bondMenu") >= 0 ? "bondMenu" : null); +if (active != null) { +this.activeMenu = active; +if ((active === "xtalMenu") == (this.modelkit.getMKState() == 0)) this.modelkit.setMKState(active === "xtalMenu" ? 1 : 0); +this.vwr.refresh(1, "modelkit"); +if (active === "bondMenu" && this.prevBondCheckBox == null) this.prevBondCheckBox = this.htMenus.get("assignBond_pP!RD"); +} else if (name.indexOf("optionsMenu") >= 0) { +this.htMenus.get("undo").setEnabled(this.vwr.undoMoveAction(4165, 1275068425) > 0); +this.htMenus.get("redo").setEnabled(this.vwr.undoMoveAction(4140, 1275068425) > 0); +}return active; +}, "~S"); +Clazz.overrideMethod(c$, "appUpdateSpecialCheckBoxValue", +function(source, actionCommand, selected){ +if (source == null || !selected) return; +var name = source.getName(); +var mode; +if (!this.updatingForShow && (mode = this.setActiveMenu(name)) != null) { +var text = source.getText(); +if (mode === "bondMenu") { +if (name.equals(this.bondRotationName)) { +this.bondRotationCheckBox = source; +} else { +this.prevBondCheckBox = source; +}}this.modelkit.setHoverLabel(this.activeMenu, text); +}}, "J.api.SC,~S,~B"); +Clazz.defineMethod(c$, "exitBondRotation", +function(){ +this.modelkit.exitBondRotation(this.prevBondCheckBox == null ? null : this.prevBondCheckBox.getText()); +this.vwr.setPickingMode(null, 33); +if (this.bondRotationCheckBox != null) this.bondRotationCheckBox.setSelected(false); +if (this.prevBondCheckBox != null) this.prevBondCheckBox.setSelected(true); +}); +Clazz.overrideMethod(c$, "appGetBooleanProperty", +function(name){ +if (name.startsWith("mk")) { +return (this.modelkit.getProperty(name.substring(2))).booleanValue(); +}return this.vwr.getBooleanProperty(name); +}, "~S"); +Clazz.overrideMethod(c$, "getUnknownCheckBoxScriptToRun", +function(item, name, what, TF){ +if (name.startsWith("mk")) { +this.modelkit.processMKPropertyItem(name, TF); +return null; +}var element = this.modelkit.getElementFromUser(); +if (element == null) return null; +this.menuSetLabel(item, element); +item.setActionCommand("assignAtom_" + element + "P!:??"); +return "set picking assignAtom_" + element; +}, "J.api.SC,~S,~S,~B"); +Clazz.overrideMethod(c$, "menuFocusCallback", +function(name, actionCommand, gained){ +if (gained && !this.modelkit.processSymop(name, true)) { +this.setActiveMenu(name); +}}, "~S,~S,~B"); +Clazz.overrideMethod(c$, "menuClickCallback", +function(source, script){ +if (this.modelkit.processSymop(source.getName(), false)) return; +if (script.equals("clearQPersist")) { +for (var item, $item = this.htCheckbox.values().iterator (); $item.hasNext()&& ((item = $item.next ()) || true);) { +if (item.getActionCommand().indexOf(":??") < 0) continue; +this.menuSetLabel(item, "??"); +item.setActionCommand("_??P!:"); +} +this.appRunScript("set picking assignAtom_C"); +return; +}this.doMenuClickCallback(source, script); +}, "J.api.SC,~S"); +Clazz.overrideMethod(c$, "getScriptForCallback", +function(source, id, script){ +if (script.startsWith("mk")) { +this.modelkit.clickProcessXtal(id, script); +script = null; +}return script; +}, "J.api.SC,~S,~S"); +Clazz.defineMethod(c$, "appRunSpecialCheckBox", +function(item, basename, script, TF){ +if (basename.indexOf("assignAtom_Xx") == 0) { +this.modelkit.resetAtomPickType(); +}if (TF && !this.updatingForShow && basename.indexOf("Bond") < 0) { +this.updatingForShow = true; +this.exitBondRotation(); +this.updatingForShow = false; +}return Clazz.superCall(this, J.modelkit.ModelKitPopup, "appRunSpecialCheckBox", [item, basename, script, TF]); +}, "J.api.SC,~S,~S,~B"); +Clazz.defineMethod(c$, "updateCheckBoxesForModelKit", +function(menuName){ +var thisAtomType = "assignAtom_" + this.modelkit.pickAtomAssignType + "P"; +var thisBondType = "assignBond_" + this.modelkit.pickBondAssignType; +for (var entry, $entry = this.htCheckbox.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var item = entry.getValue(); +var key = item.getActionCommand(); +if (key.startsWith(thisBondType) || key.startsWith(thisAtomType)) { +this.updatingForShow = true; +item.setSelected(false); +item.setSelected(true); +this.updatingForShow = false; +}} +}, "~S"); +c$.bundle = new J.modelkit.ModelKitPopupResourceBundle(null, null); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKitPopupResourceBundle.js b/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKitPopupResourceBundle.js new file mode 100755 index 000000000000..bafd5306ea53 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/modelkit/ModelKitPopupResourceBundle.js @@ -0,0 +1,28 @@ +Clazz.declarePackage("J.modelkit"); +Clazz.load(["J.popup.PopupResource"], "J.modelkit.ModelKitPopupResourceBundle", ["J.i18n.GT", "J.modelkit.ModelKit"], function(){ +var c$ = Clazz.declareType(J.modelkit, "ModelKitPopupResourceBundle", J.popup.PopupResource); +Clazz.overrideMethod(c$, "getMenuName", +function(){ +return "modelkitMenu"; +}); +Clazz.overrideMethod(c$, "buildStructure", +function(menuStructure){ +this.addItems(J.modelkit.ModelKitPopupResourceBundle.menuContents); +this.addItems(J.modelkit.ModelKitPopupResourceBundle.structureContents); +if (menuStructure != null) this.setStructure(menuStructure, new J.i18n.GT()); +}, "~S"); +Clazz.overrideMethod(c$, "getWordContents", +function(){ +var wasTranslating = J.i18n.GT.setDoTranslate(true); +var words = Clazz.newArray(-1, ["atomMenu", "", "moreAtomMenu", "", "bondMenu", "", "optionsMenu", "", "operator", "(no operator selected)", "xtalMenu", "", "xtalModePersistMenu", "mode", "xtalSelPersistMenu", "select atom or position", "xtalSelOpPersistMenu", "select operator", "xtalOp!PersistMenu", "from list...", "xtalEditOptPersistMenu", "edit options", "xtalOptionsPersistMenu", "more options...", "xtalPackingPersistMenu", "packing", "mkshowSymopInfoCB", "show symmetry operator info", "mkaddHydrogensCB", "add hydrogens on new atoms", "mkclicktosetelementCB", "allow clicking to set atom element", "mkselop_byop", "from list", "mkselop_addOffset", "add/remove lattice offset", "mkselop_atom2", "to second atom", "mksel_atom", "select atom", "mksel_position", "select position", "mkmode_molecular", J.i18n.GT.$("disabled"), "mkmode_view", J.i18n.GT.$("View"), "mkmode_edit", J.i18n.GT.$("Edit"), "mksymmetry_none", J.i18n.GT.$("do not apply"), "mksymmetry_retainLocal", J.i18n.GT.$("retain local"), "mksymmetry_applyLocal", J.i18n.GT.$("apply local"), "mksymmetry_applyFull", J.i18n.GT.$("apply full"), "mkunitcell_extend", J.i18n.GT.$("this operator"), "mkunitcell_packed", J.i18n.GT.$("add translation"), "mkasymmetricUnit", J.i18n.GT.$("asymmetric unit"), "mkallAtoms", J.i18n.GT.$("all atoms"), "new", J.i18n.GT.$("new"), "undo", J.i18n.GT.$("undo (CTRL-Z)"), "redo", J.i18n.GT.$("redo (CTRL-Y)"), "center", J.i18n.GT.$("center"), "ekey", J.i18n.GT.$("element key"), "addh", J.i18n.GT.$("add hydrogens"), "minimize", J.i18n.GT.$("minimize"), "hmin", J.i18n.GT.$("fix hydrogens and minimize"), "clearQPersist", J.i18n.GT.$("clear"), "SIGNEDsaveFile", J.i18n.GT.$("save file"), "SIGNEDsaveState", J.i18n.GT.$("save state"), "invertStereoP!RD", J.modelkit.ModelKit.getText("invStereo"), "assignAtom_XP!RD", J.modelkit.ModelKit.getText("delAtom"), "assignAtom_XxP!RD", J.modelkit.ModelKit.getText("dragBond"), "dragAtomP!RD", J.modelkit.ModelKit.getText("dragAtom"), "dragMinimizeP!RD", J.modelkit.ModelKit.getText("dragMinimize"), "dragMoleculeP!RD", J.modelkit.ModelKit.getText("dragMolecule"), "dragMinimizeMoleculeP!RD", J.modelkit.ModelKit.getText("dragMMol"), "assignAtom_CP!RD", "C", "assignAtom_HP!RD", "H", "assignAtom_NP!RD", "N", "assignAtom_OP!RD", "O", "assignAtom_FP!RD", "F", "assignAtom_ClP!RD", "Cl", "assignAtom_BrP!RD", "Br", "_??P!RD", "??", "assignAtom_plP!RD", J.modelkit.ModelKit.getText("incCharge"), "assignAtom_miP!RD", J.modelkit.ModelKit.getText("decCharge"), "assignBond_0P!RD", J.modelkit.ModelKit.getText("bondTo0"), "assignBond_1P!RD", J.modelkit.ModelKit.getText("bondTo1"), "assignBond_2P!RD", J.modelkit.ModelKit.getText("bondTo2"), "assignBond_3P!RD", J.modelkit.ModelKit.getText("bondTo3"), "assignBond_pP!RD", J.modelkit.ModelKit.getText("incBond"), "assignBond_mP!RD", J.modelkit.ModelKit.getText("decBond"), "rotateBondP!RD", J.modelkit.ModelKit.getText("rotBond"), "exit!Persist", J.i18n.GT.$("exit modelkit mode")]); +J.i18n.GT.setDoTranslate(wasTranslating); +return words; +}); +Clazz.overrideMethod(c$, "getMenuAsText", +function(title){ +return this.getStuctureAsText(title, J.modelkit.ModelKitPopupResourceBundle.menuContents, J.modelkit.ModelKitPopupResourceBundle.structureContents); +}, "~S"); +c$.menuContents = Clazz.newArray(-1, [ Clazz.newArray(-1, ["modelkitMenu", "atomMenu bondMenu xtalMenu optionsMenu"]), Clazz.newArray(-1, ["optionsMenu", "new ekey center addh minimize hmin - undo redo - SIGNEDsaveFile SIGNEDsaveState exit!Persist"]), Clazz.newArray(-1, ["atomMenu", "assignAtom_XxP!RD dragAtomP!RD dragMinimizeP!RD dragMoleculeP!RD dragMinimizeMoleculeP!RD invertStereoP!RD - assignAtom_XP!RD assignAtom_CP!RD assignAtom_HP!RD assignAtom_NP!RD assignAtom_OP!RD assignAtom_FP!RD assignAtom_ClP!RD assignAtom_BrP!RD _??P!RD _??P!RD _??P!RD moreAtomMenu assignAtom_plP!RD assignAtom_miP!RD"]), Clazz.newArray(-1, ["moreAtomMenu", "clearQPersist , _??P!RD _??P!RD _??P!RD _??P!RD _??P!RD _??P!RD "]), Clazz.newArray(-1, ["bondMenu", "assignBond_0P!RD assignBond_1P!RD assignBond_2P!RD assignBond_3P!RD assignBond_pP!RD assignBond_mP!RD rotateBondP!RD"]), Clazz.newArray(-1, ["xtalMenu", "xtalSelOpPersistMenu operator "]), Clazz.newArray(-1, ["xtalModePersistMenu", "mkmode_molecular mkmode_view mkmode_edit"]), Clazz.newArray(-1, ["xtalSelPersistMenu", "mksel_atom mksel_position"]), Clazz.newArray(-1, ["xtalSelOpPersistMenu", "xtalOp!PersistMenu "]), Clazz.newArray(-1, ["xtalEditOptPersistMenu", "mksymmetry_none mksymmetry_retainLocal mksymmetry_applyLocal mksymmetry_applyFull"]), Clazz.newArray(-1, ["xtalPackingPersistMenu", "mkunitcell_packed mkunitcell_extend"]), Clazz.newArray(-1, ["xtalOptionsPersistMenu", "mkshowSymopInfoCB mkclicktosetelementCB mkaddHydrogensCB"])]); +c$.structureContents = Clazz.newArray(-1, [ Clazz.newArray(-1, ["new", "zap"]), Clazz.newArray(-1, ["ekey", "set elementkey= @{!elementkey}"]), Clazz.newArray(-1, ["center", "zoomto 0 {visible} 0/1.5"]), Clazz.newArray(-1, ["addh", "calculate hydrogens {model=_lastframe}"]), Clazz.newArray(-1, ["minimize", "minimize"]), Clazz.newArray(-1, ["hmin", "delete hydrogens and model=_lastframe; minimize addhydrogens"]), Clazz.newArray(-1, ["SIGNEDsaveFile", "select visible;write COORD '?jmol.mol'"]), Clazz.newArray(-1, ["SIGNEDsaveState", "write '?jmol.jpg'"]), Clazz.newArray(-1, ["clearQ", "clearQ"]), Clazz.newArray(-1, ["undo", "!undoMove"]), Clazz.newArray(-1, ["redo", "!redoMove"]), Clazz.newArray(-1, ["operator", ""]), Clazz.newArray(-1, ["exit!Persist", "set modelkitMode false"])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/atoms.png b/config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/atoms.png new file mode 100755 index 0000000000000000000000000000000000000000..12bb8e0b80b351a494451fbc4ad4bc61aeb1e208 GIT binary patch literal 1408 zcmeHG`%BXS5I_5#wtSE>F)cGe6KgalQrHY+>QK?GxlJm6FsJF#EH!67kTj8++VWA& zS(eWCV_UXDK|xboW6H#!(3GJ)W;01l@R2C?wf`dO;6C@@;NbJQE8}s)9c&NV0)Rtg zL>Qlp&U;QFNbJAxBbW?U+5GSj&`h{5k_C!c92UUKO1o{5HCcNmMesQQ1wH`9r2t!G ztJngN!vOf60KilL9LlWkk2wcG054j|CIgXzAUz7+kQY5*eo5{cvrQVRxxon~5tpIw!na*#Y z_hv>S!&pLJLDFWWHG{`y_@ABNDC|<4N26<1D(_sk1M#<|j4%fClu;kSiW{XdUFnu3 zM{4W!M(>QeYL8K4~>CAlDql9kN}wf<6*7;2>Q?<{0x zYqczE(@04@C)8_%IQsFDtJ8x%;@6lVzN+k?A^hs6a8ceqcqQ`?4^xj&_bxY*%?;Cp HB$WIHz;zvG literal 0 HcmV?d00001 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/bonds.png b/config/plugins/visualizations/jmol/static/j2s/J/modelkit/images/bonds.png new file mode 100755 index 0000000000000000000000000000000000000000..3053ba4d1d9b1fd5844d6e75a0a9e3dde17decfb GIT binary patch literal 1378 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQajKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#N0|PTd zfKP}kPyr*O3?rkgjEsz|tSkeA3Q!dTgB=5dy^M^WnwpxWrKP>SJtLzBBcmrHqYopa zFC(KLGjlWpL#&L9i>$1htZWc7a|#nvDl>B-GjkCWQ!x`$2@_K(3kwjH>FRnpIy$<# zy1Kc!1qKF&hK9z(#5g~3$+|8ReZ{4~DboMA14FSqS;6jJJKQIe0lmz(& z{~y_aA^1DHDlkMPN?apKg7ec#$`gxH83GbB^GfvmTtgJfjP;DoRz80OQnSR<#W6%9 zcx}LOu_glnmc=)!of)~6l)lCN|G)j1h>wWnuJ$KyQ_8(eRHl3r|L`nm7Q1zX>zsRb zz0MB%98-#`{Ik5icCD<*;5fhL^4eDc3%+YU)zJxeILv0mSAFLUr+5_486){kuQiu{ z4tsBQJ85g0r}yI0*Ds16?MrmAJFMMUuXQnR_VFC0Yx=HL{VPAFGwiUQ+7Vp&(dATS i&L{I{&odsK-_H;d>lvz_^Xrp*(7D42QlWGr9{*~xdd!P28fK>8-rB3`*riv~pohOZ?o`F|9LK+!hy_W;Ui?#3G#;WuyO2hvM1;;R1OuXrhoqJuXh70;+tVzs5r`0!0Jz~WXECEQ zp;E{UOYDLhgxw0m4(m{pi<~SCsk4=B^FR{;o7hb7y?3p zQVNSnxKY><7$JxNlu}p>!fl1^hao}KLMg)XE_5$hDJ&xBqSc1qfFw|>l)@sCE}}Lf z20{V>r3i~C6yUnBZ5RfGfa3M!Ew1ZyR4&TQ?$|04=5WJePG?4CLZ*-y#$REXf5IF( z7A>8+N>!#TQ7Xd12Av$O4D|$6K{-sRYcCe^bk=D()EB8{DVw{({>K7~gcV_7YinzB zb8~fdb!BB`etv#>dfGJ2;o;$AG8vD@qtR$zUtc5=>F(|hg+gs@ZGk|bv9YnPuCBVe zn!ocSBcqz8?L2mR$L)ld-sIKsUlnCQ8BTk<-jDF%V%0eIRW-=ZuFZ)&-fo9emG|!) zQom%&w5#U_zqxix^O+-B;@DcvGqwS8ObYK@`K2j0?NibY?qw^TsRnElvswiDp6v`P^o}pPzWkhfdDd<$c~C1ffN{$ z@AQ4ly>~~#1#3&1?Q^>OboV*m`OcYRGt(QE^u4>Ur>AGhrj1iu@$Z%N=ki|s-Fxo- zTk+3wZ{1GsX45v9)mYb(8l%vox3+87z#<7INc-(ea_u zk_|hTLHSZ|>vXy2|LDKs&a3BPV{y~ei=$e+ij;#|MFLFJovRw{6Xb@_5R#5 z_&IT+chluPCmw(Okpn{f-GiT6y62j2jyXT*`QGL1>d#))`zK3IKmNw!XC8j^|* zL+?EI$BRb)@c1{*ocZcgPc6Rw=+p20i_*yHv#-6jcf4sDO=&tc2bG;w#>HW%C zwtDS7)5fFE*0;X!#<@>0_e)FP^Szf}5SP6^{gwAT@$AitTy8vZcGKj_ttC97*G6q z$4AazvwQX1-*wNql^=ilr+@wLubh79M?dVHz2oq!H{LdI*SlWq`RSG&fA-HuPrhy* zKKZNT$5$UcI(@)B?iKcqKFcc)UH0Ou%YM=`Vc1U!wS4D>#@l9AZycK0xM7?1>Zez% zdUDGL{^_NY_dYhi@`f9(dvwcJpD+H^iGP^r{qj>cuK2;vo_+sKd)YUZEoX~o@44oa zH~qKS{Q13x(Nq?nJNubex8L{fkAD8rzx?2n=AQiG(|4Xfb!68!pS8rkQ?C0mdf9J2? zEcN{I`!64T@%Qh25l+>!Y2EbH@in&{?aL0xA13{Fomt_U#x+(}UET2*iCEvYzEF6I z$Jrcr1$pg-TzpkuU$tSW(zEvo?(NVm&2E-y?)C3uhp?FA@+x;-uI@0bdg_c8@9_P zSpV*p4BXt_{!mu9h-~NrvWBI5DmRP^h;d-1m=&E{-VAqD{KJN&jU>?YYPBJFC>R@- z$AUmOTx}SN%RINi(}SUUp|C(=H@VA(ac#Jr*fQ%{j&0G_qoD*Am+OkATQycy3=!?o z8K04B<)gI@l0NrGhgS8?r(SivZt%{V2Ky_9VK+k;@;yi-_fs5)TiP^lCQgb`gL^Zs z-D4SFu#ia+%l@@v71=yv>T|=@1>tWpa?qKl9;iEzq$Q4cFk|2|7l{WI+fmkd^Vs zs@HJ&ln_qB^kDM#sU2(*M+^6>+HfQqpeyLy=e5$Md|Re;m#d!b;{Md}?CnTggBqX9 zR_uz$g(t66svBgp?V5_m`s<$Oi1BQ;il-DAR~40v?bfmgR*TfKE7ot?ye{KtmE`oz zdQGu@(;|jc66wWMz1mq!n6&XW*GLGe#_p3ACrZtALHWbu~%<@x4G z<5%N?aH0vJRae%yH>6Ea79{&_n>Db2Su=kXcsxI!E1`z4t-%kIKL(F z#z{@nB|Imfz@K}wGN-J^^LrgXBYRBUBIldZ0m4DZgx(2}Zt4dmm09cR2nWgz6g0Vf zH=VM_9l=;W7aht(!0A8$+F^}i;lEUz!v|sW#=r-+@R;ACv`8!fvG|FpxZWfn1xHq+_@$6x*#Qcs zfoy*!+wv46<5;!Z?>Nv6pd>;z7Lsu^bvWy)X839dX{@;W7Om3ddOs;+Zx+$d4 zG~UiAt^y$BZUS^A>IbNyST%ziN`)J&f5rC6&D++o72Bpa&6cH8#WhvRh=P2Tvwp&g z1sYoL&TnZs%~e2rUArj|poFF}-^DkS%iuL&n7P7Tu$vUO+6N(4x(IzF?oUARLN#1J z?!E)YiTxoIKB4i^I4%Tg5}$cXNA-{}gwc>`y~{c0v?lAP;FRXc97Y+D2c*h3K}0SS zDVX*gN&#}TL`2GT>e|Gd1cyg@;AKe#M4pU0)7J2mHX^gLv&^YZx11`1oa)&GGwDrX z2ceOOB{c;{BGshj7_1_alNPlwF{DUgz$h4$7DfbyM(k>pE&w5tCX)-um zVka7RWtvACF?4u;_cZTyP4g;3(zdONA~@G-usN}IC^c+#e?UQl*CvbO((V(hz{qyj zB@G4a+U-8e#ctf|E)y4CQb;^a+Fw_6OU2m)&=OET$CJiriU*+sNP+XS{==&nKIu2yssch6C)n_xS~w|X7a*-_Tb|Gla+V*C z9S4FsqBZ4=bV~p~;_x1?2YE_CaoA2qJI<*)!qznfbSt@KOhiz6AtA+A;;lRLQ0!>B ze}@!RQLsfC6#z=&0wM`6NCh#WDlB@rxbQ-I0&!D`m0R4cwFv~-#%;6(`s$!fWc5jGg48`@%VpY$6kmt>ftucUnhHjVrZ{#zLYe z{Z|83XotC)P))b0cI5I@iTiv=7j_Uj`*|v=IwE8lhr3=I_iTH0dZKukT}023MQ1VG z?DmH6^lIDW3ibp$K>#L?MI?(7B>`9**ker7p9@c?q+z7y$5xj4J{g@R7xfgbU`QzB zpl#&eI{I`;d%%6k{X)8g`;1EZI4uVC2x##ISut87c&~cm;^IpP@XGWfC*(2<#7Q+A zM{nTELqJ6|R5G?$w3#*{*G8yO6sOJ_uyi_br5j5RX*?fF z0i{5t&IENZfXAH!fV7rxb3Iai)&K{}; z1RKjo-8f%XLE)b!5_h<40-dmxju9}UL}Zg%SU70hQ}i@;3m|r-EgdyEQH~=} zWyzk5CPCGFC<1Av+1;vnC0)&v&&ZCE<-v6-DcFxofGeuo>8 z9W{o*I9!f=1+oM98jPVDh&Z}!G9n0ckRp8NVNuddYWTki7F*hFfI-WyW?*YB6ESJx z`5rP$&8r8To)tR*Dy1TP+SJw3%n-sO&xW<2d4^M05Go8zA6HPL9`n(x}l_0cEy zF#$!GVg&uA#G-*Orc+orjC6@hP4T-x7!<(C9eo*0)nhDePOr%54N_&S3~Va8Oev@a zJUd}n6U|r&6|#0mG$!{ssBs5$GQzimwrvJgX2P*)9N!7ll10lwiUUTi>;*ldTZr)_ z`a?b*u#73)~0aGs$d)c0tF9{OMr#p-4Iz%SYvryszj>7Ob(!QsLYk z5Q)v5l8&En@;O~J6k{vp(Kwk?k!W4T*B|oNs!->=Vz(F?=Afs79U3g)i<>cYW{Yfa zI8z)Q8!F~U*9{hF_jz_`I8(}xvf)f&q&SSVhjSyt^XytSM;wFW3&H$oDKlCsjz}=1 zmL8JvA>epntW+u$Ss{}zjE$B`WB63e6^iofA4aV@ggbFod^yB&EYGkPcsG6z|6FVl z7&4X{&5aC=`qMF)R>?7(GF(71S_MrT+okUjB~xep0ftNN5m-SR9%6L7!7&_lu$YG> znUN9<8XL|G6~YBCdaSo(ku-^bhboK|ei0z~4+wjtA|+2y$DP19*=eO;cCn$@Z@0!p z>(NCdq0|Lci00w*u22!5qe=KobBL9u`{ZRAa=_fA3y07aff^-vs-mZD&!5uC6bqJ& zzPe_plF?41bQFDq8We7^z+x=*wKv@f4XsBdAfALOo*AXhniM?11_ zUQXr^pB8c~pBFbbI~yy*e{U@8yliZD3^rb$%GCcUt2fOB}Bh@8k}`_c@oWMTuzZT&2jm+P?EFbQzyl*DKI6Ok$n+^H};C` z!EXZNUk;|vzd{-8OZrz1H0`a|RZhHij=Ve9Kf&`!OLR^gz`UnTs}Q| zO=;2d)m2v8$gbP8-Os6)R|{#ZyOmFtc3t{x+~$r=QvFNhjIRtb15nBU^is(-*`GO+ z{+A$I9*W@^jnbA(8yZ0!TGohayh_f0=2Ov@454z5{eKxL04Re}SeogdCI6=tB{*?P zqz?A8NfyrdFPgn;<$Jh_3;#*F<%FO|2xJySdgnwiKnN}siH027|4BYOLH_^h1iC{* z+PzA+)#vNjDYN7B%hlvP+}HxgbWPTq&Im!I?B@uvlWZQY$@Ba?ch3Eo&$Trg3XG;p z3dysgBOG#sT-A+N!V5VbDs%Xp+%^LDF%3anotMGc8(9a+-flxHsLCDtyZs{+BLpp; zHlLr)vpJ?L%=3L`Yaw>PdestzAy3d`u|1&;*X$yj|7QO=1IT|6v&QQov3z!CU;no` z8F`(}?`W{MC*F2H`6GJhK0~-f>w5U`(b3TFrJwM7XUyIZjV&4Ve-2Y9|I>;pszwar zF0#{n8M|e7XCC%8pZV=4FGUPuJLvv91D6)V+rV+SRmW-v4!A5l6GYn9f+br;`ICL4 zlP7GozxOdl-44-YVdk#Q`}Hv-$x-u>cf{}ij(tsD#m%a3oY+OWy^fYptfLk9=ybgF zm0_@>^CoM5c(k^rYS_>I8MG0mrxMc}KW5ATZD-GfUsqtnvZNzawpm!)arpB>HT^@+ zdL;cZj%Hqy=)(HutLc9MGEkD+^_=Wy8|5)Ew$$u7SFq13EjL80&v_9$zq_f!uR6w` zLg-kXadmKlP+724tFcSIxc&D#T-wj&E>8|;%V#f@5JqSW#oOc?B)a+;jNu zj%%5l0v^wcYTKIjX#QV!&uf3WeBUlEo-^PXDusW|Uf(BeW7+<`yEyPoon=<^iHlWK z-!wHfC0X_MGU>ybet1~{J1#)fU~v*iwfj0rI_qMg z*=*gHJ9)f%(c$rP;OHiiG^sKu{l5gM{eAFmTiPWcd^%mHx0iSn62rIu`%9^kBco@4 ze2=twSf%ii&Q(vUHK`qg(LcJmg_1HXQ|Q)?36mwZuh;YYf8bKnCs#Vi2-7r|&(N6_ zNfGNc6^>Es4`R723hJF-nwatVIdHVn-(t)F{l7lbv;5I!qpRsl4W05#6klyO+ubD|APr)CYMh^2cx7>L`51}y zx~$BLk?Jcp=d;yj67nRv^1No;F+On0*0#NYP38+&II}zD9w)q+`@Lb04-{d%impNUvLt!X(LO*U5wY?Bl6^LjaKlLHB@Yrj2@&3YkJ z37MYLhHqgsp_$`_U!gSPHj!_5^8wGGUvx?q8BvVafg%bUV#BN}N?XByvvcd~ z+OU5Kvm1+)-c>Uyciwvo8ra;-{qI_&VL1ObkfGjoU~y*1M{s-o)GEtUwXtf_@Pc>h z7(xC6M(o{dYMj}9>dE&prt2aHrfbOvQuhjp|2ioryb3X=v2jbE4^x}#pezDCfeP*| zH>}?hozyXW+xxbY{pV0Rr{%Y}odkU}ZJzqSxqf>&+$f8S^VCyW|2wemH6~UqP`=V) zmE?!B?3>NX>iX^U&*gbcJ()}?@C>{#1AQ!)cb*1xjZWF^#BrdB{HrO9q~Qu-1oP{U zjPhrM?PqR3Gm-{|H=Vn9#(_yMu zNT%$DNFCQBPq_PusT15h2S6rr_&vLW7iLhvRwQl=#Y}DpBgWxlUj8$lR zAG5Nwlqka;){;pUC(=^gI|NedAAp_I^Pel59{v{qBW!P&EhNxnhgVoIoTonCxuq6O zJ2cUu@7{nT{X(pFvlj6%w)R2{S8j#1Ub@0xSty+YnK@Vb{BK+07{S0vjo0mg&=OvO zjJCFRUzc>m!juu-?aU|{Y;buupgWk~kO!Bai%bBcv~!I+BDVhZFiLw`F8FkIoqa1U z{T_kO){=ESjI{L$SSe3e*^HIc2uw4Oks^QsCJNeRvBsQnoZc{))Zy&iiJ4&+3y;O; zoNd^L3;hEbEOdt(MvOS7R|eVGlDT(BVdMGvDScsj@o8H@G=Br^Ce5=)W*s*mHTBy5 zWRMeby9M!@P6svyFcDflPC$ZyP3OaskcC9!uRl-M?+KlG#^6?w7*YIZzr7G497BO3 zfrMlo9BJJim14n!9D~y)bvG|*O1|g`FyJV5U}w0CHn4ELOjI85iIAzPG$4mk0*M`bVI*Tm@M6ofbi?>PQ^hiCuo zb6+mO;^mKo$$KGQhT{>NBS!Y;_wuTsE@;i&!B}-QHLKD}b#-;^`k_}-;nj_ow}Z;Q zDPale9K(;D)!Q-K0ExeNP}6bMY?mpJwze=;k>9#Ii(XM-5!6b`e^vDZEs^DnwJ*0B z>b3iL_yDomZE{ME^-r+sAP8Gi5(;@pZC5NdwTMo!onuHG2VfnK9g~u77B|>6@lS1} zH#7e70Az)!dkt4ep5I=CRzUO0=wm7HYjXJmul$9=f=JF>H+MG_Ljlsi9_9_K;eIxQ zx`KDU$<>8$t#O~UKDT5Kl2OmVTiP6FRs;Ih{Jf^2bIR%1Q{eO$z9An?Svi;~rZW8Irxopk*EDiO(PJuCs4%(mP*nTbp)zAyUiet*DZ~ ze=(9#<(K$;j5@c>5#@7%J6j$pcwqX7V-PdBsq2CQ_}7^rf0Ve?Ut*zy2@?Kj|MOE z?+>~I3%2t1UTz4hh*XW&d`!V} zgOdD4bXd_~STH;oPb+ekIAI_5D25}+X^_Pilq&8OMfH`+H+eXGCt+&akZ`_jJ+e9u z8mm*l)>zATCO0~U6TzDoBmI8m2J>!DBj+L))|y98Cf^YX{J@N_ILIJy;fhXA8Y0CL z!ng)vk%0u{%S{5o`vMoYlO%ec4^GEgj&^S+6N-k!t4uV3HfA`BMLyg_RM<$p3=nLXwY1-LLo6app=M@uk1=g%Cfxv^@DIe{?fMAf1RwzIce*u;z($kh8?xrr@Q8cc`Nt#BRPh|`W_G6P}z3`@UiW^ z#1eIR;-n^Hbyn&ENTgE!ZZTtQa0yLoQ|a)$)z}SbPnaegk3_(-i4F%zG1V%qtcpSH zEwj&fj%DMPj54G9p_@OI$o>A>Mb8aw;55MT4Z^mKcYPvue~?Sw4E@+40dQkxj9^02 z*?Q*a=vFOda$!H%p*pHeKla;?F)`o|fx(tlR04eb3b${gmdVWBocf&4#`V?oDJphxY5i&G!qBF86>q!3WULPhwF} zsZx%}Qc;``;@pxED&bqB&3qK6l_||?a%qg`5Ennc>rpp8Pqz5et~vkX;vW~wpF8`z zal(^9$$N3)u3}AY@XWkfN(?By(lbeEcH&Y7!QaT$F2!WAEvlNAreMcmf_J_WUa30W zEvTjGK#yMaE*kh$Esd@ur6wj#3HeW5z#0#ru6;XydZ@3d8H_Ei4IO4MTZu3aOXXOmnpfMR)ei+KREv{^ z30y3N5Gb`ctcXyTs(_%2TuLn6=wt#?4SLsb`QEk{3=N1VAh!t(b@ zvK+)pyqw<79RrY5s@pF3B4uTXd)w$kDxqDjkWNHJ>;nZL?+PMFpps3fY!SOfjep)y zltt1t)dApmqZ&PQ+@0a!P8x`c0oV(?jhGU0MmJR|`Cnh%H#*3mjYQGbwrTKh&w2?s z&Xy_G^(9i&Mm;BiF5UcP<`kz_QU3&*NKCJU%kcdP5w(_)3bloD4f z6LPYkPJ8=?lp!8}TT@ea&OPNaSkO1LE?94ZUp`c>9gU$J%#GWSOnOEYPM#xtUhUvB z0r=oy`e}|zJ{81-9ctv_UrXiUw9s(I6e3^3hGij>0T1;NjUotqVOqvm?I(;WLEqy9 zZs5To4qJBP`AkpXBk_Jz75=K~pPH35!t)nU_sNf@rdd_dWOXRzcIVTSb$}6Z&1Fe_@4MBAy@ZiS z(#-}Vvi5s%UYF6}Vlq-t2KQ*IS@yS5Yw_=eN7$|JmGZ?Q%3+OgtD zdl6u*D>aiHP}XYE0$~Nj85IA)RB=R2CmJU#_|dUrvk^+dc2mHQDOw6!-6wxAlz`@F z@hyh=M`Io+?L>@YFJ@tf<;YFq##*Jhyt#xNWm^jwj9CNP?>MMqEaLX)UmGXn5y1!J z*>IypFc)3_{Ks9uw1j%pyv)z`5I@_)Hj_BRyhgZSJaG#Uxo4{0ltjb}FtdosZZLA| z!qe@*(rb6f?)aBP6hpMH&wdz~^I6AH^4>w$}`AR5YkvZC8>54Tj8;6<3X0w4tgSeVU$LDc5o*PJ;F% zU9Pa7g*gR5I6jBI5^x#PP|(LOypWAx$1-6+6~gZT#9cNjasj$G#3N8cpk25KXtT)w zsKr~glPY|>jvw>d-#_Qub#9dhb#$3$D#C<6Mjg9k3l2YP563Csl7FU9x0r$bSJG6Z zUY!)~K<%>>*JPGQ>%Kf{U1)rZ$iCKpKeNpK%;s)aT6W#4y$`xAF8^oda^l?66Q)QUEnW|P8wR7`ayh?Tdt!asc^s8BOW zSYh~4)3zxA0rKMj%Qeh^cFeFw4^^Dm9E>v*74UlU(7S%x&}g={QDi@eAJ4|rMLGTl zr1N$$o6MhUZg31#>d6#UH$`4d?7(+*{~n>wy225%c3y0n5!##eO~Z?T3rG8*b3Vzw zlX)zHvz6us(I=j)vX)sWVZQ!;y;<+DXA%1Q6N&IjK{y*N)-$g;80qI37Jg6Rm$Dd- zDz9jhZKj#Le{Y8(@xt)Kq(nXRxM*HQ+_wMEjkDrOMwP7Ay91qd! z{9Pqg+IB*q15_0Cj>#B>=P?plwpTQ_=kPTla%d=!YC!{_JMOC-{g8Od`G@~-Pjr=~ zIosArvtjCG?%rO$Cc6S1Wu2i!^AXSjp2rO90Nne_Uy5iI8?qn}-A~_U%AI@V|Fp3n zRPy<>@_k&p9|Q&xOGtKTX3EQy*5UO5TOTMJA<$UF1Rvu(8ME zcK}0P58fX2?Y{Jm5}iA&c!y?*;Xh&FO#F*^j3V=q+Ox|QN}lsW#2;9n1WvQpwc^A! zocUqGxf9G+oDVy2F_j(&myKODYJK>MmJ4pf2pqwiB^C!Ko0Sa@bKPBU?PEW*9An>3 zm#}S+L;cpueScx2&+moGp3G-Hu=mNkxaMfbi+~F*Qc`mnSlDi3y~5!fkCTC_n9MD7 zf81;`A7n{JDLTN>OV%xavr z6LHNLd+hG7$aD;g}C+*rT$(vv1Ts-_C&}tph`0+GOzuGNnDA8?_CAgtVk!IlSI*Wg& zX6qQ&a^M#l!Mh#vzH;SMGIb-=DpawT=`amj=?A-D~nGVNFY1-;r$EY=>TR zY@xwoYJw7|@Vu4iZT**q_-$zgU4%cvtcb=@=_GNFIV^TguEQ{Gph#<+jmI3}FD(AzMcbq~N{ zSO(9{xXK0+@#S#p#X!)Jfa`*#(95zyV5^hZ22t+|x&-@*7V!y?r00zZs zGUl|+;#xv_EIc34m3e(QW@wloi0AE3V#0yLkdGt*@JOIie(WQM^sNWxZ>&^%w^>lQ zCUjc<<9nhCD2JpK6VINTEA|&Is(jRy(uzP*J0@47hw%f6Jd@q+3o9<2xdIpqHApXI z<8-6n;O_@%%dHltaGm_%y|y7s`u31hyo}NgFM=;k0Ba?06T#}V-a%!8(oRCqk6a0! zuqS6S^}AFPTw1&575Q@~`58;U;N@5Qx*tF#rE%Q6-mvT?o@b6A9cIOl@QAcHPKybW zp1mnEDJk9k&Lv~te?PypBu)5Dv!g!x+yv=XzgkadCHQiy+H7GUe{UHMlAJX8g((m$ zhZe;Zmm&4a-Q{M@M1CCA(O{-_HTDc%$HQeSS_O_SX~)}6Bu5D_)=Rtf^?uHNgiLoL zQ>3#JEq=;6Ry{Ze=Exth2V}c4~uw7@bTM|fK#2WBxc;;fGQL;fS=R4Wv z!xjeh4FQ!rnmv{LRmwmS{6V2l0*u8n)`KlIkwF53h4D!*kV3NFyJ_NLp1{YcTRq@x zc6&p&S{dq8jGN{9!O(`{v=BzKG~%)!H5P(ZhH*l)yc@|W5J}IU>Id<3w=U(m8J`-O zh4}5bc)t;@_a++)HvaLA+I4*6ENqIB1=)AU_-~0bVf|{MhPnS-F$;h65jH;_6q4_| zC{(iE4Yq8NME*q1F& zT)Wz(@k{xkKs-2j`2>e+MM>*Zq;WAyf~2RC4DIz26u)xaEaA7QfM1Xb>kEw=M+yv?ja-bMUy$Noy5#!<;~h^YI46V^VIic z+;{okO|i4L?UY+W!NcC6r%HB1jzjtS;8>*B6QwOvM0^-ttLSDdqBg(FQ;GAUWrWj7dkb5VTYMK&LPAq?VI-~( zDAV?({HwOdXDeXnaN>o8=;zgmUkZWLF<1s)Vwn|P9+_gP5GVEZB6nNrd1;u0=t_@l zoKKA}H4Zv6CM-8+9bk!rh*ZIH)S;B>xW$Ra42iDKUp1kMO-*jxCJN{a*OY!;RFob@ zQ~d!B=3nxo&L>K=1COObxhSzC)IXOZ(I+aP>oNKNnHh+hPd+5vASRbfni;@ej+mIT zpV_k@L}~b@{t2xS&nGG5D&$E^C;(tqrsZ=+>l3N zEnJv*E{VLNF%`?F-bhaf5hj9-1&6+^umCwWIY(6~r2K8nYtYQ1Z1)%aRAjsG?-8kS zq6meg2x*p2EZ z?(kXJE%@S(MEfOnN9YWGIN;Y$C8D(`$^ulBQ6spFD$9jUj@z4VYFKQBky7@YWR@wm z)|RxtU*%%E$%)3qd;@z?AW|iY8 zo#3?wD?F@)BC#CQ4o$d+wbvT}llk_RtpwoXEoFgAL2k6*9R8uenue2<6-=@fW&))P zil%PMo){*G;FAcEZa<~CoVDv#3^KPg6r2y|NK?9)0%xTpy_yp4^hW#&Op$MrEzn

)wEy5=(dQ>EUI1M%y`W;Xtn44}a?5<8Vfh?@Nce38R+52J z_Fq&@5PalITY*N9NBJEm@kQy88fa(ZRdZ| zEMmmh^f>SeYe{7iydh=x>zMB>!$nn!iO$Iq$>Y%g76lBfFGp&D+NouO#S4kowv(Q~ zeqzbIe+R8oS)8ve+V$#+neE%@jf_}2B#5!EACEuNQsy^zQ$Us_tWVP7c5{9>Z0Tb#+oatggiRCq%=vN30Sap9lW>&b2KBM<05rWOR^j` z3{-20IoqHQxFe(An_HEZO_!#iPv>NBBOEvJB{g7FJFR6|L)|de+SxYIo~qRIf?iPM z6yue_pF@sJdhMZ`h#19B-ifM~okaL(ns6G|NkyuBo^*fKMT*sAN~3H4@I49qw_drd zHIeDJT$z!6Z;(Xo7%m1UUcgu|{a3}xS57Wbd#y73Yi0S?$XNC+sqVE+OzrbpdAFJa z*}ul3#M+0yn5?~xd1dceu05Ra?bXZv z?Nifbhl`zF*UwM%fwK7JE~eVE5uO3Ni3}I~RX9|4d;}(4j>hyNfxA$+pmdC;T?AjO zRS!O_2PNP+`;6o_FHnW=^+|$Fp<7W(qOhLcPJE6EKQ%}AH2N*bklPj(3|e}!t+z1b zuyrrduJ_29T)F&QGPL$*%tM4}c%CBJU=M1E^anzJ)-O>6jbdLt37isqR=9&!ij7e_ zic_?HLi42QGvLA%lyd(MAj=ir60E8a@_2+lSB4Ve||C_S5g1EhZ-UEJnBl4qS1Xw(I26wFR0R zeQ!=*odP90yYtg_JxtW{rZV7eaO&^|qQbHQ4phP=_|#& z@3?S^t8)0zW|8l`$mZ6P+*l(ZpB_dC)nxz2->eD$taM% zR|muFtKh4et_~8V+BZ^~nttFha5?-4=zA4G|E`^uIk{tP2evT64jUND?~aNNjD+m{ zm^>!oEI08YL(L$Q(IQr&a&Fopu#5)~`}S)XqZU@#eR$C1DCqtvHnA~RaWmRTdp-P^ zXC1SM3NYsym~#Z77dOt91a(t3d>4=_x%f*DG9*VZfT!RLlYILI>j3n=K4R#f4gCZ# z(IrmwE|tyhZNw2pcGx>~dF;ox(AP;wXPX6iOdkkJ;DJQOdlUh+*YN)48BZon@Z*BX zShh_;SZF|*fXqa^l&9gyRFTTq)5kB{_hvC8M;nNXLVVFE{fx5_XhZ={%U0?4#)lDT z>RUfxjAYG51m2Vnr(Rs@E%G>Q!-bJ7M)JZYNA1_1Fs>~*iH!G?vP6R}K{8yieEl2!v0>ZR(1~gL@vlq86V63Q8P||Te`dlWfi3DhJK6%8 zB4(b8sm!jeU8bw4xr4rSeidyF9|P;nZ?7HA?>C*Rj-FT5hOBBYLHv$qtH=JXn5<}c z-pEQoBcG@GFYdfz%fT6RN{U3o61S;5uCABvkvuoL39PVmLqpq3JGLwXK zye!)exTQuodt#Q?7_0HkA8I3&UsGyP(t=SpXvj>iSbWw`(Q~X$7?Al6xI5P$g^n>L zSqbIws(Jfzd{vzUVLdYAmiSD0E-2xHGr=)^OChU>#|P|}^JBB~(6qBPCLbQdjRDo7 zC*1<-x>igP?59+&)gA^mO6o|y9^^M03S$IDk-a9rQ2Z&{Ek-j%#%UaYJE)rIg!_T! z2y@a~gC;LsKOq=WT?AQXpONqG`|v*lGH;r)MZm5j+-3qRULpHvd zm~|Vj{aw$_FK73+d(_L;>98$30O!&HQv^7%-sOtb5gKL3LYgX{D5*@k?!`0nUBJQb)J!MWunaC(*9$g2V9yox+gK2TCADh*eT=_Rs-kLZU4HA-yE z#&HfsOYGndPNWa5yG4ms#EmjG==T)fy^r8kIyGy_(bF{IAL6uNRAVU4lIVnFzCS!TjBYY4KhVvUAeiG(kCcr!$+SvZUF) zHup8c?K&&7m{~7jcUZKjq>f&3MlFTOZ*$w*Q@=;8l%Lu}^LAGnTK8&I=R_KN%jI6< zJayLh^B-HuRZ390#CIT1%Z4&nRSx%Y)=|KbS52yP67p>H=F$mJYYc_>*_QfyY+hmI zCcN!u6{dupLY?oYyZZq?r^WRVIO^%D{KE_iV$uxtaQILYBBVs180G$52X(tD@E4y^ zXz^4$v09mKa4saDIuJmIL=Ml+J}hCA)SHy@L?hh3f|^-zqAiC1#Pbe0|#Mi=q9gxZ7m@1f2;(2R!0aGOxcx>VX--3)4 zx+Byar_@0kUyr$9XXU!gr<;uwXRJW-lRseDz}I+ts@~QmWZ?eLXr8=HD<5s(a5I`{ zNmsEsD8NQn1ctz|j=pYTw@Pr}F%O3XW#S;i;V5~C{m$+^5euZPpNlz}r%rWK)5^nE z8lk7WH;76!7@7Bvh@=;@QzWJ#h&ImpXUFw$R^oMpIqteTmxAF^4u1&Z<|DV zMc3S(;NQXB`detE*?~bhNYiyj^62qN0cf(C34VEhzYLff({=1f5!BgqU$qzhxQ+|B zNy>ZMf)j3eIjN}mb3kBFcMz9jcdFkM@G_gH7XH5Z@8hx2(D69_()Wnl+sqh%oll>7Iy%gFr5`6xh;7St(Ph#Q`z~AQye_ zxlpKAusfWEV5pE5gQ}?R)}lH5+;?YX%}(6TzoYf~2-j(Wla4b-pHX>*QhjQF_uPCo zVPTkFjNZxW#}oe$zNq7}UvWK|E7NatuhMBWd7l~{UlQm^She~^MA4{Mo0|m zlDZx);+mJ1KSBQom2koA2z&RsiQFO5fVTu`k^;Qf<*lm-QvauiRmX_%Z=|&CpR@}Y zIW#&s#DtaS2;sLNlgj6iUswydgpTd#|IpdsMqFIyJp;u?1^2NeNwt9~w>d@Ny}`d= zQ6v+mgYD0GpS-No+humq(b1gO$8};^9Enar=F4>6z=Oq6^ z{)PEv8Tuxl+#Ec-=46kP0exB6M>7Akh~uR8ZT)ASr!?!L80ZC zR~g*>b?tE%>kG5Fzm@iA*lt&BYs^D9eV&RSP6J*_18yjPA-nvLBcNv%R42Bk8#(4Q z$~bRN7OIL1_e0OC|47%6=iQYyljT|%Z=}CmxX~SmkwzCD&c1-iYQ$f~Sn%3Z+$mLVb=q!xCHhG|Vs^lJjS`lkb4n*&x^E&DH?_Z&z=z7kckShC@t9nF0O zr0xs3-`=7BL205_d#v3qlnugNVw>3CS;r3D_lAv5*;$7i!=SRIw;(cOnUNA|6Xlig zXGMrLA;^Yih-DJn!`8;Zs~AVyKhEF*+f|a{6L`CF9o*0q)15)-8S7*=h)1BD1>DU@ zqsKjN_%N3=@6oK%%2gG-5qqrl%npV>EOyPV>+bwiEbwXSQ9+FV80FOhNwnq(5a6}7Ym^r5{Bn-eG(hs(A+4@ zD58L!vRF;_Ilj%2B4w9QILAyfWr(ioFu*D*(Z0vfR~UhsAdh@4wl}nmDmAvZ;zv;u zs^uc_yY+7%ADI~hP6!-Yaxu9+zvH?3H8%6GmO`hz`t(U>>&Xmq3|7hSq zccyFzANsM-(er|g{D=SR>SiHR<9V6txo9edF1{*45l7(wwN9ve-l;cB;1rkF5bVwkbqM0 zq%Xf=>di>RyE!XBUQIuDN)p6^4*nY#kFI$`lUUcIoZy>7QR189>}R99l4P>^vd}DG zBBv9T3q_?IY%sc8mPVohqq*^yUHiOs5?ga!4o}!AW(VUWi<*@uAh0%cTV=6H%Y56> z%kBJpt|o(JsOh1;Ko~NC6V96-2AFa;U6L3x)|1eWh98P5(&N;(Eb&Bpdp$D*=M5Y! zXgBFZ04#{QBPin#pP)(k^N(dW*5m0W2F(&dU0#K0`&0dB=d56as!;kMwiw-JN%fblI$qJo8&;SSfs?tir;kBd7COn@vCa z6(jNc3!PfBheobFE!od*Tprpi{gRg&|9b`lF-(IKR0lDlDC2d*&r(sj%v?bl|HIo^ zBFaPuS^{r~bdZ0wQc~eT1>)p7(f&(ORBgn2e6l)1(F(**U&Pmf&mGLD<8O(1*%^YU zLQiB*At}Btf$$6HDI%i$`$x&M>L@Dkr`Q&#p~Y8I0Us_lQgXM3ANz)6Wu^6Z3NPEi zd2DV>25+G}GM3NJ-Ub=bWc}n2U?>emL2Ov#amb$J!tn?N7Mh!(HIUh5k>S(;cQ8WE*%%P#f6-1LXT(7MvU z{2fU~DBIQv@t}5!+1$T6kd?uAmc#ub1o#+6ZvIb9%8cRSqebpdZ5+8yv=!|`*H_IA z=h*N8UP6dPOVF=d)Mm)ir4LsN&ql@Rm7Y_Oqw<09U(5%^q&TQ?7)18s-UAZ>4?f@a z_Z7L<@3J=E!l8STHo{Z_QA2~cWMw|%LB^a$1=>EhYQmqAo_YDowRo6T#pX4f&>>&v zcXO+^(4TR>(iGRIJjdTdBg(Qh3dj;F9sUx*kkQ_jCPLi>$!-wx#9n4_l0?>>M4^8p zbdj#imd^}i7@N1R%*ssdIuX*^h`((=sKxvSxNWe&Tv_Azgf$g`BOMm?N)<9f+D(+K zk*tjP=6gAut81Jd$hs*!G-MBM&0-)yo@@2q4Il50{^-?weWbvqzC4y0IT$N>k{N;L zvRim3Z!MsyE}>cxeZGCpEPn``#QC)l)f@7LE??ZF9yGq25~u%n^;23}?Q?SH*dO7C zr;4&l)(V&UGn&ZrlceuQ(jsVj6znx!AKqv`Qpzv!e~@pFEO zS_H}J+1Esf(a04@kiRoh#Eiq`z`D{A+$~U_&lHJVZ;_AmsP+ zuYJWLG{AS%J=+x^;dV3fG)7J4tJ=V*;+bBh)AU9|9?F25wb?A*3wzMwl|6S9eMhLc z;+iU*d(&`x{XLQyt>M+2OKFU3H6Tq%0$w;kHBkd1Ie-*8TUo!zLIRN}+%m9Zw3#63 zW`0?aV_bL7Av=_R8zbCx4`vw{TFo|US<0Cm4F|NgYay$KYVK9nViolpXzQ3|vE^>a z_SU5TuoV|2fCOaj+RiKqAzC@1RF;lRNjuM=uagE)G<751wJ&%Wqy99(Aw7hg^O4^S zO4|<8_`3@2xAf3W6aOOxDk;8HaKk@E%NPZB_X{wk?0tVo;g)afznLk>R4YK(Pm$8UsFZqj>)N*j^t{@8$u4ar>hT4rfkSw!jPs2T~Fv09g zalo{5kj1^7;NJ7l%7#b9R4I*irGc%8LQJ)>*6V-?P&tvJ0uc=p6(mn{HxSl89=K%n ziepatdE!ljJDR@VxTn}$4QU`W?C39%E}2zv<1k5$#y=|Dab|QY9Qbq(mtEP>3}~U6hE4_&Wf8>p;0;&~fIwl*_QD$; z%acLX3>M+`IZpIJioKs?32mX{0RT+Mwb_h*0Vj|CJ3X~LXV8}$u89}2*G;f6 zu&1&4^O4p3=f6X0ZMIZSv@pEw(}5CBgCq6-)w-u{r-D~ z!BYi_l+*YEO-<9_oVsOHSPd4Jr+K7lAU2J!}-;JiAH z@NVvEwp^tIo5&Uz<)uX0uTEi08DA{~hKD~dn5#U91^A!PGMOVr2uJi~vC#fiopFJy zKN?=`Aj>M#xEAaI0{PGQht0zctS?k=!V25vR1L(%)*l_LtbBxRzGNgkTwpR=>d^F zKJp>B=d={Cr;gPhxEaL*i@`o_vbP0agk6AaYUtZ*QqwB*lXdBG1kPLdyP-0c=BrP@ zmGUOw?uZg;s1CLe?dx~PRrJ-OR-_Q`x*en)f+zKJT~5d`)VZ=8+H{RqK9fmRHH=x^ zX0{sAPNy{mkW=+0TF9gw-vZu`c%+H@&r>5i!m0*P_&!eG64uJ=NaN#~q8m*109zrN zzneZmK=|Bl>j8-?&t=(VhZV$c<{p+y`B^EsxuO{CuHb2R-*bJPOxB}zt)-Ak$3GvX zwRS-xQ;0gysuIw1AAhQv&|lW@YXwK=0HZrCAxnq*6(Gg#LJ5iA(xuh5hSD{5`mzF$ z8y zXxr%J3%+kX-&D3{%TfXMN)(o#!k&geqACyN3Hu`UEeku``!rJ=!1E*ydoVvq3wW9~ zaqB|kiTL$oG!lklqa;7}S&f$T+Yc3*#sG(R0SwOMAD%@;`7DdrhG>gU9fw`mkRbGe z$@!B(xQ_S6ny+Gc-EiY#md16g>p1xLkrHsazbTKtPVE1}B#0^)8>FU8UuYjA!QMqv z*H{Wv;FKXz#n9i^2J$O0SXVrodXraLn0c5xSTf5SDjEK%CLw$~`>LSem@TG@06M=A z?5Za0&E+hZW+*_Lo$Vq<>>xz+TWUDY%j7hDuGdXR&wMV-z{&(LdXJDemRM0o`?GR3 zI?5p;eIkJFn9?3@W9)Qv%5X%BIMQrVkGi_AhfQ2@qWuqe`ld1bk?)JLUyQy}_-}j_ z(h$}7t#tHHS5w#daL`;m!d>b8-&sJk2@O~CH0V(-(oUT(?nH>Djm9r{oHfCbZZ*&KJMuZZ zPlMd$1JCz!W}#=1Je0}BNdlwBHjj5_!<+Jz)AGd}b4HzZB1B^3u%BUKmpm4J)4xVC zEGC3Jx?g&${{5|7PII_!5_VHDeg9r>Vae3>_D-z`QVJKN5i8&(`rz5_RI&1){f2{R zj}oRCAy!;4{ib4NLCe9&$=R%0G%gkU!fA77QY7^}k@fngn-4t~J#Y0WvpMh5Fu?q+ zLAn}ATCsl&mATvc^pbyZJL4;KG-|Zx{>(dQzVj!}zGV+kC3v#eMjVYinq@!oZ?F(c zWD6Wlh}OvepzIyH>*~UP;n=p-q`{8a*lw&H+jbgjCuwZ8F&gX`jqS#6Y};(kzMubi z&N#2m80QnLxz@VooELt;T4hk~Umfh@RbAEOCX&U6)^-xnC; zfX*Z~|6G-8k*mpR#9_tWdAe&mC1Mu;fHCR0uR6%d?L~yvfpsWkVW_pe3@mk*>pJ>n798K>=-`fi_S;MwlRsR(QR% zNQs~Rjtq@7czR?g6Br-`i2~#}k~rIWn-*B@O_?~}!CF%(ht-z?bUU*DHsZc;)vpKO zA7}g@{Q=N`ow$V1BTt(8V8uz)^DGoBtEANED~4Lo7YVwot?ad+_4yDR)SqO2~o~nvXK_W$TIJ9%?X71B;eHbwg|`m(5CIq zAD1eLnQ zw4z3dQ|G8bRYtU(Sk|qQLk3hi=eVGH(BSV19{m31^V*Um9t5^C7rHdompGGn27A05 z6On~|`Z?`h3vaW9VHYFDf^fYRCn3;Vs)eSPJMZkd0cErTWhKik0L}Qlc=l`prGbV! zbwf--veN`$aAsjQj6=5m3%&oxF>bi_mz7s6Pc23;Z9NHR)twkKDyUgNJe;{NyT3F{ zm!b4=oy4u6)dcq^jLNT^JXF29_gp~mZH%M^vV#6OGRR9n&lGLvlRgCsi^oj`174{1 zNTr80T73uBZRy4EaS+_){Ny6(2#w|i1wzJS9r+|vK zho=WbP9f)(Grslj3G`fM*Li8Nusm3DCdzvBQNrQZd^&qE4<`zH-EbL22?=^WGJ5_VzcKNSWMuJ`GB4(F=6avC{8cRP2H81LqYPD(URnjmO2Q2+lGYnQ+KYB8sijA!%&`Z1iX(k>c zyFAW^hPg-U1I|xFuFQ4J$G3HivLvkX9Yyn~sOX!?rD~jot?QCT-KrnlM%bJSjHDiy z)QwU_juhaGZUT!oe?zTSL*q)k$&ZHLGc~OCMos@bM74sVhhJK%Y&Rb@*&8bphoHR@ zHurXqDdTTZ#DG=jD7$2jchnlUW547tH}Jragx@GUL_WY{>?u&Nly%HoaI z+1)pHW)yraN2{P9atnJN)|f&t0Nu`&WJSy-c;DLNT3n6`1(}s;(K5I}6j>qJU>MYI zVBm5>t{D**C`%ef(-aD)PZ@H|Pc1^QP3Sduz|Q64e<-GOgzdo#&D#hZ21gq~KqHYQ zX^Q+<69QiHbaEmIfe>0-2C|dfV|v&`7zR!P{wgf(X*&(zZ>k}x^-%coat#tbZHE47 z1#_$KQ5RKLd`bCZNvKs8sP3Gfvh#_OuvF1v5_kkd@RCt_ z7!}dVNY+WU7Sda3XWN@-p~H40SZrhI!FW{B!<~|07r5ZECkHW(wvQXrpm6|e45hF$VfH<@mLG+g0E`~zbtkf;mfZXlH3r=Q$E|{IZNTBX~ zKy#QQV5R66L=%I2y`9C$(<;fN2mNPgz?Y?C6k2Ly>Eg7^!M5Gblm-OuH<4acVS&rE zH0)XAhNvtU0XY^T+NP#Iy)n|gD89(Q5;d8Ll92#w4~6(vTZO7foe>%2jy$8b0J3vQ zrlvFj#Drnq?1Gib_$M)$?UI9^3xV3>UNQ~|Fs{PLQJIFNkK!RAgGt!V{vP8M&%-FP zf-@(w+Og95NuW+Mj9zq&U_!>15ohTKc$>jm(!y1Fi`Zu0?eBng!G?Y@4^6C`DIA}dY6Mnm?z@eOe6O=KmSkxWeu&PO z6Z~Ab6x&mV}u5CEXvvHwUG=bX@v>y%9wk#pdQb%DW94UnR_w9ArTp_$zc`Atlb$2>u2G>8O6*-0jQzVx$@vOScv_LWF@uI4uEbNmWPu&-y! zZ)aH_j}O!w3M#oA9v`<)(3hXM&|=cc$1ycHlKCCRl_bJ-7hD=D15mA$oYq7InFQ+saQcgu_N`EsrI-zY03ap$}z zrc#S?M8szlR-#jfi!tetDdo+H_QtowcUHbv)2Kre;ww~aro?M2Gj!e#nGPf|epcbu zTJhEv;~dNK+XM!kotb<$`?6>a`fOI0d@$io!jp~EEKy)aSRAi_lc{RNj1>*Po3yVw zS9+MuBlvjkoY%e+{n2$Z_A!N?VpUAtLqh=*NvH>Ar?ZsmFG_P#8fb>lDJue;%%5qc z91Ly)Hq^`>m{Ox*K1Tw1Mvi#QboX zggyn6GES)G;Ka?sY<1-gZpL!8-)&0)|jek{+i4FL3W6vy1H#w}~bj^qk zJIvHYt$1?;_84uXDd7Kn92d_G?s-;p(}%@(6dp{tidqV~#d)I+kym@X{JXM#Kfd|X z?Z%tW$Q%qBX}eL-1<@8l1H%V#wWCugOyca{VV&)9I&(2)23;wePI; zg@^`T8ysjUlw@ zS%T5JyLohW(B{)LLOE%X25r+}Kh}Z*(Suo1XH58tBffaT;Bk`jWM?ExU@`9IVQWC0 zexLw#jF21tt)4$uHlS=eucW?83&Cldswto_T9U|pY&~b__BZ_c{ZxPsk`Vv#_)LlS zM;Ov7V5KjMi1OpJ@gZMC0sdsziOVo0sspCM%+DkdusjWZ)`I$`9IK51MC&ccNGt<1 zE^L5WsyW9FW2t`OKU>Jn_PCIRiprM+1IRzxKnis8QCUEdHJ%`XWiwjzb^if6s?=KC zB<0~B+|*hS0TM1OM@tB7{R)CSK(4Jtk-zOxr6^SS&X|*x9j(4f)_iGTf>8X|IYWx=tq zRawFxnZ9?Xn>dKZN6TZBwG_k={{XIr1LN94pk>l>zWvHdS~ZVN)ynZwH2WLi_RG@O z1hr`(=;JT=??+Of8G3EkyCdAvra?t_0$cY_j@kS;C{3^g8AMnOTV9^EBTbLNh8_`hMoB5GG&q+;09l%@sw5 zR7IrN;%!P$T?vupsvepVsph+N;-E-$QSF;!(XTr_Q(R+*FmY@gP;i+Q%!mU;k8s~M zpVsN>tJ_YfB6CqEbe;WTiA$i+nr6Q`0xiRp=_ z4afJT97Kv*IsJl?qb0ZLByDV}pwN%zG<`4Qu&PcILc$vy1L>_UQ@o=_xg=pjIyQ9w zy?^;>_N6dCQvtr{E+@kEZavV=HACYkT;`kaCHVuIn$CgE6sg!^XJOKm63P7c0$!;` zfD-n>t!*Jk z>c+eRBK*0}a8mIo+$}G#!Zy!o-~AzH z^%>({gS7?PM3)=FFv;;;(E12i&@vhk3}_!Ha^aIdXBXu0{JJ}Y&f6mHx%10fNjL&K z@9GK$U37q2Anf-8rn=*#sx?Xs+xFp5Wqifj(+?6p1j$TNH^UI7Y`E?PqKHC#bg{-l z;%Q4|MJjaM-4!{qT>1Rzh0XI@l})-h`L%|Dg#%^oH}g@AXs4ZwF#Rxjn*dNf3bIqn z2@@Ql-#C*8^(EYUa!$k+0$Ad6fz6fi8BhqaBQ9u8K>Eg)XH^)2ft@FPjwbJ=0-_^j(FKY}1-yMl?Xn zj)~o@-sT0ackW{$U!r(XONY7zjyaT6)fD*nw2tgVW#}e};WSO&%J5&*1FKqb>+pxK zIjYS~p0ANKue)|_hPnEreDYD`=`Pb6@sUzaqkmDFheKk|hRY9T!ys8-0!g}K`)TYk3@q;Et^QXQPCagH%1V~8lS2_CHy7)IdCGbD zEJ9t%d61BUp*fNsoOv}G?%8>e?YQ2iIo0JmfaR;QDJcU?M8^Zd4=G^7WhrF^hmg9L zv$ZnuVD==aha!KbXG>J{#_P6^0KKR_g>511)rOKX@8v)XfUnzitem!35H!^gxbnvT zSf~ueEhHAzc_ct8b-VMh?0Y$~)#hqQ1p%g^vg;zdT=xlSxd_=`e# z%iwM=h8=#F3jIB z#H=UZU2k*-qroMKoi);hqP3bKp}EgfdRB3EL`g}WIwrUge}XE$VSVto=iuqwBSTAp ztp>Oo#Y77uduXKIg&wpc#}Q z)8PE7{2w-;(`Yg%p?7q4W1kKroZYE_PR^DP3~^3AO*AGC?Bb7e1c{=KmV`Bri>5Uo zdQfcqM>BbpE0SNB(7_jkqSgW}$HcJOHyGoDv16&Is$5_u9RsKr_hii&$H`% z52B?dNzrZjpF`_j^o{&J=b#^32zcod8+Bx@VQV4{D5N|zf+iB0CKL4%moiBkY+Xwf zb)>1M$$@w7&qi6xkzeMaYips^w1jek5qLQ~VDCl-`o}bC@*Ob#I?;pqa!a#f zi6&9W6#o#hsYJ0$O8h5bb)gXcC1U_>&Gk-I%f*uA99A6ZevgieAMr;aEtpxJ9}U!`i{87 zB9fDzVDyEislNJ+J2=e3p8m!<$Y@prB4+GJwt3~vuig$hBK(k?wg^FR z#cN&B;-F}%_l-vvbL`We^8*&L)FUUH#96_wF0g;oap8g3IU?#n@l`K_pCa2+AeBo$ zDI*<5EJaMiyB^>583kS{5)@5j^|5CqIcm`kp?3BdVb!m8F^51302KYV!HA(vF+j&X zFr!6oug&ZY9aEqIceicUqK_zSI=UOUsD`GN$WAG(g5>=H;b|NJxFNu}_Pp1P$Ck@C zscX3_L8(LJUi4U%o-%8SoNy$kX<YuZ(@{j}V-e!`5gYX{Z{bBj^Xgr_d*IvU8z* zI@USXf?2mlSg`$?InEye1)}JItC(spQ5K(ayfqW;0+{-)M`1cDc#AcI{oCEc$oBHY zN2zNeNFpH=u7<`Q`|3`LJusu&&Vh?H19cj6<0gSilo!GYBgS0+FPzCWI+4sYrfHsF zyf72e7lib1uRg_Y2RHY5^=$Uq)={}M*0?ri?;AjB`Yc3flNpw${#weW%mpaDjwSrN zLNkONo8Wt|7y>E;-2oMbDFCgR_*boE_%Fuy=BJCk{@+6D(4h$gPpfidf3VE z^5Cm#d7`ilcMdM+pGXaK@}u{?gV=h_wPledlZXPS8qQl_}Lmi#d*RQ=2ChXSr@&(;^Pa_ zu7(^?uIwh*Gs@%8GGyfbWwg2TDEeYOp&DaHLlK$#Qt82iToa)*VcPX5mN<513~%)w zfxFp;XAyi{S}&@y0O*(||MNppVaWP2g=N0qiz6}(ANjl8b_dlLA!*$&bv6i@1bjAe z95=UWepi&~)Z`2=Z~cYt=XG?O@Od#@22!Ic(3bV>aKyj5`vq!L)XSm(j!G6DxyaCf z<3q9dS6zQtX`Cwy378zjTu)9a0qXHbC8wf&7OFA|o`hqxd$bJ9lMxn@MvTO;)sT){ zaeS|53HBsW!~mJLJx)cmxw+8NV~*Uwt$E+2K4&y>tLTc+)955l@O_3bmm1LI^cF() zyWKc=<6HXrrG@*K!$TC02IBb0S@Pco&peDry2U{mj~BUEICP|_OZU?`Ny59rlT}GV zG~iebm7nT`mlQ57XJloE4oM-k-&MB#WZm0Ua346(%%Y;LO3HLG zgpIg{q{?6;{LeqeGxA>Y3RoSzm@$> zfC+K9qDb{q2|RPGl0fc=P?+Nv7CO*)A#F;p5bZFl_^c6}cGGgjl0Y;a49;l-Mq16f zFx%}&bRDHb)`R@Fq|wR%ccx5;&ZrE{>x}WRw$gF~mA%Hy7DNO<~^16iHcgdwM9kX8+SH4H4@25^F8>b{_ zE%Ow~R(60xJnzZP+$lsI1tEb64GGLsNLGj5{{jnHFu6x-byN=xZ;ptF<^53P{$PyR zqt^Iqxct-mWnTL^FYKa*O3v$j4Y66Nk2hYr%ppX|a*hj%xepber$TdN4;BhooJu{L zLyHa-vpn-(F8TUWS+vak9qv69B2o@f*uMK=|2cOE#7H2z|1`i)f-iAeQI0;lafcVJhiiu3+e0^@wTU`JVLzcwMngcuhCMX(;-3qK_StzbK2!H( zAK|5ku2(i8cIF^2A+UzBb$t6*Z0Iga!8-BoqTfpok&O2HCV=usYO(h@Xq|8P1?4yX zPavPX6LVo*dTf8(0^@lWBqCeHy(kLpbCsv#!k`0s>uRas;zpIvZ-43GEB95s${2NAE zTdFQ`Xx+^4y}(cO_3AwHZv*oh8v@~tamzLk*Qvij0Pwxs!QjD3u(zk5ag}a-(eu9(~km4C~`}6PtLcTE6eyI?l zScmHAYYP8?+_lB1QwV=lBu@SMvM z^o#GXJ5H;G+xzwGuIXUNR|EhZMyiR7ohL^337x6Qu6p|=kdG#+^@O1f^%QmhGK)MU z2SNjlV3^_C&51&32?i}jCFYw8tGNRc%}~1gDCYCYz=|)3qc6c7v-4kk)+{lTfe{^T z0~Xl(P_R+`7hD-j%9=-(H;5@#ey8CrO6v^d|m$_C^h?2raDz4fof2zn*d(q4Q zhnJLm9iNvCZ#frLNQIm|rv4LBFPMY@jl;7Isr?$AYYhjJg?@hc-$2scbf~kC`AC zBxxu^L+TPOjg2Oe=Eku50pn!@uo*0*MJJJq>gWrR{-A12A6X0@?hFPyL!b+8w=+vZ zg|$YfWz`gSG5123l)twkU==5r-sa*9r@W`iYEdx9`!D0SUVLP)U-79g%^@vGgA7p@ zUzsHcAn}(4y4-*OuW1$ucv~5&MC$={qYfBec*aFP)q9Ux#MTl_z#%B_H+sTKl zejSx_QLajR?J3^xL~Hp!Nb4N`NRy}PUI#dR3SBPJ%0I2p$1*}>%qqEZR=NxyKSy6nCoY}qu z5=>X}-}t|M;#ixOszuo8VXmjOzY%AavPdO(vJ63Wa-1np`Vq=B;fN|CsJk?IM03 zN~VvoVJ_VG=@>nUE2-SAr`h)@R z66hMW#4;k!?I_&XM>HT?Iw}4qa(_oUNvGJc$8Uc#1mCE^Q%iRARtgL~bcBT$O^V8t z!w7ikgZ@)kw>B-|W^T&V)o#nAO%06&v918}dFER>9nDmz48#3d!!p7TT=Bva0GK&0 z*+b`1VF;vwgGT24JrS7y*|F|*wr}V9VTort`)tnW-VsSq`XAO~iQ|~`{T|dKJqxj6 z#tYWoz#@CDs%1s)=<@`XFq$W-BB1-o7$xDLev=+jn;Gkd{o@yVQW5X3JxOQeAnwFA zkK2zRx@`3Hi+nKJTL+GDm3G|sqr?^p6<;PdD^25NV(OUR@n{aBHShnvj~?k=EedS@ zyv+05T?ej{G`d{L0yi86XfK!o)UgVQ#^hN<9F5u{9N{>((D*;8PBy z!bA1jN)1mFfXkYSFPgTo0rU*JP&VSHe{LmqG2~eJMlfWefN~Q(Dc)BTWu=PIP00@; zuVbpjE0f%9J@Eb7^|}c7;f)*DWX2qZSclS0tm$L2;irFN449y!TZ{-5{}CPGz)GPo zBA5$Cm$p6A74+OX>41)vr(H7@SH4ubrSEJrKac#ip%BFscNCCenhBh$Qo%G-wO^vQ zuuy zVLR*I*#ROch`zmgYf5g&q`31J2s6JGspuAIUY>lxAZ*lI3)b&9cwlk0+vo0k+&2WU zFxRFZ<3}71E-%3^$2@+p{{s?ddkVh&;aU>g)RaZ(}>q?UXYNfp!Sz2 zji{_}FvH5Xl3SeBOF;C8*_`facQV&0oxq3c+gup0h*lhbzu;6LfbvG&U$uYOtO zMEZYjjX0kvmiy}9lTB~~f|zgI>!{`7SAclr(Q^=dEEkl>U{v=1U>q154QJ4*m>8wu z;k63>i5p0g({0}9!meg~Wywo160shLZ~bJXn~GjA!sOoK0U>1Wjx27m$ZE$2I7+jA z^7J8e6X!sYWR0vst8Hqv7>Nk&HL-s#4vZOk$Q5jpHGOd}p)-$Cy?<6R(;Zh?E!9E{ z@ThTK%gmJW9e>8RR&N3tC5ZrNqKfPjny|6RUcGy6M!O%!#*mJ~bqBselNS>#C$E^X zB5w^An!tC4YsfJXpvi~hS12_0p;wM;S1Qq3sx)oP7K73ZW2lt7oK4R`H zi{cXgrN7YE7`G8OxQt9cBx5A^_E>1)(@q#huK|5wc1&#Do>;&IhOw8H1sg;v4wD-Q zAh_f3M{M;4t_iq*xz$d*N+<`U3zSQPZ8s7pQA@3OdKCU^M7i7Sm6q-V_CDpePB?5p z`s5dg1LBMZe$dz6Jv$yEev8V2Rujme5xv1nC?}tJ0`}x8M2Ks~L}3mvh!d)$0!w=h zArY~nv^{*}sS3$##G{es3dM1d#Kcg8vF6UWTT@L_Bi8w$JHR z>TKuF+rLwslUs(WJreVG{?DxD`)|}n>{F=b`0Ag*G@nv9$9FVu#<=3GW3nQ{qQa>t z-`+Tct*tzN@SYt*l%_WP4uN59s3NOg)0->5ASMb*+{7IAzT;V1=)O~PSa!+SiV=iS z7aLkU$euDEZ(+K7Y*w=x5SkAX{HH}E1{RpC2lMw{#^_N5TJFXk%Yt z#MXaBR&O_kM0_Yc)UfoPh7%*%jK4@q_A(-tV>aUl)^rx zBPmh?cLAQtD~LkJxf`ua?4h@Ygl|Y}TPJUbho27g;3m{O9(`00S5^Xh_cE?=rAYDgpRR2gf=L+2GRfz9v|x;^(oG)Eop{`2YU%?vY>4 zcQmROZzjIs^GE7#&R(IpMPrm7t$mw(8MWay&?{|7-`@!vhE5>dq@l3F7|v??>?~G( zYdta99N6DMtrB;#-po$V!kR((ufX}YjcXseRJ$ZqT2A~A+mo4Ezq6mm8@V6{$C2te2U zV}MO`sZQBPIc!t^9?F#db}(^&ij94u_NMNtHnX6%wkiqx2J=*vDBAK0={o~PgR6^_@sTY@xhi-@HawUa%Se!M_y zPjm8dJE7GgK}kSwg%>lbX%`* z@MQ{#Hj=FkyDFGg?B+(2Ui1R z5#vc1_4^c!$Oc;f{Xu{=SptXsWEsWar*;VX$f`v6RgP?KzGJQsUUHh7TmYH*GMcvj zPM@^VF+o9T@IGDxo(n`#(TDK4-r^3xJ|D%@?S{}v!SQ&A!;@@Q4xJBeZ7!674-{I1W z;e$paM{pWoj+uAlc>Lp%nt@DrsyQ}3xnPLc5DX^|bj+OeJJvKkFgaU*nvSl>)jUDf zVFV!+rGF`Y?4SR(c#74N0yXq^TPNfG`-J~pp1${2XgVOGZk4`V0|XCl4cT&|l5TBrhg z8O;uxauhllAxCUYi!!LBCvza_{{SdS7)lPXYN_H6j?AtEe^K2x@&}22T+vd{X<|Zf zxVo_mixLKB5WB63BX`@{{4{kQ20DVbP>p6vlU~l>ArlOughnhrvfTxPVl6H#!O~xa z4u1_}Sre#Z@Db41L&~dFmrg?T()PqFi0#ieb8!1KDA|j)NxPe#671Z6rD;`~K9`l{ z+-%dE$u*RhlqLls#hM`ySjCyyO-99OLnhFJ6?i?D%7g?LCS=UqSwx~Hfh*>CI~-UR zG*Ez(W+fNcW3$Fu^x7-Jn_V$uY7w77qwQr0Q&Zl;jzk?CGp!5p0YMTF%Kp!g6NaG# zX~};rlBd?}vClS^Sg_(+TL>n-yr2DWOfEm zZFrgN8j-r)Anl+K5ZQCpmGpm{=0z~W!)%cjLwu(il- zmix-iH}Ptl>)aE;yjvT{WuC7oj0jMUo5|DonOW0R%U$9 zXp3fDQ?)0p&y?8=-S{kimq(DZrYu)i&}~}-&unO#!DV5e zVB>_IO9hN%92u+VYfH&of*$++G^#Sc4P+XAm_B3L{Wgla2`IZe>pwLPblc5QoN8RR z)VT7QICEAKhG7?8LYHT=-8RhaFIo#shea8Rk0XXRA10|Vv&vyqRh6f}in}p>dHE!G zfwcRjHa}DN+yqXbr?1w5R9|D$o?o$sd_&X>&KkA{CmXFRc7M6Ko+9ADYc8K9^s8d< zLhnjoArwJlp=rru&YW;S@whWTMr3Rnnj(89E8@rkA*vqq{p0|cAVF<2;f}x`p$rUMc%gznY`}d%j%upbQAoy1-ndR4PZ&B_pPXP{EMMRd)lq;QU6trT69=`?^_&D- zKr^et*CtzABAbo@QOAOj%XKl-(Exs27D6qpxYHB|W-b5*5Sb6#BLa6p9wFNZz zkqv%hj@>EDO<1PC`6}^%NX}e(gl}I5uJ?in3sVz5bPI*paOQ7YWhdlpfZMKY%R17a z(T20u0-j`^Hl^NE72msE^68YWR=)qJ^CyE!U694V=`99fn6bA+@RXL6$6Eaz* zHcK|{429b7Rx~1IiV*Rx=c5mIzsaQgqrI>B?fzbI(tj^o7mQFVHc!yyMY7nbxLh9i z?L!?3t~OLl8~~&J+e1rOe%bfFF7su7&;(d+aosCg%M4Z7{*}Hy+|I+Pli>tqDLhsS z420YPDEy?;3?u}6i!0LBPwdlNt4m0f1Gsvb zK+J#Kb3=QigOQi2~-1&ssE>MZ*lnc`B5ve#v@%=%xdVP!*w3+&@22pg9N zkH)mBsQgrD*6OULF5!TOigD#GlCUEjm-ssn#%nQAWDiaYI%mBE+mco&)_DmZEZGu9 z*^8H=_t@DxcGugc?3oOOCH`>_PHPiPrlU<|0E2;lE5wDCg|5~77E?gYemnLFGpdHT z{fCz#j}z!nr$3f*igxh_4Wrp#IV?b2%QWWD`P|&W6?hFj+G=Yx{`dMi-7kCD#-a@u zOPlStODdb!Cn-yk9IsMxz>1>I1ipdq;o-XQhMrDQykj%(!Vc&-pwU_%S?89gJ?4@F zagcABMvsQL*d2=y0o~p>W{Sfk{oBIMsC*97bU6~<2HX#vU&)emK7Z$eDv|1FEPLcs z6oh+6fyWNPy5s1?M19~`KDDZHPi*6xB(J4r@uMFpstAW;<%S95QbJ8sa}*{`O%Tn; zGKJi<;IzpIIPg5=;gzPijGcU=^NXQv&OZ*j9#kJzOkI?(nqPG&+HB>oW7OB!#Dd_A zEz@;;NDAj$RWrYSbYc?`qzN}W8-sxFFIj>{eu2C8Y{FM7F^?ZF?Z3NUmbIjOyVLHX z$p~^Ncn3Ue@Iik`0WZ(%F02b*<>Y#znYYJmS9nJriL3h!sTYWvL`q)hXXB;G6{|BI z<~`Kd7k_~d28}6i7vR7rbtq68c?v!^W(XdPd55=X6e+^kyYF(Z219D!`)GCjF;DUw z+5aHaGQD>_gq|@+obbu>*ktIQ`>vh96{4e83hXrX0X;i{H9@+$s`aT(D9F(1iK>yr zYSfoy&FI1t7fMin1b-Jk&^as^(Fl9n(D_g_o|+K-D_AASN$Mmn+d8(jfm-aOZi|f7 zLQ+m^wZ^qA$`uhn1951%T<@+3`1fLu_ zf{ug8nyfh)d*IS4h8uO0^0rX(dz1SvrYF*fr~(D7#;1njOTa~Hv|bYyCUZsRLu*u^(2c>Px$E5hB)9*wodtK#i-8){?@AyrR| zt{$J>&a%v3R6zVCcU^JMxsYSI&8x@KO z?x0nIze|CHT{{82+rg1aQv~6CRpWq`8X?p8N1E{+aggrD#ARs5+FKQmCoO<@QQKfO z%zb^adKg1>8E1nGtGmjue9Di4b`MLBOm91pt7=RG6KwL-Z!T9u^w=lHEW&e*hXJn)J**WKRM=R*UQ3iO#tLD{Wjxt z%o`mBV^q~E_Y`kN){czUX;Gu(^73VtxQ z#4x-XQ&)t1!fw2kK?z#^iK5aZ#S}(Op$#rgEEzJ*m%}R?xG};)ys&YV&YJz+i+dlI z>Zz9|J7tNWg!(WNUgCbeUQ$0CbiVZ~Fe6R#10f+1pjv}>w`G|}!BNQXSHZe|(0>1N ze6aYiWuROI9`;i6ai`jK?wshm=t*C>A#J%2dzY$z#oHs-cnNb(D=@JO7k zt%oF@3Jrd|3d)y9qusBQ$n61UZ-LN2^(Aej%(E zn3H(5cHkOW6yo6>W`8$MaFfSPK*q3xW-|g>)Hs~MY$k?xJ*KgkmYFv1)#(E+m2rrw zG&v?qxeLb=&Ck8g&@U^t;+13&%e4Av_H0wz)2@|bi8%%<80ODl&dH6Ovw2cB;r;R- ztp495=P3{<(txw+x6Fk_+P`%uIx6J9c4;F}* zm-_81dDX&2-*zBJnPZ7K;&VMwh3Mlt;*$J0vB@WHKLbQ>PHk6SDNkh|Swd2F=-`pV zROZaIxVl-#9t3<}AtXSBe}!R9YVL(RI9NFrChW^#Z0-XfNFvCBQ9>)6(WF4<@hDR3 zE0AwWa01USmw9x++Br^!`)>>a)3bCLUiBks>&Dbn-Rwp6ykI(yVnIcM!-}(ncGSf!j zDINdW3l{LuRj&J;Q+$#!=w5Y_^aP=;`JTPT^(`jax38PeyE}^3IZ2mx^1mCn+kIN2 zH{8#d_%ftgn${4n|80OGBjMEo9(YVH{P-ATy^gE$LX+P~dqBz?!w8ps=80|ETz!)-`;@@^4IIvqkcpBI5pvN8uI* zX$uDBe*v;UO}~?U+<#E|ScRAchBU^yPpM7Jp3sQ_auJmRq)Pn_EVDzj`YR2v^plBN zoHFt&VzhN@(dh+D`YahSwwpV`e{n{na%6jZzG4>@84IfsCpIRFD(erTo8pQSQtiL>p z_-{PlEiO_>MLne*7zG??HT$^BW*xJ9*3qi!7fn4}Cy+}gA9CTT2cC1nzB7;CTMwg2 zhkprRO~9>S7Lv8!?#pK!%~busmC&|`@%`+GawM7rS2X>y~JXqq5?Wmy&OrykdvZgOdwRWVSr+u zd$joxT#HDMuU#}(bgPW%1eo41=~W~LuRp(xfSv_(8YP6qeq}o0Z3_*r55Uq4ONDb9 zO5NKEFvWK7ifK?Ow#%m6ec4o>eC^^h!W@sSFPvmh*bNt-wDtpk1eoaMz{qe1n5Ad(ZE)Q zlfcUpF(%CN90fbBZlQHXAPyTj(l_#ff3j&)E2lO0(a_@gZ*I74!RZtj_k%oihJ9pk zV}32U@cIi+yzYV%HPM%T`R2X1Z0^mQFUBNBzFNCL-0RQ1$vE2Xdrdg%YnwvaF!DF- zIVe4-auvGkBK)MN;8wGaTQU1s+mabaESPfGyfY8e)Apj%4mx|{J~NKn%gB?{5BtYc z4*vXvM5}#wAHQz`R#Z)fvtefYbDtqWMg@8+E9ChKT2hBM4tAF_4|7(-OlqbFe zg>G}FL#%*r!PfCoUp2zvrv&ORBw)XEe&9EyeI zD#Ab$y;2l^xu6wd6+(MyCWE-8mBC-J<@{&r6_dSdY5nrEA{A3S?rvSCK;N-wvW_u# zE`djr73;*dh~t5VaFR9VYFTqhhza(z`4xF*o#2u5r3Zf@n@X;d0y3CxJm4Jb zd-jMCb4HF-hM{yUXFF-xW~+v$$Pr~y+oJ|AoP#&*wj0{TM=EAi5sj>o;WNO*=71MP z%$7QrCrvKe{829KcGn|*cgq+5X4MD&=&HKz$=`qUu19WLMibn)a;jD4AbWIvv4s4u zW4>`!9CiufJD0}cgb_5qHkSw{=*w?>a`qdNtUnH0Ws=Dvfco!JUZ zB!5DyNOdzSYnbbj_2^=~Zz*mSfK{SG$-X7ik6bY2@cCyQiX!Q_Hf#Le(~ka%kPu)s zLc$UlQof=_|5^r|GW(Z!vFt1)>t})2=e79l zO}D{_LRehBQ=JZ1c7$N7=WuT-=zIRQOTtC9e!BqcoMz?6KfI(M&|F~bI%`mJ^Sp}{MoM!_s(4Q!!WU@O^{z!P}cpouO2dua>m zdj}EE$3OI*4J)SJw(xWZXZ7OQnW5?hE6+W);hxK;qN1E4^g-wG(QD7iu=?BAotr+A z?qFPJYSA=tCM>(|4RWORTOvI%2~%gc|%N0c{rvIga8rEyceBu`}}};;eaa@$->vXi4jlD z?^m5+R=*jFwI+Xy(iFW$XB_FG zvbhpmQSiuSQlZVgP(MGwH0_wLPC05%cSPGsU;Et2v3>r81OCDFCM$i)@4hqb%1M+G zl|1&_GNk$0|53p#fuvzvw-hZ5+v0e*r#!+hPdwW4Mf04SU$>dQZ};lO2{5BO7EUs! z{PT}(*m(JL_W-q-4zimK8OIrP9vyinQ7x2wg>;9IJWj;*b0SS~4Nb7o zj4TT|gKfVUW6B3AT+>u=11W7RbOQk?}oJqbkbkPu+CdyK$s++8;;4E|qmDpEql z(YJW|k%sh|6kx-!Twx2R9${*Ln;xv0b^PAbj{PdYav3!QtirHX%{tEEi&m2{`!~nZ z&0w~UR+IBj!}Hx>-AldsrIQbxJz<{%KL1xu4wJ9r+_(FseoM0Q5~NW+ddo7XAq>=% z3iDO}EVU9>`5G7;``XFJg&NILKz zChWJnt&z_u+UVNruUvb>8(VV#>fooB@4734;qoHP6X~%n%Dt2#S3!cnXb1r(8s4JgHDz+=r)rEUHLJ|)-2vEo|4SE z2HVwT%qfoI^C&jZRzJE_=l!GPY8w$Edb?!$5$B(B;LFcHdIMII zmA|b3aw%*BoMR=pGtY z(yMOW-2nwyk6j-^27ssds(KCeeZlETvPgi-XPB50b2QI7de6Of|I5vNJg+-O9i02O zILS(=(jl)v)oiCDE@JoLo5Dtr>B8s;y5>AT0%RNyF$uLaIDRRm%x;A%@-X>&QLJoM zi{+7a1nVa^X+F28%(r~w>oIa7gTY7+Qh(=0{X;2%INn9&azd=37UP+yR!TINV-M5ZJPy8c?u=TJmFu+KFI5qUH-&_q9U#AT>LFju7*IZ2Z5N}U z!c?VXOJ*FI8dijaT}PWDmmy&VSOy0GtkVwtqFZ952s1F;cXt?<(*gWr2+6U^!$+VyTtF3s)uN5A~>3yR}l zZCI7S0dmC&(!Y5196n)*7guv&RyQ66Fv%psDSWB`SuT>inR}lg(QD2FRnej^a)PtJ z8N((7AfcP!R=FzZCe*7EgPfGXAoT>j%4?~loA(p_;agANXmUyPBzDqu^=zAXUjp%re0}uz8gP+ak6$*EE$a|- zG^Zc)Rk1*m)89c<=-v9-K!$1=49?%hsvfyz>Afqb0uEW)2mp(;ls8)_V;STv*AoIc z-5pdFlyQ#2Rp7+A);%VH%Et&giff_x&P!)Lco+80coR2&Z<3LqEL9Z=MrKg^_W6-) zL92-}PI~Glw9#UYImkr9*%S7rQpG*5vhwY}``~k{o+s$VjT@)$u!G{WOGb{=UsocM zF+!-Qy%GZ#6!Ty89=0#EK(gAEm0hHFrX zunLQtEZBa3gue9;SoUrg1-TQl_7%NqbQgJK)eGw`%@koUtQld&0>em_L2_|#oVXti zYs%5#Y&h}2&sDm+E7cXBx`rFLd#}v_@;WmP@pVmOj^=pmci|N9ckt|qdqX_|e81nb z`a11?DZe;4NHOGpB?7=(mocg2_=aFrw5k#V#?7O&R}Yk-TdfI{QRT-2RV)sX6+y@D zSvmEtWd=ZWC9e4uPpZn8WM>d6#V^Y#TZu-BN`JmF#;x)zo7mZ*%G)UwDI|@4x$yA5XIVl3jO|f@Io)TzZ1rOytz35lmd)NAsY^LsVfq2C{E z_aw{c&?k>M^pQPx1yvC~+%PACK7wl@R?rGU1*^I-&IQhuWiEwPHN2XbuM3wMN=*U^ zY)`-9o}4r)kt<@!HRtPZl{GhE4JA-scQ(i?d6huD0(_jGQ`eWYpj$WHN|8g}z`s5x z)nhF|*H1_a-HB%E)sO>LegLqwXxClYCe)v4{l?hU)xG&I7RG)0 zcl};=Z+@|ZwSDwHTSc^TPoE{2k z+$Zbi6{Z|2O<-1O0E<&QUzQ}h!`g)rvzL6xM9Z8|I#ZrvEZsTBi3-ac&Hbkx`<0Uq{=z4BX-2X-!>sL9egC&j zo4zw{9Pf1&jzqEB$KEee12G9V5eP_l3j;yb_2-rxNQmNSRDjDBk;3DUTDN3!Ms2i= z%V!^d->Mn*bh8PBy8hfJOZqRJK5>60g{(d&M60V^^s|^Gyp_9Axb3LyE2oJv!tYbE zD{JPSoU*RlSTR_+=ed4p?Xt`V&K|$dl%u0kf?r|$fp6GihBhATiO7 zFe_>jO52}I?^byd7e->1(^_0|;`ixkI>EE5^nH%DbvrrW3xD0@1LxOi7q&JFSb2<^ z{JnmEg#I)JrIg`Lwj7@cq}>~Zgl>;%Yrq?s-2oOW76IavL%#5hug{7DR9d)Y&eduO zSvSVgg&`|$zotAbQC)ai_RKOz6A049yc<`SYge|Y-w&2A<}qsb#BYBV2dwI;0#)kW z)VS$bkS(8L0{h252(waR2UUSJ{5aRm&N^iHQUW(nH6@HDav-Gw;kpY?U{)0MOS8Cw zu`mc_`{wG1_()ypT=%HTFDbM4amKU6PeKr21yfV;zKCbN=vE~y$i!gbU2!(c&oP-9 zboaK=6Q&;*^xVZWvC7z#{9s?m7$&cnEYEt1b7@zZ9VWmwqY+e^QnpzF z!y?pVEsB$s*)R#*naAzDchmHJ_0{SQz#BjBAF%T09jNbr`{y5O5UVorDFCZbtsMRI z@HJ=SjrhEfkh>2CyGbsYX4Lp$joSV73!=@4I@sGUN!0^jxf=^WT;CyMm3%4(sYQ}G zqr%#bD7nIYT)q?c-@S>F<$HDTrTo@*L$Z=pscyrn)a7a?0IGCB(E>&1CQocH;8}(I z)2i4?;0xb*w$O{@9i9tT7EX%W#@v%(inLv+OOIO-X$j9NMav=EyVDe73Q0a*DOy!1 z^jZJmgu*FX$hYQq>4UcL^xNm3u7M0<^@hqmJ6y-8^unO$hv4QE0QaX%*92OT+l!mQ z_S`e|qw0qVe)aqqt=N}xdAGi{?Ya7b6X8x(;3+58X!27U;meF=iY#A`sY0d8KG>pg zMR;gfB%W2O)6obC-^46&ee}S%R-Y!ni!h0egXa|9+VMpsI#lj zi`()wssv`mmCf?bT{7=fN5=&X&V>o3)<=xVko6Tl<~=|2i6$qtGv>G*kgQ}?S%`~O z2>=tGuqv&ZYzbSC%ai9n_JPusB`P{oUT-AHFxIlrB}^SvK9MM2bpdjN!-dROMMwUWi!}HZU$QcVcp67 zbbV)c4I!kKt=4ALU6ta5?EjPLdnC)8O8R4XBn9#+Jr_>O;!S4_jo^}##+^NWU%^vz z%TdBslQrA(N6i2$5xsTrtKPRUHM4N522|xR0^^=aoS3GE?B!PaM#iC`@I^Ij8P!`- z;4w!tEVL}7^(j>XaVB<7s3|MX+`I$4#^e$Ar7>Pxlzy#`Z#|9)53 zb6s5?ZO?agJ=4|oWLH=7E56B3lU3>ZlvZJ|LY01g>%_KAG^n<9a(8r zN@N47LRM!)jOwT`LvdJE_grj}dF~kHir41`*6Pogp`PJ{-{OY%_{&%D69$uMEb=?7?#6L=8V-i6HSeYG&E3a$9397PflP+|R?ebor zg8?B{I;m@kbgPLo@UN3s-b3ULZM(@1vd zWIv6Pw55}y;AT;DXUE8tG_NV;Y2H80R<3xrqM&axVPd1h#~dw*#_!E@Cm3v0Mso3PGwCrka{~%cec)jrXv(&EV z!sN^atzWc?Th75zI~ z^k%0@*x|o6vh~15_{Me+=r$eB@7hrJGp{QH>8pl z{0g)pv`;7?6=vhatYP52YH~VS{825*N-O{`zKkCPFnN6R^2THkv5sth*<##m zDNv!(uzw4BB9NrP2hUoPy|AO=svEG#HCcrs^pW93qLD23A(eCVM}S4i;tG(`l^)>_ zM~C;^tr^L(9$O?vEdf@$2gnLP^Qb)=3@hen-VkW@;(akk^QCY6`stXX>DW0UKaJVq z(LO1CA6ax(sy8l{s|p)*F{%|EBo2xjKCvUSgi!)rLPDbZ+%qCrkaG-%RSFWD->ilS z$@)oGm!@v1D4BqefC5c0poackh>sl-M}SDemP%UnXv#hwojJ4DVo0b;Rt2hrco_iZ zaH@o@jQ;!yuxJPG4;lT5>|&lhf^|f>>qGC+Jw0xiQa>DsvuqNG!LWErOH`;eP+(TdHQjv{k%_FzDp}*1$T-m;#m$Tg%@aJH!M zs6FLIYL%>3zSP@lLESO(M)|MBqnW!A;X<(z7(Q5oU@iTt5tonzR9OqPvCUhMay>#x7dy%;WZ|lH7ZI z<`a94`^27~`Q!)x`1kw$*uGJVEVSpZZ!PuxKQ?VbngEJe42Zl^2CH~99?F<0Q=vRJ zU@FJ1*atY7X;8yT?SUZ8J027p=TftG-t&v6barUAofufmW$0XZpT87YXL;e#GKn)=}v3 z53K-L*jDt0H6D#W-tyGQ%<{}iozjse{4S+80j&mLVOR*Yg_&`^&_}%|Ce9=2+zH{E zlPn*#6_WKf2dFls>b*v{P^j4p7x+jMwux51`tI$&`Thnx>(|e&fAxv$p;%@j$`H*k z*9r+8j>h1VuzLhxIUbDSsG zf?qL*st_))l@NnHp+Dv$tnbDw)oQowwwqR#2|%DNQ+_}ywW|EDM=0hI{H0cv#0|>> zf;R1a?3+4Q4C^a!#u7@<#H++#7;s!wlg5!71&zrIA~ z_C;qz@El6k)vtc%#@L>`;XfX|qT-xUby=p!WiTi|=x|iUmQh|CR>MZG{~9 z!7TDT9;CBUN?LfX0w!FjckQ2NvoRDDG|*Zlp|7;y6+(&bw;X@q#<@Jn@zFL{&{balXO@ zdQS9*VfwXaNi`nD5$e~AG^V-Z!HAWD_OmDK3$1kEBU+Ve({9BoOK=Lg+y2n1mGzip zq;_rhx^(~cFFqWACE_W7l~G|M272u4@#LFVWTG(rrIf5!HpO5OihD4uGS*1+LtIYF z5i*e`J0W4#JZPp8^$F?5I$Li7HR?>=2k}VeteIMIxj7a`En(t)EvV-)YKw*XmB0S8 z4+@FH{ZU{m1V72a2nHR97)uukh*CSAl3oB-cW>_~%2^%#TdS(2tjoELU$JD?qn2|@c|4j4IdpOGW?9yxNCJ|z(yldSKK8wXQBk8z$kg7`NDp3F@D|H@{Nx>q~_ zVR)9|>B+x-E@m7%7U&4&M0}~lCuWi1We-=C@wAIajKJD#=~qCea)VR03>9Snb3TFq z5L9W}yRo#v#H#3GuPI}tajJq9ZSy&U@Cm7fn49bQULVolh;SwQ^2=NJhvZCUOM{@N!X|iKmp8w zfnwp-y&_u2ZVYcEQGc>!oH~*C$YMr4;1?p}@w`!^_AMy(bkihVzgMJ45I=$@#+M5K zL6Yr%6?pnTZ-4uLzWwd5mnZ+b`^BVPU<mrHlQli{e0Ya`%&5Zy;Quoxdm0dUJ`5ZuXfL#I|RuR28QJbtD-Mo_p9&T z_UrH6`Rk|e_?2wfx4s^jRR-c_20uji(%!n^9jzFa4E}ZJYGGD|gaKHkU0vGfh>~ts z&az8FGZlapF5ms@vti9q_zl2nQGIXg=;Y2Z5LlVzgO`Qns*HPz1{ajPm{Sl1mO-x& z&eBIID{>e;vRiH`%84pM9{2SzilQ;XK9yP!Zb@W!Ez)ds@6I+O`|mE|h+0jhygF6i z7=vBi7E0_LedDtIfEv#3y4*P+EU@glFm^w>*JpArQ?782@XHDpJyCh!7gv+$MhHy;b2$U#O}UnF#xM*Sk$ZRHX|P7H?l&rD?yYKmJEIw zv!>I=^r&6ewn6LUOG7e_0v(MBrXTI5mG)78SI0U`qKP3ZKdo=n#M9ph3ELuB?H(gu zTQfDG6@9(CMyUZ+QKnS7eKXNE)T=U<4wT?Q55<`B2;$Nn%@v*b!Hfq(z?u=No|QoI zuv8qB24L+Qjp385fvt?X^GSA1@tEau@!!&%jB_`~1^d&_NRt)otp}GK-JUrHF}qJotCi0+esP3l`tkZ5@$zq1@I&~pojsf z^G`k?Ds0B@gBPo_nI4t}0bq2ts$#%ML1q}}F*A|}Y!B|x76Ge8lGOobg?a_8qWI+M zUw!A6*Iw9I0P7pSdG4N9pIn1~0W9hJM$d+OA|YmlVigMJvUM`Rf>zzl{9>+E@Ch>U z;xhU1qLXA)Fs#BS4s+hSj@z5CkPNFyKa~Wml*>2A9Nz?3wV<9+VY`6kb3|Q|K4JG3 z9 zQW_F%YDy_=OtL7m5|XmzV^8q%(|j>$ogXD517zPn;B%-@YSpO$!5aBBFaf_Z&VmKW zUtn319l{V$NI4uXK!+T3P8x@0NYJx8?uaEp9~cCQKvIN(pvvRUJI9vbwe!wi2VP0C zQiD%13uZ|g`e2Di01FN#1_2;MiIPQq*LUgaks}kQ0Bh1ixR$ayFvY6)Awbp2()SX^ z=_CiLbUx`h-s*&pyqA5v6{zY-wdTz}oj(iioO#q97!y@~2K+j1Z$buaQdmQrntIGv zov#qokJ=+MfGCwNF_M6B27Ad>30Q?>4WC|Dt>aF|d$zJ3JBSJ`lSaCbsr$(rUwiJJ z*IwMjb@Z!e?s)Zy)fDGw>{sa3D_o;2M>=YiuKZ=#Z8U7i!g!@Q*+zwcm9s*kg_$DL zQm(M_Y@6s_*$;P2REJPxIFw|3D0< z>z+&(9mOO{%UHT>o*QUYx-Uh0hM3l=Q&OYsR$*H7hg&k4|B!&?aFE*xScbFGcgZDD zV>w|TSHFusF87i}5)wMB*(Xy!xkST?Y9&Zjhz6>9!qy81ehx0ABb;WGJ|-~Xc?D#d zvx8!`gfRF8#WIVRT+Cx?Mo`1{%$PALT_wG0pjF{k4Yc}y{+|YN?X(lLf>~G?XcIpo zWdcJCEBskw#^hi0{@xZ~p>@)Qj0j+e#o@vcBhK1k2Y^*&0I@18%sy+%K4f)Tl>kud zORTD^1c23W(42gwg;QHl)pJ=2*(l;fRxK65kn;k+Y?g}6lV~V(@aH|c>-wn%*@UV$ zWcA7sT25t%Xx%Bo?V$dqE&OU_J$4{2OW%j(i1hyLYt_vC`nzj?{oUImiT~J@`p;0W z&?^~yqK&1>(7oiqny2@kMpVK`#G@R}dV&>Xr_t9dni^)c%?|x`l629U1?Y0@y z&HF`(o-ZcC^yNlxXjpk1TX`?<+iptLudKfKWGZ{m%OYB-8GJ#V^BcO=MOlbb)T_|N z%Mi!zK~KxhTDzbz<15{U04pl^r)o{3?D+tSubZ}bFicqGa;J7-YSH3yb;R4>Db-Kj zJW;ITR&c7KT@?!hSdnYvlPW$Yj}eHC8RHR7*}RgE_*Ysn{WrN-(jU*!v1DY)#RQlL z5u!wsN-+A*ges5kdRJ^1);r#jfCbAcl10x-k_E63H0G@Q81OLx3o0dpyQzQ?DM}w+ ztt^+194P|`%Rp5IfY%lZmQY2j0#(xsRAE&KQaLwt{;s=rFqp6JI)ry_r$Lu;D|5Fp z+X#aKp3e@peMpjFtfnIepYSSj)iNB1mq*zgI% zL-nc)(LDgGoaI)C(dL4=-hkE0do?)_O@8$0|M`I+RsdULol-N{ofC|9(T+l+zi7-N zjLcw;PAToZCr6jjdC}1=$CO8DWofva75r(Xjr!Ztsv$T2_yTw!L8_$b)urz`430RQM7P|YGF+UkQHUW{8E)FGQi9Lm!WGqo3 zz?wH=1kwbCqy?}l3B*dPk^$6HT%&QF0TQYbr1BA~+A2`h3qb<8)?A4kHMH{zs!H%4 z=gXt5fYd36eDTa9_Y_DfnpNP1j-9|PTJ3qjTMMvSS&!CsVpfyY*Y`&^FF0KuEb9le z$qeZ#%5e%>m9Z4j39G7>OSxSb6jP2O2CBwKhSgD_D8G?9_C}|TImbsW;Z$u@xatm6 zPKaTJ=-z$HX$6R}qP~$_?~u>|s(r5t{MrI_hwPg3ChDq_W~-FgBOWe2c>}GA(4HN5 z0T$^>Y|QVkcrd7DF{CN-0N&9fDduR#jISt*owy&pHazY1_Mxp{( zXp~AF9BSq0(eq2LP&eKSMvkn^3Yh^+S-sM#sxT0%(hqZRs0#2hhHKgRQ)W)sYX()z zl;-32@|Zb9!n|`zjPE)=l=uuK8rF&eTP8CP&gUE^f2DRk_64I>UZK)x*B1>)J(di< zEt~d5H_cKlCm789V6|F>LBbUFt1^E?{Yf-*)GugVF=1Ju830A;LfG7+_0YK|9!S0n zz$&%|XD|rDBUk-ctSD@izzO4?K$oqPwo3zB2nt=DNzA0$mJ2W$u?2}WF=;VP~anC z#u7Ou9m~f=v4|hbp0MWM#*PI*0P76_E46k|1;3!xF1x(`!4JOvk&ghc)ZOiml%>Qv77+$nM<_)pdyW>2 zMsq6^6%U5uKI^#BX(PJtmqvA8brO?a^$hB3fwiwZ*H1{8r?&RJ`hs8Wuh_wdj>?-d z<{;f1s7(;7#(2B#qfi<%2nNA+&LgNA=5o+-Gf0Ia+gR5&v28eG%pRZl-Obc^l66IBV= zq!+)3E9~h zxoy#w&X#5)qZLfRE%U1)pMG<2D{@M)UzPe0BXh(t8vFySGMzioDh!e{wX{Yl4sjki zTFyF3)3i4_5%oMrwQ!NdsQO<0Xjs+T)xK9}pnlxGyVLDrstTvfl-$pTm@V7>RfuYd82fmXZjN{`QA(Ee${ik>sw znM&a3FQ)S=4OZ*Ay`!sGu||$GEuH_fivAL+{CB7VzLx0;NVN3WIjXrFd5i((~lk6XP|rVuvzUU6NOwsa}o zgmjhd8H(koRLcduO3}u`(csL=%KTt-EsqLc-TMrh**}vfG1|Sm5VhyUPz%JqPS0p} zvkc3d)~bC8SnVDl$8`D3W6BKr*-BxG_pH&hkf8(9S+^tvyy)?ENi>XbwaYI5`8&V!e|Fj_9aw2|hgLT9N`MLYyrGB{0Zdbte!4V)1`(m0PGjA9$U4&cVzZNwq`BZ(w;x$c5VjT zN*JWcb=tYFJSUp{Ctp^c6*RdhHjT7NF^=}S7;4q`1gs3^ngN#gt$nY4Q;)T`foY zs!ls*&nZXm0l8*R*qiCWR46kL{g$kvh{HQTJr%i2LKi$79n%NHMjg}6>4p#d5eKI7 z8j?_MR-JkW}Im1#=c&0D2_m7WIipbwm-HULZ82F3-hg)}P+lK`+UW@%2p z^iTdkBV9_C2qK513ibJ0v?{|Uh*nHLQFVKLHW!V7Z{27W4X{GJS{!Z$0)e3}e@iAetk)>!@v@ z*z{D~`vO)iG4g4vz_13eT70i|LER^CFXgm?)3(r$VjSb-m^r8|wC}HfZi(HXRkY1D zJ*CWg5)A6=Mv(g?8lNQ8oD;E4>{ji<%wa>$NRkddwy~mkHec3X=RGA@2 zU`!%V%%epD4VN791tAq@fG#Un7s6t@p_s_=m!3d&M>m8emXW<}S&NfE<`H;hv9TvY z%jb*JJu9DK7D&pBA=pX>LqZtlg_9s8wwZjh6ic2E_DIAiE zUvegHWkP|3;H{UQhF*fIL@OnfLSj(^l3D0g%s#-Ivh`I1txCc>qr#q7EwfKWo^Ccw(z)SvTrfoa3jFmj~N&%u!Kpi#rac_llr4zE%n+tOYCZ1La!xo!U6 z{n^~V`JZ?q`W8esHTs z`}Q)UyL2L$q>J2*Wk7efp7a+6D za!V9L$C8mH7lUGKoC#sjgdz^Y6hG_3r+^u33G}jWU&eh|e3MN_J^CqJL&xkH^@G%_ z;%>J=E9#X16L&-6a60eo4?#~Kz(=yqnXvd6GISc|3tLo((k5W}@SY24+3^>S9zA!5 z9RL=8hO>ZV$sr(F>B;cbhB*+|UWZ$G*o6wRj1!Z`A{kcugPy7r zuSbvOt$+Eu@BFJBcG$Zt^}LN+9&YT`2@@tPgJL%8#|Fi8%d?`?!GJJ2H&V8&(6QuV zg37D9H})uzqq#VAC;*gAL=mV2rc~lR=9W-}SY$Ud8e|m=48}+pkONpPr#{+{?crf%|-2y+=_1HxBM=x zot1&sUIl~VP23H=Lg;91{tDa#qbXo*D_W0_&7F^Ac}&upfQ2eLjJk9IEcXdAmZP1t zF>fbZG7Y==g)#hpIza1DUz0GhUl$c}S$rcQC=x80vFYsAk-=XaeUPKDw-n-7u$)7< zRT)noHadk0+3qQtYajgiY+0VsO!EU(2G3&j~#YE#B7OTDXe71-HNgSGOG*C zAtYI8EK%r~I8HPtrpwYoQ62&Xl{_L-nFq{Q5~pJ7m!8PQ)J|oGR(@S12(9S%GLp;| zfq*z#6-JMqtCHk{vHZUp>i^Tq1 zx5}Q*d(N+Pgk><8ZU(U@o)YEFWo=v7mNX`~O$a^T?&?a01+X$I^j!efq7oGXtkm71 ze^1@rv85z#EJc)H3*M2#YESp}v_mWFvG$_vyMxqLskaS@T@0A*Gl^Du5GWK06N5pM z7d8AwCK*TZNz4;DLKkegU0S_xK(sGi^}1?XIq_*->w9*ayy9*B zp-nSpsOFO~#EFn2JSz?HG^yO65{W9Sqdm`39zV*2AhZ$&`Yn+lsItin(%NMPr6a3g z&{D@r{2^>E9RS(lYM2XHc_JR`>dL4P=s+&deHR-U3(1o1sAR0v-IHGBquYR^K_66> zM8%WReW=eU?ClApdVZJM_1Ky8{%0S4Pw|D$;9ZE(#d=*WJyRVUZly9rog9~Sa;waV zl^IAe2&Ux3WbpUVTr`8hhPYhTY3rRAo3F<<0L#H@{$9yMIv}DSe9!NP(RpeZot3|G zc;>h#J->0w^g7Em#H^>PFH+hRw#JO|R!)3p3Y~X$(9j>IEqW6-R$Ad}Rf2RS`IyNyy1rmAJBU`Y z^fnO>{@bQaz8#bi3|1kb=g=wuOQNu7SSe%iYKRI`o=fTQ%8?_};UQt_$N+IJ-<6|B zpF3j2i-XnPtNEohpg(P8Jtog;{i3z!$3FN+0zgiy+ZLWyB%NbGr2p5(vu$hJ&ECzn z-NemyZMKcgu5GK$HQBapo0H9Fe*fpiyuatZzc}Yy=X|bF`yeeg;vK*VSF4Yk%QVWp zd1h)C+Xv^*&X>&6_ZT1=G%|)r0Vd664auOCc#&h6N(6z#;JXjKsWq66AOKJo3g_J=A|!-U z2?B2tw_auG8S~4&K4dC2V|Up&YUiJlD|%=ux$C3?n7W(os{+iMgxa)CsPqMJS8PYS zH^{LY|06T>Jr!2v*B9btR1L}+4(H;?{9}NMR7%RJy7?V_nIQU$UcskpmA1)>4nfO2 z@(kx=;2Oq8x%>LMw??&lH}LJkLa;?{>H4)FV?y;$o?I$J9i{3I*ST+7$y^G^QLlqBBDJ$C6s#~>81Q{JAXY}=aak^a zQdkN#G7ao?2ET&5yMv=+iJ_mFv=?@xH^^@1<6YlXz`!MK!oR`$VLi|(AHF=3A~Mg4 z?I9EeS}yn|eO{p{6Ws9@;%0d-Nt^**&%Z7g4m)2D1Dfr^7Is%Jgh!l#S0juQ@syc| zI4*pm&~@wtf`10R8(S{7M$a0G>!3MuALSDVR0~}syP@ionbJcsF%0-ci{^`KeTa07 zjP#r0aS^tc@!yb)VJpScHfb^t><4rrWeZ)*Ad45#fI82eVr^5mdxJZG+P^*)ww8pr z|1NR^VC$NfEr0FIfXub5UAR4xBwjLef4^bXb?5D!Xqjmj8Ki|a|1A`3y!6k~UF%>i zf4I45=-X`br`JVSu4rCv%i_y;n?1f%r|NmPh-KMxh)&aed>>416fa+_K*{3cd-vN` zgcu_~e(dn-ScWX|fAQ}$pigezqcfmtIW0r^45^xN@v%|_zK8@S7G)9t z@M>;IIPu=kBjQpN45UfLW-3qKmW#SzW#}1W&`K;}CB(y{JA~EJSk7u~gDG#qA~1hC zXXR~-!aDW^K*QRnX5tP6BZczX@;sH}_meww{|9*S{%w#+C>W6KQB1+CB z2M3vccOkyUsJB*YJ$22wYa`=>sQ}Ci!q@y97^*&h&QSVZn~$rL;;<<~uE}L%uF>;|U^c7yzAuXgo6jGpoSMyKQ ze)kXTWati87uJ=sv&Cf>#3Do@kO>*vVqkzIu^k^rxVL7eek_y7xP>!1#bs5aI|yE+ zSTZp;tttiWQ@_5diTEl_g_|5N^9~1~*Bsmud?4t1n{jUC|A*&NzU>kE@Kr1TGY)3= zH0gh@MEpqJDj{eoD8#Rk4K7IqVxoVo8698l%)!aKd&%@&G6@ej@O|xEO66d@{8Ld~ zJZJq!Tca9!el+rtat)TTYd7be2{Q@;UP!b70)v1`IXBBc6M@Q9elrVX#~G4H^%frmDRmzxP#G=X2LEVbbWI7W5m z_D3c70xTzHA_Esu%Dy25wAx962{W>UZ=Gi~*fRq0wp)*@BrJAm7GOO9J24=~%2n56 zQ5R+x%^o0A+x{8#)4gc;_(fQK@C*GulzyR0dp9wmHr)n9j9u2hzbS0dQLYsI*4 zFMdr%v2XA|Q<`-|c6yiaD~7d>m(5YHdaO03T<`z}=SEH_#Stu?@fN(~34m>X|S7?>l9@FRjP00N+wLXQY9Oi~dFAEXwtO#SX z<|)1ZWL+omYhofICFA5&5{~+Wu*QE~k2gC}anly~un&z|>spe9 zgCd){a*8PlQ)%La6DwG`a8xs-nfj9$s0XFg`f5ymY(9%P)gvO#0VN0jzEf7(LntfZ zrQDcF+QQ@aHQqBcP%{JvyRn@ecMN8~lpD*vu-ox6um)Rdjx>n($-K;sqnulVpg1AYsgxm)$YKB6C9_dBKZ0Ma`V z66!i`>U^wFIfT8LFo1^yt!ciosavqqBE9if3RxC!L8uD5P{B938uoTt9&U3KFO7+w zMKaz&_Rc+0_w#0x19zn!W{Nf(+}@ngb)fCO^sZ+87Feb{>kFj#70g9rBBS>kR$?*2 z+MI^OqR>{CM^@K4bg62nzXITP)`H$53zyft8Bhl8j&5uwSBD8m@hf0bTj6>f@U9wS zf~{C>*tp0qeb`zrCeL2deO?BOHTuG~=};Yd-H8)WYzQr^V_5tLyZfnk1=;in#j3Vd z(@5&5{#_bVxA%Qj%y`-%(#{yW`y}VK=H%34@+_n1@xqKW0vbxGnU4b?kWY7v{g4gqbcf37&f5Rm+==&1{vY``OGQw`yIv#E zfXd_MFHOb-%a3iEXHLpa~^r5R3;Nir&)0r zla(9!=9@^z=^(~tICVKT0imr=|J-8=u3-;E3}y#_oQiY&J`6s_u=y^t!7NvaT%-Po z@S!+~oZ5u?tx)$F_VbAV36~?YwkB@TeJx15b8Iy+Uii6)x=wiiS8uSE=!QogvQlEK z5eYbnJ9ogC1PGPkVmQEdm;DdjW@hJb4?VMwYNOQdFdz8R$wL9B+o=AJ-iiL6j>Ri+ z3RDL|Yxx@yy#eDitYT(43`xRvjH06fG}~PPi*#&&hd%O;E;BSYx8zC1aOKOPBE%`= zuX5=C#()9qw$6|cb^<8*gddxkOj=pl7obBaaBS+FYcAo; zi2)+DsY>IOU0{aUTqC2QGtUo0zf@z(mu{;B`a`RnSoAAZD^s3u35X*5dElQySpr4$ zOcXGzScJw~g_58alJUzV6wn#%p>6a2<#p@xWz)OMZ{4Zd|3t33>vcmiuf}GD++5?D zqM#iD8^KE#7tAEZg%Wos0Agg zURynSu41O+SC5d7GcuB?4QZ71nyRV2s|Z6uuY(D@^uj+pkQ%8}wGVg4M2{mh!A3`d z^CW^u^T$hRkA3g*F=3Yb5`YZA~?BDMz z;j|iT_~I8i-D9j}0PvOv$|y`2=!ml&(+fpa#LXBR8O0$Xgt%1N-L&BxQLna$TF=xL z6RVUns4QcYq^)vm{lT^u+G%Pt<#*q&w!j^GjDs`Q^h1rifVD*IyQfy%u(31ab>h6u zw@(zrwV&}~ejE0rs0{HAm8(Y)4c-Aa6b>WLYd2eVe!I7F3m0?X!>sgD_aiX;h|f^# zMHTpCTbzei+R-9dq_-oRE-M~U_4%)q5k>utrINKTHT>8gNqN)<89pdRvWgkd}@ ze1<%IDi-sO(Sh8Z>|DJPPlbF@pK^1JT!OJTWwZlQpdHI}@llUrS<2I=+@nBrAe33& z^1vzJoM<|$!`lx8oL2t9#h`9dtERnxh+ann)&jBv20W30{lN~fsAmHXTenZBM<2%* z5<+YBcUxro+TPm#pw_A&goHJv864VDAj?x4Q0HypO}0pNp4p+Bl(wek&Qd1R_okt) zyGg73ww_O_n4P&zA=!XoErHSWbD_Tx0-=U{dng5JS{N|=t#Dl1{CeYV4)fbUyWY*^cb#bUA_4>J8|Yl zOr@<$2-GW`K>wY0IAeuBAMR$?1l13wav6+P-?cS1jo}-t)JF;+)n1WXw!qu#Go!wB zE2AafrsAH7-j_2zBh-<=APY2Tj~q=D}WyJ%rs-|jMvtxD_kg(`;$C-PMkiOQD? z>=#wgW<{9Z0ExV#I&&~QrFNmaaSIR)V&rZ|fr74P z8}t3B4NTMPDee6eceC zCZ4$oLzKJO(HMTMdKAD=&?ihZQD-^<1T+W#68i6f0>HDQ_*gJ{^y7(pVhw)k%Xs@y zR?9^uD8Fy?4ixw?;ZjLe>;LL%1cz!J-8<3z6k!1AW=OOU&Z9eX01Xn>+PuCuEqB6J z&@5K^oc=@huQl2c5&+7xT8dS()9d|;v}`^!XiEreBL4p;!A(p7GiCa|QxBEs%z|GI zVfldQ|-P>P;d;@7s9z&sI{}?piqOF3&2ETVLN!b*Fonc5oPx*lYL&2^U(e z@{keg5zZ&hxa=~NOvY=lf$-?BH-;wlirT;!14s=k8_99p-bO4IOkWYJ0!)geWSmxQeIO#eU_lK0N@Npxwic%z^}T~ zK`a}c8AW=>2a&QMo#|d0|JtG{7W2J7d~fBr5XIXxFAepZppmtzo>s?oEU0bL%P$E*ZV>&!)y8NT^gsO9 z&fM1Q%o4H#;uPYQSz%(RF$TN{uRRlqOA_Jh(GSKXYuE=E&Kxip==tm$>f2Pv^95RP z$)UlW({*5GqL5E}S$dt};zNI(K9d;Pr{}pAto)3!e020IK;EB?i8>3y2~Q{>mUY`yj4ENT6jTQ~TE7$>T>Yx{HY2Yr?8)E%?{RpYSl-Qc|& zju-Lz{tx%B%fR_$Lo;l=FhgZ*@&FIBT>7A>`C|{qQL@yZyO##x<*=NV%2}r zYat!K#Z%h4U{v{jk~8z{NBiGgY}uGqHjGii9kr68{I~K5g&UkPyg?k?LzcgmT$n~~ ztc(C{64GMG{aLTI(AO{Moc1_98Fa`Z?4s0peK^E#z4`pBZ%bz&i29bK8qh8p!1!h~I71$Prm{;=Q0tzcCB9Ube@P1Vmc9D1 z0KD43`J*@LYV;w8vs~oixDn0@r9w%P7W%*Ck`qpfls=?#2uGEC=`h2-wkj;R!wSiM zByjufQ4E38T8Rq43h7y#EsFr#Ol%RWE?Kg#!Y^J8fVfsn} z$Wx+RhIpJ7s0CJQROW0xZ|%*5C7P(+^mL+kve^AG@CJk;1Id`zt1=MRRs9FwZZIPCYWIz_r2!}r&Kq!;XL^u zwyErKG3WHR5}C@;)jDwJuZ7D&y%Yijr8+w!HACK?pNP872{0b%5=6n;gv9o`>G$LV z6Iay|_VI6qUe!obL4crsgJdXY9Qozr*T0%$QnAj|9Ha^ON}!I$U^f|P1qwJ^AhO%?Eh719!mh}{wH2b3G9Lp zuGakxn4+jojjZD-AC9k#O|Xh>K9fHX7Bp?gz`1XZaS;i>C5`4b6x=E&hxXwzo}MP# z5a58CBNM3C5LdVdaILg76KJ&r$NA7+8))=~+QbbR4dVp%x)}|t*m=sK77LqmULaO* zgs`ubYEreMt`vd==QR-TY>sap!aaR%b$b)Z8W9{gqkadUOV1`3g3$i96zyjU-yUp4 z<(aw_s_jxk`8itY17WTreK%HPVx%?<5}SFQEHfy)ba18xwfYcM0H+uo?h6J;q4H45j@b>ea0xhSf+ZpIK%+w{&kdQS0X zb}MjEu)3eo`nzv9=J=&oxLq$y-axRa>kPS+x6YbL*q$O^AZvAaR{k&uf{5zXZ5;*5 zI;37x4T!h2cZG-sM-0@V)J8n*i;7sRS_8{N#@7xq08r1lVR%2IO8mHhXaYZjiCB6{ zjZxX92LK8WRev90m7TM`ETgV5vX``Wp21|WWFS&|#icwunXeT!lW(X6^JopX;H#AhMRRl?b-F5gJ#O z7=D4MyQ-K6|6mv?QoQhH6A;C#yBXzp6|Ow+KJmXSv$FiYkf|mRXRv9bSw~SmKQb9o zt@dgqG{rS#oi2xc$E9AV8UoL1{)~Zk*+7FdZ27R}upt#!8qw2fZ-%#Q0xYZLegGaS z9tc;zA48Cq2YTo-PsgBIsUrDGt7~ksE-<8PTvzzOn$K+SWahk&UJX?^q->(x1nig} zCy>MF@AmxBZa8CO8E|8>p{QERhhz*d9l+%yiBma~ zD}U&BC=gzM!6dj50D~pZV82K*6915WLAQbuQ$NzzherXsN;r%4TrnD_9wVAlT8`9( z83lglf^HGmKtXL0*z3u02jqy^bJZv1jIMW;9zmyIC(4{AO*)Tov%X znBHe`dnllUuE1MzYfGpLURViS*6Gsl=H*j629FyyG<4oLdXozm;1M0`txeP!0;=07 za~I}d(CZi-^x=a95EY52LO3oMX%~cM#A<7A)V1rBbJJgR;SR(W(W1=PF z##@W-In2NFs6p40HNCj zeWqLuf;u9!XCiFuobuzc0?0Msw1-Q+?7+2#a{RA__EAZOv@Ao!blt=2DeJT9iTP7n zjY&c&&_Kiab&^l5x|R!?yZm_JG*MEzB_}`sL3bYfjX72iFmxYVNoBiN^_ScjX#BFE zcUQ-Jn?b*8@~y@HTelv`HIyYm+T7B(SWt|I74WT|fWfd*i=TIC z><&>Xg2)S-4Pj*g@XIA){1~ z+uSJ6;4RZI7peX7IkTN)p%DPvIC}xn!fps-5uwHTx8=jvzuERsB~6~!W0lQ-R44a- zuc``PGX9%7r5Y-iSW}OHHwSC9YIQTA4<@win7^n6~H{*iPXVHo3i4NO1)wFoyIIWX#E8#r3tY4|RlX4Ba;&KT}wzbu|l z0C~8?x@f9W?zuyd&ZnVM3jopLq)$v8M}R5iJMSQ_M`H%7G$Sq4u9oULg|4bcXzccO zBO+N!l_{tbd3=C=_+1Z2Pxa@vH^9JUcj+j`0L)DX)1VP@UC%YcVCrTkeh&l-bZD+* z1-8BC4aU98s8nxf-a)nG)C6Zy@)0$9Ux4=+DX&%{$S=n4ksL2TqpdM1!VN?0{xt_4 zGyuLXZuHvt|EtJN$87@M#88S_=f=T6@{7xtzn8;sQK+7zSEb3DN^-xR(>FfbKJbi5qRW(9(?>pym_ggz_ZqaWzW zY!6BntE4n-;iH|(^_u#ifF%9@?e%c0a*_hTq*K>xz4LC)D;k1Zm;Xf*3nvehKr|}m z@9#Z(+N^RAmN|WNn13gd!awemI2na(HWE3Om@{4Wii#^bulj8!^O{f3O^g-?iplw1 z9ZmXdeFrAGhso^2T%uC{l6)SRW1uIlm1@dVQ`Byv)S~i8HIA@Z-4y(%#b_6N^RF2o zN5${9mbjA4w4y!#i%`t+espcC3Qww9P?@2od$*b^m@|C0=g@rS8%>FuK&vr$ zT(Rk`m6RELQY}=0&@eWPHf~Jj_uCggz~O72<$}E-cfGLQ>p=Jsnn&ugV^4_+KY&L= z-WH**5Vi=xXi*>ut??H}xR^t(V*+Cqc}%;jYN>DqY2O_xLtSU1`Uy>CC{t8C_;y9zMT{&f9XGxyh95M6kV_v}aXVfM`an!xRJ&VQtJczZ3ExplP|z0T`IHT!Ju z(M&nTPA~$$n%ANCrP|Mpc;h!8V{^%2(wSuY}$Pv^o;!Fnr6 zA0uog`UHFrDK#eEikaKy6iu%|S!WZ|`_PXsDj=`=TJUDl_1HlB((T+1{)=P<;ENOd z2hWb0w*=si`_Xy+%f*@^@zsL!42T%Uh@()Ke6Iv-l=uz7>voZakAq+_s?@zYot_>> zmpC;iV`ryzz+#>Ma-KNILZQ9lEFD%2E$7$nhuow$_SDOPlD@}B4H!b6>+*O*_gIm> z>wEF@huvJ+$>UGK_stZw;94euIRouB$632urM83FIog*qx6gU(0;%$1NL8vf@))xB zzL^3Ap@liwGy>w+lnJzL6x+yGti~rpj=+HEXUy&a!Wjnpux#Ir)U5n1Y)x>L<+nl8 zRV%6fe}@J340a=b!D9`%I~;Ld+W(74fMfaOn&M4SPD<6 z@H8I{Tj==JI(aBB1@Y&pEx#r)LW||;L!hPGU?T*H2J%8L>OerRt_HU>l|knw3X!Bm z`74tUKG=u`jd_EK5~B|pNU{rHw^{q^TZ*U4$9=u|%X03IZYOov6)D6-1)}$q&>0Z7 zF22Qi^4iojJ@j?G#uCc|3k3<0p$xVKsxBnlW3i}MmM999<&1Z=I?sFeqgTuWCWT_& zqXlnSMJePtG(j(QbQeir#YVZ>!5yKKJWFv@{iY( z<(dja-ad@Nh+{1Ok8;jw{~o-zTIej?M%YGnMe&9Rdn3HFK}L~_g91r9vO@j)?C&+9 zQq3v%S~C%=(e11GduMLTkg0pRuMK?M!eX6`U^z-D9o!pt?+pTmYVPYkFBt)ro;onU zs=h2uk)qexXSkn&ZfPP{LmWx~VgW4d{N1(Jyx>JxPkaPt{?lpldaN~0cDxmgB*<$$ z3A)^L*?F|@IQDMRf4iH&KRoQ3T6az$7jWGRRjO)%2nno{5_%D&Bm*Iai~b8pjtxR9 z^H|X?2j}$ow$GT1(7LS1n8Dh9X+YSz;aiW?RPMhziP@&2n(hqyl^!}aEW>*7peSID zZ|@EQIOA-q3k5a1yTvpvIxOUR@VOXn96$XR11@pC3$ofAUVBgQ-2%s^><#f;Nv3p~ zJg^d7@gX~pwdt&2&6zTMEF!d7&yx4GCaD>%H`@ zwoFy$oIO7}v^}i|*DQB0ej$Gi7)HA*`GA(Bi0nb)F9oX5SgMVm<0=WK=dst)e9pcS zbVD+F@h@r6Uq@=INT|aw`l*D4p^g7lP&5Xo%-(iw0Shaxd?b)#HRT$wH^;WRf0Y=b z0xlOW(wtjRDn*y}b+*3wQLk`;9W-ty`M-Ons#CDG+HIad3Dfl^??BfvXBo?}$!%UO z!WIW|dM#=kDQa=v4uee{P6x=>c|PIK4n2KN;^h22mU_w8ovhy6H`?)+CcN!I>z7-8 zBTeXUB!1K=^Lirv@QJo%X>|h{aotAnX4=E}Np4@klG^cdy!4I4lxVGL7(N00kVvgz zYN8Bw9oKiz!cvb6*#3@r6%FPIt!m8(=|81vWca@#gpv=qOed#4j>fzNy41wWO+uVCQJ3#=sJhUE@8c5nN=2F-nihYb@x%}trJHFAM48k=hU zb!{qyl&fLf2Va%`T!0#_zf!-S5*zK`Y881T)ZxyyU;9pbeO47pf(XTHjdPr@^dEg9 zc4lHl#HBa~tL5*R6C@)L7I>aPjXe8&KMt06pv3Ch)8zpagd8)S;g zbsJqw0WZ)T^9WJrf0^XucFRWJ`~}hX0%7FBS7G5xDm#J?i&Ao}*7nEaC8h^bD=U{HgFeX~tDTv%m=6uw=XETC-(bOp<( zX$M+WOl+{L1mP+9v>BW>QQMSvua}1V?0`|ta}Z~vJPF@TRl5#m)g1cjQnL|(e@$tS z-TT8}dwb!#o>0JsS@&b`sqfhJt^OxM{wB{XT{Y`TZ3JmPOtrm0y1YcX3ODp z4m^6;6{+C3-P5?l7}7&S139lv7I{pxcBbe-gjysXU&KQpKaO0W0#2E7$fvys@n~IBZTM%0?6tjwDF%e+h(6{-L)``)o-`K zXn(jy69&x+&AmV&qJWvy-C5a4bk>4oI@i!t5n8@-v3akM#v+#yRe~ z`A1QLP@+nZ)s72|=+RAOl$rnDB@e}AeM{_o!h~eHB@0#y(gGi)hhIm297K;`v z6T!;<0>J&QEu9BVBnRfk-mGXlKH$C$O`9VJWi>*fs$K~d!6+WyT{c#kvev;Fk2hCp z0PG2)COOiWnLR}u4ly>1ptf1Fph;+^NrVOh@G#d+CpUVetkizS)mSioeYwGFYth{h zHqgsh^e)`D5&Gk*;bp4K+~FY1rNP z&uU#V+^QN)dAtNv2xM|R=+NdGWji8T(|>5)y_b{nq~DGi1#ZFpU+e&B*@{+t?e%)Z z5N?=u|3nBawj4ny0Mv5X(WbkfhyL})&ucF>=uO(vMft{j7rX>OEo##QVT(x*0oJ4; zZfAoV)gn1Rl5o`{Uvo_klUv&f+B!W1nOTK!vxquM6;K$PaJ4HO!O2nwuXYj#$@(_A)>n( z^iJ@4wl_fFhfRPj%k_JCB@^iU1UYndJ?(yK<~~N%DO+%#D;Tw$OtX&hZA7}Kp(A&- z!6B(=%@O_Ry;KBL5PjBwKlhF4fcF+0CdLS4MZlC>yK=E^@SRHR=jKNcoBvaP0PdU! zpd1y;#B5$$==}08`EgR8chdxU!piN5)fe6r(|dhw%W*GnyPY9Ei;*$3e266Fd-wDM z&VU21IAe}oLntke^+@Re?mtp9pnt%1`rAXBrH><_&yQ7`uFK8$*O-_~K6g%!9A8eC zJse5IYkwoG#2FFneBAKR-rn#5T1q6j>kCyaaZcbNM>o|kvDmF{$h;wsKwNQQYIxxB zHN_MssXDQ*`d(L4m*F_MU|?4Xz$jS{|0uT*4gPH=oDA$)0M*G2b(EyD- z`-)X>GLw%2St3JNpGNGfhk^5gRcOF(a={jY8N*JywBpOJCgU@)Y9GF@jEAiL53@l+ z=S<&V<|W@FG(Ai($Jz1Q?&kRzlt^@pi0kQT(w^@9E&&h&^1bBm5g7D1c*lX-P^nF* zDymp|hxSrh;3eB7^x3jVQdrZwo{vj>gH#hHQ1Uzl6SwOmWdzBXeG&2l<9sqk6cRaf zK-j1^W23zJ)nbe#oc23UI|-D zS>$Z-hu(q>jIdeGZdba0RsaoKRaey{QCGW1@0txw;%Jl}avp1vrxIp2l^-b$Z}%+1 zA9*35hB-8uj?r%~i=tAd?`eI6-Bi+1HT>v|jC=&t`A4 z(YD?9oj+PatyWl4$g|^IXio4<)zFk!&TH zWnyhQj82RGZ1>NHTIq5d{F9G#HU)~+4%d`1)m|xOdboVFLIqxZ&yW1h0-sQnF~y2Z zZPkxqOBW=9Am(W`S@+nm*TL>R9U9|IH!;>jc4u?}W5gyd-3zy~X^GnuH zqgZ!WVCnP4DMu@mGS9R->e==Ta+--)lY9Ze3#(IF&)|pjo_K;r{3OHPUy~A=0(yZ} zajq^+xdxRLlQ>c8uL5{q7z6~`_O=i9SM?e!J4<@-*GlU8!>1A*`=TJEqd zCf3EVFL`m5rDHUNKnhX$OTM39s)iP%*kX@DjBxh*DaZnwKS(}9mcBrJoznDdT!5xF zun40V5rs^pt4NCl`1@4e2|cFJYTb3|rI&y=W##DClq8+09PY;J{%a7;=9(Ad7g9r` z1`)h}*z}zuRtZ0hOFV-zJ^S=!q*hGejQMBb?96WAuk~Aw-N0Sqv4}7!#Ujr@1k3Kg zhCzu~V|1*Ll(mwXE9WHT&tBL#n2($x*GmoC?AdOl8{4xj^MSbX*2D1oPR;j?T>&Df za$b+~%~MD~f`|LwJbGRp8gSVB{(#}D$9l#f3h=6}ucFoxj*FevIip=vqlR?t3Ur;b z<@+`Y_U?1@7_NhW)!A|Ajq7_CM@Vt5-xK^C)3!jAzv;KRiIu|bm3=lHcQ_CQOC2V% z6EjFA7=|^bloxIaqdjEQD(tt;2)&u=WOER87jF4SSSc#77YsA~S>F;e)l+zjc2Ba) z2iY7Hb9BG_krxcb6*rxkfox;1t@fu)z=i2yyNrxNW&TxNUeziaYS5;c^i5$|?biUV zrm~^`$k#Mr*YV$I?z=tm&!_XcDf{*2Yo4R*zT74pj~lwHzuhVgDqro?v9(Lk=uSsk z1lIV)DPFy^{w1uYlMJP%#;f#d%Kb?(Gjl8miL#;LorfOt(Xy4weSHYVj{)Ree0qU` z9y7W6=EUCueY7fqf&oy%w#jVQoogs90>To@{ka;87^Zf_ zcro33_H3waN4_;f0r$mAC|aiNv;F1@&UkgB+1dnQ|A37U6-r_ERND}p(ppB-BDDFV zIH|v+DVrUoeK(u0{ZrzhsY>~aZ5LRasoMUyeNE~in76fXHgs}|QGkPo#2frG8@p>S zrH{#;d2}vP`Iw?b10#e?FwjoviM3~jSFHYqCWBZ(K^0AwJQ=l;l7M=uY6{z9uV)}w zc72d$;CEKpB#P%KmakoB?%tAS?I9;{kY(Q*Szry_7{URulrILqc?vt`;S?bdPC;sh zRH@ta57K*cwo|vs-pa}fr<=-KpLhPB03_EO%s`|kT@7YOlURaoq00jaP zxzCk|@QA)V3>Zg|vaMQy!)x^iDurv)<4b>XHV$paa-rkIkEP?^w54$MM-BcGXyr&` zE8jB=ReFg8-CN?jsL_xO6Ang0jq`!~gR}J_$i|L`J6q_LZ+pAh(2DS$@wkh5oNVA& zk{}3xrND~dNBNI`@;gxpCr0eq@R;H}E^**b?$r*q5=*$+QHttxQE6jBC?fU^V*`)% ztUN!jfuYVp8)N$5esR2*=$En)B*t{yTO+(D6F0MY*D^F{#9a~e*>8uA7UNya=Fs*D z9+z?`-N?+%!mqbeLZ9ourp%NkJdbklpHsc)SLPDM+G)!Z&HrFzez#l2K~U{{KFoq0 zTC;Cc2oLzDPW-3vt64+1;CBpxJda&O2>6+P!5&3r6PEEF1;ZiT2i646c5z7}$EvIF zRCR9=PU|VUAohA(x4F4F1A~k{sFF+j%u&^!5sbS)Rzy^-S|lU987<~l+-K8|zonD# zY3vJx=A3v@Kh=k>fcxlW{reH=uX6&yyDA6OtJnLKV z=~2ut4o!;c{A5_ zN&P6Ic!CU#ktX+%_;9#zy|_xgk*~sna)aPP

    L{#d zx}pjJ0?Rkp!{uP^F;H!sXft7{T6ZyKEz=8Hoa0$Xw*6$TK_N~v5nS7PZJ>Vhr`{oTglkcJ#`td7^t(%P8 z1N&xa&tItsm1$Pw`*sQMT|DuUQY`l~~>6>wco11wJng2>9> zxPU<(TYINOTfslhe5*~2aIXZVL(M;~Bid1^oCxpVBH~$?NFE2vvYVC^O!E&P8|8m+ zEmpNOZ)QNnavwU#$7iORjmvD;DX5aD!K#>F0yiu z&sLx>u0Xff9SRQCilav#b%2@81ojs2R~(91`oNzZn!2!HEYAwZB&k^>TNSbSAoJPn z-&mD}DZ(jmPx~QIyaX;W7YU)H{yfa|L=>I#C^nc?MsUWgRQ(u$=_mxaf7`4Uj&!LM zac=H^CE?hh4{YGIuu^6d>4OoGgr!n|eP^;iwtugdqC^d7ulxl`~9!Gq(5v!ICe!tNO zs$s}Rct+X?49CGhV{UZ%9p%TJKZj=Sa;w0dDphVMJuzNHN!H;tmwk4?KF*5BE$~E< zFSa0pjzS_3!%c@BN4gNVq}SFo7{D6GCQ^?}sp+v|hR8leXjg>l{%Th9q8JbD-C;Rt z(!1GpKNamza5UV6*~MSU5AznaYQt)PFfsGYaX z6UsFE#@K9R2T64n%rpm?8d-sFPMXJ$VHCy}MFmvU1sctv#V)tHHq&ZJf7$5~?=NF8g7!wRef;j(_=L=aEnF zYq6SVO(6P0k1p^SlGANhl7XxC3-$yJs)ET0Q>vL?jSGn!+a>elx^|+>#Diyn7L)Pb zc)lr@zJRB)d37oixwYE@Eh$O*5?kz0RF`HSBtSSJMVK5G zM>`)_=Hb2Ip)kk5^2PJIYF7U0dbQRT2Lq!=M3Iw#^ZU#P?n*WD*yjhi;~xo6&-St?1SwmbOoSxm?{Nb1u-qlT!tayKZxhKb97r zbGObAFS|F~OwDfeXoZ#pM`y$&6c_}c{YC)ejsX~b4`NSTLR=3htC&+16UcA33{LzD zkzbNf2<6yZ&W)*wUxuV2$;h{ZESlmW)$*Yml(2E(tFQ5iry@m+288kgAA_Vn&~|;} zBgbF_x%j`f4X@B(#C0-#H_cYSDY5XKgSOe$WTu$g z9jC1(y_Isv5HRkG$v3od($Ay(N!E39V*ps}OHU%UKwZ=RZti}f#f90reLOfa#Hj$S zYRg@x&N>9xfq;V%a;iBYLQ>DB@niNmD#ihX$ciwK`#@NFj3pCEBIaYUA%z6gT4Wt@ z4^U7nk`szMRVD3$`#~$F&9aZV(p|00{N>-P;+HO-g%++E;FHN*7a1c4jg*70XFUA- z>AfPw@(BqX{0A4v)F;4xPFqp7->Ah(3W)y!87XALJvscoJZ*1Gs72iF)9wcue~0^y zrrTn8HV|q8iLt!OZNpvuw-(OV2~aJPL-yVzrj@-`velIN)*B_)(d0?LiX=U9 zudi56=tJ9C`FQg}Pfr?;ThF`AsgPr28Bf5lkF`ibCrpWEbZm?o0m&8G^}NuV`nbmu zt{o85kXdsdQ6efcqvaJPixx=lB&&j)Q1Swa9W{8*2e8c!peYxDWQZ6}lp&}#(#jY{ z3e^~B1Df0XL$jcFWeur(THLd-m`oyX*b01+}uY;_`*r*Oc{Y7%U$1y!4tOK z+wAQ*5|V}&x54SZf4I`O#8=ut-F3NMv*Fbg8#gt1vW3TiVKUcC#HqwnTAbauTkuTO zpPc9qXC@{8HuDg_t*6P)i-{=i!9HHRJXzbVnDz(BY2OJND61>b-DJ#-Map$q>OHOZ z8<`K2wFce@2l!gjuQCu89aXnqp6D;oV%x2@NkCT#gaB_ETo&N*8Et}we~5*hMauZLFAmqhwP&=C}0&`@x&Des`%v10o9+0EsDX=N|F|7o)*LzaD8 z92Po~{o}BBz$WQ7V*jwT2H{a`gVYHAaN-jT?s$jUgOyNXU;As=U2X?LCVAvT_bD6#e0#^RJzxZFN(F5FZ$Py_sfj9Ka{_dZ6vSq3g^;b zw`NSo9^_ehe@f?Tp6$>??gO5O@iPZNtMf5FbOH4F7mlcXQB?X7*PCDhDIhzz^x|*T zpSAjuJy5||OC)m<^j;2;0&3)r5bHR>S*i{hmC`^tZTpOSSi^96SX~mEi~vmDMj-3d zuFCC1Z=>k|F&m21o`xZpFWmPTrtzy*qxYtyFc+H_qoy>RII#pga;`MbYSLuAbFe6X zddp#GG`m79R8wZOtB=c_6OU?C4JdNdKz}4Hm%|LUNj5)PYY{{UbueV$!(5>wZsm;g zXrQtWo_`2YhxvqX&)mc}NB~J2$LEKx(^WT3*-MPJ`xf`*i0J;y8WO4&e*lXg3dsUNlbI>xf|M}ni0kSQKIBZOOqJL=PIm+C z=NL@WusDgSnsyHqS4x~5lb=sZ`rkAr9N+dZIdzHaGu4HqOHcM9uuU8K-`Wni5!GQb zm{`1L(~Hn;&GDRl5azbIY!K!RFalGe7V^Z2p~3}~k*Ja%7r zzWkgb?y*{O=z;&mq14ixFSKQ$tdIwd;Wb4(Z+2RLPa`((1k+5kRrXMBkvDJ^`g7uV zCh#vMPHx`HwCdI`2ra?rp3|!(<^ZhumgMxWRj0MplSQHye=(&N-!;O1G9{0Ivzz}d zD9|&&8JsteO%iT|np6I3<#&>2&=T#XrecDJ`G~zv-zy*?N}w`1H2augNxqNH$V{km zRn6dnt@jh!HpNs>$Zu$A75l~?g?QcJG2JdCh4R=v2S1?)bq_sp{}qx_jwuYxVWFF>8%BCxomOlQW5#wG&`}&SctaB0)om% zfba|8vd}91pJuxI@VH1BSNU8GLtp*8n2)s!-9~89j?d+Y0@IMdc|}*EwqAp{O^jk;6XfM=x)Gd#@95UTs)n>GHZ7l!gYFVCBr$(YEquzK>^;bKAIkG;R8ERm- zGf$KfP3Q}%hDY_jtEkq2p)+*3m(`7js``q5Ne0stNz9es*#=sA07xR~r&AEvUu>Lv zhUrTIKOdBy@#dWzRNoi8i_s@5j?yDGu}*$-kp9l&jq0R+=O@OY7#EeIzA?vJe8fW4 zj!$17*p_je10_mm?B;vHVc9nj8Fpmv_lo!u6b5Gn3X-;YmppkuC!4N$+oEe273^93 z+H8~eCac{sa(i^aM7dr@9lDMF6V(hi^cuMp$LZTl|BT6rrxVGbc$D7gj{a_RqbFmv zi_^$l;13CH0rTkd#Kl&QqF`oZpc!MmYZ7v8##lZXG2Jh(iUoK&OAZt20c)Vb6;H;d zzifZsqu>ZY$4cp{Jt1djA*y6(%c8LI=Wi0TMmywkRvL8}gD!{=>av_!ivoNbQK z9}lw!*LJGb%MUW5{y-YCOuXcbDt|Fm$bKNMY+O>hI&zQr}PM8g(x~C@r`C5 z;jGuslgWG!%b=Efm5FkWD5RoQR8V8zt5!ItyG? zP8!k^b#|H}%0W5s;Y9!8bjKvFnsyGwKsZ#Utouyd_z`vcifQrS@}sJDUdknxyI$;v zWM_4c?K9P(rJ{Q+T^Q}pRp>8g=v*AP+AMiexoOET8gk{ZY6To)IYW%-LHPDhI) z5|4~{aq$5(@xzS=JXs2Bk!CG6M8XcbUedy1_Wc3oc#%w71zg%wv zA^2cW8IHkohT)2`D>3^a8Rpon8+-gX)ECQui9GRRai*CFK@y`3u&LyL>)*DR zK^6=j0Y0Xb&j?YIiggdGPPy7GvIru7RoQ`hOiQ>y=4Zs$jFn2dW-V=DfhYsy@xCtF z8@1lkEMNRS;zJz7PlU8Yp|(64?DZE%`+cg#i(oMjBjg~n1u zi&`FFATsZq$?q8|4!siA7P^Lh;deo z#_ZfSMHo@+=xCq{`U;n8=&ja)!CykI%egQMmWU>d03jhnF|xl$pVH)-jt0b;2)tFA zQ+SRGb@w%%UJ$``S#it^gEKsgIg8EvzMKDO;@vWYCa4s99m@dox%*y%cL9z;5Ccs^ zFTXNm&_gSp?JNFctK{YHjTQ?g+*=!|IjNwxoH8MB6%rSt84gBmom4F)8|3QOryh)z zAK&kY^r8sjk5gBSwA%(meSpj})On{`N(yyHZA&a4OsWd?l?0-wjFEQ{PgF<|^=%lV zej?q6xPwo^xS@*PCKZ~q6k;7Ra}hfD+PW=0#NMH5p`xb8G*-Q_N9t!7gRK?&2_Gka^c(JdOJ%1bO0Q%Umt4 z%yy-gpTb&Zt*9Be2e5%-=>~<i`Kq^?qm~8G4KFQ`IrP`A>q_p zEXYei;KaM0R)?ue_AxI$!DAt6$YX8ODN>5 zdoTD$O_{Zw_ho3NZA~*4k!|uOt7yYNA2flkk<&734$~-ZAxqV7X5G zx<-6mnco_y&UEUYtgI@?*JrCCBB+R=Qw z1lN)xl*by`n^9oUoVye&HqZ7xanKkY^BxN3?jP2O!lEnifayugwDn$w4_43WP*=}t zIj!;G%PC<&#`Zwm%4Zy`q2nFwN}F3f8L%ipz^-qdT!^G#!09NpX19=X$k>_q(lcvF zB*UK9F9JyubNnRsP_TQHpP5e+{tr%gH8#p-T&!?GP&BIQa~j5}Y%nGDHuu+{dlX0* z6gpD9jPs*md6z&A6m8?*>H`=v&X3RFjmAQ+0IPQ}Nf-{`uDEcPVu=qMAV2j5Dv-d^ zBh&`UR1<{#X622=HU?Jewh0K8Sp}njrk-e zxq54JXis9r6Kw_fr1&0$;|o4B5>H+SweLt)BrP3iQbpGH8WuDtIA1I0T7&frwv=f| zPgP!7*Q&JlXUFh&m;lvXHClBtuv1A)f5oc2;oLkA1*0%G+3^gy`(dMx$-;37)%>aZ zZbwMVY1v?aOMG;;cYw*&&~W;9J$x1M9JCm-B#-p!rZQ=&f>K2cKI>VnGh5z!-S0?R znT$zmtWDj59{ivOO<7lfsss=k zO}j%@;U)eoK1_k)=jk`?Er!JOKod;H2V3YNX|LCjfpq+G`e?88N@4F=wnikg9d#%* zMaj#eQ^zf4jyNUAXpU;msPCg;4>A!9A3eR8VBqws>N7G_z;;S%lGJ+F-5mA6G#Yx( z#_%9N-vaO|pUl`8bXKWRvrtd_r1l0qYV5v7&ya~sf0Q#*b`6o)@D_LvTd}l z5{P{RXTfjdqU%p-g;|&Z68-xr&PFK(6JrN1OPy!7d>yfkqTg(LVxve~JZF)$0K??f z;PjwvPguJyn!5s$@Y57}{KO=w2THjnA_X4P9Di{Y=Z8dyNG#oKr=;j?ln4a!KSPw` zOaV02{^YWom=BOj+Ia`+0#aILhA2iXMd{I+9vgV%YJxCwqD?1{X}cqVA^=M;btm%x zh9gHq&)w@xj8RVCx1Cyhzt*?)Jw8Rkb+AcG$UXMD_%jC)3IeJEbCI_xq*Te(#$H`5 zNXQTst)W=fc9f*}e5l<`*+yLKb3rr9(XdM!T843?K3h_Fnt%#j38{9Vnh_IPFV8Exl{t(Gs3BLPXMDzgRiYop@IJVQ^BVOO>zA`G~%uIvo3SvP2J{MqAcU=N8=>p z_l>p&VhMndTb=VSo-q7BDl@qQs}_0F1{}O0sk|X#DFRa!N>{rQH*JbyAIycR4Q4F|mepzSVXTrsF4G@`U z5Ik%8eN!y?z}%z)PYc%}dZhCluBzWNf!KiB1X_YdjzecF85 z^7{mRgy|;Zgi#Ca8$4||gQ7-);M#r=FrJjko{tx@Zr}SilCBoauS=NByW4iI7~brW zG!Y-UK{EjVl*Z6`n&aHl`(_x&*)UK@iCXX!ujo9ZyvUlg3ql@TO|7J{G7)cWwsTuyA+)<4KC$I>jrxFy0sBydT>#?uwObs`t z#3MAfnf*pXm>1{7a(Rl6=e2}|yRiGCXEEzTf-_4B0V^84SDBnMx`$K?+Qefpn@x{R*JXVr^u$}0m{>qjePVAQs~_@%k~#$zqX3}@nOxUI_mF(R zLtzwSp@Fd~u34QkjR)0$NP_a|+?kB}qs`q+R+aM~M;4^EL59_vOV8)}bVy6UB#Uf0 zZPcKO(py&4B)_)QG7#m*)0^h%$I+gqLf0q19sM+=xB=Px$F+3>rM%m>7EJC5R5F5- z75L)#Q6g`pd3Zz8Zw*;_(F4Y(Q-wZR?1R)~R=A1b;^WWiA<{Rsjj;2oaWEBd)#+lD z34L=y!K!}%M|pmNapZ5#zXj3;LM}^gp>gzt{~_XKMduZ>vPdg;g@>nAbuiT1kQLBS z{kt`n!@3ja_FXrUrxj>i_MI1;$K$#R;Q8$N*DEG*A}noGk>Gr!<*nyD$+@}6iV|AK zl6Wf(ey0^>E&%F%Y76CUOoQYSI-ayfR76EjM>UE?2}|J;I9WX8TlJTs?fgd&DIwYC zc_(ajP=h&Bs0()d8Z0%nri7YyE)16*wM8n=cFqE8f~(D)Q0!G7 z?)xb0x+0-xtQWuGbFU3{!Nx_gb+}e`;6Wxhw(=N7o|C z_7x{lVb92wP(}bMsyKv5!os|2+def1p_yWg0dY|!Y)BuPD;0O3=tS#=Q`8JiwCGf+ zd=?;+5M7uiyj_};8*Ubi@L^Ba^-g(XP6Cc!CzP z$;K|f329Y#A@Hu^yERZ-Ybk-_YizB6qX$O{yI5vI-*5Eps}?YK0?;;yFgSWS1p*S6 zmwM!yJh*x|=g~cb)S7}7>>9Erh@@0-?4*z6^N{kWfqo(&qYkTzk&I5E7|WDd`(&zS z%#_#>12Efa4Fu zs-_aFp$VC?#THD&C#YsvLo~5oKVBe^$mv`=jxuW2ogWiad1wdN0qTvO*{ce~WqaLLj8MSM)~2K^JocQ63%qv*6pPnTal`QSu68rc@w= zzP3dhBkN8Lvt-Sd3nhu@oE&(wPydd zJXmxV3r=-Urs0s2l>{c7Kto4*1a~#Af;Xfk8EN9Hj�fv18XAkjG<&EaPrEkkpm% zXHm;zDdk8jXy2dj6lE8{sh_Aus7@SPe&oRA3=}?jPn6MwmC`n>Rur>%(|cvSBv%|A zp?>UlVnS7*@wS7PqcL_fT&-4OScwIlZqcUb2V}7Uv_4k9DI0;b7G-@6So<#x(yK|c z%T@VeSbnq8YO|8|53=8{zEhXO1j7e*WYVhd)lsn{I9S)c$(fyc61>cMRYjFobM{nY zbhdc;L)$P)kejz^88~4<6eM%JwkG zY;mi-VR1Agu16l33XFK&+@dH>oIuDlWg^Tbm{18i1u_x(Hr& z`djKa_nHe}svI+OGMVBF^y^4-g21zXi1b;18TVG!s=gd`Due2T#I)f$aQvJ)XkfL# z#wBN25-eS7d!Qn0zgEF3-gqa_l7y6fI6^l{P#ihjZKLcpA^}v`f?Blq*5fC;xD8;FI@4^N31bLmcoym@7KC%3Mz0v(d2 z9m{219BD`GN20JR{Rl~fZRPabmFSsc7?G@dRR5;G$P$53gk ze**BKXHi%BRo9fRiB*tA#C~fSRYpmNIVI1xhj)SdK$T+wE0*&yq|^t^tojVWu^%A9 z@i`!h7OvInx^5@NvM$Pm{#r%8)|=vvOzkSICgCk<_QLWCxiXza?8**ECT(qEKac|g zD3ys^Y#tkt@Ds;>i+&?2pwGvQR5t%TLe^%UO6qvwZIjz1Nl<_VLj}q>+}Pibq`HYd z^8#xt8Ji_~tkKiZ@)Ns0yaGH5j-C+24j=E?PK+%zd$RokkTp_yghnv~+=qT;wNz!Z zk~{V7Zw2ixt(^bpzb!#rGAA-dn z+x&`R;SmxkFmp0~SWFyBBreggPePV6VT{;>yOy*7A>0S|0M*6(Vbv`q=*}G>ejO+6O=y zjHIr}%8ZTM?6$b^NJg$a8tWM6P9Lisl??v6d#swaO4Rbuj-aGuEc7@ezzipijgO$W zGPzHn+cIM#?2xeOaS?rXdeH*ygWbF8OOHRvMs0t>L9~yJVbZ4xj2)qmNZ`p5;8rAgt8yvqq)s7-#fb?Q4*% zcdB3aQZMQN6m#uzy)c8>w#bP6tOs>lW_3|oB4-wc7lk!ttw>U<2VQxMSGKP{+!!u> z3M}t)LrikUCcgMWOwBpu782raL+WylDpf5`3PBf8gS<$&Dx{sptCP2+X<>Q=HS`3m zRRVQ%_b(C$-=z%tWunZ}1pcj9Zvl-vE%1-9dCwYgsc9bu~3Rp2adK=uWZ`EG_kqF)wl-`6$b!TbE{W zKP@gOwa!niR;tyv_5k0{8H#&WIwg%cn8&-%dcR*CRzcb#Q75C}^yEAdM-A2s5Rl}KJStaag+yX{Y>wJ@P>}XzX@`@=3DY;~OPIiI4{3>k6X~(d!XR-eP}1rVDA;oMdW7A(!Sww5WK%zYEN6_Ia6g&={Y;qG zBq6*T^{`q(ES>b=Oq&?Xs#LAezK)^!-RHZ!77JB)S`J+nr50;wz8g9lzx~KI9EegV ztFR&(z|$?gs{lc-F(G2muz?)~X^hfnJWbil-OKA|;$b)aC=6FE6M%K+AFeU&OADEB zV2Yb%!qJz5Ala*x7!eeKCPvRqgHX=(H~4JtgM(hZ#AO^12Nl(lWS|j_ z+h04lmqaV+`>)$0DiCKA6$W>_dwAW%?pcv7BLJU(n9f? zpo8~F)-z;bbg|QB&u~rTn!@ccySxSg3%$(_gvtGUu{2U%LKb9)MeWS!5em%HEkEW8 z9?WkNq-7J%&To9$OO6<*?_<=@8CC$@BPDR9U(NXL?CA@rf6#H!OQS+g*bNUwQ@;3u z9I!u)O&UC~B^PCGg5Ftgh{U)w7$B(s$cFXFFygZ}+rJH82~ps&l;RQgXFLo9&hC5n zZv`(v=)P&Dn;>Xn;yNXzX26GsPB<&)dq&e{{#^%h(zihnIfQ<&(>g? zB9MT<3ts%jo?h3~}wr;5V>F2tP+R(Be<^~#~kI`(!NuHqEHuuv=hm8W% zCHkP8vocm}Qu8IkGVv_$?5U7Q&G=GD^C@bmYv~9t+G=lMn@y(G^fbkoVYG>Ik<3e4 z(sTG4B|F#|ceJ(l)E+$mL1gvT`*w&-i5@6EA2*J>@Zswe+7JM^Hlt3ov-(bM3`HJM zcqbb7#i~g;hZOr&g}{_=v@_;={v{^vOcZ2>RGg$z@ScJAQ^kr(%GS1jPA}VV}?XOBel9(P)#eKgTqE`T|kMuZ7>ji^M(%CIL=Q|nmj8uS<8jfZ?-}% zO7tDXCoOVMF=s`Y6|IVtR7ELFYu2}@hg%@#Kr7Z@;9#c!P+2oy<}u%7NotfJlSPZJS8vmR9ZF;K(f!#f<*Col z$HiyuTEUsMGf~A?+0HOq9*P7`Hy*)$p;UWt!(4%}Ph31D3W7-F_+$i6%t}l;ElP)Z z1#O_G%c!pr;!X?8;)%AwGjLPdXKJ4yYn{KmTh@J12LlGSOi1Uj!`M`*+1jDDYJyKN zBR05Crqr;i-)~uBel+O_13DN}CwU&$Z@w`QobIcc(NaGtCI&I1e8sFmd|~w6q_!Vq z1GUIvqmQ#@%Hh3;R>LvB=3wtHGw|JFGAmEWwF5-UsCx98P#3o~nOZvk#e(7Ut{GQ# z#j6%nt%v)tZ>x3ctdvO$j3B@fXig%cvf>zhyz@gRRS0a)?qvwP8YAGA+(j1p+Eh6| zB$dRx-C3;x?W>45b=e@zhPoaA$l)o?%O0$u{cG3`4UsW*Q%Rk%dTN$do0W;DNYPt!p)KuIQ zkEMfJ@~KFyql~#|KO%zo46gi0aFJ{cGn2pr@IuKd{KyWO#k|_3&r4LTmOsNguoN?p zdGBv;Mc#r*S+m$n+oX9M9Z>_NeW)D~xNsK74Ob$uN-!UU1vZ1WObRSqN)cii4q|Y8 zFEz;`$%Kf59m!!#ZPHbZHDbqRirZn8XR4w`i>`5Dc{ug3xWxps7vqk;ItP#6b(!l0 zzAZIi1mIAJdM4mtKJmXI@B?pl@&@jU`kQx7RKrT-@zxUJp{s@1z}{MBeayouM`38( zM9lLCR`KxU?ES$D!QXh=Gei1hYPaYPdM>iN5(cmva-z=)Qk3MPZ+7Cz+aWv#cE1oq zNXrwY+OgTNt|<~O1bA|;VmJDOTV~XBA%VDG6H?5@VY3C}E~=o4N)72adg)ZY+x3?N z^-03`OuSpgS>%uBd0~G%*#ARsY>bVOe$k}v58Rm{Km1|ffCw)pmqiTn51N}C1@G>h z07r;Z$F)h(<5GvK-hb^@d0J;JL+Oc^0!o*S_MtKd8rsN#nHC9`^VYgNP8l2?qaLXW zooGCv71#;K^Kc>ACmPXi5R%oa>}c9?`+W(t91TtRDsVugi%73nCA?p@^9>x}R3e4= z`9kfcfTEnz#U&0p&)*A`*DQi|&Khy*6tkM!@>|bpJ-G7HwHceyk(7dmWw6V1R4t@! zkXZ0l0FJb%KnfOhC&PIr%o6B{fWLx*|G@)9Vc#c)3s{Wz+q||%@XlxS7OnvQeu|;! z37Xj)i`_e}1H{q~#N3p|=$FZ=2B7tG;4fY-?xXMu_)q@=VY!JFDP?f&pOCgT>LF*;d~H9NX-|n z`uY*zO?n=na~>c)RF0VbvkixtmXVQ>p8nom1lRB&@ALg=AOwM@12`Be;Qct2$r06< zjs;PL?N@m{2Sf=LP(ss^iX~KT4cETvelpnCov>ttYw`R1u~_sIna-f z*EnqNeDZpQZ0>^J^JMpGphNQkMla?IHd{S8_yEwVbW;XkBKp@ktbl_zib%l^Tg)-b zI3O;lg0%mtK*P)EbfLnMT;FTCR^J%Op6*Ms&TA3Koy}S119Dh@OxEbNCw|xH3d9dC z3U0Zj3&lb5CYA6qI-JVzn7{*ne?6jF3Qy!>|6TZd8=t%MavEa1g{3-H)*><;Uz9Nwbua#?|_ z*nq@!*@k~=N2w{~5_~&nqxEf7`-|-v^0QC?9O(}WiEAVyR%UR8Pg#hc_X^~VniLFFzDX#E*NPeiD#=1ZVS>TI!GWD- zwJZGl=YJOf=!>H((8Rd5|2{|o&5s1MqFB<&gME# zT!Y{k{xzt=mi5@s5b|46E$Pgr?|b*&uSeLe^#TbEnHGr??`rOA8BA*J7_6{72J5$T zZ9ol2Pp$ZuAsB^fCCrb9AXvK5)z_3puRpg4Cb6!FZpr8*5@1Wef4>Z+XKH9a)$R;jH7W{TflE& z!m1J8G^7nW{TB2LD>^u0X#N=>27r+=sf+O~?$c$ePmUvJ=&Cj7hoZhg07KrBAiSHRkv9T?-NXxHm%$9W1N9ADf|%M_h?_HSA4Cv>N!2 zMTV`aZ+GkEOVd}gM4JV4Dj9F&u~$ka^U+^(F|B@3HpdB_dnnUE;Dv^uwd|g^X{5_N zOH6T0x{`sy9r*~7ST0Cf5-J*g7-v-^hh{I}S9{>y2$#}f->!rgblr1&_t}isOP(wG z3Tx=i^`jD?os4Ps zo#D4L{NjZRzuDr|a!<@Icr4i{cuSO<%K*1MXc)Pk)o4rzXqq*kx-^?bR-tCc_5cJ7%RnlCcihoMevlKM}5_ z0hTuTa!%@*hJssV%2UD_!9(Ta{n)4Zc(^5G3FqitgVw1L=T-Yq-LHe1kwIaXy#a-D zPv*a@kdga~Ys2W2Qvae1SpYA5PLvNWO#A1Cp#n)g->sc__63?0di^Hry@c8#NeVMA zj;iP?_4ih9PsfLktK;9(P9XqdTSGqzLdq;nx)jEU9S#DfipGZ@H{?)#Rn*a^mtzF) z8tevLEl<4CG4g3gegC{Vz42v4dJOT8E|0ezXz%BpvgKu20`=Mw#g<8>dH^SRJ+2ni zqQobqd%z(aK8b@Rri>+~iZ!UP_$5fZ2D+7Hsm7*w zKC*TV4$6cvFc%zsqExjIB0FY4-xW|c*5rGzpmxBn`6t&Y(iIgI&s|M9(@hf@nEoJT z&r)wLRXbDba4DmPJ0~R^42o@OA$X}~g*n$$39fO^rh)tv8l2ZBHIiT9?-bgc29MQ6alKMOP9y(N|J#=1 zQ^;Jg3~(0I9h-X)NcqSkt-2ma1{?9h2o9+b2_>~gXi3UOXyGZ<)bNFKBTAyQkz7_> z=N_9}9>yILO*_W0yBmrY<($#&d@Mm7qdk!q%^|rn07dmUey@~Ich;vx$Q!OfH04n8 zk5QtD1)q|*^ti#$EDcaZyw({_-8Foapy#ZV{gH;P$h5CNxPy@pi|jyu!d8fsD1|+M z{&&2Jg<$=)KmJ=<5ag{0|BP6(*_8Spj;}^7n%ok!_tsKY$jQ&Qr4e+K$^`Yth$6Ad z#ThYEs6Im~n_xOt4NYk^v$+0z_dK$u0g=4?KB#XlnFOawn=xqsCBao)SqkI!l4xr& zghKi~OI}@-@Bz4H(9Tz=ogFQxkdg(Xrk;%a60CK{&@=NcLww;LC2B_|ifCRDablY4hfxqx)fyt{2)V?tlpPBK;O1wU}9n3Z5SI z2RVs;lzgs&b*TF$)>q!wN2d0oR`ov0X*k06VQdM#rGcNTqvNPbv*m(%UjZ3aE*Zn!tF+h(1dopm z4$Jx3jT7c&v7MY$dxFCg1#G<-3ob_Ba4r_H8uqNo7C#+Ay#TI?s>5z5Eb=a)tW2Jzt)@Cqsh~k8bgeY#w#~+5n5})lz9J z3HjC49W^|Avi~DsB^N2s_qN!2+`D54J5U9BZsO{A$+K6t72k_IStW1(VUstLR@uV# zoWL1{Qsme1EgmPU_pFSFy;7a98<=5OEFl{9iW23RNC3518AFDC)NK~9Hi*2A+qY%z z0z;#i<6-!*Rip#Zm(@0cN$Tl{ee+ACqsCFH2Rt}`us&e(!7$&s zp(0ixa#TI$46&BH!LZMoq=++w}Ll{@~SE5QH;A<$31h8plY?( zi8-b4$j9UuFYwB@{$d!~&bI8Un8`#FyxwE>e2gs5lmdT$a`Be~t3zY;&8#U@VC~NO zk3rw)*+QIN?Ll;RGs|*}yA^=Aw+!O2kvb0|E$vaNWTi-IE_aR9@Fe;5Zhi3O*~1YA zRlqE4bZ;}m}> z;$VkO$eFc*&AhC>yu8qe8gUBo@dybGmd&5MFZ5^v)l1Q|O&`B)MFSa8|2#rZbt}}z zH=T^TIJyjgNC{IP1^P?K=VaF{Ml$mV9jx9`SUziohBX5UBbMG_7AvPaCx~=-OuriP zoAz#I-#=T)J1HhS3m*lJNj*ISe$`-DyrI}+G6^+(Ia+6`J*CuvQCV8(zzh2=#Fyvi zDA?OaEhKWv3Q|2~?HDJ^^#8)Pq&&XH(yromDR``J zY*%M~@p8I0{HOBjzxrZ!flQ+ilK(H27Zs%P%Glc5$OG-H%*~u#7+pMEu%cNIf|xO3 z-2H}Oe}z67z_V*J5CIfYkvAbE;ncp2>%LyaoNYP^80dZg0p2<$>OS)U7L2+|pdG}c zTE;VNMs}tEzi?31z&ME&_Qw`nBoSd!f?F?Bs7?~M43=LVCS-2UPSr}M(3|UzinRy^V zmB7M*js^p1{Qp&yWWgaY!Tw`C{&#cWpY{0vEdQ}3|EJu4AJc!v!hgy)(5e1!)8T)L z{rCR;8}R=Wex(2R@c&Qge@FlCj{F;g|CFQuCH?<9B1*E*F#p7$Krb+GFfe}Pf4}}O D(XkmM literal 0 HcmV?d00001 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/navigate/Navigator.js b/config/plugins/visualizations/jmol/static/j2s/J/navigate/Navigator.js new file mode 100755 index 000000000000..3ed702127bbe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/navigate/Navigator.js @@ -0,0 +1,538 @@ +Clazz.declarePackage("J.navigate"); +Clazz.load(["J.api.JmolNavigatorInterface", "J.thread.JmolThread"], "J.navigate.Navigator", ["JU.P3", "$.V3", "JU.Escape", "$.GData"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tm = null; +this.nHits = 0; +this.multiplier = 1; +this.isPathGuide = false; +this.points = null; +this.pointGuides = null; +this.frameTimeMillis = 0; +this.floatSecondsTotal = 0; +this.axis = null; +this.degrees = 0; +this.center = null; +this.depthPercent = 0; +this.xTrans = 0; +this.yTrans = 0; +this.depthStart = 0; +this.depthDelta = 0; +this.xTransStart = 0; +this.xTransDelta = 0; +this.yTransStart = 0; +this.yTransDelta = 0; +this.degreeStep = 0; +this.centerStart = null; +this.totalSteps = 0; +this.aaStepCenter = null; +this.isNavTo = false; +this.iStep = 0; +this.navigationList = null; +this.iList = 0; +this.isStep = false; +Clazz.instantialize(this, arguments);}, J.navigate, "Navigator", J.thread.JmolThread, J.api.JmolNavigatorInterface); +Clazz.overrideMethod(c$, "set", +function(tm, vwr){ +this.tm = tm; +this.setViewer(vwr, "navigator"); +}, "JV.TransformManager,JV.Viewer"); +Clazz.overrideMethod(c$, "navigateList", +function(eval, list){ +this.setEval(eval); +this.navigationList = list; +this.iList = 0; +this.isStep = false; +this.stopped = false; +if (this.isJS) this.useTimeout = true; +this.run(); +}, "J.api.JmolScriptEvaluator,JU.Lst"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +var ptTemp = new JU.P3(); +while (this.isJS || this.vwr.isScriptExecuting()) switch (mode) { +case -1: +if (this.isStep) { +this.targetTime = this.startTime; +this.iStep = 0; +mode = (this.totalSteps <= 0 && this.isNavTo ? 1 : 0); +break; +}mode = 2; +break; +case 2: +this.nextList(this.navigationList.get(this.iList), ptTemp); +return; +case 0: +if (this.stopped || this.iStep >= this.totalSteps) { +mode = -2; +break; +}this.doNavStep(this.iStep++); +this.vwr.requestRepaintAndWait("navigatorThread"); +var sleepTime = (this.targetTime - System.currentTimeMillis()); +if (!this.runSleep(sleepTime, 0)) return; +mode = 0; +break; +case 1: +if (!this.runSleep(Clazz.floatToInt(this.floatSecondsTotal * 1000) - 30, -2)) return; +mode = -2; +break; +case -2: +if (this.isNavTo) { +if (!Float.isNaN(this.xTrans) || !Float.isNaN(this.yTrans)) this.navTranslatePercentOrTo(-1, this.xTrans, this.yTrans); +if (!Float.isNaN(this.depthPercent)) this.setNavigationDepthPercent(this.depthPercent); +}this.vwr.setInMotion(false); +this.vwr.moveUpdate(this.floatSecondsTotal); +if (!this.stopped && ++this.iList < this.navigationList.size()) { +mode = 2; +break; +}this.resumeEval(); +return; +} + +}, "~N"); +Clazz.defineMethod(c$, "nextList", +function(o, ptTemp){ +var tok = (o[0]).intValue(); +var seconds = (o[1]).floatValue(); +switch (tok) { +case 134217751: +var pt = o[2]; +if (seconds == 0) { +this.tm.setNavigatePt(pt); +this.vwr.moveUpdate(0); +return; +}this.navigateTo(seconds, null, NaN, pt, NaN, NaN, NaN); +break; +case 1073742084: +var path = o[2]; +var theta = o[3]; +var indexStart = (o[4])[0]; +var indexEnd = (o[4])[1]; +this.navigate(seconds, null, path, theta, indexStart, indexEnd); +break; +case 1112152078: +var pathGuide = (o[2]); +this.navigate(seconds, pathGuide, null, null, 0, 2147483647); +break; +case 528432: +var rotAxis = o[2]; +var degrees = (o[3]).floatValue(); +if (seconds == 0) { +this.navigateAxis(rotAxis, degrees); +this.vwr.moveUpdate(0); +return; +}this.navigateTo(seconds, rotAxis, degrees, null, NaN, NaN, NaN); +break; +case 4160: +case 268441090: +if (tok == 4160) { +this.tm.transformPt3f(o[2], ptTemp); +} else { +ptTemp.x = (o[2]).floatValue(); +ptTemp.y = (o[3]).floatValue(); +this.setNavPercent(ptTemp); +}if (seconds == 0) { +this.navTranslatePercentOrTo(-1, ptTemp.x, ptTemp.y); +this.vwr.moveUpdate(0); +return; +}this.navigateTo(seconds, null, NaN, null, NaN, ptTemp.x, ptTemp.y); +break; +case 554176526: +var percent = (o[2]).floatValue(); +this.navigateTo(seconds, null, NaN, null, percent, NaN, NaN); +break; +} +}, "~A,JU.P3"); +Clazz.defineMethod(c$, "navigate", +function(seconds, pathGuide, path, theta, indexStart, indexEnd){ +this.floatSecondsTotal = seconds; +this.setupNav(seconds, pathGuide, path, indexStart, indexEnd); +this.isStep = true; +this.run(); +}, "~N,~A,~A,~A,~N,~N"); +Clazz.defineMethod(c$, "navigateTo", +function(seconds, axis, degrees, center, depthPercent, xTrans, yTrans){ +this.floatSecondsTotal = seconds; +this.axis = axis; +this.degrees = degrees; +this.center = center; +this.depthPercent = depthPercent; +this.xTrans = xTrans; +this.yTrans = yTrans; +this.setupNavTo(); +this.isStep = true; +this.run(); +}, "~N,JU.V3,~N,JU.P3,~N,~N,~N"); +Clazz.defineMethod(c$, "setNavPercent", +function(pt1){ +this.tm.transformPt3f(this.tm.navigationCenter, this.tm.navigationOffset); +var x = pt1.x; +var y = pt1.y; +if (!Float.isNaN(x)) x = this.tm.width * x / 100 + (Float.isNaN(y) ? this.tm.navigationOffset.x : (this.tm.width / 2)); +if (!Float.isNaN(y)) y = this.tm.height * y / 100 + (Float.isNaN(x) ? this.tm.navigationOffset.y : this.tm.getNavPtHeight()); +pt1.x = x; +pt1.y = y; +}, "JU.P3"); +Clazz.defineMethod(c$, "doNavStep", +function(iStep){ +if (!this.isNavTo) { +this.tm.setNavigatePt(this.points[iStep]); +if (this.isPathGuide) { +this.alignZX(this.points[iStep], this.points[iStep + 1], this.pointGuides[iStep]); +}this.targetTime += this.frameTimeMillis; +return; +}this.tm.navigating = true; +var fStep = (iStep + 1) / this.totalSteps; +if (!Float.isNaN(this.degrees)) this.tm.navigateAxis(this.axis, this.degreeStep); +if (this.center != null) { +this.centerStart.add(this.aaStepCenter); +this.tm.setNavigatePt(this.centerStart); +}if (!Float.isNaN(this.xTrans) || !Float.isNaN(this.yTrans)) { +var x = NaN; +var y = NaN; +if (!Float.isNaN(this.xTrans)) x = this.xTransStart + this.xTransDelta * fStep; +if (!Float.isNaN(this.yTrans)) y = this.yTransStart + this.yTransDelta * fStep; +this.navTranslatePercentOrTo(-1, x, y); +}if (!Float.isNaN(this.depthPercent)) { +this.setNavigationDepthPercent(this.depthStart + this.depthDelta * fStep); +}this.tm.navigating = false; +this.targetTime += this.frameTimeMillis; +}, "~N"); +Clazz.defineMethod(c$, "setupNavTo", +function(){ +this.isNavTo = true; +if (!this.vwr.haveDisplay) this.floatSecondsTotal = 0; +var fps = 30; +this.totalSteps = Clazz.floatToInt(this.floatSecondsTotal * fps) - 1; +if (this.floatSecondsTotal > 0) this.vwr.setInMotion(true); +if (this.degrees == 0) this.degrees = NaN; +if (this.totalSteps > 0) { +this.frameTimeMillis = Clazz.doubleToInt(1000 / fps); +this.depthStart = this.tm.navigationDepthPercent; +this.depthDelta = this.depthPercent - this.depthStart; +this.xTransStart = this.tm.navigationOffset.x; +this.xTransDelta = this.xTrans - this.xTransStart; +this.yTransStart = this.tm.navigationOffset.y; +this.yTransDelta = this.yTrans - this.yTransStart; +this.degreeStep = this.degrees / (this.totalSteps + 1); +this.aaStepCenter = JU.V3.newVsub(this.center == null ? this.tm.navigationCenter : this.center, this.tm.navigationCenter); +this.aaStepCenter.scale(1 / (this.totalSteps + 1)); +this.centerStart = JU.P3.newP(this.tm.navigationCenter); +}}); +Clazz.defineMethod(c$, "setupNav", +function(seconds, pathGuide, path, indexStart, indexEnd){ +this.isNavTo = false; +if (seconds <= 0) seconds = 2; +if (!this.vwr.haveDisplay) seconds = 0; +this.isPathGuide = (pathGuide != null); +var nSegments = Math.min((this.isPathGuide ? pathGuide.length : path.length) - 1, indexEnd); +if (!this.isPathGuide) while (nSegments > 0 && path[nSegments] == null) nSegments--; + +nSegments -= indexStart; +if (nSegments < 1) return; +var nPer = Clazz.doubleToInt(Math.floor(10 * seconds)); +var nSteps = nSegments * nPer + 1; +this.points = new Array(nSteps + 2); +this.pointGuides = new Array(this.isPathGuide ? nSteps + 2 : 0); +for (var i = 0; i < nSegments; i++) { +var iPrev = Math.max(i - 1, 0) + indexStart; +var pt = i + indexStart; +var iNext = Math.min(i + 1, nSegments) + indexStart; +var iNext2 = Math.min(i + 2, nSegments) + indexStart; +var iNext3 = Math.min(i + 3, nSegments) + indexStart; +if (this.isPathGuide) { +JU.GData.getHermiteList(7, pathGuide[iPrev][0], pathGuide[pt][0], pathGuide[iNext][0], pathGuide[iNext2][0], pathGuide[iNext3][0], this.points, i * nPer, nPer + 1, true); +JU.GData.getHermiteList(7, pathGuide[iPrev][1], pathGuide[pt][1], pathGuide[iNext][1], pathGuide[iNext2][1], pathGuide[iNext3][1], this.pointGuides, i * nPer, nPer + 1, true); +} else { +JU.GData.getHermiteList(7, path[iPrev], path[pt], path[iNext], path[iNext2], path[iNext3], this.points, i * nPer, nPer + 1, true); +}} +this.vwr.setInMotion(true); +this.frameTimeMillis = Clazz.floatToInt(1000 / this.tm.navFps); +this.totalSteps = nSteps; +}, "~N,~A,~A,~N,~N"); +Clazz.defineMethod(c$, "alignZX", +function(pt0, pt1, ptVectorWing){ +var pt0s = new JU.P3(); +var pt1s = new JU.P3(); +var m = this.tm.matrixRotate; +m.rotate2(pt0, pt0s); +m.rotate2(pt1, pt1s); +var vPath = JU.V3.newVsub(pt0s, pt1s); +var v = JU.V3.new3(0, 0, 1); +var angle = vPath.angle(v); +v.cross(vPath, v); +if (angle != 0) this.tm.navigateAxis(v, (angle * 57.29577951308232)); +m.rotate2(pt0, pt0s); +var pt2 = JU.P3.newP(ptVectorWing); +pt2.add(pt0); +var pt2s = new JU.P3(); +m.rotate2(pt2, pt2s); +vPath.sub2(pt2s, pt0s); +vPath.z = 0; +v.set(-1, 0, 0); +angle = vPath.angle(v); +if (vPath.y < 0) angle = -angle; +v.set(0, 0, 1); +if (angle != 0) this.tm.navigateAxis(v, (angle * 57.29577951308232)); +m.rotate2(pt0, pt0s); +m.rotate2(pt1, pt1s); +m.rotate2(ptVectorWing, pt2s); +}, "JU.P3,JU.P3,JU.P3"); +Clazz.overrideMethod(c$, "zoomByFactor", +function(factor, x, y){ +var navZ = this.tm.navZ; +if (navZ > 0) { +navZ /= factor; +if (navZ < 5) navZ = -5; + else if (navZ > 200) navZ = 200; +} else if (navZ == 0) { +navZ = (factor < 1 ? 5 : -5); +} else { +navZ *= factor; +if (navZ > -5) navZ = 5; + else if (navZ < -200) navZ = -200; +}this.tm.navZ = navZ; +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "calcNavigationPoint", +function(){ +this.calcNavigationDepthPercent(); +if (!this.tm.navigating && this.tm.navMode != 1) { +if (this.tm.navigationDepthPercent < 100 && this.tm.navigationDepthPercent > 0 && !Float.isNaN(this.tm.previousX) && this.tm.previousX == this.tm.fixedTranslation.x && this.tm.previousY == this.tm.fixedTranslation.y && this.tm.navMode != -1) this.tm.navMode = 3; + else this.tm.navMode = 0; +}switch (this.tm.navMode) { +case 1: +this.tm.navigationOffset.set(this.tm.width / 2, this.tm.getNavPtHeight(), this.tm.referencePlaneOffset); +this.tm.zoomFactor = 3.4028235E38; +this.tm.calcCameraFactors(); +this.tm.calcTransformMatrix(); +this.newNavigationCenter(); +break; +case 0: +case -1: +this.tm.fixedRotationOffset.setT(this.tm.fixedTranslation); +this.newNavigationCenter(); +break; +case 2: +this.newNavigationCenter(); +break; +case -2: +case 3: +var pt1 = this.tm.matrixTransform.rotTrans2(this.tm.navigationCenter, new JU.P3()); +var z = pt1.z; +this.tm.matrixTransform.rotTrans2(this.tm.fixedRotationCenter, pt1); +this.tm.modelCenterOffset = this.tm.referencePlaneOffset + (pt1.z - z); +this.tm.calcCameraFactors(); +this.tm.calcTransformMatrix(); +break; +case 4: +this.tm.navigationOffset.z = this.tm.referencePlaneOffset; +this.tm.unTransformPoint(this.tm.navigationOffset, this.tm.navigationCenter); +break; +} +this.tm.matrixTransform.rotTrans2(this.tm.navigationCenter, this.tm.navigationShiftXY); +if (this.vwr.getBoolean(603979890)) { +var pt = JU.P3.newP(this.tm.navigationCenter); +this.vwr.toUnitCell(this.tm.navigationCenter, null); +if (pt.distance(this.tm.navigationCenter) > 0.01) { +this.tm.matrixTransform.rotTrans2(this.tm.navigationCenter, pt); +var dz = this.tm.navigationShiftXY.z - pt.z; +this.tm.modelCenterOffset += dz; +this.tm.calcCameraFactors(); +this.tm.calcTransformMatrix(); +this.tm.matrixTransform.rotTrans2(this.tm.navigationCenter, this.tm.navigationShiftXY); +}}this.tm.transformPt3f(this.tm.fixedRotationCenter, this.tm.fixedTranslation); +this.tm.fixedRotationOffset.setT(this.tm.fixedTranslation); +this.tm.previousX = this.tm.fixedTranslation.x; +this.tm.previousY = this.tm.fixedTranslation.y; +this.tm.transformPt3f(this.tm.navigationCenter, this.tm.navigationOffset); +this.tm.navigationOffset.z = this.tm.referencePlaneOffset; +this.tm.navMode = 0; +this.calcNavSlabAndDepthValues(); +}); +Clazz.defineMethod(c$, "calcNavSlabAndDepthValues", +function(){ +this.tm.calcSlabAndDepthValues(); +if (this.tm.slabEnabled) { +this.tm.slabValue = (this.tm.mode == 1 ? -100 : 0) + Clazz.floatToInt(this.tm.referencePlaneOffset - this.tm.navigationSlabOffset); +if (this.tm.zSlabPercentSetting == this.tm.zDepthPercentSetting) this.tm.zSlabValue = this.tm.slabValue; +}}); +Clazz.defineMethod(c$, "newNavigationCenter", +function(){ +this.tm.mode = this.tm.defaultMode; +var pt = new JU.P3(); +this.tm.transformPt3f(this.tm.fixedRotationCenter, pt); +pt.x -= this.tm.navigationOffset.x; +pt.y -= this.tm.navigationOffset.y; +var f = -this.tm.getPerspectiveFactor(pt.z); +pt.x /= f; +pt.y /= f; +pt.z = this.tm.referencePlaneOffset; +this.tm.matrixTransformInv.rotTrans2(pt, this.tm.navigationCenter); +this.tm.mode = 1; +}); +Clazz.overrideMethod(c$, "setNavigationOffsetRelative", +function(){ +if (this.tm.navigationDepthPercent < 0 && this.tm.navZ > 0 || this.tm.navigationDepthPercent > 100 && this.tm.navZ < 0) { +this.tm.navZ = 0; +}this.tm.rotateXRadians((0.017453292519943295 * -0.02 * this.tm.navY), null); +this.tm.rotateYRadians((0.017453292519943295 * .02 * this.tm.navX), null); +var pt = this.tm.navigationCenter; +var pts = new JU.P3(); +this.tm.transformPt3f(pt, pts); +pts.z += this.tm.navZ; +this.tm.unTransformPoint(pts, pt); +this.tm.setNavigatePt(pt); +}); +Clazz.overrideMethod(c$, "navigateKey", +function(keyCode, modifiers){ +var key = null; +var value = 0; +if (this.tm.mode != 1) return; +if (keyCode == 0) { +this.nHits = 0; +this.multiplier = 1; +if (!this.tm.navigating) return; +this.tm.navigating = false; +return; +}this.nHits++; +if (this.nHits % 10 == 0) this.multiplier *= (this.multiplier == 4 ? 1 : 2); +var isShiftKey = ((modifiers & 1) > 0); +var isAltKey = ((modifiers & 8) > 0); +var isCtrlKey = ((modifiers & 2) > 0); +var speed = this.vwr.getFloat(570425374) * (isCtrlKey ? 10 : 1); +switch (keyCode) { +case 46: +this.tm.navX = this.tm.navY = this.tm.navZ = 0; +this.tm.homePosition(true); +return; +case 32: +if (!this.tm.navOn) return; +this.tm.navX = this.tm.navY = this.tm.navZ = 0; +return; +case 38: +if (this.tm.navOn) { +if (isAltKey) { +this.tm.navY += this.multiplier; +value = this.tm.navY; +key = "navY"; +} else { +this.tm.navZ += this.multiplier; +value = this.tm.navZ; +key = "navZ"; +}break; +}if (isShiftKey) { +this.tm.navigationOffset.y -= 2 * this.multiplier; +this.tm.navMode = 2; +break; +}if (isAltKey) { +this.tm.rotateXRadians((0.017453292519943295 * -0.2 * this.multiplier), null); +this.tm.navMode = 3; +break; +}this.tm.modelCenterOffset -= speed * (this.vwr.getBoolean(603979890) ? 1 : this.multiplier); +this.tm.navMode = 4; +break; +case 40: +if (this.tm.navOn) { +if (isAltKey) { +this.tm.navY -= this.multiplier; +value = this.tm.navY; +key = "navY"; +} else { +this.tm.navZ -= this.multiplier; +value = this.tm.navZ; +key = "navZ"; +}break; +}if (isShiftKey) { +this.tm.navigationOffset.y += 2 * this.multiplier; +this.tm.navMode = 2; +break; +}if (isAltKey) { +this.tm.rotateXRadians((0.017453292519943295 * .2 * this.multiplier), null); +this.tm.navMode = 3; +break; +}this.tm.modelCenterOffset += speed * (this.vwr.getBoolean(603979890) ? 1 : this.multiplier); +this.tm.navMode = 4; +break; +case 37: +if (this.tm.navOn) { +this.tm.navX -= this.multiplier; +value = this.tm.navX; +key = "navX"; +break; +}if (isShiftKey) { +this.tm.navigationOffset.x -= 2 * this.multiplier; +this.tm.navMode = 2; +break; +}this.tm.rotateYRadians((0.017453292519943295 * 3 * -0.2 * this.multiplier), null); +this.tm.navMode = 3; +break; +case 39: +if (this.tm.navOn) { +this.tm.navX += this.multiplier; +value = this.tm.navX; +key = "navX"; +break; +}if (isShiftKey) { +this.tm.navigationOffset.x += 2 * this.multiplier; +this.tm.navMode = 2; +break; +}this.tm.rotateYRadians((0.017453292519943295 * 3 * .2 * this.multiplier), null); +this.tm.navMode = 3; +break; +default: +this.tm.navigating = false; +this.tm.navMode = 0; +return; +} +if (key != null) this.vwr.g.setF(key, value); +this.tm.navigating = true; +this.tm.finalizeTransformParameters(); +}, "~N,~N"); +Clazz.overrideMethod(c$, "setNavigationDepthPercent", +function(percent){ +this.vwr.g.setF("navigationDepth", percent); +this.tm.calcCameraFactors(); +this.tm.modelCenterOffset = this.tm.referencePlaneOffset - (1 - percent / 50) * this.tm.modelRadiusPixels; +this.tm.calcCameraFactors(); +this.tm.navMode = -1; +}, "~N"); +Clazz.defineMethod(c$, "calcNavigationDepthPercent", +function(){ +this.tm.calcCameraFactors(); +this.tm.navigationDepthPercent = (this.tm.modelRadiusPixels == 0 ? 50 : 50 * (1 + (this.tm.modelCenterOffset - this.tm.referencePlaneOffset) / this.tm.modelRadiusPixels)); +}); +Clazz.overrideMethod(c$, "getNavigationState", +function(){ +return "# navigation state;\nnavigate 0 center " + JU.Escape.eP(this.tm.navigationCenter) + ";\nnavigate 0 translate " + this.tm.getNavigationOffsetPercent('X') + " " + this.tm.getNavigationOffsetPercent('Y') + ";\nset navigationDepth " + this.tm.navigationDepthPercent + ";\nset navigationSlab " + this.getNavigationSlabOffsetPercent() + ";\n\n"; +}); +Clazz.defineMethod(c$, "getNavigationSlabOffsetPercent", +function(){ +this.tm.calcCameraFactors(); +return 50 * this.tm.navigationSlabOffset / this.tm.modelRadiusPixels; +}); +Clazz.overrideMethod(c$, "navigateAxis", +function(rotAxis, degrees){ +if (degrees == 0) return; +this.tm.rotateAxisAngle(rotAxis, (degrees / 57.29577951308232)); +this.tm.navMode = 3; +this.tm.navigating = true; +this.tm.finalizeTransformParameters(); +this.tm.navigating = false; +}, "JU.V3,~N"); +Clazz.overrideMethod(c$, "navTranslatePercentOrTo", +function(seconds, x, y){ +var pt1 = JU.P3.new3(x, y, 0); +if (seconds >= 0) this.setNavPercent(pt1); +if (!Float.isNaN(pt1.x)) this.tm.navigationOffset.x = pt1.x; +if (!Float.isNaN(pt1.y)) this.tm.navigationOffset.y = pt1.y; +this.tm.navMode = 2; +this.tm.navigating = true; +this.tm.finalizeTransformParameters(); +this.tm.navigating = false; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "oops", +function(e){ +Clazz.superCall(this, J.navigate.Navigator, "oops", [e]); +this.tm.navigating = false; +}, "Exception"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/popup/GenericPopup.js b/config/plugins/visualizations/jmol/static/j2s/J/popup/GenericPopup.js new file mode 100755 index 000000000000..c47bb97124d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/popup/GenericPopup.js @@ -0,0 +1,375 @@ +Clazz.declarePackage("J.popup"); +Clazz.load(["J.api.GenericMenuInterface", "java.util.Hashtable", "JU.Lst"], "J.popup.GenericPopup", ["java.util.StringTokenizer", "JU.PT", "$.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.helper = null; +this.strMenuStructure = null; +this.allowSignedFeatures = false; +this.isJS = false; +this.isApplet = false; +this.isSigned = false; +this.isWebGL = false; +this.thisx = 0; +this.thisy = 0; +this.isTainted = true; +this.menuName = null; +this.popupMenu = null; +this.thisPopup = null; +this.htCheckbox = null; +this.buttonGroup = null; +this.currentMenuItemId = null; +this.htMenus = null; +this.SignedOnly = null; +this.updatingForShow = false; +Clazz.instantialize(this, arguments);}, J.popup, "GenericPopup", null, J.api.GenericMenuInterface); +Clazz.prepareFields (c$, function(){ +this.htCheckbox = new java.util.Hashtable(); +this.htMenus = new java.util.Hashtable(); +this.SignedOnly = new JU.Lst(); +}); +Clazz.defineMethod(c$, "appCheckItem", +function(item, newMenu){ +}, "~S,J.api.SC"); +Clazz.defineMethod(c$, "appCheckSpecialMenu", +function(item, subMenu, word){ +}, "~S,J.api.SC,~S"); +Clazz.defineMethod(c$, "initSwing", +function(title, bundle, applet, isJS, isSigned, isWebGL){ +this.isJS = isJS; +this.isApplet = (applet != null); +this.isSigned = isSigned; +this.isWebGL = isWebGL; +this.allowSignedFeatures = (!this.isApplet || isSigned); +this.menuName = title; +this.popupMenu = this.helper.menuCreatePopup(title, applet); +this.thisPopup = this.popupMenu; +this.htMenus.put(title, this.popupMenu); +this.addMenuItems("", title, this.popupMenu, bundle); +}, "~S,J.popup.PopupResource,~O,~B,~B,~B"); +Clazz.defineMethod(c$, "addMenuItems", +function(parentId, key, menu, popupResourceBundle){ +var id = parentId + "." + key; +var value = popupResourceBundle.getStructure(key); +if (JU.Logger.debugging) JU.Logger.debug(id + " --- " + value); +if (value == null) { +this.menuCreateItem(menu, "#" + key, "", ""); +return; +}var st = new java.util.StringTokenizer(value); +var item; +while (value.indexOf("@") >= 0) { +var s = ""; +while (st.hasMoreTokens()) s += " " + ((item = st.nextToken()).startsWith("@") ? popupResourceBundle.getStructure(item) : item); + +value = s.substring(1); +st = new java.util.StringTokenizer(value); +} +while (st.hasMoreTokens()) { +item = st.nextToken(); +if (!this.checkKey(item)) continue; +if ("-".equals(item)) { +this.menuAddSeparator(menu); +this.helper.menuAddButtonGroup(null); +continue; +}if (",".equals(item)) { +this.menuAddSeparator(menu); +continue; +}var label = popupResourceBundle.getWord(item); +var newItem = null; +var script = ""; +var isCB = false; +label = this.appFixLabel(label == null ? item : label); +if (label.equals("null")) { +continue; +}if (item.indexOf("Menu") >= 0) { +if (item.indexOf("more") < 0) this.helper.menuAddButtonGroup(null); +var subMenu = this.menuNewSubMenu(label, id + "." + item); +this.menuAddSubMenu(menu, subMenu); +this.addMenu(id, item, subMenu, label, popupResourceBundle); +newItem = subMenu; +} else if (item.endsWith("Checkbox") || (isCB = (item.endsWith("CB") || item.endsWith("RD")))) { +script = popupResourceBundle.getStructure(item); +var basename = item.substring(0, item.length - (!isCB ? 8 : 2)); +var isRadio = (isCB && item.endsWith("RD")); +if (script == null || script.length == 0 && !isRadio) script = "set " + basename + " T/F"; +newItem = this.menuCreateCheckboxItem(menu, label, basename + ":" + script, id + "." + item, false, isRadio); +this.rememberCheckbox(basename, newItem); +if (isRadio) this.helper.menuAddButtonGroup(newItem); +} else { +script = popupResourceBundle.getStructure(item); +if (script == null) script = item; +newItem = this.menuCreateItem(menu, label, script, id + "." + item); +}this.htMenus.put(item, newItem); +if (item.startsWith("SIGNED")) { +this.SignedOnly.addLast(newItem); +if (!this.allowSignedFeatures) this.menuEnable(newItem, false); +}this.appCheckItem(item, newItem); +} +}, "~S,~S,J.api.SC,J.popup.PopupResource"); +Clazz.defineMethod(c$, "addMenu", +function(id, item, subMenu, label, popupResourceBundle){ +if (item.indexOf("Computed") < 0) this.addMenuItems(id, item, subMenu, popupResourceBundle); +this.appCheckSpecialMenu(item, subMenu, label); +}, "~S,~S,J.api.SC,~S,J.popup.PopupResource"); +Clazz.defineMethod(c$, "updateSignedAppletItems", +function(){ +for (var i = this.SignedOnly.size(); --i >= 0; ) this.menuEnable(this.SignedOnly.get(i), this.allowSignedFeatures); + +}); +Clazz.defineMethod(c$, "checkKey", +function(key){ +return (key.indexOf(this.isApplet ? "JAVA" : "APPLET") < 0 && (!this.isWebGL || key.indexOf("NOGL") < 0)); +}, "~S"); +Clazz.defineMethod(c$, "rememberCheckbox", +function(key, checkboxMenuItem){ +this.htCheckbox.put(key + "::" + this.htCheckbox.size(), checkboxMenuItem); +}, "~S,J.api.SC"); +Clazz.defineMethod(c$, "updateButton", +function(b, entry, script){ +var ret = Clazz.newArray(-1, [entry]); +var icon = this.getEntryIcon(ret); +entry = ret[0]; +b.init(entry, icon, script, this.thisPopup); +this.isTainted = true; +}, "J.api.SC,~S,~S"); +Clazz.defineMethod(c$, "getEntryIcon", +function(ret){ +var entry = ret[0]; +if (!entry.startsWith("<")) return null; +var pt = entry.indexOf(">"); +ret[0] = entry.substring(pt + 1); +var fileName = entry.substring(1, pt); +return this.getImageIcon(fileName); +}, "~A"); +Clazz.defineMethod(c$, "addMenuItem", +function(menuItem, entry){ +return this.menuCreateItem(menuItem, entry, "", null); +}, "J.api.SC,~S"); +Clazz.defineMethod(c$, "menuSetLabel", +function(m, entry){ +if (m == null) return; +m.setText(entry); +this.isTainted = true; +}, "J.api.SC,~S"); +Clazz.defineMethod(c$, "menuClickCallback", +function(source, script){ +this.doMenuClickCallback(source, script); +}, "J.api.SC,~S"); +Clazz.defineMethod(c$, "doMenuClickCallback", +function(source, script){ +this.appRestorePopupMenu(); +if (script == null || script.length == 0) return; +if (script.equals("MAIN")) { +this.show(this.thisx, this.thisy, true); +return; +}var id = this.menuGetId(source); +if (id != null) { +script = this.getScriptForCallback(source, id, script); +this.currentMenuItemId = id; +}if (script != null) this.appRunScript(script); +}, "J.api.SC,~S"); +Clazz.defineMethod(c$, "menuCheckBoxCallback", +function(source){ +this.doMenuCheckBoxCallback(source); +}, "J.api.SC"); +Clazz.defineMethod(c$, "doMenuCheckBoxCallback", +function(source){ +this.appRestorePopupMenu(); +var isSelected = source.isSelected(); +var what = source.getActionCommand(); +this.runCheckBoxScript(source, what, isSelected); +this.appUpdateSpecialCheckBoxValue(source, what, isSelected); +this.isTainted = true; +var id = this.menuGetId(source); +if (id != null) { +this.currentMenuItemId = id; +}}, "J.api.SC"); +Clazz.defineMethod(c$, "runCheckBoxScript", +function(item, what, TF){ +if (!item.isEnabled()) return; +if (what.indexOf("##") < 0) { +var pt = what.indexOf(":"); +if (pt < 0) { +JU.Logger.error("check box " + item + " IS " + what); +return; +}var basename = what.substring(0, pt); +if (this.appRunSpecialCheckBox(item, basename, what, TF)) return; +what = what.substring(pt + 1); +if ((pt = what.indexOf("|")) >= 0) what = (TF ? what.substring(0, pt) : what.substring(pt + 1)).trim(); +what = JU.PT.rep(what, "T/F", (TF ? " TRUE" : " FALSE")); +}this.appRunScript(what); +}, "J.api.SC,~S,~B"); +Clazz.defineMethod(c$, "menuCreateItem", +function(menu, entry, script, id){ +var item = this.helper.getMenuItem(entry); +item.addActionListener(this.helper); +return this.newMenuItem(item, menu, entry, script, id); +}, "J.api.SC,~S,~S,~S"); +Clazz.defineMethod(c$, "menuCreateCheckboxItem", +function(menu, entry, basename, id, state, isRadio){ +var jmi = (isRadio ? this.helper.getRadio(entry) : this.helper.getCheckBox(entry)); +jmi.setSelected(state); +jmi.addItemListener(this.helper); +return this.newMenuItem(jmi, menu, entry, basename, id); +}, "J.api.SC,~S,~S,~S,~B,~B"); +Clazz.defineMethod(c$, "menuAddSeparator", +function(menu){ +menu.add(this.helper.getMenuItem(null)); +this.isTainted = true; +}, "J.api.SC"); +Clazz.defineMethod(c$, "menuNewSubMenu", +function(entry, id){ +var jm = this.helper.getMenu(entry); +jm.addMouseListener(this.helper); +this.updateButton(jm, entry, null); +jm.setName(id); +jm.setAutoscrolls(true); +return jm; +}, "~S,~S"); +Clazz.defineMethod(c$, "menuRemoveAll", +function(menu, indexFrom){ +if (indexFrom <= 0) menu.removeAll(); + else for (var i = menu.getComponentCount(); --i >= indexFrom; ) menu.remove(i); + +this.isTainted = true; +}, "J.api.SC,~N"); +Clazz.defineMethod(c$, "newMenuItem", +function(item, menu, text, script, id){ +this.updateButton(item, text, script); +item.addMouseListener(this.helper); +item.setName(id == null ? menu.getName() + "." : id); +this.menuAddItem(menu, item); +return item; +}, "J.api.SC,J.api.SC,~S,~S,~S"); +Clazz.defineMethod(c$, "setText", +function(item, text){ +var m = this.htMenus.get(item); +if (m != null) m.setText(text); +return m; +}, "~S,~S"); +Clazz.defineMethod(c$, "menuAddItem", +function(menu, item){ +menu.add(item); +this.isTainted = true; +}, "J.api.SC,J.api.SC"); +Clazz.defineMethod(c$, "menuAddSubMenu", +function(menu, subMenu){ +subMenu.addMouseListener(this.helper); +this.menuAddItem(menu, subMenu); +}, "J.api.SC,J.api.SC"); +Clazz.defineMethod(c$, "menuEnable", +function(component, enable){ +if (component == null || component.isEnabled() == enable) return; +component.setEnabled(enable); +}, "J.api.SC,~B"); +Clazz.defineMethod(c$, "menuGetId", +function(menu){ +return menu.getName(); +}, "J.api.SC"); +Clazz.defineMethod(c$, "menuSetAutoscrolls", +function(menu){ +menu.setAutoscrolls(true); +this.isTainted = true; +}, "J.api.SC"); +Clazz.defineMethod(c$, "menuGetListPosition", +function(item){ +var p = item.getParent(); +var i; +for (i = p.getComponentCount(); --i >= 0; ) if (this.helper.getSwingComponent(p.getComponent(i)) === item) break; + +return i; +}, "J.api.SC"); +Clazz.defineMethod(c$, "show", +function(x, y, doPopup){ +this.appUpdateForShow(); +this.updateCheckBoxesForShow(); +if (doPopup) this.menuShowPopup(this.popupMenu, this.thisx, this.thisy); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "updateCheckBoxesForShow", +function(){ +for (var entry, $entry = this.htCheckbox.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var item = entry.getValue(); +var basename = key.substring(0, key.indexOf(":")); +var b = this.appGetBooleanProperty(basename); +var updateShow = this.updatingForShow; +this.updatingForShow = true; +if (item.isSelected() != b) { +item.setSelected(b); +this.isTainted = true; +}this.updatingForShow = updateShow; +} +}); +Clazz.overrideMethod(c$, "jpiGetMenuAsString", +function(title){ +this.appUpdateForShow(); +var pt = title.indexOf("|"); +if (pt >= 0) { +var type = title.substring(pt); +title = title.substring(0, pt); +if (type.indexOf("current") >= 0) { +var sb = new JU.SB(); +var menu = this.htMenus.get(this.menuName); +this.menuGetAsText(sb, 0, menu, "PopupMenu"); +return sb.toString(); +}}return this.appGetMenuAsString(title); +}, "~S"); +Clazz.defineMethod(c$, "appGetMenuAsString", +function(title){ +return null; +}, "~S"); +Clazz.defineMethod(c$, "menuGetAsText", +function(sb, level, menu, menuName){ +var name = menuName; +var subMenus = menu.getComponents(); +var flags = null; +var script = null; +var text = null; +var key = 'S'; +for (var i = 0; i < subMenus.length; i++) { +var source = this.helper.getSwingComponent(subMenus[i]); +var type = this.helper.getItemType(source); +switch (type) { +case 4: +key = 'M'; +name = source.getName(); +flags = "enabled:" + source.isEnabled(); +text = source.getText(); +script = null; +break; +case 0: +key = 'S'; +flags = script = text = null; +break; +default: +key = 'I'; +flags = "enabled:" + source.isEnabled(); +if (type == 2 || type == 3) flags += ";checked:" + source.isSelected(); +script = this.getScriptForCallback(source, source.getName(), source.getActionCommand()); +name = source.getName(); +text = source.getText(); +break; +} +J.popup.GenericPopup.addItemText(sb, key, level, name, text, script, flags); +if (type == 2) this.menuGetAsText(sb, level + 1, this.helper.getSwingComponent(source.getPopupMenu()), name); +} +}, "JU.SB,~N,J.api.SC,~S"); +c$.addItemText = Clazz.defineMethod(c$, "addItemText", +function(sb, type, level, name, label, script, flags){ +sb.appendC(type).appendI(level).appendC('\t').append(name); +if (label == null) { +sb.append(".\n"); +return; +}sb.append("\t").append(label).append("\t").append(script == null || script.length == 0 ? "-" : script).append("\t").append(flags).append("\n"); +}, "JU.SB,~S,~N,~S,~S,~S,~S"); +c$.convertToMegabytes = Clazz.defineMethod(c$, "convertToMegabytes", +function(num){ +if (num <= 9223372036854251519) num += 524288; +return (Clazz.doubleToInt(num / (1048576))); +}, "~N"); +Clazz.overrideMethod(c$, "jpiDispose", +function(){ +this.popupMenu = this.thisPopup = null; +this.helper.dispose(this.popupMenu); +this.helper = null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/popup/JmolGenericPopup.js b/config/plugins/visualizations/jmol/static/j2s/J/popup/JmolGenericPopup.js new file mode 100755 index 000000000000..1381f1acb2d2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/popup/JmolGenericPopup.js @@ -0,0 +1,76 @@ +Clazz.declarePackage("J.popup"); +Clazz.load(["J.popup.GenericPopup", "java.util.Properties"], "J.popup.JmolGenericPopup", ["J.i18n.GT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.frankPopup = null; +this.nFrankList = 0; +this.vwr = null; +this.menuText = null; +Clazz.instantialize(this, arguments);}, J.popup, "JmolGenericPopup", J.popup.GenericPopup); +Clazz.prepareFields (c$, function(){ +this.menuText = new java.util.Properties(); +}); +Clazz.overrideMethod(c$, "jpiInitialize", +function(vwr, menu){ +var doTranslate = J.i18n.GT.setDoTranslate(true); +var bundle = this.getBundle(menu); +this.initialize(vwr, bundle, bundle.getMenuName()); +J.i18n.GT.setDoTranslate(doTranslate); +}, "J.api.PlatformViewer,~S"); +Clazz.defineMethod(c$, "initialize", +function(vwr, bundle, title){ +this.vwr = vwr; +this.initSwing(title, bundle, vwr.isJSNoAWT ? vwr.html5Applet : null, vwr.isJSNoAWT, vwr.getBooleanProperty("_signedApplet"), vwr.isWebGL); +}, "JV.Viewer,J.popup.PopupResource,~S"); +Clazz.overrideMethod(c$, "jpiShow", +function(x, y){ +if (!this.vwr.haveDisplay) return; +this.thisx = x; +this.thisy = y; +this.show(x, y, false); +if (x < 0 && this.showFrankMenu()) return; +this.appRestorePopupMenu(); +this.menuShowPopup(this.popupMenu, this.thisx, this.thisy); +}, "~N,~N"); +Clazz.defineMethod(c$, "showFrankMenu", +function(){ +return true; +}); +Clazz.defineMethod(c$, "jpiDispose", +function(){ +this.vwr = null; +Clazz.superCall(this, J.popup.JmolGenericPopup, "jpiDispose", []); +}); +Clazz.overrideMethod(c$, "jpiGetMenuAsObject", +function(){ +return this.popupMenu; +}); +Clazz.overrideMethod(c$, "appFixLabel", +function(label){ +return label; +}, "~S"); +Clazz.overrideMethod(c$, "appGetBooleanProperty", +function(name){ +return this.vwr.getBooleanProperty(name); +}, "~S"); +Clazz.overrideMethod(c$, "appRunSpecialCheckBox", +function(item, basename, script, TF){ +if (this.appGetBooleanProperty(basename) == TF) return true; +if (basename.indexOf("mk") < 0 && !basename.endsWith("P!")) return false; +if (basename.indexOf("mk") >= 0 || basename.indexOf("??") >= 0) { +script = this.getUnknownCheckBoxScriptToRun(item, basename, script, TF); +} else { +if (!TF) return true; +script = "set picking " + basename.substring(0, basename.length - 2); +}if (script != null) this.appRunScript(script); +return true; +}, "J.api.SC,~S,~S,~B"); +Clazz.overrideMethod(c$, "appRestorePopupMenu", +function(){ +this.thisPopup = this.popupMenu; +}); +Clazz.overrideMethod(c$, "appRunScript", +function(script){ +this.vwr.evalStringGUI(script); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/popup/JmolPopup.js b/config/plugins/visualizations/jmol/static/j2s/J/popup/JmolPopup.js new file mode 100755 index 000000000000..34fb53f4e928 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/popup/JmolPopup.js @@ -0,0 +1,712 @@ +Clazz.declarePackage("J.popup"); +Clazz.load(["J.popup.JmolGenericPopup", "JU.Lst"], "J.popup.JmolPopup", ["java.util.Arrays", "$.Hashtable", "JU.PT", "J.i18n.GT", "JM.Group", "J.popup.MainPopupResourceBundle", "JU.Elements", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.updateMode = 0; +this.titleWidthMax = 20; +this.nullModelSetName = null; +this.modelSetName = null; +this.modelSetFileName = null; +this.modelSetRoot = null; +this.currentFrankId = null; +this.configurationSelected = ""; +this.altlocs = null; +this.frankList = null; +this.modelSetInfo = null; +this.modelInfo = null; +this.NotPDB = null; +this.PDBOnly = null; +this.FileUnitOnly = null; +this.FileMolOnly = null; +this.UnitcellOnly = null; +this.SingleModelOnly = null; +this.FramesOnly = null; +this.VibrationOnly = null; +this.Special = null; +this.SymmetryOnly = null; +this.ChargesOnly = null; +this.TemperatureOnly = null; +this.fileHasUnitCell = false; +this.haveBFactors = false; +this.haveCharges = false; +this.isLastFrame = false; +this.isMultiConfiguration = false; +this.isMultiFrame = false; +this.isPDB = false; +this.hasSymmetry = false; +this.isUnitCell = false; +this.isVibration = false; +this.isZapped = false; +this.modelIndex = 0; +this.modelCount = 0; +this.ac = 0; +this.group3List = null; +this.group3Counts = null; +this.cnmrPeaks = null; +this.hnmrPeaks = null; +this.noZapped = null; +Clazz.instantialize(this, arguments);}, J.popup, "JmolPopup", J.popup.JmolGenericPopup); +Clazz.prepareFields (c$, function(){ +this.frankList = new Array(10); +this.NotPDB = new JU.Lst(); +this.PDBOnly = new JU.Lst(); +this.FileUnitOnly = new JU.Lst(); +this.FileMolOnly = new JU.Lst(); +this.UnitcellOnly = new JU.Lst(); +this.SingleModelOnly = new JU.Lst(); +this.FramesOnly = new JU.Lst(); +this.VibrationOnly = new JU.Lst(); +this.Special = new JU.Lst(); +this.SymmetryOnly = new JU.Lst(); +this.ChargesOnly = new JU.Lst(); +this.TemperatureOnly = new JU.Lst(); +this.noZapped = Clazz.newArray(-1, ["surfaceMenu", "measureMenu", "pickingMenu", "computationMenu", "SIGNEDJAVAcaptureMenuSPECIAL"]); +}); +Clazz.defineMethod(c$, "jpiDispose", +function(){ +this.helper.menuClearListeners(this.frankPopup); +this.frankPopup = null; +Clazz.superCall(this, J.popup.JmolPopup, "jpiDispose", []); +}); +Clazz.overrideMethod(c$, "getBundle", +function(menu){ +return new J.popup.MainPopupResourceBundle(this.strMenuStructure = menu, this.menuText); +}, "~S"); +Clazz.overrideMethod(c$, "showFrankMenu", +function(){ +this.getViewerData(); +this.setFrankMenu(this.currentMenuItemId); +this.thisx = -this.thisx - 50; +if (this.nFrankList > 1) { +this.thisy -= this.nFrankList * 20; +this.menuShowPopup(this.frankPopup, this.thisx, this.thisy); +return true; +}return false; +}); +Clazz.overrideMethod(c$, "jpiUpdateComputedMenus", +function(){ +if (this.updateMode == -1) return; +this.isTainted = true; +this.getViewerData(); +this.updateMode = 0; +this.updateMenus(); +}); +Clazz.defineMethod(c$, "updateMenus", +function(){ +this.updateSelectMenu(); +this.updateModelSetComputedMenu(); +this.updateAboutSubmenu(); +if (this.updateMode == 0) { +this.updateFileMenu(); +this.updateElementsComputedMenu(this.vwr.getElementsPresentBitSet(this.modelIndex)); +this.updateHeteroComputedMenu(this.vwr.ms.getHeteroList(this.modelIndex)); +this.updateSurfMoComputedMenu(this.modelInfo.get("moData")); +this.updateFileTypeDependentMenus(); +this.updatePDBResidueComputedMenus(); +this.updateMode = 1; +this.updateConfigurationComputedMenu(); +this.updateSYMMETRYComputedMenus(); +this.updateFRAMESbyModelComputedMenu(); +this.updateLanguageSubmenu(); +} else { +this.updateSpectraMenu(); +this.updateFRAMESbyModelComputedMenu(); +this.updateSceneComputedMenu(); +for (var i = this.Special.size(); --i >= 0; ) this.updateSpecialMenuItem(this.Special.get(i)); + +}}); +Clazz.overrideMethod(c$, "appCheckItem", +function(item, newMenu){ +if (item.indexOf("!PDB") >= 0) { +this.NotPDB.addLast(newMenu); +} else if (item.indexOf("PDB") >= 0) { +this.PDBOnly.addLast(newMenu); +}if (item.indexOf("CHARGE") >= 0) { +this.ChargesOnly.addLast(newMenu); +} else if (item.indexOf("BFACTORS") >= 0) { +this.TemperatureOnly.addLast(newMenu); +} else if (item.indexOf("UNITCELL") >= 0) { +this.UnitcellOnly.addLast(newMenu); +} else if (item.indexOf("FILEUNIT") >= 0) { +this.FileUnitOnly.addLast(newMenu); +} else if (item.indexOf("FILEMOL") >= 0) { +this.FileMolOnly.addLast(newMenu); +}if (item.indexOf("!FRAMES") >= 0) { +this.SingleModelOnly.addLast(newMenu); +} else if (item.indexOf("FRAMES") >= 0) { +this.FramesOnly.addLast(newMenu); +}if (item.indexOf("VIBRATION") >= 0) { +this.VibrationOnly.addLast(newMenu); +} else if (item.indexOf("SYMMETRY") >= 0) { +this.SymmetryOnly.addLast(newMenu); +}if (item.indexOf("SPECIAL") >= 0) this.Special.addLast(newMenu); +}, "~S,J.api.SC"); +Clazz.overrideMethod(c$, "appGetMenuAsString", +function(title){ +return ( new J.popup.MainPopupResourceBundle(this.strMenuStructure, null)).getMenuAsText(title); +}, "~S"); +Clazz.overrideMethod(c$, "getScriptForCallback", +function(source, id, script){ +var pt; +if (script === "" || id.endsWith("Checkbox")) return script; +if (script.indexOf("SELECT") == 0) { +return "select thisModel and (" + script.substring(6) + ")"; +}if ((pt = id.lastIndexOf("[")) >= 0) { +id = id.substring(pt + 1); +if ((pt = id.indexOf("]")) >= 0) id = id.substring(0, pt); +id = id.$replace('_', ' '); +if (script.indexOf("[]") < 0) script = "[] " + script; +script = script.$replace('_', ' '); +return JU.PT.rep(script, "[]", id); +} else if (script.indexOf("?FILEROOT?") >= 0) { +script = JU.PT.rep(script, "FILEROOT?", this.modelSetRoot); +} else if (script.indexOf("?FILE?") >= 0) { +script = JU.PT.rep(script, "FILE?", this.modelSetFileName); +} else if (script.indexOf("?PdbId?") >= 0) { +script = JU.PT.rep(script, "PdbId?", "=xxxx"); +}return script; +}, "J.api.SC,~S,~S"); +Clazz.overrideMethod(c$, "appRestorePopupMenu", +function(){ +this.thisPopup = this.popupMenu; +if (this.vwr.isJSNoAWT || this.nFrankList < 2) return; +for (var i = this.nFrankList; --i > 0; ) { +var f = this.frankList[i]; +this.helper.menuInsertSubMenu(f[0], f[1], (f[2]).intValue()); +} +this.nFrankList = 1; +}); +Clazz.overrideMethod(c$, "appUpdateSpecialCheckBoxValue", +function(item, what, TF){ +if (!this.updatingForShow && what.indexOf("#CONFIG") >= 0) { +this.configurationSelected = what; +this.updateConfigurationComputedMenu(); +this.updateModelSetComputedMenu(); +}}, "J.api.SC,~S,~B"); +Clazz.defineMethod(c$, "setFrankMenu", +function(id){ +if (this.currentFrankId != null && this.currentFrankId === id && this.nFrankList > 0) return; +if (this.frankPopup == null) this.frankPopup = this.helper.menuCreatePopup("Frank", this.vwr.html5Applet); +this.thisPopup = this.frankPopup; +this.menuRemoveAll(this.frankPopup, 0); +this.menuCreateItem(this.frankPopup, this.getMenuText("mainMenuText"), "MAIN", ""); +this.currentFrankId = id; +this.nFrankList = 0; +this.frankList[this.nFrankList++] = Clazz.newArray(-1, [null, null, null]); +if (id != null) for (var i = id.indexOf(".", 2) + 1; ; ) { +var iNew = id.indexOf(".", i); +if (iNew < 0) break; +var menu = this.htMenus.get(id.substring(i, iNew)); +this.frankList[this.nFrankList++] = Clazz.newArray(-1, [menu.getParent(), menu, Integer.$valueOf(this.vwr.isJSNoAWT ? 0 : this.menuGetListPosition(menu))]); +this.menuAddSubMenu(this.frankPopup, menu); +i = iNew + 1; +} +this.thisPopup = this.popupMenu; +}, "~S"); +Clazz.defineMethod(c$, "checkBoolean", +function(key){ +return (this.modelSetInfo != null && this.modelSetInfo.get(key) === Boolean.TRUE); +}, "~S"); +Clazz.defineMethod(c$, "getViewerData", +function(){ +this.modelSetName = this.vwr.ms.modelSetName; +this.modelSetFileName = this.vwr.getModelSetFileName(); +var i = this.modelSetFileName.lastIndexOf("."); +this.isZapped = ("zapped".equals(this.modelSetName)); +if (this.isZapped || "string".equals(this.modelSetFileName) || "String[]".equals(this.modelSetFileName)) this.modelSetFileName = ""; +this.modelSetRoot = this.modelSetFileName.substring(0, i < 0 ? this.modelSetFileName.length : i); +if (this.modelSetRoot.length == 0) this.modelSetRoot = "Jmol"; +this.modelIndex = this.vwr.am.cmi; +this.modelCount = this.vwr.ms.mc; +this.ac = this.vwr.ms.getAtomCountInModel(this.modelIndex); +this.modelSetInfo = this.vwr.getModelSetAuxiliaryInfo(); +this.modelInfo = this.vwr.ms.getModelAuxiliaryInfo(this.modelIndex); +if (this.modelInfo == null) this.modelInfo = new java.util.Hashtable(); +this.isPDB = this.checkBoolean(JV.JC.getBoolName(4)); +this.isMultiFrame = (this.modelCount > 1); +this.hasSymmetry = !this.isPDB && this.modelInfo.containsKey("hasSymmetry"); +this.isUnitCell = this.modelInfo.containsKey("unitCellParams"); +this.fileHasUnitCell = (this.isPDB && this.isUnitCell || this.checkBoolean("fileHasUnitCell")); +this.isLastFrame = (this.modelIndex == this.modelCount - 1); +this.altlocs = this.vwr.ms.getAltLocListInModel(this.modelIndex); +this.isMultiConfiguration = (this.altlocs.length > 0); +this.isVibration = (this.vwr.modelHasVibrationVectors(this.modelIndex)); +this.haveCharges = (this.vwr.ms.getPartialCharges() != null); +this.haveBFactors = (this.vwr.getBooleanProperty("haveBFactors")); +this.cnmrPeaks = this.modelInfo.get("jdxAtomSelect_13CNMR"); +this.hnmrPeaks = this.modelInfo.get("jdxAtomSelect_1HNMR"); +}); +Clazz.overrideMethod(c$, "appCheckSpecialMenu", +function(item, subMenu, word){ +if ("modelSetMenu".equals(item)) { +this.nullModelSetName = word; +this.menuEnable(subMenu, false); +}}, "~S,J.api.SC,~S"); +Clazz.overrideMethod(c$, "appUpdateForShow", +function(){ +if (this.updateMode == -1) return; +this.isTainted = true; +this.getViewerData(); +this.updateMode = 2; +this.updateMenus(); +}); +Clazz.defineMethod(c$, "updateFileMenu", +function(){ +var menu = this.htMenus.get("fileMenu"); +if (menu == null) return; +var text = this.getMenuText("writeFileTextVARIABLE"); +menu = this.htMenus.get("writeFileTextVARIABLE"); +if (menu == null) return; +var ignore = (this.modelSetFileName.equals("zapped") || this.modelSetFileName.equals("")); +if (ignore) { +this.menuSetLabel(menu, ""); +this.menuEnable(menu, false); +} else { +this.menuSetLabel(menu, J.i18n.GT.o(J.i18n.GT.$(text), this.modelSetFileName)); +this.menuEnable(menu, true); +}}); +Clazz.defineMethod(c$, "getMenuText", +function(key){ +var str = this.menuText.getProperty(key); +return (str == null ? key : str); +}, "~S"); +Clazz.defineMethod(c$, "updateSelectMenu", +function(){ +var menu = this.htMenus.get("selectMenuText"); +if (menu == null) return; +this.menuEnable(menu, this.ac != 0); +this.menuSetLabel(menu, this.gti("selectMenuText", this.vwr.slm.getSelectionCount())); +}); +Clazz.defineMethod(c$, "updateElementsComputedMenu", +function(elementsPresentBitSet){ +var menu = this.htMenus.get("elementsComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +if (elementsPresentBitSet == null) return; +for (var i = elementsPresentBitSet.nextSetBit(0); i >= 0; i = elementsPresentBitSet.nextSetBit(i + 1)) { +var elementName = JU.Elements.elementNameFromNumber(i); +var elementSymbol = JU.Elements.elementSymbolFromNumber(i); +var entryName = elementSymbol + " - " + elementName; +this.menuCreateItem(menu, entryName, "SELECT " + elementName, null); +} +for (var i = 4; i < JU.Elements.altElementMax; ++i) { +var n = JU.Elements.elementNumberMax + i; +if (elementsPresentBitSet.get(n)) { +n = JU.Elements.altElementNumberFromIndex(i); +var elementName = JU.Elements.elementNameFromNumber(n); +var elementSymbol = JU.Elements.elementSymbolFromNumber(n); +var entryName = elementSymbol + " - " + elementName; +this.menuCreateItem(menu, entryName, "SELECT " + elementName, null); +}} +this.menuEnable(menu, true); +}, "JU.BS"); +Clazz.defineMethod(c$, "updateSpectraMenu", +function(){ +var menu = this.htMenus.get("spectraMenu"); +if (menu == null) return; +var menuh = this.htMenus.get("hnmrMenu"); +if (menuh != null) this.menuRemoveAll(menuh, 0); +var menuc = this.htMenus.get("cnmrMenu"); +if (menuc != null) this.menuRemoveAll(menuc, 0); +this.menuRemoveAll(menu, 0); +var isOK = new Boolean (this.setSpectraMenu(menuh, this.hnmrPeaks) | this.setSpectraMenu(menuc, this.cnmrPeaks)).valueOf(); +if (isOK) { +if (menuh != null) this.menuAddSubMenu(menu, menuh); +if (menuc != null) this.menuAddSubMenu(menu, menuc); +}this.menuEnable(menu, isOK); +}); +Clazz.defineMethod(c$, "setSpectraMenu", +function(menu, peaks){ +var n = (peaks == null ? 0 : peaks.size()); +if (n == 0) return false; +if (menu == null) return false; +this.menuEnable(menu, false); +for (var i = 0; i < n; i++) { +var peak = peaks.get(i); +var title = JU.PT.getQuotedAttribute(peak, "title"); +var atoms = JU.PT.getQuotedAttribute(peak, "atoms"); +if (atoms != null) this.menuCreateItem(menu, title, "select visible & (@" + JU.PT.rep(atoms, ",", " or @") + ")", "Focus" + i); +} +this.menuEnable(menu, true); +return true; +}, "J.api.SC,JU.Lst"); +Clazz.defineMethod(c$, "updateHeteroComputedMenu", +function(htHetero){ +var menu = this.htMenus.get("PDBheteroComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +if (htHetero == null) return; +var n = 0; +for (var hetero, $hetero = htHetero.entrySet().iterator (); $hetero.hasNext()&& ((hetero = $hetero.next ()) || true);) { +var heteroCode = hetero.getKey(); +var heteroName = hetero.getValue(); +if (heteroName.length > 20) heteroName = heteroName.substring(0, 20) + "..."; +var entryName = heteroCode + " - " + heteroName; +this.menuCreateItem(menu, entryName, "SELECT [" + heteroCode + "]", null); +n++; +} +this.menuEnable(menu, (n > 0)); +}, "java.util.Map"); +Clazz.defineMethod(c$, "updateSurfMoComputedMenu", +function(moData){ +var menu = this.htMenus.get("surfMoComputedMenuText"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +var mos = (moData == null ? null : (moData.get("mos"))); +var nOrb = (mos == null ? 0 : mos.size()); +var text = this.getMenuText("surfMoComputedMenuText"); +if (nOrb == 0) { +this.menuSetLabel(menu, J.i18n.GT.o(J.i18n.GT.$(text), "")); +this.menuEnable(menu, false); +return; +}this.menuSetLabel(menu, J.i18n.GT.i(J.i18n.GT.$(text), nOrb)); +this.menuEnable(menu, true); +var subMenu = menu; +var nmod = (nOrb % 25); +if (nmod == 0) nmod = 25; +var pt = (nOrb > 25 ? 0 : -2147483648); +for (var i = nOrb; --i >= 0; ) { +if (pt >= 0 && (pt++ % nmod) == 0) { +if (pt == nmod + 1) nmod = 25; +var id = "mo" + pt + "Menu"; +subMenu = this.menuNewSubMenu(Math.max(i + 2 - nmod, 1) + "..." + (i + 1), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}var mo = mos.get(i); +var entryName = "#" + (i + 1) + " " + (mo.containsKey("type") ? mo.get("type") + " " : "") + (mo.containsKey("symmetry") ? mo.get("symmetry") + " " : "") + (mo.containsKey("occupancy") ? "(" + mo.get("occupancy") + ") " : "") + (mo.containsKey("energy") ? mo.get("energy") : ""); +var script = "mo " + (i + 1); +this.menuCreateItem(subMenu, entryName, script, null); +} +}, "java.util.Map"); +Clazz.defineMethod(c$, "updateFileTypeDependentMenus", +function(){ +for (var i = this.NotPDB.size(); --i >= 0; ) this.menuEnable(this.NotPDB.get(i), !this.isPDB); + +for (var i = this.PDBOnly.size(); --i >= 0; ) this.menuEnable(this.PDBOnly.get(i), this.isPDB); + +for (var i = this.UnitcellOnly.size(); --i >= 0; ) this.menuEnable(this.UnitcellOnly.get(i), this.isUnitCell); + +for (var i = this.FileUnitOnly.size(); --i >= 0; ) this.menuEnable(this.FileUnitOnly.get(i), this.isUnitCell || this.fileHasUnitCell); + +for (var i = this.FileMolOnly.size(); --i >= 0; ) this.menuEnable(this.FileMolOnly.get(i), this.isUnitCell || this.fileHasUnitCell); + +for (var i = this.SingleModelOnly.size(); --i >= 0; ) this.menuEnable(this.SingleModelOnly.get(i), this.isLastFrame); + +for (var i = this.FramesOnly.size(); --i >= 0; ) this.menuEnable(this.FramesOnly.get(i), this.isMultiFrame); + +for (var i = this.VibrationOnly.size(); --i >= 0; ) this.menuEnable(this.VibrationOnly.get(i), this.isVibration); + +for (var i = this.SymmetryOnly.size(); --i >= 0; ) this.menuEnable(this.SymmetryOnly.get(i), this.hasSymmetry && this.isUnitCell); + +for (var i = this.ChargesOnly.size(); --i >= 0; ) this.menuEnable(this.ChargesOnly.get(i), this.haveCharges); + +for (var i = this.TemperatureOnly.size(); --i >= 0; ) this.menuEnable(this.TemperatureOnly.get(i), this.haveBFactors); + +this.updateSignedAppletItems(); +}); +Clazz.defineMethod(c$, "updateSceneComputedMenu", +function(){ +var menu = this.htMenus.get("sceneComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +var scenes = this.vwr.ms.getInfoM("scenes"); +if (scenes == null) return; +for (var i = 0; i < scenes.length; i++) this.menuCreateItem(menu, scenes[i], "restore scene " + JU.PT.esc(scenes[i]) + " 1.0", null); + +this.menuEnable(menu, true); +}); +Clazz.defineMethod(c$, "updatePDBResidueComputedMenus", +function(){ +var haveMenu = false; +var menu3 = this.htMenus.get("PDBaaResiduesComputedMenu"); +if (menu3 != null) { +this.menuRemoveAll(menu3, 0); +this.menuEnable(menu3, false); +haveMenu = true; +}var menu1 = this.htMenus.get("PDBnucleicResiduesComputedMenu"); +if (menu1 != null) { +this.menuRemoveAll(menu1, 0); +this.menuEnable(menu1, false); +haveMenu = true; +}var menu2 = this.htMenus.get("PDBcarboResiduesComputedMenu"); +if (menu2 != null) { +this.menuRemoveAll(menu2, 0); +this.menuEnable(menu2, false); +haveMenu = true; +}if (this.modelSetInfo == null || !haveMenu) return; +var n = (this.modelIndex < 0 ? 0 : this.modelIndex + 1); +var lists = (this.modelSetInfo.get("group3Lists")); +this.group3List = (lists == null ? null : lists[n]); +this.group3Counts = (lists == null ? null : (this.modelSetInfo.get("group3Counts"))[n]); +if (this.group3List == null) return; +var nItems = 0; +var groupList = JM.Group.standardGroupList; +if (menu3 != null) { +for (var i = 1; i < 24; ++i) nItems += this.updateGroup3List(menu3, groupList.substring(i * 6 - 4, i * 6 - 1).trim()); + +nItems += this.augmentGroup3List(menu3, "p>", true); +this.menuEnable(menu3, (nItems > 0)); +this.menuEnable(this.htMenus.get("PDBproteinMenu"), (nItems > 0)); +}if (menu1 != null) { +nItems = this.augmentGroup3List(menu1, "n>", false); +this.menuEnable(menu1, nItems > 0); +this.menuEnable(this.htMenus.get("PDBnucleicMenu"), (nItems > 0)); +var dssr = (nItems > 0 && this.modelIndex >= 0 ? this.vwr.ms.getInfo(this.modelIndex, "dssr") : null); +if (dssr != null) this.setSecStrucMenu(this.htMenus.get("aaStructureMenu"), dssr); +}if (menu2 != null) { +nItems = this.augmentGroup3List(menu2, "c>", false); +this.menuEnable(menu2, nItems > 0); +this.menuEnable(this.htMenus.get("PDBcarboMenu"), (nItems > 0)); +}}); +Clazz.defineMethod(c$, "setSecStrucMenu", +function(menu, dssr){ +var counts = dssr.get("counts"); +if (counts == null) return false; +var keys = new Array(counts.size()); +counts.keySet().toArray(keys); +java.util.Arrays.sort(keys); +if (keys.length == 0) return false; +menu.removeAll(); +for (var i = 0; i < keys.length; i++) this.menuCreateItem(menu, keys[i] + " (" + counts.get(keys[i]) + ")", "select modelIndex=" + this.modelIndex + " && within('dssr', '" + keys[i] + "');", null); + +return true; +}, "J.api.SC,java.util.Map"); +Clazz.defineMethod(c$, "updateGroup3List", +function(menu, name){ +var nItems = 0; +var n = this.group3Counts[Clazz.doubleToInt(this.group3List.indexOf(name) / 6)]; +name = name.trim(); +var script = null; +if (n > 0) { +script = "SELECT " + name; +name += " (" + n + ")"; +nItems++; +}var item = this.menuCreateItem(menu, name, script, this.menuGetId(menu) + "." + name); +if (n == 0) this.menuEnable(item, false); +return nItems; +}, "J.api.SC,~S"); +Clazz.defineMethod(c$, "augmentGroup3List", +function(menu, type, addSeparator){ +var pt = 138; +var nItems = 0; +while (true) { +pt = this.group3List.indexOf(type, pt); +if (pt < 0) break; +if (nItems++ == 0 && addSeparator) this.menuAddSeparator(menu); +var n = this.group3Counts[Clazz.doubleToInt(pt / 6)]; +var heteroCode = this.group3List.substring(pt + 2, pt + 5); +var name = heteroCode + " (" + n + ")"; +this.menuCreateItem(menu, name, "SELECT [" + heteroCode + "]", this.menuGetId(menu) + "." + name); +pt++; +} +return nItems; +}, "J.api.SC,~S,~B"); +Clazz.defineMethod(c$, "updateSYMMETRYComputedMenus", +function(){ +this.updateSYMMETRYSelectComputedMenu(); +this.updateSYMMETRYShowComputedMenu(); +}); +Clazz.defineMethod(c$, "updateSYMMETRYShowComputedMenu", +function(){ +var menu = this.htMenus.get("SYMMETRYShowComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +if (!this.hasSymmetry || this.modelIndex < 0) return; +var info = this.vwr.getProperty("DATA_API", "spaceGroupInfo", null); +if (info == null) return; +var infolist = info.get("operations"); +if (infolist == null) return; +var name = info.get("spaceGroupName"); +this.menuSetLabel(menu, name == null ? J.i18n.GT.$("Space Group") : name); +var subMenu = menu; +var pt = (infolist.length > 25 ? 0 : -2147483648); +for (var i = 0; i < infolist.length; i++) { +if (pt >= 0 && (pt++ % 25) == 0) { +var id = "drawsymop" + pt + "Menu"; +subMenu = this.menuNewSubMenu((i + 1) + "..." + Math.min(i + 25, infolist.length), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}if (i == 0) this.menuEnable(this.menuCreateItem(subMenu, J.i18n.GT.$("none"), "draw sym_* delete", null), true); +var sym = infolist[i][1]; +if (sym.indexOf("x1") < 0) sym = infolist[i][0]; +var entryName = (i + 1) + " " + infolist[i][2] + " (" + sym + ")"; +this.menuEnable(this.menuCreateItem(subMenu, entryName, "draw SYMOP " + (i + 1), null), true); +} +this.menuEnable(menu, true); +}); +Clazz.defineMethod(c$, "updateSYMMETRYSelectComputedMenu", +function(){ +var menu = this.htMenus.get("SYMMETRYSelectComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +if (!this.hasSymmetry || this.modelIndex < 0) return; +var list = this.modelInfo.get("symmetryOperations"); +if (list == null) return; +var enableSymop = (this.vwr.getOperativeSymmetry() != null); +var subMenu = menu; +var nmod = 25; +var pt = (list.length > 25 ? 0 : -2147483648); +for (var i = 0; i < list.length; i++) { +if (pt >= 0 && (pt++ % nmod) == 0) { +var id = "symop" + pt + "Menu"; +subMenu = this.menuNewSubMenu((i + 1) + "..." + Math.min(i + 25, list.length), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}var entryName = "symop=" + (i + 1) + " # " + list[i]; +this.menuEnable(this.menuCreateItem(subMenu, entryName, "SELECT symop=" + (i + 1), null), enableSymop); +} +this.menuEnable(menu, true); +}); +Clazz.defineMethod(c$, "updateFRAMESbyModelComputedMenu", +function(){ +var menu = this.htMenus.get("FRAMESbyModelComputedMenu"); +if (menu == null) return; +this.menuEnable(menu, (this.modelCount > 0)); +this.menuSetLabel(menu, (this.modelIndex < 0 ? this.gti("allModelsText", this.modelCount) : this.gto("modelMenuText", (this.modelIndex + 1) + "/" + this.modelCount))); +this.menuRemoveAll(menu, 0); +if (this.modelCount < 1) return; +if (this.modelCount > 1) this.menuCreateCheckboxItem(menu, J.i18n.GT.$("All"), "frame 0 ##", null, (this.modelIndex < 0), false); +var subMenu = menu; +var pt = (this.modelCount > 25 ? 0 : -2147483648); +for (var i = 0; i < this.modelCount; i++) { +if (pt >= 0 && (pt++ % 25) == 0) { +var id = "model" + pt + "Menu"; +subMenu = this.menuNewSubMenu((i + 1) + "..." + Math.min(i + 25, this.modelCount), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}var script = "" + this.vwr.getModelNumberDotted(i); +var entryName = this.vwr.getModelName(i); +var spectrumTypes = this.vwr.ms.getInfo(i, "spectrumTypes"); +if (spectrumTypes != null && entryName.startsWith(spectrumTypes)) spectrumTypes = null; +if (!entryName.equals(script)) { +var ipt = entryName.indexOf(";PATH"); +if (ipt >= 0) entryName = entryName.substring(0, ipt); +if (entryName.indexOf("Model[") == 0 && (ipt = entryName.indexOf("]:")) >= 0) entryName = entryName.substring(ipt + 2); +entryName = script + ": " + entryName; +}if (entryName.length > 60) entryName = entryName.substring(0, 55) + "..."; +if (spectrumTypes != null) entryName += " (" + spectrumTypes + ")"; +this.menuCreateCheckboxItem(subMenu, entryName, "model " + script + " ##", null, (this.modelIndex == i), false); +} +}); +Clazz.defineMethod(c$, "updateConfigurationComputedMenu", +function(){ +var menu = this.htMenus.get("configurationComputedMenu"); +if (menu == null) return; +this.menuEnable(menu, this.isMultiConfiguration); +if (!this.isMultiConfiguration) return; +var nAltLocs = this.altlocs.length; +this.menuSetLabel(menu, this.gti("configurationMenuText", nAltLocs)); +this.menuRemoveAll(menu, 0); +var script = "hide none ##CONFIG"; +this.menuCreateCheckboxItem(menu, J.i18n.GT.$("All"), script, null, (this.updateMode == 1 && this.configurationSelected.equals(script)), false); +for (var i = 0; i < nAltLocs; i++) { +script = "configuration " + (i + 1) + "; hide thisModel and not selected ##CONFIG"; +var entryName = "" + (i + 1) + " -- \"" + this.altlocs.charAt(i) + "\""; +this.menuCreateCheckboxItem(menu, entryName, script, null, (this.updateMode == 1 && this.configurationSelected.equals(script)), false); +} +}); +Clazz.defineMethod(c$, "updateModelSetComputedMenu", +function(){ +var menu = this.htMenus.get("modelSetMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuSetLabel(menu, this.nullModelSetName); +this.menuEnable(menu, false); +for (var i = this.noZapped.length; --i >= 0; ) this.menuEnable(this.htMenus.get(this.noZapped[i]), !this.isZapped); + +if (this.modelSetName == null || this.isZapped) return; +if (this.isMultiFrame) { +this.modelSetName = this.gti("modelSetCollectionText", this.modelCount); +if (this.modelSetName.length > this.titleWidthMax) this.modelSetName = this.modelSetName.substring(0, this.titleWidthMax) + "..."; +} else if (this.vwr.getBooleanProperty("hideNameInPopup")) { +this.modelSetName = this.getMenuText("hiddenModelSetText"); +} else if (this.modelSetName.length > this.titleWidthMax) { +this.modelSetName = this.modelSetName.substring(0, this.titleWidthMax) + "..."; +}this.menuSetLabel(menu, this.modelSetName); +this.menuEnable(menu, true); +this.menuEnable(this.htMenus.get("computationMenu"), this.ac <= 100); +this.addMenuItem(menu, this.gti("atomsText", this.ac)); +this.addMenuItem(menu, this.gti("bondsText", this.vwr.ms.getBondCountInModel(this.modelIndex))); +if (this.isPDB) { +this.menuAddSeparator(menu); +this.addMenuItem(menu, this.gti("groupsText", this.vwr.ms.getGroupCountInModel(this.modelIndex))); +this.addMenuItem(menu, this.gti("chainsText", this.vwr.ms.getChainCountInModelWater(this.modelIndex, false))); +this.addMenuItem(menu, this.gti("polymersText", this.vwr.ms.getBioPolymerCountInModel(this.modelIndex))); +var submenu = this.htMenus.get("BiomoleculesMenu"); +if (submenu == null) { +submenu = this.menuNewSubMenu(J.i18n.GT.$(this.getMenuText("biomoleculesMenuText")), this.menuGetId(menu) + ".biomolecules"); +this.menuAddSubMenu(menu, submenu); +}this.menuRemoveAll(submenu, 0); +this.menuEnable(submenu, false); +var biomolecules; +if (this.modelIndex >= 0 && (biomolecules = this.vwr.ms.getInfo(this.modelIndex, "biomolecules")) != null) { +this.menuEnable(submenu, true); +var nBiomolecules = biomolecules.size(); +for (var i = 0; i < nBiomolecules; i++) { +var script = (this.isMultiFrame ? "" : "save orientation;load \"\" FILTER \"biomolecule " + (i + 1) + "\";restore orientation;"); +var nAtoms = (biomolecules.get(i).get("atomCount")).intValue(); +var entryName = this.gto(this.isMultiFrame ? "biomoleculeText" : "loadBiomoleculeText", Clazz.newArray(-1, [Integer.$valueOf(i + 1), Integer.$valueOf(nAtoms)])); +this.menuCreateItem(submenu, entryName, script, null); +} +}}if (this.isApplet && !this.vwr.getBooleanProperty("hideNameInPopup")) { +this.menuAddSeparator(menu); +this.menuCreateItem(menu, this.gto("viewMenuText", this.modelSetFileName), "show url", null); +}}); +Clazz.defineMethod(c$, "gti", +function(s, n){ +return J.i18n.GT.i(J.i18n.GT.$(this.getMenuText(s)), n); +}, "~S,~N"); +Clazz.defineMethod(c$, "gto", +function(s, o){ +return J.i18n.GT.o(J.i18n.GT.$(this.getMenuText(s)), o); +}, "~S,~O"); +Clazz.defineMethod(c$, "updateAboutSubmenu", +function(){ +if (this.isApplet) this.setText("APPLETid", this.vwr.appletName); +{ +}}); +Clazz.defineMethod(c$, "updateLanguageSubmenu", +function(){ +var menu = this.htMenus.get("languageComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +var language = J.i18n.GT.getLanguage(); +var id = this.menuGetId(menu); +var languages = J.i18n.GT.getLanguageList(null); +for (var i = 0, p = 0; i < languages.length; i++) { +if (language.equals(languages[i].code)) languages[i].display = true; +if (languages[i].display) { +var code = languages[i].code; +var name = languages[i].language; +var nativeName = languages[i].nativeLanguage; +var menuLabel = code + " - " + J.i18n.GT.$(name); +if ((nativeName != null) && (!nativeName.equals(J.i18n.GT.$(name)))) { +menuLabel += " - " + nativeName; +}if (p++ > 0 && (p % 4 == 1)) this.menuAddSeparator(menu); +this.menuCreateCheckboxItem(menu, menuLabel, "language = \"" + code + "\" ##" + name, id + "." + code, language.equals(code), false); +}} +}); +Clazz.defineMethod(c$, "updateSpecialMenuItem", +function(m){ +m.setText(this.getSpecialLabel(m.getName(), m.getText())); +}, "J.api.SC"); +Clazz.defineMethod(c$, "getSpecialLabel", +function(name, text){ +var pt = text.indexOf(" ("); +if (pt < 0) pt = text.length; +var info = null; +if (name.indexOf("captureLooping") >= 0) info = (this.vwr.am.animationReplayMode == 1073742070 ? "ONCE" : "LOOP"); + else if (name.indexOf("captureFps") >= 0) info = "" + this.vwr.getInt(553648132); + else if (name.indexOf("captureMenu") >= 0) info = (this.vwr.captureParams == null ? J.i18n.GT.$("not capturing") : this.vwr.fm.getFilePath(this.vwr.captureParams.get("captureFileName"), false, true) + " " + this.vwr.captureParams.get("captureCount")); +return (info == null ? text : text.substring(0, pt) + " (" + info + ")"); +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/popup/MainPopupResourceBundle.js b/config/plugins/visualizations/jmol/static/j2s/J/popup/MainPopupResourceBundle.js new file mode 100755 index 000000000000..c57a7236fab2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/popup/MainPopupResourceBundle.js @@ -0,0 +1,41 @@ +Clazz.declarePackage("J.popup"); +Clazz.load(["J.popup.PopupResource", "JV.JC"], "J.popup.MainPopupResourceBundle", ["JU.PT", "J.i18n.GT", "JV.Viewer"], function(){ +var c$ = Clazz.declareType(J.popup, "MainPopupResourceBundle", J.popup.PopupResource); +Clazz.overrideMethod(c$, "getMenuName", +function(){ +return "popupMenu"; +}); +Clazz.overrideMethod(c$, "buildStructure", +function(menuStructure){ +this.addItems(J.popup.MainPopupResourceBundle.menuContents); +this.addItems(J.popup.MainPopupResourceBundle.structureContents); +if (menuStructure != null) this.setStructure(menuStructure, new J.i18n.GT()); +}, "~S"); +c$.Box = Clazz.defineMethod(c$, "Box", +function(cmd){ +return "if (showBoundBox or showUnitcell) {" + cmd + "} else {boundbox on;" + cmd + ";boundbox off}"; +}, "~S"); +Clazz.overrideMethod(c$, "getWordContents", +function(){ +var wasTranslating = J.i18n.GT.setDoTranslate(true); +var vdw = J.i18n.GT.$("{0}% van der Waals"); +var exm = J.i18n.GT.$("Export {0} 3D model"); +var exi = J.i18n.GT.$("Export {0} image"); +var rld = J.i18n.GT.$("Reload {0}"); +var scl = J.i18n.GT.$("Scale {0}"); +var ang = J.i18n.GT.$("{0} \u00C5"); +var pxl = J.i18n.GT.$("{0} px"); +var words = Clazz.newArray(-1, ["cnmrMenu", J.i18n.GT.$("13C-NMR"), "hnmrMenu", J.i18n.GT.$("1H-NMR"), "aboutMenu", J.i18n.GT.$("About..."), "negativeCharge", J.i18n.GT.$("Acidic Residues (-)"), "allModelsText", J.i18n.GT.$("All {0} models"), "allHetero", J.i18n.GT.$("All PDB \"HETATM\""), "Solvent", J.i18n.GT.$("All Solvent"), "Water", J.i18n.GT.$("All Water"), "selectAll", J.i18n.GT.$("All"), "allProtein", null, "allNucleic", null, "allCarbo", null, "altloc#PDB", J.i18n.GT.$("Alternative Location"), "amino#PDB", J.i18n.GT.$("Amino Acid"), "byAngstromMenu", J.i18n.GT.$("Angstrom Width"), "animModeMenu", J.i18n.GT.$("Animation Mode"), "FRAMESanimateMenu", J.i18n.GT.$("Animation"), "atPairs", J.i18n.GT.$("AT pairs"), "atomMenu", J.i18n.GT.$("Atoms"), "[color_atoms]Menu", null, "atomsText", J.i18n.GT.$("atoms: {0}"), "auPairs", J.i18n.GT.$("AU pairs"), "[color_axes]Menu", J.i18n.GT.$("Axes"), "showAxesCB", null, "[set_axes]Menu", null, "axisA", J.i18n.GT.$("Axis a"), "axisB", J.i18n.GT.$("Axis b"), "axisC", J.i18n.GT.$("Axis c"), "axisX", J.i18n.GT.$("Axis x"), "axisY", J.i18n.GT.$("Axis y"), "axisZ", J.i18n.GT.$("Axis z"), "back", J.i18n.GT.$("Back"), "proteinBackbone", J.i18n.GT.$("Backbone"), "nucleicBackbone", null, "backbone", null, "[color_backbone]Menu", null, "[color_background]Menu", J.i18n.GT.$("Background"), "renderBallAndStick", J.i18n.GT.$("Ball and Stick"), "nucleicBases", J.i18n.GT.$("Bases"), "positiveCharge", J.i18n.GT.$("Basic Residues (+)"), "best", J.i18n.GT.$("Best"), "biomoleculeText", J.i18n.GT.$("biomolecule {0} ({1} atoms)"), "biomoleculesMenuText", J.i18n.GT.$("Biomolecules"), "black", J.i18n.GT.$("Black"), "blue", J.i18n.GT.$("Blue"), "bondMenu", J.i18n.GT.$("Bonds"), "[color_bonds]Menu", null, "bondsText", J.i18n.GT.$("bonds: {0}"), "bottom", J.i18n.GT.$("Bottom"), "[color_boundbox]Menu", J.i18n.GT.$("Boundbox"), "[set_boundbox]Menu", null, "showBoundBoxCB", null, "PDBheteroComputedMenu", J.i18n.GT.$("By HETATM"), "PDBaaResiduesComputedMenu", J.i18n.GT.$("By Residue Name"), "PDBnucleicResiduesComputedMenu", null, "PDBcarboResiduesComputedMenu", null, "schemeMenu", J.i18n.GT.$("By Scheme"), "[color_]schemeMenu", null, "hbondCalc", J.i18n.GT.$("Calculate"), "SIGNEDJAVAcaptureRock", J.i18n.GT.$("Capture rock"), "SIGNEDJAVAcaptureSpin", J.i18n.GT.$("Capture spin"), "SIGNEDJAVAcaptureMenuSPECIAL", J.i18n.GT.$("Capture"), "PDBcarboMenu", J.i18n.GT.$("Carbohydrate"), "cartoonRockets", J.i18n.GT.$("Cartoon Rockets"), "PDBrenderCartoonsOnly", J.i18n.GT.$("Cartoon"), "cartoon", null, "[color_cartoon]sMenu", null, "pickCenter", J.i18n.GT.$("Center"), "labelCentered", J.i18n.GT.$("Centered"), "chain#PDB", J.i18n.GT.$("Chain"), "chainsText", J.i18n.GT.$("chains: {0}"), "colorChargeMenu", J.i18n.GT.$("Charge"), "measureAngle", J.i18n.GT.$("Click for angle measurement"), "measureDistance", J.i18n.GT.$("Click for distance measurement"), "measureTorsion", J.i18n.GT.$("Click for torsion (dihedral) measurement"), "PDBmeasureSequence", J.i18n.GT.$("Click two atoms to display a sequence in the console"), "modelSetCollectionText", J.i18n.GT.$("Collection of {0} models"), "colorMenu", J.i18n.GT.$("Color"), "computationMenu", J.i18n.GT.$("Computation"), "configurationMenuText", J.i18n.GT.$("Configurations ({0})"), "configurationComputedMenu", J.i18n.GT.$("Configurations"), "showConsole", J.i18n.GT.$("Console"), "renderCpkSpacefill", J.i18n.GT.$("CPK Spacefill"), "stereoCrossEyed", J.i18n.GT.$("Cross-eyed viewing"), "showState", J.i18n.GT.$("Current state"), "cyan", J.i18n.GT.$("Cyan"), "darkgray", J.i18n.GT.$("Dark Gray"), "measureDelete", J.i18n.GT.$("Delete measurements"), "SIGNEDJAVAcaptureOff", J.i18n.GT.$("Disable capturing"), "hideNotSelectedCB", J.i18n.GT.$("Display Selected Only"), "distanceAngstroms", J.i18n.GT.$("Distance units Angstroms"), "distanceNanometers", J.i18n.GT.$("Distance units nanometers"), "distancePicometers", J.i18n.GT.$("Distance units picometers"), "distanceHz", J.i18n.GT.$("Distance units hz (NMR J-coupling)"), "ssbondMenu", J.i18n.GT.$("Disulfide Bonds"), "[color_ssbonds]Menu", null, "DNA", J.i18n.GT.$("DNA"), "surfDots", J.i18n.GT.$("Dot Surface"), "dotted", J.i18n.GT.$("Dotted"), "measureOff", J.i18n.GT.$("Double-Click begins and ends all measurements"), "cpk", J.i18n.GT.$("Element (CPK)"), "elementsComputedMenu", J.i18n.GT.$("Element"), "SIGNEDJAVAcaptureEnd", J.i18n.GT.$("End capturing"), "exportMenu", J.i18n.GT.$("Export"), "extractMOL", J.i18n.GT.$("Extract MOL data"), "showFile", J.i18n.GT.$("File Contents"), "showFileHeader", J.i18n.GT.$("File Header"), "fileMenu", J.i18n.GT.$("File"), "formalcharge", J.i18n.GT.$("Formal Charge"), "front", J.i18n.GT.$("Front"), "gcPairs", J.i18n.GT.$("GC pairs"), "gold", J.i18n.GT.$("Gold"), "gray", J.i18n.GT.$("Gray"), "green", J.i18n.GT.$("Green"), "group#PDB", J.i18n.GT.$("Group"), "groupsText", J.i18n.GT.$("groups: {0}"), "PDBheteroMenu", J.i18n.GT.$("Hetero"), "off#axes", J.i18n.GT.$("Hide"), "showHistory", J.i18n.GT.$("History"), "hbondMenu", J.i18n.GT.$("Hydrogen Bonds"), "[color_hbonds]Menu", null, "pickIdent", J.i18n.GT.$("Identity"), "indigo", J.i18n.GT.$("Indigo"), "none", J.i18n.GT.$("Inherit"), "invertSelection", J.i18n.GT.$("Invert Selection"), "showIsosurface", J.i18n.GT.$("Isosurface JVXL data"), "help", J.i18n.GT.$("Jmol Script Commands"), "pickLabel", J.i18n.GT.$("Label"), "labelMenu", J.i18n.GT.$("Labels"), "[color_labels]Menu", null, "languageComputedMenu", J.i18n.GT.$("Language"), "left", J.i18n.GT.$("Left"), "Ligand", J.i18n.GT.$("Ligand"), "lightgray", J.i18n.GT.$("Light Gray"), "measureList", J.i18n.GT.$("List measurements"), "loadBiomoleculeText", J.i18n.GT.$("load biomolecule {0} ({1} atoms)"), "SIGNEDloadFileUnitCell", J.i18n.GT.$("Load full unit cell"), "loadMenu", J.i18n.GT.$("Load"), "loop", J.i18n.GT.$("Loop"), "labelLowerLeft", J.i18n.GT.$("Lower Left"), "labelLowerRight", J.i18n.GT.$("Lower Right"), "mainMenuText", J.i18n.GT.$("Main Menu"), "opaque", J.i18n.GT.$("Make Opaque"), "surfOpaque", null, "translucent", J.i18n.GT.$("Make Translucent"), "surfTranslucent", null, "maroon", J.i18n.GT.$("Maroon"), "measureMenu", J.i18n.GT.$("Measurements"), "showMeasure", null, "modelMenuText", J.i18n.GT.$("model {0}"), "hiddenModelSetText", J.i18n.GT.$("Model information"), "modelkit", J.i18n.GT.$("Model kit"), "showModel", J.i18n.GT.$("Model"), "FRAMESbyModelComputedMenu", J.i18n.GT.$("Model/Frame"), "modelKitMode", J.i18n.GT.$("modelKitMode"), "surf2MEP", J.i18n.GT.$("Molecular Electrostatic Potential (range -0.1 0.1)"), "surfMEP", J.i18n.GT.$("Molecular Electrostatic Potential (range ALL)"), "showMo", J.i18n.GT.$("Molecular orbital JVXL data"), "surfMoComputedMenuText", J.i18n.GT.$("Molecular Orbitals ({0})"), "surfMolecular", J.i18n.GT.$("Molecular Surface"), "molecule", J.i18n.GT.$("Molecule"), "monomer#PDB", J.i18n.GT.$("Monomer"), "mouse", J.i18n.GT.$("Mouse Manual"), "nextframe", J.i18n.GT.$("Next Frame"), "modelSetMenu", J.i18n.GT.$("No atoms loaded"), "exceptWater", J.i18n.GT.$("Nonaqueous HETATM") + " (hetero and not water)", "nonWaterSolvent", J.i18n.GT.$("Nonaqueous Solvent") + " (solvent and not water)", "PDBnoneOfTheAbove", J.i18n.GT.$("None of the above"), "selectNone", J.i18n.GT.$("None"), "stereoNone", null, "labelNone", null, "nonpolar", J.i18n.GT.$("Nonpolar Residues"), "PDBnucleicMenu", J.i18n.GT.$("Nucleic"), "atomNone", J.i18n.GT.$("Off"), "bondNone", null, "hbondNone", null, "ssbondNone", null, "structureNone", null, "vibrationOff", null, "vectorOff", null, "spinOff", null, "pickOff", null, "surfOff", null, "olive", J.i18n.GT.$("Olive"), "bondWireframe", J.i18n.GT.$("On"), "hbondWireframe", null, "ssbondWireframe", null, "vibrationOn", null, "vectorOn", null, "spinOn", null, "on", null, "SIGNEDloadPdb", J.i18n.GT.$("Get PDB file"), "SIGNEDloadMol", J.i18n.GT.$("Get MOL file"), "SIGNEDloadFile", J.i18n.GT.$("Open local file"), "SIGNEDloadScript", J.i18n.GT.$("Open script"), "SIGNEDloadUrl", J.i18n.GT.$("Open URL"), "minimize", J.i18n.GT.$("Optimize structure"), "orange", J.i18n.GT.$("Orange"), "orchid", J.i18n.GT.$("Orchid"), "showOrient", J.i18n.GT.$("Orientation"), "palindrome", J.i18n.GT.$("Palindrome"), "partialcharge", J.i18n.GT.$("Partial Charge"), "pause", J.i18n.GT.$("Pause"), "perspectiveDepthCB", J.i18n.GT.$("Perspective Depth"), "byPixelMenu", J.i18n.GT.$("Pixel Width"), "onceThrough", J.i18n.GT.$("Play Once"), "play", J.i18n.GT.$("Play"), "polar", J.i18n.GT.$("Polar Residues"), "polymersText", J.i18n.GT.$("polymers: {0}"), "labelPositionMenu", J.i18n.GT.$("Position Label on Atom"), "prevframe", J.i18n.GT.$("Previous Frame"), "PDBproteinMenu", J.i18n.GT.$("Protein"), "colorrasmolCB", J.i18n.GT.$("RasMol Colors"), "red", J.i18n.GT.$("Red"), "stereoRedBlue", J.i18n.GT.$("Red+Blue glasses"), "stereoRedCyan", J.i18n.GT.$("Red+Cyan glasses"), "stereoRedGreen", J.i18n.GT.$("Red+Green glasses"), "SIGNEDJAVAcaptureOn", J.i18n.GT.$("Re-enable capturing"), "FILEUNITninePoly", J.i18n.GT.$("Reload + Polyhedra"), "reload", J.i18n.GT.$("Reload"), "restart", J.i18n.GT.$("Restart"), "resume", J.i18n.GT.$("Resume"), "playrev", J.i18n.GT.$("Reverse"), "rewind", J.i18n.GT.$("Rewind"), "ribbons", J.i18n.GT.$("Ribbons"), "[color_ribbon]sMenu", null, "right", J.i18n.GT.$("Right"), "RNA", J.i18n.GT.$("RNA"), "rockets", J.i18n.GT.$("Rockets"), "[color_rockets]Menu", null, "salmon", J.i18n.GT.$("Salmon"), "writeFileTextVARIABLE", J.i18n.GT.$("Save a copy of {0}"), "SIGNEDwriteJmol", J.i18n.GT.$("Save as PNG/JMOL (image+zip)"), "SIGNEDwriteIsosurface", J.i18n.GT.$("Save JVXL isosurface"), "writeHistory", J.i18n.GT.$("Save script with history"), "writeState", J.i18n.GT.$("Save script with state"), "saveMenu", J.i18n.GT.$("Save"), "sceneComputedMenu", J.i18n.GT.$("Scenes"), "renderSchemeMenu", J.i18n.GT.$("Scheme"), "aaStructureMenu", J.i18n.GT.$("Secondary Structure"), "structure#PDB", null, "selectMenuText", J.i18n.GT.$("Select ({0})"), "pickAtom", J.i18n.GT.$("Select atom"), "dragAtom", J.i18n.GT.$("Drag atom"), "dragMolecule", J.i18n.GT.$("Drag molecule"), "PDBpickChain", J.i18n.GT.$("Select chain"), "pickElement", J.i18n.GT.$("Select element"), "PDBpickGroup", J.i18n.GT.$("Select group"), "pickMolecule", J.i18n.GT.$("Select molecule"), "SYMMETRYpickSite", J.i18n.GT.$("Select site"), "showSelectionsCB", J.i18n.GT.$("Selection Halos"), "SIGNEDJAVAcaptureFpsSPECIAL", J.i18n.GT.$("Set capture replay rate"), "[set_spin_FPS]Menu", J.i18n.GT.$("Set FPS"), "FRAMESanimFpsMenu", null, "PDBhbondBackbone", J.i18n.GT.$("Set H-Bonds Backbone"), "PDBhbondSidechain", J.i18n.GT.$("Set H-Bonds Side Chain"), "pickingMenu", J.i18n.GT.$("Set picking"), "PDBssbondBackbone", J.i18n.GT.$("Set SS-Bonds Backbone"), "PDBssbondSidechain", J.i18n.GT.$("Set SS-Bonds Side Chain"), "[set_spin_X]Menu", J.i18n.GT.$("Set X Rate"), "[set_spin_Y]Menu", J.i18n.GT.$("Set Y Rate"), "[set_spin_Z]Menu", J.i18n.GT.$("Set Z Rate"), "shapely#PDB", J.i18n.GT.$("Shapely"), "showHydrogensCB", J.i18n.GT.$("Show Hydrogens"), "showMeasurementsCB", J.i18n.GT.$("Show Measurements"), "SYMMETRYpickSymmetry", J.i18n.GT.$("Show symmetry operation"), "showMenu", J.i18n.GT.$("Show"), "proteinSideChains", J.i18n.GT.$("Side Chains"), "slateblue", J.i18n.GT.$("Slate Blue"), "SYMMETRYShowComputedMenu", J.i18n.GT.$("Space Group"), "showSpacegroup", null, "spectraMenu", J.i18n.GT.$("Spectra"), "spinMenu", J.i18n.GT.$("Spin"), "pickSpin", null, "SIGNEDJAVAcaptureBegin", J.i18n.GT.$("Start capturing"), "stereoMenu", J.i18n.GT.$("Stereographic"), "renderSticks", J.i18n.GT.$("Sticks"), "stop", J.i18n.GT.$("Stop"), "strands", J.i18n.GT.$("Strands"), "[color_strands]Menu", null, "PDBstructureMenu", J.i18n.GT.$("Structures"), "colorPDBStructuresMenu", null, "renderMenu", J.i18n.GT.$("Style"), "[color_isosurface]Menu", J.i18n.GT.$("Surfaces"), "surfaceMenu", null, "SYMMETRYSelectComputedMenu", J.i18n.GT.$("Symmetry"), "SYMMETRYshowSymmetry", null, "FILEUNITMenu", null, "systemMenu", J.i18n.GT.$("System"), "relativeTemperature#BFACTORS", J.i18n.GT.$("Temperature (Relative)"), "fixedTemperature#BFACTORS", J.i18n.GT.$("Temperature (Fixed)"), "SIGNEDJAVAcaptureLoopingSPECIAL", J.i18n.GT.$("Toggle capture looping"), "top", JU.PT.split(J.i18n.GT.$("Top[as in \"view from the top, from above\" - (translators: remove this bracketed part]"), "[")[0], "PDBrenderTraceOnly", J.i18n.GT.$("Trace"), "trace", null, "[color_trace]Menu", null, "translations", J.i18n.GT.$("Translations"), "noCharge", J.i18n.GT.$("Uncharged Residues"), "[color_UNITCELL]Menu", J.i18n.GT.$("Unit cell"), "UNITCELLshow", null, "[set_UNITCELL]Menu", null, "showUNITCELLCB", null, "labelUpperLeft", J.i18n.GT.$("Upper Left"), "labelUpperRight", J.i18n.GT.$("Upper Right"), "surfVDW", J.i18n.GT.$("van der Waals Surface"), "VIBRATIONvectorMenu", J.i18n.GT.$("Vectors"), "property_vxyz#VIBRATION", null, "[color_vectors]Menu", null, "VIBRATIONMenu", J.i18n.GT.$("Vibration"), "viewMenuText", J.i18n.GT.$("View {0}"), "viewMenu", J.i18n.GT.$("View"), "violet", J.i18n.GT.$("Violet"), "stereoWallEyed", J.i18n.GT.$("Wall-eyed viewing"), "white", J.i18n.GT.$("White"), "renderWireframe", J.i18n.GT.$("Wireframe"), "labelName", J.i18n.GT.$("With Atom Name"), "labelNumber", J.i18n.GT.$("With Atom Number"), "labelSymbol", J.i18n.GT.$("With Element Symbol"), "yellow", J.i18n.GT.$("Yellow"), "zoomIn", J.i18n.GT.$("Zoom In"), "zoomOut", J.i18n.GT.$("Zoom Out"), "zoomMenu", J.i18n.GT.$("Zoom"), "vector005", J.i18n.GT.o(ang, "0.05"), "bond100", J.i18n.GT.o(ang, "0.10"), "hbond100", null, "ssbond100", null, "vector01", null, "10a", null, "bond150", J.i18n.GT.o(ang, "0.15"), "hbond150", null, "ssbond150", null, "bond200", J.i18n.GT.o(ang, "0.20"), "hbond200", null, "ssbond200", null, "20a", null, "bond250", J.i18n.GT.o(ang, "0.25"), "hbond250", null, "ssbond250", null, "25a", null, "bond300", J.i18n.GT.o(ang, "0.30"), "hbond300", null, "ssbond300", null, "50a", J.i18n.GT.o(ang, "0.50"), "100a", J.i18n.GT.o(ang, "1.0"), "1p", J.i18n.GT.i(pxl, 1), "10p", J.i18n.GT.i(pxl, 10), "3p", J.i18n.GT.i(pxl, 3), "vector3", null, "5p", J.i18n.GT.i(pxl, 5), "atom100", J.i18n.GT.i(vdw, 100), "atom15", J.i18n.GT.i(vdw, 15), "atom20", J.i18n.GT.i(vdw, 20), "atom25", J.i18n.GT.i(vdw, 25), "atom50", J.i18n.GT.i(vdw, 50), "atom75", J.i18n.GT.i(vdw, 75), "SIGNEDNOGLwriteIdtf", J.i18n.GT.o(exm, "IDTF"), "SIGNEDNOGLwriteMaya", J.i18n.GT.o(exm, "Maya"), "SIGNEDNOGLwriteVrml", J.i18n.GT.o(exm, "VRML"), "SIGNEDNOGLwriteX3d", J.i18n.GT.o(exm, "X3D"), "SIGNEDNOGLwriteSTL", J.i18n.GT.o(exm, "STL"), "SIGNEDNOGLwriteGif", J.i18n.GT.o(exi, "GIF"), "SIGNEDNOGLwriteJpg", J.i18n.GT.o(exi, "JPG"), "SIGNEDNOGLwritePng", J.i18n.GT.o(exi, "PNG"), "SIGNEDNOGLwritePngJmol", J.i18n.GT.o(exi, "PNG+JMOL"), "SIGNEDNOGLwritePovray", J.i18n.GT.o(exi, "POV-Ray"), "FILEUNITnineRestricted", J.i18n.GT.o(J.i18n.GT.$("Reload {0} + Display {1}"), Clazz.newArray(-1, ["{444 666 1}", "555"])), "FILEMOLload", J.i18n.GT.o(rld, "(molecular)"), "FILEUNITone", J.i18n.GT.o(rld, "{1 1 1}"), "FILEUNITnine", J.i18n.GT.o(rld, "{444 666 1}"), "vectorScale02", J.i18n.GT.o(scl, "0.2"), "vectorScale05", J.i18n.GT.o(scl, "0.5"), "vectorScale1", J.i18n.GT.o(scl, "1"), "vectorScale2", J.i18n.GT.o(scl, "2"), "vectorScale5", J.i18n.GT.o(scl, "5"), "surfSolvent14", J.i18n.GT.o(J.i18n.GT.$("Solvent Surface ({0}-Angstrom probe)"), "1.4"), "surfSolventAccessible14", J.i18n.GT.o(J.i18n.GT.$("Solvent-Accessible Surface (VDW + {0} Angstrom)"), "1.4"), "vibration20", "*2", "vibration05", "/2", "JAVAmemTotal", "?", "JAVAmemMax", null, "JAVAprocessors", null, "s0", "0", "animfps10", "10", "s10", null, "zoom100", "100%", "zoom150", "150%", "animfps20", "20", "s20", null, "zoom200", "200%", "animfps30", "30", "s30", null, "s40", "40", "zoom400", "400%", "animfps5", "5", "s5", null, "animfps50", "50", "s50", null, "zoom50", "50%", "zoom800", "800%", "JSConsole", J.i18n.GT.$("JavaScript Console"), "jmolMenu", "Jmol", "date", JV.JC.date, "version", JV.JC.version, "javaVender", JV.Viewer.strJavaVendor, "javaVersion", JV.Viewer.strJavaVersion, "os", JV.Viewer.strOSName, "jmolorg", "http://www.jmol.org"]); +J.i18n.GT.setDoTranslate(wasTranslating); +for (var i = 1, n = words.length; i < n; i += 2) if (words[i] == null) words[i] = words[i - 2]; + +return words; +}); +Clazz.overrideMethod(c$, "getMenuAsText", +function(title){ +return this.getStuctureAsText(title, J.popup.MainPopupResourceBundle.menuContents, J.popup.MainPopupResourceBundle.structureContents); +}, "~S"); +c$.menuContents = Clazz.newArray(-1, [ Clazz.newArray(-1, ["@COLOR", "black darkgray lightgray white - red orange yellow green cyan blue indigo violet"]), Clazz.newArray(-1, ["@AXESCOLOR", "gray salmon maroon olive slateblue gold orchid"]), Clazz.newArray(-1, ["popupMenu", "fileMenu modelSetMenu FRAMESbyModelComputedMenu configurationComputedMenu - selectMenuText viewMenu renderMenu colorMenu - surfaceMenu FILEUNITMenu - sceneComputedMenu zoomMenu spinMenu VIBRATIONMenu spectraMenu FRAMESanimateMenu - measureMenu pickingMenu - showConsole JSConsole showMenu computationMenu - languageComputedMenu aboutMenu"]), Clazz.newArray(-1, ["fileMenu", "loadMenu saveMenu exportMenu SIGNEDJAVAcaptureMenuSPECIAL "]), Clazz.newArray(-1, ["loadMenu", "SIGNEDloadFile SIGNEDloadUrl SIGNEDloadPdb SIGNEDloadMol SIGNEDloadScript - reload SIGNEDloadFileUnitCell"]), Clazz.newArray(-1, ["saveMenu", "writeFileTextVARIABLE writeState writeHistory SIGNEDwriteJmol SIGNEDwriteIsosurface "]), Clazz.newArray(-1, ["exportMenu", "SIGNEDNOGLwriteGif SIGNEDNOGLwriteJpg SIGNEDNOGLwritePng SIGNEDNOGLwritePngJmol SIGNEDNOGLwritePovray - SIGNEDNOGLwriteVrml SIGNEDNOGLwriteX3d SIGNEDNOGLwriteSTL"]), Clazz.newArray(-1, ["selectMenuText", "hideNotSelectedCB showSelectionsCB - selectAll selectNone invertSelection - elementsComputedMenu SYMMETRYSelectComputedMenu - PDBproteinMenu PDBnucleicMenu PDBheteroMenu PDBcarboMenu PDBnoneOfTheAbove"]), Clazz.newArray(-1, ["PDBproteinMenu", "PDBaaResiduesComputedMenu - allProtein proteinBackbone proteinSideChains - polar nonpolar - positiveCharge negativeCharge noCharge"]), Clazz.newArray(-1, ["PDBcarboMenu", "PDBcarboResiduesComputedMenu - allCarbo"]), Clazz.newArray(-1, ["PDBnucleicMenu", "PDBnucleicResiduesComputedMenu - allNucleic nucleicBackbone nucleicBases - DNA RNA - atPairs auPairs gcPairs - aaStructureMenu"]), Clazz.newArray(-1, ["PDBheteroMenu", "PDBheteroComputedMenu - allHetero Solvent Water - Ligand exceptWater nonWaterSolvent"]), Clazz.newArray(-1, ["viewMenu", "best front left right top bottom back - axisX axisY axisZ - axisA axisB axisC"]), Clazz.newArray(-1, ["renderMenu", "renderSchemeMenu - atomMenu labelMenu bondMenu hbondMenu ssbondMenu - PDBstructureMenu - [set_axes]Menu [set_boundbox]Menu [set_UNITCELL]Menu - perspectiveDepthCB stereoMenu"]), Clazz.newArray(-1, ["renderSchemeMenu", "renderCpkSpacefill renderBallAndStick renderSticks renderWireframe PDBrenderCartoonsOnly PDBrenderTraceOnly"]), Clazz.newArray(-1, ["atomMenu", "showHydrogensCB - atomNone - atom15 atom20 atom25 atom50 atom75 atom100"]), Clazz.newArray(-1, ["bondMenu", "bondNone bondWireframe - bond100 bond150 bond200 bond250 bond300"]), Clazz.newArray(-1, ["hbondMenu", "hbondCalc hbondNone hbondWireframe - PDBhbondSidechain PDBhbondBackbone - hbond100 hbond150 hbond200 hbond250 hbond300"]), Clazz.newArray(-1, ["ssbondMenu", "ssbondNone ssbondWireframe - PDBssbondSidechain PDBssbondBackbone - ssbond100 ssbond150 ssbond200 ssbond250 ssbond300"]), Clazz.newArray(-1, ["PDBstructureMenu", "structureNone - backbone cartoon cartoonRockets ribbons rockets strands trace"]), Clazz.newArray(-1, ["VIBRATIONvectorMenu", "vectorOff vectorOn vibScale20 vibScale05 vector3 vector005 vector01 - vectorScale02 vectorScale05 vectorScale1 vectorScale2 vectorScale5"]), Clazz.newArray(-1, ["stereoMenu", "stereoNone stereoRedCyan stereoRedBlue stereoRedGreen stereoCrossEyed stereoWallEyed"]), Clazz.newArray(-1, ["labelMenu", "labelNone - labelSymbol labelName labelNumber - labelPositionMenu"]), Clazz.newArray(-1, ["labelPositionMenu", "labelCentered labelUpperRight labelLowerRight labelUpperLeft labelLowerLeft"]), Clazz.newArray(-1, ["colorMenu", "colorrasmolCB [color_]schemeMenu - [color_atoms]Menu [color_bonds]Menu [color_hbonds]Menu [color_ssbonds]Menu colorPDBStructuresMenu [color_isosurface]Menu - [color_labels]Menu [color_vectors]Menu - [color_axes]Menu [color_boundbox]Menu [color_UNITCELL]Menu [color_background]Menu"]), Clazz.newArray(-1, ["[color_atoms]Menu", "schemeMenu - @COLOR - opaque translucent"]), Clazz.newArray(-1, ["[color_bonds]Menu", "none - @COLOR - opaque translucent"]), Clazz.newArray(-1, ["[color_hbonds]Menu", null]), Clazz.newArray(-1, ["[color_ssbonds]Menu", null]), Clazz.newArray(-1, ["[color_labels]Menu", null]), Clazz.newArray(-1, ["[color_vectors]Menu", null]), Clazz.newArray(-1, ["[color_backbone]Menu", "none - schemeMenu - @COLOR - opaque translucent"]), Clazz.newArray(-1, ["[color_cartoon]sMenu", null]), Clazz.newArray(-1, ["[color_ribbon]sMenu", null]), Clazz.newArray(-1, ["[color_rockets]Menu", null]), Clazz.newArray(-1, ["[color_strands]Menu", null]), Clazz.newArray(-1, ["[color_trace]Menu", null]), Clazz.newArray(-1, ["[color_background]Menu", "@COLOR"]), Clazz.newArray(-1, ["[color_isosurface]Menu", "@COLOR - opaque translucent"]), Clazz.newArray(-1, ["[color_axes]Menu", "@AXESCOLOR"]), Clazz.newArray(-1, ["[color_boundbox]Menu", null]), Clazz.newArray(-1, ["[color_UNITCELL]Menu", null]), Clazz.newArray(-1, ["colorPDBStructuresMenu", "[color_backbone]Menu [color_cartoon]sMenu [color_ribbon]sMenu [color_rockets]Menu [color_strands]Menu [color_trace]Menu"]), Clazz.newArray(-1, ["schemeMenu", "cpk molecule formalcharge partialcharge - altloc#PDB amino#PDB chain#PDB group#PDB monomer#PDB shapely#PDB structure#PDB relativeTemperature#BFACTORS fixedTemperature#BFACTORS property_vxyz#VIBRATION"]), Clazz.newArray(-1, ["[color_]schemeMenu", null]), Clazz.newArray(-1, ["zoomMenu", "zoom50 zoom100 zoom150 zoom200 zoom400 zoom800 - zoomIn zoomOut"]), Clazz.newArray(-1, ["spinMenu", "spinOn spinOff - [set_spin_X]Menu [set_spin_Y]Menu [set_spin_Z]Menu - [set_spin_FPS]Menu"]), Clazz.newArray(-1, ["VIBRATIONMenu", "vibrationOff vibrationOn vibration20 vibration05 VIBRATIONvectorMenu"]), Clazz.newArray(-1, ["spectraMenu", "hnmrMenu cnmrMenu"]), Clazz.newArray(-1, ["FRAMESanimateMenu", "animModeMenu - play pause resume stop - nextframe prevframe rewind - playrev restart - FRAMESanimFpsMenu"]), Clazz.newArray(-1, ["FRAMESanimFpsMenu", "animfps5 animfps10 animfps20 animfps30 animfps50"]), Clazz.newArray(-1, ["measureMenu", "showMeasurementsCB - measureOff measureDistance measureAngle measureTorsion PDBmeasureSequence - measureDelete measureList - distanceNanometers distanceAngstroms distancePicometers distanceHz"]), Clazz.newArray(-1, ["pickingMenu", "pickOff pickCenter pickIdent pickLabel pickAtom pickMolecule pickElement - dragAtom dragMolecule - pickSpin - modelKitMode - PDBpickChain PDBpickGroup SYMMETRYpickSite"]), Clazz.newArray(-1, ["computationMenu", "minimize"]), Clazz.newArray(-1, ["showMenu", "showHistory showFile showFileHeader - showOrient showMeasure - showSpacegroup showState SYMMETRYshowSymmetry UNITCELLshow - showIsosurface showMo - modelkit extractMOL"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureMenuSPECIAL", "SIGNEDJAVAcaptureRock SIGNEDJAVAcaptureSpin - SIGNEDJAVAcaptureBegin SIGNEDJAVAcaptureEnd SIGNEDJAVAcaptureOff SIGNEDJAVAcaptureOn SIGNEDJAVAcaptureFpsSPECIAL SIGNEDJAVAcaptureLoopingSPECIAL"]), Clazz.newArray(-1, ["[set_spin_X]Menu", "s0 s5 s10 s20 s30 s40 s50"]), Clazz.newArray(-1, ["[set_spin_Y]Menu", null]), Clazz.newArray(-1, ["[set_spin_Z]Menu", null]), Clazz.newArray(-1, ["[set_spin_FPS]Menu", null]), Clazz.newArray(-1, ["animModeMenu", "onceThrough palindrome loop"]), Clazz.newArray(-1, ["surfaceMenu", "surfDots surfVDW surfSolventAccessible14 surfSolvent14 surfMolecular surf2MEP surfMEP surfMoComputedMenuText - surfOpaque surfTranslucent surfOff"]), Clazz.newArray(-1, ["FILEUNITMenu", "SYMMETRYShowComputedMenu FILEMOLload FILEUNITone FILEUNITnine FILEUNITnineRestricted FILEUNITninePoly"]), Clazz.newArray(-1, ["[set_axes]Menu", "on off#axes dotted - byPixelMenu byAngstromMenu"]), Clazz.newArray(-1, ["[set_boundbox]Menu", null]), Clazz.newArray(-1, ["[set_UNITCELL]Menu", null]), Clazz.newArray(-1, ["byPixelMenu", "1p 3p 5p 10p"]), Clazz.newArray(-1, ["byAngstromMenu", "10a 20a 25a 50a 100a"]), Clazz.newArray(-1, ["aboutMenu", "jmolMenu systemMenu"]), Clazz.newArray(-1, ["jmolMenu", "APPLETid version date - help - mouse translations jmolorg"]), Clazz.newArray(-1, ["systemMenu", "os javaVender javaVersion JAVAprocessors JAVAmemMax JAVAmemTotal"])]); +c$.structureContents = Clazz.newArray(-1, [ Clazz.newArray(-1, ["jmolorg", "show url \"http://www.jmol.org\""]), Clazz.newArray(-1, ["help", "help"]), Clazz.newArray(-1, ["mouse", "show url \"http://wiki.jmol.org/index.php/Mouse_Manual\""]), Clazz.newArray(-1, ["translations", "show url \"http://wiki.jmol.org/index.php/Internationalisation\""]), Clazz.newArray(-1, ["colorrasmolCB", ""]), Clazz.newArray(-1, ["hideNotSelectedCB", "set hideNotSelected true | set hideNotSelected false; hide(none)"]), Clazz.newArray(-1, ["perspectiveDepthCB", ""]), Clazz.newArray(-1, ["showAxesCB", "set showAxes true | set showAxes false;set axesMolecular"]), Clazz.newArray(-1, ["showBoundBoxCB", ""]), Clazz.newArray(-1, ["showHydrogensCB", ""]), Clazz.newArray(-1, ["showMeasurementsCB", ""]), Clazz.newArray(-1, ["showSelectionsCB", ""]), Clazz.newArray(-1, ["showUNITCELLCB", ""]), Clazz.newArray(-1, ["selectAll", "SELECT all"]), Clazz.newArray(-1, ["selectNone", "SELECT none"]), Clazz.newArray(-1, ["invertSelection", "SELECT not selected"]), Clazz.newArray(-1, ["allProtein", "SELECT protein"]), Clazz.newArray(-1, ["proteinBackbone", "SELECT protein and backbone"]), Clazz.newArray(-1, ["proteinSideChains", "SELECT protein and not backbone"]), Clazz.newArray(-1, ["polar", "SELECT protein and polar"]), Clazz.newArray(-1, ["nonpolar", "SELECT protein and not polar"]), Clazz.newArray(-1, ["positiveCharge", "SELECT protein and basic"]), Clazz.newArray(-1, ["negativeCharge", "SELECT protein and acidic"]), Clazz.newArray(-1, ["noCharge", "SELECT protein and not (acidic,basic)"]), Clazz.newArray(-1, ["allCarbo", "SELECT carbohydrate"]), Clazz.newArray(-1, ["allNucleic", "SELECT nucleic"]), Clazz.newArray(-1, ["DNA", "SELECT dna"]), Clazz.newArray(-1, ["RNA", "SELECT rna"]), Clazz.newArray(-1, ["nucleicBackbone", "SELECT nucleic and backbone"]), Clazz.newArray(-1, ["nucleicBases", "SELECT nucleic and not backbone"]), Clazz.newArray(-1, ["atPairs", "SELECT a,t"]), Clazz.newArray(-1, ["gcPairs", "SELECT g,c"]), Clazz.newArray(-1, ["auPairs", "SELECT a,u"]), Clazz.newArray(-1, ["A", "SELECT a"]), Clazz.newArray(-1, ["C", "SELECT c"]), Clazz.newArray(-1, ["G", "SELECT g"]), Clazz.newArray(-1, ["T", "SELECT t"]), Clazz.newArray(-1, ["U", "SELECT u"]), Clazz.newArray(-1, ["allHetero", "SELECT hetero"]), Clazz.newArray(-1, ["Solvent", "SELECT solvent"]), Clazz.newArray(-1, ["Water", "SELECT water"]), Clazz.newArray(-1, ["nonWaterSolvent", "SELECT solvent and not water"]), Clazz.newArray(-1, ["exceptWater", "SELECT hetero and not water"]), Clazz.newArray(-1, ["Ligand", "SELECT ligand"]), Clazz.newArray(-1, ["PDBnoneOfTheAbove", "SELECT not(hetero,protein,nucleic,carbohydrate)"]), Clazz.newArray(-1, ["best", "rotate best -1.0"]), Clazz.newArray(-1, ["front", J.popup.MainPopupResourceBundle.Box("moveto 2.0 front;delay 1")]), Clazz.newArray(-1, ["left", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 left;delay 1")]), Clazz.newArray(-1, ["right", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 right;delay 1")]), Clazz.newArray(-1, ["top", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 top;delay 1")]), Clazz.newArray(-1, ["bottom", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 bottom;delay 1")]), Clazz.newArray(-1, ["back", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 back;delay 1")]), Clazz.newArray(-1, ["axisA", "moveto axis a"]), Clazz.newArray(-1, ["axisB", "moveto axis b"]), Clazz.newArray(-1, ["axisC", "moveto axis c"]), Clazz.newArray(-1, ["axisX", "moveto axis x"]), Clazz.newArray(-1, ["axisY", "moveto axis y"]), Clazz.newArray(-1, ["axisZ", "moveto axis z"]), Clazz.newArray(-1, ["renderCpkSpacefill", "restrict bonds not selected;select not selected;spacefill 100%;color cpk"]), Clazz.newArray(-1, ["renderBallAndStick", "restrict bonds not selected;select not selected;spacefill 23%AUTO;wireframe 0.15;color cpk"]), Clazz.newArray(-1, ["renderSticks", "restrict bonds not selected;select not selected;wireframe 0.3;color cpk"]), Clazz.newArray(-1, ["renderWireframe", "restrict bonds not selected;select not selected;wireframe on;color cpk"]), Clazz.newArray(-1, ["PDBrenderCartoonsOnly", "restrict bonds not selected;select not selected;cartoons on;color structure"]), Clazz.newArray(-1, ["PDBrenderTraceOnly", "restrict bonds not selected;select not selected;trace on;color structure"]), Clazz.newArray(-1, ["atomNone", "cpk off"]), Clazz.newArray(-1, ["atom15", "cpk 15%"]), Clazz.newArray(-1, ["atom20", "cpk 20%"]), Clazz.newArray(-1, ["atom25", "cpk 25%"]), Clazz.newArray(-1, ["atom50", "cpk 50%"]), Clazz.newArray(-1, ["atom75", "cpk 75%"]), Clazz.newArray(-1, ["atom100", "cpk on"]), Clazz.newArray(-1, ["bondNone", "wireframe off"]), Clazz.newArray(-1, ["bondWireframe", "wireframe on"]), Clazz.newArray(-1, ["bond100", "wireframe .1"]), Clazz.newArray(-1, ["bond150", "wireframe .15"]), Clazz.newArray(-1, ["bond200", "wireframe .2"]), Clazz.newArray(-1, ["bond250", "wireframe .25"]), Clazz.newArray(-1, ["bond300", "wireframe .3"]), Clazz.newArray(-1, ["hbondCalc", "hbonds calculate"]), Clazz.newArray(-1, ["hbondNone", "hbonds off"]), Clazz.newArray(-1, ["hbondWireframe", "hbonds on"]), Clazz.newArray(-1, ["PDBhbondSidechain", "set hbonds sidechain"]), Clazz.newArray(-1, ["PDBhbondBackbone", "set hbonds backbone"]), Clazz.newArray(-1, ["hbond100", "hbonds .1"]), Clazz.newArray(-1, ["hbond150", "hbonds .15"]), Clazz.newArray(-1, ["hbond200", "hbonds .2"]), Clazz.newArray(-1, ["hbond250", "hbonds .25"]), Clazz.newArray(-1, ["hbond300", "hbonds .3"]), Clazz.newArray(-1, ["ssbondNone", "ssbonds off"]), Clazz.newArray(-1, ["ssbondWireframe", "ssbonds on"]), Clazz.newArray(-1, ["PDBssbondSidechain", "set ssbonds sidechain"]), Clazz.newArray(-1, ["PDBssbondBackbone", "set ssbonds backbone"]), Clazz.newArray(-1, ["ssbond100", "ssbonds .1"]), Clazz.newArray(-1, ["ssbond150", "ssbonds .15"]), Clazz.newArray(-1, ["ssbond200", "ssbonds .2"]), Clazz.newArray(-1, ["ssbond250", "ssbonds .25"]), Clazz.newArray(-1, ["ssbond300", "ssbonds .3"]), Clazz.newArray(-1, ["structureNone", "backbone off;cartoons off;ribbons off;rockets off;strands off;trace off;"]), Clazz.newArray(-1, ["backbone", "restrict not selected;select not selected;backbone 0.3"]), Clazz.newArray(-1, ["cartoon", "restrict not selected;select not selected;set cartoonRockets false;cartoons on"]), Clazz.newArray(-1, ["cartoonRockets", "restrict not selected;select not selected;set cartoonRockets;cartoons on"]), Clazz.newArray(-1, ["ribbons", "restrict not selected;select not selected;ribbons on"]), Clazz.newArray(-1, ["rockets", "restrict not selected;select not selected;rockets on"]), Clazz.newArray(-1, ["strands", "restrict not selected;select not selected;strands on"]), Clazz.newArray(-1, ["trace", "restrict not selected;select not selected;trace 0.3"]), Clazz.newArray(-1, ["vibrationOff", "vibration off"]), Clazz.newArray(-1, ["vibrationOn", "vibration on"]), Clazz.newArray(-1, ["vibration20", "vibrationScale *= 2"]), Clazz.newArray(-1, ["vibration05", "vibrationScale /= 2"]), Clazz.newArray(-1, ["vectorOff", "vectors off"]), Clazz.newArray(-1, ["vectorOn", "vectors on"]), Clazz.newArray(-1, ["vector3", "vectors 3"]), Clazz.newArray(-1, ["vector005", "vectors 0.05"]), Clazz.newArray(-1, ["vector01", "vectors 0.1"]), Clazz.newArray(-1, ["vectorScale02", "vector scale 0.2"]), Clazz.newArray(-1, ["vectorScale05", "vector scale 0.5"]), Clazz.newArray(-1, ["vectorScale1", "vector scale 1"]), Clazz.newArray(-1, ["vectorScale2", "vector scale 2"]), Clazz.newArray(-1, ["vectorScale5", "vector scale 5"]), Clazz.newArray(-1, ["stereoNone", "stereo off"]), Clazz.newArray(-1, ["stereoRedCyan", "stereo redcyan 3"]), Clazz.newArray(-1, ["stereoRedBlue", "stereo redblue 3"]), Clazz.newArray(-1, ["stereoRedGreen", "stereo redgreen 3"]), Clazz.newArray(-1, ["stereoCrossEyed", "stereo -5"]), Clazz.newArray(-1, ["stereoWallEyed", "stereo 5"]), Clazz.newArray(-1, ["labelNone", "label off"]), Clazz.newArray(-1, ["labelSymbol", "label %e"]), Clazz.newArray(-1, ["labelName", "label %a"]), Clazz.newArray(-1, ["labelNumber", "label %i"]), Clazz.newArray(-1, ["labelCentered", "set labeloffset 0 0"]), Clazz.newArray(-1, ["labelUpperRight", "set labeloffset 4 4"]), Clazz.newArray(-1, ["labelLowerRight", "set labeloffset 4 -4"]), Clazz.newArray(-1, ["labelUpperLeft", "set labeloffset -4 4"]), Clazz.newArray(-1, ["labelLowerLeft", "set labeloffset -4 -4"]), Clazz.newArray(-1, ["zoom50", "zoom 50"]), Clazz.newArray(-1, ["zoom100", "zoom 100"]), Clazz.newArray(-1, ["zoom150", "zoom 150"]), Clazz.newArray(-1, ["zoom200", "zoom 200"]), Clazz.newArray(-1, ["zoom400", "zoom 400"]), Clazz.newArray(-1, ["zoom800", "zoom 800"]), Clazz.newArray(-1, ["zoomIn", "move 0 0 0 40 0 0 0 0 1"]), Clazz.newArray(-1, ["zoomOut", "move 0 0 0 -40 0 0 0 0 1"]), Clazz.newArray(-1, ["spinOn", "spin on"]), Clazz.newArray(-1, ["spinOff", "spin off"]), Clazz.newArray(-1, ["s0", "0"]), Clazz.newArray(-1, ["s5", "5"]), Clazz.newArray(-1, ["s10", "10"]), Clazz.newArray(-1, ["s20", "20"]), Clazz.newArray(-1, ["s30", "30"]), Clazz.newArray(-1, ["s40", "40"]), Clazz.newArray(-1, ["s50", "50"]), Clazz.newArray(-1, ["onceThrough", "anim mode once#"]), Clazz.newArray(-1, ["palindrome", "anim mode palindrome#"]), Clazz.newArray(-1, ["loop", "anim mode loop#"]), Clazz.newArray(-1, ["play", "anim play#"]), Clazz.newArray(-1, ["pause", "anim pause#"]), Clazz.newArray(-1, ["resume", "anim resume#"]), Clazz.newArray(-1, ["stop", "anim off#"]), Clazz.newArray(-1, ["nextframe", "frame next#"]), Clazz.newArray(-1, ["prevframe", "frame prev#"]), Clazz.newArray(-1, ["playrev", "anim playrev#"]), Clazz.newArray(-1, ["rewind", "anim rewind#"]), Clazz.newArray(-1, ["restart", "anim on#"]), Clazz.newArray(-1, ["animfps5", "anim fps 5#"]), Clazz.newArray(-1, ["animfps10", "anim fps 10#"]), Clazz.newArray(-1, ["animfps20", "anim fps 20#"]), Clazz.newArray(-1, ["animfps30", "anim fps 30#"]), Clazz.newArray(-1, ["animfps50", "anim fps 50#"]), Clazz.newArray(-1, ["measureOff", "set pickingstyle MEASURE OFF; set picking OFF"]), Clazz.newArray(-1, ["measureDistance", "set pickingstyle MEASURE; set picking MEASURE DISTANCE"]), Clazz.newArray(-1, ["measureAngle", "set pickingstyle MEASURE; set picking MEASURE ANGLE"]), Clazz.newArray(-1, ["measureTorsion", "set pickingstyle MEASURE; set picking MEASURE TORSION"]), Clazz.newArray(-1, ["PDBmeasureSequence", "set pickingstyle MEASURE; set picking MEASURE SEQUENCE"]), Clazz.newArray(-1, ["measureDelete", "measure delete"]), Clazz.newArray(-1, ["measureList", "console on;show measurements"]), Clazz.newArray(-1, ["distanceNanometers", "select *; set measure nanometers"]), Clazz.newArray(-1, ["distanceAngstroms", "select *; set measure angstroms"]), Clazz.newArray(-1, ["distancePicometers", "select *; set measure picometers"]), Clazz.newArray(-1, ["distanceHz", "select *; set measure hz"]), Clazz.newArray(-1, ["pickOff", "set picking off"]), Clazz.newArray(-1, ["pickCenter", "set picking center"]), Clazz.newArray(-1, ["pickIdent", "set picking ident"]), Clazz.newArray(-1, ["pickLabel", "set picking label"]), Clazz.newArray(-1, ["pickAtom", "set picking atom"]), Clazz.newArray(-1, ["dragAtom", "set picking dragAtom"]), Clazz.newArray(-1, ["dragMolecule", "set picking dragMolecule"]), Clazz.newArray(-1, ["PDBpickChain", "set picking chain"]), Clazz.newArray(-1, ["pickElement", "set picking element"]), Clazz.newArray(-1, ["modelKitMode", "set modelKitMode"]), Clazz.newArray(-1, ["PDBpickGroup", "set picking group"]), Clazz.newArray(-1, ["pickMolecule", "set picking molecule"]), Clazz.newArray(-1, ["SYMMETRYpickSite", "set picking site"]), Clazz.newArray(-1, ["pickSpin", "set picking spin"]), Clazz.newArray(-1, ["SYMMETRYpickSymmetry", "set picking symmetry"]), Clazz.newArray(-1, ["showConsole", "console"]), Clazz.newArray(-1, ["JSConsole", "JSCONSOLE"]), Clazz.newArray(-1, ["showFile", "console on;show file"]), Clazz.newArray(-1, ["showFileHeader", "console on;getProperty FileHeader"]), Clazz.newArray(-1, ["showHistory", "console on;show history"]), Clazz.newArray(-1, ["showIsosurface", "console on;show isosurface"]), Clazz.newArray(-1, ["showMeasure", "console on;show measure"]), Clazz.newArray(-1, ["showMo", "console on;show mo"]), Clazz.newArray(-1, ["showModel", "console on;show model"]), Clazz.newArray(-1, ["showOrient", "console on;show orientation"]), Clazz.newArray(-1, ["showSpacegroup", "console on;show spacegroup"]), Clazz.newArray(-1, ["showState", "console on;show state"]), Clazz.newArray(-1, ["reload", "load \"\""]), Clazz.newArray(-1, ["SIGNEDloadPdb", JV.JC.getMenuScript("openPDB")]), Clazz.newArray(-1, ["SIGNEDloadMol", JV.JC.getMenuScript("openMOL")]), Clazz.newArray(-1, ["SIGNEDloadFile", "load ?"]), Clazz.newArray(-1, ["SIGNEDloadUrl", "load http://?"]), Clazz.newArray(-1, ["SIGNEDloadFileUnitCell", "load ? {1 1 1}"]), Clazz.newArray(-1, ["SIGNEDloadScript", "script ?.spt"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureRock", "animation mode loop;capture '?Jmol.gif' rock y 10"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureSpin", "animation mode loop;capture '?Jmol.gif' spin y"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureBegin", "capture '?Jmol.gif'"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureEnd", "capture ''"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureOff", "capture off"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureOn", "capture on"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureFpsSPECIAL", "animation fps @{0+prompt('Capture replay frames per second?', animationFPS)};prompt 'animation FPS ' + animationFPS"]), Clazz.newArray(-1, ["SIGNEDJAVAcaptureLoopingSPECIAL", "animation mode @{(animationMode=='ONCE' ? 'LOOP':'ONCE')};prompt 'animation MODE ' + animationMode"]), Clazz.newArray(-1, ["writeFileTextVARIABLE", "if (_applet && !_signedApplet) { console;show file } else { write file \"?FILE?\"}"]), Clazz.newArray(-1, ["writeState", "if (_applet && !_signedApplet) { console;show state } else { write state \"?FILEROOT?.spt\"}"]), Clazz.newArray(-1, ["writeHistory", "if (_applet && !_signedApplet) { console;show history } else { write history \"?FILEROOT?.his\"}"]), Clazz.newArray(-1, ["SIGNEDwriteJmol", "write PNGJ \"?FILEROOT?.png\""]), Clazz.newArray(-1, ["SIGNEDwriteIsosurface", "write isosurface \"?FILEROOT?.jvxl\""]), Clazz.newArray(-1, ["SIGNEDNOGLwriteGif", "write image \"?FILEROOT?.gif\""]), Clazz.newArray(-1, ["SIGNEDNOGLwriteJpg", "write image \"?FILEROOT?.jpg\""]), Clazz.newArray(-1, ["SIGNEDNOGLwritePng", "write image \"?FILEROOT?.png\""]), Clazz.newArray(-1, ["SIGNEDNOGLwritePngJmol", "write PNGJ \"?FILEROOT?.png\""]), Clazz.newArray(-1, ["SIGNEDNOGLwritePovray", "write POVRAY \"?FILEROOT?.pov\""]), Clazz.newArray(-1, ["SIGNEDNOGLwriteVrml", "write VRML \"?FILEROOT?.wrl\""]), Clazz.newArray(-1, ["SIGNEDNOGLwriteX3d", "write X3D \"?FILEROOT?.x3d\""]), Clazz.newArray(-1, ["SIGNEDNOGLwriteSTL", "write STL \"?FILEROOT?.stl\""]), Clazz.newArray(-1, ["SIGNEDNOGLwriteIdtf", "write IDTF \"?FILEROOT?.idtf\""]), Clazz.newArray(-1, ["SIGNEDNOGLwriteMaya", "write MAYA \"?FILEROOT?.ma\""]), Clazz.newArray(-1, ["SYMMETRYshowSymmetry", "console on;show symmetry"]), Clazz.newArray(-1, ["UNITCELLshow", "console on;show unitcell"]), Clazz.newArray(-1, ["extractMOL", "console on;getproperty extractModel \"visible\" "]), Clazz.newArray(-1, ["minimize", "minimize"]), Clazz.newArray(-1, ["modelkit", "set modelkitmode"]), Clazz.newArray(-1, ["surfDots", "dots on"]), Clazz.newArray(-1, ["surfVDW", "isosurface delete resolution 0 solvent 0 translucent"]), Clazz.newArray(-1, ["surfMolecular", "isosurface delete resolution 0 molecular translucent"]), Clazz.newArray(-1, ["surfSolvent14", "isosurface delete resolution 0 solvent 1.4 translucent"]), Clazz.newArray(-1, ["surfSolventAccessible14", "isosurface delete resolution 0 sasurface 1.4 translucent"]), Clazz.newArray(-1, ["surfMEP", "isosurface delete resolution 0 vdw color range all map MEP translucent"]), Clazz.newArray(-1, ["surf2MEP", "isosurface delete resolution 0 vdw color range -0.1 0.1 map MEP translucent"]), Clazz.newArray(-1, ["surfOpaque", "mo opaque;isosurface opaque"]), Clazz.newArray(-1, ["surfTranslucent", "mo translucent;isosurface translucent"]), Clazz.newArray(-1, ["surfOff", "mo delete;isosurface delete;var ~~sel = {selected};select *;dots off;select ~~sel"]), Clazz.newArray(-1, ["FILEMOLload", "save orientation;load \"\";restore orientation;center"]), Clazz.newArray(-1, ["FILEUNITone", "save orientation;load \"\" {1 1 1} ;restore orientation;center"]), Clazz.newArray(-1, ["FILEUNITnine", "save orientation;load \"\" {444 666 1} ;restore orientation;center"]), Clazz.newArray(-1, ["FILEUNITnineRestricted", "save orientation;load \"\" {444 666 1} ;restore orientation; unitcell on; display cell=555;center visible;zoom 200"]), Clazz.newArray(-1, ["FILEUNITninePoly", "save orientation;load \"\" {444 666 1} ;restore orientation; unitcell on; display cell=555; polyhedra 4,6 (displayed);center (visible);zoom 200"]), Clazz.newArray(-1, ["1p", "on"]), Clazz.newArray(-1, ["3p", "3"]), Clazz.newArray(-1, ["5p", "5"]), Clazz.newArray(-1, ["10p", "10"]), Clazz.newArray(-1, ["10a", "0.1"]), Clazz.newArray(-1, ["20a", "0.20"]), Clazz.newArray(-1, ["25a", "0.25"]), Clazz.newArray(-1, ["50a", "0.50"]), Clazz.newArray(-1, ["100a", "1.0"])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/popup/PopupHelper.js b/config/plugins/visualizations/jmol/static/j2s/J/popup/PopupHelper.js new file mode 100755 index 000000000000..14cbd988dd4a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/popup/PopupHelper.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.popup"); +Clazz.declareInterface(J.popup, "PopupHelper"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/popup/PopupResource.js b/config/plugins/visualizations/jmol/static/j2s/J/popup/PopupResource.js new file mode 100755 index 000000000000..1f2f8c9316dd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/popup/PopupResource.js @@ -0,0 +1,109 @@ +Clazz.declarePackage("J.popup"); +Clazz.load(null, "J.popup.PopupResource", ["java.io.BufferedReader", "$.StringReader", "java.util.Properties", "JU.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.structure = null; +this.words = null; +Clazz.instantialize(this, arguments);}, J.popup, "PopupResource", null); +Clazz.makeConstructor(c$, +function(menuStructure, menuText){ +this.structure = new java.util.Properties(); +this.words = new java.util.Properties(); +this.buildStructure(menuStructure); +this.localize(menuStructure != null, menuText); +}, "~S,java.util.Properties"); +Clazz.defineMethod(c$, "getStructure", +function(key){ +return this.structure.getProperty(key); +}, "~S"); +Clazz.defineMethod(c$, "getWord", +function(key){ +var str = this.words.getProperty(key); +return (str == null ? key : str); +}, "~S"); +Clazz.defineMethod(c$, "setStructure", +function(slist, gt){ +var br = new java.io.BufferedReader( new java.io.StringReader(slist)); +var line; +var pt; +try { +while ((line = br.readLine()) != null) { +if (line.length == 0 || line.charAt(0) == '#') continue; +pt = line.indexOf("="); +if (pt < 0) { +pt = line.length; +line += "="; +}var name = line.substring(0, pt).trim(); +var value = line.substring(pt + 1).trim(); +var label = null; +if ((pt = name.indexOf("|")) >= 0) { +label = name.substring(pt + 1).trim(); +name = name.substring(0, pt).trim(); +}if (name.length == 0) continue; +if (value.length > 0) this.structure.setProperty(name, value); +if (label != null && label.length > 0) this.words.setProperty(name, (gt == null ? label : gt.translate(label))); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +try { +br.close(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~S,J.api.Translator"); +Clazz.defineMethod(c$, "addItems", +function(itemPairs){ +var previous = ""; +for (var i = 0; i < itemPairs.length; i++) { +var pair = itemPairs[i]; +var str = pair[1]; +if (str == null) str = previous; +previous = str; +this.structure.setProperty(pair[0], str); +} +}, "~A"); +Clazz.defineMethod(c$, "localize", +function(haveUserMenu, menuText){ +var wordContents = this.getWordContents(); +for (var i = 0; i < wordContents.length; i++) { +var item = wordContents[i++]; +var word = this.words.getProperty(item); +if (word == null) word = wordContents[i]; +this.words.setProperty(item, word); +if (menuText != null && item.indexOf("Text") >= 0) menuText.setProperty(item, word); +} +}, "~B,java.util.Properties"); +Clazz.defineMethod(c$, "getStuctureAsText", +function(title, menuContents, structureContents){ +return "# " + this.getMenuName() + ".mnu " + title + "\n\n" + "# Part I -- Menu Structure\n" + "# ------------------------\n\n" + this.dumpStructure(menuContents) + "\n\n" + "# Part II -- Key Definitions\n" + "# --------------------------\n\n" + this.dumpStructure(structureContents) + "\n\n" + "# Part III -- Word Translations\n" + "# -----------------------------\n\n" + this.dumpWords(); +}, "~S,~A,~A"); +Clazz.defineMethod(c$, "dumpWords", +function(){ +var wordContents = this.getWordContents(); +var s = new JU.SB(); +for (var i = 0; i < wordContents.length; i++) { +var key = wordContents[i++]; +if (this.structure.getProperty(key) == null) s.append(key).append(" | ").append(wordContents[i]).appendC('\n'); +} +return s.toString(); +}); +Clazz.defineMethod(c$, "dumpStructure", +function(items){ +var previous = ""; +var s = new JU.SB(); +for (var i = 0; i < items.length; i++) { +var key = items[i][0]; +var label = this.words.getProperty(key); +if (label != null) key += " | " + label; +s.append(key).append(" = ").append(items[i][1] == null ? previous : (previous = items[i][1])).appendC('\n'); +} +return s.toString(); +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/MOCalculation.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/MOCalculation.js new file mode 100755 index 000000000000..52f313b1a8f8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/MOCalculation.js @@ -0,0 +1,764 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(["J.quantum.QuantumCalculation"], "J.quantum.MOCalculation", ["javajs.api.Interface", "J.quantum.QS", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.CX = null; +this.CY = null; +this.CZ = null; +this.DXY = null; +this.DXZ = null; +this.DYZ = null; +this.EX = null; +this.EY = null; +this.EZ = null; +this.calculationType = null; +this.shells = null; +this.gaussians = null; +this.slaters = null; +this.moCoefficients = null; +this.moCoeff = 0; +this.gaussianPtr = 0; +this.normType = 0; +this.dfCoefMaps = null; +this.linearCombination = null; +this.coefs = null; +this.moFactor = 1; +this.havePoints = false; +this.testing = true; +this.highLEnabled = null; +this.sum = -1; +this.nGaussians = 0; +this.doShowShellType = false; +this.warned = null; +this.dataAdders = null; +this.dataAdderOK = null; +this.coeffs = null; +this.map = null; +this.lastGaussianPtr = -1; +this.isSquaredLinear = false; +Clazz.instantialize(this, arguments);}, J.quantum, "MOCalculation", J.quantum.QuantumCalculation); +Clazz.prepareFields (c$, function(){ +this.dataAdders = new Array(20); +this.dataAdderOK = Clazz.newIntArray (20, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.quantum.MOCalculation, []); +}); +Clazz.defineMethod(c$, "setupCalculation", +function(moData, isSlaters, volumeData, bsSelected, xyz, atoms, firstAtomOffset, dfCoefMaps, moCoefficients, linearCombination, isSquaredLinear, coefs, points){ +var calculationType = moData.get("calculationType"); +var shells = moData.get("shells"); +var gaussians = moData.get("gaussians"); +var slaters = moData.get("slaters"); +this.highLEnabled = moData.get("highLEnabled"); +this.havePoints = (points != null); +this.calculationType = calculationType; +this.firstAtomOffset = firstAtomOffset; +this.shells = shells; +this.gaussians = gaussians; +this.dfCoefMaps = (dfCoefMaps == null ? J.quantum.QS.getNewDfCoefMap() : dfCoefMaps); +this.coeffs = Clazz.newDoubleArray (this.dfCoefMaps[this.dfCoefMaps.length - 1].length, 0); +this.slaters = slaters; +this.moCoefficients = moCoefficients; +this.linearCombination = linearCombination; +this.isSquaredLinear = isSquaredLinear; +this.coefs = coefs; +var doNormalize = (isSlaters || moData.get("isNormalized") !== Boolean.TRUE); +if (doNormalize) this.setNormalization(moData.get("nboType")); +this.countsXYZ = volumeData.getVoxelCounts(); +this.initialize(this.countsXYZ[0], this.countsXYZ[1], this.countsXYZ[2], points); +this.voxelData = volumeData.getVoxelData(); +this.voxelDataTemp = (isSquaredLinear ? Clazz.newFloatArray (this.nX, this.nY, this.nZ, 0) : this.voxelData); +this.setupCoordinates(volumeData.getOriginFloat(), volumeData.getVolumetricVectorLengths(), bsSelected, xyz, atoms, points, false); +this.doDebug = (JU.Logger.debugging); +return !bsSelected.isEmpty() && (slaters != null || this.checkCalculationType()); +}, "java.util.Map,~B,J.jvxl.data.VolumeData,JU.BS,~A,~A,~N,~A,~A,~A,~B,~A,~A"); +Clazz.defineMethod(c$, "setNormalization", +function(nboType){ +var type = "standard"; +this.normType = 1; +if (nboType != null) { +this.normType = 3; +type = "NBO-AO"; +} else if (this.calculationType != null) { +if (this.calculationType.indexOf("NWCHEM") >= 0) { +this.normType = 2; +type = "NWCHEM"; +JU.Logger.info("Normalization of contractions (NWCHEM)"); +}}}, "~O"); +Clazz.overrideMethod(c$, "initialize", +function(nX, nY, nZ, points){ +this.initialize0(nX, nY, nZ, points); +this.CX = Clazz.newDoubleArray (this.nX, 0); +this.CY = Clazz.newDoubleArray (this.nY, 0); +this.CZ = Clazz.newDoubleArray (this.nZ, 0); +this.DXY = Clazz.newDoubleArray (this.nX, 0); +this.DXZ = Clazz.newDoubleArray (this.nX, 0); +this.DYZ = Clazz.newDoubleArray (this.nY, 0); +this.EX = Clazz.newDoubleArray (this.nX, 0); +this.EY = Clazz.newDoubleArray (this.nY, 0); +this.EZ = Clazz.newDoubleArray (this.nZ, 0); +}, "~N,~N,~N,~A"); +Clazz.overrideMethod(c$, "createCube", +function(){ +this.setXYZBohr(this.points); +this.processPoints(); +if (!this.isSquaredLinear && (this.doDebug || this.testing)) this.calculateElectronDensity(); +}); +Clazz.overrideMethod(c$, "processPoints", +function(){ +if (this.linearCombination == null) { +this.process(); +} else { +if (this.sum < 0) { +this.sum = 0; +for (var i = 0; i < this.linearCombination.length; i += 2) this.sum += this.linearCombination[i] * this.linearCombination[i]; + +this.sum = Math.sqrt(this.sum); +}if (this.sum == 0) return; +for (var i = 0; i < this.linearCombination.length; i += 2) { +this.moFactor = this.linearCombination[i] / this.sum; +if (this.moFactor == 0) continue; +this.moCoefficients = this.coefs[Clazz.floatToInt(this.linearCombination[i + 1]) - 1]; +this.process(); +if (this.isSquaredLinear) this.addValuesSquared(1); +} +}}); +Clazz.overrideMethod(c$, "process", +function(){ +this.atomIndex = this.firstAtomOffset - 1; +this.moCoeff = 0; +if (this.slaters == null) { +var nShells = this.shells.size(); +for (var i = 0; i < nShells; i++) this.processShell(i); + +return; +}for (var i = 0; i < this.slaters.length; i++) { +if (!this.processSlater(i)) break; +} +}); +Clazz.defineMethod(c$, "checkCalculationType", +function(){ +if (this.calculationType == null) { +JU.Logger.warn("calculation type not identified -- continuing"); +return true; +}if (this.calculationType.indexOf("+") >= 0 || this.calculationType.indexOf("*") >= 0) { +JU.Logger.warn("polarization/diffuse wavefunctions have not been tested fully: " + this.calculationType + " -- continuing"); +}if (this.calculationType.indexOf("?") >= 0) { +JU.Logger.warn("unknown calculation type may not render correctly -- continuing"); +} else if (this.points == null) { +JU.Logger.info("calculation type: " + this.calculationType + " OK."); +}return true; +}); +Clazz.defineMethod(c$, "processShell", +function(iShell){ +var lastAtom = this.atomIndex; +var shell = this.shells.get(iShell); +this.atomIndex = shell[0] - 1 + this.firstAtomOffset; +var basisType = shell[1]; +this.gaussianPtr = shell[2] - 1; +this.nGaussians = shell[3]; +this.doShowShellType = this.doDebug; +if (this.atomIndex != lastAtom && (this.thisAtom = this.qmAtoms[this.atomIndex]) != null) this.thisAtom.setXYZ(this, true); +if (!this.allowType(basisType) || !this.setCoeffs(shell[1], true)) return; +if (this.havePoints) this.setMinMax(-1); +switch (basisType) { +case 0: +this.addDataS(); +break; +case 1: +this.addDataP(); +break; +case 2: +this.addDataSP(); +break; +case 3: +this.addData5D(); +break; +case 4: +this.addData6D(); +break; +default: +if (this.addHighL(basisType)) return; +if (this.warned == null) this.warned = ""; +var key = "=" + (this.atomIndex + 1) + ": " + J.quantum.QS.getQuantumShellTag(basisType); +if (this.warned.indexOf(key) < 0) { +this.warned += key; +JU.Logger.warn(" Unsupported basis type for atomno" + key); +}break; +} +}, "~N"); +Clazz.defineMethod(c$, "addHighL", +function(basisType){ +if (!this.allowType(basisType)) return false; +var adder = this.dataAdders[basisType]; +switch (this.dataAdderOK[basisType]) { +case 0: +this.dataAdders[basisType] = adder = (javajs.api.Interface.getInterface("J.quantum.mo.DataAdder" + J.quantum.QS.getQuantumShellTag(basisType))); +this.dataAdderOK[basisType] = (adder == null ? -1 : 1); +if (adder != null) break; +case -1: +return false; +} +if (adder.addData(this, this.havePoints)) return true; +this.dataAdders[basisType] = null; +this.dataAdderOK[basisType] = -1; +return false; +}, "~N"); +Clazz.defineMethod(c$, "allowType", +function(basisType){ +return (basisType < 7 || this.highLEnabled[basisType] != 0); +}, "~N"); +Clazz.defineMethod(c$, "addValuesSquared", +function(occupancy){ +for (var ix = this.nX; --ix >= 0; ) { +for (var iy = this.nY; --iy >= 0; ) { +for (var iz = this.nZ; --iz >= 0; ) { +var value = this.voxelDataTemp[ix][iy][iz]; +if (value == 0) continue; +this.voxelData[ix][iy][iz] += value * value * occupancy; +this.voxelDataTemp[ix][iy][iz] = 0; +} +} +} +}, "~N"); +Clazz.defineMethod(c$, "getContractionNormalization", +function(el, cpt){ +var sum; +var df = (el == 3 ? 15 : el == 2 ? 3 : 1); +var f = df * Math.pow(3.141592653589793, 1.5) / Math.pow(2, el); +var p = 0.75 + el / 2.0; +if (this.nGaussians == 1) { +sum = Math.pow(2, -2 * p) * Math.pow(this.gaussians[this.gaussianPtr][cpt], 2); +} else { +sum = 0; +for (var ig1 = 0; ig1 < this.nGaussians; ig1++) { +var alpha1 = this.gaussians[this.gaussianPtr + ig1][0]; +var c1 = this.gaussians[this.gaussianPtr + ig1][cpt]; +var f1 = Math.pow(alpha1, p); +for (var ig2 = 0; ig2 < this.nGaussians; ig2++) { +var alpha2 = this.gaussians[this.gaussianPtr + ig2][0]; +var c2 = this.gaussians[this.gaussianPtr + ig2][cpt]; +var f2 = Math.pow(alpha2, p); +sum += c1 * f1 * c2 * f2 / Math.pow(alpha1 + alpha2, 2 * p); +} +} +}sum = 1 / Math.sqrt(f * sum); +if (JU.Logger.debuggingHigh) JU.Logger.debug("\t\t\tnormalization for l=" + el + " nGaussians=" + this.nGaussians + " is " + sum); +return sum; +}, "~N,~N"); +Clazz.defineMethod(c$, "setCoeffs", +function(type, isProcess){ +var isOK = false; +this.map = this.dfCoefMaps[type]; +if (isProcess && this.thisAtom == null) { +this.moCoeff += this.map.length; +return false; +}for (var i = 0; i < this.map.length; i++) isOK = new Boolean (isOK | ((this.coeffs[i] = this.moCoefficients[this.map[i] + this.moCoeff++]) != 0)).valueOf(); + +isOK = new Boolean (isOK & (this.coeffs[0] != -2147483648)).valueOf(); +if (isOK && this.doDebug && isProcess) this.dumpInfo(type); +return isOK; +}, "~N,~B"); +Clazz.defineMethod(c$, "addDataS", +function(){ +var norm; +var c1; +var normalizeAlpha = false; +switch (this.normType) { +case 0: +case 3: +default: +norm = 1; +break; +case 1: +norm = 0.712705470; +normalizeAlpha = true; +break; +case 2: +norm = this.getContractionNormalization(0, 1); +normalizeAlpha = true; +break; +} +var m1 = this.coeffs[0]; +for (var ig = 0; ig < this.nGaussians; ig++) { +var alpha = this.gaussians[this.gaussianPtr + ig][0]; +c1 = this.gaussians[this.gaussianPtr + ig][1]; +var a = norm * m1 * c1 * this.moFactor; +if (normalizeAlpha) a *= Math.pow(alpha, 0.75); +for (var i = this.xMax; --i >= this.xMin; ) { +this.EX[i] = a * Math.exp(-this.X2[i] * alpha); +} +for (var i = this.yMax; --i >= this.yMin; ) { +this.EY[i] = Math.exp(-this.Y2[i] * alpha); +} +for (var i = this.zMax; --i >= this.zMin; ) { +this.EZ[i] = Math.exp(-this.Z2[i] * alpha); +} +for (var ix = this.xMax; --ix >= this.xMin; ) { +var eX = this.EX[ix]; +if (this.havePoints) this.setMinMax(ix); +for (var iy = this.yMax; --iy >= this.yMin; ) { +var eXY = eX * this.EY[iy]; +var vd = this.voxelDataTemp[ix][(this.havePoints ? 0 : iy)]; +for (var iz = this.zMax; --iz >= this.zMin; ) vd[(this.havePoints ? 0 : iz)] += eXY * this.EZ[iz]; + +} +} +} +}); +Clazz.defineMethod(c$, "addDataP", +function(){ +var mx = this.coeffs[0]; +var my = this.coeffs[1]; +var mz = this.coeffs[2]; +var norm; +var normalizeAlpha = false; +switch (this.normType) { +case 0: +case 3: +default: +norm = 1; +break; +case 1: +norm = 1.42541094; +normalizeAlpha = true; +break; +case 2: +norm = this.getContractionNormalization(1, 1); +normalizeAlpha = true; +break; +} +for (var ig = 0; ig < this.nGaussians; ig++) { +var alpha = this.gaussians[this.gaussianPtr + ig][0]; +var c1 = this.gaussians[this.gaussianPtr + ig][1]; +var a = c1; +if (normalizeAlpha) a *= Math.pow(alpha, 1.25) * norm; +this.calcSP(alpha, 0, a * mx, a * my, a * mz); +} +}); +Clazz.defineMethod(c$, "addDataSP", +function(){ +var isP = (this.map.length == 3); +var pPt = (isP ? 0 : 1); +var ms = (isP ? 0 : this.coeffs[0]); +var mx = this.coeffs[pPt++]; +var my = this.coeffs[pPt++]; +var mz = this.coeffs[pPt++]; +var norm1; +var norm2; +var doNormalize = false; +switch (this.normType) { +case 0: +case 3: +default: +norm1 = norm2 = 1; +break; +case 1: +norm1 = 0.712705470; +norm2 = 1.42541094; +doNormalize = true; +break; +case 2: +norm1 = this.getContractionNormalization(0, 1); +norm2 = this.getContractionNormalization(1, 2); +doNormalize = true; +break; +} +var a1; +var a2; +var c1; +var c2; +var alpha; +for (var ig = 0; ig < this.nGaussians; ig++) { +alpha = this.gaussians[this.gaussianPtr + ig][0]; +c1 = this.gaussians[this.gaussianPtr + ig][1]; +c2 = this.gaussians[this.gaussianPtr + ig][2]; +a1 = c1; +a2 = c2; +if (doNormalize) { +a1 *= Math.pow(alpha, 0.75) * norm1; +a2 *= Math.pow(alpha, 1.25) * norm2; +}this.calcSP(alpha, a1 * ms, a2 * mx, a2 * my, a2 * mz); +} +}); +Clazz.defineMethod(c$, "setCE", +function(alpha, as, ax, ay, az){ +for (var i = this.xMax; --i >= this.xMin; ) { +this.CX[i] = as + ax * this.X[i]; +this.EX[i] = Math.exp(-this.X2[i] * alpha) * this.moFactor; +} +for (var i = this.yMax; --i >= this.yMin; ) { +this.CY[i] = ay * this.Y[i]; +this.EY[i] = Math.exp(-this.Y2[i] * alpha); +} +for (var i = this.zMax; --i >= this.zMin; ) { +this.CZ[i] = az * this.Z[i]; +this.EZ[i] = Math.exp(-this.Z2[i] * alpha); +} +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setE", +function(EX, alpha){ +for (var i = this.xMax; --i >= this.xMin; ) EX[i] = Math.exp(-this.X2[i] * alpha) * this.moFactor; + +for (var i = this.yMax; --i >= this.yMin; ) this.EY[i] = Math.exp(-this.Y2[i] * alpha); + +for (var i = this.zMax; --i >= this.zMin; ) this.EZ[i] = Math.exp(-this.Z2[i] * alpha); + +}, "~A,~N"); +Clazz.defineMethod(c$, "calcSP", +function(alpha, as, ax, ay, az){ +this.setCE(alpha, as, ax, ay, az); +for (var ix = this.xMax; --ix >= this.xMin; ) { +var eX = this.EX[ix]; +var cX = this.CX[ix]; +if (this.havePoints) this.setMinMax(ix); +for (var iy = this.yMax; --iy >= this.yMin; ) { +var eXY = eX * this.EY[iy]; +var cXY = cX + this.CY[iy]; +var vd = this.voxelDataTemp[ix][(this.havePoints ? 0 : iy)]; +for (var iz = this.zMax; --iz >= this.zMin; ) { +vd[(this.havePoints ? 0 : iz)] += (cXY + this.CZ[iz]) * eXY * this.EZ[iz]; +} +} +} +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "addData6D", +function(){ +var mxx = this.coeffs[0]; +var myy = this.coeffs[1]; +var mzz = this.coeffs[2]; +var mxy = this.coeffs[3]; +var mxz = this.coeffs[4]; +var myz = this.coeffs[5]; +var norm1; +var norm2; +var normalizeAlpha = false; +switch (this.normType) { +case 0: +default: +norm1 = 1; +norm2 = 0.5773502795520422; +break; +case 1: +norm1 = 2.8508219178923; +norm2 = norm1 / 1.7320507764816284; +normalizeAlpha = true; +break; +case 2: +norm1 = norm2 = this.getContractionNormalization(2, 1); +normalizeAlpha = true; +break; +case 3: +norm1 = 1.7320507764816284; +norm2 = 1; +} +for (var ig = 0; ig < this.nGaussians; ig++) { +var alpha = this.gaussians[this.gaussianPtr + ig][0]; +var c1 = this.gaussians[this.gaussianPtr + ig][1]; +var a = c1; +if (normalizeAlpha) a *= Math.pow(alpha, 1.75); +var axy = a * norm1 * mxy; +var axz = a * norm1 * mxz; +var ayz = a * norm1 * myz; +var axx = a * norm2 * mxx; +var ayy = a * norm2 * myy; +var azz = a * norm2 * mzz; +this.setCE(alpha, 0, axx, ayy, azz); +for (var i = this.xMax; --i >= this.xMin; ) { +this.DXY[i] = axy * this.X[i]; +this.DXZ[i] = axz * this.X[i]; +} +for (var i = this.yMax; --i >= this.yMin; ) { +this.DYZ[i] = ayz * this.Y[i]; +} +for (var ix = this.xMax; --ix >= this.xMin; ) { +var axx_x2 = this.CX[ix] * this.X[ix]; +var axy_x = this.DXY[ix]; +var axz_x = this.DXZ[ix]; +var eX = this.EX[ix]; +if (this.havePoints) this.setMinMax(ix); +for (var iy = this.yMax; --iy >= this.yMin; ) { +var axx_x2__ayy_y2__axy_xy = axx_x2 + (this.CY[iy] + axy_x) * this.Y[iy]; +var axz_x__ayz_y = axz_x + this.DYZ[iy]; +var eXY = eX * this.EY[iy]; +var vd = this.voxelDataTemp[ix][(this.havePoints ? 0 : iy)]; +for (var iz = this.zMax; --iz >= this.zMin; ) { +vd[(this.havePoints ? 0 : iz)] += (axx_x2__ayy_y2__axy_xy + (this.CZ[iz] + axz_x__ayz_y) * this.Z[iz]) * eXY * this.EZ[iz]; +} +} +} +} +}); +Clazz.defineMethod(c$, "addData5D", +function(){ +var alpha; +var c1; +var a; +var x; +var y; +var z; +var cxx; +var cyy; +var czz; +var cxy; +var cxz; +var cyz; +var ad0; +var ad1p; +var ad1n; +var ad2p; +var ad2n; +var norm1; +var norm2; +var norm3; +var norm4; +var norm5; +var normalizeAlpha = false; +switch (this.normType) { +case 0: +default: +norm1 = norm2 = norm3 = norm4 = norm5 = 1; +break; +case 3: +norm2 = norm4 = 1; +norm1 = 3.464101552963257; +norm3 = 1.7320507764816284; +norm5 = 2; +break; +case 1: +norm1 = Math.pow(66.05114251919257, 0.25); +norm2 = norm1 / 1.7320507764816284; +norm3 = 0.8660253882408142; +norm4 = norm5 = 1; +normalizeAlpha = true; +break; +case 2: +norm2 = this.getContractionNormalization(2, 1); +norm1 = norm2 * 1.7320507764816284; +norm3 = 0.8660253882408142; +norm4 = -1; +norm5 = 1; +normalizeAlpha = true; +break; +} +var m0 = this.coeffs[0]; +var m1p = this.coeffs[1]; +var m1n = this.coeffs[2]; +var m2p = this.coeffs[3]; +var m2n = this.coeffs[4]; +for (var ig = 0; ig < this.nGaussians; ig++) { +alpha = this.gaussians[this.gaussianPtr + ig][0]; +c1 = this.gaussians[this.gaussianPtr + ig][1]; +a = c1; +if (normalizeAlpha) a *= Math.pow(alpha, 1.75); +ad0 = a * m0; +ad1p = norm4 * a * m1p; +ad1n = a * m1n; +ad2p = a * m2p; +ad2n = a * m2n; +this.setE(this.EX, alpha); +for (var ix = this.xMax; --ix >= this.xMin; ) { +x = this.X[ix]; +var eX = this.EX[ix]; +cxx = norm2 * x * x; +if (this.havePoints) this.setMinMax(ix); +for (var iy = this.yMax; --iy >= this.yMin; ) { +y = this.Y[iy]; +var eXY = eX * this.EY[iy]; +cyy = norm2 * y * y; +cxy = norm1 * x * y; +var vd = this.voxelDataTemp[ix][(this.havePoints ? 0 : iy)]; +for (var iz = this.zMax; --iz >= this.zMin; ) { +z = this.Z[iz]; +czz = norm2 * z * z; +cxz = norm1 * x * z; +cyz = norm1 * y * z; +vd[(this.havePoints ? 0 : iz)] += (ad0 * norm5 * (czz - 0.5 * (cxx + cyy)) + ad1p * cxz + ad1n * cyz + ad2p * norm3 * (cxx - cyy) + ad2n * cxy) * eXY * this.EZ[iz]; +} +} +} +} +}); +Clazz.defineMethod(c$, "processSlater", +function(slaterIndex){ +var lastAtom = this.atomIndex; +var slater = this.slaters[slaterIndex]; +this.atomIndex = slater.atomNo - 1; +var minuszeta = -slater.zeta; +if ((this.thisAtom = this.qmAtoms[this.atomIndex]) == null) { +if (minuszeta <= 0) this.moCoeff++; +return true; +}if (minuszeta > 0) { +minuszeta = -minuszeta; +this.moCoeff--; +}if (this.moCoeff >= this.moCoefficients.length) return false; +var coef = slater.coef * this.moCoefficients[this.moCoeff++]; +if (coef == 0) { +this.atomIndex = -1; +return true; +}coef *= this.moFactor; +if (this.atomIndex != lastAtom) this.thisAtom.setXYZ(this, true); +var a = slater.x; +var b = slater.y; +var c = slater.z; +var d = slater.r; +if (a == -2) for (var ix = this.xMax; --ix >= this.xMin; ) { +var dx2 = this.X2[ix]; +if (this.havePoints) this.setMinMax(ix); +for (var iy = this.yMax; --iy >= this.yMin; ) { +var dy2 = this.Y2[iy]; +var dx2y2 = dx2 + dy2; +var vd = this.voxelDataTemp[ix][(this.havePoints ? 0 : iy)]; +for (var iz = this.zMax; --iz >= this.zMin; ) { +var dz2 = this.Z2[iz]; +var r2 = dx2y2 + dz2; +var r = Math.sqrt(r2); +var exponent = minuszeta * r; +if (exponent < -50.0) continue; +var value = (coef * Math.exp(exponent) * (3 * dz2 - r2)); +switch (d) { +case 3: +value *= r; +case 2: +value *= r2; +break; +case 1: +value *= r; +break; +} +vd[(this.havePoints ? 0 : iz)] += value; +} +} +} + else if (b == -2) for (var ix = this.xMax; --ix >= this.xMin; ) { +var dx2 = this.X2[ix]; +if (this.havePoints) this.setMinMax(ix); +for (var iy = this.yMax; --iy >= this.yMin; ) { +var dy2 = this.Y2[iy]; +var dx2y2 = dx2 + dy2; +var dx2my2 = coef * (dx2 - dy2); +var vd = this.voxelDataTemp[ix][(this.havePoints ? 0 : iy)]; +for (var iz = this.zMax; --iz >= this.zMin; ) { +var dz2 = this.Z2[iz]; +var r2 = dx2y2 + dz2; +var r = Math.sqrt(r2); +var exponent = minuszeta * r; +if (exponent < -50.0) continue; +var value = dx2my2 * Math.exp(exponent); +switch (d) { +case 3: +value *= r; +case 2: +value *= r2; +break; +case 1: +value *= r; +break; +} +vd[(this.havePoints ? 0 : iz)] += value; +} +} +} + else for (var ix = this.xMax; --ix >= this.xMin; ) { +var dx2 = this.X2[ix]; +var vdx = coef; +switch (a) { +case 3: +vdx *= this.X[ix]; +case 2: +vdx *= dx2; +break; +case 1: +vdx *= this.X[ix]; +break; +} +if (this.havePoints) this.setMinMax(ix); +for (var iy = this.yMax; --iy >= this.yMin; ) { +var dy2 = this.Y2[iy]; +var dx2y2 = dx2 + dy2; +var vdy = vdx; +switch (b) { +case 3: +vdy *= this.Y[iy]; +case 2: +vdy *= dy2; +break; +case 1: +vdy *= this.Y[iy]; +break; +} +var vd = this.voxelDataTemp[ix][(this.havePoints ? 0 : iy)]; +for (var iz = this.zMax; --iz >= this.zMin; ) { +var dz2 = this.Z2[iz]; +var r2 = dx2y2 + dz2; +var r = Math.sqrt(r2); +var exponent = minuszeta * r; +if (exponent < -50.0) continue; +var value = vdy * Math.exp(exponent); +switch (c) { +case 3: +value *= this.Z[iz]; +case 2: +value *= dz2; +break; +case 1: +value *= this.Z[iz]; +break; +} +switch (d) { +case 3: +value *= r; +case 2: +value *= r2; +break; +case 1: +value *= r; +break; +} +vd[(this.havePoints ? 0 : iz)] += value; +} +} +} +return true; +}, "~N"); +Clazz.defineMethod(c$, "dumpInfo", +function(shell){ +if (this.doShowShellType) { +if (JU.Logger.debugging) JU.Logger.debug("\n\t\t\tprocessShell: " + shell + " type=" + J.quantum.QS.getQuantumShellTag(shell) + " nGaussians=" + this.nGaussians + " atom=" + this.atomIndex); +this.doShowShellType = false; +}if (JU.Logger.isActiveLevel(6) && this.gaussianPtr != this.lastGaussianPtr) { +this.lastGaussianPtr = this.gaussianPtr; +for (var ig = 0; ig < this.nGaussians; ig++) { +var alpha = this.gaussians[this.gaussianPtr + ig][0]; +var c1 = this.gaussians[this.gaussianPtr + ig][1]; +if (JU.Logger.debugging) JU.Logger.debug("\t\t\tGaussian " + (ig + 1) + " alpha=" + alpha + " c=" + c1); +} +}var so = J.quantum.MOCalculation.getShellOrder(shell); +for (var i = 0; i < this.map.length; i++) { +var n = this.map[i] + this.moCoeff - this.map.length + i + 1; +var c = this.coeffs[i]; +if (JU.Logger.debugging) JU.Logger.debug("MO coeff " + (so == null ? "?" : so[i]) + " " + n + "\t" + c + "\t" + this.thisAtom.atom); +} +}, "~N"); +c$.getShellOrder = Clazz.defineMethod(c$, "getShellOrder", +function(i){ +return (i < 0 || i >= J.quantum.MOCalculation.shellOrder.length ? null : J.quantum.MOCalculation.shellOrder[i]); +}, "~N"); +Clazz.defineMethod(c$, "calculateElectronDensity", +function(){ +if (this.points != null) return; +this.integration = 0; +for (var ix = this.nX; --ix >= 0; ) for (var iy = this.nY; --iy >= 0; ) for (var iz = this.nZ; --iz >= 0; ) { +var x = this.voxelData[ix][iy][iz]; +this.integration += x * x; +} + + +var volume = this.stepBohr[0] * this.stepBohr[1] * this.stepBohr[2]; +this.integration *= volume; +JU.Logger.info("Integrated density = " + this.integration + " for volume " + (volume * this.nX * this.nY * this.nZ / 1.8897161 / 1.8897161 / 1.8897161) + " Ang^3 steps " + this.nX + " " + this.nY + " " + this.nZ); +}); +c$.shellOrder = Clazz.newArray(-1, [ Clazz.newArray(-1, ["S"]), Clazz.newArray(-1, ["X", "Y", "Z"]), Clazz.newArray(-1, ["S", "X", "Y", "Z"]), Clazz.newArray(-1, ["d0/z2", "d1+/xz", "d1-/yz", "d2+/x2-y2", "d2-/xy"]), Clazz.newArray(-1, ["XX", "YY", "ZZ", "XY", "XZ", "YZ"]), Clazz.newArray(-1, ["f0/2z3-3x2z-3y2z", "f1+/4xz2-x3-xy2", "f1-/4yz2-x2y-y3", "f2+/x2z-y2z", "f2-/xyz", "f3+/x3-3xy2", "f3-/3x2y-y3"]), Clazz.newArray(-1, ["XXX", "YYY", "ZZZ", "XYY", "XXY", "XXZ", "XZZ", "YZZ", "YYZ", "XYZ"])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/MepCalculation.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/MepCalculation.js new file mode 100755 index 000000000000..6c31a9e2b012 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/MepCalculation.js @@ -0,0 +1,144 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(["J.quantum.QuantumCalculation"], "J.quantum.MepCalculation", ["java.util.Hashtable", "JU.PT", "$.Rdr", "JU.Logger", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.distanceMode = 0; +this.potentials = null; +this.atomCoordAngstroms = null; +this.bsSelected = null; +this.vwr = null; +this.htAtomicPotentials = null; +this.resourceName = null; +Clazz.instantialize(this, arguments);}, J.quantum, "MepCalculation", J.quantum.QuantumCalculation); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.quantum.MepCalculation, []); +this.rangeBohrOrAngstroms = 8; +this.distanceMode = 0; +this.unitFactor = 1; +}); +Clazz.defineMethod(c$, "set", +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "assignPotentials", +function(atoms, potentials, bsAromatic, bsCarbonyl, bsIgnore, data){ +this.getAtomicPotentials(data, null); +for (var i = 0; i < atoms.length; i++) { +var f; +if (bsIgnore != null && bsIgnore.get(i)) { +f = NaN; +} else { +f = this.getTabulatedPotential(atoms[i]); +if (Float.isNaN(f)) f = 0; +}if (JU.Logger.debugging) JU.Logger.debug(atoms[i].getInfo() + " " + f); +potentials[i] = f; +} +}, "~A,~A,JU.BS,JU.BS,JU.BS,~S"); +Clazz.defineMethod(c$, "setup", +function(calcType, potentials, atomCoordAngstroms, bsSelected){ +if (calcType >= 0) this.distanceMode = calcType; +this.potentials = potentials; +this.atomCoordAngstroms = atomCoordAngstroms; +this.bsSelected = bsSelected; +}, "~N,~A,~A,JU.BS"); +Clazz.defineMethod(c$, "calculate", +function(volumeData, bsSelected, xyz, atoms, potentials, calcType){ +this.setup(calcType, potentials, atoms, bsSelected); +this.voxelData = volumeData.getVoxelData(); +this.countsXYZ = volumeData.getVoxelCounts(); +this.initialize(this.countsXYZ[0], this.countsXYZ[1], this.countsXYZ[2], null); +this.setupCoordinates(volumeData.getOriginFloat(), volumeData.getVolumetricVectorLengths(), bsSelected, xyz, atoms, null, false); +this.setXYZBohr(this.points); +this.process(); +}, "J.jvxl.data.VolumeData,JU.BS,~A,~A,~A,~N"); +Clazz.defineMethod(c$, "getValueAtPoint", +function(pt){ +var value = 0; +for (var i = this.bsSelected.nextSetBit(0); i >= 0; i = this.bsSelected.nextSetBit(i + 1)) { +var x = this.potentials[i]; +var d2 = pt.distanceSquared(this.atomCoordAngstroms[i]); +value += this.valueFor(x, d2, this.distanceMode); +} +return value; +}, "JU.P3"); +Clazz.overrideMethod(c$, "process", +function(){ +for (var atomIndex = this.qmAtoms.length; --atomIndex >= 0; ) { +if ((this.thisAtom = this.qmAtoms[atomIndex]) == null) continue; +var x0 = this.potentials[atomIndex]; +if (JU.Logger.debugging) JU.Logger.debug("process map for atom " + atomIndex + this.thisAtom + " charge=" + x0); +this.thisAtom.setXYZ(this, true); +for (var ix = this.xMax; --ix >= this.xMin; ) { +var dX = this.X2[ix]; +for (var iy = this.yMax; --iy >= this.yMin; ) { +var dXY = dX + this.Y2[iy]; +for (var iz = this.zMax; --iz >= this.zMin; ) { +this.voxelData[ix][iy][iz] += this.valueFor(x0, dXY + this.Z2[iz], this.distanceMode); +} +} +} +} +}); +Clazz.defineMethod(c$, "valueFor", +function(x0, d2, distanceMode){ +switch (distanceMode) { +case 0: +return (d2 == 0 ? x0 * Infinity : x0 / Math.sqrt(d2)); +case 2: +return x0 / (1 + Math.sqrt(d2)); +case 1: +return x0 * Math.exp(-Math.sqrt(d2) / 2); +case 3: +return x0 * Math.exp(-Math.sqrt(d2)); +} +return x0; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getTabulatedPotential", +function(atom){ +var name = atom.getAtomType(); +var g1 = atom.getGroup1('\0'); +var type = atom.getBioStructureTypeName(); +if (g1.length == 0) { +g1 = atom.getGroup3(true); +if (g1 == null) g1 = ""; +}var key = g1 + name; +var o = this.htAtomicPotentials.get(key); +if (o == null && type.length > 0) o = this.htAtomicPotentials.get("_" + type.charAt(0) + name); +return (Clazz.instanceOf(o, Float) ? (o).floatValue() : NaN); +}, "JM.Atom"); +Clazz.defineMethod(c$, "getAtomicPotentials", +function(data, resourceName){ +var br = null; +this.htAtomicPotentials = new java.util.Hashtable(); +try { +br = (data == null ? JV.FileManager.getBufferedReaderForResource(this.vwr, this, "J/quantum/", resourceName) : JU.Rdr.getBR(data)); +var line; +while ((line = br.readLine()) != null) { +if (line.startsWith("#")) continue; +var vs = JU.PT.getTokens(line); +if (vs.length < 2) continue; +if (JU.Logger.debugging) JU.Logger.debug(line); +this.htAtomicPotentials.put(vs[0], Float.$valueOf(JU.PT.parseFloat(vs[1]))); +} +br.close(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Exception " + e.toString() + " in getResource " + resourceName); +try { +br.close(); +} catch (ee) { +if (Clazz.exceptionOf(ee, Exception)){ +} else { +throw ee; +} +} +} else { +throw e; +} +} +}, "~S,~S"); +Clazz.overrideMethod(c$, "createCube", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/MlpCalculation.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/MlpCalculation.js new file mode 100755 index 000000000000..10c0185bb4af --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/MlpCalculation.js @@ -0,0 +1,37 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(["J.quantum.MepCalculation"], "J.quantum.MlpCalculation", ["JU.Logger"], function(){ +var c$ = Clazz.declareType(J.quantum, "MlpCalculation", J.quantum.MepCalculation); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, J.quantum.MlpCalculation); +this.distanceMode = 3; +}); +Clazz.overrideMethod(c$, "assignPotentials", +function(atoms, potentials, bsAromatic, bsCarbonyl, bsIgnore, data){ +this.getAtomicPotentials(data, "atomicLipophilicity.txt"); +for (var i = 0; i < atoms.length; i++) { +var f = Math.abs(atoms[i].getFormalCharge()); +if (f == 0) { +if (bsIgnore != null && bsIgnore.get(i)) { +f = NaN; +} else { +f = this.getTabulatedPotential(atoms[i]); +if (Float.isNaN(f)) switch (atoms[i].getElementNumber()) { +case 6: +f = (bsAromatic.get(i) ? 0.31 : bsCarbonyl.get(i) ? -0.54 : 0.45); +break; +case 7: +f = (bsAromatic.get(i) ? -0.6 : bsCarbonyl.get(i) ? -0.44 : -1.0); +break; +case 8: +f = (bsCarbonyl.get(i) ? -0.9 : -0.17); +break; +default: +f = NaN; +} +}}if (JU.Logger.debugging) JU.Logger.debug(atoms[i].getInfo() + " " + f); +potentials[i] = f; +} +}, "~A,~A,JU.BS,JU.BS,JU.BS,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/NMRCalculation.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/NMRCalculation.js new file mode 100755 index 000000000000..ca57177cb56b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/NMRCalculation.js @@ -0,0 +1,585 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(["J.api.JmolNMRInterface", "java.util.Hashtable"], "J.quantum.NMRCalculation", ["JU.BS", "$.Lst", "$.Measure", "$.PT", "$.V3", "J.quantum.NMRNoeMatrix", "JU.Escape", "$.Logger", "$.Tensor", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.isotopeData = null; +this.shiftRefsPPM = null; +Clazz.instantialize(this, arguments);}, J.quantum, "NMRCalculation", null, J.api.JmolNMRInterface); +Clazz.prepareFields (c$, function(){ +this.shiftRefsPPM = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +this.getData(); +return this; +}, "JV.Viewer"); +Clazz.overrideMethod(c$, "getQuadrupolarConstant", +function(efg){ +if (efg == null) return 0; +var a = this.vwr.ms.at[efg.atomIndex1]; +return (this.getIsotopeData(a, 2) * efg.eigenValues[2] * 2.349647144641375E8); +}, "JU.Tensor"); +Clazz.defineMethod(c$, "getInteractionTensorList", +function(type, bsA){ +if (type != null) type = type.toLowerCase(); +var bsModels = this.vwr.ms.getModelBS(bsA, false); +var bs1 = this.getAtomSiteBS(bsA); +var iAtom = (bs1.cardinality() == 1 ? bs1.nextSetBit(0) : -1); +var list = new JU.Lst(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +var tensors = this.vwr.ms.getInfo(i, "interactionTensors"); +if (tensors == null) continue; +var n = tensors.size(); +for (var j = 0; j < n; j++) { +var t = tensors.get(j); +if (type == null || t.type.equals(type) && t.isSelected(bs1, iAtom)) list.addLast(t); +} +} +return list; +}, "~S,JU.BS"); +Clazz.defineMethod(c$, "getAtomSiteBS", +function(bsA){ +if (bsA == null) return null; +var bs = new JU.BS(); +var atoms = this.vwr.ms.at; +var models = this.vwr.ms.am; +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +if (!bsA.get(i)) continue; +var a = atoms[i]; +bs.set(models[a.mi].firstAtomIndex - 1 + a.getAtomSite()); +} +return bs; +}, "JU.BS"); +Clazz.overrideMethod(c$, "getUniqueTensorSet", +function(bsAtoms){ +var bs = new JU.BS(); +var atoms = this.vwr.ms.at; +for (var mi = this.vwr.ms.mc; --mi >= 0; ) { +var bsModelAtoms = this.vwr.restrictToModel(bsAtoms, mi); +if (this.vwr.ms.getUnitCell(mi) == null) continue; +for (var i = bsModelAtoms.nextSetBit(0); i >= 0; i = bsModelAtoms.nextSetBit(i + 1)) if (atoms[i].getAtomSite() != atoms[i].i + 1) bsModelAtoms.clear(i); + +bs.or(bsModelAtoms); +for (var i = bsModelAtoms.nextSetBit(0); i >= 0; i = bsModelAtoms.nextSetBit(i + 1)) { +var ta = atoms[i].getTensors(); +if (ta == null) continue; +for (var jj = ta.length; --jj >= 0; ) { +var t = ta[jj]; +if (t == null) continue; +for (var k = bsModelAtoms.nextSetBit(i + 1); k >= 0; k = bsModelAtoms.nextSetBit(k + 1)) { +var tb = atoms[k].getTensors(); +if (tb == null) continue; +for (var kk = tb.length; --kk >= 0; ) { +if (t.isEquiv(tb[kk])) { +bsModelAtoms.clear(k); +bs.clear(k); +break; +}} +} +} +} +} +return bs; +}, "JU.BS"); +Clazz.defineMethod(c$, "getJCouplingHz", +function(a1, a2, type, isc){ +return this.getIsoOrAnisoHz(true, a1, a2, type, isc); +}, "JM.Atom,JM.Atom,~S,JU.Tensor"); +Clazz.overrideMethod(c$, "getIsoOrAnisoHz", +function(isIso, a1, a2, units, isc){ +if (isc == null) { +var type = this.getISCtype(a1, units); +if (type == null || a1.mi != a2.mi) { +if (!units.equals("hz")) return 0; +var data = J.quantum.NMRCalculation.calc2or3JorNOE(this.vwr, Clazz.newArray(-1, [a1, null, null, a2]), null, 3); +return (data == null ? NaN : data[1]); +}var bs = new JU.BS(); +bs.set(a1.i); +bs.set(a2.i); +var list = this.getInteractionTensorList(type, bs); +if (list.size() == 0) return NaN; +isc = list.get(0); +} else { +a1 = this.vwr.ms.at[isc.atomIndex1]; +a2 = this.vwr.ms.at[isc.atomIndex2]; +}return (this.getIsotopeData(a1, 1) * this.getIsotopeData(a2, 1) * (isIso ? isc.isotropy() : isc.anisotropy()) * 0.0167840302932219); +}, "~B,JM.Atom,JM.Atom,~S,JU.Tensor"); +Clazz.defineMethod(c$, "getISCtype", +function(a1, type){ +var tensors = this.vwr.ms.getInfo(a1.mi, "interactionTensors"); +if (tensors == null) return null; +type = (type == null ? "" : type.toLowerCase()); +var pt = -1; +if ((pt = type.indexOf("_hz")) >= 0 || (pt = type.indexOf("_khz")) >= 0 || (pt = type.indexOf("hz")) >= 0 || (pt = type.indexOf("khz")) >= 0) type = type.substring(0, pt); +if (type.length == 0) type = "isc"; +return type; +}, "JM.Atom,~S"); +Clazz.overrideMethod(c$, "getDipolarConstantHz", +function(a1, a2){ +if (JU.Logger.debugging) JU.Logger.debug(a1 + " g=" + this.getIsotopeData(a1, 1) + "; " + a2 + " g=" + this.getIsotopeData(a2, 1)); +var v = (-this.getIsotopeData(a1, 1) * this.getIsotopeData(a2, 1) / Math.pow(a1.distance(a2), 3) * 1054.5717253362893); +return (v == 0 || a1 === a2 ? NaN : v); +}, "JM.Atom,JM.Atom"); +Clazz.overrideMethod(c$, "getDipolarCouplingHz", +function(a1, a2, vField){ +var v12 = JU.V3.newVsub(a2, a1); +var r = v12.length(); +var costheta = v12.dot(vField) / r / vField.length(); +return (this.getDipolarConstantHz(a1, a2) * (3 * costheta - 1) / 2); +}, "JM.Atom,JM.Atom,JU.V3"); +Clazz.defineMethod(c$, "getIsotopeData", +function(a, iType){ +var iso = a.getIsotopeNumber(); +var sym = a.getElementSymbolIso(false); +var d = this.isotopeData.get(iso == 0 ? sym : "" + iso + sym); +return (d == null ? 0 : d[iType]); +}, "JM.Atom,~N"); +Clazz.defineMethod(c$, "getData", +function(){ +var br = null; +try { +var debugging = JU.Logger.debugging; +br = JV.FileManager.getBufferedReaderForResource(this.vwr, this, "J/quantum/", "nmr_data.txt"); +this.isotopeData = new java.util.Hashtable(); +var line; +while ((line = br.readLine()) != null) { +if (debugging) JU.Logger.info(line); +if (line.indexOf("#") >= 0) continue; +var tokens = JU.PT.getTokens(line); +var name = tokens[0]; +var defaultIso = tokens[2] + name; +if (debugging) JU.Logger.info(name + " default isotope " + defaultIso); +for (var i = 3; i < tokens.length; i += 3) { +var n = Integer.parseInt(tokens[i]); +var isoname = n + name; +var dataGQ = Clazz.newDoubleArray(-1, [n, Double.parseDouble(tokens[i + 1]), Double.parseDouble(tokens[i + 2])]); +if (debugging) JU.Logger.info(isoname + " " + JU.Escape.eAD(dataGQ)); +this.isotopeData.put(isoname, dataGQ); +} +var defdata = this.isotopeData.get(defaultIso); +if (defdata == null) { +JU.Logger.error("Cannot find default NMR data in nmr_data.txt for " + defaultIso); +throw new NullPointerException(); +}defdata[0] = -defdata[0]; +this.isotopeData.put(name, defdata); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Exception " + e.toString() + " reading " + "nmr_data.txt"); +} else { +throw e; +} +} finally { +try { +br.close(); +} catch (ee) { +if (Clazz.exceptionOf(ee, Exception)){ +} else { +throw ee; +} +} +} +}); +Clazz.overrideMethod(c$, "getInfo", +function(what){ +if (what.equals("all")) { +var map = new java.util.Hashtable(); +map.put("isotopes", this.isotopeData); +map.put("shiftRefsPPM", this.shiftRefsPPM); +return map; +}if (JU.PT.isDigit(what.charAt(0))) return this.isotopeData.get(what); +var info = new JU.Lst(); +for (var e, $e = this.isotopeData.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +if (JU.PT.isDigit(key.charAt(0)) && key.endsWith(what)) info.addLast(e.getValue()); +} +return info; +}, "~S"); +Clazz.overrideMethod(c$, "getChemicalShift", +function(atom){ +var v = this.getMagneticShielding(atom); +if (Float.isNaN(v)) return v; +var ref = this.shiftRefsPPM.get(atom.getElementSymbol()); +return (ref == null ? 0 : ref.floatValue()) - v; +}, "JM.Atom"); +Clazz.overrideMethod(c$, "getMagneticShielding", +function(atom){ +var t = this.vwr.ms.getAtomTensor(atom.i, "ms"); +return (t == null ? NaN : t.isotropy()); +}, "JM.Atom"); +Clazz.overrideMethod(c$, "getState", +function(sb){ +if (this.shiftRefsPPM.isEmpty()) return false; +for (var nuc, $nuc = this.shiftRefsPPM.entrySet().iterator (); $nuc.hasNext()&& ((nuc = $nuc.next ()) || true);) sb.append(" set shift_").append(nuc.getKey()).append(" ").appendO(nuc.getValue()).append("\n"); + +return true; +}, "JU.SB"); +Clazz.overrideMethod(c$, "setChemicalShiftReference", +function(element, value){ +if (element == null) { +this.shiftRefsPPM.clear(); +return false; +}element = element.substring(0, 1).toUpperCase() + element.substring(1); +this.shiftRefsPPM.put(element, Float.$valueOf(value)); +return true; +}, "~S,~N"); +Clazz.overrideMethod(c$, "getTensorInfo", +function(tensorType, infoType, bs){ +if ("".equals(tensorType)) tensorType = null; +infoType = (infoType == null ? ";all." : ";" + infoType + "."); +var data = new JU.Lst(); +var list1; +if (";dc.".equals(infoType)) { +var atoms = this.vwr.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) for (var j = bs.nextSetBit(i + 1); j >= 0; j = bs.nextSetBit(j + 1)) { +list1 = new JU.Lst(); +list1.addLast(Integer.$valueOf(atoms[i].i)); +list1.addLast(Integer.$valueOf(atoms[j].i)); +list1.addLast(Float.$valueOf(this.getDipolarConstantHz(atoms[i], atoms[j]))); +data.addLast(list1); +} + +return data; +}if (tensorType == null || tensorType.startsWith("isc")) { +var isJ = infoType.equals(";j."); +var isEta = infoType.equals(";eta."); +var list = this.getInteractionTensorList(tensorType, bs); +var n = (list == null ? 0 : list.size()); +for (var i = 0; i < n; i++) { +var t = list.get(i); +list1 = new JU.Lst(); +list1.addLast(Integer.$valueOf(t.atomIndex1)); +list1.addLast(Integer.$valueOf(t.atomIndex2)); +list1.addLast(isEta || isJ ? Float.$valueOf(this.getIsoOrAnisoHz(isJ, null, null, null, t)) : t.getInfo(infoType)); +data.addLast(list1); +} +if (tensorType != null) return data; +}var isChi = tensorType != null && tensorType.startsWith("efg") && infoType.equals(";chi."); +var isFloat = (isChi || JU.Tensor.isFloatInfo(infoType)); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (tensorType == null) { +var a = this.vwr.ms.getAtomTensorList(i); +if (a != null) for (var j = 0; j < a.length; j++) data.addLast((a[j]).getInfo(infoType)); + +} else { +var t = this.vwr.ms.getAtomTensor(i, tensorType); +data.addLast(t == null ? (isFloat ? Float.$valueOf(0) : "") : isChi ? Float.$valueOf(this.getQuadrupolarConstant(t)) : t.getInfo(infoType)); +}} +return data; +}, "~S,~S,JU.BS"); +Clazz.overrideMethod(c$, "getMinDistances", +function(md){ +var bsPoints1 = md.points.get(0); +var n1 = bsPoints1.cardinality(); +if (n1 == 0 || !(Clazz.instanceOf(md.points.get(1),"JU.BS"))) return null; +var bsPoints2 = md.points.get(1); +var n2 = bsPoints2.cardinality(); +if (n1 < 2 && n2 < 2) return null; +var htMin = new java.util.Hashtable(); +var atoms = this.vwr.ms.at; +for (var i = bsPoints1.nextSetBit(0); i >= 0; i = bsPoints1.nextSetBit(i + 1)) { +var a1 = atoms[i]; +var name = a1.getAtomName(); +for (var j = bsPoints2.nextSetBit(0); j >= 0; j = bsPoints2.nextSetBit(j + 1)) { +var a2 = atoms[j]; +var d = Clazz.floatToInt(a2.distanceSquared(a1) * 100); +if (d == 0) continue; +var name1 = a2.getAtomName(); +var key = (name.compareTo(name1) < 0 ? name + name1 : name1 + name); +var min = htMin.get(key); +if (min == null) { +min = Integer.$valueOf(d); +htMin.put(key, min); +continue; +}if (d < min.intValue()) htMin.put(key, Integer.$valueOf(d)); +} +} +return htMin; +}, "JM.MeasurementData"); +c$.calcJKarplus = Clazz.defineMethod(c$, "calcJKarplus", +function(theta){ +var j0 = 8.5; +var j180 = 9.5; +var jconst = 0.28; +var cos = Math.cos(theta); +var jab = 0; +if (theta >= -90.0 && theta < 90.0) { +jab = j0 * cos * cos - jconst; +} else { +jab = j180 * cos * cos - jconst; +}return jab; +}, "~N"); +c$.getInitialJValue = Clazz.defineMethod(c$, "getInitialJValue", +function(nNonH, theta){ +var p = J.quantum.NMRCalculation.pAltona[nNonH]; +var cos = Math.cos(theta); +return p[1] * cos * cos + p[2] * cos + p[3]; +}, "~N,~N"); +c$.getIncrementalJValue = Clazz.defineMethod(c$, "getIncrementalJValue", +function(nNonH, element, sA_cA, v21, v23, theta, f){ +if (nNonH < 0 || nNonH > 5) return 0; +var de = J.quantum.NMRCalculation.deltaElectro.get(element); +if (de == null) return 0; +var e = de.doubleValue(); +var sign = J.quantum.NMRCalculation.getSubSign(sA_cA, v21, v23, f); +var p = J.quantum.NMRCalculation.pAltona[nNonH]; +var cos = Math.cos(sign * theta + p[6] * Math.abs(e)); +return e * (p[4] + p[5] * cos * cos); +}, "~N,~S,JU.V3,JU.V3,JU.V3,~N,~N"); +c$.getSubSign = Clazz.defineMethod(c$, "getSubSign", +function(sA_cA, v21, v23, f){ +var cross = new JU.V3(); +cross.cross(v23, v21); +return (cross.dot(sA_cA) > 0 ? f : -f); +}, "JU.V3,JU.V3,JU.V3,~N"); +c$.calc3JHHOnly = Clazz.defineMethod(c$, "calc3JHHOnly", +function(subElements, subVectors, v21, v34, v23, theta, is23Double){ +var nNonH = 0; +for (var i = 0, n = (is23Double ? 2 : 3); i < n; i++) { +if (!subElements[0][i].equals("H")) { +nNonH++; +}if (!subElements[1][i].equals("H")) { +nNonH++; +}} +var jvalue = J.quantum.NMRCalculation.getInitialJValue(nNonH, theta); +for (var i = 0, n = (is23Double ? 2 : 3); i < n; i++) { +var element = subElements[0][i]; +if (!element.equals("H")) { +jvalue += J.quantum.NMRCalculation.getIncrementalJValue(nNonH, element, subVectors[0][i], v21, v23, theta, 1); +}element = subElements[1][i]; +if (!element.equals("H")) { +jvalue += J.quantum.NMRCalculation.getIncrementalJValue(nNonH, element, subVectors[1][i], v34, v23, theta, -1); +}} +if (is23Double) { +if (Math.abs(theta) < 1.5707963267948966) jvalue *= 0.75; + else jvalue *= 1.33; +}return jvalue; +}, "~A,~A,JU.V3,JU.V3,JU.V3,~N,~B"); +c$.calc3JCH = Clazz.defineMethod(c$, "calc3JCH", +function(CHequation, theta, is23Double){ +if (CHequation == null) CHequation = "was"; +if (!JU.PT.isOneOf(CHequation, ";was;tva;ayd;")) throw new IllegalArgumentException("Equation must be one of was, tva, or ayd"); +if (CHequation.equals("was")) { +var A = 3.56; +var C = 4.26; +var j = 3.56 * Math.cos(2 * theta) - Math.cos(theta) + 4.26; +return j; +} else if (CHequation.equals("tva")) { +var j = 4.5 - 0.87 * Math.cos(theta) + Math.cos(2.0 * theta); +return j; +} else if (CHequation.equals("ayd")) { +var j = 5.8 * Math.pow(Math.cos(theta), 2) - 1.6 * Math.cos(theta) + 0.28 * Math.sin(2.0 * theta) - 0.02 * Math.sin(theta) + 0.52; +return j; +} else { +return 0.0; +}}, "~S,~N,~B"); +c$.calcNOE = Clazz.defineMethod(c$, "calcNOE", +function(viewer, atom1, atom2){ +return J.quantum.NMRCalculation.calc2or3JorNOE(viewer, Clazz.newArray(-1, [atom1, null, null, atom2]), null, 7); +}, "JV.Viewer,JM.Atom,JM.Atom"); +c$.calc2or3JorNOE = Clazz.defineMethod(c$, "calc2or3JorNOE", +function(viewer, atoms, CHEquation, mode){ +if (CHEquation == null || CHEquation.equals("none")) mode &= -5; +var elements = new Array(4); +mode = J.quantum.NMRCalculation.getCalcType(atoms, elements, mode); +switch (mode) { +default: +case 0: +return null; +case 8: +return J.quantum.NMRCalculation.calcNOEImpl(viewer, atoms[0], atoms[3]); +case 1: +return J.quantum.NMRCalculation.calc2JHH(atoms[0], atoms[1], atoms[3]); +case 4: +case 2: +break; +} +var subElements = Clazz.newArray(2, 3, null); +var subVectors = Clazz.newArray(2, 3, null); +var v23 = JU.V3.newVsub(atoms[2], atoms[1]); +var v21 = JU.V3.newVsub(atoms[0], atoms[1]); +var v34 = JU.V3.newVsub(atoms[3], atoms[2]); +var subs = new JU.Lst(); +var bonds = atoms[1].bonds; +var is23Double = false; +for (var pt = 0, i = Math.min(bonds.length, 4); --i >= 0; ) { +var sub = bonds[i].getOtherAtom(atoms[1]); +if (sub === atoms[2]) { +is23Double = (bonds[i].order == 2); +continue; +}subElements[0][pt] = sub.getElementSymbol(); +subVectors[0][pt] = JU.V3.newVsub(sub, atoms[1]); +pt++; +} +subs.clear(); +bonds = atoms[2].bonds; +for (var pt = 0, i = Math.min(bonds.length, 4); --i >= 0; ) { +var sub = bonds[i].getOtherAtom(atoms[2]); +if (sub === atoms[1]) continue; +subElements[1][pt] = sub.getElementSymbol(); +subVectors[1][pt] = JU.V3.newVsub(sub, atoms[2]); +pt++; +} +var theta = JU.Measure.computeTorsion(atoms[0], atoms[1], atoms[2], atoms[3], false); +var jvalue = NaN; +if (is23Double || subElements[0][2] != null && subElements[1][2] != null) { +switch (mode) { +case 2: +jvalue = J.quantum.NMRCalculation.calc3JHHOnly(subElements, subVectors, v21, v34, v23, theta, is23Double); +break; +case 4: +if (is23Double) return null; +jvalue = J.quantum.NMRCalculation.calc3JCH(CHEquation, theta, is23Double); +break; +} +} else { +jvalue = J.quantum.NMRCalculation.calcJKarplus(theta); +}return Clazz.newDoubleArray(-1, [theta, jvalue, atoms[1].i, atoms[2].i]); +}, "JV.Viewer,~A,~S,~N"); +c$.getCalcType = Clazz.defineMethod(c$, "getCalcType", +function(atoms, elementsToFill, mode){ +var atom1 = atoms[0]; +var atom4 = atoms[3]; +var bonds1 = atom1.bonds; +var bonds4 = atom4.bonds; +if (bonds1 == null || bonds4 == null || atom1.isCovalentlyBonded(atom4)) return 0; +var allowNOE = ((mode & 8) == 8); +var allow3JHH = ((mode & 2) == 2); +var allow2JHH = ((mode & 1) == 1); +var allow3JCH = ((mode & 4) == 4); +var isGeminal = false; +var atom2 = atoms[1]; +var atom3 = atoms[2]; +if (atom2 == null) { +for (var i = 0; i < bonds1.length; i++) { +atom2 = bonds1[i].getOtherAtom(atom1); +if (atom2.isCovalentlyBonded(atom4)) { +isGeminal = true; +break; +}for (var j = 0; j < bonds4.length; j++) { +atom3 = bonds4[j].getOtherAtom(atom4); +if (atom2.isCovalentlyBonded(atom3)) break; +atom3 = null; +} +} +atoms[1] = atom2; +atoms[2] = atom3; +} else if (atom2.isCovalentlyBonded(atom4)) { +isGeminal = true; +}var e1 = atom4.getElementSymbol(); +var e2 = (atom2 == null ? null : atom2.getElementSymbol()); +var e3 = (atom3 == null ? null : atom3.getElementSymbol()); +var e4 = atom1.getElementSymbol(); +var isHH = e1.equals("H") && e4.equals("H"); +if (isGeminal) { +mode = (allow2JHH && isHH && e2.equals("C") ? 1 : 0); +} else if (atom3 == null) { +mode = (allowNOE && isHH ? 8 : 0); +} else if (allow3JHH && isHH) { +mode = 2; +} else if (allow3JCH && e2.equals("C") && e3.equals("C") && (e1.equals("H") && e4.equals("C") || e1.equals("C") && e4.equals("H"))) { +mode = 4; +} else { +mode = 0; +}if (mode != 0 && elementsToFill != null) { +elementsToFill[0] = e1; +elementsToFill[1] = e2; +elementsToFill[2] = e3; +elementsToFill[3] = e4; +}return mode; +}, "~A,~A,~N"); +c$.calc2JHH = Clazz.defineMethod(c$, "calc2JHH", +function(h1, c, h2){ +var val = NaN; +switch (c.getCovalentBondCount()) { +case 3: +val = 1.5; +break; +case 4: +val = 12.0; +break; +default: +return null; +} +var angle = JU.Measure.computeAngle(h1, c, h2, new JU.V3(), new JU.V3(), false); +return Clazz.newDoubleArray(-1, [angle, val, c.i]); +}, "JM.Atom,JM.Atom,JM.Atom"); +c$.calcNOEImpl = Clazz.defineMethod(c$, "calcNOEImpl", +function(viewer, atom1, atom2){ +try { +var noeMatrix = viewer.ms.getInfo(atom1.mi, "noeMatrix"); +var dist = 0; +var noe = NaN; +if (noeMatrix == null) { +noeMatrix = J.quantum.NMRNoeMatrix.createMatrix(viewer, viewer.getModelUndeletedAtomsBitSet(atom1.mi), viewer.ms.getInfo(atom1.mi, "noeLabels"), viewer.ms.getInfo(atom1.mi, "noeParams")); +}dist = noeMatrix.getJmolDistance(atom1.i, atom2.i); +noe = noeMatrix.getJmolNoe(atom1.i, atom2.i); +return (Double.isNaN(noe) ? null : Clazz.newDoubleArray(-1, [dist, noe])); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return null; +} else { +throw e; +} +} +}, "JV.Viewer,JM.Atom,JM.Atom"); +Clazz.overrideMethod(c$, "getNOEorJHH", +function(atoms, mode){ +return J.quantum.NMRCalculation.calc2or3JorNOE(this.vwr, atoms, null, mode); +}, "~A,~N"); +c$.deltaElectro = new java.util.Hashtable(); +{ +var enegH = 2.20; +J.quantum.NMRCalculation.deltaElectro.put("C", new Double(2.60 - enegH)); +J.quantum.NMRCalculation.deltaElectro.put("O", new Double(3.50 - enegH)); +J.quantum.NMRCalculation.deltaElectro.put("N", new Double(3.05 - enegH)); +J.quantum.NMRCalculation.deltaElectro.put("F", new Double(3.90 - enegH)); +J.quantum.NMRCalculation.deltaElectro.put("Cl", new Double(3.15 - enegH)); +J.quantum.NMRCalculation.deltaElectro.put("Br", new Double(2.95 - enegH)); +J.quantum.NMRCalculation.deltaElectro.put("I", new Double(2.65 - enegH)); +J.quantum.NMRCalculation.deltaElectro.put("S", new Double(2.58 - enegH)); +J.quantum.NMRCalculation.deltaElectro.put("Si", new Double(1.90 - enegH)); +}c$.pAltona = Clazz.newDoubleArray (5, 8, 0); +{ +for (var nNonH = 0; nNonH < 5; nNonH++) { +var p = J.quantum.NMRCalculation.pAltona[nNonH]; +switch (nNonH) { +case 0: +case 1: +case 2: +p[1] = 13.7; +p[2] = -0.73; +p[3] = 0; +p[4] = 0.56; +p[5] = -2.47; +p[6] = 16.9; +p[7] = 0.14; +break; +case 3: +p[1] = 13.22; +p[2] = -0.99; +p[3] = 0; +p[4] = 0.87; +p[5] = -2.46; +p[6] = 19.9; +p[7] = 0; +break; +case 4: +p[1] = 13.24; +p[2] = -0.91; +p[3] = 0; +p[4] = 0.53; +p[5] = -2.41; +p[6] = 15.5; +p[7] = 0.19; +break; +} +p[6] = p[6] * 3.141592653589793 / 180.0; +} +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/NMRNoeMatrix.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/NMRNoeMatrix.js new file mode 100755 index 000000000000..9f96343f1b0d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/NMRNoeMatrix.js @@ -0,0 +1,650 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(["java.text.NumberFormat"], "J.quantum.NMRNoeMatrix", ["java.io.BufferedReader", "$.File", "$.FileReader", "java.util.Hashtable", "JU.BS", "$.Lst", "$.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.eigenValues = null; +this.eigenVectors = null; +this.relaxMatrix = null; +this.noeM = null; +this.distanceMatrix = null; +this.atoms = null; +this.nHAtoms = 0; +this.atomCounter = 0; +this.i = 0; +this.j = 0; +this.k = 0; +this.m = 0; +this.n = 0; +this.p = 0; +this.q = 0; +this.atomMap = null; +this.baseIndex = 0; +this.params = null; +Clazz.instantialize(this, arguments);}, J.quantum, "NMRNoeMatrix", null); +Clazz.makeConstructor(c$, +function(params){ +this.params = params; +params.id = ++J.quantum.NMRNoeMatrix.staticid; +}, "J.quantum.NMRNoeMatrix.NOEParams"); +c$.createMatrix = Clazz.defineMethod(c$, "createMatrix", +function(viewer, bsMol, labelArray, params){ +var bsH = null; +try { +bsH = (bsMol.isEmpty() ? new JU.BS() : viewer.getSmartsMatch("[H]", bsMol)); +} catch (e1) { +if (Clazz.exceptionOf(e1, Exception)){ +} else { +throw e1; +} +} +var labels = new java.util.Hashtable(); +var indexAtomInMol = new java.util.Hashtable(); +var labelMap = J.quantum.NMRNoeMatrix.createLabelMapAndIndex(viewer, bsMol, labelArray, bsH, labels, indexAtomInMol); +var hAtoms = J.quantum.NMRNoeMatrix.createHAtomList(viewer, bsMol, bsH, labels, labelMap); +var noeMatrix = J.quantum.NMRNoeMatrix.createNOEMatrix(hAtoms, indexAtomInMol, bsMol.cardinality(), bsMol.nextSetBit(0), (params == null ? new J.quantum.NMRNoeMatrix.NOEParams() : params)); +if (!bsMol.isEmpty()) { +viewer.getCurrentModelAuxInfo().put("noeMatrix", noeMatrix); +}return noeMatrix; +}, "JV.Viewer,JU.BS,~A,J.quantum.NMRNoeMatrix.NOEParams"); +Clazz.defineMethod(c$, "getParams", +function(){ +return this.params; +}); +c$.createNOEMatrix = Clazz.defineMethod(c$, "createNOEMatrix", +function(hAtoms, indexAtomInMol, atomCount, baseIndex, params){ +var map = Clazz.newIntArray (atomCount, 0); +var nHAtoms = hAtoms.size(); +var noeMatrix = new J.quantum.NMRNoeMatrix(params); +noeMatrix.baseIndex = baseIndex; +noeMatrix.initArrays(nHAtoms); +for (var i = 0; i < nHAtoms; i++) { +var aobj = hAtoms.get(i); +if (Clazz.instanceOf(aobj,"JM.Atom")) { +var a = hAtoms.get(i); +map[(indexAtomInMol.get(a)).intValue()] = i; +noeMatrix.addAtom(a.x, a.y, a.z); +} else if (Clazz.instanceOf(aobj,"JU.Lst")) { +var lst = aobj; +var nEquiv = lst.size(); +for (var j = 0; j < nEquiv; j++) { +map[(indexAtomInMol.get(lst.get(j))).intValue()] = i; +} +var xa = Clazz.newDoubleArray (nEquiv, 0); +var ya = Clazz.newDoubleArray (nEquiv, 0); +var za = Clazz.newDoubleArray (nEquiv, 0); +for (var j = 0; j < nEquiv; j++) { +var a = lst.get(j); +xa[j] = a.x; +ya[j] = a.y; +za[j] = a.z; +} +noeMatrix.addEquiv(xa, ya, za); +} else { +var a = aobj; +map[(indexAtomInMol.get(a[0])).intValue()] = i; +map[(indexAtomInMol.get(a[1])).intValue()] = i; +map[(indexAtomInMol.get(a[2])).intValue()] = i; +noeMatrix.addMethyl(a[0].x, a[0].y, a[0].z, a[1].x, a[1].y, a[1].z, a[2].x, a[2].y, a[2].z); +}} +noeMatrix.atomMap = map; +return noeMatrix; +}, "JU.Lst,java.util.Map,~N,~N,J.quantum.NMRNoeMatrix.NOEParams"); +Clazz.defineMethod(c$, "calcNOEs", +function(){ +if (this.nHAtoms == 0 || this.atoms == null) { +this.noeM = Clazz.newDoubleArray (0, 0, 0); +return; +}if (this.nHAtoms != this.atomCounter) { +throw new Exception("Not all atoms have been read in yet!"); +}if (this.params.tainted) { +this.calcRelaxMatrix(); +this.Diagonalise(); +}if (this.params.tainted || this.params.mixingChanged) { +this.calcNoeMatrix(); +this.params.mixingChanged = false; +}this.params.tainted = false; +}); +Clazz.defineMethod(c$, "initArrays", +function(n){ +this.nHAtoms = n; +this.atoms = new Array(this.nHAtoms); +this.atomCounter = 0; +this.relaxMatrix = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +this.eigenValues = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +this.eigenVectors = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +this.noeM = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +this.distanceMatrix = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +}, "~N"); +Clazz.defineMethod(c$, "addAtom", +function(x, y, z){ +this.atoms[this.atomCounter] = new J.quantum.NMRNoeMatrix.NOEAtom(); +this.atoms[this.atomCounter].x = x; +this.atoms[this.atomCounter].y = y; +this.atoms[this.atomCounter].z = z; +this.atoms[this.atomCounter].methyl = false; +this.atomCounter++; +this.params.tainted = true; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "addMethyl", +function(x, y, z, x1, y1, z1, x2, y2, z2){ +this.atoms[this.atomCounter] = new J.quantum.NMRNoeMatrix.NOEAtom(); +this.atoms[this.atomCounter].x = x; +this.atoms[this.atomCounter].y = y; +this.atoms[this.atomCounter].z = z; +this.atoms[this.atomCounter].x1 = x1; +this.atoms[this.atomCounter].y1 = y1; +this.atoms[this.atomCounter].z1 = z1; +this.atoms[this.atomCounter].x2 = x2; +this.atoms[this.atomCounter].y2 = y2; +this.atoms[this.atomCounter].z2 = z2; +this.atoms[this.atomCounter].methyl = true; +this.atomCounter++; +this.params.tainted = true; +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "addEquiv", +function(xa, ya, za){ +this.atoms[this.atomCounter] = new J.quantum.NMRNoeMatrix.NOEAtom(); +this.atoms[this.atomCounter].xa = xa; +this.atoms[this.atomCounter].ya = ya; +this.atoms[this.atomCounter].za = za; +this.atoms[this.atomCounter].equiv = true; +this.atomCounter++; +this.params.tainted = true; +}, "~A,~A,~A"); +Clazz.defineMethod(c$, "calcRelaxMatrix", +function(){ +var alpha = 5.6965E10; +var rho; +var JValSigma; +var JValRho; +var rhoStar = this.params.rhoStar; +var freq = this.params.freq; +var cutoff2 = this.params.cutoff * this.params.cutoff; +var tau = this.params.tau; +if (this.params.noesy) { +JValSigma = 6.0 * J.quantum.NMRNoeMatrix.J(2 * freq, tau) - J.quantum.NMRNoeMatrix.J(0, tau); +JValRho = 6.0 * J.quantum.NMRNoeMatrix.J(2 * freq, tau) + 3.0 * J.quantum.NMRNoeMatrix.J(freq, tau) + J.quantum.NMRNoeMatrix.J(0, tau); +} else { +JValSigma = 3.0 * J.quantum.NMRNoeMatrix.J(freq, tau) + 2.0 * J.quantum.NMRNoeMatrix.J(0, tau); +JValRho = 3.0 * J.quantum.NMRNoeMatrix.J(2 * freq, tau) + 4.5 * J.quantum.NMRNoeMatrix.J(freq, tau) + 2.5 * J.quantum.NMRNoeMatrix.J(0, tau); +}for (this.i = 0; this.i < this.nHAtoms; this.i++) { +rho = 0.0; +for (this.j = 0; this.j < this.nHAtoms; this.j++) { +var distSqrd = this.distanceSqrd(this.atoms[this.i], this.atoms[this.j]); +this.distanceMatrix[this.i][this.j] = Math.sqrt(distSqrd); +var aOverR6; +if (distSqrd < cutoff2) { +aOverR6 = alpha / (distSqrd * distSqrd * distSqrd); +} else { +aOverR6 = 0; +}if (this.i < this.j) { +this.relaxMatrix[this.i][this.j] = aOverR6 * JValSigma; +this.relaxMatrix[this.j][this.i] = this.relaxMatrix[this.i][this.j]; +}if (this.i != this.j) { +rho = rho + aOverR6 * JValRho; +}} +this.relaxMatrix[this.i][this.i] = rho + rhoStar; +} +}); +c$.J = Clazz.defineMethod(c$, "J", +function(w, tau){ +return tau / (1 + (w * w * tau * tau)); +}, "~N,~N"); +Clazz.defineMethod(c$, "sign", +function(x){ +if (x < 0) { +return -1; +}return 1; +}, "~N"); +Clazz.defineMethod(c$, "calcNoeMatrix", +function(){ +var tempEVs = Clazz.newDoubleArray (this.nHAtoms, 0); +var tMix = this.params.tMix; +for (this.i = 0; this.i < this.nHAtoms; this.i++) { +tempEVs[this.i] = Math.exp(-this.eigenValues[this.i][this.i] * tMix); +} +for (this.i = 0; this.i < this.nHAtoms; this.i++) { +for (this.j = 0; this.j <= this.i; this.j++) { +var sum = 0; +for (this.k = 0; this.k < this.nHAtoms; this.k++) { +sum += this.eigenVectors[this.i][this.k] * this.eigenVectors[this.j][this.k] * tempEVs[this.k]; +} +this.noeM[this.i][this.j] = sum; +this.noeM[this.j][this.i] = sum; +} +} +}); +Clazz.defineMethod(c$, "Diagonalise", +function(){ +var iter = 0; +for (var i = 0; i < this.nHAtoms; i++) { +for (var z = 0; z < this.nHAtoms; z++) { +this.eigenVectors[i][z] = 0.0; +this.eigenValues[i][z] = this.relaxMatrix[i][z]; +} +} +for (var i = 0; i < this.nHAtoms; i++) { +this.eigenVectors[i][i] = 1.0; +} +var state = "ITERATING"; +var maxIter = 100000; +while (state === "ITERATING") { +var max = this.maxOffDiag(); +if (max > 0.0) { +this.rotate(); +iter++; +if (iter >= maxIter) { +state = "STOP"; +System.out.println("maximum iteration reached"); +}} else { +state = "SUCCESS"; +}} +return iter; +}); +Clazz.defineMethod(c$, "maxOffDiag", +function(){ +var max = 0.0; +for (var i = 0; i < this.nHAtoms - 1; i++) { +for (var j = i + 1; j < this.nHAtoms; j++) { +var aij = Math.abs(this.eigenValues[i][j]); +if (aij > max) { +max = aij; +this.p = i; +this.q = j; +}} +} +return max; +}); +Clazz.defineMethod(c$, "rotate", +function(){ +var d = (this.eigenValues[this.p][this.p] - this.eigenValues[this.q][this.q]) / (2.0 * this.eigenValues[this.p][this.q]); +var t = this.sign(d) / (Math.abs(d) + Math.sqrt(d * d + 1)); +var c = 1.0 / Math.sqrt(t * t + 1); +var s = t * c; +this.eigenValues[this.p][this.p] += t * this.eigenValues[this.p][this.q]; +this.eigenValues[this.q][this.q] -= t * this.eigenValues[this.p][this.q]; +this.eigenValues[this.p][this.q] = this.eigenValues[this.q][this.p] = 0.0; +for (var k = 0; k < this.nHAtoms; k++) { +if (k != this.p && k != this.q) { +var akp = c * this.eigenValues[k][this.p] + s * this.eigenValues[k][this.q]; +var akq = -s * this.eigenValues[k][this.p] + c * this.eigenValues[k][this.q]; +this.eigenValues[k][this.p] = this.eigenValues[this.p][k] = akp; +this.eigenValues[k][this.q] = this.eigenValues[this.q][k] = akq; +}} +for (var k = 0; k < this.nHAtoms; k++) { +var rkp = c * this.eigenVectors[k][this.p] + s * this.eigenVectors[k][this.q]; +var rkq = -s * this.eigenVectors[k][this.p] + c * this.eigenVectors[k][this.q]; +this.eigenVectors[k][this.p] = rkp; +this.eigenVectors[k][this.q] = rkq; +} +}); +Clazz.overrideMethod(c$, "toString", +function(){ +var sb; +sb = new JU.SB(); +for (this.i = 0; this.i < this.nHAtoms; this.i++) { +for (this.j = 0; this.j < this.nHAtoms; this.j++) { +sb.append(J.quantum.NMRNoeMatrix.nf.format(this.noeM[this.i][this.j]) + "\t"); +} +sb.append("\n"); +} +sb.append(this.params.toString()); +return sb.toString(); +}); +Clazz.defineMethod(c$, "toStringNormRow", +function(){ +var nf = java.text.NumberFormat.getInstance(); +nf.setMinimumFractionDigits(4); +nf.setMaximumFractionDigits(4); +var sb = new JU.SB(); +for (this.i = 0; this.i < this.nHAtoms; this.i++) { +for (this.j = 0; this.j < this.nHAtoms; this.j++) { +var val = this.noeM[this.i][this.j] / this.noeM[this.i][this.i]; +sb.append(nf.format(val) + "\t"); +} +sb.append("\n"); +} +return sb.toString(); +}); +Clazz.defineMethod(c$, "distanceSqrd", +function(a, b){ +var atom1; +var atom2; +var d; +var d1; +var d2; +var d3; +var prod12; +var prod13; +var prod23; +var d15; +var d25; +var d35; +if (b.methyl && !a.methyl) { +atom1 = b; +atom2 = a; +} else if (b.equiv && !a.equiv) { +atom1 = b; +atom2 = a; +} else { +atom1 = a; +atom2 = b; +}if (atom1.methyl) { +var a2x; +var a2y; +var a2z; +if (atom2.methyl) { +a2x = (atom2.x + atom2.x1 + atom2.x2) / 3.0; +a2y = (atom2.y + atom2.y1 + atom2.y2) / 3.0; +a2z = (atom2.z + atom2.z1 + atom2.z2) / 3.0; +} else if (atom2.equiv) { +a2x = 0.0; +a2y = 0.0; +a2z = 0.0; +for (var j = 0; j < atom2.xa.length; j++) { +a2x += atom2.xa[j] / atom2.xa.length; +a2y += atom2.ya[j] / atom2.xa.length; +a2z += atom2.za[j] / atom2.xa.length; +} +} else { +a2x = atom2.x; +a2y = atom2.y; +a2z = atom2.z; +}var x1 = atom1.x - a2x; +var y1 = atom1.y - a2y; +var z1 = atom1.z - a2z; +var x2 = atom1.x1 - a2x; +var y2 = atom1.y1 - a2y; +var z2 = atom1.z1 - a2z; +var x3 = atom1.x2 - a2x; +var y3 = atom1.y2 - a2y; +var z3 = atom1.z2 - a2z; +d1 = (x1 * x1) + (y1 * y1) + (z1 * z1); +d2 = (x2 * x2) + (y2 * y2) + (z2 * z2); +d3 = (x3 * x3) + (y3 * y3) + (z3 * z3); +d15 = d1 * d1 * Math.sqrt(d1); +d25 = d2 * d2 * Math.sqrt(d2); +d35 = d3 * d3 * Math.sqrt(d3); +prod12 = x1 * x2 + y1 * y2 + z1 * z2; +prod13 = x1 * x3 + y1 * y3 + z1 * z3; +prod23 = x2 * x3 + y2 * y3 + z2 * z3; +d = (2 * d1 * d1) / (d15 * d15); +d += ((3 * (prod12 * prod12)) - (d1 * d2)) / (d15 * d25); +d += ((3 * (prod13 * prod13)) - (d1 * d3)) / (d15 * d35); +d += ((3 * (prod12 * prod12)) - (d2 * d1)) / (d25 * d15); +d += (2 * d2 * d2) / (d25 * d25); +d += ((3 * (prod23 * prod23)) - (d2 * d3)) / (d25 * d35); +d += ((3 * (prod13 * prod13)) - (d3 * d1)) / (d35 * d15); +d += ((3 * (prod23 * prod23)) - (d3 * d2)) / (d35 * d25); +d += (2 * d3 * d3) / (d35 * d35); +return (Math.pow(d / 18.0, -0.3333333333333333)); +} else if (atom1.equiv) { +if (atom2.equiv) { +var dd = 0.0; +for (var i = 0; i < atom1.xa.length; i++) { +for (var j = 0; j < atom2.xa.length; j++) { +var x1 = atom1.xa[i] - atom2.xa[j]; +var y1 = atom1.ya[i] - atom2.ya[j]; +var z1 = atom1.za[i] - atom2.za[j]; +dd += Math.pow((x1 * x1) + (y1 * y1) + (z1 * z1), -3.0); +} +} +return Math.pow(dd / (atom1.xa.length * atom2.xa.length), -0.3333333333333333); +}var dd = 0.0; +for (var i = 0; i < atom1.xa.length; i++) { +var x1 = atom1.xa[i] - atom2.x; +var y1 = atom1.ya[i] - atom2.y; +var z1 = atom1.za[i] - atom2.z; +dd += Math.pow((x1 * x1) + (y1 * y1) + (z1 * z1), -3.0); +} +return Math.pow(dd / atom1.xa.length, -0.3333333333333333); +} else { +var x1 = atom1.x - atom2.x; +var y1 = atom1.y - atom2.y; +var z1 = atom1.z - atom2.z; +return (x1 * x1) + (y1 * y1) + (z1 * z1); +}}, "J.quantum.NMRNoeMatrix.NOEAtom,J.quantum.NMRNoeMatrix.NOEAtom"); +Clazz.defineMethod(c$, "doItAll", +function(file){ +System.out.println("starting"); +this.readAtomsFromFile(file); +this.relaxMatrix = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +this.eigenValues = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +this.eigenVectors = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +this.noeM = Clazz.newDoubleArray (this.nHAtoms, this.nHAtoms, 0); +System.out.println("read atoms: " + Integer.toString(this.nHAtoms)); +this.calcRelaxMatrix(); +System.out.println("built matrix"); +System.out.println("total iterations = " + Integer.toString(this.Diagonalise())); +System.out.println("diagonalised matrix"); +this.calcNoeMatrix(); +System.out.println("calculated NOE matrix"); +System.out.println(this.toString()); +System.out.println(""); +System.out.println(this.toStringNormRow()); +try { +this.calcNOEs(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +}, "java.io.File"); +Clazz.defineMethod(c$, "readAtomsFromFile", +function(file){ +this.atoms = new Array(200); +this.nHAtoms = 0; +var br = null; +try { +br = new java.io.BufferedReader( new java.io.FileReader(file)); +br.readLine(); +System.out.println("found file"); +while (true) { +var linetokens = br.readLine().$plit("\\s+"); +if (linetokens[1].matches("41") || linetokens[1].matches("44")) { +this.atoms[this.nHAtoms] = new J.quantum.NMRNoeMatrix.NOEAtom(); +this.atoms[this.nHAtoms].x = Double.$valueOf(linetokens[14]).doubleValue(); +this.atoms[this.nHAtoms].y = Double.$valueOf(linetokens[15]).doubleValue(); +this.atoms[this.nHAtoms].z = Double.$valueOf(linetokens[16]).doubleValue(); +this.atoms[this.nHAtoms].methyl = false; +this.nHAtoms++; +}} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} finally { +if (br != null) try { +br.close(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +} +}, "java.io.File"); +c$.main = Clazz.defineMethod(c$, "main", +function(args){ +var params = new J.quantum.NMRNoeMatrix.NOEParams(); +params.setNMRfreqMHz(500); +params.setCorrelationTimeTauPS(80.0); +params.setMixingTimeSec(0.5); +params.setCutoffAng(10.0); +params.setRhoStar(0.1); +params.setNoesy(true); + new J.quantum.NMRNoeMatrix(params).doItAll( new java.io.File(args[0])); +}, "~A"); +c$.createLabelMapAndIndex = Clazz.defineMethod(c$, "createLabelMapAndIndex", +function(viewer, bsMol, labelArray, bsH, labels, indexAtomInMol){ +var labelMap = new java.util.Hashtable(); +for (var pt = 0, i = bsMol.nextSetBit(0); i >= 0; i = bsMol.nextSetBit(i + 1), pt++) { +var a = viewer.ms.at[i]; +indexAtomInMol.put(a, Integer.$valueOf(pt)); +if (labelArray != null) { +var label = labelArray[pt]; +if (labelArray[pt] == null) { +labels.put(a, ""); +} else { +var lst = labelMap.get(label); +if (lst == null) { +labelMap.put(label, lst = new JU.Lst()); +} else { +bsH.clear(i); +}lst.addLast(a); +labels.put(a, label); +}}} +return labelMap; +}, "JV.Viewer,JU.BS,~A,JU.BS,java.util.Map,java.util.Map"); +c$.createHAtomList = Clazz.defineMethod(c$, "createHAtomList", +function(viewer, bsMol, bsH, labels, labelMap){ +var hAtoms = new JU.Lst(); +try { +if (!bsMol.isEmpty()) { +var methyls = viewer.getSmartsMap("C({[H]})({[H]}){[H]}", bsMol, 130); +for (var i = methyls.length; --i >= 0; ) { +var methyl = new Array(3); +for (var j = 0; j < 3; j++) { +var pt = methyls[i][j]; +methyl[j] = viewer.ms.at[pt]; +bsH.clear(pt); +} +hAtoms.addLast(methyl); +} +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +for (var i = bsH.nextSetBit(0); i >= 0; i = bsH.nextSetBit(i + 1)) { +var a = viewer.ms.at[i]; +var label = labels.get(a); +var atoms = (label == null ? null : labelMap.get(labels.get(a))); +if (atoms != null && atoms.size() > 1) { +hAtoms.addLast(atoms); +} else { +hAtoms.addLast(a); +}} +return hAtoms; +}, "JV.Viewer,JU.BS,JU.BS,java.util.Map,java.util.Map"); +Clazz.defineMethod(c$, "getJmolDistance", +function(a, b){ +return this.getDistance(this.atomMap[a - this.baseIndex], this.atomMap[b - this.baseIndex]); +}, "~N,~N"); +Clazz.defineMethod(c$, "getDistance", +function(i, j){ +return (i < 0 || j < 0 || i >= this.nHAtoms ? NaN : this.distanceMatrix[i][j]); +}, "~N,~N"); +Clazz.defineMethod(c$, "getJmolNoe", +function(a, b){ +return this.getNoe(this.atomMap[a - this.baseIndex], this.atomMap[b - this.baseIndex]); +}, "~N,~N"); +Clazz.defineMethod(c$, "getNoe", +function(i, j){ +return (i < 0 || j < 0 || i >= this.nHAtoms ? NaN : this.noeM[i][j]); +}, "~N,~N"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.noesy = false; +this.tau = 0; +this.freq = 0; +this.tMix = 0; +this.cutoff = 0; +this.rhoStar = 0; +this.tainted = true; +this.mixingChanged = true; +this.id = 0; +Clazz.instantialize(this, arguments);}, J.quantum.NMRNoeMatrix, "NOEParams", null); +Clazz.prepareFields (c$, function(){ +{ +this.freq = 2.5132741228718348E9; +this.tau = 80E-12; +this.tMix = 0.5; +this.cutoff = 10; +this.rhoStar = 0.1; +this.noesy = true; +}}); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[id=" + this.id + " freq=" + this.getNMRfreqMHz() + " tau=" + this.tau + " tMix=" + this.tMix + " cutoff=" + this.cutoff + " rhoStar=" + this.rhoStar + " noesy=" + this.noesy + "]"; +}); +Clazz.defineMethod(c$, "setCorrelationTimeTauPS", +function(t){ +this.tau = t * 1E-12; +this.tainted = true; +}, "~N"); +Clazz.defineMethod(c$, "setMixingTimeSec", +function(t){ +this.tMix = t; +this.mixingChanged = true; +}, "~N"); +Clazz.defineMethod(c$, "setNMRfreqMHz", +function(f){ +this.freq = f * 2 * 3.141592653589793 * 1E6; +this.tainted = true; +}, "~N"); +Clazz.defineMethod(c$, "setCutoffAng", +function(c){ +this.cutoff = c; +this.tainted = true; +}, "~N"); +Clazz.defineMethod(c$, "setRhoStar", +function(c){ +this.rhoStar = c; +this.tainted = true; +}, "~N"); +Clazz.defineMethod(c$, "setNoesy", +function(b){ +this.noesy = b; +this.tainted = true; +}, "~B"); +Clazz.defineMethod(c$, "getCorrelationTimeTauPS", +function(){ +return this.tau; +}); +Clazz.defineMethod(c$, "getMixingTimeSec", +function(){ +return this.tMix; +}); +Clazz.defineMethod(c$, "getNoesy", +function(){ +return this.noesy; +}); +Clazz.defineMethod(c$, "getNMRfreqMHz", +function(){ +return this.freq / 2 / 3.141592653589793 / 1E6; +}); +Clazz.defineMethod(c$, "getCutoffAng", +function(){ +return this.cutoff; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +this.x1 = 0; +this.y1 = 0; +this.z1 = 0; +this.x2 = 0; +this.y2 = 0; +this.z2 = 0; +this.xa = null; +this.ya = null; +this.za = null; +this.methyl = false; +this.equiv = false; +Clazz.instantialize(this, arguments);}, J.quantum.NMRNoeMatrix, "NOEAtom", null); +/*eoif3*/})(); +c$.staticid = 0; +c$.nf = java.text.NumberFormat.getInstance(); +{ +J.quantum.NMRNoeMatrix.nf.setMinimumFractionDigits(4); +J.quantum.NMRNoeMatrix.nf.setMaximumFractionDigits(4); +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/NciCalculation.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/NciCalculation.js new file mode 100755 index 000000000000..06a8dceec16c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/NciCalculation.js @@ -0,0 +1,370 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(["J.quantum.QuantumPlaneCalculation", "JU.AU"], "J.quantum.NciCalculation", ["JU.BS", "$.Eigen", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.havePoints = false; +this.isReducedDensity = false; +this.DEFAULT_RHOPLOT_SCF = 0.05; +this.DEFAULT_RHOPLOT_PRO = 0.07; +this.DEFAULT_RHOPARAM = 0.95; +this.rhoMin = 0; +this.rhoPlot = 0; +this.rhoParam = 0; +this.dataScaling = 1; +this.dataIsReducedDensity = false; +this.eigen = null; +this.rhoMolecules = null; +this.type = 0; +this.nMolecules = 0; +this.isPromolecular = false; +this.bsOK = null; +this.noValuesAtAll = false; +this.useAbsolute = false; +this.hess = null; +this.grad = 0; +this.gxTemp = 0; +this.gyTemp = 0; +this.gzTemp = 0; +this.gxxTemp = 0; +this.gyyTemp = 0; +this.gzzTemp = 0; +this.gxyTemp = 0; +this.gyzTemp = 0; +this.gxzTemp = 0; +this.eigenValues = null; +this.test1 = 0; +this.yzPlanesRaw = null; +this.yzCount = 0; +this.yzPlanesRho = null; +this.p0 = null; +this.p1 = null; +this.p2 = null; +Clazz.instantialize(this, arguments);}, J.quantum, "NciCalculation", J.quantum.QuantumPlaneCalculation); +Clazz.prepareFields (c$, function(){ +this.eigenValues = Clazz.newFloatArray (3, 0); +this.yzPlanesRho = JU.AU.newFloat2(2); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.quantum.NciCalculation, []); +}); +Clazz.overrideMethod(c$, "getNoValue", +function(){ +return 100.0; +}); +Clazz.defineMethod(c$, "setupCalculation", +function(volumeData, bsSelected, bsExcluded, bsMolecules, atomCoordAngstroms, firstAtomOffset, isReducedDensity, points, parameters, testFlags){ +this.useAbsolute = (testFlags == 2); +this.bsExcluded = bsExcluded; +var bsLigand = new JU.BS(); +bsLigand.or(bsSelected); +if (bsExcluded != null) { +bsLigand.andNot(bsExcluded); +}this.isPromolecular = (firstAtomOffset >= 0); +this.havePoints = (points != null); +this.isReducedDensity = isReducedDensity; +if (parameters != null) JU.Logger.info("NCI calculation parameters = " + JU.Escape.eAF(parameters)); +this.type = Clazz.doubleToInt(J.quantum.NciCalculation.getParameter(parameters, 1, 0, "type")); +if (this.type != 0 && bsMolecules == null) this.type = 0; +this.rhoMin = J.quantum.NciCalculation.getParameter(parameters, 2, 1e-5, "rhoMin"); +this.rhoPlot = J.quantum.NciCalculation.getParameter(parameters, 3, (this.isPromolecular ? this.DEFAULT_RHOPLOT_PRO : this.DEFAULT_RHOPLOT_SCF), "rhoPlot"); +this.rhoParam = J.quantum.NciCalculation.getParameter(parameters, 4, this.DEFAULT_RHOPARAM, "rhoParam"); +this.dataScaling = J.quantum.NciCalculation.getParameter(parameters, 5, 1, "dataScaling"); +this.dataIsReducedDensity = (this.type < 0); +var stype; +switch (this.type) { +case 0: +default: +this.type = 0; +stype = "all"; +bsMolecules = null; +break; +case -1: +case 1: +this.type = 1; +stype = "intramolecular"; +break; +case -2: +case 2: +this.type = 2; +stype = "intermolecular"; +break; +case 3: +stype = "ligand"; +break; +} +this.nMolecules = 0; +if (!this.isPromolecular && this.type == 0) atomCoordAngstroms = null; +JU.Logger.info("NCI calculation type = " + (this.isPromolecular ? "promolecular " : "SCF(CUBE) ") + stype); +this.voxelData = volumeData.getVoxelData(); +this.countsXYZ = volumeData.getVoxelCounts(); +this.initialize(this.countsXYZ[0], this.countsXYZ[1], this.countsXYZ[2], points); +if (this.havePoints) { +this.xMin = this.yMin = this.zMin = 0; +this.xMax = this.yMax = this.zMax = points.length; +}this.setupCoordinates(volumeData.getOriginFloat(), volumeData.getVolumetricVectorLengths(), bsSelected, atomCoordAngstroms, null, points, true); +if (this.qmAtoms != null) { +var qmMap = Clazz.newIntArray (bsSelected.length(), 0); +for (var i = this.qmAtoms.length; --i >= 0; ) { +qmMap[this.qmAtoms[i].index] = i; +if (this.qmAtoms[i].znuc < 1) { +this.qmAtoms[i] = null; +} else if (this.qmAtoms[i].znuc > 18) { +this.qmAtoms[i].znuc = 18; +JU.Logger.info("NCI calculation just setting nuclear charge for " + this.qmAtoms[i].atom + " to 18 (argon)"); +}} +this.nMolecules = 0; +if (this.type != 0) { +for (var i = 0; i < bsMolecules.length; i++) { +var bs = JU.BSUtil.copy(bsMolecules[i]); +bs.and(bsSelected); +if (bs.nextSetBit(0) < 0) continue; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) this.qmAtoms[qmMap[j]].iMolecule = this.nMolecules; + +this.nMolecules++; +JU.Logger.info("Molecule " + (this.nMolecules) + " (" + bs.cardinality() + " atoms): " + JU.Escape.eBS(bs)); +} +this.rhoMolecules = Clazz.newDoubleArray (this.nMolecules, 0); +}if (this.nMolecules == 0) this.nMolecules = 1; +if (this.nMolecules == 1) { +this.noValuesAtAll = (this.type != 0 && this.type != 1); +this.type = 0; +}if (!this.isPromolecular) this.getBsOK(); +}if (!isReducedDensity || !this.isPromolecular) this.initializeEigen(); +this.doDebug = (JU.Logger.debugging); +return true; +}, "J.jvxl.data.VolumeData,JU.BS,JU.BS,~A,~A,~N,~B,~A,~A,~N"); +c$.getParameter = Clazz.defineMethod(c$, "getParameter", +function(parameters, i, def, name){ +var param = (parameters == null || parameters.length < i + 1 ? 0 : parameters[i]); +if (param == 0) param = def; +JU.Logger.info("NCI calculation parameters[" + i + "] (" + name + ") = " + param); +return param; +}, "~A,~N,~N,~S"); +Clazz.defineMethod(c$, "getBsOK", +function(){ +if (this.noValuesAtAll || this.nMolecules == 1) return; +this.bsOK = JU.BS.newN(this.nX * this.nY * this.nZ); +this.setXYZBohr(null); +for (var ix = 0, index = 0; ix < this.countsXYZ[0]; ix++) for (var iy = 0; iy < this.countsXYZ[1]; iy++) for (var iz = 0; iz < this.countsXYZ[2]; index++, iz++) this.processAtoms(ix, iy, iz, index); + + + +JU.Logger.info("NCI calculation SCF " + (this.type == 1 ? "intra" : "inter") + "molecular grid points = " + this.bsOK.cardinality()); +}); +Clazz.overrideMethod(c$, "createCube", +function(){ +this.setXYZBohr(this.points); +this.process(); +}); +Clazz.overrideMethod(c$, "initializeOnePoint", +function(){ +if (this.eigen == null) this.initializeEigen(); +this.isReducedDensity = false; +this.initializeOnePointQC(); +}); +Clazz.defineMethod(c$, "initializeEigen", +function(){ +this.eigen = new JU.Eigen().set(3); +this.hess = Clazz.newDoubleArray (3, 3, 0); +}); +Clazz.overrideMethod(c$, "getPlane", +function(ix, yzPlane){ +if (this.noValuesAtAll) { +for (var j = 0; j < this.yzCount; j++) yzPlane[j] = NaN; + +return; +}this.isReducedDensity = true; +this.initialize(this.countsXYZ[0], this.countsXYZ[1], this.countsXYZ[2], null); +this.setXYZBohr(null); +var index = ix * this.yzCount; +for (var iy = 0, i = 0; iy < this.countsXYZ[1]; iy++) for (var iz = 0; iz < this.countsXYZ[2]; i++, iz++) if (this.bsOK == null || this.bsOK.get(index + i)) yzPlane[i] = this.getValue(this.processAtoms(ix, iy, iz, -1), this.isReducedDensity); + else yzPlane[i] = NaN; + + +}, "~N,~A"); +Clazz.defineMethod(c$, "process", +function(){ +if (this.noValuesAtAll) return; +for (var ix = this.xMax; --ix >= this.xMin; ) { +for (var iy = this.yMin; iy < this.yMax; iy++) { +var vd = this.voxelData[ix][(this.havePoints ? 0 : iy)]; +for (var iz = this.zMin; iz < this.zMax; iz++) vd[(this.havePoints ? 0 : iz)] = this.getValue(this.processAtoms(ix, iy, iz, -1), this.isReducedDensity); + +} +} +}); +Clazz.defineMethod(c$, "getValue", +function(rho, isReducedDensity){ +var s; +if (rho == 100.0) return NaN; +if (isReducedDensity) { +s = J.quantum.NciCalculation.c * this.grad * Math.pow(rho, J.quantum.NciCalculation.rpower); +} else if (this.useAbsolute) { +s = rho; +} else { +this.hess[0][0] = this.gxxTemp; +this.hess[1][0] = this.hess[0][1] = this.gxyTemp; +this.hess[2][0] = this.hess[0][2] = this.gxzTemp; +this.hess[1][1] = this.gyyTemp; +this.hess[1][2] = this.hess[2][1] = this.gyzTemp; +this.hess[2][2] = this.gzzTemp; +this.eigen.calc(this.hess); +this.eigen.fillFloatArrays(null, this.eigenValues); +s = (this.eigenValues[1] < 0 ? -rho : rho); +}return s; +}, "~N,~B"); +Clazz.defineMethod(c$, "processAtoms", +function(ix, iy, iz, index){ +var rho = 0; +if (this.isReducedDensity) { +if (this.isPromolecular) this.gxTemp = this.gyTemp = this.gzTemp = 0; +if (this.type != 0) for (var i = this.nMolecules; --i >= 0; ) this.rhoMolecules[i] = 0; + +} else { +this.gxxTemp = this.gyyTemp = this.gzzTemp = this.gxyTemp = this.gyzTemp = this.gxzTemp = 0; +}for (var i = this.qmAtoms.length; --i >= 0; ) { +var znuc = this.qmAtoms[i].znuc; +var x = this.xBohr[ix] - this.qmAtoms[i].x; +var y = this.yBohr[iy] - this.qmAtoms[i].y; +var z = this.zBohr[iz] - this.qmAtoms[i].z; +if (Math.abs(x) > J.quantum.NciCalculation.dMax[znuc] || Math.abs(y) > J.quantum.NciCalculation.dMax[znuc] || Math.abs(z) > J.quantum.NciCalculation.dMax[znuc]) continue; +var r = Math.sqrt(x * x + y * y + z * z); +var z1 = J.quantum.NciCalculation.zeta1[znuc]; +var z2 = J.quantum.NciCalculation.zeta2[znuc]; +var z3 = J.quantum.NciCalculation.zeta3[znuc]; +var ce1 = J.quantum.NciCalculation.coef1[znuc] * Math.exp(-r / z1); +var ce2 = J.quantum.NciCalculation.coef2[znuc] * Math.exp(-r / z2); +var ce3 = J.quantum.NciCalculation.coef3[znuc] * Math.exp(-r / z3); +var rhoAtom = ce1 + ce2 + ce3; +rho += rhoAtom; +if (rho > this.rhoPlot || rho < this.rhoMin) return 100.0; +if (this.isReducedDensity) { +if (this.type != 0) this.rhoMolecules[this.qmAtoms[i].iMolecule] += rhoAtom; +if (this.isPromolecular) { +var fac1r = (ce1 / z1 + ce2 / z2 + ce3 / z3) / r; +this.gxTemp -= fac1r * x; +this.gyTemp -= fac1r * y; +this.gzTemp -= fac1r * z; +}} else { +x /= r; +y /= r; +z /= r; +var fac1r = (ce1 / z1 + ce2 / z2 + ce3 / z3) / r; +var fr2 = fac1r + (ce1 / z1 / z1 + ce2 / z2 / z2 + ce3 / z3 / z3); +this.gxxTemp += fr2 * x * x - fac1r; +this.gyyTemp += fr2 * y * y - fac1r; +this.gzzTemp += fr2 * z * z - fac1r; +this.gxyTemp += fr2 * x * y; +this.gxzTemp += fr2 * x * z; +this.gyzTemp += fr2 * y * z; +}} +if (this.isReducedDensity) { +switch (this.type) { +case 1: +case 2: +var isIntra = false; +var rhocut2 = this.rhoParam * rho; +for (var i = 0; i < this.nMolecules; i++) if (this.rhoMolecules[i] >= rhocut2) { +isIntra = true; +break; +} +if ((this.type == 1) != isIntra) return 100.0; +if (index >= 0) { +this.bsOK.set(index); +return 0; +}break; +case 3: +break; +default: +break; +} +if (this.useAbsolute) this.grad = this.gxTemp + this.gyTemp + this.gzTemp; + else this.grad = Math.sqrt(this.gxTemp * this.gxTemp + this.gyTemp * this.gyTemp + this.gzTemp * this.gzTemp); +}return rho; +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "setPlanes", +function(planes){ +this.yzPlanesRaw = planes; +this.yzCount = this.nY * this.nZ; +}, "~A"); +Clazz.overrideMethod(c$, "calcPlane", +function(x, plane){ +this.yzPlanesRho[0] = this.yzPlanesRho[1]; +this.yzPlanesRho[1] = plane; +if (this.noValuesAtAll) { +for (var j = 0; j < this.yzCount; j++) plane[j] = NaN; + +return; +}var i0 = 0; +if (this.dataIsReducedDensity) { +this.p1 = plane; +} else { +i0 = (this.yzPlanesRho[0] == null ? 0 : 1); +this.p0 = this.yzPlanesRaw[i0++]; +this.p1 = this.yzPlanesRaw[i0++]; +this.p2 = this.yzPlanesRaw[i0++]; +for (var i = (i0 == 4 ? 3 : 0); i < i0; i++) for (var j = 0; j < this.yzCount; j++) this.yzPlanesRaw[i][j] = Math.abs(this.yzPlanesRaw[i][j] * this.dataScaling); + + +}var index = x * this.yzCount; +for (var y = 0, i = 0; y < this.nY; y++) for (var z = 0; z < this.nZ; z++, i++) { +var rho = this.p1[i]; +if (this.bsOK != null && !this.bsOK.get(index + i)) { +plane[i] = NaN; +} else if (this.dataIsReducedDensity) { +continue; +} else if (rho == 0) { +plane[i] = 0; +} else if (rho > this.rhoPlot || rho < this.rhoMin || y == 0 || y == this.nY - 1 || z == 0 || z == this.nZ - 1) { +plane[i] = NaN; +} else { +this.gxTemp = (this.p2[i] - this.p0[i]) / (2 * this.stepBohr[0]); +this.gyTemp = (this.p1[i + this.nZ] - this.p1[i - this.nZ]) / (2 * this.stepBohr[1]); +this.gzTemp = (this.p1[i + 1] - this.p1[i - 1]) / (2 * this.stepBohr[2]); +this.grad = Math.sqrt(this.gxTemp * this.gxTemp + this.gyTemp * this.gyTemp + this.gzTemp * this.gzTemp); +plane[i] = this.getValue(rho, true); +}} + +}, "~N,~A"); +Clazz.defineMethod(c$, "process", +function(vA, vB, f){ +var valueA = this.getPlaneValue(vA); +var valueB = this.getPlaneValue(vB); +return (valueA + f * (valueB - valueA)); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getPlaneValue", +function(vA){ +var i = (vA % this.yzCount); +var x = Clazz.doubleToInt(vA / this.yzCount); +var y = Clazz.doubleToInt(i / this.nZ); +var z = i % this.nZ; +if (x == 0 || x == this.nX - 1 || y == 0 || y == this.nY - 1 || z == 0 || z == this.nZ - 1) return 100.0; +var iPlane = x % 2; +var p0 = this.yzPlanesRaw[iPlane++]; +var p1 = this.yzPlanesRaw[iPlane++]; +var p2 = this.yzPlanesRaw[iPlane++]; +var rho = p1[i]; +if (rho > this.rhoPlot || rho < this.rhoMin) return 100.0; +var dx = this.stepBohr[0]; +var dy = this.stepBohr[1]; +var dz = this.stepBohr[2]; +this.gxxTemp = (p2[i] - 2 * rho + p0[i]) / (dx * dx); +this.gyyTemp = (p1[i + this.nZ] - 2 * rho + p1[i - this.nZ]) / (dy * dy); +this.gzzTemp = (p1[i + 1] - 2 * rho + p1[i - 1]) / (dz * dz); +this.gxyTemp = ((p2[i + this.nZ] - p2[i - this.nZ]) - (p0[i + this.nZ] - p0[i - this.nZ])) / (4 * dx * dy); +this.gxzTemp = ((p2[i + 1] - p2[i - 1]) - (p0[i + 1] - p0[i - 1])) / (4 * dx * dz); +this.gyzTemp = ((p1[i + this.nZ + 1] - p1[i - this.nZ + 1]) - (p1[i + this.nZ - 1] - p1[i - this.nZ - 1])) / (4 * dy * dz); +if (Double.isNaN(this.gxxTemp) || Double.isNaN(this.gyyTemp) || Double.isNaN(this.gzzTemp) || Double.isNaN(this.gxyTemp) || Double.isNaN(this.gxzTemp) || Double.isNaN(this.gyzTemp)) return NaN; +return this.getValue(rho, false); +}, "~N"); +c$.c = (1 / (2 * Math.pow(29.608813203268074, 0.3333333333333333))); +c$.rpower = -1.3333333333333333; +c$.coef1 = Clazz.newDoubleArray(-1, [0, 0.2815, 2.437, 11.84, 31.34, 67.82, 120.2, 190.9, 289.5, 406.3, 561.3, 760.8, 1016., 1319., 1658., 2042., 2501., 3024., 3625.]); +c$.coef2 = Clazz.newDoubleArray(-1, [0, 0., 0., 0.06332, 0.3694, 0.8527, 1.172, 2.247, 2.879, 3.049, 6.984, 22.42, 37.17, 57.95, 87.16, 115.7, 158.0, 205.5, 260.0]); +c$.coef3 = Clazz.newDoubleArray(-1, [0, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.06358, 0.3331, 0.8878, 0.7888, 1.465, 2.170, 3.369, 5.211]); +c$.zeta1 = Clazz.newDoubleArray(-1, [0, 0.5288, 0.3379, 0.1912, 0.1390, 0.1059, 0.0884, 0.0767, 0.0669, 0.0608, 0.0549, 0.0496, 0.0449, 0.0411, 0.0382, 0.0358, 0.0335, 0.0315, 0.0296]); +c$.zeta2 = Clazz.newDoubleArray(-1, [0, 1., 1., 0.9992, 0.6945, 0.5300, 0.5480, 0.4532, 0.3974, 0.3994, 0.3447, 0.2511, 0.2150, 0.1874, 0.1654, 0.1509, 0.1369, 0.1259, 0.1168]); +c$.zeta3 = Clazz.newDoubleArray(-1, [0, 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.0236, 0.7753, 0.5962, 0.6995, 0.5851, 0.5149, 0.4974, 0.4412]); +c$.dMax = Clazz.newDoubleArray(-1, [0, 2.982502423, 2.635120936, 4.144887422, 4.105800759, 3.576656363, 3.872424373, 3.497503547, 3.165369971, 3.204214082, 3.051069564, 4.251312809, 4.503309314, 4.047465141, 4.666024968, 4.265151411, 3.955710076, 4.040067606, 3.776022242]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/QMAtom.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/QMAtom.js new file mode 100755 index 000000000000..ccc7e4e69f83 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/QMAtom.js @@ -0,0 +1,73 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(["JU.P3"], "J.quantum.QMAtom", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.myX = null; +this.myY = null; +this.myZ = null; +this.myX2 = null; +this.myY2 = null; +this.myZ2 = null; +this.atom = null; +this.index = 0; +this.znuc = 0; +this.iMolecule = 0; +Clazz.instantialize(this, arguments);}, J.quantum, "QMAtom", JU.P3); +Clazz.overrideConstructor(c$, +function(i, xyzAng, atom, X, Y, Z, X2, Y2, Z2, unitFactor){ +this.index = i; +this.myX = X; +this.myY = Y; +this.myZ = Z; +this.myX2 = X2; +this.myY2 = Y2; +this.myZ2 = Z2; +this.atom = atom; +this.setT(xyzAng); +this.scale(unitFactor); +this.znuc = atom.getElementNumber(); +}, "~N,JU.T3,JM.Atom,~A,~A,~A,~A,~A,~A,~N"); +Clazz.defineMethod(c$, "setXYZ", +function(qc, setMinMax){ +var i; +try { +if (setMinMax) { +if (qc.points != null) { +qc.xMin = qc.yMin = qc.zMin = 0; +qc.xMax = qc.yMax = qc.zMax = qc.points.length; +} else { +i = Clazz.doubleToInt(Math.floor((this.x - qc.xBohr[0] - qc.rangeBohrOrAngstroms) / qc.stepBohr[0])); +qc.xMin = (i < 0 ? 0 : i); +i = Clazz.doubleToInt(Math.floor(1 + (this.x - qc.xBohr[0] + qc.rangeBohrOrAngstroms) / qc.stepBohr[0])); +qc.xMax = (i >= qc.nX ? qc.nX : i + 1); +i = Clazz.doubleToInt(Math.floor((this.y - qc.yBohr[0] - qc.rangeBohrOrAngstroms) / qc.stepBohr[1])); +qc.yMin = (i < 0 ? 0 : i); +i = Clazz.doubleToInt(Math.floor(1 + (this.y - qc.yBohr[0] + qc.rangeBohrOrAngstroms) / qc.stepBohr[1])); +qc.yMax = (i >= qc.nY ? qc.nY : i + 1); +i = Clazz.doubleToInt(Math.floor((this.z - qc.zBohr[0] - qc.rangeBohrOrAngstroms) / qc.stepBohr[2])); +qc.zMin = (i < 0 ? 0 : i); +i = Clazz.doubleToInt(Math.floor(1 + (this.z - qc.zBohr[0] + qc.rangeBohrOrAngstroms) / qc.stepBohr[2])); +qc.zMax = (i >= qc.nZ ? qc.nZ : i + 1); +}}for (i = qc.xMax; --i >= qc.xMin; ) { +this.myX2[i] = this.myX[i] = qc.xBohr[i] - this.x; +this.myX2[i] *= this.myX[i]; +} +for (i = qc.yMax; --i >= qc.yMin; ) { +this.myY2[i] = this.myY[i] = qc.yBohr[i] - this.y; +this.myY2[i] *= this.myY[i]; +} +for (i = qc.zMax; --i >= qc.zMin; ) { +this.myZ2[i] = this.myZ[i] = qc.zBohr[i] - this.z; +this.myZ2[i] *= this.myZ[i]; +} +if (qc.points != null) { +qc.yMax = qc.zMax = 1; +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Error in QuantumCalculation setting bounds"); +} else { +throw e; +} +} +}, "J.quantum.QuantumCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/QS.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/QS.js new file mode 100755 index 000000000000..33f14e16f3f3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/QS.js @@ -0,0 +1,71 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(null, "J.quantum.QS", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz.declareType(J.quantum, "QS", null); +/*LV!1824 unnec constructor*/c$.isQuantumBasisSupported = Clazz.defineMethod(c$, "isQuantumBasisSupported", +function(ch){ +return ("SPLDF".indexOf(Character.toUpperCase(ch)) >= 0); +}, "~S"); +c$.getNewDfCoefMap = Clazz.defineMethod(c$, "getNewDfCoefMap", +function(){ +return Clazz.newArray(-1, [ Clazz.newIntArray (1, 0), Clazz.newIntArray (3, 0), Clazz.newIntArray (4, 0), Clazz.newIntArray (5, 0), Clazz.newIntArray (6, 0), Clazz.newIntArray (7, 0), Clazz.newIntArray (10, 0), Clazz.newIntArray (9, 0), Clazz.newIntArray (15, 0), Clazz.newIntArray (11, 0), Clazz.newIntArray (21, 0), Clazz.newIntArray (13, 0), Clazz.newIntArray (28, 0)]); +}); +c$.getItem = Clazz.defineMethod(c$, "getItem", +function(i){ +return (i >= 0 && i < 13 ? i : -1); +}, "~N"); +c$.getQuantumShellTagID = Clazz.defineMethod(c$, "getQuantumShellTagID", +function(tag){ +return (tag.equals("L") ? 2 : J.quantum.QS.getQuantumShell(tag)); +}, "~S"); +c$.getQuantumShell = Clazz.defineMethod(c$, "getQuantumShell", +function(tag){ +for (var i = 0; i < 13; i++) if (J.quantum.QS.tags[i].equals(tag) || J.quantum.QS.tags2[i].equals(tag)) return i; + +return -1; +}, "~S"); +c$.getQuantumShellTagIDSpherical = Clazz.defineMethod(c$, "getQuantumShellTagIDSpherical", +function(tag){ +if (tag.equals("L")) return 2; +var id = J.quantum.QS.getQuantumShell(tag); +return (id < 0 ? id : J.quantum.QS.idSpherical[id]); +}, "~S"); +c$.getQuantumShellTag = Clazz.defineMethod(c$, "getQuantumShellTag", +function(id){ +return (id >= 0 && id < 13 ? J.quantum.QS.tags[id] : "" + id); +}, "~N"); +c$.getMOString = Clazz.defineMethod(c$, "getMOString", +function(lc){ +var sb = new JU.SB(); +if (lc.length == 2) return "" + Clazz.floatToInt(lc[0] < 0 ? -lc[1] : lc[1]); +sb.appendC('['); +for (var i = 0; i < lc.length; i += 2) { +if (i > 0) sb.append(", "); +sb.appendF(lc[i]).append(" ").appendI(Clazz.floatToInt(lc[i + 1])); +} +sb.appendC(']'); +return sb.toString(); +}, "~A"); +c$.createDFMap = Clazz.defineMethod(c$, "createDFMap", +function(map, fileList, jmolList, minLength){ +var tokens = JU.PT.getTokens(fileList); +var isOK = true; +for (var i = 0; i < map.length; i++) { +var key = tokens[i]; +if (key.length >= minLength) { +var pt = jmolList.indexOf(key); +if (pt >= 0) { +pt /= 6; +map[pt] = i - pt; +continue; +}}isOK = false; +break; +} +if (!isOK) map[0] = -2147483648; +return isOK; +}, "~A,~S,~S,~N"); +c$.MAX_TYPE_SUPPORTED = 6; +c$.idSpherical = Clazz.newIntArray(-1, [0, 1, 2, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11]); +c$.tags = Clazz.newArray(-1, ["S", "P", "SP", "5D", "D", "7F", "F", "9G", "G", "11H", "H", "13I", "I"]); +c$.tags2 = Clazz.newArray(-1, ["S", "X", "SP", "5D", "XX", "7F", "XXX", "9G", "XXXX", "11H", "XXXXX", "13I", "XXXXXX"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/QuantumCalculation.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/QuantumCalculation.js new file mode 100755 index 000000000000..7d3a386ce3f8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/QuantumCalculation.js @@ -0,0 +1,156 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(null, "J.quantum.QuantumCalculation", ["JU.P3", "J.quantum.QMAtom", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.doDebug = false; +this.bsExcluded = null; +this.integration = NaN; +this.voxelData = null; +this.voxelDataTemp = null; +this.countsXYZ = null; +this.points = null; +this.xMin = 0; +this.xMax = 0; +this.yMin = 0; +this.yMax = 0; +this.zMin = 0; +this.zMax = 0; +this.qmAtoms = null; +this.atomIndex = 0; +this.thisAtom = null; +this.firstAtomOffset = 0; +this.xBohr = null; +this.yBohr = null; +this.zBohr = null; +this.originBohr = null; +this.stepBohr = null; +this.nX = 0; +this.nY = 0; +this.nZ = 0; +this.X = null; +this.Y = null; +this.Z = null; +this.X2 = null; +this.Y2 = null; +this.Z2 = null; +this.rangeBohrOrAngstroms = 10; +this.unitFactor = 1.8897161; +this.volume = 1; +Clazz.instantialize(this, arguments);}, J.quantum, "QuantumCalculation", null); +Clazz.prepareFields (c$, function(){ +this.originBohr = Clazz.newFloatArray (3, 0); +this.stepBohr = Clazz.newFloatArray (3, 0); +}); +Clazz.defineMethod(c$, "getIntegration", +function(){ +return this.integration; +}); +Clazz.defineMethod(c$, "initialize", +function(nX, nY, nZ, points){ +this.initialize0(nX, nY, nZ, points); +}, "~N,~N,~N,~A"); +Clazz.defineMethod(c$, "initialize0", +function(nX, nY, nZ, points){ +if (points != null) { +this.points = points; +nX = nY = nZ = points.length; +}this.nX = this.xMax = nX; +this.nY = this.yMax = nY; +this.nZ = this.zMax = nZ; +if (this.xBohr != null && this.xBohr.length >= nX) return; +this.xBohr = Clazz.newFloatArray (nX, 0); +this.yBohr = Clazz.newFloatArray (nY, 0); +this.zBohr = Clazz.newFloatArray (nZ, 0); +this.X = Clazz.newFloatArray (nX, 0); +this.Y = Clazz.newFloatArray (nY, 0); +this.Z = Clazz.newFloatArray (nZ, 0); +this.X2 = Clazz.newFloatArray (nX, 0); +this.Y2 = Clazz.newFloatArray (nY, 0); +this.Z2 = Clazz.newFloatArray (nZ, 0); +}, "~N,~N,~N,~A"); +Clazz.defineMethod(c$, "setupCoordinates", +function(originXYZ, stepsXYZ, bsSelected, xyz, atoms, points, renumber){ +if (atoms == null) atoms = xyz; +var range = Clazz.newFloatArray(-1, [this.nX, this.nY, this.nZ]); +if (points == null) { +this.volume = 1; +for (var i = 3; --i >= 0; ) { +this.originBohr[i] = originXYZ[i] * this.unitFactor; +this.stepBohr[i] = stepsXYZ[i] * this.unitFactor; +range[i] = (stepsXYZ[i] * range[i]) * this.unitFactor / 1.8897161; +this.volume *= this.stepBohr[i]; +} +JU.Logger.info("QuantumCalculation:\n origin = " + JU.Escape.eAF(originXYZ) + "\n range (Ang) = " + JU.Escape.eAF(range) + "\n steps (Bohr)= " + JU.Escape.eAF(this.stepBohr) + "\n origin(Bohr)= " + JU.Escape.eAF(this.originBohr) + "\n steps = " + JU.Escape.eAF(this.stepBohr) + "\n counts= " + this.nX + " " + this.nY + " " + this.nZ); +}if (atoms == null) return; +this.qmAtoms = new Array(renumber ? bsSelected.cardinality() : xyz.length); +var isAll = (bsSelected == null); +var i0 = (isAll ? this.qmAtoms.length - 1 : bsSelected.nextSetBit(0)); +for (var i = i0, j = 0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) this.qmAtoms[renumber ? j++ : i] = new J.quantum.QMAtom(i, xyz[i], atoms[i], this.X, this.Y, this.Z, this.X2, this.Y2, this.Z2, this.unitFactor); + +}, "~A,~A,JU.BS,~A,~A,~A,~B"); +Clazz.defineMethod(c$, "processPt", +function(pt){ +this.doDebug = false; +if (this.points == null || this.nX != 1) this.initializeOnePoint(); +this.points[0].setT(pt); +this.voxelData[0][0][0] = this.voxelDataTemp[0][0][0] = 0; +this.setXYZBohr(this.points); +this.processPoints(); +return this.voxelData[0][0][0]; +}, "JU.T3"); +Clazz.defineMethod(c$, "processPoints", +function(){ +this.process(); +}); +Clazz.defineMethod(c$, "initializeOnePoint", +function(){ +this.initializeOnePointQC(); +}); +Clazz.defineMethod(c$, "initializeOnePointQC", +function(){ +this.points = new Array(1); +this.points[0] = new JU.P3(); +if (this.voxelData == null || this.voxelData === this.voxelDataTemp) { +this.voxelData = this.voxelDataTemp = Clazz.newFloatArray (1, 1, 1, 0); +} else { +this.voxelData = Clazz.newFloatArray (1, 1, 1, 0); +this.voxelDataTemp = Clazz.newFloatArray (1, 1, 1, 0); +}this.xMin = this.yMin = this.zMin = 0; +this.initialize(1, 1, 1, this.points); +}); +Clazz.defineMethod(c$, "setXYZBohr", +function(points){ +this.setXYZBohrI(this.xBohr, 0, this.nX, points); +this.setXYZBohrI(this.yBohr, 1, this.nY, points); +this.setXYZBohrI(this.zBohr, 2, this.nZ, points); +}, "~A"); +Clazz.defineMethod(c$, "setXYZBohrI", +function(bohr, i, n, points){ +if (points != null) { +var x = 0; +for (var j = 0; j < n; j++) { +switch (i) { +case 0: +x = points[j].x; +break; +case 1: +x = points[j].y; +break; +case 2: +x = points[j].z; +break; +} +bohr[j] = x * this.unitFactor; +} +return; +}bohr[0] = this.originBohr[i]; +var inc = this.stepBohr[i]; +for (var j = 0; ++j < n; ) bohr[j] = bohr[j - 1] + inc; + +}, "~A,~N,~N,~A"); +Clazz.defineMethod(c$, "setMinMax", +function(ix){ +this.yMax = this.zMax = (ix < 0 ? this.xMax : ix + 1); +this.yMin = this.zMin = (ix < 0 ? 0 : ix); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/QuantumPlaneCalculation.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/QuantumPlaneCalculation.js new file mode 100755 index 000000000000..37b7e52c10f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/QuantumPlaneCalculation.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.quantum"); +Clazz.load(["J.quantum.QuantumCalculation"], "J.quantum.QuantumPlaneCalculation", null, function(){ +var c$ = Clazz.declareType(J.quantum, "QuantumPlaneCalculation", J.quantum.QuantumCalculation); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/SlaterData.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/SlaterData.js new file mode 100755 index 000000000000..1e68a9b58813 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/SlaterData.js @@ -0,0 +1,30 @@ +Clazz.declarePackage("J.quantum"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isCore = false; +this.atomNo = 0; +this.elemNo = 0; +this.x = 0; +this.y = 0; +this.z = 0; +this.r = 0; +this.zeta = 0; +this.coef = 0; +this.index = 0; +Clazz.instantialize(this, arguments);}, J.quantum, "SlaterData", null); +Clazz.makeConstructor(c$, +function(iAtom, x, y, z, r, zeta, coef){ +this.atomNo = iAtom; +this.x = x; +this.y = y; +this.z = z; +this.r = r; +this.zeta = zeta; +this.coef = coef; +}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[" + this.atomNo + "," + this.x + "," + this.y + "," + this.z + "," + this.r + "," + this.zeta + "," + this.coef + "]"; +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/atomicLipophilicity.txt b/config/plugins/visualizations/jmol/static/j2s/J/quantum/atomicLipophilicity.txt new file mode 100755 index 000000000000..bf12c4794e9d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/atomicLipophilicity.txt @@ -0,0 +1,105 @@ +# from pyMLP.py http://code.google.com/p/pymlp/ +# +# Broto P., Moreau G., Vandycke C. - +# Molecular structures: Perception, autocorrelation descriptor and sar studies. +# System of atomic contributions for the calculation of the n-octanol/water +# partition coefficients, Eu. J. Med. Chem. 1984, 19.1, 71-78 +# +# Laguerre M., Saux M., Dubost J.P., Carpy A. - +# MLPP: A program for the calculation of molecular lipophilicity potential in +# proteins, Pharm. Sci. 1997, 3.5-6, 217-222 +# +# adapted by Bob Hanson hansonr@stolaf.edu 6/15/2010 +# +# generic protein: + +_pC -0.54 +_pCA 0.02 +_pCB 0.45 +_pCG 0.45 +_pN -0.44 +_pO -0.68 + +# one-letter codes: + +ACB 0.63 +CSG 0.27 +DCG 0.54 +DOD1 -0.68 +DOD2 0.53 +ECD -0.54 +EOE1 -0.68 +EOE2 0.53 +FCD1 0.31 +FCD2 0.31 +FCE1 0.31 +FCE2 0.31 +FCG 0.09 +FCZ 0.31 +GCA 0.45 +GN -0.55 +HCD2 0.31 +HCE1 0.31 +HCG 0.09 +HND1 -0.56 +HNE2 -0.8 +ICB 0.02 +ICD 0.63 +ICD1 0.63 +ICG1 0.45 +ICG2 0.63 +KCD 0.45 +KCE 0.45 +KNZ -1.08 +LCD1 0.63 +LCD2 0.63 +LCG 0.02 +MCE 0.63 +MSD -0.3 +NND2 -0.11 +NOD1 -0.68 +PCD 0.45 +PN -0.92 +QCD -0.54 +QNE2 -0.11 +QOE1 -0.68 +RCD 0.45 +RCZ -0.54 +RNE -0.55 +RNH1 -0.11 +RNH2 -0.83 +SOG -0.99 +TCB 0.02 +TCG2 0.63 +TOG1 -0.93 +VCB 0.02 +VCG1 0.63 +VCG2 0.63 +WCB 0.45 +WCD1 0.31 +WCD2 0.24 +WCE2 0.24 +WCE3 0.31 +WCG 0.09 +WCH2 0.31 +WCZ2 0.31 +WCZ3 0.31 +WNE1 -0.55 +YCB 0.45 +YCD1 0.31 +YCD2 0.31 +YCE1 0.31 +YCE2 0.31 +YCG 0.09 +YCZ 0.09 +YOH -0.17 + +# 3-letter codes + +HYPCD1 0.45 +HYPCG 0.02 +HYPN -0.92 +HYPOD2 -0.93 +PCACD -0.54 +PCAN 1.52 +PCAOE -0.68 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder.js new file mode 100755 index 000000000000..0c138b2c228b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.declareInterface(J.quantum.mo, "DataAdder"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder11H.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder11H.js new file mode 100755 index 000000000000..bd020895a786 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder11H.js @@ -0,0 +1,19 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.load(["J.quantum.mo.DataAdder"], "J.quantum.mo.DataAdder11H", null, function(){ +var c$ = Clazz.declareType(J.quantum.mo, "DataAdder11H", null, J.quantum.mo.DataAdder); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "addData", +function(calc, havePoints){ +switch (calc.normType) { +case 0: +default: +return false; +case 3: +return false; +case 1: +return false; +case 2: +return false; +} +}, "J.quantum.MOCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder13I.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder13I.js new file mode 100755 index 000000000000..686683748c3d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder13I.js @@ -0,0 +1,19 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.load(["J.quantum.mo.DataAdder"], "J.quantum.mo.DataAdder13I", null, function(){ +var c$ = Clazz.declareType(J.quantum.mo, "DataAdder13I", null, J.quantum.mo.DataAdder); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "addData", +function(calc, havePoints){ +switch (calc.normType) { +case 0: +default: +return false; +case 3: +return false; +case 1: +return false; +case 2: +return false; +} +}, "J.quantum.MOCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder7F.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder7F.js new file mode 100755 index 000000000000..989d5b7e056e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder7F.js @@ -0,0 +1,145 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.load(["J.quantum.mo.DataAdder"], "J.quantum.mo.DataAdder7F", null, function(){ +var c$ = Clazz.declareType(J.quantum.mo, "DataAdder7F", null, J.quantum.mo.DataAdder); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "addData", +function(calc, havePoints){ +var alpha; +var c1; +var a; +var x; +var y; +var z; +var xx; +var yy; +var zz; +var cxxx; +var cyyy; +var czzz; +var cxyy; +var cxxy; +var cxxz; +var cxzz; +var cyzz; +var cyyz; +var cxyz; +var af0; +var af1p; +var af1n; +var af2p; +var af2n; +var af3p; +var af3n; +var f0; +var f1p; +var f1n; +var f2p; +var f2n; +var f3p; +var f3n; +var norm1; +var norm2; +var norm3; +var c0_zzz = 1; +var c0_xxz_yyz = 0.6708203932499369; +var c1p_xzz = 1.0954451150103321; +var c1p_xxx = 0.6123724356957945; +var c1p_xyy = 0.27386127875258304; +var c2p_xxz_yyz = 0.8660254037844386; +var c2n_xyz = 1; +var c3p_xxx = 0.7905694150420949; +var c3p_xyy = 1.0606601717798214; +var normalizeAlpha = false; +switch (calc.normType) { +case 0: +default: +norm1 = norm2 = norm3 = 1; +break; +case 3: +norm1 = norm2 = norm3 = 1; +c0_zzz = 2; +c0_xxz_yyz = 3; +c1p_xxx = Math.sqrt(1.5); +c1p_xyy = c1p_xxx; +c1p_xzz = 4 * c1p_xxx; +c2p_xxz_yyz = Math.sqrt(15); +c2n_xyz = 2 * c2p_xxz_yyz; +c3p_xxx = Math.sqrt(2.5); +c3p_xyy = 3 * c3p_xxx; +break; +case 1: +norm1 = 5.701643762839922; +norm2 = 3.2918455612989796; +norm3 = 1.4721580892990938; +normalizeAlpha = true; +break; +case 2: +norm1 = Math.pow(66.05114251919257, 0.25); +norm2 = norm1 / 1.7320507764816284; +norm3 = 0.8660253882408142; +normalizeAlpha = true; +break; +} +var c1n_yzz = c1p_xzz; +var c1n_yyy = c1p_xxx; +var c1n_xxy = c1p_xyy; +var c3n_yyy = c3p_xxx; +var c3n_xxy = c3p_xyy; +var m0 = calc.coeffs[0]; +var m1p = calc.coeffs[1]; +var m1n = calc.coeffs[2]; +var m2p = calc.coeffs[3]; +var m2n = calc.coeffs[4]; +var m3p = calc.coeffs[5]; +var m3n = calc.coeffs[6]; +for (var ig = 0; ig < calc.nGaussians; ig++) { +alpha = calc.gaussians[calc.gaussianPtr + ig][0]; +c1 = calc.gaussians[calc.gaussianPtr + ig][1]; +a = c1; +if (normalizeAlpha) a *= Math.pow(alpha, 2.25); +af0 = a * m0; +af1p = a * m1p; +af1n = a * m1n; +af2p = a * m2p; +af2n = a * m2n; +af3p = a * m3p; +af3n = a * m3n; +calc.setE(calc.EX, alpha); +for (var ix = calc.xMax; --ix >= calc.xMin; ) { +x = calc.X[ix]; +xx = x * x; +var eX = calc.EX[ix]; +cxxx = norm3 * x * xx; +if (havePoints) calc.setMinMax(ix); +for (var iy = calc.yMax; --iy >= calc.yMin; ) { +y = calc.Y[iy]; +yy = y * y; +var eXY = eX * calc.EY[iy]; +cyyy = norm3 * y * yy; +cxyy = norm2 * x * yy; +cxxy = norm2 * xx * y; +var vd = calc.voxelDataTemp[ix][(havePoints ? 0 : iy)]; +for (var iz = calc.zMax; --iz >= calc.zMin; ) { +z = calc.Z[iz]; +zz = z * z; +czzz = norm3 * z * zz; +cxxz = norm2 * xx * z; +cxzz = norm2 * x * zz; +cyyz = norm2 * yy * z; +cyzz = norm2 * y * zz; +cxyz = norm1 * x * y * z; +f0 = af0 * (c0_zzz * czzz - c0_xxz_yyz * (cxxz + cyyz)); +f1p = af1p * (c1p_xzz * cxzz - c1p_xxx * cxxx - c1p_xyy * cxyy); +f1n = af1n * (c1n_yzz * cyzz - c1n_yyy * cyyy - c1n_xxy * cxxy); +f2p = af2p * (c2p_xxz_yyz * (cxxz - cyyz)); +f2n = af2n * c2n_xyz * cxyz; +f3p = af3p * (c3p_xxx * cxxx - c3p_xyy * cxyy); +f3n = -af3n * (c3n_yyy * cyyy - c3n_xxy * cxxy); +vd[(havePoints ? 0 : iz)] += (f0 + f1p + f1n + f2p + f2n + f3p + f3n) * eXY * calc.EZ[iz]; +} +} +} +} +return true; +}, "J.quantum.MOCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder9G.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder9G.js new file mode 100755 index 000000000000..14de4564998c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdder9G.js @@ -0,0 +1,19 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.load(["J.quantum.mo.DataAdder"], "J.quantum.mo.DataAdder9G", null, function(){ +var c$ = Clazz.declareType(J.quantum.mo, "DataAdder9G", null, J.quantum.mo.DataAdder); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "addData", +function(calc, havePoints){ +switch (calc.normType) { +case 0: +default: +return false; +case 3: +return false; +case 1: +return false; +case 2: +return false; +} +}, "J.quantum.MOCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderF.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderF.js new file mode 100755 index 000000000000..cc751e1c6bee --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderF.js @@ -0,0 +1,120 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.load(["J.quantum.mo.DataAdder"], "J.quantum.mo.DataAdderF", null, function(){ +var c$ = Clazz.declareType(J.quantum.mo, "DataAdderF", null, J.quantum.mo.DataAdder); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "addData", +function(calc, havePoints){ +var alpha; +var c1; +var a; +var x; +var y; +var z; +var xx; +var yy; +var zz; +var axxx; +var ayyy; +var azzz; +var axyy; +var axxy; +var axxz; +var axzz; +var ayzz; +var ayyz; +var axyz; +var cxxx; +var cyyy; +var czzz; +var cxyy; +var cxxy; +var cxxz; +var cxzz; +var cyzz; +var cyyz; +var cxyz; +var norm1; +var norm2; +var norm3; +var coeffs = calc.coeffs; +var normalizeAlpha = false; +switch (calc.normType) { +case 0: +default: +norm1 = norm2 = norm3 = 1; +break; +case 1: +norm1 = 5.701643762839922; +norm2 = 3.2918455612989796; +norm3 = 1.4721580892990938; +normalizeAlpha = true; +break; +case 2: +norm1 = calc.getContractionNormalization(3, 1); +norm2 = norm1; +norm3 = norm1; +normalizeAlpha = true; +break; +case 3: +norm1 = Math.sqrt(15); +norm2 = Math.sqrt(5); +norm3 = 1; +break; +} +var mxxx = coeffs[0]; +var myyy = coeffs[1]; +var mzzz = coeffs[2]; +var mxyy = coeffs[3]; +var mxxy = coeffs[4]; +var mxxz = coeffs[5]; +var mxzz = coeffs[6]; +var myzz = coeffs[7]; +var myyz = coeffs[8]; +var mxyz = coeffs[9]; +for (var ig = 0; ig < calc.nGaussians; ig++) { +alpha = calc.gaussians[calc.gaussianPtr + ig][0]; +c1 = calc.gaussians[calc.gaussianPtr + ig][1]; +calc.setE(calc.EX, alpha); +a = c1; +if (normalizeAlpha) a *= Math.pow(alpha, 2.25); +axxx = a * norm3 * mxxx; +ayyy = a * norm3 * myyy; +azzz = a * norm3 * mzzz; +axyy = a * norm2 * mxyy; +axxy = a * norm2 * mxxy; +axxz = a * norm2 * mxxz; +axzz = a * norm2 * mxzz; +ayzz = a * norm2 * myzz; +ayyz = a * norm2 * myyz; +axyz = a * norm1 * mxyz; +for (var ix = calc.xMax; --ix >= calc.xMin; ) { +x = calc.X[ix]; +xx = x * x; +var Ex = calc.EX[ix]; +cxxx = axxx * xx * x; +if (havePoints) calc.setMinMax(ix); +for (var iy = calc.yMax; --iy >= calc.yMin; ) { +y = calc.Y[iy]; +yy = y * y; +var Exy = Ex * calc.EY[iy]; +cyyy = ayyy * yy * y; +cxxy = axxy * xx * y; +cxyy = axyy * x * yy; +var vd = calc.voxelDataTemp[ix][(havePoints ? 0 : iy)]; +for (var iz = calc.zMax; --iz >= calc.zMin; ) { +z = calc.Z[iz]; +zz = z * z; +czzz = azzz * zz * z; +cxxz = axxz * xx * z; +cxzz = axzz * x * zz; +cyyz = ayyz * yy * z; +cyzz = ayzz * y * zz; +cxyz = axyz * x * y * z; +vd[(havePoints ? 0 : iz)] += (cxxx + cyyy + czzz + cxyy + cxxy + cxxz + cxzz + cyzz + cyyz + cxyz) * Exy * calc.EZ[iz]; +} +} +} +} +return true; +}, "J.quantum.MOCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderG.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderG.js new file mode 100755 index 000000000000..b488eda2bc05 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderG.js @@ -0,0 +1,19 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.load(["J.quantum.mo.DataAdder"], "J.quantum.mo.DataAdderG", null, function(){ +var c$ = Clazz.declareType(J.quantum.mo, "DataAdderG", null, J.quantum.mo.DataAdder); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "addData", +function(calc, havePoints){ +switch (calc.normType) { +case 0: +default: +return false; +case 3: +return false; +case 1: +return false; +case 2: +return false; +} +}, "J.quantum.MOCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderH.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderH.js new file mode 100755 index 000000000000..d88d6ec836e0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderH.js @@ -0,0 +1,19 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.load(["J.quantum.mo.DataAdder"], "J.quantum.mo.DataAdderH", null, function(){ +var c$ = Clazz.declareType(J.quantum.mo, "DataAdderH", null, J.quantum.mo.DataAdder); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "addData", +function(calc, havePoints){ +switch (calc.normType) { +case 0: +default: +return false; +case 3: +return false; +case 1: +return false; +case 2: +return false; +} +}, "J.quantum.MOCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderI.js b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderI.js new file mode 100755 index 000000000000..97b1f66551bd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/mo/DataAdderI.js @@ -0,0 +1,19 @@ +Clazz.declarePackage("J.quantum.mo"); +Clazz.load(["J.quantum.mo.DataAdder"], "J.quantum.mo.DataAdderI", null, function(){ +var c$ = Clazz.declareType(J.quantum.mo, "DataAdderI", null, J.quantum.mo.DataAdder); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "addData", +function(calc, havePoints){ +switch (calc.normType) { +case 0: +default: +return false; +case 3: +return false; +case 1: +return false; +case 2: +return false; +} +}, "J.quantum.MOCalculation,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/quantum/nmr_data.txt b/config/plugins/visualizations/jmol/static/j2s/J/quantum/nmr_data.txt new file mode 100755 index 000000000000..b2406179f02a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/quantum/nmr_data.txt @@ -0,0 +1,83 @@ +#extracted by Simone Sturniolo from ROBIN K. HARRIS, EDWIN D. BECKER, SONIA M. CABRAL DE MENEZES, ROBIN GOODFELLOW, AND PIERRE GRANGER, Pure Appl. Chem., Vol. 73, No. 11, pp. 1795�1818, 2001. NMR NOMENCLATURE. NUCLEAR SPIN PROPERTIES AND CONVENTIONS FOR CHEMICAL SHIFTS (IUPAC Recommendations 2001) +#element atomNo isotopeDef isotope1 G1 Q1 isotope2 G2 Q2 isotope3 G3 Q3 +H 1 1 1 26.7522128 0 2 4.10662791 0.00286 3 28.5349779 0 +He 2 3 3 -20.3801587 0 +Li 3 7 6 3.9371709 -0.000808 7 10.3977013 -0.0401 +Be 4 9 9 -3.759666 0.05288 +B 5 11 10 2.8746786 0.08459 11 8.5847044 0.04059 +C 6 13 13 6.728284 0 +N 7 14 14 1.9337792 0.02044 15 -2.71261804 0 +O 8 17 17 -3.62808 -0.02558 +F 9 19 19 25.18148 -0.0942 +Ne 10 21 21 -2.11308 0.10155 +Na 11 23 23 7.0808493 0.104 +Mg 12 25 25 -1.63887 0.1994 +Al 13 27 27 6.9762715 0.1466 +Si 14 29 29 -5.319 0 +P 15 31 31 10.8394 0 +S 16 33 33 2.055685 -0.0678 +Cl 17 35 35 2.624198 -0.08165 37 2.184368 -0.06435 +K 19 39 40 -1.5542854 -0.073 41 0.68606808 0.0711 39 1.2500608 0.0585 +Ca 20 43 43 -1.803069 -0.0408 +Sc 21 45 45 6.5087973 -0.22 +Ti 22 49 49 -1.51095 0.247 47 -1.5105 0.302 +V 23 51 50 2.670649 0.21 51 7.0455117 -0.052 +Cr 24 53 53 -1.5152 -0.15 +Mn 25 55 55 6.6452546 0.33 +Fe 26 57 57 0.8680624 0.16 +Co 27 59 59 6.332 0.42 +Ni 28 61 61 -2.3948 0.162 +Cu 29 65 65 7.60435 -0.204 63 7.111789 -0.22 +Zn 30 67 67 1.676688 0.15 +Ga 31 71 69 6.438855 0.171 71 8.181171 0.107 +Ge 32 73 73 -0.9360303 -0.196 +As 33 75 75 4.596163 0.314 +Se 34 77 77 5.1253857 0.76 +Br 35 81 81 7.249776 0.262 79 6.725616 0.313 +Kr 36 83 83 -1.0331 0.259 +Rb 37 87 85 2.592705 0.276 87 8.7864 0.1335 +Sr 38 87 87 -1.1639376 0.305 +Y 39 89 89 -1.3162791 0 +Zr 40 91 91 -2.49743 -0.176 +Nb 41 93 93 6.5674 -0.32 +Mo 42 95 97 -1.788 0.255 95 1.751 -0.022 +Ru 44 99 99 -1.229 0.079 +Tc 43 99 99 6.046 -0.129 +Rh 45 103 103 -0.8468 0 +Pd 46 105 105 -1.23 0.66 +Ag 47 109 107 -1.0889181 0 109 -1.2518634 0 +Cd 48 113 113 -5.9609155 0 111 -5.6983131 0 +In 49 115 113 5.8845 0.759 115 5.8972 0.77 +Sn 50 119 115 -8.8013 0 117 -9.58879 0 119 -10.0317 -0.132 +Sb 51 121 121 6.4435 -0.543 123 3.4892 -0.692 +Te 52 125 123 -7.059098 0 125 -8.5108404 0 +I 53 127 127 5.389573 -0.696 +Xe 54 129 129 -7.452103 0 131 2.209076 -0.114 +Cs 55 133 133 3.5332539 -0.00343 +Ba 56 137 137 2.99295 0.245 135 2.6755 0.16 +La 57 139 138 3.557239 0.45 139 3.8083318 0.2 +Pr 59 141 141 8.1907 -0.0589 +Nd 60 145 145 -0.898 -0.33 143 -1.457 -0.63 +Sm 62 147 147 -1.115 -0.259 149 -0.9192 0.075 +Eu 63 153 153 2.9369 2.412 151 6.651 0.903 +Gd 64 155 155 -0.82132 1.27 157 -1.0769 1.35 +Tb 65 159 159 6.431 1.432 +Dy 66 161 161 -0.9201 2.507 163 1.289 2.648 +Ho 67 165 165 5.71 3.58 +Er 68 167 167 -0.77157 3.565 +Tm 69 169 169 -2.218 -1.2 +Yb 70 171 171 4.7288 0 173 -1.3025 2.8 +Lu 71 176 176 2.1684 4.97 175 3.0552 3.49 +Hf 72 179 177 1.086 3.365 179 -6.82E-08 3.793 +Ta 73 181 181 3.2438 3.17 +W 74 183 183 1.1282403 0 +Re 75 187 185 6.1057 2.18 187 6.1682 2.07 +Os 76 187 187 0.6192895 0 189 2.10713 0.856 +Ir 77 193 193 0.5227 0.751 191 0.4812 0.816 +Pt 78 195 195 5.8385 0 +Au 79 197 197 0.47306 0.547 +Hg 80 199 201 -1.788769 0.387 199 4.8457916 0 +Tl 81 205 203 15.5393338 0 205 15.6921808 0 +Pb 82 207 207 5.58046 0 +Bi 83 209 209 4.375 -0.516 +U 92 235 235 -0.52 4.936 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/AxesRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/AxesRenderer.js new file mode 100755 index 000000000000..4975fb2a68d4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/AxesRenderer.js @@ -0,0 +1,161 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.CageRenderer", "JU.P3"], "J.render.AxesRenderer", ["JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.originScreen = null; +this.colixes = null; +this.pt000 = null; +this.ptTemp = null; +Clazz.instantialize(this, arguments);}, J.render, "AxesRenderer", J.render.CageRenderer); +Clazz.prepareFields (c$, function(){ +this.originScreen = new JU.P3(); +this.colixes = Clazz.newShortArray (3, 0); +this.ptTemp = new JU.P3(); +}); +Clazz.overrideMethod(c$, "initRenderer", +function(){ +this.endcap = 2; +this.draw000 = false; +}); +Clazz.overrideMethod(c$, "render", +function(){ +var axes = this.shape; +var mad10 = this.vwr.getObjectMad10(1); +var isXY = (axes.axisXY.z != 0); +if (mad10 == 0 || !this.g3d.checkTranslucent(false)) return false; +if (isXY ? this.exportType == 1 : this.tm.isNavigating() && this.vwr.getBoolean(603979890)) return false; +var modelIndex = this.vwr.am.cmi; +if (this.ms.isJmolDataFrameForModel(modelIndex) && !this.ms.getJmolFrameType(modelIndex).equals("plot data")) return false; +var isUnitCell = (this.vwr.g.axesMode == 603979808); +var unitcell = (isUnitCell ? this.vwr.getCurrentUnitCell() : null); +if (isUnitCell && (unitcell == null || modelIndex < 0)) return false; +this.imageFontScaling = this.vwr.imageFontScaling; +if (this.vwr.areAxesTainted()) axes.reinitShape(); +this.font3d = this.vwr.gdata.getFont3DScaled(axes.font3d, this.imageFontScaling); +isUnitCell = isUnitCell && (unitcell != null && this.ms.unitCells != null); +var axisType = (isUnitCell ? axes.axisType : null); +var isabcxyz = (isXY && isUnitCell && axes.axes2 != null); +this.isPolymer = isUnitCell && unitcell.isPolymer(); +this.isSlab = isUnitCell && unitcell.isSlab(); +var scale = axes.scale; +if (isabcxyz) { +if ("xyzabc".equals(axes.axes2)) this.render1(axes, mad10, false, axisType, isUnitCell, 2, null); +if (!"abc".equals(axes.axes2)) this.vwr.setBooleanProperty("axesmolecular", true); +axes.reinitShape(); +this.render1(axes, mad10, true, null, false, scale, axes.axes2); +this.vwr.setBooleanProperty("axesunitcell", true); +} else { +this.render1(axes, mad10, isXY, axisType, isUnitCell, scale, null); +}return true; +}); +Clazz.defineMethod(c$, "render1", +function(axes, mad10, isXY, axisType, isUnitCell, scale, labels2){ +var isDataFrame = this.vwr.isJmolDataFrame(); +this.pt000 = (isDataFrame ? this.pt0 : axes.originPoint); +var nPoints = 6; +var labelPtr = 0; +if (isUnitCell) { +nPoints = 3; +labelPtr = 6; +} else if (isXY) { +nPoints = 3; +labelPtr = 9; +} else if (this.vwr.g.axesMode == 603979809) { +nPoints = 6; +labelPtr = (this.vwr.getBoolean(603979806) ? 15 : 9); +}if (axes.labels != null) { +if (nPoints != 3) nPoints = (axes.labels.length < 6 ? 3 : 6); +labelPtr = -1; +}var slab = this.vwr.gdata.slab; +var diameter = mad10; +var drawTicks = false; +this.ptTemp.setT(this.originScreen); +var checkAxisType = (labels2 == null && axisType != null && (isXY || this.vwr.getFloat(570425345) != 0 || axes.fixedOrigin != null)); +if (isXY) { +if (mad10 >= 20) { +diameter = (mad10 > 500 ? 3 : Clazz.doubleToInt(mad10 / 200)); +if (diameter == 0) diameter = 2; +}if (this.g3d.isAntialiased()) diameter += diameter; +this.g3d.setSlab(0); +this.ptTemp.setT(axes.axisXY); +this.pt0i.setT(this.tm.transformPt2D(this.ptTemp)); +if (this.ptTemp.x < 0) { +var offx = Clazz.floatToInt(this.ptTemp.x); +var offy = Clazz.floatToInt(this.ptTemp.x); +this.pointT.setT(this.pt000); +for (var i = 0; i < 3; i++) this.pointT.add(axes.getAxisPoint(i, false, this.ptTemp)); + +this.pt0i.setT(this.tm.transformPt(this.pt000)); +this.pt2i.scaleAdd(-1, this.pt0i, this.tm.transformPt(this.pointT)); +if (this.pt2i.x < 0) offx = -offx; +if (this.pt2i.y < 0) offy = -offy; +this.pt0i.x += offx; +this.pt0i.y += offy; +}this.ptTemp.set(this.pt0i.x, this.pt0i.y, this.pt0i.z); +var zoomDimension = this.vwr.getScreenDim(); +var scaleFactor = zoomDimension / 10 * scale; +if (this.g3d.isAntialiased()) scaleFactor *= 2; +if ((isUnitCell || "abc".equals(axes.axes2)) && isXY) scaleFactor /= 2; +for (var i = 0; i < 3; i++) { +var pt = this.p3Screens[i]; +this.tm.rotatePoint(axes.getAxisPoint(i, false, this.pointT), pt); +pt.z *= -1; +pt.scaleAdd2(scaleFactor, pt, this.ptTemp); +} +} else { +drawTicks = (axes.tickInfos != null); +if (drawTicks) { +this.checkTickTemps(); +this.tickA.setT(this.pt000); +}this.tm.transformPtNoClip(this.pt000, this.ptTemp); +diameter = this.getDiameter(Clazz.floatToInt(this.ptTemp.z), mad10); +for (var i = nPoints; --i >= 0; ) this.tm.transformPtNoClip(axes.getAxisPoint(i, !isDataFrame, this.pointT), this.p3Screens[i]); + +}var xCenter = this.ptTemp.x; +var yCenter = this.ptTemp.y; +this.colixes[0] = this.vwr.getObjectColix(1); +this.colixes[1] = this.vwr.getObjectColix(2); +this.colixes[2] = this.vwr.getObjectColix(3); +var showOrigin = (!isXY && nPoints == 3 && (scale == 2 || isUnitCell)); +for (var i = nPoints; --i >= 0; ) { +if (labels2 != null && i >= labels2.length || checkAxisType && !axisType.contains(JV.JC.axesTypes[i]) || this.exportType != 1 && (Math.abs(xCenter - this.p3Screens[i].x) + Math.abs(yCenter - this.p3Screens[i].y) <= 2) && (!(showOrigin = false))) { +continue; +}this.colix = this.colixes[i % 3]; +this.g3d.setC(this.colix); +var label = (labels2 != null ? labels2.substring(i, i + 1) : axes.labels == null ? JV.JC.axisLabels[i + labelPtr] : i < axes.labels.length ? axes.labels[i] : null); +if (label != null && label.length > 0) this.renderLabel(label, this.p3Screens[i].x, this.p3Screens[i].y, this.p3Screens[i].z, xCenter, yCenter); +if (drawTicks) { +this.tickInfo = axes.tickInfos[(i % 3) + 1]; +if (this.tickInfo == null) this.tickInfo = axes.tickInfos[0]; +if (this.tickInfo != null) { +this.tickB.setT(axes.getAxisPoint(i, isDataFrame || isUnitCell, this.pointT)); +this.tickInfo.first = 0; +this.tickInfo.signFactor = (i % 6 >= 3 ? -1 : 1); +}}var d = (this.isSlab && i == 2 || this.isPolymer && i > 0 ? -4 : diameter); +this.renderLine(this.ptTemp, this.p3Screens[i], d, drawTicks && this.tickInfo != null); +} +if (showOrigin) { +var label0 = (axes.labels == null || axes.labels.length == 3 || axes.labels[3] == null ? "0" : axes.labels[3]); +if (label0 != null && label0.length != 0) { +this.colix = this.vwr.cm.colixBackgroundContrast; +this.g3d.setC(this.colix); +this.renderLabel(label0, xCenter, yCenter, this.ptTemp.z, xCenter, yCenter); +}}if (isXY) this.g3d.setSlab(slab); +}, "J.shape.Axes,~N,~B,~S,~B,~N,~S"); +Clazz.defineMethod(c$, "renderLabel", +function(str, x, y, z, xCenter, yCenter){ +var strAscent = this.font3d.getAscent(); +var strWidth = this.font3d.stringWidth(str); +var dx = x - xCenter; +var dy = y - yCenter; +if ((dx != 0 || dy != 0)) { +var dist = Math.sqrt(dx * dx + dy * dy); +dx = (strWidth * 0.75 * dx / dist); +dy = (strAscent * 0.75 * dy / dist); +x += dx; +y += dy; +}var xStrBaseline = Math.floor(x - strWidth / 2); +var yStrBaseline = Math.floor(y + strAscent / 2); +this.g3d.drawString(str, this.font3d, Clazz.doubleToInt(xStrBaseline), Clazz.doubleToInt(yStrBaseline), Clazz.floatToInt(z), Clazz.floatToInt(z), 0); +}, "~S,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/BallsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/BallsRenderer.js new file mode 100755 index 000000000000..23d85b00048c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/BallsRenderer.js @@ -0,0 +1,22 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.ShapeRenderer"], "J.render.BallsRenderer", ["J.shape.Shape"], function(){ +var c$ = Clazz.declareType(J.render, "BallsRenderer", J.render.ShapeRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +var needTranslucent = false; +if (this.isExport || this.vwr.checkMotionRendering(1153433601)) { +var atoms = this.ms.at; +var colixes = (this.shape).colixes; +var bsOK = this.vwr.shm.bsRenderableAtoms; +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (atom.sD > 0 && (atom.shapeVisibilityFlags & this.myVisibilityFlag) != 0) { +if (this.g3d.setC(colixes == null ? atom.colixAtom : J.shape.Shape.getColix(colixes, i, atom))) { +this.g3d.drawAtom(atom, 0); +} else { +needTranslucent = true; +}}} +}return needTranslucent; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/BbcageRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/BbcageRenderer.js new file mode 100755 index 000000000000..b92b2e6c684b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/BbcageRenderer.js @@ -0,0 +1,18 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.CageRenderer"], "J.render.BbcageRenderer", ["JU.BoxInfo"], function(){ +var c$ = Clazz.declareType(J.render, "BbcageRenderer", J.render.CageRenderer); +Clazz.overrideMethod(c$, "initRenderer", +function(){ +this.tickEdges = JU.BoxInfo.bbcageTickEdges; +}); +Clazz.overrideMethod(c$, "render", +function(){ +var bbox = this.shape; +var hiddenLines = (this.vwr.getBoolean(603979856)); +if (bbox.isVisible && (this.isExport || this.g3d.checkTranslucent(false)) && !this.vwr.isJmolDataFrame()) { +this.colix = this.vwr.getObjectColix(4); +this.renderCage(this.vwr.getObjectMad10(4), this.ms.getBBoxVertices(), (hiddenLines ? JU.BoxInfo.facePoints : null), null, 0, 0xFF, 0xFF, 1); +}return false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/CageRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/CageRenderer.js new file mode 100755 index 000000000000..d71e9632a872 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/CageRenderer.js @@ -0,0 +1,81 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.FontLineShapeRenderer", "JU.P3"], "J.render.CageRenderer", ["JU.BS", "$.Measure", "JU.BoxInfo"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.p3Screens = null; +this.tickEdges = null; +this.isSlab = false; +this.isPolymer = false; +this.pt = null; +Clazz.instantialize(this, arguments);}, J.render, "CageRenderer", J.render.FontLineShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.p3Screens = new Array(8); +{ +for (var i = 8; --i >= 0; ) this.p3Screens[i] = new JU.P3(); + +}this.pt = new JU.P3(); +}); +Clazz.defineMethod(c$, "renderCage", +function(mad, vertices, faces, axisPoints, firstLine, allowedEdges0, allowedEdges1, scale){ +this.g3d.setC(this.colix); +var fls = this.shape; +var hiddenLines = (faces != null); +this.imageFontScaling = this.vwr.imageFontScaling; +this.font3d = this.vwr.gdata.getFont3DScaled(fls.font3d, this.imageFontScaling); +var zSum = 0; +for (var i = 8; --i >= 0; ) { +this.pt.setT(vertices[i]); +if (scale != 1) { +this.pt.sub(vertices[0]); +this.pt.scaleAdd2(scale, this.pt, vertices[0]); +}this.tm.transformPtNoClip(this.pt, this.p3Screens[i]); +zSum += this.p3Screens[i].z; +} +var bsSolid = null; +if (hiddenLines) { +bsSolid = new JU.BS(); +for (var i = 12; --i >= 0; ) { +var face = faces[i]; +JU.Measure.getNormalThroughPoints(this.p3Screens[face[0]], this.p3Screens[face[1]], this.p3Screens[face[2]], this.pt1, this.pt); +if (this.pt1.z <= 0) { +bsSolid.set(face[0]); +bsSolid.set(face[1]); +bsSolid.set(face[2]); +}} +}var diameter = this.getDiameter(Clazz.doubleToInt(Math.floor(zSum / 8)), mad); +var axisPt = 2; +var edge = String.fromCharCode(0); +allowedEdges0 &= (this.isPolymer ? 0x1 : this.isSlab ? 0x55 : 0xFF); +allowedEdges1 &= (this.isPolymer ? 0x10 : this.isSlab ? 0x55 : 0xFF); +for (var i = firstLine * 2; i < 24; i += 2) { +var d = diameter; +var edge0 = JU.BoxInfo.edges[i]; +var edge1 = JU.BoxInfo.edges[i + 1]; +if (hiddenLines && (!bsSolid.get(edge0) || !bsSolid.get(edge1))) d = -Math.abs(diameter); +if (axisPoints != null && edge0 == 0) this.tm.transformPtNoClip(axisPoints[axisPt--], this.p3Screens[0]); +if ((allowedEdges0 & (1 << edge0)) == 0 || (allowedEdges1 & (1 << edge1)) == 0) continue; +var drawTicks = (fls.tickInfos != null && (edge = this.tickEdges[i >> 1]).charCodeAt(0) != 0); +if (drawTicks) { +this.checkTickTemps(); +this.tickA.setT(vertices[edge0]); +this.tickB.setT(vertices[edge1]); +var start = 0; +if (Clazz.instanceOf(this.shape,"J.shape.Bbcage")) switch ((edge).charCodeAt(0)) { +case 120: +start = this.tickA.x; +break; +case 121: +start = this.tickA.y; +break; +case 122: +start = this.tickA.z; +break; +} +this.tickInfo = fls.tickInfos["xyz".indexOf(edge) + 1]; +if (this.tickInfo == null) this.tickInfo = fls.tickInfos[0]; +if (this.tickInfo == null) drawTicks = false; + else this.tickInfo.first = start; +}this.renderLine(this.p3Screens[edge0], this.p3Screens[edge1], d, drawTicks); +} +}, "~N,~A,~A,~A,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/EchoRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/EchoRenderer.js new file mode 100755 index 000000000000..2feab1ebcb71 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/EchoRenderer.js @@ -0,0 +1,57 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.LabelsRenderer"], "J.render.EchoRenderer", ["J.render.TextRenderer", "JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveTranslucent = false; +Clazz.instantialize(this, arguments);}, J.render, "EchoRenderer", J.render.LabelsRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +if (this.vwr.isPreviewOnly) return false; +var echo = this.shape; +this.sppm = (this.vwr.getBoolean(603979847) ? this.vwr.getScalePixelsPerAngstrom(true) * 10000 : 0); +this.imageFontScaling = this.vwr.imageFontScaling; +this.haveTranslucent = false; +var alias = (this.g3d.isAntialiased() ? 4 : 0); +for (var t, $t = echo.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) { +this.renderEcho(t, alias); +} +if (echo.scaleObject != null) this.renderEcho(echo.scaleObject, alias); +if (!this.isExport) { +var frameTitle = this.vwr.getFrameTitle(); +if (frameTitle != null && frameTitle.length > 0) { +if (this.g3d.setC(this.vwr.cm.colixBackgroundContrast)) { +this.renderFrameTitle(this.vwr.formatText(frameTitle)); +}}}return this.haveTranslucent; +}); +Clazz.defineMethod(c$, "renderEcho", +function(t, alias){ +if (!t.visible || t.hidden) { +return; +}if (Clazz.instanceOf(t.pointerPt,"JM.Atom")) { +if (!(t.pointerPt).checkVisible()) return; +}if (t.valign == 4) J.render.TextRenderer.calcBarPixelsXYZ(this.vwr, t, this.pt0i, true); +if (t.pymolOffset != null) t.getPymolScreenOffset(t.xyz, this.pt0i, this.zSlab, this.pTemp, this.sppm); + else if (t.movableZPercent != 2147483647) { +var z = this.vwr.tm.zValueFromPercent(t.movableZPercent % 1000); +if (t.valign == 4 && Math.abs(t.movableZPercent) >= 1000) z = this.pt0i.z - this.vwr.tm.zValueFromPercent(0) + z; +t.setZs(z, z); +}if (t.pointerPt == null) { +t.pointer = 0; +} else { +t.pointer = 1; +this.tm.transformPtScr(t.pointerPt, this.pt0i); +t.atomX = this.pt0i.x; +t.atomY = this.pt0i.y; +t.atomZ = this.pt0i.z; +if (t.zSlab == -2147483648) t.zSlab = 1; +}if (J.render.TextRenderer.render(this.vwr, t, this.g3d, this.sppm, this.imageFontScaling, null, this.xy, this.pt2i, 0, 0, alias) && t.valign == 1 && t.align == 12) this.vwr.noFrankEcho = false; +if (JU.C.renderPass2(t.bgcolix) || JU.C.renderPass2(t.colix)) this.haveTranslucent = true; +}, "JM.Text,~N"); +Clazz.defineMethod(c$, "renderFrameTitle", +function(frameTitle){ +this.vwr.gdata.setFontBold("arial", Clazz.floatToInt(24 * this.imageFontScaling)); +var y = Clazz.doubleToInt(Math.floor(this.vwr.getScreenHeight() * (this.g3d.isAntialiased() ? 2 : 1) - 10 * this.imageFontScaling)); +var x = Clazz.doubleToInt(Math.floor(5 * this.imageFontScaling)); +this.g3d.drawStringNoSlab(frameTitle, null, x, y, 0, 0); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/FontLineShapeRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/FontLineShapeRenderer.js new file mode 100755 index 000000000000..405f7b7ccd5c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/FontLineShapeRenderer.js @@ -0,0 +1,242 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.ShapeRenderer", "JU.P3", "$.P3i", "$.V3"], "J.render.FontLineShapeRenderer", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.colixA = 0; +this.colixB = 0; +this.dotsOrDashes = false; +this.dashDots = null; +this.asLineOnly = false; +this.imageFontScaling = 0; +this.tickA = null; +this.tickB = null; +this.tickAs = null; +this.tickBs = null; +this.font3d = null; +this.pt0i = null; +this.pt2i = null; +this.s1 = null; +this.s2 = null; +this.pointT = null; +this.pointT2 = null; +this.pointT3 = null; +this.vectorT = null; +this.vectorT2 = null; +this.vectorT3 = null; +this.tickInfo = null; +this.draw000 = true; +this.width = 0; +this.endcap = 3; +this.pt0 = null; +this.pt1 = null; +Clazz.instantialize(this, arguments);}, J.render, "FontLineShapeRenderer", J.render.ShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.pt0i = new JU.P3i(); +this.pt2i = new JU.P3i(); +this.s1 = new JU.P3i(); +this.s2 = new JU.P3i(); +this.pointT = new JU.P3(); +this.pointT2 = new JU.P3(); +this.pointT3 = new JU.P3(); +this.vectorT = new JU.V3(); +this.vectorT2 = new JU.V3(); +this.vectorT3 = new JU.V3(); +this.pt0 = new JU.P3(); +this.pt1 = new JU.P3(); +}); +Clazz.defineMethod(c$, "getDiameter", +function(z, mad10OrPixels){ +var diameter; +var isMad10 = (mad10OrPixels > 20); +switch (this.exportType) { +case 1: +diameter = (isMad10 ? mad10OrPixels : Clazz.doubleToInt(Math.floor(this.vwr.tm.unscaleToScreen(z, mad10OrPixels * 2 / 10) * 1000))); +break; +default: +if (isMad10) { +diameter = Clazz.floatToInt(this.vwr.tm.scaleToScreen(z, Clazz.doubleToInt(mad10OrPixels / 10))); +} else { +if (this.g3d.isAntialiased()) mad10OrPixels += mad10OrPixels; +diameter = mad10OrPixels; +}} +return diameter; +}, "~N,~N"); +Clazz.defineMethod(c$, "renderLine", +function(p0, p1, diameter, drawTicks){ +if (diameter < 0) this.g3d.drawDashedLineBits(8, 4, p0, p1); + else this.g3d.fillCylinderBits(this.endcap, (this.exportType == 1 ? -diameter : diameter), p0, p1); +if (!drawTicks || this.tickInfo == null) return; +this.checkTickTemps(); +this.tickAs.setT(p0); +this.tickBs.setT(p1); +this.drawTicks(diameter, true); +}, "JU.P3,JU.P3,~N,~B"); +Clazz.defineMethod(c$, "checkTickTemps", +function(){ +if (this.tickA == null) { +this.tickA = new JU.P3(); +this.tickB = new JU.P3(); +this.tickAs = new JU.P3(); +this.tickBs = new JU.P3(); +}}); +Clazz.defineMethod(c$, "drawTicks", +function(diameter, withLabels){ +if (Float.isNaN(this.tickInfo.first)) this.tickInfo.first = 0; +this.drawTicks2(this.tickInfo.ticks.x, 8, diameter, (!withLabels ? null : this.tickInfo.tickLabelFormats == null ? Clazz.newArray(-1, ["%0.2f"]) : this.tickInfo.tickLabelFormats)); +this.drawTicks2(this.tickInfo.ticks.y, 4, diameter, null); +this.drawTicks2(this.tickInfo.ticks.z, 2, diameter, null); +}, "~N,~B"); +Clazz.defineMethod(c$, "drawTicks2", +function(dx, length, diameter, formats){ +if (dx == 0) return; +if (this.g3d.isAntialiased()) length *= 2; +this.vectorT2.set(this.tickBs.x, this.tickBs.y, 0); +this.vectorT.set(this.tickAs.x, this.tickAs.y, 0); +this.vectorT2.sub(this.vectorT); +if (this.vectorT2.length() < 50) return; +var signFactor = this.tickInfo.signFactor; +this.vectorT.sub2(this.tickB, this.tickA); +var d0 = this.vectorT.length(); +if (this.tickInfo.scale != null) { +if (Float.isNaN(this.tickInfo.scale.x)) { +var a = this.vwr.getUnitCellInfo(0); +if (!Float.isNaN(a)) this.vectorT.set(this.vectorT.x / a, this.vectorT.y / this.vwr.getUnitCellInfo(1), this.vectorT.z / this.vwr.getUnitCellInfo(2)); +} else { +this.vectorT.set(this.vectorT.x * this.tickInfo.scale.x, this.vectorT.y * this.tickInfo.scale.y, this.vectorT.z * this.tickInfo.scale.z); +}}var d = this.vectorT.length() + 0.0001 * dx; +if (d < dx) return; +var f = dx / d * d0 / d; +this.vectorT.scale(f); +var dz = (this.tickBs.z - this.tickAs.z) / (d / dx); +d += this.tickInfo.first; +var p = (Clazz.doubleToInt(Math.floor(this.tickInfo.first / dx))) * dx - this.tickInfo.first; +this.pointT.scaleAdd2(p / dx, this.vectorT, this.tickA); +p += this.tickInfo.first; +var z = this.tickAs.z; +if (diameter < 0) diameter = 1; +this.vectorT2.set(-this.vectorT2.y, this.vectorT2.x, 0); +this.vectorT2.scale(length / this.vectorT2.length()); +var ptRef = this.tickInfo.reference; +if (ptRef == null) { +this.pointT3.setT(this.vwr.getBoundBoxCenter()); +if (this.vwr.g.axesMode == 603979809) { +this.pointT3.add3(1, 1, 1); +}} else { +this.pointT3.setT(ptRef); +}this.tm.transformPtScr(this.pointT3, this.pt2i); +var horizontal = (Math.abs(this.vectorT2.x / this.vectorT2.y) < 0.2); +var centerX = horizontal; +var centerY = !horizontal; +var rightJustify = !centerX && (this.vectorT2.x < 0); +var drawLabel = (formats != null && formats.length > 0); +var x; +var y; +var val = new Array(1); +var i = (this.draw000 ? 0 : -1); +while (p < d) { +if (p >= this.tickInfo.first) { +this.pointT2.setT(this.pointT); +this.tm.transformPt3f(this.pointT2, this.pointT2); +this.drawLine(Clazz.doubleToInt(Math.floor(this.pointT2.x)), Clazz.doubleToInt(Math.floor(this.pointT2.y)), Clazz.floatToInt(z), (x = Clazz.doubleToInt(Math.floor(this.pointT2.x + this.vectorT2.x))), (y = Clazz.doubleToInt(Math.floor(this.pointT2.y + this.vectorT2.y))), Clazz.floatToInt(z), diameter); +if (drawLabel && (this.draw000 || p != 0)) { +val[0] = Float.$valueOf((p == 0 ? 0 : p * signFactor)); +var s = JU.PT.sprintf(formats[i % formats.length], "f", val); +this.drawString(x, y, Clazz.floatToInt(z), 4, rightJustify, centerX, centerY, Clazz.doubleToInt(Math.floor(this.pointT2.y)), s); +}}this.pointT.add(this.vectorT); +p += dx; +z += dz; +i++; +} +}, "~N,~N,~N,~A"); +Clazz.defineMethod(c$, "drawLine", +function(x1, y1, z1, x2, y2, z2, diameter){ +return this.drawLine2(this.g3d, x1, y1, z1, x2, y2, z2, diameter); +}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawLine2", +function(g3d, x1, y1, z1, x2, y2, z2, diameter){ +this.pt0.set(x1, y1, z1); +this.pt1.set(x2, y2, z2); +if (!this.dotsOrDashes) { +if (diameter < 0) { +g3d.drawDashedLineBits(8, 4, this.pt0, this.pt1); +return 1; +}g3d.fillCylinderBits(2, diameter, this.pt0, this.pt1); +} else if (this.dashDots != null) { +var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +J.render.FontLineShapeRenderer.drawDashedCylinder(g3d, x1, y1, z1, x2, y2, z2, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); +}return Clazz.doubleToInt((diameter + 1) / 2); +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawString", +function(x, y, z, radius, rightJustify, centerX, centerY, yRef, sVal){ +if (sVal == null) return; +var width = this.font3d.stringWidth(sVal); +var height = this.font3d.getAscent(); +var xT = x; +if (rightJustify) xT -= Clazz.doubleToInt(radius / 2) + 2 + width; + else if (centerX) xT -= Clazz.doubleToInt(radius / 2) + 2 + Clazz.doubleToInt(width / 2); + else xT += Clazz.doubleToInt(radius / 2) + 2; +var yT = y; +if (centerY) yT += Clazz.doubleToInt(height / 2); + else if (yRef == 0 || yRef < y) yT += height; + else yT -= Clazz.doubleToInt(radius / 2); +var zT = z - radius - 2; +if (zT < 1) zT = 1; +this.g3d.drawString(sVal, this.font3d, xT, yT, zT, zT, 0); +}, "~N,~N,~N,~N,~B,~B,~B,~N,~S"); +c$.drawDashedCylinder = Clazz.defineMethod(c$, "drawDashedCylinder", +function(g3d, xA, yA, zA, xB, yB, zB, array, width, colixA, colixB, renderD, asLineOnly, s1){ +if (array == null || width < 0) return; +var f = array[0]; +var dx = xB - xA; +var dy = yB - yA; +var dz = zB - zA; +var n = 0; +var isNdots = (array === J.render.FontLineShapeRenderer.ndots); +var isDots = (isNdots || array === J.render.FontLineShapeRenderer.sixdots); +if (isDots) { +if (s1 == null) s1 = new JU.P3i(); +var d2 = (dx * dx + dy * dy) / (width * width); +if (isNdots) { +f = (Math.sqrt(d2) / 1.5); +n = Clazz.floatToInt(f) + 2; +} else if (d2 < 8) { +array = J.render.FontLineShapeRenderer.twodots; +} else if (d2 < 32) { +array = J.render.FontLineShapeRenderer.fourdots; +}}var ptS = array[1]; +var ptE = array[2]; +var colixS = colixA; +var colixE = (ptE == 0 ? colixB : colixA); +if (n == 0) n = array.length; +for (var i = 0, pt = 3; pt < n; pt++) { +i = (isNdots ? i + 1 : array[pt]); +var xS = Clazz.doubleToInt(Math.floor(xA + dx * i / f)); +var yS = Clazz.doubleToInt(Math.floor(yA + dy * i / f)); +var zS = Clazz.doubleToInt(Math.floor(zA + dz * i / f)); +if (isDots) { +s1.set(xS, yS, zS); +if (pt == ptS) g3d.setC(colixA); + else if (pt == ptE) g3d.setC(colixB); +g3d.fillSphereI(width, s1); +continue; +}if (pt == ptS) colixS = colixB; +i = array[++pt]; +if (pt == ptE) colixE = colixB; +var xE = Clazz.doubleToInt(Math.floor(xA + dx * i / f)); +var yE = Clazz.doubleToInt(Math.floor(yA + dy * i / f)); +var zE = Clazz.doubleToInt(Math.floor(zA + dz * i / f)); +J.render.FontLineShapeRenderer.fillCylinder(g3d, colixS, colixE, 2, xS, yS, zS, xE, yE, zE, renderD, asLineOnly); +} +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~A,~N,~N,~N,~N,~B,JU.P3i"); +c$.fillCylinder = Clazz.defineMethod(c$, "fillCylinder", +function(g3d, colixA, colixB, endcaps, xA, yA, zA, xB, yB, zB, diameter, asLineOnly){ +if (asLineOnly) g3d.drawLine(colixA, colixB, xA, yA, zA, xB, yB, zB); + else g3d.fillCylinderXYZ(colixA, colixB, endcaps, diameter, xA, yA, zA, xB, yB, zB); +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~B"); +c$.dashes = Clazz.newIntArray(-1, [12, 0, 0, 2, 5, 7, 10]); +c$.hDashes = Clazz.newIntArray(-1, [10, 7, 6, 1, 3, 4, 6, 7, 9]); +c$.ndots = Clazz.newIntArray(-1, [0, 3, 1000]); +c$.sixdots = Clazz.newIntArray(-1, [12, 3, 6, 1, 3, 5, 7, 9, 11]); +c$.fourdots = Clazz.newIntArray(-1, [13, 3, 5, 2, 5, 8, 11]); +c$.twodots = Clazz.newIntArray(-1, [12, 3, 4, 3, 9]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/FrankRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/FrankRenderer.js new file mode 100755 index 000000000000..74054cc49640 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/FrankRenderer.js @@ -0,0 +1,38 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.ShapeRenderer"], "J.render.FrankRenderer", ["J.shape.Frank", "JV.Viewer"], function(){ +var c$ = Clazz.declareType(J.render, "FrankRenderer", J.render.ShapeRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +var frank = this.shape; +var allowKeys = this.vwr.getBooleanProperty("allowKeyStrokes"); +var modelKitMode = this.vwr.getBoolean(603983903); +this.colix = (modelKitMode ? 20 : this.vwr.isSignedApplet ? (allowKeys || (JV.Viewer.isJS || JV.Viewer.isSwingJS) && !this.vwr.isWebGL ? 5 : 10) : allowKeys ? 7 : 12); +if (this.isExport || !this.vwr.getShowFrank() || !this.g3d.setC(this.colix)) return false; +if (this.vwr.frankOn && !this.vwr.noFrankEcho) return this.vwr.noFrankEcho; +this.vwr.noFrankEcho = true; +var imageFontScaling = this.vwr.imageFontScaling; +frank.getFont(imageFontScaling); +var dx = Clazz.floatToInt(frank.frankWidth + 4 * imageFontScaling); +var dy = frank.frankDescent; +this.g3d.drawStringNoSlab(J.shape.Frank.frankString, frank.font3d, this.vwr.gdata.width - dx, this.vwr.gdata.height - dy, 0, 0); +var kit = (modelKitMode ? this.vwr.getModelkit(false) : null); +if (modelKitMode && !kit.isHidden()) { +this.g3d.setC(12); +var w = 10; +var h = 26; +this.g3d.fillTextRect(0, 0, 1, 0, w, h * 4); +var active = kit.getActiveMenu(); +if (active != null) { +if ("atomMenu".equals(active)) { +this.g3d.setC(21); +this.g3d.fillTextRect(0, 0, 0, 0, w, h); +} else if ("bondMenu".equals(active)) { +this.g3d.setC(7); +this.g3d.fillTextRect(0, h, 0, 0, w, h); +} else if ("xtalMenu".equals(active)) { +this.g3d.setC(8); +this.g3d.fillTextRect(0, h << 1, 0, 0, w, h); +}}}return false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/HalosRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/HalosRenderer.js new file mode 100755 index 000000000000..fb7380b104cd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/HalosRenderer.js @@ -0,0 +1,76 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.ShapeRenderer"], "J.render.HalosRenderer", ["JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isAntialiased = false; +Clazz.instantialize(this, arguments);}, J.render, "HalosRenderer", J.render.ShapeRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +var halos = this.shape; +var showOnce = this.vwr.getShowSelectedOnce(); +var selectDisplayTrue = (this.vwr.getSelectionHalosEnabled() || showOnce); +var showHiddenSelections = (selectDisplayTrue && this.vwr.getBoolean(603979920)); +if (halos.mads == null && halos.bsHighlight == null && !selectDisplayTrue) return false; +this.isAntialiased = this.g3d.isAntialiased(); +var atoms = this.ms.at; +var bsSelected = (showOnce && this.vwr.movableBitSet != null ? this.vwr.movableBitSet : selectDisplayTrue ? this.vwr.bsA() : null); +var needTranslucent = false; +this.g3d.addRenderer(1073741880); +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (atom == null || (atom.shapeVisibilityFlags & 1) == 0) continue; +var isHidden = this.ms.isAtomHidden(i); +this.mad = (halos.mads == null ? 0 : halos.mads[i]); +this.colix = (halos.colixes == null || i >= halos.colixes.length ? 0 : halos.colixes[i]); +if (selectDisplayTrue && bsSelected.get(i)) { +if (isHidden && !showHiddenSelections) continue; +if (this.mad == 0) this.mad = -1; +if (this.colix == 0) { +if (this.exportType == 1 && !this.g3d.isWebGL()) continue; +this.colix = halos.colixSelection; +}if (this.colix == 2) this.colix = 23; + else if (this.colix == 0) this.colix = JU.C.getColixInherited(this.colix, atom.colixAtom); +} else if (isHidden) { +continue; +} else { +this.colix = JU.C.getColixInherited(this.colix, atom.colixAtom); +}if (this.mad != 0) { +if (this.render1(atom)) needTranslucent = true; +}if (!isHidden && halos.bsHighlight != null && halos.bsHighlight.get(i)) { +this.mad = -2; +this.colix = halos.colixHighlight; +if (this.render1(atom)) needTranslucent = true; +}} +return needTranslucent; +}); +Clazz.defineMethod(c$, "render1", +function(atom){ +var colixFill = (this.mad == -2 ? 0 : JU.C.getColixTranslucent3(this.colix, true, 0.5)); +var needTranslucent = (this.mad != -2); +if (!this.g3d.setC(this.colix)) { +needTranslucent = true; +this.colix = 0; +if (colixFill == 0 || !this.g3d.setC(colixFill)) return needTranslucent; +}var z = atom.sZ; +var d = this.mad; +if (d < 0) { +d = atom.sD; +if (d == 0) { +var ellipsemax = (atom.isVisible(20) ? atom.getADPMinMax(true) : 0); +if (ellipsemax > 0) d = this.vwr.tm.scaleToScreen(z, Clazz.doubleToInt(Math.floor(ellipsemax * 2000))); +if (d == 0) { +d = Clazz.floatToInt(this.vwr.tm.scaleToScreen(z, this.mad == -2 ? 250 : 500)); +}}} else { +d = this.vwr.tm.scaleToScreen(z, this.mad); +}if (this.isAntialiased) d /= 2; +var more = (d / 2); +if (this.mad == -2) more /= 2; +if (more < 8) more = 8; +if (more > 20) more = 20; +d += more; +if (this.isAntialiased) d *= 2; +if (d < 1) return false; +this.g3d.drawFilledCircle(this.colix, colixFill, Clazz.doubleToInt(Math.floor(d)), atom.sX, atom.sY, atom.sZ); +return needTranslucent; +}, "JM.Atom"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/HoverRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/HoverRenderer.js new file mode 100755 index 000000000000..1b0f5ca510b9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/HoverRenderer.js @@ -0,0 +1,39 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.ShapeRenderer"], "J.render.HoverRenderer", ["JU.P3", "J.render.TextRenderer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tempXY = null; +this.ptTemp = null; +Clazz.instantialize(this, arguments);}, J.render, "HoverRenderer", J.render.ShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.tempXY = Clazz.newFloatArray (3, 0); +}); +Clazz.overrideMethod(c$, "render", +function(){ +if (this.tm.isNavigating()) return false; +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +var hover = this.shape; +var antialias = this.g3d.isAntialiased(); +var text = hover.hoverText; +var label; +if (hover.atomIndex >= 0) { +var atom = this.ms.at[hover.atomIndex]; +label = (hover.specialLabel != null ? hover.specialLabel : hover.atomFormats != null && hover.atomFormats[hover.atomIndex] != null ? this.ms.getLabeler().formatLabel(this.vwr, atom, hover.atomFormats[hover.atomIndex], this.ptTemp) : hover.labelFormat != null ? this.ms.getLabeler().formatLabel(this.vwr, atom, this.fixLabel(atom, hover.labelFormat), this.ptTemp) : null); +if (label == null) return false; +text.setXYZs(atom.sX, atom.sY, 1, -2147483648); +} else if (hover.text != null) { +label = hover.text; +text.setXYZs(hover.xy.x, hover.xy.y, 1, -2147483648); +} else { +return true; +}if (this.vwr != null) label = this.vwr.formatText(label); +text.setText(label); +J.render.TextRenderer.render(null, text, this.g3d, 0, antialias ? 2 : 1, null, this.tempXY, null, 0, 0, 0); +return true; +}); +Clazz.defineMethod(c$, "fixLabel", +function(atom, label){ +if (label == null || atom == null) return null; +return (this.ms.isJmolDataFrameForModel(atom.mi) && label.equals("%U") ? "%W" : label); +}, "JM.Atom,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/LabelsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/LabelsRenderer.js new file mode 100755 index 000000000000..46e2def3b0cf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/LabelsRenderer.js @@ -0,0 +1,138 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.FontLineShapeRenderer", "JU.P3", "$.P3i"], "J.render.LabelsRenderer", ["JM.Text", "J.render.TextRenderer", "JU.Font", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.minZ = null; +this.ascent = 0; +this.descent = 0; +this.sppm = 0; +this.xy = null; +this.screen = null; +this.fidPrevious = 0; +this.pTemp = null; +this.bgcolix = 0; +this.labelColix = 0; +this.fid = 0; +this.atom = null; +this.atomPt = null; +this.doPointer = 0; +this.offset = 0; +this.textAlign = 0; +this.pointer = 0; +this.zSlab = -2147483648; +this.zBox = 0; +this.boxXY = null; +this.scalePixelsPerMicron = 0; +this.mode = 0; +Clazz.instantialize(this, arguments);}, J.render, "LabelsRenderer", J.render.FontLineShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.minZ = Clazz.newIntArray (1, 0); +this.xy = Clazz.newFloatArray (3, 0); +this.screen = new JU.P3i(); +this.pTemp = new JU.P3(); +}); +Clazz.overrideMethod(c$, "render", +function(){ +this.fidPrevious = 0; +var labels = this.shape; +var labelStrings = labels.strings; +var fids = labels.fids; +var offsets = labels.offsets; +if (labelStrings == null) return false; +var atoms = this.ms.at; +var backgroundColixContrast = this.vwr.cm.colixBackgroundContrast; +var backgroundColor = this.vwr.getBackgroundArgb(); +this.sppm = this.vwr.getScalePixelsPerAngstrom(true); +this.scalePixelsPerMicron = (this.vwr.getBoolean(603979847) ? this.sppm * 10000 : 0); +this.imageFontScaling = this.vwr.imageFontScaling; +var iGroup = -1; +this.minZ[0] = 2147483647; +var isAntialiased = this.g3d.isAntialiased(); +for (var i = labelStrings.length; --i >= 0; ) { +this.atomPt = this.atom = atoms[i]; +if (!this.isVisibleForMe(this.atom)) continue; +var label = labelStrings[i]; +if (label == null || label.length == 0 || labels.mads != null && labels.mads[i] < 0) continue; +this.labelColix = labels.getColix2(i, this.atom, false); +this.bgcolix = labels.getColix2(i, this.atom, true); +if (this.bgcolix == 0 && this.vwr.gdata.getColorArgbOrGray(this.labelColix) == backgroundColor) this.labelColix = backgroundColixContrast; +this.fid = ((fids == null || i >= fids.length || fids[i] == 0) ? labels.zeroFontId : fids[i]); +this.offset = (offsets == null || i >= offsets.length ? 0 : offsets[i]); +var labelsFront = ((this.offset & 32) != 0); +var labelsGroup = ((this.offset & 16) != 0); +this.textAlign = JV.JC.getAlignment(this.offset); +this.pointer = JV.JC.getPointer(this.offset); +this.doPointer = (this.pointer & 1); +var isAbsolute = this.offset & 64; +this.mode = (this.doPointer | isAbsolute | (isAntialiased ? 4 : 0)); +this.zSlab = this.atom.sZ - Clazz.doubleToInt(this.atom.sD / 2) - 3; +if (this.zSlab < 1) this.zSlab = 1; +this.zBox = this.zSlab; +if (labelsGroup) { +var group = this.atom.group; +var ig = group.groupIndex; +if (ig != iGroup) { +group.getMinZ(atoms, this.minZ); +iGroup = ig; +}this.zBox = this.minZ[0]; +} else if (labelsFront) { +this.zBox = 1; +}if (this.zBox < 1) this.zBox = 1; +var text = labels.getLabel(i); +this.boxXY = (!this.isExport || this.vwr.creatingImage ? labels.getBox(i) : Clazz.newFloatArray (5, 0)); +if (this.boxXY == null) labels.putBox(i, this.boxXY = Clazz.newFloatArray (5, 0)); +text = this.renderLabelOrMeasure(text, label); +if (text != null) { +labels.putLabel(i, text); +}if (isAntialiased) { +this.boxXY[0] /= 2; +this.boxXY[1] /= 2; +}this.boxXY[4] = this.zBox; +} +return false; +}); +Clazz.defineMethod(c$, "renderLabelOrMeasure", +function(text, label){ +var newText = false; +var pointerColix = ((this.pointer & 2) != 0 && this.bgcolix != 0 ? this.bgcolix : this.labelColix); +if (text != null) { +if (text.font == null) text.setFontFromFid(this.fid); +text.atomX = this.atomPt.sX; +text.atomY = this.atomPt.sY; +text.atomZ = this.zSlab; +if (text.pymolOffset == null) { +text.setXYZs(this.atomPt.sX, this.atomPt.sY, this.zBox, this.zSlab); +text.colix = this.labelColix; +text.bgcolix = this.bgcolix; +} else { +text.getPymolScreenOffset(this.atomPt, this.screen, this.zSlab, this.pTemp, this.sppm); +}} else { +var isLeft = (this.textAlign == 4 || this.textAlign == 0); +if (this.fid != this.fidPrevious || this.ascent == 0) { +this.vwr.gdata.setFont(JU.Font.getFont3D(this.fid)); +this.fidPrevious = this.fid; +this.font3d = this.vwr.gdata.getFont3DCurrent(); +if (isLeft) { +this.ascent = this.font3d.getAscent(); +this.descent = this.font3d.getDescent(); +}}var isSimple = isLeft && (this.imageFontScaling == 1 && this.scalePixelsPerMicron == 0 && label.indexOf("|") < 0 && label.indexOf("\n") < 0 && label.indexOf("= 0; ) { +this.m = measures.measurements.get(i); +if (!this.m.isVisible || !this.m.$isValid || (this.count = this.m.count) == 1 && this.m.traceX == -2147483648) continue; +this.getPoints(); +this.colix = this.m.colix; +if (this.colix == 0) this.colix = measures.colix; +if (this.colix == 0) this.colix = this.vwr.cm.colixBackgroundContrast; +this.labelColix = this.m.labelColix; +if (this.labelColix == 0) this.labelColix = this.vwr.cm.colixBackgroundContrast; + else if (this.labelColix == -1) this.labelColix = this.colix; +this.g3d.setC(this.colix); +this.colixA = this.colixB = this.colix; +this.mode = (this.g3d.isAntialiased() ? 4 : 0); +this.renderMeasurement(showMeasurementLabels); +} +return false; +}); +Clazz.defineMethod(c$, "getPoints", +function(){ +for (var j = this.count; --j >= 0; ) { +var i = this.m.getAtomIndex(j + 1); +var pt = (i >= 0 && this.modulating ? this.getModAtom(i) : this.m.getAtom(j + 1)); +if (pt.sD < 0) { +this.tm.transformPtScr(pt, this.pt0i); +pt.sX = this.pt0i.x; +pt.sY = this.pt0i.y; +pt.sZ = this.pt0i.z; +}this.p[j] = pt; +} +if (this.modulating) this.m.refresh(this.p); +}); +Clazz.defineMethod(c$, "getModAtom", +function(i){ +var ii = Integer.$valueOf(i); +var pt = this.mpts.get(ii); +if (pt != null) ii = null; +var v = this.ms.getModulation(i); +if (v == null) { +pt = this.ms.at[i]; +} else { +if (pt == null) pt = new JU.Point3fi(); +pt.setT(this.ms.at[i]); +if (this.vwr.tm.vibrationOn) this.vwr.tm.getVibrationPoint(v, pt, NaN); +pt.sD = -1; +}if (ii != null) this.mpts.put(ii, pt); +return pt; +}, "~N"); +Clazz.defineMethod(c$, "renderMeasurement", +function(renderLabel){ +var s = (renderLabel ? this.m.getString() : null); +if (s != null) { +if (s.length == 0) { +s = null; +} else if (this.m.text != null) { +this.m.text.setText(s); +this.m.text.colix = this.labelColix; +this.m.text.setFontScale(this.imageFontScaling); +}}if (this.m.mad == 0) { +this.dotsOrDashes = false; +this.mad = this.mad0; +} else { +this.mad = this.m.mad; +this.dotsOrDashes = true; +this.dashDots = (this.mad < 0 ? null : J.render.FontLineShapeRenderer.ndots); +}switch (this.count) { +case 1: +this.drawLine(this.p[0].sX, this.p[0].sY, this.p[0].sZ, this.m.traceX, this.m.traceY, this.p[0].sZ, this.mad); +break; +case 2: +this.renderDistance(s, this.p[0], this.p[1]); +break; +case 3: +this.renderAngle(s, this.p[0], this.p[1], this.p[2]); +break; +case 4: +this.renderTorsion(s, this.p[0], this.p[1], this.p[2], this.p[3]); +break; +} +this.p[0] = this.p[1] = this.p[2] = this.p[3] = null; +}, "~B"); +Clazz.defineMethod(c$, "renderDistance", +function(s, a, b){ +if ((this.tickInfo = this.m.tickInfo) != null) { +this.drawLine(a.sX, a.sY, a.sZ, b.sX, b.sY, b.sZ, this.mad); +this.tickA = a; +this.tickB = b; +if (this.tickAs == null) { +this.tickAs = new JU.P3(); +this.tickBs = new JU.P3(); +}this.tickAs.set(a.sX, a.sY, a.sZ); +this.tickBs.set(b.sX, b.sY, b.sZ); +this.drawTicks(this.mad, s != null); +return; +}var zA = a.sZ - a.sD - 10; +var zB = b.sZ - b.sD - 10; +var radius = this.drawLine(a.sX, a.sY, zA, b.sX, b.sY, zB, this.mad); +if (s == null) return; +if (this.mad > 0) radius <<= 1; +var zLabel = (this.m.inFront ? Math.min(zA, zB) - 10 : Clazz.doubleToInt((zA + zB) / 2)); +if (zLabel < 1) zLabel = 1; +var x = Clazz.doubleToInt((a.sX + b.sX) / 2); +var y = Clazz.doubleToInt((a.sY + b.sY) / 2); +if (this.m.text == null) { +this.g3d.setC(this.labelColix); +this.drawString(x, y, zLabel, radius, this.doJustify && (x - a.sX) * (y - a.sY) > 0, false, true, (this.doJustify ? 0 : 2147483647), s); +} else { +this.atomPt.ave(a, b); +this.atomPt.sX = Clazz.doubleToInt((a.sX + b.sX) / 2); +this.atomPt.sY = Clazz.doubleToInt((a.sY + b.sY) / 2); +this.renderLabelOrMeasure(this.m.text, s); +}}, "~S,JU.Point3fi,JU.Point3fi"); +Clazz.defineMethod(c$, "renderAngle", +function(s, a, b, c){ +var zOffset = b.sD + 10; +var zA = a.sZ - a.sD - 10; +var zB = b.sZ - zOffset; +var zC = c.sZ - c.sD - 10; +var radius = this.drawLine(a.sX, a.sY, zA, b.sX, b.sY, zB, this.mad); +radius += this.drawLine(b.sX, b.sY, zB, c.sX, c.sY, zC, this.mad); +if (s == null) return; +radius = Clazz.doubleToInt((radius + 1) / 2); +if (this.m.value > 175) { +if (this.m.text == null) { +var offset = Clazz.doubleToInt(Math.floor(5 * this.imageFontScaling)); +this.g3d.setC(this.labelColix); +this.drawString(b.sX + offset, b.sY - offset, zB, radius, false, false, false, (this.doJustify ? 0 : 2147483647), s); +} else { +this.atomPt.setT(b); +this.renderLabelOrMeasure(this.m.text, s); +}return; +}if (this.m.isTainted()) { +var radians = JU.Measure.computeAngle(this.p[0], this.p[1], this.p[2], this.vectorT2, this.vectorT3, false); +this.vectorT.cross(this.vectorT2, this.vectorT3); +this.m.renderAxis = JU.A4.new4(this.vectorT.x, this.vectorT.y, this.vectorT.z, radians); +this.vectorT2.normalize(); +this.vectorT2.scale(0.5); +this.m.renderArc = JU.P3.newP(this.vectorT2); +}if (this.aaT == null) { +this.aaT = new JU.A4(); +this.matrixT = new JU.M3(); +}var dotCount = Clazz.doubleToInt(Math.floor((this.m.renderAxis.angle / (6.283185307179586)) * 64)); +var stepAngle = this.m.renderAxis.angle / dotCount; +this.aaT.setAA(this.m.renderAxis); +var iMid = Clazz.doubleToInt(dotCount / 2); +for (var i = dotCount; --i >= 0; ) { +this.aaT.angle = i * stepAngle; +this.pointT.setT(this.m.renderArc); +this.matrixT.setAA(this.aaT).rotate(this.pointT); +this.pointT.add(b); +var p3i = this.tm.transformPt(this.pointT); +var zArc = p3i.z - zOffset; +if (zArc < 0) zArc = 0; +this.g3d.drawPixel(p3i.x, p3i.y, zArc); +if (i != iMid) continue; +this.pointT.setT(this.m.renderArc); +this.pointT.scale(1.1); +this.matrixT.rotate(this.pointT); +this.pointT.add(b); +this.tm.transformPt(this.pointT); +var zLabel = (this.m.inFront ? Math.min(Math.min(zA, zB), zC) : p3i.z - zOffset); +if (zLabel < 1) zLabel = 1; +if (this.m.text == null) { +this.g3d.setC(this.labelColix); +this.drawString(p3i.x, p3i.y, zLabel, radius, p3i.x < b.sX, false, false, (this.doJustify ? b.sY : 2147483647), s); +} else { +this.atomPt.setT(this.pointT); +this.renderLabelOrMeasure(this.m.text, s); +}} +}, "~S,JU.Point3fi,JU.Point3fi,JU.Point3fi"); +Clazz.defineMethod(c$, "renderTorsion", +function(s, a, b, c, d){ +var zA = a.sZ - a.sD - 10; +var zB = b.sZ - b.sD - 10; +var zC = c.sZ - c.sD - 10; +var zD = d.sZ - d.sD - 10; +var radius = this.drawLine(a.sX, a.sY, zA, b.sX, b.sY, zB, this.mad); +radius += this.drawLine(b.sX, b.sY, zB, c.sX, c.sY, zC, this.mad); +radius += this.drawLine(c.sX, c.sY, zC, d.sX, d.sY, zD, this.mad); +if (s == null) return; +var zLabel = (this.m.inFront ? Math.min(Math.min(Math.min(zA, zB), zC), zD) : Clazz.doubleToInt((zA + zB + zC + zD) / 4)); +if (zLabel < 1) zLabel = 1; +radius /= 3; +if (this.m.text == null) { +this.g3d.setC(this.labelColix); +this.drawString(Clazz.doubleToInt((a.sX + b.sX + c.sX + d.sX) / 4), Clazz.doubleToInt((a.sY + b.sY + c.sY + d.sY) / 4), zLabel, radius, false, false, false, (this.doJustify ? 0 : 2147483647), s); +} else { +this.atomPt.add2(a, b); +this.atomPt.add(c); +this.atomPt.add(d); +this.atomPt.scale(0.25); +this.renderLabelOrMeasure(this.m.text, s); +}}, "~S,JU.Point3fi,JU.Point3fi,JU.Point3fi,JU.Point3fi"); +Clazz.defineMethod(c$, "renderPendingMeasurement", +function(){ +try { +this.getPoints(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +(this.shape).mPending = null; +return; +} else { +throw e; +} +} +var renderLabel = (this.m.traceX == -2147483648); +this.g3d.setC(this.labelColix = (renderLabel ? this.vwr.cm.colixRubberband : this.count == 2 ? 20 : 23)); +if ((this.m).haveTarget) { +this.renderMeasurement(renderLabel); +return; +}var atomLast = this.p[this.count - 1]; +if (this.count > 1) this.renderMeasurement(false); +var lastZ = atomLast.sZ - atomLast.sD - 10; +var x = this.vwr.getCursorX(); +var y = this.vwr.getCursorY(); +if (this.g3d.isAntialiased()) { +x <<= 1; +y <<= 1; +}this.drawLine(atomLast.sX, atomLast.sY, lastZ, x, y, lastZ, this.mad); +}); +Clazz.overrideMethod(c$, "drawLine", +function(x1, y1, z1, x2, y2, z2, mad){ +var diameter = Clazz.floatToInt(mad >= 20 && this.exportType != 1 ? this.vwr.tm.scaleToScreen(Clazz.doubleToInt((z1 + z2) / 2), mad) : mad); +if (this.dotsOrDashes && (this.dashDots == null || this.dashDots === J.render.FontLineShapeRenderer.ndots)) this.width = diameter; +return this.drawLine2(this.g3d, x1, y1, z1, x2, y2, z2, diameter); +}, "~N,~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/MeshRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/MeshRenderer.js new file mode 100755 index 000000000000..4491cb00332c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/MeshRenderer.js @@ -0,0 +1,351 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.ShapeRenderer", "JU.BS", "$.P3", "$.P3i"], "J.render.MeshRenderer", ["JU.AU", "JU.C", "$.SimpleUnitCell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mesh = null; +this.vertices = null; +this.normixes = null; +this.screens = null; +this.p3Screens = null; +this.transformedVectors = null; +this.vertexCount = 0; +this.imageFontScaling = 0; +this.scalePixelsPerMicron = 0; +this.diameter = 0; +this.width = 0; +this.allowDashed = false; +this.isTranslucent = false; +this.frontOnly = false; +this.isShell = false; +this.antialias = false; +this.haveBsDisplay = false; +this.selectedPolyOnly = false; +this.isGhostPass = false; +this.thePlane = null; +this.latticeOffset = null; +this.pt1f = null; +this.pt2f = null; +this.pt1i = null; +this.pt2i = null; +this.pt3i = null; +this.exportPass = 0; +this.needTranslucent = false; +this.doRender = false; +this.volumeRender = false; +this.bsPolygons = null; +this.isTranslucentInherit = false; +this.renderLow = false; +this.meshSlabValue = 100; +this.showTriangles = false; +this.forceShowTriangles = false; +this.bsPolygonsToExport = null; +Clazz.instantialize(this, arguments);}, J.render, "MeshRenderer", J.render.ShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.latticeOffset = new JU.P3(); +this.pt1f = new JU.P3(); +this.pt2f = new JU.P3(); +this.pt1i = new JU.P3i(); +this.pt2i = new JU.P3i(); +this.pt3i = new JU.P3i(); +this.bsPolygonsToExport = new JU.BS(); +}); +Clazz.defineMethod(c$, "renderMesh2", +function(mesh){ +this.mesh = mesh; +if (!this.setVariables()) return false; +if (!this.doRender) return mesh.title != null; +this.latticeOffset.set(0, 0, 0); +if (mesh.modelIndex < 0 || mesh.lattice == null && mesh.symops == null) { +if (mesh.haveXyPoints) { +for (var i = this.vertexCount; --i >= 0; ) if (this.vertices[i] != null) this.tm.transformPtScrT32D(this.vertices[i], this.p3Screens[i]); + +} else { +for (var i = this.vertexCount; --i >= 0; ) { +if (this.vertices[i] != null) { +this.tm.transformPtScrT3(this.vertices[i], this.p3Screens[i]); +this.tm.transformPtScr(this.vertices[i], this.screens[i]); +}} +}this.render2(this.isExport); +} else { +var vTemp = new JU.P3(); +var unitcell = mesh.getUnitCell(); +if (unitcell != null) { +if (mesh.symops != null) { +if (mesh.symopNormixes == null) mesh.symopNormixes = JU.AU.newShort2(mesh.symops.length); +var verticesTemp = null; +var max = mesh.symops.length; +var c = mesh.colix; +for (var j = max; --j >= 0; ) { +var m = mesh.symops[j]; +if (m == null) continue; +if (mesh.colorType == 1296041985) mesh.colix = mesh.symopColixes[j]; +var normals = mesh.symopNormixes[j]; +var needNormals = (normals == null); +verticesTemp = (needNormals ? new Array(this.vertexCount) : null); +for (var i = this.vertexCount; --i >= 0; ) { +vTemp.setT(this.vertices[i]); +unitcell.toFractional(vTemp, true); +m.rotTrans(vTemp); +unitcell.toCartesian(vTemp, true); +this.tm.transformPtScr(vTemp, this.screens[i]); +if (needNormals) { +verticesTemp[i] = vTemp; +vTemp = new JU.P3(); +}} +if (needNormals) this.normixes = mesh.symopNormixes[j] = mesh.setNormixes(mesh.getNormals(verticesTemp, null)); + else this.normixes = mesh.normixes = mesh.symopNormixes[j]; +this.render2(this.isExport); +} +mesh.colix = c; +} else { +var minXYZ = new JU.P3i(); +var maxXYZ = JU.P3i.new3(Clazz.floatToInt(mesh.lattice.x), Clazz.floatToInt(mesh.lattice.y), Clazz.floatToInt(mesh.lattice.z)); +JU.SimpleUnitCell.setMinMaxLatticeParameters(Clazz.floatToInt(unitcell.getUnitCellInfoType(6)), minXYZ, maxXYZ, 0); +for (var tx = minXYZ.x; tx < maxXYZ.x; tx++) for (var ty = minXYZ.y; ty < maxXYZ.y; ty++) for (var tz = minXYZ.z; tz < maxXYZ.z; tz++) { +this.latticeOffset.set(tx, ty, tz); +unitcell.toCartesian(this.latticeOffset, false); +for (var i = this.vertexCount; --i >= 0; ) { +vTemp.add2(this.vertices[i], this.latticeOffset); +this.tm.transformPtScr(vTemp, this.screens[i]); +} +this.render2(this.isExport); +} + + +}}}if (this.screens != null) this.vwr.freeTempScreens(this.screens); +if (this.p3Screens != null) this.vwr.freeTempPoints(this.p3Screens); +return true; +}, "J.shape.Mesh"); +Clazz.defineMethod(c$, "setVariables", +function(){ +if (this.mesh.visibilityFlags == 0) return false; +this.forceShowTriangles = this.vwr.getBoolean(603979964); +this.showTriangles = this.forceShowTriangles || this.mesh.showTriangles; +if (this.mesh.bsSlabGhost != null) this.g3d.setC(this.mesh.slabColix); +if (this.mesh.colorsExplicit) this.g3d.setC(2047); +this.isGhostPass = (this.mesh.bsSlabGhost != null && (this.isExport ? this.exportPass == 2 : this.vwr.gdata.isPass2)); +this.isTranslucentInherit = (this.isGhostPass && JU.C.getColixTranslucent3(this.mesh.slabColix, false, 0) == 1); +this.isTranslucent = this.isGhostPass || JU.C.renderPass2(this.mesh.colix); +if (this.isTranslucent || this.volumeRender || this.mesh.bsSlabGhost != null) this.needTranslucent = true; +this.doRender = (this.setColix(this.mesh.colix) || this.mesh.showContourLines); +if (!this.doRender || this.isGhostPass && !(this.doRender = this.g3d.setC(this.mesh.slabColix))) { +this.vertices = this.mesh.vs; +if (this.needTranslucent) this.g3d.setC(JU.C.getColixTranslucent3(4, true, 0.5)); +return true; +}if (this.mesh.isModelConnected) this.mesh.mat4 = this.ms.am[this.mesh.modelIndex].mat4; +this.vertices = (this.mesh.scale3d == 0 && this.mesh.mat4 == null ? this.mesh.vs : this.mesh.getOffsetVertices(this.thePlane)); +if (this.mesh.lineData == null) { +if ((this.vertexCount = this.mesh.vc) == 0) return false; +this.normixes = this.mesh.normixes; +if (this.normixes == null && this.mesh.pc >= 0 || this.vertices == null) return false; +this.haveBsDisplay = (this.mesh.bsDisplay != null); +this.selectedPolyOnly = (this.isGhostPass || this.mesh.bsSlabDisplay != null); +this.bsPolygons = (this.isGhostPass ? this.mesh.bsSlabGhost : this.selectedPolyOnly ? this.mesh.bsSlabDisplay : null); +this.renderLow = (!this.isExport && !this.vwr.checkMotionRendering(1073742018)); +var allowFrontOnly = (!this.mesh.isTwoSided && !this.selectedPolyOnly && (this.meshSlabValue == -2147483648 || this.meshSlabValue >= 100)); +this.frontOnly = this.renderLow || this.mesh.frontOnly && !this.tm.slabEnabled && allowFrontOnly; +this.isShell = this.mesh.isShell && allowFrontOnly; +this.screens = this.vwr.allocTempScreens(this.vertexCount); +this.p3Screens = this.vwr.allocTempPoints(this.vertexCount); +if (this.frontOnly || this.isShell) this.transformedVectors = this.vwr.gdata.getTransformedVertexVectors(); +if (this.transformedVectors == null) this.frontOnly = this.isShell = false; +}return true; +}); +Clazz.defineMethod(c$, "setColix", +function(colix){ +if (this.isGhostPass) return true; +if (this.volumeRender && !this.isTranslucent) colix = JU.C.getColixTranslucent3(colix, true, 0.8); +this.colix = colix; +if (JU.C.isColixLastAvailable(colix)) this.vwr.gdata.setColor(this.mesh.color); +return this.g3d.setC(colix); +}, "~N"); +Clazz.defineMethod(c$, "isPolygonDisplayable", +function(i){ +return true; +}, "~N"); +Clazz.defineMethod(c$, "render2", +function(generateSet){ +this.render2b(generateSet); +}, "~B"); +Clazz.defineMethod(c$, "render2b", +function(generateSet){ +if (!this.g3d.setC(this.isGhostPass ? this.mesh.slabColix : this.colix)) return; +if (this.renderLow || this.mesh.showPoints || this.mesh.pc <= 0) this.renderPoints(); +if (!this.renderLow && (this.isGhostPass ? this.mesh.slabMeshType == 1073742018 : this.mesh.drawTriangles)) this.renderTriangles(false, this.showTriangles, false); +if (!this.renderLow && this.mesh.pc > 0 && (this.isGhostPass ? this.mesh.slabMeshType == 1073741938 : this.mesh.fillTriangles)) this.renderTriangles(true, this.showTriangles, generateSet); +}, "~B"); +Clazz.defineMethod(c$, "renderPoints", +function(){ +if (!this.mesh.isDrawPolygon || this.mesh.pc < 0) { +for (var i = this.vertexCount; --i >= 0; ) if (!this.frontOnly || this.normixes == null || this.isVisibleNormix(this.normixes[i])) this.drawPoint(i, false); + +return; +}var polygonIndexes = this.mesh.pis; +var bsPoints = JU.BS.newN(this.mesh.vc); +if (this.haveBsDisplay) { +bsPoints.setBits(0, this.mesh.vc); +bsPoints.andNot(this.mesh.bsDisplay); +}for (var i = this.mesh.pc; --i >= 0; ) { +if (!this.isPolygonDisplayable(i)) continue; +var p = polygonIndexes[i]; +if (this.frontOnly && !this.isVisibleNormix(this.normixes[i])) continue; +for (var j = p.length - 1; --j >= 0; ) { +var pt = p[j]; +if (bsPoints.get(pt)) continue; +bsPoints.set(pt); +this.drawPoint(pt, true); +} +} +}); +Clazz.defineMethod(c$, "drawPoint", +function(pt, forTriangle){ +if (this.renderLow && forTriangle) { +var s = this.screens[pt]; +this.g3d.drawPixel(s.x, s.y, s.z); +} else if (this.mesh.pc >= 0) { +this.drawMeshSphere(this.screens[pt]); +} else { +this.drawEdge(pt, pt, false, this.vertices[pt], this.vertices[pt], this.screens[pt], null); +}}, "~N,~B"); +Clazz.defineMethod(c$, "drawMeshSphere", +function(pt){ +this.g3d.fillSphereI(4, pt); +}, "JU.P3i"); +Clazz.defineMethod(c$, "renderTriangles", +function(fill, iShowTriangles, generateSet){ +this.g3d.addRenderer(1073742182); +var polygons = this.mesh.pis; +this.colix = (this.isGhostPass ? this.mesh.slabColix : this.mesh.colix); +if (this.isTranslucentInherit) this.colix = JU.C.copyColixTranslucency(this.mesh.slabColix, this.mesh.colix); +this.g3d.setC(this.colix); +if (generateSet) { +if (this.frontOnly && fill) this.frontOnly = false; +this.bsPolygonsToExport.clearAll(); +}for (var i = this.mesh.pc; --i >= 0; ) { +if (!this.isPolygonDisplayable(i)) continue; +var polygon = polygons[i]; +var iA = polygon[0]; +var iB = polygon[1]; +var iC = polygon[2]; +if (iShowTriangles) this.setColix((Math.round(Math.random() * 10) + 5)); +if (this.haveBsDisplay && (!this.mesh.bsDisplay.get(iA) || !this.mesh.bsDisplay.get(iB) || !this.mesh.bsDisplay.get(iC))) continue; +if (iB == iC) { +this.drawEdge(iA, iB, fill, this.vertices[iA], this.vertices[iB], this.screens[iA], this.screens[iB]); +continue; +}var check; +if (this.mesh.isDrawPolygon) { +var normix = this.normixes[i]; +if (this.frontOnly && !this.isVisibleNormix(normix)) continue; +if (fill) { +this.g3d.fillTriangle3CNBits(this.p3Screens[iA], this.colix, normix, this.p3Screens[iB], this.colix, normix, this.p3Screens[iC], this.colix, normix, true); +continue; +}check = polygon[3]; +if (iShowTriangles) check = 7; +if ((check & 1) == 1) this.drawEdge(iA, iB, true, this.vertices[iA], this.vertices[iB], this.screens[iA], this.screens[iB]); +if ((check & 2) == 2) this.drawEdge(iB, iC, true, this.vertices[iB], this.vertices[iC], this.screens[iB], this.screens[iC]); +if ((check & 4) == 4) this.drawEdge(iA, iC, true, this.vertices[iA], this.vertices[iC], this.screens[iA], this.screens[iC]); +continue; +}var nA = this.normixes[iA]; +var nB = this.normixes[iB]; +var nC = this.normixes[iC]; +check = (this.frontOnly || this.isShell ? this.checkFront(nA, nB, nC) : 7); +if (fill && check != 7) continue; +switch (polygon.length) { +case 3: +if (fill) { +if (generateSet) { +this.bsPolygonsToExport.set(i); +continue; +}this.g3d.fillTriangle3CNBits(this.p3Screens[iA], this.colix, nA, this.p3Screens[iB], this.colix, nB, this.p3Screens[iC], this.colix, nC, false); +continue; +}this.drawTriangleBits(this.p3Screens[iA], this.colix, this.p3Screens[iB], this.colix, this.p3Screens[iC], this.colix, check, 1); +continue; +case 4: +var iD = polygon[3]; +var nD = this.normixes[iD]; +if (this.frontOnly && (check != 7 || !this.isVisibleNormix(nD))) continue; +if (fill) { +if (generateSet) { +this.bsPolygonsToExport.set(i); +continue; +}this.g3d.fillTriangle3CNBits(this.p3Screens[iA], this.colix, nA, this.p3Screens[iB], this.colix, nB, this.p3Screens[iC], this.colix, nC, false); +this.g3d.fillTriangle3CNBits(this.p3Screens[iA], this.colix, nA, this.p3Screens[iC], this.colix, nC, this.p3Screens[iD], this.colix, nD, false); +continue; +}this.vwr.gdata.drawQuadrilateralBits(this.g3d, this.colix, this.p3Screens[iA], this.p3Screens[iB], this.p3Screens[iC], this.p3Screens[iD]); +} +} +if (generateSet) this.exportSurface(this.colix); +}, "~B,~B,~B"); +Clazz.defineMethod(c$, "isVisibleNormix", +function(normix){ +return (normix < 0 || this.transformedVectors[normix].z >= 0); +}, "~N"); +Clazz.defineMethod(c$, "drawTriangleBits", +function(screenA, colixA, screenB, colixB, screenC, colixC, check, diam){ +if (!this.antialias && diam == 1) { +this.vwr.gdata.drawTriangleBits(this.g3d, screenA, colixA, screenB, colixB, screenC, colixC, check); +return; +}if (this.antialias) diam <<= 1; +if ((check & 1) == 1) this.g3d.fillCylinderBits2(colixA, colixB, 1, diam, screenA, screenB); +if ((check & 2) == 2) this.g3d.fillCylinderBits2(colixB, colixC, 1, diam, screenB, screenC); +if ((check & 4) == 4) this.g3d.fillCylinderBits2(colixA, colixC, 1, diam, screenA, screenC); +}, "JU.P3,~N,JU.P3,~N,JU.P3,~N,~N,~N"); +Clazz.defineMethod(c$, "drawTriangle", +function(screenA, colixA, screenB, colixB, screenC, colixC, check, diam){ +if (!this.antialias && diam == 1) { +this.g3d.drawTriangle3C(screenA, colixA, screenB, colixB, screenC, colixC, check); +return; +}if (this.antialias) diam <<= 1; +if ((check & 1) == 1) this.g3d.fillCylinderXYZ(colixA, colixB, 1, diam, screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z); +if ((check & 2) == 2) this.g3d.fillCylinderXYZ(colixB, colixC, 1, diam, screenB.x, screenB.y, screenB.z, screenC.x, screenC.y, screenC.z); +if ((check & 4) == 4) this.g3d.fillCylinderXYZ(colixA, colixC, 1, diam, screenA.x, screenA.y, screenA.z, screenC.x, screenC.y, screenC.z); +}, "JU.P3i,~N,JU.P3i,~N,JU.P3i,~N,~N,~N"); +Clazz.defineMethod(c$, "checkFront", +function(nA, nB, nC){ +var check = 7; +if (this.transformedVectors[nA].z < 0) check ^= 1; +if (this.transformedVectors[nB].z < 0) check ^= 2; +if (this.transformedVectors[nC].z < 0) check ^= 4; +return check; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "drawEdge", +function(iA, iB, fill, vA, vB, sA, sB){ +var endCap = (iA != iB && !fill ? 0 : this.width < 0 || this.width == -0.0 || iA != iB && this.isTranslucent ? 2 : 3); +if (this.width == 0) { +if (this.diameter == 0) this.diameter = (this.mesh.diameter > 0 ? this.mesh.diameter : iA == iB ? 7 : 3); +if (this.exportType == 1) { +this.pt1f.ave(vA, vB); +this.tm.transformPtScr(this.pt1f, this.pt1i); +}if (iA == iB) { +this.pt1f.set(sA.x, sA.y, sA.z); +this.g3d.fillSphereBits(this.diameter, this.pt1f); +return; +}} else { +this.pt1f.ave(vA, vB); +this.tm.transformPtScr(this.pt1f, this.pt1i); +if (this.width < 0 && this.allowDashed) { +this.diameter = -1; +} else { +var mad = Clazz.doubleToInt(Math.floor(Math.abs(this.width) * 1000)); +this.diameter = Clazz.floatToInt(this.vwr.tm.scaleToScreen(this.pt1i.z, mad)); +}}if (this.diameter == 0) this.diameter = 1; +this.tm.transformPt2Df(vA, this.pt1f); +this.tm.transformPt2Df(vB, this.pt2f); +if (this.diameter == -1) { +this.g3d.drawLineAB(this.pt1f, this.pt2f); +} else if (this.diameter < 0) { +var idash = -this.diameter; +this.g3d.drawDashedLineBits(idash << 1, idash, this.pt1f, this.pt2f); +} else { +this.g3d.fillCylinderBits(endCap, this.diameter, this.pt1f, this.pt2f); +}}, "~N,~N,~B,JU.T3,JU.T3,JU.P3i,JU.P3i"); +Clazz.defineMethod(c$, "exportSurface", +function(colix){ +this.mesh.normals = this.mesh.getNormals(this.vertices, null); +this.mesh.bsPolygons = this.bsPolygonsToExport; +this.mesh.offset = this.latticeOffset; +this.g3d.drawSurface(this.mesh, colix); +this.mesh.normals = null; +this.mesh.bsPolygons = null; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/RepaintManager.js b/config/plugins/visualizations/jmol/static/j2s/J/render/RepaintManager.js new file mode 100755 index 000000000000..c3ab9ed3a4ec --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/RepaintManager.js @@ -0,0 +1,180 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.api.JmolRepaintManager", "JU.BS"], "J.render.RepaintManager", ["J.api.Interface", "JU.Logger", "JV.JC", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.shapeManager = null; +this.renderers = null; +this.bsTranslucent = null; +this.holdRepaint = 0; +this.repaintPending = false; +Clazz.instantialize(this, arguments);}, J.render, "RepaintManager", null, J.api.JmolRepaintManager); +Clazz.prepareFields (c$, function(){ +this.bsTranslucent = JU.BS.newN(37); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "set", +function(vwr, shapeManager){ +this.vwr = vwr; +this.shapeManager = shapeManager; +}, "JV.Viewer,JV.ShapeManager"); +Clazz.overrideMethod(c$, "isRepaintPending", +function(){ +return this.repaintPending; +}); +Clazz.overrideMethod(c$, "pushHoldRepaint", +function(why){ +++this.holdRepaint; +}, "~S"); +Clazz.overrideMethod(c$, "popHoldRepaint", +function(andRepaint, why){ +if (why != null && why.startsWith("CLEAR HOLD")) { +this.holdRepaint = 0; +andRepaint = true; +}--this.holdRepaint; +if (this.holdRepaint <= 0) { +this.holdRepaint = 0; +if (andRepaint) { +this.repaintPending = true; +this.repaintNow(why); +}}}, "~B,~S"); +Clazz.overrideMethod(c$, "requestRepaintAndWait", +function(why){ +var jmol = null; +if (JV.Viewer.isJS && !JV.Viewer.isSwingJS) { +{ +jmol = (self.Jmol && Jmol.repaint ? Jmol : null) +}}if (jmol == null) { +try { +this.repaintNow(why); +if (!JV.Viewer.isJS) this.wait(this.vwr.g.repaintWaitMs); +if (this.repaintPending) { +JU.Logger.error("repaintManager requestRepaintAndWait timeout"); +this.repaintDone(); +}} catch (e) { +if (Clazz.exceptionOf(e,"InterruptedException")){ +System.out.println("repaintManager requestRepaintAndWait interrupted thread=" + Thread.currentThread().getName()); +} else { +throw e; +} +} +} else { +jmol.repaint(this.vwr.html5Applet, false); +this.repaintDone(); +}}, "~S"); +Clazz.overrideMethod(c$, "repaintIfReady", +function(why){ +if (this.repaintPending) return false; +this.repaintPending = true; +if (this.holdRepaint == 0) this.repaintNow(why); +return true; +}, "~S"); +Clazz.defineMethod(c$, "repaintNow", +function(why){ +if (!this.vwr.haveDisplay) return; +this.vwr.apiPlatform.repaint(this.vwr.display); +}, "~S"); +Clazz.overrideMethod(c$, "repaintDone", +function(){ +this.repaintPending = false; +{ +}}); +Clazz.overrideMethod(c$, "clear", +function(iShape){ +if (this.renderers == null) return; +if (iShape >= 0) this.renderers[iShape] = null; + else for (var i = 0; i < 37; ++i) this.renderers[i] = null; + +}, "~N"); +Clazz.defineMethod(c$, "getRenderer", +function(shapeID){ +if (this.renderers[shapeID] != null) return this.renderers[shapeID]; +var className = JV.JC.getShapeClassName(shapeID, true) + "Renderer"; +var renderer; +if ((renderer = J.api.Interface.getInterface(className, this.vwr, "render")) == null) return null; +renderer.setViewerG3dShapeID(this.vwr, shapeID); +return this.renderers[shapeID] = renderer; +}, "~N"); +Clazz.overrideMethod(c$, "render", +function(gdata, modelSet, isFirstPass, navMinMax){ +var g3d = gdata; +if (this.renderers == null) this.renderers = new Array(37); +this.getAllRenderers(); +try { +var logTime = this.vwr.getBoolean(603979934); +g3d.renderBackground(null); +if (isFirstPass) { +this.bsTranslucent.clearAll(); +if (navMinMax != null) g3d.renderCrossHairs(navMinMax, this.vwr.getScreenWidth(), this.vwr.getScreenHeight(), this.vwr.tm.getNavigationOffset(), this.vwr.tm.navigationDepthPercent); +var band = this.vwr.getRubberBandSelection(); +if (band != null && g3d.setC(this.vwr.cm.colixRubberband)) g3d.drawRect(band.x, band.y, 0, 0, band.width, band.height); +this.vwr.noFrankEcho = true; +}var msg = null; +for (var i = 0; i < 37 && gdata.currentlyRendering; ++i) { +var shape = this.shapeManager.getShape(i); +if (shape == null) continue; +if (logTime) { +msg = "rendering " + JV.JC.getShapeClassName(i, false); +JU.Logger.startTimer(msg); +}if ((isFirstPass || this.bsTranslucent.get(i)) && this.getRenderer(i).renderShape(g3d, modelSet, shape)) this.bsTranslucent.set(i); +if (logTime) JU.Logger.checkTimer(msg, false); +} +g3d.renderAllStrings(null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +if (this.vwr.async && "Interface".equals(e.getMessage())) throw new NullPointerException(); +JU.Logger.error("rendering error? " + e); +} else { +throw e; +} +} +}, "JU.GData,JM.ModelSet,~B,~A"); +Clazz.defineMethod(c$, "getAllRenderers", +function(){ +var isOK = true; +for (var i = 0; i < 37; ++i) { +if (this.shapeManager.getShape(i) == null || this.getRenderer(i) != null) continue; +isOK = this.repaintPending = !this.vwr.async; +} +if (!isOK) throw new NullPointerException(); +}); +Clazz.overrideMethod(c$, "renderExport", +function(gdata, modelSet, params){ +var isOK; +this.shapeManager.finalizeAtoms(null, true); +var exporter3D = this.vwr.initializeExporter(params); +isOK = (exporter3D != null); +if (!isOK) { +JU.Logger.error("Cannot export " + params.get("type")); +return null; +}if (this.renderers == null) this.renderers = new Array(37); +this.getAllRenderers(); +var msg = null; +try { +var logTime = this.vwr.getBoolean(603979934); +exporter3D.renderBackground(exporter3D); +for (var i = 0; i < 37; ++i) { +var shape = this.shapeManager.getShape(i); +if (shape == null) continue; +if (logTime) { +msg = "rendering " + JV.JC.getShapeClassName(i, false); +JU.Logger.startTimer(msg); +}this.getRenderer(i).renderShape(exporter3D, modelSet, shape); +if (logTime) JU.Logger.checkTimer(msg, false); +} +exporter3D.renderAllStrings(exporter3D); +msg = exporter3D.finalizeOutput(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +JU.Logger.error("rendering error? " + e); +} else { +throw e; +} +} +return msg; +}, "JU.GData,JM.ModelSet,java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/ShapeRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/ShapeRenderer.js new file mode 100755 index 000000000000..826cf1c57147 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/ShapeRenderer.js @@ -0,0 +1,48 @@ +Clazz.declarePackage("J.render"); +Clazz.load(null, "J.render.ShapeRenderer", ["JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.tm = null; +this.g3d = null; +this.ms = null; +this.shape = null; +this.myVisibilityFlag = 0; +this.shapeID = 0; +this.colix = 0; +this.mad = 0; +this.exportType = 0; +this.isExport = false; +Clazz.instantialize(this, arguments);}, J.render, "ShapeRenderer", null); +Clazz.defineMethod(c$, "initRenderer", +function(){ +}); +Clazz.defineMethod(c$, "setViewerG3dShapeID", +function(vwr, shapeID){ +this.vwr = vwr; +this.tm = vwr.tm; +this.shapeID = shapeID; +this.myVisibilityFlag = JV.JC.getShapeVisibilityFlag(shapeID); +this.initRenderer(); +}, "JV.Viewer,~N"); +Clazz.defineMethod(c$, "renderShape", +function(g3d, modelSet, shape){ +this.setup(g3d, modelSet, shape); +var needsTranslucent = this.render(); +this.exportType = 0; +this.isExport = false; +return needsTranslucent; +}, "J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape"); +Clazz.defineMethod(c$, "setup", +function(g3d, modelSet, shape){ +this.g3d = g3d; +this.ms = modelSet; +this.shape = shape; +this.exportType = g3d.getExportType(); +this.isExport = (this.exportType != 0); +}, "J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape"); +Clazz.defineMethod(c$, "isVisibleForMe", +function(a){ +return a.isVisible(this.myVisibilityFlag | 9); +}, "JM.Atom"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/StarsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/StarsRenderer.js new file mode 100755 index 000000000000..4d9761050244 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/StarsRenderer.js @@ -0,0 +1,50 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.ShapeRenderer"], "J.render.StarsRenderer", ["J.shape.Shape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mar = 0; +this.width = 0; +Clazz.instantialize(this, arguments);}, J.render, "StarsRenderer", J.render.ShapeRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +var stars = this.shape; +if (stars.mads == null) return false; +var needTranslucent = false; +this.mar = Clazz.floatToInt(this.vwr.getFloat(570425403) * 1000); +if (this.mar == 0 && (this.g3d.isAntialiased() || this.isExport)) this.mar = 50; +var atoms = this.ms.at; +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (!this.isVisibleForMe(atom)) continue; +this.colix = J.shape.Shape.getColix(stars.colixes, i, atom); +if (this.g3d.setC(this.colix)) this.render1(atom, stars.mads[i]); + else needTranslucent = true; +} +return needTranslucent; +}); +Clazz.defineMethod(c$, "render1", +function(atom, mad){ +var x = atom.sX; +var y = atom.sY; +var z = atom.sZ; +var d = Clazz.floatToInt(this.vwr.tm.scaleToScreen(z, mad)); +d -= (d & 1) ^ 1; +var r = Clazz.doubleToInt(d / 2); +if (r < 1) r = 1; +if (this.mar > 0) { +this.width = Clazz.floatToInt(this.vwr.tm.scaleToScreen(z, this.mar)); +if (this.width == 0) this.width = 1; +if (this.width == 1 && this.g3d.isAntialiased()) this.width = 2; +} else { +this.drawLine(x - r - 1, y + 1, z, x - r - 1 + d, y + 1, z); +this.drawLine(x + 1, y + 1 - r, z, x + 1, y + 1 - r + d, z); +}this.drawLine(x - r, y, z, x - r + d, y, z); +this.drawLine(x, y - r, z, x, y - r + d, z); +this.drawLine(x, y, z - r, x, y, z - r + d); +}, "JM.Atom,~N"); +Clazz.defineMethod(c$, "drawLine", +function(xA, yA, zA, xB, yB, zB){ +if (this.mar > 0) this.g3d.fillCylinderXYZ(this.colix, this.colix, 2, this.width, xA, yA, zA, xB, yB, zB); + else this.g3d.drawLineXYZ(xA, yA, zA, xB, yB, zB); +}, "~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/SticksRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/SticksRenderer.js new file mode 100755 index 000000000000..87c05ac31cf3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/SticksRenderer.js @@ -0,0 +1,413 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.FontLineShapeRenderer", "JU.BS", "$.P3", "$.V3"], "J.render.SticksRenderer", ["JU.A4", "$.M3", "J.c.PAL", "JU.C", "$.Edge"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.showMultipleBonds = false; +this.multipleBondSpacing = 0; +this.multipleBondRadiusFactor = 0; +this.bondsPerp = false; +this.useBananas = false; +this.modeMultipleBond = 0; +this.isCartesian = false; +this.endcaps = 0; +this.ssbondsBackbone = false; +this.hbondsBackbone = false; +this.bondsBackbone = false; +this.hbondsSolid = false; +this.a = null; +this.b = null; +this.bond = null; +this.xA = 0; +this.yA = 0; +this.zA = 0; +this.xB = 0; +this.yB = 0; +this.zB = 0; +this.dx = 0; +this.dy = 0; +this.mag2d = 0; +this.bondOrder = 0; +this.wireframeOnly = false; +this.isAntialiased = false; +this.slabbing = false; +this.slabByAtom = false; +this.x = null; +this.y = null; +this.z = null; +this.p1 = null; +this.p2 = null; +this.bsForPass2 = null; +this.isPass2 = false; +this.xAxis1 = 0; +this.yAxis1 = 0; +this.xAxis2 = 0; +this.yAxis2 = 0; +this.dxStep = 0; +this.dyStep = 0; +this.rot = null; +this.a4 = null; +Clazz.instantialize(this, arguments);}, J.render, "SticksRenderer", J.render.FontLineShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.x = new JU.V3(); +this.y = new JU.V3(); +this.z = new JU.V3(); +this.p1 = new JU.P3(); +this.p2 = new JU.P3(); +this.bsForPass2 = JU.BS.newN(64); +}); +Clazz.overrideMethod(c$, "render", +function(){ +var bonds = this.ms.bo; +if (bonds == null) return false; +this.isPass2 = this.vwr.gdata.isPass2; +if (!this.isPass2) this.bsForPass2.clearAll(); +this.slabbing = this.tm.slabEnabled; +this.slabByAtom = this.vwr.getBoolean(603979939); +this.endcaps = 3; +this.dashDots = (this.vwr.getBoolean(603979893) ? J.render.FontLineShapeRenderer.sixdots : J.render.FontLineShapeRenderer.dashes); +this.isCartesian = (this.exportType == 1); +this.getMultipleBondSettings(false); +this.wireframeOnly = !this.vwr.checkMotionRendering(1677721602); +this.ssbondsBackbone = this.vwr.getBoolean(603979952); +this.hbondsBackbone = this.vwr.getBoolean(603979852); +this.bondsBackbone = new Boolean (this.hbondsBackbone | this.ssbondsBackbone).valueOf(); +this.hbondsSolid = this.vwr.getBoolean(603979854); +this.isAntialiased = this.g3d.isAntialiased(); +var needTranslucent = false; +if (this.isPass2) { +if (!this.isExport) for (var i = this.bsForPass2.nextSetBit(0); i >= 0; i = this.bsForPass2.nextSetBit(i + 1)) { +this.bond = bonds[i]; +this.renderBond(); +} +} else { +for (var i = this.ms.bondCount; --i >= 0; ) { +this.bond = bonds[i]; +if ((this.bond.shapeVisibilityFlags & this.myVisibilityFlag) != 0 && this.renderBond()) { +needTranslucent = true; +this.bsForPass2.set(i); +}} +}return needTranslucent; +}); +Clazz.defineMethod(c$, "getMultipleBondSettings", +function(isPymol){ +this.useBananas = (this.vwr.getBoolean(603979886) && !isPymol); +this.multipleBondSpacing = (isPymol ? 0.15 : this.vwr.getFloat(570425370)); +this.multipleBondRadiusFactor = (isPymol ? 0.4 : this.vwr.getFloat(570425369)); +this.bondsPerp = (this.useBananas || this.multipleBondSpacing > 0 && this.multipleBondRadiusFactor < 0); +if (this.useBananas) this.multipleBondSpacing = (this.multipleBondSpacing < 0 ? -this.multipleBondSpacing * 0.4 : this.multipleBondSpacing); +this.multipleBondRadiusFactor = Math.abs(this.multipleBondRadiusFactor); +if (this.multipleBondSpacing == 0 && this.isCartesian) this.multipleBondSpacing = 0.2; +this.modeMultipleBond = this.vwr.g.modeMultipleBond; +this.showMultipleBonds = (this.multipleBondSpacing != 0 && this.modeMultipleBond != 0 && this.vwr.getBoolean(603979928)); +}, "~B"); +Clazz.defineMethod(c$, "renderBond", +function(){ +var atomA0; +var atomB0; +this.a = atomA0 = this.bond.atom1; +this.b = atomB0 = this.bond.atom2; +var order = this.bond.order & 131071; +if (this.bondsBackbone) { +if (this.ssbondsBackbone && (order & 256) != 0) { +this.a = this.a.group.getLeadAtomOr(this.a); +this.b = this.b.group.getLeadAtomOr(this.b); +} else if (this.hbondsBackbone && JU.Edge.isOrderH(order)) { +this.a = this.a.group.getLeadAtomOr(this.a); +this.b = this.b.group.getLeadAtomOr(this.b); +}}if (!this.isPass2 && (!this.a.isVisible(9) || !this.b.isVisible(9) || !this.g3d.isInDisplayRange(this.a.sX, this.a.sY) || !this.g3d.isInDisplayRange(this.b.sX, this.b.sY))) return false; +if (this.slabbing) { +var ba = this.vwr.gdata.isClippedZ(this.a.sZ); +if (ba && this.vwr.gdata.isClippedZ(this.b.sZ) || this.slabByAtom && (ba || this.vwr.gdata.isClippedZ(this.b.sZ))) return false; +}this.zA = this.a.sZ; +this.zB = this.b.sZ; +if (this.zA == 1 || this.zB == 1) return false; +this.colixA = atomA0.colixAtom; +this.colixB = atomB0.colixAtom; +if (((this.colix = this.bond.colix) & -30721) == 2) { +this.colix = (this.colix & 30720); +this.colixA = JU.C.getColixInherited((this.colix | this.vwr.cm.getColixAtomPalette(atomA0, J.c.PAL.CPK.id)), this.colixA); +this.colixB = JU.C.getColixInherited((this.colix | this.vwr.cm.getColixAtomPalette(atomB0, J.c.PAL.CPK.id)), this.colixB); +} else { +this.colixA = JU.C.getColixInherited(this.colix, this.colixA); +this.colixB = JU.C.getColixInherited(this.colix, this.colixB); +}var needTranslucent = false; +if (!this.isExport && !this.isPass2) { +var doA = !JU.C.renderPass2(this.colixA); +var doB = !JU.C.renderPass2(this.colixB); +if (!doA || !doB) { +if (!doA && !doB && !needTranslucent) { +this.g3d.setC(!doA ? this.colixA : this.colixB); +return true; +}needTranslucent = true; +}}this.bondOrder = order & 131071; +if ((this.bondOrder & 224) == 0) { +if ((this.bondOrder & 256) != 0) this.bondOrder &= -257; +if ((this.bondOrder & 1023) != 0) { +if (!this.showMultipleBonds || (this.modeMultipleBond == 2 && this.mad > 500) || (this.bondOrder & 98304) == 65536) { +this.bondOrder = 1; +}}}var mask = 0; +switch (this.bondOrder) { +case 1025: +case 1041: +case 1057: +this.bondOrder = 1; +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +break; +case 17: +case 513: +this.bondOrder = 1; +mask = (order == 513 ? 0 : 1); +break; +case 515: +case 514: +this.bondOrder = 2; +mask = (order == 515 ? this.getAromaticDottedBondMask() : 0); +break; +default: +if ((this.bondOrder & 224) != 0) { +this.bondOrder = JU.Edge.getPartialBondOrder(order); +mask = JU.Edge.getPartialBondDotted(order); +} else if (JU.Edge.isOrderH(this.bondOrder)) { +this.bondOrder = 1; +if (!this.hbondsSolid) mask = -1; +} else if (this.bondOrder == 32768) { +this.bondOrder = 1; +} else if ((this.bondOrder & 98304) == 98304) { +this.getMultipleBondSettings(true); +this.bondOrder &= 3; +mask = -2; +}} +this.xA = this.a.sX; +this.yA = this.a.sY; +this.xB = this.b.sX; +this.yB = this.b.sY; +this.mad = this.bond.mad; +if (this.multipleBondRadiusFactor > 0 && this.bondOrder > 1) this.mad *= this.multipleBondRadiusFactor; +this.dx = this.xB - this.xA; +this.dy = this.yB - this.yA; +this.width = Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.doubleToInt((this.zA + this.zB) / 2), this.mad)); +if (this.wireframeOnly && this.width > 0) this.width = 1; +if (!this.isCartesian) { +this.asLineOnly = (this.width <= 1); +if (this.asLineOnly && (this.isAntialiased)) { +this.width = 3; +this.asLineOnly = false; +}}var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +switch (mask) { +case -2: +this.drawBond(0); +this.getMultipleBondSettings(false); +break; +case -1: +J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, J.render.FontLineShapeRenderer.hDashes, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); +break; +default: +switch (this.bondOrder) { +case 4: +{ +this.bondOrder = 2; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz.doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.30; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.drawBond(mask >> 2); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +case 5: +{ +this.bondOrder = 3; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz.doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.20; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.multipleBondSpacing *= 1.5; +this.drawBond(mask >> 3); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +case 6: +{ +this.bondOrder = 4; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz.doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.15; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.multipleBondSpacing *= 1.5; +this.drawBond(mask >> 4); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +default: +this.drawBond(mask); +} +break; +} +return needTranslucent; +}); +Clazz.defineMethod(c$, "drawBond", +function(dottedMask){ +var isDashed = (dottedMask & 1) != 0; +var endcaps = ((this.colixA & 30720) == 16384 || (this.colixB & 30720) == 16384 ? 2 : this.endcaps); +if (this.isCartesian && this.bondOrder == 1 && !isDashed) { +this.g3d.drawBond(this.a, this.b, this.colixA, this.colixB, endcaps, this.mad, -1); +return; +}var isEndOn = (this.dx == 0 && this.dy == 0); +if (isEndOn && this.asLineOnly && !this.isCartesian) return; +var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +var doFixedSpacing = (this.bondOrder > 1 && this.multipleBondSpacing > 0); +var isPiBonded = doFixedSpacing && (this.vwr.getHybridizationAndAxes(this.a.i, this.z, this.x, "pz") != null || this.vwr.getHybridizationAndAxes(this.b.i, this.z, this.x, "pz") != null) && !Float.isNaN(this.x.x); +if (isEndOn && !doFixedSpacing) { +var space = Clazz.doubleToInt(this.width / 8) + 3; +var step = this.width + space; +var y = this.yA - Clazz.doubleToInt((this.bondOrder - 1) * step / 2); +do { +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xA, y, this.zA, this.xB, y, this.zB, renderD, this.asLineOnly); +y += step; +} while (--this.bondOrder > 0); +return; +}if (this.bondOrder == 1) { +if (isDashed) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, renderD, this.asLineOnly); +return; +}if (doFixedSpacing) { +if (!isPiBonded) this.z.setT(JU.P3.getUnlikely()); +this.x.sub2(this.b, this.a); +this.y.cross(this.x, this.z); +this.y.normalize(); +if (Float.isNaN(this.y.x)) { +this.z.setT(JU.P3.getUnlikely()); +this.y.cross(this.x, this.z); +this.y.cross(this.y, this.x); +this.y.normalize(); +}if (this.bondsPerp) this.y.cross(this.y, this.x); +this.y.scale(this.multipleBondSpacing); +this.x.setT(this.y); +this.x.scale((this.bondOrder - 1) / 2); +if (this.useBananas) { +this.drawBanana(this.a, this.b, this.x, 0); +switch (this.bondOrder) { +case 4: +this.drawBanana(this.a, this.b, this.x, 90); +this.drawBanana(this.a, this.b, this.x, -90); +case 2: +default: +this.drawBanana(this.a, this.b, this.x, 180); +break; +case 3: +this.drawBanana(this.a, this.b, this.x, 120); +this.drawBanana(this.a, this.b, this.x, -120); +break; +} +return; +}this.p1.sub2(this.a, this.x); +this.p2.sub2(this.b, this.x); +while (true) { +if (this.isCartesian) { +this.g3d.drawBond(this.p1, this.p2, this.colixA, this.colixB, endcaps, this.mad, -2); +} else { +this.tm.transformPtScr(this.p1, this.s1); +this.tm.transformPtScr(this.p2, this.s2); +if (isDashed) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.s1.x, this.s1.y, this.s1.z, this.s2.x, this.s2.y, this.s2.z, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.s1.x, this.s1.y, this.s1.z, this.s2.x, this.s2.y, this.s2.z, renderD, this.asLineOnly); +}dottedMask >>= 1; +isDashed = (dottedMask & 1) != 0; +if (--this.bondOrder <= 0) break; +this.p1.add(this.y); +this.p2.add(this.y); +this.stepAxisCoordinates(); +} +return; +}var dxB = this.dx * this.dx; +var dyB = this.dy * this.dy; +this.mag2d = Math.round(Math.sqrt(dxB + dyB)); +this.resetAxisCoordinates(); +if (this.isCartesian && this.bondOrder == 3) { +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +this.stepAxisCoordinates(); +this.x.sub2(this.b, this.a); +this.x.scale(0.05); +this.p1.sub2(this.a, this.x); +this.p2.add2(this.b, this.x); +this.g3d.drawBond(this.p1, this.p2, this.colixA, this.colixB, endcaps, this.mad, -2); +this.stepAxisCoordinates(); +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +return; +}while (true) { +if ((dottedMask & 1) != 0) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +dottedMask >>= 1; +if (--this.bondOrder <= 0) break; +this.stepAxisCoordinates(); +} +}, "~N"); +Clazz.defineMethod(c$, "resetAxisCoordinates", +function(){ +var space = this.mag2d >> 3; +if (this.multipleBondSpacing != -1 && this.multipleBondSpacing < 0) space *= -this.multipleBondSpacing; +var step = this.width + space; +this.dxStep = Clazz.doubleToInt(step * this.dy / this.mag2d); +this.dyStep = Clazz.doubleToInt(step * -this.dx / this.mag2d); +this.xAxis1 = this.xA; +this.yAxis1 = this.yA; +this.xAxis2 = this.xB; +this.yAxis2 = this.yB; +var f = (this.bondOrder - 1); +this.xAxis1 -= Clazz.doubleToInt(this.dxStep * f / 2); +this.yAxis1 -= Clazz.doubleToInt(this.dyStep * f / 2); +this.xAxis2 -= Clazz.doubleToInt(this.dxStep * f / 2); +this.yAxis2 -= Clazz.doubleToInt(this.dyStep * f / 2); +}); +Clazz.defineMethod(c$, "stepAxisCoordinates", +function(){ +this.xAxis1 += this.dxStep; +this.yAxis1 += this.dyStep; +this.xAxis2 += this.dxStep; +this.yAxis2 += this.dyStep; +}); +Clazz.defineMethod(c$, "getAromaticDottedBondMask", +function(){ +var atomC = this.b.findAromaticNeighbor(this.a.i); +if (atomC == null) return 1; +var dxAC = atomC.sX - this.xA; +var dyAC = atomC.sY - this.yA; +return ((this.dx * dyAC - this.dy * dxAC) < 0 ? 2 : 1); +}); +Clazz.defineMethod(c$, "drawBanana", +function(a, b, x, deg){ +this.g3d.addRenderer(553648143); +this.vectorT.sub2(b, a); +if (this.rot == null) { +this.rot = new JU.M3(); +this.a4 = new JU.A4(); +}this.a4.setVA(this.vectorT, (deg * 3.141592653589793 / 180)); +this.rot.setAA(this.a4); +this.pointT.setT(a); +this.pointT3.setT(b); +this.pointT2.ave(a, b); +this.rot.rotate2(x, this.vectorT); +this.pointT2.add(this.vectorT); +this.tm.transformPtScrT3(a, this.pointT); +this.tm.transformPtScrT3(this.pointT2, this.pointT2); +this.tm.transformPtScrT3(b, this.pointT3); +var w = Math.max(this.width, 1); +this.g3d.setC(this.colixA); +this.g3d.fillHermite(5, w, w, w, this.pointT, this.pointT, this.pointT2, this.pointT3); +this.g3d.setC(this.colixB); +this.g3d.fillHermite(5, w, w, w, this.pointT, this.pointT2, this.pointT3, this.pointT3); +}, "JM.Atom,JM.Atom,JU.V3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/TextRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/TextRenderer.js new file mode 100755 index 000000000000..fd8d7229d351 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/TextRenderer.js @@ -0,0 +1,110 @@ +Clazz.declarePackage("J.render"); +Clazz.load(null, "J.render.TextRenderer", ["JM.Text"], function(){ +var c$ = Clazz.declareType(J.render, "TextRenderer", null); +c$.render = Clazz.defineMethod(c$, "render", +function(vwr, text, g3d, scalePixelsPerMicron, imageFontScaling, boxXY, temp, pTemp, pointerColix, pointerWidth, mode){ +if (text == null || text.image == null && !text.doFormatText && text.lines == null) return false; +var isAbsolute = ((mode & 64) != 0); +var doPointer = ((mode & 1) != 0); +var isAntialiased = ((mode & 4) != 0); +var colix = text.colix; +var showText = g3d.setC(colix); +if (!showText && (text.image == null && (text.bgcolix == 0 || !g3d.setC(text.bgcolix)))) return false; +if (text.isEcho && text.valign == 4) J.render.TextRenderer.calcBarPixelsXYZ(vwr, text, pTemp, false); +text.setPosition(scalePixelsPerMicron, imageFontScaling, isAbsolute, boxXY); +var barPixels = (text.isEcho && text.valign == 4 ? J.render.TextRenderer.calcBarPixelsXYZ(vwr, text, pTemp, false) : text.barPixels); +if (text.image == null) { +if (text.bgcolix != 0) { +if (g3d.setC(text.bgcolix)) J.render.TextRenderer.showBox(g3d, text.colix, Clazz.floatToInt(text.boxX) - (barPixels == 0 ? 0 : barPixels + 4), Clazz.floatToInt(text.boxY) + text.boxYoff2 * 2, text.z + 2, text.zSlab, Clazz.floatToInt(text.boxWidth) + barPixels, Clazz.floatToInt(text.boxHeight), text.fontScale, !text.isEcho); +if (!showText) return false; +}for (var i = 0; i < text.lines.length; i++) { +text.setXYA(temp, i); +if (text.xyz != null) temp[1] += 2; +g3d.drawString(text.lines[i], text.font, Clazz.floatToInt(temp[0]), Clazz.floatToInt(temp[1]), text.z, text.zSlab, text.bgcolix); +} +if (text.barPixels > 0) { +J.render.TextRenderer.renderScale(g3d, text, temp, barPixels, isAntialiased); +}} else { +g3d.drawImage(text.image, Clazz.floatToInt(text.boxX), Clazz.floatToInt(text.boxY), text.z, text.zSlab, text.bgcolix, Clazz.floatToInt(text.boxWidth), Clazz.floatToInt(text.boxHeight)); +}if (!doPointer) return true; +J.render.TextRenderer.drawLineXYZ(g3d, text.atomX, text.atomY, text.atomZ, text.boxX, text.boxY, text.zSlab, text.boxWidth, text.boxHeight, pointerColix, pointerWidth * (isAntialiased ? 2 : 1)); +return true; +}, "JV.Viewer,JM.Text,J.api.JmolRendererInterface,~N,~N,~A,~A,JU.P3i,~N,~N,~N"); +c$.calcBarPixelsXYZ = Clazz.defineMethod(c$, "calcBarPixelsXYZ", +function(vwr, t, pTemp, andSet){ +var barPixels = t.barPixels; +if (t.xyz != null) { +vwr.tm.transformPtScr(t.xyz, pTemp); +if (andSet) t.setXYZs(pTemp.x, pTemp.y, pTemp.z, pTemp.z); +if (barPixels > 0 && vwr.tm.perspectiveDepth) { +var d = vwr.tm.unscaleToScreen(pTemp.z, barPixels); +barPixels = t.barPixelsXYZ = Clazz.floatToInt(barPixels * t.barDistance / d); +}}return barPixels; +}, "JV.Viewer,JM.Text,JU.P3i,~B"); +c$.renderScale = Clazz.defineMethod(c$, "renderScale", +function(g3d, text, temp, barPixels, isAntialiased){ +var z = text.z; +var xoff = (text.xyz == null ? 0 : 2); +var ia = (isAntialiased ? 2 : 1); +var i = 1; +var x1 = xoff + Clazz.floatToInt(temp[0]) - barPixels - i - ia * 2; +var x2 = xoff + Clazz.floatToInt(temp[0]) - i - ia * 2; +var h = Clazz.doubleToInt((text.lineHeight) / 2); +var y = Clazz.floatToInt(temp[1]) - i; +g3d.fillTextRect(x1, y - Clazz.doubleToInt(h / 2) - ia, z, text.zSlab, x2 - x1, 2 * ia); +g3d.fillTextRect(x1, y - Clazz.doubleToInt(h * 2 / 2), z, text.zSlab, 2 * ia, Clazz.doubleToInt(h * 2 / 2)); +g3d.fillTextRect(x2, y - Clazz.doubleToInt(h * 2 / 2), z, text.zSlab, 2 * ia, Clazz.doubleToInt(h * 2 / 2)); +for (var j = 1; j < 10; j++) { +var x1b = x1 + Clazz.doubleToInt(j * barPixels / 10); +var len = (j == 5 ? h : Clazz.doubleToInt(h / 2)); +g3d.fillTextRect(x1b, y - len, z, text.zSlab, 2 * ia, len); +} +}, "J.api.JmolRendererInterface,JM.Text,~A,~N,~B"); +c$.drawLineXYZ = Clazz.defineMethod(c$, "drawLineXYZ", +function(g3d, x0, y0, z0, x1, y1, z1, w, h, pointerColix, pointerWidth){ +var offsetX = x1 - x0; +var offsetY = y1 - y0; +if (offsetX <= 0 && -offsetX <= w && offsetY <= 0 && -offsetY <= h) return; +var setX = (offsetY > 0 || offsetY < -h); +var pt = NaN; +x1 += (setX ? (offsetX > w / 2 ? 0 : offsetX < -w * 3 / 2 ? w : (pt = w / 2)) : (offsetX > 0 ? 0 : w)); +var setY = !Float.isNaN(pt); +y1 += (setY && offsetY > 0 ? 0 : setY && offsetY < -h ? h : h / 2); +if (pointerWidth > 1) { +g3d.fillCylinderXYZ(pointerColix, pointerColix, 2, pointerWidth, x0, y0, z0, Clazz.floatToInt(x1), Clazz.floatToInt(y1), z1); +} else { +g3d.setC(pointerColix); +g3d.drawLineXYZ(x0, y0, z0, Clazz.floatToInt(x1), Clazz.floatToInt(y1), z1); +}}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +c$.renderSimpleLabel = Clazz.defineMethod(c$, "renderSimpleLabel", +function(g3d, font, strLabel, colix, bgcolix, boxXY, z, zSlab, xOffset, yOffset, ascent, descent, pointerColix, pointerWidth, mode){ +var w = font.stringWidth(strLabel) + 8; +var h = ascent + descent + 8; +var x0 = Clazz.floatToInt(boxXY[0]); +var y0 = Clazz.floatToInt(boxXY[1]); +var isAbsolute = ((mode & 64) != 0); +var doPointer = ((mode & 1) != 0); +var isAntialiased = ((mode & 4) != 0); +JM.Text.setBoxXY(w, h, xOffset, yOffset, boxXY, isAbsolute); +var x = boxXY[0]; +var y = boxXY[1]; +if (bgcolix != 0 && g3d.setC(bgcolix)) { +J.render.TextRenderer.showBox(g3d, colix, Clazz.floatToInt(x), Clazz.floatToInt(y), z, zSlab, Clazz.floatToInt(w), Clazz.floatToInt(h), 1, true); +} else { +g3d.setC(colix); +}g3d.drawString(strLabel, font, Clazz.floatToInt(x + 4), Clazz.floatToInt(y + 4 + ascent), z - 1, zSlab, bgcolix); +if (doPointer && (xOffset != 0 || yOffset != 0)) { +J.render.TextRenderer.drawLineXYZ(g3d, x0, y0, zSlab, x, y, zSlab, w, h, pointerColix, pointerWidth * (isAntialiased ? 2 : 1)); +}}, "J.api.JmolRendererInterface,JU.Font,~S,~N,~N,~A,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +c$.showBox = Clazz.defineMethod(c$, "showBox", +function(g3d, colix, x, y, z, zSlab, boxWidth, boxHeight, imageFontScaling, atomBased){ +g3d.fillTextRect(x, y, z, zSlab, boxWidth, boxHeight); +g3d.setC(colix); +if (!atomBased) return; +if (imageFontScaling >= 2) { +g3d.drawRect(x + 3, y + 3, z - 1, zSlab, boxWidth - 6, boxHeight - 6); +} else { +g3d.drawRect(x + 1, y + 1, z - 1, zSlab, boxWidth - 2, boxHeight - 2); +}}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N,~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/render/UccageRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/render/UccageRenderer.js new file mode 100755 index 000000000000..5e58a1c04a53 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/render/UccageRenderer.js @@ -0,0 +1,136 @@ +Clazz.declarePackage("J.render"); +Clazz.load(["J.render.CageRenderer", "JU.P3"], "J.render.UccageRenderer", ["JU.DF", "JU.BoxInfo", "$.C", "$.SimpleUnitCell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.verticesT = null; +this.cellRange = null; +this.offset = null; +this.offsetT = null; +this.unitcell = null; +this.lineheight = 0; +this.xpos = 0; +this.ypos = 0; +Clazz.instantialize(this, arguments);}, J.render, "UccageRenderer", J.render.CageRenderer); +Clazz.prepareFields (c$, function(){ +this.verticesT = new Array(8); +this.cellRange = Clazz.newArray(-1, [ new JU.P3(), new JU.P3()]); +this.offset = new JU.P3(); +this.offsetT = new JU.P3(); +}); +Clazz.overrideMethod(c$, "initRenderer", +function(){ +for (var i = 8; --i >= 0; ) this.verticesT[i] = new JU.P3(); + +this.tickEdges = JU.BoxInfo.uccageTickEdges; +this.draw000 = false; +}); +Clazz.overrideMethod(c$, "render", +function(){ +this.imageFontScaling = this.vwr.imageFontScaling; +this.font3d = this.vwr.gdata.getFont3DScaled((this.shape).font3d, this.imageFontScaling); +var mad10 = this.vwr.getObjectMad10(5); +if (mad10 == 0 || this.vwr.isJmolDataFrame() || this.tm.isNavigating() && this.vwr.getBoolean(603979890)) return false; +this.colix = this.vwr.getObjectColix(5); +var needTranslucent = JU.C.renderPass2(this.colix); +if (!this.isExport && needTranslucent != this.vwr.gdata.isPass2) return needTranslucent; +this.render1(mad10); +return false; +}); +Clazz.defineMethod(c$, "render1", +function(mad10){ +this.g3d.setC(this.colix); +this.unitcell = this.vwr.getCurrentUnitCell(); +if (this.unitcell == null) return; +this.isPolymer = this.unitcell.isPolymer(); +this.isSlab = this.unitcell.isSlab(); +var vertices = this.unitcell.getUnitCellVerticesNoOffset(); +this.offset.setT(this.unitcell.getCartesianOffset()); +this.offsetT.setT(this.unitcell.getFractionalOrigin()); +this.unitcell.toCartesian(this.offsetT, true); +this.offset.sub(this.offsetT); +var hiddenLines = this.vwr.getBoolean(603979856); +var fset = this.unitcell.getUnitCellMultiplier(); +var haveMultiple = (fset != null && !fset.equals(J.render.UccageRenderer.fset0)); +if (!haveMultiple) fset = J.render.UccageRenderer.fset0; +JU.SimpleUnitCell.getCellRange(fset, this.cellRange); +var firstLine; +var allow0; +var allow1; +var scale = Math.abs(fset.z); +var axes = this.vwr.shm.getShape(34); +if (axes != null && this.vwr.areAxesTainted()) axes.reinitShape(); +var axisPoints = (axes == null || this.vwr.getObjectMad10(1) == 0 || axes.axisXY.z != 0 && (axes.axes2 == null || axes.axes2.length == 3) || axes.fixedOrigin != null || axes.fixedOriginUC.lengthSquared() > 0 ? null : axes.axisPoints); +var drawAllLines = (this.isExport || this.vwr.getObjectMad10(1) == 0 || this.vwr.getFloat(570425346) < 2 || axisPoints == null); +var aPoints = axisPoints; +var faces = (hiddenLines ? JU.BoxInfo.facePoints : null); +if (fset.z == 0) { +this.offsetT.setT(this.cellRange[0]); +this.unitcell.toCartesian(this.offsetT, true); +this.offsetT.add(this.offset); +aPoints = (this.cellRange[0].x == 0 && this.cellRange[0].y == 0 && this.cellRange[0].z == 0 ? axisPoints : null); +firstLine = 0; +allow0 = 0xFF; +allow1 = 0xFF; +var pts = JU.BoxInfo.unitCubePoints; +for (var i = 8; --i >= 0; ) { +var v = JU.P3.new3(pts[i].x * (this.cellRange[1].x - this.cellRange[0].x), pts[i].y * (this.cellRange[1].y - this.cellRange[0].y), pts[i].z * (this.cellRange[1].z - this.cellRange[0].z)); +this.unitcell.toCartesian(v, true); +this.verticesT[i].add2(v, this.offsetT); +} +this.renderCage(mad10, this.verticesT, faces, aPoints, firstLine, allow0, allow1, 1); +} else { +for (var x = Clazz.floatToInt(this.cellRange[0].x); x < this.cellRange[1].x; x++) { +for (var y = Clazz.floatToInt(this.cellRange[0].y); y < this.cellRange[1].y; y++) { +for (var z = Clazz.floatToInt(this.cellRange[0].z); z < this.cellRange[1].z; z++) { +if (haveMultiple) { +this.offsetT.set(x, y, z); +this.offsetT.scale(scale); +this.unitcell.toCartesian(this.offsetT, true); +this.offsetT.add(this.offset); +aPoints = (x == 0 && y == 0 && z == 0 ? axisPoints : null); +firstLine = (drawAllLines || aPoints == null ? 0 : 3); +} else { +this.offsetT.setT(this.offset); +firstLine = (drawAllLines ? 0 : 3); +}allow0 = 0xFF; +allow1 = 0xFF; +for (var i = 8; --i >= 0; ) this.verticesT[i].add2(vertices[i], this.offsetT); + +this.renderCage(mad10, this.verticesT, faces, aPoints, firstLine, allow0, allow1, scale); +} +} +} +}this.renderInfo(); +}, "~N"); +Clazz.defineMethod(c$, "renderInfo", +function(){ +var showDetails = this.vwr.getBoolean(603979937); +if (this.isExport || !this.vwr.getBoolean(603979828) || this.vwr.isPreviewOnly || !this.vwr.gdata.setC(this.vwr.cm.colixBackgroundContrast) || this.vwr.gdata.getTextPosition() != 0) return; +this.vwr.gdata.setFontBold("Monospaced", 14 * this.imageFontScaling); +this.xpos = Clazz.doubleToInt(Math.floor(10 * this.imageFontScaling)); +this.ypos = this.lineheight = Clazz.doubleToInt(Math.floor(15 * this.imageFontScaling)); +if (!this.unitcell.isSimple()) { +var sgName = this.unitcell.getUnitCellDisplayName(); +if (sgName != null) { +this.drawInfo(sgName, 0, null); +}var info = this.unitcell.getMoreInfo(); +if (info != null) for (var i = 0; i < info.size(); i++) this.drawInfo(info.get(i), 0, null); + +if (!showDetails) return; +}this.drawInfo("a=", 0, "\u00C5"); +if (!this.isPolymer) this.drawInfo("b=", 1, "\u00C5"); +if (!this.isPolymer && !this.isSlab) this.drawInfo("c=", 2, "\u00C5"); +if (!this.isPolymer) { +if (!this.isSlab) { +this.drawInfo("\u03B1=", 3, "\u00B0"); +this.drawInfo("\u03B2=", 4, "\u00B0"); +}this.drawInfo("\u03B3=", 5, "\u00B0"); +}}); +Clazz.defineMethod(c$, "drawInfo", +function(s, type, post){ +this.ypos += this.lineheight; +if (post != null) s += JU.DF.formatDecimal(this.unitcell.getUnitCellInfoType(type), 3) + post; +this.g3d.drawStringNoSlab(s, null, this.xpos, this.ypos, 0, 0); +}, "~S,~N,~S"); +c$.fset0 = JU.P3.new3(555, 555, 1); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BackboneRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BackboneRenderer.js new file mode 100755 index 000000000000..852428f99dea --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BackboneRenderer.js @@ -0,0 +1,26 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.renderbio.BioShapeRenderer"], "J.renderbio.BackboneRenderer", ["JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isDataFrame = false; +Clazz.instantialize(this, arguments);}, J.renderbio, "BackboneRenderer", J.renderbio.BioShapeRenderer); +Clazz.overrideMethod(c$, "renderBioShape", +function(bioShape){ +var checkPass2 = (!this.isExport && !this.vwr.gdata.isPass2); +this.isDataFrame = this.ms.isJmolDataFrameForModel(bioShape.modelIndex); +var n = this.monomerCount; +var atoms = this.ms.at; +for (var i = this.bsVisible.nextSetBit(0); i >= 0; i = this.bsVisible.nextSetBit(i + 1)) { +var atomA = atoms[this.leadAtomIndices[i]]; +var cA = this.colixes[i]; +this.mad = this.mads[i]; +var i1 = (i + 1) % n; +var atomB = atoms[this.leadAtomIndices[i1]]; +var cB = this.colixes[i1]; +if (atomA.nBackbonesDisplayed > 0 && atomB.nBackbonesDisplayed > 0 && !this.ms.isAtomHidden(atomB.i) && (this.isDataFrame || atomA.distanceSquared(atomB) < 100)) { +cA = JU.C.getColixInherited(cA, atomA.colixAtom); +cB = JU.C.getColixInherited(cB, atomB.colixAtom); +if (!checkPass2 || this.setBioColix(cA) || this.setBioColix(cB)) this.drawSegmentAB(atomA, atomB, cA, cB, 100); +}} +}, "J.shapebio.BioShape"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BioMeshRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BioMeshRenderer.js new file mode 100755 index 000000000000..90bc6b06a61d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BioMeshRenderer.js @@ -0,0 +1,280 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.render.MeshRenderer", "JU.A4", "$.M3", "$.P3", "$.V3"], "J.renderbio.BioMeshRenderer", ["JU.BS", "J.shape.Mesh", "JU.GData", "$.Logger", "$.Normix"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.meshes = null; +this.meshReady = null; +this.bsRenderMesh = null; +this.bsr = null; +this.doCap0 = false; +this.doCap1 = false; +this.controlHermites = null; +this.wingHermites = null; +this.radiusHermites = null; +this.norm = null; +this.wing = null; +this.wing1 = null; +this.wingT = null; +this.aa = null; +this.pt = null; +this.pt1 = null; +this.ptPrev = null; +this.ptNext = null; +this.mat = null; +this.bsTemp = null; +this.norml = null; +Clazz.instantialize(this, arguments);}, J.renderbio, "BioMeshRenderer", J.render.MeshRenderer); +Clazz.prepareFields (c$, function(){ +this.norm = new JU.V3(); +this.wing = new JU.V3(); +this.wing1 = new JU.V3(); +this.wingT = new JU.V3(); +this.aa = new JU.A4(); +this.pt = new JU.P3(); +this.pt1 = new JU.P3(); +this.ptPrev = new JU.P3(); +this.ptNext = new JU.P3(); +this.mat = new JU.M3(); +this.norml = new JU.V3(); +}); +Clazz.overrideMethod(c$, "render", +function(){ +return false; +}); +Clazz.defineMethod(c$, "initialize", +function(bsr, bioShape, monomerCount){ +this.bsr = bsr; +this.bsRenderMesh = JU.BS.newN(monomerCount); +this.meshReady = bioShape.meshReady; +this.meshes = bioShape.meshes; +}, "J.render.ShapeRenderer,J.shapebio.BioShape,~N"); +Clazz.defineMethod(c$, "renderBioMesh", +function(mesh){ +if (mesh.normalsTemp != null) { +mesh.setNormixes(mesh.normalsTemp); +mesh.normalsTemp = null; +} else if (mesh.normixes == null) { +mesh.initialize(1073741958, null, null); +}this.renderMesh2(mesh); +}, "J.shape.Mesh"); +Clazz.defineMethod(c$, "setFancyRibbon", +function(i){ +try { +if ((this.meshes[i] == null || !this.meshReady[i]) && !this.createMesh(i, this.bsr.madBeg, this.bsr.madMid, this.bsr.madEnd, this.bsr.aspectRatio, this.bsr.isNucleic ? 4 : 7)) return; +this.meshes[i].setColix(this.bsr.colix); +this.meshes[i].setColixBack(this.bsr.colixBack); +this.bsRenderMesh.set(i); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.bsRenderMesh.clear(i); +this.meshes[i] = null; +JU.Logger.error("render mesh error hermiteRibbon: " + e.toString()); +} else { +throw e; +} +} +}, "~N"); +Clazz.defineMethod(c$, "setFancyConic", +function(i, tension){ +try { +if ((this.meshes[i] == null || !this.meshReady[i]) && !this.createMesh(i, this.bsr.madBeg, this.bsr.madMid, this.bsr.madEnd, 1, tension)) return; +this.meshes[i].setColix(this.bsr.colix); +this.bsRenderMesh.set(i); +return; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.bsRenderMesh.clear(i); +this.meshes[i] = null; +JU.Logger.error("render mesh error hermiteConic: " + e.toString()); +} else { +throw e; +} +} +}, "~N,~N"); +Clazz.defineMethod(c$, "setFancyArrowHead", +function(i){ +try { +this.doCap0 = true; +this.doCap1 = false; +if ((this.meshes[i] == null || !this.meshReady[i]) && !this.createMesh(i, Clazz.doubleToInt(Math.floor(this.bsr.madBeg * 1.2)), Clazz.doubleToInt(Math.floor(this.bsr.madBeg * 0.6)), 0, (this.bsr.aspectRatio == 1 ? this.bsr.aspectRatio : this.bsr.aspectRatio / 2), 7)) return; +this.meshes[i].setColix(this.bsr.colix); +this.bsRenderMesh.set(i); +return; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.bsRenderMesh.clear(i); +this.meshes[i] = null; +JU.Logger.error("render mesh error hermiteArrowHead: " + e.toString()); +} else { +throw e; +} +} +}, "~N"); +Clazz.defineMethod(c$, "createMesh", +function(i, madBeg, madMid, madEnd, aspectRatio, tension){ +this.bsr.setNeighbors(i); +var cp = this.bsr.controlPoints; +if (cp[i].distanceSquared(cp[this.bsr.iNext]) == 0) return false; +var isEccentric = (aspectRatio != 1 && this.bsr.wingVectors != null); +var isFlatMesh = (aspectRatio == 0); +var isElliptical = (this.bsr.cartoonsFancy || this.bsr.hermiteLevel >= 6); +var nHermites = (this.bsr.hermiteLevel + 1) * 2 + 1; +var nPer = (isFlatMesh ? 4 : (this.bsr.hermiteLevel + 1) * 4 - 2); +var angle = ((isFlatMesh ? 3.141592653589793 / (nPer - 1) : 6.283185307179586 / nPer)); +var mesh = this.meshes[i] = new J.shape.Mesh().mesh1(this.vwr, "mesh_" + this.shapeID + "_" + i, 0, i); +var variableRadius = (madBeg != madMid || madMid != madEnd); +if (this.controlHermites == null || this.controlHermites.length < nHermites + 1) { +this.controlHermites = new Array(nHermites + 1); +}JU.GData.getHermiteList(tension, cp[this.bsr.iPrev], cp[i], cp[this.bsr.iNext], cp[this.bsr.iNext2], cp[this.bsr.iNext3], this.controlHermites, 0, nHermites, true); +if (this.wingHermites == null || this.wingHermites.length < nHermites + 1) { +this.wingHermites = new Array(nHermites + 1); +}this.wing.setT(this.bsr.wingVectors[this.bsr.iPrev]); +if (madEnd == 0) this.wing.scale(2.0); +JU.GData.getHermiteList(tension, this.wing, this.bsr.wingVectors[i], this.bsr.wingVectors[this.bsr.iNext], this.bsr.wingVectors[this.bsr.iNext2], this.bsr.wingVectors[this.bsr.iNext3], this.wingHermites, 0, nHermites, false); +var radius1 = madBeg / 2000; +var radius2 = madMid / 2000; +var radius3 = madEnd / 2000; +if (variableRadius) { +if (this.radiusHermites == null || this.radiusHermites.length < ((nHermites + 1) >> 1) + 1) { +this.radiusHermites = new Array(((nHermites + 1) >> 1) + 1); +}this.ptPrev.set(radius1, radius1, 0); +this.pt.set(radius1, radius2, 0); +this.pt1.set(radius2, radius3, 0); +this.ptNext.set(radius3, radius3, 0); +JU.GData.getHermiteList(4, this.ptPrev, this.pt, this.pt1, this.ptNext, this.ptNext, this.radiusHermites, 0, (nHermites + 1) >> 1, true); +}var nPoints = 0; +var iMid = nHermites >> 1; +var kpt1 = Clazz.doubleToInt((nPer + 2) / 4); +var kpt2 = Clazz.doubleToInt((3 * nPer + 2) / 4); +var mode = (!isEccentric ? 0 : isFlatMesh ? 1 : isElliptical ? 2 : 3); +var useMat = (mode == 0 || mode == 3); +for (var p = 0; p < nHermites; p++) { +this.norm.sub2(this.controlHermites[p + 1], this.controlHermites[p]); +var scale = (!variableRadius ? radius1 : p < iMid ? this.radiusHermites[p].x : this.radiusHermites[p - iMid].y); +this.wing.setT(this.wingHermites[p]); +this.wing1.setT(this.wing); +switch (mode) { +case 1: +break; +case 2: +this.wing1.cross(this.norm, this.wing); +this.wing1.normalize(); +this.wing1.scale(this.wing.length() / aspectRatio); +break; +case 3: +this.wing.scale(2 / aspectRatio); +this.wing1.sub(this.wing); +break; +case 0: +this.wing.cross(this.wing, this.norm); +this.wing.normalize(); +break; +} +this.wing.scale(scale); +this.wing1.scale(scale); +if (useMat) { +this.aa.setVA(this.norm, angle); +this.mat.setAA(this.aa); +}this.pt1.setT(this.controlHermites[p]); +var theta = (isFlatMesh ? 0 : angle); +for (var k = 0; k < nPer; k++, theta += angle) { +if (useMat && k > 0) this.mat.rotate(this.wing); +switch (mode) { +case 1: +this.wingT.setT(this.wing1); +this.wingT.scale(Math.cos(theta)); +break; +case 2: +this.wingT.setT(this.wing1); +this.wingT.scale(Math.sin(theta)); +this.wingT.scaleAdd2(Math.cos(theta), this.wing, this.wingT); +break; +case 3: +this.wingT.setT(this.wing); +if (k == kpt1 || k == kpt2) this.wing1.scale(-1); +this.wingT.add(this.wing1); +break; +case 0: +this.wingT.setT(this.wing); +break; +} +this.pt.add2(this.pt1, this.wingT); +mesh.addV(this.pt, true); +} +if (p > 0) { +var nLast = (isFlatMesh ? nPer - 1 : nPer); +for (var k = 0; k < nLast; k++) { +var a = nPoints - nPer + k; +var b = nPoints - nPer + ((k + 1) % nPer); +var c = nPoints + ((k + 1) % nPer); +var d = nPoints + k; +if (k < Clazz.doubleToInt(nLast / 2)) mesh.addQuad(a, b, c, d); + else mesh.addQuad(b, c, d, a); +} +}nPoints += nPer; +} +if (!isFlatMesh) { +var nPointsPreCap = nPoints; +if (this.doCap0) { +var vs = mesh.getVertices(); +for (var l = 0; l < nPer; l++) mesh.addV(vs[l], true); + +nPoints += nPer; +for (var k = this.bsr.hermiteLevel * 2; --k >= 0; ) mesh.addQuad(nPoints - nPer + k + 2, nPoints - nPer + k + 1, nPoints - nPer + (nPer - k) % nPer, nPoints - k - 1); + +}if (this.doCap1) { +var vs = mesh.getVertices(); +for (var l = 0; l < nPer; l++) mesh.addV(vs[nPointsPreCap - nPer + l], true); + +nPoints += nPer; +for (var k = this.bsr.hermiteLevel * 2; --k >= 0; ) mesh.addQuad(nPoints - k - 1, nPoints - nPer + (nPer - k) % nPer, nPoints - nPer + k + 1, nPoints - nPer + k + 2); + +}}this.meshReady[i] = true; +this.adjustCartoonSeamNormals(i, nPer); +mesh.setVisibilityFlags(1); +return true; +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "adjustCartoonSeamNormals", +function(i, nPer){ +if (this.bsTemp == null) this.bsTemp = JU.Normix.newVertexBitSet(); +if (i == this.bsr.iNext - 1 && this.bsr.iNext < this.bsr.monomerCount && this.bsr.monomers[i].getStrucNo() == this.bsr.monomers[this.bsr.iNext].getStrucNo() && this.meshReady[i] && this.meshReady[this.bsr.iNext]) { +try { +var normals2 = this.meshes[this.bsr.iNext].getNormalsTemp(); +var normals = this.meshes[i].getNormalsTemp(); +var normixCount = normals.length; +if (this.doCap0) normixCount -= nPer; +for (var j = 1; j <= nPer; ++j) { +this.norml.add2(normals[normixCount - j], normals2[nPer - j]); +this.norml.normalize(); +normals[normixCount - j].setT(this.norml); +normals2[nPer - j].setT(this.norml); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}, "~N,~N"); +Clazz.defineMethod(c$, "renderMeshes", +function(){ +if (this.bsRenderMesh.isEmpty()) return; +this.setColix(this.bsr.colix); +for (var i = this.bsRenderMesh.nextSetBit(0); i >= 0; i = this.bsRenderMesh.nextSetBit(i + 1)) this.renderBioMesh(this.meshes[i]); + +}); +Clazz.defineMethod(c$, "initBS", +function(){ +this.bsRenderMesh.clearAll(); +}); +Clazz.defineMethod(c$, "check", +function(doCap0, doCap1){ +this.doCap0 = doCap0; +this.doCap1 = doCap1; +return (this.exportType == 1 || this.checkDiameter(this.bsr.diameterBeg) || this.checkDiameter(this.bsr.diameterMid) || this.checkDiameter(this.bsr.diameterEnd)); +}, "~B,~B"); +Clazz.defineMethod(c$, "checkDiameter", +function(d){ +return (this.bsr.isHighRes && d > 3 || d >= 8); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BioShapeRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BioShapeRenderer.js new file mode 100755 index 000000000000..aaa482eb5673 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/BioShapeRenderer.js @@ -0,0 +1,327 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.render.ShapeRenderer", "JU.BS", "$.P3"], "J.renderbio.BioShapeRenderer", ["javajs.api.Interface", "J.c.STR", "JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.invalidateMesh = false; +this.invalidateSheets = false; +this.isTraceAlpha = false; +this.ribbonBorder = false; +this.haveControlPointScreens = false; +this.aspectRatio = 0; +this.hermiteLevel = 0; +this.sheetSmoothing = 0; +this.cartoonsFancy = false; +this.monomerCount = 0; +this.monomers = null; +this.isNucleic = false; +this.isPhosphorusOnly = false; +this.isCarbohydrate = false; +this.bsVisible = null; +this.ribbonTopScreens = null; +this.ribbonBottomScreens = null; +this.controlPoints = null; +this.controlPointScreens = null; +this.leadAtomIndices = null; +this.wingVectors = null; +this.mads = null; +this.colixes = null; +this.colixesBack = null; +this.structureTypes = null; +this.isHighRes = false; +this.wireframeOnly = false; +this.needTranslucent = false; +this.meshRenderer = null; +this.bioShape = null; +this.pointT = null; +this.iPrev = 0; +this.iNext = 0; +this.iNext2 = 0; +this.iNext3 = 0; +this.diameterBeg = 0; +this.diameterMid = 0; +this.diameterEnd = 0; +this.madBeg = 0; +this.madMid = 0; +this.madEnd = 0; +this.colixBack = 0; +this.reversed = null; +this.isCyclic = false; +this.screenArrowTop = null; +this.screenArrowTopPrev = null; +this.screenArrowBot = null; +this.screenArrowBotPrev = null; +Clazz.instantialize(this, arguments);}, J.renderbio, "BioShapeRenderer", J.render.ShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.bsVisible = new JU.BS(); +this.pointT = new JU.P3(); +this.screenArrowTop = new JU.P3(); +this.screenArrowTopPrev = new JU.P3(); +this.screenArrowBot = new JU.P3(); +this.screenArrowBotPrev = new JU.P3(); +}); +Clazz.overrideMethod(c$, "render", +function(){ +if (this.shape == null) return false; +this.setGlobals(); +this.renderShapes(); +return this.needTranslucent; +}); +Clazz.defineMethod(c$, "setGlobals", +function(){ +this.invalidateMesh = false; +this.needTranslucent = false; +this.g3d.addRenderer(553648143); +var TF = (!this.isExport && !this.vwr.checkMotionRendering(1112152066)); +if (TF != this.wireframeOnly) this.invalidateMesh = true; +this.wireframeOnly = TF; +TF = (this.isExport || !this.wireframeOnly && this.vwr.getBoolean(603979864)); +if (TF != this.isHighRes) this.invalidateMesh = true; +this.isHighRes = TF; +TF = !this.wireframeOnly && (this.vwr.getBoolean(603979816) || this.isExport); +if (this.cartoonsFancy != TF) { +this.invalidateMesh = true; +this.cartoonsFancy = TF; +}var val1 = this.vwr.getHermiteLevel(); +val1 = (val1 <= 0 ? -val1 : this.vwr.getInMotion(true) ? 0 : val1); +if (this.cartoonsFancy && !this.wireframeOnly) val1 = Math.max(val1, 3); +if (val1 != this.hermiteLevel) this.invalidateMesh = true; +this.hermiteLevel = Math.min(val1, 8); +var val = this.vwr.getInt(553648166); +val = Math.min(Math.max(0, val), 20); +if (this.cartoonsFancy && val >= 16) val = 4; +if (this.wireframeOnly || this.hermiteLevel == 0) val = 0; +if (val != this.aspectRatio && val != 0 && val1 != 0) this.invalidateMesh = true; +this.aspectRatio = val; +if (this.aspectRatio > 0) { +if (this.meshRenderer == null) { +this.meshRenderer = javajs.api.Interface.getInterface("J.renderbio.BioMeshRenderer"); +this.meshRenderer.setViewerG3dShapeID(this.vwr, this.shape.shapeID); +}this.meshRenderer.setup(this.g3d, this.ms, this.shape); +}TF = this.vwr.getBoolean(603979966); +if (TF != this.isTraceAlpha) this.invalidateMesh = true; +this.isTraceAlpha = TF; +this.invalidateSheets = false; +var fval = this.vwr.getFloat(570425392); +if (fval != this.sheetSmoothing && this.isTraceAlpha) { +this.sheetSmoothing = fval; +this.invalidateMesh = true; +this.invalidateSheets = true; +}}); +Clazz.defineMethod(c$, "renderShapes", +function(){ +var mps = this.shape; +for (var c = mps.bioShapes.length; --c >= 0; ) { +this.bioShape = mps.getBioShape(c); +if ((this.bioShape.modelVisibilityFlags & this.myVisibilityFlag) == 0) continue; +if (this.bioShape.monomerCount >= 2 && this.initializePolymer(this.bioShape)) { +if (this.meshRenderer != null) this.meshRenderer.initBS(); +this.isCyclic = this.bioShape.bioPolymer.isCyclic(); +this.renderBioShape(this.bioShape); +if (this.meshRenderer != null) this.meshRenderer.renderMeshes(); +this.freeTempArrays(); +}} +}); +Clazz.defineMethod(c$, "setBioColix", +function(colix){ +if (this.g3d.setC(colix)) return true; +this.needTranslucent = true; +return false; +}, "~N"); +Clazz.defineMethod(c$, "freeTempArrays", +function(){ +if (this.haveControlPointScreens) this.vwr.freeTempPoints(this.controlPointScreens); +this.vwr.freeTempEnum(this.structureTypes); +}); +Clazz.defineMethod(c$, "initializePolymer", +function(bioShape){ +var bsDeleted = this.vwr.slm.bsDeleted; +if (this.ms.isJmolDataFrameForModel(bioShape.modelIndex)) { +this.controlPoints = bioShape.bioPolymer.getControlPoints(true, 0, false); +} else { +this.controlPoints = bioShape.bioPolymer.getControlPoints(this.isTraceAlpha, this.sheetSmoothing, this.invalidateSheets); +}this.monomerCount = bioShape.monomerCount; +this.monomers = bioShape.monomers; +this.reversed = bioShape.bioPolymer.reversed; +this.leadAtomIndices = bioShape.bioPolymer.getLeadAtomIndices(); +this.bsVisible.clearAll(); +var haveVisible = false; +if (this.invalidateMesh) bioShape.falsifyMesh(); +for (var i = this.monomerCount; --i >= 0; ) { +if ((this.monomers[i].shapeVisibilityFlags & this.myVisibilityFlag) == 0 || this.ms.isAtomHidden(this.leadAtomIndices[i]) || bsDeleted != null && bsDeleted.get(this.leadAtomIndices[i])) continue; +var lead = this.ms.at[this.leadAtomIndices[i]]; +if (!this.g3d.isInDisplayRange(lead.sX, lead.sY)) continue; +this.bsVisible.set(i); +haveVisible = true; +} +if (!haveVisible) return false; +this.ribbonBorder = this.vwr.getBoolean(603979901); +this.isNucleic = Clazz.instanceOf(bioShape.bioPolymer,"JM.NucleicPolymer"); +this.isPhosphorusOnly = !this.isNucleic && Clazz.instanceOf(bioShape.bioPolymer,"JM.PhosphorusPolymer"); +this.isCarbohydrate = Clazz.instanceOf(bioShape.bioPolymer,"JM.CarbohydratePolymer"); +this.haveControlPointScreens = false; +this.wingVectors = bioShape.wingVectors; +if (this.meshRenderer != null) this.meshRenderer.initialize(this, bioShape, this.monomerCount); +this.mads = bioShape.mads; +this.colixes = bioShape.colixes; +this.colixesBack = bioShape.colixesBack; +this.setStructureTypes(); +return true; +}, "J.shapebio.BioShape"); +Clazz.defineMethod(c$, "setStructureTypes", +function(){ +var types = this.structureTypes = this.vwr.allocTempEnum(this.monomerCount + 1); +for (var i = this.monomerCount; --i >= 0; ) if ((types[i] = this.monomers[i].getProteinStructureType()) === J.c.STR.TURN) types[i] = J.c.STR.NONE; + +types[this.monomerCount] = types[this.monomerCount - 1]; +}); +Clazz.defineMethod(c$, "calcScreenControlPoints", +function(){ +var count = this.monomerCount + 1; +var scr = this.controlPointScreens = this.vwr.allocTempPoints(count); +var points = this.controlPoints; +for (var i = count; --i >= 0; ) this.tm.transformPtScrT3(points[i], scr[i]); + +this.haveControlPointScreens = true; +}); +Clazz.defineMethod(c$, "calcScreens", +function(offsetFraction, mads){ +var count = this.controlPoints.length; +var screens = this.vwr.allocTempPoints(count); +if (offsetFraction == 0) { +for (var i = count; --i >= 0; ) this.tm.transformPtScrT3(this.controlPoints[i], screens[i]); + +} else { +var offset_1000 = offsetFraction / 1000; +for (var i = count; --i >= 0; ) this.calc1Screen(this.controlPoints[i], this.wingVectors[i], (mads[i] == 0 && i > 0 ? mads[i - 1] : mads[i]), offset_1000, screens[i]); + +}return screens; +}, "~N,~A"); +Clazz.defineMethod(c$, "calc1Screen", +function(center, vector, mad, offset_1000, screen){ +this.pointT.scaleAdd2(mad * offset_1000, vector, center); +this.tm.transformPtScrT3(this.pointT, screen); +}, "JU.P3,JU.V3,~N,~N,JU.P3"); +Clazz.defineMethod(c$, "getLeadColix", +function(i){ +return JU.C.getColixInherited(this.colixes[i], this.monomers[i].getLeadAtom().colixAtom); +}, "~N"); +Clazz.defineMethod(c$, "getLeadColixBack", +function(i){ +return (this.colixesBack == null || this.colixesBack.length <= i ? 0 : this.colixesBack[i]); +}, "~N"); +Clazz.defineMethod(c$, "setNeighbors", +function(i){ +if (this.isCyclic) { +i += this.monomerCount; +this.iPrev = (i - 1) % this.monomerCount; +this.iNext = (i + 1) % this.monomerCount; +this.iNext2 = (i + 2) % this.monomerCount; +this.iNext3 = (i + 3) % this.monomerCount; +} else { +this.iPrev = Math.max(i - 1, 0); +this.iNext = Math.min(i + 1, this.monomerCount); +this.iNext2 = Math.min(i + 2, this.monomerCount); +this.iNext3 = Math.min(i + 3, this.monomerCount); +}}, "~N"); +Clazz.defineMethod(c$, "setColix", +function(colix){ +this.colix = colix; +return this.g3d.setC(colix); +}, "~N"); +Clazz.defineMethod(c$, "setMads", +function(i, thisTypeOnly){ +this.madMid = this.madBeg = this.madEnd = this.mads[i]; +if (this.isTraceAlpha) { +if (!thisTypeOnly || this.structureTypes[i] === this.structureTypes[this.iNext]) { +this.madEnd = this.mads[this.iNext]; +if (this.madEnd == 0) { +if (Clazz.instanceOf(this,"J.renderbio.TraceRenderer")) { +this.madEnd = this.madBeg; +} else { +this.madEnd = this.madBeg; +}}this.madMid = ((this.madBeg + this.madEnd) >> 1); +}} else { +if (!thisTypeOnly || this.structureTypes[i] === this.structureTypes[this.iPrev]) this.madBeg = (((this.mads[this.iPrev] == 0 ? this.madMid : this.mads[this.iPrev]) + this.madMid) >> 1); +if (!thisTypeOnly || this.structureTypes[i] === this.structureTypes[this.iNext]) this.madEnd = (((this.mads[this.iNext] == 0 ? this.madMid : this.mads[this.iNext]) + this.madMid) >> 1); +}this.diameterBeg = Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.controlPointScreens[i].z), this.madBeg)); +this.diameterMid = Clazz.floatToInt(this.vwr.tm.scaleToScreen(this.monomers[i].getLeadAtom().sZ, this.madMid)); +this.diameterEnd = Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.controlPointScreens[this.iNext].z), this.madEnd)); +var doCap0 = (i == this.iPrev || !this.bsVisible.get(this.iPrev) || thisTypeOnly && this.structureTypes[i] !== this.structureTypes[this.iPrev]); +var doCap1 = (this.iNext == this.iNext2 || this.iNext2 == this.iNext3 || !this.bsVisible.get(this.iNext) || thisTypeOnly && this.structureTypes[i] !== this.structureTypes[this.iNext]); +return (this.aspectRatio > 0 && this.meshRenderer != null && this.meshRenderer.check(doCap0, doCap1)); +}, "~N,~B"); +Clazz.defineMethod(c$, "renderHermiteCylinder", +function(screens, i){ +this.colix = this.getLeadColix(i); +if (!this.setBioColix(this.colix)) return; +this.setNeighbors(i); +this.g3d.drawHermite4(this.isNucleic ? 4 : 7, screens[this.iPrev], screens[i], screens[this.iNext], screens[this.iNext2]); +}, "~A,~N"); +Clazz.defineMethod(c$, "renderHermiteConic", +function(i, thisTypeOnly, tension){ +this.setNeighbors(i); +this.colix = this.getLeadColix(i); +if (!this.setBioColix(this.colix)) return; +if (this.setMads(i, thisTypeOnly) || this.isExport) { +this.meshRenderer.setFancyConic(i, tension); +return; +}if (this.diameterBeg == 0 && this.diameterEnd == 0 || this.wireframeOnly) this.g3d.drawLineAB(this.controlPointScreens[i], this.controlPointScreens[this.iNext]); + else { +this.g3d.fillHermite(this.isNucleic ? 4 : 7, this.diameterBeg, this.diameterMid, this.diameterEnd, this.controlPointScreens[this.iPrev], this.controlPointScreens[i], this.controlPointScreens[this.iNext], this.controlPointScreens[this.iNext2]); +}}, "~N,~B,~N"); +Clazz.defineMethod(c$, "renderHermiteRibbon", +function(doFill, i, thisTypeOnly){ +this.setNeighbors(i); +var c0 = this.colix = this.getLeadColix(i); +if (!this.setBioColix(this.colix)) return; +var cb = this.colixBack = this.getLeadColixBack(i); +if (doFill && (this.aspectRatio != 0 || this.isExport)) { +if (this.setMads(i, thisTypeOnly) || this.isExport) { +this.meshRenderer.setFancyRibbon(i); +return; +}}var isReversed = this.reversed.get(i); +if (isReversed && this.colixBack != 0) { +this.setColix(this.colixBack); +cb = c0; +}this.g3d.drawHermite7(doFill, this.ribbonBorder, (isReversed ? -1 : 1) * (this.isNucleic ? 4 : 7), this.ribbonTopScreens[this.iPrev], this.ribbonTopScreens[i], this.ribbonTopScreens[this.iNext], this.ribbonTopScreens[this.iNext2], this.ribbonBottomScreens[this.iPrev], this.ribbonBottomScreens[i], this.ribbonBottomScreens[this.iNext], this.ribbonBottomScreens[this.iNext2], Clazz.floatToInt(this.aspectRatio), cb); +if (isReversed && this.colixBack != 0) { +this.setColix(c0); +cb = this.colixBack; +}}, "~B,~N,~B"); +Clazz.defineMethod(c$, "renderHermiteArrowHead", +function(i){ +this.colix = this.getLeadColix(i); +if (!this.setBioColix(this.colix)) return; +this.colixBack = this.getLeadColixBack(i); +this.setNeighbors(i); +if (this.setMads(i, false) || this.isExport) { +this.meshRenderer.setFancyArrowHead(i); +return; +}var cp = this.controlPoints[i]; +var wv = this.wingVectors[i]; +this.calc1Screen(cp, wv, this.madBeg, .0007, this.screenArrowTop); +this.calc1Screen(cp, wv, this.madBeg, -7.0E-4, this.screenArrowBot); +this.calc1Screen(cp, wv, this.madBeg, 0.001, this.screenArrowTopPrev); +this.calc1Screen(cp, wv, this.madBeg, -0.001, this.screenArrowBotPrev); +this.g3d.drawHermite7(true, this.ribbonBorder, this.isNucleic ? 4 : 7, this.screenArrowTopPrev, this.screenArrowTop, this.controlPointScreens[this.iNext], this.controlPointScreens[this.iNext2], this.screenArrowBotPrev, this.screenArrowBot, this.controlPointScreens[this.iNext], this.controlPointScreens[this.iNext2], Clazz.floatToInt(this.aspectRatio), this.colixBack); +this.g3d.setC(this.colix); +if (this.ribbonBorder && this.aspectRatio == 0) { +this.g3d.fillCylinderBits(3, 3, this.screenArrowTop, this.screenArrowBot); +}}, "~N"); +Clazz.defineMethod(c$, "drawSegmentAB", +function(atomA, atomB, colixA, colixB, max){ +var xA = atomA.sX; +var yA = atomA.sY; +var zA = atomA.sZ; +var xB = atomB.sX; +var yB = atomB.sY; +var zB = atomB.sZ; +var mad = this.mad; +if (max == 1000) mad = mad >> 1; +if (mad < 0) { +this.g3d.drawLine(colixA, colixB, xA, yA, zA, xB, yB, zB); +} else { +var width = Clazz.floatToInt(this.isExport ? mad : this.vwr.tm.scaleToScreen(Clazz.doubleToInt((zA + zB) / 2), mad)); +this.g3d.fillCylinderXYZ(colixA, colixB, 3, width, xA, yA, zA, xB, yB, zB); +}}, "JM.Atom,JM.Atom,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/CartoonRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/CartoonRenderer.js new file mode 100755 index 000000000000..92086e48b974 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/CartoonRenderer.js @@ -0,0 +1,57 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.renderbio.RocketsRenderer"], "J.renderbio.CartoonRenderer", ["J.api.Interface", "J.c.STR"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nucleicRenderer = null; +Clazz.instantialize(this, arguments);}, J.renderbio, "CartoonRenderer", J.renderbio.RocketsRenderer); +Clazz.overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (!this.setupRR(bioShape, false)) return; +if (this.isNucleic || this.isPhosphorusOnly) { +if (this.nucleicRenderer == null) this.nucleicRenderer = J.api.Interface.getInterface("J.renderbio.NucleicRenderer", this.vwr, "render"); +this.calcScreenControlPoints(); +this.nucleicRenderer.renderNucleic(this); +return; +}var val = this.vwr.getBoolean(603979819); +if (this.helixRockets != val) { +bioShape.falsifyMesh(); +this.helixRockets = val; +}this.ribbonTopScreens = this.calcScreens(0.5, this.mads); +this.ribbonBottomScreens = this.calcScreens(-0.5, this.mads); +this.calcRopeMidPoints(); +this.renderProtein(); +this.vwr.freeTempPoints(this.cordMidPoints); +this.vwr.freeTempPoints(this.ribbonTopScreens); +this.vwr.freeTempPoints(this.ribbonBottomScreens); +}, "J.shapebio.BioShape"); +Clazz.defineMethod(c$, "renderProtein", +function(){ +var lastWasSheet = false; +var lastWasHelix = false; +var previousStructure = null; +var thisStructure; +var needRockets = (this.helixRockets || !this.renderArrowHeads); +var doRockets = false; +for (var i = this.monomerCount; --i >= 0; ) { +thisStructure = this.monomers[i].getStructure(); +if (thisStructure !== previousStructure) { +lastWasSheet = false; +}previousStructure = thisStructure; +var isHelix = (this.structureTypes[i] === J.c.STR.HELIX); +var isSheet = (this.structureTypes[i] === J.c.STR.SHEET); +if (this.bsVisible.get(i)) { +if (isHelix && needRockets) { +doRockets = true; +} else if (isSheet || isHelix) { +if (lastWasSheet && isSheet || lastWasHelix && isHelix) { +this.renderHermiteRibbon(true, i, true); +} else { +this.renderHermiteArrowHead(i); +}} else { +this.renderHermiteConic(i, true, 7); +}}lastWasSheet = isSheet; +lastWasHelix = isHelix && !this.helixRockets; +} +if (doRockets) this.renderRockets(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/MeshRibbonRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/MeshRibbonRenderer.js new file mode 100755 index 000000000000..4cbac46aae04 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/MeshRibbonRenderer.js @@ -0,0 +1,27 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.renderbio.StrandsRenderer"], "J.renderbio.MeshRibbonRenderer", null, function(){ +var c$ = Clazz.declareType(J.renderbio, "MeshRibbonRenderer", J.renderbio.StrandsRenderer); +Clazz.overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (this.wireframeOnly) this.renderStrands(); + else this.renderMeshRibbon(); +}, "J.shapebio.BioShape"); +Clazz.defineMethod(c$, "renderMeshRibbon", +function(){ +if (!this.setStrandCount()) return; +var offset = ((this.strandCount >> 1) * this.strandSeparation) + this.baseStrandOffset; +this.render2Strand(false, offset, offset); +this.renderStrands(); +}); +Clazz.defineMethod(c$, "render2Strand", +function(doFill, offsetTop, offsetBottom){ +this.calcScreenControlPoints(); +this.ribbonTopScreens = this.calcScreens(offsetTop, this.mads); +this.ribbonBottomScreens = this.calcScreens(-offsetBottom, this.mads); +for (var i = this.bsVisible.nextSetBit(0); i >= 0; i = this.bsVisible.nextSetBit(i + 1)) this.renderHermiteRibbon(doFill, i, false); + +this.vwr.freeTempPoints(this.ribbonTopScreens); +this.vwr.freeTempPoints(this.ribbonBottomScreens); +}, "~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/NucleicRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/NucleicRenderer.js new file mode 100755 index 000000000000..c59e49817827 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/NucleicRenderer.js @@ -0,0 +1,267 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(null, "J.renderbio.NucleicRenderer", ["JU.P3", "JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cartoonBaseEdges = false; +this.cartoonBlocks = false; +this.blockHeight = 0; +this.cartoonLadders = false; +this.cartoonRibose = false; +this.rPt = null; +this.rPt5 = null; +this.rScr = null; +this.rScr5 = null; +this.basePt = null; +this.backbonePt = null; +this.baseScreen = null; +this.backboneScreen = null; +this.ptTemp = null; +this.vwr = null; +this.tm = null; +this.g3d = null; +this.bsr = null; +this.colix = 0; +this.cartoonSteps = false; +this.scrBox = null; +this.triangles = null; +Clazz.instantialize(this, arguments);}, J.renderbio, "NucleicRenderer", null); +Clazz.prepareFields (c$, function(){ +this.triangles = Clazz.newIntArray(-1, [1, 0, 3, 1, 3, 2, 0, 4, 7, 0, 7, 3, 4, 5, 6, 4, 6, 7, 5, 1, 2, 5, 2, 6, 2, 3, 7, 2, 7, 6, 0, 1, 5, 0, 5, 4]); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "renderNucleic", +function(renderer){ +if (this.vwr == null) { +this.rPt = new Array(10); +this.rScr = new Array(10); +this.rPt5 = new Array(5); +this.rScr5 = new Array(5); +this.backboneScreen = new JU.P3(); +this.backbonePt = new JU.P3(); +this.bsr = renderer; +this.tm = renderer.vwr.tm; +this.vwr = renderer.vwr; +}this.g3d = renderer.g3d; +var screens = renderer.controlPointScreens; +var pts = renderer.controlPoints; +this.cartoonBlocks = this.vwr.getBoolean(603979810); +this.cartoonBaseEdges = this.vwr.getBoolean(603979815); +this.cartoonSteps = this.vwr.getBoolean(603979811); +this.cartoonLadders = this.vwr.getBoolean(603979817); +this.cartoonRibose = this.vwr.getBoolean(603979818); +this.blockHeight = this.vwr.getFloat(570425347); +var isTraceAlpha = this.vwr.getBoolean(603979966); +var bsVisible = this.bsr.bsVisible; +for (var i = bsVisible.nextSetBit(0); i >= 0; i = bsVisible.nextSetBit(i + 1)) { +var scr = screens[i + 1]; +if (isTraceAlpha) { +this.backboneScreen.ave(screens[i], scr); +this.backbonePt.ave(pts[i], pts[i + 1]); +} else { +this.backboneScreen.setT(scr); +this.backbonePt.setT(pts[i + 1]); +}this.bsr.renderHermiteConic(i, false, 4); +this.colix = this.bsr.getLeadColix(i); +if (this.bsr.setBioColix(this.colix)) { +if (this.cartoonRibose && bsVisible.get(i + 1)) this.renderNucleicBaseStep(i, pts[i + 1], screens[i + 1]); + else this.renderNucleicBaseStep(i, null, null); +}} +}, "J.renderbio.BioShapeRenderer"); +Clazz.defineMethod(c$, "renderNucleicBaseStep", +function(im, ptPnext, scrPnext){ +if (this.bsr.isPhosphorusOnly) return; +var nucleotide = this.bsr.monomers[im]; +var thisMad = this.bsr.mad = this.bsr.mads[im]; +if (this.rScr[0] == null) { +for (var i = 10; --i >= 0; ) this.rScr[i] = new JU.P3(); + +for (var i = 5; --i >= 0; ) this.rScr5[i] = new JU.P3(); + +this.baseScreen = new JU.P3(); +this.basePt = new JU.P3(); +this.rPt[9] = new JU.P3(); +}if (this.cartoonBlocks) { +this.renderBlock(nucleotide); +return; +}if (this.cartoonBaseEdges) { +this.renderLeontisWesthofEdges(nucleotide); +return; +}if (this.cartoonSteps) { +this.renderSteps(nucleotide, im); +return; +}nucleotide.getBaseRing6Points(this.rPt); +this.transformPoints(6, this.rPt, this.rScr); +if (!this.cartoonLadders) this.renderRing6(); +var stepScreen; +var stepPt; +var pt; +var hasRing5 = nucleotide.maybeGetBaseRing5Points(this.rPt5); +if (hasRing5) { +if (this.cartoonLadders) { +stepScreen = this.rScr[2]; +stepPt = this.rPt[2]; +} else { +this.transformPoints(5, this.rPt5, this.rScr5); +this.renderRing5(); +stepScreen = this.rScr5[3]; +stepPt = this.rPt5[3]; +}} else { +pt = (this.cartoonLadders ? 4 : 2); +stepScreen = this.rScr[pt]; +stepPt = this.rPt[pt]; +}var mad = (thisMad > 1 ? Clazz.doubleToInt(thisMad / 2) : thisMad); +var r = mad / 2000; +var w = Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.backboneScreen.z), mad)); +if (this.cartoonLadders || !this.cartoonRibose) this.g3d.fillCylinderScreen3I(3, w, this.backboneScreen, stepScreen, this.backbonePt, stepPt, r); +if (this.cartoonLadders) return; +this.drawEdges(this.rScr, this.rPt, 6); +if (hasRing5) this.drawEdges(this.rScr5, this.rPt5, 5); + else this.renderEdge(this.rScr, this.rPt, 0, 5); +if (this.cartoonRibose) { +this.baseScreen.setT(stepScreen); +this.basePt.setT(stepPt); +nucleotide.getRiboseRing5Points(this.rPt); +var c = this.rPt[9]; +c.set(0, 0, 0); +for (var i = 0; i < 5; i++) c.add(this.rPt[i]); + +c.scale(0.2); +this.transformPoints(10, this.rPt, this.rScr); +this.renderRibose(); +this.renderEdge(this.rScr, this.rPt, 2, 5); +this.renderEdge(this.rScr, this.rPt, 3, 6); +this.renderEdge(this.rScr, this.rPt, 6, 7); +this.renderEdge(this.rScr, this.rPt, 7, 8); +this.renderEdge(this.rScr, this.rPt, 0, 4); +this.renderCyl(this.rScr[0], this.baseScreen, this.rPt[0], this.basePt); +if (ptPnext != null) this.renderCyl(this.rScr[5], scrPnext, this.rPt[5], ptPnext); +this.drawEdges(this.rScr, this.rPt, 5); +}}, "~N,JU.T3,JU.T3"); +Clazz.defineMethod(c$, "renderSteps", +function(g, i){ +var bps = g.getBasePairs(); +var atomA = g.getLeadAtom(); +var cA = JU.C.getColixInherited(this.colix, atomA.colixAtom); +if (bps != null) { +var checkPass2 = (!this.bsr.isExport && !this.vwr.gdata.isPass2); +var atoms = this.vwr.ms.at; +for (var j = bps.size(); --j >= 0; ) { +var iAtom = bps.get(j).getPartnerAtom(g); +if (iAtom > i) { +var atomB = atoms[iAtom]; +var cB = JU.C.getColixInherited(this.colix, atomB.colixAtom); +if (!checkPass2 || this.bsr.setBioColix(cA) || this.bsr.setBioColix(cB)) this.bsr.drawSegmentAB(atomA, atomB, cA, cB, 1000); +}} +}}, "JM.NucleicMonomer,~N"); +Clazz.defineMethod(c$, "transformPoints", +function(count, angstroms, screens){ +for (var i = count; --i >= 0; ) this.tm.transformPtScrT3(angstroms[i], screens[i]); + +}, "~N,~A,~A"); +Clazz.defineMethod(c$, "drawEdges", +function(scr, pt, n){ +for (var i = n; --i >= 0; ) scr[i].z--; + +for (var i = n; --i > 0; ) this.renderEdge(scr, pt, i, i - 1); + +}, "~A,~A,~N"); +Clazz.defineMethod(c$, "renderBlock", +function(g){ +var atomA = g.getLeadAtom(); +var cA = this.colix; +if (this.scrBox == null) { +this.scrBox = new Array(8); +for (var j = 0; j < 8; j++) this.scrBox[j] = new JU.P3(); + +}var oxyz = g.getDSSRFrame(this.vwr); +var box = g.dssrBox; +var lastHeight = g.dssrBoxHeight; +var isPurine = g.isPurine(); +if (box == null || lastHeight != this.blockHeight) { +g.dssrBoxHeight = this.blockHeight; +if (box == null) { +box = new Array(8); +for (var j = 8; --j >= 0; ) box[j] = new JU.P3(); + +g.dssrBox = box; +}var uc = this.vwr.getSymTemp().getUnitCell(oxyz, false, null); +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +this.ptTemp.setT(oxyz[0]); +uc.toFractional(this.ptTemp, true); +uc.setOffsetPt(JU.P3.new3(this.ptTemp.x - 2.25, this.ptTemp.y + 5, this.ptTemp.z - this.blockHeight / 2)); +var x = 4.5; +var y = (isPurine ? -4.5 : -3.0); +var z = this.blockHeight; +uc.toCartesian(box[0] = JU.P3.new3(0, 0, 0), false); +uc.toCartesian(box[1] = JU.P3.new3(x, 0, 0), false); +uc.toCartesian(box[2] = JU.P3.new3(x, y, 0), false); +uc.toCartesian(box[3] = JU.P3.new3(0, y, 0), false); +uc.toCartesian(box[4] = JU.P3.new3(0, 0, z), false); +uc.toCartesian(box[5] = JU.P3.new3(x, 0, z), false); +uc.toCartesian(box[6] = JU.P3.new3(x, y, z), false); +uc.toCartesian(box[7] = JU.P3.new3(0, y, z), false); +}for (var j = 0; j < 8; j++) this.vwr.tm.transformPt3f(box[j], this.scrBox[j]); + +for (var j = 0; j < 36; ) this.g3d.fillTriangle3f(this.scrBox[this.triangles[j++]], this.scrBox[this.triangles[j++]], this.scrBox[this.triangles[j++]], false); + +var atomB = g.getC1P(); +var atomC = g.getN0(); +if (atomB != null && atomC != null) { +this.bsr.drawSegmentAB(atomA, atomB, cA, cA, 1000); +this.bsr.drawSegmentAB(atomB, atomC, cA, cA, 1000); +}}, "JM.NucleicMonomer"); +Clazz.defineMethod(c$, "renderLeontisWesthofEdges", +function(nucleotide){ +if (!nucleotide.getEdgePoints(this.rPt)) return; +this.transformPoints(6, this.rPt, this.rScr); +this.renderTriangle(this.rScr, this.rPt, 2, 3, 4, true); +this.renderEdge(this.rScr, this.rPt, 0, 1); +this.renderEdge(this.rScr, this.rPt, 1, 2); +var isTranslucent = JU.C.isColixTranslucent(this.colix); +var tl = JU.C.getColixTranslucencyLevel(this.colix); +var colixSugarEdge = JU.C.getColixTranslucent3(10, isTranslucent, tl); +var colixWatsonCrickEdge = JU.C.getColixTranslucent3(11, isTranslucent, tl); +var colixHoogsteenEdge = JU.C.getColixTranslucent3(7, isTranslucent, tl); +this.g3d.setC(colixSugarEdge); +this.renderEdge(this.rScr, this.rPt, 2, 3); +this.g3d.setC(colixWatsonCrickEdge); +this.renderEdge(this.rScr, this.rPt, 3, 4); +this.g3d.setC(colixHoogsteenEdge); +this.renderEdge(this.rScr, this.rPt, 4, 5); +}, "JM.NucleicMonomer"); +Clazz.defineMethod(c$, "renderEdge", +function(scr, pt, i, j){ +this.renderCyl(scr[i], scr[j], pt[i], pt[j]); +}, "~A,~A,~N,~N"); +Clazz.defineMethod(c$, "renderCyl", +function(s1, s2, p1, p2){ +this.g3d.fillCylinderScreen3I(3, 3, s1, s2, p1, p2, 0.005); +}, "JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "renderTriangle", +function(scr, pt, i, j, k, doShade){ +this.g3d.fillTriangle3i(scr[i], scr[j], scr[k], pt[i], pt[j], pt[k], doShade); +}, "~A,~A,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "renderRing6", +function(){ +this.renderTriangle(this.rScr, this.rPt, 0, 2, 4, true); +this.renderTriangle(this.rScr, this.rPt, 0, 1, 2, false); +this.renderTriangle(this.rScr, this.rPt, 0, 4, 5, false); +this.renderTriangle(this.rScr, this.rPt, 2, 3, 4, false); +}); +Clazz.defineMethod(c$, "renderRing5", +function(){ +this.renderTriangle(this.rScr5, this.rPt5, 0, 1, 2, false); +this.renderTriangle(this.rScr5, this.rPt5, 0, 2, 3, false); +this.renderTriangle(this.rScr5, this.rPt5, 0, 3, 4, false); +}); +Clazz.defineMethod(c$, "renderRibose", +function(){ +this.renderTriangle(this.rScr, this.rPt, 0, 1, 9, true); +this.renderTriangle(this.rScr, this.rPt, 1, 2, 9, true); +this.renderTriangle(this.rScr, this.rPt, 2, 3, 9, true); +this.renderTriangle(this.rScr, this.rPt, 3, 4, 9, true); +this.renderTriangle(this.rScr, this.rPt, 4, 0, 9, true); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RibbonsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RibbonsRenderer.js new file mode 100755 index 000000000000..526fa6edda59 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RibbonsRenderer.js @@ -0,0 +1,11 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.renderbio.MeshRibbonRenderer"], "J.renderbio.RibbonsRenderer", null, function(){ +var c$ = Clazz.declareType(J.renderbio, "RibbonsRenderer", J.renderbio.MeshRibbonRenderer); +Clazz.overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (this.wingVectors == null) return; +if (this.wireframeOnly) this.renderStrands(); + else this.render2Strand(true, this.isNucleic ? 1 : 0.5, this.isNucleic ? 0 : 0.5); +}, "J.shapebio.BioShape"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RocketRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RocketRenderer.js new file mode 100755 index 000000000000..2d520be0fec6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RocketRenderer.js @@ -0,0 +1,168 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(null, "J.renderbio.RocketRenderer", ["JU.P3", "$.V3", "J.c.STR", "JU.MeshSurface"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tPending = false; +this.proteinstructurePending = null; +this.startIndexPending = 0; +this.endIndexPending = 0; +this.vtemp = null; +this.screenA = null; +this.screenB = null; +this.screenC = null; +this.colix = 0; +this.mad = 0; +this.rr = null; +this.vwr = null; +this.g3d = null; +this.tm = null; +this.renderArrowHeads = false; +this.isRockets = false; +this.ptC = null; +this.ptTip = null; +this.corners = null; +this.screenCorners = null; +this.vW = null; +this.vH = null; +this.meshSurface = null; +Clazz.instantialize(this, arguments);}, J.renderbio, "RocketRenderer", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(rr){ +this.screenA = new JU.P3(); +this.screenB = new JU.P3(); +this.screenC = new JU.P3(); +this.vtemp = new JU.V3(); +this.rr = rr; +this.vwr = rr.vwr; +this.tm = rr.vwr.tm; +this.isRockets = rr.isRockets; +return this; +}, "J.renderbio.RocketsRenderer"); +Clazz.defineMethod(c$, "renderRockets", +function(){ +this.g3d = this.rr.g3d; +this.tPending = false; +this.renderArrowHeads = this.rr.renderArrowHeads; +var bsVisible = this.rr.bsVisible; +for (var i = bsVisible.nextSetBit(0); i >= 0; i = bsVisible.nextSetBit(i + 1)) { +if (this.rr.structureTypes[i] === J.c.STR.HELIX || this.isRockets && this.rr.structureTypes[i] === J.c.STR.SHEET) { +this.renderSpecialSegment(this.rr.monomers[i], this.rr.getLeadColix(i), this.rr.mads[i]); +} else if (this.isRockets) { +this.renderPending(); +this.rr.renderHermiteConic(i, true, 7); +}} +this.renderPending(); +}); +Clazz.defineMethod(c$, "renderSpecialSegment", +function(monomer, thisColix, thisMad){ +var proteinstructure = monomer.proteinStructure; +if (this.tPending) { +if (proteinstructure === this.proteinstructurePending && thisMad == this.mad && thisColix == this.colix && proteinstructure.getIndex(monomer) == this.endIndexPending + 1) { +++this.endIndexPending; +return; +}this.renderPending(); +}this.proteinstructurePending = proteinstructure; +this.startIndexPending = this.endIndexPending = proteinstructure.getIndex(monomer); +this.colix = thisColix; +this.mad = thisMad; +this.tPending = true; +}, "JM.AlphaMonomer,~N,~N"); +Clazz.defineMethod(c$, "renderPending", +function(){ +if (!this.tPending) return; +var segments = this.proteinstructurePending.getSegments(); +var renderArrowHead = (this.renderArrowHeads && this.endIndexPending == this.proteinstructurePending.nRes - 1); +if (Clazz.instanceOf(this.proteinstructurePending,"JM.Helix")) this.renderPendingRocketSegment(this.endIndexPending, segments[this.startIndexPending], segments[this.endIndexPending], segments[this.endIndexPending + 1], renderArrowHead); + else if (Clazz.instanceOf(this.proteinstructurePending,"JM.Sheet") && Clazz.instanceOf((this.proteinstructurePending).apolymer,"JM.AminoPolymer")) this.renderPendingSheetPlank(segments[this.startIndexPending], segments[this.endIndexPending], segments[this.endIndexPending + 1], renderArrowHead); +this.tPending = false; +}); +Clazz.defineMethod(c$, "renderPendingRocketSegment", +function(i, pointStart, pointBeforeEnd, pointEnd, renderArrowHead){ +if (this.g3d.setC(this.colix)) { +this.tm.transformPt3f(pointStart, this.screenA); +this.tm.transformPt3f((renderArrowHead ? pointBeforeEnd : pointEnd), this.screenB); +var zMid = Clazz.doubleToInt(Math.floor((this.screenA.z + this.screenB.z) / 2)); +var diameter = (Clazz.floatToInt(this.vwr.tm.scaleToScreen(zMid, this.mad))); +if (!renderArrowHead || pointStart !== pointBeforeEnd) this.g3d.fillCylinderBits(2, diameter, this.screenA, this.screenB); +if (renderArrowHead) { +this.screenA.sub2(pointEnd, pointBeforeEnd); +this.tm.transformPt3f(pointEnd, this.screenC); +var coneDiameter = (this.mad << 1) - (this.mad >> 1); +coneDiameter = Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.doubleToInt(Math.floor(this.screenB.z)), coneDiameter)); +this.g3d.fillConeScreen3f(2, coneDiameter, this.screenB, this.screenC, false); +} else { +}if (this.startIndexPending == this.endIndexPending) return; +var t = this.screenB; +this.screenB = this.screenC; +this.screenC = t; +}}, "~N,JU.P3,JU.P3,JU.P3,~B"); +Clazz.defineMethod(c$, "renderPendingSheetPlank", +function(ptStart, pointBeforeEnd, ptEnd, renderArrowHead){ +if (!this.g3d.setC(this.colix)) return; +if (this.corners == null) { +this.ptC = new JU.P3(); +this.ptTip = new JU.P3(); +this.vW = new JU.V3(); +this.vH = new JU.V3(); +this.screenCorners = new Array(8); +this.corners = new Array(8); +for (var i = 8; --i >= 0; ) { +this.corners[i] = new JU.P3(); +this.screenCorners[i] = new JU.P3(); +} +}if (renderArrowHead) { +this.setBox(1.25, 0.333, pointBeforeEnd); +this.ptTip.scaleAdd2(-0.5, this.vH, ptEnd); +for (var i = 4; --i >= 0; ) { +var corner = this.corners[i]; +corner.setT(this.ptC); +if ((i & 1) != 0) corner.add(this.vW); +if ((i & 2) != 0) corner.add(this.vH); +} +this.corners[4].setT(this.ptTip); +this.corners[5].add2(this.ptTip, this.vH); +this.renderPart(J.renderbio.RocketRenderer.arrowHeadFaces); +ptEnd = pointBeforeEnd; +}this.setBox(1, 0.25, ptStart); +this.vtemp.sub2(ptEnd, ptStart); +if (this.vtemp.lengthSquared() == 0) return; +this.buildBox(this.ptC, this.vW, this.vH, this.vtemp); +this.renderPart(J.renderbio.RocketRenderer.boxFaces); +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz.defineMethod(c$, "setBox", +function(w, h, pt){ +(this.proteinstructurePending).setBox(w, h, pt, this.vW, this.vH, this.ptC, this.mad / 1000); +}, "~N,~N,JU.P3"); +Clazz.defineMethod(c$, "buildBox", +function(pointCorner, scaledWidthVector, scaledHeightVector, lengthVector){ +for (var i = 8; --i >= 0; ) { +var corner = this.corners[i]; +corner.setT(pointCorner); +if ((i & 1) != 0) corner.add(scaledWidthVector); +if ((i & 2) != 0) corner.add(scaledHeightVector); +if ((i & 4) != 0) corner.add(lengthVector); +} +}, "JU.P3,JU.V3,JU.V3,JU.V3"); +Clazz.defineMethod(c$, "renderPart", +function(planes){ +if (this.rr.exportType == 1) { +if (this.meshSurface == null) { +this.meshSurface = new JU.MeshSurface(); +this.meshSurface.vs = this.corners; +this.meshSurface.haveQuads = true; +this.meshSurface.vc = this.corners.length; +}this.meshSurface.pis = planes; +this.meshSurface.pc = planes.length; +this.g3d.drawSurface(this.meshSurface, this.colix); +} else { +for (var i = 8; --i >= 0; ) this.tm.transformPt3f(this.corners[i], this.screenCorners[i]); + +for (var i = planes.length; --i >= 0; ) { +var f = planes[i]; +if (f.length == 3) this.g3d.fillTriangle3f(this.screenCorners[f[0]], this.screenCorners[f[1]], this.screenCorners[f[2]], true); + else this.g3d.fillQuadrilateral(this.screenCorners[f[0]], this.screenCorners[f[1]], this.screenCorners[f[2]], this.screenCorners[f[3]], true); +} +}}, "~A"); +c$.boxFaces = Clazz.newArray(-1, [ Clazz.newIntArray(-1, [0, 1, 3, 2]), Clazz.newIntArray(-1, [0, 2, 6, 4]), Clazz.newIntArray(-1, [0, 4, 5, 1]), Clazz.newIntArray(-1, [7, 5, 4, 6]), Clazz.newIntArray(-1, [7, 6, 2, 3]), Clazz.newIntArray(-1, [7, 3, 1, 5])]); +c$.arrowHeadFaces = Clazz.newArray(-1, [ Clazz.newIntArray(-1, [1, 0, 4]), Clazz.newIntArray(-1, [2, 3, 5]), Clazz.newIntArray(-1, [0, 1, 3, 2]), Clazz.newIntArray(-1, [2, 5, 4, 0]), Clazz.newIntArray(-1, [1, 4, 5, 3])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RocketsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RocketsRenderer.js new file mode 100755 index 000000000000..7097a77f163e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/RocketsRenderer.js @@ -0,0 +1,68 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.renderbio.StrandsRenderer"], "J.renderbio.RocketsRenderer", ["javajs.api.Interface", "JU.P3", "J.c.STR"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isRockets = false; +this.helixRockets = true; +this.renderArrowHeads = false; +this.cordMidPoints = null; +this.rr = null; +Clazz.instantialize(this, arguments);}, J.renderbio, "RocketsRenderer", J.renderbio.StrandsRenderer); +Clazz.overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (!this.setupRR(bioShape, true)) return; +this.calcRopeMidPoints(); +this.renderRockets(); +this.vwr.freeTempPoints(this.cordMidPoints); +}, "J.shapebio.BioShape"); +Clazz.defineMethod(c$, "renderRockets", +function(){ +if (this.rr == null) this.rr = (javajs.api.Interface.getInterface("J.renderbio.RocketRenderer")).set(this); +this.rr.renderRockets(); +}); +Clazz.defineMethod(c$, "setupRR", +function(bioShape, isRockets){ +this.isRockets = isRockets; +if (this.wireframeOnly) { +this.renderStrands(); +} else if (this.wingVectors != null && !this.isCarbohydrate && !(isRockets && this.isNucleic)) { +var val = !this.vwr.getBoolean(603979902); +if (!this.isNucleic && this.renderArrowHeads != val) { +bioShape.falsifyMesh(); +this.renderArrowHeads = val; +}return true; +}return false; +}, "J.shapebio.BioShape,~B"); +Clazz.defineMethod(c$, "calcRopeMidPoints", +function(){ +var midPointCount = this.monomerCount + 1; +this.cordMidPoints = this.vwr.allocTempPoints(midPointCount); +var proteinstructurePrev = null; +var point; +var ptLastRocket = -10; +var pt1 = new JU.P3(); +var pt2 = new JU.P3(); +for (var i = 0; i <= this.monomerCount; ++i) { +point = this.cordMidPoints[i]; +if (i < this.monomerCount && (this.helixRockets && this.structureTypes[i] === J.c.STR.HELIX || this.isRockets && this.structureTypes[i] === J.c.STR.SHEET)) { +var proteinstructure = this.monomers[i].getStructure(); +if (proteinstructure === proteinstructurePrev) { +pt1.add(pt2); +ptLastRocket = i; +} else { +proteinstructurePrev = proteinstructure; +pt1.setT(proteinstructure.getAxisStartPoint()); +pt2.sub2(proteinstructure.getAxisEndPoint(), pt1); +pt2.scale(1 / (proteinstructure.nRes - 1)); +if (ptLastRocket == i - 3) { +this.cordMidPoints[i - 1].ave(this.cordMidPoints[i - 2], pt1); +}}point.setT(pt1); +} else { +if (ptLastRocket == i - 1 && i > 1) this.cordMidPoints[i - 1].setT(this.cordMidPoints[i > 2 ? i - 3 : i - 2]); +point.setT(proteinstructurePrev == null ? this.controlPoints[i] : proteinstructurePrev.getAxisEndPoint()); +proteinstructurePrev = null; +}} +this.controlPoints = this.cordMidPoints; +this.calcScreenControlPoints(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/StrandsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/StrandsRenderer.js new file mode 100755 index 000000000000..739ee6c6864a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/StrandsRenderer.js @@ -0,0 +1,48 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.renderbio.BioShapeRenderer"], "J.renderbio.StrandsRenderer", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.strandCount = 1; +this.strandSeparation = 0; +this.baseStrandOffset = 0; +Clazz.instantialize(this, arguments);}, J.renderbio, "StrandsRenderer", J.renderbio.BioShapeRenderer); +Clazz.overrideMethod(c$, "renderBioShape", +function(bioShape){ +this.renderStrandShape(); +}, "J.shapebio.BioShape"); +Clazz.defineMethod(c$, "renderStrandShape", +function(){ +if (!this.setStrandCount()) return; +this.renderStrands(); +}); +Clazz.defineMethod(c$, "setStrandCount", +function(){ +if (this.wingVectors == null) return false; +this.strandCount = (Clazz.instanceOf(this.shape,"J.shapebio.Strands") ? this.vwr.getStrandCount((this.shape).shapeID) : 10); +this.strandSeparation = (this.strandCount <= 1) ? 0 : 1 / (this.strandCount - 1); +this.baseStrandOffset = ((this.strandCount & 1) == 0 ? this.strandSeparation / 2 : this.strandSeparation); +return true; +}); +Clazz.defineMethod(c$, "renderStrands", +function(){ +var screens; +for (var i = this.strandCount >> 1; --i >= 0; ) { +var f = (i * this.strandSeparation) + this.baseStrandOffset; +screens = this.calcScreens(f, this.mads); +this.renderStrand(screens); +this.vwr.freeTempPoints(screens); +screens = this.calcScreens(-f, this.mads); +this.renderStrand(screens); +this.vwr.freeTempPoints(screens); +} +if (this.strandCount % 2 == 1) { +screens = this.calcScreens(0, this.mads); +this.renderStrand(screens); +this.vwr.freeTempPoints(screens); +}}); +Clazz.defineMethod(c$, "renderStrand", +function(screens){ +for (var i = this.bsVisible.nextSetBit(0); i >= 0; i = this.bsVisible.nextSetBit(i + 1)) this.renderHermiteCylinder(screens, i); + +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderbio/TraceRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/TraceRenderer.js new file mode 100755 index 000000000000..241f2f5a9708 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderbio/TraceRenderer.js @@ -0,0 +1,16 @@ +Clazz.declarePackage("J.renderbio"); +Clazz.load(["J.renderbio.StrandsRenderer"], "J.renderbio.TraceRenderer", null, function(){ +var c$ = Clazz.declareType(J.renderbio, "TraceRenderer", J.renderbio.StrandsRenderer); +Clazz.overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (this.wireframeOnly) this.renderStrands(); + else this.renderTrace(); +}, "J.shapebio.BioShape"); +Clazz.defineMethod(c$, "renderTrace", +function(){ +this.calcScreenControlPoints(); +for (var i = this.bsVisible.nextSetBit(0); i >= 0; i = this.bsVisible.nextSetBit(i + 1)) this.renderHermiteConic(i, false, 7); + +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/rendercgo/CGORenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/rendercgo/CGORenderer.js new file mode 100755 index 000000000000..06c975760465 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/rendercgo/CGORenderer.js @@ -0,0 +1,299 @@ +Clazz.declarePackage("J.rendercgo"); +Clazz.load(["J.renderspecial.DrawRenderer", "JU.P3"], "J.rendercgo.CGORenderer", ["J.shapecgo.CGOMesh", "JU.C", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cgoMesh = null; +this.cmds = null; +this.pt3 = null; +this.colix0 = 0; +this.colix1 = 0; +this.colix2 = 0; +this.normix0 = 0; +this.normix1 = 0; +this.normix2 = 0; +this.normix = 0; +this.doColor = false; +this.ptNormal = 0; +this.ptColor = 0; +this.map0 = null; +this.vX = null; +this.vY = null; +this.x0 = 0; +this.y0 = 0; +this.dx = 0; +this.dy = 0; +this.scaleX = 0; +this.scaleY = 0; +this.is2D = false; +this.is2DPercent = false; +this.isMapped = false; +this.isPS = false; +this.screenZ = 0; +Clazz.instantialize(this, arguments);}, J.rendercgo, "CGORenderer", J.renderspecial.DrawRenderer); +Clazz.prepareFields (c$, function(){ +this.pt3 = new JU.P3(); +}); +Clazz.overrideMethod(c$, "render", +function(){ +this.needTranslucent = false; +this.imageFontScaling = this.vwr.imageFontScaling; +var cgo = this.shape; +for (var i = cgo.meshCount; --i >= 0; ) this.render2(this.mesh = this.cgoMesh = cgo.meshes[i]); + +return this.needTranslucent; +}); +Clazz.defineMethod(c$, "render2", +function(mesh){ +this.diameter = this.cgoMesh.diameter; +this.width = this.cgoMesh.width; +this.cmds = this.cgoMesh.cmds; +if (this.cmds == null || !this.cgoMesh.visible || this.cgoMesh.visibilityFlags == 0) return; +if (!this.g3d.setC(this.cgoMesh.colix)) { +this.needTranslucent = true; +return; +}var n = this.cmds.size(); +var glMode = -1; +var nPts = 0; +this.ptNormal = 0; +this.ptColor = 0; +this.width = 0; +this.screenZ = 2147483647; +this.doColor = !mesh.useColix; +var pt; +var spt; +this.g3d.addRenderer(1073742182); +this.is2D = this.isMapped = false; +this.scaleX = this.scaleY = 1; +for (var j = 0; j < n; j++) { +var type = this.cgoMesh.getInt(j); +if (type == 0) break; +var len = J.shapecgo.CGOMesh.getSize(type, this.is2D); +if (len < 0) { +JU.Logger.error("CGO unknown type: " + type); +return; +}switch (type) { +default: +System.out.println("CGO ? " + type); +break; +case -111: +break; +case -107: +this.diameter = this.cgoMesh.getInt(j + 1); +break; +case -100: +this.width = this.cgoMesh.getFloat(j + 1); +break; +case -101: +this.isMapped = false; +var f = this.cgoMesh.getFloat(j + 1); +if (f == 0) { +this.is2D = false; +} else { +this.is2DPercent = (f > 0); +this.screenZ = (this.is2DPercent ? this.tm.zValueFromPercent(Clazz.floatToInt(f)) : -Clazz.floatToInt(f)); +this.is2D = true; +}break; +case -103: +this.isPS = true; +case -102: +this.is2D = this.isMapped = true; +this.map0 = new JU.P3(); +this.vX = new JU.P3(); +this.vY = new JU.P3(); +this.cgoMesh.getPoint(j + 1, this.map0); +this.cgoMesh.getPoint(j + 4, this.vX); +this.vX.sub(this.map0); +this.cgoMesh.getPoint(j + 7, this.vY); +this.vY.sub(this.map0); +this.x0 = this.cgoMesh.getFloat(j + 10); +this.y0 = this.cgoMesh.getFloat(j + 11); +this.dx = this.cgoMesh.getFloat(j + 12) - this.x0; +this.dy = this.cgoMesh.getFloat(j + 13) - this.y0; +if (this.isPS) break; +case -108: +this.scaleX = this.cgoMesh.getFloat(this.isPS ? j + 1 : j + 14); +this.scaleY = this.cgoMesh.getFloat(this.isPS ? j + 2 : j + 15); +break; +case 28: +break; +case 1: +this.getPoint(j + 2, this.pt0, this.pt0i); +this.getPoint(j + (this.is2D ? 4 : 5), this.pt1, this.pt1i); +this.drawEdge(1, 2, false, this.pt0, this.pt1, this.pt0i, this.pt1i); +break; +case 2: +glMode = this.cgoMesh.getInt(j + 1); +case -104: +nPts = 0; +break; +case -105: +glMode = -105; +break; +case -106: +if (glMode != -105) break; +glMode = 2; +case 3: +if (glMode == 2 && nPts >= 3) this.drawEdge(1, 2, true, this.pt0, this.pt3, this.pt0i, this.pt3i); +nPts = 0; +break; +case 6: +this.getColix(true); +break; +case 5: +this.normix = this.getNormix(); +break; +case -109: +nPts = 0; +case -110: +glMode = 2; +case 4: +if (nPts++ == 0) this.getPoint(j, this.pt0, this.pt0i); +switch (glMode) { +case -1: +break; +case 0: +this.drawEdge(1, 1, false, this.pt0, this.pt0, this.pt0i, this.pt0i); +break; +case 1: +if (nPts == 2) { +this.getPoint(j, this.pt1, this.pt1i); +this.drawEdge(1, 2, false, this.pt0, this.pt1, this.pt0i, this.pt1i); +nPts = 0; +}break; +case 2: +case 3: +if (nPts == 1) { +if (glMode == 2) { +this.pt3.setT(this.pt0); +this.pt3i.setT(this.pt0i); +}break; +}this.getPoint(j, this.pt1, this.pt1i); +pt = this.pt0; +this.pt0 = this.pt1; +this.pt1 = pt; +spt = this.pt0i; +this.pt0i = this.pt1i; +this.pt1i = spt; +this.drawEdge(1, 2, true, this.pt0, this.pt1, this.pt0i, this.pt1i); +break; +case 4: +switch (nPts) { +case 1: +this.normix1 = this.normix2 = this.normix0 = this.normix; +this.colix1 = this.colix2 = this.colix0 = this.colix; +break; +case 2: +this.getPoint(j, this.pt1, this.pt1i); +break; +case 3: +this.getPoint(j, this.pt2, this.pt2i); +this.fillTriangle(); +nPts = 0; +break; +} +break; +case 5: +switch (nPts) { +case 1: +this.normix1 = this.normix2 = this.normix0 = this.normix; +this.colix1 = this.colix2 = this.colix0 = this.colix; +break; +case 2: +this.getPoint(j, this.pt2, this.pt2i); +break; +default: +if (nPts % 2 == 0) { +pt = this.pt0; +this.pt0 = this.pt2; +spt = this.pt0i; +this.pt0i = this.pt2i; +} else { +pt = this.pt1; +this.pt1 = this.pt2; +spt = this.pt1i; +this.pt1i = this.pt2i; +}this.pt2 = pt; +this.pt2i = spt; +this.getPoint(j, this.pt2, this.pt2i); +this.fillTriangle(); +break; +} +break; +case 6: +switch (nPts) { +case 1: +this.normix1 = this.normix2 = this.normix0 = this.normix; +this.colix1 = this.colix2 = this.colix0 = this.colix; +this.pt1.setT(this.pt0); +this.pt1i.setT(this.pt0i); +break; +case 2: +this.getPoint(j, this.pt0, this.pt0i); +break; +default: +this.pt2.setT(this.pt0); +this.pt2i.setT(this.pt0i); +this.getPoint(j, this.pt0, this.pt0i); +this.fillTriangle(); +break; +} +break; +} +break; +case 14: +this.getPoint(j, this.pt0, this.pt0i); +this.getPoint(j + (this.is2D ? 2 : 3), this.pt1, this.pt1i); +this.width = this.cgoMesh.getFloat(j + 7); +this.getColix(true); +this.getColix(false); +this.drawEdge(1, 2, false, this.pt0, this.pt1, this.pt0i, this.pt1i); +this.width = 0; +break; +case 8: +this.getPoint(j, this.pt0, this.pt0i); +this.getPoint(j + (this.is2D ? 2 : 3), this.pt1, this.pt1i); +this.getPoint(j + (this.is2D ? 4 : 6), this.pt2, this.pt2i); +this.normix0 = this.getNormix(); +this.normix1 = this.getNormix(); +this.normix2 = this.getNormix(); +this.colix0 = this.getColix(false); +this.colix1 = this.getColix(false); +this.colix2 = this.getColix(false); +this.fillTriangle(); +break; +} +j += len; +} +}, "J.shape.Mesh"); +Clazz.defineMethod(c$, "getNormix", +function(){ +return this.cgoMesh.nList.get(this.ptNormal++).shortValue(); +}); +Clazz.defineMethod(c$, "getColix", +function(doSet){ +if (this.doColor) { +this.colix = JU.C.copyColixTranslucency(this.cgoMesh.colix, this.cgoMesh.cList.get(this.ptColor++).shortValue()); +if (doSet) this.g3d.setC(this.colix); +}return this.colix; +}, "~B"); +Clazz.defineMethod(c$, "getPoint", +function(i, pt, pti){ +this.cgoMesh.getPoint(i + 1, pt); +if (this.isMapped) { +var fx = (pt.x * this.scaleX - this.x0) / this.dx; +var fy = (pt.y * this.scaleY - this.y0) / this.dy; +pt.scaleAdd2(fx, this.vX, this.map0); +pt.scaleAdd2(fy, this.vY, pt); +} else if (this.is2D) { +pti.x = (this.is2DPercent ? this.tm.percentToPixels('x', pt.x) : Clazz.floatToInt(pt.x)); +pti.y = (this.is2DPercent ? this.tm.percentToPixels('y', pt.y) : Clazz.floatToInt(pt.y)); +pti.z = this.screenZ; +this.tm.unTransformPoint(pt, pt); +return; +}this.tm.transformPtScr(pt, pti); +}, "~N,JU.P3,JU.P3i"); +Clazz.defineMethod(c$, "fillTriangle", +function(){ +this.g3d.fillTriangle3CNBits(this.pt0, this.colix0, this.normix0, this.pt1, this.colix1, this.normix1, this.pt2, this.colix2, this.normix2, true); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DipolesRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DipolesRenderer.js new file mode 100755 index 000000000000..163e6031ef56 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DipolesRenderer.js @@ -0,0 +1,132 @@ +Clazz.declarePackage("J.renderspecial"); +Clazz.load(["J.render.ShapeRenderer", "JU.P3", "$.V3"], "J.renderspecial.DipolesRenderer", ["JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dipoleVectorScale = 0; +this.offset = null; +this.screens3f = null; +this.points = null; +this.cross0 = null; +this.cross1 = null; +this.diameter = 0; +this.headWidthPixels = 0; +this.crossWidthPixels = 0; +this.offsetSide = 0; +this.colixA = 0; +this.colixB = 0; +this.noCross = false; +Clazz.instantialize(this, arguments);}, J.renderspecial, "DipolesRenderer", J.render.ShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.offset = new JU.V3(); +this.screens3f = new Array(6); +this.points = new Array(6); +{ +for (var i = 0; i < 6; i++) { +this.screens3f[i] = new JU.P3(); +this.points[i] = new JU.P3(); +} +}this.cross0 = new JU.P3(); +this.cross1 = new JU.P3(); +}); +Clazz.overrideMethod(c$, "render", +function(){ +var dipoles = this.shape; +this.dipoleVectorScale = this.vwr.getFloat(570425354); +var needTranslucent = false; +var vis = this.vwr.ms.getVisibleSet(false); +for (var i = dipoles.dipoleCount; --i >= 0; ) { +var dipole = dipoles.dipoles[i]; +if (dipole.visibilityFlags != 0 && (dipole.atoms[0] == null || !this.ms.isAtomHidden(dipole.atoms[0].i)) && (dipole.bsMolecule == null || dipole.bsMolecule.intersects(vis)) && this.renderDipoleVector(dipole, vis)) needTranslucent = true; +} +return needTranslucent; +}); +Clazz.defineMethod(c$, "renderDipoleVector", +function(dipole, vis){ +this.mad = dipole.mad; +this.offsetSide = dipole.offsetSide; +this.noCross = dipole.noCross; +this.colixA = (dipole.bond == null ? dipole.colix : JU.C.getColixInherited(dipole.colix, dipole.bond.colix)); +this.colixB = this.colixA; +if (dipole.atoms[0] != null) { +this.colixA = JU.C.getColixInherited(this.colixA, dipole.atoms[0].colixAtom); +this.colixB = JU.C.getColixInherited(this.colixB, dipole.atoms[1].colixAtom); +}if (this.colixA == 0) this.colixA = 5; +if (this.colixB == 0) this.colixB = 5; +if (this.dipoleVectorScale < 0) { +var c = this.colixA; +this.colixA = this.colixB; +this.colixB = c; +}var factor = dipole.offsetAngstroms / dipole.dipoleValue; +if (dipole.lstDipoles == null) return this.renderVector(dipole.vector, dipole.origin, dipole.center, factor, false); +var needTranslucent = false; +for (var i = dipole.lstDipoles.size(); --i >= 0; ) { +var o = dipole.lstDipoles.get(i); +var v = o[0]; +var origin = o[1]; +var bsAtoms = o[2]; +if (bsAtoms.intersects(vis)) needTranslucent = this.renderVector(v, origin, null, dipole.offsetAngstroms, true); +} +return needTranslucent; +}, "J.shapespecial.Dipole,JU.BS"); +Clazz.defineMethod(c$, "renderVector", +function(vector, origin, dcenter, factor, isGroup){ +this.offset.setT(vector); +if (dcenter == null) { +if (isGroup) { +this.offset.normalize(); +this.offset.scale(factor); +} else { +this.offset.scale(factor); +if (this.dipoleVectorScale < 0) this.offset.add(vector); +}this.points[0].add2(origin, this.offset); +} else { +this.offset.scale(-0.5 * this.dipoleVectorScale); +this.points[0].add2(dcenter, this.offset); +if (factor != 0) { +this.offset.setT(vector); +this.offset.scale(factor); +this.points[0].add(this.offset); +}}this.points[1].scaleAdd2(this.dipoleVectorScale * 0.1, vector, this.points[0]); +this.points[2].scaleAdd2(this.dipoleVectorScale * (0.14), vector, this.points[0]); +this.points[3].scaleAdd2(this.dipoleVectorScale / 2, vector, this.points[0]); +this.points[4].scaleAdd2(this.dipoleVectorScale * 0.9, vector, this.points[0]); +this.points[5].scaleAdd2(this.dipoleVectorScale, vector, this.points[0]); +this.offset.setT(this.points[3]); +this.offset.cross(this.offset, vector); +if (this.offset.length() == 0) { +this.offset.set(this.points[3].x + 0.2345, this.points[3].y + 0.1234, this.points[3].z + 0.4321); +this.offset.cross(this.offset, vector); +}this.offset.scale(this.offsetSide / this.offset.length()); +for (var i = 0; i < 6; i++) this.points[i].add(this.offset); + +for (var i = 0; i < 6; i++) this.tm.transformPtScrT3(this.points[i], this.screens3f[i]); + +this.tm.transformPt3f(this.points[1], this.cross0); +this.tm.transformPt3f(this.points[2], this.cross1); +var d = this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.screens3f[3].z), this.mad); +this.diameter = Clazz.floatToInt(d); +this.headWidthPixels = Clazz.doubleToInt(Math.floor(d * 2.0)); +if (this.headWidthPixels < this.diameter + 5) this.headWidthPixels = this.diameter + 5; +this.crossWidthPixels = this.headWidthPixels; +this.colix = this.colixA; +if (this.colix == this.colixB) { +if (!this.g3d.setC(this.colix)) return true; +this.g3d.fillCylinderBits(2, this.diameter, this.screens3f[0], this.screens3f[4]); +if (!this.noCross) this.g3d.fillCylinderBits(2, this.crossWidthPixels, this.cross0, this.cross1); +this.g3d.fillConeScreen3f(2, this.headWidthPixels, this.screens3f[4], this.screens3f[5], false); +return false; +}var needTranslucent = false; +if (this.g3d.setC(this.colix)) { +this.g3d.fillCylinderBits(2, this.diameter, this.screens3f[0], this.screens3f[3]); +if (!this.noCross) this.g3d.fillCylinderBits(2, this.crossWidthPixels, this.cross0, this.cross1); +} else { +needTranslucent = true; +}this.colix = this.colixB; +if (this.g3d.setC(this.colix)) { +this.g3d.fillCylinderBits(2, this.diameter, this.screens3f[3], this.screens3f[4]); +this.g3d.fillConeScreen3f(2, this.headWidthPixels, this.screens3f[4], this.screens3f[5], false); +} else { +needTranslucent = true; +}return needTranslucent; +}, "JU.V3,JU.P3,JU.P3,~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DotsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DotsRenderer.js new file mode 100755 index 000000000000..720b78231556 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DotsRenderer.js @@ -0,0 +1,82 @@ +Clazz.declarePackage("J.renderspecial"); +Clazz.load(["J.render.ShapeRenderer", "JU.P3i", "$.V3"], "J.renderspecial.DotsRenderer", ["J.shapespecial.Dots", "JU.C", "$.Geodesic"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.iShowSolid = false; +this.screenLevel = 0; +this.screenDotCount = 0; +this.scrCoords = null; +this.faceMap = null; +this.v3temp = null; +this.scrTemp = null; +this.dotScale = 0; +Clazz.instantialize(this, arguments);}, J.renderspecial, "DotsRenderer", J.render.ShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.v3temp = new JU.V3(); +this.scrTemp = new JU.P3i(); +}); +Clazz.overrideMethod(c$, "initRenderer", +function(){ +this.screenLevel = J.shapespecial.Dots.MAX_LEVEL; +this.screenDotCount = JU.Geodesic.getVertexCount(J.shapespecial.Dots.MAX_LEVEL); +this.scrCoords = Clazz.newIntArray (3 * this.screenDotCount, 0); +}); +Clazz.overrideMethod(c$, "render", +function(){ +this.render1(this.shape); +return false; +}); +Clazz.defineMethod(c$, "render1", +function(dots){ +if (!this.iShowSolid && !this.g3d.setC(4)) return; +var sppa = Clazz.floatToInt(this.vwr.getScalePixelsPerAngstrom(true)); +this.screenLevel = (this.iShowSolid || sppa > 20 ? 3 : sppa > 10 ? 2 : sppa > 5 ? 1 : 0); +if (!this.iShowSolid) this.screenLevel += this.vwr.getInt(553648139) - 3; +this.screenLevel = Math.max(Math.min(this.screenLevel, J.shapespecial.Dots.MAX_LEVEL), 0); +this.screenDotCount = JU.Geodesic.getVertexCount(this.screenLevel); +this.dotScale = this.vwr.getInt(553648140); +var maps = dots.ec.getDotsConvexMaps(); +for (var i = dots.ec.getDotsConvexMax(); --i >= 0; ) { +var atom = this.ms.at[i]; +var map = maps[i]; +if (map == null || !this.isVisibleForMe(atom) || !this.g3d.isInDisplayRange(atom.sX, atom.sY)) continue; +try { +var radius = dots.ec.getAppropriateRadius(i); +if (this.iShowSolid && this.exportType == 1) { +this.g3d.drawAtom(atom, radius); +continue; +}var nPoints = 0; +var j = 0; +var iDot = Math.min(map.size(), this.screenDotCount); +while (--iDot >= 0) { +if (!map.get(iDot)) continue; +this.v3temp.scaleAdd2(radius, JU.Geodesic.getVertexVector(iDot), atom); +this.tm.transformPtScr(this.v3temp, this.scrTemp); +if (this.faceMap != null) this.faceMap[iDot] = j; +this.scrCoords[j++] = this.scrTemp.x; +this.scrCoords[j++] = this.scrTemp.y; +this.scrCoords[j++] = this.scrTemp.z; +++nPoints; +} +if (nPoints != 0) this.renderConvex(JU.C.getColixInherited(dots.colixes[i], atom.colixAtom), map, nPoints); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("Dots rendering error"); +System.out.println(e.toString()); +} else { +throw e; +} +} +} +}, "J.shapespecial.Dots"); +Clazz.defineMethod(c$, "renderConvex", +function(colix, map, nPoints){ +this.colix = JU.C.getColixTranslucent3(colix, false, 0); +this.renderDots(nPoints); +}, "~N,JU.BS,~N"); +Clazz.defineMethod(c$, "renderDots", +function(nPoints){ +this.g3d.setC(this.colix); +this.g3d.drawPoints(nPoints, this.scrCoords, this.dotScale); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DrawRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DrawRenderer.js new file mode 100755 index 000000000000..b4d0960fcf2e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/DrawRenderer.js @@ -0,0 +1,388 @@ +Clazz.declarePackage("J.renderspecial"); +Clazz.load(["J.render.MeshRenderer", "JU.BS", "$.P3", "$.P3i", "$.V3"], "J.renderspecial.DrawRenderer", ["JU.A4", "$.M3", "$.Measure", "J.shapespecial.Draw", "JU.C", "$.GData"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.drawType = null; +this.dmesh = null; +this.controlHermites = null; +this.pt0 = null; +this.pt1 = null; +this.pt2 = null; +this.vTemp = null; +this.vTemp2 = null; +this.pt0f = null; +this.pt0i = null; +this.s0f = null; +this.s1f = null; +this.s2f = null; +this.bsHandles = null; +this.haveNotifiedHandles = false; +Clazz.instantialize(this, arguments);}, J.renderspecial, "DrawRenderer", J.render.MeshRenderer); +Clazz.prepareFields (c$, function(){ +this.pt0 = new JU.P3(); +this.pt1 = new JU.P3(); +this.pt2 = new JU.P3(); +this.vTemp = new JU.V3(); +this.vTemp2 = new JU.V3(); +this.pt0f = new JU.P3(); +this.pt0i = new JU.P3i(); +this.bsHandles = new JU.BS(); +}); +Clazz.overrideMethod(c$, "render", +function(){ +this.needTranslucent = false; +this.imageFontScaling = this.vwr.imageFontScaling; +var draw = this.shape; +for (var i = draw.meshCount; --i >= 0; ) { +var mesh = this.dmesh = draw.meshes[i]; +if (mesh == null) { +System.out.println("DrawRenderer mesh is null?"); +return false; +}if (this.dmesh.thisModelOnly && this.vwr.am.cmi < 0) continue; +if (mesh.connectedAtoms != null) { +if (mesh.connectedAtoms[0] < 0) continue; +mesh.vs = new Array(4); +mesh.vc = 4; +var c = mesh.connectedAtoms; +for (var j = 0; j < 4; j++) mesh.vs[j] = (c[j] < 0 ? mesh.vs[j - 1] : this.vwr.ms.at[c[j]]); + +mesh.recalcAltVertices = true; +}if (this.renderMesh2(mesh)) this.renderInfo(); +if (!this.isExport && mesh.visibilityFlags != 0 && (this.vwr.getDrawHover() || this.vwr.getPickingMode() == 4)) { +if (!this.g3d.setC(JU.C.getColixTranslucent3(23, true, 0.5))) this.needTranslucent = true; + else this.renderHandles(); +}} +return this.needTranslucent; +}); +Clazz.overrideMethod(c$, "isPolygonDisplayable", +function(i){ +return J.shapespecial.Draw.isPolygonDisplayable(this.dmesh, i) && (this.dmesh.modelFlags == null || this.dmesh.bsMeshesVisible.get(i)); +}, "~N"); +Clazz.overrideMethod(c$, "render2", +function(isExport){ +this.drawType = this.dmesh.drawType; +this.diameter = this.dmesh.diameter; +this.width = this.dmesh.width; +if (this.mesh.connectedAtoms != null) this.getConnectionPoints(); +if (this.mesh.lineData != null) { +this.drawLineData(this.mesh.lineData); +return; +}var nPoints = this.vertexCount; +var isCurved = ((this.drawType === J.shapespecial.Draw.EnumDrawType.CURVE || this.drawType === J.shapespecial.Draw.EnumDrawType.ARROW || this.drawType === J.shapespecial.Draw.EnumDrawType.ARC) && this.vertexCount > 2); +if (this.width > 0 && isCurved || this.drawType === J.shapespecial.Draw.EnumDrawType.ARROW) { +this.pt1f.set(0, 0, 0); +var n = (this.drawType === J.shapespecial.Draw.EnumDrawType.ARC ? 2 : this.vertexCount); +for (var i = 0; i < n; i++) this.pt1f.add(this.vertices[i]); + +this.pt1f.scale(1 / n); +this.tm.transformPtScr(this.pt1f, this.pt1i); +this.diameter = Clazz.floatToInt(this.vwr.tm.scaleToScreen(this.pt1i.z, Clazz.doubleToInt(Math.floor(this.width * 1000)))); +if (this.diameter == 0) this.diameter = 1; +}if (this.dmesh.haveXyPoints && this.drawXYPoints()) return; +var tension = 5; +switch (this.drawType) { +case J.shapespecial.Draw.EnumDrawType.CYLINDER: +this.allowDashed = false; +default: +this.render2b(false); +return; +case J.shapespecial.Draw.EnumDrawType.CIRCULARPLANE: +if (this.dmesh.scale > 0) this.width *= this.dmesh.scale; +this.allowDashed = false; +this.render2b(false); +return; +case J.shapespecial.Draw.EnumDrawType.CIRCLE: +this.tm.transformPtScr(this.vertices[0], this.pt1i); +if (this.diameter == 0 && this.width == 0) this.width = 1.0; +if (this.dmesh.scale > 0) this.width *= this.dmesh.scale; +if (this.width > 0) this.diameter = Clazz.floatToInt(this.vwr.tm.scaleToScreen(this.pt1i.z, Clazz.doubleToInt(Math.floor(this.width * 1000)))); +if (this.diameter > 0 && (this.mesh.drawTriangles || this.mesh.fillTriangles)) { +this.g3d.addRenderer(1073741880); +this.g3d.drawFilledCircle(this.colix, this.mesh.fillTriangles ? this.colix : 0, this.diameter, this.pt1i.x, this.pt1i.y, this.pt1i.z); +}return; +case J.shapespecial.Draw.EnumDrawType.LINE_SEGMENT: +for (var i = 0; i < nPoints - 1; i++) this.drawEdge(i, i + 1, true, this.vertices[i], this.vertices[i + 1], this.screens[i], this.screens[i + 1]); + +return; +case J.shapespecial.Draw.EnumDrawType.CURVE: +break; +case J.shapespecial.Draw.EnumDrawType.ARC: +var ptRef = (this.vertexCount > 2 ? this.vertices[2] : J.shapespecial.Draw.randomPoint()); +var nDegreesOffset = (this.vertexCount > 3 ? this.vertices[3].x : 0); +var theta = (this.vertexCount > 3 ? this.vertices[3].y : 360); +if (theta == 0) return; +var fractionalOffset = (this.vertexCount > 3 ? this.vertices[3].z : 0); +nPoints = this.setArc(this.vertices[0], this.vertices[1], ptRef, nDegreesOffset, theta, fractionalOffset, this.dmesh.scale); +if (this.dmesh.isVector && !this.dmesh.noHead) { +this.renderArrowHead(this.pt0, this.pt1, 0.3, false, false, this.dmesh.isBarb); +this.tm.transformPtScr(this.pt1f, this.screens[nPoints - 1]); +this.tm.transformPtScrT3(this.pt1f, this.p3Screens[nPoints - 1]); +}this.pt1f.setT(this.pt2); +break; +case J.shapespecial.Draw.EnumDrawType.ARROW: +if (!isCurved) { +this.renderArrowHead(this.vertices[0], this.vertices[1], 0, false, true, this.dmesh.isBarb); +return; +}var nHermites = 5; +if (this.controlHermites == null || this.controlHermites.length < nHermites + 1) { +this.controlHermites = new Array(nHermites + 1); +}JU.GData.getHermiteList(tension, this.vertices[this.vertexCount - 3], this.vertices[this.vertexCount - 2], this.vertices[this.vertexCount - 1], this.vertices[this.vertexCount - 1], this.vertices[this.vertexCount - 1], this.controlHermites, 0, nHermites, true); +this.renderArrowHead(this.controlHermites[nHermites - 2], this.controlHermites[nHermites - 1], 0, false, false, this.dmesh.isBarb); +break; +} +if (this.diameter == 0) this.diameter = 3; +if (isCurved) { +this.g3d.addRenderer(553648143); +for (var i = 0, i0 = 0; i < nPoints - 1; i++) { +this.g3d.fillHermite(tension, this.diameter, this.diameter, this.diameter, this.p3Screens[i0], this.p3Screens[i], this.p3Screens[i + 1], this.p3Screens[i + (i == nPoints - 2 ? 1 : 2)]); +i0 = i; +} +} else { +this.render2b(false); +}}, "~B"); +Clazz.defineMethod(c$, "drawXYPoints", +function(){ +if (this.dmesh.isVector) { +var ptXY = 0; +for (var i = 0; i < 2; i++) if (J.shapespecial.Draw.is2DPoint(this.vertices[i])) ptXY += i + 1; + +if (--ptXY < 2) { +this.renderXyArrow(ptXY); +return true; +}} else if (this.drawType === J.shapespecial.Draw.EnumDrawType.POINT || this.drawType === J.shapespecial.Draw.EnumDrawType.MULTIPLE) { +this.renderXyPoint(); +return true; +}return false; +}); +Clazz.defineMethod(c$, "setArc", +function(v1, v2, ptRef, nDegreesOffset, theta, fractionalOffset, scale){ +this.vTemp.sub2(v2, v1); +this.pt1f.scaleAdd2(fractionalOffset, this.vTemp, v1); +var mat = new JU.M3().setAA(JU.A4.newVA(this.vTemp, (nDegreesOffset * 3.141592653589793 / 180))); +this.vTemp2.sub2(ptRef, v1); +this.vTemp2.cross(this.vTemp, this.vTemp2); +this.vTemp2.cross(this.vTemp2, this.vTemp); +this.vTemp2.normalize(); +this.vTemp2.scale(scale / 2); +mat.rotate(this.vTemp2); +var degrees = theta / 5; +while (Math.abs(degrees) > 5) degrees /= 2; + +var nPoints = Math.round(theta / degrees) + 1; +while (nPoints < 10) { +degrees /= 2; +nPoints = Math.round(theta / degrees) + 1; +} +mat.setAA(JU.A4.newVA(this.vTemp, (degrees * 3.141592653589793 / 180))); +this.screens = this.vwr.allocTempScreens(nPoints); +this.p3Screens = this.vwr.allocTempPoints(nPoints); +var iBase = nPoints - (this.dmesh.scale < 2 ? 3 : 3); +for (var i = 0; i < nPoints; i++) { +if (i == iBase) this.pt0.setT(this.pt1); +this.pt1.scaleAdd2(1, this.vTemp2, this.pt1f); +if (i == 0) this.pt2.setT(this.pt1); +this.tm.transformPtScr(this.pt1, this.screens[i]); +this.tm.transformPtScrT3(this.pt1, this.p3Screens[i]); +mat.rotate(this.vTemp2); +} +return nPoints; +}, "JU.T3,JU.T3,JU.T3,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getConnectionPoints", +function(){ +this.vertexCount = 3; +var dmax = 3.4028235E38; +var i0 = 0; +var j0 = 0; +for (var i = 0; i < 2; i++) for (var j = 2; j < 4; j++) { +var d = this.vertices[i].distance(this.vertices[j]); +if (d < dmax) { +dmax = d; +i0 = i; +j0 = j; +}} + +this.pt0.ave(this.vertices[0], this.vertices[1]); +this.pt2.ave(this.vertices[2], this.vertices[3]); +this.pt1.ave(this.pt0, this.pt2); +this.vertices[3] = JU.P3.newP(this.vertices[i0]); +this.vertices[3].add(this.vertices[j0]); +this.vertices[3].scale(0.5); +this.vertices[1] = JU.P3.newP(this.pt1); +this.vertices[0] = JU.P3.newP(this.pt0); +this.vertices[2] = JU.P3.newP(this.pt2); +for (var i = 0; i < 4; i++) this.tm.transformPtScr(this.vertices[i], this.screens[i]); + +var f = 4 * this.getArrowScale(); +var endoffset = 0.2; +var offsetside = (this.width == 0 ? 0.1 : this.width); +this.pt0.set(this.screens[0].x, this.screens[0].y, this.screens[0].z); +this.pt1.set(this.screens[1].x, this.screens[1].y, this.screens[1].z); +this.pt2.set(this.screens[3].x, this.screens[3].y, this.screens[3].z); +var dx = (this.screens[1].x - this.screens[0].x) * f; +var dy = (this.screens[1].y - this.screens[0].y) * f; +if (dmax == 0 || JU.Measure.computeTorsion(this.pt2, this.pt0, JU.P3.new3(this.pt0.x, this.pt0.y, 10000), this.pt1, false) > 0) { +dx = -dx; +dy = -dy; +}this.pt2.set(dy, -dx, 0); +this.pt1.add(this.pt2); +this.tm.unTransformPoint(this.pt1, this.vertices[1]); +this.pt2.scale(offsetside); +this.vTemp.sub2(this.vertices[1], this.vertices[0]); +this.vTemp.scale(endoffset); +this.vertices[0].add(this.vTemp); +this.vTemp.sub2(this.vertices[1], this.vertices[2]); +this.vTemp.scale(endoffset); +this.vertices[2].add(this.vTemp); +for (var i = 0; i < 3; i++) { +this.tm.transformPtScr(this.vertices[i], this.screens[i]); +if (offsetside != 0) { +this.screens[i].x += Math.round(this.pt2.x); +this.screens[i].y += Math.round(this.pt2.y); +this.pt1.set(this.screens[i].x, this.screens[i].y, this.screens[i].z); +this.tm.unTransformPoint(this.pt1, this.vertices[i]); +}} +}); +Clazz.defineMethod(c$, "drawLineData", +function(lineData){ +if (this.diameter == 0) this.diameter = 3; +for (var i = lineData.size(); --i >= 0; ) { +var pts = lineData.get(i); +this.tm.transformPtScr(pts[0], this.pt1i); +this.tm.transformPtScr(pts[1], this.pt2i); +this.drawEdge(-1, -2, true, pts[0], pts[1], this.pt1i, this.pt2i); +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "renderXyPoint", +function(){ +var f = (this.g3d.isAntialiased() ? 2 : 1); +this.pt0.setT(this.vertices[0]); +if (this.diameter == 0) this.diameter = Clazz.floatToInt(this.width); +if (this.pt0.z == -3.4028235E38) { +this.pt0.x *= this.vwr.tm.width / 100; +this.pt0.y *= this.vwr.tm.height / 100; +this.diameter = Clazz.floatToInt(this.diameter * this.vwr.getScreenDim() / 100); +}this.diameter *= f; +this.pt1i.set(Clazz.floatToInt(this.pt0.x), Clazz.floatToInt(this.vwr.tm.height - this.pt0.y), Clazz.floatToInt(this.vwr.tm.cameraDistance)); +this.g3d.fillSphereI(this.diameter, this.pt1i); +}); +Clazz.defineMethod(c$, "renderXyArrow", +function(ptXY){ +var ptXYZ = 1 - ptXY; +var arrowPt = new Array(2); +arrowPt[ptXYZ] = this.pt1; +arrowPt[ptXY] = this.pt0; +this.pt0.set(this.screens[ptXY].x, this.screens[ptXY].y, this.screens[ptXY].z); +this.tm.rotatePoint(this.vertices[ptXYZ], this.pt1); +this.pt1.z *= -1; +var zoomDimension = this.vwr.getScreenDim(); +var scaleFactor = zoomDimension / 20; +this.pt1.scaleAdd2(this.dmesh.scale * scaleFactor, this.pt1, this.pt0); +if (this.diameter == 0) this.diameter = 1; +if (this.diameter < 0) this.g3d.drawDashedLineBits(8, 4, this.pt0, this.pt1); + else this.g3d.fillCylinderBits(2, this.diameter, this.pt0, this.pt1); +this.renderArrowHead(this.pt0, this.pt1, 0, true, false, false); +}, "~N"); +Clazz.defineMethod(c$, "renderArrowHead", +function(pt1, pt2, factor2, isTransformed, withShaft, isBarb){ +if (this.dmesh.noHead) return; +if (this.s0f == null) { +this.s0f = new JU.P3(); +this.s1f = new JU.P3(); +this.s2f = new JU.P3(); +}var fScale = this.getArrowScale(); +if (isTransformed) fScale *= 40; +if (factor2 > 0) fScale *= factor2; +this.pt0f.setT(pt1); +this.pt2f.setT(pt2); +var d = this.pt0f.distance(this.pt2f); +if (d == 0) return; +this.vTemp.sub2(this.pt2f, this.pt0f); +this.vTemp.normalize(); +this.vTemp.scale(fScale / 5); +if (!withShaft) this.pt2f.add(this.vTemp); +this.vTemp.scale(5); +this.pt1f.sub2(this.pt2f, this.vTemp); +if (isTransformed) { +this.s1f.setT(this.pt1f); +this.s2f.setT(this.pt2f); +} else { +this.tm.transformPtScrT3(this.pt2f, this.s2f); +this.tm.transformPtScrT3(this.pt1f, this.s1f); +this.tm.transformPtScrT3(this.pt0f, this.s0f); +}if (this.s2f.z == 1 || this.s1f.z == 1) return; +var headDiameter; +if (this.diameter > 0) { +headDiameter = this.diameter * 3; +} else { +this.vTemp.set(this.s2f.x - this.s1f.x, this.s2f.y - this.s1f.y, this.s2f.z - this.s1f.z); +headDiameter = Math.round(this.vTemp.length() * .5); +this.diameter = Clazz.doubleToInt(headDiameter / 5); +}if (this.diameter < 1) this.diameter = 1; +if (headDiameter > 2) this.g3d.fillConeScreen3f(2, headDiameter, this.s1f, this.s2f, isBarb); +if (withShaft) this.g3d.fillCylinderScreen3I(2, this.diameter, this.s0f, this.s1f, null, null, 0); +}, "JU.T3,JU.T3,~N,~B,~B,~B"); +Clazz.defineMethod(c$, "getArrowScale", +function(){ +var fScale = (this.dmesh.isScaleSet ? this.dmesh.scale : 0); +if (fScale == 0) fScale = this.vwr.getFloat(570425352) * (this.dmesh.connectedAtoms == null ? 1 : 0.5); +if (fScale <= 0) fScale = 0.5; +return fScale; +}); +Clazz.defineMethod(c$, "renderHandles", +function(){ +var diameter = Math.round(10 * this.imageFontScaling); +switch (this.drawType) { +case J.shapespecial.Draw.EnumDrawType.NONE: +return; +default: +var colixFill = JU.C.getColixTranslucent3(23, true, 0.5); +this.bsHandles.clearAll(); +this.g3d.addRenderer(1073741880); +for (var i = this.dmesh.pc; --i >= 0; ) { +if (!this.isPolygonDisplayable(i)) continue; +var vertexIndexes = this.dmesh.pis[i]; +if (vertexIndexes == null) continue; +for (var j = (this.dmesh.isDrawPolygon ? 3 : vertexIndexes.length); --j >= 0; ) { +var k = vertexIndexes[j]; +if (this.bsHandles.get(k)) continue; +this.bsHandles.set(k); +if (k >= this.screens.length) { +if (!this.haveNotifiedHandles) { +System.out.println("DrawRender handles k >= screens.length " + k + " "); +this.haveNotifiedHandles = true; +}} else { +this.g3d.drawFilledCircle(23, colixFill, diameter, this.screens[k].x, this.screens[k].y, this.screens[k].z); +}} +} +break; +} +}); +Clazz.defineMethod(c$, "renderInfo", +function(){ +if (this.isExport || this.mesh.title == null || this.vwr.getDrawHover() || !this.g3d.setC(this.vwr.cm.colixBackgroundContrast)) return; +var f0 = this.vwr.shm.getShapePropertyIndex(22, "font", -1); +var f = f0; +var lastFID = -1; +var haveFont = false; +for (var i = this.dmesh.pc; --i >= 0; ) if (this.isPolygonDisplayable(i)) { +if (!haveFont || this.dmesh.fontID != lastFID) { +f = this.vwr.shm.getShapePropertyIndex(22, "font", i); +if (f == null) f = f0; +lastFID = f.fid; +this.vwr.gdata.setFont(this.imageFontScaling == 1 ? f : this.vwr.gdata.getFont3DFSS(f.fontFace, f.fontStyle, f.fontSize * this.imageFontScaling)); +haveFont = true; +}var s = this.mesh.title[i < this.mesh.title.length ? i : this.mesh.title.length - 1]; +var pt = 0; +if (s.length > 1 && s.charAt(0) == '>') { +pt = this.dmesh.pis[i].length - 1; +s = s.substring(1); +if (this.drawType === J.shapespecial.Draw.EnumDrawType.ARC) this.pt1f.setT(this.pt2f); +}if (this.drawType !== J.shapespecial.Draw.EnumDrawType.ARC) this.pt1f.setT(this.vertices[this.dmesh.pis[i][pt]]); +this.tm.transformPtScr(this.pt1f, this.pt1i); +var offset = Math.round(5 * this.imageFontScaling); +if (this.dmesh.titleColor != null) this.vwr.gdata.setColor(this.dmesh.titleColor.intValue()); +this.g3d.drawString(s, null, this.pt1i.x + offset, this.pt1i.y - offset, this.pt1i.z, this.pt1i.z, 0); +break; +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/EllipsoidsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/EllipsoidsRenderer.js new file mode 100755 index 000000000000..7e231177f15c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/EllipsoidsRenderer.js @@ -0,0 +1,371 @@ +Clazz.declarePackage("J.renderspecial"); +Clazz.load(["J.render.ShapeRenderer", "JU.BS", "$.M3", "$.M4", "$.P3", "$.V3", "JV.JC"], "J.renderspecial.EllipsoidsRenderer", ["JU.PT", "J.shapespecial.Ellipsoid", "JU.C", "$.Normix"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ellipsoids = null; +this.bGlobals = null; +this.bOptions = null; +this.OPTS = null; +this.fillArc = false; +this.isSet = false; +this.diameter = 0; +this.diameter0 = 0; +this.dotCount = 0; +this.dotScale = 0; +this.dx = 0; +this.eigenSignMask = 7; +this.iCutout = -1; +this.selectedOctant = -1; +this.coords = null; +this.axes = null; +this.center = null; +this.perspectiveFactor = 0; +this.bsTemp = null; +this.mat = null; +this.mTemp = null; +this.mDeriv = null; +this.matScreenToCartesian = null; +this.matScreenToEllipsoid = null; +this.matEllipsoidToScreen = null; +this.coefs = null; +this.factoredLengths = null; +this.selectedPoints = null; +this.v1 = null; +this.v2 = null; +this.v3 = null; +this.pt1 = null; +this.pt2 = null; +this.s0 = null; +this.s1 = null; +this.s2 = null; +this.screens = null; +this.points = null; +Clazz.instantialize(this, arguments);}, J.renderspecial, "EllipsoidsRenderer", J.render.ShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.bGlobals = Clazz.newBooleanArray(7, false); +this.bOptions = Clazz.newBooleanArray(7, false); +this.OPTS = Clazz.newArray(-1, ["dots", "arcs", "axes", "fill", "ball", "arrows", "wireframe"]); +this.bsTemp = new JU.BS(); +this.mat = new JU.M3(); +this.mTemp = new JU.M3(); +this.mDeriv = new JU.M4(); +this.matScreenToCartesian = new JU.M3(); +this.matScreenToEllipsoid = new JU.M3(); +this.matEllipsoidToScreen = new JU.M3(); +this.coefs = Clazz.newDoubleArray (10, 0); +this.factoredLengths = Clazz.newFloatArray (3, 0); +this.selectedPoints = new Array(3); +this.v1 = new JU.V3(); +this.v2 = new JU.V3(); +this.v3 = new JU.V3(); +this.pt1 = new JU.P3(); +this.pt2 = new JU.P3(); +this.s0 = new JU.P3(); +this.s1 = new JU.P3(); +this.s2 = new JU.P3(); +this.screens = new Array(38); +this.points = new Array(6); +{ +for (var i = 0; i < this.points.length; i++) this.points[i] = new JU.P3(); + +for (var i = 0; i < this.screens.length; i++) this.screens[i] = new JU.P3(); + +}}); +Clazz.overrideMethod(c$, "render", +function(){ +this.isSet = false; +this.ellipsoids = this.shape; +if (!this.ellipsoids.isActive()) return false; +var needTranslucent = false; +if (!this.isSet) this.isSet = this.setGlobals(); +if (!this.ellipsoids.atomEllipsoids.isEmpty()) needTranslucent = new Boolean (needTranslucent | this.renderEllipsoids(this.ellipsoids.atomEllipsoids, false)).valueOf(); +if (!this.ellipsoids.simpleEllipsoids.isEmpty()) { +needTranslucent = new Boolean (needTranslucent | this.renderEllipsoids(this.ellipsoids.simpleEllipsoids, true)).valueOf(); +}this.coords = null; +return needTranslucent; +}); +Clazz.defineMethod(c$, "setGlobals", +function(){ +this.bGlobals[1] = this.vwr.getBooleanProperty("ellipsoidArcs"); +this.bGlobals[5] = this.vwr.getBooleanProperty("ellipsoidArrows"); +this.bGlobals[2] = this.vwr.getBooleanProperty("ellipsoidAxes"); +this.bGlobals[4] = this.vwr.getBooleanProperty("ellipsoidBall"); +this.bGlobals[0] = this.vwr.getBooleanProperty("ellipsoidDots"); +this.bGlobals[3] = this.vwr.getBooleanProperty("ellipsoidFill"); +this.bGlobals[6] = !this.isExport && !this.vwr.checkMotionRendering(1112150020); +this.diameter0 = Math.round((this.vwr.getP("ellipsoidAxisDiameter")).floatValue() * 1000); +var m4 = this.tm.matrixTransform; +this.mat.setRow(0, m4.m00, m4.m01, m4.m02); +this.mat.setRow(1, m4.m10, m4.m11, m4.m12); +this.mat.setRow(2, m4.m20, m4.m21, m4.m22); +this.matScreenToCartesian.invertM(this.mat); +this.setLogic(); +return true; +}); +Clazz.defineMethod(c$, "setOptions", +function(options){ +for (var i = 0; i < 7; i++) this.bOptions[i] = this.bGlobals[i]; + +if (options != null) { +options = ";" + options + ";"; +for (var i = 0; i < 7; i++) { +if (JU.PT.isOneOf(this.OPTS[i], options)) this.bOptions[i] = true; + else if (JU.PT.isOneOf("no" + this.OPTS[i], options)) this.bOptions[i] = false; +} +}this.setLogic(); +}, "~S"); +Clazz.defineMethod(c$, "setLogic", +function(){ +this.bOptions[0] = new Boolean (this.bOptions[0] & !this.bOptions[6]).valueOf(); +this.bOptions[4] = new Boolean (this.bOptions[4] & !this.bOptions[6]).valueOf(); +this.bOptions[3] = new Boolean (this.bOptions[3] & !this.bOptions[6]).valueOf(); +this.fillArc = this.bOptions[3] && !this.bOptions[4]; +if (this.fillArc) this.g3d.addRenderer(1073742182); +if (this.bOptions[4]) this.bOptions[0] = false; +if (!this.bOptions[0] && !this.bOptions[1] && !this.bOptions[4]) this.bOptions[2] = true; +if (this.bOptions[0]) { +this.bOptions[1] = false; +this.bOptions[3] = false; +this.dotScale = this.vwr.getInt(553648140); +}if (this.bOptions[0]) { +this.dotCount = (this.vwr.getP("ellipsoidDotCount")).intValue(); +if (this.coords == null || this.coords.length != this.dotCount * 3) this.coords = Clazz.newIntArray (this.dotCount * 3, 0); +}}); +Clazz.defineMethod(c$, "renderEllipsoids", +function(ht, isSimple){ +var needTranslucent = false; +var atom = null; +for (var ellipsoid, $ellipsoid = ht.values().iterator (); $ellipsoid.hasNext()&& ((ellipsoid = $ellipsoid.next ()) || true);) { +if (!ellipsoid.visible) continue; +if (isSimple) { +this.colix = ellipsoid.colix; +} else { +atom = this.ms.at[ellipsoid.tensor.atomIndex1]; +if (atom.sZ <= 1 || !this.isVisibleForMe(atom)) continue; +this.colix = JU.C.getColixInherited(ellipsoid.colix, atom.colixAtom); +}if (!this.g3d.setC(this.colix)) { +needTranslucent = true; +continue; +}this.tm.transformPtScrT3(ellipsoid.center, this.s0); +this.renderOne(ellipsoid); +} +return needTranslucent; +}, "java.util.Map,~B"); +Clazz.defineMethod(c$, "renderOne", +function(e){ +this.center = e.center; +var maxPt = 2; +var maxLen = 0; +for (var i = 3; --i >= 0; ) { +var f = this.factoredLengths[i] = Math.max(e.getLength(i), 0.02); +if (f > maxLen) { +maxLen = f; +maxPt = i; +}} +this.axes = e.tensor.eigenVectors; +this.setMatrices(); +this.setAxes(maxPt); +if (this.g3d.isClippedXY(this.dx + this.dx, Clazz.floatToInt(this.s0.x), Clazz.floatToInt(this.s0.y))) return; +this.eigenSignMask = e.tensor.eigenSignMask; +this.setOptions(e.options); +this.diameter = Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.s0.z), this.bOptions[6] ? 1 : this.diameter0)); +if (e.tensor.isIsotropic) { +this.renderBall(); +return; +}if (this.bOptions[4]) { +this.renderBall(); +if (this.bOptions[1] || this.bOptions[2]) { +this.g3d.setC(this.vwr.cm.colixBackgroundContrast); +if (this.bOptions[2]) this.renderAxes(); +if (this.bOptions[1]) this.renderArcs(); +this.g3d.setC(this.colix); +}} else { +if (this.bOptions[2]) this.renderAxes(); +if (this.bOptions[1]) this.renderArcs(); +}if (this.bOptions[0]) this.renderDots(); +if (this.bOptions[5]) this.renderArrows(); +}, "J.shapespecial.Ellipsoid"); +Clazz.defineMethod(c$, "setMatrices", +function(){ +for (var i = 0; i < 3; i++) { +this.v1.setT(this.axes[i]); +this.v1.scale(this.factoredLengths[i]); +this.mat.setColumnV(i, this.v1); +} +this.mat.invertM(this.mat); +this.matScreenToEllipsoid.mul2(this.mat, this.matScreenToCartesian); +this.matEllipsoidToScreen.invertM(this.matScreenToEllipsoid); +this.perspectiveFactor = this.vwr.tm.scaleToPerspective(Clazz.floatToInt(this.s0.z), 1.0); +this.matScreenToEllipsoid.scale(1 / this.perspectiveFactor); +}); +Clazz.defineMethod(c$, "setAxes", +function(maxPt){ +for (var i = 0; i < 6; i++) { +var iAxis = J.renderspecial.EllipsoidsRenderer.axisPoints[i]; +var i012 = Math.abs(iAxis) - 1; +this.points[i].scaleAdd2(this.factoredLengths[i012] * (iAxis < 0 ? -1 : 1), this.axes[i012], this.center); +this.pt1.setT(J.renderspecial.EllipsoidsRenderer.unitAxisVectors[i]); +this.matEllipsoidToScreen.rotate(this.pt1); +this.screens[i].set(Math.round(this.s0.x + this.pt1.x * this.perspectiveFactor), Math.round(this.s0.y + this.pt1.y * this.perspectiveFactor), Math.round(this.pt1.z + this.s0.z)); +this.screens[i + 32].set(Math.round(this.s0.x + this.pt1.x * this.perspectiveFactor * 1.05), Math.round(this.s0.y + this.pt1.y * this.perspectiveFactor * 1.05), Math.round(this.pt1.z * 1.05 + this.s0.z)); +} +this.dx = 2 + Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.s0.z), Math.round((Float.isNaN(this.factoredLengths[maxPt]) ? 1.0 : this.factoredLengths[maxPt]) * 1000))); +}, "~N"); +Clazz.defineMethod(c$, "renderBall", +function(){ +this.setSelectedOctant(); +J.shapespecial.Ellipsoid.getEquationForQuadricWithCenter(this.s0.x, this.s0.y, this.s0.z, this.matScreenToEllipsoid, this.v1, this.mTemp, this.coefs, this.mDeriv); +this.g3d.fillEllipsoid(this.center, this.points, Clazz.floatToInt(this.s0.x), Clazz.floatToInt(this.s0.y), Clazz.floatToInt(this.s0.z), this.dx + this.dx, this.matScreenToEllipsoid, this.coefs, this.mDeriv, this.selectedOctant, this.selectedOctant >= 0 ? this.selectedPoints : null); +}); +Clazz.defineMethod(c$, "renderArrows", +function(){ +for (var i = 0; i < 6; i += 2) { +var pt = (i == 0 ? 1 : i); +this.fillConeScreen(this.screens[i], this.screens[i + 1], (this.eigenSignMask & pt) != 0); +} +}); +Clazz.defineMethod(c$, "fillConeScreen", +function(p1, p2, isPositive){ +if (this.diameter == 0) return; +var diam = (this.diameter == 0 ? 1 : this.diameter) * 8; +this.v1.set(p2.x - p1.x, p2.y - p1.y, p2.z - p1.z); +this.v1.normalize(); +this.v1.scale(diam); +this.s1.setT(p1); +this.s2.setT(p1); +if (isPositive) { +this.s2.x -= Clazz.floatToInt(this.v1.x); +this.s2.y -= Clazz.floatToInt(this.v1.y); +this.s2.z -= Clazz.floatToInt(this.v1.z); +} else { +this.s1.x -= Clazz.floatToInt(this.v1.x); +this.s1.y -= Clazz.floatToInt(this.v1.y); +this.s1.z -= Clazz.floatToInt(this.v1.z); +}this.g3d.fillConeScreen3f(2, Clazz.floatToInt(diam), this.s1, this.s2, false); +this.s1.setT(p2); +this.s2.setT(p2); +if (isPositive) { +this.s2.x += Clazz.floatToInt(this.v1.x); +this.s2.y += Clazz.floatToInt(this.v1.y); +this.s2.z += Clazz.floatToInt(this.v1.z); +} else { +this.s1.x += Clazz.floatToInt(this.v1.x); +this.s1.y += Clazz.floatToInt(this.v1.y); +this.s1.z += Clazz.floatToInt(this.v1.z); +}this.g3d.fillConeScreen3f(2, Clazz.floatToInt(diam), this.s1, this.s2, false); +}, "JU.P3,JU.P3,~B"); +Clazz.defineMethod(c$, "renderAxes", +function(){ +if (this.bOptions[4] && this.bOptions[3]) { +this.g3d.fillCylinderBits(2, this.diameter, this.s0, this.selectedPoints[0]); +this.g3d.fillCylinderBits(2, this.diameter, this.s0, this.selectedPoints[1]); +this.g3d.fillCylinderBits(2, this.diameter, this.s0, this.selectedPoints[2]); +return; +}if (this.bOptions[4]) { +this.g3d.fillCylinderBits(2, this.diameter, this.screens[32], this.screens[33]); +this.g3d.fillCylinderBits(2, this.diameter, this.screens[34], this.screens[35]); +this.g3d.fillCylinderBits(2, this.diameter, this.screens[36], this.screens[37]); +} else { +this.g3d.fillCylinderBits(2, this.diameter, this.screens[0], this.screens[1]); +this.g3d.fillCylinderBits(2, this.diameter, this.screens[2], this.screens[3]); +this.g3d.fillCylinderBits(2, this.diameter, this.screens[4], this.screens[5]); +}}); +Clazz.defineMethod(c$, "renderDots", +function(){ +for (var i = 0; i < this.coords.length; ) { +var fx = Math.random(); +var fy = Math.random(); +fx *= (Math.random() > 0.5 ? -1 : 1); +fy *= (Math.random() > 0.5 ? -1 : 1); +var fz = Math.sqrt(1 - fx * fx - fy * fy); +if (Float.isNaN(fz)) continue; +fz = (Math.random() > 0.5 ? -1 : 1) * fz; +this.pt1.scaleAdd2(fx * this.factoredLengths[0], this.axes[0], this.center); +this.pt1.scaleAdd2(fy * this.factoredLengths[1], this.axes[1], this.pt1); +this.pt1.scaleAdd2(fz * this.factoredLengths[2], this.axes[2], this.pt1); +this.tm.transformPtScrT3(this.pt1, this.s1); +this.coords[i++] = Clazz.floatToInt(this.s1.x); +this.coords[i++] = Clazz.floatToInt(this.s1.y); +this.coords[i++] = Clazz.floatToInt(this.s1.z); +} +this.g3d.drawPoints(this.dotCount, this.coords, this.dotScale); +}); +Clazz.defineMethod(c$, "renderArcs", +function(){ +if (this.g3d.drawEllipse(this.center, this.points[0], this.points[2], this.fillArc, this.bOptions[6])) { +this.g3d.drawEllipse(this.center, this.points[2], this.points[5], this.fillArc, this.bOptions[6]); +this.g3d.drawEllipse(this.center, this.points[5], this.points[0], this.fillArc, this.bOptions[6]); +return; +}for (var i = 1, pt = 3; i < 8; i += 2, pt += 6) { +this.renderArc(J.renderspecial.EllipsoidsRenderer.octants[pt], J.renderspecial.EllipsoidsRenderer.octants[pt + 1]); +this.renderArc(J.renderspecial.EllipsoidsRenderer.octants[pt + 1], J.renderspecial.EllipsoidsRenderer.octants[pt + 2]); +this.renderArc(J.renderspecial.EllipsoidsRenderer.octants[pt + 2], J.renderspecial.EllipsoidsRenderer.octants[pt]); +} +}); +Clazz.defineMethod(c$, "renderArc", +function(ptA, ptB){ +this.v1.sub2(this.points[ptA], this.center); +this.v2.sub2(this.points[ptB], this.center); +var d1 = this.v1.length(); +var d2 = this.v2.length(); +this.v1.normalize(); +this.v2.normalize(); +this.v3.cross(this.v1, this.v2); +this.pt1.setT(this.points[ptA]); +this.s1.setT(this.screens[ptA]); +var normix = JU.Normix.get2SidedNormix(this.v3, this.bsTemp); +if (!this.fillArc && !this.bOptions[6]) this.screens[6].setT(this.s1); +for (var i = 0, pt = 0; i < 18; i++, pt += 2) { +this.pt2.scaleAdd2(J.renderspecial.EllipsoidsRenderer.cossin[pt] * d1, this.v1, this.center); +this.pt2.scaleAdd2(J.renderspecial.EllipsoidsRenderer.cossin[pt + 1] * d2, this.v2, this.pt2); +this.tm.transformPtScrT3(this.pt2, this.s2); +if (this.fillArc) { +this.g3d.fillTriangle3CNBits(this.s0, this.colix, normix, this.s1, this.colix, normix, this.s2, this.colix, normix, true); +} else if (this.bOptions[6]) this.g3d.fillCylinderBits(2, this.diameter, this.s1, this.s2); + else this.screens[i + 7].setT(this.s2); +this.pt1.setT(this.pt2); +this.s1.setT(this.s2); +} +if (!this.fillArc && !this.bOptions[6]) { +this.g3d.addRenderer(553648143); +for (var i = 0; i < 18; i++) { +this.g3d.fillHermite(5, this.diameter, this.diameter, this.diameter, this.screens[i == 0 ? i + 6 : i + 5], this.screens[i + 6], this.screens[i + 7], this.screens[i == 17 ? i + 7 : i + 8]); +} +}}, "~N,~N"); +Clazz.defineMethod(c$, "setSelectedOctant", +function(){ +var zMin = 2147483647; +this.selectedOctant = -1; +this.iCutout = -1; +if (this.bOptions[3]) { +for (var i = 0; i < 8; i++) { +var ptA = J.renderspecial.EllipsoidsRenderer.octants[i * 3]; +var ptB = J.renderspecial.EllipsoidsRenderer.octants[i * 3 + 1]; +var ptC = J.renderspecial.EllipsoidsRenderer.octants[i * 3 + 2]; +var z = Clazz.floatToInt(this.screens[ptA].z + this.screens[ptB].z + this.screens[ptC].z); +if (z < zMin) { +zMin = z; +this.iCutout = i; +}} +this.s1.setT(this.selectedPoints[0] = this.screens[J.renderspecial.EllipsoidsRenderer.octants[this.iCutout * 3]]); +this.s1.add(this.selectedPoints[1] = this.screens[J.renderspecial.EllipsoidsRenderer.octants[this.iCutout * 3 + 1]]); +this.s1.add(this.selectedPoints[2] = this.screens[J.renderspecial.EllipsoidsRenderer.octants[this.iCutout * 3 + 2]]); +this.s1.scaleAdd2(-3, this.s0, this.s1); +this.pt1.set(this.s1.x, this.s1.y, this.s1.z); +this.matScreenToEllipsoid.rotate(this.pt1); +var i = 0; +if (this.pt1.x < 0) i |= 1; +if (this.pt1.y < 0) i |= 2; +if (this.pt1.z < 0) i |= 4; +this.selectedOctant = i; +}}); +c$.cossin = Clazz.newDoubleArray (36, 0); +{ +for (var i = 5, pt = 0; i <= 90; i += 5) { +J.renderspecial.EllipsoidsRenderer.cossin[pt++] = Math.cos(i * 0.017453292519943295); +J.renderspecial.EllipsoidsRenderer.cossin[pt++] = Math.sin(i * 0.017453292519943295); +} +}c$.unitAxisVectors = Clazz.newArray(-1, [JV.JC.axisNX, JV.JC.axisX, JV.JC.axisNY, JV.JC.axisY, JV.JC.axisNZ, JV.JC.axisZ]); +c$.axisPoints = Clazz.newIntArray(-1, [-1, 1, -2, 2, -3, 3]); +c$.octants = Clazz.newIntArray(-1, [5, 0, 3, 5, 2, 0, 4, 0, 2, 4, 3, 0, 5, 2, 1, 5, 1, 3, 4, 3, 1, 4, 1, 2]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/GeoSurfaceRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/GeoSurfaceRenderer.js new file mode 100755 index 000000000000..f924d2c7c866 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/GeoSurfaceRenderer.js @@ -0,0 +1,58 @@ +Clazz.declarePackage("J.renderspecial"); +Clazz.load(["J.renderspecial.DotsRenderer", "JU.P3"], "J.renderspecial.GeoSurfaceRenderer", ["JU.Geodesic"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.requireTranslucent = false; +this.facePt1 = null; +this.facePt2 = null; +this.facePt3 = null; +Clazz.instantialize(this, arguments);}, J.renderspecial, "GeoSurfaceRenderer", J.renderspecial.DotsRenderer); +Clazz.prepareFields (c$, function(){ +this.facePt1 = new JU.P3(); +this.facePt2 = new JU.P3(); +this.facePt3 = new JU.P3(); +}); +Clazz.overrideMethod(c$, "render", +function(){ +var gs = this.shape; +this.iShowSolid = !(!this.vwr.checkMotionRendering(1112150021) && gs.ec.getDotsConvexMax() > 100); +if (!this.iShowSolid && !this.g3d.setC(4)) return false; +var tCover = this.vwr.gdata.translucentCoverOnly; +if (this.iShowSolid) this.vwr.gdata.translucentCoverOnly = true; +this.g3d.addRenderer(1073742182); +if (this.iShowSolid && this.faceMap == null) this.faceMap = Clazz.newIntArray (this.screenDotCount, 0); +this.render1(gs); +this.vwr.gdata.translucentCoverOnly = tCover; +return this.requireTranslucent; +}); +Clazz.overrideMethod(c$, "renderConvex", +function(colix, visibilityMap, nPoints){ +this.colix = colix; +if (this.iShowSolid) { +if (this.g3d.setC(colix)) this.renderSurface(visibilityMap); + else this.requireTranslucent = true; +return; +}this.renderDots(nPoints); +}, "~N,JU.BS,~N"); +Clazz.defineMethod(c$, "renderSurface", +function(points){ +if (this.faceMap == null) return; +var faces = JU.Geodesic.getFaceVertexes(this.screenLevel); +var coords = this.scrCoords; +var p1; +var p2; +var p3; +var mapMax = points.size(); +if (this.screenDotCount < mapMax) mapMax = this.screenDotCount; +for (var f = 0; f < faces.length; ) { +p1 = faces[f++]; +p2 = faces[f++]; +p3 = faces[f++]; +if (p1 >= mapMax || p2 >= mapMax || p3 >= mapMax || !points.get(p1) || !points.get(p2) || !points.get(p3)) continue; +this.facePt1.set(coords[this.faceMap[p1]], coords[this.faceMap[p1] + 1], coords[this.faceMap[p1] + 2]); +this.facePt2.set(coords[this.faceMap[p2]], coords[this.faceMap[p2] + 1], coords[this.faceMap[p2] + 2]); +this.facePt3.set(coords[this.faceMap[p3]], coords[this.faceMap[p3] + 1], coords[this.faceMap[p3] + 2]); +this.g3d.fillTriangle3CNBits(this.facePt1, this.colix, p1, this.facePt2, this.colix, p2, this.facePt3, this.colix, p3, false); +} +}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/PolyhedraRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/PolyhedraRenderer.js new file mode 100755 index 000000000000..4d862c074947 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/PolyhedraRenderer.js @@ -0,0 +1,135 @@ +Clazz.declarePackage("J.renderspecial"); +Clazz.load(["J.render.ShapeRenderer"], "J.renderspecial.PolyhedraRenderer", ["JU.P3", "$.V3", "JU.C", "$.MeshSurface"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$drawEdges = 0; +this.isAll = false; +this.frontOnly = false; +this.edgesOnly = false; +this.screens3f = null; +this.scrVib = null; +this.vibs = false; +this.bsSelected = null; +this.showNumbers = false; +this.meshSurface = null; +Clazz.instantialize(this, arguments);}, J.renderspecial, "PolyhedraRenderer", J.render.ShapeRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +var polyhedra = this.shape; +var polyhedrons = polyhedra.polyhedrons; +this.$drawEdges = polyhedra.drawEdges; +this.bsSelected = (this.vwr.getSelectionHalosEnabled() ? this.vwr.bsA() : null); +this.g3d.addRenderer(1073742182); +this.vibs = (this.ms.vibrations != null && this.tm.vibrationOn); +this.showNumbers = this.vwr.getBoolean(603979964); +var needTranslucent = false; +for (var i = polyhedra.polyhedronCount; --i >= 0; ) if (polyhedrons[i].isValid && this.render1(polyhedrons[i])) needTranslucent = true; + +return needTranslucent; +}); +Clazz.defineMethod(c$, "render1", +function(p){ +if (p.visibilityFlags == 0) return false; +var colixes = (this.shape).colixes; +var iAtom = -1; +var colix; +var scale = 1; +if (p.id == null) { +iAtom = p.centralAtom.i; +colix = (colixes == null || iAtom >= colixes.length ? 0 : colixes[iAtom]); +colix = JU.C.getColixInherited(colix, p.centralAtom.colixAtom); +} else { +colix = p.colix; +scale = p.scale; +}var needTranslucent = false; +if (JU.C.renderPass2(colix)) { +needTranslucent = true; +} else if (!this.g3d.setC(colix)) { +return false; +}var vertices = p.vertices; +if (scale != 1) { +var v = new Array(vertices.length); +if (scale < 0) { +var a = JU.V3.newV(p.center); +a.scale(-scale - 1); +for (var i = v.length; --i >= 0; ) { +var b = JU.V3.newV(vertices[i]); +b.add(a); +v[i] = b; +} +} else { +for (var i = v.length; --i >= 0; ) { +var a = JU.V3.newVsub(vertices[i], p.center); +a.scaleAdd2(scale, a, p.center); +v[i] = a; +} +}vertices = v; +}if (this.screens3f == null || this.screens3f.length < vertices.length) { +this.screens3f = new Array(vertices.length); +for (var i = vertices.length; --i >= 0; ) this.screens3f[i] = new JU.P3(); + +}var sc = this.screens3f; +var planes = p.triangles; +var elemNos = (p.pointScale > 0 ? p.getElemNos(false) : null); +for (var i = vertices.length; --i >= 0; ) { +var atom = (Clazz.instanceOf(vertices[i],"JM.Atom") ? vertices[i] : null); +var v = sc[i]; +if (atom == null) { +this.tm.transformPtScrT3(vertices[i], v); +} else if (this.vibs && atom.hasVibration()) { +this.scrVib = this.tm.transformPtVib(atom, this.ms.vibrations[atom.i]); +v.set(this.scrVib.x, this.scrVib.y, this.scrVib.z); +} else { +this.tm.transformPt3f(atom, v); +}if (elemNos != null && i < elemNos.length && this.g3d.setC(elemNos[i] < 0 ? colix : this.vwr.cm.getElementColix(elemNos[i]))) { +this.g3d.fillSphereBits(Clazz.floatToInt(this.tm.scaleToScreen(Clazz.floatToInt(v.z), Clazz.floatToInt(p.pointScale * 1000))), v); +this.g3d.setC(colix); +}if (this.showNumbers) { +if (this.g3d.setC(4)) { +this.g3d.drawStringNoSlab("" + i, null, Clazz.floatToInt(v.x), Clazz.floatToInt(v.y), Clazz.floatToInt(v.z) - 30, 0); +this.g3d.setC(colix); +}}} +var isSelected = (iAtom >= 0 && this.bsSelected != null && this.bsSelected.get(iAtom)); +this.isAll = (this.$drawEdges == 1 || isSelected); +this.frontOnly = (this.$drawEdges == 2); +this.edgesOnly = (this.$drawEdges == 3); +var normixes = p.getNormixes(); +if ((!needTranslucent || this.g3d.setC(colix)) && !this.edgesOnly) { +if (this.exportType == 1 && !p.collapsed) { +if (this.meshSurface == null) this.meshSurface = new JU.MeshSurface(); +this.meshSurface.vs = vertices; +this.meshSurface.pis = planes; +this.meshSurface.pc = planes.length; +this.meshSurface.vc = vertices.length; +this.g3d.drawSurface(this.meshSurface, colix); +} else { +for (var i = planes.length; --i >= 0; ) { +var pl = planes[i]; +try { +if (!this.showNumbers || this.g3d.setC((Math.round(Math.random() * 10) + 5))) this.g3d.fillTriangleTwoSided(normixes[i], sc[pl[0]], sc[pl[1]], sc[pl[2]]); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("PolyhedraRendererError"); +} else { +throw e; +} +} +} +}}if (this.isAll || this.frontOnly || this.edgesOnly) { +if (isSelected) colix = 23; + else if (p.colixEdge != 0) colix = p.colixEdge; +if (this.g3d.setC(JU.C.getColixTranslucent3(colix, false, 0))) for (var i = planes.length; --i >= 0; ) { +var pl = planes[i]; +this.drawEdges(normixes[i], sc[pl[0]], sc[pl[1]], sc[pl[2]], -pl[3]); +} +}return needTranslucent; +}, "J.shapespecial.Polyhedron"); +Clazz.defineMethod(c$, "drawEdges", +function(normix, a, b, c, edgeMask){ +if (this.isAll || this.edgesOnly || this.frontOnly && this.vwr.gdata.isDirectedTowardsCamera(normix)) { +var d = (this.g3d.isAntialiased() ? 6 : 3); +if ((edgeMask & 1) == 1) this.g3d.fillCylinderBits(3, d, a, b); +if ((edgeMask & 2) == 2) this.g3d.fillCylinderBits(3, d, b, c); +if ((edgeMask & 4) == 4) this.g3d.fillCylinderBits(3, d, a, c); +}}, "~N,JU.P3,JU.P3,JU.P3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/VectorsRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/VectorsRenderer.js new file mode 100755 index 000000000000..b93783c74beb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/renderspecial/VectorsRenderer.js @@ -0,0 +1,172 @@ +Clazz.declarePackage("J.renderspecial"); +Clazz.load(["J.render.ShapeRenderer", "JU.P3", "$.V3", "JU.Point3fi"], "J.renderspecial.VectorsRenderer", ["J.shape.Shape", "JU.Vibration"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ptTemp = null; +this.pointVectorStart = null; +this.pointVectorEnd = null; +this.pointArrowHead = null; +this.screenVectorStart = null; +this.screenVectorEnd = null; +this.screenArrowHead = null; +this.headOffsetVector = null; +this.pTemp3 = null; +this.diameter = 0; +this.headWidthPixels = 0; +this.vectorScale = 0; +this.vectorSymmetry = false; +this.headScale = 0; +this.drawShaft = false; +this.vibTemp = null; +this.vectorsCentered = false; +this.standardVector = true; +this.vibrationOn = false; +this.drawCap = false; +this.showModVecs = false; +this.vectorTrail = 0; +this.ptTemp4 = null; +this.ptTemp2 = null; +Clazz.instantialize(this, arguments);}, J.renderspecial, "VectorsRenderer", J.render.ShapeRenderer); +Clazz.prepareFields (c$, function(){ +this.ptTemp = new JU.Point3fi(); +this.pointVectorStart = new JU.P3(); +this.pointVectorEnd = new JU.Point3fi(); +this.pointArrowHead = new JU.P3(); +this.screenVectorStart = new JU.P3(); +this.screenVectorEnd = new JU.P3(); +this.screenArrowHead = new JU.P3(); +this.headOffsetVector = new JU.V3(); +this.pTemp3 = new JU.P3(); +}); +Clazz.overrideMethod(c$, "render", +function(){ +var vectors = this.shape; +if (!vectors.isActive) return false; +var mads = vectors.mads; +if (mads == null) return false; +var colixes = vectors.colixes; +var needTranslucent = false; +this.vectorScale = this.vwr.getFloat(1648361473); +this.vectorTrail = this.vwr.getInt(553648185); +if (this.vectorScale < 0) this.vectorScale = 1; +this.vectorSymmetry = this.vwr.getBoolean(603979973); +this.vectorsCentered = this.vwr.getBoolean(603979972); +this.showModVecs = this.vwr.getBoolean(603979927); +this.vibrationOn = this.vwr.tm.vibrationOn; +this.headScale = -0.2; +if (this.vectorScale < 0) this.headScale = -this.headScale; +var haveModulations = false; +var atoms = this.ms.at; +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (!this.isVisibleForMe(atom)) continue; +var mod = this.ms.getModulation(i); +if (this.showModVecs && !haveModulations && mod != null) haveModulations = true; +var vib = this.ms.getVibration(i, false); +if (vib == null) continue; +if (!this.transform(mads[i], atom, vib, mod)) continue; +if (!this.g3d.setC(J.shape.Shape.getColix(colixes, i, atom))) { +needTranslucent = true; +continue; +}this.renderVector(atom, vib); +if (this.vectorSymmetry) { +if (this.vibTemp == null) this.vibTemp = new JU.Vibration(); +this.vibTemp.setT(vib); +this.vibTemp.scale(-1); +this.transform(mads[i], atom, this.vibTemp, null); +this.renderVector(atom, vib); +}} +if (haveModulations) for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (!this.isVisibleForMe(atom)) continue; +var mod = this.ms.getModulation(i); +if (mod == null) continue; +if (!this.g3d.setC(J.shape.Shape.getColix(colixes, i, atom))) { +needTranslucent = true; +continue; +}if (!this.transform(mads[i], atom, null, mod)) continue; +this.renderVector(atom, null); +} +return needTranslucent; +}); +Clazz.defineMethod(c$, "transform", +function(mad, atom, vib, mod2){ +var isMod = (vib == null || vib.modDim >= 0); +var isSpin = (!isMod && vib.modDim == -2); +if (vib == null) vib = mod2; +this.drawCap = true; +if (!isMod) { +var len = vib.length(); +if (Math.abs(len * this.vectorScale) < 0.01) return false; +this.standardVector = true; +this.drawShaft = (0.1 + Math.abs(this.headScale / len) < Math.abs(this.vectorScale)); +this.headOffsetVector.setT(vib); +this.headOffsetVector.scale(this.headScale / len); +}this.ptTemp.setT(atom); +var mod = atom.getModulation(); +if (this.vibrationOn && mod != null) this.vwr.tm.getVibrationPoint(mod, this.ptTemp, 1); +if (isMod) { +this.standardVector = false; +this.drawShaft = true; +mod = vib; +this.pointVectorStart.setT(this.ptTemp); +this.pointVectorEnd.setT(this.ptTemp); +if (mod.isEnabled()) { +if (this.vibrationOn) { +this.vwr.tm.getVibrationPoint(vib, this.pointVectorEnd, NaN); +}mod.addTo(this.pointVectorStart, NaN); +} else { +mod.addTo(this.pointVectorEnd, 1); +}this.headOffsetVector.sub2(this.pointVectorEnd, this.pointVectorStart); +var len = this.headOffsetVector.length(); +this.drawCap = (len + -0.2 > 0.001); +this.drawShaft = (len > 0.01); +this.headOffsetVector.scale(this.headScale / this.headOffsetVector.length()); +} else if (this.vectorsCentered || isSpin) { +this.standardVector = false; +this.pointVectorEnd.scaleAdd2(0.5 * this.vectorScale, vib, this.ptTemp); +this.pointVectorStart.scaleAdd2(-0.5 * this.vectorScale, vib, this.ptTemp); +} else { +this.pointVectorEnd.scaleAdd2(this.vectorScale, vib, this.ptTemp); +this.pointArrowHead.add2(this.pointVectorEnd, this.headOffsetVector); +if (this.vibrationOn) { +var screen = this.tm.transformPtVib(this.pointVectorEnd, vib); +this.screenVectorEnd.set(screen.x, screen.y, screen.z); +screen = this.tm.transformPtVib(this.pointArrowHead, vib); +this.screenArrowHead.set(screen.x, screen.y, screen.z); +} else { +this.tm.transformPtScrT3(this.pointVectorEnd, this.screenVectorEnd); +this.tm.transformPtScrT3(this.pointArrowHead, this.screenArrowHead); +}}if (!this.standardVector) { +this.tm.transformPtScrT3(this.pointVectorEnd, this.screenVectorEnd); +this.tm.transformPtScrT3(this.pointVectorStart, this.screenVectorStart); +if (this.drawCap) this.pointArrowHead.add2(this.pointVectorEnd, this.headOffsetVector); + else this.pointArrowHead.setT(this.pointVectorEnd); +this.tm.transformPtScrT3(this.pointArrowHead, this.screenArrowHead); +}this.diameter = Clazz.floatToInt(mad < 0 ? -mad : mad < 1 ? 1 : this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.screenVectorEnd.z), mad)); +this.headWidthPixels = this.diameter << 1; +if (this.headWidthPixels < this.diameter + 2) this.headWidthPixels = this.diameter + 2; +return true; +}, "~N,JM.Atom,JU.Vibration,J.api.JmolModulationSet"); +Clazz.defineMethod(c$, "renderVector", +function(atom, vib){ +if (vib != null && this.vectorTrail > 0) { +if (this.ptTemp4 == null) { +this.ptTemp4 = new JU.P3(); +this.ptTemp2 = new JU.P3(); +}var d = Math.max(1, this.diameter >> 2); +var pts = vib.addTracePt(this.vectorTrail, this.vibrationOn ? this.pointVectorEnd : null); +this.tm.transformPtScrT3(atom, this.ptTemp4); +if (pts != null) for (var i = pts.length, p = this.vectorTrail; --i >= 0; ) { +var pt = pts[--p]; +if (pt == null) break; +this.tm.transformPtScrT3(pt, this.ptTemp2); +this.g3d.fillCylinderBits(2, d, this.ptTemp4, this.ptTemp2); +} +}if (this.drawShaft) { +this.pTemp3.set(atom.sX, atom.sY, atom.sZ); +if (this.standardVector) this.g3d.fillCylinderBits(2, this.diameter, this.pTemp3, this.screenArrowHead); + else this.g3d.fillCylinderBits(2, this.diameter, this.screenVectorStart, this.screenArrowHead); +}if (this.drawCap) this.g3d.fillConeScreen3f(2, this.headWidthPixels, this.screenArrowHead, this.screenVectorEnd, false); +}, "JM.Atom,JU.Vibration"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/ContactRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/ContactRenderer.js new file mode 100755 index 000000000000..f9ee221a4c81 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/ContactRenderer.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.rendersurface"); +Clazz.load(["J.rendersurface.IsosurfaceRenderer"], "J.rendersurface.ContactRenderer", null, function(){ +var c$ = Clazz.declareType(J.rendersurface, "ContactRenderer", J.rendersurface.IsosurfaceRenderer); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/IsosurfaceRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/IsosurfaceRenderer.js new file mode 100755 index 000000000000..bb9cb87eb3fd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/IsosurfaceRenderer.js @@ -0,0 +1,379 @@ +Clazz.declarePackage("J.rendersurface"); +Clazz.load(["J.render.MeshRenderer"], "J.rendersurface.IsosurfaceRenderer", ["JU.V3", "JU.C", "$.Normix"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.iHideBackground = false; +this.isBicolorMap = false; +this.backgroundColix = 0; +this.nError = 0; +this.vertexValues = null; +this.imesh = null; +this.isosurface = null; +this.isNavigationMode = false; +this.iShowNormals = false; +this.showNumbers = false; +this.showKey = null; +this.hasColorRange = false; +this.meshScale = -1; +this.mySlabValue = 0; +this.globalSlabValue = 0; +Clazz.instantialize(this, arguments);}, J.rendersurface, "IsosurfaceRenderer", J.render.MeshRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +return this.renderIso(); +}); +Clazz.defineMethod(c$, "renderIso", +function(){ +this.setGlobals(); +for (var i = this.isosurface.meshCount; --i >= 0; ) { +this.mesh = this.imesh = this.isosurface.meshes[i]; +if (this.imesh.connectedAtoms != null && !this.vwr.ms.at[this.imesh.connectedAtoms[0]].checkVisible()) continue; +this.hasColorRange = false; +if (this.renderMeshSlab()) { +this.renderInfo(); +if (this.isExport && this.isGhostPass) { +this.exportPass = 1; +this.renderMeshSlab(); +this.exportPass = 2; +}}} +return this.needTranslucent; +}); +Clazz.defineMethod(c$, "setGlobals", +function(){ +this.needTranslucent = false; +this.antialias = this.g3d.isAntialiased(); +this.iShowNormals = this.vwr.getBoolean(603979965); +this.showNumbers = this.vwr.getBoolean(603979964); +this.isosurface = this.shape; +this.exportPass = (this.isExport ? 2 : 0); +this.isNavigationMode = this.vwr.getBoolean(603979889); +this.showKey = (this.vwr.getBoolean(603979867) ? Boolean.TRUE : null); +this.isosurface.keyXy = null; +this.meshScale = -1; +this.globalSlabValue = this.vwr.gdata.slab; +this.mySlabValue = (this.isNavigationMode ? Clazz.floatToInt(this.tm.getNavigationOffset().z) : 2147483647); +}); +Clazz.defineMethod(c$, "renderInfo", +function(){ +if (this.isExport || !this.hasColorRange || this.imesh.colorEncoder == null || Boolean.TRUE !== this.showKey) return; +this.showKey = Boolean.FALSE; +var colors = null; +var colixes = null; +var vContours = null; +var n = 0; +var type = 0; +if (this.imesh.showContourLines) { +vContours = this.imesh.getContours(); +if (vContours == null) { +colixes = this.imesh.jvxlData.contourColixes; +if (colixes == null) return; +n = colixes.length; +} else { +n = vContours.length; +type = 1; +}} else { +colors = this.imesh.colorEncoder.getColorSchemeArray(this.imesh.colorEncoder.currentPalette); +n = (colors == null ? 0 : colors.length); +type = 2; +}if (n < 2) return; +var factor = (this.antialias ? 2 : 1); +var height = this.vwr.getScreenHeight() * factor; +var dy = Clazz.doubleToInt(Clazz.doubleToInt(height / 2) / (n - 1)); +var y = Clazz.doubleToInt(height / 4) * 3 - dy; +var x = 10 * factor; +var dx = 20 * factor; +this.isosurface.keyXy = Clazz.newIntArray(-1, [Clazz.doubleToInt(x / factor), 0, Clazz.doubleToInt((x + dx) / factor), Clazz.doubleToInt((y + dy) / factor), Clazz.doubleToInt(dy / factor)]); +for (var i = 0; i < n; i++, y -= dy) { +switch (type) { +case 0: +if (!this.g3d.setC(colixes[i])) return; +break; +case 1: +if (!this.g3d.setC((vContours[i].get(3))[0])) return; +break; +case 2: +this.vwr.gdata.setColor(colors[i]); +break; +} +this.g3d.fillTextRect(x, y, 5, -2147483648, dx, dy); +} +this.isosurface.keyXy[1] = Clazz.doubleToInt((y + dy) / factor); +}); +Clazz.defineMethod(c$, "renderMeshSlab", +function(){ +this.volumeRender = (this.imesh.jvxlData.colorDensity && this.imesh.jvxlData.allowVolumeRender); +var thisSlabValue = this.mySlabValue; +this.frontOnly = this.mesh.frontOnly || this.shapeID == 26; +this.isShell = this.mesh.isShell && this.shapeID != 26; +if (!this.isNavigationMode) { +this.meshSlabValue = this.imesh.jvxlData.slabValue; +if (this.meshSlabValue != -2147483648 && this.imesh.jvxlData.isSlabbable) { +var points = this.imesh.jvxlData.boundingBox; +var z0 = 3.4028235E38; +var z1 = 1.4E-45; +for (var i = points.length; --i >= 0; ) { +this.pt2f.setT(points[i]); +this.tm.transformPt3f(this.pt2f, this.pt2f); +if (this.pt2f.z < z0) z0 = this.pt2f.z; +if (this.pt2f.z > z1) z1 = this.pt2f.z; +} +thisSlabValue = Math.round(z0 + (z1 - z0) * (100 - this.meshSlabValue) / 100); +this.frontOnly = new Boolean (this.frontOnly & (this.meshSlabValue >= 100)).valueOf(); +this.isShell = new Boolean (this.isShell & (this.meshSlabValue >= 100)).valueOf(); +}}var tCover = this.vwr.gdata.translucentCoverOnly; +this.vwr.gdata.translucentCoverOnly = (this.frontOnly || !this.vwr.getBoolean(603979967)); +this.thePlane = this.imesh.jvxlData.jvxlPlane; +this.vertexValues = this.mesh.vvs; +var isOK; +if (thisSlabValue != 2147483647 && this.imesh.jvxlData.isSlabbable) { +this.g3d.setSlab(thisSlabValue); +isOK = this.renderMesh2(this.mesh); +this.g3d.setSlab(this.globalSlabValue); +} else { +isOK = this.renderMesh2(this.mesh); +}this.vwr.gdata.translucentCoverOnly = tCover; +return isOK; +}); +Clazz.overrideMethod(c$, "render2", +function(isExport){ +if (this.volumeRender) { +this.renderPoints(); +return; +}switch (this.imesh.dataType) { +case 70: +this.renderLonePair(false); +return; +case 71: +this.renderLonePair(true); +return; +} +this.isBicolorMap = this.imesh.jvxlData.isBicolorMap; +this.render2b(isExport); +if (!this.g3d.setC(4)) return; +if (this.imesh.showContourLines) this.renderContourLines(); +}, "~B"); +Clazz.defineMethod(c$, "renderLonePair", +function(isRadical){ +this.pt2f.setT(this.vertices[1]); +this.tm.transformPt3f(this.pt2f, this.pt2f); +var r = Clazz.floatToInt(this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.pt2f.z), 100)); +if (r < 1) r = 1; +if (!isRadical) { +var v1 = new JU.V3(); +var v2 = new JU.V3(); +this.pt1f.setT(this.vertices[0]); +this.tm.transformPt3f(this.pt1f, this.pt1f); +v1.sub2(this.pt2f, this.pt1f); +v2.set(v1.x, v1.y, v1.z + 1); +v2.cross(v2, v1); +v2.normalize(); +var f = this.vwr.tm.scaleToScreen(Clazz.floatToInt(this.pt1f.z), 100); +v2.scale(f); +this.pt1f.add2(this.pt2f, v2); +this.pt2f.sub(v2); +this.screens[0].set(Math.round(this.pt1f.x), Math.round(this.pt1f.y), Math.round(this.pt1f.z)); +this.g3d.fillSphereI(r, this.screens[0]); +}this.screens[1].set(Math.round(this.pt2f.x), Math.round(this.pt2f.y), Math.round(this.pt2f.z)); +this.g3d.fillSphereI(r, this.screens[1]); +}, "~B"); +Clazz.defineMethod(c$, "renderContourLines", +function(){ +var vContours = this.imesh.getContours(); +if (vContours == null) { +if (this.imesh.jvxlData.contourValues != null) this.hasColorRange = true; +return; +}this.hasColorRange = (this.mesh.meshColix == 0); +for (var i = vContours.length; --i >= 0; ) { +var v = vContours[i]; +if (v.size() < 6) continue; +this.colix = (this.mesh.meshColix == 0 ? (v.get(3))[0] : this.mesh.meshColix); +if (!this.g3d.setC(this.colix)) return; +var n = v.size() - 1; +var diam = this.getDiameter(); +for (var j = 6; j < n; j++) { +var pt1 = v.get(j); +var pt2 = v.get(++j); +if (Float.isNaN(pt1.x) || Float.isNaN(pt2.x)) break; +this.tm.transformPtScrT3(pt1, this.pt1f); +this.tm.transformPtScrT3(pt2, this.pt2f); +this.pt1f.z -= 2; +this.pt2f.z -= 2; +if (!this.antialias && diam == 1) { +this.g3d.drawLineAB(this.pt1f, this.pt2f); +} else { +this.g3d.fillCylinderBits(1, diam, this.pt1f, this.pt2f); +}} +} +}); +Clazz.overrideMethod(c$, "renderPoints", +function(){ +try { +if (this.volumeRender) this.g3d.volumeRender(true); +var slabPoints = ((this.volumeRender || this.mesh.pc == 0) && this.selectedPolyOnly); +var incr = this.imesh.vertexIncrement; +var diam; +if (this.mesh.diameter <= 0) { +diam = this.vwr.getInt(553648140); +this.frontOnly = this.isShell = false; +} else { +diam = Clazz.doubleToInt(this.vwr.getScreenDim() / (this.volumeRender ? 50 : 100)); +}var ptSize = Math.round(Float.isNaN(this.mesh.volumeRenderPointSize) ? 150 : this.mesh.volumeRenderPointSize * 1000); +if (diam < 1) diam = 1; +var cX = (this.showNumbers ? Clazz.doubleToInt(this.vwr.getScreenWidth() / 2) : 0); +var cY = (this.showNumbers ? Clazz.doubleToInt(this.vwr.getScreenHeight() / 2) : 0); +if (this.showNumbers) this.vwr.gdata.setFontBold("Monospaced", 24); +for (var i = (!this.imesh.hasGridPoints || this.imesh.firstRealVertex < 0 ? 0 : this.imesh.firstRealVertex); i < this.vertexCount; i += incr) { +if (this.vertexValues != null && Float.isNaN(this.vertexValues[i]) || this.frontOnly && !this.isVisibleNormix(this.normixes[i]) || this.imesh.jvxlData.thisSet != null && !this.imesh.jvxlData.thisSet.get(this.mesh.vertexSets[i]) || !this.mesh.isColorSolid && this.mesh.vcs != null && !this.setColix(this.mesh.vcs[i]) || this.haveBsDisplay && !this.mesh.bsDisplay.get(i) || slabPoints && !this.bsPolygons.get(i)) continue; +this.hasColorRange = true; +if (this.showNumbers && this.screens[i].z > 10 && Math.abs(this.screens[i].x - cX) < 150 && Math.abs(this.screens[i].y - cY) < 150) { +var s = i + (this.mesh.isColorSolid ? "" : " " + this.mesh.vvs[i]); +this.g3d.setC(4); +this.g3d.drawStringNoSlab(s, null, this.screens[i].x, this.screens[i].y, this.screens[i].z - 30, 0); +}if (this.volumeRender) { +diam = Clazz.floatToInt(this.vwr.tm.scaleToScreen(this.screens[i].z, ptSize)); +if (diam < 1) diam = 1; +this.g3d.volumeRender4(diam, this.screens[i].x, this.screens[i].y, this.screens[i].z); +} else { +this.g3d.fillSphereI(diam, this.screens[i]); +}} +if (incr == 3) { +this.g3d.setC(this.isTranslucent ? JU.C.getColixTranslucent3(12, true, 0.5) : 12); +for (var i = 1; i < this.vertexCount; i += 3) this.g3d.fillCylinder(3, Clazz.doubleToInt(diam / 4), this.screens[i], this.screens[i + 1]); + +this.g3d.setC(this.isTranslucent ? JU.C.getColixTranslucent3(21, true, 0.5) : 21); +for (var i = 1; i < this.vertexCount; i += 3) this.g3d.fillSphereI(diam, this.screens[i]); + +this.g3d.setC(this.isTranslucent ? JU.C.getColixTranslucent3(7, true, 0.5) : 7); +for (var i = 2; i < this.vertexCount; i += 3) { +this.g3d.fillSphereI(diam, this.screens[i]); +} +}} catch (e) { +} +if (this.volumeRender) this.g3d.volumeRender(false); +}); +Clazz.overrideMethod(c$, "renderTriangles", +function(fill, iShowTriangles, isExport){ +this.g3d.addRenderer(1073742182); +var polygonIndexes = this.mesh.pis; +this.colix = (this.isGhostPass ? this.mesh.slabColix : !fill && this.mesh.meshColix != 0 ? this.mesh.meshColix : this.mesh.colix); +var vertexColixes = (!fill && this.mesh.meshColix != 0 ? null : this.mesh.vcs); +if (this.isTranslucentInherit) this.colix = JU.C.copyColixTranslucency(this.mesh.slabColix, this.mesh.colix); +this.g3d.setC(this.colix); +var generateSet = isExport; +if (generateSet) { +if (this.frontOnly && fill) this.frontOnly = false; +this.bsPolygonsToExport.clearAll(); +}if (this.exportType == 1) { +this.frontOnly = false; +}var colorSolid = (this.isGhostPass && (!this.isBicolorMap) || vertexColixes == null || this.mesh.isColorSolid); +var noColor = (this.isGhostPass && !this.isBicolorMap || vertexColixes == null || !fill && this.mesh.meshColix != 0); +var isPlane = (this.imesh.jvxlData.jvxlPlane != null); +var colix = this.colix; +if (isPlane && !colorSolid && !fill && this.mesh.fillTriangles) { +colorSolid = true; +colix = 4; +}var colorArrayed = (colorSolid && this.mesh.pcs != null); +if (colorArrayed && !fill && this.mesh.fillTriangles) colorArrayed = false; +var contourColixes = this.imesh.jvxlData.contourColixes; +this.hasColorRange = !colorSolid && !this.isBicolorMap; +var diam = this.getDiameter(); +var i0 = 0; +for (var i = this.mesh.pc; --i >= i0; ) { +var polygon = polygonIndexes[i]; +if (polygon == null || this.selectedPolyOnly && !this.bsPolygons.get(i)) continue; +var iA = polygon[0]; +var iB = polygon[1]; +var iC = polygon[2]; +if (this.imesh.jvxlData.thisSet != null && this.mesh.vertexSets != null && !this.imesh.jvxlData.thisSet.get(this.mesh.vertexSets[iA])) continue; +if (this.haveBsDisplay && (!this.mesh.bsDisplay.get(iA) || !this.mesh.bsDisplay.get(iB) || !this.mesh.bsDisplay.get(iC))) continue; +var nA = this.normixes[iA]; +var nB = this.normixes[iB]; +var nC = this.normixes[iC]; +var check = (this.frontOnly || this.isShell ? this.checkFront(nA, nB, nC) : 7); +if (fill && check == 0) continue; +var colixA; +var colixB; +var colixC; +if (colorSolid) { +if (colorArrayed && i < this.mesh.pcs.length) { +var c = this.mesh.pcs[i]; +if (c == 0) continue; +colix = c; +}if (iShowTriangles) colix = (Math.round(Math.random() * 10) + 5); +colixA = colixB = colixC = colix; +} else { +colixA = vertexColixes[iA]; +colixB = vertexColixes[iB]; +colixC = vertexColixes[iC]; +if (this.isBicolorMap) { +if (colixA != colixB || colixB != colixC) continue; +if (this.isGhostPass) { +colixA = colixB = colixC = JU.C.copyColixTranslucency(this.mesh.slabColix, colixA); +}}}if (fill) { +if (generateSet) { +this.bsPolygonsToExport.set(i); +continue; +}if (iB == iC) { +this.setColix(colixA); +if (iA == iB) this.g3d.fillSphereI(diam, this.screens[iA]); + else this.g3d.fillCylinder(3, diam, this.screens[iA], this.screens[iB]); +} else if (this.mesh.colorsExplicit) { +this.vwr.gdata.setColor(polygon[4]); +colixA = JU.C.copyColixTranslucency(this.mesh.colix, 2047); +this.g3d.setC(colixA); +this.g3d.fillTriangle3CN(this.screens[iA], colixA, nA, this.screens[iB], colixA, nB, this.screens[iC], colixA, nC); +} else { +if (this.isTranslucentInherit && vertexColixes != null) { +colixA = JU.C.copyColixTranslucency(this.mesh.slabColix, vertexColixes[iA]); +colixB = JU.C.copyColixTranslucency(this.mesh.slabColix, vertexColixes[iB]); +colixC = JU.C.copyColixTranslucency(this.mesh.slabColix, vertexColixes[iC]); +}this.g3d.fillTriangle3CN(this.screens[iA], colixA, nA, this.screens[iB], colixB, nB, this.screens[iC], colixC, nC); +}if (this.iShowNormals) this.renderNormals(); +} else { +check &= polygon[3]; +if (check == 0) continue; +if (iShowTriangles) check = 7; +this.pt1i.setT(this.screens[iA]); +this.pt2i.setT(this.screens[iB]); +this.pt3i.setT(this.screens[iC]); +this.pt1i.z -= 2; +this.pt2i.z -= 2; +this.pt3i.z -= 2; +if (noColor) { +} else if (colorArrayed) { +this.g3d.setC(this.mesh.fillTriangles ? 4 : contourColixes[polygon[4] % contourColixes.length]); +} else { +this.drawTriangle(this.pt1i, colixA, this.pt2i, colixB, this.pt3i, colixC, check, diam); +continue; +}this.drawTriangle(this.pt1i, colix, this.pt2i, colix, this.pt3i, colix, check, diam); +}} +if (generateSet) this.exportSurface(colorSolid ? colix : 0); +}, "~B,~B,~B"); +Clazz.defineMethod(c$, "getDiameter", +function(){ +var diam; +if (this.mesh.diameter <= 0) { +diam = (this.meshScale < 0 ? this.meshScale = this.vwr.getInt(553648149) : this.meshScale); +if (this.antialias) diam *= 2; +} else { +diam = Clazz.doubleToInt(this.vwr.getScreenDim() / 100); +}if (diam < 1) diam = 1; +return diam; +}); +Clazz.defineMethod(c$, "renderNormals", +function(){ +if (!this.g3d.setC(JU.C.copyColixTranslucency(this.mesh.colix, 8))) return; +this.vwr.gdata.setFontBold("Monospaced", 24); +var vertexVectors = JU.Normix.getVertexVectors(); +for (var i = this.vertexCount; --i >= 0; ) { +if (this.vertexValues != null && Float.isNaN(this.vertexValues[i])) continue; +this.pt1f.setT(this.vertices[i]); +var n = this.mesh.normixes[i]; +if (n >= 0) { +this.pt2f.scaleAdd2(0.3, vertexVectors[n], this.pt1f); +this.tm.transformPtScrT3(this.pt2f, this.pt2f); +this.pt1f.set(this.screens[i].x, this.screens[i].y, this.screens[i].z); +this.g3d.drawLineAB(this.pt1f, this.pt2f); +}} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/LcaoCartoonRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/LcaoCartoonRenderer.js new file mode 100755 index 000000000000..0a2002a63f35 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/LcaoCartoonRenderer.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.rendersurface"); +Clazz.load(["J.rendersurface.IsosurfaceRenderer"], "J.rendersurface.LcaoCartoonRenderer", null, function(){ +var c$ = Clazz.declareType(J.rendersurface, "LcaoCartoonRenderer", J.rendersurface.IsosurfaceRenderer); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/MolecularOrbitalRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/MolecularOrbitalRenderer.js new file mode 100755 index 000000000000..4320e57f399d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/MolecularOrbitalRenderer.js @@ -0,0 +1,25 @@ +Clazz.declarePackage("J.rendersurface"); +Clazz.load(["J.rendersurface.IsosurfaceRenderer"], "J.rendersurface.MolecularOrbitalRenderer", null, function(){ +var c$ = Clazz.declareType(J.rendersurface, "MolecularOrbitalRenderer", J.rendersurface.IsosurfaceRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +this.imageFontScaling = this.vwr.imageFontScaling; +this.renderIso(); +return this.needTranslucent; +}); +Clazz.overrideMethod(c$, "renderInfo", +function(){ +if (this.isExport || this.vwr.am.cmi < 0 || this.mesh.title == null || !this.g3d.setC(this.vwr.cm.colixBackgroundContrast) || this.vwr.gdata.getTextPosition() != 0) return; +var ht = this.vwr.getInt(553648145); +this.vwr.gdata.setFontBold("Serif", ht * this.imageFontScaling); +var lineheight = Math.round((ht + 1) * this.imageFontScaling); +var x = Math.round(5 * this.imageFontScaling); +var y = lineheight; +for (var i = 0; i < this.mesh.title.length; i++) if (this.mesh.title[i].length > 0) { +this.g3d.drawStringNoSlab(this.mesh.title[i], null, x, y, 0, 0); +y += lineheight; +} +this.vwr.gdata.setTextPosition(y); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/NBORenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/NBORenderer.js new file mode 100755 index 000000000000..4310748db3ca --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/NBORenderer.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.rendersurface"); +Clazz.load(["J.rendersurface.MolecularOrbitalRenderer"], "J.rendersurface.NBORenderer", null, function(){ +var c$ = Clazz.declareType(J.rendersurface, "NBORenderer", J.rendersurface.MolecularOrbitalRenderer); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/Plot3DRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/Plot3DRenderer.js new file mode 100755 index 000000000000..a681f998f107 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/Plot3DRenderer.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.rendersurface"); +Clazz.load(["J.rendersurface.PmeshRenderer"], "J.rendersurface.Plot3DRenderer", null, function(){ +var c$ = Clazz.declareType(J.rendersurface, "Plot3DRenderer", J.rendersurface.PmeshRenderer); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/PmeshRenderer.js b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/PmeshRenderer.js new file mode 100755 index 000000000000..3f10ee8b44d4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/rendersurface/PmeshRenderer.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("J.rendersurface"); +Clazz.load(["J.rendersurface.IsosurfaceRenderer"], "J.rendersurface.PmeshRenderer", null, function(){ +var c$ = Clazz.declareType(J.rendersurface, "PmeshRenderer", J.rendersurface.IsosurfaceRenderer); +Clazz.overrideMethod(c$, "render", +function(){ +return this.renderIso(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/AtomShape.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/AtomShape.js new file mode 100755 index 000000000000..494f98c20a0a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/AtomShape.js @@ -0,0 +1,148 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.Shape"], "J.shape.AtomShape", ["JU.AU", "$.BS", "J.atomdata.RadiusData", "J.c.PAL", "$.VDW", "JU.BSUtil", "$.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mad = -1; +this.mads = null; +this.colixes = null; +this.paletteIDs = null; +this.isActive = false; +this.rd = null; +this.isSet = false; +this.monomerCount = 0; +this.bsSizeDefault = null; +Clazz.instantialize(this, arguments);}, J.shape, "AtomShape", J.shape.Shape); +Clazz.overrideMethod(c$, "initShape", +function(){ +}); +Clazz.overrideMethod(c$, "initModelSet", +function(){ +this.isSet = true; +var ac = this.ms.ac; +if (this.mads != null) this.mads = JU.AU.arrayCopyShort(this.mads, ac); +if (this.colixes != null) this.colixes = JU.AU.arrayCopyShort(this.colixes, ac); +if (this.paletteIDs != null) this.paletteIDs = JU.AU.arrayCopyByte(this.paletteIDs, ac); +}); +Clazz.overrideMethod(c$, "getSize", +function(atomIndex){ +return (this.mads == null ? 0 : this.mads[atomIndex]); +}, "~N"); +Clazz.overrideMethod(c$, "setSize", +function(size, bsSelected){ +this.setSize2(size, bsSelected); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "setSize2", +function(size, bsSelected){ +if (size == 0) { +this.setSizeRD(null, bsSelected); +return; +}if (this.rd == null) this.rd = new J.atomdata.RadiusData(null, size, J.atomdata.RadiusData.EnumType.SCREEN, null); + else this.rd.value = size; +this.setSizeRD(this.rd, bsSelected); +}, "~N,JU.BS"); +Clazz.overrideMethod(c$, "setSizeRD", +function(rd, bsSelected){ +if (!this.isSet) return; +this.isActive = true; +var isVisible = (rd != null && rd.value != 0); +var isAll = (bsSelected == null); +var ac = this.ms.ac; +var i0 = (isAll ? ac - 1 : bsSelected.nextSetBit(0)); +if (this.bsSizeSet == null) this.bsSizeSet = JU.BS.newN(ac); +if (this.mads == null && i0 >= 0) this.mads = Clazz.newShortArray (ac, 0); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) this.setSizeRD2(i, rd, isVisible); + +}, "J.atomdata.RadiusData,JU.BS"); +Clazz.defineMethod(c$, "setSizeRD2", +function(i, rd, isVisible){ +var atom = this.ms.at[i]; +this.mads[i] = atom.calculateMad(this.vwr, rd); +this.bsSizeSet.setBitTo(i, isVisible); +atom.setShapeVisibility(this.vf, isVisible); +}, "~N,J.atomdata.RadiusData,~B"); +Clazz.defineMethod(c$, "setPropAS", +function(propertyName, value, bs){ +if ("color" === propertyName) { +this.isActive = true; +var colix = JU.C.getColixO(value); +var pid = J.c.PAL.pidOf(value); +var n = this.checkColixLength(colix, bs.length()); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) this.setColixAndPalette(colix, pid, i); + +return; +}if ("params" === propertyName) { +this.isActive = true; +var data = value; +var colixes = data[0]; +var atrans = data[1]; +var sizes = data[2]; +var rd = new J.atomdata.RadiusData(null, 0, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO); +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var i0 = bs.nextSetBit(0); +if (this.mads == null && i0 >= 0) this.mads = Clazz.newShortArray (this.ms.ac, 0); +var n = this.checkColixLength(colixes == null ? 0 : 4, bs.length()); +for (var i = i0, pt = 0; i >= 0 && i < n; i = bs.nextSetBit(i + 1), pt++) { +var colix = (colixes == null ? 0 : colixes[pt]); +var f = (atrans == null ? 0 : atrans[pt]); +if (f > 0.01) colix = JU.C.getColixTranslucent3(colix, true, f); +this.setColixAndPalette(colix, J.c.PAL.UNKNOWN.id, i); +if (sizes == null) continue; +var isVisible = ((rd.value = sizes[pt]) > 0); +this.setSizeRD2(i, rd, isVisible); +} +return; +}if ("translucency" === propertyName) { +this.isActive = true; +var isTranslucent = (value.equals("translucent")); +this.checkColixLength(4, this.ms.ac); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.colixes[i] = JU.C.getColixTranslucent3(this.colixes[i], isTranslucent, this.translucentLevel); +if (isTranslucent) this.bsColixSet.set(i); +} +return; +}if (propertyName === "deleteModelAtoms") { +var info = (value)[2]; +var firstAtomDeleted = info[1]; +var nAtomsDeleted = info[2]; +this.mads = JU.AU.deleteElements(this.mads, firstAtomDeleted, nAtomsDeleted); +this.colixes = JU.AU.deleteElements(this.colixes, firstAtomDeleted, nAtomsDeleted); +this.paletteIDs = JU.AU.deleteElements(this.paletteIDs, firstAtomDeleted, nAtomsDeleted); +JU.BSUtil.deleteBits(this.bsSizeSet, bs); +JU.BSUtil.deleteBits(this.bsColixSet, bs); +return; +}this.setPropS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "checkColixLength", +function(colix, n){ +n = Math.min(this.ms.ac, n); +if (colix == 0) return (this.colixes == null ? 0 : this.colixes.length); +if (this.colixes == null || n > this.colixes.length) { +this.colixes = JU.AU.ensureLengthShort(this.colixes, n); +this.paletteIDs = JU.AU.ensureLengthByte(this.paletteIDs, n); +}if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.ms.ac); +return n; +}, "~N,~N"); +Clazz.defineMethod(c$, "setColixAndPalette", +function(colix, paletteID, atomIndex){ +if (this.colixes == null) { +this.checkColixLength(-1, this.ms.ac); +}this.colixes[atomIndex] = colix = this.getColixI(colix, paletteID, atomIndex); +this.bsColixSet.setBitTo(atomIndex, colix != 0 || this.shapeID == 0); +this.paletteIDs[atomIndex] = paletteID; +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +if (!this.isActive) return; +var atoms = this.ms.at; +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (atom == null || (atom.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(i)) continue; +atom.setClickable(this.vf); +} +}); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Axes.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Axes.js new file mode 100755 index 000000000000..7a691d15b1ff --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Axes.js @@ -0,0 +1,147 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.FontLineShape", "JU.P3", "$.V3"], "J.shape.Axes", ["JU.PT", "JU.Escape", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.axisXY = null; +this.scale = 0; +this.fixedOrigin = null; +this.originPoint = null; +this.axisPoints = null; +this.labels = null; +this.axisType = null; +this.axes2 = null; +this.pt0 = null; +this.fixedOriginUC = null; +this.corner = null; +Clazz.instantialize(this, arguments);}, J.shape, "Axes", J.shape.FontLineShape); +Clazz.prepareFields (c$, function(){ +this.axisXY = new JU.P3(); +this.originPoint = new JU.P3(); +this.axisPoints = new Array(6); +{ +for (var i = 6; --i >= 0; ) this.axisPoints[i] = new JU.P3(); + +}this.pt0 = new JU.P3(); +this.fixedOriginUC = new JU.P3(); +this.corner = new JU.V3(); +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("position" === propertyName) { +var doSetScale = (this.axisXY.z == 0 && (value).z != 0); +this.axisXY = value; +this.setScale(doSetScale ? 1 : this.scale); +return; +}if ("origin" === propertyName) { +if (value == null || (value).length() == 0) { +this.fixedOrigin = null; +} else { +if (this.fixedOrigin == null) this.fixedOrigin = new JU.P3(); +this.fixedOrigin.setT(value); +}this.reinitShape(); +return; +}if ("labels" === propertyName) { +this.labels = value; +return; +}if ("labelsOn" === propertyName) { +this.labels = null; +return; +}if ("labelsOff" === propertyName) { +this.labels = Clazz.newArray(-1, ["", "", ""]); +return; +}if ("type" === propertyName) { +this.axisType = value; +if ("abc".equals(this.axisType)) this.axisType = null; +}if ("axes2" === propertyName) { +this.axes2 = (value == null || value.equals("") ? null : value); +return; +}this.setPropFLS(propertyName, value); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.translucentAllowed = false; +this.myType = "axes"; +this.font3d = this.vwr.gdata.getFont3D(16); +this.setPoints(this.vwr.g.axesMode); +}); +Clazz.defineMethod(c$, "setPoints", +function(axesMode){ +var unitcell; +if (axesMode != 603979808 || this.ms.unitCells == null || (unitcell = this.vwr.getCurrentUnitCell()) == null) { +this.originPoint.setT(this.fixedOrigin != null ? this.fixedOrigin : axesMode == 603979809 ? this.vwr.getBoundBoxCenter() : this.pt0); +this.setScale(this.vwr.getFloat(570425346) / 2); +return; +}var fset = unitcell.getUnitCellMultiplier(); +unitcell = unitcell.getUnitCellMultiplied(); +var voffset = this.vwr.getFloat(570425345); +this.fixedOriginUC.set(voffset, voffset, voffset); +var offset = unitcell.getCartesianOffset(); +var vertices = unitcell.getUnitCellVerticesNoOffset(); +this.originPoint.add2(offset, vertices[0]); +if (voffset != 0) unitcell.toCartesian(this.fixedOriginUC, false); + else if (this.fixedOrigin != null) this.originPoint.setT(this.fixedOrigin); +if (voffset != 0) { +this.originPoint.add(this.fixedOriginUC); +}var scale = this.scale = this.vwr.getFloat(570425346) / 2; +if (fset != null && fset.z > 0) scale *= Math.abs(fset.z); +this.axisPoints[0].scaleAdd2(scale, vertices[4], this.originPoint); +this.axisPoints[1].scaleAdd2(scale, vertices[2], this.originPoint); +this.axisPoints[2].scaleAdd2(scale, vertices[1], this.originPoint); +}, "~N"); +Clazz.defineMethod(c$, "reinitShape", +function(){ +var f = this.font3d; +this.initShape(); +if (f != null) this.font3d = f; +}); +Clazz.defineMethod(c$, "getAxisPoint", +function(i, unscaled, ptTemp){ +if (unscaled) { +ptTemp.setT(this.axisPoints[i]); +} else { +ptTemp.sub2(this.axisPoints[i], this.originPoint); +ptTemp.scale(0.5); +}return ptTemp; +}, "~N,~B,JU.P3"); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +if (property === "originPoint") return this.originPoint; +if (property === "axisPoints") return this.axisPoints; +if (property === "axesTypeXY") return (this.axisXY.z == 0 ? Boolean.FALSE : Boolean.TRUE); +if (property === "origin") return this.fixedOrigin; +return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "setScale", +function(scale){ +this.scale = scale; +this.corner.setT(this.vwr.getBoundBoxCornerVector()); +for (var i = 6; --i >= 0; ) { +var axisPoint = this.axisPoints[i]; +axisPoint.setT(JV.JC.unitAxisVectors[i]); +if (this.corner.x < 1.5) this.corner.x = 1.5; +if (this.corner.y < 1.5) this.corner.y = 1.5; +if (this.corner.z < 1.5) this.corner.z = 1.5; +if (this.axisXY.z == 0) { +axisPoint.x *= this.corner.x * scale; +axisPoint.y *= this.corner.y * scale; +axisPoint.z *= this.corner.z * scale; +}axisPoint.add(this.originPoint); +} +}, "~N"); +Clazz.defineMethod(c$, "getAxesState", +function(sb){ +sb.append(" axes scale ").appendF(this.vwr.getFloat(570425346)).append(";\n"); +if (this.fixedOrigin != null) sb.append(" axes center ").append(JU.Escape.eP(this.fixedOrigin)).append(";\n"); +if (this.axisXY.z != 0) sb.append(" axes position [").appendI(Clazz.floatToInt(this.axisXY.x)).append(" ").appendI(Clazz.floatToInt(this.axisXY.y)).append(" ").append(this.axisXY.z < 0 ? " %" : "").append("]"); +if (this.axes2 != null) sb.append(" ").append(JU.PT.esc(this.axes2)); +sb.append(";\n"); +if (this.labels != null) { +sb.append(" axes labels "); +for (var i = 0; i < this.labels.length; i++) if (this.labels[i] != null) sb.append(JU.PT.esc(this.labels[i])).append(" "); + +sb.append(";\n"); +}if (this.axisType != null) { +sb.append(" axes type " + JU.PT.esc(this.axisType)); +}return sb.toString(); +}, "JU.SB"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Balls.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Balls.js new file mode 100755 index 000000000000..485961d65452 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Balls.js @@ -0,0 +1,95 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.AtomShape"], "J.shape.Balls", ["JU.BS", "J.c.PAL", "JU.C"], function(){ +var c$ = Clazz.declareType(J.shape, "Balls", J.shape.AtomShape); +Clazz.overrideMethod(c$, "setSize", +function(size, bsSelected){ +if (size == 2147483647) { +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +this.bsSizeSet.or(bsSelected); +return; +}this.setSize2(size, bsSelected); +}, "~N,JU.BS"); +Clazz.overrideMethod(c$, "setSizeRD", +function(rd, bsSelected){ +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var bsLength = Math.min(this.ms.at.length, bsSelected.length()); +for (var i = bsSelected.nextSetBit(0); i >= 0 && i < bsLength; i = bsSelected.nextSetBit(i + 1)) { +var atom = this.ms.at[i]; +atom.setMadAtom(this.vwr, rd); +this.bsSizeSet.set(i); +} +}, "J.atomdata.RadiusData,JU.BS"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("color" === propertyName) { +var colix = JU.C.getColixO(value); +if (colix == 0) colix = 2; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var pid = J.c.PAL.pidOf(value); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var atom = this.ms.at[i]; +atom.colixAtom = this.getColixA(colix, pid, atom); +this.bsColixSet.setBitTo(i, colix != 2 || pid != J.c.PAL.NONE.id); +atom.paletteID = pid; +} +this.vwr.setModelkitPropertySafely("updateatomkeys", bs); +return; +}if ("colorValues" === propertyName) { +var values = value; +if (values.length == 0) return; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var n = 0; +var color = null; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (n >= values.length) return; +color = Integer.$valueOf(values[n++]); +var colix = JU.C.getColixO(color); +if (colix == 0) colix = 2; +var pid = J.c.PAL.pidOf(color); +var atom = this.ms.at[i]; +atom.colixAtom = this.getColixA(colix, pid, atom); +this.bsColixSet.setBitTo(i, colix != 2 || pid != J.c.PAL.NONE.id); +atom.paletteID = pid; +} +return; +}if ("colors" === propertyName) { +var data = value; +var colixes = data[0]; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var c; +var atoms = this.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (i >= colixes.length || (c = colixes[i]) == 0) continue; +atoms[i].colixAtom = c; +atoms[i].paletteID = J.c.PAL.UNKNOWN.id; +this.bsColixSet.set(i); +} +return; +}if ("translucency" === propertyName) { +var isTranslucent = ((value).equals("translucent")); +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var atoms = this.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +atoms[i].setTranslucent(isTranslucent, this.translucentLevel); +if (isTranslucent) this.bsColixSet.set(i); +} +return; +}if (propertyName.startsWith("ball")) { +propertyName = propertyName.substring(4).intern(); +}this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +var bsDeleted = this.vwr.slm.bsDeleted; +for (var i = this.ms.ac; --i >= 0; ) { +var atom = this.ms.at[i]; +if (atom == null) continue; +atom.setClickable(0); +if (bsDeleted != null && bsDeleted.get(i) || (atom.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(i)) continue; +atom.setClickable(this.vf); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Bbcage.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Bbcage.js new file mode 100755 index 000000000000..bf413e650f56 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Bbcage.js @@ -0,0 +1,22 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.FontLineShape"], "J.shape.Bbcage", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isVisible = false; +Clazz.instantialize(this, arguments);}, J.shape, "Bbcage", J.shape.FontLineShape); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +this.setPropFLS(propertyName, value); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shape.Bbcage, "initShape", []); +this.font3d = this.vwr.gdata.getFont3D(16); +this.myType = "boundBox"; +}); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bs){ +var bboxModels; +this.isVisible = (this.vwr.getShowBbcage() && ((bboxModels = this.ms.bboxModels) == null || bs.intersects(bboxModels))); +}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Echo.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Echo.js new file mode 100755 index 000000000000..eddbd3c9a0e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Echo.js @@ -0,0 +1,217 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.TextShape"], "J.shape.Echo", ["java.util.Hashtable", "JU.Lst", "$.PT", "JM.Text", "JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.scaleObject = null; +Clazz.instantialize(this, arguments);}, J.shape, "Echo", J.shape.TextShape); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.setProperty("target", "top", null); +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("target" === propertyName) { +if ("%SCALE".equals(value)) { +this.currentObject = this.scaleObject; +this.thisID = "%SCALE"; +if (this.currentObject != null) return; +}var target = (value).intern().toLowerCase(); +if (JU.PT.isWild(target)) { +propertyName = "thisID"; +} else if (target !== "none" && target !== "all") { +this.isAll = false; +var text = (this.thisID === "%SCALE" ? this.scaleObject : this.objects.get(target)); +if (text == null) { +var valign = 3; +var halign = 4; +if ("top" === target) { +valign = 0; +halign = 8; +} else if ("middle" === target) { +valign = 2; +halign = 8; +} else if ("bottom" === target) { +valign = 1; +} else if ("error" === target) { +valign = 0; +}text = JM.Text.newEcho(this.vwr, this.vwr.gdata.getFont3DFS("Serif", 20), target, 10, valign, halign, 0); +text.adjustForWindow = true; +if (this.thisID === "%SCALE") { +this.scaleObject = text; +} else { +this.objects.put(target, text); +if (target.startsWith("_!_")) { +text.thisModelOnly = true; +}}if (this.currentFont != null) text.setFont(this.currentFont, true); +if (this.currentColor != null) text.colix = JU.C.getColixO(this.currentColor); +if (this.currentBgColor != null) text.bgcolix = JU.C.getColixO(this.currentBgColor); +if (this.currentTranslucentLevel != 0) text.setTranslucent(this.currentTranslucentLevel, false); +if (this.currentBgTranslucentLevel != 0) text.setTranslucent(this.currentBgTranslucentLevel, true); +}this.currentObject = text; +if (this.thisID !== "%SCALE") this.thisID = null; +return; +}}if ("thisID" === propertyName) { +if (value == null) { +this.currentObject = null; +this.thisID = null; +return; +}var target = value; +if (target === "%SCALE") { +this.currentObject = this.scaleObject; +this.thisID = target; +} else { +this.currentObject = this.objects.get(target); +if (this.currentObject == null && JU.PT.isWild(target)) this.thisID = target.toUpperCase(); +}return; +}if ("%SCALE" === propertyName) { +this.currentObject = this.scaleObject = value; +this.thisID = "%SCALE"; +return; +}if ("color" === propertyName || "font" === propertyName) { +if (this.scaleObject != null && this.currentObject === this.scaleObject) { +var f = this.currentFont; +var c = this.currentColor; +this.setPropTS(propertyName, value, bs); +this.currentFont = f; +this.currentColor = c; +return; +}}if ("off" === propertyName) { +if (this.currentObject != null && this.currentObject === this.scaleObject) { +this.currentObject = this.scaleObject = null; +return; +}}if ("text" === propertyName) { +if ((value).startsWith("%SCALE")) { +this.thisID = "%SCALE"; +this.setPropTS("text", value, null); +this.scaleObject = this.currentObject; +if (this.scaleObject != null && this.objects.get(this.scaleObject.target) === this.scaleObject) this.setPropTS("delete", this.scaleObject, null); +this.currentObject = this.scaleObject; +return; +}}if ("scalereference" === propertyName) { +if (this.currentObject != null) { +var val = (value).floatValue(); +this.currentObject.setScalePixelsPerMicron(val == 0 ? 0 : 10000 / val); +}return; +}if ("point" === propertyName) { +if (this.currentObject != null) { +var t = this.currentObject; +t.pointerPt = (value == null ? null : value); +t.pointer = (value == null ? 0 : 1); +}return; +}if ("xyz" === propertyName) { +if (this.currentObject != null) { +if (this.vwr.getBoolean(603979847)) { +this.currentObject.setScalePixelsPerMicron(this.vwr.getScalePixelsPerAngstrom(false) * 10000); +}this.currentObject.setXYZ(value, true); +}}if ("scale" === propertyName) { +if (this.currentObject != null) { +(this.currentObject).setScale((value).floatValue()); +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.setScale((value).floatValue()); + +}return; +}if ("image" === propertyName) { +if (this.currentObject != null) { +(this.currentObject).setImage(value); +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.setImage(value); + +}return; +}if ("hidden" === propertyName) { +var isHidden = (value).booleanValue(); +if (this.currentObject != null) { +(this.currentObject).hidden = isHidden; +} else if (this.isAll || this.thisID != null) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) if (this.isAll || JU.PT.isMatch(t.target.toUpperCase(), this.thisID, true, true)) t.hidden = isHidden; + +}return; +}if ("script" === propertyName) { +if (this.currentObject != null) this.currentObject.setScript(value); +return; +}if ("xpos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableX((value).intValue()); +}return; +}if ("ypos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableY((value).intValue()); +}return; +}if ("%xpos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableXPercent((value).intValue()); +}return; +}if ("%ypos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableYPercent((value).intValue()); +}return; +}if ("%zpos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableZPercent((value).intValue()); +}return; +}if ("xypos" === propertyName) { +if (this.currentObject != null) { +var pt = value; +this.currentObject.setXYZ(null, true); +if (pt.z == 3.4028235E38) { +this.currentObject.setMovableX(Clazz.floatToInt(pt.x)); +this.currentObject.setMovableY(Clazz.floatToInt(pt.y)); +} else { +this.currentObject.setMovableXPercent(Clazz.floatToInt(pt.x)); +this.currentObject.setMovableYPercent(Clazz.floatToInt(pt.y)); +}}return; +}if ("offset" === propertyName) { +if (this.currentObject != null) { +this.currentObject.pymolOffset = value; +}return; +}if ("align" === propertyName) { +if (this.currentObject != null) { +this.currentObject.pymolOffset = null; +}}this.setPropTS(propertyName, value, null); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "getPropertyData", +function(property, data){ +if ("currentTarget" === property) { +return (this.currentObject != null && (data[0] = this.currentObject.target) != null); +}if (property === "%SCALE") { +data[0] = this.scaleObject; +return (data[0] != null); +}if (property === "checkID") { +var key = (data[0]).toUpperCase(); +var isWild = JU.PT.isWild(key); +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) { +var id = t.target; +if (id.equalsIgnoreCase(key) || isWild && JU.PT.isMatch(id.toUpperCase(), key, true, true)) { +data[1] = id; +return true; +}} +return false; +}return this.getPropShape(property, data); +}, "~S,~A"); +Clazz.overrideMethod(c$, "getShapeDetail", +function(){ +var lst = new java.util.Hashtable(); +for (var e, $e = this.objects.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var info = new java.util.Hashtable(); +var t = e.getValue(); +var name = e.getKey(); +info.put("boxXY", t.boxXY); +if (t.xyz != null) info.put("xyz", t.xyz); +var o = t.image; +if (o == null) { +info.put("text", t.text == null ? "" : t.text); +} else { +info.put("imageFile", t.text); +info.put("imageWidth", Integer.$valueOf(this.vwr.apiPlatform.getImageWidth(o))); +info.put("imageHeight", Integer.$valueOf(this.vwr.apiPlatform.getImageHeight(o))); +}lst.put(name, info); +} +var lst2 = new JU.Lst(); +lst2.addLast(lst); +return lst2; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/FontLineShape.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/FontLineShape.js new file mode 100755 index 000000000000..23f45b01e3e1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/FontLineShape.js @@ -0,0 +1,42 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.Shape"], "J.shape.FontLineShape", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tickInfos = null; +this.font3d = null; +Clazz.instantialize(this, arguments);}, J.shape, "FontLineShape", J.shape.Shape); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.translucentAllowed = false; +}); +Clazz.defineMethod(c$, "setPropFLS", +function(propertyName, value){ +if ("tickInfo" === propertyName) { +var t = value; +var type = t.type; +if (t.ticks == null) { +if (t.type == ' ') { +this.tickInfos = null; +return; +}if (this.tickInfos != null) { +var haveTicks = false; +for (var i = 0; i < 4; i++) { +if (this.tickInfos[i] != null && this.tickInfos[i].type == t.type) { +this.tickInfos[i] = null; +} else { +haveTicks = true; +}} +if (!haveTicks) this.tickInfos = null; +}return; +}if (this.tickInfos == null) this.tickInfos = new Array(4); +this.tickInfos["xyz".indexOf(type) + 1] = t; +return; +}if ("font" === propertyName) { +this.font3d = value; +return; +}}, "~S,~O"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Frank.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Frank.js new file mode 100755 index 000000000000..ddafd4754742 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Frank.js @@ -0,0 +1,66 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.Shape"], "J.shape.Frank", ["J.i18n.GT", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.currentMetricsFont3d = null; +this.baseFont3d = null; +this.frankWidth = 0; +this.frankAscent = 0; +this.frankDescent = 0; +this.x = 0; +this.y = 0; +this.dx = 0; +this.dy = 0; +this.scaling = 0; +this.font3d = null; +Clazz.instantialize(this, arguments);}, J.shape, "Frank", J.shape.Shape); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.myType = "frank"; +this.baseFont3d = this.font3d = this.vwr.gdata.getFont3DFSS("SansSerif", "Plain", 16); +if (JV.Viewer.isJS || JV.Viewer.isSwingJS) J.shape.Frank.frankString = "JSmol"; + else if (false) J.shape.Frank.frankString = "JmolD"; +this.calcMetrics(); +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("font" === propertyName) { +var f = value; +if (f.fontSize >= 10) { +this.baseFont3d = f; +this.scaling = 0; +}}return; +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "wasClicked", +function(x, y){ +var width = this.vwr.getScreenWidth(); +var height = this.vwr.getScreenHeight(); +return (width > 0 && height > 0 && x > width - this.frankWidth - 4 && y > height - this.frankAscent - 4); +}, "~N,~N"); +Clazz.overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +if (!this.vwr.getShowFrank() || !this.wasClicked(x, y) || !this.vwr.menuEnabled()) return false; +this.vwr.hoverOnPt(x, y, J.i18n.GT.$("Click for menu..."), null, null); +return true; +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "calcMetrics", +function(){ +if (this.font3d === this.currentMetricsFont3d) return; +this.currentMetricsFont3d = this.font3d; +this.frankWidth = this.font3d.stringWidth(J.shape.Frank.frankString); +this.frankDescent = this.font3d.getDescent(); +this.frankAscent = this.font3d.getAscent(); +}); +Clazz.defineMethod(c$, "getFont", +function(imageFontScaling){ +if (imageFontScaling != this.scaling) { +this.scaling = imageFontScaling; +this.font3d = this.vwr.gdata.getFont3DScaled(this.baseFont3d, imageFontScaling); +this.calcMetrics(); +}}, "~N"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +c$.frankString = "Jmol"; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Halos.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Halos.js new file mode 100755 index 000000000000..f97a4a853b08 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Halos.js @@ -0,0 +1,37 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.AtomShape"], "J.shape.Halos", ["JU.BSUtil", "$.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.colixSelection = 2; +this.bsHighlight = null; +this.colixHighlight = 10; +Clazz.instantialize(this, arguments);}, J.shape, "Halos", J.shape.AtomShape); +Clazz.defineMethod(c$, "initState", +function(){ +this.translucentAllowed = false; +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("translucency" === propertyName) return; +if ("argbSelection" === propertyName) { +this.colixSelection = JU.C.getColix((value).intValue()); +return; +}if ("argbHighlight" === propertyName) { +this.colixHighlight = JU.C.getColix((value).intValue()); +return; +}if ("highlight" === propertyName) { +this.bsHighlight = value; +return; +}if (propertyName === "deleteModelAtoms") { +JU.BSUtil.deleteBits(this.bsHighlight, bs); +}this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bs){ +var bsSelected = (this.vwr.getSelectionHalosEnabled() ? this.vwr.bsA() : null); +var atoms = this.ms.at; +for (var i = this.ms.ac; --i >= 0; ) { +if (atoms[i] != null) atoms[i].setShapeVisibility(this.vf, bsSelected != null && bsSelected.get(i) || this.mads != null && this.mads[i] != 0); +} +}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Hover.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Hover.js new file mode 100755 index 000000000000..1d67592300f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Hover.js @@ -0,0 +1,60 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.TextShape"], "J.shape.Hover", ["JU.AU", "JM.Text", "JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.hoverText = null; +this.atomIndex = -1; +this.xy = null; +this.text = null; +this.labelFormat = "%U"; +this.atomFormats = null; +this.specialLabel = null; +Clazz.instantialize(this, arguments);}, J.shape, "Hover", J.shape.TextShape); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.isHover = true; +var font3d = this.vwr.gdata.getFont3DFSS("SansSerif", "Plain", 12); +var bgcolix = JU.C.getColixS("#FFFFC3"); +var colix = 4; +this.currentObject = this.hoverText = JM.Text.newLabel(this.vwr, font3d, null, colix, bgcolix, 4, 0); +this.hoverText.adjustForWindow = true; +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +if ("target" === propertyName) { +if (value == null) this.atomIndex = -1; + else { +this.atomIndex = (value).intValue(); +}return; +}if ("text" === propertyName) { +this.text = value; +if (this.text != null && this.text.length == 0) this.text = null; +return; +}if ("specialLabel" === propertyName) { +this.specialLabel = value; +return; +}if ("atomLabel" === propertyName) { +var text = value; +if (text != null && text.length == 0) text = null; +var count = this.ms.ac; +if (this.atomFormats == null || this.atomFormats.length < count) this.atomFormats = new Array(count); +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) this.atomFormats[i] = text; + +return; +}if ("xy" === propertyName) { +this.xy = value; +return; +}if ("label" === propertyName) { +this.labelFormat = value; +if (this.labelFormat != null && this.labelFormat.length == 0) this.labelFormat = null; +return; +}if (propertyName === "deleteModelAtoms") { +if (this.atomFormats != null) { +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +this.atomFormats = JU.AU.deleteElements(this.atomFormats, firstAtomDeleted, nAtomsDeleted); +}this.atomIndex = -1; +return; +}this.setPropTS(propertyName, value, null); +}, "~S,~O,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Labels.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Labels.js new file mode 100755 index 000000000000..9b6fbf453dc5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Labels.js @@ -0,0 +1,522 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.AtomShape", "java.util.Hashtable", "JU.P3"], "J.shape.Labels", ["JU.AU", "$.BS", "$.PT", "J.c.PAL", "JM.LabelToken", "$.Text", "JS.SV", "JU.BSUtil", "$.C", "$.Font", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.strings = null; +this.formats = null; +this.bgcolixes = null; +this.fids = null; +this.offsets = null; +this.atomLabels = null; +this.labelBoxes = null; +this.bsFontSet = null; +this.bsBgColixSet = null; +this.defaultOffset = 0; +this.defaultAlignment = 0; +this.defaultZPos = 0; +this.defaultFontId = 0; +this.defaultColix = 0; +this.defaultBgcolix = 0; +this.defaultPaletteID = 0; +this.defaultPointer = 0; +this.zeroFontId = 0; +this.setDefaults = false; +this.isScaled = false; +this.scalePixelsPerMicron = 0; +this.ptTemp = null; +this.pickedAtom = -1; +this.lastPicked = -1; +this.pickedOffset = 0; +this.pickedX = 0; +this.pickedY = 0; +Clazz.instantialize(this, arguments);}, J.shape, "Labels", J.shape.AtomShape); +Clazz.prepareFields (c$, function(){ +this.atomLabels = new java.util.Hashtable(); +this.ptTemp = new JU.P3(); +}); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.defaultFontId = this.zeroFontId = this.vwr.gdata.getFont3DFSS("SansSerif", "Plain", 13).fid; +this.defaultColix = 0; +this.defaultBgcolix = 0; +this.defaultOffset = JV.JC.LABEL_DEFAULT_OFFSET; +this.defaultAlignment = 4; +this.defaultPointer = 0; +this.defaultZPos = 0; +this.translucentAllowed = false; +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +this.isActive = true; +var atoms = this.ms.at; +var ac = this.ms.ac; +if ("setDefaults" === propertyName) { +this.setDefaults = (value).booleanValue(); +return; +}if ("color" === propertyName) { +var pid = J.c.PAL.pidOf(value); +var colix = JU.C.getColixO(value); +if (this.setDefaults) { +this.defaultColix = colix; +this.defaultPaletteID = pid; +} else { +var n = this.checkColixLength(colix, bs.length()); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) this.setLabelColix(i, colix, pid); + +}return; +}if ("scalereference" === propertyName) { +if (this.strings == null) return; +var val = (value).floatValue(); +var scalePixelsPerMicron = (val == 0 ? 0 : 10000 / val); +var n = Math.min(ac, this.strings.length); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) { +var text = this.getLabel(i); +if (text == null) { +text = JM.Text.newLabel(this.vwr, null, this.strings[i], 0, 0, 0, scalePixelsPerMicron); +this.putLabel(i, text); +} else { +text.setScalePixelsPerMicron(scalePixelsPerMicron); +}} +return; +}if ("label" === propertyName) { +var isPicked = (this.isPickingMode() && bs.cardinality() == 1 && bs.nextSetBit(0) == this.lastPicked); +this.setScaling(); +var tokens = null; +var nbs = this.checkStringLength(bs.length()); +if (this.defaultColix != 0 || this.defaultPaletteID != 0) this.checkColixLength(this.defaultColix, bs.length()); +if (this.defaultBgcolix != 0) this.checkBgColixLength(this.defaultBgcolix, bs.length()); +if (Clazz.instanceOf(value,"JU.Lst")) { +var list = value; +var n = list.size(); +tokens = Clazz.newArray(-1, [null]); +for (var pt = 0, i = bs.nextSetBit(0); i >= 0 && i < nbs; i = bs.nextSetBit(i + 1)) { +if (pt >= n) { +this.setLabel(J.shape.Labels.nullToken, "", i, !isPicked); +continue; +}tokens[0] = null; +this.setLabel(tokens, JS.SV.sValue(list.get(pt++)), i, !isPicked); +} +} else { +var strLabel = value; +tokens = (strLabel == null || strLabel.length == 0 ? J.shape.Labels.nullToken : Clazz.newArray(-1, [null])); +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setLabel(tokens, strLabel, i, !isPicked); + +}return; +}if (propertyName.startsWith("label:")) { +this.setScaling(); +this.checkStringLength(ac); +var label = propertyName.substring(6); +if (label.length == 0) label = null; +this.setLabel( Clazz.newArray(-1, [null]), label, (value).intValue(), false); +return; +}if ("clearBoxes" === propertyName) { +this.labelBoxes = null; +return; +}if ("translucency" === propertyName || "bgtranslucency" === propertyName) { +return; +}if ("bgcolor" === propertyName) { +this.isActive = true; +if (this.bsBgColixSet == null) this.bsBgColixSet = JU.BS.newN(ac); +var bgcolix = JU.C.getColixO(value); +if (this.setDefaults) { +this.defaultBgcolix = bgcolix; +} else { +var n = this.checkBgColixLength(bgcolix, bs.length()); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) this.setBgcolix(i, bgcolix); + +}return; +}if (this.bsFontSet == null) this.bsFontSet = JU.BS.newN(ac); +if ("fontsize" === propertyName) { +var fontsize = (value).intValue(); +if (fontsize < 0) { +this.fids = null; +return; +}var f; +if (this.setDefaults) { +f = JU.Font.getFont3D(this.defaultFontId); +this.defaultFontId = this.vwr.getFont3D(f.fontFace, f.fontStyle, fontsize).fid; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) { +f = JU.Font.getFont3D(this.fids == null || i >= this.fids.length ? this.fids[i] : this.defaultFontId); +this.setFont(i, this.vwr.getFont3D(f.fontFace, f.fontStyle, fontsize).fid); +} +}return; +}if ("font" === propertyName) { +var fid = (value).fid; +if (this.setDefaults) { +this.defaultFontId = fid; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setFont(i, fid); + +}return; +}if ("offset" === propertyName) { +if (Clazz.instanceOf(value, Integer)) { +var offset = (value).intValue(); +if (this.setDefaults) { +this.defaultOffset = offset; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setOffsets(i, offset); + +}} else if (!this.setDefaults) { +this.checkColixLength(-1, ac); +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setPymolOffset(i, value); + +}return; +}if ("align" === propertyName) { +var type = value; +var hAlignment = (type.equalsIgnoreCase("right") ? 12 : type.equalsIgnoreCase("center") ? 8 : 4); +if (this.setDefaults) { +this.defaultAlignment = hAlignment; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setHorizAlignment(i, hAlignment); + +}return; +}if ("pointer" === propertyName) { +var pointer = (value).intValue(); +if (this.setDefaults) { +this.defaultPointer = pointer; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setPointer(i, pointer); + +}return; +}if ("front" === propertyName) { +var TF = (value).booleanValue(); +if (this.setDefaults) { +this.defaultZPos = (TF ? 32 : 0); +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setZPos(i, 32, TF); + +}return; +}if ("group" === propertyName) { +var TF = (value).booleanValue(); +if (this.setDefaults) { +this.defaultZPos = (TF ? 16 : 0); +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setZPos(i, 16, TF); + +}return; +}if ("display" === propertyName || "toggleLabel" === propertyName) { +var mode = ("toggleLabel" === propertyName ? 0 : (value).booleanValue() ? 1 : -1); +if (this.mads == null) this.mads = Clazz.newShortArray (ac, 0); +var strLabelPDB = null; +var tokensPDB = null; +var strLabelUNK = null; +var tokensUNK = null; +var strLabel; +var tokens; +var nstr = this.checkStringLength(bs.length()); +var bgcolix = this.defaultBgcolix; +var nbg = this.checkBgColixLength(bgcolix, bs.length()); +var thisMad = (mode >= 0 ? 1 : -1); +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (i < nstr && this.strings[i] != null) { +this.mads[i] = (mode == 1 || mode == 0 && this.mads[i] < 0 ? 1 : -1); +} else { +this.mads[i] = thisMad; +if (atom.getGroup3(false).equals("UNK")) { +if (strLabelUNK == null) { +strLabelUNK = this.vwr.getStandardLabelFormat(1); +tokensUNK = JM.LabelToken.compile(this.vwr, strLabelUNK, '\0', null); +}strLabel = strLabelUNK; +tokens = tokensUNK; +} else { +if (strLabelPDB == null) { +strLabelPDB = this.vwr.getStandardLabelFormat(2); +tokensPDB = JM.LabelToken.compile(this.vwr, strLabelPDB, '\0', null); +}strLabel = strLabelPDB; +tokens = tokensPDB; +}this.strings[i] = JM.LabelToken.formatLabelAtomArray(this.vwr, atom, tokens, '\0', null, this.ptTemp); +this.formats[i] = strLabel; +this.bsSizeSet.set(i); +if (i < nbg && !this.bsBgColixSet.get(i)) this.setBgcolix(i, this.defaultBgcolix); +}atom.setShapeVisibility(this.vf, this.strings != null && i < this.strings.length && this.strings[i] != null && this.mads[i] >= 0); +} +return; +}if ("pymolLabels" === propertyName) { +this.setPymolLabels(value, bs); +return; +}if (propertyName === "deleteModelAtoms") { +this.labelBoxes = null; +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +this.fids = JU.AU.deleteElements(this.fids, firstAtomDeleted, nAtomsDeleted); +this.bgcolixes = JU.AU.deleteElements(this.bgcolixes, firstAtomDeleted, nAtomsDeleted); +this.offsets = JU.AU.deleteElements(this.offsets, firstAtomDeleted, nAtomsDeleted); +this.formats = JU.AU.deleteElements(this.formats, firstAtomDeleted, nAtomsDeleted); +this.strings = JU.AU.deleteElements(this.strings, firstAtomDeleted, nAtomsDeleted); +JU.BSUtil.deleteBits(this.bsFontSet, bs); +JU.BSUtil.deleteBits(this.bsBgColixSet, bs); +}this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "isPickingMode", +function(){ +return (this.vwr.getPickingMode() == 2 && this.labelBoxes != null); +}); +Clazz.defineMethod(c$, "checkStringLength", +function(n){ +var ac = this.ms.ac; +n = Math.min(ac, n); +if (this.strings == null || n > this.strings.length) { +this.formats = JU.AU.ensureLengthS(this.formats, n); +this.strings = JU.AU.ensureLengthS(this.strings, n); +if (this.bsSizeSet == null) this.bsSizeSet = JU.BS.newN(n); +}return n; +}, "~N"); +Clazz.defineMethod(c$, "checkBgColixLength", +function(colix, n){ +n = Math.min(this.ms.ac, n); +if (colix == 0) return (this.bgcolixes == null ? 0 : this.bgcolixes.length); +if (this.bgcolixes == null || n > this.bgcolixes.length) this.bgcolixes = JU.AU.ensureLengthShort(this.bgcolixes, n); +return n; +}, "~N,~N"); +Clazz.defineMethod(c$, "setPymolLabels", +function(labels, bsSelected){ +this.setScaling(); +var n = this.checkStringLength(this.ms.ac); +this.checkColixLength(-1, n); +for (var i = bsSelected.nextSetBit(0); i >= 0 && i < n; i = bsSelected.nextSetBit(i + 1)) this.setPymolLabel(i, labels.get(Integer.$valueOf(i)), null); + +}, "java.util.Map,JU.BS"); +Clazz.defineMethod(c$, "setPymolOffset", +function(i, value){ +var text = this.getLabel(i); +if (text == null) { +if (this.strings == null || i >= this.strings.length || this.strings[i] == null) return; +var fid = (this.bsFontSet != null && this.bsFontSet.get(i) ? this.fids[i] : -1); +if (fid < 0) this.setFont(i, fid = this.defaultFontId); +var a = this.ms.at[i]; +text = JM.Text.newLabel(this.vwr, JU.Font.getFont3D(fid), this.strings[i], this.getColix2(i, a, false), this.getColix2(i, a, true), 0, this.scalePixelsPerMicron); +this.setPymolLabel(i, text, this.formats[i]); +}text.pymolOffset = value; +}, "~N,~A"); +Clazz.defineMethod(c$, "setScaling", +function(){ +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = JU.BS.newN(this.ms.ac); +this.isScaled = this.vwr.getBoolean(603979847); +this.scalePixelsPerMicron = (this.isScaled ? this.vwr.getScalePixelsPerAngstrom(false) * 10000 : 0); +}); +Clazz.defineMethod(c$, "setPymolLabel", +function(i, t, format){ +if (t == null) return; +var label = t.text; +var atom = this.ms.at[i]; +if (atom == null) return; +this.addString(atom, i, label, format == null ? JU.PT.rep(label, "%", "%%") : format); +atom.setShapeVisibility(this.vf, true); +if (t.colix >= 0) this.setLabelColix(i, t.colix, J.c.PAL.UNKNOWN.id); +this.setFont(i, t.font.fid); +this.putLabel(i, t); +}, "~N,JM.Text,~S"); +Clazz.defineMethod(c$, "setLabel", +function(temp, strLabel, i, doAll){ +var atom = this.ms.at[i]; +var tokens = temp[0]; +if (tokens == null) tokens = temp[0] = JM.LabelToken.compile(this.vwr, strLabel, '\0', null); +var label = (tokens == null ? null : JM.LabelToken.formatLabelAtomArray(this.vwr, atom, tokens, '\0', null, this.ptTemp)); +var isNew = this.addString(atom, i, label, strLabel); +doAll = new Boolean (doAll |(isNew || label == null)).valueOf(); +var text = this.getLabel(i); +if (this.isScaled && doAll) { +text = JM.Text.newLabel(this.vwr, null, label, 0, 0, 0, this.scalePixelsPerMicron); +this.putLabel(i, text); +} else if (text != null) { +if (label == null) { +this.putLabel(i, null); +} else { +text.setText(label); +text.textUnformatted = strLabel; +}}if (!doAll) return; +if (this.defaultOffset != JV.JC.LABEL_DEFAULT_OFFSET) this.setOffsets(i, this.defaultOffset); +if (this.defaultAlignment != 4) this.setHorizAlignment(i, this.defaultAlignment); +if ((this.defaultZPos & 32) != 0) this.setZPos(i, 32, true); + else if ((this.defaultZPos & 16) != 0) this.setZPos(i, 16, true); +if (this.defaultPointer != 0) this.setPointer(i, this.defaultPointer); +if (this.defaultColix != 0 || this.defaultPaletteID != 0) this.setLabelColix(i, this.defaultColix, this.defaultPaletteID); +if (this.defaultBgcolix != 0) this.setBgcolix(i, this.defaultBgcolix); +if (this.defaultFontId != this.zeroFontId) this.setFont(i, this.defaultFontId); +}, "~A,~S,~N,~B"); +Clazz.defineMethod(c$, "addString", +function(atom, i, label, strLabel){ +atom.setShapeVisibility(this.vf, label != null); +var notNull = (strLabel != null); +var isNew = (this.strings[i] == null); +this.strings[i] = label; +this.formats[i] = (notNull && strLabel.indexOf("%{") >= 0 ? label : strLabel); +this.bsSizeSet.setBitTo(i, notNull); +return isNew; +}, "JM.Atom,~N,~S,~S"); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +if (property.equals("font")) return JU.Font.getFont3D(this.defaultFontId); +if (property.equals("offsets")) return this.offsets; +if (property.equals("label")) return (this.strings != null && index < this.strings.length && this.strings[index] != null ? this.strings[index] : ""); +return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "putLabel", +function(i, text){ +if (text == null) this.atomLabels.remove(Integer.$valueOf(i)); + else { +this.atomLabels.put(Integer.$valueOf(i), text); +text.textUnformatted = this.formats[i]; +}}, "~N,JM.Text"); +Clazz.defineMethod(c$, "getLabel", +function(i){ +return this.atomLabels.get(Integer.$valueOf(i)); +}, "~N"); +Clazz.defineMethod(c$, "putBox", +function(i, boxXY){ +if (this.labelBoxes == null) this.labelBoxes = new java.util.Hashtable(); +this.labelBoxes.put(Integer.$valueOf(i), boxXY); +}, "~N,~A"); +Clazz.defineMethod(c$, "getBox", +function(i){ +if (this.labelBoxes == null) return null; +return this.labelBoxes.get(Integer.$valueOf(i)); +}, "~N"); +Clazz.defineMethod(c$, "setLabelColix", +function(i, colix, pid){ +this.setColixAndPalette(colix, pid, i); +var text; +if (this.colixes != null && ((text = this.getLabel(i)) != null)) text.colix = this.colixes[i]; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setBgcolix", +function(i, bgcolix){ +this.bgcolixes[i] = bgcolix; +this.bsBgColixSet.setBitTo(i, bgcolix != 0); +var text = this.getLabel(i); +if (text != null) text.bgcolix = bgcolix; +}, "~N,~N"); +Clazz.defineMethod(c$, "setOffsets", +function(i, offset){ +if (this.offsets == null || i >= this.offsets.length) { +if (offset == JV.JC.LABEL_DEFAULT_OFFSET) return; +this.offsets = JU.AU.ensureLengthI(this.offsets, this.ms.ac); +}this.offsets[i] = (this.offsets[i] & 63) | offset; +var text = this.getLabel(i); +if (text != null) text.setOffset(offset); +}, "~N,~N"); +Clazz.defineMethod(c$, "setHorizAlignment", +function(i, hAlign){ +if (this.offsets == null || i >= this.offsets.length) { +switch (hAlign) { +case 0: +case 4: +return; +} +this.offsets = JU.AU.ensureLengthI(this.offsets, this.ms.ac); +}if (hAlign == 0) hAlign = 4; +this.offsets[i] = JV.JC.setHorizAlignment(this.offsets[i], hAlign); +var text = this.getLabel(i); +if (text != null) text.setAlignment(hAlign); +}, "~N,~N"); +Clazz.defineMethod(c$, "setPointer", +function(i, pointer){ +if (this.offsets == null || i >= this.offsets.length) { +if (pointer == 0) return; +this.offsets = JU.AU.ensureLengthI(this.offsets, this.ms.ac); +}this.offsets[i] = JV.JC.setPointer(this.offsets[i], pointer); +var text = this.getLabel(i); +if (text != null) text.pointer = pointer; +}, "~N,~N"); +Clazz.defineMethod(c$, "setZPos", +function(i, flag, TF){ +if (this.offsets == null || i >= this.offsets.length) { +if (!TF) return; +this.offsets = JU.AU.ensureLengthI(this.offsets, this.ms.ac); +}this.offsets[i] = JV.JC.setZPosition(this.offsets[i], TF ? flag : 0); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "setFont", +function(i, fid){ +if (this.fids == null || i >= this.fids.length) { +if (fid == this.zeroFontId) return; +this.fids = JU.AU.ensureLengthI(this.fids, this.ms.ac); +}this.fids[i] = fid; +this.bsFontSet.set(i); +var text = this.getLabel(i); +if (text != null) { +text.setFontFromFid(fid); +}}, "~N,~N"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +if (this.strings == null) return; +for (var i = this.strings.length; --i >= 0; ) { +var label = this.strings[i]; +if (label != null && this.ms.at.length > i && this.ms.at[i] != null && !this.ms.isAtomHidden(i)) this.ms.at[i].setClickable(this.vf); +} +}); +Clazz.overrideMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +if (!this.isPickingMode()) return null; +var iAtom = this.findNearestLabel(x, y); +if (iAtom < 0) return null; +var map = new java.util.Hashtable(); +map.put("type", "label"); +map.put("atomIndex", Integer.$valueOf(iAtom)); +this.lastPicked = iAtom; +return map; +}, "~N,~N,~N,JU.BS,~B"); +Clazz.overrideMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, dragAction, bsVisible){ +if (!this.isPickingMode()) return false; +if (prevX == -2147483648) { +var iAtom = this.findNearestLabel(x, y); +if (iAtom >= 0) { +this.pickedAtom = iAtom; +this.lastPicked = this.pickedAtom; +this.vwr.acm.setDragAtomIndex(iAtom); +this.pickedX = x; +this.pickedY = y; +this.pickedOffset = (this.offsets == null || this.pickedAtom >= this.offsets.length ? JV.JC.LABEL_DEFAULT_OFFSET : this.offsets[this.pickedAtom]); +return true; +}return false; +}if (prevX == 2147483647) this.pickedAtom = -1; +if (this.pickedAtom < 0) return false; +this.move2D(this.pickedAtom, x, y); +return true; +}, "~N,~N,~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "findNearestLabel", +function(x, y){ +if (this.labelBoxes == null) return -1; +var dmin = 3.4028235E38; +var imin = -1; +var zmin = 3.4028235E38; +var afactor = (this.vwr.antialiased ? 2 : 1); +var atoms = this.ms.at; +for (var entry, $entry = this.labelBoxes.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +if (!atoms[entry.getKey().intValue()].isVisible(this.vf | 9)) continue; +var boxXY = entry.getValue(); +var dx = (x - boxXY[0]) * afactor; +var dy = (y - boxXY[1]) * afactor; +if (dx <= 0 || dy <= 0 || dx >= boxXY[2] || dy >= boxXY[3] || boxXY[4] > zmin) continue; +zmin = boxXY[4]; +var d = Math.min(Math.abs(dx - boxXY[2] / 2), Math.abs(dy - boxXY[3] / 2)); +if (d <= dmin) { +dmin = d; +imin = entry.getKey().intValue(); +}} +return imin; +}, "~N,~N"); +Clazz.defineMethod(c$, "move2D", +function(pickedAtom, x, y){ +var xOffset = JV.JC.getXOffset(this.pickedOffset); +var yOffset = JV.JC.getYOffset(this.pickedOffset); +xOffset += x - this.pickedX; +yOffset -= y - this.pickedY; +var offset = JV.JC.getOffset(xOffset, yOffset, true); +this.setOffsets(pickedAtom, offset); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getColix2", +function(i, atom, isBg){ +var colix; +if (isBg) { +colix = (this.bgcolixes == null || i >= this.bgcolixes.length) ? 0 : this.bgcolixes[i]; +} else { +colix = (this.colixes == null || i >= this.colixes.length) ? 0 : this.colixes[i]; +colix = JU.C.getColixInherited(colix, atom.colixAtom); +if (JU.C.isColixTranslucent(colix)) colix = JU.C.getColixTranslucent3(colix, false, 0); +}return colix; +}, "~N,JM.Atom,~B"); +c$.nullToken = Clazz.newArray(-1, [null]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Measures.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Measures.js new file mode 100755 index 000000000000..dc592102fd65 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Measures.js @@ -0,0 +1,556 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.api.JmolMeasurementClient", "J.shape.AtomShape", "JU.Lst"], "J.shape.Measures", ["java.util.Hashtable", "JU.AU", "$.BS", "$.PT", "$.SB", "JM.Measurement", "$.MeasurementData", "JU.BSUtil", "$.C", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bsSelected = null; +this.strFormat = null; +this.mustBeConnected = false; +this.mustNotBeConnected = false; +this.radiusData = null; +this.intramolecular = null; +this.measureAllModels = false; +this.measurementCount = 0; +this.measurements = null; +this.mPending = null; +this.colix = 0; +this.tickInfo = null; +this.defaultTickInfo = null; +this.font3d = null; +this.htMin = null; +this.tokAction = 0; +Clazz.instantialize(this, arguments);}, J.shape, "Measures", J.shape.AtomShape, J.api.JmolMeasurementClient); +Clazz.prepareFields (c$, function(){ +this.measurements = new JU.Lst(); +}); +Clazz.defineMethod(c$, "getSelected", +function(){ +return this.bsSelected; +}); +Clazz.overrideMethod(c$, "initModelSet", +function(){ +for (var i = this.measurements.size(); --i >= 0; ) { +var m = this.measurements.get(i); +if (m != null) m.ms = this.ms; +} +}); +Clazz.overrideMethod(c$, "initShape", +function(){ +if (this.font3d == null) this.font3d = this.vwr.gdata.getFont3D(18); +}); +Clazz.overrideMethod(c$, "setSize", +function(size, bsSelected){ +this.mad = size; +}, "~N,JU.BS"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bsAtoms){ +var mt; +if ("clearModelIndex" === propertyName) { +for (var i = 0; i < this.measurementCount; i++) this.measurements.get(i).setModelIndex(0); + +return; +}if ("color" === propertyName) { +this.setColor(JU.C.getColixO(value)); +return; +}if ("font" === propertyName) { +this.font3d = value; +return; +}if ("hideAll" === propertyName) { +this.showHide((value).booleanValue()); +return; +}if ("pending" === propertyName) { +this.mPending = value; +if (this.mPending == null) return; +if (this.mPending.count > 1) this.vwr.setStatusMeasuring("measurePending", this.mPending.count, J.shape.Measures.getMessage(this.mPending, false), this.mPending.value); +return; +}var isRefresh; +if ((isRefresh = ("refresh" === propertyName)) || "refreshTrajectories" === propertyName) { +for (var i = this.measurements.size(); --i >= 0; ) if ((mt = this.measurements.get(i)) != null && (isRefresh || mt.isTrajectory)) mt.refresh(null); + +return; +}if ("select" === propertyName) { +var bs = value; +if (JU.BSUtil.cardinalityOf(bs) == 0) { +this.bsSelected = null; +} else { +this.bsSelected = new JU.BS(); +this.bsSelected.or(bs); +}return; +}if ("selectall" === propertyName) { +this.bsSelected = JU.BSUtil.newBitSet2(0, this.measurementCount); +return; +}if ("setFormats" === propertyName) { +this.setFormats(value); +return; +}this.measureAllModels = this.vwr.getBoolean(603979877); +if ("delete" === propertyName) { +this.deleteO(value); +this.setIndices(); +return; +}this.bsSelected = null; +if ("maps" === propertyName) { +var maps = value; +for (var i = 0; i < maps.length; i++) { +var len = maps[i].length; +if (len < 2 || len > 4) continue; +var v = Clazz.newIntArray (len + 1, 0); +v[0] = len; +System.arraycopy(maps[i], 0, v, 1, len); +this.toggleOn(v); +} +} else if ("measure" === propertyName) { +var md = value; +this.tickInfo = md.tickInfo; +if (md.tickInfo != null && md.tickInfo.id.equals("default")) { +this.defaultTickInfo = md.tickInfo; +return; +}if (md.isAll && md.points.size() == 2 && Clazz.instanceOf(md.points.get(0),"JU.BS")) { +var type = JM.Measurement.nmrType(this.vwr.getDistanceUnits(md.strFormat)); +switch (type) { +case 2: +md.htMin = this.vwr.getNMRCalculation().getMinDistances(md); +} +}this.tickInfo = md.tickInfo; +this.radiusData = md.radiusData; +this.htMin = md.htMin; +this.mustBeConnected = md.mustBeConnected; +this.mustNotBeConnected = md.mustNotBeConnected; +this.intramolecular = md.intramolecular; +this.strFormat = md.strFormat; +if (md.isAll) { +if (this.tickInfo != null) this.define(md, 12291); +if (md.bsSelected != null) this.bsSelected = md.bsSelected; +this.define(md, md.tokAction); +this.setIndices(); +return; +}var m = this.setSingleItem(md.points); +m.setFromMD(md, false); +switch (md.tokAction) { +case 266284: +this.doAction(md, md.thisID, 266284); +break; +case 12291: +this.defineAll(-2147483648, m, true, false, false); +this.setIndices(); +break; +case 1073742335: +this.showHideM(m, false); +break; +case 1073742334: +this.showHideM(m, true); +break; +case 1665140738: +if (md.thisID != null) this.doAction(md, md.thisID, 1665140738); +break; +case 12290: +if (md.thisID == null) { +this.deleteM(m); +} else { +this.deleteO(md.thisID); +}this.toggle(m); +break; +case 1275082241: +this.bsSelected = new JU.BS(); +this.processNextMeasure(md, m); +break; +case 268438018: +this.toggle(m); +} +return; +}if ("clear" === propertyName) { +this.clear(); +return; +}if ("atomsDeleted" === propertyName) { +for (var i = this.measurementCount; --i >= 0; ) { +out : for (var iatom = bsAtoms.nextSetBit(0); iatom >= 0; iatom = bsAtoms.nextSetBit(iatom + 1)) { +mt = this.measurements.get(i); +var indices = mt.countPlusIndices; +for (var j = 1; j <= indices[0]; j++) { +if (indices[j] == iatom) { +this.deleteI(i); +break out; +}} +} +} +return; +}if ("deleteModelAtoms" === propertyName) { +var modelIndex = ((value)[2])[0]; +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +var atomMax = firstAtomDeleted + nAtomsDeleted; +for (var i = this.measurementCount; --i >= 0; ) { +mt = this.measurements.get(i); +var indices = mt.countPlusIndices; +for (var j = 1; j <= indices[0]; j++) { +var iAtom = indices[j]; +if (iAtom >= firstAtomDeleted) { +if (iAtom < atomMax) { +this.deleteI(i); +break; +}indices[j] -= nAtomsDeleted; +} else if (iAtom < 0) { +var pt = mt.getAtom(j); +if (pt.mi > modelIndex) { +pt.mi--; +} else if (pt.mi == modelIndex) { +this.deleteI(i); +break; +}}} +} +return; +}if ("reformatDistances" === propertyName) { +this.reformatDistances(value == null); +return; +}if ("hide" === propertyName) { +if ((typeof(value)=='string')) { +this.doAction(null, value, 12294); +} else { +this.showHideM( new JM.Measurement().setPoints(this.ms, value, null, null), true); +}return; +}if ("refresh" === propertyName) { +this.doAction(value, null, 266284); +return; +}if ("show" === propertyName) { +if ((typeof(value)=='string')) { +this.doAction(null, value, 134222350); +} else { +this.showHideM( new JM.Measurement().setPoints(this.ms, value, null, null), false); +}return; +}if ("toggle" === propertyName) { +if ((typeof(value)=='string')) { +this.doAction(null, value, 268438018); +} else { +this.toggle( new JM.Measurement().setPoints(this.ms, value, null, null)); +}return; +}if ("toggleOn" === propertyName) { +if ((typeof(value)=='string')) { +this.doAction(null, value, 1073742335); +} else { +this.toggleOn(value); +}return; +}}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setSingleItem", +function(vector){ +var points = new Array(4); +var indices = Clazz.newIntArray (5, 0); +indices[0] = vector.size(); +for (var i = vector.size(); --i >= 0; ) { +var value = vector.get(i); +if (Clazz.instanceOf(value,"JU.BS")) { +var atomIndex = (value).nextSetBit(0); +if (atomIndex < 0) return null; +indices[i + 1] = atomIndex; +} else { +points[i] = value; +indices[i + 1] = -2 - i; +}} +return new JM.Measurement().setPoints(this.ms, indices, points, this.tickInfo == null ? this.defaultTickInfo : this.tickInfo); +}, "JU.Lst"); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +if ("pending".equals(property)) return this.mPending; +if ("count".equals(property)) return Integer.$valueOf(this.measurementCount); +if ("countPlusIndices".equals(property)) return (index < this.measurementCount ? this.measurements.get(index).countPlusIndices : null); +if ("stringValue".equals(property)) return (index < this.measurementCount ? this.measurements.get(index).getString() : null); +if ("pointInfo".equals(property)) return this.measurements.get(Clazz.doubleToInt(index / 10)).getLabel(index % 10, false, false); +if ("info".equals(property)) return this.getAllInfo(); +if ("infostring".equals(property)) return this.getAllInfoAsString(); +if ("selected".equals(property)) return (this.bsSelected == null ? new JU.BS() : JU.BSUtil.copy(this.bsSelected)); +return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "clear", +function(){ +if (this.measurementCount == 0) return; +this.measurementCount = 0; +this.measurements.clear(); +this.mPending = null; +this.vwr.setStatusMeasuring("measureDeleted", -1, "all", 0); +}); +Clazz.defineMethod(c$, "setColor", +function(colix){ +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +if (this.bsSelected == null) this.colix = colix; +var mt; +for (var i = this.measurements.size(); --i >= 0; ) if ((mt = this.measurements.get(i)) != null && (this.bsSelected != null && this.bsSelected.get(i) || this.bsSelected == null && (colix == 0 || mt.colix == 0))) { +mt.colix = colix; +this.bsColixSet.set(i); +} +}, "~N"); +Clazz.defineMethod(c$, "setFormats", +function(format){ +if (format != null && format.length == 0) format = null; +var isDefault = "default".equals(format); +if (isDefault || JM.Measurement.isUnits(format)) { +if (isDefault) format = null; +for (var i = this.measurements.size(); --i >= 0; ) if (this.bsSelected == null || this.bsSelected.get(i)) { +var m = this.measurements.get(i); +m.units = format; +m.formatMeasurement(null); +} +} else { +for (var i = this.measurements.size(); --i >= 0; ) if (this.bsSelected == null || this.bsSelected.get(i)) this.measurements.get(i).formatMeasurementAs(format, null, false); + +}}, "~S"); +Clazz.defineMethod(c$, "showHide", +function(isHide){ +for (var i = this.measurements.size(); --i >= 0; ) if (this.bsSelected == null || this.bsSelected.get(i)) this.measurements.get(i).isHidden = isHide; + +}, "~B"); +Clazz.defineMethod(c$, "showHideM", +function(m, isHide){ +var i = this.find(m); +if (i >= 0) this.measurements.get(i).isHidden = isHide; +}, "JM.Measurement,~B"); +Clazz.defineMethod(c$, "toggle", +function(m){ +this.radiusData = null; +this.htMin = null; +var i = this.find(m); +var mt; +if (i >= 0 && !(mt = this.measurements.get(i)).isHidden) this.defineAll(i, mt, true, false, false); + else this.defineAll(-1, m, false, true, false); +this.setIndices(); +}, "JM.Measurement"); +Clazz.defineMethod(c$, "toggleOn", +function(indices){ +this.radiusData = null; +this.htMin = null; +this.bsSelected = new JU.BS(); +var m = new JM.Measurement().setPoints(this.ms, indices, null, this.defaultTickInfo); +this.defineAll(-2147483648, m, false, true, true); +var i = this.find(m); +if (i >= 0) this.bsSelected.set(i); +this.setIndices(); +this.reformatDistances(false); +}, "~A"); +Clazz.defineMethod(c$, "deleteM", +function(m){ +this.radiusData = null; +this.htMin = null; +var i = this.find(m); +if (i >= 0) this.defineAll(i, this.measurements.get(i), true, false, false); +this.setIndices(); +}, "JM.Measurement"); +Clazz.defineMethod(c$, "deleteO", +function(value){ +if (Clazz.instanceOf(value, Integer)) { +this.deleteI((value).intValue()); +} else if ((typeof(value)=='string')) { +this.doAction(null, value, 12291); +} else if (JU.AU.isAI(value)) { +this.defineAll(-2147483648, new JM.Measurement().setPoints(this.ms, value, null, null), true, false, false); +}}, "~O"); +Clazz.defineMethod(c$, "defineAll", +function(iPt, m, isDelete, isShow, doSelect){ +if (!this.measureAllModels) { +if (isDelete) { +if (iPt == -2147483648) iPt = this.find(m); +if (iPt >= 0) this.deleteI(iPt); +return; +}this.defineMeasurement(iPt, m, doSelect); +return; +}if (isShow) { +this.defineAll(iPt, m, true, false, false); +if (isDelete) return; +}var points = new JU.Lst(); +var nPoints = m.count; +var atoms = this.ms.at; +for (var i = 1; i <= nPoints; i++) { +var atomIndex = m.getAtomIndex(i); +points.addLast(atomIndex >= 0 ? this.ms.getAtoms(1094715393, Integer.$valueOf(atoms[atomIndex].getAtomNumber())) : m.getAtom(i)); +} +this.define(( new JM.MeasurementData().init(null, this.vwr, points)).set(this.tokAction, this.htMin, this.radiusData, m.property, this.strFormat, null, this.tickInfo, this.mustBeConnected, this.mustNotBeConnected, this.intramolecular, true, 0, 0, null, NaN, null), (isDelete ? 12291 : 12290)); +}, "~N,JM.Measurement,~B,~B,~B"); +Clazz.defineMethod(c$, "find", +function(m){ +return (m.thisID == null ? JM.Measurement.find(this.measurements, m) : -1); +}, "JM.Measurement"); +Clazz.defineMethod(c$, "setIndices", +function(){ +for (var i = 0; i < this.measurementCount; i++) this.measurements.get(i).index = i; + +}); +Clazz.defineMethod(c$, "define", +function(md, tokAction){ +this.tokAction = tokAction; +if (md.bsSelected != null) { +for (var i = this.measurementCount; --i >= 0; ) if (md.bsSelected.get(i)) this.processNextMeasure(md, this.measurements.get(i)); + +return; +}if (tokAction == 1275082241) this.bsSelected = new JU.BS(); +md.define(this, this.ms); +}, "JM.MeasurementData,~N"); +Clazz.overrideMethod(c$, "processNextMeasure", +function(md, m){ +var iThis = this.find(m); +if (md.tokAction == 1275082241) { +if (iThis < 0 || !this.isInRange(NaN, m)) return; +this.bsSelected.set(iThis); +}if (iThis >= 0) { +if (this.tokAction == 12291) { +if (this.isInRange(NaN, m)) this.deleteI(iThis); +} else if (md.tokAction == 1275082241) { +var mThis = this.measurements.get(iThis); +mThis.setFromMD(md, true); +if (this.strFormat != null && md.strFormat == null) { +mThis.formatMeasurementAs(this.strFormat, md.units, true); +} else if (md.units != null) { +mThis.strFormat = null; +mThis.units = (md.units.equals("default") ? null : md.units); +mThis.formatMeasurement(null); +}} else { +this.measurements.get(iThis).isHidden = (this.tokAction == 1073742334); +}} else if (this.tokAction == 12290 || this.tokAction == 268438018) { +m.tickInfo = (this.tickInfo == null ? this.defaultTickInfo : this.tickInfo); +this.defineMeasurement(-1, m, true); +}}, "JM.MeasurementData,JM.Measurement"); +Clazz.defineMethod(c$, "isInRange", +function(val, m){ +return !(this.htMin != null && !m.isMin(this.htMin) || this.radiusData != null && !m.isInRange(this.radiusData, val == val ? val : m.getMeasurement(null))); +}, "~N,JM.Measurement"); +Clazz.defineMethod(c$, "defineMeasurement", +function(i, m, doSelect){ +var value = m.getMeasurement(null); +if (!this.isInRange(value, m)) return; +if (i == -2147483648) i = this.find(m); +if (i >= 0) { +this.measurements.get(i).isHidden = false; +if (doSelect) this.bsSelected.set(i); +return; +}var measureNew = new JM.Measurement().setM(this.ms, m, value, (m.colix == 0 ? this.colix : m.colix), this.strFormat, this.measurementCount); +if (!measureNew.$isValid) return; +this.measurements.addLast(measureNew); +this.vwr.setStatusMeasuring("measureCompleted", this.measurementCount++, J.shape.Measures.getMessage(measureNew, false), measureNew.value); +}, "~N,JM.Measurement,~B"); +c$.getMessage = Clazz.defineMethod(c$, "getMessage", +function(m, asBitSet){ +var sb = new JU.SB(); +sb.append("["); +for (var i = 1; i <= m.count; i++) { +if (i > 1) sb.append(", "); +sb.append(m.getLabel(i, asBitSet, false)); +} +sb.append(", "); +sb.append(m.getString()); +sb.append("]"); +return sb.toString(); +}, "JM.Measurement,~B"); +Clazz.defineMethod(c$, "deleteI", +function(i){ +if (i >= this.measurements.size() || i < 0) return; +var msg = J.shape.Measures.getMessage(this.measurements.get(i), true); +this.measurements.removeItemAt(i); +this.measurementCount--; +this.vwr.setStatusMeasuring("measureDeleted", i, msg, 0); +this.bsSelected = null; +}, "~N"); +Clazz.defineMethod(c$, "doAction", +function(md, id, tok){ +id = id.toUpperCase().$replace('?', '*'); +var isWild = JU.PT.isWild(id); +for (var i = this.measurements.size(); --i >= 0; ) { +var m = this.measurements.get(i); +if (m.thisID != null && (m.thisID.equalsIgnoreCase(id) || isWild && JU.PT.isMatch(m.thisID.toUpperCase(), id, true, true))) switch (tok) { +case 266284: +m.setFromMD(md, true); +break; +case 1665140738: +m.mad = md.mad; +break; +case 12291: +var msg = J.shape.Measures.getMessage(this.measurements.get(i), true); +this.measurements.removeItemAt(i); +this.measurementCount--; +this.vwr.setStatusMeasuring("measureDeleted", i, msg, 0); +break; +case 134222350: +m.isHidden = false; +break; +case 12294: +m.isHidden = true; +break; +case 268438018: +m.isHidden = !m.isHidden; +break; +case 1073742335: +m.isHidden = false; +break; +} +} +}, "JM.MeasurementData,~S,~N"); +Clazz.defineMethod(c$, "reformatDistances", +function(isDefault){ +for (var i = this.measurementCount; --i >= 0; ) this.measurements.get(i).reformatDistanceIfSelected(isDefault); + +}, "~B"); +Clazz.defineMethod(c$, "getAllInfo", +function(){ +var info = new JU.Lst(); +for (var i = 0; i < this.measurementCount; i++) { +info.addLast(this.getInfo(i)); +} +return info; +}); +Clazz.defineMethod(c$, "getAllInfoAsString", +function(){ +var info = "Measurement Information"; +for (var i = 0; i < this.measurementCount; i++) { +info += "\n" + this.getInfoAsString(i); +} +return info; +}); +Clazz.defineMethod(c$, "getInfo", +function(index){ +var m = this.measurements.get(index); +var count = m.count; +var info = new java.util.Hashtable(); +info.put("index", Integer.$valueOf(index)); +info.put("type", (count == 2 ? "distance" : count == 3 ? "angle" : "dihedral")); +info.put("strMeasurement", m.getString()); +info.put("count", Integer.$valueOf(count)); +info.put("id", "" + m.thisID); +info.put("value", Float.$valueOf(m.value)); +info.put("hidden", Boolean.$valueOf(m.isHidden)); +info.put("visible", Boolean.$valueOf(m.isVisible)); +var tickInfo = m.tickInfo; +if (tickInfo != null) { +info.put("ticks", tickInfo.ticks); +if (tickInfo.scale != null) info.put("tickScale", tickInfo.scale); +if (tickInfo.tickLabelFormats != null) info.put("tickLabelFormats", tickInfo.tickLabelFormats); +if (!Float.isNaN(tickInfo.first)) info.put("tickStart", Float.$valueOf(tickInfo.first)); +}var atomsInfo = new JU.Lst(); +var atoms = this.ms.at; +for (var i = 1; i <= count; i++) { +var atomInfo = new java.util.Hashtable(); +var atomIndex = m.getAtomIndex(i); +atomInfo.put("_ipt", Integer.$valueOf(atomIndex)); +atomInfo.put("coord", JU.Escape.eP(m.getAtom(i))); +atomInfo.put("atomno", Integer.$valueOf(atomIndex < 0 ? -1 : atoms[atomIndex].getAtomNumber())); +atomInfo.put("info", (atomIndex < 0 ? "" : atoms[atomIndex].getInfo())); +atomsInfo.addLast(atomInfo); +} +info.put("atoms", atomsInfo); +return info; +}, "~N"); +Clazz.defineMethod(c$, "getInfoAsString", +function(index){ +return this.measurements.get(index).getInfoAsString(null); +}, "~N"); +Clazz.defineMethod(c$, "setVisibilityInfo", +function(){ +var bsModels = this.vwr.getVisibleFramesBitSet(); +out : for (var i = this.measurementCount; --i >= 0; ) { +var m = this.measurements.get(i); +m.isVisible = false; +if (this.mad == 0 || m.isHidden) continue; +for (var iAtom = m.count; iAtom > 0; iAtom--) { +var atomIndex = m.getAtomIndex(iAtom); +if (atomIndex >= 0) { +if (!this.ms.at[atomIndex].isClickable()) continue out; +} else { +var modelIndex = m.getAtom(iAtom).mi; +if (modelIndex >= 0 && !bsModels.get(modelIndex)) continue out; +}} +m.isVisible = true; +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Mesh.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Mesh.js new file mode 100755 index 000000000000..d0cf1b7916e1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Mesh.js @@ -0,0 +1,431 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["JU.MeshSurface"], "J.shape.Mesh", ["java.util.Hashtable", "JU.AU", "$.BS", "$.M3", "$.M4", "$.Measure", "$.P3", "$.PT", "$.SB", "$.V3", "JS.T", "JU.BSUtil", "$.C", "$.Escape", "$.Normix"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.title = null; +this.hoverLabel = null; +this.meshColix = 0; +this.normixes = null; +this.lineData = null; +this.thisID = null; +this.isValid = true; +this.scriptCommand = null; +this.colorCommand = null; +this.lattice = null; +this.symops = null; +this.symopNormixes = null; +this.visible = true; +this.lighting = 1073741958; +this.colorType = 0; +this.reverseColor = false; +this.haveXyPoints = false; +this.diameter = 0; +this.width = 0; +this.ptCenter = null; +this.linkedMesh = null; +this.vertexColorMap = null; +this.vAB = null; +this.vTemp = null; +this.color = 0; +this.useColix = true; +this.unitCell = null; +this.scale3d = 0; +this.index = 0; +this.atomIndex = -1; +this.modelIndex = -1; +this.visibilityFlags = 0; +this.insideOut = false; +this.checkByteCount = 0; +this.normalsInverted = false; +this.showContourLines = false; +this.showPoints = false; +this.drawTriangles = false; +this.fillTriangles = true; +this.showTriangles = false; +this.frontOnly = false; +this.isShell = false; +this.isTwoSided = true; +this.havePlanarContours = false; +this.bsTemp = null; +this.colorDensity = false; +this.cappingObject = null; +this.slabbingObject = null; +this.volumeRenderPointSize = 0.15; +this.connectedAtoms = null; +this.isModelConnected = false; +this.recalcAltVertices = false; +this.symopColixes = null; +Clazz.instantialize(this, arguments);}, J.shape, "Mesh", JU.MeshSurface); +Clazz.defineMethod(c$, "setVisibilityFlags", +function(n){ +this.visibilityFlags = n; +}, "~N"); +Clazz.defineMethod(c$, "mesh1", +function(vwr, thisID, colix, index){ +if ("+PREVIOUS_MESH+".equals(thisID)) thisID = null; +this.vwr = vwr; +this.thisID = thisID; +this.colix = colix; +this.index = index; +this.ptCenter = new JU.P3(); +this.vAB = new JU.V3(); +this.vTemp = new JU.V3(); +return this; +}, "JV.Viewer,~S,~N,~N"); +Clazz.defineMethod(c$, "clear", +function(meshType){ +this.clearMesh(meshType); +}, "~S"); +Clazz.defineMethod(c$, "clearMesh", +function(meshType){ +this.altVertices = null; +this.bsDisplay = null; +this.bsSlabDisplay = null; +this.bsSlabGhost = null; +this.symops = null; +this.symopColixes = null; +this.cappingObject = null; +this.colix = 23; +this.colorDensity = false; +this.connectedAtoms = null; +this.diameter = 0; +this.drawTriangles = false; +this.fillTriangles = true; +this.frontOnly = false; +this.isShell = false; +this.havePlanarContours = false; +this.haveXyPoints = false; +this.isModelConnected = false; +this.isDrawPolygon = false; +this.isTwoSided = false; +this.lattice = null; +this.mat4 = null; +this.normixes = null; +this.pis = null; +this.scale3d = 0; +this.showContourLines = false; +this.showPoints = false; +this.showTriangles = false; +this.slabbingObject = null; +this.slabOptions = null; +this.oabc = null; +this.symopNormixes = null; +this.title = null; +this.unitCell = null; +this.useColix = true; +this.vertexCount0 = this.polygonCount0 = this.vc = this.pc = 0; +this.vs = null; +this.vertexSource = null; +this.volumeRenderPointSize = 0.15; +this.meshType = meshType; +}, "~S"); +Clazz.defineMethod(c$, "initialize", +function(lighting, vertices, plane){ +if (vertices == null) vertices = this.vs; +var normals = this.getNormals(vertices, plane); +this.setNormixes(normals); +this.lighting = 1073741958; +if (this.insideOut) this.invertNormixes(); +if (this.isShell && !this.isTwoSided) this.invertNormixes(); +this.setLighting(lighting); +}, "~N,~A,JU.P4"); +Clazz.defineMethod(c$, "setNormixes", +function(normals){ +if (normals == null) return (this.normixes = null); +this.normixes = Clazz.newShortArray (this.normixCount, 0); +if (this.bsTemp == null) this.bsTemp = JU.Normix.newVertexBitSet(); +if (this.haveXyPoints) for (var i = this.normixCount; --i >= 0; ) this.normixes[i] = 9999; + + else for (var i = this.normixCount; --i >= 0; ) this.normixes[i] = JU.Normix.getNormixV(normals[i], this.bsTemp); + +return this.normixes; +}, "~A"); +Clazz.defineMethod(c$, "getNormals", +function(vertices, plane){ +this.normixCount = (this.isDrawPolygon ? this.pc : this.vc); +if (this.normixCount < 0) return null; +var normals = new Array(this.normixCount); +for (var i = this.normixCount; --i >= 0; ) normals[i] = new JU.V3(); + +if (plane == null) { +this.sumVertexNormals(vertices, normals); +} else { +var normal = JU.V3.new3(plane.x, plane.y, plane.z); +for (var i = this.normixCount; --i >= 0; ) normals[i] = normal; + +}if (!this.isDrawPolygon) for (var i = this.normixCount; --i >= 0; ) { +normals[i].normalize(); +} +return normals; +}, "~A,JU.P4"); +Clazz.defineMethod(c$, "setLighting", +function(lighting){ +this.isTwoSided = (lighting == 1073741964); +if (lighting == this.lighting) return; +this.flipLighting(this.lighting); +this.flipLighting(this.lighting = lighting); +}, "~N"); +Clazz.defineMethod(c$, "flipLighting", +function(lighting){ +if (lighting == 1073741964) for (var i = this.normixCount; --i >= 0; ) this.normixes[i] = ~this.normixes[i]; + + else if ((lighting == 1073741958) == this.insideOut) this.invertNormixes(); +}, "~N"); +Clazz.defineMethod(c$, "invertNormixes", +function(){ +JU.Normix.setInverseNormixes(); +this.normalsInverted = !this.normalsInverted; +for (var i = this.normixCount; --i >= 0; ) this.normixes[i] = JU.Normix.getInverseNormix(this.normixes[i]); + +}); +Clazz.defineMethod(c$, "setTranslucent", +function(isTranslucent, iLevel){ +this.colix = JU.C.getColixTranslucent3(this.colix, isTranslucent, iLevel); +}, "~B,~N"); +Clazz.defineMethod(c$, "sumVertexNormals", +function(vertices, normals){ +J.shape.Mesh.sumVertexNormals2(this, vertices, normals); +}, "~A,~A"); +c$.sumVertexNormals2 = Clazz.defineMethod(c$, "sumVertexNormals2", +function(m, vertices, normals){ +var adjustment = m.checkByteCount; +var min = m.getMinDistance2ForVertexGrouping(); +for (var i = m.pc; --i >= 0; ) { +try { +var face = m.setABC(i); +if (face == null) continue; +var vA = vertices[face[0]]; +var vB = vertices[face[1]]; +var vC = vertices[face[2]]; +if (vA.distanceSquared(vB) < min || vB.distanceSquared(vC) < min || vA.distanceSquared(vC) < min) continue; +JU.Measure.calcNormalizedNormal(vA, vB, vC, m.vTemp, m.vAB); +if (m.isDrawPolygon) { +normals[i].setT(m.vTemp); +} else { +var l = m.vTemp.length(); +if (l > 0.9 && l < 1.1) for (var j = face.length - adjustment; --j >= 0; ) { +var k = face[j]; +normals[k].add(m.vTemp); +} +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e); +} else { +throw e; +} +} +} +}, "J.shape.Mesh,~A,~A"); +Clazz.defineMethod(c$, "getMinDistance2ForVertexGrouping", +function(){ +return 1e-8; +}); +Clazz.defineMethod(c$, "getState", +function(type){ +var s = new JU.SB(); +if (this.isValid) { +s.append(type); +if (!type.equals("mo") && !type.equals("nbo")) s.append(" ID ").append(JU.PT.esc(this.thisID)); +if (this.lattice != null) s.append(" lattice ").append(JU.Escape.eP(this.lattice)); +if (this.meshColix != 0) s.append(" color mesh ").append(JU.C.getHexCode(this.meshColix)); +s.append(this.getRendering()); +if (!this.visible) s.append(" hidden"); +if (this.bsDisplay != null) { +s.append(";\n ").append(type); +if (!type.equals("mo") && !type.equals("nbo")) s.append(" ID ").append(JU.PT.esc(this.thisID)); +s.append(" display " + JU.Escape.eBS(this.bsDisplay)); +}}return s.toString(); +}, "~S"); +Clazz.defineMethod(c$, "getRendering", +function(){ +var s = new JU.SB(); +s.append(this.fillTriangles ? " fill" : " noFill"); +s.append(this.drawTriangles ? " mesh" : " noMesh"); +s.append(this.showPoints ? " dots" : " noDots"); +s.append(this.frontOnly ? " frontOnly" : " notFrontOnly"); +if (this.showContourLines) s.append(" contourlines"); +if (this.showTriangles) s.append(" triangles"); +s.append(" ").append(JS.T.nameOf(this.lighting)); +if (this.isShell && !this.isTwoSided) s.append(" backshell"); +return s.toString(); +}); +Clazz.defineMethod(c$, "getOffsetVertices", +function(thePlane){ +if (this.altVertices != null && !this.recalcAltVertices) return this.altVertices; +this.altVertices = new Array(this.vc); +for (var i = 0; i < this.vc; i++) this.altVertices[i] = JU.P3.newP(this.vs[i]); + +var normal = null; +var val = 0; +if (this.scale3d != 0 && this.vvs != null && thePlane != null) { +normal = JU.V3.new3(thePlane.x, thePlane.y, thePlane.z); +normal.normalize(); +normal.scale(this.scale3d); +if (this.mat4 != null) { +var m3 = new JU.M3(); +this.mat4.getRotationScale(m3); +m3.rotate(normal); +}}for (var i = 0; i < this.vc; i++) { +if (this.vvs != null && Float.isNaN(val = this.vvs[i])) continue; +var pt = this.altVertices[i]; +if (this.mat4 != null) this.mat4.rotTrans(pt); +if (normal != null && val != 0) pt.scaleAdd2(val, normal, pt); +} +this.initialize(this.lighting, this.altVertices, null); +this.recalcAltVertices = false; +return this.altVertices; +}, "JU.P4"); +Clazz.defineMethod(c$, "setShowWithin", +function(showWithinPoints, showWithinDistance2, isWithinNot){ +if (showWithinPoints.size() == 0) { +this.bsDisplay = (isWithinNot ? JU.BSUtil.newBitSet2(0, this.vc) : null); +return; +}this.bsDisplay = new JU.BS(); +for (var i = 0; i < this.vc; i++) if (J.shape.Mesh.checkWithin(this.vs[i], showWithinPoints, showWithinDistance2, isWithinNot)) this.bsDisplay.set(i); + +}, "JU.Lst,~N,~B"); +c$.checkWithin = Clazz.defineMethod(c$, "checkWithin", +function(pti, withinPoints, withinDistance2, isWithinNot){ +if (withinPoints.size() != 0) for (var i = withinPoints.size(); --i >= 0; ) if (pti.distanceSquared(withinPoints.get(i)) <= withinDistance2) return !isWithinNot; + +return isWithinNot; +}, "JU.T3,JU.Lst,~N,~B"); +Clazz.defineMethod(c$, "getVertexIndexFromNumber", +function(vertexIndex){ +if (--vertexIndex < 0) vertexIndex = this.vc + vertexIndex; +return (this.vc <= vertexIndex ? this.vc - 1 : vertexIndex < 0 ? 0 : vertexIndex); +}, "~N"); +Clazz.defineMethod(c$, "getVisibleVertexBitSet", +function(){ +return this.getVisibleVBS(); +}); +Clazz.defineMethod(c$, "getVisibleVBS", +function(){ +var bs = new JU.BS(); +if (this.pc == 0 && this.bsSlabDisplay != null) JU.BSUtil.copy2(this.bsSlabDisplay, bs); + else for (var i = this.pc; --i >= 0; ) if (this.bsSlabDisplay == null || this.bsSlabDisplay.get(i)) { +var vertexIndexes = this.pis[i]; +if (vertexIndexes == null) continue; +bs.set(vertexIndexes[0]); +bs.set(vertexIndexes[1]); +bs.set(vertexIndexes[2]); +} +return bs; +}); +Clazz.defineMethod(c$, "setTokenProperty", +function(tokProp, bProp){ +switch (tokProp) { +case 1073742058: +case 1073741960: +this.frontOnly = (tokProp == 1073741960 ? bProp : !bProp); +return; +case 1073742057: +case 1073741862: +if (!this.isTwoSided && this.isShell != (tokProp == 1073741862 ? bProp : !bProp)) { +this.isShell = !this.isShell; +this.invertNormixes(); +}return; +case 1073741958: +case 1073741861: +case 1073741964: +this.setLighting(tokProp); +return; +case 1073742042: +case 1112150019: +this.showPoints = (tokProp == 1112150019 ? bProp : !bProp); +return; +case 1073742052: +case 1073742018: +this.drawTriangles = (tokProp == 1073742018 ? bProp : !bProp); +return; +case 1073742046: +case 1073741938: +this.fillTriangles = (tokProp == 1073741938 ? bProp : !bProp); +return; +case 1073742060: +case 1073742182: +this.showTriangles = (tokProp == 1073742182 ? bProp : !bProp); +return; +case 1073742039: +case 1073741898: +this.showContourLines = (tokProp == 1073741898 ? bProp : !bProp); +return; +} +}, "~N,~B"); +Clazz.defineMethod(c$, "getInfo", +function(isAll){ +var info = new java.util.Hashtable(); +info.put("id", this.thisID); +info.put("vertexCount", Integer.$valueOf(this.vc)); +info.put("haveQuads", Boolean.$valueOf(this.haveQuads)); +info.put("haveValues", Boolean.$valueOf(this.vvs != null)); +var np = this.pc; +if (isAll) { +if (this.vc > 0) { +info.put("vertices", JU.AU.arrayCopyPt(this.vs, this.vc)); +if (this.bsSlabDisplay != null) info.put("bsVertices", this.getVisibleVBS()); +}if (this.vvs != null) { +info.put("vertexValues", JU.AU.arrayCopyF(this.vvs, this.vc)); +}if (np > 0) { +var ii = J.shape.Mesh.nonNull(this.pis, np); +info.put("polygons", ii); +np = ii.length; +if (this.bsSlabDisplay != null) { +var bs = (ii.length == this.pc ? JU.BS.copy(this.bsSlabDisplay) : J.shape.Mesh.nonNullBS(this.bsSlabDisplay, this.pis, this.pc)); +info.put("bsPolygons", bs); +np = bs.cardinality(); +}}}info.put("polygonCount", Integer.$valueOf(np)); +return info; +}, "~B"); +c$.nonNullBS = Clazz.defineMethod(c$, "nonNullBS", +function(bsSlabDisplay, pis, pc){ +var bs = new JU.BS(); +for (var pt = 0, i = 0; i < pc; i++) { +if (pis[i] != null) { +if (bsSlabDisplay.get(i)) bs.set(pt); +pt++; +}} +return bs; +}, "JU.BS,~A,~N"); +c$.nonNull = Clazz.defineMethod(c$, "nonNull", +function(pis, pc){ +var n = 0; +for (var i = pc; --i >= 0; ) if (pis[i] != null) { +n++; +} +var ii = Clazz.newIntArray (n, 0); +if (n > 0) for (var pt = 0, i = 0; i < pc; i++) if (pis[i] != null) ii[pt++] = pis[i]; + +return ii; +}, "~A,~N"); +Clazz.defineMethod(c$, "getBoundingBox", +function(){ +return null; +}); +Clazz.defineMethod(c$, "getUnitCell", +function(){ +return null; +}); +Clazz.defineMethod(c$, "rotateTranslate", +function(q, offset, isAbsolute){ +if (q == null && offset == null) { +this.mat4 = null; +return; +}var m3 = new JU.M3(); +var v = new JU.V3(); +if (this.mat4 == null) this.mat4 = JU.M4.newM4(null); +this.mat4.getRotationScale(m3); +this.mat4.getTranslation(v); +if (q == null) { +if (isAbsolute) v.setT(offset); + else v.add(offset); +} else { +m3.mul(q.getMatrix()); +}this.mat4 = JU.M4.newMV(m3, v); +this.recalcAltVertices = true; +}, "JU.Quat,JU.T3,~B"); +Clazz.defineMethod(c$, "getNormalsTemp", +function(){ +return (this.normalsTemp == null ? (this.normalsTemp = this.getNormals(this.vs, null)) : this.normalsTemp); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/MeshCollection.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/MeshCollection.js new file mode 100755 index 000000000000..ef1824dcf8fb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/MeshCollection.js @@ -0,0 +1,479 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.Shape"], "J.shape.MeshCollection", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.P3", "$.PT", "$.SB", "JS.T", "J.shape.Mesh", "JU.C", "$.Escape", "$.Logger", "JV.StateManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.jvxlData = null; +this.meshCount = 0; +this.meshes = null; +this.currentMesh = null; +this.isFixed = false; +this.nUnnamed = 0; +this.colix = 0; +this.explicitID = false; +this.previousMeshID = null; +this.linkedMesh = null; +this.modelIndex = 0; +this.displayWithinDistance2 = 0; +this.isDisplayWithinNot = false; +this.displayWithinPoints = null; +this.bsDisplay = null; +this.title = null; +this.pickedMesh = null; +this.pickedModel = 0; +this.pickedVertex = 0; +this.pickedPt = null; +this.connections = null; +this.htObjects = null; +this.color = 0; +Clazz.instantialize(this, arguments);}, J.shape, "MeshCollection", J.shape.Shape); +Clazz.prepareFields (c$, function(){ +this.meshes = new Array(4); +}); +Clazz.defineMethod(c$, "setMesh", +function(thisID){ +this.linkedMesh = null; +if (thisID == null || JU.PT.isWild(thisID)) { +if (thisID != null) this.previousMeshID = thisID; +this.currentMesh = null; +return null; +}this.currentMesh = this.getMesh(thisID); +if (this.currentMesh == null) { +this.allocMesh(thisID, null); +} else if (thisID.equals("+PREVIOUS_MESH+")) { +this.linkedMesh = this.currentMesh.linkedMesh; +}if (this.currentMesh.thisID == null) { +if (this.nUnnamed == 0 || this.getMesh(this.myType + this.nUnnamed) != null) this.nUnnamed++; +this.currentMesh.thisID = this.myType + this.nUnnamed; +if (this.htObjects != null) this.htObjects.put(this.currentMesh.thisID.toUpperCase(), this.currentMesh); +}this.previousMeshID = this.currentMesh.thisID; +return this.currentMesh; +}, "~S"); +Clazz.defineMethod(c$, "allocMesh", +function(thisID, m){ +var index = this.meshCount++; +this.meshes = JU.AU.ensureLength(this.meshes, this.meshCount * 2); +this.currentMesh = this.meshes[index] = (m == null ? new J.shape.Mesh().mesh1(this.vwr, thisID, this.colix, index) : m); +this.currentMesh.color = this.color; +this.currentMesh.index = index; +if (thisID != null && this.htObjects != null) this.htObjects.put(thisID.toUpperCase(), this.currentMesh); +this.previousMeshID = null; +}, "~S,J.shape.Mesh"); +Clazz.defineMethod(c$, "merge", +function(mc){ +for (var i = 0; i < mc.meshCount; i++) { +if (mc.meshes[i] != null) { +var m = mc.meshes[i]; +var m0 = this.getMesh(m.thisID); +if (m0 == null) { +this.allocMesh(m.thisID, m); +} else { +this.meshes[m0.index] = m; +m.index = m0.index; +}}} +this.previousMeshID = null; +this.currentMesh = null; +}, "J.shape.MeshCollection"); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.setMeshColor(); +}); +Clazz.defineMethod(c$, "setMeshColor", +function(){ +this.colix = 5; +this.color = 0xFFFFFFFF; +}); +Clazz.defineMethod(c$, "setPropMC", +function(propertyName, value, bs){ +if ("init" === propertyName) { +this.title = null; +return; +}if ("link" === propertyName) { +if (this.meshCount >= 2 && this.currentMesh != null) this.currentMesh.linkedMesh = this.meshes[this.meshCount - 2]; +return; +}if ("lattice" === propertyName) { +if (this.currentMesh != null) this.currentMesh.lattice = value; +return; +}if ("symops" === propertyName) { +if (this.currentMesh != null) { +this.currentMesh.symops = value; +if (this.currentMesh.symops == null) return; +var n = this.currentMesh.symops.length; +this.currentMesh.symopColixes = Clazz.newShortArray (n, 0); +for (var i = n; --i >= 0; ) this.currentMesh.symopColixes[i] = JU.C.getColix(this.vwr.cm.ce.getArgbMinMax(i + 1, 1, n)); + +}return; +}if ("variables" === propertyName) { +if (this.currentMesh != null && this.currentMesh.scriptCommand != null && !this.currentMesh.scriptCommand.startsWith("{")) this.currentMesh.scriptCommand = "{\n" + JV.StateManager.getVariableList(value, 0, false, false) + "\n" + this.currentMesh.scriptCommand; +return; +}if ("thisID" === propertyName) { +var id = value; +this.setMesh(id); +this.checkExplicit(id); +return; +}if ("title" === propertyName) { +this.setTitle(value); +return; +}if ("delete" === propertyName) { +this.deleteMesh(); +return; +}if ("reset" === propertyName) { +var thisID = value; +if (this.setMesh(thisID) == null) return; +this.setMesh(thisID); +return; +}if ("color" === propertyName) { +if (value == null) return; +this.colix = JU.C.getColixO(value); +this.color = (value).intValue(); +if (this.currentMesh != null) { +this.currentMesh.color = this.color; +}this.setTokenProperty(1765808134, false, false); +return; +}if ("translucency" === propertyName) { +this.setTokenProperty(603979967, ((value).equals("translucent")), false); +return; +}if ("hidden" === propertyName) { +value = Integer.$valueOf((value).booleanValue() ? 1073742334 : 1073742335); +propertyName = "token"; +}if ("token" === propertyName) { +var tok = (value).intValue(); +var tok2 = 0; +var test = true; +switch (tok) { +case 1610625028: +case 1073742335: +case 1073742072: +case 1073741958: +case 1073741861: +case 1073741964: +case 1112150019: +case 1073741938: +case 1073741862: +case 1073742182: +case 1073741960: +break; +case 1073742334: +test = false; +tok = 1073742335; +break; +case 1073741898: +tok2 = 1073742018; +break; +case 1073742039: +test = false; +tok = 1073741898; +tok2 = 1073742018; +break; +case 1073742018: +tok2 = 1073741898; +break; +case 1073742052: +test = false; +tok = 1073742018; +tok2 = 1073741898; +break; +case 1073742042: +test = false; +tok = 1112150019; +break; +case 1073742046: +test = false; +tok = 1073741938; +break; +case 1073742057: +test = false; +tok = 1073741862; +break; +case 1073742060: +test = false; +tok = 1073742182; +break; +case 1073742058: +test = false; +tok = 1073741960; +break; +default: +JU.Logger.error("PROBLEM IN MESHCOLLECTION: token? " + JS.T.nameOf(tok)); +} +this.setTokenProperty(tok, test, false); +if (tok2 != 0) this.setTokenProperty(tok2, test, true); +return; +}this.setPropS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setTitle", +function(value){ +if ((typeof(value)=='string')) { +var nLine = 1; +var lines = value; +if (lines.length > 0) { +for (var i = lines.length; --i >= 0; ) if (lines.charAt(i) == '|') nLine++; + +this.title = new Array(nLine); +nLine = 0; +var i0 = -1; +for (var i = 0; i < lines.length; i++) if (lines.charAt(i) == '|') { +this.title[nLine++] = lines.substring(i0 + 1, i); +i0 = i; +} +this.title[nLine] = lines.substring(i0 + 1); +return this.title; +}value = null; +}return (this.title = (value == null ? null : value)); +}, "~O"); +Clazz.defineMethod(c$, "checkExplicit", +function(id){ +if (this.explicitID) return; +this.explicitID = (id != null && !id.equals("+PREVIOUS_MESH+")); +if (this.explicitID) this.previousMeshID = id; +}, "~S"); +Clazz.defineMethod(c$, "setTokenProperty", +function(tokProp, bProp, testD){ +if (tokProp == 1073742072) { +if (this.meshCount == 0) return; +for (var i = 0; i < this.meshCount; i++) this.meshes[i].visible = false; + +tokProp = 1073742335; +}if (this.currentMesh == null) { +var key = (this.explicitID && JU.PT.isWild(this.previousMeshID) ? this.previousMeshID : null); +var list = this.getMeshList(key, false); +for (var i = list.size(); --i >= 0; ) this.setMeshTokenProperty(list.get(i), tokProp, bProp, testD); + +if (list.size() == 1) this.currentMesh = list.get(0); +} else { +this.setMeshTokenProperty(this.currentMesh, tokProp, bProp, testD); +if (this.linkedMesh != null) this.setMeshTokenProperty(this.linkedMesh, tokProp, bProp, testD); +}}, "~N,~B,~B"); +Clazz.defineMethod(c$, "setMeshTokenProperty", +function(m, tokProp, bProp, testD){ +if (testD && (!m.havePlanarContours || m.drawTriangles == m.showContourLines)) return; +switch (tokProp) { +case 1610625028: +m.bsDisplay = this.bsDisplay; +if (this.bsDisplay == null && this.displayWithinPoints != null) m.setShowWithin(this.displayWithinPoints, this.displayWithinDistance2, this.isDisplayWithinNot); +return; +case 1073742335: +m.visible = bProp; +return; +case 1765808134: +m.colix = this.colix; +return; +case 603979967: +m.setTranslucent(bProp, this.translucentLevel); +if (bProp && m.bsSlabGhost != null) m.resetSlab(); +return; +default: +m.setTokenProperty(tokProp, bProp); +} +}, "J.shape.Mesh,~N,~B,~B"); +Clazz.defineMethod(c$, "getPropDataMC", +function(property, data){ +if (property === "keys") { +var keys = (Clazz.instanceOf(data[1],"JU.Lst") ? data[1] : new JU.Lst()); +data[1] = keys; +keys.addLast("count"); +keys.addLast("getCenter"); +}if (property === "getNames") { +var map = data[0]; +var withDollar = (data[1]).booleanValue(); +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i] != null && this.meshes[i].vc != 0) map.put((withDollar ? "$" : "") + this.meshes[i].thisID, JS.T.tokenOr); + +return true; +}if (property === "getVertices") { +var m = this.getMesh(data[0]); +if (m == null) return false; +data[1] = m.vs; +data[2] = m.getVisibleVertexBitSet(); +return true; +}if (property === "points") { +var m = this.getMesh(data[0]); +if (m == null) return false; +var bs = m.getVisibleVertexBitSet(); +var pts = new Array(bs.cardinality()); +for (var p = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +pts[p++] = m.vs[i]; +} +data[1] = pts; +return true; +}if (property === "checkID") { +var key = data[0]; +var list = this.getMeshList(key, true); +var m; +if (list.size() == 0 || (m = list.get(0)) == null) return false; +data[1] = m.thisID; +return true; +}if (property === "index") { +var m = this.getMesh(data[0]); +data[1] = Integer.$valueOf(m == null ? -1 : m.index); +return true; +}if (property === "getCenter") { +var id = data[0]; +var index = (data[1]).intValue(); +var m; +if ((m = this.getMesh(id)) == null || m.vs == null) return false; +if (index == 2147483647) data[2] = JU.P3.new3(m.index + 1, this.meshCount, m.vc); + else data[2] = m.vs[m.getVertexIndexFromNumber(index)]; +return true; +}return this.getPropShape(property, data); +}, "~S,~A"); +Clazz.defineMethod(c$, "getMeshList", +function(key, justOne){ +var list = new JU.Lst(); +if (key != null) key = (key.length == 0 ? null : key.toUpperCase()); +var isWild = JU.PT.isWild(key); +var id; +for (var i = this.meshCount; --i >= 0; ) { +if (key == null || (id = this.meshes[i].thisID.toUpperCase()).equals(key) || isWild && JU.PT.isMatch(id, key, true, true)) { +list.addLast(this.meshes[i]); +if (justOne) break; +}} +return list; +}, "~S,~B"); +Clazz.defineMethod(c$, "getPropMC", +function(property, index){ +var m = this.currentMesh; +if (index >= 0 && (index >= this.meshCount || (m = this.meshes[index]) == null)) return null; +if (property === "count") { +var n = 0; +for (var i = 0; i < this.meshCount; i++) if ((m = this.meshes[i]) != null && m.vc > 0) n++; + +return Integer.$valueOf(n); +}if (property === "bsVertices") { +if (m == null) return null; +var lst = new JU.Lst(); +lst.addLast(m.vs); +lst.addLast(m.getVisibleVBS()); +return lst; +}if (property === "ID") return (m == null ? null : m.thisID); +if (property.startsWith("list")) { +this.clean(); +var sb = new JU.SB(); +var k = 0; +var isNamed = property.length > 5; +var id = (property.equals("list") ? null : isNamed ? property.substring(5) : m == null ? null : m.thisID); +for (var i = 0; i < this.meshCount; i++) { +m = this.meshes[i]; +if (id != null && !id.equalsIgnoreCase(m.thisID)) continue; +sb.appendI((++k)).append(" id:" + m.thisID).append("; model:" + this.vwr.getModelNumberDotted(m.modelIndex)).append("; vertices:" + m.vc).append("; polygons:" + m.pc).append("; visible:" + m.visible); +var range = this.getProperty("dataRange", 0); +if (range != null) sb.append("; dataRange:").append(JU.Escape.eAF(range)); +if (m.title != null) { +var s = ""; +for (var j = 0; j < m.title.length; j++) s += (j == 0 ? "; title:" : " | ") + m.title[j]; + +if (s.length > 10000) s = s.substring(0, 10000) + "..."; +sb.append(s); +}sb.appendC('\n'); +if (isNamed) { +var info = this.getProperty("jvxlFileInfo", 0); +if (info != null) sb.append(info).appendC('\n'); +}} +return sb.toString(); +}if (property === "values") return this.getValues(m); +if (property === "vertices") return this.getVertices(m); +if (property === "info") { +if (m == null) return null; +var info = m.getInfo(false); +if (info != null && this.jvxlData != null) { +var ss = this.jvxlData.jvxlFileTitle; +if (ss != null) info.put("jvxlFileTitle", ss.trim()); +ss = this.jvxlData.jvxlFileSource; +if (ss != null) info.put("jvxlFileSource", ss); +ss = this.jvxlData.jvxlFileMessage; +if (ss != null) info.put("jvxlFileMessage", ss.trim()); +}return info; +}if (property === "data") return (m == null ? null : m.getInfo(true)); +return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "getValues", +function(mesh){ +return (mesh == null ? null : mesh.vvs); +}, "J.shape.Mesh"); +Clazz.defineMethod(c$, "getVertices", +function(mesh){ +return (mesh == null ? null : mesh.vs); +}, "J.shape.Mesh"); +Clazz.defineMethod(c$, "clean", +function(){ +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i] == null || this.meshes[i].vc == 0) this.deleteMeshI(i); + +}); +Clazz.defineMethod(c$, "deleteMesh", +function(){ +if (this.explicitID && this.currentMesh != null) this.deleteMeshI(this.currentMesh.index); + else this.deleteMeshKey(this.explicitID && this.previousMeshID != null && JU.PT.isWild(this.previousMeshID) ? this.previousMeshID : null); +this.currentMesh = null; +}); +Clazz.defineMethod(c$, "deleteMeshKey", +function(key){ +if (key == null || key.length == 0) { +for (var i = this.meshCount; --i >= 0; ) this.meshes[i] = null; + +this.meshCount = 0; +this.nUnnamed = 0; +if (this.htObjects != null) this.htObjects.clear(); +} else { +var list = this.getMeshList(key, false); +var n = list.size(); +for (var i = 0; i < n; i++) this.deleteMeshI(list.get(i).index); + +}}, "~S"); +Clazz.defineMethod(c$, "deleteMeshI", +function(i){ +if (this.htObjects != null) this.htObjects.remove(this.meshes[i].thisID.toUpperCase()); +for (var j = i + 1; j < this.meshCount; ++j) this.meshes[--this.meshes[j].index] = this.meshes[j]; + +this.meshes[--this.meshCount] = null; +}, "~N"); +Clazz.defineMethod(c$, "resetObjects", +function(){ +this.htObjects.clear(); +for (var i = 0; i < this.meshCount; i++) { +var m = this.meshes[i]; +m.index = i; +this.htObjects.put(m.thisID.toUpperCase(), m); +} +}); +Clazz.defineMethod(c$, "getMesh", +function(thisID){ +var i = this.getIndexFromName(thisID); +return (i < 0 ? null : this.meshes[i]); +}, "~S"); +Clazz.overrideMethod(c$, "getIndexFromName", +function(id){ +if ("+PREVIOUS_MESH+".equals(id)) return (this.previousMeshID == null ? this.meshCount - 1 : this.getIndexFromName(this.previousMeshID)); +if (JU.PT.isWild(id)) { +var list = this.getMeshList(id, true); +return (list.size() == 0 ? -1 : list.get(0).index); +}if (this.htObjects != null) { +var m = this.htObjects.get(id.toUpperCase()); +return (m == null ? -1 : m.index); +}for (var i = this.meshCount; --i >= 0; ) { +if (this.meshes[i] != null && this.meshes[i].vc != 0 && id.equalsIgnoreCase(this.meshes[i].thisID)) return i; +} +return -1; +}, "~S"); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +var bsDeleted = this.vwr.slm.bsDeleted; +for (var i = this.meshCount; --i >= 0; ) { +var mesh = this.meshes[i]; +mesh.visibilityFlags = (mesh.visible && mesh.isValid && (mesh.modelIndex < 0 || bsModels.get(mesh.modelIndex) && (mesh.atomIndex < 0 || !this.ms.isAtomHidden(mesh.atomIndex) && !(bsDeleted != null && bsDeleted.get(mesh.atomIndex)))) ? this.vf : 0); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "setStatusPicked", +function(flag, v, map){ +this.vwr.setStatusAtomPicked(flag, "[\"" + this.myType + "\"," + JU.PT.esc(this.pickedMesh.thisID) + "," + +this.pickedModel + "," + this.pickedVertex + "," + v.x + "," + v.y + "," + v.z + "," + (this.pickedMesh.title == null ? "\"\"" : JU.PT.esc(this.pickedMesh.title[0])) + "]", map, false); +}, "~N,JU.T3,java.util.Map"); +Clazz.defineMethod(c$, "getPickedPoint", +function(v, modelIndex){ +var map = new java.util.Hashtable(); +if (v != null) { +map.put("pt", v); +map.put("modelIndex", Integer.$valueOf(modelIndex)); +map.put("model", this.vwr.getModelNumberDotted(modelIndex)); +map.put("id", this.pickedMesh.thisID); +map.put("vertex", Integer.$valueOf(this.pickedVertex + 1)); +map.put("type", this.myType); +}return map; +}, "JU.T3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Shape.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Shape.js new file mode 100755 index 000000000000..5edbacba292a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Shape.js @@ -0,0 +1,183 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(null, "J.shape.Shape", ["J.c.PAL", "JU.C", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.myType = null; +this.vwr = null; +this.ms = null; +this.shapeID = 0; +this.vf = 0; +this.translucentLevel = 0; +this.translucentAllowed = true; +this.isBioShape = false; +this.bsSizeSet = null; +this.bsColixSet = null; +Clazz.instantialize(this, arguments);}, J.shape, "Shape", null); +Clazz.defineMethod(c$, "initializeShape", +function(vwr, modelSet, shapeID){ +this.vwr = vwr; +this.shapeID = shapeID; +this.vf = JV.JC.getShapeVisibilityFlag(shapeID); +this.setModelSet(modelSet); +this.initShape(); +}, "JV.Viewer,JM.ModelSet,~N"); +Clazz.defineMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +}, "JU.BS"); +Clazz.defineMethod(c$, "getSize", +function(atomIndex){ +return 0; +}, "~N"); +Clazz.defineMethod(c$, "getSizeG", +function(group){ +return 0; +}, "JM.Group"); +Clazz.defineMethod(c$, "replaceGroup", +function(g0, g1){ +}, "JM.Group,JM.Group"); +Clazz.defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = modelSet; +this.initModelSet(); +}, "JM.ModelSet"); +Clazz.defineMethod(c$, "initModelSet", +function(){ +}); +Clazz.defineMethod(c$, "setShapeSizeRD", +function(size, rd, bsSelected){ +if (rd == null) this.setSize(size, bsSelected); + else this.setSizeRD(rd, bsSelected); +}, "~N,J.atomdata.RadiusData,JU.BS"); +Clazz.defineMethod(c$, "setSize", +function(size, bsSelected){ +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "setSizeRD", +function(rd, bsSelected){ +}, "J.atomdata.RadiusData,JU.BS"); +Clazz.defineMethod(c$, "setPropS", +function(propertyName, value, bsSelected){ +if (propertyName === "setProperties") { +this.setProperties(value); +return; +}if (propertyName === "translucentLevel") { +this.translucentLevel = (value).floatValue(); +return; +}if (propertyName === "refreshTrajectories") { +return; +}JU.Logger.warn("unassigned " + JV.JC.shapeClassBases[this.shapeID] + " + shape setProperty:" + propertyName + ":" + value); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "getPropertyData", +function(property, data){ +return this.getPropShape(property, data); +}, "~S,~A"); +Clazz.defineMethod(c$, "getPropShape", +function(property, data){ +if (Clazz.instanceOf(data[1], Integer)) { +var index = (data[1]).intValue(); +data[1] = this.getProperty(property, index); +return (data[1] != null); +}return false; +}, "~S,~A"); +Clazz.defineMethod(c$, "getProperty", +function(property, index){ +return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "getIndexFromName", +function(thisID){ +return -1; +}, "~S"); +Clazz.defineMethod(c$, "wasClicked", +function(x, y){ +return false; +}, "~N,~N"); +Clazz.defineMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, bsNot){ +}, "~N,~N,~A,JU.BS"); +Clazz.defineMethod(c$, "checkBoundsMinMax", +function(pointMin, pointMax){ +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "setAtomClickability", +function(){ +}); +Clazz.defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +return null; +}, "~N,~N,~N,JU.BS,~B"); +Clazz.defineMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +return false; +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, dragAction, bsVisible){ +return false; +}, "~N,~N,~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "coordinateInRange", +function(x, y, vertex, dmin2, ptXY){ +this.vwr.tm.transformPtScr(vertex, ptXY); +var d2 = (x - ptXY.x) * (x - ptXY.x) + (y - ptXY.y) * (y - ptXY.y); +return (d2 <= dmin2 ? d2 : -1); +}, "~N,~N,JU.T3,~N,JU.P3i"); +Clazz.defineMethod(c$, "getColixI", +function(colix, paletteID, atomIndex){ +return this.getColixA(colix, paletteID, this.ms.at[atomIndex]); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getColixA", +function(colix, paletteID, atom){ +return (colix == 2 ? this.vwr.cm.getColixAtomPalette(atom, paletteID) : colix); +}, "~N,~N,JM.Atom"); +Clazz.defineMethod(c$, "getColixB", +function(colix, pid, bond){ +return (colix == 2 ? this.vwr.cm.getColixBondPalette(bond, pid) : colix); +}, "~N,~N,JM.Bond"); +Clazz.defineMethod(c$, "getShapeDetail", +function(){ +return null; +}); +c$.getColix = Clazz.defineMethod(c$, "getColix", +function(colixes, i, atom){ +return JU.C.getColixInherited((colixes == null || i >= colixes.length ? 0 : colixes[i]), atom.colixAtom); +}, "~A,~N,JM.Atom"); +c$.getFontCommand = Clazz.defineMethod(c$, "getFontCommand", +function(type, font){ +if (font == null) return ""; +return "font " + type + " " + font.getInfo(); +}, "~S,JU.Font"); +c$.getColorCommandUnk = Clazz.defineMethod(c$, "getColorCommandUnk", +function(type, colix, translucentAllowed){ +return J.shape.Shape.getColorCommand(type, J.c.PAL.UNKNOWN.id, colix, translucentAllowed); +}, "~S,~N,~B"); +c$.getColorCommand = Clazz.defineMethod(c$, "getColorCommand", +function(type, pid, colix, translucentAllowed){ +if (pid == J.c.PAL.UNKNOWN.id && colix == 0) return ""; +var s = (pid == J.c.PAL.UNKNOWN.id && colix == 0 ? "" : (translucentAllowed ? J.shape.Shape.getTranslucentLabel(colix) + " " : "") + (pid != J.c.PAL.UNKNOWN.id && !J.c.PAL.isPaletteVariable(pid) ? J.c.PAL.getPaletteName(pid) : J.shape.Shape.encodeColor(colix))); +return "color " + type + " " + s; +}, "~S,~N,~N,~B"); +c$.encodeColor = Clazz.defineMethod(c$, "encodeColor", +function(colix){ +return (JU.C.isColixColorInherited(colix) ? "none" : JU.C.getHexCode(colix)); +}, "~N"); +c$.getTranslucentLabel = Clazz.defineMethod(c$, "getTranslucentLabel", +function(colix){ +return (JU.C.isColixTranslucent(colix) ? JU.C.getColixTranslucencyLabel(colix) : "opaque"); +}, "~N"); +c$.appendCmd = Clazz.defineMethod(c$, "appendCmd", +function(s, cmd){ +if (cmd.length == 0) return; +s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz.defineMethod(c$, "setProperties", +function(value){ +var bsSelected = this.vwr.bsA(); +if (Clazz.instanceOf(value,"JU.Lst")) { +var propertyList = value; +while (propertyList.size() > 0) { +var data = propertyList.removeItemAt(0); +this.setProperty((data[0]).intern(), data[1], bsSelected); +} +} else { +var data = (value); +for (var i = 0, n = data.length; i < n; i++) { +this.setProperty((data[i][0]).intern(), data[i][1], bsSelected); +} +}}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Stars.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Stars.js new file mode 100755 index 000000000000..deb37d8c5246 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Stars.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.AtomShape"], "J.shape.Stars", null, function(){ +var c$ = Clazz.declareType(J.shape, "Stars", J.shape.AtomShape); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Sticks.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Sticks.js new file mode 100755 index 000000000000..b1a90f26a07f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Sticks.js @@ -0,0 +1,168 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.Shape", "JU.P3i"], "J.shape.Sticks", ["java.util.Hashtable", "JU.BS", "$.P3", "J.c.PAL", "JU.BSUtil", "$.C", "$.Edge", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.myMask = 0; +this.reportAll = false; +this.bsOrderSet = null; +this.selectedBonds = null; +this.closestAtom = null; +this.ptXY = null; +Clazz.instantialize(this, arguments);}, J.shape, "Sticks", J.shape.Shape); +Clazz.prepareFields (c$, function(){ +this.closestAtom = Clazz.newIntArray (1, 0); +this.ptXY = new JU.P3i(); +}); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.myMask = 1023; +this.reportAll = false; +}); +Clazz.overrideMethod(c$, "setSize", +function(size, bsSelected){ +if (size == 2147483647) { +this.selectedBonds = JU.BSUtil.copy(bsSelected); +return; +}if (size == -2147483648) { +if (this.bsOrderSet == null) this.bsOrderSet = new JU.BS(); +this.bsOrderSet.or(bsSelected); +return; +}if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bsSelected)); +var mad = size; +while (iter.hasNext()) { +this.bsSizeSet.set(iter.nextIndex()); +iter.next().setMad(mad); +} +}, "~N,JU.BS"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("type" === propertyName) { +this.myMask = (value).intValue(); +return; +}if ("reportAll" === propertyName) { +this.reportAll = true; +return; +}if ("reset" === propertyName) { +this.bsOrderSet = null; +this.bsSizeSet = null; +this.bsColixSet = null; +this.selectedBonds = null; +return; +}if ("bondOrder" === propertyName) { +if (this.bsOrderSet == null) this.bsOrderSet = new JU.BS(); +var order = (value).intValue(); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(65535, bs)); +while (iter.hasNext()) { +this.bsOrderSet.set(iter.nextIndex()); +iter.next().setOrder(order); +} +return; +}if ("color" === propertyName) { +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var colix = JU.C.getColixO(value); +var pal = (Clazz.instanceOf(value,"J.c.PAL") ? value : null); +if (pal === J.c.PAL.TYPE || pal === J.c.PAL.ENERGY) { +var isEnergy = (pal === J.c.PAL.ENERGY); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +this.bsColixSet.set(iter.nextIndex()); +var bond = iter.next(); +bond.colix = (isEnergy ? this.getColixB(colix, pal.id, bond) : JU.C.getColix(JU.Edge.getArgbHbondType(bond.order))); +} +return; +}if (colix == 2 && pal !== J.c.PAL.CPK) return; +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +var iBond = iter.nextIndex(); +iter.next().colix = colix; +this.bsColixSet.setBitTo(iBond, (colix != 0 && colix != 2)); +} +return; +}if ("translucency" === propertyName) { +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var isTranslucent = ((value).equals("translucent")); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +this.bsColixSet.set(iter.nextIndex()); +iter.next().setTranslucent(isTranslucent, this.translucentLevel); +} +return; +}if ("deleteModelAtoms" === propertyName) { +return; +}this.setPropS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +if (property.equals("selectionState")) return (this.selectedBonds != null ? "select BONDS " + JU.Escape.eBS(this.selectedBonds) + "\n" : ""); +if (property.equals("sets")) return Clazz.newArray(-1, [this.bsOrderSet, this.bsSizeSet, this.bsColixSet]); +return null; +}, "~S,~N"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if ((bond.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(bond.atom1.i) || this.ms.isAtomHidden(bond.atom2.i)) continue; +bond.atom1.setClickable(this.vf); +bond.atom2.setClickable(this.vf); +} +}); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +Clazz.overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +var pt = new JU.P3(); +var bond = this.findPickedBond(x, y, bsVisible, pt, this.closestAtom); +if (bond == null) return false; +this.vwr.highlightBond(bond.index, this.closestAtom[0], x, y); +return true; +}, "~N,~N,JU.BS"); +Clazz.overrideMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +var pt = new JU.P3(); +var bond = this.findPickedBond(x, y, bsVisible, pt, this.closestAtom); +if (bond == null) return null; +var modelIndex = bond.atom1.mi; +var info = bond.getIdentity(); +var map = new java.util.Hashtable(); +map.put("pt", pt); +map.put("index", Integer.$valueOf(bond.index)); +map.put("modelIndex", Integer.$valueOf(modelIndex)); +map.put("model", this.vwr.getModelNumberDotted(modelIndex)); +map.put("type", "bond"); +map.put("info", info); +this.vwr.setStatusAtomPicked(-3, "[\"bond\",\"" + bond.getIdentity() + "\"," + pt.x + "," + pt.y + "," + pt.z + "]", map, false); +return map; +}, "~N,~N,~N,JU.BS,~B"); +Clazz.defineMethod(c$, "findPickedBond", +function(x, y, bsVisible, pt, closestAtom){ +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}var pickedBond = null; +var v = new JU.P3(); +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if (bond.shapeVisibilityFlags == 0) continue; +var atom1 = bond.atom1; +var atom2 = bond.atom2; +if (!atom1.checkVisible() || !atom2.checkVisible()) continue; +v.ave(atom1, atom2); +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0 && Math.abs(atom1.sY - atom2.sY) + Math.abs(atom1.sX - atom2.sX) > 40) { +var f = 1 * (this.ptXY.x - atom1.sX) / (atom2.sX - atom1.sX); +if (f < 0.4 || f > 0.6) continue; +dmin2 = d2; +pickedBond = bond; +if (closestAtom != null) closestAtom[0] = (f < 0.5 ? atom1.i : atom2.i); +pt.setT(v); +}} +return pickedBond; +}, "~N,~N,JU.BS,JU.P3,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/TextShape.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/TextShape.js new file mode 100755 index 000000000000..09b9427a8504 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/TextShape.js @@ -0,0 +1,191 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.Shape", "java.util.Hashtable"], "J.shape.TextShape", ["JU.P3", "$.PT", "JU.C", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.objects = null; +this.currentObject = null; +this.currentFont = null; +this.currentColor = null; +this.currentBgColor = null; +this.currentTranslucentLevel = 0; +this.currentBgTranslucentLevel = 0; +this.thisID = null; +this.isHover = false; +this.isAll = false; +Clazz.instantialize(this, arguments);}, J.shape, "TextShape", J.shape.Shape); +Clazz.prepareFields (c$, function(){ +this.objects = new java.util.Hashtable(); +}); +Clazz.defineMethod(c$, "setPropTS", +function(propertyName, value, bsSelected){ +if ("text" === propertyName) { +var text = value; +if (this.currentObject != null) { +this.currentObject.setText(text); +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.setText(text); + +}return; +}if ("font" === propertyName) { +this.currentFont = value; +if (this.currentObject != null) { +this.currentObject.setFont(this.currentFont, true); +this.currentObject.setFontScale(0); +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.setFont(this.currentFont, true); + +}return; +}if ("allOff" === propertyName) { +this.currentObject = null; +this.isAll = true; +this.objects = new java.util.Hashtable(); +return; +}if ("delete" === propertyName) { +if (Clazz.instanceOf(value,"JM.Text")) { +this.currentObject = value; +}if (this.currentObject != null) { +this.objects.remove(this.currentObject.target); +this.currentObject = null; +} else if (this.isAll || this.thisID != null) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +var text = e.next(); +if (this.isAll || JU.PT.isMatch(text.target.toUpperCase(), this.thisID, true, true)) { +e.remove(); +}} +}return; +}if ("off" === propertyName) { +if (this.isAll) { +this.objects = new java.util.Hashtable(); +this.isAll = false; +this.currentObject = null; +return; +}if (this.currentObject != null) { +this.objects.remove(this.currentObject.target); +this.currentObject = null; +} else if (this.thisID != null) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +var text = e.next(); +if (this.isAll || JU.PT.isMatch(text.target.toUpperCase(), this.thisID, true, true)) { +e.remove(); +}} +}}if ("model" === propertyName) { +var modelIndex = (value).intValue(); +if (this.currentObject != null) { +this.currentObject.modelIndex = modelIndex; +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.modelIndex = modelIndex; + +}return; +}if ("align" === propertyName) { +var align = value; +if (this.currentObject != null) { +if (!this.currentObject.setAlignmentLCR(align)) JU.Logger.error("unrecognized align:" + align); +} else if (this.isAll) { +for (var obj, $obj = this.objects.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) obj.setAlignmentLCR(align); + +}return; +}if ("bgcolor" === propertyName) { +this.currentBgColor = value; +if (this.currentObject != null) { +this.currentObject.bgcolix = JU.C.getColixO(value); +} else if (this.isAll) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +e.next().bgcolix = JU.C.getColixO(value); +} +}return; +}if ("color" === propertyName) { +this.currentColor = value; +if (this.currentObject != null) { +this.currentObject.colix = JU.C.getColixO(value); +} else if (this.isAll || this.thisID != null) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +var text = e.next(); +if (this.isAll || JU.PT.isMatch(text.target.toUpperCase(), this.thisID, true, true)) { +text.colix = JU.C.getColixO(value); +}} +}return; +}if ("target" === propertyName) { +var target = value; +this.isAll = target.equals("all"); +if (this.isAll || target.equals("none")) { +this.currentObject = null; +}return; +}var isBackground; +if ((isBackground = ("bgtranslucency" === propertyName)) || "translucency" === propertyName) { +var isTranslucent = ("translucent" === value); +if (isBackground) this.currentBgTranslucentLevel = (isTranslucent ? this.translucentLevel : 0); + else this.currentTranslucentLevel = (isTranslucent ? this.translucentLevel : 0); +if (this.currentObject != null) { +this.currentObject.setTranslucent(this.translucentLevel, isBackground); +} else if (this.isAll) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +e.next().setTranslucent(this.translucentLevel, isBackground); +} +}return; +}if (propertyName === "deleteModelAtoms") { +var modelIndex = ((value)[2])[0]; +var e = this.objects.values().iterator(); +while (e.hasNext()) { +var text = e.next(); +if (text.modelIndex == modelIndex) { +e.remove(); +} else if (text.modelIndex > modelIndex) { +text.modelIndex--; +}} +return; +}this.setPropS(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +Clazz.overrideMethod(c$, "initModelSet", +function(){ +this.currentObject = null; +this.isAll = false; +}); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +if (!this.isHover) for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.visible = (t.modelIndex < 0 || bsModels.get(t.modelIndex) && (!t.thisModelOnly || bsModels.cardinality() == 1 && t.modelIndex == this.vwr.am.cmi)); + +}, "JU.BS"); +Clazz.overrideMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +if (this.isHover || modifiers == 0) return null; +var isAntialiased = this.vwr.antialiased; +for (var obj, $obj = this.objects.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (obj.checkObjectClicked(isAntialiased, x, y, bsVisible)) { +if (obj.script != null) this.vwr.evalStringQuiet(obj.script); +var map = new java.util.Hashtable(); +map.put("pt", (obj.xyz == null ? new JU.P3() : obj.xyz)); +var modelIndex = obj.modelIndex; +if (modelIndex < 0) modelIndex = 0; +map.put("modelIndex", Integer.$valueOf(modelIndex)); +map.put("model", this.vwr.getModelNumberDotted(modelIndex)); +map.put("id", obj.target); +map.put("type", "echo"); +return map; +}} +return null; +}, "~N,~N,~N,JU.BS,~B"); +Clazz.overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +if (this.isHover) return false; +var haveScripts = false; +var isAntialiased = this.vwr.antialiased; +for (var obj, $obj = this.objects.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (obj.script != null) { +haveScripts = true; +if (obj.checkObjectClicked(isAntialiased, x, y, bsVisible)) { +this.vwr.setCursor(12); +return true; +}}} +if (haveScripts) this.vwr.setCursor(0); +return false; +}, "~N,~N,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shape/Uccage.js b/config/plugins/visualizations/jmol/static/j2s/J/shape/Uccage.js new file mode 100755 index 000000000000..8a5a27cb13a3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shape/Uccage.js @@ -0,0 +1,15 @@ +Clazz.declarePackage("J.shape"); +Clazz.load(["J.shape.FontLineShape"], "J.shape.Uccage", null, function(){ +var c$ = Clazz.declareType(J.shape, "Uccage", J.shape.FontLineShape); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +this.setPropFLS(propertyName, value); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shape.Uccage, "initShape", []); +this.font3d = this.vwr.gdata.getFont3D(16); +this.myType = "unitcell"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Backbone.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Backbone.js new file mode 100755 index 000000000000..2da5d2ebf6da --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Backbone.js @@ -0,0 +1,78 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shapebio.BioShapeCollection"], "J.shapebio.Backbone", ["JU.BS"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bsSelected = null; +Clazz.instantialize(this, arguments);}, J.shapebio, "Backbone", J.shapebio.BioShapeCollection); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.madOn = 1; +this.madHelixSheet = 1500; +this.madTurnRandom = 500; +this.madDnaRna = 2000; +this.isActive = true; +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +if ("bitset" === propertyName) { +this.bsSelected = value; +return; +}this.setPropBSC(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "setShapeSizeRD", +function(size, rd, bsSelected){ +var mad = size; +this.initialize(); +var useThisBsSelected = (this.bsSelected != null); +if (useThisBsSelected) bsSelected = this.bsSelected; +for (var iShape = this.bioShapes.length; --iShape >= 0; ) { +var bioShape = this.bioShapes[iShape]; +if (bioShape.monomerCount == 0) continue; +var bondSelectionModeOr = this.vwr.getBoolean(603979812); +var atomIndices = bioShape.bioPolymer.getLeadAtomIndices(); +var isVisible = (mad != 0); +if (bioShape.bsSizeSet == null) bioShape.bsSizeSet = new JU.BS(); +bioShape.isActive = true; +var n = bioShape.monomerCount; +for (var i = n - (bioShape.bioPolymer.isCyclic() ? 0 : 1); --i >= 0; ) { +var index1 = atomIndices[i]; +var index2 = atomIndices[(i + 1) % n]; +var isAtom1 = bsSelected.get(index1); +var isAtom2 = bsSelected.get(index2); +if (isAtom1 && isAtom2 || useThisBsSelected && isAtom1 || bondSelectionModeOr && (isAtom1 || isAtom2)) { +bioShape.monomers[i].setShapeVisibility(this.vf, isVisible); +var atomA = this.ms.at[index1]; +if (rd != null) { +if (Float.isNaN(rd.values[index1]) || Float.isNaN(rd.values[index2])) continue; +mad = Clazz.floatToShort((rd.values[index1] + rd.values[index2]) * 1000); +isVisible = (mad != 0); +}var atomB = this.ms.at[index2]; +var wasVisible = (bioShape.mads[i] != 0); +if (wasVisible != isVisible) { +this.addDisplayedBackbone(atomA, isVisible); +this.addDisplayedBackbone(atomB, isVisible); +}bioShape.mads[i] = mad; +bioShape.bsSizeSet.setBitTo(i, isVisible); +bioShape.bsSizeDefault.setBitTo(i, mad == -1); +}} +} +if (useThisBsSelected) this.bsSelected = null; +}, "~N,J.atomdata.RadiusData,JU.BS"); +Clazz.defineMethod(c$, "addDisplayedBackbone", +function(a, isVisible){ +a.nBackbonesDisplayed += (isVisible ? 1 : -1); +a.setShapeVisibility(this.vf, isVisible); +}, "JM.Atom,~B"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +if (this.bioShapes == null) return; +for (var iShape = this.bioShapes.length; --iShape >= 0; ) { +var bioShape = this.bioShapes[iShape]; +var atomIndices = bioShape.bioPolymer.getLeadAtomIndices(); +for (var i = bioShape.monomerCount; --i >= 0; ) { +var atom = this.ms.at[atomIndices[i]]; +if (atom.nBackbonesDisplayed > 0 && !this.ms.isAtomHidden(atom.i)) atom.setClickable(this.vf); +} +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/BioShape.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/BioShape.js new file mode 100755 index 000000000000..573dceb311e5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/BioShape.js @@ -0,0 +1,235 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shape.AtomShape"], "J.shapebio.BioShape", ["JU.AU", "$.BS", "$.PT", "J.c.PAL", "$.STR", "JU.BSUtil", "$.C", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modelIndex = 0; +this.modelVisibilityFlags = 0; +this.shape = null; +this.bioPolymer = null; +this.meshes = null; +this.meshReady = null; +this.colixesBack = null; +this.monomers = null; +this.wingVectors = null; +this.leadAtomIndices = null; +this.hasBfactorRange = false; +this.bfactorMin = 0; +this.bfactorMax = 0; +this.range = 0; +this.floatRange = 0; +Clazz.instantialize(this, arguments);}, J.shapebio, "BioShape", J.shape.AtomShape); +Clazz.makeConstructor(c$, +function(shape, modelIndex, bioPolymer){ +Clazz.superConstructor (this, J.shapebio.BioShape, []); +this.shape = shape; +this.modelIndex = modelIndex; +this.bioPolymer = bioPolymer; +this.isActive = shape.isActive; +this.bsSizeDefault = new JU.BS(); +this.monomerCount = bioPolymer.monomerCount; +if (this.monomerCount > 0) { +this.colixes = Clazz.newShortArray (this.monomerCount, 0); +this.paletteIDs = Clazz.newByteArray (this.monomerCount, 0); +this.mads = Clazz.newShortArray (this.monomerCount + 1, 0); +this.monomers = bioPolymer.monomers; +this.meshReady = Clazz.newBooleanArray(this.monomerCount, false); +this.meshes = new Array(this.monomerCount); +this.wingVectors = bioPolymer.getWingVectors(); +this.leadAtomIndices = bioPolymer.getLeadAtomIndices(); +}}, "J.shapebio.BioShapeCollection,~N,JM.BioPolymer"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +this.setPropAS(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "calcBfactorRange", +function(){ +this.bfactorMin = this.bfactorMax = this.monomers[0].getLeadAtom().getBfactor100(); +for (var i = this.monomerCount; --i > 0; ) { +var bfactor = this.monomers[i].getLeadAtom().getBfactor100(); +if (bfactor < this.bfactorMin) this.bfactorMin = bfactor; + else if (bfactor > this.bfactorMax) this.bfactorMax = bfactor; +} +this.range = this.bfactorMax - this.bfactorMin; +this.floatRange = this.range; +this.hasBfactorRange = true; +}); +Clazz.defineMethod(c$, "calcMeanPositionalDisplacement", +function(bFactor100){ +return Clazz.doubleToShort(Math.sqrt(bFactor100 / 7895.6835208714865) * 1000); +}, "~N"); +Clazz.overrideMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, bsNot){ +this.bioPolymer.findNearestAtomIndex(xMouse, yMouse, closest, this.mads, this.shape.vf, bsNot); +}, "~N,~N,~A,JU.BS"); +Clazz.defineMethod(c$, "setMad", +function(mad, bsSelected, values){ +if (this.monomerCount < 2) return; +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var flag = this.shape.vf; +var setRingVis = (flag == 32768 && Clazz.instanceOf(this.bioPolymer,"JM.NucleicPolymer")); +for (var i = this.monomerCount; --i >= 0; ) { +var leadAtomIndex = this.leadAtomIndices[i]; +if (bsSelected.get(leadAtomIndex)) { +if (values != null && leadAtomIndex < values.length) { +if (Float.isNaN(values[leadAtomIndex])) continue; +mad = Clazz.floatToShort(values[leadAtomIndex] * 2000); +}var isVisible = ((this.mads[i] = this.getMad(i, mad)) > 0); +this.bsSizeSet.setBitTo(i, isVisible); +this.monomers[i].setShapeVisibility(flag, isVisible); +this.shape.atoms[leadAtomIndex].setShapeVisibility(flag, isVisible); +if (setRingVis) (this.monomers[i]).setRingsVisible(isVisible); +this.falsifyNearbyMesh(i); +}} +if (this.monomerCount > 1) this.mads[this.monomerCount] = this.mads[this.monomerCount - 1]; +}, "~N,JU.BS,~A"); +Clazz.defineMethod(c$, "getMad", +function(groupIndex, mad){ +this.bsSizeDefault.setBitTo(groupIndex, mad == -1 || mad == -2); +if (mad >= 0) return mad; +switch (mad) { +case -1: +case -2: +if (mad == -1 && this.shape.madOn >= 0) return this.shape.madOn; +switch (this.monomers[groupIndex].getProteinStructureType()) { +case J.c.STR.SHEET: +case J.c.STR.HELIX: +return this.shape.madHelixSheet; +case J.c.STR.DNA: +case J.c.STR.RNA: +return this.shape.madDnaRna; +default: +return this.shape.madTurnRandom; +} +case -3: +{ +if (!this.hasBfactorRange) this.calcBfactorRange(); +var atom = this.monomers[groupIndex].getLeadAtom(); +var bfactor100 = atom.getBfactor100(); +var scaled = bfactor100 - this.bfactorMin; +if (this.range == 0) return 0; +var percentile = scaled / this.floatRange; +if (percentile < 0 || percentile > 1) JU.Logger.error("Que ha ocurrido? " + percentile); +return Clazz.floatToShort((1750 * percentile) + 250); +}case -4: +{ +var atom = this.monomers[groupIndex].getLeadAtom(); +return (2 * this.calcMeanPositionalDisplacement(atom.getBfactor100())); +}} +JU.Logger.error("unrecognized setMad(" + mad + ")"); +return 0; +}, "~N,~N"); +Clazz.defineMethod(c$, "falsifyMesh", +function(){ +if (this.meshReady == null) return; +for (var i = 0; i < this.monomerCount; i++) this.meshReady[i] = false; + +}); +Clazz.defineMethod(c$, "falsifyNearbyMesh", +function(index){ +if (this.meshReady == null) return; +this.meshReady[index] = false; +if (index > 0) this.meshReady[index - 1] = false; +if (index < this.monomerCount - 1) this.meshReady[index + 1] = false; +}, "~N"); +Clazz.defineMethod(c$, "setColixBS", +function(colix, pid, bsSelected){ +this.isActive = true; +if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.monomerCount); +for (var i = this.monomerCount; --i >= 0; ) { +var atomIndex = this.leadAtomIndices[i]; +if (bsSelected.get(atomIndex)) { +this.colixes[i] = this.shape.getColixI(colix, pid, atomIndex); +if (this.colixesBack != null && this.colixesBack.length > i) this.colixesBack[i] = 0; +this.paletteIDs[i] = pid; +this.bsColixSet.setBitTo(i, this.colixes[i] != 0); +}} +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "setColixBack", +function(colix, bsSelected){ +if (this.colixesBack == null) this.colixesBack = Clazz.newShortArray (this.colixes.length, 0); +if (this.colixesBack.length < this.colixes.length) this.colixesBack = JU.AU.ensureLengthShort(this.colixesBack, this.colixes.length); +for (var i = this.monomerCount; --i >= 0; ) if (bsSelected.get(this.leadAtomIndices[i])) this.colixesBack[i] = colix; + +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "setColixes", +function(atomColixes, bsSelected){ +this.isActive = true; +if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.monomerCount); +for (var i = this.monomerCount; --i >= 0; ) { +var atomIndex = this.leadAtomIndices[i]; +if (bsSelected.get(atomIndex) && i < this.colixes.length && atomIndex < atomColixes.length) { +this.colixes[i] = this.shape.getColixI(atomColixes[atomIndex], J.c.PAL.UNKNOWN.id, atomIndex); +if (this.colixesBack != null && i < this.colixesBack.length) this.colixesBack[i] = 0; +this.paletteIDs[i] = J.c.PAL.UNKNOWN.id; +this.bsColixSet.set(i); +}} +}, "~A,JU.BS"); +Clazz.defineMethod(c$, "setParams", +function(data, atomMap, bsSelected){ +if (this.monomerCount == 0) return; +var c = data[0]; +var atrans = data[1]; +this.isActive = true; +if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.monomerCount); +var n = atomMap.length; +for (var i = this.monomerCount; --i >= 0; ) { +var atomIndex = this.leadAtomIndices[i]; +if (bsSelected.get(atomIndex) && i < this.colixes.length && atomIndex < n) { +var pt = atomMap[atomIndex]; +var colix = (c == null ? 0 : c[pt]); +var f = (atrans == null ? 0 : atrans[pt]); +if (f > 0.01) colix = JU.C.getColixTranslucent3(colix, true, f); +this.colixes[i] = this.shape.getColixI(colix, J.c.PAL.UNKNOWN.id, atomIndex); +if (this.colixesBack != null && i < this.colixesBack.length) this.colixesBack[i] = 0; +this.paletteIDs[i] = J.c.PAL.UNKNOWN.id; +this.bsColixSet.set(i); +}} +}, "~A,~A,JU.BS"); +Clazz.defineMethod(c$, "setTranslucent", +function(isTranslucent, bsSelected, translucentLevel){ +this.isActive = true; +if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.monomerCount); +for (var i = this.monomerCount; --i >= 0; ) if (bsSelected.get(this.leadAtomIndices[i])) { +this.colixes[i] = JU.C.getColixTranslucent3(this.colixes[i], isTranslucent, translucentLevel); +if (this.colixesBack != null && this.colixesBack.length > i) this.colixesBack[i] = JU.C.getColixTranslucent3(this.colixesBack[i], isTranslucent, translucentLevel); +this.bsColixSet.setBitTo(i, this.colixes[i] != 0); +} +}, "~B,JU.BS,~N"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +if (!this.isActive || this.wingVectors == null || this.monomerCount == 0) return; +var setRingsClickable = (Clazz.instanceOf(this.bioPolymer,"JM.NucleicPolymer") && this.shape.shapeID == 11); +var setAlphaClickable = (Clazz.instanceOf(this.bioPolymer,"JM.AlphaPolymer") || this.shape.shapeID != 15); +var ms = this.monomers[0].chain.model.ms; +for (var i = this.monomerCount; --i >= 0; ) { +if (this.mads[i] <= 0) continue; +var iAtom = this.leadAtomIndices[i]; +if (ms.isAtomHidden(iAtom)) continue; +if (setAlphaClickable) ms.at[iAtom].setClickable(1040384); +if (setRingsClickable) (this.monomers[i]).setRingsClickable(); +} +}); +Clazz.defineMethod(c$, "getBioShapeState", +function(type, translucentAllowed, temp, temp2){ +if (this.monomerCount > 0) { +if (!this.isActive || this.bsSizeSet == null && this.bsColixSet == null) return; +for (var i = 0; i < this.monomerCount; i++) { +var atomIndex1 = this.monomers[i].firstAtomIndex; +var atomIndex2 = this.monomers[i].lastAtomIndex; +if (this.bsSizeSet != null && (this.bsSizeSet.get(i) || this.bsColixSet != null && this.bsColixSet.get(i))) { +if (this.bsSizeDefault.get(i)) { +JU.BSUtil.setMapBitSet(temp, atomIndex1, atomIndex2, type + (this.bsSizeSet.get(i) ? " on" : " off")); +} else { +JU.BSUtil.setMapBitSet(temp, atomIndex1, atomIndex2, type + " " + JU.PT.escF(this.mads[i] / 2000)); +}}if (this.bsColixSet == null || !this.bsColixSet.get(i)) continue; +var s = J.shape.Shape.getColorCommand(type, this.paletteIDs[i], this.colixes[i], translucentAllowed); +if (this.colixesBack != null && this.colixesBack.length > i && this.colixesBack[i] != 0) s += " " + JU.C.getHexCode(this.colixesBack[i]); +JU.BSUtil.setMapBitSet(temp2, atomIndex1, atomIndex2, s); +} +}}, "~S,~B,java.util.Map,java.util.Map"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/BioShapeCollection.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/BioShapeCollection.js new file mode 100755 index 000000000000..98a606c68166 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/BioShapeCollection.js @@ -0,0 +1,168 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shape.Shape"], "J.shapebio.BioShapeCollection", ["java.util.Hashtable", "JU.AU", "J.c.PAL", "J.shapebio.BioShape", "JU.BSUtil", "$.C", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atoms = null; +this.madOn = -2; +this.madHelixSheet = 3000; +this.madTurnRandom = 800; +this.madDnaRna = 5000; +this.isActive = false; +this.bioShapes = null; +Clazz.instantialize(this, arguments);}, J.shapebio, "BioShapeCollection", J.shape.Shape); +Clazz.overrideMethod(c$, "initModelSet", +function(){ +this.isBioShape = true; +this.atoms = this.ms.at; +this.initialize(); +}); +Clazz.overrideMethod(c$, "initShape", +function(){ +}); +Clazz.overrideMethod(c$, "getSizeG", +function(group){ +var m = group; +var groupIndex = m.groupIndex; +var leadAtomIndex = m.getLeadAtom().i; +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +for (var j = 0; j < bioShape.monomerCount; j++) { +if (bioShape.monomers[j].groupIndex == groupIndex && bioShape.monomers[j].getLeadAtom().i == leadAtomIndex) return bioShape.mads[j]; +} +} +return 0; +}, "JM.Group"); +Clazz.overrideMethod(c$, "replaceGroup", +function(g0, g1){ +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +for (var j = 0; j < bioShape.monomerCount; j++) if (bioShape.monomers[j] === g0) { +bioShape.monomers[j] = g1; +break; +} +} +}, "JM.Group,JM.Group"); +Clazz.overrideMethod(c$, "setShapeSizeRD", +function(size, rd, bsSelected){ +var mad = size; +this.initialize(); +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +if (bioShape.monomerCount > 0) bioShape.setMad(mad, bsSelected, (rd == null ? null : rd.values)); +} +}, "~N,J.atomdata.RadiusData,JU.BS"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +this.setPropBSC(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setPropBSC", +function(propertyName, value, bsSelected){ +if (propertyName === "refreshTrajectories") { +var modelIndex = ((value)[0]).intValue(); +for (var i = this.bioShapes.length; --i >= 0; ) { +var b = this.bioShapes[i]; +if (b.modelIndex == modelIndex) b.falsifyMesh(); +} +return; +}if (propertyName === "deleteModelAtoms") { +this.atoms = (value)[1]; +var modelIndex = ((value)[2])[0]; +for (var i = this.bioShapes.length; --i >= 0; ) { +var b = this.bioShapes[i]; +if (b.modelIndex > modelIndex) { +b.modelIndex--; +b.leadAtomIndices = b.bioPolymer.getLeadAtomIndices(); +} else if (b.modelIndex == modelIndex) { +this.bioShapes = JU.AU.deleteElements(this.bioShapes, i, 1); +}} +return; +}this.initialize(); +if ("color" === propertyName) { +var pid = J.c.PAL.pidOf(value); +var colix = JU.C.getColixO(value); +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +if (bioShape.monomerCount > 0) bioShape.setColixBS(colix, pid, bsSelected); +} +return; +}if ("params" === propertyName) { +var n = bsSelected.length(); +var atomMap = Clazz.newIntArray (n, 0); +for (var pt = 0, i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1), pt++) atomMap[i] = pt; + +for (var i = this.bioShapes.length; --i >= 0; ) this.bioShapes[i].setParams(value, atomMap, bsSelected); + +return; +}if ("colorPhase" === propertyName) { +var twoColors = value; +var colixBack = JU.C.getColixO(twoColors[0]); +var colix = JU.C.getColixO(twoColors[1]); +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +if (bioShape.monomerCount > 0) { +bioShape.setColixBS(colix, 64, bsSelected); +bioShape.setColixBack(colixBack, bsSelected); +}} +return; +}if ("translucency" === propertyName) { +var isTranslucent = ("translucent".equals(value)); +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +if (bioShape.monomerCount > 0) bioShape.setTranslucent(isTranslucent, bsSelected, this.translucentLevel); +} +return; +}this.setPropS(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +var temp = new java.util.Hashtable(); +var temp2 = new java.util.Hashtable(); +var type = JV.JC.shapeClassBases[this.shapeID]; +for (var iShape = this.bioShapes.length; --iShape >= 0; ) this.bioShapes[iShape].getBioShapeState(type, this.translucentAllowed, temp, temp2); + +var s = "\n" + this.vwr.getCommands(temp, temp2, this.shapeID == 9 ? "Backbone" : "select"); +return s; +}); +Clazz.defineMethod(c$, "initialize", +function(){ +var modelCount = this.ms.mc; +var models = this.ms.am; +var n = this.ms.getBioPolymerCountInModel(-1); +var shapes = new Array(n--); +for (var i = modelCount; --i >= 0; ) for (var j = this.ms.getBioPolymerCountInModel(i); --j >= 0; n--) { +var bp = (models[i]).bioPolymers[j]; +shapes[n] = (this.bioShapes == null || this.bioShapes.length <= n || this.bioShapes[n] == null || this.bioShapes[n].bioPolymer !== bp ? new J.shapebio.BioShape(this, i, bp) : this.bioShapes[n]); +} + +this.bioShapes = shapes; +}); +Clazz.overrideMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, bsNot){ +for (var i = this.bioShapes.length; --i >= 0; ) this.bioShapes[i].findNearestAtomIndex(xMouse, yMouse, closest, bsNot); + +}, "~N,~N,~A,JU.BS"); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +if (this.bioShapes == null) return; +bsModels = JU.BSUtil.copy(bsModels); +if (this.ms.trajectory != null) this.ms.trajectory.setBaseModels(bsModels); +for (var i = this.bioShapes.length; --i >= 0; ) { +var b = this.bioShapes[i]; +b.modelVisibilityFlags = (bsModels.get(b.modelIndex) ? this.vf : 0); +} +}, "JU.BS"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +if (this.bioShapes == null) return; +for (var i = this.bioShapes.length; --i >= 0; ) this.bioShapes[i].setAtomClickability(); + +}); +Clazz.defineMethod(c$, "getMpsShapeCount", +function(){ +return this.bioShapes.length; +}); +Clazz.defineMethod(c$, "getBioShape", +function(i){ +return this.bioShapes[i]; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Cartoon.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Cartoon.js new file mode 100755 index 000000000000..1edd1993482d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Cartoon.js @@ -0,0 +1,10 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shapebio.Rockets"], "J.shapebio.Cartoon", null, function(){ +var c$ = Clazz.declareType(J.shapebio, "Cartoon", J.shapebio.Rockets); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.setTurn(); +this.madDnaRna = 1000; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/MeshRibbon.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/MeshRibbon.js new file mode 100755 index 000000000000..2c5c7cc7866e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/MeshRibbon.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shapebio.Strands"], "J.shapebio.MeshRibbon", null, function(){ +var c$ = Clazz.declareType(J.shapebio, "MeshRibbon", J.shapebio.Strands); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.isMesh = true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Ribbons.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Ribbons.js new file mode 100755 index 000000000000..d9b8d1b0949c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Ribbons.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shapebio.BioShapeCollection"], "J.shapebio.Ribbons", null, function(){ +var c$ = Clazz.declareType(J.shapebio, "Ribbons", J.shapebio.BioShapeCollection); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Rockets.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Rockets.js new file mode 100755 index 000000000000..31535486e9d1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Rockets.js @@ -0,0 +1,13 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shapebio.BioShapeCollection"], "J.shapebio.Rockets", null, function(){ +var c$ = Clazz.declareType(J.shapebio, "Rockets", J.shapebio.BioShapeCollection); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.setTurn(); +}); +Clazz.defineMethod(c$, "setTurn", +function(){ +this.madTurnRandom = 500; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Strands.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Strands.js new file mode 100755 index 000000000000..b3eab1bc33e8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Strands.js @@ -0,0 +1,7 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shapebio.BioShapeCollection"], "J.shapebio.Strands", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isMesh = false; +Clazz.instantialize(this, arguments);}, J.shapebio, "Strands", J.shapebio.BioShapeCollection); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Trace.js b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Trace.js new file mode 100755 index 000000000000..068d4351e209 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapebio/Trace.js @@ -0,0 +1,86 @@ +Clazz.declarePackage("J.shapebio"); +Clazz.load(["J.shapebio.BioShapeCollection"], "J.shapebio.Trace", ["J.atomdata.RadiusData", "J.c.VDW"], function(){ +var c$ = Clazz.declareType(J.shapebio, "Trace", J.shapebio.BioShapeCollection); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.madOn = 600; +this.madHelixSheet = 1500; +this.madTurnRandom = 500; +this.madDnaRna = 1500; +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +if (propertyName === "putty") { +this.setPutty(value, bsSelected); +return; +}this.setPropBSC(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setPutty", +function(info, bsAtoms){ +var n = bsAtoms.cardinality(); +if (n == 0) return; +var data = Clazz.newFloatArray (bsAtoms.length(), 0); +var sum = 0.0; +var sumsq = 0.0; +var min = 3.4028235E38; +var max = 0; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var value = this.atoms[i].atomPropertyFloat(null, 1111492620, null); +sum += value; +sumsq += (value * value); +if (value < min) min = value; +if (value > max) max = value; +} +var mean = (sum / n); +var stdev = Math.sqrt((sumsq - (sum * sum / n)) / n); +var rad = info[1]; +var range = info[2]; +var scale_min = info[3]; +var scale_max = info[4]; +var power = info[5]; +var transform = Clazz.floatToInt(info[6]); +var data_range = max - min; +var nonlinear = false; +switch (transform) { +case 0: +case 1: +case 2: +case 3: +nonlinear = true; +break; +} +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var scale = this.atoms[i].atomPropertyFloat(null, 1111492620, null); +switch (transform) { +case 3: +case 7: +default: +break; +case 0: +case 4: +scale = 1 + (scale - mean) / range / stdev; +break; +case 1: +case 5: +scale = (scale - min) / data_range / range; +break; +case 2: +case 6: +scale /= range; +break; +case 8: +if (scale < 0.0) scale = 0.0; +scale = (Math.sqrt(scale / 8.0) / 3.141592653589793); +break; +} +if (scale < 0.0) scale = 0.0; +if (nonlinear) scale = Math.pow(scale, power); +if ((scale < scale_min) && (scale_min >= 0.0)) scale = scale_min; +if ((scale > scale_max) && (scale_max >= 0.0)) scale = scale_max; +data[i] = scale * rad; +} +var rd = new J.atomdata.RadiusData(data, 0, J.atomdata.RadiusData.EnumType.ABSOLUTE, J.c.VDW.AUTO); +this.setShapeSizeRD(0, rd, bsAtoms); +}, "~A,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapecgo/CGO.js b/config/plugins/visualizations/jmol/static/j2s/J/shapecgo/CGO.js new file mode 100755 index 000000000000..c174ba0dbffe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapecgo/CGO.js @@ -0,0 +1,184 @@ +Clazz.declarePackage("J.shapecgo"); +Clazz.load(["J.shape.MeshCollection"], "J.shapecgo.CGO", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "$.SB", "J.shapecgo.CGOMesh"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cmeshes = null; +this.cgoMesh = null; +this.useColix = false; +this.newScale = 0; +this.indicatedModelIndex = -2147483648; +Clazz.instantialize(this, arguments);}, J.shapecgo, "CGO", J.shape.MeshCollection); +Clazz.prepareFields (c$, function(){ +this.cmeshes = new Array(4); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.shapecgo.CGO, []); +this.myType = "CGO"; +this.htObjects = new java.util.Hashtable(); +}); +Clazz.defineMethod(c$, "initCGO", +function(){ +this.indicatedModelIndex = -2147483648; +}); +Clazz.overrideMethod(c$, "allocMesh", +function(thisID, m){ +var index = this.meshCount++; +this.meshes = this.cmeshes = JU.AU.ensureLength(this.cmeshes, this.meshCount * 2); +this.currentMesh = this.cgoMesh = this.cmeshes[index] = (m == null ? new J.shapecgo.CGOMesh(this.vwr, thisID, this.colix, index) : m); +this.currentMesh.color = this.color; +this.currentMesh.index = index; +this.currentMesh.useColix = this.useColix; +this.currentMesh.modelIndex = this.indicatedModelIndex; +if (thisID != null && thisID !== "+PREVIOUS_MESH+" && this.htObjects != null) this.htObjects.put(thisID.toUpperCase(), this.currentMesh); +}, "~S,J.shape.Mesh"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("init" === propertyName) { +this.initCGO(); +this.setPropertySuper("init", value, bs); +return; +}if ("setCGO" === propertyName) { +var list = value; +this.setProperty("init", null, null); +var n = list.size() - 1; +this.setProperty("thisID", list.get(n), null); +propertyName = "set"; +this.setProperty("set", value, null); +return; +}if ("modelIndex" === propertyName) { +this.indicatedModelIndex = Math.max((value).intValue(), -1); +return; +}if ("set" === propertyName) { +if (this.cgoMesh == null) { +this.allocMesh(null, null); +this.cgoMesh.colix = this.colix; +this.cgoMesh.color = this.color; +this.cgoMesh.useColix = this.useColix; +}this.cgoMesh.modelIndex = (this.indicatedModelIndex == -2147483648 ? this.vwr.am.cmi : this.indicatedModelIndex); +this.cgoMesh.isValid = this.setCGO(value); +if (this.cgoMesh.isValid) { +this.scale(this.cgoMesh, this.newScale); +this.cgoMesh.initialize(1073741964, null, null); +this.cgoMesh.title = this.title; +this.cgoMesh.visible = true; +}this.clean(); +return; +}if (propertyName === "deleteModelAtoms") { +this.deleteModels(((value)[2])[0]); +return; +}this.setPropertySuper(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "deleteModels", +function(modelIndex){ +for (var i = this.meshCount; --i >= 0; ) { +var m = this.meshes[i]; +if (m == null) continue; +var deleteMesh = (m.modelIndex == modelIndex); +if (deleteMesh) { +this.meshCount--; +this.deleteMeshElement(i); +} else if (this.meshes[i].modelIndex > modelIndex) { +this.meshes[i].modelIndex--; +}} +this.resetObjects(); +}, "~N"); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +if (property === "command") return this.getCommand(this.cgoMesh); +return this.getPropMC(property, index); +}, "~S,~N"); +Clazz.overrideMethod(c$, "getPropertyData", +function(property, data){ +if (property === "data") return J.shapecgo.CGOMesh.getData(data); +return this.getPropDataMC(property, data); +}, "~S,~A"); +Clazz.defineMethod(c$, "deleteMeshElement", +function(i){ +if (this.meshes[i] === this.currentMesh) this.currentMesh = this.cgoMesh = null; +this.meshes = this.cmeshes = JU.AU.deleteElements(this.meshes, i, 1); +}, "~N"); +Clazz.defineMethod(c$, "setPropertySuper", +function(propertyName, value, bs){ +this.currentMesh = this.cgoMesh; +this.setPropMC(propertyName, value, bs); +this.cgoMesh = this.currentMesh; +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "clean", +function(){ +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i] == null || this.cmeshes[i].cmds == null || this.cmeshes[i].cmds.size() == 0) this.deleteMeshI(i); + +}); +Clazz.defineMethod(c$, "setCGO", +function(data){ +if (this.cgoMesh == null) this.allocMesh(null, null); +this.cgoMesh.clear("cgo"); +return this.cgoMesh.set(data); +}, "JU.Lst"); +Clazz.defineMethod(c$, "scale", +function(mesh, newScale){ +}, "J.shape.Mesh,~N"); +Clazz.overrideMethod(c$, "getShapeDetail", +function(){ +var V = new JU.Lst(); +for (var i = 0; i < this.meshCount; i++) { +var mesh = this.cmeshes[i]; +var info = new java.util.Hashtable(); +info.put("visible", mesh.visible ? Boolean.TRUE : Boolean.FALSE); +info.put("ID", (mesh.thisID == null ? "" : mesh.thisID)); +info.put("command", this.getCommand(mesh)); +V.addLast(info); +} +return V; +}); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +var sb = new JU.SB(); +var modelCount = this.ms.mc; +for (var i = 0; i < this.meshCount; i++) { +var mesh = this.cmeshes[i]; +if (mesh == null || mesh.cmds == null || mesh.modelIndex >= modelCount) continue; +if (sb.length() == 0) { +sb.append("\n"); +J.shape.Shape.appendCmd(sb, this.myType + " delete"); +}sb.append(this.getCommand2(mesh, modelCount)); +if (!mesh.visible) sb.append(" " + this.myType + " ID " + JU.PT.esc(mesh.thisID) + " off;\n"); +} +return sb.toString(); +}); +Clazz.defineMethod(c$, "getCommand", +function(mesh){ +if (mesh != null) return this.getCommand2(mesh, mesh.modelIndex); +var sb = new JU.SB(); +var key = (this.explicitID && this.previousMeshID != null && JU.PT.isWild(this.previousMeshID) ? this.previousMeshID : null); +var list = this.getMeshList(key, false); +for (var i = list.size(); --i >= 0; ) { +var m = list.get(i); +sb.append(this.getCommand2(m, m.modelIndex)); +} +return sb.toString(); +}, "J.shape.Mesh"); +Clazz.defineMethod(c$, "getCommand2", +function(mesh, modelCount){ +var cmesh = mesh; +var str = new JU.SB(); +var iModel = mesh.modelIndex; +str.append(" CGO ID ").append(JU.PT.esc(mesh.thisID)); +if (iModel >= -1 && modelCount > 1) str.append(" modelIndex " + iModel); +str.append(" ["); +var n = cmesh.cmds.size(); +for (var i = 0; i < n; i++) str.append(" " + cmesh.cmds.get(i)); + +str.append(" ];\n"); +J.shape.Shape.appendCmd(str, cmesh.getState("cgo")); +if (cmesh.useColix) J.shape.Shape.appendCmd(str, J.shape.Shape.getColorCommandUnk("cgo", cmesh.colix, this.translucentAllowed)); +return str.toString(); +}, "J.shape.Mesh,~N"); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +for (var i = 0; i < this.meshCount; i++) { +var m = this.cmeshes[i]; +if (m != null) m.visibilityFlags = (m.isValid && m.visible && (m.modelIndex < 0 || bsModels.get(m.modelIndex)) ? this.vf : 0); +} +}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapecgo/CGOMesh.js b/config/plugins/visualizations/jmol/static/j2s/J/shapecgo/CGOMesh.js new file mode 100755 index 000000000000..7f65be1b8f71 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapecgo/CGOMesh.js @@ -0,0 +1,231 @@ +Clazz.declarePackage("J.shapecgo"); +Clazz.load(["J.shapespecial.DrawMesh", "JU.Lst"], "J.shapecgo.CGOMesh", ["java.util.Hashtable", "JU.BS", "$.CU", "$.PT", "JU.C", "$.Logger", "$.Normix"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cmds = null; +this.nList = null; +this.cList = null; +Clazz.instantialize(this, arguments);}, J.shapecgo, "CGOMesh", J.shapespecial.DrawMesh); +Clazz.prepareFields (c$, function(){ +this.nList = new JU.Lst(); +this.cList = new JU.Lst(); +}); +c$.getSize = Clazz.defineMethod(c$, "getSize", +function(i, is2D){ +switch (i) { +case -103: +return 13; +case -102: +return 15; +case -108: +case -109: +case -110: +return 2; +case -101: +case -100: +case -107: +return 1; +case -105: +case -106: +case -111: +case -104: +return 0; +default: +return (i >= 0 && i < J.shapecgo.CGOMesh.sizes.length ? (is2D ? J.shapecgo.CGOMesh.sizes2D : J.shapecgo.CGOMesh.sizes)[i] : -1); +} +}, "~N,~B"); +c$.getKeyMap = Clazz.defineMethod(c$, "getKeyMap", +function(){ +var keyMap = new java.util.Hashtable(); +var tokens = JU.PT.getTokens("BEGIN:2 END:3 STOP:0 POINT:0 POINTS:0 LINES:1 LINE_LOOP:2 LINE_STRIP:3 TRIANGLES:4 TRIANGLE_STRIP:5 TRIANGLE_FAN:6 LINE:1 VERTEX:4 NORMAL:5 COLOR:6 LINEWIDTH:10 SAUSAGE:14 DIAMETER:-100 SCREEN:-101 UVMAP:-102 PS:-103 NEWPATH:-104 CLOSEPATH:-105 STROKE:-106 SETLINEWIDTH:-107 SCALE:-108 MOVETO:-109 LINETO:-110 SHOWPAGE:-111"); +for (var i = tokens.length; --i >= 0; ) { +var pt = tokens[i].indexOf(":"); +keyMap.put(tokens[i].substring(0, pt), Integer.$valueOf(Integer.parseInt(tokens[i].substring(pt + 1)))); +} +return keyMap; +}); +c$.getData = Clazz.defineMethod(c$, "getData", +function(d){ +if (J.shapecgo.CGOMesh.keyMap == null) J.shapecgo.CGOMesh.keyMap = J.shapecgo.CGOMesh.getKeyMap(); +var st = d[0]; +var ai = d[1]; +var data = d[2]; +var vwr = d[3]; +var i = ai[0]; +var slen = ai[1]; +var tok = st[i].tok; +i = (tok == 268437504 ? i + 1 : i + 2); +if (i >= slen) return false; +var s = st[i].value.toString().toUpperCase(); +var type = ";PS;BEGIN;SCREEN;UVMAP;".indexOf(";" + s + ";"); +i = J.shapecgo.CGOMesh.addItems(i, st, slen, data, vwr); +if (type == 0) { +if (i + 5 >= slen || st[i + 1].tok != 134221834) return false; +if (!J.shapecgo.CGOMesh.parseEPSData(st[i + 3].value.toString(), data)) return false; +i += 5; +}ai[0] = i; +return true; +}, "~A"); +c$.parseEPSData = Clazz.defineMethod(c$, "parseEPSData", +function(eps, data){ +var pt = eps.indexOf("%%BoundingBox:"); +if (pt < 0) return false; +var stack = new JU.Lst(); +var next = Clazz.newIntArray(-1, [pt + 14]); +for (var i = 0; i < 4; i++) data.addLast(Float.$valueOf(JU.PT.parseFloatNext(eps, next))); + +pt = eps.indexOf("%%EndProlog"); +if (pt < 0) return false; +next[0] = pt + 11; +var len = eps.length; +while (true) { +var f = JU.PT.parseFloatChecked(eps, len, next, false); +if (next[0] >= len) break; +if (Float.isNaN(f)) { +var s = JU.PT.parseTokenChecked(eps, len, next); +if (s.startsWith("%%")) continue; +if (!J.shapecgo.CGOMesh.addKey(data, s)) return false; +if (stack.size() > 0) { +for (var k = 0, n = stack.size(); k < n; k++) data.addLast(stack.get(k)); + +stack.clear(); +}} else { +stack.addLast(Float.$valueOf(f)); +}} +return true; +}, "~S,JU.Lst"); +c$.addItems = Clazz.defineMethod(c$, "addItems", +function(i, st, slen, data, vwr){ +var tok; +var t; +for (var j = i; j < slen; j++) { +switch (tok = (t = st[j]).tok) { +case 268437505: +i = j; +j = slen; +continue; +case 2: +data.addLast(Float.$valueOf(t.intValue)); +break; +case 3: +data.addLast(t.value); +break; +case 8: +case 10: +var pt = (tok == 8 ? t.value : vwr.ms.getAtomSetCenter(t.value)); +data.addLast(Float.$valueOf(pt.x)); +data.addLast(Float.$valueOf(pt.y)); +data.addLast(Float.$valueOf(pt.z)); +break; +default: +if (!J.shapecgo.CGOMesh.addKey(data, st[j].value.toString())) { +JU.Logger.error("CGO unknown: " + st[j].value); +i = j = slen; +break; +}break; +} +} +return i; +}, "~N,~A,~N,JU.Lst,JV.Viewer"); +c$.addKey = Clazz.defineMethod(c$, "addKey", +function(data, key){ +key = key.toUpperCase(); +var ii = J.shapecgo.CGOMesh.keyMap.get(key.toUpperCase()); +if (ii == null) return false; +data.addLast(ii); +return true; +}, "JU.Lst,~S"); +Clazz.defineMethod(c$, "clear", +function(meshType){ +Clazz.superCall(this, J.shapecgo.CGOMesh, "clear", [meshType]); +this.useColix = false; +}, "~S"); +Clazz.defineMethod(c$, "set", +function(list){ +this.width = 200; +this.diameter = 0; +this.useColix = true; +this.bsTemp = new JU.BS(); +try { +if (Clazz.instanceOf(list.get(0), Number)) { +this.cmds = list; +} else { +this.cmds = list.get(1); +if (this.cmds == null) this.cmds = list.get(0); +this.cmds = this.cmds.get(1); +}var n = this.cmds.size(); +var is2D = false; +for (var i = 0; i < n; i++) { +var type = (this.cmds.get(i)).intValue(); +var len = J.shapecgo.CGOMesh.getSize(type, is2D); +if (len < 0) { +JU.Logger.error("CGO unknown type: " + type); +return false; +}switch (type) { +case -101: +case -102: +is2D = true; +break; +case 1: +break; +case 0: +return true; +case 5: +this.addNormix(i + 1); +break; +case 6: +this.addColix(i + 1); +this.useColix = false; +break; +case 14: +this.addColix(i + 8); +this.addColix(i + 11); +break; +case 8: +this.addNormix(i + 10); +this.addNormix(i + 13); +this.addNormix(i + 16); +this.addColix(i + 19); +this.addColix(i + 22); +this.addColix(i + 25); +break; +} +i += len; +} +return true; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("CGOMesh error: " + e); +this.cmds = null; +return false; +} else { +throw e; +} +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "addColix", +function(i){ +this.getPoint(i, this.vTemp); +this.cList.addLast(Short.$valueOf(JU.C.getColix(JU.CU.colorPtToFFRGB(this.vTemp)))); +}, "~N"); +Clazz.defineMethod(c$, "addNormix", +function(i){ +this.getPoint(i, this.vTemp); +this.nList.addLast(Short.$valueOf(JU.Normix.get2SidedNormix(this.vTemp, this.bsTemp))); +}, "~N"); +Clazz.defineMethod(c$, "getPoint", +function(i, pt){ +pt.set(this.getFloat(i++), this.getFloat(i++), this.getFloat(i)); +}, "~N,JU.T3"); +Clazz.defineMethod(c$, "getInt", +function(i){ +return (this.cmds.get(i)).intValue(); +}, "~N"); +Clazz.defineMethod(c$, "getFloat", +function(i){ +return (this.cmds.get(i)).floatValue(); +}, "~N"); +c$.sizes = Clazz.newIntArray(-1, [0, 8, 1, 0, 3, 3, 3, 4, 27, 13, 1, 1, 1, 1, 13, 15, 1, 35, 13, 3, 2, 3, 9, 1, 2, 1, 14, 16, 1, 2]); +c$.sizes2D = Clazz.newIntArray(-1, [0, 6, 1, 0, 2, 3, 3, 4, 24, 13, 1, 1, 1, 1, 11, 15, 1, 35, 13, 3, 2, 3, 9, 1, 2, 1, 14, 16, 1, 2]); +c$.keyMap = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dipole.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dipole.js new file mode 100755 index 000000000000..7babdc8db349 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dipole.js @@ -0,0 +1,168 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(null, "J.shapespecial.Dipole", ["JU.P3", "$.SB", "$.V3", "JU.C", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.thisID = ""; +this.mad = 0; +this.colix = 0; +this.type = 0; +this.origin = null; +this.center = null; +this.vector = null; +this.dipoleInfo = ""; +this.dipoleValue = 0; +this.isUserValue = false; +this.offsetSide = 0; +this.offsetAngstroms = 0; +this.offsetPt = null; +this.offsetPercent = 0; +this.visibilityFlags = 0; +this.modelIndex = 0; +this.visible = false; +this.noCross = false; +this.haveAtoms = false; +this.isValid = false; +this.atoms = null; +this.coords = null; +this.bond = null; +this.bsMolecule = null; +this.lstDipoles = null; +Clazz.instantialize(this, arguments);}, J.shapespecial, "Dipole", null); +Clazz.prepareFields (c$, function(){ +this.atoms = new Array(2); +this.coords = new Array(2); +}); +Clazz.defineMethod(c$, "init", +function(modelIndex, thisID, dipoleInfo, colix, mad, visible){ +this.modelIndex = modelIndex; +this.thisID = thisID; +this.dipoleInfo = dipoleInfo; +this.colix = colix; +this.mad = mad; +this.visible = visible; +this.type = 0; +return this; +}, "~N,~S,~S,~N,~N,~B"); +Clazz.defineMethod(c$, "setTranslucent", +function(isTranslucent, translucentLevel){ +this.colix = JU.C.getColixTranslucent3(this.colix, isTranslucent, translucentLevel); +}, "~B,~N"); +Clazz.defineMethod(c$, "set", +function(d){ +this.thisID = d.thisID; +this.dipoleInfo = d.dipoleInfo; +this.dipoleValue = d.dipoleValue; +this.mad = d.mad; +this.lstDipoles = d.lstDipoles; +if (this.lstDipoles != null) this.isValid = true; +this.offsetAngstroms = d.offsetAngstroms; +this.offsetPercent = d.offsetPercent; +this.offsetSide = d.offsetSide; +this.vector = JU.V3.newV(d.vector); +this.origin = JU.P3.newP(d.origin); +if (d.offsetPt != null) { +this.origin.add(d.offsetPt); +this.offsetPt = JU.P3.newP(d.offsetPt); +}this.bsMolecule = d.bsMolecule; +this.haveAtoms = (d.atoms[0] != null); +if (this.haveAtoms) { +this.atoms[0] = d.atoms[0]; +this.atoms[1] = d.atoms[1]; +this.centerDipole(); +} else { +this.center = null; +}}, "J.shapespecial.Dipole"); +Clazz.defineMethod(c$, "set2", +function(pt1, pt2){ +this.coords[0] = JU.P3.newP(pt1); +this.coords[1] = JU.P3.newP(pt2); +this.isValid = (this.coords[0].distance(this.coords[1]) > 0.1); +if (this.dipoleValue < 0) { +this.origin = JU.P3.newP(pt2); +this.vector = JU.V3.newV(pt1); +this.dipoleValue = -this.dipoleValue; +} else { +this.origin = JU.P3.newP(pt1); +this.vector = JU.V3.newV(pt2); +}this.dipoleInfo = "" + this.origin + this.vector; +this.vector.sub(this.origin); +if (this.dipoleValue == 0) this.dipoleValue = this.vector.length(); + else this.vector.scale(this.dipoleValue / this.vector.length()); +this.type = 1; +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "setValue", +function(value){ +var d = this.dipoleValue; +this.dipoleValue = value; +if (value == 0) this.isValid = false; +if (this.vector == null) return; +this.vector.scale(this.dipoleValue / this.vector.length()); +if (d * this.dipoleValue < 0) this.origin.sub(this.vector); +}, "~N"); +Clazz.defineMethod(c$, "set2Value", +function(pt1, pt2, value){ +this.dipoleValue = value; +this.atoms[0] = null; +this.set2(pt1, pt2); +}, "JU.P3,JU.P3,~N"); +Clazz.defineMethod(c$, "setPtVector", +function(pt1, dipole){ +this.setValue(dipole.length()); +var pt2 = JU.P3.newP(pt1); +pt2.add(dipole); +this.set2(pt1, pt2); +this.type = 5; +}, "JU.P3,JU.V3"); +Clazz.defineMethod(c$, "set2AtomValue", +function(atom1, atom2, value){ +this.setValue(value); +this.set2(atom1, atom2); +this.offsetSide = 0.4; +this.mad = 10; +this.atoms[0] = atom1; +this.atoms[1] = atom2; +this.haveAtoms = true; +this.centerDipole(); +}, "JM.Atom,JM.Atom,~N"); +Clazz.defineMethod(c$, "centerDipole", +function(){ +this.isValid = (this.atoms[0] !== this.atoms[1] && this.dipoleValue != 0); +if (!this.isValid) return; +var f = this.atoms[0].distance(this.atoms[1]) / (2 * this.dipoleValue) - 0.5; +this.origin.scaleAdd2(f, this.vector, this.atoms[0]); +this.center = new JU.P3(); +this.center.scaleAdd2(0.5, this.vector, this.origin); +this.bond = this.atoms[0].getBond(this.atoms[1]); +this.type = (this.bond == null ? 2 : 3); +}); +Clazz.defineMethod(c$, "isBondType", +function(){ +return (this.type == 2 || this.type == 3); +}); +Clazz.defineMethod(c$, "getShapeState", +function(){ +if (!this.isValid) return ""; +var s = new JU.SB(); +s.append("dipole ID ").append(this.thisID); +if (this.lstDipoles != null) s.append(" all ").append(JU.Escape.eBS(this.bsMolecule)); + else if (this.haveAtoms) s.append(" ({").appendI(this.atoms[0].i).append("}) ({").appendI(this.atoms[1].i).append("})"); + else if (this.coords[0] == null) return ""; + else s.append(" ").append(JU.Escape.eP(this.coords[0])).append(" ").append(JU.Escape.eP(this.coords[1])); +if (this.isUserValue) s.append(" value ").appendF(this.dipoleValue); +if (this.mad != 10) s.append(" width ").appendF(this.mad / 1000); +if (this.offsetAngstroms != 0) s.append(" offset ").appendF(this.offsetAngstroms); + else if (this.offsetPercent != 0) s.append(" offset ").appendI(this.offsetPercent); +if (this.offsetSide != 0.4) s.append(" offsetSide ").appendF(this.offsetSide); +if (this.offsetPt != null) s.append(" offset ").append(JU.Escape.eP(this.offsetPt)); +if (this.noCross) s.append(" nocross"); +if (!this.visible) s.append(" off"); +s.append(";\n"); +return s.toString(); +}); +Clazz.defineMethod(c$, "setOffsetPt", +function(pt){ +if (this.offsetPt != null) this.origin.sub(this.offsetPt); +this.offsetPt = pt; +this.origin.add(pt); +}, "JU.P3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dipoles.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dipoles.js new file mode 100755 index 000000000000..4716702022c0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dipoles.js @@ -0,0 +1,499 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["J.shape.Shape", "JU.P3"], "J.shapespecial.Dipoles", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "$.SB", "$.V3", "JS.T", "J.shapespecial.Dipole", "JU.C", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dipoleCount = 0; +this.dipoles = null; +this.currentDipole = null; +this.tempDipole = null; +this.startCoord = null; +this.endCoord = null; +this.dipoleValue = 0; +this.isUserValue = false; +this.isBond = false; +this.iHaveTwoEnds = false; +this.atomIndex1 = 0; +this.atomIndex2 = 0; +this.colix = 0; +this.calculatedDipole = null; +this.wildID = null; +this.mad = 0; +Clazz.instantialize(this, arguments);}, J.shapespecial, "Dipoles", J.shape.Shape); +Clazz.prepareFields (c$, function(){ +this.dipoles = new Array(4); +this.startCoord = new JU.P3(); +this.endCoord = new JU.P3(); +}); +Clazz.overrideMethod(c$, "initShape", +function(){ +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("init" === propertyName) { +this.tempDipole = new J.shapespecial.Dipole(); +this.tempDipole.dipoleValue = 1; +this.tempDipole.mad = 10; +this.atomIndex1 = -1; +this.tempDipole.modelIndex = -1; +this.dipoleValue = 0; +this.calculatedDipole = null; +this.mad = -1; +this.isUserValue = this.isBond = this.iHaveTwoEnds = false; +return; +}if ("calculate" === propertyName) { +try { +this.calculatedDipole = this.vwr.calculateMolecularDipole(value); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +JU.Logger.info("calculated molecular dipole = " + this.calculatedDipole + " " + (this.calculatedDipole == null ? "" : "" + this.calculatedDipole.length())); +return; +}if ("thisID" === propertyName) { +this.wildID = null; +var thisID = value; +if (thisID == null || JU.PT.isWild(thisID)) { +this.currentDipole = null; +if (thisID != null) this.wildID = thisID.toUpperCase(); +return; +}this.currentDipole = this.findDipole(thisID); +if (this.currentDipole == null) this.currentDipole = this.allocDipole(thisID, ""); +this.tempDipole = this.currentDipole; +if (thisID.equals("molecular")) this.getMolecular(null); +return; +}if ("bonds" === propertyName) { +this.isBond = true; +this.currentDipole = null; +for (var i = this.dipoleCount; --i >= 0; ) if (this.isBondDipole(i)) return; + +this.getBondDipoles(); +return; +}if ("all" === propertyName) { +this.tempDipole.lstDipoles = new JU.Lst(); +return; +}if ("on" === propertyName) { +this.setPropertyTok(1073742335, this.isBond, 0, 0); +return; +}if ("off" === propertyName) { +this.setPropertyTok(1073742334, this.isBond, 0, 0); +return; +}if ("delete" === propertyName) { +if (this.wildID == null && this.currentDipole == null) { +this.clear(false); +return; +}this.setPropertyTok(12291, this.isBond, 0, 0); +return; +}if ("width" === propertyName) { +this.mad = this.tempDipole.mad = Clazz.floatToShort((value).floatValue() * 1000); +if (this.currentDipole == null) this.setPropertyTok(659488, this.isBond, this.mad, 0); +return; +}if ("offset" === propertyName) { +var offset = this.tempDipole.offsetAngstroms = (value).floatValue(); +if (this.currentDipole == null) this.setPropertyTok(1611272194, this.isBond, 0, offset); +return; +}if ("offsetPt" === propertyName) { +this.tempDipole.offsetPt = value; +if (this.currentDipole != null) { +this.currentDipole.setOffsetPt(this.tempDipole.offsetPt); +}return; +}if ("offsetPercent" === propertyName) { +var offsetPercent = this.tempDipole.offsetPercent = (value).intValue(); +if (this.tempDipole.dipoleValue != 0) this.tempDipole.offsetAngstroms = offsetPercent / 100 * this.tempDipole.dipoleValue; +if (this.currentDipole == null) this.setPropertyTok(268441090, this.isBond, 0, offsetPercent / 100); +return; +}if ("offsetSide" === propertyName) { +var offsetSide = (value).floatValue(); +this.setPropertyTok(2097178, this.isBond, 0, offsetSide); +return; +}if ("cross" === propertyName) { +this.setPropertyTok(1275069442, this.isBond, ((value).booleanValue() ? 1 : 0), 0); +return; +}if ("color" === propertyName) { +this.colix = JU.C.getColixO(value); +if (this.isBond) { +this.setColixDipole(this.colix, 1023, bs); +} else if (value != null) { +this.setPropertyTok(1765808134, false, 0, 0); +}return; +}if ("translucency" === propertyName) { +this.setPropertyTok(603979967, this.isBond, (value.equals("translucent") ? 1 : 0), 0); +return; +}if ("clear" === propertyName) { +this.currentDipole = null; +this.clear(false); +}if ("clearBonds" === propertyName) { +this.clear(true); +}if ("startSet" === propertyName) { +var bsAtoms = value; +this.endCoord = null; +this.startCoord = this.ms.getAtomSetCenter(bsAtoms); +this.tempDipole.set2Value(this.startCoord, JU.P3.new3(0, 0, 0), this.dipoleValue); +if (bsAtoms.cardinality() == 1) this.atomIndex1 = bsAtoms.nextSetBit(0); +return; +}if ("atomBitset" === propertyName) { +var atomset = value; +switch (atomset.cardinality()) { +case 0: +return; +case 1: +break; +case 2: +this.atomIndex1 = atomset.nextSetBit(0); +this.startCoord = this.ms.at[this.atomIndex1]; +atomset.clear(this.atomIndex1); +break; +default: +this.getMolecular(atomset); +return; +} +propertyName = "endSet"; +}if ("endSet" === propertyName) { +this.iHaveTwoEnds = true; +var atomset = value; +if (this.atomIndex1 >= 0 && atomset.cardinality() == 1) { +this.atomIndex2 = atomset.nextSetBit(0); +this.tempDipole.set2AtomValue(this.ms.at[this.atomIndex1], this.ms.at[this.atomIndex2], 1); +this.currentDipole = this.findDipoleFor(this.tempDipole.thisID, this.tempDipole.dipoleInfo); +this.tempDipole.thisID = this.currentDipole.thisID; +if (this.isSameAtoms(this.currentDipole, this.tempDipole.dipoleInfo)) { +this.tempDipole = this.currentDipole; +if (this.dipoleValue > 0) this.tempDipole.dipoleValue = this.dipoleValue; +if (this.mad > 0) this.tempDipole.mad = this.mad; +}} else { +this.tempDipole.set2Value(this.startCoord, this.ms.getAtomSetCenter(atomset), this.dipoleValue); +}return; +}if ("startCoord" === propertyName) { +this.startCoord.setT(value); +this.tempDipole.set2Value(this.startCoord, JU.P3.new3(0, 0, 0), this.dipoleValue); +return; +}if ("endCoord" === propertyName) { +this.iHaveTwoEnds = true; +this.endCoord.setT(value); +this.tempDipole.set2Value(this.startCoord, this.endCoord, this.dipoleValue); +this.dumpDipoles("endCoord"); +return; +}if ("value" === propertyName) { +this.dipoleValue = (value).floatValue(); +this.isUserValue = true; +this.tempDipole.setValue(this.dipoleValue); +if (this.tempDipole.offsetPercent != 0) this.tempDipole.offsetAngstroms = this.tempDipole.offsetPercent / 100 * this.tempDipole.dipoleValue; +return; +}if ("set" === propertyName) { +if (this.isBond || !this.iHaveTwoEnds && this.tempDipole.bsMolecule == null) return; +this.setDipole(); +this.setModelIndex(); +return; +}if (propertyName === "deleteModelAtoms") { +var modelIndex = ((value)[2])[0]; +for (var i = this.dipoleCount; --i >= 0; ) if (this.dipoles[i].modelIndex > modelIndex) { +this.dipoles[i].modelIndex--; +} else if (this.dipoles[i].modelIndex == modelIndex) { +if (this.dipoles[i] === this.currentDipole) this.currentDipole = null; +this.dipoles = JU.AU.deleteElements(this.dipoles, i, 1); +this.dipoleCount--; +} +this.currentDipole = null; +return; +}}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "getMolecular", +function(bsMolecule){ +var v = (bsMolecule == null ? this.calculatedDipole : null); +if (v == null && bsMolecule == null) { +v = this.vwr.getModelDipole(); +JU.Logger.info("file molecular dipole = " + v + " " + (v != null ? "" + v.length() : "")); +}if (v == null) try { +this.calculatedDipole = v = this.vwr.calculateMolecularDipole(bsMolecule); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (v == null) { +JU.Logger.warn("No molecular dipole found for this model; setting to {0 0 0}"); +v = new JU.V3(); +}this.tempDipole.bsMolecule = bsMolecule; +this.tempDipole.setPtVector(JU.P3.new3(0, 0, 0), JU.V3.new3(-v.x, -v.y, -v.z)); +if (this.tempDipole.lstDipoles != null) { +this.getAllMolecularDipoles(bsMolecule); +}this.tempDipole.type = 4; +if (this.currentDipole == null || this.currentDipole.thisID == null || bsMolecule == null) this.tempDipole.thisID = "molecular"; +this.setDipole(); +}, "JU.BS"); +Clazz.defineMethod(c$, "getAllMolecularDipoles", +function(bsAtoms){ +var mols = this.ms.getMolecules(); +for (var i = mols.length; --i >= 0; ) { +var m = mols[i]; +if (m.atomList.intersects(bsAtoms)) { +var v = null; +try { +v = this.vwr.calculateMolecularDipole(m.atomList); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (v == null) continue; +var center = this.ms.getAtomSetCenter(m.atomList); +this.tempDipole.lstDipoles.addLast( Clazz.newArray(-1, [v, center, m.atomList])); +}} +}, "JU.BS"); +Clazz.defineMethod(c$, "setPropertyTok", +function(tok, bondOnly, iValue, fValue){ +if (this.currentDipole != null) this.setPropertyFor(tok, this.currentDipole, iValue, fValue); + else { +for (var i = this.dipoleCount; --i >= 0; ) if (!bondOnly || this.isBondDipole(i)) if (this.wildID == null || JU.PT.isMatch(this.dipoles[i].thisID.toUpperCase(), this.wildID, true, true)) this.setPropertyFor(tok, this.dipoles[i], iValue, fValue); + +}}, "~N,~B,~N,~N"); +Clazz.defineMethod(c$, "setPropertyFor", +function(tok, dipole, iValue, fValue){ +switch (tok) { +case 1073742335: +dipole.visible = true; +return; +case 1073742334: +dipole.visible = false; +return; +case 12291: +this.deleteDipole(dipole); +return; +case 659488: +dipole.mad = this.tempDipole.mad = iValue; +return; +case 1611272194: +dipole.offsetAngstroms = fValue; +return; +case 268441090: +dipole.offsetAngstroms = fValue * dipole.dipoleValue; +return; +case 2097178: +dipole.offsetSide = fValue; +return; +case 1275069442: +dipole.noCross = (iValue == 0); +return; +case 1765808134: +dipole.colix = this.colix; +return; +case 603979967: +dipole.setTranslucent(iValue == 1, this.translucentLevel); +return; +} +JU.Logger.error("Unkown dipole property! " + JS.T.nameOf(tok)); +}, "~N,J.shapespecial.Dipole,~N,~N"); +Clazz.overrideMethod(c$, "getPropertyData", +function(property, data){ +if (property === "getNames") { +}if (property === "checkID") { +var key = (data[0]).toUpperCase(); +var isWild = JU.PT.isWild(key); +for (var i = this.dipoleCount; --i >= 0; ) { +var id = this.dipoles[i].thisID; +if (id.equalsIgnoreCase(key) || isWild && JU.PT.isMatch(id.toUpperCase(), key, true, true)) { +data[1] = id; +return true; +}} +return false; +}return this.getPropShape(property, data); +}, "~S,~A"); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +if (property.equals("list")) { +return this.getShapeState(); +}return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "getBondDipoles", +function(){ +var partialCharges = this.ms.getPartialCharges(); +if (partialCharges == null) return; +this.clear(true); +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if (!bond.isCovalent()) continue; +var c1 = partialCharges[bond.atom1.i]; +var c2 = partialCharges[bond.atom2.i]; +if (c1 != c2) this.setDipoleAtoms(bond.atom1, bond.atom2, c1, c2); +} +}); +Clazz.defineMethod(c$, "isBondDipole", +function(i){ +if (i >= this.dipoles.length || this.dipoles[i] == null) return false; +return (this.dipoles[i].isBondType()); +}, "~N"); +Clazz.defineMethod(c$, "setColixDipole", +function(colix, bondTypeMask, bs){ +if (colix == 2) return; +var iter = this.ms.getBondIteratorForType(bondTypeMask, bs); +while (iter.hasNext()) { +var d = this.findBondDipole(iter.next()); +if (d != null) d.colix = colix; +} +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "setDipole", +function(){ +if (this.currentDipole == null) this.currentDipole = this.allocDipole("", ""); +this.currentDipole.set(this.tempDipole); +this.currentDipole.isUserValue = this.isUserValue; +this.currentDipole.modelIndex = this.vwr.am.cmi; +}); +Clazz.defineMethod(c$, "setDipoleAtoms", +function(atom1, atom2, c1, c2){ +var dipole = this.findAtomDipole(atom1, atom2, true); +var value = (c1 - c2) / 2 * atom1.distance(atom2) / 0.208194; +if (value < 0) { +dipole.set2AtomValue(atom2, atom1, -value); +} else { +dipole.set2AtomValue(atom1, atom2, value); +}dipole.type = 3; +dipole.modelIndex = atom1.mi; +}, "JM.Atom,JM.Atom,~N,~N"); +Clazz.defineMethod(c$, "getDipoleIndexFor", +function(dipoleInfo, thisID){ +if (dipoleInfo != null && dipoleInfo.length > 0) for (var i = this.dipoleCount; --i >= 0; ) if (this.isSameAtoms(this.dipoles[i], dipoleInfo)) return i; + +return this.getIndexFromName(thisID); +}, "~S,~S"); +Clazz.defineMethod(c$, "isSameAtoms", +function(dipole, dipoleInfo){ +return (dipole != null && dipole.isBondType() && (dipole.dipoleInfo + dipole.dipoleInfo).indexOf(dipoleInfo) >= 0); +}, "J.shapespecial.Dipole,~S"); +Clazz.defineMethod(c$, "getDipoleIndex", +function(atomIndex1, atomIndex2){ +for (var i = this.dipoleCount; --i >= 0; ) { +if (this.dipoles[i] != null && this.dipoles[i].atoms[0] != null && this.dipoles[i].atoms[1] != null && (this.dipoles[i].atoms[0].i == atomIndex1 && this.dipoles[i].atoms[1].i == atomIndex2 || this.dipoles[i].atoms[1].i == atomIndex1 && this.dipoles[i].atoms[0].i == atomIndex2)) return i; +} +return -1; +}, "~N,~N"); +Clazz.defineMethod(c$, "deleteDipole", +function(dipole){ +if (dipole == null) return; +if (this.currentDipole === dipole) this.currentDipole = null; +var i; +for (i = this.dipoleCount; this.dipoles[--i] !== dipole; ) { +} +if (i < 0) return; +for (var j = i + 1; j < this.dipoleCount; ++j) this.dipoles[j - 1] = this.dipoles[j]; + +this.dipoles[--this.dipoleCount] = null; +}, "J.shapespecial.Dipole"); +Clazz.defineMethod(c$, "findDipole", +function(thisID){ +var dipoleIndex = this.getIndexFromName(thisID); +if (dipoleIndex >= 0) { +return this.dipoles[dipoleIndex]; +}return null; +}, "~S"); +Clazz.defineMethod(c$, "findAtomDipole", +function(atom1, atom2, doAllocate){ +var dipoleIndex = this.getDipoleIndex(atom1.i, atom2.i); +if (dipoleIndex >= 0) { +return this.dipoles[dipoleIndex]; +}return (doAllocate ? this.allocDipole("", "") : null); +}, "JM.Atom,JM.Atom,~B"); +Clazz.defineMethod(c$, "findBondDipole", +function(bond){ +var d = this.findAtomDipole(bond.atom1, bond.atom2, false); +return (d == null || d.atoms[0] == null ? null : d); +}, "JM.Bond"); +Clazz.defineMethod(c$, "findDipoleFor", +function(thisID, dipoleInfo){ +var dipoleIndex = this.getDipoleIndexFor(dipoleInfo, thisID); +if (dipoleIndex >= 0) { +if (thisID.length > 0) this.dipoles[dipoleIndex].thisID = thisID; +return this.dipoles[dipoleIndex]; +}return this.allocDipole(thisID, dipoleInfo); +}, "~S,~S"); +Clazz.defineMethod(c$, "allocDipole", +function(thisID, dipoleInfo){ +this.dipoles = JU.AU.ensureLength(this.dipoles, this.dipoleCount + 1); +if (thisID == null || thisID.length == 0) thisID = "dipole" + (this.dipoleCount + 1); +var d = this.dipoles[this.dipoleCount++] = new J.shapespecial.Dipole().init(this.vwr.am.cmi, thisID, dipoleInfo, this.colix, 10, true); +return d; +}, "~S,~S"); +Clazz.defineMethod(c$, "dumpDipoles", +function(msg){ +for (var i = this.dipoleCount; --i >= 0; ) { +var dipole = this.dipoles[i]; +JU.Logger.info("\n\n" + msg + " dump dipole " + i + " " + dipole + " " + dipole.thisID + " " + dipole.dipoleInfo + " " + dipole.visibilityFlags + " mad=" + dipole.mad + " vis=" + dipole.visible + "\n orig" + dipole.origin + " " + " vect" + dipole.vector + " val=" + dipole.dipoleValue); +} +if (this.currentDipole != null) JU.Logger.info(" current = " + this.currentDipole + this.currentDipole.origin); +if (this.tempDipole != null) JU.Logger.info(" temp = " + this.tempDipole + " " + this.tempDipole.origin); +}, "~S"); +Clazz.defineMethod(c$, "clear", +function(clearBondDipolesOnly){ +if (clearBondDipolesOnly) { +for (var i = this.dipoleCount; --i >= 0; ) if (this.isBondDipole(i)) this.deleteDipole(this.dipoles[i]); + +return; +}for (var i = this.dipoleCount; --i >= 0; ) if (!this.isBond || this.isBondDipole(i)) this.deleteDipole(this.dipoles[i]); + +}, "~B"); +Clazz.overrideMethod(c$, "getIndexFromName", +function(thisID){ +if (thisID == null) return -1; +for (var i = this.dipoleCount; --i >= 0; ) { +if (this.dipoles[i] != null && thisID.equals(this.dipoles[i].thisID)) return i; +} +return -1; +}, "~S"); +Clazz.overrideMethod(c$, "getShapeDetail", +function(){ +var V = new JU.Lst(); +var atomInfo; +var ptTemp = new JU.P3(); +for (var i = 0; i < this.dipoleCount; i++) { +var info = new java.util.Hashtable(); +var dipole = this.dipoles[i]; +info.put("ID", dipole.thisID); +info.put("vector", dipole.vector); +info.put("origin", dipole.origin); +if (dipole.bsMolecule != null) { +info.put("bsMolecule", dipole.bsMolecule); +} else if (dipole.atoms[0] != null) { +atomInfo = new java.util.Hashtable(); +this.ms.getAtomIdentityInfo(dipole.atoms[0].i, atomInfo, ptTemp); +var atoms = new JU.Lst(); +atoms.addLast(atomInfo); +atomInfo = new java.util.Hashtable(); +this.ms.getAtomIdentityInfo(dipole.atoms[1].i, atomInfo, ptTemp); +atoms.addLast(atomInfo); +info.put("atoms", atoms); +info.put("magnitude", Float.$valueOf(dipole.vector.length())); +}V.addLast(info); +} +return V; +}); +Clazz.defineMethod(c$, "setModelIndex", +function(){ +if (this.currentDipole == null) return; +this.currentDipole.visible = true; +this.currentDipole.modelIndex = this.vwr.am.cmi; +}); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +for (var i = this.dipoleCount; --i >= 0; ) { +var dipole = this.dipoles[i]; +dipole.visibilityFlags = ((dipole.modelIndex < 0 || bsModels.get(dipole.modelIndex)) && dipole.mad != 0 && dipole.visible && dipole.origin != null && dipole.vector != null && dipole.vector.length() != 0 && dipole.dipoleValue != 0 ? this.vf : 0); +} +}, "JU.BS"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +if (this.dipoleCount == 0) return ""; +var s = new JU.SB(); +var thisModel = -1; +var modelCount = this.ms.mc; +for (var i = 0; i < this.dipoleCount; i++) { +var dipole = this.dipoles[i]; +if (dipole.isValid) { +if (modelCount > 1 && dipole.modelIndex != thisModel) J.shape.Shape.appendCmd(s, "frame " + this.vwr.getModelNumberDotted(thisModel = dipole.modelIndex)); +s.append(dipole.getShapeState()); +J.shape.Shape.appendCmd(s, J.shape.Shape.getColorCommandUnk("dipole", dipole.colix, this.translucentAllowed)); +}} +return s.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dots.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dots.js new file mode 100755 index 000000000000..0ea6407366ca --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Dots.js @@ -0,0 +1,186 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["J.shape.AtomShape", "JU.BS", "J.atomdata.RadiusData"], "J.shapespecial.Dots", ["java.util.Hashtable", "JU.M3", "$.SB", "J.c.VDW", "J.geodesic.EnvelopeCalculation", "JU.BSUtil", "$.C", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ec = null; +this.isSurface = false; +this.bsOn = null; +this.bsSelected = null; +this.bsIgnore = null; +this.thisAtom = 0; +this.thisRadius = 0; +this.thisArgb = 0; +this.rdLast = null; +Clazz.instantialize(this, arguments);}, J.shapespecial, "Dots", J.shape.AtomShape); +Clazz.prepareFields (c$, function(){ +this.bsOn = new JU.BS(); +this.rdLast = new J.atomdata.RadiusData(null, 0, null, null); +}); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapespecial.Dots, "initShape", []); +this.translucentAllowed = false; +this.ec = new J.geodesic.EnvelopeCalculation().set(this.vwr, this.ms.ac, this.mads); +}); +Clazz.overrideMethod(c$, "getSize", +function(atomIndex){ +return (this.mads != null ? this.mads[atomIndex] * 2 : this.bsOn.get(atomIndex) ? Clazz.doubleToInt(Math.floor(this.ec.getRadius(atomIndex) * 2000)) : 0); +}, "~N"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("init" === propertyName) { +this.initialize(); +return; +}if ("translucency" === propertyName) { +if (!this.translucentAllowed) return; +}if ("ignore" === propertyName) { +this.bsIgnore = value; +return; +}if ("select" === propertyName) { +this.bsSelected = value; +return; +}if ("radius" === propertyName) { +this.thisRadius = (value).floatValue(); +if (this.thisRadius > 16) this.thisRadius = 16.1; +return; +}if ("colorRGB" === propertyName) { +this.thisArgb = (value).intValue(); +return; +}if ("atom" === propertyName) { +this.thisAtom = (value).intValue(); +if (this.thisAtom >= this.ms.at.length) return; +this.ms.at[this.thisAtom].setShapeVisibility(this.vf, true); +this.ec.allocDotsConvexMaps(this.ms.ac); +return; +}if ("dots" === propertyName) { +var atoms = this.ms.at; +if (this.thisAtom >= atoms.length) return; +this.isActive = true; +this.ec.setFromBits(this.thisAtom, value); +atoms[this.thisAtom].setShapeVisibility(this.vf, true); +var ac = this.ms.ac; +if (this.mads == null) { +this.ec.setMads(null); +this.mads = Clazz.newShortArray (ac, 0); +for (var i = 0; i < ac; i++) if (atoms[i] != null && atoms[i].isVisible(1 | this.vf)) try { +this.mads[i] = Clazz.floatToShort(this.ec.getAppropriateRadius(i) * 1000); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} + +this.ec.setMads(this.mads); +}this.mads[this.thisAtom] = Clazz.floatToShort(this.thisRadius * 1000); +if (this.colixes == null) this.checkColixLength(4, ac); +this.colixes[this.thisAtom] = JU.C.getColix(this.thisArgb); +this.bsOn.set(this.thisAtom); +return; +}if ("refreshTrajectories" === propertyName) { +bs = (value)[1]; +var m4 = (value)[2]; +if (m4 == null) return; +var m = new JU.M3(); +m4.getRotationScale(m); +this.ec.reCalculate(bs, m); +return; +}if (propertyName === "deleteModelAtoms") { +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +JU.BSUtil.deleteBits(this.bsOn, bs); +this.ec.deleteAtoms(firstAtomDeleted, nAtomsDeleted); +}this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "initialize", +function(){ +this.bsSelected = null; +this.bsIgnore = null; +this.isActive = false; +if (this.ec == null) this.ec = new J.geodesic.EnvelopeCalculation().set(this.vwr, this.ms.ac, this.mads); +}); +Clazz.overrideMethod(c$, "setSizeRD", +function(rd, bsSelected){ +if (rd == null) rd = new J.atomdata.RadiusData(null, 0, J.atomdata.RadiusData.EnumType.ABSOLUTE, null); +if (this.bsSelected != null) bsSelected = this.bsSelected; +var isVisible = true; +var setRadius = 3.4028235E38; +this.isActive = true; +switch (rd.factorType) { +case J.atomdata.RadiusData.EnumType.OFFSET: +break; +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +if (rd.value == 0) isVisible = false; +setRadius = rd.value; +default: +rd.valueExtended = (this.vwr.getBoolean(603979948) ? this.vwr.getFloat(570425394) : 0); +} +var maxRadius; +switch (rd.vdwType) { +case J.c.VDW.ADPMIN: +case J.c.VDW.ADPMAX: +case J.c.VDW.HYDRO: +case J.c.VDW.TEMP: +maxRadius = setRadius; +break; +case J.c.VDW.BONDING: +maxRadius = this.ms.getMaxVanderwaalsRadius() * 2; +break; +default: +maxRadius = this.ms.getMaxVanderwaalsRadius(); +} +var newSet = (this.rdLast.value != rd.value || this.rdLast.valueExtended != rd.valueExtended || this.rdLast.factorType !== rd.factorType || this.rdLast.vdwType !== rd.vdwType || this.ec.getDotsConvexMax() == 0); +if (isVisible) { +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) if (!this.bsOn.get(i)) { +this.bsOn.set(i); +newSet = true; +} +} else { +var isAll = (bsSelected == null); +var i0 = (isAll ? this.ms.ac - 1 : bsSelected.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) this.bsOn.setBitTo(i, false); + +}var atoms = this.ms.at; +for (var i = this.ms.ac; --i >= 0; ) if (atoms[i] != null) atoms[i].setShapeVisibility(this.vf, this.bsOn.get(i)); + +if (!isVisible) return; +if (newSet) { +this.mads = null; +this.ec.newSet(); +}var dotsConvexMaps = this.ec.getDotsConvexMaps(); +if (dotsConvexMaps != null) { +for (var i = this.ms.ac; --i >= 0; ) if (atoms[i] != null && this.bsOn.get(i)) { +dotsConvexMaps[i] = null; +} +}if (dotsConvexMaps == null && (this.colixes == null || this.colixes.length != this.ms.ac)) this.checkColixLength(4, this.ms.ac); +this.ec.calculate(rd, maxRadius, this.bsOn, this.bsIgnore, !this.vwr.getBoolean(603979830), this.vwr.getBoolean(603979829), this.isSurface, true); +this.rdLast = rd; +}, "J.atomdata.RadiusData,JU.BS"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +for (var i = this.ms.ac; --i >= 0; ) { +var atom = this.ms.at[i]; +if (atom != null && ((atom.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(i))) continue; +atom.setClickable(this.vf); +} +}); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +var dotsConvexMaps = this.ec.getDotsConvexMaps(); +if (dotsConvexMaps == null || this.ec.getDotsConvexMax() == 0) return ""; +var s = new JU.SB(); +var temp = new java.util.Hashtable(); +var ac = this.ms.ac; +var type = (this.isSurface ? "geoSurface " : "dots "); +for (var i = 0; i < ac; i++) { +if (!this.bsOn.get(i) || dotsConvexMaps[i] == null) continue; +if (this.bsColixSet != null && this.bsColixSet.get(i)) JU.BSUtil.setMapBitSet(temp, i, i, J.shape.Shape.getColorCommand(type, this.paletteIDs[i], this.colixes[i], this.translucentAllowed)); +var bs = dotsConvexMaps[i]; +if (!bs.isEmpty()) { +var r = this.ec.getAppropriateRadius(i); +J.shape.Shape.appendCmd(s, type + i + " radius " + r + " " + JU.Escape.eBS(bs)); +}} +return s.append(this.vwr.getCommands(temp, null, "select")).toString(); +}); +c$.MAX_LEVEL = 3; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Draw.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Draw.js new file mode 100755 index 000000000000..48de3fad2e92 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Draw.js @@ -0,0 +1,1261 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["java.lang.Enum", "J.shape.MeshCollection", "JU.P3i", "$.V3"], "J.shapespecial.Draw", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.Measure", "$.P3", "$.PT", "$.SB", "JS.SV", "J.shapespecial.DrawMesh", "JU.BSUtil", "$.C", "$.Escape", "$.Font", "$.Logger", "$.MeshSurface"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dmeshes = null; +this.thisMesh = null; +this.ptList = null; +this.offset = null; +this.nPoints = 0; +this.diameter = 0; +this.width = 0; +this.newScale = 0; +this.length = 0; +this.isCurve = false; +this.isArc = false; +this.isArrow = false; +this.isLine = false; +this.isVector = false; +this.isCircle = false; +this.isPerpendicular = false; +this.isCylinder = false; +this.isVertices = false; +this.isPlane = false; +this.isReversed = false; +this.isRotated45 = false; +this.isCrossed = false; +this.isValid = false; +this.noHead = false; +this.isBarb = false; +this.indicatedModelIndex = -1; +this.indicatedModelOnly = false; +this.modelInfo = null; +this.makePoints = false; +this.plane = null; +this.bsAllModels = null; +this.polygon = null; +this.vData = null; +this.intersectID = null; +this.lineData = null; +this.defaultFontId0 = -1; +this.defaultFontId = -1; +this.thisFontID = -1; +this.titleColor = null; +this.slabData = null; +this.vAB = null; +this.ptXY = null; +this.defaultFontSize = 16.0; +this.pm2 = null; +this.dmin22 = 0; +this.pmod2 = 0; +this.pickedVertex2 = 0; +this.pickedPoint2 = null; +Clazz.instantialize(this, arguments);}, J.shapespecial, "Draw", J.shape.MeshCollection); +Clazz.prepareFields (c$, function(){ +this.dmeshes = new Array(4); +this.offset = new JU.V3(); +this.vAB = new JU.V3(); +this.ptXY = new JU.P3i(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, J.shapespecial.Draw, []); +this.htObjects = new java.util.Hashtable(); +}); +Clazz.overrideMethod(c$, "allocMesh", +function(thisID, m){ +var index = this.meshCount++; +this.meshes = this.dmeshes = JU.AU.ensureLength(this.dmeshes, this.meshCount * 2); +this.currentMesh = this.thisMesh = this.dmeshes[index] = (m == null ? new J.shapespecial.DrawMesh(this.vwr, thisID, this.colix, index) : m); +this.currentMesh.color = this.color; +this.currentMesh.index = index; +if (thisID != null && thisID !== "+PREVIOUS_MESH+" && this.htObjects != null) this.htObjects.put(thisID.toUpperCase(), this.currentMesh); +}, "~S,J.shape.Mesh"); +Clazz.defineMethod(c$, "setPropertySuper", +function(propertyName, value, bs){ +this.currentMesh = this.thisMesh; +this.setPropMC(propertyName, value, bs); +this.thisMesh = this.currentMesh; +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.setMeshColor(); +this.myType = "draw"; +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("init" === propertyName) { +this.initDraw(); +this.setPropertySuper("init", value, bs); +return; +}if ("font" === propertyName) { +this.defaultFontId = (value == null ? -1 : (value).fid); +this.defaultFontSize = (value == null ? 16.0 : (value).fontSize); +return; +}if ("myfont" === propertyName) { +this.thisFontID = (value).fid; +if (this.thisMesh != null) { +this.thisMesh.fontID = this.thisFontID; +}return; +}if ("length" === propertyName) { +this.length = (value).floatValue(); +return; +}if ("fixed" === propertyName) { +this.isFixed = (value).booleanValue(); +return; +}if ("intersect" === propertyName) { +this.intersectID = value; +return; +}if ("slab" === propertyName) { +var meshIndex = this.getIndexFromName(value); +if (meshIndex < 0) { +return; +}var m = this.meshes[meshIndex]; +if (m.checkByteCount != 1) return; +var ms = new JU.MeshSurface(); +ms.vs = m.vs; +ms.vvs = Clazz.newFloatArray (m.vc, 0); +ms.vc = m.vc; +ms.pis = m.pis; +ms.pc = m.pc; +ms.dataOnly = true; +this.slabData = ms; +}if ("lineData" === propertyName) { +this.lineData = new JU.Lst(); +if (this.indicatedModelIndex < 0) this.indicatedModelIndex = this.vwr.am.cmi; +var fdata = value; +var n = Clazz.doubleToInt(fdata.length / 6); +for (var i = 0, pt = 0; i < n; i++) this.lineData.addLast( Clazz.newArray(-1, [JU.P3.new3(fdata[pt++], fdata[pt++], fdata[pt++]), JU.P3.new3(fdata[pt++], fdata[pt++], fdata[pt++])])); + +return; +}if ("modelIndex" === propertyName) { +this.indicatedModelIndex = (value).intValue(); +if (this.indicatedModelIndex < 0 || this.indicatedModelIndex >= this.ms.mc) return; +this.vData.addLast( Clazz.newArray(-1, [Integer.$valueOf(4), (this.modelInfo = Clazz.newIntArray(-1, [this.indicatedModelIndex, 0]))])); +if (this.thisMesh.thisID.startsWith("_!_")) this.indicatedModelOnly = true; +return; +}if ("planedef" === propertyName) { +this.plane = value; +if (this.intersectID != null || this.slabData != null) return; +if (this.isCircle || this.isArc) this.isPlane = true; +this.vData.addLast( Clazz.newArray(-1, [Integer.$valueOf(1), JU.P3.new3(NaN, NaN, NaN)])); +return; +}if ("perp" === propertyName) { +this.isPerpendicular = true; +return; +}if ("cylinder" === propertyName) { +this.isCylinder = true; +return; +}if ("plane" === propertyName) { +this.isPlane = true; +return; +}if ("curve" === propertyName) { +this.isCurve = true; +return; +}if ("arrow" === propertyName) { +this.isArrow = true; +return; +}if ("line" === propertyName) { +this.isLine = true; +this.isCurve = true; +return; +}if ("arc" === propertyName) { +this.isCurve = true; +this.isArc = true; +if (this.isArrow) { +this.isArrow = false; +this.isVector = true; +}return; +}if ("circle" === propertyName) { +this.isCircle = true; +return; +}if ("vector" === propertyName) { +this.isArrow = true; +this.isVector = true; +return; +}if ("vertices" === propertyName) { +this.isVertices = true; +return; +}if ("reverse" === propertyName) { +this.isReversed = true; +return; +}if ("nohead" === propertyName) { +this.noHead = true; +return; +}if ("isbarb" === propertyName) { +this.isBarb = true; +return; +}if ("rotate45" === propertyName) { +this.isRotated45 = true; +return; +}if ("crossed" === propertyName) { +this.isCrossed = true; +return; +}if ("points" === propertyName) { +this.newScale = (value).floatValue() / 100; +if (this.newScale == 0) this.newScale = 1; +return; +}if ("scale" === propertyName) { +this.newScale = (value).floatValue() / 100; +if (this.newScale == 0) this.newScale = 0.01; +if (this.thisMesh != null) { +this.scale(this.thisMesh, this.newScale); +this.thisMesh.initialize(1073741964, null, null); +}return; +}if ("diameter" === propertyName) { +this.diameter = (value).intValue(); +return; +}if ("width" === propertyName) { +this.width = (value).floatValue(); +return; +}if ("identifier" === propertyName) { +var thisID = value; +var meshIndex = this.getIndexFromName(thisID); +if (meshIndex >= 0) { +this.vData.addLast( Clazz.newArray(-1, [Integer.$valueOf(2), Clazz.newIntArray(-1, [meshIndex, this.isReversed ? 1 : 0, this.isVertices ? 1 : 0])])); +this.isReversed = this.isVertices = false; +} else { +JU.Logger.error("draw identifier " + value + " not found"); +this.isValid = false; +}return; +}if ("polygon" === propertyName) { +this.polygon = value; +if (this.polygon == null) this.polygon = new JU.Lst(); +return; +}if ("coord" === propertyName) { +this.vData.addLast( Clazz.newArray(-1, [Integer.$valueOf(1), value])); +if (this.indicatedModelIndex >= 0) this.modelInfo[1]++; +return; +}if ("offset" === propertyName) { +this.offset = JU.V3.newV(value); +if (this.thisMesh != null) this.thisMesh.offset(this.offset); +return; +}if ("atomSet" === propertyName) { +var bsAtoms = value; +if (bsAtoms.isEmpty()) return; +this.vData.addLast( Clazz.newArray(-1, [Integer.$valueOf(3), bsAtoms])); +if (this.isCircle && this.diameter == 0 && this.width == 0) this.width = this.ms.calcRotationRadiusBs(bsAtoms) * 2.0; +return; +}if ("coords" === propertyName) { +this.addPoints(1, value); +return; +}if ("modelBasedPoints" === propertyName) { +this.addPoints(5, value); +return; +}if ("hoverlabel" === propertyName) { +propertyName = "title"; +value = "" + value; +}if ("title" === propertyName) { +if (this.thisMesh != null) { +this.thisMesh.title = this.setTitle(value); +return; +}}if ("titlecolor" === propertyName) { +var c = (value); +this.titleColor = c; +if (this.thisMesh != null) { +this.thisMesh.titleColor = c; +}return; +}if ("set" === propertyName) { +if (this.thisMesh == null) { +this.allocMesh(null, null); +this.thisMesh.colix = this.colix; +this.thisMesh.color = this.color; +}this.thisMesh.isValid = (this.isValid ? this.setDrawing(value) : false); +if (this.thisMesh.isValid) { +if (this.thisMesh.vc > 2 && this.length != 3.4028235E38 && this.newScale == 1) this.newScale = this.length; +this.scale(this.thisMesh, this.newScale); +this.thisMesh.initialize(1073741964, null, null); +J.shapespecial.Draw.setAxes(this.thisMesh); +this.thisMesh.title = this.title; +this.thisMesh.titleColor = this.titleColor; +this.thisMesh.fontID = this.thisFontID; +this.thisMesh.visible = true; +}this.nPoints = -1; +this.vData = null; +this.lineData = null; +return; +}if (propertyName === "deleteModelAtoms") { +this.deleteModels(((value)[2])[0]); +return; +}this.setPropertySuper(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "deleteModels", +function(modelIndex){ +for (var i = this.meshCount; --i >= 0; ) { +var m = this.dmeshes[i]; +if (m == null) continue; +var deleteMesh = (m.modelIndex == modelIndex); +if (m.modelFlags != null) { +m.deleteAtoms(modelIndex); +deleteMesh = (m.modelFlags.length() == 0); +if (!deleteMesh) continue; +}if (deleteMesh) { +this.meshCount--; +this.deleteMeshElement(i); +} else if (this.meshes[i].modelIndex > modelIndex) { +this.meshes[i].modelIndex--; +}} +this.resetObjects(); +}, "~N"); +Clazz.defineMethod(c$, "setTitle", +function(value){ +if ((typeof(value)=='string')) { +var lines = value; +if (lines.startsWith("")) { +var s = lines.substring(7); +var i = s.indexOf(""); +if (i >= 0) { +this.thisMesh.hoverLabel = s.substring(0, i); +value = s.substring(i + 8); +} else { +this.thisMesh.hoverLabel = s; +value = ""; +}}}return Clazz.superCall(this, J.shapespecial.Draw, "setTitle", [value]); +}, "~O"); +Clazz.defineMethod(c$, "deleteMeshElement", +function(i){ +if (this.meshes[i] === this.currentMesh) this.currentMesh = this.thisMesh = null; +this.meshes = this.dmeshes = JU.AU.deleteElements(this.meshes, i, 1); +}, "~N"); +Clazz.defineMethod(c$, "initDraw", +function(){ +this.bsAllModels = null; +this.colix = 5; +this.color = 0xFFFFFFFF; +this.diameter = 0; +this.explicitID = false; +this.thisFontID = -1; +this.indicatedModelIndex = -1; +this.indicatedModelOnly = false; +this.intersectID = null; +this.isCurve = this.isArc = this.isArrow = this.isPlane = this.isCircle = this.isCylinder = this.isLine = false; +this.isFixed = this.isReversed = this.isRotated45 = this.isCrossed = this.noHead = this.isBarb = false; +this.isPerpendicular = this.isVertices = this.isVector = false; +this.isValid = true; +this.length = 3.4028235E38; +this.lineData = null; +this.newScale = 0; +this.offset = null; +this.plane = null; +this.polygon = null; +this.slabData = null; +this.titleColor = null; +this.vData = new JU.Lst(); +this.width = 0; +this.setPropertySuper("thisID", "+PREVIOUS_MESH+", null); +}); +Clazz.overrideMethod(c$, "getPropertyData", +function(property, data){ +if (property === "keys") { +var keys = (Clazz.instanceOf(data[1],"JU.Lst") ? data[1] : new JU.Lst()); +data[1] = keys; +keys.addLast("getSpinAxis"); +}if (property === "getCenter") { +var id = data[0]; +var index = (data[1]).intValue(); +var modelIndex = (data[2]).intValue(); +data[2] = this.getSpinCenter(id, index, modelIndex); +return (data[2] != null); +}if (property === "getSpinAxis") { +var id = data[0]; +var index = (data[1]).intValue(); +data[2] = this.getSpinAxis(id, index); +return (data[2] != null); +}return this.getPropDataMC(property, data); +}, "~S,~A"); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +var m = this.thisMesh; +if (index >= 0 && (index >= this.meshCount || (m = this.meshes[index]) == null)) return null; +if (property.equals("font")) { +if (this.defaultFontId < 0) { +this.setProperty("font", this.vwr.gdata.getFont3DFSS("SansSerif", "Plain", this.vwr.getFloat(570425355)), null); +this.defaultFontId0 = this.defaultFontId; +}return JU.Font.getFont3D(index < 0 || m.fontID < 0 ? this.defaultFontId : m.fontID); +}if (property === "command") return this.getCommand(m); +if (property === "type") return Integer.$valueOf(m == null ? J.shapespecial.Draw.EnumDrawType.NONE.id : m.drawType.id); +return this.getPropMC(property, index); +}, "~S,~N"); +Clazz.defineMethod(c$, "getSpinCenter", +function(axisID, vertexIndex, modelIndex){ +var id; +var pt = axisID.indexOf("["); +var pt2; +if (pt > 0) { +id = axisID.substring(0, pt); +if ((pt2 = axisID.lastIndexOf("]")) < pt) pt2 = axisID.length; +try { +vertexIndex = Integer.parseInt(axisID.substring(pt + 1, pt2)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} else { +id = axisID; +}var m = this.getMesh(id); +if (m == null || m.vs == null) return null; +if (vertexIndex == 2147483647) return JU.P3.new3(m.index + 1, this.meshCount, m.vc); +if (vertexIndex != -2147483648) vertexIndex = m.getVertexIndexFromNumber(vertexIndex); +return (vertexIndex >= 0 ? m.vs[vertexIndex] : m.ptCenters == null || modelIndex < 0 || modelIndex >= m.ptCenters.length ? m.ptCenter : m.ptCenters[modelIndex]); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "getSpinAxis", +function(axisID, modelIndex){ +var m = this.getMesh(axisID); +return (m == null || m.vs == null ? null : m.ptCenters == null || modelIndex < 0 ? m.axis : m.axes[modelIndex]); +}, "~S,~N"); +Clazz.defineMethod(c$, "setDrawing", +function(connections){ +if (this.thisMesh == null) this.allocMesh(null, null); +this.thisMesh.clear("draw"); +this.thisMesh.diameter = this.diameter; +this.thisMesh.width = this.width; +if (this.plane != null) { +if (this.intersectID != null) { +var vData = new JU.Lst(); +var data = Clazz.newArray(-1, [this.intersectID, this.plane, vData, null]); +this.vwr.shm.getShapePropertyData(24, "intersectPlane", data); +if (vData.size() > 0) { +this.indicatedModelIndex = (data[3]).intValue(); +this.lineData = vData; +}} else if (this.slabData != null) { +this.slabData.getMeshSlicer().getIntersection(0, this.plane, null, null, null, null, null, false, true, 134217750, false); +this.polygon = new JU.Lst(); +this.polygon.addLast(this.slabData.vs); +this.polygon.addLast(this.slabData.pis); +}}if (this.polygon == null && (this.lineData != null ? this.lineData.size() == 0 : (this.vData.size() == 0) == (connections == null)) || !this.isArrow && connections != null) return false; +var modelCount = this.ms.mc; +if (this.polygon != null || this.lineData != null || this.indicatedModelIndex < 0 && (this.isFixed || this.isArrow || this.isCurve || this.isCircle || this.isCylinder || modelCount == 1)) { +this.thisMesh.modelIndex = (this.lineData == null ? this.vwr.am.cmi : this.indicatedModelIndex); +this.thisMesh.isFixed = (this.isFixed || this.lineData == null && this.thisMesh.modelIndex < 0 && modelCount > 1); +if (this.isFixed && modelCount > 1) this.thisMesh.modelIndex = -1; + else if (this.lineData == null && this.thisMesh.modelIndex < 0) this.thisMesh.modelIndex = 0; +this.thisMesh.ptCenters = null; +this.thisMesh.modelFlags = null; +this.thisMesh.drawTypes = null; +this.thisMesh.drawVertexCounts = null; +this.thisMesh.connectedAtoms = connections; +if (this.polygon != null) { +if (this.polygon.size() == 0) return false; +this.thisMesh.isDrawPolygon = true; +this.thisMesh.vs = this.polygon.get(0); +this.thisMesh.pis = this.polygon.get(1); +this.thisMesh.drawVertexCount = this.thisMesh.vc = this.thisMesh.vs.length; +this.thisMesh.pc = (this.thisMesh.pis == null ? -1 : this.thisMesh.pis.length); +for (var i = 0; i < this.thisMesh.pc; i++) { +for (var j = 0; j < 3; j++) if (this.thisMesh.pis[i][j] >= this.thisMesh.vc) return false; + +} +this.thisMesh.drawType = J.shapespecial.Draw.EnumDrawType.POLYGON; +this.thisMesh.checkByteCount = 1; +} else if (this.lineData != null) { +this.thisMesh.lineData = this.lineData; +} else { +this.thisMesh.setPolygonCount(1); +if (this.setPoints(-1, -1)) this.setPoints(-1, this.nPoints); +this.setPolygon(0); +}} else { +this.thisMesh.modelIndex = -1; +this.thisMesh.setPolygonCount(modelCount); +this.thisMesh.ptCenters = new Array(modelCount); +this.thisMesh.modelFlags = new JU.BS(); +this.thisMesh.drawTypes = new Array(modelCount); +this.thisMesh.drawVertexCounts = Clazz.newIntArray (modelCount, 0); +this.thisMesh.vc = 0; +if (this.indicatedModelIndex >= 0) { +this.setPoints(-1, 0); +this.thisMesh.thisModelOnly = this.indicatedModelOnly; +this.thisMesh.drawType = J.shapespecial.Draw.EnumDrawType.MULTIPLE; +this.thisMesh.drawVertexCount = -1; +this.thisMesh.modelFlags.set(this.indicatedModelIndex); +this.indicatedModelIndex = -1; +} else { +var bsModels = this.vwr.getVisibleFramesBitSet(); +for (var iModel = 0; iModel < modelCount; iModel++) { +if (bsModels.get(iModel) && this.setPoints(iModel, -1)) { +this.setPoints(iModel, this.nPoints); +this.setPolygon(iModel); +this.thisMesh.setCenter(iModel); +this.thisMesh.drawTypes[iModel] = this.thisMesh.drawType; +this.thisMesh.drawVertexCounts[iModel] = this.thisMesh.drawVertexCount; +this.thisMesh.drawType = J.shapespecial.Draw.EnumDrawType.MULTIPLE; +this.thisMesh.drawVertexCount = -1; +this.thisMesh.modelFlags.set(iModel); +} else { +this.thisMesh.drawTypes[iModel] = J.shapespecial.Draw.EnumDrawType.NONE; +this.thisMesh.pis[iModel] = Clazz.newIntArray (0, 0); +}} +}}this.thisMesh.isVector = this.isVector; +this.thisMesh.noHead = this.noHead; +this.thisMesh.isBarb = this.isBarb; +this.thisMesh.width = (this.thisMesh.drawType === J.shapespecial.Draw.EnumDrawType.CYLINDER || this.thisMesh.drawType === J.shapespecial.Draw.EnumDrawType.CIRCULARPLANE ? -Math.abs(this.width) : this.width); +this.thisMesh.setCenter(-1); +if (this.offset != null) this.thisMesh.offset(this.offset); +if (this.thisMesh.thisID == null) { +this.thisMesh.thisID = this.thisMesh.drawType.$$name + (++this.nUnnamed); +this.htObjects.put(this.thisMesh.thisID, this.thisMesh); +}this.clean(); +return true; +}, "~A"); +Clazz.overrideMethod(c$, "clean", +function(){ +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i] == null || this.meshes[i].vc == 0 && this.meshes[i].connectedAtoms == null && this.meshes[i].lineData == null) this.deleteMeshI(i); + +}); +Clazz.defineMethod(c$, "addPoints", +function(type, value){ +var pts = value; +var key = Integer.$valueOf(type); +var isModelPoints = (type == 5); +if (isModelPoints) this.vData.addLast( Clazz.newArray(-1, [key, pts])); +for (var i = 0, n = pts.size(); i < n; i++) { +var o = pts.get(i); +var pt; +if (Clazz.instanceOf(o,"JU.P3")) { +pt = o; +} else { +var v = o; +switch (v.tok) { +case 10: +if (!isModelPoints && (v.value).isEmpty()) continue; +pt = this.ms.getAtomSetCenter(v.value); +break; +case 8: +if (isModelPoints) continue; +default: +pt = JS.SV.ptValue(v); +} +}if (isModelPoints) { +(pts).set(i, JS.SV.getVariable(pt)); +} else { +this.vData.addLast( Clazz.newArray(-1, [key, pt])); +}} +}, "~N,~O"); +Clazz.defineMethod(c$, "addPoint", +function(newPt, iModel){ +if (this.makePoints) { +if (newPt == null || iModel >= 0 && !this.bsAllModels.get(iModel)) return; +this.ptList[this.nPoints] = JU.P3.newP(newPt); +if (J.shapespecial.Draw.is2DPoint(newPt)) this.thisMesh.haveXyPoints = true; +} else if (iModel >= 0) { +this.bsAllModels.set(iModel); +}this.nPoints++; +}, "JU.T3,~N"); +Clazz.defineMethod(c$, "setPoints", +function(iModel, n){ +this.makePoints = (n >= 0); +if (this.makePoints) { +this.ptList = new Array(Math.max(5, n)); +if (this.bsAllModels == null) this.bsAllModels = this.vwr.getVisibleFramesBitSet(); +}this.nPoints = 0; +var nData = this.vData.size(); +var modelIndex = 0; +var bs; +var bsModel = (iModel < 0 ? null : this.vwr.getModelUndeletedAtomsBitSet(iModel)); +for (var i = 0; i < nData; i++) { +var info = this.vData.get(i); +switch ((info[0]).intValue()) { +case 4: +var modelInfo = info[1]; +modelIndex = modelInfo[0]; +this.nPoints = modelInfo[1]; +var nVertices = Math.max(this.nPoints, 3); +var n0 = this.thisMesh.vc; +if (this.nPoints > 0) { +var p = this.thisMesh.pis[modelIndex] = Clazz.newIntArray (nVertices, 0); +var pt = null; +for (var j = 0; j < this.nPoints; j++) { +info = this.vData.get(++i); +p[j] = this.thisMesh.addV(pt = info[1], false); +} +for (var j = this.nPoints; j < 3; j++) { +p[j] = n0 + this.nPoints - 1; +} +this.thisMesh.haveXyPoints = J.shapespecial.Draw.is2DPoint(pt); +this.thisMesh.drawTypes[modelIndex] = J.shapespecial.Draw.EnumDrawType.getType(this.nPoints); +this.thisMesh.drawVertexCounts[modelIndex] = this.nPoints; +this.thisMesh.modelFlags.set(modelIndex); +}break; +case 1: +this.addPoint(info[1], (this.makePoints ? iModel : -1)); +break; +case 3: +bs = JU.BSUtil.copy(info[1]); +if (bsModel != null) bs.and(bsModel); +if (bs.length() > 0) this.addPoint(this.ms.getAtomSetCenter(bs), (this.makePoints ? iModel : -1)); +break; +case 2: +var idInfo = info[1]; +var m = this.dmeshes[idInfo[0]]; +var isReversed = (idInfo[1] == 1); +var isVertices = (idInfo[2] == 1); +if (m.modelIndex > 0 && m.modelIndex != iModel) return false; +if (this.bsAllModels == null) this.bsAllModels = new JU.BS(); +if (this.isPlane && !this.isCircle || this.isPerpendicular || isVertices) { +if (isReversed) { +if (iModel < 0 || iModel >= m.pc) for (var ipt = m.drawVertexCount; --ipt >= 0; ) this.addPoint(m.vs[ipt], iModel); + + else if (m.pis[iModel] != null) for (var ipt = m.drawVertexCounts[iModel]; --ipt >= 0; ) this.addPoint(m.vs[m.pis[iModel][ipt]], iModel); + +} else { +if (iModel < 0 || iModel >= m.pc) for (var ipt = 0; ipt < m.drawVertexCount; ipt++) this.addPoint(m.vs[ipt], iModel); + + else if (m.pis[iModel] != null) for (var ipt = 0; ipt < m.drawVertexCounts[iModel]; ipt++) this.addPoint(m.vs[m.pis[iModel][ipt]], iModel); + +}} else { +if (iModel < 0 || m.ptCenters == null || m.ptCenters[iModel] == null) this.addPoint(m.ptCenter, iModel); + else this.addPoint(m.ptCenters[iModel], iModel); +}break; +case 5: +var modelBasedPoints = info[1]; +if (this.bsAllModels == null) this.bsAllModels = new JU.BS(); +for (var j = 0; j < modelBasedPoints.size(); j++) if (iModel < 0 || j == iModel) { +var point = modelBasedPoints.get(j); +this.bsAllModels.set(j); +if (Clazz.instanceOf(point,"JU.P3")) { +this.addPoint(point, j); +} else if (Clazz.instanceOf(point,"JU.BS")) { +bs = point; +if (bsModel != null) bs.and(bsModel); +if (bs.length() > 0) this.addPoint(this.ms.getAtomSetCenter(bs), j); +} else if (Clazz.instanceOf(point,"JS.SV")) { +this.addPoint(JS.SV.ptValue(point), j); +}} +break; +} +} +if (this.makePoints && this.isCrossed && this.nPoints == 4) { +var pt = this.ptList[1]; +this.ptList[1] = this.ptList[2]; +this.ptList[2] = pt; +}return (this.nPoints > 0); +}, "~N,~N"); +Clazz.defineMethod(c$, "setPolygon", +function(nPoly){ +var nVertices = this.nPoints; +var drawType = J.shapespecial.Draw.EnumDrawType.POINT; +if (this.isArc) { +if (nVertices >= 2) { +drawType = J.shapespecial.Draw.EnumDrawType.ARC; +} else { +this.isArc = false; +this.isVector = false; +this.isCurve = false; +this.isArrow = true; +}}if (this.isCircle) { +this.length = 0; +if (nVertices == 2) this.isPlane = true; +if (!this.isPlane) drawType = J.shapespecial.Draw.EnumDrawType.CIRCLE; +if (this.width == 0) this.width = 1; +} else if ((this.isCurve || this.isArrow) && nVertices >= 2 && !this.isArc) { +drawType = (this.isLine ? J.shapespecial.Draw.EnumDrawType.LINE_SEGMENT : this.isCurve ? J.shapespecial.Draw.EnumDrawType.CURVE : J.shapespecial.Draw.EnumDrawType.ARROW); +}if (this.isVector && !this.isArc) { +if (nVertices > 2) nVertices = 2; + else if (this.plane == null && nVertices != 2) this.isVector = false; +}if (this.thisMesh.haveXyPoints) { +this.isPerpendicular = false; +if (nVertices == 3 && this.isPlane) this.isPlane = false; +this.length = 3.4028235E38; +if (this.isVector) this.thisMesh.diameter = 0; +} else if (nVertices == 2 && this.isVector) { +this.ptList[1].add(this.ptList[0]); +}var dist = 0; +if (this.isArc || this.plane != null && this.isCircle) { +if (this.plane != null) { +dist = JU.Measure.distanceToPlane(this.plane, this.ptList[0]); +var vAC = JU.V3.new3(-this.plane.x, -this.plane.y, -this.plane.z); +vAC.normalize(); +if (dist < 0) vAC.scale(-1); +if (this.isCircle) { +vAC.scale(0.005); +this.ptList[0].sub(vAC); +vAC.scale(2); +}vAC.add(this.ptList[0]); +this.ptList[1] = JU.P3.newP(vAC); +drawType = (this.isArrow ? J.shapespecial.Draw.EnumDrawType.ARROW : this.isArc ? J.shapespecial.Draw.EnumDrawType.ARC : J.shapespecial.Draw.EnumDrawType.CIRCULARPLANE); +}if (this.isArc) { +dist = Math.abs(dist); +if (nVertices > 3) { +} else if (nVertices == 3) { +this.ptList[3] = JU.P3.newP(this.ptList[2]); +this.ptList[2] = J.shapespecial.Draw.randomPoint(); +} else { +if (nVertices == 2) { +this.ptList[2] = J.shapespecial.Draw.randomPoint(); +}this.ptList[3] = JU.P3.new3(0, 360, 0); +}if (this.plane != null) this.ptList[3].z *= dist; +nVertices = 4; +}this.plane = null; +} else if (drawType === J.shapespecial.Draw.EnumDrawType.POINT) { +var pt; +var center = new JU.P3(); +var normal = new JU.V3(); +if (nVertices == 2 && this.plane != null) { +this.ptList[1] = JU.P3.newP(this.ptList[0]); +var vTemp = new JU.V3(); +JU.Measure.getPlaneProjection(this.ptList[1], this.plane, this.ptList[1], vTemp); +nVertices = -2; +if (this.isArrow) drawType = J.shapespecial.Draw.EnumDrawType.ARROW; +this.plane = null; +}if (nVertices == 3 && this.isPlane && !this.isPerpendicular) { +pt = JU.P3.newP(this.ptList[1]); +pt.sub(this.ptList[0]); +pt.scale(0.5); +this.ptList[3] = JU.P3.newP(this.ptList[2]); +this.ptList[2].add(pt); +this.ptList[3].sub(pt); +nVertices = 4; +} else if (nVertices >= 3 && !this.isPlane && this.isPerpendicular) { +JU.Measure.calcNormalizedNormal(this.ptList[0], this.ptList[1], this.ptList[2], normal, this.vAB); +center = new JU.P3(); +JU.Measure.calcAveragePointN(this.ptList, nVertices, center); +dist = (this.length == 3.4028235E38 ? this.ptList[0].distance(center) : this.length); +normal.scale(dist); +this.ptList[0].setT(center); +this.ptList[1].add2(center, normal); +nVertices = 2; +} else if (nVertices == 2 && this.isPerpendicular) { +JU.Measure.calcAveragePoint(this.ptList[0], this.ptList[1], center); +dist = (this.length == 3.4028235E38 ? this.ptList[0].distance(center) : this.length); +if (this.isPlane && this.length != 3.4028235E38) dist /= 2; +if (this.isPlane && this.isRotated45) dist *= 1.4142; +JU.Measure.getNormalToLine(this.ptList[0], this.ptList[1], normal); +normal.scale(dist); +if (this.isPlane) { +this.ptList[2] = JU.P3.newP(center); +this.ptList[2].sub(normal); +pt = JU.P3.newP(center); +pt.add(normal); +JU.Measure.calcNormalizedNormal(this.ptList[0], this.ptList[1], this.ptList[2], normal, this.vAB); +normal.scale(dist); +this.ptList[3] = JU.P3.newP(center); +this.ptList[3].add(normal); +this.ptList[1].sub2(center, normal); +this.ptList[0].setT(pt); +if (this.isRotated45) { +JU.Measure.calcAveragePoint(this.ptList[0], this.ptList[1], this.ptList[0]); +JU.Measure.calcAveragePoint(this.ptList[1], this.ptList[2], this.ptList[1]); +JU.Measure.calcAveragePoint(this.ptList[2], this.ptList[3], this.ptList[2]); +JU.Measure.calcAveragePoint(this.ptList[3], pt, this.ptList[3]); +}nVertices = 4; +} else { +this.ptList[0].sub2(center, normal); +this.ptList[1].add2(center, normal); +}if (this.isArrow && nVertices != -2) this.isArrow = false; +} else if (nVertices == 2 && this.length != 3.4028235E38) { +JU.Measure.calcAveragePoint(this.ptList[0], this.ptList[1], center); +normal.sub2(this.ptList[1], center); +normal.scale(0.5 / normal.length() * (this.length == 0 ? 0.01 : this.length)); +if (this.length == 0) center.setT(this.ptList[0]); +this.ptList[0].sub2(center, normal); +this.ptList[1].add2(center, normal); +}if (nVertices > 4) { +nVertices = 4; +}switch (nVertices) { +case -2: +nVertices = 2; +break; +case 1: +break; +case 2: +drawType = (this.isArc ? J.shapespecial.Draw.EnumDrawType.ARC : this.isPlane && this.isCircle ? J.shapespecial.Draw.EnumDrawType.CIRCULARPLANE : this.isCylinder ? J.shapespecial.Draw.EnumDrawType.CYLINDER : J.shapespecial.Draw.EnumDrawType.LINE); +break; +default: +drawType = (this.thisMesh.connectedAtoms == null ? J.shapespecial.Draw.EnumDrawType.PLANE : J.shapespecial.Draw.EnumDrawType.ARROW); +} +}this.thisMesh.drawType = drawType; +this.thisMesh.drawVertexCount = nVertices; +if (nVertices == 0) return; +var nVertices0 = this.thisMesh.vc; +for (var i = 0; i < nVertices; i++) { +this.thisMesh.addV(this.ptList[i], false); +} +var npoints = (nVertices < 3 ? 3 : nVertices); +this.thisMesh.setPolygonCount(nPoly + 1); +this.thisMesh.pis[nPoly] = Clazz.newIntArray (npoints, 0); +for (var i = 0; i < npoints; i++) { +this.thisMesh.pis[nPoly][i] = nVertices0 + (i < nVertices ? i : nVertices - 1); +} +return; +}, "~N"); +Clazz.defineMethod(c$, "scale", +function(mesh, newScale){ +var dmesh = mesh; +if (newScale == 0 || dmesh.vc == 0 && dmesh.connectedAtoms == null || dmesh.scale == newScale) return; +var f = newScale / dmesh.scale; +dmesh.scale = newScale; +dmesh.isScaleSet = true; +if (dmesh.isRenderScalable()) return; +var diff = new JU.V3(); +var iptlast = -1; +var ipt = 0; +try { +for (var i = dmesh.pc; --i >= 0; ) { +var center = (dmesh.isVector ? dmesh.vs[0] : dmesh.ptCenters == null ? dmesh.ptCenter : dmesh.ptCenters[i]); +if (center == null) return; +if (dmesh.pis[i] == null) continue; +iptlast = -1; +for (var iV = dmesh.pis[i].length; --iV >= 0; ) { +ipt = dmesh.pis[i][iV]; +if (ipt == iptlast) continue; +iptlast = ipt; +diff.sub2(dmesh.vs[ipt], center); +diff.scale(f); +diff.add(center); +dmesh.vs[ipt].setT(diff); +} +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info("Error executing DRAW command: " + e); +dmesh.isValid = false; +} else { +throw e; +} +} +}, "J.shape.Mesh,~N"); +c$.setAxes = Clazz.defineMethod(c$, "setAxes", +function(m){ +m.axis = JU.V3.new3(0, 0, 0); +m.axes = new Array(m.pc > 0 ? m.pc : 1); +if (m.vs == null) return; +var n = 0; +for (var i = m.pc; --i >= 0; ) { +var p = m.pis[i]; +m.axes[i] = new JU.V3(); +if (p == null || p.length == 0) { +} else if (m.drawVertexCount == 2 || m.drawVertexCount < 0 && m.drawVertexCounts[i] == 2) { +m.axes[i].sub2(m.vs[p[0]], m.vs[p[1]]); +n++; +} else { +JU.Measure.calcNormalizedNormal(m.vs[p[0]], m.vs[p[1]], m.vs[p[2]], m.axes[i], m.vAB); +n++; +}m.axis.add(m.axes[i]); +} +if (n == 0) return; +m.axis.scale(1 / n); +}, "J.shapespecial.DrawMesh"); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +for (var i = 0; i < this.meshCount; i++) { +var m = this.dmeshes[i]; +if (m == null) { +continue; +}m.visibilityFlags = (m.isValid && m.visible ? this.vf : 0); +if (m.modelIndex >= 0 && !bsModels.get(m.modelIndex) || m.modelFlags != null && !JU.BSUtil.haveCommon(bsModels, m.modelFlags)) { +m.visibilityFlags = 0; +} else if (m.modelFlags != null) { +m.bsMeshesVisible.clearAll(); +m.bsMeshesVisible.or(m.modelFlags); +m.bsMeshesVisible.and(bsModels); +}} +}, "JU.BS"); +Clazz.overrideMethod(c$, "checkObjectClicked", +function(x, y, action, bsVisible, drawPicking){ +var isPickingMode = (this.vwr.getPickingMode() == 4); +var isSpinMode = (this.vwr.getPickingMode() == 5); +if (!isPickingMode && !drawPicking && !isSpinMode || JU.C.isColixTranslucent(this.colix)) return null; +if (!this.findPickedObject(x, y, false, bsVisible)) return null; +var v = this.pickedMesh.vs[this.pickedMesh.pis[this.pickedModel][this.pickedVertex]]; +var modelIndex = this.pickedMesh.modelIndex; +var bs = (this.pickedMesh).modelFlags; +if (modelIndex < 0 && JU.BSUtil.cardinalityOf(bs) == 1) modelIndex = bs.nextSetBit(0); +var map = null; +if (action != 0) map = this.getPickedPoint(v, modelIndex); +if (drawPicking && !isPickingMode) { +if (action != 0) this.setStatusPicked(-2, v, map); +return this.getPickedPoint(v, modelIndex); +}if (action == 0 || this.pickedMesh.pis[this.pickedModel][0] == this.pickedMesh.pis[this.pickedModel][1]) { +return map; +}var isClockwise = this.vwr.isBound(action, 42); +if (this.pickedVertex == 0) { +this.vwr.startSpinningAxis(this.pickedMesh.vs[this.pickedMesh.pis[this.pickedModel][1]], this.pickedMesh.vs[this.pickedMesh.pis[this.pickedModel][0]], isClockwise); +} else { +this.vwr.startSpinningAxis(this.pickedMesh.vs[this.pickedMesh.pis[this.pickedModel][0]], this.pickedMesh.vs[this.pickedMesh.pis[this.pickedModel][1]], isClockwise); +}return this.getPickedPoint(null, 0); +}, "~N,~N,~N,JU.BS,~B"); +Clazz.overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +if (!this.vwr.getDrawHover()) return false; +if (JU.C.isColixTranslucent(this.colix)) return false; +if (!this.findPickedObject(x, y, false, bsVisible)) return false; +var s = ((this.pickedMesh).hoverLabel != null ? (this.pickedMesh).hoverLabel : this.pickedMesh.title == null ? this.pickedMesh.thisID : this.pickedMesh.title[0]); +if (s.length > 1 && s.charAt(0) == '>') s = s.substring(1); +this.vwr.hoverOnPt(x, y, s, this.pickedMesh.thisID, this.pickedPt); +return true; +}, "~N,~N,JU.BS"); +Clazz.overrideMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, dragAction, bsVisible){ +if (this.vwr.getPickingMode() != 4) return false; +var moveAll = this.vwr.isBound(dragAction, 8); +var movePoint = this.vwr.isBound(dragAction, 9); +if (!moveAll && !movePoint) return false; +if (prevX == -2147483648) return this.findPickedObject(x, y, true, bsVisible); +if (prevX == 2147483647) { +this.pickedMesh = null; +return false; +}if (this.pickedMesh == null) return false; +var dm = this.pickedMesh; +this.move2D(dm, dm.pis[this.pickedModel], this.pickedVertex, x, y, moveAll); +this.thisMesh = dm; +return true; +}, "~N,~N,~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "move2D", +function(mesh, vertexes, iVertex, x, y, moveAll){ +if (vertexes == null || vertexes.length == 0) return; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +}var action = moveAll ? 8 : 9; +if (this.vwr.acm.userActionEnabled(action) && !this.vwr.acm.userAction(action, Clazz.newArray(-1, [mesh.thisID, Clazz.newIntArray(-1, [x, y, iVertex])]))) return; +var pt = new JU.P3(); +var ptVertex = vertexes[iVertex]; +var coord = JU.P3.newP(mesh.altVertices == null ? mesh.vs[ptVertex] : mesh.altVertices[ptVertex]); +var newcoord = new JU.P3(); +var move = new JU.V3(); +this.vwr.tm.transformPt3f(coord, pt); +pt.x = x; +pt.y = y; +this.vwr.tm.unTransformPoint(pt, newcoord); +move.sub2(newcoord, coord); +if (mesh.isDrawPolygon) iVertex = ptVertex; +var n = (!moveAll ? iVertex + 1 : mesh.isDrawPolygon ? mesh.vs.length : vertexes.length); +var bsMoved = new JU.BS(); +for (var i = (moveAll ? 0 : iVertex); i < n; i++) if (moveAll || i == iVertex) { +var k = (mesh.isDrawPolygon ? i : vertexes[i]); +if (bsMoved.get(k)) continue; +bsMoved.set(k); +mesh.vs[k].add(move); +} +if (mesh.altVertices != null) mesh.recalcAltVertices = true; +mesh.setCenters(); +}, "J.shapespecial.DrawMesh,~A,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "findPickedObject", +function(x, y, isPicking, bsVisible){ +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}this.pickedModel = this.pickedVertex = 0; +this.pickedMesh = null; +this.pickedPt = null; +this.pm2 = null; +this.pickedPoint2 = null; +this.dmin22 = this.pmod2 = this.pickedVertex2 = -1; +for (var i = 0; i < this.meshCount; i++) { +var m = this.dmeshes[i]; +if (m.visibilityFlags == 0) continue; +dmin2 = this.pickClosestPoint(dmin2, x, y, m, -1, -1, this.ptXY, null); +} +if (dmin2 != 0 && this.dmin22 == dmin2 && this.pickedMesh != null && this.pm2 != null) { +var vTemp = new JU.V3(); +var d1 = this.pickClosestPoint(2147483647, x, y, this.pickedMesh, this.pickedModel, this.pickedVertex, this.ptXY, vTemp); +var d2 = this.pickClosestPoint(d1, x, y, this.pm2, this.pmod2, this.pickedVertex2, this.ptXY, vTemp); +if (d2 < d1) { +this.pickedMesh = this.pm2; +this.pickedModel = this.pmod2; +this.pickedVertex = this.pickedVertex2; +this.pickedPt = this.pickedPoint2; +}}return (this.pickedMesh != null); +}, "~N,~N,~B,JU.BS"); +Clazz.defineMethod(c$, "pickClosestPoint", +function(dmin2, x, y, m, model, vnot, ptXY, vTemp){ +var mCount = (m.isDrawPolygon ? m.pc : m.modelFlags == null ? 1 : this.ms.mc); +for (var iModel = mCount; --iModel >= 0; ) { +if (model >= 0 ? iModel != model : m.modelFlags != null && !m.modelFlags.get(iModel) || m.pis == null || !m.isDrawPolygon && (iModel >= m.pis.length || m.pis[iModel] == null)) continue; +for (var iVertex = (m.isDrawPolygon ? 3 : m.pis[iModel].length); --iVertex >= 0; ) { +if (iVertex == vnot) continue; +try { +var iv = m.pis[iModel][iVertex]; +var pt = (m.altVertices == null ? m.vs[iv] : m.altVertices[iv]); +if (vnot >= 0) { +vTemp.sub2(pt, this.pickedPt); +if (vTemp.length() == 0) continue; +vTemp.normalize(); +vTemp.add(this.pickedPt); +}var d2 = this.coordinateInRange(x, y, (vnot >= 0 ? vTemp : pt), dmin2, ptXY); +if (d2 >= 0) { +if (vnot < 0) { +if (this.pm2 == null) { +this.dmin22 = d2; +this.pmod2 = this.pickedModel; +this.pm2 = this.pickedMesh; +this.pickedVertex2 = this.pickedVertex; +this.pickedPoint2 = this.pickedPt; +}this.pickedVertex = iVertex; +this.pickedPt = pt; +this.pickedMesh = m; +this.pickedModel = iModel; +}dmin2 = d2; +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e); +} else { +throw e; +} +} +} +} +return dmin2; +}, "~N,~N,~N,J.shapespecial.DrawMesh,~N,~N,JU.P3i,JU.V3"); +Clazz.defineMethod(c$, "getCommand", +function(mesh){ +if (mesh != null) return this.getCommand2(mesh, mesh.modelIndex); +var sb = new JU.SB(); +var key = (this.explicitID && this.previousMeshID != null && JU.PT.isWild(this.previousMeshID) ? this.previousMeshID : null); +var list = this.getMeshList(key, false); +for (var i = list.size(); --i >= 0; ) { +var m = list.get(i); +sb.append(this.getCommand2(m, m.modelIndex)); +} +return sb.toString(); +}, "J.shape.Mesh"); +Clazz.defineMethod(c$, "getCommand2", +function(mesh, iModel){ +var dmesh = mesh; +if (!dmesh.isValid || dmesh.drawType === J.shapespecial.Draw.EnumDrawType.NONE && dmesh.lineData == null && dmesh.drawVertexCount == 0 && dmesh.drawVertexCounts == null) return ""; +var str = new JU.SB(); +var modelCount = this.ms.mc; +if (!dmesh.isFixed && iModel >= 0 && modelCount > 1) J.shape.Shape.appendCmd(str, "frame " + this.vwr.getModelNumberDotted(iModel)); +str.append(" draw ID ").append(JU.PT.esc(dmesh.thisID)); +if (dmesh.isFixed) str.append(" fixed"); +if (iModel < 0) iModel = 0; +if (dmesh.noHead) str.append(" noHead"); + else if (dmesh.isBarb) str.append(" barb"); +if (dmesh.scale != 1 && dmesh.isScaleSet && (dmesh.haveXyPoints || dmesh.connectedAtoms != null || dmesh.drawType === J.shapespecial.Draw.EnumDrawType.CIRCLE || dmesh.drawType === J.shapespecial.Draw.EnumDrawType.ARC)) str.append(" scale ").appendF(dmesh.scale); +if (dmesh.width != 0) str.append(" diameter ").appendF((dmesh.drawType === J.shapespecial.Draw.EnumDrawType.CYLINDER ? Math.abs(dmesh.width) : dmesh.drawType === J.shapespecial.Draw.EnumDrawType.CIRCULARPLANE ? Math.abs(dmesh.width * dmesh.scale) : dmesh.width)); + else if (dmesh.diameter != 0) str.append(" diameter ").appendI(dmesh.diameter); +if (dmesh.lineData != null) { +str.append(" lineData ["); +var n = dmesh.lineData.size(); +for (var j = 0; j < n; ) { +var pts = dmesh.lineData.get(j); +var s = JU.Escape.eP(pts[0]); +str.append(s.substring(1, s.length - 1)); +str.append(","); +s = JU.Escape.eP(pts[1]); +str.append(s.substring(1, s.length - 1)); +if (++j < n) str.append(", "); +} +str.append("]"); +} else { +var nVertices = dmesh.drawVertexCount > 0 || dmesh.drawVertexCounts == null ? dmesh.drawVertexCount : dmesh.drawVertexCounts[iModel >= 0 ? iModel : 0]; +switch (dmesh.drawTypes == null || dmesh.drawTypes[iModel] == null ? dmesh.drawType : dmesh.drawTypes[iModel]) { +case J.shapespecial.Draw.EnumDrawType.NONE: +case J.shapespecial.Draw.EnumDrawType.MULTIPLE: +break; +case J.shapespecial.Draw.EnumDrawType.POLYGON: +str.append(" POLYGON ").appendI(nVertices); +break; +case J.shapespecial.Draw.EnumDrawType.PLANE: +if (nVertices == 4) str.append(" PLANE"); +break; +case J.shapespecial.Draw.EnumDrawType.LINE_SEGMENT: +str.append(" LINE"); +break; +case J.shapespecial.Draw.EnumDrawType.ARC: +str.append(dmesh.isVector ? " ARROW ARC" : " ARC"); +break; +case J.shapespecial.Draw.EnumDrawType.ARROW: +str.append(dmesh.isVector ? " VECTOR" : " ARROW"); +if (dmesh.connectedAtoms != null) str.append(" connect ").append(JU.Escape.eAI(dmesh.connectedAtoms)); +break; +case J.shapespecial.Draw.EnumDrawType.CIRCLE: +str.append(" CIRCLE"); +break; +case J.shapespecial.Draw.EnumDrawType.CURVE: +str.append(" CURVE"); +break; +case J.shapespecial.Draw.EnumDrawType.CIRCULARPLANE: +case J.shapespecial.Draw.EnumDrawType.CYLINDER: +str.append(" CYLINDER"); +break; +case J.shapespecial.Draw.EnumDrawType.POINT: +nVertices = 1; +break; +case J.shapespecial.Draw.EnumDrawType.LINE: +nVertices = 2; +break; +} +if (dmesh.modelIndex < 0 && !dmesh.isFixed) { +for (var i = 0; i < modelCount; i++) if (J.shapespecial.Draw.isPolygonDisplayable(dmesh, i)) { +if (nVertices == 0) nVertices = dmesh.drawVertexCounts[i]; +str.append(" [ " + i); +var s = J.shapespecial.Draw.getVertexList(dmesh, i, nVertices); +if (s.indexOf("NaN") >= 0) return ""; +str.append(s); +str.append(" ] "); +} +} else if (dmesh.drawType === J.shapespecial.Draw.EnumDrawType.POLYGON) { +for (var i = 0; i < dmesh.vc; i++) str.append(" ").append(JU.Escape.eP(dmesh.vs[i])); + +str.append(" ").appendI(dmesh.pc); +for (var i = 0; i < dmesh.pc; i++) if (dmesh.pis[i] == null) str.append(" [0 0 0 0]"); + else str.append(" ").append(JU.Escape.eAI(dmesh.pis[i])); + +} else { +var s = J.shapespecial.Draw.getVertexList(dmesh, iModel, nVertices); +if (s.indexOf("NaN") >= 0) return ""; +str.append(s); +}}if (dmesh.mat4 != null) { +var v = new JU.V3(); +dmesh.mat4.getTranslation(v); +str.append(" offset ").append(JU.Escape.eP(v)); +}if (dmesh.titleColor != null) { +str.append(" title color ").append(JU.Escape.escapeColor(dmesh.titleColor.intValue())); +}var title = ""; +if (dmesh.title != null) { +for (var i = 0; i < dmesh.title.length; i++) title += "|" + dmesh.title[i]; + +}if (dmesh.hoverLabel != null) { +title = "|" + dmesh.hoverLabel + "" + (title === "" ? "" : title.substring(1)); +}if (title.length > 1) { +str.append(" ").append(JU.PT.esc(title.substring(1))); +}if (dmesh.fontID >= 0) { +str.append(" font " + JU.Font.getFont3D(dmesh.fontID).getInfo()); +}str.append(";\n"); +J.shape.Shape.appendCmd(str, dmesh.getState("draw")); +J.shape.Shape.appendCmd(str, J.shape.Shape.getColorCommandUnk("draw", dmesh.colix, this.translucentAllowed)); +return str.toString(); +}, "J.shape.Mesh,~N"); +c$.isPolygonDisplayable = Clazz.defineMethod(c$, "isPolygonDisplayable", +function(mesh, i){ +return (i < mesh.pis.length && mesh.pis[i] != null && mesh.pis[i].length > 0); +}, "J.shape.Mesh,~N"); +c$.getVertexList = Clazz.defineMethod(c$, "getVertexList", +function(mesh, iModel, nVertices){ +var str = ""; +try { +if (iModel >= mesh.pis.length) iModel = 0; +var adjustPt = (mesh.isVector && mesh.drawType !== J.shapespecial.Draw.EnumDrawType.ARC); +for (var i = 0; i < nVertices; i++) { +var pt = mesh.vs[mesh.pis[iModel][i]]; +if (J.shapespecial.Draw.is2DPoint(pt)) { +str += (i == 0 ? " " : " ,") + "[" + Clazz.floatToInt(pt.x) + " " + Clazz.floatToInt(pt.y) + (pt.z < 0 ? " %]" : "]"); +} else if (adjustPt && i == 1) { +var pt1 = JU.P3.newP(pt); +pt1.sub(mesh.vs[mesh.pis[iModel][0]]); +str += " " + JU.Escape.eP(pt1); +} else { +str += " " + JU.Escape.eP(pt); +}} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Unexpected error in Draw.getVertexList"); +} else { +throw e; +} +} +return str; +}, "J.shapespecial.DrawMesh,~N,~N"); +c$.is2DPoint = Clazz.defineMethod(c$, "is2DPoint", +function(pt){ +return (pt.z == 3.4028235E38 || pt.z == -3.4028235E38); +}, "JU.T3"); +Clazz.overrideMethod(c$, "getShapeDetail", +function(){ +var V = new JU.Lst(); +for (var i = 0; i < this.meshCount; i++) { +var mesh = this.dmeshes[i]; +if (mesh.vc == 0) continue; +var info = new java.util.Hashtable(); +info.put("visible", mesh.visible ? Boolean.TRUE : Boolean.FALSE); +info.put("fixed", mesh.ptCenters == null ? Boolean.TRUE : Boolean.FALSE); +info.put("ID", (mesh.thisID == null ? "" : mesh.thisID)); +info.put("drawType", mesh.drawType.$$name); +if (mesh.diameter > 0) info.put("diameter", Integer.$valueOf(mesh.diameter)); +if (mesh.width != 0) info.put("width", Float.$valueOf(mesh.width)); +info.put("scale", Float.$valueOf(mesh.scale)); +if (mesh.drawType === J.shapespecial.Draw.EnumDrawType.MULTIPLE) { +var m = new JU.Lst(); +var modelCount = this.ms.mc; +for (var k = 0; k < modelCount; k++) { +if (mesh.ptCenters[k] == null) continue; +var mInfo = new java.util.Hashtable(); +mInfo.put("modelIndex", Integer.$valueOf(k)); +mInfo.put("command", this.getCommand2(mesh, k)); +mInfo.put("center", mesh.ptCenters[k]); +var nPoints = mesh.drawVertexCounts[k]; +mInfo.put("vertexCount", Integer.$valueOf(nPoints)); +if (nPoints > 1) mInfo.put("axis", mesh.axes[k]); +var v = new JU.Lst(); +for (var ipt = 0; ipt < nPoints; ipt++) v.addLast(mesh.vs[mesh.pis[k][ipt]]); + +mInfo.put("vertices", v); +if (mesh.drawTypes[k] === J.shapespecial.Draw.EnumDrawType.LINE) { +var d = mesh.vs[mesh.pis[k][0]].distance(mesh.vs[mesh.pis[k][1]]); +mInfo.put("length_Ang", Float.$valueOf(d)); +}m.addLast(mInfo); +} +info.put("models", m); +} else { +info.put("command", this.getCommand(mesh)); +info.put("center", mesh.ptCenter); +if (mesh.drawVertexCount > 1) info.put("axis", mesh.axis); +var v = new JU.Lst(); +for (var j = 0; j < mesh.vc; j++) v.addLast(mesh.vs[j]); + +info.put("vertices", v); +if (mesh.drawType === J.shapespecial.Draw.EnumDrawType.LINE) info.put("length_Ang", Float.$valueOf(mesh.vs[0].distance(mesh.vs[1]))); +}V.addLast(info); +} +return V; +}); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +var s = new JU.SB(); +s.append("\n"); +J.shape.Shape.appendCmd(s, this.myType + " delete"); +if (this.defaultFontId >= 0 && (this.defaultFontId != this.defaultFontId0 || this.defaultFontSize != 16.0)) J.shape.Shape.appendCmd(s, J.shape.Shape.getFontCommand("draw", this.getProperty("font", -1))); +for (var i = 0; i < this.meshCount; i++) { +var mesh = this.dmeshes[i]; +if (mesh.vc == 0 && mesh.lineData == null) continue; +s.append(this.getCommand2(mesh, mesh.modelIndex)); +if (!mesh.visible) s.append(" " + this.myType + " ID " + JU.PT.esc(mesh.thisID) + " off;\n"); +} +return s.toString(); +}); +c$.randomPoint = Clazz.defineMethod(c$, "randomPoint", +function(){ +return JU.P3.new3(Math.random(), Math.random(), Math.random()); +}); +/*if2*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.id = 0; +this.$$name = null; +Clazz.instantialize(this, arguments);}, J.shapespecial.Draw, "EnumDrawType", Enum); +Clazz.makeConstructor(c$, +function(id, name){ +this.id = id; +this.$$name = name; +}, "~N,~S"); +c$.getType = Clazz.defineMethod(c$, "getType", +function(nPoints){ +switch (nPoints) { +case 1: +return J.shapespecial.Draw.EnumDrawType.POINT; +case 2: +return J.shapespecial.Draw.EnumDrawType.LINE; +case 4: +return J.shapespecial.Draw.EnumDrawType.PLANE; +default: +return J.shapespecial.Draw.EnumDrawType.NONE; +} +}, "~N"); +Clazz.defineEnumConstant(c$, "MULTIPLE", 0, [-1, "multiple"]); +Clazz.defineEnumConstant(c$, "NONE", 1, [0, "none"]); +Clazz.defineEnumConstant(c$, "POINT", 2, [1, "point"]); +Clazz.defineEnumConstant(c$, "LINE", 3, [2, "line"]); +Clazz.defineEnumConstant(c$, "PLANE", 4, [4, "plane"]); +Clazz.defineEnumConstant(c$, "CYLINDER", 5, [14, "cylinder"]); +Clazz.defineEnumConstant(c$, "ARROW", 6, [15, "arrow"]); +Clazz.defineEnumConstant(c$, "CIRCLE", 7, [16, "circle"]); +Clazz.defineEnumConstant(c$, "CURVE", 8, [17, "curve"]); +Clazz.defineEnumConstant(c$, "CIRCULARPLANE", 9, [18, "circularPlane"]); +Clazz.defineEnumConstant(c$, "ARC", 10, [19, "arc"]); +Clazz.defineEnumConstant(c$, "LINE_SEGMENT", 11, [20, "lineSegment"]); +Clazz.defineEnumConstant(c$, "POLYGON", 12, [21, "polygon"]); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/DrawMesh.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/DrawMesh.js new file mode 100755 index 000000000000..58898401236a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/DrawMesh.js @@ -0,0 +1,100 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["J.shape.Mesh"], "J.shapespecial.DrawMesh", ["JU.AU", "$.BS", "$.P3", "$.V3", "J.shapespecial.Draw", "JU.BSUtil"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bsMeshesVisible = null; +this.modelFlags = null; +this.drawType = null; +this.drawTypes = null; +this.ptCenters = null; +this.axis = null; +this.axes = null; +this.drawVertexCount = 0; +this.drawVertexCounts = null; +this.isFixed = false; +this.isVector = false; +this.drawArrowScale = 0; +this.noHead = false; +this.isBarb = false; +this.scale = 1; +this.isScaleSet = false; +this.fontID = -1; +this.titleColor = null; +this.thisModelOnly = false; +Clazz.instantialize(this, arguments);}, J.shapespecial, "DrawMesh", J.shape.Mesh); +Clazz.makeConstructor(c$, +function(vwr, thisID, colix, index){ +this.drawType = J.shapespecial.Draw.EnumDrawType.NONE; +this.axis = JU.V3.new3(1, 0, 0); +this.bsMeshesVisible = new JU.BS(); +this.mesh1(vwr, thisID, colix, index); +}, "JV.Viewer,~S,~N,~N"); +Clazz.overrideMethod(c$, "clear", +function(meshType){ +this.clearMesh(meshType); +this.scale = 1; +this.isScaleSet = false; +}, "~S"); +Clazz.defineMethod(c$, "setCenters", +function(){ +if (this.ptCenters == null) this.setCenter(-1); + else for (var i = this.ptCenters.length; --i >= 0; ) this.setCenter(i); + +}); +Clazz.defineMethod(c$, "setCenter", +function(iModel){ +var center = JU.P3.new3(0, 0, 0); +var iptlast = -1; +var ipt = 0; +var n = 0; +for (var i = this.pc; --i >= 0; ) { +if (iModel >= 0 && i != iModel || this.pis[i] == null) continue; +iptlast = -1; +for (var iV = (this.drawType === J.shapespecial.Draw.EnumDrawType.POLYGON) ? 3 : this.pis[i].length; --iV >= 0; ) { +ipt = this.pis[i][iV]; +if (ipt == iptlast) continue; +iptlast = ipt; +center.add(this.vs[ipt]); +n++; +} +if (n > 0 && (i == iModel || i == 0)) { +center.scale(1.0 / n); +if (this.mat4 != null) this.mat4.rotTrans(center); +break; +}} +if (iModel < 0) { +this.ptCenter.setT(center); +} else { +this.ptCenters[iModel] = center; +}}, "~N"); +Clazz.defineMethod(c$, "offset", +function(offset){ +this.rotateTranslate(null, offset, false); +this.setCenters(); +}, "JU.V3"); +Clazz.defineMethod(c$, "deleteAtoms", +function(modelIndex){ +if (modelIndex >= this.pc) return; +this.pc--; +this.pis = JU.AU.deleteElements(this.pis, modelIndex, 1); +this.drawTypes = JU.AU.deleteElements(this.drawTypes, modelIndex, 1); +this.drawVertexCounts = JU.AU.deleteElements(this.drawVertexCounts, modelIndex, 1); +this.ptCenters = JU.AU.deleteElements(this.ptCenters, modelIndex, 1); +this.axes = JU.AU.deleteElements(this.axes, modelIndex, 1); +var bs = JU.BSUtil.newAndSetBit(modelIndex); +JU.BSUtil.deleteBits(this.modelFlags, bs); +}, "~N"); +Clazz.defineMethod(c$, "isRenderScalable", +function(){ +switch (this.drawType) { +case J.shapespecial.Draw.EnumDrawType.ARROW: +return (this.connectedAtoms != null); +case J.shapespecial.Draw.EnumDrawType.ARC: +case J.shapespecial.Draw.EnumDrawType.CIRCLE: +case J.shapespecial.Draw.EnumDrawType.CIRCULARPLANE: +return true; +default: +return this.haveXyPoints; +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Ellipsoid.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Ellipsoid.js new file mode 100755 index 000000000000..9aea746c2f34 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Ellipsoid.js @@ -0,0 +1,128 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["JU.P3"], "J.shapespecial.Ellipsoid", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.colix = 23; +this.visible = false; +this.isValid = false; +this.center = null; +this.tensor = null; +this.options = null; +this.isOn = true; +this.id = null; +this.myID = 0; +this.modelIndex = 0; +this.pid = 0; +this.lengths = null; +this.scale = 1; +this.percent = 0; +this.scaleXYZ = null; +this.info = null; +this.label = null; +Clazz.instantialize(this, arguments);}, J.shapespecial, "Ellipsoid", null); +Clazz.prepareFields (c$, function(){ +this.center = JU.P3.new3(0, 0, 0); +this.myID = ++J.shapespecial.Ellipsoid.ID; +}); +Clazz.makeConstructor(c$, +function(){ +}); +c$.getEmptyEllipsoid = Clazz.defineMethod(c$, "getEmptyEllipsoid", +function(id, modelIndex){ +var e = new J.shapespecial.Ellipsoid(); +e.id = id; +e.modelIndex = modelIndex; +return e; +}, "~S,~N"); +c$.getEllipsoidForAtomTensor = Clazz.defineMethod(c$, "getEllipsoidForAtomTensor", +function(t, center){ +var e = new J.shapespecial.Ellipsoid(); +e.tensor = t; +e.modelIndex = t.modelIndex; +e.colix = 0; +e.center = center; +return e; +}, "JU.Tensor,JM.Atom"); +Clazz.defineMethod(c$, "setCenter", +function(center){ +this.center = center; +this.validate(false); +}, "JU.P3"); +Clazz.defineMethod(c$, "getLength", +function(i){ +if (this.lengths == null) this.setLengths(); +return (this.lengths == null ? NaN : this.lengths[i]); +}, "~N"); +Clazz.defineMethod(c$, "scaleAxes", +function(value){ +this.scaleXYZ = value; +this.setLengths(); +}, "~A"); +Clazz.defineMethod(c$, "setLengths", +function(){ +if (this.tensor == null) return; +if (this.lengths == null) this.lengths = Clazz.newFloatArray (3, 0); +for (var i = 0; i < this.lengths.length; i++) this.lengths[i] = this.tensor.getFactoredValue(i) * this.scale * (this.scaleXYZ == null ? 1 : Math.abs(this.scaleXYZ[i])); + +}); +Clazz.defineMethod(c$, "setScale", +function(scale, isPercent){ +if (scale <= 0) { +this.isValid = false; +return; +}if (isPercent) { +if (scale == 2147483647) scale = (this.tensor.forThermalEllipsoid ? 50 : 100); +this.percent = Clazz.floatToInt(scale); +scale = (this.tensor.forThermalEllipsoid ? J.shapespecial.Ellipsoid.getThermalRadius(this.percent) : this.percent < 1 ? 0 : this.percent / 100.0); +}this.scale = scale; +this.validate(true); +}, "~N,~B"); +c$.getThermalRadius = Clazz.defineMethod(c$, "getThermalRadius", +function(prob){ +return J.shapespecial.Ellipsoid.crtval[prob < 1 ? 0 : prob > 99 ? 98 : prob - 1]; +}, "~N"); +Clazz.defineMethod(c$, "setTensor", +function(tensor){ +this.isValid = false; +this.tensor = tensor; +this.validate(tensor != null); +}, "JU.Tensor"); +Clazz.defineMethod(c$, "validate", +function(andSetLengths){ +if (this.tensor == null) return; +if (andSetLengths) this.setLengths(); +this.isValid = true; +}, "~B"); +c$.getEquationForQuadricWithCenter = Clazz.defineMethod(c$, "getEquationForQuadricWithCenter", +function(x, y, z, mToElliptical, vTemp, mTemp, coef, mDeriv){ +vTemp.set(x, y, z); +mToElliptical.rotate(vTemp); +var f = 1 - vTemp.dot(vTemp); +mTemp.transposeM(mToElliptical); +mTemp.rotate(vTemp); +mTemp.mul(mToElliptical); +coef[0] = mTemp.m00 / f; +coef[1] = mTemp.m11 / f; +coef[2] = mTemp.m22 / f; +coef[3] = mTemp.m01 * 2 / f; +coef[4] = mTemp.m02 * 2 / f; +coef[5] = mTemp.m12 * 2 / f; +coef[6] = -2 * vTemp.x / f; +coef[7] = -2 * vTemp.y / f; +coef[8] = -2 * vTemp.z / f; +coef[9] = -1; +if (mDeriv == null) return; +mDeriv.setIdentity(); +mDeriv.m00 = (2 * coef[0]); +mDeriv.m11 = (2 * coef[1]); +mDeriv.m22 = (2 * coef[2]); +mDeriv.m01 = mDeriv.m10 = coef[3]; +mDeriv.m02 = mDeriv.m20 = coef[4]; +mDeriv.m12 = mDeriv.m21 = coef[5]; +mDeriv.m03 = coef[6]; +mDeriv.m13 = coef[7]; +mDeriv.m23 = coef[8]; +}, "~N,~N,~N,JU.M3,JU.V3,JU.M3,~A,JU.M4"); +c$.ID = 0; +c$.crtval = Clazz.newFloatArray(-1, [0.3389, 0.4299, 0.4951, 0.5479, 0.5932, 0.6334, 0.6699, 0.7035, 0.7349, 0.7644, 0.7924, 0.8192, 0.8447, 0.8694, 0.8932, 0.9162, 0.9386, 0.9605, 0.9818, 1.0026, 1.0230, 1.0430, 1.0627, 1.0821, 1.1012, 1.1200, 1.1386, 1.1570, 1.1751, 1.1932, 1.2110, 1.2288, 1.2464, 1.2638, 1.2812, 1.2985, 1.3158, 1.3330, 1.3501, 1.3672, 1.3842, 1.4013, 1.4183, 1.4354, 1.4524, 1.4695, 1.4866, 1.5037, 1.5209, 1.5382, 1.5555, 1.5729, 1.5904, 1.6080, 1.6257, 1.6436, 1.6616, 1.6797, 1.6980, 1.7164, 1.7351, 1.7540, 1.7730, 1.7924, 1.8119, 1.8318, 1.8519, 1.8724, 1.8932, 1.9144, 1.9360, 1.9580, 1.9804, 2.0034, 2.0269, 2.0510, 2.0757, 2.1012, 2.1274, 2.1544, 2.1824, 2.2114, 2.2416, 2.2730, 2.3059, 2.3404, 2.3767, 2.4153, 2.4563, 2.5003, 2.5478, 2.5997, 2.6571, 2.7216, 2.7955, 2.8829, 2.9912, 3.1365, 3.3682]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Ellipsoids.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Ellipsoids.js new file mode 100755 index 000000000000..d41511c8f4ee --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Ellipsoids.js @@ -0,0 +1,324 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["J.shape.AtomShape", "java.util.Hashtable", "JU.P3i"], "J.shapespecial.Ellipsoids", ["JU.BS", "$.Lst", "$.PT", "$.SB", "$.V3", "J.api.Interface", "J.c.PAL", "J.shapespecial.Ellipsoid", "JU.BSUtil", "$.C", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ptXY = null; +this.simpleEllipsoids = null; +this.atomEllipsoids = null; +this.typeSelected = "1"; +this.selectedAtoms = null; +this.ellipsoidSet = null; +this.scale = 0; +Clazz.instantialize(this, arguments);}, J.shapespecial, "Ellipsoids", J.shape.AtomShape); +Clazz.prepareFields (c$, function(){ +this.ptXY = new JU.P3i(); +this.simpleEllipsoids = new java.util.Hashtable(); +this.atomEllipsoids = new java.util.Hashtable(); +}); +Clazz.overrideMethod(c$, "checkObjectHovered", +function(x, y, bsModels){ +if (!this.vwr.getDrawHover() || this.simpleEllipsoids == null || this.simpleEllipsoids.isEmpty()) return false; +var e = this.findPickedObject(x, y, false, bsModels); +if (e == null) return false; +this.vwr.hoverOnPt(x, y, e.label, e.id, e.center); +return true; +}, "~N,~N,JU.BS"); +Clazz.overrideMethod(c$, "checkObjectClicked", +function(x, y, action, bsModels, drawPicking){ +if (action == 0 || !drawPicking || this.simpleEllipsoids == null || this.simpleEllipsoids.isEmpty()) return null; +var e = this.findPickedObject(x, y, false, bsModels); +if (e == null) return null; +var map = null; +map = new java.util.Hashtable(); +map.put("id", e.id); +if (e.label != null) map.put("label", e.label); +map.put("pt", e.center); +map.put("modelIndex", Integer.$valueOf(e.modelIndex)); +map.put("model", this.vwr.getModelNumberDotted(e.modelIndex)); +map.put("type", "ellipsoid"); +if (action != 0) this.vwr.setStatusAtomPicked(-2, "[\"ellipsoid\"," + JU.PT.esc(e.id) + "," + +e.modelIndex + ",1," + e.center.x + "," + e.center.y + "," + e.center.z + "," + (e.label == null ? "\"\"" : JU.PT.esc(e.label)) + "]", map, false); +return map; +}, "~N,~N,~N,JU.BS,~B"); +Clazz.defineMethod(c$, "findPickedObject", +function(x, y, isPicking, bsModels){ +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}var picked = null; +for (var id, $id = this.simpleEllipsoids.keySet().iterator (); $id.hasNext()&& ((id = $id.next ()) || true);) { +var e = this.simpleEllipsoids.get(id); +if (!e.visible || !bsModels.get(e.modelIndex)) continue; +var d2 = this.coordinateInRange(x, y, e.center, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +picked = e; +}} +return picked; +}, "~N,~N,~B,JU.BS"); +Clazz.defineMethod(c$, "isActive", +function(){ +return !this.atomEllipsoids.isEmpty() || !this.simpleEllipsoids.isEmpty(); +}); +Clazz.overrideMethod(c$, "getIndexFromName", +function(thisID){ +return (this.checkID(thisID) ? 1 : -1); +}, "~S"); +Clazz.overrideMethod(c$, "setSize", +function(size, bsSelected){ +if (!this.isSet || size == 0 && this.ms.atomTensors == null) return; +var isAll = (bsSelected == null); +if (!isAll && this.selectedAtoms != null) bsSelected = this.selectedAtoms; +var tensors = this.ms.getAllAtomTensors(this.typeSelected); +if (tensors == null) return; +var atoms = this.ms.at; +for (var i = tensors.size(); --i >= 0; ) { +var t = tensors.get(i); +if (isAll || t.isSelected(bsSelected, -1)) { +var e = this.atomEllipsoids.get(t); +var isNew = (size != 0 && e == null); +if (isNew) this.atomEllipsoids.put(t, e = J.shapespecial.Ellipsoid.getEllipsoidForAtomTensor(t, atoms[t.atomIndex1])); +if (e != null) { +e.setScale(size, true); +}}} +}, "~N,JU.BS"); +Clazz.overrideMethod(c$, "getPropertyData", +function(property, data){ +if (property === "checkID") { +return (this.checkID(data[0])); +}return this.getPropShape(property, data); +}, "~S,~A"); +Clazz.defineMethod(c$, "checkID", +function(thisID){ +this.ellipsoidSet = new JU.Lst(); +if (thisID == null) return false; +thisID = thisID.toLowerCase(); +if (JU.PT.isWild(thisID)) { +for (var e, $e = this.simpleEllipsoids.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey().toLowerCase(); +if (JU.PT.isMatch(key, thisID, true, true)) this.ellipsoidSet.addLast(e.getValue()); +} +}var e = this.simpleEllipsoids.get(thisID); +if (e != null) this.ellipsoidSet.addLast(e); +return (this.ellipsoidSet.size() > 0); +}, "~S"); +Clazz.defineMethod(c$, "initEllipsoids", +function(value){ +var haveID = (value != null); +this.checkID(value); +if (haveID) this.typeSelected = null; +this.selectedAtoms = null; +return haveID; +}, "~O"); +Clazz.overrideMethod(c$, "initShape", +function(){ +this.setProperty("thisID", null, null); +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if (propertyName === "thisID") { +this.scale = NaN; +if (this.initEllipsoids(value) && this.ellipsoidSet.size() == 0) { +var id = value; +var e = J.shapespecial.Ellipsoid.getEmptyEllipsoid(id, this.vwr.am.cmi); +this.ellipsoidSet.addLast(e); +this.simpleEllipsoids.put(id, e); +}return; +}if ("atoms" === propertyName) { +this.selectedAtoms = value; +return; +}if (propertyName === "deleteModelAtoms") { +var modelIndex = ((value)[2])[0]; +var e = this.simpleEllipsoids.values().iterator(); +while (e.hasNext()) if (e.next().tensor.modelIndex == modelIndex) e.remove(); + +e = this.atomEllipsoids.values().iterator(); +while (e.hasNext()) if (e.next().modelIndex == modelIndex) e.remove(); + +this.ellipsoidSet.clear(); +return; +}var mode = "ax ce co de eq mo on op sc tr la".indexOf((propertyName + " ").substring(0, 2)); +if (this.ellipsoidSet.size() > 0) { +if ("translucentLevel" === propertyName) { +this.setPropS(propertyName, value, bs); +return; +}if (mode >= 0) for (var i = this.ellipsoidSet.size(); --i >= 0; ) this.setProp(this.ellipsoidSet.get(i), Clazz.doubleToInt(mode / 3), value); + +return; +}if ("color" === propertyName) { +var colix = JU.C.getColixO(value); +var pid = J.c.PAL.pidOf(value); +if (this.selectedAtoms != null) bs = this.selectedAtoms; +for (var e, $e = this.atomEllipsoids.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.tensor.type.equals(this.typeSelected) && e.tensor.isSelected(bs, -1)) { +e.colix = this.getColixI(colix, pid, e.tensor.atomIndex1); +e.pid = pid; +} +return; +}if ("on" === propertyName) { +var isOn = (value).booleanValue(); +if (this.selectedAtoms != null) bs = this.selectedAtoms; +if (isOn) { +this.setSize(Float.isNaN(this.scale) ? 2147483647 : Clazz.floatToInt(this.scale * 100), bs); +}for (var e, $e = this.atomEllipsoids.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var t = e.tensor; +if ((t.type.equals(this.typeSelected) || this.typeSelected.equals(t.altType)) && t.isSelected(bs, -1)) { +e.isOn = isOn; +}(e.center).setShapeVisibility(this.vf, isOn); +} +return; +}if ("options" === propertyName) { +var options = (value).toLowerCase().trim(); +if (options.length == 0) options = null; +if (this.selectedAtoms != null) bs = this.selectedAtoms; +if (options != null) this.setSize(2147483647, bs); +for (var e, $e = this.atomEllipsoids.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.tensor.type.equals(this.typeSelected) && e.tensor.isSelected(bs, -1)) e.options = options; + +return; +}if ("params" === propertyName) { +var data = value; +data[2] = null; +this.typeSelected = "0"; +this.setSize(50, bs); +}if ("points" === propertyName) { +return; +}if ("scale" === propertyName) { +this.scale = (value).floatValue(); +this.setSize(Clazz.floatToInt(this.scale * 100), bs); +return; +}if ("select" === propertyName) { +this.typeSelected = (value).toLowerCase(); +return; +}if ("translucency" === propertyName) { +var isTranslucent = (value.equals("translucent")); +for (var e, $e = this.atomEllipsoids.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.tensor.type.equals(this.typeSelected) && e.tensor.isSelected(bs, -1)) e.colix = JU.C.getColixTranslucent3(e.colix, isTranslucent, this.translucentLevel); + +return; +}this.setPropS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setProp", +function(e, mode, value){ +switch (mode) { +case 0: +e.setTensor((J.api.Interface.getUtil("Tensor", this.vwr, "script")).setFromAxes(value)); +break; +case 1: +e.setCenter(value); +break; +case 2: +e.colix = JU.C.getColixO(value); +break; +case 3: +this.simpleEllipsoids.remove(e.id); +break; +case 4: +e.setTensor((J.api.Interface.getUtil("Tensor", this.vwr, "script")).setFromThermalEquation(value, null)); +e.tensor.modelIndex = e.modelIndex; +break; +case 5: +e.modelIndex = (value).intValue(); +if (e.tensor != null) e.tensor.modelIndex = e.modelIndex; +break; +case 6: +e.isOn = (value).booleanValue(); +break; +case 7: +e.options = (value).toLowerCase(); +break; +case 8: +if (Clazz.instanceOf(value, Float)) { +e.setScale((value).floatValue(), false); +} else { +e.scaleAxes(value); +}break; +case 9: +e.colix = JU.C.getColixTranslucent3(e.colix, value.equals("translucent"), this.translucentLevel); +break; +case 10: +e.label = value; +break; +} +return; +}, "J.shapespecial.Ellipsoid,~N,~O"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +if (!this.isActive()) return ""; +var sb = new JU.SB(); +sb.append("\n"); +if (!this.simpleEllipsoids.isEmpty()) this.getStateID(sb); +if (!this.atomEllipsoids.isEmpty()) this.getStateAtoms(sb); +return sb.toString(); +}); +Clazz.defineMethod(c$, "getStateID", +function(sb){ +var v1 = new JU.V3(); +for (var ellipsoid, $ellipsoid = this.simpleEllipsoids.values().iterator (); $ellipsoid.hasNext()&& ((ellipsoid = $ellipsoid.next ()) || true);) { +var t = ellipsoid.tensor; +if (!ellipsoid.isValid || t == null) continue; +sb.append(" Ellipsoid ID ").append(ellipsoid.id).append(" modelIndex ").appendI(t.modelIndex).append(" center ").append(JU.Escape.eP(ellipsoid.center)).append(" axes"); +for (var i = 0; i < 3; i++) { +v1.setT(t.eigenVectors[i]); +v1.scale(ellipsoid.lengths[i]); +sb.append(" ").append(JU.Escape.eP(v1)); +} +sb.append(" " + J.shape.Shape.getColorCommandUnk("", ellipsoid.colix, this.translucentAllowed)); +if (ellipsoid.label != null) sb.append(" label " + JU.PT.esc(ellipsoid.label)); +if (ellipsoid.options != null) sb.append(" options ").append(JU.PT.esc(ellipsoid.options)); +if (!ellipsoid.isOn) sb.append(" off"); +sb.append(";\n"); +} +}, "JU.SB"); +Clazz.defineMethod(c$, "getStateAtoms", +function(sb){ +var bsDone = new JU.BS(); +var temp = new java.util.Hashtable(); +var temp2 = new java.util.Hashtable(); +for (var e, $e = this.atomEllipsoids.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var iType = e.tensor.iType; +if (bsDone.get(iType + 1)) continue; +bsDone.set(iType + 1); +var isADP = (e.tensor.iType == 1 || e.tensor.iType == 0); +var cmd = (isADP ? null : "Ellipsoids set " + JU.PT.esc(e.tensor.type)); +for (var e2, $e2 = this.atomEllipsoids.values().iterator (); $e2.hasNext()&& ((e2 = $e2.next ()) || true);) { +if (e2.tensor.iType != iType || isADP && !e2.isOn) continue; +var i = e2.tensor.atomIndex1; +JU.BSUtil.setMapBitSet(temp, i, i, (isADP ? "Ellipsoids " + e2.percent : cmd + " scale " + e2.scale + (e2.options == null ? "" : " options " + JU.PT.esc(e2.options)) + (e2.isOn ? " ON" : " OFF"))); +if (e2.colix != 0) JU.BSUtil.setMapBitSet(temp2, i, i, J.shape.Shape.getColorCommand(cmd, e2.pid, e2.colix, this.translucentAllowed)); +} +} +sb.append(this.vwr.getCommands(temp, temp2, "select")); +}, "JU.SB"); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +if (!this.isActive()) return; +this.setVis(this.simpleEllipsoids, bsModels); +this.setVis(this.atomEllipsoids, bsModels); +}, "JU.BS"); +Clazz.defineMethod(c$, "setVis", +function(ellipsoids, bs){ +var atoms = this.ms.at; +for (var e, $e = ellipsoids.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var t = e.tensor; +var isOK = (t != null && e.isValid && e.isOn); +if (isOK && t.atomIndex1 >= 0) { +if (t.iType == 1) { +var isModTensor = t.isModulated; +var isUnmodTensor = t.isUnmodulated; +var isModAtom = this.ms.isModulated(t.atomIndex1); +isOK = (!isModTensor && !isUnmodTensor || isModTensor == isModAtom); +}atoms[t.atomIndex1].setShapeVisibility(this.vf, true); +}e.visible = isOK && (e.modelIndex < 0 || bs.get(e.modelIndex)); +} +}, "java.util.Map,JU.BS"); +Clazz.overrideMethod(c$, "setAtomClickability", +function(){ +if (this.atomEllipsoids.isEmpty()) return; +var atoms = this.ms.at; +for (var e, $e = this.atomEllipsoids.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var i = e.tensor.atomIndex1; +var atom = atoms[i]; +if ((atom.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(i)) continue; +atom.setClickable(this.vf); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/GeoSurface.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/GeoSurface.js new file mode 100755 index 000000000000..cad17a95899c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/GeoSurface.js @@ -0,0 +1,11 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["J.shapespecial.Dots"], "J.shapespecial.GeoSurface", null, function(){ +var c$ = Clazz.declareType(J.shapespecial, "GeoSurface", J.shapespecial.Dots); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapespecial.GeoSurface, "initShape", []); +this.isSurface = true; +this.translucentAllowed = true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Polyhedra.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Polyhedra.js new file mode 100755 index 000000000000..0f484023e0c0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Polyhedra.js @@ -0,0 +1,987 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["J.shape.AtomShape", "JU.AU", "$.BS", "$.P3", "$.V3"], "J.shapespecial.Polyhedra", ["java.util.Arrays", "$.Hashtable", "JU.Lst", "$.Measure", "$.P4", "$.PT", "$.SB", "J.api.Interface", "J.c.PAL", "J.shapespecial.Polyhedron", "JU.BSUtil", "$.C", "$.Logger", "$.Normix"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.otherAtoms = null; +this.normalsT = null; +this.planesT = null; +this.polyhedronCount = 0; +this.polyhedrons = null; +this.drawEdges = 0; +this.radius = 0; +this.radiusMin = 0; +this.pointScale = 0; +this.nVertices = 0; +this.faceCenterOffset = 0; +this.isCollapsed = false; +this.isFull = false; +this.iHaveCenterBitSet = false; +this.bondedOnly = false; +this.haveBitSetVertices = false; +this.centers = null; +this.thisID = null; +this.center = null; +this.bsVertices = null; +this.bsVertexCount = null; +this.useUnitCell = false; +this.nPoints = 0; +this.planarParam = 0; +this.info = null; +this.distanceRef = 0; +this.modelIndex = 0; +this.isAuto = false; +this.explicitFaces = null; +this.bsPolys = null; +this.vAB = null; +this.vAC = null; +this.vBC = null; +Clazz.instantialize(this, arguments);}, J.shapespecial, "Polyhedra", J.shape.AtomShape, java.util.Comparator); +Clazz.prepareFields (c$, function(){ +this.otherAtoms = new Array(498); +this.normalsT = new Array(251); +this.planesT = JU.AU.newInt2(250); +this.polyhedrons = new Array(32); +this.bsPolys = new JU.BS(); +this.vAB = new JU.V3(); +this.vAC = new JU.V3(); +this.vBC = new JU.V3(); +}); +Clazz.overrideMethod(c$, "compare", +function(a, b){ +var da = (a[0] == null ? 3.4028235E38 : (a[0]).floatValue()); +var db = (b[0] == null ? 3.4028235E38 : (b[0]).floatValue()); +return (da < db ? -1 : da > db ? 1 : 0); +}, "~A,~A"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if (this.thisID != null) bs = new JU.BS(); +if ("init" === propertyName) { +this.faceCenterOffset = 0.25; +this.planarParam = NaN; +this.radius = this.radiusMin = this.pointScale = 0.0; +this.nVertices = this.nPoints = 0; +this.modelIndex = -1; +this.bsVertices = null; +this.thisID = null; +this.center = null; +this.centers = null; +this.info = null; +this.bsVertexCount = new JU.BS(); +this.bondedOnly = this.isCollapsed = this.isFull = this.iHaveCenterBitSet = this.useUnitCell = this.isAuto = this.haveBitSetVertices = false; +if (Boolean.TRUE === value) this.drawEdges = 0; +return; +}if ("definedFaces" === propertyName) { +this.setDefinedFaces((value)[1], (value)[0]); +return; +}if ("generate" === propertyName) { +if (!this.iHaveCenterBitSet && bs != null && !bs.isEmpty()) { +this.centers = bs; +this.iHaveCenterBitSet = true; +}var modifyOnly = (value === Boolean.TRUE); +if (modifyOnly) bs.and(this.vwr.getAtomBitSet("polyhedra")); +var info = this.info; +this.deletePolyhedra(); +this.info = info; +this.buildPolyhedra(); +return; +}if ("thisID" === propertyName) { +this.thisID = value; +return; +}if ("center" === propertyName) { +this.center = value; +return; +}if ("offset" === propertyName) { +if (this.thisID != null) this.offsetPolyhedra(value); +return; +}if ("scale" === propertyName) { +if (this.thisID != null) this.scalePolyhedra((value).floatValue()); +return; +}if ("model" === propertyName) { +this.modelIndex = (value).intValue(); +return; +}if ("collapsed" === propertyName) { +this.isCollapsed = true; +return; +}if ("full" === propertyName) { +this.isFull = true; +return; +}if ("nVertices" === propertyName) { +var n = (value).intValue(); +if (n < 0) { +if (-n >= this.nVertices) { +this.bsVertexCount.setBits(this.nVertices, 1 - n); +this.nVertices = -n; +}} else { +this.bsVertexCount.set(this.nVertices = n); +}return; +}if ("centers" === propertyName) { +this.centers = value; +this.iHaveCenterBitSet = true; +return; +}if ("unitCell" === propertyName) { +this.useUnitCell = true; +return; +}if ("to" === propertyName) { +this.bsVertices = value; +return; +}if ("toBitSet" === propertyName) { +this.bsVertices = value; +this.haveBitSetVertices = true; +return; +}if ("toVertices" === propertyName) { +var points = value; +this.nPoints = Math.min(points.length, 250); +for (var i = this.nPoints; --i >= 0; ) this.otherAtoms[i] = points[i]; + +return; +}if ("faceCenterOffset" === propertyName) { +this.faceCenterOffset = (value).floatValue(); +return; +}if ("distanceFactor" === propertyName) { +return; +}if ("planarParam" === propertyName) { +this.planarParam = (value).floatValue(); +return; +}if ("bonds" === propertyName) { +this.bondedOnly = true; +return; +}if ("info" === propertyName) { +this.info = value; +var o = this.info.get("id"); +if (o != null) this.thisID = (Clazz.instanceOf(o,"JS.SV") ? (o).asString() : o.toString()); +this.centers = (this.info.containsKey("center") ? null : JU.BSUtil.newAndSetBit((this.info.get("atomIndex")).intValue)); +this.iHaveCenterBitSet = (this.centers != null); +return; +}if ("delete" === propertyName) { +if (!this.iHaveCenterBitSet) this.centers = bs; +this.deletePolyhedra(); +return; +}if ("on" === propertyName) { +if (!this.iHaveCenterBitSet) this.centers = bs; +this.setVisible(true); +return; +}if ("off" === propertyName) { +if (!this.iHaveCenterBitSet) this.centers = bs; +this.setVisible(false); +return; +}if ("noedges" === propertyName) { +this.drawEdges = 0; +return; +}if ("edges" === propertyName) { +this.drawEdges = 1; +return; +}if ("edgesOnly" === propertyName) { +this.drawEdges = 3; +return; +}if ("frontedges" === propertyName) { +this.drawEdges = 2; +return; +}if (propertyName.indexOf("color") == 0) { +bs = ("colorThis" === propertyName && this.iHaveCenterBitSet ? this.centers : this.andBitSet(bs)); +var isPhase = ("colorPhase" === propertyName); +var cvalue = (isPhase ? (value)[1] : value); +var colixEdge = (isPhase ? JU.C.getColix(((value)[0]).intValue()) : 0); +var colix = JU.C.getColixO(isPhase ? cvalue : value); +var p; +var bs1 = this.findPolyBS(bs, false); +for (var i = bs1.nextSetBit(0); i >= 0; i = bs1.nextSetBit(i + 1)) { +p = this.polyhedrons[i]; +if (p.id == null) { +p.colixEdge = colixEdge; +} else { +p.colixEdge = colixEdge; +p.colix = colix; +}} +if (this.thisID != null) return; +value = cvalue; +propertyName = "color"; +}if (propertyName.indexOf("translucency") == 0) { +var isTranslucent = (value.equals("translucent")); +if (this.thisID != null) { +var bs1 = this.findPolyBS(bs, false); +var p; +for (var i = bs1.nextSetBit(0); i >= 0; i = bs1.nextSetBit(i + 1)) { +p = this.polyhedrons[i]; +p.colix = JU.C.getColixTranslucent3(p.colix, isTranslucent, this.translucentLevel); +if (p.colixEdge != 0) p.colixEdge = JU.C.getColixTranslucent3(p.colixEdge, isTranslucent, this.translucentLevel); +} +return; +}bs = ("translucentThis".equals(value) && this.iHaveCenterBitSet ? this.centers : this.andBitSet(bs)); +if (value.equals("translucentThis")) value = "translucent"; +}if ("radius" === propertyName) { +var v = (value).floatValue(); +if (v <= 0) { +this.isAuto = true; +v = (v == 0 ? 6 : -v); +}this.radius = v; +return; +}if ("radius1" === propertyName) { +this.radiusMin = this.radius; +this.radius = (value).floatValue(); +return; +}if ("points" === propertyName) { +this.pointScale = (value).floatValue(); +this.pointsPolyhedra(bs, this.pointScale); +return; +}if (propertyName === "deleteModelAtoms") { +var modelIndex = ((value)[2])[0]; +for (var i = this.polyhedronCount; --i >= 0; ) { +var p = this.polyhedrons[i]; +p.info = null; +if (p.modelIndex > modelIndex) { +p.modelIndex--; +} else if (p.modelIndex == modelIndex) { +this.polyhedronCount--; +this.polyhedrons = JU.AU.deleteElements(this.polyhedrons, i, 1); +}} +}this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setDefinedFaces", +function(points, faces){ +var bsUsed = new JU.BS(); +for (var i = faces.length; --i >= 0; ) { +var face = faces[i]; +for (var j = face.length; --j >= 0; ) bsUsed.set(face[j]); + +} +var bsNot = JU.BSUtil.newBitSet2(0, bsUsed.length()); +bsNot.andNot(bsUsed); +var nNot = bsNot.cardinality(); +if (nNot > 0) { +var np = points.length; +var mapOldToNew = Clazz.newIntArray (np, 0); +var mapNewToOld = Clazz.newIntArray (np, 0); +var n = 0; +for (var i = 0; i < np; i++) if (!bsNot.get(i)) { +mapNewToOld[n] = i; +mapOldToNew[i] = n++; +} +var pnew = new Array(n); +for (var i = 0; i < n; i++) pnew[i] = points[mapNewToOld[i]]; + +points = pnew; +for (var i = faces.length; --i >= 0; ) { +var face = faces[i]; +for (var j = face.length; --j >= 0; ) face[j] = mapOldToNew[face[j]]; + +} +}var n = this.nPoints = points.length; +this.center = new JU.P3(); +this.otherAtoms = new Array(n + 1); +if (n > 0) { +this.otherAtoms[n] = this.center; +for (var i = 0; i < n; i++) this.center.add(this.otherAtoms[i] = points[i]); + +this.center.scale(1 / n); +}this.explicitFaces = faces; +}, "~A,~A"); +Clazz.defineMethod(c$, "pointsPolyhedra", +function(bs, pointScale){ +bs = this.findPolyBS(this.thisID == null ? bs : null, false); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.polyhedrons[i].setPointScale(pointScale); + +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "scalePolyhedra", +function(scale){ +var bs = this.findPolyBS(null, false); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.polyhedrons[i].scale = scale; + +}, "~N"); +Clazz.defineMethod(c$, "offsetPolyhedra", +function(value){ +var bs = this.findPolyBS(null, false); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.polyhedrons[i].setOffset(JU.P3.newP(value)); + +}, "JU.P3"); +Clazz.overrideMethod(c$, "getIndexFromName", +function(id){ +if (id != null) for (var i = this.polyhedronCount; --i >= 0; ) if (id.equalsIgnoreCase(this.polyhedrons[i].id)) return i; + +return -1; +}, "~S"); +Clazz.overrideMethod(c$, "getProperty", +function(property, i){ +if ("list".equals(property)) { +var sb = new JU.SB(); +for (i = 0; i < this.polyhedronCount; i++) { +sb.appendI(i + 1); +this.polyhedrons[i].list(sb); +} +return sb.toString(); +}var info = this.polyhedrons[i].getInfo(this.vwr, property); +return (property.equalsIgnoreCase("info") ? info : info.get(property)); +}, "~S,~N"); +Clazz.overrideMethod(c$, "getPropertyData", +function(property, data){ +var iatom = (Clazz.instanceOf(data[0], Integer) ? (data[0]).intValue() : -2147483648); +var id = ((typeof(data[0])=='string') ? data[0] : null); +var p; +if (property === "index") { +var i = this.getIndexFromName(id); +if (i >= 0) data[1] = Integer.$valueOf(i); +return (i >= 0); +}if (property === "checkID") { +return this.checkID(id); +}if (property === "getAtomsWithin") { +p = this.findPoly(id, iatom, true, false); +if (p == null) return false; +data[2] = this.getAtomsWithin(p, (data[1]).floatValue()); +return true; +}if (property === "info") { +p = this.findPoly(id, iatom, true, false); +if (p == null) return false; +data[1] = p.getInfo(this.vwr, "info"); +return true; +}if (property === "syminfo") { +p = this.findPoly(id, iatom, true, false); +if (p == null) return false; +p.getSymmetry(this.vwr, true); +data[1] = p.getInfo(this.vwr, "info"); +return true; +}if (property === "points") { +p = this.findPoly(id, iatom, false, false); +if (p == null) return false; +data[1] = p.vertices; +return true; +}if (property === "symmetry") { +var bsSelected = data[2]; +var s = ""; +for (var i = 0; i < this.polyhedronCount; i++) { +p = this.polyhedrons[i]; +if (p.id == null ? id != null || bsSelected != null && !bsSelected.get(p.centralAtom.i) : id != null && !JU.PT.isLike(p.id, id)) continue; +s += (i + 1) + "\t" + p.getSymmetry(this.vwr, true) + "\n"; +} +data[1] = s; +return true; +}if (property === "move") { +var mat = data[1]; +if (mat == null) return false; +var bsMoved = data[0]; +var bs = this.findPolyBS(bsMoved, false); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.polyhedrons[i].move(mat, bsMoved); + +return true; +}if (property === "getCenters") { +var smiles = data[1]; +var bsSelected = data[2]; +var sm = (smiles == null ? null : this.vwr.getSmilesMatcher()); +if (sm != null) smiles = sm.cleanSmiles(smiles); +var nv = (smiles != null ? JU.PT.countChar(smiles, '*') : iatom); +if (nv == 0) nv = -2147483648; +var bs = new JU.BS(); +if (smiles == null || sm != null) for (var i = this.polyhedronCount; --i >= 0; ) { +p = this.polyhedrons[i]; +if (p.id != null) continue; +if (nv != (nv > 0 ? p.nVertices : nv > -2147483648 ? -p.faces.length : nv)) continue; +iatom = p.centralAtom.i; +if (bsSelected != null && !bsSelected.get(iatom)) continue; +if (smiles == null) { +bs.set(iatom); +continue; +}p.getSymmetry(this.vwr, false); +var smiles0 = sm.cleanSmiles(p.polySmiles); +try { +if (sm.areEqual(smiles, smiles0) > 0) bs.set(iatom); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +} +data[1] = bs; +return true; +}if (property === "allInfo") { +var info = new JU.Lst(); +for (var i = this.polyhedronCount; --i >= 0; ) info.addLast(this.polyhedrons[i].getInfo(this.vwr, "info")); + +data[1] = info; +return true; +}return this.getPropShape(property, data); +}, "~S,~A"); +Clazz.defineMethod(c$, "getAtomsWithin", +function(p, offset){ +var faces = p.faces; +var vertices = p.vertices; +var center = (p.center == null ? p.centralAtom : p.center); +if (p.planes == null) { +var vNorm = new JU.V3(); +var vAB = new JU.V3(); +p.planes = new Array(faces.length); +for (var iface = faces.length; --iface >= 0; ) { +var plane = p.planes[iface] = new JU.P4(); +JU.Measure.getPlaneThroughPoints(vertices[faces[iface][0]], vertices[faces[iface][1]], vertices[faces[iface][2]], vNorm, vAB, plane); +} +}var maxDistance = 0; +for (var i = p.nVertices; --i >= 0; ) { +var d = vertices[i].distance(center); +if (d > maxDistance) maxDistance = d; +} +var bsAtoms = new JU.BS(); +this.vwr.ms.getAtomsWithin(maxDistance + offset, center, bsAtoms, p.modelIndex); +var atoms = this.ms.at; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +for (var f = faces.length; --f >= 0; ) { +if (JU.Measure.distanceToPlane(p.planes[f], atoms[i]) > offset + 0.001) { +bsAtoms.clear(i); +break; +}} +} +return bsAtoms; +}, "J.shapespecial.Polyhedron,~N"); +Clazz.defineMethod(c$, "checkID", +function(thisID){ +this.thisID = thisID; +return (!this.findPolyBS(null, false).isEmpty()); +}, "~S"); +Clazz.defineMethod(c$, "findPoly", +function(id, iatom, allowCollapsed, andDelete){ +for (var i = this.polyhedronCount; --i >= 0; ) { +var p = this.polyhedrons[i]; +if (p.id == null ? p.centralAtom.i == iatom : p.id.equalsIgnoreCase(id)) { +if (andDelete) { +this.polyhedronCount--; +for (; i < this.polyhedronCount; i++) this.polyhedrons[i] = this.polyhedrons[i + 1]; + +}return (allowCollapsed || !this.polyhedrons[i].collapsed ? this.polyhedrons[i] : null); +}} +return null; +}, "~S,~N,~B,~B"); +Clazz.defineMethod(c$, "findPolyBS", +function(bsCenters, isAll){ +var bs = this.bsPolys; +bs.clearAll(); +if (isAll) { +bs.setBits(0, this.polyhedronCount); +} else { +var p; +for (var i = this.polyhedronCount; --i >= 0; ) { +p = this.polyhedrons[i]; +if (p.id == null ? bsCenters != null && bsCenters.get(p.centralAtom.i) : this.isMatch(p.id)) bs.set(i); +} +}return bs; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "isMatch", +function(id){ +return this.thisID != null && JU.PT.isMatch(id.toLowerCase(), this.thisID.toLowerCase(), true, true); +}, "~S"); +Clazz.overrideMethod(c$, "getShapeDetail", +function(){ +var lst = new JU.Lst(); +for (var i = 0; i < this.polyhedronCount; i++) lst.addLast(this.polyhedrons[i].getInfo(this.vwr, "info")); + +return lst; +}); +Clazz.defineMethod(c$, "andBitSet", +function(bs){ +var bsCenters = new JU.BS(); +for (var i = this.polyhedronCount; --i >= 0; ) { +var p = this.polyhedrons[i]; +if (p.id == null) bsCenters.set(p.centralAtom.i); +} +bsCenters.and(bs); +return bsCenters; +}, "JU.BS"); +Clazz.defineMethod(c$, "deletePolyhedra", +function(){ +var newCount = 0; +var pid = J.c.PAL.pidOf(null); +var bs = this.findPolyBS(this.centers, false); +for (var i = 0; i < this.polyhedronCount; ++i) { +var p = this.polyhedrons[i]; +if (bs.get(i)) { +if (this.colixes != null && p.id == null) this.setColixAndPalette(0, pid, p.centralAtom.i); +continue; +}this.polyhedrons[newCount++] = p; +} +for (var i = newCount; i < this.polyhedronCount; ++i) this.polyhedrons[i] = null; + +this.polyhedronCount = newCount; +}); +Clazz.defineMethod(c$, "setVisible", +function(visible){ +var bs = this.findPolyBS(this.centers, false); +var atoms = this.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var p = this.polyhedrons[i]; +p.visible = visible; +if (p.centralAtom != null) atoms[p.centralAtom.i].setShapeVisibility(this.vf, visible); +} +}, "~B"); +Clazz.defineMethod(c$, "buildPolyhedra", +function(){ +var p = null; +if (this.info == null && this.centers == null && (this.center == null || this.nPoints == 0)) return; +if (this.info != null && this.info.containsKey("id")) { +p = new J.shapespecial.Polyhedron().setInfo(this.vwr, this.info, this.ms.at); +} else if (this.thisID != null) { +if (JU.PT.isWild(this.thisID)) return; +if (this.center != null) { +if (this.nPoints == 0) this.setPointsFromBitset(); +p = this.validatePolyhedron(this.center, this.nPoints); +}}if (p != null) { +this.addPolyhedron(p); +return; +}var useBondAlgorithm = (this.radius == 0 || this.bondedOnly); +var buildMode = (this.info != null ? 6 : this.nPoints > 0 ? 2 : this.haveBitSetVertices ? 4 : this.useUnitCell ? 5 : useBondAlgorithm ? 1 : 3); +var iter = (buildMode == 3 ? this.ms.getSelectedAtomIterator(null, false, false, false, false) : null); +var atoms = this.ms.at; +for (var i = this.centers.nextSetBit(0); i >= 0; i = this.centers.nextSetBit(i + 1)) { +var atom = atoms[i]; +p = null; +switch (buildMode) { +case 4: +p = this.constructBitSetPolyhedron(atom); +break; +case 5: +p = this.constructUnitCellPolygon(atom, useBondAlgorithm); +break; +case 1: +p = this.constructBondsPolyhedron(atom, 0); +break; +case 3: +this.vwr.setIteratorForAtom(iter, i, this.radius); +p = this.constructRadiusPolyhedron(atom, iter); +break; +case 6: +p = new J.shapespecial.Polyhedron().setInfo(this.vwr, this.info, this.ms.at); +break; +case 2: +p = this.validatePolyhedron(atom, this.nPoints); +break; +} +if (p != null) this.addPolyhedron(p); +if (this.haveBitSetVertices) break; +} +if (iter != null) iter.release(); +}); +Clazz.defineMethod(c$, "setPointsFromBitset", +function(){ +if (this.bsVertices != null) { +var atoms = this.ms.at; +for (var i = this.bsVertices.nextSetBit(0); i >= 0 && this.nPoints < 250; i = this.bsVertices.nextSetBit(i + 1)) this.otherAtoms[this.nPoints++] = atoms[i]; + +}}); +Clazz.defineMethod(c$, "addPolyhedron", +function(p){ +if (this.polyhedronCount == this.polyhedrons.length) this.polyhedrons = JU.AU.doubleLength(this.polyhedrons); +this.polyhedrons[this.polyhedronCount++] = p; +}, "J.shapespecial.Polyhedron"); +Clazz.defineMethod(c$, "constructBondsPolyhedron", +function(atom, otherAtomCount){ +this.distanceRef = 0; +if (otherAtomCount == 0) { +var bonds = atom.bonds; +if (bonds == null) return null; +var r2 = this.radius * this.radius; +var r1 = this.radiusMin * this.radiusMin; +var r; +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +if (!bond.isCovalent()) continue; +var other = bond.getOtherAtom(atom); +if (this.bsVertices != null && !this.bsVertices.get(other.i) || this.radius > 0 && ((r = other.distanceSquared(atom)) > r2 || r < r1)) continue; +this.otherAtoms[otherAtomCount++] = other; +if (otherAtomCount >= 250) return null; +} +}if (this.isAuto) otherAtomCount = this.setGap(atom, otherAtomCount); +return (otherAtomCount < 3 || this.nVertices > 0 && !this.bsVertexCount.get(otherAtomCount) ? null : this.validatePolyhedron(atom, otherAtomCount)); +}, "JM.Atom,~N"); +Clazz.defineMethod(c$, "constructUnitCellPolygon", +function(atom, useBondAlgorithm){ +var unitcell = this.ms.getUnitCellForAtom(atom.i); +if (unitcell == null) return null; +var bsAtoms = JU.BSUtil.copy(this.vwr.getModelUndeletedAtomsBitSet(atom.mi)); +if (this.bsVertices != null) bsAtoms.and(this.bsVertices); +if (bsAtoms.isEmpty()) return null; +var atoms = this.ms.at; +var iter = unitcell.getIterator(this.vwr, atom, bsAtoms, useBondAlgorithm ? 5 : this.radius); +if (!useBondAlgorithm) return this.constructRadiusPolyhedron(atom, iter); +var myBondingRadius = atom.getBondingRadius(); +if (myBondingRadius == 0) return null; +var bondTolerance = this.vwr.getFloat(570425348); +var minBondDistance = (this.radiusMin == 0 ? this.vwr.getFloat(570425364) : this.radiusMin); +var minBondDistance2 = minBondDistance * minBondDistance; +var otherAtomCount = 0; +outer : while (iter.hasNext()) { +var other = atoms[iter.next()]; +var otherRadius = other.getBondingRadius(); +var pt = iter.getPosition(); +var distance2 = atom.distanceSquared(pt); +if (!this.ms.isBondable(myBondingRadius, otherRadius, distance2, minBondDistance2, bondTolerance)) continue; +for (var i = 0; i < otherAtomCount; i++) if (this.otherAtoms[i].distanceSquared(pt) < 0.01) continue outer; + +this.otherAtoms[otherAtomCount++] = pt; +if (otherAtomCount >= 250) return null; +} +return this.constructBondsPolyhedron(atom, otherAtomCount); +}, "JM.Atom,~B"); +Clazz.defineMethod(c$, "constructBitSetPolyhedron", +function(atom){ +this.bsVertices.clear(atom.i); +if (this.bsVertices.cardinality() >= 250) return null; +var otherAtomCount = 0; +this.distanceRef = 0; +var atoms = this.ms.at; +for (var i = this.bsVertices.nextSetBit(0); i >= 0; i = this.bsVertices.nextSetBit(i + 1)) this.otherAtoms[otherAtomCount++] = atoms[i]; + +return this.validatePolyhedron(atom, otherAtomCount); +}, "JM.Atom"); +Clazz.defineMethod(c$, "constructRadiusPolyhedron", +function(atom, iter){ +var otherAtomCount = 0; +this.distanceRef = this.radius; +var r2 = this.radius * this.radius; +var r2min = this.radiusMin * this.radiusMin; +var atoms = this.ms.at; +outer : while (iter.hasNext()) { +var other = atoms[iter.next()]; +var pt = iter.getPosition(); +if (pt == null) { +pt = other; +if (this.bsVertices != null && !this.bsVertices.get(other.i)) continue; +}var r = atom.distanceSquared(pt); +if (other.altloc != atom.altloc && other.altloc.charCodeAt(0) != 0 && atom.altloc.charCodeAt(0) != 0 || r > r2 || r < r2min) continue; +if (otherAtomCount == 250) break; +for (var i = 0; i < otherAtomCount; i++) if (this.otherAtoms[i].distanceSquared(pt) < 0.01) continue outer; + +this.otherAtoms[otherAtomCount++] = pt; +} +if (this.isAuto) otherAtomCount = this.setGap(atom, otherAtomCount); +return (otherAtomCount < 3 || this.nVertices > 0 && !this.bsVertexCount.get(otherAtomCount) ? null : this.validatePolyhedron(atom, otherAtomCount)); +}, "JM.Atom,J.api.AtomIndexIterator"); +Clazz.defineMethod(c$, "setGap", +function(atom, otherAtomCount){ +if (otherAtomCount < 4) return otherAtomCount; +var dist = Clazz.newArray(250, 2, null); +for (var i = 0; i < otherAtomCount; i++) dist[i][0] = Float.$valueOf(atom.distance((dist[i][1] = this.otherAtoms[i]))); + +java.util.Arrays.sort(dist, this); +var maxGap = 0; +var iMax = 0; +var n = otherAtomCount; +var dlast = (dist[0][0]).floatValue(); +this.otherAtoms[0] = dist[0][1]; +for (var i = 1; i < n; i++) { +var d = (dist[i][0]).floatValue(); +var gap = d - dlast; +this.otherAtoms[i] = dist[i][1]; +if (JU.Logger.debugging) JU.Logger.info("polyhedron d=" + d + " " + this.otherAtoms[i]); +if (gap > maxGap) { +if (JU.Logger.debugging) JU.Logger.info("polyhedron maxGap=" + gap + " for i=" + i + " d=" + d + " " + this.otherAtoms[i]); +maxGap = gap; +iMax = i; +}dlast = d; +} +return (iMax == 0 ? otherAtomCount : iMax); +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "validatePolyhedron", +function(atomOrPt, vertexCount){ +var points = this.otherAtoms; +var faces = this.explicitFaces; +var faceTriangles; +var normals; +var collapsed = this.isCollapsed; +var triangleCount = 0; +var bsCenterPlanes = new JU.BS(); +var triangles; +if (faces != null) { +collapsed = false; +faceTriangles = JU.AU.newInt2(faces.length); +normals = new Array(faces.length); +for (var i = faces.length; --i >= 0; ) faces[i] = this.fixExplicitFaceWinding(faces[i], i, points, normals); + +triangles = (J.api.Interface.getInterface("JU.MeshCapper", this.vwr, "script")).set(null).triangulateFaces(faces, points, faceTriangles); +triangleCount = triangles.length; +} else { +this.nPoints = vertexCount + 1; +var ni = vertexCount - 2; +var nj = vertexCount - 1; +var planarParam = (Float.isNaN(this.planarParam) ? 0.98 : this.planarParam); +points[vertexCount] = atomOrPt; +var ptAve = JU.P3.newP(atomOrPt); +for (var i = 0; i < vertexCount; i++) ptAve.add(points[i]); + +ptAve.scale(1 / (vertexCount + 1)); +var ptRef = JU.P3.newP(ptAve); +var bsThroughCenter = new JU.BS(); +if (this.thisID == null) for (var pt = 0, i = 0; i < ni; i++) for (var j = i + 1; j < nj; j++) for (var k = j + 1; k < vertexCount; k++, pt++) if (this.isPlanar(points[i], points[j], points[k], ptRef)) bsThroughCenter.set(pt); + + + +triangles = this.planesT; +var pTemp = new JU.P4(); +var nTemp = new JU.V3(); +var offset = this.faceCenterOffset; +var fmax = 247; +var vmax = 250; +var bsTemp = JU.Normix.newVertexBitSet(); +normals = this.normalsT; +var htNormMap = new java.util.Hashtable(); +var htEdgeMap = new java.util.Hashtable(); +var lstRejected = (this.isFull ? new JU.Lst() : null); +var edgeTest = new Array(3); +var vAC = this.vAC; +for (var i = 0, pt = 0; i < ni; i++) for (var j = i + 1; j < nj; j++) { +for (var k = j + 1; k < vertexCount; k++, pt++) { +if (triangleCount >= fmax) { +JU.Logger.error("Polyhedron error: maximum face(" + fmax + ") -- reduce RADIUS"); +return null; +}if (this.nPoints >= vmax) { +JU.Logger.error("Polyhedron error: maximum vertex count(" + vmax + ") -- reduce RADIUS"); +return null; +}var isThroughCenter = bsThroughCenter.get(pt); +var rpt = (isThroughCenter ? J.shapespecial.Polyhedra.randomPoint : ptAve); +var normal = new JU.V3(); +var isWindingOK = JU.Measure.getNormalFromCenter(rpt, points[i], points[j], points[k], !isThroughCenter, normal, vAC); +var t = Clazz.newIntArray(-1, [isWindingOK ? i : j, isWindingOK ? j : i, k, -7]); +var err = this.checkFacet(points, vertexCount, t, triangleCount, normal, pTemp, nTemp, vAC, htNormMap, htEdgeMap, planarParam, bsTemp, edgeTest); +if (err != 0) { +if (this.isFull && err != 3.4028235E38 && err < 0.5) { +t[3] = Clazz.floatToInt(err * 100); +lstRejected.addLast(t); +}continue; +}normals[triangleCount] = normal; +triangles[triangleCount] = t; +if (isThroughCenter) { +bsCenterPlanes.set(triangleCount++); +} else if (collapsed) { +points[this.nPoints] = new JU.P3(); +points[this.nPoints].scaleAdd2(offset, normal, atomOrPt); +ptRef.setT(points[this.nPoints]); +this.addFacet(i, j, k, ptRef, points, normals, triangles, triangleCount++, this.nPoints, isWindingOK, vAC); +this.addFacet(k, i, j, ptRef, points, normals, triangles, triangleCount++, this.nPoints, isWindingOK, vAC); +this.addFacet(j, k, i, ptRef, points, normals, triangles, triangleCount++, this.nPoints, isWindingOK, vAC); +this.nPoints++; +} else { +triangleCount++; +}} +} + +this.nPoints--; +if (JU.Logger.debugging) { +JU.Logger.info("Polyhedron planeCount=" + triangleCount + " nPoints=" + this.nPoints); +for (var i = 0; i < triangleCount; i++) JU.Logger.info("Polyhedron " + JU.PT.toJSON("face[" + i + "]", triangles[i])); + +}faces = this.getFaces(triangles, triangleCount, htNormMap); +faceTriangles = this.getFaceTriangles(faces.length, htNormMap, triangleCount); +}return new J.shapespecial.Polyhedron().set(this.thisID, this.modelIndex, atomOrPt, points, this.nPoints, vertexCount, triangles, triangleCount, faces, faceTriangles, normals, bsCenterPlanes, collapsed, this.distanceRef, this.pointScale); +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "fixExplicitFaceWinding", +function(face, ipt, points, normals){ +var n = face.length; +for (var i = 0, nlast = n - 2; i < nlast; i++) { +var a = points[face[i]]; +var b = points[face[(i + 1) % n]]; +var c = points[face[(i + 2) % n]]; +if (JU.Measure.computeAngleABC(a, b, c, true) < 178) { +if (!JU.Measure.getNormalFromCenter(this.center, a, b, c, true, normals[ipt] = new JU.V3(), this.vAC)) face = JU.AU.arrayCopyRangeRevI(face, 0, -1); +break; +}} +return face; +}, "~A,~N,~A,~A"); +Clazz.defineMethod(c$, "getFaceTriangles", +function(n, htNormMap, triangleCount){ +var faceTriangles = JU.AU.newInt2(n); +if (triangleCount == n) { +for (var i = triangleCount; --i >= 0; ) faceTriangles[i] = Clazz.newIntArray(-1, [i]); + +return faceTriangles; +}var i = 0; +for (var e, $e = htNormMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var eo = e.getValue(); +if (eo[2] != null && eo[2] !== e.getKey()) continue; +var lst = e.getValue()[1]; +n = lst.size(); +var a = Clazz.newIntArray (n, 0); +for (var j = n; --j >= 0; ) a[j] = lst.get(j).intValue(); + +faceTriangles[i++] = a; +} +return faceTriangles; +}, "~N,java.util.Map,~N"); +Clazz.defineMethod(c$, "addFacet", +function(i, j, k, ptRef, points, normals, faces, planeCount, nRef, isWindingOK, vTemp){ +var normal = new JU.V3(); +var ii = isWindingOK ? i : j; +var jj = isWindingOK ? j : i; +JU.Measure.getNormalFromCenter(points[k], ptRef, points[ii], points[jj], false, normal, vTemp); +normals[planeCount] = normal; +faces[planeCount] = Clazz.newIntArray(-1, [nRef, ii, jj, -2]); +}, "~N,~N,~N,JU.P3,~A,~A,~A,~N,~N,~B,JU.V3"); +Clazz.defineMethod(c$, "checkFacet", +function(points, nPoints, t, index, norm, pTemp, vNorm, vAC, htNormMap, htEdgeMap, planarParam, bsTemp, edgeTest){ +var i0 = t[0]; +JU.Measure.getPlaneThroughPoints(points[i0], points[t[1]], points[t[2]], vNorm, vAC, pTemp); +var pt = points[i0]; +for (var j = 0; j < nPoints; j++) { +if (j == i0) continue; +vAC.sub2(points[j], pt); +vAC.normalize(); +var v = vAC.dot(vNorm); +if (v > 0.05) { +return v; +}if (JU.Logger.debugging) JU.Logger.info("checkFacet " + j + " " + v + " " + JU.PT.toJSON(null, t)); +} +var normix = Integer.$valueOf(JU.Normix.getNormixV(norm, bsTemp)); +var o = htNormMap.get(normix); +if (o == null) { +var norms = JU.Normix.getVertexVectors(); +for (var e, $e = htNormMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var n = e.getKey(); +if (norms[n.intValue()].dot(norm) > planarParam) { +o = e.getValue(); +o[2] = n; +htNormMap.put(normix, o); +break; +}} +if (o == null) htNormMap.put(normix, o = Clazz.newArray(-1, [ new JU.Lst(), new JU.Lst(), normix])); +}normix = o[2]; +var faceEdgeList = o[0]; +var faceTriList = o[1]; +for (var i = 0; i < 3; i++) if ((edgeTest[i] = this.addEdge(faceEdgeList, htEdgeMap, normix, t, i, points)) == null) return 3.4028235E38; + +for (var i = 0; i < 3; i++) { +var oo = edgeTest[i]; +if (oo === Boolean.TRUE) continue; +var oe = oo; +faceEdgeList.addLast(oe[2]); +htEdgeMap.put(oe[3], oe); +} +faceTriList.addLast(Integer.$valueOf(index)); +return 0; +}, "~A,~N,~A,~N,JU.V3,JU.P4,JU.V3,JU.V3,java.util.Map,java.util.Map,~N,JU.BS,~A"); +Clazz.defineMethod(c$, "addEdge", +function(faceEdgeList, htEdgeMap, normix, p1, i, points){ +var pt = p1[i]; +var pt1 = p1[(i + 1) % 3]; +var s1 = "_" + pt1; +var s = "_" + pt; +var edge = normix + s + s1; +if (htEdgeMap.containsKey(edge)) return null; +var edge0 = normix + s1 + s; +var o = htEdgeMap.get(edge0); +var b; +if (o == null) { +var coord2 = points[pt1]; +var coord1 = points[pt]; +this.vAB.sub2(coord2, coord1); +for (var j = faceEdgeList.size(); --j >= 0; ) { +var e = faceEdgeList.get(j); +var c1 = points[e[0]]; +var c2 = points[e[1]]; +if (c1 !== coord1 && c1 !== coord2 && c2 !== coord1 && c2 !== coord2 && this.testDiff(c1, c2, coord1, coord2) && this.testDiff(coord1, coord2, c1, c2)) return null; +} +return Clazz.newArray(-1, [p1, Integer.$valueOf(i), Clazz.newIntArray(-1, [pt, pt1, 0]), edge]); +}var p10 = (o)[0]; +if (p10 == null) return null; +var i0 = ((o)[1]).intValue(); +p10[3] = -((-p10[3]) ^ (1 << i0)); +p1[3] = -((-p1[3]) ^ (1 << i)); +b = (o)[2]; +for (var j = faceEdgeList.size(); --j >= 0; ) { +var f = faceEdgeList.get(j); +if (f[0] == b[0] && f[1] == b[1]) { +f[2] = -1; +break; +}} +htEdgeMap.put(edge, Clazz.newArray(-1, [null])); +htEdgeMap.put(edge0, Clazz.newArray(-1, [null])); +return Boolean.TRUE; +}, "JU.Lst,java.util.Map,Integer,~A,~N,~A"); +Clazz.defineMethod(c$, "testDiff", +function(a1, b1, a2, b2){ +this.vAB.sub2(b1, a1); +this.vAC.sub2(a2, a1); +this.vAC.cross(this.vAC, this.vAB); +this.vBC.sub2(b2, a1); +this.vBC.cross(this.vBC, this.vAB); +return (this.vBC.dot(this.vAC) < 0); +}, "JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "isPlanar", +function(pt1, pt2, pt3, ptX){ +var norm = new JU.V3(); +var w = JU.Measure.getNormalThroughPoints(pt1, pt2, pt3, norm, this.vAB); +var d = JU.Measure.distanceToPlaneV(norm, w, ptX); +return (Math.abs(d) < J.shapespecial.Polyhedra.MAX_DISTANCE_TO_PLANE); +}, "JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "getFaces", +function(triangles, triangleCount, htNormMap){ +var n = 0; +for (var e, $e = htNormMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var eo = e.getValue(); +if (eo[2] === e.getKey()) n++; +} +var faces = JU.AU.newInt2(n); +if (triangleCount == n) { +for (var i = triangleCount; --i >= 0; ) faces[i] = JU.AU.arrayCopyI(triangles[i], 3); + +return faces; +}var fpt = 0; +for (var e, $e = htNormMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var eo = e.getValue(); +if (eo[2] != null && eo[2] !== e.getKey()) continue; +var faceEdgeList = e.getValue()[0]; +n = faceEdgeList.size(); +var nOK = 0; +for (var i = faceEdgeList.size(); --i >= 0; ) if (faceEdgeList.get(i)[2] >= 0) nOK++; + +var face = faces[fpt++] = Clazz.newIntArray (nOK, 0); +if (n < 2) continue; +var edge = null; +var pt = 0; +do { +edge = faceEdgeList.get(pt); +} while (pt++ < nOK && edge[2] == -1); +face[0] = edge[0]; +face[1] = edge[1]; +pt = 2; +var i0 = 1; +var pt0 = -1; +while (pt < nOK && pt0 != pt) { +pt0 = pt; +for (var i = i0; i < n; i++) { +edge = faceEdgeList.get(i); +if (edge[2] != -1 && edge[0] == face[pt - 1]) { +face[pt++] = edge[1]; +if (i == i0) i0++; +break; +}} +} +} +return faces; +}, "~A,~N,java.util.Map"); +Clazz.overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +for (var i = this.polyhedronCount; --i >= 0; ) { +var p = this.polyhedrons[i]; +if (p.id == null) { +var ia = p.centralAtom.i; +if (this.ms.at[ia].isDeleted()) p.isValid = false; +p.visibilityFlags = (p.visible && bsModels.get(p.modelIndex) && !this.ms.isAtomHidden(ia) && !this.ms.at[ia].isDeleted() ? this.vf : 0); +this.ms.at[ia].setShapeVisibility(this.vf, p.visibilityFlags != 0); +} else { +p.visibilityFlags = (p.visible && (p.modelIndex < 0 || bsModels.get(p.modelIndex)) ? this.vf : 0); +}} +}, "JU.BS"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +if (this.polyhedronCount == 0) return ""; +var s = new JU.SB(); +for (var i = 0; i < this.polyhedronCount; i++) if (this.polyhedrons[i].isValid) s.append(this.polyhedrons[i].getState(this.vwr)); + +if (this.drawEdges == 2) J.shape.Shape.appendCmd(s, "polyhedra frontedges"); + else if (this.drawEdges == 1) J.shape.Shape.appendCmd(s, "polyhedra edges"); + else if (this.drawEdges == 3) J.shape.Shape.appendCmd(s, "polyhedra edgesOnly"); +s.append(this.vwr.getStateCreator().getAtomShapeState(this)); +var ia; +for (var i = 0; i < this.polyhedronCount; i++) { +var p = this.polyhedrons[i]; +if (p.isValid && p.id == null && p.colixEdge != 0 && this.bsColixSet.get(ia = p.centralAtom.i)) J.shape.Shape.appendCmd(s, "select ({" + ia + "}); color polyhedra " + (JU.C.isColixTranslucent(this.colixes[ia]) ? "translucent " : "") + JU.C.getHexCode(this.colixes[ia]) + " " + JU.C.getHexCode(p.colixEdge)); +} +return s.toString(); +}); +c$.randomPoint = JU.P3.new3(3141, 2718, 1414); +c$.MAX_DISTANCE_TO_PLANE = 0.1; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Polyhedron.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Polyhedron.js new file mode 100755 index 000000000000..699040149f13 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Polyhedron.js @@ -0,0 +1,401 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(null, "J.shapespecial.Polyhedron", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.Measure", "$.P3", "$.PT", "$.V3", "J.api.Interface", "JS.SV", "JU.C", "$.Elements", "$.Escape", "$.Logger", "$.Normix", "$.Point3fi"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.info = null; +this.id = null; +this.center = null; +this.centralAtom = null; +this.vertices = null; +this.triangles = null; +this.faces = null; +this.nVertices = 0; +this.collapsed = false; +this.bsFlat = null; +this.distanceRef = 0; +this.normals = null; +this.normixes = null; +this.planes = null; +this.smiles = null; +this.smarts = null; +this.polySmiles = null; +this.pointGroup = null; +this.pointGroupFamily = null; +this.volume = null; +this.visible = true; +this.isFullyLit = false; +this.isValid = true; +this.colixEdge = 0; +this.visibilityFlags = 0; +this.colix = 23; +this.modelIndex = -2147483648; +this.offset = null; +this.scale = 1; +this.pointScale = 0; +this.faceTriangles = null; +this.elemNos = null; +this.v0 = null; +Clazz.instantialize(this, arguments);}, J.shapespecial, "Polyhedron", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(id, modelIndex, atomOrPt, points, nPoints, vertexCount, triangles, triangleCount, faces, faceTriangles, normals, bsFlat, collapsed, distanceRef, pointScale){ +this.pointScale = pointScale; +this.distanceRef = distanceRef; +if (id == null) { +this.centralAtom = atomOrPt; +this.modelIndex = this.centralAtom.mi; +} else { +this.id = id; +this.center = atomOrPt; +this.modelIndex = modelIndex; +}this.nVertices = vertexCount; +this.vertices = new Array(nPoints + 1); +this.normals = new Array(triangleCount); +this.faces = faces; +this.faceTriangles = faceTriangles; +this.bsFlat = bsFlat; +this.triangles = JU.AU.newInt2(triangleCount); +for (var i = nPoints + 1; --i >= 0; ) this.vertices[i] = points[i]; + +for (var i = triangleCount; --i >= 0; ) this.normals[i] = JU.V3.newV(normals[i]); + +for (var i = triangleCount; --i >= 0; ) this.triangles[i] = triangles[i]; + +this.collapsed = collapsed; +return this; +}, "~S,~N,JU.P3,~A,~N,~N,~A,~N,~A,~A,~A,JU.BS,~B,~N,~N"); +Clazz.defineMethod(c$, "setInfo", +function(vwr, info, at){ +try { +var o = info.get("id"); +this.collapsed = info.containsKey("collapsed"); +var isSV = (!((typeof(o)=='string'))); +if (o != null) this.id = (isSV ? (info.get("id")).asString() : o.toString()); +if (this.id == null) { +this.centralAtom = at[(info.get("atomIndex")).intValue]; +this.modelIndex = this.centralAtom.mi; +} else { +o = info.get("center"); +this.center = JU.P3.newP(isSV ? JS.SV.ptValue(o) : o); +o = info.get("modelIndex"); +this.modelIndex = (o == null ? vwr.am.cmi : isSV ? (o).intValue : (o).intValue()); +o = info.get("color"); +this.colix = JU.C.getColixS(o == null ? "gold" : isSV ? (o).asString() : o); +o = info.get("colorEdge"); +if (o != null) this.colixEdge = JU.C.getColixS(isSV ? (o).asString() : o.toString()); +o = info.get("offset"); +if (o != null) this.offset = JU.P3.newP(isSV ? JS.SV.ptValue(o) : o); +o = info.get("scale"); +if (o != null) this.scale = (isSV ? JS.SV.fValue(o) : (o).floatValue()); +}o = info.get("vertices"); +var lst = (isSV ? (o).getList() : o); +o = info.get("vertexCount"); +var needTriangles = false; +if (o != null) { +this.nVertices = (isSV ? (o).intValue : (o).intValue()); +this.vertices = new Array(lst.size()); +o = info.get("r"); +if (o != null) this.distanceRef = (isSV ? (o).asFloat() : (o).floatValue()); +} else { +this.nVertices = lst.size(); +this.vertices = new Array(this.nVertices + 1); +if (this.center == null) { +this.vertices[this.nVertices] = JS.SV.ptValue(info.get("ptRef")); +} else { +this.vertices[this.nVertices] = this.center; +needTriangles = true; +}}for (var i = lst.size(); --i >= 0; ) { +o = lst.get(i); +this.vertices[i] = (isSV ? JS.SV.ptValue(o) : o); +} +o = info.get("explodeOffset"); +if (o != null) this.setZeroOffset((o).floatValue()); +o = info.get("elemNos"); +if (o != null) { +lst = (isSV ? (o).getList() : o); +for (var i = this.nVertices; --i >= 0; ) { +o = lst.get(i); +var n = (isSV ? (o).intValue : (o).intValue()); +if (n > 0) { +var p = new JU.Point3fi(); +p.setT(this.vertices[i]); +p.sD = n; +this.vertices[i] = p; +}} +}o = info.get("pointScale"); +if (o != null) this.pointScale = Math.max(0, (isSV ? JS.SV.fValue(o) : (o).floatValue())); +this.faces = this.toInt2(isSV, info.get("faces")); +o = info.get("triangles"); +if (o == null) { +if (needTriangles) { +this.faceTriangles = JU.AU.newInt2(this.faces.length); +this.triangles = (J.api.Interface.getInterface("JU.MeshCapper", vwr, "script")).set(null).triangulateFaces(this.faces, this.vertices, this.faceTriangles); +} else { +this.triangles = this.faces; +this.faces = null; +}} else { +this.triangles = this.toInt2(isSV, o); +}this.normals = new Array(this.triangles.length); +var vAB = new JU.V3(); +for (var i = this.triangles.length; --i >= 0; ) { +this.normals[i] = new JU.V3(); +var a = this.triangles[i]; +JU.Measure.getNormalThroughPoints(this.vertices[a[0]], this.vertices[a[1]], this.vertices[a[2]], this.normals[i], vAB); +} +o = info.get("bsFlat"); +this.bsFlat = (o == null ? new JU.BS() : isSV ? JS.SV.getBitSet(o, false) : o); +if (info.containsKey("volume")) info.put("volume", this.getVolume()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +return this; +}, "JV.Viewer,java.util.Map,~A"); +Clazz.defineMethod(c$, "toInt2", +function(isSV, o){ +var lst = (isSV ? (o).getList() : o); +var ai = JU.AU.newInt2(lst.size()); +for (var i = ai.length; --i >= 0; ) { +o = lst.get(i); +if (isSV) { +var lst2 = (o).getList(); +var a = ai[i] = Clazz.newIntArray (lst2.size(), 0); +for (var j = a.length; --j >= 0; ) a[j] = lst2.get(j).intValue; + +} else { +ai[i] = o; +}} +return ai; +}, "~B,~O"); +Clazz.defineMethod(c$, "getInfo", +function(vwr, property){ +var isState = (property == null); +var isFaceCalc = (!isState); +var info = this.info; +if (!isState && info != null && (!isFaceCalc || info.containsKey("face_types")) && !JU.Logger.debugging) return info; +info = new java.util.Hashtable(); +info.put("vertexCount", Integer.$valueOf(this.nVertices)); +var nv = (isState ? this.vertices.length : this.nVertices); +var pts = new Array(nv); +for (var i = 0; i < nv; i++) pts[i] = JU.P3.newP(this.vertices[i]); + +info.put("vertices", pts); +info.put("elemNos", this.getElemNos(true)); +if (this.id == null) { +info.put("atomIndex", Integer.$valueOf(this.centralAtom.i)); +} else { +info.put("id", this.id); +info.put("center", JU.P3.newP(this.center)); +info.put("color", JU.C.getHexCode(this.colix)); +info.put("colorEdge", JU.C.getHexCode(this.colixEdge == 0 ? this.colix : this.colixEdge)); +if (this.offset != null) info.put("offset", this.offset); +if (this.scale != 1) info.put("scale", Float.$valueOf(this.scale)); +}if (this.id != null || !isState) info.put("modelIndex", Integer.$valueOf(this.modelIndex)); +if (!isState) { +this.info = info; +if (this.id == null) { +info.put("center", JU.P3.newP(this.centralAtom)); +info.put("modelNumber", Integer.$valueOf(this.centralAtom.getModelNumber())); +info.put("atomNumber", Integer.$valueOf(this.centralAtom.getAtomNumber())); +info.put("atomName", this.centralAtom.getInfo()); +info.put("element", this.centralAtom.getElementSymbol()); +var energy = vwr.ms.getInfo(this.centralAtom.mi, "Energy"); +if (energy != null) info.put("energy", energy); +}info.put("triangleCount", Integer.$valueOf(this.triangles.length)); +info.put("volume", this.getVolume()); +var names = new Array(this.nVertices); +var indices = Clazz.newIntArray (this.nVertices, 0); +for (var i = this.nVertices; --i >= 0; ) { +var pt = this.vertices[i]; +var isNode = Clazz.instanceOf(pt,"JM.Atom"); +names[i] = (isNode ? (pt).getAtomName() : Clazz.instanceOf(pt,"JU.Point3fi") ? JU.Elements.elementSymbolFromNumber((pt).sD) : ""); +indices[i] = (isNode ? (pt).getIndex() : -1); +} +info.put("atomNames", names); +info.put("vertexIndices", indices); +if (this.faces != null && !this.collapsed && this.faceTriangles != null) { +info.put("faceCount", Integer.$valueOf(this.faces.length)); +info.put("faceTriangles", this.faceTriangles); +if (isFaceCalc) { +var faceTypes = Clazz.newIntArray (this.faces.length, 0); +var faceAreas = Clazz.newFloatArray (this.faces.length, 0); +var facePoints = new JU.Lst(); +var vAB = new JU.V3(); +var vAC = new JU.V3(); +var vTemp = new JU.V3(); +for (var i = this.faces.length; --i >= 0; ) { +var face = this.faces[i]; +faceTypes[i] = face.length; +var f = 0; +var ft = this.faceTriangles[i]; +for (var j = ft.length; --j >= 0; ) { +var t = this.triangles[ft[j]]; +f += this.triangleArea(t[0], t[1], t[2], vAB, vAC, vTemp); +} +faceAreas[i] = f; +var fpts = new Array(face.length); +for (var j = face.length; --j >= 0; ) fpts[j] = this.vertices[face[j]]; + +facePoints.addLast(fpts); +} +info.put("face_types", faceTypes); +info.put("face_areas", faceAreas); +info.put("face_points", facePoints); +}}if (this.smarts != null) info.put("smarts", this.smarts); +if (this.smiles != null) info.put("smiles", this.smiles); +if (this.polySmiles != null) info.put("polySmiles", this.polySmiles); +if (this.pointGroup != null) info.put("pointGroup", this.pointGroup.getPointGroupName()); +if (this.pointGroupFamily != null) info.put("pointGroupFamily", this.pointGroupFamily.getPointGroupName()); +}if (this.pointScale > 0) info.put("pointScale", Float.$valueOf(this.pointScale)); +if (this.faces != null) info.put("faces", this.faces); +if (isState || JU.Logger.debugging) { +info.put("bsFlat", this.bsFlat); +if (this.collapsed) info.put("collapsed", Boolean.$valueOf(this.collapsed)); +if (this.distanceRef != 0) info.put("r", Float.$valueOf(this.distanceRef)); +var n = new Array(this.normals.length); +for (var i = n.length; --i >= 0; ) n[i] = JU.P3.newP(this.normals[i]); + +if (!isState) info.put("normals", n); +info.put("triangles", JU.AU.arrayCopyII(this.triangles, this.triangles.length)); +}return info; +}, "JV.Viewer,~S"); +Clazz.defineMethod(c$, "setPointScale", +function(scale){ +this.pointScale = scale; +this.elemNos = null; +}, "~N"); +Clazz.defineMethod(c$, "getElemNos", +function(forInfo){ +if (forInfo) { +var a = Clazz.newIntArray (this.nVertices, 0); +for (var i = 0; i < this.nVertices; i++) { +var pt = this.vertices[i]; +a[i] = (Clazz.instanceOf(pt,"JM.Atom") ? (pt).getElementNumber() : Clazz.instanceOf(pt,"JU.Point3fi") ? (pt).sD : -2); +} +return a; +}if (this.elemNos == null) this.elemNos = Clazz.newIntArray (this.nVertices, 0); +for (var i = 0; i < this.nVertices; i++) { +var pt = this.vertices[i]; +this.elemNos[i] = (Clazz.instanceOf(pt,"JM.Atom") ? (pt).getAtomicAndIsotopeNumber() : Clazz.instanceOf(pt,"JU.Point3fi") ? (pt).sD : -2); +} +return this.elemNos; +}, "~B"); +Clazz.defineMethod(c$, "getSymmetry", +function(vwr, withPointGroup){ +if (this.id == null) { +if (this.smarts == null) { +this.info = null; +var sm = vwr.getSmilesMatcher(); +try { +var details = (this.distanceRef <= 0 ? null : "r=" + this.distanceRef); +this.polySmiles = sm.polyhedronToSmiles(this.centralAtom, this.faces, this.nVertices, this.vertices, 1 | 65536 | (JU.Logger.debugging ? 131072 : 0), details); +this.smarts = sm.polyhedronToSmiles(this.centralAtom, this.faces, this.nVertices, null, 16384, null); +this.smiles = sm.polyhedronToSmiles(this.centralAtom, this.faces, this.nVertices, this.vertices, 1, null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}if (!withPointGroup) return null; +if (this.pointGroup == null) { +var pts = new Array(this.nVertices); +for (var i = pts.length; --i >= 0; ) pts[i] = this.vertices[i]; + +this.pointGroup = vwr.getSymTemp().setPointGroup(vwr, null, null, pts, null, false, vwr.getFloat(570425382), vwr.getFloat(570425384), pts.length, true); +for (var i = pts.length; --i >= 0; ) pts[i] = JU.P3.newP(this.vertices[i]); + +this.pointGroupFamily = vwr.getSymTemp().setPointGroup(vwr, null, null, pts, null, false, vwr.getFloat(570425382), vwr.getFloat(570425384), pts.length, true); +}return (this.center == null ? this.centralAtom : this.center) + " \t" + this.pointGroup.getPointGroupName() + "\t" + this.pointGroupFamily.getPointGroupName(); +}, "JV.Viewer,~B"); +Clazz.defineMethod(c$, "getVolume", +function(){ +if (this.volume != null) return this.volume; +var vAB = new JU.V3(); +var vAC = new JU.V3(); +var vTemp = new JU.V3(); +var v = 0; +if (this.bsFlat.cardinality() < this.triangles.length) for (var i = this.triangles.length; --i >= 0; ) { +var t = this.triangles[i]; +v += this.triangleVolume(t[0], t[1], t[2], vAB, vAC, vTemp); +} +return Float.$valueOf(v / 6); +}); +Clazz.defineMethod(c$, "triangleArea", +function(i, j, k, vAB, vAC, vTemp){ +vAB.sub2(this.vertices[j], this.vertices[i]); +vAC.sub2(this.vertices[k], this.vertices[i]); +vTemp.cross(vAB, vAC); +return vTemp.length(); +}, "~N,~N,~N,JU.V3,JU.V3,JU.V3"); +Clazz.defineMethod(c$, "triangleVolume", +function(i, j, k, vAB, vAC, vTemp){ +vAB.setT(this.vertices[i]); +vAC.setT(this.vertices[j]); +vTemp.cross(vAB, vAC); +vAC.setT(this.vertices[k]); +return vAC.dot(vTemp); +}, "~N,~N,~N,JU.V3,JU.V3,JU.V3"); +Clazz.defineMethod(c$, "getState", +function(vwr){ +var ident = (this.id == null ? "({" + this.centralAtom.i + "})" : "ID " + JU.Escape.e(this.id)); +return " polyhedron @{" + JU.Escape.e(this.getInfo(vwr, null)) + "} " + (this.isFullyLit ? " fullyLit" : "") + ";" + (this.visible ? "" : "polyhedra " + ident + " off;") + "\n"; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "move", +function(mat, bsMoved){ +this.info = null; +for (var i = 0; i < this.nVertices; i++) { +var p = this.vertices[i]; +if (Clazz.instanceOf(p,"JM.Atom")) { +if (bsMoved.get((p).i)) continue; +p = this.vertices[i] = JU.P3.newP(p); +}mat.rotTrans(p); +} +for (var i = this.normals.length; --i >= 0; ) mat.rotate(this.normals[i]); + +this.normixes = null; +}, "JU.M4,JU.BS"); +Clazz.defineMethod(c$, "getNormixes", +function(){ +if (this.normixes == null) { +this.normixes = Clazz.newShortArray (this.normals.length, 0); +var bsTemp = new JU.BS(); +for (var i = this.normals.length; --i >= 0; ) this.normixes[i] = (this.bsFlat.get(i) ? JU.Normix.get2SidedNormix(this.normals[i], bsTemp) : JU.Normix.getNormixV(this.normals[i], bsTemp)); + +}return this.normixes; +}); +Clazz.defineMethod(c$, "setOffset", +function(value){ +this.planes = null; +if (this.center == null) return; +var v = JU.P3.newP(value); +if (this.offset != null) value.sub(this.offset); +this.offset = v; +for (var i = this.vertices.length; --i >= 0; ) this.vertices[i].add(value); + +}, "JU.P3"); +Clazz.defineMethod(c$, "setZeroOffset", +function(value){ +if (this.id == null || this.center == null || value == 0) return; +var d = this.center.length(); +if (d < 0.0001) return; +var v = JU.P3.newP(this.center); +v.scale(value / d); +this.setOffset(v); +}, "~N"); +Clazz.defineMethod(c$, "list", +function(sb){ +if (this.id == null) { +sb.append(" atomIndex:" + this.centralAtom.i); +sb.append(" atomName:" + this.centralAtom.getAtomName()); +sb.append(" element:" + this.centralAtom.getElementSymbol()); +} else { +sb.append(" id:" + this.id); +sb.append("; center:" + JU.PT.sprintf("{%6.3p %6.3p %6.3p}", "p", Clazz.newArray(-1, [this.center]))).append("; visible:" + this.visible); +}sb.append("; model:" + this.modelIndex).append("; vertices:" + this.nVertices).append("; faces:" + this.faces.length).append("; volume:" + JU.PT.formatD(this.getVolume().doubleValue(), 1, 3, false, false)); +if (this.scale != 1) sb.append("; scale:" + this.scale); +sb.append("\n"); +}, "JU.SB"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Vectors.js b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Vectors.js new file mode 100755 index 000000000000..93c93e0ba074 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapespecial/Vectors.js @@ -0,0 +1,24 @@ +Clazz.declarePackage("J.shapespecial"); +Clazz.load(["J.shape.AtomShape"], "J.shapespecial.Vectors", ["J.atomdata.RadiusData"], function(){ +var c$ = Clazz.declareType(J.shapespecial, "Vectors", J.shape.AtomShape); +Clazz.defineMethod(c$, "initModelSet", +function(){ +if (!!(this.isActive = this.ms.modelSetHasVibrationVectors())) Clazz.superCall(this, J.shapespecial.Vectors, "initModelSet", []); +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +if (!this.isActive) return; +this.setPropAS(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "getProperty", +function(propertyName, param){ +if (propertyName === "mad") return Integer.$valueOf(this.mads == null || param < 0 || this.mads.length <= param ? 0 : this.mads[param]); +return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "setSizeRD2", +function(i, rd, isVisible){ +Clazz.superCall(this, J.shapespecial.Vectors, "setSizeRD2", [i, rd, isVisible]); +if (rd != null && rd.factorType === J.atomdata.RadiusData.EnumType.SCREEN) this.mads[i] = -this.mads[i]; +}, "~N,J.atomdata.RadiusData,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Contact.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Contact.js new file mode 100755 index 000000000000..6425bc342da4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Contact.js @@ -0,0 +1,546 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(["J.shapesurface.Isosurface", "JU.P3", "$.V3", "J.atomdata.RadiusData", "J.c.VDW"], "J.shapesurface.Contact", ["java.util.Hashtable", "JU.BS", "$.CU", "$.Lst", "$.Measure", "J.atomdata.AtomData", "J.c.HB", "J.jvxl.data.JvxlCoder", "$.MeshData", "$.VolumeData", "JS.T", "JU.BSUtil", "$.BoxInfo", "$.ContactPair", "$.Escape", "$.Logger", "$.TempArray"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.displayType = 0; +this.atoms = null; +this.ac = 0; +this.minData = 0; +this.maxData = 0; +this.vZ = null; +this.vY = null; +this.vX = null; +this.pt1 = null; +this.pt2 = null; +Clazz.instantialize(this, arguments);}, J.shapesurface, "Contact", J.shapesurface.Isosurface); +Clazz.prepareFields (c$, function(){ +this.vZ = new JU.V3(); +this.vY = new JU.V3(); +this.vX = new JU.V3(); +this.pt1 = new JU.P3(); +this.pt2 = new JU.P3(); +}); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapesurface.Contact, "initShape", []); +this.myType = "contact"; +}); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +return this.getPropC(property, index); +}, "~S,~N"); +Clazz.defineMethod(c$, "getPropC", +function(property, index){ +var thisMesh = this.thisMesh; +if (index >= 0 && (index >= this.meshCount || (thisMesh = this.isomeshes[index]) == null)) return null; +if (property === "jvxlFileInfo") { +thisMesh.setJvxlColorMap(false); +if (this.displayType == 134217750) { +J.jvxl.data.JvxlCoder.jvxlCreateColorData(this.jvxlData, thisMesh.vvs); +var minmax = thisMesh.getDataMinMax(); +this.jvxlData.mappedDataMin = minmax[0]; +this.jvxlData.mappedDataMax = minmax[1]; +}return J.jvxl.data.JvxlCoder.jvxlGetInfo(this.jvxlData); +}return this.getPropI(property, index); +}, "~S,~N"); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("set" === propertyName) { +this.setContacts(value, true); +return; +}if ("init" === propertyName) { +this.translucentLevel = 0; +}this.setPropI(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setContacts", +function(value, doEditCpList){ +var contactType = (value[0]).intValue(); +var displayType = (value[1]).intValue(); +var colorDensity = (value[2]).booleanValue(); +var colorByType = (value[3]).booleanValue(); +var bsA = value[4]; +var bsB = value[5]; +var rd = value[6]; +var saProbeRadius = (value[7]).floatValue(); +var parameters = value[8]; +var modelIndex = (value[9]).intValue(); +var command = value[10]; +if (Float.isNaN(saProbeRadius)) saProbeRadius = 0; +if (rd == null) rd = new J.atomdata.RadiusData(null, saProbeRadius, J.atomdata.RadiusData.EnumType.OFFSET, J.c.VDW.AUTO); +if (colorDensity) { +switch (displayType) { +case 1073741961: +case 1275068932: +case 134217750: +displayType = 1275068932; +break; +case 4106: +case 1073742036: +case 2097180: +case 1073742135: +break; +case 1073741875: +colorDensity = false; +break; +} +}var bs; +this.ac = this.ms.ac; +this.atoms = this.ms.at; +var intramolecularMode = Clazz.floatToInt(parameters == null || parameters.length < 2 ? 0 : parameters[1]); +var ptSize = (colorDensity && parameters != null && parameters[0] < 0 ? Math.abs(parameters[0]) : 0.15); +if (JU.Logger.debugging) { +JU.Logger.debug("Contact intramolecularMode " + intramolecularMode); +JU.Logger.debug("Contacts for " + bsA.cardinality() + ": " + JU.Escape.eBS(bsA)); +JU.Logger.debug("Contacts to " + bsB.cardinality() + ": " + JU.Escape.eBS(bsB)); +}this.setPropI("newObject", null, null); +this.thisMesh.setMerged(true); +this.thisMesh.nSets = 0; +this.thisMesh.info = null; +var func = null; +var fullyLit = true; +switch (displayType) { +case 1073741961: +func = "(a>b?a:b)"; +break; +case 134217750: +case 1073741875: +func = "a-b"; +break; +case 4106: +func = "a+b"; +break; +} +switch (displayType) { +case 1073742036: +colorByType = fullyLit = false; +bs = JU.BSUtil.copy(bsA); +bs.or(bsB); +if (parameters[0] < 0) parameters[0] = 0; +this.sg.params.colorDensity = colorDensity; +this.sg.params.bsSelected = bs; +this.sg.params.bsSolvent = bsB; +this.sg.setProp("parameters", parameters, null); +this.setPropI("nci", Boolean.TRUE, null); +break; +case 1073742135: +case 2097180: +colorByType = fullyLit = false; +this.thisMesh.nSets = 1; +this.newSurface(2097180, null, bsA, bsB, rd, null, null, colorDensity, null, saProbeRadius); +break; +case 1073741875: +colorByType = fullyLit = false; +this.thisMesh.nSets = 1; +this.newSurface(554176565, null, bsA, bsB, rd, null, null, false, null, 0); +this.sg.initState(); +this.newSurface(134217750, null, bsA, bsB, rd, parameters, func, colorDensity, this.sg.volumeDataTemp, 0); +this.mergeMesh(null); +break; +case 1073741961: +case 1275068932: +colorByType = false; +this.newSurface(1275068932, null, bsA, bsB, rd, null, null, colorDensity, null, 0); +if (displayType == 1073741961) { +this.sg.initState(); +this.newSurface(1275068932, null, bsB, bsA, rd, parameters, func, colorDensity, null, 0); +this.mergeMesh(null); +} else { +var meshData = new J.jvxl.data.MeshData(); +this.fillMeshData(meshData, 1, null); +meshData.getSurfaceSet(); +this.fillMeshData(meshData, 3, null); +}break; +case 4106: +case 134217750: +var volume = 0; +var pairs = this.getPairs(bsA, bsB, rd, intramolecularMode, doEditCpList); +this.thisMesh.info = pairs; +volume += this.combineSurfaces(pairs, contactType, displayType, parameters, func, colorDensity, colorByType); +this.thisMesh.calculatedVolume = Float.$valueOf(volume); +this.mergeMesh(null); +break; +} +this.thisMesh.setMerged(false); +if (modelIndex != -2147483648) this.thisMesh.modelIndex = modelIndex; +this.thisMesh.jvxlData.vertexDataOnly = true; +this.thisMesh.reinitializeLightingAndColor(this.vwr); +if (contactType != 1073742036) { +this.thisMesh.bsVdw = new JU.BS(); +this.thisMesh.bsVdw.or(bsA); +this.thisMesh.bsVdw.or(bsB); +}this.setPropI("finalize", command, null); +if (colorDensity) { +this.setPropI("pointSize", Float.$valueOf(ptSize), null); +} else { +this.setPropI("token", Integer.$valueOf(fullyLit ? 1073741964 : 1073741958), null); +}if (this.thisMesh.slabOptions != null) { +this.thisMesh.slabOptions = null; +this.thisMesh.polygonCount0 = -1; +}this.discardTempData(true); +var defaultColor = null; +switch (contactType) { +case 1613238294: +defaultColor = "lightgreen"; +break; +case 1073741881: +defaultColor = "yellow"; +break; +case 2097180: +defaultColor = "skyblue"; +break; +} +var ce = null; +if (colorByType) { +ce = this.vwr.cm.getColorEncoder("rwb"); +ce.setRange(-0.5, 0.5, false); +} else if (defaultColor != null) { +this.setPropI("color", Integer.$valueOf(JU.CU.getArgbFromString(defaultColor)), null); +} else if (displayType == 1073742036) { +ce = this.vwr.cm.getColorEncoder("bgr"); +ce.setRange(-0.03, 0.03, false); +} else { +ce = this.vwr.cm.getColorEncoder("rgb"); +if (colorDensity) ce.setRange(-0.3, 0.3, false); + else ce.setRange(-0.5, 1, false); +}if (ce != null) this.thisMesh.remapColors(this.vwr, ce, this.translucentLevel); +}, "~A,~B"); +Clazz.defineMethod(c$, "combineSurfaces", +function(pairs, contactType, displayType, parameters, func, isColorDensity, colorByType){ +var volumeData = new J.jvxl.data.VolumeData(); +var logLevel = JU.Logger.getLogLevel(); +JU.Logger.setLogLevel(0); +var resolution = this.sg.params.resolution; +var nContacts = pairs.size(); +var volume = 0; +if (displayType == 1073741961 && resolution == 3.4028235E38) resolution = (nContacts > 1000 ? 3 : 10); +var box = new JU.BoxInfo(); +for (var i = nContacts; --i >= 0; ) { +var cp = pairs.get(i); +var oldScore = cp.score; +var isVdwClash = (displayType == 134217750 && (contactType == 1648363544 || contactType == 0) && cp.setForVdwClash(true)); +if (isVdwClash) cp.score = 0; +if (contactType != 0 && cp.contactType != contactType) continue; +var nV = this.thisMesh.vc; +this.thisMesh.nSets++; +if (contactType != 0 || cp.contactType != 1648363544) volume += cp.volume; +this.setVolumeData(displayType, volumeData, cp, resolution, nContacts); +switch (displayType) { +case 1073741961: +this.newSurface(displayType, cp, null, null, null, null, func, isColorDensity, volumeData, 0); +cp.switchAtoms(); +this.newSurface(displayType, cp, null, null, null, null, null, isColorDensity, volumeData, 0); +break; +case 1275068932: +case 134217750: +case 4106: +this.newSurface(displayType, cp, null, null, null, parameters, func, isColorDensity, volumeData, 0); +if (isVdwClash && cp.setForVdwClash(false)) { +if (colorByType) nV = this.setColorByScore(cp.score, nV); +cp.score = oldScore; +volume += cp.volume; +this.newSurface(displayType, cp, null, null, null, parameters, func, isColorDensity, volumeData, 0); +}break; +} +if (i > 0 && (i % 1000) == 0 && logLevel == 4) { +JU.Logger.setLogLevel(4); +JU.Logger.info("contact..." + i); +JU.Logger.setLogLevel(0); +}if (colorByType) this.setColorByScore((cp.contactType == 1613238294 ? 4 : cp.score), nV); +for (var j = this.thisMesh.vc; --j >= 0; ) box.addBoundBoxPoint(this.thisMesh.vs[j]); + +} +JU.Logger.setLogLevel(logLevel); +if (this.jvxlData.boundingBox == null) { +System.out.println("???"); +} else { +this.jvxlData.boundingBox[0] = box.bbCorner0; +this.jvxlData.boundingBox[1] = box.bbCorner1; +}this.displayType = displayType; +return volume; +}, "JU.Lst,~N,~N,~A,~O,~B,~B"); +Clazz.defineMethod(c$, "setColorByScore", +function(score, nV){ +for (var iv = this.thisMesh.vc; --iv >= nV; ) this.thisMesh.vvs[iv] = score; + +return this.thisMesh.vc; +}, "~N,~N"); +Clazz.defineMethod(c$, "getPairs", +function(bsA, bsB, rd, intramolecularMode, doEditCpList){ +var list = new JU.Lst(); +var ad = new J.atomdata.AtomData(); +ad.radiusData = rd; +var bs = JU.BSUtil.copy(bsA); +bs.or(bsB); +if (bs.isEmpty()) return list; +ad.bsSelected = bs; +var iModel = this.atoms[bs.nextSetBit(0)].mi; +var isMultiModel = (iModel != this.atoms[bs.length() - 1].mi); +ad.modelIndex = (isMultiModel ? -1 : iModel); +var isSelf = bsA.equals(bsB); +this.vwr.fillAtomData(ad, 2 | (isMultiModel ? 16 : 0) | 4); +var maxRadius = 0; +for (var ib = bsB.nextSetBit(0); ib >= 0; ib = bsB.nextSetBit(ib + 1)) if (ad.atomRadius[ib] > maxRadius) maxRadius = ad.atomRadius[ib]; + +var iter = this.vwr.getSelectedAtomIterator(bsB, isSelf, false, isMultiModel); +for (var ia = bsA.nextSetBit(0); ia >= 0; ia = bsA.nextSetBit(ia + 1)) { +var atomA = this.atoms[ia]; +var vdwA = atomA.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO); +if (isMultiModel) this.vwr.setIteratorForPoint(iter, -1, ad.atoms[ia], ad.atomRadius[ia] + maxRadius); + else this.vwr.setIteratorForAtom(iter, ia, ad.atomRadius[ia] + maxRadius); +while (iter.hasNext()) { +var ib = iter.next(); +if (isMultiModel && !bsB.get(ib)) continue; +var atomB = this.atoms[ib]; +var isSameMolecule = (ad.atomMolecule[ia] == ad.atomMolecule[ib]); +if (ia == ib || isSameMolecule && this.isWithinFourBonds(atomA, atomB)) continue; +switch (intramolecularMode) { +case 0: +break; +case 1: +case 2: +if (isSameMolecule != (intramolecularMode == 1)) continue; +} +var vdwB = atomB.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO); +var ra = ad.atomRadius[ia]; +var rb = ad.atomRadius[ib]; +var d = atomA.distance(atomB); +if (d > ra + rb) continue; +var cp = new JU.ContactPair(this.atoms, ia, ib, ra, rb, vdwA, vdwB); +if (cp.score < 0) J.shapesurface.Contact.getVdwClashRadius(cp, ra - vdwA, vdwA, vdwB, d); +var typeA = J.c.HB.getType(atomA); +var typeB = (typeA === J.c.HB.NOT ? J.c.HB.NOT : J.c.HB.getType(atomB)); +var isHBond = J.c.HB.isPossibleHBond(typeA, typeB); +var hbondCutoff = (atomA.getElementNumber() == 1 || atomB.getElementNumber() == 1 ? -1.2 : -1.0); +if (isHBond && cp.score < hbondCutoff) isHBond = false; +if (isHBond && cp.score < 0) cp.contactType = 1613238294; +list.addLast(cp); +} +} +iter.release(); +iter = null; +if (!doEditCpList) return list; +var n = list.size() - 1; +var bsBad = new JU.BS(); +for (var i = 0; i < n; i++) { +var cp1 = list.get(i); +for (var j = i + 1; j <= n; j++) { +var cp2 = list.get(j); +for (var m = 0; m < 2; m++) { +for (var p = 0; p < 2; p++) { +switch (J.shapesurface.Contact.checkCp(cp1, cp2, m, p)) { +case 1: +bsBad.set(i); +break; +case 2: +bsBad.set(j); +break; +default: +} +} +} +} +} +for (var i = bsBad.length(); --i >= 0; ) if (bsBad.get(i)) list.removeItemAt(i); + +if (JU.Logger.debugging) for (var i = 0; i < list.size(); i++) JU.Logger.debug(list.get(i).toString()); + +JU.Logger.info("Contact pairs: " + list.size()); +return list; +}, "JU.BS,JU.BS,J.atomdata.RadiusData,~N,~B"); +Clazz.defineMethod(c$, "isWithinFourBonds", +function(atomA, atomB){ +if (atomA.mi != atomB.mi) return false; +if (atomA.isCovalentlyBonded(atomB)) return true; +var bondsOther = atomB.bonds; +var bonds = atomA.bonds; +if (bondsOther != null && bonds != null) for (var i = 0; i < bondsOther.length; i++) { +var atom2 = bondsOther[i].getOtherAtom(atomB); +if (atomA.isCovalentlyBonded(atom2)) return true; +for (var j = 0; j < bonds.length; j++) if (bonds[j].getOtherAtom(atomA).isCovalentlyBonded(atom2)) return true; + +} +return false; +}, "JM.Atom,JM.Atom"); +c$.checkCp = Clazz.defineMethod(c$, "checkCp", +function(cp1, cp2, i1, i2){ +if (cp1.myAtoms[i1] !== cp2.myAtoms[i2]) return 0; +var clash1 = (cp1.pt.distance(cp2.myAtoms[1 - i2]) < cp2.radii[1 - i2]); +var clash2 = (cp2.pt.distance(cp1.myAtoms[1 - i1]) < cp1.radii[1 - i1]); +return (!clash1 && !clash2 ? 0 : cp1.score > cp2.score ? 1 : 2); +}, "JU.ContactPair,JU.ContactPair,~N,~N"); +Clazz.defineMethod(c$, "newSurface", +function(displayType, cp, bs1, bs2, rd, parameters, func, isColorDensity, volumeData, sasurfaceRadius){ +var params = this.sg.params; +params.isSilent = true; +if (cp == null) { +bs2.andNot(bs1); +if (bs1.isEmpty() || bs2.isEmpty()) return; +} else { +params.contactPair = cp; +}var iSlab0 = 0; +var iSlab1 = 0; +this.sg.initState(); +switch (displayType) { +case 1073742135: +case 2097180: +case 554176565: +case 1275068932: +case 1073741961: +var rdA; +var rdB; +if (displayType == 2097180) { +rdA = J.shapesurface.Contact.rdVDW; +rdB = new J.atomdata.RadiusData(null, (rd.factorType === J.atomdata.RadiusData.EnumType.OFFSET ? rd.value * 2 : (rd.value - 1) * 2 + 1), rd.factorType, rd.vdwType); +} else { +rdA = rdB = rd; +}params.colorDensity = isColorDensity; +if (isColorDensity) { +this.setPropI("cutoffRange", Clazz.newFloatArray(-1, [-100.0, 0]), null); +}if (cp == null) { +params.atomRadiusData = rdA; +params.bsIgnore = JU.BSUtil.copyInvert(bs1, this.ac); +params.bsSelected = bs1; +params.bsSolvent = null; +}params.volumeData = volumeData; +this.setPropI("sasurface", Float.$valueOf(sasurfaceRadius), null); +this.setPropI("map", Boolean.TRUE, null); +if (cp == null) { +params.atomRadiusData = rdB; +params.bsIgnore = JU.BSUtil.copyInvert(bs2, this.ac); +params.bsSelected = bs2; +}params.volumeData = volumeData; +this.setPropI("sasurface", Float.$valueOf(sasurfaceRadius), null); +switch (displayType) { +case 1073741961: +case 1275068932: +iSlab0 = -100; +break; +case 1073742135: +case 2097180: +if (isColorDensity) iSlab0 = -100; +break; +case 554176565: +iSlab1 = -100; +} +break; +case 134217750: +case 4106: +if (displayType == 4106) this.sg.setProp("parameters", parameters, null); +if (cp == null) { +params.atomRadiusData = rd; +params.bsIgnore = JU.BSUtil.copyInvert(bs2, this.ac); +params.bsIgnore.andNot(bs1); +}params.func = func; +params.intersection = Clazz.newArray(-1, [bs1, bs2]); +params.volumeData = volumeData; +params.colorDensity = isColorDensity; +if (isColorDensity) this.setPropI("cutoffRange", Clazz.newFloatArray(-1, [-5.0, 0]), null); +this.setPropI("sasurface", Float.$valueOf(0), null); +this.setPropI("map", Boolean.TRUE, null); +params.volumeData = volumeData; +this.setPropI("sasurface", Float.$valueOf(0), null); +if (displayType == 134217750) { +iSlab0 = -100; +}break; +} +if (iSlab0 != iSlab1) this.thisMesh.getMeshSlicer().slabPolygons(JU.TempArray.getSlabWithinRange(iSlab0, iSlab1), false); +if (displayType != 2097180) this.thisMesh.setMerged(true); +}, "~N,JU.ContactPair,JU.BS,JU.BS,J.atomdata.RadiusData,~A,~O,~B,J.jvxl.data.VolumeData,~N"); +Clazz.defineMethod(c$, "setVolumeData", +function(type, volumeData, cp, resolution, nPairs){ +this.pt1.setT(cp.myAtoms[0]); +this.pt2.setT(cp.myAtoms[1]); +this.vX.sub2(this.pt2, this.pt1); +var dAB = this.vX.length(); +var dYZ = (cp.radii[0] * cp.radii[0] + dAB * dAB - cp.radii[1] * cp.radii[1]) / (2 * dAB * cp.radii[0]); +dYZ = 2.1 * (cp.radii[0] * Math.sin(Math.acos(dYZ))); +JU.Measure.getNormalToLine(this.pt1, this.pt2, this.vZ); +this.vZ.scale(dYZ); +this.vY.cross(this.vZ, this.vX); +this.vY.normalize(); +this.vY.scale(dYZ); +if (type != 4106) { +this.vX.normalize(); +this.pt1.scaleAdd2((dAB - cp.radii[1]) * 0.95, this.vX, this.pt1); +this.pt2.scaleAdd2((cp.radii[0] - dAB) * 0.95, this.vX, this.pt2); +this.vX.sub2(this.pt2, this.pt1); +}if (resolution == 3.4028235E38) resolution = (nPairs > 100 ? 3 : 10); +var nX = Math.max(5, Clazz.doubleToInt(Math.floor(this.pt1.distance(this.pt2) * resolution + 1))); +if ((nX % 2) == 0) nX++; +var nYZ = Math.max(7, Clazz.doubleToInt(Math.floor(dYZ * resolution + 1))); +if ((nYZ % 2) == 0) nYZ++; +volumeData.setVoxelCounts(nX, nYZ, nYZ); +this.pt1.scaleAdd2(-0.5, this.vY, this.pt1); +this.pt1.scaleAdd2(-0.5, this.vZ, this.pt1); +volumeData.setVolumetricOrigin(this.pt1.x, this.pt1.y, this.pt1.z); +this.vX.scale(1 / (nX - 1)); +this.vY.scale(1 / (nYZ - 1)); +this.vZ.scale(1 / (nYZ - 1)); +volumeData.setVolumetricVector(0, this.vX.x, this.vX.y, this.vX.z); +volumeData.setVolumetricVector(1, this.vY.x, this.vY.y, this.vY.z); +volumeData.setVolumetricVector(2, this.vZ.x, this.vZ.y, this.vZ.z); +}, "~N,J.jvxl.data.VolumeData,JU.ContactPair,~N,~N"); +Clazz.defineMethod(c$, "mergeMesh", +function(md){ +this.thisMesh.merge(md); +if (this.minData == 3.4028235E38) { +} else if (this.jvxlData.mappedDataMin == 3.4028235E38) { +this.jvxlData.mappedDataMin = this.minData; +this.jvxlData.mappedDataMax = this.maxData; +} else { +this.jvxlData.mappedDataMin = Math.min(this.minData, this.jvxlData.mappedDataMin); +this.jvxlData.mappedDataMax = Math.max(this.maxData, this.jvxlData.mappedDataMax); +}this.minData = this.jvxlData.mappedDataMin; +this.maxData = this.jvxlData.mappedDataMax; +this.jvxlData.valueMappedToBlue = this.minData; +this.jvxlData.valueMappedToRed = this.maxData; +}, "J.jvxl.data.MeshData"); +Clazz.overrideMethod(c$, "addMeshInfo", +function(mesh, info){ +if (mesh.info == null) return; +var pairInfo = new JU.Lst(); +info.put("pairInfo", pairInfo); +var list = mesh.info; +for (var i = 0; i < list.size(); i++) { +var cpInfo = new java.util.Hashtable(); +pairInfo.addLast(cpInfo); +var cp = list.get(i); +cpInfo.put("type", JS.T.nameOf(cp.contactType)); +cpInfo.put("volume", Double.$valueOf(cp.volume)); +cpInfo.put("vdwVolume", Double.$valueOf(cp.vdwVolume)); +if (!Float.isNaN(cp.xVdwClash)) { +cpInfo.put("xVdwClash", Double.$valueOf(cp.xVdwClash)); +}cpInfo.put("score", Double.$valueOf(cp.score)); +cpInfo.put("atoms", cp.myAtoms); +cpInfo.put("radii", cp.radii); +cpInfo.put("vdws", cp.vdws); +} +}, "J.shapesurface.IsosurfaceMesh,java.util.Map"); +c$.getVdwClashRadius = Clazz.defineMethod(c$, "getVdwClashRadius", +function(cp, x0, vdwA, vdwB, d){ +var sum = vdwA + vdwB; +var dif2 = vdwA - vdwB; +dif2 *= dif2; +var v0_nopi = x0 * x0 * (sum + 1.3333333333333333 * x0 - dif2 / sum); +cp.vdwVolume = cp.volume - v0_nopi * 3.141592653589793; +var a = (sum - d); +var b = d + 2 * sum - 3 * dif2 / d; +var c = v0_nopi * 12; +var a2 = a * a; +var a3 = a * a2; +var b2 = b * b; +var b3 = b * b2; +var f = -a * 2 / 3 - b / 6; +var g = (4 * a2 - 4 * a * b + b2) / 36; +var v = a3 / 27 - a2 * b / 18 + a * b2 / 36 - b3 / 216 + c / 4; +var u = -c / 432 * (8 * a3 - 12 * a2 * b + 6 * a * b2 - b3 + 27 * c); +var theta = Math.atan2(Math.sqrt(u), v); +var vvu = Math.pow(v * v + u, 0.16666666666666666); +var costheta = Math.cos(theta / 3); +var x; +x = f + (g / vvu + vvu) * costheta; +if (x > 0) { +cp.xVdwClash = ((x / 2)); +}}, "JU.ContactPair,~N,~N,~N,~N"); +c$.rdVDW = new J.atomdata.RadiusData(null, 1, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Isosurface.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Isosurface.js new file mode 100755 index 000000000000..555e0e59de40 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Isosurface.js @@ -0,0 +1,1316 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(["J.jvxl.api.MeshDataServer", "J.shape.MeshCollection", "JU.P3i", "$.P4"], "J.shapesurface.Isosurface", ["java.util.Hashtable", "JU.A4", "$.AU", "$.BS", "$.CU", "$.Lst", "$.M3", "$.M4", "$.P3", "$.PT", "$.Quat", "$.Rdr", "$.SB", "$.V3", "J.jvxl.data.JvxlCoder", "$.JvxlData", "$.MeshData", "J.jvxl.readers.SurfaceGenerator", "J.shape.Mesh", "J.shapesurface.IsosurfaceMesh", "JU.C", "$.Escape", "$.Logger", "$.TempArray", "JV.JC", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isomeshes = null; +this.thisMesh = null; +this.actualID = null; +this.iHaveBitSets = false; +this.explicitContours = false; +this.atomIndex = 0; +this.moNumber = 0; +this.moLinearCombination = null; +this.colorType = 0; +this.defaultColix = 0; +this.meshColix = 0; +this.center = null; +this.scale3d = 0; +this.isPhaseColored = false; +this.isColorExplicit = false; +this.scriptAppendix = ""; +this.sg = null; +this.withinDistance2 = 0; +this.isWithinNot = false; +this.withinPoints = null; +this.cutoffRange = null; +this.allowMesh = true; +this.script = null; +this.iHaveModelIndex = false; +this.nLCAO = 0; +this.lcaoDir = null; +this.associateNormals = false; +this.oldFileName = null; +this.newFileName = null; +this.ptXY = null; +this.keyXy = null; +Clazz.instantialize(this, arguments);}, J.shapesurface, "Isosurface", J.shape.MeshCollection, J.jvxl.api.MeshDataServer); +Clazz.prepareFields (c$, function(){ +this.isomeshes = new Array(4); +this.lcaoDir = new JU.P4(); +this.ptXY = new JU.P3i(); +}); +Clazz.overrideMethod(c$, "allocMesh", +function(thisID, m){ +var index = this.meshCount++; +this.meshes = this.isomeshes = JU.AU.ensureLength(this.isomeshes, this.meshCount * 2); +this.currentMesh = this.thisMesh = this.isomeshes[index] = (m == null ? new J.shapesurface.IsosurfaceMesh(this.vwr, thisID, this.colix, index) : m); +this.currentMesh.index = index; +if (this.sg != null) this.sg.setJvxlData(this.jvxlData = this.thisMesh.jvxlData); +}, "~S,J.shape.Mesh"); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapesurface.Isosurface, "initShape", []); +this.myType = "isosurface"; +this.newSg(); +}); +Clazz.defineMethod(c$, "newSg", +function(){ +this.sg = new J.jvxl.readers.SurfaceGenerator(this.vwr, this, null, this.jvxlData = new J.jvxl.data.JvxlData()); +this.sg.params.showTiming = this.vwr.getBoolean(603979934); +this.sg.version = "Jmol " + JV.Viewer.getJmolVersion(); +}); +Clazz.defineMethod(c$, "clearSg", +function(){ +this.sg = null; +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +this.setPropI(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setPropI", +function(propertyName, value, bs){ +if ("cache" === propertyName) { +if (this.currentMesh == null) return; +var id = this.currentMesh.thisID; +var imodel = this.currentMesh.modelIndex; +this.vwr.cachePut("cache://isosurface_" + id, (this.getPropI("jvxlDataXml", -1)).getBytes()); +this.deleteMeshI(this.currentMesh.index); +this.setPropI("init", null, null); +this.setPropI("thisID", id, null); +this.setPropI("modelIndex", Integer.$valueOf(imodel), null); +this.setPropI("fileName", "cache://isosurface_" + id, null); +this.setPropI("readFile", null, null); +this.setPropI("finalize", "isosurface ID " + JU.PT.esc(id) + (imodel >= 0 ? " modelIndex " + imodel : "") + " /*file*/" + JU.PT.esc("cache://isosurface_" + id), null); +this.setPropI("clear", null, null); +return; +}if ("delete" === propertyName) { +this.setPropertySuper(propertyName, value, bs); +if (!this.explicitID) this.nLCAO = this.nUnnamed = 0; +this.currentMesh = this.thisMesh = null; +return; +}if ("remapInherited" === propertyName) { +for (var i = this.meshCount; --i >= 0; ) { +if (this.isomeshes[i] != null && "#inherit;".equals(this.isomeshes[i].colorCommand)) this.isomeshes[i].remapColors(this.vwr, null, NaN); +} +return; +}if ("remapColor" === propertyName) { +if (this.thisMesh != null) this.thisMesh.remapColors(this.vwr, value, this.translucentLevel); +return; +}if ("thisID" === propertyName) { +if (this.actualID != null) value = this.actualID; +this.setPropertySuper("thisID", value, null); +return; +}if ("params" === propertyName) { +if (this.thisMesh != null) { +this.ensureMeshSource(); +this.thisMesh.checkAllocColixes(); +var data = value; +var colixes = data[0]; +var atomMap = null; +if (colixes != null) { +for (var i = 0; i < colixes.length; i++) { +var colix = colixes[i]; +var f = 0; +if (f > 0.01) colix = JU.C.getColixTranslucent3(colix, true, f); +colixes[i] = colix; +} +atomMap = Clazz.newIntArray (bs.length(), 0); +for (var pt = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), pt++) atomMap[i] = pt; + +}this.thisMesh.setVertexColixesForAtoms(this.vwr, colixes, atomMap, bs); +this.thisMesh.setVertexColorMap(); +}return; +}if ("atomcolor" === propertyName) { +if (this.thisMesh != null) { +this.ensureMeshSource(); +this.thisMesh.colorVertices(JU.C.getColixO(value), bs, true); +}return; +}if ("pointSize" === propertyName) { +if (this.thisMesh != null) { +this.thisMesh.volumeRenderPointSize = (value).floatValue(); +}return; +}if ("vertexcolor" === propertyName) { +if (this.thisMesh != null) { +this.thisMesh.colorVertices(JU.C.getColixO(value), bs, false); +}return; +}if ("colorPhase" === propertyName) { +var colors = value; +var colix0 = JU.C.getColix((colors[0]).intValue()); +var colix1 = JU.C.getColix((colors[1]).intValue()); +var id = (this.thisMesh != null ? this.thisMesh.thisID : JU.PT.isWild(this.previousMeshID) ? this.previousMeshID : null); +var list = this.getMeshList(id, false); +for (var i = list.size(); --i >= 0; ) this.setColorPhase(list.get(i), colix0, colix1); + +return; +}if ("color" === propertyName) { +var color = JU.C.getHexCode(JU.C.getColixO(value)); +if (this.thisMesh != null) { +this.setIsoMeshColor(this.thisMesh, color); +} else { +var list = this.getMeshList(JU.PT.isWild(this.previousMeshID) ? this.previousMeshID : null, false); +for (var i = list.size(); --i >= 0; ) this.setIsoMeshColor(list.get(i), color); + +}this.setPropertySuper(propertyName, value, bs); +return; +}if ("nocontour" === propertyName) { +if (this.thisMesh != null) { +this.thisMesh.deleteContours(); +}return; +}if ("fixed" === propertyName) { +this.isFixed = (value).booleanValue(); +this.setMeshI(); +return; +}if ("newObject" === propertyName) { +if (this.thisMesh != null) this.thisMesh.clearType(this.thisMesh.meshType, false); +return; +}if ("moveIsosurface" === propertyName) { +if (this.thisMesh != null && !this.thisMesh.isModelConnected) { +this.thisMesh.updateCoordinates(value, null); +this.thisMesh.altVertices = null; +}return; +}if ("refreshTrajectories" === propertyName) { +var m = ((value)[0]).intValue(); +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i].modelIndex == m && (this.meshes[i].connectedAtoms != null || this.meshes[i].isModelConnected)) (this.meshes[i]).updateCoordinates((value)[2], (value)[1]); + +return; +}if ("modelIndex" === propertyName) { +if (!this.iHaveModelIndex) { +this.modelIndex = (value).intValue(); +this.isFixed = (this.modelIndex < 0); +this.sg.params.modelIndex = Math.abs(this.modelIndex); +}return; +}if ("lcaoCartoon" === propertyName || "lonePair" === propertyName || "radical" === propertyName) { +var info = value; +if (!this.explicitID) { +this.setPropertySuper("thisID", null, null); +}if (!this.sg.setProp("lcaoCartoonCenter", info[2], null)) this.drawLcaoCartoon(info[0], info[1], info[3], ("lonePair" === propertyName ? 2 : "radical" === propertyName ? 1 : 0), this.thisMesh == null ? false : this.thisMesh.reverseColor); +return; +}if ("select" === propertyName) { +if (this.iHaveBitSets) return; +}if ("ignore" === propertyName) { +if (this.iHaveBitSets) return; +}if ("reversecolor" === propertyName) { +if (this.thisMesh != null) this.thisMesh.reverseColor = (value === Boolean.TRUE); +return; +}if ("meshcolor" === propertyName) { +var rgb = (value).intValue(); +this.meshColix = JU.C.getColix(rgb); +if (this.thisMesh != null) this.thisMesh.meshColix = this.meshColix; +return; +}if ("offset" === propertyName) { +var offset = JU.P3.newP(value); +if (offset.equals(JV.JC.center)) offset = null; +if (this.thisMesh != null) { +this.thisMesh.rotateTranslate(null, offset, true); +this.thisMesh.altVertices = null; +}return; +}if ("rotate" === propertyName) { +var pt4 = value; +if (this.thisMesh != null) { +this.thisMesh.rotateTranslate(JU.Quat.newP4(pt4), null, true); +this.thisMesh.altVertices = null; +}return; +}if ("bsDisplay" === propertyName) { +this.bsDisplay = value; +return; +}if ("displayWithin" === propertyName) { +var o = value; +this.displayWithinDistance2 = (o[0]).floatValue(); +this.isDisplayWithinNot = (this.displayWithinDistance2 < 0); +this.displayWithinDistance2 *= this.displayWithinDistance2; +this.displayWithinPoints = o[3]; +if (this.displayWithinPoints.size() == 0) this.displayWithinPoints = this.ms.getAtomPointVector(o[2]); +return; +}if ("finalize" === propertyName) { +if (this.thisMesh != null) { +var cmd = value; +if (cmd != null && !cmd.startsWith("; isosurface map")) { +this.thisMesh.setDiscreteColixes(this.sg.params.contoursDiscrete, this.sg.params.contourColixes); +this.setJvxlInfo(); +}this.setScriptInfo(cmd); +}this.clearSg(); +return; +}if ("connections" === propertyName) { +if (this.currentMesh != null) { +this.connections = value; +if (this.connections[0] >= 0 && this.connections[0] < this.ms.ac) this.currentMesh.connectedAtoms = this.connections; + else this.connections = this.currentMesh.connectedAtoms = null; +}return; +}if ("fixLattice" === propertyName) { +if (this.thisMesh != null) this.thisMesh.fixLattice(); +return; +}if ("slab" === propertyName) { +if (Clazz.instanceOf(value, Integer)) { +if (this.thisMesh != null) this.thisMesh.jvxlData.slabValue = (value).intValue(); +return; +}if (this.thisMesh != null) { +var slabInfo = value; +var tok = (slabInfo[0]).intValue(); +switch (tok) { +case 1073742018: +var data = slabInfo[1]; +var m = this.getMesh(data[1]); +if (m == null) return; +data[1] = m; +break; +} +this.slabPolygons(slabInfo); +return; +}}if ("cap" === propertyName) { +if (this.thisMesh != null && this.thisMesh.pc != 0) { +this.thisMesh.getMeshSlicer().slabPolygons(value, true); +this.thisMesh.initialize(this.thisMesh.lighting, null, null); +return; +}}if ("map" === propertyName) { +if (this.sg != null) this.sg.params.isMapped = true; +this.setProperty("squareData", Boolean.FALSE, null); +if (this.thisMesh == null || this.thisMesh.vc == 0) return; +}if ("probes" === propertyName) { +if (this.sg != null) { +this.sg.params.probes = value; +this.sg.params.probeValues = Clazz.newFloatArray (this.sg.params.probes.length, 0); +}return; +}if ("deleteVdw" === propertyName) { +for (var i = this.meshCount; --i >= 0; ) if (this.isomeshes[i].bsVdw != null && (bs == null || bs.intersects(this.isomeshes[i].bsVdw))) this.deleteMeshI(i); + +this.currentMesh = this.thisMesh = null; +return; +}if ("mapColor" === propertyName || "readFile" === propertyName) { +if (value == null) { +if (this.sg.params.filesData == null) { +value = this.getFileReader(this.sg.params.fileName); +} else { +value = this.sg.params.filesData; +var a = this.sg.params.filesData[0]; +var b = new Array(a.length); +for (var i = b.length; --i >= 0 && value != null; ) if ((b[i] = this.getFileReader(a[i])) == null) value = null; + +if (value != null) this.sg.params.filesData[0] = b; +}if (value == null) return; +}} else if ("atomIndex" === propertyName) { +this.atomIndex = (value).intValue(); +if (this.thisMesh != null) this.thisMesh.atomIndex = this.atomIndex; +} else if ("center" === propertyName) { +this.center.setT(value); +} else if ("colorRGB" === propertyName) { +var rgb = (value).intValue(); +if (rgb == 1296041985) { +this.colorType = rgb; +} else { +this.colorType = 0; +this.defaultColix = JU.C.getColix(rgb); +}} else if ("contour" === propertyName) { +this.explicitContours = true; +} else if ("functionXY" === propertyName) { +if (this.sg.params.state == 2) this.setScriptInfo(null); +} else if ("init" === propertyName) { +this.newSg(); +} else if ("getSurfaceSets" === propertyName) { +if (this.thisMesh != null) { +var bsSets; +if (Clazz.instanceOf(value,"JU.BS")) { +bsSets = (value); +if (bsSets.isEmpty()) bsSets = null; +} else { +bsSets = new JU.BS(); +var a = value; +for (var i = a.length; --i >= 0; ) { +if (a[i] > 0) bsSets.set(a[i] - 1); +} +}this.thisMesh.jvxlData.thisSet = bsSets; +this.thisMesh.calculatedVolume = null; +this.thisMesh.calculatedArea = null; +}} else if ("localName" === propertyName) { +value = this.vwr.getOutputChannel(value, null); +propertyName = "outputChannel"; +} else if ("molecularOrbital" === propertyName) { +this.isFixed = false; +this.setMeshI(); +if (Clazz.instanceOf(value, Integer)) { +this.moNumber = (value).intValue(); +this.moLinearCombination = null; +} else { +this.moLinearCombination = value; +this.moNumber = 0; +}if (!this.isColorExplicit) this.isPhaseColored = true; +if (this.sg == null || !this.sg.params.isMapped) { +var mat4 = this.ms.am[this.currentMesh.modelIndex].mat4; +if (mat4 != null) { +var minv = JU.M4.newM4(mat4); +minv.invert(); +this.setPropI("modelInvRotation", minv, null); +}}} else if ("phase" === propertyName) { +this.isPhaseColored = true; +} else if ("plane" === propertyName) { +} else if ("pocket" === propertyName) { +} else if ("scale3d" === propertyName) { +this.scale3d = (value).floatValue(); +if (this.thisMesh != null) { +this.thisMesh.scale3d = this.thisMesh.jvxlData.scale3d = this.scale3d; +this.thisMesh.altVertices = null; +}} else if ("title" === propertyName) { +if ((typeof(value)=='string') && "-".equals(value)) value = null; +this.setPropertySuper(propertyName, value, bs); +value = this.title; +} else if ("withinPoints" === propertyName) { +var o = value; +this.withinDistance2 = (o[0]).floatValue(); +this.isWithinNot = (this.withinDistance2 < 0); +this.withinDistance2 *= this.withinDistance2; +this.withinPoints = o[3]; +if (this.withinPoints.size() == 0) this.withinPoints = this.ms.getAtomPointVector(o[2]); +} else if (("nci" === propertyName || "orbital" === propertyName) && this.sg != null) { +this.sg.params.testFlags = (this.vwr.getBoolean(603979962) ? 2 : 0); +} else if ("cutoffRange" === propertyName) { +this.cutoffRange = value; +}if (this.sg != null && this.sg.setProp(propertyName, value, bs)) { +if (this.sg.isValid) { +if ("molecularOrbital" === propertyName) { +this.currentMesh.isModelConnected = true; +this.currentMesh.mat4 = this.ms.am[this.currentMesh.modelIndex].mat4; +}return; +}propertyName = "delete"; +}if ("init" === propertyName) { +this.explicitID = false; +this.scriptAppendix = ""; +var script = ((typeof(value)=='string') ? value : null); +var pt = (script == null ? -1 : script.indexOf("# ID=")); +this.actualID = (pt >= 0 ? JU.PT.getQuotedStringAt(script, pt) : null); +this.setPropertySuper("thisID", "+PREVIOUS_MESH+", null); +if (script != null && !(this.iHaveBitSets = this.getScriptBitSets(script, null))) this.sg.setProp("select", bs, null); +this.initializeIsosurface(); +this.sg.params.modelIndex = (this.isFixed ? -1 : this.modelIndex); +return; +}if ("clear" === propertyName) { +this.discardTempData(true); +return; +}if ("colorDensity" === propertyName) { +if (value != null && this.currentMesh != null) this.currentMesh.volumeRenderPointSize = (value).floatValue(); +return; +}if (propertyName === "deleteModelAtoms") { +var modelIndex = ((value)[2])[0]; +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +for (var i = this.meshCount; --i >= 0; ) { +var m = this.meshes[i]; +if (m == null) continue; +if (m.connectedAtoms != null) { +var iAtom = m.connectedAtoms[0]; +if (iAtom >= firstAtomDeleted + nAtomsDeleted) m.connectedAtoms[0] = iAtom - nAtomsDeleted; + else if (iAtom >= firstAtomDeleted) m.connectedAtoms = null; +}m.connectedAtoms = null; +if (m.modelIndex == modelIndex) { +this.meshCount--; +if (m === this.currentMesh) this.currentMesh = this.thisMesh = null; +this.meshes = this.isomeshes = JU.AU.deleteElements(this.meshes, i, 1); +} else if (m.modelIndex > modelIndex) { +m.modelIndex--; +if (m.atomIndex >= firstAtomDeleted) m.atomIndex -= nAtomsDeleted; +}} +return; +}this.setPropertySuper(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "getFileReader", +function(fileName){ +var value = this.vwr.fm.getBufferedReaderOrErrorMessageFromName(fileName, null, true, true); +if ((typeof(value)=='string')) { +JU.Logger.error("Isosurface: could not open file " + fileName + " -- " + value); +return null; +}if (!(Clazz.instanceOf(value,"java.io.BufferedReader"))) try { +value = JU.Rdr.getBufferedReader(value, "ISO-8859-1"); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +return value; +}, "~S"); +Clazz.defineMethod(c$, "setIsoMeshColor", +function(m, color){ +m.jvxlData.baseColor = color; +m.isColorSolid = true; +m.pcs = null; +m.colorsExplicit = false; +m.colorEncoder = null; +m.vertexColorMap = null; +}, "J.shapesurface.IsosurfaceMesh,~S"); +Clazz.defineMethod(c$, "setColorPhase", +function(m, colix0, colix1){ +m.colorPhased = true; +m.colix = m.jvxlData.minColorIndex = colix0; +m.jvxlData.maxColorIndex = colix1; +m.jvxlData.isBicolorMap = true; +m.jvxlData.colorDensity = false; +m.isColorSolid = false; +m.remapColors(this.vwr, null, this.translucentLevel); +}, "J.shapesurface.IsosurfaceMesh,~N,~N"); +Clazz.defineMethod(c$, "ensureMeshSource", +function(){ +var haveColors = (this.thisMesh.vertexSource != null); +if (haveColors) for (var i = this.thisMesh.vc; --i >= 0; ) if (this.thisMesh.vertexSource[i] < 0) { +haveColors = false; +break; +} +if (!haveColors) { +var source = this.thisMesh.vertexSource; +var vertexColixes = this.thisMesh.vcs; +var colix = (this.thisMesh.isColorSolid ? this.thisMesh.colix : 0); +this.setProperty("init", null, null); +this.setProperty("map", Boolean.FALSE, null); +this.setProperty("property", Clazz.newFloatArray (this.ms.ac, 0), null); +if (colix != 0) { +this.thisMesh.colorCommand = "color isosurface " + JU.C.getHexCode(colix); +this.setProperty("color", Integer.$valueOf(JU.C.getArgb(colix)), null); +}if (source != null) { +for (var i = this.thisMesh.vc; --i >= 0; ) if (source[i] < 0) source[i] = this.thisMesh.vertexSource[i]; + +this.thisMesh.vertexSource = source; +this.thisMesh.vcs = vertexColixes; +}}}); +Clazz.defineMethod(c$, "slabPolygons", +function(slabInfo){ +this.thisMesh.calculatedVolume = null; +this.thisMesh.calculatedArea = null; +this.thisMesh.getMeshSlicer().slabPolygons(slabInfo, false); +this.thisMesh.reinitializeLightingAndColor(this.vwr); +}, "~A"); +Clazz.defineMethod(c$, "setPropertySuper", +function(propertyName, value, bs){ +if (propertyName === "thisID" && this.currentMesh != null && this.currentMesh.thisID != null && this.currentMesh.thisID.equals(value)) { +this.checkExplicit(value); +return; +}this.currentMesh = this.thisMesh; +this.setPropMC(propertyName, value, bs); +this.thisMesh = this.currentMesh; +this.jvxlData = (this.thisMesh == null ? null : this.thisMesh.jvxlData); +if (this.sg != null) this.sg.setJvxlData(this.jvxlData); +}, "~S,~O,JU.BS"); +Clazz.overrideMethod(c$, "getPropertyData", +function(property, data){ +var m; +if (property === "keys") { +var keys = (Clazz.instanceOf(data[1],"JU.Lst") ? data[1] : new JU.Lst()); +data[1] = keys; +keys.addLast("info"); +keys.addLast("data"); +keys.addLast("atoms"); +}if (property === "colorEncoder") { +m = this.getMesh(data[0]); +return (m != null && (data[1] = m.colorEncoder) != null); +}if (property === "intersectPlane") { +m = this.getMesh(data[0]); +if (m == null || data.length < 4) return false; +data[3] = Integer.$valueOf(m.modelIndex); +m.getMeshSlicer().getIntersection(0, data[1], null, data[2], null, null, null, false, false, 134217750, false); +return true; +}if (property === "getBoundingBox") { +var id = data[0]; +m = this.getMesh(id); +if (m == null || m.vs == null) return false; +data[2] = m.jvxlData.boundingBox; +if (m.mat4 != null) { +var d = new Array(2); +d[0] = JU.P3.newP(m.jvxlData.boundingBox[0]); +d[1] = JU.P3.newP(m.jvxlData.boundingBox[1]); +var v = new JU.V3(); +m.mat4.getTranslation(v); +d[0].add(v); +d[1].add(v); +data[2] = d; +}return true; +}if (property === "unitCell") { +m = this.getMesh(data[0]); +return (m != null && (data[1] = m.getUnitCell()) != null); +}if (property === "getCenter") { +var index = (data[1]).intValue(); +if (index == -2147483648) { +var id = data[0]; +m = this.getMesh(id); +if (m == null || m.vs == null) return false; +var p = JU.P3.newP(m.jvxlData.boundingBox[0]); +p.add(m.jvxlData.boundingBox[1]); +p.scale(0.5); +if (m.mat4 != null) { +var v = new JU.V3(); +m.mat4.getTranslation(v); +p.add(v); +}data[2] = p; +return true; +}}return this.getPropDataMC(property, data); +}, "~S,~A"); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +return this.getPropI(property, index); +}, "~S,~N"); +Clazz.defineMethod(c$, "getPropI", +function(property, index){ +var m = this.thisMesh; +if (index >= 0 && (index >= this.meshCount || (m = this.isomeshes[index]) == null)) return null; +var ret = this.getPropMC(property, index); +if (ret != null) return ret; +if (property === "message") { +var s = ""; +if (!this.jvxlData.isValid) return "invalid! (no atoms selected?)"; +if (!Float.isNaN(this.jvxlData.integration)) s += "integration " + this.jvxlData.integration; +if (this.shapeID == 24 || this.shapeID == 27 || this.shapeID == 28) { +if (this.jvxlData.cutoffRange == null) s += " with cutoff=" + this.jvxlData.cutoff; + else s += " with cutoffRange=" + JU.Escape.eAF(this.jvxlData.cutoffRange); +}if (this.shapeID == 27 || this.shapeID == 28) return s; +if (this.jvxlData.dataMin != 3.4028235E38) s += " min=" + this.jvxlData.dataMin + " max=" + this.jvxlData.dataMax; +s += "; " + JV.JC.shapeClassBases[this.shapeID].toLowerCase() + " count: " + this.getPropMC("count", index); +return s + this.getPropI("dataRangeStr", index) + this.jvxlData.msg; +}if (property === "dataRange") return this.getDataRange(m); +if (property === "dataRangeStr") { +var dataRange = this.getDataRange(m); +return (dataRange != null && dataRange[0] != 3.4028235E38 && dataRange[0] != dataRange[1] ? "\nisosurface full data range " + dataRange[0] + " to " + dataRange[1] + " with color scheme spanning " + dataRange[2] + " to " + dataRange[3] : ""); +}if (property === "moNumber") return Integer.$valueOf(this.moNumber); +if (property === "moLinearCombination") return this.moLinearCombination; +if (property === "nSets") { +var n = (m == null ? -2147483648 : m.nSets); +if (n == 0) { +this.calculateVolumeOrArea(m, true); +n = m.nSets; +}return Integer.$valueOf(n == -2147483648 ? 0 : Math.abs(m.nSets)); +}if (property === "area") return (m == null ? Float.$valueOf(NaN) : this.calculateVolumeOrArea(m, true)); +if (property === "volume") return (m == null ? Float.$valueOf(NaN) : this.calculateVolumeOrArea(m, false)); +if (m == null) return null; +if (property === "output") { +return (m.jvxlData.sbOut == null && m.jvxlData.jvxlFileTitle == null ? null : m.jvxlData.jvxlFileTitle + "\n" + (m.jvxlData.sbOut == null ? "" : m.jvxlData.sbOut.toString())); +}if (property === "cutoff") return Float.$valueOf(this.jvxlData.cutoff); +if (property === "cutoffRange") return this.jvxlData.cutoffRange; +if (property === "minMaxInfo") return Clazz.newFloatArray(-1, [this.jvxlData.dataMin, this.jvxlData.dataMax]); +if (property === "plane") return this.jvxlData.jvxlPlane; +if (property === "contours") return m.getContours(); +if (property === "pmesh" || property === "pmeshbin") return m.getPmeshData(property === "pmeshbin"); +if (property === "jvxlDataXml" || property === "jvxlMeshXml") { +var meshData = null; +this.jvxlData.slabInfo = null; +if (property === "jvxlMeshXml" || this.jvxlData.vertexDataOnly || m.bsSlabDisplay != null && m.bsSlabGhost == null) { +meshData = new J.jvxl.data.MeshData(); +this.fillMeshData(meshData, 1, m); +meshData.polygonColorData = J.shapesurface.Isosurface.getPolygonColorData(meshData.pc, meshData.pcs, (meshData.colorsExplicit ? meshData.pis : null), meshData.bsSlabDisplay); +} else if (m.bsSlabGhost != null) { +this.jvxlData.slabInfo = m.slabOptions.toString(); +}var sb = new JU.SB(); +this.getMeshCommand(sb, m.index); +m.setJvxlColorMap(true); +return J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData, meshData, this.title, "", true, 1, sb.toString(), null); +}if (property === "jvxlFileInfo") { +return J.jvxl.data.JvxlCoder.jvxlGetInfo(this.jvxlData); +}if (property === "command") { +var sb = new JU.SB(); +var list = this.getMeshList((index < 0 ? this.previousMeshID : m.thisID), false); +for (var i = list.size(); --i >= 0; ) this.getMeshCommand(sb, list.get(i).index); + +return sb.toString(); +}if (property === "atoms") { +return m.surfaceAtoms; +}if (property === "colorEncoder") return m.colorEncoder; +if (property === "values" || property === "value") { +return m.probeValues; +}return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "getDataRange", +function(mesh){ +return (mesh == null ? null : mesh.getDataRange()); +}, "J.shapesurface.IsosurfaceMesh"); +Clazz.defineMethod(c$, "calculateVolumeOrArea", +function(mesh, isArea){ +if (isArea) { +if (mesh.calculatedArea != null) return mesh.calculatedArea; +} else { +if (mesh.calculatedVolume != null) return mesh.calculatedVolume; +}var meshData = new J.jvxl.data.MeshData(); +this.fillMeshData(meshData, 1, mesh); +meshData.nSets = mesh.nSets; +meshData.vertexSets = mesh.vertexSets; +if (!isArea && mesh.jvxlData.colorDensity) { +var f = mesh.jvxlData.voxelVolume; +f *= (mesh.bsSlabDisplay == null ? mesh.vc : mesh.bsSlabDisplay.cardinality()); +return mesh.calculatedVolume = Float.$valueOf(f); +}var ret = J.jvxl.data.MeshData.calculateVolumeOrArea(meshData, mesh.jvxlData.thisSet, isArea, false); +if (mesh.nSets <= 0) mesh.nSets = -meshData.nSets; +if (isArea) mesh.calculatedArea = ret; + else mesh.calculatedVolume = ret; +return ret; +}, "J.shapesurface.IsosurfaceMesh,~B"); +c$.getPolygonColorData = Clazz.defineMethod(c$, "getPolygonColorData", +function(ccount, colixes, polygons, bsSlabDisplay){ +var isExplicit = (polygons != null); +if (colixes == null && polygons == null) return null; +var list1 = new JU.SB(); +var count = 0; +var colix = 0; +var color = 0; +var colorNext = 0; +var done = false; +for (var i = 0; i < ccount || (done = true) == true; i++) { +if (!done && bsSlabDisplay != null && !bsSlabDisplay.get(i)) continue; +if (done || (isExplicit ? (colorNext = polygons[i][4]) != color : colixes[i] != colix)) { +if (count != 0) list1.append(" ").appendI(count).append(" ").appendI((isExplicit ? color : colix == 0 ? 0 : JU.C.getArgb(colix))); +if (done) break; +if (isExplicit) color = colorNext; + else colix = colixes[i]; +count = 1; +} else { +count++; +}} +list1.append("\n"); +return list1.toString(); +}, "~N,~A,~A,JU.BS"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +this.clean(); +var sb = new JU.SB(); +sb.append("\n"); +for (var i = 0; i < this.meshCount; i++) this.getMeshCommand(sb, i); + +return sb.toString(); +}); +Clazz.defineMethod(c$, "getMeshCommand", +function(sb, i){ +var imesh = this.meshes[i]; +if (imesh == null || imesh.scriptCommand == null) return; +var cmd = imesh.scriptCommand; +var modelCount = this.ms.mc; +if (modelCount > 1) J.shape.Shape.appendCmd(sb, "frame " + this.vwr.getModelNumberDotted(imesh.modelIndex)); +cmd = JU.PT.rep(cmd, ";; isosurface map", " map"); +cmd = JU.PT.rep(cmd, "; isosurface map", " map"); +if (cmd.endsWith(" map")) cmd = cmd.substring(0, cmd.length - 4); +cmd = cmd.$replace('\t', ' '); +cmd = JU.PT.rep(cmd, ";#", "; #"); +var pt = cmd.indexOf("; #"); +if (pt >= 0) cmd = cmd.substring(0, pt); +if (imesh.connectedAtoms != null) cmd += " connect " + JU.Escape.eAI(imesh.connectedAtoms); +cmd = JU.PT.trim(cmd, ";"); +if (imesh.linkedMesh != null) cmd += " LINK"; +if (this.myType === "lcaoCartoon" && imesh.atomIndex >= 0) cmd += " ATOMINDEX " + imesh.atomIndex; +J.shape.Shape.appendCmd(sb, cmd); +var id = this.myType + " ID " + JU.PT.esc(imesh.thisID); +if (imesh.jvxlData.thisSet != null && !imesh.jvxlData.thisSet.isEmpty()) { +J.shape.Shape.appendCmd(sb, id + (imesh.jvxlData.thisSet.cardinality() == 1 ? " set " + (imesh.jvxlData.thisSet.nextSetBit(0) + 1) : " subset " + imesh.jvxlData.thisSet)); +}if (imesh.mat4 != null && !imesh.isModelConnected) J.shape.Shape.appendCmd(sb, id + " move " + JU.Escape.matrixToScript(imesh.mat4)); +if (imesh.scale3d != 0) J.shape.Shape.appendCmd(sb, id + " scale3d " + imesh.scale3d); +if (imesh.jvxlData.slabValue != -2147483648) J.shape.Shape.appendCmd(sb, id + " slab " + imesh.jvxlData.slabValue); +if (imesh.slabOptions != null) J.shape.Shape.appendCmd(sb, imesh.slabOptions.toString()); +if (cmd.charAt(0) != '#') { +if (this.allowMesh) J.shape.Shape.appendCmd(sb, imesh.getState(this.myType)); +if (!imesh.isColorSolid && imesh.colorType == 0 && JU.C.isColixTranslucent(imesh.colix)) J.shape.Shape.appendCmd(sb, "color " + this.myType + " " + J.shape.Shape.getTranslucentLabel(imesh.colix)); +if (imesh.colorCommand != null && imesh.colorType == 0 && !imesh.colorCommand.equals("#inherit;")) { +J.shape.Shape.appendCmd(sb, imesh.colorCommand); +}var colorArrayed = (imesh.isColorSolid && imesh.pcs != null); +if (imesh.isColorSolid && imesh.colorType == 0 && !imesh.colorsExplicit && !colorArrayed) { +J.shape.Shape.appendCmd(sb, J.shape.Shape.getColorCommandUnk(this.myType, imesh.colix, this.translucentAllowed)); +} else if (imesh.jvxlData.isBicolorMap && imesh.colorPhased) { +J.shape.Shape.appendCmd(sb, "color isosurface phase " + J.shape.Shape.encodeColor(imesh.jvxlData.minColorIndex) + " " + J.shape.Shape.encodeColor(imesh.jvxlData.maxColorIndex)); +}if (imesh.vertexColorMap != null) for (var entry, $entry = imesh.vertexColorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var bs = entry.getValue(); +if (!bs.isEmpty()) J.shape.Shape.appendCmd(sb, "color " + this.myType + " " + JU.Escape.eBS(bs) + " " + entry.getKey()); +} +}}, "JU.SB,~N"); +Clazz.defineMethod(c$, "getScriptBitSets", +function(script, bsCmd){ +this.script = script; +var i; +this.iHaveModelIndex = false; +this.modelIndex = -1; +if (script != null && (i = script.indexOf("MODEL({")) >= 0) { +var j = script.indexOf("})", i); +if (j > 0) { +var bs = JU.BS.unescape(script.substring(i + 3, j + 1)); +this.modelIndex = (bs == null ? -1 : bs.nextSetBit(0)); +this.iHaveModelIndex = (this.modelIndex >= 0); +}}if (script == null) return false; +this.getCapSlabInfo(script); +i = script.indexOf("# ({"); +if (i < 0) return false; +var j = script.indexOf("})", i); +if (j < 0) return false; +var bs = JU.BS.unescape(script.substring(i + 2, j + 2)); +if (bsCmd == null) this.sg.setProp("select", bs, null); + else bsCmd[0] = bs; +if ((i = script.indexOf("({", j)) < 0) return true; +j = script.indexOf("})", i); +if (j < 0) return false; +bs = JU.BS.unescape(script.substring(i + 1, j + 1)); +if (bsCmd == null) this.sg.setProp("ignore", bs, null); + else bsCmd[1] = bs; +if ((i = script.indexOf("/({", j)) == j + 2) { +if ((j = script.indexOf("})", i)) < 0) return false; +bs = JU.BS.unescape(script.substring(i + 3, j + 1)); +if (bsCmd == null) this.ms.setTrajectoryBs(bs); + else bsCmd[2] = bs; +}return true; +}, "~S,~A"); +Clazz.defineMethod(c$, "getCapSlabInfo", +function(script){ +var i = script.indexOf("# SLAB="); +if (i >= 0) this.sg.setProp("slab", this.getCapSlabObject(JU.PT.getQuotedStringAt(script, i), false), null); +i = script.indexOf("# CAP="); +if (i >= 0) this.sg.setProp("slab", this.getCapSlabObject(JU.PT.getQuotedStringAt(script, i), true), null); +}, "~S"); +Clazz.defineMethod(c$, "getCapSlabObject", +function(s, isCap){ +try { +if (s.indexOf("array") == 0) { +var pts = JU.PT.split(s.substring(6, s.length - 1), ","); +return JU.TempArray.getSlabObjectType(1812599299, Clazz.newArray(-1, [JU.Escape.uP(pts[0]), JU.Escape.uP(pts[1]), JU.Escape.uP(pts[2]), JU.Escape.uP(pts[3])]), isCap, null); +}var plane = JU.Escape.uP(s); +if (Clazz.instanceOf(plane,"JU.P4")) return JU.TempArray.getSlabObjectType(134217750, plane, isCap, null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return null; +}, "~S,~B"); +Clazz.defineMethod(c$, "initializeIsosurface", +function(){ +if (!this.iHaveModelIndex) this.modelIndex = this.vwr.am.cmi; +this.atomIndex = -1; +this.bsDisplay = null; +this.center = JU.P3.new3(NaN, 0, 0); +this.colix = 5; +this.connections = null; +this.cutoffRange = null; +this.colorType = this.defaultColix = this.meshColix = 0; +this.displayWithinPoints = null; +this.explicitContours = false; +this.isFixed = (this.modelIndex < 0); +this.isPhaseColored = this.isColorExplicit = false; +this.linkedMesh = null; +if (this.modelIndex < 0) this.modelIndex = 0; +this.scale3d = 0; +this.title = null; +this.translucentLevel = 0; +this.withinPoints = null; +this.initState(); +}); +Clazz.defineMethod(c$, "initState", +function(){ +this.associateNormals = true; +this.sg.initState(); +}); +Clazz.defineMethod(c$, "setMeshI", +function(){ +this.thisMesh.visible = true; +if ((this.thisMesh.atomIndex = this.atomIndex) >= 0) this.thisMesh.modelIndex = this.ms.at[this.atomIndex].mi; + else if (this.isFixed) this.thisMesh.modelIndex = -1; + else if (this.modelIndex >= 0) this.thisMesh.modelIndex = this.modelIndex; + else this.thisMesh.modelIndex = this.vwr.am.cmi; +this.thisMesh.scriptCommand = this.script; +this.thisMesh.ptCenter.setT(this.center); +this.thisMesh.scale3d = (this.thisMesh.jvxlData.jvxlPlane == null ? 0 : this.scale3d); +}); +Clazz.defineMethod(c$, "discardTempData", +function(discardAll){ +if (!discardAll) return; +this.title = null; +if (this.thisMesh == null) return; +this.thisMesh.surfaceSet = null; +}, "~B"); +Clazz.defineMethod(c$, "getDefaultColix", +function(){ +if (this.defaultColix != 0) return this.defaultColix; +if (!this.sg.jvxlData.wasCubic) return this.colix; +var argb = (this.sg.params.cutoff >= 0 ? -11525984 : -6283184); +return JU.C.getColix(argb); +}); +Clazz.defineMethod(c$, "drawLcaoCartoon", +function(z, x, rotAxis, nElectrons, reverseColor){ +var lcaoCartoon = this.sg.setLcao(); +var addAnti = (lcaoCartoon.indexOf("anti-sp") >= 0); +if (addAnti) { +lcaoCartoon = lcaoCartoon.substring(5); +}var rotRadians = rotAxis.x + rotAxis.y + rotAxis.z; +this.defaultColix = JU.C.getColix(this.sg.params.colorPos); +var colixNeg = JU.C.getColix(this.sg.params.colorNeg); +if (reverseColor) { +var c = colixNeg; +colixNeg = this.defaultColix; +this.defaultColix = c; +}var y = new JU.V3(); +var isReverse = (lcaoCartoon.length > 0 && lcaoCartoon.charAt(0) == '-'); +if (isReverse) lcaoCartoon = lcaoCartoon.substring(1); +var sense = (isReverse ? -1 : 1); +y.cross(z, x); +if (rotRadians != 0) { +var a = new JU.A4(); +if (rotAxis.x != 0) a.setVA(x, rotRadians); + else if (rotAxis.y != 0) a.setVA(y, rotRadians); + else a.setVA(z, rotRadians); +var m = new JU.M3().setAA(a); +m.rotate(x); +m.rotate(y); +m.rotate(z); +}if (this.thisMesh == null && this.nLCAO == 0) this.nLCAO = this.meshCount; +var id = (this.thisMesh == null ? (nElectrons > 0 ? "lp" : "lcao") + (++this.nLCAO) + "_" + lcaoCartoon : this.thisMesh.thisID); +if (this.thisMesh == null) this.allocMesh(id, null); +if (lcaoCartoon.equals("px")) { +this.thisMesh.thisID += "a"; +var meshA = this.thisMesh; +this.createLcaoLobe(x, sense, nElectrons); +if (nElectrons > 0) return; +this.setProperty("thisID", id + "b", null); +this.createLcaoLobe(x, -sense, 0); +this.thisMesh.colix = colixNeg; +this.linkedMesh = this.thisMesh.linkedMesh = meshA; +return; +}if (lcaoCartoon.equals("py")) { +this.thisMesh.thisID += "a"; +var meshA = this.thisMesh; +this.createLcaoLobe(y, sense, nElectrons); +if (nElectrons > 0) return; +this.setProperty("thisID", id + "b", null); +this.createLcaoLobe(y, -sense, 0); +this.thisMesh.colix = colixNeg; +this.linkedMesh = this.thisMesh.linkedMesh = meshA; +return; +}var meshA = this.thisMesh; +if (lcaoCartoon.equals("pz")) { +meshA.thisID += "a"; +this.createLcaoLobe(z, sense, nElectrons); +if (nElectrons > 0) return; +this.setProperty("thisID", id + "b", null); +this.createLcaoLobe(z, -sense, 0); +this.thisMesh.colix = colixNeg; +this.linkedMesh = this.thisMesh.linkedMesh = meshA; +return; +}if (lcaoCartoon.equals("pza") || lcaoCartoon.indexOf("sp") == 0 || lcaoCartoon.indexOf("d") == 0 || lcaoCartoon.indexOf("lp") == 0) { +this.createLcaoLobe(z, sense, nElectrons); +if (addAnti && nElectrons == 0) { +meshA.thisID += "a"; +this.setProperty("thisID", id + "b", null); +this.createLcaoLobe(z, -sense / 2, 0); +this.thisMesh.colix = colixNeg; +this.linkedMesh = this.thisMesh.linkedMesh = meshA; +}return; +}if (lcaoCartoon.equals("pzb")) { +this.createLcaoLobe(z, -sense, nElectrons); +return; +}if (lcaoCartoon.equals("pxa")) { +this.createLcaoLobe(x, sense, nElectrons); +return; +}if (lcaoCartoon.equals("pxb")) { +this.createLcaoLobe(x, -sense, nElectrons); +return; +}if (lcaoCartoon.equals("pya")) { +this.createLcaoLobe(y, sense, nElectrons); +return; +}if (lcaoCartoon.equals("pyb")) { +this.createLcaoLobe(y, -sense, nElectrons); +return; +}if (lcaoCartoon.equals("spacefill") || lcaoCartoon.equals("cpk")) { +this.createLcaoLobe(null, 2 * this.ms.at[this.atomIndex].getRadius(), nElectrons); +return; +}this.createLcaoLobe(null, 1, nElectrons); +return; +}, "JU.V3,JU.V3,JU.V3,~N,~B"); +Clazz.defineMethod(c$, "createLcaoLobe", +function(lobeAxis, factor, nElectrons){ +this.initState(); +if (JU.Logger.debugging) { +JU.Logger.debug("creating isosurface ID " + this.thisMesh.thisID); +}if (lobeAxis == null) { +this.setProperty("sphere", Float.$valueOf(factor / 2), null); +} else { +this.lcaoDir.x = lobeAxis.x * factor; +this.lcaoDir.y = lobeAxis.y * factor; +this.lcaoDir.z = lobeAxis.z * factor; +this.lcaoDir.w = 0.7; +this.setProperty(nElectrons == 2 ? "lp" : nElectrons == 1 ? "rad" : "lobe", this.lcaoDir, null); +}this.thisMesh.colix = this.defaultColix; +this.setScriptInfo(null); +}, "JU.V3,~N,~N"); +Clazz.overrideMethod(c$, "invalidateTriangles", +function(){ +this.thisMesh.invalidatePolygons(); +}); +Clazz.overrideMethod(c$, "setOutputChannel", +function(binaryDoc, out){ +binaryDoc.setOutputChannel(out); +}, "javajs.api.GenericBinaryDocument,JU.OC"); +Clazz.overrideMethod(c$, "fillMeshData", +function(meshData, mode, mesh){ +if (meshData == null) { +if (this.thisMesh == null) this.allocMesh(null, null); +if (!this.thisMesh.isMerged) this.thisMesh.clearType(this.myType, this.sg.params.iAddGridPoints); +this.thisMesh.connectedAtoms = this.connections; +this.thisMesh.colix = this.getDefaultColix(); +this.thisMesh.colorType = this.colorType; +this.thisMesh.meshColix = this.meshColix; +if (this.isPhaseColored || this.thisMesh.jvxlData.isBicolorMap) this.thisMesh.isColorSolid = false; +return; +}if (mesh == null) mesh = this.thisMesh; +if (mesh == null) return; +switch (mode) { +case 1: +meshData.mergeVertexCount0 = mesh.mergeVertexCount0; +meshData.vs = mesh.vs; +meshData.vertexSource = mesh.vertexSource; +meshData.vvs = mesh.vvs; +meshData.vc = mesh.vc; +meshData.vertexIncrement = mesh.vertexIncrement; +meshData.pc = mesh.pc; +meshData.pis = mesh.pis; +meshData.pcs = mesh.pcs; +meshData.bsSlabDisplay = mesh.bsSlabDisplay; +meshData.bsSlabGhost = mesh.bsSlabGhost; +meshData.slabColix = mesh.slabColix; +meshData.slabMeshType = mesh.slabMeshType; +meshData.polygonCount0 = mesh.polygonCount0; +meshData.vertexCount0 = mesh.vertexCount0; +meshData.slabOptions = mesh.slabOptions; +meshData.colorsExplicit = mesh.colorsExplicit; +return; +case 2: +if (mesh.vcs == null || mesh.vc > mesh.vcs.length) mesh.vcs = Clazz.newShortArray (mesh.vc, 0); +meshData.vcs = mesh.vcs; +return; +case 3: +mesh.surfaceSet = meshData.surfaceSet; +mesh.vertexSets = meshData.vertexSets; +mesh.nSets = meshData.nSets; +return; +case 4: +mesh.vs = meshData.vs; +mesh.vvs = meshData.vvs; +mesh.vc = meshData.vc; +mesh.vertexIncrement = meshData.vertexIncrement; +mesh.vertexSource = meshData.vertexSource; +mesh.pc = meshData.pc; +mesh.pis = meshData.pis; +mesh.pcs = meshData.pcs; +mesh.bsSlabDisplay = meshData.bsSlabDisplay; +mesh.bsSlabGhost = meshData.bsSlabGhost; +mesh.slabColix = meshData.slabColix; +mesh.slabMeshType = meshData.slabMeshType; +mesh.polygonCount0 = meshData.polygonCount0; +mesh.vertexCount0 = meshData.vertexCount0; +mesh.mergeVertexCount0 = meshData.mergeVertexCount0; +mesh.slabOptions = meshData.slabOptions; +mesh.colorsExplicit = meshData.colorsExplicit; +return; +} +}, "J.jvxl.data.MeshData,~N,J.shapesurface.IsosurfaceMesh"); +Clazz.overrideMethod(c$, "notifySurfaceGenerationCompleted", +function(){ +this.setMeshI(); +this.setBsVdw(); +this.thisMesh.surfaceAtoms = this.sg.params.bsSelected; +this.thisMesh.insideOut = this.sg.params.isInsideOut(); +this.thisMesh.isModelConnected = this.sg.params.isModelConnected; +this.thisMesh.vertexSource = this.sg.params.vertexSource; +this.thisMesh.oabc = this.sg.getOriginVaVbVc(); +this.thisMesh.calculatedArea = null; +this.thisMesh.calculatedVolume = null; +this.thisMesh.probeValues = this.sg.params.probeValues; +if (!this.thisMesh.isMerged) { +this.thisMesh.initialize(this.sg.params.isFullyLit() ? 1073741964 : 1073741958, null, this.sg.params.thePlane); +if (this.jvxlData.fixedLattice != null) { +this.thisMesh.lattice = this.jvxlData.fixedLattice; +this.thisMesh.fixLattice(); +}return this.thisMesh.setColorsFromJvxlData(this.sg.params.colorRgb); +}if (!this.sg.params.allowVolumeRender) this.thisMesh.jvxlData.allowVolumeRender = false; +this.thisMesh.setColorsFromJvxlData(this.sg.params.colorRgb); +if (this.thisMesh.jvxlData.slabInfo != null) this.vwr.runScriptCautiously("isosurface " + this.thisMesh.jvxlData.slabInfo); +if (this.sg.params.psi_monteCarloCount > 0) this.thisMesh.diameter = -1; +return false; +}); +Clazz.overrideMethod(c$, "notifySurfaceMappingCompleted", +function(){ +if (!this.thisMesh.isMerged) this.thisMesh.initialize(this.sg.params.isFullyLit() ? 1073741964 : 1073741958, null, this.sg.params.thePlane); +this.setBsVdw(); +this.thisMesh.isColorSolid = false; +this.thisMesh.colorDensity = this.jvxlData.colorDensity; +this.thisMesh.volumeRenderPointSize = this.jvxlData.pointSize; +this.thisMesh.colorEncoder = this.sg.params.colorEncoder; +this.thisMesh.getContours(); +if (this.thisMesh.jvxlData.nContours != 0 && this.thisMesh.jvxlData.nContours != -1) this.explicitContours = true; +if (this.explicitContours && this.thisMesh.jvxlData.jvxlPlane != null) this.thisMesh.havePlanarContours = true; +this.setPropertySuper("token", Integer.$valueOf(this.explicitContours ? 1073742046 : 1073741938), null); +this.setPropertySuper("token", Integer.$valueOf(this.explicitContours ? 1073741898 : 1073742039), null); +if (!this.thisMesh.isMerged) this.thisMesh.setJvxlDataRendering(); +if (this.sg.params.slabInfo != null) { +this.thisMesh.slabPolygonsList(this.sg.params.slabInfo, false); +this.thisMesh.reinitializeLightingAndColor(this.vwr); +}this.thisMesh.setColorCommand(); +}); +Clazz.defineMethod(c$, "setBsVdw", +function(){ +if (this.sg.bsVdw == null) return; +if (this.thisMesh.bsVdw == null) this.thisMesh.bsVdw = new JU.BS(); +this.thisMesh.bsVdw.or(this.sg.bsVdw); +}); +Clazz.overrideMethod(c$, "calculateGeodesicSurface", +function(bsSelected, envelopeRadius){ +return this.vwr.calculateSurface(bsSelected, envelopeRadius); +}, "JU.BS,~N"); +Clazz.overrideMethod(c$, "getSurfacePointIndexAndFraction", +function(cutoff, isCutoffAbsolute, x, y, z, offset, vA, vB, valueA, valueB, pointA, edgeVector, isContourType, fReturn){ +return 0; +}, "~N,~B,~N,~N,~N,JU.P3i,~N,~N,~N,~N,JU.T3,JU.V3,~B,~A"); +Clazz.overrideMethod(c$, "addVertexCopy", +function(vertexXYZ, value, assocVertex, asCopy){ +if (this.cutoffRange != null && (value < this.cutoffRange[0] || value > this.cutoffRange[1])) return -1; +return (this.withinPoints != null && !J.shape.Mesh.checkWithin(vertexXYZ, this.withinPoints, this.withinDistance2, this.isWithinNot) ? -1 : this.thisMesh.addVertexCopy(vertexXYZ, value, assocVertex, this.associateNormals, asCopy)); +}, "JU.T3,~N,~N,~B"); +Clazz.overrideMethod(c$, "addTriangleCheck", +function(iA, iB, iC, check, iContour, isAbsolute, color){ +return (iA < 0 || iB < 0 || iC < 0 || isAbsolute && !J.jvxl.data.MeshData.checkCutoff(iA, iB, iC, this.thisMesh.vvs) ? -1 : this.thisMesh.addTriangleCheck(iA, iB, iC, check, iContour, color)); +}, "~N,~N,~N,~N,~N,~B,~N"); +Clazz.defineMethod(c$, "setScriptInfo", +function(strCommand){ +var script = (strCommand == null ? this.sg.params.script : strCommand); +var pt = (script == null ? -1 : script.indexOf("; isosurface map")); +if (pt == 0) { +if (this.thisMesh.scriptCommand == null) return; +pt = this.thisMesh.scriptCommand.indexOf("; isosurface map"); +if (pt >= 0) this.thisMesh.scriptCommand = this.thisMesh.scriptCommand.substring(0, pt); +this.thisMesh.scriptCommand += script; +return; +}this.thisMesh.title = this.sg.params.title; +this.thisMesh.dataType = this.sg.params.dataType; +this.thisMesh.scale3d = this.sg.params.scale3d; +if (script != null) { +if (this.oldFileName != null) { +script = script.$replace(this.oldFileName, this.newFileName); +}if (script.charAt(0) == ' ') { +script = this.myType + " ID " + JU.PT.esc(this.thisMesh.thisID) + script; +pt = script.indexOf("; isosurface map"); +}}if (pt > 0 && this.scriptAppendix.length > 0) this.thisMesh.scriptCommand = script.substring(0, pt) + this.scriptAppendix + script.substring(pt); + else this.thisMesh.scriptCommand = script + this.scriptAppendix; +if (!this.explicitID && script != null && (pt = script.indexOf("# ID=")) >= 0) this.thisMesh.thisID = JU.PT.getQuotedStringAt(script, pt); +}, "~S"); +Clazz.overrideMethod(c$, "addRequiredFile", +function(fileName){ +fileName = " # /*file*/\"" + fileName + "\""; +if (this.scriptAppendix.indexOf(fileName) < 0) this.scriptAppendix += fileName; +}, "~S"); +Clazz.overrideMethod(c$, "setRequiredFile", +function(oldName, fileName){ +this.oldFileName = oldName; +this.newFileName = fileName; +}, "~S,~S"); +Clazz.defineMethod(c$, "setJvxlInfo", +function(){ +if (this.sg.jvxlData !== this.jvxlData || this.sg.jvxlData !== this.thisMesh.jvxlData) this.jvxlData = this.thisMesh.jvxlData = this.sg.jvxlData; +}); +Clazz.overrideMethod(c$, "getShapeDetail", +function(){ +var V = new JU.Lst(); +for (var i = 0; i < this.meshCount; i++) { +var info = new java.util.Hashtable(); +var mesh = this.isomeshes[i]; +if (mesh == null || mesh.vs == null || mesh.vc == 0 && mesh.pc == 0) continue; +this.addMeshInfo(mesh, info); +V.addLast(info); +} +return V; +}); +Clazz.defineMethod(c$, "addMeshInfo", +function(mesh, info){ +info.put("ID", (mesh.thisID == null ? "" : mesh.thisID)); +info.put("visible", Boolean.$valueOf(mesh.visible)); +info.put("vertexCount", Integer.$valueOf(mesh.vc)); +if (mesh.calculatedVolume != null) info.put("volume", mesh.calculatedVolume); +if (mesh.calculatedArea != null) info.put("area", mesh.calculatedArea); +if (!Float.isNaN(mesh.ptCenter.x)) info.put("center", mesh.ptCenter); +if (mesh.mat4 != null) info.put("mat4", mesh.mat4); +if (mesh.scale3d != 0) info.put("scale3d", Float.$valueOf(mesh.scale3d)); +info.put("xyzMin", mesh.jvxlData.boundingBox[0]); +info.put("xyzMax", mesh.jvxlData.boundingBox[1]); +var s = J.jvxl.data.JvxlCoder.jvxlGetInfo(mesh.jvxlData); +if (s != null) info.put("jvxlInfo", s.$replace('\n', ' ')); +info.put("modelIndex", Integer.$valueOf(mesh.modelIndex)); +info.put("color", JU.CU.colorPtFromInt(JU.C.getArgb(mesh.colix), null)); +if (mesh.colorEncoder != null) info.put("colorKey", mesh.colorEncoder.getColorKey()); +if (mesh.title != null) info.put("title", mesh.title); +if (mesh.jvxlData.contourValues != null || mesh.jvxlData.contourValuesUsed != null) info.put("contours", mesh.getContourList(this.vwr)); +}, "J.shapesurface.IsosurfaceMesh,java.util.Map"); +Clazz.overrideMethod(c$, "getPlane", +function(x){ +return null; +}, "~N"); +Clazz.overrideMethod(c$, "getValue", +function(x, y, z, ptyz){ +return 0; +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +if (this.keyXy != null && x >= this.keyXy[0] && y >= this.keyXy[1] && x < this.keyXy[2] && y < this.keyXy[3]) { +this.hoverKey(x, y); +return true; +}if (!this.vwr.getDrawHover()) return false; +var s = this.findValue(x, y, false, bsVisible); +if (s == null) return false; +this.vwr.hoverOnPt(x, y, s, this.pickedMesh.thisID, this.pickedPt); +return true; +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "hoverKey", +function(x, y){ +try { +var s; +var f = 1 - 1.0 * (y - this.keyXy[1]) / (this.keyXy[3] - this.keyXy[1]); +if (this.thisMesh.showContourLines) { +var vContours = this.thisMesh.getContours(); +if (vContours == null) { +if (this.thisMesh.jvxlData.contourValues == null) return; +var i = Clazz.doubleToInt(Math.floor(f * this.thisMesh.jvxlData.contourValues.length)); +if (i < 0 || i > this.thisMesh.jvxlData.contourValues.length) return; +s = "" + this.thisMesh.jvxlData.contourValues[i]; +} else { +var i = Clazz.doubleToInt(Math.floor(f * vContours.length)); +if (i < 0 || i > vContours.length) return; +s = "" + (vContours[i].get(2)).floatValue(); +}} else { +var g = this.thisMesh.colorEncoder.quantize(f, true); +f = this.thisMesh.colorEncoder.quantize(f, false); +s = "" + g + " - " + f; +}this.vwr.hoverOnPt(x, y, s, null, null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~N,~N"); +Clazz.overrideMethod(c$, "checkObjectClicked", +function(x, y, action, bsVisible, drawPicking){ +if (!drawPicking) return null; +if (!this.vwr.isBound(action, 18)) return null; +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}var imesh = -1; +var jmaxz = -1; +var jminz = -1; +var maxz = -2147483648; +var minz = 2147483647; +var pickFront = true; +for (var i = 0; i < this.meshCount; i++) { +var m = this.isomeshes[i]; +if (!this.isPickable(m, bsVisible)) continue; +var centers = (pickFront ? m.vs : m.getCenters()); +if (centers == null) continue; +for (var j = centers.length; --j >= 0; ) { +var v = centers[j]; +if (v == null) continue; +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +if (this.ptXY.z < minz) { +if (pickFront) imesh = i; +minz = this.ptXY.z; +jminz = j; +}if (this.ptXY.z > maxz) { +if (!pickFront) imesh = i; +maxz = this.ptXY.z; +jmaxz = j; +}}} +} +if (imesh < 0) return null; +this.pickedMesh = this.isomeshes[imesh]; +this.setPropertySuper("thisID", this.pickedMesh.thisID, null); +var iFace = this.pickedVertex = (pickFront ? jminz : jmaxz); +var ptRet = new JU.P3(); +ptRet.setT((pickFront ? this.pickedMesh.vs[this.pickedVertex] : (this.pickedMesh).centers[iFace])); +this.pickedModel = this.pickedMesh.modelIndex; +var map = this.getPickedPoint(ptRet, this.pickedModel); +this.setStatusPicked(-4, ptRet, map); +return map; +}, "~N,~N,~N,JU.BS,~B"); +Clazz.defineMethod(c$, "isPickable", +function(m, bsVisible){ +return m.visibilityFlags != 0 && (m.modelIndex < 0 || bsVisible.get(m.modelIndex)) && !JU.C.isColixTranslucent(m.colix); +}, "J.shapesurface.IsosurfaceMesh,JU.BS"); +Clazz.defineMethod(c$, "findValue", +function(x, y, isPicking, bsVisible){ +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}var pickedVertex = -1; +var pickedContour = null; +var m = null; +for (var i = 0; i < this.meshCount; i++) { +m = this.isomeshes[i]; +if (!this.isPickable(m, bsVisible)) continue; +var vs = m.jvxlData.vContours; +var ilast = (m.firstRealVertex < 0 ? 0 : m.firstRealVertex); +var pickedJ = 0; +if (vs != null && vs.length > 0) { +for (var j = 0; j < vs.length; j++) { +var vc = vs[j]; +var n = vc.size() - 1; +for (var k = 6; k < n; k++) { +var v = vc.get(k); +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +pickedContour = vc; +pickedJ = j; +this.pickedMesh = m; +this.pickedPt = v; +}} +} +if (pickedContour != null) return pickedContour.get(2).toString() + (JU.Logger.debugging ? " " + pickedJ : ""); +} else if (m.jvxlData.jvxlPlane != null && m.vvs != null) { +var vertices = (m.mat4 == null && m.scale3d == 0 ? m.vs : m.getOffsetVertices(m.jvxlData.jvxlPlane)); +for (var k = m.vc; --k >= ilast; ) { +var v = vertices[k]; +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +pickedVertex = k; +this.pickedMesh = m; +this.pickedPt = v; +}} +if (pickedVertex != -1) break; +} else if (m.vvs != null) { +if (m.bsSlabDisplay != null) { +for (var k = m.bsSlabDisplay.nextSetBit(0); k >= 0; k = m.bsSlabDisplay.nextSetBit(k + 1)) { +var p = m.pis[k]; +if (p != null) for (var l = 0; l < 3; l++) { +var v = m.vs[p[l]]; +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +pickedVertex = p[l]; +this.pickedMesh = m; +this.pickedPt = v; +}} +} +} else { +for (var k = m.vc; --k >= ilast; ) { +var v = m.vs[k]; +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +pickedVertex = k; +this.pickedMesh = m; +this.pickedPt = v; +}} +}if (pickedVertex != -1) break; +}} +return (pickedVertex == -1 ? null : (JU.Logger.debugging ? "$" + m.thisID + "[" + (pickedVertex + 1) + "] " + m.vs[pickedVertex] + ": " : m.thisID + ": ") + m.vvs[pickedVertex]); +}, "~N,~N,~B,JU.BS"); +Clazz.defineMethod(c$, "getCmd", +function(index){ +var sb = new JU.SB().append("\n"); +this.getMeshCommand(sb, index); +return (sb.toString()); +}, "~N"); +Clazz.overrideMethod(c$, "getValues", +function(mesh){ +return (mesh == null ? null : (mesh).getValidValues(null)); +}, "J.shape.Mesh"); +Clazz.overrideMethod(c$, "getVertices", +function(mesh){ +return (mesh == null ? null : (mesh).getValidVertices(null)); +}, "J.shape.Mesh"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/IsosurfaceMesh.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/IsosurfaceMesh.js new file mode 100755 index 000000000000..aa07fe0d5ddc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/IsosurfaceMesh.js @@ -0,0 +1,709 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(["J.shape.Mesh"], "J.shapesurface.IsosurfaceMesh", ["java.util.Hashtable", "JU.AU", "$.BS", "$.CU", "$.Lst", "$.M4", "$.P3", "$.P3i", "$.PT", "$.SB", "$.V3", "J.api.Interface", "J.jvxl.data.JvxlCoder", "$.JvxlData", "JS.T", "JU.C", "$.ColorEncoder", "$.Logger", "$.SimpleUnitCell", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.jvxlData = null; +this.vertexIncrement = 1; +this.firstRealVertex = -1; +this.dataType = 0; +this.hasGridPoints = false; +this.calculatedArea = null; +this.calculatedVolume = null; +this.info = null; +this.assocGridPointMap = null; +this.assocGridPointNormals = null; +this.mergeAssociatedNormalCount = 0; +this.centers = null; +this.contourValues = null; +this.contourColixes = null; +this.colorEncoder = null; +this.bsVdw = null; +this.colorPhased = false; +this.probeValues = null; +Clazz.instantialize(this, arguments);}, J.shapesurface, "IsosurfaceMesh", J.shape.Mesh); +Clazz.makeConstructor(c$, +function(vwr, thisID, colix, index){ +Clazz.superConstructor (this, J.shapesurface.IsosurfaceMesh, []); +this.mesh1(vwr, thisID, colix, index); +this.jvxlData = new J.jvxl.data.JvxlData(); +this.checkByteCount = 2; +this.jvxlData.version = JV.Viewer.getJmolVersion(); +}, "JV.Viewer,~S,~N,~N"); +Clazz.overrideMethod(c$, "getResolution", +function(){ +return 1 / this.jvxlData.pointsPerAngstrom; +}); +Clazz.defineMethod(c$, "clearType", +function(meshType, iAddGridPoints){ +this.clear(meshType); +this.jvxlData.clear(); +this.assocGridPointMap = null; +this.assocGridPointNormals = null; +this.bsVdw = null; +this.calculatedVolume = null; +this.calculatedArea = null; +this.centers = null; +this.colorEncoder = null; +this.colorPhased = false; +this.colorsExplicit = false; +this.firstRealVertex = -1; +this.hasGridPoints = iAddGridPoints; +this.isColorSolid = true; +this.mergeAssociatedNormalCount = 0; +this.nSets = 0; +this.pcs = null; +this.showPoints = iAddGridPoints; +this.surfaceSet = null; +this.vcs = null; +this.vertexColorMap = null; +this.vertexIncrement = 1; +this.vertexSets = null; +this.vvs = null; +}, "~S,~B"); +Clazz.defineMethod(c$, "allocVertexColixes", +function(){ +if (this.vcs == null) { +this.vcs = Clazz.newShortArray (this.vc, 0); +for (var i = this.vc; --i >= 0; ) this.vcs[i] = this.colix; + +}this.isColorSolid = false; +}); +Clazz.defineMethod(c$, "addVertexCopy", +function(vertex, value, assocVertex, associateNormals, asCopy){ +var vPt = this.addVCVal(vertex, value, asCopy); +switch (assocVertex) { +case -1: +if (this.firstRealVertex < 0) this.firstRealVertex = vPt; +break; +case -2: +this.hasGridPoints = true; +break; +case -3: +this.vertexIncrement = 3; +break; +default: +if (this.firstRealVertex < 0) this.firstRealVertex = vPt; +if (associateNormals) { +if (this.assocGridPointMap == null) this.assocGridPointMap = new java.util.Hashtable(); +this.assocGridPointMap.put(Integer.$valueOf(vPt), Integer.$valueOf(assocVertex + this.mergeAssociatedNormalCount)); +}} +return vPt; +}, "JU.T3,~N,~N,~B,~B"); +Clazz.overrideMethod(c$, "setTranslucent", +function(isTranslucent, iLevel){ +this.colix = JU.C.getColixTranslucent3(this.colix, isTranslucent, iLevel); +if (this.vcs != null) for (var i = this.vc; --i >= 0; ) this.vcs[i] = JU.C.getColixTranslucent3(this.vcs[i], isTranslucent, iLevel); + +}, "~B,~N"); +Clazz.defineMethod(c$, "setMerged", +function(TF){ +this.isMerged = TF; +this.mergePolygonCount0 = (TF ? this.pc : 0); +this.mergeVertexCount0 = (TF ? this.vc : 0); +if (TF) { +this.mergeAssociatedNormalCount += this.jvxlData.nPointsX * this.jvxlData.nPointsY * this.jvxlData.nPointsZ; +this.assocGridPointNormals = null; +}}, "~B"); +Clazz.overrideMethod(c$, "sumVertexNormals", +function(vertices, vectorSums){ +J.shape.Mesh.sumVertexNormals2(this, vertices, vectorSums); +if (this.assocGridPointMap != null && vectorSums.length > 0 && !this.isMerged) { +if (this.assocGridPointNormals == null) this.assocGridPointNormals = new java.util.Hashtable(); +for (var entry, $entry = this.assocGridPointMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var gridPoint = entry.getValue(); +if (!this.assocGridPointNormals.containsKey(gridPoint)) this.assocGridPointNormals.put(gridPoint, JU.V3.new3(0, 0, 0)); +this.assocGridPointNormals.get(gridPoint).add(vectorSums[entry.getKey().intValue()]); +} +for (var entry, $entry = this.assocGridPointMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) vectorSums[entry.getKey().intValue()] = this.assocGridPointNormals.get(entry.getValue()); + +}}, "~A,~A"); +Clazz.defineMethod(c$, "getCenters", +function(){ +if (this.centers != null) return this.centers; +this.centers = new Array(this.pc); +for (var i = 0; i < this.pc; i++) { +var p = this.pis[i]; +if (p == null) continue; +var pt = this.centers[i] = JU.P3.newP(this.vs[p[0]]); +pt.add(this.vs[p[1]]); +pt.add(this.vs[p[2]]); +pt.scale(0.33333334); +} +return this.centers; +}); +Clazz.defineMethod(c$, "getContours", +function(){ +var n = this.jvxlData.nContours; +if (n == 0 || this.pis == null) return null; +this.havePlanarContours = (this.jvxlData.jvxlPlane != null); +if (this.havePlanarContours) return null; +if (n < 0) n = -1 - n; +var vContours = this.jvxlData.vContours; +if (vContours != null) { +for (var i = 0; i < n; i++) { +if (vContours[i].size() > 6) return this.jvxlData.vContours; +J.jvxl.data.JvxlCoder.set3dContourVector(vContours[i], this.pis, this.vs); +} +return this.jvxlData.vContours; +}vContours = new Array(n); +for (var i = 0; i < n; i++) { +vContours[i] = new JU.Lst(); +} +if (this.jvxlData.contourValuesUsed == null) { +var dv = (this.jvxlData.valueMappedToBlue - this.jvxlData.valueMappedToRed) / (n + 1); +for (var i = 0; i < n; i++) { +var value = this.jvxlData.valueMappedToRed + (i + 1) * dv; +J.shapesurface.IsosurfaceMesh.get3dContour(this, vContours[i], value, this.jvxlData.contourColixes[i]); +} +JU.Logger.info(n + " contour lines; separation = " + dv); +} else { +for (var i = 0; i < n; i++) { +var value = this.jvxlData.contourValuesUsed[i]; +J.shapesurface.IsosurfaceMesh.get3dContour(this, vContours[i], value, this.jvxlData.contourColixes[i]); +} +}this.jvxlData.contourColixes = Clazz.newShortArray (n, 0); +this.jvxlData.contourValues = Clazz.newFloatArray (n, 0); +for (var i = 0; i < n; i++) { +this.jvxlData.contourValues[i] = (vContours[i].get(2)).floatValue(); +this.jvxlData.contourColixes[i] = (vContours[i].get(3))[0]; +} +return this.jvxlData.vContours = vContours; +}); +Clazz.defineMethod(c$, "getPmeshData", +function(isBinary){ +var mw = J.api.Interface.getInterface("J.shapesurface.PMeshWriter", this.vwr, "script"); +return mw.write(this, isBinary); +}, "~B"); +c$.get3dContour = Clazz.defineMethod(c$, "get3dContour", +function(m, v, value, colix){ +var bsContour = JU.BS.newN(m.pc); +var fData = new JU.SB(); +var color = JU.C.getArgb(colix); +J.shapesurface.IsosurfaceMesh.setContourVector(v, m.pc, bsContour, value, colix, color, fData); +for (var i = 0; i < m.pc; i++) if (m.setABC(i) != null) J.shapesurface.IsosurfaceMesh.addContourPoints(v, bsContour, i, fData, m.vs, m.vvs, m.iA, m.iB, m.iC, value); + +}, "J.shapesurface.IsosurfaceMesh,JU.Lst,~N,~N"); +c$.setContourVector = Clazz.defineMethod(c$, "setContourVector", +function(v, nPolygons, bsContour, value, colix, color, fData){ +v.add(0, Integer.$valueOf(nPolygons)); +v.add(1, bsContour); +v.add(2, Float.$valueOf(value)); +v.add(3, Clazz.newShortArray(-1, [colix])); +v.add(4, Clazz.newIntArray(-1, [color])); +v.add(5, fData); +}, "JU.Lst,~N,JU.BS,~N,~N,~N,JU.SB"); +c$.addContourPoints = Clazz.defineMethod(c$, "addContourPoints", +function(v, bsContour, i, fData, vertices, vertexValues, iA, iB, iC, value){ +var pt1 = null; +var pt2 = null; +var type = 0; +var f1 = J.shapesurface.IsosurfaceMesh.checkPt(vertexValues, iA, iB, value); +if (!Float.isNaN(f1)) { +pt1 = J.shapesurface.IsosurfaceMesh.getContourPoint(vertices, iA, iB, f1); +type |= 1; +}var f2 = (f1 == 1 ? NaN : J.shapesurface.IsosurfaceMesh.checkPt(vertexValues, iB, iC, value)); +if (!Float.isNaN(f2)) { +pt2 = J.shapesurface.IsosurfaceMesh.getContourPoint(vertices, iB, iC, f2); +if (type == 0) { +pt1 = pt2; +f1 = f2; +}type |= 2; +}switch (type) { +case 0: +return; +case 1: +if (f1 == 0) return; +case 2: +f2 = (f2 == 1 ? NaN : J.shapesurface.IsosurfaceMesh.checkPt(vertexValues, iC, iA, value)); +if (!Float.isNaN(f2)) { +pt2 = J.shapesurface.IsosurfaceMesh.getContourPoint(vertices, iC, iA, f2); +type |= 4; +}break; +} +switch (type) { +case 3: +case 5: +case 6: +break; +default: +return; +} +bsContour.set(i); +J.jvxl.data.JvxlCoder.appendContourTriangleIntersection(type, f1, f2, fData); +v.addLast(pt1); +v.addLast(pt2); +}, "JU.Lst,JU.BS,~N,JU.SB,~A,~A,~N,~N,~N,~N"); +c$.checkPt = Clazz.defineMethod(c$, "checkPt", +function(vertexValues, i, j, v){ +var v1; +var v2; +return (v == (v1 = vertexValues[i]) ? 0 : v == (v2 = vertexValues[j]) ? 1 : (v1 < v) == (v < v2) ? (v - v1) / (v2 - v1) : NaN); +}, "~A,~N,~N,~N"); +c$.getContourPoint = Clazz.defineMethod(c$, "getContourPoint", +function(vertices, i, j, f){ +var pt = new JU.P3(); +pt.sub2(vertices[j], vertices[i]); +pt.scaleAdd2(f, pt, vertices[i]); +return pt; +}, "~A,~N,~N,~N"); +Clazz.defineMethod(c$, "setDiscreteColixes", +function(values, colixes){ +if (values != null) this.jvxlData.contourValues = values; +if (values == null || values.length == 0) values = this.jvxlData.contourValues = this.jvxlData.contourValuesUsed; +if (colixes == null && this.jvxlData.contourColixes != null) { +colixes = this.jvxlData.contourColixes; +} else { +this.jvxlData.contourColixes = colixes; +this.jvxlData.contourColors = JU.C.getHexCodes(colixes); +}if (this.vs == null || this.vvs == null || values == null) return; +var n = values.length; +var vMax = values[n - 1]; +this.colorCommand = null; +var haveColixes = (colixes != null && colixes.length > 0); +this.isColorSolid = (haveColixes && this.jvxlData.jvxlPlane != null); +if (this.jvxlData.vContours != null) { +if (haveColixes) for (var i = 0; i < this.jvxlData.vContours.length; i++) { +var colix = colixes[i % colixes.length]; +(this.jvxlData.vContours[i].get(3))[0] = colix; +(this.jvxlData.vContours[i].get(4))[0] = JU.C.getArgb(colix); +} +return; +}var defaultColix = 0; +this.pcs = Clazz.newShortArray (this.pc, 0); +this.colorsExplicit = false; +for (var i = 0; i < this.pc; i++) { +var p = this.pis[i]; +if (p == null) continue; +this.pcs[i] = defaultColix; +var v = (this.vvs[p[0]] + this.vvs[p[1]] + this.vvs[p[2]]) / 3; +for (var j = n; --j >= 0; ) { +if (v >= values[j] && v < vMax) { +this.pcs[i] = (haveColixes ? colixes[j % colixes.length] : 0); +break; +}} +} +}, "~A,~A"); +Clazz.defineMethod(c$, "getContourList", +function(vwr){ +var ht = new java.util.Hashtable(); +ht.put("values", (this.jvxlData.contourValuesUsed == null ? this.jvxlData.contourValues : this.jvxlData.contourValuesUsed)); +var colors = new JU.Lst(); +if (this.jvxlData.contourColixes != null) { +for (var i = 0; i < this.jvxlData.contourColixes.length; i++) { +colors.addLast(JU.CU.colorPtFromInt(JU.C.getArgb(this.jvxlData.contourColixes[i]), null)); +} +ht.put("colors", colors); +}return ht; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "deleteContours", +function(){ +this.jvxlData.contourValuesUsed = null; +this.jvxlData.contourValues = null; +this.jvxlData.contourColixes = null; +this.jvxlData.vContours = null; +}); +Clazz.defineMethod(c$, "setVertexColorMap", +function(){ +this.vertexColorMap = new java.util.Hashtable(); +var lastColix = -999; +var bs = null; +for (var i = this.vc; --i >= 0; ) { +var c = this.vcs[i]; +if (c != lastColix) { +var color = JU.C.getHexCode(lastColix = c); +bs = this.vertexColorMap.get(color); +if (bs == null) this.vertexColorMap.put(color, bs = new JU.BS()); +}bs.set(i); +} +}); +Clazz.defineMethod(c$, "setVertexColixesForAtoms", +function(vwr, colixes, atomMap, bs){ +this.jvxlData.vertexDataOnly = true; +this.jvxlData.vertexColors = Clazz.newIntArray (this.vc, 0); +this.jvxlData.nVertexColors = this.vc; +var atoms = vwr.ms.at; +var gdata = vwr.gdata; +for (var i = this.mergeVertexCount0; i < this.vc; i++) { +var iAtom = this.vertexSource[i]; +if (iAtom < 0 || !bs.get(iAtom)) continue; +this.jvxlData.vertexColors[i] = gdata.getColorArgbOrGray(this.vcs[i] = JU.C.copyColixTranslucency(this.colix, atoms[iAtom].colixAtom)); +var colix = (colixes == null ? 0 : colixes[atomMap[iAtom]]); +if (colix == 0) colix = atoms[iAtom].colixAtom; +this.vcs[i] = JU.C.copyColixTranslucency(this.colix, colix); +} +}, "JV.Viewer,~A,~A,JU.BS"); +Clazz.defineMethod(c$, "colorVertices", +function(colix, bs, isAtoms){ +if (this.vertexSource == null) return; +colix = JU.C.copyColixTranslucency(this.colix, colix); +var bsVertices = (isAtoms ? new JU.BS() : bs); +this.checkAllocColixes(); +if (isAtoms) for (var i = 0; i < this.vc; i++) { +var pt = this.vertexSource[i]; +if (pt >= 0 && bs.get(pt)) { +this.vcs[i] = colix; +if (bsVertices != null) bsVertices.set(i); +}} + else for (var i = 0; i < this.vc; i++) if (bsVertices.get(i)) this.vcs[i] = colix; + +if (!isAtoms) { +return; +}var color = JU.C.getHexCode(colix); +if (this.vertexColorMap == null) this.vertexColorMap = new java.util.Hashtable(); +J.shapesurface.IsosurfaceMesh.addColorToMap(this.vertexColorMap, color, bs); +}, "~N,JU.BS,~B"); +Clazz.defineMethod(c$, "checkAllocColixes", +function(){ +if (this.vcs == null || this.vertexColorMap == null && this.isColorSolid) this.allocVertexColixes(); +this.isColorSolid = false; +}); +c$.addColorToMap = Clazz.defineMethod(c$, "addColorToMap", +function(colorMap, color, bs){ +var bsMap = null; +for (var entry, $entry = colorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) if (entry.getKey() === color) { +bsMap = entry.getValue(); +bsMap.or(bs); +} else { +entry.getValue().andNot(bs); +} +if (bsMap == null) colorMap.put(color, bs); +}, "java.util.Map,~S,JU.BS"); +Clazz.defineMethod(c$, "setJvxlColorMap", +function(isAll){ +this.jvxlData.diameter = this.diameter; +this.jvxlData.color = JU.C.getHexCode(this.colix); +this.jvxlData.meshColor = (this.meshColix == 0 ? null : JU.C.getHexCode(this.meshColix)); +this.jvxlData.translucency = ((this.colix & 30720) == 30720 ? -1 : JU.C.getColixTranslucencyFractional(this.colix)); +this.jvxlData.rendering = this.getRendering().substring(1); +this.jvxlData.colorScheme = (this.colorEncoder == null ? null : this.colorEncoder.getColorScheme()); +if (this.jvxlData.vertexColors == null) this.jvxlData.nVertexColors = (this.vertexColorMap == null ? 0 : this.vertexColorMap.size()); +if (this.vertexColorMap == null || this.vertexSource == null || !isAll) return; +if (this.jvxlData.vertexColorMap == null) this.jvxlData.vertexColorMap = new java.util.Hashtable(); +for (var entry, $entry = this.vertexColorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var bsMap = entry.getValue(); +if (bsMap.isEmpty()) continue; +var color = entry.getKey(); +var bs = new JU.BS(); +for (var i = 0; i < this.vc; i++) if (bsMap.get(this.vertexSource[i])) bs.set(i); + +J.shapesurface.IsosurfaceMesh.addColorToMap(this.jvxlData.vertexColorMap, color, bs); +} +this.jvxlData.nVertexColors = this.jvxlData.vertexColorMap.size(); +if (this.jvxlData.vertexColorMap.size() == 0) this.jvxlData.vertexColorMap = null; +}, "~B"); +Clazz.defineMethod(c$, "setColorCommand", +function(){ +if (this.colorEncoder == null || (this.colorCommand = this.colorEncoder.getColorScheme()) == null) return; +if (this.colorCommand.equals("inherit")) { +this.colorCommand = "#inherit;"; +return; +}this.colorCommand = "color $" + JU.PT.esc(this.thisID) + JU.PT.esc(this.colorCommand) + " range " + (this.jvxlData.isColorReversed ? this.jvxlData.valueMappedToBlue + " " + this.jvxlData.valueMappedToRed : this.jvxlData.valueMappedToRed + " " + this.jvxlData.valueMappedToBlue); +}); +Clazz.defineMethod(c$, "setColorsFromJvxlData", +function(colorRgb){ +this.diameter = this.jvxlData.diameter; +if (colorRgb == -1) { +} else if (colorRgb != -2147483648 && colorRgb != 2147483647) { +this.colix = JU.C.getColix(colorRgb); +} else if (this.jvxlData.color != null) { +this.colix = JU.C.getColixS(this.jvxlData.color); +}if (this.colix == 0) this.colix = 5; +this.colix = JU.C.getColixTranslucent3(this.colix, this.jvxlData.translucency != 0, this.jvxlData.translucency); +var translucencyLevel = (this.jvxlData.translucency == 0 ? NaN : this.jvxlData.translucency); +if (this.jvxlData.meshColor != null) this.meshColix = JU.C.getColixS(this.jvxlData.meshColor); +this.setJvxlDataRendering(); +this.isColorSolid = !this.jvxlData.isBicolorMap && this.jvxlData.vertexColors == null && this.jvxlData.vertexColorMap == null; +if (this.colorEncoder == null) return false; +if (this.jvxlData.vertexColorMap == null) { +if (this.jvxlData.colorScheme != null) { +var colorScheme = this.jvxlData.colorScheme; +var isTranslucent = colorScheme.startsWith("translucent "); +if (isTranslucent) { +colorScheme = colorScheme.substring(12); +translucencyLevel = NaN; +}this.colorEncoder.setColorScheme(colorScheme, isTranslucent); +this.remapColors(null, null, translucencyLevel); +}} else { +if (this.jvxlData.baseColor != null) { +for (var i = this.vc; --i >= 0; ) this.vcs[i] = this.colix; + +}for (var entry, $entry = this.jvxlData.vertexColorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var bsMap = entry.getValue(); +var colix = JU.C.copyColixTranslucency(this.colix, JU.C.getColixS(entry.getKey())); +for (var i = bsMap.nextSetBit(0); i >= 0; i = bsMap.nextSetBit(i + 1)) this.vcs[i] = colix; + +} +}return true; +}, "~N"); +Clazz.defineMethod(c$, "setJvxlDataRendering", +function(){ +if (this.jvxlData.rendering != null) { +var tokens = JU.PT.getTokens(this.jvxlData.rendering); +for (var i = 0; i < tokens.length; i++) this.setTokenProperty(JS.T.getTokFromName(tokens[i]), true); + +}}); +Clazz.defineMethod(c$, "remapColors", +function(vwr, ce, translucentLevel){ +if (ce == null) ce = this.colorEncoder; +if (ce == null) ce = this.colorEncoder = new JU.ColorEncoder(null, vwr); +this.colorEncoder = ce; +this.setColorCommand(); +if (Float.isNaN(translucentLevel)) { +translucentLevel = JU.C.getColixTranslucencyLevel(this.colix); +} else { +this.colix = JU.C.getColixTranslucent3(this.colix, true, translucentLevel); +}var min = ce.lo; +var max = ce.hi; +var inherit = (this.vertexSource != null && ce.currentPalette == 15); +this.vertexColorMap = null; +this.pcs = null; +this.colorsExplicit = false; +this.jvxlData.baseColor = null; +this.jvxlData.vertexCount = this.vc; +if (this.vvs == null || this.jvxlData.vertexCount == 0) return; +if (this.vcs == null || this.vcs.length != this.vc) this.allocVertexColixes(); +if (inherit) { +this.jvxlData.vertexDataOnly = true; +this.jvxlData.vertexColors = Clazz.newIntArray (this.vc, 0); +this.jvxlData.nVertexColors = this.vc; +var atoms = vwr.ms.at; +var gdata = vwr.gdata; +for (var i = this.mergeVertexCount0; i < this.vc; i++) { +var pt = this.vertexSource[i]; +if (pt >= 0 && pt < atoms.length) this.jvxlData.vertexColors[i] = gdata.getColorArgbOrGray(this.vcs[i] = JU.C.copyColixTranslucency(this.colix, atoms[pt].colixAtom)); +} +return; +}this.jvxlData.vertexColors = null; +this.jvxlData.vertexColorMap = null; +if (this.jvxlData.isBicolorMap) { +for (var i = this.mergeVertexCount0; i < this.vc; i++) this.vcs[i] = JU.C.copyColixTranslucency(this.colix, this.vvs[i] < 0 ? this.jvxlData.minColorIndex : this.jvxlData.maxColorIndex); + +return; +}this.jvxlData.isColorReversed = ce.isReversed; +if (max != 3.4028235E38) { +this.jvxlData.valueMappedToRed = min; +this.jvxlData.valueMappedToBlue = max; +}ce.setRange(this.jvxlData.valueMappedToRed, this.jvxlData.valueMappedToBlue, this.jvxlData.isColorReversed); +var isTranslucent = JU.C.isColixTranslucent(this.colix); +if (ce.isTranslucent) { +if (!isTranslucent) this.colix = JU.C.getColixTranslucent3(this.colix, true, 0.5); +isTranslucent = false; +}this.vcs = JU.AU.ensureLengthShort(this.vcs, this.vc); +for (var i = this.vc; --i >= this.mergeVertexCount0; ) this.vcs[i] = ce.getColorIndex(this.vvs[i]); + +this.setTranslucent(isTranslucent, translucentLevel); +this.colorEncoder = ce; +var contours = this.getContours(); +if (contours != null) { +for (var i = contours.length; --i >= 0; ) { +var value = (contours[i].get(2)).floatValue(); +var colix = (contours[i].get(3)); +colix[0] = ce.getColorIndex(value); +var color = (contours[i].get(4)); +color[0] = JU.C.getArgb(colix[0]); +} +}if (this.contourValues != null) { +this.contourColixes = Clazz.newShortArray (this.contourValues.length, 0); +for (var i = 0; i < this.contourValues.length; i++) this.contourColixes[i] = ce.getColorIndex(this.contourValues[i]); + +this.setDiscreteColixes(null, null); +}this.jvxlData.isJvxlPrecisionColor = true; +J.jvxl.data.JvxlCoder.jvxlCreateColorData(this.jvxlData, this.vvs); +this.setColorCommand(); +this.isColorSolid = false; +}, "JV.Viewer,JU.ColorEncoder,~N"); +Clazz.defineMethod(c$, "reinitializeLightingAndColor", +function(vwr){ +this.initialize(this.lighting, null, null); +if (this.colorEncoder != null || this.jvxlData.isBicolorMap) { +this.vcs = null; +this.remapColors(vwr, null, NaN); +}}, "JV.Viewer"); +Clazz.overrideMethod(c$, "getBoundingBox", +function(){ +return this.jvxlData.boundingBox; +}); +Clazz.overrideMethod(c$, "setBoundingBox", +function(pts){ +this.jvxlData.boundingBox = pts; +}, "~A"); +Clazz.defineMethod(c$, "merge", +function(m){ +var nV = this.vc + (m == null ? 0 : m.vc); +if (this.pis == null) this.pis = Clazz.newIntArray (0, 0, 0); +if (m != null && m.pis == null) m.pis = Clazz.newIntArray (0, 0, 0); +var nP = (this.bsSlabDisplay == null || this.pc == 0 ? this.pc : this.bsSlabDisplay.cardinality()) + (m == null || m.pc == 0 ? 0 : m.bsSlabDisplay == null ? m.pc : m.bsSlabDisplay.cardinality()); +if (this.vs == null) this.vs = new Array(0); +this.vs = JU.AU.ensureLength(this.vs, nV); +this.vvs = JU.AU.ensureLengthA(this.vvs, nV); +var haveSources = (this.vertexSource != null && (m == null || m.vertexSource != null)); +this.vertexSource = JU.AU.ensureLengthI(this.vertexSource, nV); +var newPolygons = JU.AU.newInt2(nP); +var ipt = J.shapesurface.IsosurfaceMesh.mergePolygons(this, 0, 0, newPolygons); +if (m != null) { +ipt = J.shapesurface.IsosurfaceMesh.mergePolygons(m, ipt, this.vc, newPolygons); +for (var i = 0; i < m.vc; i++, this.vc++) { +this.vs[this.vc] = m.vs[i]; +this.vvs[this.vc] = m.vvs[i]; +if (haveSources) this.vertexSource[this.vc] = m.vertexSource[i]; +} +}this.pc = this.polygonCount0 = nP; +this.vc = this.vertexCount0 = nV; +if (nP > 0) this.resetSlab(); +this.pis = newPolygons; +}, "J.jvxl.data.MeshData"); +c$.mergePolygons = Clazz.defineMethod(c$, "mergePolygons", +function(m, ipt, vertexCount, newPolygons){ +var p; +for (var i = 0; i < m.pc; i++) { +if ((p = m.pis[i]) == null || m.bsSlabDisplay != null && !m.bsSlabDisplay.get(i)) continue; +newPolygons[ipt++] = m.pis[i]; +if (vertexCount > 0) for (var j = 0; j < 3; j++) p[j] += vertexCount; + +} +return ipt; +}, "JU.MeshSurface,~N,~N,~A"); +Clazz.overrideMethod(c$, "getUnitCell", +function(){ +return (this.unitCell != null || (this.unitCell = this.vwr.ms.am[this.modelIndex].biosymmetry) != null || (this.unitCell = this.vwr.ms.getUnitCell(this.modelIndex)) != null || this.oabc != null && (this.unitCell = this.vwr.getSymTemp().getUnitCell(this.oabc, true, null)) != null ? this.unitCell : null); +}); +Clazz.defineMethod(c$, "fixLattice", +function(){ +if (this.getUnitCell() == null) return; +var minXYZ = new JU.P3i(); +var maxXYZ = JU.P3i.new3(Clazz.floatToInt(this.lattice.x), Clazz.floatToInt(this.lattice.y), Clazz.floatToInt(this.lattice.z)); +this.jvxlData.fixedLattice = this.lattice; +this.lattice = null; +JU.SimpleUnitCell.setMinMaxLatticeParameters(Clazz.floatToInt(this.unitCell.getUnitCellInfoType(6)), minXYZ, maxXYZ, 0); +var nCells = (maxXYZ.x - minXYZ.x) * (maxXYZ.y - minXYZ.y) * (maxXYZ.z - minXYZ.z); +var latticeOffset = new JU.P3(); +var vc0 = this.vc; +var vcNew = nCells * this.vc; +this.vs = JU.AU.arrayCopyPt(this.vs, vcNew); +this.vvs = (this.vvs == null ? null : JU.AU.ensureLengthA(this.vvs, vcNew)); +var pc0 = this.pc; +var pcNew = nCells * this.pc; +this.pis = JU.AU.arrayCopyII(this.pis, pcNew); +var off = 0; +this.normixes = JU.AU.arrayCopyShort(this.normixes, vcNew); +for (var tx = minXYZ.x; tx < maxXYZ.x; tx++) for (var ty = minXYZ.y; ty < maxXYZ.y; ty++) for (var tz = minXYZ.z; tz < maxXYZ.z; tz++) { +if (tx == 0 && ty == 0 && tz == 0) continue; +latticeOffset.set(tx, ty, tz); +this.unitCell.toCartesian(latticeOffset, false); +for (var i = 0; i < vc0; i++) { +this.normixes[this.vc] = this.normixes[i]; +var v = JU.P3.newP(this.vs[i]); +v.add(latticeOffset); +this.addVCVal(v, this.vvs[i], false); +} +off += vc0; +for (var i = 0; i < pc0; i++) { +var p = JU.AU.arrayCopyI(this.pis[i], -1); +p[0] += off; +p[1] += off; +p[2] += off; +this.addPolygon(p, null); +} +} + + +var xyzMin = new JU.P3(); +var xyzMax = new JU.P3(); +this.setBox(xyzMin, xyzMax); +this.jvxlData.boundingBox = Clazz.newArray(-1, [xyzMin, xyzMax]); +}); +Clazz.overrideMethod(c$, "getMinDistance2ForVertexGrouping", +function(){ +if (this.jvxlData.boundingBox != null && this.jvxlData.boundingBox[0] != null) { +var d2 = this.jvxlData.boundingBox[1].distanceSquared(this.jvxlData.boundingBox[0]); +if (d2 < 5) return 1e-10; +}return 1e-8; +}); +Clazz.overrideMethod(c$, "getVisibleVertexBitSet", +function(){ +var bs = this.getVisibleVBS(); +if (this.jvxlData.thisSet != null) for (var i = 0; i < this.vc; i++) if (!this.jvxlData.thisSet.get(this.vertexSets[i])) bs.clear(i); + +return bs; +}); +Clazz.defineMethod(c$, "updateCoordinates", +function(m, bs){ +var doUpdate = (bs == null || this.isModelConnected); +if (!doUpdate) for (var i = 0; i < this.connectedAtoms.length; i++) if (this.connectedAtoms[i] >= 0 && bs.get(this.connectedAtoms[i])) { +doUpdate = true; +break; +} +if (!doUpdate) return; +if (this.isModelConnected) { +this.mat4 = this.vwr.ms.am[this.modelIndex].mat4; +} else { +if (this.mat4 == null) this.mat4 = JU.M4.newM4(null); +this.mat4.mul2(m, this.mat4); +}this.recalcAltVertices = true; +}, "JU.M4,JU.BS"); +Clazz.defineMethod(c$, "getDataMinMax", +function(){ +var min = 3.4028235E38; +var max = -3.4028235E38; +for (var i = this.vvs.length; --i >= 0; ) { +var v = this.vvs[i]; +if (v < min) min = v; +if (v > max) max = v; +} +return Clazz.newFloatArray(-1, [min, max]); +}); +Clazz.defineMethod(c$, "getDataRange", +function(){ +return (this.jvxlData.jvxlPlane != null && this.colorEncoder == null ? null : Clazz.newFloatArray(-1, [this.jvxlData.mappedDataMin, this.jvxlData.mappedDataMax, (this.jvxlData.isColorReversed ? this.jvxlData.valueMappedToBlue : this.jvxlData.valueMappedToRed), (this.jvxlData.isColorReversed ? this.jvxlData.valueMappedToRed : this.jvxlData.valueMappedToBlue)])); +}); +Clazz.defineMethod(c$, "getInfo", +function(isAll){ +var info = Clazz.superCall(this, J.shapesurface.IsosurfaceMesh, "getInfo", [isAll]); +if (isAll) { +var bs = new JU.BS(); +var valid = this.getValidVertices(bs); +if (valid != null) { +info.put("allVertices", info.get("vertices")); +info.put("vertices", valid); +var values = info.get("vertexValues"); +if (values != null) { +var v = this.getValidValues(bs); +info.put("allValues", values); +info.put("vertexValues", v); +}}}return info; +}, "~B"); +Clazz.defineMethod(c$, "getValidValues", +function(bs){ +if (bs == null) this.getInvalidBS(bs = new JU.BS()); +var n = this.vc - bs.cardinality(); +var v = Clazz.newFloatArray (n, 0); +for (var pt = 0, i = bs.nextClearBit(0); i >= 0 && i < this.vc; i = bs.nextClearBit(i + 1)) v[pt++] = this.vvs[i]; + +return v; +}, "JU.BS"); +Clazz.defineMethod(c$, "getValidVertices", +function(bs){ +var allowNull = (bs != null); +if (bs == null) bs = new JU.BS(); +this.getInvalidBS(bs); +var n = this.vc - bs.cardinality(); +if (n == this.vc && allowNull) { +return null; +}var pa = new Array(n); +for (var pt = 0, i = bs.nextClearBit(0); i >= 0 && pt < n; i = bs.nextClearBit(i + 1)) { +pa[pt++] = this.vs[i]; +} +return pa; +}, "JU.BS"); +Clazz.defineMethod(c$, "getInvalidBS", +function(bs){ +var excluded = this.jvxlData.jvxlExcluded; +var invalid = excluded[1]; +var thisSet = this.jvxlData.thisSet; +if (invalid != null) bs.or(invalid); +if (thisSet != null) { +for (var i = this.vc; --i >= 0; ) { +if (!thisSet.get(this.vertexSets[i])) bs.set(i); +} +}}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/LcaoCartoon.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/LcaoCartoon.js new file mode 100755 index 000000000000..aaa936cab1bd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/LcaoCartoon.js @@ -0,0 +1,221 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(["J.shapesurface.Isosurface"], "J.shapesurface.LcaoCartoon", ["JU.PT", "$.SB", "$.V3", "JU.C", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.thisType = null; +this.myColorPt = 0; +this.lcaoID = null; +this.thisSet = null; +this.isMolecular = false; +this.rotationAxis = null; +this.lcaoScale = null; +this.lcaoTranslucent = false; +this.lcaoTranslucentLevel = 0; +this.lcaoColorPos = null; +this.lcaoColorNeg = null; +this.lcaoReverseColor = false; +this.isLonePair = false; +this.isRadical = false; +this.cappingObject = null; +this.slabbingObject = null; +this.fullCommand = null; +Clazz.instantialize(this, arguments);}, J.shapesurface, "LcaoCartoon", J.shapesurface.Isosurface); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapesurface.LcaoCartoon, "initShape", []); +this.myType = "lcaoCartoon"; +this.allowMesh = false; +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +var setInfo = false; +if ("init" === propertyName) { +this.myColorPt = 0; +this.lcaoID = null; +this.thisSet = bs; +this.isMolecular = this.isLonePair = this.isRadical = false; +this.thisType = null; +this.rotationAxis = null; +this.fullCommand = value; +this.setPropI("init", null, null); +return; +}if ("lcaoID" === propertyName) { +this.lcaoID = value; +return; +}if ("thisID" === propertyName) { +this.lcaoID = value; +}if ("selectType" === propertyName) { +this.thisType = value; +return; +}if ("rotationAxis" === propertyName) { +this.rotationAxis = value; +return; +}if ("scale" === propertyName) { +this.lcaoScale = value; +}if ("colorRGB" === propertyName) { +this.lcaoColorPos = value; +if (this.myColorPt++ == 0) this.lcaoColorNeg = this.lcaoColorPos; +}if ("select" === propertyName) { +this.thisSet = value; +}if ("translucentLevel" === propertyName) { +this.lcaoTranslucentLevel = (value).floatValue(); +}if ("settranslucency" === propertyName) { +this.lcaoTranslucent = ((value).equals("translucent")); +return; +}if ("translucency" === propertyName) { +this.lcaoTranslucent = ((value).equals("translucent")); +if (this.lcaoID == null) return; +}if ("molecular" === propertyName) { +this.isMolecular = true; +if (value == null) return; +propertyName = "create"; +}if ("create" === propertyName) { +this.myColorPt = 0; +this.thisType = value; +this.createLcaoCartoon(); +return; +}if ("lonePair" === propertyName) { +this.isLonePair = true; +return; +}if ("lp" === propertyName) { +this.isLonePair = setInfo = true; +}if ("radical" === propertyName) { +this.isRadical = true; +return; +}if ("rad" === propertyName) { +this.isRadical = setInfo = true; +}if ("delete" === propertyName) { +this.deleteLcaoCartoon(); +return; +}if ("on" === propertyName) { +this.setLcaoOn(true); +return; +}if ("off" === propertyName) { +this.setLcaoOn(false); +return; +}if ("slab" === propertyName) { +this.slabbingObject = value; +}if ("cap" === propertyName) { +this.cappingObject = value; +}if ("lobe" === propertyName || "sphere" === propertyName) { +this.getCapSlabInfo(this.fullCommand); +}this.setPropI(propertyName, value, bs); +if (setInfo || "lobe" === propertyName || "sphere" === propertyName) { +this.setScriptInfo(null); +}}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setLcaoOn", +function(TF){ +if (JU.PT.isWild(this.lcaoID)) { +var list = this.getMeshList(this.lcaoID, false); +for (var i = list.size(); --i >= 0; ) list.get(i).visible = TF; + +return; +}var ac = this.ms.ac; +var at = this.ms.at; +for (var i = ac; --i >= 0; ) { +if (this.lcaoID != null || this.thisSet.get(i)) this.setLcaoOn(i, TF && at[i] != null); +} +}, "~B"); +Clazz.defineMethod(c$, "setLcaoOn", +function(iAtom, TF){ +var id = this.getID(this.lcaoID, iAtom); +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i].thisID.indexOf(id) == 0) this.meshes[i].visible = TF; + +}, "~N,~B"); +Clazz.defineMethod(c$, "deleteLcaoCartoon", +function(){ +if (JU.PT.isWild(this.lcaoID)) { +this.deleteMeshKey(this.lcaoID); +return; +}var ac = this.ms.ac; +for (var i = ac; --i >= 0; ) if (this.lcaoID != null || this.thisSet.get(i)) this.deleteLcaoCartoon(i); + +}); +Clazz.defineMethod(c$, "deleteLcaoCartoon", +function(iAtom){ +var id = this.getID(this.lcaoID, iAtom); +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i].thisID.indexOf(id) == 0) this.deleteMeshI(i); + +}, "~N"); +Clazz.defineMethod(c$, "createLcaoCartoon", +function(){ +this.isMolecular = (this.isMolecular && (this.thisType.indexOf("px") >= 0 || this.thisType.indexOf("py") >= 0 || this.thisType.indexOf("pz") >= 0)); +var lcaoID0 = this.lcaoID; +for (var i = this.thisSet.nextSetBit(0); i >= 0; i = this.thisSet.nextSetBit(i + 1)) { +this.createLcaoCartoon(i); +this.lcaoID = lcaoID0; +} +}); +Clazz.defineMethod(c$, "createLcaoCartoon", +function(iAtom){ +var id = this.getID(this.lcaoID, iAtom); +var isCpk = (this.thisType.equals("cpk")); +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i].thisID.indexOf(id) == 0) this.deleteMeshI(i); + +this.setPropI("init", null, null); +this.translucentLevel = this.lcaoTranslucentLevel; +this.setPropI("thisID", id, null); +if (this.lcaoScale != null) this.setPropI("scale", this.lcaoScale, null); +if (isCpk) { +this.setPropI("colorRGB", Integer.$valueOf(this.vwr.gdata.getColorArgbOrGray(this.ms.at[iAtom].colixAtom)), null); +} else if (this.lcaoColorNeg != null) { +this.setPropI("colorRGB", this.lcaoColorNeg, null); +this.setPropI("colorRGB", this.lcaoColorPos, null); +}this.setPropI("reversecolor", Boolean.$valueOf(this.lcaoReverseColor), null); +if (this.slabbingObject != null) this.setPropI("slab", this.slabbingObject, null); +if (this.cappingObject != null) this.setPropI("cap", this.cappingObject, null); +this.setPropI("lcaoType", this.thisType, null); +this.setPropI("atomIndex", Integer.$valueOf(iAtom), null); +var axes = Clazz.newArray(-1, [ new JU.V3(), new JU.V3(), JU.V3.newV(this.ms.at[iAtom]), new JU.V3()]); +if (this.rotationAxis != null) axes[3].setT(this.rotationAxis); +if (this.isMolecular) { +if (this.thisType.indexOf("px") >= 0) { +axes[0].set(0, -1, 0); +axes[1].set(1, 0, 0); +} else if (this.thisType.indexOf("py") >= 0) { +axes[0].set(-1, 0, 0); +axes[1].set(0, 0, 1); +} else if (this.thisType.indexOf("pz") >= 0) { +axes[0].set(0, 0, 1); +axes[1].set(1, 0, 0); +}if (this.thisType.indexOf("-") == 0) axes[0].scale(-1); +}var type = this.thisType; +var isAnti = (type.indexOf("anti-sp") >= 0); +if (isAnti) { +type = type.substring(5); +}if (this.isMolecular || isCpk || this.thisType.equalsIgnoreCase("s") || this.vwr.getHybridizationAndAxes(iAtom, axes[0], axes[1], type) != null) { +this.setPropI((this.isRadical ? "radical" : this.isLonePair ? "lonePair" : "lcaoCartoon"), axes, null); +}if (isCpk) { +var colix = this.ms.at[iAtom].colixAtom; +if (JU.C.isColixTranslucent(colix)) { +this.setPropI("translucentLevel", Float.$valueOf(JU.C.getColixTranslucencyLevel(colix)), null); +this.setPropI("translucency", "translucent", null); +}} else if (this.lcaoTranslucent) for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i].thisID.indexOf(id) == 0) this.meshes[i].setTranslucent(true, this.translucentLevel); + +}, "~N"); +Clazz.defineMethod(c$, "getID", +function(id, i){ +return (id != null ? id : (this.isLonePair || this.isRadical ? "lp_" : "lcao_") + (i + 1) + "_") + (this.thisType == null ? "" : JU.PT.rep(this.thisType, "-", (this.thisType.indexOf("-p") == 0 ? "" : "_"))); +}, "~S,~N"); +Clazz.defineMethod(c$, "getShapeState", +function(){ +var sb = new JU.SB(); +if (this.lcaoScale != null) J.shape.Shape.appendCmd(sb, "lcaoCartoon scale " + this.lcaoScale.floatValue()); +if (this.lcaoReverseColor) J.shape.Shape.appendCmd(sb, "lcaoCartoon reverse"); +if (this.lcaoColorNeg != null) J.shape.Shape.appendCmd(sb, "lcaoCartoon color " + JU.Escape.escapeColor(this.lcaoColorNeg.intValue()) + " " + JU.Escape.escapeColor(this.lcaoColorPos.intValue())); +if (this.lcaoTranslucent) J.shape.Shape.appendCmd(sb, "lcaoCartoon translucent " + this.translucentLevel); +for (var i = this.meshCount; --i >= 0; ) if (!this.meshes[i].visible) J.shape.Shape.appendCmd(sb, "lcaoCartoon ID " + this.meshes[i].thisID + " off"); + +return Clazz.superCall(this, J.shapesurface.LcaoCartoon, "getShapeState", []) + sb.toString(); +}); +Clazz.defineMethod(c$, "merge", +function(shape){ +var lc = shape; +this.lcaoScale = lc.lcaoScale; +this.lcaoColorNeg = lc.lcaoColorNeg; +this.lcaoTranslucent = lc.lcaoTranslucent; +this.lcaoTranslucentLevel = lc.lcaoTranslucentLevel; +this.lcaoReverseColor = lc.lcaoReverseColor; +Clazz.superCall(this, J.shapesurface.LcaoCartoon, "merge", [shape]); +}, "J.shape.MeshCollection"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/MolecularOrbital.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/MolecularOrbital.js new file mode 100755 index 000000000000..8cd983ec0126 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/MolecularOrbital.js @@ -0,0 +1,412 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(["J.shapesurface.Isosurface"], "J.shapesurface.MolecularOrbital", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.PT", "$.SB", "J.jvxl.data.JvxlCoder", "J.quantum.QS", "JU.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.moTranslucency = null; +this.moTranslucentLevel = null; +this.moPlane = null; +this.moCutoff = null; +this.moResolution = null; +this.moScale = null; +this.moColorPos = null; +this.moColorNeg = null; +this.moMonteCarloCount = null; +this.moIsPositiveOnly = false; +this.moSquareData = null; +this.moSquareLinear = null; +this.moRandomSeed = null; +this.moFill = 1073742046; +this.moMesh = 1073742018; +this.moDots = 1073742042; +this.moFrontOnly = 1073741960; +this.moShell = 1073742057; +this.moTitleFormat = null; +this.moDebug = false; +this.myColorPt = 0; +this.strID = null; +this.$moNumber = 0; +this.$moLinearCombination = null; +this.htModels = null; +this.thisModel = null; +this.moSlab = null; +this.moSlabValue = null; +this.nboType = null; +Clazz.instantialize(this, arguments);}, J.shapesurface, "MolecularOrbital", J.shapesurface.Isosurface); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapesurface.MolecularOrbital, "initShape", []); +this.myType = "mo"; +this.setPropI("thisID", this.myType, null); +}); +Clazz.overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("init" === propertyName) { +this.myColorPt = 0; +this.moDebug = false; +var modelIndex = (value).intValue(); +this.strID = this.getId(modelIndex); +this.setPropI("init", null, null); +this.setPropI("modelIndex", Integer.$valueOf(modelIndex), null); +if (this.htModels == null) this.htModels = new java.util.Hashtable(); +if (!this.htModels.containsKey(this.strID)) this.htModels.put(this.strID, new java.util.Hashtable()); +this.thisModel = this.htModels.get(this.strID); +this.$moNumber = (!this.thisModel.containsKey("moNumber") ? 0 : (this.thisModel.get("moNumber")).intValue()); +this.$moLinearCombination = this.thisModel.get("moLinearCombination"); +this.moSquareData = (this.$moLinearCombination != null ? null : this.thisModel.get("moSquareData")); +this.moSquareLinear = (this.$moLinearCombination == null ? null : this.thisModel.get("moSquareLinear")); +return; +}if (this.htModels != null && this.strID != null) this.thisModel = this.htModels.get(this.strID); +if ("slab" === propertyName) { +if (Clazz.instanceOf(value, Integer)) { +this.thisModel.put("slabValue", value); +} else { +var slabInfo = value; +var tok = (slabInfo[0]).intValue(); +this.moSlab = this.thisModel.get("slab"); +if (this.moSlab == null) this.thisModel.put("slab", this.moSlab = new JU.Lst()); +if (tok == 1073742333) { +this.moSlab = null; +this.thisModel.remove("slab"); +return; +}this.moSlab.addLast(value); +}return; +}if ("cutoff" === propertyName) { +this.thisModel.put("moCutoff", value); +this.thisModel.put("moIsPositiveOnly", Boolean.FALSE); +return; +}if ("scale" === propertyName) { +this.thisModel.put("moScale", value); +return; +}if ("squareData" === propertyName) { +if (value === Boolean.TRUE) this.thisModel.put("moSquareData", Boolean.TRUE); + else this.thisModel.remove("moSquareData"); +this.moSquareData = value; +return; +}if ("squareLinear" === propertyName) { +if (value === Boolean.TRUE) this.thisModel.put("moSquareLinear", Boolean.TRUE); + else this.thisModel.remove("moSquareLinear"); +this.moSquareLinear = value; +return; +}if ("cutoffPositive" === propertyName) { +this.thisModel.put("moCutoff", value); +this.thisModel.put("moIsPositiveOnly", Boolean.TRUE); +return; +}if ("resolution" === propertyName) { +this.thisModel.put("moResolution", value); +return; +}if ("titleFormat" === propertyName) { +this.moTitleFormat = value; +return; +}if ("color" === propertyName) { +if (!(Clazz.instanceOf(value, Integer))) return; +this.thisModel.remove("moTranslucency"); +this.setPropI("color", value, bs); +propertyName = "colorRGB"; +this.myColorPt = 0; +}if ("colorRGB" === propertyName) { +this.moColorPos = value; +if (this.myColorPt++ == 0) this.moColorNeg = this.moColorPos; +this.thisModel.put("moColorNeg", this.moColorNeg); +this.thisModel.put("moColorPos", this.moColorPos); +return; +}if ("plane" === propertyName) { +if (value == null) this.thisModel.remove("moPlane"); + else this.thisModel.put("moPlane", value); +return; +}if ("monteCarloCount" === propertyName) { +this.thisModel.put("monteCarloCount", value); +return; +}if ("randomSeed" === propertyName) { +if (value == null) this.thisModel.remove("randomSeed"); + else this.thisModel.put("randomSeed", value); +return; +}if ("molecularOrbital" === propertyName) { +if (Clazz.instanceOf(value, Integer)) { +this.$moNumber = (value).intValue(); +this.thisModel.put("moNumber", value); +this.thisModel.remove("moLinearCombination"); +this.$moLinearCombination = null; +} else { +this.$moNumber = 0; +this.$moLinearCombination = value; +this.thisModel.put("moNumber", Integer.$valueOf(0)); +this.thisModel.put("moLinearCombination", this.$moLinearCombination); +}if (this.moSquareData === Boolean.TRUE) this.thisModel.put("moSquareData", Boolean.TRUE); + else this.thisModel.remove("moSquareData"); +if (this.moSquareLinear === Boolean.TRUE) this.thisModel.put("moSquareLinear", Boolean.TRUE); + else this.thisModel.remove("moSquareLinear"); +this.setOrbital(this.$moNumber, this.$moLinearCombination); +return; +}if (propertyName === "deleteModelAtoms") { +var modelIndex = ((value)[2])[0]; +var htModelsNew = new java.util.Hashtable(); +for (var i = this.meshCount; --i >= 0; ) { +if (this.meshes[i] == null) continue; +if (this.meshes[i].modelIndex == modelIndex) { +this.meshCount--; +if (this.meshes[i] === this.currentMesh) { +this.currentMesh = null; +this.thisModel = null; +}this.meshes = JU.AU.deleteElements(this.meshes, i, 1); +continue; +}var htModel = this.htModels.get(this.meshes[i].thisID); +if (this.meshes[i].modelIndex > modelIndex) { +this.meshes[i].modelIndex--; +this.meshes[i].thisID = this.getId(this.meshes[i].modelIndex); +}htModelsNew.put(this.meshes[i].thisID, htModel); +} +this.htModels = htModelsNew; +return; +}if ("moData" === propertyName) { +var moData = value; +this.nboType = moData.get("nboType"); +this.thisModel = this.htModels.get(this.strID); +if (this.nboType == null) this.thisModel.remove("nboType"); + else this.thisModel.put("nboType", this.nboType); +} else if ("translucentLevel" === propertyName) { +if (this.thisModel == null) { +if (this.currentMesh == null) return; +this.thisModel = this.htModels.get(this.currentMesh.thisID); +}this.thisModel.put("moTranslucentLevel", value); +} else if ("delete" === propertyName) { +this.htModels.remove(this.strID); +this.$moNumber = 0; +this.$moLinearCombination = null; +} else if ("token" === propertyName) { +var tok = (value).intValue(); +switch (tok) { +case 1112150019: +case 1073742042: +this.moDots = tok; +break; +case 1073741938: +case 1073742046: +this.moFill = tok; +break; +case 1073742018: +case 1073742052: +this.moMesh = tok; +break; +case 1073741862: +case 1073742057: +this.moShell = tok; +break; +case 1073741960: +case 1073742058: +this.moFrontOnly = tok; +break; +} +} else if ("translucency" === propertyName) { +if (this.thisModel == null) { +if (this.currentMesh == null) return; +this.thisModel = this.htModels.get(this.currentMesh.thisID); +}this.thisModel.put("moTranslucency", value); +}this.setPropI(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "getId", +function(modelIndex){ +return "mo_model" + this.vwr.getModelNumberDotted(modelIndex); +}, "~N"); +Clazz.overrideMethod(c$, "getProperty", +function(propertyName, index){ +if (propertyName.startsWith("list")) { +var s = ""; +if (propertyName.equals("list")) { +s = this.getPropI("list", index); +if (s.length > 1) s += "cutoff = " + this.jvxlData.cutoff + "\n"; +s = "\n" + s; +}return this.getMoInfo(-1) + s; +}if (propertyName === "moLabel") { +var labels = this.sg.params.moData.get("nboLabels"); +if (this.$moNumber > 0 && labels != null && labels.length != 0) return labels[(this.$moNumber - 1) % labels.length]; +return ""; +}if (propertyName === "moNumber") return Integer.$valueOf(this.$moNumber); +if (propertyName === "moLinearCombination") return this.$moLinearCombination; +if (propertyName === "moSquareData") return this.moSquareData; +if (propertyName === "moSquareLinear") return this.moSquareLinear; +if (propertyName === "showMO") { +var str = new JU.SB(); +var mos = (this.sg.params.moData.get("mos")); +var nOrb = (mos == null ? 0 : mos.size()); +var thisMO = index; +var currentMO = this.$moNumber; +var isShowCurrent = (thisMO == -2147483648 || thisMO == 2147483647); +if (isShowCurrent) thisMO = currentMO; +if (nOrb == 0 || isShowCurrent && currentMO == 0) return ""; +var doOneMo = (thisMO != 0); +if (currentMO == 0) thisMO = 0; +var haveHeader = false; +var nTotal = (thisMO > 0 ? 1 : nOrb); +var i0 = (nTotal == 1 && currentMO > 0 ? currentMO : 1); +for (var i = i0; i <= nOrb; i++) if (thisMO == 0 || thisMO == i || !doOneMo && i == currentMO) { +if (!doOneMo) { +this.setPropI("init", this.sg.params, null); +this.setOrbital(i, null); +}this.jvxlData.moleculeXml = this.vwr.getModelCml(this.vwr.getModelUndeletedAtomsBitSet(this.thisMesh.modelIndex), 100, true, false); +if (!haveHeader) { +str.append(J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData, null, null, "HEADERONLY", true, nTotal, null, null)); +haveHeader = true; +}str.append(J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData, null, this.jvxlData.title, null, false, 1, this.thisMesh.getState(this.myType), (this.thisMesh.scriptCommand == null ? "" : this.thisMesh.scriptCommand))); +if (!doOneMo) this.setPropI("delete", "mo_show", null); +if (nTotal == 1) break; +} +str.append(J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData, null, null, "TRAILERONLY", true, 0, null, null)); +return str.toString(); +}return this.getPropI(propertyName, index); +}, "~S,~N"); +Clazz.defineMethod(c$, "getMoInfo", +function(modelIndex){ +var sb = new JU.SB(); +for (var m = 0, mc = this.ms.mc; m < mc; m++) { +if (modelIndex >= 0 && m != modelIndex) continue; +var moData = this.ms.getInfo(m, "moData"); +if (moData == null) continue; +var mos = (moData.get("mos")); +var nOrb = (mos == null ? 0 : mos.size()); +if (nOrb == 0) continue; +var moType = moData.get("nboType"); +if (moType == null) moType = "mo"; +for (var i = nOrb; --i >= 0; ) { +var mo = mos.get(i); +var type = mo.get("type"); +if (type == null) type = ""; +var units = mo.get("energyUnits"); +if (units == null) units = ""; +var occ = mo.get("occupancy"); +if (occ != null) type = "occupancy " + occ.floatValue() + " " + type; +var sym = mo.get("symmetry"); +if (sym != null) type += sym; +var energy = "" + mo.get("energy"); +if (Float.isNaN(JU.PT.parseFloat(energy))) sb.append(JU.PT.sprintf("model %-2s; %s %-2i # %s\n", "ssis", Clazz.newArray(-1, [this.ms.getModelNumberDotted(m), moType, Integer.$valueOf(i + 1), type]))); + else sb.append(JU.PT.sprintf("model %-2s; %s %-2i # energy %-8.3f %s %s\n", "ssifss", Clazz.newArray(-1, [this.ms.getModelNumberDotted(m), moType, Integer.$valueOf(i + 1), mo.get("energy"), units, type]))); +} +} +return sb.toString(); +}, "~N"); +Clazz.overrideMethod(c$, "clearSg", +function(){ +}); +Clazz.defineMethod(c$, "getSettings", +function(strID){ +this.thisModel = this.htModels.get(strID); +if (this.thisModel == null || this.thisModel.get("moNumber") == null) return false; +this.nboType = this.thisModel.get("nboType"); +this.moTranslucency = this.thisModel.get("moTranslucency"); +this.moTranslucentLevel = this.thisModel.get("moTranslucentLevel"); +this.moPlane = this.thisModel.get("moPlane"); +this.moCutoff = this.thisModel.get("moCutoff"); +if (this.moCutoff == null) this.moCutoff = this.sg.params.moData.get("defaultCutoff"); +if (this.moCutoff == null) { +this.moCutoff = Float.$valueOf(0.05); +}this.thisModel.put("moCutoff", Float.$valueOf(this.moCutoff.floatValue())); +this.moResolution = this.thisModel.get("moResolution"); +this.moScale = this.thisModel.get("moScale"); +this.moColorPos = this.thisModel.get("moColorPos"); +this.moColorNeg = this.thisModel.get("moColorNeg"); +this.moSquareData = this.thisModel.get("moSquareData"); +this.moSquareLinear = this.thisModel.get("moSquareLinear"); +this.moMonteCarloCount = this.thisModel.get("monteCarloCount"); +this.moRandomSeed = this.thisModel.get("randomSeed"); +this.moSlabValue = this.thisModel.get("slabValue"); +this.moSlab = this.thisModel.get("slab"); +if (this.moRandomSeed == null) this.thisModel.put("randomSeed", this.moRandomSeed = Integer.$valueOf((-System.currentTimeMillis()) % 10000)); +this.$moNumber = (this.thisModel.get("moNumber")).intValue(); +this.$moLinearCombination = this.thisModel.get("moLinearCombination"); +var b = this.thisModel.get("moIsPositiveOnly"); +this.moIsPositiveOnly = (b != null && ((b)).booleanValue()); +return true; +}, "~S"); +Clazz.defineMethod(c$, "setOrbital", +function(moNumber, linearCombination){ +this.setPropI("reset", this.strID, null); +if (this.moDebug) this.setPropI("debug", Boolean.TRUE, null); +this.getSettings(this.strID); +if (this.moScale != null) this.setPropI("scale", this.moScale, null); +if (this.moResolution != null) this.setPropI("resolution", this.moResolution, null); +if (this.moPlane != null) { +this.setPropI("plane", this.moPlane, null); +if (this.moCutoff != null) { +var max = this.moCutoff.floatValue(); +if (this.moSquareData === Boolean.TRUE || this.moSquareLinear === Boolean.TRUE) max = max * max; +this.setPropI("red", Float.$valueOf(-max), null); +this.setPropI("blue", Float.$valueOf(max), null); +}} else { +if (this.moCutoff != null) this.setPropI((this.moIsPositiveOnly ? "cutoffPositive" : "cutoff"), this.moCutoff, null); +if (this.moColorNeg != null) this.setPropI("colorRGB", this.moColorNeg, null); +if (this.moColorPos != null) this.setPropI("colorRGB", this.moColorPos, null); +if (this.moMonteCarloCount != null) { +this.setPropI("randomSeed", this.moRandomSeed, null); +this.setPropI("monteCarloCount", this.moMonteCarloCount, null); +}}this.setPropI("squareData", this.moSquareData, null); +this.setPropI("squareLinear", this.moSquareLinear, null); +this.setPropI("title", this.moTitleFormat, null); +this.setPropI("fileName", this.vwr.fm.getFileName(), null); +this.currentMesh.modelIndex = this.modelIndex; +this.setPropI("molecularOrbital", linearCombination == null ? Integer.$valueOf(moNumber) : linearCombination, null); +if (this.moPlane != null && this.moColorNeg != null) this.setPropI("colorRGB", this.moColorNeg, null); +if (this.moPlane != null && this.moColorPos != null) this.setPropI("colorRGB", this.moColorPos, null); +this.currentMesh.isColorSolid = false; +if (this.moSlabValue != null) this.setPropI("slab", this.moSlabValue, null); +if (this.moSlab != null) for (var i = 0; i < this.moSlab.size(); i++) this.setPropI("slab", this.moSlab.get(i), null); + +if (this.moTranslucentLevel != null) this.setPropI("translucentLevel", this.moTranslucentLevel, null); +if (this.moTranslucency != null) this.setPropI("translucency", this.moTranslucency, null); +this.setPropI("token", Integer.$valueOf(this.moFill), null); +this.setPropI("token", Integer.$valueOf(this.moMesh), null); +this.setPropI("token", Integer.$valueOf(this.moShell), null); +this.setPropI("token", Integer.$valueOf(this.moDots), null); +this.setPropI("token", Integer.$valueOf(this.moFrontOnly), null); +this.thisModel.put("mesh", this.currentMesh); +return; +}, "~N,~A"); +Clazz.overrideMethod(c$, "getShapeState", +function(){ +if (this.htModels == null) return ""; +var s = new JU.SB(); +var modelCount = this.ms.mc; +for (var iModel = 0; iModel < modelCount; iModel++) { +if (!this.getSettings(this.getId(iModel))) continue; +if (modelCount > 1) J.shape.Shape.appendCmd(s, "frame " + this.vwr.getModelNumberDotted(iModel)); +if (this.nboType != null) J.shape.Shape.appendCmd(s, "nbo type " + this.nboType); +if (this.moCutoff != null) J.shape.Shape.appendCmd(s, this.myType + " cutoff " + (this.sg.params.isPositiveOnly ? "+" : "") + this.moCutoff); +if (this.moScale != null) J.shape.Shape.appendCmd(s, this.myType + " scale " + this.moScale); +if (this.moMonteCarloCount != null) J.shape.Shape.appendCmd(s, this.myType + " points " + this.moMonteCarloCount + " " + this.moRandomSeed); +if (this.moResolution != null) J.shape.Shape.appendCmd(s, this.myType + " resolution " + this.moResolution); +if (this.moPlane != null) J.shape.Shape.appendCmd(s, this.myType + " plane {" + this.moPlane.x + " " + this.moPlane.y + " " + this.moPlane.z + " " + this.moPlane.w + "}"); +if (this.moTitleFormat != null) J.shape.Shape.appendCmd(s, this.myType + " titleFormat " + JU.PT.esc(this.moTitleFormat)); +if (this.moColorNeg != null) J.shape.Shape.appendCmd(s, this.myType + " color " + JU.Escape.escapeColor(this.moColorNeg.intValue()) + (this.moColorNeg.equals(this.moColorPos) ? "" : " " + JU.Escape.escapeColor(this.moColorPos.intValue()))); +if (this.moSlab != null) { +if (this.thisMesh.slabOptions != null) J.shape.Shape.appendCmd(s, this.thisMesh.slabOptions.toString()); +if (this.thisMesh.jvxlData.slabValue != -2147483648) J.shape.Shape.appendCmd(s, this.myType + " slab " + this.thisMesh.jvxlData.slabValue); +}if (this.$moLinearCombination == null) { +J.shape.Shape.appendCmd(s, this.myType + " " + (this.moSquareData === Boolean.TRUE ? "squared " : "") + this.$moNumber); +} else { +J.shape.Shape.appendCmd(s, this.myType + " " + J.quantum.QS.getMOString(this.$moLinearCombination) + (this.moSquareLinear === Boolean.TRUE ? " squared" : "")); +}if (this.moTranslucency != null) J.shape.Shape.appendCmd(s, this.myType + " translucent " + this.moTranslucentLevel); +J.shape.Shape.appendCmd(s, (this.thisModel.get("mesh")).getState(this.myType)); +} +return s.toString(); +}); +Clazz.defineMethod(c$, "merge", +function(shape){ +var mo = shape; +this.moColorNeg = mo.moColorNeg; +this.moColorPos = mo.moColorPos; +this.moCutoff = mo.moCutoff; +this.moPlane = mo.moPlane; +this.moResolution = mo.moResolution; +this.moScale = mo.moScale; +this.moSlab = mo.moSlab; +this.moSlabValue = mo.moSlabValue; +this.moTitleFormat = mo.moTitleFormat; +this.moTranslucency = mo.moTranslucency; +if (this.htModels == null) this.htModels = new java.util.Hashtable(); +var ht = mo.htModels; +if (ht != null) { +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +this.htModels.put(key, entry.getValue()); +} +}Clazz.superCall(this, J.shapesurface.MolecularOrbital, "merge", [shape]); +}, "J.shape.MeshCollection"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/NBO.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/NBO.js new file mode 100755 index 000000000000..d7ae4a8a250e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/NBO.js @@ -0,0 +1,11 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(["J.shapesurface.MolecularOrbital"], "J.shapesurface.NBO", null, function(){ +var c$ = Clazz.declareType(J.shapesurface, "NBO", J.shapesurface.MolecularOrbital); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapesurface.NBO, "initShape", []); +this.myType = "nbo"; +this.setPropI("thisID", "nbo", null); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/PMeshWriter.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/PMeshWriter.js new file mode 100755 index 000000000000..26f98b39e258 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/PMeshWriter.js @@ -0,0 +1,196 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(null, "J.shapesurface.PMeshWriter", ["JU.BS", "JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.imesh = null; +this.isBinary = false; +this.oc = null; +this.i0 = 0; +this.polygonIndexes = null; +this.selectedPolyOnly = false; +this.bsPolygons = null; +this.haveBsDisplay = false; +this.colorSolid = false; +this.colorArrayed = false; +this.cx = 0; +this.vertexColixes = null; +this.noColor = false; +this.contourColixes = null; +this.vertexValues = null; +this.vertexCount = 0; +this.imap = null; +Clazz.instantialize(this, arguments);}, J.shapesurface, "PMeshWriter", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "write", +function(isosurfaceMesh, isBinary){ +this.imesh = isosurfaceMesh; +this.isBinary = isBinary; +var bsPoly = new JU.BS(); +var bsVert = new JU.BS(); +var bsPoints = new JU.BS(); +if (this.imesh.showPoints || this.imesh.pc <= 0) this.checkPoints(bsPoints); +bsVert.or(bsPoints); +if (this.imesh.drawTriangles) this.checkTriangles(false, bsPoly, bsVert); +if (this.imesh.pc > 0 && this.imesh.fillTriangles) this.checkTriangles(true, bsPoly, bsVert); +this.imap = Clazz.newIntArray (this.vertexCount, 0); +var iimap = Clazz.newIntArray (this.vertexCount, 0); +var nV = 0; +for (var i = bsVert.nextSetBit(0); i >= 0; i = bsVert.nextSetBit(i + 1)) { +iimap[nV] = i; +this.imap[i] = nV++; +} +this.writePmeshHeader(nV); +if (!isBinary) this.outputInt(nV); +for (var i = 0; i < nV; i++) this.outputXYZ(this.imesh.vs[iimap[i]]); + +if (!isBinary) this.outputInt(-1); +if (this.imesh.showPoints || this.imesh.pc <= 0) this.outputPoints(bsPoints); +bsVert.or(bsPoints); +var bsDone = new JU.BS(); +if (this.imesh.drawTriangles) this.outputTriangles(false, bsPoly, bsDone); +if (this.imesh.pc > 0 && this.imesh.fillTriangles) this.outputTriangles(true, bsPoly, bsDone); +if (isBinary) this.oc.writeInt(0); + else this.oc.append("0\n"); +this.oc.closeChannel(); +return (isBinary ? this.oc.toByteArray() : this.oc.toString()); +}, "J.shapesurface.IsosurfaceMesh,~B"); +Clazz.defineMethod(c$, "outputPoints", +function(bsPoints){ +var color = JU.C.getArgb(this.cx); +for (var i = bsPoints.nextSetBit(0); i >= 0; i = bsPoints.nextSetBit(i + 1)) { +if (!this.imesh.isColorSolid && this.imesh.vcs != null) { +this.cx = this.imesh.vcs[i]; +color = JU.C.getArgb(this.cx); +}this.outputPoint(this.imap[i], color); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "outputTriangles", +function(fill, bsPoly, bsDone){ +var color = JU.C.getArgb(this.cx); +for (var i = bsPoly.nextSetBit(0); i >= 0; i = bsPoly.nextSetBit(i + 1)) { +var polygon = this.polygonIndexes[i]; +var iA = this.imap[polygon[0]]; +var iB = this.imap[polygon[1]]; +var iC = this.imap[polygon[2]]; +if (this.colorSolid) { +if (this.colorArrayed && i < this.imesh.pcs.length) this.cx = this.imesh.pcs[i]; +} else { +this.cx = this.vertexColixes[polygon[0]]; +}color = JU.C.getArgb(this.cx); +if (fill) { +if (iB == iC) { +if (iA == iB) this.outputPoint(iA, color); + else this.outputEdge(iA, iB, color); +bsDone.set(i); +} else { +if (this.imesh.colorsExplicit) color = polygon[4]; +this.outputTriangle(iA, iB, iC, color, 999); +}} else if (!bsDone.get(i)) { +var check = 7 & polygon[3]; +if (check == 0) continue; +if (this.noColor) { +} else if (this.colorArrayed) { +color = JU.C.getArgb(this.imesh.fillTriangles ? 4 : this.contourColixes[polygon[4] % this.contourColixes.length]); +}this.outputTriangle(iA, iB, iC, color, check); +}} +}, "~B,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "checkPoints", +function(bsVert){ +var slabPoints = ((this.imesh.pc == 0) && this.selectedPolyOnly); +var incr = this.imesh.vertexIncrement; +for (var i = (!this.imesh.hasGridPoints || this.imesh.firstRealVertex < 0 ? 0 : this.imesh.firstRealVertex); i < this.vertexCount; i += incr) { +if (this.vertexValues != null && Float.isNaN(this.vertexValues[i]) || this.imesh.jvxlData.thisSet != null && !this.imesh.jvxlData.thisSet.get(this.imesh.vertexSets[i]) || !this.imesh.isColorSolid || this.haveBsDisplay && !this.imesh.bsDisplay.get(i) || slabPoints && !this.bsPolygons.get(i)) continue; +bsVert.set(i); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "checkTriangles", +function(fill, bsPoly, bsVert){ +this.setup(fill); +for (var i = this.imesh.pc; --i >= 0; ) { +var polygon = this.polygonIndexes[i]; +if (polygon == null || this.selectedPolyOnly && !this.bsPolygons.get(i)) continue; +var iA = polygon[0]; +if (this.imesh.jvxlData.thisSet != null && this.imesh.vertexSets != null && !this.imesh.jvxlData.thisSet.get(this.imesh.vertexSets[iA])) continue; +var iB = polygon[1]; +var iC = polygon[2]; +if (this.haveBsDisplay && (!this.imesh.bsDisplay.get(iA) || !this.imesh.bsDisplay.get(iB) || !this.imesh.bsDisplay.get(iC))) continue; +if (this.colorSolid && this.colorArrayed && i < this.imesh.pcs.length && this.imesh.pcs[i] == 0) continue; +bsPoly.set(i); +bsVert.set(iA); +bsVert.set(iB); +bsVert.set(iC); +} +}, "~B,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "setup", +function(fill){ +this.vertexCount = this.imesh.vc; +this.vertexValues = this.imesh.vvs; +this.polygonIndexes = this.imesh.pis; +this.cx = (!fill && this.imesh.meshColix != 0 ? this.imesh.meshColix : this.imesh.colix); +this.vertexColixes = (!fill && this.imesh.meshColix != 0 ? null : this.imesh.vcs); +this.colorSolid = (this.vertexColixes == null); +this.noColor = (this.vertexColixes == null || !fill && this.imesh.meshColix != 0); +this.colorArrayed = (this.colorSolid && this.imesh.pcs != null); +if (this.colorArrayed && !fill && this.imesh.fillTriangles) this.colorArrayed = false; +this.contourColixes = this.imesh.jvxlData.contourColixes; +this.haveBsDisplay = (this.imesh.bsDisplay != null); +this.selectedPolyOnly = (this.imesh.bsSlabDisplay != null); +this.bsPolygons = (this.selectedPolyOnly ? this.imesh.bsSlabDisplay : null); +}, "~B"); +Clazz.defineMethod(c$, "writePmeshHeader", +function(nV){ +this.oc = this.imesh.vwr.getOutputChannel(null, null); +if (this.isBinary) { +this.oc.writeByteAsInt(80); +this.oc.writeByteAsInt(77); +this.oc.writeByteAsInt(1); +this.oc.writeByteAsInt(0); +this.oc.writeInt(1); +this.oc.writeInt(nV); +this.oc.writeInt(-1); +for (var i = 0; i < 16; i++) this.oc.writeInt(0); + +} else { +this.oc.append("#JmolPmesh\n"); +}}, "~N"); +Clazz.defineMethod(c$, "outputInt", +function(i){ +if (this.isBinary) this.oc.writeInt(i); + else this.oc.append("" + i + "\n"); +}, "~N"); +Clazz.defineMethod(c$, "outputPoint", +function(iA, color){ +this.outputInt(-1); +this.outputInt(iA); +this.outputInt(color); +return 1; +}, "~N,~N"); +Clazz.defineMethod(c$, "outputXYZ", +function(pt){ +if (this.isBinary) { +this.oc.writeFloat(pt.x); +this.oc.writeFloat(pt.y); +this.oc.writeFloat(pt.z); +} else { +this.oc.append(pt.x + " " + pt.y + " " + pt.z + "\n"); +}}, "JU.T3"); +Clazz.defineMethod(c$, "outputEdge", +function(iA, iB, color){ +this.outputInt(-2); +this.outputInt(iA); +this.outputInt(iB); +this.outputInt(color); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "outputTriangle", +function(iA, iB, iC, color, check){ +if (check == 999) { +this.outputInt(-3); +this.outputInt(iA); +this.outputInt(iB); +this.outputInt(iC); +this.outputInt(color); +return; +}if ((check & 1) != 0) this.outputEdge(iA, iB, color); +if ((check & 2) != 0) this.outputEdge(iB, iC, color); +if ((check & 4) != 0) this.outputEdge(iC, iA, color); +}, "~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Plot3D.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Plot3D.js new file mode 100755 index 000000000000..e2f2cdb0b5f2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Plot3D.js @@ -0,0 +1,10 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(["J.shapesurface.Pmesh"], "J.shapesurface.Plot3D", null, function(){ +var c$ = Clazz.declareType(J.shapesurface, "Plot3D", J.shapesurface.Pmesh); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapesurface.Plot3D, "initShape", []); +this.myType = "plot3d"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Pmesh.js b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Pmesh.js new file mode 100755 index 000000000000..b43b162f64b5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/shapesurface/Pmesh.js @@ -0,0 +1,75 @@ +Clazz.declarePackage("J.shapesurface"); +Clazz.load(["J.shapesurface.Isosurface"], "J.shapesurface.Pmesh", ["java.util.Hashtable", "JU.Measure", "$.P3", "$.V3"], function(){ +var c$ = Clazz.declareType(J.shapesurface, "Pmesh", J.shapesurface.Isosurface); +Clazz.defineMethod(c$, "initShape", +function(){ +Clazz.superCall(this, J.shapesurface.Pmesh, "initShape", []); +this.myType = "pmesh"; +}); +Clazz.overrideMethod(c$, "getProperty", +function(property, index){ +if (property === "face") { +var m = this.currentMesh; +if (index >= 0 && (index >= this.meshCount || (m = this.meshes[index]) == null)) return null; +return m == null ? null : this.getFace(m); +}return this.getPropI(property, index); +}, "~S,~N"); +Clazz.defineMethod(c$, "getFace", +function(m){ +if (m.haveQuads) return null; +var vs = m.vs; +var htEdges = new java.util.Hashtable(); +var v1 = 0; +var v0; +var v01; +var n = 0; +var edge0 = null; +for (var i = m.pc; --i >= 0; ) { +if (m.bsSlabDisplay != null && !m.bsSlabDisplay.get(i)) continue; +var triangle = m.pis[i]; +var mask = triangle[3]; +for (var j = 0; j < 3; j++) if ((mask & (1 << j)) != 0) { +v1 = triangle[j]; +var v2 = triangle[(j + 1) % 3]; +var key = v2 + "_" + v1; +if (htEdges.containsKey(key)) { +htEdges.remove(key); +n--; +} else { +n++; +edge0 = Clazz.newIntArray(-1, [v1, v2]); +htEdges.put(v1 + "_" + v2, edge0); +htEdges.put("" + v1, edge0); +}} +} +if (n == 0) return null; +var a = Clazz.newIntArray (n, 2, 0); +a[0] = edge0; +var vectorBA = new JU.V3(); +var vectorBC = new JU.V3(); +v01 = v0 = a[0][0]; +v1 = a[0][1]; +var pt = 0; +var min = 0.0001; +while (v1 != v0) { +var edge = htEdges.get("" + v1); +if (edge == null) break; +var angle = JU.Measure.computeAngle(vs[v01], vs[v1], vs[edge[1]], vectorBA, vectorBC, true); +var d2 = vs[v1].distanceSquared(vs[edge[1]]); +v1 = edge[1]; +if (angle < 179 && d2 > min) { +a[++pt] = edge; +v01 = edge[0]; +} else { +a[pt][1] = v1; +}} +if (JU.Measure.computeAngle(vs[v01], vs[v1], vs[a[0][1]], vectorBA, vectorBC, true) >= 179 || vs[v1].distanceSquared(vs[a[0][1]]) <= min) { +a[0][0] = a[pt--][0]; +}n = (pt < 0 ? 1 : ++pt); +var pts = new Array(n); +for (var i = 0; i < n; i++) pts[i] = JU.P3.newP(vs[a[i][0]]); + +return pts; +}, "J.shape.Mesh"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/thread/AnimationThread.js b/config/plugins/visualizations/jmol/static/j2s/J/thread/AnimationThread.js new file mode 100755 index 000000000000..4b85d0aa2424 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/thread/AnimationThread.js @@ -0,0 +1,91 @@ +Clazz.declarePackage("J.thread"); +Clazz.load(["J.thread.JmolThread"], "J.thread.AnimationThread", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.am = null; +this.framePointer1 = 0; +this.framePointer2 = 0; +this.intThread = 0; +this.isFirst = false; +Clazz.instantialize(this, arguments);}, J.thread, "AnimationThread", J.thread.JmolThread); +Clazz.overrideMethod(c$, "setManager", +function(manager, vwr, params){ +var options = params; +this.framePointer1 = options[0]; +this.framePointer2 = options[1]; +this.intThread = options[2]; +this.am = manager; +this.setViewer(vwr, "AnimationThread"); +vwr.startHoverWatcher(false); +return 0; +}, "~O,JV.Viewer,~O"); +Clazz.defineMethod(c$, "interrupt", +function(){ +if (this.stopped) return; +this.stopped = true; +if (JU.Logger.debugging) JU.Logger.debug("animation thread interrupted!"); +try { +this.am.setAnimationOn(false); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +Clazz.superCall(this, J.thread.AnimationThread, "interrupt", []); +}); +Clazz.overrideMethod(c$, "run1", +function(mode){ +while (true) { +switch (mode) { +case -1: +if (JU.Logger.debugging) JU.Logger.debug("animation thread " + this.intThread + " running"); +this.vwr.requestRepaintAndWait("animationThread"); +this.vwr.startHoverWatcher(false); +this.haveReference = true; +this.isFirst = true; +mode = 0; +break; +case 0: +if (!this.am.animationOn || this.checkInterrupted(this.am.animationThread)) { +mode = -2; +break; +}if (this.am.currentFrameIs(this.framePointer1)) { +this.targetTime += this.am.firstFrameDelayMs; +this.sleepTime = (this.targetTime - (System.currentTimeMillis() - this.startTime)); +if (!this.runSleep(this.sleepTime, 1)) return; +}mode = 1; +break; +case 1: +if (this.am.currentFrameIs(this.framePointer2)) { +this.targetTime += this.am.lastFrameDelayMs; +this.sleepTime = (this.targetTime - (System.currentTimeMillis() - this.startTime)); +if (!this.runSleep(this.sleepTime, 2)) return; +}mode = 2; +break; +case 2: +if (!this.isFirst && this.am.currentIsLast() && !this.am.setAnimationNext()) { +mode = -2; +break; +}this.isFirst = false; +this.targetTime += Clazz.floatToInt((1000 / this.am.animationFps) + this.vwr.ms.getFrameDelayMs(this.am.cmi)); +mode = 3; +break; +case 3: +while (this.am.animationOn && !this.checkInterrupted(this.am.animationThread) && !this.vwr.getRefreshing()) { +if (!this.runSleep(10, 3)) return; +} +if (!this.vwr.tm.spinOn) this.vwr.refresh(1, "animationThread"); +this.sleepTime = (this.targetTime - (System.currentTimeMillis() - this.startTime)); +if (!this.runSleep(this.sleepTime, 0)) return; +mode = 0; +break; +case -2: +if (JU.Logger.debugging) JU.Logger.debug("animation thread " + this.intThread + " exiting"); +if (this.am.animationThread === this) this.am.stopThread(false); + else this.interrupt(); +return; +} +} +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/thread/HoverWatcherThread.js b/config/plugins/visualizations/jmol/static/j2s/J/thread/HoverWatcherThread.js new file mode 100755 index 000000000000..f961add29cc5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/thread/HoverWatcherThread.js @@ -0,0 +1,41 @@ +Clazz.declarePackage("J.thread"); +Clazz.load(["J.thread.JmolThread"], "J.thread.HoverWatcherThread", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.actionManager = null; +this.current = null; +this.moved = null; +this.hoverDelay = 0; +Clazz.instantialize(this, arguments);}, J.thread, "HoverWatcherThread", J.thread.JmolThread); +Clazz.makeConstructor(c$, +function(actionManager, current, moved, vwr){ +this.setViewer(vwr, "HoverWatcher"); +this.actionManager = actionManager; +this.current = current; +this.moved = moved; +this.start(); +}, "JV.ActionManager,JV.MouseState,JV.MouseState,JV.Viewer"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +if (!this.isJS) Thread.currentThread().setPriority(1); +mode = 0; +break; +case 0: +this.hoverDelay = this.vwr.getHoverDelay(); +if (this.stopped || this.hoverDelay <= 0 || !this.runSleep(this.hoverDelay, 1)) return; +mode = 1; +break; +case 1: +if (this.moved.is(this.current)) { +this.currentTime = System.currentTimeMillis(); +var howLong = (this.currentTime - this.moved.time); +if (howLong > (this.vwr.acm.zoomTrigger ? 100 : this.hoverDelay) && !this.stopped) { +this.actionManager.checkHover(); +}}mode = 0; +break; +} + +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/thread/JmolThread.js b/config/plugins/visualizations/jmol/static/j2s/J/thread/JmolThread.js new file mode 100755 index 000000000000..6ff5e56c5c99 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/thread/JmolThread.js @@ -0,0 +1,113 @@ +Clazz.declarePackage("J.thread"); +Clazz.load(["java.lang.Thread"], "J.thread.JmolThread", ["JU.Logger", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$name = "JmolThread"; +this.vwr = null; +this.eval = null; +this.sc = null; +this.haveReference = false; +this.hoverEnabled = false; +this.startTime = 0; +this.targetTime = 0; +this.lastRepaintTime = 0; +this.currentTime = 0; +this.sleepTime = 0; +this.isJS = false; +this.stopped = false; +this.isReset = false; +this.useTimeout = true; +this.junk = 0; +Clazz.instantialize(this, arguments);}, J.thread, "JmolThread", Thread); +Clazz.defineMethod(c$, "setManager", +function(manager, vwr, params){ +return 0; +}, "~O,JV.Viewer,~O"); +Clazz.defineMethod(c$, "setViewer", +function(vwr, name){ +this.setName(name); +this.$name = name + "_" + (++J.thread.JmolThread.threadIndex); +this.vwr = vwr; +this.isJS = vwr.isSingleThreaded; +}, "JV.Viewer,~S"); +Clazz.defineMethod(c$, "setEval", +function(eval){ +this.eval = eval; +this.sc = this.vwr.getEvalContextAndHoldQueue(eval); +if (this.sc != null) this.useTimeout = eval.getAllowJSThreads(); +}, "J.api.JmolScriptEvaluator"); +Clazz.defineMethod(c$, "resumeEval", +function(){ +if (this.eval == null || !this.isJS && !this.vwr.testAsync || !this.useTimeout) return; +this.sc.mustResumeEval = !this.stopped; +var eval = this.eval; +var sc = this.sc; +this.eval = null; +this.sc = null; +{ +setTimeout(function() { eval.resumeEval(sc); }, 1); +}}); +Clazz.overrideMethod(c$, "start", +function(){ +{ +this.run(); +}}); +Clazz.overrideMethod(c$, "run", +function(){ +this.startTime = System.currentTimeMillis(); +try { +this.run1(-1); +} catch (e$$) { +if (Clazz.exceptionOf(e$$,"InterruptedException")){ +var e = e$$; +{ +if (JU.Logger.debugging && !(Clazz.instanceOf(this,"J.thread.HoverWatcherThread"))) this.oops(e); +} +} else if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +this.oops(e); +} +} else { +throw e$$; +} +} +}); +Clazz.defineMethod(c$, "oops", +function(e){ +JU.Logger.debug(this.$name + " exception " + e); +if (!JV.Viewer.isJS || JV.Viewer.isSwingJS) e.printStackTrace(); +this.vwr.queueOnHold = false; +}, "Exception"); +Clazz.defineMethod(c$, "runSleep", +function(millis, runPtr){ +if (this.isJS && !this.useTimeout) { +return true; +}{ +var me = this; +setTimeout(function(){me.run1(runPtr)}, Math.max(millis, 0)); +return false; +}}, "~N,~N"); +Clazz.defineMethod(c$, "interrupt", +function(){ +this.stopped = true; +this.vwr.startHoverWatcher(true); +if (!this.isJS) Clazz.superCall(this, J.thread.JmolThread, "interrupt", []); +}); +Clazz.defineMethod(c$, "checkInterrupted", +function(ref){ +if (this.haveReference && (ref == null || !ref.$name.equals(this.$name))) return true; +{ +return this.stopped; +}}, "J.thread.JmolThread"); +Clazz.defineMethod(c$, "reset", +function(){ +this.isReset = true; +this.interrupt(); +}); +Clazz.defineMethod(c$, "toString", +function(){ +return Clazz.superCall(this, J.thread.JmolThread, "toString", []) + "[" + this.$name + "]"; +}); +c$.threadIndex = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/thread/MoveToThread.js b/config/plugins/visualizations/jmol/static/j2s/J/thread/MoveToThread.js new file mode 100755 index 000000000000..4685ec638bcf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/thread/MoveToThread.js @@ -0,0 +1,278 @@ +Clazz.declarePackage("J.thread"); +Clazz.load(["J.thread.JmolThread"], "J.thread.MoveToThread", ["JU.A4", "$.M3", "$.P3", "$.V3"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isMove = false; +this.aaStepCenter = null; +this.aaStepNavCenter = null; +this.aaStep = null; +this.aaTotal = null; +this.matrixStart = null; +this.matrixStartInv = null; +this.matrixStep = null; +this.matrixEnd = null; +this.center = null; +this.navCenter = null; +this.ptMoveToCenter = null; +this.zoom = null; +this.xTrans = null; +this.yTrans = null; +this.xNav = null; +this.yNav = null; +this.navDepth = null; +this.cameraDepth = null; +this.cameraX = null; +this.cameraY = null; +this.rotationRadius = null; +this.pixelScale = null; +this.fps = 0; +this.frameTimeMillis = 0; +this.doEndMove = false; +this.fStep = 0; +this.transformManager = null; +this.floatSecondsTotal = 0; +this.totalSteps = 0; +this.iStep = 0; +this.timePerStep = 0; +this.radiansXStep = 0; +this.radiansYStep = 0; +this.radiansZStep = 0; +this.dRot = null; +this.dTrans = null; +this.dZoom = 0; +this.dSlab = 0; +this.zoomPercent0 = 0; +this.slab = 0; +this.transX = 0; +this.transY = 0; +if (!Clazz.isClassDefined("J.thread.MoveToThread.Slider")) { +J.thread.MoveToThread.$MoveToThread$Slider$ (); +} +Clazz.instantialize(this, arguments);}, J.thread, "MoveToThread", J.thread.JmolThread); +Clazz.makeConstructor(c$, +function(){ +this.aaStepCenter = new JU.V3(); +this.aaStepNavCenter = new JU.V3(); +this.aaStep = new JU.A4(); +this.aaTotal = new JU.A4(); +this.matrixStart = new JU.M3(); +this.matrixStartInv = new JU.M3(); +this.matrixStep = new JU.M3(); +this.matrixEnd = new JU.M3(); +}); +Clazz.overrideMethod(c$, "setManager", +function(manager, vwr, params){ +var options = params; +this.isMove = (Clazz.instanceOf(options[0],"JU.V3")); +this.setViewer(vwr, (this.isMove ? "moveThread" : "MoveToThread")); +this.transformManager = manager; +return (this.isMove ? this.setManagerMove(options) : this.setManagerMoveTo(options)); +}, "~O,JV.Viewer,~O"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +if (this.isMove) this.run1Move(mode); + else this.run1MoveTo(mode); +}, "~N"); +Clazz.defineMethod(c$, "interrupt", +function(){ +this.doEndMove = false; +Clazz.superCall(this, J.thread.MoveToThread, "interrupt", []); +}); +Clazz.defineMethod(c$, "setManagerMove", +function(options){ +this.dRot = options[0]; +this.dTrans = options[1]; +var f = options[2]; +this.dZoom = f[0]; +this.dSlab = f[1]; +this.floatSecondsTotal = f[2]; +var fps = Clazz.floatToInt(f[3]); +this.slab = this.transformManager.getSlabPercentSetting(); +this.transX = this.transformManager.getTranslationXPercent(); +this.transY = this.transformManager.getTranslationYPercent(); +this.timePerStep = Clazz.doubleToInt(1000 / fps); +this.totalSteps = Clazz.floatToInt(fps * this.floatSecondsTotal); +if (this.totalSteps <= 0) this.totalSteps = 1; +var radiansPerDegreePerStep = (1 / 57.29577951308232 / this.totalSteps); +this.radiansXStep = radiansPerDegreePerStep * this.dRot.x; +this.radiansYStep = radiansPerDegreePerStep * this.dRot.y; +this.radiansZStep = radiansPerDegreePerStep * this.dRot.z; +this.zoomPercent0 = this.transformManager.zmPct; +this.iStep = 0; +return this.totalSteps; +}, "~A"); +Clazz.defineMethod(c$, "setManagerMoveTo", +function(options){ +this.center = options[0]; +this.matrixEnd.setM3(options[1]); +var f = options[3]; +this.ptMoveToCenter = (this.center == null ? this.transformManager.fixedRotationCenter : this.center); +this.floatSecondsTotal = f[0]; +this.zoom = this.newSlider(this.transformManager.zmPct, f[1]); +this.xTrans = this.newSlider(this.transformManager.getTranslationXPercent(), f[2]); +this.yTrans = this.newSlider(this.transformManager.getTranslationYPercent(), f[3]); +this.rotationRadius = this.newSlider(this.transformManager.modelRadius, (this.center == null || Float.isNaN(f[4]) ? this.transformManager.modelRadius : f[4] <= 0 ? this.vwr.ms.calcRotationRadius(this.vwr.am.cmi, this.center, false) : f[4])); +this.pixelScale = this.newSlider(this.transformManager.scaleDefaultPixelsPerAngstrom, f[5]); +if (f[6] != 0) { +this.navCenter = options[2]; +this.navDepth = this.newSlider(this.transformManager.navigationDepthPercent, f[6]); +this.xNav = this.newSlider(this.transformManager.getNavigationOffsetPercent('X'), f[7]); +this.yNav = this.newSlider(this.transformManager.getNavigationOffsetPercent('Y'), f[8]); +}this.cameraDepth = this.newSlider(this.transformManager.getCameraDepth(), f[9]); +this.cameraX = this.newSlider(this.transformManager.camera.x, f[10]); +this.cameraY = this.newSlider(this.transformManager.camera.y, f[11]); +this.transformManager.getRotation(this.matrixStart); +this.matrixStartInv.invertM(this.matrixStart); +this.matrixStep.mul2(this.matrixEnd, this.matrixStartInv); +this.aaTotal.setM(this.matrixStep); +this.fps = 30; +this.totalSteps = Clazz.floatToInt(this.floatSecondsTotal * this.fps); +this.frameTimeMillis = Clazz.doubleToInt(1000 / this.fps); +this.targetTime = System.currentTimeMillis(); +this.aaStepCenter.sub2(this.ptMoveToCenter, this.transformManager.fixedRotationCenter); +this.aaStepCenter.scale(1 / this.totalSteps); +if (this.navCenter != null && this.transformManager.mode == 1) { +this.aaStepNavCenter.sub2(this.navCenter, this.transformManager.navigationCenter); +this.aaStepNavCenter.scale(1 / this.totalSteps); +}this.iStep = 0; +return this.totalSteps; +}, "~A"); +Clazz.defineMethod(c$, "newSlider", +function(start, value){ +return (Float.isNaN(value) || value == 3.4028235E38 ? null : Clazz.innerTypeInstance(J.thread.MoveToThread.Slider, this, null, start, value)); +}, "~N,~N"); +Clazz.defineMethod(c$, "run1Move", +function(mode){ +while (true) switch (mode) { +case -1: +if (this.floatSecondsTotal > 0) this.vwr.setInMotion(true); +mode = 0; +break; +case 0: +if (this.stopped || this.iStep >= this.totalSteps) { +mode = -2; +break; +}this.iStep++; +if (this.dRot.x != 0) this.transformManager.rotateXRadians(this.radiansXStep, null); +if (this.dRot.y != 0) this.transformManager.rotateYRadians(this.radiansYStep, null); +if (this.dRot.z != 0) this.transformManager.rotateZRadians(this.radiansZStep); +if (this.dZoom != 0) this.transformManager.zoomToPercent(this.zoomPercent0 + this.dZoom * this.iStep / this.totalSteps); +if (this.dTrans.x != 0) this.transformManager.translateToPercent('x', this.transX + this.dTrans.x * this.iStep / this.totalSteps); +if (this.dTrans.y != 0) this.transformManager.translateToPercent('y', this.transY + this.dTrans.y * this.iStep / this.totalSteps); +if (this.dTrans.z != 0) this.transformManager.translateToPercent('z', this.dTrans.z * this.iStep / this.totalSteps); +if (this.dSlab != 0) this.transformManager.slabToPercent(Clazz.doubleToInt(Math.floor(this.slab + this.dSlab * this.iStep / this.totalSteps))); +if (this.iStep == this.totalSteps) { +mode = -2; +break; +}var timeSpent = (System.currentTimeMillis() - this.startTime); +var timeAllowed = this.iStep * this.timePerStep; +if (timeSpent < timeAllowed) { +this.vwr.requestRepaintAndWait("moveThread"); +if (!this.isJS && !this.vwr.isScriptExecuting()) { +mode = -2; +break; +}timeSpent = (System.currentTimeMillis() - this.startTime); +this.sleepTime = timeAllowed - timeSpent; +if (!this.runSleep(this.sleepTime, 0)) return; +}break; +case -2: +if (this.floatSecondsTotal > 0) this.vwr.setInMotion(false); +this.resumeEval(); +return; +} + +}, "~N"); +Clazz.defineMethod(c$, "run1MoveTo", +function(mode){ +while (true) switch (mode) { +case -1: +if (this.totalSteps > 0) this.vwr.setInMotion(true); +mode = 0; +break; +case 0: +if (this.stopped || ++this.iStep >= this.totalSteps) { +mode = -2; +break; +}this.doStepTransform(); +this.doEndMove = true; +this.targetTime += this.frameTimeMillis; +this.currentTime = System.currentTimeMillis(); +var doRender = (this.currentTime < this.targetTime); +if (!doRender && this.isJS) { +this.targetTime = this.currentTime; +doRender = true; +}if (doRender) this.vwr.requestRepaintAndWait("movetoThread"); +if (this.transformManager.movetoThread == null || !this.transformManager.movetoThread.$name.equals(this.$name) || !this.isJS && this.eval != null && !this.vwr.isScriptExecuting()) { +this.stopped = true; +break; +}this.currentTime = System.currentTimeMillis(); +var sleepTime = (this.targetTime - this.currentTime); +if (!this.runSleep(sleepTime, 0)) return; +mode = 0; +break; +case -2: +if (this.totalSteps <= 0 || this.doEndMove && !this.stopped) this.doFinalTransform(); +if (this.totalSteps > 0) this.vwr.setInMotion(false); +this.vwr.moveUpdate(this.floatSecondsTotal); +if (this.transformManager.movetoThread != null && !this.stopped) { +this.transformManager.movetoThread = null; +this.vwr.finalizeTransformParameters(); +}this.resumeEval(); +return; +} + +}, "~N"); +Clazz.defineMethod(c$, "doStepTransform", +function(){ +if (!Float.isNaN(this.matrixEnd.m00)) { +this.transformManager.getRotation(this.matrixStart); +this.matrixStartInv.invertM(this.matrixStart); +this.matrixStep.mul2(this.matrixEnd, this.matrixStartInv); +this.aaTotal.setM(this.matrixStep); +this.aaStep.setAA(this.aaTotal); +this.aaStep.angle /= (this.totalSteps - this.iStep); +if (this.aaStep.angle == 0) this.matrixStep.setScale(1); + else this.matrixStep.setAA(this.aaStep); +this.matrixStep.mul(this.matrixStart); +}this.fStep = this.iStep / (this.totalSteps - 1); +if (this.center != null) this.transformManager.fixedRotationCenter.add(this.aaStepCenter); +if (this.navCenter != null && this.transformManager.mode == 1) { +var pt = JU.P3.newP(this.transformManager.navigationCenter); +pt.add(this.aaStepNavCenter); +this.transformManager.setNavigatePt(pt); +}this.setValues(this.matrixStep, null, null); +}); +Clazz.defineMethod(c$, "doFinalTransform", +function(){ +this.fStep = -1; +this.setValues(this.matrixEnd, this.center, this.navCenter); +}); +Clazz.defineMethod(c$, "setValues", +function(m, center, navCenter){ +this.transformManager.setAll(center, m, navCenter, this.getVal(this.zoom), this.getVal(this.xTrans), this.getVal(this.yTrans), this.getVal(this.rotationRadius), this.getVal(this.pixelScale), this.getVal(this.navDepth), this.getVal(this.xNav), this.getVal(this.yNav), this.getVal(this.cameraDepth), this.getVal(this.cameraX), this.getVal(this.cameraY)); +}, "JU.M3,JU.P3,JU.P3"); +Clazz.defineMethod(c$, "getVal", +function(s){ +return (s == null ? NaN : s.getVal(this.fStep)); +}, "J.thread.MoveToThread.Slider"); +c$.$MoveToThread$Slider$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.start = 0; +this.delta = 0; +this.value = 0; +Clazz.instantialize(this, arguments);}, J.thread.MoveToThread, "Slider", null); +Clazz.makeConstructor(c$, +function(start, value){ +this.start = start; +this.value = value; +this.delta = value - start; +}, "~N,~N"); +Clazz.defineMethod(c$, "getVal", +function(fStep){ +return (fStep < 0 ? this.value : this.start + fStep * this.delta); +}, "~N"); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/thread/SpinThread.js b/config/plugins/visualizations/jmol/static/j2s/J/thread/SpinThread.js new file mode 100755 index 000000000000..b58c086079c1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/thread/SpinThread.js @@ -0,0 +1,131 @@ +Clazz.declarePackage("J.thread"); +Clazz.load(["J.thread.JmolThread"], "J.thread.SpinThread", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.transformManager = null; +this.endDegrees = 0; +this.endPositions = null; +this.dihedralList = null; +this.nDegrees = 0; +this.bsAtoms = null; +this.isNav = false; +this.isGesture = false; +this.myFps = 0; +this.angle = 0; +this.haveNotified = false; +this.index = 0; +this.bsBranches = null; +this.isDone = false; +this.m4 = null; +Clazz.instantialize(this, arguments);}, J.thread, "SpinThread", J.thread.JmolThread); +Clazz.overrideMethod(c$, "setManager", +function(manager, vwr, params){ +this.transformManager = manager; +this.setViewer(vwr, "SpinThread"); +var options = params; +if (options == null) { +this.isNav = true; +} else { +this.endDegrees = (options[0]).floatValue(); +this.endPositions = options[1]; +this.dihedralList = options[2]; +if (this.dihedralList != null) this.bsBranches = vwr.ms.getBsBranches(this.dihedralList); +this.bsAtoms = options[3]; +this.isGesture = (options[4] != null); +}return 0; +}, "~O,JV.Viewer,~O"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +this.myFps = (this.isNav ? this.transformManager.navFps : this.transformManager.spinFps); +this.vwr.g.setB(this.isNav ? "_navigating" : "_spinning", true); +this.haveReference = true; +this.vwr.startHoverWatcher(false); +mode = 0; +break; +case 0: +if (this.isReset || this.checkInterrupted(this.transformManager.spinThread)) { +mode = -2; +break; +}if (this.isNav && this.myFps != this.transformManager.navFps) { +this.myFps = this.transformManager.navFps; +this.index = 0; +this.startTime = System.currentTimeMillis(); +} else if (!this.isNav && this.myFps != this.transformManager.spinFps && this.bsAtoms == null) { +this.myFps = this.transformManager.spinFps; +this.index = 0; +this.startTime = System.currentTimeMillis(); +}if (this.myFps == 0 || !(this.isNav ? this.transformManager.navOn : this.transformManager.spinOn)) { +mode = -2; +break; +}var refreshNeeded = (this.endDegrees >= 1e10 ? true : this.isNav ? this.transformManager.navX != 0 || this.transformManager.navY != 0 || this.transformManager.navZ != 0 : this.transformManager.isSpinInternal && this.transformManager.internalRotationAxis.angle != 0 || this.transformManager.isSpinFixed && this.transformManager.fixedRotationAxis.angle != 0 || !this.transformManager.isSpinFixed && !this.transformManager.isSpinInternal && (this.transformManager.spinX != 0 || this.transformManager.spinY != 0 || this.transformManager.spinZ != 0)); +this.targetTime = Clazz.floatToLong(++this.index * 1000 / this.myFps); +this.currentTime = System.currentTimeMillis() - this.startTime; +this.sleepTime = (this.targetTime - this.currentTime); +if (this.sleepTime < 0) { +if (!this.haveNotified) JU.Logger.info("spinFPS is set too fast (" + this.myFps + ") -- can't keep up!"); +this.haveNotified = true; +this.startTime -= this.sleepTime; +this.sleepTime = 0; +}var isInMotion = (this.bsAtoms == null && this.vwr.getInMotion(false)); +if (isInMotion) { +if (this.isGesture) { +mode = -2; +break; +}this.sleepTime += 1000; +}if (refreshNeeded && !isInMotion && (this.transformManager.spinOn || this.transformManager.navOn)) this.doTransform(); +mode = 1; +break; +case 1: +while (!this.checkInterrupted(this.transformManager.spinThread) && !this.vwr.getRefreshing()) if (!this.runSleep(10, 1)) return; + +if (this.bsAtoms != null || this.vwr.g.waitForMoveTo && this.endDegrees != 3.4028235E38) this.vwr.requestRepaintAndWait("spin thread"); + else this.vwr.refresh(1, "SpinThread"); +if (this.endDegrees >= 1e10 ? this.nDegrees / this.endDegrees > 0.99 : !this.isNav && this.endDegrees >= 0 ? this.nDegrees >= this.endDegrees - 0.001 : -this.nDegrees <= this.endDegrees + 0.001) { +this.isDone = true; +this.transformManager.setSpinOff(); +}if (!this.runSleep(this.sleepTime, 0)) return; +mode = 0; +break; +case -2: +if (this.dihedralList != null) { +this.vwr.setDihedrals(this.dihedralList, this.bsBranches, 0); +} else if (this.bsAtoms != null && this.endPositions != null) { +this.vwr.setAtomCoords(this.bsAtoms, 1145047049, this.endPositions); +this.bsAtoms = null; +this.endPositions = null; +}if (!this.isReset) { +this.transformManager.setSpinOff(); +this.vwr.startHoverWatcher(true); +}this.stopped = !this.isDone; +this.resumeEval(); +this.stopped = true; +return; +} + +}, "~N"); +Clazz.defineMethod(c$, "doTransform", +function(){ +if (this.dihedralList != null) { +var f = 1 / this.myFps / this.endDegrees; +this.vwr.setDihedrals(this.dihedralList, this.bsBranches, f); +this.nDegrees += 1 / this.myFps; +} else if (this.isNav) { +this.transformManager.setNavigationOffsetRelative(); +} else if (this.transformManager.isSpinInternal || this.transformManager.isSpinFixed) { +this.angle = (this.transformManager.isSpinInternal ? this.transformManager.internalRotationAxis : this.transformManager.fixedRotationAxis).angle / this.myFps; +if (this.transformManager.isSpinInternal) { +this.transformManager.rotateAxisAngleRadiansInternal(this.angle, this.bsAtoms, this.m4, false); +} else { +this.transformManager.rotateAxisAngleRadiansFixed(this.angle, this.bsAtoms); +}this.nDegrees += Math.abs(this.angle * 57.29577951308232); +} else { +if (this.transformManager.spinX != 0) { +this.transformManager.rotateXRadians((this.transformManager.spinX * 0.017453292519943295 / this.myFps), null); +}if (this.transformManager.spinY != 0) { +this.transformManager.rotateYRadians((this.transformManager.spinY * 0.017453292519943295 / this.myFps), null); +}if (this.transformManager.spinZ != 0) { +this.transformManager.rotateZRadians((this.transformManager.spinZ * 0.017453292519943295 / this.myFps)); +}}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/thread/TimeoutThread.js b/config/plugins/visualizations/jmol/static/j2s/J/thread/TimeoutThread.js new file mode 100755 index 000000000000..bb3f3d66065d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/thread/TimeoutThread.js @@ -0,0 +1,100 @@ +Clazz.declarePackage("J.thread"); +Clazz.load(["J.thread.JmolThread"], "J.thread.TimeoutThread", ["JU.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.script = null; +this.status = 0; +this.triggered = true; +Clazz.instantialize(this, arguments);}, J.thread, "TimeoutThread", J.thread.JmolThread); +Clazz.makeConstructor(c$, +function(vwr, name, ms, script){ +this.setViewer(vwr, name); +this.$name = name; +this.set(ms, script); +}, "JV.Viewer,~S,~N,~S"); +Clazz.defineMethod(c$, "set", +function(ms, script){ +this.sleepTime = ms; +if (script != null) this.script = script; +}, "~N,~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "timeout name=" + this.$name + " executions=" + this.status + " mSec=" + this.sleepTime + " secRemaining=" + (this.targetTime - System.currentTimeMillis()) / 1000 + " script=" + this.script; +}); +Clazz.overrideMethod(c$, "run1", +function(mode){ +while (true) { +switch (mode) { +case -1: +if (!this.isJS) Thread.currentThread().setPriority(1); +this.targetTime = System.currentTimeMillis() + Math.abs(this.sleepTime); +mode = 0; +break; +case 0: +if (this.checkInterrupted(null) || this.script == null || this.script.length == 0) return; +if (!this.runSleep(26, 1)) return; +mode = 1; +break; +case 1: +mode = (System.currentTimeMillis() < this.targetTime ? 0 : 2); +break; +case 2: +this.currentTime = System.currentTimeMillis(); +if (this.vwr.timeouts.get(this.$name) == null) return; +this.status++; +var continuing = (this.sleepTime < 0); +if (continuing) this.targetTime = System.currentTimeMillis() + Math.abs(this.sleepTime); + else this.vwr.timeouts.remove(this.$name); +if (this.triggered) { +this.triggered = false; +if (this.$name.equals("_SET_IN_MOTION_")) { +this.vwr.checkInMotion(2); +} else { +this.vwr.evalStringQuiet((continuing ? this.script + ";\ntimeout ID \"" + this.$name + "\";" : this.script)); +}}mode = (continuing ? 0 : -2); +break; +case -2: +this.vwr.timeouts.remove(this.$name); +return; +} +} +}, "~N"); +c$.clear = Clazz.defineMethod(c$, "clear", +function(timeouts){ +for (var o, $o = timeouts.values().iterator (); $o.hasNext()&& ((o = $o.next ()) || true);) { +var t = o; +if (!t.script.equals("exitJmol")) t.interrupt(); +} +timeouts.clear(); +}, "java.util.Map"); +c$.setTimeout = Clazz.defineMethod(c$, "setTimeout", +function(vwr, timeouts, name, mSec, script){ +var t = timeouts.get(name); +if (mSec == 0) { +if (t != null) { +t.interrupt(); +timeouts.remove(name); +}return; +}if (t != null) { +t.set(mSec, script); +return; +}t = new J.thread.TimeoutThread(vwr, name, mSec, script); +timeouts.put(name, t); +t.start(); +}, "JV.Viewer,java.util.Map,~S,~N,~S"); +c$.trigger = Clazz.defineMethod(c$, "trigger", +function(timeouts, name){ +var t = timeouts.get(name); +if (t != null) t.triggered = (t.sleepTime < 0); +}, "java.util.Map,~S"); +c$.showTimeout = Clazz.defineMethod(c$, "showTimeout", +function(timeouts, name){ +var sb = new JU.SB(); +if (timeouts != null) { +for (var o, $o = timeouts.values().iterator (); $o.hasNext()&& ((o = $o.next ()) || true);) { +var t = o; +if (name == null || t.$name.equalsIgnoreCase(name)) sb.append(t.toString()).append("\n"); +} +}return (sb.length() > 0 ? sb.toString() : ""); +}, "java.util.Map,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/thread/VibrationThread.js b/config/plugins/visualizations/jmol/static/j2s/J/thread/VibrationThread.js new file mode 100755 index 000000000000..81596389f473 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/thread/VibrationThread.js @@ -0,0 +1,46 @@ +Clazz.declarePackage("J.thread"); +Clazz.load(["J.thread.JmolThread"], "J.thread.VibrationThread", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.transformManager = null; +Clazz.instantialize(this, arguments);}, J.thread, "VibrationThread", J.thread.JmolThread); +Clazz.overrideMethod(c$, "setManager", +function(manager, vwr, options){ +this.transformManager = manager; +this.setViewer(vwr, "VibrationThread"); +return 0; +}, "~O,JV.Viewer,~O"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +var elapsed; +while (true) switch (mode) { +case -1: +this.lastRepaintTime = this.startTime = System.currentTimeMillis(); +this.vwr.startHoverWatcher(false); +this.haveReference = true; +mode = 0; +break; +case 0: +elapsed = (System.currentTimeMillis() - this.lastRepaintTime); +this.sleepTime = 33 - elapsed; +if (!this.runSleep(this.sleepTime, 1)) return; +mode = 1; +break; +case 1: +this.lastRepaintTime = System.currentTimeMillis(); +elapsed = (this.lastRepaintTime - this.startTime); +if (this.transformManager.vibrationPeriodMs == 0) { +mode = -2; +} else { +var t = (elapsed % this.transformManager.vibrationPeriodMs) / this.transformManager.vibrationPeriodMs; +this.transformManager.setVibrationT(t); +this.vwr.refresh(3, "VibrationThread"); +mode = (this.checkInterrupted(this.transformManager.vibrationThread) ? -2 : 0); +}break; +case -2: +this.vwr.startHoverWatcher(true); +return; +} + +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/JmolApplet.pot b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/JmolApplet.pot new file mode 100755 index 000000000000..c115b83405c2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/JmolApplet.pot @@ -0,0 +1,2563 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +msgid "&Close" +msgstr "" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ar.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ar.po new file mode 100755 index 000000000000..a53b704732b0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ar.po @@ -0,0 +1,2601 @@ +# Arabic translation for jmol +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Dilmi Fethi \n" +"Language-Team: Arabic \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "محرر الطرÙية لـ Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "أغلق" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "Ù…&ساعدة" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "ا&بحث..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&تحكم" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "رياضيات ودوال" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "احÙظ &الإعدادات" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&المزيد" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "المÙحرّر" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "الحالة" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Ù†ÙØ°" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "امسح المخرجات" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "امسح المدخلات" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "المحÙوظات" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "تحميل" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"اظغط CTRL+ENTER لإضاÙØ© سطر جديد أو ألصق نموذج البيانات ثم أنقر زر تحميل" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "المحرر النصي لـ jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "الطرÙية" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Ø¥Ùتح" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "الواجهة" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "برنامج نصّي" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "تحقق" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "خطوة" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "أوق٠مؤقتاً" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "إستأنÙ" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "أوقÙ" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "امسح" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "أغلق" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "مل٠أو رابط URL" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "نوع الصورة" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG جودة عادية ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG مظغوط ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG جودة عادية ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "نعم" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "لا" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "هل تريد الكتابة على الملÙØŸ {0}" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "تحذير" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "كل الملÙات" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "ألغ الأمر" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "أحبط المل٠المختار" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "التÙاصيل" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "الدليل" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Ø¥Ùتح المسار المحدد" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "سمات" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "عدل" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "مل٠عام" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "الإسم" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "إسم الملÙ:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "الحجم" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "الملÙات حسب النوع:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "النوع" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "المساعدة" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "تعليمات حول المل٠المختار" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "البداية" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "قائمة" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "نظرة أقرب" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "خطأ ÙÙŠ إنشاء مجلد" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "مجلد جديد" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "أنشء مجلداً جديداً" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Ø¥Ùتح الملÙات المحددة" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "إحÙظ" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "إحÙظ الملÙات المحددة" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "إحÙظ بالداخل:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "تحديث" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "تحديث قائمة الدليل" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "رÙع" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "ارÙع بمستوى واحد للأعلى" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "مواÙÙ‚" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "معاينة" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "إلحاق النماذج" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "كتلونية" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "تشيكية" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "دنماركية" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "ألمانية" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "يونانية" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "إنجليزية بريطانية" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "إنجليزية أمريكية" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "إسبانية" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "إستونية" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Ùرنسية" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "هنغارية" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "إيطالية" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "كورية" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "نرويجية بوكمال" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "هولندية" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "بولندية" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "برتغالية" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "برتغالية البرازيل" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "روسية" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "سلوÙينية" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "سويدية" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "تركية" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "أوكرانية" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "صينية مبسّطة" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "صينية تقليدية" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "لم يتم تحديد أي ذرة! لا شيئ Ø£Ùعله!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} ذرات سيتم تصغيرها إلى الحد الأدنى" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "لا شيء" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "الكل" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} معالج" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "الحجم الكلي {0} ميغابايت" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "الحجم الأقصى {0} ميغابايت" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "محرر الطرÙية لـ Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "لا ذرة محملة" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "ظبط" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "عنصر" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "لغات" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "حسب إسم" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "نموذج الإستعمالات" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "إختر ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "الذرات: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "المجموعات: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "البوليميرات: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "النماذج {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "عرض {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "القائمة الرئيسية" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "لا شيء" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "إستعرض المحددة Ùقط" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "إعكس التحديد" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "عرض" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "الواجهة" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "اليسار" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "اليمين" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "الأسÙÙ„" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "عودة" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "محاور" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "محاور" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "محاور" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "محاور" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "محاور" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "محاور" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "البروتين" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "الأساس المتبقي (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "الحمض المتبقي (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "النواة" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "الأسس" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "جميع المذيبات" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "الشكل" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "مخطط" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "الإطار السلكي" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "كرتون" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "تعقّب" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "ذرات" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "مقÙÙ„" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "روابط" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Ù…Ùعّل" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "حساب" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "التراكيب" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "صواريخ الكرتون" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "إهتزاز" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "المتجهات" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "التصوير المجسامي" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "علامات" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "بإسم الذرة" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "برقم الذرة" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "موقع العلامة على الذرة" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "توسيط" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "اليمين العلوي" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "اليمين السÙلي" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "اليسار العلوي" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "اليسار السÙلي" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "اللون" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "جزيئ" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "سلسلة" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "مجموعة" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "أسود" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "أبيض" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "سماوي" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "أحمر" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "برتقالي" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "أصÙر" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "أخضر" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "أزرق" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "نيلي" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "بنÙسجي" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "سالمون" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "أخضر زيتوني" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "رمادي" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "ذهبي" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "إجعله شبه Ø´ÙاÙ" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "الخلÙية" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "أسطح" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "محاور" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "الحجم" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "تكبير" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "تصغير" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Ù„Ù" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "حركة" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "تكرار" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "أوقÙ" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "محرر الطرÙية لـ Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Ø¥Ùتح الملÙات المحددة" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Ø¥Ùتح" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "خطأ ÙÙŠ الملÙ:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "تحميل بريمج Applet جارÙ" + +#~ msgid " {0} seconds" +#~ msgstr " {0} ثانية" + +#~ msgid "1 processor" +#~ msgstr "معالج واحد" + +#~ msgid "unknown processor count" +#~ msgstr "لا يوجد معالج" + +#~ msgid "{0} MB free" +#~ msgstr "المساحة الحرة {0} ميغابايت" + +#~ msgid "unknown maximum" +#~ msgstr "الحد الأقصى غير معلوم" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/bs.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/bs.po new file mode 100755 index 000000000000..36f15df91420 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/bs.po @@ -0,0 +1,2564 @@ +# Bosnian translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Kenan DerviÅ¡ević \n" +"Language-Team: Bosnian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +msgid "&Close" +msgstr "" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Pomoć" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Pretraga..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Naredbe" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&ViÅ¡e" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "UreÄ‘ivaÄ" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "IzvrÅ¡i" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historija" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "UÄitaj" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ca.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ca.po new file mode 100755 index 000000000000..9a26b9b9c047 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ca.po @@ -0,0 +1,2649 @@ +# Jmol application. +# Copyright (C) 1998-2004 The Jmol Development Team +# This file is distributed under the same license as the PACKAGE package. +# Toni Hermoso Pulido , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:44+0000\n" +"Last-Translator: Nicolas Vervelle \n" +"Language-Team: Catalan \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: SPAIN\n" +"X-Poedit-Language: Catalan\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Element?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Consola de scripts del Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Fitxer" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Tanca" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "A&juda" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "Ce&rca…" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Ordres" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Funcions matemàtiques" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Defineix els &paràmetres" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Més" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Estat" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Executa" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Neteja la sortida" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Neteja l'entrada" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historial" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Carrega" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"premeu Ctrl+Retorn per a una nova línia o enganxeu les dades del model i " +"premeu Carrega" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Els missatges apareixeran ací. Introduïu les ordres en el quadre a " +"continuació. Feu clic a l'element Ajuda del menú de la consola per a " +"consultar l'ajuda en línia, que es mostrarà en una nova finestra del " +"navegador." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Editor d'scripts del Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Consola" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Obre" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Frontal" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Comprova" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "A dalt" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Pas" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pausa" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Reprèn" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Atura" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Neteja" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Tanca" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Fitxer o URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Tipus d'imatge" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Qualitat del JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Compressió PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Qualitat del PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Sí" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "No" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Voleu sobreescriure el fitxer {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Avís" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Tots els fitxers" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Cancel·la" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Avorta el diàleg de selecció de fitxers" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Detalls" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Directori" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Obre el directori seleccionat" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atributs" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modificat" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Fitxer genèric" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nom" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nom del fitxer:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Mida" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Fitxers del tipus:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tipus" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Ajuda" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Ajuda del selector de fitxers" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Inici" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Llista" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Cerca a:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "S'ha produït un error en crear la carpeta nova" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Carpeta nova" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Crea una carpeta nova" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Obre el fitxer seleccionat" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Desa" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Desa el fitxer seleccionat" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Desa a:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Actualitza" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Actualitza la llista de directoris" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Amunt" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Un nivell amunt" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "D'acord" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Previsualització" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Afegeix els models" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "Dibuixos del PDB" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"Nota: Existeixen posicions pels hidrògens amida de l'esquelet però seran " +"ignorats. Les seues posicions s'aproximaran, tal i com es fa en l''anàlisi " +"DSSP típic.\n" +"Utilitzeu {0} si no voleu emprar aquest mètode.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"NOTA: Existeixen posicions per als hidrògens amida de l'esquelet i " +"s'utilitzaran. Els resultats poden diferir d'un mode significatiu dels d'una " +"anàlisi DSSP típica.\n" +"Feu servir {0} per ignorar dites posicions dels hidrògens.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Àrab" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturià" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Àzeri" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnià" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Català" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Txec" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danès" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Alemany" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Grec" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Anglès d'Austràlia" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Anglès britànic" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Anglès americà" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Espanyol" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonià" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Euskera" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finès" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Feroès" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francès" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisó" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Gallec" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Croat" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Hongarès" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armeni" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesi" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italià" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japonès" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javanès" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Coreà" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malai" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Noruec Bökmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Holandès" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occità" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polonès" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portuguès" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portuguès del Brasil" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Rus" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Eslovè" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbi" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Suec" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tàmil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turc" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uigur" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ucraïnès" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Uzbek" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Xinès simplificat" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Xinès tradicional" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "No es pot aconseguir la classe del camp de força {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "No s'ha seleccionat cap àtom -- no hi ha res per fer!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "Es minimitzaran {0} àtoms." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "no ha pogut configurar-se el camp de força {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "nou" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "desfés (CTRL + Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "refés (CTRL + Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "centre" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "afegeix els hidrògens" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimitza" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "corregeix els hidrògens i minimitza" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "neteja" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "desa l'arxiu" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "desa l'estat" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "inverteix l'estereoquímica de l'anell" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "suprimeix l'àtom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "arrossega per enllaçar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "arrossega l'àtom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "arrossega l'àtom (i minimitza)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "arrossega i minimitza la molècula (acoblament)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "augmenta la càrrega" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "disminueix la càrrega" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "suprimeix l'enllaç" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "únic" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "doble" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "triple" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "augmenta l'ordre" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "disminueix l'ordre" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "rota l'enllaç (Mayús. + arrossega)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "surt del modelat" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Grup espacial" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Cap" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Tot" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processadors" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB en total" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB com a màxim" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Consola de scripts del Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Manual del ratolí" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Traduccions" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistema" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "No s'ha carregat cap àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Configuracions" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Model/fotograma" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Idioma" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Per nom de residu" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Per HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Orbitals moleculars ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informació del model" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Selecciona ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Tots els {0} models" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configuracions ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Col·lecció de {0} models" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "àtoms: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "enllaços: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "grups: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "cadenes: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polímers: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Vista {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menú principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolècules" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolècula {0} ({1} àtoms)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "carrega la biomolècula {0} ({1} àtoms)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Cap" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Mostra només allò seleccionat" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Inverteix la selecció" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Visualització" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Frontal" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Esquerra" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Dreta" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Des de dalt" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Inferior" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Dorsal" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteïna" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Esquelet" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Cadenes laterals" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Residus polars" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Residus no polars" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Residus bàsics (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Residus acídics (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Residus sense càrrega" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nucleic" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "ADN" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "ARN" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Bases" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Parelles AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Parelles GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Parelles AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Estructura secundària" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Tots els «HETATM» del PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Tot el solvent" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Tota l'aigua" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Solvent no aquós" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM no aquosos" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Lligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Carbohidrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Cap dels anteriors" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Estil" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Esquema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Esferes CPK" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Boles i bastons" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Bastons" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Filferro" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Dibuix" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Traç" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Àtoms" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Desactiva" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Enllaços" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Activa" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Enllaços d'hidrogen" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Calcula" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Defineix els enllaços d'hidrogen de les cadenes laterals" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Defineix els ponts d'hidrogen de l'esquelet" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Enllaços disulfur" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Defineix els enllaços disulfur de les cadenes laterals" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Defineix els enllaços disulfur de l'esquelet" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Estructures" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Dibuix en coets" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Cintes" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Coets" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Cadenes" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibració" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vectors" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Espectres" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} píxels" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Escala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Estereogràfic" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Ulleres vermell+cian" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Ulleres vermell+blau" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Ulleres vermell+verd" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Visió guenya" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Visió paral·lela" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etiquetes" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Amb el símbol de l'element" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Amb el nom de l'àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Amb el número de l'àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Posició de l'etiqueta a l'àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Centrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Marge superior dret" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Marge inferior dret" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Marge superior esquerre" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Marge inferior esquerre" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Color" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Per esquema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Element (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Ubicació alternativa" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molècula" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Càrrega formal" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Càrrega parcial" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatura (relativa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatura (fixada)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminoàcid" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Cadena" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Grup" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monòmer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Segons la forma" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Hereta" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Negre" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Blanc" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cian" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Vermell" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Taronja" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Groc" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Verd" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Blau" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indi" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violeta" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmó" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Verd oliva" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Granat" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Gris" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Blau pissarra" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Daurat" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orquídia" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Fes opaca" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Fes translúcida" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Fons" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Superfícies" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Quadre" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Cel·la unitat" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Amplia" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Redueix" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Rotació" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Defineix la velocitat X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Defineix la velocitat Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Defineix la velocitat Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Defineix els FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animació" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Mode d'animació" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Reprodueix una vegada" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palíndrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "En bucle" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Reprodueix" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Atura" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Següent fotograma" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Anterior fotograma" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Rebobina" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Reproducció inversa" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Reinicia" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Amb doble clic es comencen i acaben totes les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Feu clic per a mesurar la distància" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Feu clic per a mesurar l'angle" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Feu clic per a mesurar la torsió (angle dihèdric)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Feu clic en dos àtoms per mostrar una seqüència en la consola" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Suprimeix les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Llista les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Unitats de distància en nanòmetres" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Unitats de distància en Angstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Unitats de distància en picòmetres" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Defineix la tria" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Centre" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identitat" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etiqueta" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Selecciona un àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Selecciona una cadena" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Selecciona un element" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "surt del modelat" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Selecciona un grup" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Selecciona una molècula" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Selecciona un lloc" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Mostra l'operació de simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Mostra" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Consola de scripts del Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Continguts del fitxer" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Capçalera del fitxer" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Dades JVXL de la isosuperfície" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Dades JVXL de l'orbital molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientació" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Grup espacial" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Estat actual" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Fitxer" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Torna a carregar" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Obre des del PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Obre el fitxer seleccionat" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Obre" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Carrega la cel·la unitat sencera" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Obre un script" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Desa una còpia de {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Desa l'script amb estat" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Desa l'script amb historial" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Exporta la imatge {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Desa-ho tot com un arxiu JMOL (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Desa la isosuperfície JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Exporta el model 3D {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Càlcul" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimitza l'estructura" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Eina de modelat" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Extreu-ne les dades MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Superfície puntejada" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "Superfície van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Superfície molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Superfície del solvent (sonda de {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Superfície accesible al solvent (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Torna a carregar {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Torna a carregar {0} + Mostra {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Recàrrega + polihedres" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Amaga" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Puntejat" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Amplada del píxel" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Amplada de l'àngstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Selecció dels halos" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Mostra els hidrògens" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Mostra les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspectiva en profunditat" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Colors del RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Quant a..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "ERROR del compilador de script: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "s'esperava un eix x y z" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "no es permet {0} amb el model de fons que es mostra" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "nombre incorrecte d'arguments" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Els índexs de Miller no poden ser tots zero." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "el color [R,G,B] és incorrecte" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "s'esperava un booleà" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "s'esperava un booleà o un nombre" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "s''esperava un boolea, un nombre o {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "No s'ha pogut posar el valor" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "s'esperava un color" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "cal un nom de color o de paleta (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "s'esperava una ordre" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "cal {x y z}, $name o (expressió atòmica)" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "l'objecte de dibuix no està definit" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "fi de l'ordre de l'script no esperat" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "s'esperava una (expressió atòmica) vàlida" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "s'esperava una (expressió atòmica) o un nombre enter" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "s'esperava un nom de fitxer" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "no s'ha trobat el fitxer" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "arguments incompatibles" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "arguments insuficients" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "s'esperava un enter" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "l''enter és fora del rang ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "l'argument no és vàlid" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ordre dels paràmetres no vàlid" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "s'esperava una paraula clau" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "no hi ha dades del coeficient d'OM disponibles" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "És necessari un índex d'OM d'1 a {0}" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "no hi ha dades de base/coeficient d'OM per a aquest fotograma" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "no hi ha dades d'ocupació d'OM disponibles" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Només hi ha un orbital molecular disponible en aquest fitxer" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} requereix que només es mostri un model" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} requereix que només s'haga carregat un model" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "No hi ha dades disponibles" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"No s'han llegit càrregues parcials al fitxer; el Jmol les necessita per a " +"dibuixar les dades d'EPM." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "No hi ha cap cel·la unitat" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "s'esperava un nombre" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "el número ha de ser ({0} o {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "el nombre decimal està fora de l''abast ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "s'esperava el nom de l'objecte després de '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"s''esperava un pla -- tres punts, unes expressions atòmiques, {0}, {1} o {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "s'esperava un nom de propietat" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "no s''ha trobat el grup espacial {0}." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "s'esperava una cadena entre cometes" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "s'esperava una cadena entre cometes o un identificador" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "s'han especificat massa punts de rotació" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "massa nivells de script" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "propietat de l'àtom no reconeguda" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "propietat de l'enllaç no reconeguda" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "ordre no reconegut" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "expressió d'execució no reconeguda" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "objecte no reconegut" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "paràmetre {0} no reconegut" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"paràmetre {0} a l'script d'estat del Jmol no reconegut (tot i així definit)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "paràmetre no reconegut per a SHOW -- utilitzeu {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "què s'ha d'escriure? {0} o {1} \"nomdefitxer\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "ERROR de l'script: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} àtoms suprimits" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} enllaços d'hidrogen" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "s'ha creat el fitxer '{0}'" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "el context no és vàlid per a {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "s'esperava { nombre nombre nombre }" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "s'esperava la fi d'una expressió" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "s'esperava un identificador o una especifació de residu" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "l'especificació d'àtom no és vàlida" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "l'especificació de cadena no és vàlida" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "el testimoni d''expressió no és vàlid: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "l'especificació de model no és vàlida" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "Manca END per a {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "s'esperava un nombre o nom de variable" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "s'esperava una especificació de residu (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "esperava {0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "no esperava {0}" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "no es reconeix el testimoni de l''expressió: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "fitxa no reconeguda: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "s'han afegit '{0}' puntals" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "s''han suprimit {0} connexions" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} enllaços nous; {1} de modificats" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Nota: en aquest contacte hi estan implicats uns quants models!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Feu clic per al menú…" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Miniaplicació de Jmol, versió {0} {1}.\n" +"\n" +"Un projecte d'OpenScience. \n" +"\n" +"Consulteu http://www.jmol.org per a més informació" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Error de fitxer:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "assigna o afegix un àtom o enllaç (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "obre el menú contextual recent (prem el logotip del Jmol)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "esborra àtom (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "esborra enllaç (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "ajusta el pla posterior de secció (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "moure àtom (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "moure l'objecte dibuixat (requerix '{0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "moure un punt de l'objecte dibuixat (requerix '{0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "moure etiqueta (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "moure àtom i minimitza la molècula (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "mou i minimitza la molècula (requereix {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "mou els àtoms seleccionats (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "arrossega els àtoms en la direcció Z (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simula entrada multitàctil usant el ratolí)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "trasllada el punt de navegació (requereix {0} i {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "trieu un àtom" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "connecta els àtoms (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "trieu un punt a la isosuperfície (ISOSURFACE) (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "trieu una etiqueta per canviar la seva visibilitat (requereix {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"trieu un àtom per incloure'l en una mesura (després d'iniciar una mesura o " +"després de {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "trieu un punt o un àtom fins el qual navegar (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "trieu un punt d'un objecte dibuixat (per mesuraments) (requereix '{0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "obre el menú contextual complet" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "reinicia (quan es cliqui fora del model)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "gira" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "rota la branca al voltant de l'enllaç (requerix '{0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "rota els àtoms seleccionats (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "gira la Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"rotació de l'eix Z (desplaçament horitzontal del ratolí) o mida " +"(desplaçament vertical del ratolí)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "seleccioneu un àtom (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "selecciona i arrossega els àtoms (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "de-selecciona aquest grup d'àtoms (requerix '{0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "cancel·la la selecció (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "afegix aquest grup d'àtoms a la selecció (requerix '{0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "(des)activa la selecció (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"si estan tots seleccionats, suprimeix la selecció; si no, afegeix aquest " +"grup d'àtoms a la selecció (requerix '{0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "trieu un àtom per iniciar o finalitzar una mesura" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "ajusta el pla davanter de secció (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "desplaça els plànols de secció (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zoom (al llarg de la vora dreta de la finestra)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"feu clic en dos punts per a definir un eix de gir antihorari (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"feu clic en dos punts per a definir un eix de gir horari (requereix {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "atura el moviment (requerix {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"gira el model (llisqueu i deixeu anar el botó i atureu el moviment " +"simultàniament)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "trasllada" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zoom" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "trieu un o més àtoms per a fer girar el model al voltant d'un eix" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "trieu dos àtoms per a fer girar el model al voltant d'un eix" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "trieu un àtom més per mostrar la relació de simetria" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" +"trieu en ordre dos àtoms per a mostrar la relació de simetria entre ells" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Definint l'arxiu de registre com a '{0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "No es pot establir la ruta de l'arxiu de registre." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} àtoms amagats" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} àtoms seleccionats" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Arrossegueu per a moure l'etiqueta" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" +"el porta-retalls no és accessible -- utilitzeu una miniaplicació signada" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "s'han afegit '{0} hidrògens" + +#~ msgid "Hide Symmetry" +#~ msgstr "Amaga la simetria" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "S'està carregant la miniaplicació del Jmol…" + +#~ msgid " {0} seconds" +#~ msgstr " {0} segons" + +#~ msgid "Java version:" +#~ msgstr "Versió del Java:" + +#~ msgid "1 processor" +#~ msgstr "1 processador" + +#~ msgid "unknown processor count" +#~ msgstr "nombre de processadors desconegut" + +#~ msgid "Java memory usage:" +#~ msgstr "Ús de memòria del Java" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB lliures" + +#~ msgid "unknown maximum" +#~ msgstr "màxim desconegut" + +#~ msgid "Open file or URL" +#~ msgstr "Obre un fitxer o un URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ca@valencia.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ca@valencia.po new file mode 100755 index 000000000000..3bb1cb8fab4d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ca@valencia.po @@ -0,0 +1,2544 @@ +# Catalan (Valencian) translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2013-10-09 20:04+0200\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Catalan (Valencian) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/applet/AppletWrapper.java:101 +msgid "Loading Jmol applet ..." +msgstr "S'està carregant la miniaplicació del Jmol…" + +#: org/jmol/applet/AppletWrapper.java:176 +#, java-format +msgid " {0} seconds" +msgstr " {0} segons" + +#: org/jmol/applet/Jmol.java:711 org/jmol/appletjs/Jmol.java:366 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Miniaplicació de Jmol, versio {0} {1}.\n" +"\n" +"Un projecte d'OpenScience. \n" +"\n" +"Consulteu http://www.jmol.org per a més informació" + +#: org/jmol/applet/Jmol.java:985 org/jmol/appletjs/Jmol.java:603 +msgid "File Error:" +msgstr "Error de fitxer:" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:76 +#: org/jmol/modelkit/ModelKitPopup.java:56 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:79 +msgid "&Help" +msgstr "A&juda" + +#: org/jmol/console/GenericConsole.java:80 +msgid "&Search..." +msgstr "Ce&rca…" + +#: org/jmol/console/GenericConsole.java:81 +msgid "&Commands" +msgstr "&Ordes" + +#: org/jmol/console/GenericConsole.java:82 +msgid "Math &Functions" +msgstr "&Funcions matemàtiques" + +#: org/jmol/console/GenericConsole.java:83 +msgid "Set &Parameters" +msgstr "Defineix els &paràmetres" + +#: org/jmol/console/GenericConsole.java:84 +msgid "&More" +msgstr "&Més" + +#: org/jmol/console/GenericConsole.java:85 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:86 +msgid "State" +msgstr "Estat" + +#: org/jmol/console/GenericConsole.java:87 +#: org/jmol/console/ScriptEditor.java:140 +msgid "Run" +msgstr "Executa" + +#: org/jmol/console/GenericConsole.java:88 +msgid "Clear Output" +msgstr "Neteja l'eixida" + +#: org/jmol/console/GenericConsole.java:89 +msgid "Clear Input" +msgstr "Neteja l'entrada" + +#: org/jmol/console/GenericConsole.java:90 +#: org/jmol/popup/MainPopupResourceBundle.java:895 +msgid "History" +msgstr "Historial" + +#: org/jmol/console/GenericConsole.java:91 +msgid "Load" +msgstr "Carrega" + +#: org/jmol/console/GenericConsole.java:93 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"premeu Ctrl+Retorn per a una nova línia o enganxeu les dades del model i " +"premeu Carrega" + +#: org/jmol/console/GenericConsole.java:95 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Els missatges apareixeran ací. Introduïu les ordes en el quadre a " +"continuació. Feu clic a l'element Ajuda del menú de la consola per a " +"consultar l'ajuda en línia, que es mostrarà en una nova finestra del " +"navegador." + +#: org/jmol/console/GenericConsole.java:128 +msgid "Jmol Script Console" +msgstr "Consola script del Jmol" + +#: org/jmol/console/ScriptEditor.java:101 +msgid "Jmol Script Editor" +msgstr "Editor d'scripts del Jmol" + +#: org/jmol/console/ScriptEditor.java:133 +#: org/jmol/popup/MainPopupResourceBundle.java:891 +msgid "Console" +msgstr "Consola" + +#: org/jmol/console/ScriptEditor.java:135 org/jmol/dialog/Dialog.java:445 +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:472 +msgid "Open" +msgstr "Obri" + +#: org/jmol/console/ScriptEditor.java:136 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:137 +msgid "Check" +msgstr "Comprova" + +#: org/jmol/console/ScriptEditor.java:138 +msgid "" +"Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "A dalt" + +#: org/jmol/console/ScriptEditor.java:139 +msgid "Step" +msgstr "Pas" + +#: org/jmol/console/ScriptEditor.java:141 +#: org/jmol/popup/MainPopupResourceBundle.java:847 +msgid "Pause" +msgstr "Pausa" + +#: org/jmol/console/ScriptEditor.java:143 +#: org/jmol/popup/MainPopupResourceBundle.java:848 +msgid "Resume" +msgstr "Reprén" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Halt" +msgstr "Atura" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Clear" +msgstr "Neteja" + +#: org/jmol/console/ScriptEditor.java:148 +msgid "Close" +msgstr "Tanca" + +#: org/jmol/dialog/Dialog.java:93 +msgid "File or URL:" +msgstr "Fitxer o URL:" + +#: org/jmol/dialog/Dialog.java:270 +msgid "Image Type" +msgstr "Tipus d'imatge" + +#: org/jmol/dialog/Dialog.java:285 org/jmol/dialog/Dialog.java:326 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Qualitat del JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:299 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Compressió PNG ({0})" + +#: org/jmol/dialog/Dialog.java:329 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Qualitat del PNG ({0})" + +#: org/jmol/dialog/Dialog.java:376 org/jmol/dialog/Dialog.java:488 +msgid "Yes" +msgstr "Sí" + +#: org/jmol/dialog/Dialog.java:376 org/jmol/dialog/Dialog.java:486 +msgid "No" +msgstr "No" + +#: org/jmol/dialog/Dialog.java:378 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Voleu sobreescriure el fitxer {0}?" + +#: org/jmol/dialog/Dialog.java:379 +msgid "Warning" +msgstr "Avís" + +#: org/jmol/dialog/Dialog.java:437 +msgid "All Files" +msgstr "Tots els fitxers" + +#: org/jmol/dialog/Dialog.java:438 org/jmol/dialog/Dialog.java:485 +msgid "Cancel" +msgstr "Cancel·la" + +#: org/jmol/dialog/Dialog.java:440 +msgid "Abort file chooser dialog" +msgstr "Avorta el diàleg de selecció de fitxers" + +#: org/jmol/dialog/Dialog.java:442 org/jmol/dialog/Dialog.java:443 +msgid "Details" +msgstr "Detalls" + +#: org/jmol/dialog/Dialog.java:444 +msgid "Directory" +msgstr "Directori" + +#: org/jmol/dialog/Dialog.java:447 +msgid "Open selected directory" +msgstr "Obri el directori seleccionat" + +#: org/jmol/dialog/Dialog.java:448 +msgid "Attributes" +msgstr "Atributs" + +#: org/jmol/dialog/Dialog.java:449 +msgid "Modified" +msgstr "Modificat" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Generic File" +msgstr "Fitxer genèric" + +#: org/jmol/dialog/Dialog.java:451 +msgid "Name" +msgstr "Nom" + +#: org/jmol/dialog/Dialog.java:452 +msgid "File Name:" +msgstr "Nom del fitxer:" + +#: org/jmol/dialog/Dialog.java:453 +msgid "Size" +msgstr "Mida" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Files of Type:" +msgstr "Fitxers del tipus:" + +#: org/jmol/dialog/Dialog.java:455 +msgid "Type" +msgstr "Tipus" + +#: org/jmol/dialog/Dialog.java:456 +msgid "Help" +msgstr "Ajuda" + +#: org/jmol/dialog/Dialog.java:458 +msgid "FileChooser help" +msgstr "Ajuda del selector de fitxers" + +#: org/jmol/dialog/Dialog.java:459 org/jmol/dialog/Dialog.java:460 +msgid "Home" +msgstr "Inici" + +#: org/jmol/dialog/Dialog.java:461 org/jmol/dialog/Dialog.java:462 +msgid "List" +msgstr "Llista" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Look In:" +msgstr "Cerca a:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Error creating new folder" +msgstr "S'ha produït un error en crear la carpeta nova" + +#: org/jmol/dialog/Dialog.java:466 +msgid "New Folder" +msgstr "Carpeta nova" + +#: org/jmol/dialog/Dialog.java:468 +msgid "Create New Folder" +msgstr "Crea una carpeta nova" + +#: org/jmol/dialog/Dialog.java:471 +msgid "Open selected file" +msgstr "Obri el fitxer seleccionat" + +#: org/jmol/dialog/Dialog.java:473 org/jmol/dialog/Dialog.java:476 +msgid "Save" +msgstr "Alça" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Save selected file" +msgstr "Alça el fitxer seleccionat" + +#: org/jmol/dialog/Dialog.java:477 +msgid "Save In:" +msgstr "Alça a:" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Update" +msgstr "Actualitza" + +#: org/jmol/dialog/Dialog.java:480 +msgid "Update directory listing" +msgstr "Actualitza la llista de directoris" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Up" +msgstr "Amunt" + +#: org/jmol/dialog/Dialog.java:482 +msgid "Up One Level" +msgstr "Un nivell amunt" + +#: org/jmol/dialog/Dialog.java:487 +msgid "OK" +msgstr "D'acord" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Previsualització" + +#: org/jmol/dialog/FilePreview.java:97 +msgid "Append models" +msgstr "Afig els models" + +#: org/jmol/dialog/FilePreview.java:99 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Àrab" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Català" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Txec" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danés" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Alemany" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Grec" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Anglés britànic" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Anglés americà" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Espanyol" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonià" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Feroés" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francés" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Hongarés" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesi" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italià" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japonés" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Coreà" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Noruec Bökmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Holandés" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occità" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polonés" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugués" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portugués del Brasil" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Rus" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Eslovè" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Suec" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tàmil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turc" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ucraïnés" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Xinés simplificat" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Xinés tradicional" + +#: org/jmol/minimize/Minimizer.java:219 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "No es pot aconseguir la classe del camp de força {0}" + +#: org/jmol/minimize/Minimizer.java:225 +msgid "No atoms selected -- nothing to do!" +msgstr "No s'ha seleccionat cap àtom -- no hi ha res per fer!" + +#: org/jmol/minimize/Minimizer.java:310 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "Es minimitzaran {0} àtoms." + +#: org/jmol/minimize/Minimizer.java:325 +#, java-format +msgid "could not setup force field {0}" +msgstr "no ha pogut configurar-se el camp de força {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:84 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:85 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:86 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:87 +#: org/jmol/viewer/ActionManager.java:342 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:109 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:110 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:111 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:112 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/modelsetbio/AminoPolymer.java:579 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/modelsetbio/AminoPolymer.java:585 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:636 +#: org/jmol/popup/MainPopupResourceBundle.java:570 +msgid "No atoms loaded" +msgstr "No s'ha carregat cap àtom" + +#: org/jmol/popup/GenericPopup.java:913 +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "Space Group" +msgstr "Grup espacial" + +#: org/jmol/popup/GenericPopup.java:983 org/jmol/popup/GenericPopup.java:1033 +#: org/jmol/popup/MainPopupResourceBundle.java:603 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +msgid "All" +msgstr "Tot" + +#: org/jmol/popup/GenericPopup.java:1145 +#: org/jmol/popup/MainPopupResourceBundle.java:1000 +msgid "Mouse Manual" +msgstr "Manual del ratolí" + +#: org/jmol/popup/GenericPopup.java:1147 +#: org/jmol/popup/MainPopupResourceBundle.java:1001 +msgid "Translations" +msgstr "Translacions" + +#: org/jmol/popup/GenericPopup.java:1151 +msgid "System" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1156 +msgid "Java version:" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1170 +msgid "1 processor" +msgstr "1 processador" + +#: org/jmol/popup/GenericPopup.java:1171 +#, java-format +msgid "{0} processors" +msgstr "{0} processadors" + +#: org/jmol/popup/GenericPopup.java:1173 +msgid "unknown processor count" +msgstr "recompte de processadors desconegut" + +#: org/jmol/popup/GenericPopup.java:1174 +msgid "Java memory usage:" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1179 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB en total" + +#: org/jmol/popup/GenericPopup.java:1181 +#, java-format +msgid "{0} MB free" +msgstr "{0} MB lliures" + +#: org/jmol/popup/GenericPopup.java:1184 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB com a màxim" + +#: org/jmol/popup/GenericPopup.java:1187 +msgid "unknown maximum" +msgstr "màxim desconegut" + +#: org/jmol/popup/GenericPopup.java:1299 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:572 +msgid "Configurations" +msgstr "Configuracions" + +#: org/jmol/popup/MainPopupResourceBundle.java:573 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:574 +msgid "Model/Frame" +msgstr "Model/fotograma" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +msgid "Language" +msgstr "Llengua" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +#: org/jmol/popup/MainPopupResourceBundle.java:577 +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "By Residue Name" +msgstr "Per nom de residu" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "By HETATM" +msgstr "Per HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +#: org/jmol/popup/MainPopupResourceBundle.java:902 +#: org/jmol/popup/MainPopupResourceBundle.java:958 +msgid "Symmetry" +msgstr "Simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Hide Symmetry" +msgstr "Amaga la simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Model information" +msgstr "Informació del model" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +#, java-format +msgid "Select ({0})" +msgstr "Selecciona ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:586 +#, java-format +msgid "All {0} models" +msgstr "Tots els {0} models" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +#, java-format +msgid "Configurations ({0})" +msgstr "Configuracions ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#, java-format +msgid "Collection of {0} models" +msgstr "Col·lecció de {0} models" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +#, java-format +msgid "atoms: {0}" +msgstr "àtoms: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:590 +#, java-format +msgid "bonds: {0}" +msgstr "enllaços: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +#, java-format +msgid "groups: {0}" +msgstr "grups: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +#, java-format +msgid "chains: {0}" +msgstr "cadenes: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +#, java-format +msgid "polymers: {0}" +msgstr "polímers: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +#, java-format +msgid "View {0}" +msgstr "Vista {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "Main Menu" +msgstr "Menú principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Biomolecules" +msgstr "Biomolècules" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolècula {0} ({1} àtoms)" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "carrega una biomolècula {0} ({1} àtoms)" + +#: org/jmol/popup/MainPopupResourceBundle.java:604 +#: org/jmol/popup/MainPopupResourceBundle.java:731 +#: org/jmol/popup/MainPopupResourceBundle.java:740 +msgid "None" +msgstr "Cap" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "Display Selected Only" +msgstr "Mostra només allò seleccionat" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "Invert Selection" +msgstr "Inverteix la selecció" + +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "View" +msgstr "Visualització" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Front" +msgstr "Frontal" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Left" +msgstr "Esquerra" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Right" +msgstr "Dreta" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Bottom" +msgstr "Inferior" + +#: org/jmol/popup/MainPopupResourceBundle.java:615 +msgid "Back" +msgstr "Dorsal" + +#: org/jmol/popup/MainPopupResourceBundle.java:617 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Protein" +msgstr "Proteïna" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +#: org/jmol/popup/MainPopupResourceBundle.java:632 +#: org/jmol/popup/MainPopupResourceBundle.java:702 +#: org/jmol/popup/MainPopupResourceBundle.java:799 +msgid "Backbone" +msgstr "Esquelet" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Side Chains" +msgstr "Cadenes laterals" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Polar Residues" +msgstr "Residus polars" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Nonpolar Residues" +msgstr "Residus no polars" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Basic Residues (+)" +msgstr "Residus bàsics (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Acidic Residues (-)" +msgstr "Residus acídics (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Uncharged Residues" +msgstr "Residus sense càrrega" + +#: org/jmol/popup/MainPopupResourceBundle.java:628 +msgid "Nucleic" +msgstr "Nucleic" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "DNA" +msgstr "ADN" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "RNA" +msgstr "ARN" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "Bases" +msgstr "Bases" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "AT pairs" +msgstr "Parelles AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "GC pairs" +msgstr "Parelles GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "AU pairs" +msgstr "Parelles AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:638 +msgid "All PDB \"HETATM\"" +msgstr "Tots els «HETATM» del PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +msgid "All Solvent" +msgstr "Tot el solvent" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "All Water" +msgstr "Tot l'aigua" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +msgid "Nonaqueous Solvent" +msgstr "Solvent no aquós" + +#: org/jmol/popup/MainPopupResourceBundle.java:643 +msgid "Nonaqueous HETATM" +msgstr "HETATM no aquosos" + +#: org/jmol/popup/MainPopupResourceBundle.java:644 +msgid "Ligand" +msgstr "Lligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Carbohydrate" +msgstr "Carbohidrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "None of the above" +msgstr "Cap dels anteriors" + +#: org/jmol/popup/MainPopupResourceBundle.java:650 +msgid "Style" +msgstr "Estil" + +#: org/jmol/popup/MainPopupResourceBundle.java:651 +msgid "Scheme" +msgstr "Esquema" + +#: org/jmol/popup/MainPopupResourceBundle.java:652 +msgid "CPK Spacefill" +msgstr "Esferes CPK" + +#: org/jmol/popup/MainPopupResourceBundle.java:653 +msgid "Ball and Stick" +msgstr "Boles i bastons" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Sticks" +msgstr "Bastons" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Wireframe" +msgstr "Filferro" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +#: org/jmol/popup/MainPopupResourceBundle.java:703 +#: org/jmol/popup/MainPopupResourceBundle.java:801 +msgid "Cartoon" +msgstr "Disseny" + +#: org/jmol/popup/MainPopupResourceBundle.java:657 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +#: org/jmol/popup/MainPopupResourceBundle.java:800 +msgid "Trace" +msgstr "Traç" + +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:753 +msgid "Atoms" +msgstr "Àtoms" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +#: org/jmol/popup/MainPopupResourceBundle.java:669 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#: org/jmol/popup/MainPopupResourceBundle.java:690 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#: org/jmol/popup/MainPopupResourceBundle.java:711 +#: org/jmol/popup/MainPopupResourceBundle.java:719 +#: org/jmol/popup/MainPopupResourceBundle.java:825 +#: org/jmol/popup/MainPopupResourceBundle.java:876 +#: org/jmol/popup/MainPopupResourceBundle.java:956 +msgid "Off" +msgstr "Desactivat" + +#: org/jmol/popup/MainPopupResourceBundle.java:661 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +#: org/jmol/popup/MainPopupResourceBundle.java:663 +#: org/jmol/popup/MainPopupResourceBundle.java:664 +#: org/jmol/popup/MainPopupResourceBundle.java:665 +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#: org/jmol/popup/MainPopupResourceBundle.java:795 +msgid "Bonds" +msgstr "Enllaços" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +#: org/jmol/popup/MainPopupResourceBundle.java:680 +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:712 +#: org/jmol/popup/MainPopupResourceBundle.java:720 +#: org/jmol/popup/MainPopupResourceBundle.java:824 +msgid "On" +msgstr "Activat" + +#: org/jmol/popup/MainPopupResourceBundle.java:671 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +#: org/jmol/popup/MainPopupResourceBundle.java:674 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:686 +#: org/jmol/popup/MainPopupResourceBundle.java:687 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#: org/jmol/popup/MainPopupResourceBundle.java:695 +#: org/jmol/popup/MainPopupResourceBundle.java:696 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:722 +#: org/jmol/popup/MainPopupResourceBundle.java:723 +#: org/jmol/popup/MainPopupResourceBundle.java:980 +#: org/jmol/popup/MainPopupResourceBundle.java:981 +#: org/jmol/popup/MainPopupResourceBundle.java:982 +#: org/jmol/popup/MainPopupResourceBundle.java:983 +#: org/jmol/popup/MainPopupResourceBundle.java:984 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:796 +msgid "Hydrogen Bonds" +msgstr "Enllaços d'hidrogen" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +msgid "Calculate" +msgstr "Calcula" + +#: org/jmol/popup/MainPopupResourceBundle.java:681 +msgid "Set H-Bonds Side Chain" +msgstr "Defineix els enllaços d'hidrogen de les cadenes laterals" + +#: org/jmol/popup/MainPopupResourceBundle.java:682 +msgid "Set H-Bonds Backbone" +msgstr "Defineix els enllaços d'hidrogen de l'esquelet" + +#: org/jmol/popup/MainPopupResourceBundle.java:689 +#: org/jmol/popup/MainPopupResourceBundle.java:797 +msgid "Disulfide Bonds" +msgstr "Enllaços disulfur" + +#: org/jmol/popup/MainPopupResourceBundle.java:692 +msgid "Set SS-Bonds Side Chain" +msgstr "Defineix els enllaços disulfur de les cadenes laterals" + +#: org/jmol/popup/MainPopupResourceBundle.java:693 +msgid "Set SS-Bonds Backbone" +msgstr "Defineix els enllaços disulfur de l'esquelet" + +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:798 +msgid "Structures" +msgstr "Estructures" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Cartoon Rockets" +msgstr "Disseny en coets" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +#: org/jmol/popup/MainPopupResourceBundle.java:802 +msgid "Ribbons" +msgstr "Cintes" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +#: org/jmol/popup/MainPopupResourceBundle.java:803 +msgid "Rockets" +msgstr "Coets" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +#: org/jmol/popup/MainPopupResourceBundle.java:804 +msgid "Strands" +msgstr "Cadenes" + +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Vibration" +msgstr "Vibració" + +#: org/jmol/popup/MainPopupResourceBundle.java:715 +#: org/jmol/popup/MainPopupResourceBundle.java:808 +msgid "Vectors" +msgstr "Vectors" + +#: org/jmol/popup/MainPopupResourceBundle.java:716 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:717 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:718 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:721 +#, java-format +msgid "{0} pixels" +msgstr "{0} píxels" + +#: org/jmol/popup/MainPopupResourceBundle.java:724 +#: org/jmol/popup/MainPopupResourceBundle.java:725 +#: org/jmol/popup/MainPopupResourceBundle.java:726 +#: org/jmol/popup/MainPopupResourceBundle.java:727 +#: org/jmol/popup/MainPopupResourceBundle.java:728 +#, java-format +msgid "Scale {0}" +msgstr "Escala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:730 +msgid "Stereographic" +msgstr "Estereogràfic" + +#: org/jmol/popup/MainPopupResourceBundle.java:732 +msgid "Red+Cyan glasses" +msgstr "Ulleres roig+cian" + +#: org/jmol/popup/MainPopupResourceBundle.java:733 +msgid "Red+Blue glasses" +msgstr "Ulleres roig+blau" + +#: org/jmol/popup/MainPopupResourceBundle.java:734 +msgid "Red+Green glasses" +msgstr "Ulleres roig+verd" + +#: org/jmol/popup/MainPopupResourceBundle.java:735 +msgid "Cross-eyed viewing" +msgstr "Visió guenya" + +#: org/jmol/popup/MainPopupResourceBundle.java:736 +msgid "Wall-eyed viewing" +msgstr "Visió paral·lela" + +#: org/jmol/popup/MainPopupResourceBundle.java:738 +#: org/jmol/popup/MainPopupResourceBundle.java:805 +msgid "Labels" +msgstr "Etiquetes" + +#: org/jmol/popup/MainPopupResourceBundle.java:741 +msgid "With Element Symbol" +msgstr "Amb el símbol de l'element" + +#: org/jmol/popup/MainPopupResourceBundle.java:742 +msgid "With Atom Name" +msgstr "Amb el nom de l'àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:743 +msgid "With Atom Number" +msgstr "Amb el número de l'àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:745 +msgid "Position Label on Atom" +msgstr "Posició de l'etiqueta a l'àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:746 +msgid "Centered" +msgstr "Centrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:747 +msgid "Upper Right" +msgstr "Marge superior dret" + +#: org/jmol/popup/MainPopupResourceBundle.java:748 +msgid "Lower Right" +msgstr "Marge inferior dret" + +#: org/jmol/popup/MainPopupResourceBundle.java:749 +msgid "Upper Left" +msgstr "Marge superior esquerre" + +#: org/jmol/popup/MainPopupResourceBundle.java:750 +msgid "Lower Left" +msgstr "Marge inferior esquerre" + +#: org/jmol/popup/MainPopupResourceBundle.java:752 +msgid "Color" +msgstr "Color" + +#: org/jmol/popup/MainPopupResourceBundle.java:755 +msgid "By Scheme" +msgstr "Per esquema" + +#: org/jmol/popup/MainPopupResourceBundle.java:756 +msgid "Element (CPK)" +msgstr "Element (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:757 +msgid "Alternative Location" +msgstr "Ubicació alternativa" + +#: org/jmol/popup/MainPopupResourceBundle.java:758 +msgid "Molecule" +msgstr "Molècula" + +#: org/jmol/popup/MainPopupResourceBundle.java:759 +msgid "Formal Charge" +msgstr "Càrrega formal" + +#: org/jmol/popup/MainPopupResourceBundle.java:760 +msgid "Partial Charge" +msgstr "Càrrega parcial" + +#: org/jmol/popup/MainPopupResourceBundle.java:761 +msgid "Temperature (Relative)" +msgstr "Temperatura (relativa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:762 +msgid "Temperature (Fixed)" +msgstr "Temperatura (fixada)" + +#: org/jmol/popup/MainPopupResourceBundle.java:764 +msgid "Amino Acid" +msgstr "Aminoàcid" + +#: org/jmol/popup/MainPopupResourceBundle.java:765 +msgid "Secondary Structure" +msgstr "Estructura secundària" + +#: org/jmol/popup/MainPopupResourceBundle.java:766 +msgid "Chain" +msgstr "Cadena" + +#: org/jmol/popup/MainPopupResourceBundle.java:767 +msgid "Group" +msgstr "Grup" + +#: org/jmol/popup/MainPopupResourceBundle.java:768 +msgid "Monomer" +msgstr "Monòmer" + +#: org/jmol/popup/MainPopupResourceBundle.java:769 +msgid "Shapely" +msgstr "Amb forma" + +#: org/jmol/popup/MainPopupResourceBundle.java:771 +msgid "Inherit" +msgstr "Hereta" + +#: org/jmol/popup/MainPopupResourceBundle.java:772 +msgid "Black" +msgstr "Negre" + +#: org/jmol/popup/MainPopupResourceBundle.java:773 +msgid "White" +msgstr "Blanc" + +#: org/jmol/popup/MainPopupResourceBundle.java:774 +msgid "Cyan" +msgstr "Cian" + +#: org/jmol/popup/MainPopupResourceBundle.java:776 +msgid "Red" +msgstr "Roig" + +#: org/jmol/popup/MainPopupResourceBundle.java:777 +msgid "Orange" +msgstr "Taronja" + +#: org/jmol/popup/MainPopupResourceBundle.java:778 +msgid "Yellow" +msgstr "Groc" + +#: org/jmol/popup/MainPopupResourceBundle.java:779 +msgid "Green" +msgstr "Verd" + +#: org/jmol/popup/MainPopupResourceBundle.java:780 +msgid "Blue" +msgstr "Blau" + +#: org/jmol/popup/MainPopupResourceBundle.java:781 +msgid "Indigo" +msgstr "Indi" + +#: org/jmol/popup/MainPopupResourceBundle.java:782 +msgid "Violet" +msgstr "Violeta" + +#: org/jmol/popup/MainPopupResourceBundle.java:784 +msgid "Salmon" +msgstr "Salmó" + +#: org/jmol/popup/MainPopupResourceBundle.java:785 +msgid "Olive" +msgstr "Oliva" + +#: org/jmol/popup/MainPopupResourceBundle.java:786 +msgid "Maroon" +msgstr "Granat" + +#: org/jmol/popup/MainPopupResourceBundle.java:787 +msgid "Gray" +msgstr "Gris" + +#: org/jmol/popup/MainPopupResourceBundle.java:788 +msgid "Slate Blue" +msgstr "Blau pissarra" + +#: org/jmol/popup/MainPopupResourceBundle.java:789 +msgid "Gold" +msgstr "Daurat" + +#: org/jmol/popup/MainPopupResourceBundle.java:790 +msgid "Orchid" +msgstr "Orquídia" + +#: org/jmol/popup/MainPopupResourceBundle.java:792 +#: org/jmol/popup/MainPopupResourceBundle.java:954 +msgid "Make Opaque" +msgstr "Fes opac" + +#: org/jmol/popup/MainPopupResourceBundle.java:793 +#: org/jmol/popup/MainPopupResourceBundle.java:955 +msgid "Make Translucent" +msgstr "Fes translúcid" + +#: org/jmol/popup/MainPopupResourceBundle.java:806 +msgid "Background" +msgstr "Fons" + +#: org/jmol/popup/MainPopupResourceBundle.java:807 +#: org/jmol/popup/MainPopupResourceBundle.java:945 +msgid "Surfaces" +msgstr "Superfícies" + +#: org/jmol/popup/MainPopupResourceBundle.java:809 +#: org/jmol/popup/MainPopupResourceBundle.java:966 +#: org/jmol/popup/MainPopupResourceBundle.java:992 +msgid "Axes" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:810 +#: org/jmol/popup/MainPopupResourceBundle.java:967 +#: org/jmol/popup/MainPopupResourceBundle.java:991 +msgid "Boundbox" +msgstr "Quadre" + +#: org/jmol/popup/MainPopupResourceBundle.java:811 +#: org/jmol/popup/MainPopupResourceBundle.java:942 +#: org/jmol/popup/MainPopupResourceBundle.java:968 +#: org/jmol/popup/MainPopupResourceBundle.java:993 +msgid "Unit cell" +msgstr "Cel·la unitat" + +#: org/jmol/popup/MainPopupResourceBundle.java:813 +msgid "Zoom" +msgstr "Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:820 +msgid "Zoom In" +msgstr "Amplia" + +#: org/jmol/popup/MainPopupResourceBundle.java:821 +msgid "Zoom Out" +msgstr "Redueix" + +#: org/jmol/popup/MainPopupResourceBundle.java:823 +#: org/jmol/popup/MainPopupResourceBundle.java:888 +msgid "Spin" +msgstr "Rotació" + +#: org/jmol/popup/MainPopupResourceBundle.java:827 +msgid "Set X Rate" +msgstr "Defineix la velocitat X" + +#: org/jmol/popup/MainPopupResourceBundle.java:828 +msgid "Set Y Rate" +msgstr "Defineix la velocitat Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:829 +msgid "Set Z Rate" +msgstr "Defineix la velocitat Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:830 +#: org/jmol/popup/MainPopupResourceBundle.java:856 +msgid "Set FPS" +msgstr "Defineix els FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:840 +msgid "Animation" +msgstr "Animació" + +#: org/jmol/popup/MainPopupResourceBundle.java:841 +msgid "Animation Mode" +msgstr "Mode d'animació" + +#: org/jmol/popup/MainPopupResourceBundle.java:842 +msgid "Play Once" +msgstr "Reprodueix una vegada" + +#: org/jmol/popup/MainPopupResourceBundle.java:843 +msgid "Palindrome" +msgstr "Palíndrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:844 +msgid "Loop" +msgstr "En bucle" + +#: org/jmol/popup/MainPopupResourceBundle.java:846 +msgid "Play" +msgstr "Reprodueix" + +#: org/jmol/popup/MainPopupResourceBundle.java:849 +msgid "Stop" +msgstr "Atura" + +#: org/jmol/popup/MainPopupResourceBundle.java:850 +msgid "Next Frame" +msgstr "Següent fotograma" + +#: org/jmol/popup/MainPopupResourceBundle.java:851 +msgid "Previous Frame" +msgstr "Anterior fotograma" + +#: org/jmol/popup/MainPopupResourceBundle.java:852 +msgid "Rewind" +msgstr "Rebobina" + +#: org/jmol/popup/MainPopupResourceBundle.java:853 +msgid "Reverse" +msgstr "Reproducció inversa" + +#: org/jmol/popup/MainPopupResourceBundle.java:854 +msgid "Restart" +msgstr "Reinicia" + +#: org/jmol/popup/MainPopupResourceBundle.java:863 +#: org/jmol/popup/MainPopupResourceBundle.java:897 +msgid "Measurements" +msgstr "Mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:864 +msgid "Double-Click begins and ends all measurements" +msgstr "Amb doble clic es comença i acaba totes les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:865 +msgid "Click for distance measurement" +msgstr "Feu clic per a mesurar la distància" + +#: org/jmol/popup/MainPopupResourceBundle.java:866 +msgid "Click for angle measurement" +msgstr "Feu clic per a mesurar l'angle" + +#: org/jmol/popup/MainPopupResourceBundle.java:867 +msgid "Click for torsion (dihedral) measurement" +msgstr "Feu clic per a mesurar la torsió (angle dihèdric)" + +#: org/jmol/popup/MainPopupResourceBundle.java:868 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:869 +msgid "Delete measurements" +msgstr "Suprimeix les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:870 +msgid "List measurements" +msgstr "Llista les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:871 +msgid "Distance units nanometers" +msgstr "Unitats de distància en nanòmetres" + +#: org/jmol/popup/MainPopupResourceBundle.java:872 +msgid "Distance units Angstroms" +msgstr "Unitats de distància en Angstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:873 +msgid "Distance units picometers" +msgstr "Unitats de distància en picòmetres" + +#: org/jmol/popup/MainPopupResourceBundle.java:875 +msgid "Set picking" +msgstr "Defineix la tria" + +#: org/jmol/popup/MainPopupResourceBundle.java:877 +msgid "Center" +msgstr "Centre" + +#: org/jmol/popup/MainPopupResourceBundle.java:879 +msgid "Identity" +msgstr "Identitat" + +#: org/jmol/popup/MainPopupResourceBundle.java:880 +msgid "Label" +msgstr "Etiqueta" + +#: org/jmol/popup/MainPopupResourceBundle.java:881 +msgid "Select atom" +msgstr "Selecciona un àtom" + +#: org/jmol/popup/MainPopupResourceBundle.java:882 +msgid "Select chain" +msgstr "Selecciona una cadena" + +#: org/jmol/popup/MainPopupResourceBundle.java:883 +msgid "Select element" +msgstr "Selecciona un element" + +#: org/jmol/popup/MainPopupResourceBundle.java:884 +msgid "Select group" +msgstr "Selecciona un grup" + +#: org/jmol/popup/MainPopupResourceBundle.java:885 +msgid "Select molecule" +msgstr "Selecciona una molècula" + +#: org/jmol/popup/MainPopupResourceBundle.java:886 +msgid "Select site" +msgstr "Selecciona un seti" + +#: org/jmol/popup/MainPopupResourceBundle.java:887 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:890 +msgid "Show" +msgstr "Mostra" + +#: org/jmol/popup/MainPopupResourceBundle.java:893 +msgid "File Contents" +msgstr "Continguts del fitxer" + +#: org/jmol/popup/MainPopupResourceBundle.java:894 +msgid "File Header" +msgstr "Capçalera del fitxer" + +#: org/jmol/popup/MainPopupResourceBundle.java:896 +msgid "Isosurface JVXL data" +msgstr "Dades JVXL d'isosuperfície" + +#: org/jmol/popup/MainPopupResourceBundle.java:898 +msgid "Molecular orbital JVXL data" +msgstr "Dades JVXL de l'orbital molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:899 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:900 +msgid "Orientation" +msgstr "Orientació" + +#: org/jmol/popup/MainPopupResourceBundle.java:901 +msgid "Space group" +msgstr "Grup espacial" + +#: org/jmol/popup/MainPopupResourceBundle.java:903 +msgid "Current state" +msgstr "Estat actual" + +#: org/jmol/popup/MainPopupResourceBundle.java:905 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:906 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:907 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:908 +msgid "Open file or URL" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:909 +msgid "Load full unit cell" +msgstr "Carrega la cel·la unitat sencera" + +#: org/jmol/popup/MainPopupResourceBundle.java:910 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:912 +#: org/jmol/viewer/OutputManager.java:652 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:913 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:914 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:915 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:916 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:917 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:918 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:919 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:920 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:922 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:923 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:924 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:925 +#: org/jmol/popup/MainPopupResourceBundle.java:926 +#: org/jmol/popup/MainPopupResourceBundle.java:927 +#: org/jmol/popup/MainPopupResourceBundle.java:928 +#: org/jmol/popup/MainPopupResourceBundle.java:929 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:930 +msgid "Save all as JMOL file (zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:931 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:932 +#: org/jmol/popup/MainPopupResourceBundle.java:933 +#: org/jmol/popup/MainPopupResourceBundle.java:934 +#: org/jmol/popup/MainPopupResourceBundle.java:935 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:937 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:938 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:939 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:943 +msgid "Extract MOL data" +msgstr "Extreu les dades MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:946 +msgid "Dot Surface" +msgstr "Superfície puntejada" + +#: org/jmol/popup/MainPopupResourceBundle.java:947 +msgid "van der Waals Surface" +msgstr "Superfície van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:948 +msgid "Molecular Surface" +msgstr "Superfície molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:949 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Superfície del solvent (sonda de {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:951 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Superfície accesible al solvent (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:952 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:953 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:959 +#: org/jmol/popup/MainPopupResourceBundle.java:960 +#: org/jmol/popup/MainPopupResourceBundle.java:961 +#, java-format +msgid "Reload {0}" +msgstr "Recarrega {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:962 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Torna a carregar {0} + Mostra {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:963 +msgid "Reload + Polyhedra" +msgstr "Recàrrega + polihedres" + +#: org/jmol/popup/MainPopupResourceBundle.java:970 +msgid "Hide" +msgstr "Amaga" + +#: org/jmol/popup/MainPopupResourceBundle.java:971 +msgid "Dotted" +msgstr "Puntejat" + +#: org/jmol/popup/MainPopupResourceBundle.java:973 +msgid "Pixel Width" +msgstr "Amplada del píxel" + +#: org/jmol/popup/MainPopupResourceBundle.java:974 +#: org/jmol/popup/MainPopupResourceBundle.java:975 +#: org/jmol/popup/MainPopupResourceBundle.java:976 +#: org/jmol/popup/MainPopupResourceBundle.java:977 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:979 +msgid "Angstrom Width" +msgstr "Amplada de l'àngstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:987 +msgid "Selection Halos" +msgstr "Selecció dels halos" + +#: org/jmol/popup/MainPopupResourceBundle.java:988 +msgid "Show Hydrogens" +msgstr "Mostra els hidrògens" + +#: org/jmol/popup/MainPopupResourceBundle.java:989 +msgid "Show Measurements" +msgstr "Mostra les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:990 +msgid "Perspective Depth" +msgstr "Perspectiva en profunditat" + +#: org/jmol/popup/MainPopupResourceBundle.java:994 +msgid "RasMol Colors" +msgstr "Colors del RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:995 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1348 +#: org/jmol/script/ScriptEvaluator.java:2922 +msgid "bad argument count" +msgstr "recompte incorrecte dels arguments" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1351 +#, java-format +msgid "invalid context for {0}" +msgstr "el testimoni d''expressió no és vàlid: {0}" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1354 +#: org/jmol/script/ScriptEvaluator.java:2949 +msgid "command expected" +msgstr "s'esperava una orde" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1357 +msgid "{ number number number } expected" +msgstr "s'esperava { nombre nombre nombre }" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1360 +#: org/jmol/script/ScriptEvaluator.java:2958 +msgid "unexpected end of script command" +msgstr "fi de l'orde de l'script no esperat" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1363 +msgid "end of expression expected" +msgstr "s'esperava la fi d'una expressió" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1366 +msgid "identifier or residue specification expected" +msgstr "s'esperava un identificador o una especifació de residu" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1369 +msgid "invalid atom specification" +msgstr "l'especificació d'àtom no és vàlida" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1372 +msgid "invalid chain specification" +msgstr "l'especificació de cadena no és vàlida" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1375 +#, java-format +msgid "invalid expression token: {0}" +msgstr "el testimoni d''expressió no és vàlid: {0}" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1378 +msgid "invalid model specification" +msgstr "l'especificació de model no és vàlida" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1381 +#, java-format +msgid "missing END for {0}" +msgstr "Manca END per a {0}" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1384 +#: org/jmol/script/ScriptEvaluator.java:3025 +msgid "number expected" +msgstr "s'esperava un nombre" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1387 +msgid "number or variable name expected" +msgstr "s'esperava un nombre o nom de variable" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1390 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "s'esperava una especificació de residu (ALA, AL?, A*)" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1393 +#, java-format +msgid "{0} expected" +msgstr "esperava {0}" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1396 +#, java-format +msgid "{0} unexpected" +msgstr "no esperava {0}" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1399 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "no es reconeix el testimoni de l''expressió: {0}" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1402 +#: org/jmol/script/ScriptEvaluator.java:3074 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "el paràmetre {0} no està reconegut" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1405 +#, java-format +msgid "unrecognized token: {0}" +msgstr "no es reconeix el testimoni: {0}" + +#: org/jmol/script/ScriptCompiler.java:2673 +msgid "script compiler ERROR: " +msgstr "Error del compilador script: " + +#: org/jmol/script/ScriptEvaluator.java:2762 +#: org/jmol/script/ScriptEvaluator.java:9339 +msgid "script ERROR: " +msgstr "Error de l'script: " + +#: org/jmol/script/ScriptEvaluator.java:2916 +msgid "x y z axis expected" +msgstr "s'esperava un eix x y z" + +#: org/jmol/script/ScriptEvaluator.java:2919 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "no es permet {0} amb el model de fons que es mostra" + +#: org/jmol/script/ScriptEvaluator.java:2925 +msgid "Miller indices cannot all be zero." +msgstr "Els índexs de Miller no poden ser tots zero." + +#: org/jmol/script/ScriptEvaluator.java:2928 +msgid "bad [R,G,B] color" +msgstr "el color [R,G,B] és incorrecte" + +#: org/jmol/script/ScriptEvaluator.java:2931 +msgid "boolean expected" +msgstr "s'esperava un booleà" + +#: org/jmol/script/ScriptEvaluator.java:2934 +msgid "boolean or number expected" +msgstr "s'esperava un booleà o un nombre" + +#: org/jmol/script/ScriptEvaluator.java:2937 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "s''esperava un boolea, un nombre o {0}" + +#: org/jmol/script/ScriptEvaluator.java:2940 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2943 +msgid "color expected" +msgstr "s'esperava un color" + +#: org/jmol/script/ScriptEvaluator.java:2946 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "cal un nom de color o de paleta (Jmol, Rasmol)" + +#: org/jmol/script/ScriptEvaluator.java:2952 +msgid "{x y z} or $name or (atom expression) required" +msgstr "cal {x y z}, $name o (expressió atòmica)" + +#: org/jmol/script/ScriptEvaluator.java:2955 +msgid "draw object not defined" +msgstr "l'objecte de dibuix no està definit" + +#: org/jmol/script/ScriptEvaluator.java:2961 +msgid "valid (atom expression) expected" +msgstr "s'esperava una (expressió atòmica) vàlida" + +#: org/jmol/script/ScriptEvaluator.java:2964 +msgid "(atom expression) or integer expected" +msgstr "s'esperava una (expressió atòmica) o un nombre enter" + +#: org/jmol/script/ScriptEvaluator.java:2967 +msgid "filename expected" +msgstr "s'esperava un nom de fitxer" + +#: org/jmol/script/ScriptEvaluator.java:2970 +msgid "file not found" +msgstr "no s'ha trobat el fitxer" + +#: org/jmol/script/ScriptEvaluator.java:2973 +msgid "incompatible arguments" +msgstr "arguments incompatibles" + +#: org/jmol/script/ScriptEvaluator.java:2976 +msgid "insufficient arguments" +msgstr "arguments insuficients" + +#: org/jmol/script/ScriptEvaluator.java:2979 +msgid "integer expected" +msgstr "s'esperava un enter" + +#: org/jmol/script/ScriptEvaluator.java:2982 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "l'enter està fora de l'abast ({0} - {1})" + +#: org/jmol/script/ScriptEvaluator.java:2985 +msgid "invalid argument" +msgstr "l'argument no és vàlid" + +#: org/jmol/script/ScriptEvaluator.java:2988 +msgid "invalid parameter order" +msgstr "odre dels paràmetres no vàlid" + +#: org/jmol/script/ScriptEvaluator.java:2991 +msgid "keyword expected" +msgstr "s'esperava una paraula clau" + +#: org/jmol/script/ScriptEvaluator.java:2994 +msgid "no MO coefficient data available" +msgstr "no hi ha dades del coeficient d'OM disponibles" + +#: org/jmol/script/ScriptEvaluator.java:2997 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "És necessari un índex d'OM d'1 a {0}" + +#: org/jmol/script/ScriptEvaluator.java:3000 +msgid "no MO basis/coefficient data available for this frame" +msgstr "no hi ha dades de base/coeficient d'OM per a este fotograma" + +#: org/jmol/script/ScriptEvaluator.java:3003 +msgid "no MO occupancy data available" +msgstr "no hi ha dades d'ocupació d'OM disponibles" + +#: org/jmol/script/ScriptEvaluator.java:3006 +msgid "Only one molecular orbital is available in this file" +msgstr "Només hi ha un orbital molecular disponible en este fitxer" + +#: org/jmol/script/ScriptEvaluator.java:3009 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "l''orde {0} requereix que només es mostre un model" + +#: org/jmol/script/ScriptEvaluator.java:3012 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3015 +msgid "No data available" +msgstr "no hi ha dades disponibles" + +#: org/jmol/script/ScriptEvaluator.java:3019 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"No s'han llegit les càrregues parcials del títol; el Jmol les necessita per " +"a rederitzar les dades d'EPM." + +#: org/jmol/script/ScriptEvaluator.java:3022 +msgid "No unit cell" +msgstr "No hi ha cap cel·la unitat" + +#: org/jmol/script/ScriptEvaluator.java:3028 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "el número ha de ser ({0} o {1})" + +#: org/jmol/script/ScriptEvaluator.java:3031 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "el nombre decimal està fora de l''abast ({0} - {1})" + +#: org/jmol/script/ScriptEvaluator.java:3034 +msgid "object name expected after '$'" +msgstr "s'esperava el nom de l'objectes després de '$'" + +#: org/jmol/script/ScriptEvaluator.java:3038 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"s''esperava un pla -- tres punts, unes expressions atòmiques, {0}, {1} o {2}" + +#: org/jmol/script/ScriptEvaluator.java:3041 +msgid "property name expected" +msgstr "s'esperava un nom de propietat" + +#: org/jmol/script/ScriptEvaluator.java:3044 +#, java-format +msgid "space group {0} was not found." +msgstr "no s''ha trobat el grup espacial {0}." + +#: org/jmol/script/ScriptEvaluator.java:3047 +msgid "quoted string expected" +msgstr "s'esperava una cadena entre cometes" + +#: org/jmol/script/ScriptEvaluator.java:3050 +msgid "quoted string or identifier expected" +msgstr "s'esperava una cadena entre cometes o un identificador" + +#: org/jmol/script/ScriptEvaluator.java:3053 +msgid "too many rotation points were specified" +msgstr "s'han especificat massa punts de rotació" + +#: org/jmol/script/ScriptEvaluator.java:3056 +msgid "too many script levels" +msgstr "masses nivells d'script" + +#: org/jmol/script/ScriptEvaluator.java:3059 +msgid "unrecognized atom property" +msgstr "no es reconeix la propietat de l'àtom" + +#: org/jmol/script/ScriptEvaluator.java:3062 +msgid "unrecognized bond property" +msgstr "no es reconeix la propietat de l'enllaç" + +#: org/jmol/script/ScriptEvaluator.java:3065 +msgid "unrecognized command" +msgstr "no es reconeix l'orde" + +#: org/jmol/script/ScriptEvaluator.java:3068 +msgid "runtime unrecognized expression" +msgstr "no es reconeix l'expressió d'execució" + +#: org/jmol/script/ScriptEvaluator.java:3071 +msgid "unrecognized object" +msgstr "no es reconeix l'objecte" + +#: org/jmol/script/ScriptEvaluator.java:3078 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"no es reconeix el paràmetre {0} a l'script d'estat del Jmol (es defineix " +"així de totes maneres)" + +#: org/jmol/script/ScriptEvaluator.java:3081 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "no es reconeix el paràmetre SHOW -- utilitzeu {0}" + +#: org/jmol/script/ScriptEvaluator.java:3087 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "què s'ha d'escriure? {0} o «nomdefitxer» {1}" + +#: org/jmol/script/ScriptEvaluator.java:5722 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:5724 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:7001 +#, java-format +msgid "{0} connections deleted" +msgstr "s''han suprimit {0} connexions" + +#: org/jmol/script/ScriptEvaluator.java:7013 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} enllaços nous; {1} modificats" + +#: org/jmol/script/ScriptEvaluator.java:8432 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:9492 +#: org/jmol/script/ScriptEvaluator.java:9675 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} àtoms suprimits" + +#: org/jmol/script/ScriptEvaluator.java:10323 +#: org/jmol/scriptext/ScriptExt.java:5711 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} enllaços d'hidrogen" + +#: org/jmol/scriptext/ScriptExt.java:5689 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/ScriptExt.java:5770 +#, java-format +msgid "{0} struts mp.added" +msgstr "" + +#: org/jmol/scriptext/ScriptExt.java:6073 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:80 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/viewer/ActionManager.java:340 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:344 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:346 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:350 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:351 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:354 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:356 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:357 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:360 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:363 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:366 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:368 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:370 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:372 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:374 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:376 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:378 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:380 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:387 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:390 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:393 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:396 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:398 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:399 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:401 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:403 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:404 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:409 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:410 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:413 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:415 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:418 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:420 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:423 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:430 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:433 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:435 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:437 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:439 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:445 +#, java-format +msgid "" +"click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:448 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:451 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:456 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:457 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:458 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:2072 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "trieu un o més àtoms per a fer girar el model al voltant d'un eix" + +#: org/jmol/viewer/ActionManager.java:2073 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "trieu dos àtoms per a fer girar el model al voltant d'un eix" + +#: org/jmol/viewer/ActionManager.java:2077 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:2079 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:654 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:655 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:710 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:712 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:95 +#: org/jmol/viewer/SelectionManager.java:104 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} àtoms amagats" + +#: org/jmol/viewer/SelectionManager.java:168 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} àtoms seleccionats" + +#: org/jmol/viewer/Viewer.java:4849 +msgid "Drag to move label" +msgstr "Arrossegueu per a moure l'etiqueta" + +#: org/jmol/viewer/Viewer.java:8730 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" +"el porta-retalls no és accessible -- utilitzeu una miniaplicació signada" + +#: org/jmol/viewer/Viewer.java:10098 +#, java-format +msgid "{0} hydrogens added" +msgstr "" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/cs.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/cs.po new file mode 100755 index 000000000000..c4c4e1dd73b1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/cs.po @@ -0,0 +1,2643 @@ +# Jmol application. +# Copyright (C) 1998-2004 The Jmol Development Team +# This file is distributed under the same license as the Jmol package. +# Pavel Jakubů AUTHOR , 2007. +# translation homework under supervision of Martin Slavik, . +# +msgid "" +msgstr "" +"Project-Id-Version: Jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:44+0000\n" +"Last-Translator: Konki \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: CZECH REPUBLIC\n" +"X-Poedit-Language: Czech\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Prvek?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol skriptovací konzole" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Soubor" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Zavřít" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "Nápo&vÄ›da" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Hledej..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Příkazy" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Matematické &funkce" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Nastav ¶metry" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Více" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Stav" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Spustit" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Vymaž výstup" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Vymaž vstup" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historie" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Nahrát" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"stisknÄ›te CTRL-ENTER pro vložení nového řádku nebo vložte údaje o modelu a " +"stisknÄ›te Nahrát" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Zprávy se objeví zde. NapiÅ¡te příkazy do pole níže. KlepnÄ›te na tlaÄítko " +"NápovÄ›da v konzoli pro on-line nápovÄ›du, která se objeví v novém oknÄ› " +"prohlížeÄe." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol Skript Editor" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konzole" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Otevřít" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "ZepÅ™edu" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skript" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Zkontrolovat" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Nahoru" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Krok" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pozastavit" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "PokraÄovat" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Zastavit" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Vymazat" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Zavřít" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Soubor nebo URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Typ obrázku" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG kvalita ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG komprese ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG kvalita ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ano" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Ne" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Chcete pÅ™epsat soubor {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Varování" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "VÅ¡echny soubory" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "ZruÅ¡it" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "ZruÅ¡ výbÄ›r souboru" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Podrobnosti" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Složka" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "OtevÅ™i vybranou složku" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Vlastnosti" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "ZmÄ›nÄ›no" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Obecný soubor" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Název" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Název souboru:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Velikost" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Typy souborů" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Typ" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "NápovÄ›da" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "NápovÄ›da k výbÄ›ru souborů" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Domů" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Seznam" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Hledej v:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Chyba pÅ™i vytváření nové složky" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Nová složka" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "VytvoÅ™it novou složku" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Otevřít zvolený soubor" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Uložit" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Uložit vybraný soubor" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Ulož v:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Aktualizace" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Aktualizuj výpis složky" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Nahoru" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "O úroveň výše" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Náhled" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "PÅ™ipojené modely" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "PDB skica" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"POZNÃMKA: jsou uvedeny souÅ™adnice vodíků v amidovém skeletu, ale budou " +"ignorovány. Jejich souÅ™adnice budou aproximovány standardní DSSP analýzou.\n" +"Zvol {0} pokud nechceÅ¡ použít tuto aproximaci.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"POZNÃMKA: jsou uvedeny souÅ™adnice vodíků v amidovém skeletu a budou použity. " +"Výsledky se mohou významnÄ› liÅ¡it od standardní DSSP analýzy.\n" +"Zvol {0} pokud chceÅ¡ ignorovat uvedené souÅ™adnice vodíků.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "arabÅ¡tina" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "AsturÅ¡tina" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "ÃzerbájdžánÅ¡tina" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "BosenÅ¡tina" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "KatalánÅ¡tina" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "ÄŒeÅ¡tina" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "DánÅ¡tina" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "NÄ›mÄina" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "ŘeÄtina" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Australská angliÄtina" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Britská angliÄtina" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Americká angliÄtina" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Å panÄ›lÅ¡tina" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "EstonÅ¡tina" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "BaskiÄtina" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "FinÅ¡tina" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "FaerÅ¡tina" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "FrancouzÅ¡tina" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Fríština" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "GalÅ¡tina" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "ChorvatÅ¡tina" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "MaÄarÅ¡tina" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "ArménÅ¡tina" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonéština" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "ItalÅ¡tina" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "JaponÅ¡tina" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "JavánÅ¡tina" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "KorejÅ¡tina" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "MalajÅ¡tina" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "NorÅ¡tina Bokmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "NizozemÅ¡tina" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "OkcitánÅ¡tina" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "PolÅ¡tina" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "PortugalÅ¡tina" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brazilská portugalÅ¡tina" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "RuÅ¡tina" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "SlovinÅ¡tina" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "SrbÅ¡tina" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Å védÅ¡tina" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "TamilÅ¡tina" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "TelugÅ¡tina" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "TureÄtina" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "UjgurÅ¡tina" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "UkrajinÅ¡tina" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "UzbeÄtina" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "ZjednoduÅ¡ená ÄínÅ¡tina" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "TradiÄní ÄínÅ¡tina" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Nemohu získat třídu pro silové pole {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Nejsou vybrány žádné atomy -- nic na práci!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomy budou minimalizovány." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "nemohu nastavit silové pole {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "nový" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "zpÄ›t (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "znovu (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "stÅ™ed" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "pÅ™idat vodíky" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimalizovat" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "fixovat vodíky a minimalizovat" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "vyÄistit" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "uložit soubor" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "uložit stav" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "invertovat stereochemii kruhu" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "smazat atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "táhnout pro spojení vazbou" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "táhnout atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "táhnout atom (a minimalizovat)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "táhnout a minimalizovat molekulu (dokování)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "zvýšit náboj" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "snížit náboj" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "smazat vazbu" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "jednoduchá" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "dvojitá" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "trojitá" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "zvýšit řád" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "snížit řád" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "rotovat vazbu (SHIFT-DRAG)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "ukonÄit modelovací mód" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Prostorová grupa" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Nic" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "VÅ¡e" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} procesor/y" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "celkem: {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "maximálnÄ›: {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol skriptovací konzole" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Návod pro myÅ¡ :-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Nastavení jazyka" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Systém" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Žádný atom nenahrán" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Konfigurace" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Prvek" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Model/snímek" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Jazyk" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Podle názvu substituentu" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Podle HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Molekulové orbitaly ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symetrie" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informace o modelu" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Vybrat ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "VÅ¡echny {0} modely" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfigurace ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Sbírka {0} modelů" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomů: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "vazeb: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "skupin: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "Å™etÄ›zců: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polymerů: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "Model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Zobrazení {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Hlavní menu" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekuly" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekula {0} ({1} atomů)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "nahraj biomolekulu {0} ({1} atomů)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Nic" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Zobrazit pouze vybrané" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Obrátit výbÄ›r" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Pohled" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "ZepÅ™edu" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Zleva" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Zprava" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Shora" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Zespoda" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Zezadu" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Osy" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Osy" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Osy" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Osy" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Osy" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Osy" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Bílkovina" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Skelet" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Postranní Å™etÄ›zce" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polární substituenty" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Nepolární substituenty" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Zásadité substituenty (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Kyselé substituenty (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Neutrální substituenty" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nukleový" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Báze" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT páry" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC páry" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU páry" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Sekundární struktura" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "VÅ¡echny PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "VÅ¡echna rozpouÅ¡tÄ›dla" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "vÄetnÄ› molekulové vody" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Nevodné rozpouÅ¡tÄ›dlo" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Nevodné HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Sacharid" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Nic z výše uvedeného" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Vzhled" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Schéma" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Kalotový model (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "KuliÄky a tyÄinky" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "TyÄinky" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Drátový model" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Skica (Cartoon)" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Trace (Stopa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomy" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Vypnout" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Vazby" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Zapnout" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Vodíkové můstky" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "VypoÄítat" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Ukázat vodíkové můstky v postranním Å™etÄ›zci" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Ukázat vodíkové můstky v hlavním Å™etÄ›zci" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfidové můstky" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Ukázat disulfidové můstky v postranním Å™etÄ›zci" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Ukázat disulfidové můstky v hlavním Å™etÄ›zci" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Struktury" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Skica s raketami (Cartoon Rockets)" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Stužky (Ribbons)" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Rakety (Rockets)" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Vlákna (Strands)" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibrace" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektory" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spektra" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixelů" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Měřítko {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografie" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "ÄŒervené + tyrkysové brýle" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "ÄŒervené + modré brýle" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "ÄŒervené + zelené brýle" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Cross-eyed (konvergentnÄ›)" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Wall-eyed (divergentnÄ›)" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Popisky" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "symboly prvků" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "symboly s Äísly atomů" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "oÄíslované atomy" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Umístit popisek k atomu" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "VystÅ™edit" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Vpravo nahoÅ™e" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Vpravo dole" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Vlevo nahoÅ™e" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Vlevo dole" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Barvy" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Dle schématu" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Prvek (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Volitelné umístÄ›ní" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekula" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formální náboj" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "ČásteÄný náboj" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Teplota (Relativní)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Teplota (Konstantní)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminokyselina" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "ŘetÄ›zec" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Skupina" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Shapely" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "DÄ›dit (Inherit)" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "ÄŒerná" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Bílá" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Modrozelená" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "ÄŒervená" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Oranžová" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Žlutá" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Zelená" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Modrá" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigová" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Fialová" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Lososová" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Olivová" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "KaÅ¡tanová" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Å edá" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "SvÄ›tle modrá" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Zlatá" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchidejová" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Zneprůhlednit" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Zprůsvitnit" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Pozadí" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Povrchy" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Osy" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "HraniÄní box" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Elementární buňka" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Lupa" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "PÅ™iblížit" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Oddálit" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Rotace" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Nastavit rychlost rotace kolem osy X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Nastavit rychlost rotace kolem osy Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Nastavit rychlost rotace kolem osy Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Nastavit FPS (poÄet snímků za sekundu)" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animace" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Typ animace" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "PÅ™ehrát 1×" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "PÅ™ehrávat dokola" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "PÅ™ehrát" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Zastavit" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Další snímek" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "PÅ™edchozí snímek" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "PÅ™evinout zpÄ›t" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "PÅ™ehrát pozpátku" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Spustit znovu" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Měření" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Dvojklik zahajuje a ukonÄí vÅ¡echna měření" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Klepnout pro změření vzdálenosti" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Klepnout pro změření úhlu" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Klepnout pro změření torze" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "KlepnÄ›te na dva atomy pro zobrazení sekvence v konzoli" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Vymazat výsledky měření" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Naměřené hodnoty" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "nm (1 nm = 1E-9 m)" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Ã… (1 Ã… = 1E-10 m)" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "pm (1 pm = 1E-12 m)" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Nastavit oznaÄování" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "StÅ™ed" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identita" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Popisek" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Vybrat atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Vybrat Å™etÄ›zec" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Vybrat prvek" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "ukonÄit modelovací mód" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Vybrat skupinu" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Vybrat molekulu" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Vybrat vazné místo" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Zobraz operace symetrie" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Ukázat" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol skriptovací konzole" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Obsah souboru" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Záhlaví souboru" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Izopovrchová JVXL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Molekulární orbital typu JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientace" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Prostorová grupa" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "SouÄasný stav" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Soubor" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Obnovit" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Otevřít z PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Otevřít zvolený soubor" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Otevřít" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "NaÄti úplnou elementární buňku" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Otevřít skript" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Uložit kopii {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Uložit skript se stavem" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Uložit skript s historií" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Exportovat obrázek {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Uložit vÅ¡e jako JMOL soubor (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Uložit JVXL isopovrch" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Exportovat {0} 3D model" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "VýpoÄty" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimalizovat strukturu" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Modelování" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Extrahovat MOL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "TeÄkovaný povrch" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van der Waalsův povrch" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Molekulární povrch" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Povrch pro rozpouÅ¡tÄ›dlo (průmÄ›r sondy {0} Ã…)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Povrch přístupný rozpouÅ¡tÄ›dlu (VDW + {0} Ã…)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Znovu naÄíst {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "NaÄti {0} + Zobraz {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "NaÄti + Polyhedra (mnohostÄ›ny)" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Skrýt" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "TeÄkovanÄ›" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Šířka v pixelech" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Šířka v Ã…ngstrémech" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Zvýraznit výbÄ›r (halo)" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Ukázat vodíky" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Ukázat výsledky měření" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Hloubka perspektivy" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol barvy" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "O aplikaci..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "Chyba kompilátoru skriptu ERROR: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "oÄekávány osy x y z" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} není povoleno se zobrazeným modelem v pozadí" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "Å¡patnÄ› spoÄítaný argument" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "vÅ¡echny Millerovy indexy nemohou být rovny nule" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "Å¡patné [R,G,B] barvy" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "oÄekáván booleovský parametr" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "oÄekáván booleovský parametr nebo Äíslo" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "oÄekáván booleovský parametr, Äíslo nebo {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "nelze nastavit hodnotu" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "oÄekávána barva" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "je nutné zadání barvy nebo sady barev (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "oÄekáván příkaz" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} nebo $name nebo (oznaÄení atomů) požadováno" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "nakreslený objekt není definován" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "neoÄekávaný konec skriptovacího příkazu" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "oÄekáváno platné oznaÄení atomu" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "oÄekáváno oznaÄení atomu nebo celé Äíslo" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "oÄekáván název souboru" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "soubor nenalezen" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "nesluÄitelné argumenty" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "nedostateÄné argumenty" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "oÄekáváno celé Äíslo" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "celé Äíslo mimo interval ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "neplatný argument" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "neplatný parametrový příkaz" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "oÄekáváno klíÄové slovo" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "MO koeficienty nejsou dostupné" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "MO index je požadován od 1 do {0}" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "žádné MO báze/koeficienty dostupné pro tento snímek" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "žádná data o obsazení MO dostupná" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Pouze jeden molekulární orbital je dostupný pro tento soubor" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} vyžaduje zobrazení pouze jednoho modelu" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} vyžaduje naÄtení pouze jediného modelu" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Žádná data nejsou dostupná" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"NenaÄteny žádné parciální náboje ze souboru; Jmol je potÅ™ebuje pro " +"poskytutí MEP dat." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Žádná elementární buňka" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "oÄekáváno Äíslo" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "Äíslo musí být ({0} nebo {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "desetinné Äíslo neleží v intervalu ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "oÄekáván název objektu po '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"oÄekávána rovina -- buÄ tÅ™i body nebo oznaÄení atomů nebo {0} nebo {1} nebo " +"{2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "oÄekáván název vlastnosti" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "nenalezená prostorová grupa: {0}" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "oÄekáván citovaný Å™etÄ›zec" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "oÄekáván citovaný Å™etÄ›zec nebo identifikátor" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "příliÅ¡ mnoho specifikovaných bodů rotace" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "příliÅ¡ mnoho úrovní skriptů" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "neznámá vlastnost atomu" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "nerozpoznaná vlastnost vazby" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "neznámý příkaz" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "neznámý výraz (oznaÄení) v průbÄ›hu programu" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "neznámý objekt" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "neznámý parametr: {0}" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "nerozpoznaný {0} parameter v Jmol stavovém skriptu (pÅ™esto nastavený)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "nerozpoznaný SHOW parametr -- použij {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "Co zapsat? {0} nebo {1} \"název souboru\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "Chyba skriptu ERROR: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atomů smazáno" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} vodíkových můstků" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "soubor {0} vytvoÅ™en" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "chybný kontext pro {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "oÄekáváno { number number number }" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "oÄekáván konec příkazu" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "oÄekáván identifikátor nebo specifikace zbytku" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "chybná specifikace atomu" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "chybná specifikace Å™etÄ›zce" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "chybný token výrazu: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "chybná specifikace modelu" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "chybí END pro {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "oÄekáváno Äíslo nebo jméno promÄ›nné" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "oÄekávána specifikace zbytku (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} oÄekávána" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} neoÄekávána" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "nerozpoznaný token výrazu: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "nerozpoznaný token: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} podpÄ›r (struts) pÅ™idáno" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "vymazaná spojení: {0}" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} nových vazeb; {1} zmÄ›nÄ›ných" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Poznámka: Tento kontakt zahrnuje více než jeden model!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "KliknÄ›te pro menu..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Aplet verze {0} {1}.\n" +"\n" +"Open Science projekt.\n" +"\n" +"Pro více informací navÅ¡tivte http://www.jmol.org" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Chyba souboru:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "pÅ™iÅ™adit/nový atom nebo vazbu (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "zobraz poslední vyskakovací kontextové menu (klepni na Jmol frank)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "smazat atom (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "samž vazby (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "nastav tlouÅ¡Å¥ku (zadní rovina; vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "pÅ™esunout atom (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "pÅ™esuň celý DRAW objekt (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "pÅ™esunout specifický DRAW bod ( vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "pÅ™esunout oznaÄení (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "pÅ™esunout atom a minimalizovat molekulu (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "pÅ™esunout a minimalizovat molekulu (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "pÅ™esunout vybrané atomy ( vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "táhnout atomy ve smÄ›ru osy Z (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simulovat multi-touch pomocí myÅ¡i" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "pÅ™esuň navigaÄní body (vyžaduje {0} a {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "vybrat atom" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "spoj atomy (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "vybrat ISOSURFACE bod (vyžaduje {0}" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "vybrat popisek pro skrytí/zobrazení (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"vyber atom, který chceÅ¡ zahrnout do měření (po zahájení měření nebo po {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "vybrat bod nebo atom ke kterému navigovat (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "vybrat DRAW bod (pro měření) (vyžaduje {0}" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "zobraz úplné vyskakovací kontextové menu" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "obnovit (po klepnutí mimo model)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "otoÄit" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "rotovat Å™etÄ›zec kolem vazby (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "otoÄit vybrané atomy (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "Z otáÄení" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"Z otáÄení (horizontální pohyb myÅ¡i) nebo pÅ™iblížení (vertikální pohyb myÅ¡i)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "vybrat atom (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "vyber a táhni atomy (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "zruÅ¡it výbÄ›r skupiny atomů (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "vybrat NONE (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "pÅ™idej tuto skupinu atomů k již vybraným atomům (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "obrátit výbÄ›r (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"jestliže jsou vÅ¡echny vybrány, zruÅ¡ výbÄ›r, nebo pÅ™idej tuto skupinu atomů k " +"již vybraným atomům (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "vyber atom pro zahájení nebo ukonÄení měření" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "nastav desku/slab (pÅ™ední rovina; vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "pÅ™esuň okno s deskou/tlouÅ¡Å¥kou (obÄ› roviny; vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "pÅ™iblížení (podél pravého okraje okna)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"klepnout na dva body pro otoÄení kolem osy proti smÄ›ru hodinových ruÄiÄek " +"(vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"klepnout na dva body pro otoÄení kolem osy po smÄ›ru hodinových ruÄiÄek " +"(vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "zastav pohyb (vyžaduje {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "otáÄej model (klepni a pusÅ¥ tlaÄítko a souÄasnÄ› zastav pohyb)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "pÅ™eložit" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "ZvÄ›tÅ¡ení" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "vybrat jeden Äi více atomů k rotaci okolo osy" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "vybrat dva atomy k rotaci okolo osy" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "vyber jeden nebo více atomů pro zobrazení vzájemné symetrie" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "vyber dva atomy pro zobrazení jejich vzájemné symetrie" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Nastavuji log soubor na {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Nemohu nastavit cestu k log souboru." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "skryté atomy: {0}" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomů vybráno" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Táhni myší pro pÅ™esun popisku" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "schránka není přístupná -- použijte podepsaný applet" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} vodíky pÅ™idány" + +#~ msgid "Hide Symmetry" +#~ msgstr "Skryj symetrii" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Nahrávám Jmol aplet..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} sekund" + +#~ msgid "Java version:" +#~ msgstr "Verze Javy:" + +#~ msgid "1 processor" +#~ msgstr "1 procesor" + +#~ msgid "unknown processor count" +#~ msgstr "neznámý poÄet procesorů" + +#~ msgid "Java memory usage:" +#~ msgstr "Využití pamÄ›ti Javy:" + +#~ msgid "{0} MB free" +#~ msgstr "volných: {0} MB" + +#~ msgid "unknown maximum" +#~ msgstr "neznámé maximum" + +#~ msgid "Open file or URL" +#~ msgstr "Otevřít soubor nebo URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/da.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/da.po new file mode 100755 index 000000000000..de8220d1c1ae --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/da.po @@ -0,0 +1,2636 @@ +# Danish translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:44+0000\n" +"Last-Translator: Kaki \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Grundstof?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol-scriptkonsol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Fil" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Luk" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Hjælp" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Søg..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Kommandoer" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Matematik&funktioner" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Indstil ¶metre" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Mere" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Redigering" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Tilstand" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Kør" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Ryd output" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Ryd input" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historik" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Indlæs" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "tryk CTRL-ENTER for ny linje eller indsæt modeldata og tryk Indlæs" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Beskeder vil blive vist her. Indtast kommandoer i boksen nedenfor. Klik " +"konsollens menupunkt Hjælp for at fÃ¥ hjælp pÃ¥ nettet - denne vil dukke op i " +"et nyt browservindue." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol-scriptredigering" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsol" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Ã…ben" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Forside" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Tjek" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Toppen" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Trin" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pause" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Genoptag" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Stop" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Ryd" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Luk" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "File eller URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Billedtype" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG-kvalitet ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG-komprimering ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG-kvalitet ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ja" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Nej" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Ønsker du at overskrive filen {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Advarsel" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Alle filer" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Annuller" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Om filvælgerdialogen" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Detaljer" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Katalog" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Ã…ben den valgte mappe" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Attributter" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Ændret" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Generisk fil" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Navn" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Filnavn:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Størrelse" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Filer af type:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Type" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Hjælp" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Hjælp til filvælger" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Hjem" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Liste" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Se i:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Fejl ved oprettelse af ny mappe" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Ny mappe" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Opret ny mappe" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Ã…bn den valgte fil" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Gem" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Gem den valgte fil" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Gem i:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Opdatér" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Opdater mappeoversigt" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Op" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Et niveau op" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "ForhÃ¥ndsvisning" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Vedhæft modeller" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "PDB tegneserier" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"BEMÆRK: Hydrogenpositioner pÃ¥ amid-rygraden er til stede og vil blive " +"ignoreret. Deres positioner vil blive tilnærmet som i sædvanlig DSSP-" +"analyse.\n" +"Brug {0} for at undlade at bruge denne tilnærmelse.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"BEMÆRK: Hydrogenpositioner pÃ¥ amid-rygraden er til stede og vil blive brugt. " +"Resultaterne kan være betydeligt forskellige fra sædvanlig DSSP-analyse.\n" +"Brug {0} for at ignorere disse hydrogenpositioner.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabisk" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturisk" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Azerbaijansk" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnisk" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalansk" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Tjekkisk" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Dansk" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Tysk" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Græsk" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Australsk-engelsk" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Britisk engelsk" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Amerikansk engelsk" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spansk" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estisk" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Baskisk" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finsk" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Færøsk" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Fransk" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisisk" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Gælisk" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "kroatisk" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Ungarsk" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armensk" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesisk" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italiensk" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japansk" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javanesisk" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Koreansk" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malay" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norsk (bokmÃ¥l)" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Hollandsk" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitansk" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polsk" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugisisk" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brasiliansk portugisisk" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russisk" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovensk" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbisk" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Svensk" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Tyrkisk" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uyghur" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukrainsk" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Uzbekisk" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Forenklet kinesisk" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Traditionel kinesisk" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Kunne ikke indhente klasse for kraftfelt {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Ingen atomer valgt -- intet at gøre!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomer vil blive minimeret." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "kunne ikke sætte kraftfeltet {0} op" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "ny" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "fortryd (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "omgør (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "centrér" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "tilføj hydrogener" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimer" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "fastlÃ¥s hydrogener og minimer" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "ryd" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "gem fil" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "gem tilstand" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "omvend ring-stereokemi" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "slet atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "træk for at binde" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "træk atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "træk atom (og minimer)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "træk og minimer molekyle (dokning)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "forøg ladning" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "formindsk ladning" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "slet binding" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "enkelt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "dobbelt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "tripel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "forøg orden" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "formindsk orden" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "roter binding (SKIFT-TRÆK)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "afslut modelkit-tilstand" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Rumgruppe" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Ingen" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Alle" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processorer" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB i alt" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maksimum" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol-scriptkonsol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Musemanual" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Oversættelser" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "System" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Ingen atomer indlæst" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Konfigurationer" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Model/billede" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Sprog" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Efter residuumnavn" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Efter HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Molekylorbitaler ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symmetri" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Modelinformation" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Vælg ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Alle {0} modeller" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfiguration ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Samling af {0} modeller" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomer: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "bindinger: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "grupper: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "kæder: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polymerer: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Vis {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Hovedmenu" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekyler" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekyle {0} ({1} atomer)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "indlæs biomolekyle {0} ({1} atomer)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Ingen" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Vis kun de valgte" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Omvend markering" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Vis" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Forside" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Venstre" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Højre" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Set oppefra" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Bund" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Tilbage" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Rygrad" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Sidekæder" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polære residier" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Ikke-polære residier" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Basiske residier (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Sure residier (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Ikke-ladede residier" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nuklein" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Baser" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT-par" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC-par" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU-par" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Sekundær struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Alle PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Kun opløsningsmiddel" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Kun vand" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Ikke-vandigt opløsningsmiddel" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Ikke-vandig HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Kulhydrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Ingen af ovenstÃ¥ende" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Stil" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Skema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK-rumfyldning" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Kugle og pind" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Pinde" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "StÃ¥ltrÃ¥dsramme" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Tegneserie" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Spor" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Fra" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Bindinger" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Til" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Hydrogenbindinger" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Beregn" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Indstil H-bindingers sidekæder" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Indstil H-bindingers rygrad" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfidbindinger" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Indstil SS-bindingers sidekæder" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Indstil SS-bindingers rygrad" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Strukturer" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Tegneserieraketter" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "BÃ¥nd" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Raketter" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Strenge" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibration" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektorer" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spektre" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixels" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Skalér {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografisk" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Rød/cyan-briller" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Rød/blÃ¥-briller" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Rød/grøn-briller" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Skeløjet metode" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Paralleløjet metode" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etiketter" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Med grundstofsymbol" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Med atomnavn" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Med atomnummer" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Placer etiket ved atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Centreret" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Øverst til højre" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Nederst til højre" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Øverst til venstre" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Nederst til venstre" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Farve" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Efter skema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Grundstof (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Alternativ placering" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekyle" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formel ladning" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Delvis ladning" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatur (relativ)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatur (fastlÃ¥st)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminosyre" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Kæde" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Gruppe" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Velformet" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Nedarv" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Sort" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Hvid" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cyan" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Rød" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Orange" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Gul" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Grøn" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "BlÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violet" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Laksefarvet" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Olivenfarvet" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Rødbrun" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "GrÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "SkifferblÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Guld" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orkidé" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Gør ugennemsigtig" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Gør gennemsigtigt" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Baggrund" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Overflader" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Afgrænsningsboks" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Enhedscelle" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Zoom ind" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Zoom ud" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Rotation" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Indstil X-rate" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Indstil Y-rate" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Indstil Z-rate" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Indstil FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animation" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animationstilstand" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Afspil en gang" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Løkke" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Afspil" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Stop" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Næste billede" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Forrige billede" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Spol tilbage" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Baglæns" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Genstart" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "MÃ¥linger" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Dobbeltklik starter og slutter alle mÃ¥linger" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Klik for afstandsmÃ¥ling" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Klik for vinkelmÃ¥ling" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Klik for torsionsmÃ¥ling (dihedral)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Klik pÃ¥ to atomer for at vise en sekvens i konsollen" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Slet mÃ¥linger" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Vis mÃ¥linger" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Aftstandsenhed nanometre" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Afstandsenhed Ã…ngstrøm" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Afstandsenhed pikometre" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Indstil udvælgelse" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Center" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identitet" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etiket" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Vælg atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Vælg kæde" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Vælg element" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "afslut modelkit-tilstand" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Vælg gruppe" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Vælg molekyle" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Vælg sted" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Vis symmetrioperationer" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Vis" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol-scriptkonsol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Filindhold" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Filhoved" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "JVXL-data til isooverflade" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "JVXL-data til molekylær orbital" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Retning" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Rumgruppe" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Nuværende tilstand" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Fil" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Genindlæs" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Ã…bn fra PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Ã…bn den valgte fil" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Ã…ben" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Indlæs hele enhedscellen" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Ã…bn script" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Gem en kopi af {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Gem script med tilstand" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Gem script med historik" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Eksporter {0}-billede" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Gem alle som en JMOL-fil (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Gem JVXL-isooverflade" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Eksporter {0}-3D-model" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Beregning" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimer struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Modelkit" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Udtræk MOL-data" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Prikoverflade" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van Der Waals-overflade" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Molekylæroverflade" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Opløsningsmiddeloverflade ({0}-Ã…ngström probe)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Opløsningsmiddel-tilgængelig overflade (VDW + {0} Ã…ngström)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Genindlæs {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Genindlæs {0} + vis {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Genindlæs + polyeder" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Skjul" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Punkteret" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Pixelbredde" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Ã…ngström-bredde" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Markeringsfremhævning" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Vis hydrogen" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Vis mÃ¥linger" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspektivdybde" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol-farver" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Om..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "scriptkompileringsFEJL: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "forventede x y z-akser" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} er ikke tilladt med baggrundsmodellen vist" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "forkert antal argumenter" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Miller-indeks kan ikke alle være nul." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "ugyldig [R,G,B]-farve" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "forventede boolesk variabel" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "forventede boolesk variabel eller tal" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "forventede boolesk variabel, tal eller {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "Kan ikke fastsætte værdi" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "forventede farve" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "et farve- eller palet-navn (Jmol, Rasmol) er pÃ¥krævet" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "forventede kommando" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} eller $name eller (atomudtryk) kræves" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "tegneobjekt ikke defineret" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "uventet afslutning af script-kommando" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "gyldigt (atomudtryk) forventet" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(atomudtryk) eller heltal forventet" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "forventede filnavn" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "fil ikke fundet" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "inkompatible argumenter" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "utilstrækkelige argumenter" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "heltal forventet" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "heltal uden for interval ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "ugyldigt argument" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ugyldig rækkefølge af parametre" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "forventede nøgleord" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "ingen tilgængelige data for MO-koefficienter" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Der kræves et MO-indeks fra 1 til {0}" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "ingen tilgængelige data for MO-basis/koefficenter for dette billede" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "ingen tilgængelige MO-okkupationsdata" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Kun en enkelt molekylærbital er tilgængelig i denne fil" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} kræver at kun en model vises" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} kræver at kun en model indlæses" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Ingen data tilgængelige" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Ingen delvise ladninger blev læst fra filen; Jmol kræver disse for at tegne " +"MEP-dataene." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Ingen enhedscelle" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "nummer forventet" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "nummer skal være ({0} eller {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "decimaltal uden for interval ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "objektnavn forventet efter \"$\"" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"plan forventet -- enten tre punkter eller atomudtryk eller {0} eller {1} " +"eller {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "egenskabsnavn forventet" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "rumgruppen {0} blev ikke fundet." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "streng i anførselstegn forventet" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "streng i anførselstegn eller variabelnavn forventet" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "der blev angivet for mange rotationspunkter" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "for mange scriptniveauer" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "ukendt atomegenskab" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "ukendt bindingsegenskab" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "ukendt kommando" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "ukendt udtryk ved kørsel" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "ukendt objekt" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "ukendt {0}-parameter" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "ukendt {0}-parameter i Jmol-tilstandsscript (tildelt alligevel)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "ukendt SHOW-parameter -- brug {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "skriv hvad? {0} eller {1} \"filnavn\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "scriptFEJL: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atomer slettet" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} hydrogenbindinger" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "filen {0} dannet" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "ugyldig kontekst for {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "forventede { nummer nummer nummer }" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "forventede afslutning pÃ¥ udtryk" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "forventede identifikator eller residuum" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "ugyldig atomspecifikation" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "ugyldig kædespecifikation" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "ugyldigt udtrykssymbol: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "ugyldig modelspecifikation" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "mangler END til {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "forventede tal eller variabelnavn" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "forventede residuumspecifikation (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "forventede {0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} ikke forventet" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "ukendt udtrykssymbol: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "ukendt symbol: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} afstivere tilføjet" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} forbindelser slettet" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} nye bindinger; {1} ændrede" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Bemærk: Der er mere end en model i denne kontakt!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Klik for menu..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet version {0} {1}.\n" +"\n" +"Et OpenScience-projekt.\n" +"\n" +"Se http://www.jmol.org for mere information" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Filfejl:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "tildel/opret atom eller binding (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "pop den seneste kontekstmenu op (klik pÃ¥ Jmol-mærket)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "slet atom (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "slet binding (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "juster dybde (bagerste plan; kræver {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "flyt atom (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "flyt hele DRAW-objekt (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "flyt specifikt DRAW-punkt (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "flyt etiket (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "flyt atom og minimer molekyle (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "flyt og minimer molekyle (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "flyt valgte atomer (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "træk atomerne i Z retning (requires {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simuler multiberøring ved hjælp af musen)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "parallelforskyd navigationspunkt (kræver {0} og {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "vælg et atom" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "forbind atomer (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "vælg et ISOSURFACE-punkt (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "vælg en etiket for at skifte den mellem skjult/vist (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"vælg et atom for at inkludere det i en mÃ¥ling (efter at have startet en " +"mÃ¥ling eller efter {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "vælg et punkt eller atom at navigere til (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "vælg et DRAW-punkt (til mÃ¥linger) (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "pop den fulde kontekstmenu op" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "nulstil (nÃ¥r der klikkes uden for modellen)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "rotér" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "roter gren rundt om binding (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "roter valgte atomer (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "rotér Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"rotér Z (vandret bevægelse af musen) eller zoom (lodret bevægelse af musen)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "vælg et atom (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "vælg og træk atomer (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "fravælg denne gruppe af atomer (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "vælg INGEN (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "tilføj denne gruppe atomer til sættet af valgte atomer (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "omvend udvalg (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"hvis alle er valgt, sÃ¥ fravælg alle, ellers tilføj denne gruppe af atomer " +"til sættet af valgte atomer (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "vælg et atom for at starte eller afslutte en mÃ¥ling" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "juster plade (slab) (forreste plan; kræver {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "flyt plade (slab)/dybde-vindue (begge planer; kræver {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zoom (langs højre vindueskant)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "klik pÃ¥ to punkter for at rotere rundt om akse mod uret (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "klik pÃ¥ to punkter for at rotere rundt om akse med uret (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "stop bevægelse (kræver {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "rotér model (stryg og slip knap og stop bevægelse samtidig)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "parallelforskyd" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zoom" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "vælg et atom mere for at rotere modellen rundt om en akse" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "vælg to atomer for at rotere modellen rundt om en akse" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "vælg et atom mere for at vise symmetriforhold" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "vælg to atomer for at vise symmetriforholdet mellem dem" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Sætter logfil til {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Kan ikke indstille sti til logfil." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atomer gemt" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomer valgt" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Træk for at flytte etiket" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "udklipsholder er ikke tilgængelig -- brug underskrevet applet" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} hydrogener tilføjet" + +#~ msgid "Hide Symmetry" +#~ msgstr "Skjul symmetri" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Indlæser Jmol-applet..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} sekunder" + +#~ msgid "Java version:" +#~ msgstr "Java-version:" + +#~ msgid "1 processor" +#~ msgstr "1 processor" + +#~ msgid "unknown processor count" +#~ msgstr "ukendt antal processorer" + +#~ msgid "Java memory usage:" +#~ msgstr "Java-hukommelsesforbrug:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB fri" + +#~ msgid "unknown maximum" +#~ msgstr "ukendt maksimum" + +#~ msgid "Open file or URL" +#~ msgstr "Ã…bn fil eller URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/de.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/de.po new file mode 100755 index 000000000000..e941b8512626 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/de.po @@ -0,0 +1,2661 @@ +# German translation of the Jmol applet +# Copyright (C) 2005-2008 by the Jmol Development Team +# This file is distributed under the same license as the Jmol package. +# Daniel Leidert , 2005,2007,2008. +# Sebastian Lisken , 2006. +# Oliver Stueker +# +# Bitte denkte daran, dass *Fachbegriffe* der Chemie und +# verwandter Fachbereiche benötigt und benutzt werden! +# +# +msgid "" +msgstr "" +"Project-Id-Version: JmolApplet 11\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:44+0000\n" +"Last-Translator: cmdrhenner \n" +"Language-Team: none\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Element?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol-Skript-Konsole" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Datei" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Schließen" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Hilfe" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Suchen …" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Befehle" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Mathematische &Funktionen" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "&Parameter festlegen" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Mehr" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Zustand" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Ausführen" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Ausgabe leeren" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Eingabe leeren" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Verlauf" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Laden" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"Strg+Eingabe drücken für einen Zeilenumbruch oder Modelldaten einfügen und " +"auf »Laden« drücken" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Meldungen werden hier erscheinen. Geben Sie Kommandos in der unteren Box " +"ein. Klicken Sie auf das Hilfe-Menü für eine Online-Hilfe, die in einem " +"neuen Browser-Fenster erscheinen wird." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol-Skript-Editor" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsole" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Öffnen" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Vorderseite" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skript" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Prüfen" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "An die Spitze" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Stufe" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pause" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Fortsetzen" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Stoppen" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Leeren" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Schließen" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Datei oder URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Bildtyp" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG-Qualität ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG-Komprimierung ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG-Qualittät ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ja" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Nein" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Möchten Sie die Datei {0} überschreiben?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Warnung" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Alle Dateien" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Abbrechen" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Dialogfeld für Dateiauswahl abbrechen" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Details" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Verzeichnis" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Ausgewähltes Verzeichnis öffnen" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Attribute" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Verändert" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Allgemeine Datei" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Name" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Dateiname:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Größe" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Dateityp:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Typ" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Hilfe" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Hilfe für Dateiauswahl" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Persönlicher Ordner" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Liste" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Suchen in:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Fehler beim Erstellen eines neuen Ordners" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Neuer Ordner" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Neuen Ordner erstellen" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Ausgewählte Datei öffnen" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Speichern" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Ausgewählte Datei speichern" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Speichern in:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Aktualisieren" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Verzeichnisliste aktualisieren" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Nach oben" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Eine Ebene nach oben" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Vorschau" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Modelle anhängen" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "PDB-Zeichentrick" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"HINWEIS: Wasserstoff Positionen der Backbone Amide sind vorhanden und werden " +"ignoriert. Ihre Positionen werden angenähert, so wie in der Standard DSSP " +"Analyse.\n" +"Verwenden Sie {0} um diese Annäherung nicht zu verwenden.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"HINWEIS: Wasserstoff Positionen der Backbone Amide sind vorhanden und werden " +"verwendet. Das Ergebnis kann signifikant von der Standard-DSSP-Analyse " +"abweichen.\n" +"Verwenden Sie {0} um diese Annäherung nicht zu verwenden.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "arabisch" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturisch" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Aserbaidschanisch" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnisch" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Katalanisch" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Tschechisch" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Dänisch" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Deutsch" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Griechisch" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Australisches Englisch" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "britisches Englisch" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "amerikanisches Englisch" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spanisch" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estnisch" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Baskisch" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finnisch" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Färöisch" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Französisch" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Friesisch" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Galizisch" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Kroatisch" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Ungarisch" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armenisch" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesisch" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italienisch" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japanisch" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javanisch" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Koreanisch" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malaiisch" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norwegisches BokmÃ¥l" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Niederländisch" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Okzitanisch" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polnisch" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugiesisch" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brasilianisches Portugiesisch" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russisch" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slowenisch" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbisch" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Schwedisch" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Türkisch" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uigurisch" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukrainisch" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Usbekisch" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Chinesisch (vereinfacht)" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Chinesisch (traditionell)" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Kann keine Güteklasse für Karftfeld {0} feststellen" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Keine Atome ausgewählt -- es gibt nichts zu tun!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} Atome werden minimiert" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "kann Kraftfeld {0} nicht einrichten" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "Neu" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "Rückgängig (Strg+Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "Wiederherstellen (Strg+Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "Mittelpunkt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "Wasserstoffe hinzufügen" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimieren" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "Wasserstoffe fixieren und minimieren" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "leeren" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "Datei speichern" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "Zustand speichern" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "invertiere Ring-Stereochemie" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "Atom löschen" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "verbinden durch Ziehen" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "Atom verschieben" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "Atom verschieben (und minimieren)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "Molekül verschieben und minimieren (Docking)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "Ladung erhöhen" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "Ladung verringern" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "Bindung löschen" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "einzeln" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "doppelt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "dreifach" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "Bindunggsgrad erhöhen" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "Bindunggsgrad vermindern" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "Bindung rotieren (Umschalttaste+Ziehen)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "ModelKit Modus verlassen" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Raumgruppe" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Nichts" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Alle(s)" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} Prozessoren" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB insgesamt" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maximal" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol-Skript-Konsole" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Maus-Handbuch" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Ãœbersetzungen" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "System" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Keine Atome geladen" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Einstellungen" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Modell/FRame" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Sprache" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Nach Residuen" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Nach HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Molekülorbital ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symmetrie" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Modelldaten" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Auswahl ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Alle {0} Modelle" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfigurationen ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Gesamt {0} Modelle" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "Atome: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "Bindungen: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "Gruppen: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "Ketten: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "Polymere: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "Modell {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Ansicht {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Hauptmenü" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomoleküle" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "Biomolekül {0} ({1} Atome)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "Lade Biomolekül {0} ({1} Atome)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Nichts" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Nur Auswahl anzeigen" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Auswahl invertieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Ansicht" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Vorderseite" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Links" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Rechts" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Oberseite" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Unterseite" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Rückseite" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Achsen" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Achsen" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Achsen" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Achsen" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Achsen" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Achsen" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Primärstruktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Seitenketten" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polare Residuen" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Unpolare Residuen" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Basische Residuen (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Saure Residuen (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Ungeladene Residuen" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nukleinsäuren" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Basen" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT-Paare" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC-Paare" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU-Paare" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Sekundärstruktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Alle PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Alles Lösungsmittel" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Alles Wasser" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Nichtwässiges Lösungsmittel" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Nichtwässiges HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Kohlenhydrate" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Keine der genannten" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Stil" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Schema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Kalotten" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Kugel-Stab" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Stäbchen" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Drahtgitter" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Cartoon" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Spur" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atome" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Aus" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% Van-der-Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Bindungen" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "An" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Wasserstoff(brücken)bindungen" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Berechnen" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Setze H-Brücken Seitenkette" + +# The term "Backbone" seems to be commen in German too: +# http://de.wikipedia.org/wiki/Backbone_(Biochemie) +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Setze H-Brücken Backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfidbindungen" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Setze SS-Bindungen Seitenkette" + +# The term "Backbone" seems to be commen in German too: +# http://de.wikipedia.org/wiki/Backbone_(Biochemie) +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Setze SS-Bindungen Backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Strukturen" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Cartoon Raketen" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Bänder" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Raketen" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Bänder" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Schwingung" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektoren" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spektren" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} Pixel" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Skalierung {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografie" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "3D-Brille Rot/Cyan" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "3D-Brille Rot/Blau" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "3D-Brille Rot/Grün" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Kreuzblick" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Parallelblick" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Beschriftungen" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Mit Elementsymbol" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Mit Atomname" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Mit Atomnummer" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Beschriftung am Atom positionieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Zentriert" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Oben rechts" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Unten rechts" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Oben links" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Unten links" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Farbe" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Nach Schema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Element (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Alternative Lage" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekül" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formalladung" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Partialladung" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatur (relativ)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatur (fest)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminosäure" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Kette" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Gruppe" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Schattenhaft" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Umkehren" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Schwarz" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Weiß" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cyan" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Rot" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Orange" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Gelb" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Grün" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Blau" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violett" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Lachsrosa" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Olivgrün" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Kastanienbraun" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Grau" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Schieferblau" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Gold" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchideenrosa" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Lichtundurchlässig machen" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Lichtdurchlässig machen" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Hintergrund" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Oberflächen" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Achsen" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Zeichen-Box" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Elementarzelle" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Vergößerung" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Vergrößern" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Verkleinern" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Spin" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "X-Rate einstellen" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Y-Rate einstellen" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Z-Rate einstellen" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Framerate einstellen" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animation" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animationsmodus" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Einmal abspielen" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Schleife" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Abspielen" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Anhalten" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Nächster Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Vorheriger Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Zurückspulen" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Umkehren" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Neustart" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Messungen" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Doppelklick startet und beendet alle Messungen" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Abstand messen" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Winkel messen" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Torsions-/Diederwinkel messen" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Klicke zwei Atome an um eine Sequenz in der Konsole anzuzeigen" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Messwerte löschen" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Messwerte listen" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Abstand in Nanometer" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Abstand in Ã…ngström" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Abstand in Picometer" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Auswahlmodus einstellen" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Zentriert" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identifiziere" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Beschriftung" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Atom selektieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Kette selektieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Element selektieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "ModelKit Modus verlassen" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Gruppe selektieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Molekül selektieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Seite selektieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Zeige Symmetrie Operation" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Anzeigen" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol-Skript-Konsole" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Dateininhalt" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Dateiheader" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Isoflächedaten JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Molekülorbitaldaten JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modell" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientierung" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Raumgruppe" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Aktueller Zustand" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Datei" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Neu Laden" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Aus PDB öffnen" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Ausgewählte Datei öffnen" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Öffnen" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Lade gesamte Elementarzelle" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Skript öffnen" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Eine Kopie von {0} speichern" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Skript mit Status speichern" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Skript mit Verlauf speichern" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "exportiere {0} Abbild" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Alles als Jmol-Datei (zip) speichern" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "speichere JVXL Isooberfläche" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "expotiere {0} 3D Modell" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Berechnung" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "optimiere Struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Model Kit" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "MOL-Daten extrahieren" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Gepunktete Oberfläche" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van-der-Waals Oberfläche" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Moleküloberfläche" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Lösungsmittel Oberfläche ({0}-Angström Sonde)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Lösungsmittel-zugängliche Oberfläche \"SAS\" (VDW + {0} Ã…)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Erneut laden {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Neuladen {0} + Anzeige {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Neu Laden + Polyhedra" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Verbergen" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Gepunktet" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Pixelbreite" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Ã…ngström-Breite" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Auswahl Halo" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Wasserstoffe anzeigen" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Messungen anzeigen" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspektivische Tiefe" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol Farben" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Ãœber..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "Skript-Compiler FEHLER: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x y z Achse erwartet" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} nicht erlaubt mit angezeigtem Hintergrund-Modell" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "falsche Argument Anzahl" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Nicht alle Miller-Indices können Null sein." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "fehlerhafte [R,G,B] Farbe" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "Logischer Term (Boolean) erwartet" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "Logischer Term (Boolean) oder Zahl erwartet" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "Logischer Term (Boolean), Zahl oder {0} erwartet" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "Wert konnte nicht gesetzt werden" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "Farbe erwartet" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "Eine Farbe oder ein Palettenname (Jmol, Rasmol) wird benötigt" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "Befehl erwartet" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} oder $name oder (Ausdruck) wird benötigt" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "Zeichnungs-Objekt nicht definiert" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "Unerwartetes Ende des Skript Befehls" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "gültiger (Atom Ausdruck) erwartet" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(Atom Ausdruck) oder Ganzzahl erwartet" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "Dateiname erwartet" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "Datei nicht gefunden" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "inkompatible Argumente" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "zu wenige Argumente" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "Ganzzahl erwartet" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "Ganzzahl nicht im gültigen Bereich ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "ungültiges Argument" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ungültige Reihenfolge der Parameter" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "Schlüsselwort erwartet" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "keine MO Koeffizient Daten vorhanden" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Ein MO Index zwischen 1 und {0} wird benötigt" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "für diesen Frame sind keine MO Basis/Koeffizient Daten verfügbar" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "Keine Daten über die MO-Besetzung vorhanden" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "In dieser Datei isr nur ein Molekül-Orbital verfügbar" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} erfordert, dass nur ein Modell angezeigt wird" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} macht es erforderlich, dass nur ein Modell geladen wird" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Keine Daten verfügbar." + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Aus der Datei wurden keine Partialladungen gelesen; Jmol benötigt diese, um " +"die MEP-Daten darzustellen." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Keine Elementarzelle" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "Zahl erwartet" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "Zahl muss ({0} or {1}) sein" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "Dezimalzahl nicht im gültigen Bereich ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "Objektname erwartet nach '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"Fläche erwartet -- entweder drei Punkte oder Atom-Ausdrücke oder {0} oder " +"{1} oder {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "Eigenschafts Name erwartet" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "Raumgruppe {0} nicht gefunden" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "In Anführungszeichen gesetzte Zeichenkette erwartet" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "In Anführungszeichen gesetzte Zeichenkette oder Bezeichner erwartet" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "zu viele Rotationspunkte benannt" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "zu viele Skript-Ebenen" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "nicht erkannte Atom-Eigenschaft" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "nicht erkannte Bindungs-Eigenschaft" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "nicht erkannter Befehl" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "zur Laufzeit nicht erkannter Ausdruck" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "unbekanntes Objekt" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "unbekannter {0} Parameter" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "Unbekannter Parameter {0} in Jmol-Zustands-Skript (trotzdem gesetzt)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "unbekannter SHOW parameter -- benutze {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "Was schreiben? {0} oder {1} \"Dateiname\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "Skript FEHLER: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} Atome gelöscht" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} Wasserstoff(brücken)bindungen" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "Datei {0} erstellt" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "Ungültiger Kontext für {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ Zahl Zahl Zahl } erwartet" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "Ende des Ausdrucks erwartet" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "Bezeichner oder Residue-Spezifikation erwartet" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "ungültige Atom-Spezifikation" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "ungültige Ketten-Spezifikation" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "ungültiges Ausdrucks-Token: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "ungültige Modell-Spezifikation" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "fehlendes END für {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "Zahl oder Variablenname erwartet" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "Residue Spezifikation (ALA, AL?, A*) erwartet" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} erwartet" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} unerwartet" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "unbekanntes Ausdrucks-Token: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "Unbekanntes Token: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} Streben hunzugefügt" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} Bindungen gelöscht" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} neue Bindungen; {1} verändert" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "HINWEIS: Mehr als ein Modell ist in diesen Kontakt involviert!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Klicken um in das Menü zu kommen..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol-Applet Version {0} {1}.\n" +"\n" +"Ein OpenScience-Projekt.\n" +"\n" +"Mehr Informationen unter http://www.jmol.org." + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Datei-Fehler:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "zuweisen/neues Atom oder Bindung (erfordert {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "Letztes Kontextmenü aufklappen (Jmol-Emblem anklicken)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "Atom löschen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "Bindung löschen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "Tiefe anpassen (hintere Ebene; benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "Atom verschieben (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "ein ganzes DRAW Objekt verschieben (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "einen bestimmten DRAW-Punkt verschieben (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "Beschriftungen verschieben (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "Atom verschieben und Molekül minimieren (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "bewege und minimiere Molekül (erfordert {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "Ausgewählte Atome bewegen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "ziehe Atome in Z-Richtung (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "multi-touch simulieren (mit der Maus)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "Navigationspunkt verschieben (benötigt {0} und {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "Atom auswählen" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "Atome verbinden (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "wähle einen ISOSURFACE Punkt (benötigt {0}" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" +"Eine Beschriftung auswählen um es zu verstecken/anzuzeigen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"ein Atom auswählen um es in einer Messung zu verwenden (nach dem Starten " +"einer Messung oder nach {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "wähle einen Punkt oder Atom als Navigations-Ziel (erfordert {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "wähle einen DRAW Punkt (für Messungen) (erfordert {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "komplettes Kontextmenü öffnen" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "zurücksetzen (wenn neben dem Modell geklickt)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "drehen" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "rotiere Verzweigung um Bindung (erfordert {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "Ausgewählte Atome drehen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "rotieren Z-Achse" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"rotieren Z-Achse (horizontale Bewegung der Maus) oder zoomen (vertikale " +"Bewegung der Maus)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "ein Atom auswählen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "wähle und verschiebe Atome (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "Auswahl für diese Gruppe von Atomen aufheben (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "nichts auswählen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" +"diese Gruppe von Atomen den ausgewählten Atomen hinzufügen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "Auswahl hin- und herschalten (erfordert {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"wenn alle ausgewählt sind, wähle alle ab, ansonsten füge diese Gruppe von " +"Atomen der Menge ausgewählten Atome hinzu (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "Atom auswählen um Messung zu initiieren oder abzuschließen" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "Schnittfläche anpassen (vordere Ebene; benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" +"Schnittfläche/Tiefe Ausschnitt verschieben (beide Ebenen; benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "Zoom (entlang der rechten Bildkante)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"klicke zwei Atome an um gegen den Uhrzeigersinn um die Achse zu drehen " +"(erfordert {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"klicke zwei Atome an um im Uhrzeigersinn um die Achse zu drehen (erfordert " +"{0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "Bewegung stoppen (benötigt {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"Modell in Rotation versetzen (wischen und Knopf loslassen und gleichzeitig " +"Bewegung stoppen)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "verschieben" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "Zoom" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "wähle ein weiteres Atom um das Modell um eine Achse zu drehen" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "wähle zwei Atome um das Modell um eine Achse zu drehen" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "wähle ein oder mehrere Atome um die Symmetrie-Beziehung anzuzeigen" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "wähle zwei Atome um ihre Symmetrie-Beziehung anzuzeigen" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Stelle Log Datei auf {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Kann Pfad für Log-Datei nicht setzen" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} Atome versteckt" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} Atome ausgewählt" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Ziehen um Beschriftung zu bewegen." + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" +"auf den Notizblock kann nicht zugegriffen werden -- verwenden Sie das " +"signierte Miniprogramm" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} Wasserstoff-Brücken hinzugefügt" + +#~ msgid "Hide Symmetry" +#~ msgstr "Symetrie verstecken" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Jmol-Applet wird geladen …" + +#~ msgid " {0} seconds" +#~ msgstr " {0} Sekunden" + +#~ msgid "Java version:" +#~ msgstr "Java Version" + +#~ msgid "1 processor" +#~ msgstr "1 Prozessor" + +#~ msgid "unknown processor count" +#~ msgstr "Prozessoranzahl unbekannt" + +#~ msgid "Java memory usage:" +#~ msgstr "Speicherbedarf von Java:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB frei" + +#~ msgid "unknown maximum" +#~ msgstr "Maximum unbekannt" + +#~ msgid "Open file or URL" +#~ msgstr "Datei oder URL öffnen" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/el.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/el.po new file mode 100755 index 000000000000..9e24468091cb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/el.po @@ -0,0 +1,2605 @@ +# Greek translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Dimitrios - Georgios Kontopoulos \n" +"Language-Team: Greek \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Στοιχείο;" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Κονσόλα Script του Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "ΑÏχείο" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Κλείνω" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Βοήθεια" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Αναζήτηση..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Κατάσταση" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "ΙστοÏικό" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "ΦόÏτωση" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Κονσόλα" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Άνοιγμα" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Έλεγχος" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "ΠαÏση" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Συνέχιση" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Απαλοιφή" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Κλείνω" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "ΑÏχείο ή URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "ΤÏπος εικόνας" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Ποιότητα JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Συμπίεση PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Ποιότητα PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Îαι" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Όχι" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Θέλετε να αντικαταστήσετε το αÏχείο {0};" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Όλα τα ΑÏχεία" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "ΑκÏÏωση" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Ενότητες:" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Κατάλογος" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Άνοιγμα επιλεγμένου καταλόγου" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Όνομα" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Όνομα αÏχείου:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Μέγεθος" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "ΑÏχεία Ï„Ïπου:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Βοήθεια" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Βοήθεια για τον ΕπιλογέαΑÏχείων" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "ΑÏχική" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Λάθος δημιουÏγίας νέου φακέλου" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Îέος Φάκελος" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "ΔημιουÏγία Îέου Φακέλου" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Άνοιγμα επιλεγμένου αÏχείου" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Αποθήκευση" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Αποθήκευση επιλεγμένου αÏχείου" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Αποθήκευση στο:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "ΕνημέÏωση" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Πάνω" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Ένα επίπεδο πάνω" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "Εντάξει" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "ΠÏοεπισκόπηση" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "ΑÏαβικά" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Καταλανικά" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Τσέχικα" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Δανέζικα" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "ΓεÏμανικά" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Ελληνικά" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Αγγλικά (Îœ. Î’Ïετανίας)" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Αγγλικά (ΑμεÏικής)" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Ισπανικά" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Εσθονικά" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Îήσων ΦεÏόε" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Γαλλικά" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "ΟυγγÏικά" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Ινδονησιακά" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Ιταλικά" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Ιαπωνικά" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "ΚοÏεάτικα" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Ολλανδικά" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Πολωνέζικα" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "ΠοÏτογαλικά" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "ΠοÏτογαλικά Î’Ïαζιλίας" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Ρωσικά" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Σλοβένικα" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Σουηδικά" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "ΤοÏÏκικα" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "ΟυκÏανικά" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Απλοποιημένα Κινέζικα" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "ΠαÏαδοσιακά Κινέζικα" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Δεν επιλέχθηκαν άτομα -- δεν υπάÏχει κάτι να κάνω!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "νέο" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "αναίÏεση (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "Ï€Ïοσθήκη υδÏογόνων" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "αποθήκευση αÏχείου" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "διαγÏαφή ατόμου" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "αÏξηση φοÏτίου" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "μείωση φοÏτίου" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "διαγÏαφή δεσμοÏ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "μονός" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "διπλός" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "Ï„Ïιπλός" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Όλα" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} επεξεÏγαστές" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB σÏνολο" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB μέγιστο" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Κονσόλα Script του Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "ΜεταφÏάσεις" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "ΣÏστημα" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Δεν φοÏτώθηκαν άτομα" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Ρυθμίσεις" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Στοιχείο" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Γλώσσα" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Κατά Όνομα Καταλοίπου" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "ΜοÏιακά ΤÏοχιακά ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "ΣυμμετÏία" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "ΠληÏοφοÏίες Μοντέλου" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Επιλογή ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "άτομα: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "δεσμοί: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "ομάδες: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "αλυσίδες: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "πολυμεÏή: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "μοντέλο {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "ΚεντÏικό ΜενοÏ" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "ΒιομόÏια" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "βιομόÏιο {0} ({1} άτομα)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "φόÏτωση βιομοÏίου {0} ({1} άτομα)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Άξονες" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Άξονες" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Άξονες" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Άξονες" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Άξονες" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Άξονες" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "ΠÏωτεÎνη" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Ραχοκοκαλιά" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "ΠλευÏικές Αλυσίδες" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Πολικά Κατάλοιπα" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Μη Πολικά Κατάλοιπα" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Βασικά Κατάλοιπα (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Όξινα Κατάλοιπα (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Μη ΦοÏτισμένα Κατάλοιπα" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Îουκλεϊκό" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Βάσεις" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "ζεÏγη AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "ζεÏγη GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "ζεÏγη AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "ΔευτεÏοταγής Δομή" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "ΕτεÏοάτομα" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Όλος ο ΔιαλÏτης" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Όλο το ÎεÏÏŒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Μη υδατικός ΔιαλÏτης" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "ΠÏοσδέτης" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "ΥδατάνθÏακας" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Κανένα από τα παÏαπάνω" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "ΚαÏτοÏν" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Άτομα" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Δεσμοί" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Δεσμοί ΥδÏογόνου" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Δισουλφιδικοί Δεσμοί" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Δομές" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "ΚοÏδέλες" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} εικονοστοιχεία" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Κλίμακα {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Ετικέτες" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Με το ΣÏμβολο του Στοιχείου" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Με το Όνομα του Ατόμου" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Με τον ΑÏιθμό του Ατόμου" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Πάνω Δεξιά" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Κάτω Δεξιά" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Πάνω ΑÏιστεÏά" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Κάτω ΑÏιστεÏά" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "ΧÏώμα" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "ΜόÏιο" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "ΜεÏικό ΦοÏτίο" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "ΘεÏμοκÏασία (Σχετική)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "ΑμινοξÏ" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Αλυσίδα" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Ομάδα" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "ΜονομεÏές" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "ΜαÏÏο" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Λευκό" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Κυανό" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Κόκκινο" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "ΠοÏτοκαλί" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "ΚίτÏινο" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "ΠÏάσινο" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Μπλε" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Βιολετί" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Λαδί" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "ΓκÏι" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "ΧÏυσό" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "ΠαÏασκήνιο" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Άξονες" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Στοιχειώδης κυψελίδα" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "ΠαλινδÏομικά" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "ΑναπαÏαγωγή" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "ΜετÏήσεις" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Με διπλό κλικ ξεκινοÏν και τελειώνουν όλες οι μετÏήσεις" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Κάντε κλικ για μέτÏηση απόστασης" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Κάντε κλικ για μετÏήση γωνίας" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "ΔιαγÏαφή μετÏήσεων" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Μονάδες απόστασης νανόμετÏα" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Μονάδες απόστασης Angstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Μονάδες απόστασης πικόμετÏα" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Επιλογή ατόμου" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Επιλογή αλυσίδας" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Επιλογή στοιχείου" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Επιλογή ομάδας" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Επιλογή μοÏίου" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Κονσόλα Script του Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "ΠεÏιεχόμενα ΑÏχείου" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Κεφαλίδα ΑÏχείου" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Μοντέλο" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "ΠÏοσανατολισμός" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "ΑÏχείο" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Άνοιγμα από την PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Άνοιγμα επιλεγμένου αÏχείου" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Άνοιγμα" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Άνοιγμα script" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Αποθήκευση αντιγÏάφου από {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Εξαγωγή {0} εικόνας" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Αποθήκευσέ τα όλα ÏŽÏ‚ αÏχείο JMOL (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Εξαγωγή {0} 3D μοντέλου" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Υπολογισμός" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Βελτίωση δομής" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "Επιφάνεια van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "ΜοÏιακή Επιφάνεια" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "ΕπαναφόÏτωση {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "ΑπόκÏυψη" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Πλάτος εικονοστοιχείου" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Πλάτος Angstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Εμφάνιση ΥδÏογόνων" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Δείξε ΜετÏήσεις" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Βάθος ΠÏοοπτικής" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "ΧÏώματα RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "δε βÏέθηκε το αÏχείου" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "ασÏμβατα οÏίσματα" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "ανεπαÏκή οÏίσματα" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "μη έγκυÏο ÏŒÏισμα" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Μόνο ένα μοÏιακό Ï„Ïοχιακό είναι διαθέσιμο σε αυτό το αÏχείο" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Δεν υπάÏχουν διαθέσιμα δεδομένα" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Δεν υπάÏχει στοιχειώδης κυψελίδα" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "ο αÏιθμός Ï€Ïέπει να είναι ({0} ή {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "μη αναγνωÏίσιμη εντολή" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "μη αναγνωÏίσιμο αντικείμενο" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "μη αναγνωÏίσιμη {0} παÏάμετÏος" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} άτομα διαγÏάφηκαν" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} δεσμοί υδÏογόνου" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "αÏχείο {0} δημιουÏγήθηκε" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, fuzzy, java-format +msgid "{0} struts added" +msgstr "{0} υδÏογόνα Ï€Ïοστέθηκαν" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} συνδέσεις διαγÏάφηκαν" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} νέοι δεσμοί, {1} Ï„Ïοποποιήθηκαν" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Κάντε κλικ για μενοÏ..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Λάθος ΑÏχείου:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "διαγÏαφή ατόμου (απαιτείται {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "διαγÏαφή Î´ÎµÏƒÎ¼Î¿Ï (απαιτείται {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "μετακίνηση ατόμου (απαιτείται {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "μετακίνηση επιλεγμένων ατόμων (απαιτείται {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "επιλέξτε ένα άτομο" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "σÏνδεση ατόμων (απαιτείται {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "πεÏιστÏοφή" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "πεÏιστÏοφή επιλεγμένων ατόμων (απαιτείται {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "πεÏιστÏοφή του Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "επιλέξτε ένα άτομα (απαιτείται {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "επιλέξτε ένα άτομο για να ξεκινήσει ή να ολοκληÏωθεί μια μέτÏηση" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "μετάφÏαση" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" +"επιλέξτε ένα ακόμα άτομο για να πεÏιστÏαφεί το μοντέλο γÏÏω από έναν άξονα" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "επιλέξτε δÏο άτομα για να πεÏιστÏαφεί το μοντέλο γÏÏω από έναν άξονα" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "επιλέξτε ένα ακόμα άτομο για να απεικονιστεί η σχέση συμμετÏίας" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "επιλέξτε δÏο άτομα για να απεικονιστεί η σχέση συμμετÏίας ανάμεσά τους" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} άτομα επιλέχτηκαν" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} υδÏογόνα Ï€Ïοστέθηκαν" + +#~ msgid "Hide Symmetry" +#~ msgstr "ΑπόκÏυψη ΣυμμετÏίας" + +#~ msgid " {0} seconds" +#~ msgstr " {0} δευτεÏόλεπτα" + +#~ msgid "Java version:" +#~ msgstr "Έκδοση Java:" + +#~ msgid "1 processor" +#~ msgstr "1 επεξεÏγαστής" + +#~ msgid "unknown processor count" +#~ msgstr "άγνωστος αÏιθμός επεξεÏγαστών" + +#~ msgid "Java memory usage:" +#~ msgstr "ΧÏήση μνήμης από Java:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} ελεÏθεÏα MB" + +#~ msgid "unknown maximum" +#~ msgstr "άγνωστο μέγιστο" + +#~ msgid "Open file or URL" +#~ msgstr "Άνοιγμα αÏχείου ή URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/en_GB.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/en_GB.po new file mode 100755 index 000000000000..3b33c008fc00 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/en_GB.po @@ -0,0 +1,2636 @@ +# English (United Kingdom) translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:44+0000\n" +"Last-Translator: Nicolas Vervelle \n" +"Language-Team: English (United Kingdom) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Element?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol Script Console" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "File" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Close" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Help" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Search..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Commands" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Maths &Functions" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Set &Parameters" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&More" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "State" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Run" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Clear Output" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Clear Input" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "History" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Load" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "press CTRL-ENTER for new line or paste model data and press Load" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol Script Editor" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Console" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Open" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Front" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Check" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Top" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Step" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pause" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Resume" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Halt" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Clear" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Close" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "File or URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Image Type" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG Quality ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG Compression ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG Quality ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Yes" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "No" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Do you want to overwrite file {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Warning" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "All Files" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Cancel" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Abort file chooser dialog" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Details" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Directory" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Open selected directory" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Attributes" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modified" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Generic File" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Name" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "File Name:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Size" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Files of Type:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Type" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Help" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "FileChooser help" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Home" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "List" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Look In:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Error creating new folder" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "New Folder" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Create New Folder" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Open selected file" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Save" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Save selected file" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Save In:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Update" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Update directory listing" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Up" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Up One Level" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Preview" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Append models" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "PDB cartoons" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabic" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturian" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Azerbaijani" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnian" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalan" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Czech" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danish" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "German" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Greek" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Australian English" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "British English" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "American English" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spanish" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonian" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Basque" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finnish" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Faroese" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "French" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisian" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Galician" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Croatian" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Hungarian" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armenian" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesian" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italian" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japanese" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javanese" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Korean" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malay" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norwegian Bokmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Dutch" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitan" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polish" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portuguese" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brazilian Portuguese" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russian" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovenian" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbian" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Swedish" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turkish" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uyghur" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukrainian" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Uzbek" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Simplified Chinese" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Traditional Chinese" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Could not get class for force field {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "No atoms selected -- nothing to do!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atoms will be minimised." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "could not setup force field {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "new" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "undo (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "redo (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "centre" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "add hydrogens" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimise" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "fix hydrogens and minimise" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "clear" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "save file" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "save state" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "invert ring stereochemistry" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "delete atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "drag to bond" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "drag atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "drag atom (and minimise)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "drag and minimise molecule (docking)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "increase charge" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "decrease charge" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "delete bond" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "single" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "double" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "triple" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "increase order" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "decrease order" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "rotate bond (SHIFT-DRAG)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "exit modelkit mode" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Space group" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "None" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "All" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processors" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB total" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maximum" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol Script Console" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Mouse Manual" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Translations" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "System" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "No atoms loaded" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Configurations" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Model/Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Language" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "By Residue Name" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "By HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Molecular Orbitals ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symmetry" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Model information" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Select ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "All {0} models" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configurations ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Collection of {0} models" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atoms: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "bonds: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "groups: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "chains: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polymers: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "View {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Main Menu" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolecules" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolecule {0} ({1} atoms)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "load biomolecule {0} ({1} atoms)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "None" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Display Selected Only" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Invert Selection" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "View" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Front" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Left" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Right" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Top" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Bottom" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Back" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Side Chains" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polar Residues" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Nonpolar Residues" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Basic Residues (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Acidic Residues (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Uncharged Residues" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nucleic" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Bases" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT pairs" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC pairs" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU pairs" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Secondary Structure" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "All PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "All Solvent" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "All Water" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Nonaqueous Solvent" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Nonaqueous HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Carbohydrate" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "None of the above" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Style" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Scheme" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK Spacefill" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Ball and Stick" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Sticks" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Wireframe" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Cartoon" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Trace" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atoms" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Off" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Bonds" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "On" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Hydrogen Bonds" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Calculate" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Set H-Bonds Side Chain" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Set H-Bonds Backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfide Bonds" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Set SS-Bonds Side Chain" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Set SS-Bonds Backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Structures" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Cartoon Rockets" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Ribbons" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Rockets" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Strands" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibration" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vectors" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spectra" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixels" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Scale {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereographic" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Red+Cyan glasses" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Red+Blue glasses" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Red+Green glasses" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Cross-eyed viewing" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Wall-eyed viewing" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Labels" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "With Element Symbol" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "With Atom Name" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "With Atom Number" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Position Label on Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Centred" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Upper Right" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Lower Right" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Upper Left" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Lower Left" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Colour" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "By Scheme" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Element (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Alternative Location" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molecule" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formal Charge" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Partial Charge" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperature (Relative)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperature (Fixed)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Amino Acid" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Chain" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Group" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Shapely" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Inherit" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Black" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "White" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cyan" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Red" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Orange" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Yellow" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Green" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Blue" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violet" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmon" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Olive" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Maroon" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Grey" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Slate Blue" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Gold" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchid" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Make Opaque" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Make Translucent" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Background" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Surfaces" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Boundbox" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Unit cell" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Zoom In" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Zoom Out" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Spin" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Set X Rate" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Set Y Rate" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Set Z Rate" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Set FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animation" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animation Mode" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Play Once" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrome" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Loop" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Play" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Stop" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Next Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Previous Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Rewind" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Reverse" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Restart" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Measurements" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Double-Click begins and ends all measurements" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Click for distance measurement" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Click for angle measurement" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Click for torsion (dihedral) measurement" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Click two atoms to display a sequence in the console" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Delete measurements" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "List measurements" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Distance units nanometers" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Distance units Angstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Distance units picometers" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Set picking" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Center" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identity" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Label" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Select atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Select chain" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Select element" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "exit modelkit mode" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Select group" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Select molecule" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Select site" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Show symmetry operation" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Show" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol Script Console" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "File Contents" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "File Header" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Isosurface JVXL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Molecular orbital JVXL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientation" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Space group" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Current state" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "File" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Reload" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Open from PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Open selected file" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Open" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Load full unit cell" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Open script" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Save a copy of {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Save script with state" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Save script with history" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Export {0} image" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Save all as JMOL file (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Save JVXL isosurface" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Export {0} 3D model" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Computation" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimise structure" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Model kit" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Extract MOL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Dot Surface" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van der Waals Surface" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Molecular Surface" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Solvent Surface ({0}-Angstrom probe)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Solvent-Accessible Surface (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Reload {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Reload {0} + Display {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Reload + Polyhedra" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Hide" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Dotted" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Pixel Width" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Angstrom Width" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Selection Halos" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Show Hydrogens" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Show Measurements" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspective Depth" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol Colours" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "About..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "Script compiler ERROR: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x y z axis expected" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} not allowed with background model displayed" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "bad argument count" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Miller indices cannot all be zero." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "bad [R,G,B] colour" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "boolean expected" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "boolean or number expected" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "boolean, number, or {0} expected" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "cannot set value" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "colour expected" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "a colour or palette name (Jmol, Rasmol) is required" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "command expected" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} or $name or (atom expression) required" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "draw object not defined" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "unexpected end of script command" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "valid (atom expression) expected" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(atom expression) or integer expected" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "filename expected" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "file not found" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "incompatible arguments" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "insufficient arguments" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "integer expected" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "integer out of range ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "invalid argument" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "invalid parameter order" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "keyword expected" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "no MO coefficient data available" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "An MO index from 1 to {0} is required" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "no MO basis/coefficient data available for this frame" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "no MO occupancy data available" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Only one molecular orbital is available in this file" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} requires that only one model be displayed" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} requires that only one model be loaded" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "No data available" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "No unit cell" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "number expected" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "number must be ({0} or {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "decimal number out of range ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "object name expected after '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "property name expected" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "space group {0} was not found." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "quoted string expected" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "quoted string or identifier expected" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "too many rotation points were specified" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "too many script levels" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "unrecognised atom property" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "unrecognised bond property" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "unrecognised command" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "runtime unrecognised expression" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "unrecognised object" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "unrecognised {0} parameter" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "unrecognised {0} parameter in Jmol state script (set anyway)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "unrecognised SHOW parameter -- use {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "write what? {0} or {1} \"filename\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "script ERROR: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atoms deleted" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} hydrogen bonds" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "file {0} created" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "invalid context for {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ number number number } expected" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "end of expression expected" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "identifier or residue specification expected" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "invalid atom specification" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "invalid chain specification" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "invalid expression token: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "invalid model specification" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "missing END for {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "number or variable name expected" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "residue specification (ALA, AL?, A*) expected" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} expected" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} unexpected" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "unrecognised expression token: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "unrecognised token: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} struts added" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} connections deleted" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} new bonds; {1} modified" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Note: More than one model is involved in this contact!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Click for menu..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "File Error:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "assign/new atom or bond (requires {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "pop up recent context menu (click on Jmol frank)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "delete atom (requires {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "delete bond (requires {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "adjust depth (back plane; requires {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "move atom (requires {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "move whole DRAW object (requires {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "move specific DRAW point (requires {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "move label (requires {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "move atom and minimise molecule (requires {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "move and minimise molecule (requires {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "move selected atoms (requires {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "Drag atoms in Z direction (requires {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simulate multi-touch using the mouse)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "translate navigation point (requires {0} and {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "pick an atom" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "connect atoms (requires {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "pick an ISOSURFACE point (requires {0}" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "pick a label to toggle it hidden/displayed (requires {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "pick a point or atom to navigate to (requires {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "pick a DRAW point (for measurements) (requires {0}" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "pop up the full context menu" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "reset (when clicked off the model)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "rotate" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "rotate branch around bond (requires {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "rotate selected atoms (requires {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "rotate Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "select an atom (requires {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "select and drag atoms (requires {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "deselect this group of atoms (requires {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "select NONE (requires {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "add this group of atoms to the set of selected atoms (requires {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "toggle selection (requires {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"if all are selected, deselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "pick an atom to initiate or conclude a measurement" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "adjust slab (front plane; requires {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "move slab/depth window (both planes; requires {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zoom (along right edge of window)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "click on two points to spin around axis anti-clockwise (requires {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "click on two points to spin around axis clockwise (requires {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "stop motion (requires {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "spin model (swipe and release button and stop motion simultaneously)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "translate" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zoom" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "pick one more atom in order to spin the model around an axis" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "pick two atoms in order to spin the model around an axis" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "pick one more atom in order to display the symmetry relationship" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" +"pick two atoms in order to display the symmetry relationship between them" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Setting log file to {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Cannot set log file path." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atoms hidden" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atoms selected" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Drag to move label" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "clipboard is not accessible -- use signed applet" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} hydrogens added" + +#~ msgid "Hide Symmetry" +#~ msgstr "Hide Symmetry" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Loading Jmol applet ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} seconds" + +#~ msgid "Java version:" +#~ msgstr "Java version:" + +#~ msgid "1 processor" +#~ msgstr "1 processor" + +#~ msgid "unknown processor count" +#~ msgstr "unknown processor count" + +#~ msgid "Java memory usage:" +#~ msgstr "Java memory usage:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB free" + +#~ msgid "unknown maximum" +#~ msgstr "unknown maximum" + +#~ msgid "Open file or URL" +#~ msgstr "Open file or URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/es.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/es.po new file mode 100755 index 000000000000..69e5cd1781d8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/es.po @@ -0,0 +1,2599 @@ +msgid "" +msgstr "" +"Project-Id-Version: Jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2015-12-27 20:42+0100\n" +"Last-Translator: Angel Herráez \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: SPAIN\n" +"X-Poedit-Language: Spanish\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "¿Quieres reemplazar el modelo actual por el nuevo modelo seleccionado?" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "¿Elemento?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Consola de guiones de Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "&Guardar como..." + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "&Archivo" + +#: org/jmol/console/GenericConsole.java:92 +msgid "&Close" +msgstr "&Cerrar" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "Ay&uda" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Buscar..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Instrucciones" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Funciones matemáticas" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Establecer &parámetros" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Más" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Estado" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Ejecutar" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Limpiar salida" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Limpiar entrada" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historial" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Cargar" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "pulsa Ctrl+Intro para una línea nueva o pega datos de un modelo y luego pulsa Cargar" + +#: org/jmol/console/GenericConsole.java:113 +msgid "Messages will appear here. Enter commands in the box below. Click the console Help menu item for on-line help, which will appear in a new browser window." +msgstr "Aquí aparecerán los mensajes. Escribe las instrucciones en el recuadro de abajo. Puedes solicitar ayuda en línea usando el menú situado aquí encima; la ayuda se mostrará en una ventana nueva del navegador." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Editor de guiones de Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Consola" + +#: org/jmol/console/ScriptEditor.java:142 +#: org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 +#: org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Abrir" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "Letra" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Guión" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Comprobar" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Subir" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Un paso" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pausa" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Reanudar" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Detener" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Limpiar" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Cerrar" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Archivo o URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Tipo de imagen" + +#: org/jmol/dialog/Dialog.java:290 +#: org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Calidad de JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Compresión de PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Calidad de PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 +#: org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Sí" + +#: org/jmol/dialog/Dialog.java:385 +#: org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "No" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "¿Quieres sobreescribir el archivo {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Aviso" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Todos los archivos" + +#: org/jmol/dialog/Dialog.java:448 +#: org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Cancelar" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Cancelar el diálogo de elección de archivo" + +#: org/jmol/dialog/Dialog.java:452 +#: org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Detalles" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Carpeta" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Abrir carpeta seleccionada" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atributos" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modificado" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Archivo genérico" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nombre" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nombre del archivo:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Tamaño" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Archivos del tipo:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tipo" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Ayuda" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Ayuda para elegir archivo" + +#: org/jmol/dialog/Dialog.java:469 +#: org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Inicio" + +#: org/jmol/dialog/Dialog.java:471 +#: org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Lista" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Buscar en:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Error al crear nueva carpeta" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Nueva carpeta" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Crear nueva carpeta" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Abrir archivo seleccionado" + +#: org/jmol/dialog/Dialog.java:483 +#: org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Guardar" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Guardar archivo seleccionado" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Guardar en:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Actualizar" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Actualizar listado de carpeta" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Subir" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Subir un nivel" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "Aceptar" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Vista previa" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Añadir modelos" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "Esquemático PDB" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"NOTA: Existen posiciones para los hidrógenos amida del esqueleto, pero se ignorarán. Sus posiciones se aproximarán, tal como se hace en un análisis DSSP típico.\n" +"Utiliza {0} si no quieres emplear este método.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"NOTA: Existen posiciones para los hidrógenos amida del esqueleto, y se utilizarán. Los resultados pueden diferir de modo significativo de los de un análisis DSSP típico.\n" +"Utiliza {0} para ignorar dichas posiciones de los hidrógenos.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Ãrabe" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturiano (bable)" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Azerí" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnio" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalán" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Checo" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danés" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Alemán" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Griego" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Inglés australiano" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Inglés británico" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Inglés de EE.UU." + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Español" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonio" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Vasco" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finés" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Feroés" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francés" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisón" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Gallego" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Croata" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Húngaro" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armenio" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesio" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italiano" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japonés" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javanés" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Coreano" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malayo" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Noruego «BokmÃ¥l»" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Neerlandés" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitano" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polaco" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugués" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portugués de Brasil" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Ruso" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Esloveno" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbio" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Sueco" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugú" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turco" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uigur" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ucraniano" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Uzbeko" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Chino simplificado" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Chino tradicional" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Imposible obtener la clase para el campo de fuerza {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "No hay átomos seleccionados -- ¡nada que hacer!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "se minimizarán {0} átomos" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "imposible establecer el campo de fuerza {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "nuevo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "deshacer (Ctrl+Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "rehacer (Ctrl+Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "centrar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "añadir hidrógenos" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimizar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "corregir los hidrógenos y minimizar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "Limpiar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "guardar archivo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "guardar estado" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "invertir la estereoquímica del anillo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "borrar el átomo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "arrastrar para enlazar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "arrastrar el átomo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "arrastrar el átomo (y minimizar)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "arrastrar la molécula (`Alt´ para rotarla)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "arrastrar y minimizar la molécula (acoplamiento)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "aumentar la carga" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "disminuir la carga" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "borrar enlace" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "sencillo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "doble" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "triple" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "aumentar el orden" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "disminuir el orden" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "rotar enlace (May.+arrastrar)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "salir del modelado" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Grupo espacial" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "No" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Todo" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} procesadores" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB en total" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB máximo" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "no se está capturando" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "Instrucciones para Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Manual del ratón" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Traducciones" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistema" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Ningún átomo cargado" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Configuraciones" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Modelo o fotograma" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Idioma" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Por nombre de residuo" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Por código HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Orbitales moleculares ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetría" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Información del modelo" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Seleccionar ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Los {0} modelos" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configuraciones ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Colección de {0} modelos" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "{0} átomos" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "{0} enlaces" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "{0} grupos" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "{0} cadenas" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "{0} polímeros" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "Modelo {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Mostrar {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menú principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomoléculas" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolécula {0} ({1} átomos)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "abrir biomolécula {0} ({1} átomos)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "No" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Mostrar sólo lo seleccionado" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Invertir la selección" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Vista" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "Óptima" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Frontal" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Izquierda" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Derecha" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "Top[as in \"view from the top, from above\" - (translators: remove this bracketed part]" +msgstr "Desde arriba" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Desde abajo" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Desde atrás" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "Eje x" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "Eje y" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "Eje z" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "Eje a" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "Eje b" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "Eje c" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "Escenas" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteína" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Esqueleto" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Cadenas laterales" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Residuos polares" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Residuos apolares" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Residuos básicos (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Residuos ácidos (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Residuos sin carga" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Ac. nucleicos" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "ADN" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "ARN" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Bases" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Pares AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Pares GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Pares AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "por estructura secundaria" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Grupos “heteroâ€" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Todos los “HETATM†de PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Todo el disolvente" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Todo el agua" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Disolvente excepto agua" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM excepto agua" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligandos" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Carbohidratos" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Ninguno de los anteriores" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Estilo" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Patrón" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Esferas CPK" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Bolas y varillas" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Varillas" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Alambre" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Esquemático" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Cordón" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Ãtomos" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "No" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Enlaces" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Sí" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Enlaces de hidrógeno" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Calcular" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "A la cadena lateral" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Al esqueleto" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Enlaces disulfuro" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "A la cadena lateral" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Al esqueleto" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Estructuras" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Cohetes y cintas" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Cintas" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Cohetes" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Hebras" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibración" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vectores" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Espectros" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "RMN de protón" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "RMN de carbono-13" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} píxeles" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Escala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Estereografía" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Gafas rojo+cian" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Gafas rojo+azul" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Gafas rojo+verde" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Visión bizca (“crossed-eyedâ€)" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Visión paralela (“wall-eyedâ€)" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etiquetas" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Símbolo del elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Nombre del átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Número del átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Posición de la etiqueta" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Centrada sobre el átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Superior derecha" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Inferior derecha" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Superior izquierda" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Inferior izquierda" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Color" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Patrón" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "por elemento (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "por ubicación alternativa" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "por molécula" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "por carga formal" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "por carga parcial" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatura (relativa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatura (fija)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "por aminoácido" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "por cadena" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "por grupo" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "por monómero" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "por esquema “shapelyâ€" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Heredado" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Negro" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Blanco" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cian" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Rojo" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Anaranjado" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Amarillo" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Verde" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Azul" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Añil" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violeta" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmón" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Aceituna" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Granate" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Gris" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Azul pizarra" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Dorado" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orquídea" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Opaco" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Translúcido" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Fondo" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Superficies" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Ejes" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Caja" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Celda unidad" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Tamaño" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Acercar" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Alejar" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Giro" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Velocidad X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Velocidad Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Velocidad Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Fotogramas/segundo" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animación" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Modalidad" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Una vez" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palíndromo" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Bucle" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Reproducir" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Detener" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Fotograma siguiente" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Fotograma anterior" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Rebobinar" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Hacia atrás" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Reiniciar" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Mediciones" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Doble clic inicia y finaliza mediciones" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Clic para medir distancia" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Clic para medir ángulo" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Clic para medir torsión (ángulo diedro)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Clic en dos átomos para mostrar una secuencia en la consola" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Borrar mediciones" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Lista de mediciones" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Distancia en nanómetros" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Distancia en ángstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Distancia en picómetros" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Ãtomo elegido" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Centrar" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identificar" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etiquetar" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Seleccionar átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Seleccionar cadena" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Seleccionar elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "Modo de modelado" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Seleccionar grupo" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Seleccionar molécula" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Seleccionar sitio" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Mostrar operación de simetría" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Mostrar" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "Consola JavaScript" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Contenido del archivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Cabecera del archivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Datos JVXL de isosuperficie" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Datos JVXL de orbital molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modelo" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientación" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Grupo espacial" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Estado actual" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Archivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "Exportar" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Recargar" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Abrir desde PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "Abrir un archivo local" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "Abrir desde URL" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Cargar celdilla completa" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Abrir guión" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "Capturar" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "Capturar oscilación" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "Capturar giro" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "Comenzar la captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "Terminar la captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "Desactivar la captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "Reactivar la captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "Velocidad de animación" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "(Des)activar repetición" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Guardar copia de {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Guardar guión con estado" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Guardar guión con historial" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Exportar imagen {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Guardar como archivo PNG/JMOL (imagen+zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Guardar isosuperficie JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Exportar modelo 3D {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Cálculo" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimizar estructura" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Herramienta de modelado" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Extraer datos MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "de puntos" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "de van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "del disolvente (sonda de {0} &)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "accesible al disolvente (vdW + {0} &)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "potencial electrostático molecular (intervalo completo)" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "potencial electrostático molecular (intervalo -0.1 a 0.1)" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Recargar {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Recargar {0} y mostrar {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Recargar + Poliedros" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Oculta" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Punteados" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Grosor en píxeles" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Grosor en ángstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Halos de selección" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Mostrar hidrógenos" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Mostrar mediciones" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspectiva" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Colores de Rasmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Acerca de..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "ERROR del compilador de guiones: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "se esperaba un eje x y z" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} no está permitido mientras se muestra un modelo de fondo" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "el número de argumentos no es correcto" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Alguno de los índices de Miller debe ser distinto de cero" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "color [Rojo, Verde, Azul] incorrecto" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "se esperaba un valor lógico" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "se esperaba un valor lógico o un número" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "se esperaba un valor lógico, un número o {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "no es posible fijar el valor" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "se esperaba un color" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "se requiere un nombre de color o de paleta (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "se esperaba una instrucción" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "se requiere {x y z} o $nombre o (expresión atómica)" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "objeto de dibujo no definido" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "final imprevisto de la instrucción de guión" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "se esperaba una (expresión atómica) válida" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "se esperaba una (expresión atómica) o un número entero" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "se esperaba un nombre de archivo" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "no se encuentra el archivo" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "argumentos incompatibles" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "argumentos insuficientes" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "se esperaba un número entero" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "número entero fuera del intervalo ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "el argumento no es válido" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "el orden de parámetros es incorrecto" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "se esperaba una palabra clave" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "no hay datos disponibles de coeficientes de orbitales moleculares" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Se requiere un índice de orbitales moleculares entre 1 y {0}" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "en este modelo no hay datos disponibles de base o coeficientes de orbitales moleculares" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "no hay datos de ocupación para orbitales moleculares" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "En este archivo sólo hay un orbital molecular" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} requieren que sólo se esté mostrando un modelo" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} requiere que sólo se haya cargado un modelo" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "no hay datos disponibles" + +#: org/jmol/script/ScriptError.java:295 +msgid "No partial charges were read from the file; Jmol needs these to render the MEP data." +msgstr "No se han podido leer las cargas parciales en el archivo; Jmol las necesita para trazar los datos de MEP" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "No hay celda unidad" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "se esperaba un número" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "el número debe ser {0} o {1}" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "número decimal fuera del intervalo ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "se esperaba un nombre de objeto tras el '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "plane expected -- either three points or atom expressions or {0} or {1} or {2}" +msgstr "se esperaba un plano, bien en forma de tres puntos, o bien de expresiones atómicas, o {0}, o {1}, o {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "se esperaba un nombre de propiedad" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "no se ha encotrado el grupo espacial {0}" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "se esperaba un texto entre comillas" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "se esperaba un texto entre comillas o un identificador" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "se han indicado demasiados puntos de rotación" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "demasiados niveles de guión" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "no se reconoce la propiedad de átomo" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "no se reconoce la propiedad de enlace" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "no se reconoce la instrucción" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "no se reconoce la expresión en ejecución" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "no se reconoce el objeto" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "no se reconoce el parámetro {0}" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "no se reconoce el parámetro {0} en el guión de estado (defínase de todos modos)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "no se reconoce el parámetro SHOW; utilice {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "¿qué escribir? {0} o {1} “nombre de archivoâ€" + +#: org/jmol/script/ScriptError.java:412 +#: org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "ERROR en guión: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "mostrar lo guardado: {0}" + +#: org/jmol/script/ScriptEval.java:3277 +#: org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "se han borrado {0} átomos" + +#: org/jmol/script/ScriptEval.java:3995 +#: org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} enlaces de hidrógeno" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "se ha creado el archivo {0}" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "para reanudarlo, escribe: &{0}" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "contexto no válido para {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "se esperaba {número número número}" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "se esperaba el fin de una expresión" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "se esperaba un identificador o una identificación de residuo" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "identificación de átomo no válida" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "identificador de cadena no válido" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "palabra clave {0} no válida" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "identificación de modelo no válida" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "falta END para {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "se esperaba un número o un nombre de variable" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "se esperaba una identificación de residuo (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "se esperaba {0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "no se esperaba {0}" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "no se reconoce la palabra clave {0} en la expresión" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "no se reconoce la palabra clave {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "se han modificado {0} cargas" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "se han añadido {0} puntales" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "Nota: activados los bucles usando {0}" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "Demora de animación basada en {0}" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "se han borrado {0} conexiones" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} enlaces nuevos; {1} modificados" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Atención: en este contacto están implicados varios modelos" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Pulsa para un menú..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Miniaplicación Jmol, versión {0} {1}.\n" +"\n" +"Un proyecto OpenScience.\n" +"\n" +"Para más información, visita http://www.jmol.org" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Error de archivo:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "asignar o añadir átomo o enlace (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "abrir el menú contextual reciente (pulsar en el logotipo Jmol)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "borrar átomo (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "borrar enlace (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "ajustar el plano trasero de sección (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "mover un átomo (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "mover el objeto dibujado (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "mover un punto del objeto dibujado (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "mover una etiqueta (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "mover un átomo y minimizar la molécula (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "mover y minimizar la molécula (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "mover los átomos seleccionados (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "arrastrar átomos en la dirección Z (es necesario {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simular multitáctil usando el ratón)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "trasladar el punto de navegación (requiere {0} o {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "elige un átomo" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "conectar átomos (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "elige un punto en una isosuperficie (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "elige una etiqueta para cambiar su visibilidad (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "pick an atom to include it in a measurement (after starting a measurement or after {0})" +msgstr "elige un átomo para incluirlo en una medición (tras haber comenzado una medición o tras {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "elige un punto o un átomo hacia el que navegar (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "elige un punto de un objeto dibujado (para mediciones) (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "abrir el menú contextual completo" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "restaurar (cuando se pulse fuera del modelo)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "rotar" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "rotar la rama alrededor del enlace (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "rotar los átomos seleccionados (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "rotar en Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "rotación alrededor de Z (desplazamiento horizontal del ratón) o tamaño (desplazamiento vertical del ratón)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "seleccionar un átomo (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "seleccionar y arrastrar átomos (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "deseleccionar este grupo de átomos (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "cancelar la selección (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "añadir este grupo de átomos a la selección (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "(des)activar la selección (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "if all are selected, unselect all, otherwise add this group of atoms to the set of selected atoms (requires {0})" +msgstr "si están todos seleccionados, eliminar la selección; si no, añadir este grupo de átomos a la selección (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "elige un átomo para iniciar o concluir una medición" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "ajustar el plano delantero de sección (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "desplazar los planos de sección (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "tamaño (a lo largo del borde derecho de la ventana)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "pulsa en dos puntos para definir un eje de giro antihorario (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "pulsa en dos puntos para definir un eje de giro horario (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "detener movimiento (requiere {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "girar el modelo (deslizar, deteniendo el movimiento al tiempo que se suelta el botón)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "trasladar" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "tamaño" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "elige un átomo más para que el modelo gire en torno a un eje" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "elige en orden dos átomos para que el modelo gire en torno a un eje" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "elige un átomo más para mostrar la relación de simetría" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "pick two atoms in order to display the symmetry relationship between them" +msgstr "elige en orden dos átomos para mostrar la relación de simetría entre ambos" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "cancelado" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "{0} guardado(s)" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Definiendo el archivo de registro como {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Imposible establecer la ruta del archivo de registro." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} átomos ocultos" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} átomos seleccionados" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Arrastra para mover la etiqueta" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "no es posible acceder al portapapeles; para ello debe utilizarse la miniaplicación firmada" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "se han añadido {0} hidrógenos" + +#~ msgid "Hide Symmetry" +#~ msgstr "Ocultar simetría" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Cargando Jmol..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} segundos" + +#~ msgid "Java version:" +#~ msgstr "Versión de Java:" + +#~ msgid "1 processor" +#~ msgstr "1 procesador" + +#~ msgid "unknown processor count" +#~ msgstr "nº de procesadores desconocido" + +#~ msgid "Java memory usage:" +#~ msgstr "Memoria usada por Java:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB libres" + +#~ msgid "unknown maximum" +#~ msgstr "máximo desconocido" + +#~ msgid "Open file or URL" +#~ msgstr "Abrir archivo o URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/et.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/et.po new file mode 100755 index 000000000000..3d1c732e90b1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/et.po @@ -0,0 +1,2575 @@ +# Copyright (C) 2005 +# This file is distributed under the same license as the Jmol package. +# Ivo Sarak , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: Jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Ivo Sarak \n" +"Language-Team: Estonian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: Estonia\n" +"X-Poedit-Language: Estonian\n" +"X-Poedit-Basepath: ../../../..\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Fail" + +#: org/jmol/console/GenericConsole.java:92 +msgid "&Close" +msgstr "" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Abi" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "Ot&si..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Ava" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Soome" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "uus" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "keskel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimeeri" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "puhas" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "salvesta fail" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "üksik" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "topelt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "kolmekordne" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Ei ühtegi" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Kõik" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Hiire Õpetus" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Tõlked" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Süsteem" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Ei ühtegi aatomit" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Jäänuse nime järgi" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Ei ühtegi" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Kuva Ainult Valitud" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Vaheta Valik" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Teljed" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Teljed" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Teljed" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Teljed" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Teljed" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Teljed" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteiin" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Selgroog" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Külgmised Ketid" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polaarsed jäänused" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Mittepolaarsed jäänused" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Lihtsad jäänused (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Happelised jäänused (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Mittelaetud jäänused" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Tuuma" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Alused" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT paarid" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC paarid" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU paarid" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Teisene Struktuur" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Süsinikhüdraat" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Skeem" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK Spacefill" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Pall ja Kepp" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Kepid" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Sõrestik" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Pildijada" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Jälg" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Aatomid" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "välja" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Sidemed" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Sees" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Vesiniku Sidemed" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Arvuta" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Pane H-Sidemed Külgmisse Ketti" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Pane H-Sidemed Selgroogu" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfiidi Sidemed" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Pane SS-Sidemed Külgmisse Ketti" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Pane SS-Sidemed Selgroogu" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Struktuurid" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Ribad" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektorid" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pikselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Skaala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Punane+Sinine klaasid" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Punane+Roheline klaasid" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Rist-silmne vaatamine" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Otse vaatamine" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Sildid" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Koos Elementide Sümbolitega" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Koos Aatomite Nimetustega" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Koos Aatomite Numbritega" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Pane Aatomile Silt" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Tsentreeritud" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Ãœlemine Parem" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Alumine Vasak" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Ãœlemine Vasak" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Alumine Vasak" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Värv" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Skeemi järgi" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Element (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formaalne Laeng" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Osaline Laeng" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Kett" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Omane" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Must" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Valge" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Rohekassinine" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Punane" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Oraanz" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Kollane" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Roheline" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Sinine" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violet" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Kollane" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Oliivroheline" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Punapruun" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Sinine" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Kuldne" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchid" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Taust" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Teljed" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Boundbox" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Suurenda" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Suurenda sisse" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Vähenda" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Spinn" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Määra X Kiirus" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Määra Y Kiirus" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Määra Z Kiirus" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Määra FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animatsiooni Reziim" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Mängi Ãœks Kord" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindroom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Tagasiside" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Mängi" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Seiska" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Järgmine Kaader" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Eelmine Kaader" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Keri Tagasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Mudel" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Praegune olek" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Fail" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Lae uuesti" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Ava" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Arvutus" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Peida" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Punktiir" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Pikseli Laius" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Angstromi Laius" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Näita Vesinikke" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Näita Mõõted" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspetkiivi Sügavus" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol Värvid" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Faili viga:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "pööramine" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "tõlgi" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/eu.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/eu.po new file mode 100755 index 000000000000..71061274ebc2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/eu.po @@ -0,0 +1,2628 @@ +# Basque translation for jmol +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:44+0000\n" +"Last-Translator: Nicolas Vervelle \n" +"Language-Team: Basque \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Elementua?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol script kontsola" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Fitxategia" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Itxi" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Laguntza" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Bilatu..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Komandoak" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Funtzio matematikoak" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Ezarri ¶metroak" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Gehiago" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editorea" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Egoera" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Exekutatu" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Garbitu irteera" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Garbitu sarrera" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historia" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Kargatu" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"sakatu KTRL+ENTER lerro berrirako edo kopiatu ereduaren datuak eta sakatu " +"Kargatu" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Mezuak hemen agertuko dira. Sartu komandoak beheko koadroan. Klikatu " +"kontsolako Laguntza menu-elementua lineako laguntza lortzeko. Laguntza hau " +"arakatzailearen leiho berri batean agertuko da." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol script editorea" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Kontsola" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Ireki" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Aurrealdea" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script-a" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Egiaztatu" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Igo" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Pausoa" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pausatu" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Berrekin" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Gelditu" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Garbitu" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Itxi" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Fitxategia edo URLa:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Irudi-mota" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG kalitatea ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG konpresioa ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG kalitatea ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Bai" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Ez" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "{0} fitxategia gainidatzi nahi duzu?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Abisua" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Fitxategi guztiak" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Utzi" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Xehetasunak" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Direktorioa" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Ireki hautatutako direktorioa" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atributuak" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Aldatze-data" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Fitxategi generikoa" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Izena" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Fitxategi-izena:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Tamaina" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Mota honetako fitxategiak:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Mota" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Laguntza" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Fitxategi-hautatzailearen laguntza" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Etxea" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Zerrenda" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Begiratu hemen:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Errorea karpeta berria sortzean" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Karpeta berria" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Sortu karpeta berria" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Ireki hautatutako fitxategia" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Gorde" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Gorde hautatutako fitxategia" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Gorde hemen:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Eguneratu" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Eguneratu direktorio-zerrenda" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Gora" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Igo maila bat" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "Ados" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Aurreikusi" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Gehitu ereduak" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabiera" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturiera" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Azerbaijanera" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosniera" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Katalana" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Txekiera" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Daniera" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Alemana" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Greziera" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Australiako ingelesa" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Erresuma Batuko ingelesa" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "AEBetako ingelesa" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Espainiera" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estoniera" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Euskara" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finlandiera" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Faroera" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Frantsesa" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisiera" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Galiziera" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Kroaziera" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Hungariera" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armeniera" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesiera" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italiera" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japoniera" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javera" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Koreera" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malaysiera" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Bokmal norvegiera" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Nederlandera" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Okzitaniera" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Poloniera" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugesa" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brasilgo portugesa" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Errusiera" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Esloveniera" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbiera" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Suediera" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamilera" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turkiera" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uigurrera" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukrainera" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Uzbekera" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Txinera sinplifikatua" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Txinera tradizionala" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Ezin izan da {0} indar-eremuarentzako klasea eskuratu" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Ez dago atomorik hautatuta -- egitekorik ez!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomo minimizatuko dira." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "ezin izan da {0} eremua konfiguratu" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "berria" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "desegin (Ktrl+Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "berregin (Ktrl+Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "erdia" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "gehitu hidrogenoak" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimizatu" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "garbitu" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "gorde fitxategia" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "gorde egoera" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "alderantzikatu eraztunaren estereokimika" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "ezabatu atomoa" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "arrastatu loturara" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "arrastatu atomoa" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "arrastatu atomoa (eta minimizatu)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "handitu karga" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "txikiagotu karga" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "ezabatu lotura" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "bakuna" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "bikoitza" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "hirukoitza" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "biratu lotura (SHIFT eta arrastatu)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "irten modelatze tresna-jokoa modutik" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Bat ere ez" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Guztiak" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} prozesatzaile" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "guztira {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB gehienez" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol script kontsola" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Itzulpenak" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistema" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Atomorik ez kargatuta" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Konfigurazioak" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Elementua" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Eredua/Markoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Hizkuntza" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Hondarraren izenaren arabera" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "HETATMen arabera" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Orbital molekularrak ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Ereduaren informazioa" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Hautatu ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "{0} ereduak" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "({0}) konfigurazio" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "{0} ereduren bilduma" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomoak: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "loturak: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "taldeak: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "kateak: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polimeroak: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "{0} eredua" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "{0} ikuspegia" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menu nagusia" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekulak" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "{0} biomolekula ({1} atomo)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "kargatu {0} biomolekula ({1} atomo)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Bat ere ez" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Bistaratu hautatutakoak soilik" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Alderantzikatu hautapena" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Ikusi" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Aurrealdea" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Ezkerra" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Eskuina" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Goiko aldea" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Behealdea" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Atzealdea" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Ardatzak" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Ardatzak" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Ardatzak" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Ardatzak" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Ardatzak" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Ardatzak" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteina" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Bizkarrezurra" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Albo-kateak" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Hondar polarrak" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Hondar apolarrak" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Hondar basikoak (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Hondar azidoak (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Kargarik gabeko hondarrak" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nukleiko" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Baseak" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT pareak" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC pareak" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU pareak" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Egitura sekundarioa" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "PDB \"HETATM\" guztiak" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Disolbatzaile guztiak" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Guztia ura" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Disolbatzaile ez-akuosoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM ez-akuosoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Lotugaia" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Karbohidratoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Hauetako bat ere ez" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Estiloa" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Eskema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Bolak eta makilak" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Makilak" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Burdin-haria" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Marrazkia" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Arrastoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomoak" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Desaktibatuta" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "%{0} van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Loturak" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Aktibatuta" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Hidrogeno-loturak" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Kalkulatu" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Ezarri H-loturak albo-katean" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Ezarri H-loturen bizkarrezurrean" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfuro-loturak" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Ezarri SS-loturak albo-katean" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Ezarri SS-loturak bizkarrezurrean" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Egiturak" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Xingolak" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Bibrazioa" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Bektoreak" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Espektroa" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixel" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "{0} eskala" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Estereografikoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Gorria+zian betaurrekoak" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Gorria+urdina betaurrekoak" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Gorria+berdea betaurrekoak" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etiketak" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Elementuaren sinboloarekin" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Atomoaren izenarekin" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Atomo zenbakiarekin" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Labelaren kokapena atomoan" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Erdian" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Goian eskuinean" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Behean eskuinean" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Goian ezkerrean" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Behean ezkerrean" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Kolorea" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Eskemaren arabera" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Elementua (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Kokapen alternatiboa" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekula" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Karga formala" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Karga partziala" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Tenperatura (Erlatiboa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Tenperatura (Finkoa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminoazidoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Katea" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Taldea" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomeroa" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Heredatu" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Beltza" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Zuria" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Ziana" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Gorria" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Laranja" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Horia" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Berdea" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Urdina" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Anila" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Bioleta" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Izokina" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Oliba" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Granatea" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Grisa" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Arbel-urdina" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Urrea" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orkidea" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Bihurtu opako" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Bihurtu garden" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Atzeko planoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Gainazalak" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Ardatzak" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Gelaxka-unitatea" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zooma" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Handiagotu" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Txikiagotu" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Biratu" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Ezarri X proportzioa" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Ezarri Y proportzioa" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Ezarri Z proportzioa" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Ezarri FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animazioa" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animazio-modua" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Erreproduzitu behin" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindromoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Begizta" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Erreproduzitu" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Gelditu" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Hurrengo markoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Aurreko markoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Birbobinatu" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Alderantziz" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Berrabiarazi" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Neurketak" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Klik bikoitzak neurketa guztiak hasi eta bukatzen ditu" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Klikatu distantzia neurtzeko" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Klikatu angelua neurtzeko" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Klikatu bihurdura (angelu diedroa) neurtzeko" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Klikatu bi atomo kontsolan sekuentzia bat bistaratzeko" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Ezabatu neurketak" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Zerrendatu neurketak" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Distantzia nanometrotan" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Distantzia Angstrometan" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Distantzia pikometroetan" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Erdian" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identitatea" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etiketa" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Hautatu atomoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Hautatu katea" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Hautatu elementua" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "irten modelatze tresna-jokoa modutik" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Hautatu taldea" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Hautatu molekula" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Hautatu lekua" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Erakutsi simetria-eragiketa" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Erakutsi" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol script kontsola" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Fitxategiaren edukiak" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Fitxategiaren goiburua" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Isoazaleraren JVXL datuak" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Orbital molekularraren JVXL datuak" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Eredua" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientazioa" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Uneko egoera" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Fitxategia" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Birkargatu" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Ireki PDBtik" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Ireki hautatutako fitxategia" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Ireki" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Kargatu gelaxka-unitate osoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Ireki scripta" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Gorde {0}(r)en kopia" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Gorde scripta egoerarekin" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Gorde scripta historiarekin" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Esportatu {0} irudia" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Gorde guztia JMOL fitxategi bezala (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Gorde JVXL isogainazala" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Esportatu {0} 3Dko eredua" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Kalkulua" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimizatu egitura" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Modelatze tresna-jokoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Erauzi MOL datuak" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Puntu gainazala" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van der Waals gainazala" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Gainazal molekularra" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Disolbatzaile-gainazala ({0}-Angstromeko zunda)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Birkargatu {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Birkargatu {0} + erakutsi {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Ezkutatu" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Pixel zabalera" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Erakutsi hidrogenoak" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Erakutsi neurketak" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspektiba sakonera" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol koloreak" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Honi buruz..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "script-konpilatzailearen ERROREA: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x y z ardatza espero zen" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "argumentu kopuru okerra" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Miller indize guztiek ezin dute zero izan" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "[R,G,B] kolore okerra" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "boolearra espero zen" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "boolearra edo zenbakia espero zen" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "boolearra, zenbakia edo {0} espero zen" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "ezin da balioa ezarri" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "kolorea espero zen" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "kolore bat edo paleta-izen bat (Jmol, Rasmol) behar da" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "komandoa espero zen" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "fitxategi-izena espero zen" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "ez da aurkitu fitxategia" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "argumentu bateraezinak" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "argumentu gutxiegi" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "osokoa espero zen" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "osokoa ({0} - {1} tartetik kanpo)" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "argumentu baliogabea" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "parametroen ordena baliogabea" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "gako-hitza espero zen" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "ez dago orbital molekularren koefizienterik eskuragarri" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "1 eta {0} arteko orbital molekular indizea behar da" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Orbital molekular bakarra dago eskuragarri fitxategi honetan" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Ez dago daturik eskuragarri" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Ez da karga partzialik irakurri fitxategitik; Jmol-ek MEP datuak " +"errendatzeko beharrezkoak dira." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Unitate-gelaxkarik ez" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "zenbakia espero zen" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "zenbakiak ({0} edo {1}) izan behar du" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "zenbaki hamartarra ({0} - {1}) tartetik kanpo" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "objektu-izena espero zen '$'ren ondoren" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "propietate-izena espero zen" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "kakotx arteko katea espero zen" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "kakotx arteko katea edo identifikatzailea espero zen" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "errotazio-puntu gehiegi zehaztu dira" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "script-maila gehiegi" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "atomoaren propietate ezezaguna" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "loturaren propietate ezezaguna" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "komando ezezaguna" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "objektu ezezaguna" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "{0} parametro ezezaguna Jmol egoera-scriptean (ezarri hala ere)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "SHOW parametro ezezaguna -- erabili {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "zer idatzi? {0} ala {1} \"fitxategi-izena\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "script ERROREA: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atomo ezabatuta" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} hidrogeno-lotura" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "{0} fitxategia sortuta" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "{0}-(r)entzako testuinguru baliogabea" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ zenbakia zenbakia zenbakia } espero zen" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "identifikatzailea edo hondarraren zehaztapena espero zen" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "atomoaren zehaztapen baliogabea" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "katearen zehaztapen baliogabea" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "ereduaren zehaztapen baliogabea" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "zenbakia edo aldagai-izena espero zen" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} espero zen" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "ez zen {0} espero" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, fuzzy, java-format +msgid "{0} struts added" +msgstr "{0} hidrogeno gehituta" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} lotura ezabatuta" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} lotura berri; {1} aldatuta" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Klikatu menurako..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol appletaren {0} {1} bertsioa.\n" +"\n" +"OpenScience proiektu bat.\n" +"\n" +"Informazio gehiagorako bisitatu http://www.jmol.org" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Fitxategi-errorea:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "ezabatu atomoa ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "ezabatu lotura ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "mugitu atomoa ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "mugitu etiketa ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "mugitu atomoa eta minimizatu molekula ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "mugitu eta minimizatu molekula ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "mugitu hautatutako atomoak ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "arrastatu atomoak Z norabidean ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "aukeratu atomo bat" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "konektatu atomoak ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "aukeratu etiketa bat ezkutatu/bistaratu txandakatzeko ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "leheneratu (eredutik kanpora klikatzean)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "biratu" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "biratu adarra loturaren inguruan ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "biratu hautatutako atomoak ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "biratu Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"biratu Z (saguaren mugimendu horizontala) edo egin zoom (saguaren mugimendu " +"bertikala)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "hautatu atomo bat ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "hautatu eta arrastatu atomoak ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "desautatu atomo-talde hau ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "gehitu atomo-talde hau hautatutako atomo-sortara ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "txandakatu hautapena ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"guztiak hautatuta badaude, desautatu guztiak, bestela gehitu atomo-talde hau " +"hautatutako atomo-sortara ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "aukeratu atomo bat neurketa bat hasi edo bukatzeko" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zooma (leihoaren eskuineko ertzean zehar)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"klikatu bi puntutan ardatzaren inguruan ezkerrera biratzeko ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"klikatu bi puntutan ardatzaren inguruan eskuinera biratzeko ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "gelditu mugimendua ({0} behar du)" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "translazioa" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zooma" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "aukeratu beste atomo bat eredua ardatz baten inguruan biratzeko" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "aukeratu bi atomo eredua ardatz baten inguruan biratzeko" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "aukeratu beste atomo bat simetria-erlazioa bistaratzeko" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "aukeratu bi atomo beren arteko simetria-erlazioa bistaratzeko" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "{0} egunkari-fitxategia ezartzen" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Ezin da egunkari-fitxategiaren bidea ezarri." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atomo ezkutatuta" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomo hautatuta" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Arrastatu etiketa mugitzeko" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} hidrogeno gehituta" + +#~ msgid "Hide Symmetry" +#~ msgstr "Ezkutatu simetria" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Jmol appleta kargatzen..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} segundo" + +#~ msgid "Java version:" +#~ msgstr "Java bertsioa:" + +#~ msgid "1 processor" +#~ msgstr "Prozesatzaile 1" + +#~ msgid "unknown processor count" +#~ msgstr "prozesatzaile kopuru ezezaguna" + +#~ msgid "Java memory usage:" +#~ msgstr "Java memoria erabilera:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB libre" + +#~ msgid "unknown maximum" +#~ msgstr "maximo ezezaguna" + +#~ msgid "Open file or URL" +#~ msgstr "Ireki fitxategia edo URLa" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fi.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fi.po new file mode 100755 index 000000000000..831071b82473 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fi.po @@ -0,0 +1,2647 @@ +# Finnish translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Johannes Pernaa \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: Finland\n" +"X-Poedit-Language: Finnish\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Alkuaine?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol-konsoli" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Tiedosto" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Sulje" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Ohje" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Etsi..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Komennot" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Matematiikka &Funktiot" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Aseta &Parametrit" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Lisää" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editori" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Tila" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Aja" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Tyhjennä ulostulo" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Tyhjennä sisääntulo" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historia" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Lataa" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"luo uusi rivi painamalla CTRL-ENTER tai liitä mallin tiedot ja paina Lataa" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Ilmoitukset ilmestyvät tähän. Kirjoita komennot laatikkoon alapuolelle. On-" +"line ohjeet löytyvät konsolin Ohje-valikosta, jotka ilmestyvät uuteen " +"selainikkunaan." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol-editori" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsoli" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Avaa" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Edestä" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Komentosarja" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Tarkista" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Ylös" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Askel" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Tauko" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Jatka" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Pysäytä" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Tyhjennä" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Sulje" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Tiedosto tai URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Kuvatyyppi" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG laatu ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG pakkaaminen ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG laatu ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Kyllä" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Ei" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Korvataanko tiedosto {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Varoitus" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Kaikki tiedostot" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Lopeta" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Keskeytä tiedostovalitsimen dialogi" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Yksityiskohdat" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Kansio" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Avaa valittu kansio" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Attribuutit" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Muokattu" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Geneerinen tiedosto" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nimi" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Tiedoston nimi:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Koko" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "TIedostotyyppi:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tyyppi" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Ohje" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Tiedostovalitsimen ohje" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Etusivulle" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Lista" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Katso" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Uuden kansion luominen epäonnistui" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Uusi kansio" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Luo uusi kansio" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Avaa valittu tiedosto" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Tallenna" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Tallenna valittu tiedosto" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Tallenna kansioon:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Päivitä" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Päivitä kansiolista" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Ylös" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Yksi taso ylöspäin" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Esikatselu" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Lisää malleja" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"HUOMIO: Proteiinirungon amidien vedyt paikat ovat läsnä, mutta ne jätetään " +"huomioimatta. Niiden paikat approksimoidaan kuten standardi DSSP-" +"analyysissä.\n" +"Käytä {0}, niin tätä approksimaatioita ei käytetä.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"HUOMIO: Proteiinirungon amidien vedyt ovat läsnä ja ne huomioidaan. Tulokset " +"voivat vaihdella merkittävästi standardi DSSP-analyysistä.\n" +"Käytä {0}, niin vetyjen asennot jätetään huomioimatta.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabia" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturia" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnia" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Katalonia" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Tsekki" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Tanska" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Saksa" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Kreikka" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Australian Englanti" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Brittienglanti" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Amerikanenglanti" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Espanja" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Viro" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Suomi" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Fääri" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Ranska" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Kroatia" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Unkari" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armenia" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesia" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italia" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japani" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Jaava" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Korea" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Kirjanorja" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Hollanti" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Oksitaani" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Puola" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugali" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portugali (Bra)" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Venäjä" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovenia" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbia" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Ruotsi" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turkki" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uiguuri" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukraina" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Kiina (yksinkertainen)" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Kiina (perinteinen)" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Voimakentän luokkaa ei voida hakea. {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Atomeja ei valittu -- ei mitään tehtävänä!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomit minimoidaan." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "Voimakenttää ei voitu asettaa. {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "uusi" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "kumoa (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "toista (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "keskitä" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "lisää vedyt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "optimoi rakenne" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "sovita vedyt ja optimoi rakenne" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "tyhjennä" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "tallenna tiedosto" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "tallenna tila" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "käännä renkaan stereokemia" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "poista atomi" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "liikuta atomia ja luo sidos" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "liikuta atomia" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "liikuta atomia ja optimoi rakenne" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "liikuta ja optimoi molekyyli (telakointi)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "lisää varaus" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "vähennä varaus" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "poista sidos" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "yksinkertainen sidos" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "kaksoissidos" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "kolmoissidos" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "lisää sidoksen kertalukua" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "vähennä sidoksen kertalukua" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "pyöritä sidosta (SHIFT - LIIKUTA)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "poistu mallityökalutilasta" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Avaruusryhmä" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Ei mitään" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Kaikki" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} prosessoria" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB totaalinen" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maksimi" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol-konsoli" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Hiirimanuaali" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Käännökset" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Systeemi" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Atomeja ei ladattu" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Konfiguraatiot" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Alkuaine" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Malli/Ruutu" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Kieli" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Lyhenteen mukaan" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Heteroatomin mukaan" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Molekyyliorbitaalit ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symmetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Mallin tiedot" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Valitse ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Kaikki {0} mallit" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfiguraatiot ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Mallivalikoima {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomit: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "sidokset: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "ryhmät: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "ketjut: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polymeerit: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "malli {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Näkymä {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Päävalikko" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekyylit" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekyyli {0} ({1} atomit)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "lataa biomolekyyli {0} ({1} atomit)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Ei mitään" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Näytä vain valitut" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Käännä valitut" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Näkymät" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Edestä" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Vasen" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Oikea" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Ala" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Takaa" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Akselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Akselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Akselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Akselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Akselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Akselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteiini" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Proteiinirunko" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Sivuketjut" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polaariset" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Poolittomat" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Emäksiset (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Happamet (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Varauksettomat" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nukleiinihappo" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Emäkset" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT emäsparit" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC emäsparit" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU emäsparit" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Sekundäärirakenne" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Heteroatomi" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Kaikki PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Kaikki liuottimet" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Kaikki vesi" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Vedetön liuotin" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Vedetön HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligandi" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Hiilihydraatti" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Ei mikään ylläolevista" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Tyylit" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Mallit" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Kalotti (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Pallotikku" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Tikku" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Rautalanka" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Sarjakuva" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Jälki" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomit" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Pois" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Sidokset" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Päällä" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Vetysidokset" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Laske" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Aseta H-sidokset sivuketjuihin" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Aseta H-sidokset proteiinirunkoon" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfidisidokset" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Aseta SS-sidokset sivuketjuihin" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Aseta SS-sidokset proteiinirunkoon" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Rakenteet" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Raketti (sarjakuva)" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Nauha" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Raketti" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Helminauha" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Värähtelyt" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektorit" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pikselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Koko {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografiikka" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Punainen+sinivihreä" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Punainen+sininen" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Punainen+vihreä" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Cross-eyed katselu" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Wall-eyed katselu" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Nimeäminen" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Kemiallinen merkki" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Atomin nimi" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Atominumero" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Etiketin paikka" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Keskitetty" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Ylhäällä oikealla" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Alhaalla oikealla" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Ylhäällä vasemmalla" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Alhaalla vasemmalla" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Värit" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Mallin mukaan" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Alkuaine (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Vaihtoehtoinen paikka" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekyyli" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Muodollinen varaus" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Osittaisvaraus" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Lämpötila (Suhteellinen)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Lämpötila (Sovitettu)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminohappo" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Ketju" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Ryhmä" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomeeri" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Muodokas" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Peritty" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Musta" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Valkoinen" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Sinivihreä" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Punainen" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Oranssi" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Keltainen" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Vihreä" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Sininen" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigosini" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violetti" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Lohenpunainen" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Oliivinvihreä" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Punaruskea" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Harmaa" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Siniharmaa" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Kultainen" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orkidea" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Kiinteä" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Läpinäkyvä" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Taustaväri" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Pinnat" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Akselit" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Rajoitelaatikko" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Alkeiskoppi" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Muuta kokoa" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Zoomaa lähemmäs" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Zoomaa kauemmas" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Pyörittäminen" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Aseta X asteet" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Aseta Y asteet" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Aseta Z asteet" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Aseta FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animaatio" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animaatiotila" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Toista kerran" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindromi" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Silmukka" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Toista" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Lopeta" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Seuraava ruutu" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Edellinen ruutu" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Kelaa taaksepäin" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Toista taaksepäin" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Käynnistä uudelleen" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Mittaustyökalut" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Tuplaklikkaus: Mittaa etäisyyksiä tai kulmia" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Etäisyys" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Kulma" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Torsiokulma" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Näytä sekvenssi konsolissa aktivoimalla kaksi atomia" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Poista mittaukset" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Listaa mittaukset" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Etäisyys nanometreissä" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Etäisyys Ã¥ngtrömeissä" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Etäisyys pikometreissä" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Aseta poiminta" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Keskitä" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identiteetti" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Nimeä" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Valitse atomi" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Valitse ketju" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Valitse alkuaine" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "poistu mallityökalutilasta" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Valitse ryhmä" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Valitse molekyyli" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Valitse sijainti" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Näytä symmetriaoperaatio" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Näytä" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol-konsoli" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Tiedoston sisällys" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Tiedoston otsikko" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "JVXL-pinnan tiedot" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "JVXL-molekyyliorbitaalin tiedot" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Malli" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientaatio" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Avaruusryhmä" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Nykyinen tila" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Tiedosto" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Lataa uudelleen" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Avaa PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Avaa valittu tiedosto" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Avaa" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Lataa koko alkeiskoppi" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Avaa komentosarja-tiedosto (stp)" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Tallenna {0} kopio" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Tallenna komentosarja ja tila" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Tallenna komentosarja ja historia" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Vie tiedostoon {0} kuvana" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Tallenna kaikki JMOL-tiedostona (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Tallenna JVXL-pinta" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Vie tiedostoon {0} 3D-mallina" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Laskenta" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimoi rakenne" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Mallinnustyökalut" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Eristä MOL-data" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Pistepinta" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van der Waals-pinta" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Molekyylipinta" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Liuotinpinta ({0}-Ã¥ngströmiä)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Liuottimen vaikutuspinta (VDW + {0} Ã¥ngströmiä)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Lataa uudelleen {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Lataa uudelleen {0} + näytä {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Lataa uudelleen + Polyhedra" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Piilota" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Pilkullinen" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Leveys pikseleinä" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Leveys Ã¥ngströmeinä" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Valinnan halovisualisointi" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Näytä vedyt" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Näytä mittaukset" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Syvyysnäkökulma" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol värit" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Tietoja..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "VIRHE komentosarjakääntäjässä: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "edellytetään x- y- z-akselit" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} ei sallittu, jos taustakuvamalli näytetään" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "huono argumenttimäärä" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Kaikki Miller indeksit eivät voi olla nollia." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "huono [R,G,B] väri" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "edellytetään boolean" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "edellytetään boolean tai numero" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "edellytetään boolean, numero, tai {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "edellytetään väri" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "edellytetään värin tai paletin nimi (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "edellyttää komentoa" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "edellytetään {x y z} tai $name tai (atom expression)" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "piirrettyä objektia ei ole määritelty" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "odottamaton lopetus tai komentosarja" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "edellytetään pätevä (atom expression)" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "edellytetään (atom expression) tai kokonaisluku" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "edellytetään tiedoston nimi" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "tiedostoa ei löydy" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "yhteensopimaton argumentti" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "puutteellinen argumentti" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "edellytetään kokonaisluku" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "kokonaisluku alueen ({0} - {1}) ulkopuolelta" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "kelpaamaton argumentti" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "kelpaamaton parametrien järjestys" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "edellytetään avainsana" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "MO-kerroindataa ei ole saatavilla" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "edellytetään MO-indeksi väliltä 1 - {0}" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "MO-kantafunktio/kerroin-dataa ei ola saatavilla tälle ruudulle" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "MO hallintaan tarvittavaa dataa ei ole saatavilla" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "TIedosto sisältää vain yhden molekyyliorbitaalin" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} edellyttää vain yhden mallin näyttämistä" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} edellyttää vain yhden mallin lataamista" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Dataa ei ole saatavilla" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Osittaisvarauksia ei luettu tiedostosta; Jmol tarvitsee näitä MEP-datan " +"renderointiin." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Ei alkeiskoppia" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "edellyttää numeroa" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "numeron täytyy olla välillä ({0} tai {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "desimaali välin ({0} - {1}) ulkopuolella" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "objektin nimi edellytetään '$' jälkeen" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"edellytetään taso -- joko kolme pistettä tai atom expressions tai {0} tai " +"{1} tai {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "edellytetään ominaisuuksien nimi" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "avaruusryhmää {0} ei löytynyt." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "edellytetään noteerattu merkkijono" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "edellytetään noteerattu merkkijono tai tunnistin" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "liian monta pyörimistasoa määritelty" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "liian monta komentosarjatasoa" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "tunnistamaton atomiominaisuus" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "tunnistamaton sidosominaisuus" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "tunnistamaton komento" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "tunnistamaton runtime-ilmaisu" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "tunnistamaton objekti" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "tunnistamaton parametri {0}" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"tunnistamaton {0} parametri Jmol-tila -komentosarjassa (aseta joka " +"tapauksessa)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "tunnistamaton SHOW-parametri -- käytä {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "kirjoita mitä? {0} tai {1} \"filename\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "VIRHE komentosarjassa: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atomia poistettu" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} vetysidokset" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "tiedosto {0} luotu" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "kelpaamaton konteksti: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "edellyttää { number number number }" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "edellyttää lopettamista tai lauseketta" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "edellyttää tunnistetta tai lyhenteen spesifiointia" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "atomin kelpaamaton määrittely" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "ketjun kelpaamaton määrittely" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "lausekkeessa kelpaamaton merkki: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "mallin kelpaamaton määrittely" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "puuttuva {0} END" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "edellytetetään numeroa tai muuttujan nimeä" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "edellyttää lyhenteen määrittelyä (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} edellyttää" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} odottamaton" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "lausekkeessa tunnistamaton merkki: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "tunnistamaton merkki: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} tukia lisätty" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} sidosta poistettu" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} uusia sidoksia; {1} muokattu" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Huom: Tähän yhteyteen vaikuttaa useampi kuin yksi malli!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Avaa menu klikkaamalla..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet versio {0} {1}.\n" +"\n" +"OpenScience-projekti.\n" +"\n" +"Lisätietoja: http://www.jmol.org" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Tiedostovirhe:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "aseta/uusi atomi tai sidos (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "esiin ponnahtava viimeksi käytetty valikko (valitse suoraan Jmollista)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "poista atomi (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "poista sidos (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "aseta syvyys (takataso; edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "liikuta atomia (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "liikuta koko DRAW-objektia (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "liikuta tiettyä DRAW-pistettä (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "liikuta etikettiä (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "liikuta atomia ja optimoi molekyyli (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "liikuta ja optimoi molekyyli (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "liikuta valittuja atomeja (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "liikuta atomeja Z-akselin suuntaisesti (vaatii {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simuloi multi-touch -toimintoa hiiren avulla)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "käännä navigointipiste (edellyttää {0} ja {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "valitse atomi" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "yhdistä atomeja (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "valitse ISOSURFACE-piste (edellyttää {0}" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "piilota/näytä valittu etiketti (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"valitse atomi ja sisällytä mittauksiin (mittaamisen aloittamisen tai {0} " +"jälkeen)" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "valitse piste tai atomi navigoidaksesi (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "valitse DRAW-piste (mittauksille) (edellyttää {0}" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "esiin ponnahtava koko valikko" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "nollaa (klikkaa pois mallista)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "pyöritä" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "liikuta haaraa sidoksen ympärillä (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "pyöritä valittuja atomeja (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "pyöritä Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"pyöritä Z (hiiren horisontaalinen liike) tai zoomaa (hiiren vertikaalinen " +"liike)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "valitse atomi (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "valitse ja liikuta atomeja (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "poista valinnoista tämä atomiryhmä (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "valitse EI MITÄÄN (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "lisää tämä atomijoukko valittujen atomien valikoimaan (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "vaihtele valintaa (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"jos kaikki on valittu, poista kaikki valinnat, muuten lisää tämä atomiryhmä " +"valittujen atomien valikoimaan (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "aloita tai lopeta mittaaminen valitsemalla atomi" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "aseta vaaka (etutaso; edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "siirrä vaaka/syvyysikkuna (molemmat tasot; edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zoom (ikkunan oikeaa reunaa pitkin)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"valitse kaksi akselin ympäri vastapäivään kiertävää pistettä (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"valitse kaksi akselin ympäri myötäpäivään kiertävää pistettä (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "lopeta liike (edellyttää {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"pyörimismalli (lopeta liike painamalla ja vapauttamalla painikkeet " +"samanaikaisesti)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "käännä" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zoom" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "pyöritä mallia akselin ympäri valitsemalla yksi tai useampi atomi" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "pyöritä mallia akselin ympäri valitsemalla kaksi atomia" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" +"näytä atomien välinen symmetriasuhde valitsemalla yksi tai useampi atomi" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "näytä atomien välinen symmetriasuhde valitsemalla kaksi atomia" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Asetetaan lokitiedosto: {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Lokitiedoston polkua ei voitu asettaa." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} piilotettiin atomit" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomia valittu" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Liikuta etikettiä vetämällä" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "leikepöytä ei käytettävissä -- käytä kirjattua applettia" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} lisättiin vedyt" + +#~ msgid "Hide Symmetry" +#~ msgstr "Piilota symmetria" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Ladataan Jmol applet ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} sekuntia" + +#~ msgid "Java version:" +#~ msgstr "Java-versio:" + +#~ msgid "1 processor" +#~ msgstr "1 prosessori" + +#~ msgid "unknown processor count" +#~ msgstr "tuntematon prosessorilukumäärä" + +#~ msgid "Java memory usage:" +#~ msgstr "Java-muistin käyttö:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB vapaa" + +#~ msgid "unknown maximum" +#~ msgstr "tuntematon maksimi" + +#~ msgid "Open file or URL" +#~ msgstr "Avaa tiedosto tai URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fr.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fr.po new file mode 100755 index 000000000000..15ae4411a7c9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fr.po @@ -0,0 +1,2652 @@ +# Jmol french translation. +# Copyright (C) 2005 +# This file is distributed under the same license as the Jmol package. +# Nicolas Vervelle , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: Jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:44+0000\n" +"Last-Translator: Nicolas Vervelle \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: France\n" +"X-Poedit-Language: French\n" +"X-Poedit-Basepath: ../../../..\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Élément?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Console de Script Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Fichier" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Fermer" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Aide" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Recherche" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Commandes" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Fonctions Mathématiques" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Préférences & Paramètres" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Plus" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Éditeur" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Etat" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Lancer" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Effacer la sortie" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Effacer la saisie" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historique" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Charger" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"Appuyer sur Ctrl+Entrée pour une nouvelle ligne ou copier les données d'un " +"modèle et appuyer sur Load" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Les messages apparaissent ici. Saisissez les commandes dans la boîte ci-" +"dessous. Cliquez sur l'article Aide du menu de la console pour obtenir " +"l'aide en ligne, qui apparaitra dans une nouvelle fenêtre de navigateur." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Éditeur de scripts Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Console" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Ouvrir" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Face" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Vérifier" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Retourner en haut" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Incrément" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pause" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Reprendre" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Arrêter" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Effacer" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Fermer" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Fichier ou URL :" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Type d'image" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Qualité JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Compression PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Qualité PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Oui" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Non" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Voulez-vous écraser le fichier {0} ?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Avertissement" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Tous les Fichiers" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Annuler" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Ferme la boîte de dialogue du sélecteur de fichiers" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Détails" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "répertoire" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Ouvrir le répertoire sélectionné" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Caractéristiques" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modifié" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Fichier générique" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nommer" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nom du Fichier" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Taille" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Fichiers du type :" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Type" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Aide" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Aide sur le sélecteur de fichiers" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Dossier personnel" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Liste" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Rechercher dans :" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Erreur lors de la création du nouveau dossier" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Nouveau dossier" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Créer un nouveau dossier" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Ouvre le fichier sélectionné" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Sauvegarder" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Sauvegarder le fichier sélectionné" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Sauver dans:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Mise à jour" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Mise à jour de la liste des répertoires" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Haut" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Remonter d'un niveau" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "Ok" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Aperçu" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Ajouter les modèles" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "informations de débogage pour les dessins animés" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"NOTE : Les positions structurelles d''amides d''hydrogène sont présentes et " +"seront ignorées. Leurs positions seront évaluées, conformément à l''analyse " +"standard DSSP.\n" +"Utilisez {0} afin de ne pas effectuer cette évaluation.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"NOTE : Les positions structurelles d''amides d''hydrogène sont présentes et " +"seront utilisées. Les résultats peuvent différer de façon significative par " +"rapport à l''analyse standard DSSP.\n" +"Utilisez {0} afin d'ignorer ces positions d'hydrogène.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabe" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturien" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Azéri" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnien" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalan" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Tchèque" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danois" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Allemand" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Grec" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Anglais australien" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Anglais britannique" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Anglais américain" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Espagnol" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonien" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Basque" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finnois" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Féroïen" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Français" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "frison" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "galicien" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Croate" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Hongrois" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Arménien" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonésien" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italien" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japonais" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javanais" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Coréen" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malais" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norvégien « Bokmal »" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Néerlandais" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitan" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polonais" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugais" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portugais brésilien" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russe" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovène" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbe" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Suédois" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamoul" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Télugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turc" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Ouïghour" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukrainien" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Ouzbek" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Chinois Simplifié" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Chinois traditionnel" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Impossible d''obtenir la classe du champ de force {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Aucun atome sélectionné -- rien à faire!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomes seront minimisés." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "Impossible d''installer le champ de force {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "Nouveau" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "Annuler (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "Rétablir (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "centre" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "ajouter hydrogènes" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "réduire" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "fixer les hydrogènes et réduire" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "réinitialiser" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "Sauvegardez le fichier" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "sauvegardez l'état" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "inverser anneau stéréochimie" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "Effacez l'atome" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "faire glisser pour lier" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "faire glisser atome" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "faire glisser atome (et réduire)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "faire glisser et réduire la molécule (attachement)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "augmenter la charge" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "réduire la charge" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "supprimer le lien" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "simple" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "double" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "triple" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "augmenter l'ordre" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "réduire l'ordre" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "pivoter le lien (MAJ.+ glisser)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "quitter le mode kit de modélisation" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Groupe d'espace" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Aucun(e)" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Tout" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processeurs" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "Total de {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "Maximum de {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Console de Script Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Manuel Souris" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Traductions" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Système" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Aucun atome chargé" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Configurations" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Elément" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Modèle/Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Langue" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Par nom de résidu" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Par HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Orbites moléculaires ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symétrie" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informations du modèle" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Sélectionner ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Tous les {0} modèles" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configurations ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Collection de {0} modèles" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "{0} atomes" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "{0} liens" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "{0} groupes" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "{0} chaînes" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "{0} polymères" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "modèle {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Voir {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menu Principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolécules" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolécule {0} ({1} atomes)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "charger la biomolécule {0} ({1} atomes)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Aucun(e)" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Afficher uniquement la sélection" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Inverser la sélection" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Vue" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Face" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Gauche" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Droite" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Haut" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Bas" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Fond" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protéine" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Squelette" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Chaînes latérales" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Résidus polaires" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Résidus non polaires" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Résidues basiques (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Résidus acides (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Résidus non chargés" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nucléique" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "ADN" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "ARN" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Bases" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Paires AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Paires GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Paires AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Structure secondaire" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hétéro" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Tous les \"HETATM\" PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Tout Solvant" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Tout Eau" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Solvant non-aqueux" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM non-aqueux" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Glucide" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Aucun ci-dessus" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Style" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Combinaison" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK Remplissage" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Boule et bâton" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Bâtons" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Fil de fer" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Cartoon" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Trace" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomes" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Off" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Liens" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Activer" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Liens Hydrogène" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Calculer" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Liens H sur la chaîne latérale" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Liens H sur le squelette" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Liens disulfure" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Liens SS sur la chaîne latérale" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Liens SS sur le squelette" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Structures" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Roquettes Cartoon" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Rubans" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Roquettes" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Rives" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibration" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vecteurs" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spectre" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-RMN" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-RMN" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixels" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Echelle {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stéréographique" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Lunettes Rouge+Cyan" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Lunettes Rouge+Bleu" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Lunettes Rouge+Vert" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Vision yeux croisés" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Vision yeux parallèles" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Étiquettes" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Avec le symbole de l'élément" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Avec le nom de l'atome" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Avec le numéro de l'atome" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Position du texte par rapport à l'atome" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Centré" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Haut droite" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Bas droite" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Haut gauche" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Bas gauche" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Couleur" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Par combinaison" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Elément (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Emplacement alternatif" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molécule" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Charge formelle" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Charge partielle" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Température (Relative)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Température (fixée)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aicde Aminé" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Chaîne" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Groupe" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomère" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Galbé" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Hérite" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Noir" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Blanc" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cyan" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Rouge" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Orange" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Jaune" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Vert" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Bleu" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violet" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Saumon" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Olive" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Marron" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Gris" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Bleu ardoise" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Or" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchidée" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Rendre opaque" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Rendre translucide" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Fond" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Surfaces" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Axes" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Boîte englobante" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Cellule unitaire" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Zoom avant" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Zoom arrière" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Rotation" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Changer la vitesse X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Changer la vitesse Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Changer la vitesse Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Changer FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animation" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Mode d'Animation" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Une fois" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrome" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "En boucle" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Lancer" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Arrêter" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Trame suivante" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Trame précédente" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Revenir au début" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "En arrière" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Redémarrer" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Double-clic commence et finit toutes les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Cliquer pour une mesure de distance" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Cliquer pour une mesure d'angle" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Cliquer pour une mesure de torsion (dihédrale)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Cliquez sur deux atomes afin d'afficher la séquence dans la console" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Effacer les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Donner la liste des mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Unité pour les distances en nanomètres" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Unité pour les distances en Angstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Unité pour les distances en picomètres" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Réglez la cueillette" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Centre" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identité" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Texte" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Sélectionner atome" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Sélectionner chaîne" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Sélectionner élément" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "quitter le mode kit de modélisation" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Sélectionner groupe" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Sélectionner molécule" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Sélectionner site" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "opération de symétrie montrent" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Afficher" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Console de Script Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Contenu du fichier" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Entête du fichier" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Données isosurface au format JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Données orbites moléculaires au format JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modèle" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientation" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Groupe spatial" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Etat courant" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Fichier" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Recharger" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Ouvert du PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Ouvre le fichier sélectionné" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Ouvrir" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Charger la maille élémentaire entière" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Ouvrir le script" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Enregistrer une copie de « {0} »" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Enregistrer le script avec l'état" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Enregistrer le script avec l'historique" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Exporter une image {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Tout enregistrer en tant que fichier JMOL (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Enregistrer l'isosurface JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Exporter le modèle 3D {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Calcul" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimiser la structure" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Kit de modélisation" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Extraire les données MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Surface pointillée" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "Surface de van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Surface moléculaire" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Surface du solvant (sonde de {0} Ã…)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Surface accessible au solvant (VDW + {0} Ã…)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Recharger {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Recharger {0} + Afficher {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Recharger + Polyhèdre" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Masquer" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Pointillé" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Largeur en Pixels" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Largeur en Angströms" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Halos de sélection" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Afficher les Hydrogènes" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Afficher les mesures" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Profondeur de la perspective" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Couleurs RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "À propos ..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "Erreur du compilateur de script: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "axe x y z attendu" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} n'est pas autorisé avec un modèle de fond affiché" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "mauvais nombre d'arguments" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Les indices de Miller ne peuvent pas être tous égaux à 0." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "couleur [R, V, B] incorrecte" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "booléen attendu" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "boolean ou nombre attendu" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "boolean, nombre, ou {0} attendu" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "impossible d'assigner la valeur" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "couleur attendue" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "un nom de couleur ou de palette (Jmol, Rasmol) est requis" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "commande attendue" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} o $name o une expression atome requis" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "objet de dessin non défini" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "fin inattendue du script de commande" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "(expression d'atomes) valide attendue" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(expression d'atomes) ou entier attendu" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "nom de fichier attendu" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "fichier non trouvé" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "arguments incompatibles" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "nombre d'arguments insuffisant" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "entier attendu" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "entier en dehors de la plage de valeurs ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "argument incorrect" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ordre des paramètres incorrect" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "mot clé attendu" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "pas de données MO coefficient disponibles" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Un indice MO de 1 à {0} est requis" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "aucune base MO / données coefficient disponible pour ce cadre" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "no MO occupancy data available" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Une seule orbite moléculaire est disponible dans ce fichier" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} requière qu'un seul modèle soit affiché" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} requiert qu'un seul modèle être chargé" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Pas de données disponibles" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Aucune charge partielle n'a été lue depuis le fichier; Jmol en a besoin pour " +"générer les données MEP." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Pas de cellule unitaire" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "nombre attendu" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "le nombre doit être ({0} ou {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "nombre décimal en dehors de la plage de valeurs ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "nom d'objet attendu après '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"plan attendu -- soit 3 points ou une expression d''atomes ou {0} ou {1} ou " +"{2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "nom de propriété attendu" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "Le groupe spatial {0} n'a pas été trouvé" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "chaîne de caractères entre guillemets attendue" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "chaîne de caractères entre guillemets ou identifiant attendu" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "trop de points de rotation ont été spécifiés" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "trop de niveaux de script" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "Propriété d'atome non reconnue" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "Propriété de lien non reconnue" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "commande non reconnue" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "expression non reconnue" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "objet non reconnu" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "Paramètre {0} non reconnu" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"méconnue {0} paramètre dans le script Jmol état (ensemble de toute façon)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "Paramètre SHOW non reconnu -- utiliser {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "écrire quoi? {0} ou {1} \"nom de fichier\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "ERREUR de script: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atomes supprimés" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} liens hydrogène" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "Fichier {0} crée" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "context incorrect pour {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ nombre nombre nombre } attendu" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "fin d'expression attendue" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "spécification identifiant ou de résidus prévus" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "spécification d'atome incorrecte" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "spécification de chaîne incorrecte" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "élément d''expression incorrect: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "spécification de modèle incorrecte" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "manquantes END pour {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "nombre ou nom de variable attendu" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "spécification de résidu (ALA, AL?, A*) attendue" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} attendu" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} inattendue" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "élément d''expression non reconnu: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "élément non reconnu: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} traverse(s) ajoutée(s)" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} connexions supprimées" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} de nouveaux liens; {1} modification" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Note : plus d'un modèle interagit dans ce contact !" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Cliquer pour le menu ..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet version {0} {1}.\n" +"\n" +"Fait partie du projet OpenScience.\n" +"\n" +"Voir http://www.jmol.org pour de plus amples informations" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Erreur de Fichier:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "assigner/nouvel atome ou lien (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "afficher le menu contextuel récent ( cliquez sur frank Jmol )" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "supprimer atome (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "supprimer le lien (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "ajuster la profondeur (plan arrière ; requiert {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "déplacer atome (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "déplacer objet DRAW entier (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "déplacer un point DRAW (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "déplacer le label (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "déplacer atome et réduire la molécule (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "déplacer et réduire la molécule (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "déplacer les atomes sélectionnés (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "Faire glisser les atomes selon la direction Z (nécessite {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simuler le multi-touches via la souris)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "déplacer le point de navigation (requiert {0} et {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "choisir un atome" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "connecter les atomes (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "choisir un point ISOSURFACE (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "choisir un label afin de basculer entre affiché/masqué (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"choisir un atome afin de l'inclure dans la mesure (après le début d'une " +"mesure ou après {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "choisir un point ou un atome au(x)quel(s) se rendre (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "choisir un point DRAW (pour des mesures) (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "afficher le menu contextuel complet" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "réinitialiser (lors d'un clic hors du modèle)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "rotation" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "faire pivoter la branche autour du lien (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "faire pivoter les atomes sélectionnés (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "Faire tourner Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"pivoter Z (mouvement horizontal de la souris) ou zoomer (mouvement vertical " +"de la souris)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "sélectionner un atome (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "sélectionner et faire glisser les atomes (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "Dé-sélectionner ce groupe d''atomes (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "Ne rien sélectionner (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "ajouter ce groupe d'atomes au set d'atomes sélectionnés (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "activer/désactiver sélection (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"si tous sont sélectionnés, désélectionnez les tous, autrement ajoutez ce " +"groupe d'atomes au set d'atomes sélectionnés (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "choisir un atome afin de lancer ou compléter une mesure" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "ajuster la dalle (plan frontal ; requiert {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" +"déplacer la fenêtre de dalle/profondeur (les deux plans ; requiert {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zoomer (le long du bord droit de la fenêtre)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"Cliquez sur deux points afin de tourner autour de l'axe dans le sens inverse " +"des aiguilles d'une montre (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"Cliquez sur deux points afin de tourner autour de l'axe dans le sens des " +"aiguilles d'une montre (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "interrompre le mouvement (requiert {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"modèle de rotation (faire glisser vivement, relâcher le bouton et arrêter le " +"mouvement simultanément)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "Translation" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "Zoom" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" +"Choisir un atome supplémentaire pour faire tourner le modèle autour d'un axe" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "Choisir deux atomes pour faire tourner le modèle autour d'un axe" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "choisir un atome supplémentaire afin d'afficher la relation symétrique" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "choisir deux atomes afin d'afficher la relation symétrique entre eux" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Configuration du fichier journal dans {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Impossible de définir le chemin de fichier journal" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atomes cachés" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomes sélectionnés" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Faire glisser afin de déplacer le label" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "Le presse-papiers est inacessible -- utiliser l'applet signée" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} hydrogène(s) ajouté(s)" + +#~ msgid "Hide Symmetry" +#~ msgstr "Masquer la symétrie" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Chargement de l'applet Jmol ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} secondes" + +#~ msgid "Java version:" +#~ msgstr "Version de Java :" + +#~ msgid "1 processor" +#~ msgstr "1 processeur" + +#~ msgid "unknown processor count" +#~ msgstr "Nombre de processeurs inconnu" + +#~ msgid "Java memory usage:" +#~ msgstr "Utilisation mémoire de Java" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB libres" + +#~ msgid "unknown maximum" +#~ msgstr "Maximum inconnu" + +#~ msgid "Open file or URL" +#~ msgstr "Ouvrir un fichier ou une URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fy.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fy.po new file mode 100755 index 000000000000..3c8a7ce5496d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/fy.po @@ -0,0 +1,2564 @@ +# Frisian translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Egon Willighagen \n" +"Language-Team: Frisian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +msgid "&Close" +msgstr "" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Help" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/hu.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/hu.po new file mode 100755 index 000000000000..fb4dc63e71d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/hu.po @@ -0,0 +1,2619 @@ +# Hungarian translation of the Jmol applet +# Copyright (C) 2005-2007 by the Jmol Development Team +# +# This file is distributed under the same license as the Jmol package. +# Zoltán ZörgÅ‘ , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: JmolApplet 11.7.x\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Krasznecz Zoltán \n" +"Language-Team: Hungarian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: HUNGARY\n" +"X-Poedit-Language: Hungarian\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol parancsnyelvi konzol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Fájl" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Bezár" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Súgó" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Keresés" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Parancsok" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Matematikai &függvények" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Paraméterek &beállítása" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Továbbiak" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "SzerkesztÅ‘" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Státus" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Futtat" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Kimenet törlése" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Bemenet törlése" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "ElÅ‘zmények" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Betöltés" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"Nyomjon Ctrl-Enter-t új sorhoz, vagy illesszen be modelladatotés nyomja meg " +"a Betöltés gombot" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Az üzenetek itt fognak megjelenni. A parancsokat az alábbi mezÅ‘be írja be." +"Kattintson a konzol Súgó menüpontjára segítségért, mely egy új böngészÅ‘-" +"ablakban fog megjelenni." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konzol" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Megnyitás" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Elölnézet" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skript" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "EllenÅ‘rzés" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Lépés" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Megállít" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Folytatás" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Leállít" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Törlés" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Bezár" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Fájl vagy URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Kép típus" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG minÅ‘ség ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG tömörítés ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG tömörítés ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Igen" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Nem" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Fölül akarja írnia a {0} fájlt?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Figyelmeztetés" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Minden fájl" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Mégsem" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "A fájlkiválastás megszakítása" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Részletek" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Könyvtár" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "A kijelölt könyvtár megnyitása" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Attribútumok" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Módosítva" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Ãltalános fájl" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Név" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Fájlnév:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Méret" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Fájlok ezzel a típussal:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Típus" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Súgó" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Fájlkiválasztó súgója" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Haza" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Lista" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Keresés itt:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Hiba a mappalétrehozás közben" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Új mappa" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Új mappa létrehozása" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Kijelölt fájl megnyitása" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Mentés" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Kijelölt fájl mentése" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Mentés ide:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Frissítés" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Könyvtártartalom frissítése" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Fel" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Egy szintet fel" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "ElÅ‘nézet" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Modellek hozzáfűzése" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arab" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Katalán" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Cseh" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Dán" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Német" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Görög" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Britt angol" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Amerikai angol" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spanyol" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Észt" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francia" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +# Hungarian message ID not yet implemented! +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Magyar" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Olasz" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Kóreai" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norvég" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Holland" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Lengyel" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugál" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brazil portugál" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Orosz" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Szlovén" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Svéd" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Török" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukrán" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Egyszerűsített kínai" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Kínai (hagyományos)" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Nem található meg az erÅ‘térhez tartozó {0} osztály" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Nincs kiválasztott atom - nincs mit tenni!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atom lessz minimalizálva." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "nem sikerült a {0} erÅ‘teret beállítani" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Egyik sem" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Mind" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processzor" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "Összesen: {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "Maximum: {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol parancsnyelvi konzol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Egérkezelés" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Fordítások" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Rendszer" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Nincs atom betöltve" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Beállítások" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Elem" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Modell/Keret" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Nyelv" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Gyök neve szerint" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "HETATM szerint" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Szimmetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Modell jellemzÅ‘i" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Kiválasztás ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Mind a {0} modellt" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfigurációk ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "{0} modell gyűjteménye" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "Atomok száma: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "Kötések száma: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "Csoportok száma: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "Láncok száma: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "Polimérek száma: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "Modell {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "{0} nézet" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "FÅ‘menü" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Bio-molekulák" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "{0}. biomolekula ({1} atom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "{0}. biomolekula betöltése ({1} atom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Egyik sem" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Csak a kijelöltek látszanak" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Kijelölés megfordítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Nézet" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Elölnézet" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Balról" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Jobbról" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Alulnézet" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Hátulnézet" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Tengelyek" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Tengelyek" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Tengelyek" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Tengelyek" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Tengelyek" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Tengelyek" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Váz" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Oldalláncok" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Poláros gyökök" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Nempoláros gyökök" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Bázikus gyökök (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Savas gyökök (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Semleges gyökök" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nukleikus" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNS" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNS" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Bázisok" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT-párok" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC-párok" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU-Párok" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Másodlagos struktúra" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Minden PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Minden oldószer" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Minden víz" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Vízmentes oldószer" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Vízmentes HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Szénhidrát" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Egy sem a fentiek közül" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Stílus" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Séma" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CKP térkitöltés" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Golyók és pálcikák" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Pálcikák" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Rács" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Rajzfilm" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Követés" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomok" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Ki" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Kötések" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Be" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Hidrogénkötések" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Számítás" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Hidrogén-kötés oldallánc beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Hidrogén-kötés gerinc beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Diszulfid kötések" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "S-S kötés oldallánc beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "S-S kötés gerinc beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Struktúrák" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Rajzfilm-rakéta" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Szalagok" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Rakéták" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Fonalak" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibráció" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektorok" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} képpont" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Méretezés {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Sztereó" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Piros-cián szemüveg" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Piros-kék szemüveg" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Piros-zöld szemüveg" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Szemkeresztezés" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Párhuzamos nézés" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Feliratok" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Az elem jelével" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Az atom nevével" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Az atom sorszámával" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "A feliratok helyzete az atomokon" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Középen" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Jobb-felsÅ‘ rész" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Bal-alsó rész" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Bal-feslÅ‘ rész" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Bal-alsó rész" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Színek" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Séma szerint" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Eleme (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Alternatív elhelyezkedés" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekula" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formális töltés" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Részleges töltés" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "(Relatív) hÅ‘mérsékle" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "(Rögzített) hÅ‘mérséklet" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminósav" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Lánc" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Csoport" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomér" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Shapely" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Öröklés" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Fekete" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Fehér" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Ciánkék" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Piros" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Narancs" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Sárga" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Zöld" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Kék" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigó" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Ibolya" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmon" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Oliva" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Gesztenyebarna" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Szürke" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Angol kék" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Arany" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchidearózsaszín" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Nem áttetszÅ‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "ÃttetszÅ‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Háttér" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Felületek" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Tengelyek" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Befoglaló doboz" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Egységcella" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Nagyítás" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Nagyítás" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Kicsinyítés" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Spin" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "X érték beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Y érték beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Z érték beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Framerate beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animáció" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animáció módja" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Egyszeri lejátszás" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Oda-vissza játszás" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Ugrás" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Lejátszás" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Leállít" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "KövetkezÅ‘ kocka" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "ElÅ‘zÅ‘ kocka" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Visszateker" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Visszafele" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Újrakezdés" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Méretezés" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "A dupla kattintás indítja és zárja a méretezést" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Távolságmérés" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Szögméréshez" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Csavarodásmérés (diéder-torzíó)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Mérési eredmények törlése" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Mérési eredmények listázása" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Mérték: nanométer" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Mérték: Ã…ngström" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Mérték: pikométer" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Kiválasztási mód beállítása" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Közép" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Azonosítás" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Felirat" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Atom kiválasztása" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Lánc kiválasztása" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Elem kiválasztása" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Csoport kiválasztása" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Molekula kiválasztása" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Oldal kiválasztása" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Mutat" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol parancsnyelvi konzol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Fájl tartalma" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Fájl fejléce" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Izofelület JVXL formában" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Molekuláris orbitálok JVXL formában" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modell" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientációk" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Térbeli csoport" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Aktuállis állapot" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Fájl" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Újratölt" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Kijelölt fájl megnyitása" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Megnyitás" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Teljes egységcella betöltése" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "MOL adatok kivonatolása" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Pontozott felület" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van der Waals felszín" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Molekuláris felszín" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Oldószer felszín ({0}-Angstrom próba)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Oldószerrel elérhetÅ‘ felszín (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "{0} újratöltése" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Újratöltés + poliéder" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Elrejt" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Pontozott" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Piszelvastagság" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Ã…ngström szélesség" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Jelölési környezet" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Hidrogén látszik" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Méretezések látszanak" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspektívikus mélységszámítás" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol színek" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Névjegy…" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "skript fordítási HIBA: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x y z tengelyeket vártam" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} nem megengedett látható háttérmodell mellett" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "nem megfelelÅ‘ argumentumszám" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "A Miller-index nem lehet zéró" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "rossz RGB színkód" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "logikai adatot vártam" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "logikai adatot vagy számot vártam" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "logikai értéket, számot vagy {0}-t vártam" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "színt vártam" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "egy szín vagy paletta név (Jmol, Rasmol) szükséges" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "parancsot vártam" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} vagy $name vagy (atom kifejezés) szükséges" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "rajzobjektum nincs definiálva" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "a skriptnek váratlanul lett vége" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "érvényes (atom kifejezést) vártam" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(atom kifejezést) vagy egészt vártam" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "fájnevet vártam" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "A fájl nem található" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "összeférhetetlen argumentumok" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "elégtelen argumentum" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "egészt vártam" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "az egésznek a {0}-{1} tartományba kell esni" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "érvénytelen argumentum" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "érvéntelen paramétersorrend" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "kulcszót vártam" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "nincs MO együttható adat" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Egy 1 és {0} közé esÅ‘ MO sorszám kell" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "nincs MO bázis/együttható adat ebben a keretben" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "nincs MO térfoglalási adat" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Ebben a fájlban csak egy elérhetÅ‘ molekuláris orbitál van." + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} megköveteli, hogy csak egy modell legyen látható" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Nincs adat" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Nem lett részleges töltés kiolvasva a fájlból; a Jmol-nak ezekre szükségevan " +"a MEP adatok rendereléséhez." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Nincs egységcella" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "számot vártam" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "A szám csak {0} vagy {1} lehet" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "A számnak {0} - {1} közé kell esni" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "objektumnév kell legyen a '$' után" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"síkot vártam -- vagy három pontot, vagy atom kifejezést vagy {0} vagy {1} " +"vagy {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "tulajdonságnevet vártam" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "A {0} tércsoport nem található" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "idézÅ‘jeles stringet vártam" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "idézÅ‘jeles stringet vagy azonosítót vártam" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "ez túl sok forgáspont" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "túl kevés parancsfájl szint" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "ismeretlen atomjellemzÅ‘" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "ismeretlen kötésjellemzÅ‘" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "ismeretlen parancs" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "futási idÅ‘ben értelmezhetetlen kifejezés" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "ismeretlen objektum" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "ismeretlen {0} paraméter" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"ismeretlen {0} paraméter a Jmol állapot parancsfájlban (mindenképp beállítva)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "ismeretlen SHOW paraméter, használja ezt: {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "mit írjak? {0} vagy {1} \"fájlnév\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "skript HIBA: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atom tötölve" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} hidrogénkötés" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "érvénytelen környezet {0} számára" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ szám szám szám } várva" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "a kifejezés végét vártam" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "azonosítót vagy csapadék specifikációt vártam" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "érvénytelen atom specifikáció" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "érvénytelen lánc specifikáció" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "érvénytelen kifejezéselem: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "érvénytelen modell specifikáció" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "hiányzik a {0} végeleme" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "számot vagy változónevet vártam" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "csapadék specifikációt (ALA, AL?, A*) vártam" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} atom kiválasztva" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} atom kiválasztva" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "ismeretlen kifejezés elem: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "ismeretlen elem: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, fuzzy, java-format +msgid "{0} struts added" +msgstr "{0} atom elrejtve" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} kapcsolat törölve" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} új kötés, {1} módosítva" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol kisalkalmazás {0} {1} verzió.\n" +"\n" +"Egy OpenScience Projekt.\n" +"\n" +"További információk a http://www.jmol.org oldalon" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Adathiba:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "fordítás" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "válassz ki még egy atomot, hogy a modell a tengely körül forogjon" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "válassz ki két atomot, hogy a modell a tengely körül forogjon" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atom elrejtve" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atom kiválasztva" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "a vágólap nem érhetÅ‘ el, használjon aláírt Java kisalkalmazást" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "A Jmol kisalkalmazás töltÅ‘dik..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} másodperc" + +#~ msgid "1 processor" +#~ msgstr "1 processzor" + +#~ msgid "unknown processor count" +#~ msgstr "Processzorok száma ismeretlen" + +#~ msgid "{0} MB free" +#~ msgstr "Szabad: {0} MB" + +#~ msgid "unknown maximum" +#~ msgstr "Ismeretlen maximum" + +#~ msgid "Open file or URL" +#~ msgstr "Fájl vagy URL megnyitása" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/hy.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/hy.po new file mode 100755 index 000000000000..c4d062fb32e2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/hy.po @@ -0,0 +1,2568 @@ +# Armenian translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Serj Safarian \n" +"Language-Team: Armenian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "ÕÕ¡ÕžÖ€Ö€" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Õ“Õ¡Õ¯Õ¥Õ¬" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Õ•Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&ÕˆÖ€Õ¸Õ¶Õ¥Õ¬..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Ô±Õ¾Õ¥Õ¬Õ«Õ¶" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "ÕŽÕ«Õ³Õ¡Õ¯" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Ô³Õ¸Ö€Õ®Õ¡Ö€Õ¯Õ¥Õ¬" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "ÕŠÕ¡Õ¿Õ´Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Ô²Õ¥Õ¼Õ¶Õ¥Õ¬" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Ô³Ö€Õ¾Õ¡Õ®Ö„" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "ÕÕ¿Õ¸Ö‚Õ£Õ¸Ö‚Õ´" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Õ”Õ¡ÕµÕ¬" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Ô´Õ¡Õ¤Õ¡Ö€" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Õ„Õ¡Ö„Ö€Õ¥Õ¬" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Õ“Õ¡Õ¯Õ¥Õ¬" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ô±ÕµÕ¸" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "ÕˆÕ¹" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Ô²Õ¸Õ¬Õ¸Ö€ Õ¶Õ·Õ¸ÖÕ¶Õ¥Ö€Õ¨" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Õ€Õ¡Õ¿Õ¯Õ¡Õ¶Õ«Õ·Õ¥Ö€" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "ÕÕ¥Ö‚Õ¡ÖƒÕ¸Õ­Õ¾Õ¡Õ®" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Ô±Õ¶Õ¸Ö‚Õ¶Õ¨" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Õ†Õ·Õ¸ÖÕ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨Õ" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Õ‰Õ¡ÖƒÕ¨" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Õ†Õ·Õ¸ÖÕ« Õ¿Õ¥Õ½Õ¡Õ¯Õ¨Õ" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "ÕÕ¥Õ½Õ¡Õ¯Õ¨" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Õ‘Õ¡Õ¶Õ¯" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Õ†Õ¸Ö€ ÕºÕ¡Õ¶Õ¡Õ¯" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "ÕŽÕ¥Ö€Õ¥Ö‚" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "Ô¼Õ¡Õ¾" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Ô±Ö€Õ¡Õ¢Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Ô²Õ¸Õ½Õ¶Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Ô³Õ¥Ö€Õ´Õ¡Õ¶Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Õ€Õ¸Ö‚Õ¶Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Ô²Ö€Õ«Õ¿Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Ô±Õ´Õ¥Ö€Õ«Õ¯ÕµÕ¡Õ¶ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Õ§Õ½Õ¿Õ¸Õ¶Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Õ–Õ«Õ¶Õ¶Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Õ–Ö€Õ¡Õ¶Õ½Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Õ€Õ¸Ö‚Õ¶Õ£Õ¡Ö€Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Ô»Õ¶Õ¤Õ¸Õ¶Õ¥Õ¦Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "ÕƒÕ¡ÕºÕ¸Õ¶Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "ÕƒÕ¡Õ¾Õ¡Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Ô¿Õ¸Ö€Õ¥Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Õ€Õ¸Õ¬Õ¡Õ¶Õ¤Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Õ•Ö„Õ½Õ«Õ¿Õ¡Õ¶Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Ô¼Õ¥Õ°Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "ÕŠÕ¸Ö€Õ¿Õ¸Ö‚Õ£Õ¡Õ¬Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Ռուսերեն" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Ô¹Õ¡Õ´Õ«Õ¬Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Ô¹Õ¸Ö‚Ö€Ö„Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "ÕˆÖ‚Õ¯Ö€Õ¡Õ«Õ¶Õ¥Ö€Õ¥Õ¶" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Ô±Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¹Õ«Õ¶Õ¡Ö€Õ¥Õ¶" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "Õ¶Õ¸Ö€" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "Õ´Õ¡Ö„Ö€Õ¥Õ¬" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "ÕºÕ¡Õ°Õ¥Õ¬ Õ¶Õ·Õ¸ÖÕ¨" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid " {0} seconds" +#~ msgstr " {0} Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/id.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/id.po new file mode 100755 index 000000000000..760040175096 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/id.po @@ -0,0 +1,2641 @@ +# Indonesian translation for jmol +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:44+0000\n" +"Last-Translator: Andika Triwidada \n" +"Language-Team: Indonesian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Unsur?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Konsul Skrip Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Berkas" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Tutup" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Bantuan" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Cari..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Perintah" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Fungsi Matematika" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Atur &Parameter" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Lainnya" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Penyunting" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Keadaan" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Jalankan" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Bersihkan Keluaran" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Bersihkan Masukan" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Riwayat" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Muat" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"tekan CTRL-ENTER untuk baris baru atau tempelkan model data dan tekan Muat" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Pesan akan ditampilkan disini. Tuliskan perintah dalam boks dibawah. Klik " +"konsul menu Bantuan untuk bantuan on-line yang akan ditampilkan di jendela " +"baru penjelajah." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Penyunting Skrip Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsul" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Buka" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Depan" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skrip" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Periksa" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Paling Atas" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Langkah" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Jeda" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Lanjutkan" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Berhenti" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Bersihkan" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Tutup" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Berkas atau URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Tipe Gambar" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Kualitas JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Pemampatan PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Kualitas PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ya" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Tidak" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Apakah anda akan menindih berkas {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Peringatan" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Semua Berkas" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Batal" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Batalkan dialog pemilihan berkas" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Rincian" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Direktori" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Buka direktori yang dipilih" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atribut" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Diubah" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Berkas Generik" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nama" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nama Berkas:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Ukuran" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Berkas Bertipe:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tipe" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Bantuan" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Bantuan PemilihBerkas" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Beranda" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Daftar" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Lihat Pada:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Kesalahan membuat folder baru" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Folder Baru" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Buat Folder Baru" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Buka berkas yang dipilih" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Simpan" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Simpan berkas yang dipilih" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Simpan Dalam:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Perbarui" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Perbarui daftar direktori" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Naik" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Naik Satu Aras" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Pratinjau" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Tambahkan model" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"CATATAN: Tulang punggung posisi hidrogen amide ada dan akan diabaikan. " +"Posisinya akan diperkirakan, sesuai standar analisis DSSP.\n" +"Pilih {0} agar tidak menggunakan perkiraan ini.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"CATATAN:Tulang punggung posisi hidrogen amide ada dan akan digunakan. " +"Hasilnya mungkin berbeda jauh dari snadar analisis DSSP.\n" +"Pilih {0} untuk mengabaikan posisi hidrogen.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arab" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturia" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Azerbaijan" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnia" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Katala" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Ceko" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Denmark" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Jerman" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Yunani" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Inggris Australia" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Inggris Britania" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Inggris Amerika" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spanyol" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonia" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Basque" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finlandia" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Faro" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Perancis" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisia" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Galisia" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Kroasia" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Hungaria" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armenia" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesia" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italia" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Jepang" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Jawa" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Korea" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Melayu" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norwegia Bokmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Belanda" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occita" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polandia" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugis" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portugis Brasil" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Rusia" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovenia" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbia" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Swedia" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turki" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uyghur" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukraina" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Uzbek" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Cina Sederhana" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Cina Tradisional" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Tidak bisa memperoleh class untuk gaya bidang {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Tidak ada atom yang dipilih -- tidak ada yang perlu dikerjakan!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atom akan diminimalkan." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "tidak bisa menyiapkan bidang gaya {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "baru" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "tidakjadi (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "jadilagi (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "tengah" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "tambah hidrogen" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimalkan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "perbaiki hidrogen dan minimalkan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "bersih" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "simpan berkas" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "simpan keadaan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "balik cincin kimia stereo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "hapus atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "seret ke ikatan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "seret atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "seret atom (dan memperkecil)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "seret dan minimalkan molekul (docking)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "menaikkan muatan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "kurangi muatan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "hapus ikatan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "tunggal" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "ganda" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "rangkap tiga" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "urutan naik" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "urutan menurun" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "putar ikatan (SHIFT-DRAG)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "keluar mode modelkit" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Kelompok Ruang" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Tidak ada" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Semua" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} prosesor" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "total {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "maksimum {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Konsul Skrip Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Petunjuk Tetikus" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Terjemahan" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistem" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Tidak ada atom yang dimuat" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Konfigurasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Elemen" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Model/Bingkai" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Bahasa" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Menurut Nama Residu" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Menurut HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Orbit Molekuler ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetri" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informasi Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Pilih ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Semua {0} model" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfigurasi ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Koleksi dari {0} model" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atom: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "ikatan: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "grup: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "rantai: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polimer: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Tampilan {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menu Utama" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekul" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekul {0} ({1} atom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "muat biomolekul {0} ({1} atom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Tidak ada" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Tampilkan Hanya Yang Dipilih" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Pilih Sebaliknya" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Tampilan" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Depan" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Kiri" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Kanan" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Puncak" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Dasar" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Mundur" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Sumbu" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Sumbu" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Sumbu" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Sumbu" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Sumbu" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Sumbu" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Tulangpunggung" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Rantai Sisi" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Residu Kutub" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Residu Nonkutub" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Residu Dasar (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Residu Asam (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Residu Tanpamuatan" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nukleat" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Dasar" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "pasangan AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "pasangan GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "pasangan AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Struktur Sekunder" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Semua PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Semua Pelarut" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Semua Air" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Pelarut BukanAir" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM BukanAir" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Karbohidrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Bukan yang diatas" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Gaya" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Skema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK Spacefill" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Bola dan Batang" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Batang" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Wireframe" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Kartun" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Telusur" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Mati" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Ikatan" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Hidup" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Ikatan Hidrogen" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Hitung" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Tetapkan Rantai Samping Ikatan-H" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Tetapkan Tulangpunggung Ikatan-H" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Ikatan Disulfida" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Tetapkan Rantai Samping Ikatan-SS" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Tetapkan Tulangpunggung Ikatan-SS" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Kartun Roket" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Pita" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Roket" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Strands" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Getaran" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektor" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spektra" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} piksel" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Skala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografik" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Kaca mata merah+cyan" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Kaca mata merah+biru" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Kaca mata merah+hijau" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Penilikan juling" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Tampilan Wall-eyed" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Label" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Dengan Simbol Unsur" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Dengan Nama Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Dengan Nomor Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Posisi Label pada Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Ditengahkan" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Kanan Atas" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Kanan Bawah" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Kiri Atas" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Kiri Bawah" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Warna" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Menurut Skema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Unsur (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Lokasi Alternatif" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekul" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Muatan Formal" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Muatan Parsial" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Suhu (Relatif)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Suhu (Tetap)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Asam Amino" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Rantai" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Kelompok" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Dengan bentuk" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Mewarisi" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Hitam" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Putih" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cyan" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Merah" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Oranye" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Kuning" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Hijau" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Biru" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Ungu" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmon" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Zaitun" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Marun" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Abu-abu" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Biru Batu" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Emas" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Anggrek" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Jadikan Legap" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Jadikan Tembus Pandang" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Latar Belakang" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Permukaan" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Sumbu" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Kotak bingkai" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Satuan sel" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zum" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Perbesar" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Perkecil" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Putar" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Tata Laju X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Tata Laju Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Tata Laju Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Tata FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Mode Animasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Mainkan Sekali" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Perulangan" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Mainkan" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Henti" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Bingkai Berikutnya" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Bingkai Sebelumnya" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Gulung Balik" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Kebalikan" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Mulai Ulang" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Klik-ganda memulai dan mengakhiri semua pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Klik untuk pengukuran jarak" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Klik untuk pengukuran sudut" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Klik untuk pengukuran torsi (dihedral)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Klik dua atom untuk menampilkan urutan di konsul" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Hapus pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Daftar pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Satuan jarak nanometer" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Satuan jarak Angstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Satuan jarak pikometer" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Tetapkan pilihan" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Tengah" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identitas" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Label" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Pilih atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Pilih rantai" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Pilih unsur" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "keluar mode modelkit" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Pilih grup" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Pilih molekul" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Pilih situs" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Tampilkan operasi simetri" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Tampilkan" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Konsul Skrip Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Kandungan Berkas" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Kepala Berkas" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Data permukaan iso JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Data orbit molekuler JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Kelompok ruang" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Status sekarang" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Berkas" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Muat Ulang" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Buka dari PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Buka berkas yang dipilih" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Buka" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Muat satu sel utuh" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Buka skrip" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Simpan salinan dari {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Simpan skrip dengan status" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Simpan skrip dengan riwayat" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Ekspor gambar {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Simpan semua sebagai berkas JMOL (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Simpan permukaan iso JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Ekspor 3D model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Komputasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimalkan struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Model kit" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Ekstrak data MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Permukaan Dot" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "Permukaan van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Permukaan Molekuler" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Pelarut Permukaan ({0}-Angstrom probe)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Pelarut-Permukaan yang bisa diakses (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Muat ulang {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Muat ulang {0} + Tampilkan {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Mulat ulang + Polihedra" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Sembunyikan" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Bertitik" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Lebar Piksel" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Lebar Angstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Seleksi Halo" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Tampilkan Hidrogen" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Tampilkan Pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Kedalaman Perspektif" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Warna RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Tentang..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "KESALAHAN kompiler skrip: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "sumbu x y z diharapkan" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} tidak diijinkan dengan model latar ditampilkan" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "cacah argumen salah" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Indeks Miller tidak semuanya bisa nol." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "warna [R,G,B] buruk" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "bolean diharapkan" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "bolean atau angka diharapkan" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "bolean, angka, atau {0} diharapkan" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "tak bisa menata nilai" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "warna diharapkan" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "diperlukan warna atau nama palet (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "perintah diharapkan" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} atau $name atau (ekspresi atom) diharapkan" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "obyek gambar tidak didefinisikan" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "perintah akhir skrip yang tidak diharapkan" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "ekspresi atom (yang valid) diharapkan" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(ekspresi atom) atau bilangan bulat diharapkan" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "namaberkas diharapkan" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "berkas tidak ditemukan" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "argumen tidak sesuai" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "argumen tidak mencukupi" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "bilangan bulat diharapkan" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "bilangan bulat diluar jangkauan ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "argumen tidak valid" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "urutan parameter tidak valid" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "katakunci diharapkan" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "tidak tersedia data koefisien MO" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Diperlukan indeks MO dari 1 sampai {0}" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "tidak tersedia data basis/koefisien MO untuk bingkai ini" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "tidak tersedia data okupansi MO" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Hanya satu orbit molekuler tersedia pada berkas ini" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} memungkinkan hanya satu model ditampilkan" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} memungkinkan hanya satu model dimuat" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Tidak tersedia data" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Tidak ada muatan parsial dibaca dari berkas; Jmol memerlukan hal ini untuk " +"pencitraan data MEP." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Tidak ada satu sel" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "angka diharapkan" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "angka harus diantara ({0} atau {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "angka desimal diluar jangkauan ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "nama obyek diharapkan setelah '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"diharapkan bidang -- menggunakan tiga poin atau ekspresi atom atau {0} atau " +"{1} atau {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "nama properti diharapkan" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "kelompok ruang {0} tidak ditemukan." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "karakter dengan tanda petik diharapkan" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "karakter dengan tanda petik atau pengenal diharapkan" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "terlalu banyak titik rotasi yang dinyatakan" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "terlalu banyak aras skrip" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "properti atom tidak dikenal" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "properti ikatan tidak dikenal" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "perintah tidak dikenal" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "ekspresi runtime tidak dikenal" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "obyek tidak dikenal" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "{0} parameter tidak dikenal" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "parameter {0} tidak dikenal dalam status skrip Jmol (ditetapkan saja)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "parameter SHOW tidak dikenal -- gunakan {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "menulis apa? \"berkas\" {0} atau {1}" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "KESALAHAN skrip: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atom dihapus" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} ikatan hidrogen" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "berkas {0} dibuat" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "konteks tidak valid untuk {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ angka angka angka } diharapkan" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "akhir ekspresi diharapkan" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "pengenal atau spesifikasi residu diharapkan" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "spesifikasi atom tidak valid" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "spesifikasi rantai tidak valid" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "ekspresi token tidak valid: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "spesifikasi model tidak valid" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "kurang END untuk {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "angka atau nama variabel diharapkan" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "spesifikasi residu (ALA, AL?, A*) diharapkan" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} diharapkan" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} tidak diharapkan" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "tanda ekspresi tidak dikenal: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "token tidak dikenal: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} batang ditambahkan" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} koneksi dihapus" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} ikatan baru; {1} modifikasi" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Catatan: Lebih dari satu model terlibat dalam kontak ini!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "klik untuk menu..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Aplet Jmol versi {0} {1}.\n" +"\n" +"Proyek OpenScience.\n" +"\n" +"Kunjungi http://www.jmol.org untuk keterangan lanjut" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Galat Berkas:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "tetapkan atom baru atau ikatan (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "munculkan konteks menu terkini (klik di cap Jmol)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "hapus atom (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "hapus ikatan (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "atur kedalaman (sisi belakang; memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "pindahkan atom (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "pindahkan seluruh obyek DRAW (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "pindahkan titik DRAW tertentu (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "pindahkan label (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "pindahkan atom dan perkecil molekul (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "pindahkan dan perkecil molekul (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "pindahkan atom-atom yang dipilih (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "seret atom dalam arah Z (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simulasikan sentuhan ganda menggunakan tetikus" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "geser titik navigasi (memerlukan {0} dan {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "pilih satu atom" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "hubungkan ataom (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "pilih satu titik PERMUKAAN ISO (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "pilih satu label yang disembunyikan/ditampilkan (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"pilih atom untuk disertakan dalam pengukuran (setelah menjalankan ulang " +"pengukuran atau setelah {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "pilih satu titik atu atom untuk navigasi ke (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "pilih satu titik DRAW (untuk pengukuran) (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "munculkan seluruh konteks menu" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "atur ulang (waktu mematikan model)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "putar" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "putar cabang sekitar ikatan (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "putar atom yang dipilih (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "putar Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"putar Z (gerak horisontal tetikus) atau pembesaran (gerak vertikal tetikus)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "pilih satu atom (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "pilih dan geser atom (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "lepaskan pilihan kelompok atom ini (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "pilih KOSONG (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "tambahkan kelompok atom pada atom yang sudah dipilih (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "suis pilihan (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"jika semua dipilih, lepaskan semua pilihan, atau tambahkan kelompok ini pada " +"kelompok atom yang dipilih (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "pilih satu atom untuk memulai atau mengakhiri pengukuran" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "atur dataran (sisi depan; memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "pindah dataran/kedalaman jendela (kedua sisi;memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "pembesaran (sepanjang sudut kanan jendela)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"klik dua titik untuk memutar pada sumbu berlawanan arah jarum jam " +"(memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"klik pada dua titik untuk memutar terhadap sumbu searah jarum jam " +"(memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "hentikan gerakan (memerlukan {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"putar model (geser dan lepaskan tombol dan hentikan gerakan secara bersamaan)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "geser" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "pembesaran" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "pilih satu atom lagi untuk memutar model pada salah satu sumbu" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "pilih dua atom untuk memutar model pada salah satu sumbu" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "pilih satu atom lagi untuk menampilkan hubungan simetri" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "pilih dua atom untuk menampilkan hubungan simetrinya" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Tetapkan berkas log menjadi {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Tidak bisa menetapkan lokasi berkas log." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atom disembunyikan" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atom dipilih" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Seret untuk memindah label" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "clipboard tidak bisa diakses -- gunakan aplet yang disetujui" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} hidrogen ditambahkan" + +#~ msgid "Hide Symmetry" +#~ msgstr "Sembunyikan Simetri" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Memuat aplet Jmol..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} detik" + +#~ msgid "Java version:" +#~ msgstr "Versi Java:" + +#~ msgid "1 processor" +#~ msgstr "1 prosesor" + +#~ msgid "unknown processor count" +#~ msgstr "cacah prosesor tidak diketahui" + +#~ msgid "Java memory usage:" +#~ msgstr "Pemakaian memori Java:" + +#~ msgid "{0} MB free" +#~ msgstr "sisa {0} MB" + +#~ msgid "unknown maximum" +#~ msgstr "maksimum tidak diketahui" + +#~ msgid "Open file or URL" +#~ msgstr "Buka berkas atau URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/it.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/it.po new file mode 100755 index 000000000000..6ea319f33ab9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/it.po @@ -0,0 +1,2650 @@ +# Italian translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Leonardo Corato \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Elemento?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol Script Console" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "File" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Chiude" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Aiuto" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Cerca" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Comandi" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Funzioni matematiche" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Imposta &Parametri" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Altro" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Stato" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Esegui" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Cancella l'Output" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Cancella l'Input" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Cronologia" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Carica" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"premi CTRL-ENTER per una nuova linea o copia il modello di dati e premi " +"Carica" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"I messaggi appariranno qui. Inserisci i comandi nel box qui sotto. Clicca il " +"menu Help per ottenere aiuto on-line, che apparirà in una nuova finestra del " +"browser." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Editor di script Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Console" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Apri" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Fronte" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Verifica" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Sopra" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Passo" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pausa" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Riprendi" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Arresta" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Pulisce" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Chiude" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "File o URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Tipo di Immagine" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Qualità JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Compressione PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Qualità PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Sì" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "No" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Vuoi sovrascrivere il file {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Attenzione" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Tutti i File" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Annulla" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Esci schermata selezione file" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Dettagli" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Cartella" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Apri la cartella selezionata" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Attributi" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modificato" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "File Generico" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nome" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nome File:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Dimensione" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "File di Tipo:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tipo" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Aiuto" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Aiuto Scelta File" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Home" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Elenco" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Guarda in:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Errore nella creazione della nuova cartella" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Nuova Cartella" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Crea una Nuova Cartella" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Apri il file selezionato" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Salva" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Salva il file selezionato" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Salva In:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Aggiorna" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Aggiorna l'elenco delle cartelle" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Su" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Livello superiore" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Anteprima" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Accoda modelli" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"NOTA: le posizioni di idrogeno amidico Backbone presenti saranno ignorate. " +"Le loro posizioni saranno ravvicinate, come nelle analisi standard DSSP.\n" +"Usa {0} per non usare questa approssimazione.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"NOTA: Le posizioni di idrogeno amidico Backbone sono presenti e verranno " +"utilizzati. I risultati possono differire dagli standard di analisi DSSP.\n" +"Usa {0} per ignorare queste posizioni idrogeno.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabo" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturiano" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosniaco" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalano" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Ceco" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danese" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Tedesco" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Greco" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Inglese Australiano" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Inglese Britannico" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Inglese Americano" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spagnolo" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estone" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "finlandese" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Faeroese" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francese" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisone" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Galiziano" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Croato" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Ungherese" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armeno" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesiano" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italiano" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Giapponese" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Giavanese" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Coreano" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malese" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norvegese Bokmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Olandese" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitana" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polacco" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portoghese" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portoghese brasiliano" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russo" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Sloveno" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbo" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Svedese" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turco" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uiguro" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ucraino" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Cinese semplificato" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Cinese tradizionale" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Non posso ottenere la classe per il campo di forze {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Nessun atomo selezionato -- niente da fare!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomi saranno minimizzati." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "impossibile impostare il campo di forze {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "nuovo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "annulla (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "ripeti (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "centra" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "aggiungi idrogeni" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimizza" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "sistema gli idrogeni e minimizza" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "cancella" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "salva file" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "salva stato" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "anello stereochimico invertito" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "elimina atomo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "trascina al legame" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "trascina atomo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "trascina atomo (e minimizza)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "trascina e minimizza molecola (docking)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "aumento di carica" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "diminuzione di carica" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "elimina legame" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "singolo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "doppio" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "triplo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "per aumentare" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "per diminuire" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "ruota legame (SITFT-TRASCINA)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "esci dalla modalità modelkit" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Gruppo Spazio" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Nessuna" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Tutti" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processori" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB totali" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB al massimo" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol Script Console" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Manuale Mouse" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Traduzioni" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistema" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Nessun atomo caricato" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Configurazioni" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Modello/Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Lingua" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Per Nome di Residuo" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Per HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Orbitale molecolare ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simmetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informazioni sul modello" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Seleziona({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Tutti i {0} modelli" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configurazioni ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Libreria di {0} modelli" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomi: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "legami: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "gruppi: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "catene: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polimeri: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "modello {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Vista {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menu principale" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolecole" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolecola {0} ({1} atomi)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "carica biomolecola {0} ({1} atomi)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Nessuna" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Mostra solo la Selezione" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Inverti Selezione" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Visualizza" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Fronte" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Sinistra" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Destra" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Sopra" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "In fondo" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Parte posteriore" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Assi" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Assi" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Assi" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Assi" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Assi" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Assi" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteina" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Backbone (Spina dorsale)" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Catene Laterali" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Residui Polari" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Residui Apolari" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Residui Basici (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Residui Acidi (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Residui Privi Di Carica" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nucleico" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Basi" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Coppie AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Coppie Gc" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Coppie AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Struttura Secondaria" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Etero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Tutti gli \"HETATM\" PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Tutti i solventi" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Tutta l'Acqua" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Solvente non acquoso" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM non acquosi" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligando" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Carboidrato" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Nessuno dei precedenti" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Stile" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Schema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK Spacefill" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Sferette e Bastoni" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Sticks" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Wireframe" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Fumetto" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Traccia" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomi" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Disattivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Legami" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Attivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Legami ad Idrogeno" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Calcola" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Imposta Legame Idrogeno lungo la catena" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Imposta Legame Idrogeno lungo la catena principale" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Legame Disulfuro" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Imposta Legami disolfuro accanto la catena" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Imposta Legami disolfuro dietro la catena principale" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Strutture" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Cartoon Rockets" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Nastri" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Rockets" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Trefoli" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibrazione" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vettori" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spettri" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixels" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Scala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografico" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Lenti Rosso+Ciano" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Lenti Rosso+Blu" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Lenti Rosso+Verde" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Visualizzazione Incrociata" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Visualizzazione 3D" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etichette" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Con Simbolo dell'Elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Con Nome Atomico" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Con Numero Atomico" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Metti una Etichetta sull'Atomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Al centro" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "In Alto a Destra" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "In Basso a Destra" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "In Alto a Sinistra" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "In Basso a Sinistra" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Colore" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Secondo Schema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Elemento (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Posizione Alternativa" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molecola" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Carica Formale" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Carica Parziale" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatura (Relativa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatura (Fissa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Amminoacido" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Catena" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Gruppo" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomero" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Proporzionato" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Eredita" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Nero" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Bianco" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Ciano" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Rosso" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Arancione" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Giallo" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Verde" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Blu" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indaco" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Viola" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmone" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Verde Oliva" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Marrone Rossiccio" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Grigio" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Slate Blue" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Oro" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchidea" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Rendi Opaco" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Rendi Trasparente" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Sfondo" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Superfici" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Assi" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Boundbox" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Cella Unitaria" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Ingrandimento" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Ingrandisci" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Riduci Ingrandimento" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Rotazione" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Imposta il fattore per X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Imposta il fattore per Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Imposta il fattore per Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Imposta FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animazione" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Modalità Animazione" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Riproduci Una Sola Volta" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindromo" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Ciclo" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Riproduci" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Stop" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Fotogramma Successivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Fotogramma Precedente" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Riavvolgi" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Inverti" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Riavvia" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Misurazioni" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Tutte le misurazioni iniziano e terminano con il Doppio-Clic" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Fare Clic per la misurazione della distanza" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Fare Clic per la misurazione dell'angolo" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Clicca per misurare l'angolo torsionale (diedro)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Clicca su due atomi per visualizzare una sequenza nella console" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Cancella le misurazioni" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Elenca le misurazioni" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Unità di distanza in nanometri" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Unità di distanza in Ã…ngstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Unità di distanza in picometri" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Imposta selezione" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Al centro" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identità" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etichetta" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Seleziona atomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Seleziona catena" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Seleziona elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "esci dalla modalità modelkit" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Seleziona gruppo" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Seleziona molecola" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Seleziona sito" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Mostra simmetria operazione" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Mostra" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol Script Console" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Contenuti del File" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Intestazione del File" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Isosuperficie dati JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Dati dell'orbitale molecolare JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modello" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientazione" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Gruppo Spaziale" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Stato Attuale" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "File" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Ricarica" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Apri da PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Apri il file selezionato" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Apri" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Unità di carico completo cella" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Apri script" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Salva una copia di {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Salva script con stato" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Salva script con cronologia" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Esporta {0} immagine" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Salva tutto come file JMOL (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Salva isosuperficie JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Esporta {0} Modello 3D" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Computo" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Ottimizza struttura" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Kit Modello" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Estrai l'informazione MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Superficie puntinata" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "Superficie di van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Superficie Molecolare" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Superficie del Solvente (sonda {0}-Angstrom )" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Superficie Accessibile al Solvente (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Ricarica {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Ricarica {0} + Mostra {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Ricarica + Poliedri" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Nascondi" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Punteggiato" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Ampiezza in Pixel" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Ampiezza in Angstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Selezione Aloni" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Mostra Idrogeni" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Mostra Misure" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Profondità della Prospettiva" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Colori di RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "A proposito di..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "ERRORE compilazione script: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "attesi assi x y z" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} non permesso con il modello di sfondo mostrato" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "numero di argomenti non valido" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Gli indici di Miller non possono essere tutti e tre zero" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "colore [R,G,B] mal formulato" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "atteso valore booleano" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "atteso un valore booleano o un numero" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "atteso un valore booleano, un numero o {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "Impossibile impostare il valore" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "atteso un colore" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "si richiede un colore od una paletta (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "atteso comando" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} or $nome o (espressione atomo) richiesta" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "disegna gli oggetti non definiti" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "fine imprevista del comando script" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "valido (espressione atomo) previsto" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(espressione atomo) o un numero intero previsto" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "atteso un nome file" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "file non trovato" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "argomenti incompatibili" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "argomenti insufficienti" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "atteso valore intero" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "intero fuori dal range ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "argomento non valido" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ordine dei parametri non valido" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "attesa keyword" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "nessuna informazione disponibile sui coefficienti dei MO" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Un indice di MO da 1 a {0} è richiesto" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" +"Nessuna informazione relativa alla base MO/coefficienti disponibile per " +"questo frame" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "Nessuna informazione sull'occupazione dei MO" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Solo un MO è disponibile in questo file" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} necessità uno o più modelli mostrati" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} richiede che un solo modello sia caricato" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Nessuna informazione disponibile" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Nessun cambiamento parziale è stato letto dal file; Jmol ha bisogno di " +"questi dati per il rendering dei dati MEP." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Nessuna cella unitaria" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "atteso numero" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "il numero deve essere ({0} or {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "numero decimale fuori dal range ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "nome oggetto atteso dopo '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"piano previsto - sia tre punti o espressioni di atomo o {0} o {1} o {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "nome di proprietà atteso" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "il gruppo spaziale {0} non è stato trovato" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "stringa tra virgolette prevista" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "stringa tra virgolette o identificatore previsto" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "sono stati specificati troppi punti di rotazione" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "troppi livelli di script" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "proprietà di atomo non riconosciuta" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "proprietà di legame non riconosciuta" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "comando non riconosciuto" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "espressione runtime non riconosciuta" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "oggetto non riconosciuto" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "parametro {0} inatteso" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "parametro {0} non riconosciuto in Jmol state script (imposta comunque)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "parametro SHOW non riconosciuto -- usa {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "cosa scrivere? Nome del file {0} o {1}" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "script ERROR: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "cancellati {0} atomi" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} legami idrogeno" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "file {0} creato" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "contesto non valido per {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "atteso { numero numero numero }" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "attesa fine dell'espressione" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "specificazione identificativo o residui previsto" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "specifica dell'atomo invalida" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "specifica della catena laterale invalida" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "espressione non valida simbolo: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "specifica del modello invalida" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "manca END per {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "atteso numero o nome di variabile" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "attesa specifica del residuo (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "atteso {0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} inatteso" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "espressione non riconosciuta simbolo : {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "simbolo sconosciuto: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} puntoni aggiunti" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "cancellate {0} connessioni" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} nuovi legami; {1} modificati" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Nota: In questo contatto è coinvolto più di un modello!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Clicca per i menu ..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet version2 {0} {1}.\n" +"\n" +"Un progetto OpenScience.\n" +"\n" +"Visita http://www.jmol.org per ulteriori informazioni." + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Errore nel file:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "assegna/nuovo atomo o legame (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "mostra menu di contesto recente (clicca su Jmol frank)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "elimina atomo (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "elimina legame (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "regolare la profondità (piano dietro, richiede {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "spostare atomo (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "sposta intero oggetto DISEGNO (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "spostare il punto di DISEGNO specifico (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "muovi etichetta (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "sposta atomo e minimizza molecole (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "sposta e minimizza molecole (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "spostare gli atomi selezionati (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "trascina gli atomi nella direzione Z (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simulare il multi-touch con il mouse)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "tradurre punto di navigazione (richiede {0}) e {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "scegliere un atomo" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "collega atomi (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "scegliere un punto isosuperficie (richiede {0}" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" +"scegliere una etichetta per attivarlo nascosto/visualizzato (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"scegliere un atomo da includere in una misura (dopo aver iniziato una " +"misurazione o dopo {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "scegliere un punto o atomo per la navigazione (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "scegliere un punto di DISEGNO (per le misurazioni) (richiede {0}" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "mostra il menu contestuale completo" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "reset (quando si spense il modello)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "ruotare" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "ruotare il ramo intorno al legame (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "ruota gli atomi selezionati (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "ruotare Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"ruotrare Z(movimento orizzontale del mouse) o zoom (movimento verticale del " +"mouse)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "seleziona un atomo (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "seleziona e sposta gli atomi (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "deseleziona questo gruppo di atomi (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "selezionare NULLA (richiede{0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" +"aggiungere questo gruppo di atomi a un insieme di atomi selezionati " +"(richiede {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "passa selezione (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"se tutti sono selezionati, deselezionare tutti, altrimenti aggiungere questo " +"gruppo di atomi a un insieme di atomi selezionati (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "scegliere un atomo di avviare o concludere una misura" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "regolare lastra (piano frontale, richiede {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" +"spostare lastra / finestra di profondità (entrambi i piani, richiede {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zoom (lungo il bordo destro della finestra)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"cliccare su due punti a ruotare attorno al proprio asse in senso antiorario " +"(richiede {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"cliccare su due punti a ruotare attorno al proprio asse in senso orario " +"(richiede {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "stop motion (richiede {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"modello di rotazione (colpire e rilasciare il pulsante e fermare il " +"movimento simultaneamente)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "tradurre" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zoom" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" +"scegliere un altro atomo, al fine di ruotare il modello attorno a un asse" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "scegliere due atomi in modo da ruotare il modello intorno a un asse" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "scegliere un altro atomo per visualizzare il rapporto di simmetria" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "scegliere due atomi per visualizzare il rapporto di simmetria fra loro" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Impostazione file di log su {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Impossibile impostare il percorso del file di registro." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atomi nascosti" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomi selezionati" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Trascinare per spostare l'etichetta" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "Gli appunti non sono accessibili - utilizzare applet firmati" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} idrogeni aggiunti" + +#~ msgid "Hide Symmetry" +#~ msgstr "Nascondi Simmetria" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Caricamento Jmol applet" + +#~ msgid " {0} seconds" +#~ msgstr " {0} secondi" + +#~ msgid "Java version:" +#~ msgstr "Versione java:" + +#~ msgid "1 processor" +#~ msgstr "1 processore" + +#~ msgid "unknown processor count" +#~ msgstr "conta dei processi sconosciuta" + +#~ msgid "Java memory usage:" +#~ msgstr "Utilizzo memoria java:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB liberi" + +#~ msgid "unknown maximum" +#~ msgstr "massimo sconosciuto" + +#~ msgid "Open file or URL" +#~ msgstr "Apri file o URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ja.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ja.po new file mode 100755 index 000000000000..6c447d9a4079 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ja.po @@ -0,0 +1,2637 @@ +# Javanese translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Hiroshi Kihara \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: Japan\n" +"X-Poedit-Language: Japanese\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "元素?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol スクリプト・コンソール" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "ファイル" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "é–‰ã˜ã‚‹" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "ヘルプ" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "検索" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "命令" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "数学関数" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "パラメータã®è¨­å®š" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "ã•ã‚‰ã«" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "エディタ" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "状態" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "実行" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "出力をクリアã™ã‚‹" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "入力をクリア" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "履歴" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "読ã¿è¾¼ã¿" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"改行ã™ã‚‹ã«ã¯Ctrl-Enterキーを押ã—ã¦ãã ã•ã„。ã¾ãŸã¯ãƒ‡ãƒ¼ã‚¿ã‚’ペーストã—ã¦[読ã¿è¾¼" +"ã¿]ボタンをクリックã—ã¦ãã ã•ã„。" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"メッセージã¯ã“ã“ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚下ã®ãƒœãƒƒã‚¯ã‚¹ã«ã‚³ãƒžãƒ³ãƒ‰ã‚’入力ã—ã¦ãã ã•ã„。コ" +"ンソールã®ãƒ˜ãƒ«ãƒ—メニューã®é …目をクリックã™ã‚‹ã¨ãƒ–ラウザã®æ–°ã—ã„ウィンドウã§ã‚ª" +"ンラインヘルプãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol スクリプト・エディタ" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "コンソール" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "é–‹ã" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "å‰" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "スクリプト" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "ãƒã‚§ãƒƒã‚¯" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "トップ" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "ステップ" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "一時åœæ­¢" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "å†é–‹ã™ã‚‹" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "åœæ­¢" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "クリア" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "é–‰ã˜ã‚‹" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "ファイルã¾ãŸã¯URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "ç”»åƒã®ç¨®é¡ž" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG画質 ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG圧縮率 ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG画質 ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Yes" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "No" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "ファイル {0} を上書ãã—ã¾ã™ã‹ï¼Ÿ" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "警告" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "キャンセル" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "ファイルé¸æŠžãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’中止" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "詳細" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "ディレクトリ" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "é¸æŠžã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’é–‹ã" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "属性" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "変更ã•ã‚ŒãŸ" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "一般的ãªãƒ•ã‚¡ã‚¤ãƒ«" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "å称" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "ファイルå:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "サイズ" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "ファイルã®åž‹:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "タイプ" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "ヘルプ" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "ファイルé¸æŠžãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã®ãƒ˜ãƒ«ãƒ—" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "ホーム" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "リスト" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "検索対象:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "æ–°è¦ãƒ•ã‚©ãƒ«ãƒ€ã®ä½œæˆä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "æ–°è¦ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "æ–°è¦ãƒ•ã‚©ãƒ«ãƒ€ã‚’作æˆã™ã‚‹" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "ä¿å­˜ã™ã‚‹" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä¿å­˜ã™ã‚‹" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "ä¿å­˜:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "æ›´æ–°" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "ディレクトリ・リストã®æ›´æ–°" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Up" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "1ã¤ä¸Šã®ãƒ¬ãƒ™ãƒ«ã¸" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "プレビュー" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "モデルを追加ã™ã‚‹" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"注æ„: ãƒãƒƒã‚¯ãƒœãƒ¼ãƒ³ã®ã‚¢ãƒŸãƒ‰æ°´ç´ ã®ä½ç½®ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚ãれらã®ä½ç½®ã¯æ¨™æº–DSSP解" +"æžã®ã‚ˆã†ã«è¿‘ä¼¼ã•ã‚Œã¾ã™ã€‚\n" +"ã“ã®è¿‘似を用ã„ãªã„ãŸã‚ã«ã¯ {0}を使用ã—ã¦ãã ã•ã„。\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"注æ„: ãƒãƒƒã‚¯ãƒœãƒ¼ãƒ³ã®ã‚¢ãƒŸãƒ‰æ°´ç´ ã®ä½ç½®ãŒåˆ©ç”¨ã•ã‚Œã¾ã™ã€‚çµæžœã¯æ¨™æº–DSSP解æžã¨å¤§ã" +"ãç•°ãªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚\n" +"ã“れらã®æ°´ç´ ã®ä½ç½®ã‚’無視ã™ã‚‹ã«ã¯ {0} を使用ã—ã¦ãã ã•ã„。\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "アラビア語" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "アストゥリアス語" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "ボスニア語" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "カタロニア語" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "ãƒã‚§ã‚³èªž" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "デンマーク語" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "ドイツ語" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "ギリシャ語" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "オーストラリア英語" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "イギリス英語" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "アメリカ英語" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "スペイン語" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "エストニア語" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "フィンランド語" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "フェロー語" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "フランス語" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "フリジア語" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "ガリシア語" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "クロアãƒã‚¢èªž" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "ãƒãƒ³ã‚¬ãƒªãƒ¼èªž" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "アルメニア語" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "インドãƒã‚·ã‚¢èªž" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "イタリア語" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "日本語" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "ジャワ語" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "韓国語" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "マレー語" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "ノルウェー語 ブークモール" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "オランダ語" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "オック語" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªž" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "ãƒãƒ«ãƒˆã‚¬ãƒ«èªž" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "ãƒãƒ«ãƒˆã‚¬ãƒ«èªžï¼ˆãƒ–ラジル)" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "ロシア語" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "スロベニア語" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "セルビア語" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "スウェーデン語" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "タミル語" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "テルグ語" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "トルコ語" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "ウイグル語" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "ウクライナ語" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "中国語(簡体字)" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "中国語(ç¹ä½“字)" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "力場 {0} ã«å¯¾ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚’å–å¾—ã§ãã¾ã›ã‚“" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "原å­ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼ä½•ã‚‚ã§ãã¾ã›ã‚“。" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} 原å­ã‚’構造最é©åŒ–ã™ã‚‹" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "力場 {0}を設定ã§ãã¾ã›ã‚“" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "æ–°è¦" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "å…ƒã«æˆ»ã™ (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "ã‚„ã‚Šç›´ã— (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "中心" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "水素を付加ã™ã‚‹" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "構造最é©åŒ–" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "水素原å­ã¨ã®è·é›¢ã‚’一定ã«ã—ã¦æ§‹é€ æœ€é©åŒ–" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "クリア" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "構造をファイルã«ä¿å­˜" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "状態(イメージ)をä¿å­˜" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "ç’°ã®ç«‹ä½“化学をå転ã™ã‚‹" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "原å­ã‚’削除" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "ドラッグã—ã¦çµåˆã‚’作æˆ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "原å­ã‚’ドラッグ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "原å­ã‚’ドラッグ (ãã®å¾Œã€æ§‹é€ æœ€é©åŒ–ã™ã‚‹)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "ドラッグã—ã¦åˆ†å­ã‚’構造最é©åŒ– (ドッキング)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "é›»è·ã‚’増やã™" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "é›»è·ã‚’減らã™" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "çµåˆã‚’削除" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "å˜çµåˆ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "二é‡çµåˆ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "三é‡çµåˆ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "çµåˆæ¬¡æ•°ã‚’増やã™" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "çµåˆæ¬¡æ•°ã‚’減らã™" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "çµåˆã‚’回転ã•ã›ã‚‹(SHIFT-ドラッグ)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "モデル組立ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’終了" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "空間群" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "ãªã—" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "ã™ã¹ã¦" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} プロセッサ" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "åˆè¨ˆ {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "最大 {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol スクリプト・コンソール" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "マウスã®ä½¿ã„æ–¹" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "翻訳" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "システム" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "何も原å­ãŒèª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã›ã‚“" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "立体é…ç½®" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "元素" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "モデル/フレーム" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "言語" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "残基ã®ç¨®é¡žã§" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "HETATMã§" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "分å­è»Œé“ ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "対称性" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "モデル情報" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "é¸æŠž ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "ã™ã¹ã¦ã® {0} モデル" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "立体é…ç½® ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "{0} モデルã®é›†åˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "原å­: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "çµåˆ: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "基: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "鎖: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "ãƒãƒªãƒžãƒ¼: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "モデルl {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "{0}を表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "メインメニュー" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "生体分å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "ç”Ÿä½“åˆ†å­ {0} ({1} 原å­)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "ç”Ÿä½“åˆ†å­ {0}を読ã¿è¾¼ã‚€ ({1} 原å­)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "ãªã—" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "é¸æŠžã—ãŸã‚‚ã®ã ã‘を表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "é¸æŠžç¯„囲をå転" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "å‰" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "å·¦" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "å³" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "上" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "下" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "後" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "タンパク質" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "ãƒãƒƒã‚¯ãƒœãƒ¼ãƒ³" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "å´éŽ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "極性残基" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "éžæ¥µæ€§æ®‹åŸº" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "塩基性残基 (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "酸性残基 (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "éžè·é›»æ€§æ®‹åŸº" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "核酸" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "塩基" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT対" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC対" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU対" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "二次構造" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "ヘテロ" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "ã™ã¹ã¦ã®PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "ã™ã¹ã¦ã®æº¶åª’" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "ã™ã¹ã¦ã®æ°´åˆ†å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "éžæ°´æº¶åª’" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "水以外ã®ãƒ˜ãƒ†ãƒ­åŽŸå­" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "é…ä½å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "炭水化物" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "上ã®ã©ã‚Œã§ã‚‚ãªã„" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "スタイル" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "モデルã®è¡¨ç¤ºæ–¹æ³•" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK 空間充填" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "棒çƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "棒" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "ワイヤフレーム" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "カートゥーン" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "トレース" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "オフ" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "van der WaalsåŠå¾„ã®{0}%" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "çµåˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "オン" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "æ°´ç´ çµåˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "計算ã™ã‚‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "å´éŽ–ã«æ°´ç´ çµåˆã‚’設定" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "ãƒãƒƒã‚¯ãƒœãƒ¼ãƒ³ã«æ°´ç´ çµåˆã‚’設定" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "ジスルフィドçµåˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "å´éŽ–ã«ã‚¸ã‚¹ãƒ«ãƒ•ã‚£ãƒ‰çµåˆã‚’設定" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "ãƒãƒƒã‚¯ãƒœãƒ¼ãƒ³ã«ã‚¸ã‚¹ãƒ«ãƒ•ã‚£ãƒ‰çµåˆã‚’設定" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "構造" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "カーツゥーン・ロケット" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "リボン" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "ロケット" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "ストランド" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "振動" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "ベクトル" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} ピクセル" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "{0} å€" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "立体視ã®æ–¹å¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "赤+é’ç·‘ 立体視眼é¡" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "赤+é’ ç«‹ä½“è¦–çœ¼é¡" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "赤+ç·‘ 立体視眼é¡" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "交差法ã«ã‚ˆã‚‹ç«‹ä½“視" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "平行法ã«ã‚ˆã‚‹ç«‹ä½“視" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "ラベル" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "元素記å·" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "原å­å" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "原å­ç•ªå·" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "表示ä½ç½®" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "中心ã«" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "å³è‚©" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "å³ä¸‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "左肩" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "左下" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "色" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "スキームã§" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "元素(CPKモデル)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "別ãªå ´æ‰€" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "分å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "å½¢å¼é›»è·" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "部分電è·" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "温度(相対)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "温度(固定)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "アミノ酸" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "鎖" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "基" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "モノマー" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Shapely" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "継承" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "é»’" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "白" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "é’ç·‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "赤" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "æ©™" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "黄色" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "ç·‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "é’" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "è—" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "ç´«" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "サーモン" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "オリーブ色" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "栗色" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "ç°è‰²" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "スレートブルー(é’ç°è‰²)" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "金色" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "オーキッド(薄赤紫)" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "ä¸é€æ˜Žã«ã™ã‚‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "åŠé€æ˜Žã«ã™ã‚‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "背景" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "ãƒã‚¦ãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "å˜ä½æ ¼å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "ズーム" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "表示を拡大" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "表示を縮å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "回転" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "X軸ã®å›žã‚Šã®å›žè»¢é€Ÿåº¦" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Y軸ã®å›žã‚Šã®å›žè»¢é€Ÿåº¦" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Z軸ã®å›žã‚Šã®å›žè»¢é€Ÿåº¦" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "FPSを設定" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "アニメーション" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "アニメーション・モード" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "一度実行ã™ã‚‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "往復繰り返ã—" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "ループ" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "å†ç”Ÿ" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "åœæ­¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "次ã®ãƒ•ãƒ¬ãƒ¼ãƒ " + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "å‰ã®ãƒ•ãƒ¬ãƒ¼ãƒ " + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "å·»ã戻ã—" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "逆転" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "å†èµ·å‹•" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "計測" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "始点ã¨çµ‚点ã§ãƒ€ãƒ–ルクリックã—ã¦è¨ˆæ¸¬" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "クリックã—ã¦è·é›¢ã‚’計測" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "クリックã—ã¦çµåˆè§’を計測" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "クリックã—ã¦äºŒé¢è§’を計測" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "2原å­ã‚’クリックã—ã¦ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã«é †åºã‚’表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "計測値を消去" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "計測値をコンソールã«è¡¨ç¤º" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "é•·ã•ã®å˜ä½ ナノメータ" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "é•·ã•ã®å˜ä½ オングストローム" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "é•·ã•ã®å˜ä½ ピコメータ" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "クリックã®æ©Ÿèƒ½" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "中心" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "原å­ã®ç•ªå·ã¨ä½ç½®" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "ラベル" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "原å­ã‚’é¸æŠž" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "鎖をé¸æŠž" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "元素をé¸æŠž" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "モデル組立ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’終了" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "基をé¸æŠž" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "分å­ã‚’é¸æŠž" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "サイトをé¸æŠž" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "対称æ“作を表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol スクリプト・コンソール" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "ファイルã®å†…容" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "ファイルã®ãƒ˜ãƒƒãƒ€ãƒ¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "等高é¢JVXLデータ" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "分å­è»Œé“ã®JVXLデータ" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "モデル" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "æ–¹å‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "空間群" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "ç¾åœ¨ã®çŠ¶æ…‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "ファイル" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "å†èª­ã¿è¾¼ã¿" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "PDBã‹ã‚‰é–‹ã" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "é–‹ã" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "å…¨å˜ä½æ ¼å­ã‚’読ã¿è¾¼ã‚€" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "スクリプトを開ã" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "{0}ã®ã‚³ãƒ”ーをä¿å­˜" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "状態ã¨ã‚¹ã‚¯ãƒªãƒ—トをä¿å­˜ã™ã‚‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "履歴ã¨ã‚¹ã‚¯ãƒªãƒ—トをä¿å­˜ã™ã‚‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "{0} イメージを書ã出ã™" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "ã™ã¹ã¦ã‚’JMOLファイル (zip)ã¨ã—ã¦ä¿å­˜" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "JVXL等高é¢ã‚’ä¿å­˜" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "{0} 3Dモデルを書ã出ã™" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "計算" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "構造最é©åŒ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "モデル組立ã¦" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "MOLデータを抽出" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "点ã§æã" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van der Waals 表é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "分å­è¡¨é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "æº¶åª’è¡¨é¢ ({0}-オングストローム・プローブ)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "æº¶åª’æŽ¥è§¦è¡¨é¢ (VDW + {0} オングストローム)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "{0}ã‚’å†èª­ã¿è¾¼ã¿ã™ã‚‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "{0}ã‚’å†èª­ã¿è¾¼ã¿ã—{1}を表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "å†èª­ã¿è¾¼ã¿ + 多é¢ä½“" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "éžè¡¨ç¤º" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "点線" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "ピクセル幅" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "オングストローム幅" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "é¸æŠžå¯¾è±¡ã‚’暈ã§å›²ã‚€" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "水素を表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "è·é›¢ã‚„角度を表示" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "視点ã®å¥¥è¡Œã" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMollã§ä½¿ã‚ã‚Œã¦ã„る色" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Jmolã«ã¤ã„ã¦..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "スクリプト・コンパイラ エラー: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x y z 軸を指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} 背景モデルãŒè¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "引数ã®æ•°ãŒèª¤ã£ã¦ã„ã¾ã™" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "ミラー指数ã¯ã™ã¹ã¦0ã«ã¯ã§ãã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "[R,G,B] 色指定ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "ブール値を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "ブール値ã¾ãŸã¯æ•°å€¤ã‚’入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "ブール値ã€æ•°å€¤ã¾ãŸã¯{0} を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "色を指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "色ã¾ãŸã¯ãƒ‘レットå (Jmol, Rasmol)ãŒå¿…è¦ã§ã™" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "命令を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} ã¾ãŸã¯$name ã‚ã‚‹ã„ã¯ï¼ˆåŽŸå­å¼ï¼‰ãŒå¿…è¦ã§ã™" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "æ画オブジェクトãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "スクリプトコマンドãŒäºˆæœŸã›ãšçµ‚了ã—ã¾ã—ãŸ" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "æ­£ã—ã„ (原å­å¼) を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(原å­å¼) ã¾ãŸã¯æ•´æ•°ã‚’入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "ファイルåを指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "引数ãŒçŸ›ç›¾ã—ã¦ã„ã¾ã™" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "引数ãŒè¶³ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "整数を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "整数㌠({0} - {1})ã®ç¯„囲を超ãˆã¦ã„ã¾ã™" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "引数ãŒä¸æ­£ã§ã™" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "パラメータã®é †åºãŒä¸æ­£ã§ã™" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "キーワードを指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "MOã®ä¿‚数データãŒã‚ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "分å­è»Œé“ã‚’1 ã‹ã‚‰ {0}ã®é–“ã§æŒ‡å®šã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã«å¯¾ã™ã‚‹MO基底関数/係数データãŒã‚ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "分å­è»Œé“ã®å æœ‰é›»å­æ•°ãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ä¸€ã¤ã®åˆ†å­è»Œé“ã—ã‹åˆ©ç”¨ã§ãã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} ã¯ãƒ¢ãƒ‡ãƒ«ãŒ1ã¤ã ã‘表示ã•ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} ã¯ãƒ¢ãƒ‡ãƒ«ãŒ1ã¤ã ã‘読ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "データãŒã‚ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Jmolã§MEPデータを表示ã™ã‚‹ã®ã«å¿…è¦ãªéƒ¨åˆ†é›»è·ãŒãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã›" +"ん。" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "å˜ä½æ ¼å­ãŒã‚ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "数値を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "æ•°ã¯({0} ã¾ãŸã¯ {1}) ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "å°æ•°ç‚¹æ•°ãŒ ({0} - {1}) ã®ç¯„囲を超ãˆã¦ã„ã¾ã™" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "'$' ã®å¾Œã«ã‚ªãƒ–ジェクトã®åå‰ã‚’指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "三点ã€åŽŸå­å¼ã€ {0} ã€{1} ã¾ãŸã¯ {2}ã®ã„ãšã‚Œã‹ã§å¹³é¢ã‚’指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "プロパティã®åå‰ã‚’指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "空間群 {0} ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "文字列を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "文字列をã¾ãŸã¯è­˜åˆ¥å­ã‚’入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "回転軸を指定ã™ã‚‹ãŸã‚ã®ç‚¹ã®æ•°ãŒå¤šã™ãŽã¾ã™" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "スクリプトã®ãƒ¬ãƒ™ãƒ«ãŒå¤šã™ãŽã¾ã™" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "èªè­˜ã§ããªã„原å­ã®ãƒ—ロパティ" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "èªè­˜ã§ããªã„çµåˆã®ãƒ—ロパティ" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "èªè­˜ã§ããªã„命令" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "実行時ã«èªè­˜ã§ããªã„表ç¾" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "èªè­˜ã§ããªã„オブジェクト" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "èªè­˜ã§ããªã„ {0} パラメーター" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"Jmol state スクリプトã§ã®èªè­˜ã§ããªã„ {0} パラメーター (ã„ãšã‚Œã«ã›ã‚ˆè¨­å®š)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "èªè­˜ã§ããªã„SHOWパラメータ -- use {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "何を書ãã¾ã™ã‹? {0} ã¾ãŸã¯ {1} \"ファイルå\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "スクリプト エラー: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} 原å­ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} æ°´ç´ çµåˆ" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "ファイル {0} ãŒä½œæˆã•ã‚Œã¾ã—ãŸ" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "{0} ã«å¯¾ã—ã¦ç„¡åŠ¹ãªã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã™" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ æ•° æ•° æ•° } を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "å¼ã®æœ€å¾Œã‚’指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "識別å­ã¾ãŸã¯æ®‹åŸºã‚’指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "原å­ã®æŒ‡å®šãŒç„¡åŠ¹ã§ã™" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "鎖ã®æŒ‡å®šãŒç„¡åŠ¹ã§ã™" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "å¼ã®ãƒˆãƒ¼ã‚¯ãƒ³: {0}ãŒç„¡åŠ¹ã§ã™" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "モデルã®æŒ‡å®šãŒç„¡åŠ¹ã§ã™" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "{0}ã«å¯¾ã™ã‚‹ENDãŒã‚ã‚Šã¾ã›ã‚“" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "数値ã¾ãŸã¯å¤‰æ•°åを入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "残基 (ALA, AL?, A*) を指定ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} を入力ã—ã¦ãã ã•ã„" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} ã¯æƒ³å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "èªè­˜ã§ããªã„å¼ã®ãƒˆãƒ¼ã‚¯ãƒ³: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "èªè­˜ã§ããªã„トークン: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} ストラットãŒè¿½åŠ ã•ã‚Œã¾ã—ãŸ" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} 原å­ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "æ–°è¦çµåˆ {0} ; 変更 {1}" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "注æ„: 複数ã®ãƒ¢ãƒ‡ãƒ«ãŒã“ã®æŽ¥è§¦ã«é–¢ä¸Žã—ã¦ã„ã¾ã™ï¼" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "クリックã—ã¦ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’表示..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmolアプレット ãƒãƒ¼ã‚¸ãƒ§ãƒ³ {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"詳ã—ã㯠http://www.jmol.org ã‚’å‚ç…§ã—ã¦ãã ã•ã„" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "ファイルエラー:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "原å­ã¾ãŸã¯çµåˆã®å‰²ã‚Šå½“ã¦/æ–°è¦ä½œæˆ ({0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" +"最近ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’ãƒãƒƒãƒ—アップ表示ã™ã‚‹(å³ä¸‹ã®Jmolロゴをクリック)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "原å­ã‚’削除ã™ã‚‹ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "çµåˆã‚’削除ã™ã‚‹ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "深度を調節ã™ã‚‹ (後é¢; {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "原å­ã‚’移動ã™ã‚‹ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "ã™ã¹ã¦ã®DRAWオブジェクトトを移動ã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "特定ã®DRAWãƒã‚¤ãƒ³ãƒˆã‚’移動ã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "ラベルを移動ã™ã‚‹ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "移動ã—ã¦åˆ†å­ã‚’構造最é©åŒ–ã™ã‚‹ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "移動ã—ã¦åˆ†å­ã‚’構造最é©åŒ–ã™ã‚‹ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "é¸æŠžã•ã‚ŒãŸåŽŸå­ã‚’移動ã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "Z軸方å‘ã«åŽŸå­ã‚’ドラッグã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "マウスを使ã£ã¦ãƒžãƒ«ãƒã‚¿ãƒƒãƒã‚’シミュレートã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "ナビゲーションãƒã‚¤ãƒ³ãƒˆã‚’平行移動 ({0} 㨠{1} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "原å­ã‚’é¸æŠžã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "原å­ã‚’接続ã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "等高é¢ä¸Šã®ç‚¹ã‚’é¸æŠžã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "ラベルをé¸æŠžã—ã¦è¡¨ç¤º/éžè¡¨ç¤ºã‚’切り替ãˆã‚‹ ({0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "(計測を開始ã—ãŸå¾Œã¾ãŸã¯{0} ã®å¾Œã«)計測ã«å«ã‚ã‚‹ãŸã‚ã«åŽŸå­ã‚’é¸æŠžã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "( {0} ãŒå¿…è¦)ã«ç§»å‹•ã•ã›ã‚‹ãŸã‚ã«åŽŸå­ã‚’é¸æŠžã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "(計測ã®ãŸã‚ã«)DRAWãƒã‚¤ãƒ³ãƒˆã‚’é¸æŠžã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "完全ãªã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’ãƒãƒƒãƒ—アップ表示ã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "リセット (モデル以外ã®å ´æ‰€ã‚’クリックã—ãŸæ™‚)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "回転ã•ã›ã‚‹" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "çµåˆã®å›žã‚Šã«åˆ†æžã‚’回転ã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "é¸æŠžã•ã‚ŒãŸåŽŸå­ã‚’回転ã•ã›ã‚‹ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "Z軸ã®å›žã‚Šã®å›žè»¢" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"Z軸ã®å›žã‚Šã®å›žè»¢(マウスã®æ¨ªæ–¹å‘移動) ã¾ãŸã¯è¡¨ç¤ºã®æ‹¡å¤§(マウスã®ç¸¦æ–¹å‘移動)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "原å­ã‚’é¸æŠžã—ã¦ãã ã•ã„ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "é¸æŠžã—ã¦åŽŸå­ã‚’ドラッグã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "ã“ã®åŽŸå­ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®é¸æŠžã‚’解除ã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "é¸æŠžãªã— ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "é¸æŠžã•ã‚ŒãŸåŽŸå­ã®ã‚»ãƒƒãƒˆã«ã“ã®åŽŸå­ã®ã‚°ãƒ«ãƒ¼ãƒ—を追加ã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "é¸æŠžã‚’トグルã§åˆ‡ã‚Šæ›ãˆã‚‹ ( {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"ã™ã¹ã¦ãŒé¸æŠžã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã™ã¹ã¦ã‚’é¸æŠžè§£é™¤ã—ã¦ãã ã•ã„。ã•ã‚‚ãªã‘ã‚Œã°ã€é¸æŠž" +"ã•ã‚ŒãŸåŽŸå­ã®é›†åˆã«ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®åŽŸå­ã‚’追加ã—ã¦ãã ã•ã„。( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "原å­ã‚’é¸æŠžã—ã¦è¨ˆæ¸¬ã‚’開始ã¾ãŸã¯çµ‚了ã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "スラブを調節ã™ã‚‹ (å‰é¢; {0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "スラブ/深度ウィンドウを移動ã™ã‚‹ (両é¢; {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "ズーム(ウィンドウã®å³ç¸ã«æ²¿ã£ã¦ï¼‰" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "2点をクリックã—ã¦è»¸ã®å›žã‚Šã«å時計回りã«å›žè»¢ã•ã›ã‚‹ ({0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "2点をクリックã—ã¦è»¸ã®å›žã‚Šã«æ™‚計回りã«å›žè»¢ã•ã›ã‚‹ ({0}ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "動作をåœæ­¢ã™ã‚‹ ( {0} ãŒå¿…è¦)" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "モデルを回転ã•ã›ã‚‹(スワイプã—ã¦ãƒœã‚¿ãƒ³ã‚’離ã™ã¨åŒæ™‚ã«åœæ­¢ã—ã¾ã™)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "移動ã•ã›ã‚‹" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "ズーム" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "モデルを軸ã®å›žã‚Šã§å›žè»¢ã•ã›ã‚‹ãŸã‚ã«ã‚‚ã†ï¼‘ã¤ã®åŽŸå­ã‚’é¸æŠžã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "モデルを軸ã®å›žã‚Šã§å›žè»¢ã•ã›ã‚‹ãŸã‚ã«ï¼’ã¤ã®åŽŸå­ã‚’é¸æŠžã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "対称性ã®é–¢ä¿‚を表示ã™ã‚‹ãŸã‚ã«ã‚‚ã†ï¼‘ã¤ã®åŽŸå­ã‚’é¸æŠžã™ã‚‹" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "対称性ã®é–¢ä¿‚を表示ã™ã‚‹ãŸã‚ã«2ã¤ã®åŽŸå­ã‚’é¸æŠžã™ã‚‹" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "ログファイルを {0} ã«è¨­å®šã™ã‚‹" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "ログファイルã®ãƒ‘スを設定ã§ãã¾ã›ã‚“" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} 原å­ãŒéžè¡¨ç¤ºã§ã™" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} 原å­ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã™" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "ドラッグã—ã¦ãƒ©ãƒ™ãƒ«ã‚’移動" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "クリップボードã¯åˆ©ç”¨ã§ãã¾ã›ã‚“ -- ç½²å付ãアプレットを利用ã—ã¦ãã ã•ã„" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} 個ã®æ°´ç´ ãŒä»˜åŠ ã•ã‚Œã¾ã—ãŸ" + +#~ msgid "Hide Symmetry" +#~ msgstr "対称性をéžè¡¨ç¤º" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Jmolアプレットを読ã¿è¾¼ã‚“ã§ã„ã¾ã™ ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} 秒" + +#~ msgid "Java version:" +#~ msgstr "Java ãƒãƒ¼ã‚¸ãƒ§ãƒ³:" + +#~ msgid "1 processor" +#~ msgstr "1 プロセッサ" + +#~ msgid "unknown processor count" +#~ msgstr "プロセッサ数 ä¸æ˜Ž" + +#~ msgid "Java memory usage:" +#~ msgstr "Java メモリ使用é‡:" + +#~ msgid "{0} MB free" +#~ msgstr "未使用 {0} MB" + +#~ msgid "unknown maximum" +#~ msgstr "最大値 ä¸æ˜Ž" + +#~ msgid "Open file or URL" +#~ msgstr "ファイルã¾ãŸã¯URLã‚’é–‹ã" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/jv.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/jv.po new file mode 100755 index 000000000000..c853617f93d6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/jv.po @@ -0,0 +1,2585 @@ +# Javanese translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: zaenal arifin \n" +"Language-Team: Javanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol Script Console" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Tutup" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Bantu" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Ngluru..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Perintahe" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Matematiko & Fungsine" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Set &Parameters" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Luweh" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Penyusun" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Negoro" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Mblayu" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Ngresikno Output" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Ngresiki Input" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Petilasan" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Ngemot" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"pejet CTRL-ENTER kanggo garis anyar utowo templekno modele doto lan pejet " +"Load" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Messages pingen dipetuk'i ningkene. Enter commands in the box below. Click " +"the console Help menu item for on-line help, which will appear in a new " +"browser window." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol Script Editor" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsolan" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Mengo" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Check" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" +"Duwur[as in \"go to the top\" - (translators: remove this bracketed part]" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Langkahe" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Mandeg sakmentoro" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Mbaleni meneh" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Berenti" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Resik" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Tutup" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "File utowo URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Type gambar" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG Quality ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG Compression ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG Quality ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "yo i" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Mboten" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Opo kowe pingin numpuki file {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Peringatno" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Sedoyo file" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Rak sido" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Mbatalke file pemilih dialog" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Rinci" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Direktori" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Mbukak pilihan direktori" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Kelengkapan" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modifikasi" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Brekas turunan" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Jenenge" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "nami berkas" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "ukur" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Berkas seko Type:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Jenis" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Bantu" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Bantu FileChooser" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Berondo" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Daftar" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Ndelok ning:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol Script Console" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol Script Console" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Mengo" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"Deloki http://www.jmol.org for more information" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Berkase keliru:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Ngemot Jmol applet ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} seconds" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ko.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ko.po new file mode 100755 index 000000000000..affabdcb09ad --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ko.po @@ -0,0 +1,2617 @@ +# Translation file of the JmolApplet for Korean. +# Copyright (C) 1998-2008 The Jmol Development Team +# This file is distributed under the same license as the Jmol package. +# Won-Kyu Park , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Bundo \n" +"Language-Team: Korean \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol 스í¬ë¦½íŠ¸ 콘솔" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "파ì¼" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "닫기" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "ë„움ë§(&H)" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "찾기(&S)..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "명령(&C)" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "수학 함수(&F)" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "파ë¼ë©”í„° 설정(&P)" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "편집ìž" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "ìƒíƒœ" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "실행" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "출력 지우기" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "ìž…ë ¥ 지우기" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "기ë¡" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "불러옴" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"CTRL-ENTER를 누르면 다ìŒì¤„ë¡œ 넘어가며 í˜¹ì€ ëª¨ë¸ ë°ì´íƒ€ë¥¼ 붙여넣기한 í›„ì— ë¶ˆëŸ¬" +"ì˜´ì„ ëˆ„ë¥´ì„¸ìš”" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol 스í¬ë¦½íŠ¸ 편집기" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "콘솔" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "열기" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "ì•žë©´" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "스í¬ë¦½íŠ¸" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "검사" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "단계" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "멈춤" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "다시" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "ë내기" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "지우기" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "닫기" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "íŒŒì¼ í˜¹ì€ URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "그림 형ì‹" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG 화질 ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG 압축 ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG 품질 ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "확ì¸" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "취소" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "íŒŒì¼ {0}ì„(를) ë®ì–´ì“¸ê¹Œìš”?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "주ì˜" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "모든 파ì¼" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "취소" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "íŒŒì¼ ì„ íƒ ëŒ€í™”ì°½ 취소" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "ìžì„¸ížˆ" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "디렉토리" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "ì„ íƒëœ 디렉토리 열기" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "ì†ì„±" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "수정ë¨" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "ì¼ë°˜ 파ì¼" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "ì´ë¦„" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "íŒŒì¼ ì´ë¦„:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "í¬ê¸°" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "íŒŒì¼ í˜•ì‹:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "종류" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "ë„움ë§" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "íŒŒì¼ ì„ íƒê¸° ë„움ë§" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "홈" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "목ë¡" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "보기 ë°©ì‹:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "새 í´ë” 만들기 실패" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "새 í´ë”" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "새 í´ë” 만들기" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "ì„ íƒí•œ íŒŒì¼ ì—´ê¸°" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "저장" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "ì„ íƒí•œ íŒŒì¼ ì €ìž¥" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "갱신" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "디렉토리 리스트 갱신" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "위로" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "ìƒìœ„ í´ë”" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "확ì¸" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "미리보기" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "ëª¨ë¸ ì¶”ê°€" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "ì•„ëžì–´" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "카탈로니아어" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "체코어" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "ë´ë§ˆí¬ì–´" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "ë…ì¼ì–´" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "그리스어" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "ì˜êµ­ ì˜ì–´" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "미국 ì˜ì–´" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "스페ì¸ì–´" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "ì—스토니아어" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "프랑스어" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "í—가리어" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "ì¸ë„네시아어" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "ì´íƒˆë¦¬ì•„ì–´" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "ì¼ë³¸ì–´" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "한국어" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "노르웨ì´ì–´" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "네ë¸ëž€ë“œì–´" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "오시탄어" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "í´ëž€ë“œì–´" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "í¬ë£¨íˆ¬ê°ˆì–´" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "í¬ë£¨íˆ¬ê°ˆì–´(브ë¼ì§ˆ)" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "러시아어" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "슬로베니아어" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "스웨ë´ì–´" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "터키어" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "ìš°í¬ë¼ì´ë‚˜ì–´" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "중국어 ê°„ì²´" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "중국어 번체" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "í¬ìŠ¤í•„ë“œ {0}ì„(를) 위한 í´ëž˜ìŠ¤ë¥¼ 가져올 수 ì—†ìŒ" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "아무 ì›ìžë„ ì„ íƒì•ˆë¨ -- 실행 안함!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} ì›ìžë¥¼ 최ì í™”하려 함" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "í¬ìŠ¤í•„ë“œ {0}(ì„)를 설정할 수 ì—†ìŒ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "중앙" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "ì—†ìŒ" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "모ë‘" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} 프로세서" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "ì´ {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB 최대" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol 스í¬ë¦½íŠ¸ 콘솔" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "마우스 설명서" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "번역" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "시스템" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "ì›ìž ì—†ìŒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "구성" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "ì›ì†Œ" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "모ë¸/프레임" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "언어" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Residue ì´ë¦„으로" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "HETATM으로" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "대칭" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "ëª¨ë¸ ì •ë³´" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "ì„ íƒ ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "ì „ì²´ {0} 모ë¸" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "구성 ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "{0} 모ë¸ì˜ 콜렉션" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "ì›ìž: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "ê²°í•©: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "그룹: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "ì²´ì¸: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "중합체: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "ëª¨ë¸ {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "ë·° {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "주 메뉴" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "ë°”ì´ì˜¤ë¶„ìž" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "ë°”ì´ì˜¤ë¶„ìž {0} ({1}ê°œ ì›ìž)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "ë°”ì´ì˜¤ë¶„ìž {0} 부르기 ({1}ê°œ ì›ìž)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "ì—†ìŒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "ì„ íƒí•œ 것만 보기" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "ì„ íƒ ë°˜ì „" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "보기" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "ì•žë©´" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "왼쪽" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "오른쪽" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "아래" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "ë’·ë©´" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "축" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "축" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "축" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "축" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "축" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "축" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "단백질" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "백본" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "ê³ê°€ì§€ ì²´ì¸" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "극성 Residues" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "무극성 Residues" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "기본 Residues (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "산성 Residues (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "무전하 Residues" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "핵산" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "염기" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT ì§" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC ì§" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU ì§" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "ì œ2 스트럭ì³" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "헤테로" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "PDBì˜ ëª¨ë“  \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "모든 용매" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "모든 물분ìž" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Nonaqueous 용매" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "리간드" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "탄수화물" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "ìœ„ì— ì—†ìŒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "ì†ì„±" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "형ì‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK 공간채움" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "ê³µ 막대기" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "막대기" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "뼈대" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "카툰" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "트레ì´ìŠ¤" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "ì›ìž" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "ë”" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% ë°˜ë°ë¥´ë°œìŠ¤" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "ê²°í•©" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "켬" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "수소 ê²°í•©" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "계산" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "스트럭ì³" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "카본 로켓" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "리본" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "로켓" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "진ë™" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "벡터" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} 픽셀" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "ìŠ¤ì¼€ì¼ {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "ìž…ì²´" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "빨강+시안 안경" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "빨강+파랑 안경" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "빨강+녹색 안경" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Cross-eyed 보기" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Wall-eyed 보기" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "표지" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "ì›ì†Œê¸°í˜¸ë¡œ" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "ì›ìžì´ë¦„으로" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "ì›ìž 번호로" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "ì›ìžì— 번호지정" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "가운ë°" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "ìš°ìƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "우하" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "좌ìƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "좌하" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "색ìƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "ì›ì†Œ (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "다른 위치" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "분ìž" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formal 전하" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "부분 전하" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "ì˜¨ë„ (ìƒëŒ€ì )" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "ì˜¨ë„ (절대값)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "아미노산" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "ì²´ì¸" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "그룹" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "모노머" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "ìƒì†" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "검정" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "í°ìƒ‰" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "시안" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "빨강" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "오렌지" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "노랑" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "녹색" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "파랑" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "ì¸ë””ê³ " + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "ë³´ë¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "연어살색" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "올리브" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "진한빨강" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "회색" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "ì—°ì²­" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "금색" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "ì—°ë³´ë¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "불투명으로" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "투명으로" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "ë°°ê²½" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "표면" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "축" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "경계ìƒìž" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "단위 cell" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "확대" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "확대" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "축소" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "회전" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "X축 회전" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Y축 회전" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Z축 회전" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "FPS 설정" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "ë™ì˜ìƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "ë™ì˜ìƒ 모드" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "한번만" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "왔다갔다" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "반복" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "재ìƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "정지" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "ë‹¤ìŒ ìž¥ë©´" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "ì´ì „ 장면" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "ë˜ê°ê¸°" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "반대로" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "재시작" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "측정" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "시작하고 ë낼때 ë”블 í´ë¦­ì„ 누름" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "í´ë¦­í•˜ë©´ 거리 측정" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "í´ë¦­í•˜ë©´ ê°ë„ 측정" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "í´ë¦­í•˜ë©´ 꼬ì¸ê° (ì´ë©´ê°) 측정" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "측정 지우기" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "측정 리스트" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "길ì´ë‹¨ìœ„ 나노미터" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "ê¸¸ì´ ë‹¨ìœ„ 옹스트롬" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "ê¸¸ì´ ë‹¨ìœ„ 피코미터" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "ì„ íƒ ì„¤ì •" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "가운ë°" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "ì‹ë³„ìž" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "표지" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "ì›ìž ì„ íƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "ì²´ì¸ ì„ íƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "ì›ì†Œ ì„ íƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "그룹 ì„ íƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "ë¶„ìž ì„ íƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "사ì´íŠ¸ ì„ íƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "보기" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol 스í¬ë¦½íŠ¸ 콘솔" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "íŒŒì¼ ë‚´ìš©" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "íŒŒì¼ í—¤ë”" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Isosurface JVXL ë°ì´í„°" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "ë¶„ìž ì˜¤ë¹„íƒˆ JVXL ë°ì´í„°" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "모ë¸" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "ë°°í–¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "공간 그룹" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "현재 ìƒíƒœ" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "파ì¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "다시 ì½ê¸°" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "PDBì—ì„œ 열기" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "ì„ íƒí•œ íŒŒì¼ ì—´ê¸°" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "열기" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "ì „ì²´ 단위 ì„¸í¬ ë¶ˆëŸ¬ì˜¤ê¸°" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "{0}ì˜ ë³µì‚¬ë³¸ì„ ì €ìž¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "ìƒíƒœë¥¼ 스í¬ë¦½íŠ¸ë¡œ 저장" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "기ë¡ì„ 스í¬ë¦½íŠ¸ë¡œ 저장" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "{0} ì´ë¯¸ì§€ 내보내기" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "{0} 3D ëª¨ë¸ ë‚´ë³´ë‚´ê¸°" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "ì—°ì‚°" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "최ì í™” 구조" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "MOL í…Œì´íƒ€ 추출" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "ì  í¬ë©´" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "ë°˜ë°ë¥´ë°œìŠ¤ 표면" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "ë¶„ìž í‘œë©´" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "용매 표면 ({0}-옹스트롬 프로브)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Solvent-Accessiable 표면 (VDW + {0} 옹스트롬)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "다시부르기 {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "{0} 다시ì½ê¸° + {1} 보기" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "숨기기" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "ì " + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "픽셀 너비" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "옹스트롬 너비" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "ì„ íƒ í‘œì‹œ" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "수소 보기" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "측정 보기" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "ì›ê·¼ 깊ì´" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol색" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "ì •ë³´..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "스í¬ë¦½íŠ¸ 컴파ì¼ëŸ¬ 오류: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x y z 축 í•„ìš”" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "ì¸ìž 개수 오류" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "밀러 지수는 모든 ê°’ì´ 0ì¼ ìˆ˜ ì—†ìŒ" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "ìž˜ëª»ëœ [R,G,B] 색ìƒ" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "부울린값 í•„ìš”" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "부울린 í˜¹ì€ ìˆ«ìž í•„ìš”" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "부울린, ìˆ«ìž í˜¹ì€ {0} í•„ìš”" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "ìƒ‰ìƒ í•„ìš”" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "ìƒ‰ìƒ í˜¹ì€ íŒ”ë ˆíŠ¸ ì´ë¦„ (Jmol, Rasmol)ì´ í•„ìš”" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "ëª…ë ¹ì´ í•„ìš”í•¨" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "그림 ê°ì²´ê°€ ì •ì˜ ì•ˆë¨" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "예ìƒì¹˜ì•Šì€ 스í¬ë¦½íŠ¸ 명령" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "유효한 (ì›ìž 표현ì‹) í•„ìš”" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(ì›ìž 표현ì‹) í˜¹ì€ ì •ìˆ˜ í•„ìš”" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "íŒŒì¼ ì´ë¦„ í•„ìš”" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "íŒŒì¼ ì—†ìŒ" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "비호환 ì¸ìž" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "부족한 ì¸ìž" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "정수가 í•„ìš”" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "정수가 ë²”ìœ„ì— ë²—ì–´ë‚¨ ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "ìž˜ëª»ëœ ì¸ìž" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ìž˜ëª»ëœ ì¸ìž 순서" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "키워드 í•„ìš”" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "MO 계수 ì •ë³´ ì—†ìŒ" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "1ì—ì„œ {0} 사ì´ì˜ MO ì§€ì •ê°’ì´ í•„ìš”í•¨" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "현재 í”„ë ˆìž„ì— ëŒ€í•œ MO basis/계수 ì •ë³´ê°€ ì—†ìŒ" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "MO ì ìœ ê°’ì´ ì—†ìŒ" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "단 í•˜ë‚˜ì˜ ë¶„ìžê¶¤ë„ê°€ 있습니다" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0}(ì€)는 단 í•˜ë‚˜ì˜ ëª¨ë¸ë§Œ 표시ë¨" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "아무 ì •ë³´ê°€ ì—†ìŒ" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"부분 전하 ì •ë³´ê°€ 없습니다; Jmolì€ MEP 정보를 보여주기 위해 ì´ ì •ë³´ê°€í•„ìš”í•©ë‹ˆ" +"다." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "단위 cell ì—†ìŒ" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "ìˆ«ìž í•„ìš”" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "유효한 숫ìžëŠ” ({0} í˜¹ì€ {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "십진수가 ë²”ìœ„ì— ë²—ì–´ë‚¨ ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "'$' ë’¤ì— ê°ì²´ ì´ë¦„ì´ í•„ìš”" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "í‰ë©´ì´ 필요함 -- ì„¸ê°œì˜ ì  í˜¹ì€ ì›ìž í‘œí˜„ì‹ í˜¹ì€ {0} í˜¹ì€ {1} í˜¹ì€ {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "ì†ì„± ì´ë¦„ í•„ìš”" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "공간 그룹 {0}(ì„)를 ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "따옴표로 ê°ì‹¼ 문ìžì—´ í•„ìš”" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "ì¸ìš©ëœ 문ìžì—´ í˜¹ì€ ì§€ì •ìž í•„ìš”" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "너무 ë§Žì€ íšŒì „ í¬ì¸íŠ¸ê°€ 지정ë¨" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "너무 ë§Žì€ ìŠ¤í¬ë¦½íŠ¸ 단계" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "모르는 ì›ìž ì†ì„±" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "모르는 ê²°í•© ì†ì„±" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "모르는 명령" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "런타임시 ì¸ì‹ì•ˆë˜ëŠ” 표현ì‹" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "모르는 ê°ì²´" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "ì´í•´í•  수 없는 {0} 파ë¼ë©”í„°" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "SHOW ì¸ìžê°€ ì¸ì‹ì•ˆë¨ -- {0} 사용" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "ë¬´ì—‡ì„ ì“°ë‚˜ìš”? {0} í˜¹ì€ {1} \"파ì¼ì´ë¦„\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "스í¬ë¦½íŠ¸ 오류: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} ì›ìž 지움" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} 수소 ê²°í•©" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "{0}ì— ëŒ€í•œ ìž˜ëª»ëœ ì»¨í…스트" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ ìˆ«ìž ìˆ«ìž ìˆ«ìž } í•„ìš”" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "수ì‹ì˜ ëì´ ìš”êµ¬ë¨" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "ì‹ë³„ìž í˜¹ì€ residue ì§€ì •ì´ í•„ìš”í•¨" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "ìž˜ëª»ëœ ì›ìž 지정" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "ìž˜ëª»ëœ ì²´ì¸ ì§€ì •" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "ìž˜ëª»ëœ ìˆ˜ì‹ í† í°: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "ìž˜ëª»ëœ ëª¨ë¸ ì§€ì •" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "{0}ì— ENDê°€ 없습니다" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "ìˆ«ìž í˜¹ì€ ë³€ìˆ˜ ì´ë¦„ì´ í•„ìš”" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0}ì´(ê°€) 필요함" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0}ì€(는) 불필요함" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "ì´í•´í•  수 없는 ìˆ˜ì‹ í† í°: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "ì´í•´í•  수 없는 토í°: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, fuzzy, java-format +msgid "{0} struts added" +msgstr "{0} ì›ìž 숨김" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} 결함 제거" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} 새 ê²°í•©: {1} 변경ë¨" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol 애플릿 버전 {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"ë” ë§Žì€ ì •ë³´ëŠ” http://www.jmol.org를 참조하세요" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "íŒŒì¼ ì˜¤ë¥˜:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "회전" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "번역" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "확대" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "축ìƒìœ¼ë¡œ ëŒë¦¬ê¸°ìœ„í•´ 하나 í˜¹ì€ ë” ë§Žì€ ì›ìžë¥¼ 고르세요" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "모ë¸ì„ 축ìƒìœ¼ë¡œ 회전하기 위해 ë‘ê°œì˜ ì›ìžë¥¼ 고르세요" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} ì›ìž 숨김" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} ì›ìž ì„ íƒ" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Hide Symmetry" +#~ msgstr "대칭 숨기기" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Jmol 애플릿 부르기 ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} ì´ˆ" + +#~ msgid "Java version:" +#~ msgstr "ìžë°” 버전:" + +#~ msgid "1 processor" +#~ msgstr "1 프로세서" + +#~ msgid "unknown processor count" +#~ msgstr "프로세서 개수 모름" + +#~ msgid "Java memory usage:" +#~ msgstr "ìžë°” 메모리 ìƒí™©:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB 여유" + +#~ msgid "unknown maximum" +#~ msgstr "최대 모름" + +#~ msgid "Open file or URL" +#~ msgstr "íŒŒì¼ ë˜ëŠ” URL 열기" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ms.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ms.po new file mode 100755 index 000000000000..15dc9ccf263a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ms.po @@ -0,0 +1,2641 @@ +# Malay translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: abuyop \n" +"Language-Team: Malay \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Unsur?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Konsol Skrip Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Fail" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Tutup" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Bantuan" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Gelintar..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Perintah" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Fungsi Matematik" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Tetapkan &Parameter" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Lagi" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Penyunting" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Keadaan" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Jalankan" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Kosongkan Output" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Kosongkan Input" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Sejarah" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Muat" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"tekan CTRL-ENTER untuk baris baru atau tampal data model dan tekan Muat" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Mesej akan muncul disini. Masukkan perintah didalam kotak dibawah. Klik pada " +"konsol item menu Bantuan untuk bantuan atas-talian, yang mana akan muncul " +"didalam tetingkap pelayar baru." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Penyunting Skrip Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsol" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Buka" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Hadapan" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skrip" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Semak" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Atas[sebagaimana \"pergi ke atas\"" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Langkah" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Jeda" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Sambung" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Henti" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Kosongkan" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Tutup" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Fail atau URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Jenis Imej" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Kualiti JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Pemampatan PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Kualiti PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ya" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Tidak" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Anda ingin menulis-ganti fail {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Amaran" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Semua Fail" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Batal" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Henti paksa dialog pemilih fail" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Perincian" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Direktori" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Buka direktori pilihan" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atribut" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Diubahsuai" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Fail Generik" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nama" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nama Fail:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Saiz" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Jenis Fail:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Jenis" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Bantuan" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Bantuan Pemilih Fail" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Rumah" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Senarai" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Lihat Dalam:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Ralat mencipta folder baru" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Folder Baru" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Cipta Folder Baru" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Buka fail pilihan" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Simpan" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Simpan fail pilihan" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Simpan Dalam:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Kemaskini" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Kemaskini penyenaraian direktori" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Naik" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Naik Satu Aras" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Pratonton" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Tambah model" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "Karton PDB" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"PERHATIAN: Kedudukan tulang belakang hidrogen amida adalah hadir dan akan " +"diabaikan. Kedudukan mereka akan dianggarkan, sebagaimana didalam analisis " +"DSSP piawai.\n" +"Guna {0} untuk tidak gunakan anggaran ini.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"PERHATIAN: Kedudukan tulang belakang hidrogen amida adalah hadir dan akan " +"digunakan. Keputusan akan berbeza sedikit daripada analisis DSSP piawai.\n" +"Guna {0} untuk abaikan kedudukan hidrogen ini.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arab" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturia" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Azerbaijan" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnia" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalan" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Czech" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Denmark" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Jerman" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Yunani" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Inggeris Australia" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Inggeris Britain" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Inggeris Amerika" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Sepanyol" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonia" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Basque" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finland" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Faroese" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Perancis" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisian" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Galician" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Croatia" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Hungari" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armenia" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesia" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Itali" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Jepun" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Jawa" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Korea" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Melayu" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norwegian Bokmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Belanda" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitan" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Poland" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugis" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portugis Brazil" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Rusia" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovenia" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbia" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Sweden" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turki" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uighur" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukraine" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Uzbek" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Cina Ringkas" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Cina Tradisional" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Tidak dapat kelas untuk medan kuasa {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Tiada atom dipilih -- tiada apa dilakukan!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atom akan diminimumkan." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "tidak dapat pasang medan kuasa {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "baru" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "buat asal (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "buat semula (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "tengah" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "tambah hidrogen" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimakan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "baiki hidrogen dan minimumkan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "kosongkan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "simpan fail" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "simpan keadaan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "Songsangkan gelang stereokimia" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "padam atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "seret ke ikatan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "seret atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "seret atom (dan minimakan)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "seret dan minimumkan molekul (labuhkan)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "naikkan cas" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "kurangkan cas" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "padam ikatan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "tunggal" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "ganda dua" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "ganda tiga" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "tingkatkan tertib" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "kurangkan tertib" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "putar ikatan (SHIFT-SERET)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "keluar dari mod kit model" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Kumpulan Ruang" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Tiada" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Semua" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "Pemproses {0}" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB keseluruhan" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maksimum" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Konsol Skrip Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Panduan Tetikus" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Terjemahan" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistem" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Tiada atom dimuatkan" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Konfigurasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Unsur" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Model/Bingkai" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Bahasa" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Mengikut Nama Residu" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Berdasarkan HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Petala Molekul ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetri" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Maklumat model" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Pilih ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Semua {0} model" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfigurasi ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Koleksi dari {0} model" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atom: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "ikatan: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "kumpulsn: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "rantaian: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polimer: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Paparan {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menu Utama" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekul" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekul {0} ({1} atom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "muatkan biomolekul {0} ({1} atom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Tiada" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Papar Dipilih Sahaja" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Terbalik Pemilihan" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Papar" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Hadapan" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Kiri" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Kanan" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Atas" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Bawah" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Undur" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Paksi" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Paksi" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Paksi" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Paksi" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Paksi" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Paksi" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Tulang Belakang" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Rantai Sisi" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Residu Kutub" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Residu Bukan Kutub" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Residu Asas (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Residu Berasid (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Residu Tidak Dicas" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nukleik" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Asas" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Pasangan AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Pasangan GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Pasangan AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Struktur Sekunder" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Semua PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Semua Pelarut" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Semua Air" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Pelarut Bukan-Air" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM Bukan-Air" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligan" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Karbohidrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Tiada seperti diatas" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Gaya" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Skema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Isian Ruang CPK" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Bola dan Kayu" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Ranting" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Bingkai Wayar" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Kartun" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Surih" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Dimatikan" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Ikatan" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Dihidupkan" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Kira Hidrogen" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Kira" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Tetapkan Rantai Sisi Ikatan-H" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Tetapkan Tulang Belakang Ikatan-H" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Ikatan Disulfida" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Tetapkan Rantai Sisi Ikatan-SS" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Tetapkan Tulang Belakang Ikatan-SS" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Roket Karton" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Reben" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Roket" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Bebenang" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Getaran" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektor" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spektra" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} piksel" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Skala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografik" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Kaca Merah+Sian" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Kaca Merah+Biru" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Kaca Merah+Hijau" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Pemaparan mata-silang" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Pemaparan mata-dinding" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Label" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Dengan Simbol Unsur" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Dengan Nama Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Dengan Nombor Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Kedudukan Label Atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Ditengah" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Kanan Atas" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Kanan Bawah" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Kiri Atas" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Kiri Bawah" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Warna" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Berdasarkan Skema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Unsur (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Lokasi Alternatif" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekul" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Cas Formal" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Cas Separa" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Suhu (Relatif)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Suhu (Tetap)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Acid Amino" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Rantai" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Kumpulan" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Berbentuk" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Warisi" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Hitam" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Putih" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Sian" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Merah" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Jingga" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Kuning" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Hijau" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Biru" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Ungu" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmon" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Hijau Zaitun" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Merah Manggis" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Kelabu" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Biru Loh" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Emas" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orkid" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Jadikan Legap" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Jadikan Lutsinar" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Latar belakang" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Permukaan" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Paksi" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Kotak Ikatan" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Sel unit" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zum" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Zum Masuk" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Zum Keluar" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Putar" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Tetapkan Kadar X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Tetapkan Kadar Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Tetapkan Kadar Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Tetapkan FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Mod Anijmasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Main Sekali" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Gelung" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Main" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Henti" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Bingkai Berikut" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Bingkai Terdahulu" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Ulang" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Undur" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Mula Semula" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Dwi-Klik untuk mula dan akhirkan semua pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Klik untuk pengukuran jarak" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Klik untuk pengukuran sudut" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Klik untuk pengukuran torsion (dihedral)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Klik dua atom untuk paparkan jujukan didalam konsol" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Padam pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Senarai pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Unit jarak nanometer" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Unit jarak Angstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Unit jarak pikometer" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Tetapkan pengambilan" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Tengah" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identiti" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Label" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Pilih atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Pilih rantai" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Pilih unsur" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "keluar dari mod kit model" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Pilih kumpulan" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Pilih molekul" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Pilih laman" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Papar operasi simetri" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Papar" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Konsol Skrip Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Kandungan Fail" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Pengepala Fail" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Data Isosurface JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Data JVXL orbital molekul" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientasi" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Kumpulan ruang" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Keadaan semasa" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Fail" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Muat semula" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Buka dari PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Buka fail pilihan" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Buka" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Muatkan sel unit penuh" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Buka skrip" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Simpan Salinan {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Simpan skrip dengan keadaan" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Simpan skrip dengan sejarah" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Eksport {0} imej" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Simpan sebagai fail JMOL (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Simpan isosurface JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Eksport {0} model 3D" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Pengiraan" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimumkan struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Kit model" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Ekstrak data MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Permukaan Titik" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "Permukaan van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Permukaan Molekul" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Permukaan Pelarut ({0}-Angstrom probe)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Permukaan Pelarut-Boleh-Capai (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Muat semula {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Muat semula {0} + Papar {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Muat semula + Polyhedra" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Sembunyi" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Berbintik" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Lebar Piksel" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Lebar Angstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Pemilihan Halo" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Papar Hidrogen" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Papar Pengukuran" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Kedalaman Perspektif" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Warna RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Perihal..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "Ralat pengompil skrip: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "paksi x y z dijangka" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} tidak dibenarkan dengan model latar belakang dipaparkan" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "Kiraan argumen teruk" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Indeks Miller tidak boleh semua kosong." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "warna [R,G,B] teruk" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "boolean dijangka" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "boolean atau nombor dijangka" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "boolean, nombor, atau {0} dijangka" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "tidak dapat tetapkan nilai" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "warna dijangka" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "nama palet atau warna (Jmol, Rasmol) diperlukan" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "perintah dijangka" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} atai $name atau (ungkapan atom) diperlukan" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "objek lukis tidak ditakrif" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "Pengakhiran perintah skrip tidak dijangka" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "(ungkapan atom) sah dijangka" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(ungkapan atom) atau integer dijangka" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "nama fail dijangka" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "fail tidak ditemui" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "argumen tidak serasi" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "argumen tidak mencukupi" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "integer dijangka" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "integer diluar julat ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "argumen tidak sah" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "Tertib parameter tidak sah" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "kata kunci dijangka" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "tiada data pemalar MO tersedia" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Indeks MO dari 1 ke {0} diperlukan" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "tiada data pemalar MO tersedia untuk bingkai ini" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "tiada data kependudukan MO tersedia" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Hanya satu petala molekul tersedia dalam fail ini" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} perlukan hanya satu model dipaparkan" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} perlukan hanya satu model dimuatkan" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Tiada data tersedia" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Tiada cas separa dibaca dari fail; Jmol perlukan ini untuk terapkan data MEP." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Tiada sel unit" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "nombor dijangka" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "nombor mesti ({0} atau {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "bilangan desimal di luar julat ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "nama objek dijangka selepas '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"satah dijangka -- sama ada tiga titik atau ungkapan atom atau {0} atau {1} " +"atau {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "nama ciri-ciri dijangka" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "kumpulan ruang {0} tidak ditemui." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "rentetan terpetik dijangka" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "pengecam atau rentetan terpetik dijangka" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "terlalu banyak titik putaran ditentukan" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "terlalu banyak aras skrip" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "ciri-ciri atom tidak dikenalpasti" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "ciri-ciri ikatan tidak dikenalpasti" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "perintah tidak dikenalpasti" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "ungkapan masa-jalan tidak dikenalpasti" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "objek tidak dikenalpasti" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "parameter {0} tidak dikenali" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "parameter {0} tidak dikenali didalam skrip keadaan Jmol (tetapkan jua)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "Parameter SHOW tidak dikenalpasti -- guna {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "tulis apa? \"nama fail\" {0} atau {1}" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "RALAT skrip: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atom dipadam" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} ikatan hidrogen" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "fail {0} dicipta" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "konteks tidak sah untuk {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ number number number } dijangka" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "pengakhiran ungkapan tidak dijangka" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "pengecam atau spesifikasi residu dijangka" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "spesifikasi atom tidak sah" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "spesifikasi rantaian tidak sah" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "token ungkapan tidak sah: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "spesifikasi model tidak sah" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "hilang END untuk {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "nombor atau nama pembolehubah dijangka" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "spesifikasi residu (ALA ,AL?, A*) dijangka" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} dijangka" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} tidak dijangka" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "Token ungkapan tidak dikenali: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "Token tidak dikenali: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} struts ditambah" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} sambungan dipadam" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} ikatan baru; {1} diubahsuai" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Perhatian: Lebih dari satu model terlibat dalam kenalan ini!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Klik pada menu..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Aplet Jmol versi {0} {1}.\n" +"\n" +"Merupakan projek OpenScience.\n" +"\n" +"Lihat http://www.jmol.org untuk maklumat lanjut" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Ralat Fail:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "atom atau ikatan diumpukkan/baru (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "timbulkan menu konteks terkini (klik pada frank Jmol)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "padam atom (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "padam ikatan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "laras kedalaman (belakang satah; perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "alih atom (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "alih keseluruhan objek LUKIS (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "alih titik LUKIS tertentu (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "alih label (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "alih atom dan minimumkan molekul (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "alih dan minimumkan molekul (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "alih atom pilihan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "seret atom dalam arah Z (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simulasi sentuhan-berbilang menggunakan tetikus)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "terjemah titik navigasi (perlukan {0} dan {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "ambil atom" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "sambung atom (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "ambil titik ISOSURFACE (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "ambil label untuk togolkannya tersembunyi/paparkan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"ambil atom untuk sertakannya didalam pengukuran (selepas memulakan " +"pengukuran atau selepas {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "ambil titik atau atom untuk dinavigasikan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "ambil titik LUKIS (untuk pengukuran) (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "timbulkan menu konteks penuh" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "tetap (bila diklik diluar dari model)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "putar" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "putar ranting disekitar ikatan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "putar atom pilihan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "putar Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "putar Z (gerakan melintang tetikus) atau zum (gerakan menegak tetikus)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "alih satu atom (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "pilih dan seret atom (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "nyahpilih kumpulan atom ini (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "pilih TIADA (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "tambah kumpulan atom ini untuk tetapkan atom pilihan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "togol pemilihan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"jika semua dipilih, nyahpilih semua, jika tidak tambah kumpulan atom ini " +"untuk tetapkan atom pilihan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "ambil satu atom untuk mulakan atau tentukan pengukuran" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "laras loh (satah hadapan; perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "alih loh/kedalaman tetingkap (kedua-dia satah; perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zum (sepanjang bucu kanan tetingkap)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"klik pada dua titik untuk putar disekeliling paksi lawan jam (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"klik pada dua titik untuk putar disekeliling paksi ikut jam (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "henti gerakan (perlukan {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"model putar (leret dan lepaskan butang dan hentikan gerakan secara serentak)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "terjemah" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zum" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" +"ambil lebi dari satu atom dalam tertib untuk putarkan model mengelilingi " +"paksi" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "ambil dua atom dalam tertib untuk putarkan model mengelilingi paksi" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "ambil dua atom dalam tertib untuk paparkan hubungan simetri" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" +"ambil dua atom dalam tertib untuk paparkan hubungan simetri diantara mereka" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Tetapkan fail log ke {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Tidak dapat tetapkan laluan log fail." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atom tersembunyi" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atom dipilih" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Seret untuk alihkan label" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "papan keratan tidak boleh dicapai -- guna aplet terdaftar" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} hidrogen ditambah" + +#~ msgid "Hide Symmetry" +#~ msgstr "Sembunyi Simetri" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Memuatkan aplet Jmol ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} saat" + +#~ msgid "Java version:" +#~ msgstr "Versi Java:" + +#~ msgid "1 processor" +#~ msgstr "Pemproses 1" + +#~ msgid "unknown processor count" +#~ msgstr "kiraan pemproses tidak diketahui" + +#~ msgid "Java memory usage:" +#~ msgstr "Penggunaan ingatan Java" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB bebas" + +#~ msgid "unknown maximum" +#~ msgstr "maximum tidak diketahui" + +#~ msgid "Open file or URL" +#~ msgstr "Buka fail atau URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/nb.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/nb.po new file mode 100755 index 000000000000..71e57c3b1e2d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/nb.po @@ -0,0 +1,2590 @@ +# Norwegian Bokmal translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Anders Oftedal \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Element ?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "jmol skriptkonsoll" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Lukk" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Hjelp" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Søk..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Kommandoer" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Mer" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Redigeringsverktøy" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Status" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Kjør" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historikk" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Last inn" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"trykk CTRL-ENTER for ny linje eller lim inn modelldata og trykk last inn" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsoll" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Ã…pne" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Foran" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skript" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Steg" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pause" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Gjenoppta" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Stans" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Tøm" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Lukk" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Fil eller URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Bildetype:" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG Kvalitet ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG komprimering ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG Kvalitet ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ja" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Nei" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Vil du overskrive filen ({0})?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Advarsel" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Alle filer" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Avbryt" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Detaljer" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Mappe" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Ã…pne valgt mappe" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Attributter" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Endret" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Navn" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Filnavn:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Størrelse" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Filer av typen:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Type" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Hjelp" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Hjem" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Liste" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Se i:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Klarte ikke Ã¥ opprette ny mappe" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Ny mappe" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Opprett ny mappe" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Ã…pne valgt fil" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Lagre" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Lagre valgt fil" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Lagre i:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Oppdater" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Opp" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Opp et nivÃ¥" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "ForhÃ¥ndsvisning" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabisk" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Katalansk" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Tsjekkisk" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Dansk" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Tysk" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Gresk" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Engelsk (Storbritannia)" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Engelsk (Amerikansk)" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spansk" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estisk" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finsk" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Færøyisk" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Fransk" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Kroatisk" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Ungarsk" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesisk" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italiensk" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japansk" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javansk" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Koreansk" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norsk BokmÃ¥l" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Nederlandsk" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitansk" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polsk" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugisisk" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brasiliansk Portugisisk" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russisk" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovensk" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Svensk" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamilsk" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Tyrkisk" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukrainsk" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Forenklet kinesisk" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Tradisjonell kinesisk" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Ingen atomer er valgt -- ingen ting Ã¥ utføre!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomer vil bli minimert" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "ny" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "Angre" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "Gjør om" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "Legg til hydrogener" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimer" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "fiks hydrogener og minimer" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "tøm" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "lagre fil" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "slett atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "dra atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "dra atom (og minimer)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "dobbel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "trippel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Ingen" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Alle" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} prosessorer" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB totalt" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maks" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "jmol skriptkonsoll" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Oversettelser" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "System" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Inge atomer er lastet inn" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Oppsett" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "SprÃ¥k" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Av HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symmetri" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Modell informasjon" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Velg ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Alle {0} modeller" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Samling av {0} modeller" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomer: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "grupper: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "modell {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Vis {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Hovedmeny" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekyler" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekyl {0} ({1} atomer)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "last inn biomolekyl {0} ({1} atomer)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Ingen" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Vis kun merkede" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Omgjør valg" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Vis" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Foran" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Venstre" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Høyre" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Nederst" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Tilbake" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Ryggmarg" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Baser" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT par" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC par" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Au par" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Stil" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Kuler og pinner" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Pinner" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Tegneserie" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Spor" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Av" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "PÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Beregn" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Strukturer" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibrasjon" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektorer" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} piksler" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografisk" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etiketter" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Med atomnavn" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Med atomnummer" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Midtstilt" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Øverst til høyre" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Nederst til høyre" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Øverst til venstre" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Nederst til venstre" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Farge" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekyl" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Kjede" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Gruppe" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Svart" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Hvit" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "CyanblÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Rød" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Oransje" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Gul" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Grønn" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "BlÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Fiolett" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Lakserød" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Olivengrønn" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "GrÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Gull" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Gjør gjennomskinnelig" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Bakgrunn" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Overflater" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Akser" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Forstørr" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Zoom Inn" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Zoom Ut" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Snurr" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animasjon" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animasjonsmodus" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Spill av" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Stopp" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Spol tilbake" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Bakover" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Start pÃ¥ nytt" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identitet" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etikett" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Velg atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Velg kjede" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Velg element" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Velg gruppe" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Velg molekyl" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Vis" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "jmol skriptkonsoll" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Filinnhold" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modell" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Ã…pne valgt fil" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Ã…pne" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Skjul" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Prikket" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Pikselbredde" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Vis hydrogener" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} slettede atomer" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} forventet" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} uventet" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, fuzzy, java-format +msgid "{0} struts added" +msgstr "{0} skjulte atomer" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Fil feil:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} skjulte atomer" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} valgte atomer" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid " {0} seconds" +#~ msgstr " {0} sekunder" + +#~ msgid "Java version:" +#~ msgstr "Java versjon:" + +#~ msgid "1 processor" +#~ msgstr "1 prosessor" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB ledig" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/nl.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/nl.po new file mode 100755 index 000000000000..020a12132b87 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/nl.po @@ -0,0 +1,2641 @@ +# translation of nl.po to Nederlands +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# Egon Willighagen , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: nl\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Egon Willighagen \n" +"Language-Team: Nederlands \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: Nederlands\n" +"X-Poedit-Language: Dutch\n" +"X-Poedit-Basepath: ../../../..\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Element?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol Script Console" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Bestand" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Sluiten" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Hulp" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Zoeken..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Opdracthen" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Wiskundige &Functies" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Verander &Parameters" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Meer" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Toestand" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Uitvoeren" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Wis uitvoer" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Wis invoer" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Geschiedenis" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Laden" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"Druk CTRL-ENTER for een nieuwe regel of het plakken van data en daarna Load" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Berichten verschijnen hier. Voer commando's in via het vak hieronder. Klik " +"op de console Help menu voor meer informatie, die in een nieuwe browser-" +"scherm zal verschijnen." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol Script Editor" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Console..." + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Openen" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Voorkant" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Controleer" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Omhoog" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Stap" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pauzeren" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Hervatten" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Stoppen" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Wissen" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Sluiten" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Bestand of URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Afbeeldingstype" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG-kwaliteit ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG-compressie ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG-kwaliteit ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ja" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Nee" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Wilt u het bestand {0} overschrijven?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Waarschuwing" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Alle bestanden" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Annuleren" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Sluit Bestandskeuze" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Details" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Werkfolder" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Geselecteerde folder openen" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Eigenschappen" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Veranderd" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Onbekend formaat" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Naam" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Bestandsnaam:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Grootte" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Bestanden van het type:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Type" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Help" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Help Bestandskiezer" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Persoonlijke map" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Lijst" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Kijken in:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Fout tijdens maken van nieuwe folder" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Nieuwe folder" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Nieuw folder maken" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Geselecteerd bestand openen" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Opslaan" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Geselecteerd bestand opslaan" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Opslaan in:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Verversen" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Folderinhoud verversen" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Boven" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Eén niveau hoger" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Voorbeeld" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Modellen toevoegen" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"OPMERKING: backbone amide-waterstof posities zijn aanwezig maar worden " +"genegeerd. De posities worden bij benadering bepaald, as gebruikelijk in een " +"DSSP-analyse. Gebruik {0} om deze benadering niet te gebruiken.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"OPMERKING: aanwezige backbone amide-waterstof posities worden gebruikt. De " +"resultaten kunnen significant afwijken van een standaard DSSP-analyse. " +"Gebruik {0} om de aanwezige posities niet te gebruiken.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabisch" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturisch" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosnisch" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalaans" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Tsjechisch" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Deens" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Duits" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Grieks" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Australisch Engels" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Brits" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Amerikaans" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spaans" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estlands" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Fins" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Faroese" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Frans" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Kroatisch" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Hongaars" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armeens" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesisch" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italiaans" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japans" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javaans" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Koreaans" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Maleisisch" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Noors" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Nederlands" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitaans" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Pools" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugees" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Braziliaans" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russisch" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Sloveens" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Servisch" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Zweeds" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turks" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Oekraïns" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Vereenvoudigd Chinees" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Traditioneel Chinees" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Kon niet de Class vinden voor het krachtveld {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Geen atomen geselecteerd -- niets te doen!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomen worden geminimaliseerd." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "Kon het krachtveld {0} niet starten" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "nieuw" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "Ongedaan maken (Ctrl+Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "Opnieuw uitvoeren (Ctrl+Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "Midden" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "voeg waterstof toe" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimaliseren" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "repareer waterstof en minimaliseer" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "helder" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "bestand opslaan" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "opslagstatus" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "verander de ring stereochemie" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "verwijder atoom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "versleep naar verbinding" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "versleep atoom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "versleep atoom (en minimalizeer)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "versleep en minimalizeer molecuul (koppelen)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "verhoog lading" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "verlaag lading" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "verwijder koppeling" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "enkel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "dubbel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "driedubbel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "verhoog order" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "verlaag order" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "roteer verbinding (SHIFT+slepen)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "verlaat modelkit modus" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Ruimte groep" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Uit" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Alles" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processors" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB totaal" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maximaal" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol Script Console" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Handleiding Muiscontrole" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Translaties" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Systeem" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Geen atomen geladen" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Orientaties" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Model/Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Taal" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Op residuenaam" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Op HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Moleculaire orbitalen ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symmetrie" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Model details" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Selecteren ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Alle {0} modellen" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configuraties ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Collectie van {0} modellen" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomen: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "bindingen: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "groepen: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "ketens {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polymeren: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Orientatie {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Hoofdmenu" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomoleculen" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolecuul {0} ({1} atomen)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "Laad biomolecuul {0} ({1} atomen)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Uit" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Laat alleen Selectie zien" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Inverteer Selectie" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Orientatie" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Voorkant" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Linker kant" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Rechts" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Top" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Onderkant" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Achterkant" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Assen" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Assen" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Assen" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Assen" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Assen" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Assen" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteïne" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Zijketens" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polaire Residuen" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Niet-polaire Residuen" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Basische Residuen (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Zure Residuen (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Ongeladen Residuen" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nucleïnezuur" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Basen" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT paren" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC paren" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU paren" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Secondaire Structuur" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero-groepen" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Alle PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Al het oplosmiddel" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Al het water" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Oplosmiddel anders dan water" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM anders dan water" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Koolwaterstof" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Geen van deze" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Stijl" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Schema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK Spacefill" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Bal en staaf" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Stokjes" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Draadmodel" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Tekening" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Spoor" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomen" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Uit" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% vanderWaals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Bindingen" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Aan" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Waterstofbruggen" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Berekenen" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Kies H-bruggen van zijketens" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Kies H-bruggen van backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfide-bindingen" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Kies SS-bindingen van zijketens" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Kies SS-bindingen van backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Structuren" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Tekening" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Banden" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Tekening" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Strands" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibratie" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vectoren" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixels" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Schaal {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografisch" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Rood+Cyaan-bril" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Rood+Blauw-bril" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Rood+Groen-bril" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Kruisende Blik-modus" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Muur-kijk-modus" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Labels" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Met Symbool" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Met Atoomnaam" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Met Atoomnummber" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Positie van Label op Atoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Gecentreerd" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Rechtsboven" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Rechtsonder" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Linksboven" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Linksonder" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Kleuren" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Volgens model" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Element (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Alternatieve locatie" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molecuul" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formele lading" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Partiele lading" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatuur" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatuur (vast)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminozuur" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Keten" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Groep" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomeer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Gevormd" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Overnemen" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Zwart" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Wit" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cyaan" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Rood" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Oranje" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Geel" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Groen" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Blauw" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violet" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Zalm" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Olijfgroen" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Maroon" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Grijs" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Blauw" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Goud" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchidee" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Solide maken" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Transparant maken" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Achtergrond" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Oppervlakken" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Assen" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Boundbox" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Eenheidscel" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Inzoomen" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Inzoomen" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Uitzoomen" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Spin" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Stel X-snelheid in" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Stel Y-snelheid in" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Stel Z-snelheid in" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Stel FPS in" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animatie-modus" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Animatie-modus" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Eenmaal afspelen" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindroom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Gelusd" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Afspelen" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Stoppen" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Volgende Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Vorige Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Terugspoelen" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Achteruitspelen" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Herstarten" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Metingen" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Dubbel-klik begint en eindigt een meting" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Klik voor een afstandsmeting" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Klik voor een hoekmeting" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Klik voor een torsiehoekmeting" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Kies twee atomen om een sequentie de laten zien op de commandoregel" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Wis metingen" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Lijst van metingen" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Nanometer afstandsmaat" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Angstrom afstandsmaat" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Picometer afstandsmaat" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Kies klikvolgorde" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Gecentreerd" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identiteit" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Label" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Selecteer atoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Selecteer keten" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Selecteer element" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "verlaat modelkit modus" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Selecteer groep" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Selecteer molecuul" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Selecteer site" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Toon symetrische operatie" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Laat zien" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol Script Console" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Inhoud bestand" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Kopregels bestand" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Isosurface JVXL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Moleculaire orbitaal JVXL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientatie" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Ruimtegroep" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Huidige toestand" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Bestand" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Herlaad" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Open vanuit PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Geselecteerd bestand openen" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Openen" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Hele eenheidscel laden" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Open script" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Sla een kopie op van {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Bewaar script met status" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Bewaar script met geschiedenis" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Exporteer {0} afbeelding" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Opslaan als JMOL-bestand (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Sla JVXL iso-oppervlak" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Exporteer {0} 3D model" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Berekening" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimaliseer structuur" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Model kit" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Extraheer MOL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Puntenoppervlak" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "vanderWaalsoppervlak" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Moleculaire oppervlak" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Oplosmiddeloppervlak ({0}-Angstrom probe)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Oplosmiddeltoegankelijk oppervlak (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "{0} herladen" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Herlaad {0} + Weergeven {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Herladen + Polyhedra" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Onzichtbaar" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Puntjes" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Puntgrootte" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Angstrombreedte" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Selectiewolk" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Laat waterstoffen zien" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Laat metingen zien" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspectiefdiepte" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Rasmol-kleuren" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Info..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "scriptcompiler FOUT: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x-y-z-as verwacht" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} is niet toegestaan als een achtergrondmodel is weergegeven" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "injuist aantal parameters" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "De Miller-indices kunnen niet allemaal nul zijn." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "ongeldige [R,G,B] kleur" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "bool verwacht" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "boolean of getal verwacht" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "boolean, getal, of {0} vereist" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "kleur verwacht" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "een kleur of kleurenset (Jmol, Rasmol) is vereist" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "commando verwacht" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} of $naam of (atoomselectie) vereist" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "object niet gedefinieerd" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "overwacht einde van het script" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "geldige atoomexpressie verwacht" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "atoomexpressie of geheel getal verwacht" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "bestandsnaam verwacht" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "bestand niet gevonden" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "Ongeldige combinatie van parameters" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "te weinig parameters" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "geheel getal verwacht" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "geheel getal buiten bereik ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "ongeldig argument" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ongeldige parametervolgorde" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "commandowoord verwacht" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "geen MO-coefficienten beschikbaar" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Een MO-index van 1 tot {0} is verwacht" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "geen MO basis set of coefficienten beschikbaar voor dit frame" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "Geen MO-data beschikbaar" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Maar een moleculaire orbitaal is aanwezig in dit bestand" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} vereist dat er maar een model getoond wordt" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} vereist dat slechts een model geladen is" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Geen data beschikbaar" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Geen partiele ladingen zijn gelezen van het bestaand. Jmol heeft deze nodig " +"om MEP data te visualiseren." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Geen eenheidscel" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "getal verwacht" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "getal moet zijn ({0} of {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "getal buiten bereik ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "objectnaam verwacht na '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"Vlak verwacht -- of drie punten of een atoomexpressie of {0} or {1} or {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "naam van eigenschap verwacht" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "ruimtegroep {0} is niet bekend" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "string in haakjes verwacht" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "String-inhaakjes of geheel getal verwacht" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "te veel rotatiepunten gedefinieerd" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "te veel scriptnivo's" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "onbekend atoomeigenschap" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "onbekende bindingseigenschap" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "onbekend commando" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "ongeldige expressie" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "onbekend object" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "onbekende {0} parameter" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "onbekende {0} parameter in Jmol status script (toch gedefinieerd)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "onbekend SHOW parameter -- gebruik {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "wat opslaan? {0} of {1} \"bestandsnaam\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "script FOUT: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atomen verwijderd" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} waterstofbruggen" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "bestand {0} aangemaakt" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "ongeldige context voor {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ getal getal getal } verwacht" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "einde van commando verwacht" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "identificatie of residuespecificatie verwacht" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "ongeldige atoomspecificatie" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "ongeldige ketenspecificatie" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "ongeldige expressie woord: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "ongeldige modelspecificatie" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "missende END voor {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "getal of variabelenaam verwacht" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "residueindicator (ALA, AL?, A*) verwacht" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} verwacht" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} onverwacht" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "onbekend expressie woord: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "onbekend woord: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} stutten toegevoegd" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} bindingen verwijderd" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} nieuwe bindingen; {1} veranderd" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" +"Opmerking: Dit contact vind plaats tussen atomen uit meerdere modellen." + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Klik voor menu..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet versie {0} {1}.\n" +" \n" +"Onderdeel van het OpenScience project. \n" +"\n" +"Zie http://www.jmol.org voor meer informatie." + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Bestandsfout:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "toon recent contextmenu (klik op Jmol frank)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "wis atoom (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "verwijder binding (heeft {0} nodig)" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "pas diepte aan (achterplaat; vereist {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "verplaats atoom (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "verplaats compleet tekenobject (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "verplaats specifiek tekenpunt (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "verplaats label (heeft {0} nodig)" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "verplaats atoom en minimaliseer molecuul (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "verplaats en minimaliseer molecuul (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "verplaats geselecteerde atomen (heeft {0} nodig)" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "sleep de atomen in de Z-richting (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "vertaal navigatiepunt (vereist {0} en {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "kies een atoom" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "verbind atomen (heeft {0} nodig)" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"kies een atoom om het aan de meting toe te voegen (nadat een meting of {0} " +"is gestart)" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "kies een atoom om naar te navigeren (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "toon het volledige contextmenu" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "Draai" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "draai zijtak rond een binding (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "draau geselecteerde atomen (heeft {0} nodig)" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "roteer Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"roteer Z (horizontale beweging van de muis) of zoom (verticale beweging van " +"de muis)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "selecteer een atoom (heeft {0} nodig)" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "selecteer en sleep atomen (heeft {0} nodig)" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "deselecteer deze groep van atomen (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "selecteer GEEN (heeft {0} nodig)" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "voeg deze groep atomen toe aan de geselecteerde atoomset (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "schakel selectie (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"als alle geselecteerd zijn, deselecteer alle. Voeg anders deze groep atomen " +"toe aan de geselecteerde atoomset (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "kies een atoom om een meting te begiggen of eindigen" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zoom (langs de rechterzijde van het scherm)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "klik op twee punten om tegen de klok in rond te draaien (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"klik op twee punten om met de klok mee te rond te draaien (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "stop beweging (vereist {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "spin model (veeg en laat de muisknop tegelijk opkomen)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "vertaal" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "Vergroot" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "kies nog een atoom om het model rond een as te laten spinnen" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "kies twee atomen om het model rond een as te laten spinnen" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "kies nog een atoom om de symmetrierelatie te laten zien" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "kies twee atomen om de de symmetrierelatie te laten zien" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "logbestand veranderd naar {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} verborgen atomen" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomen geselecteerd" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Sleep om de label te verplaatsen" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "clipboard is niet toegankelijke -- gebruik de gesigneerde applet" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} waterstofatomen toegevoegd" + +#~ msgid "Hide Symmetry" +#~ msgstr "Verberg Symmetrie" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Laden Jmol applet ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} seconden" + +#~ msgid "Java version:" +#~ msgstr "Java versie:" + +#~ msgid "1 processor" +#~ msgstr "1 processor" + +#~ msgid "unknown processor count" +#~ msgstr "onbekend aantal processoren" + +#~ msgid "Java memory usage:" +#~ msgstr "Java geheugen gebruik:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB beschikbaar" + +#~ msgid "unknown maximum" +#~ msgstr "onbekend maximum" + +#~ msgid "Open file or URL" +#~ msgstr "Open bestand van URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/oc.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/oc.po new file mode 100755 index 000000000000..e9589375aed8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/oc.po @@ -0,0 +1,2603 @@ +# Occitan (post 1500) translation for jmol +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Cédric VALMARY (Tot en òc) \n" +"Language-Team: Occitan (post 1500) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Consòla d'Escript Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Tampar" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Ajuda" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "Rec&ercar..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "Co&mandas" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Foncions Matematicas" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Preferéncias & Paramètres" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Mai" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Estat" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Aviar" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Escafar la sortida" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Escafar la picada" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Istoric" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Cargar" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Editor d'escripts Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Consòla" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Dobrir" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Fàcia" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Escript" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Verificar" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Tornar amont" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Etapa" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pausa" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Contunhar" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Arrestar" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Escafar" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Tampar" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Fichièr o URL :" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Tipe d'imatge" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Qualitat JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Compression PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Qualitat PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ã’c" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Non" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Volètz espotir lo fichièr {0} ?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Avertiment" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Totes los fichièrs" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Anullar" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Detalhs" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Dorsièr" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atributs" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modificat" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Fichièr generic" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nom" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nom del fichièr :" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Talha" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Fichièrs del tipe :" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tipe" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Ajuda" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Ajuda sul selector de fichièrs" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Dorsièr personal" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Lista" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Recercar dins :" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Dorsièr novèl" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Crear un dorsièr novèl" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Dobrís lo fichièr seleccionat" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Salvar" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Salvar dins :" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Metre a jorn" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Naut" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Remontar d'un nivèl" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "D'acòrdi" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Apercebut" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Apondre los modèls" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabi" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalan" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Chèc" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danés" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Alemand" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Grèc" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Anglés britanic" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Anglés american" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Espanhòl" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonian" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francés" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Ongrés" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesian" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italian" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japonés" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Corean" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norvegian (Bokmal)" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Neerlandés" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitan" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polonés" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugués" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Portugués de Brasil" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Rus" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Eslovèn" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Suedés" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turc" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ucraïnian" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Chinés simplificat" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Chinés tradicional" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Impossible d''obténer la classa del camp de fòrça {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Cap d'atòm pas seleccionat -- pas res a far !" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atòms seràn minimizats." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Grop d'espaci" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Pas cap" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Tot" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processors" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "Total de {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "Maximum de {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Consòla d'Escript Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Manual Mirga" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Traduccions" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistèma" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Configuracions" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Modèl/Frame" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Lenga" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Per nom de residut" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Per HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informacions del modèl" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Seleccionar ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Totes los {0} modèls" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configuracions ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Colleccion de {0} modèls" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "{0} atòms" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "{0} ligams" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "{0} gropes" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "{0} cadenas" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "{0} polimèrs" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "modèl {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Veire {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menut principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomoleculas" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolecula {0} ({1} atòms)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "cargar la biomolecula {0} ({1} atòms)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Pas cap" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Afichar unicament la seleccion" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Inversar la seleccion" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Afichatge" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Fàcia" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Esquèrra" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Drecha" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Bas" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Fons" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteïna" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Colomna vertebrala" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Cadenas lateralas" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Residuts polars" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Residuts basics (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Residuts acids (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nucleïc" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "ADN" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "ARN" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Basas" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Pars AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Paras GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Paras AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Etèro" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Totes los \"HETATM\" PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Tot Solvent" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Tot Aiga" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Glucid" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Estil" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Combinason" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Bastons" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Fial de fèrre" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Dessenh animat" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Traça" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atòms" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Desactivat" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Ligams" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Activar" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Calcular" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Consòla d'Escript Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Dobrís lo fichièr seleccionat" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Dobrir" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet version {0} {1}.\n" +"\n" +"Fat partida del projècte OpenScience.\n" +"\n" +"Vejatz http://www.jmol.org per mai d'entresenhas" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Error de Fichièr :" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Hide Symmetry" +#~ msgstr "Amagar la simetria" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Cargament de l'applet Jmol ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} segondas" + +#~ msgid "Java version:" +#~ msgstr "Version de Java :" + +#~ msgid "1 processor" +#~ msgstr "1 processor" + +#~ msgid "unknown processor count" +#~ msgstr "Nombre de processors desconegut" + +#~ msgid "Java memory usage:" +#~ msgstr "Utilizacion memòria de Java" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB liures" + +#~ msgid "unknown maximum" +#~ msgstr "Maximum desconegut" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pl.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pl.po new file mode 100755 index 000000000000..39bed81f0e0e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pl.po @@ -0,0 +1,2605 @@ +# Polish translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Nicolas Vervelle \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Konsola skryptów Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Zamknij" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "Pomoc" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "Wy&szukaj..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "Pole&cenia" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Funkcje matematyczne" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Ustaw ¶metry" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "WiÄ™cej" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Edytor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Stan" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Uruchom" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Wyczyść wyniki" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Wyczyść dane wejÅ›ciowe" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historia" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "ZaÅ‚aduj" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"naciÅ›nij CTRL-ENTER żeby rozpocząć nowÄ… liniÄ™ lub wklej dane modelu i " +"wciÅ›nij przycisk ZaÅ‚aduj" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Tutaj bÄ™dÄ… wyÅ›wietlane informacje. Komendy należy wpisywać w polu poniżej. " +"Kliknij element Pomocy w konsoli aby uzyskać pomoc online (zostanie otwarte " +"okno przeglÄ…darki)" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Edytor skryptów Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsola" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Otwórz" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Przód" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skrypt" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pauza" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Wznów" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Wstrzymaj" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Wyczyść" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Zamknij" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Plik lub adres URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Typ obrazu" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Jakość JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Kompresja PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Jakość PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Tak" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Nie" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Czy chcesz nadpisać plik {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Wszystkie pliki" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Anuluj" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Zamknij okno wyboru pliku" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Szczegóły" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Folder" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Otwórz wybrany folder" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atrybuty" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Zmodyfikowany" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Plik ogólny" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nazwa" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nazwa pliku" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Rozmiar" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Pliki typu:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Typ" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Pomoc" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Pomoc okna wyboru plików" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Katalog domowy" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Lista" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Zobacz w:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "BÅ‚Ä…d podczas tworzenia nowgo folderu" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Nowy Folder" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Utwórz nowy folder" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Otwórz wybrany plik" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Zapisz" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Zapisz wybrany plik" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Zapisz w:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Aktualizacja" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Uaktualnij listÄ™ katalogów" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "W górÄ™" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "W górÄ™ o jeden poziom" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "PodglÄ…d" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "DoÅ‚Ä…cz modele" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "arabski" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "KataloÅ„ski" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Czeski" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "DuÅ„ski" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Niemiecki" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "grecki" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Brytyjski Angielski" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "AmerykaÅ„ski angielski" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "HiszpaÅ„ski" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "EstoÅ„ski" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francuski" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "WÄ™gierski" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonezyjski" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "WÅ‚oski" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "japoÅ„ski" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "KoreaÅ„ski" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norweski (Bokmal)" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Holenderski" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polski" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugalski" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brazylijski Portugalski" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Rosyjski" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "SÅ‚oweÅ„ski" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Szwedzki" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turecki" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "ukraiÅ„ski" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "ChiÅ„ski uproszczony" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "ChiÅ„ski tradycyjny" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Nie zaznaczono żadnego atomu -- brak zadaÅ„ do wykonania!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomów zostanie zminimalizowanych." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "cofnij" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "żaden" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Wszystkie" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} procesorów" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "w caÅ‚oÅ›ci {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maksimum" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Konsola skryptów Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "ObsÅ‚uga myszy" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "TÅ‚umaczenia" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Brak zaÅ‚adowanych atomów" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Konfiguracje" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Pierwiastek" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "JÄ™zyk" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informacje o modelu" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Wybierz ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Wszystkie {0} modeli" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfiguracje ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Kolekcja {0} modeli" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomy: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "wiÄ…zania: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "grupy: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "Å‚aÅ„cuchy: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polimery: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Widok {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menu główne" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "BiomolekuÅ‚y" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekuÅ‚a {0} ({1} atomy)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "Å‚aduj biomolekuÅ‚Ä™ {0} ({1} atomy)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "żaden" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "WyÅ›wietlaj tylko zaznaczone" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Odwróć zaznaczenie" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Pokaż" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Przód" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Lewo" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Prawo" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Dół" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "W tyÅ‚" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Osie" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Osie" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Osie" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Osie" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Osie" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Osie" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "BiaÅ‚ka" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Szkielet" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "ÅaÅ„cuchy boczne" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Reszty polarne" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Reszty niepolanrne" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Reszty zasadowe (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Reszty kwasowe (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Reszty pozbawione Å‚adunku" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Kwas nukleinowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Zasady" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Pary AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Pary GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Pary AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Struktura drugorzÄ™dowa" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Rozpuszczalnik bezwodny" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "wodorowÄ™glan" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Å»aden z wymienionych" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Styl" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Schemat" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Kula i kreska" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Kreski" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Obraz szkieletowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Rysunek" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Åšlad" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomy" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "WyÅ‚Ä…czone" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "WiÄ…zania" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "WÅ‚Ä…czone" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "WiÄ…zania wodorowe" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Oblicz" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "WiÄ…zania dwusiarczkowe" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Struktury" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Wibracja" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Wektory" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pikseli" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Skala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereograficzne" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Okulary Czerwono-Cyjanowe" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Okulary czerwono-Niebieskie" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Okulary Czerwono-Zielone" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Patrzenie zbieżne" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etykiety" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Z symbolem atomu" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Z nazwa atomu" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Z numerem atomu" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Ustal pozycje etykiety" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "WyÅ›rodkowanie" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Na górze po prawej" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Na dole po prawej" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Na górze po lewej" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Na dole po lewej" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Kolor" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Inna lokalizacja" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "CzÄ…steczka" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Åadunek" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Åadunek częściowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatura (WzglÄ™dna)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatura (BezwzglÄ™dna)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminokwas" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "ÅaÅ„cuch" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Grupa" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Dziedziczyć" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Czarny:" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "BiaÅ‚y" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Cyjan" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Czerwony" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "PomaraÅ„czowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Żółty" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Zielony" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Niebieski" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indygo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Fioletowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Åososiowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Oliwkowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Kasztanowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Szary" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Niebieski Å‚upkowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "ZÅ‚oty" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orchidowy" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Nieprzezroczystosty" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Przezroczysty" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "TÅ‚o" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Powierzchnie" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Osie" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "PowiÄ™kszenie" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "PowiÄ™ksz" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Pomniejsz" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Ilość klatek na sekundÄ™" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animacja" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Tryb animacji" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Odtwórz raz" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "ZapÄ™tlanie" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Odtwórz" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Stop" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Nastepna klatka" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Poprzednia klatka" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "PrzewiÅ„ w tyÅ‚" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Odwróć" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Restartuj" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Pomiary" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Podwójne klikniÄ™ce rozpoczyna i koÅ„czy pomiary" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Kliknij dla pomiaru odlegÅ‚oÅ›ci" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Kliknij dla pomiaru kÄ…ta" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "UsuÅ„ pomiary" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Pokaż pomiary" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Pomiar w nanometrach" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Pomiar w Angstroemach" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Pomiar w pikometrack" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "WyÅ›rodkuj" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identyfikacja" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etykieta" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Wyberz atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Wybierz Å‚aÅ„cuch" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Wybierz element" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Wybierz grupÄ™" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Wybierz czÄ…steczkÄ™" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Pokaż" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Konsola skryptów Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Zawartość pliku" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Nagłówek pliku" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientacja" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Bieżący stan" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Otwórz wybrany plik" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Otwórz" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "WydobÄ…dź dane MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "PrzeÅ‚aduj {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Ukryj" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Kropki" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Pokaż Wodory" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Pokaż Pomiary" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "GÅ‚Ä™bokość perspektywy" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Kolory RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "niewÅ‚aÅ›ciwy kolor [R, G, B]" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "oczekiwano koloru" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "nieoczekiwany koniec skryptu" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "oczekiwano nazwy pliku" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "nie odnaleziono pliku" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "niepoprawne argumenty" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "niewystarczajÄ…ce argumenty" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "bÅ‚Ä™dny argument" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Beak dostepnych danych" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "oczekiwano liczby" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "nierozpoznany obiekt" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "BÅÄ„D skryptu: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atomy usuniÄ™to" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} wiÄ…zania wodorowe" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ number number number } oczekiwano" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, fuzzy, java-format +msgid "{0} struts added" +msgstr "{0} atomy ukryte" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Aplet Jmol wersja {0} {1}.\n" +"\n" +"Projek OpenScience.\n" +"\n" +"WiÄ™cej informacji na http://www.jmol.org" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "BÅ‚Ä…d pliku:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "wybierz atom aby obrócić model wokół osi" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "wybierz dwa atomy aby obrócić model wokół osi" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atomy ukryte" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomy wybrane" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Åadowanie apletu Jmol" + +#~ msgid " {0} seconds" +#~ msgstr " {0} sekund" + +#~ msgid "1 processor" +#~ msgstr "1 procesor" + +#~ msgid "unknown processor count" +#~ msgstr "nieznana liczba procesorów" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB wolnych" + +#~ msgid "unknown maximum" +#~ msgstr "maksimum nieznane" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pt.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pt.po new file mode 100755 index 000000000000..b09bbd164362 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pt.po @@ -0,0 +1,2611 @@ +# Copyright (C) 2005 +# This file is distributed under the same license as the Jmol package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Nicolas Vervelle \n" +"Language-Team: Portugal@Folding \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Country: Portugal\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Basepath: ../../../..\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Consola de Script Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Fechar" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Ajuda" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Localizar" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Comandos" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Funções Matemáticas" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Definir &Parâmetros" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Mais" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Estado" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Executar" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Limpar Output" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Limpar Output" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Histórico" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Carregar" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"Clique em CTRL-ENTER para uma nova linha ou cole os dados do modelo e clique " +"em Carregar" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"As mensagens aparecem aqui. Introduza os comandos na caixa abaixo. Clique no " +"menú Ajuda para obter ajuda on-line, a qual aparecerá numa nova janela do " +"browser." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Editor de Script Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Consola" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Abrir" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Frente" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Script" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Verificar" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Passo" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pausa" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Resumir" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Parar" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Limpar" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Fechar" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Ficheiro ou URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Tipo de Imagem" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Qualidade JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Compressão PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Qualidade PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Sim" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Não" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Pretende substituir o ficheiro {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Aviso" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Todos os Ficheiros" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Cancelar" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Detalhes" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Directório" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Abrir directório seleccionado" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atributos" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modificado" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Ficheiro genérico" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nome" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nome do Ficheiro:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Tamanho" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Ficheiros do Tipo:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tipo" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Ajuda" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Ajuda do FileChooser" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Início" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Listar" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Procurar em:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Erro ao criar nova pasta" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Nova Pasta" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Criar Nova Pasta" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Abrir ficheiro seleccionado" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Guardar" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Guardar ficheiro seleccionado" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Guardar Em:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Actualizar" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Actualizar lista de ficheiros" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Para cima" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Subir Um Nível" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Pré-visualizar" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Anexar modelos" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Ãrabe" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalão" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Checo" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Dinamarquês" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Alemão" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Grego" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Inglês de Inglaterra" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Inglês Americano" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Espanhol" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estónio" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francês" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Húngaro" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonésio" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italiano" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japonês" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Coreano" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norueguês Bokmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Holandês" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polaco" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Português" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Português do Brasil" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russo" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Esloveno" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Sueco" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turco" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ucraniano" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Chinês Simplificado" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Chinês Tradicional" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Nenhum átomo seleccionado -- nada a fazer!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Nenhum" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Todos" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processadores" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB totais" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB Máximo" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Consola de Script Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Traduções" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistema" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Nenhum átomo foi carregado" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Configurações" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Idioma" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Por nome do resíduo" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Por HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informação do Modelo" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Seleccionar ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Todos {0} modelos" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configurações ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Collecção de {0} modelos" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "átomos: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "ligações: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "grupos: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "cadeias: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polímeros: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "modelo {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Ver {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menu Principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomoléculas" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolécula {0} ({1} átomos)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "carregar biomolécula {0} ({1} átomos)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Nenhum" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Mostrar Somente as Escolhas" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Inverter Selecção" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Visualizar" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Frente" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Esquerda" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Direita" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Fundo" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Retroceder" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteína" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Esqueleto/Cadeia principal/raiz" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Cadeias laterais" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Resíduos polares" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Resíduos apolares" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Resíduos básicos (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Resíduos acídicos (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Resíduos não carregados" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nucleico" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "ADN" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "ARN" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Bases" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Pares AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Pares GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "ParesAU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Estrutura Secundária" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Apenas Solvente" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Apenas Ãgua" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Solvente não aquoso" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligando" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Carbohidrato" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Nenhum dos acima seleccionados" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Estilo" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Esquema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Espaço de preenchimento (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Bola ou barra" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Barras" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Ligarframe" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Desenho" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Traçar" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Ãtomos" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Off" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Ligações" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "On" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Ligações de Hidrogénio" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Calcular" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Definir Ligações-H das cadeias laterais" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Definir Ligações-H da cadeia principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Ligações Disulito" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Definir Ligações-SS das cadeias lateriais" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Definir Ligações-SS da cadeia principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Estruturas" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Tiras" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Foguetes" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibração" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vectores" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} píxeis" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Escala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Estereográfico" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Óculo Vermelho+Turquesa" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Óculo Vermelho+Azul" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Óculo Vermelho+Verde" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Visualização 'Cross-eyed'" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Visualização 'Wall-eyed'" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etiquetas" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Com o Símbolo do Elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Com o Nome do Ãtomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Com o Número do Ãtomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Colocar etiqueta em átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Centrado" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Em cima, à Direita" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Em baixo, à Direita" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Em Cima, à Direita" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Em Baixo, à Esquerda" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Cor" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Por Esquema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Elemento (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Localização Alternativa" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molécula" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Carga Formal" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Carga Parcial" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatura (Relativa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatura (Fixa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminoácido" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Cadeia" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Grupo" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monómero" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Inato" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Preto" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Branco" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Ciano" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Vermelho" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Laranja" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Amarelo" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Verde" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Azul" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violeta" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmão" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Azeitona" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Castanho" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "'Slate Blue'" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Dourado" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orquídea" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Tornar Opaco" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Tornar Translúcido" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Fundo" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Superfícies" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Caixa de ligação" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Célula Unitária" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Aumentar Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Diminuir Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Spin" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Definir X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Definir Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Definir Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Definir FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animação" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Modo de Animação" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Reproduzir/tocar uma vez" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "palindroma" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Curva" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Reproduzir" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Para" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Frame seguinte" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Frame anterior" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Rebobinar" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Inverter" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Reiniciar" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Medidas" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Clique para medir o ângulo" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Apagar medições" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Listar medições" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Unidades de distância em picómetros" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identidade" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Seleccionar átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Seleccionar cadeia" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Seleccionar molécula" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Consola de Script Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modelo" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientação" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Abrir ficheiro seleccionado" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Abrir" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Superfície Molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Esconder" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Tracejado" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Tamanho do pixel" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Tamanho Angstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Mostrar Hidrogénios" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Mostrar medições" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Profundidade da perspectiva" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Cores RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "eixo x y z esperado" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Ãndices de Miller não podem ser todos iguais a zero" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "cor esperada" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "ficheiro não encontrado" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "argumentos incompatíveis" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "argumentos insuficientes" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "esperado inteiro" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "argumento inválido" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Apenas uma orbital molecular está disponível neste ficheiro" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "número experado" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "parâmetro {0} não reconhecido" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} esperado" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} inesperado" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet versão {0} {1}.\n" +"Um projecto OpenScience.\n" +"Ver http://www.jmol.org para mais informação" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Erro no ficheiro..." + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} átomos seleccionados" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Hide Symmetry" +#~ msgstr "Esconder Simetria" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "A carregar a applet Jmol ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} segundos" + +#~ msgid "Java version:" +#~ msgstr "Versão Java:" + +#~ msgid "1 processor" +#~ msgstr "1 processador" + +#~ msgid "Java memory usage:" +#~ msgstr "Utilização de memória Java:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB livres" + +#~ msgid "unknown maximum" +#~ msgstr "máximo desconhecido" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pt_BR.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pt_BR.po new file mode 100755 index 000000000000..7fdaf24d102a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/pt_BR.po @@ -0,0 +1,2633 @@ +# Copyright (C) 2005 +# This file is distributed under the same license as the Jmol package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2022-02-14 23:16-0300\n" +"Last-Translator: Sérgio Ceroni da Silva \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Poedit 3.0.1\n" +"X-Poedit-Basepath: ../../../..\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "Gostaria de substituir o modelo atual por aquele selecionado?" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Elemento?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Console de \"scripts\" Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "Gravar como..." + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "Arquivo" + +#: org/jmol/console/GenericConsole.java:92 +msgid "&Close" +msgstr "Fe&char" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "A&juda" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Pesquisar..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Comandos" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "&Funções matemáticas" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Definir &parâmetros" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Mais" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Editor" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Estado" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Executar" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Apagar a saída de dados" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Apagar a entrada de dados" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Histórico" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Carregar" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"pressione CTRL-ENTER para uma nova linha ou cole os dados do modelo e " +"pressione Carregar" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Mensagens aparecerão aqui. Entre com os comandos na caixa abaixo. Clique no " +"menu de ajuda do console para ajuda via Internet, a qual será mostrada em " +"nova janela do navegador." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Editor de \"script\" do Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Console" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Abrir" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "Fonte" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "\"Script\"" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Conferir" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Início" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Passo" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Pausa" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Continuar" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Parar" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Apagar" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Fechar" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Arquivo ou URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Tipo de imagem" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Qualidade JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Compressão PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Qualidade PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Sim" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Não" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Deseja sobrescrever o arquivo {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Aviso" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Todos os arquivos" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Cancelar" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Cancelar diálogo do selecionador de arquivo" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Detalhes" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Pasta" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Abrir a pasta selecionada" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Atributos" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Modificado" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Arquivo genérico" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Nome" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Nome do arquivo:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Tamanho" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Arquivos do tipo:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tipo" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Ajuda" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Ajuda do Selecionador de Arquivo" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Início" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Listar" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Procurar em:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Erro ao criar pasta nova" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Pasta nova" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Criar pasta nova" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Abrir arquivo selecionado" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Gravar" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Gravar arquivo selecionado" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Gravar em:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Atualizar" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Atualizar listagem de pasta" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Acima" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Um nível acima" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Pré-visualizar" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Anexar modelos" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "\"Cartoons\" PDB" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"NOTA: posições contendo hidrogênio das amidas na espinha estão presentes e " +"serão ignoradas. Suas posições serão calculadas de acordo com uma análise " +"DSSP padrão.\n" +"Utilize {0} se não quiser usar este cálculo aproximado.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"NOTA: posições contendo hidrogênio das amidas na espinha estão presentes e " +"serão utilizadas. Os resultados podem diferir bastante da análise DSSP " +"padrão.\n" +"Utilize {0} para ignorar estas posições de hidrogênio.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Ãrabe" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturiano" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "Azerbaijano" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bósnio" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Catalão" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Tcheco" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Dinamarquês" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Alemão" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Grego" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Inglês australiano" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Inglês britânico" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Inglês americano" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Espanhol" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estoniano" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "Basco" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finlandês" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Feroês" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Francês" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frísio" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Galego" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Croata" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Húngaro" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armênio" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonésio" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italiano" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japonês" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javanês" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Coreano" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malasiano" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Bokmal Norueguês" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Holandês" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitano" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polonês" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Português" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Português brasileiro" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Russo" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Esloveno" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Sérvio" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Sueco" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tâmil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turco" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uigur" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ucraniano" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Usbesquistano" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Chinês simplificado" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Chinês tradicional" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Não foi possível obter a classe para o campo de força {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Nenhum átomo selecionado -- nada a fazer!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} átomo(s) será(ão) minimizado(s)" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "não foi possível configurar o campo de força {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "novo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "desfazer (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "refazer (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "centralizar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "adicionar hidrogênios" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimizar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "reparar hidrogênios e minimizar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "limpar" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "gravar arquivo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "gravar instantâneo do estado" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "inverter a estereoquímica do anel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "remover átomo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "arrastar para fazer a ligação" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "arrastar o átomo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "arrastar o átomo (e minimizar)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "arrastar a molécula (ALT para girar)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "arrastar e minimizar a molécula (ancoragem)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "aumentar carga" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "diminuir carga" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "remover ligação" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "ligação simples" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "ligação dupla" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "ligação tripla" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "aumentar ordem de ligações" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "diminuir ordem de ligações" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "girar a ligação (SHIFT-arrastar)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "sair do modo \"modelkit\"" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Grupo Espacial" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "nenhum" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Todos" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processadores" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB total" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB máximo" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "sem capturar" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "Comandos de \"script\" Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Manual do \"mouse\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Traduções" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistema" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Nenhum átomo foi carregado" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Configurações" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Modelo/Quadro" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Idioma" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Por nome do resíduo" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Por HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Orbitais moleculares ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informações do modelo" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Selecionar ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Todos os {0} modelos" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Configurações ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Coleção de {0} modelos" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "átomos: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "ligações: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "grupos: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "cadeias: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polímeros: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "modelo {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Visualizar {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Menu Principal" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomoléculas" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolécula {0} ({1} átomos)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "carregar biomolécula {0} ({1} átomos)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Nenhum" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Mostrar somente os selecionados" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Inverter seleção" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Visualização" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "Ótima" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Frontal" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Lateral esquerda" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Lateral direita" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Topo" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Inferior" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Trazeira" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "Eixo x" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "Eixo y" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "Eixo z" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "Eixo a" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "Eixo b" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "Eixo c" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "Cenas" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Proteína" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Espinha" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Cadeias laterais" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Resíduos polares" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Resíduos apolares" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Resíduos básicos (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Resíduos ácidos (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Resíduos sem carga" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Ãcido Nucleico" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Bases" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Pares AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Pares GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Pares AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Estrutura secundária" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Todos os \"HETATM\" do PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Todo o solvente" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Toda a água" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Solvente não aquoso" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "HETATM não aquoso" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligante" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Glicídio" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Nenhum dos anteriores" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Estilo" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Esquema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Preenchimento CPK" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Esferas e Varetas" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Varetas" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Arames" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Desenhos" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Traçados" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Ãtomos" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Desligado" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Ligações" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Ligado" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Pontes de Hidrogênio" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Calcular" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Definir pontes de H (cadeias laterais)" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Definir pontes de H (espinha)" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Pontes dissulfeto" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Definir pontes SS (cadeias lateriais)" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Definir pontes SS (espinha)" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Estruturas" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Desenhos e Foguetes" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Fitas" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Foguetes" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Tiras" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibração" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vetores" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Espectro" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixel(éis)" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Escala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Visão estereográfica" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Óculos Vermelho+Ciano" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Óculos Vermelho+Azul" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Óculos Vermelho+Verde" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Visualização \"estrábica\" convergente" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Visualização \"estrábica\" divergente" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Rótulos" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Com símbolo do elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Com nome do átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Com número do átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Posicionar rótulo no átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Centralizado" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Superior direito" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Inferior direito" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Superior esquerdo" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Inferior esquerdo" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Cor" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Por esquema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Elemento (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Localização alternativa" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molécula" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Carga formal" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Carga parcial" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatura (Relativa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatura (Fixa)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminoácido" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Cadeia" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Grupo" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monômero" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Formato" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Herdar" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Preto" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Branco" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Ciano" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Vermelho" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Laranja" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Amarelo" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Verde" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Azul" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Ãndigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violeta" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Salmão" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Verde-oliva" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Marrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Acinzentado" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Azul-acinzentado" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Dourado" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Roxo" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Tornar opaco" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Tornar translúcido" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Fundo" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Superfícies" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Eixos" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Caixa limitante" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Cela unitária" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zoom" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Zoom [+]" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Zoom [-]" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Rotação" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Definir taxa X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Definir taxa Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Definir taxa Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Definir FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animação" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Modo de animação" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Reproduzir uma vez" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palíndromo (vai-volta)" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Repetição" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Reproduzir" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Parar" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Próximo quadro" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Quadro anterior" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Rebobinar" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Reverter" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Reiniciar" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Medições" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Clique duplo inicia e termina todas as medições" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Clique para medição de distância" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Clique para medição de ângulo" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Clique para medição da torção (diédrica)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Clique em dois átomos para exibir uma sequência no console" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Remover medições" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Listar medições" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Unidade de distância em nanômetros" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Unidade de distância em Angstroms" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Unidade de distância em picometros" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Definir modo de seleção" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Centralizar" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identidade" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Rotular" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Selecionar átomo" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Selecionar cadeia" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Selecionar elemento" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "modo \"modelKit\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Selecionar grupo" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Selecionar molécula" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Selecionar sítio" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Mostrar operação de simetria" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Exibir" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "Console do JavaScritp" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Conteúdo do arquivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Cabeçalho do arquivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Dados JVXL da isosuperfície" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Dados JVXL do orbital molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modelo" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientação" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Grupo Espacial" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Estado atual" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Arquivo" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "Exportar" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Recarregar" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Abrir de arquivo PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "Abrir arquivo local" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "Abrir URL" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Carregar cela unitária completa" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Abrir \"script\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "Capturar" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "Capturar balanço" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "Capturar rotação" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "Iniciar captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "Finalizar captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "Desabilitar captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "Habilitar novamente captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "Definir taxa de repetição da captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "Ligar/desligar repetição da captura" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Gravar uma cópia de {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Gravar \"script\" com estado" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Gravar \"script\" com histórico" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Exportar {0} imagem" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Gravar como PNG/JMOL (imagem+zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Gravar isosuperfície JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Exportar {0} modelo(s) 3D" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Computação" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Otimizar estrutura" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Kit de modelagem" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Extrair dados MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Superfície pontilhada" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "Superfície de van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Superfície molecular" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Superfície de solvente (sonda de {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Superfície acessível ao solvente (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "Potencial Eletrostático Molecular - MEP (TODAS as faixas)" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "Potencial Eletrostático Molecular - MEP (faixa de -0.1 a 0.1)" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Recarregar {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Recarregar {0} + Mostrar {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Recarregar + poliédro" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Ocultar" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Pontilhado" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Espessura (pixel)" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Espessura (Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Halos de seleção" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Exibir Hidrogênios" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Exibir medições" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Profundidade de perspectiva" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Cores conforme RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Sobre..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "ERRO no compilador de \"script\": " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "esperado um eixo x y z" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} não é permitido com o modelo de fundo sendo mostrado" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "número de argumentos errôneo" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Ãndices Miller não podem ser todos iguais a zero." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "cor [R,G,B] errônea" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "esperado um booleano" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "esperado um booleano ou um número" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "esperado um booleano, um número ou um {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "valor não pode ser definido" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "esperada uma cor" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "uma cor ou nome de paleta (Jmol, Rasmol) é necessária" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "esperado um comando" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "necessário {x y z} ou $name ou (atom expression)" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "objeto de desenho não definido" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "comando de término de \"script\" não esperado" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "esperada uma (atom expression) válida" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "esperada uma (atom expression) ou número inteiro" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "esperado um nome de arquivo" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "arquivo não encontrado" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "argumentos incompatíveis" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "argumentos insuficientes" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "esperado um número inteiro" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "número inteiro fora de limite ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "argumento inválido" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ordem de parâmetros inválida" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "esperada uma palavra-chave" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "nenhum dado de coeficiente MO está disponível" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Um índice MO de 1 a {0} é necessário" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "nenhum dado de base/coeficiente MO está disponível para este quadro" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "nenhum dado de utilização MO está disponível" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Somente um Orbital Molecular (MO) está disponível neste arquivo" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} requer que somente um modelo seja mostrado" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} requer que só um modelo seja carregado" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Nenhum dado disponível" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Nenhuma carga parcial foi lida do arquivo; Jmol necessita isto para gerar os " +"dados de MEP." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Sem cela unitária" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "esperado um número" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "número deve ser ({0} ou {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "número decimal fora de limite ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "esperado um nome de objeto depois de '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"esperado um plano -- três pontos ou uma \"atom expression\" ou {0} ou {1} ou " +"{2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "esperado um nome de propriedade" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "o Grupo Espacial {0} não foi encontrado." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "esperado um conjunto de caracteres entre aspas" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "esperado um conjunto de caracteres entre aspas ou um identificador" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "especificados excessivos pontos de rotação" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "excessivos níveis de \"script\"" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "propriedade de átomo não identificável" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "propriedade de ligação não identificável" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "comando não identificável" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "expressão não identificável durante a execução" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "objeto não identificável" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "parâmetro {0} não identificável" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"parâmetro {0} não identificável no \"script\" de estado do Jmol (mesmo assim " +"foi definido)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "parâmetro SHOW não identificável -- usar {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "escrever o quê? {0} ou {1} \"nome-de-arquivo\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "ERRO no \"script\": " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "mostrar gravado: {0}" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} átomo(s) removido(s)" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} ponte(s) de Hidrogênio" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "criado o arquivo {0}" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "para continuar, entre: &{0}" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "contexto inválido para {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "esperado { número número número }" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "esperado um término de expressão" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "esperado um identificador ou especificação de resíduo" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "especificação de átomo inválida" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "especificação de cadeia inválida" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "símbolo de expressão inválido: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "especificação de modelo inválido" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "END faltando para {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "esperado um número ou um nome de variável" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "esperada uma especificação de resíduo (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "esperado(a) {0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "não esperado(a) {0}" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "símbolo de expressão não identificável: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "símbolo não identificável: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "{0} carga(s) modificada(s)" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} estrutura(s) adicionada(s)" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "Observação: habilitar repetição usando {0}" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "Atraso na animação baseado em: {0}" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} conexão(ões) removida(s)" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} ligação(ões) nova(s); {1} modificada(s)" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Observação: mais que um modelo está envolvido neste contato!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Clicar para ver menu..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet versão {0} {1}.\n" +"\n" +"Um projeto OpenScience.\n" +"\n" +"Consulte http://www.jmol.org para mais informações" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Erro no arquivo:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "designar/criar novo átomo ou ligação (requer {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "menu de contexto recente em janela extra (clicar em Jmol frank)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "remover átomo (requer {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "remover ligação (requer {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "ajustar profundidade (plano trazeiro; requer {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "mover átomo (requer {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "mover todo o objeto \"DRAW\" (requer {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "mover um ponto \"DRAW\" específico (requer {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "mover rótulo (requer {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "mover átomo e minimizar molécula (requer {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "mover e minimizar a molécula (requer {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "mover os átomos selecionados (requer {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "arrastar átomos na direção Z (requer {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simular multitoque usando o \"mouse\")" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "mover ponto de navegação (requer {0} e {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "selecionar um átomo" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "conectar átomos (requer {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "selecione um ponto de isosuperfície (requer {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "selecione um rótulo para alternar entre escondido/visível (requer {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"selecione um átomo para incluí-lo em uma medição (após iniciar a medição ou " +"após {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "selecione um ponto ou um átomo ir (requer {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "selecione um ponto DRAW (para medições) (requer {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "menu de contexto completo em janela extra" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "reiniciar (quando clicado fora do modelo)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "girar" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "girar estrutura em torno da ligação (requer {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "girar os átomos selecionados (requer {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "girar no eixo Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"girar no eixo Z (movimento horizontal do \"mouse\") ou zoom (movimento " +"vertical do \"mouse\")" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "selecionar um átomo (requer {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "selecionar e arrastar átomos (requer {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "cancelar a seleção deste grupo de átomos (requer {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "selecionar NENHUM (requer {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" +"adicionar este grupo de átomos ao conjunto de átomos selecionados (requer " +"{0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "marcar/desmarcar seleção (requer {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"se todos estão selecionados, cancelar a seleção; senão, adicionar este grupo " +"de átomos ao conjunto de átomos selecionados (requer {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "selecione um átomo para iniciar ou concluir uma medição" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "ajustar fatia (plano frontal; requer {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "mover fatia/profundidade (ambos os planos; requer {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zoom (ao longo da borda direita da janela)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"clique em dois pontos para girar o eixo no sentido anti-horário (requer {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"clique em dois pontos para girar o eixo no sentido horário (requer {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "parar movimento (requer {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"girar o modelo (deslize e solte o botão e pare o movimento simultaneamente)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "translação" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zoom" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" +"selecione um átomo adicional para poder girar o modelo em torno de um eixo" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "selecione dois átomos para poder girar o modelo em torno de um eixo" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "selecione um átomo adicional para mostrar a relação de simetria" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "selecione dois átomos para mostrar a relação de simetria entre eles" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "cancelado" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "{0} gravado(s)" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Arquivo de log definido para {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Impossível definir caminho para arquivo de log." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} átomo(s) oculto(s)" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} átomo(s) selecionado(s)" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Arraste para mover rótulo" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "área de transferência não está acessível -- use o \"applet\" assinado" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} hidrogênio(s) adicionado(s)" + +#~ msgid "Hide Symmetry" +#~ msgstr "Ocultar Simetria" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Carregando o mini-aplicativo Jmol ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} segundos" + +#~ msgid "Java version:" +#~ msgstr "Versão do Java:" + +#~ msgid "1 processor" +#~ msgstr "1 processador" + +#~ msgid "unknown processor count" +#~ msgstr "número de processadores desconhecido" + +#~ msgid "Java memory usage:" +#~ msgstr "Memória usada pelo Java:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB livre(s)" + +#~ msgid "unknown maximum" +#~ msgstr "máximo desconhecido" + +#~ msgid "Open file or URL" +#~ msgstr "Abrir arquivo ou URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ru.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ru.po new file mode 100755 index 000000000000..406505b8c1cb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ru.po @@ -0,0 +1,2636 @@ +# Russian translation for jmol +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2016-03-26 17:00+0200\n" +"Last-Translator: Ivlev Denis \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Poedit 1.8.7\n" +"Language: ru\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "Хотите заменить текущую модель выбранной?" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Элемент?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "КонÑоль Ñценариев Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Файл" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Закрыть" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Справка" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&ПоиÑк..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Команды" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Матем. &функции" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Применить &параматры" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Больше" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Редактор" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "СоÑтоÑние" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Выполнить" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "ОчиÑтить вывод" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "ОчиÑтить ввод" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "ИÑториÑ" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Загрузить" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"нажмите CTRL-ENTER Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð° новой Ñтроки или вÑтавьте данные модели и " +"нажмите Загрузить" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"ЗдеÑÑŒ будут поÑвлÑÑ‚ÑŒÑÑ ÑообщениÑ. Вводите команды в поле ниже. Чтобы " +"получить помощь онлайн, выберите пункт меню конÑоли Справка, и она откроетÑÑ " +"в новом окне браузера." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Редактор Ñценариев Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "КонÑоль" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Открыть" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Спереди" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Сценарий" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Проверить" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Ðаверх" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Шаг" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "ПриоÑтановить" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Продолжить" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Завершить работу" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "ОчиÑтить" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Закрыть" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Файл или URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Тип изображениÑ" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "КачеÑтво JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Сжатие PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "КачеÑтво PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Да" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Ðет" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Хотите перезапиÑать файл {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Предупреждение" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Ð’Ñе файлы" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Отмена" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Прервать диалог выбора файла" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Подробно" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Папка" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Открыть выбранную папку" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "СвойÑтва" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Изменён" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Общий файл" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Ðазвание" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Размер" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Файлы типа:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Тип" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Справка" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Помощь окна выбора файла" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Ðачало" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "СпиÑок" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "ИÑкать в:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ папки" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "ÐÐ¾Ð²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Создать папку" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Открыть выбранный файл" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Сохранить" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Сохранить выбранный файл" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Сохранить в:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Обновить" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Обновить папку" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Вверх" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Вверх на один уровень" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "ПредпроÑмотр" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Добавить модели" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "ПредпроÑмотр PDB " + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"ЗÐМЕЧÐÐИЕ: ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð°Ñ‚Ð¾Ð¼Ð¾Ð² водорода в амидных группах Ñкелета уÑтановлены, " +"но будут игнорированы. Их позиции будут вычиÑлены приблизительно, как в " +"Ñтандартном анализе DSSP.\n" +"ИÑпользуйте {0}, чтобы не применÑÑ‚ÑŒ Ñту аппрокÑимацию.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"ЗÐМЕЧÐÐИЕ: ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð°Ñ‚Ð¾Ð¼Ð¾Ð² водорода в амидных группах Ñкелета уÑтановлены и " +"будут иÑпользоватьÑÑ. Результаты могут значительно отличатьÑÑ Ð¾Ñ‚ " +"Ñтандартного анализа DSSP.\n" +"ИÑпользуйте {0}, чтобы игнорировать Ñти позиции атомов водорода.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "ÐрабÑкий" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "ÐÑтурианÑкий" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "ÐзербайджанÑкий" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "БоÑнийÑкий" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "КаталанÑкий" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "ЧешÑкий" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "ДатÑкий" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Ðемецкий" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "ГречеÑкий" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "ÐвÑтралийÑкий английÑкий" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "БританÑкий английÑкий" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "ÐмериканÑкий английÑкий" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "ИÑпанÑкий" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "ЭÑтонÑкий" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "БаÑкÑкий" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "ФинÑкий" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "ФарерÑкий" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "ФранцузÑкий" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "ФризÑкий" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "ГалиÑийÑкий" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "ХорватÑкий" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "ВенгерÑкий" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "ÐрмÑнÑкий" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "ИндонезийÑкий" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "ИтальÑнÑкий" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "ЯпонÑкий" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "ЯванÑкий" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "КорейÑкий" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "МалайÑкий" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "ÐорвежÑкий (букмол)" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "ГолландÑкий" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "ОкÑитанÑкий" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "ПольÑкий" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "ПортугальÑкий" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "БразильÑкий португальÑкий" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "РуÑÑкий" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "СловенÑкий" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "СербÑкий" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "ШведÑкий" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "ТамильÑкий" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Телугу" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Турецкий" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "УйгурÑкий" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "УкраинÑкий" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "УзбекÑкий" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Упрощённый китайÑкий" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Традиционный китайÑкий" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Ðе удалоÑÑŒ получить клаÑÑ Ð´Ð»Ñ Ñилового Ð¿Ð¾Ð»Ñ {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Ðтомы не выбраны — нечего делать!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} атомов будут минимизированы." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "невозможно уÑтановить Ñиловое поле {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "новый" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "отменить (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "повторить (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "по центру" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "добавить атомы водорода" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "Ñвернуть" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "зафикÑировать атомы водорода и Ñвернуть" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "очиÑтить" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "Ñохранить файл" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "Ñохранить ÑоÑтоÑние" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "Обратить Ñтереохимию кольца" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "удалить атом" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "перетащить Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑвÑзи" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "перетащить атом" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "перетащить атом (и минимизировать)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "перетащить молекулу (ALT Ð´Ð»Ñ Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "перетащить и минимизировать молекулу (докинг)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "увеличить зарÑд" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "уменьшить зарÑд" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "удалить ÑвÑзь" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "одинарнаÑ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "двойнаÑ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "тройнаÑ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "увеличить порÑдок" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "уменьшить порÑдок" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "повернуть ÑвÑзь (SHIFT-ТЯÐУТЬ)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "выйти из режима моделированиÑ" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "ПроÑтранÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Ðичего" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Ð’Ñе" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} процеÑÑоров" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} МБ вÑего" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} МБ макÑимум" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "не захватываю" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "Команды Ñценариев Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "РуководÑтво по работе Ñ Ð¼Ñ‹ÑˆÑŒÑŽ" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Переводы" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "СиÑтема" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Ðтомы не загружены" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Конфигурации" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Элемент" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Модель/Структура" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Язык" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "По названию оÑтатка" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "По HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "МолекулÑрные орбитали ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "СимметриÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ модели" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Выберите ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Ð’Ñе {0} моделей" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Конфигурации ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ð¸Ð· {0} моделей" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "атомов: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "ÑвÑзей: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "групп: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "цепей: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "полимеров: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "модель {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Вид {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Главное меню" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Биомолекулы" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "биомолекула {0} ({1} атомов)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "загрузить биомолекулу {0} ({1} атомов)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Ðичего" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Отображать только выделенное" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Обратить выделение" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Вид" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "Ðаилучший" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Спереди" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Слева" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Справа" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Сверху" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Снизу" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Сзади" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "ОÑÑŒ Ñ…" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "ОÑÑŒ y" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "ОÑÑŒ z" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "ОÑÑŒ а" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "ОÑÑŒ b" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "Axis c" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "Сцены" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Белок" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "КаркаÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Боковые цепи" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "ПолÑрные оÑтатки" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "ÐеполÑрные оÑтатки" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "ОÑнòвные оÑтатки (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "КиÑлотные оÑтатки(-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "ÐезарÑженные оÑтатки" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Ðуклеиновые" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "ДÐК" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "РÐК" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "ОÑнованиÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Пары AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Пары GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Пары AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Ð’Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð°Ñ Ñтруктура" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Гетеро" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Ð’Ñе \"HETATM\" из PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Ð’Ñе молекулы раÑтворителÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Ð’Ñе молекулы воды" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Ðеводный раÑтворитель" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Ðеводный HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Лиганд" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Углеводы" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Ðичего из перечиÑленного" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Стиль" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Схема" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "СРК полуÑферичеÑÐºÐ°Ñ (Стюарта-Бриглеба)" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "ШароÑтержневаÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "СтержневаÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "КаркаÑнаÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "КомикÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "След" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Ðтомы" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Выкл" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% Ван-дер-ВаальÑова радиуÑа" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "СвÑзи" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Вкл." + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Водородные ÑвÑзи" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "РаÑÑчитать" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Показывать Ð-ÑвÑзи как идущие от боковых групп" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Показывать Ð-ÑвÑзи как идущие от Ñкелета" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "ДиÑульфидные моÑтики" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Показывать SS-ÑвÑзи как идущие от боковых групп" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Показывать SS-ÑвÑзи как идущие от Ñкелета" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Структуры" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "КомикÑ+ракеты" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Ленты" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Ракеты" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Ðити" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "ВибрациÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Векторы" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Спектры" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "ЯМР 1H" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "ЯМР 13С" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} пикÑелей" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "МаÑштаб {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "СтереографичеÑкаÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Очки КраÑный+Голубой" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Очки КраÑный+Синий" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Очки КраÑный+Зелёный" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Метод перекрёÑтного взглÑда" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Метод параллельного взглÑда" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Метки" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Символ Ñлемента" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Ðазвание атома" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Ðтомный номер" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "РаÑположение метки на атоме" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "По центру" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Вверху Ñправа" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Внизу Ñправа" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Вверху Ñлева" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Внизу Ñлева" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Цвет" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "По Ñхеме" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Элемент (СРК)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Ðльтернативное раÑположение" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Молекула" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Формальный зарÑд" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "ЧаÑтичный зарÑд" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Температура (отноÑÐ¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑˆÐºÐ°Ð»Ð°)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Температура (фикÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÑˆÐºÐ°Ð»Ð°)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "ÐминокиÑлота" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Цепь" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Группа" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Мономер" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "По аминокиÑлоте/нуклеотиду" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "По умолчанию" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Черный" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Белый" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Голубой" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "КраÑный" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Оранжевый" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Жёлтый" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Зелёный" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Синий" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Индиго" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Фиолетовый" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Оранжево-розовый" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Оливковый" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Тёмно-бордовый" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Серый" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Синевато-Ñерый" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Золотой" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Светло-лиловый" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Сделать непрозрачным" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Сделать прозрачным" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Фон" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "ПоверхноÑти" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "ОÑи" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Рамка" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Ð­Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð°Ñ€Ð½Ð°Ñ Ñчейка" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "МаÑштаб" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Увеличить" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Уменьшить" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Вращение" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "СкороÑÑ‚ÑŒ по Ð¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "СкороÑÑ‚ÑŒ по Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "СкороÑÑ‚ÑŒ по Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Кадров в Ñекунду" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "ÐнимациÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Режим анимации" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Проиграть однократно" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Палиндром" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Зациклить" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "ВоÑпроизвеÑти" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Стоп" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Следующий кадр" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Предыдущий кадр" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Перемотать к началу" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "От конца к началу" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "ПерезапуÑк" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "ИзмерениÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Двойной щелчок начинает и завершает измерениÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Щелчок Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ñ€Ð°ÑÑтоÑний" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Щелчок Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑƒÐ³Ð»Ð¾Ð²" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Щелчок Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ñ€Ñионных (диÑдральных) углов" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Щелкните два атома чтобы показать поÑледовательноÑÑ‚ÑŒ в конÑоли" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Удалить измерениÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Показать результаты измерений" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Единицы раÑÑтоÑÐ½Ð¸Ñ - нанометры" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Единицы раÑÑтоÑÐ½Ð¸Ñ - ангÑтремы" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Единицы раÑÑтоÑÐ½Ð¸Ñ - пикометры" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "ДейÑтвие по щелчку" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Центрировать" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "СвойÑтва" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Метка" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Выделить атом" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Выделить цепь" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Выделить Ñлемент" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "Ðабор инÑтрументов" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Выделить группу" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Выделить молекулу" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Выберите Ñайт" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Показать операцию Ñимметрии" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Показать" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "КонÑоль Ñценариев Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Содержимое файла" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Заголовок файла" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "JVXL-данные изоповерхноÑти" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "JVXL-данные молекулÑрной орбитали" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Модель" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "ОриентациÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "ПроÑтранÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Текущее ÑоÑтоÑние" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Файл" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "ЭкÑпорт" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Перезагрузить" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Открыть файл PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "Открыть локальный файл" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "Открыть URL" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Загрузить Ñлементарную Ñчейку" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Открыть Ñценарий" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "Захват" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "Захватить качаниÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "Захватить вращение" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "Ðачать захват" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "Закончить захват" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "Отключить захват" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "Возобновить захват" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "УÑтановить ÑкороÑÑ‚ÑŒ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð°" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "Переключить зацикливание захвата" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Сохранить копию {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Сохранить Ñценарий Ñ ÑоÑтоÑнием" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Сохранить Ñценарий Ñ Ð¸Ñторией" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "ЭкÑпорт {0} изображениÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Сохранить как файл PNG/JMOL (риÑунок+zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Сохранить JVXL-изоповерхноÑÑ‚ÑŒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "ЭкÑпорт {0} 3D модели" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "РаÑчет" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñтруктуры" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Ðабор инÑтрументов" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Извлечь MOL-данные" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Ð¢Ð¾Ñ‡ÐµÑ‡Ð½Ð°Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ð¾ÑÑ‚ÑŒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "ПоверхноÑÑ‚ÑŒ Ван-дер-ВаальÑа" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "МолекулÑÑ€Ð½Ð°Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ð¾ÑÑ‚ÑŒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "ПоверхноÑÑ‚ÑŒ раÑÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚ÐµÐ»Ñ (зонд в {0}-ÐнгÑтрем )" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "ПоверхноÑÑ‚ÑŒ, доÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñ€Ð°Ñтворителю (VDW + {0} ÐнгÑтрем)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "ЭлектроÑтатичеÑкий потенциал молекулы (ВЕСЬ диапазон)" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "ЭлектроÑтатичеÑкий потенциал молекулы (диапазон -0.1 0.1)" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Перезагрузить {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Перезагрузить {0} + Показать {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Перезагрузить + полиÑдры" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Скрыть" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "ТочечнаÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Ширина в пикÑелÑÑ…" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} пикÑелей" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Ширина в ÐнгÑтремах" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Ореол выделениÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Показать атомы водорода" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Показывать измерениÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Глубина перÑпективы" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Цвета RasMol " + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "О программе..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "ОШИБКРкомпилÑтора Ñкрипта:" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "ожидаютÑÑ Ð¾Ñи x y z" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} не разрешен при отображении фоновой модели" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "неверное чиÑло аргументов" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Ð’Ñе индекÑÑ‹ Миллера не могут равнÑÑ‚ÑŒÑÑ Ð½ÑƒÐ»ÑŽ." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "плохой цвет [R,G,B]" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "ожидаетÑÑ Ð±ÑƒÐ»ÐµÐ²Ð° переменнаÑ" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "ожидаетÑÑ Ð±ÑƒÐ»ÐµÐ²Ð° или чиÑÐ»Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "ожидаетÑÑ Ð±ÑƒÐ»ÐµÐ²Ð° или чиÑÐ»Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "не могу уÑтановить значение" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "ожидаетÑÑ Ñ†Ð²ÐµÑ‚" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "требуетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ цвета или палитры (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "ожидаетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "требуетÑÑ {x y z} или $name или (atom expression)" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "объект Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ñовки не определен" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "неожиданное окончании команды ÑценариÑ" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "ожидаетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ (atom expression)" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "ожидаетÑÑ (atom expression) или целое чиÑло" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "ожидаетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ файла" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "файл не найден" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "неÑовмеÑтимые аргументы" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "недоÑтаточно аргументов" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "ожидаетÑÑ Ñ†ÐµÐ»Ð¾Ðµ чиÑло" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "целое чиÑло вне диапазона ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "недопуÑтимый аргумент" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "неверный порÑдок параметров" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "ожидалоÑÑŒ ключевое Ñлово" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "нет доÑтупных данных по коÑффициентам МО" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "ТребуетÑÑ Ð¸Ð½Ð´ÐµÐºÑ ÐœÐž от 1 до {0}" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "Ð´Ð»Ñ Ñтого кадра нет доÑтупных данных по базиÑу/коÑффициентам МО" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "нет доÑтупных данных по заÑеленноÑти МО" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Ð’ Ñтом файле еÑÑ‚ÑŒ только одна молекулÑÑ€Ð½Ð°Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ð°Ð»ÑŒ" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} требует, чтобы была отображена только одна модель" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} требует, чтобы была загружена только одна модель" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Данные недоÑтупны" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Из файла не Ñчитаны чаÑтичные зарÑды, они необходимы Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ данных в " +"MEP в Jmol." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Ðет Ñлементарной Ñчейки" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "ожидаетÑÑ Ñ‡Ð¸Ñло" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "чиÑло должно быть ({0} или {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "деÑÑтичное чиÑло вне диапазона ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "ожидаетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ объекта поÑле '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"ожидаетÑÑ Ð¿Ð»Ð¾ÑкоÑÑ‚ÑŒ -- три точки либо atom expressions либо {0} либо {1} " +"либо {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "ожидаетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ ÑвойÑтва" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr " проÑтранÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° {0} не найдена" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "ожидаетÑÑ Ñтрока в кавычках" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "ожидаетÑÑ Ñтрока в кавычках или идентификатор" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "указано Ñлишком много точек вращениÑ" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "Ñлишком много уровней ÑценариÑ" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "нераÑпознанное ÑвойÑтво атома" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "нераÑпознанное ÑвойÑтво ÑвÑзи" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "нераÑпознанное выражение во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "нераÑпознанный объект" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "нераÑпознанный {0} параметр" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"нераÑпознанный {0} параметр в Ñценарии ÑоÑтоÑÐ½Ð¸Ñ Jmol (вÑе равно уÑтановлен)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "неопознанный параметр SHOW — иÑпользуйте {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "что запиÑать? Â«Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°Â» {0} или {1}" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "ОШИБКРÑкрипта:" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "показ Ñохранен: {0}" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} атомов удалено" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} водородных ÑвÑзей" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "файл {0} Ñоздан" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "чтобы вернутьÑÑ, введите: &{0}" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "недейÑтвительный контекÑÑ‚ Ð´Ð»Ñ {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "ожидаетÑÑ { чиÑло чиÑло чиÑло} " + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "ожидаетÑÑ ÐºÐ¾Ð½ÐµÑ† выражениÑ" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "ожидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ или опиÑание оÑтатка" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "неверное опиÑание атома" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "неверное опиÑание цепи" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "недейÑтвительный Ñимвол выражениÑ: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "неверное опиÑание модели" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "отÑутÑтвует КОÐЕЦ Ð´Ð»Ñ {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "ожидаетÑÑ Ñ‡Ð¸Ñло или Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "ожидаетÑÑ Ð¾Ð¿Ð¸Ñание оÑтатка (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "ожидаетÑÑ {0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "неожиданный {0}" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "нераÑпознанный Ñимвол выражениÑ: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "нераÑпознанный Ñимвол: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "{0} зарÑдов изменено" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} каркаÑов добавлено" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "Примечание: Включите зацикливание, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ {0}" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "Задержка анимации, оÑÐ½Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½Ð°: {0}" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} Ñоединений удалено" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} новых ÑвÑзей; {1} изменено" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "Примечание: Более, чем одна модель задейÑтвована в Ñтом контакте!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Ðажмите Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы вызвать меню..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Ðпплет Jmol верÑии {0} {1}.\n" +"\n" +"Проект OpenScience.\n" +"\n" +"Подробнее на Ñайте http://www.jmol.org" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Ошибка файла:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "назначить/новый атом или ÑвÑзь (требует {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "показать недавнее контекÑтное меню (click on Jmol frank)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "удалить атом (требует {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "удалить ÑвÑзь (требует {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "наÑтроить глубину (Ñ‡ÐµÑ€Ð½Ð°Ñ Ð¿Ð»Ð¾ÑкоÑÑ‚ÑŒ; требует {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "передвинуть атом (требует {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "передвинуть веÑÑŒ объект DRAW (требует {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "передвинуть отдельную точку DRAW (требует {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "передвинуть метку (требует {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "передвинуть атом и минимизировать молекулу (требует {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "передвинуть и минимизировать молекулу (требует {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "передвинуть выбранные атомы (требует {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "Ñ‚Ñнуть атомы в направлении Z (требует {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "Ñимулировать мульти-тач иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¼Ñ‹ÑˆÑŒ)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "перемеÑтить навигационную точку (требует {0} и {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "выбрать атом" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "Ñоединить атомы (требует {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "выбрать точку ИЗОПОВЕРХÐОСТИ (требует {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "выбрать метку Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñкрыть/отображать (требует {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"выбрать атом Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² измерение (поÑле начала Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ поÑле {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "выбрать точку или атом чтобы перемеÑтитьÑÑ Ñ‚ÑƒÐ´Ð° (требует {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "выбрать точку DRAW (Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ð¹) (требует {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "показать полное контекÑтное меню" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "ÑÐ±Ñ€Ð¾Ñ (при отщелкивании модели)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "повернуть" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "повернуть ветвь вокруг ÑвÑзи (требует {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "повернуть выделенные атомы (требует {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "повернуть вокруг Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"повернуть вокруг Z (горизонтальным движением мыши) или маÑштаб (вертикальным " +"движением мыши)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "выделить атом (требует {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "выделить и Ñ‚Ñнуть атомы (требует {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "ÑнÑÑ‚ÑŒ выделение Ñ Ñтой группы атомов (требует {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "ÑнÑÑ‚ÑŒ выделение (требует {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "добавить Ñту группу атомов к выделенным (требует {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "вкл/выкл выделение (требует {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"еÑли выделено вÑÑ‘, ÑнÑÑ‚ÑŒ выделение, в противном Ñлучае добавить Ñту группу " +"атомов к выделенным (требует {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "выбрать атом Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° или Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ð¹" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "наÑтроить Ñлой (переднÑÑ Ð¿Ð»Ð¾ÑкоÑÑ‚ÑŒ; требует {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "передвинуть Ñлой/окно глубины (обе плоÑкоÑти; требует {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "маÑштаб (по правому краю окна)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"нажмите на две точки чтобы повернуть вокруг оÑи против чаÑовой Ñтрелки " +"(требует {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"нажмите на две точки чтобы повернуть вокруг оÑи по чаÑовой Ñтрелке (требует " +"{0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "оÑтановить движение (требует {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"поворачивать модель (Ñдвиньте и отпуÑтите кнопку и оÑтановите движение " +"одновременно)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "перемеÑтить" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "маÑштаб" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "выберите еще один атом чтобы повернуть модель вокруг оÑи" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "выберите два атома чтобы повернуть модель вокруг оÑи" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "выберите еще один атом, чтобы отобразить отношение Ñимметрии" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "выберите два атома, чтобы отобразить отношение Ñимметрии между ними" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "отменено" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "{0} Ñохранен" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "УÑтановка файла журнала в {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Ðевозможно уÑтановить путь к файлу журнала." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} атомов Ñкрыто" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} атомов выбрано" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Перетащите Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚ÐºÐ¸" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "буфер недоÑтупен — иÑпользуйте подпиÑанный апплет" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "добавлено {0} атомов водорода" + +#~ msgid "Hide Symmetry" +#~ msgstr "Скрыть Ñимметрию" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Загрузка апплета Jmol..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} Ñекунд" + +#~ msgid "Java version:" +#~ msgstr "ВерÑÐ¸Ñ Java:" + +#~ msgid "1 processor" +#~ msgstr "1 процеÑÑор" + +#~ msgid "unknown processor count" +#~ msgstr "неизвеÑтное чиÑло процеÑÑоров" + +#~ msgid "Java memory usage:" +#~ msgstr "ИÑпользрвание памÑти Java:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} МБ Ñвободно" + +#~ msgid "unknown maximum" +#~ msgstr "неизвеÑтный макÑимум" + +#~ msgid "Open file or URL" +#~ msgstr "Открыть файл или URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/sl.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/sl.po new file mode 100755 index 000000000000..d96c59f14b13 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/sl.po @@ -0,0 +1,2599 @@ +# Slovenian translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Domen \n" +"Language-Team: Slovenian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Element?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Skriptna konzola Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Zapri" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&PomoÄ" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Iskanje ..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Ukazi" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "MatematiÄne &funkcije" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Nastavi ¶metre" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&VeÄ" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Urejevalnik" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Stanje" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Zaženi" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "PoÄisti izhod" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "PoÄisti vnos" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Zgodovina" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Naloži" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Urejevalnik skriptov Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konzola" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Odpri" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Spredaj" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skript" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Preveri" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Vrh" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Korak" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Premor" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Nadaljuj" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "PoÄisti" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Zapri" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Datoteka ali URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Vrsta slike" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "Kakovost JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "Stiskanje PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "Kakovost PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Da" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Ne" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Želite prepisati datoteko {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Opozorilo" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Vse datoteke" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "PrekliÄi" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Prekini pogovorno okno izbirnika datoteke" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Podrobnosti" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Mapa" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Odpri izbrano mapo" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Lastnosti" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Spremenjeno" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Ime" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Ime datoteke:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Velikost" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Datoteke vrste:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Vrsta" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "PomoÄ" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Domov" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Seznam" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Poglej v:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Napaka pri ustvarjanju nove mape" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Nova mapa" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Ustvari novo mapo" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Odpri izbrano datoteko" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Shrani" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Shrani izbrano datoteko" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Shrani v:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Posodobi" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Gor" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Eno raven navzgor" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "V redu" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Predogled" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "ArabÅ¡Äina" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "KatalonÅ¡Äina" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "ÄŒeÅ¡Äina" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "DanÅ¡Äina" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "NemÅ¡Äina" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "GrÅ¡Äina" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Britanska angleÅ¡Äina" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "AmeriÅ¡ka angleÅ¡Äina" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Å panÅ¡Äina" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "EstonÅ¡Äina" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "FinÅ¡Äina" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "FrancoÅ¡Äina" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "HrvaÅ¡Äina" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "MadžarÅ¡Äina" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "IndonezijÅ¡Äina" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "ItalijanÅ¡Äina" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "JaponÅ¡Äina" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "KorejÅ¡Äina" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "NizozemÅ¡Äina" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "PoljÅ¡Äina" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "PortugalÅ¡Äina" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brazilska portugalÅ¡Äina" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "RuÅ¡Äina" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "SlovenÅ¡Äina" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Å vedÅ¡Äina" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "TurÅ¡Äina" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "UkrajinÅ¡Äina" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Poenostavljena kitajÅ¡Äina" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Tradicionalna kitajÅ¡Äina" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Izbran ni noben atom -- niÄesar ni za narediti!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomi bodo minimirani." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "novo" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "razveljavi (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "uveljavi (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "dodaj vodike" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimiraj" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "poÄisti" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "shrani datoteko" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "shrani stanje" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "obrni stereokemijo obroÄa" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "izbriÅ¡i atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "povleci na vez" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "povleci atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "povleci atom (in minimiraj)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "poveÄaj naboj" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "zmanjÅ¡aj naboj" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "izbriÅ¡i vez" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "enojna" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "dvojna" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "trojna" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "zavrti vez (SHIFT-VLEÄŒENJE)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "zapusti naÄin modeliranja" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Brez" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Vsi" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} procesorjev" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB skupno" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB najveÄ" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Skriptna konzola Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "PriroÄnik miÅ¡ke" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Prevodi" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistem" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Jezik" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Molekulske orbitale ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetrija" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Informacije o modelu" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Izberi ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Vseh {0} modelov" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Zbirka {0} modelov" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomi: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "vezi: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "skupine: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "verige: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polimeri: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Poglej {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Glavni meni" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekule" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekula {0} ({1} atomov)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "naloži biomolekulo {0} ({1} atomov)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Brez" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Prikaži samo izbrane" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Obrni izbor" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Pogled" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Spredaj" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Levo" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Desno" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Spodaj" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Zadaj" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Beljakovina" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Stranske verige" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nukleinsko" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Baze" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "Pari AT" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "Pari GC" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "Pari AU" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Ogljikov hidrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Noben od zgornjih" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Slog" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Shema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomi" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "IzkljuÄeno" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0} % van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Vezi" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "VkljuÄeno" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Vodikove vezi" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "IzraÄunaj" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfidne vezi" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Zgradbe" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektorji" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} slikovnih pik" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "RdeÄa+cian oÄala" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "RdeÄa+modra oÄala" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "RdeÄa+zelena oÄala" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Oznake" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "S simbolom elementa" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Z imenom atoma" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "S Å¡tevilom atoma" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "zapusti naÄin modeliranja" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Skriptna konzola Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Odpri izbrano datoteko" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Odpri" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Napaka datoteke:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Hide Symmetry" +#~ msgstr "Skrij simetrijo" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Nalaganje programÄka Jmol ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} sekund" + +#~ msgid "Java version:" +#~ msgstr "RazliÄica Jave:" + +#~ msgid "1 processor" +#~ msgstr "1 procesor" + +#~ msgid "unknown processor count" +#~ msgstr "neznano Å¡tevilo procesorjev" + +#~ msgid "Java memory usage:" +#~ msgstr "Uporaba spomina Jave:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB prosto" + +#~ msgid "unknown maximum" +#~ msgstr "neznan maksimum" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/sv.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/sv.po new file mode 100755 index 000000000000..ff049bbcf751 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/sv.po @@ -0,0 +1,2637 @@ +# Swedish translation for jmol +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 23:46+0000\n" +"Last-Translator: Nicolas Vervelle \n" +"Language-Team: Swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Grundämne?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol skriptkonsol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Arkiv" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Stäng" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Hjälp" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Sök..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Kommandon" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Matte &Funktioner" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Bestäm &Parametrar" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Mer" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Redigerare" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "TillstÃ¥nd" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Kör" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Rensa utmatning" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Rensa inmatning" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Historik" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Ladda" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"tryck CTRL-ENTER för en ny rad eller klistra in modelldata och tryck pÃ¥ Ladda" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Meddelanden kommer att synas här. Skriv in kommandon i rutan nedan. Klicka " +"pÃ¥ konsolens Hjälpmeny för on-linehjälp, den kommer att visas i ett nytt " +"fönster." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol Skriptredigerare" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsol" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Öppna" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "FramifrÃ¥n" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Skript" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Kontrollera" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Överst" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Stega" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Paus" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Fortsätt" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Stopp" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Rensa" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Stäng" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Fil eller URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Bildtyp" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG-kvalitet ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG-komprimering ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG-kvalitet ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Ja" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Nej" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Vill du skriva över filen {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Varning" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Alla filer" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Avbryt" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Avbryt filväljardialog" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Detaljer" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Mapp" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Öppna vald mapp" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Attribut" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Ändrad" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Ospecificerad fil" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Namn" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Filnamn:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Storlek" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Filer av typen:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Typ" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Hjälp" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Filväljarhjälp" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Hem" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Lista" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Titta i:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Fel vid skapandet av ny mapp" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Ny mapp" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Skapa ny mapp" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Öppna vald fil" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Spara" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Spara vald fil" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Spara i:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Uppdatera" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Uppdatera kataloglistan" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Upp" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Upp en nivÃ¥" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "OK" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Förhandsgranska" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Lägg till modeller" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"NOTERA: Backbone-amiders vätepositioner finns men ignoreras. Deras " +"positioner approximeras, som i standard DSSP-analys.\n" +"Använd {0} för att inte utnyttja denna approximation.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"NOTERA: Backbone-amiders vätepositioner finns och kommer att användas. " +"Resultaet kan skilja signifikant frÃ¥n standard DSSP-analys.\n" +"Använd {0} för att ignorera dessa vätepositioner.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arabiska" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "Asturiska" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "Bosniska" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Katalanska" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Tjeckiska" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danska" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Tyska" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Grekisk" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "Australiensisk engelska" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Brittisk engelska" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Amerikansk engelska" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Spanska" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estniska" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Finska" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Färöiska" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Franska" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Frisiska" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "Galiciska" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Kroatiska" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Ungerska" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "Armenska" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Indonesiska" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Italienska" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japanska" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Javanesiska" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Koreanska" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "Malaysiska" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norska (BokmÃ¥l)" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Holländska" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitanska" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Polska" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portugisiska" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brasiliansk portugisiska" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Ryska" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovenska" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "Serbiska" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Svenska" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamilska" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Telugu" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Turkiska" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "Uiguriska" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukrainska" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Kinesiska (förenklad)" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Kinesiska (Traditionell)" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Hittar inte class för kraftfält {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Inga atomer valda -- inget att göra!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomer kommer att bli minimerade" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "kan inte ställa in kraftfält {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "nytt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "Ã¥ngra (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "gör om (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "centrera" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "lägg till väte" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "minimera" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "ordna väte och minimera" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "rensa" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "spara fil" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "spara tillstÃ¥nd" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "invertera ringstereokemi" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "radera atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "dra till bindning" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "dra atom" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "dra atom (och minimera)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "dra och minimera molekyl (docka)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "öka laddning" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "minska laddning" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "radera bindning" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "enkel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "dubbel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "trippel" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "öka ordning" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "minska ordning" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "rotera bindning (SHIFT-DRA)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "avsluta modelkit mode" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Rymdgrupp" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Ingen" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Alla" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} processorer" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "{0} MB totalt" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "{0} MB maximalt" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol skriptkonsol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Musmanual" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Översättningar" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "System" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Inga atomer hämtade" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Konfigurationer" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Grundämne" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Modell/Ram" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "SprÃ¥k" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Efter rest-namn" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "Efter HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Molekylorbitaler ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Symmetri" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Modellinformation" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Välj ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Alla {0} modeller" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Konfigurationer ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Samling av {0} modeller" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomer: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "bindningar: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "grupper: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "kedjor: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polymerer: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "modell {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Vy {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Huvudmeny" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biomolekyler" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biomolekyl {0} ({1} atomer)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "hämta biomolekyl {0} ({1} atomer)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Ingen" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Visa enbart valda" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Omvänd markering" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Vy" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "FramifrÃ¥n" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Vänster" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Höger" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "UppifrÃ¥n" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "UnderifrÃ¥n" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Tillbaka" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Axlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Axlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Axlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Axlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Axlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Axlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Backbone" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Sidokedjor" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polära enheter" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Opoära enheter" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Basiska enheter" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Sura enheter" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "Oladdade enheter" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nucleär" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Baser" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT-par" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC-par" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU-par" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Sekundär struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Alla PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Enbart lösningsmedel" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Enbart vatten" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Icke vattenhaltigt lösningsmedel" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Icke vattenhaltigt HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Kolhydrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Inget av ovanstÃ¥ende" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Visa" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Schema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK Spacefill" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Kula och pinne" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Pinnar" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "TrÃ¥dmodell" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Avbild" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "SpÃ¥ra" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Av" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Bindningar" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "PÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Vätebindningar" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Beräkna" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Bestäm vätebindningars sidokedjor" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Bestäm vätebindningar i grundstruktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disulfidbindningar" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Bestäm SS-bindningars sidokedja" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Bestäm SS-bindningar i grundstruktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Strukturer" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "Vibration" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektorer" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Spectrum" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} pixlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Skala {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "3D-vy" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Röd+Cyan glas" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Röd+BlÃ¥ glas" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Röd+Gröna glas" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etiketter" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Med grundämnessymbol" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Med atomnamn" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Med atomnummer" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Placera etikett pÃ¥ atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Centrerad" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Övre högra hörnet" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Nedre högra hörnet" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Övre vänstra hörnet" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Nedre vänstra hörnet" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Färg" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Efter schema" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Grundämne (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Alternativ placering" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekyl" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formell laddning" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Partiell laddning" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Temperatur (Relativ)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Temperatur (Fast)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Aminosyra" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Kedja" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Grupp" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Välskapad" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Ärva" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Svart" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Vit" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "CyanblÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Röd" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Orange" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Gul" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Grön" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "BlÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Indigo" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Violett" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Laxrosa" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Olivgrön" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Kastanjebrun" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "GrÃ¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Guldfärgad" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Gör opak" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Gör halvgenomskinlig" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Bakgrund" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Ytor" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Axlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Enhetscell" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zooma" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Zooma in" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Zooma ut" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Rotera" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Animering" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Spela en gÃ¥ng" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Upprepa" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Spela upp" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Stopp" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Nästa ruta" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "FöregÃ¥ende ruta" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Spola tillbaka" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "BakÃ¥t" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Starta om" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Mätningar" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Dubbelklick börjar och avslutar alla mätningar" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Klicka för avständsmätning" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Klicka för vinkelmätning" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Klicka för torsionsmätning (dihedral)" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Klicka pÃ¥ tvÃ¥ atormer för att visa sekvens i konsolen" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Radera mätningar" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Lista mätningar" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Avständsenhet nanometer" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "AvstÃ¥ndsenhet Ã…ngström" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Avständsenhet picometer" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Centrera" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Identitet" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etikett" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Välj atom" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Välj kedja" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Välj element" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "avsluta modelkit mode" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Välj grupp" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Välj molekyl" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Välj plats" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Visa symmetrioperation" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Visa" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol skriptkonsol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "FilinnehÃ¥ll" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Filhuvud" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Molekylorbital JVXL data" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Modell" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Orientering" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Rymdgrupp" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Aktuellt tillstÃ¥nd" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Arkiv" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Hämta igen" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Öppna frÃ¥n PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Öppna vald fil" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Öppna" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Hämta fullständig enhetscell" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Öppna skript" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Spara en kopia av {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Spara skript med status" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Spara skript med history" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "Exportera {0} bild" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Spara sllt som JMOL-fil (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Spara JVXL isosurface" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "Exportera {0} 3D-modell" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Beräkning" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Optimera struktur" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Modelluppsättning" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Extrahera MOL-data" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Dot-yta" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van der Waals-yta" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Molekylyta" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Hämta igen {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Dölj" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Punktmarkerad" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Pixelbredd" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Visa väte" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Visa mÃ¥tt" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspektivdjup" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol-färger" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Om..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "script compiler ERROR: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x y z-axlar förväntas" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} inte tillÃ¥tet när bakgrundsmodell visas" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "felaktigt antal argument" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Miller indices kan inte alla vara noll." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "felaktig [R,G,B]-färg" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "boolesk förväntas" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "boolesk eller tal förväntas" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "boolesk, tal, eller {0} förväntas" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "färg förväntas" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "en färg eller palettnamn (Jmol, Rasmol) krävs" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "Kommando förväntas" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} eller $namn eller (atomuttryck) krävs" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "ritobjekt inte definierat" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "oväntat end of script command" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "filnamn förväntas" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "otillräckliga argument" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "ogiltigt argument" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ogiltig parameterordning" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "nyckelord förväntat" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "inga MO-koefficientdata tillgängliga" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "Ett MO-index frÃ¥n 1 till {0} krävs" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "inga MO bas/koefficientdata tillgängliga för denna bildruta" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "Inga MO occupancy data tillgängliga" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Endast en molekylorbital är tillgänglig i denna fil" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} kräver att endast en modell visas" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} kräver att endast en modell hämtas" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Inga data tillgängliga" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Inga partiella laddningar lästes frÃ¥n filen; Jmol behöver det för att " +"rendera MEP-data." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Ingen enhetscell" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "tal förväntas" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "tal mÃ¥ste vara ({0} eller {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "decimaltal utanför intervallet ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "objektnamn förväntat efter '$'" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"plan förväntat -- antingen tre punkter eller atomuttryck eller {0} or {1} or " +"{2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "egenskapsnamn förväntat" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "space group {0} hittades inte." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "sträng inom citationstecken förväntad" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "sträng inom citationstecken eller identifierare förväntad" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "för mÃ¥nga rotationspunkter specifierade" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "för mÃ¥nga script-nivÃ¥er" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "okänd atomegenskap" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "okänd bindningsegenskap" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "okänt kommando" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "runtime okänt uttryck" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "okänt objekt" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "okänd {0} parameter i Jmol state script (set ändÃ¥)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "okänd VISA-parameter -- använd {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "skriva vad? {0} eller {1} \"filename\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "script-FEL: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atomer raderade" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} vätebindningar" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "fil {0} skapad" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "end of expression förväntat" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "identifier eller residue specification förväntad" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "ogiltig atomspecifikation" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "ogiltig kedjespecifikation" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "ogiltig modellspecifikation" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "END fattas för {0}" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "tal eller variabelnamn förväntas" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "rest-specificering (ALA, AL?, A*) förväntas" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} förväntas" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, fuzzy, java-format +msgid "{0} struts added" +msgstr "{0} väte tillagda" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} anslutningar raderade" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} nya bindningar; {1} modifierade" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Klicka för meny..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet version {0} {1}.\n" +"\n" +"Ett projekt inom OpenScience.\n" +"\n" +"Se http://www.jmol.org för mer information" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Filfel:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "inför/ny atom eller bindning (requires {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "popup föregÃ¥ende kontextmeny (klicka pÃ¥ Jmol frank)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "radera atom (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "radera bindning (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "justera djup (back plane; requires {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "flytta atom (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "flytta hela DRAW-objektet (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "flytta specifik DRAW-punkt (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "flytta etikett (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "flytta atom och minimera molekyl (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "flytta och minimera molekyl (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "flytta markerade atomer (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "dra atomer i z-riktning (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "simulera multi-touch med musen)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "navigationspunkt för förflyttning (kräver {0} och {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "välj en atom" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "förbind atomer (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "välj en ISOSURFACE-punkt (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "välj en etikett för för att byta mellan dold/visa (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"välj en atom för att inkludera den i en mätning (efter att ha startat en " +"mätning eller efter {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "välj en punkt eller atom att navigera till (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "välj en DRAW-punkt (för mätning) (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "popup fullständig kontextmeny" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "Ã¥terställ (vid klickning utaför modellen)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "rotera" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "rotera del kring bindning (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "rotera markerade atomer (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "rotera Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"rotera Z (horisontell förflyttning av musen) eller zooma (vertikal " +"förflyttning av musen)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "välj en atom (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "markera och dra atomer (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "avmarkera denna atomgrupp (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "välj NONE (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "lägg till denna atomgrupp till markerade atomer (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "omvänd markering (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"om alla är markerade, avmarkera alla, annars lägg till denna atomgrupp till " +"markerade atomer (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "välj en atom för att initiera eller avsluta en mätning" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "justera slab (front plane; requires {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "flytta slab/depth-fönster (both planes; requires {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "zooma (längs högra sidan av fönstret)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "klicka pÃ¥ tvÃ¥ punkter för att rotera runt axel moturs (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "klicka pÃ¥ tvÃ¥ punkter för att rotera runt axel medurs (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "stanna rörelse (kräver {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "rotera modell (svep och släpp knapp och stanna rörelsen samtidigt)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "förflytta" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "zooma" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "välj en atom till för att rotera modellen runt en axel" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "välj tvÃ¥ atomer för att rotera modellen runt en axel" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "välj en atom till för att visa symmetriförhÃ¥llande" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "välj tvÃ¥ atomer för att visa symmetriförhÃ¥llandet mellan dem" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Loggfil sätts till {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Kan inte etablera väg till loggfil" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atomer dolda" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atomer markerade" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Drag för att flytta etikett" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "urklipp är inte tillgängligt - används den signerade appleten" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} väte tillagda" + +#~ msgid "Hide Symmetry" +#~ msgstr "Göm symmetri" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Hämtar Jmol applet..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} sekunder" + +#~ msgid "Java version:" +#~ msgstr "Java-version:" + +#~ msgid "1 processor" +#~ msgstr "1 processor" + +#~ msgid "unknown processor count" +#~ msgstr "okänt antal processorer" + +#~ msgid "Java memory usage:" +#~ msgstr "Java minnesanvändning:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB ledigt" + +#~ msgid "unknown maximum" +#~ msgstr "okänt maximum" + +#~ msgid "Open file or URL" +#~ msgstr "Öppna fil eller URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ta.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ta.po new file mode 100755 index 000000000000..4f0b0ab1db83 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ta.po @@ -0,0 +1,2578 @@ +# Tamil translation for jmol +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Ramesh \n" +"Language-Team: Tamil \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "மூடà¯à®•" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&உதவி" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&தேடà¯à®•..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&கடà¯à®Ÿà®³à¯ˆà®•à®³à¯" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "கணிதம௠மறà¯à®±à¯à®®à¯ சாரà¯à®ªà¯à®•à®³à¯" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&மேலà¯à®®à¯" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "தொகà¯à®ªà¯à®ªà®¾à®³à®°à¯" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "நிலை" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "இயகà¯à®•à¯" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "வரலாறà¯" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "à®à®±à¯à®±à¯à®•" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "பணியகமà¯" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "திற" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "à®®à¯à®©à¯" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "சிறà¯à®¨à®¿à®°à®²à¯" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "சரிபாரà¯" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "படி" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "இடைநிறà¯à®¤à¯à®¤à¯" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "மீணà¯à®Ÿà¯à®®à¯ தà¯à®µà®•à¯à®•à¯" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "சà¯à®¤à¯à®¤à®®à¯ (Clear)" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "மூடà¯à®•" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "பிமà¯à®ªà®¤à¯à®¤à®¿à®©à¯ வகை" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG தரம௠({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG தரம௠({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "அனà¯à®®à®¤à®¿" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "மறà¯" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "அனைதà¯à®¤à¯ கோபà¯à®ªà¯à®•à®³à¯à®®à¯" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "ரதà¯à®¤à¯" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "விவரஙà¯à®•à®³à¯" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "அடைவà¯" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "தெரிவ௠செயà¯à®¤ அடிவைத௠திற" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "பணà¯à®ªà¯à®•à®³à¯" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "பெயரà¯" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "கோபà¯à®ªà¯à®ªà¯ பெயரà¯:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "அளவà¯" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "வகை" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "உதவி" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "கோபà¯à®ªà¯à®¤à¯à®¤à¯†à®°à®¿à®µà®¿à®¯à®¿à®©à¯ உதவி" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "à®®à¯à®•à®ªà¯à®ªà¯" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "படà¯à®Ÿà®¿à®¯à®²à¯" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "இஙà¯à®•à¯ பாரà¯:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "பà¯à®¤à®¿à®¯ அடைவை உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®¿à®²à¯ பிழை" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "பà¯à®¤à®¿à®¯ அடைவà¯" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "பà¯à®¤à®¿à®¯ அடைவை உரà¯à®µà®¾à®•à¯à®•à¯" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¿à®©à¯ˆ திற" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "சேமி" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "தெரிவ௠செயà¯à®¤ கோபà¯à®ªà¯ˆ சேமி" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "இதில௠சேமி:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "பà¯à®¤à¯à®ªà¯à®ªà®¿" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "அடைவà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ பà¯à®¤à¯à®ªà¯à®ªà®¿" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "மேலே" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "சரி" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "à®®à¯à®©à¯à®ªà®¾à®°à¯à®µà¯ˆ" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "அராபிகà¯" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "காடà¯à®Ÿà®²à®¾à®©à¯" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "செகà¯" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "டானிஷà¯" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "ஜெரà¯à®®à®©à¯" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "கிரேகà¯à®•à®®à¯" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "பிரிடà¯à®Ÿà®¿à®·à¯ ஆஙà¯à®•à®¿à®²à®®à¯" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "அமெரிகà¯à®• ஆஙà¯à®•à®¿à®²à®®à¯" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "ஸà¯à®ªà®¾à®©à®¿à®·à¯" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "எஸà¯à®Ÿà¯‹à®©à®¿à®¯à®©à¯" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "பிரெஞà¯à®šà¯" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "ஹஙà¯à®•à¯‡à®°à®¿à®¯à®©à¯" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "இநà¯à®¤à¯‹à®©à¯‡à®·à®¿à®¯à®©à¯" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "இதà¯à®¤à®¾à®²à®¿à®¯à®©à¯" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "ஜபà¯à®ªà®¾à®©à®¿à®¯" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "கொரியனà¯" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "நாரà¯à®µà¯‡à®œà®¿à®¯à®©à¯ பà¯à®•à¯à®®à®¾à®²à¯" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "ஆகà¯à®Ÿà®¿à®šà®¿à®¯à®©à¯" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "போலிஷà¯" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "போரà¯à®¤à¯à®¤à¯à®•à¯à®•à¯€à®šà®¿à®¯" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "பிரேஸிலிய போரà¯à®¤à¯à®¤à¯à®•à¯à®•à¯€à®šà®¿à®¯" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "à®°à®·à¯à®¯à®©à¯" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "ஸà¯à®²à¯‹à®µà¯‡à®©à®¿à®¯à®©à¯" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "சà¯à®µà¯€à®Ÿà®¿à®·à¯" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "தமிழà¯" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "தà¯à®°à¯à®•à¯à®•à®¿à®¯" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "உகà¯à®°à¯‡à®©à®¿à®¯à®©à¯" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "எளிய சைனீஸà¯" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "பாரமà¯à®ªà®°à®¿à®¯ சைனீஸà¯" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "எநà¯à®¤ அணà¯à®•à¯à®•à®³à¯à®®à¯ தெரிவ௠செயà¯à®¯à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ -- செயà¯à®µà®¤à®±à¯à®•à¯ ஒனà¯à®±à¯à®®à®¿à®²à¯à®²à¯ˆ!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "எதà¯à®µà¯à®®à®¿à®²à¯à®²à¯ˆ" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "அனைதà¯à®¤à¯à®®à¯" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "மொழிபெயரà¯à®ªà¯à®ªà¯à®•à®³à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "அமைபà¯à®ªà¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "எநà¯à®¤ அணà¯à®•à¯à®•à®³à¯à®®à¯ à®à®±à¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "மூலகமà¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "மொழி" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "சமசà¯à®šà¯€à®°à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "தெரிவ௠செய௠({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "அணà¯à®•à¯à®•à®³à¯: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "பிணைபà¯à®ªà¯à®•à®³à¯: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "கà¯à®´à¯à®•à¯à®•à®³à¯: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "சஙà¯à®•à®¿à®²à®¿à®•à®³à¯: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "பலà¯à®ªà®•à¯à®¤à®¿à®¯à®™à¯à®•à®³à¯: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "à®®à¯à®¤à®©à¯à®®à¯ˆ படà¯à®Ÿà®¿" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "உயிரியல௠மூலகà¯à®•à¯‚à®±à¯à®•à®³à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "எதà¯à®µà¯à®®à®¿à®²à¯à®²à¯ˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "தெரிவ௠செயà¯à®¤à®¤à¯ˆ மடà¯à®Ÿà¯à®®à¯ காணà¯à®ªà®¿" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "தேரà¯à®µà¯ˆ தலைகீழாகà¯à®•à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "பாரà¯à®µà¯ˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "à®®à¯à®©à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "இடதà¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "வலதà¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "கீழà¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "பின௠செலà¯à®•" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "பà¯à®°à®¤à®®à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "பகà¯à®• சஙà¯à®•à®¿à®²à®¿à®•à®³à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT சோடிகளà¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC சோடிகளà¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU சோடிகளà¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "பலà¯à®²à®¿à®©" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "இணையி" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "காபோவைதரேறà¯à®±à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "மேலà¯à®³à¯à®³à®µà®±à¯à®±à®¿à®²à¯ எதà¯à®µà®®à®©à¯à®±à¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "பாணி" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¿à®©à¯ˆ திற" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "திற" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "கோபà¯à®ªà¯ பிழை:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" + +#~ msgid "Hide Symmetry" +#~ msgstr "சமசà¯à®šà¯€à®°à¯ˆ மறை" + +#~ msgid " {0} seconds" +#~ msgstr " {0} நொடிகளà¯" + +#~ msgid "Java version:" +#~ msgstr "ஜாவா பதிபà¯à®ªà¯:" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/te.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/te.po new file mode 100755 index 000000000000..b045cf31dbbc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/te.po @@ -0,0 +1,2566 @@ +# Telugu translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Praveen Illa \n" +"Language-Team: Telugu \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "మూసివేయి" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "సహాయం (&H)" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "వెతà±à°•à±...(&S)" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "ఆదేశాలౠ(&C)" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "కూరà±à°ªà°•à°®à±" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "నడà±à°ªà±" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "à°šà°°à°¿à°¤à±à°°" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "నిలిపివేయి" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "మూసివేయి" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "బొమà±à°® à°°à°•à°®à±" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "à°…à°µà±à°¨à±" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "కాదà±" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "హెచà±à°›à°°à°¿à°•" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "à°…à°¨à±à°¨à°¿ ఫైళà±à°³à±" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "వివరాలà±" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "పేరà±" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "ఫైలౠపేరà±:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "పరిమాణం" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "à°°à°•à°®à±" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "సహాయం" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "నివాసం" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "కొతà±à°¤ సంచయం" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "కొతà±à°¤ సంచయానà±à°¨à°¿ సృషà±à°Ÿà°¿à°‚à°šà±" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "à°Žà°‚à°šà±à°•à±à°¨à±à°¨ ఫైలౠతెరà±à°µà±" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "à°­à°¦à±à°°à°ªà°°à°šà±" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "నవీకరించà±" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "సరే" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "à°®à±à°¨à±à°œà±‚à°ªà±" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "అరబికà±" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "బోసà±à°¨à°¿à°¯à°¨à±" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "కాటలానà±" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "చెకà±" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "డానిషà±" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "జరà±à°®à°¨à±" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "à°—à±à°°à±€à°•à±" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "à°¸à±à°ªà°¾à°¨à°¿à°·à±" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "à°«à±à°°à±†à°‚à°šà±" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "à°•à±à°°à±‹à°Ÿà°¿à°¯à°¨à±" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "à°Žà°‚à°šà±à°•à±à°¨à±à°¨ ఫైలౠతెరà±à°µà±" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/tr.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/tr.po new file mode 100755 index 000000000000..9d2f043b3ec0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/tr.po @@ -0,0 +1,2626 @@ +# translation of JmolApplet-tr.po to Turkish. +# Copyright (C) 1998-2011 The Jmol Development Team +# This file is distributed under the same license as the JmolApplet package. +# Muhammet Kara , 2006, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: JmolApplet\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Muhammet Kara \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" +"X-Poedit-Language: Turkish\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Element mi?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol Betik Uçbirimi" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Dosya" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Kapat" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Yardım" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Ara..." + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Komutlar" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Matematiksel &Fonksiyonlar" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "&Parametreleri Ayarla" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Daha Fazla" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Düzenleyici" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Durum" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "Çalıştır" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Çıktıyı Temizle" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Girdiyi Temizle" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "GeçmiÅŸ" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Yükle" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"yeni satır için CTRL-ENTER'a basın veya model verisini yapıştırın ve " +"Yükle'ye basın" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Mesajlar burada görünecek. Komutları aÅŸağıdaki kutuya girin. Yeni bir " +"tarayıcı penceresinde görüntülenecek olan çevrimiçi yardım için Uçbirim " +"Yardım menüsüne tıklayın." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol Betik Düzenleyicisi" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "Konsol" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Aç" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Ön" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Betik" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Denetle" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Yukarı" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Adım" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Duraklat" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Sürdür" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Durdur" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Temizle" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Kapat" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Dosya veya URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Görüntü Türü" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG Kalitesi ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG Sıkıştırması ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG Kalitesi ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Evet" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "Hayır" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "{0} dosyasının üzerine yazılsın mı?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Uyarı" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "Tüm Dosyalar" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "Ä°ptal" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Dosya seçici penceresini kapat" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Ayrıntılar" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Dizin" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Seçili dizini aç" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Nitelikler" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "DeÄŸiÅŸtirildi" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Genel Dosya" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Adı" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Dosya Adı:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Boyut" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Tür Dosyaları:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Tür" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Yardım" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "DosyaSeçici yardımı" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Anasayfa" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "Liste" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Bak:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Yeni klasör oluÅŸturma hatası" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Yeni Klasör" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Yeni Klasör OluÅŸtur" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Seçilen dosyayı aç" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Kaydet" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Seçilen dosyayı kaydet" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "İçine Kaydet:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Güncelle" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Dizin listelemesini güncelle" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Yukarı" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Bir Seviye Yukarı" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "TAMAM" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "Önizleme" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Modelleri BirleÅŸtir" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "Arapça" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "Katalanca" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "Çekçe" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "Danca" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Almanca" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Yunanca" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "Ä°ngiliz Ä°ngilizcesi" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "Amerikan Ä°ngilizcesi" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "Ä°spanyolca" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "Estonyaca" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "Fince" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "Faroese" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Fransızca" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "Hırvatça" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "Macarca" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "Endonezce" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "Ä°talyanca" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "Japonca" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "Cavaca" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "Korece" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Norveç Bokmal" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "Flemenkçe" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "Occitan" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "Lehçe" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "Portekizce" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "Brezilya Portekizcesi" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "Rusça" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "Slovence" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "Ä°sveçce" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "Tamil" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Türkçe" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "Ukraynaca" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "BasitleÅŸtirilmiÅŸ Çince" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Geleneksel Çince" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Güç alanı sınıfı alınamadı {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Herhangi bir atom seçili deÄŸil -- yapacak bir ÅŸey yok!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} atomlar küçültülecek." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "Güç alanını ayarlanamadı {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "yeni" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "geri al (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "yinele (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "merkez" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "hidrojen ekle" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "küçült" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "hidrojenleri sabitle ve küçült" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "temizle" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "kayıt dosyası" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "kayıt durumu" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "halka stereokimyasını ters çevir" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "atomu sil" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "baÄŸa sürükle" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "atom sürükle" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "atomu sürükle (ve küçült)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "yükü artır" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "yükü azalt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "bağı sil" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "tek" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "çift" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "üçlü" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "dereceyi artır" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "dereceyi azalt" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "modelkit modundan çık" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "Uzay Grubu" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Hiçbiri" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Tümü" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} iÅŸlemci" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "Toplam {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "En yüksek {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol Betik Uçbirimi" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Fare Elle" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Çeviriler" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "Sistem" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Hiç atom yüklenmedi" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "Yapılandırmalar" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Element" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Model/Yapı" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Dil" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "Artık Adına Göre" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "HETATM' e Göre" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "Moleküler Orbitaller ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "Simetri" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "Model bilgisi" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Seç ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Tüm {0} modeller" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "Yapılandırmalar ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "{0} modellik koleksiyon" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "atomlar: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "baÄŸlar: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "gruplar: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "zincirler: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "polimerler: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "model {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "Görünüm {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Ana Menü" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Biyomoleküller" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "biyomolekül {0} ({1} atom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "biyomolekülü yükle {0} ({1} atom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Hiçbiri" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Sadece Seçileni Göster" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Seçimi Tersine Çevir" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "Görünüm" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Ön" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Sol" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "SaÄŸ" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Alt" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Geri" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "Eksenler" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "Eksenler" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "Eksenler" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "Eksenler" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "Eksenler" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "Eksenler" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Protein" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "Omurga" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Yan Zincirler" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "Polar Artıklar" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "Apolar Artıklar" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Temel Artıklar (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "Asidik Artıklar (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "YüklenmemiÅŸ Artıklar" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Nükleik" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Bazlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT çiftleri" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC çiftleri" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU çiftleri" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Ä°kincil Yapı" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Hetero" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Tüm PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Tümü Çözücü" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Tümü Su" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Su İçermeyen Çözücü" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Su İçermeyen HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ligand" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Karbonhidrat" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Yukarıdakilerin hiçbiri" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Stil" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Åžema" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK BoÅŸlukdoldurma" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Küre ve Çubuk" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Çubuklar" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "Telkafes" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Çizgi Film" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "Kordon" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Atomlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Kapalı" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% van der Waals" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "BaÄŸlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Açık" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Hidrojen BaÄŸları" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "Hesapla" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "H-BaÄŸları Yan Zincirini Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "H-BaÄŸları Omurgasını Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "Disülfür BaÄŸları" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "SS-BaÄŸları Yan Zincirini Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "SS-BaÄŸları Omurgasını Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Yapılar" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Çizgi Film Roketleri" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Åžeritler" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Roketler" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Lifler" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "TitreÅŸim" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Vektörler" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} piksel" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "Ölçü {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Stereografik" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Kırmızı+CamgöbeÄŸi camlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Kırmızı+Mavi camlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Kırmızı+YeÅŸil camlar" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "Åžaşı görünüş" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "Akçıl gözbebeÄŸi görünüşü" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Etiketler" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "Element Sembolüyle Birlikte" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "Atom Adıyla Birlikte" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "Atom Numarası ile Birlikte" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Atomdaki Konum Etiketi" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "Ortalı" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Yukarı SaÄŸ" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "AÅŸağı SaÄŸ" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Yukarı Sol" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "AÅŸağı Sol" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Renk" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "Åžemaya Göre" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Element (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Alternatif Konum" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Molekül" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Formülsel Yük" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "Kısmi Yük" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Sıcaklık (Görece)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Sıcaklık (Sabit)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "Amino Asit" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Zincir" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Grup" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Monomer" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "Güzel biçimli" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "Miras" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Siyah" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Beyaz" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "CamgöbeÄŸi" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Kırmızı" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "Turuncu" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Sarı" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "YeÅŸil" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Mavi" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Çivit Rengi" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "MenekÅŸe Moru" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Sarımsı pembe" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Zeytin YeÅŸili" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Kestane Rengi" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Gri" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "KurÅŸun Mavisi" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Altın" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "Orkide" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Donuk Yap" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Yarı Geçirgen Yap" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Arkaplan" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Yüzeyler" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "Eksenler" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "BaÄŸlıkutu" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Birim hücre" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "Zum" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "YaklaÅŸ" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "UzaklaÅŸ" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "Dönüş" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "X Hızını Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Y Hızını Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Z Hızını Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "FPS'i Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "Canlandırma" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Canlandırma Modu" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Bir Kere Oynat" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Palindrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Döngü" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "Oynat" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Durdur" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "Sonraki Kare" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Önceki Kare" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Geri Sar" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "Ters Çevir" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "Yeniden BaÅŸlat" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "Ölçüler" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Çift tıklama tüm ölçümleri baÅŸlatır ve bitirir" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "Mesafe ölçümü için tıklayın" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "Açı ölçümü için tıklayın" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Bükülme(iki düzlemli) ölçümü için tıklayın" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Uçbirimde bir dizilim görüntülemek için iki atoma tıklayın" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Ölçümleri sil" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "Ölçümleri listele" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Uzaklık birimleri nanometre" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Uzaklık birimleri Angstrom" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Uzaklık birimleri pikometre" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Seçimi Ayarla" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "Merkez" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Kimlik" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Etiket" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Atomu seç" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Zinciri seç" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Elementi seç" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "modelkit modundan çık" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Grubu seç" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Molekülü seç" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Yeri seç" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Simetri iÅŸlemini göster" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Göster" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol Betik Uçbirimi" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "Dosya İçeriÄŸi" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Dosya BaÅŸlığı" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "EÅŸyüzey JVXL verisi" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Moleküler orbital JVXL verisi" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Model" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "Yönlendirme" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "Uzay grubu" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Mevcut durum" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Dosya" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Tekrar Yükle" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "PDB'den aç" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Seçilen dosyayı aç" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Aç" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Tam birim hüce yükle" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Betik aç" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "{0} ın bir kopyasını kaydet" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "BetiÄŸi durum ile kaydet" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "BetiÄŸi geçmiÅŸ ile kaydet" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "{0} resim dışa aktar" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Tümünü JMOL dosyası (zip) olarak kaydet" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "JVXL eÅŸyüzeyini kaydet" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "{0} 3B model dışa aktar" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "Hesaplama" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Ä°yileÅŸtirilmiÅŸ yapı" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "Model kiti" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "MOL verisini çıkart" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Nokta Yüzey" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "van der Waals Yüzeyi" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "Moleküler Yüzey" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "Çözücü Yüzeyi ({0}-Angstrom araÅŸtırması)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "Çözücü- Girilebilir Yüzey (VDW + {0} Angstrom)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Tekrar Yükle {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "{0} + Ektan {1} i Yeniden Yükle" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Yenidenyükle + Çokyüzlü" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Gizle" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Noktalanmış" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Piksel GeniÅŸliÄŸi" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} px" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Angstrom GeniÅŸliÄŸi" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Seçme Işık Halkaları" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Hidrojenleri Göster" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Ölçümleri Göster" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Perspektif DerinliÄŸi" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol Renkleri" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Hakkında..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "betik derteyici HATASI: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "x y z eksenleri bekleniyor" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0} arkaplan model gösterimiyle birlikte izin verilmez" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "Yanlış bağımsız deÄŸiÅŸken hesabı" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "Miller dizinlerinin hepsi sıfır olamaz." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "hatalı [R,G,B] rengi" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "boolean bekleniyor" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "boole veya sayı gerekli" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "boole, sayı, veya {0} gerekli" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "renk gerekli" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "bir renk ya da palet adı (Jmol,Rasmol) gerekli" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "komut bekleniyor" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "{x y z} veya $name veya (atom ifadesi) gerekiyor" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "çizim nesnesi tanımlanmamış" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "beklenmeyen komut satırı sonu komutu" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "geçerli (atom ifadesi) gerekli" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "(atom ifadesi) veya tam sayı gerekli" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "dosyaadı gerekli" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "dosya bulunamadı" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "uyumsuz bağımsız deÄŸiÅŸkenler" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "yetersiz bağımsız deÄŸiÅŸken" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "tamsayı gerekli" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "alan dışı tamsayı ({0} - {1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "geçersiz bağımsız deÄŸiÅŸken" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "geçersiz parametre dizisi" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "anahtar sözcük gerekli" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "Kullanılabilir MO katsayı verisi yok" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "1 den {0} 'a bir MO dizini gerekli" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "Bu çerçeve için kullanılabilir MO taban/katsayı verisi yok" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "Kullanılabilir MO iÅŸgal verisi yok" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "Bu dosyada sadece bir kullanılabilir moleküler orbital var" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} sadece bir modelin gösterilmesine ihtiyaç duyuyor" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Kullanılabilir veri yok" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Dosyadan hiç kısmi yük okunmadı; Jmol MEP verisini iÅŸlemek için bunlara " +"ihtiyaç duyuyor." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Birim hücre yok" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "sayı gerekli" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "sayı ({0} veya {1}) olmalı" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "alan dışı ondalık sayı ({0} - {1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "'$' 'dan sonra nesne adı gerekli" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"düzlem bekleniyor -- ya üç nokta ya atom ifadeleri ya da {0} veya {1} veya " +"{2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "özellik adı gerekli" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "Uzay grubu {0} bulunamadı." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "Tırnak içindeki karakter dizgisi gerekli" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "tırnak içindeki karakter dizgisi veya tanımlayıcı gerekli" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "çok fazla dönme noktası belirtilmiÅŸ" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "çok fazla betik düzeyi" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "tanınmayan atom özelliÄŸi" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "tanınmayan baÄŸ özelliÄŸi" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "tanınmayan komut" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "tanınmayan çalışma zamanı deyimi" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "tanınmayan nesne" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "tanınmayan {0} parametre" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" +"Jmol durum betiÄŸinde bilinmeyen {0} parametre (ne olursa olsun ayarlandı)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "tanınmayan GÖSTER parametresi -- {0} kullanın" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "neyi yaz? {0} ya da {1} \"dosyaadı\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "betik HATASI: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "{0} atom silindi" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} hidrojen baÄŸ(lar)ı" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "{0} dosyası oluÅŸturuldu" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "{0} için geçersiz içerik" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "{ number number number } gerekli" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "ifade sonu bekleniyor" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "tanımlayıcı ya da artık belirtimi bekleniyor" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "geçersiz atom belirtimi" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "geçersiz zincir belirtimi" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "geçersiz ifade belirtkesi: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "geçersiz model belirtimi" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "{0} için END bulunamıyor" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "sayı ya da deÄŸiÅŸken adı bekleniyor" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "artık belirtimi (ALA, AL?, A*) bekleniyor" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "{0} bekleniyor" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "{0} beklenmiyor" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "tanınmayan ifade belirtkesi: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "tanınmayan belirtke: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, fuzzy, java-format +msgid "{0} struts added" +msgstr "{0} hidrojen eklendi" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "{0} baÄŸlantı(lar) silindi" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} yeni baÄŸ; {1} düzenlenmiÅŸ" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Menü için tıklayın..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet sürümü {0} {1}.\n" +"\n" +"Bir OpenScience projesi.\n" +"\n" +"Daha fazla bilgi için http://www.jmol.org 'u ziyaret ediniz" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Dosya Hatası:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "yeni atom ya da baÄŸ ata ({0} gerekir)" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "atom sil ({0} gerekir)" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "baÄŸ sil ({0} gerekir)" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "atomu taşı ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "etiketi taşı ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "seçili atomları hareket ettir ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "bir atom seç" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "atomları birleÅŸtir ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "döndür" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "seçili atomları döndür ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "bir atom seç ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "atomları seç ve sürükle ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "HİÇBÄ°RÄ°NÄ° seçme ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "seçimi deÄŸiÅŸtir ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "yaklaÅŸ (pencerenin saÄŸ kenarı boyunca)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "hareketi durdur ({0} gerektirir)" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "dönüştür" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "yaklaÅŸ" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "modeli bir eksen etrafında döndürebilmek için bir tane daha atom seçin" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "modeli bir eksen etrafında döndürebilmek için iki atom seçin" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Günlük dosyası {0} olarak ayarlanıyor" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Günlük dosyası yolu ayarlanamıyor." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} atomlar gizli" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} atom(lar) seçildi" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "Etiketi taşımak için sürükleyin" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "panoya eriÅŸilemiyor -- iÅŸaretli uygulamacığı kullanın" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} hidrojen eklendi" + +#~ msgid "Hide Symmetry" +#~ msgstr "Simetriyi Gizle" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Jmol küçük uygulaması yükleniyor ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} saniye" + +#~ msgid "Java version:" +#~ msgstr "Java sürümü:" + +#~ msgid "1 processor" +#~ msgstr "1 iÅŸlemci" + +#~ msgid "unknown processor count" +#~ msgstr "bilinmeyen iÅŸlemci sayısı" + +#~ msgid "Java memory usage:" +#~ msgstr "Java hafıza kullanımı:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB boÅŸ" + +#~ msgid "unknown maximum" +#~ msgstr "bilinmeyen maksimum" + +#~ msgid "Open file or URL" +#~ msgstr "Dosya veya URL aç" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ug.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ug.po new file mode 100755 index 000000000000..bb1b57a52b1c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/ug.po @@ -0,0 +1,2564 @@ +# Uyghur translation for jmol +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Gheyret T.Kenji \n" +"Language-Team: Uyghur \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +msgid "&File" +msgstr "" + +#: org/jmol/console/GenericConsole.java:92 +msgid "&Close" +msgstr "" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "ياردەم(&H)" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "بۇيرۇقلار(&C)" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "تÛخىمۇ ÙƒÛ†Ù¾(&M)" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:143 +msgid "Font" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:770 +msgid "none" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +msgid "Jmol Script Commands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +msgid "Axis x" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +msgid "Axis y" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +msgid "Axis z" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +msgid "Axis a" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +msgid "Axis b" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +msgid "Axis c" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "modelKitMode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "JavaScript Console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Open local file" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Open URL" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Save as PNG/JMOL (image+zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/uk.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/uk.po new file mode 100755 index 000000000000..2cfe05a5b322 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/uk.po @@ -0,0 +1,2656 @@ +# Ukrainian translation for jmol +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the jmol package. +# +# Yuri Chornoivan , 2010. +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-10-09 20:00+0000\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "Елемент?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Скриптова конÑоль Jmol" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "Файл" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "Закрити" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "&Довідка" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "&Знайти…" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "&Команди" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "Математичні &функції" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "Вк&азати параметри" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "&Додатково" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "Редактор" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "Стан" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "ЗапуÑтити" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "Спорожнити поле виводу" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "Спорожнити поле вводу" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "Журнал" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "Завантажити" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"натиÑніть CTRL-ENTER, щоб почати Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ñдка, або вÑтавте дані " +"моделі Ñ– натиÑніть кнопку «Завантажити»" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Тут буде наведено повідомленнÑ. Команди Ñлід вводити у поле, розташоване " +"нижче. Щоб отримати довідку, ÑкориÑтайтеÑÑ Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð¼ «Довідка» меню конÑолі: " +"довідку буде відкрито у новому вікні переглÑдача інтернету." + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Редактор Ñкриптів Jmol" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "КонÑоль" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "Відкрити" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "Спереду" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "Скрипт" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "Перевірити" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "Вгору" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "Крок" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "Пауза" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "Поновити" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "Перервати" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "Спорожнити" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "Закрити" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "Файл або URL:" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "Тип зображеннÑ" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "ЯкіÑÑ‚ÑŒ JPEG ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "СтиÑÐºÐ°Ð½Ð½Ñ PNG ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "ЯкіÑÑ‚ÑŒ PNG ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "Так" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "ÐÑ–" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "Ви бажаєте перезапиÑати файл {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "Увага" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "УÑÑ– файли" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "СкаÑувати" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "Закрити діалогове вікно вибору файла" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "Подробиці" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "Каталог" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "Відкрити позначений каталог" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "Ðтрибути" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "Змінено" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "Звичайний файл" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "Ðазва" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "Ðазва файла:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "Розмір" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "Файли типу:" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "Тип" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "Довідка" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "Довідка щодо вибору файлів" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "Домівка" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "СпиÑок" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "Шукати у:" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "Помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÐ¸" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "Ðова тека" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "Створити теку" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "Відкрити вибраний файл" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "Зберегти" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "Зберегти вибраний файл" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "Зберегти у:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "Оновити" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "Оновити ÑпиÑок каталогів" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "Вгору" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "Рівнем вище" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "Гаразд" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "ПереглÑд" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "Долучити моделі" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð· банку протеїнів" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"ЗауваженнÑ: виÑвлено дані щодо Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ð¾Ð¼Ñ–Ð² водню Ñкелетного аміду, " +"Ñкі буде проігноровано. Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ð¾Ð¼Ñ–Ð² буде визначено наближено, Ñк у " +"Ñтандартному аналізі вторинної Ñтруктури білків.\n" +"СкориÑтайтеÑÑ Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð¼ {0}, щоб наказати програмі не викориÑтовувати це " +"наближеннÑ.\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"ЗауваженнÑ: виÑвлено дані щодо Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ð¾Ð¼Ñ–Ð² водню Ñкелетного аміду, " +"Ñкі буде викориÑтано. Отримані результати можуть значно відрізнÑтиÑÑ Ð²Ñ–Ð´ " +"даних аналізу вторинної Ñтруктури білків.\n" +"СкориÑтайтеÑÑ Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð¼ {0}, щоб наказати програмі ігнорувати дані щодо " +"Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ð¾Ð¼Ñ–Ð² водню.\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "ÐрабÑька" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "ÐÑтурійÑька" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "ÐзербайджанÑька" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "БоÑнійÑька" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "КаталанÑька" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "ЧеÑька" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "ДанÑька" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "Ðімецька" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "Грецька" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "ÐвÑтралійÑька англійÑька" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "БританÑька англійÑька" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "ÐмериканÑька англійÑька" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "ІÑпанÑька" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "ЕÑтонÑька" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "БаÑкÑька" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "ФінÑька" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "ФарерÑька" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "Французька" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "Фризька" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "ГаліÑійÑька" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "ХорватÑька" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "УгорÑька" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "ВірменÑька" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "ІндонезійÑька" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "ІталійÑька" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "ЯпонÑька" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "ЯванÑька" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "КорейÑька" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "МалайÑька" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "Ðорвезька (Бокмал)" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "ÐідерландÑька" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "ОкÑітанÑька" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "ПольÑька" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "ПортугальÑька" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "БразильÑька португальÑька" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "РоÑійÑька" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "СловенÑька" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "СербÑька" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "ШведÑька" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "ТамільÑька" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "Телугу" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "Турецька" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "УйгурÑька" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "УкраїнÑька" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "Узбецька" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "Спрощена китайÑька" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "Традиційна китайÑька" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ ÐºÐ»Ð°Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Ñили {0}" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "Ðе позначено жодного атома — дії не виконуватимутьÑÑ!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} атомів буде мінімізовано." + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "не вдалоÑÑ Ð²Ñтановити поле Ñили {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "Ñтворити" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "вернути (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "повторити (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "центр" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "додати атоми водню" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "мінімізувати" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "виправити кількіÑÑ‚ÑŒ водню Ñ– мінімізувати" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "Ñпорожнити" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "зберегти файл" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "зберегти Ñтан" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "інвертувати Ñтерехімічне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÑ–Ð»ÐµÑ†ÑŒ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "вилучити атом" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "перетÑгнути до зв’Ñзку" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "перетÑгнути атом" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "перетÑгнути атом (Ñ– мінімізувати)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "перетÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð»ÐµÐºÑƒÐ»Ð¸ (ALT — обертаннÑ)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "перетÑгнути Ñ– мінімізувати молекулу (швартуваннÑ)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "збільшити зарÑд" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "зменшити зарÑд" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "вилучити зв’Ñзок" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "одинарний" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "подвійний" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "потрійний" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "збільшити порÑдок" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "зменшити порÑдок" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "обертати зв’Ñзок (SHIFT-ПЕРЕТЯГУВÐÐÐЯ)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "вийти з режиму моделюваннÑ" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "ПроÑторова група" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "Ðемає" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "Ð’Ñе" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} процеÑорів" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "Ð’Ñього: {0} МБ" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "МакÑимум: {0} MБ" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð½Ðµ виконуєтьÑÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Скриптова конÑоль Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "Довідник з кориÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¸ÑˆÐµÑŽ" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "Переклади" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "СиÑтема" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "Ðтомів не завантажено" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "ÐалаштуваннÑ:" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "Елемент" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "Модель/Структура" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "Мова" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "За назвою залишку" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "За HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "МолекулÑрні орбіталі ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "СиметріÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "ВідомоÑÑ‚Ñ– щодо моделі" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "Вибір ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "Ð’ÑÑ– {0} моделі" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "Збірка {0} моделей" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "атоми: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "зв’ÑзкиЖ {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "групи: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "ланцюги: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "полімери: {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "модель {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "ПереглÑд {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "Головне меню" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "Біомолекули" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "біомолекула {0} ({1} атомів)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð±Ñ–Ð¾Ð¼Ð¾Ð»ÐµÐºÑƒÐ»Ð¸ {0} ({1} атомів)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "Ðемає" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "Показати лише позначені" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "Інвертувати вибір" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "ПереглÑд" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "Ðайкраще" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "Спереду" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "Зліва" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "Справа" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "Згори" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "Знизу" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "Ззаду" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "ОÑÑ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "ОÑÑ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "ОÑÑ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "ОÑÑ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "ОÑÑ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "ОÑÑ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "Сцени" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "Протеїн" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "ОÑнова" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "Бічні ланцюжки" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "ПолÑрні залишки" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "ÐеполÑрні залишки" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "Базові залишки (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "КиÑлотні залишки (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "ÐезарÑджені залишки" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "Ðуклеотиди" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "ДÐК" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "РÐК" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "Базові" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "ÐТ-пари" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "ГЦ-пари" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "ÐУ-пари" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "Вторинна Ñтруктура" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "Гетеро" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "Ð’ÑÑ– з ПБД \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "Ð’ÑÑ– розчинні" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "Ð’ÑÑ– водорозчинні" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "Ð’ÑÑ– неводорозчинні" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "Ðеводорозчинні HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "Ліганд" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "Карбогідрат" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "Ðічого з наведеного вище" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "Стиль" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "Схема" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "Ð—Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñтору за моделлю CPK" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "Кульки Ñ– Ñтрижні" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "Стрижні" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "КаркаÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "Макет" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "ТраÑуваннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "Ðтоми" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "Вимкнено" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% Ван-дер-ВаальÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "Зв’Ñзки" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "Увімкнено" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "Водневі зв’Ñзки" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "ОбчиÑлити" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "Ð’Ñтановити бічний ланцюжок H-зв’Ñзків" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "Ð’Ñтановити ÐºÐ°Ñ€ÐºÐ°Ñ H-зв’Ñзків" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "ДиÑульфідні зв’Ñзки" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "Ð’Ñтановити бічний ланцюжок диÑульфідних зв’Ñзків" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "Ð’Ñтановити ÐºÐ°Ñ€ÐºÐ°Ñ Ð´Ð¸Ñульфідних зв’Ñзків" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "Структури" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Ракетки" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "Стрічки" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Ракети" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "Ðитки" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "ВібраціÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "Вектори" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "Спектри" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "1H-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "13C-NMR" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} пікÑелів" + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "МаÑштаб {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "Стереографічна" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "Червоно-блакитні окулÑри" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "Червоно-Ñині окулÑри" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "Червоно-зелені окулÑри" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "СтереоÑкопіÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "ÐвтоÑтереограма" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "Мітки" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "З Ñимволом елемента" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "З назвою атома" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "З номером атома" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–Ñ‚ÐºÐ¸ щодо атома" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "По центру" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "Вгорі праворуч" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "Внизу праворуч" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "Вгорі ліворуч" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "Внизу ліворуч" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "Колір" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "За Ñхемою" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "Елемент (CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "Ðльтернативне розташуваннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "Молекула" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "Формальний зарÑд" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "ЧаÑтковий зарÑд" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "Температура (відноÑна)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "Температура (абÑолютна)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "ÐмінокиÑлота" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "Ланцюжок" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "Група" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "Мономер" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "ОбриÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "УÑпадкувати" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "Чорний" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "Білий" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "Блакитний" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "Червоний" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "ЖовтогарÑчий" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "Жовтий" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "Зелений" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "Синій" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "Індиго" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "Фіалковий" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "Оранжево-рожевий" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "Оливковий" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "Каштановий" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "Сірий" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "Сизий" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "Золотий" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "СинÑво-рожевий" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "Зробити непрозорим" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "Зробити прозорим" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "Тло" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "Поверхні" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "ОÑÑ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "Рамка" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "Комірка одиниці" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "МаÑштабуваннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "Збільшити" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "Зменшити" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð°Ð²ÐºÐ¾Ð»Ð¾ оÑÑ–" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "Ð’Ñтановити швидкіÑÑ‚ÑŒ за X" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "Ð’Ñтановити швидкіÑÑ‚ÑŒ за Y" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "Ð’Ñтановити швидкіÑÑ‚ÑŒ за Z" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "Ð’Ñтановити чаÑтоту кадрів" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "ÐнімаціÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "Режим анімації" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "Одноразове відтвореннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "Паліндром" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "Цикл" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "ПуÑк" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "Зупинити" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "ÐаÑтупний кадр" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "Попередній кадр" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "Повний назад" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "РеверÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "ПерезапуÑтити" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "ВимірюваннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "Подвійне ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ” Ñ– завершує вÑÑ– вимірюваннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "ÐатиÑніть Ð´Ð»Ñ Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñтані" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "ÐатиÑніть, щоб вимірÑти кут" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "Клацніть, щоб почати Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð´Ð²Ð¾Ð³Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ кута крученнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "Позначте клацаннÑм два атоми, щоб переглÑнути поÑлідовніÑÑ‚ÑŒ у конÑолі." + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "Вилучити виміри" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "СпиÑок вимірів" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "Вимір відÑтані у нанометрах" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "Ð’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñтані у ангÑтремах" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "Ð’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñтані у пікометрах" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "Ð’Ñтановити вибір" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "По центру" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "Профіль" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "Мітка" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "Вибрати атом" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "Вибрати ланцюжок" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "Вибрати елемент" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "вийти з режиму моделюваннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "Вибрати групу" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "Вибрати молекулу" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "Вибрати міÑце" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "Показати дію пошуку Ñиметричної чаÑтини" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "Показати" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Скриптова конÑоль Jmol" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "ВміÑÑ‚ файла" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "Заголовок файла" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "Дані ізоповерхні JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "Дані молекулÑрних орбіталей JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "Модель" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "ОрієнтаціÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "ПроÑторова група" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "Поточний Ñтан" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "Файл" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "Перезавантажити" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "Відкрити з PDB" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "Відкрити вибраний файл" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "Відкрити" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "Завантажити комірку одиниць" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "Відкрити Ñкрипт" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "ЗахопленнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "Захопити коливаннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "Захопити обертаннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "Розпочати захопленнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "Завершити захопленнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "Вимкнути захопленнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "Повторно увімкнути захопленнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "Ð’Ñтановити чаÑтоту Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "Увімкнути/Вимкнути циклічне захопленнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "Зберегти копію {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "Зберегти Ñкрипт зі Ñтаном" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "Зберегти Ñкрипт з журналом" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "ЕкÑпортувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "Зберегти вÑÑ– дані до файла JMOL (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "Зберегти ізоповерхню JVXL" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "ЕкÑпортувати проÑторову модель {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "ОбчиÑленнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "Оптимізувати Ñтруктуру" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "МоделюваннÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "Видобути дані MOL" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "Точкова поверхнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "ÐŸÐ¾Ð²ÐµÑ€Ñ…Ð½Ñ Ð’Ð°Ð½-дер-ВаальÑа" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "МолекулÑрна поверхнÑ" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "ÐŸÐ¾Ð²ÐµÑ€Ñ…Ð½Ñ Ñ€Ð¾Ð·Ñ‡Ð¸Ð½Ð½Ð¸ÐºÐ° ({0}-ангÑтремне зондуваннÑ)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "ДоÑтупна Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ‡Ð¸Ð½Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ñ (ВДВ + {0} ангÑтрем)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "МолекулÑрний електроÑтатичний потенціал (діапазон ALL)" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "МолекулÑрний електроÑтатичний потенціал (діапазон -0.1 – 0.1)" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "Перезавантажити {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "Перезавантажити {0} + показати {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "Перезавантажити + Багатогранник" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "Приховати" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "Пунктир" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "Ширина у пікÑелÑÑ…" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} пк" + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "Ширина у ангÑтремах" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "Ореоли позначених" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "Показувати атоми водню" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "Показувати розміри" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "Глибина перÑпективи" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "Кольори RasMol" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "Про програму…" + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "ПОМИЛКРобробки Ñкрипту: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "Ñлід викориÑтовувати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° віÑÑми x y z" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "Ðе можна викориÑтовувати {0}, Ñкщо у тлі показано модель" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "помилкова кількіÑÑ‚ÑŒ параметрів" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "ІндекÑи Міллера не можуть бути нульовими." + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "помилкова трійка кольорів [R,G,B]" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "Ñлід викориÑтовувати булівÑьке значеннÑ" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "Ñлід викориÑтовувати булівÑьке або чиÑлове значеннÑ" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "Ñлід викориÑтовувати булівÑьке, чиÑлове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ {0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "не вдалоÑÑ Ð²Ñтановити значеннÑ" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "Ñлід викориÑтовувати колір" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "Ñлід викориÑтовувати колір або назву палітри (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "Ñлід було викориÑтати команду" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" +"Ñлід викориÑтовувати {x y z}, $name або (Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° допомогою Ñимволів атомів)" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "об’єкт креÑÐ»ÐµÐ½Ð½Ñ Ð½Ðµ визначено" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "помилкове Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ñкрипту" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "Ñлід викориÑтовувати коректний (Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° допомогою Ñимволів атомів)" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "" +"Ñлід викориÑтовувати (Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° допомогою Ñимволів атомів) або ціле чиÑло" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "Ñлід викориÑтовувати назву файла" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "файл не знайдено" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "неÑуміÑні параметри" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "недоÑÑ‚Ð°Ñ‚Ð½Ñ ÐºÑ–Ð»ÑŒÐºÑ–ÑÑ‚ÑŒ параметрів" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "Ñлід було викориÑтовувати ціле чиÑло" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "ціле чиÑло поза межами діапазону ({0}-{1})" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "некоректний параметр" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "некоректний порÑдок параметрів" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "Ñлід було викориÑтовувати ключове Ñлово" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "не виÑвлено даних коефіцієнтів молекулÑрних орбіталей" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" +"Слід викориÑтовувати Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð»ÐµÐºÑƒÐ»Ñрних орбіталей у межах від 1 до {0}" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" +"Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ кадру не виÑвлено даних базових значень та коефіцієнтів " +"молекулÑрних орбіталей" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "дані щодо Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¼Ð¾Ð»ÐµÐºÑƒÐ»Ñрних орбіталей недоÑтупні" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "У цьому файлі визначено лише одну молекулÑрну орбіталь" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "Ð”Ð»Ñ {0} потрібно, щоб було показано лише одну модель" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} вимагає Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ однієї моделі" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "Ðе виÑвлено даних" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ дані щодо чаÑткових зарÑдів з файла; Jmol ці дані " +"потрібні Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ даних MEP." + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "Ðемає комірки одиниць" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "Ñлід було викориÑтати чиÑло" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "чиÑлом має бути ({0} або {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "деÑÑткове чиÑло поза діапазоном ({0}-{1})" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "піÑÐ»Ñ Â«$» Ñлід вказувати назву об’єкта" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"Ñлід викориÑтовувати площину — або три точки, або Ð·Ð°Ð¿Ð¸Ñ Ñимволами атомів, " +"або {0}, або {1}, або {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "Ñлід було викориÑтовувати назву влаÑтивоÑÑ‚Ñ–" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "не знайдено проÑторову групу {0}." + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "Ñлід викориÑтовувати Ñ€Ñдок у лапках" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "Ñлід викориÑтовувати Ñ€Ñдок у лапках або ідентифікатор" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "було вказано забагато точок обертаннÑ" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "занадто багато рівнів Ñкрипту" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "невідома влаÑтивіÑÑ‚ÑŒ атома" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "невідома влаÑтивіÑÑ‚ÑŒ зв’Ñзку" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "невідома команда" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "невідомий вираз під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "невідомий об’єкт" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "невідомий параметр {0}" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "невідомий параметр {0} у Ñкрипті Ñтану Jmol (вÑтановлено попри вÑе)" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "невідомий параметр SHOW — викориÑтано {0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "що запиÑувати? {0} або «назву файла» {1}" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "ПОМИЛКРÑкрипту: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "вилучено {0} атомів" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} водневих зв’Ñзки" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "Ñтворено файл {0}" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "некоректний контекÑÑ‚ {0}" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "Ñлід було викориÑтати набір { чиÑло чиÑло чиÑло }" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "Ñлід було викориÑтати команду Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð°Ð·Ñƒ" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "Ñлід було викориÑтати ідентифікатор або Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð»Ð¸ÑˆÐºÑƒ" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "некоректний Ð¾Ð¿Ð¸Ñ Ð°Ñ‚Ð¾Ð¼Ð°" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "некоректний Ð¾Ð¿Ð¸Ñ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ°" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "некоректний елементи виразу: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "некоректний Ð¾Ð¿Ð¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "у {0} не виÑтачає команди END" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "Ñлід було викориÑтати чиÑло або назву змінної" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "Ñлід було вказати Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð»Ð¸ÑˆÐºÑƒ (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "Ñлід було викориÑтати {0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "не Ñлід викориÑтовувати {0}" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "невідомий елементи виразу: {0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "невідомий елемент: {0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "Змінено {0} зарÑдів" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "додано {0} розпірки" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "ЗауваженнÑ: циклічніÑÑ‚ÑŒ можна увімкнути за допомогою {0}" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "Затримка анімації на оÑнові: {0}" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "вилучено {0} з’єднань" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} нові зв’Ñзки; {1} змінено" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "ЗауваженнÑ: у цей контакт включено декілька моделей!" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "Клацніть, щоб відкрити меню…" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Ðплет Jmol, верÑÑ–Ñ {0} {1}.\n" +"\n" +"Проект OpenScience.\n" +"\n" +"Див. http://www.jmol.org Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— інформації" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "Помилка у файлі:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "призначити/додати атом або зв’Ñзок (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "відкрити нещодавнє контекÑтне меню (ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ñƒ Ñамому Jmol)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "вилучити атом (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "вилучити зв’Ñзок (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "Ñкоригувати глибину (Ð·Ð°Ð´Ð½Ñ Ð¿Ð»Ð¾Ñ‰Ð¸Ð½Ð°, потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "переÑунути атом (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "переÑунути веÑÑŒ об’єкт креÑÐ»ÐµÐ½Ð½Ñ (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "переÑунути певну точку креÑÐ»ÐµÐ½Ð½Ñ (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–Ñ‚ÐºÐ¸ (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "переÑунути атом Ñ– мінімізувати молекулу (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "переÑунути Ñ– мінімізувати молекулу (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "переÑунути позначені атоми (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "перетÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ð¾Ð¼Ñ–Ð² у напрÑмку Z (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "імітувати ÑенÑорне ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою миші)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "паралельно перенеÑти точку навігації (потрібно {0} Ñ– {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "вибрати атом" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "з’єднати атоми (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "вибрати точку ISOSURFACE (потрібно {0}" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "вибрати мітку Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñтану приховано/показано (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"вибрати атом Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ у виміри (піÑÐ»Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ " +"піÑÐ»Ñ {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "вибрати точку або атом Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ñƒ (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "вибрати точку DRAW (Ð´Ð»Ñ Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ) (потрібно {0}" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "відкрити повне контекÑтне меню" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "відновити (піÑÐ»Ñ ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð»Ñ–Ð²Ð¾ÑŽ кнопкою миші поза моделлю)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "обертаннÑ" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "обертати гілку навколо зв’Ñзку (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "обертати позначені атоми (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð°Ð²ÐºÐ¾Ð»Ð¾ Z" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"обертати навколо Z (горизонтальне переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° миші) або змінювати " +"маÑштаб (вертикальне переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° миші)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "позначити атом (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ– перетÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ð¾Ð¼Ñ–Ð² (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "знÑти Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· групи атомів (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "знÑти Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· уÑÑ–Ñ… (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "додати цю групу атомів до набору позначених атомів (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "позначити або знÑти Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"Ñкщо позначено вÑе, знÑти позначеннÑ, інакше додати цю групу атомів до " +"набору позначених атомів (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "вибрати атом Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб розпочати або завершити вимірюваннÑ" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "Ñкоригувати оÑнову (Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ð¿Ð»Ð¾Ñ‰Ð¸Ð½Ð°, потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "переÑунути вікно площини/глибини (обидві площини; потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "зміна маÑштабу (вздовж правого краю вікна)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"клацніть лівою кнопкою миші у двох точках, щоб почати Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð°Ð²ÐºÐ¾Ð»Ð¾ віÑÑ– " +"проти годинникової Ñтрілки (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" +"клацніть лівою кнопкою миші у двох точках, щоб почати Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð°Ð²ÐºÐ¾Ð»Ð¾ віÑÑ– " +"за годинниковою Ñтрілкою (потрібно {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "зупинити рух (потрібен {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" +"обертати модель навколо віÑÑ– (ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð· наÑтупним відпуÑканнÑм кнопки " +"призведе до зупинки обертаннÑ)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "паралельне переÑуваннÑ" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "маÑштаб" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "вибрати ще один атом Ð´Ð»Ñ Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ– навколо віÑÑ–" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "вибрати два атоми Ð´Ð»Ñ Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ– навколо віÑÑ–" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "вибрати ще один атом Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ взаємозв’Ñзків Ñиметрії" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "вибрати два атоми Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ взаємозв’Ñзків Ñиметрії між ними" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "ÑкаÑовано" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "{0} збережено" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° журналу {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "Ðе вдалоÑÑ Ð²Ñтановити шлÑÑ… до файла журналу." + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "приховано атоми {0}" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "позначено атоми {0}" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "ПеретÑгніть, щоб переÑунути мітку" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "доÑтуп до буфера даних заборонено — викориÑтовуйте підпиÑаний аплет" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "додано атоми водню {0}" + +#~ msgid "Hide Symmetry" +#~ msgstr "Приховати Ñиметричні" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð¿Ð»ÐµÑ‚Ñƒ Jmol…" + +#~ msgid " {0} seconds" +#~ msgstr " {0} Ñекунд" + +#~ msgid "{0} struts mp.added" +#~ msgstr "Додано {0} розпинок" + +#~ msgid "Java version:" +#~ msgstr "ВерÑÑ–Ñ Java:" + +#~ msgid "1 processor" +#~ msgstr "1 процеÑор" + +#~ msgid "unknown processor count" +#~ msgstr "невідома кількіÑÑ‚ÑŒ процеÑорів" + +#~ msgid "Java memory usage:" +#~ msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ð¼â€™ÑÑ‚Ñ– Java:" + +#~ msgid "{0} MB free" +#~ msgstr "Вільно: {0} MБ" + +#~ msgid "unknown maximum" +#~ msgstr "макÑимум невідомий" + +#~ msgid "Open file or URL" +#~ msgstr "Відкрити файл або адреÑу URL" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/uz.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/uz.po new file mode 100755 index 000000000000..c2a7dcfd55d2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/uz.po @@ -0,0 +1,2532 @@ +# Uzbek translation for jmol +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2013-10-09 20:04+0200\n" +"PO-Revision-Date: 2013-06-02 23:46+0000\n" +"Last-Translator: Nicolas Vervelle \n" +"Language-Team: Uzbek \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/applet/AppletWrapper.java:101 +msgid "Loading Jmol applet ..." +msgstr "Jmol аплети юкланмоқда..." + +#: org/jmol/applet/AppletWrapper.java:176 +#, java-format +msgid " {0} seconds" +msgstr " {0} Ñекунд" + +#: org/jmol/applet/Jmol.java:711 org/jmol/appletjs/Jmol.java:366 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet верÑÐ¸Ñ {0}{1}.\n" +"\n" +"Очиқ кодли лойиҳа.\n" +"\n" +"Маълумот олиш учун http://www.jmol.org ни кўринг." + +#: org/jmol/applet/Jmol.java:985 org/jmol/appletjs/Jmol.java:603 +msgid "File Error:" +msgstr "Файлда ҳатолик:" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:76 +#: org/jmol/modelkit/ModelKitPopup.java:56 +msgid "Element?" +msgstr "" + +#: org/jmol/console/GenericConsole.java:79 +msgid "&Help" +msgstr "&Ðрдам" + +#: org/jmol/console/GenericConsole.java:80 +msgid "&Search..." +msgstr "Қидириш..." + +#: org/jmol/console/GenericConsole.java:81 +msgid "&Commands" +msgstr "Буйруқлар" + +#: org/jmol/console/GenericConsole.java:82 +msgid "Math &Functions" +msgstr "Математик ФункциÑлар" + +#: org/jmol/console/GenericConsole.java:83 +msgid "Set &Parameters" +msgstr "Параметрларни аниқла" + +#: org/jmol/console/GenericConsole.java:84 +msgid "&More" +msgstr "&Кўпроқ" + +#: org/jmol/console/GenericConsole.java:85 +msgid "Editor" +msgstr "Таҳрирчи" + +#: org/jmol/console/GenericConsole.java:86 +msgid "State" +msgstr "Ҳолат" + +#: org/jmol/console/GenericConsole.java:87 +#: org/jmol/console/ScriptEditor.java:140 +msgid "Run" +msgstr "Ishga tushirish" + +#: org/jmol/console/GenericConsole.java:88 +msgid "Clear Output" +msgstr "" + +#: org/jmol/console/GenericConsole.java:89 +msgid "Clear Input" +msgstr "" + +#: org/jmol/console/GenericConsole.java:90 +#: org/jmol/popup/MainPopupResourceBundle.java:895 +msgid "History" +msgstr "Тарих" + +#: org/jmol/console/GenericConsole.java:91 +msgid "Load" +msgstr "Юклаш" + +#: org/jmol/console/GenericConsole.java:93 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" + +#: org/jmol/console/GenericConsole.java:95 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" + +#: org/jmol/console/GenericConsole.java:128 +msgid "Jmol Script Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:101 +msgid "Jmol Script Editor" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:133 +#: org/jmol/popup/MainPopupResourceBundle.java:891 +msgid "Console" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:135 org/jmol/dialog/Dialog.java:445 +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:472 +msgid "Open" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:136 +msgid "Script" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:137 +msgid "Check" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:138 +msgid "" +"Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:139 +msgid "Step" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:141 +#: org/jmol/popup/MainPopupResourceBundle.java:847 +msgid "Pause" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:143 +#: org/jmol/popup/MainPopupResourceBundle.java:848 +msgid "Resume" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Halt" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Clear" +msgstr "" + +#: org/jmol/console/ScriptEditor.java:148 +msgid "Close" +msgstr "" + +#: org/jmol/dialog/Dialog.java:93 +msgid "File or URL:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:270 +msgid "Image Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:285 org/jmol/dialog/Dialog.java:326 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:299 +#, java-format +msgid "PNG Compression ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:329 +#, java-format +msgid "PNG Quality ({0})" +msgstr "" + +#: org/jmol/dialog/Dialog.java:376 org/jmol/dialog/Dialog.java:488 +msgid "Yes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:376 org/jmol/dialog/Dialog.java:486 +msgid "No" +msgstr "" + +#: org/jmol/dialog/Dialog.java:378 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "" + +#: org/jmol/dialog/Dialog.java:379 +msgid "Warning" +msgstr "" + +#: org/jmol/dialog/Dialog.java:437 +msgid "All Files" +msgstr "" + +#: org/jmol/dialog/Dialog.java:438 org/jmol/dialog/Dialog.java:485 +msgid "Cancel" +msgstr "" + +#: org/jmol/dialog/Dialog.java:440 +msgid "Abort file chooser dialog" +msgstr "" + +#: org/jmol/dialog/Dialog.java:442 org/jmol/dialog/Dialog.java:443 +msgid "Details" +msgstr "" + +#: org/jmol/dialog/Dialog.java:444 +msgid "Directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:447 +msgid "Open selected directory" +msgstr "" + +#: org/jmol/dialog/Dialog.java:448 +msgid "Attributes" +msgstr "" + +#: org/jmol/dialog/Dialog.java:449 +msgid "Modified" +msgstr "" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Generic File" +msgstr "" + +#: org/jmol/dialog/Dialog.java:451 +msgid "Name" +msgstr "" + +#: org/jmol/dialog/Dialog.java:452 +msgid "File Name:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:453 +msgid "Size" +msgstr "" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Files of Type:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:455 +msgid "Type" +msgstr "" + +#: org/jmol/dialog/Dialog.java:456 +msgid "Help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:458 +msgid "FileChooser help" +msgstr "" + +#: org/jmol/dialog/Dialog.java:459 org/jmol/dialog/Dialog.java:460 +msgid "Home" +msgstr "" + +#: org/jmol/dialog/Dialog.java:461 org/jmol/dialog/Dialog.java:462 +msgid "List" +msgstr "" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Look In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Error creating new folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:466 +msgid "New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:468 +msgid "Create New Folder" +msgstr "" + +#: org/jmol/dialog/Dialog.java:471 +msgid "Open selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:473 org/jmol/dialog/Dialog.java:476 +msgid "Save" +msgstr "" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Save selected file" +msgstr "" + +#: org/jmol/dialog/Dialog.java:477 +msgid "Save In:" +msgstr "" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Update" +msgstr "" + +#: org/jmol/dialog/Dialog.java:480 +msgid "Update directory listing" +msgstr "" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Up" +msgstr "" + +#: org/jmol/dialog/Dialog.java:482 +msgid "Up One Level" +msgstr "" + +#: org/jmol/dialog/Dialog.java:487 +msgid "OK" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:97 +msgid "Append models" +msgstr "" + +#: org/jmol/dialog/FilePreview.java:99 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:219 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:225 +msgid "No atoms selected -- nothing to do!" +msgstr "" + +#: org/jmol/minimize/Minimizer.java:310 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "" + +#: org/jmol/minimize/Minimizer.java:325 +#, java-format +msgid "could not setup force field {0}" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:84 +msgid "new" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:85 +msgid "undo (CTRL-Z)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:86 +msgid "redo (CTRL-Y)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:87 +#: org/jmol/viewer/ActionManager.java:342 +msgid "center" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "add hydrogens" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "fix hydrogens and minimize" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +msgid "clear" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "save file" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "save state" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "invert ring stereochemistry" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "delete atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "drag to bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "drag atom" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "drag atom (and minimize)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag and minimize molecule (docking)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:109 +msgid "increase charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:110 +msgid "decrease charge" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:111 +msgid "delete bond" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:112 +msgid "single" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "double" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "triple" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "increase order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "decrease order" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "exit modelkit mode" +msgstr "" + +#: org/jmol/modelsetbio/AminoPolymer.java:579 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" + +#: org/jmol/modelsetbio/AminoPolymer.java:585 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:636 +#: org/jmol/popup/MainPopupResourceBundle.java:570 +msgid "No atoms loaded" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:913 +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "Space Group" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:983 org/jmol/popup/GenericPopup.java:1033 +#: org/jmol/popup/MainPopupResourceBundle.java:603 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +msgid "All" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1145 +#: org/jmol/popup/MainPopupResourceBundle.java:1000 +msgid "Mouse Manual" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1147 +#: org/jmol/popup/MainPopupResourceBundle.java:1001 +msgid "Translations" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1151 +msgid "System" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1156 +msgid "Java version:" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1170 +msgid "1 processor" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1171 +#, java-format +msgid "{0} processors" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1173 +msgid "unknown processor count" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1174 +msgid "Java memory usage:" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1179 +#, java-format +msgid "{0} MB total" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1181 +#, java-format +msgid "{0} MB free" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1184 +#, java-format +msgid "{0} MB maximum" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1187 +msgid "unknown maximum" +msgstr "" + +#: org/jmol/popup/GenericPopup.java:1299 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:572 +msgid "Configurations" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:573 +msgid "Element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:574 +msgid "Model/Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +msgid "Language" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +#: org/jmol/popup/MainPopupResourceBundle.java:577 +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "By Residue Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "By HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +#: org/jmol/popup/MainPopupResourceBundle.java:902 +#: org/jmol/popup/MainPopupResourceBundle.java:958 +msgid "Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Hide Symmetry" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Model information" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +#, java-format +msgid "Select ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:586 +#, java-format +msgid "All {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +#, java-format +msgid "Configurations ({0})" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#, java-format +msgid "Collection of {0} models" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +#, java-format +msgid "atoms: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:590 +#, java-format +msgid "bonds: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +#, java-format +msgid "groups: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +#, java-format +msgid "chains: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +#, java-format +msgid "polymers: {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +#, java-format +msgid "model {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +#, java-format +msgid "View {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +msgid "Main Menu" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Biomolecules" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:604 +#: org/jmol/popup/MainPopupResourceBundle.java:731 +#: org/jmol/popup/MainPopupResourceBundle.java:740 +msgid "None" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +msgid "Display Selected Only" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "Invert Selection" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "View" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Front" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Bottom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:615 +msgid "Back" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:617 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Protein" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +#: org/jmol/popup/MainPopupResourceBundle.java:632 +#: org/jmol/popup/MainPopupResourceBundle.java:702 +#: org/jmol/popup/MainPopupResourceBundle.java:799 +msgid "Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Side Chains" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Polar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +msgid "Nonpolar Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +msgid "Basic Residues (+)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Acidic Residues (-)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Uncharged Residues" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:628 +msgid "Nucleic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "DNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "RNA" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "Bases" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "AT pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "GC pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "AU pairs" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Hetero" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:638 +msgid "All PDB \"HETATM\"" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +msgid "All Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "All Water" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +msgid "Nonaqueous Solvent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:643 +msgid "Nonaqueous HETATM" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:644 +msgid "Ligand" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +msgid "Carbohydrate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "None of the above" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:650 +msgid "Style" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:651 +msgid "Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:652 +msgid "CPK Spacefill" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:653 +msgid "Ball and Stick" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Sticks" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Wireframe" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +#: org/jmol/popup/MainPopupResourceBundle.java:703 +#: org/jmol/popup/MainPopupResourceBundle.java:801 +msgid "Cartoon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:657 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +#: org/jmol/popup/MainPopupResourceBundle.java:800 +msgid "Trace" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:753 +msgid "Atoms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +#: org/jmol/popup/MainPopupResourceBundle.java:669 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#: org/jmol/popup/MainPopupResourceBundle.java:690 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#: org/jmol/popup/MainPopupResourceBundle.java:711 +#: org/jmol/popup/MainPopupResourceBundle.java:719 +#: org/jmol/popup/MainPopupResourceBundle.java:825 +#: org/jmol/popup/MainPopupResourceBundle.java:876 +#: org/jmol/popup/MainPopupResourceBundle.java:956 +msgid "Off" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:661 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +#: org/jmol/popup/MainPopupResourceBundle.java:663 +#: org/jmol/popup/MainPopupResourceBundle.java:664 +#: org/jmol/popup/MainPopupResourceBundle.java:665 +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "{0}% van der Waals" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#: org/jmol/popup/MainPopupResourceBundle.java:795 +msgid "Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +#: org/jmol/popup/MainPopupResourceBundle.java:680 +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:712 +#: org/jmol/popup/MainPopupResourceBundle.java:720 +#: org/jmol/popup/MainPopupResourceBundle.java:824 +msgid "On" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:671 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +#: org/jmol/popup/MainPopupResourceBundle.java:674 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:686 +#: org/jmol/popup/MainPopupResourceBundle.java:687 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#: org/jmol/popup/MainPopupResourceBundle.java:695 +#: org/jmol/popup/MainPopupResourceBundle.java:696 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:722 +#: org/jmol/popup/MainPopupResourceBundle.java:723 +#: org/jmol/popup/MainPopupResourceBundle.java:980 +#: org/jmol/popup/MainPopupResourceBundle.java:981 +#: org/jmol/popup/MainPopupResourceBundle.java:982 +#: org/jmol/popup/MainPopupResourceBundle.java:983 +#: org/jmol/popup/MainPopupResourceBundle.java:984 +#, java-format +msgid "{0} Ã…" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:796 +msgid "Hydrogen Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +msgid "Calculate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:681 +msgid "Set H-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:682 +msgid "Set H-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:689 +#: org/jmol/popup/MainPopupResourceBundle.java:797 +msgid "Disulfide Bonds" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:692 +msgid "Set SS-Bonds Side Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:693 +msgid "Set SS-Bonds Backbone" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:798 +msgid "Structures" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Cartoon Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +#: org/jmol/popup/MainPopupResourceBundle.java:802 +msgid "Ribbons" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +#: org/jmol/popup/MainPopupResourceBundle.java:803 +msgid "Rockets" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +#: org/jmol/popup/MainPopupResourceBundle.java:804 +msgid "Strands" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Vibration" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:715 +#: org/jmol/popup/MainPopupResourceBundle.java:808 +msgid "Vectors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:716 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:717 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:718 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:721 +#, java-format +msgid "{0} pixels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:724 +#: org/jmol/popup/MainPopupResourceBundle.java:725 +#: org/jmol/popup/MainPopupResourceBundle.java:726 +#: org/jmol/popup/MainPopupResourceBundle.java:727 +#: org/jmol/popup/MainPopupResourceBundle.java:728 +#, java-format +msgid "Scale {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:730 +msgid "Stereographic" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:732 +msgid "Red+Cyan glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:733 +msgid "Red+Blue glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:734 +msgid "Red+Green glasses" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:735 +msgid "Cross-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:736 +msgid "Wall-eyed viewing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:738 +#: org/jmol/popup/MainPopupResourceBundle.java:805 +msgid "Labels" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:741 +msgid "With Element Symbol" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:742 +msgid "With Atom Name" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:743 +msgid "With Atom Number" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:745 +msgid "Position Label on Atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:746 +msgid "Centered" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:747 +msgid "Upper Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:748 +msgid "Lower Right" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:749 +msgid "Upper Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:750 +msgid "Lower Left" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:752 +msgid "Color" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:755 +msgid "By Scheme" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:756 +msgid "Element (CPK)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:757 +msgid "Alternative Location" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:758 +msgid "Molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:759 +msgid "Formal Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:760 +msgid "Partial Charge" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:761 +msgid "Temperature (Relative)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:762 +msgid "Temperature (Fixed)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:764 +msgid "Amino Acid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:765 +msgid "Secondary Structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:766 +msgid "Chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:767 +msgid "Group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:768 +msgid "Monomer" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:769 +msgid "Shapely" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:771 +msgid "Inherit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:772 +msgid "Black" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:773 +msgid "White" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:774 +msgid "Cyan" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:776 +msgid "Red" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:777 +msgid "Orange" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:778 +msgid "Yellow" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:779 +msgid "Green" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:780 +msgid "Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:781 +msgid "Indigo" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:782 +msgid "Violet" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:784 +msgid "Salmon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:785 +msgid "Olive" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:786 +msgid "Maroon" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:787 +msgid "Gray" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:788 +msgid "Slate Blue" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:789 +msgid "Gold" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:790 +msgid "Orchid" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:792 +#: org/jmol/popup/MainPopupResourceBundle.java:954 +msgid "Make Opaque" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:793 +#: org/jmol/popup/MainPopupResourceBundle.java:955 +msgid "Make Translucent" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:806 +msgid "Background" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:807 +#: org/jmol/popup/MainPopupResourceBundle.java:945 +msgid "Surfaces" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:809 +#: org/jmol/popup/MainPopupResourceBundle.java:966 +#: org/jmol/popup/MainPopupResourceBundle.java:992 +msgid "Axes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:810 +#: org/jmol/popup/MainPopupResourceBundle.java:967 +#: org/jmol/popup/MainPopupResourceBundle.java:991 +msgid "Boundbox" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:811 +#: org/jmol/popup/MainPopupResourceBundle.java:942 +#: org/jmol/popup/MainPopupResourceBundle.java:968 +#: org/jmol/popup/MainPopupResourceBundle.java:993 +msgid "Unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:813 +msgid "Zoom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:820 +msgid "Zoom In" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:821 +msgid "Zoom Out" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:823 +#: org/jmol/popup/MainPopupResourceBundle.java:888 +msgid "Spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:827 +msgid "Set X Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:828 +msgid "Set Y Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:829 +msgid "Set Z Rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:830 +#: org/jmol/popup/MainPopupResourceBundle.java:856 +msgid "Set FPS" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:840 +msgid "Animation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:841 +msgid "Animation Mode" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:842 +msgid "Play Once" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:843 +msgid "Palindrome" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:844 +msgid "Loop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:846 +msgid "Play" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:849 +msgid "Stop" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:850 +msgid "Next Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:851 +msgid "Previous Frame" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:852 +msgid "Rewind" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:853 +msgid "Reverse" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:854 +msgid "Restart" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:863 +#: org/jmol/popup/MainPopupResourceBundle.java:897 +msgid "Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:864 +msgid "Double-Click begins and ends all measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:865 +msgid "Click for distance measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:866 +msgid "Click for angle measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:867 +msgid "Click for torsion (dihedral) measurement" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:868 +msgid "Click two atoms to display a sequence in the console" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:869 +msgid "Delete measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:870 +msgid "List measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:871 +msgid "Distance units nanometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:872 +msgid "Distance units Angstroms" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:873 +msgid "Distance units picometers" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:875 +msgid "Set picking" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:877 +msgid "Center" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:879 +msgid "Identity" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:880 +msgid "Label" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:881 +msgid "Select atom" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:882 +msgid "Select chain" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:883 +msgid "Select element" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:884 +msgid "Select group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:885 +msgid "Select molecule" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:886 +msgid "Select site" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:887 +msgid "Show symmetry operation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:890 +msgid "Show" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:893 +msgid "File Contents" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:894 +msgid "File Header" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:896 +msgid "Isosurface JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:898 +msgid "Molecular orbital JVXL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:899 +msgid "Model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:900 +msgid "Orientation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:901 +msgid "Space group" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:903 +msgid "Current state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:905 +msgid "File" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:906 +msgid "Reload" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:907 +msgid "Open from PDB" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:908 +msgid "Open file or URL" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:909 +msgid "Load full unit cell" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:910 +msgid "Open script" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:912 +#: org/jmol/viewer/OutputManager.java:652 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:913 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:914 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:915 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:916 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:917 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:918 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:919 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:920 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:922 +#, java-format +msgid "Save a copy of {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:923 +msgid "Save script with state" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:924 +msgid "Save script with history" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:925 +#: org/jmol/popup/MainPopupResourceBundle.java:926 +#: org/jmol/popup/MainPopupResourceBundle.java:927 +#: org/jmol/popup/MainPopupResourceBundle.java:928 +#: org/jmol/popup/MainPopupResourceBundle.java:929 +#, java-format +msgid "Export {0} image" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:930 +msgid "Save all as JMOL file (zip)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:931 +msgid "Save JVXL isosurface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:932 +#: org/jmol/popup/MainPopupResourceBundle.java:933 +#: org/jmol/popup/MainPopupResourceBundle.java:934 +#: org/jmol/popup/MainPopupResourceBundle.java:935 +#, java-format +msgid "Export {0} 3D model" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:937 +msgid "Computation" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:938 +msgid "Optimize structure" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:939 +msgid "Model kit" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:943 +msgid "Extract MOL data" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:946 +msgid "Dot Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:947 +msgid "van der Waals Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:948 +msgid "Molecular Surface" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:949 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:951 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:952 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:953 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:959 +#: org/jmol/popup/MainPopupResourceBundle.java:960 +#: org/jmol/popup/MainPopupResourceBundle.java:961 +#, java-format +msgid "Reload {0}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:962 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:963 +msgid "Reload + Polyhedra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:970 +msgid "Hide" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:971 +msgid "Dotted" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:973 +msgid "Pixel Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:974 +#: org/jmol/popup/MainPopupResourceBundle.java:975 +#: org/jmol/popup/MainPopupResourceBundle.java:976 +#: org/jmol/popup/MainPopupResourceBundle.java:977 +#, java-format +msgid "{0} px" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:979 +msgid "Angstrom Width" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:987 +msgid "Selection Halos" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:988 +msgid "Show Hydrogens" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:989 +msgid "Show Measurements" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:990 +msgid "Perspective Depth" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:994 +msgid "RasMol Colors" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:995 +msgid "About..." +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1348 +#: org/jmol/script/ScriptEvaluator.java:2922 +msgid "bad argument count" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1351 +#, java-format +msgid "invalid context for {0}" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1354 +#: org/jmol/script/ScriptEvaluator.java:2949 +msgid "command expected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1357 +msgid "{ number number number } expected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1360 +#: org/jmol/script/ScriptEvaluator.java:2958 +msgid "unexpected end of script command" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1363 +msgid "end of expression expected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1366 +msgid "identifier or residue specification expected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1369 +msgid "invalid atom specification" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1372 +msgid "invalid chain specification" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1375 +#, java-format +msgid "invalid expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1378 +msgid "invalid model specification" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1381 +#, java-format +msgid "missing END for {0}" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1384 +#: org/jmol/script/ScriptEvaluator.java:3025 +msgid "number expected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1387 +msgid "number or variable name expected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1390 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1393 +#, java-format +msgid "{0} expected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1396 +#, java-format +msgid "{0} unexpected" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1399 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1402 +#: org/jmol/script/ScriptEvaluator.java:3074 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "" + +#: org/jmol/script/ScriptCompilationTokenParser.java:1405 +#, java-format +msgid "unrecognized token: {0}" +msgstr "" + +#: org/jmol/script/ScriptCompiler.java:2673 +msgid "script compiler ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2762 +#: org/jmol/script/ScriptEvaluator.java:9339 +msgid "script ERROR: " +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2916 +msgid "x y z axis expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2919 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2925 +msgid "Miller indices cannot all be zero." +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2928 +msgid "bad [R,G,B] color" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2931 +msgid "boolean expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2934 +msgid "boolean or number expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2937 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2940 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2943 +msgid "color expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2946 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2952 +msgid "{x y z} or $name or (atom expression) required" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2955 +msgid "draw object not defined" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2961 +msgid "valid (atom expression) expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2964 +msgid "(atom expression) or integer expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2967 +msgid "filename expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2970 +msgid "file not found" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2973 +msgid "incompatible arguments" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2976 +msgid "insufficient arguments" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2979 +msgid "integer expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2982 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2985 +msgid "invalid argument" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2988 +msgid "invalid parameter order" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2991 +msgid "keyword expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2994 +msgid "no MO coefficient data available" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:2997 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3000 +msgid "no MO basis/coefficient data available for this frame" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3003 +msgid "no MO occupancy data available" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3006 +msgid "Only one molecular orbital is available in this file" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3009 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3012 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3015 +msgid "No data available" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3019 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3022 +msgid "No unit cell" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3028 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3031 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3034 +msgid "object name expected after '$'" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3038 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3041 +msgid "property name expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3044 +#, java-format +msgid "space group {0} was not found." +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3047 +msgid "quoted string expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3050 +msgid "quoted string or identifier expected" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3053 +msgid "too many rotation points were specified" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3056 +msgid "too many script levels" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3059 +msgid "unrecognized atom property" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3062 +msgid "unrecognized bond property" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3065 +msgid "unrecognized command" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3068 +msgid "runtime unrecognized expression" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3071 +msgid "unrecognized object" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3078 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3081 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:3087 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:5722 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:5724 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:7001 +#, java-format +msgid "{0} connections deleted" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:7013 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:8432 +#, java-format +msgid "file {0} created" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:9492 +#: org/jmol/script/ScriptEvaluator.java:9675 +#, java-format +msgid "{0} atoms deleted" +msgstr "" + +#: org/jmol/script/ScriptEvaluator.java:10323 +#: org/jmol/scriptext/ScriptExt.java:5711 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "" + +#: org/jmol/scriptext/ScriptExt.java:5689 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/ScriptExt.java:5770 +#, java-format +msgid "{0} struts mp.added" +msgstr "" + +#: org/jmol/scriptext/ScriptExt.java:6073 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:80 +msgid "Click for menu..." +msgstr "" + +#: org/jmol/viewer/ActionManager.java:340 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:344 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:346 +#, java-format +msgid "delete atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:348 +#, java-format +msgid "delete bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:350 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:351 +#, java-format +msgid "move atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:354 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:356 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:357 +#, java-format +msgid "move label (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:360 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:363 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:366 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:368 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:370 +msgid "simulate multi-touch using the mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:372 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:374 +msgid "pick an atom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:376 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:378 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:380 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:387 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:390 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:393 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:396 +msgid "pop up the full context menu" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:398 +msgid "reset (when clicked off the model)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:399 +msgid "rotate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:401 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:403 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:404 +msgid "rotate Z" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:409 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:410 +#, java-format +msgid "select an atom (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:413 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:415 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:418 +#, java-format +msgid "select NONE (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:420 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:423 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:430 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:433 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:435 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:437 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:439 +msgid "zoom (along right edge of window)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:445 +#, java-format +msgid "" +"click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:448 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:451 +#, java-format +msgid "stop motion (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:456 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:457 +msgid "translate" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:458 +msgid "zoom" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:2072 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:2073 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:2077 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:2079 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:654 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:655 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:710 +#, java-format +msgid "Setting log file to {0}" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:712 +msgid "Cannot set log file path." +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:95 +#: org/jmol/viewer/SelectionManager.java:104 +#, java-format +msgid "{0} atoms hidden" +msgstr "" + +#: org/jmol/viewer/SelectionManager.java:168 +#, java-format +msgid "{0} atoms selected" +msgstr "" + +#: org/jmol/viewer/Viewer.java:4849 +msgid "Drag to move label" +msgstr "" + +#: org/jmol/viewer/Viewer.java:8730 +msgid "clipboard is not accessible -- use signed applet" +msgstr "" + +#: org/jmol/viewer/Viewer.java:10098 +#, java-format +msgid "{0} hydrogens added" +msgstr "" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/zh_CN.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/zh_CN.po new file mode 100755 index 000000000000..5d77d24cb384 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/zh_CN.po @@ -0,0 +1,2623 @@ +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the jmol package. +# Li Anbang , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: Wang Dianjin \n" +"Language-Team: Simplified Chinese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "元素?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol 脚本控制å°" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "文件" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "关闭" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "帮助(&H)" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "查找 (&S)" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "命令 (&C)" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "æ•°å­¦åŠå‡½æ•°" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "设定å‚æ•° (&P)" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "更多(&M)" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "编辑器" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "状æ€" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "è¿è¡Œ" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "清空输出" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "清空输入" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "æµè§ˆåŽ†å²" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "载入" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "按 CTRL-ENTER 新增一行,或粘贴分å­æ¨¡åž‹æ•°æ®å¹¶ç‚¹å‡» 载入。" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"ä¿¡æ¯ä¼šæ˜¾ç¤ºäºŽæ­¤ã€‚在下方窗å£ä¸­é”®å…¥å‘½ä»¤ã€‚点击控制å°çš„帮助(Help)èœå•å¯å¾—到在线帮" +"助信æ¯ï¼ˆæ–°çª—å£ä¸­æ˜¾ç¤ºï¼‰ã€‚" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol 脚本编辑器" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "控制å°" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "打开" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "正视" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "脚本" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "勾选" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "回到顶端" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "步进" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "æš‚åœ" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "继续" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "åœæ­¢" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "全部清除" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "关闭" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "文件或网å€(URL):" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "图片格å¼" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG å“è´¨ ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG 压缩 ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG å“è´¨ ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "确定" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "å¦" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "是å¦è¦†ç›–现有文件 {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "警告" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "所有文件" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "å–消" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "å–消文件选择对è¯æ¡†" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "详细资料" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "目录" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "打开已选择的目录" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "属性" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "已修改" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "一般文件" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "å称" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "文件å:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "文件大å°" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "文件类型" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "类型" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "帮助" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "文件选择器帮助" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "用户主目录" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "清å•" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "查找ä½ç½®ï¼š" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "创建文件夹出错" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "新文件夹" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "新建文件夹" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "打开已选定的文件" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "ä¿å­˜" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "ä¿å­˜å·²é€‰å®šçš„文件" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "ä¿å­˜ä½ç½®ï¼š" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "æ›´æ–°" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "更新目录列表" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "å‘上" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "å‘上æå‡ä¸€å±‚" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "确定" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "预览" + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "附加模型" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"注æ„:骨架酰胺氢原å­ä½ç½®å­˜åœ¨ï¼Œå°†ä¼šè¢«å¿½ç•¥ã€‚它们的ä½ç½®å°†è¢«è¿‘似化,象标准DSSP分" +"æžä¸­ä¸€æ ·ã€‚\n" +"使用 {0} 以åœæ­¢ä½¿ç”¨è¿™ç§è¿‘似化。\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"注æ„:骨架酰胺的氢原å­ä½ç½®å­˜åœ¨å¹¶å°†è¢«ä½¿ç”¨ã€‚结果å¯èƒ½ä¸Žæ ‡å‡†DSSP分æžå·®åˆ«å¾ˆå¤§ã€‚\n" +"使用 {0} å¯ä»¥å¿½ç•¥è¿™äº›æ°¢åŽŸå­çš„ä½ç½®ã€‚\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "阿拉伯语" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "阿斯图里亚斯语" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "波斯尼亚语" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "加泰隆语" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "æ·å…‹è¯­" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "丹麦语" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "德语" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "希腊语" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "澳大利亚英语" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "英å¼è‹±è¯­" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "美å¼è‹±è¯­" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "西ç­ç‰™è¯­" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "爱沙尼亚语" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "芬兰语" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "法罗斯语" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "法语" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "弗里斯兰语" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "加利西亚语" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "克罗地亚语" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "匈牙利语" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "亚美尼亚语" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "å°åº¦å°¼è¥¿äºšè¯­(Indonesian)" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "æ„大利语" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "日语" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "爪哇语" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "韩语" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "马æ¥è¯­" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "挪å¨æ³¢å…‹é»˜å°”语" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "è·å…°è¯­" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "欧希特语(Occitan)" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "波兰语" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "è‘¡è„牙语" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "巴西葡è„牙语" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "俄罗斯语" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "斯洛维尼亚语" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "塞尔维亚语" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "瑞典语" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "泰米尔语" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "æ³°å¢å›ºè¯­" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "土耳其语" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "ç»´å¾å°”语" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "乌克兰语" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "简体中文" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "ç¹ä½“中文" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "ä¸èƒ½èŽ·å¾—力场 {0} 的类别" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "没有选择任何原å­--ä¸éœ€å¤„ç†!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} 原å­å°†è¢«æœ€å°åŒ–" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "无法设定力场 {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "新建" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "撤消(Ctrl-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "é‡åš(Ctrl-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "居中" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "添加氢原å­" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "最å°åŒ–" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "固定氢原å­å¹¶æœ€å°åŒ–" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "清除" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "ä¿å­˜æ–‡ä»¶" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "ä¿å­˜çŠ¶æ€" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "å转环的立体化学" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "删除原å­" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "拖拽æˆé”®" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "拖动原å­" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "拖动原å­(并最å°åŒ–)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "拖拽并最å°åŒ–分å­(docking)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "增加电è·" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "å‡å°‘电è·" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "删除键" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "å•ä»·" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "二价" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "三价" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "æ高次åº" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "é™ä½Žæ¬¡åº" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "旋转键(Shift-拖动)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "退出建模工具(modelkit)模å¼" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "空间群" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "æ— " + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "全部" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0} 个处ç†å™¨" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "å…± {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "最大 {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol 脚本控制å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "鼠标使用手册" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "翻译" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "系统" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "未载入原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "设置" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "元素" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "模型/框架" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "语言" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "æ ¹æ®æ®‹åŸºå称排列" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "æ ¹æ® HETATM 排列" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "分å­è½¨é“ ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "对称性" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "分å­æ¨¡åž‹çš„ä¿¡æ¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "选择 ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "所有{0}模型" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "设置 ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "{0} 模型的收集" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "原å­ï¼š{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "化学键:{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "基团:{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "链:{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "èšåˆç‰©ï¼š{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "模型{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "查看 {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "主选å•" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "生物分å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "åˆ†å­ {0} ({1} 个原å­)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "è½½å…¥åˆ†å­ {0} ({1} 个原å­)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "æ— " + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "åªæ˜¾ç¤ºå·±é€‰å–çš„" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "åå‘选å–" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "视图" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "正视" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "左视" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "å³è§†" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "底视" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "返回" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "è½´" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "è½´" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "è½´" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "è½´" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "è½´" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "è½´" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "蛋白质" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "骨架" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "侧链" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "æžæ€§æ®‹åŸº" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "éžæžæ€§æ®‹åŸº" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "碱性残基 (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "酸性残基 (-)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "ä¸å¸¦ç”µè·çš„残基" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "核的" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "碱" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT 对" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC 对" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU 对" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "二级结构" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "异质的(Hetero)" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "全部的 PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "全部溶剂" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "全部的水" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "éžæ°´æº¶å‰‚" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "éžæ°´æº¶æ¶²çš„ HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "é…体" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "碳水化åˆç‰©" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "以上皆éž" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "æ ·å¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "方案" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK 空间填充" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "çƒï¼æ£" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "棒状" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "线框" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "å¡é€š" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "迹线" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "关闭" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% 范德åŽåŠ›" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "化学键" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "å¼€å¯" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "氢键" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "计算" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "设定氢键侧链" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "设定氢键骨架" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "二硫键" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "设定二硫键侧链" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "设定二硫键骨架" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "二级结构" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "å¡é€šç«ç®­" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "带状" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "ç«ç®­" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "ä¸å¸¦" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "振动" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "å‘é‡" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "光谱" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} åƒç´ " + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "刻度 {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "立体图形" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "红+é’ çŽ»ç’ƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "红+è“ çŽ»ç’ƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "红+è“ çŽ»ç’ƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "交å‰çœ¼æŸ¥çœ‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "八字眼查看" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "标记" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "标示元素符å·" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "标示原å­å称" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "标示原å­ç¼–å·" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "在原å­ä¸Šæ”¾ç½®æ ‡ç¤º" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "居中" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "å³ä¸Š" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "å³ä¸‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "左上" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "左下" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "颜色" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "按方案" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "元素(CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "å¯æ›¿æ¢çš„ä½ç½®" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "分å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "å½¢å¼ç”µè·" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "部份电è·" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "温度(相对)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "温度(固定)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "氨基酸" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "链" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "基团" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "å•ä½“" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "定形的" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "继承" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "黑色" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "白色" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "é’色" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "红色" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "橙色" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "黄色" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "绿色" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "è“色" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "é›è“" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "紫色" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "橙红色" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "橄榄色" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "è¤çº¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "ç°è‰²" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "石æ¿è“色" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "金色" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "谈紫色" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "ä¸é€æ˜Žæ•ˆæžœ" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "åŠé€æ˜Žæ•ˆæžœ" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "背景" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "表é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "è½´" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "边界盒" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "å•ä½æ™¶æ ¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "缩放" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "放大" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "缩å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "旋转" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "设定X轴速率" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "设定Y轴速率" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "设定Z轴速率" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "设定æ¯ç§’帧数(FPS)" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "动画" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "动画模å¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "播放一次" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "回文" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "循环播放" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "播放" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "åœæ­¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "下一格" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "上一格" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "倒带" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "åå‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "é‡æ–°å¼€å§‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "测é‡" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "åŒå‡»ä»¥å¼€å§‹åŠç»“æŸæ‰€æœ‰æµ‹é‡" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "点击以测é‡è·ç¦»" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "点击以测é‡è§’度" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "点击测é‡(两平é¢é—´çš„)转矩" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "点击两个原å­ï¼Œåœ¨æŽ§åˆ¶å°ä¸­æ˜¾ç¤ºä¸€ä¸ªåºåˆ—。" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "移除测é‡å€¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "列出测é‡å€¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "è·ç¦»å•ä½ 纳米" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "è·ç¦»å•ä½ Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "è·ç¦»å•ä½ 皮米" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "鼠标拾å–" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "居中显示" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "显示标识(ID)" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "显示标签" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "选择原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "选择链" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "选择元素" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "退出建模工具(modelkit)模å¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "选择基团" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "选择分å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "选择ä½ç‚¹" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "显示对称性æ“作" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "显示" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol 脚本控制å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "文件内容" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "文件头" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "ç­‰é¢çš„ JVXL资料" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "分å­è½¨é“çš„ JVXL 资料" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "模型" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "æ–¹å‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "空间群" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "当å‰çŠ¶æ€" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "文件" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "é‡æ–°è½½å…¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "从 PDB 中打开" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "打开已选定的文件" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "打开" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "载入全部晶格" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "打开脚本" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "ä¿å­˜ {0} 的副本" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "ä¿å­˜è„šæœ¬åŠçŠ¶æ€" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "ä¿å­˜è„šæœ¬åŠåŽ†å²" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "导出 {0} 图åƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "全部ä¿å­˜ä¸ºJmol文件(zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "ä¿å­˜ JVXL 等值é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "导出 {0} 3D 模型" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "计算" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "优化结构" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "建模工具" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "æå– MOL æ•°æ®" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "点状表é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "范德åŽè¡¨é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "分å­è¡¨é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "æº¶å‰‚è¡¨é¢ ({0} Ã… 的探针)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "溶剂å¯åŠè¡¨é¢ (范德åŽè¡¨é¢ + {0} Ã…)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "é‡æ–°è½½å…¥ {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "é‡æ–°è½½å…¥ {0} + 显示 {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "é‡æžè½½å…¥ + 多é¢ä½“" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "éšè—" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "点状" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "åƒç´ å®½åº¦" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} åƒç´ " + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "几 Ã… 宽度" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "显示选择光圈" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "显示氢原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "显示测é‡ç»“æžœ" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "深度é€è§†" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMol 颜色" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "关于..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "脚本编译器错误: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "éœ€è¦ x y z è½´" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "在显示背景模型时ä¸å…许 {0}" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "å‚数数目错误" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "米勒指数(Miller Index)ä¸å¯ä¸º 0" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "[R,G,B] 颜色值无效" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "需è¦å¸ƒå°”真å‡å€¼" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "需è¦å¸ƒå°”真å‡å€¼æˆ–数值" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "需è¦å¸ƒå°”真å‡å€¼ã€æ•°å€¼æˆ–{0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "无法设置值" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "需è¦é¢œè‰²" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "必须有颜色或调色盘å称 (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "需è¦æŒ‡ä»¤" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "必须有{x y z} 或 $name 或 (原å­è¡¨ç¤ºå¼)" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "未定义绘图对象" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "éžé¢„期的脚本命令结尾" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "需è¦æœ‰æ•ˆçš„原å­è¡¨è¾¾å¼" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "需è¦åŽŸå­è¡¨è¾¾å¼æˆ–æ•´æ•°" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "需è¦æ–‡ä»¶å" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "文件未找到" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "å‚æ•°ä¸ç›¸å®¹" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "缺少å‚æ•°" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "需è¦æ•´æ•°" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "整数超出({0} - {1})范围" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "无效å‚æ•°" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "å‚数顺åºæ— æ•ˆ" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "需è¦å…³é”®è¯" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "无分å­è½¨åŸŸ(MO)的系数数æ®å¯ç”¨" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "分å­è½¨åŸŸ(MO)索引值必须介在1到{0}之间" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "这个结构没有分å­è½¨åŸŸ(MO)的基底(basis)或å‚数资料å¯ç”¨" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "没有分å­è½¨åŸŸ(MO)çš„å æ®æ•°æ®å¯ç”¨" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "在这个文件中åªæœ‰ä¸€ä¸ªåˆ†å­è½¨åŸŸ(MO)å¯ç”¨" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0} è¦æ±‚åªæ˜¾ç¤ºä¸€ä¸ªæ¨¡åž‹" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "{0} è¦æ±‚仅有一个模型被加载" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "æ— å¯ç”¨æ•°æ®" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "未从文件中读å–到局部电è·ï¼›Jmol需è¦å®ƒä»¬æ¥ MEP æ•°æ®ã€‚" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "æ— å•ä½æ™¶æ ¼" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "需è¦æ•°å€¼" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "数值必需是({0} 或 {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "åè¿›ä½æ•°å€¼è¶…出({0} - {1})之间" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "'$'之åŽåº”该是对象å" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "需è¦æœ‰å¹³é¢â€”—3个点或原å­è¡¨ç¤ºå¼ï¼Œæˆ– {0} 或 {1} 或 {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "需è¦å±žæ€§å" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "空间群{0} 未å‘现" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "需è¦æœ‰åŠ å¼•å·çš„字符串" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "需è¦æœ‰åŠ å¼•å·çš„字符或标识符" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "指定了太多的旋转点" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "脚本层次太多" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "无法辩识的原å­å±žæ€§" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "无法辩识的化学键属性" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "无法辨识的指令" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "执行时无法辨识的表示å¼" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "无法辨识的对象" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "无法识别å‚数:{0}" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "Jmol 状æ€è„šæœ¬ä¸­å‚æ•° {0} 无法辨识" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "无法辨识 SHOW çš„å‚æ•° -- 使用{0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "写什么呢?{0} 或 {1} \"文件å\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "脚本错误: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "己删除 {0} 个原å­" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0} 个氢键" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "已创建文件: {0}" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "上下文对 {0} 无效" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "éœ€è¦ {数值 数值 数值}" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "需è¦è¡¨è¾¾å¼ç»“å°¾" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "需è¦æ ‡è¯†ç¬¦æˆ–指定残基" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "指定原å­æ— æ•ˆ" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "指定键无效" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "表达å¼æ ‡è®°æ— æ•ˆï¼š{0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "指定模型无效" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "{0} 缺失 END 结æŸç¬¦" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "需è¦æ•°å­—或å˜é‡å" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "需è¦æŒ‡å®šæ®‹åŸº (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "需è¦{0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "ä¸éœ€è¦ {0}" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "无法识别的表达å¼æ ‡è®°ï¼š{0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "无法识别标记:{0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "已增加 {0} struts" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "己删除 {0} 个连接" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} 个新化学键; {1} 个己修改" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "点击出现èœå•..." + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet 版本 {0} {1}.\n" +"\n" +"OpenScience 计划.\n" +"\n" +"更多信æ¯è¯·å‚阅 http://www.jmol.org" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "文件错误:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "指定/新建原å­æˆ–é”® (éœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "å•å‡ºæœ€è¿‘的上下文èœå•ï¼ˆç›´æŽ¥ç‚¹å‡»Jmol)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "åˆ é™¤åŽŸå­ (éœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "åˆ é™¤é”®ï¼ˆéœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "调整深度(åŽé¢æ¿ï¼›éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "ç§»åŠ¨åŽŸå­ (éœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "移动整个 DRAW 对象 (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "移动特定 DRAW 点 (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "移动标记 (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "移动原å­å¹¶æœ€å°åŒ–åˆ†å­ (éœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "移动并最å°åŒ–åˆ†å­ (éœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "ç§»åŠ¨æ‰€é€‰åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "用鼠标模拟多点触控(multi-touch)" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "翻译导航点(需è¦{0} å’Œ{1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "请选å–原å­" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "连接原å­ï¼ˆéœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "选å–一个等平é¢(Isosurface)点 (需è¦{0})" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "选å–一个标签在切æ¢å…¶æ˜¾ç¤º/éšè—(需è¦{0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "选å–一个原å­ä»¥æŠŠå®ƒåŒ…括在测é‡ä¸­ï¼ˆåœ¨å¼€å§‹ä¸€æ¬¡æµ‹é‡æˆ– {0} 之åŽï¼‰" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "拾å–一点或一个原å­ä»¥è¿›è¡Œå¯¼èˆªï¼ˆéœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "è¯·é€‰å– DRAW 点 (以用测é‡) (需è¦{0})" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "弹出完整的上下文èœå•" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "é‡è®¾ï¼ˆå•å‡»å…³é—­æ¨¡åž‹æ—¶ï¼‰" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "旋转" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "ç»•é”®æ—‹è½¬ä¾§æž (éœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "æ—‹è½¬æ‰€é€‰åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "绕 Z 轴旋转" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "旋转 Z (鼠标水平移动)或放大(鼠标垂直移动)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "选择一个原å­ï¼ˆéœ€è¦{0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "选择并拖动原å­ï¼ˆéœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "å–消选å–这群原å­ï¼ˆéœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "全都ä¸é€‰ï¼ˆéœ€è¦{0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "把这群原å­å¢žåŠ åˆ°å·²é€‰åŽŸå­é›†ä¸­ï¼ˆéœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "切æ¢é€‰å–æ¨¡å¼ (éœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "如果已全选,则å–消全选,å¦åˆ™æŠŠè¿™ç¾¤åŽŸå­å¢žåŠ åˆ°å·²é€‰å–原å­é›†ä¸­ï¼ˆéœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "选å–一个åˆå§‹åŽŸå­æˆ–结æŸæµ‹é‡" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "调整平æ¿ï¼ˆå‰é¢æ¿ï¼›éœ€è¦{0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "移动平æ¿/深度窗å£ï¼ˆä¸¤ä¸ªå¹³é¢ï¼›éœ€è¦{0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "缩放 (沿ç€çª—å£å³ä¾§)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "点击两点以绕轴逆时钟转动 (需è¦{0} )" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "点击两点以绕轴顺时钟转动 (需è¦{0} )" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "åœæ­¢æ´»åŠ¨ï¼ˆéœ€è¦ {0} )" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "自旋模型(挥动并æ¾å¼€é¼ æ ‡é”®ï¼ŒåŒæ—¶åœæ­¢è¿åŠ¨)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "翻译" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "缩放" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "请å†å¤šé€‰ä¸€ä¸ªåŽŸå­æ¥ä½¿åˆ†å­å¯ä»¥ä¸€ä¸ªè½´æ—‹è½¬" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "选å–两个原å­ï¼Œä½¿åˆ†å­å¯ä»¥ç»•è½´è‡ªæ—‹" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "选择å¦ä¸€ä¸ªåŽŸå­ä»¥æ˜¾ç¤ºå¯¹ç§°æ€§å…³ç³»" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "选择两个原å­ä»¥æ˜¾ç¤ºå®ƒä»¬ä¹‹é—´çš„对称性关系" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "设定日志文件为 {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "无法设置日志文件路径" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "{0} 个原å­å·±éšè—" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "{0} 个原å­å·±é€‰å®š" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "拖拽移动标签" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "ä¸èƒ½å­˜å–剪贴æ¿â€”—请用使用签署过的å°ç¨‹åº (applet)" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} 个氢原å­å·²å¢žåŠ " + +#~ msgid "Hide Symmetry" +#~ msgstr "éšè—对称性" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "载入 Jmol å°ç¨‹åºä¸­ ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} 秒" + +#~ msgid "Java version:" +#~ msgstr "Java 版本:" + +#~ msgid "1 processor" +#~ msgstr "1 个处ç†å™¨" + +#~ msgid "unknown processor count" +#~ msgstr "未知 处ç†å™¨æ•°ç›®" + +#~ msgid "Java memory usage:" +#~ msgstr "Java 内存使用:" + +#~ msgid "{0} MB free" +#~ msgstr "{0} MB 未使用" + +#~ msgid "unknown maximum" +#~ msgstr "æžå¤§å€¼æœªçŸ¥" + +#~ msgid "Open file or URL" +#~ msgstr "打开文件或网å€(URL)" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/zh_TW.po b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/zh_TW.po new file mode 100755 index 000000000000..2583d3a0f809 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/JmolApplet/zh_TW.po @@ -0,0 +1,2627 @@ +# Traditional Chinese translation for jmol +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the jmol package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: jmol\n" +"Report-Msgid-Bugs-To: jmol-developers@lists.sourceforge.net\n" +"POT-Creation-Date: 2015-12-23 20:33+0100\n" +"PO-Revision-Date: 2013-06-02 18:20+0000\n" +"Last-Translator: iychiang \n" +"Language-Team: Traditional Chinese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-10 00:57+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#: org/jmol/awt/FileDropper.java:106 +msgid "Would you like to replace the current model with the selected model?" +msgstr "" + +#: org/jmol/awtjs2d/JSModelKitPopup.java:89 +#: org/jmol/modelkit/ModelKitPopup.java:72 +msgid "Element?" +msgstr "元素?" + +#: org/jmol/console/GenericConsole.java:54 +msgid "Jmol Script Console" +msgstr "Jmol Script 主控å°" + +#: org/jmol/console/GenericConsole.java:90 +msgid "&Save As..." +msgstr "" + +#: org/jmol/console/GenericConsole.java:91 +#, fuzzy +msgid "&File" +msgstr "檔案" + +#: org/jmol/console/GenericConsole.java:92 +#, fuzzy +msgid "&Close" +msgstr "關閉" + +#: org/jmol/console/GenericConsole.java:97 +msgid "&Help" +msgstr "說明(&H)" + +#: org/jmol/console/GenericConsole.java:98 +msgid "&Search..." +msgstr "æœå°‹ (&S)" + +#: org/jmol/console/GenericConsole.java:99 +msgid "&Commands" +msgstr "指令 (&C)" + +#: org/jmol/console/GenericConsole.java:100 +msgid "Math &Functions" +msgstr "數學åŠå‡½æ•¸" + +#: org/jmol/console/GenericConsole.java:101 +msgid "Set &Parameters" +msgstr "設定åƒæ•¸ (&P)" + +#: org/jmol/console/GenericConsole.java:102 +msgid "&More" +msgstr "更多(&M)" + +#: org/jmol/console/GenericConsole.java:103 +msgid "Editor" +msgstr "編輯器" + +#: org/jmol/console/GenericConsole.java:104 +msgid "State" +msgstr "狀態" + +#: org/jmol/console/GenericConsole.java:105 +#: org/jmol/console/ScriptEditor.java:148 +msgid "Run" +msgstr "執行" + +#: org/jmol/console/GenericConsole.java:106 +msgid "Clear Output" +msgstr "清空輸出" + +#: org/jmol/console/GenericConsole.java:107 +msgid "Clear Input" +msgstr "清空輸入" + +#: org/jmol/console/GenericConsole.java:108 +#: org/jmol/popup/MainPopupResourceBundle.java:608 +msgid "History" +msgstr "ç€è¦½ç´€éŒ„" + +#: org/jmol/console/GenericConsole.java:109 +#: org/jmol/popup/MainPopupResourceBundle.java:619 +msgid "Load" +msgstr "載入" + +#: org/jmol/console/GenericConsole.java:111 +msgid "press CTRL-ENTER for new line or paste model data and press Load" +msgstr "" +"按下 CTRL-ENTER 來新增一行,或貼上分å­æ¨¡åž‹è³‡æ–™ç„¶å¾Œé»žæ“Š 載入 (Load) é¸é …。" + +#: org/jmol/console/GenericConsole.java:113 +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"訊æ¯æœƒé¡¯ç¤ºæ–¼æ­¤ã€‚在以下的視窗中å¯ä»¥è¼¸å…¥æŒ‡ä»¤ã€‚線上的求助訊æ¯å¯ä»¥é»žæ“Šä¸»æŽ§å°ä¸Šçš„ " +"求助(Help) é¸å–®ï¼Œæ±‚助訊æ¯å°±å¯ä»¥å†æ–°çš„ç€ç å™¨è¦–窗中顯示。" + +#: org/jmol/console/ScriptEditor.java:107 +msgid "Jmol Script Editor" +msgstr "Jmol指令稿編輯器" + +#: org/jmol/console/ScriptEditor.java:140 +#: org/jmol/popup/MainPopupResourceBundle.java:604 +msgid "Console" +msgstr "主控å°" + +#: org/jmol/console/ScriptEditor.java:142 org/jmol/dialog/Dialog.java:455 +#: org/jmol/dialog/Dialog.java:479 org/jmol/dialog/Dialog.java:482 +msgid "Open" +msgstr "é–‹å•Ÿ" + +#: org/jmol/console/ScriptEditor.java:143 +#, fuzzy +msgid "Font" +msgstr "å‰é¢" + +#: org/jmol/console/ScriptEditor.java:144 +msgid "Script" +msgstr "指令稿" + +#: org/jmol/console/ScriptEditor.java:145 +msgid "Check" +msgstr "勾é¸" + +#: org/jmol/console/ScriptEditor.java:146 +msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgstr "回到頂端" + +#: org/jmol/console/ScriptEditor.java:147 +msgid "Step" +msgstr "步進" + +#: org/jmol/console/ScriptEditor.java:149 +#: org/jmol/popup/MainPopupResourceBundle.java:559 +msgid "Pause" +msgstr "æš«åœ" + +#: org/jmol/console/ScriptEditor.java:151 +#: org/jmol/popup/MainPopupResourceBundle.java:560 +msgid "Resume" +msgstr "繼續" + +#: org/jmol/console/ScriptEditor.java:153 +msgid "Halt" +msgstr "åœæ­¢" + +#: org/jmol/console/ScriptEditor.java:155 +msgid "Clear" +msgstr "全部清除" + +#: org/jmol/console/ScriptEditor.java:156 +msgid "Close" +msgstr "關閉" + +#: org/jmol/dialog/Dialog.java:94 +msgid "File or URL:" +msgstr "檔案 或 è¶…é€£çµ (URL):" + +#: org/jmol/dialog/Dialog.java:275 +msgid "Image Type" +msgstr "圖片格å¼" + +#: org/jmol/dialog/Dialog.java:290 org/jmol/dialog/Dialog.java:332 +#, java-format +msgid "JPEG Quality ({0})" +msgstr "JPEG å“質 ({0})" + +#: org/jmol/dialog/Dialog.java:304 +#, java-format +msgid "PNG Compression ({0})" +msgstr "PNG 壓縮 ({0})" + +#: org/jmol/dialog/Dialog.java:335 +#, java-format +msgid "PNG Quality ({0})" +msgstr "PNG å“質 ({0})" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:498 +msgid "Yes" +msgstr "確定" + +#: org/jmol/dialog/Dialog.java:385 org/jmol/dialog/Dialog.java:496 +msgid "No" +msgstr "å¦" + +#: org/jmol/dialog/Dialog.java:387 +#, java-format +msgid "Do you want to overwrite file {0}?" +msgstr "你真的è¦è¦†å¯«é€™æª”案 {0}?" + +#: org/jmol/dialog/Dialog.java:388 +msgid "Warning" +msgstr "警告" + +#: org/jmol/dialog/Dialog.java:447 +msgid "All Files" +msgstr "所有檔案" + +#: org/jmol/dialog/Dialog.java:448 org/jmol/dialog/Dialog.java:495 +msgid "Cancel" +msgstr "å–消" + +#: org/jmol/dialog/Dialog.java:450 +msgid "Abort file chooser dialog" +msgstr "離開檔案é¸æ“‡å°è©±æ¡†" + +#: org/jmol/dialog/Dialog.java:452 org/jmol/dialog/Dialog.java:453 +msgid "Details" +msgstr "詳細資料" + +#: org/jmol/dialog/Dialog.java:454 +msgid "Directory" +msgstr "資料夾" + +#: org/jmol/dialog/Dialog.java:457 +msgid "Open selected directory" +msgstr "開始é¸æ“‡äº†çš„資料夾" + +#: org/jmol/dialog/Dialog.java:458 +msgid "Attributes" +msgstr "屬性" + +#: org/jmol/dialog/Dialog.java:459 +msgid "Modified" +msgstr "已修改" + +#: org/jmol/dialog/Dialog.java:460 +msgid "Generic File" +msgstr "一般檔案" + +#: org/jmol/dialog/Dialog.java:461 +msgid "Name" +msgstr "å稱" + +#: org/jmol/dialog/Dialog.java:462 +msgid "File Name:" +msgstr "檔å:" + +#: org/jmol/dialog/Dialog.java:463 +msgid "Size" +msgstr "檔案大å°" + +#: org/jmol/dialog/Dialog.java:464 +msgid "Files of Type:" +msgstr "類型檔" + +#: org/jmol/dialog/Dialog.java:465 +msgid "Type" +msgstr "é¡žåž‹" + +#: org/jmol/dialog/Dialog.java:466 +msgid "Help" +msgstr "說明" + +#: org/jmol/dialog/Dialog.java:468 +msgid "FileChooser help" +msgstr "檔案é¸æ“‡å™¨èªªæ˜Ž" + +#: org/jmol/dialog/Dialog.java:469 org/jmol/dialog/Dialog.java:470 +msgid "Home" +msgstr "家目錄" + +#: org/jmol/dialog/Dialog.java:471 org/jmol/dialog/Dialog.java:472 +msgid "List" +msgstr "清單" + +#: org/jmol/dialog/Dialog.java:473 +msgid "Look In:" +msgstr "æœç´¢" + +#: org/jmol/dialog/Dialog.java:475 +msgid "Error creating new folder" +msgstr "新增資料夾錯誤" + +#: org/jmol/dialog/Dialog.java:476 +msgid "New Folder" +msgstr "新資料夾" + +#: org/jmol/dialog/Dialog.java:478 +msgid "Create New Folder" +msgstr "建立新資料夾" + +#: org/jmol/dialog/Dialog.java:481 +msgid "Open selected file" +msgstr "開始己é¸çš„檔案" + +#: org/jmol/dialog/Dialog.java:483 org/jmol/dialog/Dialog.java:486 +#: org/jmol/popup/MainPopupResourceBundle.java:620 +msgid "Save" +msgstr "儲存" + +#: org/jmol/dialog/Dialog.java:485 +msgid "Save selected file" +msgstr "儲存己é¸çš„檔案" + +#: org/jmol/dialog/Dialog.java:487 +msgid "Save In:" +msgstr "存在:" + +#: org/jmol/dialog/Dialog.java:488 +msgid "Update" +msgstr "æ›´æ–°" + +#: org/jmol/dialog/Dialog.java:490 +msgid "Update directory listing" +msgstr "更新資料夾列表" + +#: org/jmol/dialog/Dialog.java:491 +msgid "Up" +msgstr "å‘上" + +#: org/jmol/dialog/Dialog.java:492 +msgid "Up One Level" +msgstr "å‘上æå‡ä¸€å±¤" + +#: org/jmol/dialog/Dialog.java:497 +msgid "OK" +msgstr "確定" + +#: org/jmol/dialog/FilePreview.java:77 +msgid "Preview" +msgstr "é ç " + +#: org/jmol/dialog/FilePreview.java:98 +msgid "Append models" +msgstr "附加模型" + +#: org/jmol/dialog/FilePreview.java:100 +msgid "PDB cartoons" +msgstr "" + +#: org/jmol/dssx/DSSP.java:288 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" +"Use {0} to not use this approximation.\n" +"\n" +msgstr "" +"注æ„:主幹上的å«æ°®åŸºä¸­æ°«åŽŸå­çš„ä½ç½®æ˜¯é¡¯ç¾çš„而且在逼近計算中將會被乎略。在標準" +"çš„ DSSP 逼近法分æžä¸­ï¼Œæ°«åŽŸå­çš„ä½ç½®å°‡æ˜¯é¡¯ç¾åœ¨å¤§ç´„ä½ç½®è€Œå·±ã€‚使用 {0} é¸é …å°±ä¸æŽ¡" +"用這樣的逼近法來計算。\n" +"\n" + +#: org/jmol/dssx/DSSP.java:294 +#, java-format +msgid "" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" +"Use {0} to ignore these hydrogen positions.\n" +"\n" +msgstr "" +"注æ„:主幹上的å«æ°®åŸºä¸­æ°«åŽŸå­çš„ä½ç½®æ˜¯é¡¯ç¾çš„而且將會被引入逼近計算中。計算的çµ" +"æžœå¯èƒ½å’Œæ¨™æº–çš„ DSSP 法的çµæžœæœ‰è‘—顯著的ä¸åŒã€‚使用 {0} é¸é …則ä¸æŽ¡è¨ˆé€™äº›æ°«åŽŸå­çš„" +"ä½ç½®ã€‚\n" +"\n" + +#: org/jmol/i18n/Language.java:77 +msgid "Arabic" +msgstr "阿拉伯文" + +#: org/jmol/i18n/Language.java:78 +msgid "Asturian" +msgstr "亞斯圖語" + +#: org/jmol/i18n/Language.java:79 +msgid "Azerbaijani" +msgstr "" + +#: org/jmol/i18n/Language.java:80 +msgid "Bosnian" +msgstr "波士尼亞語" + +#: org/jmol/i18n/Language.java:81 +msgid "Catalan" +msgstr "加泰隆文" + +#: org/jmol/i18n/Language.java:82 +msgid "Czech" +msgstr "æ·å…‹æ–‡" + +#: org/jmol/i18n/Language.java:83 +msgid "Danish" +msgstr "丹麥文" + +#: org/jmol/i18n/Language.java:84 +msgid "German" +msgstr "å¾·æ–‡" + +#: org/jmol/i18n/Language.java:85 +msgid "Greek" +msgstr "希臘文" + +#: org/jmol/i18n/Language.java:86 +msgid "Australian English" +msgstr "澳洲å¼è‹±æ–‡" + +#: org/jmol/i18n/Language.java:87 +msgid "British English" +msgstr "英å¼è‹±æ–‡" + +#: org/jmol/i18n/Language.java:88 +msgid "American English" +msgstr "美語" + +#: org/jmol/i18n/Language.java:89 +msgid "Spanish" +msgstr "西ç­ç‰™æ–‡" + +#: org/jmol/i18n/Language.java:90 +msgid "Estonian" +msgstr "愛沙尼亞文" + +#: org/jmol/i18n/Language.java:91 +msgid "Basque" +msgstr "" + +#: org/jmol/i18n/Language.java:92 +msgid "Finnish" +msgstr "芬蘭語" + +#: org/jmol/i18n/Language.java:93 +msgid "Faroese" +msgstr "法羅語" + +#: org/jmol/i18n/Language.java:94 +msgid "French" +msgstr "法文" + +#: org/jmol/i18n/Language.java:95 +msgid "Frisian" +msgstr "夫里斯蘭語" + +#: org/jmol/i18n/Language.java:96 +msgid "Galician" +msgstr "加里斯亞語" + +#: org/jmol/i18n/Language.java:97 +msgid "Croatian" +msgstr "克羅埃西亞語" + +#: org/jmol/i18n/Language.java:98 +msgid "Hungarian" +msgstr "匈牙利文" + +#: org/jmol/i18n/Language.java:99 +msgid "Armenian" +msgstr "亞美尼亞語" + +#: org/jmol/i18n/Language.java:100 +msgid "Indonesian" +msgstr "å°å°¼èªž" + +#: org/jmol/i18n/Language.java:101 +msgid "Italian" +msgstr "義大利文" + +#: org/jmol/i18n/Language.java:102 +msgid "Japanese" +msgstr "日語" + +#: org/jmol/i18n/Language.java:103 +msgid "Javanese" +msgstr "爪哇語" + +#: org/jmol/i18n/Language.java:104 +msgid "Korean" +msgstr "韓文" + +#: org/jmol/i18n/Language.java:105 +msgid "Malay" +msgstr "馬來語" + +#: org/jmol/i18n/Language.java:106 +msgid "Norwegian Bokmal" +msgstr "挪å¨æ³¢å…‹é»˜çˆ¾èªž (Bokmal)" + +#: org/jmol/i18n/Language.java:107 +msgid "Dutch" +msgstr "è·è˜­æ–‡" + +#: org/jmol/i18n/Language.java:108 +msgid "Occitan" +msgstr "æ­å¸Œç‰¹èªž (Occitan)" + +#: org/jmol/i18n/Language.java:109 +msgid "Polish" +msgstr "波蘭文" + +#: org/jmol/i18n/Language.java:110 +msgid "Portuguese" +msgstr "è‘¡è„牙文" + +#: org/jmol/i18n/Language.java:111 +msgid "Brazilian Portuguese" +msgstr "巴西葡è„牙文" + +#: org/jmol/i18n/Language.java:112 +msgid "Russian" +msgstr "俄羅斯文" + +#: org/jmol/i18n/Language.java:113 +msgid "Slovenian" +msgstr "斯洛維尼亞文" + +#: org/jmol/i18n/Language.java:114 +msgid "Serbian" +msgstr "塞爾維亞語" + +#: org/jmol/i18n/Language.java:115 +msgid "Swedish" +msgstr "瑞典文" + +#: org/jmol/i18n/Language.java:116 +msgid "Tamil" +msgstr "å¦ç±³çˆ¾èªž" + +#: org/jmol/i18n/Language.java:117 +msgid "Telugu" +msgstr "泰盧固文" + +#: org/jmol/i18n/Language.java:118 +msgid "Turkish" +msgstr "土耳其文" + +#: org/jmol/i18n/Language.java:119 +msgid "Uyghur" +msgstr "" + +#: org/jmol/i18n/Language.java:120 +msgid "Ukrainian" +msgstr "çƒå…‹è˜­æ–‡" + +#: org/jmol/i18n/Language.java:121 +msgid "Uzbek" +msgstr "" + +#: org/jmol/i18n/Language.java:122 +msgid "Simplified Chinese" +msgstr "簡體中文" + +#: org/jmol/i18n/Language.java:123 +msgid "Traditional Chinese" +msgstr "ç¹é«”中文" + +#: org/jmol/minimize/Minimizer.java:221 +#, java-format +msgid "Could not get class for force field {0}" +msgstr "ä¸èƒ½å–得力場{0}的類別" + +#: org/jmol/minimize/Minimizer.java:227 +msgid "No atoms selected -- nothing to do!" +msgstr "沒有é¸æ“‡ä»»ä½•åŽŸå­--ä¸éœ€è™•ç†!" + +#: org/jmol/minimize/Minimizer.java:312 +#, java-format +msgid "{0} atoms will be minimized." +msgstr "{0} 原å­å°‡è¢«æœ€å°åŒ–" + +#: org/jmol/minimize/Minimizer.java:327 +#, java-format +msgid "could not setup force field {0}" +msgstr "無法設定力埸 {0}" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:88 +msgid "new" +msgstr "æ–°" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:89 +msgid "undo (CTRL-Z)" +msgstr "上一步 (CTRL-Z)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:90 +msgid "redo (CTRL-Y)" +msgstr "下一步 (CTRL-Y)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:91 +#: org/jmol/viewer/ActionManager.java:233 +msgid "center" +msgstr "置中" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:92 +msgid "add hydrogens" +msgstr "加上氫" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:93 +msgid "minimize" +msgstr "最å°åŒ–" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:94 +msgid "fix hydrogens and minimize" +msgstr "固定氫以åŠæœ€å°åŒ–" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:95 +msgid "clear" +msgstr "清除" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:96 +msgid "save file" +msgstr "存檔" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:97 +msgid "save state" +msgstr "儲存狀態" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:98 +msgid "invert ring stereochemistry" +msgstr "顛倒環的立體化學" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:99 +msgid "delete atom" +msgstr "移除原å­" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:100 +msgid "drag to bond" +msgstr "拖曳到éµ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:101 +msgid "drag atom" +msgstr "拖曳原å­" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:102 +msgid "drag atom (and minimize)" +msgstr "æ‹–æ›³åŽŸå­ (以åŠæœ€å°åŒ–)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:103 +msgid "drag molecule (ALT to rotate)" +msgstr "" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:104 +msgid "drag and minimize molecule (docking)" +msgstr "拖曳åŠåˆ†å­æœ€å°åŒ– (å°æŽ¥)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:113 +msgid "increase charge" +msgstr "增加電è·" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:114 +msgid "decrease charge" +msgstr "減少電è·" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:115 +msgid "delete bond" +msgstr "移除éµ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:116 +msgid "single" +msgstr "å–®éµ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:117 +msgid "double" +msgstr "é›™éµ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:118 +msgid "triple" +msgstr "三éµ" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:119 +msgid "increase order" +msgstr "增加級數" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:120 +msgid "decrease order" +msgstr "減少級數" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:121 +msgid "rotate bond (SHIFT-DRAG)" +msgstr "讓éµæ—‹è½‰ (SHIFT-拖曳)" + +#: org/jmol/modelkit/ModelKitPopupResourceBundle.java:122 +msgid "exit modelkit mode" +msgstr "離開模型組工具模å¼" + +#: org/jmol/popup/JmolGenericPopup.java:754 +#: org/jmol/popup/MainPopupResourceBundle.java:287 +msgid "Space Group" +msgstr "空間群" + +#: org/jmol/popup/JmolGenericPopup.java:770 +#, fuzzy +msgid "none" +msgstr "ç„¡" + +#: org/jmol/popup/JmolGenericPopup.java:829 +#: org/jmol/popup/JmolGenericPopup.java:880 +#: org/jmol/popup/MainPopupResourceBundle.java:307 +#: org/jmol/popup/MainPopupResourceBundle.java:330 +#: org/jmol/popup/MainPopupResourceBundle.java:339 +#: org/jmol/popup/MainPopupResourceBundle.java:357 +msgid "All" +msgstr "全部" + +#: org/jmol/popup/JmolGenericPopup.java:991 +#, java-format +msgid "{0} processors" +msgstr "{0}個處ç†å™¨" + +#: org/jmol/popup/JmolGenericPopup.java:993 +#, java-format +msgid "{0} MB total" +msgstr "å…± {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:996 +#, java-format +msgid "{0} MB maximum" +msgstr "最多 {0} MB" + +#: org/jmol/popup/JmolGenericPopup.java:1050 +msgid "not capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:266 +#, fuzzy +msgid "Jmol Script Commands" +msgstr "Jmol Script 主控å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:267 +msgid "Mouse Manual" +msgstr "滑鼠使用手冊" + +#: org/jmol/popup/MainPopupResourceBundle.java:268 +msgid "Translations" +msgstr "翻譯" + +#: org/jmol/popup/MainPopupResourceBundle.java:269 +msgid "System" +msgstr "系統" + +#: org/jmol/popup/MainPopupResourceBundle.java:276 +msgid "No atoms loaded" +msgstr "沒有載入原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:277 +msgid "Configurations" +msgstr "é…ç½®" + +#: org/jmol/popup/MainPopupResourceBundle.java:278 +msgid "Element" +msgstr "元素" + +#: org/jmol/popup/MainPopupResourceBundle.java:279 +msgid "Model/Frame" +msgstr "模型/框架" + +#: org/jmol/popup/MainPopupResourceBundle.java:280 +msgid "Language" +msgstr "語言" + +#: org/jmol/popup/MainPopupResourceBundle.java:281 +#: org/jmol/popup/MainPopupResourceBundle.java:282 +#: org/jmol/popup/MainPopupResourceBundle.java:283 +msgid "By Residue Name" +msgstr "以å–代基å字排列" + +#: org/jmol/popup/MainPopupResourceBundle.java:284 +msgid "By HETATM" +msgstr "以 HETATM 排列" + +#: org/jmol/popup/MainPopupResourceBundle.java:285 +#, java-format +msgid "Molecular Orbitals ({0})" +msgstr "分å­è»ŒåŸŸ ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:286 +#: org/jmol/popup/MainPopupResourceBundle.java:615 +#: org/jmol/popup/MainPopupResourceBundle.java:675 +msgid "Symmetry" +msgstr "å°ç¨±" + +#: org/jmol/popup/MainPopupResourceBundle.java:288 +msgid "Model information" +msgstr "模型的資訊" + +#: org/jmol/popup/MainPopupResourceBundle.java:289 +#, java-format +msgid "Select ({0})" +msgstr "é¸æ“‡ ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:290 +#, java-format +msgid "All {0} models" +msgstr "所有{0}的模型" + +#: org/jmol/popup/MainPopupResourceBundle.java:291 +#, java-format +msgid "Configurations ({0})" +msgstr "é…ç½® ({0})" + +#: org/jmol/popup/MainPopupResourceBundle.java:292 +#, java-format +msgid "Collection of {0} models" +msgstr "{0}模型的收集" + +#: org/jmol/popup/MainPopupResourceBundle.java:293 +#, java-format +msgid "atoms: {0}" +msgstr "原å­ï¼š{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:294 +#, java-format +msgid "bonds: {0}" +msgstr "化學éµï¼š{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:295 +#, java-format +msgid "groups: {0}" +msgstr "官能基:{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:296 +#, java-format +msgid "chains: {0}" +msgstr "éˆï¼š{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:297 +#, java-format +msgid "polymers: {0}" +msgstr "èšåˆç‰©ï¼š{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:298 +#, java-format +msgid "model {0}" +msgstr "模型{0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:299 +#, java-format +msgid "View {0}" +msgstr "檢視 {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:300 +msgid "Main Menu" +msgstr "主é¸å–®" + +#: org/jmol/popup/MainPopupResourceBundle.java:301 +msgid "Biomolecules" +msgstr "生物分å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:302 +#, java-format +msgid "biomolecule {0} ({1} atoms)" +msgstr "ç”Ÿç‰©åˆ†å­ {0} ({1} 個原å­)" + +#: org/jmol/popup/MainPopupResourceBundle.java:303 +#, java-format +msgid "load biomolecule {0} ({1} atoms)" +msgstr "è¼‰å…¥ç”Ÿç‰©åˆ†å­ {0} ({1} 個原å­)" + +#: org/jmol/popup/MainPopupResourceBundle.java:308 +#: org/jmol/popup/MainPopupResourceBundle.java:442 +#: org/jmol/popup/MainPopupResourceBundle.java:451 +msgid "None" +msgstr "ç„¡" + +#: org/jmol/popup/MainPopupResourceBundle.java:309 +msgid "Display Selected Only" +msgstr "åªé¡¯ç¤ºå·±é¸å–çš„" + +#: org/jmol/popup/MainPopupResourceBundle.java:310 +msgid "Invert Selection" +msgstr "åå‘é¸å–" + +#: org/jmol/popup/MainPopupResourceBundle.java:312 +msgid "View" +msgstr "檢視" + +#: org/jmol/popup/MainPopupResourceBundle.java:313 +msgid "Best" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:314 +msgid "Front" +msgstr "å‰é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:315 +msgid "Left" +msgstr "左邊" + +#: org/jmol/popup/MainPopupResourceBundle.java:316 +msgid "Right" +msgstr "å³é‚Š" + +#: org/jmol/popup/MainPopupResourceBundle.java:317 +msgid "" +"Top[as in \"view from the top, from above\" - (translators: remove this " +"bracketed part]" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:318 +msgid "Bottom" +msgstr "底部" + +#: org/jmol/popup/MainPopupResourceBundle.java:319 +msgid "Back" +msgstr "返回" + +#: org/jmol/popup/MainPopupResourceBundle.java:320 +#, fuzzy +msgid "Axis x" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:321 +#, fuzzy +msgid "Axis y" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:322 +#, fuzzy +msgid "Axis z" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:323 +#, fuzzy +msgid "Axis a" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:324 +#, fuzzy +msgid "Axis b" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:325 +#, fuzzy +msgid "Axis c" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:327 +msgid "Scenes" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:329 +msgid "Protein" +msgstr "蛋白質" + +#: org/jmol/popup/MainPopupResourceBundle.java:331 +#: org/jmol/popup/MainPopupResourceBundle.java:342 +#: org/jmol/popup/MainPopupResourceBundle.java:413 +#: org/jmol/popup/MainPopupResourceBundle.java:511 +msgid "Backbone" +msgstr "骨幹" + +#: org/jmol/popup/MainPopupResourceBundle.java:332 +msgid "Side Chains" +msgstr "å´éˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:333 +msgid "Polar Residues" +msgstr "極性官能基" + +#: org/jmol/popup/MainPopupResourceBundle.java:334 +msgid "Nonpolar Residues" +msgstr "éžæ¥µæ€§å®˜èƒ½åŸº" + +#: org/jmol/popup/MainPopupResourceBundle.java:335 +msgid "Basic Residues (+)" +msgstr "鹼性官能基 (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:336 +msgid "Acidic Residues (-)" +msgstr "酸性官能基 (+)" + +#: org/jmol/popup/MainPopupResourceBundle.java:337 +msgid "Uncharged Residues" +msgstr "ä¸å¸¶é›»è·çš„官能基" + +#: org/jmol/popup/MainPopupResourceBundle.java:338 +msgid "Nucleic" +msgstr "原å­æ ¸çš„" + +#: org/jmol/popup/MainPopupResourceBundle.java:340 +msgid "DNA" +msgstr "DNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:341 +msgid "RNA" +msgstr "RNA" + +#: org/jmol/popup/MainPopupResourceBundle.java:343 +msgid "Bases" +msgstr "é¹¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:344 +msgid "AT pairs" +msgstr "AT å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:345 +msgid "GC pairs" +msgstr "GC å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:346 +msgid "AU pairs" +msgstr "AU å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:347 +#: org/jmol/popup/MainPopupResourceBundle.java:477 +msgid "Secondary Structure" +msgstr "二級çµæ§‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:348 +msgid "Hetero" +msgstr "異質的" + +#: org/jmol/popup/MainPopupResourceBundle.java:349 +msgid "All PDB \"HETATM\"" +msgstr "全部的 PDB \"HETATM\"" + +#: org/jmol/popup/MainPopupResourceBundle.java:350 +msgid "All Solvent" +msgstr "所有的溶劑" + +#: org/jmol/popup/MainPopupResourceBundle.java:351 +msgid "All Water" +msgstr "所有的水" + +#: org/jmol/popup/MainPopupResourceBundle.java:353 +msgid "Nonaqueous Solvent" +msgstr "éžæ°´æº¶åŠ‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:354 +msgid "Nonaqueous HETATM" +msgstr "éžæ°´æº¶æ¶²çš„ HETATM" + +#: org/jmol/popup/MainPopupResourceBundle.java:355 +msgid "Ligand" +msgstr "é…ä½åŸº" + +#: org/jmol/popup/MainPopupResourceBundle.java:358 +msgid "Carbohydrate" +msgstr "碳水化åˆç‰©" + +#: org/jmol/popup/MainPopupResourceBundle.java:359 +msgid "None of the above" +msgstr "以上皆éž" + +#: org/jmol/popup/MainPopupResourceBundle.java:361 +msgid "Style" +msgstr "樣å¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:362 +msgid "Scheme" +msgstr "骨架" + +#: org/jmol/popup/MainPopupResourceBundle.java:363 +msgid "CPK Spacefill" +msgstr "CPK 空間填充" + +#: org/jmol/popup/MainPopupResourceBundle.java:364 +msgid "Ball and Stick" +msgstr "çƒèˆ‡æ£’ (原å­èˆ‡éµ)" + +#: org/jmol/popup/MainPopupResourceBundle.java:365 +msgid "Sticks" +msgstr "éµ" + +#: org/jmol/popup/MainPopupResourceBundle.java:366 +msgid "Wireframe" +msgstr "線框" + +#: org/jmol/popup/MainPopupResourceBundle.java:367 +#: org/jmol/popup/MainPopupResourceBundle.java:414 +#: org/jmol/popup/MainPopupResourceBundle.java:513 +msgid "Cartoon" +msgstr "å¡é€š" + +#: org/jmol/popup/MainPopupResourceBundle.java:368 +#: org/jmol/popup/MainPopupResourceBundle.java:419 +#: org/jmol/popup/MainPopupResourceBundle.java:512 +msgid "Trace" +msgstr "追蹤" + +#: org/jmol/popup/MainPopupResourceBundle.java:370 +#: org/jmol/popup/MainPopupResourceBundle.java:464 +msgid "Atoms" +msgstr "原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:371 +#: org/jmol/popup/MainPopupResourceBundle.java:380 +#: org/jmol/popup/MainPopupResourceBundle.java:389 +#: org/jmol/popup/MainPopupResourceBundle.java:401 +#: org/jmol/popup/MainPopupResourceBundle.java:412 +#: org/jmol/popup/MainPopupResourceBundle.java:422 +#: org/jmol/popup/MainPopupResourceBundle.java:430 +#: org/jmol/popup/MainPopupResourceBundle.java:537 +#: org/jmol/popup/MainPopupResourceBundle.java:588 +#: org/jmol/popup/MainPopupResourceBundle.java:673 +msgid "Off" +msgstr "關閉" + +#: org/jmol/popup/MainPopupResourceBundle.java:372 +#: org/jmol/popup/MainPopupResourceBundle.java:373 +#: org/jmol/popup/MainPopupResourceBundle.java:374 +#: org/jmol/popup/MainPopupResourceBundle.java:375 +#: org/jmol/popup/MainPopupResourceBundle.java:376 +#: org/jmol/popup/MainPopupResourceBundle.java:377 +#, java-format +msgid "{0}% van der Waals" +msgstr "{0}% 凡得瓦力" + +#: org/jmol/popup/MainPopupResourceBundle.java:379 +#: org/jmol/popup/MainPopupResourceBundle.java:507 +msgid "Bonds" +msgstr "éµ" + +#: org/jmol/popup/MainPopupResourceBundle.java:381 +#: org/jmol/popup/MainPopupResourceBundle.java:391 +#: org/jmol/popup/MainPopupResourceBundle.java:402 +#: org/jmol/popup/MainPopupResourceBundle.java:423 +#: org/jmol/popup/MainPopupResourceBundle.java:431 +#: org/jmol/popup/MainPopupResourceBundle.java:536 +msgid "On" +msgstr "é–‹å•Ÿ" + +#: org/jmol/popup/MainPopupResourceBundle.java:382 +#: org/jmol/popup/MainPopupResourceBundle.java:383 +#: org/jmol/popup/MainPopupResourceBundle.java:384 +#: org/jmol/popup/MainPopupResourceBundle.java:385 +#: org/jmol/popup/MainPopupResourceBundle.java:386 +#: org/jmol/popup/MainPopupResourceBundle.java:394 +#: org/jmol/popup/MainPopupResourceBundle.java:395 +#: org/jmol/popup/MainPopupResourceBundle.java:396 +#: org/jmol/popup/MainPopupResourceBundle.java:397 +#: org/jmol/popup/MainPopupResourceBundle.java:398 +#: org/jmol/popup/MainPopupResourceBundle.java:405 +#: org/jmol/popup/MainPopupResourceBundle.java:406 +#: org/jmol/popup/MainPopupResourceBundle.java:407 +#: org/jmol/popup/MainPopupResourceBundle.java:408 +#: org/jmol/popup/MainPopupResourceBundle.java:409 +#: org/jmol/popup/MainPopupResourceBundle.java:433 +#: org/jmol/popup/MainPopupResourceBundle.java:434 +#: org/jmol/popup/MainPopupResourceBundle.java:697 +#: org/jmol/popup/MainPopupResourceBundle.java:698 +#: org/jmol/popup/MainPopupResourceBundle.java:699 +#: org/jmol/popup/MainPopupResourceBundle.java:700 +#: org/jmol/popup/MainPopupResourceBundle.java:701 +#, java-format +msgid "{0} Ã…" +msgstr "{0} Ã…" + +#: org/jmol/popup/MainPopupResourceBundle.java:388 +#: org/jmol/popup/MainPopupResourceBundle.java:508 +msgid "Hydrogen Bonds" +msgstr "æ°«éµ" + +#: org/jmol/popup/MainPopupResourceBundle.java:390 +msgid "Calculate" +msgstr "計算" + +#: org/jmol/popup/MainPopupResourceBundle.java:392 +msgid "Set H-Bonds Side Chain" +msgstr "設定氫éµå´éˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:393 +msgid "Set H-Bonds Backbone" +msgstr "設定氫éµéª¨å¹¹" + +#: org/jmol/popup/MainPopupResourceBundle.java:400 +#: org/jmol/popup/MainPopupResourceBundle.java:509 +msgid "Disulfide Bonds" +msgstr "雙硫éµ" + +#: org/jmol/popup/MainPopupResourceBundle.java:403 +msgid "Set SS-Bonds Side Chain" +msgstr "設定雙硫éµå´éˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:404 +msgid "Set SS-Bonds Backbone" +msgstr "設定雙硫éµéª¨å¹¹" + +#: org/jmol/popup/MainPopupResourceBundle.java:411 +#: org/jmol/popup/MainPopupResourceBundle.java:510 +msgid "Structures" +msgstr "çµæ§‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:415 +msgid "Cartoon Rockets" +msgstr "Cartoon Rockets" + +#: org/jmol/popup/MainPopupResourceBundle.java:416 +#: org/jmol/popup/MainPopupResourceBundle.java:514 +msgid "Ribbons" +msgstr "帶狀" + +#: org/jmol/popup/MainPopupResourceBundle.java:417 +#: org/jmol/popup/MainPopupResourceBundle.java:515 +msgid "Rockets" +msgstr "Rockets" + +#: org/jmol/popup/MainPopupResourceBundle.java:418 +#: org/jmol/popup/MainPopupResourceBundle.java:516 +msgid "Strands" +msgstr "è‚¡" + +#: org/jmol/popup/MainPopupResourceBundle.java:421 +msgid "Vibration" +msgstr "振動" + +#: org/jmol/popup/MainPopupResourceBundle.java:426 +#: org/jmol/popup/MainPopupResourceBundle.java:470 +#: org/jmol/popup/MainPopupResourceBundle.java:520 +msgid "Vectors" +msgstr "å‘é‡" + +#: org/jmol/popup/MainPopupResourceBundle.java:427 +msgid "Spectra" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:428 +msgid "1H-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:429 +msgid "13C-NMR" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:432 +#, java-format +msgid "{0} pixels" +msgstr "{0} åƒç´ " + +#: org/jmol/popup/MainPopupResourceBundle.java:435 +#: org/jmol/popup/MainPopupResourceBundle.java:436 +#: org/jmol/popup/MainPopupResourceBundle.java:437 +#: org/jmol/popup/MainPopupResourceBundle.java:438 +#: org/jmol/popup/MainPopupResourceBundle.java:439 +#, java-format +msgid "Scale {0}" +msgstr "刻度 {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:441 +msgid "Stereographic" +msgstr "立體圖形" + +#: org/jmol/popup/MainPopupResourceBundle.java:443 +msgid "Red+Cyan glasses" +msgstr "ç´…+è—綠色玻璃" + +#: org/jmol/popup/MainPopupResourceBundle.java:444 +msgid "Red+Blue glasses" +msgstr "ç´…+è—玻璃" + +#: org/jmol/popup/MainPopupResourceBundle.java:445 +msgid "Red+Green glasses" +msgstr "ç´…+è—色玻璃" + +#: org/jmol/popup/MainPopupResourceBundle.java:446 +msgid "Cross-eyed viewing" +msgstr "斗眼觀賞 (Cross-eyed viewing)" + +#: org/jmol/popup/MainPopupResourceBundle.java:447 +msgid "Wall-eyed viewing" +msgstr "牆眼觀賞 (Wall-eyed viewing)" + +#: org/jmol/popup/MainPopupResourceBundle.java:449 +#: org/jmol/popup/MainPopupResourceBundle.java:517 +msgid "Labels" +msgstr "標記" + +#: org/jmol/popup/MainPopupResourceBundle.java:452 +msgid "With Element Symbol" +msgstr "標示元素符號" + +#: org/jmol/popup/MainPopupResourceBundle.java:453 +msgid "With Atom Name" +msgstr "標示原å­å稱" + +#: org/jmol/popup/MainPopupResourceBundle.java:454 +msgid "With Atom Number" +msgstr "標示原å­ç·¨è™Ÿ" + +#: org/jmol/popup/MainPopupResourceBundle.java:456 +msgid "Position Label on Atom" +msgstr "在原å­ä¸Šæ”¾ç½®æ¨™ç¤º" + +#: org/jmol/popup/MainPopupResourceBundle.java:457 +msgid "Centered" +msgstr "置中" + +#: org/jmol/popup/MainPopupResourceBundle.java:458 +msgid "Upper Right" +msgstr "å³ä¸Š" + +#: org/jmol/popup/MainPopupResourceBundle.java:459 +msgid "Lower Right" +msgstr "å³ä¸‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:460 +msgid "Upper Left" +msgstr "左上" + +#: org/jmol/popup/MainPopupResourceBundle.java:461 +msgid "Lower Left" +msgstr "左下" + +#: org/jmol/popup/MainPopupResourceBundle.java:463 +msgid "Color" +msgstr "é¡è‰²" + +#: org/jmol/popup/MainPopupResourceBundle.java:466 +msgid "By Scheme" +msgstr "ä¾çµæ§‹æŽ’列" + +#: org/jmol/popup/MainPopupResourceBundle.java:467 +msgid "Element (CPK)" +msgstr "元素(CPK)" + +#: org/jmol/popup/MainPopupResourceBundle.java:468 +msgid "Alternative Location" +msgstr "å¯æ›¿æ›çš„ä½ç½®" + +#: org/jmol/popup/MainPopupResourceBundle.java:469 +msgid "Molecule" +msgstr "分å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:471 +msgid "Formal Charge" +msgstr "å½¢å¼é›»è·" + +#: org/jmol/popup/MainPopupResourceBundle.java:472 +msgid "Partial Charge" +msgstr "部份電è·" + +#: org/jmol/popup/MainPopupResourceBundle.java:473 +msgid "Temperature (Relative)" +msgstr "溫度(相å°)" + +#: org/jmol/popup/MainPopupResourceBundle.java:474 +msgid "Temperature (Fixed)" +msgstr "溫度(固定)" + +#: org/jmol/popup/MainPopupResourceBundle.java:476 +msgid "Amino Acid" +msgstr "氨基酸" + +#: org/jmol/popup/MainPopupResourceBundle.java:478 +msgid "Chain" +msgstr "éˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:479 +msgid "Group" +msgstr "官能基" + +#: org/jmol/popup/MainPopupResourceBundle.java:480 +msgid "Monomer" +msgstr "單體" + +#: org/jmol/popup/MainPopupResourceBundle.java:481 +msgid "Shapely" +msgstr "定形的" + +#: org/jmol/popup/MainPopupResourceBundle.java:483 +msgid "Inherit" +msgstr "éºå‚³" + +#: org/jmol/popup/MainPopupResourceBundle.java:484 +msgid "Black" +msgstr "黑色" + +#: org/jmol/popup/MainPopupResourceBundle.java:485 +msgid "White" +msgstr "白色" + +#: org/jmol/popup/MainPopupResourceBundle.java:486 +msgid "Cyan" +msgstr "è—綠色" + +#: org/jmol/popup/MainPopupResourceBundle.java:488 +msgid "Red" +msgstr "紅色" + +#: org/jmol/popup/MainPopupResourceBundle.java:489 +msgid "Orange" +msgstr "橘色" + +#: org/jmol/popup/MainPopupResourceBundle.java:490 +msgid "Yellow" +msgstr "黃色" + +#: org/jmol/popup/MainPopupResourceBundle.java:491 +msgid "Green" +msgstr "綠色" + +#: org/jmol/popup/MainPopupResourceBundle.java:492 +msgid "Blue" +msgstr "è—色" + +#: org/jmol/popup/MainPopupResourceBundle.java:493 +msgid "Indigo" +msgstr "é›è—" + +#: org/jmol/popup/MainPopupResourceBundle.java:494 +msgid "Violet" +msgstr "紫色" + +#: org/jmol/popup/MainPopupResourceBundle.java:496 +msgid "Salmon" +msgstr "橙紅色" + +#: org/jmol/popup/MainPopupResourceBundle.java:497 +msgid "Olive" +msgstr "橄欖色" + +#: org/jmol/popup/MainPopupResourceBundle.java:498 +msgid "Maroon" +msgstr "è¤ç´…" + +#: org/jmol/popup/MainPopupResourceBundle.java:499 +msgid "Gray" +msgstr "ç°è‰²" + +#: org/jmol/popup/MainPopupResourceBundle.java:500 +msgid "Slate Blue" +msgstr "石æ¿è—色" + +#: org/jmol/popup/MainPopupResourceBundle.java:501 +msgid "Gold" +msgstr "金色" + +#: org/jmol/popup/MainPopupResourceBundle.java:502 +msgid "Orchid" +msgstr "淡紫色" + +#: org/jmol/popup/MainPopupResourceBundle.java:504 +#: org/jmol/popup/MainPopupResourceBundle.java:671 +msgid "Make Opaque" +msgstr "ä¸é€æ˜Žæ•ˆæžœ" + +#: org/jmol/popup/MainPopupResourceBundle.java:505 +#: org/jmol/popup/MainPopupResourceBundle.java:672 +msgid "Make Translucent" +msgstr "åŠé€æ˜Žæ•ˆæžœ" + +#: org/jmol/popup/MainPopupResourceBundle.java:518 +msgid "Background" +msgstr "背景" + +#: org/jmol/popup/MainPopupResourceBundle.java:519 +#: org/jmol/popup/MainPopupResourceBundle.java:662 +msgid "Surfaces" +msgstr "å¹³é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:521 +#: org/jmol/popup/MainPopupResourceBundle.java:683 +#: org/jmol/popup/MainPopupResourceBundle.java:709 +msgid "Axes" +msgstr "軸" + +#: org/jmol/popup/MainPopupResourceBundle.java:522 +#: org/jmol/popup/MainPopupResourceBundle.java:684 +#: org/jmol/popup/MainPopupResourceBundle.java:708 +msgid "Boundbox" +msgstr "有界盒" + +#: org/jmol/popup/MainPopupResourceBundle.java:523 +#: org/jmol/popup/MainPopupResourceBundle.java:659 +#: org/jmol/popup/MainPopupResourceBundle.java:685 +#: org/jmol/popup/MainPopupResourceBundle.java:710 +msgid "Unit cell" +msgstr "å–®ä½æ™¶æ ¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:525 +msgid "Zoom" +msgstr "縮放" + +#: org/jmol/popup/MainPopupResourceBundle.java:532 +msgid "Zoom In" +msgstr "放大" + +#: org/jmol/popup/MainPopupResourceBundle.java:533 +msgid "Zoom Out" +msgstr "縮å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:535 +#: org/jmol/popup/MainPopupResourceBundle.java:601 +msgid "Spin" +msgstr "旋轉" + +#: org/jmol/popup/MainPopupResourceBundle.java:539 +msgid "Set X Rate" +msgstr "設定X軸速率" + +#: org/jmol/popup/MainPopupResourceBundle.java:540 +msgid "Set Y Rate" +msgstr "設定Y軸速率" + +#: org/jmol/popup/MainPopupResourceBundle.java:541 +msgid "Set Z Rate" +msgstr "設定Z軸速率" + +#: org/jmol/popup/MainPopupResourceBundle.java:542 +#: org/jmol/popup/MainPopupResourceBundle.java:568 +msgid "Set FPS" +msgstr "設定 FPS" + +#: org/jmol/popup/MainPopupResourceBundle.java:552 +msgid "Animation" +msgstr "å‹•ç•«" + +#: org/jmol/popup/MainPopupResourceBundle.java:553 +msgid "Animation Mode" +msgstr "動畫模å¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:554 +msgid "Play Once" +msgstr "播放一次" + +#: org/jmol/popup/MainPopupResourceBundle.java:555 +msgid "Palindrome" +msgstr "è¿´æ–‡" + +#: org/jmol/popup/MainPopupResourceBundle.java:556 +msgid "Loop" +msgstr "循環播放" + +#: org/jmol/popup/MainPopupResourceBundle.java:558 +msgid "Play" +msgstr "播放" + +#: org/jmol/popup/MainPopupResourceBundle.java:561 +msgid "Stop" +msgstr "åœæ­¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:562 +msgid "Next Frame" +msgstr "下一格" + +#: org/jmol/popup/MainPopupResourceBundle.java:563 +msgid "Previous Frame" +msgstr "上一格" + +#: org/jmol/popup/MainPopupResourceBundle.java:564 +msgid "Rewind" +msgstr "倒帶" + +#: org/jmol/popup/MainPopupResourceBundle.java:565 +msgid "Reverse" +msgstr "倒帶" + +#: org/jmol/popup/MainPopupResourceBundle.java:566 +msgid "Restart" +msgstr "é‡æ–°é–‹å§‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:575 +#: org/jmol/popup/MainPopupResourceBundle.java:610 +msgid "Measurements" +msgstr "測é‡" + +#: org/jmol/popup/MainPopupResourceBundle.java:576 +msgid "Double-Click begins and ends all measurements" +msgstr "按二下來開始åŠçµæŸæ‰€æœ‰æ¸¬é‡" + +#: org/jmol/popup/MainPopupResourceBundle.java:577 +msgid "Click for distance measurement" +msgstr "按一下來測é‡è·é›¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:578 +msgid "Click for angle measurement" +msgstr "按一下來測é‡è§’度" + +#: org/jmol/popup/MainPopupResourceBundle.java:579 +msgid "Click for torsion (dihedral) measurement" +msgstr "按一下來測é‡(å…©å¹³é¢é–“çš„)扭力" + +#: org/jmol/popup/MainPopupResourceBundle.java:580 +msgid "Click two atoms to display a sequence in the console" +msgstr "點é¸å…©å€‹åŽŸå­ä¸¦åœ¨æŒ‡ä»¤æ¨¡å¼ä¸­é¡¯ç¤ºå…¶é †åº" + +#: org/jmol/popup/MainPopupResourceBundle.java:581 +msgid "Delete measurements" +msgstr "移除é‡æ¸¬å€¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:582 +msgid "List measurements" +msgstr "列出é‡æ¸¬å€¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:583 +msgid "Distance units nanometers" +msgstr "è·é›¢å–®ä½ 奈米" + +#: org/jmol/popup/MainPopupResourceBundle.java:584 +msgid "Distance units Angstroms" +msgstr "è·é›¢å–®ä½ 埃" + +#: org/jmol/popup/MainPopupResourceBundle.java:585 +msgid "Distance units picometers" +msgstr "è·é›¢å–®ä½ 微微米" + +#: org/jmol/popup/MainPopupResourceBundle.java:587 +msgid "Set picking" +msgstr "è¨­å®šæŒ‘é¸ (Set picking)" + +#: org/jmol/popup/MainPopupResourceBundle.java:589 +msgid "Center" +msgstr "將分å­ç½®æ–¼å·¥ä½œè¦–窗中央" + +#: org/jmol/popup/MainPopupResourceBundle.java:591 +msgid "Identity" +msgstr "分å­è³‡è¨Š" + +#: org/jmol/popup/MainPopupResourceBundle.java:592 +msgid "Label" +msgstr "標記" + +#: org/jmol/popup/MainPopupResourceBundle.java:593 +msgid "Select atom" +msgstr "é¸å–原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:594 +msgid "Select chain" +msgstr "é¸å–éˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:595 +msgid "Select element" +msgstr "é¸å–元素" + +#: org/jmol/popup/MainPopupResourceBundle.java:596 +#, fuzzy +msgid "modelKitMode" +msgstr "離開模型組工具模å¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:597 +msgid "Select group" +msgstr "é¸å–官能基" + +#: org/jmol/popup/MainPopupResourceBundle.java:598 +msgid "Select molecule" +msgstr "é¸å–分å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:599 +msgid "Select site" +msgstr "é¸å–ä½ç½®" + +#: org/jmol/popup/MainPopupResourceBundle.java:600 +msgid "Show symmetry operation" +msgstr "顯示å°ç¨±æ“作" + +#: org/jmol/popup/MainPopupResourceBundle.java:603 +msgid "Show" +msgstr "顯示" + +#: org/jmol/popup/MainPopupResourceBundle.java:605 +#, fuzzy +msgid "JavaScript Console" +msgstr "Jmol Script 主控å°" + +#: org/jmol/popup/MainPopupResourceBundle.java:606 +msgid "File Contents" +msgstr "檔案內容" + +#: org/jmol/popup/MainPopupResourceBundle.java:607 +msgid "File Header" +msgstr "檔案標頭" + +#: org/jmol/popup/MainPopupResourceBundle.java:609 +msgid "Isosurface JVXL data" +msgstr "ç­‰é¢çš„ JVXL資料" + +#: org/jmol/popup/MainPopupResourceBundle.java:611 +msgid "Molecular orbital JVXL data" +msgstr "分å­è»ŒåŸŸçš„ JVXL 資料" + +#: org/jmol/popup/MainPopupResourceBundle.java:612 +msgid "Model" +msgstr "模型" + +#: org/jmol/popup/MainPopupResourceBundle.java:613 +msgid "Orientation" +msgstr "æ–¹å‘" + +#: org/jmol/popup/MainPopupResourceBundle.java:614 +msgid "Space group" +msgstr "空間群" + +#: org/jmol/popup/MainPopupResourceBundle.java:616 +msgid "Current state" +msgstr "ç¾åœ¨ç‹€æ…‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:618 +msgid "File" +msgstr "檔案" + +#: org/jmol/popup/MainPopupResourceBundle.java:621 +msgid "Export" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:622 +msgid "Reload" +msgstr "é‡æ–°è¼‰å…¥" + +#: org/jmol/popup/MainPopupResourceBundle.java:623 +msgid "Open from PDB" +msgstr "自 PDB é–‹å•Ÿ" + +#: org/jmol/popup/MainPopupResourceBundle.java:624 +#, fuzzy +msgid "Open local file" +msgstr "開始己é¸çš„檔案" + +#: org/jmol/popup/MainPopupResourceBundle.java:625 +#, fuzzy +msgid "Open URL" +msgstr "é–‹å•Ÿ" + +#: org/jmol/popup/MainPopupResourceBundle.java:626 +msgid "Load full unit cell" +msgstr "載入全部晶格" + +#: org/jmol/popup/MainPopupResourceBundle.java:627 +msgid "Open script" +msgstr "開啟腳本" + +#: org/jmol/popup/MainPopupResourceBundle.java:629 +#: org/jmol/viewer/OutputManager.java:792 +msgid "Capture" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:630 +msgid "Capture rock" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:631 +msgid "Capture spin" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:632 +msgid "Start capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:633 +msgid "End capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:634 +msgid "Disable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:635 +msgid "Re-enable capturing" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:636 +msgid "Set capture replay rate" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:637 +msgid "Toggle capture looping" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:639 +#, java-format +msgid "Save a copy of {0}" +msgstr "å°‡ {0} 儲存一份" + +#: org/jmol/popup/MainPopupResourceBundle.java:640 +msgid "Save script with state" +msgstr "儲存腳本åŠç‹€æ…‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:641 +msgid "Save script with history" +msgstr "儲存腳本åŠæ­·å²" + +#: org/jmol/popup/MainPopupResourceBundle.java:642 +#: org/jmol/popup/MainPopupResourceBundle.java:643 +#: org/jmol/popup/MainPopupResourceBundle.java:644 +#: org/jmol/popup/MainPopupResourceBundle.java:645 +#: org/jmol/popup/MainPopupResourceBundle.java:646 +#, java-format +msgid "Export {0} image" +msgstr "匯出 {0} å½±åƒ" + +#: org/jmol/popup/MainPopupResourceBundle.java:647 +#, fuzzy +msgid "Save as PNG/JMOL (image+zip)" +msgstr "å…¨éƒ¨å­˜æˆ JMOL 檔 (zip)" + +#: org/jmol/popup/MainPopupResourceBundle.java:648 +msgid "Save JVXL isosurface" +msgstr "儲存 JVXL 等值é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:649 +#: org/jmol/popup/MainPopupResourceBundle.java:650 +#: org/jmol/popup/MainPopupResourceBundle.java:651 +#: org/jmol/popup/MainPopupResourceBundle.java:652 +#, java-format +msgid "Export {0} 3D model" +msgstr "匯出 {0} 3D 模å¼" + +#: org/jmol/popup/MainPopupResourceBundle.java:654 +msgid "Computation" +msgstr "計算" + +#: org/jmol/popup/MainPopupResourceBundle.java:655 +msgid "Optimize structure" +msgstr "最é©åŒ–çµæ§‹" + +#: org/jmol/popup/MainPopupResourceBundle.java:656 +msgid "Model kit" +msgstr "模型組工具" + +#: org/jmol/popup/MainPopupResourceBundle.java:660 +msgid "Extract MOL data" +msgstr "æ“·å– MOL 資料" + +#: org/jmol/popup/MainPopupResourceBundle.java:663 +msgid "Dot Surface" +msgstr "斑點表é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:664 +msgid "van der Waals Surface" +msgstr "凡得瓦表é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:665 +msgid "Molecular Surface" +msgstr "分å­è¡¨é¢" + +#: org/jmol/popup/MainPopupResourceBundle.java:666 +#, java-format +msgid "Solvent Surface ({0}-Angstrom probe)" +msgstr "溶劑表é¢ç© (以 {0}-埃 來探查)" + +#: org/jmol/popup/MainPopupResourceBundle.java:668 +#, java-format +msgid "Solvent-Accessible Surface (VDW + {0} Angstrom)" +msgstr "溶劑å¯åŠè¡¨é¢ç© (VDW + {0} 埃)" + +#: org/jmol/popup/MainPopupResourceBundle.java:669 +msgid "Molecular Electrostatic Potential (range ALL)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:670 +msgid "Molecular Electrostatic Potential (range -0.1 0.1)" +msgstr "" + +#: org/jmol/popup/MainPopupResourceBundle.java:676 +#: org/jmol/popup/MainPopupResourceBundle.java:677 +#: org/jmol/popup/MainPopupResourceBundle.java:678 +#, java-format +msgid "Reload {0}" +msgstr "é‡æ–°è¼‰å…¥ {0}" + +#: org/jmol/popup/MainPopupResourceBundle.java:679 +#, java-format +msgid "Reload {0} + Display {1}" +msgstr "é‡æ–°è¼‰å…¥ {0} + 顯示 {1}" + +#: org/jmol/popup/MainPopupResourceBundle.java:680 +msgid "Reload + Polyhedra" +msgstr "é‡æžè¼‰å…¥ + 多é¢é«”" + +#: org/jmol/popup/MainPopupResourceBundle.java:687 +msgid "Hide" +msgstr "éš±è—" + +#: org/jmol/popup/MainPopupResourceBundle.java:688 +msgid "Dotted" +msgstr "點狀" + +#: org/jmol/popup/MainPopupResourceBundle.java:690 +msgid "Pixel Width" +msgstr "åƒç´ å¯¬åº¦" + +#: org/jmol/popup/MainPopupResourceBundle.java:691 +#: org/jmol/popup/MainPopupResourceBundle.java:692 +#: org/jmol/popup/MainPopupResourceBundle.java:693 +#: org/jmol/popup/MainPopupResourceBundle.java:694 +#, java-format +msgid "{0} px" +msgstr "{0} åƒç´ " + +#: org/jmol/popup/MainPopupResourceBundle.java:696 +msgid "Angstrom Width" +msgstr "幾個埃大å°çš„寬度" + +#: org/jmol/popup/MainPopupResourceBundle.java:704 +msgid "Selection Halos" +msgstr "é¸æ“‡å…‰åœˆ" + +#: org/jmol/popup/MainPopupResourceBundle.java:705 +msgid "Show Hydrogens" +msgstr "顯示氫原å­" + +#: org/jmol/popup/MainPopupResourceBundle.java:706 +msgid "Show Measurements" +msgstr "顯示é‡æ¸¬çµæžœ" + +#: org/jmol/popup/MainPopupResourceBundle.java:707 +msgid "Perspective Depth" +msgstr "é€è¦–深度" + +#: org/jmol/popup/MainPopupResourceBundle.java:711 +msgid "RasMol Colors" +msgstr "RasMolé¡è‰²" + +#: org/jmol/popup/MainPopupResourceBundle.java:712 +msgid "About..." +msgstr "關於..." + +#: org/jmol/script/ScriptCompiler.java:3051 +msgid "script compiler ERROR: " +msgstr "script 編譯器錯誤: " + +#: org/jmol/script/ScriptError.java:192 +msgid "x y z axis expected" +msgstr "é æœŸçš„ x y z 軸" + +#: org/jmol/script/ScriptError.java:195 +#, java-format +msgid "{0} not allowed with background model displayed" +msgstr "{0}ä¸å…許背景中出ç¾å…¶å®ƒæ¨¡åž‹" + +#: org/jmol/script/ScriptError.java:198 +#: org/jmol/script/ScriptTokenParser.java:1487 +msgid "bad argument count" +msgstr "åƒæ•¸æ•¸ç›®éŒ¯èª¤" + +#: org/jmol/script/ScriptError.java:201 +msgid "Miller indices cannot all be zero." +msgstr "米勒指數(Miller Index)ä¸å¯ç‚º 0" + +#: org/jmol/script/ScriptError.java:204 +msgid "bad [R,G,B] color" +msgstr "錯的 [R,G,B] é¡è‰²æ•¸å€¼" + +#: org/jmol/script/ScriptError.java:207 +msgid "boolean expected" +msgstr "é æœŸçš„真å‡å€¼" + +#: org/jmol/script/ScriptError.java:210 +msgid "boolean or number expected" +msgstr "é æœŸçš„布林值或數值" + +#: org/jmol/script/ScriptError.java:213 +#, java-format +msgid "boolean, number, or {0} expected" +msgstr "é æœŸçš„布林值ã€æ•¸å€¼æˆ–{0}" + +#: org/jmol/script/ScriptError.java:216 +msgid "cannot set value" +msgstr "" + +#: org/jmol/script/ScriptError.java:219 +msgid "color expected" +msgstr "é æœŸçš„é¡è‰²" + +#: org/jmol/script/ScriptError.java:222 +msgid "a color or palette name (Jmol, Rasmol) is required" +msgstr "一定è¦æœ‰é¡è‰²æˆ–調色盤åå­— (Jmol, Rasmol)" + +#: org/jmol/script/ScriptError.java:225 +#: org/jmol/script/ScriptTokenParser.java:1493 +msgid "command expected" +msgstr "é æœŸçš„指令" + +#: org/jmol/script/ScriptError.java:228 +msgid "{x y z} or $name or (atom expression) required" +msgstr "一定è¦æœ‰{x y z}或 $name 或 (原å­è¡¨ç¤ºå¼)" + +#: org/jmol/script/ScriptError.java:231 +msgid "draw object not defined" +msgstr "沒有定義繪圖物件" + +#: org/jmol/script/ScriptError.java:234 +#: org/jmol/script/ScriptTokenParser.java:1499 +msgid "unexpected end of script command" +msgstr "指令稿指令 (script command) éžé æœŸçš„中止執行" + +#: org/jmol/script/ScriptError.java:237 +msgid "valid (atom expression) expected" +msgstr "é æœŸæœ‰æ­£ç¢ºçš„(原å­è¡¨ç¤ºå¼)" + +#: org/jmol/script/ScriptError.java:240 +msgid "(atom expression) or integer expected" +msgstr "é æœŸæœ‰(原å­è¡¨ç¤ºå¼)或整數" + +#: org/jmol/script/ScriptError.java:243 +msgid "filename expected" +msgstr "é æœŸæœ‰æª”å" + +#: org/jmol/script/ScriptError.java:246 +msgid "file not found" +msgstr "沒有找到檔案" + +#: org/jmol/script/ScriptError.java:249 +msgid "incompatible arguments" +msgstr "ä¸ç›¸å®¹çš„åƒæ•¸" + +#: org/jmol/script/ScriptError.java:252 +msgid "insufficient arguments" +msgstr "ä¸è¶³çš„åƒæ•¸" + +#: org/jmol/script/ScriptError.java:255 +msgid "integer expected" +msgstr "é æœŸç‚ºæ•´æ•¸" + +#: org/jmol/script/ScriptError.java:258 +#, java-format +msgid "integer out of range ({0} - {1})" +msgstr "整數超出({0} - {1})範åœ" + +#: org/jmol/script/ScriptError.java:261 +msgid "invalid argument" +msgstr "無效的åƒæ•¸" + +#: org/jmol/script/ScriptError.java:264 +msgid "invalid parameter order" +msgstr "ä¸åˆç†çš„åƒæ•¸é †åº" + +#: org/jmol/script/ScriptError.java:267 +msgid "keyword expected" +msgstr "åƒæ•¸é †åºç„¡æ•ˆ" + +#: org/jmol/script/ScriptError.java:270 +msgid "no MO coefficient data available" +msgstr "沒有分å­è»ŒåŸŸ(MO)çš„åƒæ•¸è³‡æ–™å¯ç”¨" + +#: org/jmol/script/ScriptError.java:273 +#, java-format +msgid "An MO index from 1 to {0} is required" +msgstr "分å­è»ŒåŸŸ(MO)索引值必須介在1到{0}之間" + +#: org/jmol/script/ScriptError.java:276 +msgid "no MO basis/coefficient data available for this frame" +msgstr "這個çµæ§‹æ²’有分å­è»ŒåŸŸ(MO)的基底(basis)或åƒæ•¸è³‡æ–™å¯ç”¨" + +#: org/jmol/script/ScriptError.java:279 +msgid "no MO occupancy data available" +msgstr "沒有佔用分å­è»ŒåŸŸ(MO)的資料å¯ç”¨" + +#: org/jmol/script/ScriptError.java:282 +msgid "Only one molecular orbital is available in this file" +msgstr "在這個檔案中åªæœ‰ä¸€å€‹åˆ†å­è»ŒåŸŸ(MO)資料å¯ç”¨" + +#: org/jmol/script/ScriptError.java:285 +#, java-format +msgid "{0} requires that only one model be displayed" +msgstr "{0}åªèƒ½é¡¯ç¤ºä¸€å€‹æ¨¡åž‹" + +#: org/jmol/script/ScriptError.java:288 +#, java-format +msgid "{0} requires that only one model be loaded" +msgstr "éœ€è¦ {0}, ç›®å‰åªæœ‰è¼‰å…¥ä¸€å€‹æ¨¡çµ„" + +#: org/jmol/script/ScriptError.java:291 +msgid "No data available" +msgstr "沒有å¯ç”¨çš„資料" + +#: org/jmol/script/ScriptError.java:295 +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "檔案中沒有部份電è·è³‡æ–™ï¼›Jmol需è¦éƒ¨ä»½é›»è·è³‡æ–™ä¾†æ¸²æŸ“繪製 MEP 資料。" + +#: org/jmol/script/ScriptError.java:298 +msgid "No unit cell" +msgstr "沒有單ä½æ™¶æ ¼" + +#: org/jmol/script/ScriptError.java:301 +#: org/jmol/script/ScriptTokenParser.java:1523 +msgid "number expected" +msgstr "é æœŸçš„數值" + +#: org/jmol/script/ScriptError.java:304 +#, java-format +msgid "number must be ({0} or {1})" +msgstr "數值必需是({0} 或 {1})" + +#: org/jmol/script/ScriptError.java:307 +#, java-format +msgid "decimal number out of range ({0} - {1})" +msgstr "å進ä½æ•¸å€¼è¶…出({0} - {1})之間" + +#: org/jmol/script/ScriptError.java:310 +msgid "object name expected after '$'" +msgstr "物件å必需在'$'之後" + +#: org/jmol/script/ScriptError.java:314 +#, java-format +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "é æœŸæœ‰ä¸€å€‹å¹³é¢å­˜åœ¨--ä¸æ˜¯3個點或原å­è¡¨ç¤ºå¼å°±æ˜¯{0} 或 {1} 或 {2}" + +#: org/jmol/script/ScriptError.java:317 +msgid "property name expected" +msgstr "é æœŸçš„屬性å" + +#: org/jmol/script/ScriptError.java:320 +#, java-format +msgid "space group {0} was not found." +msgstr "沒有發ç¾ç©ºé–“群{0}" + +#: org/jmol/script/ScriptError.java:323 +msgid "quoted string expected" +msgstr "é æœŸæœ‰åŠ å¼•è™Ÿçš„字串" + +#: org/jmol/script/ScriptError.java:326 +msgid "quoted string or identifier expected" +msgstr "é æœŸæœ‰åŠ å¼•è™Ÿçš„字串或識別符號" + +#: org/jmol/script/ScriptError.java:329 +msgid "too many rotation points were specified" +msgstr "太多被期待的旋轉點" + +#: org/jmol/script/ScriptError.java:332 +msgid "too many script levels" +msgstr "太多層指令(script levels)" + +#: org/jmol/script/ScriptError.java:335 +msgid "unrecognized atom property" +msgstr "無法辯識的原å­å±¬æ€§" + +#: org/jmol/script/ScriptError.java:338 +msgid "unrecognized bond property" +msgstr "無法辯識的化學éµå±¬æ€§" + +#: org/jmol/script/ScriptError.java:341 +msgid "unrecognized command" +msgstr "無法辨識的指令" + +#: org/jmol/script/ScriptError.java:344 +msgid "runtime unrecognized expression" +msgstr "執行時無法辨識的表示å¼" + +#: org/jmol/script/ScriptError.java:347 +msgid "unrecognized object" +msgstr "無法辦識的物件" + +#: org/jmol/script/ScriptError.java:350 +#: org/jmol/script/ScriptTokenParser.java:1541 +#, java-format +msgid "unrecognized {0} parameter" +msgstr "ä¸èƒ½è¾¦è­˜çš„åƒæ•¸ {0}" + +#: org/jmol/script/ScriptError.java:354 +#, java-format +msgid "unrecognized {0} parameter in Jmol state script (set anyway)" +msgstr "Jmol 狀態指令稿中ä¸è¢«èªè­˜çš„åƒæ•¸{0}" + +#: org/jmol/script/ScriptError.java:357 +#, java-format +msgid "unrecognized SHOW parameter -- use {0}" +msgstr "ä¸èƒ½è­˜åˆ¥ SHOW çš„åƒæ•¸ -- 使用了{0}" + +#: org/jmol/script/ScriptError.java:363 +#, java-format +msgid "write what? {0} or {1} \"filename\"" +msgstr "寫什麼呢?{0} 或 {1} \"檔å\"" + +#: org/jmol/script/ScriptError.java:412 org/jmol/script/ScriptEval.java:6447 +msgid "script ERROR: " +msgstr "script 錯誤: " + +#: org/jmol/script/ScriptEval.java:3263 +#, java-format +msgid "show saved: {0}" +msgstr "" + +#: org/jmol/script/ScriptEval.java:3277 org/jmol/script/ScriptEval.java:7960 +#, java-format +msgid "{0} atoms deleted" +msgstr "己刪除{0}個原å­" + +#: org/jmol/script/ScriptEval.java:3995 org/jmol/scriptext/CmdExt.java:643 +#, java-format +msgid "{0} hydrogen bonds" +msgstr "{0}個氫éµ" + +#: org/jmol/script/ScriptEval.java:4649 +#, java-format +msgid "file {0} created" +msgstr "檔案 {0} 新增完æˆ" + +#: org/jmol/script/ScriptEval.java:7667 +#, java-format +msgid "to resume, enter: &{0}" +msgstr "" + +#: org/jmol/script/ScriptTokenParser.java:1490 +#, java-format +msgid "invalid context for {0}" +msgstr "å°{0}而言其å‰å¾Œé—œé€£ç„¡æ•ˆ" + +#: org/jmol/script/ScriptTokenParser.java:1496 +msgid "{ number number number } expected" +msgstr "é æœŸçš„ {數值 數值 數值}" + +#: org/jmol/script/ScriptTokenParser.java:1502 +msgid "end of expression expected" +msgstr "é æ–™ä¹‹ä¸­çš„表示å¼çµæŸ" + +#: org/jmol/script/ScriptTokenParser.java:1505 +msgid "identifier or residue specification expected" +msgstr "é æœŸçš„識別符號或殘基è¦æ ¼" + +#: org/jmol/script/ScriptTokenParser.java:1508 +msgid "invalid atom specification" +msgstr "ä¸åˆç†çš„原å­è¦æ ¼" + +#: org/jmol/script/ScriptTokenParser.java:1511 +msgid "invalid chain specification" +msgstr "ä¸åˆç†çš„化學éˆè¦æ ¼" + +#: org/jmol/script/ScriptTokenParser.java:1514 +#, java-format +msgid "invalid expression token: {0}" +msgstr "ä¸åˆç†çš„表示å¼ç¬¦è™Ÿï¼š{0}" + +#: org/jmol/script/ScriptTokenParser.java:1517 +msgid "invalid model specification" +msgstr "ä¸åˆç†çš„模型è¦æ ¼" + +#: org/jmol/script/ScriptTokenParser.java:1520 +#, java-format +msgid "missing END for {0}" +msgstr "消失了{0}çš„çµæŸç¬¦è™Ÿ" + +#: org/jmol/script/ScriptTokenParser.java:1526 +msgid "number or variable name expected" +msgstr "é æœŸçš„數字或變數å稱" + +#: org/jmol/script/ScriptTokenParser.java:1529 +msgid "residue specification (ALA, AL?, A*) expected" +msgstr "é æœŸçš„殘留物è¦ç¯„ (ALA, AL?, A*)" + +#: org/jmol/script/ScriptTokenParser.java:1532 +#, java-format +msgid "{0} expected" +msgstr "é æœŸçš„{0}" + +#: org/jmol/script/ScriptTokenParser.java:1535 +#, java-format +msgid "{0} unexpected" +msgstr "料想ä¸åˆ°çš„{0}" + +#: org/jmol/script/ScriptTokenParser.java:1538 +#, java-format +msgid "unrecognized expression token: {0}" +msgstr "ä¸èƒ½è¾¦è­˜çš„表é”å¼ï¼š{0}" + +#: org/jmol/script/ScriptTokenParser.java:1544 +#, java-format +msgid "unrecognized token: {0}" +msgstr "ä¸èƒ½è¾¦è­˜çš„符號{0}" + +#: org/jmol/scriptext/CmdExt.java:621 +#, java-format +msgid "{0} charges modified" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:729 +#, java-format +msgid "{0} struts added" +msgstr "{0} 加入支架 (struts)" + +#: org/jmol/scriptext/CmdExt.java:865 +#, java-format +msgid "Note: Enable looping using {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:867 +#, java-format +msgid "Animation delay based on: {0}" +msgstr "" + +#: org/jmol/scriptext/CmdExt.java:1872 +#, java-format +msgid "{0} connections deleted" +msgstr "己刪除{0}個連çµ" + +#: org/jmol/scriptext/CmdExt.java:1884 +#, java-format +msgid "{0} new bonds; {1} modified" +msgstr "{0} 個新化學éµ; {1} 個己修改" + +#: org/jmol/scriptext/MathExt.java:3661 +msgid "Note: More than one model is involved in this contact!" +msgstr "" + +#: org/jmol/shape/Frank.java:92 +msgid "Click for menu..." +msgstr "滑鼠點擊以顯示é¸å–®" + +#: org/jmol/util/GenericApplet.java:294 +#, java-format +msgid "" +"Jmol Applet version {0} {1}.\n" +"\n" +"An OpenScience project.\n" +"\n" +"See http://www.jmol.org for more information" +msgstr "" +"Jmol Applet 版本 {0} {1}.\n" +"\n" +"OpenScience 計劃.\n" +"\n" +"更多訊æ¯è«‹åƒé–± http://www.jmol.org" + +#: org/jmol/util/GenericApplet.java:681 +msgid "File Error:" +msgstr "檔案錯誤:" + +#: org/jmol/viewer/ActionManager.java:231 +#, java-format +msgid "assign/new atom or bond (requires {0})" +msgstr "指定/新增 原å­æˆ–æ˜¯éµ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:235 +msgid "pop up recent context menu (click on Jmol frank)" +msgstr "彈出最近的文字功能é¸å–® (點擊 Jmol frank)" + +#: org/jmol/viewer/ActionManager.java:237 +#, java-format +msgid "delete atom (requires {0})" +msgstr "ç§»é™¤åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:239 +#, java-format +msgid "delete bond (requires {0})" +msgstr "ç§»é™¤éµ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:241 +#, java-format +msgid "adjust depth (back plane; requires {0})" +msgstr "調整深度 (後平é¢; éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:242 +#, java-format +msgid "move atom (requires {0})" +msgstr "ç§»å‹•åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:245 +#, java-format +msgid "move whole DRAW object (requires {0})" +msgstr "移動整個 DRAW 物件 (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:247 +#, java-format +msgid "move specific DRAW point (requires {0})" +msgstr "移動特定 DRAW 點 (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:248 +#, java-format +msgid "move label (requires {0})" +msgstr "移動標籤 (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:251 +#, java-format +msgid "move atom and minimize molecule (requires {0})" +msgstr "移動原å­ä»¥åŠåˆ†å­æœ€å°åŒ– (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:254 +#, java-format +msgid "move and minimize molecule (requires {0})" +msgstr "移動以åŠåˆ†å­æœ€å°åŒ– (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:257 +#, java-format +msgid "move selected atoms (requires {0})" +msgstr "移動所é¸çš„åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:259 +#, java-format +msgid "drag atoms in Z direction (requires {0})" +msgstr "" + +#: org/jmol/viewer/ActionManager.java:261 +msgid "simulate multi-touch using the mouse)" +msgstr "使用滑鼠模擬多點觸碰" + +#: org/jmol/viewer/ActionManager.java:263 +#, java-format +msgid "translate navigation point (requires {0} and {1})" +msgstr "轉化導覽點 (éœ€è¦ {0} åŠ {1})" + +#: org/jmol/viewer/ActionManager.java:265 +msgid "pick an atom" +msgstr "è«‹é¸å–原å­" + +#: org/jmol/viewer/ActionManager.java:267 +#, java-format +msgid "connect atoms (requires {0})" +msgstr "連接原å­èˆ‡åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:269 +#, java-format +msgid "pick an ISOSURFACE point (requires {0}" +msgstr "è«‹é¸ä¸€å€‹ç­‰æ›²é¢é»ž (éœ€è¦ {0}" + +#: org/jmol/viewer/ActionManager.java:271 +#, java-format +msgid "pick a label to toggle it hidden/displayed (requires {0})" +msgstr "è«‹é¸ä¸€å€‹æ¨™è¨˜ä»¥åˆ‡æ›éš±è—/顯示 (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:278 +#, java-format +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "é¸å–一個原å­ä½œç‚ºæ¸¬é‡ (測é‡ä¹‹å‰æˆ–之後 {0})" + +#: org/jmol/viewer/ActionManager.java:281 +#, java-format +msgid "pick a point or atom to navigate to (requires {0})" +msgstr "é¸æ“‡ä¸€å€‹é»žæˆ–是原å­ä»¥é€²è¡Œå°Žè¦½ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:284 +#, java-format +msgid "pick a DRAW point (for measurements) (requires {0}" +msgstr "è«‹é¸ä¸€å€‹ç¹ªåœ–點 (用在測é‡) (éœ€è¦ {0}" + +#: org/jmol/viewer/ActionManager.java:287 +msgid "pop up the full context menu" +msgstr "彈出全文é¸å–®" + +#: org/jmol/viewer/ActionManager.java:289 +msgid "reset (when clicked off the model)" +msgstr "é‡è¨­ (當點擊這模型)" + +#: org/jmol/viewer/ActionManager.java:290 +msgid "rotate" +msgstr "旋轉" + +#: org/jmol/viewer/ActionManager.java:292 +#, java-format +msgid "rotate branch around bond (requires {0})" +msgstr "讓分æžçµæ§‹ç¹žè‘—éµæ—‹è½‰ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:294 +#, java-format +msgid "rotate selected atoms (requires {0})" +msgstr "旋轉所é¸çš„åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:295 +msgid "rotate Z" +msgstr "繞 Z 軸旋轉" + +#: org/jmol/viewer/ActionManager.java:300 +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "繞著 Z (滑鼠的水平方å‘移動) 或是縮放 (滑鼠的垂直方å‘移動)" + +#: org/jmol/viewer/ActionManager.java:301 +#, java-format +msgid "select an atom (requires {0})" +msgstr "é¸å–åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:304 +#, java-format +msgid "select and drag atoms (requires {0})" +msgstr "é¸å–åŠæ‹–æ›³åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:306 +#, java-format +msgid "unselect this group of atoms (requires {0})" +msgstr "å–消é¸å–é€™äº›åŽŸå­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:309 +#, java-format +msgid "select NONE (requires {0})" +msgstr "ä¸é¸ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:311 +#, java-format +msgid "add this group of atoms to the set of selected atoms (requires {0})" +msgstr "將這些原å­åŠ åˆ°å·²ç¶“é¸å–的原å­ä¸­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:314 +#, java-format +msgid "toggle selection (requires {0})" +msgstr "固定所é¸çš„ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:321 +#, java-format +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"若已經全é¸, è«‹å…ˆå–消全é¸, 或者是將這堆原å­åŠ åˆ°å·²ç¶“é¸å–的原å­ä¸­ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:324 +msgid "pick an atom to initiate or conclude a measurement" +msgstr "é¸å–一個原å­ä»¥é€²è¡Œæ¸¬é‡æˆ–是已經包å«æ¸¬é‡å€¼" + +#: org/jmol/viewer/ActionManager.java:326 +#, java-format +msgid "adjust slab (front plane; requires {0})" +msgstr "èª¿æ•´å¹³æ¿ (å‰å¹³é¢; éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:328 +#, java-format +msgid "move slab/depth window (both planes; requires {0})" +msgstr "移動平æ¿/深度視窗 (å…©å¹³é¢; éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:330 +msgid "zoom (along right edge of window)" +msgstr "縮放 (沿著視窗å³å´)" + +#: org/jmol/viewer/ActionManager.java:336 +#, java-format +msgid "click on two points to spin around axis counterclockwise (requires {0})" +msgstr "點å–兩個點以繞著該軸逆時é‡æ—‹è½‰ (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:339 +#, java-format +msgid "click on two points to spin around axis clockwise (requires {0})" +msgstr "點å–兩個點以繞著該軸順時é‡è½‰å‹• (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:342 +#, java-format +msgid "stop motion (requires {0})" +msgstr "åœæ­¢é‹å‹• (éœ€è¦ {0})" + +#: org/jmol/viewer/ActionManager.java:347 +msgid "spin model (swipe and release button and stop motion simultaneously)" +msgstr "æ—‹è½‰æ¨¡å¼ (點擊與釋放按鈕以åŠåŒæ™‚åœæ­¢ç§»å‹•)" + +#: org/jmol/viewer/ActionManager.java:348 +msgid "translate" +msgstr "翻譯" + +#: org/jmol/viewer/ActionManager.java:349 +msgid "zoom" +msgstr "縮放" + +#: org/jmol/viewer/ActionManager.java:1991 +msgid "pick one more atom in order to spin the model around an axis" +msgstr "è«‹å†å¤šé¸ä¸€å€‹åŽŸå­ä¾†ä½¿åˆ†å­å¯ä»¥ä¸€å€‹è»¸æ—‹è½‰" + +#: org/jmol/viewer/ActionManager.java:1992 +msgid "pick two atoms in order to spin the model around an axis" +msgstr "è«‹é¸äºŒå€‹åŽŸå­ä¾†ä½¿åˆ†å­å¯ä»¥ç¹žä¸€å€‹è»¸æ—‹è½‰" + +#: org/jmol/viewer/ActionManager.java:1996 +msgid "pick one more atom in order to display the symmetry relationship" +msgstr "è«‹é¸å–一個或是多個原å­ä»¥å‘ˆç¾å°ç¨±é—œä¿‚" + +#: org/jmol/viewer/ActionManager.java:1998 +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "è«‹é¸å–兩個原å­ä»¥å‘ˆç¾å…©è€…çš„å°ç¨±é—œä¿‚" + +#: org/jmol/viewer/OutputManager.java:794 +msgid "canceled" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:795 +#, java-format +msgid "{0} saved" +msgstr "" + +#: org/jmol/viewer/OutputManager.java:861 +#, java-format +msgid "Setting log file to {0}" +msgstr "設定紀錄檔到 {0}" + +#: org/jmol/viewer/OutputManager.java:863 +msgid "Cannot set log file path." +msgstr "無法設定紀錄檔之路徑" + +#: org/jmol/viewer/SelectionManager.java:114 +#: org/jmol/viewer/SelectionManager.java:125 +#, java-format +msgid "{0} atoms hidden" +msgstr "己隱è—{0}個原å­" + +#: org/jmol/viewer/SelectionManager.java:186 +#, java-format +msgid "{0} atoms selected" +msgstr "å·±é¸æ“‡{0}個原å­" + +#: org/jmol/viewer/Viewer.java:4158 +msgid "Drag to move label" +msgstr "拖著移走標記" + +#: org/jmol/viewer/Viewer.java:7868 +msgid "clipboard is not accessible -- use signed applet" +msgstr "ä¸èƒ½å­˜å–剪貼簿--請用使用簽署éŽçš„ç¨‹åº (applet)" + +#: org/jmol/viewer/Viewer.java:9049 +#, java-format +msgid "{0} hydrogens added" +msgstr "{0} 加入氫" + +#~ msgid "Hide Symmetry" +#~ msgstr "éš±è—å°ç¨±" + +#~ msgid "Loading Jmol applet ..." +#~ msgstr "載入 Jmol applet 中 ..." + +#~ msgid " {0} seconds" +#~ msgstr " {0} 秒" + +#~ msgid "Java version:" +#~ msgstr "Java 版本:" + +#~ msgid "1 processor" +#~ msgstr "單一處ç†å™¨" + +#~ msgid "unknown processor count" +#~ msgstr "ä¸çŸ¥é“處ç†å™¨æ•¸ç›®" + +#~ msgid "Java memory usage:" +#~ msgstr "Java 之記憶體使用率:" + +#~ msgid "{0} MB free" +#~ msgstr "還有 {0} MB未使用" + +#~ msgid "unknown maximum" +#~ msgstr "ä¸çŸ¥æ¥µå¤§å€¼ç‚ºä½•" + +#~ msgid "Open file or URL" +#~ msgstr "開啟檔案或連çµ" diff --git a/config/plugins/visualizations/jmol/static/j2s/J/translation/PO.js b/config/plugins/visualizations/jmol/static/j2s/J/translation/PO.js new file mode 100755 index 000000000000..6e3dafba4a53 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/J/translation/PO.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("J.translation"); +(function(){ +var c$ = Clazz.declareType(J.translation, "PO", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/AlphaMonomer.js b/config/plugins/visualizations/jmol/static/j2s/JM/AlphaMonomer.js new file mode 100755 index 000000000000..c44cdf1a684b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/AlphaMonomer.js @@ -0,0 +1,155 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Monomer"], "JM.AlphaMonomer", ["JU.Quat", "$.V3", "J.c.STR", "JM.Helix", "$.Sheet", "$.Turn"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.proteinStructure = null; +this.nitrogenHydrogenPoint = null; +Clazz.instantialize(this, arguments);}, JM, "AlphaMonomer", JM.Monomer); +Clazz.overrideConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "isProtein", +function(){ +return true; +}); +c$.validateAndAllocateA = Clazz.defineMethod(c$, "validateAndAllocateA", +function(chain, group3, seqcode, firstIndex, lastIndex, specialAtomIndexes){ +return (firstIndex != lastIndex || specialAtomIndexes[2] != firstIndex ? null : new JM.AlphaMonomer().set2(chain, group3, seqcode, firstIndex, lastIndex, JM.AlphaMonomer.alphaOffsets)); +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "isAlphaMonomer", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "getStructure", +function(){ +return this.proteinStructure; +}); +Clazz.defineMethod(c$, "setStructure", +function(ps){ +if ((this.proteinStructure = ps) == null) this.nitrogenHydrogenPoint = null; +}, "JM.ProteinStructure"); +Clazz.overrideMethod(c$, "setStrucNo", +function(n){ +if (this.proteinStructure != null) this.proteinStructure.strucNo = n; +}, "~N"); +Clazz.overrideMethod(c$, "getProteinStructureType", +function(){ +return this.proteinStructure == null ? J.c.STR.NONE : this.proteinStructure.type; +}); +Clazz.overrideMethod(c$, "getProteinStructureSubType", +function(){ +return this.proteinStructure == null ? J.c.STR.NONE : this.proteinStructure.subtype; +}); +Clazz.overrideMethod(c$, "getStrucNo", +function(){ +return this.proteinStructure != null ? this.proteinStructure.strucNo : 0; +}); +Clazz.overrideMethod(c$, "isHelix", +function(){ +return this.proteinStructure != null && this.proteinStructure.type === J.c.STR.HELIX; +}); +Clazz.overrideMethod(c$, "isSheet", +function(){ +return this.proteinStructure != null && this.proteinStructure.type === J.c.STR.SHEET; +}); +Clazz.overrideMethod(c$, "setProteinStructureType", +function(type, monomerIndexCurrent){ +if (this.proteinStructure != null) this.proteinStructure.removeMonomer(this.monomerIndex); +if (monomerIndexCurrent < 0 || monomerIndexCurrent > 0 && this.monomerIndex == 0) { +switch (type) { +case J.c.STR.HELIX: +case J.c.STR.HELIXALPHA: +case J.c.STR.HELIX310: +case J.c.STR.HELIXPI: +this.setStructure( new JM.Helix(this.bioPolymer, this.monomerIndex, 1, type)); +break; +case J.c.STR.SHEET: +this.setStructure( new JM.Sheet(this.bioPolymer, this.monomerIndex, 1, type)); +break; +case J.c.STR.TURN: +this.setStructure( new JM.Turn(this.bioPolymer, this.monomerIndex, 1)); +break; +case J.c.STR.NONE: +this.setStructure(null); +} +} else { +this.setStructure(this.bioPolymer.getProteinStructure(monomerIndexCurrent)); +if (this.proteinStructure != null) this.proteinStructure.addMonomer(this.monomerIndex); +}return this.monomerIndex; +}, "J.c.STR,~N"); +Clazz.defineMethod(c$, "getAtom", +function(specialAtomID){ +return (specialAtomID == 2 ? this.getLeadAtom() : null); +}, "~N"); +Clazz.defineMethod(c$, "getAtomPoint", +function(specialAtomID){ +return (specialAtomID == 2 ? this.getLeadAtom() : null); +}, "~N"); +Clazz.overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +var atom1 = this.getLeadAtom(); +var atom2 = possiblyPreviousMonomer.getLeadAtom(); +return atom1.isBonded(atom2) || atom1.distance(atom2) <= 4.2; +}, "JM.Monomer"); +Clazz.overrideMethod(c$, "getQuaternionFrameCenter", +function(qType){ +return this.getQuaternionFrameCenterAlpha(qType); +}, "~S"); +Clazz.overrideMethod(c$, "isWithinStructure", +function(type){ +return (this.proteinStructure != null && this.proteinStructure.type === type && this.proteinStructure.isWithin(this.monomerIndex)); +}, "J.c.STR"); +Clazz.defineMethod(c$, "getQuaternionFrameCenterAlpha", +function(qType){ +switch ((qType).charCodeAt(0)) { +case 98: +case 99: +case 67: +case 120: +return this.getLeadAtom(); +default: +case 97: +case 110: +case 112: +case 80: +case 113: +return null; +} +}, "~S"); +Clazz.overrideMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return this.getHelixData2(tokType, qType, mStep); +}, "~N,~S,~N"); +Clazz.overrideMethod(c$, "getQuaternion", +function(qType){ +return this.getQuaternionAlpha(qType); +}, "~S"); +Clazz.defineMethod(c$, "getQuaternionAlpha", +function(qType){ +if (this.monomerIndex < 0) return null; +var vA = new JU.V3(); +var vB = new JU.V3(); +var vC = null; +switch ((qType).charCodeAt(0)) { +default: +case 97: +case 110: +case 112: +case 113: +return null; +case 98: +case 99: +case 120: +if (this.monomerIndex == 0 || this.monomerIndex == this.bioPolymer.monomerCount - 1) return null; +var ptCa = this.getLeadAtom(); +var ptCaNext = this.bioPolymer.getLeadPoint(this.monomerIndex + 1); +var ptCaPrev = this.bioPolymer.getLeadPoint(this.monomerIndex - 1); +vA.sub2(ptCaNext, ptCa); +vB.sub2(ptCaPrev, ptCa); +break; +} +return JU.Quat.getQuaternionFrameV(vA, vB, vC, false); +}, "~S"); +c$.alphaOffsets = Clazz.newByteArray(-1, [0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/AlphaPolymer.js b/config/plugins/visualizations/jmol/static/j2s/JM/AlphaPolymer.js new file mode 100755 index 000000000000..56de7636779d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/AlphaPolymer.js @@ -0,0 +1,183 @@ +Clazz.declarePackage("JM"); +Clazz.load(["java.lang.Enum", "JM.BioPolymer"], "JM.AlphaPolymer", ["JU.Measure", "$.P3", "J.c.STR", "JM.Helix", "$.Sheet", "$.Turn", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pt0 = 0; +Clazz.instantialize(this, arguments);}, JM, "AlphaPolymer", JM.BioPolymer); +Clazz.makeConstructor(c$, +function(monomers, pt0){ +Clazz.superConstructor(this, JM.AlphaPolymer, [monomers, true]); +this.pt0 = pt0; +}, "~A,~N"); +Clazz.overrideMethod(c$, "getProteinStructure", +function(monomerIndex){ +return this.monomers[monomerIndex].getStructure(); +}, "~N"); +Clazz.overrideMethod(c$, "getControlPoint", +function(i, v){ +if (!this.monomers[i].isSheet()) return this.leadPoints[i]; +v.sub2(this.leadMidpoints[i], this.leadPoints[i]); +v.scale(this.sheetSmoothing); +var pt = JU.P3.newP(this.leadPoints[i]); +pt.add(v); +return pt; +}, "~N,JU.V3"); +Clazz.defineMethod(c$, "addStructure", +function(type, structureID, serialID, strandCount, startChainID, startSeqcode, endChainID, endSeqcode, istart, iend, bsAssigned){ +var i0 = -1; +var i1 = -1; +if (istart < iend) { +if (this.monomers[0].firstAtomIndex > iend || this.monomers[this.monomerCount - 1].lastAtomIndex < istart) return; +i0 = istart; +i1 = iend; +}var indexStart; +var indexEnd; +if ((indexStart = this.getIndex(startChainID, startSeqcode, i0, i1)) == -1 || (indexEnd = this.getIndex(endChainID, endSeqcode, i0, i1)) == -1) return; +if (istart >= 0 && bsAssigned != null) { +var pt = bsAssigned.nextSetBit(this.monomers[indexStart].firstAtomIndex); +if (pt >= 0 && pt < this.monomers[indexEnd].lastAtomIndex) return; +}if (this.addStructureProtected(type, structureID, serialID, strandCount, indexStart, indexEnd) && istart >= 0) bsAssigned.setBits(istart, iend + 1); +}, "J.c.STR,~S,~S,~N,~N,~N,~N,~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "addStructureProtected", +function(type, structureID, serialID, strandCount, indexStart, indexEnd){ +if (indexEnd < indexStart) { +JU.Logger.error("AlphaPolymer:addSecondaryStructure error: indexStart:" + indexStart + " indexEnd:" + indexEnd); +return false; +}var structureCount = indexEnd - indexStart + 1; +var ps = null; +switch (type) { +case J.c.STR.HELIX: +case J.c.STR.HELIXALPHA: +case J.c.STR.HELIX310: +case J.c.STR.HELIXPI: +ps = new JM.Helix(this, indexStart, structureCount, type); +break; +case J.c.STR.SHEET: +ps = new JM.Sheet(this, indexStart, structureCount, type); +break; +case J.c.STR.TURN: +ps = new JM.Turn(this, indexStart, structureCount); +break; +default: +JU.Logger.error("unrecognized secondary structure type"); +return false; +} +ps.structureID = structureID; +ps.serialID = serialID; +ps.strandCount = strandCount; +for (var i = indexStart; i <= indexEnd; ++i) (this.monomers[i]).setStructure(ps); + +return true; +}, "J.c.STR,~S,~S,~N,~N,~N"); +Clazz.overrideMethod(c$, "clearStructures", +function(){ +for (var i = 0; i < this.monomerCount; i++) (this.monomers[i]).setStructure(null); + +}); +Clazz.defineMethod(c$, "calculateStructures", +function(alphaOnly){ +if (this.monomerCount < 4) return; +var angles = this.calculateAnglesInDegrees(); +var codes = this.calculateCodes(angles); +this.checkBetaSheetAlphaHelixOverlap(codes, angles); +var tags = this.calculateRunsFourOrMore(codes); +this.extendRuns(tags); +this.searchForTurns(codes, angles, tags); +this.addStructuresFromTags(tags); +}, "~B"); +Clazz.defineMethod(c$, "calculateAnglesInDegrees", +function(){ +var angles = Clazz.newFloatArray (this.monomerCount, 0); +for (var i = this.monomerCount - 1; --i >= 2; ) angles[i] = JU.Measure.computeTorsion(this.monomers[i - 2].getLeadAtom(), this.monomers[i - 1].getLeadAtom(), this.monomers[i].getLeadAtom(), this.monomers[i + 1].getLeadAtom(), true); + +return angles; +}); +Clazz.defineMethod(c$, "calculateCodes", +function(angles){ +var codes = new Array(this.monomerCount); +for (var i = this.monomerCount - 1; --i >= 2; ) { +var degrees = angles[i]; +codes[i] = ((degrees >= 10 && degrees < 120) ? JM.AlphaPolymer.Code.RIGHT_HELIX : ((degrees >= 120 || degrees < -90) ? JM.AlphaPolymer.Code.BETA_SHEET : ((degrees >= -90 && degrees < 0) ? JM.AlphaPolymer.Code.LEFT_HELIX : JM.AlphaPolymer.Code.NADA))); +} +return codes; +}, "~A"); +Clazz.defineMethod(c$, "checkBetaSheetAlphaHelixOverlap", +function(codes, angles){ +for (var i = this.monomerCount - 2; --i >= 2; ) if (codes[i] === JM.AlphaPolymer.Code.BETA_SHEET && angles[i] <= 140 && codes[i - 2] === JM.AlphaPolymer.Code.RIGHT_HELIX && codes[i - 1] === JM.AlphaPolymer.Code.RIGHT_HELIX && codes[i + 1] === JM.AlphaPolymer.Code.RIGHT_HELIX && codes[i + 2] === JM.AlphaPolymer.Code.RIGHT_HELIX) codes[i] = JM.AlphaPolymer.Code.RIGHT_HELIX; + +}, "~A,~A"); +Clazz.defineMethod(c$, "calculateRunsFourOrMore", +function(codes){ +var tags = new Array(this.monomerCount); +var tag = J.c.STR.NONE; +var code = JM.AlphaPolymer.Code.NADA; +var runLength = 0; +for (var i = 0; i < this.monomerCount; ++i) { +if (codes[i] === code && code !== JM.AlphaPolymer.Code.NADA) { +++runLength; +if (runLength == 4) { +tag = (code === JM.AlphaPolymer.Code.BETA_SHEET ? J.c.STR.SHEET : J.c.STR.HELIX); +for (var j = 4; --j >= 0; ) tags[i - j] = tag; + +} else if (runLength > 4) tags[i] = tag; +} else { +runLength = 1; +code = codes[i]; +}} +return tags; +}, "~A"); +Clazz.defineMethod(c$, "extendRuns", +function(tags){ +for (var i = 1; i < this.monomerCount - 4; ++i) if (tags[i] === J.c.STR.NONE && tags[i + 1] !== J.c.STR.NONE) tags[i] = tags[i + 1]; + +tags[0] = tags[1]; +tags[this.monomerCount - 1] = tags[this.monomerCount - 2]; +}, "~A"); +Clazz.defineMethod(c$, "searchForTurns", +function(codes, angles, tags){ +for (var i = this.monomerCount - 1; --i >= 2; ) { +codes[i] = JM.AlphaPolymer.Code.NADA; +if (tags[i] == null || tags[i] === J.c.STR.NONE) { +var angle = angles[i]; +if (angle >= -90 && angle < 0) codes[i] = JM.AlphaPolymer.Code.LEFT_TURN; + else if (angle >= 0 && angle < 90) codes[i] = JM.AlphaPolymer.Code.RIGHT_TURN; +}} +for (var i = this.monomerCount - 1; --i >= 0; ) { +if (codes[i] !== JM.AlphaPolymer.Code.NADA && codes[i + 1] === codes[i] && tags[i] === J.c.STR.NONE) tags[i] = J.c.STR.TURN; +} +}, "~A,~A,~A"); +Clazz.defineMethod(c$, "addStructuresFromTags", +function(tags){ +var i = 0; +while (i < this.monomerCount) { +var tag = tags[i]; +if (tag == null || tag === J.c.STR.NONE) { +++i; +continue; +}var iMax; +for (iMax = i + 1; iMax < this.monomerCount && tags[iMax] === tag; ++iMax) { +} +this.addStructureProtected(tag, null, null, 0, i, iMax - 1); +i = iMax; +} +}, "~A"); +Clazz.defineMethod(c$, "setStructureBS", +function(count, dsspType, type, bs, doOffset){ +var offset = (doOffset ? this.pt0 : 0); +for (var pt = 0, i = bs.nextSetBit(offset), i2 = 0, n = this.monomerCount + offset; i >= 0 && i < n; i = bs.nextSetBit(i2 + 1)) { +if ((i2 = bs.nextClearBit(i)) < 0 || i2 > n) i2 = n; +this.addStructureProtected(type, JM.AlphaPolymer.dsspTypes[dsspType] + (++pt), "" + count++, (dsspType == 3 ? 1 : 0), i - offset, i2 - 1 - offset); +} +return count; +}, "~N,~N,J.c.STR,JU.BS,~B"); +/*if2*/;(function(){ +var c$ = Clazz.declareType(JM.AlphaPolymer, "Code", Enum); +Clazz.defineEnumConstant(c$, "NADA", 0, []); +Clazz.defineEnumConstant(c$, "RIGHT_HELIX", 1, []); +Clazz.defineEnumConstant(c$, "BETA_SHEET", 2, []); +Clazz.defineEnumConstant(c$, "LEFT_HELIX", 3, []); +Clazz.defineEnumConstant(c$, "LEFT_TURN", 4, []); +Clazz.defineEnumConstant(c$, "RIGHT_TURN", 5, []); +/*eoif2*/})(); +c$.dsspTypes = Clazz.newArray(-1, ["H", null, "H", "S", "H", null, "T"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/AminoMonomer.js b/config/plugins/visualizations/jmol/static/j2s/JM/AminoMonomer.js new file mode 100755 index 000000000000..ea9b01fde093 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/AminoMonomer.js @@ -0,0 +1,224 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.AlphaMonomer"], "JM.AminoMonomer", ["JU.A4", "$.BS", "$.M3", "$.P3", "$.PT", "$.Quat", "$.V3", "J.c.STR", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nhChecked = false; +this.ptTemp = null; +Clazz.instantialize(this, arguments);}, JM, "AminoMonomer", JM.AlphaMonomer); +Clazz.overrideConstructor(c$, +function(){ +}); +c$.validateAndAllocate = Clazz.defineMethod(c$, "validateAndAllocate", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes, atoms){ +var offsets = JM.Monomer.scanForOffsets(firstAtomIndex, specialAtomIndexes, JM.AminoMonomer.interestingAminoAtomIDs); +if (offsets == null) return null; +JM.Monomer.checkOptional(offsets, 1, firstAtomIndex, specialAtomIndexes[5]); +if (atoms[firstAtomIndex].isHetero() && !JM.AminoMonomer.isBondedCorrectly(firstAtomIndex, offsets, atoms)) return null; +return new JM.AminoMonomer().set2(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, offsets); +}, "JM.Chain,~S,~N,~N,~N,~A,~A"); +c$.isBondedCorrectlyRange = Clazz.defineMethod(c$, "isBondedCorrectlyRange", +function(offset1, offset2, firstAtomIndex, offsets, atoms){ +var atomIndex1 = firstAtomIndex + (offsets[offset1] & 0xFF); +var atomIndex2 = firstAtomIndex + (offsets[offset2] & 0xFF); +return (atomIndex1 != atomIndex2 && atoms[atomIndex1].isBonded(atoms[atomIndex2])); +}, "~N,~N,~N,~A,~A"); +c$.isBondedCorrectly = Clazz.defineMethod(c$, "isBondedCorrectly", +function(firstAtomIndex, offsets, atoms){ +return (JM.AminoMonomer.isBondedCorrectlyRange(2, 0, firstAtomIndex, offsets, atoms) && JM.AminoMonomer.isBondedCorrectlyRange(0, 3, firstAtomIndex, offsets, atoms) && (!JM.Monomer.have(offsets, 1) || JM.AminoMonomer.isBondedCorrectlyRange(3, 1, firstAtomIndex, offsets, atoms))); +}, "~N,~A,~A"); +Clazz.overrideMethod(c$, "getNitrogenAtom", +function(){ +return this.getAtomFromOffsetIndex(2); +}); +Clazz.defineMethod(c$, "getCarbonylCarbonAtom", +function(){ +return this.getAtomFromOffsetIndex(3); +}); +Clazz.overrideMethod(c$, "getCarbonylOxygenAtom", +function(){ +return this.getWingAtom(); +}); +Clazz.overrideMethod(c$, "getInitiatorAtom", +function(){ +return this.getNitrogenAtom(); +}); +Clazz.overrideMethod(c$, "getTerminatorAtom", +function(){ +return this.getAtomFromOffsetIndex(JM.Monomer.have(this.offsets, 4) ? 4 : 3); +}); +Clazz.defineMethod(c$, "hasOAtom", +function(){ +return JM.Monomer.have(this.offsets, 1); +}); +Clazz.overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +var other = possiblyPreviousMonomer; +return other.getCarbonylCarbonAtom().isBonded(this.getNitrogenAtom()); +}, "JM.Monomer"); +Clazz.overrideMethod(c$, "findNearestAtomIndex", +function(x, y, closest, madBegin, madEnd){ +var competitor = closest[0]; +var nitrogen = this.getNitrogenAtom(); +var marBegin = (Clazz.doubleToInt(madBegin / 2)); +if (marBegin < 1200) marBegin = 1200; +if (nitrogen.sZ == 0) return; +var radiusBegin = Clazz.floatToInt(this.scaleToScreen(nitrogen.sZ, marBegin)); +if (radiusBegin < 4) radiusBegin = 4; +var ccarbon = this.getCarbonylCarbonAtom(); +var marEnd = (Clazz.doubleToInt(madEnd / 2)); +if (marEnd < 1200) marEnd = 1200; +var radiusEnd = Clazz.floatToInt(this.scaleToScreen(nitrogen.sZ, marEnd)); +if (radiusEnd < 4) radiusEnd = 4; +var alpha = this.getLeadAtom(); +if (this.isCursorOnTopOf(alpha, x, y, Clazz.doubleToInt((radiusBegin + radiusEnd) / 2), competitor) || this.isCursorOnTopOf(nitrogen, x, y, radiusBegin, competitor) || this.isCursorOnTopOf(ccarbon, x, y, radiusEnd, competitor)) closest[0] = alpha; +}, "~N,~N,~A,~N,~N"); +Clazz.defineMethod(c$, "resetHydrogenPoint", +function(){ +this.nhChecked = false; +this.nitrogenHydrogenPoint = null; +}); +Clazz.defineMethod(c$, "getNitrogenHydrogenPoint", +function(){ +if (this.nitrogenHydrogenPoint == null && !this.nhChecked) { +this.nhChecked = true; +this.nitrogenHydrogenPoint = this.getExplicitNH(); +}return this.nitrogenHydrogenPoint; +}); +Clazz.defineMethod(c$, "getExplicitNH", +function(){ +var nitrogen = this.getNitrogenAtom(); +var h = null; +var bonds = nitrogen.bonds; +if (bonds != null) for (var i = 0; i < bonds.length; i++) if ((h = bonds[i].getOtherAtom(nitrogen)).getElementNumber() == 1) return h; + +return null; +}); +Clazz.defineMethod(c$, "getNHPoint", +function(aminoHydrogenPoint, vNH, jmolHPoint, dsspIgnoreHydrogens){ +if (this.monomerIndex <= 0 || this.groupID == 15) return false; +var nitrogenPoint = this.getNitrogenAtom(); +var nhPoint = this.getNitrogenHydrogenPoint(); +if (nhPoint != null && !dsspIgnoreHydrogens) { +vNH.sub2(nhPoint, nitrogenPoint); +aminoHydrogenPoint.setT(nhPoint); +return true; +}var prev = this.bioPolymer.monomers[this.monomerIndex - 1]; +if (jmolHPoint) { +vNH.sub2(nitrogenPoint, this.getLeadAtom()); +vNH.normalize(); +var v = JU.V3.newVsub(nitrogenPoint, prev.getCarbonylCarbonAtom()); +v.normalize(); +vNH.add(v); +} else { +var oxygen = prev.getCarbonylOxygenAtom(); +if (oxygen == null) return false; +vNH.sub2(prev.getCarbonylCarbonAtom(), oxygen); +}vNH.normalize(); +aminoHydrogenPoint.add2(nitrogenPoint, vNH); +this.nitrogenHydrogenPoint = JU.P3.newP(aminoHydrogenPoint); +if (JU.Logger.debugging) JU.Logger.debug("draw ID \"pta" + this.monomerIndex + "_" + nitrogenPoint.i + "\" " + JU.Escape.eP(nitrogenPoint) + JU.Escape.eP(aminoHydrogenPoint) + " # " + nitrogenPoint); +return true; +}, "JU.P3,JU.V3,~B,~B"); +Clazz.overrideMethod(c$, "getQuaternionFrameCenter", +function(qType){ +if (this.monomerIndex < 0) return null; +switch ((qType).charCodeAt(0)) { +default: +case 97: +case 98: +case 99: +case 67: +return this.getQuaternionFrameCenterAlpha(qType); +case 110: +return this.getNitrogenAtom(); +case 112: +case 80: +return this.getCarbonylCarbonAtom(); +case 113: +if (this.monomerIndex == this.bioPolymer.monomerCount - 1) return null; +var mNext = (this.bioPolymer.monomers[this.monomerIndex + 1]); +var pt = new JU.P3(); +pt.ave(this.getCarbonylCarbonAtom(), mNext.getNitrogenAtom()); +return pt; +} +}, "~S"); +Clazz.overrideMethod(c$, "getQuaternion", +function(qType){ +if (this.monomerIndex < 0) return null; +var ptC = this.getCarbonylCarbonAtom(); +var ptCa = this.getLeadAtom(); +var vA = new JU.V3(); +var vB = new JU.V3(); +var vC = null; +switch ((qType).charCodeAt(0)) { +case 97: +case 110: +if (this.monomerIndex == 0 || this.groupID == 15) return null; +vC = new JU.V3(); +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +this.getNHPoint(this.ptTemp, vC, true, false); +vB.sub2(ptCa, this.getNitrogenAtom()); +vB.cross(vC, vB); + new JU.M3().setAA(JU.A4.newVA(vB, -0.29670596)).rotate(vC); +vA.cross(vB, vC); +break; +case 98: +return this.getQuaternionAlpha('b'); +case 99: +vA.sub2(ptC, ptCa); +vB.sub2(this.getNitrogenAtom(), ptCa); +break; +case 112: +case 120: +if (this.monomerIndex == this.bioPolymer.monomerCount - 1) return null; +vA.sub2(ptCa, ptC); +vB.sub2((this.bioPolymer.monomers[this.monomerIndex + 1]).getNitrogenAtom(), ptC); +break; +case 113: +if (this.monomerIndex == this.bioPolymer.monomerCount - 1) return null; +var mNext = (this.bioPolymer.monomers[this.monomerIndex + 1]); +vB.sub2(mNext.getLeadAtom(), mNext.getNitrogenAtom()); +vA.sub2(ptCa, ptC); +break; +default: +return null; +} +return JU.Quat.getQuaternionFrameV(vA, vB, vC, false); +}, "~S"); +Clazz.overrideMethod(c$, "getStructureId", +function(){ +if (this.proteinStructure == null || this.proteinStructure.structureID == null) return ""; +return this.proteinStructure.structureID; +}); +Clazz.overrideMethod(c$, "getProteinStructureTag", +function(){ +if (this.proteinStructure == null || this.proteinStructure.structureID == null) return null; +var tag = "%3N %3ID"; +tag = JU.PT.formatStringS(tag, "N", this.proteinStructure.serialID); +tag = JU.PT.formatStringS(tag, "ID", this.proteinStructure.structureID); +if (this.proteinStructure.type === J.c.STR.SHEET) tag += JU.PT.formatStringI("%2SC", "SC", this.proteinStructure.strandCount); +return tag; +}); +Clazz.overrideMethod(c$, "getBSSideChain", +function(){ +var bs = new JU.BS(); +this.setAtomBits(bs); +this.clear(bs, this.getLeadAtom(), true); +this.clear(bs, this.getCarbonylCarbonAtom(), false); +this.clear(bs, this.getCarbonylOxygenAtom(), false); +this.clear(bs, this.getNitrogenAtom(), true); +return bs; +}); +Clazz.defineMethod(c$, "clear", +function(bs, a, andH){ +if (a == null) return; +bs.clear(a.i); +if (!andH) return; +var b = a.bonds; +var h; +for (var j = b.length; --j >= 0; ) if ((h = b[j].getOtherAtom(a)).getElementNumber() == 1) bs.clear(h.i); + +}, "JU.BS,JM.Atom,~B"); +c$.interestingAminoAtomIDs = Clazz.newByteArray(-1, [2, -5, 1, 3, -65]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/AminoPolymer.js b/config/plugins/visualizations/jmol/static/j2s/JM/AminoPolymer.js new file mode 100755 index 000000000000..52c6ae01e021 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/AminoPolymer.js @@ -0,0 +1,245 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.AlphaPolymer"], "JM.AminoPolymer", ["JU.Measure", "$.P3", "$.V3", "J.c.STR", "JM.HBond", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.structureList = null; +Clazz.instantialize(this, arguments);}, JM, "AminoPolymer", JM.AlphaPolymer); +Clazz.makeConstructor(c$, +function(monomers, pt0){ +Clazz.superConstructor(this, JM.AminoPolymer, [monomers, pt0]); +this.type = 1; +for (var i = 0; i < this.monomerCount; ++i) if (!(monomers[i]).hasOAtom()) return; + +this.hasWingPoints = true; +}, "~A,~N"); +Clazz.overrideMethod(c$, "resetHydrogenPoints", +function(){ +var ps; +var psLast = null; +for (var i = 0; i < this.monomerCount; i++) { +if ((ps = this.getProteinStructure(i)) != null && ps !== psLast) (psLast = ps).resetAxes(); +(this.monomers[i]).resetHydrogenPoint(); +} +}); +Clazz.overrideMethod(c$, "calcPhiPsiAngles", +function(){ +for (var i = 0; i < this.monomerCount - 1; ++i) this.calcPhiPsiAngles2(this.monomers[i], this.monomers[i + 1]); + +return true; +}); +Clazz.defineMethod(c$, "calcPhiPsiAngles2", +function(residue1, residue2){ +var nitrogen1 = residue1.getNitrogenAtom(); +var alphacarbon1 = residue1.getLeadAtom(); +var carbon1 = residue1.getCarbonylCarbonAtom(); +var nitrogen2 = residue2.getNitrogenAtom(); +var alphacarbon2 = residue2.getLeadAtom(); +var carbon2 = residue2.getCarbonylCarbonAtom(); +residue2.setGroupParameter(1111490569, JU.Measure.computeTorsion(carbon1, nitrogen2, alphacarbon2, carbon2, true)); +residue1.setGroupParameter(1111490570, JU.Measure.computeTorsion(nitrogen1, alphacarbon1, carbon1, nitrogen2, true)); +residue1.setGroupParameter(1111490568, JU.Measure.computeTorsion(alphacarbon1, carbon1, nitrogen2, alphacarbon2, true)); +}, "JM.AminoMonomer,JM.AminoMonomer"); +Clazz.overrideMethod(c$, "calculateRamachandranHelixAngle", +function(m, qtype){ +var psiLast = (m == 0 ? NaN : this.monomers[m - 1].getGroupParameter(1111490570)); +var psi = this.monomers[m].getGroupParameter(1111490570); +var phi = this.monomers[m].getGroupParameter(1111490569); +var phiNext = (m == this.monomerCount - 1 ? NaN : this.monomers[m + 1].getGroupParameter(1111490569)); +var psiNext = (m == this.monomerCount - 1 ? NaN : this.monomers[m + 1].getGroupParameter(1111490570)); +switch ((qtype).charCodeAt(0)) { +default: +case 112: +case 114: +case 80: +var dPhi = ((phiNext - phi) / 2 * 3.141592653589793 / 180); +var dPsi = ((psiNext - psi) / 2 * 3.141592653589793 / 180); +return (57.29577951308232 * 2 * Math.acos(Math.cos(dPsi) * Math.cos(dPhi) - Math.sin(dPsi) * Math.sin(dPhi) / 3)); +case 99: +case 67: +return (psi - psiLast + phiNext - phi); +} +}, "~N,~S"); +Clazz.overrideMethod(c$, "calcRasmolHydrogenBonds", +function(polymer, bsA, bsB, vHBonds, nMaxPerResidue, min, checkDistances, dsspIgnoreHydrogens){ +if (polymer == null) polymer = this; +if (!(Clazz.instanceOf(polymer,"JM.AminoPolymer"))) return; +var pt = new JU.P3(); +var vNH = new JU.V3(); +var source; +var min1 = (min == null ? Clazz.newIntArray (2, 3, 0) : null); +for (var i = 1; i < this.monomerCount; ++i) { +if (min == null) { +min1[0][0] = min1[1][0] = this.bioPolymerIndexInModel; +min1[0][1] = min1[1][1] = -2147483648; +min1[0][2] = min1[1][2] = 0; +} else { +min1 = min[i]; +}if ((source = (this.monomers[i])).getNHPoint(pt, vNH, checkDistances, dsspIgnoreHydrogens)) { +var isInA = (bsA == null || bsA.get(source.getNitrogenAtom().i)); +if (!isInA) continue; +if (!checkDistances && source.getCarbonylOxygenAtom() == null) continue; +this.checkRasmolHydrogenBond(source, polymer, i, pt, (isInA ? bsB : bsA), vHBonds, min1, checkDistances); +}} +}, "JM.BioPolymer,JU.BS,JU.BS,JU.Lst,~N,~A,~B,~B"); +Clazz.defineMethod(c$, "checkRasmolHydrogenBond", +function(source, polymer, indexDonor, hydrogenPoint, bsB, vHBonds, min, checkDistances){ +var sourceAlphaPoint = source.getLeadAtom(); +var sourceNitrogenPoint = source.getNitrogenAtom(); +var nitrogen = source.getNitrogenAtom(); +var m; +for (var i = polymer.monomerCount; --i >= 0; ) { +if (polymer === this && (i == indexDonor || i + 1 == indexDonor)) continue; +var target = polymer.monomers[i]; +var oxygen = target.getCarbonylOxygenAtom(); +if (oxygen == null || bsB != null && !bsB.get(oxygen.i)) continue; +var targetAlphaPoint = target.getLeadAtom(); +var dist2 = sourceAlphaPoint.distanceSquared(targetAlphaPoint); +if (dist2 >= 81.0) continue; +var energy = this.calcHbondEnergy(sourceNitrogenPoint, hydrogenPoint, target, checkDistances); +if (energy < min[0][2]) { +m = min[1]; +min[1] = min[0]; +min[0] = m; +} else if (energy < min[1][2]) { +m = min[1]; +} else { +continue; +}m[0] = polymer.bioPolymerIndexInModel; +m[1] = (energy < -500 ? i : -1 - i); +m[2] = energy; +} +if (vHBonds != null) for (var i = 0; i < 2; i++) if (min[i][1] >= 0) this.addResidueHydrogenBond(nitrogen, ((polymer).monomers[min[i][1]]).getCarbonylOxygenAtom(), (polymer === this ? indexDonor : -99), min[i][1], min[i][2] / 1000, vHBonds); + +}, "JM.AminoMonomer,JM.BioPolymer,~N,JU.P3,JU.BS,JU.Lst,~A,~B"); +Clazz.defineMethod(c$, "calcHbondEnergy", +function(nitrogenPoint, hydrogenPoint, target, checkDistances){ +var targetOxygenPoint = target.getCarbonylOxygenAtom(); +if (targetOxygenPoint == null) return 0; +var distON2 = targetOxygenPoint.distanceSquared(nitrogenPoint); +if (distON2 < 0.25) return 0; +var distOH2 = targetOxygenPoint.distanceSquared(hydrogenPoint); +if (distOH2 < 0.25) return 0; +var targetCarbonPoint = target.getCarbonylCarbonAtom(); +var distCH2 = targetCarbonPoint.distanceSquared(hydrogenPoint); +if (distCH2 < 0.25) return 0; +var distCN2 = targetCarbonPoint.distanceSquared(nitrogenPoint); +if (distCN2 < 0.25) return 0; +var distOH = Math.sqrt(distOH2); +var distCH = Math.sqrt(distCH2); +var distCN = Math.sqrt(distCN2); +var distON = Math.sqrt(distON2); +var energy = JM.HBond.calcEnergy(distOH, distCH, distCN, distON); +var isHbond = (energy < -500 && (!checkDistances || distCN > distCH && distOH <= 3.0)); +return (!isHbond && checkDistances || energy < -9900 ? 0 : energy); +}, "JU.P3,JU.P3,JM.AminoMonomer,~B"); +Clazz.defineMethod(c$, "addResidueHydrogenBond", +function(nitrogen, oxygen, indexAminoGroup, indexCarbonylGroup, energy, vHBonds){ +var order; +switch (indexAminoGroup - indexCarbonylGroup) { +case 2: +order = 6144; +break; +case 3: +order = 8192; +break; +case 4: +order = 10240; +break; +case 5: +order = 12288; +break; +case -3: +order = 14336; +break; +case -4: +order = 16384; +break; +default: +order = 4096; +} +vHBonds.addLast( new JM.HBond(nitrogen, oxygen, order, 1, 0, energy)); +}, "JM.Atom,JM.Atom,~N,~N,~N,JU.Lst"); +Clazz.overrideMethod(c$, "calculateStructures", +function(alphaOnly){ +if (alphaOnly) return; +if (this.structureList == null) this.structureList = this.model.ms.getStructureList(); +var structureTags = Clazz.newCharArray (this.monomerCount, '\0'); +for (var i = 0; i < this.monomerCount - 1; ++i) { +var leadingResidue = this.monomers[i]; +var trailingResidue = this.monomers[i + 1]; +var phi = trailingResidue.getGroupParameter(1111490569); +var psi = leadingResidue.getGroupParameter(1111490570); +if (this.isHelix(psi, phi)) { +structureTags[i] = (phi < 0 && psi < 25 ? '4' : '3'); +} else if (this.isSheet(psi, phi)) { +structureTags[i] = 's'; +} else if (this.isTurn(psi, phi)) { +structureTags[i] = 't'; +} else { +structureTags[i] = 'n'; +}if (JU.Logger.debugging) JU.Logger.debug((0 + this.monomers[0].chain.chainID) + " aminopolymer:" + i + " " + trailingResidue.getGroupParameter(1111490569) + "," + leadingResidue.getGroupParameter(1111490570) + " " + structureTags[i]); +} +for (var start = 0; start < this.monomerCount; ++start) { +if (structureTags[start] == '4') { +var end; +for (end = start + 1; end < this.monomerCount && structureTags[end] == '4'; ++end) { +} +end--; +if (end >= start + 3) { +this.addStructureProtected(J.c.STR.HELIX, null, null, 0, start, end); +}start = end; +}} +for (var start = 0; start < this.monomerCount; ++start) { +if (structureTags[start] == '3') { +var end; +for (end = start + 1; end < this.monomerCount && structureTags[end] == '3'; ++end) { +} +end--; +if (end >= start + 3) { +this.addStructureProtected(J.c.STR.HELIX, null, null, 0, start, end); +}start = end; +}} +for (var start = 0; start < this.monomerCount; ++start) { +if (structureTags[start] == 's') { +var end; +for (end = start + 1; end < this.monomerCount && structureTags[end] == 's'; ++end) { +} +end--; +if (end >= start + 2) { +this.addStructureProtected(J.c.STR.SHEET, null, null, 0, start, end); +}start = end; +}} +for (var start = 0; start < this.monomerCount; ++start) { +if (structureTags[start] == 't') { +var end; +for (end = start + 1; end < this.monomerCount && structureTags[end] == 't'; ++end) { +} +end--; +if (end >= start + 2) { +this.addStructureProtected(J.c.STR.TURN, null, null, 0, start, end); +}start = end; +}} +}, "~B"); +Clazz.defineMethod(c$, "isTurn", +function(psi, phi){ +return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.TURN), psi, phi); +}, "~N,~N"); +Clazz.defineMethod(c$, "isSheet", +function(psi, phi){ +return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.SHEET), psi, phi); +}, "~N,~N"); +Clazz.defineMethod(c$, "isHelix", +function(psi, phi){ +return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.HELIX), psi, phi); +}, "~N,~N"); +c$.checkPhiPsi = Clazz.defineMethod(c$, "checkPhiPsi", +function(list, psi, phi){ +for (var i = 0; i < list.length; i += 4) if (phi >= list[i] && phi <= list[i + 1] && psi >= list[i + 2] && psi <= list[i + 3]) return true; + +return false; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "setStructureList", +function(structureList){ +this.structureList = structureList; +}, "java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Annotation.js b/config/plugins/visualizations/jmol/static/j2s/JM/Annotation.js new file mode 100755 index 000000000000..4812020aba16 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Annotation.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.ProteinStructure"], "JM.Annotation", null, function(){ +var c$ = Clazz.declareType(JM, "Annotation", JM.ProteinStructure); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Atom.js b/config/plugins/visualizations/jmol/static/j2s/JM/Atom.js new file mode 100755 index 000000000000..17e85a0bdc32 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Atom.js @@ -0,0 +1,1152 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JU.Node", "$.Point3fi", "J.c.PAL"], "JM.Atom", ["JU.BS", "$.CU", "$.P3", "$.PT", "$.SB", "J.atomdata.RadiusData", "J.c.VDW", "JM.Group", "JU.C", "$.Elements", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.altloc = '\0'; +this.atomID = 0; +this.atomSite = 0; +this.group = null; +this.userDefinedVanDerWaalRadius = 0; +this.valence = 0; +this.atomNumberFlags = 0; +this.atomSymmetry = null; +this.formalChargeAndFlags = 0; +this.madAtom = 0; +this.colixAtom = 0; +this.paletteID = 0; +this.bonds = null; +this.nBondsDisplayed = 0; +this.nBackbonesDisplayed = 0; +this.clickabilityFlags = 0; +this.shapeVisibilityFlags = 0; +Clazz.instantialize(this, arguments);}, JM, "Atom", JU.Point3fi, JU.Node); +Clazz.prepareFields (c$, function(){ +this.paletteID = J.c.PAL.CPK.id; +}); +Clazz.overrideMethod(c$, "setAtom", +function(modelIndex, atomIndex, xyz, radius, atomSymmetry, atomSite, atomicAndIsotopeNumber, formalCharge, isHetero){ +this.mi = modelIndex; +this.atomSymmetry = atomSymmetry; +this.atomSite = atomSite; +this.i = atomIndex; +this.atomNumberFlags = atomicAndIsotopeNumber; +if (isHetero) this.formalChargeAndFlags = 2; +if (formalCharge != 0 && formalCharge != -2147483648) this.setFormalCharge(formalCharge); +this.userDefinedVanDerWaalRadius = radius; +if (xyz != null) this.setT(xyz); +return this; +}, "~N,~N,JU.P3,~N,JU.BS,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "setShapeVisibility", +function(flag, isVisible){ +if (isVisible) this.shapeVisibilityFlags |= flag; + else this.shapeVisibilityFlags &= ~flag; +}, "~N,~B"); +Clazz.defineMethod(c$, "isCovalentlyBonded", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].isCovalent() && this.bonds[i].getOtherAtom(this) === atomOther) return true; + +return false; +}, "JM.Atom"); +Clazz.defineMethod(c$, "isBonded", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].getOtherAtom(this) === atomOther) return true; + +return false; +}, "JM.Atom"); +Clazz.defineMethod(c$, "getBond", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].getOtherAtom(atomOther) != null) return this.bonds[i]; + +return null; +}, "JM.Atom"); +Clazz.defineMethod(c$, "addDisplayedBond", +function(stickVisibilityFlag, isVisible){ +this.nBondsDisplayed += (isVisible ? 1 : -1); +this.setShapeVisibility(stickVisibilityFlag, (this.nBondsDisplayed > 0)); +}, "~N,~B"); +Clazz.defineMethod(c$, "deleteBond", +function(bond){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i] === bond) { +this.deleteBondAt(i); +return; +} +}, "JM.Bond"); +Clazz.defineMethod(c$, "deleteBondAt", +function(i){ +this.setCIPChirality(0); +var newLength = this.bonds.length - 1; +if (newLength == 0) { +this.bonds = null; +return; +}var bondsNew = new Array(newLength); +var j = 0; +for (; j < i; ++j) bondsNew[j] = this.bonds[j]; + +for (; j < newLength; ++j) bondsNew[j] = this.bonds[j + 1]; + +this.bonds = bondsNew; +}, "~N"); +Clazz.overrideMethod(c$, "getBondedAtomIndex", +function(bondIndex){ +return this.bonds[bondIndex].getOtherAtom(this).i; +}, "~N"); +Clazz.defineMethod(c$, "setMadAtom", +function(vwr, rd){ +this.madAtom = this.calculateMad(vwr, rd); +}, "JV.Viewer,J.atomdata.RadiusData"); +Clazz.defineMethod(c$, "calculateMad", +function(vwr, rd){ +if (rd == null) return 0; +var f = rd.value; +if (f == 0) return 0; +switch (rd.factorType) { +case J.atomdata.RadiusData.EnumType.SCREEN: +return Clazz.floatToShort(f); +case J.atomdata.RadiusData.EnumType.FACTOR: +case J.atomdata.RadiusData.EnumType.OFFSET: +var r = 0; +switch (rd.vdwType) { +case J.c.VDW.TEMP: +var tmax = vwr.ms.getBfactor100Hi(); +r = (tmax > 0 ? this.getBfactor100() / tmax : 0); +break; +case J.c.VDW.HYDRO: +r = Math.abs(this.getHydrophobicity()); +break; +case J.c.VDW.BONDING: +r = this.getBondingRadius(); +break; +case J.c.VDW.ADPMIN: +case J.c.VDW.ADPMAX: +r = this.getADPMinMax(rd.vdwType === J.c.VDW.ADPMAX); +break; +default: +r = this.getVanderwaalsRadiusFloat(vwr, rd.vdwType); +} +if (rd.factorType === J.atomdata.RadiusData.EnumType.FACTOR) f *= r; + else f += r; +break; +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +if (f == 16.1) return JM.Atom.MAD_GLOBAL; +break; +} +var mad = Clazz.floatToShort(f < 0 ? f : f * 2000); +if (mad < 0 && f > 0) mad = 0; +return mad; +}, "JV.Viewer,J.atomdata.RadiusData"); +Clazz.defineMethod(c$, "getADPMinMax", +function(isMax){ +var tensors = this.getTensors(); +if (tensors == null) return 0; +var t = tensors[0]; +if (t == null || t.iType != 1) return 0; +if (this.group.chain.model.ms.isModulated(this.i) && t.isUnmodulated) t = tensors[1]; +return t.getFactoredValue(isMax ? 2 : 1); +}, "~B"); +Clazz.defineMethod(c$, "getTensors", +function(){ +return this.group.chain.model.ms.getAtomTensorList(this.i); +}); +Clazz.defineMethod(c$, "getRasMolRadius", +function(){ +return Math.abs(Clazz.doubleToInt(this.madAtom / 8)); +}); +Clazz.overrideMethod(c$, "getEdges", +function(){ +return (this.bonds == null ? new Array(0) : this.bonds); +}); +Clazz.overrideMethod(c$, "getBondCount", +function(){ +return (this.bonds == null ? 0 : this.bonds.length); +}); +Clazz.defineMethod(c$, "setTranslucent", +function(isTranslucent, translucentLevel){ +this.colixAtom = JU.C.getColixTranslucent3(this.colixAtom, isTranslucent, translucentLevel); +}, "~B,~N"); +Clazz.overrideMethod(c$, "getElementNumber", +function(){ +return JU.Elements.getElementNumber(this.atomNumberFlags); +}); +Clazz.overrideMethod(c$, "getIsotopeNumber", +function(){ +return JU.Elements.getIsotopeNumber(this.atomNumberFlags); +}); +Clazz.overrideMethod(c$, "getAtomicAndIsotopeNumber", +function(){ +return this.atomNumberFlags; +}); +Clazz.defineMethod(c$, "setAtomicAndIsotopeNumber", +function(n){ +if (n < 0 || (n & 127) >= JU.Elements.elementNumberMax || n > 32767) n = 0; +this.atomNumberFlags = n; +}, "~N"); +Clazz.defineMethod(c$, "getElementSymbolIso", +function(withIsotope){ +return JU.Elements.elementSymbolFromNumber(withIsotope ? this.atomNumberFlags : this.atomNumberFlags & 127); +}, "~B"); +Clazz.defineMethod(c$, "getElementSymbol", +function(){ +return this.getElementSymbolIso(true); +}); +Clazz.defineMethod(c$, "isHetero", +function(){ +return (this.formalChargeAndFlags & 2) != 0; +}); +Clazz.defineMethod(c$, "hasVibration", +function(){ +return (this.formalChargeAndFlags & 1) != 0; +}); +Clazz.defineMethod(c$, "setFormalCharge", +function(charge){ +this.formalChargeAndFlags = (this.formalChargeAndFlags & 15) | ((charge == -2147483648 ? 0 : charge > 7 ? 7 : charge < -3 ? -3 : charge) << 24); +}, "~N"); +Clazz.defineMethod(c$, "setVibrationVector", +function(){ +this.formalChargeAndFlags |= 1; +}); +Clazz.overrideMethod(c$, "getFormalCharge", +function(){ +return this.formalChargeAndFlags >> 24; +}); +Clazz.defineMethod(c$, "getOccupancy100", +function(){ +var occupancies = this.group.chain.model.ms.occupancies; +return (occupancies == null ? 100 : Math.round(occupancies[this.i])); +}); +Clazz.defineMethod(c$, "isOccupied", +function(){ +var occupancies = this.group.chain.model.ms.occupancies; +return (occupancies == null || occupancies[this.i] >= 50); +}); +Clazz.defineMethod(c$, "getBfactor100", +function(){ +var bfactor100s = this.group.chain.model.ms.bfactor100s; +return (bfactor100s == null ? 0 : bfactor100s[this.i]); +}); +Clazz.defineMethod(c$, "getHydrophobicity", +function(){ +var values = this.group.chain.model.ms.hydrophobicities; +return (values == null ? JU.Elements.getHydrophobicity(this.group.groupID) : values[this.i]); +}); +Clazz.defineMethod(c$, "setRadius", +function(radius){ +return !Float.isNaN(this.userDefinedVanDerWaalRadius = (radius > 0 ? radius : NaN)); +}, "~N"); +Clazz.defineMethod(c$, "$delete", +function(bsBonds){ +this.valence = -1; +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) { +var bond = this.bonds[i]; +bond.getOtherAtom(this).deleteBond(bond); +bsBonds.set(bond.index); +} +this.bonds = null; +}, "JU.BS"); +Clazz.overrideMethod(c$, "isDeleted", +function(){ +return (this.valence < 0); +}); +Clazz.defineMethod(c$, "setValence", +function(nBonds){ +if (!this.isDeleted()) this.valence = (nBonds < 0 ? 0 : nBonds <= 0x7F ? nBonds : 0x7F); +}, "~N"); +Clazz.overrideMethod(c$, "getValence", +function(){ +return (this.isDeleted() ? -1 : this.valence > 0 ? this.valence : this.getValenceAromatic(true)); +}); +Clazz.defineMethod(c$, "getValenceAromatic", +function(checkAromatic){ +if (this.isDeleted()) return -1; +var n = this.valence; +if (n == 0 && this.bonds != null) { +var npartial = 0; +for (var i = this.bonds.length; --i >= 0; ) { +n += this.bonds[i].getValence(); +if (checkAromatic && this.bonds[i].is(515)) npartial++; +} +if (n > 0 && n < 3 && npartial != 0) n++; +}return n; +}, "~B"); +Clazz.overrideMethod(c$, "getCovalentBondCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalentNotPartial0() && !b.getOtherAtom(this).isDeleted()) ++n; +} +return n; +}); +Clazz.defineMethod(c$, "getCovalentOrPartialBondCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalent() && !b.getOtherAtom(this).isDeleted()) ++n; +} +return n; +}); +Clazz.overrideMethod(c$, "getCovalentHydrogenCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalentNotPartial0()) { +var a = this.bonds[i].getOtherAtom(this); +if (a.valence >= 0 && a.getElementNumber() == 1) ++n; +}} +return n; +}); +Clazz.overrideMethod(c$, "getImplicitHydrogenCount", +function(){ +return this.group.chain.model.ms.getMissingHydrogenCount(this, false); +}); +Clazz.overrideMethod(c$, "getTotalHydrogenCount", +function(){ +return this.getCovalentHydrogenCount() + this.getImplicitHydrogenCount(); +}); +Clazz.overrideMethod(c$, "getTotalValence", +function(){ +var v = this.getValence(); +if (v < 0) return v; +var h = this.getImplicitHydrogenCount(); +var sp2 = this.group.chain.model.ms.aaRet[4]; +return v + h + sp2; +}); +Clazz.overrideMethod(c$, "getCovalentBondCountPlusMissingH", +function(){ +return this.getCovalentBondCount() + this.getImplicitHydrogenCount(); +}); +Clazz.defineMethod(c$, "getTargetValence", +function(){ +switch (this.getElementNumber()) { +case 6: +case 14: +case 32: +return 4; +case 5: +case 7: +case 15: +return 3; +case 8: +case 16: +return 2; +case 1: +case 9: +case 17: +case 35: +case 53: +return 1; +} +return -1; +}); +Clazz.defineMethod(c$, "getDimensionValue", +function(dimension){ +return (dimension == 0 ? this.x : (dimension == 1 ? this.y : this.z)); +}, "~N"); +Clazz.defineMethod(c$, "getVanderwaalsRadiusFloat", +function(vwr, type){ +return (Float.isNaN(this.userDefinedVanDerWaalRadius) ? vwr.getVanderwaalsMarType(this.atomNumberFlags, this.getVdwType(type)) / 1000 : this.userDefinedVanDerWaalRadius); +}, "JV.Viewer,J.c.VDW"); +Clazz.defineMethod(c$, "getVdwType", +function(type){ +switch (type) { +case J.c.VDW.AUTO: +type = this.group.chain.model.ms.getDefaultVdwType(this.mi); +break; +case J.c.VDW.NOJMOL: +type = this.group.chain.model.ms.getDefaultVdwType(this.mi); +if (type === J.c.VDW.AUTO_JMOL) type = J.c.VDW.AUTO_BABEL; +break; +} +return type; +}, "J.c.VDW"); +Clazz.defineMethod(c$, "getBondingRadius", +function(){ +var rr = this.group.chain.model.ms.bondingRadii; +var r = (rr == null || this.i >= rr.length ? 0 : rr[this.i]); +return (r == 0 ? JU.Elements.getBondingRadius(this.atomNumberFlags, this.getFormalCharge()) : r); +}); +Clazz.defineMethod(c$, "getVolume", +function(vwr, vType){ +var r1 = (vType == null ? this.userDefinedVanDerWaalRadius : NaN); +if (Float.isNaN(r1)) r1 = vwr.getVanderwaalsMarType(this.getElementNumber(), this.getVdwType(vType)) / 1000; +var volume = 0; +if (this.bonds != null) for (var j = 0; j < this.bonds.length; j++) { +if (!this.bonds[j].isCovalent()) continue; +var atom2 = this.bonds[j].getOtherAtom(this); +var r2 = (vType == null ? atom2.userDefinedVanDerWaalRadius : NaN); +if (Float.isNaN(r2)) r2 = vwr.getVanderwaalsMarType(atom2.getElementNumber(), atom2.getVdwType(vType)) / 1000; +var d = this.distance(atom2); +if (d > r1 + r2) continue; +if (d + r1 <= r2) return 0; +var h = r1 - (r1 * r1 + d * d - r2 * r2) / (2.0 * d); +volume -= 1.0471975511965976 * h * h * (3 * r1 - h); +} +return (volume + 4.1887902047863905 * r1 * r1 * r1); +}, "JV.Viewer,J.c.VDW"); +Clazz.defineMethod(c$, "getCurrentBondCount", +function(){ +return this.bonds == null ? 0 : this.bonds.length; +}); +Clazz.defineMethod(c$, "getRadius", +function(){ +return Math.abs(this.madAtom / 2000); +}); +Clazz.overrideMethod(c$, "getIndex", +function(){ +return this.i; +}); +Clazz.overrideMethod(c$, "getAtomSite", +function(){ +return this.atomSite; +}); +Clazz.overrideMethod(c$, "getGroupBits", +function(bs){ +this.group.setAtomBits(bs); +}, "JU.BS"); +Clazz.overrideMethod(c$, "getAtomName", +function(){ +return (this.atomID > 0 ? JM.Group.specialAtomNames[this.atomID] : this.group.chain.model.ms.atomNames == null ? "" : this.group.chain.model.ms.atomNames[this.i]); +}); +Clazz.overrideMethod(c$, "getAtomType", +function(){ +var atomTypes = this.group.chain.model.ms.atomTypes; +var type = (atomTypes == null ? null : atomTypes[this.i]); +return (type == null ? this.getAtomName() : type); +}); +Clazz.overrideMethod(c$, "getAtomNumber", +function(){ +var atomSerials = this.group.chain.model.ms.atomSerials; +return (atomSerials == null ? this.i : atomSerials[this.i]); +}); +Clazz.defineMethod(c$, "getSeqID", +function(){ +var ids = this.group.chain.model.ms.atomSeqIDs; +return (ids == null ? 0 : ids[this.i]); +}); +Clazz.defineMethod(c$, "isVisible", +function(flags){ +return ((this.shapeVisibilityFlags & flags) == flags); +}, "~N"); +Clazz.defineMethod(c$, "getPartialCharge", +function(){ +var partialCharges = this.group.chain.model.ms.partialCharges; +return partialCharges == null ? 0 : partialCharges[this.i]; +}); +Clazz.defineMethod(c$, "getSymmetryTranslation", +function(symop, cellRange, nOps){ +var pt = symop; +for (var i = 0; i < cellRange.length; i++) if (this.atomSymmetry.get(pt += nOps)) return cellRange[i]; + +return 0; +}, "~N,~A,~N"); +Clazz.defineMethod(c$, "getCellTranslation", +function(cellNNN, cellRange, nOps){ +var pt = nOps; +for (var i = 0; i < cellRange.length; i++) for (var j = 0; j < nOps; j++, pt++) if (this.atomSymmetry.get(pt) && cellRange[i] == cellNNN) return cellRange[i]; + + +return 0; +}, "~N,~A,~N"); +Clazz.defineMethod(c$, "getSymmetryOperatorList", +function(isAll){ +var str = ""; +var f = this.group.chain.model.ms; +var nOps = f.getModelSymmetryCount(this.mi); +if (nOps == 0 || this.atomSymmetry == null) return ""; +var cellRange = f.getModelCellRange(this.mi); +var pt = nOps; +var n = (cellRange == null ? 1 : cellRange.length); +var bs = (isAll ? null : new JU.BS()); +for (var i = 0; i < n; i++) for (var j = 0; j < nOps; j++) if (this.atomSymmetry.get(pt++)) if (isAll) { +str += "," + (j + 1) + cellRange[i]; +} else { +bs.set(j + 1); +} + +if (!isAll) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) str += "," + i; + +return (str.length == 0 ? "" : str.substring(1)); +}, "~B"); +Clazz.overrideMethod(c$, "getModelIndex", +function(){ +return this.mi; +}); +Clazz.overrideMethod(c$, "getMoleculeNumber", +function(inModel){ +return (this.group.chain.model.ms.getMoleculeIndex(this.i, inModel) + 1); +}, "~B"); +Clazz.defineMethod(c$, "getFractionalCoord", +function(fixJavaFloat, ch, ignoreOffset, pt){ +pt = this.getFractionalCoordPt(fixJavaFloat, ignoreOffset, pt); +return (ch == 'X' ? pt.x : ch == 'Y' ? pt.y : pt.z); +}, "~B,~S,~B,JU.P3"); +Clazz.overrideMethod(c$, "getXYZ", +function(){ +return this; +}); +Clazz.defineMethod(c$, "getFractionalCoordPt", +function(fixJavaFloat, ignoreOffset, pt){ +var c = this.getUnitCell(); +if (pt == null) pt = JU.P3.newP(this); + else pt.setT(this); +if (c != null) { +c = c.getUnitCellMultiplied(); +c.toFractional(pt, ignoreOffset); +if (fixJavaFloat) JU.PT.fixPtFloats(pt, 100000.0); +}return pt; +}, "~B,~B,JU.P3"); +Clazz.defineMethod(c$, "getUnitCell", +function(){ +return this.group.chain.model.ms.getUnitCellForAtom(this.i); +}); +Clazz.defineMethod(c$, "getFractionalUnitCoord", +function(fixJavaFloat, ch, pt){ +pt = this.getFractionalUnitCoordPt(fixJavaFloat, false, pt); +return (ch == 'X' ? pt.x : ch == 'Y' ? pt.y : pt.z); +}, "~B,~S,JU.P3"); +Clazz.defineMethod(c$, "getFractionalUnitCoordPt", +function(fixJavaFloat, asCartesian, pt){ +var c = this.getUnitCell(); +if (pt == null) pt = JU.P3.newP(this); + else pt.setT(this); +if (c == null) return pt; +c = c.getUnitCellMultiplied(); +if (this.group.chain.model.isJmolDataFrame) { +c.toFractional(pt, false); +if (asCartesian) c.toCartesian(pt, false); +} else { +c.toUnitCell(pt, null); +if (!asCartesian) c.toFractional(pt, false); +}if (fixJavaFloat) JU.PT.fixPtFloats(pt, asCartesian ? 10000.0 : 100000.0); +return pt; +}, "~B,~B,JU.P3"); +Clazz.defineMethod(c$, "getFractionalUnitDistance", +function(pt, ptTemp1, ptTemp2){ +var c = this.getUnitCell(); +if (c == null) return this.distance(pt); +ptTemp1.setT(this); +ptTemp2.setT(pt); +if (this.group.chain.model.isJmolDataFrame) { +c.toFractional(ptTemp1, true); +c.toFractional(ptTemp2, true); +} else { +c.toUnitCell(ptTemp1, null); +c.toUnitCell(ptTemp2, null); +}return ptTemp1.distance(ptTemp2); +}, "JU.T3,JU.T3,JU.T3"); +Clazz.defineMethod(c$, "setFractionalCoord", +function(tok, fValue, asAbsolute){ +var c = this.getUnitCell(); +if (c != null) c.toFractional(this, asAbsolute); +switch (tok) { +case 1111492615: +case 1111492612: +this.x = fValue; +break; +case 1111492616: +case 1111492613: +this.y = fValue; +break; +case 1111492617: +case 1111492614: +this.z = fValue; +break; +} +if (c != null) c.toCartesian(this, asAbsolute); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "setFractionalCoordTo", +function(ptNew, asAbsolute){ +this.setFractionalCoordPt(this, ptNew, asAbsolute); +}, "JU.P3,~B"); +Clazz.defineMethod(c$, "setFractionalCoordPt", +function(pt, ptNew, asAbsolute){ +pt.setT(ptNew); +var c = this.getUnitCell(); +if (c != null) c.toCartesian(pt, asAbsolute && !this.group.chain.model.isJmolDataFrame); +}, "JU.P3,JU.P3,~B"); +Clazz.defineMethod(c$, "isCursorOnTopOf", +function(xCursor, yCursor, minRadius, competitor){ +var r = Clazz.doubleToInt(this.sD / 2); +if (r < minRadius) r = minRadius; +var r2 = r * r; +var dx = this.sX - xCursor; +var dx2 = dx * dx; +if (dx2 > r2) return false; +var dy = this.sY - yCursor; +var dy2 = dy * dy; +var dz2 = r2 - (dx2 + dy2); +if (dz2 < 0) return false; +if (competitor == null) return true; +var z = this.sZ; +var zCompetitor = competitor.sZ; +var rCompetitor = Clazz.doubleToInt(competitor.sD / 2); +if (z < zCompetitor - rCompetitor) return true; +var dxCompetitor = competitor.sX - xCursor; +var dx2Competitor = dxCompetitor * dxCompetitor; +var dyCompetitor = competitor.sY - yCursor; +var dy2Competitor = dyCompetitor * dyCompetitor; +var r2Competitor = rCompetitor * rCompetitor; +var dz2Competitor = r2Competitor - (dx2Competitor + dy2Competitor); +return (z - Math.sqrt(dz2) < zCompetitor - Math.sqrt(dz2Competitor)); +}, "~N,~N,~N,JM.Atom"); +Clazz.defineMethod(c$, "getInfo", +function(){ +return this.getIdentity(2); +}); +Clazz.defineMethod(c$, "getIdentityXYZ", +function(pt, mode){ +pt = (mode == 3 || this.group.chain.model.isJmolDataFrame ? this.getFractionalCoordPt(!this.group.chain.model.ms.vwr.g.legacyJavaFloat, false, pt) : this); +var s = (mode == 3 ? "" : this.getIdentity(mode) + " ") + JU.PT.formatF(pt.x, 0, 3, true, true) + " " + JU.PT.formatF(pt.y, 0, 3, true, true) + " " + JU.PT.formatF(pt.z, 0, 3, true, true); +return s; +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "getIdentity", +function(mode){ +var info = new JU.SB(); +var group3 = this.getGroup3(true); +if (group3 != null && group3.length > 0 && (!group3.equals("UNK") || this.group.chain.model.isBioModel)) { +info.append("["); +info.append(group3); +info.append("]"); +var seqcodeString = this.group.getSeqcodeString(); +if (seqcodeString != null) info.append(seqcodeString); +var chainID = this.group.chain.chainID; +if (chainID != 0 && chainID != 32) { +info.append(":"); +var s = this.getChainIDStr(); +if (chainID >= 256) s = JU.PT.esc(s); +info.append(s); +}if (mode != 2 && mode != 5) return info.toString(); +info.append("."); +}info.append(this.getAtomName()); +if (info.length() == 0) { +info.append(this.getElementSymbolIso(false)); +info.append(" "); +info.appendI(this.getAtomNumber()); +}if (mode == 2) { +if (this.altloc != '\0') { +info.append("%"); +info.appendC(this.altloc); +}if (this.group.chain.model.ms.mc > 1 && !this.group.chain.model.isJmolDataFrame) { +info.append("/"); +info.append(this.getModelNumberForLabel()); +}info.append(" #"); +info.appendI(this.getAtomNumber()); +}return info.toString(); +}, "~N"); +Clazz.overrideMethod(c$, "getGroup3", +function(allowNull){ +var group3 = this.group.getGroup3(); +return (allowNull || group3 != null && group3.length > 0 ? group3 : "UNK"); +}, "~B"); +Clazz.overrideMethod(c$, "getGroup1", +function(c0){ +var c = this.group.getGroup1(); +return (c != '\0' ? "" + c : c0 != '\0' ? "" + c0 : ""); +}, "~S"); +Clazz.overrideMethod(c$, "getBioSmilesType", +function(){ +return (this.group.isProtein() ? 'p' : this.group.isDna() ? 'd' : this.group.isRna() ? 'r' : this.group.isCarbohydrate() ? 'c' : ' '); +}); +Clazz.overrideMethod(c$, "isPurine", +function(){ +return this.group.isPurine(); +}); +Clazz.overrideMethod(c$, "isPyrimidine", +function(){ +return this.group.isPyrimidine(); +}); +Clazz.overrideMethod(c$, "getResno", +function(){ +return this.group.getResno(); +}); +Clazz.defineMethod(c$, "isClickable", +function(){ +return (this.checkVisible() && this.clickabilityFlags != 0 && ((this.shapeVisibilityFlags | this.group.shapeVisibilityFlags) & this.clickabilityFlags) != 0); +}); +Clazz.defineMethod(c$, "setClickable", +function(flag){ +if (flag == 0) { +this.clickabilityFlags = 0; +} else { +this.clickabilityFlags |= flag; +if (flag != 1040384) this.shapeVisibilityFlags |= flag; +}}, "~N"); +Clazz.defineMethod(c$, "checkVisible", +function(){ +if (this.isVisible(2)) return this.isVisible(4); +var isVis = this.isVisible(9); +if (isVis) { +var flags = this.shapeVisibilityFlags; +if (this.group.shapeVisibilityFlags != 0 && (this.group.shapeVisibilityFlags != 8192 || this.isLeadAtom())) flags |= this.group.shapeVisibilityFlags; +flags &= -10; +if (flags == 32 && this.clickabilityFlags == 0) flags = 0; +isVis = (flags != 0); +if (isVis) this.shapeVisibilityFlags |= 4; +}this.shapeVisibilityFlags |= 2; +return isVis; +}); +Clazz.overrideMethod(c$, "isLeadAtom", +function(){ +return this.group.isLeadAtom(this.i); +}); +Clazz.overrideMethod(c$, "getChainID", +function(){ +return this.group.chain.chainID; +}); +Clazz.overrideMethod(c$, "getChainIDStr", +function(){ +return this.group.chain.getIDStr(); +}); +Clazz.defineMethod(c$, "getSurfaceDistance100", +function(){ +return this.group.chain.model.ms.getSurfaceDistance100(this.i); +}); +Clazz.defineMethod(c$, "getVibrationVector", +function(){ +return this.group.chain.model.ms.getVibration(this.i, false); +}); +Clazz.defineMethod(c$, "getModulation", +function(){ +return this.group.chain.model.ms.getModulation(this.i); +}); +Clazz.defineMethod(c$, "getModelNumberForLabel", +function(){ +return this.group.chain.model.ms.getModelNumberForAtomLabel(this.mi); +}); +Clazz.defineMethod(c$, "getModelNumber", +function(){ +return this.group.chain.model.ms.getModelNumber(this.mi) % 1000000; +}); +Clazz.overrideMethod(c$, "getBioStructureTypeName", +function(){ +return this.group.getProteinStructureType().getBioStructureTypeName(true); +}); +Clazz.overrideMethod(c$, "equals", +function(obj){ +return (this === obj); +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return this.i; +}); +Clazz.defineMethod(c$, "findAromaticNeighbor", +function(notAtomIndex){ +if (this.bonds == null) return null; +for (var i = this.bonds.length; --i >= 0; ) { +var bondT = this.bonds[i]; +var a = bondT.getOtherAtom(this); +if (bondT.isAromatic() && a.i != notAtomIndex) return a; +} +return null; +}, "~N"); +Clazz.defineMethod(c$, "atomPropertyInt", +function(tokWhat){ +switch (tokWhat) { +case 1094715393: +return this.getAtomNumber(); +case 1094713365: +return this.getSeqID(); +case 1094713346: +return this.atomID; +case 1094713368: +return Math.max(0, this.altloc.charCodeAt(0) - 32); +case 1094713347: +return this.i; +case 1228931586: +return this.getCovalentBondCount(); +case 1094713351: +return this.group.chain.chainNo; +case 1765808134: +return this.group.chain.model.ms.vwr.gdata.getColorArgbOrGray(this.colixAtom); +case 1086326789: +case 1094715402: +return this.getElementNumber(); +case 1094713353: +return this.atomNumberFlags; +case 1228935687: +return this.group.chain.model.fileIndex + 1; +case 1631586315: +return this.getFormalCharge(); +case 1094713356: +return this.group.groupID; +case 1094713357: +return this.group.groupIndex; +case 1094717454: +return this.getModelNumber(); +case -1094717454: +return this.group.chain.model.ms.modelFileNumbers[this.mi]; +case 1094713359: +return this.mi; +case 1094713360: +return this.getMoleculeNumber(true); +case 1094713361: +return this.group.getMonomerIndex() + 1; +case 1128269825: +return this.getOccupancy100(); +case 1094713362: +return this.group.getBioPolymerIndexInModel() + 1; +case 1094713363: +return this.group.getBioPolymerLength(); +case 1665140738: +return this.getRasMolRadius(); +case 1094715412: +return this.getResno(); +case 1094713366: +return this.getAtomSite(); +case 1639976963: +return this.group.getProteinStructureType().getId(); +case 1237320707: +return this.group.getProteinStructureSubType().getId(); +case 1094713367: +return this.group.getStrucNo(); +case 1296041985: +return this.getSymOp(); +case 1094715418: +return this.getValence(); +} +return 0; +}, "~N"); +Clazz.defineMethod(c$, "getSymOp", +function(){ +return (this.atomSymmetry == null ? 0 : this.atomSymmetry.nextSetBit(0) + 1); +}); +Clazz.defineMethod(c$, "atomPropertyFloat", +function(vwr, tokWhat, ptTemp){ +switch (tokWhat) { +case 1111490561: +return this.getADPMinMax(true); +case 1111490562: +return this.getADPMinMax(false); +case 1111492609: +case 1111492629: +return this.x; +case 1111492610: +case 1111492630: +return this.y; +case 1111492611: +case 1111492631: +return this.z; +case 1111490587: +return this.group.chain.model.ms.getAtomicDSSRData(this.i); +case 1114249217: +case 1112152066: +case 1112150019: +case 1112150020: +case 1112150021: +case 1112152070: +case 1112152071: +case 1112152073: +case 1112152074: +case 1112152076: +case 1649022989: +case 1112152078: +return vwr.shm.getAtomShapeValue(tokWhat, this.group, this.i); +case 1111492618: +return this.getBondingRadius(); +case 1111490563: +return vwr.getNMRCalculation().getChemicalShift(this); +case 1111490564: +return JU.Elements.getCovalentRadius(this.atomNumberFlags); +case 1111490565: +case 1111490576: +case 1111490574: +return this.group.getGroupParameter(tokWhat); +case 1111492615: +case 1111492612: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'X', false, ptTemp); +case 1111492616: +case 1111492613: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Y', false, ptTemp); +case 1111492617: +case 1111492614: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Z', false, ptTemp); +case 1113589786: +return this.getHydrophobicity(); +case 1111490566: +return vwr.getNMRCalculation().getMagneticShielding(this); +case 1111490567: +return this.getMass(); +case 1128269825: +return this.getOccupancy100() / 100; +case 1111492619: +return this.getPartialCharge(); +case 1111490569: +case 1111490570: +case 1111490568: +if (this.group.chain.model.isJmolDataFrame && this.group.chain.model.jmolFrameType.startsWith("plot ramachandran")) { +switch (tokWhat) { +case 1111490569: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'X', false, ptTemp); +case 1111490570: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Y', false, ptTemp); +case 1111490568: +var omega = this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Z', false, ptTemp) - 180; +return (omega < -180 ? 360 + omega : omega); +} +}return this.group.getGroupParameter(tokWhat); +case 1665140738: +case 1112152075: +return this.getRadius(); +case 1111490571: +return (vwr.antialiased ? Clazz.doubleToInt(this.sX / 2) : this.sX); +case 1111490572: +return vwr.getScreenHeight() - (vwr.antialiased ? Clazz.doubleToInt(this.sY / 2) : this.sY); +case 1111490573: +return (vwr.antialiased ? Clazz.doubleToInt(this.sZ / 2) : this.sZ); +case 1113589787: +return (vwr.slm.isAtomSelected(this.i) ? 1 : 0); +case 1111490575: +vwr.ms.getSurfaceDistanceMax(); +return this.getSurfaceDistance100() / 100; +case 1111492620: +return this.getBfactor100() / 100; +case 1111490577: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'X', ptTemp); +case 1111490578: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'Y', ptTemp); +case 1111490579: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'Z', ptTemp); +case 1648363544: +return this.getVanderwaalsRadiusFloat(vwr, J.c.VDW.AUTO); +case 1648361473: +var v = this.getVibrationVector(); +return (v == null ? 0 : v.length() * vwr.getFloat(1648361473)); +case 1111492626: +return this.getVib('x'); +case 1111492627: +return this.getVib('y'); +case 1111492628: +return this.getVib('z'); +case 1111490583: +return this.getVib('X'); +case 1111490584: +return this.getVib('Y'); +case 1111490585: +return this.getVib('Z'); +case 1111490586: +return this.getVib('O'); +case 1111490580: +return this.getVib('1'); +case 1111490581: +return this.getVib('2'); +case 1111490582: +return this.getVib('3'); +case 1312817669: +return this.getVolume(vwr, J.c.VDW.AUTO); +case 1145047050: +case 1145047053: +case 1145045006: +case 1145047052: +case 1145047055: +case 1145045008: +case 1145047049: +var v3 = this.atomPropertyTuple(vwr, tokWhat, ptTemp); +return (v3 == null ? -1 : v3.length()); +} +return this.atomPropertyInt(tokWhat); +}, "JV.Viewer,~N,JU.P3"); +Clazz.defineMethod(c$, "getVib", +function(ch){ +return this.group.chain.model.ms.getVibCoord(this.i, ch); +}, "~S"); +Clazz.defineMethod(c$, "getNominalMass", +function(){ +var mass = this.getIsotopeNumber(); +return (mass > 0 ? mass : JU.Elements.getNaturalIsotope(this.getElementNumber())); +}); +Clazz.overrideMethod(c$, "getMass", +function(){ +var mass = this.getIsotopeNumber(); +return (mass > 0 ? mass : JU.Elements.getAtomicMass(this.getElementNumber())); +}); +Clazz.defineMethod(c$, "atomPropertyString", +function(vwr, tokWhat){ +var ch; +var s; +switch (tokWhat) { +case 1153433601: +return this.getIdentity(5); +case 1086324739: +ch = this.altloc; +return (ch == '\0' ? "" : "" + ch); +case 1086326786: +return this.getAtomName(); +case 1086326785: +return this.getAtomType(); +case 1086326788: +return this.getChainIDStr(); +case 1086324752: +return this.getCIPChirality(true); +case 1086324753: +return this.getCIPChiralityRule(); +case 1140850705: +case 1086324754: +return this.getWyckoffPosition(false); +case 1086324755: +return this.getWyckoffPosition(true); +case 1086324744: +return this.getGroup1('?'); +case 1086324747: +s = this.group.getSeqcodeString(); +return (s == null ? "" : s); +case 1086324743: +return this.getGroup1('\0'); +case 1086324742: +return this.getGroup3(false); +case 1086326789: +return this.getElementSymbolIso(true); +case 1086324745: +return this.getIdentity(2); +case 1086324746: +ch = this.group.getInsertionCode(); +return (ch == '\0' ? "" : "" + ch); +case 1825200146: +case 1287653388: +s = vwr.shm.getShapePropertyIndex(5, "label", this.i); +if (s == null) s = ""; +return s; +case 1145045003: +return vwr.getSymStatic().staticToRationalXYZ(this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, null), " "); +case 1639976963: +return this.group.getProteinStructureType().getBioStructureTypeName(false); +case 1237320707: +return this.group.getProteinStructureSubType().getBioStructureTypeName(false); +case 1086324749: +return this.group.getStructureId(); +case 1086324748: +return vwr.getHybridizationAndAxes(this.i, null, null, "d"); +case 1086326798: +return this.getElementSymbolIso(false); +case 1088421903: +return this.getSymmetryOperatorList(true); +} +return ""; +}, "JV.Viewer,~N"); +Clazz.defineMethod(c$, "getWyckoffPosition", +function(withMultiplicity){ +var ms = this.group.chain.model.ms; +var a = ms.getBasisAtom(this.i, true); +var id = a.getSeqID(); +if (id != 0) { +var m = id >> 16; +var c = String.fromCharCode(id & 0xFF); +return (withMultiplicity ? "" + (id >> 16) : "") + String.fromCharCode(id & 0xFF); +}var sym = this.getUnitCell(); +var s; +if (sym == null || (s = sym.getWyckoffPosition(ms.vwr, this, "M")) == null) { +s = "0?"; +}ms.setAtomSeqID(this.i, (JU.PT.parseInt(s) << 16) + (s.charAt(s.length - 1)).charCodeAt(0)); +return (withMultiplicity ? s : s.substring(s.length - 1)); +}, "~B"); +Clazz.overrideMethod(c$, "getCIPChirality", +function(doCalculate){ +var flags = (this.formalChargeAndFlags & 496) >> 4; +if (flags == 0 && this.atomNumberFlags > 1 && doCalculate) { +flags = this.group.chain.model.ms.getAtomCIPChiralityCode(this); +this.formalChargeAndFlags |= ((flags == 0 ? 3 : flags) << 4); +}return JV.JC.getCIPChiralityName(flags); +}, "~B"); +Clazz.defineMethod(c$, "getCIPChiralityRule", +function(){ +var rs = this.getCIPChirality(true); +var flags = (rs.length == 0 ? -1 : (this.formalChargeAndFlags & 3584) >> 9); +return JV.JC.getCIPRuleName(flags + 1); +}); +Clazz.overrideMethod(c$, "setCIPChirality", +function(c){ +this.formalChargeAndFlags = (this.formalChargeAndFlags & -4081) | (c << 4); +}, "~N"); +Clazz.overrideMethod(c$, "getCIPChiralityCode", +function(){ +return (this.formalChargeAndFlags & 496) >> 4; +}); +Clazz.overrideMethod(c$, "getInsertionCode", +function(){ +return this.group.getInsertionCode(); +}); +Clazz.defineMethod(c$, "atomPropertyTuple", +function(vwr, tok, ptTemp){ +switch (tok) { +case 1073742329: +return JU.P3.newP(this); +case 1145047050: +return this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp); +case 1145047053: +return this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp); +case 1145045006: +return (this.group.chain.model.isJmolDataFrame ? this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp) : this.getFractionalUnitCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp)); +case 1145047052: +return JU.P3.new3(vwr.antialiased ? Clazz.doubleToInt(this.sX / 2) : this.sX, vwr.getScreenHeight() - (vwr.antialiased ? Clazz.doubleToInt(this.sY / 2) : this.sY), vwr.antialiased ? Clazz.doubleToInt(this.sZ / 2) : this.sZ); +case 1145047055: +return this.getVibrationVector(); +case 1145045008: +var ms = this.getModulation(); +return (ms == null ? null : ms.getV3()); +case 1145047049: +return this; +case 1765808134: +return JU.CU.colorPtFromInt(this.group.chain.model.ms.vwr.gdata.getColorArgbOrGray(this.colixAtom), ptTemp); +} +return null; +}, "JV.Viewer,~N,JU.P3"); +Clazz.overrideMethod(c$, "getOffsetResidueAtom", +function(name, offset){ +return this.group.getAtomIndex(name, offset); +}, "~S,~N"); +Clazz.overrideMethod(c$, "isCrossLinked", +function(node){ +return this.group.isCrossLinked((node).group); +}, "JU.Node"); +Clazz.overrideMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +return this.group.getCrossLinkVector(vReturn, crosslinkCovalent, crosslinkHBond); +}, "JU.Lst,~B,~B"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.getInfo(); +}); +Clazz.overrideMethod(c$, "findAtomsLike", +function(atomExpression){ +return this.group.chain.model.ms.vwr.getAtomBitSet(atomExpression); +}, "~S"); +Clazz.defineMethod(c$, "getUnitID", +function(flags){ +var m = this.group.chain.model; +return (m.isBioModel ? (m).getUnitID(this, flags) : ""); +}, "~N"); +Clazz.overrideMethod(c$, "getFloatProperty", +function(property){ +var data = this.group.chain.model.ms.vwr.getDataObj(property, null, 1); +var f = NaN; +if (data != null) { +try { +f = (data)[this.i]; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}return f; +}, "~S"); +Clazz.overrideMethod(c$, "modelIsRawPDB", +function(){ +var m = this.group.chain.model; +return (m.isBioModel && !m.isPdbWithMultipleBonds && m.hydrogenCount == 0); +}); +Clazz.defineMethod(c$, "setSymop", +function(isym, andClear){ +if (this.atomSymmetry == null) this.atomSymmetry = new JU.BS(); +if (andClear) this.atomSymmetry.clearAll(); +if (isym > 0) this.atomSymmetry.set(isym - 1); +}, "~N,~B"); +Clazz.overrideMethod(c$, "getExplicitHydrogenCount", +function(){ +return 0; +}); +c$.MAD_GLOBAL = 32200; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/AtomCollection.js b/config/plugins/visualizations/jmol/static/j2s/JM/AtomCollection.js new file mode 100755 index 000000000000..8ef517236f23 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/AtomCollection.js @@ -0,0 +1,2084 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JU.V3"], "JM.AtomCollection", ["java.util.Arrays", "$.Hashtable", "JU.A4", "$.AU", "$.BS", "$.Lst", "$.M3", "$.Measure", "$.P3", "$.PT", "J.api.Interface", "J.atomdata.RadiusData", "J.c.PAL", "$.VDW", "JM.Group", "JS.T", "JU.BSUtil", "$.Elements", "$.Logger", "$.Parser", "$.Vibration"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.g3d = null; +this.bioModelset = null; +this.at = null; +this.ac = 0; +this.trajectory = null; +this.pointGroup = null; +this.labeler = null; +this.maxBondingRadius = 1.4E-45; +this.maxVanderwaalsRadius = 1.4E-45; +this.hasBfactorRange = false; +this.bfactor100Lo = 0; +this.bfactor100Hi = 0; +this.haveBSVisible = false; +this.haveBSClickable = false; +this.bsSurface = null; +this.nSurfaceAtoms = 0; +this.surfaceDistanceMax = 0; +this.haveChirality = false; +this.bspf = null; +this.preserveState = true; +this.canSkipLoad = true; +this.haveStraightness = false; +this.bsHidden = null; +this.bsVisible = null; +this.bsClickable = null; +this.bsModulated = null; +this.atomTensorList = null; +this.atomTensors = null; +this.surfaceDistance100s = null; +this.tainted = null; +this.atomNames = null; +this.atomTypes = null; +this.atomSerials = null; +this.atomResnos = null; +this.atomSeqIDs = null; +this.dssrData = null; +this.vibrations = null; +this.occupancies = null; +this.bfactor100s = null; +this.partialCharges = null; +this.bondingRadii = null; +this.hydrophobicities = null; +this.bsPartialCharges = null; +this.aaRet = null; +if (!Clazz.isClassDefined("JM.AtomCollection.AtomSorter")) { +JM.AtomCollection.$AtomCollection$AtomSorter$ (); +} +this.atomCapacity = 0; +Clazz.instantialize(this, arguments);}, JM, "AtomCollection", null); +Clazz.defineMethod(c$, "getAtom", +function(iatom){ +return (iatom >= 0 && iatom < this.at.length ? this.at[iatom] : null); +}, "~N"); +Clazz.defineMethod(c$, "setupAC", +function(){ +this.bsHidden = new JU.BS(); +this.bsVisible = new JU.BS(); +this.bsClickable = new JU.BS(); +if (JM.AtomCollection.userSettableValues == null) JM.AtomCollection.userSettableValues = ("atomName atomType coord element formalCharge hydrophobicity ionic occupancy partialCharge temperature valence vanderWaals vibrationVector atomNo seqID resNo chain site").$plit(" "); +}); +Clazz.defineMethod(c$, "releaseModelSetAC", +function(){ +this.ac = 0; +this.at = null; +this.vwr = null; +this.g3d = null; +this.bspf = null; +this.surfaceDistance100s = null; +this.bsSurface = null; +this.tainted = null; +this.atomNames = null; +this.atomTypes = null; +this.atomResnos = null; +this.dssrData = null; +this.atomSerials = null; +this.atomSeqIDs = null; +this.vibrations = null; +this.occupancies = null; +this.bfactor100s = null; +this.resetPartialCharges(); +this.bondingRadii = null; +this.atomTensors = null; +}); +Clazz.defineMethod(c$, "mergeAtomArrays", +function(mergeModelSet){ +this.tainted = mergeModelSet.tainted; +this.atomNames = mergeModelSet.atomNames; +this.atomTypes = mergeModelSet.atomTypes; +this.atomResnos = mergeModelSet.atomResnos; +this.dssrData = mergeModelSet.dssrData; +this.atomSerials = mergeModelSet.atomSerials; +this.atomSeqIDs = mergeModelSet.atomSeqIDs; +this.vibrations = mergeModelSet.vibrations; +this.occupancies = mergeModelSet.occupancies; +this.bfactor100s = mergeModelSet.bfactor100s; +this.bondingRadii = mergeModelSet.bondingRadii; +this.partialCharges = mergeModelSet.partialCharges; +this.bsPartialCharges = mergeModelSet.bsPartialCharges; +this.atomTensors = mergeModelSet.atomTensors; +this.atomTensorList = mergeModelSet.atomTensorList; +this.bsModulated = mergeModelSet.bsModulated; +this.haveStraightness = false; +this.surfaceDistance100s = null; +}, "JM.AtomCollection"); +Clazz.defineMethod(c$, "getAtomPointVector", +function(bs){ +var v = new JU.Lst(); +var n = this.ac; +if (bs != null) { +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) { +v.addLast(this.at[i]); +} +}return v; +}, "JU.BS"); +Clazz.defineMethod(c$, "modelSetHasVibrationVectors", +function(){ +return (this.vibrations != null); +}); +Clazz.defineMethod(c$, "getAtomTypes", +function(){ +return this.atomTypes; +}); +Clazz.defineMethod(c$, "getPartialCharges", +function(){ +return this.partialCharges; +}); +Clazz.defineMethod(c$, "getBondingRadii", +function(){ +return this.bondingRadii; +}); +Clazz.defineMethod(c$, "getBFactors", +function(){ +return this.bfactor100s; +}); +Clazz.defineMethod(c$, "getHydrophobicity", +function(){ +return this.hydrophobicities; +}); +Clazz.defineMethod(c$, "setBsHidden", +function(bs){ +this.bsHidden = bs; +}, "JU.BS"); +Clazz.defineMethod(c$, "isAtomHidden", +function(iAtom){ +return this.bsHidden.get(iAtom); +}, "~N"); +Clazz.defineMethod(c$, "getLabeler", +function(){ +return (this.labeler == null ? this.labeler = J.api.Interface.getInterface("JM.LabelToken", this.vwr, "ms") : this.labeler); +}); +Clazz.defineMethod(c$, "getAtomInfo", +function(i, format, ptTemp){ +return (format == null ? this.at[i].getInfo() : this.getLabeler().formatLabel(this.vwr, this.at[i], format, ptTemp)); +}, "~N,~S,JU.P3"); +Clazz.defineMethod(c$, "getElementName", +function(i){ +return JU.Elements.elementNameFromNumber(this.at[i].getAtomicAndIsotopeNumber()); +}, "~N"); +Clazz.defineMethod(c$, "getQuaternion", +function(i, qtype){ +return (i < 0 ? null : this.at[i].group.getQuaternion(qtype)); +}, "~N,~S"); +Clazz.defineMethod(c$, "getFirstAtomIndexFromAtomNumber", +function(atomNumber, bsVisibleFrames){ +for (var i = 0; i < this.ac; i++) { +var atom = this.at[i]; +if (!JM.AtomCollection.isDeleted(atom) && atom.getAtomNumber() == atomNumber && bsVisibleFrames.get(atom.mi)) return i; +} +return -1; +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "setFormalCharges", +function(bs, formalCharge){ +if (bs != null) { +this.resetPartialCharges(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].setFormalCharge(formalCharge); +this.taintAtom(i, 4); +} +}}, "JU.BS,~N"); +Clazz.defineMethod(c$, "getAtomicCharges", +function(){ +var charges = Clazz.newFloatArray (this.ac, 0); +for (var i = this.ac; --i >= 0; ) charges[i] = (JM.AtomCollection.isDeleted(this.at[i]) ? 0 : this.at[i].getElementNumber()); + +return charges; +}); +Clazz.defineMethod(c$, "getRadiusVdwJmol", +function(atom){ +return JU.Elements.getVanderwaalsMar(atom.getElementNumber(), J.c.VDW.JMOL) / 1000; +}, "JM.Atom"); +Clazz.defineMethod(c$, "getMaxVanderwaalsRadius", +function(){ +if (this.maxVanderwaalsRadius == 1.4E-45) this.findMaxRadii(); +return this.maxVanderwaalsRadius; +}); +Clazz.defineMethod(c$, "findMaxRadii", +function(){ +var r; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if ((r = atom.getBondingRadius()) > this.maxBondingRadius) this.maxBondingRadius = r; +if ((r = atom.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)) > this.maxVanderwaalsRadius) this.maxVanderwaalsRadius = r; +} +}); +Clazz.defineMethod(c$, "clearBfactorRange", +function(){ +this.hasBfactorRange = false; +}); +Clazz.defineMethod(c$, "calcBfactorRange", +function(bs){ +if (this.hasBfactorRange) return; +this.bfactor100Lo = 2147483647; +this.bfactor100Hi = -2147483648; +if (bs == null) { +for (var i = 0; i < this.ac; i++) this.setBf(i); + +} else { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.setBf(i); + +}this.hasBfactorRange = true; +}, "JU.BS"); +Clazz.defineMethod(c$, "setBf", +function(i){ +if (JM.AtomCollection.isDeleted(this.at[i])) return; +var bf = this.at[i].getBfactor100(); +if (bf < this.bfactor100Lo) this.bfactor100Lo = bf; + else if (bf > this.bfactor100Hi) this.bfactor100Hi = bf; +}, "~N"); +Clazz.defineMethod(c$, "getBfactor100Lo", +function(){ +if (!this.hasBfactorRange) { +if (this.vwr.g.rangeSelected) { +this.calcBfactorRange(this.vwr.bsA()); +} else { +this.calcBfactorRange(null); +}}return this.bfactor100Lo; +}); +Clazz.defineMethod(c$, "getBfactor100Hi", +function(){ +this.getBfactor100Lo(); +return this.bfactor100Hi; +}); +Clazz.defineMethod(c$, "getSurfaceDistanceMax", +function(){ +if (this.surfaceDistance100s == null) this.calcSurfaceDistances(); +return this.surfaceDistanceMax; +}); +Clazz.defineMethod(c$, "calculateVolume", +function(bs, vType){ +var volume = 0; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) volume += this.at[i].getVolume(this.vwr, vType); + +return volume; +}, "JU.BS,J.c.VDW"); +Clazz.defineMethod(c$, "getSurfaceDistance100", +function(atomIndex){ +if (this.nSurfaceAtoms == 0) return -1; +if (this.surfaceDistance100s == null) this.calcSurfaceDistances(); +return this.surfaceDistance100s[atomIndex]; +}, "~N"); +Clazz.defineMethod(c$, "calcSurfaceDistances", +function(){ +this.calculateSurface(null, -1); +}); +Clazz.defineMethod(c$, "calculateSurface", +function(bsSelected, envelopeRadius){ +if (envelopeRadius < 0) envelopeRadius = 3.0; +var ec = (J.api.Interface.getOption("geodesic.EnvelopeCalculation", this.vwr, "ms")).set(this.vwr, this.ac, null); +ec.calculate( new J.atomdata.RadiusData(null, envelopeRadius, J.atomdata.RadiusData.EnumType.ABSOLUTE, null), 3.4028235E38, bsSelected, JU.BSUtil.copyInvert(bsSelected, this.ac), false, false, false, true); +var points = ec.getPoints(); +this.surfaceDistanceMax = 0; +this.bsSurface = ec.getBsSurfaceClone(); +this.surfaceDistance100s = Clazz.newIntArray (this.ac, 0); +this.nSurfaceAtoms = JU.BSUtil.cardinalityOf(this.bsSurface); +if (this.nSurfaceAtoms == 0 || points == null || points.length == 0) return points; +var radiusAdjust = (envelopeRadius == 3.4028235E38 ? 0 : envelopeRadius); +for (var i = 0; i < this.ac; i++) { +if (this.bsSurface.get(i) || JM.AtomCollection.isDeleted(this.at[i])) { +this.surfaceDistance100s[i] = 0; +} else { +var dMin = 3.4028235E38; +var atom = this.at[i]; +for (var j = points.length; --j >= 0; ) { +dMin = Math.min(Math.abs(points[j].distance(atom) - radiusAdjust), dMin); +} +var d = this.surfaceDistance100s[i] = Clazz.doubleToInt(Math.floor(dMin * 100)); +this.surfaceDistanceMax = Math.max(this.surfaceDistanceMax, d); +}} +return points; +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "setAtomCoord2", +function(bs, tokType, xyzValues){ +var xyz = null; +var values = null; +var v = null; +var type = 0; +var nValues = 1; +if (Clazz.instanceOf(xyzValues,"JU.P3")) { +xyz = xyzValues; +} else if (Clazz.instanceOf(xyzValues,"JU.Lst")) { +v = xyzValues; +if ((nValues = v.size()) == 0) return; +type = 1; +} else if (JU.AU.isAP(xyzValues)) { +values = xyzValues; +if ((nValues = values.length) == 0) return; +type = 2; +} else { +return; +}var n = 0; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +switch (type) { +case 1: +if (n >= nValues) return; +xyz = v.get(n++); +break; +case 2: +if (n >= nValues) return; +xyz = values[n++]; +break; +} +if (xyz != null) switch (tokType) { +case 1145047049: +this.setAtomCoord(i, xyz.x, xyz.y, xyz.z); +break; +case 1145047050: +case 1145047053: +this.at[i].setFractionalCoordTo(xyz, false); +this.taintAtom(i, 2); +break; +case 1145047055: +this.setAtomVibrationVector(i, xyz); +break; +} +} +}, "JU.BS,~N,~O"); +Clazz.defineMethod(c$, "setAtomVibrationVector", +function(atomIndex, vib){ +this.setVibrationVector(atomIndex, vib); +this.taintAtom(atomIndex, 12); +}, "~N,JU.T3"); +Clazz.defineMethod(c$, "setAtomCoord", +function(atomIndex, x, y, z){ +if (atomIndex < 0 || atomIndex >= this.ac) return; +var a = this.at[atomIndex]; +a.set(x, y, z); +this.fixTrajectory(a); +this.taintAtom(atomIndex, 2); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "fixTrajectory", +function(a){ +if ((this).isTrajectory(a.mi)) this.trajectory.fixAtom(a); +}, "JM.Atom"); +Clazz.defineMethod(c$, "setAtomCoordRelative", +function(atomIndex, x, y, z){ +if (atomIndex < 0 || atomIndex >= this.ac) return; +var a = this.at[atomIndex]; +a.add3(x, y, z); +this.fixTrajectory(a); +this.taintAtom(atomIndex, 2); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setAtomsCoordRelative", +function(bs, x, y, z){ +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.setAtomCoordRelative(i, x, y, z); + +}, "JU.BS,~N,~N,~N"); +Clazz.defineMethod(c$, "setAPa", +function(bs, tok, iValue, fValue, sValue, values, list){ +var n = 0; +if (values != null && values.length == 0 || bs == null) return; +var isAll = (values != null && values.length == this.ac || list != null && list.length == this.ac); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (isAll) n = i; +if (values != null) { +if (n >= values.length) return; +fValue = values[n++]; +if (Float.isNaN(fValue)) continue; +iValue = Clazz.floatToInt(fValue); +} else if (list != null) { +if (n >= list.length) return; +sValue = list[n++]; +}var atom = this.at[i]; +var f; +switch (tok) { +case 1086326786: +this.setAtomName(i, sValue, true); +break; +case 1086326785: +this.setAtomType(i, sValue); +break; +case 1086326788: +this.setChainID(i, sValue); +break; +case 1094715393: +this.setAtomNumber(i, iValue, true); +break; +case 1094713365: +this.setAtomSeqID(i, iValue); +break; +case 1111492609: +case 1111492629: +this.setAtomCoord(i, fValue, atom.y, atom.z); +break; +case 1111492610: +case 1111492630: +this.setAtomCoord(i, atom.x, fValue, atom.z); +break; +case 1111492611: +case 1111492631: +this.setAtomCoord(i, atom.x, atom.y, fValue); +break; +case 1111492626: +case 1111492627: +case 1111492628: +this.setVibrationVector2(i, tok, fValue); +break; +case 1111492612: +case 1111492613: +case 1111492614: +case 1111492615: +case 1111492616: +case 1111492617: +atom.setFractionalCoord(tok, fValue, false); +this.taintAtom(i, 2); +break; +case 1094715402: +case 1086326789: +this.setElement(atom, iValue, true); +break; +case 1631586315: +this.resetPartialCharges(); +atom.setFormalCharge(iValue); +this.taintAtom(i, 4); +break; +case 1113589786: +this.setHydrophobicity(i, fValue); +break; +case 1128269825: +f = (fValue < 2 && fValue >= 0.01 ? 100 * fValue : fValue); +this.setOccupancy(i, f, true); +break; +case 1111492619: +this.setPartialCharge(i, fValue, true); +break; +case 1111492618: +this.setBondingRadius(i, fValue); +break; +case 1111492620: +this.setBFactor(i, fValue, true); +break; +case 1094715412: +this.setAtomResno(i, iValue); +break; +case 1825200146: +case 1287653388: +this.vwr.shm.setAtomLabel(sValue, i); +break; +case 1665140738: +case 1112152075: +f = fValue; +if (f < 0) f = 0; + else if (f > 16) f = 16.1; +atom.madAtom = (Clazz.floatToShort(f * 2000)); +break; +case 1113589787: +this.vwr.slm.setSelectedAtom(atom.i, (fValue != 0)); +break; +case 1094715418: +atom.setValence(iValue); +this.taintAtom(i, 10); +break; +case 1648363544: +if (atom.setRadius(fValue)) this.taintAtom(i, 11); + else this.untaint(i, 11); +break; +default: +JU.Logger.error("unsettable atom property: " + JS.T.nameOf(tok)); +return; +} +} +switch (tok) { +case 1113589787: +this.vwr.slm.setSelectedAtom(-1, false); +break; +case 1665140738: +case 1112152075: +this.vwr.setShapeSize(0, 2147483647, bs); +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz.defineMethod(c$, "getVibCoord", +function(atomIndex, c){ +var ms = null; +var v = null; +switch ((c).charCodeAt(0)) { +case 120: +case 121: +case 122: +v = this.getVibration(atomIndex, false); +break; +default: +ms = this.getModulation(atomIndex); +if (ms != null) { +v = ms.getVibration(false); +if (v == null) v = ms; +}} +if (v == null && ms == null) return NaN; +switch ((c).charCodeAt(0)) { +case 120: +case 88: +return v.x; +case 121: +case 89: +return v.y; +case 122: +case 90: +return v.z; +case 79: +return (ms.getModulation('O', null, true)).floatValue(); +case 49: +case 50: +case 51: +var t = ms.getModulation('T', null, true); +var x = (c == '1' ? t.x : c == '2' ? t.y : t.z); +return (x - Math.floor(x)); +default: +return NaN; +} +}, "~N,~S"); +Clazz.defineMethod(c$, "getVibration", +function(atomIndex, forceNew){ +var v = (this.vibrations == null ? null : this.vibrations[atomIndex]); +return (Clazz.instanceOf(v,"J.api.JmolModulationSet") ? (v).getVibration(forceNew) : v == null && forceNew ? new JU.Vibration() : v); +}, "~N,~B"); +Clazz.defineMethod(c$, "getModulation", +function(iAtom){ +var v = (this.vibrations == null ? null : this.vibrations[iAtom]); +return (v != null && v.modDim > 0 ? v : null); +}, "~N"); +Clazz.defineMethod(c$, "setVibrationVector", +function(atomIndex, vib){ +if (vib == null) { +if (this.vibrations != null && this.vibrations.length > atomIndex) this.vibrations[atomIndex] = null; +return; +}if (Double.isNaN(vib.x) || Double.isNaN(vib.y) || Double.isNaN(vib.z)) return; +if (this.vibrations == null || this.vibrations.length <= atomIndex) this.vibrations = new Array(this.at.length); +if (Clazz.instanceOf(vib,"JU.Vibration")) { +this.vibrations[atomIndex] = vib; +} else { +if (this.vibrations[atomIndex] == null) this.vibrations[atomIndex] = new JU.Vibration(); +this.vibrations[atomIndex].setXYZ(vib); +}this.at[atomIndex].setVibrationVector(); +}, "~N,JU.T3"); +Clazz.defineMethod(c$, "setVibrationVector2", +function(atomIndex, tok, fValue){ +var v = this.getVibration(atomIndex, true); +if (v == null) return; +switch (tok) { +case 1111492626: +v.x = fValue; +break; +case 1111492627: +v.y = fValue; +break; +case 1111492628: +v.z = fValue; +break; +} +this.setAtomVibrationVector(atomIndex, v); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setAtomName", +function(atomIndex, name, doTaint){ +if (doTaint && name.equals(this.at[atomIndex].getAtomName())) return; +var id = ((this).am[this.at[atomIndex].mi].isBioModel ? this.vwr.getJBR().lookupSpecialAtomID(name) : 0); +this.at[atomIndex].atomID = id; +if (id <= 0) { +if (this.atomNames == null) this.atomNames = new Array(this.at.length); +this.atomNames[atomIndex] = name; +}if (doTaint) this.taintAtom(atomIndex, 0); +}, "~N,~S,~B"); +Clazz.defineMethod(c$, "setAtomType", +function(atomIndex, type){ +if (type.equals(this.at[atomIndex].getAtomType())) return; +if (this.atomTypes == null) this.atomTypes = new Array(this.at.length); +this.atomTypes[atomIndex] = type; +return; +}, "~N,~S"); +Clazz.defineMethod(c$, "setChainID", +function(atomIndex, id){ +if (id.equals(this.at[atomIndex].getChainIDStr())) return; +var intid = this.at[atomIndex].getChainID(); +var bs = this.getChainBits(intid); +var c = this.at[atomIndex].group.chain; +c.chainID = this.vwr.getChainID(id, true); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.taintAtom(i, 16); + +}, "~N,~S"); +Clazz.defineMethod(c$, "setAtomNumber", +function(atomIndex, atomno, doTaint){ +if (doTaint && atomno == this.at[atomIndex].getAtomNumber()) return; +if (this.atomSerials == null) this.atomSerials = Clazz.newIntArray (this.at.length, 0); +this.atomSerials[atomIndex] = atomno; +if (doTaint) this.taintAtom(atomIndex, 13); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "setElement", +function(atom, atomicNumber, doTaint){ +if (doTaint && atom.getElementNumber() == atomicNumber) return; +atom.setAtomicAndIsotopeNumber(atomicNumber); +atom.paletteID = J.c.PAL.CPK.id; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +this.resetPartialCharges(); +if (doTaint) this.taintAtom(atom.i, 3); +}, "JM.Atom,~N,~B"); +Clazz.defineMethod(c$, "setSite", +function(atom, site, doTaint){ +if (atom.atomSite == site) return; +atom.atomSite = site; +if (doTaint) this.taintAtom(atom.i, 17); +}, "JM.Atom,~N,~B"); +Clazz.defineMethod(c$, "resetPartialCharges", +function(){ +this.partialCharges = null; +this.bsPartialCharges = null; +}); +Clazz.defineMethod(c$, "setAtomResno", +function(atomIndex, resno){ +if (resno == this.at[atomIndex].getResno()) return; +this.at[atomIndex].group.setResno(resno); +if (this.atomResnos == null) this.atomResnos = Clazz.newIntArray (this.at.length, 0); +this.atomResnos[atomIndex] = resno; +this.taintAtom(atomIndex, 15); +}, "~N,~N"); +Clazz.defineMethod(c$, "setAtomSeqID", +function(atomIndex, seqID){ +if (seqID == this.at[atomIndex].getSeqID()) return; +if (this.atomSeqIDs == null) this.atomSeqIDs = Clazz.newIntArray (this.at.length, 0); +this.atomSeqIDs[atomIndex] = seqID; +this.taintAtom(atomIndex, 14); +}, "~N,~N"); +Clazz.defineMethod(c$, "setOccupancy", +function(atomIndex, occupancy, doTaint){ +if (doTaint && occupancy == this.at[atomIndex].getOccupancy100()) return; +if (this.occupancies == null) { +if (occupancy == 100) return; +this.occupancies = Clazz.newFloatArray (this.at.length, 0); +for (var i = this.at.length; --i >= 0; ) this.occupancies[i] = 100; + +}this.occupancies[atomIndex] = occupancy; +if (doTaint) this.taintAtom(atomIndex, 7); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "getOccupancyFloat", +function(i){ +return (this.occupancies == null || i >= this.occupancies.length ? 100 : this.occupancies[i]); +}, "~N"); +Clazz.defineMethod(c$, "setPartialCharge", +function(atomIndex, partialCharge, doTaint){ +if (Float.isNaN(partialCharge)) return; +if (this.partialCharges == null) { +this.bsPartialCharges = new JU.BS(); +if (partialCharge == 0) return; +this.partialCharges = Clazz.newFloatArray (this.at.length, 0); +}this.bsPartialCharges.set(atomIndex); +this.partialCharges[atomIndex] = partialCharge; +if (doTaint) this.taintAtom(atomIndex, 8); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "setBondingRadius", +function(atomIndex, radius){ +if (Float.isNaN(radius) || radius == this.at[atomIndex].getBondingRadius()) return; +if (this.bondingRadii == null) { +this.bondingRadii = Clazz.newFloatArray (this.at.length, 0); +} else if (this.bondingRadii.length < this.at.length) { +this.bondingRadii = JU.AU.ensureLengthA(this.bondingRadii, this.at.length); +}this.bondingRadii[atomIndex] = radius; +this.taintAtom(atomIndex, 6); +}, "~N,~N"); +Clazz.defineMethod(c$, "setBFactor", +function(atomIndex, bfactor, doTaint){ +if (Float.isNaN(bfactor) || doTaint && bfactor == this.at[atomIndex].getBfactor100()) return; +if (this.bfactor100s == null) { +if (bfactor == 0) return; +this.bfactor100s = Clazz.newShortArray (this.at.length, 0); +}this.bfactor100s[atomIndex] = Clazz.doubleToShort((bfactor < -327.68 ? -327.68 : bfactor > 327.67 ? 327.67 : bfactor) * 100 + (bfactor < 0 ? -0.5 : 0.5)); +if (doTaint) this.taintAtom(atomIndex, 9); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "setHydrophobicity", +function(atomIndex, value){ +if (Float.isNaN(value) || value == this.at[atomIndex].getHydrophobicity()) return; +if (this.hydrophobicities == null) { +this.hydrophobicities = Clazz.newFloatArray (this.at.length, 0); +for (var i = 0; i < this.at.length; i++) this.hydrophobicities[i] = JU.Elements.getHydrophobicity(this.at[i].group.groupID); + +}this.hydrophobicities[atomIndex] = value; +this.taintAtom(atomIndex, 5); +}, "~N,~N"); +Clazz.defineMethod(c$, "setAtomData", +function(type, name, dataString, isDefault){ +var fData = null; +var bs = null; +switch (type) { +case 2: +this.loadCoordinates(dataString, false, !isDefault); +return; +case 12: +this.loadCoordinates(dataString, true, true); +return; +case 18: +fData = Clazz.newFloatArray (this.ac, 0); +bs = JU.BS.newN(this.ac); +break; +} +var lines = JU.Parser.markLines(dataString, ';'); +var n = 0; +try { +var nData = JU.PT.parseInt(dataString.substring(0, lines[0] - 1)); +for (var i = 1; i <= nData; i++) { +var tokens = JU.PT.getTokens(JU.PT.parseTrimmed(dataString.substring(lines[i], lines[i + 1] - 1))); +var atomIndex = JU.PT.parseInt(tokens[0]) - 1; +if (atomIndex < 0 || atomIndex >= this.ac) continue; +var atom = this.at[atomIndex]; +n++; +var pt = tokens.length - 1; +var x = JU.PT.parseFloat(tokens[pt]); +switch (type) { +case 18: +fData[atomIndex] = x; +bs.set(atomIndex); +continue; +case 0: +this.setAtomName(atomIndex, tokens[pt], true); +break; +case 13: +this.setAtomNumber(atomIndex, Clazz.floatToInt(x), true); +break; +case 15: +this.setAtomResno(atomIndex, Clazz.floatToInt(x)); +break; +case 14: +this.setAtomSeqID(atomIndex, Clazz.floatToInt(x)); +break; +case 1: +this.setAtomType(atomIndex, tokens[pt]); +break; +case 16: +this.setChainID(atomIndex, tokens[pt]); +break; +case 17: +atom.atomSite = Clazz.floatToInt(x); +break; +case 3: +atom.setAtomicAndIsotopeNumber(Clazz.floatToInt(x)); +atom.paletteID = J.c.PAL.CPK.id; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +break; +case 4: +atom.setFormalCharge(Clazz.floatToInt(x)); +break; +case 5: +this.setHydrophobicity(atomIndex, x); +break; +case 6: +this.setBondingRadius(atomIndex, x); +break; +case 8: +this.setPartialCharge(atomIndex, x, true); +break; +case 9: +this.setBFactor(atomIndex, x, true); +break; +case 10: +atom.setValence(Clazz.floatToInt(x)); +break; +case 11: +atom.setRadius(x); +break; +} +this.taintAtom(atomIndex, type); +} +if (type == 18 && n > 0) this.vwr.setData(name, Clazz.newArray(-1, [name, fData, bs, Integer.$valueOf(1)]), 0, 0, 0, 0, 0); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("loadData error: " + e); +} else { +throw e; +} +} +}, "~N,~S,~S,~B"); +Clazz.defineMethod(c$, "loadCoordinates", +function(data, isVibrationVectors, doTaint){ +var lines = JU.Parser.markLines(data, ';'); +var v = (isVibrationVectors ? new JU.V3() : null); +try { +var nData = JU.PT.parseInt(data.substring(0, lines[0] - 1)); +for (var i = 1; i <= nData; i++) { +var tokens = JU.PT.getTokens(JU.PT.parseTrimmed(data.substring(lines[i], lines[i + 1]))); +var atomIndex = JU.PT.parseInt(tokens[0]) - 1; +var x = (tokens[3].equalsIgnoreCase("1.4E-45") ? 1.4e-45 : JU.PT.parseFloat(tokens[3])); +var y = (tokens[4].equalsIgnoreCase("1.4E-45") ? 1.4e-45 : JU.PT.parseFloat(tokens[4])); +var z = JU.PT.parseFloat(tokens[5]); +if (isVibrationVectors) { +v.set(x, y, z); +this.setAtomVibrationVector(atomIndex, v); +} else { +this.setAtomCoord(atomIndex, x, y, z); +if (!doTaint) this.untaint(atomIndex, 2); +}} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Frame.loadCoordinate error: " + e); +} else { +throw e; +} +} +}, "~S,~B,~B"); +Clazz.defineMethod(c$, "validateBspf", +function(isValid){ +if (this.bspf != null) this.bspf.isValid = isValid; +}, "~B"); +Clazz.defineMethod(c$, "validateBspfForModel", +function(modelIndex, isValid){ +if (this.bspf != null) this.bspf.validateModel(modelIndex, isValid); +}, "~N,~B"); +Clazz.defineMethod(c$, "setPreserveState", +function(TF){ +this.preserveState = TF; +}, "~B"); +c$.getUserSettableType = Clazz.defineMethod(c$, "getUserSettableType", +function(dataType){ +var isExplicit = (dataType.indexOf("property_") == 0); +var check = (isExplicit ? dataType.substring(9) : dataType); +for (var i = 0; i < 18; i++) if (JM.AtomCollection.userSettableValues[i].equalsIgnoreCase(check)) return i; + +return (isExplicit ? 18 : -1); +}, "~S"); +Clazz.defineMethod(c$, "getTaintedAtoms", +function(type){ +return this.tainted == null ? null : this.tainted[type]; +}, "~N"); +Clazz.defineMethod(c$, "taintAtoms", +function(bsAtoms, type){ +this.canSkipLoad = false; +if (!this.preserveState) return; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) this.taintAtom(i, type); + +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "taintAtom", +function(atomIndex, type){ +if (this.preserveState) { +if (this.tainted == null) this.tainted = new Array(18); +if (this.tainted[type] == null) this.tainted[type] = JU.BS.newN(this.ac); +this.tainted[type].set(atomIndex); +}if (type == 2) this.taintModelCoord(atomIndex); +}, "~N,~N"); +Clazz.defineMethod(c$, "taintModelCoord", +function(atomIndex){ +var m = (this).am[this.at[atomIndex].mi]; +this.validateBspfForModel(m.trajectoryBaseIndex, false); +if (m.isBioModel) m.resetDSSR(true); +this.pointGroup = null; +}, "~N"); +Clazz.defineMethod(c$, "untaint", +function(atomIndex, type){ +if (!this.preserveState) return; +if (this.tainted == null || this.tainted[type] == null) return; +this.tainted[type].clear(atomIndex); +}, "~N,~N"); +Clazz.defineMethod(c$, "setTaintedAtoms", +function(bs, type){ +if (this.preserveState) { +if (bs == null) { +if (this.tainted == null) return; +this.tainted[type] = null; +return; +}if (this.tainted == null) this.tainted = new Array(18); +if (this.tainted[type] == null) this.tainted[type] = JU.BS.newN(this.ac); +JU.BSUtil.copy2(bs, this.tainted[type]); +}if (type == 2) { +var i = bs.nextSetBit(0); +if (i >= 0) this.taintModelCoord(i); +}}, "JU.BS,~N"); +Clazz.defineMethod(c$, "unTaintAtoms", +function(bs, type){ +if (this.tainted == null || this.tainted[type] == null) return; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.tainted[type].clear(i); + +if (this.tainted[type].nextSetBit(0) < 0) this.tainted[type] = null; +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "findNearest2", +function(x, y, closest, bsNot, min){ +var champion = null; +var contender; +for (var i = this.ac; --i >= 0; ) { +if (bsNot != null && bsNot.get(i) || (contender = this.at[i]) == null) continue; +if (contender.isClickable() && this.isCursorOnTopOf(contender, x, y, min, champion)) champion = contender; +} +closest[0] = champion; +}, "~N,~N,~A,JU.BS,~N"); +Clazz.defineMethod(c$, "isCursorOnTopOf", +function(contender, x, y, radius, champion){ +return contender.sZ > 1 && !this.g3d.isClippedZ(contender.sZ) && this.g3d.isInDisplayRange(contender.sX, contender.sY) && contender.isCursorOnTopOf(x, y, radius, champion); +}, "JM.Atom,~N,~N,~N,JM.Atom"); +Clazz.defineMethod(c$, "fillADa", +function(atomData, mode){ +atomData.xyz = atomData.atoms = this.at; +atomData.ac = this.ac; +atomData.atomicNumber = Clazz.newIntArray (this.ac, 0); +var includeRadii = ((mode & 2) != 0); +if (includeRadii) atomData.atomRadius = Clazz.newFloatArray (this.ac, 0); +var isMultiModel = ((mode & 16) != 0); +for (var i = 0; i < this.ac; i++) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom) || !isMultiModel && atomData.modelIndex >= 0 && atom.mi != atomData.firstModelIndex) { +if (atomData.bsIgnored == null) atomData.bsIgnored = new JU.BS(); +atomData.bsIgnored.set(i); +continue; +}atomData.atomicNumber[i] = atom.getElementNumber(); +atomData.lastModelIndex = atom.mi; +if (includeRadii) atomData.atomRadius[i] = this.getWorkingRadius(atom, atomData); +} +}, "J.atomdata.AtomData,~N"); +Clazz.defineMethod(c$, "getWorkingRadius", +function(atom, atomData){ +var r = 0; +var rd = atomData.radiusData; +switch (rd.factorType) { +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +r = rd.value; +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +case J.atomdata.RadiusData.EnumType.OFFSET: +switch (rd.vdwType) { +case J.c.VDW.BONDING: +r = atom.getBondingRadius(); +break; +case J.c.VDW.ADPMAX: +r = atom.getADPMinMax(true); +break; +case J.c.VDW.ADPMIN: +r = atom.getADPMinMax(false); +break; +default: +r = atom.getVanderwaalsRadiusFloat(this.vwr, atomData.radiusData.vdwType); +} +if (rd.factorType === J.atomdata.RadiusData.EnumType.FACTOR) r *= rd.value; + else r += rd.value; +} +return r + rd.valueExtended; +}, "JM.Atom,J.atomdata.AtomData"); +Clazz.defineMethod(c$, "calculateHydrogens", +function(bs, nTotal, vConnect, flags){ +var doAll = ((flags & 256) == 256); +var justCarbon = ((flags & 512) == 512); +var isQuick = ((flags & 8) == 8); +var ignoreH = ((flags & 2048) == 2048); +var allowH = ((flags & 4096) == 4096); +var z = new JU.V3(); +var x = new JU.V3(); +var hAtoms = new Array(this.ac); +var bsDeleted = this.vwr.slm.bsDeleted; +var pt; +var nH = nTotal[0] = 0; +if (bs == null) { +return hAtoms; +}var sym = this.vwr.getOperativeSymmetry(); +if (sym != null && this.vwr.getObjectMad10(5) == 0) sym = null; +var ptTemp = (sym == null ? null : new JU.P3()); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (bsDeleted != null && bsDeleted.get(i)) continue; +var atom = this.at[i]; +var atomicNumber = atom.getElementNumber(); +if (justCarbon && atomicNumber != 6) continue; +var dHX = (atomicNumber <= 6 ? 1.1 : atomicNumber <= 10 ? 1.0 : 1.3); +switch (atomicNumber) { +case 7: +case 8: +dHX = 1.0; +break; +case 6: +} +var n = (doAll || ignoreH || allowH ? atom.getCovalentHydrogenCount() : 0); +if (doAll && n > 0 || ignoreH && n == 0) continue; +var nMissing = this.getMissingHydrogenCount(atom, false); +if (doAll && nMissing == 0) continue; +if (!ignoreH) n = nMissing; +var targetValence = this.aaRet[0]; +var hybridization = this.aaRet[2]; +var nBonds = this.aaRet[3] - (ignoreH ? n : 0); +if (nBonds == 0 && atom.isHetero()) continue; +hAtoms[i] = new Array(n); +var hPt = 0; +if (nBonds == 0) { +switch (n) { +case 4: +z.set(0.635, 0.635, 0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 3: +z.set(-0.635, -0.635, 0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 2: +z.set(-0.635, 0.635, -0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 1: +z.set(0.635, -0.635, -0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +} +} else { +switch (n) { +default: +break; +case 3: +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3b", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3c", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3d", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 2: +var isEne = (hybridization == 2 || atomicNumber == 5 || nBonds == 1 && targetValence == 4 || atomicNumber == 7 && this.isAdjacentSp2(atom)); +this.getHybridizationAndAxes(i, atomicNumber, z, x, (isEne ? "sp2b" : targetValence == 3 ? "sp3c" : "lpa"), false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, (isEne ? "sp2c" : targetValence == 3 ? "sp3d" : "lpb"), false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 1: +switch (targetValence - nBonds) { +case 1: +if (atomicNumber == 8 && atom === atom.group.getCarbonylOxygenAtom()) { +hAtoms[i] = null; +continue; +}if (this.getHybridizationAndAxes(i, atomicNumber, z, x, (hybridization == 2 || atomicNumber == 5 || atomicNumber == 6 && this.aaRet[1] == 1 || atomicNumber == 7 && ( new Boolean ( new Boolean (atom.group.getNitrogenAtom() === atom & atom.getFormalCharge() == 0).valueOf() || this.isAdjacentSp2(atom)).valueOf()) ? "sp2c" : "sp3d"), true, false, isQuick, null) != null) { +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +}break; +case 2: +this.getHybridizationAndAxes(i, atomicNumber, z, x, (targetValence == 4 ? "sp2c" : "sp2b"), false, false, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 3: +this.getHybridizationAndAxes(i, atomicNumber, z, x, "spb", false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +} +} +}if (hPt < n) { +var a = new Array(hPt); +for (var j = 0; j < hPt; j++) a[j] = hAtoms[i][j]; + +hAtoms[i] = a; +}nH += hPt; +} +nTotal[0] = nH; +return hAtoms; +}, "JU.BS,~A,JU.Lst,~N"); +c$.addH = Clazz.defineMethod(c$, "addH", +function(hAtoms, hPt, pt, atom, vConnect, sym, ptTemp){ +if (sym != null) { +ptTemp.setT(pt); +sym.toFractional(ptTemp, false); +if (!sym.isWithinUnitCell(ptTemp, 1, 1, 1)) { +return hPt; +}}hAtoms[hPt++] = pt; +if (vConnect != null) vConnect.addLast(atom); +return hPt; +}, "~A,~N,JU.P3,JM.Atom,JU.Lst,J.api.SymmetryInterface,JU.P3"); +Clazz.defineMethod(c$, "isAdjacentSp2", +function(atom){ +var bonds = atom.bonds; +for (var i = 0; i < bonds.length; i++) { +var b2 = bonds[i].getOtherAtom(atom).bonds; +for (var j = 0; j < b2.length; j++) switch (b2[j].getCovalentOrder()) { +case 2: +case 3: +return true; +} + +} +return false; +}, "JM.Atom"); +Clazz.defineMethod(c$, "getMissingHydrogenCount", +function(atom, allowNegative){ +if (this.aaRet == null) this.aaRet = Clazz.newIntArray (5, 0); +var targetCount = atom.getTargetValence(); +if (targetCount < 0) return 0; +var charge = atom.getFormalCharge(); +var valence = atom.getValence(); +var model = (this).am[atom.mi]; +var s = (model.isBioModel && !model.isPdbWithMultipleBonds ? atom.group.getGroup3() : null); +this.aaRet[0] = targetCount; +this.aaRet[1] = charge; +this.aaRet[2] = 0; +this.aaRet[3] = atom.getCovalentBondCount(); +this.aaRet[4] = (s == null ? 0 : valence); +if (s != null && charge == 0) { +if (this.bioModelset.getAminoAcidValenceAndCharge(s, atom.getAtomName(), this.aaRet)) { +targetCount = this.aaRet[0]; +charge = this.aaRet[1]; +}}if (charge != 0) { +targetCount += (targetCount == 4 ? -Math.abs(charge) : charge); +this.aaRet[0] = targetCount; +}var n = targetCount - valence; +return (n < 0 && !allowNegative ? 0 : n); +}, "JM.Atom,~B"); +Clazz.defineMethod(c$, "fixFormalCharges", +function(bs){ +var n = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = this.at[i]; +var nH = this.getMissingHydrogenCount(a, true); +if (nH != 0) { +var c0 = a.getFormalCharge(); +var c = c0 - nH; +a.setFormalCharge(c); +this.taintAtom(i, 4); +if (JU.Logger.debugging) JU.Logger.debug("atom " + a + " formal charge " + c0 + " -> " + c); +n++; +}} +return n; +}, "JU.BS"); +Clazz.defineMethod(c$, "getHybridizationAndAxes", +function(atomIndex, atomicNumber, z, x, lcaoTypeRaw, hybridizationCompatible, doAlignZ, isQuick, ref){ +var lcaoType = (lcaoTypeRaw.length > 0 && lcaoTypeRaw.charAt(0) == '-' ? lcaoTypeRaw.substring(1) : lcaoTypeRaw); +if (lcaoTypeRaw.indexOf("d") >= 0 && !lcaoTypeRaw.endsWith("sp3d")) return this.getHybridizationAndAxesD(atomIndex, z, x, lcaoType); +var atom = this.at[atomIndex]; +if (atomicNumber == 0) atomicNumber = atom.getElementNumber(); +var attached = this.getAttached(atom, 4, hybridizationCompatible, isQuick); +var nAttached = attached.length; +var pt = (lcaoType.charAt(lcaoType.length - 1)).charCodeAt(0) - 97; +if (pt < 0 || pt > 6) pt = 0; +z.set(0, 0, 0); +x.set(0, 0, 0); +var v = new Array(4); +for (var i = 0; i < nAttached; i++) { +var a = attached[i]; +if (a == null) { +nAttached = i; +break; +}v[i] = JU.V3.newVsub(atom, a); +v[i].normalize(); +z.add(v[i]); +} +if (nAttached > 0) x.setT(v[0]); +var isPlanar = false; +var vTemp = new JU.V3(); +if (nAttached >= 3) { +if (x.angle(v[1]) < 2.9845130209103035) vTemp.cross(x, v[1]); + else vTemp.cross(x, v[2]); +vTemp.normalize(); +var vTemp2 = new JU.V3(); +if (v[1].angle(v[2]) < 2.9845130209103035) vTemp2.cross(v[1], v[2]); + else vTemp2.cross(x, v[2]); +vTemp2.normalize(); +isPlanar = (Math.abs(vTemp2.dot(vTemp)) >= 0.95); +}var isSp3 = (lcaoType.indexOf("sp3") == 0); +var isSp2 = (!isSp3 && lcaoType.indexOf("sp2") == 0); +var isSp = (!isSp3 && !isSp2 && lcaoType.indexOf("sp") == 0); +var isP = (lcaoType.indexOf("p") == 0); +var isLp = (lcaoType.indexOf("lp") == 0); +var hybridization = null; +if (hybridizationCompatible) { +if (nAttached == 0) return null; +if (isSp3) { +if (pt > 3 || nAttached > 4) return null; +} else if (isSp2) { +if (pt > 2 || nAttached > 3) return null; +} else if (isSp) { +if (pt > 1 || nAttached > 2) return null; +}switch (nAttached) { +case 1: +if (atomicNumber == 1 && !isSp3) return null; +if (isSp3) { +hybridization = "sp3"; +break; +}switch (attached[0].getCovalentBondCount()) { +case 1: +if (attached[0].getValence() != 2) { +hybridization = "sp"; +break; +}case 2: +hybridization = (isSp ? "sp" : "sp2"); +break; +case 3: +if (!isSp2 && !isP) return null; +hybridization = "sp2"; +break; +} +break; +case 2: +if (z.length() < 0.1) { +if (lcaoType.indexOf("2") >= 0 || lcaoType.indexOf("3") >= 0) return null; +hybridization = "sp"; +break; +}hybridization = (isSp3 ? "sp3" : "sp2"); +if (lcaoType.indexOf("sp") == 0) { +break; +}if (isLp) { +hybridization = "lp"; +break; +}hybridization = lcaoType; +break; +default: +if (isPlanar && !isQuick) { +hybridization = "sp2"; +} else { +if (isPlanar) z.setT(vTemp); +if (isLp && nAttached == 3) { +hybridization = "lp"; +break; +}hybridization = "sp3"; +}} +if (hybridization == null) return null; +if (lcaoType.indexOf("p") == 0) { +if (hybridization === "sp3") return null; +} else if (lcaoType.indexOf(hybridization) < 0) { +return null; +}}if (pt < nAttached && !lcaoType.startsWith("p") && !lcaoType.startsWith("l")) { +z.sub2(attached[pt], atom); +z.normalize(); +return hybridization; +}switch (nAttached) { +case 0: +if (lcaoType.equals("sp3c") || lcaoType.equals("sp2d") || lcaoType.equals("lpa")) { +z.set(-0.5, -0.7, 1); +x.set(1, 0, 0); +} else if (lcaoType.equals("sp3b") || lcaoType.equals("lpb")) { +z.set(0.5, -0.7, -1.0); +x.set(1, 0, 0); +} else if (lcaoType.equals("sp3a")) { +z.set(0, 1, 0); +x.set(1, 0, 0); +} else { +z.set(0, 0, 1); +x.set(1, 0, 0); +}break; +case 1: +vTemp.setT(JM.AtomCollection.vRef); +x.cross(vTemp, z); +if (isSp3) { +for (var i = attached[0].getBondCount(); --i >= 0; ) { +if (attached[0].bonds[i].isCovalentNotPartial0() && attached[0].getBondedAtomIndex(i) != atom.i) { +x.sub2(attached[0], attached[0].bonds[i].getOtherAtom(attached[0])); +x.cross(z, x); +if (x.length() == 0) continue; +x.cross(x, z); +break; +}} +x.normalize(); +if (Float.isNaN(x.x)) { +x.setT(JM.AtomCollection.vRef); +x.cross(x, z); +}vTemp.cross(z, x); +vTemp.normalize(); +z.normalize(); +x.scaleAdd2(2.828, x, z); +if (pt != 3) { +x.normalize(); + new JU.M3().setAA(JU.A4.new4(z.x, z.y, z.z, (pt == 2 ? 1 : -1) * 2.09439507)).rotate(x); +}z.setT(x); +x.cross(vTemp, z); +break; +}vTemp.cross(x, z); +var na = attached[0].getCovalentBondCount(); +switch (na) { +case 3: +if (ref !== attached[0]) { +this.getHybridizationAndAxes(attached[0].i, 0, x, vTemp, "pz", false, doAlignZ, isQuick, atom); +vTemp.setT(x); +if (isSp2) { +x.cross(x, z); +if (pt == 1) x.scale(-1); +x.scale(JM.AtomCollection.sqrt3_2); +z.scaleAdd2(0.5, z, x); +} else if (isSp) { +} else { +vTemp.setT(z); +z.setT(x); +}x.cross(vTemp, z); +break; +}na = 2; +case 1: +if (na == 1 && attached[0].getValence() != 2) { +break; +}case 2: +var isCumulated = false; +var a0 = attached[0]; +x.setT(z); +vTemp.setT(JM.AtomCollection.vRef); +while (a0 != null && a0.getCovalentBondCount() == 2) { +var bonds = a0.bonds; +var a = null; +isCumulated = !isCumulated; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalentNotPartial0()) { +a = bonds[i].getOtherAtom(a0); +if (a !== atom) { +vTemp.sub2(a, a0); +break; +}} +vTemp.cross(vTemp, x); +if (vTemp.length() > 0.1 || a.getCovalentBondCount() != 2) break; +atom = a0; +a0 = a; +} +if (isSp) { +} else if (vTemp.length() > 0.1) { +z.cross(vTemp, x); +z.normalize(); +if (pt == 1) z.scale(-1); +z.scale(JM.AtomCollection.sqrt3_2); +z.scaleAdd2(0.5, x, z); +if (isP) { +vTemp.cross(z, x); +z.setT(vTemp); +vTemp.setT(x); +}x.cross(vTemp, z); +} else { +z.setT(x); +x.cross(JM.AtomCollection.vRef, x); +}break; +} +break; +case 2: +if (z.length() < 0.1) { +if (!lcaoType.equals("pz")) { +var a = attached[0]; +var ok = (a.getCovalentBondCount() == 3); +if (!ok) ok = ((a = attached[1]).getCovalentBondCount() == 3); +if (ok) { +this.getHybridizationAndAxes(a.i, 0, x, z, "pz", false, doAlignZ, isQuick, null); +if (lcaoType.equals("px")) x.scale(-1); +z.setT(v[0]); +break; +}vTemp.setT(JM.AtomCollection.vRef); +z.cross(vTemp, x); +vTemp.cross(z, x); +}z.setT(x); +x.cross(vTemp, z); +break; +}vTemp.cross(z, x); +if (isSp2) { +x.cross(z, vTemp); +break; +}if (isSp3 || isLp) { +vTemp.normalize(); +z.normalize(); +if (!lcaoType.equals("lp")) { +if (pt == 0 || pt == 2) z.scaleAdd2(-1.2, vTemp, z); + else z.scaleAdd2(1.2, vTemp, z); +}x.cross(z, vTemp); +break; +}x.cross(z, vTemp); +z.setT(vTemp); +if (z.z < 0) { +z.scale(-1); +x.scale(-1); +}break; +default: +if (isSp3) break; +if (!isPlanar) { +x.cross(z, x); +break; +}z.setT(vTemp); +if (z.z < 0 && doAlignZ) { +z.scale(-1); +x.scale(-1); +}} +x.normalize(); +z.normalize(); +return hybridization; +}, "~N,~N,JU.V3,JU.V3,~S,~B,~B,~B,JU.T3"); +Clazz.defineMethod(c$, "getHybridizationAndAxesD", +function(atomIndex, z, x, lcaoType){ +if (lcaoType.startsWith("sp3d2")) lcaoType = "d2sp3" + (lcaoType.length == 5 ? "a" : lcaoType.substring(5)); +if (lcaoType.startsWith("sp3d")) lcaoType = "dsp3" + (lcaoType.length == 4 ? "a" : lcaoType.substring(4)); +if (lcaoType.equals("d2sp3") || lcaoType.equals("dsp3")) lcaoType += "a"; +var isTrigonal = lcaoType.startsWith("dsp3"); +var pt = (lcaoType.charAt(lcaoType.length - 1)).charCodeAt(0) - 97; +if (z != null && (!isTrigonal && (pt > 5 || !lcaoType.startsWith("d2sp3")) || isTrigonal && pt > 4)) return null; +var atom = this.at[atomIndex]; +var attached = this.getAttached(atom, 6, true, false); +if (attached == null) return (z == null ? null : "?"); +var nAttached = attached.length; +if (nAttached < 3 && z != null) return null; +var isLP = (pt >= nAttached); +var nAngles = Clazz.doubleToInt(nAttached * (nAttached - 1) / 2); +var angles = JU.AU.newInt2(nAngles); +var ntypes = Clazz.newIntArray (3, 0); +var typePtrs = Clazz.newIntArray (3, nAngles, 0); +var n = 0; +var _90 = 0; +var _120 = 1; +var _180 = 2; +var n120_atom0 = 0; +for (var i = 0; i < nAttached - 1; i++) for (var j = i + 1; j < nAttached; j++) { +var angle = JU.Measure.computeAngleABC(attached[i], atom, attached[j], true); +var itype = (angle < 105 ? _90 : angle >= 150 ? _180 : _120); +typePtrs[itype][ntypes[itype]] = n; +ntypes[itype]++; +angles[n++] = Clazz.newIntArray(-1, [i, j]); +if (i == 0 && itype == _120) n120_atom0++; +} + +n = ntypes[_90] * 100 + ntypes[_120] * 10 + ntypes[_180]; +if (z == null) { +switch (n) { +default: +return ""; +case 0: +return ""; +case 1: +return "linear"; +case 100: +case 10: +return "bent"; +case 111: +case 201: +return "T-shaped"; +case 30: +case 120: +case 210: +case 300: +if (Math.abs(JU.Measure.computeTorsion(attached[0], atom, attached[1], attached[2], true)) > 162) return "trigonal planar"; +return "trigonal pyramidal"; +case 330: +return (n120_atom0 % 2 == 1 ? "tetrahedral" : "uncapped trigonal pyramid"); +case 60: +case 150: +case 240: +return "tetrahedral"; +case 402: +return "square planar"; +case 411: +case 501: +return "see-saw"; +case 631: +return "trigonal bipyramidal"; +case 802: +return "uncapped square pyramid"; +case 1203: +return "octahedral"; +} +}switch (n) { +default: +return null; +case 201: +break; +case 210: +case 330: +case 411: +case 631: +if (!isTrigonal) return null; +break; +case 300: +case 402: +case 501: +case 802: +case 1203: +if (isTrigonal) return null; +break; +} +if (isLP) { +var a; +var bs; +if (isTrigonal) { +switch (ntypes[_120]) { +case 0: +z.sub2(attached[angles[typePtrs[_90][0]][0]], atom); +x.sub2(attached[angles[typePtrs[_90][0]][1]], atom); +z.cross(z, x); +z.normalize(); +if (pt == 4) z.scale(-1); +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +x.sub2(attached[i], atom); +x.normalize(); +x.scale(0.5); +z.scaleAdd2(JM.AtomCollection.sqrt3_2, z, x); +pt = -1; +break; +case 1: +if (pt == 4) { +a = angles[typePtrs[_120][0]]; +z.add2(attached[a[0]], attached[a[1]]); +z.scaleAdd2(-2, atom, z); +pt = -1; +} else { +bs = this.findNotAttached(nAttached, angles, typePtrs[_120], ntypes[_120]); +pt = bs.nextSetBit(0); +}break; +default: +bs = this.findNotAttached(nAttached, angles, typePtrs[_120], ntypes[_120]); +pt = bs.nextSetBit(0); +} +} else { +var isPlanar = false; +if (nAttached == 4) { +switch (ntypes[_180]) { +case 1: +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +if (pt == 4) pt = i; + else pt = bs.nextSetBit(i + 1); +break; +default: +isPlanar = true; +} +} else { +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +for (var j = nAttached; j < pt && i >= 0; j++) i = bs.nextSetBit(i + 1); + +if (i == -1) isPlanar = true; + else pt = i; +}if (isPlanar) { +z.sub2(attached[angles[typePtrs[_90][0]][0]], atom); +x.sub2(attached[angles[typePtrs[_90][0]][1]], atom); +z.cross(z, x); +if (pt == 4) z.scale(-1); +pt = -1; +}}}if (pt >= 0) z.sub2(attached[pt], atom); +if (isLP) z.scale(-1); +z.normalize(); +return (isTrigonal ? "dsp3" : "d2sp3"); +}, "~N,JU.V3,JU.V3,~S"); +Clazz.defineMethod(c$, "getAttached", +function(atom, nMax, doSort, isQuick){ +var nAttached = atom.getCovalentBondCount(); +if (nAttached > nMax) return null; +var attached = new Array(nAttached); +if (nAttached > 0) { +var bonds = atom.bonds; +var n = 0; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalentNotPartial0()) { +var a = bonds[i].getOtherAtom(atom); +if (!isQuick || a.getAtomicAndIsotopeNumber() != 1) attached[n++] = a; +} +if (doSort && !isQuick) java.util.Arrays.sort(attached, Clazz.innerTypeInstance(JM.AtomCollection.AtomSorter, this, null)); +}return attached; +}, "JM.Atom,~N,~B,~B"); +Clazz.defineMethod(c$, "findNotAttached", +function(nAttached, angles, ptrs, nPtrs){ +var bs = JU.BS.newN(nAttached); +bs.setBits(0, nAttached); +for (var i = 0; i < nAttached; i++) for (var j = 0; j < nPtrs; j++) { +var a = angles[ptrs[j]]; +if (a[0] == i || a[1] == i) bs.clear(i); +} + +return bs; +}, "~N,~A,~A,~N"); +Clazz.defineMethod(c$, "getAtomBitsMDa", +function(tokType, specInfo, bs){ +var iSpec = (Clazz.instanceOf(specInfo, Integer) ? (specInfo).intValue() : 0); +switch (tokType) { +case 1086326786: +case 1086326785: +var isType = (tokType == 1086326785); +var names = "," + specInfo + ","; +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var s = (isType ? this.at[i].getAtomType() : this.at[i].getAtomName()); +if (names.indexOf("," + s + ",") >= 0) bs.set(i); +} +return bs; +case 1094715393: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getAtomNumber() == iSpec) bs.set(i); +} +return bs; +case 2097155: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getCovalentBondCount() > 0) bs.set(i); +} +return bs; +case 2097188: +case 2097156: +case 136314895: +case 2097166: +case 2097168: +case 2097170: +case 2097172: +case 2097174: +case 2097184: +return ((this).haveBioModels ? (this).bioModelset.getAtomBitsBS(tokType, null, bs) : bs); +case 1612709900: +iSpec = 1; +case 1094715402: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getElementNumber() == iSpec) bs.set(i); +} +return bs; +case 1612709894: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isHetero()) bs.set(i); +} +return bs; +case 1073741824: +return this.getIdentifierOrNull(specInfo); +case 2097165: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isLeadAtom()) bs.set(i); +} +return bs; +case 1094713362: +case 1639976963: +return ((this).haveBioModels ? (this).bioModelset.getAtomBitsBS(tokType, specInfo, bs) : bs); +case 1094715412: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getResno() == iSpec) bs.set(i); +} +return bs; +case 1612709912: +var hs = Clazz.newIntArray (2, 0); +var a; +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var g = this.at[i].group.groupID; +if (g >= 42 && g < 45) { +bs.set(i); +} else if ((a = this.at[i]).getElementNumber() == 8 && a.getCovalentBondCount() == 2) { +var bonds = a.bonds; +var n = 0; +var b; +for (var j = bonds.length; --j >= 0 && n < 3; ) if (bonds[j].isCovalentNotPartial0() && (b = bonds[j].getOtherAtom(a)).getElementNumber() == 1) hs[n++ % 2] = b.i; + +if (n == 2) { +bs.set(hs[1]); +bs.set(hs[0]); +bs.set(i); +}}} +return bs; +case 1073742355: +var spec = specInfo; +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.isAltLoc(this.at[i].altloc, spec)) bs.set(i); + +return bs; +case 1073742356: +var atomSpec = (specInfo).toUpperCase(); +if (atomSpec.indexOf("\\?") >= 0) atomSpec = JU.PT.rep(atomSpec, "\\?", "\1"); +var allowStar = atomSpec.startsWith("?*"); +if (allowStar) atomSpec = atomSpec.substring(1); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.isAtomNameMatch(this.at[i], atomSpec, allowStar, allowStar)) bs.set(i); + +return bs; +case 1073742357: +return JU.BSUtil.copy(this.getChainBits(iSpec)); +case 1073742360: +return this.getSpecName(specInfo); +case 1073742361: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].group.groupID == iSpec) bs.set(i); + +return bs; +case 1073742362: +return JU.BSUtil.copy(this.getSeqcodeBits(iSpec, true)); +case 5: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].group.getInsCode() == iSpec) bs.set(i); + +return bs; +case 1296041985: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getSymOp() == iSpec) bs.set(i); + +return bs; +} +var bsTemp; +var bsInfo = specInfo; +var i0 = bsInfo.nextSetBit(0); +if (i0 < 0) return bs; +switch (tokType) { +case 1094717454: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +bs.or((this).am[this.at[i].mi].bsAtoms); +bsTemp.andNot(bs); +} +return bs; +case 1086326788: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +this.at[i].group.chain.setAtomBits(bs); +bsTemp.andNot(bs); +} +return bs; +case 1086326789: +bsTemp = new JU.BS(); +for (var i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) bsTemp.set(this.at[i].getElementNumber()); + +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && bsTemp.get(this.at[i].getElementNumber())) bs.set(i); + +return bs; +case 1086324742: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +this.at[i].group.setAtomBits(bs); +bsTemp.andNot(bs); +} +return bs; +case 1094713366: +bsTemp = new JU.BS(); +for (var i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) bsTemp.set(this.at[i].atomSite); + +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && bsTemp.get(this.at[i].atomSite)) bs.set(i); + +return bs; +} +JU.Logger.error("MISSING getAtomBits entry for " + JS.T.nameOf(tokType)); +return bs; +}, "~N,~O,JU.BS"); +Clazz.defineMethod(c$, "getChainBits", +function(chainID){ +var caseSensitive = this.vwr.getBoolean(603979822); +if (caseSensitive) { +if (chainID >= 97 && chainID <= 122) chainID += 159; +} else { +if (chainID >= 0 && chainID < 300) chainID = this.chainToUpper(chainID); +}var bs = new JU.BS(); +var bsDone = JU.BS.newN(this.ac); +var id; +for (var i = bsDone.nextClearBit(0); i < this.ac; i = bsDone.nextClearBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var chain = this.at[i].group.chain; +if (chainID == (id = chain.chainID) || !caseSensitive && id >= 0 && id < 300 && chainID == this.chainToUpper(id)) { +chain.setAtomBits(bs); +bsDone.or(bs); +} else { +chain.setAtomBits(bsDone); +}} +return bs; +}, "~N"); +Clazz.defineMethod(c$, "chainToUpper", +function(chainID){ +return (chainID >= 97 && chainID <= 122 ? chainID - 32 : chainID >= 256 && chainID < 300 ? chainID - 191 : chainID); +}, "~N"); +Clazz.defineMethod(c$, "isAltLoc", +function(altloc, strPattern){ +if (strPattern == null) return (altloc == '\0'); +if (strPattern.length != 1) return false; +var ch = strPattern.charAt(0); +return (ch == '*' || ch == '?' && altloc != '\0' || altloc == ch); +}, "~S,~S"); +Clazz.defineMethod(c$, "getSeqcodeBits", +function(seqcode, returnEmpty){ +var bs = new JU.BS(); +var seqNum = JM.Group.getSeqNumberFor(seqcode); +var haveSeqNumber = (seqNum != 2147483647); +var isEmpty = true; +var insCode = JM.Group.getInsertionCodeChar(seqcode); +switch ((insCode).charCodeAt(0)) { +case 63: +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var atomSeqcode = this.at[i].group.seqcode; +if ((!haveSeqNumber || seqNum == JM.Group.getSeqNumberFor(atomSeqcode)) && JM.Group.getInsertionCodeFor(atomSeqcode) != 0) { +bs.set(i); +isEmpty = false; +}} +break; +default: +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var atomSeqcode = this.at[i].group.seqcode; +if (seqcode == atomSeqcode || !haveSeqNumber && seqcode == JM.Group.getInsertionCodeFor(atomSeqcode) || insCode == '*' && seqNum == JM.Group.getSeqNumberFor(atomSeqcode)) { +bs.set(i); +isEmpty = false; +}} +} +return (!isEmpty || returnEmpty ? bs : null); +}, "~N,~B"); +Clazz.defineMethod(c$, "getIdentifierOrNull", +function(identifier){ +var bs = this.getSpecNameOrNull(identifier, false); +if (identifier.indexOf("\\?") >= 0) identifier = JU.PT.rep(identifier, "\\?", "\1"); +return (bs != null || identifier.indexOf("?") > 0 ? bs : identifier.indexOf("*") > 0 ? this.getSpecNameOrNull(identifier, true) : (this).haveBioModels ? (this).bioModelset.getIdentifierOrNull(identifier) : null); +}, "~S"); +Clazz.defineMethod(c$, "getSpecName", +function(name){ +var bs = this.getSpecNameOrNull(name, false); +if (bs != null) return bs; +if (name.indexOf("*") > 0) bs = this.getSpecNameOrNull(name, true); +return (bs == null ? new JU.BS() : bs); +}, "~S"); +Clazz.defineMethod(c$, "getSpecNameOrNull", +function(name, checkStar){ +var bs = null; +name = name.toUpperCase(); +if (name.indexOf("\\?") >= 0) name = JU.PT.rep(name, "\\?", "\1"); +var allowInitialStar = name.startsWith("?*"); +if (allowInitialStar) name = name.substring(1); +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var g3 = this.at[i].getGroup3(true); +if (g3 != null && g3.length > 0) { +if (JU.PT.isMatch(g3, name, checkStar, true)) { +if (bs == null) bs = JU.BS.newN(i + 1); +bs.set(i); +while (--i >= 0) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getGroup3(true).equals(g3)) bs.set(i); +} +i++; +}} else if (this.isAtomNameMatch(this.at[i], name, checkStar, allowInitialStar)) { +if (bs == null) bs = JU.BS.newN(i + 1); +bs.set(i); +}} +return bs; +}, "~S,~B"); +Clazz.defineMethod(c$, "isAtomNameMatch", +function(atom, strPattern, checkStar, allowInitialStar){ +return JU.PT.isMatch(atom.getAtomName().toUpperCase(), strPattern, checkStar, allowInitialStar); +}, "JM.Atom,~S,~B,~B"); +Clazz.defineMethod(c$, "getAtomIndices", +function(bs){ +var n = 0; +var indices = Clazz.newIntArray (this.ac, 0); +for (var j = bs.nextSetBit(0); j >= 0 && j < this.ac; j = bs.nextSetBit(j + 1)) indices[j] = ++n; + +return indices; +}, "JU.BS"); +Clazz.defineMethod(c$, "getAtomsNearPlane", +function(distance, plane){ +var bsResult = new JU.BS(); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var d = JU.Measure.distanceToPlane(plane, atom); +if (distance > 0 && d >= -0.1 && d <= distance || distance < 0 && d <= 0.1 && d >= distance || distance == 0 && Math.abs(d) < 0.01) bsResult.set(atom.i); +} +return bsResult; +}, "~N,JU.P4"); +Clazz.defineMethod(c$, "clearVisibleSets", +function(){ +this.haveBSVisible = false; +this.haveBSClickable = false; +}); +Clazz.defineMethod(c$, "getAtomsInFrame", +function(bsAtoms){ +this.clearVisibleSets(); +bsAtoms.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isVisible(1)) bsAtoms.set(i); + +}, "JU.BS"); +Clazz.defineMethod(c$, "getVisibleSet", +function(forceNew){ +if (forceNew) { +this.vwr.setModelVisibility(); +this.vwr.shm.finalizeAtoms(null, true); +} else if (this.haveBSVisible) { +return this.bsVisible; +}this.bsVisible.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].checkVisible()) this.bsVisible.set(i); + +if (this.vwr.shm.bsSlabbedInternal != null) this.bsVisible.andNot(this.vwr.shm.bsSlabbedInternal); +this.haveBSVisible = true; +return this.bsVisible; +}, "~B"); +Clazz.defineMethod(c$, "getClickableSet", +function(forceNew){ +if (forceNew) this.vwr.setModelVisibility(); + else if (this.haveBSClickable) return this.bsClickable; +this.bsClickable.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isClickable()) this.bsClickable.set(i); + +this.haveBSClickable = true; +return this.bsClickable; +}, "~B"); +Clazz.defineMethod(c$, "isModulated", +function(i){ +return this.bsModulated != null && this.bsModulated.get(i); +}, "~N"); +Clazz.defineMethod(c$, "deleteModelAtoms", +function(firstAtomIndex, nAtoms, bsAtoms){ +this.at = JU.AU.deleteElements(this.at, firstAtomIndex, nAtoms); +this.ac = this.at.length; +for (var j = firstAtomIndex; j < this.ac; j++) { +this.at[j].i = j; +this.at[j].mi--; +} +if (this.bsModulated != null) JU.BSUtil.deleteBits(this.bsModulated, bsAtoms); +this.deleteAtomTensors(bsAtoms); +this.atomNames = JU.AU.deleteElements(this.atomNames, firstAtomIndex, nAtoms); +this.atomTypes = JU.AU.deleteElements(this.atomTypes, firstAtomIndex, nAtoms); +this.atomResnos = JU.AU.deleteElements(this.atomResnos, firstAtomIndex, nAtoms); +this.atomSerials = JU.AU.deleteElements(this.atomSerials, firstAtomIndex, nAtoms); +this.atomSeqIDs = JU.AU.deleteElements(this.atomSeqIDs, firstAtomIndex, nAtoms); +this.dssrData = JU.AU.deleteElements(this.dssrData, firstAtomIndex, nAtoms); +this.bfactor100s = JU.AU.deleteElements(this.bfactor100s, firstAtomIndex, nAtoms); +this.hasBfactorRange = false; +this.occupancies = JU.AU.deleteElements(this.occupancies, firstAtomIndex, nAtoms); +this.resetPartialCharges(); +this.atomTensorList = JU.AU.deleteElements(this.atomTensorList, firstAtomIndex, nAtoms); +this.vibrations = JU.AU.deleteElements(this.vibrations, firstAtomIndex, nAtoms); +this.nSurfaceAtoms = 0; +this.bsSurface = null; +this.surfaceDistance100s = null; +if (this.tainted != null) for (var i = 0; i < 18; i++) JU.BSUtil.deleteBits(this.tainted[i], bsAtoms); + +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "getAtomIdentityInfo", +function(i, info, ptTemp){ +info.put("_ipt", Integer.$valueOf(i)); +info.put("atomIndex", Integer.$valueOf(i)); +info.put("atomno", Integer.$valueOf(this.at[i].getAtomNumber())); +info.put("info", this.getAtomInfo(i, null, ptTemp)); +info.put("sym", this.at[i].getElementSymbol()); +}, "~N,java.util.Map,JU.P3"); +Clazz.defineMethod(c$, "getAtomTensorList", +function(i){ +return (i < 0 || this.atomTensorList == null || i >= this.atomTensorList.length ? null : this.atomTensorList[i]); +}, "~N"); +Clazz.defineMethod(c$, "deleteAtomTensors", +function(bsAtoms){ +if (this.atomTensors == null) return; +var toDelete = new JU.Lst(); +for (var key, $key = this.atomTensors.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var list = this.atomTensors.get(key); +for (var i = list.size(); --i >= 0; ) { +var t = list.get(i); +if (bsAtoms.get(t.atomIndex1) || t.atomIndex2 >= 0 && bsAtoms.get(t.atomIndex2)) list.removeItemAt(i); +} +if (list.size() == 0) toDelete.addLast(key); +} +for (var i = toDelete.size(); --i >= 0; ) this.atomTensors.remove(toDelete.get(i)); + +}, "JU.BS"); +Clazz.defineMethod(c$, "setCapacity", +function(nAtoms){ +this.atomCapacity += nAtoms; +}, "~N"); +Clazz.defineMethod(c$, "setAtomTensors", +function(atomIndex, list){ +if (list == null || list.size() == 0) return; +if (this.atomTensors == null) this.atomTensors = new java.util.Hashtable(); +if (this.atomTensorList == null) this.atomTensorList = new Array(this.at.length); +this.atomTensorList = JU.AU.ensureLength(this.atomTensorList, this.at.length); +this.atomTensorList[atomIndex] = JM.AtomCollection.getTensorList(list); +for (var i = list.size(); --i >= 0; ) { +var t = list.get(i); +t.atomIndex1 = atomIndex; +t.atomIndex2 = -1; +t.modelIndex = this.at[atomIndex].mi; +this.addTensor(t, t.type); +if (t.altType != null) this.addTensor(t, t.altType); +} +}, "~N,JU.Lst"); +Clazz.defineMethod(c$, "addTensor", +function(t, type){ +type = type.toLowerCase(); +var tensors = this.atomTensors.get(type); +if (tensors == null) { +this.atomTensors.put(type, tensors = new JU.Lst()); +tensors.ensureCapacity(this.atomCapacity); +}tensors.addLast(t); +}, "JU.Tensor,~S"); +c$.getTensorList = Clazz.defineMethod(c$, "getTensorList", +function(list){ +var pt = -1; +var haveTLS = false; +var n = list.size(); +for (var i = n; --i >= 0; ) { +var t = list.get(i); +if (t.forThermalEllipsoid) pt = i; + else if (t.iType == 2) haveTLS = true; +} +var a = new Array((pt >= 0 || !haveTLS ? 0 : 1) + n); +if (pt >= 0) { +a[0] = list.get(pt); +if (list.size() == 1) return a; +}if (haveTLS) { +pt = 0; +for (var i = n; --i >= 0; ) { +var t = list.get(i); +if (t.forThermalEllipsoid) continue; +a[++pt] = t; +} +} else { +for (var i = 0; i < n; i++) a[i] = list.get(i); + +}return a; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getAtomTensor", +function(i, type){ +var tensors = this.getAtomTensorList(i); +if (tensors != null && type != null) { +type = type.toLowerCase(); +for (var j = 0; j < tensors.length; j++) { +var t = tensors[j]; +if (t != null && (type.equals(t.type) || type.equals(t.altType))) return t; +} +}return null; +}, "~N,~S"); +Clazz.defineMethod(c$, "getAllAtomTensors", +function(type){ +if (this.atomTensors == null) return null; +if (type != null) return this.atomTensors.get(type.toLowerCase()); +var list = new JU.Lst(); +for (var e, $e = this.atomTensors.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) list.addAll(e.getValue()); + +return list; +}, "~S"); +Clazz.defineMethod(c$, "scaleVectorsToMax", +function(max){ +if (this.vibrations == null) return; +var m = 0; +var bsVib = JU.BS.newN(this.ac); +for (var i = this.vibrations.length; --i >= 0; ) { +var v = this.getVibration(i, false); +if (v != null && (v.modDim == -1 || v.modDim == -2)) { +m = Math.max(m, v.length()); +bsVib.set(i); +}} +if (m == max || m == 0) return; +m = max / m; +var ok = false; +for (var i = bsVib.nextSetBit(0); i >= 0; i = bsVib.nextSetBit(i + 1)) { +var v = this.getVibration(i, false); +var mod = this.getModulation(i); +if (mod == null) { +if (m == 0) return; +v.scale(m); +} else { +mod.scaleVibration(m); +}if (!ok) { +this.taintAtom(i, 12); +ok = true; +}} +this.tainted[12].or(bsVib); +}, "~N"); +Clazz.defineMethod(c$, "getAtomsFromAtomNumberInFrame", +function(atomNumber){ +var bs = this.vwr.getFrameAtoms(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (this.at[i].getAtomNumber() != atomNumber) bs.clear(i); + +return bs; +}, "~N"); +Clazz.defineMethod(c$, "generateCrystalClass", +function(atomIndex, pt){ +var sym = (atomIndex < 0 || atomIndex >= this.ac ? this.vwr.getOperativeSymmetry() : this.at[atomIndex].getUnitCell()); +var isRandom = (pt != null && Float.isNaN(pt.x)); +var ret = (sym == null ? null : sym.generateCrystalClass(isRandom ? null : pt != null ? pt : this.at[atomIndex])); +return (ret == null ? new JU.Lst() : ret); +}, "~N,JU.P3"); +c$.isDeleted = Clazz.defineMethod(c$, "isDeleted", +function(atom){ +return (atom == null || atom.isDeleted()); +}, "JM.Atom"); +c$.$AtomCollection$AtomSorter$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +Clazz.instantialize(this, arguments);}, JM.AtomCollection, "AtomSorter", null, java.util.Comparator); +Clazz.overrideMethod(c$, "compare", +function(a1, a2){ +return (a1.i > a2.i ? 1 : a1.i < a2.i ? -1 : 0); +}, "JM.Atom,JM.Atom"); +/*eoif4*/})(); +}; +c$.sqrt3_2 = Math.sqrt(3) / 2; +c$.vRef = JU.V3.new3(3.14159, 2.71828, 1.41421); +c$.userSettableValues = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/AtomIteratorWithinModel.js b/config/plugins/visualizations/jmol/static/j2s/JM/AtomIteratorWithinModel.js new file mode 100755 index 000000000000..ffefc5e78fec --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/AtomIteratorWithinModel.js @@ -0,0 +1,120 @@ +Clazz.declarePackage("JM"); +Clazz.load(["J.api.AtomIndexIterator"], "JM.AtomIteratorWithinModel", ["J.atomdata.RadiusData"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cubeIterator = null; +this.bspf = null; +this.threadSafe = false; +this.hemisphereOnly = false; +this.isZeroBased = false; +this.modelIndex = 2147483647; +this.atomIndex = -1; +this.zeroBase = 0; +this.distanceSquared = 0; +this.bsSelected = null; +this.isGreaterOnly = false; +this.checkGreater = false; +this.radiusData = null; +this.vdw1 = 0; +this.isVdw = false; +this.atoms = null; +this.vwr = null; +this.iNext = 0; +Clazz.instantialize(this, arguments);}, JM, "AtomIteratorWithinModel", null, J.api.AtomIndexIterator); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "initialize", +function(bspf, bsSelected, isGreaterOnly, isZeroBased, hemisphereOnly, threadSafe){ +this.bspf = bspf; +this.bsSelected = bsSelected; +this.isGreaterOnly = isGreaterOnly; +this.isZeroBased = isZeroBased; +this.hemisphereOnly = hemisphereOnly; +this.threadSafe = threadSafe; +this.cubeIterator = null; +}, "J.bspt.Bspf,JU.BS,~B,~B,~B,~B"); +Clazz.overrideMethod(c$, "setModel", +function(modelSet, modelIndex, firstModelAtom, atomIndex, center, distance, rd){ +if (this.threadSafe) modelIndex = -1 - modelIndex; +if (modelIndex != this.modelIndex || this.cubeIterator == null) { +this.cubeIterator = this.bspf.getCubeIterator(modelIndex); +this.modelIndex = modelIndex; +}this.zeroBase = (this.isZeroBased ? firstModelAtom : 0); +if (distance == -2147483648) return; +this.atomIndex = (distance < 0 ? -1 : atomIndex); +this.isVdw = (rd != null); +if (this.isVdw) { +this.radiusData = rd; +this.atoms = modelSet.at; +this.vwr = modelSet.vwr; +distance = (rd.factorType === J.atomdata.RadiusData.EnumType.OFFSET ? 5 + rd.value : 5 * rd.value); +this.vdw1 = this.atoms[atomIndex].getVanderwaalsRadiusFloat(this.vwr, rd.vdwType); +}this.checkGreater = (this.isGreaterOnly && atomIndex != 2147483647); +this.setCenter(center, distance); +}, "JM.ModelSet,~N,~N,~N,JU.T3,~N,J.atomdata.RadiusData"); +Clazz.overrideMethod(c$, "setCenter", +function(center, distance){ +this.setCenter2(center, distance); +}, "JU.T3,~N"); +Clazz.defineMethod(c$, "setCenter2", +function(center, distance){ +if (this.cubeIterator == null) return; +this.cubeIterator.initialize(center, distance, this.hemisphereOnly); +this.distanceSquared = distance * distance; +}, "JU.T3,~N"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.hasNext2(); +}); +Clazz.defineMethod(c$, "hasNext2", +function(){ +if (this.atomIndex >= 0) while (this.cubeIterator.hasMoreElements()) { +var a = this.cubeIterator.nextElement(); +if ((this.iNext = a.i) != this.atomIndex && (!this.checkGreater || this.iNext > this.atomIndex) && (this.bsSelected == null || this.bsSelected.get(this.iNext))) { +return true; +}} + else if (this.cubeIterator.hasMoreElements()) { +var a = this.cubeIterator.nextElement(); +this.iNext = a.i; +return true; +}this.iNext = -1; +return false; +}); +Clazz.overrideMethod(c$, "next", +function(){ +return this.iNext - this.zeroBase; +}); +Clazz.overrideMethod(c$, "foundDistance2", +function(){ +return (this.cubeIterator == null ? -1 : this.cubeIterator.foundDistance2()); +}); +Clazz.overrideMethod(c$, "addAtoms", +function(bsResult){ +var iAtom; +while (this.hasNext()) if ((iAtom = this.next()) >= 0) { +var d; +if (this.isVdw) { +d = this.atoms[iAtom].getVanderwaalsRadiusFloat(this.vwr, this.radiusData.vdwType) + this.vdw1; +switch (this.radiusData.factorType) { +case J.atomdata.RadiusData.EnumType.OFFSET: +d += this.radiusData.value * 2; +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +d *= this.radiusData.value; +break; +} +d *= d; +} else { +d = this.distanceSquared; +}if (this.foundDistance2() <= d) bsResult.set(iAtom); +} +}, "JU.BS"); +Clazz.overrideMethod(c$, "release", +function(){ +if (this.cubeIterator != null) { +this.cubeIterator.release(); +this.cubeIterator = null; +}}); +Clazz.overrideMethod(c$, "getPosition", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/AtomIteratorWithinModelSet.js b/config/plugins/visualizations/jmol/static/j2s/JM/AtomIteratorWithinModelSet.js new file mode 100755 index 000000000000..3931b35d3d57 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/AtomIteratorWithinModelSet.js @@ -0,0 +1,32 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.AtomIteratorWithinModel"], "JM.AtomIteratorWithinModelSet", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bsModels = null; +this.center = null; +this.distance = 0; +Clazz.instantialize(this, arguments);}, JM, "AtomIteratorWithinModelSet", JM.AtomIteratorWithinModel); +Clazz.makeConstructor(c$, +function(bsModels){ +Clazz.superConstructor (this, JM.AtomIteratorWithinModelSet, []); +this.bsModels = bsModels; +}, "JU.BS"); +Clazz.overrideMethod(c$, "setCenter", +function(center, distance){ +this.center = center; +this.distance = distance; +this.set(0); +}, "JU.T3,~N"); +Clazz.defineMethod(c$, "set", +function(iModel){ +if ((this.modelIndex = this.bsModels.nextSetBit(iModel)) < 0 || (this.cubeIterator = this.bspf.getCubeIterator(this.modelIndex)) == null) return false; +this.setCenter2(this.center, this.distance); +return true; +}, "~N"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +if (this.hasNext2()) return true; +if (!this.set(this.modelIndex + 1)) return false; +return this.hasNext(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BasePair.js b/config/plugins/visualizations/jmol/static/j2s/JM/BasePair.js new file mode 100755 index 000000000000..221e72533ea6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BasePair.js @@ -0,0 +1,26 @@ +Clazz.declarePackage("JM"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.info = null; +this.g1 = null; +this.g2 = null; +Clazz.instantialize(this, arguments);}, JM, "BasePair", null); +/*LV!1824 unnec constructor*/c$.add = Clazz.defineMethod(c$, "add", +function(info, g1, g2){ +if (g1 == null || g2 == null) return null; +var bp = new JM.BasePair(); +bp.info = info; +(bp.g1 = g1).addBasePair(bp); +(bp.g2 = g2).addBasePair(bp); +return bp; +}, "java.util.Map,JM.NucleicMonomer,JM.NucleicMonomer"); +Clazz.defineMethod(c$, "getPartnerAtom", +function(g){ +return (g === this.g1 ? this.g2 : this.g1).getLeadAtom().i; +}, "JM.NucleicMonomer"); +Clazz.defineMethod(c$, "toString", +function(){ +return this.info.toString(); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BioExt.js b/config/plugins/visualizations/jmol/static/j2s/JM/BioExt.js new file mode 100755 index 000000000000..9680495bdfa5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BioExt.js @@ -0,0 +1,731 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.BioExt", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.P3", "$.PT", "$.Quat", "JM.LabelToken", "JU.BSUtil", "$.Escape", "$.Logger", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.ms = null; +Clazz.instantialize(this, arguments);}, JM, "BioExt", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(vwr, ms){ +this.vwr = vwr; +this.ms = ms; +return this; +}, "JV.Viewer,JM.ModelSet"); +Clazz.defineMethod(c$, "getAllPolymerInfo", +function(bs, fullInfo){ +var modelVector = new JU.Lst(); +var modelCount = this.ms.mc; +var models = this.ms.am; +for (var i = 0; i < modelCount; ++i) if (models[i].isBioModel) { +var m = models[i]; +var modelInfo = new java.util.Hashtable(); +var info = new JU.Lst(); +for (var ip = 0; ip < m.bioPolymerCount; ip++) { +var bp = m.bioPolymers[ip]; +var pInfo = new java.util.Hashtable(); +var mInfo = new JU.Lst(); +var sInfo = null; +var ps; +var psLast = null; +var n = 0; +var ptTemp = new JU.P3(); +for (var im = 0; im < bp.monomerCount; im++) { +if (bs.get(bp.monomers[im].leadAtomIndex)) { +var monomerInfo = bp.monomers[im].getMyInfo(ptTemp); +monomerInfo.put("monomerIndex", Integer.$valueOf(im)); +mInfo.addLast(monomerInfo); +if ((ps = bp.getProteinStructure(im)) != null && ps !== psLast) { +var psInfo = new java.util.Hashtable(); +psLast = ps; +psInfo.put("type", ps.type.getBioStructureTypeName(false)); +var leadAtomIndices = bp.getLeadAtomIndices(); +var iArray = JU.AU.arrayCopyRangeI(leadAtomIndices, ps.monomerIndexFirst, ps.monomerIndexFirst + ps.nRes); +psInfo.put("leadAtomIndices", iArray); +ps.calcAxis(); +if (ps.axisA != null) { +psInfo.put("axisA", ps.axisA); +psInfo.put("axisB", ps.axisB); +psInfo.put("axisUnitVector", ps.axisUnitVector); +}psInfo.put("index", Integer.$valueOf(n++)); +if (sInfo == null) sInfo = new JU.Lst(); +sInfo.addLast(psInfo); +}}} +if (mInfo.size() > 0) { +pInfo.put("sequence", bp.getSequence()); +pInfo.put("monomers", mInfo); +if (sInfo != null) pInfo.put("structures", sInfo); +}if (!pInfo.isEmpty()) info.addLast(pInfo); +} +if (info.size() > 0) { +modelInfo.put("modelIndex", Integer.$valueOf(m.modelIndex)); +modelInfo.put("polymers", info); +modelVector.addLast(modelInfo); +}} +fullInfo.put("models", modelVector); +}, "JU.BS,java.util.Map"); +Clazz.defineMethod(c$, "calculateStraightnessAll", +function(){ +var qtype = this.vwr.getQuaternionFrame(); +var mStep = this.vwr.getInt(553648142); +for (var i = this.ms.mc; --i >= 0; ) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +var ptTemp = new JU.P3(); +for (var p = 0; p < m.bioPolymerCount; p++) this.getPdbData(m.bioPolymers[p], 'S', qtype, mStep, 2, null, null, false, false, false, null, null, null, new JU.BS(), ptTemp); + +} +this.ms.haveStraightness = true; +}); +Clazz.defineMethod(c$, "getPdbData", +function(bp, ctype, qtype, mStep, derivType, bsAtoms, bsSelected, bothEnds, isDraw, addHeader, tokens, pdbATOM, pdbCONECT, bsWritten, ptTemp){ +var calcRamachandranStraightness = (qtype == 'C' || qtype == 'P'); +var isRamachandran = (ctype == 'R' || ctype == 'S' && calcRamachandranStraightness); +if (isRamachandran && !bp.calcPhiPsiAngles()) return; +var isAmino = (bp.type == 1); +var isRelativeAlias = (ctype == 'r'); +var quaternionStraightness = (!isRamachandran && ctype == 'S'); +if (derivType == 2 && isRelativeAlias) ctype = 'w'; +if (quaternionStraightness) derivType = 2; +var useQuaternionStraightness = (ctype == 'S'); +var writeRamachandranStraightness = ("rcpCP".indexOf(qtype) >= 0); +if (JU.Logger.debugging && (quaternionStraightness || calcRamachandranStraightness)) { +JU.Logger.debug("For straightness calculation: useQuaternionStraightness = " + useQuaternionStraightness + " and quaternionFrame = " + qtype); +}if (addHeader && !isDraw) { +pdbATOM.append("REMARK 6 AT GRP CH RESNO "); +switch ((ctype).charCodeAt(0)) { +default: +case 119: +pdbATOM.append("x*10___ y*10___ z*10___ w*10__ "); +break; +case 120: +pdbATOM.append("y*10___ z*10___ w*10___ x*10__ "); +break; +case 121: +pdbATOM.append("z*10___ w*10___ x*10___ y*10__ "); +break; +case 122: +pdbATOM.append("w*10___ x*10___ y*10___ z*10__ "); +break; +case 82: +if (writeRamachandranStraightness) pdbATOM.append("phi____ psi____ theta Straightness"); + else pdbATOM.append("phi____ psi____ omega-180 PartialCharge"); +break; +} +pdbATOM.append(" Sym q0_______ q1_______ q2_______ q3_______"); +pdbATOM.append(" theta_ aaX_______ aaY_______ aaZ_______"); +if (ctype != 'R') pdbATOM.append(" centerX___ centerY___ centerZ___"); +if (qtype == 'n') pdbATOM.append(" NHX_______ NHY_______ NHZ_______"); +pdbATOM.append("\n\n"); +}var factor = (ctype == 'R' ? 1 : 10); +bothEnds = false; +for (var j = 0; j < (bothEnds ? 2 : 1); j++, factor *= -1) for (var i = 0; i < (mStep < 1 ? 1 : mStep); i++) if (bp.hasStructure) this.getData(i, mStep, bp, ctype, qtype, derivType, bsAtoms, bsSelected, isDraw, isRamachandran, calcRamachandranStraightness, useQuaternionStraightness, writeRamachandranStraightness, quaternionStraightness, factor, isAmino, isRelativeAlias, tokens, pdbATOM, pdbCONECT, bsWritten, ptTemp); + + +}, "JM.BioPolymer,~S,~S,~N,~N,JU.BS,JU.BS,~B,~B,~B,~A,JU.OC,JU.SB,JU.BS,JU.P3"); +Clazz.defineMethod(c$, "getData", +function(m0, mStep, p, ctype, qtype, derivType, bsAtoms, bsSelected, isDraw, isRamachandran, calcRamachandranStraightness, useQuaternionStraightness, writeRamachandranStraightness, quaternionStraightness, factor, isAmino, isRelativeAlias, tokens, pdbATOM, pdbCONECT, bsWritten, ptTemp){ +var prefix = (derivType > 0 ? "dq" + (derivType == 2 ? "2" : "") : "q"); +var q; +var aprev = null; +var qprev = null; +var dq = null; +var dqprev = null; +var qref = null; +var atomLast = null; +var x = 0; +var y = 0; +var z = 0; +var w = 0; +var strExtra = ""; +var val1 = NaN; +var val2 = NaN; +var pt = (isDraw ? new JU.P3() : null); +var dm = (mStep <= 1 ? 1 : mStep); +for (var m = m0; m < p.monomerCount; m += dm) { +var monomer = p.monomers[m]; +if (bsAtoms == null || bsAtoms.get(monomer.leadAtomIndex)) { +var a = monomer.getLeadAtom(); +var id = monomer.getUniqueID(); +if (isRamachandran) { +if (ctype == 'S') monomer.setGroupParameter(1111490574, NaN); +x = monomer.getGroupParameter(1111490569); +y = monomer.getGroupParameter(1111490570); +z = monomer.getGroupParameter(1111490568); +if (z < -90) z += 360; +z -= 180; +if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) { +if (bsAtoms != null) bsAtoms.clear(a.i); +continue; +}var angledeg = (writeRamachandranStraightness ? p.calculateRamachandranHelixAngle(m, qtype) : 0); +var straightness = (calcRamachandranStraightness || writeRamachandranStraightness ? JM.BioExt.getStraightness(Math.cos(angledeg / 2 / 180 * 3.141592653589793)) : 0); +if (ctype == 'S') { +monomer.setGroupParameter(1111490574, straightness); +continue; +}if (isDraw) { +if (bsSelected != null && !bsSelected.get(a.getIndex())) continue; +var aa = monomer; +pt.set(-x, x, 0.5); +pdbATOM.append("draw ID \"phi").append(id).append("\" ARROW ARC ").append(JU.Escape.eP(aa.getNitrogenAtom())).append(JU.Escape.eP(a)).append(JU.Escape.eP(aa.getCarbonylCarbonAtom())).append(JU.Escape.eP(pt)).append(" \"phi = ").append(String.valueOf(Math.round(x))).append("\" color ").append(JM.BioExt.qColor[2]).append("\n"); +pt.set(0, y, 0.5); +pdbATOM.append("draw ID \"psi").append(id).append("\" ARROW ARC ").append(JU.Escape.eP(a)).append(JU.Escape.eP(aa.getCarbonylCarbonAtom())).append(JU.Escape.eP(aa.getNitrogenAtom())).append(JU.Escape.eP(pt)).append(" \"psi = ").append(String.valueOf(Math.round(y))).append("\" color ").append(JM.BioExt.qColor[1]).append("\n"); +pdbATOM.append("draw ID \"planeNCC").append(id).append("\" ").append(JU.Escape.eP(aa.getNitrogenAtom())).append(JU.Escape.eP(a)).append(JU.Escape.eP(aa.getCarbonylCarbonAtom())).append(" color ").append(JM.BioExt.qColor[0]).append("\n"); +pdbATOM.append("draw ID \"planeCNC").append(id).append("\" ").append(JU.Escape.eP((p.monomers[m - 1]).getCarbonylCarbonAtom())).append(JU.Escape.eP(aa.getNitrogenAtom())).append(JU.Escape.eP(a)).append(" color ").append(JM.BioExt.qColor[1]).append("\n"); +pdbATOM.append("draw ID \"planeCCN").append(id).append("\" ").append(JU.Escape.eP(a)).append(JU.Escape.eP(aa.getCarbonylCarbonAtom())).append(JU.Escape.eP((p.monomers[m + 1]).getNitrogenAtom())).append(" color ").append(JM.BioExt.qColor[2]).append("\n"); +continue; +}if (Float.isNaN(angledeg)) { +strExtra = ""; +if (writeRamachandranStraightness) continue; +} else { +q = JU.Quat.newVA(JU.P3.new3(1, 0, 0), angledeg); +strExtra = JM.BioExt.getQInfo(q); +if (writeRamachandranStraightness) { +z = angledeg; +w = straightness; +} else { +w = a.getPartialCharge(); +}}} else { +q = monomer.getQuaternion(qtype); +if (q != null) { +q.setRef(qref); +qref = JU.Quat.newQ(q); +}if (derivType == 2) monomer.setGroupParameter(1111490574, NaN); +if (q == null) { +qprev = null; +qref = null; +} else if (derivType > 0) { +var anext = a; +var qnext = q; +if (qprev == null) { +q = null; +dqprev = null; +} else { +if (isRelativeAlias) { +dq = qprev.leftDifference(q); +} else { +dq = q.rightDifference(qprev); +}if (derivType == 1) { +q = dq; +} else if (dqprev == null) { +q = null; +} else { +q = dq.rightDifference(dqprev); +val1 = JM.BioExt.getQuaternionStraightness(id, dqprev, dq); +val2 = JM.BioExt.get3DStraightness(id, dqprev, dq); +(aprev.group).setGroupParameter(1111490574, useQuaternionStraightness ? val1 : val2); +}dqprev = dq; +}aprev = anext; +qprev = qnext; +}if (q == null) { +atomLast = null; +continue; +}switch ((ctype).charCodeAt(0)) { +default: +x = q.q1; +y = q.q2; +z = q.q3; +w = q.q0; +break; +case 120: +x = q.q0; +y = q.q1; +z = q.q2; +w = q.q3; +break; +case 121: +x = q.q3; +y = q.q0; +z = q.q1; +w = q.q2; +break; +case 122: +x = q.q2; +y = q.q3; +z = q.q0; +w = q.q1; +break; +} +var ptCenter = monomer.getQuaternionFrameCenter(qtype); +if (ptCenter == null) ptCenter = new JU.P3(); +if (isDraw) { +if (bsSelected != null && !bsSelected.get(a.getIndex())) continue; +var deg = Clazz.doubleToInt(Math.floor(Math.acos(w) * 360 / 3.141592653589793)); +if (derivType == 0) { +pdbATOM.append(JU.Escape.drawQuat(q, prefix, id, ptCenter, 1)); +if (qtype == 'n' && isAmino) { +var ptH = (monomer).getNitrogenHydrogenPoint(); +if (ptH != null) pdbATOM.append("draw ID \"").append(prefix).append("nh").append(id).append("\" width 0.1 ").append(JU.Escape.eP(ptH)).append("\n"); +}}if (derivType == 1) { +pdbATOM.append(monomer.getHelixData(135176, qtype, mStep)).append("\n"); +continue; +}pt.set(x * 2, y * 2, z * 2); +pdbATOM.append("draw ID \"").append(prefix).append("a").append(id).append("\" VECTOR ").append(JU.Escape.eP(ptCenter)).append(JU.Escape.eP(pt)).append(" \">").append(String.valueOf(deg)).append("\" color ").append(JM.BioExt.qColor[derivType]).append("\n"); +continue; +}strExtra = JM.BioExt.getQInfo(q) + JU.PT.sprintf(" %10.5p %10.5p %10.5p", "p", Clazz.newArray(-1, [ptCenter])); +if (qtype == 'n' && isAmino) { +strExtra += JU.PT.sprintf(" %10.5p %10.5p %10.5p", "p", Clazz.newArray(-1, [(monomer).getNitrogenHydrogenPoint()])); +} else if (derivType == 2 && !Float.isNaN(val1)) { +strExtra += JU.PT.sprintf(" %10.5f %10.5f", "F", Clazz.newArray(-1, [ Clazz.newFloatArray(-1, [val1, val2])])); +}}if (pdbATOM == null) continue; +bsWritten.set((a.group).leadAtomIndex); +pdbATOM.append(JM.LabelToken.formatLabelAtomArray(this.vwr, a, tokens, '\0', null, ptTemp)); +pdbATOM.append(JU.PT.sprintf("%8.2f%8.2f%8.2f %6.3f %2s %s\n", "ssF", Clazz.newArray(-1, [a.getElementSymbolIso(false).toUpperCase(), strExtra, Clazz.newFloatArray(-1, [x * factor, y * factor, z * factor, w * factor])]))); +if (atomLast != null && atomLast.group.getBioPolymerIndexInModel() == a.group.getBioPolymerIndexInModel()) { +pdbCONECT.append("CONECT").append(JU.PT.formatStringI("%5i", "i", atomLast.getAtomNumber())).append(JU.PT.formatStringI("%5i", "i", a.getAtomNumber())).appendC('\n'); +}atomLast = a; +}} +}, "~N,~N,JM.BioPolymer,~S,~S,~N,JU.BS,JU.BS,~B,~B,~B,~B,~B,~B,~N,~B,~B,~A,JU.OC,JU.SB,JU.BS,JU.P3"); +c$.getQInfo = Clazz.defineMethod(c$, "getQInfo", +function(q){ +var axis = q.toAxisAngle4f(); +return JU.PT.sprintf("%10.6f%10.6f%10.6f%10.6f %6.2f %10.5f %10.5f %10.5f", "F", Clazz.newArray(-1, [ Clazz.newFloatArray(-1, [q.q0, q.q1, q.q2, q.q3, (axis.angle * 180 / 3.141592653589793), axis.x, axis.y, axis.z])])); +}, "JU.Quat"); +c$.drawQuat = Clazz.defineMethod(c$, "drawQuat", +function(q, prefix, id, ptCenter, scale){ +var strV = " VECTOR " + JU.Escape.eP(ptCenter) + " "; +if (scale == 0) scale = 1; +return "draw " + prefix + "x" + id + strV + JU.Escape.eP(q.getVectorScaled(0, scale)) + " color red\n" + "draw " + prefix + "y" + id + strV + JU.Escape.eP(q.getVectorScaled(1, scale)) + " color green\n" + "draw " + prefix + "z" + id + strV + JU.Escape.eP(q.getVectorScaled(2, scale)) + " color blue\n"; +}, "JU.Quat,~S,~S,JU.P3,~N"); +c$.get3DStraightness = Clazz.defineMethod(c$, "get3DStraightness", +function(id, dq, dqnext){ +return dq.getNormal().dot(dqnext.getNormal()); +}, "~S,JU.Quat,JU.Quat"); +c$.getQuaternionStraightness = Clazz.defineMethod(c$, "getQuaternionStraightness", +function(id, dq, dqnext){ +return JM.BioExt.getStraightness(dq.dot(dqnext)); +}, "~S,JU.Quat,JU.Quat"); +c$.getStraightness = Clazz.defineMethod(c$, "getStraightness", +function(cosHalfTheta){ +return (1 - 2 * Math.acos(Math.abs(cosHalfTheta)) / 3.141592653589793); +}, "~N"); +Clazz.defineMethod(c$, "getPdbDataM", +function(m, vwr, type, ctype, isDraw, bsSelected, out, tokens, pdbCONECT, bsWritten){ +var bothEnds = false; +var qtype = (ctype != 'R' ? 'r' : type.length > 13 && type.indexOf("ramachandran ") >= 0 ? type.charAt(13) : 'R'); +if (qtype == 'r') qtype = vwr.getQuaternionFrame(); +var mStep = vwr.getInt(553648142); +var derivType = (type.indexOf("diff") < 0 ? 0 : type.indexOf("2") < 0 ? 1 : 2); +if (!isDraw) { +out.append("REMARK 6 Jmol PDB-encoded data: " + type + ";"); +if (ctype != 'R') { +out.append(" quaternionFrame = \"" + qtype + "\""); +bothEnds = true; +}out.append("\nREMARK 6 Jmol Version ").append(JV.Viewer.getJmolVersion()).append("\n"); +if (ctype == 'R') out.append("REMARK 6 Jmol data min = {-180 -180 -180} max = {180 180 180} unScaledXyz = xyz * {1 1 1} + {0 0 0} plotScale = {100 100 100}\n"); + else out.append("REMARK 6 Jmol data min = {-1 -1 -1} max = {1 1 1} unScaledXyz = xyz * {0.1 0.1 0.1} + {0 0 0} plotScale = {100 100 100}\n"); +}var ptTemp = new JU.P3(); +for (var p = 0; p < m.bioPolymerCount; p++) this.getPdbData(m.bioPolymers[p], ctype, qtype, mStep, derivType, m.bsAtoms, bsSelected, bothEnds, isDraw, p == 0, tokens, out, pdbCONECT, bsWritten, ptTemp); + +}, "JM.BioModel,JV.Viewer,~S,~S,~B,JU.BS,JU.OC,~A,JU.SB,JU.BS"); +Clazz.defineMethod(c$, "calculateAllstruts", +function(vwr, ms, bs1, bs2){ +vwr.setModelVisibility(); +ms.makeConnections2(0, 3.4028235E38, 32768, 12291, bs1, bs2, null, false, false, 0, null); +var iAtom = bs1.nextSetBit(0); +if (iAtom < 0) return 0; +var m = ms.am[ms.at[iAtom].mi]; +if (!m.isBioModel) return 0; +var vCA = new JU.Lst(); +var bsCheck; +if (bs1.equals(bs2)) { +bsCheck = bs1; +} else { +bsCheck = JU.BSUtil.copy(bs1); +bsCheck.or(bs2); +}var atoms = ms.at; +bsCheck.and(vwr.getModelUndeletedAtomsBitSet(m.modelIndex)); +for (var i = bsCheck.nextSetBit(0); i >= 0; i = bsCheck.nextSetBit(i + 1)) { +var a = atoms[i]; +if (a.checkVisible() && a.atomID == 2 && a.group.groupID != 5 && atoms[i].group.leadAtomIndex >= 0) vCA.addLast(atoms[i]); +} +if (vCA.size() == 0) return 0; +var struts = JM.BioExt.calculateStruts(ms, bs1, bs2, vCA, vwr.getFloat(570425408), vwr.getInt(553648183), vwr.getBoolean(603979955)); +var mad = Clazz.floatToShort(vwr.getFloat(570425406) * 2000); +for (var i = 0; i < struts.size(); i++) { +var o = struts.get(i); +ms.bondAtoms(o[0], o[1], 32768, mad, null, 0, false, true); +} +return struts.size(); +}, "JV.Viewer,JM.ModelSet,JU.BS,JU.BS"); +c$.calculateStruts = Clazz.defineMethod(c$, "calculateStruts", +function(modelSet, bs1, bs2, vCA, thresh, delta, allowMultiple){ +var vStruts = new JU.Lst(); +var thresh2 = thresh * thresh; +var n = vCA.size(); +var nEndMin = 3; +var bsStruts = new JU.BS(); +var bsNotAvailable = new JU.BS(); +var bsNearbyResidues = new JU.BS(); +var a1 = vCA.get(0); +var a2; +var nBiopolymers = modelSet.getBioPolymerCountInModel(a1.mi); +var biopolymerStartsEnds = Clazz.newIntArray (nBiopolymers, nEndMin * 2, 0); +for (var i = 0; i < n; i++) { +a1 = vCA.get(i); +var polymerIndex = a1.group.getBioPolymerIndexInModel(); +var monomerIndex = a1.group.getMonomerIndex(); +var bpt = monomerIndex; +if (bpt < nEndMin) biopolymerStartsEnds[polymerIndex][bpt] = i + 1; +bpt = (a1.group).getBioPolymerLength() - monomerIndex - 1; +if (bpt < nEndMin) biopolymerStartsEnds[polymerIndex][nEndMin + bpt] = i + 1; +} +var d2 = Clazz.newFloatArray (Clazz.doubleToInt(n * (n - 1) / 2), 0); +for (var i = 0; i < n; i++) { +a1 = vCA.get(i); +for (var j = i + 1; j < n; j++) { +var ipt = JM.BioExt.strutPoint(i, j, n); +a2 = vCA.get(j); +var resno1 = a1.getResno(); +var polymerIndex1 = a1.group.getBioPolymerIndexInModel(); +var resno2 = a2.getResno(); +var polymerIndex2 = a2.group.getBioPolymerIndexInModel(); +if (polymerIndex1 == polymerIndex2 && Math.abs(resno2 - resno1) < delta) bsNearbyResidues.set(ipt); +var d = d2[ipt] = a1.distanceSquared(a2); +if (d >= thresh2) bsNotAvailable.set(ipt); +} +} +for (var t = 5; --t >= 0; ) { +thresh2 = (thresh - t) * (thresh - t); +for (var i = 0; i < n; i++) if (allowMultiple || !bsStruts.get(i)) for (var j = i + 1; j < n; j++) { +var ipt = JM.BioExt.strutPoint(i, j, n); +if (!bsNotAvailable.get(ipt) && !bsNearbyResidues.get(ipt) && (allowMultiple || !bsStruts.get(j)) && d2[ipt] <= thresh2) JM.BioExt.setStrut(i, j, n, vCA, bs1, bs2, vStruts, bsStruts, bsNotAvailable, bsNearbyResidues, delta); +} + +} +for (var b = 0; b < nBiopolymers; b++) { +for (var k = 0; k < nEndMin * 2; k++) { +var i = biopolymerStartsEnds[b][k] - 1; +if (i >= 0 && bsStruts.get(i)) { +for (var j = 0; j < nEndMin; j++) { +var pt = (Clazz.doubleToInt(k / nEndMin)) * nEndMin + j; +if ((i = biopolymerStartsEnds[b][pt] - 1) >= 0) bsStruts.set(i); +biopolymerStartsEnds[b][pt] = -1; +} +}} +if (biopolymerStartsEnds[b][0] == -1 && biopolymerStartsEnds[b][nEndMin] == -1) continue; +var okN = false; +var okC = false; +var iN = 0; +var jN = 0; +var iC = 0; +var jC = 0; +var minN = 3.4028235E38; +var minC = 3.4028235E38; +for (var j = 0; j < n; j++) for (var k = 0; k < nEndMin * 2; k++) { +var i = biopolymerStartsEnds[b][k] - 1; +if (i == -2) { +k = (Clazz.doubleToInt(k / nEndMin) + 1) * nEndMin - 1; +continue; +}if (j == i || i == -1) continue; +var ipt = JM.BioExt.strutPoint(i, j, n); +if (bsNearbyResidues.get(ipt) || d2[ipt] > (k < nEndMin ? minN : minC)) continue; +if (k < nEndMin) { +if (bsNotAvailable.get(ipt)) okN = true; +jN = j; +iN = i; +minN = d2[ipt]; +} else { +if (bsNotAvailable.get(ipt)) okC = true; +jC = j; +iC = i; +minC = d2[ipt]; +}} + +if (okN) JM.BioExt.setStrut(iN, jN, n, vCA, bs1, bs2, vStruts, bsStruts, bsNotAvailable, bsNearbyResidues, delta); +if (okC) JM.BioExt.setStrut(iC, jC, n, vCA, bs1, bs2, vStruts, bsStruts, bsNotAvailable, bsNearbyResidues, delta); +} +return vStruts; +}, "JM.ModelSet,JU.BS,JU.BS,JU.Lst,~N,~N,~B"); +c$.strutPoint = Clazz.defineMethod(c$, "strutPoint", +function(i, j, n){ +return (j < i ? Clazz.doubleToInt(j * (2 * n - j - 1) / 2) + i - j - 1 : Clazz.doubleToInt(i * (2 * n - i - 1) / 2) + j - i - 1); +}, "~N,~N,~N"); +c$.setStrut = Clazz.defineMethod(c$, "setStrut", +function(i, j, n, vCA, bs1, bs2, vStruts, bsStruts, bsNotAvailable, bsNearbyResidues, delta){ +var a1 = vCA.get(i); +var a2 = vCA.get(j); +if (!bs1.get(a1.i) || !bs2.get(a2.i)) return; +vStruts.addLast( Clazz.newArray(-1, [a1, a2])); +bsStruts.set(i); +bsStruts.set(j); +for (var k1 = Math.max(0, i - delta); k1 <= i + delta && k1 < n; k1++) { +for (var k2 = Math.max(0, j - delta); k2 <= j + delta && k2 < n; k2++) { +if (k1 == k2) { +continue; +}var ipt = JM.BioExt.strutPoint(k1, k2, n); +if (!bsNearbyResidues.get(ipt)) { +bsNotAvailable.set(ipt); +}} +} +}, "~N,~N,~N,JU.Lst,JU.BS,JU.BS,JU.Lst,JU.BS,JU.BS,JU.BS,~N"); +Clazz.defineMethod(c$, "mutate", +function(vwr, bs, group, sequence, helixType, phipsi){ +var addH = vwr.getBoolean(603979894); +if (sequence == null) return JM.BioExt.mutateAtom(vwr, bs.nextSetBit(0), group, addH); +var haveHelixType = (helixType != null); +var isCreate = (haveHelixType || phipsi != null); +if (isCreate) { +var isTurn = false; +if (haveHelixType) { +helixType = helixType.toLowerCase(); +isTurn = (helixType.startsWith("turn")); +phipsi = this.getPhiPsiForHelixType(helixType); +if (phipsi == null) return false; +}var bs0 = vwr.getAllAtoms(); +var nseq = sequence.length; +var nres = (haveHelixType && phipsi.length == 2 ? nseq : Math.max((haveHelixType ? 2 : 0) + Clazz.doubleToInt(phipsi.length / 2), nseq)); +var gly = Clazz.newIntArray (nres, 0); +for (var i = 0; i < nres; i++) { +gly[i] = (sequence[i % nseq].equals("GLY") ? 1 : 0); +} +JM.BioExt.createHelix(vwr, nres, gly, phipsi, isTurn); +bs = JU.BSUtil.andNot(vwr.getAllAtoms(), bs0); +}var isFile = (group == null); +if (isFile) group = sequence[0]; +var groups = vwr.ms.getGroups(); +var isOK = false; +for (var i = 0, pt = 0; i < groups.length; i++) { +var g = (groups[i].isProtein() ? groups[i] : null); +if (g == null || !g.isSelected(bs)) continue; +if (!isFile) { +group = sequence[pt++ % sequence.length]; +if (group.equals("UNK") || isCreate && (group.equals("ALA") || group.equals("GLY"))) { +isOK = true; +continue; +}group = "==" + group; +}if (JM.BioExt.mutateAtom(vwr, g.firstAtomIndex, group, addH)) { +isOK = true; +}} +return isOK; +}, "JV.Viewer,JU.BS,~S,~A,~S,~A"); +c$.createHelix = Clazz.defineMethod(c$, "createHelix", +function(vwr, nRes, gly, phipsi, isTurn){ +var script = JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(JM.BioExt.helixScript, "$NRES", "" + nRes), "$PHIPSI", JU.PT.toJSON(null, phipsi)), "$GLY", JU.PT.toJSON(null, gly)), "$ISTURN", "" + isTurn); +try { +if (JU.Logger.debugging) JU.Logger.debug(script); +vwr.eval.runScript(script); +vwr.calculateStructures(vwr.getFrameAtoms(), true, true, -1); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +System.out.println(e); +} else { +throw e; +} +} +}, "JV.Viewer,~N,~A,~A,~B"); +Clazz.defineMethod(c$, "getPhiPsiForHelixType", +function(t){ +t = t.toLowerCase().trim().$replace(' ', '-'); +for (var i = JM.BioExt.alphaTypes.length - 2; i >= 0; i -= 2) { +if (t.equals(JM.BioExt.alphaTypes[i])) return JM.BioExt.alphaTypes[i + 1]; +} +return null; +}, "~S"); +c$.mutateAtom = Clazz.defineMethod(c$, "mutateAtom", +function(vwr, iatom, fileName, addH){ +var ms = vwr.ms; +var iModel = ms.at[iatom].mi; +var m = ms.am[iModel]; +if (ms.isTrajectory(iModel)) return false; +var info = vwr.fm.getFileInfo(); +var g = ms.at[iatom].group; +if (!(Clazz.instanceOf(g,"JM.AminoMonomer"))) return false; +(m).isMutated = true; +var res0 = g; +var ac = ms.ac; +var bsRes0 = new JU.BS(); +res0.setAtomBits(bsRes0); +bsRes0.and(vwr.getModelUndeletedAtomsBitSet(iModel)); +var backbone = JM.BioExt.getMutationBackbone(res0, null); +fileName = JU.PT.esc(fileName); +var script = JU.PT.rep(JU.PT.rep(JM.BioExt.mutateScript, "$RES0", JU.BS.escape(bsRes0, '(', ')')), "$FNAME", fileName); +try { +if (JU.Logger.debugging) JU.Logger.debug(script); +vwr.eval.runScript(script); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +System.out.println(e); +} else { +throw e; +} +} +ms = vwr.ms; +if (ms.ac == ac) return false; +m = ms.am[iModel]; +var sb = m.loadScript; +var s = JU.PT.rep(sb.toString(), "load mutate ", "mutate ({" + iatom + "})"); +sb.setLength(0); +sb.append(s); +var bs = vwr.getModelUndeletedAtomsBitSet(iModel); +var ia = bs.length() - 1; +if (ms.at[ia] == null) { +System.out.println("BioExt fail "); +return false; +}g = ms.at[ia].group; +if (g !== ms.at[ac + 1].group || !(Clazz.instanceOf(g,"JM.AminoMonomer"))) { +var bsAtoms = new JU.BS(); +g.setAtomBits(bsAtoms); +vwr.deleteAtoms(bsAtoms, false); +return false; +}var res1 = g; +JM.BioExt.getMutationBackbone(res1, backbone); +JM.BioExt.replaceMutatedMonomer(vwr, res0, res1, addH); +vwr.fm.setFileInfo(info); +return true; +}, "JV.Viewer,~N,~S,~B"); +c$.replaceMutatedMonomer = Clazz.defineMethod(c$, "replaceMutatedMonomer", +function(vwr, res0, res1, addH){ +res1.setResno(res0.getResno()); +res1.monomerIndex = res0.monomerIndex; +res1.seqcode = res0.seqcode; +res1.chain.groupCount = 0; +res1.chain = res0.chain; +res1.chain.model.groupCount = -1; +res1.proteinStructure = res0.proteinStructure; +vwr.shm.replaceGroup(res0, res1); +var groups = res0.chain.groups; +for (var i = groups.length; --i >= 0; ) if (groups[i] === res0) { +groups[i] = res1; +break; +} +res1.bioPolymer = res0.bioPolymer; +if (res1.bioPolymer != null) { +var m = res1.bioPolymer.monomers; +for (var j = m.length; --j >= 0; ) if (m[j] === res0) { +m[j] = res1; +break; +} +}res1.bioPolymer.recalculateLeadMidpointsAndWingVectors(); +if (addH) { +JM.BioExt.fixHydrogens(vwr, res1); +}}, "JV.Viewer,JM.AminoMonomer,JM.AminoMonomer,~B"); +c$.fixHydrogens = Clazz.defineMethod(c$, "fixHydrogens", +function(vwr, res1){ +var a = res1.getNitrogenAtom(); +switch (a.getBondCount() * 10 + a.getCovalentHydrogenCount()) { +case 32: +a.setFormalCharge(1); +var p = vwr.getAdditionalHydrogens(JU.BSUtil.newAndSetBit(a.i), null, 4096); +if (p.length == 1) { +var vConnections = new JU.Lst(); +vConnections.addLast(a); +var b = vwr.ms.addAtom(a.mi, a.group, 1, "H3", null, 0, a.getSeqID(), 0, p[0], NaN, null, 0, 0, 1, 0, null, a.isHetero(), 0, null, NaN); +vwr.ms.bondAtoms(a, b, 1, vwr.ms.getDefaultMadFromOrder(1), null, 0, true, false); +b.setMadAtom(vwr, vwr.rd); +}break; +case 3: +break; +} +}, "JV.Viewer,JM.AminoMonomer"); +c$.getMutationBackbone = Clazz.defineMethod(c$, "getMutationBackbone", +function(res, backbone){ +var b = Clazz.newArray(-1, [res.getCarbonylCarbonAtom(), res.getCarbonylOxygenAtom(), res.getLeadAtom(), res.getNitrogenAtom(), res.getExplicitNH()]); +if (backbone == null) { +if (b[3].getCovalentHydrogenCount() > 1) b[4] = null; +} else { +for (var i = 0; i < 5; i++) { +var a0 = backbone[i]; +var a1 = b[i]; +if (a0 != null && a1 != null) a1.setT(a0); +} +}return b; +}, "JM.AminoMonomer,~A"); +Clazz.defineMethod(c$, "getFullPDBHeader", +function(auxiliaryInfo){ +var info = this.vwr.getCurrentFileAsString("biomodel"); +var ichMin = info.length; +for (var i = JM.BioExt.pdbRecords.length; --i >= 0; ) { +var ichFound; +var strRecord = JM.BioExt.pdbRecords[i]; +switch (ichFound = (info.startsWith(strRecord) ? 0 : info.indexOf("\n" + strRecord))) { +case -1: +continue; +case 0: +auxiliaryInfo.put("fileHeader", ""); +return ""; +default: +if (ichFound < ichMin) ichMin = ++ichFound; +} +} +info = info.substring(0, ichMin); +auxiliaryInfo.put("fileHeader", info); +return info; +}, "java.util.Map"); +Clazz.defineMethod(c$, "getAminoAcidValenceAndCharge", +function(res, name, ret){ +var valence = ret[4]; +ret[4] = 0; +if (res == null || res.length == 0 || res.length > 3 || name.equals("CA") || name.equals("CB")) return false; +var ch0 = name.charAt(0); +var ch1 = (name.length == 1 ? '\0' : name.charAt(1)); +var isSp2 = false; +var bondCount = ret[3]; +switch (res.length) { +case 3: +if (name.length == 1) { +switch ((ch0).charCodeAt(0)) { +case 78: +if (bondCount > 1) return false; +ret[1] = 1; +break; +case 79: +if (valence == 1) { +return true; +}isSp2 = ("HOH;DOD;WAT".indexOf(res) < 0); +break; +default: +isSp2 = true; +} +} else { +var id = res + ch0; +isSp2 = ("ARGN;ASNN;ASNO;ASPO;GLNN;GLNO;GLUO;HISN;HISC;PHECTRPC;TRPN;TYRC".indexOf(id) >= 0); +if ("LYSN".indexOf(id) >= 0) { +ret[1] = 1; +} else if (ch0 == 'O' && ch1 == 'X') { +ret[1] = -1; +}}break; +case 1: +case 2: +if (name.length > 2 && name.charAt(2) == '\'') return false; +switch ((ch0).charCodeAt(0)) { +case 67: +if (ch1 == '7') return false; +break; +case 78: +switch ((ch1).charCodeAt(0)) { +case 49: +case 51: +if ("A3;A1;C3;G3;I3".indexOf("" + res.charAt(res.length - 1) + ch1) >= 0) ret[0]--; +break; +case 55: +ret[0]--; +break; +} +break; +} +isSp2 = true; +} +if (isSp2) { +ret[4] = ("ARGNE;ARGNH1;ASNNH2;GLNNE2;TRPNE1;HISNE2".indexOf(res + name) >= 0 ? 0 : 1); +switch ((ch0).charCodeAt(0)) { +case 78: +ret[2] = 2; +if (valence == 2 && bondCount == 1) ret[4]++; +break; +case 67: +ret[2] = 2; +ret[0]--; +break; +case 79: +if (valence == 2 && bondCount == 1) ret[4]--; +ret[0]--; +break; +} +}return true; +}, "~S,~S,~A"); +c$.qColor = Clazz.newArray(-1, ["yellow", "orange", "purple"]); +c$.helixScript = "var nRes = $NRES; var a = $PHIPSI; var isTurn = $ISTURN;var gly=$GLY\nvar phi = a[1];\nvar psi = a[2];\nif (nRes == 0) nRes = 10;\nvar isRandomPhi = (phi == 999)\nvar isRandomPsi = (psi == 999)\nvar a0 = {*};\nvar pdbadd = pdbAddHydrogens;pdbAddHydrogens = false\ndata \"append mydata\"\nATOM 1 N ALA 0 -0.499 1.323 0.000 1.00 13.99 N \nATOM 2 CA ALA 0 0.000 0.000 0.000 1.00 20.10 C \nATOM 3 C ALA 0 1.461 0.000 0.000 1.00 17.07 C \nATOM 4 O ALA 0 2.110 -1.123 0.000 1.00 17.78 O \nATOM 5 CB ALA 0 -0.582 -0.697 -1.291 1.00 13.05 C \nATOM 6 OXT ALA 0 2.046 1.197 0.000 1.00 13.05 O \nend \"append mydata\"\nset appendnew false\ndata \"mydata\"\nATOM 0001 N ALA 0 -0.499 1.323 0.000 1.00 13.99 N \nATOM 0002 CA ALA 0 0.000 0.000 0.000 1.00 20.10 C \nATOM 0003 C ALA 0 1.461 0.000 0.000 1.00 17.07 C \nATOM 0004 O ALA 0 2.110 -1.123 0.000 1.00 17.78 O \nATOM 0005 OXT ALA 0 2.046 1.197 0.000 1.00 13.05 O \nATOM 0006 CB ALA 0 -0.582 -0.697 -1.291 1.00 13.05 C \nend \"mydata\"\nvar C2 = null;\nvar apt = -2\nvar nangle = a.length\nfor (var i = 1; i <= nRes; i++) {\n if (isTurn && (i == 2 || i == nRes))apt -= 2\n apt = (apt + 2)%nangle\n phi = a[apt + 1]\n psi = a[apt + 2]\n if (isRandomPhi){\n phi = random(360) - 180\n }\n if (isRandomPsi){\n psi = random(360) - 180\n }\n select !a0;\n rotateselected molecular {0 0 0} {0 0 1} -69\n var C = (C2 ? C2 : {!a0 & *.C}[0]);\n translateselected @{-C.xyz}\n rotateselected molecular {0 0 0} {0 0 1} 9\n translateselected {-1.461 0 0}\n rotateselected molecular {0 0 0} {0 0 1} -9\n var a1 = {*};\n var sdata = data(\"mydata\")\n sdata = sdata.replace(\' 0 \',(\' \'+i)[-2][0] + \' \')\n if (gly[((i-1)%nRes) + 1]) { sdata = sdata.replace(\'ALA\',\'GLY\').split(\'ATOM 0006\')[1]}\n var n = a1.size\n sdata = sdata.replace(\'0001\',(\' \'+(n+1))[-3][0])\n sdata = sdata.replace(\'0002\',(\' \'+(n+2))[-3][0])\n sdata = sdata.replace(\'0003\',(\' \'+(n+3))[-3][0])\n sdata = sdata.replace(\'0004\',(\' \'+(n+4))[-3][0])\n sdata = sdata.replace(\'0005\',(\' \'+(n+5))[-3][0])\n sdata = sdata.replace(\'0006\',(\' \'+(n+6))[-3][0])\n data \"append @sdata\"\n var N = {!a1 && *.N}[0]\n connect @N @C\n select !a1\n translateselected @{-N.xyz}\n C2 = {!a1 && *.C}[0]\n var CA = {!a1 && *.CA}[0]\n select @{within(\'branch\',C2,CA)}\n rotateSelected @C2 @CA @psi\n select @{within(\'branch\',CA,N)}\n rotateSelected @CA @N @{180 + phi}\n}\n var xt = {*.OXT}[1][-1];\n delete 0 or *.HXT or xt;\n pdbAddHydrogens = pdbadd;\n select !a0;var a=-{selected}.xyz;\n translateSelected @a\n var pdbdata = data(!a0, \'PDB\');\n if (a0) {\n delete !a0;\n data \"append model @pdbdata\";\n set appendnew true\n } else {\n data \"model @pdbdata\";\n }\n var vr = {resno=2}[0]\n var v = helix(within(group,vr),\'axis\')\n var vrot = cross(v, {0 0 1})\n rotateselected molecular {0 0 0} @vrot @{angle(v, {0 0 0}, {0 0 1})}\n set appendnew true\n pdbSequential = ispdbseq;\n"; +c$.alphaTypes = Clazz.newArray(-1, ["alpha", Clazz.newFloatArray(-1, [-65, -40]), "3-10", Clazz.newFloatArray(-1, [-74, -4]), "pi", Clazz.newFloatArray(-1, [-57.1, -69.7]), "alpha-l", Clazz.newFloatArray(-1, [57.1, 4]), "helix-ii", Clazz.newFloatArray(-1, [-79, 150]), "collagen", Clazz.newFloatArray(-1, [-51, 153]), "beta", Clazz.newFloatArray(-1, [-140, 130]), "beta-120", Clazz.newFloatArray(-1, [-120, 120]), "beta-135", Clazz.newFloatArray(-1, [-135, 135]), "extended", Clazz.newFloatArray(-1, [180, 180]), "turn-i", Clazz.newFloatArray(-1, [-60, -30, -90, 0]), "turn-ii", Clazz.newFloatArray(-1, [-60, 120, 80, 0]), "turn-iii", Clazz.newFloatArray(-1, [-60, -30, -60, -30]), "turn-i'", Clazz.newFloatArray(-1, [60, 30, 90, 0]), "turn-ii'", Clazz.newFloatArray(-1, [60, -120, -80, 0]), "turn-iii'", Clazz.newFloatArray(-1, [60, 30, 60, 30])]); +c$.mutateScript = "try{\n var a0 = {*}\n var res0 = $RES0\n load mutate $FNAME\n var res1 = {!a0};var r1 = res1[1];var r0 = res1[0]\n if ({r1 & within(group, r0)}){\n var haveHs = ({_H & connected(res0)} != 0)\n var rh = {_H} & res1;\n if (!haveHs) {delete rh; res1 = res1 & !rh}\n var sm = \'[*.N][*.CA][*.C][*.O]\'\n var keyatoms = res1.find(sm)\n var x = compare(res1,res0,sm,\'BONDS\')\n if(x){\n var allN = {*.N};var allCA = {*.cA};var allC = {*.C}; var allO = {*.O}; var allH = {*.H}\n print \'mutating \' + res0[1].label(\'%n%r\') + \' to \' + $FNAME.trim(\'=\')\n rotate branch @x\n; compare @res1 @res0 SMARTS \'[*.N][*.CA][*.C]\' rotate translate 0\n var c = {!res0 & connected(res0)}\n var N2 = {allN & c}\n var C0 = {allC & c}\n {allN & res1}.xyz = {allN & res0}.xyz\n {allCA & res1}.xyz = {allCA & res0}.xyz\n {allC & res1}.xyz = {allC & res0}.xyz\n if (N2) {allO & res1}.xyz = {allO & res0}.xyz\n var NH = {_H & res0 && connected(allN)}\n var angleH = ({*.H and res0} ? angle({allC and res0},{allCA and res0},{allN and res0},NH) : 1000)\n delete res0\n if (N2) {\n delete (*.OXT,*.HXT) and res1\n connect {N2} {keyatoms & *.C}\n } else {\n delete (*.HXT) and res1\n {*.OXT & res1}.formalCharge = -1\n }\n var N1 = {allN & res1}\n var H1 = {allH and res1}\n var NH = {H1 & connected(N1)}\n if (C0) {\n switch (0 + NH) {\n case 0:\n break\n case 1:\n delete H1\n break\n default:\n var CA1 = {allCA & res1}\n x = angle({allC and res1},CA1,N1,NH)\n rotate branch @CA1 @N1 @{angleH-x}\n delete *.H2 and res1\n delete *.H3 and res1\n break\n }\n connect {C0} {keyatoms & allN}\n }\n }\n }\n}catch(e){print e}\n"; +c$.pdbRecords = Clazz.newArray(-1, ["ATOM ", "MODEL ", "HETATM"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BioModel.js b/config/plugins/visualizations/jmol/static/j2s/JM/BioModel.js new file mode 100755 index 000000000000..66ad2184da34 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BioModel.js @@ -0,0 +1,301 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Model"], "JM.BioModel", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.SB", "J.api.Interface", "JU.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.bioPolymerCount = 0; +this.bioPolymers = null; +this.isMutated = false; +this.defaultStructure = null; +Clazz.instantialize(this, arguments);}, JM, "BioModel", JM.Model); +Clazz.defineMethod(c$, "setBioModel", +function(modelSet, modelIndex, trajectoryBaseIndex, jmolData, properties, auxiliaryInfo){ +this.setupArrays(); +this.vwr = modelSet.vwr; +this.set(modelSet, modelIndex, trajectoryBaseIndex, jmolData, properties, auxiliaryInfo); +this.isBioModel = true; +this.vwr.getJBR().getBioModelSet(modelSet); +this.clearBioPolymers(); +modelSet.am[modelIndex] = this; +this.pdbID = auxiliaryInfo.get("name"); +return this; +}, "JM.ModelSet,~N,~N,~S,java.util.Properties,java.util.Map"); +Clazz.defineMethod(c$, "addBioPolymer", +function(polymer){ +if (this.bioPolymers.length == 0) this.clearBioPolymers(); +if (this.bioPolymerCount == this.bioPolymers.length) this.bioPolymers = JU.AU.doubleLength(this.bioPolymers); +polymer.bioPolymerIndexInModel = this.bioPolymerCount; +this.bioPolymers[this.bioPolymerCount++] = polymer; +return polymer.monomerCount; +}, "JM.BioPolymer"); +Clazz.defineMethod(c$, "addSecondaryStructure", +function(type, structureID, serialID, strandCount, startChainID, startSeqcode, endChainID, endSeqcode, istart, iend, bsAssigned){ +for (var i = this.bioPolymerCount; --i >= 0; ) if (Clazz.instanceOf(this.bioPolymers[i],"JM.AlphaPolymer")) (this.bioPolymers[i]).addStructure(type, structureID, serialID, strandCount, startChainID, startSeqcode, endChainID, endSeqcode, istart, iend, bsAssigned); + +}, "J.c.STR,~S,~S,~N,~N,~N,~N,~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "addStructureByBS", +function(count, dsspType, type, bs){ +for (var i = this.bioPolymerCount; --i >= 0; ) { +var b = this.bioPolymers[i]; +if (Clazz.instanceOf(b,"JM.AlphaPolymer")) count = (this.bioPolymers[i]).setStructureBS(++count, dsspType, type, bs, true); +} +}, "~N,~N,J.c.STR,JU.BS"); +Clazz.defineMethod(c$, "calculateDssx", +function(vHBonds, doReport, dsspIgnoreHydrogen, setStructure, version){ +var haveProt = false; +var haveNucl = false; +for (var i = 0; i < this.bioPolymerCount && !(haveProt && haveNucl); i++) { +if (this.bioPolymers[i].isNucleic()) haveNucl = true; + else if (Clazz.instanceOf(this.bioPolymers[i],"JM.AminoPolymer")) haveProt = true; +} +var s = ""; +if (haveProt) s += (J.api.Interface.getOption("dssx.DSSP", this.vwr, "ms")).calculateDssp(this.bioPolymers, this.bioPolymerCount, vHBonds, doReport, dsspIgnoreHydrogen, setStructure, version); +if (haveNucl && this.auxiliaryInfo.containsKey("dssr") && vHBonds != null) s += this.vwr.getAnnotationParser(true).getHBonds(this.ms, this.modelIndex, vHBonds, doReport); +return s; +}, "JU.Lst,~B,~B,~B,~N"); +Clazz.defineMethod(c$, "calculateStructures", +function(asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version){ +if (this.bioPolymerCount == 0 || !setStructure && !asDSSP) return ""; +this.ms.proteinStructureTainted = this.structureTainted = true; +if (setStructure) for (var i = this.bioPolymerCount; --i >= 0; ) if (!asDSSP || this.bioPolymers[i].monomers[0].getNitrogenAtom() != null) this.bioPolymers[i].clearStructures(); + +if (!asDSSP || includeAlpha) for (var i = this.bioPolymerCount; --i >= 0; ) if (Clazz.instanceOf(this.bioPolymers[i],"JM.AlphaPolymer")) (this.bioPolymers[i]).calculateStructures(includeAlpha); + +return (asDSSP ? this.calculateDssx(null, doReport, dsspIgnoreHydrogen, setStructure, version) : ""); +}, "~B,~B,~B,~B,~B,~N"); +Clazz.defineMethod(c$, "clearBioPolymers", +function(){ +this.bioPolymers = new Array(8); +this.bioPolymerCount = 0; +}); +Clazz.overrideMethod(c$, "fixIndices", +function(modelIndex, nAtomsDeleted, bsDeleted){ +this.fixIndicesM(modelIndex, nAtomsDeleted, bsDeleted); +this.recalculateLeadMidpointsAndWingVectors(); +}, "~N,~N,JU.BS"); +Clazz.overrideMethod(c$, "freeze", +function(){ +this.freezeM(); +this.bioPolymers = JU.AU.arrayCopyObject(this.bioPolymers, this.bioPolymerCount); +return true; +}); +Clazz.defineMethod(c$, "getBioBranches", +function(biobranches){ +var bsBranch; +for (var j = 0; j < this.bioPolymerCount; j++) { +bsBranch = new JU.BS(); +this.bioPolymers[j].getRange(bsBranch, this.isMutated); +var iAtom = bsBranch.nextSetBit(0); +if (iAtom >= 0) { +if (biobranches == null) biobranches = new JU.Lst(); +biobranches.addLast(bsBranch); +}} +return biobranches; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getBioPolymerCount", +function(){ +return this.bioPolymerCount; +}); +Clazz.defineMethod(c$, "getCachedAnnotationMap", +function(key, ann){ +var cache = (this.dssrCache == null && ann != null ? this.dssrCache = new java.util.Hashtable() : this.dssrCache); +if (cache == null) return null; +var annotv = cache.get(key); +if (annotv == null && ann != null) { +annotv = (Clazz.instanceOf(ann,"JS.SV") || Clazz.instanceOf(ann,"java.util.Hashtable") ? ann : this.vwr.parseJSONMap(ann)); +cache.put(key, annotv); +}return (Clazz.instanceOf(annotv,"JS.SV") || Clazz.instanceOf(annotv,"java.util.Hashtable") ? annotv : null); +}, "~S,~O"); +Clazz.defineMethod(c$, "getConformation", +function(conformationIndex0, doSet, bsAtoms, bsRet){ +var isConfig0 = (conformationIndex0 == 0); +if (this.altLocCount == 0) { +if (isConfig0) bsRet.or(bsAtoms); +return; +}var isFirst = (conformationIndex0 <= 0); +var atoms = this.ms.at; +var isSpace = (conformationIndex0 == -32); +var thisAltLoc = (isFirst && !isSpace ? String.fromCharCode(-conformationIndex0) : '\0'); +if (isFirst) { +var lastChain = -2147483648; +var lastIns = '\u0000'; +var lastRes = -2147483648; +var map = new java.util.Hashtable(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var atom = atoms[i]; +var chain = atom.getChainID(); +var res = atom.getResno(); +var ins = atom.getInsertionCode(); +if (res != lastRes || ins != lastIns || chain != lastChain) { +lastChain = chain; +lastRes = res; +lastIns = ins; +map.clear(); +}var name = atom.getAtomName(); +var locs = map.get(name); +if (locs == null) map.put(name, locs = Clazz.newIntArray (1, 0)); +var i0 = locs[0] - 1; +if (i0 < 0) { +if (i0 == -2) { +bsAtoms.clear(i); +continue; +}if (isSpace) { +if (atom.altloc != '\0') { +bsAtoms.clear(i); +}} else { +locs[0] = i + 1; +}continue; +}if (isConfig0) { +bsAtoms.clear(i); +locs[0] = -1; +} else if (atom.altloc == thisAltLoc) { +locs[0] = -1; +} else { +i0 = i; +}bsAtoms.clear(i0); +} +} else { +conformationIndex0--; +var g = null; +var ch = '\u0000'; +var conformationIndex = conformationIndex0; +var bsFound = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var atom = atoms[i]; +var altloc = atom.altloc; +if (altloc == '\0') continue; +if (atom.group !== g) { +g = atom.group; +ch = '\0'; +conformationIndex = conformationIndex0; +bsFound.clearAll(); +}if (conformationIndex >= 0 && altloc != ch && !bsFound.get(altloc.charCodeAt(0))) { +ch = altloc; +conformationIndex--; +bsFound.set(altloc.charCodeAt(0)); +}if (conformationIndex >= 0 || altloc != ch) bsAtoms.clear(i); +} +}if (bsAtoms.nextSetBit(0) >= 0) { +bsRet.or(bsAtoms); +if (doSet) for (var j = this.bioPolymerCount; --j >= 0; ) this.bioPolymers[j].setConformation(bsAtoms); + +}}, "~N,~B,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getDefaultLargePDBRendering", +function(sb, maxAtoms){ +var bs = new JU.BS(); +if (this.getBondCount() == 0) bs = this.bsAtoms; +if (bs !== this.bsAtoms) for (var i = 0; i < this.bioPolymerCount; i++) this.bioPolymers[i].getRange(bs, this.isMutated); + +if (bs.nextSetBit(0) < 0) return; +var bs2 = new JU.BS(); +if (bs === this.bsAtoms) { +bs2 = bs; +} else { +for (var i = 0; i < this.bioPolymerCount; i++) if (this.bioPolymers[i].getType() == 0) this.bioPolymers[i].getRange(bs2, this.isMutated); + +}if (bs2.nextSetBit(0) >= 0) sb.append("select ").append(JU.Escape.eBS(bs2)).append(";backbone only;"); +if (this.act <= maxAtoms) return; +sb.append("select ").append(JU.Escape.eBS(bs)).append(" & connected; wireframe only;"); +if (bs !== this.bsAtoms) { +bs2.clearAll(); +bs2.or(this.bsAtoms); +bs2.andNot(bs); +if (bs2.nextSetBit(0) >= 0) sb.append("select " + JU.Escape.eBS(bs2) + " & !connected;stars 0.5;spacefill off;"); +}}, "JU.SB,~N"); +Clazz.defineMethod(c$, "getFullPDBHeader", +function(){ +if (this.modelIndex < 0) return ""; +var info = this.auxiliaryInfo.get("fileHeader"); +if (info != null) return info; +return this.ms.bioModelset.getBioExt().getFullPDBHeader(this.auxiliaryInfo); +}); +Clazz.defineMethod(c$, "getPdbData", +function(type, ctype, isDraw, bsSelected, out, tokens, pdbCONECT, bsWritten){ +this.ms.bioModelset.getBioExt().getPdbDataM(this, this.vwr, type, ctype, isDraw, bsSelected, out, tokens, pdbCONECT, bsWritten); +}, "~S,~S,~B,JU.BS,JU.OC,~A,JU.SB,JU.BS"); +Clazz.defineMethod(c$, "getRasmolHydrogenBonds", +function(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, version){ +var doAdd = (vHBonds == null); +if (doAdd) vHBonds = new JU.Lst(); +if (nMax < 0) nMax = 2147483647; +var asDSSX = (bsB == null); +var bp; +var bp1; +if (asDSSX && this.bioPolymerCount > 0) { +this.calculateDssx(vHBonds, false, dsspIgnoreHydrogens, false, version); +} else { +for (var i = this.bioPolymerCount; --i >= 0; ) { +bp = this.bioPolymers[i]; +if (bp.monomerCount == 0) continue; +var type = bp.getType(); +var isRNA = false; +switch (type) { +case 1: +if (nucleicOnly) continue; +bp.calcRasmolHydrogenBonds(null, bsA, bsB, vHBonds, nMax, null, true, false); +break; +case 2: +isRNA = bp.monomers[0].isRna(); +break; +default: +continue; +} +for (var j = this.bioPolymerCount; --j >= 0; ) { +if ((bp1 = this.bioPolymers[j]) != null && (isRNA || i != j) && type == bp1.getType()) { +bp1.calcRasmolHydrogenBonds(bp, bsA, bsB, vHBonds, nMax, null, true, false); +}} +} +}if (vHBonds.size() == 0 || !doAdd) return; +this.hasRasmolHBonds = true; +for (var i = 0; i < vHBonds.size(); i++) { +var bond = vHBonds.get(i); +var atom1 = bond.atom1; +var atom2 = bond.atom2; +if (atom1.isBonded(atom2)) continue; +var index = this.ms.addHBond(atom1, atom2, bond.order, bond.getEnergy()); +if (bsHBonds != null) bsHBonds.set(index); +} +}, "JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS,~N"); +Clazz.defineMethod(c$, "getUnitID", +function(atom, flags){ +var sb = new JU.SB(); +var m = atom.group; +var noTrim = ((flags & 16) != 16); +var ch = ((flags & 8) == 8 ? m.getInsertionCode() : '\0'); +var isAll = (ch != '\0'); +if ((flags & 1) == 1 && (this.pdbID != null)) sb.append(this.pdbID); +sb.append("|").appendO(this.ms.getInfo(this.modelIndex, "modelNumber")).append("|").append(this.vwr.getChainIDStr(m.chain.chainID)).append("|").append(m.getGroup3()).append("|").appendI(m.getResno()); +if ((flags & 4) == 4) { +sb.append("|").append(atom.getAtomName()); +if (atom.altloc != '\0') sb.append("|").appendC(atom.altloc); + else if (noTrim || isAll) sb.append("|"); +} else if (noTrim || isAll) { +sb.append("||"); +}if (isAll) sb.append("|").appendC(ch); + else if (noTrim) sb.append("|"); +if (noTrim) sb.append("|"); +return sb.toString(); +}, "JM.Atom,~N"); +Clazz.defineMethod(c$, "recalculateLeadMidpointsAndWingVectors", +function(){ +for (var ip = 0; ip < this.bioPolymerCount; ip++) this.bioPolymers[ip].recalculateLeadMidpointsAndWingVectors(); + +}); +Clazz.defineMethod(c$, "resetRasmolBonds", +function(bs, dsspVersion){ +var bsDelete = new JU.BS(); +this.hasRasmolHBonds = false; +var am = this.ms.am; +var bo = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bo[i]; +if ((bond.order & 28672) != 0 && am[bond.atom1.mi].trajectoryBaseIndex == this.modelIndex) bsDelete.set(i); +} +if (bsDelete.nextSetBit(0) >= 0) this.ms.deleteBonds(bsDelete, false); +this.getRasmolHydrogenBonds(bs, bs, null, false, 2147483647, false, null, dsspVersion); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "getAtomicDSSRData", +function(dssrData, dataType){ +if (this.auxiliaryInfo.containsKey("dssr")) this.vwr.getAnnotationParser(true).getAtomicDSSRData(this.ms, this.modelIndex, dssrData, dataType); +}, "~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BioModelSet.js b/config/plugins/visualizations/jmol/static/j2s/JM/BioModelSet.js new file mode 100755 index 000000000000..c17e769f00c7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BioModelSet.js @@ -0,0 +1,659 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.BioModelSet", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.PT", "$.SB", "J.api.Interface", "J.c.STR", "JM.Group", "JM.BioResolver", "JS.T", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.ms = null; +this.ext = null; +this.unitIdSets = null; +Clazz.instantialize(this, arguments);}, JM, "BioModelSet", null); +Clazz.defineMethod(c$, "getBioExt", +function(){ +return (this.ext == null ? (this.ext = (J.api.Interface.getInterface("JM.BioExt", this.vwr, "script"))).set(this.vwr, this.vwr.ms) : this.ext); +}); +Clazz.defineMethod(c$, "set", +function(vwr, ms){ +this.vwr = vwr; +this.ms = ms; +this.unitIdSets = null; +if (this.ext != null) this.ext.set(vwr, ms); +return this; +}, "JV.Viewer,JM.ModelSet"); +Clazz.defineMethod(c$, "calcAllRasmolHydrogenBonds", +function(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, dsspVersion){ +var am = this.ms.am; +if (vHBonds == null) { +var bsAtoms = bsA; +if (bsB != null && !bsA.equals(bsB)) (bsAtoms = JU.BSUtil.copy(bsA)).or(bsB); +var bsDelete = new JU.BS(); +var bsOK = new JU.BS(); +var models = this.ms.am; +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if ((bond.order & 28672) == 0) continue; +if (bsAtoms.get(bond.atom1.i)) bsDelete.set(i); + else bsOK.set(models[bond.atom1.mi].trajectoryBaseIndex); +} +for (var i = this.ms.mc; --i >= 0; ) if (models[i].isBioModel) models[i].hasRasmolHBonds = bsOK.get(i); + +if (bsDelete.nextSetBit(0) >= 0) this.ms.deleteBonds(bsDelete, false); +}for (var i = this.ms.mc; --i >= 0; ) if (am[i].isBioModel && !this.ms.isTrajectorySubFrame(i)) (am[i]).getRasmolHydrogenBonds(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, dsspVersion); + +}, "JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS,~N"); +Clazz.defineMethod(c$, "calcSelectedMonomersCount", +function(){ +var bsSelected = this.vwr.bsA(); +for (var i = this.ms.mc; --i >= 0; ) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +for (var j = m.bioPolymerCount; --j >= 0; ) m.bioPolymers[j].calcSelectedMonomersCount(bsSelected); + +} +}); +Clazz.defineMethod(c$, "calculateAllPolymers", +function(groups, groupCount, baseGroupIndex, modelsExcluded){ +var checkConnections = !this.vwr.getBoolean(603979896); +if (groupCount < 0) groupCount = groups.length; +if (modelsExcluded != null) for (var j = 0; j < groupCount; ++j) { +var group = groups[j]; +if (Clazz.instanceOf(group,"JM.Monomer")) { +if ((group).bioPolymer != null && (!modelsExcluded.get(group.chain.model.modelIndex))) (group).setBioPolymer(null, -1); +}} +for (var i = 0, mc = this.ms.mc; i < mc; i++) if ((modelsExcluded == null || !modelsExcluded.get(i)) && this.ms.am[i].isBioModel) { +for (var pt = 0, j = baseGroupIndex; j < groupCount; ++j, pt++) { +var g = groups[j]; +var model = g.getModel(); +if (!model.isBioModel || !(Clazz.instanceOf(g,"JM.Monomer")) || g.getLeadAtom() == null) continue; +var doCheck = checkConnections && !this.ms.isJmolDataFrameForModel(this.ms.at[g.getLeadAtom().i].mi); +var bp = ((g).bioPolymer == null ? JM.BioResolver.allocateBioPolymer(groups, j, doCheck, pt) : null); +if (bp == null || bp.monomerCount == 0) continue; +var n = (model).addBioPolymer(bp); +j += n - 1; +pt += n - 1; +} +} +}, "~A,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "calculateAllStructuresExcept", +function(alreadyDefined, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version){ +var ret = ""; +var bsModels = JU.BSUtil.copyInvert(alreadyDefined, this.ms.mc); +if (setStructure) this.setAllDefaultStructure(bsModels); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (this.ms.am[i].isBioModel) ret += (this.ms.am[i]).calculateStructures(asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version); + +if (setStructure) this.ms.setStructureIndexes(); +return ret; +}, "JU.BS,~B,~B,~B,~B,~B,~N"); +Clazz.defineMethod(c$, "calculateAllStuctures", +function(bsAtoms, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, version){ +if (version <= 0) version = 2; +var bsAllAtoms = new JU.BS(); +var bsModelsExcluded = JU.BSUtil.copyInvert(this.modelsOf(bsAtoms, bsAllAtoms), this.ms.mc); +if (!setStructure) return this.ms.calculateStructuresAllExcept(bsModelsExcluded, asDSSP, doReport, dsspIgnoreHydrogen, false, false, version); +this.ms.recalculatePolymers(bsModelsExcluded); +var ret = this.ms.calculateStructuresAllExcept(bsModelsExcluded, asDSSP, doReport, dsspIgnoreHydrogen, true, false, version); +this.vwr.shm.resetBioshapes(bsAllAtoms); +this.ms.setStructureIndexes(); +return ret; +}, "JU.BS,~B,~B,~B,~B,~N"); +Clazz.defineMethod(c$, "calculateStraightnessAll", +function(){ +this.getBioExt().calculateStraightnessAll(); +}); +Clazz.defineMethod(c$, "calculateStruts", +function(bs1, bs2){ +return this.getBioExt().calculateAllstruts(this.vwr, this.ms, bs1, bs2); +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getAllDefaultStructures", +function(bsAtoms, bsModified){ +var bsModels = this.modelsOf(bsAtoms, bsModified); +var ret = new JU.SB(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (this.ms.am[i].isBioModel && (this.ms.am[i]).defaultStructure != null) ret.append((this.ms.am[i]).defaultStructure); + +return ret.toString(); +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getAllHeteroList", +function(modelIndex){ +var htFull = new java.util.Hashtable(); +var ok = false; +for (var i = this.ms.mc; --i >= 0; ) if (modelIndex < 0 || i == modelIndex) { +var ht = this.ms.getInfo(i, "hetNames"); +if (ht == null) continue; +ok = true; +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +htFull.put(key, entry.getValue()); +} +} +return (ok ? htFull : null); +}, "~N"); +Clazz.defineMethod(c$, "getAllPolymerInfo", +function(bs, info){ +this.getBioExt().getAllPolymerInfo(bs, info); +}, "JU.BS,java.util.Map"); +Clazz.defineMethod(c$, "getAllPolymerPointsAndVectors", +function(bs, vList, isTraceAlpha, sheetSmoothing){ +for (var i = 0; i < this.ms.mc; ++i) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +var last = 2147483646; +for (var ip = 0; ip < m.bioPolymerCount; ip++) last = m.bioPolymers[ip].getPolymerPointsAndVectors(last, bs, vList, isTraceAlpha, sheetSmoothing); + +} +}, "JU.BS,JU.Lst,~B,~N"); +Clazz.defineMethod(c$, "getAllSequenceBits", +function(specInfo, bsAtoms, bsResult){ +if (specInfo.length > 0) { +if (bsAtoms == null) bsAtoms = this.vwr.getAllAtoms(); +if (specInfo.indexOf('|') < specInfo.lastIndexOf('|')) return this.getAllUnitIds(specInfo, bsAtoms, bsResult); +var am = this.ms.am; +for (var i = this.ms.mc; --i >= 0; ) if (am[i].isBioModel) { +var m = am[i]; +var lenInfo = specInfo.length; +for (var ip = 0; ip < m.bioPolymerCount; ip++) { +var sequence = m.bioPolymers[ip].getSequence(); +var j = -1; +while ((j = sequence.indexOf(specInfo, ++j)) >= 0) m.bioPolymers[ip].getPolymerSequenceAtoms(j, lenInfo, bsAtoms, bsResult); + +} +} +}return bsResult; +}, "~S,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getAtomBitsBS", +function(tokType, bsInfo, bs){ +var at = this.ms.at; +var ac = this.ms.ac; +var i = 0; +var g; +switch (tokType) { +case 136314895: +case 2097184: +var type = (tokType == 136314895 ? J.c.STR.HELIX : J.c.STR.SHEET); +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isWithinStructure(type)) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097188: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isCarbohydrate()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097156: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isDna()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097166: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isNucleic()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097168: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isProtein()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097170: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isPurine()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097172: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isPyrimidine()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097174: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isRna()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +} +if (i < 0) return bs; +var i0 = bsInfo.nextSetBit(0); +if (i0 < 0) return bs; +i = 0; +switch (tokType) { +case 1094713362: +for (i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) { +var iPolymer = at[i].group.getBioPolymerIndexInModel(); +if (iPolymer >= 0) (at[i].group).bioPolymer.setAtomBitsAndClear(bs, bsInfo); +} +break; +case 1639976963: +for (i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) { +var structure = at[i].group.getStructure(); +if (structure != null) structure.setAtomBitsAndClear(bs, bsInfo); +} +break; +} +if (i == 0) JU.Logger.error("MISSING getAtomBits entry for " + JS.T.nameOf(tokType)); +return bs; +}, "~N,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getAtomBitsStr", +function(tokType, specInfo, bs){ +switch (tokType) { +default: +return new JU.BS(); +case 1073741925: +return this.getAnnotationBits("domains", 1073741925, specInfo); +case 1073742189: +return this.getAnnotationBits("validation", 1073742189, specInfo); +case 1073742128: +return this.getAnnotationBits("rna3d", 1073742128, specInfo); +case 1073741863: +var s = specInfo; +bs = new JU.BS(); +return (s.length % 2 != 0 ? bs : this.ms.getAtomBitsMDa(1086324742, this.getAllBasePairBits(s), bs)); +case 1111490587: +return this.getAnnotationBits("dssr", 1111490587, specInfo); +case 1086324744: +return this.getAllSequenceBits(specInfo, null, bs); +} +}, "~N,~S,JU.BS"); +Clazz.defineMethod(c$, "getBioPolymerCountInModel", +function(modelIndex){ +if (modelIndex < 0) { +var polymerCount = 0; +for (var i = this.ms.mc; --i >= 0; ) if (!this.ms.isTrajectorySubFrame(i) && this.ms.am[i].isBioModel) polymerCount += (this.ms.am[i]).getBioPolymerCount(); + +return polymerCount; +}return (this.ms.isTrajectorySubFrame(modelIndex) || !this.ms.am[modelIndex].isBioModel ? 0 : (this.ms.am[modelIndex]).getBioPolymerCount()); +}, "~N"); +Clazz.defineMethod(c$, "getFullProteinStructureState", +function(bsAtoms, mode){ +var taintedOnly = (mode == 1073742327); +if (taintedOnly && !this.ms.proteinStructureTainted) return ""; +var scriptMode = (mode == 1073742158 || mode == 1073742327); +var atoms = this.ms.at; +var at0 = (bsAtoms == null ? this.vwr.getAllAtoms() : bsAtoms).nextSetBit(0); +if (at0 < 0) return ""; +if (bsAtoms != null && mode == 4138) { +bsAtoms = JU.BSUtil.copy(bsAtoms); +for (var i = this.ms.ac; --i >= 0; ) if (atoms[i] == null || Float.isNaN(atoms[i].group.getGroupParameter(1111490569)) || Float.isNaN(atoms[i].group.getGroupParameter(1111490570))) bsAtoms.clear(i); + +}var at1 = (bsAtoms == null ? this.vwr.getAllAtoms() : bsAtoms).length() - 1; +var im0 = atoms[at0].mi; +var im1 = atoms[at1].mi; +var lstStr = new JU.Lst(); +var map = new java.util.Hashtable(); +var cmd = new JU.SB(); +for (var im = im0; im <= im1; im++) { +if (!this.ms.am[im].isBioModel) continue; +var m = this.ms.am[im]; +if (taintedOnly && !m.structureTainted) continue; +var bsA = new JU.BS(); +bsA.or(m.bsAtoms); +bsA.andNot(m.bsAtomsDeleted); +var i0 = bsA.nextSetBit(0); +if (i0 < 0) continue; +if (scriptMode) { +cmd.append(" structure none ").append(JU.Escape.eBS(this.ms.getModelAtomBitSetIncludingDeleted(im, false))).append(" \t# model=" + this.ms.getModelNumberDotted(im)).append(";\n"); +}var ps; +for (var i = i0; i >= 0; i = bsA.nextSetBit(i + 1)) { +var a = atoms[i]; +if (a == null || !(Clazz.instanceOf(a.group,"JM.AlphaMonomer")) || (ps = (a.group).proteinStructure) == null || map.containsKey(ps)) continue; +lstStr.addLast(ps); +map.put(ps, Boolean.TRUE); +} +} +this.getStructureLines(bsAtoms, cmd, lstStr, J.c.STR.HELIX, scriptMode, mode); +this.getStructureLines(bsAtoms, cmd, lstStr, J.c.STR.SHEET, scriptMode, mode); +this.getStructureLines(bsAtoms, cmd, lstStr, J.c.STR.TURN, scriptMode, mode); +return cmd.toString(); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "getGroupsWithinAll", +function(nResidues, bs){ +var bsResult = new JU.BS(); +var bsCheck = this.ms.getIterativeModels(false); +for (var iModel = this.ms.mc; --iModel >= 0; ) if (bsCheck.get(iModel) && this.ms.am[iModel].isBioModel) { +var m = this.ms.am[iModel]; +for (var i = m.bioPolymerCount; --i >= 0; ) m.bioPolymers[i].getRangeGroups(nResidues, bs, bsResult); + +} +return bsResult; +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getIdentifierOrNull", +function(identifier){ +var len = identifier.length; +var pt = 0; +while (pt < len && JU.PT.isLetter(identifier.charAt(pt))) ++pt; + +var bs = this.ms.getSpecNameOrNull(identifier.substring(0, pt), false); +if (pt == len) return bs; +if (bs == null) bs = new JU.BS(); +var pt0 = pt; +while (pt < len && JU.PT.isDigit(identifier.charAt(pt))) ++pt; + +var seqNumber = 0; +try { +seqNumber = Integer.parseInt(identifier.substring(pt0, pt)); +} catch (nfe) { +if (Clazz.exceptionOf(nfe,"NumberFormatException")){ +return null; +} else { +throw nfe; +} +} +var insertionCode = ' '; +if (pt < len && identifier.charAt(pt) == '^') if (++pt < len) insertionCode = identifier.charAt(pt); +var seqcode = JM.Group.getSeqcodeFor(seqNumber, insertionCode); +var bsInsert = this.ms.getSeqcodeBits(seqcode, false); +if (bsInsert == null) { +if (insertionCode != ' ') bsInsert = this.ms.getSeqcodeBits(Character.toUpperCase(identifier.charAt(pt)).charCodeAt(0), false); +if (bsInsert == null) return null; +pt++; +}bs.and(bsInsert); +if (pt >= len) return bs; +if (pt != len - 1) return null; +bs.and(this.ms.getChainBits(identifier.charAt(pt).charCodeAt(0))); +return bs; +}, "~S"); +Clazz.defineMethod(c$, "mutate", +function(bs, group, sequence, alphaType, phipsi){ +return this.getBioExt().mutate(this.vwr, bs, group, sequence, alphaType, phipsi); +}, "JU.BS,~S,~A,~S,~A"); +Clazz.defineMethod(c$, "recalculateAllPolymers", +function(bsModelsExcluded, groups){ +for (var i = 0; i < this.ms.mc; i++) if (this.ms.am[i].isBioModel && !bsModelsExcluded.get(i)) (this.ms.am[i]).clearBioPolymers(); + +this.calculateAllPolymers(groups, -1, 0, bsModelsExcluded); +}, "JU.BS,~A"); +Clazz.defineMethod(c$, "recalculatePoints", +function(modelIndex){ +if (modelIndex < 0) { +for (var i = this.ms.mc; --i >= 0; ) if (!this.ms.isTrajectorySubFrame(i) && this.ms.am[i].isBioModel) (this.ms.am[i]).recalculateLeadMidpointsAndWingVectors(); + +return; +}if (!this.ms.isTrajectorySubFrame(modelIndex) && this.ms.am[modelIndex].isBioModel) (this.ms.am[modelIndex]).recalculateLeadMidpointsAndWingVectors(); +}, "~N"); +Clazz.defineMethod(c$, "setAllConformation", +function(bsAtoms){ +this.vwr.ms.recalculatePositionDependentQuantities(bsAtoms, null); +var bsModels = this.ms.getModelBS(bsAtoms, false); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +if (m.altLocCount > 0) for (var j = m.bioPolymerCount; --j >= 0; ) m.bioPolymers[j].setConformation(bsAtoms); + +} +}, "JU.BS"); +Clazz.defineMethod(c$, "setAllProteinType", +function(bs, type){ +var monomerIndexCurrent = -1; +var bsModels = this.ms.getModelBS(bs, false); +this.setAllDefaultStructure(bsModels); +var groups = this.ms.getGroups(); +var lastStrucNo = 0; +var lastResNo = -2147483648; +var lastPolymer = null; +var lastModel = null; +var isNone = (type === J.c.STR.NONE); +for (var i = 0; i < groups.length; i++) { +var g = groups[i]; +if (g.getBioPolymerLength() == 0 || !bs.get(g.firstAtomIndex)) continue; +var m = g.getModel(); +if (!isNone) { +if (m !== lastModel) { +lastModel = m; +lastStrucNo = 0; +lastPolymer = null; +}if (lastPolymer !== (g).bioPolymer) { +lastResNo = -2147483648; +lastPolymer = (g).bioPolymer; +}var resno = g.getResno(); +if (resno != lastResNo + 1) { +monomerIndexCurrent = -1; +}lastResNo = resno; +}monomerIndexCurrent = g.setProteinStructureType(type, monomerIndexCurrent); +if (g.getStrucNo() > 1000) g.setStrucNo(++lastStrucNo); +this.ms.proteinStructureTainted = m.structureTainted = true; +} +}, "JU.BS,J.c.STR"); +Clazz.defineMethod(c$, "setAllStructureList", +function(structureList){ +for (var iModel = this.ms.mc; --iModel >= 0; ) if (this.ms.am[iModel].isBioModel) { +var m = this.ms.am[iModel]; +m.bioPolymers = JU.AU.arrayCopyObject(m.bioPolymers, m.bioPolymerCount); +for (var i = m.bioPolymerCount; --i >= 0; ) { +var bp = m.bioPolymers[i]; +if (Clazz.instanceOf(bp,"JM.AminoPolymer")) (bp).setStructureList(structureList); +} +} +}, "java.util.Map"); +Clazz.defineMethod(c$, "getAllBasePairBits", +function(specInfo){ +var bsA = null; +var bsB = null; +var vHBonds = new JU.Lst(); +if (specInfo.length == 0) { +bsA = bsB = this.vwr.getAllAtoms(); +this.calcAllRasmolHydrogenBonds(bsA, bsB, vHBonds, true, 1, false, null, 0); +} else { +for (var i = 0; i < specInfo.length; ) { +bsA = this.ms.getSequenceBits(specInfo.substring(i, ++i), null, new JU.BS()); +if (bsA.nextSetBit(0) < 0) continue; +bsB = this.ms.getSequenceBits(specInfo.substring(i, ++i), null, new JU.BS()); +if (bsB.nextSetBit(0) < 0) continue; +this.calcAllRasmolHydrogenBonds(bsA, bsB, vHBonds, true, 1, false, null, 0); +} +}var bsAtoms = new JU.BS(); +for (var i = vHBonds.size(); --i >= 0; ) { +var b = vHBonds.get(i); +bsAtoms.set(b.atom1.i); +bsAtoms.set(b.atom2.i); +} +return bsAtoms; +}, "~S"); +Clazz.defineMethod(c$, "getAllUnitIds", +function(specInfo, bsSelected, bsResult){ +var maps = this.unitIdSets; +if (maps == null) { +maps = this.unitIdSets = new Array(7); +for (var i = 0; i < 7; i++) maps[i] = new java.util.Hashtable(); + +for (var i = this.ms.mc; --i >= 0; ) { +var m = this.ms.am[i]; +if (!m.isBioModel) continue; +if (this.ms.isTrajectory(i)) m = this.ms.am[i = m.trajectoryBaseIndex]; +var num = "|" + this.ms.getInfo(i, "modelNumber"); +this.checkMap(maps[0], this.ms.getInfo(i, "modelName") + num, m.bsAtoms); +this.checkMap(maps[0], num, m.bsAtoms); +} +}var bsModelChain = null; +var lastModelChain = null; +var bsTemp = new JU.BS(); +var units = JU.PT.getTokens(JU.PT.replaceAllCharacters(specInfo, ", \t\n[]\"=", " ")); +var ptrs = Clazz.newIntArray (8, 0); +for (var i = units.length; --i >= 0; ) { +var unit = units[i] + "|"; +if (unit.length < 5) continue; +var bsPtr = 0; +for (var j = 0, n = 0, pt = unit.lastIndexOf('|') + 1; j < pt && n < 8; j++) { +if (unit.charAt(j) == '|') ptrs[n++] = j; + else bsPtr |= 1 << n; +} +if ((bsPtr & 0x16) != 0x16) continue; +bsTemp.clearAll(); +bsTemp.or(bsSelected); +var mchain = unit.substring(0, ptrs[2]); +if (lastModelChain != null && lastModelChain.equals(mchain)) { +bsTemp.and(bsModelChain); +} else { +if (!this.addUnit(1094717454, unit.substring(0, ptrs[1]).toUpperCase(), bsTemp, maps[0]) || !this.addUnit(1073742357, unit.substring(ptrs[1] + 1, ptrs[2]), bsTemp, maps[1])) continue; +bsModelChain = JU.BSUtil.copy(bsTemp); +lastModelChain = mchain; +}var haveAtom = ((bsPtr & (32)) != 0); +var haveAlt = ((bsPtr & (64)) != 0); +if (!this.addUnit(1094715412, unit.substring(ptrs[3] + 1, ptrs[4]), bsTemp, maps[2]) || !this.addUnit(5, ((bsPtr & (128)) == 0 ? "\0" : unit.substring(ptrs[6] + 1, ptrs[7])), bsTemp, maps[3]) || (haveAtom ? !this.addUnit(1086326786, unit.substring(ptrs[4] + 1, ptrs[5]).toUpperCase(), bsTemp, maps[4]) || !this.addUnit(1073742355, unit.substring(ptrs[5] + 1, ptrs[6]), bsTemp, maps[5]) : haveAlt && !this.addUnit(1094717448, unit.substring(ptrs[5] + 1, ptrs[6]), bsTemp, maps[6]))) continue; +bsResult.or(bsTemp); +} +return bsResult; +}, "~S,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "checkMap", +function(map, key, bsAtoms){ +var bs = JU.BSUtil.copy(bsAtoms); +var bs0 = map.get(key); +if (bs0 == null) map.put(key, bs0 = bs); + else bs0.or(bs); +return bs0; +}, "java.util.Map,~S,JU.BS"); +Clazz.defineMethod(c$, "addUnit", +function(tok, key, bsTemp, map){ +var bs = map.get(key); +if (bs == null) { +var o; +switch (tok) { +default: +return false; +case 1073742357: +o = Integer.$valueOf(this.vwr.getChainID(key, false)); +break; +case 1094715412: +o = Integer.$valueOf(JU.PT.parseInt(key)); +break; +case 5: +o = Integer.$valueOf(key.charAt(0).charCodeAt(0)); +break; +case 1094717448: +bs = this.ms.getAtomBitsMDa(tok = 1073742355, null, new JU.BS()); +case 1086326786: +o = key; +break; +case 1073742355: +o = (key.length == 0 ? null : key); +break; +} +map.put(key, bs = this.ms.getAtomBitsMDa(tok, o, (bs == null ? new JU.BS() : bs))); +}bsTemp.and(bs); +return (bsTemp.nextSetBit(0) >= 0); +}, "~N,~S,JU.BS,java.util.Map"); +Clazz.defineMethod(c$, "getAnnotationBits", +function(name, tok, specInfo){ +var bs = new JU.BS(); +var pa = this.vwr.getAnnotationParser(name.equals("dssr")); +var ann; +for (var i = this.ms.mc; --i >= 0; ) if ((ann = this.ms.getInfo(i, name)) != null) bs.or(pa.getAtomBits(this.vwr, specInfo, (this.ms.am[i]).getCachedAnnotationMap(name + " V ", ann), this.ms.am[i].dssrCache, tok, i, this.ms.am[i].bsAtoms)); + +return bs; +}, "~S,~N,~S"); +Clazz.defineMethod(c$, "getStructureLines", +function(bsAtoms, cmd, lstStr, type, scriptMode, mode){ +var showMode = (mode == 134222350); +var nHelix = 0; +var nSheet = 0; +var nTurn = 0; +var sid = null; +var bs = new JU.BS(); +var n = 0; +for (var i = 0, ns = lstStr.size(); i < ns; i++) { +var ps = lstStr.get(i); +if (ps.type !== type) continue; +var m1 = ps.findMonomer(bsAtoms, true); +var m2 = ps.findMonomer(bsAtoms, false); +if (m1 == null || m2 == null) continue; +var iModel = ps.apolymer.model.modelIndex; +var comment = (scriptMode ? " \t# model=" + this.ms.getModelNumberDotted(iModel) : null); +var res1 = m1.getResno(); +var res2 = m2.getResno(); +var subtype = ps.subtype; +switch (type) { +case J.c.STR.HELIX: +case J.c.STR.TURN: +case J.c.STR.SHEET: +n++; +if (scriptMode) { +bs.clearAll(); +ps.setAtomBits(bs); +var stype = subtype.getBioStructureTypeName(false); +cmd.append(" structure ").append(stype).append(" ").append(JU.Escape.eBS(bs)).append(comment).append(" & (" + res1 + " - " + res2 + ")").append(";\n"); +} else { +var str; +var nx; +switch (type) { +case J.c.STR.HELIX: +nx = ++nHelix; +sid = JU.PT.formatStringI("%3N %3N", "N", nx); +str = "HELIX %ID %3GROUPA %1CA %4RESA %3GROUPB %1CB %4RESB"; +var stype = null; +switch (subtype) { +case J.c.STR.HELIX: +case J.c.STR.HELIXALPHA: +stype = " 1"; +break; +case J.c.STR.HELIX310: +stype = " 5"; +break; +case J.c.STR.HELIXPI: +stype = " 3"; +break; +} +if (stype != null) str += stype; +break; +case J.c.STR.SHEET: +nx = ++nSheet; +sid = JU.PT.formatStringI("%3N %3A 0", "N", nx); +sid = JU.PT.formatStringS(sid, "A", "S" + nx); +str = "SHEET %ID %3GROUPA %1CA%4RESA %3GROUPB %1CB%4RESB"; +break; +case J.c.STR.TURN: +default: +nx = ++nTurn; +sid = JU.PT.formatStringI("%3N %3N", "N", nx); +str = "TURN %ID %3GROUPA %1CA%4RESA %3GROUPB %1CB%4RESB"; +break; +} +str = JU.PT.formatStringS(str, "ID", sid); +str = JU.PT.formatStringS(str, "GROUPA", m1.getGroup3()); +str = JU.PT.formatStringS(str, "CA", m1.getLeadAtom().getChainIDStr()); +str = JU.PT.formatStringI(str, "RESA", res1); +str = JU.PT.formatStringS(str, "GROUPB", m2.getGroup3()); +str = JU.PT.formatStringS(str, "CB", m2.getLeadAtom().getChainIDStr()); +str = JU.PT.formatStringI(str, "RESB", res2); +cmd.append(str); +if (showMode) cmd.append(" strucno= ").appendI(ps.strucNo); +cmd.append("\n"); +}} +} +if (n > 0) cmd.append("\n"); +return n; +}, "JU.BS,JU.SB,JU.Lst,J.c.STR,~B,~N"); +Clazz.defineMethod(c$, "modelsOf", +function(bsAtoms, bsAtomsRet){ +var bsModels = JU.BS.newN(this.ms.mc); +var isAll = (bsAtoms == null); +var i0 = (isAll ? this.ms.ac - 1 : bsAtoms.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsAtoms.nextSetBit(i + 1))) { +if (this.ms.at[i] == null) continue; +var modelIndex = this.ms.am[this.ms.at[i].mi].trajectoryBaseIndex; +if (this.ms.isJmolDataFrameForModel(modelIndex)) continue; +bsModels.set(modelIndex); +bsAtomsRet.set(i); +} +return bsModels; +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "setAllDefaultStructure", +function(bsModels){ +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +if (m.defaultStructure == null) m.defaultStructure = this.getFullProteinStructureState(m.bsAtoms, 1073742158); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "getAminoAcidValenceAndCharge", +function(s, atomName, aaRet){ +return this.getBioExt().getAminoAcidValenceAndCharge(s, atomName, aaRet); +}, "~S,~S,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BioPolymer.js b/config/plugins/visualizations/jmol/static/j2s/JM/BioPolymer.js new file mode 100755 index 000000000000..68038e3ed649 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BioPolymer.js @@ -0,0 +1,335 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Structure", "JU.V3"], "JM.BioPolymer", ["JU.BS", "$.P3"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.model = null; +this.monomers = null; +this.hasStructure = false; +this.leadMidpoints = null; +this.leadPoints = null; +this.controlPoints = null; +this.wingVectors = null; +this.leadAtomIndices = null; +this.type = 0; +this.bioPolymerIndexInModel = 0; +this.monomerCount = 0; +this.cyclicFlag = 0; +this.invalidLead = false; +this.invalidControl = false; +this.sheetSmoothing = 0; +this.hasWingPoints = false; +this.reversed = null; +this.twistedSheets = false; +this.unitVectorX = null; +this.selectedMonomerCount = 0; +this.bsSelectedMonomers = null; +this.haveParameters = false; +Clazz.instantialize(this, arguments);}, JM, "BioPolymer", null, JM.Structure); +Clazz.prepareFields (c$, function(){ +this.unitVectorX = JU.V3.new3(1, 0, 0); +}); +Clazz.makeConstructor(c$, +function(monomers, hasStructure){ +this.monomers = monomers; +this.hasStructure = hasStructure; +this.monomerCount = monomers.length; +for (var i = this.monomerCount; --i >= 0; ) monomers[i].setBioPolymer(this, i); + +this.model = monomers[0].getModel(); +}, "~A,~B"); +Clazz.overrideMethod(c$, "setAtomBits", +function(bs){ +this.getRange(bs, true); +}, "JU.BS"); +Clazz.overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +for (var i = this.monomerCount; --i >= 0; ) this.monomers[i].setAtomBitsAndClear(bs, bsOut); + +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getRange", +function(bs, isMutated){ +if (this.monomerCount == 0) return; +if (isMutated) { +for (var i = this.monomerCount; --i >= 0; ) this.monomers[i].setAtomBits(bs); + +} else { +bs.setBits(this.monomers[0].firstAtomIndex, this.monomers[this.monomerCount - 1].lastAtomIndex + 1); +}}, "JU.BS,~B"); +Clazz.defineMethod(c$, "clearStructures", +function(){ +}); +Clazz.defineMethod(c$, "getLeadAtomIndices", +function(){ +if (this.leadAtomIndices == null) { +this.leadAtomIndices = Clazz.newIntArray (this.monomerCount, 0); +this.invalidLead = true; +}if (this.invalidLead) { +for (var i = this.monomerCount; --i >= 0; ) this.leadAtomIndices[i] = this.monomers[i].leadAtomIndex; + +this.invalidLead = false; +}return this.leadAtomIndices; +}); +Clazz.defineMethod(c$, "getIndex", +function(chainID, seqcode, istart, iend){ +var i; +for (i = this.monomerCount; --i >= 0; ) { +var m = this.monomers[i]; +if (m.chain.chainID == chainID && m.seqcode == seqcode && (istart < 0 || istart == m.firstAtomIndex || iend == m.lastAtomIndex)) break; +} +return i; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getLeadPoint", +function(monomerIndex){ +return this.monomers[monomerIndex].getLeadAtom(); +}, "~N"); +Clazz.defineMethod(c$, "getInitiatorPoint", +function(){ +return this.monomers[0].getInitiatorAtom(); +}); +Clazz.defineMethod(c$, "getTerminatorPoint", +function(){ +return this.monomers[this.monomerCount - 1].getTerminatorAtom(); +}); +Clazz.defineMethod(c$, "getLeadMidPoint", +function(i, midPoint){ +if (i == this.monomerCount) { +--i; +} else if (i > 0) { +midPoint.ave(this.getLeadPoint(i), this.getLeadPoint(i - 1)); +return; +}midPoint.setT(this.getLeadPoint(i)); +}, "~N,JU.P3"); +Clazz.defineMethod(c$, "getWingPoint", +function(polymerIndex){ +return this.monomers[polymerIndex].getWingAtom(); +}, "~N"); +Clazz.defineMethod(c$, "setConformation", +function(bsSelected){ +var atoms = this.model.ms.at; +var updated = false; +for (var i = this.monomerCount; --i >= 0; ) if (this.monomers[i].updateOffsetsForAlternativeLocations(atoms, bsSelected)) updated = true; + +if (updated) { +this.recalculateLeadMidpointsAndWingVectors(); +for (var i = 9; i < 16; i++) { +var s = this.model.ms.vwr.shm.shapes[i]; +if (s == null) continue; +for (var b = s.bioShapes.length; --b >= 0; ) { +var bi = s.bioShapes[b]; +if (bi.bioPolymer === this) bi.falsifyMesh(); +} +} +}}, "JU.BS"); +Clazz.defineMethod(c$, "recalculateLeadMidpointsAndWingVectors", +function(){ +this.invalidLead = this.invalidControl = true; +this.getLeadAtomIndices(); +this.resetHydrogenPoints(); +this.calcLeadMidpointsAndWingVectors(); +}); +Clazz.defineMethod(c$, "resetHydrogenPoints", +function(){ +}); +Clazz.defineMethod(c$, "getLeadMidpoints", +function(){ +if (this.leadMidpoints == null) this.calcLeadMidpointsAndWingVectors(); +return this.leadMidpoints; +}); +Clazz.defineMethod(c$, "getLeadPoints", +function(){ +if (this.leadPoints == null) this.calcLeadMidpointsAndWingVectors(); +return this.leadPoints; +}); +Clazz.defineMethod(c$, "getControlPoints", +function(isTraceAlpha, sheetSmoothing, invalidate){ +if (invalidate) this.invalidControl = true; +return (!isTraceAlpha ? this.leadMidpoints : sheetSmoothing == 0 ? this.leadPoints : this.getControlPoints2(sheetSmoothing)); +}, "~B,~N,~B"); +Clazz.defineMethod(c$, "getControlPoints2", +function(sheetSmoothing){ +if (!this.invalidControl && sheetSmoothing == this.sheetSmoothing) return this.controlPoints; +this.getLeadPoints(); +var v = new JU.V3(); +if (this.controlPoints == null) this.controlPoints = new Array(this.monomerCount + 1); +if (!Float.isNaN(sheetSmoothing)) this.sheetSmoothing = sheetSmoothing; +for (var i = 0; i < this.monomerCount; i++) this.controlPoints[i] = this.getControlPoint(i, v); + +this.controlPoints[this.monomerCount] = this.getTerminatorPoint(); +this.invalidControl = false; +return this.controlPoints; +}, "~N"); +Clazz.defineMethod(c$, "getControlPoint", +function(i, v){ +return this.leadPoints[i]; +}, "~N,JU.V3"); +Clazz.defineMethod(c$, "getWingVectors", +function(){ +if (this.leadMidpoints == null) this.calcLeadMidpointsAndWingVectors(); +return this.wingVectors; +}); +Clazz.defineMethod(c$, "calcLeadMidpointsAndWingVectors", +function(){ +if (this.leadMidpoints == null) { +this.leadMidpoints = new Array(this.monomerCount + 1); +this.leadPoints = new Array(this.monomerCount + 1); +this.wingVectors = new Array(this.monomerCount + 1); +this.sheetSmoothing = 1.4E-45; +}if (this.reversed == null) this.reversed = JU.BS.newN(this.monomerCount); + else this.reversed.clearAll(); +this.twistedSheets = this.model.ms.vwr.getBoolean(603979968); +var vectorA = new JU.V3(); +var vectorB = new JU.V3(); +var vectorC = new JU.V3(); +var vectorD = new JU.V3(); +var leadPointPrev; +var leadPoint; +this.leadMidpoints[0] = this.getInitiatorPoint(); +this.leadPoints[0] = leadPoint = this.getLeadPoint(0); +var previousVectorD = null; +for (var i = 1; i < this.monomerCount; ++i) { +leadPointPrev = leadPoint; +leadPoint = this.getLeadPoint(i); +if (leadPoint == null) { +return; +}this.leadPoints[i] = leadPoint; +var midpoint = new JU.P3(); +midpoint.ave(leadPoint, leadPointPrev); +this.leadMidpoints[i] = midpoint; +if (this.hasWingPoints) { +vectorA.sub2(leadPoint, leadPointPrev); +vectorB.sub2(leadPointPrev, this.getWingPoint(i - 1)); +vectorC.cross(vectorA, vectorB); +vectorD.cross(vectorA, vectorC); +vectorD.normalize(); +if (!this.twistedSheets && previousVectorD != null && previousVectorD.angle(vectorD) > 1.5707963267948966) { +this.reversed.set(i); +vectorD.scale(-1); +}previousVectorD = this.wingVectors[i] = JU.V3.newV(vectorD); +}} +this.leadPoints[this.monomerCount] = this.leadMidpoints[this.monomerCount] = this.getTerminatorPoint(); +if (!this.hasWingPoints) { +if (this.monomerCount < 3) { +this.wingVectors[1] = this.unitVectorX; +} else { +var previousVectorC = null; +for (var i = 1; i < this.monomerCount; ++i) { +vectorA.sub2(this.leadMidpoints[i], this.leadPoints[i]); +vectorB.sub2(this.leadPoints[i], this.leadMidpoints[i + 1]); +if (vectorB.length() == 0) { +vectorC = previousVectorC; +} else { +vectorC.cross(vectorA, vectorB); +vectorC.normalize(); +if (previousVectorC != null && previousVectorC.angle(vectorC) > 1.5707963267948966) vectorC.scale(-1); +}previousVectorC = this.wingVectors[i] = JU.V3.newV(vectorC); +} +}}this.wingVectors[0] = this.wingVectors[1]; +this.wingVectors[this.monomerCount] = this.wingVectors[this.monomerCount - 1]; +}); +Clazz.defineMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, mads, myVisibilityFlag, bsNot){ +for (var i = this.monomerCount; --i >= 0; ) { +if ((this.monomers[i].shapeVisibilityFlags & myVisibilityFlag) == 0) continue; +var a = this.monomers[i].getLeadAtom(); +if (!a.checkVisible() || bsNot != null && bsNot.get(a.i)) continue; +if (mads[i] > 0 || mads[i + 1] > 0) this.monomers[i].findNearestAtomIndex(xMouse, yMouse, closest, mads[i], mads[i + 1]); +} +}, "~N,~N,~A,~A,~N,JU.BS"); +Clazz.defineMethod(c$, "getSelectedMonomerCount", +function(){ +return this.selectedMonomerCount; +}); +Clazz.defineMethod(c$, "calcSelectedMonomersCount", +function(bsSelected){ +this.selectedMonomerCount = 0; +if (this.bsSelectedMonomers == null) this.bsSelectedMonomers = new JU.BS(); +this.bsSelectedMonomers.clearAll(); +for (var i = 0; i < this.monomerCount; i++) { +if (this.monomers[i].isSelected(bsSelected)) { +++this.selectedMonomerCount; +this.bsSelectedMonomers.set(i); +}} +}, "JU.BS"); +Clazz.defineMethod(c$, "isMonomerSelected", +function(i){ +return (i >= 0 && this.bsSelectedMonomers.get(i)); +}, "~N"); +Clazz.defineMethod(c$, "getPolymerPointsAndVectors", +function(last, bs, vList, isTraceAlpha, sheetSmoothing){ +var points = this.getControlPoints(isTraceAlpha, sheetSmoothing, false); +var vectors = this.getWingVectors(); +var count = this.monomerCount; +for (var j = 0; j < count; j++) if (bs.get(this.monomers[j].leadAtomIndex)) { +vList.addLast( Clazz.newArray(-1, [points[j], JU.P3.newP(vectors[j])])); +last = j; +} else if (last != 2147483646) { +vList.addLast( Clazz.newArray(-1, [points[j], JU.P3.newP(vectors[j])])); +last = 2147483646; +} +if (last + 1 < count) vList.addLast( Clazz.newArray(-1, [points[last + 1], JU.P3.newP(vectors[last + 1])])); +return last; +}, "~N,JU.BS,JU.Lst,~B,~N"); +Clazz.defineMethod(c$, "getSequence", +function(){ +var buf = Clazz.newCharArray (this.monomerCount, '\0'); +for (var i = 0; i < this.monomerCount; i++) buf[i] = this.monomers[i].getGroup1(); + +return String.valueOf(buf); +}); +Clazz.defineMethod(c$, "getPolymerSequenceAtoms", +function(group1, nGroups, bsInclude, bsResult){ +for (var i = Math.min(this.monomerCount, group1 + nGroups); --i >= group1; ) this.monomers[i].getMonomerSequenceAtoms(bsInclude, bsResult); + +}, "~N,~N,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getProteinStructure", +function(monomerIndex){ +return null; +}, "~N"); +Clazz.defineMethod(c$, "calcParameters", +function(){ +this.haveParameters = true; +return this.calcEtaThetaAngles() || this.calcPhiPsiAngles(); +}); +Clazz.defineMethod(c$, "calcEtaThetaAngles", +function(){ +return false; +}); +Clazz.defineMethod(c$, "calcPhiPsiAngles", +function(){ +return false; +}); +Clazz.defineMethod(c$, "calculateRamachandranHelixAngle", +function(m, qtype){ +return NaN; +}, "~N,~S"); +Clazz.defineMethod(c$, "isNucleic", +function(){ +return (this.monomerCount > 0 && Clazz.instanceOf(this,"JM.NucleicPolymer")); +}); +Clazz.defineMethod(c$, "getRangeGroups", +function(nResidues, bsAtoms, bsResult){ +var bsTemp = new JU.BS(); +for (var i = 0; i < this.monomerCount; i++) { +if (!this.monomers[i].isSelected(bsAtoms)) continue; +bsTemp.setBits(Math.max(0, i - nResidues), i + nResidues + 1); +i += nResidues - 1; +} +for (var i = bsTemp.nextSetBit(0); i >= 0 && i < this.monomerCount; i = bsTemp.nextSetBit(i + 1)) this.monomers[i].setAtomBits(bsResult); + +}, "~N,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "calcRasmolHydrogenBonds", +function(polymer, bsA, bsB, vHBonds, nMaxPerResidue, min, checkDistances, dsspIgnoreHydrogens){ +}, "JM.BioPolymer,JU.BS,JU.BS,JU.Lst,~N,~A,~B,~B"); +Clazz.defineMethod(c$, "getType", +function(){ +return this.type; +}); +Clazz.defineMethod(c$, "isCyclic", +function(){ +return ((this.cyclicFlag == 0 ? (this.cyclicFlag = (this.monomerCount >= 4 && this.monomers[0].isConnectedAfter(this.monomers[this.monomerCount - 1])) ? 1 : -1) : this.cyclicFlag) == 1); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[Polymer type " + this.type + " n=" + this.monomerCount + " " + (this.monomerCount > 0 ? this.monomers[0] + " " + this.monomers[this.monomerCount - 1] : "") + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BioResolver.js b/config/plugins/visualizations/jmol/static/j2s/JM/BioResolver.js new file mode 100755 index 000000000000..bff80f9f4eaa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BioResolver.js @@ -0,0 +1,692 @@ +Clazz.declarePackage("JM"); +Clazz.load(["java.util.Hashtable", "J.c.STR"], "JM.BioResolver", ["java.util.Arrays", "JU.AU", "$.BS", "$.Measure", "$.P3", "$.P4", "$.PT", "$.SB", "$.V3", "JM.Group", "JM.AlphaMonomer", "$.AlphaPolymer", "$.AminoMonomer", "$.AminoPolymer", "$.BioModel", "$.BioModelSet", "$.CarbohydrateMonomer", "$.CarbohydratePolymer", "$.NucleicMonomer", "$.NucleicPolymer", "$.PhosphorusMonomer", "$.PhosphorusPolymer", "JU.BSUtil", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.vAB = null; +this.vNorm = null; +this.plane = null; +this.ml = null; +this.ms = null; +this.bsAddedMask = null; +this.haveHsAlready = false; +this.bsAddedHydrogens = null; +this.bsAtomsForHs = null; +this.htBondMap = null; +this.htGroupBonds = null; +this.hNames = null; +this.baseBondIndex = 0; +this.hasCONECT = false; +this.bsAssigned = null; +Clazz.instantialize(this, arguments);}, JM, "BioResolver", null, java.util.Comparator); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "setLoader", +function(modelLoader){ +this.ml = modelLoader; +this.bsAddedMask = null; +this.haveHsAlready = false; +if (modelLoader == null) { +this.ms = null; +this.bsAddedHydrogens = this.bsAtomsForHs = this.bsAssigned = null; +this.htBondMap = null; +this.htGroupBonds = null; +this.hNames = null; +} else { +JM.Group.specialAtomNames = JM.BioResolver.specialAtomNames; +this.ms = modelLoader.ms; +this.vwr = modelLoader.ms.vwr; +modelLoader.specialAtomIndexes = Clazz.newIntArray (JM.BioResolver.ATOMID_MAX, 0); +this.hasCONECT = (this.ms.getInfoM(JV.JC.getBoolName(3)) === Boolean.TRUE); +}return this; +}, "JM.ModelLoader"); +Clazz.defineMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +if (JM.Group.standardGroupList == null) { +var s = new JU.SB(); +for (var i = 1; i < 42; i++) s.append(",[").append(JM.BioResolver.predefinedGroup3Names[i]).append("]"); + +s.append(",[AHR],[ALL],[AMU],[ARA],[ARB],[BDF],[BDR],[BGC],[BMA],[FCA],[FCB],[FRU],[FUC],[FUL],[GAL],[GLA],[GLC],[GXL],[GUP],[LXC],[MAN],[RAM],[RIB],[RIP],[XYP],[XYS],[CBI],[CT3],[CTR],[CTT],[LAT],[MAB],[MAL],[MLR],[MTT],[SUC],[TRE],[GCU],[MTL],[NAG],[NDG],[RHA],[SOR],[SOL],[SOE],[XYL],[A2G],[LBT],[NGA],[SIA],[SLB],[AFL],[AGC],[GLB],[NAN],[RAA]"); +JM.BioResolver.group3Count = Clazz.doubleToInt(s.length() / 6); +JM.Group.standardGroupList = s.toString(); +for (var i = 0, n = JM.BioResolver.predefinedGroup3Names.length; i < n; ++i) JM.BioResolver.addGroup3Name(JM.BioResolver.predefinedGroup3Names[i].trim()); + +}return this; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "getBioModel", +function(modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo){ +return new JM.BioModel().setBioModel(this.ms, modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo); +}, "~N,~N,~S,java.util.Properties,java.util.Map"); +Clazz.defineMethod(c$, "distinguishAndPropagateGroup", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes, atoms){ +var mask = 0; +for (var i = JM.BioResolver.ATOMID_MAX; --i >= 0; ) specialAtomIndexes[i] = -2147483648; + +for (var i = lastAtomIndex; i >= firstAtomIndex; --i) { +var specialAtomID = atoms[i].atomID; +if (specialAtomID <= 0) continue; +if (specialAtomID < 14) { +mask |= (1 << specialAtomID); +}specialAtomIndexes[specialAtomID] = i; +} +var m = null; +if ((mask & 14) == 14) m = JM.AminoMonomer.validateAndAllocate(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes, atoms); + else if (mask == 4) m = JM.AlphaMonomer.validateAndAllocateA(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes); + else if (((mask & 8128) == 8128)) m = JM.NucleicMonomer.validateAndAllocate(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes); + else if (mask == 8192) m = JM.PhosphorusMonomer.validateAndAllocateP(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes); + else if (JM.BioResolver.checkCarbohydrate(group3)) m = JM.CarbohydrateMonomer.validateAndAllocate(chain, group3, seqcode, firstAtomIndex, lastAtomIndex); +return (m != null && m.leadAtomIndex >= 0 ? m : null); +}, "JM.Chain,~S,~N,~N,~N,~A,~A"); +Clazz.defineMethod(c$, "setHaveHsAlready", +function(b){ +this.haveHsAlready = b; +}, "~B"); +Clazz.defineMethod(c$, "initializeHydrogenAddition", +function(){ +this.baseBondIndex = this.ms.bondCount; +this.bsAddedHydrogens = new JU.BS(); +this.bsAtomsForHs = new JU.BS(); +this.htBondMap = new java.util.Hashtable(); +this.htGroupBonds = new java.util.Hashtable(); +this.hNames = new Array(3); +this.vAB = new JU.V3(); +this.vNorm = new JU.V3(); +this.plane = new JU.P4(); +}); +Clazz.defineMethod(c$, "addImplicitHydrogenAtoms", +function(adapter, iGroup, nH){ +var group3 = this.ml.getGroup3(iGroup); +var nH1; +if (this.haveHsAlready && this.hasCONECT || group3 == null || (nH1 = JM.BioResolver.getStandardPdbHydrogenCount(group3)) == 0) return; +nH = (nH1 < 0 ? -1 : nH1 + nH); +var model = null; +var iFirst = this.ml.getFirstAtomIndex(iGroup); +var ac = this.ms.ac; +if (nH < 0) { +if (ac - iFirst == 1) return; +model = this.vwr.getLigandModel(group3, "ligand_", "_data", null); +if (model == null) return; +nH = adapter.getHydrogenAtomCount(model); +if (nH < 1) return; +}this.getBondInfo(adapter, group3, model); +this.ms.am[this.ms.at[iFirst].mi].isPdbWithMultipleBonds = true; +if (this.haveHsAlready) return; +this.bsAtomsForHs.setBits(iFirst, ac); +this.bsAddedHydrogens.setBits(ac, ac + nH); +var isHetero = this.ms.at[iFirst].isHetero(); +var xyz = JU.P3.new3(NaN, NaN, NaN); +var a = this.ms.at[iFirst]; +for (var i = 0; i < nH; i++) this.ms.addAtom(a.mi, a.group, 1, "H", null, 0, a.getSeqID(), 0, xyz, NaN, null, 0, 0, 1, 0, null, isHetero, 0, null, NaN).$delete(null); + +}, "J.api.JmolAdapter,~N,~N"); +Clazz.defineMethod(c$, "getBondInfo", +function(adapter, group3, model){ +if (this.htGroupBonds.get(group3) != null) return; +var bondInfo = (model == null ? this.getPdbBondInfo(group3, this.vwr.getBoolean(603979873)) : this.getLigandBondInfo(adapter, model, group3)); +if (bondInfo == null) return; +this.htGroupBonds.put(group3, Boolean.TRUE); +for (var i = 0; i < bondInfo.length; i++) { +if (bondInfo[i] == null) continue; +if (bondInfo[i][1].charAt(0) == 'H') this.htBondMap.put(group3 + "." + bondInfo[i][0], bondInfo[i][1]); + else this.htBondMap.put(group3 + ":" + bondInfo[i][0] + ":" + bondInfo[i][1], bondInfo[i][2]); +} +}, "J.api.JmolAdapter,~S,~O"); +Clazz.defineMethod(c$, "getLigandBondInfo", +function(adapter, model, group3){ +var dataIn = adapter.getBondList(model); +var htAtoms = new java.util.Hashtable(); +var iterAtom = adapter.getAtomIterator(model); +while (iterAtom.hasNext()) htAtoms.put(iterAtom.getAtomName(), iterAtom.getXYZ()); + +var bondInfo = new Array(dataIn.length * 2); +var n = 0; +for (var i = 0; i < dataIn.length; i++) { +var b = dataIn[i]; +if (b[0].charAt(0) != 'H') bondInfo[n++] = Clazz.newArray(-1, [b[0], b[1], b[2], b[1].startsWith("H") ? "0" : "1"]); +if (b[1].charAt(0) != 'H') bondInfo[n++] = Clazz.newArray(-1, [b[1], b[0], b[2], b[0].startsWith("H") ? "0" : "1"]); +} +java.util.Arrays.sort(bondInfo, this); +var t; +for (var i = 0; i < n; ) { +t = bondInfo[i]; +var a1 = t[0]; +var nH = 0; +var nC = 0; +for (; i < n && (t = bondInfo[i])[0].equals(a1); i++) { +if (t[3].equals("0")) { +nH++; +continue; +}if (t[3].equals("1")) nC++; +} +var pt = i - nH - nC; +if (nH == 1) continue; +switch (nC) { +case 1: +var sep = (nH == 2 ? '@' : '|'); +for (var j = 1; j < nH; j++) { +bondInfo[pt][1] += sep + bondInfo[pt + j][1]; +bondInfo[pt + j] = null; +} +continue; +case 2: +if (nH != 2) continue; +var name = bondInfo[pt][0]; +var name1 = bondInfo[pt + nH][1]; +var name2 = bondInfo[pt + nH + 1][1]; +var factor = name1.compareTo(name2); +JU.Measure.getPlaneThroughPoints(htAtoms.get(name1), htAtoms.get(name), htAtoms.get(name2), this.vNorm, this.vAB, this.plane); +var d = JU.Measure.distanceToPlane(this.plane, htAtoms.get(bondInfo[pt][1])) * factor; +bondInfo[pt][1] = (d > 0 ? bondInfo[pt][1] + "@" + bondInfo[pt + 1][1] : bondInfo[pt + 1][1] + "@" + bondInfo[pt][1]); +bondInfo[pt + 1] = null; +} +} +for (var i = 0; i < n; i++) { +if ((t = bondInfo[i]) != null && t[1].charAt(0) != 'H' && t[0].compareTo(t[1]) > 0) { +bondInfo[i] = null; +continue; +}if (t != null) JU.Logger.info(" ligand " + group3 + ": " + bondInfo[i][0] + " - " + bondInfo[i][1] + " order " + bondInfo[i][2]); +} +return bondInfo; +}, "J.api.JmolAdapter,~O,~S"); +Clazz.overrideMethod(c$, "compare", +function(a, b){ +return (b == null ? (a == null ? 0 : -1) : a == null ? 1 : a[0].compareTo(b[0]) < 0 ? -1 : a[0].compareTo(b[0]) > 0 ? 1 : a[3].compareTo(b[3]) < 0 ? -1 : a[3].compareTo(b[3]) > 0 ? 1 : a[1].compareTo(b[1]) < 0 ? -1 : a[1].compareTo(b[1]) > 0 ? 1 : 0); +}, "~A,~A"); +Clazz.defineMethod(c$, "finalizeHydrogens", +function(){ +this.vwr.getLigandModel(null, null, null, null); +this.finalizePdbMultipleBonds(); +this.addHydrogens(); +}); +Clazz.defineMethod(c$, "addHydrogens", +function(){ +if (this.bsAddedHydrogens.nextSetBit(0) < 0) return; +this.bsAddedMask = JU.BSUtil.copy(this.bsAddedHydrogens); +this.finalizePdbCharges(); +var nTotal = Clazz.newIntArray (1, 0); +var pts = this.ms.calculateHydrogens(this.bsAtomsForHs, nTotal, null, 256); +var groupLast = null; +var ipt = 0; +var atom; +for (var i = 0; i < pts.length; i++) { +if (pts[i] == null || (atom = this.ms.at[i]) == null) continue; +var g = atom.group; +if (g !== groupLast) { +groupLast = g; +ipt = g.lastAtomIndex; +while (this.bsAddedHydrogens.get(ipt)) ipt--; + +}var gName = atom.getGroup3(false); +var aName = atom.getAtomName(); +var hName = this.htBondMap.get(gName + "." + aName); +if (hName == null) continue; +var isChiral = hName.contains("@"); +var isMethyl = (hName.endsWith("?") || hName.indexOf("|") >= 0); +var n = pts[i].length; +if (n == 3 && !isMethyl && hName.equals("H@H2")) { +hName = "H|H2|H3"; +isMethyl = true; +isChiral = false; +}if (isChiral && n == 3 || isMethyl != (n == 3)) { +JU.Logger.info("Error adding H atoms to " + gName + g.getResno() + ": " + pts[i].length + " atoms should not be added to " + aName); +continue; +}var pt = hName.indexOf("@"); +switch (pts[i].length) { +case 1: +if (pt > 0) hName = hName.substring(0, pt); +this.setHydrogen(i, ++ipt, hName, pts[i][0]); +break; +case 2: +var hName1; +var hName2; +var d = -1; +var bonds = atom.bonds; +if (bonds != null) switch (bonds.length) { +case 2: +var atom1 = bonds[0].getOtherAtom(atom); +var atom2 = bonds[1].getOtherAtom(atom); +var factor = atom1.getAtomName().compareTo(atom2.getAtomName()); +d = JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(atom1, atom, atom2, this.vNorm, this.vAB, this.plane), pts[i][0]) * factor; +break; +} +if (pt < 0) { +JU.Logger.info("Error adding H atoms to " + gName + g.getResno() + ": expected to only need 1 H but needed 2"); +hName1 = hName2 = "H"; +} else if (d < 0) { +hName2 = hName.substring(0, pt); +hName1 = hName.substring(pt + 1); +} else { +hName1 = hName.substring(0, pt); +hName2 = hName.substring(pt + 1); +}this.setHydrogen(i, ++ipt, hName1, pts[i][0]); +this.setHydrogen(i, ++ipt, hName2, pts[i][1]); +break; +case 3: +var pt1 = hName.indexOf('|'); +if (pt1 >= 0) { +var pt2 = hName.lastIndexOf('|'); +this.hNames[0] = hName.substring(0, pt1); +this.hNames[1] = hName.substring(pt1 + 1, pt2); +this.hNames[2] = hName.substring(pt2 + 1); +} else { +this.hNames[0] = hName.$replace('?', '1'); +this.hNames[1] = hName.$replace('?', '2'); +this.hNames[2] = hName.$replace('?', '3'); +}this.setHydrogen(i, ++ipt, this.hNames[0], pts[i][0]); +this.setHydrogen(i, ++ipt, this.hNames[1], pts[i][2]); +this.setHydrogen(i, ++ipt, this.hNames[2], pts[i][1]); +break; +} +} +this.deleteUnneededAtoms(); +this.ms.fixFormalCharges(JU.BSUtil.newBitSet2(this.ml.baseAtomIndex, this.ml.ms.ac)); +}); +Clazz.defineMethod(c$, "deleteUnneededAtoms", +function(){ +var bsBondsDeleted = new JU.BS(); +for (var i = this.bsAtomsForHs.nextSetBit(0); i >= 0; i = this.bsAtomsForHs.nextSetBit(i + 1)) { +var atom = this.ms.at[i]; +if (!atom.isHetero() || atom.getElementNumber() != 8 || atom.getFormalCharge() != 0 || atom.getCovalentBondCount() != 2) continue; +var bonds = atom.bonds; +var atom1 = bonds[0].getOtherAtom(atom); +var atomH = bonds[1].getOtherAtom(atom); +if (atom1.getElementNumber() == 1) { +var a = atom1; +atom1 = atomH; +atomH = a; +}if (atomH.getElementNumber() != 1) continue; +var bonds1 = atom1.bonds; +for (var j = 0; j < bonds1.length; j++) { +if (bonds1[j].order == 2) { +var atomO = bonds1[j].getOtherAtom(atom1); +if (atomO.getElementNumber() == 8) { +this.bsAddedHydrogens.set(atomH.i); +atomH.$delete(bsBondsDeleted); +break; +}}} +} +this.ms.deleteBonds(bsBondsDeleted, true); +this.deleteAtoms(this.bsAddedHydrogens); +}); +Clazz.defineMethod(c$, "deleteAtoms", +function(bsDeletedAtoms){ +var mapOldToNew = Clazz.newIntArray (this.ms.ac, 0); +var mapNewToOld = Clazz.newIntArray (this.ms.ac - bsDeletedAtoms.cardinality(), 0); +var n = this.ml.baseAtomIndex; +var models = this.ms.am; +var atoms = this.ms.at; +for (var i = this.ml.baseAtomIndex; i < this.ms.ac; i++) { +var a = atoms[i]; +if (a == null) continue; +models[a.mi].bsAtoms.clear(i); +models[a.mi].bsAtomsDeleted.clear(i); +if (bsDeletedAtoms.get(i)) { +mapOldToNew[i] = n - 1; +models[atoms[i].mi].act--; +} else { +mapNewToOld[n] = i; +mapOldToNew[i] = n++; +}} +this.ms.msInfo.put("bsDeletedAtoms", bsDeletedAtoms); +for (var i = this.ml.baseGroupIndex; i < this.ml.groups.length; i++) { +var g = this.ml.groups[i]; +if (g.firstAtomIndex >= this.ml.baseAtomIndex) { +g.firstAtomIndex = mapOldToNew[g.firstAtomIndex]; +g.lastAtomIndex = mapOldToNew[g.lastAtomIndex]; +if (g.leadAtomIndex >= 0) g.leadAtomIndex = mapOldToNew[g.leadAtomIndex]; +}} +this.ms.adjustAtomArrays(mapNewToOld, this.ml.baseAtomIndex, n); +this.ms.calcBoundBoxDimensions(null, 1); +this.ms.resetMolecules(); +this.ms.validateBspf(false); +this.bsAddedMask = JU.BSUtil.deleteBits(this.bsAddedMask, bsDeletedAtoms); +for (var i = this.ml.baseModelIndex; i < this.ms.mc; i++) { +this.fixAnnotations(i, "domains", 1073741925); +this.fixAnnotations(i, "validation", 1073742189); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "fixAnnotations", +function(i, name, type){ +var o = this.ml.ms.getInfo(i, name); +if (o != null) { +var dbObj = (this.ms.am[i]).getCachedAnnotationMap(name, o); +if (dbObj != null) this.vwr.getAnnotationParser(false).fixAtoms(i, dbObj, this.bsAddedMask, type, 20); +}}, "~N,~S,~N"); +Clazz.defineMethod(c$, "finalizePdbCharges", +function(){ +var atoms = this.ms.at; +for (var i = this.bsAtomsForHs.nextSetBit(0); i >= 0; i = this.bsAtomsForHs.nextSetBit(i + 1)) { +var a = atoms[i]; +if (a.group.getNitrogenAtom() === a && a.getCovalentBondCount() == 1) a.setFormalCharge(1); +if ((i = this.bsAtomsForHs.nextClearBit(i + 1)) < 0) break; +} +}); +Clazz.defineMethod(c$, "finalizePdbMultipleBonds", +function(){ +var htKeysUsed = new java.util.Hashtable(); +var bondCount = this.ms.bondCount; +var bonds = this.ms.bo; +for (var i = this.baseBondIndex; i < bondCount; i++) { +var a1 = bonds[i].atom1; +var a2 = bonds[i].atom2; +var g = a1.group; +if (g !== a2.group) continue; +var key = new JU.SB().append(g.getGroup3()); +key.append(":"); +var n1 = a1.getAtomName(); +var n2 = a2.getAtomName(); +if (n1.compareTo(n2) > 0) key.append(n2).append(":").append(n1); + else key.append(n1).append(":").append(n2); +var skey = key.toString(); +var type = this.htBondMap.get(skey); +if (type == null) continue; +htKeysUsed.put(skey, Boolean.TRUE); +bonds[i].setOrder(JU.PT.parseInt(type)); +} +for (var key, $key = this.htBondMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (htKeysUsed.get(key) != null) continue; +if (key.indexOf(":") < 0) { +htKeysUsed.put(key, Boolean.TRUE); +continue; +}var value = this.htBondMap.get(key); +JU.Logger.info("bond " + key + " was not used; order=" + value); +if (this.htBondMap.get(key).equals("1")) { +htKeysUsed.put(key, Boolean.TRUE); +continue; +}} +var htKeysBad = new java.util.Hashtable(); +for (var key, $key = this.htBondMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (htKeysUsed.get(key) != null) continue; +htKeysBad.put(key.substring(0, key.lastIndexOf(":")), this.htBondMap.get(key)); +} +if (htKeysBad.isEmpty()) return; +for (var i = 0; i < bondCount; i++) { +var a1 = bonds[i].atom1; +var a2 = bonds[i].atom2; +if (a1.group === a2.group) continue; +var value; +if ((value = htKeysBad.get(a1.getGroup3(false) + ":" + a1.getAtomName())) == null && ((value = htKeysBad.get(a2.getGroup3(false) + ":" + a2.getAtomName())) == null)) continue; +bonds[i].setOrder(JU.PT.parseInt(value)); +JU.Logger.info("assigning order " + bonds[i].order + " to bond " + bonds[i]); +} +}); +Clazz.defineMethod(c$, "setHydrogen", +function(iTo, iAtom, name, pt){ +if (!this.bsAddedHydrogens.get(iAtom)) return; +var atoms = this.ms.at; +this.bsAddedHydrogens.clear(iAtom); +this.ms.setAtomName(iAtom, name, false); +atoms[iAtom].setT(pt); +atoms[iAtom].atomSymmetry = atoms[iTo].atomSymmetry; +this.ml.undeleteAtom(iAtom); +this.ms.bondAtoms(atoms[iTo], atoms[iAtom], 1, this.ms.getDefaultMadFromOrder(1), null, 0, true, false); +}, "~N,~N,~S,JU.P3"); +Clazz.defineMethod(c$, "fixPropertyValue", +function(bsAtoms, data, toHydrogens){ +var atoms = this.ms.at; +var fData = data; +var newData = Clazz.newFloatArray (bsAtoms.cardinality(), 0); +var lastData = 0; +for (var pt = 0, iAtom = 0, i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1), iAtom++) { +if (atoms[i].getElementNumber() == 1) { +if (!toHydrogens) continue; +} else { +lastData = fData[pt++]; +}newData[iAtom] = lastData; +} +return newData; +}, "JU.BS,~O,~B"); +c$.allocateBioPolymer = Clazz.defineMethod(c$, "allocateBioPolymer", +function(groups, firstGroupIndex, checkConnections, pt0){ +var previous = null; +var count = 0; +for (var i = firstGroupIndex; i < groups.length; ++i) { +var group = groups[i]; +var current; +if (!(Clazz.instanceOf(group,"JM.Monomer")) || (current = group).bioPolymer != null || previous != null && previous.getClass() !== current.getClass() || checkConnections && !current.isConnectedAfter(previous)) break; +previous = current; +count++; +} +if (count < 2) return null; +var monomers = new Array(count); +for (var j = 0; j < count; ++j) monomers[j] = groups[firstGroupIndex + j]; + +if (Clazz.instanceOf(previous,"JM.AminoMonomer")) return new JM.AminoPolymer(monomers, pt0); +if (Clazz.instanceOf(previous,"JM.AlphaMonomer")) return new JM.AlphaPolymer(monomers, pt0); +if (Clazz.instanceOf(previous,"JM.NucleicMonomer")) return new JM.NucleicPolymer(monomers); +if (Clazz.instanceOf(previous,"JM.PhosphorusMonomer")) return new JM.PhosphorusPolymer(monomers); +if (Clazz.instanceOf(previous,"JM.CarbohydrateMonomer")) return new JM.CarbohydratePolymer(monomers); +JU.Logger.error("Polymer.allocatePolymer() ... no matching polymer for monomor " + previous); +throw new NullPointerException(); +}, "~A,~N,~B,~N"); +Clazz.defineMethod(c$, "iterateOverAllNewStructures", +function(adapter, atomSetCollection){ +var iterStructure = adapter.getStructureIterator(atomSetCollection); +if (iterStructure == null) return; +var bs = iterStructure.getStructuredModels(); +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.ml.structuresDefinedInFile.set(this.ml.baseModelIndex + i); + +while (iterStructure.hasNext()) if (iterStructure.getStructureType() !== J.c.STR.TURN) this.setStructure(iterStructure); + +iterStructure = adapter.getStructureIterator(atomSetCollection); +while (iterStructure.hasNext()) if (iterStructure.getStructureType() === J.c.STR.TURN) this.setStructure(iterStructure); + +}, "J.api.JmolAdapter,~O"); +Clazz.defineMethod(c$, "setStructure", +function(iterStructure){ +var t = iterStructure.getSubstructureType(); +var id = iterStructure.getStructureID(); +var serID = iterStructure.getStrandID(); +var count = iterStructure.getStrandCount(); +var atomRange = iterStructure.getAtomIndices(); +var modelRange = iterStructure.getModelIndices(); +var bsAll = iterStructure.getBSAll(); +var m0; +var m1; +var models = this.ms.am; +if (this.ml.isTrajectory) { +m0 = m1 = modelRange[0]; +} else { +m0 = modelRange[0] + this.ml.baseModelIndex; +m1 = modelRange[1] + this.ml.baseModelIndex; +}this.ml.structuresDefinedInFile.setBits(m0, m1 + 1); +var bs; +var m; +if (bsAll != null) { +for (var i = m0, t0; i <= m1; i++) if (Clazz.instanceOf((m = models[i]),"JM.BioModel")) for (var j = 0; j < 5; j++) if ((bs = bsAll[t0 = JM.BioResolver.mytypes[j]]) != null && !bs.isEmpty()) (m).addStructureByBS(0, t0, JM.BioResolver.types[j], bs); + + +return; +}var startChainID = iterStructure.getStartChainID(); +var startSequenceNumber = iterStructure.getStartSequenceNumber(); +var startInsertionCode = iterStructure.getStartInsertionCode(); +var endSequenceNumber = iterStructure.getEndSequenceNumber(); +var endChainID = iterStructure.getEndChainID(); +var endInsertionCode = iterStructure.getEndInsertionCode(); +var type = (t === J.c.STR.NOT ? J.c.STR.NONE : t); +var startSeqCode = JM.Group.getSeqcodeFor(startSequenceNumber, startInsertionCode); +var endSeqCode = JM.Group.getSeqcodeFor(endSequenceNumber, endInsertionCode); +if (this.bsAssigned == null) this.bsAssigned = new JU.BS(); +for (var i = m0, i0 = 0; i <= m1; i++) if (Clazz.instanceOf((m = models[i]),"JM.BioModel")) (m).addSecondaryStructure(type, id, serID, count, startChainID, startSeqCode, endChainID, endSeqCode, (i0 = m.firstAtomIndex) + atomRange[0], i0 + atomRange[1], this.bsAssigned); + +}, "J.api.JmolAdapterStructureIterator"); +Clazz.defineMethod(c$, "setGroupLists", +function(ipt){ +this.ml.group3Lists[ipt + 1] = JM.Group.standardGroupList; +this.ml.group3Counts[ipt + 1] = Clazz.newIntArray (JM.BioResolver.group3Count + 10, 0); +if (this.ml.group3Lists[0] == null) { +this.ml.group3Lists[0] = JM.Group.standardGroupList; +this.ml.group3Counts[0] = Clazz.newIntArray (JM.BioResolver.group3Count + 10, 0); +}}, "~N"); +Clazz.defineMethod(c$, "isKnownPDBGroup", +function(g3, max){ +var pt = JM.BioResolver.knownGroupID(g3); +return (pt > 0 ? pt < max : max == 2147483647 && JM.BioResolver.checkCarbohydrate(g3)); +}, "~S,~N"); +Clazz.defineMethod(c$, "lookupSpecialAtomID", +function(name){ +if (JM.BioResolver.htSpecialAtoms == null) { +JM.BioResolver.htSpecialAtoms = new java.util.Hashtable(); +for (var i = JM.BioResolver.specialAtomNames.length; --i >= 0; ) { +var specialAtomName = JM.BioResolver.specialAtomNames[i]; +if (specialAtomName != null) JM.BioResolver.htSpecialAtoms.put(specialAtomName, Byte.$valueOf(i)); +} +}var boxedAtomID = JM.BioResolver.htSpecialAtoms.get(name); +return (boxedAtomID == null ? 0 : boxedAtomID.byteValue()); +}, "~S"); +Clazz.defineMethod(c$, "getPdbBondInfo", +function(group3, isLegacy){ +if (JM.BioResolver.htPdbBondInfo == null) JM.BioResolver.htPdbBondInfo = new java.util.Hashtable(); +var info = JM.BioResolver.htPdbBondInfo.get(group3); +if (info != null) return info; +var pt = JM.BioResolver.knownGroupID(group3); +if (pt < 0 || pt > JM.BioResolver.pdbBondInfo.length) return null; +var s = JM.BioResolver.pdbBondInfo[pt]; +if (isLegacy && (pt = s.indexOf("O3'")) >= 0) s = s.substring(0, pt); +var temp = JU.PT.getTokens(s); +info = new Array(Clazz.doubleToInt(temp.length / 2)); +for (var i = 0, p = 0; i < info.length; i++) { +var source = temp[p++]; +var target = temp[p++]; +if (target.length == 1) switch ((target.charAt(0)).charCodeAt(0)) { +case 78: +target = "H@H2"; +break; +case 66: +target = "HB3@HB2"; +break; +case 68: +target = "HD3@HD2"; +break; +case 71: +target = "HG3@HG2"; +break; +case 50: +target = "H2'@H2''"; +break; +case 53: +target = "H5''@H5'"; +break; +} +if (target.charAt(0) != 'H' && source.compareTo(target) > 0) { +s = target; +target = source; +source = s; +}info[i] = Clazz.newArray(-1, [source, target, (target.startsWith("H") ? "1" : "2")]); +} +JM.BioResolver.htPdbBondInfo.put(group3, info); +return info; +}, "~S,~B"); +c$.knownGroupID = Clazz.defineMethod(c$, "knownGroupID", +function(group3){ +if (group3 == null || group3.length == 0) return 0; +var boxedGroupID = JM.BioResolver.htGroup.get(group3); +return (boxedGroupID == null ? -1 : boxedGroupID.shortValue()); +}, "~S"); +c$.checkCarbohydrate = Clazz.defineMethod(c$, "checkCarbohydrate", +function(group3){ +return (group3 != null && ",[AHR],[ALL],[AMU],[ARA],[ARB],[BDF],[BDR],[BGC],[BMA],[FCA],[FCB],[FRU],[FUC],[FUL],[GAL],[GLA],[GLC],[GXL],[GUP],[LXC],[MAN],[RAM],[RIB],[RIP],[XYP],[XYS],[CBI],[CT3],[CTR],[CTT],[LAT],[MAB],[MAL],[MLR],[MTT],[SUC],[TRE],[GCU],[MTL],[NAG],[NDG],[RHA],[SOR],[SOL],[SOE],[XYL],[A2G],[LBT],[NGA],[SIA],[SLB],[AFL],[AGC],[GLB],[NAN],[RAA]".indexOf("[" + group3.toUpperCase() + "]") >= 0); +}, "~S"); +Clazz.defineMethod(c$, "isHetero", +function(group3){ +switch (group3.length) { +case 1: +group3 += " "; +break; +case 2: +group3 += " "; +break; +case 3: +break; +default: +return true; +} +var pt = JM.Group.standardGroupList.indexOf(group3); +return (pt < 0 || Clazz.doubleToInt(pt / 6) + 1 >= 42); +}, "~S"); +Clazz.defineMethod(c$, "toStdAmino3", +function(g1){ +if (g1.length == 0) return ""; +var s = new JU.SB(); +var pt = JM.BioResolver.knownGroupID("==A"); +if (pt < 0) { +for (var i = 1; i <= 20; i++) { +pt = JM.BioResolver.knownGroupID(JM.BioResolver.predefinedGroup3Names[i]); +JM.BioResolver.htGroup.put("==" + JM.BioResolver.predefinedGroup1Names[i], Short.$valueOf(pt)); +} +}for (var i = 0, n = g1.length; i < n; i++) { +var ch = g1.charAt(i); +pt = JM.BioResolver.knownGroupID("==" + ch); +if (pt < 0) pt = 23; +s.append(" ").append(JM.BioResolver.predefinedGroup3Names[pt]); +} +return s.toString().substring(1); +}, "~S"); +Clazz.defineMethod(c$, "getGroupID", +function(g3){ +return JM.BioResolver.getGroupIdFor(g3); +}, "~S"); +c$.getGroupIdFor = Clazz.defineMethod(c$, "getGroupIdFor", +function(group3){ +if (group3 != null) group3 = group3.trim(); +var groupID = JM.BioResolver.knownGroupID(group3); +return (groupID == -1 ? JM.BioResolver.addGroup3Name(group3) : groupID); +}, "~S"); +c$.addGroup3Name = Clazz.defineMethod(c$, "addGroup3Name", +function(group3){ +if (JM.BioResolver.group3NameCount == JM.Group.group3Names.length) JM.Group.group3Names = JU.AU.doubleLengthS(JM.Group.group3Names); +var groupID = JM.BioResolver.group3NameCount++; +JM.Group.group3Names[groupID] = group3; +JM.BioResolver.htGroup.put(group3, Short.$valueOf(groupID)); +return groupID; +}, "~S"); +c$.getStandardPdbHydrogenCount = Clazz.defineMethod(c$, "getStandardPdbHydrogenCount", +function(group3){ +var pt = JM.BioResolver.knownGroupID(group3); +return (pt < 0 || pt >= JM.BioResolver.pdbHydrogenCount.length ? -1 : JM.BioResolver.pdbHydrogenCount[pt]); +}, "~S"); +c$.getSpecialAtomName = Clazz.defineMethod(c$, "getSpecialAtomName", +function(atomID){ +return JM.BioResolver.specialAtomNames[atomID]; +}, "~N"); +Clazz.defineMethod(c$, "getArgbs", +function(tok){ +switch (tok) { +case 2097166: +return JM.BioResolver.argbsNucleic; +case 2097154: +return JM.BioResolver.argbsAmino; +case 1073742144: +return JM.BioResolver.argbsShapely; +case 1153433601: +return JM.BioResolver.argbsChainAtom; +case 1612709894: +return JM.BioResolver.argbsChainHetero; +} +return null; +}, "~N"); +Clazz.defineMethod(c$, "getBioModelSet", +function(modelSet){ +if (modelSet.bioModelset == null) modelSet.bioModelset = new JM.BioModelSet().set(this.vwr, modelSet); +return modelSet.bioModelset; +}, "JM.ModelSet"); +c$.htGroup = new java.util.Hashtable(); +c$.types = Clazz.newArray(-1, [J.c.STR.HELIXPI, J.c.STR.HELIXALPHA, J.c.STR.SHEET, J.c.STR.HELIX310, J.c.STR.TURN]); +c$.mytypes = Clazz.newIntArray(-1, [0, 2, 3, 4, 6]); +c$.htPdbBondInfo = null; +c$.pdbBondInfo = Clazz.newArray(-1, ["", "N N CA HA C O CB HB?", "N N CA HA C O CB B CG G CD D NE HE CZ NH1 NH1 HH11@HH12 NH2 HH22@HH21", "N N CA HA C O CB B CG OD1 ND2 HD21@HD22", "N N CA HA C O CB B CG OD1", "N N CA HA C O CB B SG HG", "N N CA HA C O CB B CG G CD OE1 NE2 HE22@HE21", "N N CA HA C O CB B CG G CD OE1", "N N CA HA2@HA3 C O", "N N CA HA C O CB B CG CD2 ND1 CE1 ND1 HD1 CD2 HD2 CE1 HE1 NE2 HE2", "N N CA HA C O CB HB CG1 HG13@HG12 CG2 HG2? CD1 HD1?", "N N CA HA C O CB B CG HG CD1 HD1? CD2 HD2?", "N N CA HA C O CB B CG G CD HD2@HD3 CE HE3@HE2 NZ HZ?", "N N CA HA C O CB B CG G CE HE?", "N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 CD2 HD2 CE1 CZ CE1 HE1 CE2 HE2 CZ HZ", "N H CA HA C O CB B CG G CD D", "N N CA HA C O CB B OG HG", "N N CA HA C O CB HB OG1 HG1 CG2 HG2?", "N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 NE1 HE1 CE3 CZ3 CE3 HE3 CZ2 CH2 CZ2 HZ2 CZ3 HZ3 CH2 HH2", "N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 CD2 HD2 CE1 CZ CE1 HE1 CE2 HE2 OH HH", "N N CA HA C O CB HB CG1 HG1? CG2 HG2?", "N N CA HA C O CB B", "N N CA HA C O CB B CG G", "", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 N2 H22@H21 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 C4 N4 H41@H42 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 N1 N6 H61@H62 C2 N3 C2 H2 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C7 H7? C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 C2 H2 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 N2 H22@H21 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 C4 N4 H41@H42 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 N1 N6 H61@H62 C2 N3 C2 H2 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C7 H7? C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 C2 H2 O3' HO3' O5' HO5'"]); +c$.pdbHydrogenCount = Clazz.newIntArray(-1, [0, 6, 16, 7, 6, 6, 9, 8, 4, 9, 12, 12, 14, 10, 10, 8, 6, 8, 11, 10, 10, 3, 5, 0, 13, 13, 13, -1, 12, 12, 13, 13, 13, 14, 12, 12]); +c$.group3Count = 0; +c$.predefinedGroup1Names = Clazz.newCharArray(-1, ['\0', 'A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P', 'S', 'T', 'W', 'Y', 'V', 'A', 'G', '?', 'G', 'C', 'A', 'T', 'U', 'I', 'G', 'C', 'A', 'T', 'U', 'I', 'G', 'C', 'A', 'T', 'U', 'I']); +c$.group3NameCount = 0; +c$.predefinedGroup3Names = Clazz.newArray(-1, [" ", "ALA", "ARG", "ASN", "ASP", "CYS", "GLN", "GLU", "GLY", "HIS", "ILE", "LEU", "LYS", "MET", "PHE", "PRO", "SER", "THR", "TRP", "TYR", "VAL", "ASX", "GLX", "UNK", "G ", "C ", "A ", "T ", "U ", "I ", "DG ", "DC ", "DA ", "DT ", "DU ", "DI ", "+G ", "+C ", "+A ", "+T ", "+U ", "+I ", "HOH", "DOD", "WAT", "UREA", "PO4", "SO4", "UNL"]); +c$.specialAtomNames = Clazz.newArray(-1, [null, "N", "CA", "C", "O", "O1", "O5'", "C5'", "C4'", "C3'", "O3'", "C2'", "C1'", "P", "OD1", "OD2", "OE1", "OE2", "SG", null, null, null, null, null, null, null, null, null, null, null, null, null, "N1", "C2", "N3", "C4", "C5", "C6", "O2", "N7", "C8", "N9", "N4", "N2", "N6", "C5M", "O6", "O4", "S4", "C7", "H1", "H2", "H3", null, null, null, null, null, null, null, null, null, null, null, "OXT", "H", "1H", "2H", "3H", "HA", "1HA", "2HA", "H5T", "O5T", "O1P", "OP1", "O2P", "OP2", "O4'", "O2'", "1H5'", "2H5'", "H4'", "H3'", "1H2'", "2H2'", "2HO'", "H1'", "H3T", "HO3'", "HO5'", "HA2", "HA3", "HA2", "H5'", "H5''", "H2'", "H2''", "HO2'", "O3P", "OP3"]); +c$.ATOMID_MAX = JM.BioResolver.specialAtomNames.length; +c$.htSpecialAtoms = null; +c$.argbsAmino = Clazz.newIntArray(-1, [0xFFBEA06E, 0xFFC8C8C8, 0xFF145AFF, 0xFF00DCDC, 0xFFE60A0A, 0xFFE6E600, 0xFF00DCDC, 0xFFE60A0A, 0xFFEBEBEB, 0xFF8282D2, 0xFF0F820F, 0xFF0F820F, 0xFF145AFF, 0xFFE6E600, 0xFF3232AA, 0xFFDC9682, 0xFFFA9600, 0xFFFA9600, 0xFFB45AB4, 0xFF3232AA, 0xFF0F820F, 0xFFFF69B4, 0xFFFF69B4, 0xFFBEA06E]); +c$.argbsNucleic = Clazz.newIntArray(-1, [0xFFBEA06E, 0xFFA0A0A0, 0xFF0F820F, 0xFFE6E600, 0xFFE60A0A, 0xFF145AFF, 0xFF00DCDC, 0xFF00DCDC, 0xFF0F820F, 0xFFE6E600, 0xFFE60A0A, 0xFF145AFF, 0xFF00DCDC, 0xFF00DCDC, 0xFF0F820F, 0xFFE6E600, 0xFFE60A0A, 0xFF145AFF, 0xFF00DCDC, 0xFF00DCDC]); +c$.argbsChainAtom = Clazz.newIntArray(-1, [0xFFffffff, 0xFFC0D0FF, 0xFFB0FFB0, 0xFFFFC0C8, 0xFFFFFF80, 0xFFFFC0FF, 0xFFB0F0F0, 0xFFFFD070, 0xFFF08080, 0xFFF5DEB3, 0xFF00BFFF, 0xFFCD5C5C, 0xFF66CDAA, 0xFF9ACD32, 0xFFEE82EE, 0xFF00CED1, 0xFF00FF7F, 0xFF3CB371, 0xFF00008B, 0xFFBDB76B, 0xFF006400, 0xFF800000, 0xFF808000, 0xFF800080, 0xFF008080, 0xFFB8860B, 0xFFB22222]); +c$.argbsChainHetero = Clazz.newIntArray(-1, [0xFFffffff, -7298865, -8335464, -3174224, -3158160, -3174193, -8339264, -3170208, -4173712, -3821949, -16734257, -4895668, -11094638, -7686870, -4296002, -16730463, -16724113, -13329567, -16777029, -5922981, -16739328, -5242880, -5197824, -5242704, -16731984, -1526253, -4050382]); +c$.argbsShapely = Clazz.newIntArray(-1, [0xFFFF00FF, 0xFF00007C, 0xFFFF7C70, 0xFF8CFF8C, 0xFFA00042, 0xFFFFFF70, 0xFFFF4C4C, 0xFF660000, 0xFFFFFFFF, 0xFF7070FF, 0xFF004C00, 0xFF455E45, 0xFF4747B8, 0xFF534C52, 0xFFB8A042, 0xFF525252, 0xFFFF7042, 0xFFB84C00, 0xFF4F4600, 0xFF8C704C, 0xFFFF8CFF, 0xFFFF00FF, 0xFFFF00FF, 0xFFFF00FF, 0xFFFF7070, 0xFFFF8C4B, 0xFFA0A0FF, 0xFFA0FFA0, 0xFFFF8080, 0xFF80FFFF, 0xFFFF7070, 0xFFFF8C4B, 0xFFA0A0FF, 0xFFA0FFA0, 0xFFFF8080, 0xFF80FFFF, 0xFFFF7070, 0xFFFF8C4B, 0xFFA0A0FF, 0xFFA0FFA0, 0xFFFF8080, 0xFF80FFFF]); +{ +{ +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Bond.js b/config/plugins/visualizations/jmol/static/j2s/JM/Bond.js new file mode 100755 index 000000000000..54bf3edfa0fd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Bond.js @@ -0,0 +1,143 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JU.Edge", "JV.JC"], "JM.Bond", ["JU.C"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atom1 = null; +this.atom2 = null; +this.mad = 0; +this.colix = 0; +this.shapeVisibilityFlags = 0; +Clazz.instantialize(this, arguments);}, JM, "Bond", JU.Edge); +Clazz.makeConstructor(c$, +function(atom1, atom2, order, mad, colix){ +Clazz.superConstructor (this, JM.Bond, []); +this.atom1 = atom1; +this.atom2 = atom2; +this.colix = colix; +this.setOrder(order); +this.setMad(mad); +}, "JM.Atom,JM.Atom,~N,~N,~N"); +Clazz.defineMethod(c$, "setMad", +function(mad){ +this.mad = mad; +this.setShapeVisibility(mad != 0); +}, "~N"); +Clazz.defineMethod(c$, "setShapeVisibility", +function(isVisible){ +var wasVisible = ((this.shapeVisibilityFlags & JM.Bond.myVisibilityFlag) != 0); +if (wasVisible == isVisible) return; +this.atom1.addDisplayedBond(JM.Bond.myVisibilityFlag, isVisible); +this.atom2.addDisplayedBond(JM.Bond.myVisibilityFlag, isVisible); +if (isVisible) this.shapeVisibilityFlags |= JM.Bond.myVisibilityFlag; + else this.shapeVisibilityFlags &= ~JM.Bond.myVisibilityFlag; +}, "~B"); +Clazz.defineMethod(c$, "getIdentity", +function(){ +return (this.index + 1) + " " + JU.Edge.getBondOrderNumberFromOrder(this.order) + " " + this.atom1.getInfo() + " -- " + this.atom2.getInfo() + " " + this.atom1.distance(this.atom2); +}); +Clazz.overrideMethod(c$, "isCovalent", +function(){ +return (this.order & 1023) != 0; +}); +Clazz.overrideMethod(c$, "isHydrogen", +function(){ +return JU.Edge.isOrderH(this.order); +}); +Clazz.defineMethod(c$, "isStereo", +function(){ +return (this.order & 1024) != 0; +}); +Clazz.overrideMethod(c$, "isPartial", +function(){ +return (this.order & 224) != 0; +}); +Clazz.defineMethod(c$, "isAromatic", +function(){ +return (this.order & 512) != 0; +}); +Clazz.defineMethod(c$, "getEnergy", +function(){ +return 0; +}); +Clazz.defineMethod(c$, "getValence", +function(){ +return (!this.isCovalent() || this.order == 33 ? 0 : this.is(515) ? 1 : this.order & 7); +}); +Clazz.defineMethod(c$, "deleteAtomReferences", +function(){ +if (this.atom1 != null) this.atom1.deleteBond(this); +if (this.atom2 != null) this.atom2.deleteBond(this); +this.atom1 = this.atom2 = null; +}); +Clazz.defineMethod(c$, "setTranslucent", +function(isTranslucent, translucentLevel){ +this.colix = JU.C.getColixTranslucent3(this.colix, isTranslucent, translucentLevel); +}, "~B,~N"); +Clazz.defineMethod(c$, "setOrder", +function(order){ +if (this.atom1.getElementNumber() == 16 && this.atom2.getElementNumber() == 16) order |= 256; +if (order == 512) order = 515; +this.order = order | (this.order & 131072); +}, "~N"); +Clazz.overrideMethod(c$, "getAtomIndex1", +function(){ +return this.atom1.i; +}); +Clazz.overrideMethod(c$, "getAtomIndex2", +function(){ +return this.atom2.i; +}); +Clazz.overrideMethod(c$, "getCovalentOrder", +function(){ +return JU.Edge.getCovalentBondOrder(this.order); +}); +Clazz.defineMethod(c$, "getOtherAtom", +function(thisAtom){ +return (this.atom1 === thisAtom ? this.atom2 : this.atom2 === thisAtom ? this.atom1 : null); +}, "JM.Atom"); +Clazz.defineMethod(c$, "is", +function(bondType){ +return (this.order & 131071) == bondType; +}, "~N"); +Clazz.overrideMethod(c$, "getOtherNode", +function(thisAtom){ +return (this.atom1 === thisAtom ? this.atom2 : this.atom2 === thisAtom || thisAtom == null ? this.atom1 : null); +}, "JU.SimpleNode"); +Clazz.defineMethod(c$, "setAtropisomerOptions", +function(){ +var i1; +var i2 = 2147483647; +var bonds = this.atom1.bonds; +for (i1 = 0; i1 < bonds.length; i1++) { +var a = bonds[i1].getOtherAtom(this.atom1); +if (a !== this.atom2) break; +} +if (i1 < bonds.length) { +bonds = this.atom2.bonds; +for (i2 = 0; i2 < bonds.length; i2++) { +var a = bonds[i2].getOtherAtom(this.atom2); +if (a !== this.atom1) break; +} +}this.order = (i1 > 2 || i2 >= bonds.length || i2 > 2 ? 1 : JU.Edge.getAtropismOrder(i1 + 1, i2 + 1)); +}); +Clazz.overrideMethod(c$, "getCIPChirality", +function(doCalculate){ +return ""; +}, "~B"); +Clazz.overrideMethod(c$, "setCIPChirality", +function(c){ +}, "~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.atom1 + " - " + this.atom2; +}); +Clazz.overrideMethod(c$, "getAtom", +function(i){ +return (i == 1 ? this.atom2 : this.atom1); +}, "~N"); +Clazz.defineMethod(c$, "isCovalentNotPartial0", +function(){ +return ((this.order & 1023) != 0 && this.order != 33); +}); +c$.myVisibilityFlag = JV.JC.getShapeVisibilityFlag(1); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BondCollection.js b/config/plugins/visualizations/jmol/static/j2s/JM/BondCollection.js new file mode 100755 index 000000000000..f3a45c754ff6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BondCollection.js @@ -0,0 +1,537 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.AtomCollection", "JU.V3"], "JM.BondCollection", ["JU.AU", "$.BS", "$.Measure", "JM.Bond", "$.BondIteratorSelected", "$.BondSet", "$.HBond", "JU.BSUtil", "$.C", "$.Edge"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bo = null; +this.bondCount = 0; +this.numCached = null; +this.freeBonds = null; +this.molecules = null; +this.moleculeCount = 0; +this.defaultCovalentMad = 0; +this.bsAromaticSingle = null; +this.bsAromaticDouble = null; +this.bsAromatic = null; +this.haveHiddenBonds = false; +this.v1 = null; +this.v2 = null; +this.haveAtropicBonds = false; +Clazz.instantialize(this, arguments);}, JM, "BondCollection", JM.AtomCollection); +Clazz.prepareFields (c$, function(){ +this.v1 = new JU.V3(); +this.v2 = new JU.V3(); +}); +Clazz.defineMethod(c$, "setupBC", +function(){ +this.bsAromatic = new JU.BS(); +this.numCached = Clazz.newIntArray (5, 0); +this.freeBonds = new Array(5); +for (var i = 5; --i > 0; ) this.freeBonds[i] = new Array(200); + +this.setupAC(); +}); +Clazz.defineMethod(c$, "releaseModelSetBC", +function(){ +this.bo = null; +this.freeBonds = null; +this.releaseModelSetAC(); +}); +Clazz.defineMethod(c$, "getBondIteratorForType", +function(bondType, bsAtoms){ +return new JM.BondIteratorSelected(this.bo, this.bondCount, bondType, bsAtoms, this.vwr.getBoolean(603979812)); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getBondIterator", +function(bsBonds){ +return new JM.BondIteratorSelected(this.bo, this.bondCount, 131071, bsBonds, false); +}, "JU.BS"); +Clazz.defineMethod(c$, "getBondColix1", +function(i){ +return JU.C.getColixInherited(this.bo[i].colix, this.bo[i].atom1.colixAtom); +}, "~N"); +Clazz.defineMethod(c$, "getBondColix2", +function(i){ +return JU.C.getColixInherited(this.bo[i].colix, this.bo[i].atom2.colixAtom); +}, "~N"); +Clazz.defineMethod(c$, "getBondCountInModel", +function(modelIndex){ +var n = 0; +for (var i = this.bondCount; --i >= 0; ) if (this.bo[i].atom1.mi == modelIndex) n++; + +return n; +}, "~N"); +Clazz.defineMethod(c$, "getBondsForSelectedAtoms", +function(bsAtoms, bondSelectionModeOr){ +var bs = new JU.BS(); +var n = bsAtoms.cardinality(); +switch (n) { +case 0: +return bs; +case 1: +case 2: +var a = this.at[bsAtoms.nextSetBit(0)]; +var b = (n == 2 ? this.at[bsAtoms.nextSetBit(a.i + 1)] : null); +if (n == 1 || bondSelectionModeOr) { +for (var i = a.getBondCount(); --i >= 0; ) bs.set(a.bonds[i].index); + +if (b != null) for (var i = b.getBondCount(); --i >= 0; ) bs.set(b.bonds[i].index); + +} else { +var bond = a.getBond(b); +if (b != null) bs.set(bond.index); +}return bs; +} +for (var iBond = 0; iBond < this.bondCount; ++iBond) { +var bond = this.bo[iBond]; +var isSelected1 = bsAtoms.get(bond.atom1.i); +var isSelected2 = bsAtoms.get(bond.atom2.i); +if (bondSelectionModeOr ? isSelected1 || isSelected2 : isSelected1 && isSelected2) bs.set(iBond); +} +return bs; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "bondAtoms", +function(atom1, atom2, order, mad, bsBonds, energy, addGroup, isNew){ +var bond = this.getOrAddBond(atom1, atom2, order, mad, bsBonds, energy, true); +if (isNew) { +bond.order |= 131072; +if (addGroup) { +atom1.group = atom2.group; +atom1.group.addAtoms(atom1.i); +}}return bond; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS,~N,~B,~B"); +Clazz.defineMethod(c$, "getOrAddBond", +function(atom, atomOther, order, mad, bsBonds, energy, overrideBonding){ +var i; +if (order == 131071 || order == 65535) order = 1; +if (atom.isBonded(atomOther)) { +i = atom.getBond(atomOther).index; +if (overrideBonding) { +this.bo[i].setOrder(order); +this.bo[i].setMad(mad); +if (Clazz.instanceOf(this.bo[i],"JM.HBond")) (this.bo[i]).energy = energy; +}} else { +if (this.bondCount == this.bo.length) this.bo = JU.AU.arrayCopyObject(this.bo, this.bondCount + 250); +i = this.setBond(this.bondCount++, this.bondMutually(atom, atomOther, order, mad, energy)).index; +}if (bsBonds != null) bsBonds.set(i); +return this.bo[i]; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS,~N,~B"); +Clazz.defineMethod(c$, "setBond", +function(index, bond){ +return this.bo[bond.index = index] = bond; +}, "~N,JM.Bond"); +Clazz.defineMethod(c$, "bondMutually", +function(atom, atomOther, order, mad, energy){ +var bond; +if (JU.Edge.isOrderH(order)) { +bond = new JM.HBond(atom, atomOther, order, mad, 0, energy); +} else { +bond = new JM.Bond(atom, atomOther, order, mad, 0); +}this.addBondToAtom(atom, bond); +this.addBondToAtom(atomOther, bond); +return bond; +}, "JM.Atom,JM.Atom,~N,~N,~N"); +Clazz.defineMethod(c$, "addBondToAtom", +function(atom, bond){ +if (atom.bonds == null) { +atom.bonds = new Array(1); +atom.bonds[0] = bond; +} else { +atom.bonds = this.addToBonds(bond, atom.bonds); +}}, "JM.Atom,JM.Bond"); +Clazz.defineMethod(c$, "addToBonds", +function(newBond, oldBonds){ +var newBonds; +if (oldBonds == null) { +if (this.numCached[1] > 0) newBonds = this.freeBonds[1][--this.numCached[1]]; + else newBonds = new Array(1); +newBonds[0] = newBond; +} else { +var oldLength = oldBonds.length; +var newLength = oldLength + 1; +if (newLength < 5 && this.numCached[newLength] > 0) newBonds = this.freeBonds[newLength][--this.numCached[newLength]]; + else newBonds = new Array(newLength); +newBonds[oldLength] = newBond; +for (var i = oldLength; --i >= 0; ) newBonds[i] = oldBonds[i]; + +if (oldLength < 5 && this.numCached[oldLength] < 200) this.freeBonds[oldLength][this.numCached[oldLength]++] = oldBonds; +}return newBonds; +}, "JM.Bond,~A"); +Clazz.defineMethod(c$, "addHBond", +function(atom1, atom2, order, energy){ +if (this.bondCount == this.bo.length) this.bo = JU.AU.arrayCopyObject(this.bo, this.bondCount + 250); +return this.setBond(this.bondCount++, this.bondMutually(atom1, atom2, order, 1, energy)).index; +}, "JM.Atom,JM.Atom,~N,~N"); +Clazz.defineMethod(c$, "deleteAllBonds2", +function(){ +this.vwr.setShapeProperty(1, "reset", null); +for (var i = this.bondCount; --i >= 0; ) { +this.bo[i].deleteAtomReferences(); +this.bo[i] = null; +} +this.bondCount = 0; +}); +Clazz.defineMethod(c$, "getDefaultMadFromOrder", +function(order){ +return (JU.Edge.isOrderH(order) ? 1 : order == 32768 ? Clazz.doubleToInt(Math.floor(this.vwr.getFloat(570425406) * 2000)) : this.defaultCovalentMad); +}, "~N"); +Clazz.defineMethod(c$, "deleteConnections", +function(minD, maxD, order, bsA, bsB, isBonds, matchNull){ +var minDIsFraction = (minD < 0); +var maxDIsFraction = (maxD < 0); +var isFractional = (minDIsFraction || maxDIsFraction); +minD = this.fixD(minD, minDIsFraction); +maxD = this.fixD(maxD, maxDIsFraction); +var bsDelete = new JU.BS(); +var nDeleted = 0; +var newOrder = order |= 131072; +if (!matchNull && JU.Edge.isOrderH(order)) order = 30720; +var bsBonds; +if (isBonds) { +bsBonds = bsA; +} else { +bsBonds = new JU.BS(); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var a = this.at[i]; +if (a.bonds != null) for (var j = a.bonds.length; --j >= 0; ) if (bsB.get(a.getBondedAtomIndex(j))) bsBonds.set(a.bonds[j].index); + +} +}for (var i = bsBonds.nextSetBit(0); i < this.bondCount && i >= 0; i = bsBonds.nextSetBit(i + 1)) { +var bond = this.bo[i]; +if (!this.isInRange(bond.atom1, bond.atom2, minD, maxD, minDIsFraction, maxDIsFraction, isFractional)) continue; +if (matchNull || newOrder == (bond.order & -257 | 131072) || (order & bond.order & 30720) != 0) { +bsDelete.set(i); +nDeleted++; +}} +if (nDeleted > 0) (this).deleteBonds(bsDelete, false); +return Clazz.newIntArray(-1, [0, nDeleted]); +}, "~N,~N,~N,JU.BS,JU.BS,~B,~B"); +Clazz.defineMethod(c$, "fixD", +function(d, isF){ +return (isF ? -d : d * d); +}, "~N,~B"); +Clazz.defineMethod(c$, "isInRange", +function(atom1, atom2, minD, maxD, minFrac, maxfrac, isFractional){ +var d2 = atom1.distanceSquared(atom2); +if (isFractional) { +var dAB = Math.sqrt(d2); +var dABcalc = atom1.getBondingRadius() + atom2.getBondingRadius(); +return ((minFrac ? dAB >= dABcalc * minD : d2 >= minD) && (maxfrac ? dAB <= dABcalc * maxD : d2 <= maxD)); +}return (d2 >= minD && d2 <= maxD); +}, "JM.Atom,JM.Atom,~N,~N,~B,~B,~B"); +Clazz.defineMethod(c$, "dBb", +function(bsBond, isFullModel){ +var iDst = bsBond.nextSetBit(0); +if (iDst < 0) return; +(this).resetMolecules(); +var modelIndexLast = -1; +var n = bsBond.cardinality(); +for (var iSrc = iDst; iSrc < this.bondCount; ++iSrc) { +var bond = this.bo[iSrc]; +if (n > 0 && bsBond.get(iSrc)) { +n--; +if (!isFullModel) { +var modelIndex = bond.atom1.mi; +if (modelIndex != modelIndexLast) (this).am[modelIndexLast = modelIndex].resetBoundCount(); +}bond.deleteAtomReferences(); +} else { +this.setBond(iDst++, bond); +}} +for (var i = this.bondCount; --i >= iDst; ) this.bo[i] = null; + +this.bondCount = iDst; +var sets = this.vwr.getShapeProperty(1, "sets"); +if (sets != null) for (var i = 0; i < sets.length; i++) JU.BSUtil.deleteBits(sets[i], bsBond); + +JU.BSUtil.deleteBits(this.bsAromatic, bsBond); +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "resetAromatic", +function(){ +for (var i = this.bondCount; --i >= 0; ) { +var bond = this.bo[i]; +if (bond.isAromatic()) bond.setOrder(515); +} +}); +Clazz.defineMethod(c$, "assignAromaticBondsBs", +function(isUserCalculation, bsBonds){ +if (!isUserCalculation) this.bsAromatic = new JU.BS(); +this.bsAromaticSingle = new JU.BS(); +this.bsAromaticDouble = new JU.BS(); +var isAll = (bsBonds == null); +var i0 = (isAll ? this.bondCount - 1 : bsBonds.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +var bond = this.bo[i]; +if (this.bsAromatic.get(i)) bond.setOrder(515); +switch (bond.order & 131071) { +case 515: +if (!this.assignAromaticMustBeSingle(bond.atom1) && !this.assignAromaticMustBeSingle(bond.atom2)) { +this.bsAromatic.set(i); +break; +}bond.order = 513; +case 513: +this.bsAromaticSingle.set(i); +break; +case 514: +this.bsAromaticDouble.set(i); +break; +} +} +var bond; +isAll = (bsBonds == null); +i0 = (isAll ? this.bondCount - 1 : bsBonds.nextSetBit(0)); +var bsTest = new JU.BS(); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (!bond.is(515) || this.bsAromaticDouble.get(i) || this.bsAromaticSingle.get(i)) continue; +bsTest.set(i); +if (bond.atom1.getElementNumber() == 8 || bond.atom2.getElementNumber() == 8) { +if (!this.assignAromaticDouble(bond)) this.assignAromaticSingle(bond); +}} +for (var i = bsTest.nextSetBit(0); i >= 0; i = bsTest.nextSetBit(i + 1)) if (!this.assignAromaticDouble(bond = this.bo[i])) this.assignAromaticSingle(bond); + +var bsModels = new JU.BS(); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (this.bsAromaticDouble.get(i)) { +if (!bond.is(514)) { +this.bsAromatic.set(i); +bsModels.set(bond.atom1.mi); +bond.setOrder(this.isLinear(bond, this.v1, this.v2) ? 3 : 514); +}} else if (this.bsAromaticSingle.get(i) || bond.isAromatic()) { +if (!bond.is(513)) { +this.bsAromatic.set(i); +bond.setOrder(513); +}}} +var models = (this).am; +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (models[i].isBioModel) models[i].isPdbWithMultipleBonds = true; + +this.assignAromaticNandO(bsBonds); +this.bsAromaticSingle = null; +this.bsAromaticDouble = null; +}, "~B,JU.BS"); +Clazz.defineMethod(c$, "isLinear", +function(b, v1, v2){ +if (b.order == 3) return true; +if (b.atom1.getCovalentBondCount() != 2 || b.atom2.getCovalentBondCount() != 2) return false; +var edges = b.atom1.getEdges(); +for (var i = edges.length; -i >= 0; ) { +if (edges[i] !== b && edges[i].isCovalent()) { +if (JU.Measure.computeAngle(edges[i].getOtherNode(b.atom1), b.atom1, b.atom2, v1, v2, true) < 175) return false; +break; +}} +edges = b.atom2.getEdges(); +for (var i = edges.length; -i >= 0; ) { +if (edges[i] !== b && edges[i].isCovalent()) { +if (JU.Measure.computeAngle(edges[i].getOtherNode(b.atom2), b.atom2, b.atom1, v1, v2, true) < 175) return false; +break; +}} +return true; +}, "JM.Bond,JU.V3,JU.V3"); +Clazz.defineMethod(c$, "assignAromaticDouble", +function(bond){ +var bondIndex = bond.index; +if (this.bsAromaticSingle.get(bondIndex)) return false; +if (this.bsAromaticDouble.get(bondIndex)) return true; +this.bsAromaticDouble.set(bondIndex); +if (!this.assignAromaticSingleForAtom(bond.atom1, bondIndex) || !this.assignAromaticSingleForAtom(bond.atom2, bondIndex)) { +this.bsAromaticDouble.clear(bondIndex); +return false; +}return true; +}, "JM.Bond"); +Clazz.defineMethod(c$, "assignAromaticSingle", +function(bond){ +var bondIndex = bond.index; +if (this.bsAromaticDouble.get(bondIndex)) return false; +if (this.bsAromaticSingle.get(bondIndex)) return true; +this.bsAromaticSingle.set(bondIndex); +if (!this.assignAromaticDoubleForAtom(bond.atom1) || !this.assignAromaticDoubleForAtom(bond.atom2)) { +this.bsAromaticSingle.clear(bondIndex); +return false; +}return true; +}, "JM.Bond"); +Clazz.defineMethod(c$, "assignAromaticSingleForAtom", +function(atom, notBondIndex){ +var bonds = atom.bonds; +if (bonds == null) return false; +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +var bondIndex = bond.index; +if (bondIndex == notBondIndex || !bond.isAromatic() || this.bsAromaticSingle.get(bondIndex)) continue; +if (this.bsAromaticDouble.get(bondIndex) || !this.assignAromaticSingle(bond)) { +return false; +}} +return true; +}, "JM.Atom,~N"); +Clazz.defineMethod(c$, "assignAromaticDoubleForAtom", +function(atom){ +var bonds = atom.bonds; +if (bonds == null) return false; +var haveDouble = false; +var lastBond = -1; +for (var i = bonds.length; --i >= 0; ) { +if (this.bsAromaticDouble.get(bonds[i].index)) haveDouble = true; +if (bonds[i].isAromatic()) lastBond = i; +} +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +var bondIndex = bond.index; +if (!bond.isAromatic() || this.bsAromaticDouble.get(bondIndex) || this.bsAromaticSingle.get(bondIndex)) continue; +if (!haveDouble && this.assignAromaticDouble(bond)) haveDouble = true; + else if ((haveDouble || i < lastBond) && !this.assignAromaticSingle(bond)) { +return false; +}} +return haveDouble; +}, "JM.Atom"); +Clazz.defineMethod(c$, "allowAromaticBond", +function(b){ +if (this.assignAromaticMustBeSingle(b.atom1) || this.assignAromaticMustBeSingle(b.atom2)) return false; +switch (b.getCovalentOrder()) { +case 1: +case 2: +return b.atom1.getCovalentBondCount() <= 3 && b.atom2.getCovalentBondCount() <= 3; +default: +return false; +} +}, "JM.Bond"); +Clazz.defineMethod(c$, "assignAromaticMustBeSingle", +function(atom){ +var n = atom.getElementNumber(); +switch (n) { +case 6: +case 7: +case 8: +case 16: +break; +default: +return true; +} +var valence = atom.getValenceAromatic(false); +switch (n) { +case 6: +return (valence == 4); +case 7: +return (atom.group.getNitrogenAtom() === atom || valence == 3 && atom.getFormalCharge() < 1); +case 8: +return (atom.group.getCarbonylOxygenAtom() !== atom && valence == 2 && atom.getFormalCharge() < 1); +case 16: +return (atom.group.groupID == 5 || valence == 2 && atom.getFormalCharge() < 1); +} +return false; +}, "JM.Atom"); +Clazz.defineMethod(c$, "assignAromaticNandO", +function(bsSelected){ +var bond; +var isAll = (bsSelected == null); +var i0 = (isAll ? this.bondCount - 1 : bsSelected.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (!bond.is(513)) continue; +var atom1; +var atom2 = bond.atom2; +var n1; +var n2 = atom2.getElementNumber(); +if (n2 == 7 || n2 == 8) { +n1 = n2; +atom1 = atom2; +atom2 = bond.atom1; +n2 = atom2.getElementNumber(); +} else { +atom1 = bond.atom1; +n1 = atom1.getElementNumber(); +}if (n1 != 7 && n1 != 8) continue; +var valence = atom1.getValence(); +if (valence < 0) continue; +var bondorder = atom1.getCovalentBondCount(); +var charge = atom1.getFormalCharge(); +switch (n1) { +case 7: +if (valence == 3 && bondorder == 3 && charge < 1 && n2 == 6 && atom2.getValence() == 3) bond.setOrder(514); +break; +case 8: +if (valence == 1 && charge == 0 && (n2 == 14 || n2 == 16)) bond.setOrder(514); +break; +} +} +}, "JU.BS"); +Clazz.defineMethod(c$, "getAtomBitsMDb", +function(tokType, specInfo){ +var bs = new JU.BS(); +switch (tokType) { +default: +return this.getAtomBitsMDa(tokType, specInfo, bs); +case 1677721602: +var bsBonds = specInfo; +for (var i = bsBonds.nextSetBit(0); i >= 0; i = bsBonds.nextSetBit(i + 1)) { +if (i < this.bondCount) { +bs.set(this.bo[i].atom1.i); +bs.set(this.bo[i].atom2.i); +} else { +bsBonds.clear(i); +}} +return bs; +case 1073742331: +for (var i = this.bondCount; --i >= 0; ) if (this.bo[i].isAromatic()) { +bs.set(this.bo[i].atom1.i); +bs.set(this.bo[i].atom2.i); +} +return bs; +} +}, "~N,~O"); +Clazz.defineMethod(c$, "removeUnnecessaryBonds", +function(atom, deleteAtom){ +var bs = new JU.BS(); +var bsBonds = new JU.BS(); +var bonds = atom.bonds; +if (bonds == null) return; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalent()) { +var atom2 = bonds[i].getOtherAtom(atom); +if (atom2.getElementNumber() == 1) bs.set(bonds[i].getOtherAtom(atom).i); +} else { +bsBonds.set(bonds[i].index); +} +if (bsBonds.nextSetBit(0) >= 0) (this).deleteBonds(bsBonds, false); +if (deleteAtom) bs.set(atom.i); +if (bs.nextSetBit(0) >= 0) this.vwr.deleteAtoms(bs, false); +}, "JM.Atom,~B"); +Clazz.defineMethod(c$, "displayBonds", +function(bs, isDisplay){ +if (!isDisplay) this.haveHiddenBonds = true; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (i < this.bondCount && this.bo[i].mad != 0) this.bo[i].setShapeVisibility(isDisplay); + +}, "JM.BondSet,~B"); +Clazz.defineMethod(c$, "getAtomsConnected", +function(min, max, intType, bs){ +var isBonds = Clazz.instanceOf(bs,"JM.BondSet"); +var bsResult = (isBonds ? new JM.BondSet() : new JU.BS()); +var nBonded = Clazz.newIntArray (this.ac, 0); +var i; +var ishbond = (intType == 30720); +var isall = (intType == 65535); +for (var ibond = 0; ibond < this.bondCount; ibond++) { +var bond = this.bo[ibond]; +if (isall || bond.is(intType) || ishbond && bond.isHydrogen()) { +if (isBonds) { +bsResult.set(ibond); +} else { +if (bs.get(bond.atom1.i)) { +nBonded[i = bond.atom2.i]++; +bsResult.set(i); +}if (bs.get(bond.atom2.i)) { +nBonded[i = bond.atom1.i]++; +bsResult.set(i); +}}}} +if (isBonds) return bsResult; +var nonbonded = (min == 0); +for (i = this.ac; --i >= 0; ) { +var n = nBonded[i]; +if (this.at[i] == null || n < min || n > max) bsResult.clear(i); + else if (nonbonded && n == 0) bsResult.set(i); +} +return bsResult; +}, "~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "addConnectedHAtoms", +function(atom, bsAtoms){ +if (atom.bonds != null) for (var i = atom.bonds.length; --i >= 0; ) { +var atom2 = atom.bonds[i].getOtherAtom(atom); +if (atom2.getElementNumber() == 1) bsAtoms.set(atom2.i); +} +}, "JM.Atom,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BondIterator.js b/config/plugins/visualizations/jmol/static/j2s/JM/BondIterator.js new file mode 100755 index 000000000000..1642768f50e1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BondIterator.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JM"); +Clazz.declareInterface(JM, "BondIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BondIteratorSelected.js b/config/plugins/visualizations/jmol/static/j2s/JM/BondIteratorSelected.js new file mode 100755 index 000000000000..4bd3c02be675 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BondIteratorSelected.js @@ -0,0 +1,44 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.BondIterator"], "JM.BondIteratorSelected", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bonds = null; +this.bondCount = 0; +this.bondType = 0; +this.iBond = 0; +this.bsSelected = null; +this.bondSelectionModeOr = false; +Clazz.instantialize(this, arguments);}, JM, "BondIteratorSelected", null, JM.BondIterator); +Clazz.makeConstructor(c$, +function(bonds, bondCount, bondType, bsSelected, bondSelectionModeOr){ +this.bonds = bonds; +this.bondCount = bondCount; +this.bondType = bondType; +this.bsSelected = bsSelected; +this.bondSelectionModeOr = bondSelectionModeOr; +}, "~A,~N,~N,JU.BS,~B"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +if (this.bondType == 131071) { +this.iBond = this.bsSelected.nextSetBit(this.iBond); +return (this.iBond >= 0 && this.iBond < this.bondCount); +}for (; this.iBond < this.bondCount; ++this.iBond) { +var bond = this.bonds[this.iBond]; +if (this.bondType != 65535 && (bond.order & this.bondType) == 0) { +continue; +} else if (this.bondType == 65535 && bond.order == 32768) continue; +var isSelected1 = this.bsSelected.get(bond.atom1.i); +var isSelected2 = this.bsSelected.get(bond.atom2.i); +if ((!this.bondSelectionModeOr && isSelected1 && isSelected2) || (this.bondSelectionModeOr && (isSelected1 || isSelected2))) return true; +} +return false; +}); +Clazz.overrideMethod(c$, "nextIndex", +function(){ +return this.iBond; +}); +Clazz.overrideMethod(c$, "next", +function(){ +return this.bonds[this.iBond++]; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/BondSet.js b/config/plugins/visualizations/jmol/static/j2s/JM/BondSet.js new file mode 100755 index 000000000000..efe6bf9a2858 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/BondSet.js @@ -0,0 +1,22 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JU.BS"], "JM.BondSet", ["JU.BSUtil"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.associatedAtoms = null; +Clazz.instantialize(this, arguments);}, JM, "BondSet", JU.BS); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JM.BondSet, []); +}); +c$.newBS = Clazz.defineMethod(c$, "newBS", +function(bs){ +var b = new JM.BondSet(); +JU.BSUtil.copy2(bs, b); +return b; +}, "JU.BS"); +Clazz.defineMethod(c$, "getAssociatedAtoms", +function(ms){ +if (this.associatedAtoms == null) this.associatedAtoms = ms.getAtomIndices(ms.getAtoms(1677721602, this)); +return this.associatedAtoms; +}, "JM.ModelSet"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/CarbohydrateMonomer.js b/config/plugins/visualizations/jmol/static/j2s/JM/CarbohydrateMonomer.js new file mode 100755 index 000000000000..a234149052bf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/CarbohydrateMonomer.js @@ -0,0 +1,50 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Monomer"], "JM.CarbohydrateMonomer", ["J.c.STR"], function(){ +var c$ = Clazz.declareType(JM, "CarbohydrateMonomer", JM.Monomer); +Clazz.overrideConstructor(c$, +function(){ +}); +c$.validateAndAllocate = Clazz.defineMethod(c$, "validateAndAllocate", +function(chain, group3, seqcode, firstIndex, lastIndex){ +return new JM.CarbohydrateMonomer().set2(chain, group3, seqcode, firstIndex, lastIndex, JM.CarbohydrateMonomer.alphaOffsets); +}, "JM.Chain,~S,~N,~N,~N"); +Clazz.overrideMethod(c$, "isCarbohydrate", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.CARBOHYDRATE; +}); +Clazz.overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) for (var j = possiblyPreviousMonomer.firstAtomIndex; j <= possiblyPreviousMonomer.lastAtomIndex; j++) { +var a = this.chain.model.ms.at[i]; +var b = this.chain.model.ms.at[j]; +if (a != null && b != null && a.getElementNumber() + b.getElementNumber() == 14 && a.distanceSquared(b) < 3.24) return true; +} + +return false; +}, "JM.Monomer"); +Clazz.overrideMethod(c$, "findNearestAtomIndex", +function(x, y, closest, madBegin, madEnd){ +var competitor = closest[0]; +var anomericO = this.getLeadAtom(); +var marBegin = (Clazz.doubleToInt(madBegin / 2)); +if (marBegin < 1200) marBegin = 1200; +if (anomericO.sZ == 0) return; +var radiusBegin = Clazz.floatToInt(this.scaleToScreen(anomericO.sZ, marBegin)); +if (radiusBegin < 4) radiusBegin = 4; +if (this.isCursorOnTopOf(anomericO, x, y, radiusBegin, competitor)) closest[0] = anomericO; +}, "~N,~N,~A,~N,~N"); +Clazz.overrideMethod(c$, "isConnectedPrevious", +function(){ +if (this.monomerIndex <= 0) return false; +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) if (this.getCrossLinkGroup(i, null, null, true, false, false)) return true; + +return false; +}); +c$.alphaOffsets = Clazz.newByteArray(-1, [0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/CarbohydratePolymer.js b/config/plugins/visualizations/jmol/static/j2s/JM/CarbohydratePolymer.js new file mode 100755 index 000000000000..d2b6f6bdd278 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/CarbohydratePolymer.js @@ -0,0 +1,10 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.BioPolymer"], "JM.CarbohydratePolymer", null, function(){ +var c$ = Clazz.declareType(JM, "CarbohydratePolymer", JM.BioPolymer); +Clazz.makeConstructor(c$, +function(monomers){ +Clazz.superConstructor(this, JM.CarbohydratePolymer, [monomers, false]); +this.type = 3; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Chain.js b/config/plugins/visualizations/jmol/static/j2s/JM/Chain.js new file mode 100755 index 000000000000..c44ed67cba51 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Chain.js @@ -0,0 +1,44 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Structure"], "JM.Chain", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.model = null; +this.chainID = 0; +this.chainNo = 0; +this.groups = null; +this.groupCount = 0; +this.selectedGroupCount = 0; +Clazz.instantialize(this, arguments);}, JM, "Chain", null, JM.Structure); +Clazz.makeConstructor(c$, +function(model, chainID, chainNo){ +this.model = model; +this.chainID = chainID; +this.chainNo = chainNo; +this.groups = new Array(16); +}, "JM.Model,~N,~N"); +Clazz.defineMethod(c$, "getIDStr", +function(){ +return (this.chainID == 0 ? "" : this.chainID < 256 ? "" + String.fromCharCode(this.chainID) : this.model.ms.vwr.getChainIDStr(this.chainID)); +}); +Clazz.defineMethod(c$, "calcSelectedGroupsCount", +function(bsSelected){ +this.selectedGroupCount = 0; +for (var i = 0; i < this.groupCount; i++) this.groups[i].selectedIndex = (this.groups[i].isSelected(bsSelected) ? this.selectedGroupCount++ : -1); + +}, "JU.BS"); +Clazz.defineMethod(c$, "fixIndices", +function(atomsDeleted, bsDeleted){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].fixIndices(atomsDeleted, bsDeleted); + +}, "~N,JU.BS"); +Clazz.overrideMethod(c$, "setAtomBits", +function(bs){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].setAtomBits(bs); + +}, "JU.BS"); +Clazz.overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].setAtomBitsAndClear(bs, bsOut); + +}, "JU.BS,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/AtomType.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/AtomType.js new file mode 100755 index 000000000000..85bbce531910 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/AtomType.js @@ -0,0 +1,28 @@ +Clazz.declarePackage("JM.FF"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.elemNo = 0; +this.descr = null; +this.smartsCode = null; +this.mmType = 0; +this.hType = 0; +this.formalCharge = 0; +this.fcadj = 0; +this.sbmb = false; +this.arom = false; +this.pilp = false; +this.mltb = 0; +this.val = 0; +Clazz.instantialize(this, arguments);}, JM.FF, "AtomType", null); +Clazz.makeConstructor(c$, +function(elemNo, mmType, hType, formalCharge, val, descr, smartsCode){ +this.elemNo = elemNo; +this.mmType = mmType; +this.hType = hType; +this.formalCharge = formalCharge; +this.val = val; +this.descr = descr; +this.smartsCode = smartsCode; +}, "~N,~N,~N,~N,~N,~S,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/Calculation.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/Calculation.js new file mode 100755 index 000000000000..2fb85d7041e8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/Calculation.js @@ -0,0 +1,56 @@ +Clazz.declarePackage("JM.FF"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.key = null; +this.dE = 0; +this.a = null; +this.b = null; +this.c = null; +this.d = null; +this.ia = 0; +this.ib = 0; +this.ic = 0; +this.id = 0; +this.iData = null; +this.dData = null; +this.delta = 0; +this.rab = 0; +this.theta = 0; +this.energy = 0; +this.calcs = null; +Clazz.instantialize(this, arguments);}, JM.FF, "Calculation", null); +Clazz.defineMethod(c$, "set", +function(calcs){ +this.calcs = calcs; +return this; +}, "JM.FF.Calculations"); +Clazz.defineMethod(c$, "setData", +function(calc, ia, ib, d){ +}, "JU.Lst,~N,~N,~N"); +Clazz.defineMethod(c$, "getEnergy", +function(){ +return this.energy; +}); +Clazz.defineMethod(c$, "getPointers", +function(dataIn){ +this.dData = dataIn[1]; +this.iData = dataIn[0]; +switch (this.iData.length) { +default: +this.id = this.iData[3]; +case 3: +this.ic = this.iData[2]; +case 2: +this.ib = this.iData[1]; +case 1: +this.ia = this.iData[0]; +case 0: +break; +} +}, "~A"); +Clazz.defineMethod(c$, "isLoggable", +function(n){ +return this.calcs.ff.minimizer.isLoggable(this.iData, n); +}, "~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/Calculations.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/Calculations.js new file mode 100755 index 000000000000..6a59c87571a9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/Calculations.js @@ -0,0 +1,426 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JU.AU", "$.SB", "$.V3d"], "JM.FF.Calculations", ["JU.Lst", "$.PT", "JM.Util"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.parA = null; +this.parB = null; +this.parC = null; +this.ff = null; +this.calculations = null; +this.ffParams = null; +this.ac = 0; +this.bondCount = 0; +this.angleCount = 0; +this.torsionCount = 0; +this.minAtoms = null; +this.minBonds = null; +this.minAngles = null; +this.minTorsions = null; +this.constraintsByType = null; +this.haveConstraints = false; +this.isPreliminary = false; +this.gradients = false; +this.silent = false; +this.logData = null; +this.logging = false; +this.loggingEnabled = false; +this.da = null; +this.db = null; +this.dc = null; +this.dd = null; +this.ia = 0; +this.ib = 0; +this.ic = 0; +this.id = 0; +this.v1 = null; +this.v2 = null; +this.v3 = null; +Clazz.instantialize(this, arguments);}, JM.FF, "Calculations", null); +Clazz.prepareFields (c$, function(){ +this.calculations = JU.AU.createArrayOfArrayList(7); +this.logData = new JU.SB(); +this.da = new JU.V3d(); +this.db = new JU.V3d(); +this.dc = new JU.V3d(); +this.dd = new JU.V3d(); +this.v1 = new JU.V3d(); +this.v2 = new JU.V3d(); +this.v3 = new JU.V3d(); +}); +Clazz.makeConstructor(c$, +function(ff, minAtoms, minBonds, minAngles, minTorsions, constraints){ +this.ff = ff; +this.minAtoms = minAtoms; +this.minBonds = minBonds; +this.minAngles = minAngles; +this.minTorsions = minTorsions; +this.ac = minAtoms.length; +this.bondCount = minBonds.length; +this.angleCount = minAngles.length; +this.torsionCount = minTorsions.length; +this.setConstraints(constraints); +}, "JM.FF.ForceField,~A,~A,~A,~A,JU.Lst"); +Clazz.defineMethod(c$, "getParameter", +function(o){ +return this.ffParams.get(o); +}, "~O"); +Clazz.defineMethod(c$, "setConstraints", +function(constraints){ +if (constraints == null || constraints.isEmpty()) return; +this.constraintsByType = Clazz.newArray(-1, [null, null, null]); +this.haveConstraints = true; +var lists = new Array(3); +for (var i = 0, n = constraints.size(); i < n; i++) { +var c = constraints.get(i); +if (lists[c.type] == null) lists[c.type] = new JU.Lst(); +lists[c.type].addLast(c); +} +for (var type = 0; type <= 2; type++) { +var list = lists[type]; +if (list != null) this.constraintsByType[type] = list.toArray( new Array(list.size())); +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "addForce", +function(v, i, dE){ +this.minAtoms[i].force[0] += v.x * dE; +this.minAtoms[i].force[1] += v.y * dE; +this.minAtoms[i].force[2] += v.z * dE; +}, "JU.V3d,~N,~N"); +Clazz.defineMethod(c$, "setSilent", +function(TF){ +this.silent = TF; +}, "~B"); +Clazz.defineMethod(c$, "getLogData", +function(){ +return this.logData.toString(); +}); +Clazz.defineMethod(c$, "appendLogData", +function(s){ +this.logData.append(s).append("\n"); +}, "~S"); +Clazz.defineMethod(c$, "setLoggingEnabled", +function(TF){ +this.loggingEnabled = TF; +if (this.loggingEnabled) this.logData = new JU.SB(); +}, "~B"); +Clazz.defineMethod(c$, "setPreliminary", +function(TF){ +this.isPreliminary = TF; +}, "~B"); +Clazz.defineMethod(c$, "pairSearch", +function(calc1, pc1, calc2, pc2){ +for (var i = 0; i < this.ac - 1; i++) { +var bsVdw = this.minAtoms[i].bsVdw; +for (var j = bsVdw.nextSetBit(0); j >= 0; j = bsVdw.nextSetBit(j + 1)) { +pc1.setData(calc1, i, j, 0); +if (pc2 != null) pc2.setData(calc2, i, j, 0); +} +} +}, "JU.Lst,JM.FF.Calculation,JU.Lst,JM.FF.Calculation"); +Clazz.defineMethod(c$, "calc", +function(iType, gradients, canConstrain){ +this.logging = this.loggingEnabled && !this.silent; +this.gradients = gradients; +var calcs = this.calculations[iType]; +var nCalc; +var energy = 0; +if (calcs == null || (nCalc = calcs.size()) == 0) return 0; +if (this.logging) this.appendLogData(this.getDebugHeader(iType)); +for (var ii = 0; ii < nCalc; ii++) energy += this.compute(iType, this.calculations[iType].get(ii)); + +if (this.logging) this.appendLogData(this.getDebugFooter(iType, energy)); +if (canConstrain && this.haveConstraints && this.constraintsByType[iType] != null) energy += this.constraintEnergy(iType); +return energy; +}, "~N,~B,~B"); +Clazz.defineMethod(c$, "energyStrBnd", +function(gradients){ +return 0.0; +}, "~B"); +Clazz.defineMethod(c$, "energyBond", +function(gradients){ +return this.calc(0, gradients, true); +}, "~B"); +Clazz.defineMethod(c$, "energyAngle", +function(gradients){ +return this.calc(1, gradients, true); +}, "~B"); +Clazz.defineMethod(c$, "energyTorsion", +function(gradients){ +return this.calc(2, gradients, true); +}, "~B"); +Clazz.defineMethod(c$, "energyStretchBend", +function(gradients){ +return this.calc(3, gradients, false); +}, "~B"); +Clazz.defineMethod(c$, "energyOOP", +function(gradients){ +return this.calc(4, gradients, false); +}, "~B"); +Clazz.defineMethod(c$, "energyVDW", +function(gradients){ +return this.calc(5, gradients, false); +}, "~B"); +Clazz.defineMethod(c$, "energyES", +function(gradients){ +return this.calc(6, gradients, false); +}, "~B"); +Clazz.defineMethod(c$, "constraintEnergy", +function(iType){ +var constraints = this.constraintsByType[iType]; +var value = 0; +var k = 0; +var energy = 0; +for (var i = constraints.length; --i >= 0; ) { +var c = constraints[i]; +var minList = c.minList; +var targetValue = c.value; +switch (iType) { +case 2: +this.id = minList[3]; +if (this.gradients) this.dd.setA(this.minAtoms[this.id].coord); +case 1: +this.ic = minList[2]; +if (this.gradients) this.dc.setA(this.minAtoms[this.ic].coord); +case 0: +this.ib = minList[1]; +this.ia = minList[0]; +if (this.gradients) { +this.db.setA(this.minAtoms[this.ib].coord); +this.da.setA(this.minAtoms[this.ia].coord); +}break; +} +k = 10000.0; +switch (iType) { +case 2: +targetValue *= 0.017453292519943295; +value = (this.gradients ? JM.Util.restorativeForceAndTorsionAngleRadians(this.da, this.db, this.dc, this.dd) : JM.Util.getTorsionAngleRadians(this.minAtoms[this.ia].coord, this.minAtoms[this.ib].coord, this.minAtoms[this.ic].coord, this.minAtoms[this.id].coord, this.v1, this.v2, this.v3)); +if (value < 0 && targetValue >= 1.5707963267948966) value += 6.283185307179586; + else if (value > 0 && targetValue <= -1.5707963267948966) targetValue += 6.283185307179586; +break; +case 1: +targetValue *= 0.017453292519943295; +value = (this.gradients ? JM.Util.restorativeForceAndAngleRadians(this.da, this.db, this.dc) : JM.Util.getAngleRadiansABC(this.minAtoms[this.ia].coord, this.minAtoms[this.ib].coord, this.minAtoms[this.ic].coord)); +break; +case 0: +value = (this.gradients ? JM.Util.restorativeForceAndDistance(this.da, this.db, this.dc) : Math.sqrt(JM.Util.distance2(this.minAtoms[this.ia].coord, this.minAtoms[this.ib].coord))); +break; +} +energy += this.constrainQuadratic(value, targetValue, k, iType); +} +return energy; +}, "~N"); +Clazz.defineMethod(c$, "constrainQuadratic", +function(value, targetValue, k, iType){ +if (!JM.Util.isFinite(value)) return 0; +var delta = value - targetValue; +if (this.gradients) { +var dE = 2.0 * k * delta; +switch (iType) { +case 2: +this.addForce(this.dd, this.id, dE); +case 1: +this.addForce(this.dc, this.ic, dE); +case 0: +this.addForce(this.db, this.ib, dE); +this.addForce(this.da, this.ia, dE); +} +}return k * delta * delta; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getConstraintList", +function(){ +if (this.constraintsByType == null) return; +this.appendLogData("C O N S T R A I N T S\n---------------------"); +for (var type = 0; type <= 2; type++) { +var constraints = this.constraintsByType[type]; +if (constraints == null) continue; +for (var i = 0, n = constraints.length; i < n; i++) { +var c = constraints[i]; +var minList = c.minList; +var targetValue = c.value; +switch (c.type) { +case 2: +this.id = minList[3]; +case 1: +this.ic = minList[2]; +case 0: +this.ib = minList[1]; +this.ia = minList[0]; +} +switch (c.type) { +case 0: +this.appendLogData(JU.PT.sprintf("%3d %3d %-5s %-5s %12.6f", "ssFI", Clazz.newArray(-1, [this.minAtoms[this.ia].atom.getAtomName(), this.minAtoms[this.ib].atom.getAtomName(), Clazz.newFloatArray(-1, [targetValue]), Clazz.newIntArray(-1, [this.minAtoms[this.ia].atom.getAtomNumber(), this.minAtoms[this.ib].atom.getAtomNumber()])]))); +break; +case 1: +this.appendLogData(JU.PT.sprintf("%3d %3d %3d %-5s %-5s %-5s %12.6f", "sssFI", Clazz.newArray(-1, [this.minAtoms[this.ia].atom.getAtomName(), this.minAtoms[this.ib].atom.getAtomName(), this.minAtoms[this.ic].atom.getAtomName(), Clazz.newFloatArray(-1, [targetValue]), Clazz.newIntArray(-1, [this.minAtoms[this.ia].atom.getAtomNumber(), this.minAtoms[this.ib].atom.getAtomNumber(), this.minAtoms[this.ic].atom.getAtomNumber()])]))); +break; +case 2: +this.appendLogData(JU.PT.sprintf("%3d %3d %3d %3d %-5s %-5s %-5s %-5s %3d %8.3f %8.3f %8.3f %8.3f", "ssssFI", Clazz.newArray(-1, [this.minAtoms[this.ia].atom.getAtomName(), this.minAtoms[this.ib].atom.getAtomName(), this.minAtoms[this.ic].atom.getAtomName(), this.minAtoms[this.id].atom.getAtomName(), Clazz.newFloatArray(-1, [targetValue]), Clazz.newIntArray(-1, [this.minAtoms[this.ia].atom.getAtomNumber(), this.minAtoms[this.ib].atom.getAtomNumber(), this.minAtoms[this.ic].atom.getAtomNumber(), this.minAtoms[this.id].atom.getAtomNumber()])]))); +break; +} +} +} +this.appendLogData("---------------------\n"); +}); +Clazz.defineMethod(c$, "getAtomList", +function(title){ +var trailer = "--------------------------------------------------------------------------------------------------\n"; +var sb = new JU.SB(); +sb.append("\n" + title + "\n\n" + " ATOM X Y Z TYPE GRADX GRADY GRADZ " + "---------BONDED ATOMS--------\n" + trailer); +for (var i = 0; i < this.ac; i++) { +if (this.ff.minimizer.isLoggable(null, i) === Boolean.FALSE) continue; +var atom = this.minAtoms[i]; +var others = atom.getBondedAtomIndexes(); +var iVal = Clazz.newIntArray (others.length + 2, 0); +iVal[0] = atom.atom.getAtomNumber(); +iVal[1] = (atom.ffAtomType == null ? 0 : atom.ffAtomType.mmType); +var s = " "; +for (var j = 0; j < others.length; j++) { +s += " %3d"; +iVal[j + 2] = this.minAtoms[others[j]].atom.getAtomNumber(); +} +sb.append(JU.PT.sprintf("%3d %8.3f %8.3f %8.3f %-5s %2d %8.3f %8.3f %8.3f" + s + "\n", "sFI", Clazz.newArray(-1, [atom.sType, Clazz.newFloatArray(-1, [atom.coord[0], atom.coord[1], atom.coord[2], atom.force[0], atom.force[1], atom.force[2]]), iVal]))); +} +sb.append(trailer + "\n\n"); +return sb.toString(); +}, "~S"); +Clazz.defineMethod(c$, "getDebugHeader2", +function(iType){ +switch (iType) { +case -1: +break; +case 0: +return "\nB O N D S T R E T C H I N G (" + this.bondCount + " bonds)\n\n" + " ATOMS ATOM TYPES BOND BOND IDEAL FORCE\n" + " I J I J TYPE LENGTH LENGTH CONSTANT DELTA ENERGY\n" + "--------------------------------------------------------------------------------"; +case 1: +return "\nA N G L E B E N D I N G (" + this.minAngles.length + " angles)\n\n" + " ATOMS ATOM TYPES VALENCE IDEAL FORCE\n" + " I J K I J K ANGLE ANGLE CONSTANT ENERGY\n" + "--------------------------------------------------------------------------"; +case 3: +return "\nS T R E T C H B E N D I N G (" + (this.minAngles.length * 2) + " angles)\n\n" + " ATOMS ATOM TYPES VALENCE IDEAL FORCE\n" + " I J K I J K ANGLE ANGLE CONSTANT ENERGY\n" + "--------------------------------------------------------------------------"; +case 2: +return "\nT O R S I O N A L (" + this.minTorsions.length + " torsions)\n\n" + " ATOMS ATOM TYPES n COS FORCE TORSION\n" + " I J K L I J K L (n phi0) CONSTANT ANGLE ENERGY\n" + "---------------------------------------------------------------------------------------------"; +case 4: +return "\nO U T - O F - P L A N E B E N D I N G\n\n ATOMS ATOM TYPES OOP FORCE \n I J K L I J K L ANGLE CONSTANT ENERGY\n--------------------------------------------------------------------------"; +case 5: +return "\nV A N D E R W A A L S (partial list)\n\n ATOMS ATOM TYPES\n I J I J Rij kij ENERGY\n-----------------------------------------------"; +case 6: +return "\nE L E C T R O S T A T I C I N T E R A C T I O N S (partial list)\n\n ATOMS ATOM TYPES \n I J I J Rij f Qi Qj ENERGY\n-------------------------------------------------------------------"; +} +return ""; +}, "~N"); +Clazz.defineMethod(c$, "getDebugLine", +function(iType, c){ +return this.getDebugLineC(iType, c); +}, "~N,JM.FF.Calculation"); +Clazz.defineMethod(c$, "getDebugLineC", +function(iType, c){ +var energy = this.ff.toUserUnits(c.energy); +switch (iType) { +case 0: +return JU.PT.sprintf("%3d %3d %-5s %-5s %4.2f%8.3f %8.3f %8.3f %8.3f %8.3f", "ssFI", Clazz.newArray(-1, [this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, Clazz.newFloatArray(-1, [0, c.rab, c.dData[1], c.dData[0], c.delta, energy]), Clazz.newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber()])])); +case 1: +case 3: +return JU.PT.sprintf("%3d %3d %3d %-5s %-5s %-5s %8.3f %8.3f %8.3f %8.3f", "sssFI", Clazz.newArray(-1, [this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, Clazz.newFloatArray(-1, [(c.theta * 57.29577951308232), c.dData[1], c.dData[0], energy]), Clazz.newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber(), this.minAtoms[c.ic].atom.getAtomNumber()])])); +case 2: +return JU.PT.sprintf("%3d %3d %3d %3d %-5s %-5s %-5s %-5s %3d %8.3f %8.3f %8.3f %8.3f", "ssssFI", Clazz.newArray(-1, [this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, this.minAtoms[c.id].sType, Clazz.newFloatArray(-1, [c.dData[1], c.dData[0], (c.theta * 57.29577951308232), energy]), Clazz.newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber(), this.minAtoms[c.ic].atom.getAtomNumber(), this.minAtoms[c.id].atom.getAtomNumber(), c.iData[4]])])); +case 4: +return JU.PT.sprintf("%3d %3d %3d %3d %-5s %-5s %-5s %-5s %8.3f %8.3f %8.3f", "ssssFI", Clazz.newArray(-1, [this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, this.minAtoms[c.id].sType, Clazz.newFloatArray(-1, [(c.theta * 57.29577951308232), c.dData[0], energy]), Clazz.newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber(), this.minAtoms[c.ic].atom.getAtomNumber(), this.minAtoms[c.id].atom.getAtomNumber()])])); +case 5: +return JU.PT.sprintf("%3d %3d %-5s %-5s %6.3f %8.3f %8.3f", "ssFI", Clazz.newArray(-1, [this.minAtoms[c.iData[0]].sType, this.minAtoms[c.iData[1]].sType, Clazz.newFloatArray(-1, [c.rab, c.dData[0], energy]), Clazz.newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber()])])); +case 6: +return JU.PT.sprintf("%3d %3d %-5s %-5s %6.3f %8.3f %8.3f %8.3f %8.3f", "ssFI", Clazz.newArray(-1, [this.minAtoms[c.iData[0]].sType, this.minAtoms[c.iData[1]].sType, Clazz.newFloatArray(-1, [c.rab, c.dData[0], c.dData[1], c.dData[2], energy]), Clazz.newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber()])])); +} +return ""; +}, "~N,JM.FF.Calculation"); +Clazz.defineMethod(c$, "getDebugFooter", +function(iType, energy){ +var s = ""; +switch (iType) { +case 0: +s = "BOND STRETCHING"; +break; +case 1: +s = "ANGLE BENDING"; +break; +case 2: +s = "TORSIONAL"; +break; +case 4: +s = "OUT-OF-PLANE BENDING"; +break; +case 3: +s = "STRETCH BENDING"; +break; +case 5: +s = "VAN DER WAALS"; +break; +case 6: +s = "ELECTROSTATIC ENERGY"; +break; +} +return JU.PT.sprintf("\n TOTAL %s ENERGY = %8.3f %s/mol\n", "sfs", Clazz.newArray(-1, [s, Float.$valueOf(this.ff.toUserUnits(energy)), this.ff.minimizer.units])); +}, "~N,~N"); +Clazz.defineMethod(c$, "setPairVariables", +function(c){ +if (this.gradients) { +this.setCoords(c, 2); +c.rab = JM.Util.restorativeForceAndDistance(this.da, this.db, this.dc); +} else { +c.rab = Math.sqrt(JM.Util.distance2(this.minAtoms[c.ia].coord, this.minAtoms[c.ib].coord)); +}if (JM.Util.isNearZero2(c.rab, 1.0e-3)) c.rab = 1.0e-3; +}, "JM.FF.Calculation"); +Clazz.defineMethod(c$, "setAngleVariables", +function(c){ +if (this.gradients) { +this.setCoords(c, 3); +c.theta = JM.Util.restorativeForceAndAngleRadians(this.da, this.db, this.dc); +} else { +c.theta = JM.Util.getAngleRadiansABC(this.minAtoms[c.ia].coord, this.minAtoms[c.ib].coord, this.minAtoms[c.ic].coord); +}if (!JM.Util.isFinite(c.theta)) c.theta = 0.0; +}, "JM.FF.Calculation"); +Clazz.defineMethod(c$, "setOopVariables", +function(c, fixTheta){ +this.setCoords(c, 4); +if (this.gradients) { +c.theta = JM.Util.restorativeForceAndOutOfPlaneAngleRadians(this.da, this.db, this.dc, this.dd, this.v1, this.v2, this.v3); +} else { +c.theta = JM.Util.pointPlaneAngleRadians(this.da, this.db, this.dc, this.dd, this.v1, this.v2, this.v3, fixTheta); +}if (!JM.Util.isFinite(c.theta)) c.theta = 0.0; +}, "JM.FF.Calculation,~B"); +Clazz.defineMethod(c$, "setTorsionVariables", +function(c){ +if (this.gradients) { +this.setCoords(c, 4); +c.theta = JM.Util.restorativeForceAndTorsionAngleRadians(this.da, this.db, this.dc, this.dd); +if (!JM.Util.isFinite(c.theta)) c.theta = 1.7453292519943296E-5; +} else { +c.theta = JM.Util.getTorsionAngleRadians(this.minAtoms[c.ia].coord, this.minAtoms[c.ib].coord, this.minAtoms[c.ic].coord, this.minAtoms[c.id].coord, this.v1, this.v2, this.v3); +}}, "JM.FF.Calculation"); +Clazz.defineMethod(c$, "setCoords", +function(c, n){ +switch (n) { +case 4: +this.da.setA(this.minAtoms[c.ia].coord); +case 3: +this.db.setA(this.minAtoms[c.ib].coord); +case 2: +this.dc.setA(this.minAtoms[c.ic].coord); +case 1: +this.dd.setA(this.minAtoms[c.id].coord); +} +}, "JM.FF.Calculation,~N"); +Clazz.defineMethod(c$, "addForces", +function(c, n){ +switch (n) { +case 4: +this.addForce(this.dd, c.id, c.dE); +case 3: +this.addForce(this.dc, c.ic, c.dE); +case 2: +this.addForce(this.db, c.ib, c.dE); +case 1: +this.addForce(this.da, c.ia, c.dE); +} +}, "JM.FF.Calculation,~N"); +Clazz.defineMethod(c$, "isLinear", +function(i){ +return false; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/CalculationsMMFF.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/CalculationsMMFF.js new file mode 100755 index 000000000000..16cad001ddba --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/CalculationsMMFF.js @@ -0,0 +1,139 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculations"], "JM.FF.CalculationsMMFF", ["JU.Lst", "$.PT", "JM.MinObject", "JM.FF.MMFFAngleCalc", "$.MMFFDistanceCalc", "$.MMFFESCalc", "$.MMFFOOPCalc", "$.MMFFSBCalc", "$.MMFFTorsionCalc", "$.MMFFVDWCalc"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bondCalc = null; +this.angleCalc = null; +this.torsionCalc = null; +this.oopCalc = null; +this.vdwCalc = null; +this.esCalc = null; +this.sbCalc = null; +this.mmff = null; +Clazz.instantialize(this, arguments);}, JM.FF, "CalculationsMMFF", JM.FF.Calculations); +Clazz.makeConstructor(c$, +function(ff, ffParams, minAtoms, minBonds, minAngles, minTorsions, constraints){ +Clazz.superConstructor(this, JM.FF.CalculationsMMFF, [ff, minAtoms, minBonds, minAngles, minTorsions, constraints]); +this.mmff = ff; +this.ffParams = ffParams; +this.bondCalc = new JM.FF.MMFFDistanceCalc().set(this); +this.angleCalc = new JM.FF.MMFFAngleCalc().set(this); +this.sbCalc = new JM.FF.MMFFSBCalc().set(this); +this.torsionCalc = new JM.FF.MMFFTorsionCalc().set(this); +this.oopCalc = new JM.FF.MMFFOOPCalc().set(this); +this.vdwCalc = new JM.FF.MMFFVDWCalc().set(this); +this.esCalc = new JM.FF.MMFFESCalc().set(this); +}, "JM.FF.ForceField,java.util.Map,~A,~A,~A,~A,JU.Lst"); +Clazz.overrideMethod(c$, "getUnits", +function(){ +return "kcal"; +}); +Clazz.overrideMethod(c$, "setupCalculations", +function(){ +var calc; +var distanceCalc = new JM.FF.MMFFDistanceCalc().set(this); +calc = this.calculations[0] = new JU.Lst(); +for (var i = 0; i < this.bondCount; i++) distanceCalc.setData(calc, this.minBonds[i]); + +calc = this.calculations[1] = new JU.Lst(); +var angleCalc = new JM.FF.MMFFAngleCalc().set(this); +for (var i = 0; i < this.angleCount; i++) angleCalc.setData(calc, this.minAngles[i]); + +calc = this.calculations[3] = new JU.Lst(); +var sbCalc = new JM.FF.MMFFSBCalc().set(this); +for (var i = 0; i < this.angleCount; i++) sbCalc.setData(calc, this.minAngles[i]); + +calc = this.calculations[2] = new JU.Lst(); +var torsionCalc = new JM.FF.MMFFTorsionCalc().set(this); +for (var i = 0; i < this.torsionCount; i++) torsionCalc.setData(calc, this.minTorsions[i]); + +calc = this.calculations[4] = new JU.Lst(); +var oopCalc = new JM.FF.MMFFOOPCalc().set(this); +for (var i = 0; i < this.ac; i++) if (JM.FF.CalculationsMMFF.isInvertible(this.minAtoms[i])) oopCalc.setData(calc, i); + +this.pairSearch(this.calculations[5] = new JU.Lst(), new JM.FF.MMFFVDWCalc().set(this), this.calculations[6] = new JU.Lst(), new JM.FF.MMFFESCalc().set(this)); +return true; +}); +Clazz.overrideMethod(c$, "isLinear", +function(i){ +return this.mmff.isLinear(this.minAtoms[i]); +}, "~N"); +c$.isInvertible = Clazz.defineMethod(c$, "isInvertible", +function(a){ +switch (a.ffType) { +default: +return false; +case 2: +case 3: +case 10: +case 30: +case 37: +case 39: +case 40: +case 41: +case 45: +case 49: +case 54: +case 55: +case 56: +case 57: +case 58: +case 63: +case 64: +case 67: +case 69: +case 78: +case 80: +case 81: +return true; +} +}, "JM.MinAtom"); +Clazz.overrideMethod(c$, "compute", +function(iType, dataIn){ +switch (iType) { +case 0: +return this.bondCalc.compute(dataIn); +case 1: +return this.angleCalc.compute(dataIn); +case 3: +return this.sbCalc.compute(dataIn); +case 2: +return this.torsionCalc.compute(dataIn); +case 4: +return this.oopCalc.compute(dataIn); +case 5: +return this.vdwCalc.compute(dataIn); +case 6: +return this.esCalc.compute(dataIn); +} +return 0.0; +}, "~N,~A"); +Clazz.overrideMethod(c$, "getParameterObj", +function(a){ +return (a.key == null || a.ddata != null ? a.ddata : this.ffParams.get(a.key)); +}, "JM.MinObject"); +Clazz.overrideMethod(c$, "getDebugHeader", +function(iType){ +switch (iType) { +case -1: +return "MMFF94 Force Field -- T. A. Halgren, J. Comp. Chem. 5 & 6 490-519ff (1996).\n"; +case 2: +return "\nT O R S I O N A L (" + this.minTorsions.length + " torsions)\n\n" + " ATOMS ATOM TYPES TORSION\n" + " I J K L I J K L ANGLE V1 V2 V3 ENERGY\n" + "--------------------------------------------------------------------------------------\n"; +default: +return this.getDebugHeader2(iType); +} +}, "~N"); +Clazz.overrideMethod(c$, "getDebugLine", +function(iType, c){ +var energy = this.ff.toUserUnits(c.energy); +switch (iType) { +case 1: +case 3: +return JU.PT.sprintf("%11s %-5s %-5s %-5s %8.3f %8.3f %8.3f %8.3f", "ssssFI", Clazz.newArray(-1, [JM.MinObject.decodeKey(c.key), this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, Clazz.newFloatArray(-1, [(c.theta * 57.29577951308232), c.dData[1], c.dData[0], energy]), Clazz.newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber(), this.minAtoms[c.ic].atom.getAtomNumber()])])); +case 2: +return JU.PT.sprintf("%15s %-5s %-5s %-5s %-5s %8.3f %8.3f %8.3f %8.3f %8.3f", "sssssF", Clazz.newArray(-1, [JM.MinObject.decodeKey(c.key), this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, this.minAtoms[c.id].sType, Clazz.newFloatArray(-1, [(c.theta * 57.29577951308232), c.dData[0], c.dData[1], c.dData[2], energy])])); +default: +return this.getDebugLineC(iType, c); +} +}, "~N,JM.FF.Calculation"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/CalculationsUFF.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/CalculationsUFF.js new file mode 100755 index 000000000000..c1d32131fdb6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/CalculationsUFF.js @@ -0,0 +1,106 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculations"], "JM.FF.CalculationsUFF", ["JU.Lst", "JM.FF.UFFAngleCalc", "$.UFFDistanceCalc", "$.UFFOOPCalc", "$.UFFTorsionCalc", "$.UFFVDWCalc"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bondCalc = null; +this.angleCalc = null; +this.torsionCalc = null; +this.oopCalc = null; +this.vdwCalc = null; +Clazz.instantialize(this, arguments);}, JM.FF, "CalculationsUFF", JM.FF.Calculations); +Clazz.makeConstructor(c$, +function(ff, ffParams, minAtoms, minBonds, minAngles, minTorsions, constraints){ +Clazz.superConstructor(this, JM.FF.CalculationsUFF, [ff, minAtoms, minBonds, minAngles, minTorsions, constraints]); +this.ffParams = ffParams; +this.bondCalc = new JM.FF.UFFDistanceCalc().set(this); +this.angleCalc = new JM.FF.UFFAngleCalc().set(this); +this.torsionCalc = new JM.FF.UFFTorsionCalc().set(this); +this.oopCalc = new JM.FF.UFFOOPCalc().set(this); +this.vdwCalc = new JM.FF.UFFVDWCalc().set(this); +}, "JM.FF.ForceField,java.util.Map,~A,~A,~A,~A,JU.Lst"); +Clazz.overrideMethod(c$, "getUnits", +function(){ +return "kJ"; +}); +Clazz.overrideMethod(c$, "setupCalculations", +function(){ +var calc; +var distanceCalc = new JM.FF.UFFDistanceCalc().set(this); +calc = this.calculations[0] = new JU.Lst(); +for (var i = 0; i < this.bondCount; i++) { +var bond = this.minBonds[i]; +var bondOrder = bond.order; +if (bond.isAromatic) bondOrder = 1.5; +if (bond.isAmide) bondOrder = 1.41; +distanceCalc.setData(calc, bond.data[0], bond.data[1], bondOrder); +} +calc = this.calculations[1] = new JU.Lst(); +var angleCalc = new JM.FF.UFFAngleCalc().set(this); +for (var i = this.minAngles.length; --i >= 0; ) angleCalc.setData(calc, this.minAngles[i].data); + +calc = this.calculations[2] = new JU.Lst(); +var torsionCalc = new JM.FF.UFFTorsionCalc().set(this); +for (var i = this.minTorsions.length; --i >= 0; ) torsionCalc.setData(calc, this.minTorsions[i].data); + +calc = this.calculations[4] = new JU.Lst(); +var oopCalc = new JM.FF.UFFOOPCalc().set(this); +var elemNo; +for (var i = 0; i < this.ac; i++) { +var a = this.minAtoms[i]; +if (a.nBonds == 3 && a.sType !== "C_3" && JM.FF.CalculationsUFF.isInvertible(elemNo = a.atom.getElementNumber())) oopCalc.setData(calc, i, elemNo, 0); +} +this.pairSearch(this.calculations[5] = new JU.Lst(), new JM.FF.UFFVDWCalc().set(this), null, null); +return true; +}); +c$.isInvertible = Clazz.defineMethod(c$, "isInvertible", +function(n){ +switch (n) { +case 6: +case 7: +case 8: +case 15: +case 33: +case 51: +case 83: +return true; +default: +return false; +} +}, "~N"); +c$.calculateR0 = Clazz.defineMethod(c$, "calculateR0", +function(ri, rj, chiI, chiJ, bondorder){ +var rbo = -0.1332 * (ri + rj) * Math.log(bondorder); +var dchi = Math.sqrt(chiI) - Math.sqrt(chiJ); +var ren = ri * rj * dchi * dchi / (chiI * ri + chiJ * rj); +return (ri + rj + rbo - ren); +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "compute", +function(iType, dataIn){ +switch (iType) { +case 0: +return this.bondCalc.compute(dataIn); +case 1: +return this.angleCalc.compute(dataIn); +case 2: +return this.torsionCalc.compute(dataIn); +case 4: +return this.oopCalc.compute(dataIn); +case 5: +return this.vdwCalc.compute(dataIn); +} +return 0.0; +}, "~N,~A"); +Clazz.overrideMethod(c$, "getDebugHeader", +function(iType){ +switch (iType) { +case -1: +return "Universal Force Field -- Rappe, A. K., et. al.; J. Am. Chem. Soc. (1992) 114(25) p. 10024-10035\n"; +default: +return this.getDebugHeader2(iType); +} +}, "~N"); +Clazz.overrideMethod(c$, "getParameterObj", +function(o){ +return null; +}, "JM.MinObject"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/FFParam.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/FFParam.js new file mode 100755 index 000000000000..291641581977 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/FFParam.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("JM.FF"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.iVal = null; +this.dVal = null; +this.sVal = null; +Clazz.instantialize(this, arguments);}, JM.FF, "FFParam", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceField.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceField.js new file mode 100755 index 000000000000..0097a191e2e4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceField.js @@ -0,0 +1,279 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(null, "JM.FF.ForceField", ["JU.PT", "JM.Util", "JU.Logger", "JV.FileManager", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.name = null; +this.calc = null; +this.criterion = 0; +this.e0 = 0; +this.dE = 0; +this.currentStep = 0; +this.stepMax = 0; +this.coordSaved = null; +this.minAtomCount = 0; +this.minBondCount = 0; +this.minAtoms = null; +this.minBonds = null; +this.minAngles = null; +this.minTorsions = null; +this.bsMinFixed = null; +this.trustRadius = 0.3; +this.minimizer = null; +this.nth = 10; +Clazz.instantialize(this, arguments);}, JM.FF, "ForceField", null); +Clazz.defineMethod(c$, "setModelFields", +function(){ +this.minAtoms = this.minimizer.minAtoms; +this.minBonds = this.minimizer.minBonds; +this.minAngles = this.minimizer.minAngles; +this.minTorsions = this.minimizer.minTorsions; +this.bsMinFixed = this.minimizer.bsMinFixed; +this.minAtomCount = this.minAtoms.length; +this.minBondCount = this.minBonds.length; +}); +Clazz.defineMethod(c$, "setConstraints", +function(m){ +this.bsMinFixed = m.bsMinFixed; +this.calc.setConstraints(m.constraints); +this.coordSaved = null; +}, "JM.Minimizer"); +Clazz.defineMethod(c$, "steepestDescentInitialize", +function(stepMax, criterion, trustRadius){ +this.stepMax = stepMax; +this.criterion = criterion / this.toUserUnits(1); +this.trustRadius = trustRadius; +this.currentStep = 0; +this.clearForces(); +this.calc.setLoggingEnabled(true); +this.calc.setLoggingEnabled(stepMax == 0 || JU.Logger.isActiveLevel(6)); +var s = this.name + " " + this.calc.getDebugHeader(-1) + "Jmol Minimization Version " + JV.Viewer.getJmolVersion() + "\n"; +this.calc.appendLogData(s); +JU.Logger.info(s); +this.calc.getConstraintList(); +if (this.calc.loggingEnabled) this.calc.appendLogData(this.calc.getAtomList("S T E E P E S T D E S C E N T")); +this.dE = 0; +this.calc.setPreliminary(stepMax > 0); +this.recalculateEnergy(); +s = JU.PT.sprintf(" Initial " + this.name + " E = %10.3f " + this.minimizer.units + "/mol criterion = %8.6f max steps = " + stepMax, "ff", Clazz.newArray(-1, [Float.$valueOf(this.toUserUnits(this.e0)), Float.$valueOf(this.toUserUnits(criterion))])); +this.minimizer.report(s, false); +this.calc.appendLogData(s); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "clearForces", +function(){ +for (var i = 0; i < this.minAtomCount; i++) this.minAtoms[i].force[0] = this.minAtoms[i].force[1] = this.minAtoms[i].force[2] = 0; + +}); +Clazz.defineMethod(c$, "steepestDescentTakeNSteps", +function(n, doUpdateAtoms){ +if (this.stepMax == 0) return false; +var isPreliminary = true; +for (var iStep = 1; iStep <= n; iStep++) { +this.currentStep++; +this.calc.setSilent(true); +for (var i = 0; i < this.minAtomCount; i++) if (this.bsMinFixed == null || !this.bsMinFixed.get(i)) this.setForcesUsingNumericalDerivative(this.minAtoms[i], 1); + +this.linearSearch(doUpdateAtoms); +this.calc.setSilent(false); +if (this.calc.loggingEnabled) this.calc.appendLogData(this.calc.getAtomList("S T E P " + this.currentStep)); +var e1 = this.energyFull(false, false); +this.dE = e1 - this.e0; +var done = JM.Util.isNear3(e1, this.e0, this.criterion); +if (done || this.currentStep % this.nth == 0 || this.stepMax <= this.currentStep) { +var s = JU.PT.sprintf(this.name + " Step %-4d E = %10.6f dE = %8.6f ", "Fi", Clazz.newArray(-1, [ Clazz.newFloatArray(-1, [this.toUserUnits(e1), this.toUserUnits(this.dE)]), Integer.$valueOf(this.currentStep)])); +this.minimizer.report(s, false); +this.calc.appendLogData(s); +}this.e0 = e1; +if (done || this.stepMax <= this.currentStep) { +if (this.calc.loggingEnabled) this.calc.appendLogData(this.calc.getAtomList("F I N A L G E O M E T R Y")); +if (done) { +var s = JU.PT.formatStringF("\n " + this.name + " STEEPEST DESCENT HAS CONVERGED: E = %8.5f " + this.minimizer.units + "/mol after " + this.currentStep + " steps", "f", this.toUserUnits(e1)); +this.calc.appendLogData(s); +this.minimizer.report(s, true); +JU.Logger.info(s); +}return false; +}if (isPreliminary && this.getNormalizedDE() >= 2) { +this.calc.setPreliminary(isPreliminary = false); +this.e0 = this.energyFull(false, false); +}} +return true; +}, "~N,~B"); +Clazz.defineMethod(c$, "getEnergies", +function(terms, gradients){ +if ((terms & 1) != 0) return this.energyFull(gradients, true); +var e = 0.0; +if ((terms & 2) != 0) e += this.energyBond(gradients); +if ((terms & 4) != 0) e += this.energyAngle(gradients); +if ((terms & 8) != 0) e += this.energyStretchBend(gradients); +if ((terms & 32) != 0) e += this.energyOOP(gradients); +if ((terms & 16) != 0) e += this.energyTorsion(gradients); +if ((terms & 64) != 0) e += this.energyVDW(gradients); +if ((terms & 128) != 0) e += this.energyES(gradients); +return e; +}, "~N,~B"); +Clazz.defineMethod(c$, "setForcesUsingNumericalDerivative", +function(atom, terms){ +var delta = 1.0e-5; +atom.force[0] = -this.getDE(atom, terms, 0, delta); +atom.force[1] = -this.getDE(atom, terms, 1, delta); +atom.force[2] = -this.getDE(atom, terms, 2, delta); +return; +}, "JM.MinAtom,~N"); +Clazz.defineMethod(c$, "getDE", +function(atom, terms, i, delta){ +atom.coord[i] += delta; +var e = this.getEnergies(terms, false); +atom.coord[i] -= delta; +return (e - this.e0) / delta; +}, "JM.MinAtom,~N,~N,~N"); +Clazz.defineMethod(c$, "energyFull", +function(gradients, isSilent){ +var energy; +if (gradients) this.clearForces(); +energy = this.energyBond(gradients) + this.energyAngle(gradients) + this.energyTorsion(gradients) + this.energyStretchBend(gradients) + this.energyOOP(gradients) + this.energyVDW(gradients) + this.energyES(gradients); +if (!isSilent && this.calc.loggingEnabled) this.calc.appendLogData(JU.PT.sprintf("\nTOTAL %s ENERGY = %8.3f %s/mol\n", "sfs", Clazz.newArray(-1, [this.name, Float.$valueOf(this.toUserUnits(energy)), this.minimizer.units]))); +return energy; +}, "~B,~B"); +Clazz.defineMethod(c$, "energyStretchBend", +function(gradients){ +return this.calc.energyStretchBend(gradients); +}, "~B"); +Clazz.defineMethod(c$, "energyBond", +function(gradients){ +return this.calc.energyBond(gradients); +}, "~B"); +Clazz.defineMethod(c$, "energyAngle", +function(gradients){ +return this.calc.energyAngle(gradients); +}, "~B"); +Clazz.defineMethod(c$, "energyTorsion", +function(gradients){ +return this.calc.energyTorsion(gradients); +}, "~B"); +Clazz.defineMethod(c$, "energyOOP", +function(gradients){ +return this.calc.energyOOP(gradients); +}, "~B"); +Clazz.defineMethod(c$, "energyVDW", +function(gradients){ +return this.calc.energyVDW(gradients); +}, "~B"); +Clazz.defineMethod(c$, "energyES", +function(gradients){ +return this.calc.energyES(gradients); +}, "~B"); +Clazz.defineMethod(c$, "linearSearch", +function(doUpdateAtoms){ +var step = 0.75 * this.trustRadius; +var trustRadius2 = this.trustRadius * this.trustRadius; +var e1 = this.energyFull(false, true); +var nSteps = 10; +var isDone = false; +for (var iStep = 0; iStep < nSteps && !isDone; iStep++) { +this.saveCoordinates(); +for (var i = 0; i < this.minAtomCount; ++i) { +if (this.bsMinFixed == null || !this.bsMinFixed.get(i)) { +var force = this.minAtoms[i].force; +var coord = this.minAtoms[i].coord; +var f2 = (force[0] * force[0] + force[1] * force[1] + force[2] * force[2]); +var f = trustRadius2 / step / step / f2; +if (1 > f) { +f2 = Math.sqrt(f); +force[0] *= f2; +force[1] *= f2; +force[2] *= f2; +}for (var j = 0; j < 3; ++j) { +if (JM.Util.isFinite(force[j])) { +var tempStep = force[j] * step; +if (tempStep > this.trustRadius) coord[j] += this.trustRadius; + else if (tempStep < -this.trustRadius) coord[j] -= this.trustRadius; + else coord[j] += tempStep; +}} +}} +if (doUpdateAtoms) { +this.minimizer.updateAtomXYZ(false); +}var e2 = this.energyFull(false, true); +isDone = JM.Util.isNear3(e2, e1, 1.0e-3); +if (e2 > e1) { +step *= 0.1; +this.restoreCoordinates(); +} else if (e2 < e1) { +e1 = e2; +step *= 2.15; +if (step > 1.0) step = 1.0; +}} +}, "~B"); +Clazz.defineMethod(c$, "saveCoordinates", +function(){ +if (this.coordSaved == null) this.coordSaved = Clazz.newDoubleArray (this.minAtomCount, 3, 0); +for (var i = 0; i < this.minAtomCount; i++) for (var j = 0; j < 3; j++) this.coordSaved[i][j] = this.minAtoms[i].coord[j]; + + +}); +Clazz.defineMethod(c$, "restoreCoordinates", +function(){ +for (var i = 0; i < this.minAtomCount; i++) for (var j = 0; j < 3; j++) this.minAtoms[i].coord[j] = this.coordSaved[i][j]; + + +}); +Clazz.defineMethod(c$, "detectExplosion", +function(){ +for (var i = 0; i < this.minAtomCount; i++) { +var atom = this.minAtoms[i]; +for (var j = 0; j < 3; j++) if (!JM.Util.isFinite(atom.coord[j])) return true; + +} +for (var i = 0; i < this.minBondCount; i++) { +var bond = this.minBonds[i]; +if (JM.Util.distance2(this.minAtoms[bond.data[0]].coord, this.minAtoms[bond.data[1]].coord) > 900.0) return true; +} +return false; +}); +Clazz.defineMethod(c$, "getCurrentStep", +function(){ +return this.currentStep; +}); +Clazz.defineMethod(c$, "getEnergy", +function(){ +return this.e0; +}); +Clazz.defineMethod(c$, "getAtomList", +function(title){ +return this.calc.getAtomList(title); +}, "~S"); +Clazz.defineMethod(c$, "getEnergyDiff", +function(){ +return this.dE; +}); +Clazz.defineMethod(c$, "getLogData", +function(){ +return this.calc.getLogData(); +}); +Clazz.defineMethod(c$, "getNormalizedDE", +function(){ +return Math.abs(this.dE / this.criterion); +}); +Clazz.defineMethod(c$, "toUserUnits", +function(energy){ +return this.toUnits(energy, this.calc.getUnits()); +}, "~N"); +Clazz.defineMethod(c$, "toUnits", +function(energy, units){ +return (units.equalsIgnoreCase(this.minimizer.units) ? energy : energy * (this.minimizer.units.equals("kJ") ? 4.1868 : 0.23884589662749595)); +}, "~N,~S"); +Clazz.defineMethod(c$, "log", +function(s){ +this.calc.appendLogData(s); +}, "~S"); +Clazz.defineMethod(c$, "getBufferedReader", +function(resourceName){ +return JV.FileManager.getBufferedReaderForResource(this.minimizer.vwr, this, "JM/FF/", "data/" + resourceName); +}, "~S"); +Clazz.defineMethod(c$, "recalculateEnergy", +function(){ +this.e0 = this.energyFull(false, false); +}); +Clazz.defineMethod(c$, "setNth", +function(n){ +this.nth = n; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceFieldMMFF.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceFieldMMFF.js new file mode 100755 index 000000000000..04f79bb74699 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceFieldMMFF.js @@ -0,0 +1,1170 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.ForceField"], "JM.FF.ForceFieldMMFF", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.PT", "JM.MinObject", "JM.FF.AtomType", "$.CalculationsMMFF", "JU.BSUtil", "$.Elements", "$.Escape", "$.Logger", "JV.JmolAsyncException"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ffParams = null; +this.rawAtomTypes = null; +this.rawBondTypes = null; +this.rawMMFF94Charges = null; +this.vRings = null; +this.line = null; +this.typeData = null; +Clazz.instantialize(this, arguments);}, JM.FF, "ForceFieldMMFF", JM.FF.ForceField); +Clazz.prepareFields (c$, function(){ +this.typeData = Clazz.newIntArray (4, 0); +}); +Clazz.makeConstructor(c$, +function(m, isQuick){ +Clazz.superConstructor (this, JM.FF.ForceFieldMMFF, []); +this.minimizer = m; +if (isQuick) { +this.name = "MMFF2D"; +this.ffParams = JM.FF.ForceFieldMMFF.mmff2DParams; +if (this.ffParams == null) JM.FF.ForceFieldMMFF.mmff2DParams = this.ffParams = this.getParameters(true); +} else { +this.name = "MMFF"; +this.ffParams = JM.FF.ForceFieldMMFF.mmffParams; +if (this.ffParams == null) JM.FF.ForceFieldMMFF.mmffParams = this.ffParams = this.getParameters(false); +}}, "JM.Minimizer,~B"); +Clazz.defineMethod(c$, "getAtomTypeDescriptions", +function(){ +return JM.FF.ForceFieldMMFF.getAtomTypeDescs(this.rawAtomTypes); +}); +Clazz.defineMethod(c$, "getPartialCharges", +function(){ +return this.rawMMFF94Charges; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +}); +Clazz.overrideMethod(c$, "setModel", +function(bsElements, elemnoMax){ +var m = this.minimizer; +if (!this.setArrays(m.atoms, m.bsAtoms, m.bonds, m.rawBondCount, false, false)) return false; +this.setModelFields(); +if (!this.fixTypes()) return false; +this.calc = new JM.FF.CalculationsMMFF(this, this.ffParams, this.minAtoms, this.minBonds, this.minAngles, this.minTorsions, this.minimizer.constraints); +this.calc.setLoggingEnabled(true); +return this.calc.setupCalculations(); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "setArrays", +function(atoms, bsAtoms, bonds, rawBondCount, doRound, allowUnknowns){ +var m = this.minimizer; +this.vRings = JU.AU.createArrayOfArrayList(4); +this.rawAtomTypes = JM.FF.ForceFieldMMFF.setAtomTypes(atoms, bsAtoms, m.vwr.getSmilesMatcher(), this.vRings, allowUnknowns); +if (this.rawAtomTypes == null) return false; +this.rawBondTypes = this.setBondTypes(bonds, rawBondCount, bsAtoms); +this.rawMMFF94Charges = this.calculatePartialCharges(bonds, this.rawBondTypes, atoms, this.rawAtomTypes, bsAtoms, doRound); +return true; +}, "~A,JU.BS,~A,~N,~B,~B"); +Clazz.defineMethod(c$, "getParameters", +function(isQuick){ +this.getAtomTypes(); +var resourceName = (isQuick ? "mmff94_2d.par.txt" : "mmff94.par.txt"); +var data = new java.util.Hashtable(); +if (JU.Logger.debugging) JU.Logger.debug("reading data from " + resourceName); +var br = null; +var line = null; +try { +br = this.getBufferedReader(resourceName); +var pt = 0; +var dataType = 0; +while (true) { +while ((pt = (line = br.readLine()).indexOf(".PAR")) < 0) { +} +if ((dataType = JM.FF.ForceFieldMMFF.types[Clazz.doubleToInt("END.BCI.CHG.ANG.NDK.OND.OOP.TBN.FSB.TOR.VDW.".indexOf(line.substring(pt - 3, pt + 1)) / 4)]) < 1) break; +this.readParams(br, dataType, data); +} +br.close(); +} catch (e$$) { +if (Clazz.exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +throw new JV.JmolAsyncException(e.getFileName()); +} +} else if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.err.println("Exception " + e.toString() + " in getResource " + resourceName + " line=" + line); +} +} else { +throw e$$; +} +} finally { +try { +br.close(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +return data; +}, "~B"); +Clazz.defineMethod(c$, "readParams", +function(br, dataType, data){ +var value = null; +var a1 = 0; +var a2 = 127; +var a3 = 127; +var a4 = 127; +var type = 0; +switch (dataType) { +case 3: +case 5: +case 9: +break; +case 34: +a4 = 124; +break; +case 21: +a4 = 125; +break; +case 546: +a4 = 123; +type = 0; +break; +case 13: +type = 6; +break; +case 1: +type = 0; +break; +case 37: +a4 = 126; +type = 0; +break; +case 17: +a4 = 122; +type = 0; +break; +} +while (!br.readLine().startsWith("*")) { +} +while ((this.line = br.readLine()).startsWith("*")) { +} +do { +switch (dataType) { +case 546: +case 13: +case 1: +case 37: +break; +case 17: +if (this.line.charAt(5) != ' ') continue; +break; +case 34: +if (this.line.charAt(0) == '4') continue; +case 5: +case 3: +case 21: +case 9: +type = (this.line.charAt(0)).charCodeAt(0) - 48; +break; +} +switch (dataType) { +case 13: +case 9: +a4 = this.ival(18, 20); +case 5: +case 21: +case 37: +a3 = this.ival(13, 15); +case 546: +case 3: +case 34: +a2 = this.ival(8, 10); +case 1: +case 17: +a1 = this.ival(3, 5); +break; +} +switch (dataType) { +case 546: +value = Clazz.newDoubleArray(-1, [this.dval(19, 25), this.dval(13, 18)]); +break; +case 3: +value = Clazz.newDoubleArray(-1, [this.dval(14, 20), this.dval(25, 31)]); +break; +case 5: +case 21: +value = Clazz.newDoubleArray(-1, [this.dval(19, 25), this.dval(28, 35)]); +break; +case 34: +value = Float.$valueOf(this.fval(10, 20)); +break; +case 13: +value = Clazz.newDoubleArray(-1, [this.dval(24, 30)]); +break; +case 1: +value = Float.$valueOf(this.fval(5, 15)); +break; +case 37: +var v1 = this.dval(19, 25); +var v2 = this.dval(28, 35); +value = Clazz.newDoubleArray(-1, [v1, v2]); +var key = JM.MinObject.getKey(type, a1, a2, a3, a4); +data.put(key, value); +value = Clazz.newDoubleArray(-1, [v2, v1]); +var a = a1; +a1 = a3; +a3 = a; +break; +case 9: +value = Clazz.newDoubleArray(-1, [this.dval(22, 28), this.dval(30, 36), this.dval(38, 44)]); +break; +case 17: +value = Clazz.newDoubleArray(-1, [this.dval(10, 15), this.dval(20, 25), this.dval(30, 35), this.dval(40, 45), this.line.charAt(46)]); +break; +} +var key = JM.MinObject.getKey(type, a1, a2, a3, a4); +data.put(key, value); +if (JU.Logger.debugging) JU.Logger.debug(JM.MinObject.decodeKey(key) + " " + (Clazz.instanceOf(value, Float) ? value : JU.Escape.eAD(value))); +} while (!(this.line = br.readLine()).startsWith("$")); +}, "java.io.BufferedReader,~N,java.util.Map"); +Clazz.defineMethod(c$, "ival", +function(i, j){ +return JU.PT.parseInt(this.line.substring(i, j).trim()); +}, "~N,~N"); +Clazz.defineMethod(c$, "fval", +function(i, j){ +return Float.$valueOf(this.line.substring(i, j).trim()).floatValue(); +}, "~N,~N"); +Clazz.defineMethod(c$, "dval", +function(i, j){ +return Double.$valueOf(this.line.substring(i, j).trim()).doubleValue(); +}, "~N,~N"); +Clazz.defineMethod(c$, "getAtomTypes", +function(){ +var resourceName = "MMFF94-smarts.txt"; +var types = new JU.Lst(); +try { +var br = this.getBufferedReader(resourceName); +var at; +types.addLast( new JM.FF.AtomType(0, 0, 0, 0, 1, "H or NOT FOUND", "")); +while ((this.line = br.readLine()) != null) { +if (this.line.length == 0 || this.line.startsWith("#")) continue; +var elemNo = this.ival(3, 5); +var mmType = this.ival(6, 8); +var hType = this.ival(9, 11); +var formalCharge = this.fval(12, 15) / 12; +var val = this.ival(16, 18); +var desc = this.line.substring(19, 44).trim(); +var smarts = this.line.substring(45).trim(); +types.addLast(at = new JM.FF.AtomType(elemNo, mmType, hType, formalCharge, val, desc, smarts)); +JM.FF.ForceFieldMMFF.setFlags(at); +} +br.close(); +} catch (e$$) { +if (Clazz.exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +throw new JV.JmolAsyncException(e.getFileName()); +} +} else if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.err.println("Exception " + e.toString() + " in getResource " + resourceName + " line=" + this.line); +} +} else { +throw e$$; +} +} +JU.Logger.info((types.size() - 1) + " SMARTS-based atom types read"); +JM.FF.ForceFieldMMFF.atomTypes = types; +}); +c$.setFlags = Clazz.defineMethod(c$, "setFlags", +function(at){ +switch (at.mmType) { +case 32: +case 35: +case 72: +at.fcadj = 0.5; +break; +case 62: +case 76: +at.fcadj = 0.25; +break; +} +switch (at.mmType) { +case 37: +case 38: +case 39: +case 44: +case 58: +case 59: +case 63: +case 64: +case 65: +case 66: +case 69: +case 78: +case 79: +case 81: +case 82: +at.arom = true; +} +switch (at.mmType) { +case 2: +case 3: +case 4: +case 9: +case 30: +case 37: +case 39: +case 54: +case 57: +case 58: +case 63: +case 64: +case 67: +case 75: +case 78: +case 80: +case 81: +at.sbmb = true; +} +switch (at.mmType) { +case 6: +case 8: +case 10: +case 11: +case 12: +case 13: +case 14: +case 15: +case 26: +case 32: +case 35: +case 39: +case 40: +case 43: +case 44: +case 59: +case 62: +case 70: +case 72: +case 76: +at.pilp = true; +} +switch (at.mmType) { +case 10: +case 32: +case 35: +case 39: +case 41: +case 44: +case 55: +case 56: +case 58: +case 59: +case 69: +case 72: +case 81: +case 82: +at.mltb = 1; +break; +case 2: +case 3: +case 7: +case 9: +case 16: +case 17: +case 30: +case 37: +case 38: +case 45: +case 46: +case 47: +case 51: +case 53: +case 54: +case 57: +case 63: +case 64: +case 65: +case 66: +case 67: +case 74: +case 75: +case 78: +case 79: +case 80: +at.mltb = 2; +break; +case 4: +case 42: +case 60: +case 61: +at.mltb = 3; +break; +} +}, "JM.FF.AtomType"); +Clazz.defineMethod(c$, "calculatePartialCharges", +function(bonds, bTypes, atoms, aTypes, bsAtoms, doRound){ +var partialCharges = Clazz.newFloatArray (atoms.length, 0); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) partialCharges[i] = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, aTypes[i])).formalCharge; + +var a1 = null; +for (var i = bTypes.length; --i >= 0; ) { +a1 = bonds[i].atom1; +var a2 = bonds[i].atom2; +var ok1 = bsAtoms.get(a1.i); +var ok2 = bsAtoms.get(a2.i); +if (!ok1 && !ok2) continue; +var it = aTypes[a1.i]; +var at1 = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +var type1 = (it < 0 ? -it : at1.mmType); +it = aTypes[a2.i]; +var at2 = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +var type2 = (it < 0 ? -it : at2.mmType); +var dq = NaN; +try { +var bondType = bTypes[i]; +var bFactor = (type1 < type2 ? -1 : 1); +var key = JM.MinObject.getKey(bondType, bFactor == 1 ? type2 : type1, bFactor == 1 ? type1 : type2, 127, 124); +var bciValue = this.ffParams.get(key); +var bci = NaN; +var msg = (JU.Logger.debugging ? a1 + "/" + a2 + " mmTypes=" + type1 + "/" + type2 + " formalCharges=" + at1.formalCharge + "/" + at2.formalCharge + " bci = " : null); +if (bciValue == null) { +var a; +var b; +if ((a = this.ffParams.get(JM.MinObject.getKey(0, type1, 127, 127, 127))) != null && (b = this.ffParams.get(JM.MinObject.getKey(0, type2, 127, 127, 127))) != null) { +var pa = a.floatValue(); +var pb = b.floatValue(); +bci = pa - pb; +if (JU.Logger.debugging) msg += pa + " - " + pb + " = "; +}} else { +bci = bFactor * bciValue.floatValue(); +}if (JU.Logger.debugging) { +msg += bci; +JU.Logger.debug(msg); +}dq = at2.fcadj * at2.formalCharge - at1.fcadj * at1.formalCharge + bci; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +dq = NaN; +} else { +throw e; +} +} +if (ok1) partialCharges[a1.i] += dq; +if (ok2) partialCharges[a2.i] -= dq; +} +if (doRound) { +var abscharge = 0; +for (var i = partialCharges.length; --i >= 0; ) { +partialCharges[i] = (Math.round(partialCharges[i] * 1000)) / 1000; +abscharge += Math.abs(partialCharges[i]); +} +if (abscharge == 0 && a1 != null) { +partialCharges[a1.i] = -0.0; +}}return partialCharges; +}, "~A,~A,~A,~A,JU.BS,~B"); +c$.isSpecialBondType = Clazz.defineMethod(c$, "isSpecialBondType", +function(at1, at2){ +return at1.sbmb && at2.sbmb || at1.arom && at2.arom; +}, "JM.FF.AtomType,JM.FF.AtomType"); +Clazz.defineMethod(c$, "getBondType", +function(bond, at1, at2, index1, index2){ +return (JM.FF.ForceFieldMMFF.isSpecialBondType(at1, at2) && bond.getCovalentOrder() == 1 && !this.isAromaticBond(index1, index2) ? 1 : 0); +}, "JM.Bond,JM.FF.AtomType,JM.FF.AtomType,~N,~N"); +Clazz.defineMethod(c$, "isAromaticBond", +function(a1, a2){ +if (this.vRings[3] != null) for (var i = this.vRings[3].size(); --i >= 0; ) { +var bsRing = this.vRings[3].get(i); +if (bsRing.get(a1) && bsRing.get(a2)) return true; +} +return false; +}, "~N,~N"); +c$.getAtomTypeDescs = Clazz.defineMethod(c$, "getAtomTypeDescs", +function(types){ +var stypes = new Array(types.length); +for (var i = types.length; --i >= 0; ) { +stypes[i] = String.valueOf(types[i] < 0 ? -types[i] : JM.FF.ForceFieldMMFF.atomTypes.get(types[i]).mmType); +} +return stypes; +}, "~A"); +c$.setAtomTypes = Clazz.defineMethod(c$, "setAtomTypes", +function(atoms, bsAtoms, smartsMatcher, vRings, allowUnknowns){ +var bitSets = new JU.Lst(); +var smarts = new Array(JM.FF.ForceFieldMMFF.atomTypes.size()); +var types = Clazz.newIntArray (atoms.length, 0); +var bsElements = new JU.BS(); +var bsHydrogen = new JU.BS(); +var bsConnected = JU.BSUtil.copy(bsAtoms); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = atoms[i]; +var bonds = a.bonds; +if (bonds != null) for (var j = bonds.length; --j >= 0; ) if (bonds[j].isCovalentNotPartial0()) bsConnected.set(bonds[j].getOtherAtom(a).i); + +} +for (var i = bsConnected.nextSetBit(0); i >= 0; i = bsConnected.nextSetBit(i + 1)) { +var n = atoms[i].getElementNumber(); +switch (n) { +case 1: +bsHydrogen.set(i); +break; +default: +bsElements.set(n); +} +} +var nUsed = 0; +for (var i = 1; i < JM.FF.ForceFieldMMFF.atomTypes.size(); i++) { +var at = JM.FF.ForceFieldMMFF.atomTypes.get(i); +if (!bsElements.get(at.elemNo)) continue; +smarts[i] = at.smartsCode; +nUsed++; +} +JU.Logger.info(nUsed + " SMARTS matches used"); +try { +smartsMatcher.getMMFF94AtomTypes(smarts, atoms, atoms.length, bsConnected, bitSets, vRings); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +} else { +throw e; +} +} +var bsDone = new JU.BS(); +for (var j = 0; j < bitSets.size(); j++) { +var bs = bitSets.get(j); +if (bs == null) continue; +bs.andNot(bsDone); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) types[i] = j; + +bsDone.or(bs); +} +for (var i = bsHydrogen.nextSetBit(0); i >= 0; i = bsHydrogen.nextSetBit(i + 1)) { +var bonds = atoms[i].bonds; +if (bonds != null) { +var j = types[bonds[0].getOtherAtom(atoms[i]).i]; +if (j != 0) bsDone.set(i); +types[i] = -JM.FF.ForceFieldMMFF.atomTypes.get(j).hType; +}} +if (JU.Logger.debugging) for (var i = bsConnected.nextSetBit(0); i >= 0; i = bsConnected.nextSetBit(i + 1)) JU.Logger.debug("atom " + atoms[i] + "\ttype " + (types[i] < 0 ? "" + -types[i] : (JM.FF.ForceFieldMMFF.atomTypes.get(types[i]).mmType + "\t" + JM.FF.ForceFieldMMFF.atomTypes.get(types[i]).smartsCode + "\t" + JM.FF.ForceFieldMMFF.atomTypes.get(types[i]).descr))); + +if (!allowUnknowns && bsDone.cardinality() != bsConnected.cardinality()) return null; +return types; +}, "~A,JU.BS,J.api.SmilesMatcherInterface,~A,~B"); +Clazz.defineMethod(c$, "setBondTypes", +function(bonds, bondCount, bsAtoms){ +var bTypes = Clazz.newIntArray (bondCount, 0); +for (var i = bondCount; --i >= 0; ) { +var a1 = bonds[i].atom1; +var a2 = bonds[i].atom2; +var ok1 = bsAtoms.get(a1.i); +var ok2 = bsAtoms.get(a2.i); +if (!ok1 && !ok2) continue; +var it = this.rawAtomTypes[a1.i]; +var at1 = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +it = this.rawAtomTypes[a2.i]; +var at2 = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +bTypes[i] = this.getBondType(bonds[i], at1, at2, a1.i, a2.i); +} +return bTypes; +}, "~A,~N,JU.BS"); +Clazz.defineMethod(c$, "fixTypes", +function(){ +for (var i = this.minAtomCount; --i >= 0; ) { +var a = this.minAtoms[i]; +var rawIndex = a.atom.i; +var it = this.rawAtomTypes[rawIndex]; +a.ffAtomType = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +var type = (it < 0 ? -it : JM.FF.ForceFieldMMFF.atomTypes.get(it).mmType); +a.ffType = type; +a.vdwKey = JM.MinObject.getKey(0, type, 127, 127, 122); +a.partialCharge = this.rawMMFF94Charges[rawIndex]; +} +for (var i = this.minBonds.length; --i >= 0; ) { +var bond = this.minBonds[i]; +bond.type = this.rawBondTypes[bond.rawIndex]; +bond.key = this.getKey(bond, bond.type, 3); +if (bond.key == null) return false; +} +for (var i = this.minAngles.length; --i >= 0; ) { +var angle = this.minAngles[i]; +angle.key = this.getKey(angle, angle.type, 5); +angle.sbKey = this.getKey(angle, angle.sbType, 21); +} +for (var i = this.minTorsions.length; --i >= 0; ) { +var torsion = this.minTorsions[i]; +torsion.key = this.getKey(torsion, torsion.type, 9); +} +return true; +}); +Clazz.defineMethod(c$, "setAngleType", +function(angle){ +angle.type = this.minBonds[angle.data[3]].type + this.minBonds[angle.data[4]].type; +if (this.checkRings(this.vRings[0], angle.data, 3)) { +angle.type += (angle.type == 0 ? 3 : 4); +} else if (this.checkRings(this.vRings[1], angle.data, 3)) { +angle.type += (angle.type == 0 ? 4 : 6); +}angle.sbType = JM.FF.ForceFieldMMFF.sbMap[angle.type]; +switch (angle.type) { +case 1: +case 5: +case 7: +angle.sbType += this.minBonds[angle.data[4]].type; +break; +} +return angle.type; +}, "JM.MinAngle"); +Clazz.defineMethod(c$, "setTorsionType", +function(t){ +if (this.checkRings(this.vRings[1], t.data, 4)) return (t.type = 4); +t.type = (this.minBonds[t.data[5]].type == 1 ? 1 : this.minBonds[t.data[4]].type == 0 && this.minBonds[t.data[6]].type == 0 ? 0 : 2); +if (t.type == 0 && this.checkRings(this.vRings[2], t.data, 4)) { +t.type = 5; +}return t.type; +}, "JM.MinTorsion"); +Clazz.defineMethod(c$, "typeOf", +function(iAtom){ +return this.minAtoms[iAtom].ffType; +}, "~N"); +Clazz.defineMethod(c$, "checkRings", +function(v, minlist, n){ +if (v != null) for (var i = v.size(); --i >= 0; ) { +var bs = v.get(i); +if (bs.get(this.minAtoms[minlist[0]].atom.i) && bs.get(this.minAtoms[minlist[1]].atom.i) && (n < 3 || bs.get(this.minAtoms[minlist[2]].atom.i)) && (n < 4 || bs.get(this.minAtoms[minlist[3]].atom.i))) return true; +} +return false; +}, "JU.Lst,~A,~N"); +Clazz.defineMethod(c$, "getKey", +function(obj, type, ktype){ +var o = (Clazz.instanceOf(obj,"JM.MinObject") ? obj : null); +var data = (o == null ? obj : o.data); +var n = 4; +switch (ktype) { +case 3: +this.fixOrder(data, 0, 1); +n = 2; +break; +case 5: +if (this.fixOrder(data, 0, 2) == -1) JM.FF.ForceFieldMMFF.swap(data, 3, 4); +type = this.setAngleType(o); +n = 3; +break; +case 21: +n = 3; +break; +case 9: +switch (this.fixOrder(data, 1, 2)) { +case 1: +break; +case -1: +JM.FF.ForceFieldMMFF.swap(data, 0, 3); +JM.FF.ForceFieldMMFF.swap(data, 4, 6); +break; +case 0: +if (this.fixOrder(data, 0, 3) == -1) JM.FF.ForceFieldMMFF.swap(data, 4, 6); +break; +} +type = this.setTorsionType(o); +} +var key = null; +for (var i = 0; i < 4; i++) this.typeData[i] = (i < n ? this.typeOf(data[i]) : 127); + +switch (ktype) { +case 21: +this.typeData[3] = 125; +break; +case 13: +JM.FF.ForceFieldMMFF.sortOop(this.typeData); +break; +} +key = JM.MinObject.getKey(type, this.typeData[0], this.typeData[1], this.typeData[2], this.typeData[3]); +var ddata = this.ffParams.get(key); +switch (ktype) { +case 3: +return (ddata != null && ddata[0] > 0 ? key : this.applyEmpiricalRules(o, ddata, 3)); +case 5: +if (ddata != null && ddata[0] != 0) return key; +break; +case 9: +if (ddata == null) { +if (!this.ffParams.containsKey(key = this.getTorsionKey(type, 0, 2)) && !this.ffParams.containsKey(key = this.getTorsionKey(type, 2, 0)) && !this.ffParams.containsKey(key = this.getTorsionKey(type, 2, 2))) key = this.getTorsionKey(0, 2, 2); +ddata = this.ffParams.get(key); +}return (ddata != null ? key : this.applyEmpiricalRules(o, ddata, 9)); +case 21: +if (ddata != null) return key; +var r1 = this.getRowFor(data[0]); +var r2 = this.getRowFor(data[1]); +var r3 = this.getRowFor(data[2]); +return JM.MinObject.getKey(0, r1, r2, r3, 126); +case 13: +if (ddata != null) return key; +} +var isSwapped = false; +var haveKey = false; +for (var i = 0; i < 3 && !haveKey; i++) { +for (var j = 0, bit = 1; j < n; j++, bit <<= 1) if ((ktype & bit) == bit) this.typeData[j] = JM.FF.ForceFieldMMFF.getEquivalentType(this.typeOf(data[j]), i); + +switch (ktype) { +case 3: +isSwapped = (JM.FF.ForceFieldMMFF.fixTypeOrder(this.typeData, 0, 1)); +break; +case 5: +isSwapped = (JM.FF.ForceFieldMMFF.fixTypeOrder(this.typeData, 0, 2)); +break; +case 13: +JM.FF.ForceFieldMMFF.sortOop(this.typeData); +break; +} +key = JM.MinObject.getKey(type, this.typeData[0], this.typeData[1], this.typeData[2], this.typeData[3]); +haveKey = this.ffParams.containsKey(key); +} +if (haveKey) { +if (isSwapped) switch (ktype) { +case 5: +JM.FF.ForceFieldMMFF.swap(data, 0, 2); +JM.FF.ForceFieldMMFF.swap(data, 3, 4); +this.setAngleType(o); +break; +} +} else if (type != 0 && ktype == 5) { +key = Integer.$valueOf(key.intValue() ^ 0xFF); +}ddata = this.ffParams.get(key); +switch (ktype) { +case 5: +return (ddata != null && ddata[0] != 0 ? key : this.applyEmpiricalRules(o, ddata, 5)); +} +return key; +}, "~O,~N,~N"); +Clazz.defineMethod(c$, "getTorsionKey", +function(type, i, j){ +return JM.MinObject.getKey(type, JM.FF.ForceFieldMMFF.getEquivalentType(this.typeData[0], i), this.typeData[1], this.typeData[2], JM.FF.ForceFieldMMFF.getEquivalentType(this.typeData[3], j)); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "applyEmpiricalRules", +function(o, ddata, ktype){ +var rr; +var rr2; +var beta = 0; +var a; +var b; +var c; +switch (ktype) { +case 3: +a = this.minAtoms[o.data[0]]; +b = this.minAtoms[o.data[1]]; +var elemno1 = a.atom.getElementNumber(); +var elemno2 = b.atom.getElementNumber(); +var key = JM.MinObject.getKey(0, Math.min(elemno1, elemno2), Math.max(elemno1, elemno2), 127, 123); +ddata = this.ffParams.get(key); +if (ddata == null) return null; +var kbref = ddata[0]; +var r0ref = ddata[1]; +var r0 = JM.FF.ForceFieldMMFF.getRuleBondLength(a, b, (o).order, this.isAromaticBond(o.data[0], o.data[1])); +if (r0 == 0) return null; +rr = r0ref / r0; +rr2 = rr * rr; +var rr4 = rr2 * rr2; +var rr6 = rr4 * rr2; +var kb = kbref * rr6; +o.ddata = Clazz.newDoubleArray(-1, [kb, r0]); +return Integer.$valueOf(-1); +case 5: +var theta0; +if (ddata == null || (theta0 = ddata[1]) == 0) { +b = this.minAtoms[o.data[1]]; +var atom = b.atom; +var elemno = atom.getElementNumber(); +switch (o.type) { +case 3: +case 5: +case 6: +theta0 = 60; +beta *= 0.05; +break; +case 4: +case 7: +case 8: +theta0 = 90; +break; +default: +theta0 = 120; +var crd = atom.getCovalentBondCount(); +switch (crd) { +case 2: +if (this.isLinear(b)) theta0 = 180; + else if (elemno == 8) theta0 = 105; + else if (elemno > 10) theta0 = 95.0; +break; +case 3: +if (b.ffAtomType.mltb == 0 && b.ffAtomType.val == 3) theta0 = (elemno == 7 ? 107 : 92); +break; +case 4: +theta0 = 109.45; +break; +} +} +}beta = 1.75; +switch (o.type) { +case 3: +case 5: +case 6: +beta *= 0.05; +break; +case 4: +case 7: +case 8: +beta *= 0.85; +break; +} +var za = JM.FF.ForceFieldMMFF.getZParam(this.minAtoms[o.data[0]].atom.getElementNumber()); +var cb = JM.FF.ForceFieldMMFF.getCParam(this.minAtoms[o.data[1]].atom.getElementNumber()); +var zc = JM.FF.ForceFieldMMFF.getZParam(this.minAtoms[o.data[2]].atom.getElementNumber()); +var r0ab = this.getR0(this.minBonds[o.data[3]]); +var r0bc = this.getR0(this.minBonds[o.data[4]]); +rr = r0ab + r0bc; +rr2 = rr * rr; +var D = (r0ab - r0bc) / rr2; +var theta2 = theta0 * 0.017453292519943295; +theta2 *= theta2; +var ka = (beta * za * cb * zc * Math.exp(-2 * D)) / (rr * theta2); +o.ddata = Clazz.newDoubleArray(-1, [ka, theta0]); +return Integer.$valueOf(-1); +case 9: +var ib = o.data[1]; +var ic = o.data[2]; +b = this.minAtoms[ib]; +c = this.minAtoms[ic]; +if (this.isLinear(b) || this.isLinear(c)) return null; +var bondBC = this.minBonds[o.data[5]]; +var elemnoB = b.atom.getElementNumber(); +var elemnoC = c.atom.getElementNumber(); +var ub = JM.FF.ForceFieldMMFF.getUParam(elemnoB); +var uc = JM.FF.ForceFieldMMFF.getUParam(elemnoC); +var vb = JM.FF.ForceFieldMMFF.getVParam(elemnoB); +var vc = JM.FF.ForceFieldMMFF.getVParam(elemnoC); +var v1 = 0; +var v2 = 0; +var v3 = 0; +var pi_bc = -1; +var n_bc = -1; +var wb = -1; +var wc = 0; +var valB = b.ffAtomType.val; +var valC = c.ffAtomType.val; +var pilpB = b.ffAtomType.pilp; +var pilpC = c.ffAtomType.pilp; +var mltbB = b.ffAtomType.mltb; +var mltbC = c.ffAtomType.mltb; +out : while (true) { +if (this.isAromaticBond(ib, ic)) { +pi_bc = (pilpB || pilpC ? 0.3 : 0.5); +beta = (valB + valC == 7 ? 3 : 6); +break out; +}if (bondBC.order == 2) { +beta = 6; +pi_bc = (mltbB == 2 && mltbC == 2 ? 1.0 : 0.4); +break out; +}var crdB = b.atom.getCovalentBondCount(); +var crdC = c.atom.getCovalentBondCount(); +if (crdB == 4 && crdC == 4) { +vb = JM.FF.ForceFieldMMFF.getVParam(elemnoB); +vc = JM.FF.ForceFieldMMFF.getVParam(elemnoC); +n_bc = 9; +break out; +}if (crdB != 4 && (valB > crdB || mltbB > 0) || crdC != 4 && (valC > crdC || mltbC > 0)) return null; +var case2 = (pilpB && mltbC > 0); +var case3 = (pilpC && mltbB > 0); +if (bondBC.order == 1 && (mltbB > 0 && mltbC > 0 || case2 || case3)) { +if (pilpB && pilpC) return null; +beta = 6; +if (case2) { +pi_bc = (mltbC == 1 ? 0.5 : elemnoB <= 10 && elemnoC <= 10 ? 0.3 : 0.15); +break out; +}if (case3) { +pi_bc = (mltbB == 1 ? 0.5 : elemnoB <= 10 && elemnoC <= 10 ? 0.3 : 0.15); +break out; +}if ((mltbB == 1 || mltbC == 1) && (elemnoB == 6 || elemnoC == 6)) { +pi_bc = 0.4; +break out; +}pi_bc = 0.15; +break out; +}switch (elemnoB << 8 + elemnoC) { +case 0x808: +wb = wc = 2; +break out; +case 0x810: +wb = 2; +wc = 8; +break out; +case 0x1008: +wb = 8; +wc = 2; +break out; +case 0x1010: +wb = wc = 8; +break out; +} +n_bc = crdB * crdC; +break out; +} +if (pi_bc > 0) v2 = beta * pi_bc * Math.sqrt(ub * uc); + else if (n_bc > 0) v3 = Math.sqrt(vb * vc) / n_bc; + else if (wb != 0) v2 = -Math.sqrt(wb * wc); +o.ddata = Clazz.newDoubleArray(-1, [v1, v2, v3]); +return Integer.$valueOf(-1); +default: +return null; +} +}, "JM.MinObject,~A,~N"); +Clazz.defineMethod(c$, "isLinear", +function(a){ +switch (a.ffType) { +case 4: +case 53: +case 61: +return true; +} +return false; +}, "JM.MinAtom"); +Clazz.defineMethod(c$, "getR0", +function(b){ +return (b.ddata == null ? (this.ffParams.get(b.key)) : b.ddata)[1]; +}, "JM.MinBond"); +Clazz.defineMethod(c$, "getRowFor", +function(i){ +var elemno = this.minAtoms[i].atom.getElementNumber(); +return (elemno < 3 ? 0 : elemno < 11 ? 1 : elemno < 19 ? 2 : elemno < 37 ? 3 : 4); +}, "~N"); +Clazz.defineMethod(c$, "getOutOfPlaneParameter", +function(data){ +var ddata = this.ffParams.get(this.getKey(data, 6, 13)); +return (ddata == null ? 0 : ddata[0]); +}, "~A"); +c$.sortOop = Clazz.defineMethod(c$, "sortOop", +function(typeData){ +JM.FF.ForceFieldMMFF.fixTypeOrder(typeData, 0, 2); +JM.FF.ForceFieldMMFF.fixTypeOrder(typeData, 0, 3); +JM.FF.ForceFieldMMFF.fixTypeOrder(typeData, 2, 3); +}, "~A"); +c$.fixTypeOrder = Clazz.defineMethod(c$, "fixTypeOrder", +function(a, i, j){ +if (a[i] > a[j]) { +JM.FF.ForceFieldMMFF.swap(a, i, j); +return true; +}return false; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "fixOrder", +function(a, i, j){ +var test = this.typeOf(a[j]) - this.typeOf(a[i]); +if (test < 0) JM.FF.ForceFieldMMFF.swap(a, i, j); +return (test < 0 ? -1 : test > 0 ? 1 : 0); +}, "~A,~N,~N"); +c$.swap = Clazz.defineMethod(c$, "swap", +function(a, i, j){ +var t = a[i]; +a[i] = a[j]; +a[j] = t; +}, "~A,~N,~N"); +c$.getEquivalentType = Clazz.defineMethod(c$, "getEquivalentType", +function(type, level){ +return (type == 0 ? 0 : type == 70 || type > 82 ? type : level == 2 ? 0 : JM.FF.ForceFieldMMFF.equivalentTypes[((type - 1) << 1) + level]); +}, "~N,~N"); +c$.getZParam = Clazz.defineMethod(c$, "getZParam", +function(elemno){ +switch (elemno) { +case 1: +return 1.395; +case 6: +return 2.494; +case 7: +return 2.711; +case 8: +return 3.045; +case 9: +return 2.847; +case 14: +return 2.350; +case 15: +return 2.350; +case 16: +return 2.980; +case 17: +return 2.909; +case 35: +return 3.017; +case 53: +return 3.086; +} +return 0.0; +}, "~N"); +c$.getCParam = Clazz.defineMethod(c$, "getCParam", +function(elemno){ +switch (elemno) { +case 5: +return 0.704; +case 6: +return 1.016; +case 7: +return 1.113; +case 8: +return 1.337; +case 14: +return 0.811; +case 15: +return 1.068; +case 16: +return 1.249; +case 17: +return 1.078; +case 33: +return 0.825; +} +return 0.0; +}, "~N"); +c$.getUParam = Clazz.defineMethod(c$, "getUParam", +function(elemno){ +switch (elemno) { +case 6: +case 7: +case 8: +return 2.0; +case 14: +case 15: +case 16: +return 1.25; +} +return 0.0; +}, "~N"); +c$.getVParam = Clazz.defineMethod(c$, "getVParam", +function(elemno){ +switch (elemno) { +case 6: +return 2.12; +case 7: +return 1.5; +case 8: +return 0.2; +case 14: +return 1.22; +case 15: +return 2.4; +case 16: +return 0.49; +} +return 0.0; +}, "~N"); +c$.getCovalentRadius = Clazz.defineMethod(c$, "getCovalentRadius", +function(elemno){ +switch (elemno) { +case 1: +return 0.33; +case 5: +return 0.81; +case 6: +return 0.77; +case 7: +return 0.73; +case 8: +return 0.72; +case 9: +return 0.74; +case 13: +return 1.22; +case 14: +return 1.15; +case 15: +return 1.09; +case 16: +return 1.03; +case 17: +return 1.01; +case 31: +return 1.19; +case 32: +return 1.20; +case 33: +return 1.20; +case 34: +return 1.16; +case 35: +return 1.15; +case 44: +return 1.46; +case 50: +return 1.40; +case 51: +return 1.41; +case 52: +return 1.35; +case 53: +return 1.33; +case 81: +return 1.51; +case 82: +return 1.53; +case 83: +return 1.55; +default: +return JU.Elements.getBondingRadius(elemno, 0); +} +}, "~N"); +c$.getRuleBondLength = Clazz.defineMethod(c$, "getRuleBondLength", +function(a, b, boAB, isAromatic){ +switch (boAB) { +case 1: +case 2: +case 3: +break; +case 5: +break; +default: +return 0; +} +var elemnoA = a.atom.getElementNumber(); +var elemnoB = b.atom.getElementNumber(); +var r0a = JM.FF.ForceFieldMMFF.getCovalentRadius(elemnoA); +var r0b = JM.FF.ForceFieldMMFF.getCovalentRadius(elemnoB); +var Xa = JU.Elements.getAllredRochowElectroNeg(elemnoA); +var Xb = JU.Elements.getAllredRochowElectroNeg(elemnoB); +var c = (elemnoA == 1 || elemnoB == 1 ? 0.05 : 0.085); +var n = 1.4; +var r = r0a + r0b; +if (isAromatic) boAB = (a.ffAtomType.pilp || b.ffAtomType.pilp ? 5 : 4); + else switch (a.ffAtomType.mltb << 4 + b.ffAtomType.mltb) { +case 0x11: +boAB = 4; +break; +case 0x12: +case 0x21: +boAB = 5; +break; +} +switch (boAB) { +case 1: +switch (a.ffAtomType.mltb) { +case 0: +break; +case 1: +case 2: +break; +case 3: +break; +} +switch (b.ffAtomType.mltb) { +case 0: +break; +case 1: +case 2: +break; +case 3: +break; +} +break; +default: +break; +} +r -= c * Math.pow(Math.abs(Xa - Xb), n); +return r; +}, "JM.MinAtom,JM.MinAtom,~N,~B"); +c$.atomTypes = null; +c$.mmffParams = null; +c$.mmff2DParams = null; +c$.types = Clazz.newIntArray(-1, [0, 1, 34, 5, 546, 3, 13, 21, 37, 9, 17]); +c$.sbMap = Clazz.newIntArray(-1, [0, 1, 3, 5, 4, 6, 8, 9, 11]); +c$.equivalentTypes = Clazz.newIntArray(-1, [1, 1, 2, 1, 3, 1, 4, 1, 5, 5, 6, 6, 7, 6, 8, 8, 9, 8, 10, 8, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 15, 17, 15, 18, 15, 19, 19, 1, 1, 21, 5, 22, 1, 23, 5, 24, 5, 25, 25, 26, 25, 28, 5, 28, 5, 29, 5, 2, 1, 31, 31, 7, 6, 21, 5, 8, 8, 6, 6, 36, 5, 2, 1, 9, 8, 10, 8, 10, 8, 3, 1, 42, 8, 10, 8, 16, 15, 10, 8, 9, 8, 42, 8, 9, 8, 6, 6, 21, 5, 7, 6, 21, 5, 42, 8, 9, 8, 10, 8, 10, 8, 2, 1, 10, 8, 6, 6, 4, 1, 42, 8, 10, 8, 2, 1, 2, 1, 9, 8, 9, 8, 9, 8, 8, 8, 9, 8, 70, 70, 5, 5, 16, 15, 18, 15, 17, 15, 26, 25, 9, 8, 12, 12, 2, 1, 9, 8, 2, 1, 10, 8, 9, 8]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceFieldUFF.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceFieldUFF.js new file mode 100755 index 000000000000..0bcfa3e99f9f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/ForceFieldUFF.js @@ -0,0 +1,207 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.ForceField", "JS.T"], "JM.FF.ForceFieldUFF", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "JM.FF.CalculationsUFF", "$.FFParam", "JU.Elements", "$.Logger", "JV.JmolAsyncException"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ffParams = null; +this.bsAromatic = null; +this.is2D = false; +Clazz.instantialize(this, arguments);}, JM.FF, "ForceFieldUFF", JM.FF.ForceField); +Clazz.makeConstructor(c$, +function(minimizer, isQuick){ +Clazz.superConstructor (this, JM.FF.ForceFieldUFF, []); +this.minimizer = minimizer; +if (isQuick) { +this.name = "UFF2D"; +this.is2D = true; +this.ffParams = JM.FF.ForceFieldUFF.uff2DParams; +if (this.ffParams == null) JM.FF.ForceFieldUFF.uff2DParams = this.ffParams = this.getParameters(); +} else { +this.name = "UFF"; +this.ffParams = JM.FF.ForceFieldUFF.uffParams; +if (this.ffParams == null) JM.FF.ForceFieldUFF.uffParams = this.ffParams = this.getParameters(); +}}, "JM.Minimizer,~B"); +Clazz.overrideMethod(c$, "clear", +function(){ +this.bsAromatic = null; +}); +Clazz.overrideMethod(c$, "setModel", +function(bsElements, elemnoMax){ +this.setModelFields(); +JU.Logger.info("minimize: setting atom types..."); +if (this.ffParams == null || JM.FF.ForceFieldUFF.atomTypes == null && (JM.FF.ForceFieldUFF.atomTypes = this.getAtomTypes()) == null) return false; +this.setAtomTypes(bsElements, elemnoMax); +this.calc = new JM.FF.CalculationsUFF(this, this.ffParams, this.minAtoms, this.minBonds, this.minAngles, this.minTorsions, this.minimizer.constraints); +return this.calc.setupCalculations(); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "setAtomTypes", +function(bsElements, elemnoMax){ +var nTypes = JM.FF.ForceFieldUFF.atomTypes.size(); +bsElements.clear(0); +for (var i = 0; i < nTypes; i++) { +var data = JM.FF.ForceFieldUFF.atomTypes.get(i); +var smarts = data[0]; +if (smarts == null) continue; +var search = this.getSearch(smarts, elemnoMax, bsElements); +if (bsElements.get(0)) bsElements.clear(0); + else if (search == null) break; + else for (var j = this.minimizer.bsAtoms.nextSetBit(0), pt = 0; j < this.minimizer.atoms.length && j >= 0; j = this.minimizer.bsAtoms.nextSetBit(j + 1), pt++) if (search.get(j)) { +this.minAtoms[pt].sType = data[1].intern(); +} +} +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "getSearch", +function(smarts, elemnoMax, bsElements){ +var search = null; +var len = smarts.length; +search = JM.FF.ForceFieldUFF.tokenTypes[0]; +var n = (smarts.charAt(len - 2)).charCodeAt(0) - 48; +var elemNo = 0; +if (n >= 10) n = 0; +var isAromatic = false; +if (smarts.charAt(1) == '#') { +elemNo = JU.PT.parseInt(smarts.substring(2, len - 1)); +} else { +var s = smarts.substring(1, (n > 0 ? len - 3 : len - 1)); +if (s.equals(s.toLowerCase())) { +s = s.toUpperCase(); +isAromatic = true; +}elemNo = JU.Elements.elementNumberFromSymbol(s, false); +}if (elemNo > elemnoMax) return null; +if (!bsElements.get(elemNo)) { +bsElements.set(0); +return null; +}switch ((smarts.charAt(len - 3)).charCodeAt(0)) { +case 68: +search = JM.FF.ForceFieldUFF.tokenTypes[2]; +search[6].intValue = n; +break; +case 94: +search = JM.FF.ForceFieldUFF.tokenTypes[4 + (n - 1)]; +break; +case 43: +search = JM.FF.ForceFieldUFF.tokenTypes[1]; +search[5].intValue = n; +break; +case 45: +search = JM.FF.ForceFieldUFF.tokenTypes[1]; +search[5].intValue = -n; +break; +case 65: +search = JM.FF.ForceFieldUFF.tokenTypes[6]; +break; +} +search[2].intValue = elemNo; +var v = this.minimizer.vwr.evaluateExpression(search); +if (!(Clazz.instanceOf(v,"JU.BS"))) return null; +var bs = v; +if (isAromatic && bs.nextSetBit(0) >= 0) { +if (this.bsAromatic == null) this.bsAromatic = (bsElements.get(6) ? this.minimizer.vwr.evaluateExpression(JM.FF.ForceFieldUFF.tokenTypes[3]) : new JU.BS()); +bs.and(this.bsAromatic); +}if (JU.Logger.debugging && bs.nextSetBit(0) >= 0) JU.Logger.debug(smarts + " minimize atoms=" + bs); +return bs; +}, "~S,~N,JU.BS"); +Clazz.defineMethod(c$, "getParameters", +function(){ +var data = new java.util.Hashtable(); +var resourceName = (this.is2D ? "UFF_2d.txt" : "UFF.txt"); +var br = null; +try { +br = this.getBufferedReader(resourceName); +var line; +while ((line = br.readLine()) != null) { +var vs = JU.PT.getTokens(line); +if (vs.length < 13) continue; +if (JU.Logger.debugging) JU.Logger.debug(line); +if (line.substring(0, 5).equals("param")) { +var p = new JM.FF.FFParam(); +data.put(vs[1], p); +p.dVal = Clazz.newDoubleArray (11, 0); +p.sVal = new Array(1); +p.sVal[0] = vs[1]; +p.dVal[0] = JU.PT.parseFloat(vs[2]); +p.dVal[1] = JU.PT.parseFloat(vs[3]) * 0.017453292519943295; +p.dVal[2] = JU.PT.parseFloat(vs[4]); +p.dVal[3] = JU.PT.parseFloat(vs[5]); +p.dVal[4] = JU.PT.parseFloat(vs[6]); +p.dVal[5] = JU.PT.parseFloat(vs[7]); +p.dVal[6] = JU.PT.parseFloat(vs[8]); +p.dVal[7] = JU.PT.parseFloat(vs[9]); +p.dVal[8] = JU.PT.parseFloat(vs[10]); +p.dVal[9] = JU.PT.parseFloat(vs[11]); +p.dVal[10] = JU.PT.parseFloat(vs[12]); +p.iVal = Clazz.newIntArray (1, 0); +var coord = (vs[1].length > 2 ? vs[1].charAt(2) : '1'); +switch ((coord).charCodeAt(0)) { +case 82: +coord = '2'; +break; +default: +coord = '1'; +break; +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +break; +} +p.iVal[0] = coord.charCodeAt(0) - 48; +}} +br.close(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.err.println("Exception " + e.toString() + " in getResource " + resourceName); +try { +br.close(); +} catch (ee) { +if (Clazz.exceptionOf(ee, Exception)){ +} else { +throw ee; +} +} +return null; +} else { +throw e; +} +} +JU.Logger.info(data.size() + " atom types read from " + resourceName); +return data; +}); +Clazz.defineMethod(c$, "getAtomTypes", +function(){ +var types = new JU.Lst(); +var fileName = (this.is2D ? "UFF_2d.txt" : "UFF.txt"); +try { +var br = this.getBufferedReader(fileName); +var line; +while ((line = br.readLine()) != null) { +if (line.length > 4 && line.substring(0, 4).equals("atom")) { +var vs = JU.PT.getTokens(line); +var info = Clazz.newArray(-1, [vs[1], vs[2]]); +types.addLast(info); +}} +br.close(); +} catch (e$$) { +if (Clazz.exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +throw new JV.JmolAsyncException(e.getFileName()); +} +} else if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.err.println("Exception " + e.toString() + " in getResource " + fileName); +} +} else { +throw e$$; +} +} +JU.Logger.info(types.size() + " UFF parameters read"); +return (types.size() > 0 ? types : null); +}); +c$.atomTypes = null; +c$.uff2DParams = null; +c$.uffParams = null; +c$.tokenTypes = Clazz.newArray(-1, [ Clazz.newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenExpressionEnd]), Clazz.newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.n(268440324, 1631586315), JS.T.i(0), JS.T.tokenExpressionEnd]), Clazz.newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.i(0), JS.T.tokenRightParen, JS.T.tokenExpressionEnd]), Clazz.newArray(-1, [JS.T.tokenExpressionBegin, JS.T.o(1073741824, "flatring"), JS.T.tokenExpressionEnd]), Clazz.newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.tokenLeftParen, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.i(1), JS.T.tokenComma, JS.T.o(4, "triple"), JS.T.tokenRightParen, JS.T.tokenOr, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.i(2), JS.T.tokenComma, JS.T.o(4, "double"), JS.T.tokenRightParen, JS.T.tokenRightParen, JS.T.tokenExpressionEnd]), Clazz.newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.o(134217736, "connected"), JS.T.tokenLeftParen, JS.T.i(1), JS.T.tokenComma, JS.T.o(4, "double"), JS.T.tokenRightParen, JS.T.tokenExpressionEnd]), Clazz.newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.tokenLeftParen, JS.T.n(268440325, 1094715402), JS.T.i(6), JS.T.tokenOr, JS.T.n(268440325, 1631586315), JS.T.i(0), JS.T.tokenRightParen, JS.T.tokenAnd, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.i(3), JS.T.tokenRightParen, JS.T.tokenAnd, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.o(4, "double"), JS.T.tokenRightParen, JS.T.tokenRightParen, JS.T.tokenExpressionEnd])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFAngleCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFAngleCalc.js new file mode 100755 index 000000000000..8136dcc0aae6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFAngleCalc.js @@ -0,0 +1,29 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.MMFFAngleCalc", null, function(){ +var c$ = Clazz.declareType(JM.FF, "MMFFAngleCalc", JM.FF.Calculation); +Clazz.defineMethod(c$, "setData", +function(calc, angle){ +var data = this.calcs.getParameterObj(angle); +if (data == null) return; +calc.addLast( Clazz.newArray(-1, [angle.data, data, angle.key])); +}, "JU.Lst,JM.MinAngle"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.key = dataIn[2]; +this.getPointers(dataIn); +var ka = this.dData[0]; +var t0 = this.dData[1]; +this.calcs.setAngleVariables(this); +var dt = (this.theta * 57.29577951308232 - t0); +if (t0 == 180) { +this.energy = 143.9325 * ka * (1 + Math.cos(this.theta)); +if (this.calcs.gradients) this.dE = -143.9325 * ka * Math.sin(this.theta); +} else { +this.energy = 0.021922 * ka * Math.pow(dt, 2) * (1 + -0.006981317007977318 * dt); +if (this.calcs.gradients) this.dE = 0.021922 * ka * dt * (2 + 3 * -0.006981317007977318 * dt); +}if (this.calcs.gradients) this.calcs.addForces(this, 3); +if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(1, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFDistanceCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFDistanceCalc.js new file mode 100755 index 000000000000..c9a4d9169a4e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFDistanceCalc.js @@ -0,0 +1,32 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.MMFFDistanceCalc", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.r0 = 0; +this.kb = 0; +this.delta2 = 0; +Clazz.instantialize(this, arguments);}, JM.FF, "MMFFDistanceCalc", JM.FF.Calculation); +Clazz.defineMethod(c$, "setData", +function(calc, bond){ +this.ia = bond.data[0]; +this.ib = bond.data[1]; +var data = this.calcs.getParameterObj(bond); +if (data == null) return; +calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [this.ia, this.ib]), data])); +}, "JU.Lst,JM.MinBond"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +this.kb = this.dData[0]; +this.r0 = this.dData[1]; +this.calcs.setPairVariables(this); +this.delta = this.rab - this.r0; +this.delta2 = this.delta * this.delta; +this.energy = 71.96625 * this.kb * this.delta2 * (1 + -2.0 * this.delta + 2.3333333333333335 * (this.delta2)); +if (this.calcs.gradients) { +this.dE = 71.96625 * this.kb * this.delta * (2 + 3 * -2.0 * this.delta + 4 * 2.3333333333333335 * this.delta2); +this.calcs.addForces(this, 2); +}if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(0, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFESCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFESCalc.js new file mode 100755 index 000000000000..c8ea7ef9d86e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFESCalc.js @@ -0,0 +1,23 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.MMFFESCalc", null, function(){ +var c$ = Clazz.declareType(JM.FF, "MMFFESCalc", JM.FF.Calculation); +Clazz.overrideMethod(c$, "setData", +function(calc, ia, ib, d){ +if (this.calcs.minAtoms[ia].partialCharge == 0 || this.calcs.minAtoms[ib].partialCharge == 0) return; +calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [ia, ib]), Clazz.newDoubleArray(-1, [this.calcs.minAtoms[ia].partialCharge, this.calcs.minAtoms[ib].partialCharge, (this.calcs.minAtoms[ia].bs14.get(ib) ? 249.0537 : 332.0716)])])); +}, "JU.Lst,~N,~N,~N"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var f = this.dData[0] * this.dData[1] * this.dData[2]; +this.calcs.setPairVariables(this); +var d = this.rab + 0.05; +this.energy = f / d; +if (this.calcs.gradients) { +this.dE = -this.energy / d; +this.calcs.addForces(this, 2); +}if (this.calcs.logging && Math.abs(this.energy) > 20) this.calcs.appendLogData(this.calcs.getDebugLine(6, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFOOPCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFOOPCalc.js new file mode 100755 index 000000000000..8f7df55c2d06 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFOOPCalc.js @@ -0,0 +1,37 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.MMFFOOPCalc", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.list = null; +Clazz.instantialize(this, arguments);}, JM.FF, "MMFFOOPCalc", JM.FF.Calculation); +Clazz.prepareFields (c$, function(){ +this.list = Clazz.newIntArray (4, 0); +}); +Clazz.defineMethod(c$, "setData", +function(calc, i){ +if (this.calcs.minAtoms[i].nBonds != 3) return; +var indices = this.calcs.minAtoms[i].getBondedAtomIndexes(); +this.list[0] = indices[2]; +this.list[1] = i; +this.list[2] = indices[1]; +this.list[3] = indices[0]; +var koop = (this.calcs).mmff.getOutOfPlaneParameter(this.list); +if (koop == 0) return; +var dk = Clazz.newDoubleArray(-1, [koop]); +calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [indices[0], i, indices[1], indices[2]]), dk])); +calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [indices[1], i, indices[2], indices[0]]), dk])); +calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [indices[2], i, indices[0], indices[1]]), dk])); +}, "JU.Lst,~N"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +this.calcs.setOopVariables(this, false); +var koop = this.dData[0]; +this.energy = 71.96568080495746 * koop * this.theta * this.theta; +if (this.calcs.gradients) { +this.dE = 2.5120761569715815 * koop * this.theta; +this.calcs.addForces(this, 4); +}if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(4, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFSBCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFSBCalc.js new file mode 100755 index 000000000000..ad83cac831cf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFSBCalc.js @@ -0,0 +1,40 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.MMFFSBCalc", null, function(){ +var c$ = Clazz.declareType(JM.FF, "MMFFSBCalc", JM.FF.Calculation); +Clazz.defineMethod(c$, "setData", +function(calc, angle){ +if (this.calcs.isLinear(angle.data[1])) return; +var data = this.calcs.getParameter(angle.sbKey); +var datakat0 = this.calcs.getParameterObj(angle); +var dataij = this.calcs.getParameter(this.calcs.minBonds[angle.data[3]]); +var datajk = this.calcs.getParameter(this.calcs.minBonds[angle.data[4]]); +if (data == null || datakat0 == null || dataij == null || datajk == null) return; +var theta0 = datakat0[1]; +var r0ij = dataij[1]; +var r0jk = datajk[1]; +calc.addLast( Clazz.newArray(-1, [angle.data, Clazz.newDoubleArray(-1, [data[0], theta0, r0ij]), angle.sbKey])); +calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [angle.data[2], angle.data[1], angle.data[0]]), Clazz.newDoubleArray(-1, [data[1], theta0, r0jk]), angle.sbKey])); +}, "JU.Lst,JM.MinAngle"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.key = dataIn[2]; +this.getPointers(dataIn); +var k = 2.51210 * this.dData[0]; +var t0 = this.dData[1]; +var r0_ab = this.dData[2]; +this.calcs.setPairVariables(this); +this.calcs.setAngleVariables(this); +var dr_ab = this.rab - r0_ab; +this.delta = this.theta * 57.29577951308232 - t0; +this.energy = k * dr_ab * this.delta; +if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(3, this)); +if (this.calcs.gradients) { +this.dE = k * dr_ab; +this.calcs.addForces(this, 3); +this.calcs.setPairVariables(this); +this.dE = k * this.delta; +this.calcs.addForces(this, 2); +}return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFTorsionCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFTorsionCalc.js new file mode 100755 index 000000000000..769b5d48b49d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFTorsionCalc.js @@ -0,0 +1,30 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.MMFFTorsionCalc", null, function(){ +var c$ = Clazz.declareType(JM.FF, "MMFFTorsionCalc", JM.FF.Calculation); +Clazz.defineMethod(c$, "setData", +function(calc, t){ +if (this.calcs.isLinear(t.data[1]) || this.calcs.isLinear(t.data[2])) return; +var data = this.calcs.getParameterObj(t); +if (data == null) return; +calc.addLast( Clazz.newArray(-1, [t.data, data, t.key])); +}, "JU.Lst,JM.MinTorsion"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.key = dataIn[2]; +this.getPointers(dataIn); +var v1 = this.dData[0]; +var v2 = this.dData[1]; +var v3 = this.dData[2]; +this.calcs.setTorsionVariables(this); +var cosTheta = Math.cos(this.theta); +var cosTheta2 = cosTheta * cosTheta; +this.energy = 0.5 * (v1 * (1 + cosTheta) + v2 * (2 - 2 * cosTheta2) + v3 * (1 + cosTheta * (4 * cosTheta2 - 3))); +if (this.calcs.gradients) { +var sinTheta = Math.sin(this.theta); +this.dE = 0.5 * (-v1 * sinTheta + 4 * v2 * sinTheta * cosTheta + 3 * v3 * sinTheta * (1 - 4 * cosTheta2)); +this.calcs.addForces(this, 4); +}if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(2, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFVDWCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFVDWCalc.js new file mode 100755 index 000000000000..177bb44bdab4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/MMFFVDWCalc.js @@ -0,0 +1,49 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.MMFFVDWCalc", null, function(){ +var c$ = Clazz.declareType(JM.FF, "MMFFVDWCalc", JM.FF.Calculation); +Clazz.overrideMethod(c$, "setData", +function(calc, ia, ib, dd){ +this.a = this.calcs.minAtoms[ia]; +this.b = this.calcs.minAtoms[ib]; +var dataA = this.calcs.getParameter(this.a.vdwKey); +var dataB = this.calcs.getParameter(this.b.vdwKey); +if (dataA == null || dataB == null) return; +var alpha_a = dataA[0]; +var N_a = dataA[1]; +var A_a = dataA[2]; +var G_a = dataA[3]; +var DA_a = Clazz.doubleToInt(dataA[4]); +var alpha_b = dataB[0]; +var N_b = dataB[1]; +var A_b = dataB[2]; +var G_b = dataB[3]; +var DA_b = Clazz.doubleToInt(dataB[4]); +var rs_aa = A_a * Math.pow(alpha_a, 0.25); +var rs_bb = A_b * Math.pow(alpha_b, 0.25); +var gamma = (rs_aa - rs_bb) / (rs_aa + rs_bb); +var rs = 0.5 * (rs_aa + rs_bb); +if (DA_a != 68 && DA_b != 68) rs *= (1.0 + 0.2 * (1.0 - Math.exp(-12.0 * gamma * gamma))); +var eps = ((181.16 * G_a * G_b * alpha_a * alpha_b) / (Math.sqrt(alpha_a / N_a) + Math.sqrt(alpha_b / N_b))) * Math.pow(rs, -6.0); +if (DA_a + DA_b == 133) { +rs *= 0.8; +eps *= 0.5; +}calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [ia, ib]), Clazz.newDoubleArray(-1, [rs, eps])])); +}, "JU.Lst,~N,~N,~N"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +this.calcs.setPairVariables(this); +var rs = this.dData[0]; +var eps = this.dData[1]; +var r_rs = this.rab / rs; +var f1 = 1.07 / (r_rs + 0.07); +var f2 = 1.12 / (Math.pow(r_rs, 7) + 0.12); +this.energy = eps * Math.pow(f1, 7) * (f2 - 2); +if (this.calcs.gradients) { +this.dE = -7 * eps * Math.pow(f1, 7) / rs * (f1 / 1.07 * (f2 - 2) + f2 * f2 * Math.pow(r_rs, 6)); +this.calcs.addForces(this, 2); +}if (this.calcs.logging && Math.abs(this.energy) > 0.1) this.calcs.appendLogData(this.calcs.getDebugLine(5, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFAngleCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFAngleCalc.js new file mode 100755 index 000000000000..2322cc00b7f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFAngleCalc.js @@ -0,0 +1,96 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.UFFAngleCalc", ["JM.FF.CalculationsUFF"], function(){ +var c$ = Clazz.declareType(JM.FF, "UFFAngleCalc", JM.FF.Calculation); +Clazz.defineMethod(c$, "setData", +function(calc, angle){ +this.a = this.calcs.minAtoms[this.ia = angle[0]]; +this.b = this.calcs.minAtoms[this.ib = angle[1]]; +this.c = this.calcs.minAtoms[this.ic = angle[2]]; +var preliminaryMagnification = (this.a.sType === "H_" && this.c.sType === "H_" ? 10 : 1); +this.calcs.parA = this.calcs.getParameter(this.a.sType); +this.calcs.parB = this.calcs.getParameter(this.b.sType); +this.calcs.parC = this.calcs.getParameter(this.c.sType); +var coordination = this.calcs.parB.iVal[0]; +var zi = this.calcs.parA.dVal[5]; +var zk = this.calcs.parC.dVal[5]; +var theta0 = this.calcs.parB.dVal[1]; +var cosT0 = Math.cos(theta0); +var sinT0 = Math.sin(theta0); +var c0; +var c1; +var c2; +switch (coordination) { +case 1: +case 2: +case 4: +case 6: +c0 = c1 = c2 = 0; +break; +default: +c2 = 1.0 / (4.0 * sinT0 * sinT0); +c1 = -4.0 * c2 * cosT0; +c0 = c2 * (2.0 * cosT0 * cosT0 + 1.0); +} +var bond = this.a.getBondTo(this.ib); +var bondorder = bond.order; +if (bond.isAromatic) bondorder = 1.5; +if (bond.isAmide) bondorder = 1.41; +this.rab = JM.FF.CalculationsUFF.calculateR0(this.calcs.parA.dVal[0], this.calcs.parB.dVal[0], this.calcs.parA.dVal[8], this.calcs.parB.dVal[8], bondorder); +bond = this.c.getBondTo(this.ib); +bondorder = bond.order; +if (bond.isAromatic) bondorder = 1.5; +if (bond.isAmide) bondorder = 1.41; +var rbc = JM.FF.CalculationsUFF.calculateR0(this.calcs.parB.dVal[0], this.calcs.parC.dVal[0], this.calcs.parB.dVal[8], this.calcs.parC.dVal[8], bondorder); +var rac = Math.sqrt(this.rab * this.rab + rbc * rbc - 2.0 * this.rab * rbc * cosT0); +var ka = (2696.8016159999997) * (zi * zk / (Math.pow(rac, 5.0))) * (3.0 * this.rab * rbc * (1.0 - cosT0 * cosT0) - rac * rac * cosT0); +calc.addLast( Clazz.newArray(-1, [this.iData = Clazz.newIntArray(-1, [this.ia, this.ib, this.ic, coordination]), Clazz.newDoubleArray(-1, [ka, theta0 * 57.29577951308232, c0 - c2, c1, 2 * c2, preliminaryMagnification * ka]), this.isLoggable(3)])); +}, "JU.Lst,~A"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var coordination = this.iData[3]; +var ka = (this.calcs.isPreliminary ? this.dData[5] : this.dData[0]); +var a0 = this.dData[2]; +var a1 = this.dData[3]; +var a2 = this.dData[4]; +this.calcs.setAngleVariables(this); +if ((coordination == 4 || coordination == 6) && (this.theta > 2.35619 || this.theta < 0.785398)) coordination = 1; +var cosT = Math.cos(this.theta); +var sinT = Math.sin(this.theta); +switch (coordination) { +case 0: +case 1: +this.energy = ka * (1.0 + cosT) * (1.0 + cosT) / 4.0; +break; +case 2: +this.energy = ka * (1.0 + (4.0 * cosT) * (1.0 + cosT)) / 9.0; +break; +case 4: +case 6: +this.energy = ka * cosT * cosT; +break; +default: +this.energy = ka * (a0 + a1 * cosT + a2 * cosT * cosT); +} +if (this.calcs.gradients) { +switch (coordination) { +case 0: +case 1: +this.dE = -0.5 * ka * sinT * (1 + cosT); +break; +case 2: +this.dE = -4.0 * sinT * ka * (1.0 - 2.0 * cosT) / 9.0; +break; +case 4: +case 6: +this.dE = -ka * sinT * cosT; +break; +default: +this.dE = -ka * (a1 * sinT - 2.0 * a2 * cosT * sinT); +} +this.calcs.addForces(this, 3); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(1, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFDistanceCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFDistanceCalc.js new file mode 100755 index 000000000000..c51f5106a125 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFDistanceCalc.js @@ -0,0 +1,30 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.UFFDistanceCalc", ["JM.FF.CalculationsUFF"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.r0 = 0; +this.kb = 0; +Clazz.instantialize(this, arguments);}, JM.FF, "UFFDistanceCalc", JM.FF.Calculation); +Clazz.overrideMethod(c$, "setData", +function(calc, ia, ib, bondOrder){ +this.calcs.parA = this.calcs.getParameter(this.calcs.minAtoms[ia].sType); +this.calcs.parB = this.calcs.getParameter(this.calcs.minAtoms[ib].sType); +this.r0 = JM.FF.CalculationsUFF.calculateR0(this.calcs.parA.dVal[0], this.calcs.parB.dVal[0], this.calcs.parA.dVal[8], this.calcs.parB.dVal[8], bondOrder); +this.kb = 1390.2842991599998 * this.calcs.parA.dVal[5] * this.calcs.parB.dVal[5] / (this.r0 * this.r0 * this.r0); +calc.addLast( Clazz.newArray(-1, [this.iData = Clazz.newIntArray(-1, [ia, ib]), Clazz.newDoubleArray(-1, [this.kb, this.r0, bondOrder]), this.isLoggable(2)])); +}, "JU.Lst,~N,~N,~N"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +this.kb = this.dData[0]; +this.r0 = this.dData[1]; +this.calcs.setPairVariables(this); +this.delta = this.rab - this.r0; +this.energy = this.kb * this.delta * this.delta; +if (this.calcs.gradients) { +this.dE = 2.0 * this.kb * this.delta; +this.calcs.addForces(this, 2); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(0, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFOOPCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFOOPCalc.js new file mode 100755 index 000000000000..ed2590d95ba4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFOOPCalc.js @@ -0,0 +1,70 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.UFFOOPCalc", null, function(){ +var c$ = Clazz.declareType(JM.FF, "UFFOOPCalc", JM.FF.Calculation); +Clazz.overrideMethod(c$, "setData", +function(calc, ib, elemNo, dd){ +this.b = this.calcs.minAtoms[ib]; +var atomList = this.b.getBondedAtomIndexes(); +this.a = this.calcs.minAtoms[this.ia = atomList[0]]; +this.c = this.calcs.minAtoms[this.ic = atomList[1]]; +this.d = this.calcs.minAtoms[this.id = atomList[2]]; +var a0 = 1.0; +var a1 = -1.0; +var a2 = 0.0; +var koop = 25.1208; +switch (elemNo) { +case 6: +if (this.b.sType === "C_2" && this.b.getHCount() > 1 || this.b.sType === "C_2+" || this.a.sType === "O_2" || this.c.sType === "O_2" || this.d.sType === "O_2") { +koop += 184.2192; +break; +}break; +case 7: +case 8: +break; +default: +koop = 92.1096; +var phi = 0.017453292519943295; +switch (elemNo) { +case 15: +phi *= 84.4339; +break; +case 33: +phi *= 86.9735; +break; +case 51: +phi *= 87.7047; +break; +case 83: +phi *= 90.0; +break; +} +var cosPhi = Math.cos(phi); +a0 = cosPhi * cosPhi; +a1 = -2.0 * cosPhi; +a2 = 1.0; +} +koop /= 3.0; +this.iData = Clazz.newIntArray(-1, [this.ia, ib, this.ic, this.id]); +var loggable = this.isLoggable(4); +calc.addLast( Clazz.newArray(-1, [this.iData, Clazz.newDoubleArray(-1, [koop, a0, a1, a2, koop * 10]), loggable])); +calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [this.ic, ib, this.id, this.ia]), Clazz.newDoubleArray(-1, [koop, a0, a1, a2, koop * 10]), loggable])); +calc.addLast( Clazz.newArray(-1, [ Clazz.newIntArray(-1, [this.id, ib, this.ia, this.ic]), Clazz.newDoubleArray(-1, [koop, a0, a1, a2, koop * 10]), loggable])); +}, "JU.Lst,~N,~N,~N"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var koop = (this.calcs.isPreliminary ? this.dData[4] : this.dData[0]); +var a0 = this.dData[1]; +var a1 = this.dData[2]; +var a2 = this.dData[3]; +this.calcs.setOopVariables(this, true); +var cosTheta = Math.cos(this.theta); +this.energy = koop * (a0 + a1 * cosTheta + a2 * cosTheta * cosTheta); +if (this.calcs.gradients) { +this.dE = koop * (a1 * Math.sin(this.theta) + a2 * 2.0 * Math.sin(this.theta) * cosTheta); +this.calcs.addForces(this, 4); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(4, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFTorsionCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFTorsionCalc.js new file mode 100755 index 000000000000..b9ca6efa9096 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFTorsionCalc.js @@ -0,0 +1,99 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.UFFTorsionCalc", ["JM.Util"], function(){ +var c$ = Clazz.declareType(JM.FF, "UFFTorsionCalc", JM.FF.Calculation); +Clazz.defineMethod(c$, "setData", +function(calc, t){ +var cosNPhi0 = -1; +var n = 0; +var V = 0; +this.a = this.calcs.minAtoms[this.ia = t[0]]; +this.b = this.calcs.minAtoms[this.ib = t[1]]; +this.c = this.calcs.minAtoms[this.ic = t[2]]; +this.d = this.calcs.minAtoms[this.id = t[3]]; +var bc = this.c.getBondTo(this.ib); +var bondOrder = bc.order; +if (bc.isAromatic) bondOrder = 1.5; +if (bc.isAmide) bondOrder = 1.41; +this.calcs.parB = this.calcs.getParameter(this.b.sType); +this.calcs.parC = this.calcs.getParameter(this.c.sType); +switch (this.calcs.parB.iVal[0] * this.calcs.parC.iVal[0]) { +case 9: +n = 3; +var vi = this.calcs.parB.dVal[6]; +var vj = this.calcs.parC.dVal[6]; +var viNew = 0; +switch (this.b.atom.getElementNumber()) { +case 8: +viNew = 2.0; +break; +case 16: +case 34: +case 52: +case 84: +viNew = 6.8; +} +if (viNew != 0) switch (this.c.atom.getElementNumber()) { +case 8: +vi = viNew; +vj = 2.0; +n = 2; +break; +case 16: +case 34: +case 52: +case 84: +vi = viNew; +vj = 6.8; +n = 2; +} +V = 0.5 * 4.1868 * Math.sqrt(vi * vj); +break; +case 4: +cosNPhi0 = 1; +n = 2; +V = 0.5 * 4.1868 * 5.0 * Math.sqrt(this.calcs.parB.dVal[7] * this.calcs.parC.dVal[7]) * (1.0 + 4.18 * Math.log(bondOrder)); +break; +case 6: +cosNPhi0 = 1; +n = 6; +var sp3C = (this.calcs.parC.iVal[0] == 3); +switch ((sp3C ? this.c : this.b).atom.getElementNumber()) { +case 8: +case 16: +case 34: +case 52: +case 84: +switch ((sp3C ? this.b : this.c).atom.getElementNumber()) { +case 8: +case 16: +case 34: +case 52: +case 84: +break; +default: +n = 2; +cosNPhi0 = -1; +} +break; +} +V = 2.0934; +} +if (JM.Util.isNearZero(V)) return; +calc.addLast( Clazz.newArray(-1, [this.iData = Clazz.newIntArray(-1, [this.ia, this.ib, this.ic, this.id, n]), Clazz.newDoubleArray(-1, [V, cosNPhi0]), this.isLoggable(4)])); +}, "JU.Lst,~A"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var n = this.iData[4]; +var V = this.dData[0]; +var cosNPhi0 = this.dData[1]; +this.calcs.setTorsionVariables(this); +this.energy = V * (1.0 - cosNPhi0 * Math.cos(this.theta * n)); +if (this.calcs.gradients) { +this.dE = V * n * cosNPhi0 * Math.sin(n * this.theta); +this.calcs.addForces(this, 4); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(2, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFVDWCalc.js b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFVDWCalc.js new file mode 100755 index 000000000000..6e51df9367db --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/UFFVDWCalc.js @@ -0,0 +1,48 @@ +Clazz.declarePackage("JM.FF"); +Clazz.load(["JM.FF.Calculation"], "JM.FF.UFFVDWCalc", null, function(){ +var c$ = Clazz.declareType(JM.FF, "UFFVDWCalc", JM.FF.Calculation); +Clazz.overrideMethod(c$, "setData", +function(calc, ia, ib, dd){ +this.a = this.calcs.minAtoms[ia]; +this.b = this.calcs.minAtoms[ib]; +if (this.a.atom.distanceSquared(this.b.atom) > 50.0) return; +var parA = this.calcs.getParameter(this.a.sType); +var parB = this.calcs.getParameter(this.b.sType); +var Xa; +var Da; +var Xb; +var Db; +if (parA == null || parA.dVal == null) { +System.out.println("OHOH"); +Xa = Da = 0; +} else { +Xa = parA.dVal[2]; +Da = parA.dVal[3]; +}if (parB == null || parB.dVal == null) { +System.out.println("OHOH"); +Xb = Db = 0; +} else { +Xb = parB.dVal[2]; +Db = parB.dVal[3]; +}var Dab = 4.1868 * Math.sqrt(Da * Db); +var Xab = Math.sqrt(Xa * Xb); +calc.addLast( Clazz.newArray(-1, [this.iData = Clazz.newIntArray(-1, [ia, ib]), Clazz.newDoubleArray(-1, [Xab, Dab]), this.isLoggable(2)])); +}, "JU.Lst,~N,~N,~N"); +Clazz.overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var Xab = this.dData[0]; +var Dab = this.dData[1]; +this.calcs.setPairVariables(this); +var term = Xab / this.rab; +var term6 = term * term * term; +term6 *= term6; +this.energy = Dab * term6 * (term6 - 2.0); +if (this.calcs.gradients) { +this.dE = Dab * 12.0 * (1.0 - term6) * term6 * term / Xab; +this.calcs.addForces(this, 2); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(5, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/MMFF94-smarts.txt b/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/MMFF94-smarts.txt new file mode 100755 index 000000000000..9eee66522645 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/MMFF94-smarts.txt @@ -0,0 +1,260 @@ +#AtSym ElemNo mmType HType formalCharge*12 val Desc Smiles + +#BH 5/17/2016 -- for OpenSMARTS convention requiring $(...) in [...] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Li 3 92 0 12 0 LITHIUM CATION [LiD0] +C 6 22 5 0 4 C IN CYCLOPROPLY [CD4r3] +C 6 20 5 0 4 C IN CYCLOBUTYL [CD4r4] +C 6 1 5 0 4 ALKYL CARBON [CD4] +C 6 30 5 0 4 C=C IN 4-RING [$([CD3r4]=C)] +C 6 2 5 0 4 VINYLIC [$([CD3]=C)] +C 6 41 5 0 4 C IN CO2- ANION [$([CD3]([OD1])[OD1]), $([CD3]([SD1])[SD1])] + +C 6 57 5 0 4 GUANIDINIUM CARBON [$([CD3]([#7D3v3])([#7D3v3])=[#7D3v4&!r600&!$([#7][OD1])])] +C 6 57 5 0 4 C IN +N=C-N RESONANCE [$([CD3]([#7D3v3])=[#7D3v4&!r600&!$([#7][OD1])])] +C 6 3 5 0 4 GUANIDINE CARBON [$([CD3](=[#7D3v3])([#7D3v3])[#7D2v3])] +C 6 3 5 0 4 GENERAL CARBONYL C [$([CD3]=[O,N,P,S])] + + + + + + + + + + +C 6 80 5 0 4 C IN N-C-N, IM+ ION [$([cD3r500]([#7D3v3])=[#7D3v4&!r600&!$([#7][OD1])])] +C 6 78 5 0 4 general 5-ring C both alp [$([cD3r500]1[oD2r500,sD2r500,nD3v3r500]aaa1),$([cD3r500]1a[oD2r500,sD2r500,nD3v3r500]aa1)] +C 6 63 5 0 4 ALPHA AROM 5-RING C (fur [$([cD3r500]:[oD2r500,sD2r500])] +C 6 64 5 0 4 BETA AROM 5-RING C (fura [$([cD3r500]:a:[oD2r500,sD2r500])] +C 6 78 5 0 4 general 5-ring C (imidzol [$([cD3r500]1[nv4r500&!$(n[OD1])]aaa1),$([cr500]1a[nv4r500&!$(n[OD1])]aa1)] +C 6 78 5 0 4 general 5-ring C (1,2-dia [$([cD3r500]1[cr500][cr500][nD2r500][nD2r500]1),$([cD3r500]1[cr500][nD2r500][nD2r500][cr500]1)] +C 6 63 5 0 4 ALPHA AROM 5-RING C [$([cD3r500]:[nD3v3r500])] +C 6 64 5 0 4 BETA AROM 5-RING C [$([cD3r500]1a[nD3v3r500]aa1)] +C 6 37 5 0 4 CARBON AS IN BENZENE, PYR [cD3]1ccccc1 +C 6 78 5 0 4 GENERAL AROM 5-RING C [cD3r500] +C 6 37 5 0 4 AROMATIC C [cD3] +C 6 4 5 0 4 ACETYLENIC C [$([#6D2]#*)] +C 6 4 5 0 4 ALLENIC C (also isocyanat [$([#6D2](=*)=*)] +C 6 60 0 0 3 ISONITRILE CARBON [$([CD1]#N)] +N 7 42 0 0 3 N TRIPLE BONDED [$([ND1]#*)] +N 7 47 0 0 2 TERMINAL N, AZIDE [$([ND1][ND2])] +N 7 53 0 0 4 N TWICE DOUBLE BONDED [$([ND2](=*)=*)] +N 7 9 27 0 3 N=C, IMINES [$([ND2]=[#6,#7])] + +N 7 43 28 0 3 N, SULFONAMIDES (S(O)2-N= [$([ND2v3]S([OD1])[OD1])] +N 7 46 0 0 3 NITROSO GROUP N [$([ND2](=O)[#6,#7])] +N 7 48 28 0 2 DIVALENT NITROGEN REPLACI [$([ND2][SD4]([OD1])([#6])[#6])] +N 7 62 23 -12 2 SULFONAMIDE N- [$([ND2v2][SD4]),$([ND2v2][CD3])] +N 7 61 0 0 4 ISONITRILE N [$([ND2]#[#6])] +N 7 61 0 12 4 diazo N (+1) [$([ND2]#[#7])] +N 7 38 0 0 3 AROMATIC N, PYRIDINE [nD2r600] +N 7 65 0 0 3 ALPHA AROM 5-RING N (thio [$([nD2r500]:[sD2])] +N 7 66 0 0 3 (BETA) AROM 5-RING N (thi [$([nD2r500]:a:[sD2])] +N 7 65 0 0 3 ALPHA AROM 5-RING N (fura [$([nD2r500]:[oD2])] +N 7 66 0 0 3 (BETA) AROM 5-RING N (fur [$([nD2r500]:a:[oD2])] +N 7 65 0 0 3 ALPHA AROM 5-RING N [$([nD2r500]:[nD3v3])&!$([$(n:[$([nv4])&!$([#7][OD1])]),$(n:a=[$([nv4])&!$([#7][OD1])]),$(n=a:[$([nv4])&!$([#7][OD1])])])] +N 7 66 0 0 3 (BETA) AROM 5-RING N [$([nD2r500]:a:[nD3v3])&!$([$(n:[$([nv4])&!$([#7][OD1])]),$(n:a=[$([nv4])&!$([#7][OD1])]),$(n=a:[$([nv4])&!$([#7][OD1])])])] +N 7 76 0 -3 2 NEG N IN TETRAZOLE AN [$([nD2r500][nD2r500][nD2r500][nD2r500])] +N 7 76 0 -4 2 (NEG N IN TRIAZOLE) [$([nD2r500]:[nD2r500]:[nD2r500]:c)] +N 7 76 0 -6 2 NEG N IN DIAZOLE [$([nD2r500]:[nD2r500]:c:c:c)] +N 7 79 0 0 3 GENERAL AROM 5-RING N [nD2r500] +N 7 45 0 0 4 NITRO GROUP N [$([ND3](=O)O)] + +N 7 67 23 0 4 NITROGEN IN N-OXIDE [$([ND3]([OD1])([#6])[#6]),$([ND3]([OD1])=[#6,#7])] +N 7 56 36 4 34 GUANIDINIUM N; Q=1/3 [$([ND3v3][#6D3]([#7D3v3&!r600&!$([#7][OD1])])=[#7D3v4&!r600&!$([#7][OD1])]),$([ND3v4]=[#6D3]([#7D3v3&!r600&!$([#7][OD1])])[#7D3v3&!r600&!$([#7][OD1])])] +N 7 55 36 6 34 N IN +N=C-N: ; Q=1/2 [$([ND3v4]=[#6D3][#7D3v3]),$([ND3v3][#6D3]=[#7D3v4&!r600&!$([#7][OD1])])] +N 7 54 36 12 4 IMINIUM NITROGEN [$([ND3v4]=[#6,#7])] +N 7 54 36 12 4 AZONIUM NITROGEN [$([ND3v4]([H])([#6])=[#7])] +N 7 43 28 0 3 N, SULFONAMIDES (and phos [$([ND3]S([OD1])[OD1]),$([ND3]P([OD1])[OD1])] +N 7 10 28 0 3 N-C=O, AMIDES [$([ND3v3][#6]=O)] +N 7 43 28 0 3 N, sulfinamide # not implemented: [$([ND3]S[OD1])&!$([ND3]S([OD1])[OD1])] +N 7 39 23 0 3 AROMATIC N, PYRROLE (tetr [$([nD3v3r500][nD2]=[nD2][nD2])] +N 7 10 28 0 3 N-C=S (DELOC LP) [$([ND3][#6]=[#16])] +N 7 10 28 0 3 N-N=C (DELOC LP) # not implemented??$([ND3][#7]=[#6,#7]) +N 7 40 28 0 3 N-C=C (DELOC LP) [$([ND3][#6]=[#6]),$([ND3]c)] +N 7 10 28 0 3 N-N=N (DELOC LP) [$([ND3v3][#7D2v3]=[#7D2v3])] +N 7 40 28 0 3 N-C=N (DELOC LP) [$([ND3][#6]=[#7,#15])] +N 7 43 28 0 3 NITROGEN ATTACHED TO CYAN [$([ND3][CD2][ND1])] +N 7 8 23 0 3 AMINE N [$([ND3](-A)(-A)-A),$([ND3](-A)(-A)-n)] +N 7 82 0 0 4 N-OXIDE NITROGEN IN GENER [$([nD3r500][OD1])] + + +N 7 69 0 0 4 NITROGEN IN N-OXIDE [$([nD3][OD1])] +N 7 81 36 4 4 GUANIDINIUM N; Q=1/3 [$([nD3v3][#6D3]([#7D3v3&!r600])=[#7D3v4&!r600&!$([#7][OD1])])] +N 7 81 36 4 4 GUANIDINIUM N; Q=1/3 [$([nD3v4]=[#6D3]([#7D3v3&!r600])[#7D3v3&!r600&!$([#7][OD1])])] +N 7 81 36 6 4 N IN N-C-N, IM+ ION [$([nD3r500v4]=[cD3][#7D3v3]),$([nD3r500v3][#6D3]=[#7D3v4&!r600&!$([#7][OD1])])] +N 7 81 36 12 4 POSITIVE N5B NITROGEN - F [$([nD3r500v4]:a:[oD2,sD2])] +N 7 58 36 12 4 N PYRIDINIUM ION [nD3r600v4] +N 7 39 23 0 3 AROMATIC N, PYRROLE [nD3r500v3] +N 7 68 23 0 4 NITROGEN IN N-OXIDE [$([ND4][OD1])] +N 7 34 36 12 4 N+, QUATERNARY N [ND4] +O 8 49 50 12 3 OXONIUM (TRICOORD) O [OD3] +O 8 70 31 0 2 OXYGEN IN WATER [$([OD2](H)H)] +O 8 59 0 0 2 AROMATIC O, FURAN [oD2r500] +O 8 6 24 0 2 RCO2H [$([OD2](H)[#6]=O)] +O 8 6 21 0 2 RCO2R [$([OD2]C=O)] +O 8 6 29 0 2 ENOL OR PHENOLIC O [$([OD2][#6D3][#6D3])] +O 8 6 29 0 2 OXYGEN IN -O-C=N MOIETY [$([OD2]-[#6D3]=[#7])] +O 8 6 33 0 2 DIVALENT O IN SULFATE [$([OD2][#16])] + + + +O 8 6 24 0 2 DIVALENT O IN PHOSPHATE [$([OD2][#15])] + + + +O 8 6 31 0 2 OXYGEN IN H2O [$([OD2]([H])[H])] +O 8 6 21 0 2 O-CSP3 [$([#8D2](-*)-*)] + +O 8 51 52 12 3 OXENIUM OXYGEN+ [$([OD2]=*)] +O 8 7 0 0 2 O=S=C [$([OD1]=[#16D2]=*)] +O 8 32 0 -6 12 O, CARBOXYLATE ANION [$([OD1][CD3][OD1])] +O 8 32 0 0 12 NITRO-GROUP OXYGEN [$([OD1][ND3]([#6])[OD1])] +O 8 32 0 0 12 NITRO-GROUP IN NITRATE [$([OD1][ND3]([OD1])[OD2])] +O 8 32 0 -4 12 NITRATE ANION OXYGEN [$([OD1][ND3]([OD1])[OD1])] +O 8 32 0 0 12 OXIDE ON NITROHGEN [$([OD1][#7D3]=,:*),$([OD1][#7D4])] +O 8 32 0 -6 12 SO4(2-) [$([OD1][SD4]([OD1])([OD1])[OD1])] +O 8 32 0 -4 12 SULFONATES, TERM OX ROSO3 [$([OD1][SD4]([OD1])[OD1])] +O 8 32 0 0 12 SULFONES, SULFONAMIDES [$([OD1][SD4][OD1,ND2]),$([OD1][SD3]([OD1,ND2])=C)] +O 8 32 0 -6 12 THIOSULFINATE O (-1/2) [$([OD1][SD3][OD1,SD1])] +O 8 32 0 0 12 SINGLE TERM O ON TET S #[$([OD1][#16])] +O 8 32 0 -6 12 TERMINAL O, O2P GROUP (RO [$([OD1][PD4]([OD1,SD1])([!$([OD1,SD1])])[!$([OD1,SD1])])] +O 8 32 0 -8 12 TERMINAL O, O3P GROUP ROP [$([OD1][PD4]([OD1])([OD1])[OD2,SD2])] +O 8 32 0 -9 12 TERMINAL O, PO4(-3) [$([OD1][PD4]([OD1])([OD1])[OD1])] +O 8 32 0 0 12 TERMINAL O, O-P [$([OD1][#15])] +O 8 32 0 -3 12 TERMINAL O IN CLO4(-) [$([OD1][ClD4]([OD1])([OD1])[OD1])] +O 8 7 0 0 2 O=C, GENERIC [$([#8D1]=[#6,#7,#16])] + + + + + +O 8 35 21 -12 1 RO- or HO- [OD1] + +F 9 11 0 0 1 FLUORINE [FD1] +F 9 89 0 -12 0 FLUORIDE ANION [FD0] +Na 11 93 0 12 0 SODIUM CATION [NaD0] +Mg 12 99 0 24 0 DIPOSITIVE MAGNESIUM CATI [MgD0] +Si 14 19 5 0 4 SILICON [SiD4] +P 15 25 71 0 4 GENERAL TETRACRD P [PD4] + + + + +P 15 26 71 0 3 TRICOORDINATE P [PD3] +P 15 75 71 0 3 P DOUBLY BONDED TO C [$([PD2]=C)] +S 16 18 0 0 4 SULFONAMIDE S [$([SD4]([OD1,ND2])[OD1,ND2]),$([SD3](=C)([OD1,ND2])[OD1,ND2])] + + + + +S 16 17 71 0 4 SULFOXIDE S (also S(=O)[N [$([SD3]([OD1,ND2])([#6,#7D3,#8D2])[#6,#7D3,#8D2])] +S 16 73 0 0 3 SULFUR IN SULFINATE [$([SD3]([OD1,SD1])[OD1])] + +S 16 44 0 0 2 S IN THIOPHENE [sD2r500] +S 16 15 71 0 2 THIOL, SULFIDE [$([SD2](-*)-*)] +S 16 74 0 0 4 SULFINYL SULFUR, C=S=O [$([SD2]([CD3])[OD1])] +S 16 72 0 -6 1 THIOCARBOXYLATE S [$([SD1][CD3][SD1])] + +S 16 16 0 0 2 S DOUBLY BONDED TO C [$([SD1]=[#6D3])] +S 16 72 0 -6 1 TERMINAL SULFUR ON C (P,S [$([SD1][#15,#6,#16][OD1])] +S 16 72 0 -12 1 TERMINAL SULFUR on alken [$([SD1][#6])] +S 16 72 0 0 1 TERMINAL SULFUR ON P [$([SD1][#15,#16])] +Cl 17 12 0 0 1 CHLORINE [ClD1] +Cl 17 77 0 0 4 CHLORINE IN CLO4(-) [$([ClD4]([OD1])([OD1])([OD1])[OD1])] +Cl 17 90 0 -12 0 CHLORIDE ANION [ClD0] +K 19 94 0 12 0 POTASSIUM CATION [KD0] +Ca 20 96 0 24 0 DIPOSITIVE CALCIUM CATION [CaD0] +Fe 26 87 0 24 0 IRON +2 CATION [FeD0+2] +Fe 26 88 0 36 0 IRON +3 CATION [FeD0+3] +Cu 29 97 0 12 0 MONOPOSITIVE COPPER CATIO [CuD0+1] +Cu 29 98 0 24 0 DIPOSITIVE COPPER CATION [CuD0+2] +Zn 30 95 0 24 0 DIPOSITIVE ZINC CATION [ZnD0+2] + +Br 35 13 0 0 1 BROMINE [BrD1] +Br 35 91 0 -12 0 BROMIDE ANION [BrD0] +I 53 14 0 0 1 IODINE [ID1] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/UFF.txt b/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/UFF.txt new file mode 100755 index 000000000000..c608cd155f1b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/UFF.txt @@ -0,0 +1,281 @@ +# +# Open Babel file: UFF.prm +# +# Force field parameters for UFF, the Universal Force Field +# Used by OBForceField and OBUFFForceField +# +# J. Am. Chem. Soc. (1992) 114(25) p. 10024-10035. +# The parameters in this file are taken from the UFF implementation in RDKit +# http://rdkit.org/ +# +# Atom typing rules are based on UFF published atom descriptions +# atom [SMARTS] [atomtype] [description] +# These must be sorted according to the element and complexity +# of the type rule (i.e., generic rules first, more specific rules later) +# +# MODIFIED 3/2008 by Bob Hanson for Jmol (bh) +# +# Parameters follow later +# param Atom r1 theta0 x1 D1 zeta Z1 Vi Uj Xi Hard Radius + +atom [#1] H_ Generic hydrogen +atom [#1D2] H_b Bridging hydrogen +atom [#2] He4+4 Helium +atom [#3] Li Lithium +atom [#4] Be3+2 Generic Be +atom [#5] B_2 Trigonal planar boron +atom [#5D4] B_3 Tetrahedral boron +atom [#6] C_3 Generic sp3 C +atom [C^2] C_2 sp2 non-aromatic C= // BH ^ is handled in ForceFieldUFF.getSearch as connected(double) +atom [C+1] C_2+ trivalent C (cation) // bh added Jmol 12.0.RC9 +atom [C-1] C_3 trivalent C (anion) // bh added Jmol 12.0.RC9 +atom [CA1] C_2 allylic C (anion or cation) // bh added Jmol 12.0.RC9 +atom [C^1] C_1 sp hybridized C +atom [c] C_R aromatic C +atom [#7] N_3 Generic sp3 N +atom [NA1] N_2 allylic N or amide // bh added Jmol 12.0.RC9 +atom [N^2] N_2 sp2 non-aromatic N // bh was [ND2], but this improperly treats N-oxides +atom [N^1] N_1 sp hybridized N // bh was [ND1], but this is more specifically sp +atom [n] N_R aromatic N +atom [#8] O_3 generic, sp3 hybridized O +#atom [#8] O_3_z sp3 hybridized O for zeolites +atom [O^2] O_2 sp2 hybridized O +atom [O^1] O_1 sp hybridized O +atom [o] O_R aromatic O +atom [#9] F_ generic F +atom [#10] Ne4+4 +atom [#11] Na +atom [#12] Mg3+2 +atom [#13] Al3 +atom [#14] Si3 +atom [#15+5] P_3+5 formal charge +5 +#atom [#15] P_3+q Organometallic phosphine ligands +atom [#15] P_3+3 generic phosphorus +atom [#16] S_3+2 generic S +atom [#16+4] S_3+4 S+4 +atom [#16+6] S_3+6 S+6 +atom [S^2] S_2 non-aromatic sp2 S +atom [s] S_R aromatic S +atom [#17] Cl +atom [#18] Ar4+4 +atom [#19] K_ +atom [#20] Ca6+2 +atom [#21] Sc3+3 +atom [#22] Ti6+4 generic Ti (6-valent) +atom [#22D3] Ti3+4 +atom [#23] V_3+5 +atom [#24] Cr6+3 +atom [#25] Mn6+2 +atom [#26] Fe6+2 generic Fe (6-valent) +atom [#26D3] Fe3+2 +atom [#27] Co6+3 +atom [#28] Ni4+2 +atom [#29] Cu3+1 +atom [#30] Zn3+2 +atom [#31] Ga3+3 +atom [#32] Ge3 +atom [#33] As3+3 +atom [#34] Se3+2 +atom [#35] Br +atom [#36] Kr4+4 +atom [#37] Rb +atom [#38] Sr6+2 +atom [#39] Y_3+3 +atom [#40] Zr3+4 +atom [#41] Nb3+5 +atom [#42] Mo6+6 generic Mo (6-valent) +atom [#42D3] Mo3+6 trivalent Mo +atom [#43] Tc6+5 +atom [#44] Ru6+2 +atom [#45] Rh6+3 +atom [#46] Pd4+2 +atom [#47] Ag1+1 +atom [#48] Cd3+2 +atom [#49] In3+3 +atom [#50] Sn3 +atom [#51] Sb3+3 +atom [#52] Te3+2 +atom [#53] I_ +atom [#54] Xe4+4 +atom [#55] Cs +atom [#56] Ba6+2 +atom [#57] La3+3 +atom [#58] Ce6+3 +atom [#59] Pr6+3 +atom [#60] Nd6+3 +atom [#61] Pm6+3 +atom [#62] Sm6+3 +atom [#63] Eu6+3 +atom [#64] Gd6+3 +atom [#65] Tb6+3 +atom [#66] Dy6+3 +atom [#67] Ho6+3 +atom [#68] Er6+3 +atom [#69] Tm6+3 +atom [#70] Yb6+3 +atom [#71] Lu6+3 +atom [#72] Hf3+4 +atom [#73] Ta3+5 +atom [#74] W_6+6 generic W (6-valent) +atom [#74D3+4] W_3+4 +atom [#74D3+6] W_3+6 +atom [#75] Re6+5 generic Re (6-valent) +atom [#75D3] Re3+7 trivalent Re +atom [#76] Os6+6 +atom [#77] Ir6+3 +atom [#78] Pt4+2 +atom [#79] Au4+3 +atom [#80] Hg1+2 +atom [#81] Tl3+3 +atom [#82] Pb3 +atom [#83] Bi3+3 +atom [#84] Po3+2 +atom [#85] At +atom [#86] Rn4+4 +atom [#87] Fr +atom [#88] Ra6+2 +atom [#89] Ac6+3 +atom [#90] Th6+4 +atom [#91] Pa6+4 +atom [#92] U_6+4 +atom [#93] Np6+4 +atom [#94] Pu6+4 +atom [#95] Am6+4 +atom [#96] Cm6+3 +atom [#97] Bk6+3 +atom [#98] Cf6+3 +atom [#99] Es6+3 +atom [#100] Fm6+3 +atom [#101] Md6+3 +atom [#102] No6+3 +atom [#103] Lw6+3 + +# Atom r1 theta0 x1 D1 zeta Z1 Vi Uj Xi Hard Radius +param H_ 0.354 180 2.886 0.044 12 0.712 0 0 4.528 6.9452 0.371 +param H_b 0.46 83.5 2.886 0.044 12 0.712 0 0 4.528 6.9452 0.371 +param He4+4 0.849 90 2.362 0.056 15.24 0.098 0 0 9.66 14.92 1.3 +param Li 1.336 180 2.451 0.025 12 1.026 0 2 3.006 2.386 1.557 +param Be3+2 1.074 109.47 2.745 0.085 12 1.565 0 2 4.877 4.443 1.24 +param B_3 0.838 109.47 4.083 0.18 12.052 1.755 0 2 5.11 4.75 0.822 +param B_2 0.828 120 4.083 0.18 12.052 1.755 0 2 5.11 4.75 0.822 +param C_3 0.757 109.47 3.851 0.105 12.73 1.912 2.119 2 5.343 5.063 0.759 +param C_R 0.729 120 3.851 0.105 12.73 1.912 0 2 5.343 5.063 0.759 +param C_2 0.732 120 3.851 0.105 12.73 1.912 0 2 5.343 5.063 0.759 +param C_2+ 0.732 120 6.851 0.105 12.73 1.912 0 2 5.343 5.063 0.759 +param C_1 0.706 180 3.851 0.105 12.73 1.912 0 2 5.343 5.063 0.759 +param N_3 0.7 106.7 3.66 0.069 13.407 2.544 0.45 2 6.899 5.88 0.715 +param N_R 0.699 120 3.66 0.069 13.407 2.544 0 2 6.899 5.88 0.715 +param N_2 0.685 111.2 3.66 0.069 13.407 2.544 0 2 6.899 5.88 0.715 +param N_1 0.656 180 3.66 0.069 13.407 2.544 0 2 6.899 5.88 0.715 +param O_3 0.658 104.51 3.5 0.06 14.085 2.3 0.018 2 8.741 6.682 0.669 +param O_3_z 0.528 146 3.5 0.06 14.085 2.3 0.018 2 8.741 6.682 0.669 +param O_R 0.68 110 3.5 0.06 14.085 2.3 0 2 8.741 6.682 0.669 +param O_2 0.634 120 3.5 0.06 14.085 2.3 0 2 8.741 6.682 0.669 +param O_1 0.639 180 3.5 0.06 14.085 2.3 0 2 8.741 6.682 0.669 +param F_ 0.668 180 3.364 0.05 14.762 1.735 0 2 10.874 7.474 0.706 +param Ne4+4 0.92 90 3.243 0.042 15.44 0.194 0 2 11.04 10.55 1.768 +param Na 1.539 180 2.983 0.03 12 1.081 0 1.25 2.843 2.296 2.085 +param Mg3+2 1.421 109.47 3.021 0.111 12 1.787 0 1.25 3.951 3.693 1.5 +param Al3 1.244 109.47 4.499 0.505 11.278 1.792 0 1.25 4.06 3.59 1.201 +param Si3 1.117 109.47 4.295 0.402 12.175 2.323 1.225 1.25 4.168 3.487 1.176 +param P_3+3 1.101 93.8 4.147 0.305 13.072 2.863 2.4 1.25 5.463 4 1.102 +param P_3+5 1.056 109.47 4.147 0.305 13.072 2.863 2.4 1.25 5.463 4 1.102 +param P_3+q 1.056 109.47 4.147 0.305 13.072 2.863 2.4 1.25 5.463 4 1.102 +param S_3+2 1.064 92.1 4.035 0.274 13.969 2.703 0.484 1.25 6.928 4.486 1.047 +param S_3+4 1.049 103.2 4.035 0.274 13.969 2.703 0.484 1.25 6.928 4.486 1.047 +param S_3+6 1.027 109.47 4.035 0.274 13.969 2.703 0.484 1.25 6.928 4.486 1.047 +param S_R 1.077 92.2 4.035 0.274 13.969 2.703 0 1.25 6.928 4.486 1.047 +param S_2 0.854 120 4.035 0.274 13.969 2.703 0 1.25 6.928 4.486 1.047 +param Cl 1.044 180 3.947 0.227 14.866 2.348 0 1.25 8.564 4.946 0.994 +param Ar4+4 1.032 90 3.868 0.185 15.763 0.3 0 1.25 9.465 6.355 2.108 +param K_ 1.953 180 3.812 0.035 12 1.165 0 0.7 2.421 1.92 2.586 +param Ca6+2 1.761 90 3.399 0.238 12 2.141 0 0.7 3.231 2.88 2 +param Sc3+3 1.513 109.47 3.295 0.019 12 2.592 0 0.7 3.395 3.08 1.75 +param Ti3+4 1.412 109.47 3.175 0.017 12 2.659 0 0.7 3.47 3.38 1.607 +param Ti6+4 1.412 90 3.175 0.017 12 2.659 0 0.7 3.47 3.38 1.607 +param V_3+5 1.402 109.47 3.144 0.016 12 2.679 0 0.7 3.65 3.41 1.47 +param Cr6+3 1.345 90 3.023 0.015 12 2.463 0 0.7 3.415 3.865 1.402 +param Mn6+2 1.382 90 2.961 0.013 12 2.43 0 0.7 3.325 4.105 1.533 +param Fe3+2 1.27 109.47 2.912 0.013 12 2.43 0 0.7 3.76 4.14 1.393 +param Fe6+2 1.335 90 2.912 0.013 12 2.43 0 0.7 3.76 4.14 1.393 +param Co6+3 1.241 90 2.872 0.014 12 2.43 0 0.7 4.105 4.175 1.406 +param Ni4+2 1.164 90 2.834 0.015 12 2.43 0 0.7 4.465 4.205 1.398 +param Cu3+1 1.302 109.47 3.495 0.005 12 1.756 0 0.7 4.2 4.22 1.434 +param Zn3+2 1.193 109.47 2.763 0.124 12 1.308 0 0.7 5.106 4.285 1.4 +param Ga3+3 1.26 109.47 4.383 0.415 11 1.821 0 0.7 3.641 3.16 1.211 +param Ge3 1.197 109.47 4.28 0.379 12 2.789 0.701 0.7 4.051 3.438 1.189 +param As3+3 1.211 92.1 4.23 0.309 13 2.864 1.5 0.7 5.188 3.809 1.204 +param Se3+2 1.19 90.6 4.205 0.291 14 2.764 0.335 0.7 6.428 4.131 1.224 +param Br 1.192 180 4.189 0.251 15 2.519 0 0.7 7.79 4.425 1.141 +param Kr4+4 1.147 90 4.141 0.22 16 0.452 0 0.7 8.505 5.715 2.27 +param Rb 2.26 180 4.114 0.04 12 1.592 0 0.2 2.331 1.846 2.77 +param Sr6+2 2.052 90 3.641 0.235 12 2.449 0 0.2 3.024 2.44 2.415 +param Y_3+3 1.698 109.47 3.345 0.072 12 3.257 0 0.2 3.83 2.81 1.998 +param Zr3+4 1.564 109.47 3.124 0.069 12 3.667 0 0.2 3.4 3.55 1.758 +param Nb3+5 1.473 109.47 3.165 0.059 12 3.618 0 0.2 3.55 3.38 1.603 +param Mo6+6 1.467 90 3.052 0.056 12 3.4 0 0.2 3.465 3.755 1.53 +param Mo3+6 1.484 109.47 3.052 0.056 12 3.4 0 0.2 3.465 3.755 1.53 +param Tc6+5 1.322 90 2.998 0.048 12 3.4 0 0.2 3.29 3.99 1.5 +param Ru6+2 1.478 90 2.963 0.056 12 3.4 0 0.2 3.575 4.015 1.5 +param Rh6+3 1.332 90 2.929 0.053 12 3.5 0 0.2 3.975 4.005 1.509 +param Pd4+2 1.338 90 2.899 0.048 12 3.21 0 0.2 4.32 4 1.544 +param Ag1+1 1.386 180 3.148 0.036 12 1.956 0 0.2 4.436 3.134 1.622 +param Cd3+2 1.403 109.47 2.848 0.228 12 1.65 0 0.2 5.034 3.957 1.6 +param In3+3 1.459 109.47 4.463 0.599 11 2.07 0 0.2 3.506 2.896 1.404 +param Sn3 1.398 109.47 4.392 0.567 12 2.961 0.199 0.2 3.987 3.124 1.354 +param Sb3+3 1.407 91.6 4.42 0.449 13 2.704 1.1 0.2 4.899 3.342 1.404 +param Te3+2 1.386 90.25 4.47 0.398 14 2.882 0.3 0.2 5.816 3.526 1.38 +param I_ 1.382 180 4.5 0.339 15 2.65 0 0.2 6.822 3.762 1.333 +param Xe4+4 1.267 90 4.404 0.332 12 0.556 0 0.2 7.595 4.975 2.459 +param Cs 2.57 180 4.517 0.045 12 1.573 0 0.1 2.183 1.711 2.984 +param Ba6+2 2.277 90 3.703 0.364 12 2.727 0 0.1 2.814 2.396 2.442 +param La3+3 1.943 109.47 3.522 0.017 12 3.3 0 0.1 2.8355 2.7415 2.071 +param Ce6+3 1.841 90 3.556 0.013 12 3.3 0 0.1 2.774 2.692 1.925 +param Pr6+3 1.823 90 3.606 0.01 12 3.3 0 0.1 2.858 2.564 2.007 +param Nd6+3 1.816 90 3.575 0.01 12 3.3 0 0.1 2.8685 2.6205 2.007 +param Pm6+3 1.801 90 3.547 0.009 12 3.3 0 0.1 2.881 2.673 2 +param Sm6+3 1.78 90 3.52 0.008 12 3.3 0 0.1 2.9115 2.7195 1.978 +param Eu6+3 1.771 90 3.493 0.008 12 3.3 0 0.1 2.8785 2.7875 2.227 +param Gd6+3 1.735 90 3.368 0.009 12 3.3 0 0.1 3.1665 2.9745 1.968 +param Tb6+3 1.732 90 3.451 0.007 12 3.3 0 0.1 3.018 2.834 1.954 +param Dy6+3 1.71 90 3.428 0.007 12 3.3 0 0.1 3.0555 2.8715 1.934 +param Ho6+3 1.696 90 3.409 0.007 12 3.416 0 0.1 3.127 2.891 1.925 +param Er6+3 1.673 90 3.391 0.007 12 3.3 0 0.1 3.1865 2.9145 1.915 +param Tm6+3 1.66 90 3.374 0.006 12 3.3 0 0.1 3.2514 2.9329 2 +param Yb6+3 1.637 90 3.355 0.228 12 2.618 0 0.1 3.2889 2.965 2.158 +param Lu6+3 1.671 90 3.64 0.041 12 3.271 0 0.1 2.9629 2.4629 1.896 +param Hf3+4 1.611 109.47 3.141 0.072 12 3.921 0 0.1 3.7 3.4 1.759 +param Ta3+5 1.511 109.47 3.17 0.081 12 4.075 0 0.1 5.1 2.85 1.605 +param W_6+6 1.392 90 3.069 0.067 12 3.7 0 0.1 4.63 3.31 1.538 +param W_3+4 1.526 109.47 3.069 0.067 12 3.7 0 0.1 4.63 3.31 1.538 +param W_3+6 1.38 109.47 3.069 0.067 12 3.7 0 0.1 4.63 3.31 1.538 +param Re6+5 1.372 90 2.954 0.066 12 3.7 0 0.1 3.96 3.92 1.6 +param Re3+7 1.314 109.47 2.954 0.066 12 3.7 0 0.1 3.96 3.92 1.6 +param Os6+6 1.372 90 3.12 0.037 12 3.7 0 0.1 5.14 3.63 1.7 +param Ir6+3 1.371 90 2.84 0.073 12 3.731 0 0.1 5 4 1.866 +param Pt4+2 1.364 90 2.754 0.08 12 3.382 0 0.1 4.79 4.43 1.557 +param Au4+3 1.262 90 3.293 0.039 12 2.625 0 0.1 4.894 2.586 1.618 +param Hg1+2 1.34 180 2.705 0.385 12 1.75 0 0.1 6.27 4.16 1.6 +param Tl3+3 1.518 120 4.347 0.68 11 2.068 0 0.1 3.2 2.9 1.53 +param Pb3 1.459 109.47 4.297 0.663 12 2.846 0.1 0.1 3.9 3.53 1.444 +param Bi3+3 1.512 90 4.37 0.518 13 2.47 1 0.1 4.69 3.74 1.514 +param Po3+2 1.5 90 4.709 0.325 14 2.33 0.3 0.1 4.21 4.21 1.48 +param At 1.545 180 4.75 0.284 15 2.24 0 0.1 4.75 4.75 1.47 +param Rn4+4 1.42 90 4.765 0.248 16 0.583 0 0.1 5.37 5.37 2.2 +param Fr 2.88 180 4.9 0.05 12 1.847 0 0 2 2 2.3 +param Ra6+2 2.512 90 3.677 0.404 12 2.92 0 0 2.843 2.434 2.2 +param Ac6+3 1.983 90 3.478 0.033 12 3.9 0 0 2.835 2.835 2.108 +param Th6+4 1.721 90 3.396 0.026 12 4.202 0 0 3.175 2.905 2.018 +param Pa6+4 1.711 90 3.424 0.022 12 3.9 0 0 2.985 2.905 1.8 +param U_6+4 1.684 90 3.395 0.022 12 3.9 0 0 3.341 2.853 1.713 +param Np6+4 1.666 90 3.424 0.019 12 3.9 0 0 3.549 2.717 1.8 +param Pu6+4 1.657 90 3.424 0.016 12 3.9 0 0 3.243 2.819 1.84 +param Am6+4 1.66 90 3.381 0.014 12 3.9 0 0 2.9895 3.0035 1.942 +param Cm6+3 1.801 90 3.326 0.013 12 3.9 0 0 2.8315 3.1895 1.9 +param Bk6+3 1.761 90 3.339 0.013 12 3.9 0 0 3.1935 3.0355 1.9 +param Cf6+3 1.75 90 3.313 0.013 12 3.9 0 0 3.197 3.101 1.9 +param Es6+3 1.724 90 3.299 0.012 12 3.9 0 0 3.333 3.089 1.9 +param Fm6+3 1.712 90 3.286 0.012 12 3.9 0 0 3.4 3.1 1.9 +param Md6+3 1.689 90 3.274 0.011 12 3.9 0 0 3.47 3.11 1.9 +param No6+3 1.679 90 3.248 0.011 12 3.9 0 0 3.475 3.175 1.9 +param Lw6+3 1.698 90 3.236 0.011 12 3.9 0 0 3.5 3.2 1.9 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/UFF_2d.txt b/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/UFF_2d.txt new file mode 100755 index 000000000000..36e9e28b1cc2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/UFF_2d.txt @@ -0,0 +1,281 @@ +# +# Open Babel file: UFF.prm +# +# Force field parameters for UFF, the Universal Force Field +# Used by OBForceField and OBUFFForceField +# +# J. Am. Chem. Soc. (1992) 114(25) p. 10024-10035. +# The parameters in this file are taken from the UFF implementation in RDKit +# http://rdkit.org/ +# +# Atom typing rules are based on UFF published atom descriptions +# atom [SMARTS] [atomtype] [description] +# These must be sorted according to the element and complexity +# of the type rule (i.e., generic rules first, more specific rules later) +# +# MODIFIED 3/2008 by Bob Hanson for Jmol (bh) +# +# Parameters follow later +# param Atom r1 theta0 x1 D1 zeta Z1 Vi Uj Xi Hard Radius + +atom [#1] H_ Generic hydrogen +atom [#1D2] H_b Bridging hydrogen +atom [#2] He4+4 Helium +atom [#3] Li Lithium +atom [#4] Be3+2 Generic Be +atom [#5] B_2 Trigonal planar boron +atom [#5D4] B_3 Tetrahedral boron +atom [#6] C_3 Generic sp3 C +atom [C^2] C_2 sp2 non-aromatic C= // BH ^ is handled in ForceFieldUFF.getSearch as connected(double) +atom [C+1] C_2+ trivalent C (cation) // bh added Jmol 12.0.RC9 +atom [C-1] C_3 trivalent C (anion) // bh added Jmol 12.0.RC9 +###atom [CA1] C_2 allylic C (anion or cation) // bh added Jmol 12.0.RC9 +atom [C^1] C_1 sp hybridized C +atom [c] C_R aromatic C +atom [#7] N_3 Generic sp3 N +atom [NA1] N_2 allylic N or amide // bh added Jmol 12.0.RC9 +atom [N^2] N_2 sp2 non-aromatic N // bh was [ND2], but this improperly treats N-oxides +atom [N^1] N_1 sp hybridized N // bh was [ND1], but this is more specifically sp +atom [n] N_R aromatic N +atom [#8] O_3 generic, sp3 hybridized O +#atom [#8] O_3_z sp3 hybridized O for zeolites +atom [O^2] O_2 sp2 hybridized O +atom [O^1] O_1 sp hybridized O +atom [o] O_R aromatic O +atom [#9] F_ generic F +atom [#10] Ne4+4 +atom [#11] Na +atom [#12] Mg3+2 +atom [#13] Al3 +atom [#14] Si3 +atom [#15+5] P_3+5 formal charge +5 +#atom [#15] P_3+q Organometallic phosphine ligands +atom [#15] P_3+3 generic phosphorus +atom [#16] S_3+2 generic S +atom [#16+4] S_3+4 S+4 +atom [#16+6] S_3+6 S+6 +atom [S^2] S_2 non-aromatic sp2 S +atom [s] S_R aromatic S +atom [#17] Cl +atom [#18] Ar4+4 +atom [#19] K_ +atom [#20] Ca6+2 +atom [#21] Sc3+3 +atom [#22] Ti6+4 generic Ti (6-valent) +atom [#22D3] Ti3+4 +atom [#23] V_3+5 +atom [#24] Cr6+3 +atom [#25] Mn6+2 +atom [#26] Fe6+2 generic Fe (6-valent) +atom [#26D3] Fe3+2 +atom [#27] Co6+3 +atom [#28] Ni4+2 +atom [#29] Cu3+1 +atom [#30] Zn3+2 +atom [#31] Ga3+3 +atom [#32] Ge3 +atom [#33] As3+3 +atom [#34] Se3+2 +atom [#35] Br +atom [#36] Kr4+4 +atom [#37] Rb +atom [#38] Sr6+2 +atom [#39] Y_3+3 +atom [#40] Zr3+4 +atom [#41] Nb3+5 +atom [#42] Mo6+6 generic Mo (6-valent) +atom [#42D3] Mo3+6 trivalent Mo +atom [#43] Tc6+5 +atom [#44] Ru6+2 +atom [#45] Rh6+3 +atom [#46] Pd4+2 +atom [#47] Ag1+1 +atom [#48] Cd3+2 +atom [#49] In3+3 +atom [#50] Sn3 +atom [#51] Sb3+3 +atom [#52] Te3+2 +atom [#53] I_ +atom [#54] Xe4+4 +atom [#55] Cs +atom [#56] Ba6+2 +atom [#57] La3+3 +atom [#58] Ce6+3 +atom [#59] Pr6+3 +atom [#60] Nd6+3 +atom [#61] Pm6+3 +atom [#62] Sm6+3 +atom [#63] Eu6+3 +atom [#64] Gd6+3 +atom [#65] Tb6+3 +atom [#66] Dy6+3 +atom [#67] Ho6+3 +atom [#68] Er6+3 +atom [#69] Tm6+3 +atom [#70] Yb6+3 +atom [#71] Lu6+3 +atom [#72] Hf3+4 +atom [#73] Ta3+5 +atom [#74] W_6+6 generic W (6-valent) +atom [#74D3+4] W_3+4 +atom [#74D3+6] W_3+6 +atom [#75] Re6+5 generic Re (6-valent) +atom [#75D3] Re3+7 trivalent Re +atom [#76] Os6+6 +atom [#77] Ir6+3 +atom [#78] Pt4+2 +atom [#79] Au4+3 +atom [#80] Hg1+2 +atom [#81] Tl3+3 +atom [#82] Pb3 +atom [#83] Bi3+3 +atom [#84] Po3+2 +atom [#85] At +atom [#86] Rn4+4 +atom [#87] Fr +atom [#88] Ra6+2 +atom [#89] Ac6+3 +atom [#90] Th6+4 +atom [#91] Pa6+4 +atom [#92] U_6+4 +atom [#93] Np6+4 +atom [#94] Pu6+4 +atom [#95] Am6+4 +atom [#96] Cm6+3 +atom [#97] Bk6+3 +atom [#98] Cf6+3 +atom [#99] Es6+3 +atom [#100] Fm6+3 +atom [#101] Md6+3 +atom [#102] No6+3 +atom [#103] Lw6+3 + +# Atom r1 theta0 x1 D1 zeta Z1 Vi Uj Xi Hard Radius +param H_ 0.354 180 2.886 0.044 12 0.712 0 0 4.528 6.9452 0.371 +param H_b 0.46 83.5 2.886 0.044 12 0.712 0 0 4.528 6.9452 0.371 +param He4+4 0.849 90 2.362 0.056 15.24 0.098 0 0 9.66 14.92 1.3 +param Li 1.336 180 2.451 0.025 12 1.026 0 2 3.006 2.386 1.557 +param Be3+2 1.074 109.47 2.745 0.085 12 1.565 0 2 4.877 4.443 1.24 +param B_3 0.838 109.47 4.083 0.18 12.052 1.755 0 2 5.11 4.75 0.822 +param B_2 0.828 120 4.083 0.18 12.052 1.755 0 2 5.11 4.75 0.822 +param C_3 0.757 109.47 3.851 0.105 12.73 1.912 2.119 2 5.343 5.063 0.759 +param C_R 0.729 120 3.851 0.105 12.73 1.912 0 2 5.343 5.063 0.759 +param C_2 0.732 120 3.851 0.105 12.73 1.912 0 2 5.343 5.063 0.759 +param C_2+ 0.732 120 6.851 0.105 12.73 1.912 0 2 5.343 5.063 0.759 +param C_1 0.706 180 3.851 0.105 12.73 1.912 0 2 5.343 5.063 0.759 +param N_3 0.7 106.7 3.66 0.069 13.407 2.544 0.45 2 6.899 5.88 0.715 +param N_R 0.699 120 3.66 0.069 13.407 2.544 0 2 6.899 5.88 0.715 +param N_2 0.685 111.2 3.66 0.069 13.407 2.544 0 2 6.899 5.88 0.715 +param N_1 0.656 180 3.66 0.069 13.407 2.544 0 2 6.899 5.88 0.715 +param O_3 0.658 104.51 3.5 0.06 14.085 2.3 0.018 2 8.741 6.682 0.669 +param O_3_z 0.528 146 3.5 0.06 14.085 2.3 0.018 2 8.741 6.682 0.669 +param O_R 0.68 110 3.5 0.06 14.085 2.3 0 2 8.741 6.682 0.669 +param O_2 0.634 120 3.5 0.06 14.085 2.3 0 2 8.741 6.682 0.669 +param O_1 0.639 180 3.5 0.06 14.085 2.3 0 2 8.741 6.682 0.669 +param F_ 0.668 180 3.364 0.05 14.762 1.735 0 2 10.874 7.474 0.706 +param Ne4+4 0.92 90 3.243 0.042 15.44 0.194 0 2 11.04 10.55 1.768 +param Na 1.539 180 2.983 0.03 12 1.081 0 1.25 2.843 2.296 2.085 +param Mg3+2 1.421 109.47 3.021 0.111 12 1.787 0 1.25 3.951 3.693 1.5 +param Al3 1.244 109.47 4.499 0.505 11.278 1.792 0 1.25 4.06 3.59 1.201 +param Si3 1.117 109.47 4.295 0.402 12.175 2.323 1.225 1.25 4.168 3.487 1.176 +param P_3+3 1.101 93.8 4.147 0.305 13.072 2.863 2.4 1.25 5.463 4 1.102 +param P_3+5 1.056 109.47 4.147 0.305 13.072 2.863 2.4 1.25 5.463 4 1.102 +param P_3+q 1.056 109.47 4.147 0.305 13.072 2.863 2.4 1.25 5.463 4 1.102 +param S_3+2 1.064 92.1 4.035 0.274 13.969 2.703 0.484 1.25 6.928 4.486 1.047 +param S_3+4 1.049 103.2 4.035 0.274 13.969 2.703 0.484 1.25 6.928 4.486 1.047 +param S_3+6 1.027 109.47 4.035 0.274 13.969 2.703 0.484 1.25 6.928 4.486 1.047 +param S_R 1.077 92.2 4.035 0.274 13.969 2.703 0 1.25 6.928 4.486 1.047 +param S_2 0.854 120 4.035 0.274 13.969 2.703 0 1.25 6.928 4.486 1.047 +param Cl 1.044 180 3.947 0.227 14.866 2.348 0 1.25 8.564 4.946 0.994 +param Ar4+4 1.032 90 3.868 0.185 15.763 0.3 0 1.25 9.465 6.355 2.108 +param K_ 1.953 180 3.812 0.035 12 1.165 0 0.7 2.421 1.92 2.586 +param Ca6+2 1.761 90 3.399 0.238 12 2.141 0 0.7 3.231 2.88 2 +param Sc3+3 1.513 109.47 3.295 0.019 12 2.592 0 0.7 3.395 3.08 1.75 +param Ti3+4 1.412 109.47 3.175 0.017 12 2.659 0 0.7 3.47 3.38 1.607 +param Ti6+4 1.412 90 3.175 0.017 12 2.659 0 0.7 3.47 3.38 1.607 +param V_3+5 1.402 109.47 3.144 0.016 12 2.679 0 0.7 3.65 3.41 1.47 +param Cr6+3 1.345 90 3.023 0.015 12 2.463 0 0.7 3.415 3.865 1.402 +param Mn6+2 1.382 90 2.961 0.013 12 2.43 0 0.7 3.325 4.105 1.533 +param Fe3+2 1.27 109.47 2.912 0.013 12 2.43 0 0.7 3.76 4.14 1.393 +param Fe6+2 1.335 90 2.912 0.013 12 2.43 0 0.7 3.76 4.14 1.393 +param Co6+3 1.241 90 2.872 0.014 12 2.43 0 0.7 4.105 4.175 1.406 +param Ni4+2 1.164 90 2.834 0.015 12 2.43 0 0.7 4.465 4.205 1.398 +param Cu3+1 1.302 109.47 3.495 0.005 12 1.756 0 0.7 4.2 4.22 1.434 +param Zn3+2 1.193 109.47 2.763 0.124 12 1.308 0 0.7 5.106 4.285 1.4 +param Ga3+3 1.26 109.47 4.383 0.415 11 1.821 0 0.7 3.641 3.16 1.211 +param Ge3 1.197 109.47 4.28 0.379 12 2.789 0.701 0.7 4.051 3.438 1.189 +param As3+3 1.211 92.1 4.23 0.309 13 2.864 1.5 0.7 5.188 3.809 1.204 +param Se3+2 1.19 90.6 4.205 0.291 14 2.764 0.335 0.7 6.428 4.131 1.224 +param Br 1.192 180 4.189 0.251 15 2.519 0 0.7 7.79 4.425 1.141 +param Kr4+4 1.147 90 4.141 0.22 16 0.452 0 0.7 8.505 5.715 2.27 +param Rb 2.26 180 4.114 0.04 12 1.592 0 0.2 2.331 1.846 2.77 +param Sr6+2 2.052 90 3.641 0.235 12 2.449 0 0.2 3.024 2.44 2.415 +param Y_3+3 1.698 109.47 3.345 0.072 12 3.257 0 0.2 3.83 2.81 1.998 +param Zr3+4 1.564 109.47 3.124 0.069 12 3.667 0 0.2 3.4 3.55 1.758 +param Nb3+5 1.473 109.47 3.165 0.059 12 3.618 0 0.2 3.55 3.38 1.603 +param Mo6+6 1.467 90 3.052 0.056 12 3.4 0 0.2 3.465 3.755 1.53 +param Mo3+6 1.484 109.47 3.052 0.056 12 3.4 0 0.2 3.465 3.755 1.53 +param Tc6+5 1.322 90 2.998 0.048 12 3.4 0 0.2 3.29 3.99 1.5 +param Ru6+2 1.478 90 2.963 0.056 12 3.4 0 0.2 3.575 4.015 1.5 +param Rh6+3 1.332 90 2.929 0.053 12 3.5 0 0.2 3.975 4.005 1.509 +param Pd4+2 1.338 90 2.899 0.048 12 3.21 0 0.2 4.32 4 1.544 +param Ag1+1 1.386 180 3.148 0.036 12 1.956 0 0.2 4.436 3.134 1.622 +param Cd3+2 1.403 109.47 2.848 0.228 12 1.65 0 0.2 5.034 3.957 1.6 +param In3+3 1.459 109.47 4.463 0.599 11 2.07 0 0.2 3.506 2.896 1.404 +param Sn3 1.398 109.47 4.392 0.567 12 2.961 0.199 0.2 3.987 3.124 1.354 +param Sb3+3 1.407 91.6 4.42 0.449 13 2.704 1.1 0.2 4.899 3.342 1.404 +param Te3+2 1.386 90.25 4.47 0.398 14 2.882 0.3 0.2 5.816 3.526 1.38 +param I_ 1.382 180 4.5 0.339 15 2.65 0 0.2 6.822 3.762 1.333 +param Xe4+4 1.267 90 4.404 0.332 12 0.556 0 0.2 7.595 4.975 2.459 +param Cs 2.57 180 4.517 0.045 12 1.573 0 0.1 2.183 1.711 2.984 +param Ba6+2 2.277 90 3.703 0.364 12 2.727 0 0.1 2.814 2.396 2.442 +param La3+3 1.943 109.47 3.522 0.017 12 3.3 0 0.1 2.8355 2.7415 2.071 +param Ce6+3 1.841 90 3.556 0.013 12 3.3 0 0.1 2.774 2.692 1.925 +param Pr6+3 1.823 90 3.606 0.01 12 3.3 0 0.1 2.858 2.564 2.007 +param Nd6+3 1.816 90 3.575 0.01 12 3.3 0 0.1 2.8685 2.6205 2.007 +param Pm6+3 1.801 90 3.547 0.009 12 3.3 0 0.1 2.881 2.673 2 +param Sm6+3 1.78 90 3.52 0.008 12 3.3 0 0.1 2.9115 2.7195 1.978 +param Eu6+3 1.771 90 3.493 0.008 12 3.3 0 0.1 2.8785 2.7875 2.227 +param Gd6+3 1.735 90 3.368 0.009 12 3.3 0 0.1 3.1665 2.9745 1.968 +param Tb6+3 1.732 90 3.451 0.007 12 3.3 0 0.1 3.018 2.834 1.954 +param Dy6+3 1.71 90 3.428 0.007 12 3.3 0 0.1 3.0555 2.8715 1.934 +param Ho6+3 1.696 90 3.409 0.007 12 3.416 0 0.1 3.127 2.891 1.925 +param Er6+3 1.673 90 3.391 0.007 12 3.3 0 0.1 3.1865 2.9145 1.915 +param Tm6+3 1.66 90 3.374 0.006 12 3.3 0 0.1 3.2514 2.9329 2 +param Yb6+3 1.637 90 3.355 0.228 12 2.618 0 0.1 3.2889 2.965 2.158 +param Lu6+3 1.671 90 3.64 0.041 12 3.271 0 0.1 2.9629 2.4629 1.896 +param Hf3+4 1.611 109.47 3.141 0.072 12 3.921 0 0.1 3.7 3.4 1.759 +param Ta3+5 1.511 109.47 3.17 0.081 12 4.075 0 0.1 5.1 2.85 1.605 +param W_6+6 1.392 90 3.069 0.067 12 3.7 0 0.1 4.63 3.31 1.538 +param W_3+4 1.526 109.47 3.069 0.067 12 3.7 0 0.1 4.63 3.31 1.538 +param W_3+6 1.38 109.47 3.069 0.067 12 3.7 0 0.1 4.63 3.31 1.538 +param Re6+5 1.372 90 2.954 0.066 12 3.7 0 0.1 3.96 3.92 1.6 +param Re3+7 1.314 109.47 2.954 0.066 12 3.7 0 0.1 3.96 3.92 1.6 +param Os6+6 1.372 90 3.12 0.037 12 3.7 0 0.1 5.14 3.63 1.7 +param Ir6+3 1.371 90 2.84 0.073 12 3.731 0 0.1 5 4 1.866 +param Pt4+2 1.364 90 2.754 0.08 12 3.382 0 0.1 4.79 4.43 1.557 +param Au4+3 1.262 90 3.293 0.039 12 2.625 0 0.1 4.894 2.586 1.618 +param Hg1+2 1.34 180 2.705 0.385 12 1.75 0 0.1 6.27 4.16 1.6 +param Tl3+3 1.518 120 4.347 0.68 11 2.068 0 0.1 3.2 2.9 1.53 +param Pb3 1.459 109.47 4.297 0.663 12 2.846 0.1 0.1 3.9 3.53 1.444 +param Bi3+3 1.512 90 4.37 0.518 13 2.47 1 0.1 4.69 3.74 1.514 +param Po3+2 1.5 90 4.709 0.325 14 2.33 0.3 0.1 4.21 4.21 1.48 +param At 1.545 180 4.75 0.284 15 2.24 0 0.1 4.75 4.75 1.47 +param Rn4+4 1.42 90 4.765 0.248 16 0.583 0 0.1 5.37 5.37 2.2 +param Fr 2.88 180 4.9 0.05 12 1.847 0 0 2 2 2.3 +param Ra6+2 2.512 90 3.677 0.404 12 2.92 0 0 2.843 2.434 2.2 +param Ac6+3 1.983 90 3.478 0.033 12 3.9 0 0 2.835 2.835 2.108 +param Th6+4 1.721 90 3.396 0.026 12 4.202 0 0 3.175 2.905 2.018 +param Pa6+4 1.711 90 3.424 0.022 12 3.9 0 0 2.985 2.905 1.8 +param U_6+4 1.684 90 3.395 0.022 12 3.9 0 0 3.341 2.853 1.713 +param Np6+4 1.666 90 3.424 0.019 12 3.9 0 0 3.549 2.717 1.8 +param Pu6+4 1.657 90 3.424 0.016 12 3.9 0 0 3.243 2.819 1.84 +param Am6+4 1.66 90 3.381 0.014 12 3.9 0 0 2.9895 3.0035 1.942 +param Cm6+3 1.801 90 3.326 0.013 12 3.9 0 0 2.8315 3.1895 1.9 +param Bk6+3 1.761 90 3.339 0.013 12 3.9 0 0 3.1935 3.0355 1.9 +param Cf6+3 1.75 90 3.313 0.013 12 3.9 0 0 3.197 3.101 1.9 +param Es6+3 1.724 90 3.299 0.012 12 3.9 0 0 3.333 3.089 1.9 +param Fm6+3 1.712 90 3.286 0.012 12 3.9 0 0 3.4 3.1 1.9 +param Md6+3 1.689 90 3.274 0.011 12 3.9 0 0 3.47 3.11 1.9 +param No6+3 1.679 90 3.248 0.011 12 3.9 0 0 3.475 3.175 1.9 +param Lw6+3 1.698 90 3.236 0.011 12 3.9 0 0 3.5 3.2 1.9 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/mmff94.par.txt b/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/mmff94.par.txt new file mode 100755 index 000000000000..c933f4c8f60b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/data/mmff94.par.txt @@ -0,0 +1,5077 @@ +15. MMFFPBCI.PAR: This file supplies "partial-bond-charge-increment" + parameters used in the empirical rule employed to assign + missing bond-charge-increment parameters. It also specifies + the "formal-charge-sharing" parameters used to assemble the + MMFF94 partiial atomic charges for systems or groups + that have a negative formal charge. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF Partial Bond Charge Incs and Formal-Charge Adj. Factors: 19-MAY-1994 +* +* type pbci fcadj Origin/Comment +0 1 0.000 0.000 E94 +0 2 -0.135 0.000 E94 +0 3 -0.095 0.000 E94 +0 4 -0.200 0.000 E94 +0 5 -0.023 0.000 E94 +0 6 -0.243 0.000 E94 +0 7 -0.687 0.000 E94 +0 8 -0.253 0.000 E94 +0 9 -0.306 0.000 E94 +0 10 -0.244 0.000 E94 +0 11 -0.317 0.000 E94 +0 12 -0.304 0.000 E94 +0 13 -0.238 0.000 E94 +0 14 -0.208 0.000 E94 +0 15 -0.236 0.000 E94 +0 16 -0.475 0.000 E94 +0 17 -0.191 0.000 E94 +0 18 -0.118 0.000 E94 +0 19 0.094 0.000 E94 +0 20 -0.019 0.000 E94 +0 21 0.157 0.000 E94 +0 22 -0.095 0.000 E94 +0 23 0.193 0.000 E94 +0 24 0.257 0.000 E94 +0 25 0.012 0.000 E94 +0 26 -0.142 0.000 E94 +0 27 0.094 0.000 E94 +0 28 0.058 0.000 E94 +0 29 0.207 0.000 E94 +0 30 -0.166 0.000 E94 +0 31 0.161 0.000 E94 +0 32 -0.732 0.500 E94 +0 33 0.257 0.000 E94 +0 34 -0.491 0.000 E94 +0 35 -0.456 0.500 E94 +0 36 -0.031 0.000 E94 +0 37 -0.127 0.000 E94 +0 38 -0.437 0.000 E94 +0 39 -0.104 0.000 E94 +0 40 -0.264 0.000 E94 +0 41 0.052 0.000 E94 +0 42 -0.757 0.000 E94 +0 43 -0.326 0.000 E94 +0 44 -0.237 0.000 E94 +0 45 -0.260 0.000 E94 +0 46 -0.429 0.000 E94 +0 47 -0.418 0.000 E94 +0 48 -0.525 0.000 E94 +0 49 -0.283 0.000 E94 +0 50 0.284 0.000 E94 +0 51 -1.046 0.000 E94 +0 52 -0.546 0.000 E94 +0 53 -0.048 0.000 E94 +0 54 -0.424 0.000 E94 +0 55 -0.476 0.000 E94 +0 56 -0.438 0.000 E94 +0 57 -0.105 0.000 E94 +0 58 -0.488 0.000 E94 +0 59 -0.337 0.000 E94 +0 60 -0.635 0.000 E94 +0 61 -0.265 0.000 E94 +0 62 -0.125 0.250 E94 +0 63 -0.180 0.000 E94 +0 64 -0.181 0.000 E94 +0 65 -0.475 0.000 E94 +0 66 -0.467 0.000 E94 +0 67 -0.099 0.000 == 69 +0 68 -0.135 0.000 E94 +0 69 -0.099 0.000 E94 +0 70 -0.269 0.000 E94 +0 71 -0.071 0.000 E94 +0 72 -0.580 0.500 E94 +0 73 -0.200 0.000 E94 +0 74 -0.301 0.000 E94 +0 75 -0.255 0.000 E94 +0 76 -0.568 0.250 E94 +0 77 -0.282 0.000 E94 +0 78 -0.168 0.000 E94 +0 79 -0.471 0.000 == (65+66)/2 +0 80 -0.144 0.000 E94 +0 81 -0.514 0.000 E94 +0 82 -0.099 0.000 == 69 +0 83 0.000 0.000 Unused +0 84 0.000 0.000 Unused +0 85 0.000 0.000 Unused +0 86 0.000 0.000 Unused +0 87 2.000 0.000 Ionic charge +0 88 3.000 0.000 Ionic charge +0 89 -1.000 0.000 Ionic charge +0 90 -1.000 0.000 Ionic charge +0 91 -1.000 0.000 Ionic charge +0 92 1.000 0.000 Ionic charge +0 93 1.000 0.000 Ionic charge +0 94 1.000 0.000 Ionic charge +0 95 2.000 0.000 Ionic charge +0 96 2.000 0.000 Ionic charge +0 97 1.000 0.000 Ionic charge +0 98 2.000 0.000 Ionic charge +0 99 2.000 0.000 Ionic charge +$ +14. MMFFCHG.PAR: This file supplies bond-charge-increment parameters used to + construct MMFF94 partial atomic charges. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF BOND-CHARGE INCREMENTS - Rev: 26-OCT-94 Source: MMFF94 +* C94 - CORE MMFF94 parameter, obtained from fit to dipole moments +* #C94 - CORE MMFF94 parameter, either fixed or adjusted to fit +* HF/6-31G* interaction energies +* X94 - EXTD MMFF94 parameter, obtained from fit to dipole moments +* #X94 - EXTD MMFF94 parameter, fixed in the fit to dipole moments +* E94 - derived from partial bond charge increments (empirical rule) +* +* types bci Source +0 1 1 0.0000 #C94 +0 1 2 -0.1382 C94 +0 1 3 -0.0610 #C94 +0 1 4 -0.2000 #X94 +0 1 5 0.0000 #C94 +0 1 6 -0.2800 #C94 +0 1 8 -0.2700 #C94 +0 1 9 -0.2460 #C94 +0 1 10 -0.3001 C94 +0 1 11 -0.3400 #C94 +0 1 12 -0.2900 #C94 +0 1 13 -0.2300 #X94 +0 1 14 -0.1900 #X94 +0 1 15 -0.2300 #C94 +0 1 17 -0.1935 X94 +0 1 18 -0.1052 X94 +0 1 19 0.0805 X94 +0 1 20 0.0000 #C94 +0 1 22 -0.0950 E94 +0 1 25 0.0000 #X94 +0 1 26 -0.1669 X94 +0 1 34 -0.5030 C94 +0 1 35 -0.4274 X94 +0 1 37 -0.1435 C94 +0 1 39 -0.2556 C94 +0 1 40 -0.3691 C94 +0 1 41 0.1060 #C94 +0 1 43 -0.3557 X94 +0 1 45 -0.2402 X94 +0 1 46 -0.3332 X94 +0 1 54 -0.3461 C94 +0 1 55 -0.4895 C94 +0 1 56 -0.3276 C94 +0 1 57 -0.1050 E94 +0 1 58 -0.4880 E94 +0 1 61 -0.2657 X94 +0 1 62 -0.2000 #X94 +0 1 63 -0.1800 E94 +0 1 64 -0.1810 E94 +0 1 67 -0.0990 E94 +0 1 68 -0.2560 #C94 +0 1 72 -0.5500 #X94 +0 1 73 -0.0877 X94 +0 1 75 -0.2550 E94 +0 1 78 -0.1680 E94 +0 1 80 -0.1440 E94 +0 1 81 -0.5140 E94 +0 2 2 0.0000 #C94 +1 2 2 0.0000 #C94 +1 2 3 -0.0144 C94 +0 2 4 -0.0650 E94 +1 2 4 -0.0650 E94 +0 2 5 0.1500 #C94 +0 2 6 -0.0767 C94 +1 2 9 -0.1710 E94 +0 2 10 -0.1090 E94 +0 2 11 -0.1495 X94 +0 2 12 -0.1400 #X94 +0 2 13 -0.1100 #X94 +0 2 14 -0.0900 #X94 +0 2 15 -0.1010 E94 +0 2 17 -0.0560 E94 +0 2 18 0.0170 E94 +0 2 19 0.2290 E94 +0 2 20 0.1160 E94 +0 2 22 0.0400 E94 +0 2 25 0.1470 E94 +0 2 30 -0.0310 E94 +0 2 34 -0.3560 E94 +0 2 35 -0.3500 #X94 +1 2 37 0.0284 C94 +1 2 39 0.0310 E94 +0 2 40 -0.1000 #C94 +0 2 41 0.2500 #C94 +0 2 43 -0.1910 E94 +0 2 45 -0.2044 X94 +0 2 46 -0.2940 E94 +0 2 55 -0.3410 E94 +0 2 56 -0.3030 E94 +0 2 62 -0.0500 #X94 +1 2 63 -0.0450 E94 +1 2 64 -0.0460 E94 +1 2 67 0.0360 E94 +0 2 72 -0.4500 #X94 +1 2 81 -0.3790 E94 +1 3 3 0.0000 #C94 +1 3 4 -0.1050 E94 +0 3 5 0.0600 #C94 +0 3 6 -0.1500 #C94 +0 3 7 -0.5700 #C94 +0 3 9 -0.4500 #C94 +1 3 9 -0.2110 E94 +0 3 10 -0.0600 C94 +0 3 11 -0.2220 E94 +0 3 12 -0.2090 E94 +0 3 15 -0.1410 E94 +0 3 16 -0.3800 #X94 +0 3 17 -0.0960 E94 +0 3 18 -0.0230 E94 +0 3 20 0.0530 #C94 +0 3 22 0.0000 E94 +0 3 25 0.1070 E94 +1 3 30 -0.0710 E94 +0 3 35 -0.3610 E94 +1 3 37 0.0862 C94 +1 3 39 -0.0090 E94 +0 3 40 -0.0500 #C94 +0 3 41 0.1470 E94 +0 3 43 -0.2363 X94 +0 3 45 -0.1650 E94 +0 3 48 -0.4300 E94 +0 3 51 -0.9500 #X94 +0 3 53 -0.0134 X94 +0 3 54 -0.4000 #C94 +1 3 54 -0.3290 E94 +0 3 55 -0.3810 E94 +0 3 56 -0.3430 E94 +1 3 57 -0.0100 E94 +1 3 58 -0.3930 E94 +0 3 62 -0.0300 E94 +1 3 63 -0.0850 E94 +1 3 64 -0.0860 E94 +0 3 67 -0.0040 E94 +0 3 74 -0.3190 X94 +0 3 75 -0.2474 X94 +1 3 78 -0.0730 E94 +1 3 80 -0.0490 E94 +0 4 5 0.1770 E94 +0 4 6 -0.0430 E94 +0 4 7 -0.4870 E94 +0 4 9 -0.3000 E94 +1 4 9 -0.1060 E94 +0 4 10 -0.0440 E94 +0 4 15 -0.0360 E94 +0 4 20 0.1810 E94 +0 4 22 0.1050 E94 +0 4 30 0.0340 E94 +1 4 37 0.0730 E94 +0 4 40 -0.0640 E94 +0 4 42 -0.5571 X94 +0 4 43 -0.1260 E94 +1 4 63 0.0200 E94 +1 4 64 0.0190 E94 +0 5 19 0.2000 #X94 +0 5 20 0.0000 #C94 +0 5 22 -0.1000 #C94 +0 5 30 -0.1500 #C94 +0 5 37 -0.1500 #C94 +0 5 41 0.2203 C94 +0 5 57 -0.1500 #C94 +0 5 63 -0.1500 #C94 +0 5 64 -0.1500 #C94 +0 5 78 -0.1500 #C94 +0 5 80 -0.1500 #C94 +0 6 6 0.0000 #C94 +0 6 8 -0.1000 #C94 +0 6 9 -0.0630 E94 +0 6 10 0.0355 C94 +0 6 15 0.0070 E94 +0 6 17 0.0520 E94 +0 6 18 0.1837 X94 +0 6 19 0.2974 X94 +0 6 20 0.2579 C94 +0 6 21 0.4000 #C94 +0 6 22 0.1480 E94 +0 6 24 0.5000 #C94 +0 6 25 0.2712 X94 +0 6 26 0.1010 E94 +0 6 29 0.4500 #C94 +0 6 30 0.0770 E94 +0 6 33 0.5000 #X94 +0 6 37 0.0825 C94 +0 6 39 0.1390 E94 +0 6 40 -0.0210 E94 +0 6 41 0.2950 E94 +0 6 43 -0.0830 E94 +0 6 45 -0.0090 X94 +0 6 54 -0.1810 E94 +0 6 55 -0.2330 E94 +0 6 57 0.1380 E94 +0 6 58 -0.2450 E94 +0 6 63 0.0630 E94 +0 6 64 0.0620 E94 +0 7 17 0.5000 #X94 +0 7 46 0.1618 X94 +0 7 74 0.5000 #X94 +0 8 8 0.0000 #C94 +0 8 9 -0.0530 E94 +0 8 10 0.0090 E94 +0 8 12 -0.0510 E94 +0 8 15 0.0170 E94 +0 8 17 0.0620 E94 +0 8 19 0.3470 E94 +0 8 20 0.2096 C94 +0 8 22 0.1580 E94 +0 8 23 0.3600 #C94 +0 8 25 0.2679 X94 +0 8 26 0.1110 E94 +0 8 34 -0.2380 E94 +0 8 39 0.1490 E94 +0 8 40 -0.0110 E94 +0 8 43 -0.0730 E94 +0 8 45 -0.0070 E94 +0 8 46 -0.1760 E94 +0 8 55 -0.2230 E94 +0 8 56 -0.1850 E94 +0 9 9 0.0000 #C94 +0 9 10 0.0620 E94 +0 9 12 0.0020 E94 +0 9 15 0.0700 E94 +0 9 18 0.1880 E94 +0 9 19 0.4000 E94 +0 9 20 0.2870 E94 +0 9 25 0.3180 E94 +0 9 27 0.4000 #C94 +0 9 34 -0.1850 E94 +0 9 35 -0.1500 E94 +1 9 37 0.1790 E94 +1 9 39 0.2020 E94 +0 9 40 0.0420 E94 +0 9 41 0.3580 E94 +0 9 45 0.0460 E94 +0 9 53 0.3179 X94 +0 9 54 -0.1180 E94 +0 9 55 -0.1700 E94 +0 9 56 -0.1320 E94 +1 9 57 0.2010 E94 +0 9 62 0.1810 E94 +1 9 63 0.1260 E94 +1 9 64 0.1250 E94 +0 9 67 0.2070 E94 +1 9 78 0.1380 E94 +1 9 81 -0.2080 E94 +0 10 10 0.0000 #C94 +0 10 13 0.0060 E94 +0 10 14 0.0360 E94 +0 10 15 0.0080 E94 +0 10 17 0.0530 E94 +0 10 20 0.2250 E94 +0 10 22 0.1490 E94 +0 10 25 0.2560 E94 +0 10 26 0.1020 E94 +0 10 28 0.3700 #C94 +0 10 34 -0.2470 E94 +0 10 35 -0.2120 E94 +0 10 37 0.1170 E94 +0 10 39 0.1400 E94 +0 10 40 -0.0200 E94 +0 10 41 0.2960 E94 +0 10 45 -0.0160 E94 +0 10 63 0.0640 E94 +0 10 64 0.0630 E94 +0 11 20 0.2980 E94 +0 11 22 0.2317 X94 +0 11 25 0.3290 E94 +0 11 26 0.1750 E94 +0 11 37 0.1900 E94 +0 11 40 0.0530 E94 +0 12 15 0.0680 E94 +0 12 18 0.1860 E94 +0 12 19 0.3701 X94 +0 12 20 0.2900 #C94 +0 12 22 0.2273 X94 +0 12 25 0.3160 E94 +0 12 26 0.2112 X94 +0 12 37 0.1770 E94 +0 12 40 0.0400 E94 +0 12 57 0.1990 E94 +0 12 63 0.1240 E94 +0 12 64 0.1230 E94 +0 13 20 0.2190 E94 +0 13 22 0.1430 E94 +0 13 37 0.1110 E94 +0 13 64 0.0570 E94 +0 14 20 0.1890 E94 +0 14 37 0.0810 E94 +0 15 15 0.0000 #C94 +0 15 18 0.1180 E94 +0 15 19 0.3300 E94 +0 15 20 0.2170 E94 +0 15 22 0.1410 E94 +0 15 25 0.2480 E94 +0 15 26 0.0940 E94 +0 15 30 0.0700 E94 +0 15 37 0.1015 C94 +0 15 40 -0.0280 E94 +0 15 43 -0.0900 E94 +0 15 57 0.1310 E94 +0 15 63 0.0560 E94 +0 15 64 0.0550 E94 +0 15 71 0.1800 #C94 +0 16 16 0.0000 #C94 +0 17 17 0.0000 #X94 +0 17 20 0.1720 E94 +0 17 22 0.0960 E94 +0 17 37 0.0640 E94 +0 17 43 -0.1350 E94 +0 18 18 0.0000 #X94 +0 18 20 0.0990 E94 +0 18 22 0.0230 E94 +0 18 32 -0.6500 #X94 +0 18 37 -0.0090 E94 +0 18 39 0.0140 E94 +0 18 43 -0.1380 X94 +0 18 48 -0.5895 X94 +0 18 55 -0.3580 E94 +0 18 58 -0.3700 E94 +0 18 62 0.2099 X94 +0 18 63 -0.0620 E94 +0 18 64 -0.0630 E94 +0 18 80 -0.0260 E94 +0 19 19 0.0000 #X94 +0 19 20 -0.1130 E94 +0 19 37 -0.2210 E94 +0 19 40 -0.3580 E94 +0 19 63 -0.2740 E94 +0 19 75 -0.3490 E94 +0 20 20 0.0000 #C94 +0 20 22 -0.0760 E94 +0 20 25 0.0310 E94 +0 20 26 -0.1230 E94 +0 20 30 -0.1380 #C94 +0 20 34 -0.4720 E94 +0 20 37 -0.1080 E94 +0 20 40 -0.2450 E94 +0 20 41 0.0710 E94 +0 20 43 -0.3070 E94 +0 20 45 -0.2410 E94 +0 22 22 0.0000 #C94 +0 22 30 -0.0710 E94 +0 22 34 -0.3960 E94 +0 22 37 -0.0320 E94 +0 22 40 -0.1690 E94 +0 22 41 0.1470 E94 +0 22 43 -0.2310 E94 +0 22 45 -0.1650 E94 +0 23 39 -0.2700 #C94 +0 23 62 -0.4000 #X94 +0 23 67 -0.2920 E94 +0 23 68 -0.3600 #C94 +0 25 25 0.0000 #X94 +0 25 32 -0.7000 #X94 +0 25 37 -0.1390 E94 +0 25 39 -0.1160 E94 +0 25 40 -0.2760 E94 +0 25 43 -0.3380 E94 +0 25 57 -0.1170 E94 +0 25 63 -0.1920 E94 +0 25 71 -0.0362 X94 +0 25 72 -0.6773 X94 +0 26 26 0.0000 #X94 +0 26 34 -0.3490 E94 +0 26 37 0.0150 E94 +0 26 40 -0.1220 E94 +0 26 71 0.0960 X94 +0 28 40 -0.4000 #C94 +0 28 43 -0.4200 #X94 +0 28 48 -0.4000 #X94 +0 30 30 0.0000 #C94 +0 30 40 -0.0980 E94 +1 30 67 0.0670 E94 +0 31 70 -0.4300 #C94 +0 32 41 0.6500 #C94 +0 32 45 0.5200 #X94 +0 32 67 0.6330 E94 +0 32 68 0.7500 #C94 +0 32 69 0.7500 #C94 +0 32 73 0.3500 #X94 +0 32 77 0.4500 #X94 +0 32 82 0.6330 E94 +0 34 36 0.4500 #C94 +0 34 37 0.3640 E94 +0 34 43 0.1650 E94 +0 35 37 0.3290 E94 +0 35 63 0.2760 E94 +0 36 54 -0.4000 #C94 +0 36 55 -0.4500 #C94 +0 36 56 -0.4500 #C94 +0 36 58 -0.4570 E94 +4 36 58 -0.4500 #C94 +0 36 81 -0.4500 #C94 +0 37 37 0.0000 #C94 +1 37 37 0.0000 #C94 +0 37 38 -0.3100 #C94 +0 37 39 0.0230 E94 +1 37 39 0.0230 E94 +0 37 40 -0.1000 #C94 +0 37 41 0.1790 E94 +0 37 43 -0.1990 E94 +0 37 45 -0.1330 E94 +0 37 46 -0.3020 E94 +0 37 55 -0.3490 E94 +0 37 56 -0.3110 E94 +1 37 57 0.0220 E94 +0 37 58 -0.3610 E94 +1 37 58 -0.3610 E94 +4 37 58 -0.3500 #C94 +0 37 61 -0.1380 E94 +0 37 62 0.0020 E94 +0 37 63 0.0000 #C94 +1 37 63 -0.0530 E94 +0 37 64 0.0000 #C94 +1 37 64 -0.0540 E94 +1 37 67 0.0280 E94 +0 37 69 -0.0895 C94 +0 37 78 -0.0410 E94 +0 37 81 -0.3870 E94 +1 37 81 -0.3870 E94 +0 38 38 0.0000 #C94 +0 38 63 0.2570 E94 +0 38 64 0.2560 E94 +0 38 69 0.3380 E94 +0 38 78 0.2690 E94 +1 39 39 0.0000 #C94 +0 39 40 -0.1600 E94 +0 39 45 -0.1560 E94 +0 39 63 -0.1516 C94 +1 39 63 -0.0760 E94 +0 39 64 -0.0770 E94 +1 39 64 -0.0770 E94 +0 39 65 -0.4180 C94 +0 39 78 -0.0640 E94 +0 40 40 0.0000 #C94 +0 40 45 0.0040 E94 +0 40 46 -0.1650 E94 +0 40 54 -0.1600 E94 +0 40 63 0.0840 E94 +0 40 64 0.0830 E94 +0 40 78 0.0960 E94 +0 41 41 0.0000 #C94 +0 41 55 -0.5280 E94 +0 41 62 -0.1770 E94 +0 41 72 -0.5000 #X94 +0 41 80 -0.1960 E94 +0 42 61 0.4920 E94 +0 43 43 0.0000 #X94 +0 43 45 0.0660 E94 +0 43 64 0.1450 E94 +0 44 63 0.0400 #C94 +0 44 65 -0.2207 C94 +0 44 78 0.0690 E94 +0 44 80 0.0930 E94 +0 45 63 0.0800 E94 +0 45 64 0.0790 E94 +0 45 78 0.0920 E94 +0 47 53 0.3700 #X94 +0 49 50 0.5673 C94 +0 51 52 0.5000 #X94 +0 55 57 0.3544 C94 +0 55 62 0.3510 E94 +0 55 64 0.2950 E94 +0 55 80 0.3320 E94 +0 56 57 0.4000 #C94 +0 56 63 0.2580 E94 +0 56 80 0.2700 E94 +4 57 58 -0.4000 #C94 +1 57 63 -0.0750 E94 +1 57 64 -0.0760 E94 +0 58 63 0.3080 E94 +0 58 64 0.3070 E94 +0 59 63 0.1400 #C94 +0 59 65 -0.1209 C94 +0 59 78 0.1690 E94 +0 59 80 0.1930 E94 +0 59 82 0.2380 E94 +0 60 61 0.3700 #X94 +0 62 63 -0.0550 E94 +0 62 64 -0.0560 E94 +0 63 63 0.0000 #C94 +1 63 63 0.0000 #C94 +0 63 64 0.0000 #C94 +0 63 66 -0.3381 C94 +0 63 72 -0.4000 E94 +0 63 78 0.0120 E94 +0 63 81 -0.3340 E94 +0 64 64 0.0000 #C94 +0 64 65 -0.2888 C94 +0 64 66 -0.2272 C94 +0 64 78 0.0130 E94 +0 64 81 -0.3330 E94 +0 64 82 0.0820 E94 +0 65 66 0.0000 #C94 +0 65 78 0.3070 E94 +0 65 81 -0.0390 E94 +0 65 82 0.3760 E94 +0 66 66 0.0000 #C94 +0 66 78 0.2990 E94 +0 66 81 -0.0470 E94 +0 71 75 -0.0958 X94 +0 72 73 0.4500 #X94 +0 76 76 0.0000 #X94 +0 76 78 0.4000 #X94 +0 78 78 0.0000 #C94 +1 78 78 0.0000 #C94 +0 78 79 -0.3030 E94 +0 78 81 -0.3500 #C94 +0 79 81 -0.0430 E94 +0 80 81 -0.4000 #C94 +$ +8. MMFFANG.PAR: This file supplies parameters for angle-bending interactions. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF ANGLE PARAMETERS- Rev: 26-Oct-94 Source: MMFF94 +* C94 = CORE MMFF94 parameter - obtained from ab initio data +* X94 = EXTD MMFF94 parameter - fit to additional ab initio data +* E94 = theta0 from fit to X-ray data, ka from empirical rule +* #E94 = theta0 and ka both from empirical rules +* +* atom types ka theta0 Comment/origin +0 0 1 0 0.000 108.900 0:*-1-* MMFF94 DEF +0 1 1 1 0.851 109.608 C94 +0 1 1 2 0.736 109.445 C94 +0 1 1 3 0.777 107.517 C94 +0 1 1 4 1.006 110.265 E94 +0 1 1 5 0.636 110.549 C94 +0 1 1 6 0.992 108.133 C94 +0 1 1 8 0.777 108.290 C94 +0 1 1 9 1.136 108.194 E94 +0 1 1 10 1.050 109.960 C94 +0 1 1 11 1.225 108.313 C94 +0 1 1 12 1.056 108.679 C94 +0 1 1 13 1.078 106.820 E94 +0 1 1 14 0.980 109.945 E94 +0 1 1 15 0.743 107.397 C94 +0 1 1 17 1.089 108.578 E94 +0 1 1 18 1.093 109.315 E94 +0 1 1 19 0.755 115.436 E94 +0 1 1 20 1.021 108.659 E94 +0 1 1 22 1.001 110.125 E94 +0 1 1 25 0.803 112.356 X94 +0 1 1 26 0.833 109.879 E94 +0 1 1 34 1.179 106.493 C94 +0 1 1 37 0.756 108.617 C94 +0 1 1 39 0.927 109.170 C94 +0 1 1 40 1.130 108.678 E94 +0 1 1 41 0.330 98.422 C94 +0 1 1 43 1.135 108.019 E94 +0 1 1 45 1.197 105.028 E94 +0 1 1 54 1.173 106.424 E94 +0 1 1 55 1.150 107.604 E94 +0 1 1 56 1.199 110.371 C94 +0 1 1 57 1.012 109.900 E94 +0 1 1 58 1.179 106.327 E94 +0 1 1 61 1.125 109.311 E94 +0 1 1 63 1.006 110.058 E94 +0 1 1 64 0.988 111.064 E94 +0 1 1 67 1.216 104.557 E94 +0 1 1 68 1.018 107.195 C94 +0 1 1 73 1.160 104.658 E94 +0 1 1 78 1.012 109.850 E94 +0 1 1 80 0.947 113.327 E94 +0 1 1 81 1.108 109.837 E94 +0 2 1 2 1.113 111.453 C94 +0 2 1 3 0.667 104.829 C94 +0 2 1 4 1.022 109.873 E94 +0 2 1 5 0.632 110.292 C94 +0 2 1 6 1.074 108.699 C94 +0 2 1 8 0.884 111.553 C94 +0 2 1 9 1.118 109.577 E94 +0 2 1 10 1.160 107.963 E94 +0 2 1 11 1.192 110.419 E94 +0 2 1 12 1.070 109.410 E94 +0 2 1 15 1.078 109.560 E94 +0 2 1 17 1.077 109.434 E94 +0 2 1 18 1.188 105.110 E94 +0 2 1 20 1.053 107.448 E94 +0 2 1 22 0.942 114.020 E94 +0 2 1 25 0.893 106.815 E94 +0 2 1 26 1.029 99.065 E94 +0 2 1 34 1.066 111.817 E94 +0 2 1 37 0.985 111.446 E94 +0 2 1 39 1.124 109.513 E94 +0 2 1 40 1.149 108.270 E94 +0 2 1 45 1.232 103.978 E94 +0 2 1 63 0.935 114.692 E94 +0 2 1 67 1.224 104.687 E94 +0 3 1 3 0.974 111.746 E94 +0 3 1 4 1.019 109.850 E94 +0 3 1 5 0.650 108.385 C94 +0 3 1 6 0.528 104.112 C94 +0 3 1 8 1.197 105.837 E94 +0 3 1 9 1.201 105.535 E94 +0 3 1 10 0.634 102.655 C94 +0 3 1 11 1.189 110.328 E94 +0 3 1 12 1.136 106.064 E94 +0 3 1 13 1.147 103.645 E94 +0 3 1 14 1.048 106.404 E94 +0 3 1 15 1.125 107.192 E94 +0 3 1 17 1.092 108.602 E94 +0 3 1 18 1.120 108.119 E94 +0 3 1 20 0.969 111.830 E94 +0 3 1 22 0.999 110.522 E94 +0 3 1 26 0.742 116.555 E94 +0 3 1 34 1.141 107.871 E94 +0 3 1 37 1.011 109.833 E94 +0 3 1 39 1.136 108.751 E94 +0 3 1 40 1.174 106.941 E94 +0 3 1 41 1.033 108.216 E94 +0 3 1 45 1.221 104.281 E94 +0 3 1 63 1.069 107.077 E94 +0 3 1 64 1.028 109.186 E94 +0 3 1 81 1.167 107.327 E94 +0 4 1 4 0.954 114.186 E94 +0 4 1 5 0.615 111.417 X94 +0 4 1 6 1.273 109.977 E94 +0 4 1 8 1.099 111.063 E94 +0 4 1 9 1.187 106.750 E94 +0 4 1 10 1.117 110.488 E94 +0 4 1 13 1.021 110.047 E94 +0 4 1 15 1.028 112.432 E94 +0 4 1 18 1.187 105.351 E94 +0 4 1 22 1.174 102.556 E94 +0 4 1 26 0.853 108.999 E94 +0 4 1 34 1.148 108.160 E94 +0 4 1 37 0.993 111.424 E94 +0 5 1 5 0.516 108.836 C94 +0 5 1 6 0.781 108.577 C94 +0 5 1 8 0.653 110.297 C94 +0 5 1 9 0.733 109.894 C94 +0 5 1 10 0.740 107.646 C94 +0 5 1 11 0.875 107.897 C94 +0 5 1 12 0.698 108.162 C94 +0 5 1 13 0.613 106.049 E94 +0 5 1 14 0.508 113.019 E94 +0 5 1 15 0.576 109.609 C94 +0 5 1 17 0.634 107.944 X94 +0 5 1 18 0.663 106.855 X94 +0 5 1 19 0.450 113.195 X94 +0 5 1 20 0.706 111.000 C94 +0 5 1 22 0.618 110.380 E94 +0 5 1 25 0.487 109.486 X94 +0 5 1 26 0.466 111.172 X94 +0 5 1 34 0.872 106.224 C94 +0 5 1 35 0.644 125.663 X94 +0 5 1 37 0.627 109.491 C94 +0 5 1 39 0.811 106.299 C94 +0 5 1 40 0.719 109.870 C94 +0 5 1 41 0.525 108.904 C94 +0 5 1 43 0.692 109.083 X94 +0 5 1 45 0.741 105.197 X94 +0 5 1 46 0.719 106.735 X94 +0 5 1 54 0.874 106.973 C94 +0 5 1 55 0.861 108.507 C94 +0 5 1 56 0.814 108.223 C94 +0 5 1 57 0.626 110.420 E94 +0 5 1 58 0.750 105.481 E94 +0 5 1 61 0.710 109.227 X94 +0 5 1 62 0.655 113.035 X94 +0 5 1 63 0.621 110.467 E94 +0 5 1 64 0.622 110.457 E94 +0 5 1 67 0.732 106.474 E94 +0 5 1 68 0.748 103.817 C94 +0 5 1 72 0.547 116.576 X94 +0 5 1 73 0.633 107.153 X94 +0 5 1 78 0.640 109.078 E94 +0 5 1 80 0.684 105.144 E94 +0 5 1 81 0.721 107.870 E94 +0 6 1 6 1.156 111.368 C94 +0 6 1 8 1.333 112.223 E94 +0 6 1 9 1.224 116.950 E94 +0 6 1 10 1.432 108.568 E94 +0 6 1 11 1.593 106.900 E94 +0 6 1 15 1.273 112.012 E94 +0 6 1 17 1.348 108.655 E94 +0 6 1 19 0.906 117.214 E94 +0 6 1 20 1.293 108.202 E94 +0 6 1 22 1.287 108.913 E94 +0 6 1 25 1.171 103.598 E94 +0 6 1 26 0.888 118.433 E94 +0 6 1 34 1.257 114.975 E94 +0 6 1 37 0.878 107.978 C94 +0 6 1 39 1.485 106.464 E94 +0 6 1 40 1.371 110.779 E94 +0 6 1 41 1.333 106.467 E94 +0 6 1 45 1.523 104.438 E94 +0 6 1 57 1.308 108.467 E94 +0 6 1 63 1.351 106.535 E94 +0 6 1 64 1.238 111.308 E94 +0 8 1 8 1.203 110.856 E94 +0 8 1 9 1.133 114.080 E94 +0 8 1 10 1.258 108.683 E94 +0 8 1 12 1.217 107.251 E94 +0 8 1 15 1.120 112.356 E94 +0 8 1 20 1.116 109.353 E94 +0 8 1 25 1.143 98.698 E94 +0 8 1 34 1.138 113.412 E94 +0 8 1 37 1.090 110.992 E94 +0 8 1 39 1.364 104.193 E94 +0 8 1 40 0.964 123.962 E94 +0 8 1 41 1.234 103.868 E94 +0 8 1 43 1.137 113.596 E94 +0 8 1 45 1.583 96.139 E94 +0 8 1 57 1.038 114.266 E94 +0 8 1 63 1.104 110.598 E94 +0 8 1 64 1.156 108.127 E94 +0 9 1 10 1.209 110.720 E94 +0 9 1 12 1.173 109.152 E94 +0 9 1 15 1.024 117.465 E94 +0 9 1 25 1.060 102.432 E94 +0 9 1 37 1.077 111.565 E94 +0 9 1 40 1.084 116.728 E94 +0 9 1 80 1.163 107.509 E94 +0 10 1 10 1.191 111.995 E94 +0 10 1 15 1.161 110.502 E94 +0 10 1 17 1.269 105.509 E94 +0 10 1 20 1.220 104.838 E94 +0 10 1 22 1.132 109.262 E94 +0 10 1 25 1.015 104.822 E94 +0 10 1 37 1.107 110.423 E94 +0 10 1 40 1.264 108.536 E94 +0 10 1 41 1.087 110.961 E94 +0 10 1 57 1.268 103.622 E94 +0 11 1 11 1.638 106.081 C94 +0 11 1 15 1.254 109.517 E94 +0 11 1 20 1.243 107.637 E94 +0 11 1 25 1.244 97.532 E94 +0 11 1 34 1.338 108.669 E94 +0 11 1 35 1.556 110.367 E94 +0 11 1 37 1.151 112.278 E94 +0 11 1 41 1.301 105.053 E94 +0 11 1 45 1.550 100.991 E94 +0 11 1 73 1.303 106.569 E94 +0 11 1 75 0.884 114.378 E94 +0 12 1 12 1.096 110.422 C94 +0 12 1 15 1.146 111.064 E94 +0 12 1 18 1.299 104.827 E94 +0 12 1 19 0.932 108.971 E94 +0 12 1 20 1.081 108.605 E94 +0 12 1 22 1.097 108.028 E94 +0 12 1 25 0.989 106.118 E94 +0 12 1 37 1.076 109.030 E94 +0 12 1 39 1.150 110.359 E94 +0 12 1 45 1.353 101.430 E94 +0 12 1 63 1.071 109.474 E94 +0 12 1 64 1.093 108.338 E94 +0 13 1 13 1.093 111.645 E94 +0 13 1 20 1.084 106.534 E94 +0 13 1 22 1.068 107.469 E94 +0 13 1 45 1.305 101.383 E94 +0 14 1 20 1.021 107.718 E94 +0 15 1 15 1.147 111.896 E94 +0 15 1 25 1.059 103.308 E94 +0 15 1 34 1.222 107.318 E94 +0 15 1 37 1.051 110.959 E94 +0 15 1 40 1.149 111.005 E94 +0 15 1 41 1.263 100.981 E94 +0 15 1 63 1.060 110.596 E94 +0 15 1 64 1.059 110.703 E94 +0 15 1 73 1.289 105.029 E94 +0 17 1 37 1.065 110.049 E94 +0 18 1 20 1.121 107.960 E94 +0 18 1 22 1.283 101.125 E94 +0 18 1 37 1.203 104.390 E94 +0 18 1 45 1.287 105.273 E94 +0 18 1 64 1.093 109.683 E94 +0 19 1 54 0.772 119.506 E94 +0 20 1 20 1.229 99.084 E94 +0 20 1 37 1.052 107.428 E94 +0 20 1 45 1.169 106.335 E94 +0 22 1 22 0.990 111.226 E94 +0 22 1 25 0.885 107.293 E94 +0 22 1 34 1.045 112.940 E94 +0 22 1 37 1.037 108.586 E94 +0 22 1 45 1.182 106.181 E94 +0 25 1 25 0.551 127.138 E94 +0 25 1 34 0.779 119.271 E94 +0 25 1 37 0.784 113.945 E94 +0 25 1 40 1.062 102.417 E94 +0 25 1 58 0.916 110.234 E94 +0 26 1 26 0.625 118.700 E94 +0 34 1 34 1.216 109.167 E94 +0 34 1 37 1.075 111.275 E94 +0 34 1 41 1.048 112.238 E94 +0 34 1 63 1.077 111.412 E94 +0 34 1 73 1.142 110.240 E94 +0 37 1 37 0.986 111.315 E94 +0 37 1 40 1.129 109.188 E94 +0 37 1 43 1.074 111.478 E94 +0 37 1 45 1.259 102.800 E94 +0 37 1 57 0.981 112.047 E94 +0 37 1 64 1.175 102.239 E94 +0 37 1 68 1.100 109.983 E94 +0 37 1 78 1.005 110.638 E94 +0 37 1 81 1.176 107.040 E94 +0 39 1 39 1.260 108.547 E94 +0 40 1 40 1.182 112.005 E94 +0 40 1 55 1.322 105.786 E94 +0 40 1 63 1.032 114.505 E94 +0 40 1 64 1.000 116.376 E94 +0 41 1 41 1.082 105.400 E94 +0 41 1 63 1.061 107.112 E94 +0 41 1 81 1.093 110.553 E94 +0 45 1 45 1.391 102.088 E94 +0 0 2 0 0.000 119.400 0:*-2-* MMFF94 DEF +1 0 2 0 0.000 118.200 0:*-2-* MMFF94 DEF +2 0 2 0 0.000 120.800 2::*-2-* MMFF94 DEF +3 0 2 0 0.000 62.600 3::*-2-* MMFF94 DEF +6 0 2 0 0.000 60.500 6:*-2-* MMFF94 DEF +0 1 2 1 0.752 118.043 C94 +0 1 2 2 0.672 122.141 C94 +1 1 2 2 0.684 116.929 C94 +1 1 2 3 0.698 116.104 C94 +0 1 2 4 0.828 125.045 E94 +1 1 2 4 0.846 121.613 E94 +0 1 2 5 0.446 120.108 C94 +0 1 2 6 1.160 115.518 E94 +0 1 2 10 1.015 116.707 E94 +0 1 2 12 0.983 115.343 E94 +0 1 2 13 0.964 115.395 E94 +0 1 2 15 0.939 119.465 E94 +0 1 2 17 0.883 121.868 E94 +0 1 2 18 0.961 117.918 E94 +0 1 2 20 0.880 118.310 E94 +0 1 2 22 0.873 119.114 E94 +0 1 2 30 0.826 124.605 E94 +1 1 2 37 0.721 116.064 C94 +0 1 2 40 0.982 118.515 E94 +0 1 2 45 1.121 109.921 E94 +0 1 2 56 1.006 117.192 E94 +1 1 2 63 0.768 127.945 E94 +1 1 2 64 0.966 113.884 E94 +1 1 2 67 1.115 110.185 E94 +1 2 2 2 0.747 121.550 C94 +2 2 2 2 0.796 126.284 E94 +6 2 2 2 0.173 60.549 E94 +1 2 2 3 0.545 111.297 C94 +2 2 2 3 0.893 118.456 E94 +5 2 2 3 0.184 59.145 E94 +1 2 2 4 0.902 121.053 E94 +2 2 2 4 0.889 119.794 E94 +0 2 2 5 0.535 121.004 C94 +1 2 2 5 0.463 118.442 C94 +0 2 2 6 1.117 121.267 C94 +1 2 2 6 1.204 114.538 E94 +1 2 2 9 0.960 123.536 E94 +2 2 2 9 1.045 116.273 E94 +0 2 2 10 1.003 120.828 E94 +1 2 2 10 1.026 117.324 E94 +0 2 2 11 1.089 119.100 X94 +1 2 2 11 1.090 116.828 E94 +0 2 2 12 0.931 120.132 X94 +1 2 2 12 0.957 117.526 E94 +0 2 2 13 0.867 122.717 E94 +0 2 2 14 0.818 122.584 E94 +1 2 2 14 0.819 122.344 E94 +0 2 2 15 0.931 121.553 E94 +1 2 2 15 0.949 119.466 E94 +0 2 2 17 0.977 117.167 E94 +0 2 2 18 1.044 114.561 E94 +0 2 2 19 0.668 124.721 E94 +0 2 2 20 0.931 117.784 E94 +0 2 2 22 0.809 126.820 E94 +3 2 2 22 0.149 66.165 E94 +0 2 2 25 0.700 123.830 E94 +0 2 2 34 1.066 116.151 E94 +0 2 2 35 0.911 137.103 X94 +1 2 2 37 0.598 117.508 C94 +2 2 2 37 0.817 124.229 E94 +1 2 2 39 0.976 122.360 E94 +0 2 2 40 0.773 126.830 C94 +1 2 2 40 0.976 120.132 E94 +0 2 2 41 0.432 110.442 C94 +0 2 2 43 1.144 111.808 E94 +0 2 2 45 1.194 109.231 X94 +1 2 2 45 1.062 113.984 E94 +0 2 2 46 1.005 121.534 E94 +0 2 2 55 0.995 121.154 E94 +0 2 2 56 1.234 108.879 E94 +0 2 2 62 0.808 135.269 X94 +1 2 2 63 0.948 118.277 E94 +1 2 2 64 0.866 123.528 E94 +2 2 2 64 0.859 121.998 E94 +1 2 2 67 1.132 112.136 E94 +0 2 2 72 0.770 134.269 X94 +1 2 2 81 1.078 116.541 E94 +2 3 2 3 0.853 120.370 E94 +2 3 2 4 0.878 119.739 E94 +1 3 2 5 0.487 117.291 C94 +1 3 2 6 1.142 116.738 E94 +2 3 2 9 1.005 117.648 E94 +1 3 2 10 1.039 115.698 E94 +1 3 2 11 1.150 112.876 E94 +1 3 2 12 0.997 114.732 E94 +1 3 2 13 0.946 116.643 E94 +1 3 2 14 0.891 117.111 E94 +1 3 2 15 1.023 114.635 E94 +1 3 2 20 0.870 119.265 E94 +1 3 2 22 0.816 123.510 E94 +1 3 2 30 1.025 112.209 E94 +1 3 2 34 1.099 111.723 E94 +1 3 2 35 1.141 118.767 E94 +2 3 2 37 0.868 119.758 E94 +1 3 2 40 1.024 116.408 E94 +1 3 2 41 0.855 119.505 E94 +1 3 2 43 1.046 114.257 E94 +1 3 2 45 1.077 112.401 E94 +1 3 2 46 1.066 114.841 E94 +2 4 2 4 0.832 124.158 E94 +0 4 2 5 0.573 121.000 #E94 +1 4 2 5 0.545 120.000 #E94 +2 4 2 9 0.973 120.845 E94 +1 4 2 15 0.906 122.447 E94 +1 4 2 18 0.947 119.537 E94 +1 4 2 30 0.819 126.938 E94 +2 4 2 37 0.864 121.093 E94 +1 4 2 40 1.083 114.355 E94 +1 4 2 45 1.158 109.426 E94 +2 4 2 63 0.860 122.442 E94 +0 5 2 5 0.365 119.523 C94 +0 5 2 6 0.589 108.757 C94 +1 5 2 9 0.643 117.000 #E94 +0 5 2 10 0.667 114.859 E94 +0 5 2 11 0.795 108.186 X94 +0 5 2 12 0.622 110.650 X94 +0 5 2 13 0.566 113.513 E94 +0 5 2 15 0.546 119.562 E94 +0 5 2 17 0.492 124.000 #E94 +0 5 2 18 0.548 119.053 E94 +0 5 2 22 0.534 120.000 #E94 +0 5 2 25 0.395 124.000 #E94 +0 5 2 30 0.572 120.000 #E94 +0 5 2 35 0.682 124.164 X94 +1 5 2 37 0.491 117.423 C94 +1 5 2 39 0.655 115.724 E94 +0 5 2 40 0.568 112.322 C94 +0 5 2 41 0.294 123.706 C94 +0 5 2 45 0.728 107.774 X94 +0 5 2 55 0.651 116.000 #E94 +0 5 2 62 0.568 125.344 X94 +1 5 2 63 0.550 120.000 #E94 +1 5 2 64 0.546 120.000 #E94 +0 5 2 72 0.531 122.009 X94 +1 5 2 81 0.665 115.000 #E94 +1 6 2 9 1.214 120.520 E94 +0 6 2 10 1.311 115.921 E94 +0 6 2 22 1.080 120.560 E94 +0 6 2 35 1.172 132.391 E94 +1 6 2 37 1.198 114.441 E94 +0 6 2 40 1.239 119.073 E94 +0 6 2 45 1.637 102.438 E94 +1 9 2 10 1.098 119.802 E94 +1 9 2 15 0.915 127.574 E94 +2 9 2 37 0.981 119.536 E94 +1 9 2 40 0.922 130.521 E94 +0 10 2 12 1.144 112.723 E94 +0 10 2 15 1.078 117.519 E94 +0 10 2 25 1.144 100.818 E94 +1 10 2 37 1.021 117.139 E94 +0 10 2 40 0.988 126.034 E94 +0 10 2 41 0.951 120.000 E94 +0 12 2 12 1.012 119.105 E94 +0 12 2 17 1.110 114.206 E94 +0 12 2 18 1.201 110.553 E94 +0 12 2 19 0.704 126.646 E94 +0 12 2 20 0.903 120.563 E94 +0 12 2 30 0.892 122.753 E94 +1 12 2 37 0.976 116.136 E94 +0 12 2 45 1.076 115.543 E94 +0 13 2 18 1.132 113.616 E94 +0 15 2 15 0.996 123.027 E94 +0 15 2 35 0.950 133.654 E94 +1 15 2 37 1.007 115.757 E94 +0 15 2 40 0.895 128.924 E94 +0 17 2 17 1.051 117.955 E94 +1 18 2 37 1.183 106.608 E94 +0 22 2 22 0.841 122.108 E94 +3 22 2 22 0.180 58.963 E94 +1 22 2 37 0.806 124.693 E94 +1 30 2 37 0.849 123.816 E94 +1 35 2 37 0.991 128.032 E94 +0 40 2 40 0.949 128.436 E94 +0 40 2 56 1.072 120.987 E94 +1 40 2 63 0.922 124.268 E94 +1 40 2 64 0.955 121.881 E94 +0 40 2 72 0.820 135.317 E94 +0 45 2 45 1.284 108.095 E94 +2 64 2 64 0.888 120.342 E94 +0 0 3 0 0.000 117.300 0:*-3-* MMFF94 DEF +1 0 3 0 0.000 115.800 1:*-3-* MMFF94 DEF +4 0 3 0 0.000 90.800 4:*-3-* MMFF94 DEF +7 0 3 0 0.000 91.100 7:*-3-* MMFF94 DEF +8 0 3 0 0.000 88.900 7:*-3-* MMFF94 DEF +0 1 3 1 1.151 118.016 C94 +1 1 3 2 1.106 116.853 C94 +1 1 3 3 1.214 114.612 C94 +0 1 3 5 0.808 117.280 C94 +0 1 3 6 1.043 109.716 C94 +0 1 3 7 0.938 124.410 C94 +0 1 3 9 0.978 119.788 E94 +1 1 3 9 1.038 115.132 E94 +0 1 3 10 0.984 112.735 C94 +0 1 3 12 1.007 113.972 E94 +0 1 3 15 1.024 113.612 E94 +0 1 3 16 0.949 119.986 E94 +0 1 3 18 0.732 134.097 E94 +0 1 3 20 0.830 120.312 E94 +0 1 3 22 0.928 115.001 E94 +0 1 3 35 1.058 122.808 E94 +1 1 3 37 1.051 115.191 C94 +1 1 3 39 1.178 107.895 E94 +0 1 3 40 0.979 118.457 E94 +0 1 3 41 0.897 116.681 E94 +0 1 3 43 1.046 113.731 X94 +0 1 3 45 1.132 109.019 E94 +0 1 3 51 1.160 116.573 X94 +0 1 3 53 1.052 115.065 X94 +0 1 3 54 1.135 111.322 E94 +1 1 3 58 1.162 108.129 E94 +0 1 3 62 1.119 111.523 E94 +1 1 3 63 0.909 117.001 E94 +1 1 3 64 0.887 118.253 E94 +0 1 3 67 1.142 110.666 E94 +0 1 3 74 1.010 116.851 X94 +0 1 3 75 0.646 128.037 X94 +2 2 3 2 0.976 112.562 E94 +6 2 3 2 0.157 62.792 E94 +2 2 3 3 0.957 113.239 E94 +1 2 3 5 0.901 115.350 C94 +1 2 3 6 0.932 106.510 C94 +1 2 3 7 0.936 122.623 C94 +1 2 3 9 0.831 122.253 C94 +2 2 3 9 1.120 111.408 E94 +1 2 3 10 1.042 111.721 C94 +1 2 3 12 0.901 120.769 E94 +1 2 3 15 1.057 112.105 E94 +1 2 3 16 0.881 124.850 E94 +1 2 3 22 0.969 113.027 E94 +1 2 3 25 0.853 109.794 E94 +2 2 3 37 0.973 112.935 E94 +2 2 3 39 1.197 107.592 E94 +1 2 3 40 0.910 123.437 E94 +1 2 3 43 1.105 111.169 E94 +1 2 3 53 1.082 114.032 E94 +1 2 3 54 1.012 118.588 E94 +1 2 3 55 1.186 107.278 E94 +1 2 3 56 1.151 108.909 E94 +2 2 3 63 0.918 116.947 E94 +2 2 3 64 1.033 110.084 E94 +1 2 3 67 1.022 117.597 E94 +2 3 3 3 0.822 121.775 E94 +8 3 3 3 1.280 89.965 E94 +1 3 3 5 0.943 113.762 C94 +1 3 3 6 0.935 103.030 C94 +1 3 3 7 0.919 117.024 C94 +1 3 3 9 1.050 115.704 E94 +1 3 3 10 1.129 110.421 E94 +1 3 3 12 1.053 111.492 E94 +1 3 3 15 1.390 97.562 E94 +1 3 3 16 1.092 111.888 E94 +1 3 3 20 0.977 110.910 E94 +1 3 3 22 1.010 110.295 E94 +8 3 3 30 1.353 87.789 E94 +2 3 3 37 0.932 114.949 E94 +2 3 3 39 1.237 105.384 E94 +1 3 3 40 1.003 117.124 E94 +1 3 3 41 0.790 124.361 E94 +1 3 3 45 0.919 121.023 E94 +1 3 3 53 1.170 109.169 E94 +2 3 3 63 0.981 112.685 E94 +2 3 3 64 0.880 118.840 E94 +1 3 3 67 1.119 111.860 E94 +1 4 3 6 1.269 111.750 E94 +1 4 3 7 1.126 120.852 E94 +1 4 3 9 1.192 109.833 E94 +2 4 3 37 0.964 114.081 E94 +0 5 3 5 0.594 116.699 C94 +0 5 3 6 0.819 108.253 C94 +0 5 3 7 0.670 123.439 C94 +0 5 3 9 0.623 119.491 C94 +1 5 3 9 0.638 117.168 E94 +0 5 3 10 0.874 111.761 C94 +0 5 3 16 0.522 124.405 E94 +1 5 3 37 0.564 116.400 E94 +0 5 3 40 0.959 111.684 C94 +0 5 3 53 0.644 118.000 #E94 +0 5 3 54 0.816 115.471 C94 +1 5 3 63 0.559 118.000 #E94 +1 5 3 64 0.566 117.000 #E94 +0 5 3 67 0.700 113.698 E94 +0 6 3 6 1.678 109.094 E94 +0 6 3 7 1.155 124.425 C94 +0 6 3 9 1.275 119.478 E94 +1 6 3 9 1.416 111.868 E94 +0 6 3 10 1.405 112.187 E94 +0 6 3 16 1.269 116.317 E94 +0 6 3 20 1.182 113.581 E94 +4 6 3 20 1.495 93.130 E94 +0 6 3 22 1.276 110.826 E94 +7 6 3 30 1.530 93.191 E94 +1 6 3 37 0.808 102.881 C94 +1 6 3 39 1.611 104.655 E94 +0 6 3 40 1.371 113.565 E94 +0 6 3 41 1.477 102.658 E94 +0 6 3 43 1.330 114.183 E94 +0 6 3 48 1.315 115.328 E94 +0 6 3 51 1.409 120.427 E94 +0 6 3 54 1.495 110.510 E94 +0 6 3 62 1.421 112.542 E94 +1 6 3 63 1.339 109.082 E94 +1 6 3 64 1.267 111.993 E94 +1 6 3 80 1.256 113.698 E94 +1 7 3 9 1.147 127.084 E94 +0 7 3 10 0.907 127.152 C94 +0 7 3 12 0.984 130.049 E94 +0 7 3 15 1.101 123.313 E94 +0 7 3 20 0.713 129.492 C94 +0 7 3 22 1.093 121.851 E94 +1 7 3 30 0.972 129.010 E94 +1 7 3 37 0.734 119.968 C94 +1 7 3 39 1.352 116.727 E94 +0 7 3 41 1.281 112.087 E94 +0 7 3 43 1.163 124.549 X94 +0 7 3 48 1.114 127.879 E94 +1 7 3 54 1.288 114.184 E94 +0 7 3 55 1.258 120.056 E94 +0 7 3 56 1.175 123.854 E94 +1 7 3 58 1.323 117.081 E94 +0 7 3 62 1.129 129.349 E94 +1 7 3 63 1.036 126.456 E94 +1 7 3 64 1.071 124.133 E94 +1 7 3 78 0.955 132.047 E94 +1 9 3 9 1.119 120.094 E94 +2 9 3 9 1.021 124.131 E94 +0 9 3 10 1.105 120.697 E94 +1 9 3 10 1.154 116.608 E94 +0 9 3 12 1.056 118.046 E94 +0 9 3 15 1.036 119.679 E94 +1 9 3 15 1.042 118.787 E94 +1 9 3 16 0.936 127.665 E94 +0 9 3 17 1.035 117.902 E94 +0 9 3 18 1.121 114.698 E94 +0 9 3 20 0.951 120.437 E94 +0 9 3 22 1.040 116.861 E94 +0 9 3 25 0.955 109.442 E94 +0 9 3 35 1.054 134.470 E94 +1 9 3 37 0.997 119.569 E94 +2 9 3 37 1.060 114.740 E94 +0 9 3 40 0.844 128.078 C94 +1 9 3 40 1.018 124.152 E94 +0 9 3 41 1.114 112.513 E94 +0 9 3 45 1.497 102.140 E94 +2 9 3 54 1.244 108.056 E94 +1 9 3 57 1.038 118.096 E94 +1 9 3 63 1.004 120.054 E94 +1 9 3 64 1.053 117.060 E94 +1 9 3 80 0.959 124.150 E94 +0 10 3 10 1.612 114.923 C94 +0 10 3 15 1.167 112.206 E94 +0 10 3 16 1.005 123.150 E94 +0 10 3 18 1.299 106.052 E94 +0 10 3 20 1.019 115.213 E94 +4 10 3 20 1.338 92.724 E94 +0 10 3 22 1.076 113.651 E94 +7 10 3 30 1.438 90.508 E94 +0 10 3 35 1.223 122.649 E94 +1 10 3 37 1.101 112.495 E94 +1 10 3 39 1.434 104.419 E94 +0 10 3 40 1.093 119.697 E94 +0 10 3 43 1.144 115.929 E94 +0 10 3 51 1.375 114.685 E94 +0 10 3 55 1.286 109.590 E94 +0 10 3 56 1.200 113.168 E94 +1 10 3 63 1.075 114.623 E94 +1 10 3 64 1.098 113.233 E94 +1 10 3 78 1.182 109.543 E94 +0 11 3 40 1.296 113.244 E94 +0 11 3 75 0.850 120.964 E94 +0 12 3 40 1.095 115.284 E94 +1 12 3 63 0.965 117.217 E94 +0 12 3 74 1.110 116.502 E94 +0 15 3 15 1.109 115.620 E94 +0 15 3 16 0.981 124.329 E94 +0 15 3 17 1.191 110.607 E94 +0 15 3 18 1.061 118.034 E94 +4 15 3 20 1.345 91.041 E94 +1 15 3 30 1.026 113.753 E94 +1 15 3 37 1.037 113.305 E94 +0 15 3 40 1.066 117.388 E94 +1 15 3 57 0.896 122.260 E94 +0 15 3 67 1.407 102.583 E94 +0 15 3 74 1.076 119.117 E94 +1 16 3 30 0.991 117.695 E94 +0 16 3 35 1.030 130.230 E94 +1 16 3 37 0.934 121.415 E94 +1 16 3 39 1.004 123.196 E94 +0 16 3 62 0.963 126.347 E94 +1 16 3 63 1.006 117.454 E94 +1 16 3 64 1.064 114.110 E94 +0 17 3 17 0.939 123.528 E94 +1 18 3 37 0.948 118.188 E94 +4 20 3 20 1.495 94.800 C94 +4 20 3 22 1.286 89.459 E94 +7 20 3 37 1.282 89.733 E94 +4 20 3 43 1.384 90.526 E94 +0 22 3 22 0.932 115.334 E94 +4 22 3 22 1.496 83.915 E94 +1 22 3 37 0.940 114.995 E94 +1 25 3 37 0.677 123.404 E94 +0 25 3 67 0.661 131.520 E94 +2 37 3 37 0.933 115.566 E94 +1 37 3 40 0.987 118.790 E94 +1 37 3 41 0.864 119.565 E94 +1 37 3 43 1.125 110.383 X94 +1 37 3 45 1.120 110.268 E94 +1 37 3 54 1.033 117.645 E94 +1 37 3 62 1.085 114.132 E94 +2 37 3 63 0.934 116.163 E94 +2 37 3 64 0.955 114.701 E94 +1 37 3 67 1.084 114.460 E94 +2 39 3 39 1.231 112.582 E94 +0 40 3 40 1.146 117.002 C94 +1 40 3 63 0.888 126.089 E94 +1 40 3 64 1.145 110.889 E94 +0 40 3 75 0.790 122.163 E94 +0 45 3 53 1.382 105.849 E94 +1 55 3 64 1.267 104.747 E94 +2 64 3 64 0.989 113.280 E94 +0 0 4 0 0.000 180.000 0:*-4-* MMFF94 DEF +1 0 4 0 0.000 180.000 1:*-4-* MMFF94 DEF +0 1 4 4 0.423 180.000 E94 +0 1 4 42 0.463 180.000 E94 +0 2 4 2 0.442 180.000 E94 +1 2 4 4 0.432 180.000 E94 +0 2 4 30 0.444 180.000 E94 +1 2 4 42 0.474 180.000 E94 +1 3 4 4 0.427 180.000 E94 +1 3 4 42 0.469 180.000 E94 +0 4 4 5 0.281 180.000 E94 +0 4 4 6 0.551 180.000 E94 +0 4 4 10 0.486 180.000 E94 +1 4 4 37 0.430 180.000 E94 +0 7 4 9 0.648 180.000 E94 +1 9 4 42 0.537 180.000 E94 +0 15 4 42 0.487 180.000 E94 +0 20 4 42 0.469 180.000 E94 +0 22 4 42 0.472 180.000 E94 +1 37 4 42 0.472 180.000 E94 +0 42 4 43 0.541 180.000 E94 +1 42 4 63 0.474 180.000 E94 +1 42 4 64 0.473 180.000 E94 +0 0 6 0 0.000 110.400 0:*-6-* MMFF94 DEF +3 0 6 0 0.000 57.900 3::*-6-* MMFF94 DEF +4 0 6 0 0.000 90.200 4:*-6-* MMFF94 DEF +0 1 6 1 1.197 106.926 C94 +0 1 6 2 0.967 103.614 C94 +0 1 6 3 0.923 108.055 C94 +0 1 6 6 1.884 103.905 E94 +0 1 6 8 1.629 105.422 E94 +0 1 6 9 1.628 106.496 E94 +0 1 6 10 1.656 105.317 E94 +0 1 6 15 1.480 111.230 E94 +0 1 6 17 1.493 111.951 E94 +0 1 6 18 1.370 116.346 E94 +0 1 6 19 1.093 114.943 E94 +0 1 6 20 1.316 112.833 E94 +0 1 6 21 0.793 106.503 C94 +0 1 6 22 1.391 109.759 E94 +0 1 6 25 1.095 115.581 X94 +0 1 6 26 1.170 112.081 E94 +0 1 6 37 1.075 102.846 C94 +0 1 6 40 1.719 103.733 E94 +0 1 6 41 1.454 109.046 E94 +0 1 6 43 1.642 105.462 E94 +0 1 6 45 1.642 105.875 X94 +0 1 6 63 1.449 109.545 E94 +0 1 6 64 1.512 106.848 E94 +0 2 6 2 1.354 113.339 E94 +0 2 6 3 0.671 98.438 C94 +0 2 6 18 1.365 117.169 E94 +0 2 6 25 1.025 120.078 E94 +0 2 6 29 0.816 105.727 C94 +0 2 6 37 1.418 110.694 E94 +0 2 6 57 1.341 114.785 E94 +0 3 6 3 1.455 110.067 E94 +0 3 6 4 1.409 112.404 E94 +0 3 6 8 1.648 105.872 E94 +0 3 6 10 1.596 108.437 E94 +0 3 6 18 1.274 121.468 E94 +0 3 6 19 1.019 119.840 E94 +0 3 6 20 1.379 111.381 E94 +4 3 6 20 1.748 91.216 E94 +0 3 6 22 1.328 113.491 E94 +0 3 6 24 0.583 111.948 C94 +0 3 6 25 1.006 121.410 E94 +0 3 6 29 0.876 111.417 E94 +0 3 6 37 0.614 95.300 C94 +0 3 6 64 1.424 111.483 E94 +0 4 6 18 1.423 115.233 E94 +0 6 6 21 1.362 95.697 E94 +0 8 6 21 0.832 99.409 C94 +0 9 6 21 1.115 101.592 E94 +0 10 6 21 0.923 99.688 C94 +0 18 6 18 1.334 125.242 E94 +0 18 6 33 0.812 115.364 X94 +0 18 6 37 1.429 114.473 E94 +0 18 6 39 1.558 114.152 E94 +0 18 6 43 1.710 108.479 E94 +0 19 6 19 0.642 141.096 E94 +0 19 6 21 0.597 118.204 X94 +0 19 6 37 0.941 124.421 E94 +4 20 6 20 1.339 89.100 C94 +0 20 6 21 0.944 104.587 E94 +0 20 6 37 1.394 110.394 E94 +0 21 6 40 1.124 101.417 E94 +0 21 6 43 1.058 103.253 E94 +0 21 6 54 1.175 100.000 #E94 +0 21 6 55 1.139 101.000 #E94 +3 22 6 22 0.242 58.680 E94 +3 22 6 43 0.279 57.087 E94 +0 24 6 25 0.607 118.533 X94 +0 25 6 25 0.777 129.375 E94 +0 25 6 37 1.099 115.923 E94 +0 26 6 37 1.090 116.692 E94 +0 29 6 30 0.986 108.000 #E94 +0 29 6 37 0.726 105.409 C94 +0 29 6 64 0.923 108.922 E94 +0 37 6 37 1.462 108.967 E94 +0 37 6 58 1.607 108.274 E94 +0 0 8 0 0.000 110.400 0:*-8-* MMFF94 DEF +3 0 8 0 0.000 58.500 3::*-8-* MMFF94 DEF +4 0 8 0 0.000 95.000 4:*-8-* MMFF94 DEF +0 1 8 1 1.090 107.018 C94 +0 1 8 6 1.297 102.829 C94 +0 1 8 8 1.347 105.708 E94 +0 1 8 9 1.182 114.240 E94 +0 1 8 10 1.307 108.079 E94 +0 1 8 15 1.085 118.283 E94 +0 1 8 17 1.096 117.478 E94 +0 1 8 19 0.779 122.759 E94 +0 1 8 20 1.221 105.873 E94 +0 1 8 22 1.147 109.200 E94 +0 1 8 23 0.763 109.062 C94 +0 1 8 25 0.865 117.482 E94 +0 1 8 26 0.926 112.630 E94 +0 1 8 40 1.363 105.609 E94 +0 1 8 45 1.266 110.149 E94 +0 1 8 46 1.265 111.092 E94 +0 6 8 6 1.776 107.296 E94 +0 6 8 17 1.664 105.334 E94 +0 6 8 22 1.456 107.100 E94 +0 6 8 23 0.861 100.510 C94 +3 8 8 8 0.230 60.000 E94 +0 8 8 23 0.792 108.917 E94 +0 8 8 25 1.068 110.595 E94 +0 8 8 26 1.047 110.816 E94 +0 9 8 23 0.832 108.864 E94 +4 10 8 20 1.805 84.690 E94 +0 10 8 23 0.846 106.788 E94 +0 12 8 22 1.227 107.439 E94 +0 15 8 19 0.845 125.674 E94 +4 17 8 17 1.198 110.056 E94 +0 17 8 23 0.647 116.842 E94 +0 19 8 23 0.542 112.000 #E94 +4 20 8 20 1.103 90.370 C94 +0 20 8 23 0.684 113.359 C94 +3 22 8 22 0.209 57.087 E94 +0 22 8 23 0.697 110.033 E94 +0 22 8 25 0.896 115.361 E94 +0 23 8 23 0.595 105.998 C94 +0 23 8 25 0.510 117.000 #E94 +0 23 8 26 0.553 110.959 E94 +0 23 8 34 0.808 109.000 #E94 +0 23 8 39 0.757 111.820 E94 +0 23 8 40 0.819 108.120 E94 +0 23 8 43 0.857 106.222 E94 +0 23 8 55 0.868 106.000 #E94 +0 23 8 56 0.876 105.092 E94 +0 0 9 0 0.000 111.500 0:*-9-* MMFF94 DEF +1 0 9 0 0.000 109.100 1:*-9-* MMFF94 DEF +0 1 9 3 0.878 106.409 C94 +0 1 9 9 1.306 110.005 E94 +0 1 9 53 1.216 113.995 X94 +0 1 9 67 1.391 106.413 E94 +1 2 9 3 1.242 109.856 E94 +1 2 9 9 1.306 112.528 E94 +1 3 9 3 1.204 111.488 E94 +1 3 9 4 1.194 113.272 E94 +0 3 9 6 1.579 106.872 E94 +0 3 9 8 1.386 108.822 E94 +1 3 9 9 1.390 108.355 E94 +0 3 9 10 1.365 109.548 E94 +0 3 9 12 1.373 103.303 E94 +0 3 9 15 1.265 110.780 E94 +0 3 9 18 1.205 114.743 E94 +0 3 9 20 1.198 109.751 E94 +0 3 9 25 0.873 119.927 E94 +0 3 9 27 0.818 108.779 C94 +0 3 9 34 1.355 108.199 E94 +0 3 9 35 1.511 109.907 E94 +1 3 9 37 1.185 111.663 E94 +1 3 9 39 1.396 108.538 E94 +0 3 9 40 1.365 109.440 E94 +0 3 9 41 1.169 112.551 E94 +0 3 9 45 1.369 109.796 E94 +1 3 9 53 1.351 110.578 E94 +1 3 9 54 1.643 98.943 E94 +0 3 9 55 1.431 106.195 E94 +0 3 9 56 1.375 109.289 E94 +1 3 9 57 1.125 115.780 E94 +1 3 9 63 1.247 109.989 E94 +1 3 9 64 1.302 106.461 E94 +1 3 9 78 1.323 106.641 E94 +1 3 9 81 1.567 101.581 E94 +0 4 9 19 0.456 161.741 E94 +1 4 9 67 1.402 108.868 E94 +0 6 9 67 1.794 105.043 E94 +0 9 9 10 1.518 109.154 E94 +1 9 9 37 1.397 108.014 E94 +0 9 9 40 1.594 106.413 E94 +0 9 9 62 1.390 114.417 E94 +1 9 9 63 1.320 112.325 E94 +1 9 9 64 1.352 109.711 E94 +1 37 9 53 1.343 110.162 E94 +1 37 9 67 1.296 111.871 E94 +0 40 9 67 1.538 108.056 E94 +1 53 9 64 1.318 111.149 E94 +0 0 10 0 0.000 117.500 0:*-10-* MMFF94 DEF +3 0 10 0 0.000 58.900 3::*-10-* MMFF94 DEF +4 0 10 0 0.000 92.900 4:*-10-* MMFF94 DEF +0 1 10 1 1.117 117.909 C94 +0 1 10 2 1.004 118.916 E94 +0 1 10 3 0.821 119.600 C94 +0 1 10 6 1.179 108.865 C94 +0 1 10 8 1.137 116.189 E94 +0 1 10 9 1.132 117.005 E94 +0 1 10 10 1.247 111.009 E94 +0 1 10 17 1.014 122.388 E94 +0 1 10 20 0.960 119.679 E94 +0 1 10 25 0.745 125.390 E94 +0 1 10 28 0.552 120.066 C94 +0 1 10 37 1.038 116.332 E94 +0 1 10 39 1.060 120.838 E94 +0 1 10 40 1.194 113.314 E94 +0 1 10 41 1.031 118.033 E94 +0 1 10 45 1.268 109.599 E94 +0 1 10 63 0.949 122.185 E94 +0 1 10 64 0.960 121.315 E94 +0 2 10 2 1.146 112.878 E94 +0 2 10 3 1.000 120.703 E94 +0 2 10 6 1.405 111.609 E94 +0 2 10 20 1.132 111.544 E94 +0 2 10 28 0.638 118.553 E94 +0 2 10 37 0.977 121.506 E94 +0 3 10 3 0.709 120.274 C94 +0 3 10 4 0.864 130.236 E94 +0 3 10 6 0.960 110.133 C94 +0 3 10 8 1.168 116.075 E94 +4 3 10 8 1.527 93.608 E94 +0 3 10 9 1.174 116.443 E94 +0 3 10 10 1.184 115.377 E94 +0 3 10 13 0.998 118.867 E94 +0 3 10 14 0.871 124.162 E94 +0 3 10 15 1.076 118.969 E94 +0 3 10 17 1.132 116.612 E94 +0 3 10 20 0.936 122.540 E94 +4 3 10 20 1.371 93.349 E94 +0 3 10 22 0.975 120.929 E94 +0 3 10 25 0.794 122.157 E94 +0 3 10 26 0.848 117.912 E94 +0 3 10 28 0.575 120.277 C94 +0 3 10 34 1.251 112.201 E94 +0 3 10 35 1.395 112.633 E94 +0 3 10 37 1.023 118.596 E94 +0 3 10 40 1.216 113.680 E94 +0 3 10 41 1.098 115.913 E94 +0 3 10 45 1.212 113.447 E94 +0 3 10 63 1.091 115.381 E94 +0 3 10 64 1.048 117.574 E94 +0 4 10 20 0.816 131.702 E94 +0 6 10 28 0.829 113.214 E94 +0 6 10 37 1.393 111.476 E94 +0 8 10 28 0.703 117.160 E94 +0 8 10 37 1.167 115.599 E94 +0 9 10 26 0.847 123.206 E94 +0 9 10 28 0.751 114.501 E94 +0 9 10 37 1.222 113.553 E94 +0 9 10 39 1.310 115.309 E94 +0 10 10 28 0.735 114.715 E94 +0 10 10 41 1.237 113.743 E94 +0 15 10 28 0.614 119.033 E94 +4 20 10 20 1.381 91.694 E94 +0 20 10 28 0.555 123.394 E94 +0 20 10 37 1.006 117.703 E94 +3 22 10 22 0.202 58.894 E94 +0 22 10 28 0.605 119.583 E94 +0 25 10 28 0.447 122.785 E94 +0 28 10 28 0.435 115.630 C94 +0 28 10 34 0.757 113.000 #E94 +0 28 10 35 0.836 114.000 #E94 +0 28 10 37 0.628 118.227 E94 +0 28 10 40 0.754 113.000 #E94 +0 28 10 41 0.560 128.067 E94 +0 28 10 63 0.640 118.099 E94 +0 28 10 64 0.643 117.575 E94 +0 37 10 40 1.232 112.412 E94 +0 0 15 0 0.000 97.900 0:*-15-* MMFF94 DEF +4 0 15 0 0.000 80.200 4:*-15-* MMFF94 DEF +0 1 15 1 1.654 97.335 C94 +0 1 15 2 1.321 97.853 E94 +0 1 15 3 1.325 97.326 E94 +0 1 15 4 1.344 97.370 E94 +0 1 15 9 1.725 89.814 E94 +0 1 15 15 1.377 100.316 C94 +0 1 15 18 1.309 101.641 E94 +0 1 15 19 1.007 102.069 E94 +0 1 15 20 1.366 94.913 E94 +0 1 15 22 1.268 99.768 E94 +0 1 15 25 0.967 104.732 E94 +0 1 15 30 1.379 95.613 E94 +0 1 15 37 1.439 97.111 C94 +0 1 15 40 1.555 94.643 E94 +0 1 15 57 1.301 98.686 E94 +0 1 15 63 1.304 98.330 E94 +0 1 15 64 1.306 98.066 E94 +0 1 15 71 0.931 96.494 C94 +0 2 15 2 1.434 95.108 E94 +0 2 15 3 1.318 98.813 E94 +0 2 15 4 1.426 95.780 E94 +0 2 15 15 1.457 97.789 E94 +0 2 15 37 1.362 96.942 E94 +0 2 15 43 1.709 90.872 E94 +0 3 15 3 1.402 95.424 E94 +0 3 15 6 1.804 94.075 E94 +0 3 15 15 1.403 99.399 E94 +4 3 15 20 1.666 79.842 E94 +0 3 15 37 1.308 98.541 E94 +0 3 15 63 1.390 96.051 E94 +0 3 15 71 0.830 97.000 #E94 +0 6 15 37 1.679 97.231 E94 +0 8 15 8 1.444 105.143 E94 +0 8 15 37 1.446 98.976 E94 +0 9 15 9 1.626 98.524 E94 +0 9 15 64 1.504 97.105 E94 +0 10 15 15 1.415 103.715 E94 +0 12 15 37 1.428 97.534 E94 +0 15 15 15 1.413 104.893 E94 +0 15 15 18 1.563 99.173 E94 +0 15 15 37 1.361 100.790 E94 +0 15 15 64 1.332 102.040 E94 +0 15 15 71 0.787 99.239 C94 +4 20 15 30 1.978 73.428 E94 +0 20 15 37 1.361 95.589 E94 +0 25 15 25 0.947 99.505 E94 +4 25 15 25 1.030 87.982 E94 +0 25 15 26 1.002 96.851 E94 +0 25 15 37 1.172 95.428 E94 +0 26 15 37 1.144 96.710 E94 +4 30 15 30 1.732 79.546 E94 +0 37 15 37 1.295 98.802 E94 +0 37 15 63 1.379 96.197 E94 +0 37 15 64 1.286 99.423 E94 +0 37 15 71 0.813 96.222 C94 +0 71 15 71 0.734 93.377 C94 +0 0 17 0 0.000 99.400 0:*-17-* MMFF94 DEF +4 0 17 0 0.000 78.400 4:*-17-* MMFF94 DEF +0 1 17 1 1.415 93.266 X94 +0 1 17 2 1.387 94.732 E94 +0 1 17 3 1.430 92.852 E94 +0 1 17 6 1.863 92.132 E94 +0 1 17 7 1.408 107.104 X94 +0 1 17 8 1.661 91.498 E94 +0 1 17 10 1.547 94.839 E94 +0 1 17 20 1.453 91.368 E94 +0 1 17 22 1.423 92.591 E94 +0 1 17 37 1.376 94.911 E94 +0 2 17 2 1.313 97.901 E94 +0 2 17 7 1.478 105.412 E94 +0 2 17 43 1.207 108.882 E94 +0 3 17 7 1.513 103.431 E94 +0 6 17 6 2.164 97.766 E94 +0 6 17 7 1.850 107.431 E94 +0 7 17 8 1.438 113.808 E94 +0 7 17 10 1.525 110.549 E94 +0 7 17 20 1.442 104.737 E94 +0 7 17 22 1.449 104.928 E94 +0 7 17 37 1.500 104.313 E94 +4 8 17 20 1.891 78.354 E94 +0 8 17 37 1.687 91.169 E94 +0 37 17 37 1.487 91.633 E94 +0 0 18 0 0.000 104.600 0:*-18-* MMFF94 DEF +4 0 18 0 0.000 80.300 4:*-18-* MMFF94 DEF +0 1 18 1 1.230 101.166 X94 +0 1 18 2 1.264 100.420 E94 +0 1 18 3 1.242 100.883 E94 +0 1 18 6 1.744 95.671 X94 +0 1 18 9 1.438 99.465 E94 +0 1 18 20 1.224 101.315 E94 +0 1 18 22 1.207 101.417 E94 +0 1 18 32 1.446 107.066 X94 +0 1 18 37 1.234 101.070 E94 +0 1 18 43 1.449 98.014 X94 +0 1 18 48 1.277 106.586 X94 +0 1 18 62 1.374 102.402 X94 +0 2 18 2 1.254 101.492 E94 +0 2 18 6 1.664 98.668 E94 +0 2 18 9 1.539 96.849 E94 +0 2 18 32 1.422 108.979 E94 +0 2 18 37 1.263 100.489 E94 +0 2 18 48 1.083 116.668 E94 +0 3 18 9 1.418 100.361 E94 +0 3 18 32 1.557 103.453 E94 +0 3 18 43 1.350 101.747 E94 +0 6 18 6 1.922 103.052 X94 +0 6 18 9 1.916 97.446 E94 +0 6 18 32 1.837 108.063 X94 +0 6 18 37 1.528 102.229 E94 +0 6 18 43 1.644 103.815 E94 +0 9 18 12 1.464 101.180 E94 +0 9 18 32 1.583 109.945 E94 +0 9 18 37 1.358 102.378 E94 +0 9 18 43 1.323 109.227 E94 +0 12 18 32 1.584 103.959 E94 +0 12 18 37 1.376 98.976 E94 +0 15 18 32 1.497 107.170 E94 +0 15 18 37 1.324 101.399 E94 +0 20 18 32 1.383 109.292 E94 +0 20 18 37 1.108 106.508 E94 +4 20 18 43 1.831 80.297 E94 +0 22 18 32 1.465 105.247 E94 +0 32 18 32 1.569 120.924 X94 +0 32 18 37 1.497 105.280 X94 +0 32 18 39 1.804 101.600 X94 +0 32 18 43 1.569 108.548 X94 +0 32 18 48 1.229 126.841 X94 +0 32 18 55 1.509 112.548 E94 +0 32 18 58 1.592 106.139 E94 +0 32 18 62 1.326 121.426 X94 +0 32 18 63 1.571 103.212 E94 +0 32 18 64 1.634 101.771 E94 +0 32 18 80 1.400 110.401 E94 +0 37 18 37 1.157 104.380 E94 +0 37 18 39 1.404 99.854 X94 +0 37 18 43 1.416 99.200 X94 +0 37 18 48 1.330 104.466 E94 +0 37 18 55 1.397 100.926 E94 +0 37 18 62 1.178 110.665 E94 +0 37 18 63 1.202 102.735 E94 +0 43 18 43 1.545 99.905 X94 +0 43 18 64 1.285 104.868 E94 +0 0 19 0 0.000 108.700 0:*-19-* MMFF94 DEF +4 0 19 0 0.000 89.900 4:*-19-* MMFF94 DEF +0 1 19 1 0.616 113.339 E94 +0 1 19 5 0.390 110.795 X94 +0 1 19 6 0.777 113.958 X94 +0 1 19 8 0.716 111.521 E94 +0 1 19 9 0.779 106.380 E94 +0 1 19 12 0.729 108.947 X94 +0 1 19 20 0.656 108.828 E94 +0 1 19 40 0.754 108.858 E94 +0 1 19 63 0.699 106.924 E94 +0 1 19 75 0.530 111.633 E94 +0 2 19 12 0.819 102.981 E94 +0 5 19 5 0.258 108.699 X94 +0 5 19 6 0.520 109.677 X94 +0 5 19 8 0.461 109.070 E94 +0 5 19 12 0.446 106.756 X94 +0 6 19 6 1.051 111.280 E94 +0 6 19 12 0.968 106.022 E94 +0 6 19 37 0.870 108.096 E94 +0 8 19 8 0.862 108.099 E94 +0 8 19 12 0.786 110.683 E94 +0 12 19 12 0.879 104.597 E94 +0 15 19 15 0.816 108.681 E94 +4 20 19 20 0.802 89.931 E94 +0 37 19 37 0.726 105.045 E94 +0 0 20 0 0.000 113.200 0:*-20-* MMFF94 DEF +4 0 20 0 0.000 88.800 4:*-20-* MMFF94 DEF +0 1 20 1 0.943 113.131 E94 +0 1 20 3 0.906 114.940 E94 +0 1 20 5 0.417 114.057 C94 +0 1 20 6 1.231 110.677 E94 +0 1 20 8 1.080 111.090 E94 +0 1 20 10 1.100 110.057 E94 +0 1 20 11 1.173 110.993 E94 +0 1 20 12 0.976 114.773 E94 +0 1 20 15 1.035 111.226 E94 +0 1 20 18 0.978 115.383 E94 +0 1 20 20 0.502 113.313 C94 +0 1 20 22 0.915 115.201 E94 +0 1 20 25 0.744 116.096 E94 +0 1 20 26 0.721 117.611 E94 +0 1 20 30 0.908 115.220 E94 +0 1 20 34 1.090 110.505 E94 +0 1 20 37 0.947 112.650 E94 +0 1 20 41 0.973 111.787 E94 +0 1 20 43 1.087 110.187 E94 +0 1 20 45 1.132 108.074 E94 +0 2 20 3 0.982 111.060 E94 +0 2 20 5 0.596 113.035 E94 +0 2 20 6 1.139 115.851 E94 +0 2 20 12 0.951 116.750 E94 +0 2 20 20 0.931 114.138 E94 +0 3 20 3 0.982 109.919 E94 +0 3 20 5 0.624 112.989 C94 +0 3 20 6 1.157 113.611 E94 +4 3 20 8 1.473 87.271 E94 +0 3 20 10 1.016 113.988 E94 +0 3 20 11 1.184 109.849 E94 +0 3 20 12 0.969 114.891 E94 +0 3 20 13 1.008 110.951 E94 +0 3 20 20 0.849 118.273 E94 +4 3 20 20 1.524 88.961 C94 +0 3 20 34 1.137 107.667 E94 +4 3 20 37 1.382 85.619 E94 +0 3 20 43 0.960 116.707 E94 +0 4 20 5 0.584 115.078 E94 +0 4 20 20 0.920 115.312 E94 +0 5 20 5 0.439 109.107 C94 +0 5 20 6 0.818 111.352 C94 +0 5 20 8 0.728 114.011 C94 +0 5 20 9 0.657 112.826 E94 +0 5 20 10 0.663 112.010 E94 +0 5 20 12 0.339 114.117 C94 +0 5 20 15 0.562 114.339 E94 +0 5 20 17 0.561 113.000 #E94 +0 5 20 18 0.605 111.570 E94 +0 5 20 20 0.564 113.940 C94 +0 5 20 26 0.472 109.722 E94 +0 5 20 30 0.688 116.038 C94 +0 5 20 34 0.661 112.000 #E94 +0 5 20 37 0.552 115.670 E94 +0 5 20 40 0.682 111.331 E94 +0 5 20 43 0.655 111.686 E94 +0 6 20 6 1.443 114.408 E94 +0 6 20 10 1.225 116.666 E94 +0 6 20 13 1.162 114.868 E94 +0 6 20 20 1.109 116.117 E94 +4 6 20 20 1.433 93.413 C94 +0 6 20 22 1.106 117.205 E94 +0 6 20 30 1.144 114.705 E94 +4 6 20 30 1.658 87.873 E94 +0 8 20 20 1.185 105.606 E94 +4 8 20 20 1.486 91.244 C94 +0 8 20 26 0.874 111.782 E94 +0 9 20 20 1.103 109.640 E94 +0 10 20 15 1.170 109.525 E94 +0 10 20 17 1.127 110.564 E94 +0 10 20 18 1.404 100.845 E94 +0 10 20 20 1.032 113.170 E94 +4 10 20 20 1.468 87.497 E94 +4 10 20 30 1.507 86.657 E94 +0 10 20 37 0.963 117.360 E94 +0 11 20 11 1.504 108.020 E94 +0 11 20 17 1.221 109.460 E94 +0 11 20 20 1.051 116.673 E94 +0 11 20 30 0.997 120.309 E94 +0 12 20 12 1.020 117.603 E94 +0 12 20 19 0.973 105.821 E94 +0 12 20 20 0.866 118.108 C94 +0 12 20 30 0.887 120.399 E94 +0 13 20 13 1.077 113.361 E94 +0 13 20 20 0.938 115.037 E94 +0 14 20 20 0.837 112.888 E94 +0 15 20 15 1.094 114.048 E94 +0 15 20 20 1.058 109.793 E94 +4 15 20 20 1.324 90.483 E94 +0 15 20 30 0.960 115.468 E94 +4 15 20 30 1.447 86.726 E94 +4 17 20 17 1.309 94.977 E94 +0 17 20 20 0.930 116.108 E94 +0 18 20 20 1.007 113.480 E94 +4 18 20 20 1.355 90.185 E94 +0 18 20 41 1.241 102.656 E94 +0 19 20 19 0.567 122.298 E94 +4 19 20 19 0.921 88.477 E94 +0 20 20 20 1.008 108.644 E94 +4 20 20 20 1.149 90.294 C94 +0 20 20 22 0.840 119.817 E94 +4 20 20 22 1.364 86.669 E94 +4 20 20 25 1.181 84.818 E94 +0 20 20 30 0.994 109.745 E94 +4 20 20 30 1.399 85.303 C94 +0 20 20 34 1.069 111.143 E94 +4 20 20 34 1.382 90.128 E94 +0 20 20 37 0.833 119.709 E94 +4 20 20 37 1.346 86.810 E94 +0 20 20 40 1.097 110.254 E94 +0 20 20 41 0.922 114.408 E94 +0 20 20 43 0.964 116.540 E94 +4 20 20 43 1.290 92.879 E94 +0 20 20 45 1.083 110.090 E94 +0 22 20 22 0.866 118.829 E94 +4 22 20 22 1.649 79.399 E94 +4 26 20 26 0.789 96.811 E94 +0 26 20 34 0.843 113.805 E94 +0 34 20 41 1.070 111.943 E94 +0 37 20 43 0.954 117.365 E94 +0 0 22 0 0.000 116.100 0:*-22-* MMFF94 DEF +3 0 22 0 0.000 59.400 3::*-22-* MMFF94 DEF +4 0 22 0 0.000 91.600 4:*-22-* MMFF94 DEF +0 1 22 1 0.903 116.483 E94 +0 1 22 2 0.884 118.360 E94 +0 1 22 3 0.836 121.424 E94 +0 1 22 4 0.900 117.720 E94 +0 1 22 5 0.604 111.788 E94 +0 1 22 6 1.179 113.545 E94 +0 1 22 8 0.973 117.469 E94 +0 1 22 17 1.070 109.087 E94 +0 1 22 18 1.097 108.265 E94 +0 1 22 22 0.871 118.246 E94 +0 1 22 37 0.882 118.041 E94 +0 1 22 43 1.014 114.899 E94 +3 2 22 2 0.263 48.820 E94 +0 2 22 3 0.956 114.147 E94 +0 2 22 4 0.784 126.957 E94 +0 2 22 5 0.573 115.869 E94 +0 2 22 6 1.012 123.319 E94 +0 2 22 22 0.880 118.260 E94 +3 2 22 22 0.166 60.845 E94 +0 2 22 45 1.009 116.146 E94 +0 3 22 3 0.819 122.977 E94 +0 3 22 4 0.876 119.718 E94 +0 3 22 5 0.559 116.738 E94 +0 3 22 6 1.184 113.646 E94 +0 3 22 8 1.072 112.261 E94 +0 3 22 10 0.987 117.750 E94 +0 3 22 12 0.930 118.047 E94 +4 3 22 20 1.267 90.869 E94 +0 3 22 22 0.861 119.252 E94 +4 3 22 22 1.196 93.287 E94 +4 3 22 30 1.301 89.217 E94 +0 3 22 37 0.852 120.464 E94 +0 3 22 40 1.033 114.288 E94 +0 3 22 43 1.124 109.441 E94 +0 3 22 45 1.117 110.033 E94 +0 4 22 5 0.560 118.000 #E94 +0 4 22 6 1.200 113.650 E94 +0 4 22 8 0.966 119.034 E94 +0 4 22 15 0.931 120.455 E94 +0 4 22 22 0.877 118.890 E94 +0 4 22 45 1.089 112.227 E94 +0 5 22 5 0.242 114.938 C94 +0 5 22 6 0.683 117.836 E94 +0 5 22 8 0.621 115.758 E94 +0 5 22 10 0.658 113.806 E94 +0 5 22 11 0.776 108.296 X94 +0 5 22 12 0.620 109.865 X94 +0 5 22 20 0.623 110.000 #E94 +0 5 22 22 0.583 117.875 C94 +0 5 22 37 0.532 119.438 E94 +0 5 22 40 0.653 112.855 E94 +0 5 22 41 0.519 122.000 #E94 +0 5 22 43 0.658 112.128 E94 +0 5 22 45 0.665 112.000 #E94 +0 6 22 12 1.136 118.409 E94 +0 6 22 17 1.328 108.583 E94 +0 6 22 18 1.381 107.009 E94 +0 6 22 22 1.124 115.942 E94 +3 6 22 22 0.205 60.711 E94 +0 6 22 37 1.093 118.170 E94 +3 6 22 43 0.179 68.138 E94 +0 6 22 45 1.422 108.368 E94 +0 8 22 22 0.925 120.144 E94 +3 8 22 22 0.176 61.507 E94 +0 10 22 22 0.916 121.411 E94 +3 10 22 22 0.184 60.603 E94 +0 11 22 11 1.610 102.859 E94 +0 11 22 22 1.062 116.086 X94 +0 12 22 12 1.067 114.988 E94 +0 12 22 22 0.925 117.971 X94 +0 13 22 13 1.085 113.473 E94 +0 13 22 22 0.908 117.606 E94 +0 15 22 22 0.918 120.404 E94 +0 17 22 22 1.029 111.106 E94 +0 18 22 22 1.078 109.054 E94 +0 20 22 22 0.812 122.430 E94 +4 20 22 22 1.198 92.930 E94 +0 22 22 22 0.787 124.070 E94 +3 22 22 22 0.171 60.000 C94 +4 22 22 22 1.225 91.653 E94 +0 22 22 30 0.777 124.514 E94 +0 22 22 34 0.983 116.415 E94 +0 22 22 37 0.847 120.135 E94 +3 22 22 40 0.178 61.163 E94 +0 22 22 41 0.886 118.045 E94 +3 22 22 43 0.176 61.536 E94 +0 22 22 45 1.022 114.380 E94 +0 34 22 41 1.008 116.095 E94 +0 37 22 37 0.846 120.774 E94 +3 37 22 37 0.237 51.029 E94 +0 37 22 43 0.936 119.789 E94 +0 0 25 0 0.000 106.500 0:*-25-* MMFF94 DEF +4 0 25 0 0.000 89.100 4:*-25-* MMFF94 DEF +0 1 25 1 1.072 99.158 X94 +0 1 25 3 1.268 91.423 E94 +0 1 25 6 1.394 98.288 X94 +0 1 25 8 1.150 101.775 E94 +0 1 25 12 1.180 98.890 E94 +0 1 25 15 1.074 103.431 E94 +0 1 25 25 0.852 100.707 E94 +0 1 25 32 1.186 107.891 X94 +0 1 25 37 0.972 104.924 E94 +0 1 25 40 1.358 93.644 E94 +0 1 25 43 1.190 98.760 X94 +0 1 25 71 0.537 109.363 E94 +0 1 25 72 0.976 111.306 X94 +0 2 25 6 1.302 102.892 E94 +0 2 25 8 1.022 109.148 E94 +0 2 25 10 1.629 85.839 E94 +0 2 25 32 0.983 120.127 E94 +0 2 25 72 0.863 119.249 E94 +0 3 25 6 1.277 103.026 E94 +0 3 25 32 1.164 109.307 E94 +0 6 25 6 1.769 99.311 X94 +0 6 25 8 1.419 104.161 E94 +0 6 25 9 1.403 105.407 E94 +0 6 25 10 1.448 102.194 E94 +0 6 25 11 1.680 99.260 E94 +0 6 25 12 1.489 98.818 E94 +0 6 25 32 1.501 109.688 X94 +0 6 25 37 1.312 102.280 E94 +0 6 25 39 1.617 97.314 E94 +0 6 25 40 1.380 105.601 E94 +0 6 25 71 0.844 100.242 E94 +0 6 25 72 1.219 112.058 E94 +0 8 25 8 1.224 105.341 E94 +0 8 25 10 1.214 104.893 E94 +0 8 25 11 1.411 101.655 E94 +0 8 25 20 1.010 108.094 E94 +0 8 25 32 1.217 114.325 E94 +0 8 25 37 1.106 104.742 E94 +0 8 25 40 1.265 103.617 E94 +0 8 25 72 0.977 117.767 E94 +0 9 25 32 1.232 114.493 E94 +0 10 25 10 1.346 98.856 E94 +0 10 25 32 1.273 110.640 E94 +0 10 25 72 1.021 114.624 E94 +0 11 25 32 1.528 106.045 E94 +0 12 25 12 1.303 99.224 E94 +0 12 25 32 1.305 106.320 E94 +0 15 25 15 1.113 107.673 E94 +4 15 25 15 1.264 93.138 E94 +0 15 25 32 1.248 107.964 E94 +0 15 25 72 0.933 119.729 E94 +4 20 25 20 1.220 85.039 E94 +0 20 25 72 0.965 111.595 E94 +0 25 25 72 0.890 106.612 E94 +0 32 25 32 1.248 122.857 X94 +0 32 25 37 1.097 113.430 E94 +0 32 25 39 1.605 99.255 E94 +0 32 25 40 1.122 119.057 E94 +0 32 25 43 1.257 110.308 X94 +0 32 25 57 1.219 108.740 E94 +0 32 25 63 1.211 108.168 E94 +0 32 25 71 0.642 117.733 X94 +0 32 25 72 1.050 121.823 E94 +0 37 25 37 0.947 107.124 E94 +0 37 25 40 0.965 112.107 E94 +0 37 25 72 0.868 118.776 E94 +0 40 25 40 1.496 95.270 E94 +0 40 25 72 1.035 114.441 E94 +0 57 25 57 1.059 102.995 E94 +0 63 25 63 1.032 102.950 E94 +0 71 25 71 0.419 100.483 X94 +0 0 26 0 0.000 98.100 0:*-26-* MMFF94 DEF +4 0 26 0 0.000 83.600 4:*-26-* MMFF94 DEF +0 1 26 1 1.085 98.054 E94 +0 1 26 8 1.263 96.331 E94 +0 1 26 10 1.115 102.175 E94 +0 1 26 12 1.147 98.926 X94 +0 1 26 15 1.141 100.260 E94 +0 1 26 20 1.075 98.171 E94 +0 1 26 26 0.997 92.571 E94 +0 1 26 37 1.081 98.754 E94 +0 1 26 71 0.672 97.353 X94 +0 6 26 6 1.833 97.935 E94 +0 6 26 11 1.663 100.061 E94 +0 6 26 12 1.442 99.021 E94 +0 8 26 8 1.189 105.662 E94 +0 8 26 12 1.028 110.069 E94 +0 8 26 34 1.509 93.096 E94 +0 11 26 11 1.757 94.795 E94 +0 12 26 15 1.271 99.730 E94 +0 12 26 34 1.508 90.565 E94 +0 12 26 40 1.165 103.783 E94 +0 12 26 71 0.704 96.577 X94 +0 15 26 26 1.047 96.592 E94 +0 15 26 40 1.543 91.164 E94 +4 20 26 20 1.252 83.624 E94 +0 71 26 71 0.473 94.470 X94 +0 0 30 0 0.000 134.200 0:*-30-* MMFF94 DEF +1 0 30 0 0.000 131.800 1:*-30-* MMFF94 DEF +4 0 30 0 0.000 97.700 4:*-30-* MMFF94 DEF +7 0 30 0 0.000 92.300 7:*-30-* MMFF94 DEF +1 2 30 3 0.778 128.756 E94 +0 2 30 15 0.805 130.439 E94 +0 2 30 20 0.727 132.187 E94 +0 2 30 22 0.737 131.100 E94 +1 2 30 30 0.751 132.225 E94 +1 3 30 4 0.721 134.566 E94 +1 3 30 5 0.410 135.975 E94 +1 3 30 6 0.845 137.596 E94 +1 3 30 20 0.714 130.677 E94 +7 3 30 20 1.280 89.957 E94 +1 3 30 30 0.857 122.418 E94 +7 3 30 30 1.260 93.102 E94 +0 4 30 20 0.690 136.444 E94 +0 5 30 20 0.390 131.835 C94 +0 5 30 30 0.364 132.652 C94 +0 6 30 30 0.876 139.045 E94 +0 15 30 15 0.876 130.718 E94 +4 15 30 15 1.239 101.359 E94 +0 15 30 30 0.782 132.228 E94 +4 15 30 30 1.141 100.902 E94 +4 20 30 30 1.117 95.513 C94 +7 20 30 30 1.191 93.909 E94 +0 20 30 40 0.769 134.526 E94 +1 20 30 67 0.704 138.631 E94 +4 22 30 22 1.179 93.007 E94 +8 30 30 30 1.230 93.732 E94 +0 30 30 40 0.706 145.470 E94 +1 30 30 67 0.907 125.792 E94 +0 0 34 0 0.000 109.400 0:*-34-* MMFF94 DEF +4 0 34 0 0.000 89.400 4:*-34-* MMFF94 DEF +0 1 34 1 0.862 112.251 C94 +0 1 34 2 1.154 109.212 E94 +0 1 34 8 1.330 106.399 E94 +0 1 34 9 1.166 112.989 E94 +0 1 34 10 1.388 104.291 E94 +0 1 34 20 1.201 106.135 E94 +0 1 34 26 0.913 112.004 E94 +0 1 34 36 0.576 111.206 C94 +0 1 34 37 1.141 109.045 E94 +0 2 34 36 0.694 112.000 #E94 +0 8 34 36 0.796 109.753 E94 +0 9 34 36 0.793 108.649 E94 +0 10 34 36 0.828 108.000 #E94 +4 20 34 20 1.448 89.411 E94 +0 20 34 36 0.665 112.526 E94 +0 22 34 36 0.694 110.000 #E94 +0 36 34 36 0.578 107.787 C94 +0 36 34 37 0.717 108.668 E94 +0 36 34 43 0.840 108.000 #E94 +0 0 37 0 0.000 118.800 0:*-37-* MMFF94 DEF +1 0 37 0 0.000 115.900 1:*-37-* MMFF94 DEF +3 0 37 0 0.000 64.700 3::*-37-* MMFF94 DEF +4 0 37 0 0.000 91.800 4:*-37-* MMFF94 DEF +0 1 37 37 0.803 120.419 C94 +0 1 37 38 0.992 118.432 E94 +0 1 37 58 1.027 116.528 E94 +0 1 37 63 0.837 123.024 E94 +0 1 37 64 0.821 124.073 E94 +0 1 37 69 1.038 115.506 E94 +1 2 37 37 0.712 119.695 C94 +1 2 37 38 1.029 117.220 E94 +1 3 37 37 0.798 114.475 C94 +7 3 37 37 1.320 90.784 E94 +1 3 37 38 1.109 112.724 E94 +1 3 37 58 1.134 111.566 E94 +1 3 37 69 1.119 111.916 E94 +1 4 37 37 0.906 119.614 E94 +1 4 37 38 1.087 114.623 E94 +0 5 37 37 0.563 120.571 C94 +0 5 37 38 0.693 115.588 C94 +0 5 37 58 0.699 113.316 E94 +0 5 37 63 0.702 121.238 C94 +0 5 37 64 0.523 121.446 C94 +0 5 37 69 0.794 111.638 C94 +0 5 37 78 0.563 119.432 E94 +0 6 37 37 0.968 116.495 C94 +0 6 37 38 1.324 115.886 E94 +0 6 37 64 1.139 118.868 E94 +1 9 37 37 0.974 121.003 E94 +1 9 37 38 1.137 117.591 E94 +0 10 37 37 1.025 117.918 E94 +0 10 37 38 1.088 120.135 E94 +0 10 37 58 1.077 120.925 E94 +0 11 37 37 1.094 118.065 E94 +0 11 37 38 1.223 117.328 E94 +0 12 37 37 0.950 118.495 E94 +0 12 37 38 1.126 113.859 E94 +0 12 37 64 1.076 111.320 E94 +0 13 37 37 0.917 118.117 E94 +0 14 37 37 0.861 118.045 E94 +0 15 37 37 0.755 121.037 C94 +0 15 37 38 1.027 119.421 E94 +0 15 37 64 0.976 117.125 E94 +0 17 37 37 0.930 119.408 E94 +0 17 37 38 1.179 110.828 E94 +0 17 37 64 0.946 118.357 E94 +0 18 37 37 1.029 113.991 X94 +0 18 37 38 1.278 106.908 E94 +0 18 37 64 0.975 117.029 E94 +0 19 37 37 0.660 125.278 E94 +0 20 37 37 0.744 129.614 E94 +4 20 37 37 1.217 93.425 E94 +0 22 37 37 0.805 125.777 E94 +3 22 37 37 0.152 64.704 E94 +0 22 37 38 0.904 124.494 E94 +0 25 37 37 0.718 121.600 E94 +0 26 37 37 0.691 122.967 E94 +0 34 37 37 1.030 116.423 E94 +0 34 37 64 1.074 113.905 E94 +0 35 37 37 0.964 131.858 E94 +0 35 37 38 1.187 124.980 E94 +0 37 37 37 0.669 119.977 C94 +1 37 37 37 0.864 122.227 E94 +4 37 37 37 1.380 90.193 E94 +0 37 37 38 0.596 126.139 C94 +1 37 37 38 1.033 117.271 E94 +0 37 37 39 1.038 117.619 E94 +1 37 37 39 1.078 114.622 E94 +0 37 37 40 1.045 121.633 C94 +0 37 37 41 0.892 119.572 E94 +0 37 37 43 1.013 117.860 X94 +0 37 37 45 1.114 112.337 E94 +0 37 37 46 0.999 120.038 E94 +0 37 37 55 1.002 120.163 E94 +0 37 37 56 1.020 117.801 E94 +1 37 37 57 0.881 120.932 E94 +0 37 37 58 1.014 120.052 E94 +1 37 37 58 1.127 112.251 E94 +0 37 37 61 1.072 115.515 E94 +0 37 37 62 0.941 124.384 E94 +0 37 37 63 0.478 111.243 C94 +1 37 37 63 0.894 120.190 E94 +0 37 37 64 0.423 112.567 C94 +1 37 37 64 0.912 118.973 E94 +1 37 37 67 1.064 114.980 E94 +0 37 37 69 0.872 116.778 C94 +1 37 37 69 1.042 116.438 E94 +0 37 37 78 0.974 116.439 E94 +0 37 37 81 1.034 115.664 E94 +1 37 37 81 1.104 111.759 E94 +0 38 37 38 0.725 128.938 C94 +0 38 37 40 1.024 123.755 E94 +0 38 37 43 1.165 115.355 E94 +0 38 37 58 0.979 128.362 E94 +1 38 37 58 1.257 111.356 E94 +0 38 37 62 1.148 118.349 E94 +0 38 37 63 1.095 115.386 E94 +1 38 37 63 1.076 114.910 E94 +0 38 37 64 1.070 116.605 E94 +1 38 37 67 1.289 109.610 E94 +0 40 37 58 1.103 119.417 E94 +0 40 37 63 0.943 122.904 E94 +0 40 37 64 0.931 123.541 E94 +0 40 37 78 0.931 123.604 E94 +0 41 37 58 0.967 120.535 E94 +0 45 37 63 1.031 116.781 E94 +0 45 37 64 1.156 110.199 E94 +0 45 37 69 1.248 111.041 E94 +0 58 37 62 1.016 125.987 E94 +0 58 37 63 1.152 112.628 E94 +0 58 37 64 1.291 106.250 E94 +1 58 37 64 1.108 113.166 E94 +0 58 37 78 1.188 110.842 E94 +0 0 38 0 0.000 113.800 0:*-38-* MMFF94 DEF +0 37 38 37 1.085 115.406 C94 +0 37 38 38 1.289 112.016 C94 +0 37 38 63 1.230 110.181 E94 +0 37 38 64 1.207 111.032 E94 +0 37 38 69 1.238 114.692 E94 +0 37 38 78 1.118 114.813 E94 +0 38 38 38 1.343 118.516 E94 +0 0 39 0 0.000 120.700 0:*-39-* MMFF94 DEF +1 0 39 0 0.000 125.400 1:*-39-* MMFF94 DEF +0 1 39 63 0.854 123.380 C94 +0 1 39 65 1.111 118.049 E94 +1 2 39 63 0.858 130.275 E94 +1 2 39 65 0.900 133.220 E94 +1 3 39 63 0.900 127.045 E94 +1 3 39 65 1.126 118.909 E94 +0 6 39 63 1.166 122.985 E94 +0 6 39 65 1.396 117.707 E94 +0 8 39 63 1.000 124.868 E94 +0 8 39 65 1.057 127.145 E94 +1 9 39 63 0.981 127.725 E94 +1 9 39 65 1.170 122.487 E94 +0 10 39 63 1.109 119.788 E94 +0 10 39 65 1.118 124.961 E94 +0 18 39 63 1.108 117.061 X94 +0 23 39 63 0.551 127.770 C94 +0 23 39 65 0.752 118.352 C94 +0 23 39 78 0.581 124.000 #E94 +0 25 39 63 0.667 134.561 E94 +0 25 39 65 0.944 118.135 E94 +0 37 39 63 0.900 127.009 E94 +1 37 39 63 0.922 125.312 E94 +1 37 39 65 1.080 121.090 E94 +0 40 39 63 0.984 126.832 E94 +0 45 39 63 1.056 121.641 E94 +0 45 39 65 1.354 112.464 E94 +0 63 39 63 1.152 109.599 C94 +1 63 39 63 0.887 128.078 E94 +0 63 39 64 1.004 120.577 E94 +1 63 39 64 0.899 126.936 E94 +0 63 39 65 1.284 112.087 C94 +1 63 39 65 1.146 117.990 E94 +0 63 39 78 1.300 105.800 E94 +0 64 39 65 1.007 126.117 E94 +0 65 39 65 1.462 116.898 C94 +0 0 40 0 0.000 115.000 0:*-40-* MMFF94 DEF +3 0 40 0 0.000 57.800 3::*-40-* MMFF94 DEF +0 1 40 1 1.064 113.703 E94 +0 1 40 2 0.998 118.873 E94 +0 1 40 3 1.007 118.319 E94 +0 1 40 6 1.421 109.742 E94 +0 1 40 9 1.203 113.198 E94 +0 1 40 10 1.232 111.320 E94 +0 1 40 11 1.436 104.665 E94 +0 1 40 12 1.202 109.320 E94 +0 1 40 20 1.047 114.970 E94 +0 1 40 25 0.912 114.483 E94 +0 1 40 28 0.689 112.374 C94 +0 1 40 30 1.024 118.604 E94 +0 1 40 37 0.835 107.349 C94 +0 1 40 39 1.254 110.622 E94 +0 1 40 40 1.183 114.011 E94 +0 1 40 45 1.223 112.226 E94 +0 1 40 46 1.025 122.982 E94 +0 1 40 63 1.084 114.473 E94 +0 1 40 64 1.064 115.483 E94 +0 2 40 2 0.997 120.651 E94 +0 2 40 3 0.981 121.660 E94 +0 2 40 6 1.316 115.626 E94 +0 2 40 9 1.118 119.196 E94 +0 2 40 10 1.142 117.260 E94 +0 2 40 19 0.732 128.087 E94 +0 2 40 28 0.767 111.053 C94 +0 2 40 37 1.049 117.022 E94 +0 2 40 39 1.192 115.106 E94 +0 2 40 40 1.060 122.253 E94 +0 2 40 63 1.008 120.447 E94 +0 3 40 3 0.883 128.240 E94 +0 3 40 8 1.259 111.557 E94 +0 3 40 9 1.106 119.822 E94 +0 3 40 10 1.269 111.261 E94 +0 3 40 12 1.146 112.718 E94 +0 3 40 15 1.105 117.871 E94 +0 3 40 20 1.130 112.139 E94 +0 3 40 22 1.072 114.420 E94 +0 3 40 25 0.820 121.724 E94 +0 3 40 28 0.700 114.808 C94 +0 3 40 37 1.056 116.655 E94 +0 3 40 40 1.147 117.511 E94 +0 3 40 64 1.132 113.602 E94 +0 6 40 28 0.889 110.000 #E94 +0 8 40 28 0.764 111.915 E94 +0 8 40 37 1.216 112.920 E94 +0 8 40 63 1.351 108.085 E94 +0 9 40 28 0.774 112.549 E94 +0 9 40 37 1.236 112.751 E94 +0 10 40 28 0.799 109.725 E94 +0 10 40 37 1.316 108.686 E94 +0 11 40 37 1.546 101.687 E94 +0 15 40 15 1.154 121.497 E94 +3 22 40 22 0.204 57.777 E94 +0 22 40 37 1.066 114.220 E94 +0 22 40 63 1.126 112.006 E94 +0 25 40 28 0.485 120.000 #E94 +0 25 40 37 0.868 117.977 E94 +0 26 40 28 0.506 118.000 #E94 +0 26 40 37 0.812 122.336 E94 +0 28 40 28 0.560 109.160 C94 +0 28 40 30 0.656 119.230 E94 +0 28 40 37 0.662 110.288 C94 +0 28 40 39 0.789 110.951 E94 +0 28 40 40 0.782 111.731 E94 +0 28 40 45 0.674 120.000 #E94 +0 28 40 54 0.738 118.714 E94 +0 28 40 63 0.670 116.188 E94 +0 28 40 64 0.659 117.057 E94 +0 28 40 78 0.618 119.829 E94 +0 37 40 37 1.004 119.018 E94 +0 37 40 45 1.376 106.579 E94 +0 37 40 54 1.394 107.777 E94 +0 37 40 63 1.060 116.867 E94 +0 45 40 64 1.283 111.332 E94 +0 45 40 78 1.410 105.678 E94 +0 46 40 64 1.189 116.345 E94 +0 0 41 0 0.000 118.300 0:*-41-* MMFF94 DEF +0 1 41 32 1.209 114.689 C94 +0 1 41 72 1.024 114.936 X94 +0 2 41 32 1.309 115.461 C94 +0 3 41 32 1.210 114.810 E94 +0 5 41 32 0.912 113.960 C94 +0 6 41 72 1.319 113.899 E94 +0 9 41 72 1.089 117.795 E94 +0 10 41 72 1.039 121.240 E94 +0 20 41 32 1.090 120.965 E94 +0 22 41 32 1.079 122.748 E94 +0 32 41 32 1.181 130.600 C94 +0 32 41 37 1.136 118.871 E94 +0 32 41 41 1.401 107.694 E94 +0 37 41 72 1.035 114.919 E94 +0 55 41 72 0.982 123.972 E94 +0 62 41 72 1.052 120.425 E94 +0 72 41 72 0.912 130.128 X94 +0 72 41 80 1.094 112.175 E94 +0 0 43 0 0.000 113.300 0:*-43-* MMFF94 DEF +0 1 43 1 1.109 110.353 E94 +0 1 43 2 1.052 114.321 E94 +0 1 43 3 0.938 121.050 E94 +0 1 43 4 0.927 123.204 E94 +0 1 43 18 1.116 115.011 X94 +0 1 43 25 0.853 115.637 X94 +0 1 43 28 0.646 113.739 X94 +0 1 43 37 1.083 112.511 E94 +0 1 43 45 1.140 115.034 E94 +0 1 43 64 1.025 116.188 E94 +0 2 43 18 1.227 110.268 E94 +0 3 43 18 1.011 121.488 X94 +0 3 43 20 1.053 113.913 E94 +4 3 43 20 1.327 93.575 E94 +0 3 43 28 0.626 117.464 X94 +0 4 43 28 0.616 122.000 E94 +0 4 43 45 1.253 112.373 E94 +0 6 43 18 1.673 104.311 E94 +3 6 43 22 0.279 54.827 E94 +0 6 43 28 0.868 110.000 #E94 +0 6 43 37 1.519 105.833 E94 +0 6 43 43 1.603 108.652 E94 +0 8 43 18 1.511 104.036 E94 +0 8 43 28 0.794 110.320 E94 +0 15 43 15 1.558 103.008 E94 +0 15 43 18 1.409 108.458 E94 +0 17 43 18 1.367 111.904 E94 +0 18 43 18 1.144 120.463 E94 +0 18 43 20 0.961 123.768 E94 +4 18 43 20 1.451 92.867 E94 +0 18 43 22 1.171 112.379 E94 +0 18 43 28 0.628 116.881 X94 +0 18 43 34 1.324 111.347 E94 +0 18 43 37 1.185 112.132 X94 +0 18 43 43 1.379 109.036 E94 +0 18 43 64 1.108 116.279 E94 +0 20 43 28 0.626 115.000 #E94 +3 22 43 22 0.209 57.032 E94 +0 25 43 28 0.468 118.274 X94 +0 28 43 28 0.477 112.596 X94 +0 28 43 34 0.810 110.000 #E94 +0 28 43 37 0.669 113.350 X94 +0 28 43 64 0.658 115.293 E94 +0 0 44 0 0.000 91.600 0:*-44-* MMFF94 DEF +0 63 44 63 1.962 88.495 C94 +0 63 44 65 2.261 94.137 C94 +0 63 44 78 1.738 86.270 E94 +0 63 44 80 1.748 86.194 E94 +0 65 44 65 1.530 101.147 E94 +0 65 44 80 1.629 93.534 E94 +0 78 44 78 0.903 119.401 E94 +0 0 45 0 0.000 116.700 0:*-45-* MMFF94 DEF +0 1 45 32 1.260 118.182 X94 +0 2 45 32 1.294 118.082 X94 +0 3 45 32 1.343 115.589 E94 +0 6 45 32 1.787 111.682 X94 +0 8 45 32 1.515 115.695 E94 +0 9 45 32 1.339 123.850 E94 +0 10 45 32 1.578 112.194 E94 +0 20 45 32 1.245 118.893 E94 +0 22 45 32 1.293 117.503 E94 +0 32 45 32 1.467 128.036 X94 +0 32 45 37 1.298 117.857 E94 +0 32 45 39 1.715 107.633 E94 +0 32 45 40 1.497 116.432 E94 +0 32 45 43 1.545 113.711 E94 +0 32 45 63 1.335 116.765 E94 +0 32 45 64 1.330 116.908 E94 +0 32 45 78 1.394 114.962 E94 +0 0 46 0 0.000 111.000 0:*-46-* MMFF94 DEF +0 1 46 7 1.440 110.492 X94 +0 2 46 7 1.489 112.709 E94 +0 7 46 8 1.724 109.817 E94 +0 7 46 37 1.519 110.569 E94 +0 7 46 40 1.650 111.405 E94 +0 0 48 0 0.000 118.400 0:*-48-* MMFF94 DEF +0 3 48 18 1.065 122.928 E94 +0 18 48 28 0.736 113.969 X94 +0 0 49 0 0.000 111.400 0:*-49-* MMFF94 DEF +0 50 49 50 0.522 111.433 C94 +0 0 51 0 0.000 111.400 0:*-51-* MMFF94 DEF +0 3 51 52 0.913 111.360 X94 +0 0 53 0 0.000 180.000 0:*-53-* MMFF94 DEF +0 3 53 47 0.574 180.000 E94 +0 9 53 47 0.649 180.000 E94 +0 0 54 0 0.000 119.500 0:*-54-* MMFF94 DEF +1 0 54 0 0.000 115.700 1:*-54-* MMFF94 DEF +0 1 54 1 0.923 121.439 E94 +0 1 54 3 0.707 124.083 C94 +0 1 54 36 0.294 122.881 C94 +0 3 54 6 1.376 115.398 E94 +1 3 54 9 1.128 114.457 E94 +0 3 54 36 0.685 119.698 C94 +1 3 54 40 1.105 116.439 E94 +0 6 54 36 0.826 115.000 #E94 +0 9 54 40 1.195 123.403 E94 +0 36 54 36 0.300 113.943 C94 +0 0 55 0 0.000 120.800 0:*-55-* MMFF94 DEF +0 1 55 1 0.951 119.946 E94 +0 1 55 36 0.307 126.448 C94 +0 1 55 37 1.032 117.035 E94 +0 1 55 57 0.751 120.606 C94 +0 1 55 80 0.972 121.082 E94 +0 2 55 3 1.041 116.994 E94 +0 2 55 36 0.621 120.000 #E94 +0 2 55 57 1.047 118.847 E94 +0 3 55 9 1.053 121.298 E94 +0 3 55 36 0.567 124.000 #E94 +0 3 55 57 0.953 123.573 E94 +0 3 55 62 1.041 122.163 E94 +0 6 55 36 0.833 114.000 #E94 +0 6 55 57 1.408 112.958 E94 +0 8 55 36 0.656 122.000 #E94 +0 8 55 57 1.259 113.209 E94 +0 9 55 57 1.001 126.373 E94 +0 18 55 36 0.578 125.000 #E94 +0 18 55 57 1.054 122.320 E94 +0 36 55 36 0.355 117.729 C94 +0 36 55 37 0.623 120.405 E94 +0 36 55 41 0.485 134.689 E94 +0 36 55 57 0.663 119.499 C94 +0 36 55 64 0.632 118.000 #E94 +0 36 55 80 0.684 115.880 E94 +0 37 55 57 1.110 115.816 E94 +0 41 55 57 0.911 126.801 E94 +0 57 55 62 1.054 123.366 E94 +0 57 55 64 1.026 119.465 E94 +0 0 56 0 0.000 119.100 0:*-56-* MMFF94 DEF +0 1 56 36 0.472 123.585 C94 +0 1 56 57 0.774 119.267 C94 +0 2 56 9 1.181 116.311 E94 +0 2 56 36 0.582 124.037 E94 +0 2 56 57 1.029 118.607 E94 +0 3 56 36 0.585 121.521 E94 +0 3 56 57 0.885 126.567 E94 +0 8 56 36 0.785 111.009 E94 +0 8 56 57 1.288 110.357 E94 +0 9 56 36 0.683 120.258 E94 +0 9 56 57 1.186 115.661 E94 +0 36 56 36 0.450 117.534 C94 +0 36 56 37 0.602 120.000 #E94 +0 36 56 57 0.646 120.649 C94 +0 36 56 63 0.579 123.766 E94 +0 36 56 80 0.625 120.000 #E94 +0 37 56 57 1.058 115.912 E94 +0 57 56 63 1.019 118.915 E94 +0 0 57 0 0.000 120.900 0:*-57-* MMFF94 DEF +1 0 57 0 0.000 118.100 1:*-57-* MMFF94 DEF +0 1 57 55 1.017 117.865 E94 +1 3 57 55 1.085 115.034 E94 +0 5 57 55 0.674 116.747 C94 +0 6 57 55 1.279 119.257 E94 +1 9 57 55 0.980 128.143 E94 +0 12 57 55 1.058 118.327 E94 +0 15 57 55 0.983 123.646 E94 +0 25 57 55 0.790 122.889 E94 +1 37 57 55 0.967 121.379 E94 +0 55 57 55 0.855 126.476 C94 +1 55 57 63 1.016 118.800 E94 +1 55 57 64 1.039 117.166 E94 +0 56 57 56 1.342 120.010 C94 +0 0 58 0 0.000 119.000 0:*-58-* MMFF94 DEF +1 0 58 0 0.000 119.900 1:*-58-* MMFF94 DEF +0 1 58 37 1.003 119.236 E94 +0 1 58 64 0.961 121.070 E94 +1 3 58 37 0.983 121.506 E94 +0 6 58 37 1.371 114.370 E94 +0 18 58 37 1.005 120.665 E94 +0 36 58 37 0.650 118.713 E94 +0 36 58 63 0.650 118.000 #E94 +0 36 58 64 0.620 120.051 E94 +0 37 58 37 0.996 122.710 E94 +1 37 58 37 1.036 118.260 E94 +0 37 58 63 1.087 116.989 E94 +0 37 58 64 1.061 117.942 E94 +0 0 59 0 0.000 105.600 0:*-59-* MMFF94 DEF +0 63 59 63 1.273 106.313 C94 +0 63 59 65 1.750 107.755 C94 +0 63 59 78 1.713 101.179 E94 +0 63 59 80 1.599 105.341 E94 +0 65 59 65 1.754 107.683 E94 +0 65 59 78 1.644 107.142 E94 +0 65 59 82 1.864 103.624 E94 +0 0 61 0 0.000 180.000 0:*-61-* MMFF94 DEF +0 1 61 60 0.475 180.000 E94 +0 37 61 42 0.536 180.000 E94 +0 37 61 60 0.484 180.000 E94 +0 0 62 0 0.000 108.300 0:*-62-* MMFF94 DEF +0 1 62 18 1.316 109.273 X94 +0 2 62 23 0.817 105.542 X94 +0 3 62 3 1.318 106.821 E94 +0 3 62 18 1.311 111.144 E94 +0 3 62 55 1.528 102.414 E94 +0 9 62 18 1.515 107.660 E94 +0 18 62 37 1.229 114.618 E94 +0 18 62 41 1.366 108.722 E94 +0 18 62 63 1.427 106.284 E94 +0 18 62 64 1.317 110.366 E94 +0 0 63 0 0.000 123.300 0:*-63-* MMFF94 DEF +1 0 63 0 0.000 124.300 1:*-63-* MMFF94 DEF +0 1 63 39 0.935 121.832 E94 +0 1 63 44 0.902 122.101 E94 +0 1 63 59 1.175 115.253 E94 +0 1 63 64 0.737 131.378 E94 +0 1 63 66 0.865 127.610 E94 +1 2 63 39 1.027 117.864 E94 +1 2 63 59 0.987 127.524 E94 +1 2 63 64 0.730 133.818 E94 +1 2 63 66 0.828 132.383 E94 +1 3 63 39 0.900 125.395 E94 +1 3 63 44 0.935 120.481 E94 +1 3 63 59 1.158 117.219 E94 +1 3 63 64 0.766 130.065 E94 +1 3 63 66 0.950 123.049 E94 +1 4 63 44 0.848 126.602 E94 +1 4 63 59 1.211 114.804 E94 +1 4 63 64 0.795 127.817 E94 +0 5 63 39 0.617 121.127 C94 +0 5 63 44 0.393 126.141 C94 +0 5 63 59 0.784 114.076 C94 +0 5 63 64 0.577 131.721 C94 +0 5 63 66 0.643 125.134 C94 +0 5 63 78 0.482 130.000 #E94 +0 5 63 81 0.588 124.000 #E94 +0 6 63 39 1.234 120.509 E94 +0 6 63 59 1.564 113.514 E94 +0 6 63 64 0.951 131.301 E94 +1 9 63 39 1.068 121.741 E94 +1 9 63 44 0.963 124.598 E94 +1 9 63 64 0.804 134.237 E94 +1 9 63 66 0.912 133.020 E94 +0 10 63 39 1.084 120.356 E94 +0 10 63 44 1.112 115.732 E94 +0 10 63 59 1.307 116.218 E94 +0 10 63 64 0.867 128.750 E94 +0 10 63 66 0.981 127.617 E94 +0 12 63 39 1.111 114.439 E94 +0 12 63 44 1.035 119.321 E94 +0 12 63 64 0.838 126.226 E94 +0 12 63 66 0.980 122.280 E94 +0 15 63 39 1.064 117.958 E94 +0 15 63 44 0.952 125.654 E94 +0 15 63 64 0.813 129.284 E94 +0 15 63 66 0.962 124.490 E94 +0 18 63 44 1.110 116.077 E94 +0 18 63 64 0.740 135.028 E94 +0 19 63 39 0.647 132.369 E94 +0 19 63 64 0.517 141.986 E94 +0 25 63 39 0.597 139.439 E94 +0 25 63 66 0.776 122.699 E94 +0 35 63 59 1.351 124.475 E94 +0 35 63 64 0.808 145.098 E94 +0 37 63 39 1.011 132.046 C94 +1 37 63 39 0.934 123.481 E94 +0 37 63 44 0.764 133.930 E94 +1 37 63 44 0.915 121.637 E94 +0 37 63 59 1.041 124.836 E94 +1 37 63 59 1.214 114.211 E94 +0 37 63 64 0.679 122.881 C94 +1 37 63 64 0.742 131.784 E94 +0 37 63 66 0.742 140.668 E94 +1 37 63 66 0.871 128.130 E94 +0 38 63 39 1.022 124.814 E94 +0 38 63 64 0.910 126.513 E94 +0 39 63 39 0.910 131.461 E94 +1 39 63 39 1.105 119.174 E94 +0 39 63 40 1.112 119.261 E94 +1 39 63 44 1.144 114.126 E94 +0 39 63 45 1.166 115.115 E94 +1 39 63 57 0.931 123.222 E94 +0 39 63 58 1.042 123.231 E94 +1 39 63 63 0.949 122.353 E94 +0 39 63 64 0.813 107.255 C94 +1 39 63 64 0.943 123.441 E94 +0 39 63 66 1.012 110.865 C94 +1 39 63 66 1.095 120.834 E94 +0 40 63 44 0.943 125.881 E94 +0 40 63 59 1.298 117.078 E94 +0 40 63 64 0.845 130.865 E94 +0 40 63 66 0.940 130.926 E94 +0 44 63 45 1.125 114.633 E94 +0 44 63 56 1.030 120.178 E94 +0 44 63 62 0.991 122.899 E94 +1 44 63 63 0.894 123.341 E94 +0 44 63 64 0.853 108.480 C94 +0 44 63 66 0.854 114.516 C94 +0 44 63 72 0.915 129.129 E94 +0 44 63 78 1.217 106.254 E94 +0 44 63 81 1.278 108.400 E94 +0 45 63 59 1.467 108.824 E94 +0 45 63 64 0.940 122.725 E94 +0 45 63 66 1.164 116.157 E94 +0 56 63 66 0.875 134.888 E94 +1 57 63 66 0.945 123.246 E94 +0 58 63 64 0.965 122.522 E94 +0 59 63 64 1.035 110.108 C94 +0 59 63 66 1.181 115.592 C94 +0 62 63 66 0.976 128.662 E94 +1 63 63 64 0.776 129.499 E94 +1 63 63 66 0.929 124.689 E94 +0 66 63 72 0.911 129.610 E94 +0 0 64 0 0.000 121.400 0:*-64-* MMFF94 DEF +1 0 64 0 0.000 121.700 1:*-64-* MMFF94 DEF +0 1 64 63 0.776 128.041 E94 +0 1 64 64 0.766 128.061 E94 +0 1 64 65 0.963 120.640 E94 +0 1 64 66 0.952 120.685 E94 +0 1 64 81 1.050 114.735 E94 +0 1 64 82 1.013 117.414 E94 +1 2 64 63 0.861 122.947 E94 +1 2 64 64 0.816 125.433 E94 +1 2 64 65 0.907 125.781 E94 +1 2 64 66 1.010 118.540 E94 +1 2 64 82 0.923 124.473 E94 +1 3 64 63 0.828 124.890 E94 +1 3 64 64 0.774 128.286 E94 +1 3 64 65 0.973 120.954 E94 +1 3 64 66 0.949 121.821 E94 +1 3 64 81 0.995 118.754 E94 +1 4 64 63 0.845 123.889 E94 +1 4 64 64 0.804 126.131 E94 +1 4 64 65 1.036 117.401 E94 +1 4 64 66 1.010 118.254 E94 +0 5 64 63 0.501 126.170 C94 +0 5 64 64 0.546 127.405 C94 +0 5 64 65 0.664 118.412 C94 +0 5 64 66 0.699 120.478 C94 +0 5 64 78 0.482 127.331 E94 +0 5 64 81 0.605 120.000 #E94 +0 5 64 82 0.597 122.000 #E94 +0 6 64 63 1.112 120.985 E94 +0 6 64 64 1.043 123.922 E94 +0 6 64 65 1.348 115.506 E94 +0 6 64 66 1.156 123.890 E94 +1 9 64 64 0.959 120.924 E94 +1 9 64 65 1.098 119.529 E94 +1 9 64 66 1.013 123.743 E94 +0 10 64 63 0.937 123.695 E94 +0 10 64 64 0.893 125.735 E94 +0 10 64 65 1.016 124.788 E94 +0 10 64 66 1.065 121.125 E94 +0 12 64 63 0.845 126.259 E94 +0 12 64 64 0.869 124.058 E94 +0 12 64 65 1.020 120.198 E94 +0 12 64 66 0.971 122.900 E94 +0 13 64 63 0.845 123.004 E94 +0 13 64 64 0.883 120.111 E94 +0 15 64 63 0.870 124.581 E94 +0 15 64 64 0.882 123.309 E94 +0 15 64 65 1.008 121.049 E94 +0 15 64 66 0.990 121.826 E94 +0 18 64 65 1.065 118.404 E94 +0 18 64 66 1.067 118.002 E94 +0 37 64 63 0.906 117.966 C94 +0 37 64 64 0.854 136.087 C94 +1 37 64 64 0.772 128.673 E94 +0 37 64 65 0.799 134.844 E94 +1 37 64 65 0.942 122.866 E94 +0 37 64 66 0.845 130.337 E94 +0 37 64 78 0.706 135.432 E94 +0 37 64 81 0.917 124.856 E94 +0 37 64 82 0.946 123.684 E94 +1 37 64 82 1.000 119.086 E94 +0 38 64 63 0.988 121.242 E94 +0 38 64 64 0.858 129.014 E94 +0 38 64 65 0.989 127.335 E94 +0 38 64 66 1.022 124.454 E94 +0 39 64 64 1.086 114.312 E94 +0 39 64 65 1.060 122.481 E94 +1 39 64 65 1.204 114.188 E94 +1 39 64 66 1.170 115.157 E94 +0 40 64 63 0.948 123.538 E94 +0 40 64 64 0.928 123.853 E94 +0 40 64 65 0.958 129.125 E94 +0 40 64 81 1.035 123.154 E94 +0 40 64 82 1.183 115.934 E94 +0 43 64 63 0.885 126.749 E94 +0 43 64 64 0.898 124.876 E94 +0 43 64 65 1.024 123.706 E94 +0 43 64 66 1.017 123.409 E94 +0 45 64 63 0.981 120.063 E94 +0 45 64 64 0.921 123.014 E94 +0 45 64 65 1.276 110.521 E94 +0 45 64 66 1.199 113.371 E94 +0 55 64 64 0.907 124.405 E94 +0 55 64 65 1.002 125.220 E94 +1 57 64 65 1.020 117.950 E94 +1 57 64 66 0.959 121.017 E94 +0 58 64 63 1.075 115.646 E94 +0 58 64 64 0.815 131.812 E94 +0 58 64 66 0.978 126.562 E94 +0 62 64 64 0.885 126.560 E94 +0 62 64 65 1.073 121.703 E94 +0 63 64 64 0.866 108.239 C94 +1 63 64 64 0.827 124.584 E94 +0 63 64 66 1.038 111.621 C94 +0 63 64 78 1.172 105.176 E94 +0 63 64 81 1.164 110.895 E94 +0 63 64 82 1.395 101.902 E94 +0 64 64 64 0.967 115.037 E94 +0 64 64 65 0.916 113.570 C94 +1 64 64 66 1.003 118.067 E94 +0 64 64 78 1.194 103.479 E94 +0 64 64 82 1.210 108.553 E94 +0 65 64 66 1.055 115.369 C94 +0 65 64 81 1.168 116.240 E94 +0 66 64 66 0.932 129.624 E94 +0 0 65 0 0.000 104.500 0:*-65-* MMFF94 DEF +0 39 65 64 1.738 101.550 C94 +0 39 65 66 1.589 106.360 C94 +0 39 65 82 1.740 101.208 E94 +0 44 65 64 1.430 103.829 C94 +0 44 65 66 1.366 110.552 E94 +0 44 65 78 1.419 104.213 E94 +0 59 65 64 1.788 103.452 C94 +0 59 65 81 1.774 104.872 E94 +0 0 66 0 0.000 106.900 0:*-66-* MMFF94 DEF +0 63 66 64 1.206 103.779 C94 +0 63 66 66 1.406 106.735 C94 +0 63 66 78 1.339 105.365 E94 +0 63 66 81 1.408 106.806 E94 +0 64 66 65 1.709 107.658 C94 +0 65 66 66 1.932 111.306 C94 +0 0 67 0 0.000 119.900 0:*-67-* MMFF94 DEF +1 0 67 0 0.000 116.600 1:*-67-* MMFF94 DEF +0 1 67 3 0.982 120.683 E94 +0 1 67 9 1.178 115.581 E94 +0 1 67 32 1.233 119.589 E94 +0 1 67 67 1.257 111.574 E94 +1 2 67 32 1.118 126.320 E94 +1 2 67 67 1.231 113.438 E94 +0 3 67 23 0.567 128.000 #E94 +0 3 67 32 1.290 120.945 E94 +1 3 67 37 1.122 113.631 E94 +1 9 67 30 1.142 118.899 E94 +0 9 67 32 1.325 125.531 E94 +1 9 67 37 1.186 115.979 E94 +0 23 67 32 0.805 120.000 #E94 +1 30 67 32 1.370 114.854 E94 +1 32 67 37 1.240 120.019 E94 +0 32 67 67 1.504 117.327 E94 +1 37 67 67 1.310 110.017 E94 +0 0 68 0 0.000 108.800 0:*-68-* MMFF94 DEF +0 1 68 1 1.159 108.238 C94 +0 1 68 23 0.772 107.200 C94 +0 1 68 32 0.958 110.757 C94 +0 23 68 23 0.650 104.892 C94 +0 23 68 32 0.659 112.977 C94 +0 0 69 0 0.000 120.300 0:*-69-* MMFF94 DEF +0 32 69 37 1.123 121.777 C94 +0 32 69 38 1.486 117.217 E94 +0 37 69 37 1.223 116.447 C94 +0 38 69 38 1.122 125.930 E94 +0 31 70 31 0.658 103.978 C94 +0 0 73 0 0.000 106.600 0:*-73-* MMFF94 DEF +0 1 73 32 1.590 100.180 X94 +0 1 73 72 1.481 96.166 X94 +0 32 73 32 1.665 115.012 X94 +0 32 73 72 1.326 115.134 X94 +0 0 74 0 0.000 113.000 0:*-74-* MMFF94 DEF +0 3 74 7 1.357 113.010 X94 +0 0 75 0 0.000 94.900 0:*-75-* MMFF94 DEF +0 1 75 3 1.138 96.779 E94 +0 3 75 19 1.044 91.970 E94 +0 3 75 71 0.729 95.899 X94 +0 0 76 0 0.000 107.600 0:*-76-* MMFF94 DEF +0 76 76 76 1.434 109.889 X94 +0 76 76 78 1.493 103.519 X94 +0 78 76 78 1.235 109.421 E94 +0 0 77 0 0.000 109.500 0:*-77-* MMFF94 DEF +0 32 77 32 1.652 109.472 X94 +0 0 78 0 0.000 121.900 0:*-78-* MMFF94 DEF +1 0 78 0 0.000 126.100 1:*-78-* MMFF94 DEF +0 1 78 78 0.744 130.960 E94 +0 1 78 81 0.938 121.477 E94 +1 3 78 78 0.827 125.468 E94 +1 3 78 81 0.922 123.748 E94 +0 5 78 76 0.584 123.407 X94 +0 5 78 78 0.546 128.000 C94 +0 5 78 79 0.617 122.000 #E94 +0 5 78 81 0.542 109.881 C94 +1 9 78 78 0.863 129.501 E94 +1 9 78 81 0.991 125.857 E94 +0 37 78 76 0.770 137.282 E94 +0 37 78 78 0.803 128.249 E94 +0 37 78 81 0.864 128.714 E94 +0 38 78 78 0.844 130.617 E94 +0 38 78 81 1.023 123.532 E94 +0 39 78 64 0.734 138.714 E94 +0 39 78 78 1.202 109.426 E94 +0 40 78 76 0.930 130.150 E94 +0 40 78 78 0.778 135.746 E94 +0 40 78 81 1.058 121.251 E94 +0 44 78 63 0.677 141.902 E94 +0 44 78 64 0.663 142.589 E94 +0 44 78 66 0.816 134.701 E94 +0 44 78 78 1.089 111.702 E94 +0 45 78 76 1.199 114.467 E94 +0 45 78 78 0.915 125.050 E94 +0 45 78 81 1.216 112.926 E94 +0 59 78 64 0.963 128.471 E94 +0 59 78 65 1.097 128.375 E94 +0 59 78 78 1.443 105.916 E94 +0 63 78 64 0.942 117.779 E94 +0 64 78 65 0.835 131.530 E94 +0 64 78 78 1.038 111.834 E94 +0 66 78 78 1.030 118.376 E94 +0 76 78 76 1.245 113.179 X94 +0 76 78 78 1.159 111.900 E94 +0 78 78 78 1.336 99.459 E94 +0 78 78 81 1.302 105.130 C94 +0 79 78 81 1.217 114.792 E94 +0 0 79 0 0.000 103.400 0:*-79-* MMFF94 DEF +0 78 79 81 1.569 102.043 E94 +0 79 79 81 1.625 104.857 E94 +0 0 80 0 0.000 121.900 0:*-80-* MMFF94 DEF +1 0 80 0 0.000 128.200 1:*-80-* MMFF94 DEF +0 1 80 81 0.864 127.147 E94 +1 3 80 81 0.886 128.181 E94 +0 5 80 81 0.651 125.682 C94 +0 18 80 81 1.032 120.869 E94 +0 41 80 81 0.909 125.057 E94 +0 44 80 55 0.918 127.755 E94 +0 44 80 81 1.184 112.411 E94 +0 55 80 59 1.254 120.263 E94 +0 55 80 81 0.991 127.612 E94 +0 56 80 81 1.003 126.038 E94 +0 59 80 81 1.439 112.030 E94 +0 81 80 81 1.205 108.609 C94 +0 0 81 0 0.000 119.500 0:*-81-* MMFF94 DEF +0 1 81 63 0.996 120.129 E94 +0 1 81 64 0.978 119.970 E94 +0 1 81 78 0.879 126.535 E94 +0 1 81 79 1.144 116.113 E94 +0 1 81 80 0.895 126.324 E94 +1 2 81 78 0.927 125.080 E94 +1 2 81 80 0.895 128.399 E94 +1 9 81 78 1.015 124.270 E94 +1 9 81 80 1.106 120.028 E94 +0 36 81 64 0.522 130.295 E94 +0 36 81 66 0.583 128.738 E94 +0 36 81 78 0.578 124.658 C94 +0 36 81 80 0.575 124.787 C94 +0 37 81 64 0.929 122.408 E94 +1 37 81 64 0.983 119.722 E94 +0 37 81 65 1.184 114.158 E94 +1 37 81 65 1.281 110.477 E94 +1 37 81 78 0.884 126.208 E94 +1 37 81 80 0.940 123.333 E94 +0 63 81 64 1.115 114.945 E94 +0 64 81 65 1.075 122.099 E94 +0 64 81 80 1.143 113.176 E94 +0 66 81 80 1.067 122.250 E94 +0 78 81 80 0.957 110.556 C94 +0 79 81 80 1.379 107.936 E94 +0 32 82 59 1.666 114.660 E94 +0 32 82 64 1.075 131.706 E94 +0 32 82 65 1.238 129.293 E94 +0 59 82 64 1.563 105.660 E94 +0 64 82 65 1.281 112.955 E94 +$ +6. MMFFBNDK.PAR: This file supplies parameters employed in the empirical + rule used for bond-stretching force constants. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF BOND LENGTH, FORCE CONSTANT DEFAULT-RULE PARAMETERS +* C94 = Fitted to ab-initio derived core MMFF94 force constants +* E94 = Based on Herschberg/Laurie parameterization of Badger's rule +* +* species r0(ref) kb(ref) Source + 1 6 1.084 5.15 C94 + 1 7 1.001 7.35 C94 + 1 8 0.947 9.10 C94 + 1 9 0.92 10.6 E94 + 1 14 1.48 2.3 E94 + 1 15 1.415 2.95 C94 + 1 16 1.326 4.30 C94 + 1 17 1.28 4.3 E94 + 1 35 1.41 4.2 E94 + 1 53 1.60 2.7 E94 + 6 6 1.512 3.80 C94 + 6 7 1.439 4.55 C94 + 6 8 1.393 5.40 C94 + 6 9 1.353 6.20 C94 + 6 14 1.86 2.6 E94 + 6 15 1.84 2.7 E94 + 6 16 1.812 2.85 C94 + 6 17 1.781 2.75 C94 + 6 35 1.94 2.6 E94 + 6 53 2.16 1.4 E94 + 7 7 1.283 6.00 C94 + 7 8 1.333 5.90 C94 + 7 9 1.36 5.9 E94 + 7 14 1.74 3.7 E94 + 7 15 1.65 4.8 E94 + 7 16 1.674 3.75 C94 + 7 17 1.75 3.5 E94 + 7 35 1.90 2.9 E94 + 7 53 2.10 1.6 E94 + 8 8 1.48 3.6 E94 + 8 9 1.42 4.6 E94 + 8 14 1.63 5.2 E94 + 8 15 1.66 4.7 E94 + 8 16 1.470 9.90 C94 + 8 17 1.70 4.1 E94 + 8 35 1.85 3.4 E94 + 8 53 2.05 1.6 E94 + 9 14 1.57 6.4 E94 + 9 15 1.54 7.1 E94 + 9 16 1.55 6.9 E94 + 14 14 2.32 1.3 E94 + 14 15 2.25 1.5 E94 + 14 16 2.15 2.0 E94 + 14 17 2.02 3.1 E94 + 14 35 2.19 2.1 E94 + 14 53 2.44 1.5 E94 + 15 15 2.21 1.7 E94 + 15 16 2.10 2.4 E94 + 15 17 2.03 3.0 E94 + 15 35 2.21 2.0 E94 + 15 53 2.47 1.4 E94 + 16 16 2.052 2.50 C94 + 16 17 2.04 2.9 E94 + 16 35 2.24 1.9 E94 + 16 53 2.40 1.7 E94 + 17 17 1.99 3.5 E94 + 35 35 2.28 2.4 E94 + 53 53 2.67 1.6 E94 +$ +6. MMFFBOND.PAR: This file supplies parameters for bond-stretching + interactions. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF BOND PARAMETERS- Rev: 26-OCT-94 Source: MMFF94 +* C94 = CORE MMFF94 parameter - obtained from ab initio data +* X94 = EXTD MMFF94 parameter - fit to additional ab initio data +* E94 = r0 from fit to X-ray data, kb from empirical rule +* #C94 = r0 lies between C94 and E94 values, kb from empirical rule +* #X94 = r0 lies between X94 and E94 values, kb from empirical rule +* #E94 = r0 and k both from empirical rules +* +* types kb r0 Source +0 1 1 4.258 1.508 C94 +0 1 2 4.539 1.482 C94 +0 1 3 4.190 1.492 C94 +0 1 4 4.707 1.459 X94 +0 1 5 4.766 1.093 C94 +0 1 6 5.047 1.418 C94 +0 1 8 5.084 1.451 C94 +0 1 9 4.763 1.458 C94 +0 1 10 4.664 1.436 C94 +0 1 11 6.011 1.360 #C94 +0 1 12 2.974 1.773 C94 +0 1 13 2.529 1.949 E94 +0 1 14 1.706 2.090 E94 +0 1 15 2.893 1.805 C94 +0 1 17 2.841 1.813 X94 +0 1 18 3.258 1.772 X94 +0 1 19 2.866 1.830 #X94 +0 1 20 4.650 1.504 C94 +0 1 22 4.286 1.482 E94 +0 1 25 2.980 1.810 #X94 +0 1 26 2.790 1.830 #X94 +0 1 34 3.844 1.480 #C94 +0 1 35 7.915 1.307 X94 +0 1 37 4.957 1.486 C94 +0 1 39 6.114 1.445 C94 +0 1 40 4.922 1.446 C94 +0 1 41 3.830 1.510 #C94 +0 1 43 3.971 1.472 X94 +0 1 45 3.844 1.480 X94 +0 1 46 3.813 1.482 X94 +0 1 54 4.267 1.461 C94 +0 1 55 4.646 1.454 C94 +0 1 56 4.166 1.453 C94 +0 1 57 4.669 1.461 E94 +0 1 58 4.329 1.451 E94 +0 1 61 4.845 1.424 X94 +0 1 62 4.456 1.444 X94 +0 1 63 4.481 1.471 E94 +0 1 64 4.518 1.469 E94 +0 1 67 4.188 1.459 E94 +0 1 68 4.217 1.479 C94 +0 1 72 2.956 1.801 X94 +0 1 73 2.608 1.839 X94 +0 1 75 2.547 1.858 E94 +0 1 78 4.593 1.465 E94 +0 1 80 4.373 1.477 E94 +0 1 81 4.512 1.441 E94 +0 2 2 9.505 1.333 C94 +1 2 2 5.310 1.430 #C94 +1 2 3 4.565 1.468 C94 +0 2 4 9.538 1.297 E94 +1 2 4 5.657 1.415 E94 +0 2 5 5.170 1.083 C94 +0 2 6 5.520 1.373 C94 +1 2 9 6.385 1.360 E94 +0 2 10 6.329 1.362 E94 +0 2 11 6.283 1.350 #X94 +0 2 12 3.390 1.720 #X94 +0 2 13 3.413 1.854 E94 +0 2 14 2.062 2.025 E94 +0 2 15 3.896 1.720 E94 +0 2 17 3.247 1.773 E94 +0 2 18 3.789 1.728 E94 +0 2 19 3.052 1.811 E94 +0 2 20 4.593 1.465 E94 +0 2 22 4.926 1.448 E94 +0 2 25 3.750 1.742 E94 +0 2 30 8.166 1.331 E94 +0 2 34 5.207 1.407 E94 +0 2 35 10.343 1.250 #X94 +1 2 37 5.007 1.449 C94 +1 2 39 6.164 1.368 E94 +0 2 40 6.110 1.370 #C94 +0 2 41 3.746 1.505 C94 +0 2 43 4.928 1.420 E94 +0 2 45 4.725 1.430 #X94 +0 2 46 7.466 1.325 E94 +0 2 55 6.164 1.368 E94 +0 2 56 6.246 1.365 E94 +0 2 62 7.105 1.336 X94 +1 2 63 6.030 1.400 E94 +1 2 64 5.754 1.411 E94 +1 2 67 4.685 1.432 E94 +0 2 72 4.179 1.700 #X94 +1 2 81 6.357 1.361 E94 +1 3 3 4.418 1.489 C94 +1 3 4 5.135 1.438 E94 +0 3 5 4.650 1.101 C94 +0 3 6 5.801 1.355 C94 +0 3 7 12.950 1.222 C94 +0 3 9 10.077 1.290 C94 +1 3 9 6.273 1.364 E94 +0 3 10 5.829 1.369 C94 +0 3 11 6.570 1.340 E94 +0 3 12 3.449 1.715 E94 +0 3 15 3.536 1.748 E94 +0 3 16 4.735 1.665 E94 +0 3 17 2.888 1.808 E94 +0 3 18 3.394 1.760 E94 +0 3 20 3.298 1.530 C94 +0 3 22 4.593 1.465 E94 +0 3 25 3.164 1.792 E94 +1 3 30 4.481 1.471 E94 +0 3 35 11.012 1.237 E94 +1 3 37 4.488 1.457 C94 +1 3 39 5.978 1.375 E94 +0 3 40 6.110 1.370 #C94 +0 3 41 4.286 1.482 E94 +0 3 43 4.928 1.420 X94 +0 3 45 4.531 1.440 E94 +0 3 48 5.412 1.398 E94 +0 3 51 8.562 1.290 #X94 +0 3 53 7.637 1.320 #X94 +0 3 54 10.333 1.280 C94 +1 3 54 2.771 1.563 E94 +0 3 55 4.886 1.422 E94 +0 3 56 4.907 1.421 E94 +1 3 57 5.492 1.422 E94 +1 3 58 5.163 1.409 E94 +0 3 62 7.568 1.322 E94 +1 3 63 5.468 1.423 E94 +1 3 64 5.288 1.431 E94 +0 3 67 8.217 1.304 E94 +0 3 74 5.204 1.639 X94 +0 3 75 4.191 1.710 #X94 +1 3 78 5.705 1.413 E94 +1 3 80 6.719 1.375 E94 +0 4 4 15.206 1.200 #X94 +0 4 5 5.726 1.065 X94 +0 4 6 7.193 1.328 E94 +0 4 7 14.916 1.176 E94 +0 4 9 15.589 1.172 E94 +1 4 9 7.041 1.338 E94 +0 4 10 6.824 1.345 E94 +0 4 15 4.330 1.690 E94 +0 4 20 5.178 1.436 E94 +0 4 22 5.400 1.426 E94 +0 4 30 10.227 1.282 E94 +1 4 37 5.445 1.424 E94 +0 4 42 16.582 1.160 #X94 +0 4 43 6.947 1.341 E94 +1 4 63 5.633 1.416 E94 +1 4 64 5.492 1.422 E94 +0 5 19 2.254 1.485 X94 +0 5 20 4.852 1.093 C94 +0 5 22 5.191 1.082 C94 +0 5 30 5.176 1.086 C94 +0 5 37 5.306 1.084 C94 +0 5 41 3.256 1.144 C94 +0 5 57 5.633 1.076 C94 +0 5 63 5.531 1.080 C94 +0 5 64 5.506 1.080 C94 +0 5 78 5.506 1.080 C94 +0 5 80 5.633 1.076 C94 +0 6 6 4.088 1.449 E94 +0 6 8 5.059 1.450 C94 +0 6 9 4.491 1.395 E94 +0 6 10 5.982 1.410 C94 +0 6 15 4.757 1.661 E94 +0 6 17 5.779 1.608 E94 +0 6 18 5.326 1.630 #X94 +0 6 19 4.661 1.660 #X94 +0 6 20 5.623 1.433 C94 +0 6 21 7.794 0.972 C94 +0 6 22 4.556 1.433 E94 +0 6 24 7.403 0.981 C94 +0 6 25 5.243 1.630 #X94 +0 6 26 5.481 1.618 E94 +0 6 29 7.839 0.973 C94 +0 6 30 9.359 1.271 E94 +0 6 33 7.143 0.986 X94 +0 6 37 5.614 1.376 C94 +0 6 39 4.629 1.388 E94 +0 6 40 4.609 1.389 E94 +0 6 41 6.754 1.342 E94 +0 6 43 3.937 1.426 E94 +0 6 45 4.321 1.404 X94 +0 6 54 5.117 1.365 E94 +0 6 55 4.772 1.381 E94 +0 6 57 7.128 1.330 E94 +0 6 58 4.792 1.380 E94 +0 6 63 7.324 1.324 E94 +0 6 64 6.664 1.345 E94 +0 7 17 8.770 1.500 #X94 +0 7 46 9.329 1.235 X94 +0 7 74 9.129 1.490 #X94 +0 8 8 3.264 1.420 E94 +0 8 9 4.581 1.342 E94 +0 8 10 3.909 1.378 E94 +0 8 12 3.371 1.761 E94 +0 8 15 4.060 1.652 E94 +0 8 17 3.901 1.663 E94 +0 8 19 4.254 1.700 E94 +0 8 20 5.107 1.456 C94 +0 8 22 4.223 1.457 E94 +0 8 23 6.490 1.019 C94 +0 8 25 4.629 1.660 E94 +0 8 26 4.027 1.699 E94 +0 8 34 3.775 1.386 E94 +0 8 39 3.435 1.408 E94 +0 8 40 3.710 1.390 E94 +0 8 43 3.977 1.374 E94 +0 8 45 4.267 1.358 E94 +0 8 46 5.519 1.301 E94 +0 8 55 4.229 1.360 E94 +0 8 56 3.995 1.373 E94 +0 9 9 7.256 1.243 E94 +1 9 9 3.808 1.384 E94 +0 9 10 4.480 1.347 E94 +0 9 12 3.635 1.739 E94 +0 9 15 3.791 1.671 E94 +0 9 18 4.465 1.626 E94 +0 9 19 3.687 1.741 E94 +0 9 20 4.401 1.447 E94 +0 9 25 5.379 1.619 E94 +0 9 27 6.230 1.026 C94 +0 9 34 3.223 1.423 E94 +0 9 35 5.095 1.366 E94 +1 9 37 5.529 1.393 E94 +1 9 39 4.685 1.337 E94 +0 9 40 4.382 1.352 E94 +0 9 41 5.650 1.388 E94 +0 9 45 4.857 1.329 E94 +0 9 53 7.291 1.242 X94 +0 9 54 4.991 1.323 E94 +0 9 55 3.825 1.383 E94 +0 9 56 4.602 1.341 E94 +1 9 57 6.824 1.345 E94 +0 9 62 4.749 1.334 E94 +1 9 63 6.824 1.345 E94 +1 9 64 5.458 1.396 E94 +0 9 67 6.752 1.258 E94 +1 9 78 6.644 1.351 E94 +1 9 81 3.909 1.378 E94 +0 10 10 3.977 1.374 E94 +0 10 13 3.110 1.878 E94 +0 10 14 1.967 2.029 E94 +0 10 15 3.593 1.686 E94 +0 10 17 3.930 1.661 E94 +0 10 20 4.240 1.456 E94 +0 10 22 4.970 1.418 E94 +0 10 25 3.820 1.714 E94 +0 10 26 3.651 1.727 E94 +0 10 28 6.663 1.015 C94 +0 10 34 3.960 1.375 E94 +0 10 35 4.898 1.375 E94 +0 10 37 5.482 1.395 E94 +0 10 39 4.382 1.352 E94 +0 10 40 3.841 1.382 E94 +0 10 41 7.466 1.325 E94 +0 10 45 3.524 1.402 E94 +0 10 63 6.137 1.369 E94 +0 10 64 5.952 1.376 E94 +0 11 20 6.339 1.348 E94 +0 11 22 5.296 1.389 X94 +0 11 25 6.019 1.583 E94 +0 11 26 6.204 1.575 E94 +0 11 37 6.511 1.342 E94 +0 11 40 4.187 1.440 E94 +0 12 15 2.978 2.031 E94 +0 12 18 2.808 2.051 E94 +0 12 19 2.838 2.050 #X94 +0 12 20 2.859 1.751 C94 +0 12 22 3.056 1.750 #X94 +0 12 25 3.063 2.023 E94 +0 12 26 2.448 2.100 #X94 +0 12 37 3.378 1.721 E94 +0 12 40 3.737 1.731 E94 +0 12 57 3.714 1.694 E94 +0 12 63 3.413 1.718 E94 +0 12 64 3.649 1.699 E94 +0 13 20 2.767 1.920 E94 +0 13 22 2.928 1.902 E94 +0 13 37 3.031 1.891 E94 +0 13 64 3.031 1.891 E94 +0 14 20 0.884 2.332 E94 +0 14 37 1.781 2.075 E94 +0 15 15 2.531 2.050 C94 +0 15 18 2.214 2.094 E94 +0 15 19 2.022 2.146 E94 +0 15 20 2.757 1.822 E94 +0 15 22 3.802 1.727 E94 +0 15 25 2.319 2.112 E94 +0 15 26 2.359 2.106 E94 +0 15 30 3.750 1.731 E94 +0 15 37 3.565 1.765 C94 +0 15 40 3.859 1.666 E94 +0 15 43 3.221 1.717 E94 +0 15 57 3.993 1.713 E94 +0 15 63 3.724 1.733 E94 +0 15 64 3.548 1.747 E94 +0 15 71 4.014 1.341 C94 +0 17 20 2.397 1.865 E94 +0 17 22 2.566 1.844 E94 +0 17 37 3.098 1.787 E94 +0 17 43 4.900 1.601 E94 +0 18 20 3.172 1.780 E94 +0 18 22 2.757 1.822 E94 +0 18 32 10.748 1.450 #X94 +0 18 37 3.281 1.770 X94 +0 18 39 3.504 1.693 X94 +0 18 43 3.301 1.710 #X94 +0 18 48 6.186 1.540 X94 +0 18 55 4.432 1.628 E94 +0 18 58 2.568 1.783 E94 +0 18 62 5.510 1.570 #X94 +0 18 63 3.524 1.749 E94 +0 18 64 3.856 1.723 E94 +0 18 80 4.150 1.702 E94 +0 19 20 2.288 1.900 E94 +0 19 37 3.072 1.809 E94 +0 19 40 4.470 1.686 E94 +0 19 63 3.219 1.795 E94 +0 19 75 1.600 2.226 E94 +0 20 20 3.663 1.526 C94 +0 20 22 4.251 1.484 E94 +0 20 25 2.718 1.838 E94 +0 20 26 2.588 1.853 E94 +0 20 30 3.977 1.507 C94 +0 20 34 4.171 1.460 E94 +0 20 37 3.740 1.516 E94 +0 20 40 4.784 1.427 E94 +0 20 41 4.286 1.482 E94 +0 20 43 3.737 1.487 E94 +0 20 45 3.844 1.480 E94 +0 22 22 3.969 1.499 C94 +0 22 30 3.785 1.513 E94 +0 22 34 4.103 1.464 E94 +0 22 37 4.481 1.471 E94 +0 22 40 4.188 1.459 E94 +0 22 41 5.071 1.441 E94 +0 22 43 4.070 1.466 E94 +0 22 45 4.311 1.452 E94 +0 23 39 7.112 1.012 C94 +0 23 62 6.339 1.026 X94 +0 23 67 6.610 1.019 #E94 +0 23 68 5.899 1.038 C94 +0 25 25 1.514 2.253 E94 +0 25 32 8.296 1.510 #X94 +0 25 37 3.586 1.755 E94 +0 25 39 4.370 1.676 E94 +0 25 40 4.629 1.660 E94 +0 25 43 3.237 1.762 X94 +0 25 57 4.356 1.699 E94 +0 25 63 3.711 1.745 E94 +0 25 71 3.001 1.411 X94 +0 25 72 3.744 1.950 #X94 +0 26 26 1.414 2.279 E94 +0 26 34 3.395 1.748 E94 +0 26 37 3.207 1.788 E94 +0 26 40 4.870 1.646 E94 +0 26 71 2.959 1.415 C94 +0 28 40 6.576 1.018 C94 +0 28 43 6.265 1.028 X94 +0 28 48 6.413 1.024 X94 +0 30 30 9.579 1.343 C94 +1 30 30 5.355 1.428 E94 +0 30 40 8.447 1.298 E94 +1 30 67 5.274 1.404 E94 +0 31 70 7.880 0.969 C94 +0 32 41 9.756 1.261 C94 +0 32 45 9.420 1.233 X94 +0 32 67 7.926 1.269 E94 +0 32 68 4.398 1.348 C94 +0 32 69 6.098 1.261 C94 +0 32 73 8.427 1.510 #X94 +0 32 77 10.648 1.450 #X94 +0 32 82 8.594 1.252 E94 +0 34 36 6.163 1.028 C94 +0 34 37 4.347 1.450 E94 +0 34 43 4.401 1.351 E94 +0 35 37 9.767 1.262 E94 +0 35 63 12.760 1.207 E94 +0 36 54 6.529 1.022 C94 +0 36 55 6.744 1.014 C94 +0 36 56 6.490 1.017 C94 +0 36 58 6.610 1.019 #E94 +0 36 81 6.980 1.016 C94 +0 37 37 5.573 1.374 C94 +1 37 37 5.178 1.436 E94 +0 37 38 5.737 1.333 C94 +0 37 39 5.978 1.375 E94 +1 37 39 5.650 1.388 E94 +0 37 40 6.168 1.398 C94 +0 37 41 4.537 1.468 E94 +0 37 43 4.764 1.428 X94 +0 37 45 4.705 1.431 E94 +0 37 46 6.191 1.367 E94 +0 37 55 6.615 1.352 E94 +0 37 56 5.055 1.414 E94 +1 37 57 5.092 1.440 E94 +0 37 58 7.432 1.326 E94 +1 37 58 5.055 1.414 E94 +0 37 61 5.724 1.385 E94 +0 37 62 7.137 1.335 E94 +0 37 63 6.095 1.372 C94 +1 37 63 5.178 1.436 E94 +0 37 64 6.161 1.379 C94 +1 37 64 5.265 1.432 E94 +1 37 67 4.725 1.430 E94 +0 37 69 5.396 1.352 C94 +0 37 78 6.719 1.375 E94 +0 37 81 3.987 1.471 E94 +1 37 81 4.531 1.440 E94 +0 38 38 5.002 1.246 C94 +0 38 63 7.299 1.330 E94 +0 38 64 6.978 1.340 E94 +0 38 69 5.036 1.321 E94 +0 38 78 6.218 1.366 E94 +0 39 40 4.101 1.367 E94 +0 39 45 3.524 1.402 E94 +0 39 63 6.301 1.364 C94 +1 39 63 6.137 1.369 E94 +0 39 64 6.357 1.361 E94 +1 39 64 5.482 1.395 E94 +0 39 65 5.513 1.339 C94 +0 39 78 6.137 1.369 E94 +0 40 40 4.248 1.359 E94 +0 40 45 4.305 1.356 E94 +0 40 46 4.727 1.335 E94 +0 40 54 6.817 1.256 E94 +0 40 63 6.733 1.348 E94 +0 40 64 6.644 1.351 E94 +0 40 78 5.900 1.378 E94 +0 41 41 5.029 1.443 E94 +0 41 55 5.577 1.391 E94 +0 41 62 7.137 1.335 E94 +0 41 72 4.519 1.678 X94 +0 41 80 5.222 1.434 E94 +0 42 61 16.223 1.087 E94 +0 43 43 4.211 1.361 E94 +0 43 45 3.710 1.390 E94 +0 43 64 5.389 1.399 E94 +0 44 63 3.589 1.717 C94 +0 44 65 3.374 1.684 C94 +0 44 78 3.711 1.734 E94 +0 44 80 3.910 1.719 E94 +0 45 63 5.119 1.411 E94 +0 45 64 5.076 1.413 E94 +0 45 78 5.724 1.385 E94 +0 47 53 12.192 1.140 #X94 +0 49 50 6.812 0.991 C94 +0 51 52 7.100 0.987 X94 +0 55 57 7.227 1.319 C94 +0 55 62 3.977 1.374 E94 +0 55 64 5.529 1.393 E94 +0 55 80 7.500 1.324 E94 +0 56 57 4.137 1.383 C94 +0 56 63 5.900 1.378 E94 +0 56 80 6.470 1.357 E94 +1 57 63 5.400 1.426 E94 +1 57 64 5.135 1.438 E94 +0 58 63 6.794 1.346 E94 +0 58 64 6.164 1.368 E94 +0 59 63 5.787 1.360 C94 +0 59 65 4.756 1.388 C94 +0 59 78 6.127 1.364 E94 +0 59 80 7.064 1.332 E94 +0 59 82 3.855 1.431 E94 +0 60 61 15.749 1.170 #X94 +0 62 63 6.947 1.341 E94 +0 62 64 6.273 1.364 E94 +1 63 63 5.729 1.412 E94 +0 63 64 7.118 1.377 C94 +0 63 66 8.326 1.313 C94 +0 63 72 4.503 1.679 E94 +0 63 78 7.434 1.352 E94 +0 63 81 7.778 1.316 E94 +0 64 64 4.313 1.418 C94 +1 64 64 4.926 1.448 E94 +0 64 65 8.258 1.335 C94 +0 64 66 4.456 1.369 C94 +0 64 78 5.492 1.422 E94 +0 64 81 5.824 1.381 E94 +0 64 82 6.794 1.346 E94 +0 65 66 7.243 1.323 C94 +0 65 78 8.447 1.298 E94 +0 65 81 5.223 1.313 E94 +0 65 82 5.622 1.297 E94 +0 66 66 3.874 1.368 C94 +0 66 78 6.385 1.360 E94 +0 66 81 3.960 1.375 E94 +0 67 67 6.085 1.280 E94 +0 71 75 2.852 1.423 X94 +0 72 73 2.628 2.035 X94 +0 76 76 4.286 1.357 X94 +0 76 78 6.824 1.345 X94 +0 78 78 5.573 1.374 C94 +0 78 79 8.890 1.287 E94 +0 78 81 5.046 1.381 C94 +0 79 79 6.408 1.269 E94 +0 79 81 4.305 1.356 E94 +0 80 81 8.237 1.335 C94 +$ +11. MMFFOOP.PAR: This file supplies parameters for out-of-plane bending + interactions. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF OUT-OF-PLANE PARAMETERS- Rev: 15-OCT-93 Source: MMFF94 +* C94 - CORE MMFF94 parameter, from fits to HF/6-31G* 2nd D's +* #C94 - Value adjusted from CORE MMFF93 value +* +* MMFF atom types koop Source + 0 2 0 0 0.020 *-2-*-* C94 DEF + 1 2 1 2 0.030 C94 + 1 2 2 2 0.027 C94 + 1 2 2 3 0.026 C94 + 1 2 2 5 0.013 C94 + 1 2 2 37 0.032 C94 + 2 2 2 5 0.013 C94 + 2 2 3 5 0.012 C94 + 2 2 5 5 0.006 C94 + 2 2 5 6 0.027 C94 + 2 2 5 37 0.017 C94 + 2 2 5 40 0.012 C94 + 2 2 5 41 0.008 C94 + 0 3 0 0 0.130 *-3-*-* C94 DEF + 1 3 1 7 0.146 C94 + 1 3 2 7 0.138 C94 + 1 3 3 7 0.134 C94 + 1 3 5 7 0.122 C94 + 1 3 6 7 0.141 C94 + 1 3 7 10 0.129 C94 + 1 3 7 37 0.138 C94 + 2 3 5 7 0.113 C94 + 2 3 5 9 0.081 C94 + 2 3 6 7 0.127 C94 + 2 3 7 10 0.116 C94 + 3 3 5 7 0.113 C94 + 3 3 6 7 0.127 C94 + 5 3 5 7 0.103 C94 + 5 3 5 9 0.074 C94 + 5 3 5 54 0.078 C94 + 5 3 6 7 0.119 C94 + 5 3 7 10 0.102 C94 + 5 3 9 40 0.067 C94 + 6 3 7 37 0.127 C94 + 7 3 10 10 0.113 C94 + 7 3 20 20 0.151 C94 + 9 3 40 40 0.057 C94 + 0 8 0 0 0.000 *-8-*-* C94 DEF + 0 10 0 0 -0.020 *-10-*-* C94 DEF + 1 10 1 3 -0.02 #C94 (C93=-0.034) + 1 10 3 6 -0.033 C94 + 1 10 3 28 -0.02 #C94 (C93=-0.030) + 3 10 3 28 -0.030 C94 + 3 10 28 28 -0.019 C94 + 0 17 0 0 0.000 *-17-*-* E94 DEF + 0 26 0 0 0.000 *-26-*-* CE4 DEF + 0 30 0 0 0.010 *-30-*-* C94 DEF + 5 30 20 30 0.008 C94 + 0 37 0 0 0.035 *-37-*-* C94 DEF + 1 37 37 37 0.040 C94 + 2 37 37 37 0.031 C94 + 3 37 37 37 0.027 C94 + 5 37 37 37 0.015 C94 + 5 37 37 38 0.046 C94 + 5 37 37 63 0.008 C94 + 5 37 37 64 0.012 C94 + 5 37 37 69 0.016 C94 + 5 37 38 38 0.084 C94 + 6 37 37 37 0.048 C94 + 15 37 37 37 0.025 C94 + 37 37 37 40 0.046 C94 + 0 39 0 0 0.020 *-39-*-* C94 DEF + 1 39 63 63 0.012 C94 + 23 39 63 63 -0.014 C94 + 23 39 63 65 0.021 C94 + 23 39 65 65 0.062 C94 + 0 40 0 0 -0.005 *-40-*-* C94 DEF + 1 40 28 37 -0.006 C94 + 2 40 28 28 -0.007 C94 + 3 40 28 28 -0.007 C94 + 28 40 28 37 0.004 C94 + 0 41 0 0 0.180 *-41-*-* C94 DEF + 1 41 32 32 0.178 C94 + 2 41 32 32 0.161 C94 + 5 41 32 32 0.158 C94 + 0 43 0 0 0.000 *-43-*-* E94 DEF + 0 45 0 0 0.150 *-45-*-* E94 DEF + 0 49 0 0 0.000 *-49-*-* E94 DEF + 50 49 50 50 0.000 #C94 + 0 54 0 0 0.020 *-54-*-* C94 DEF + 1 54 3 36 0.016 C94 + 3 54 36 36 0.018 C94 + 0 55 0 0 0.020 *-55-*-* C94 DEF + 1 55 36 57 0.020 #C94 + 36 55 36 57 0.020 #C94 + 0 56 0 0 0.020 *-56-*-* C94 DEF + 1 56 36 57 0.020 #C94 + 36 56 36 57 0.020 #C94 + 0 57 0 0 0.080 *-57-*-* C94 DEF + 5 57 55 55 0.038 C94 + 56 57 56 56 0.158 C94 + 0 58 0 0 0.025 *-58-*-* E94 DEF + 0 63 0 0 0.050 *-63-*-* C94 DEF + 5 63 39 64 0.019 C94 + 5 63 39 66 0.068 C94 + 5 63 44 64 0.014 C94 + 5 63 44 66 0.055 C94 + 5 63 59 64 0.033 C94 + 5 63 59 66 0.085 C94 + 37 63 39 64 0.010 C94 + 0 64 0 0 0.040 *-64-*-* C94 DEF + 5 64 63 64 0.006 C94 + 5 64 63 66 0.043 C94 + 5 64 64 65 0.052 C94 + 5 64 65 66 0.094 C94 + 37 64 63 64 -0.011 C94 + 0 67 0 0 0.070 *-67-*-* E94 DEF + 0 69 0 0 0.070 *-69-*-* C94 DEF + 32 69 37 37 0.067 C94 + 0 73 0 0 0.000 *-73-*-* E94 DEF + 0 78 0 0 0.045 *-78-*-* C94 DEF + 5 78 78 81 0.046 C94 + 0 80 0 0 0.080 *-80-*-* C94 DEF + 5 80 81 81 0.057 C94 + 0 81 0 0 0.025 *-81-*-* C94 DEF + 36 81 78 80 0.016 C94 + 0 82 0 0 0.000 *-82-*-* E94 DEF +$ +9. MMFFSTBN.PAR:: This file supplies parameters for stretch-bend interactions. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF STRETCH-BEND PARAMETERS- Rev: 23-FEB-93 Source: MMFF94 +* C94 - CORE MMFF94 parameter, from fits to HF/6-31G* 2nd D's +* X94 - EXTD MMFF94 parameter, also from fits to HF/6-31G* 2nd D's +* +* types I, J, K kbaIJK kbaKJI Source +0 1 1 1 0.206 0.206 C94 +0 1 1 2 0.136 0.197 C94 +0 1 1 3 0.211 0.092 C94 +0 1 1 5 0.227 0.070 C94 +0 1 1 6 0.173 0.417 C94 +0 1 1 8 0.136 0.282 C94 +0 1 1 10 0.187 0.338 C94 +0 1 1 11 0.209 0.633 C94 +0 1 1 12 0.176 0.386 C94 +0 1 1 15 0.139 0.217 C94 +0 1 1 34 0.236 0.436 C94 +0 1 1 37 0.152 0.260 C94 +0 1 1 39 0.144 0.595 C94 +0 1 1 41 0.122 0.051 C94 +0 1 1 56 0.262 0.451 C94 +0 1 1 68 0.186 0.125 C94 +0 2 1 2 0.282 0.282 C94 +0 2 1 3 0.206 0.022 C94 +0 2 1 5 0.234 0.088 C94 +0 2 1 6 0.183 0.387 C94 +0 2 1 8 0.214 0.363 C94 +0 3 1 5 0.157 0.115 C94 +0 3 1 6 -0.036 0.456 C94 +0 3 1 10 0.038 0.195 C94 +0 5 1 5 0.115 0.115 C94 +0 5 1 6 0.013 0.436 C94 +0 5 1 8 0.027 0.358 C94 +0 5 1 9 0.040 0.418 C94 +0 5 1 10 0.043 0.261 C94 +0 5 1 11 0.003 0.452 C94 +0 5 1 12 -0.018 0.380 C94 +0 5 1 15 0.018 0.255 C94 +0 5 1 18 0.121 0.218 X94 +0 5 1 20 0.069 0.327 C94 +0 5 1 22 0.055 0.267 X94 +0 5 1 34 -0.003 0.342 C94 +0 5 1 37 0.074 0.287 C94 +0 5 1 39 0.092 0.607 C94 +0 5 1 40 0.023 0.335 C94 +0 5 1 41 0.093 0.118 C94 +0 5 1 54 0.016 0.343 C94 +0 5 1 55 0.030 0.397 C94 +0 5 1 56 0.031 0.384 C94 +0 5 1 68 0.041 0.216 C94 +0 6 1 6 0.320 0.320 C94 +0 6 1 37 0.310 0.160 C94 +0 11 1 11 0.586 0.586 C94 +0 12 1 12 0.508 0.508 C94 +0 1 2 1 0.250 0.250 C94 +0 1 2 2 0.203 0.207 C94 +2 1 2 2 0.222 0.269 C94 +2 1 2 3 0.244 0.292 C94 +0 1 2 5 0.215 0.128 C94 +2 1 2 37 0.246 0.260 C94 +1 2 2 2 0.250 0.219 C94 +2 2 2 3 0.155 0.112 C94 +0 2 2 5 0.207 0.157 C94 +1 2 2 5 0.267 0.159 C94 +0 2 2 6 0.118 0.576 C94 +2 2 2 37 0.143 0.172 C94 +0 2 2 40 0.289 0.390 C94 +0 2 2 41 0.191 -0.047 C94 +1 3 2 5 0.264 0.156 C94 +0 5 2 5 0.140 0.140 C94 +0 5 2 6 0.213 0.502 C94 +2 5 2 37 0.153 0.288 C94 +0 5 2 40 0.070 0.463 C94 +0 5 2 41 0.191 0.005 C94 +0 1 3 1 0.358 0.358 C94 +2 1 3 2 0.246 0.409 C94 +2 1 3 3 0.303 0.145 C94 +0 1 3 5 0.321 0.183 C94 +0 1 3 6 0.338 0.732 C94 +0 1 3 7 0.154 0.856 C94 +0 1 3 10 0.223 0.732 C94 +2 1 3 37 0.217 0.207 C94 +1 2 3 5 0.407 0.159 C94 +1 2 3 6 0.429 0.473 C94 +1 2 3 7 0.214 0.794 C94 +1 2 3 9 0.227 0.610 C94 +1 2 3 10 0.298 0.600 C94 +1 3 3 5 0.251 0.133 C94 +1 3 3 6 0.066 0.668 C94 +1 3 3 7 -0.093 0.866 C94 +0 5 3 5 0.126 0.126 C94 +0 5 3 6 0.174 0.734 C94 +0 5 3 7 0.032 0.805 C94 +0 5 3 9 0.037 0.669 C94 +0 5 3 10 0.169 0.619 C94 +0 5 3 40 0.087 0.685 C94 +0 5 3 54 0.098 0.210 C94 +0 6 3 7 0.494 0.578 C94 +4 6 3 20 1.179 0.752 X94 +2 6 3 37 0.350 0.175 C94 +0 7 3 10 0.771 0.353 C94 +0 7 3 20 0.865 -0.181 C94 +2 7 3 37 0.707 0.007 C94 +0 9 3 40 0.680 0.260 C94 +0 10 3 10 1.050 1.050 C94 +4 20 3 20 0.536 0.536 C94 +0 40 3 40 0.482 0.482 C94 +0 1 6 1 0.309 0.309 C94 +0 1 6 2 0.157 0.375 C94 +0 1 6 3 -0.153 0.252 C94 +0 1 6 21 0.256 0.143 C94 +0 1 6 37 0.163 0.375 C94 +0 2 6 3 -0.228 0.052 C94 +0 2 6 29 0.259 0.163 C94 +4 3 6 20 0.456 0.379 X94 +0 3 6 24 0.215 0.064 C94 +0 3 6 37 -0.225 -0.320 C94 +0 8 6 21 0.304 0.055 C94 +0 10 6 21 0.419 0.158 C94 +0 18 6 33 0.309 0.120 X94 +4 20 6 20 0.739 0.739 C94 +0 29 6 37 0.130 0.241 C94 +0 31 6 31 0.227 0.227 X94 +0 1 8 1 0.312 0.312 C94 +0 1 8 6 0.212 0.354 C94 +0 1 8 23 0.309 0.135 C94 +0 6 8 23 0.418 0.020 C94 +4 20 8 20 0.653 0.653 C94 +0 20 8 23 0.128 0.122 C94 +0 23 8 23 0.190 0.190 C94 +0 1 9 3 0.326 0.580 C94 +0 3 9 27 0.464 0.222 C94 +0 1 10 1 0.063 0.063 C94 +0 1 10 3 -0.021 0.340 C94 +0 1 10 6 -0.024 0.374 C94 +0 1 10 28 0.155 -0.051 C94 +0 3 10 3 -0.219 -0.219 C94 +0 3 10 6 0.497 0.513 C94 +0 3 10 28 0.137 0.066 C94 +0 28 10 28 0.081 0.081 C94 +0 1 15 1 0.125 0.125 C94 +0 1 15 15 0.012 0.238 C94 +0 1 15 37 0.048 0.229 C94 +0 1 15 71 0.080 -0.012 C94 +0 15 15 71 0.172 -0.068 C94 +0 37 15 71 0.187 -0.027 C94 +0 71 15 71 0.045 0.045 C94 +0 1 18 1 0.023 0.023 X94 +0 1 18 6 0.003 0.213 X94 +0 1 18 32 -0.091 0.390 X94 +0 1 18 43 -0.008 0.607 X94 +0 6 18 6 0.088 0.088 X94 +0 6 18 32 0.123 0.369 X94 +0 32 18 32 0.404 0.404 X94 +0 32 18 43 0.384 0.281 X94 +0 43 18 43 0.428 0.428 X94 +0 1 20 5 0.290 0.098 C94 +0 1 20 20 0.179 0.004 C94 +0 3 20 5 -0.049 0.171 C94 +4 3 20 20 0.607 0.437 C94 +0 5 20 5 0.182 0.182 C94 +0 5 20 6 0.051 0.312 C94 +0 5 20 8 0.072 0.226 C94 +0 5 20 12 0.014 0.597 C94 +0 5 20 20 0.101 0.079 C94 +0 5 20 30 0.108 0.123 C94 +4 6 20 20 0.823 0.396 C94 +4 8 20 20 0.701 0.369 C94 +0 12 20 20 0.310 0.000 C94 +4 20 20 20 0.283 0.283 C94 +4 20 20 30 0.340 0.529 C94 +0 1 22 5 0.067 0.174 X94 +0 1 22 22 0.199 0.039 X94 +0 5 22 5 0.254 0.254 C94 +0 5 22 22 0.181 0.108 C94 +5 22 22 22 0.000 0.000 C94 +0 5 26 5 -0.121 -0.121 X94 +0 5 30 20 0.251 0.007 C94 +0 5 30 30 0.267 0.054 C94 +4 20 30 30 0.413 0.705 C94 +0 1 34 1 0.202 0.202 C94 +0 1 34 36 0.160 -0.009 C94 +0 36 34 36 0.087 0.087 C94 +0 1 37 37 0.485 0.311 C94 +1 2 37 37 0.321 0.235 C94 +1 3 37 37 0.179 0.217 C94 +0 5 37 37 0.279 0.250 C94 +0 5 37 38 0.267 0.389 C94 +0 5 37 63 0.216 0.434 C94 +0 5 37 64 0.167 0.364 C94 +0 5 37 69 0.273 0.391 C94 +0 6 37 37 0.830 0.339 C94 +0 15 37 37 0.650 0.259 C94 +0 37 37 37 -0.411 -0.411 C94 +0 37 37 38 -0.424 -0.466 C94 +0 37 37 40 0.429 0.901 C94 +0 37 37 63 -0.173 -0.215 C94 +0 37 37 64 -0.229 -0.229 C94 +0 37 37 69 -0.244 -0.555 C94 +0 38 37 38 -0.516 -0.516 C94 +0 37 38 37 -0.342 -0.342 C94 +0 37 38 38 -0.164 -1.130 C94 +0 1 39 63 0.313 0.500 C94 +0 23 39 63 -0.131 0.422 C94 +0 23 39 65 -0.122 0.281 C94 +0 63 39 63 0.469 0.469 C94 +0 63 39 65 0.741 0.506 C94 +0 65 39 65 0.706 0.706 C94 +0 1 40 28 0.238 0.091 C94 +0 1 40 37 0.153 0.590 C94 +0 2 40 28 0.342 0.156 C94 +0 3 40 28 0.228 0.104 C94 +0 28 40 28 0.094 0.094 C94 +0 28 40 37 0.186 0.423 C94 +0 1 41 32 0.503 0.943 C94 +0 2 41 32 0.594 0.969 C94 +0 5 41 32 0.276 0.852 C94 +0 32 41 32 0.652 0.652 C94 +0 18 43 23 0.377 0.057 X94 +0 23 43 23 0.082 0.082 X94 +0 63 44 63 0.591 0.591 C94 +0 63 44 65 0.857 0.978 C94 +0 50 49 50 0.072 0.072 C94 +0 1 54 3 0.192 -0.051 C94 +0 1 54 36 0.240 0.079 C94 +0 3 54 36 0.005 0.127 C94 +0 36 54 36 0.148 0.148 C94 +0 1 55 36 0.189 0.033 C94 +0 1 55 57 0.166 0.211 C94 +0 36 55 36 0.106 0.106 C94 +0 36 55 57 0.093 0.080 C94 +0 1 56 36 0.211 -0.040 C94 +0 1 56 57 0.026 0.386 C94 +0 36 56 36 0.101 0.101 C94 +0 36 56 57 0.108 0.068 C94 +0 5 57 55 0.043 0.420 C94 +0 55 57 55 0.125 0.125 C94 +0 56 57 56 0.431 0.431 C94 +0 58 57 58 0.732 0.732 C94 +0 63 59 63 0.497 0.497 C94 +0 63 59 65 0.723 0.874 C94 +0 5 63 39 0.009 0.654 C94 +0 5 63 44 -0.015 0.446 C94 +0 5 63 59 0.067 0.588 C94 +0 5 63 64 0.055 0.370 C94 +0 5 63 66 0.110 0.464 C94 +0 37 63 39 0.178 0.523 C94 +0 37 63 64 -0.045 0.497 C94 +0 39 63 64 0.422 0.409 C94 +0 39 63 66 0.436 0.525 C94 +0 44 63 64 0.581 0.426 C94 +0 44 63 66 0.542 0.365 C94 +0 59 63 64 0.852 0.332 C94 +0 59 63 66 0.775 0.300 C94 +0 5 64 63 0.086 0.345 C94 +0 5 64 64 0.085 0.369 C94 +0 5 64 65 0.051 0.436 C94 +0 5 64 66 0.113 0.452 C94 +0 37 64 63 0.059 0.299 C94 +0 37 64 64 0.277 0.377 C94 +0 63 64 64 0.206 0.030 C94 +0 63 64 66 0.171 0.078 C94 +0 64 64 65 0.079 0.403 C94 +0 65 64 66 0.406 0.066 C94 +0 39 65 64 0.528 0.644 C94 +0 39 65 66 0.397 0.258 C94 +0 44 65 64 0.816 0.543 C94 +0 59 65 64 1.177 0.594 C94 +0 63 66 64 0.213 -0.173 C94 +0 63 66 66 0.234 0.077 C94 +0 64 66 65 -0.149 0.383 C94 +0 65 66 66 0.199 0.101 C94 +0 1 68 1 0.217 0.217 C94 +0 1 68 23 0.285 0.050 C94 +0 1 68 32 -0.047 0.503 C94 +0 23 68 23 0.145 0.145 C94 +0 23 68 32 -0.182 0.504 C94 +0 32 69 37 1.018 0.418 C94 +0 37 69 37 -0.169 -0.169 C94 +0 31 70 31 0.210 0.210 C94 +0 5 78 78 0.279 0.250 C94 +0 5 78 81 0.083 0.250 C94 +0 78 78 81 -0.398 0.314 C94 +0 5 80 81 -0.101 0.691 C94 +0 81 80 81 0.732 0.732 C94 +0 36 81 78 0.021 0.368 C94 +0 36 81 80 0.018 0.422 C94 +0 78 81 80 0.366 0.419 C94 +$ +10. MMFFDFSB.PAR: This file supplies default parameters for stretch-bend + interactions. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF Default Stretch-Bend Parameters +* Row in +* Periodic Table +* IR JR KR F(I_J,K) F(K_J,I) + 0 1 0 0.15 0.15 + 0 1 1 0.10 0.30 + 0 1 2 0.05 0.35 + 0 1 3 0.05 0.35 + 0 1 4 0.05 0.35 + 0 2 0 0.00 0.00 + 0 2 1 0.00 0.15 + 0 2 2 0.00 0.15 + 0 2 3 0.00 0.15 + 0 2 4 0.00 0.15 + 1 1 1 0.30 0.30 + 1 1 2 0.30 0.50 + 1 1 3 0.30 0.50 + 1 1 4 0.30 0.50 + 2 1 2 0.50 0.50 + 2 1 3 0.50 0.50 + 2 1 4 0.50 0.50 + 3 1 3 0.50 0.50 + 3 1 4 0.50 0.50 + 4 1 4 0.50 0.50 + 1 2 1 0.30 0.30 + 1 2 2 0.25 0.25 + 1 2 3 0.25 0.25 + 1 2 4 0.25 0.25 + 2 2 2 0.25 0.25 + 2 2 3 0.25 0.25 + 2 2 4 0.25 0.25 + 3 2 3 0.25 0.25 + 3 2 4 0.25 0.25 + 4 2 4 0.25 0.25 +$ +12. MMFFTOR.PAR: This file supplies parameters for torsion interactions. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* MMFF TORSION PARAMETERS- Rev: 26-OCT-94 Source: MMFF94 +* C94 - CORE MMFF94 parameter - from fits to conformational energies +* X94 - EXTD MMFF94 parameter - also from fits to conformational E's +* E94 - EXTD MMFF94 parameter - from empirical rule +* #E94 - Adjusted from empirical rule value +* +* atom types V1 V2 V3 Source +0 0 1 1 0 0.000 0.000 0.300 C94 0:*-1-1-* Def +5 0 1 1 0 0.200 -0.800 1.500 C94 5:*-1-1-* Def +0 1 1 1 1 0.103 0.681 0.332 C94 +5 1 1 1 1 0.144 -0.547 1.126 C94 +0 1 1 1 2 -0.295 0.438 0.584 C94 +0 1 1 1 3 0.066 -0.156 0.143 C94 +0 1 1 1 5 0.639 -0.630 0.264 C94 +0 1 1 1 6 -0.688 1.757 0.477 C94 +5 1 1 1 6 0.000 0.000 0.054 C94 +0 1 1 1 8 -1.420 -0.092 1.101 C94 +5 1 1 1 8 0.000 -0.158 0.323 C94 +0 1 1 1 11 0.593 0.662 1.120 C94 +0 1 1 1 12 -0.678 0.417 0.624 C94 +0 1 1 1 15 -0.714 0.698 0.000 C94 +0 1 1 1 34 -0.647 0.550 0.590 C94 +0 2 1 1 5 0.321 -0.411 0.144 C94 +0 3 1 1 3 0.443 0.000 -1.140 C94 +0 3 1 1 5 -0.256 0.058 0.000 C94 +0 3 1 1 6 -0.679 -0.029 0.000 C94 +0 5 1 1 5 0.284 -1.386 0.314 C94 +0 5 1 1 6 -0.654 1.072 0.279 C94 +0 5 1 1 8 -0.744 -1.235 0.337 C94 +0 5 1 1 10 0.000 0.000 0.427 C94 +0 5 1 1 11 0.000 0.516 0.291 C94 +0 5 1 1 12 0.678 -0.602 0.398 C94 +0 5 1 1 15 1.142 -0.644 0.367 C94 +0 5 1 1 25 0.000 0.000 0.295 X94 +0 5 1 1 34 0.692 -0.530 0.278 C94 +0 5 1 1 37 0.000 0.000 0.389 C94 +0 5 1 1 39 0.000 0.000 0.278 C94 +0 5 1 1 41 0.000 0.000 -0.141 C94 +0 5 1 1 56 0.000 0.000 0.324 C94 +0 5 1 1 68 0.000 0.000 0.136 C94 +0 6 1 1 6 0.408 1.397 0.961 C94 +5 6 1 1 6 0.313 -1.035 1.631 C94 +0 8 1 1 8 1.055 0.834 0.000 C94 +0 11 1 1 11 -0.387 -0.543 1.405 C94 +0 12 1 1 12 0.000 0.000 0.893 C94 +0 15 1 1 15 -0.177 0.000 0.049 C94 +0 0 1 2 0 0.000 0.000 0.000 C94 0:*-1-2-* Def +2 0 1 2 0 0.000 0.000 0.000 E94 2:*1-2-* Def +5 0 1 2 0 0.000 0.000 0.000 C94 5:*-1-2-* Def +0 0 1 2 2 0.000 0.000 -0.650 C94 0:*-1-2=2 Def +5 0 1 2 2 0.000 0.000 -0.650 C94 5:*-1-2=2 Def +0 1 1 2 1 0.419 0.296 0.282 C94 +0 1 1 2 2 -0.494 0.274 -0.630 C94 +0 1 1 2 5 0.075 0.000 0.358 C94 +0 2 1 2 2 -0.293 0.115 -0.508 C94 +0 2 1 2 5 0.301 0.104 0.507 C94 +0 3 1 2 1 0.565 -0.554 0.234 C94 +0 3 1 2 2 -0.577 -0.482 -0.427 C94 +0 3 1 2 5 0.082 0.000 0.123 C94 +0 5 1 2 1 0.000 -0.184 0.220 C94 +0 5 1 2 2 0.501 -0.410 -0.535 C94 +2 5 1 2 2 0.000 0.000 0.055 C94 +2 5 1 2 3 0.000 0.000 -0.108 C94 +0 5 1 2 5 -0.523 -0.228 0.208 C94 +2 5 1 2 37 0.000 0.000 0.000 C94 +0 6 1 2 1 -0.467 0.000 0.490 C94 +0 6 1 2 2 0.425 0.168 -0.875 C94 +0 6 1 2 5 0.000 0.136 0.396 C94 +0 8 1 2 1 -0.504 0.371 0.557 C94 +0 8 1 2 2 0.541 0.539 -1.009 C94 +0 8 1 2 5 0.000 0.204 0.464 C94 +0 0 1 3 0 0.000 0.400 0.300 C94 0:*-1-3-* Def +2 0 1 3 0 0.000 0.500 0.350 C94 2:*-1-3-* Def +5 0 1 3 0 0.000 0.000 0.000 E94 5:*1-3-* Def +0 0 1 3 1 0.000 0.000 0.550 C94 0:*-1-3-1 Def +0 0 1 3 5 0.000 0.200 0.700 C94 0:*-1-3-5 Def +0 0 1 3 7 0.000 0.400 0.400 C94 0:*-1-3-7 Def +0 1 1 3 1 0.103 0.177 0.545 C94 +0 1 1 3 5 -0.072 0.316 0.674 C94 +0 1 1 3 6 -0.117 -0.333 0.202 C94 +0 1 1 3 7 0.825 0.139 0.325 C94 +0 1 1 3 10 -0.927 1.112 1.388 C94 +0 2 1 3 5 0.663 -0.167 0.426 C94 +0 2 1 3 7 -0.758 0.112 0.563 C94 +0 5 1 3 1 -0.073 0.085 0.531 C94 +2 5 1 3 2 0.000 0.000 0.115 C94 +2 5 1 3 3 0.000 0.000 0.446 C94 +0 5 1 3 5 -0.822 0.501 1.008 C94 +0 5 1 3 6 0.000 -0.624 0.330 C94 +0 5 1 3 7 0.659 -1.407 0.308 C94 +0 5 1 3 10 -0.412 0.693 0.087 C94 +2 5 1 3 37 0.000 0.000 0.056 C94 +0 5 1 3 43 0.000 1.027 0.360 X94 +0 5 1 3 51 0.000 1.543 0.350 X94 +0 5 1 3 53 0.000 0.501 0.000 X94 +0 5 1 3 74 0.000 0.513 -0.344 X94 +0 5 1 3 75 0.000 0.511 -0.186 X94 +0 6 1 3 6 0.447 0.652 0.318 C94 +0 6 1 3 7 -0.395 0.730 -0.139 C94 +0 10 1 3 7 0.338 2.772 2.145 C94 +0 10 1 3 10 0.548 0.000 1.795 C94 +0 0 1 4 0 0.000 0.000 0.000 C94 0:*-1-4-* Def +0 0 1 6 0 0.000 0.000 0.200 C94 0:*-1-6-* Def +5 0 1 6 0 0.000 -0.200 0.400 C94 5:*-1-6-* Def +0 1 1 6 1 -0.681 0.755 0.755 C94 +5 1 1 6 1 0.000 0.243 -0.596 C94 +0 1 1 6 3 -0.547 0.000 0.320 C94 +0 1 1 6 21 0.000 0.270 0.237 C94 +0 2 1 6 21 0.102 0.460 -0.128 C94 +0 3 1 6 21 -1.652 -1.660 0.283 C94 +0 5 1 6 1 0.571 0.319 0.570 C94 +0 5 1 6 2 0.000 0.000 0.306 C94 +0 5 1 6 3 0.572 0.000 -0.304 C94 +0 5 1 6 21 0.596 -0.276 0.346 C94 +0 5 1 6 25 0.000 0.000 0.061 X94 +0 5 1 6 37 0.000 0.000 0.106 C94 +0 5 1 6 45 0.000 0.000 -0.174 X94 +0 6 1 6 1 0.229 -0.710 0.722 C94 +5 6 1 6 1 0.000 0.000 0.040 C94 +0 6 1 6 21 1.488 -3.401 -0.320 C94 +0 37 1 6 21 0.712 1.320 -0.507 C94 +0 0 1 8 0 0.000 -0.300 0.500 C94 0:*-1-8-* Def +5 0 1 8 0 0.000 0.000 0.297 E94 5:*1-8-* Def +0 1 1 8 1 -0.439 0.786 0.272 C94 +5 1 1 8 1 0.115 -0.390 0.658 C94 +0 1 1 8 6 -0.608 0.339 1.496 C94 +0 1 1 8 23 -0.428 0.323 0.280 C94 +0 2 1 8 23 0.594 -0.409 0.155 C94 +0 5 1 8 1 0.393 -0.385 0.562 C94 +0 5 1 8 6 0.598 -0.158 0.399 C94 +0 5 1 8 23 -0.152 -0.440 0.357 C94 +0 0 1 9 0 0.000 0.000 0.000 C94 0:*-1-9-* Def +5 0 1 9 0 0.000 0.000 0.000 E94 5:*1-9-* Def +0 5 1 9 3 0.204 -0.335 -0.352 C94 +0 5 1 9 53 0.000 0.000 0.097 X94 +0 0 1 10 0 0.000 0.000 0.300 C94 0:*-1-10-* Def +5 0 1 10 0 0.000 0.000 0.000 E94 5:*1-10-* Def +0 0 1 10 3 0.000 0.000 1.000 C94 0:*-1-10-3 Def +0 1 1 10 3 -1.027 0.694 0.948 C94 +0 1 1 10 6 0.159 -0.552 0.198 C94 +0 1 1 10 28 0.552 -0.380 0.326 C94 +0 3 1 10 3 3.100 -2.529 1.494 C94 +0 3 1 10 28 0.079 0.280 0.402 C94 +0 5 1 10 1 0.000 0.000 0.779 C94 +0 5 1 10 3 -2.099 1.363 0.021 C94 +0 5 1 10 6 -0.162 0.832 0.552 C94 +0 5 1 10 28 -0.616 0.000 0.274 C94 +0 0 1 15 0 0.000 0.000 0.400 C94 0:*-1-15-* Def +5 0 1 15 0 0.000 0.000 0.336 E94 5:*1-15-* Def +0 1 1 15 1 -1.047 0.170 0.398 C94 +0 1 1 15 15 -1.438 0.263 0.501 C94 +0 1 1 15 71 -0.376 -0.133 0.288 C94 +0 5 1 15 1 1.143 -0.231 0.447 C94 +0 5 1 15 15 1.555 -0.323 0.456 C94 +0 5 1 15 37 0.000 0.000 0.459 C94 +0 5 1 15 71 0.229 0.203 0.440 C94 +0 0 1 17 0 0.000 0.000 0.350 C94 0:*-1-17-* Def +5 0 1 17 0 0.000 0.000 0.000 E94 5:*1-17-* Def +0 5 1 17 1 0.000 0.000 0.536 X94 +0 5 1 17 7 0.000 0.000 0.212 X94 +0 0 1 18 0 0.000 0.000 0.100 C94 0:*-1-18-* Def +5 0 1 18 0 0.000 0.000 0.112 E94 5:*1-18-* Def +0 5 1 18 1 0.000 0.000 0.000 X94 +0 5 1 18 6 0.000 0.000 0.099 X94 +0 5 1 18 32 0.000 0.585 0.388 X94 +0 5 1 18 43 0.000 -0.412 0.121 X94 +0 5 1 18 48 0.000 0.000 0.195 X94 +0 5 1 18 62 0.000 0.000 -0.088 X94 +0 0 1 19 0 0.000 0.000 0.150 C94 0:*-1-19-* Def +5 0 1 19 0 0.000 0.000 0.179 E94 5:*1-19-* Def +0 5 1 19 5 0.000 0.000 0.196 X94 +0 5 1 19 6 0.000 0.000 0.176 X94 +0 5 1 19 12 0.000 0.000 0.152 X94 +0 0 1 20 0 0.000 0.000 0.350 C94 0:*-1-20-* Def +5 0 1 20 0 0.000 0.000 0.350 C94 5:*-1-20-* Def +0 5 1 20 5 0.000 0.000 0.344 C94 +0 5 1 20 20 0.000 0.000 0.361 C94 +0 0 1 22 0 0.000 0.000 0.236 E94 0:*1-22-* Def +5 0 1 22 0 0.000 0.000 0.236 E94 5:*1-22-* Def +0 0 1 25 0 0.000 0.000 0.300 C94 0:*-1-25-* Def +5 0 1 25 0 0.000 0.000 0.251 E94 5:*1-25-* Def +0 1 1 25 1 0.000 -0.207 0.232 X94 +0 1 1 25 32 0.000 0.288 0.218 X94 +0 5 1 25 1 0.000 0.152 0.235 X94 +0 5 1 25 6 0.000 0.000 0.495 X94 +0 5 1 25 32 0.000 -0.130 0.214 X94 +0 5 1 25 43 0.000 0.000 0.466 X94 +0 5 1 25 72 0.000 0.000 0.243 X94 +0 0 1 26 0 0.000 0.000 0.450 C94 0:*-1-26-* Def +5 0 1 26 0 0.000 0.000 0.376 E94 5:*1-26-* Def +0 5 1 26 12 0.000 0.000 0.439 X94 +0 5 1 26 71 0.000 0.000 0.472 X94 +0 0 1 34 0 0.000 0.000 0.250 C94 0:*-1-34-* Def +5 0 1 34 0 0.000 0.000 0.198 E94 5:*1-34-* Def +0 1 1 34 36 0.000 0.000 0.187 C94 +0 5 1 34 1 0.000 0.000 0.247 C94 +0 5 1 34 36 0.000 0.000 0.259 C94 +0 0 1 37 0 0.000 0.000 0.200 C94 0:*-1-37-* Def +5 0 1 37 0 0.000 0.000 0.000 E94 5:*1-37-* Def +0 1 1 37 37 0.000 0.449 0.000 C94 +0 5 1 37 37 0.000 -0.420 0.391 C94 +0 6 1 37 37 0.000 0.000 0.150 C94 +0 0 1 39 0 0.000 0.000 0.000 C94 0:*-1-39-* Def +5 0 1 39 0 0.000 0.000 0.000 E94 5:*1-39-* Def +0 1 1 39 63 0.000 -0.080 -0.056 C94 +0 5 1 39 63 0.000 0.000 -0.113 C94 +0 0 1 40 0 0.000 0.000 0.250 C94 0:*-1-40-* Def +5 0 1 40 0 0.000 0.000 0.297 E94 5:*1-40-* Def +0 5 1 40 28 0.000 -0.097 0.203 C94 +0 5 1 40 37 0.000 0.000 0.329 C94 +0 0 1 41 0 0.000 0.600 0.000 C94 0:*-1-41-* Def +0 1 1 41 32 0.000 1.263 0.000 C94 +0 5 1 41 32 0.000 0.000 -0.106 C94 +0 5 1 41 72 0.000 0.632 0.000 X94 +0 0 1 43 0 0.000 0.000 0.150 C94 0:*-1-43-* Def +5 0 1 43 0 0.000 0.000 0.297 E94 5:*1-43-* Def +0 5 1 43 18 0.357 -0.918 0.000 X94 +0 5 1 43 25 0.000 0.000 0.061 X94 +0 5 1 43 28 -0.249 0.382 0.343 X94 +0 0 1 45 0 0.000 0.000 0.100 C94 0:*-1-45-* Def +0 5 1 45 32 0.000 0.000 0.125 X94 +0 0 1 46 0 0.000 0.000 -0.500 C94 0:*-1-46-* Def +0 5 1 46 7 0.000 0.000 -0.540 X94 +0 0 1 54 0 0.000 0.000 0.000 C94 0:*-1-54-* Def +2 0 1 54 0 0.000 0.000 0.000 E94 2:*1-54-* Def +5 0 1 54 0 0.000 0.000 0.000 E94 5:*1-54-* Def +0 5 1 54 3 0.000 0.000 -0.315 C94 +0 5 1 54 36 0.000 0.000 0.315 C94 +0 0 1 55 0 0.000 0.000 0.000 C94 0:*-1-55-* Def +5 0 1 55 0 0.000 0.000 0.000 E94 5:*1-55-* Def +0 5 1 55 36 0.000 -0.058 0.084 C94 +0 5 1 55 57 0.000 -0.058 -0.092 C94 +0 0 1 56 0 0.000 0.000 -0.300 C94 0:*-1-56-* Def +0 1 1 56 36 0.875 0.668 -0.015 C94 +0 1 1 56 57 -0.870 0.775 -0.406 C94 +0 5 1 56 36 -0.958 -0.629 -0.372 C94 +0 5 1 56 57 0.952 -0.715 -0.483 C94 +0 0 1 57 0 0.000 0.000 0.000 E94 0:*1-57-* Def +5 0 1 57 0 0.000 0.000 0.000 E94 5:*1-57-* Def +0 0 1 58 0 0.000 0.000 0.000 E94 0:*1-58-* Def +0 0 1 62 0 0.000 0.000 0.250 C94 0:*-1-62-* Def +0 5 1 62 18 0.000 0.000 0.270 X94 +0 0 1 63 0 0.000 0.000 0.000 E94 0:*1-63-* Def +5 0 1 63 0 0.000 0.000 0.000 E94 5:*1-63-* Def +0 0 1 64 0 0.000 0.000 0.000 E94 0:*1-64-* Def +5 0 1 64 0 0.000 0.000 0.000 E94 5:*1-64-* Def +0 0 1 67 0 0.000 0.000 0.000 E94 0:*1-67-* Def +5 0 1 67 0 0.000 0.000 0.000 E94 5:*1-67-* Def +0 0 1 68 0 0.000 0.000 0.400 C94 0:*-1-68-* Def +0 1 1 68 1 -0.117 0.090 0.751 C94 +0 1 1 68 23 0.373 0.153 0.635 C94 +0 1 1 68 32 -0.090 -0.169 0.075 C94 +0 5 1 68 1 0.134 -0.112 0.329 C94 +0 5 1 68 23 -0.361 -0.202 0.560 C94 +0 5 1 68 32 0.072 0.218 0.093 C94 +0 0 1 73 0 0.000 0.000 0.500 C94 0:*-1-73-* Def +0 5 1 73 32 0.000 0.000 0.509 X94 +0 5 1 73 72 0.000 0.000 0.443 X94 +0 0 1 75 0 0.000 0.000 0.000 E94 0:*1-75-* Def +0 0 1 78 0 0.000 0.000 0.000 E94 0:*1-78-* Def +0 0 1 80 0 0.000 0.000 0.000 E94 0:*1-80-* Def +0 0 1 81 0 0.000 0.000 0.000 E94 0:*1-81-* Def +0 0 2 2 0 0.000 12.000 0.000 C94 0:*-2=2-* Def +1 0 2 2 0 0.000 1.800 0.000 C94 1:*=2-2=* Def +5 0 2 2 0 0.000 12.000 0.000 C94 5:*-2=2-* Def +0 1 2 2 1 -0.403 12.000 0.000 C94 +0 1 2 2 2 0.000 12.000 0.000 C94 +1 1 2 2 2 -0.418 2.089 -0.310 C94 +0 1 2 2 5 0.000 12.000 0.000 C94 +1 1 2 2 5 0.412 2.120 0.269 C94 +1 2 2 2 2 0.094 1.621 0.877 C94 +0 2 2 2 5 0.000 12.000 0.000 C94 +1 2 2 2 5 0.317 1.421 -0.870 C94 +0 3 2 2 5 0.000 12.000 0.000 C94 +0 5 2 2 5 0.000 12.000 0.000 C94 +1 5 2 2 5 -0.406 1.767 0.000 C94 +0 5 2 2 6 0.000 12.000 0.000 C94 +0 5 2 2 37 0.000 12.000 0.000 C94 +0 5 2 2 40 0.000 12.000 0.000 C94 +0 5 2 2 41 0.000 12.000 0.000 C94 +0 5 2 2 45 0.000 12.000 0.000 X94 +0 5 2 2 62 0.000 12.000 0.000 X94 +1 0 2 3 0 0.000 2.500 0.000 #E94 0:*-2-3-* Def +1 1 2 3 1 0.136 1.798 0.630 C94 +1 1 2 3 5 0.497 2.405 0.357 C94 +1 1 2 3 6 -0.211 1.925 -0.131 C94 +1 1 2 3 7 -0.401 2.028 -0.318 C94 +1 1 2 3 10 -0.084 2.214 -0.610 C94 +1 2 2 3 1 -0.325 1.553 -0.487 C94 +1 2 2 3 5 -0.295 2.024 -0.590 C94 +1 2 2 3 6 -0.143 1.466 0.000 C94 +1 2 2 3 7 0.362 1.978 0.000 C94 +1 2 2 3 9 0.296 1.514 0.481 C94 +1 2 2 3 10 0.095 1.583 0.380 C94 +1 5 2 3 1 0.213 1.728 -0.042 C94 +1 5 2 3 5 -0.208 1.622 0.223 C94 +1 5 2 3 6 0.359 1.539 0.194 C94 +1 5 2 3 7 0.000 2.046 0.000 C94 +1 5 2 3 9 -0.290 1.519 -0.470 C94 +1 5 2 3 10 0.000 1.395 0.227 C94 +1 0 2 4 0 0.000 0.000 0.000 C94 0:*-2-4-* Def +0 0 2 6 0 0.000 3.100 0.000 C94 0:*-2-6-* Def +2 0 2 6 0 0.000 3.600 0.000 E94 2:*-2-6-* Def +5 0 2 6 0 0.000 3.600 0.000 E94 5:*-2-6-* Def +0 2 2 6 1 -1.953 3.953 -1.055 C94 +0 2 2 6 3 -1.712 2.596 -0.330 C94 +0 2 2 6 29 -0.215 2.810 -0.456 C94 +0 5 2 6 1 1.951 3.936 1.130 C94 +0 5 2 6 3 1.719 2.628 0.360 C94 +0 5 2 6 29 0.216 2.808 0.456 C94 +1 0 2 9 0 0.000 1.800 0.000 E94 1:*-2-9-* Def +0 0 2 10 0 0.000 6.000 0.000 E94 0:*-2-10-* Def +2 0 2 10 0 0.000 6.000 0.000 E94 2:*-2-10-* Def +5 0 2 10 0 0.000 6.000 0.000 E94 5:*-2-10-* Def +0 0 2 15 0 0.000 1.423 0.000 E94 0:*-2-15-* Def +2 0 2 15 0 0.000 1.423 0.000 E94 2:*-2-15-* Def +5 0 2 15 0 0.000 1.423 0.000 E94 5:*-2-15-* Def +0 0 2 17 0 0.000 1.423 0.000 E94 0:*-2-17-* Def +0 0 2 18 0 0.000 0.000 0.000 E94 0:*-2-18-* Def +2 0 2 18 0 0.000 0.000 0.000 E94 2:*-2-18-* Def +5 0 2 18 0 0.000 0.000 0.000 E94 5:*-2-18-* Def +0 0 2 19 0 0.000 0.000 0.000 E94 0:*-2-19-* Def +0 0 2 20 0 0.000 0.000 0.000 E94 0:*-2-20-* Def +2 0 2 20 0 0.000 0.000 0.000 E94 2:*-2-20-* Def +0 0 2 22 0 0.000 0.000 0.000 E94 0:*-2-22-* Def +2 0 2 22 0 0.000 0.000 0.000 E94 2:*-2-22-* Def +5 0 2 22 0 0.000 0.000 0.000 E94 5:*-2-22-* Def +0 0 2 25 0 0.000 0.000 0.000 E94 0:*-2-25-* Def +0 0 2 30 0 0.000 12.000 0.000 E94 0:*-2-30-* Def +0 0 2 34 0 0.000 0.000 0.000 E94 0:*-2-34-* Def +2 0 2 34 0 0.000 0.000 0.000 E94 2:*-2-34-* Def +1 0 2 37 0 0.000 2.000 0.000 C94 1:*-2-37-* Def +1 1 2 37 37 0.000 2.952 -0.079 C94 +1 2 2 37 37 0.000 1.542 0.434 C94 +1 5 2 37 37 0.000 1.308 -0.357 C94 +1 0 2 39 0 0.000 6.000 0.000 E94 1:*-2-39-* Def +0 0 2 40 0 0.000 3.700 0.000 C94 0:*-2-40-* Def +2 0 2 40 0 0.000 3.600 0.000 E94 2:*-2-40-* Def +5 0 2 40 0 0.000 3.600 0.000 E94 5:*-2-40-* Def +0 2 2 40 28 0.000 3.756 -0.530 C94 +0 5 2 40 28 0.073 3.698 0.291 C94 +0 0 2 41 0 0.000 1.200 0.000 C94 0:*-2-41-* Def +2 0 2 41 0 0.000 1.800 0.000 E94 2:*-2-41-* Def +0 2 2 41 32 0.000 1.235 0.000 C94 +0 5 2 41 32 0.000 1.231 0.000 C94 +0 0 2 43 0 0.000 3.600 0.000 E94 0:*-2-43-* Def +2 0 2 43 0 0.000 3.600 0.000 E94 2:*-2-43-* Def +0 0 2 45 0 0.000 2.200 0.000 C94 0:*-2-45-* Def +2 0 2 45 0 0.000 1.800 0.000 E94 2:*-2-45-* Def +0 2 2 45 32 0.000 2.212 0.000 X94 +0 5 2 45 32 0.000 2.225 0.000 X94 +0 0 2 46 0 0.000 1.800 0.000 E94 0:*-2-46-* Def +2 0 2 46 0 0.000 1.800 0.000 E94 2:*-2-46-* Def +0 0 2 55 0 0.000 4.800 0.000 E94 0:*-2-55-* Def +0 0 2 56 0 0.000 4.800 0.000 E94 0:*-2-56-* Def +0 0 2 62 0 0.000 8.000 0.000 C94 0:*-2-62-* Def +0 2 2 62 23 1.693 7.903 0.532 X94 +0 5 2 62 23 -1.696 7.897 -0.482 X94 +1 0 2 63 0 0.000 1.800 0.000 E94 1:*-2-63-* Def +1 0 2 64 0 0.000 1.800 0.000 E94 1:*-2-64-* Def +1 0 2 67 0 0.000 1.800 0.000 E94 1:*-2-67-* Def +1 0 2 81 0 0.000 4.800 0.000 E94 1:*-2-81-* Def +1 0 3 3 0 0.000 0.600 0.000 C94 0:*-3-3-* Def +4 0 3 3 0 0.000 1.800 0.000 E94 4:*-3-3-* Def +1 1 3 3 1 -0.486 0.714 0.000 C94 +1 1 3 3 6 -0.081 -0.125 0.132 C94 +1 1 3 3 7 1.053 1.327 0.000 C94 +1 5 3 3 6 0.000 0.188 0.436 C94 +1 5 3 3 7 0.000 0.177 -0.412 C94 +1 6 3 3 6 0.269 0.437 0.000 C94 +1 6 3 3 7 -0.495 0.793 -0.318 C94 +1 7 3 3 7 -0.260 1.084 0.193 C94 +0 0 3 6 0 0.000 5.500 0.000 C94 0:*-3-6-* Def +2 0 3 6 0 0.000 5.500 0.000 C94 2:*-3-6-* Def +4 0 3 6 0 0.000 3.600 0.000 E94 4:*-3-6-* Def +5 0 3 6 0 0.000 3.600 0.000 E94 5:*-3-6-* Def +0 1 3 6 1 -1.244 5.482 0.365 C94 +0 1 3 6 24 -1.166 5.078 -0.545 C94 +0 1 3 6 37 -0.677 5.854 0.521 C94 +2 2 3 6 24 0.256 4.519 0.258 C94 +2 3 3 6 24 1.663 4.073 0.094 C94 +0 5 3 6 1 0.526 5.631 0.691 C94 +0 5 3 6 2 0.159 6.586 0.216 C94 +0 5 3 6 24 -2.285 4.737 0.468 C94 +0 7 3 6 0 0.700 6.500 -0.400 C94 0:7-3-6-* Def +0 7 3 6 1 0.682 7.184 -0.935 C94 +0 7 3 6 2 -0.168 6.572 -0.151 C94 +0 7 3 6 24 1.662 6.152 -0.058 C94 +0 7 3 6 37 0.635 5.890 -0.446 C94 +2 37 3 6 24 0.000 3.892 -0.094 C94 +0 0 3 9 0 0.000 16.000 0.000 C94 0:*-3=9-* Def +1 0 3 9 0 0.000 1.800 0.000 E94 1:*-3-9-* Def +5 0 3 9 0 0.000 12.000 0.000 E94 5:*-3-9-* Def +0 2 3 9 27 0.000 16.000 0.000 C94 +0 5 3 9 1 0.687 16.152 0.894 C94 +0 5 3 9 27 0.000 16.000 0.000 C94 +0 40 3 9 1 -0.758 18.216 -0.188 C94 +0 40 3 9 27 0.000 16.000 0.000 C94 +0 0 3 10 0 0.000 6.000 0.000 C94 0:*-3-10-* Def +2 0 3 10 0 0.000 6.000 0.000 C94 2:*-3-10-* Def +4 0 3 10 0 0.000 6.000 0.000 C94 4:*-3-10-* Def +5 0 3 10 0 0.000 6.000 0.000 E94 5:*-3-10-* Def +0 1 3 10 1 0.647 6.159 0.507 C94 +0 1 3 10 6 -1.035 8.791 1.464 C94 +0 1 3 10 28 -0.294 5.805 1.342 C94 +2 2 3 10 28 -0.287 7.142 0.120 C94 +0 5 3 10 1 -0.183 6.314 1.753 C94 +0 5 3 10 3 -0.751 5.348 0.209 C94 +0 5 3 10 28 -0.388 5.972 0.459 C94 +0 7 3 10 1 -0.319 6.294 -0.147 C94 +0 7 3 10 3 0.776 -0.585 -0.145 C94 +0 7 3 10 6 1.107 8.631 -0.452 C94 +0 7 3 10 28 1.435 4.975 -0.454 C94 +0 10 3 10 28 0.000 3.495 1.291 C94 +0 0 3 15 0 0.000 1.423 0.000 E94 0:*-3-15-* Def +2 0 3 15 0 0.000 1.423 0.000 E94 2:*-3-15-* Def +4 0 3 15 0 0.000 1.423 0.000 E94 4:*-3-15-* Def +5 0 3 15 0 0.000 1.423 0.000 E94 5:*-3-15-* Def +0 0 3 17 0 0.000 1.423 0.000 E94 0:*-3-17-* Def +5 0 3 17 0 0.000 1.423 0.000 E94 5:*-3-17-* Def +0 0 3 18 0 0.000 0.000 0.000 E94 0:*-3-18-* Def +2 0 3 18 0 0.000 0.000 0.000 E94 2:*-3-18-* Def +0 0 3 20 0 0.000 0.000 -0.300 C94 0:*-3-20-* Def +2 0 3 20 0 0.000 0.000 0.000 E94 2:*-3-20-* Def +4 0 3 20 0 0.000 0.000 -0.300 C94 4:*-3-20-* Def +5 0 3 20 0 0.000 0.000 0.000 E94 5:*-3-20-* Def +0 7 3 20 0 0.000 0.400 0.400 C94 0:7-3-20-* Def +0 7 3 20 5 0.000 0.000 -0.131 C94 +0 7 3 20 20 0.000 0.000 0.000 C94 +0 20 3 20 5 0.000 0.000 0.085 C94 +0 20 3 20 20 0.000 0.000 0.000 C94 +0 0 3 22 0 0.000 0.000 0.000 E94 0:*-3-22-* Def +2 0 3 22 0 0.000 0.000 0.000 E94 2:*-3-22-* Def +4 0 3 22 0 0.000 0.000 0.000 E94 4:*-3-22-* Def +5 0 3 22 0 0.000 0.000 0.000 E94 5:*-3-22-* Def +0 7 3 22 0 0.000 0.400 0.400 C94 0:7-3-22-* Def +0 0 3 25 0 0.000 0.000 0.000 E94 0:*-3-25-* Def +2 0 3 25 0 0.000 0.000 0.000 E94 2:*-3-25-* Def +1 0 3 30 0 0.000 1.800 0.000 E94 1:*-3-30-* Def +4 0 3 30 0 0.000 1.800 0.000 E94 4:*-3-30-* Def +1 0 3 37 0 0.000 2.500 0.000 #E94 1:*-3-37-* Def +4 0 3 37 0 0.000 1.800 0.000 E94 4:*-3-37-* Def +1 1 3 37 37 0.000 2.428 0.000 C94 +1 6 3 37 37 0.000 1.743 0.000 C94 +1 7 3 37 37 0.000 2.256 0.000 C94 +1 43 3 37 37 -0.241 3.385 -0.838 X94 +1 0 3 39 0 0.000 5.500 0.000 #E94 1:*-3-39-* Def +0 0 3 40 0 0.000 3.900 0.000 C94 0:*-3-40-* Def +2 0 3 40 0 0.000 3.600 0.000 E94 2:*-3-40-* Def +5 0 3 40 0 0.000 3.600 0.000 E94 5:*-3-40-* Def +0 5 3 40 28 -1.477 4.362 0.902 C94 +0 9 3 40 28 1.496 4.369 -0.417 C94 +0 40 3 40 28 0.178 3.149 0.778 C94 +0 0 3 41 0 0.000 1.800 0.000 E94 0:*-3-41-* Def +2 0 3 41 0 0.000 1.800 0.000 E94 2:*-3-41-* Def +0 0 3 43 0 0.000 4.500 0.000 C94 0:*-3-43-* Def +2 0 3 43 0 0.000 3.600 0.000 E94 2:*-3-43-* Def +4 0 3 43 0 0.000 3.600 0.000 E94 4:*-3-43-* Def +5 0 3 43 0 0.000 3.600 0.000 E94 5:*-3-43-* Def +0 1 3 43 18 1.712 3.309 0.233 X94 +0 1 3 43 28 -0.414 4.168 -0.875 X94 +0 7 3 43 18 -0.880 5.091 -0.129 X94 +0 7 3 43 28 0.536 5.276 -0.556 X94 +2 37 3 43 18 -0.701 4.871 1.225 X94 +2 37 3 43 28 -0.086 5.073 0.878 X94 +0 0 3 45 0 0.000 1.800 0.000 E94 0:*-3-45-* Def +2 0 3 45 0 0.000 1.800 0.000 E94 2:*-3-45-* Def +0 0 3 48 0 0.000 0.000 0.892 E94 0:*-3-48-* Def +0 0 3 51 0 0.000 13.500 0.000 C94 0:*-3-51-* Def +0 1 3 51 52 0.000 13.549 0.000 X94 +0 0 3 54 0 0.000 8.000 0.000 C94 0:*-3-54-* Def +1 0 3 54 0 0.000 2.500 0.000 #E94 1:*-3-54-* Def +5 0 3 54 0 0.000 12.000 0.000 E94 5:*-3-54-* Def +0 5 3 54 1 0.000 8.000 0.000 C94 +0 5 3 54 36 0.000 8.000 0.000 C94 +0 0 3 55 0 0.000 4.800 0.000 E94 0:*-3-55-* Def +2 0 3 55 0 0.000 4.800 0.000 E94 2:*-3-55-* Def +0 0 3 56 0 0.000 4.800 0.000 E94 0:*-3-56-* Def +2 0 3 56 0 0.000 4.800 0.000 E94 2:*-3-56-* Def +1 0 3 57 0 0.000 2.500 0.000 #E94 1:*-3-57-* Def +1 0 3 58 0 0.000 4.800 0.000 E94 1:*-3-58-* Def +0 0 3 62 0 0.000 3.600 0.000 E94 0:*-3-62-* Def +2 0 3 62 0 0.000 3.600 0.000 E94 2:*-3-62-* Def +5 0 3 62 0 0.000 3.600 0.000 E94 5:*-3-62-* Def +1 0 3 63 0 0.000 2.500 0.000 #E94 1:*-3-63-* Def +1 0 3 64 0 0.000 2.500 0.000 #E94 1:*-3-64-* Def +0 0 3 67 0 0.000 12.000 0.000 E94 0:*-3-67-* Def +0 0 3 74 0 0.000 19.000 0.000 C94 0:*-3-74-* Def +0 1 3 74 7 0.000 19.349 0.000 X94 +0 0 3 75 0 0.000 19.000 0.000 C94 0:*-3-75-* Def +0 1 3 75 71 0.000 18.751 0.000 X94 +1 0 3 78 0 0.000 2.500 0.000 #E94 1:*-3-78-* Def +1 0 3 80 0 0.000 2.500 0.000 #E94 1:*-3-80-* Def +0 0 6 6 0 0.000 -2.000 0.000 E94 0:*-6-6-* Def +5 0 6 6 0 0.000 -2.000 0.000 E94 5:*-6-6-* Def +0 0 6 8 0 0.900 -1.100 -0.500 C94 0:*-6-8-* Def +5 0 6 8 0 0.000 0.000 0.274 E94 5:*-6-8-* Def +0 21 6 8 1 0.261 -0.330 -0.542 C94 +0 21 6 8 23 1.503 -1.853 -0.476 C94 +0 0 6 9 0 0.000 3.600 0.000 E94 0:*-6-9-* Def +5 0 6 9 0 0.000 3.600 0.000 E94 5:*-6-9-* Def +0 0 6 10 0 1.200 0.500 -1.000 C94 0:*-6-10-* Def +0 21 6 10 1 0.875 0.180 -0.733 C94 +0 21 6 10 3 0.529 0.000 -1.163 C94 +0 0 6 15 0 0.000 -4.000 0.000 E94 0:*-6-15-* Def +0 0 6 17 0 0.000 1.423 0.000 E94 0:*-6-17-* Def +5 0 6 17 0 0.000 1.423 0.000 E94 5:*-6-17-* Def +0 0 6 18 0 0.000 0.000 0.100 C94 0:*-6-18-* Def +5 0 6 18 0 0.000 0.000 0.103 E94 5:*-6-18-* Def +0 33 6 18 1 -0.520 -0.471 -0.267 X94 +0 33 6 18 6 -1.623 0.204 0.438 X94 +0 33 6 18 32 1.616 0.425 0.191 X94 +0 0 6 19 0 0.000 0.000 0.150 C94 0:*-6-19-* Def +5 0 6 19 0 0.000 0.000 0.165 E94 5:*-6-19-* Def +0 21 6 19 1 -0.620 -0.329 0.303 X94 +0 21 6 19 5 0.683 0.220 0.000 X94 +0 0 6 20 0 0.000 0.000 0.400 C94 0:*-6-20-* Def +4 0 6 20 0 0.000 0.000 0.217 E94 4:*-6-20-* Def +5 0 6 20 0 0.000 0.000 0.217 E94 5:*-6-20-* Def +0 20 6 20 5 0.000 0.000 -0.079 C94 +4 20 6 20 20 0.000 0.000 0.000 C94 +0 0 6 22 0 0.000 0.000 0.217 E94 0:*-6-22-* Def +0 0 6 25 0 0.000 0.000 0.650 C94 0:*-6-25-* Def +5 0 6 25 0 0.000 0.000 0.231 E94 5:*-6-25-* Def +0 1 6 25 1 -1.704 -0.452 0.556 X94 +0 1 6 25 6 0.000 0.000 0.777 X94 +0 1 6 25 32 1.205 0.914 0.612 X94 +0 24 6 25 6 -3.209 -7.622 1.065 X94 +0 24 6 25 32 -5.891 -3.332 0.290 X94 +0 0 6 26 0 0.000 0.000 0.346 E94 0:*-6-26-* Def +0 0 6 30 0 0.000 3.600 0.000 E94 0:*-6-30-* Def +2 0 6 30 0 0.000 3.600 0.000 E94 2:*-6-30-* Def +0 0 6 37 0 0.000 3.200 0.000 C94 0:*-6-37-* Def +5 0 6 37 0 0.000 3.600 0.000 E94 5:*-6-37-* Def +0 1 6 37 37 0.000 4.382 0.000 C94 +0 3 6 37 37 0.000 2.576 0.000 C94 +0 29 6 37 37 0.000 2.801 0.000 C94 +0 0 6 39 0 0.000 0.000 0.000 E94 0:*-6-39-* Def +0 0 6 40 0 0.000 0.000 0.274 E94 0:*-6-40-* Def +0 0 6 41 0 0.000 3.600 0.000 E94 0:*-6-41-* Def +0 0 6 43 0 0.000 0.000 0.274 E94 0:*-6-43-* Def +0 0 6 45 0 0.000 6.000 0.000 C94 0:*-6-45-* Def +0 1 6 45 32 0.000 6.208 0.000 X94 +0 0 6 54 0 0.000 3.600 0.000 E94 0:*-6-54-* Def +0 0 6 55 0 0.000 3.600 0.000 E94 0:*-6-55-* Def +0 0 6 57 0 0.000 3.600 0.000 E94 0:*-6-57-* Def +0 0 6 58 0 0.000 3.600 0.000 E94 0:*-6-58-* Def +0 0 6 63 0 0.000 3.600 0.000 E94 0:*-6-63-* Def +0 0 6 64 0 0.000 3.600 0.000 E94 0:*-6-64-* Def +0 0 8 8 0 0.000 0.000 0.375 E94 0:*-8-8-* Def +5 0 8 8 0 0.000 0.000 0.375 E94 5:*-8-8-* Def +0 0 8 9 0 0.000 3.600 0.000 E94 0:*-8-9-* Def +5 0 8 9 0 0.000 3.600 0.000 E94 5:*-8-9-* Def +0 0 8 10 0 0.000 0.000 0.000 E94 0:*-8-10-* Def +4 0 8 10 0 0.000 0.000 0.000 E94 4:*-8-10-* Def +0 0 8 15 0 0.000 0.000 0.424 E94 0:*-8-15-* Def +0 0 8 17 0 0.000 1.423 0.000 E94 0:*-8-17-* Def +4 0 8 17 0 0.000 1.423 0.000 E94 4:*-8-17-* Def +5 0 8 17 0 0.000 1.423 0.000 E94 5:*-8-17-* Def +0 0 8 19 0 0.000 0.000 0.225 E94 0:*-8-19-* Def +0 0 8 20 0 0.000 0.000 0.350 C94 0:*-8-20-* Def +4 0 8 20 0 0.000 0.000 0.300 C94 4:*-8-20-* Def +5 0 8 20 0 0.000 0.000 0.297 E94 5:*-8-20-* Def +0 20 8 20 5 0.000 0.120 0.472 C94 +4 20 8 20 20 0.000 -0.097 0.200 C94 +0 23 8 20 5 -0.101 -0.324 0.371 C94 +0 23 8 20 20 0.107 0.253 0.151 C94 +0 0 8 22 0 0.000 0.000 0.297 E94 0:*-8-22-* Def +0 0 8 25 0 0.000 0.000 0.316 E94 0:*-8-25-* Def +5 0 8 25 0 0.000 0.000 0.316 E94 5:*-8-25-* Def +0 0 8 26 0 0.000 0.000 0.474 E94 0:*-8-26-* Def +5 0 8 26 0 0.000 0.000 0.474 E94 5:*-8-26-* Def +0 0 8 34 0 0.000 0.000 0.250 E94 0:*-8-34-* Def +0 0 8 39 0 0.000 0.000 0.000 E94 0:*-8-39-* Def +0 0 8 40 0 0.000 0.000 0.375 E94 0:*-8-40-* Def +0 0 8 43 0 0.000 0.000 0.375 E94 0:*-8-43-* Def +0 0 8 45 0 0.000 3.600 0.000 E94 0:*-8-45-* Def +0 0 8 46 0 0.000 3.600 0.000 E94 0:*-8-46-* Def +0 0 8 55 0 0.000 3.600 0.000 E94 0:*-8-55-* Def +0 0 8 56 0 0.000 3.600 0.000 E94 0:*-8-56-* Def +0 0 9 9 0 0.000 12.000 0.000 E94 0:*-9-9-* Def +1 0 9 9 0 0.000 1.800 0.000 E94 1:*-9-9-* Def +5 0 9 9 0 0.000 12.000 0.000 E94 5:*-9-9-* Def +0 0 9 10 0 0.000 6.000 0.000 E94 0:*-9-10-* Def +5 0 9 10 0 0.000 6.000 0.000 E94 5:*-9-10-* Def +0 0 9 15 0 0.000 1.423 0.000 E94 0:*-9-15-* Def +0 0 9 18 0 0.000 0.000 0.000 E94 0:*-9-18-* Def +0 0 9 19 0 0.000 0.000 0.000 E94 0:*-9-19-* Def +0 0 9 20 0 0.000 0.000 0.000 E94 0:*-9-20-* Def +0 0 9 25 0 0.000 0.000 0.000 E94 0:*-9-25-* Def +0 0 9 34 0 0.000 0.000 0.000 E94 0:*-9-34-* Def +5 0 9 34 0 0.000 0.000 0.000 E94 5:*-9-34-* Def +1 0 9 37 0 0.000 1.800 0.000 E94 1:*-9-37-* Def +1 0 9 39 0 0.000 6.000 0.000 E94 1:*-9-39-* Def +0 0 9 40 0 0.000 3.600 0.000 E94 0:*-9-40-* Def +0 0 9 41 0 0.000 4.800 0.000 E94 0:*-9-41-* Def +0 0 9 45 0 0.000 1.800 0.000 E94 0:*-9-45-* Def +0 0 9 54 0 0.000 12.000 0.000 E94 0:*-9-54-* Def +0 0 9 55 0 0.000 4.800 0.000 E94 0:*-9-55-* Def +0 0 9 56 0 0.000 4.800 0.000 E94 0:*-9-56-* Def +1 0 9 57 0 0.000 1.800 0.000 E94 1:*-9-57-* Def +0 0 9 62 0 0.000 3.600 0.000 E94 0:*-9-62-* Def +1 0 9 63 0 0.000 1.800 0.000 E94 1:*-9-63-* Def +1 0 9 64 0 0.000 1.800 0.000 E94 1:*-9-64-* Def +0 0 9 67 0 0.000 12.000 0.000 E94 0:*-9-67-* Def +1 0 9 78 0 0.000 1.800 0.000 E94 1:*-9-78-* Def +1 0 9 81 0 0.000 4.800 0.000 E94 1:*-9-81-* Def +0 0 10 10 0 0.000 0.000 0.000 E94 0:*-10-10-* Def +5 0 10 10 0 0.000 0.000 0.000 E94 5:*-10-10-* Def +0 0 10 15 0 0.000 0.000 0.000 E94 0:*-10-15-* Def +0 0 10 17 0 0.000 4.743 0.000 E94 0:*-10-17-* Def +0 0 10 20 0 0.000 0.000 0.000 E94 0:*-10-20-* Def +4 0 10 20 0 0.000 0.000 0.000 E94 4:*-10-20-* Def +5 0 10 20 0 0.000 0.000 0.000 E94 5:*-10-20-* Def +0 0 10 22 0 0.000 0.000 0.000 E94 0:*-10-22-* Def +0 0 10 25 0 0.000 0.000 0.000 E94 0:*-10-25-* Def +0 0 10 26 0 0.000 0.000 0.000 E94 0:*-10-26-* Def +5 0 10 26 0 0.000 0.000 0.000 E94 5:*-10-26-* Def +0 0 10 34 0 0.000 0.000 0.000 E94 0:*-10-34-* Def +0 0 10 37 0 0.000 6.000 0.000 E94 0:*-10-37-* Def +0 0 10 39 0 0.000 0.000 0.000 E94 0:*-10-39-* Def +0 0 10 40 0 0.000 0.000 0.000 E94 0:*-10-40-* Def +5 0 10 40 0 0.000 0.000 0.000 E94 5:*-10-40-* Def +0 0 10 41 0 0.000 6.000 0.000 E94 0:*-10-41-* Def +0 0 10 45 0 0.000 6.000 0.000 E94 0:*-10-45-* Def +0 0 10 63 0 0.000 6.000 0.000 E94 0:*-10-63-* Def +0 0 10 64 0 0.000 6.000 0.000 E94 0:*-10-64-* Def +0 0 15 15 0 -1.400 -8.300 1.000 C94 0:*-15-15-* Def +5 0 15 15 0 0.000 -8.000 0.000 E94 5:*-15-15-* Def +0 1 15 15 1 -1.663 -8.408 1.433 C94 +0 1 15 15 71 -1.088 -8.245 0.411 C94 +0 0 15 18 0 0.000 0.000 0.160 E94 0:*-15-18-* Def +0 0 15 19 0 0.000 0.000 0.255 E94 0:*-15-19-* Def +5 0 15 19 0 0.000 0.000 0.255 E94 5:*-15-19-* Def +0 0 15 20 0 0.000 0.000 0.336 E94 0:*-15-20-* Def +4 0 15 20 0 0.000 0.000 0.336 E94 4:*-15-20-* Def +0 0 15 22 0 0.000 0.000 0.336 E94 0:*-15-22-* Def +0 0 15 25 0 0.000 0.000 0.358 E94 0:*-15-25-* Def +4 0 15 25 0 0.000 0.000 0.358 E94 4:*-15-25-* Def +0 0 15 26 0 0.000 0.000 0.537 E94 0:*-15-26-* Def +0 0 15 30 0 0.000 1.423 0.000 E94 0:*-15-30-* Def +4 0 15 30 0 0.000 1.423 0.000 E94 4:*-15-30-* Def +0 0 15 37 0 0.000 1.300 0.000 C94 0:*-15-37-* Def +5 0 15 37 0 0.000 1.423 0.000 E94 5:*-15-37-* Def +0 1 15 37 37 0.000 2.177 0.000 C94 +0 71 15 37 37 0.000 0.505 0.333 C94 +0 0 15 40 0 0.000 0.000 0.424 E94 0:*-15-40-* Def +0 0 15 43 0 0.000 0.000 0.424 E94 0:*-15-43-* Def +0 0 15 57 0 0.000 1.423 0.000 E94 0:*-15-57-* Def +0 0 15 63 0 0.000 1.423 0.000 E94 0:*-15-63-* Def +0 0 15 64 0 0.000 1.423 0.000 E94 0:*-15-64-* Def +0 0 17 20 0 0.000 0.000 0.000 E94 0:*-17-20-* Def +4 0 17 20 0 0.000 0.000 0.000 E94 4:*-17-20-* Def +5 0 17 20 0 0.000 0.000 0.000 E94 5:*-17-20-* Def +0 0 17 22 0 0.000 0.000 0.000 E94 0:*-17-22-* Def +0 0 17 37 0 0.000 1.423 0.000 E94 0:*-17-37-* Def +0 0 17 43 0 0.000 3.795 0.000 E94 0:*-17-43-* Def +0 0 18 20 0 0.000 0.000 0.112 E94 0:*-18-20-* Def +4 0 18 20 0 0.000 0.000 0.112 E94 4:*-18-20-* Def +5 0 18 20 0 0.000 0.000 0.112 E94 5:*-18-20-* Def +0 0 18 22 0 0.000 0.000 0.112 E94 0:*-18-22-* Def +0 0 18 37 0 0.000 -1.200 -0.300 C94 0:*-18-37-* Def +0 32 18 37 37 -0.173 -0.965 -0.610 X94 +0 39 18 37 37 0.000 -0.760 0.227 X94 +0 43 18 37 37 0.228 -1.741 -0.371 X94 +0 0 18 39 0 0.000 0.000 0.500 C94 0:*-18-39-* Def +0 32 18 39 63 0.000 0.687 0.680 X94 +0 37 18 39 63 0.000 -0.513 0.357 X94 +0 0 18 43 0 0.000 0.000 0.350 C94 0:*-18-43-* Def +4 0 18 43 0 0.000 0.000 0.141 E94 4:*-18-43-* Def +5 0 18 43 0 0.000 0.000 0.141 E94 5:*-18-43-* Def +0 1 18 43 1 -0.914 -0.482 0.179 X94 +0 1 18 43 3 -0.392 -2.724 0.312 X94 +0 1 18 43 28 -1.508 -1.816 -0.175 X94 +0 1 18 43 37 0.823 -1.220 -0.770 X94 +0 32 18 43 1 1.588 1.499 1.410 X94 +0 32 18 43 3 0.653 0.254 0.000 X94 +0 32 18 43 28 0.528 0.342 0.000 X94 +0 32 18 43 37 0.812 1.513 1.266 X94 +0 37 18 43 1 -1.139 -0.703 1.088 X94 +0 37 18 43 28 -2.014 -1.646 -2.068 X94 +0 37 18 43 37 -1.519 -0.328 1.437 X94 +0 43 18 43 28 3.011 -1.405 2.038 X94 +0 0 18 48 0 0.000 0.000 0.400 C94 0:*-18-48-* Def +0 1 18 48 28 1.767 1.606 0.408 X94 +0 32 18 48 28 -1.463 -2.548 0.310 X94 +0 0 18 55 0 0.000 0.000 0.000 E94 0:*-18-55-* Def +0 0 18 58 0 0.000 0.000 0.000 E94 0:*-18-58-* Def +0 0 18 62 0 0.000 0.000 0.500 C94 0:*-18-62-* Def +0 1 18 62 1 -0.403 -0.273 0.440 X94 +0 32 18 62 1 0.291 0.385 0.582 X94 +0 0 18 63 0 0.000 0.000 0.000 E94 0:*-18-63-* Def +0 0 18 64 0 0.000 0.000 0.000 E94 0:*-18-64-* Def +0 0 18 80 0 0.000 0.000 0.000 E94 0:*-18-80-* Def +0 0 19 20 0 0.000 0.000 0.179 E94 0:*-19-20-* Def +4 0 19 20 0 0.000 0.000 0.179 E94 4:*-19-20-* Def +0 0 19 37 0 0.000 0.000 0.000 E94 0:*-19-37-* Def +0 0 19 40 0 0.000 0.000 0.225 E94 0:*-19-40-* Def +0 0 19 63 0 0.000 0.000 0.000 E94 0:*-19-63-* Def +0 0 19 75 0 0.000 0.000 0.000 E94 0:*-19-75-* Def +0 0 20 20 0 0.000 0.000 0.200 C94 0:*-20-20-* Def +4 0 20 20 0 0.000 0.000 0.000 C94 4:*-20-20-* Def +5 0 20 20 0 0.000 0.000 0.236 E94 5:*-20-20-* Def +0 1 20 20 5 0.067 0.081 0.347 C94 +0 1 20 20 20 -0.063 -0.064 0.140 C94 +0 3 20 20 5 0.000 0.000 0.083 C94 +0 3 20 20 20 0.000 0.000 0.000 C94 +0 5 20 20 5 0.000 0.000 0.424 C94 +0 5 20 20 6 0.000 0.000 -0.080 C94 +0 5 20 20 8 0.000 0.127 0.450 C94 +0 5 20 20 12 -0.072 -0.269 0.439 C94 +0 5 20 20 20 -0.057 0.000 0.307 C94 +4 6 20 20 20 0.000 0.000 0.000 C94 +4 8 20 20 20 0.000 -0.091 0.192 C94 +0 12 20 20 20 0.077 0.202 0.183 C94 +4 20 20 20 20 0.000 0.000 0.000 C94 +0 0 20 22 0 0.000 0.000 0.236 E94 0:*-20-22-* Def +4 0 20 22 0 0.000 0.000 0.236 E94 4:*-20-22-* Def +0 0 20 25 0 0.000 0.000 0.251 E94 0:*-20-25-* Def +4 0 20 25 0 0.000 0.000 0.251 E94 4:*-20-25-* Def +0 0 20 26 0 0.000 0.000 0.376 E94 0:*-20-26-* Def +4 0 20 26 0 0.000 0.000 0.376 E94 4:*-20-26-* Def +5 0 20 26 0 0.000 0.000 0.376 E94 5:*-20-26-* Def +0 0 20 30 0 0.000 0.000 0.000 E94 0:*-20-30-* Def +2 0 20 30 0 0.000 0.000 0.000 E94 2:*-20-30-* Def +4 0 20 30 0 0.000 0.000 0.000 E94 4:*-20-30-* Def +0 0 20 30 30 0.000 0.000 -0.500 C94 0:*-20-30=30 Def +0 0 20 34 0 0.000 0.000 0.198 E94 0:*-20-34-* Def +4 0 20 34 0 0.000 0.000 0.198 E94 4:*-20-34-* Def +0 0 20 37 0 0.000 0.000 0.000 E94 0:*-20-37-* Def +4 0 20 37 0 0.000 0.000 0.000 E94 4:*-20-37-* Def +0 0 20 40 0 0.000 0.000 0.297 E94 0:*-20-40-* Def +0 0 20 41 0 0.000 0.000 0.000 E94 0:*-20-41-* Def +0 0 20 43 0 0.000 0.000 0.297 E94 0:*-20-43-* Def +4 0 20 43 0 0.000 0.000 0.297 E94 4:*-20-43-* Def +0 0 20 45 0 0.000 0.000 0.000 E94 0:*-20-45-* Def +0 0 22 22 0 0.000 0.000 0.236 E94 0:*-22-22-* Def +4 0 22 22 0 0.000 0.000 0.236 E94 4:*-22-22-* Def +5 0 22 22 0 0.000 0.000 0.236 E94 5:*-22-22-* Def +0 0 22 30 0 0.000 0.000 0.000 E94 0:*-22-30-* Def +4 0 22 30 0 0.000 0.000 0.000 E94 4:*-22-30-* Def +0 0 22 34 0 0.000 0.000 0.198 E94 0:*-22-34-* Def +0 0 22 37 0 0.000 0.000 0.000 E94 0:*-22-37-* Def +0 0 22 40 0 0.000 0.000 0.297 E94 0:*-22-40-* Def +0 0 22 41 0 0.000 0.000 0.000 E94 0:*-22-41-* Def +0 0 22 43 0 0.000 0.000 0.297 E94 0:*-22-43-* Def +5 0 22 43 0 0.000 0.000 0.297 E94 5:*-22-43-* Def +0 0 22 45 0 0.000 0.000 0.000 E94 0:*-22-45-* Def +0 0 25 25 0 0.000 0.000 0.267 E94 0:*-25-25-* Def +0 0 25 37 0 0.000 0.000 0.000 E94 0:*-25-37-* Def +5 0 25 37 0 0.000 0.000 0.000 E94 5:*-25-37-* Def +0 0 25 39 0 0.000 0.000 0.000 E94 0:*-25-39-* Def +0 0 25 40 0 0.000 0.000 0.316 E94 0:*-25-40-* Def +5 0 25 40 0 0.000 0.000 0.316 E94 5:*-25-40-* Def +0 0 25 43 0 0.000 0.000 0.250 C94 0:*-25-43-* Def +0 1 25 43 1 -2.686 -1.512 0.591 X94 +0 1 25 43 28 -3.730 -0.531 0.000 X94 +0 32 25 43 1 2.108 1.896 0.965 X94 +0 32 25 43 28 2.977 0.732 -0.502 X94 +0 0 25 57 0 0.000 0.000 0.000 E94 0:*-25-57-* Def +0 0 25 63 0 0.000 0.000 0.000 E94 0:*-25-63-* Def +0 0 26 26 0 0.000 0.000 0.600 E94 0:*-26-26-* Def +5 0 26 26 0 0.000 0.000 0.600 E94 5:*-26-26-* Def +0 0 26 34 0 0.000 0.000 0.316 E94 0:*-26-34-* Def +5 0 26 34 0 0.000 0.000 0.316 E94 5:*-26-34-* Def +0 0 26 37 0 0.000 1.423 0.000 E94 0:*-26-37-* Def +0 0 26 40 0 0.000 0.000 0.474 E94 0:*-26-40-* Def +0 0 30 30 0 0.000 12.000 0.000 E94 0:*-30-30-* Def +1 0 30 30 0 0.000 1.800 0.000 E94 1:*-30-30-* Def +4 0 30 30 0 0.000 1.800 0.000 E94 4:*-30-30-* Def +0 0 30 40 0 0.000 3.600 0.000 E94 0:*-30-40-* Def +1 0 30 67 0 0.000 1.800 0.000 E94 1:*-30-67-* Def +0 0 34 37 0 0.000 0.000 0.000 E94 0:*-34-37-* Def +0 0 34 43 0 0.000 0.000 0.250 E94 0:*-34-43-* Def +0 0 37 37 0 0.000 7.000 0.000 C94 0:*-37-37-* Def +1 0 37 37 0 0.000 2.000 0.000 #E94 1:*-37-37-* Def +4 0 37 37 0 0.000 6.000 0.000 E94 4:*-37-37-* Def +5 0 37 37 0 0.000 6.000 0.000 E94 5:*-37-37-* Def +0 1 37 37 5 0.000 7.000 0.000 C94 +0 1 37 37 37 0.000 7.000 0.000 C94 +0 2 37 37 5 0.000 7.000 0.000 C94 +0 2 37 37 37 0.000 7.000 0.000 C94 +0 3 37 37 5 0.000 7.000 0.000 C94 +0 3 37 37 37 0.000 7.000 0.000 C94 +0 5 37 37 5 0.000 7.000 0.000 C94 +0 5 37 37 6 0.000 7.000 0.000 C94 +0 5 37 37 15 0.000 7.000 0.000 C94 +0 5 37 37 18 0.000 7.000 0.000 X94 +0 5 37 37 37 0.000 7.000 0.000 C94 +0 5 37 37 40 0.000 7.000 0.000 C94 +0 5 37 37 43 0.000 7.000 0.000 X94 +0 6 37 37 37 0.000 7.000 0.000 C94 +0 15 37 37 37 0.000 7.000 0.000 C94 +0 18 37 37 37 0.000 7.000 0.000 X94 +0 37 37 37 37 0.000 7.000 0.000 C94 +0 37 37 37 40 0.000 7.000 0.000 C94 +0 37 37 37 43 0.000 7.000 0.000 X94 +0 0 37 38 0 0.000 7.000 0.000 C94 0:*-37-38-* Def +0 0 37 39 0 0.000 3.600 0.000 E94 0:*-37-39-* Def +1 0 37 39 0 0.000 6.000 0.000 E94 1:*-37-39-* Def +0 0 37 40 0 0.000 4.000 0.000 C94 0:*-37-40-* Def +5 0 37 40 0 0.000 3.600 0.000 E94 5:*-37-40-* Def +0 37 37 40 1 0.000 4.336 0.370 C94 +0 37 37 40 28 0.715 2.628 3.355 C94 +0 0 37 41 0 0.000 1.800 0.000 E94 0:*-37-41-* Def +0 0 37 43 0 0.000 2.000 1.800 C94 0:*-37-43-* Def +5 0 37 43 0 0.000 3.600 0.000 E94 5:*-37-43-* Def +0 37 37 43 18 0.372 2.284 2.034 X94 +0 37 37 43 28 0.000 1.694 1.508 X94 +0 0 37 45 0 0.000 1.800 0.000 E94 0:*-37-45-* Def +0 0 37 46 0 0.000 1.800 0.000 E94 0:*-37-46-* Def +0 0 37 55 0 0.000 4.800 0.000 E94 0:*-37-55-* Def +0 0 37 56 0 0.000 4.800 0.000 E94 0:*-37-56-* Def +1 0 37 57 0 0.000 1.800 0.000 E94 1:*-37-57-* Def +0 0 37 58 0 0.000 6.000 0.000 E94 0:*-37-58-* Def +1 0 37 58 0 0.000 4.800 0.000 E94 1:*-37-58-* Def +0 0 37 62 0 0.000 3.600 0.000 E94 0:*-37-62-* Def +0 0 37 63 0 0.000 7.000 0.000 C94 0:*-37-63-* Def +1 0 37 63 0 0.000 1.800 0.000 E94 1:*-37-63-* Def +0 0 37 64 0 0.000 7.000 0.000 C94 0:*-37-64-* Def +1 0 37 64 0 0.000 1.800 0.000 E94 1:*-37-64-* Def +1 0 37 67 0 0.000 1.800 0.000 E94 1:*-37-67-* Def +0 0 37 69 0 0.000 7.000 0.000 C94 0:*-37-69-* Def +0 0 37 78 0 0.000 6.000 0.000 E94 0:*-37-78-* Def +0 0 37 81 0 0.000 6.000 0.000 E94 0:*-37-81-* Def +1 0 37 81 0 0.000 4.800 0.000 E94 1:*-37-81-* Def +0 0 38 38 0 0.000 7.000 0.000 C94 0:*-38-38-* Def +0 0 38 58 0 0.000 7.000 0.000 C94 0:*-38-58-* Def +0 0 38 63 0 0.000 7.000 0.000 C94 0:*-38-63-* Def +0 0 38 64 0 0.000 7.000 0.000 C94 0:*-38-64-* Def +0 0 38 69 0 0.000 6.000 0.000 E94 0:*-38-69-* Def +0 0 38 78 0 0.000 6.000 0.000 E94 0:*-38-78-* Def +0 0 39 40 0 0.000 0.000 0.000 E94 0:*-39-40-* Def +0 0 39 45 0 0.000 6.000 0.000 E94 0:*-39-45-* Def +0 0 39 63 0 0.000 4.000 0.000 C94 0:*-39-63-* Def +1 0 39 63 0 0.000 6.000 0.000 E94 1:*-39-63-* Def +5 0 39 63 0 0.000 3.600 0.000 E94 5:*-39-63-* Def +0 1 39 63 5 0.000 4.000 0.000 C94 +0 1 39 63 64 0.000 4.000 0.000 C94 +0 18 39 63 5 0.000 4.000 0.000 X94 +0 18 39 63 64 0.000 4.000 0.000 X94 +0 63 39 63 5 0.000 4.000 0.000 C94 +0 63 39 63 64 0.000 4.000 0.000 C94 +0 0 39 64 0 0.000 3.600 0.000 E94 0:*-39-64-* Def +1 0 39 64 0 0.000 6.000 0.000 E94 1:*-39-64-* Def +0 0 39 65 0 0.000 4.000 0.000 C94 0:*-39-65-* Def +0 0 39 78 0 0.000 3.600 0.000 E94 0:*-39-78-* Def +0 0 40 40 0 0.000 0.000 0.375 E94 0:*-40-40-* Def +0 0 40 45 0 0.000 3.600 0.000 E94 0:*-40-45-* Def +0 0 40 46 0 0.000 3.600 0.000 E94 0:*-40-46-* Def +0 0 40 54 0 0.000 3.600 0.000 E94 0:*-40-54-* Def +2 0 40 54 0 0.000 3.600 0.000 E94 2:*-40-54-* Def +0 0 40 63 0 0.000 3.600 0.000 E94 0:*-40-63-* Def +0 0 40 64 0 0.000 3.600 0.000 E94 0:*-40-64-* Def +0 0 40 78 0 0.000 3.600 0.000 E94 0:*-40-78-* Def +0 0 41 41 0 0.000 1.800 0.000 E94 0:*-41-41-* Def +0 0 41 55 0 0.000 4.800 0.000 E94 0:*-41-55-* Def +0 0 41 62 0 0.000 3.600 0.000 E94 0:*-41-62-* Def +0 0 41 80 0 0.000 1.800 0.000 E94 0:*-41-80-* Def +0 0 43 43 0 0.000 0.000 0.375 E94 0:*-43-43-* Def +0 0 43 45 0 0.000 3.600 0.000 E94 0:*-43-45-* Def +0 0 43 64 0 0.000 3.600 0.000 E94 0:*-43-64-* Def +0 0 44 57 0 0.000 7.000 0.000 C94 0:*-44-57-* Def +0 0 44 63 0 0.000 7.000 0.000 C94 0:*-44-63-* Def +0 0 44 65 0 0.000 7.000 0.000 C94 0:*-44-65-* Def +0 0 44 78 0 0.000 2.846 0.000 E94 0:*-44-78-* Def +0 0 44 80 0 0.000 2.846 0.000 E94 0:*-44-80-* Def +0 0 45 63 0 0.000 1.800 0.000 E94 0:*-45-63-* Def +0 0 45 64 0 0.000 1.800 0.000 E94 0:*-45-64-* Def +0 0 45 78 0 0.000 1.800 0.000 E94 0:*-45-78-* Def +0 0 55 57 0 0.000 10.000 0.000 C94 0:*-55-57-* Def +2 0 55 57 0 0.000 4.800 0.000 E94 2:*-55-57-* Def +5 0 55 57 0 0.000 4.800 0.000 E94 5:*-55-57-* Def +0 1 55 57 5 0.423 12.064 0.090 C94 +0 1 55 57 55 -0.428 12.044 0.000 C94 +0 36 55 57 5 -0.268 8.077 -0.806 C94 +0 36 55 57 55 0.273 8.025 0.692 C94 +0 0 55 62 0 0.000 3.600 0.000 E94 0:*-55-62-* Def +0 0 55 64 0 0.000 4.800 0.000 E94 0:*-55-64-* Def +0 0 55 80 0 0.000 4.800 0.000 E94 0:*-55-80-* Def +0 0 56 57 0 0.000 6.000 0.000 C94 0:*-56-57-* Def +0 1 56 57 56 0.000 6.886 -0.161 C94 +0 36 56 57 56 0.000 4.688 0.107 C94 +0 0 56 63 0 0.000 4.800 0.000 E94 0:*-56-63-* Def +0 0 56 80 0 0.000 4.800 0.000 E94 0:*-56-80-* Def +1 0 57 63 0 0.000 1.800 0.000 E94 1:*-57-63-* Def +1 0 57 64 0 0.000 1.800 0.000 E94 1:*-57-64-* Def +0 0 58 63 0 0.000 6.000 0.000 E94 0:*-58-63-* Def +0 0 58 64 0 0.000 6.000 0.000 E94 0:*-58-64-* Def +0 0 59 63 0 0.000 7.000 0.000 C94 0:*-59-63-* Def +0 0 59 65 0 0.000 7.000 0.000 C94 0:*-59-65-* Def +0 0 59 78 0 0.000 3.600 0.000 E94 0:*-59-78-* Def +0 0 59 80 0 0.000 3.600 0.000 E94 0:*-59-80-* Def +0 0 59 82 0 0.000 3.600 0.000 E94 0:*-59-82-* Def +0 0 62 63 0 0.000 3.600 0.000 E94 0:*-62-63-* Def +0 0 62 64 0 0.000 3.600 0.000 E94 0:*-62-64-* Def +1 0 63 63 0 0.000 1.800 0.000 E94 1:*-63-63-* Def +0 0 63 64 0 0.000 7.000 0.000 C94 0:*-63-64-* Def +0 5 63 64 5 0.000 7.000 0.000 C94 +0 5 63 64 64 0.000 7.000 0.000 C94 +0 39 63 64 5 0.000 7.000 0.000 C94 +0 39 63 64 64 0.000 7.000 0.000 C94 +0 0 63 66 0 0.000 7.000 0.000 C94 0:*-63-66-* Def +0 0 63 78 0 0.000 6.000 0.000 E94 0:*-63-78-* Def +0 0 63 81 0 0.000 6.000 0.000 E94 0:*-63-81-* Def +0 0 64 64 0 0.000 7.000 0.000 C94 0:*-64-64-* Def +1 0 64 64 0 0.000 1.800 0.000 E94 1:*-64-64-* Def +0 5 64 64 5 0.000 7.000 0.000 C94 +0 5 64 64 63 0.000 7.000 0.000 C94 +0 63 64 64 63 0.000 7.000 0.000 C94 +0 0 64 65 0 0.000 7.000 0.000 C94 0:*-64-65-* Def +0 0 64 66 0 0.000 7.000 0.000 C94 0:*-64-66-* Def +0 0 64 78 0 0.000 6.000 0.000 E94 0:*-64-78-* Def +0 0 64 81 0 0.000 6.000 0.000 E94 0:*-64-81-* Def +5 0 64 81 0 0.000 6.000 0.000 E94 5:*-64-81-* Def +0 0 64 82 0 0.000 6.000 0.000 E94 0:*-64-82-* Def +0 0 65 66 0 0.000 7.000 0.000 C94 0:*-65-66-* Def +0 0 65 78 0 0.000 6.000 0.000 E94 0:*-65-78-* Def +0 0 65 81 0 0.000 6.000 0.000 E94 0:*-65-81-* Def +0 0 65 82 0 0.000 6.000 0.000 E94 0:*-65-82-* Def +0 0 66 66 0 0.000 7.000 0.000 C94 0:*-66-66-* Def +0 0 66 78 0 0.000 6.000 0.000 E94 0:*-66-78-* Def +0 0 66 81 0 0.000 6.000 0.000 E94 0:*-66-81-* Def +0 0 67 67 0 0.000 12.000 0.000 E94 0:*-67-67-* Def +5 0 67 67 0 0.000 12.000 0.000 E94 5:*-67-67-* Def +0 0 76 76 0 0.000 3.600 0.000 E94 0:*-76-76-* Def +0 0 76 78 0 0.000 3.600 0.000 E94 0:*-76-78-* Def +0 0 78 78 0 0.000 7.000 0.000 C94 0:*-78-78-* Def +0 0 78 79 0 0.000 6.000 0.000 E94 0:*-78-79-* Def +0 0 78 81 0 0.000 4.000 0.000 C94 0:*-78-81-* Def +0 0 79 79 0 0.000 6.000 0.000 E94 0:*-79-79-* Def +0 0 79 81 0 0.000 6.000 0.000 E94 0:*-79-81-* Def +0 0 80 81 0 0.000 4.000 0.000 C94 0:*-80-81-* Def +$ +13. MMFFVDW.PAR: This file supplies parameters for van der Waals interactions. +* +* Copyright (c) Merck and Co., Inc., 1994, 1995, 1996 +* All Rights Reserved +* +* E94 - From empirical rule (JACS 1992, 114, 7827) +* C94 - Adjusted in fit to HF/6-31G* dimer energies and geometries +* X94 - Chosen in the extension of the paratererization for MMFF94 +* by analogy to other, similar atom types or, for ions, by +* fitting to atomic radii (and sometimes to association energies +* for hydrates) +* +* power B Beta DARAD DAEPS +*C=SO2 + CS=O 3 CARBON IN >C=S=O (SULFINYL GROUP) + CSS 3 THIOCARBOXYLIC ACID OR ESTER CARBONYL CARBON + C=P 3 CARBON DOUBLE BONDED TO PHOSPHOROUS + CSP 4 ACETYLENIC CARBON + =C= 4 ALLENIC CARBON + HC 5 H ATTACHED TO C + HSI 5 H ATTACHED TO SI + OR 6 ALCOHOL OR ETHER OXYGEN + OC=O 6 ESTER OR CARBOXYLIC ACID -O- + OC=C 6 ENOLIC OR PHENOLIC OXYGEN + OC=N 6 DIVALENT OXYGEN + OC=S 6 THIOESTER OR THIOACID -O- + ONO2 6 DIVALENT NITRATE "ETHER" OXYGEN + ON=O 6 DIVALENT NITRITE "ETHER" OXYGEN + OSO3 6 DIVALENT OXYGEN ATTACHED TO SULFUR + OSO2 6 DIVALENT OXYGEN ATTACHED TO SULFUR + OSO 6 DIVALENT OXYGEN ATTACHED TO SULFUR + OS=O 6 DIVALENT OXYGEN ATTACHED TO SULFOXIDE SULFUR + -OS 6 GENERAL DIVALENT OX ATTACHED TO S + OPO3 6 DIVALENT OXYGEN ATTACHED TO PHOSPHOROUS + OPO2 6 DIVALENT OXYGEN ATTACHED TO PHOSPHOROUS + OPO 6 DIVALENT OXYGEN ATTACHED TO PHOSPHOROUS + -OP 6 DIVALENT OXYGEN ATTACHED TO PHOSPHOROUS + -O- 6 GENERAL DIVALENT O + O=C 7 GENERAL C=O + O=CN 7 CARBONYL OXYGEN, AMIDES + O=CR 7 CARBONYL OXYGEN, ALDEHYDES AND KETONES + O=CO 7 CARBONYL OXYGEN, CARBOXYLIC ACIDS AND ESTERS + O=N 7 NITROSO OXYGEN + O=S 7 O=S IN SULFOXIDES + O=S= 7 O=S ON SULFUR DOUBLY BONDED TO, E.G., CARBON + NR 8 NITROGEN IN ALIPHATIC AMINES + N=C 9 NITROGEN IN IMINES + N=N 9 NITROGEN IN AZO COMPOUNDS + NC=O 10 NITROGEN IN AMIDES + NC=S 10 NITROGEN IN N-C=S, THIOAMIDE + NN=C 10 NITROGEN IN N-N=C + NN=N 10 NITROGEN IN N-N=N + F 11 FLUORINE + CL 12 CHLORINE + BR 13 BROMINE + I 14 IODINE + S 15 SULFUR IN THIOETHERS AND MERCAPTANS + S=C 16 TERMINAL SULFUR DOUBLY BONDED TO CARBON + S=O 17 SULFUR IN SULFOXIDES + >S=N 17 SULFUR, TRICOORD, DOUBLY BONDED TO N + SO2 18 SULFUR IN SULFONES + SO2N 18 SULFUR IN SULFONAMIDES + SO3 18 SULFONATE SULFUR + SO4 18 SULFATE SULFUR + =SO2 18 SULFONE SULPHER DOUBLY BONDED TO CARBON + SNO 18 SULFUR IN NITROGEN ANALOG OF A SULFONE + SI 19 SILICON + CR4R 20 CARBON IN 4-MEMBERED RINGS + HOR 21 HYDROGEN IN ALCOHOLS + HO 21 GENERAL H ON OXYGEN + HOM 21 HYDROGEN IN HYDROXIDE ANION + CR3R 22 CARBON IN A 3-MEMBERED RING + HNR 23 H-N(SP3) + H3N 23 H-N(SP3), AMMONIA + HPYL 23 H-N IN PYRROLE + HNOX 23 H-N IN IN A N-OXIDE + HNM 23 H ON DICOORD, NEGATIVELY CHARGED NITROGEN + HN 23 GENERAL H ON NITROGEN + HOCO 24 H-O IN CARBOXYLIC ACIDS + HOP 24 HYDROGEN ON OXYGEN ATTACHED TO PHOSPHOROUS + PO4 25 PHOSPHOROUS IN PHOSPHATES AND PHOSPHODIESTERS + PO3 25 TETRACOORDINATE P WITH THREE ATTACHED OXYGENS + PO2 25 TETRACOORDINATE P WITH TWO ATTACHED OXYGENS + PO 25 TETRACOORDINATE P WITH ONE ATTACHED OXYGEN + PTET 25 GENERAL TETRACOORDINATE PHOSPHORUS + P 26 TRICOORDINATE P, AS IN PHOSPHINES + HN=N 27 AZO HYDROGEN + HN=C 27 IMINE HYDROGEN + HNCO 28 AMIDE HYDROGEN + HNCS 28 THIOAMIDE HYDROGEN + HNCC 28 H-N IN ENAMINES + HNCN 28 H-N IN H-N-C=N + HNNC 28 H-N IN H-N-N=C + HNNN 28 H-N IN H-N-N=N + HNSO 28 H-N IN SULFONAMIDE + HNPO 28 H-N IN PHOSPHONAMIDE + HNC% 28 HYDROGEN ON N ATTACHED TO TRIPLY BONDED CARBON + HSP2 28 GENERAL H ON SP2 NITROGEN + HOCC 29 H-O IN ENOLS AND PHENOLS + HOCN 29 H-O IN HO-C=N + CE4R 30 OLEFINIC CARBON IN 4-MEMBERED RINGS + HOH 31 HYDROGEN IN H2O + O2CM 32 OXYGEN IN CARBOXYLATE ANION + OXN 32 N-OXIDE OXYGEN + O2N 32 NITRO OXYGEN + O2NO 32 NITRO-GROUP OXYGEN IN NITRATE + O3N 32 NITRATE ANION OXYGEN + O-S 32 SINGLE TERMINAL OXYGEN ON TETRACOORD SULFUR + O2S 32 TERMINAL O-S IN SULFONES AND SULFONAMIDES + O3S 32 TERMINAL O IN SULFONATES + O4S 32 TERMINAL O IN SO4(-3) + OSMS 32 TERM O IN THIOSULFINATE ANION - FORMAL CHARGE=-0.5 + OP 32 TERMINAL O IN PHOSPHOXIDES + O2P 32 TERMINAL O IN PHOSPHINATES + O3P 32 TERMINAL OXYGEN IN PHOSPHONATES + O4P 32 TERMINAL OXYGEN IN PHOSPHATES AND PHOSPHODIESTERS + O4CL 32 OXYGEN IN CLO4(-) ANION - FORMAL CHARGE=-0.25 + HOS 33 H ON OXYGEN ATTACHED TO SULFUR + NR+ 34 QUATERNARY NITROGEN, SP3, POSITIVELY CHARGED + OM 35 ALKOXIDE OXYGEN, NEGATIVELY CHARGED + OM2 35 OXIDE OXYGEN ON SP2 CARBON, NEGATIVELY CHARGED + HNR+ 36 H ON QUATERNARY NITROGEN + HIM+ 36 H ON IMIDAZOLIUM-TYPE NITROGEN + HPD+ 36 H ON PROTONATED PYRIDINE NITROGEN + HNN+ 36 H ON AMIDINIUM-TYPE NITROGEN + HNC+ 36 H ON PROTONATED IMINE NITROGEN + HGD+ 36 H ON GUANIDINIUM-TYPE NITROGEN + HN5+ 36 H ON N5+, N5A+ OR N5B+ + CB 37 CARBON AS IN BENZENE, PYRROLE + NPYD 38 NITROGEN, AS IN PYRIDINE + NPYL 39 NITROGEN, AS IN PYRROLE + NC=C 40 NITROGEN ON N-C=C + NC=N 40 NITROGEN IN N-C=N + NC=P 40 NITROGEN IN N-C=P + NC%C 40 NITROGEN ATTACHED TO C-C TRIPLE BOND + CO2M 41 CARBOXYLATE ANION CARBON + CS2M 41 CARBON IN THIOCARBOXYLATE ANION + NSP 42 NITROGEN, TRIPLE BONDED + NSO2 43 NITROGEN IN SULFONAMIDES + NSO3 43 NITROGEN IN SULFONAMIDES, THREE O'S ON S + NPO2 43 NITROGEN IN PHOSPHONAMIDES + NPO3 43 NITROGEN IN PHOSPHONAMIDES, THREE O'S ON P + NC%N 43 NITROGEN ATTACHED TO CYANO GROUP + STHI 44 SULFUR AS IN THIOPHENE + NO2 45 NITRO GROUP NITROGEN + NO3 45 NITRATE GROUP NITROGEN + N=O 46 NITROSO NITROGEN + NAZT 47 TERMINAL NITROGEN IN AZIDO OR DIAZO GROUP + NSO 48 DIVALENT NITROGEN REPLACING MONOVALENT O IN SO2 GROUP + O+ 49 POSITIVELY CHARGED OXONIUM (TRICOORDINATE) OXYGEN + HO+ 50 HYDROGEN ON O+ OXYGEN + O=+ 51 POSITIVELY CHARGED OXENIUM (DICOORDINATE) OXYGEN + HO=+ 52 HYDROGEN ON OXENIUM OXYGEN + =N= 53 NITROGEN IN C=N=N OR -N=N=N + N+=C 54 POSITIVELY CHARGED IMINIUM NITROGEN + N+=N 54 POSITIVELY CHARGED NITROGEN DOUBLE-BONDED TO N + NCN+ 55 N IN +N=C-N RESONANCE STRUCTURES - FORMAL CHARGE=1/2 + NGD+ 56 GUANIDINIUM-TYPE NITROGEN - FORMAL CHARGE=1/3 + CGD+ 57 GUANIDINIUM CARBON + CNN+ 57 C IN +N=C-N RESONANCE STRUCTURES + NPD+ 58 PYRIDINIUM-TYPE NITROGEN - FORMAL CHARGE=1 + OFUR 59 AROMATIC OXYGEN AS IN FURAN + C% 60 ISONITRILE CARBON + NR% 61 ISONITRILE NITROGEN [FC = 0] OR DIAZO NITROGEN [FC = 1] + NM 62 DEPROTONATED SULFONAMIDE N-; FORMAL CHARGE=-1 + C5A 63 ALPHA CARBON IN 5-MEMBERED HETEROAROMATIC RING + C5B 64 BETA CARBON IN 5-MEMBERED HETEROAROMATIC RING + N5A 65 ALPHA AROM HETEROCYCLIC 5-RING NITROGEN + N5B 66 BETA AROM HETEROCYCLIC 5-RING NITROGEN + N2OX 67 SP2-HYDRIDIZED N-OXIDE NITROGEN + N3OX 68 SP3-HYDRIDIZED N-OXIDE NITROGEN + NPOX 69 PYRIDINE N-OXIDE NITROGEN + OH2 70 OXYGEN ON WATER + HS 71 H ATTACHED TO DIVALENT, DICOORDINATE S + HS=N 71 H ATTACHED TO TETRAVALENT, TRICOODR S DBL BONDED TO N + HP 71 H ATTACHED TO TRI- OR TETRACOORDINATE PHOSPHORUS + S-P 72 TERMINAL SULFUR BONDED TO PHOSPHORUS + S2CM 72 TERMINAL SULFUR IN THIOCARBOXYLATE ANION + SM 72 TERMINAL SULFUR - FORMAL CHARGE=-1 + SSMO 72 TERMINAL SULFUR IN THIOSULFINATE GROUP + SO2M 73 SULFUR IN NEGATIVELY CHARGED SULFINATE GROUP + SSOM 73 TRICOORD SULFUR IN THIOSULFINATE GROUP + =S=O 74 SULFINYL SULFUR, EG. IN C=S=O + -P=C 75 PHOSPHOROUS DOUBLY BONDED TO CARBON + N5M 76 NEGATIVELY CHARGED N IN, E.G, TRI- OR TETRAZOLE ANION + CLO4 77 CHLORINE IN PERCHLORATE ANION, CLO4(-) + C5 78 GENERAL CARBON IN 5-MEMBERED HETEROAROMATIC RING + N5 79 GENERAL NITROGEN IN 5-MEMBERED HETEROCYCLIC RING + CIM+ 80 C IN N-C-N IN IMIDAZOLIUM ION + NIM+ 81 IMIDAZOLIUM-TYPE NITROGEN - FORMAL CHARGE=1/2 + N5A+ 81 POSITIVE N5A NITROGEN - FORMAL CHARGE=1 + N5B+ 81 POSITIVE N5B NITROGEN - FORMAL CHARGE=1 + N5+ 81 POSITIVE N5 NITROGEN - FORMAL CHARGE=1 + N5AX 82 N-OXIDE NITROGEN IN 5-RING ALPHA POSITION + N5BX 82 N-OXIDE NITROGEN IN 5-RING BETA POSITION + N5OX 82 N-OXIDE NITROGEN IN GENERAL 5-RING POSITION + FE+2 87 IRON +2 CATION + FE+3 88 IROM +3 CATION + F- 89 FLUORIDE ANION + CL- 90 CHLORIDE ANION + BR- 91 BROMIDE ANION + LI+ 92 LITHIUM CATION + NA+ 93 SODIUM CATION + K+ 94 POTASSIUM CATION + ZINC 95 DIPOSITIVE ZINC + ZN+2 95 DIPOSITIVE ZINC + CA+2 96 DIPOSITIVE CALCIUM + CU+1 97 MONOPOSITIVE COPPER + CU+2 98 DIPOSITIVE COPPER + MG+2 99 DIPOSITIVE MAGNESIUM CATION diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94_dative.mol2 b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94_dative.mol2 new file mode 100755 index 000000000000..b08814485e6c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94_dative.mol2 @@ -0,0 +1,43300 @@ +@MOLECULE +AGLYSL01 + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.6234 1.6965 8.8431 C.3 1 AGLY 0.3310 + 2 C2 -1.5438 0.1710 8.8960 C.2 1 AGLY 0.6590 + 3 H1 -1.5827 1.7640 6.8094 H 1 AGLY 0.3600 + 4 H3 -0.1271 1.8630 7.4736 H 1 AGLY 0.3600 + 5 H5 -2.6707 1.9987 8.9343 H 1 AGLY 0.0000 + 6 H6 -1.0462 2.1092 9.6756 H 1 AGLY 0.0000 + 7 H7 -2.3655 0.3289 10.6732 H 1 AGLY 0.5000 + 8 N1 -1.0818 2.2182 7.5784 N.3 1 AGLY -0.9900 + 9 O5 -2.0344 -0.3437 10.0478 O.3 1 AGLY -0.6500 + 10 O6 -1.0893 -0.5326 8.0048 O.2 1 AGLY -0.5700 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 8 1 + 5 2 9 1 + 6 2 10 2 + 7 3 8 1 + 8 4 8 1 + 9 7 9 1 +@SUBSTRUCTURE + 1 AGLY 1 +@COMMENT +COMMENT AMMONIUM GLYCINIUM SULFATE (NEUTRON STUDY) PEPSEQ A=1 GLY +@MOLECULE +AMHTAR01 + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.0329 4.1505 3.0521 O.3 1 CHGB -0.6500 + 2 O2 6.0663 6.3454 3.3434 O.2 1 CHGB -0.5700 + 3 O3 3.3628 6.5809 2.4858 O.3 1 CHGB -0.6800 + 4 O4 3.0917 4.7690 4.8310 O.3 1 CHGB -0.6800 + 5 O5 1.4779 4.5967 1.7561 O.2 1 CHGB -0.9000 + 6 O6 0.9232 3.6514 3.7696 O.3 1 CHGB -0.9000 + 7 C1 5.4114 5.3557 3.0467 C.2 1 CHGB 0.6590 + 8 C2 3.9637 5.2827 2.5659 C.3 1 CHGB 0.3410 + 9 C3 3.1574 4.3301 3.4494 C.3 1 CHGB 0.1740 + 10 C4 1.7124 4.1626 2.9176 C.2 1 CHGB 0.9060 + 11 H1 4.0141 4.9060 1.5362 H 1 CHGB 0.0000 + 12 H2 3.6146 3.3340 3.4620 H 1 CHGB 0.0000 + 13 H3 2.4715 6.3966 2.1130 H 1 CHGB 0.4000 + 14 H4 2.1962 4.4581 5.1047 H 1 CHGB 0.4000 + 15 H5 6.9144 4.3825 3.4068 H 1 CHGB 0.5000 +@BOND + 1 1 7 1 + 2 1 15 1 + 3 2 7 2 + 4 3 8 1 + 5 3 13 1 + 6 4 9 1 + 7 4 14 1 + 8 5 10 2 + 9 6 10 1 + 10 7 8 1 + 11 8 9 1 + 12 8 11 1 + 13 9 10 1 + 14 9 12 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT AMMONIUM HYDROGEN D-TARTRATE (REDETERMINATION OF VAN BOMMEL +@MOLECULE +AMPTRB10 + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.1919 -2.5996 15.5208 N.2 1 AMPT -0.1790 + 2 C2 -7.3473 -2.9481 16.4744 C.2 1 AMPT 0.7710 + 3 N2 -7.0280 -2.0314 17.4497 N.3 1 AMPT -0.9000 + 4 N3 -6.8030 -4.1635 16.5533 N.2 1 AMPT -0.6200 + 5 C4 -7.1510 -5.0414 15.5932 C.2 1 AMPT 0.4100 + 6 N4 -6.4861 -6.2649 15.6298 N.3 1 AMPT -0.9000 + 7 C41 -8.0373 -4.7460 14.5496 C.2 1 AMPT 0.3100 + 8 N5 -8.3988 -5.6364 13.5890 N.2 1 AMPT -0.6200 + 9 C6 -9.2723 -5.2287 12.6323 C.2 1 AMPT 0.1665 + 10 C61 -9.6407 -6.2351 11.5828 C.3 1 AMPT 0.1435 + 11 C7 -9.7914 -3.9347 12.6414 C.2 1 AMPT 0.1665 + 12 C71 -10.7592 -3.4605 11.5968 C.3 1 AMPT 0.1435 + 13 N8 -9.4417 -3.0372 13.6053 N.2 1 AMPT -0.6200 + 14 C81 -8.5630 -3.4458 14.5572 C.2 1 AMPT 0.6710 + 15 H1 -8.6125 -1.6818 15.5170 H 1 AMPT 0.4570 + 16 H21 -6.8787 -1.0653 17.1879 H 1 AMPT 0.4000 + 17 H22 -6.2924 -2.3987 18.0542 H 1 AMPT 0.4000 + 18 H41 -5.9528 -6.4036 16.4824 H 1 AMPT 0.4000 + 19 H42 -7.0594 -7.0612 15.3599 H 1 AMPT 0.4000 + 20 H61 -10.7172 -6.4303 11.6018 H 1 AMPT 0.0000 + 21 H62 -9.1241 -7.1845 11.7587 H 1 AMPT 0.0000 + 22 H63 -9.3526 -5.8752 10.5905 H 1 AMPT 0.0000 + 23 H71 -11.0461 -2.4197 11.7801 H 1 AMPT 0.0000 + 24 H72 -11.6693 -4.0677 11.6153 H 1 AMPT 0.0000 + 25 H73 -10.3048 -3.5133 10.6028 H 1 AMPT 0.0000 +@BOND + 1 1 15 1 + 2 1 14 2 + 3 1 2 am + 4 2 4 2 + 5 2 3 am + 6 3 17 1 + 7 3 16 1 + 8 4 5 1 + 9 5 7 2 + 10 5 6 1 + 11 6 19 1 + 12 6 18 1 + 13 7 14 1 + 14 7 8 1 + 15 8 9 2 + 16 9 11 1 + 17 9 10 1 + 18 10 22 1 + 19 10 21 1 + 20 10 20 1 + 21 11 13 2 + 22 11 12 1 + 23 12 25 1 + 24 12 24 1 + 25 12 23 1 + 26 13 14 am +@SUBSTRUCTURE + 1 AMPT 1 +@COMMENT +COMMENT 2,4-DIAMINO-6,7-DIMETHYLPTERIDINE HYDROCHLORIDE MONOHYDRATE +@MOLECULE +ARGIND11 + 26 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.4236 -3.9134 16.1526 C.2 1 ARGI 0.9060 + 2 C2 -7.8705 -3.8619 16.1247 C.3 1 ARGI 0.1640 + 3 C3 -7.3587 -3.4410 14.7361 C.3 1 ARGI 0.0000 + 4 C4 -7.5729 -4.4157 13.5579 C.3 1 ARGI 0.0000 + 5 C5 -8.8860 -4.2251 12.7890 C.3 1 ARGI 0.3276 + 6 C6 -11.2501 -4.1623 13.5988 C.2 1 ARGI 1.2000 + 7 H1 -7.9647 -5.8794 16.1666 H 1 ARGI 0.3600 + 8 H3 -7.5456 -3.1159 16.8598 H 1 ARGI 0.0000 + 9 H4 -7.4554 -5.2638 17.5407 H 1 ARGI 0.3600 + 10 H6 -7.7736 -2.4595 14.4740 H 1 ARGI 0.0000 + 11 H7 -6.2742 -3.2886 14.8304 H 1 ARGI 0.0000 + 12 H9 -6.7611 -4.2348 12.8412 H 1 ARGI 0.0000 + 13 H10 -7.4716 -5.4570 13.8808 H 1 ARGI 0.0000 + 14 H12 -9.0173 -3.1655 12.5477 H 1 ARGI 0.0000 + 15 H13 -8.8454 -4.7980 11.8571 H 1 ARGI 0.0000 + 16 H14 -9.8566 -5.3053 14.3719 H 1 ARGI 0.4500 + 17 H15 -11.0819 -3.0491 11.8990 H 1 ARGI 0.4500 + 18 H16 -12.5789 -2.8604 12.7633 H 1 ARGI 0.4500 + 19 H17 -11.5793 -4.8989 15.4167 H 1 ARGI 0.4500 + 20 H18 -12.9222 -4.0055 14.7891 H 1 ARGI 0.4500 + 21 N1 -7.3046 -5.1800 16.5326 N.3 1 ARGI -0.9900 + 22 N2 -11.6823 -3.3087 12.6644 N.3 1 ARGI -0.9667 + 23 N3 -10.0324 -4.7112 13.5460 N.2 1 ARGI -0.8443 + 24 N4 -12.0658 -4.4933 14.5978 N.3 1 ARGI -0.9667 + 25 O1 -9.9392 -5.0804 16.0320 O.2 1 ARGI -0.9000 + 26 O3 -10.0474 -2.8208 16.1127 O.3 1 ARGI -0.9000 +@BOND + 1 1 26 1 + 2 1 25 2 + 3 1 2 1 + 4 2 21 1 + 5 2 8 1 + 6 2 3 1 + 7 3 11 1 + 8 3 10 1 + 9 3 4 1 + 10 4 13 1 + 11 4 12 1 + 12 4 5 1 + 13 5 23 1 + 14 5 15 1 + 15 5 14 1 + 16 6 24 am + 17 6 23 2 + 18 6 22 am + 19 7 21 1 + 20 9 21 1 + 21 16 23 1 + 22 17 22 1 + 23 18 22 1 + 24 19 24 1 + 25 20 24 1 +@SUBSTRUCTURE + 1 ARGI 1 +@COMMENT +COMMENT L-ARGININE DIHYDRATE (NEUTRON STUDY) PEPSEQ A=1 ARG +@MOLECULE +BAOXLM01 + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.4475 -5.5931 13.3076 O.2 1 CHGB -0.9000 + 2 O2 -9.3541 -5.5931 15.4096 O.3 1 CHGB -0.9000 + 3 C1 -8.9008 -5.0134 14.3586 C.2 1 CHGB 0.8000 + 4 C1F -8.9008 -3.4541 14.3586 C.2 1 CHGB 0.8000 + 5 O1F -8.4475 -2.8743 13.3076 O.2 1 CHGB -0.9000 + 6 O2F -9.3541 -2.8743 15.4096 O.3 1 CHGB -0.9000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 5 2 + 5 4 6 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT BARIUM OXALATE MONOHYDRATE +@MOLECULE +BBSPRT10 + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -11.7206 -8.1007 15.0551 BR 1 BBSP -0.1110 + 2 S1 -9.2362 -1.6115 11.7041 S.3 1 BBSP -0.3580 + 3 S2 -7.3421 -3.5061 16.1557 S.3 1 BBSP 1.4470 + 4 O1 -9.1295 -4.1509 12.4379 O.2 1 BBSP -0.5700 + 5 O2 -7.8958 -2.5619 17.0995 O.3 1 BBSP -0.6500 + 6 O3 -6.0663 -4.1510 16.3659 O.3 1 BBSP -0.6500 + 7 N1 -7.2304 -2.7171 14.6762 N.3 1 BBSP -0.8650 + 8 C1 -8.9510 -2.9834 12.7050 C.2 1 BBSP 0.6580 + 9 C2 -8.3961 -2.1511 13.9087 C.3 1 BBSP 0.3600 + 10 C3 -8.0751 -0.9771 12.9464 C.3 1 BBSP 0.2170 + 11 C4 -8.5537 -4.7627 15.8442 C.2 1 BBSP -0.0090 + 12 C5 -8.1675 -5.9435 15.2018 C.2 1 BBSP -0.1500 + 13 C6 -9.1177 -6.9383 14.9634 C.2 1 BBSP -0.1500 + 14 C7 -10.4369 -6.7510 15.3784 C.2 1 BBSP 0.1110 + 15 C8 -10.8172 -5.5803 16.0366 C.2 1 BBSP -0.1500 + 16 C9 -9.8718 -4.5815 16.2766 C.2 1 BBSP -0.1500 + 17 H1 -6.4251 -3.0464 14.1407 H 1 BBSP 0.4200 + 18 H2 -9.2007 -1.8904 14.6120 H 1 BBSP 0.0000 + 19 H31 -7.0365 -0.9493 12.5974 H 1 BBSP 0.0000 + 20 H32 -8.3230 0.0106 13.3475 H 1 BBSP 0.0000 + 21 H5 -7.1391 -6.0958 14.8821 H 1 BBSP 0.1500 + 22 H6 -8.8222 -7.8521 14.4536 H 1 BBSP 0.1500 + 23 H8 -11.8433 -5.4410 16.3683 H 1 BBSP 0.1500 + 24 H9 -10.1698 -3.6760 16.8011 H 1 BBSP 0.1500 +@BOND + 1 1 14 1 + 2 2 10 1 + 3 2 8 1 + 4 3 11 1 + 5 3 7 1 + 6 3 6 1 + 7 3 5 1 + 8 4 8 2 + 9 7 17 1 + 10 7 9 1 + 11 8 9 1 + 12 9 18 1 + 13 9 10 1 + 14 10 20 1 + 15 10 19 1 + 16 11 16 1 + 17 11 12 2 + 18 12 21 1 + 19 12 13 1 + 20 13 22 1 + 21 13 14 2 + 22 14 15 1 + 23 15 23 1 + 24 15 16 2 + 25 16 24 1 +@SUBSTRUCTURE + 1 BBSP 1 +@COMMENT +COMMENT (S)-ALPHA-(P-BROMOBENZENESULFONAMIDO)-BETA-PROPIOTHIOLACTON +@MOLECULE +BEVJER10 + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.5626 -3.4018 13.6992 C.2 1 CHGB -0.0310 + 2 C2 -8.2870 -4.8168 13.9343 C.2 1 CHGB -0.0310 + 3 C3 -8.4006 -2.5213 12.6800 C.2 1 CHGB 0.1610 + 4 C4 -7.8420 -2.8938 11.4184 C.1 1 CHGB 0.4921 + 5 N5 -7.4410 -3.2487 10.3907 N.1 1 CHGB -0.5571 + 6 C6 -8.9419 -1.1990 12.7078 C.1 1 CHGB 0.4921 + 7 N7 -9.4476 -0.1568 12.7430 N.1 1 CHGB -0.5571 + 8 C8 -7.3061 -5.6973 13.6137 C.2 1 CHGB 0.1610 + 9 C9 -6.1483 -5.3248 12.8632 C.1 1 CHGB 0.4921 + 10 N10 -5.1967 -4.9699 12.3053 N.1 1 CHGB -0.5571 + 11 C11 -7.2482 -7.0196 14.1526 C.1 1 CHGB 0.4921 + 12 N12 -7.2032 -8.0618 14.6575 N.1 1 CHGB -0.5571 + 13 C1B -9.2053 -3.4018 15.0108 C.2 1 CHGB -0.0310 + 14 C2B -9.4809 -4.8168 14.7757 C.2 1 CHGB -0.0310 + 15 C3B -9.3673 -2.5213 16.0300 C.2 1 CHGB 0.1610 + 16 C8B -10.4618 -5.6973 15.0963 C.2 1 CHGB 0.1610 + 17 C4B -9.9259 -2.8938 17.2916 C.1 1 CHGB 0.4921 + 18 C6B -8.8260 -1.1990 16.0022 C.1 1 CHGB 0.4921 + 19 C9B -11.6196 -5.3248 15.8468 C.1 1 CHGB 0.4921 + 20 C11B -10.5197 -7.0196 14.5574 C.1 1 CHGB 0.4921 + 21 N5B -10.3269 -3.2487 18.3193 N.1 1 CHGB -0.5571 + 22 N7B -8.3203 -0.1568 15.9670 N.1 1 CHGB -0.5571 + 23 N10B -12.5713 -4.9699 16.4047 N.1 1 CHGB -0.5571 + 24 N12B -10.5647 -8.0618 14.0525 N.1 1 CHGB -0.5571 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 13 1 + 4 2 8 2 + 5 2 14 1 + 6 3 4 1 + 7 3 6 1 + 8 4 5 3 + 9 6 7 3 + 10 8 9 1 + 11 8 11 1 + 12 9 10 3 + 13 11 12 3 + 14 13 14 1 + 15 13 15 2 + 16 14 16 2 + 17 15 17 1 + 18 15 18 1 + 19 16 19 1 + 20 16 20 1 + 21 17 21 3 + 22 18 22 3 + 23 19 23 3 + 24 20 24 3 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT BIS(DIMETHYLAMMONIUM) (3,4-BIS(DICYANOMETHYLENE)-1-CYCLOBUT +@MOLECULE +BEWCUB + 59 61 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.4600 -4.5425 14.5213 N.3 1 BEWC -0.3940 + 2 C2 -8.1473 -4.4467 14.0828 C.2 1 BEWC 0.1234 + 3 C3 -7.9618 -5.0830 12.9159 C.2 1 BEWC -0.0822 + 4 C4 -9.2455 -5.6722 12.4107 C.3 1 BEWC 0.1382 + 5 C5 -10.2040 -5.4037 13.5710 C.3 1 BEWC 0.3630 + 6 C6 -11.2033 -4.2688 13.4898 C.2 1 BEWC -0.2400 + 7 C7 -10.3129 -3.4839 14.3486 C.2 1 BEWC 0.7010 + 8 C8 -12.3860 -4.0450 12.8869 C.2 1 BEWC -0.2454 + 9 S9 -6.4387 -5.1715 12.0259 S.2 1 BEWC 0.3880 + 10 C10 -5.5543 -6.3432 13.0558 C.2 1 BEWC -0.0940 + 11 C11 -5.9147 -7.6330 13.0506 C.2 1 BEWC -0.0410 + 12 N12 -5.2880 -8.5778 13.8276 N.3 1 BEWC -0.5390 + 13 C13 -5.6988 -9.8981 13.8837 C.2 1 BEWC 0.5690 + 14 O14 -6.6875 -10.3451 13.3093 O.2 1 BEWC -0.5700 + 15 C15 -4.8365 -10.7609 14.7670 C.3 1 BEWC 0.0610 + 16 O16 -6.7786 -5.9093 10.7644 O.2 1 BEWC -0.5000 + 17 C17 -13.1350 -2.7421 13.0269 C.3 1 BEWC 0.1382 + 18 C18 -13.1091 -5.0480 12.0072 C.3 1 BEWC 0.4182 + 19 O19 -12.3381 -6.2441 11.8532 O.3 1 BEWC -0.4300 + 20 C20 -12.9335 -7.1782 11.0618 C.2 1 BEWC 0.6590 + 21 O21 -14.0264 -7.0600 10.5278 O.2 1 BEWC -0.5700 + 22 C22 -12.0496 -8.3811 10.9366 C.3 1 BEWC 0.0610 + 23 O23 -10.2700 -2.3231 14.6953 O.2 1 BEWC -0.5700 + 24 C24 -7.1266 -3.6904 14.8642 C.2 1 BEWC 0.7056 + 25 O25 -5.9639 -3.5412 14.5182 O.2 1 BEWC -0.5700 + 26 O26 -7.6699 -3.2327 16.0185 O.3 1 BEWC -0.4300 + 27 C27 -6.8102 -2.4243 16.8301 C.3 1 BEWC 0.4235 + 28 C28 -6.8193 -0.9896 16.3597 C.2 1 BEWC -0.1435 + 29 C29 -5.6228 -0.3478 16.0074 C.2 1 BEWC -0.1500 + 30 C30 -5.6308 0.9795 15.5706 C.2 1 BEWC -0.1500 + 31 C31 -6.8457 1.6714 15.4843 C.2 1 BEWC 0.1330 + 32 C32 -8.0475 1.0441 15.8312 C.2 1 BEWC -0.1500 + 33 C33 -8.0283 -0.2823 16.2685 C.2 1 BEWC -0.1500 + 34 N34 -6.8579 3.0651 15.0242 N.2 1 BEWC 0.9070 + 35 O35 -5.7746 3.5765 14.7045 O.3 1 BEWC -0.5200 + 36 O36 -7.9487 3.6524 14.9858 O.2 1 BEWC -0.5200 + 37 H1 -9.5681 -5.1885 11.4826 H 1 BEWC 0.0000 + 38 H2 -9.1419 -6.7483 12.2370 H 1 BEWC 0.0000 + 39 H3 -10.5570 -6.3194 14.0629 H 1 BEWC 0.0000 + 40 H4 -4.7422 -5.9900 13.6810 H 1 BEWC 0.1500 + 41 H5 -6.7308 -7.9971 12.4261 H 1 BEWC 0.1500 + 42 H6 -4.4928 -8.2952 14.3885 H 1 BEWC 0.3700 + 43 H7 -3.8377 -10.3338 14.8926 H 1 BEWC 0.0000 + 44 H8 -5.3121 -10.8598 15.7462 H 1 BEWC 0.0000 + 45 H9 -4.7281 -11.7479 14.3085 H 1 BEWC 0.0000 + 46 H10 -14.1282 -2.9217 13.4518 H 1 BEWC 0.0000 + 47 H11 -12.6240 -2.0272 13.6771 H 1 BEWC 0.0000 + 48 H12 -13.2577 -2.2699 12.0466 H 1 BEWC 0.0000 + 49 H13 -14.0734 -5.2957 12.4672 H 1 BEWC 0.0000 + 50 H14 -13.2756 -4.6003 11.0198 H 1 BEWC 0.0000 + 51 H15 -11.8704 -8.8137 11.9242 H 1 BEWC 0.0000 + 52 H16 -12.5438 -9.1308 10.3122 H 1 BEWC 0.0000 + 53 H17 -11.1057 -8.0990 10.4633 H 1 BEWC 0.0000 + 54 H18 -7.1952 -2.4615 17.8557 H 1 BEWC 0.0000 + 55 H19 -5.7970 -2.8432 16.8657 H 1 BEWC 0.0000 + 56 H20 -9.0013 1.5629 15.7609 H 1 BEWC 0.1500 + 57 H21 -8.9688 -0.7717 16.5219 H 1 BEWC 0.1500 + 58 H22 -4.6758 -0.8828 16.0590 H 1 BEWC 0.1500 + 59 H23 -4.6897 1.4532 15.2986 H 1 BEWC 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 7 am + 4 2 3 2 + 5 2 24 1 + 6 3 4 1 + 7 3 9 1 + 8 4 5 1 + 9 4 37 1 + 10 4 38 1 + 11 5 6 1 + 12 5 39 1 + 13 6 7 1 + 14 6 8 2 + 15 7 23 2 + 16 8 17 1 + 17 8 18 1 + 18 9 10 1 + 19 9 16 2 + 20 10 11 2 + 21 10 40 1 + 22 11 12 1 + 23 11 41 1 + 24 12 13 am + 25 12 42 1 + 26 13 14 2 + 27 13 15 1 + 28 15 43 1 + 29 15 44 1 + 30 15 45 1 + 31 17 46 1 + 32 17 47 1 + 33 17 48 1 + 34 18 19 1 + 35 18 49 1 + 36 18 50 1 + 37 19 20 1 + 38 20 21 2 + 39 20 22 1 + 40 22 51 1 + 41 22 52 1 + 42 22 53 1 + 43 24 25 2 + 44 24 26 1 + 45 26 27 1 + 46 27 28 1 + 47 27 54 1 + 48 27 55 1 + 49 28 29 2 + 50 28 33 1 + 51 29 30 1 + 52 29 58 1 + 53 30 31 2 + 54 30 59 1 + 55 31 32 1 + 56 31 34 1 + 57 32 33 2 + 58 32 56 1 + 59 33 57 1 + 60 34 35 1 + 61 34 36 2 +@SUBSTRUCTURE + 1 BEWC 1 +@COMMENT +COMMENT 18-ACETATO-ASPARENOMYCIN A P-NITROBENZYL ESTER +@MOLECULE +BEWKUJ04 + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.6591 -4.9168 12.3108 S.3 1 BEWK 0.8491 + 2 O1 -11.3221 -6.1340 11.8625 O.3 1 BEWK -0.6500 + 3 O2 -10.7467 -3.8106 11.3483 O.3 1 BEWK -0.6500 + 4 N1 -9.1721 -5.1341 12.8512 N.3 1 BEWK -0.2881 + 5 N2 -14.0534 -3.0980 16.8966 N.3 1 BEWK -0.9000 + 6 N3 -8.3254 -4.2835 10.7924 N.2 1 BEWK -0.1790 + 7 C1 -11.6515 -4.3687 13.7041 C.2 1 BEWK -0.0090 + 8 C2 -12.3132 -5.3132 14.4873 C.2 1 BEWK -0.1500 + 9 C3 -13.0914 -4.8844 15.5654 C.2 1 BEWK -0.1500 + 10 C4 -13.1819 -3.5256 15.8868 C.2 1 BEWK 0.1000 + 11 C5 -12.5678 -2.5905 15.0460 C.2 1 BEWK -0.1500 + 12 C6 -11.7872 -3.0058 13.9638 C.2 1 BEWK -0.1500 + 13 C7 -8.1647 -4.9328 11.9710 C.2 1 BEWK 0.1090 + 14 C8 -6.8638 -5.3847 12.2626 C.2 1 BEWK -0.1500 + 15 C9 -5.8198 -5.1805 11.3599 C.2 1 BEWK -0.1500 + 16 C10 -6.0659 -4.5200 10.1636 C.2 1 BEWK -0.1500 + 17 C11 -7.3516 -4.0739 9.9031 C.2 1 BEWK 0.2110 + 18 H1 -12.2428 -6.3719 14.2519 H 1 BEWK 0.1500 + 19 H2 -13.6309 -5.6238 16.1506 H 1 BEWK 0.1500 + 20 H3 -12.6972 -1.5268 15.2247 H 1 BEWK 0.1500 + 21 H4 -11.3101 -2.2692 13.3249 H 1 BEWK 0.1500 + 22 H5 -14.2020 -3.7885 17.6254 H 1 BEWK 0.4000 + 23 H6 -13.8293 -2.1812 17.2689 H 1 BEWK 0.4000 + 24 H7 -6.6690 -5.9082 13.1980 H 1 BEWK 0.1500 + 25 H8 -7.6341 -3.5467 9.0007 H 1 BEWK 0.1500 + 26 H9 -5.2670 -4.3552 9.4474 H 1 BEWK 0.1500 + 27 H10 -4.8214 -5.5423 11.5954 H 1 BEWK 0.1500 + 28 H11 -9.2800 -3.9297 10.6014 H 1 BEWK 0.4570 +@BOND + 1 1 7 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 4 13 am + 6 5 23 1 + 7 5 22 1 + 8 5 10 1 + 9 6 28 1 + 10 6 17 1 + 11 6 13 2 + 12 7 12 2 + 13 7 8 1 + 14 8 18 1 + 15 8 9 2 + 16 9 19 1 + 17 9 10 1 + 18 10 11 2 + 19 11 20 1 + 20 11 12 1 + 21 12 21 1 + 22 13 14 1 + 23 14 24 1 + 24 14 15 2 + 25 15 27 1 + 26 15 16 1 + 27 16 26 1 + 28 16 17 2 + 29 17 25 1 +@SUBSTRUCTURE + 1 BEWK 1 +@COMMENT +COMMENT 4-AMINO-N-2-PYRIDINYLBENZENESULFONAMIDE (ANTIBACTERIAL DRUG +@MOLECULE +BIHKEI01 + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.7716 -2.9955 14.2543 O.3 1 BIHK -0.8290 + 2 O2 -9.8028 -7.2137 13.9344 O.3 1 BIHK -0.5600 + 3 O3 -11.3719 -6.0058 15.2078 O.3 1 BIHK -0.6800 + 4 N1 -7.2539 -3.4869 14.6747 N.2 1 BIHK -0.1790 + 5 C1 -9.6292 -3.5461 14.3353 C.2 1 BIHK -0.1710 + 6 C2 -8.4271 -2.8343 14.5350 C.2 1 BIHK 0.2175 + 7 C3 -8.3957 -1.3349 14.6274 C.3 1 BIHK 0.1435 + 8 C4 -7.1390 -4.8217 14.6424 C.2 1 BIHK 0.2110 + 9 C5 -8.2600 -5.5732 14.4293 C.2 1 BIHK -0.1435 + 10 C6 -8.4600 -7.0363 14.4112 C.3 1 BIHK 0.4235 + 11 C7 -10.5356 -5.9741 14.0681 C.3 1 BIHK 0.7035 + 12 C8 -9.4710 -4.9338 14.2583 C.2 1 BIHK -0.1435 + 13 H23 -11.5294 -5.0517 15.3789 H 1 BIHK 0.4000 + 14 H3 -6.4222 -2.9264 14.8291 H 1 BIHK 0.4570 + 15 H131 -7.3708 -0.9705 14.7516 H 1 BIHK 0.0000 + 16 H132 -8.9770 -0.9925 15.4894 H 1 BIHK 0.0000 + 17 H133 -8.7971 -0.8855 13.7136 H 1 BIHK 0.0000 + 18 H14 -6.1514 -5.2349 14.7979 H 1 BIHK 0.1500 + 19 H161 -8.3810 -7.4669 15.4140 H 1 BIHK 0.0000 + 20 H162 -7.7751 -7.5428 13.7259 H 1 BIHK 0.0000 + 21 H17 -11.1275 -5.8182 13.1610 H 1 BIHK 0.0000 +@BOND + 1 1 5 1 + 2 2 11 1 + 3 2 10 1 + 4 3 13 1 + 5 3 11 1 + 6 4 14 1 + 7 4 8 1 + 8 4 6 2 + 9 5 12 2 + 10 5 6 1 + 11 6 7 1 + 12 7 17 1 + 13 7 16 1 + 14 7 15 1 + 15 8 18 1 + 16 8 9 2 + 17 9 12 1 + 18 9 10 1 + 19 10 20 1 + 20 10 19 1 + 21 11 21 1 + 22 11 12 1 +@SUBSTRUCTURE + 1 BIHK 1 +@COMMENT +COMMENT PYRIDOXAL +@MOLECULE +BIPDEJ02 + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.3726 -4.8729 14.3028 N.3 1 UNCH -0.4691 + 2 C1 -7.4540 -5.4673 15.1648 C.2 1 UNCH 0.6900 + 3 O1 -6.2769 -5.1266 15.2560 O.2 1 UNCH -0.5700 + 4 N2 -7.9411 -6.4832 15.9495 N.3 1 UNCH -0.4900 + 5 C2 -9.2361 -6.9297 15.9894 C.2 1 UNCH 0.6156 + 6 O2 -9.5985 -7.8228 16.7462 O.2 1 UNCH -0.5700 + 7 C3 -10.1544 -6.2466 15.0605 C.2 1 UNCH 0.1639 + 8 F1 -11.4404 -6.6418 15.0485 F 1 UNCH -0.1495 + 9 C4 -9.6989 -5.2702 14.2769 C.2 1 UNCH -0.0410 + 10 C5 -7.8759 -3.7839 13.4619 C.3 1 UNCH 0.5801 + 11 C6 -7.7514 -2.4611 14.2152 C.3 1 UNCH 0.0000 + 12 C7 -9.0174 -1.7357 13.8330 C.3 1 UNCH 0.0000 + 13 C8 -9.2106 -2.1898 12.4054 C.3 1 UNCH 0.2800 + 14 O3 -8.7669 -3.5516 12.3542 O.3 1 UNCH -0.5600 + 15 H2 -7.2877 -6.9206 16.5806 H 1 UNCH 0.3700 + 16 H4 -10.3715 -4.7662 13.5914 H 1 UNCH 0.1500 + 17 H5 -6.9029 -4.0825 13.0542 H 1 UNCH 0.0000 + 18 H61 -7.6250 -2.5643 15.2967 H 1 UNCH 0.0000 + 19 H62 -6.8896 -1.9031 13.8284 H 1 UNCH 0.0000 + 20 H71 -9.8487 -2.0846 14.4564 H 1 UNCH 0.0000 + 21 H72 -8.9462 -0.6493 13.9298 H 1 UNCH 0.0000 + 22 H81 -10.2529 -2.1293 12.0807 H 1 UNCH 0.0000 + 23 H82 -8.5927 -1.6065 11.7141 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 9 1 + 3 1 10 1 + 4 2 3 2 + 5 2 4 am + 6 4 5 am + 7 4 15 1 + 8 5 6 2 + 9 5 7 1 + 10 7 8 1 + 11 7 9 2 + 12 9 16 1 + 13 10 11 1 + 14 10 14 1 + 15 10 17 1 + 16 11 12 1 + 17 11 18 1 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 12 21 1 + 22 13 14 1 + 23 13 22 1 + 24 13 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-FLUORO-1-(TETRAHYDRO-2-FURYL)-URACIL (BETA FORM) TEGAFUR +@MOLECULE +BIPJUF10 + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.5426 -3.1043 14.1621 C.2 1 UNCH 0.0862 + 2 C2 -8.1148 -4.3981 13.8468 C.2 1 UNCH 0.1330 + 3 C3 -8.7663 -5.5329 14.3545 C.2 1 UNCH -0.1500 + 4 C4 -9.8807 -5.3518 15.1832 C.2 1 UNCH 0.1330 + 5 C5 -10.3403 -4.0620 15.4919 C.2 1 UNCH -0.1500 + 6 C6 -9.6722 -2.9435 14.9786 C.2 1 UNCH -0.1500 + 7 C7 -7.8617 -1.8795 13.7040 C.2 1 UNCH 0.6338 + 8 O1 -6.5293 -2.0119 13.7657 O.3 1 UNCH -0.6500 + 9 O2 -8.4072 -0.8370 13.4033 O.2 1 UNCH -0.5700 + 10 N1 -7.0220 -4.6104 12.9179 N.2 1 UNCH 0.9070 + 11 O3 -6.0938 -5.3329 13.3019 O.3 1 UNCH -0.5200 + 12 O4 -7.1336 -4.1044 11.7939 O.2 1 UNCH -0.5200 + 13 N2 -10.5843 -6.5234 15.7239 N.2 1 UNCH 0.9070 + 14 O5 -10.1950 -7.6409 15.3605 O.3 1 UNCH -0.5200 + 15 O6 -11.5211 -6.3195 16.5070 O.2 1 UNCH -0.5200 + 16 H1 -6.1718 -1.1514 13.4541 H 1 UNCH 0.5000 + 17 H31 -8.4131 -6.5301 14.0937 H 1 UNCH 0.1500 + 18 H51 -11.2117 -3.9100 16.1286 H 1 UNCH 0.1500 + 19 H61 -10.0305 -1.9439 15.2269 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 10 1 + 6 3 4 2 + 7 3 17 1 + 8 4 5 1 + 9 4 13 1 + 10 5 6 2 + 11 5 18 1 + 12 6 19 1 + 13 7 8 1 + 14 7 9 2 + 15 8 16 1 + 16 10 11 1 + 17 10 12 2 + 18 13 14 1 + 19 13 15 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4-DINITROBENZOIC ACID +@MOLECULE +BIPYCL01 + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.9478 -4.8693 16.0403 N.2 1 BIPY -0.1790 + 2 C1 -8.5627 -4.6651 14.7565 C.2 1 BIPY 0.3610 + 3 C2 -7.2408 -4.9640 14.3971 C.2 1 BIPY -0.1500 + 4 C3 -6.3623 -5.4656 15.3546 C.2 1 BIPY -0.1500 + 5 C4 -6.8022 -5.6629 16.6573 C.2 1 BIPY -0.1500 + 6 C5 -8.1134 -5.3515 16.9823 C.2 1 BIPY 0.2110 + 7 N2 -9.6159 -4.6735 12.5923 N.2 1 BIPY -0.1790 + 8 C6 -9.5732 -4.1341 13.8355 C.2 1 BIPY 0.3610 + 9 C7 -10.4798 -3.1135 14.1554 C.2 1 BIPY -0.1500 + 10 C8 -11.4002 -2.6847 13.2019 C.2 1 BIPY -0.1500 + 11 C9 -11.4103 -3.2695 11.9420 C.2 1 BIPY -0.1500 + 12 C10 -10.4966 -4.2718 11.6548 C.2 1 BIPY 0.2110 + 13 H1 -9.9049 -4.6686 16.3421 H 1 BIPY 0.4570 + 14 H2 -6.8594 -4.7848 13.3925 H 1 BIPY 0.1500 + 15 H3 -5.3269 -5.6928 15.0924 H 1 BIPY 0.1500 + 16 H4 -6.1214 -6.0503 17.4155 H 1 BIPY 0.1500 + 17 H5 -8.5168 -5.4795 17.9837 H 1 BIPY 0.1500 + 18 H6 -8.9750 -5.4236 12.3206 H 1 BIPY 0.4570 + 19 H7 -10.4699 -2.6127 15.1227 H 1 BIPY 0.1500 + 20 H8 -12.1053 -1.8834 13.4327 H 1 BIPY 0.1500 + 21 H9 -12.1231 -2.9378 11.1868 H 1 BIPY 0.1500 + 22 H10 -10.4512 -4.7658 10.6875 H 1 BIPY 0.1500 +@BOND + 1 1 13 1 + 2 1 6 2 + 3 1 2 1 + 4 2 8 1 + 5 2 3 2 + 6 3 14 1 + 7 3 4 1 + 8 4 15 1 + 9 4 5 2 + 10 5 16 1 + 11 5 6 1 + 12 6 17 1 + 13 7 18 1 + 14 7 12 2 + 15 7 8 1 + 16 8 9 2 + 17 9 19 1 + 18 9 10 1 + 19 10 20 1 + 20 10 11 2 + 21 11 21 1 + 22 11 12 1 + 23 12 22 1 +@SUBSTRUCTURE + 1 BIPY 1 +@COMMENT +COMMENT 2,2'-BIPYRIDINIUM DICHLORIDE +@MOLECULE +BITNAT10 + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.5687 -5.5963 12.7150 C.2 1 BITN 0.0400 + 2 C2 -11.4179 -6.2797 11.8290 C.2 1 BITN -0.1500 + 3 C3 -12.2309 -5.5254 10.9773 C.2 1 BITN -0.1500 + 4 C4 -12.1993 -4.1347 11.0070 C.2 1 BITN -0.1500 + 5 C5 -11.3499 -3.4639 11.8932 C.2 1 BITN -0.1500 + 6 C6 -10.5199 -4.2005 12.7626 C.2 1 BITN 0.2272 + 7 N1 -9.6354 -3.6672 13.6860 N.2 1 BITN -0.5653 + 8 C7 -9.0290 -4.6478 14.3222 C.2 1 BITN 0.3021 + 9 S1 -9.4636 -6.2345 13.8718 S.3 1 BITN -0.0800 + 10 N2 -8.0673 -4.4416 15.3270 N.3 1 BITN 0.6456 + 11 C8 -7.5750 -3.2471 15.8388 C.2 1 BITN -0.3316 + 12 C9 -6.6518 -3.5865 16.8046 C.2 1 BITN -0.1500 + 13 C10 -6.6346 -4.9928 16.8260 C.2 1 BITN 0.1078 + 14 N3 -7.4853 -5.5127 15.9380 N.2 1 BITN -0.7068 + 15 C11 -5.8170 -5.8845 17.6829 C.3 1 BITN 0.1810 + 16 C12 -8.0153 -1.9077 15.3752 C.3 1 BITN 0.1800 + 17 H1 -11.4432 -7.3650 11.8052 H 1 BITN 0.1500 + 18 H2 -12.8963 -6.0347 10.2830 H 1 BITN 0.1500 + 19 H3 -12.8380 -3.5626 10.3379 H 1 BITN 0.1500 + 20 H4 -11.3229 -2.3791 11.9188 H 1 BITN 0.1500 + 21 H5 -6.0697 -2.9064 17.4114 H 1 BITN 0.1500 + 22 H6 -5.1764 -6.5257 17.0688 H 1 BITN 0.0000 + 23 H7 -6.4603 -6.5227 18.2971 H 1 BITN 0.0000 + 24 H8 -5.1737 -5.3064 18.3539 H 1 BITN 0.0000 + 25 H9 -9.0874 -1.7672 15.5445 H 1 BITN 0.0000 + 26 H10 -7.4898 -1.1178 15.9225 H 1 BITN 0.0000 + 27 H11 -7.7983 -1.7702 14.3113 H 1 BITN 0.0000 +@BOND + 1 1 9 1 + 2 1 6 1 + 3 1 2 2 + 4 2 17 1 + 5 2 3 1 + 6 3 18 1 + 7 3 4 2 + 8 4 19 1 + 9 4 5 1 + 10 5 20 1 + 11 5 6 2 + 12 6 7 1 + 13 7 8 2 + 14 8 10 am + 15 8 9 1 + 16 10 14 1 + 17 10 11 1 + 18 11 16 1 + 19 11 12 2 + 20 12 21 1 + 21 12 13 1 + 22 13 15 1 + 23 13 14 2 + 24 15 24 1 + 25 15 23 1 + 26 15 22 1 + 27 16 27 1 + 28 16 26 1 + 29 16 25 1 +@SUBSTRUCTURE + 1 BITN 1 +@COMMENT +COMMENT 2-(3,5-DIMETHYLPYRAZOLYL)-1,3-BENZOTHIAZOLE +@MOLECULE +BIYBIU10 + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C23 -9.7950 -3.3132 13.7261 C.2 1 BIYB 0.1000 + 2 C24 -9.6673 -4.5046 12.9922 C.2 1 BIYB 0.1015 + 3 C25 -10.3720 -4.6597 11.7883 C.2 1 BIYB -0.1500 + 4 C26 -11.1877 -3.6375 11.3031 C.2 1 BIYB -0.1500 + 5 C27 -11.3009 -2.4482 12.0145 C.2 1 BIYB -0.1500 + 6 C28 -10.6036 -2.2856 13.2131 C.2 1 BIYB -0.1500 + 7 C29 -7.6724 -3.6190 16.8084 C.2 1 BIYB -0.1500 + 8 C30 -6.8255 -4.4841 17.5039 C.2 1 BIYB -0.1500 + 9 C31 -6.5512 -5.7466 16.9900 C.2 1 BIYB -0.1500 + 10 C32 -7.1192 -6.1395 15.7781 C.2 1 BIYB -0.1500 + 11 N1 -9.0798 -3.0830 14.9148 N.3 1 BIYB -0.6000 + 12 S1 -8.6393 -5.8635 13.5245 S.3 1 BIYB -0.2030 + 13 C21 -7.9714 -5.2761 15.0723 C.2 1 BIYB 0.1015 + 14 C22 -8.2692 -4.0073 15.5976 C.2 1 BIYB 0.1000 + 15 H25 -10.2854 -5.5814 11.2171 H 1 BIYB 0.1500 + 16 H26 -11.7264 -3.7694 10.3684 H 1 BIYB 0.1500 + 17 H27 -11.9266 -1.6441 11.6358 H 1 BIYB 0.1500 + 18 H29 -7.8630 -2.6314 17.2203 H 1 BIYB 0.1500 + 19 H30 -6.3772 -4.1685 18.4425 H 1 BIYB 0.1500 + 20 H31 -5.8912 -6.4239 17.5258 H 1 BIYB 0.1500 + 21 H10 -9.3966 -2.2960 15.4650 H 1 BIYB 0.4000 + 22 H1 -10.6948 -1.3431 13.7468 H 1 BIYB 0.1500 + 23 H2 -6.8889 -7.1265 15.3830 H 1 BIYB 0.1500 +@BOND + 1 13 12 1 + 2 13 10 1 + 3 13 14 2 + 4 14 11 1 + 5 14 7 1 + 6 1 11 1 + 7 1 6 1 + 8 1 2 2 + 9 2 12 1 + 10 2 3 1 + 11 3 15 1 + 12 3 4 2 + 13 4 16 1 + 14 4 5 1 + 15 5 17 1 + 16 5 6 2 + 17 6 22 1 + 18 7 18 1 + 19 7 8 2 + 20 8 19 1 + 21 8 9 1 + 22 9 20 1 + 23 9 10 2 + 24 10 23 1 + 25 11 21 1 +@SUBSTRUCTURE + 1 BIYB 1 +@COMMENT +COMMENT PHENOTHIAZINE BIS(PYROMELLITIC DIANHYDRIDE) +@MOLECULE +BODKOU + 37 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C10 -8.5960 -3.4175 9.7954 C.3 1 BODK 0.2300 + 2 S11 -9.6850 -2.0390 10.1998 S.3 1 BODK -0.3710 + 3 C12 -10.6665 -2.7817 11.4188 C.2 1 BODK 0.7320 + 4 S13 -11.4860 -1.7486 12.5575 S.3 1 BODK -0.3710 + 5 C14 -12.3482 -3.2104 13.1913 C.3 1 BODK 0.5000 + 6 N15 -11.6779 -4.3558 12.5736 N.3 1 BODK -0.5770 + 7 N16 -10.8750 -4.0630 11.5078 N.2 1 BODK -0.5030 + 8 C17 -12.2621 -3.2900 14.7055 C.3 1 BODK 0.0000 + 9 H8 -8.0651 -3.7675 10.6844 H 1 BODK 0.0000 + 10 H9 -9.1624 -4.2452 9.3599 H 1 BODK 0.0000 + 11 H10 -7.8559 -3.0864 9.0618 H 1 BODK 0.0000 + 12 H13 -12.7527 -2.4294 15.1737 H 1 BODK 0.0000 + 13 H14 -12.7639 -4.1924 15.0729 H 1 BODK 0.0000 + 14 H15 -11.2250 -3.3232 15.0593 H 1 BODK 0.0000 + 15 H1 -13.3915 -3.1653 12.8621 H 1 BODK 0.0000 + 16 H2 -12.3398 -5.1053 12.3623 H 1 BODK 0.3600 + 17 N26 -5.0853 -5.2620 16.2061 N.2 1 BODK -0.5653 + 18 C27 -3.8111 -5.0836 15.9735 C.2 1 BODK 0.4621 + 19 S28 -3.4333 -4.3553 14.4695 S.3 1 BODK -0.0800 + 20 C29 -5.1054 -4.2442 14.1131 C.2 1 BODK -0.1100 + 21 N30 -2.8504 -5.4608 16.8325 N.3 1 BODK -0.8840 + 22 N18 -8.9235 -5.3880 13.4011 N.3 1 BODK -0.8000 + 23 C19 -8.1282 -4.4136 13.9479 C.2 1 BODK 0.6300 + 24 O20 -8.0343 -3.2839 13.4945 O.2 1 BODK -0.5700 + 25 C21 -7.3208 -4.8462 15.1723 C.2 1 BODK 0.5360 + 26 N22 -7.8906 -5.3110 16.2513 N.2 1 BODK -0.5130 + 27 O23 -9.2910 -5.3087 16.1658 O.3 1 BODK -0.2170 + 28 H16 -9.2052 -6.1381 14.0221 H 1 BODK 0.3700 + 29 H17 -9.6578 -5.0437 12.7778 H 1 BODK 0.3700 + 30 H18 -9.4776 -6.6816 17.7097 H 1 BODK 0.0000 + 31 H19 -9.5016 -4.9540 18.1988 H 1 BODK 0.0000 + 32 H20 -10.9051 -5.6734 17.3759 H 1 BODK 0.0000 + 33 H24 -3.1509 -6.1230 17.5393 H 1 BODK 0.4000 + 34 H25 -1.9343 -5.6569 16.4494 H 1 BODK 0.4000 + 35 C24 -9.8138 -5.6762 17.4382 C.3 1 BODK 0.2800 + 36 C25 -5.8579 -4.7731 15.1482 C.2 1 BODK 0.1412 + 37 H3 -5.4406 -3.7978 13.1870 H 1 BODK 0.1500 +@BOND + 1 1 11 1 + 2 1 10 1 + 3 1 9 1 + 4 1 2 1 + 5 2 3 1 + 6 3 7 2 + 7 3 4 1 + 8 4 5 1 + 9 5 15 1 + 10 5 8 1 + 11 5 6 1 + 12 6 16 1 + 13 6 7 1 + 14 8 14 1 + 15 8 13 1 + 16 8 12 1 + 17 22 29 1 + 18 22 28 1 + 19 22 23 am + 20 23 25 1 + 21 23 24 2 + 22 25 36 1 + 23 25 26 2 + 24 26 27 1 + 25 27 35 1 + 26 35 32 1 + 27 35 31 1 + 28 35 30 1 + 29 36 20 2 + 30 36 17 1 + 31 17 18 2 + 32 18 21 am + 33 18 19 1 + 34 19 20 1 + 35 20 37 1 + 36 21 34 1 + 37 21 33 1 +@SUBSTRUCTURE + 1 BODK 1 +@COMMENT +COMMENT SODIUM 3-((5-METHYL-1,3,4-THIADIAZOL-2-YL)-THIOMETHYL)-8-OX +@MOLECULE +BSALAP01 + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -4.6488 -2.1650 16.9381 BR 1 BRUR -0.1110 + 2 O1 -9.0505 -1.7703 12.8248 O.3 1 BRUR -0.5325 + 3 N1 -9.7667 -4.2478 13.5059 N.2 1 BRUR -0.6290 + 4 N2 -10.7353 -6.1291 14.5551 N.2 1 BRUR -0.6200 + 5 C1 -6.8968 -3.1523 15.4884 C.2 1 BRUR -0.1500 + 6 C2 -6.0348 -2.0677 15.6554 C.2 1 BRUR 0.1110 + 7 C3 -6.1831 -0.9125 14.8870 C.2 1 BRUR -0.1500 + 8 C4 -7.2054 -0.8375 13.9400 C.2 1 BRUR -0.1500 + 9 C5 -8.0703 -1.9154 13.7677 C.2 1 BRUR 0.0825 + 10 C6 -7.9198 -3.0759 14.5378 C.2 1 BRUR 0.0862 + 11 C7 -8.8131 -4.2439 14.3840 C.2 1 BRUR 0.3038 + 12 C8 -10.5789 -5.3896 13.4362 C.2 1 BRUR 0.4890 + 13 C9 -11.2199 -5.6866 12.2413 C.2 1 BRUR -0.1500 + 14 C10 -12.0505 -6.8022 12.1816 C.2 1 BRUR -0.1500 + 15 C11 -12.2201 -7.5800 13.3195 C.2 1 BRUR -0.1500 + 16 C12 -11.5490 -7.2049 14.4715 C.2 1 BRUR 0.1600 + 17 H1 -9.5837 -2.5968 12.8376 H 1 BRUR 0.4500 + 18 H2 -6.7708 -4.0459 16.0936 H 1 BRUR 0.1500 + 19 H3 -5.5120 -0.0672 15.0170 H 1 BRUR 0.1500 + 20 H4 -7.3302 0.0586 13.3378 H 1 BRUR 0.1500 + 21 H5 -8.6131 -5.1040 15.0501 H 1 BRUR 0.0600 + 22 H6 -11.0730 -5.0553 11.3724 H 1 BRUR 0.1500 + 23 H7 -12.5615 -7.0562 11.2575 H 1 BRUR 0.1500 + 24 H8 -12.8617 -8.4541 13.3112 H 1 BRUR 0.1500 + 25 H9 -11.6527 -7.7775 15.3889 H 1 BRUR 0.1500 +@BOND + 1 1 6 1 + 2 2 9 1 + 3 2 17 1 + 4 3 11 2 + 5 3 12 am + 6 4 12 2 + 7 4 16 1 + 8 5 6 2 + 9 5 10 1 + 10 5 18 1 + 11 6 7 1 + 12 7 8 2 + 13 7 19 1 + 14 8 9 1 + 15 8 20 1 + 16 9 10 2 + 17 10 11 1 + 18 11 21 1 + 19 12 13 1 + 20 13 14 2 + 21 13 22 1 + 22 14 15 1 + 23 14 23 1 + 24 15 16 2 + 25 15 24 1 + 26 16 25 1 +@SUBSTRUCTURE + 1 BRUR 1 +@COMMENT +COMMENT 4-BROMO-2-(2-PYRIDYLIMINOMETHYL)PHENOL +@MOLECULE +BUPSLB10 + 38 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -8.7898 -3.1065 14.4282 P 1 UNCH 0.6773 + 2 S1 -10.5491 -2.2321 14.4431 S.3 1 UNCH -0.6773 + 3 C1 -7.6388 -2.4220 13.1008 C.3 1 UNCH 0.0000 + 4 C2 -8.0166 -2.9766 11.7195 C.3 1 UNCH 0.0000 + 5 C3 -7.7526 -0.8798 13.0380 C.3 1 UNCH 0.0000 + 6 C4 -6.1543 -2.7385 13.3543 C.3 1 UNCH 0.0000 + 7 C5 -7.8609 -2.7869 15.9463 C.3 1 UNCH 0.0000 + 8 H1 -9.0900 -2.8795 11.5314 H 1 UNCH 0.0000 + 9 H2 -7.7510 -4.0332 11.6403 H 1 UNCH 0.0000 + 10 H3 -7.4848 -2.4523 10.9172 H 1 UNCH 0.0000 + 11 H4 -7.0275 -0.4535 12.3350 H 1 UNCH 0.0000 + 12 H5 -7.5707 -0.4305 14.0192 H 1 UNCH 0.0000 + 13 H6 -8.7451 -0.5620 12.7044 H 1 UNCH 0.0000 + 14 H7 -5.5230 -2.3422 12.5500 H 1 UNCH 0.0000 + 15 H8 -5.9685 -3.8097 13.4054 H 1 UNCH 0.0000 + 16 H9 -5.8000 -2.2937 14.2889 H 1 UNCH 0.0000 + 17 H10 -6.9802 -3.4303 16.0074 H 1 UNCH 0.0000 + 18 H11 -8.4690 -2.9655 16.8341 H 1 UNCH 0.0000 + 19 H12 -7.5321 -1.7447 15.9861 H 1 UNCH 0.0000 + 20 P1A -8.9782 -5.3609 14.2818 P 1 UNCH 0.6773 + 21 S1A -7.2189 -6.2353 14.2669 S.3 1 UNCH -0.6773 + 22 C1A -10.1292 -6.0454 15.6092 C.3 1 UNCH 0.0000 + 23 C5A -9.9071 -5.6805 12.7637 C.3 1 UNCH 0.0000 + 24 C2A -9.7514 -5.4908 16.9905 C.3 1 UNCH 0.0000 + 25 C3A -10.0154 -7.5876 15.6720 C.3 1 UNCH 0.0000 + 26 C4A -11.6137 -5.7289 15.3557 C.3 1 UNCH 0.0000 + 27 H10A -10.7878 -5.0371 12.7026 H 1 UNCH 0.0000 + 28 H11A -9.2990 -5.5019 11.8759 H 1 UNCH 0.0000 + 29 H12A -10.2359 -6.7227 12.7239 H 1 UNCH 0.0000 + 30 H1A -8.6780 -5.5879 17.1786 H 1 UNCH 0.0000 + 31 H2A -10.0170 -4.4342 17.0697 H 1 UNCH 0.0000 + 32 H3A -10.2832 -6.0151 17.7928 H 1 UNCH 0.0000 + 33 H4A -10.7405 -8.0139 16.3750 H 1 UNCH 0.0000 + 34 H5A -10.1973 -8.0369 14.6908 H 1 UNCH 0.0000 + 35 H6A -9.0229 -7.9054 16.0056 H 1 UNCH 0.0000 + 36 H7A -12.2450 -6.1252 16.1600 H 1 UNCH 0.0000 + 37 H8A -11.7995 -4.6577 15.3046 H 1 UNCH 0.0000 + 38 H9A -11.9679 -6.1737 14.4211 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 7 1 + 4 1 20 1 + 5 3 4 1 + 6 3 5 1 + 7 3 6 1 + 8 4 8 1 + 9 4 9 1 + 10 4 10 1 + 11 5 11 1 + 12 5 12 1 + 13 5 13 1 + 14 6 14 1 + 15 6 15 1 + 16 6 16 1 + 17 7 17 1 + 18 7 18 1 + 19 7 19 1 + 20 20 21 1 + 21 20 22 1 + 22 20 23 1 + 23 22 24 1 + 24 22 25 1 + 25 22 26 1 + 26 23 27 1 + 27 23 28 1 + 28 23 29 1 + 29 24 30 1 + 30 24 31 1 + 31 24 32 1 + 32 25 33 1 + 33 25 34 1 + 34 25 35 1 + 35 26 36 1 + 36 26 37 1 + 37 26 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DIMETHYL-DI-T-BUTYL-DIPHOSPHANE-DISULFIDE (FOR STEREOISOMER +@MOLECULE +BUPSLD10 + 39 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -10.5312 -4.1464 15.3751 P 1 BUPS 0.9253 + 2 P2 -8.5256 -5.7414 13.1924 P 1 BUPS 0.9253 + 3 S1 -12.2754 -4.1015 14.4738 S.3 1 BUPS -0.6773 + 4 S2 -7.7101 -7.1766 14.2562 S.3 1 BUPS -0.6773 + 5 S3 -8.8240 -3.8895 14.1604 S.3 1 BUPS -0.4960 + 6 C11 -10.3800 -2.8077 16.7239 C.3 1 BUPS 0.0000 + 7 C12 -10.4375 -1.4079 16.0772 C.3 1 BUPS 0.0000 + 8 C13 -11.5341 -2.9140 17.7405 C.3 1 BUPS 0.0000 + 9 C14 -9.0523 -2.9288 17.4958 C.3 1 BUPS 0.0000 + 10 C15 -10.3053 -5.6703 16.3223 C.3 1 BUPS 0.0000 + 11 C21 -7.5037 -5.3240 11.6382 C.3 1 BUPS 0.0000 + 12 C22 -6.1311 -4.7551 12.0545 C.3 1 BUPS 0.0000 + 13 C23 -7.2611 -6.5823 10.7811 C.3 1 BUPS 0.0000 + 14 C24 -8.2131 -4.2774 10.7580 C.3 1 BUPS 0.0000 + 15 C25 -10.1093 -6.2502 12.4829 C.3 1 BUPS 0.0000 + 16 H121 -9.6171 -1.2609 15.3685 H 1 BUPS 0.0000 + 17 H122 -10.3670 -0.6178 16.8334 H 1 BUPS 0.0000 + 18 H123 -11.3735 -1.2603 15.5300 H 1 BUPS 0.0000 + 19 H131 -11.4543 -2.1391 18.5117 H 1 BUPS 0.0000 + 20 H132 -11.5327 -3.8828 18.2476 H 1 BUPS 0.0000 + 21 H133 -12.5084 -2.7957 17.2574 H 1 BUPS 0.0000 + 22 H141 -8.1882 -2.8581 16.8298 H 1 BUPS 0.0000 + 23 H142 -8.9840 -3.8823 18.0271 H 1 BUPS 0.0000 + 24 H143 -8.9564 -2.1326 18.2431 H 1 BUPS 0.0000 + 25 H151 -11.0455 -5.7487 17.1225 H 1 BUPS 0.0000 + 26 H152 -9.3101 -5.7207 16.7693 H 1 BUPS 0.0000 + 27 H153 -10.4392 -6.5425 15.6779 H 1 BUPS 0.0000 + 28 H221 -5.5736 -5.4694 12.6681 H 1 BUPS 0.0000 + 29 H222 -6.2396 -3.8364 12.6386 H 1 BUPS 0.0000 + 30 H223 -5.5163 -4.5195 11.1784 H 1 BUPS 0.0000 + 31 H231 -6.6656 -6.3462 9.8917 H 1 BUPS 0.0000 + 32 H232 -6.7224 -7.3527 11.3405 H 1 BUPS 0.0000 + 33 H233 -8.2025 -7.0207 10.4386 H 1 BUPS 0.0000 + 34 H241 -8.4130 -3.3537 11.3077 H 1 BUPS 0.0000 + 35 H242 -9.1691 -4.6528 10.3821 H 1 BUPS 0.0000 + 36 H243 -7.6018 -4.0148 9.8868 H 1 BUPS 0.0000 + 37 H251 -9.9790 -7.0849 11.7894 H 1 BUPS 0.0000 + 38 H252 -10.5901 -5.4297 11.9458 H 1 BUPS 0.0000 + 39 H253 -10.7865 -6.5922 13.2693 H 1 BUPS 0.0000 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 1 6 1 + 4 1 10 1 + 5 2 4 1 + 6 2 5 1 + 7 2 11 1 + 8 2 15 1 + 9 6 7 1 + 10 6 8 1 + 11 6 9 1 + 12 7 16 1 + 13 7 17 1 + 14 7 18 1 + 15 8 19 1 + 16 8 20 1 + 17 8 21 1 + 18 9 22 1 + 19 9 23 1 + 20 9 24 1 + 21 10 25 1 + 22 10 26 1 + 23 10 27 1 + 24 11 12 1 + 25 11 13 1 + 26 11 14 1 + 27 12 28 1 + 28 12 29 1 + 29 12 30 1 + 30 13 31 1 + 31 13 32 1 + 32 13 33 1 + 33 14 34 1 + 34 14 35 1 + 35 14 36 1 + 36 15 37 1 + 37 15 38 1 + 38 15 39 1 +@SUBSTRUCTURE + 1 BUPS 1 +@COMMENT +COMMENT BIS(METHYL-T-BUTYL-PHOSPHINE-SULFIDE)-SULFANE +@MOLECULE +BUYTIY10 + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.2133 -3.9879 17.7745 N.2 1 BUYT -0.5653 + 2 C2 -7.6687 -5.2547 17.9193 C.2 1 BUYT 0.0772 + 3 C3 -7.2324 -5.7713 16.7094 C.2 1 BUYT -0.3016 + 4 N4 -7.5427 -4.7974 15.8239 N.3 1 BUYT 0.4632 + 5 N5 -7.3935 -4.5656 14.4704 N.3 1 BUYT -0.6291 + 6 C6 -7.9332 -3.2758 14.3325 C.2 1 BUYT -0.0500 + 7 C7 -8.3281 -2.7464 15.5140 C.2 1 BUYT 0.1100 + 8 C8 -8.0879 -3.7363 16.4955 C.2 1 BUYT 0.1415 + 9 C9 -8.9138 -1.4778 15.7008 C.1 1 BUYT 0.4921 + 10 N9 -9.3982 -0.4294 15.8197 N.1 1 BUYT -0.5571 + 11 C1_ -7.6603 -5.6813 13.5734 C.3 1 BUYT 0.6491 + 12 C2_ -9.1228 -6.1739 13.5879 C.3 1 BUYT 0.2800 + 13 O2_ -9.2051 -7.6086 13.4386 O.3 1 BUYT -0.6800 + 14 C3_ -9.7015 -5.5339 12.3391 C.3 1 BUYT 0.2800 + 15 O3_ -10.7950 -6.2848 11.8181 O.3 1 BUYT -0.6800 + 16 C4_ -8.5016 -5.5257 11.4015 C.3 1 BUYT 0.2800 + 17 C5_ -8.5892 -4.4580 10.3103 C.3 1 BUYT 0.2800 + 18 O5_ -8.7853 -3.1596 10.8723 O.3 1 BUYT -0.6800 + 19 O1_ -7.3378 -5.3061 12.2229 O.3 1 BUYT -0.5600 + 20 H2 -7.6109 -5.7217 18.8954 H 1 BUYT 0.1500 + 21 H3 -6.7422 -6.6948 16.4430 H 1 BUYT 0.1500 + 22 H6 -8.0045 -2.8374 13.3437 H 1 BUYT 0.1500 + 23 H1_ -6.9842 -6.5067 13.8270 H 1 BUYT 0.0000 + 24 H2_ -9.6915 -5.9161 14.4862 H 1 BUYT 0.0000 + 25 H21 -8.9537 -8.0042 14.2935 H 1 BUYT 0.4000 + 26 H3_ -10.0473 -4.5203 12.5658 H 1 BUYT 0.0000 + 27 H31 -10.6173 -7.2152 12.0703 H 1 BUYT 0.4000 + 28 H4_ -8.3812 -6.5031 10.9173 H 1 BUYT 0.0000 + 29 H51_ -9.4231 -4.6671 9.6331 H 1 BUYT 0.0000 + 30 H52_ -7.6567 -4.4300 9.7373 H 1 BUYT 0.0000 + 31 H5_ -8.7938 -2.5319 10.1280 H 1 BUYT 0.4000 +@BOND + 1 1 2 1 + 2 1 8 2 + 3 2 3 2 + 4 2 20 1 + 5 3 4 1 + 6 3 21 1 + 7 4 5 1 + 8 4 8 am + 9 5 6 1 + 10 5 11 1 + 11 6 7 2 + 12 6 22 1 + 13 7 8 1 + 14 7 9 1 + 15 9 10 3 + 16 11 12 1 + 17 11 19 1 + 18 11 23 1 + 19 12 13 1 + 20 12 14 1 + 21 12 24 1 + 22 13 25 1 + 23 14 15 1 + 24 14 16 1 + 25 14 26 1 + 26 15 27 1 + 27 16 17 1 + 28 16 19 1 + 29 16 28 1 + 30 17 18 1 + 31 17 29 1 + 32 17 30 1 + 33 18 31 1 +@SUBSTRUCTURE + 1 BUYT 1 +@COMMENT +COMMENT 5-BETA-D-RIBOFURANOSYLIMIDAZO(1,2-B)PYRAZOLE-7-CARBONITRILE +@MOLECULE +BUYTOE10 + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.5207 -4.0012 13.4853 N.3 1 BUYT -0.5531 + 2 C2 -10.5818 -4.5487 12.7493 C.2 1 BUYT -0.0500 + 3 C3 -10.5524 -4.0667 11.4900 C.2 1 BUYT -0.1810 + 4 N4 -9.4803 -3.1921 11.4233 N.3 1 BUYT 0.6006 + 5 N5 -8.9102 -2.3851 10.5127 N.2 1 BUYT -0.7068 + 6 C6 -7.9031 -1.8194 11.2006 C.2 1 BUYT 0.1388 + 7 C7 -7.8200 -2.2593 12.5453 C.2 1 BUYT 0.0190 + 8 C8 -8.8517 -3.1451 12.6528 C.2 1 BUYT -0.0676 + 9 C9 -6.8770 -1.8817 13.5362 C.1 1 BUYT 0.5381 + 10 N9 -6.0954 -1.5915 14.3440 N.1 1 BUYT -0.5571 + 11 C1_ -9.2822 -4.0785 14.9174 C.3 1 BUYT 0.6491 + 12 C2_ -10.0033 -2.9513 15.6782 C.3 1 BUYT 0.2800 + 13 O2_ -9.2699 -1.7313 15.7649 O.3 1 BUYT -0.6800 + 14 C3_ -10.1853 -3.5883 17.0428 C.3 1 BUYT 0.2800 + 15 O3_ -8.9359 -3.4785 17.7462 O.3 1 BUYT -0.6800 + 16 C4_ -10.4825 -5.0396 16.6857 C.3 1 BUYT 0.2800 + 17 C5_ -11.9706 -5.3020 16.4440 C.3 1 BUYT 0.2800 + 18 O5_ -12.1656 -6.6770 16.1189 O.3 1 BUYT -0.6800 + 19 O1_ -9.7862 -5.3239 15.4471 O.3 1 BUYT -0.5600 + 20 H2 -11.2720 -5.2467 13.2007 H 1 BUYT 0.1500 + 21 H3 -11.1916 -4.2528 10.6465 H 1 BUYT 0.1500 + 22 H6 -7.2655 -1.1075 10.6901 H 1 BUYT 0.1500 + 23 H1_ -8.2035 -4.0590 15.1158 H 1 BUYT 0.0000 + 24 H2_ -10.9772 -2.7334 15.2249 H 1 BUYT 0.0000 + 25 H21 -8.5704 -1.8868 16.4350 H 1 BUYT 0.4000 + 26 H3_ -10.9514 -3.1005 17.6521 H 1 BUYT 0.0000 + 27 H31 -9.0420 -3.9100 18.6142 H 1 BUYT 0.4000 + 28 H4_ -10.0931 -5.7389 17.4336 H 1 BUYT 0.0000 + 29 H51_ -12.3575 -4.7142 15.6061 H 1 BUYT 0.0000 + 30 H52_ -12.5614 -5.0763 17.3365 H 1 BUYT 0.0000 + 31 H5_ -11.4625 -6.9111 15.4812 H 1 BUYT 0.4000 +@BOND + 1 1 11 1 + 2 1 8 1 + 3 1 2 1 + 4 2 20 1 + 5 2 3 2 + 6 3 21 1 + 7 3 4 1 + 8 4 8 1 + 9 4 5 1 + 10 5 6 2 + 11 6 22 1 + 12 6 7 1 + 13 7 9 1 + 14 7 8 2 + 15 9 10 3 + 16 11 23 1 + 17 11 19 1 + 18 11 12 1 + 19 12 24 1 + 20 12 14 1 + 21 12 13 1 + 22 13 25 1 + 23 14 26 1 + 24 14 16 1 + 25 14 15 1 + 26 15 27 1 + 27 16 28 1 + 28 16 19 1 + 29 16 17 1 + 30 17 30 1 + 31 17 29 1 + 32 17 18 1 + 33 18 31 1 +@SUBSTRUCTURE + 1 BUYT 1 +@COMMENT +COMMENT 1-BETA-D-RIBOFURANOSYLIMIDAZO(1,2-B)PYRAZOLE-7-CARBONITRILE +@MOLECULE +BUYXEY10 + 38 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.6187 -5.3039 18.9959 O.2 1 UNCH -0.5700 + 2 C1 -8.4428 -5.3599 18.6669 C.2 1 UNCH 0.5700 + 3 N1 -7.9571 -5.0316 17.4330 N.3 1 UNCH -0.7301 + 4 C2 -8.8270 -4.6770 16.3191 C.3 1 UNCH 0.3611 + 5 C3 -8.2388 -5.3352 15.0549 C.2 1 UNCH 0.5690 + 6 O2 -7.0620 -5.6873 14.9861 O.2 1 UNCH -0.5700 + 7 C4 -8.9168 -3.1583 16.1151 C.3 1 UNCH 0.0000 + 8 C5 -9.6496 -2.4597 17.2587 C.3 1 UNCH 0.2300 + 9 S1 -9.7903 -0.6619 16.9680 S.3 1 UNCH -0.4600 + 10 C6 -11.1162 -0.6545 15.7360 C.3 1 UNCH 0.2300 + 11 N2 -9.1260 -5.4672 14.0072 N.3 1 UNCH -0.7301 + 12 C7 -8.6574 -5.8451 12.6673 C.3 1 UNCH 0.3611 + 13 C8 -9.7418 -6.6385 11.9084 C.3 1 UNCH 0.0000 + 14 C9 -10.1365 -7.9066 12.6760 C.3 1 UNCH 0.0000 + 15 C10 -9.2820 -7.0337 10.5010 C.3 1 UNCH 0.0000 + 16 C11 -8.3387 -4.5244 11.9606 C.2 1 UNCH 0.6590 + 17 O3 -7.3034 -4.6077 11.1037 O.3 1 UNCH -0.6500 + 18 O4 -8.9437 -3.4711 12.1083 O.2 1 UNCH -0.5700 + 19 H1 -9.4311 -2.9568 15.1685 H 1 UNCH 0.0000 + 20 H2 -10.6402 -6.0153 11.8048 H 1 UNCH 0.0000 + 21 H3 -7.6444 -5.6803 19.3566 H 1 UNCH 0.0600 + 22 H4 -7.1963 -3.6982 10.7542 H 1 UNCH 0.5000 + 23 H5 -10.8900 -8.4775 12.1226 H 1 UNCH 0.0000 + 24 H6 -10.5666 -7.6648 13.6532 H 1 UNCH 0.0000 + 25 H7 -6.9830 -5.2238 17.2136 H 1 UNCH 0.3700 + 26 H8 -9.8239 -5.1007 16.4914 H 1 UNCH 0.0000 + 27 H9 -7.7345 -6.4286 12.7628 H 1 UNCH 0.0000 + 28 H10 -9.9648 -4.8981 14.0340 H 1 UNCH 0.3700 + 29 H11 -7.9047 -2.7436 16.0134 H 1 UNCH 0.0000 + 30 H12 -9.0943 -2.5809 18.1936 H 1 UNCH 0.0000 + 31 H13 -10.7845 -1.1174 14.8039 H 1 UNCH 0.0000 + 32 H14 -9.1215 -6.1530 9.8718 H 1 UNCH 0.0000 + 33 H15 -10.6487 -2.8807 17.4104 H 1 UNCH 0.0000 + 34 H16 -9.2701 -8.5574 12.8367 H 1 UNCH 0.0000 + 35 H17 -11.3967 0.3805 15.5220 H 1 UNCH 0.0000 + 36 H18 -11.9965 -1.1783 16.1173 H 1 UNCH 0.0000 + 37 H19 -10.0387 -7.6499 10.0031 H 1 UNCH 0.0000 + 38 H20 -8.3490 -7.6065 10.5346 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 2 3 am + 3 2 21 1 + 4 3 4 1 + 5 3 25 1 + 6 4 5 1 + 7 4 7 1 + 8 4 26 1 + 9 5 6 2 + 10 5 11 am + 11 7 8 1 + 12 7 19 1 + 13 7 29 1 + 14 8 9 1 + 15 8 30 1 + 16 8 33 1 + 17 9 10 1 + 18 10 31 1 + 19 10 35 1 + 20 10 36 1 + 21 11 12 1 + 22 11 28 1 + 23 12 13 1 + 24 12 16 1 + 25 12 27 1 + 26 13 14 1 + 27 13 15 1 + 28 13 20 1 + 29 14 23 1 + 30 14 24 1 + 31 14 34 1 + 32 15 32 1 + 33 15 37 1 + 34 15 38 1 + 35 16 17 1 + 36 16 18 2 + 37 17 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-FORMYL-L-METHIONYL-L-VALINE PEPSEQ A=2 MET*-VAL +@MOLECULE +BYITOT02 + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.7918 -6.4924 15.6850 O.3 1 BUYX -0.2870 + 2 S2 -11.0024 -4.8493 15.4979 S.3 1 BUYX -0.1340 + 3 C3 -10.2546 -4.7066 13.8769 C.2 1 BUYX 0.6410 + 4 N4 -10.5183 -5.7297 12.9609 N.3 1 BUYX -0.7882 + 5 C5 -10.6687 -7.1263 13.3964 C.3 1 BUYX 0.3691 + 6 C6 -11.4672 -7.2479 14.6864 C.3 1 BUYX 0.2800 + 7 N7 -9.5194 -3.6878 13.5346 N.2 1 BUYX -0.6610 + 8 C8 -9.3306 -2.6693 14.4317 C.2 1 BUYX 0.6948 + 9 O9 -10.1666 -1.8015 14.6565 O.2 1 BUYX -0.5700 + 10 C10 -8.0000 -2.6159 15.1126 C.2 1 BUYX 0.0862 + 11 C11 -7.7798 -1.6487 16.1028 C.2 1 BUYX -0.1500 + 12 C12 -6.5488 -1.5807 16.7581 C.2 1 BUYX -0.1500 + 13 C13 -5.5325 -2.4764 16.4274 C.2 1 BUYX -0.1500 + 14 C14 -5.7431 -3.4404 15.4416 C.2 1 BUYX -0.1500 + 15 C15 -6.9733 -3.5118 14.7838 C.2 1 BUYX -0.1500 + 16 C16 -10.0157 -5.5824 11.5961 C.3 1 BUYX 0.3691 + 17 H51 -9.6660 -7.5457 13.5462 H 1 BUYX 0.0000 + 18 H52 -11.1658 -7.7146 12.6168 H 1 BUYX 0.0000 + 19 H61 -11.4907 -8.2928 15.0127 H 1 BUYX 0.0000 + 20 H62 -12.5061 -6.9148 14.5662 H 1 BUYX 0.0000 + 21 H11 -8.5681 -0.9465 16.3675 H 1 BUYX 0.1500 + 22 H12 -6.3846 -0.8288 17.5260 H 1 BUYX 0.1500 + 23 H13 -4.5743 -2.4220 16.9384 H 1 BUYX 0.1500 + 24 H14 -4.9483 -4.1360 15.1840 H 1 BUYX 0.1500 + 25 H15 -7.1189 -4.2653 14.0144 H 1 BUYX 0.1500 + 26 H161 -8.9284 -5.7102 11.5709 H 1 BUYX 0.0000 + 27 H162 -10.4654 -6.3262 10.9295 H 1 BUYX 0.0000 + 28 H163 -10.2688 -4.5976 11.1888 H 1 BUYX 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 1 + 4 3 4 am + 5 3 7 2 + 6 4 5 1 + 7 4 16 1 + 8 5 6 1 + 9 5 17 1 + 10 5 18 1 + 11 6 19 1 + 12 6 20 1 + 13 7 8 am + 14 8 9 2 + 15 8 10 1 + 16 10 11 2 + 17 10 15 1 + 18 11 12 1 + 19 11 21 1 + 20 12 13 2 + 21 12 22 1 + 22 13 14 1 + 23 13 23 1 + 24 14 15 2 + 25 14 24 1 + 26 15 25 1 + 27 16 26 1 + 28 16 27 1 + 29 16 28 1 +@SUBSTRUCTURE + 1 BUYX 1 +@COMMENT +COMMENT 3-BENZOYLIMINO-4-METHYL-1,2,4-OXATHIAZANE (NEUTRON STUDY, A +@MOLECULE +CABWEH10 + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.0844 -3.3914 16.7311 S.3 1 CABW 1.0896 + 2 C10 -9.9453 -3.1879 12.9717 C.2 1 CABW -0.1500 + 3 O1 -5.8165 -4.0882 16.6163 O.3 1 CABW -0.6500 + 4 O2 -7.1911 -2.1352 17.4498 O.3 1 CABW -0.6500 + 5 C1 -7.7753 -3.1792 15.0950 C.3 1 CABW 0.2434 + 6 C2 -8.9459 -4.1234 15.0696 C.2 1 CABW -0.1666 + 7 C3 -9.2088 -4.7795 16.2133 C.2 1 CABW -0.2882 + 8 C4 -8.3038 -4.5264 17.3761 C.3 1 CABW 0.2434 + 9 C5 -9.7437 -4.2725 13.8381 C.2 1 CABW 0.0284 + 10 C6 -10.2958 -5.5133 13.4817 C.2 1 CABW -0.1500 + 11 C7 -11.0358 -5.6617 12.3048 C.2 1 CABW -0.1500 + 12 C8 -11.2321 -4.5718 11.4623 C.2 1 CABW -0.1500 + 13 C9 -10.6865 -3.3353 11.7949 C.2 1 CABW -0.1500 + 14 H11 -7.0137 -3.4457 14.3580 H 1 CABW 0.0000 + 15 H12 -8.0771 -2.1343 14.9909 H 1 CABW 0.0000 + 16 H3 -10.0401 -5.4655 16.3330 H 1 CABW 0.1500 + 17 H41 -7.8042 -5.4398 17.7050 H 1 CABW 0.0000 + 18 H42 -8.8368 -4.0512 18.2021 H 1 CABW 0.0000 + 19 H6 -10.1444 -6.3903 14.1067 H 1 CABW 0.1500 + 20 H7 -11.4536 -6.6312 12.0454 H 1 CABW 0.1500 + 21 H8 -11.8071 -4.6861 10.5471 H 1 CABW 0.1500 + 22 H9 -10.8384 -2.4814 11.1392 H 1 CABW 0.1500 + 23 H10 -9.5465 -2.2029 13.2005 H 1 CABW 0.1500 +@BOND + 1 1 8 1 + 2 1 5 1 + 3 1 4 1 + 4 1 3 1 + 5 2 23 1 + 6 2 13 2 + 7 2 9 1 + 8 5 15 1 + 9 5 14 1 + 10 5 6 1 + 11 6 9 1 + 12 6 7 2 + 13 7 16 1 + 14 7 8 1 + 15 8 18 1 + 16 8 17 1 + 17 9 10 2 + 18 10 19 1 + 19 10 11 1 + 20 11 20 1 + 21 11 12 2 + 22 12 21 1 + 23 12 13 1 + 24 13 22 1 +@SUBSTRUCTURE + 1 CABW 1 +@COMMENT +COMMENT 3-PHENYL-3-THIOLENE-1,1-DIOXIDE (AT -120 DEG.C) +@MOLECULE +CAFORM07 + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -8.7373 -4.0353 14.5626 C.2 1 CAFO 1.0203 + 2 O3 -7.9790 -4.9254 15.0311 O.2 1 CAFO -0.9000 + 3 O4 -9.7818 -3.5089 15.0304 O.3 1 CAFO -0.9000 + 4 H2 -8.4244 -3.6375 13.5384 H 1 CAFO -0.2203 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 4 1 +@SUBSTRUCTURE + 1 CAFO 1 +@COMMENT +COMMENT CALCIUM FORMATE (NEUTRON STUDY, ALPHA FORM) +@MOLECULE +CAGREH10 + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.7453 -6.2525 15.2519 S.3 1 CAFO 1.6674 + 2 S2 -11.2747 -3.7074 16.0917 S.3 1 CAFO 1.6717 + 3 O1 -9.3678 -5.4906 14.8964 O.3 1 CAFO -0.3337 + 4 O2 -11.7976 -5.0837 15.4923 O.3 1 CAFO -0.3674 + 5 O3 -11.1524 -6.9569 14.0515 O.3 1 CAFO -0.6500 + 6 O4 -10.5567 -6.9794 16.4885 O.3 1 CAFO -0.6500 + 7 O5 -12.3679 -2.7619 16.0293 O.3 1 CAFO -0.6500 + 8 O6 -10.5886 -3.9631 17.3378 O.3 1 CAFO -0.6500 + 9 N1 -10.1958 -3.3194 14.9648 N.2 1 CAFO -0.6380 + 10 C1 -9.3428 -4.1953 14.5717 C.2 1 CAFO 0.5138 + 11 C2 -8.2070 -3.8794 13.6713 C.2 1 CAFO 0.0862 + 12 C3 -8.0537 -2.5625 13.2144 C.2 1 CAFO -0.1500 + 13 C4 -6.9974 -2.2297 12.3636 C.2 1 CAFO -0.1500 + 14 C5 -6.0886 -3.2074 11.9641 C.2 1 CAFO -0.1500 + 15 C6 -6.2325 -4.5188 12.4138 C.2 1 CAFO -0.1500 + 16 C7 -7.2875 -4.8573 13.2652 C.2 1 CAFO -0.1500 + 17 H3 -8.7505 -1.7817 13.5133 H 1 CAFO 0.1500 + 18 H4 -6.8836 -1.2064 12.0128 H 1 CAFO 0.1500 + 19 H5 -5.2662 -2.9468 11.3017 H 1 CAFO 0.1500 + 20 H6 -5.5207 -5.2796 12.1006 H 1 CAFO 0.1500 + 21 H7 -7.3685 -5.8892 13.5979 H 1 CAFO 0.1500 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 1 6 1 + 5 2 4 1 + 6 2 7 1 + 7 2 8 1 + 8 2 9 1 + 9 3 10 1 + 10 9 10 2 + 11 10 11 1 + 12 11 12 2 + 13 11 16 1 + 14 12 13 1 + 15 12 17 1 + 16 13 14 2 + 17 13 18 1 + 18 14 15 1 + 19 14 19 1 + 20 15 16 2 + 21 15 20 1 + 22 16 21 1 +@SUBSTRUCTURE + 1 CAFO 1 +@COMMENT +COMMENT 6-PHENYL-1,3,2,4,5-DIOXADITHIAZINE-2,2,4,4-TETROXIDE +@MOLECULE +CALXES20 + 27 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -11.0292 -5.8950 13.7243 N.3 1 CALX -0.8530 + 2 C1 -11.3292 -4.4837 14.0370 C.3 1 CALX 0.5640 + 3 C2 -12.1765 -4.4381 15.2995 C.3 1 CALX 0.0000 + 4 C3 -10.0616 -3.6026 14.1499 C.2 1 CALX 0.5690 + 5 O1 -9.7805 -2.7802 13.2798 O.2 1 CALX -0.5700 + 6 N2 -9.2778 -3.7953 15.2686 N.3 1 CALX -0.7301 + 7 C4 -7.9950 -3.1042 15.4292 C.3 1 CALX 0.3611 + 8 C5 -6.8871 -4.1333 15.2090 C.2 1 CALX 0.5690 + 9 O2 -6.3019 -4.6704 16.1451 O.2 1 CALX -0.5700 + 10 N3 -6.7401 -4.5149 13.8830 N.3 1 CALX -0.7301 + 11 C6 -6.7959 -5.9615 13.6204 C.3 1 CALX 0.1941 + 12 C7 -8.2534 -6.4417 13.6277 C.2 1 CALX 0.9060 + 13 O3 -8.8542 -6.5721 14.7450 O.2 1 CALX -0.9000 + 14 O4 -8.8941 -6.4172 12.5299 O.3 1 CALX -0.9000 + 15 H1 -10.3751 -6.3177 14.4304 H 1 CALX 0.4500 + 16 H2 -11.8021 -6.5385 13.5767 H 1 CALX 0.4500 + 17 H3 -10.3856 -5.9826 12.8936 H 1 CALX 0.4500 + 18 H4 -12.4036 -3.4027 15.5755 H 1 CALX 0.0000 + 19 H5 -11.6667 -4.9026 16.1508 H 1 CALX 0.0000 + 20 H6 -13.1263 -4.9634 15.1515 H 1 CALX 0.0000 + 21 H7 -11.9179 -4.1085 13.1924 H 1 CALX 0.0000 + 22 H8 -9.2761 -4.7408 15.6626 H 1 CALX 0.3700 + 23 H9 -7.9384 -2.7332 16.4564 H 1 CALX 0.0000 + 24 H10 -7.8883 -2.2673 14.7338 H 1 CALX 0.0000 + 25 H11 -7.2946 -3.9818 13.2199 H 1 CALX 0.3700 + 26 H12 -6.2185 -6.5053 14.3745 H 1 CALX 0.0000 + 27 H13 -6.3484 -6.1314 12.6366 H 1 CALX 0.0000 +@BOND + 1 1 2 1 + 2 1 15 1 + 3 1 16 1 + 4 1 17 1 + 5 2 3 1 + 6 2 4 1 + 7 2 21 1 + 8 3 18 1 + 9 3 19 1 + 10 3 20 1 + 11 4 5 2 + 12 4 6 am + 13 6 7 1 + 14 6 22 1 + 15 7 8 1 + 16 7 23 1 + 17 7 24 1 + 18 8 9 2 + 19 8 10 am + 20 10 11 1 + 21 10 25 1 + 22 11 12 1 + 23 11 26 1 + 24 11 27 1 + 25 12 13 2 + 26 12 14 1 +@SUBSTRUCTURE + 1 CALX 1 +@COMMENT +COMMENT L-ALANYL-GLYCYL-GLYCINE MONOHYDRATE PEPSEQ A=3 ALA-GLY-GLY +@MOLECULE +CAMALD03 + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -7.5941 -3.5863 14.4239 C.2 1 CAMA 0.9060 + 2 C2 -8.7777 -4.4242 14.8322 C.3 1 CAMA -0.2120 + 3 C3 -9.9333 -4.1879 13.8950 C.2 1 CAMA 0.9060 + 4 O1 -7.1751 -2.7696 15.3078 O.2 1 CAMA -0.9000 + 5 O2 -7.0173 -3.8790 13.3337 O.3 1 CAMA -0.9000 + 6 O3 -10.3579 -5.2221 13.2837 O.3 1 CAMA -0.9000 + 7 O4 -10.4881 -3.0484 13.9246 O.2 1 CAMA -0.9000 + 8 H21 -9.0950 -4.1811 15.8529 H 1 CAMA 0.0000 + 9 H22 -8.4815 -5.4796 14.8291 H 1 CAMA 0.0000 +@BOND + 1 1 5 1 + 2 1 4 2 + 3 1 2 1 + 4 2 9 1 + 5 2 8 1 + 6 2 3 1 + 7 3 7 2 + 8 3 6 1 +@SUBSTRUCTURE + 1 CAMA 1 +@COMMENT +COMMENT CALCIUM MALONATE DIHYDRATE (NEUTRON STUDY) +@MOLECULE +CEFMEN + 50 53 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.7747 9.1942 7.3740 S.3 1 CEFM -0.4470 + 2 S2 6.1927 10.3546 14.7781 S.3 1 CEFM -0.0800 + 3 S3 0.5782 7.0155 3.4380 S.3 1 CEFM -0.2860 + 4 O1 6.7133 7.4541 6.7534 O.2 1 CEFM -0.5700 + 5 O2 5.5406 5.6595 4.4165 O.2 1 CEFM -0.5700 + 6 O3 5.1947 7.6005 3.3570 O.3 1 CEFM -0.6500 + 7 O4 3.8266 8.7650 10.9777 O.2 1 CEFM -0.5700 + 8 O5 4.8532 11.6090 8.8862 O.3 1 CEFM -0.2170 + 9 N1 4.3756 7.1940 6.6501 N.3 1 CEFM -0.3940 + 10 N2 5.3199 8.9618 9.2418 N.3 1 CEFM -0.6550 + 11 N3 5.3041 11.8065 10.1972 N.2 1 CEFM -0.5130 + 12 N4 6.1694 12.0295 12.8402 N.2 1 CEFM -0.5653 + 13 N5 7.0125 12.8983 14.8303 N.3 1 CEFM -0.8840 + 14 N6 -0.0297 4.3569 3.5876 N.3 1 CEFM 0.3140 + 15 N7 0.5450 3.1655 3.8278 N.2 1 CEFM -0.4180 + 16 N8 1.8268 3.4357 4.0395 N.2 1 CEFM 0.0000 + 17 N9 2.0706 4.7854 3.9404 N.2 1 CEFM -0.3381 + 18 C1 1.8644 8.4667 5.9823 C.3 1 CEFM 0.3682 + 19 C2 2.7695 7.7631 4.9893 C.2 1 CEFM -0.2764 + 20 C3 3.9762 7.2552 5.3443 C.2 1 CEFM 0.1234 + 21 C4 3.5910 7.6255 7.7915 C.3 1 CEFM 0.4420 + 22 C5 4.9334 7.6886 8.5857 C.3 1 CEFM 0.2780 + 23 C6 5.5941 7.4036 7.2070 C.2 1 CEFM 0.5770 + 24 C7 4.9518 6.7228 4.3491 C.2 1 CEFM 0.7056 + 25 C8 4.6914 9.3985 10.3886 C.2 1 CEFM 0.6300 + 26 C9 5.2008 10.7357 10.9366 C.2 1 CEFM 0.5360 + 27 C10 4.8585 12.8649 8.2157 C.3 1 CEFM 0.2800 + 28 C11 5.6331 10.8410 12.3346 C.2 1 CEFM 0.1412 + 29 C12 5.5795 9.8209 13.2695 C.2 1 CEFM -0.1100 + 30 C13 6.4809 11.9023 14.1035 C.2 1 CEFM 0.4621 + 31 C14 2.2439 7.7461 3.5651 C.3 1 CEFM 0.3682 + 32 C15 0.9140 5.3389 3.6638 C.2 1 CEFM 0.2425 + 33 C16 -1.4348 4.4495 3.3089 C.3 1 CEFM 0.2556 + 34 H11 1.3448 9.2991 5.4960 H 1 CEFM 0.0000 + 35 H12 1.1081 7.7749 6.3679 H 1 CEFM 0.0000 + 36 H31 5.9150 7.1599 2.8575 H 1 CEFM 0.5000 + 37 H41 2.9100 6.8480 8.1562 H 1 CEFM 0.0000 + 38 H51 5.0727 6.8461 9.2763 H 1 CEFM 0.0000 + 39 H21 5.8776 9.6556 8.7465 H 1 CEFM 0.3700 + 40 H103 5.8734 13.2729 8.1843 H 1 CEFM 0.0000 + 41 H121 5.2140 8.8098 13.1571 H 1 CEFM 0.1500 + 42 H510 7.4023 13.6586 14.2837 H 1 CEFM 0.4000 + 43 H520 7.5756 12.6401 15.6309 H 1 CEFM 0.4000 + 44 H141 2.8820 7.2060 2.8626 H 1 CEFM 0.0000 + 45 H142 2.1812 8.7782 3.2022 H 1 CEFM 0.0000 + 46 H1 4.5082 12.7106 7.1919 H 1 CEFM 0.0000 + 47 H2 4.1842 13.5650 8.7183 H 1 CEFM 0.0000 + 48 H4 -1.9061 5.0611 4.0821 H 1 CEFM 0.0000 + 49 H5 -1.5685 4.9021 2.3233 H 1 CEFM 0.0000 + 50 H6 -1.8768 3.4495 3.3140 H 1 CEFM 0.0000 +@BOND + 1 1 18 1 + 2 1 21 1 + 3 2 29 1 + 4 2 30 1 + 5 3 31 1 + 6 3 32 1 + 7 4 23 2 + 8 5 24 2 + 9 6 24 1 + 10 6 36 1 + 11 7 25 2 + 12 8 11 1 + 13 8 27 1 + 14 9 20 1 + 15 9 21 1 + 16 9 23 am + 17 10 22 1 + 18 10 25 am + 19 10 39 1 + 20 11 26 2 + 21 12 28 1 + 22 12 30 2 + 23 13 30 am + 24 13 42 1 + 25 13 43 1 + 26 14 15 1 + 27 14 32 am + 28 14 33 1 + 29 15 16 2 + 30 16 17 1 + 31 17 32 2 + 32 18 19 1 + 33 18 34 1 + 34 18 35 1 + 35 19 20 2 + 36 19 31 1 + 37 20 24 1 + 38 21 22 1 + 39 21 37 1 + 40 22 23 1 + 41 22 38 1 + 42 25 26 1 + 43 26 28 1 + 44 27 40 1 + 45 27 46 1 + 46 27 47 1 + 47 28 29 2 + 48 29 41 1 + 49 31 44 1 + 50 31 45 1 + 51 33 48 1 + 52 33 49 1 + 53 33 50 1 +@SUBSTRUCTURE + 1 CEFM 1 +@COMMENT +COMMENT 7BETA-(2-(2-AMINOTHIAZOL-4-YL)-(Z)-2-METHOXYIMINOACETAMIDO) +@MOLECULE +CETROI01 + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.1245 -2.8069 15.6056 S.3 1 UNCH -0.4600 + 2 C1 -8.7529 -1.5871 15.4788 C.3 1 UNCH 0.4300 + 3 C2 -7.3994 -2.3087 15.6646 C.3 1 UNCH 0.2800 + 4 O1 -7.1412 -3.2893 14.6431 O.3 1 UNCH -0.5600 + 5 C3 -8.0594 -4.3980 14.6933 C.3 1 UNCH 0.2800 + 6 C4 -7.5921 -5.4254 13.6549 C.3 1 UNCH 0.2800 + 7 C5 -8.5592 -6.6104 13.5784 C.3 1 UNCH 0.2800 + 8 C6 -9.9863 -6.1015 13.3479 C.3 1 UNCH 0.2800 + 9 O2 -10.3550 -5.1530 14.3696 O.3 1 UNCH -0.5600 + 10 C7 -9.5107 -4.0007 14.3666 C.3 1 UNCH 0.5100 + 11 C8 -8.8142 -0.8361 14.2101 C.1 1 UNCH 0.3571 + 12 N1 -8.8581 -0.2519 13.2077 N.1 1 UNCH -0.5571 + 13 C9 -6.2172 -1.3396 15.6642 C.3 1 UNCH 0.0000 + 14 O3 -6.2859 -5.9191 13.9956 O.3 1 UNCH -0.6800 + 15 O4 -8.1463 -7.4838 12.5275 O.3 1 UNCH -0.6800 + 16 C10 -11.0040 -7.2457 13.3940 C.3 1 UNCH 0.2800 + 17 O5 -12.3211 -6.7211 13.2100 O.3 1 UNCH -0.6800 + 18 H1 -8.8928 -0.8817 16.3060 H 1 UNCH 0.0000 + 19 H2 -7.3883 -2.8189 16.6380 H 1 UNCH 0.0000 + 20 H3 -7.9863 -4.8651 15.6857 H 1 UNCH 0.0000 + 21 H4 -7.4837 -4.9571 12.6683 H 1 UNCH 0.0000 + 22 H5 -8.5045 -7.1802 14.5147 H 1 UNCH 0.0000 + 23 H6 -10.0760 -5.6074 12.3712 H 1 UNCH 0.0000 + 24 H7 -9.5773 -3.5104 13.3882 H 1 UNCH 0.0000 + 25 H8 -6.3466 -0.5523 16.4128 H 1 UNCH 0.0000 + 26 H9 -6.0725 -0.8782 14.6816 H 1 UNCH 0.0000 + 27 H10 -5.2902 -1.8797 15.8873 H 1 UNCH 0.0000 + 28 H11 -10.8181 -7.9851 12.6099 H 1 UNCH 0.0000 + 29 H12 -10.9890 -7.7484 14.3667 H 1 UNCH 0.0000 + 30 H13 -5.7293 -5.1248 14.1218 H 1 UNCH 0.4000 + 31 H14 -7.1878 -7.6263 12.6675 H 1 UNCH 0.4000 + 32 H15 -12.3944 -5.9707 13.8311 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 2 3 1 + 4 2 11 1 + 5 2 18 1 + 6 3 4 1 + 7 3 13 1 + 8 3 19 1 + 9 4 5 1 + 10 5 6 1 + 11 5 10 1 + 12 5 20 1 + 13 6 7 1 + 14 6 14 1 + 15 6 21 1 + 16 7 8 1 + 17 7 15 1 + 18 7 22 1 + 19 8 9 1 + 20 8 16 1 + 21 8 23 1 + 22 9 10 1 + 23 10 24 1 + 24 11 12 3 + 25 13 25 1 + 26 13 26 1 + 27 13 27 1 + 28 14 30 1 + 29 15 31 1 + 30 16 17 1 + 31 16 28 1 + 32 16 29 1 + 33 17 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-S,O-(1R,2S-1-CYANO-2-METHYL-1,2-ETHANEDIYL)-1-THIO-BETA +@MOLECULE +CEWCUC10 + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -8.3178 -2.6921 13.5710 P 1 UNCH 1.1170 + 2 O1 -7.2438 -1.7268 13.0951 O.3 1 UNCH -0.7000 + 3 C1 -9.7762 -2.6024 12.5128 C.2 1 UNCH -0.1390 + 4 C2 -10.1555 -1.3540 11.9941 C.2 1 UNCH -0.1500 + 5 C3 -11.2840 -1.2316 11.1834 C.2 1 UNCH -0.1500 + 6 C4 -12.0470 -2.3565 10.8794 C.2 1 UNCH -0.1500 + 7 C5 -11.6809 -3.6031 11.3834 C.2 1 UNCH -0.1500 + 8 C6 -10.5516 -3.7271 12.1954 C.2 1 UNCH -0.1500 + 9 C7 -7.7113 -4.3910 13.5447 C.2 1 UNCH -0.1390 + 10 C8 -6.8470 -4.7810 12.5093 C.2 1 UNCH -0.1500 + 11 C9 -6.3635 -6.0876 12.4379 C.2 1 UNCH -0.1500 + 12 C10 -6.7371 -7.0207 13.4022 C.2 1 UNCH -0.1500 + 13 C11 -7.5911 -6.6475 14.4383 C.2 1 UNCH -0.1500 + 14 C12 -8.0760 -5.3401 14.5108 C.2 1 UNCH -0.1500 + 15 C13 -8.8264 -2.3058 15.2582 C.2 1 UNCH -0.1390 + 16 C14 -7.8557 -1.8556 16.1673 C.2 1 UNCH -0.1500 + 17 C15 -8.1974 -1.5585 17.4867 C.2 1 UNCH -0.1500 + 18 C16 -9.5150 -1.7062 17.9136 C.2 1 UNCH -0.1500 + 19 C17 -10.4905 -2.1481 17.0219 C.2 1 UNCH -0.1500 + 20 C18 -10.1498 -2.4462 15.7010 C.2 1 UNCH -0.1500 + 21 H10 -9.5582 -0.4721 12.2224 H 1 UNCH 0.1500 + 22 H11 -11.5638 -0.2591 10.7861 H 1 UNCH 0.1500 + 23 H12 -12.9244 -2.2624 10.2448 H 1 UNCH 0.1500 + 24 H13 -12.2739 -4.4814 11.1400 H 1 UNCH 0.1500 + 25 H14 -10.2859 -4.7112 12.5730 H 1 UNCH 0.1500 + 26 H15 -6.5456 -4.0534 11.7567 H 1 UNCH 0.1500 + 27 H16 -5.6923 -6.3745 11.6324 H 1 UNCH 0.1500 + 28 H17 -6.3578 -8.0380 13.3491 H 1 UNCH 0.1500 + 29 H18 -7.8766 -7.3755 15.1938 H 1 UNCH 0.1500 + 30 H19 -8.7381 -5.0738 15.3308 H 1 UNCH 0.1500 + 31 H20 -6.8252 -1.7312 15.8368 H 1 UNCH 0.1500 + 32 H21 -7.4359 -1.2078 18.1786 H 1 UNCH 0.1500 + 33 H22 -9.7826 -1.4714 18.9406 H 1 UNCH 0.1500 + 34 H23 -11.5198 -2.2567 17.3551 H 1 UNCH 0.1500 + 35 H24 -10.9301 -2.7860 15.0248 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 9 1 + 4 1 15 1 + 5 3 4 2 + 6 3 8 1 + 7 4 5 1 + 8 4 21 1 + 9 5 6 2 + 10 5 22 1 + 11 6 7 1 + 12 6 23 1 + 13 7 8 2 + 14 7 24 1 + 15 8 25 1 + 16 9 10 2 + 17 9 14 1 + 18 10 11 1 + 19 10 26 1 + 20 11 12 2 + 21 11 27 1 + 22 12 13 1 + 23 12 28 1 + 24 13 14 2 + 25 13 29 1 + 26 14 30 1 + 27 15 16 2 + 28 15 20 1 + 29 16 17 1 + 30 16 31 1 + 31 17 18 2 + 32 17 32 1 + 33 18 19 1 + 34 18 33 1 + 35 19 20 2 + 36 19 34 1 + 37 20 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-METHYL-6-PHENYL-1,2,3-OXATHIAZIN-4(3H)-OL 2,2-DIOXIDE TRI +@MOLECULE +CEWVIJ10 + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.1068 -2.8222 15.4864 O.2 1 UNCH -0.5700 + 2 O2 -6.9403 -2.0574 12.1918 O.2 1 UNCH -0.5700 + 3 N1 -8.5421 -2.4095 13.8467 N.3 1 UNCH -0.4201 + 4 N2 -9.4581 -4.6030 14.1781 N.3 1 UNCH -0.4231 + 5 N3 -7.1893 -4.9348 11.5521 N.3 1 UNCH 0.0332 + 6 N4 -8.5669 -6.2956 12.6507 N.2 1 UNCH -0.5653 + 7 C1 -9.4153 -3.2581 14.5608 C.2 1 UNCH 0.6900 + 8 C2 -8.6540 -5.0302 13.1477 C.2 1 UNCH 0.2902 + 9 C3 -7.8224 -4.1777 12.4933 C.2 1 UNCH -0.2366 + 10 C4 -7.7049 -2.7995 12.7993 C.2 1 UNCH 0.7150 + 11 C5 -7.6728 -6.2106 11.6856 C.2 1 UNCH 0.0365 + 12 C6 -8.5148 -1.0209 14.2617 C.3 1 UNCH 0.3001 + 13 C7 -10.3321 -5.5408 14.8795 C.3 1 UNCH 0.3001 + 14 C8 -9.5898 -6.4164 15.9080 C.3 1 UNCH 0.0000 + 15 C9 -10.5352 -7.4884 16.4536 C.3 1 UNCH 0.0000 + 16 C10 -9.0187 -5.5917 17.0627 C.3 1 UNCH 0.0000 + 17 H1 -6.4979 -4.6105 10.8878 H 1 UNCH 0.2700 + 18 H2 -7.3382 -7.0258 11.0569 H 1 UNCH 0.1500 + 19 H3 -8.1906 -0.9700 15.3063 H 1 UNCH 0.0000 + 20 H4 -9.5263 -0.6073 14.1932 H 1 UNCH 0.0000 + 21 H5 -7.8418 -0.4139 13.6511 H 1 UNCH 0.0000 + 22 H6 -11.1391 -4.9889 15.3765 H 1 UNCH 0.0000 + 23 H7 -10.8159 -6.1732 14.1238 H 1 UNCH 0.0000 + 24 H8 -8.7542 -6.9269 15.4134 H 1 UNCH 0.0000 + 25 H9 -10.9192 -8.1172 15.6433 H 1 UNCH 0.0000 + 26 H10 -11.3907 -7.0391 16.9695 H 1 UNCH 0.0000 + 27 H11 -10.0159 -8.1410 17.1635 H 1 UNCH 0.0000 + 28 H12 -8.2629 -4.8840 16.7083 H 1 UNCH 0.0000 + 29 H13 -8.5357 -6.2410 17.8009 H 1 UNCH 0.0000 + 30 H14 -9.8045 -5.0260 17.5744 H 1 UNCH 0.0000 +@BOND + 1 1 7 2 + 2 2 10 2 + 3 3 7 am + 4 3 10 am + 5 3 12 1 + 6 4 7 am + 7 4 8 1 + 8 4 13 1 + 9 5 9 1 + 10 5 11 am + 11 5 17 1 + 12 6 8 1 + 13 6 11 2 + 14 8 9 2 + 15 9 10 1 + 16 11 18 1 + 17 12 19 1 + 18 12 20 1 + 19 12 21 1 + 20 13 14 1 + 21 13 22 1 + 22 13 23 1 + 23 14 15 1 + 24 14 16 1 + 25 14 24 1 + 26 15 25 1 + 27 15 26 1 + 28 15 27 1 + 29 16 28 1 + 30 16 29 1 + 31 16 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-ISOBUTYL-1-METHYLXANTHINE +@MOLECULE +CEWYIM30 + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -7.5087 -7.0390 14.0442 O.3 1 CEWY -0.5325 + 2 O2 -7.6929 -5.1149 17.2584 O.3 1 CEWY -0.5325 + 3 C1 -8.5935 -4.9085 14.0806 C.2 1 CEWY 0.0000 + 4 C2 -8.1176 -6.0006 13.4243 C.2 1 CEWY 0.0825 + 5 C3 -8.3126 -6.0282 12.0434 C.2 1 CEWY -0.1500 + 6 C4 -9.0075 -4.9788 11.3837 C.2 1 CEWY -0.1500 + 7 C5 -9.5211 -3.8832 12.0924 C.2 1 CEWY -0.1500 + 8 C6 -9.2879 -3.8953 13.4359 C.2 1 CEWY 0.0000 + 9 C7 -8.7401 -4.2346 15.2974 C.2 1 CEWY 0.0000 + 10 C8 -8.4675 -4.1996 16.6295 C.2 1 CEWY 0.0825 + 11 C9 -9.0090 -3.1321 17.3456 C.2 1 CEWY -0.1500 + 12 C10 -9.7697 -2.1258 16.6913 C.2 1 CEWY -0.1500 + 13 C11 -10.0021 -2.1677 15.3091 C.2 1 CEWY -0.1500 + 14 C12 -9.4671 -3.2404 14.6590 C.2 1 CEWY 0.0000 + 15 H1 -7.8458 -7.0670 14.9565 H 1 CEWY 0.4500 + 16 H2 -7.0797 -5.4770 16.5954 H 1 CEWY 0.4500 + 17 H3 -7.9437 -6.8719 11.4649 H 1 CEWY 0.1500 + 18 H4 -9.1501 -5.0359 10.3062 H 1 CEWY 0.1500 + 19 H5 -10.0616 -3.0843 11.6020 H 1 CEWY 0.1500 + 20 H6 -8.8327 -3.0581 18.4162 H 1 CEWY 0.1500 + 21 H7 -10.1702 -1.3015 17.2784 H 1 CEWY 0.1500 + 22 H8 -10.5702 -1.4010 14.7987 H 1 CEWY 0.1500 +@BOND + 1 1 15 1 + 2 1 4 1 + 3 2 16 1 + 4 2 10 1 + 5 3 9 1 + 6 3 8 1 + 7 3 4 2 + 8 4 5 1 + 9 5 17 1 + 10 5 6 2 + 11 6 18 1 + 12 6 7 1 + 13 7 19 1 + 14 7 8 2 + 15 8 14 1 + 16 9 14 1 + 17 9 10 2 + 18 10 11 1 + 19 11 20 1 + 20 11 12 2 + 21 12 21 1 + 22 12 13 1 + 23 13 22 1 + 24 13 14 2 +@SUBSTRUCTURE + 1 CEWY 1 +@COMMENT +COMMENT 1,2,6-TRIMETHYL-4-PYRIDONE 1,8-BIPHENYLENEDIOL CLATHRATE (A +@MOLECULE +CIHWUL10 + 17 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.9153 -6.3245 16.0386 O.3 1 UNCH -0.2960 + 2 O2 -7.1386 -4.2024 14.6412 O.3 1 UNCH -0.2960 + 3 O3 -9.7006 -2.1219 12.8319 O.3 1 UNCH -0.2960 + 4 C1 -9.8302 -5.1785 16.8884 C.3 1 UNCH -0.0520 + 5 C2 -8.6761 -5.5926 16.0086 C.3 1 UNCH 0.0480 + 6 C3 -8.3572 -4.9601 14.6704 C.3 1 UNCH 0.0480 + 7 C4 -8.3499 -3.4636 14.4246 C.3 1 UNCH 0.0480 + 8 C5 -8.4695 -2.8345 13.0525 C.3 1 UNCH 0.0480 + 9 C6 -9.4685 -3.2654 12.0066 C.3 1 UNCH -0.0520 + 10 H1 -10.4119 -4.3077 16.6144 H 1 UNCH 0.1000 + 11 H2 -9.7474 -5.3494 17.9544 H 1 UNCH 0.1000 + 12 H3 -7.8339 -6.0659 16.5064 H 1 UNCH 0.1000 + 13 H4 -8.5399 -5.5980 13.8102 H 1 UNCH 0.1000 + 14 H5 -8.6723 -2.8296 15.2458 H 1 UNCH 0.1000 + 15 H6 -7.5683 -2.3476 12.6893 H 1 UNCH 0.1000 + 16 H7 -10.0717 -4.1454 12.1891 H 1 UNCH 0.1000 + 17 H8 -9.2258 -3.0920 10.9657 H 1 UNCH 0.1000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 6 1 + 4 2 7 1 + 5 3 8 1 + 6 3 9 1 + 7 4 5 1 + 8 4 10 1 + 9 4 11 1 + 10 5 6 1 + 11 5 12 1 + 12 6 7 1 + 13 6 13 1 + 14 7 8 1 + 15 7 14 1 + 16 8 9 1 + 17 8 15 1 + 18 9 16 1 + 19 9 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2.3,4.5,6-TRIANHYDRO-D-IDITOL +@MOLECULE +CIJXOI10 + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C7 -9.8417 -5.6394 14.0667 C.3 1 CIJX 0.3461 + 2 C8 -10.4457 -5.1425 15.3990 C.3 1 CIJX 0.0000 + 3 C9 -10.0295 -3.6623 15.6502 C.3 1 CIJX 0.0000 + 4 C10 -9.1658 -3.1809 14.4575 C.3 1 CIJX 0.1220 + 5 C11 -8.0053 -4.1447 14.3571 C.2 1 CIJX 0.2780 + 6 C12 -9.9968 -3.3525 13.1892 C.2 1 CIJX 0.4480 + 7 C13 -10.3872 -4.7948 12.9021 C.3 1 CIJX 0.0610 + 8 C14 -11.2377 -2.7649 15.9061 C.3 1 CIJX 0.0000 + 9 C15 -6.5745 -3.7715 14.4691 C.3 1 CIJX 0.0610 + 10 N7 -8.3665 -5.3636 14.1551 N.2 1 CIJX -0.1461 + 11 O12 -10.2877 -2.4229 12.4513 O.2 1 CIJX -0.5700 + 12 H1 -7.6745 -6.1156 14.0694 H 1 CIJX 0.4000 + 13 H7 -9.9841 -6.7125 13.9138 H 1 CIJX 0.0000 + 14 H81 -10.0799 -5.7604 16.2295 H 1 CIJX 0.0000 + 15 H82 -11.5364 -5.2542 15.3804 H 1 CIJX 0.0000 + 16 H9 -9.4089 -3.6388 16.5572 H 1 CIJX 0.0000 + 17 H10 -8.8197 -2.1504 14.5685 H 1 CIJX 0.0000 + 18 H131 -11.4768 -4.8688 12.8383 H 1 CIJX 0.0000 + 19 H132 -9.9358 -5.0953 11.9506 H 1 CIJX 0.0000 + 20 H141 -11.7795 -3.0981 16.7976 H 1 CIJX 0.0000 + 21 H142 -10.9216 -1.7299 16.0723 H 1 CIJX 0.0000 + 22 H143 -11.9399 -2.7752 15.0663 H 1 CIJX 0.0000 + 23 H151 -6.3291 -3.0539 13.6810 H 1 CIJX 0.0000 + 24 H152 -5.9147 -4.6389 14.3772 H 1 CIJX 0.0000 + 25 H153 -6.4035 -3.2972 15.4397 H 1 CIJX 0.0000 +@BOND + 1 1 13 1 + 2 1 10 1 + 3 1 7 1 + 4 1 2 1 + 5 2 15 1 + 6 2 14 1 + 7 2 3 1 + 8 3 16 1 + 9 3 8 1 + 10 3 4 1 + 11 4 17 1 + 12 4 6 1 + 13 4 5 1 + 14 5 10 2 + 15 5 9 1 + 16 6 11 2 + 17 6 7 1 + 18 7 19 1 + 19 7 18 1 + 20 8 22 1 + 21 8 21 1 + 22 8 20 1 + 23 9 25 1 + 24 9 24 1 + 25 9 23 1 + 26 10 12 1 +@SUBSTRUCTURE + 1 CIJX 1 +@COMMENT +COMMENT 3,8-DIMETHYL-2-AZONIABICYCLO(2.2.2)OCT-2-EN-5-ONE PICRATE ( +@MOLECULE +CIKSEU10 + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.3291 -5.7922 12.9144 N.2 1 CIKS -0.6210 + 2 C2 -7.9271 -6.6596 13.6745 C.2 1 CIKS 0.6010 + 3 N3 -8.9013 -6.3929 14.6104 N.2 1 CIKS -0.6610 + 4 C3 -9.2559 -5.1450 14.7439 C.2 1 CIKS 0.4856 + 5 C4 -10.3031 -4.7560 15.7315 C.2 1 CIKS 0.0794 + 6 C5 -10.5851 -3.4403 15.7795 C.2 1 CIKS 0.0210 + 7 N6 -10.0125 -2.4344 15.0202 N.2 1 CIKS -0.6210 + 8 C6 -9.0944 -2.8010 14.1590 C.2 1 CIKS 0.4856 + 9 C7 -8.4579 -1.7386 13.3249 C.2 1 CIKS -0.1356 + 10 C8 -7.5213 -2.1394 12.4512 C.2 1 CIKS -0.1500 + 11 C9 -7.1443 -3.5355 12.3216 C.2 1 CIKS -0.1500 + 12 C91 -7.7257 -4.4887 13.0803 C.2 1 CIKS 0.2710 + 13 N9 -8.7015 -4.1251 14.0005 N.3 1 CIKS -0.2000 + 14 C10 -10.9491 -5.7087 16.5554 C.1 1 CIKS 0.4921 + 15 N11 -11.5039 -6.4552 17.2501 N.1 1 CIKS -0.5571 + 16 H8 -11.3411 -3.0834 16.4789 H 1 CIKS 0.1500 + 17 H6 -8.7699 -0.7116 13.4552 H 1 CIKS 0.1500 + 18 H5 -7.0169 -1.4205 11.8123 H 1 CIKS 0.1500 + 19 H4 -6.3796 -3.7957 11.5961 H 1 CIKS 0.1500 + 20 H2 -7.6374 -7.7196 13.5726 H 1 CIKS 0.0600 +@BOND + 1 1 12 1 + 2 1 2 2 + 3 2 20 1 + 4 2 3 am + 5 3 4 2 + 6 4 13 am + 7 4 5 1 + 8 5 14 1 + 9 5 6 2 + 10 6 16 1 + 11 6 7 1 + 12 7 8 2 + 13 8 13 am + 14 8 9 1 + 15 9 17 1 + 16 9 10 2 + 17 10 18 1 + 18 10 11 1 + 19 11 19 1 + 20 11 12 2 + 21 12 13 1 + 22 14 15 3 +@SUBSTRUCTURE + 1 CIKS 1 +@COMMENT +COMMENT 4-CYANO-1,3,6-TRIAZACYCL(3.3.3)AZINE +@MOLECULE +CILBII + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.4876 -4.9553 13.7777 C.3 1 CIKS 0.5600 + 2 C2 -9.7332 -5.3252 12.4876 C.3 1 CIKS 0.2800 + 3 C3 -8.2770 -5.6806 12.8355 C.3 1 CIKS 0.2800 + 4 C4 -7.6152 -4.5580 13.6674 C.3 1 CIKS 0.2800 + 5 C5 -8.4952 -4.2561 14.8912 C.3 1 CIKS 0.2800 + 6 C6 -7.9630 -3.0910 15.7408 C.3 1 CIKS 0.2800 + 7 C7 -12.6317 -4.3040 14.5452 C.3 1 CIKS 0.2800 + 8 O1 -11.8005 -4.5383 13.4154 O.3 1 CIKS -0.5600 + 9 O2 -10.3515 -6.4809 11.9127 O.3 1 CIKS -0.2710 + 10 O21 -12.0020 -7.1689 10.6290 O.3 1 CIKS -0.5200 + 11 O22 -11.3060 -5.0614 10.4295 O.2 1 CIKS -0.5200 + 12 O3 -7.5141 -5.7877 11.6210 O.3 1 CIKS -0.2710 + 13 O31 -7.8483 -8.0176 11.7985 O.3 1 CIKS -0.5200 + 14 O32 -6.6571 -7.1558 10.1236 O.2 1 CIKS -0.5200 + 15 O4 -6.3422 -5.0629 14.0860 O.3 1 CIKS -0.2710 + 16 O41 -5.5424 -3.0078 13.6021 O.3 1 CIKS -0.5200 + 17 O42 -4.1740 -4.6859 14.1340 O.2 1 CIKS -0.5200 + 18 O5 -9.8110 -3.8984 14.4518 O.3 1 CIKS -0.5600 + 19 O6 -8.7889 -2.9933 16.9044 O.3 1 CIKS -0.2710 + 20 O61 -9.1575 -1.8023 18.7208 O.3 1 CIKS -0.5200 + 21 O62 -7.4575 -1.2344 17.3923 O.2 1 CIKS -0.5200 + 22 N2 -11.3161 -6.1909 10.9154 N.2 1 CIKS 1.0310 + 23 N3 -7.3302 -7.1118 11.1485 N.2 1 CIKS 1.0310 + 24 N4 -5.2606 -4.1651 13.9050 N.2 1 CIKS 1.0310 + 25 N6 -8.4307 -1.9059 17.7355 N.2 1 CIKS 1.0310 + 26 H1 -10.5706 -5.8324 14.4339 H 1 CIKS 0.0000 + 27 H2 -9.7010 -4.4683 11.8032 H 1 CIKS 0.0000 + 28 H3 -8.2339 -6.6011 13.4321 H 1 CIKS 0.0000 + 29 H4 -7.5533 -3.6785 13.0133 H 1 CIKS 0.0000 + 30 H5 -8.5715 -5.1389 15.5408 H 1 CIKS 0.0000 + 31 H61 -6.9315 -3.2904 16.0498 H 1 CIKS 0.0000 + 32 H62 -8.0244 -2.1606 15.1628 H 1 CIKS 0.0000 + 33 H71 -13.6269 -4.0286 14.1857 H 1 CIKS 0.0000 + 34 H72 -12.7199 -5.2101 15.1523 H 1 CIKS 0.0000 + 35 H73 -12.2430 -3.4799 15.1504 H 1 CIKS 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 18 1 + 4 1 26 1 + 5 2 3 1 + 6 2 9 1 + 7 2 27 1 + 8 3 4 1 + 9 3 12 1 + 10 3 28 1 + 11 4 5 1 + 12 4 15 1 + 13 4 29 1 + 14 5 6 1 + 15 5 18 1 + 16 5 30 1 + 17 6 19 1 + 18 6 31 1 + 19 6 32 1 + 20 7 8 1 + 21 7 33 1 + 22 7 34 1 + 23 7 35 1 + 24 9 22 1 + 25 10 22 1 + 26 11 22 2 + 27 12 23 1 + 28 13 23 1 + 29 14 23 2 + 30 15 24 1 + 31 16 24 1 + 32 17 24 2 + 33 19 25 1 + 34 20 25 1 + 35 21 25 2 +@SUBSTRUCTURE + 1 CIKS 1 +@COMMENT +COMMENT METHYL-BETA-D-GLUCOPYRANOSIDE TETRANITRATE +@MOLECULE +CILDOQ + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -2.2277 7.2179 5.4061 S.2 1 UNCH -0.3800 + 2 O1 2.3361 2.7688 4.7940 O.3 1 UNCH -0.6500 + 3 O2 3.4683 3.3341 2.8975 O.2 1 UNCH -0.5700 + 4 O3 1.3581 6.7076 -0.7034 O.3 1 UNCH -0.6500 + 5 O4 2.3330 7.9619 0.8655 O.2 1 UNCH -0.5700 + 6 N1 -0.1199 5.8619 4.5531 N.3 1 UNCH -0.3680 + 7 N2 0.7003 4.7711 4.5146 N.2 1 UNCH -0.5120 + 8 N3 -1.5451 4.7389 5.9841 N.3 1 UNCH -0.8000 + 9 C1 -1.2583 5.8768 5.3095 C.2 1 UNCH 0.5000 + 10 C2 1.7466 4.8083 3.7349 C.2 1 UNCH 0.3890 + 11 C3 2.6269 3.5548 3.7437 C.2 1 UNCH 0.7200 + 12 C4 2.1707 5.9164 2.8056 C.3 1 UNCH 0.0610 + 13 C5 1.4861 5.7544 1.4544 C.3 1 UNCH 0.0610 + 14 C6 1.7897 6.9168 0.5535 C.2 1 UNCH 0.6590 + 15 H1 0.1028 6.7195 4.0564 H 1 UNCH 0.3700 + 16 H2 -1.0858 3.8936 5.6759 H 1 UNCH 0.3700 + 17 H3 -2.4423 4.6590 6.4446 H 1 UNCH 0.3700 + 18 H4 1.5944 3.1723 5.3005 H 1 UNCH 0.5000 + 19 H5 1.9469 6.8885 3.2561 H 1 UNCH 0.0000 + 20 H6 3.2601 5.8935 2.6840 H 1 UNCH 0.0000 + 21 H7 0.3991 5.6930 1.5773 H 1 UNCH 0.0000 + 22 H8 1.8325 4.8341 0.9708 H 1 UNCH 0.0000 + 23 H9 1.6060 7.5221 -1.1903 H 1 UNCH 0.5000 +@BOND + 1 1 9 2 + 2 2 11 1 + 3 2 18 1 + 4 3 11 2 + 5 4 14 1 + 6 4 23 1 + 7 5 14 2 + 8 6 7 1 + 9 6 9 1 + 10 6 15 1 + 11 7 10 2 + 12 8 9 1 + 13 8 16 1 + 14 8 17 1 + 15 10 11 1 + 16 10 12 1 + 17 12 13 1 + 18 12 19 1 + 19 12 20 1 + 20 13 14 1 + 21 13 21 1 + 22 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ALPHA-KETOGLUTARIC ACID THIOSEMICARBAZONE +@MOLECULE +CILWUP11 + 9 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.7203 -4.0667 12.6176 N.2 1 CILW -0.3100 + 2 N2 -7.5674 -4.6271 12.8888 N.2 1 CILW 0.0000 + 3 N3 -7.2435 -4.9957 14.1037 N.2 1 CILW -0.3100 + 4 C2 -9.3439 -4.2161 14.9111 C.2 1 CILW -0.1500 + 5 C3 -9.5981 -3.8637 13.6173 C.2 1 CILW 0.1600 + 6 C1 -8.1218 -4.7925 15.1030 C.2 1 CILW 0.1600 + 7 H1 -7.7901 -5.1207 16.0815 H 1 CILW 0.1500 + 8 H2 -10.0479 -4.0532 15.7125 H 1 CILW 0.1500 + 9 H3 -10.5310 -3.3963 13.3232 H 1 CILW 0.1500 +@BOND + 1 1 5 1 + 2 1 2 2 + 3 2 3 1 + 4 3 6 2 + 5 4 8 1 + 6 4 6 1 + 7 4 5 2 + 8 5 9 1 + 9 6 7 1 +@SUBSTRUCTURE + 1 CILW 1 +@COMMENT +COMMENT 1,2,3-TRIAZINE (AT 100 DEG.K) +@MOLECULE +CIMRUL10 + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -13.4439 -3.2781 15.6139 CL 1 UNCH -0.2273 + 2 O1 -9.7454 -6.1653 12.5666 O.2 1 UNCH -0.5700 + 3 O2 -11.7442 -2.8873 12.5236 O.2 1 UNCH -0.5700 + 4 O3 -10.1649 -2.3545 14.1148 O.3 1 UNCH -0.4300 + 5 N1 -9.9574 -5.1189 14.6022 N.3 1 UNCH -0.5790 + 6 C1 -11.2228 -4.4674 14.2672 C.3 1 UNCH 0.1490 + 7 C2 -12.3496 -4.5923 15.2819 C.3 1 UNCH 0.1273 + 8 C3 -12.4479 -5.3313 13.9913 C.3 1 UNCH -0.2000 + 9 C4 -9.2784 -5.8678 13.6594 C.2 1 UNCH 0.5438 + 10 C5 -7.8943 -6.2799 14.0221 C.2 1 UNCH 0.0862 + 11 C6 -6.9765 -6.5066 12.9887 C.2 1 UNCH -0.1500 + 12 C7 -5.6676 -6.8909 13.2841 C.2 1 UNCH -0.1500 + 13 C8 -5.2735 -7.0590 14.6109 C.2 1 UNCH -0.1500 + 14 C9 -6.1875 -6.8513 15.6441 C.2 1 UNCH -0.1500 + 15 C10 -7.4985 -6.4657 15.3536 C.2 1 UNCH -0.1500 + 16 C11 -11.0897 -3.1636 13.5191 C.2 1 UNCH 0.7200 + 17 C12 -10.0070 -1.0968 13.4589 C.3 1 UNCH 0.2800 + 18 H1 -12.3206 -6.4072 14.0016 H 1 UNCH 0.1000 + 19 H2 -13.1519 -4.9893 13.2404 H 1 UNCH 0.1000 + 20 H3 -12.1768 -5.1684 16.1818 H 1 UNCH 0.1000 + 21 H4 -9.4020 -4.6494 15.3094 H 1 UNCH 0.3700 + 22 H5 -7.2795 -6.3829 11.9504 H 1 UNCH 0.1500 + 23 H6 -4.9581 -7.0631 12.4783 H 1 UNCH 0.1500 + 24 H7 -4.2545 -7.3629 14.8391 H 1 UNCH 0.1500 + 25 H8 -5.8793 -7.0010 16.6763 H 1 UNCH 0.1500 + 26 H9 -8.1997 -6.3441 16.1739 H 1 UNCH 0.1500 + 27 H10 -10.9461 -0.5347 13.4748 H 1 UNCH 0.0000 + 28 H11 -9.2522 -0.5232 14.0039 H 1 UNCH 0.0000 + 29 H12 -9.6568 -1.2404 12.4319 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 2 9 2 + 3 3 16 2 + 4 4 16 1 + 5 4 17 1 + 6 5 6 1 + 7 5 9 am + 8 5 21 1 + 9 6 7 1 + 10 6 8 1 + 11 6 16 1 + 12 7 8 1 + 13 7 20 1 + 14 8 18 1 + 15 8 19 1 + 16 9 10 1 + 17 10 11 2 + 18 10 15 1 + 19 11 12 1 + 20 11 22 1 + 21 12 13 2 + 22 12 23 1 + 23 13 14 1 + 24 13 24 1 + 25 14 15 2 + 26 14 25 1 + 27 15 26 1 + 28 17 27 1 + 29 17 28 1 + 30 17 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-DL-1-BENZAMIDO-1-METHOXYCARBONYL-2-CHLOROCYCLOPROPANE +@MOLECULE +CINVIE + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.2280 -6.5915 15.6371 O.2 1 UNCH -0.5700 + 2 O2 -9.5030 -7.0411 13.0602 O.3 1 UNCH -0.6800 + 3 O3 -11.8159 -4.7066 13.1233 O.3 1 UNCH -0.5200 + 4 O4 -11.1636 -5.1288 11.0668 O.2 1 UNCH -0.5200 + 5 O5 -9.9450 -2.2226 11.1893 O.3 1 UNCH -0.5200 + 6 O6 -11.0002 -1.5051 12.9793 O.2 1 UNCH -0.5200 + 7 O7 -11.3130 -3.2774 17.1165 O.3 1 UNCH -0.5200 + 8 O8 -9.6011 -4.5305 17.7086 O.2 1 UNCH -0.5200 + 9 N1 -10.9527 -4.8530 12.2508 N.2 1 UNCH 0.7998 + 10 N2 -10.1787 -2.2285 12.4048 N.2 1 UNCH 0.7998 + 11 N3 -10.3523 -4.0163 16.8722 N.2 1 UNCH 0.8356 + 12 C1 -9.8517 -5.6073 15.0058 C.2 1 UNCH 0.4946 + 13 C2 -9.1520 -5.7826 13.6462 C.3 1 UNCH 0.3410 + 14 C3 -9.5064 -4.6417 12.6683 C.3 1 UNCH 0.2402 + 15 C4 -9.3255 -3.2154 13.2675 C.3 1 UNCH 0.4734 + 16 C5 -9.7764 -3.1393 14.7301 C.2 1 UNCH -0.2882 + 17 C6 -10.0112 -4.2227 15.4906 C.2 1 UNCH 0.2188 + 18 C7 -7.8631 -2.7356 13.0740 C.3 1 UNCH -0.1950 + 19 C8 -7.4292 -1.3511 13.5217 C.3 1 UNCH -0.2000 + 20 C9 -6.8548 -2.5602 14.1958 C.3 1 UNCH -0.2000 + 21 C10 -7.6456 -5.8907 13.9144 C.3 1 UNCH 0.0000 + 22 H2 -9.6480 -7.6805 13.7918 H 1 UNCH 0.4000 + 23 H3 -8.9349 -4.7614 11.7372 H 1 UNCH 0.0000 + 24 H5 -9.8911 -2.1430 15.1622 H 1 UNCH 0.1500 + 25 H7 -7.4695 -3.0352 12.1024 H 1 UNCH 0.1000 + 26 H81 -8.1049 -0.7233 14.0934 H 1 UNCH 0.1000 + 27 H82 -6.7816 -0.7828 12.8593 H 1 UNCH 0.1000 + 28 H91 -5.8150 -2.7999 13.9885 H 1 UNCH 0.1000 + 29 H92 -7.1242 -2.7182 15.2339 H 1 UNCH 0.1000 + 30 H101 -7.4065 -6.8500 14.3907 H 1 UNCH 0.0000 + 31 H102 -7.2749 -5.1110 14.5812 H 1 UNCH 0.0000 + 32 H103 -7.0765 -5.8612 12.9787 H 1 UNCH 0.0000 +@BOND + 1 1 12 2 + 2 2 13 1 + 3 2 22 1 + 4 3 9 1 + 5 4 9 2 + 6 5 10 1 + 7 6 10 2 + 8 7 11 1 + 9 8 11 2 + 10 9 14 1 + 11 10 15 1 + 12 11 17 1 + 13 12 13 1 + 14 12 17 1 + 15 13 14 1 + 16 13 21 1 + 17 14 15 1 + 18 14 23 1 + 19 15 16 1 + 20 15 18 1 + 21 16 17 2 + 22 16 24 1 + 23 18 19 1 + 24 18 20 1 + 25 18 25 1 + 26 19 20 1 + 27 19 26 1 + 28 19 27 1 + 29 20 28 1 + 30 20 29 1 + 31 21 30 1 + 32 21 31 1 + 33 21 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-CYCLOPROPYL-2-HYDROXY-2-METHYL-3,4,6-TRINITRO-CYCLOHEX-5- +@MOLECULE +CIPVOM + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N11 -9.0801 -5.1422 14.1026 N.2 1 CIPV -0.1260 + 2 N21 -8.7295 -6.3096 14.4885 N.2 1 CIPV -0.0620 + 3 N31 -7.9438 -6.1873 15.6475 N.3 1 CIPV -0.3781 + 4 N41 -7.7532 -4.8728 15.8246 N.3 1 CIPV 0.7096 + 5 N51 -7.0931 -4.1209 16.6916 N.2 1 CIPV -0.7068 + 6 C61 -7.4174 -2.8779 16.2752 C.2 1 CIPV 0.1078 + 7 C71 -8.2969 -2.8941 15.1326 C.2 1 CIPV -0.0860 + 8 C711 -8.4725 -4.2347 14.8979 C.2 1 CIPV -0.0256 + 9 C311 -6.8863 -7.1483 15.8186 C.3 1 CIPV 0.3001 + 10 C611 -6.8772 -1.6902 16.9870 C.3 1 CIPV 0.1810 + 11 O721 -8.6345 -0.6122 14.7037 O.2 1 CIPV -0.5700 + 12 C731 -8.8596 -1.7795 14.4084 C.2 1 CIPV 0.8060 + 13 O741 -9.6565 -2.1682 13.3732 O.3 1 CIPV -0.4300 + 14 C751 -10.2359 -1.0900 12.6304 C.3 1 CIPV 0.2800 + 15 C761 -11.0880 -1.6823 11.5250 C.3 1 CIPV 0.0000 + 16 H311 -6.1177 -6.9909 15.0562 H 1 CIPV 0.0000 + 17 H321 -7.3005 -8.1561 15.7242 H 1 CIPV 0.0000 + 18 H331 -6.4506 -7.0353 16.8154 H 1 CIPV 0.0000 + 19 H611 -6.2840 -1.0736 16.3045 H 1 CIPV 0.0000 + 20 H621 -7.6937 -1.0817 17.3881 H 1 CIPV 0.0000 + 21 H631 -6.2330 -1.9823 17.8229 H 1 CIPV 0.0000 + 22 H751 -10.8603 -0.4787 13.2915 H 1 CIPV 0.0000 + 23 H752 -9.4426 -0.4721 12.1952 H 1 CIPV 0.0000 + 24 H761 -11.8733 -2.3204 11.9436 H 1 CIPV 0.0000 + 25 H762 -11.5542 -0.8944 10.9269 H 1 CIPV 0.0000 + 26 H763 -10.4816 -2.3139 10.8674 H 1 CIPV 0.0000 +@BOND + 1 1 8 1 + 2 1 2 2 + 3 2 3 1 + 4 3 9 1 + 5 3 4 1 + 6 4 8 1 + 7 4 5 1 + 8 5 6 2 + 9 6 10 1 + 10 6 7 1 + 11 7 12 1 + 12 7 8 2 + 13 9 18 1 + 14 9 17 1 + 15 9 16 1 + 16 10 21 1 + 17 10 20 1 + 18 10 19 1 + 19 11 12 2 + 20 12 13 1 + 21 13 14 1 + 22 14 23 1 + 23 14 22 1 + 24 14 15 1 + 25 15 26 1 + 26 15 25 1 + 27 15 24 1 +@SUBSTRUCTURE + 1 CIPV 1 +@COMMENT +COMMENT 3,6-DIMETHYL-3H-PYRAZOLO(1,5-D)TETRAZOLE-7-CARBOXYLIC ACID +@MOLECULE +CIPYAB10 + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.2079 -4.7721 14.2088 C.2 1 CHGB 0.0000 + 2 C2 -7.9411 -4.2519 14.4947 C.2 1 CHGB 0.0000 + 3 C3 -9.0326 -3.3905 14.3408 C.2 1 CHGB 0.0000 + 4 C4 -9.9945 -5.8094 13.9809 C.2 1 CHGB 0.1300 + 5 C5 -6.6548 -4.4381 14.7346 C.2 1 CHGB 0.1300 + 6 C6 -9.5323 -2.1670 14.3289 C.2 1 CHGB 0.1300 + 7 C7 -11.3775 -5.6241 13.7220 C.1 1 CHGB 0.4921 + 8 C8 -9.4712 -7.1286 13.9907 C.1 1 CHGB 0.4921 + 9 C9 -6.1050 -5.7463 14.7504 C.1 1 CHGB 0.4921 + 10 C10 -5.7988 -3.3333 14.9809 C.1 1 CHGB 0.4921 + 11 C11 -8.6991 -1.0441 14.5720 C.1 1 CHGB 0.4921 + 12 C12 -10.9116 -1.9526 14.0727 C.1 1 CHGB 0.4921 + 13 N1 -12.5051 -5.4598 13.5117 N.1 1 CHGB -0.5571 + 14 N2 -9.0322 -8.2009 14.0014 N.1 1 CHGB -0.5571 + 15 N3 -5.6678 -6.8194 14.7606 N.1 1 CHGB -0.5571 + 16 N4 -5.1099 -2.4231 15.1806 N.1 1 CHGB -0.5571 + 17 N5 -8.0086 -0.1353 14.7720 N.1 1 CHGB -0.5571 + 18 N6 -12.0395 -1.7904 13.8623 N.1 1 CHGB -0.5571 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 2 + 4 2 3 1 + 5 2 5 2 + 6 3 6 2 + 7 4 7 1 + 8 4 8 1 + 9 5 9 1 + 10 5 10 1 + 11 6 11 1 + 12 6 12 1 + 13 7 13 3 + 14 8 14 3 + 15 9 15 3 + 16 10 16 3 + 17 11 17 3 + 18 12 18 3 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT TETRAMETHYLAMMONIUM HEXACYANOTRIMETHYLENECYCLOPROPANIDE (TR +@MOLECULE +CISMOG + 14 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -11.8195 -5.9166 13.6410 S.3 1 UNCH 0.4414 + 2 N1 -10.3015 -6.5187 14.0102 N.2 1 UNCH -0.5095 + 3 N2 -11.5248 -4.2682 13.7127 N.2 1 UNCH -0.5095 + 4 C1 -9.5850 -5.4174 14.1845 C.2 1 UNCH 0.2888 + 5 C2 -10.2243 -4.1149 14.0290 C.2 1 UNCH 0.2888 + 6 C3 -9.5668 -2.8648 14.1890 C.2 1 UNCH -0.1500 + 7 H1 -10.1129 -1.9359 14.0562 H 1 UNCH 0.1500 + 8 C1B -8.1829 -5.4174 14.5256 C.2 1 UNCH 0.2888 + 9 C3B -8.2011 -2.8648 14.5212 C.2 1 UNCH -0.1500 + 10 N1B -7.4664 -6.5187 14.6998 N.2 1 UNCH -0.5095 + 11 C2B -7.5436 -4.1149 14.6811 C.2 1 UNCH 0.2888 + 12 H1B -7.6550 -1.9359 14.6540 H 1 UNCH 0.1500 + 13 S1B -5.9484 -5.9166 15.0691 S.3 1 UNCH 0.4414 + 14 N2B -6.2431 -4.2682 14.9974 N.2 1 UNCH -0.5095 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 2 4 2 + 4 3 5 2 + 5 4 5 1 + 6 4 8 1 + 7 5 6 1 + 8 6 7 1 + 9 6 9 2 + 10 8 10 2 + 11 8 11 1 + 12 9 11 1 + 13 9 12 1 + 14 10 13 1 + 15 11 14 2 + 16 13 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BENZO(1,2-C.3,4-C')-BIS(1,2,5)THIADIAZOLE +@MOLECULE +CISPOJ + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.7944 -3.2646 14.0049 C.2 1 CISP -0.1500 + 2 C2 -8.9611 -4.6413 14.2615 C.2 1 CISP -0.1516 + 3 C3 -8.3474 -5.6261 13.4809 C.2 1 CISP 0.0000 + 4 C4 -7.5353 -5.2114 12.4026 C.2 1 CISP 0.1330 + 5 C5 -7.3433 -3.8497 12.1202 C.2 1 CISP -0.1500 + 6 C6 -7.9750 -2.8937 12.9218 C.2 1 CISP 0.1330 + 7 C7 -8.7596 -6.8436 14.0711 C.2 1 CISP 0.1388 + 8 C8 -10.4757 -4.8461 16.2471 C.2 1 CISP 0.1105 + 9 N1 -10.7343 -3.5916 16.5349 N.2 1 CISP -0.3381 + 10 N2 -11.5707 -3.6376 17.6289 N.2 1 CISP 0.0000 + 11 N3 -11.8135 -4.8919 17.9953 N.2 1 CISP -0.4180 + 12 N4 -11.1266 -5.6494 17.1281 N.3 1 CISP 0.2996 + 13 N5 -9.6822 -5.3231 15.2287 N.3 1 CISP 0.6456 + 14 N6 -9.5596 -6.6687 15.1242 N.2 1 CISP -0.7068 + 15 N7 -6.8766 -6.2206 11.5801 N.2 1 CISP 0.9070 + 16 N8 -7.7807 -1.4648 12.6259 N.2 1 CISP 0.9070 + 17 O1 -7.4040 -7.3371 11.5005 O.3 1 CISP -0.5200 + 18 O2 -5.8307 -5.8878 11.0086 O.2 1 CISP -0.5200 + 19 O3 -7.1802 -1.1749 11.5826 O.3 1 CISP -0.5200 + 20 O4 -8.2290 -0.6437 13.4358 O.2 1 CISP -0.5200 + 21 H1 -9.2862 -2.5192 14.6289 H 1 CISP 0.1500 + 22 H5 -6.7101 -3.5479 11.2860 H 1 CISP 0.1500 + 23 H7 -8.5084 -7.8568 13.7756 H 1 CISP 0.1500 + 24 H4 -11.1426 -6.6613 17.1879 H 1 CISP 0.2700 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 21 1 + 4 2 3 1 + 5 2 13 1 + 6 3 4 2 + 7 3 7 1 + 8 4 5 1 + 9 4 15 1 + 10 5 6 2 + 11 5 22 1 + 12 6 16 1 + 13 7 14 2 + 14 7 23 1 + 15 8 9 2 + 16 8 12 am + 17 8 13 am + 18 9 10 1 + 19 10 11 2 + 20 11 12 1 + 21 12 24 1 + 22 13 14 1 + 23 15 17 1 + 24 15 18 2 + 25 16 19 1 + 26 16 20 2 +@SUBSTRUCTURE + 1 CISP 1 +@COMMENT +COMMENT 4,6-DINITRO-1-(5-TETRAZOLYL)-1H-INDAZOLE TRIHYDRATE +@MOLECULE +CITDIS + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.0591 -4.5119 14.3631 C.2 1 UNCH 0.0825 + 2 C2 -7.7366 -4.0472 14.3008 C.2 1 UNCH 0.1770 + 3 CL2 -7.1760 -2.9049 15.4779 CL 1 UNCH -0.1770 + 4 C3 -6.8938 -4.5295 13.2909 C.2 1 UNCH 0.1770 + 5 CL3 -5.2517 -4.0145 13.1266 CL 1 UNCH -0.1770 + 6 C4 -7.3676 -5.4714 12.3691 C.2 1 UNCH -0.1500 + 7 H4 -6.7149 -5.8465 11.5831 H 1 UNCH 0.1500 + 8 C5 -8.6797 -5.9437 12.4533 C.2 1 UNCH -0.1500 + 9 H5 -9.0329 -6.6812 11.7359 H 1 UNCH 0.1500 + 10 C6 -9.5258 -5.4691 13.4544 C.2 1 UNCH 0.1770 + 11 CL6 -11.1312 -6.0931 13.5469 CL 1 UNCH -0.1770 + 12 O1 -9.9123 -4.0498 15.3736 O.3 1 UNCH -0.2325 + 13 C7 -10.6245 -2.9285 14.9658 C.2 1 UNCH 0.6590 + 14 O7 -10.5518 -2.3783 13.8750 O.2 1 UNCH -0.5700 + 15 C8 -11.5151 -2.4824 16.0859 C.3 1 UNCH 0.0610 + 16 H81 -10.9104 -2.2167 16.9565 H 1 UNCH 0.0000 + 17 H82 -12.0787 -1.5998 15.7703 H 1 UNCH 0.0000 + 18 H83 -12.2228 -3.2769 16.3352 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 10 1 + 3 1 12 1 + 4 2 3 1 + 5 2 4 1 + 6 4 5 1 + 7 4 6 2 + 8 6 7 1 + 9 6 8 1 + 10 8 9 1 + 11 8 10 2 + 12 10 11 1 + 13 12 13 1 + 14 13 14 2 + 15 13 15 1 + 16 15 16 1 + 17 15 17 1 + 18 15 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3,6-TRICHLOROPHENYL ACETATE +@MOLECULE +CITNOI10 + 28 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.2664 -2.2342 13.2171 S.3 1 CITK -0.3710 + 2 O1 -5.8086 -1.8717 14.0312 O.2 1 CITK -0.5700 + 3 O2 -7.8200 -5.1637 15.8576 O.2 1 CITK -0.5700 + 4 N1 -7.4655 -5.1229 13.5956 N.3 1 CITK -0.7301 + 5 C1 -8.8481 -1.5703 15.8351 C.3 1 CITK 0.0000 + 6 C2 -8.6035 -0.9585 14.4662 C.3 1 CITK 0.2300 + 7 C3 -6.6515 -2.7192 13.7534 C.2 1 CITK 0.6500 + 8 C4 -6.3324 -4.2161 13.7122 C.3 1 CITK 0.3611 + 9 C5 -8.1623 -5.4942 14.7283 C.2 1 CITK 0.5438 + 10 C6 -9.4112 -6.2749 14.5123 C.2 1 CITK 0.0862 + 11 C7 -9.5903 -7.0923 13.3886 C.2 1 CITK -0.1500 + 12 C8 -10.7809 -7.8050 13.2270 C.2 1 CITK -0.1500 + 13 C9 -11.7894 -7.7096 14.1861 C.2 1 CITK -0.1500 + 14 C10 -11.6092 -6.9090 15.3134 C.2 1 CITK -0.1500 + 15 C11 -10.4209 -6.1959 15.4795 C.2 1 CITK -0.1500 + 16 H1 -7.9600 -5.1329 12.7126 H 1 CITK 0.3700 + 17 H2 -9.6826 -2.2795 15.8151 H 1 CITK 0.0000 + 18 H3 -7.9611 -2.0876 16.2147 H 1 CITK 0.0000 + 19 H4 -9.1007 -0.7830 16.5532 H 1 CITK 0.0000 + 20 H5 -7.7825 -0.2359 14.5049 H 1 CITK 0.0000 + 21 H6 -9.4991 -0.4139 14.1498 H 1 CITK 0.0000 + 22 H7 -5.7637 -4.4655 14.6143 H 1 CITK 0.0000 + 23 H8 -5.7003 -4.3935 12.8361 H 1 CITK 0.0000 + 24 H9 -8.8063 -7.2072 12.6458 H 1 CITK 0.1500 + 25 H10 -10.9196 -8.4433 12.3576 H 1 CITK 0.1500 + 26 H11 -12.7142 -8.2677 14.0598 H 1 CITK 0.1500 + 27 H12 -12.3915 -6.8422 16.0655 H 1 CITK 0.1500 + 28 H13 -10.2840 -5.5765 16.3638 H 1 CITK 0.1500 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 7 2 + 4 3 9 2 + 5 4 8 1 + 6 4 9 am + 7 4 16 1 + 8 5 6 1 + 9 5 17 1 + 10 5 18 1 + 11 5 19 1 + 12 6 20 1 + 13 6 21 1 + 14 7 8 1 + 15 8 22 1 + 16 8 23 1 + 17 9 10 1 + 18 10 11 2 + 19 10 15 1 + 20 11 12 1 + 21 11 24 1 + 22 12 13 2 + 23 12 25 1 + 24 13 14 1 + 25 13 26 1 + 26 14 15 2 + 27 14 27 1 + 28 15 28 1 +@SUBSTRUCTURE + 1 CITK 1 +@COMMENT +COMMENT N-BENZOYLGLYCINE ETHYL-THIOL ESTER PEPSEQ A=1 GLY* +@MOLECULE +CITPEA10 + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.2448 -4.4527 12.0903 S.3 1 UNCH -0.3710 + 2 S2 -8.9033 -7.0775 11.3503 S.2 1 UNCH -0.3800 + 3 O1 -6.9226 -5.5294 14.9088 O.2 1 UNCH -0.5700 + 4 N1 -9.1866 -5.2068 14.8579 N.3 1 UNCH -0.7301 + 5 C1 -7.7434 -3.2566 11.9057 C.3 1 UNCH 0.0000 + 6 C2 -8.9611 -3.6439 11.0863 C.3 1 UNCH 0.2300 + 7 C3 -9.4614 -5.9907 12.5090 C.2 1 UNCH 0.4600 + 8 C4 -9.4588 -6.3646 14.0077 C.3 1 UNCH 0.3611 + 9 C5 -10.7952 -6.9924 14.4033 C.3 1 UNCH 0.0000 + 10 C6 -7.9008 -4.8520 15.2023 C.2 1 UNCH 0.5438 + 11 C7 -7.7330 -3.5890 15.9745 C.2 1 UNCH 0.0862 + 12 C8 -8.6287 -2.5164 15.8709 C.2 1 UNCH -0.1500 + 13 C9 -8.4159 -1.3535 16.6164 C.2 1 UNCH -0.1500 + 14 C10 -7.3094 -1.2538 17.4593 C.2 1 UNCH -0.1500 + 15 C11 -6.4066 -2.3115 17.5544 C.2 1 UNCH -0.1500 + 16 C12 -6.6145 -3.4743 16.8107 C.2 1 UNCH -0.1500 + 17 H1 -9.9556 -4.5824 15.0552 H 1 UNCH 0.3700 + 18 H2 -8.0120 -2.5938 12.7342 H 1 UNCH 0.0000 + 19 H3 -7.2267 -4.1327 12.3083 H 1 UNCH 0.0000 + 20 H4 -7.0283 -2.7190 11.2739 H 1 UNCH 0.0000 + 21 H5 -8.6745 -4.2736 10.2394 H 1 UNCH 0.0000 + 22 H6 -9.4072 -2.7366 10.6654 H 1 UNCH 0.0000 + 23 H7 -8.6681 -7.1045 14.1849 H 1 UNCH 0.0000 + 24 H8 -11.0155 -7.8753 13.7944 H 1 UNCH 0.0000 + 25 H9 -11.6250 -6.2877 14.2793 H 1 UNCH 0.0000 + 26 H10 -10.7802 -7.2998 15.4547 H 1 UNCH 0.0000 + 27 H11 -9.4785 -2.5483 15.1968 H 1 UNCH 0.1500 + 28 H12 -9.1087 -0.5193 16.5329 H 1 UNCH 0.1500 + 29 H13 -7.1449 -0.3468 18.0363 H 1 UNCH 0.1500 + 30 H14 -5.5384 -2.2313 18.2040 H 1 UNCH 0.1500 + 31 H15 -5.9024 -4.2942 16.8859 H 1 UNCH 0.1500 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 7 2 + 4 3 10 2 + 5 4 8 1 + 6 4 10 am + 7 4 17 1 + 8 5 6 1 + 9 5 18 1 + 10 5 19 1 + 11 5 20 1 + 12 6 21 1 + 13 6 22 1 + 14 7 8 1 + 15 8 9 1 + 16 8 23 1 + 17 9 24 1 + 18 9 25 1 + 19 9 26 1 + 20 10 11 1 + 21 11 12 2 + 22 11 16 1 + 23 12 13 1 + 24 12 27 1 + 25 13 14 2 + 26 13 28 1 + 27 14 15 1 + 28 14 29 1 + 29 15 16 2 + 30 15 30 1 + 31 16 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-BENZOYL-DL-ALANINE ETHYL DITHIOESTER PEPSEQ A=1 ALA* +@MOLECULE +CITSED10 + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N12 -8.5812 -5.3902 15.2107 N.3 1 CITS -0.7544 + 2 C32 -9.1947 -4.9659 14.1285 C.2 1 CITS 0.5588 + 3 N22 -9.2732 -3.7019 13.7582 N.2 1 CITS -0.5374 + 4 O52 -8.6561 -2.7703 14.5864 O.3 1 CITS -0.1670 + 5 H52 -8.8162 -1.9036 14.1591 H 1 CITS 0.4000 + 6 H22 -9.7550 -3.3958 12.9135 H 1 CITS 0.4500 + 7 H32 -9.6703 -5.7029 13.4938 H 1 CITS 0.1500 + 8 H112 -8.1274 -4.7207 15.8227 H 1 CITS 0.4500 + 9 H122 -8.5464 -6.3735 15.4559 H 1 CITS 0.4500 +@BOND + 1 1 9 1 + 2 1 8 1 + 3 1 2 am + 4 2 7 1 + 5 2 3 2 + 6 3 6 1 + 7 3 4 1 + 8 4 5 1 +@SUBSTRUCTURE + 1 CITS 1 +@COMMENT +COMMENT N-1--HYDROXYFORMAMIDINIUM HYDROGEN OXALATE (AT 105 DEG.K) N +@MOLECULE +CIVCEP02 + 36 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.7018 -3.4307 11.7838 O.2 1 UNCH -0.5700 + 2 O2 -6.1600 -4.6461 13.2663 O.3 1 UNCH -0.2960 + 3 N1 -8.8326 -5.2705 12.8144 N.3 1 UNCH -0.4201 + 4 C1 -9.6572 -4.1682 12.7724 C.2 1 UNCH 0.6900 + 5 C2 -7.9180 -5.4953 11.7013 C.3 1 UNCH 0.3951 + 6 C3 -6.5496 -4.9085 11.9116 C.3 1 UNCH -0.0470 + 7 C4 -6.3202 -3.5029 12.4121 C.3 1 UNCH -0.0520 + 8 H1 -7.8114 -6.5739 11.5363 H 1 UNCH 0.0000 + 9 H2 -8.3374 -5.0834 10.7766 H 1 UNCH 0.0000 + 10 H3 -5.8127 -5.3337 11.2421 H 1 UNCH 0.1000 + 11 H4 -5.4209 -2.9863 12.0994 H 1 UNCH 0.1000 + 12 H5 -7.1621 -2.8485 12.5976 H 1 UNCH 0.1000 + 13 N1A -10.4464 -3.9512 13.8810 N.3 1 UNCH -0.4201 + 14 C1B -8.8136 -6.1684 13.8595 C.2 1 UNCH 0.6900 + 15 C1A -10.4869 -4.8000 14.9648 C.2 1 UNCH 0.6900 + 16 C2A -11.2708 -2.7488 13.9103 C.3 1 UNCH 0.3951 + 17 O1B -8.1201 -7.1890 13.8319 O.2 1 UNCH -0.5700 + 18 N1B -9.6324 -5.8804 14.9289 N.3 1 UNCH -0.4201 + 19 O1A -11.2651 -4.6131 15.9044 O.2 1 UNCH -0.5700 + 20 C3A -10.5557 -1.5348 14.4354 C.3 1 UNCH -0.0470 + 21 H1A -11.6249 -2.5313 12.8958 H 1 UNCH 0.0000 + 22 H2A -12.1666 -2.9180 14.5183 H 1 UNCH 0.0000 + 23 C2B -9.5849 -6.7554 16.0943 C.3 1 UNCH 0.3951 + 24 O2A -9.1228 -1.5580 14.3888 O.3 1 UNCH -0.2960 + 25 C4A -9.7219 -1.5456 15.6939 C.3 1 UNCH -0.0520 + 26 H3A -11.0599 -0.6142 14.1704 H 1 UNCH 0.1000 + 27 C3B -8.6295 -6.2955 17.1605 C.3 1 UNCH -0.0470 + 28 H1B -10.5873 -6.8243 16.5328 H 1 UNCH 0.0000 + 29 H2B -9.3109 -7.7729 15.7936 H 1 UNCH 0.0000 + 30 H4A -9.6449 -0.6298 16.2672 H 1 UNCH 0.1000 + 31 H5A -9.6508 -2.4459 16.2903 H 1 UNCH 0.1000 + 32 O2B -8.2661 -4.9086 17.1483 O.3 1 UNCH -0.2960 + 33 C4B -7.2172 -5.8488 16.8690 C.3 1 UNCH -0.0520 + 34 H3B -8.8250 -6.7633 18.1170 H 1 UNCH 0.1000 + 35 H4B -6.4640 -5.9945 17.6337 H 1 UNCH 0.1000 + 36 H5B -6.8325 -5.8901 15.8583 H 1 UNCH 0.1000 +@BOND + 1 1 4 2 + 2 2 6 1 + 3 2 7 1 + 4 3 4 am + 5 3 5 1 + 6 3 14 am + 7 4 13 am + 8 5 6 1 + 9 5 8 1 + 10 5 9 1 + 11 6 7 1 + 12 6 10 1 + 13 7 11 1 + 14 7 12 1 + 15 13 15 am + 16 13 16 1 + 17 14 17 2 + 18 14 18 am + 19 15 18 am + 20 15 19 2 + 21 16 20 1 + 22 16 21 1 + 23 16 22 1 + 24 18 23 1 + 25 20 24 1 + 26 20 25 1 + 27 20 26 1 + 28 23 27 1 + 29 23 28 1 + 30 23 29 1 + 31 24 25 1 + 32 25 30 1 + 33 25 31 1 + 34 27 32 1 + 35 27 33 1 + 36 27 34 1 + 37 32 33 1 + 38 33 35 1 + 39 33 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,3,5-TRIS(OXIRAN-2-YLMETHYL)-1,3,5-TRIAZINE-2,4,6-TRIONE ( +@MOLECULE +CIVLAU02 + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.0598 -3.5751 15.3909 C.3 1 UNCH 0.0000 + 2 C2 -7.5593 -3.1794 15.0766 C.3 1 UNCH 0.0530 + 3 C3 -7.6129 -4.7317 14.7724 C.3 1 UNCH 0.0000 + 4 C4 -8.4072 -4.8073 16.1399 C.3 1 UNCH 0.0530 + 5 C5 -9.0008 -4.4547 14.0905 C.3 1 UNCH 0.5158 + 6 O1 -9.0075 -3.7695 12.8179 O.3 1 UNCH -0.5379 + 7 C6 -9.7037 -4.6036 11.8853 C.3 1 UNCH 0.2800 + 8 C7 -10.6648 -5.3789 12.7653 C.3 1 UNCH 0.2800 + 9 O2 -9.9236 -5.5613 13.9767 O.3 1 UNCH -0.5379 + 10 C8 -7.2004 -2.1757 13.9645 C.2 1 UNCH 0.6670 + 11 O3 -6.2345 -2.2799 13.2097 O.2 1 UNCH -0.5700 + 12 O4 -8.0687 -1.1200 13.9414 O.3 1 UNCH -0.4300 + 13 C9 -7.8067 -0.1726 12.9061 C.3 1 UNCH 0.2800 + 14 C10 -9.2587 -6.0343 16.5173 C.2 1 UNCH 0.6670 + 15 O5 -10.3454 -5.9849 17.0919 O.2 1 UNCH -0.5700 + 16 O6 -8.6376 -7.2022 16.1716 O.3 1 UNCH -0.4300 + 17 C11 -9.3968 -8.3749 16.4654 C.3 1 UNCH 0.2800 + 18 H1 -9.8500 -2.9324 15.7472 H 1 UNCH 0.0000 + 19 H2 -6.9642 -2.9139 15.9650 H 1 UNCH 0.0000 + 20 H3 -6.8036 -5.3658 14.4445 H 1 UNCH 0.0000 + 21 H4 -7.8127 -4.5334 17.0261 H 1 UNCH 0.0000 + 22 H5 -8.9707 -5.2633 11.4102 H 1 UNCH 0.0000 + 23 H6 -10.2098 -4.0020 11.1267 H 1 UNCH 0.0000 + 24 H7 -10.9544 -6.3413 12.3370 H 1 UNCH 0.0000 + 25 H8 -11.5580 -4.7918 13.0014 H 1 UNCH 0.0000 + 26 H9 -7.8632 -0.6510 11.9232 H 1 UNCH 0.0000 + 27 H10 -8.5745 0.6044 12.9562 H 1 UNCH 0.0000 + 28 H11 -6.8293 0.2966 13.0554 H 1 UNCH 0.0000 + 29 H12 -8.8277 -9.2420 16.1189 H 1 UNCH 0.0000 + 30 H13 -9.5506 -8.4706 17.5447 H 1 UNCH 0.0000 + 31 H14 -10.3545 -8.3564 15.9356 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 1 18 1 + 5 2 3 1 + 6 2 10 1 + 7 2 19 1 + 8 3 4 1 + 9 3 5 1 + 10 3 20 1 + 11 4 14 1 + 12 4 21 1 + 13 5 6 1 + 14 5 9 1 + 15 6 7 1 + 16 7 8 1 + 17 7 22 1 + 18 7 23 1 + 19 8 9 1 + 20 8 24 1 + 21 8 25 1 + 22 10 11 2 + 23 10 12 1 + 24 12 13 1 + 25 13 26 1 + 26 13 27 1 + 27 13 28 1 + 28 14 15 2 + 29 14 16 1 + 30 16 17 1 + 31 17 29 1 + 32 17 30 1 + 33 17 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT EXO,EXO-4,5-DICARBOMETHOXYSPIRO(BICYCLO(1.1.1)PENTANE-2,2'- +@MOLECULE +CIXWAH + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -7.8107 -3.7845 12.5500 O.3 1 CIXR -0.6800 + 2 O2 -10.1668 -2.8045 14.0839 O.3 1 CIXR -0.4300 + 3 O3 -11.3474 -3.4763 12.2788 O.2 1 CIXR -0.5700 + 4 O4 -10.3331 -5.0579 13.5385 O.3 1 CIXR -0.4300 + 5 C1 -9.7192 -4.4550 15.7828 C.3 1 CIXR 0.0000 + 6 C2 -9.4972 -5.4227 14.6473 C.3 1 CIXR 0.2800 + 7 C3 -8.0223 -5.4885 14.2278 C.3 1 CIXR 0.0000 + 8 C4 -7.4267 -4.1220 13.8779 C.3 1 CIXR 0.2800 + 9 C5 -7.8626 -3.0242 14.8516 C.3 1 CIXR 0.0000 + 10 C6 -9.3481 -3.1036 15.2247 C.3 1 CIXR 0.2800 + 11 C7 -10.6404 -3.7643 13.2358 C.2 1 CIXR 0.8700 + 12 H1 -7.4115 -2.9277 12.3180 H 1 CIXR 0.4000 + 13 H11 -10.7776 -4.4582 16.0700 H 1 CIXR 0.0000 + 14 H12 -9.1194 -4.7122 16.6621 H 1 CIXR 0.0000 + 15 H2 -9.8167 -6.4231 14.9602 H 1 CIXR 0.0000 + 16 H31 -7.9254 -6.1581 13.3646 H 1 CIXR 0.0000 + 17 H32 -7.4473 -5.9196 15.0566 H 1 CIXR 0.0000 + 18 H4 -6.3334 -4.1965 13.8725 H 1 CIXR 0.0000 + 19 H51 -7.6561 -2.0417 14.4107 H 1 CIXR 0.0000 + 20 H52 -7.2696 -3.1130 15.7702 H 1 CIXR 0.0000 + 21 H6 -9.5637 -2.3335 15.9737 H 1 CIXR 0.0000 +@BOND + 1 1 8 1 + 2 1 12 1 + 3 2 10 1 + 4 2 11 1 + 5 3 11 2 + 6 4 6 1 + 7 4 11 1 + 8 5 6 1 + 9 5 10 1 + 10 5 13 1 + 11 5 14 1 + 12 6 7 1 + 13 6 15 1 + 14 7 8 1 + 15 7 16 1 + 16 7 17 1 + 17 8 9 1 + 18 8 18 1 + 19 9 10 1 + 20 9 19 1 + 21 9 20 1 + 22 10 21 1 +@SUBSTRUCTURE + 1 CIXR 1 +@COMMENT +COMMENT ENDO-7-HYDROXY-2,4-DIOXA-3-OXOBICYCLO(3.3.1)NONANE +@MOLECULE +CIYNUT + 14 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.9480 -6.4271 11.8278 S.3 1 CHGB 0.4414 + 2 O1 -9.4929 -6.1403 16.2661 O.2 1 CHGB -0.5700 + 3 N1 -9.3417 -4.8764 11.7184 N.2 1 CHGB -0.5095 + 4 N2 -9.9037 -6.6364 13.4827 N.2 1 CHGB -0.5095 + 5 C1 -9.4120 -5.4925 13.9792 C.2 1 CHGB 0.2028 + 6 C2 -9.0935 -4.4950 12.9793 C.2 1 CHGB 0.2028 + 7 C3 -9.2231 -5.2955 15.4193 C.2 1 CHGB 0.7420 + 8 C3B -8.5450 -3.1719 13.2906 C.2 1 CHGB 0.7420 + 9 C2B -8.6746 -3.9724 15.7306 C.2 1 CHGB 0.2028 + 10 O1B -8.2752 -2.3271 12.4438 O.2 1 CHGB -0.5700 + 11 C1B -8.3561 -2.9749 14.7307 C.2 1 CHGB 0.2028 + 12 N1B -8.4264 -3.5910 16.9915 N.2 1 CHGB -0.5095 + 13 N2B -7.8644 -1.8310 15.2272 N.2 1 CHGB -0.5095 + 14 S1B -7.8201 -2.0403 16.8821 S.3 1 CHGB 0.4414 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 2 7 2 + 4 3 6 2 + 5 4 5 2 + 6 5 6 1 + 7 5 7 1 + 8 6 8 1 + 9 7 9 1 + 10 8 10 2 + 11 8 11 1 + 12 9 11 1 + 13 9 12 2 + 14 11 13 2 + 15 12 14 1 + 16 13 14 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT TETRATHIAFULVALENE BENZO(1,2-C.4,5-C')BIS(1,2,5)THIADIAZOLE +@MOLECULE +CIZFIA + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.4153 -1.7576 15.1058 S.2 1 UNCH 0.3595 + 2 O8 -9.8820 -5.2202 15.9432 O.3 1 UNCH -0.4300 + 3 O12 -6.9242 -1.6317 15.2553 O.2 1 UNCH -0.5000 + 4 O13 -10.3666 -3.1510 16.6329 O.2 1 UNCH -0.5700 + 5 N6 -8.8166 -3.3886 14.9351 N.3 1 UNCH -0.4131 + 6 C2 -8.7666 -1.3123 13.3435 C.3 1 UNCH 0.3317 + 7 C3 -8.1999 -2.3266 12.3792 C.2 1 UNCH -0.2882 + 8 C4 -7.8591 -3.5886 12.6948 C.2 1 UNCH -0.2882 + 9 C5 -8.0363 -4.2403 14.0518 C.3 1 UNCH 0.4383 + 10 C7 -9.7047 -3.8663 15.8841 C.2 1 UNCH 0.7800 + 11 C9 -8.9928 -6.1204 15.2656 C.3 1 UNCH 0.2800 + 12 C10 -8.7021 -5.5959 13.8773 C.3 1 UNCH 0.0000 + 13 C11 -10.2646 -1.1175 13.1427 C.3 1 UNCH 0.0000 + 14 C14 -9.6678 -7.4839 15.2150 C.3 1 UNCH 0.0000 + 15 H2 -8.2559 -0.3555 13.1853 H 1 UNCH 0.0000 + 16 H3 -8.0252 -1.9732 11.3652 H 1 UNCH 0.1500 + 17 H4 -7.4071 -4.2069 11.9209 H 1 UNCH 0.1500 + 18 H5 -7.0484 -4.3762 14.5110 H 1 UNCH 0.0000 + 19 H9 -8.0759 -6.2038 15.8619 H 1 UNCH 0.0000 + 20 H101 -8.0529 -6.2841 13.3232 H 1 UNCH 0.0000 + 21 H102 -9.6388 -5.4884 13.3132 H 1 UNCH 0.0000 + 22 H111 -10.8248 -2.0437 13.3147 H 1 UNCH 0.0000 + 23 H112 -10.4805 -0.7824 12.1221 H 1 UNCH 0.0000 + 24 H113 -10.6577 -0.3616 13.8317 H 1 UNCH 0.0000 + 25 H141 -9.0314 -8.2250 14.7220 H 1 UNCH 0.0000 + 26 H142 -9.8930 -7.8355 16.2277 H 1 UNCH 0.0000 + 27 H143 -10.6238 -7.4302 14.6823 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 5 1 + 3 1 6 1 + 4 2 10 1 + 5 2 11 1 + 6 4 10 2 + 7 5 9 1 + 8 5 10 am + 9 6 7 1 + 10 6 13 1 + 11 6 15 1 + 12 7 8 2 + 13 7 16 1 + 14 8 9 1 + 15 8 17 1 + 16 9 12 1 + 17 9 18 1 + 18 11 12 1 + 19 11 14 1 + 20 11 19 1 + 21 12 20 1 + 22 12 21 1 + 23 13 22 1 + 24 13 23 1 + 25 13 24 1 + 26 14 25 1 + 27 14 26 1 + 28 14 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,7-DIMETHYL-1-OXO-1,2-THIAZINO(2,3-C)-1',3'-PERHYDRO-OXAZI +@MOLECULE +CIZJAW + 48 48 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -7.7960 -3.9260 15.2621 SI 1 CIZJ 0.3870 + 2 SI3 -9.8403 -3.9488 13.6172 SI 1 CIZJ 0.3870 + 3 SI20 -7.6023 -1.5021 12.8948 SI 1 CIZJ 0.3545 + 4 SI40 -9.3484 -6.9412 15.1403 SI 1 CIZJ 0.3545 + 5 CL2 -9.4196 -1.4634 15.1529 CL 1 CIZJ -0.2900 + 6 CL4 -10.4211 -4.5830 16.4408 CL 1 CIZJ -0.2900 + 7 C2 -8.5721 -2.6186 14.1156 C.3 1 CIZJ -0.0490 + 8 C4 -9.3443 -5.0238 15.1085 C.3 1 CIZJ -0.0490 + 9 C11 -6.3091 -4.7150 14.5072 C.3 1 CIZJ -0.0805 + 10 C12 -7.4097 -3.3486 16.9611 C.3 1 CIZJ -0.0805 + 11 C21 -6.4265 -0.4200 13.8676 C.3 1 CIZJ -0.0805 + 12 C22 -6.6097 -2.5047 11.6750 C.3 1 CIZJ -0.0805 + 13 C23 -8.8187 -0.4466 11.9428 C.3 1 CIZJ -0.0805 + 14 C31 -9.4105 -4.7495 12.0118 C.3 1 CIZJ -0.0805 + 15 C32 -11.5903 -3.3951 13.5974 C.3 1 CIZJ -0.0805 + 16 C41 -8.2649 -7.6606 13.8036 C.3 1 CIZJ -0.0805 + 17 C42 -8.7061 -7.5206 16.7991 C.3 1 CIZJ -0.0805 + 18 C43 -11.0983 -7.5472 14.8743 C.3 1 CIZJ -0.0805 + 19 H1 -5.4728 -4.0101 14.4622 H 1 CIZJ 0.0000 + 20 H2 -5.9729 -5.5679 15.1054 H 1 CIZJ 0.0000 + 21 H3 -6.4917 -5.0755 13.4919 H 1 CIZJ 0.0000 + 22 H4 -7.0909 -4.1837 17.5935 H 1 CIZJ 0.0000 + 23 H5 -6.5898 -2.6228 16.9491 H 1 CIZJ 0.0000 + 24 H6 -8.2532 -2.8694 17.4657 H 1 CIZJ 0.0000 + 25 H7 -5.8274 0.1974 13.1912 H 1 CIZJ 0.0000 + 26 H8 -6.9648 0.2512 14.5429 H 1 CIZJ 0.0000 + 27 H9 -5.7403 -1.0272 14.4654 H 1 CIZJ 0.0000 + 28 H10 -7.2461 -3.1456 11.0612 H 1 CIZJ 0.0000 + 29 H11 -6.0698 -1.8378 10.9948 H 1 CIZJ 0.0000 + 30 H12 -5.8654 -3.1303 12.1722 H 1 CIZJ 0.0000 + 31 H13 -8.2946 0.1699 11.2061 H 1 CIZJ 0.0000 + 32 H14 -9.5412 -1.0696 11.4072 H 1 CIZJ 0.0000 + 33 H15 -9.3722 0.2244 12.6059 H 1 CIZJ 0.0000 + 34 H16 -10.0551 -5.6133 11.8208 H 1 CIZJ 0.0000 + 35 H17 -9.5550 -4.0556 11.1777 H 1 CIZJ 0.0000 + 36 H18 -8.3748 -5.0965 11.9767 H 1 CIZJ 0.0000 + 37 H19 -11.7638 -2.6805 12.7861 H 1 CIZJ 0.0000 + 38 H20 -12.2649 -4.2414 13.4305 H 1 CIZJ 0.0000 + 39 H21 -11.9092 -2.9101 14.5241 H 1 CIZJ 0.0000 + 40 H22 -8.2902 -8.7543 13.8502 H 1 CIZJ 0.0000 + 41 H23 -8.6030 -7.3720 12.8061 H 1 CIZJ 0.0000 + 42 H24 -7.2222 -7.3566 13.9170 H 1 CIZJ 0.0000 + 43 H25 -9.3551 -7.1943 17.6167 H 1 CIZJ 0.0000 + 44 H26 -8.6559 -8.6134 16.8287 H 1 CIZJ 0.0000 + 45 H27 -7.7003 -7.1326 16.9860 H 1 CIZJ 0.0000 + 46 H28 -11.1232 -8.6409 14.8436 H 1 CIZJ 0.0000 + 47 H29 -11.7625 -7.2211 15.6798 H 1 CIZJ 0.0000 + 48 H30 -11.5013 -7.1750 13.9277 H 1 CIZJ 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 1 8 1 + 4 1 7 1 + 5 2 15 1 + 6 2 14 1 + 7 2 8 1 + 8 2 7 1 + 9 3 13 1 + 10 3 12 1 + 11 3 11 1 + 12 3 7 1 + 13 4 18 1 + 14 4 17 1 + 15 4 16 1 + 16 4 8 1 + 17 5 7 1 + 18 6 8 1 + 19 9 21 1 + 20 9 20 1 + 21 9 19 1 + 22 10 24 1 + 23 10 23 1 + 24 10 22 1 + 25 11 27 1 + 26 11 26 1 + 27 11 25 1 + 28 12 30 1 + 29 12 29 1 + 30 12 28 1 + 31 13 33 1 + 32 13 32 1 + 33 13 31 1 + 34 14 36 1 + 35 14 35 1 + 36 14 34 1 + 37 15 39 1 + 38 15 38 1 + 39 15 37 1 + 40 16 42 1 + 41 16 41 1 + 42 16 40 1 + 43 17 45 1 + 44 17 44 1 + 45 17 43 1 + 46 18 48 1 + 47 18 47 1 + 48 18 46 1 +@SUBSTRUCTURE + 1 CIZJ 1 +@COMMENT +COMMENT CIS-2,4-DICHLORO-2,4-BIS(TRIMETHYLSILYL)-1,1,3,3-TETRAMETHY +@MOLECULE +CIZWUD + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -8.9260 -4.4260 14.4977 C.2 1 CIZW 0.2820 + 2 C3 -7.5826 -4.7391 14.6764 C.2 1 CIZW -0.1500 + 3 C4 -7.1239 -5.9526 14.1729 C.2 1 CIZW -0.1500 + 4 C5 -8.0113 -6.8011 13.5166 C.2 1 CIZW -0.1500 + 5 C6 -9.3333 -6.4043 13.3860 C.2 1 CIZW 0.1600 + 6 C7 -11.1412 -1.7942 15.2823 C.1 1 CIZW 0.6631 + 7 N1 -9.8161 -5.2357 13.8605 N.2 1 CIZW -0.6200 + 8 N2 -9.4724 -3.1518 15.0101 N.2 1 CIZW 0.8680 + 9 N3 -10.7080 -2.9582 14.7976 N.2 1 CIZW -0.3130 + 10 N4 -11.5748 -0.7955 15.6825 N.1 1 CIZW -0.5571 + 11 O1 -8.6809 -2.3471 15.6200 O.3 1 CIZW -0.6330 + 12 H3 -6.9057 -4.0640 15.1913 H 1 CIZW 0.1500 + 13 H4 -6.0810 -6.2355 14.2913 H 1 CIZW 0.1500 + 14 H5 -7.6788 -7.7526 13.1149 H 1 CIZW 0.1500 + 15 H6 -10.0585 -7.0367 12.8807 H 1 CIZW 0.1500 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 2 2 + 4 2 12 1 + 5 2 3 1 + 6 3 13 1 + 7 3 4 2 + 8 4 14 1 + 9 4 5 1 + 10 5 15 1 + 11 5 7 2 + 12 6 10 3 + 13 6 9 1 + 14 8 11 1 + 15 8 9 2 +@SUBSTRUCTURE + 1 CIZW 1 +@COMMENT +COMMENT 2-PYRIDINE-ONN-AZOXYCYANIDE +@MOLECULE +CIZYEP + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.3946 -1.6394 13.0681 S.3 1 UNCH -0.3310 + 2 C1 -10.2275 -2.4964 12.6264 C.1 1 UNCH 0.4921 + 3 C2 -9.4937 -3.2677 13.5893 C.2 1 UNCH 0.0366 + 4 C3 -8.1773 -3.0335 13.8717 C.2 1 UNCH 0.2010 + 5 C7 -10.2761 -4.3210 14.2856 C.2 1 UNCH 0.0284 + 6 C8 -10.4768 -4.2643 15.6736 C.2 1 UNCH -0.1500 + 7 C9 -11.2279 -5.2457 16.3233 C.2 1 UNCH -0.1500 + 8 C10 -11.7927 -6.2893 15.5928 C.2 1 UNCH -0.1500 + 9 C11 -11.6098 -6.3526 14.2126 C.2 1 UNCH -0.1500 + 10 C12 -10.8584 -5.3725 13.5602 C.2 1 UNCH -0.1500 + 11 C4 -6.4349 -2.5401 11.8278 C.3 1 UNCH 0.2300 + 12 C5 -7.3062 -5.2631 14.6420 C.3 1 UNCH 0.3691 + 13 C6 -6.3640 -3.2118 15.6033 C.3 1 UNCH 0.3691 + 14 N2 -7.4169 -3.8074 14.7778 N.3 1 UNCH -0.8382 + 15 N1 -10.8416 -1.9111 11.8325 N.1 1 UNCH -0.5571 + 16 H8 -10.0424 -3.4549 16.2574 H 1 UNCH 0.1500 + 17 H9 -11.3745 -5.1923 17.3991 H 1 UNCH 0.1500 + 18 H10 -12.3811 -7.0506 16.0988 H 1 UNCH 0.1500 + 19 H11 -12.0576 -7.1626 13.6421 H 1 UNCH 0.1500 + 20 H12 -10.7320 -5.4390 12.4814 H 1 UNCH 0.1500 + 21 H41 -7.0951 -3.1273 11.1835 H 1 UNCH 0.0000 + 22 H42 -5.8885 -1.8254 11.2067 H 1 UNCH 0.0000 + 23 H43 -5.7126 -3.2062 12.3074 H 1 UNCH 0.0000 + 24 H51 -7.8070 -5.6369 13.7432 H 1 UNCH 0.0000 + 25 H52 -6.2547 -5.5622 14.5632 H 1 UNCH 0.0000 + 26 H53 -7.7370 -5.7561 15.5190 H 1 UNCH 0.0000 + 27 H61 -6.6672 -2.2295 15.9815 H 1 UNCH 0.0000 + 28 H62 -6.1608 -3.8412 16.4770 H 1 UNCH 0.0000 + 29 H63 -5.4347 -3.1072 15.0337 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 11 1 + 3 2 3 1 + 4 2 15 3 + 5 3 4 2 + 6 3 5 1 + 7 4 14 1 + 8 5 6 2 + 9 5 10 1 + 10 6 7 1 + 11 6 16 1 + 12 7 8 2 + 13 7 17 1 + 14 8 9 1 + 15 8 18 1 + 16 9 10 2 + 17 9 19 1 + 18 10 20 1 + 19 11 21 1 + 20 11 22 1 + 21 11 23 1 + 22 12 14 1 + 23 12 24 1 + 24 12 25 1 + 25 12 26 1 + 26 13 14 1 + 27 13 27 1 + 28 13 28 1 + 29 13 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-DIMETHYLAMINO-3-METHYLTHIO-2-PHENYLACRYLONITRILE +@MOLECULE +CIZZUG + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.0608 -4.0330 14.8926 S.3 1 CIZZ -0.0800 + 2 C2 -8.4469 -4.1199 14.3276 C.2 1 CIZZ 0.4421 + 3 N3 -7.5213 -4.1684 15.2663 N.2 1 CIZZ -0.5653 + 4 C4 -8.1194 -4.1432 16.5143 C.2 1 CIZZ 0.0772 + 5 C5 -9.4901 -4.0708 16.4879 C.2 1 CIZZ 0.1200 + 6 N6 -10.3686 -4.0285 17.6117 N.2 1 CIZZ 0.9600 + 7 O7 -11.5858 -3.9567 17.4054 O.3 1 CIZZ -0.5200 + 8 O8 -9.8306 -4.0668 18.7266 O.2 1 CIZZ -0.5200 + 9 N9 -8.1431 -4.1277 12.9842 N.3 1 CIZZ -0.4241 + 10 C10 -9.0645 -4.1421 11.9304 C.2 1 CIZZ 0.6900 + 11 N11 -8.3390 -4.1875 10.7400 N.3 1 CIZZ -0.7301 + 12 C12 -6.9477 -3.9458 10.9857 C.3 1 CIZZ 0.3001 + 13 C13 -6.7942 -4.2256 12.4709 C.3 1 CIZZ 0.3001 + 14 O14 -10.2826 -4.1080 11.9410 O.2 1 CIZZ -0.5700 + 15 H4 -7.4988 -4.1795 17.4028 H 1 CIZZ 0.1500 + 16 H11 -8.8267 -4.0060 9.8715 H 1 CIZZ 0.3700 + 17 H121 -6.3280 -4.5883 10.3558 H 1 CIZZ 0.0000 + 18 H122 -6.7435 -2.8956 10.7533 H 1 CIZZ 0.0000 + 19 H131 -6.4334 -5.2454 12.6459 H 1 CIZZ 0.0000 + 20 H132 -6.1259 -3.5089 12.9582 H 1 CIZZ 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 9 am + 5 3 4 1 + 6 4 5 2 + 7 4 15 1 + 8 5 6 1 + 9 6 7 1 + 10 6 8 2 + 11 9 10 am + 12 9 13 1 + 13 10 11 am + 14 10 14 2 + 15 11 12 1 + 16 11 16 1 + 17 12 13 1 + 18 12 17 1 + 19 12 18 1 + 20 13 19 1 + 21 13 20 1 +@SUBSTRUCTURE + 1 CIZZ 1 +@COMMENT +COMMENT 1-(5-NITRO-1,3-THIAZOL-2-YL)-2-IMIDAZOLIDINONE NIRIDAZOLE +@MOLECULE +COBKIN01 + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.2733 -4.6182 13.8940 O.3 1 UNCH -0.1800 + 2 O2 -6.4585 -7.3650 14.7610 O.2 1 UNCH -0.5700 + 3 O3 -7.4828 -3.8424 14.9761 O.3 1 UNCH -0.4300 + 4 O4 -8.5562 -4.9409 16.6939 O.2 1 UNCH -0.5700 + 5 N1 -9.4870 -5.8025 13.5648 N.3 1 UNCH -0.4160 + 6 N2 -6.9616 -6.6126 12.6844 N.3 1 UNCH -0.8000 + 7 C1 -8.3809 -5.9864 14.5608 C.3 1 UNCH 0.1580 + 8 C2 -9.6821 -6.7681 14.6341 C.3 1 UNCH -0.0420 + 9 C3 -7.1884 -6.7068 14.0307 C.2 1 UNCH 0.6300 + 10 C4 -8.1555 -4.8887 15.5376 C.2 1 UNCH 0.7200 + 11 C5 -7.2469 -2.7238 15.8410 C.3 1 UNCH 0.2800 + 12 C6 -8.4363 -1.7822 15.8088 C.3 1 UNCH 0.0000 + 13 C7 -10.4889 -3.8840 12.6945 C.3 1 UNCH 0.2800 + 14 H1 -7.6825 -6.2273 12.0869 H 1 UNCH 0.3700 + 15 H2 -6.2426 -7.1979 12.2829 H 1 UNCH 0.3700 + 16 H3 -10.3894 -6.5264 15.4193 H 1 UNCH 0.1000 + 17 H4 -9.6682 -7.8121 14.3465 H 1 UNCH 0.1000 + 18 H5 -9.5343 -3.5639 12.2646 H 1 UNCH 0.0000 + 19 H6 -11.0489 -4.4858 11.9715 H 1 UNCH 0.0000 + 20 H7 -11.0764 -2.9947 12.9380 H 1 UNCH 0.0000 + 21 H8 -7.0184 -3.0483 16.8626 H 1 UNCH 0.0000 + 22 H9 -6.3589 -2.2076 15.4619 H 1 UNCH 0.0000 + 23 H10 -8.6500 -1.4681 14.7818 H 1 UNCH 0.0000 + 24 H11 -8.2447 -0.8940 16.4174 H 1 UNCH 0.0000 + 25 H12 -9.3384 -2.2755 16.1843 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 13 1 + 3 2 9 2 + 4 3 10 1 + 5 3 11 1 + 6 4 10 2 + 7 5 7 1 + 8 5 8 1 + 9 6 9 am + 10 6 14 1 + 11 6 15 1 + 12 7 8 1 + 13 7 9 1 + 14 7 10 1 + 15 8 16 1 + 16 8 17 1 + 17 11 12 1 + 18 11 21 1 + 19 11 22 1 + 20 12 23 1 + 21 12 24 1 + 22 12 25 1 + 23 13 18 1 + 24 13 19 1 + 25 13 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-CARBAMOYL-2-ETHOXYCARBONYL-1-METHOXY-AZIRIDINE (ALPHA ISO +@MOLECULE +COCXUN + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.8396 -3.3864 13.4172 C.2 1 COCX 0.3494 + 2 C2 -8.4824 -3.8075 12.9716 C.2 1 COCX -0.1356 + 3 C3 -7.6460 -4.4968 13.7505 C.2 1 COCX -0.1356 + 4 C4 -7.9904 -4.9102 15.1391 C.2 1 COCX 0.3494 + 5 C5 -9.7420 -4.8589 16.9207 C.2 1 COCX -0.1500 + 6 C6 -11.0007 -4.4960 17.4018 C.2 1 COCX -0.1500 + 7 C7 -11.8722 -3.7778 16.5903 C.2 1 COCX -0.1500 + 8 C8 -11.4852 -3.4224 15.2975 C.2 1 COCX -0.1500 + 9 C9 -10.2191 -3.7833 14.8035 C.2 1 COCX 0.0862 + 10 C10 -9.3428 -4.5055 15.6196 C.2 1 COCX 0.0862 + 11 C11 -10.3891 -2.3448 11.4622 C.1 1 COCX 0.6631 + 12 C12 -6.0041 -5.9583 15.5454 C.1 1 COCX 0.6631 + 13 N1 -10.0984 -2.0343 10.3846 N.1 1 COCX -0.5571 + 14 N2 -10.6956 -2.7173 12.7090 N.2 1 COCX -0.5560 + 15 N3 -4.9526 -6.2748 15.1763 N.1 1 COCX -0.5571 + 16 N4 -7.2229 -5.5790 15.9427 N.2 1 COCX -0.5560 + 17 H2 -8.1641 -3.5398 11.9687 H 1 COCX 0.1500 + 18 H3 -6.6708 -4.7703 13.3592 H 1 COCX 0.1500 + 19 H5 -9.0778 -5.4209 17.5750 H 1 COCX 0.1500 + 20 H6 -11.2988 -4.7749 18.4102 H 1 COCX 0.1500 + 21 H7 -12.8543 -3.4932 16.9618 H 1 COCX 0.1500 + 22 H8 -12.1850 -2.8603 14.6816 H 1 COCX 0.1500 +@BOND + 1 1 14 2 + 2 1 9 1 + 3 1 2 1 + 4 2 17 1 + 5 2 3 2 + 6 3 18 1 + 7 3 4 1 + 8 4 16 2 + 9 4 10 1 + 10 5 19 1 + 11 5 10 1 + 12 5 6 2 + 13 6 20 1 + 14 6 7 1 + 15 7 21 1 + 16 7 8 2 + 17 8 22 1 + 18 8 9 1 + 19 9 10 2 + 20 11 14 1 + 21 11 13 3 + 22 12 16 1 + 23 12 15 3 +@SUBSTRUCTURE + 1 COCX 1 +@COMMENT +COMMENT N,N'-DICYANO-1,4-NAPHTHOQUINONE-DI-IMINE TETRATHIAFULVALENE +@MOLECULE +COGDEH + 23 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.8470 -5.9114 17.7786 N.2 1 COGD -0.3381 + 2 N2 -8.8310 -6.1660 18.6722 N.2 1 COGD 0.0000 + 3 N3 -7.6633 -5.7390 18.2096 N.2 1 COGD -0.4180 + 4 N4 -7.9344 -5.2077 17.0121 N.3 1 COGD 0.7716 + 5 N5 -6.9825 -4.6603 16.2223 N.2 1 COGD -0.6520 + 6 N6 -9.8253 -4.8474 15.5837 N.2 1 COGD -0.5760 + 7 C1 -9.2901 -5.3148 16.7444 C.2 1 COGD 0.3125 + 8 C2 -7.4796 -4.2082 15.1072 C.2 1 COGD 0.4356 + 9 C3 -8.9721 -4.3017 14.7621 C.2 1 COGD 0.3638 + 10 C4 -6.5856 -3.5736 14.1160 C.2 1 COGD -0.1356 + 11 C5 -7.0602 -3.0982 12.9606 C.2 1 COGD -0.1784 + 12 C6 -8.4769 -3.1719 12.6020 C.2 1 COGD 0.0284 + 13 C7 -9.4192 -3.7515 13.4617 C.2 1 COGD 0.0862 + 14 C8 -8.9081 -2.6537 11.3737 C.2 1 COGD -0.1500 + 15 C9 -10.2565 -2.7142 11.0124 C.2 1 COGD -0.1500 + 16 C10 -11.1868 -3.2923 11.8733 C.2 1 COGD -0.1500 + 17 C11 -10.7714 -3.8118 13.0987 C.2 1 COGD -0.1500 + 18 H4 -5.5329 -3.5131 14.3707 H 1 COGD 0.1500 + 19 H5 -6.3790 -2.6363 12.2504 H 1 COGD 0.1500 + 20 H8 -8.2021 -2.1969 10.6829 H 1 COGD 0.1500 + 21 H9 -10.5814 -2.3091 10.0564 H 1 COGD 0.1500 + 22 H10 -12.2363 -3.3389 11.5911 H 1 COGD 0.1500 + 23 H11 -11.5071 -4.2611 13.7632 H 1 COGD 0.1500 +@BOND + 1 1 7 2 + 2 1 2 1 + 3 2 3 2 + 4 3 4 1 + 5 4 7 am + 6 4 5 1 + 7 5 8 2 + 8 6 9 2 + 9 6 7 am + 10 8 10 1 + 11 8 9 1 + 12 9 13 1 + 13 10 18 1 + 14 10 11 2 + 15 11 19 1 + 16 11 12 1 + 17 12 14 1 + 18 12 13 2 + 19 13 17 1 + 20 14 20 1 + 21 14 15 2 + 22 15 21 1 + 23 15 16 1 + 24 16 22 1 + 25 16 17 2 + 26 17 23 1 +@SUBSTRUCTURE + 1 COGD 1 +@COMMENT +COMMENT NAPHTHO(L,2-E)TETRAZOLO(L,5-B)-AS-TRIAZINE +@MOLECULE +COGYAY + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -7.5022 -1.0292 11.6230 CL 1 COGH -0.1230 + 2 N1 -10.0706 -3.6881 12.7757 N.2 1 COGH -0.7068 + 3 N2 -8.9954 -3.8133 13.6091 N.3 1 COGH 0.8590 + 4 N3 -7.9605 -2.9597 13.3761 N.2 1 COGH -0.7068 + 5 C4 -8.4106 -2.2584 12.3376 C.2 1 COGH 0.4118 + 6 C5 -9.6843 -2.6945 11.9713 C.2 1 COGH 0.1388 + 7 C6 -8.9595 -4.7739 14.6534 C.2 1 COGH -0.0230 + 8 C7 -7.8341 -4.8669 15.4852 C.2 1 COGH -0.1500 + 9 C8 -7.8030 -5.8134 16.5114 C.2 1 COGH -0.1500 + 10 C9 -8.8887 -6.6661 16.7104 C.2 1 COGH -0.1500 + 11 C10 -10.0097 -6.5767 15.8852 C.2 1 COGH -0.1500 + 12 C11 -10.0492 -5.6331 14.8566 C.2 1 COGH -0.1500 + 13 H1 -10.3345 -2.3490 11.1805 H 1 COGH 0.1500 + 14 H2 -6.9762 -4.2113 15.3474 H 1 COGH 0.1500 + 15 H3 -6.9305 -5.8853 17.1563 H 1 COGH 0.1500 + 16 H4 -8.8611 -7.4019 17.5104 H 1 COGH 0.1500 + 17 H5 -10.8545 -7.2428 16.0427 H 1 COGH 0.1500 + 18 H6 -10.9334 -5.5800 14.2242 H 1 COGH 0.1500 +@BOND + 1 1 5 1 + 2 2 3 1 + 3 2 6 2 + 4 3 4 1 + 5 3 7 1 + 6 4 5 2 + 7 5 6 1 + 8 6 13 1 + 9 7 8 2 + 10 7 12 1 + 11 8 9 1 + 12 8 14 1 + 13 9 10 2 + 14 9 15 1 + 15 10 11 1 + 16 10 16 1 + 17 11 12 2 + 18 11 17 1 + 19 12 18 1 +@SUBSTRUCTURE + 1 COGH 1 +@COMMENT +COMMENT 2-PHENYL-4-CHLORO-1,2,3-TRIAZOLE +@MOLECULE +COHKOZ + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.2992 -2.2928 14.0617 S.3 1 UNCH 0.1807 + 2 O9 -10.6583 -4.0781 15.9912 O.3 1 UNCH -0.4300 + 3 N2 -8.1078 -2.1634 12.8931 N.2 1 UNCH -0.5095 + 4 N4 -7.9944 -4.4165 13.6068 N.2 1 UNCH -0.5653 + 5 N7 -5.6033 -3.7707 11.1208 N.1 1 UNCH -0.5571 + 6 N11 -9.4309 -6.0008 15.5360 N.2 1 UNCH -0.8500 + 7 C3 -7.5452 -3.3714 12.8033 C.2 1 UNCH 0.5350 + 8 C5 -8.9751 -3.9464 14.3588 C.2 1 UNCH 0.2931 + 9 C6 -6.4722 -3.5858 11.8714 C.1 1 UNCH 0.5381 + 10 C8 -9.6871 -4.7517 15.3223 C.2 1 UNCH 0.6850 + 11 C10 -11.3924 -4.8369 16.9586 C.3 1 UNCH 0.2800 + 12 H11 -8.6595 -6.2799 14.9115 H 1 UNCH 0.4000 + 13 H101 -12.1328 -4.1731 17.4138 H 1 UNCH 0.0000 + 14 H102 -11.9217 -5.6644 16.4761 H 1 UNCH 0.0000 + 15 H103 -10.7260 -5.2018 17.7463 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 8 1 + 3 2 10 1 + 4 2 11 1 + 5 3 7 2 + 6 4 7 am + 7 4 8 2 + 8 5 9 3 + 9 6 10 2 + 10 6 12 1 + 11 7 9 1 + 12 8 10 1 + 13 11 13 1 + 14 11 14 1 + 15 11 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 3-CYANO-1,2,4-THIADIAZOLE-5-CARBOXIMIDATE +@MOLECULE +COJFIQ + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.8081 -5.5748 13.6429 N.2 1 COJF -0.1790 + 2 C2 -7.6263 -6.0940 14.0128 C.2 1 COJF 0.5210 + 3 N3 -6.7090 -5.4675 14.7809 N.2 1 COJF -0.5790 + 4 C4 -7.1238 -4.2140 15.1317 C.2 1 COJF 0.6190 + 5 C5 -8.3326 -3.6245 14.7774 C.2 1 COJF 0.3090 + 6 C6 -9.2558 -4.3477 13.9913 C.2 1 COJF 0.5020 + 7 N6 -10.4844 -3.9580 13.4726 N.3 1 COJF -0.8382 + 8 N7 -8.2996 -2.3641 15.3687 N.2 1 COJF -0.7000 + 9 C8 -7.1435 -2.1887 16.0331 C.2 1 COJF 0.6500 + 10 N9 -6.4382 -3.3124 15.8866 N.3 1 COJF -0.7000 + 11 C10 -11.6397 -4.7211 13.9795 C.3 1 COJF 0.3691 + 12 C11 -10.7542 -2.5226 13.3282 C.3 1 COJF 0.3691 + 13 H1 -9.4065 -6.1141 13.0153 H 1 COJF 0.4570 + 14 H7 -9.0291 -1.6527 15.3375 H 1 COJF 0.4500 + 15 H8 -6.8453 -1.3027 16.5857 H 1 COJF 0.1500 + 16 H9 -5.5138 -3.4808 16.2811 H 1 COJF 0.4500 + 17 H10 -11.8105 -4.5057 15.0403 H 1 COJF 0.0000 + 18 H11 -12.5443 -4.4548 13.4221 H 1 COJF 0.0000 + 19 H12 -11.4915 -5.7994 13.8580 H 1 COJF 0.0000 + 20 H13 -9.9064 -2.0067 12.8642 H 1 COJF 0.0000 + 21 H14 -11.6201 -2.3695 12.6748 H 1 COJF 0.0000 + 22 H15 -10.9742 -2.0614 14.2968 H 1 COJF 0.0000 + 23 H2 -7.3865 -7.0932 13.6538 H 1 COJF 0.1500 +@BOND + 1 1 13 1 + 2 1 6 2 + 3 1 2 am + 4 2 23 1 + 5 2 3 2 + 6 3 4 1 + 7 4 10 1 + 8 4 5 2 + 9 5 8 1 + 10 5 6 1 + 11 6 7 am + 12 7 12 1 + 13 7 11 1 + 14 8 14 1 + 15 8 9 2 + 16 9 15 1 + 17 9 10 am + 18 10 16 1 + 19 11 19 1 + 20 11 18 1 + 21 11 17 1 + 22 12 22 1 + 23 12 21 1 + 24 12 20 1 +@SUBSTRUCTURE + 1 COJF 1 +@COMMENT +COMMENT N-6-,N-6--DIMETHYLADENINE DIHYDROCHLORIDE +@MOLECULE +COKDEL + 25 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.4142 -2.5749 12.8727 S.2 1 COKD 0.3585 + 2 O1 -8.0402 -2.5799 12.2715 O.2 1 COKD -0.5000 + 3 O2 -9.4315 -3.6972 14.0286 O.3 1 COKD -0.3320 + 4 C1 -10.4886 -3.5430 11.7847 C.3 1 COKD 0.1935 + 5 C2 -8.5569 -3.4558 15.1377 C.3 1 COKD 0.4800 + 6 C3 -9.3302 -2.7803 16.2046 C.1 1 COKD -0.2000 + 7 C4 -9.9596 -2.2226 17.0626 C.1 1 COKD -0.1770 + 8 C5 -7.9479 -4.8170 15.6045 C.3 1 COKD 0.0000 + 9 C6 -7.1461 -5.4355 14.4379 C.3 1 COKD 0.0000 + 10 C7 -6.9829 -4.6075 16.7881 C.3 1 COKD 0.0000 + 11 C8 -9.0389 -5.8266 16.0148 C.3 1 COKD 0.0000 + 12 H2 -7.7237 -2.7996 14.8469 H 1 COKD 0.0000 + 13 H4 -10.5180 -1.7284 17.8241 H 1 COKD 0.1770 + 14 H11 -11.4662 -3.6650 12.2571 H 1 COKD 0.0000 + 15 H12 -10.6051 -3.0061 10.8405 H 1 COKD 0.0000 + 16 H13 -10.0394 -4.5211 11.5956 H 1 COKD 0.0000 + 17 H61 -6.6619 -6.3706 14.7421 H 1 COKD 0.0000 + 18 H62 -7.7894 -5.6648 13.5813 H 1 COKD 0.0000 + 19 H63 -6.3610 -4.7525 14.0943 H 1 COKD 0.0000 + 20 H71 -7.5046 -4.2422 17.6789 H 1 COKD 0.0000 + 21 H72 -6.4890 -5.5461 17.0649 H 1 COKD 0.0000 + 22 H73 -6.2002 -3.8836 16.5351 H 1 COKD 0.0000 + 23 H81 -9.7368 -6.0217 15.1933 H 1 COKD 0.0000 + 24 H82 -8.5954 -6.7870 16.3026 H 1 COKD 0.0000 + 25 H83 -9.6197 -5.4689 16.8714 H 1 COKD 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 4 1 + 4 3 5 1 + 5 4 14 1 + 6 4 15 1 + 7 4 16 1 + 8 5 6 1 + 9 5 8 1 + 10 5 12 1 + 11 6 7 3 + 12 7 13 1 + 13 8 9 1 + 14 8 10 1 + 15 8 11 1 + 16 9 17 1 + 17 9 18 1 + 18 9 19 1 + 19 10 20 1 + 20 10 21 1 + 21 10 22 1 + 22 11 23 1 + 23 11 24 1 + 24 11 25 1 +@SUBSTRUCTURE + 1 COKD 1 +@COMMENT +COMMENT (3RS)-4,4-DIMETHYL-PENT-1-YN-3-YL-(SR)-METHANESULFINATE +@MOLECULE +COKROJ + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H1 -11.7755 -6.9576 14.0971 H 1 CHGB 0.1500 + 2 H2 -10.0564 -7.5763 10.7657 H 1 CHGB 0.0000 + 3 H3 -9.5396 -8.9517 11.7613 H 1 CHGB 0.0000 + 4 H4 -11.2448 -8.4728 11.7259 H 1 CHGB 0.0000 + 5 H5 -6.8322 -3.7730 15.0166 H 1 CHGB 0.1500 + 6 H6 -6.1318 -1.8760 13.5944 H 1 CHGB 0.1500 + 7 H7 -9.9046 0.0674 14.3418 H 1 CHGB 0.1500 + 8 H8 -10.5932 -1.8368 15.7655 H 1 CHGB 0.1500 + 9 H9 -6.5644 0.4208 12.9832 H 1 CHGB 0.4000 + 10 H10 -8.0357 1.1907 13.2876 H 1 CHGB 0.4000 + 11 O1 -8.7343 -6.6509 12.9391 O.3 1 CHGB -0.0191 + 12 N1 -8.6709 -5.8276 14.0458 N.2 1 CHGB -0.4097 + 13 C1 -9.8803 -5.8711 14.6169 C.2 1 CHGB -0.0172 + 14 C2 -10.7441 -6.7224 13.8853 C.2 1 CHGB -0.1500 + 15 C3 -9.9786 -7.1860 12.8464 C.2 1 CHGB -0.0400 + 16 C4 -10.2180 -8.0942 11.7161 C.3 1 CHGB 0.1800 + 17 N2 -10.2726 -5.1939 15.7479 N.3 1 CHGB -0.2341 + 18 C5 -8.7456 -2.9055 15.4818 C.2 1 CHGB -0.0090 + 19 C6 -7.4876 -2.9166 14.8831 C.2 1 CHGB -0.1500 + 20 C7 -7.0973 -1.8359 14.0881 C.2 1 CHGB -0.1500 + 21 C8 -7.9310 -0.7216 13.9383 C.2 1 CHGB 0.1000 + 22 C9 -9.2112 -0.7513 14.5038 C.2 1 CHGB -0.1500 + 23 C10 -9.6138 -1.8288 15.2969 C.2 1 CHGB -0.1500 + 24 N3 -7.5705 0.3178 13.0638 N.3 1 CHGB -0.9000 + 25 O2 -9.9077 -3.5366 17.6514 O.3 1 CHGB -0.6500 + 26 O3 -7.9901 -4.8830 16.9665 O.3 1 CHGB -0.6500 + 27 S1 -9.2582 -4.2738 16.5615 S.3 1 CHGB 0.8491 +@BOND + 1 1 14 1 + 2 2 16 1 + 3 3 16 1 + 4 4 16 1 + 5 5 19 1 + 6 6 20 1 + 7 7 22 1 + 8 8 23 1 + 9 9 24 1 + 10 10 24 1 + 11 11 15 1 + 12 11 12 1 + 13 12 13 2 + 14 13 17 am + 15 13 14 1 + 16 14 15 2 + 17 15 16 1 + 18 17 27 1 + 19 18 27 1 + 20 18 23 1 + 21 18 19 2 + 22 19 20 1 + 23 20 21 2 + 24 21 24 1 + 25 21 22 1 + 26 22 23 2 + 27 25 27 1 + 28 26 27 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM 4-AMINO-N-(5-METHYL-3-ISOXAZOLYL)-BENZENESULFONAMIDE +@MOLECULE +COLZUY + 44 46 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -10.1443 -5.9215 13.9723 P 1 COLZ 0.0551 + 2 C1 -7.4708 -6.3066 15.5891 C.3 1 COLZ 0.0000 + 3 C2 -7.4608 -6.3720 14.0562 C.3 1 COLZ 0.2700 + 4 N1 -8.5694 -5.6359 13.4687 N.3 1 COLZ -0.6510 + 5 C3 -8.2971 -4.9471 12.2099 C.3 1 COLZ 0.2700 + 6 C4 -7.3664 -3.6979 12.2907 C.3 1 COLZ 0.2700 + 7 N2 -9.9927 -5.9932 15.6572 N.3 1 COLZ -0.6510 + 8 C5 -8.8219 -6.6832 16.2085 C.3 1 COLZ 0.2700 + 9 C6 -10.3750 -7.6834 13.5363 C.3 1 COLZ 0.1669 + 10 N2B -7.7757 -2.4998 13.0527 N.3 1 COLZ -0.6510 + 11 C4B -10.4020 -4.7952 16.4191 C.3 1 COLZ 0.2700 + 12 P1B -7.6241 -2.5715 14.7376 P 1 COLZ 0.0551 + 13 C5B -8.9465 -1.8098 12.5014 C.3 1 COLZ 0.2700 + 14 C3B -9.4713 -3.5459 16.5000 C.3 1 COLZ 0.2700 + 15 N1B -9.1990 -2.8571 15.2412 N.3 1 COLZ -0.6510 + 16 C6B -7.3934 -0.8097 15.1736 C.3 1 COLZ 0.1669 + 17 C1B -10.2976 -2.1864 13.1208 C.3 1 COLZ 0.0000 + 18 C2B -10.3076 -2.1210 14.6537 C.3 1 COLZ 0.2700 + 19 H1 -6.7033 -6.9890 15.9748 H 1 COLZ 0.0000 + 20 H2 -7.1744 -5.3082 15.9199 H 1 COLZ 0.0000 + 21 H3 -6.4939 -5.9797 13.7202 H 1 COLZ 0.0000 + 22 H4 -7.4811 -7.4187 13.7277 H 1 COLZ 0.0000 + 23 H5 -7.8412 -5.6635 11.5124 H 1 COLZ 0.0000 + 24 H6 -9.2249 -4.6379 11.7116 H 1 COLZ 0.0000 + 25 H7 -6.3723 -4.0174 12.6328 H 1 COLZ 0.0000 + 26 H8 -7.1849 -3.3758 11.2553 H 1 COLZ 0.0000 + 27 H9 -8.9655 -7.7647 16.0832 H 1 COLZ 0.0000 + 28 H10 -8.7660 -6.5437 17.2960 H 1 COLZ 0.0000 + 29 H11 -9.6048 -8.3476 13.9362 H 1 COLZ 0.0000 + 30 H12 -11.3416 -8.0375 13.9085 H 1 COLZ 0.0000 + 31 H13 -10.3806 -7.8022 12.4480 H 1 COLZ 0.0000 + 32 H14 -11.3961 -4.4757 16.0770 H 1 COLZ 0.0000 + 33 H15 -10.5835 -5.1173 17.4545 H 1 COLZ 0.0000 + 34 H16 -8.8029 -0.7283 12.6267 H 1 COLZ 0.0000 + 35 H17 -9.0024 -1.9493 11.4139 H 1 COLZ 0.0000 + 36 H18 -9.9272 -2.8295 17.1974 H 1 COLZ 0.0000 + 37 H19 -8.5435 -3.8551 16.9983 H 1 COLZ 0.0000 + 38 H20 -8.1635 -0.1454 14.7737 H 1 COLZ 0.0000 + 39 H21 -7.3878 -0.6908 16.2618 H 1 COLZ 0.0000 + 40 H22 -6.4268 -0.4555 14.8014 H 1 COLZ 0.0000 + 41 H23 -11.0650 -1.5040 12.7351 H 1 COLZ 0.0000 + 42 H24 -10.5940 -3.1848 12.7900 H 1 COLZ 0.0000 + 43 H25 -11.2745 -2.5134 14.9897 H 1 COLZ 0.0000 + 44 H26 -10.2873 -1.0743 14.9821 H 1 COLZ 0.0000 +@BOND + 1 1 9 1 + 2 1 7 1 + 3 1 4 1 + 4 2 20 1 + 5 2 19 1 + 6 2 8 1 + 7 2 3 1 + 8 3 22 1 + 9 3 21 1 + 10 3 4 1 + 11 4 5 1 + 12 5 24 1 + 13 5 23 1 + 14 5 6 1 + 15 6 26 1 + 16 6 25 1 + 17 6 10 1 + 18 7 11 1 + 19 7 8 1 + 20 8 28 1 + 21 8 27 1 + 22 9 31 1 + 23 9 30 1 + 24 9 29 1 + 25 10 13 1 + 26 10 12 1 + 27 11 33 1 + 28 11 32 1 + 29 11 14 1 + 30 12 16 1 + 31 12 15 1 + 32 13 35 1 + 33 13 34 1 + 34 13 17 1 + 35 14 37 1 + 36 14 36 1 + 37 14 15 1 + 38 15 18 1 + 39 16 40 1 + 40 16 39 1 + 41 16 38 1 + 42 17 42 1 + 43 17 41 1 + 44 17 18 1 + 45 18 44 1 + 46 18 43 1 +@SUBSTRUCTURE + 1 COLZ 1 +@COMMENT +COMMENT N-1-,N-11-.N-4-,N-8--BIS(MU-2--METHYLPHOSPHINO)-1,4,8,11-TE +@MOLECULE +COMDIR + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -6.0409 -6.1219 12.2892 BR 1 UNCH -0.1100 + 2 BR2 -8.6569 -1.8387 15.5228 BR 1 UNCH -0.2300 + 3 O1 -9.5091 -2.3850 12.4427 O.2 1 UNCH -0.5700 + 4 O2 -7.5248 -6.7012 14.9028 O.2 1 UNCH -0.5700 + 5 C1 -8.9646 -3.2321 13.1503 C.2 1 UNCH 0.4946 + 6 C2 -7.8898 -4.0407 12.5510 C.2 1 UNCH -0.1356 + 7 C3 -7.3788 -5.1245 13.1394 C.2 1 UNCH 0.1244 + 8 C4 -7.8684 -5.6031 14.4632 C.2 1 UNCH 0.4946 + 9 C5 -8.7664 -4.7135 15.2900 C.3 1 UNCH 0.0610 + 10 C6 -9.3283 -3.4481 14.6041 C.3 1 UNCH 0.2910 + 11 C7 -10.8585 -3.5792 14.8192 C.3 1 UNCH 0.1382 + 12 C8 -11.3516 -4.7339 13.9676 C.2 1 UNCH -0.2882 + 13 C9 -10.8542 -5.8586 14.5015 C.2 1 UNCH -0.2882 + 14 C10 -10.0570 -5.4610 15.7248 C.3 1 UNCH 0.1382 + 15 C11 -10.9266 -4.2851 16.1828 C.3 1 UNCH 0.0000 + 16 H2 -7.5583 -3.7103 11.5717 H 1 UNCH 0.1500 + 17 H7 -11.4586 -2.6707 14.7439 H 1 UNCH 0.0000 + 18 H10 -9.9290 -6.2539 16.4634 H 1 UNCH 0.0000 + 19 H5 -8.1923 -4.4555 16.1903 H 1 UNCH 0.0000 + 20 H8 -11.9548 -4.6467 13.0746 H 1 UNCH 0.1500 + 21 H9 -10.9812 -6.8667 14.1318 H 1 UNCH 0.1500 + 22 H11 -11.9444 -4.5796 16.4714 H 1 UNCH 0.0000 + 23 H11_ -10.4845 -3.7144 17.0059 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 2 10 1 + 3 3 5 2 + 4 4 8 2 + 5 5 6 1 + 6 5 10 1 + 7 6 7 2 + 8 6 16 1 + 9 7 8 1 + 10 8 9 1 + 11 9 10 1 + 12 9 14 1 + 13 9 19 1 + 14 10 11 1 + 15 11 12 1 + 16 11 15 1 + 17 11 17 1 + 18 12 13 2 + 19 12 20 1 + 20 13 14 1 + 21 13 21 1 + 22 14 15 1 + 23 14 18 1 + 24 15 22 1 + 25 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,5-DIBROMOTRICYCLO(6.2.1.0-2,7-)UNDECA-4,9-DIENE-3,6-DIONE +@MOLECULE +COMKAQ + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.3319 -4.6906 13.6369 C.2 1 UNCH 0.6670 + 2 O1 -11.3782 -5.1670 14.0503 O.2 1 UNCH -0.5700 + 3 O2 -10.2486 -3.4430 13.0837 O.3 1 UNCH -0.4300 + 4 C2 -8.9346 -3.2196 12.5427 C.3 1 UNCH 0.2800 + 5 C3 -7.9734 -4.2387 13.1302 C.3 1 UNCH 0.0000 + 6 C4 -7.5239 -4.0323 14.5960 C.3 1 UNCH 0.0000 + 7 C5 -8.0954 -5.4316 14.9192 C.3 1 UNCH 0.1810 + 8 C6 -8.9317 -5.3308 13.6268 C.3 1 UNCH 0.0530 + 9 C7 -8.8105 -5.5422 16.1697 C.1 1 UNCH 0.3761 + 10 N1 -9.3517 -5.6261 17.1916 N.1 1 UNCH -0.5571 + 11 H1 -9.0035 -3.3229 11.4545 H 1 UNCH 0.0000 + 12 H2 -8.6267 -2.1947 12.7716 H 1 UNCH 0.0000 + 13 H3 -7.1775 -4.5826 12.4619 H 1 UNCH 0.0000 + 14 H4 -6.4432 -3.9321 14.7367 H 1 UNCH 0.0000 + 15 H5 -8.0185 -3.1973 15.1074 H 1 UNCH 0.0000 + 16 H6 -7.3232 -6.2091 14.8292 H 1 UNCH 0.0000 + 17 H7 -8.9171 -6.2461 13.0229 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 8 1 + 4 3 4 1 + 5 4 5 1 + 6 4 11 1 + 7 4 12 1 + 8 5 6 1 + 9 5 8 1 + 10 5 13 1 + 11 6 7 1 + 12 6 14 1 + 13 6 15 1 + 14 7 8 1 + 15 7 9 1 + 16 7 16 1 + 17 8 17 1 + 18 9 10 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1SR,5SR,6SR)-4-OXO-3-OXABICYCLO(3.2.0)HEPTANE-6-CARBONITRI +@MOLECULE +COMWOQ + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -10.0346 -5.7925 13.8515 N.3 1 COMW 0.0332 + 2 C2 -10.8888 -5.1048 14.6725 C.2 1 COMW -0.3016 + 3 C3 -10.2710 -3.9263 15.0508 C.2 1 COMW -0.0860 + 4 C4 -7.9037 -3.0036 14.4163 C.2 1 COMW -0.1500 + 5 C5 -6.7548 -3.3024 13.6752 C.2 1 COMW -0.1500 + 6 C6 -6.6691 -4.4857 12.9465 C.2 1 COMW -0.1500 + 7 C7 -7.7242 -5.4025 12.9360 C.2 1 COMW -0.1500 + 8 C8 -8.8661 -5.0877 13.6829 C.2 1 COMW -0.1516 + 9 C9 -8.9844 -3.9105 14.4242 C.2 1 COMW 0.0000 + 10 C10 -10.8629 -2.9281 15.9224 C.2 1 COMW 0.5960 + 11 O11 -10.3120 -1.8834 16.2562 O.2 1 COMW -0.5700 + 12 H12 -10.2263 -6.6893 13.4259 H 1 COMW 0.2700 + 13 H13 -11.8607 -5.5138 14.9155 H 1 COMW 0.1500 + 14 H14 -7.9614 -2.0770 14.9823 H 1 COMW 0.1500 + 15 H15 -5.9239 -2.6013 13.6713 H 1 COMW 0.1500 + 16 H16 -5.7678 -4.7001 12.3767 H 1 COMW 0.1500 + 17 H17 -7.6526 -6.3233 12.3665 H 1 COMW 0.1500 + 18 H18 -11.8772 -3.1647 16.2863 H 1 COMW 0.0600 +@BOND + 1 1 12 1 + 2 1 8 1 + 3 1 2 1 + 4 2 13 1 + 5 2 3 2 + 6 3 10 1 + 7 3 9 1 + 8 4 14 1 + 9 4 9 1 + 10 4 5 2 + 11 5 15 1 + 12 5 6 1 + 13 6 16 1 + 14 6 7 2 + 15 7 17 1 + 16 7 8 1 + 17 8 9 2 + 18 10 18 1 + 19 10 11 2 +@SUBSTRUCTURE + 1 COMW 1 +@COMMENT +COMMENT 1H-INDOLE-3-CARBOXALDEHYDE +@MOLECULE +COMWUW + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.8331 -2.3825 13.3404 N.3 1 COMW 0.0332 + 2 N11 -9.0178 -5.0036 16.8355 N.3 1 COMW -0.8100 + 3 C2 -8.2891 -2.3282 14.6296 C.2 1 COMW -0.3016 + 4 C3 -8.9785 -3.4975 14.8993 C.2 1 COMW -0.1810 + 5 C4 -9.4391 -5.5512 13.3413 C.2 1 COMW -0.1500 + 6 C5 -9.2163 -6.0436 12.0504 C.2 1 COMW -0.1500 + 7 C6 -8.5004 -5.2945 11.1200 C.2 1 COMW -0.1500 + 8 C7 -7.9852 -4.0375 11.4507 C.2 1 COMW -0.1500 + 9 C8 -8.2175 -3.5613 12.7469 C.2 1 COMW -0.1516 + 10 C9 -8.9338 -4.2847 13.7008 C.2 1 COMW 0.0000 + 11 C10 -9.6640 -3.8507 16.1856 C.3 1 COMW 0.4510 + 12 C12 -9.8527 -5.4842 17.9367 C.3 1 COMW 0.2700 + 13 C13 -7.6825 -4.6676 17.3346 C.3 1 COMW 0.2700 + 14 H14 -7.2948 -1.6616 12.8812 H 1 COMW 0.2700 + 15 H15 -8.0861 -1.4652 15.2491 H 1 COMW 0.1500 + 16 H16 -9.9881 -6.1444 14.0669 H 1 COMW 0.1500 + 17 H17 -9.6034 -7.0216 11.7768 H 1 COMW 0.1500 + 18 H18 -8.3359 -5.6941 10.1221 H 1 COMW 0.1500 + 19 H19 -7.4249 -3.4582 10.7246 H 1 COMW 0.1500 + 20 H20 -10.7060 -4.0962 15.9402 H 1 COMW 0.0000 + 21 H21 -9.6936 -2.9827 16.8574 H 1 COMW 0.0000 + 22 H22 -7.0031 -4.4026 16.5180 H 1 COMW 0.0000 + 23 H23 -7.2312 -5.5343 17.8316 H 1 COMW 0.0000 + 24 H24 -7.7052 -3.8381 18.0508 H 1 COMW 0.0000 + 25 H25 -9.4043 -6.3684 18.4036 H 1 COMW 0.0000 + 26 H26 -10.8371 -5.7940 17.5682 H 1 COMW 0.0000 + 27 H27 -9.9977 -4.7214 18.7104 H 1 COMW 0.0000 +@BOND + 1 1 14 1 + 2 1 9 1 + 3 1 3 1 + 4 2 13 1 + 5 2 12 1 + 6 2 11 1 + 7 3 15 1 + 8 3 4 2 + 9 4 11 1 + 10 4 10 1 + 11 5 16 1 + 12 5 10 1 + 13 5 6 2 + 14 6 17 1 + 15 6 7 1 + 16 7 18 1 + 17 7 8 2 + 18 8 19 1 + 19 8 9 1 + 20 9 10 2 + 21 11 21 1 + 22 11 20 1 + 23 12 27 1 + 24 12 26 1 + 25 12 25 1 + 26 13 24 1 + 27 13 23 1 + 28 13 22 1 +@SUBSTRUCTURE + 1 COMW 1 +@COMMENT +COMMENT N,N-DIMETHYL-1H-INDOLE-3-METHANAMINE GRAMINE +@MOLECULE +CONBAI + 36 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.1263 -5.5427 13.4816 N.3 1 UNCH -0.5851 + 2 C1 -9.3048 -5.1890 12.0779 C.3 1 UNCH 0.3001 + 3 C2 -10.2758 -5.8984 14.1778 C.2 1 UNCH 0.6900 + 4 O2 -11.3852 -5.7905 13.6544 O.2 1 UNCH -0.5700 + 5 N3 -10.1074 -6.3797 15.4740 N.3 1 UNCH -0.4201 + 6 C3 -11.3093 -6.7935 16.1817 C.3 1 UNCH 0.3001 + 7 C4 -8.8949 -6.5978 16.1477 C.2 1 UNCH 0.5770 + 8 O4 -8.8596 -7.2199 17.2185 O.2 1 UNCH -0.5700 + 9 C5 -7.6225 -6.0469 15.4698 C.3 1 UNCH 0.3510 + 10 F5 -6.5841 -6.8843 15.7509 F 1 UNCH -0.2980 + 11 C6 -7.7441 -5.7516 13.9642 C.3 1 UNCH 0.2250 + 12 N1_ -7.2131 -3.2582 13.4985 N.3 1 UNCH -0.5851 + 13 C1_ -6.4012 -2.9135 12.3393 C.3 1 UNCH 0.3001 + 14 C2_ -8.1407 -2.3229 13.9354 C.2 1 UNCH 0.6900 + 15 O2_ -8.3195 -1.2705 13.3219 O.2 1 UNCH -0.5700 + 16 N3_ -8.8486 -2.6362 15.0931 N.3 1 UNCH -0.4201 + 17 C3_ -9.9281 -1.7340 15.4597 C.3 1 UNCH 0.3001 + 18 C4_ -8.5031 -3.6119 16.0378 C.2 1 UNCH 0.5770 + 19 O4_ -9.1339 -3.7327 17.0970 O.2 1 UNCH -0.5700 + 20 C5_ -7.3052 -4.5290 15.6877 C.3 1 UNCH 0.3510 + 21 F5_ -6.3029 -4.2661 16.5680 F 1 UNCH -0.2980 + 22 C6_ -6.8693 -4.4961 14.2193 C.3 1 UNCH 0.2250 + 23 H11 -9.8925 -4.2683 12.0151 H 1 UNCH 0.0000 + 24 H12 -9.8445 -5.9929 11.5672 H 1 UNCH 0.0000 + 25 H13 -8.3388 -5.0445 11.5883 H 1 UNCH 0.0000 + 26 H31 -11.4450 -7.8686 16.0266 H 1 UNCH 0.0000 + 27 H32 -12.1967 -6.2672 15.8188 H 1 UNCH 0.0000 + 28 H33 -11.2119 -6.6005 17.2548 H 1 UNCH 0.0000 + 29 H6 -7.2418 -6.5033 13.3422 H 1 UNCH 0.0000 + 30 H14 -5.5965 -2.2480 12.6647 H 1 UNCH 0.0000 + 31 H15 -7.0071 -2.4036 11.5845 H 1 UNCH 0.0000 + 32 H16 -5.9773 -3.8199 11.8978 H 1 UNCH 0.0000 + 33 H34 -10.3728 -1.2652 14.5769 H 1 UNCH 0.0000 + 34 H35 -9.5204 -0.9551 16.1119 H 1 UNCH 0.0000 + 35 H36 -10.7155 -2.2705 15.9979 H 1 UNCH 0.0000 + 36 H6_ -5.7955 -4.7142 14.1218 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 am + 3 1 11 1 + 4 2 23 1 + 5 2 24 1 + 6 2 25 1 + 7 3 4 2 + 8 3 5 am + 9 5 6 1 + 10 5 7 am + 11 6 26 1 + 12 6 27 1 + 13 6 28 1 + 14 7 8 2 + 15 7 9 1 + 16 9 10 1 + 17 9 11 1 + 18 9 20 1 + 19 11 22 1 + 20 11 29 1 + 21 12 13 1 + 22 12 14 am + 23 12 22 1 + 24 13 30 1 + 25 13 31 1 + 26 13 32 1 + 27 14 15 2 + 28 14 16 am + 29 16 17 1 + 30 16 18 am + 31 17 33 1 + 32 17 34 1 + 33 17 35 1 + 34 18 19 2 + 35 18 20 1 + 36 20 21 1 + 37 20 22 1 + 38 22 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4A,4B-DIFLUORO-4A,4B,8A,8B-TETRAHYDRO-1,3,6,8-TETRAMETHYLCY +@MOLECULE +CONFAM + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.6283 -2.7626 15.5257 S.2 1 CONF -0.3800 + 2 C1 -8.3319 -4.1387 14.9376 C.2 1 CONF 0.5900 + 3 C2 -9.6475 -3.0339 13.2093 C.3 1 CONF 0.2800 + 4 O1 -9.2148 -4.2103 13.9168 O.3 1 CONF -0.4300 + 5 N1 -8.0779 -5.3666 15.4448 N.3 1 CONF -0.8000 + 6 H1 -8.8001 -2.5485 12.7164 H 1 CONF 0.0000 + 7 H2 -10.1676 -2.3487 13.8851 H 1 CONF 0.0000 + 8 H3 -10.3535 -3.3544 12.4379 H 1 CONF 0.0000 + 9 H4 -8.5331 -6.1775 15.0507 H 1 CONF 0.3700 + 10 H5 -7.4349 -5.4778 16.2162 H 1 CONF 0.3700 +@BOND + 1 1 2 2 + 2 2 5 1 + 3 2 4 1 + 4 3 8 1 + 5 3 7 1 + 6 3 6 1 + 7 3 4 1 + 8 5 10 1 + 9 5 9 1 +@SUBSTRUCTURE + 1 CONF 1 +@COMMENT +COMMENT O-METHYL-THIOCARBAMATE (AT -150 DEG.C) +@MOLECULE +CONLIA + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.6643 -3.7868 15.2998 N.3 1 CONL -1.0120 + 2 N2 -8.4570 -4.9679 13.5524 N.3 1 CONL -1.0120 + 3 C1 -10.6370 -4.7005 14.5537 C.3 1 CONL 0.5030 + 4 C2 -9.7394 -5.7376 13.8943 C.3 1 CONL 0.5030 + 5 C3 -8.4039 -3.7782 14.4792 C.3 1 CONL 1.0060 + 6 C5 -9.3905 -4.3145 16.7097 C.3 1 CONL 0.5030 + 7 C6 -10.2427 -2.3800 15.4333 C.3 1 CONL 0.5030 + 8 C7 -8.4896 -4.5028 12.0933 C.3 1 CONL 0.5030 + 9 C8 -7.2305 -5.8587 13.7304 C.3 1 CONL 0.5030 + 10 H1 -11.1507 -4.0971 13.7970 H 1 CONL 0.0000 + 11 H2 -11.3645 -5.1217 15.2537 H 1 CONL 0.0000 + 12 H3 -9.4782 -6.5322 14.6016 H 1 CONL 0.0000 + 13 H4 -10.1655 -6.1773 12.9875 H 1 CONL 0.0000 + 14 H5 -8.3611 -2.8584 13.8848 H 1 CONL 0.0000 + 15 H6 -7.5292 -3.8416 15.1366 H 1 CONL 0.0000 + 16 H9 -10.3377 -4.3431 17.2563 H 1 CONL 0.0000 + 17 H10 -8.6852 -3.6371 17.2003 H 1 CONL 0.0000 + 18 H11 -8.9638 -5.3181 16.6317 H 1 CONL 0.0000 + 19 H12 -9.5073 -1.7538 15.9469 H 1 CONL 0.0000 + 20 H13 -11.1704 -2.4448 16.0092 H 1 CONL 0.0000 + 21 H14 -10.4434 -1.9889 14.4313 H 1 CONL 0.0000 + 22 H15 -9.3764 -3.8785 11.9498 H 1 CONL 0.0000 + 23 H16 -8.5362 -5.3871 11.4510 H 1 CONL 0.0000 + 24 H17 -7.5785 -3.9307 11.8940 H 1 CONL 0.0000 + 25 H18 -7.1852 -6.1807 14.7750 H 1 CONL 0.0000 + 26 H19 -6.3413 -5.2762 13.4718 H 1 CONL 0.0000 + 27 H20 -7.3356 -6.7229 13.0682 H 1 CONL 0.0000 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 4 1 + 6 2 5 1 + 7 2 8 1 + 8 2 9 1 + 9 3 4 1 + 10 3 10 1 + 11 3 11 1 + 12 4 12 1 + 13 4 13 1 + 14 5 14 1 + 15 5 15 1 + 16 6 16 1 + 17 6 17 1 + 18 6 18 1 + 19 7 19 1 + 20 7 20 1 + 21 7 21 1 + 22 8 22 1 + 23 8 23 1 + 24 8 24 1 + 25 9 25 1 + 26 9 26 1 + 27 9 27 1 +@SUBSTRUCTURE + 1 CONL 1 +@COMMENT +COMMENT 1,1,3,3-TETRAMETHYLIMIDAZOLIDINIUM DI-IODIDE METHYLENE DICH +@MOLECULE +CORDOC + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.5146 -2.8636 12.6363 S.3 1 CORD 1.0896 + 2 CL1 -7.4354 -0.8477 13.0733 CL 1 CORD -0.2900 + 3 C1 -9.3762 -2.1504 11.0111 C.3 1 CORD 0.1052 + 4 C2 -7.9674 -2.5082 13.4631 C.3 1 CORD 0.4562 + 5 C3 -8.1279 -2.6723 14.9598 C.2 1 CORD 0.4228 + 6 C4 -8.4391 -4.0170 15.5250 C.2 1 CORD 0.0862 + 7 C5 -7.9836 -5.2039 14.9405 C.2 1 CORD -0.1500 + 8 C6 -8.2969 -6.4340 15.5258 C.2 1 CORD -0.1500 + 9 C7 -9.0523 -6.4835 16.6967 C.2 1 CORD -0.1500 + 10 C8 -9.4948 -5.3039 17.2910 C.2 1 CORD -0.1500 + 11 C9 -9.1861 -4.0734 16.7100 C.2 1 CORD -0.1500 + 12 O1 -9.5731 -4.3011 12.4247 O.3 1 CORD -0.6500 + 13 O2 -10.6051 -2.1862 13.3115 O.3 1 CORD -0.6500 + 14 O3 -7.9792 -1.7511 15.7649 O.2 1 CORD -0.5700 + 15 H11 -9.4206 -1.0628 11.0777 H 1 CORD 0.0000 + 16 H12 -10.2215 -2.5075 10.4178 H 1 CORD 0.0000 + 17 H13 -8.4424 -2.4848 10.5552 H 1 CORD 0.0000 + 18 H21 -7.1970 -3.1765 13.0740 H 1 CORD 0.0000 + 19 H51 -7.3841 -5.2114 14.0360 H 1 CORD 0.1500 + 20 H61 -7.9527 -7.3579 15.0664 H 1 CORD 0.1500 + 21 H71 -9.2958 -7.4429 17.1471 H 1 CORD 0.1500 + 22 H81 -10.0811 -5.3402 18.2060 H 1 CORD 0.1500 + 23 H91 -9.5359 -3.1574 17.1840 H 1 CORD 0.1500 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 12 1 + 4 1 13 1 + 5 2 4 1 + 6 3 15 1 + 7 3 16 1 + 8 3 17 1 + 9 4 5 1 + 10 4 18 1 + 11 5 6 1 + 12 5 14 2 + 13 6 7 2 + 14 6 11 1 + 15 7 8 1 + 16 7 19 1 + 17 8 9 2 + 18 8 20 1 + 19 9 10 1 + 20 9 21 1 + 21 10 11 2 + 22 10 22 1 + 23 11 23 1 +@SUBSTRUCTURE + 1 CORD 1 +@COMMENT +COMMENT 2-CHLORO-2-METHYLSULFONYL-1-PHENYLETHANONE +@MOLECULE +CORWUB10 + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S13 -9.0005 -2.6310 13.2990 S.2 1 CORW -0.7500 + 2 S23 -11.0948 -4.1948 14.7416 S.3 1 CORW -0.7500 + 3 C13 -9.4865 -3.9382 14.2560 C.2 1 CORW 0.7960 + 4 N13 -8.6773 -4.8833 14.7194 N.3 1 CORW -0.7260 + 5 C23 -7.3374 -4.9633 14.5084 C.2 1 CORW 0.5700 + 6 O13 -6.6536 -5.8732 14.9734 O.2 1 CORW -0.5700 + 7 H13 -9.0556 -5.6277 15.2844 H 1 CORW 0.3700 + 8 H23 -6.8835 -4.1714 13.8972 H 1 CORW 0.0600 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 7 1 + 5 4 5 am + 6 5 8 1 + 7 5 6 2 +@SUBSTRUCTURE + 1 CORW 1 +@COMMENT +COMMENT POTASSIUM N-FORMYL-DITHIOCARBAMATE +@MOLECULE +COSFAR + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.6779 -6.1310 12.8376 S.3 1 UNCH -0.2425 + 2 O1 -5.4159 -4.9290 13.4900 O.2 1 UNCH -0.5700 + 3 N1 -7.4076 -4.0009 14.2955 N.3 1 UNCH -0.4771 + 4 C1 -10.4469 -5.7531 13.3236 C.2 1 UNCH -0.1500 + 5 C2 -11.4490 -4.9945 13.9315 C.2 1 UNCH -0.1500 + 6 C3 -11.1211 -3.8623 14.6916 C.2 1 UNCH -0.1500 + 7 C4 -9.7873 -3.4740 14.8537 C.2 1 UNCH -0.1500 + 8 C5 -8.7964 -4.2336 14.2460 C.2 1 UNCH 0.1170 + 9 C6 -9.1290 -5.3589 13.4911 C.2 1 UNCH 0.1015 + 10 C7 -6.6322 -4.9156 13.5975 C.2 1 UNCH 0.7710 + 11 C8 -6.8285 -2.8953 15.0168 C.3 1 UNCH 0.3001 + 12 H1 -10.6976 -6.6299 12.7348 H 1 UNCH 0.1500 + 13 H2 -12.4915 -5.2833 13.8151 H 1 UNCH 0.1500 + 14 H3 -11.9135 -3.2813 15.1592 H 1 UNCH 0.1500 + 15 H4 -9.5529 -2.5956 15.4449 H 1 UNCH 0.1500 + 16 H11 -7.2100 -1.9551 14.6074 H 1 UNCH 0.0000 + 17 H22 -7.0914 -2.9753 16.0759 H 1 UNCH 0.0000 + 18 H33 -5.7384 -2.8978 14.9271 H 1 UNCH 0.0000 +@BOND + 1 1 9 1 + 2 1 10 1 + 3 2 10 2 + 4 3 8 1 + 5 3 10 am + 6 3 11 1 + 7 4 5 2 + 8 4 9 1 + 9 4 12 1 + 10 5 6 1 + 11 5 13 1 + 12 6 7 2 + 13 6 14 1 + 14 7 8 1 + 15 7 15 1 + 16 8 9 2 + 17 11 16 1 + 18 11 17 1 + 19 11 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-METHYL-2(3H)-BENZOTHIAZOLONE +@MOLECULE +COSSEI + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -11.3118 -6.0396 15.8364 S.2 1 CHGB -0.7500 + 2 S2 -10.9511 -4.0620 18.0481 S.3 1 CHGB -0.7500 + 3 C1 -10.7381 -4.5712 16.4406 C.2 1 CHGB 0.7960 + 4 N1 -10.0893 -3.6614 15.7160 N.3 1 CHGB -0.9661 + 5 C2 -9.5491 -3.8465 14.3757 C.3 1 CHGB 0.3001 + 6 H1 -9.7532 -2.8390 16.1970 H 1 CHGB 0.3700 + 7 H21 -9.3899 -2.8359 13.9837 H 1 CHGB 0.0000 + 8 H22 -10.3028 -4.3000 13.7226 H 1 CHGB 0.0000 + 9 C2A -8.2189 -4.6209 14.3343 C.3 1 CHGB 0.3001 + 10 N1A -7.6787 -4.8060 12.9940 N.3 1 CHGB -0.9661 + 11 H21A -8.3781 -5.6315 14.7263 H 1 CHGB 0.0000 + 12 H22A -7.4652 -4.1674 14.9874 H 1 CHGB 0.0000 + 13 C1A -7.0299 -3.8962 12.2694 C.2 1 CHGB 0.7960 + 14 H1A -8.0148 -5.6284 12.5130 H 1 CHGB 0.3700 + 15 S1A -6.4562 -2.4278 12.8736 S.2 1 CHGB -0.7500 + 16 S2A -6.8169 -4.4054 10.6619 S.3 1 CHGB -0.7500 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 6 1 + 5 4 5 1 + 6 5 9 1 + 7 5 8 1 + 8 5 7 1 + 9 9 12 1 + 10 9 11 1 + 11 9 10 1 + 12 10 14 1 + 13 10 13 1 + 14 13 16 1 + 15 13 15 2 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT DISODIUM ETHYLENE-BIS(DITHIOCARBAMATE) HEXAHYDRATE +@MOLECULE +COSWIQ + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.6891 -4.1628 14.9279 N.2 1 COSW -0.6210 + 2 C2 -9.9662 -4.1709 15.0839 C.2 1 COSW 0.5856 + 3 C3 -10.9406 -3.0855 15.3261 C.2 1 COSW -0.1356 + 4 C4 -11.1339 -2.0929 14.4443 C.2 1 COSW -0.1500 + 5 C5 -10.4168 -1.9016 13.1918 C.2 1 COSW 0.0650 + 6 C6 -9.0742 -1.8324 13.0979 C.2 1 COSW -0.1500 + 7 C7 -8.1411 -1.9307 14.2033 C.2 1 COSW -0.1500 + 8 C8 -8.0093 -2.9766 15.0417 C.2 1 COSW 0.1710 + 9 O9 -10.6950 -5.3205 15.0468 O.3 1 COSW -0.4300 + 10 C10 -9.9599 -6.5219 14.7902 C.3 1 COSW 0.2800 + 11 C11 -11.2080 -1.6888 12.0180 C.1 1 COSW 0.4921 + 12 N12 -11.8494 -1.5003 11.0692 N.1 1 COSW -0.5571 + 13 C13 -7.0049 -2.9352 16.0988 C.2 1 COSW -0.1500 + 14 C14 -6.7505 -3.9115 16.9821 C.2 1 COSW -0.3000 + 15 H3 -11.5509 -3.1827 16.2158 H 1 COSW 0.1500 + 16 H4 -11.9236 -1.3709 14.6475 H 1 COSW 0.1500 + 17 H6 -8.6079 -1.6238 12.1351 H 1 COSW 0.1500 + 18 H7 -7.4891 -1.0662 14.3119 H 1 COSW 0.1500 + 19 H101 -10.6702 -7.3531 14.7731 H 1 COSW 0.0000 + 20 H102 -9.2339 -6.7045 15.5885 H 1 COSW 0.0000 + 21 H103 -9.4667 -6.4695 13.8146 H 1 COSW 0.0000 + 22 H13 -6.4128 -2.0251 16.1717 H 1 COSW 0.1500 + 23 H1 -7.2938 -4.8512 16.9705 H 1 COSW 0.1500 + 24 H2 -5.9793 -3.7905 17.7352 H 1 COSW 0.1500 +@BOND + 1 1 8 1 + 2 1 2 2 + 3 2 9 1 + 4 2 3 1 + 5 3 15 1 + 6 3 4 2 + 7 4 16 1 + 8 4 5 1 + 9 5 11 1 + 10 5 6 2 + 11 6 17 1 + 12 6 7 1 + 13 7 18 1 + 14 7 8 2 + 15 8 13 1 + 16 9 10 1 + 17 10 21 1 + 18 10 20 1 + 19 10 19 1 + 20 11 12 3 + 21 13 22 1 + 22 13 14 2 + 23 14 24 1 + 24 14 23 1 +@SUBSTRUCTURE + 1 COSW 1 +@COMMENT +COMMENT 5-CYANO-2-METHOXY-8-VINYL-PERHYDROAZOCINE +@MOLECULE +COTMON + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.2413 -4.9357 17.6085 N.3 1 UNCH -0.7290 + 2 N2 -7.4607 -3.5685 17.3342 N.3 1 UNCH -0.4210 + 3 C3 -8.0826 -3.1469 16.1608 C.2 1 UNCH 0.5000 + 4 N4 -8.4273 -4.2111 15.3613 N.3 1 UNCH -0.5470 + 5 C5 -9.0550 -4.3498 14.1119 C.2 1 UNCH 0.1170 + 6 C6 -9.2160 -5.6641 13.6447 C.2 1 UNCH -0.1500 + 7 C7 -9.8271 -5.9247 12.4140 C.2 1 UNCH -0.1500 + 8 C8 -10.2844 -4.8672 11.6368 C.2 1 UNCH 0.1770 + 9 C9 -10.1336 -3.5585 12.0834 C.2 1 UNCH -0.1500 + 10 C10 -9.5205 -3.3021 13.3176 C.2 1 UNCH -0.1500 + 11 CL1 -11.0371 -5.1775 10.1223 CL 1 UNCH -0.1770 + 12 S1 -8.2848 -1.5088 15.9515 S.2 1 UNCH -0.3800 + 13 H11 -7.6912 -5.1558 18.5023 H 1 UNCH 0.3600 + 14 H21 -6.2373 -5.0708 17.7624 H 1 UNCH 0.3600 + 15 H2 -7.1711 -2.8395 17.9870 H 1 UNCH 0.3700 + 16 H4 -8.1397 -5.0688 15.8279 H 1 UNCH 0.3700 + 17 H6 -8.8656 -6.5068 14.2364 H 1 UNCH 0.1500 + 18 H7 -9.9404 -6.9501 12.0736 H 1 UNCH 0.1500 + 19 H9 -10.4888 -2.7263 11.4810 H 1 UNCH 0.1500 + 20 H10 -9.4302 -2.2656 13.6141 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 13 1 + 3 1 14 1 + 4 2 3 1 + 5 2 15 1 + 6 3 4 1 + 7 3 12 2 + 8 4 5 1 + 9 4 16 1 + 10 5 6 2 + 11 5 10 1 + 12 6 7 1 + 13 6 17 1 + 14 7 8 2 + 15 7 18 1 + 16 8 9 1 + 17 8 11 1 + 18 9 10 2 + 19 9 19 1 + 20 10 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-(4-CHLOROPHENYL)-THIOSEMICARBAZIDE (ANTIBACTERIAL ACTIVIT +@MOLECULE +COTPEG + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.1160 0.6908 9.6405 O.2 1 CHGB -0.9000 + 2 O2 0.9445 2.4104 10.6840 O.3 1 CHGB -0.9000 + 3 O3 -0.9089 -0.1660 12.0973 O.2 1 CHGB -0.5700 + 4 O4 0.7478 2.7972 15.8180 O.2 1 CHGB -0.5700 + 5 O5 -0.4010 1.2263 16.8905 O.3 1 CHGB -0.6500 + 6 C1 0.2368 1.3526 10.6658 C.2 1 CHGB 0.9470 + 7 C2 -0.2198 0.8543 12.0435 C.2 1 CHGB 0.3620 + 8 C3 0.2018 1.6443 13.2603 C.3 1 CHGB 0.0610 + 9 C4 -0.3359 1.0116 14.5367 C.3 1 CHGB 0.0610 + 10 C5 0.0736 1.7838 15.7560 C.2 1 CHGB 0.6590 + 11 H5 -0.0624 1.8236 17.5882 H 1 CHGB 0.5000 + 12 H31 1.2966 1.6803 13.2906 H 1 CHGB 0.0000 + 13 H32 -0.1761 2.6679 13.1597 H 1 CHGB 0.0000 + 14 H41 -1.4310 0.9768 14.5055 H 1 CHGB 0.0000 + 15 H42 0.0434 -0.0120 14.6365 H 1 CHGB 0.0000 +@BOND + 1 1 6 2 + 2 2 6 1 + 3 3 7 2 + 4 4 10 2 + 5 5 10 1 + 6 5 11 1 + 7 6 7 1 + 8 7 8 1 + 9 8 9 1 + 10 8 12 1 + 11 8 13 1 + 12 9 10 1 + 13 9 14 1 + 14 9 15 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM HYDROGEN ALPHA-KETOGLUTARATE +@MOLECULE +COTRIM + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O11 -8.0525 -4.7451 8.6962 O.3 1 COTR -0.7500 + 2 O21 -10.6218 -3.5928 14.2765 O.3 1 COTR -0.6330 + 3 N11 -8.3634 -4.5724 9.9114 N.2 1 COTR 0.5710 + 4 N21 -9.4321 -3.9831 14.0195 N.2 1 COTR 0.8680 + 5 N31 -8.5254 -4.2151 14.8847 N.2 1 COTR -0.3860 + 6 C21 -9.6324 -4.1511 10.2675 C.2 1 COTR -0.0605 + 7 C31 -9.9895 -3.9565 11.6028 C.2 1 COTR -0.1500 + 8 C41 -9.0477 -4.1908 12.6112 C.2 1 COTR -0.0280 + 9 C51 -7.7606 -4.6172 12.2645 C.2 1 COTR -0.1500 + 10 C61 -7.4398 -4.8011 10.9179 C.2 1 COTR -0.0605 + 11 C71 -8.8510 -4.0293 16.2372 C.2 1 COTR 0.1790 + 12 C81 -8.6218 -2.7963 16.8569 C.2 1 COTR -0.1500 + 13 C91 -8.9071 -2.6222 18.2128 C.2 1 COTR -0.1500 + 14 C101 -9.4130 -3.6848 18.9600 C.2 1 COTR -0.1500 + 15 C111 -9.6306 -4.9214 18.3544 C.2 1 COTR -0.1500 + 16 C121 -9.3449 -5.0940 16.9985 C.2 1 COTR -0.1500 + 17 H21 -10.2865 -3.9973 9.4226 H 1 COTR 0.1500 + 18 H31 -10.9986 -3.6243 11.8401 H 1 COTR 0.1500 + 19 H51 -6.9980 -4.8109 13.0151 H 1 COTR 0.1500 + 20 H61 -6.4786 -5.1263 10.5487 H 1 COTR 0.1500 + 21 H81 -8.2247 -1.9641 16.2821 H 1 COTR 0.1500 + 22 H91 -8.7356 -1.6581 18.6848 H 1 COTR 0.1500 + 23 H101 -9.6378 -3.5490 20.0152 H 1 COTR 0.1500 + 24 H111 -10.0236 -5.7508 18.9369 H 1 COTR 0.1500 + 25 H121 -9.5142 -6.0618 16.5345 H 1 COTR 0.1500 +@BOND + 1 1 3 1 + 2 2 4 1 + 3 3 10 2 + 4 3 6 1 + 5 4 8 1 + 6 4 5 2 + 7 5 11 1 + 8 6 17 1 + 9 6 7 2 + 10 7 18 1 + 11 7 8 1 + 12 8 9 2 + 13 9 19 1 + 14 9 10 1 + 15 10 20 1 + 16 11 16 1 + 17 11 12 2 + 18 12 21 1 + 19 12 13 1 + 20 13 22 1 + 21 13 14 2 + 22 14 23 1 + 23 14 15 1 + 24 15 24 1 + 25 15 16 2 + 26 16 25 1 +@SUBSTRUCTURE + 1 COTR 1 +@COMMENT +COMMENT 4-(PHENYL-BETA-AZOXY)-PYRIDINE-N-OXIDE +@MOLECULE +COVHUQ + 17 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.9633 -2.6554 19.0299 C.3 1 UNCH 0.2300 + 2 C3 -8.9967 -3.9952 16.8763 C.2 1 UNCH 0.8520 + 3 O3 -10.0207 -4.6417 17.0475 O.2 1 UNCH -0.5700 + 4 S2 -8.5521 -2.6403 17.9049 S.3 1 UNCH -0.3710 + 5 S4 -7.8253 -4.3196 15.6047 S.3 1 UNCH -0.1410 + 6 S5 -8.8523 -5.5898 14.3586 S.3 1 UNCH 0.0000 + 7 H11 -9.8489 -1.8504 19.7608 H 1 UNCH 0.0000 + 8 H12 -10.8954 -2.4934 18.4817 H 1 UNCH 0.0000 + 9 H13 -10.0169 -3.6053 19.5689 H 1 UNCH 0.0000 + 10 S4B -9.9155 -4.3612 13.1013 S.3 1 UNCH -0.1410 + 11 C3B -8.7539 -4.0146 11.8266 C.2 1 UNCH 0.8520 + 12 O3B -7.7115 -4.6328 11.6611 O.2 1 UNCH -0.5700 + 13 S2B -9.2374 -2.6826 10.7858 S.3 1 UNCH -0.3710 + 14 C1B -7.8262 -2.6670 9.6608 C.3 1 UNCH 0.2300 + 15 H11B -7.9638 -1.8723 8.9226 H 1 UNCH 0.0000 + 16 H12B -6.8992 -2.4730 10.2074 H 1 UNCH 0.0000 + 17 H13B -7.7450 -3.6198 9.1304 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 7 1 + 3 1 8 1 + 4 1 9 1 + 5 2 3 2 + 6 2 4 1 + 7 2 5 1 + 8 5 6 1 + 9 6 10 1 + 10 10 11 1 + 11 11 12 2 + 12 11 13 1 + 13 13 14 1 + 14 14 15 1 + 15 14 16 1 + 16 14 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS((METHYLTHIO)-CARBONYL)-TRISULFANE (AT -10 DEG.C) +@MOLECULE +COVMAB + 32 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N2 -8.1665 -3.0748 13.2311 N.2 1 UNCH -0.6960 + 2 C1 -8.2264 -4.0658 14.0432 C.2 1 UNCH 0.3900 + 3 C3 -6.8605 -2.7562 12.6239 C.3 1 UNCH 0.2460 + 4 C4 -6.3575 -3.9247 11.7674 C.3 1 UNCH 0.0000 + 5 C5 -5.8375 -2.3724 13.7001 C.3 1 UNCH 0.0000 + 6 C6 -7.1022 -1.5414 11.7132 C.3 1 UNCH 0.0000 + 7 H11 -7.3865 -4.7151 14.3388 H 1 UNCH 0.0600 + 8 H41 -6.1242 -4.8052 12.3754 H 1 UNCH 0.0000 + 9 H42 -5.4454 -3.6516 11.2250 H 1 UNCH 0.0000 + 10 H43 -7.1110 -4.2265 11.0310 H 1 UNCH 0.0000 + 11 H51 -6.2208 -1.5691 14.3396 H 1 UNCH 0.0000 + 12 H52 -5.5928 -3.2188 14.3505 H 1 UNCH 0.0000 + 13 H53 -4.9010 -2.0267 13.2481 H 1 UNCH 0.0000 + 14 H61 -6.1799 -1.2269 11.2125 H 1 UNCH 0.0000 + 15 H62 -7.4831 -0.6881 12.2865 H 1 UNCH 0.0000 + 16 H63 -7.8454 -1.7694 10.9402 H 1 UNCH 0.0000 + 17 C1B -9.5416 -4.4016 14.6668 C.2 1 UNCH 0.3900 + 18 N2B -9.6015 -5.3926 15.4788 N.2 1 UNCH -0.6960 + 19 H11B -10.3815 -3.7522 14.3712 H 1 UNCH 0.0600 + 20 C3B -10.9075 -5.7112 16.0861 C.3 1 UNCH 0.2460 + 21 C4B -11.4105 -4.5427 16.9426 C.3 1 UNCH 0.0000 + 22 C5B -11.9305 -6.0950 15.0099 C.3 1 UNCH 0.0000 + 23 C6B -10.6658 -6.9260 16.9967 C.3 1 UNCH 0.0000 + 24 H41B -11.6438 -3.6622 16.3346 H 1 UNCH 0.0000 + 25 H42B -12.3226 -4.8158 17.4850 H 1 UNCH 0.0000 + 26 H43B -10.6570 -4.2409 17.6790 H 1 UNCH 0.0000 + 27 H51B -11.5472 -6.8983 14.3704 H 1 UNCH 0.0000 + 28 H52B -12.1752 -5.2486 14.3595 H 1 UNCH 0.0000 + 29 H53B -12.8670 -6.4407 15.4618 H 1 UNCH 0.0000 + 30 H61B -11.5881 -7.2405 17.4975 H 1 UNCH 0.0000 + 31 H62B -10.2849 -7.7793 16.4235 H 1 UNCH 0.0000 + 32 H63B -9.9226 -6.6980 17.7698 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 2 7 1 + 4 2 17 1 + 5 3 4 1 + 6 3 5 1 + 7 3 6 1 + 8 4 8 1 + 9 4 9 1 + 10 4 10 1 + 11 5 11 1 + 12 5 12 1 + 13 5 13 1 + 14 6 14 1 + 15 6 15 1 + 16 6 16 1 + 17 17 18 2 + 18 17 19 1 + 19 18 20 1 + 20 20 21 1 + 21 20 22 1 + 22 20 23 1 + 23 21 24 1 + 24 21 25 1 + 25 21 26 1 + 26 22 27 1 + 27 22 28 1 + 28 22 29 1 + 29 23 30 1 + 30 23 31 1 + 31 23 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N'-DI-T-BUTYLETHANE-DI-IMINE (AT 98 DEG.K) +@MOLECULE +COVXIU + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.8158 -4.0415 17.6460 C.2 1 COVX 0.1000 + 2 C2 -9.7901 -3.1938 17.2145 C.2 1 COVX -0.1500 + 3 C3 -9.7495 -2.7343 15.8954 C.2 1 COVX -0.1500 + 4 C4 -10.7149 -3.1701 14.9869 C.2 1 COVX -0.0090 + 5 C5 -11.7186 -4.0540 15.3889 C.2 1 COVX -0.1500 + 6 C6 -11.7478 -4.5049 16.7112 C.2 1 COVX -0.1500 + 7 N7 -10.7812 -4.5878 18.9345 N.3 1 COVX -0.9000 + 8 S8 -10.6979 -2.5767 13.3134 S.3 1 COVX 1.4470 + 9 O9 -12.0766 -2.2783 12.9746 O.3 1 COVX -0.6500 + 10 O10 -9.6835 -1.5528 13.1755 O.3 1 COVX -0.6500 + 11 N11 -10.2897 -3.9118 12.4164 N.3 1 COVX -0.7570 + 12 C12 -8.9437 -4.2448 12.3394 C.2 1 COVX 0.8190 + 13 N13 -8.5932 -4.7506 11.1537 N.2 1 COVX -0.6200 + 14 C14 -7.3356 -5.2277 11.0668 C.2 1 COVX 0.1665 + 15 C15 -6.4720 -5.2383 12.1469 C.2 1 COVX -0.1500 + 16 C16 -6.9626 -4.7387 13.3388 C.2 1 COVX 0.1665 + 17 N17 -8.2137 -4.2552 13.4539 N.2 1 COVX -0.6200 + 18 C18 -6.8927 -5.7687 9.7407 C.3 1 COVX 0.1435 + 19 C19 -6.1059 -4.7306 14.5684 C.3 1 COVX 0.1435 + 20 H2 -9.0118 -2.8808 17.9054 H 1 COVX 0.1500 + 21 H3 -8.9544 -2.0623 15.5814 H 1 COVX 0.1500 + 22 H5 -12.4675 -4.4013 14.6816 H 1 COVX 0.1500 + 23 H6 -12.5105 -5.2202 17.0080 H 1 COVX 0.1500 + 24 H71 -10.3155 -3.9972 19.6165 H 1 COVX 0.4000 + 25 H72 -11.6836 -4.9162 19.2640 H 1 COVX 0.4000 + 26 H11 -10.7674 -3.9697 11.5256 H 1 COVX 0.4200 + 27 H15 -5.4644 -5.6274 12.0660 H 1 COVX 0.1500 + 28 H181 -7.6895 -5.6753 8.9958 H 1 COVX 0.0000 + 29 H182 -6.6338 -6.8281 9.8320 H 1 COVX 0.0000 + 30 H183 -6.0211 -5.2149 9.3781 H 1 COVX 0.0000 + 31 H191 -5.8208 -5.7525 14.8372 H 1 COVX 0.0000 + 32 H192 -6.6436 -4.2927 15.4157 H 1 COVX 0.0000 + 33 H193 -5.2021 -4.1380 14.3961 H 1 COVX 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 20 1 + 6 3 4 2 + 7 3 21 1 + 8 4 5 1 + 9 4 8 1 + 10 5 6 2 + 11 5 22 1 + 12 6 23 1 + 13 7 24 1 + 14 7 25 1 + 15 8 9 1 + 16 8 10 1 + 17 8 11 1 + 18 11 12 am + 19 11 26 1 + 20 12 13 2 + 21 12 17 am + 22 13 14 1 + 23 14 15 2 + 24 14 18 1 + 25 15 16 1 + 26 15 27 1 + 27 16 17 2 + 28 16 19 1 + 29 18 28 1 + 30 18 29 1 + 31 18 30 1 + 32 19 31 1 + 33 19 32 1 + 34 19 33 1 +@SUBSTRUCTURE + 1 COVX 1 +@COMMENT +COMMENT N'-(4,6-DIMETHYL-2-PYRIMIDINYL)-SULFANILAMIDE METHANOL SOLV +@MOLECULE +COWTIR + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -6.8484 -5.8109 14.4133 P 1 UNCH 1.1712 + 2 O1 -6.1732 -4.5857 13.5935 O.3 1 UNCH -0.7712 + 3 O2 -6.6922 -7.0578 13.6075 O.3 1 UNCH -0.9500 + 4 O3 -6.3880 -5.6282 15.8428 O.3 1 UNCH -0.9500 + 5 O12 -7.9155 -2.6917 13.6066 O.3 1 UNCH -0.5325 + 6 N1 -8.7816 -4.3569 15.7970 N.3 1 UNCH -0.9060 + 7 C1 -8.6926 -5.2646 14.5582 C.3 1 UNCH 0.6465 + 8 C2 -10.0374 -4.3320 16.5612 C.3 1 UNCH 0.5030 + 9 C3 -10.0420 -3.0719 17.4188 C.3 1 UNCH 0.0000 + 10 C4 -10.1450 -5.5806 17.4274 C.3 1 UNCH 0.0000 + 11 C11 -9.2983 -4.6241 13.3368 C.2 1 UNCH -0.1435 + 12 C12 -8.9023 -3.3482 12.9246 C.2 1 UNCH 0.0825 + 13 C13 -9.4930 -2.7114 11.8408 C.2 1 UNCH -0.1500 + 14 C14 -10.4874 -3.3713 11.1226 C.2 1 UNCH -0.1500 + 15 C15 -10.8813 -4.6568 11.4959 C.2 1 UNCH -0.1500 + 16 C16 -10.2916 -5.2815 12.5982 C.2 1 UNCH -0.1500 + 17 H1 -5.2343 -4.8457 13.4741 H 1 UNCH 0.5000 + 18 H2 -9.2082 -6.1928 14.8251 H 1 UNCH 0.0000 + 19 H3 -8.4730 -3.4321 15.4620 H 1 UNCH 0.4500 + 20 H4 -7.9505 -4.6990 16.3456 H 1 UNCH 0.4500 + 21 H5 -10.8639 -4.2859 15.8440 H 1 UNCH 0.0000 + 22 H6 -10.9679 -3.0032 17.9996 H 1 UNCH 0.0000 + 23 H7 -9.9738 -2.1734 16.7956 H 1 UNCH 0.0000 + 24 H8 -9.2010 -3.0604 18.1211 H 1 UNCH 0.0000 + 25 H9 -11.0582 -5.5503 18.0316 H 1 UNCH 0.0000 + 26 H10 -10.1865 -6.4907 16.8214 H 1 UNCH 0.0000 + 27 H11 -9.2938 -5.6695 18.1116 H 1 UNCH 0.0000 + 28 H12 -7.0864 -3.2092 13.4271 H 1 UNCH 0.4500 + 29 H13 -9.1727 -1.7160 11.5466 H 1 UNCH 0.1500 + 30 H14 -10.9467 -2.8897 10.2628 H 1 UNCH 0.1500 + 31 H15 -11.6454 -5.1763 10.9217 H 1 UNCH 0.1500 + 32 H16 -10.6097 -6.2883 12.8638 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 7 1 + 5 2 17 1 + 6 5 12 1 + 7 5 28 1 + 8 6 7 1 + 9 6 8 1 + 10 6 19 1 + 11 6 20 1 + 12 7 11 1 + 13 7 18 1 + 14 8 9 1 + 15 8 10 1 + 16 8 21 1 + 17 9 22 1 + 18 9 23 1 + 19 9 24 1 + 20 10 25 1 + 21 10 26 1 + 22 10 27 1 + 23 11 12 2 + 24 11 16 1 + 25 12 13 1 + 26 13 14 2 + 27 13 29 1 + 28 14 15 1 + 29 14 30 1 + 30 15 16 2 + 31 15 31 1 + 32 16 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ALPHA-(ISOPROPYLAMINO)SALICYLPHOSPHONIC ACID HEMIHYDRATE +@MOLECULE +COXBAS + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -9.0816 -4.9316 14.0833 P 1 COXB 1.2424 + 2 S1 -7.1441 -3.6364 15.9660 S.3 1 COXB -0.4600 + 3 S2 -8.8178 -1.1620 16.1611 S.3 1 COXB -0.4600 + 4 S3 -8.0466 -2.1911 13.4517 S.3 1 COXB -0.4600 + 5 O1 -10.3871 -4.5386 14.7148 O.3 1 COXB -0.7000 + 6 O2 -9.2213 -5.1837 12.4893 O.3 1 COXB -0.5512 + 7 O3 -8.5645 -6.3715 14.6117 O.3 1 COXB -0.5512 + 8 C1 -7.7189 -3.7745 14.2591 C.3 1 COXB 0.4600 + 9 C2 -8.5659 -2.8448 16.7477 C.3 1 COXB 0.4600 + 10 C3 -9.3689 -1.5306 14.4880 C.3 1 COXB 0.4600 + 11 C4 -10.3738 -5.8791 12.0531 C.3 1 COXB 0.2800 + 12 C5 -7.3890 -6.9470 14.0788 C.3 1 COXB 0.2800 + 13 H1 -6.8778 -4.1996 13.7039 H 1 COXB 0.0000 + 14 H21 -8.3411 -2.7792 17.8168 H 1 COXB 0.0000 + 15 H22 -9.4748 -3.4422 16.6687 H 1 COXB 0.0000 + 16 H32 -10.2593 -2.1597 14.4852 H 1 COXB 0.0000 + 17 H41 -10.2645 -6.1048 10.9894 H 1 COXB 0.0000 + 18 H42 -11.2603 -5.2551 12.1931 H 1 COXB 0.0000 + 19 H43 -10.4858 -6.8168 12.6043 H 1 COXB 0.0000 + 20 H51 -7.3924 -8.0162 14.3056 H 1 COXB 0.0000 + 21 H52 -6.5089 -6.4962 14.5430 H 1 COXB 0.0000 + 22 H53 -7.3415 -6.8211 12.9944 H 1 COXB 0.0000 + 23 H2 -9.6736 -0.5805 14.0383 H 1 COXB 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 5 1 + 5 2 9 1 + 6 2 8 1 + 7 3 10 1 + 8 3 9 1 + 9 4 10 1 + 10 4 8 1 + 11 6 11 1 + 12 7 12 1 + 13 8 13 1 + 14 9 15 1 + 15 9 14 1 + 16 10 23 1 + 17 10 16 1 + 18 11 19 1 + 19 11 18 1 + 20 11 17 1 + 21 12 22 1 + 22 12 21 1 + 23 12 20 1 +@SUBSTRUCTURE + 1 COXB 1 +@COMMENT +COMMENT 2-DIMETHOXYPHOSPHORYL-1,3,5-TRITHIANE +@MOLECULE +COXZEU + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.6966 -6.0052 13.0219 S.3 1 COXZ -0.3710 + 2 S2 -6.6464 -5.9781 15.1873 S.2 1 COXZ -0.3800 + 3 N1 -8.5594 -4.0917 14.9105 N.2 1 COXZ -0.6610 + 4 N2 -7.4023 -2.7284 13.3142 N.3 1 COXZ -0.8500 + 5 N3 -8.7779 -1.8201 14.7890 N.3 1 COXZ -0.8500 + 6 C1 -8.2414 -2.9799 14.3454 C.2 1 COXZ 0.5500 + 7 C2 -7.9730 -5.2447 14.4544 C.2 1 COXZ 0.7320 + 8 C3 -10.4375 -5.8864 13.4878 C.3 1 COXZ 0.2300 + 9 H1 -10.6031 -6.3257 14.4753 H 1 COXZ 0.0000 + 10 H2 -11.0413 -6.4347 12.7596 H 1 COXZ 0.0000 + 11 H3 -10.7689 -4.8447 13.4918 H 1 COXZ 0.0000 + 12 H4 -7.1324 -3.5347 12.7601 H 1 COXZ 0.4000 + 13 H5 -8.0839 -1.0879 14.8903 H 1 COXZ 0.4000 + 14 H6 -7.7253 -1.9753 12.7164 H 1 COXZ 0.4000 + 15 H7 -9.2631 -1.9658 15.6700 H 1 COXZ 0.4000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 2 7 2 + 4 3 7 1 + 5 3 6 2 + 6 4 14 1 + 7 4 12 1 + 8 4 6 am + 9 5 15 1 + 10 5 13 1 + 11 5 6 am + 12 8 11 1 + 13 8 10 1 + 14 8 9 1 +@SUBSTRUCTURE + 1 COXZ 1 +@COMMENT +COMMENT TRANS-GUANIDINO-DITHIOFORMIC ACID S-METHYL ESTER +@MOLECULE +COYMOS + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.2993 -7.2391 15.0374 O.2 1 COYK -0.5700 + 2 O2 -11.3692 -7.2079 13.0262 O.2 1 COYK -0.5700 + 3 N1 -7.6642 -6.2966 13.0768 N.3 1 COYK -0.8000 + 4 N2 -11.1488 -5.1613 12.0754 N.3 1 COYK -0.8000 + 5 N3 -9.7851 -4.2222 14.3239 N.3 1 COYK -0.4380 + 6 C1 -8.5514 -6.4896 14.1009 C.2 1 COYK 0.6300 + 7 C2 -10.8323 -6.1083 13.0132 C.2 1 COYK 0.6300 + 8 C3 -10.3621 -5.1148 15.3212 C.3 1 COYK -0.0310 + 9 C4 -9.8176 -5.7013 14.0361 C.3 1 COYK 0.1690 + 10 C5 -8.5670 -3.5400 14.5730 C.2 1 COYK 0.1000 + 11 C6 -8.3306 -2.3883 13.8030 C.2 1 COYK -0.1500 + 12 C7 -7.1646 -1.6340 13.9574 C.2 1 COYK -0.1500 + 13 C8 -6.2112 -2.0168 14.8946 C.2 1 COYK -0.1500 + 14 C9 -6.4289 -3.1474 15.6766 C.2 1 COYK -0.1500 + 15 C10 -7.5988 -3.8997 15.5202 C.2 1 COYK -0.1500 + 16 H11 -6.7470 -6.7081 13.1860 H 1 COYK 0.3700 + 17 H21 -7.7611 -5.5097 12.4493 H 1 COYK 0.3700 + 18 H12 -10.9026 -4.1973 12.2664 H 1 COYK 0.3700 + 19 H22 -11.9556 -5.3488 11.4955 H 1 COYK 0.3700 + 20 H13 -11.4339 -5.0049 15.4265 H 1 COYK 0.1000 + 21 H23 -9.8244 -5.2679 16.2450 H 1 COYK 0.1000 + 22 H6 -9.0703 -2.0683 13.0726 H 1 COYK 0.1500 + 23 H7 -7.0066 -0.7465 13.3503 H 1 COYK 0.1500 + 24 H8 -5.3035 -1.4324 15.0215 H 1 COYK 0.1500 + 25 H9 -5.6897 -3.4480 16.4154 H 1 COYK 0.1500 + 26 H10 -7.7201 -4.7720 16.1566 H 1 COYK 0.1500 +@BOND + 1 1 6 2 + 2 2 7 2 + 3 3 6 am + 4 3 16 1 + 5 3 17 1 + 6 4 7 am + 7 4 18 1 + 8 4 19 1 + 9 5 8 1 + 10 5 9 1 + 11 5 10 1 + 12 6 9 1 + 13 7 9 1 + 14 8 9 1 + 15 8 20 1 + 16 8 21 1 + 17 10 11 2 + 18 10 15 1 + 19 11 12 1 + 20 11 22 1 + 21 12 13 2 + 22 12 23 1 + 23 13 14 1 + 24 13 24 1 + 25 14 15 2 + 26 14 25 1 + 27 15 26 1 +@SUBSTRUCTURE + 1 COYK 1 +@COMMENT +COMMENT 1-PHENYL-2,2-AZIRIDINEDICARBOXAMIDE (MONOCLINIC FORM) +@MOLECULE +COYNAF + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N2 -7.2187 -1.6103 15.1818 N.3 1 UNCH -0.7290 + 2 N1 -7.8880 -2.7932 14.8402 N.3 1 UNCH -0.1110 + 3 O1 -9.7191 -2.6666 16.3067 O.2 1 UNCH -0.5700 + 4 O2 -6.3365 -3.7240 13.3414 O.2 1 UNCH -0.5700 + 5 C1 -9.0698 -3.1917 15.4213 C.2 1 UNCH 0.5438 + 6 C2 -9.4068 -4.4673 14.7856 C.2 1 UNCH 0.0862 + 7 C3 -10.4977 -5.2934 14.9739 C.2 1 UNCH -0.1500 + 8 C4 -10.5430 -6.4724 14.2228 C.2 1 UNCH -0.1500 + 9 C5 -9.5101 -6.7952 13.3174 C.2 1 UNCH -0.1500 + 10 C6 -8.4128 -5.9451 13.1462 C.2 1 UNCH -0.1500 + 11 C7 -8.3911 -4.7847 13.8953 C.2 1 UNCH 0.0862 + 12 C8 -7.3908 -3.7165 13.9494 C.2 1 UNCH 0.5438 + 13 H5 -6.2149 -1.7925 15.1118 H 1 UNCH 0.3600 + 14 H6 -7.4175 -1.4165 16.1660 H 1 UNCH 0.3600 + 15 H1 -11.2843 -5.0355 15.6759 H 1 UNCH 0.1500 + 16 H2 -11.3855 -7.1526 14.3379 H 1 UNCH 0.1500 + 17 H3 -9.5695 -7.7203 12.7459 H 1 UNCH 0.1500 + 18 H4 -7.6104 -6.1839 12.4553 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 13 1 + 3 1 14 1 + 4 2 5 am + 5 2 12 am + 6 3 5 2 + 7 4 12 2 + 8 5 6 1 + 9 6 7 2 + 10 6 11 1 + 11 7 8 1 + 12 7 15 1 + 13 8 9 2 + 14 8 16 1 + 15 9 10 1 + 16 9 17 1 + 17 10 11 2 + 18 10 18 1 + 19 11 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-AMINOPHTHALIMIDE +@MOLECULE +COYVIV + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S11 -10.0967 -4.9462 16.7055 S.3 1 UNCH -0.0800 + 2 C21 -10.7713 -3.3661 16.7481 C.2 1 UNCH 0.4621 + 3 N31 -10.0089 -2.4472 16.1975 N.2 1 UNCH -0.3381 + 4 N41 -8.8349 -2.9667 15.6967 N.2 1 UNCH -0.3381 + 5 C51 -8.7544 -4.2693 15.8776 C.2 1 UNCH 0.3251 + 6 C61 -7.6535 -5.1045 15.4045 C.2 1 UNCH 0.0530 + 7 C71 -6.8352 -5.7562 16.3451 C.2 1 UNCH -0.1500 + 8 C81 -5.7436 -6.5268 15.9365 C.2 1 UNCH -0.1500 + 9 C91 -5.4485 -6.6571 14.5823 C.2 1 UNCH -0.1500 + 10 C101 -6.2439 -6.0181 13.6324 C.2 1 UNCH -0.1500 + 11 C111 -7.3381 -5.2393 14.0407 C.2 1 UNCH -0.0090 + 12 N121 -11.9800 -3.1298 17.2953 N.3 1 UNCH -0.8840 + 13 S131 -8.3627 -4.5017 12.7813 S.3 1 UNCH 1.4470 + 14 O141 -9.7376 -4.8018 13.1126 O.3 1 UNCH -0.6500 + 15 O151 -7.8096 -4.8664 11.4940 O.3 1 UNCH -0.6500 + 16 N161 -8.1221 -2.8528 12.9860 N.3 1 UNCH -0.9137 + 17 C171 -6.7780 -2.3109 12.8231 C.3 1 UNCH 0.3557 + 18 H1 -12.6307 -3.9071 17.3117 H 1 UNCH 0.4000 + 19 H2 -12.4144 -2.2592 17.0053 H 1 UNCH 0.4000 + 20 H3 -7.0346 -5.6583 17.4116 H 1 UNCH 0.1500 + 21 H4 -5.1217 -7.0238 16.6781 H 1 UNCH 0.1500 + 22 H5 -4.6012 -7.2611 14.2646 H 1 UNCH 0.1500 + 23 H6 -6.0088 -6.1406 12.5763 H 1 UNCH 0.1500 + 24 H7 -8.6729 -2.4737 13.7668 H 1 UNCH 0.4200 + 25 H8 -6.2891 -2.7068 11.9296 H 1 UNCH 0.0000 + 26 H9 -6.1690 -2.5213 13.7060 H 1 UNCH 0.0000 + 27 H10 -6.8472 -1.2247 12.7130 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 12 am + 5 3 4 1 + 6 4 5 2 + 7 5 6 1 + 8 6 7 2 + 9 6 11 1 + 10 7 8 1 + 11 7 20 1 + 12 8 9 2 + 13 8 21 1 + 14 9 10 1 + 15 9 22 1 + 16 10 11 2 + 17 10 23 1 + 18 11 13 1 + 19 12 18 1 + 20 12 19 1 + 21 13 14 1 + 22 13 15 1 + 23 13 16 1 + 24 16 17 1 + 25 16 24 1 + 26 17 25 1 + 27 17 26 1 + 28 17 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(5-AMINO-1,3,4-THIADIAZOL-2-YL)-N-METHYL-BENZENESULFONAMI +@MOLECULE +CUBTUO + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -10.6191 -2.8339 13.7075 N.2 1 CUBT -0.7000 + 2 N2 -12.6178 -2.1111 13.8978 N.3 1 CUBT -0.7000 + 3 C1 -8.8833 -4.4704 15.3274 C.2 1 CUBT -0.1435 + 4 C2 -8.6192 -5.5726 14.4741 C.2 1 CUBT -0.1435 + 5 C3 -7.2973 -5.7862 14.0154 C.2 1 CUBT -0.1435 + 6 C4 -6.2841 -4.8801 14.3654 C.2 1 CUBT -0.1500 + 7 C5 -6.5531 -3.7888 15.1831 C.2 1 CUBT -0.1500 + 8 C6 -7.8409 -3.5870 15.6645 C.2 1 CUBT -0.1500 + 9 C7 -10.2682 -4.1628 15.8588 C.3 1 CUBT 0.3115 + 10 C8 -11.0747 -3.3196 14.9334 C.2 1 CUBT 0.1820 + 11 C9 -11.5527 -2.1085 13.0925 C.2 1 CUBT 0.6500 + 12 C10 -12.3610 -2.8437 15.0361 C.2 1 CUBT 0.2000 + 13 C11 -9.7130 -6.5527 14.1200 C.3 1 CUBT 0.1435 + 14 C12 -6.9283 -6.9644 13.1499 C.3 1 CUBT 0.1435 + 15 H1 -5.2643 -5.0325 14.0138 H 1 CUBT 0.1500 + 16 H2 -5.7508 -3.1074 15.4579 H 1 CUBT 0.1500 + 17 H3 -9.6861 -3.0169 13.3349 H 1 CUBT 0.4500 + 18 H4 -11.4648 -1.6157 12.1312 H 1 CUBT 0.1500 + 19 H5 -13.4925 -1.6337 13.6892 H 1 CUBT 0.4500 + 20 H6 -13.1364 -2.9310 15.7780 H 1 CUBT 0.1500 + 21 H7 -10.8153 -5.0872 16.0744 H 1 CUBT 0.0000 + 22 H8 -10.1882 -3.6337 16.8169 H 1 CUBT 0.0000 + 23 H9 -10.6637 -6.0413 13.9429 H 1 CUBT 0.0000 + 24 H10 -9.4999 -7.0976 13.1962 H 1 CUBT 0.0000 + 25 H11 -9.8391 -7.2763 14.9313 H 1 CUBT 0.0000 + 26 H12 -7.2546 -7.8995 13.6163 H 1 CUBT 0.0000 + 27 H13 -7.3860 -6.8641 12.1608 H 1 CUBT 0.0000 + 28 H14 -5.8444 -7.0374 13.0092 H 1 CUBT 0.0000 + 29 H15 -8.0209 -2.7347 16.3181 H 1 CUBT 0.1500 +@BOND + 1 1 10 1 + 2 1 11 2 + 3 1 17 1 + 4 2 11 am + 5 2 12 1 + 6 2 19 1 + 7 3 4 2 + 8 3 8 1 + 9 3 9 1 + 10 4 5 1 + 11 4 13 1 + 12 5 6 2 + 13 5 14 1 + 14 6 7 1 + 15 6 15 1 + 16 7 8 2 + 17 7 16 1 + 18 8 29 1 + 19 9 10 1 + 20 9 21 1 + 21 9 22 1 + 22 10 12 2 + 23 11 18 1 + 24 12 20 1 + 25 13 23 1 + 26 13 24 1 + 27 13 25 1 + 28 14 26 1 + 29 14 27 1 + 30 14 28 1 +@SUBSTRUCTURE + 1 CUBT 1 +@COMMENT +COMMENT 4(5)-(2,3-DIMETHYLBENZYL)-IMIDAZOLE HYDROCHLORIDE MONOHYDRA +@MOLECULE +CUCDAF + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.7839 -3.1845 11.6432 O.3 1 CUCD -0.6800 + 2 O2 -6.3716 -3.0543 13.4209 O.3 1 CUCD -0.2960 + 3 O3 -6.6777 -4.8767 16.3435 O.2 1 CUCD -0.5700 + 4 C1 -8.5001 -4.1246 12.6767 C.3 1 CUCD 0.5185 + 5 C2 -6.9972 -4.1733 12.7749 C.3 1 CUCD -0.0470 + 6 C3 -6.3252 -4.3315 14.0971 C.3 1 CUCD 0.0480 + 7 C4 -7.1495 -4.4178 15.3120 C.2 1 CUCD 0.4838 + 8 C5 -9.1890 -3.6509 16.4484 C.2 1 CUCD -0.1500 + 9 C6 -10.4788 -3.1416 16.4581 C.2 1 CUCD -0.1500 + 10 C7 -11.1335 -2.9109 15.2534 C.2 1 CUCD -0.1500 + 11 C8 -10.5229 -3.2026 14.0163 C.2 1 CUCD -0.1435 + 12 C9 -9.1965 -3.7197 13.9862 C.2 1 CUCD -0.1435 + 13 C10 -8.5492 -3.9277 15.2312 C.2 1 CUCD 0.0862 + 14 C11 -9.0002 -5.5063 12.2280 C.3 1 CUCD 0.0000 + 15 C12 -11.3279 -2.8932 12.7775 C.3 1 CUCD 0.1435 + 16 H2 -6.5155 -4.5582 11.8854 H 1 CUCD 0.1000 + 17 H3 -5.3692 -4.8391 14.1298 H 1 CUCD 0.1000 + 18 H5 -8.6742 -3.8196 17.3928 H 1 CUCD 0.1500 + 19 H6 -10.9711 -2.9171 17.4009 H 1 CUCD 0.1500 + 20 H7 -12.1422 -2.5003 15.2828 H 1 CUCD 0.1500 + 21 H101 -8.4657 -2.3232 11.9710 H 1 CUCD 0.4000 + 22 H111 -10.0843 -5.5305 12.0835 H 1 CUCD 0.0000 + 23 H112 -8.5565 -5.7871 11.2652 H 1 CUCD 0.0000 + 24 H113 -8.7423 -6.2831 12.9571 H 1 CUCD 0.0000 + 25 H121 -10.9658 -1.9701 12.3146 H 1 CUCD 0.0000 + 26 H122 -11.2951 -3.7104 12.0545 H 1 CUCD 0.0000 + 27 H123 -12.3868 -2.7458 13.0193 H 1 CUCD 0.0000 +@BOND + 1 1 21 1 + 2 1 4 1 + 3 2 6 1 + 4 2 5 1 + 5 3 7 2 + 6 4 14 1 + 7 4 12 1 + 8 4 5 1 + 9 5 16 1 + 10 5 6 1 + 11 6 17 1 + 12 6 7 1 + 13 7 13 1 + 14 8 18 1 + 15 8 13 1 + 16 8 9 2 + 17 9 19 1 + 18 9 10 1 + 19 10 20 1 + 20 10 11 2 + 21 11 15 1 + 22 11 12 1 + 23 12 13 2 + 24 14 24 1 + 25 14 23 1 + 26 14 22 1 + 27 15 27 1 + 28 15 26 1 + 29 15 25 1 +@SUBSTRUCTURE + 1 CUCD 1 +@COMMENT +COMMENT 4,5-DIMETHYL-2,3-EPOXY-4-HYDROXY-1-OXO-1,2,3,4-TETRAHYDRO-N +@MOLECULE +CUCHOX + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -7.2906 -6.5785 14.6543 O.3 1 UNCH -0.6800 + 2 C10 -10.4237 -2.3170 12.5584 C.3 1 UNCH 0.0610 + 3 O3 -7.9036 -2.4068 14.6100 O.2 1 UNCH -0.5700 + 4 C2 -9.9230 -5.3344 12.6592 C.2 1 UNCH 0.5090 + 5 O4 -11.3915 -2.7537 14.7114 O.2 1 UNCH -0.5700 + 6 C1 -10.0047 -4.4735 13.8697 C.3 1 UNCH 0.0000 + 7 C3 -8.6632 -6.1598 12.6744 C.3 1 UNCH 0.0610 + 8 C7 -8.0775 -3.4254 15.2674 C.2 1 UNCH 0.5090 + 9 C4 -7.7914 -5.5529 13.7976 C.3 1 UNCH 0.3750 + 10 C5 -8.6856 -4.6262 14.6187 C.3 1 UNCH -0.0950 + 11 C9 -10.6720 -3.1364 13.7935 C.2 1 UNCH 0.5090 + 12 C6 -9.9691 -5.1807 15.2172 C.3 1 UNCH -0.2000 + 13 C11 -6.5793 -4.8439 13.1904 C.3 1 UNCH 0.0000 + 14 O1 -10.7991 -5.3858 11.8121 O.2 1 UNCH -0.5700 + 15 C8 -7.7112 -3.5557 16.7164 C.3 1 UNCH 0.0610 + 16 H2 -8.0205 -7.1567 14.9333 H 1 UNCH 0.4000 + 17 H61 -10.4158 -4.6738 16.0687 H 1 UNCH 0.1000 + 18 H62 -10.1427 -6.2506 15.2401 H 1 UNCH 0.1000 + 19 H31 -8.9305 -7.2014 12.8800 H 1 UNCH 0.0000 + 20 H32 -8.1845 -6.1003 11.6922 H 1 UNCH 0.0000 + 21 H111 -5.9131 -4.4562 13.9695 H 1 UNCH 0.0000 + 22 H112 -5.9771 -5.5445 12.6001 H 1 UNCH 0.0000 + 23 H113 -6.8766 -4.0123 12.5430 H 1 UNCH 0.0000 + 24 H101 -10.4912 -1.2552 12.8111 H 1 UNCH 0.0000 + 25 H102 -11.1737 -2.5598 11.8021 H 1 UNCH 0.0000 + 26 H103 -9.4228 -2.5090 12.1631 H 1 UNCH 0.0000 + 27 H81 -6.9100 -2.8500 16.9521 H 1 UNCH 0.0000 + 28 H82 -7.3509 -4.5661 16.9268 H 1 UNCH 0.0000 + 29 H83 -8.5840 -3.3359 17.3356 H 1 UNCH 0.0000 +@BOND + 1 1 9 1 + 2 1 16 1 + 3 2 11 1 + 4 2 24 1 + 5 2 25 1 + 6 2 26 1 + 7 3 8 2 + 8 4 6 1 + 9 4 7 1 + 10 4 14 2 + 11 5 11 2 + 12 6 10 1 + 13 6 11 1 + 14 6 12 1 + 15 7 9 1 + 16 7 19 1 + 17 7 20 1 + 18 8 10 1 + 19 8 15 1 + 20 9 10 1 + 21 9 13 1 + 22 10 12 1 + 23 12 17 1 + 24 12 18 1 + 25 13 21 1 + 26 13 22 1 + 27 13 23 1 + 28 15 27 1 + 29 15 28 1 + 30 15 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1ALPHA,4BETA,5ALPHA)-1,5-DIACETYL-4-HYDROXY-4-METHYLBICYCL +@MOLECULE +CUCHUD + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.5310 -4.6799 13.8457 S.3 1 UNCH -0.1575 + 2 C2 -8.6857 -2.9513 13.9657 C.2 1 UNCH -0.0956 + 3 C3 -8.3376 -2.0110 14.9187 C.2 1 UNCH 0.3062 + 4 N4 -8.7063 -0.7349 14.5195 N.2 1 UNCH -0.5653 + 5 C5 -9.2745 -0.9021 13.3473 C.2 1 UNCH 0.0365 + 6 N6 -9.2826 -2.2182 12.9665 N.3 1 UNCH 0.0476 + 7 C7 -9.1761 -5.1791 15.4425 C.2 1 UNCH 0.4115 + 8 N8 -10.1265 -4.3815 15.9980 N.2 1 UNCH -0.6200 + 9 C9 -10.5989 -4.7323 17.2135 C.2 1 UNCH 0.1600 + 10 C10 -10.1809 -5.8547 17.9079 C.2 1 UNCH -0.1500 + 11 C11 -9.2193 -6.6737 17.3245 C.2 1 UNCH -0.1500 + 12 C12 -8.7081 -6.3361 16.0739 C.2 1 UNCH 0.0825 + 13 N13 -7.6603 -2.1988 16.1787 N.2 1 UNCH 0.9610 + 14 O14 -6.8354 -3.1225 16.2524 O.3 1 UNCH -0.5200 + 15 O15 -7.9334 -1.4110 17.0966 O.2 1 UNCH -0.5200 + 16 C16 -9.8518 -2.7062 11.7323 C.3 1 UNCH 0.2556 + 17 O17 -7.7635 -7.1338 15.4894 O.3 1 UNCH -0.5325 + 18 H5 -9.6941 -0.1118 12.7367 H 1 UNCH 0.1500 + 19 H9 -11.3464 -4.0625 17.6305 H 1 UNCH 0.1500 + 20 H10 -10.5954 -6.0854 18.8834 H 1 UNCH 0.1500 + 21 H11 -8.8833 -7.5604 17.8523 H 1 UNCH 0.1500 + 22 H161 -9.0667 -3.2026 11.1564 H 1 UNCH 0.0000 + 23 H162 -10.6627 -3.3993 11.9701 H 1 UNCH 0.0000 + 24 H163 -10.2488 -1.8662 11.1559 H 1 UNCH 0.0000 + 25 H17 -7.4542 -7.7895 16.1354 H 1 UNCH 0.4500 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 2 3 2 + 4 2 6 1 + 5 3 4 1 + 6 3 13 1 + 7 4 5 2 + 8 5 6 am + 9 5 18 1 + 10 6 16 1 + 11 7 8 2 + 12 7 12 1 + 13 8 9 1 + 14 9 10 2 + 15 9 19 1 + 16 10 11 1 + 17 10 20 1 + 18 11 12 2 + 19 11 21 1 + 20 12 17 1 + 21 13 14 1 + 22 13 15 2 + 23 16 22 1 + 24 16 23 1 + 25 16 24 1 + 26 17 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-(3'-HYDROXYPYRIDYL-2'-THIO)-4-NITRO-1-METHYLIMIDAZOLE (AT +@MOLECULE +CUDJAM + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -6.6070 -3.0047 11.7942 O.2 1 UNCH -0.5700 + 2 O2 -10.4307 -7.0939 13.7275 O.3 1 UNCH -0.3370 + 3 O3 -9.2187 -2.5202 17.0680 O.3 1 UNCH -0.3370 + 4 N1 -8.6920 -5.0189 13.6910 N.3 1 UNCH -0.3880 + 5 N2 -8.8996 -3.5352 16.1580 N.2 1 UNCH -0.5130 + 6 N3 -10.6838 -6.0516 14.6291 N.2 1 UNCH -0.5130 + 7 N4 -6.6364 -2.9570 14.0701 N.3 1 UNCH -0.8000 + 8 C1 -9.9678 -3.9729 15.5504 C.2 1 UNCH 0.3890 + 9 C2 -9.7914 -5.1071 14.5343 C.2 1 UNCH 0.5000 + 10 C3 -8.8506 -5.1344 12.2502 C.3 1 UNCH -0.0310 + 11 C4 -8.5398 -3.7993 12.8905 C.3 1 UNCH 0.0690 + 12 C5 -11.3702 -3.4733 15.7707 C.3 1 UNCH 0.0610 + 13 C6 -7.1790 -3.2297 12.8504 C.2 1 UNCH 0.6300 + 14 H2 -11.0980 -7.7588 13.9794 H 1 UNCH 0.4000 + 15 H3 -8.3725 -2.3634 17.5280 H 1 UNCH 0.4000 + 16 H14 -5.6719 -2.6619 14.1134 H 1 UNCH 0.3700 + 17 H24 -7.1024 -3.2605 14.9215 H 1 UNCH 0.3700 + 18 H13 -9.8555 -5.3170 11.8976 H 1 UNCH 0.1000 + 19 H23 -8.0513 -5.6855 11.7755 H 1 UNCH 0.1000 + 20 H4 -9.3505 -3.0819 12.9306 H 1 UNCH 0.1000 + 21 H15 -12.0031 -3.7115 14.9114 H 1 UNCH 0.0000 + 22 H25 -11.7837 -3.9477 16.6646 H 1 UNCH 0.0000 + 23 H35 -11.3778 -2.3878 15.8990 H 1 UNCH 0.0000 +@BOND + 1 1 13 2 + 2 2 6 1 + 3 2 14 1 + 4 3 5 1 + 5 3 15 1 + 6 4 9 am + 7 4 10 1 + 8 4 11 1 + 9 5 8 2 + 10 6 9 2 + 11 7 13 am + 12 7 16 1 + 13 7 17 1 + 14 8 9 1 + 15 8 12 1 + 16 10 11 1 + 17 10 18 1 + 18 10 19 1 + 19 11 13 1 + 20 11 20 1 + 21 12 21 1 + 22 12 22 1 + 23 12 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT Z,Z'-1-METHYL-2-(2-CARBAMOYLAZIRIDINO)-GLYOXIME +@MOLECULE +CUDNEU + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.4067 -6.2596 13.6657 SI 1 UNCH 0.3220 + 2 O1 -9.0065 -4.4194 15.9097 O.3 1 UNCH -0.5600 + 3 O2 -9.9670 -3.7540 12.3324 O.3 1 UNCH -0.6800 + 4 C1 -9.9981 -7.1998 13.3526 C.3 1 UNCH -0.0805 + 5 C2 -7.3432 -7.1339 14.9430 C.3 1 UNCH -0.0805 + 6 C3 -7.4527 -6.0417 12.0663 C.3 1 UNCH -0.0805 + 7 C4 -8.8829 -4.3786 14.4605 C.3 1 UNCH 0.1995 + 8 C5 -7.6593 -3.4483 14.1945 C.3 1 UNCH 0.0000 + 9 C6 -7.9295 -2.0124 14.6552 C.3 1 UNCH 0.0000 + 10 C7 -9.1904 -1.4378 14.0165 C.3 1 UNCH 0.0000 + 11 C8 -10.4051 -2.3425 14.2287 C.3 1 UNCH 0.0000 + 12 C9 -10.1415 -3.7794 13.7522 C.3 1 UNCH 0.2800 + 13 C10 -10.1464 -5.0622 16.4569 C.3 1 UNCH 0.2800 + 14 H1 -10.7534 -3.3308 11.9462 H 1 UNCH 0.4000 + 15 H11 -9.7786 -8.1907 12.9433 H 1 UNCH 0.0000 + 16 H12 -10.6276 -6.6700 12.6318 H 1 UNCH 0.0000 + 17 H13 -10.5723 -7.3364 14.2722 H 1 UNCH 0.0000 + 18 H21 -7.8920 -7.2738 15.8785 H 1 UNCH 0.0000 + 19 H22 -6.4422 -6.5518 15.1573 H 1 UNCH 0.0000 + 20 H23 -7.0362 -8.1181 14.5769 H 1 UNCH 0.0000 + 21 H31 -7.2352 -7.0160 11.6181 H 1 UNCH 0.0000 + 22 H32 -8.0256 -5.4569 11.3415 H 1 UNCH 0.0000 + 23 H33 -6.5002 -5.5340 12.2439 H 1 UNCH 0.0000 + 24 H51 -7.4042 -3.4265 13.1283 H 1 UNCH 0.0000 + 25 H52 -6.7776 -3.8190 14.7328 H 1 UNCH 0.0000 + 26 H61 -7.0707 -1.3804 14.4012 H 1 UNCH 0.0000 + 27 H62 -8.0276 -1.9841 15.7471 H 1 UNCH 0.0000 + 28 H71 -9.3948 -0.4461 14.4360 H 1 UNCH 0.0000 + 29 H72 -9.0206 -1.2957 12.9422 H 1 UNCH 0.0000 + 30 H81 -11.2529 -1.9177 13.6779 H 1 UNCH 0.0000 + 31 H82 -10.6772 -2.3394 15.2902 H 1 UNCH 0.0000 + 32 H91 -11.0277 -4.3904 13.9534 H 1 UNCH 0.0000 + 33 H101 -10.1937 -6.1133 16.1706 H 1 UNCH 0.0000 + 34 H102 -10.0606 -5.0196 17.5467 H 1 UNCH 0.0000 + 35 H103 -11.0698 -4.5492 16.1797 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 7 1 + 6 2 13 1 + 7 3 12 1 + 8 3 14 1 + 9 4 15 1 + 10 4 16 1 + 11 4 17 1 + 12 5 18 1 + 13 5 19 1 + 14 5 20 1 + 15 6 21 1 + 16 6 22 1 + 17 6 23 1 + 18 7 8 1 + 19 7 12 1 + 20 8 9 1 + 21 8 24 1 + 22 8 25 1 + 23 9 10 1 + 24 9 26 1 + 25 9 27 1 + 26 10 11 1 + 27 10 28 1 + 28 10 29 1 + 29 11 12 1 + 30 11 30 1 + 31 11 31 1 + 32 12 32 1 + 33 13 33 1 + 34 13 34 1 + 35 13 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-TRIMETHYLSILYL-TRANS-2-METHOXY-CYCLOHEXANOL +@MOLECULE +CUDPAS + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.6500 -7.0282 14.6685 N.2 1 CUDP -0.6200 + 2 C2 -8.4295 -6.1672 15.6857 C.2 1 CUDP 0.1600 + 3 C3 -8.4616 -4.7920 15.5489 C.2 1 CUDP -0.1500 + 4 C4 -8.7204 -4.2531 14.2851 C.2 1 CUDP 0.0862 + 5 C5 -8.9198 -5.1097 13.2036 C.2 1 CUDP 0.0825 + 6 C6 -8.8790 -6.4748 13.4528 C.2 1 CUDP 0.1600 + 7 O7 -9.1333 -4.7224 11.9116 O.3 1 CUDP -0.5325 + 8 C8 -8.8081 -2.7918 14.1699 C.2 1 CUDP 0.5288 + 9 N9 -8.0140 -1.8188 14.5078 N.2 1 CUDP -0.8000 + 10 O10 -6.8082 -2.1949 15.0372 O.3 1 CUDP -0.6500 + 11 N11 -10.0274 -2.2522 13.5585 N.2 1 CUDP 0.8750 + 12 O12 -11.0231 -2.1167 14.2902 O.3 1 CUDP -0.5200 + 13 O13 -10.0028 -2.0935 12.3224 O.2 1 CUDP -0.5200 + 14 H1 -8.2205 -6.6240 16.6483 H 1 CUDP 0.1500 + 15 H2 -8.2759 -4.1425 16.3998 H 1 CUDP 0.1500 + 16 H3 -9.0291 -7.1852 12.6451 H 1 CUDP 0.1500 + 17 H4 -8.9776 -3.7617 11.8043 H 1 CUDP 0.4500 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 2 3 1 + 4 2 14 1 + 5 3 4 2 + 6 3 15 1 + 7 4 5 1 + 8 4 8 1 + 9 5 6 2 + 10 5 7 1 + 11 6 16 1 + 12 7 17 1 + 13 8 9 2 + 14 8 11 am + 15 9 10 1 + 16 11 12 1 + 17 11 13 2 +@SUBSTRUCTURE + 1 CUDP 1 +@COMMENT +COMMENT FURO(2,3-C)PYRIDINIUM 3-HYDROXYPYRIDINE-4-NITROLATE +@MOLECULE +CUDPOG + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -11.5579 -5.0093 15.1031 S.2 1 UNCH -0.3800 + 2 N1 -8.9937 -3.9752 15.2997 N.3 1 UNCH -0.4771 + 3 N3 -10.3882 -3.5872 17.0521 N.2 1 UNCH -0.2110 + 4 N4 -9.3545 -2.9199 17.2995 N.2 1 UNCH -0.2460 + 5 C2 -10.2680 -4.2061 15.8216 C.2 1 UNCH 0.6510 + 6 C5 -8.4150 -2.9689 16.1520 C.3 1 UNCH 0.5461 + 7 C6 -7.0442 -3.3307 16.7317 C.3 1 UNCH 0.0000 + 8 C7 -8.4364 -1.5515 15.5587 C.3 1 UNCH 0.0000 + 9 C8 -8.3188 -4.6386 14.2335 C.2 1 UNCH 0.1170 + 10 C9 -8.6139 -5.9683 13.8972 C.2 1 UNCH -0.1500 + 11 C10 -7.9421 -6.6337 12.8639 C.2 1 UNCH -0.1500 + 12 C11 -6.9452 -5.9849 12.1482 C.2 1 UNCH -0.1500 + 13 C12 -6.6156 -4.6764 12.4759 C.2 1 UNCH -0.1500 + 14 C13 -7.2906 -4.0164 13.5115 C.2 1 UNCH -0.1500 + 15 H9 -9.3396 -6.5498 14.4571 H 1 UNCH 0.1500 + 16 H10 -8.1974 -7.6647 12.6309 H 1 UNCH 0.1500 + 17 H11 -6.4234 -6.4989 11.3455 H 1 UNCH 0.1500 + 18 H12 -5.8331 -4.1607 11.9245 H 1 UNCH 0.1500 + 19 H13 -6.9910 -2.9952 13.7042 H 1 UNCH 0.1500 + 20 H61 -8.2183 -0.8042 16.3313 H 1 UNCH 0.0000 + 21 H62 -9.4227 -1.3107 15.1445 H 1 UNCH 0.0000 + 22 H63 -7.7031 -1.4084 14.7635 H 1 UNCH 0.0000 + 23 H71 -6.7517 -2.6224 17.5158 H 1 UNCH 0.0000 + 24 H72 -7.0595 -4.3290 17.1848 H 1 UNCH 0.0000 + 25 H73 -6.2558 -3.3215 15.9740 H 1 UNCH 0.0000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 2 6 1 + 4 2 9 1 + 5 3 4 2 + 6 3 5 1 + 7 4 6 1 + 8 6 7 1 + 9 6 8 1 + 10 7 23 1 + 11 7 24 1 + 12 7 25 1 + 13 8 20 1 + 14 8 21 1 + 15 8 22 1 + 16 9 10 2 + 17 9 14 1 + 18 10 11 1 + 19 10 15 1 + 20 11 12 2 + 21 11 16 1 + 22 12 13 1 + 23 12 17 1 + 24 13 14 2 + 25 13 18 1 + 26 14 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,3-DIMETHYL-4-PHENYL-CDELTA-1--TRIAZOLINE-5-THIONE +@MOLECULE +CUDREY + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.4713 -5.3089 13.5870 S.3 1 CUDR -0.1330 + 2 N1 -8.3073 -3.5699 15.0514 N.2 1 CUDR -0.6830 + 3 N2 -10.6252 -3.6557 15.3492 N.3 1 CUDR -0.7320 + 4 C1 -9.5138 -4.0647 14.7780 C.2 1 CUDR 0.8250 + 5 C2 -7.2967 -4.1672 14.3175 C.2 1 CUDR 0.1830 + 6 C3 -7.7611 -5.1417 13.4662 C.2 1 CUDR -0.1100 + 7 H1 -8.1714 -2.8292 15.7340 H 1 CUDR 0.4500 + 8 H2 -6.2605 -3.8663 14.4343 H 1 CUDR 0.1500 + 9 H3 -7.1937 -5.7616 12.7834 H 1 CUDR 0.1500 + 10 H4 -10.6100 -2.9245 16.0425 H 1 CUDR 0.4500 + 11 H5 -11.4816 -4.1094 15.0576 H 1 CUDR 0.4500 +@BOND + 1 1 6 1 + 2 1 4 1 + 3 2 7 1 + 4 2 5 1 + 5 2 4 2 + 6 3 11 1 + 7 3 10 1 + 8 3 4 am + 9 5 8 1 + 10 5 6 2 + 11 6 9 1 +@SUBSTRUCTURE + 1 CUDR 1 +@COMMENT +COMMENT 2-AMINOTHIAZOLIUM TRICHLOROACETATE (AT -120 DEG.C) +@MOLECULE +CUFFAK + 37 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -12.1032 -1.4750 18.5715 O.3 1 UNCH -0.5325 + 2 C17 -6.6832 -7.2554 15.8273 C.2 1 UNCH -0.1500 + 3 O2 -6.9161 -0.4794 10.8681 O.3 1 UNCH -0.5325 + 4 C18 -6.3547 -5.9427 16.2064 C.2 1 UNCH -0.1500 + 5 O3 -8.9625 -1.3701 15.0092 O.3 1 UNCH -0.1650 + 6 C19 -7.1477 -4.8625 15.8054 C.2 1 UNCH -0.1500 + 7 O4 -10.1804 -5.0998 13.7439 O.3 1 UNCH -0.4300 + 8 C20 -9.7832 -6.4011 13.8501 C.2 1 UNCH 0.6338 + 9 O5 -10.3299 -7.3669 13.3573 O.2 1 UNCH -0.5700 + 10 H1 -11.8463 -0.5382 18.5828 H 1 UNCH 0.4500 + 11 C1 -9.8492 -2.1128 15.7517 C.2 1 UNCH 0.0825 + 12 H2 -6.6850 -0.9104 10.0287 H 1 UNCH 0.4500 + 13 C2 -10.5116 -1.4264 16.7736 C.2 1 UNCH -0.1500 + 14 H3 -10.3041 -0.3725 16.9284 H 1 UNCH 0.1500 + 15 C3 -11.4296 -2.1034 17.5668 C.2 1 UNCH 0.0825 + 16 H4 -12.4127 -3.9685 17.9831 H 1 UNCH 0.1500 + 17 C4 -11.6905 -3.4509 17.3572 C.2 1 UNCH -0.1500 + 18 H5 -11.2366 -5.1933 16.1980 H 1 UNCH 0.1500 + 19 C5 -11.0207 -4.1367 16.3422 C.2 1 UNCH -0.1500 + 20 H6 -8.3418 -4.6729 11.8634 H 1 UNCH 0.1500 + 21 C6 -10.0858 -3.4738 15.5252 C.2 1 UNCH -0.1435 + 22 H7 -7.3026 -3.0705 10.3293 H 1 UNCH 0.1500 + 23 C7 -9.2915 -4.1907 14.4505 C.3 1 UNCH 0.7105 + 24 H8 -7.8197 0.0696 13.2217 H 1 UNCH 0.1500 + 25 C8 -8.6939 -3.2238 13.4457 C.2 1 UNCH -0.1435 + 26 H9 -8.0790 -8.5098 14.7400 H 1 UNCH 0.1500 + 27 C9 -8.2378 -3.6363 12.1786 C.2 1 UNCH -0.1500 + 28 H10 -6.0545 -8.0828 16.1496 H 1 UNCH 0.1500 + 29 C10 -7.6433 -2.7260 11.3011 C.2 1 UNCH -0.1500 + 30 H11 -5.4732 -5.7659 16.8198 H 1 UNCH 0.1500 + 31 C11 -7.4954 -1.4001 11.6896 C.2 1 UNCH 0.0825 + 32 H12 -6.8886 -3.8496 16.1024 H 1 UNCH 0.1500 + 33 C12 -7.9376 -0.9710 12.9339 C.2 1 UNCH -0.1500 + 34 C13 -8.5431 -1.8795 13.8041 C.2 1 UNCH 0.0825 + 35 C14 -8.2665 -5.1192 15.0246 C.2 1 UNCH -0.1435 + 36 C15 -8.5752 -6.4143 14.6608 C.2 1 UNCH 0.0862 + 37 C16 -7.8096 -7.5026 15.0421 C.2 1 UNCH -0.1500 +@BOND + 1 1 10 1 + 2 1 15 1 + 3 2 4 2 + 4 2 28 1 + 5 2 37 1 + 6 3 12 1 + 7 3 31 1 + 8 4 6 1 + 9 4 30 1 + 10 5 11 1 + 11 5 34 1 + 12 6 32 1 + 13 6 35 2 + 14 7 8 1 + 15 7 23 1 + 16 8 9 2 + 17 8 36 1 + 18 11 13 2 + 19 11 21 1 + 20 13 14 1 + 21 13 15 1 + 22 15 17 2 + 23 16 17 1 + 24 17 19 1 + 25 18 19 1 + 26 19 21 2 + 27 20 27 1 + 28 21 23 1 + 29 22 29 1 + 30 23 25 1 + 31 23 35 1 + 32 24 33 1 + 33 25 27 2 + 34 25 34 1 + 35 26 37 1 + 36 27 29 1 + 37 29 31 2 + 38 31 33 1 + 39 33 34 2 + 40 35 36 1 + 41 36 37 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT FLUORESCIN METHANOL +@MOLECULE +CUGBEL + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.5820 -4.4342 15.5876 C.2 1 UNCH 0.1857 + 2 C2 -9.0482 -3.6074 14.6675 C.2 1 UNCH 0.0650 + 3 C3 -7.6549 -3.8119 14.2499 C.2 1 UNCH -0.1382 + 4 C4 -7.0807 -2.9182 13.1698 C.3 1 UNCH 0.1382 + 5 C5 -5.7498 -3.4166 12.5984 C.3 1 UNCH 0.0000 + 6 C6 -4.8212 -3.8986 13.7044 C.3 1 UNCH 0.0000 + 7 C7 -5.4632 -5.0377 14.4966 C.3 1 UNCH 0.1382 + 8 C8 -6.9084 -4.7821 14.8238 C.2 1 UNCH -0.1238 + 9 C9 -7.5167 -5.6643 15.8681 C.2 1 UNCH 0.6156 + 10 N10 -8.8289 -5.4163 16.1671 N.3 1 UNCH -0.5390 + 11 O11 -10.8623 -4.3111 16.0725 O.3 1 UNCH -0.3567 + 12 C12 -11.7393 -5.2835 15.4914 C.3 1 UNCH 0.2800 + 13 C13 -13.1448 -5.0069 15.9907 C.3 1 UNCH 0.0000 + 14 C14 -9.8325 -2.5519 14.1110 C.1 1 UNCH 0.4921 + 15 N15 -10.4540 -1.6968 13.6308 N.1 1 UNCH -0.5571 + 16 O16 -6.8841 -6.5570 16.4194 O.2 1 UNCH -0.5700 + 17 H4 -6.9353 -1.9138 13.5881 H 1 UNCH 0.0000 + 18 H41 -7.7829 -2.8249 12.3325 H 1 UNCH 0.0000 + 19 H5 -5.2708 -2.6128 12.0280 H 1 UNCH 0.0000 + 20 H51 -5.9365 -4.2381 11.8949 H 1 UNCH 0.0000 + 21 H6 -3.8697 -4.2361 13.2783 H 1 UNCH 0.0000 + 22 H61 -4.5908 -3.0635 14.3783 H 1 UNCH 0.0000 + 23 H7 -5.3963 -5.9664 13.9163 H 1 UNCH 0.0000 + 24 H71 -4.8822 -5.1870 15.4144 H 1 UNCH 0.0000 + 25 H10 -9.2377 -5.9834 16.8977 H 1 UNCH 0.3700 + 26 H12 -11.7185 -5.2097 14.3973 H 1 UNCH 0.0000 + 27 H121 -11.4362 -6.2935 15.7912 H 1 UNCH 0.0000 + 28 H13 -13.1837 -5.0634 17.0835 H 1 UNCH 0.0000 + 29 H131 -13.4605 -3.9960 15.7120 H 1 UNCH 0.0000 + 30 H132 -13.8553 -5.7263 15.5741 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 10 1 + 3 1 11 1 + 4 2 3 1 + 5 2 14 1 + 6 3 4 1 + 7 3 8 2 + 8 4 5 1 + 9 4 17 1 + 10 4 18 1 + 11 5 6 1 + 12 5 19 1 + 13 5 20 1 + 14 6 7 1 + 15 6 21 1 + 16 6 22 1 + 17 7 8 1 + 18 7 23 1 + 19 7 24 1 + 20 8 9 1 + 21 9 10 am + 22 9 16 2 + 23 10 25 1 + 24 11 12 1 + 25 12 13 1 + 26 12 26 1 + 27 12 27 1 + 28 13 28 1 + 29 13 29 1 + 30 13 30 1 + 31 14 15 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-ETHOXY-5,6,7,8-TETRAHYDRO-1-HYDROXYISOQUINOLINE-4-CARBONI +@MOLECULE +CUGGOA + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL2 1.7634 0.1396 9.2881 CL 1 CUGG -0.2900 + 2 CL4 5.6551 -1.1064 6.5856 CL 1 CUGG -0.1400 + 3 CL5 4.7804 1.9558 7.9592 CL 1 CUGG -0.2900 + 4 CL61 3.5357 0.4359 3.9632 CL 1 CUGG -0.2900 + 5 CL62 5.9475 1.7980 4.9128 CL 1 CUGG -0.2900 + 6 O11 1.1058 -0.0820 5.9128 O.2 1 CUGG -0.5700 + 7 O12 -0.4862 -1.0085 7.1506 O.3 1 CUGG -0.6500 + 8 O61 2.7152 3.3045 5.8126 O.3 1 CUGG -0.5200 + 9 O62 3.7699 3.4592 3.9042 O.2 1 CUGG -0.5200 + 10 N6 3.5146 2.8690 4.9687 N.2 1 CUGG 0.7998 + 11 C1 0.8093 -0.7087 6.9211 C.2 1 CUGG 0.6590 + 12 C2 1.7781 -1.1484 8.0356 C.3 1 CUGG 0.4892 + 13 C3 3.1998 -1.3358 7.5175 C.2 1 CUGG -0.2882 + 14 C4 4.0776 -0.4599 6.9778 C.2 1 CUGG 0.0018 + 15 C5 3.8774 1.0267 6.6800 C.3 1 CUGG 0.4282 + 16 C6 4.2003 1.5170 5.2393 C.3 1 CUGG 0.8202 + 17 C7 1.2954 -2.4477 8.6972 C.3 1 CUGG 0.0000 + 18 H1 -0.9777 -0.6097 6.4003 H 1 CUGG 0.5000 + 19 H2 3.5596 -2.3607 7.6344 H 1 CUGG 0.1500 + 20 H3 2.8357 1.2572 6.9030 H 1 CUGG 0.0000 + 21 H4 1.2060 -3.2539 7.9589 H 1 CUGG 0.0000 + 22 H5 1.9875 -2.7860 9.4781 H 1 CUGG 0.0000 + 23 H6 0.3106 -2.3302 9.1648 H 1 CUGG 0.0000 +@BOND + 1 1 12 1 + 2 2 14 1 + 3 3 15 1 + 4 4 16 1 + 5 5 16 1 + 6 6 11 2 + 7 7 18 1 + 8 7 11 1 + 9 8 10 1 + 10 9 10 2 + 11 10 16 1 + 12 11 12 1 + 13 12 17 1 + 14 12 13 1 + 15 13 19 1 + 16 13 14 2 + 17 14 15 1 + 18 15 20 1 + 19 15 16 1 + 20 17 23 1 + 21 17 22 1 + 22 17 21 1 +@SUBSTRUCTURE + 1 CUGG 1 +@COMMENT +COMMENT (E)-(2RS,5RS)-2,4,5,6,6-PENTACHLORO-2-METHYL-6-NITROHEX-3-E +@MOLECULE +CUGLOF + 28 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.8273 -3.6231 13.4854 C.3 1 UNCH 0.0000 + 2 C2 -7.9780 -4.4559 14.5550 C.3 1 UNCH 0.0000 + 3 C3 -7.9167 -2.9444 14.9363 C.3 1 UNCH 0.0000 + 4 C4 -9.3115 -2.4843 14.4324 C.3 1 UNCH 0.0000 + 5 C5 -10.2551 -3.0246 15.5363 C.3 1 UNCH 0.0000 + 6 C6 -10.3958 -4.3258 14.7534 C.3 1 UNCH 0.0000 + 7 C7 -9.1461 -4.8608 15.4886 C.3 1 UNCH 0.2410 + 8 C8 -9.3231 -3.7399 16.5478 C.3 1 UNCH 0.0000 + 9 C9 -8.5838 -4.4371 13.1452 C.3 1 UNCH 0.4804 + 10 C10 -8.0366 -2.9346 16.4574 C.3 1 UNCH 0.0000 + 11 N1 -8.8625 -5.7820 12.5786 N.2 1 UNCH 0.7998 + 12 N2 -7.6997 -3.7992 12.1289 N.2 1 UNCH 0.7998 + 13 N3 -9.1494 -6.2560 15.9868 N.2 1 UNCH 0.7990 + 14 O1 -8.0927 -6.6995 12.8876 O.3 1 UNCH -0.5200 + 15 O2 -9.8617 -5.9026 11.8590 O.2 1 UNCH -0.5200 + 16 O3 -6.4833 -4.0155 12.2087 O.3 1 UNCH -0.5200 + 17 O4 -8.2312 -3.0600 11.2899 O.2 1 UNCH -0.5200 + 18 O5 -9.9862 -7.0254 15.5058 O.3 1 UNCH -0.5200 + 19 O6 -8.3071 -6.5437 16.8430 O.2 1 UNCH -0.5200 + 20 H1 -10.5602 -3.3346 12.7294 H 1 UNCH 0.0000 + 21 H2 -7.0398 -4.9921 14.7214 H 1 UNCH 0.0000 + 22 H3 -7.0781 -2.3885 14.5131 H 1 UNCH 0.0000 + 23 H4 -9.4381 -1.4452 14.1284 H 1 UNCH 0.0000 + 24 H5 -11.1441 -2.4745 15.8338 H 1 UNCH 0.0000 + 25 H6 -11.3506 -4.8462 14.7587 H 1 UNCH 0.0000 + 26 H7 -9.7567 -3.9972 17.5147 H 1 UNCH 0.0000 + 27 H8 -7.1959 -3.4339 16.9487 H 1 UNCH 0.0000 + 28 H9 -8.1566 -1.9255 16.8643 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 6 1 + 3 1 9 1 + 4 1 20 1 + 5 2 3 1 + 6 2 7 1 + 7 2 9 1 + 8 2 21 1 + 9 3 4 1 + 10 3 10 1 + 11 3 22 1 + 12 4 5 1 + 13 4 23 1 + 14 5 6 1 + 15 5 8 1 + 16 5 24 1 + 17 6 7 1 + 18 6 25 1 + 19 7 8 1 + 20 7 13 1 + 21 8 10 1 + 22 8 26 1 + 23 9 11 1 + 24 9 12 1 + 25 10 27 1 + 26 10 28 1 + 27 11 14 1 + 28 11 15 2 + 29 12 16 1 + 30 12 17 2 + 31 13 18 1 + 32 13 19 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6,6,8-TRINITROPENTACYCLO(5.3.0.0-2,5-.0-3,9-.0-4,8-)DECANE +@MOLECULE +CUJYUB10 + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.9639 -6.3149 14.4015 S.3 1 CUJY -0.3710 + 2 O1 -11.6433 -4.7291 12.6864 O.3 1 CUJY -0.3370 + 3 C1 -7.4970 -4.3324 14.7922 C.2 1 CUJY -0.1500 + 4 C2 -6.4854 -3.6119 15.4130 C.2 1 CUJY -0.1500 + 5 C3 -6.7947 -2.4117 16.0318 C.2 1 CUJY -0.1500 + 6 C4 -8.1070 -1.9561 16.0245 C.2 1 CUJY 0.2110 + 7 C5 -10.4721 -2.1293 15.4930 C.3 1 CUJY 0.4880 + 8 C6 -8.8134 -3.8491 14.8086 C.2 1 CUJY 0.4472 + 9 C7 -9.8974 -4.5839 14.0969 C.2 1 CUJY 0.5048 + 10 C8 -11.5468 -6.4264 15.2652 C.3 1 CUJY 0.2300 + 11 N1 -9.0965 -2.6675 15.4311 N.2 1 CUJY -0.2100 + 12 N2 -10.6964 -3.9157 13.3175 N.2 1 CUJY -0.5130 + 13 H1 -12.0317 -4.1515 12.0001 H 1 CUJY 0.4000 + 14 H2 -7.2468 -5.2600 14.2791 H 1 CUJY 0.1500 + 15 H3 -5.4599 -3.9801 15.4022 H 1 CUJY 0.1500 + 16 H4 -6.0134 -1.8282 16.5159 H 1 CUJY 0.1500 + 17 H5 -8.3735 -1.0140 16.4979 H 1 CUJY 0.1500 + 18 H6 -11.1676 -2.9385 15.7271 H 1 CUJY 0.0000 + 19 H7 -10.6916 -1.6483 14.5372 H 1 CUJY 0.0000 + 20 H8 -10.5358 -1.3888 16.2956 H 1 CUJY 0.0000 + 21 H9 -11.6618 -7.4351 15.6712 H 1 CUJY 0.0000 + 22 H10 -11.5795 -5.7142 16.0942 H 1 CUJY 0.0000 + 23 H11 -12.3836 -6.2331 14.5906 H 1 CUJY 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 2 13 1 + 4 2 12 1 + 5 3 14 1 + 6 3 8 1 + 7 3 4 2 + 8 4 15 1 + 9 4 5 1 + 10 5 16 1 + 11 5 6 2 + 12 6 17 1 + 13 6 11 1 + 14 7 20 1 + 15 7 19 1 + 16 7 18 1 + 17 7 11 1 + 18 8 11 2 + 19 8 9 1 + 20 9 12 2 + 21 10 23 1 + 22 10 22 1 + 23 10 21 1 +@SUBSTRUCTURE + 1 CUJY 1 +@COMMENT +COMMENT 2-((HYDROXYIMINO)(METHYLTHIO)METHYL)-1-METHYLPYRIDINIUM CHL +@MOLECULE +CULGEV10 + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.3294 -3.2410 17.1700 S.3 1 CUKC 1.3328 + 2 N1 -8.4894 -3.3657 15.4742 N.3 1 CUKC -0.4520 + 3 O1 -9.6336 -3.2333 17.8034 O.3 1 CUKC -0.6500 + 4 O2 -7.3158 -4.1902 17.5844 O.3 1 CUKC -0.6500 + 5 O3 -9.8269 -3.0057 15.1563 O.3 1 CUKC -0.0650 + 6 C1 -9.4520 -4.3955 15.0546 C.3 1 CUKC 0.3110 + 7 C2 -9.3412 -4.9887 13.6780 C.2 1 CUKC -0.0320 + 8 C3 -10.4078 -4.9241 12.7646 C.2 1 CUKC -0.1500 + 9 C4 -10.3102 -5.4896 11.4904 C.2 1 CUKC -0.1500 + 10 C5 -9.1399 -6.1364 11.1038 C.2 1 CUKC -0.1500 + 11 C6 -8.0695 -6.2174 11.9897 C.2 1 CUKC -0.1500 + 12 C7 -8.1722 -5.6503 13.2624 C.2 1 CUKC -0.1500 + 13 C8 -7.6413 -1.6071 17.2902 C.3 1 CUKC 0.1052 + 14 H1 -9.7817 -5.0594 15.8484 H 1 CUKC 0.1000 + 15 H2 -11.3309 -4.4220 13.0487 H 1 CUKC 0.1500 + 16 H3 -11.1483 -5.4238 10.8012 H 1 CUKC 0.1500 + 17 H4 -9.0617 -6.5763 10.1130 H 1 CUKC 0.1500 + 18 H5 -7.1531 -6.7210 11.6923 H 1 CUKC 0.1500 + 19 H6 -7.3246 -5.7219 13.9427 H 1 CUKC 0.1500 + 20 H7 -7.4578 -1.3954 18.3458 H 1 CUKC 0.0000 + 21 H8 -8.3582 -0.8893 16.8874 H 1 CUKC 0.0000 + 22 H9 -6.7007 -1.5760 16.7371 H 1 CUKC 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 13 1 + 5 2 5 1 + 6 2 6 1 + 7 5 6 1 + 8 6 7 1 + 9 6 14 1 + 10 7 8 2 + 11 7 12 1 + 12 8 9 1 + 13 8 15 1 + 14 9 10 2 + 15 9 16 1 + 16 10 11 1 + 17 10 17 1 + 18 11 12 2 + 19 11 18 1 + 20 12 19 1 + 21 13 20 1 + 22 13 21 1 + 23 13 22 1 +@SUBSTRUCTURE + 1 CUKC 1 +@COMMENT +COMMENT (S,S)-(-)-2-METHYLSULFONYL-3-PHENYLOXAZIRIDINE (ABSOLUTE CO +@MOLECULE +CULHIA10 + 39 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -11.4630 -3.6374 15.6609 C.3 1 UNCH 0.2700 + 2 C2 -12.5660 -4.3952 16.4004 C.3 1 UNCH 0.0000 + 3 C3 -12.0557 -4.9677 17.7161 C.3 1 UNCH 0.0000 + 4 C4 -10.7913 -5.7836 17.4816 C.3 1 UNCH 0.0000 + 5 C5 -9.7445 -4.9837 16.7026 C.3 1 UNCH 0.2700 + 6 N1 -10.2853 -4.4936 15.4215 N.3 1 UNCH -0.8100 + 7 C6 -9.2658 -3.7268 14.6629 C.3 1 UNCH 0.2700 + 8 C7 -8.1410 -4.6138 14.1070 C.3 1 UNCH 0.2560 + 9 N2 -7.1468 -3.8893 13.1994 N.3 1 UNCH -0.0180 + 10 C8 -7.8160 -3.4652 11.9019 C.3 1 UNCH 0.2560 + 11 C9 -6.8297 -2.8639 10.9062 C.3 1 UNCH 0.0000 + 12 C10 -5.6825 -3.8208 10.6097 C.3 1 UNCH 0.0000 + 13 C11 -5.0049 -4.2642 11.8996 C.3 1 UNCH 0.0000 + 14 C12 -6.0157 -4.8542 12.8741 C.3 1 UNCH 0.2560 + 15 O1 -6.6483 -2.7958 13.8604 O.3 1 UNCH -0.7500 + 16 H1 -11.8748 -3.2977 14.7027 H 1 UNCH 0.0000 + 17 H2 -11.1839 -2.7418 16.2318 H 1 UNCH 0.0000 + 18 H3 -13.4112 -3.7245 16.5925 H 1 UNCH 0.0000 + 19 H4 -12.9411 -5.2092 15.7672 H 1 UNCH 0.0000 + 20 H5 -12.8269 -5.5921 18.1802 H 1 UNCH 0.0000 + 21 H6 -11.8398 -4.1490 18.4134 H 1 UNCH 0.0000 + 22 H7 -11.0426 -6.6964 16.9265 H 1 UNCH 0.0000 + 23 H8 -10.3731 -6.1006 18.4438 H 1 UNCH 0.0000 + 24 H9 -8.8933 -5.6500 16.5279 H 1 UNCH 0.0000 + 25 H10 -9.3855 -4.1491 17.3192 H 1 UNCH 0.0000 + 26 H11 -8.8496 -2.9199 15.2792 H 1 UNCH 0.0000 + 27 H12 -9.7694 -3.2445 13.8190 H 1 UNCH 0.0000 + 28 H13 -8.5435 -5.4465 13.5185 H 1 UNCH 0.0000 + 29 H14 -7.5318 -5.0158 14.9239 H 1 UNCH 0.0000 + 30 H15 -8.3002 -4.3583 11.4916 H 1 UNCH 0.0000 + 31 H16 -8.5731 -2.7202 12.1605 H 1 UNCH 0.0000 + 32 H17 -6.4248 -1.9261 11.3055 H 1 UNCH 0.0000 + 33 H18 -7.3526 -2.6155 9.9761 H 1 UNCH 0.0000 + 34 H19 -6.0644 -4.6982 10.0735 H 1 UNCH 0.0000 + 35 H20 -4.9524 -3.3354 9.9527 H 1 UNCH 0.0000 + 36 H21 -4.4991 -3.4065 12.3588 H 1 UNCH 0.0000 + 37 H22 -4.2331 -5.0084 11.6742 H 1 UNCH 0.0000 + 38 H23 -6.4830 -5.7554 12.4604 H 1 UNCH 0.0000 + 39 H24 -5.5334 -5.0992 13.8270 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 16 1 + 4 1 17 1 + 5 2 3 1 + 6 2 18 1 + 7 2 19 1 + 8 3 4 1 + 9 3 20 1 + 10 3 21 1 + 11 4 5 1 + 12 4 22 1 + 13 4 23 1 + 14 5 6 1 + 15 5 24 1 + 16 5 25 1 + 17 6 7 1 + 18 7 8 1 + 19 7 26 1 + 20 7 27 1 + 21 8 9 1 + 22 8 28 1 + 23 8 29 1 + 24 9 10 1 + 25 9 14 1 + 26 9 15 1 + 27 10 11 1 + 28 10 30 1 + 29 10 31 1 + 30 11 12 1 + 31 11 32 1 + 32 11 33 1 + 33 12 13 1 + 34 12 34 1 + 35 12 35 1 + 36 13 14 1 + 37 13 36 1 + 38 13 37 1 + 39 14 38 1 + 40 14 39 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(2-(PIPERIDINO)ETHYL)PIPERIDINE N-OXIDE TRIHYDRATE 1,2-DI +@MOLECULE +CULVEK + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -9.2832 -6.1497 16.1521 P 1 UNCH 1.5584 + 2 CL1 -7.4161 -6.8199 16.4168 CL 1 UNCH -0.3160 + 3 O1 -9.4305 -4.8785 17.1294 O.3 1 UNCH -0.5512 + 4 O2 -10.3070 -7.2201 16.3638 O.3 1 UNCH -0.7000 + 5 O3 -9.3001 -5.4880 14.6853 O.3 1 UNCH -0.5512 + 6 C1 -8.6487 -3.7311 16.8615 C.3 1 UNCH 0.2800 + 7 C2 -8.8967 -3.1871 15.4347 C.3 1 UNCH 0.0000 + 8 C3 -8.5253 -4.3220 14.4310 C.3 1 UNCH 0.2800 + 9 C4 -10.3676 -2.7482 15.3313 C.3 1 UNCH 0.0000 + 10 C5 -7.9962 -1.9533 15.2393 C.3 1 UNCH 0.0000 + 11 C6 -8.6206 -3.9983 12.9131 C.3 1 UNCH 0.0000 + 12 C7 -7.6736 -4.9294 12.1356 C.3 1 UNCH 0.0000 + 13 C8 -10.0219 -4.1550 12.3103 C.3 1 UNCH 0.0000 + 14 H1 -7.5910 -3.9720 17.0172 H 1 UNCH 0.0000 + 15 H2 -8.9090 -2.9765 17.6126 H 1 UNCH 0.0000 + 16 H3 -7.4763 -4.5789 14.6298 H 1 UNCH 0.0000 + 17 H4 -11.0531 -3.6018 15.3277 H 1 UNCH 0.0000 + 18 H5 -10.6453 -2.1083 16.1773 H 1 UNCH 0.0000 + 19 H6 -10.5460 -2.1582 14.4275 H 1 UNCH 0.0000 + 20 H7 -8.1609 -1.2169 16.0347 H 1 UNCH 0.0000 + 21 H8 -8.1954 -1.4470 14.2897 H 1 UNCH 0.0000 + 22 H9 -6.9362 -2.2299 15.2588 H 1 UNCH 0.0000 + 23 H10 -8.2742 -2.9767 12.7282 H 1 UNCH 0.0000 + 24 H11 -6.6393 -4.8023 12.4729 H 1 UNCH 0.0000 + 25 H12 -7.9479 -5.9815 12.2684 H 1 UNCH 0.0000 + 26 H13 -7.6989 -4.7048 11.0637 H 1 UNCH 0.0000 + 27 H14 -10.7529 -3.4952 12.7777 H 1 UNCH 0.0000 + 28 H15 -10.3895 -5.1830 12.3978 H 1 UNCH 0.0000 + 29 H16 -10.0062 -3.9052 11.2431 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 3 6 1 + 6 5 8 1 + 7 6 7 1 + 8 6 14 1 + 9 6 15 1 + 10 7 8 1 + 11 7 9 1 + 12 7 10 1 + 13 8 11 1 + 14 8 16 1 + 15 9 17 1 + 16 9 18 1 + 17 9 19 1 + 18 10 20 1 + 19 10 21 1 + 20 10 22 1 + 21 11 12 1 + 22 11 13 1 + 23 11 23 1 + 24 12 24 1 + 25 12 25 1 + 26 12 26 1 + 27 13 27 1 + 28 13 28 1 + 29 13 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-2-CHLORO-4-ISOPROPYL-5,5-DIMETHYL-1,3,2LAMBDA-5--DIOX +@MOLECULE +CUNVAI + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.2201 -1.5821 12.9513 C.2 1 CUNV 0.1330 + 2 C2 -9.3883 -1.1775 14.0000 C.2 1 CUNV -0.1500 + 3 C3 -8.7855 -2.1568 14.8123 C.2 1 CUNV 0.1330 + 4 C4 -8.9793 -3.5386 14.5850 C.2 1 CUNV 0.1000 + 5 C5 -9.8492 -3.8993 13.5375 C.2 1 CUNV -0.1500 + 6 C6 -10.4571 -2.9398 12.7189 C.2 1 CUNV -0.1500 + 7 C9 -7.9261 -6.7209 15.7904 C.2 1 CUNV 0.3890 + 8 C20 -7.9212 -8.1565 15.2992 C.2 1 CUNV 0.5090 + 9 O21 -6.9885 -8.8884 15.6041 O.2 1 CUNV -0.5700 + 10 N2 -10.8557 -0.5744 12.0920 N.2 1 CUNV 0.9070 + 11 N1 -7.9343 -1.6952 15.9129 N.2 1 CUNV 0.9070 + 12 N7 -8.4420 -4.5340 15.4426 N.3 1 CUNV -0.4580 + 13 N8 -8.4848 -5.8276 15.0252 N.2 1 CUNV -0.4920 + 14 O3 -10.5568 0.6118 12.2842 O.3 1 CUNV -0.5200 + 15 O4 -11.6482 -0.9722 11.2276 O.2 1 CUNV -0.5200 + 16 O2 -8.1563 -0.5680 16.3747 O.3 1 CUNV -0.5200 + 17 O1 -7.0399 -2.4580 16.3114 O.2 1 CUNV -0.5200 + 18 C10 -7.2457 -6.4641 17.1077 C.3 1 CUNV 0.0610 + 19 C22 -9.0826 -8.5858 14.4524 C.3 1 CUNV 0.0610 + 20 H2 -9.2117 -0.1191 14.1887 H 1 CUNV 0.1500 + 21 H5 -10.0633 -4.9507 13.3485 H 1 CUNV 0.1500 + 22 H6 -11.1119 -3.2730 11.9150 H 1 CUNV 0.1500 + 23 H7 -7.5983 -4.2107 15.9382 H 1 CUNV 0.4000 + 24 H101 -7.2140 -7.3764 17.7097 H 1 CUNV 0.0000 + 25 H102 -7.7859 -5.7060 17.6808 H 1 CUNV 0.0000 + 26 H103 -6.2240 -6.1217 16.9227 H 1 CUNV 0.0000 + 27 H221 -9.0382 -8.0910 13.4793 H 1 CUNV 0.0000 + 28 H222 -10.0209 -8.3472 14.9597 H 1 CUNV 0.0000 + 29 H223 -9.0393 -9.6681 14.3005 H 1 CUNV 0.0000 +@BOND + 1 1 10 1 + 2 1 6 1 + 3 1 2 2 + 4 2 20 1 + 5 2 3 1 + 6 3 11 1 + 7 3 4 2 + 8 4 12 1 + 9 4 5 1 + 10 5 21 1 + 11 5 6 2 + 12 6 22 1 + 13 7 18 1 + 14 7 13 2 + 15 7 8 1 + 16 8 19 1 + 17 8 9 2 + 18 10 15 2 + 19 10 14 1 + 20 11 17 2 + 21 11 16 1 + 22 12 23 1 + 23 12 13 1 + 24 18 26 1 + 25 18 25 1 + 26 18 24 1 + 27 19 29 1 + 28 19 28 1 + 29 19 27 1 +@SUBSTRUCTURE + 1 CUNV 1 +@COMMENT +COMMENT (E)-2,3-BUTANEDIONE-2',4'-DINITROPHENYLHYDRAZONE +@MOLECULE +CUNVEM + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -8.2441 -1.3553 13.8609 CL 1 CUNV -0.2273 + 2 S1 -7.1509 -3.6455 16.0887 S.3 1 CUNV -0.3710 + 3 O2 -10.8890 -3.3256 13.6066 O.3 1 CUNV -0.4300 + 4 O1 -11.6743 -1.5381 14.8283 O.2 1 CUNV -0.5700 + 5 N1 -10.5980 -4.9614 16.8452 N.1 1 CUNV -0.5571 + 6 C1 -9.3798 -2.1572 14.9964 C.3 1 CUNV 0.2273 + 7 C2 -8.8679 -3.1966 16.0057 C.3 1 CUNV 0.2460 + 8 C3 -9.1763 -1.7703 16.4451 C.3 1 CUNV -0.2000 + 9 C4 -9.8138 -4.1865 16.4830 C.1 1 CUNV 0.4521 + 10 C5 -10.7743 -2.2880 14.4783 C.2 1 CUNV 0.7200 + 11 C6 -12.2115 -3.5114 13.1001 C.3 1 CUNV 0.2800 + 12 C7 -6.9269 -5.1286 15.0165 C.3 1 CUNV 0.2300 + 13 C8 -7.2266 -6.3987 15.8229 C.3 1 CUNV 0.0000 + 14 C9 -7.7774 -5.0907 13.7435 C.3 1 CUNV 0.0000 + 15 C10 -5.4408 -5.1393 14.6157 C.3 1 CUNV 0.0000 + 16 H61 -12.1963 -4.3674 12.4199 H 1 CUNV 0.0000 + 17 H62 -12.5344 -2.6284 12.5398 H 1 CUNV 0.0000 + 18 H63 -12.9071 -3.7296 13.9165 H 1 CUNV 0.0000 + 19 H81 -6.6277 -6.4504 16.7397 H 1 CUNV 0.0000 + 20 H82 -6.9912 -7.2938 15.2344 H 1 CUNV 0.0000 + 21 H83 -8.2810 -6.4748 16.1014 H 1 CUNV 0.0000 + 22 H91 -7.5809 -4.1939 13.1477 H 1 CUNV 0.0000 + 23 H92 -8.8482 -5.1399 13.9592 H 1 CUNV 0.0000 + 24 H93 -7.5504 -5.9525 13.1039 H 1 CUNV 0.0000 + 25 H101 -5.1695 -4.2467 14.0390 H 1 CUNV 0.0000 + 26 H102 -5.2133 -6.0093 13.9879 H 1 CUNV 0.0000 + 27 H103 -4.7807 -5.1942 15.4898 H 1 CUNV 0.0000 + 28 H31 -8.3574 -1.1025 16.6912 H 1 CUNV 0.1000 + 29 H32 -10.0587 -1.5832 17.0504 H 1 CUNV 0.1000 +@BOND + 1 1 6 1 + 2 2 7 1 + 3 2 12 1 + 4 3 10 1 + 5 3 11 1 + 6 4 10 2 + 7 5 9 3 + 8 6 7 1 + 9 6 8 1 + 10 6 10 1 + 11 7 8 1 + 12 7 9 1 + 13 8 28 1 + 14 8 29 1 + 15 11 16 1 + 16 11 17 1 + 17 11 18 1 + 18 12 13 1 + 19 12 14 1 + 20 12 15 1 + 21 13 19 1 + 22 13 20 1 + 23 13 21 1 + 24 14 22 1 + 25 14 23 1 + 26 14 24 1 + 27 15 25 1 + 28 15 26 1 + 29 15 27 1 +@SUBSTRUCTURE + 1 CUNV 1 +@COMMENT +COMMENT METHYL 2-T-BUTYLTHIO-1-CHLORO-2-CYANO-1-CYCLOPROPANECARBOXY +@MOLECULE +CURZIY + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.9541 -3.3456 14.8147 S.3 1 CURJ 1.0896 + 2 O1 -9.6395 -6.0227 12.1028 O.3 1 CURJ -0.2960 + 3 O2 -9.7583 -2.2609 13.8747 O.3 1 CURJ -0.6500 + 4 O3 -10.6247 -3.1318 16.0816 O.3 1 CURJ -0.6500 + 5 C1 -10.7243 -4.7648 13.9837 C.3 1 CURJ 0.2002 + 6 C3 -8.3896 -4.2173 15.1289 C.3 1 CURJ 0.1052 + 7 C4 -8.5894 -5.5521 14.3498 C.3 1 CURJ 0.0950 + 8 C5 -8.6733 -5.2791 12.8544 C.3 1 CURJ -0.0470 + 9 C6 -10.0530 -4.7544 12.6289 C.3 1 CURJ -0.0470 + 10 C7 -10.0507 -5.9497 14.7065 C.3 1 CURJ 0.0000 + 11 C9 -6.8780 -2.2690 15.6974 C.3 1 CURJ 0.0000 + 12 C8 -7.1457 -3.4238 14.7409 C.3 1 CURJ 0.0000 + 13 H1 -11.8117 -4.7224 13.9971 H 1 CURJ 0.0000 + 14 H3 -8.3733 -4.4426 16.2029 H 1 CURJ 0.0000 + 15 H4 -7.8523 -6.3166 14.6061 H 1 CURJ 0.0000 + 16 H5 -7.8142 -4.8619 12.3559 H 1 CURJ 0.1000 + 17 H6 -10.2503 -3.9301 11.9624 H 1 CURJ 0.1000 + 18 H71 -10.2364 -5.9690 15.7854 H 1 CURJ 0.0000 + 19 H72 -10.3366 -6.9163 14.2777 H 1 CURJ 0.0000 + 20 H91 -5.9601 -1.7470 15.4086 H 1 CURJ 0.0000 + 21 H912 -6.7514 -2.6311 16.7227 H 1 CURJ 0.0000 + 22 H93 -7.6945 -1.5412 15.6889 H 1 CURJ 0.0000 + 23 H81 -6.2755 -4.0907 14.7560 H 1 CURJ 0.0000 + 24 H82 -7.2258 -3.0248 13.7241 H 1 CURJ 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 1 6 1 + 5 2 8 1 + 6 2 9 1 + 7 5 9 1 + 8 5 10 1 + 9 5 13 1 + 10 6 7 1 + 11 6 12 1 + 12 6 14 1 + 13 7 8 1 + 14 7 10 1 + 15 7 15 1 + 16 8 9 1 + 17 8 16 1 + 18 9 17 1 + 19 10 18 1 + 20 10 19 1 + 21 11 12 1 + 22 11 20 1 + 23 11 21 1 + 24 11 22 1 + 25 12 23 1 + 26 12 24 1 +@SUBSTRUCTURE + 1 CURJ 1 +@COMMENT +COMMENT ENDO-3-ETHYL-EXO-5,6-EPOXY-2-THIABICYCLO(2.2.1)HEPTANE-2,2- +@MOLECULE +CUVFOO + 24 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.8355 -0.9925 0.3674 O.2 1 UNCH -0.9000 + 2 O2 0.8867 -1.5595 2.3986 O.3 1 UNCH -0.9000 + 3 C1 0.9745 -1.4797 1.1287 C.2 1 UNCH 0.9060 + 4 C2 -0.2997 -2.0991 0.4939 C.3 1 UNCH 0.3970 + 5 N1 -1.3713 -2.2257 1.5702 N.3 1 UNCH -0.8530 + 6 C3 -0.8115 -1.3269 -0.7155 C.3 1 UNCH 0.2300 + 7 S1 -1.5326 0.2886 -0.2335 S.3 1 UNCH -0.2300 + 8 S2 -0.9906 1.5017 -1.8018 S.3 1 UNCH -0.2300 + 9 C4 0.7979 1.8117 -1.5219 C.3 1 UNCH 0.2300 + 10 C5 1.1064 2.4536 -0.1774 C.3 1 UNCH 0.0610 + 11 C6 2.5743 2.7547 -0.0776 C.2 1 UNCH 0.6590 + 12 O3 3.3855 2.7905 -0.9877 O.2 1 UNCH -0.5700 + 13 O4 2.9432 3.0631 1.1817 O.3 1 UNCH -0.6500 + 14 H1 -0.0501 -3.1280 0.2108 H 1 UNCH 0.0000 + 15 H2 -1.9449 -1.3775 1.6187 H 1 UNCH 0.4500 + 16 H3 -0.7742 -2.1830 2.4351 H 1 UNCH 0.4500 + 17 H4 -1.9082 -3.0903 1.5648 H 1 UNCH 0.4500 + 18 H5 -0.0064 -1.1883 -1.4436 H 1 UNCH 0.0000 + 19 H6 -1.6043 -1.8994 -1.2093 H 1 UNCH 0.0000 + 20 H7 1.3455 0.8721 -1.6492 H 1 UNCH 0.0000 + 21 H8 1.1257 2.4702 -2.3346 H 1 UNCH 0.0000 + 22 H9 0.8479 1.7804 0.6456 H 1 UNCH 0.0000 + 23 H10 0.5599 3.3955 -0.0592 H 1 UNCH 0.0000 + 24 H11 3.9157 3.1642 1.1245 H 1 UNCH 0.5000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 5 1 + 5 4 6 1 + 6 4 14 1 + 7 5 15 1 + 8 5 16 1 + 9 5 17 1 + 10 6 7 1 + 11 6 18 1 + 12 6 19 1 + 13 7 8 1 + 14 8 9 1 + 15 9 10 1 + 16 9 20 1 + 17 9 21 1 + 18 10 11 1 + 19 10 22 1 + 20 10 23 1 + 21 11 12 2 + 22 11 13 1 + 23 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT L-2-AMINO-4,5-DITHIAOCTANEDIOIC ACID 2-DEAMINO-L-CYSTINE,PE +@MOLECULE +CUVGAB + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.2711 1.3119 5.5260 P 1 CUVG 0.9712 + 2 O1 1.3020 1.8936 4.4238 O.3 1 CUVG -0.7712 + 3 O2 -0.0504 2.3026 6.5999 O.3 1 CUVG -0.7000 + 4 O3 2.0710 -0.5619 5.0864 O.3 1 CUVG -0.6800 + 5 O4 -2.2962 0.7823 5.5242 O.3 1 CUVG -0.6800 + 6 C1 0.9764 -0.2985 5.9843 C.3 1 CUVG 0.2800 + 7 C2 -0.1452 -1.3142 5.6934 C.3 1 CUVG 0.0000 + 8 C3 -0.8660 -0.8272 4.4200 C.3 1 CUVG 0.0000 + 9 C4 -1.1741 0.6662 4.6333 C.3 1 CUVG 0.2800 + 10 C5 1.4915 -0.3839 7.4064 C.3 1 CUVG 0.0000 + 11 C6 -1.5182 1.3869 3.3451 C.3 1 CUVG 0.0000 + 12 H1 1.1089 2.8194 4.1662 H 1 CUVG 0.5000 + 13 H3 2.3450 0.3052 4.7161 H 1 CUVG 0.4000 + 14 H4 -2.1656 1.5969 6.0538 H 1 CUVG 0.4000 + 15 H21 0.2509 -2.3237 5.5408 H 1 CUVG 0.0000 + 16 H22 -0.8619 -1.3424 6.5225 H 1 CUVG 0.0000 + 17 H31 -0.2034 -0.9634 3.5574 H 1 CUVG 0.0000 + 18 H32 -1.7781 -1.4105 4.2560 H 1 CUVG 0.0000 + 19 H51 2.2901 0.3486 7.5664 H 1 CUVG 0.0000 + 20 H52 0.6975 -0.1785 8.1308 H 1 CUVG 0.0000 + 21 H53 1.9154 -1.3719 7.6145 H 1 CUVG 0.0000 + 22 H61 -2.4256 0.9733 2.8923 H 1 CUVG 0.0000 + 23 H62 -1.7119 2.4469 3.5421 H 1 CUVG 0.0000 + 24 H63 -0.7023 1.3238 2.6189 H 1 CUVG 0.0000 +@BOND + 1 1 9 1 + 2 1 6 1 + 3 1 3 1 + 4 1 2 1 + 5 2 12 1 + 6 4 13 1 + 7 4 6 1 + 8 5 14 1 + 9 5 9 1 + 10 6 10 1 + 11 6 7 1 + 12 7 16 1 + 13 7 15 1 + 14 7 8 1 + 15 8 18 1 + 16 8 17 1 + 17 8 9 1 + 18 9 11 1 + 19 10 21 1 + 20 10 20 1 + 21 10 19 1 + 22 11 24 1 + 23 11 23 1 + 24 11 22 1 +@SUBSTRUCTURE + 1 CUVG 1 +@COMMENT +COMMENT 1,2,5-TRIHYDROXY-2,5-DIMETHYLPHOSPHOLANE 1-OXIDE +@MOLECULE +CUVJOS + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.9250 -4.7746 13.8897 N.3 1 CHGB -0.4820 + 2 N2 -8.7096 -3.7189 14.4561 N.3 1 CHGB -0.6410 + 3 C3 -10.1657 -4.0321 14.2807 C.3 1 CHGB 0.5030 + 4 H11 -6.9143 -4.5764 13.8655 H 1 CHGB 0.3600 + 5 H21 -8.0096 -5.6747 14.3834 H 1 CHGB 0.3600 + 6 H12 -8.5035 -3.5598 15.4589 H 1 CHGB 0.4500 + 7 H22 -8.5181 -2.8200 13.9759 H 1 CHGB 0.4500 + 8 H13 -10.3745 -4.1295 13.2119 H 1 CHGB 0.0000 + 9 H23 -10.3896 -4.9543 14.8235 H 1 CHGB 0.0000 + 10 H33 -10.7262 -3.1954 14.7040 H 1 CHGB 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 2 3 1 + 5 2 6 1 + 6 2 7 1 + 7 3 8 1 + 8 3 9 1 + 9 3 10 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT 1-METHYLHYDRAZINIUM TRIFLUOROACETATE (AT 150 DEG.K) +@MOLECULE +CUYRAP + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.8829 -4.2706 13.7293 O.3 1 UNCH -0.2800 + 2 O2 -13.1347 -4.3028 12.0880 O.2 1 UNCH -0.5700 + 3 O3 -6.4339 -4.1868 12.4835 O.3 1 UNCH -0.3625 + 4 O4 -7.4251 -4.2251 17.1760 O.3 1 UNCH -0.3625 + 5 C2 -10.7839 -4.2627 12.3635 C.2 1 UNCH 0.0550 + 6 C3 -9.4483 -4.2377 12.0048 C.2 1 UNCH -0.1500 + 7 C4 -7.3171 -4.2070 13.5283 C.2 1 UNCH 0.0825 + 8 C5 -6.9723 -4.2070 14.8914 C.2 1 UNCH -0.1500 + 9 C6 -7.9432 -4.2286 15.9057 C.2 1 UNCH 0.0825 + 10 C7 -9.3034 -4.2511 15.5912 C.2 1 UNCH -0.1500 + 11 C8 -9.6204 -4.2506 14.2349 C.2 1 UNCH 0.1400 + 12 C9 -8.6888 -4.2297 13.2085 C.2 1 UNCH 0.0000 + 13 C10 -12.0091 -4.2808 11.5893 C.2 1 UNCH 0.5940 + 14 C11 -11.8531 -4.2714 10.0876 C.3 1 UNCH 0.0610 + 15 C12 -5.0492 -4.1639 12.8076 C.3 1 UNCH 0.2800 + 16 C13 -8.3579 -4.2463 18.2506 C.3 1 UNCH 0.2800 + 17 H3 -9.0485 -4.2262 11.0004 H 1 UNCH 0.1500 + 18 H5 -5.9316 -4.1901 15.2032 H 1 UNCH 0.1500 + 19 H7 -10.0948 -4.2683 16.3273 H 1 UNCH 0.1500 + 20 H111 -11.3021 -5.1578 9.7615 H 1 UNCH 0.0000 + 21 H112 -11.3337 -3.3633 9.7695 H 1 UNCH 0.0000 + 22 H121 -4.4869 -4.1498 11.8690 H 1 UNCH 0.0000 + 23 H122 -4.7573 -5.0652 13.3566 H 1 UNCH 0.0000 + 24 H131 -7.7899 -4.2405 19.1858 H 1 UNCH 0.0000 + 25 H132 -8.9919 -3.3535 18.2403 H 1 UNCH 0.0000 + 26 H114 -12.8410 -4.2867 9.6174 H 1 UNCH 0.0000 + 27 H124 -4.7891 -3.2578 13.3646 H 1 UNCH 0.0000 + 28 H134 -8.9601 -5.1607 18.2323 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 11 1 + 3 2 13 2 + 4 3 7 1 + 5 3 15 1 + 6 4 9 1 + 7 4 16 1 + 8 5 6 2 + 9 5 13 1 + 10 6 12 1 + 11 6 17 1 + 12 7 8 2 + 13 7 12 1 + 14 8 9 1 + 15 8 18 1 + 16 9 10 2 + 17 10 11 1 + 18 10 19 1 + 19 11 12 2 + 20 13 14 1 + 21 14 20 1 + 22 14 21 1 + 23 14 26 1 + 24 15 22 1 + 25 15 23 1 + 26 15 27 1 + 27 16 24 1 + 28 16 25 1 + 29 16 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-ACETYL-4,6-DIMETHOXYBENZOFURAN CALEBERTIN A +@MOLECULE +CYANAM01 + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.6629 -3.9830 13.6271 N.3 1 UNCH -0.9660 + 2 N2 -8.9020 -5.0695 15.8536 N.1 1 UNCH -0.5571 + 3 C1 -8.7849 -4.5586 14.8239 C.1 1 UNCH 0.6831 + 4 H1 -8.1204 -4.4494 12.8944 H 1 UNCH 0.4200 + 5 H2 -9.4366 -3.4267 13.2521 H 1 UNCH 0.4200 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 2 3 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CYANAMIDE (AT 108 DEG.K) +@MOLECULE +CYGUAN01 + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -12.0017 -3.0646 10.1904 CL 1 CYGU -0.1770 + 2 N1 -8.6693 -4.3083 14.8823 N.2 1 CYGU -0.6929 + 3 C1 -7.5194 -3.4519 15.2508 C.3 1 CYGU 0.8586 + 4 N2 -7.3224 -3.6251 16.6673 N.3 1 CYGU -0.8191 + 5 C2 -7.5433 -4.8136 17.2470 C.2 1 CYGU 0.5500 + 6 N3 -8.3272 -5.6984 16.7484 N.2 1 CYGU -0.6510 + 7 C3 -8.9808 -5.3729 15.6214 C.2 1 CYGU 0.9098 + 8 C4 -6.2583 -3.9069 14.5105 C.3 1 CYGU 0.0000 + 9 C5 -7.7901 -1.9634 15.0015 C.3 1 CYGU 0.0000 + 10 N4 -6.9157 -4.9744 18.4274 N.3 1 CYGU -0.8500 + 11 N5 -9.9524 -6.2036 15.3109 N.3 1 CYGU -0.7544 + 12 C6 -9.4273 -4.0093 13.7849 C.2 1 CYGU 0.3490 + 13 C7 -8.9933 -4.3366 12.4949 C.2 1 CYGU -0.1500 + 14 C8 -9.7889 -4.0421 11.3825 C.2 1 CYGU -0.1500 + 15 C9 -11.0254 -3.4230 11.5563 C.2 1 CYGU 0.1770 + 16 C10 -11.4754 -3.1011 12.8347 C.2 1 CYGU -0.1500 + 17 C11 -10.6799 -3.3975 13.9453 C.2 1 CYGU -0.1500 + 18 H1 -6.3182 -3.6904 13.4396 H 1 CYGU 0.0000 + 19 H2 -6.0964 -4.9852 14.6211 H 1 CYGU 0.0000 + 20 H3 -5.3675 -3.3990 14.8983 H 1 CYGU 0.0000 + 21 H4 -7.9101 -1.7404 13.9360 H 1 CYGU 0.0000 + 22 H5 -6.9629 -1.3457 15.3714 H 1 CYGU 0.0000 + 23 H6 -8.6975 -1.6329 15.5203 H 1 CYGU 0.0000 + 24 H7 -6.6208 -3.0300 17.0908 H 1 CYGU 0.4000 + 25 H8 -5.9686 -4.6282 18.5182 H 1 CYGU 0.4000 + 26 H9 -7.0039 -5.9094 18.8174 H 1 CYGU 0.4000 + 27 H10 -10.0902 -6.9675 15.9583 H 1 CYGU 0.4500 + 28 H11 -10.5309 -6.1175 14.4931 H 1 CYGU 0.4500 + 29 H12 -8.0426 -4.8394 12.3364 H 1 CYGU 0.1500 + 30 H13 -9.4420 -4.2993 10.3829 H 1 CYGU 0.1500 + 31 H14 -12.4404 -2.6155 12.9704 H 1 CYGU 0.1500 + 32 H15 -11.0383 -3.1319 14.9384 H 1 CYGU 0.1500 +@BOND + 1 1 15 1 + 2 2 12 1 + 3 2 7 2 + 4 2 3 1 + 5 3 9 1 + 6 3 8 1 + 7 3 4 1 + 8 4 24 1 + 9 4 5 am + 10 5 10 am + 11 5 6 2 + 12 6 7 am + 13 7 11 am + 14 8 20 1 + 15 8 19 1 + 16 8 18 1 + 17 9 23 1 + 18 9 22 1 + 19 9 21 1 + 20 10 26 1 + 21 10 25 1 + 22 11 28 1 + 23 11 27 1 + 24 12 17 2 + 25 12 13 1 + 26 13 29 1 + 27 13 14 2 + 28 14 30 1 + 29 14 15 1 + 30 15 16 2 + 31 16 31 1 + 32 16 17 1 + 33 17 32 1 +@SUBSTRUCTURE + 1 CYGU 1 +@COMMENT +COMMENT 4,6-DIAMINO-1-(P-CHLOROPHENYL)-1,2-DIHYDRO-2,2-DIMETHYL-S-T +@MOLECULE +DABHAP + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.0187 -7.6751 13.3460 C.2 1 DABH 0.1000 + 2 C2 -6.7736 -7.1913 13.7626 C.2 1 DABH -0.1500 + 3 C3 -6.6797 -6.2325 14.7745 C.2 1 DABH -0.1500 + 4 C4 -7.8436 -5.7851 15.4011 C.2 1 DABH -0.0090 + 5 C5 -9.0900 -6.3026 15.0422 C.2 1 DABH -0.1500 + 6 C6 -9.1673 -7.2614 14.0293 C.2 1 DABH -0.1500 + 7 N7 -8.0913 -8.7190 12.4181 N.3 1 DABH -0.9000 + 8 S8 -7.7546 -4.5393 16.6739 S.3 1 DABH 1.4970 + 9 O9 -6.4305 -3.9502 16.6171 O.3 1 DABH -0.6500 + 10 O10 -8.2055 -5.1937 17.8862 O.3 1 DABH -0.6500 + 11 N11 -8.8593 -3.4349 16.2477 N.2 1 DABH -0.6380 + 12 C12 -8.7500 -2.6489 15.2239 C.2 1 DABH 0.4856 + 13 C13 -7.6502 -2.5720 14.2239 C.2 1 DABH -0.1356 + 14 C14 -7.7843 -1.6851 13.2210 C.2 1 DABH 0.2477 + 15 N15 -8.8658 -0.8373 13.0531 N.2 1 DABH -0.6210 + 16 C16 -9.8114 -0.9006 13.9441 C.2 1 DABH 0.4390 + 17 N17 -9.7761 -1.7683 15.0007 N.3 1 DABH -0.5000 + 18 O18 -6.7386 -1.6464 12.3046 O.3 1 DABH -0.3567 + 19 C19 -6.8708 -0.6400 11.3062 C.3 1 DABH 0.2800 + 20 C20 -11.0025 0.0091 13.8065 C.3 1 DABH 0.0610 + 21 H2 -5.8617 -7.5610 13.2998 H 1 DABH 0.1500 + 22 H3 -5.7029 -5.8580 15.0719 H 1 DABH 0.1500 + 23 H5 -9.9931 -5.9846 15.5575 H 1 DABH 0.1500 + 24 H6 -10.1350 -7.6887 13.7780 H 1 DABH 0.1500 + 25 H7 -7.3126 -8.7513 11.7674 H 1 DABH 0.4000 + 26 H71 -8.9885 -8.7990 11.9501 H 1 DABH 0.4000 + 27 H13 -6.7702 -3.1917 14.2948 H 1 DABH 0.1500 + 28 H17 -10.5310 -1.7774 15.6730 H 1 DABH 0.4000 + 29 H19 -7.7529 -0.8180 10.6819 H 1 DABH 0.0000 + 30 H191 -5.9884 -0.6904 10.6613 H 1 DABH 0.0000 + 31 H192 -6.9025 0.3589 11.7544 H 1 DABH 0.0000 + 32 H20 -10.8696 0.6966 12.9668 H 1 DABH 0.0000 + 33 H201 -11.1285 0.5869 14.7265 H 1 DABH 0.0000 + 34 H202 -11.8993 -0.5938 13.6383 H 1 DABH 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 21 1 + 6 3 4 2 + 7 3 22 1 + 8 4 5 1 + 9 4 8 1 + 10 5 6 2 + 11 5 23 1 + 12 6 24 1 + 13 7 25 1 + 14 7 26 1 + 15 8 9 1 + 16 8 10 1 + 17 8 11 1 + 18 11 12 2 + 19 12 13 1 + 20 12 17 am + 21 13 14 2 + 22 13 27 1 + 23 14 15 1 + 24 14 18 1 + 25 15 16 2 + 26 16 17 am + 27 16 20 1 + 28 17 28 1 + 29 18 19 1 + 30 19 29 1 + 31 19 30 1 + 32 19 31 1 + 33 20 32 1 + 34 20 33 1 + 35 20 34 1 +@SUBSTRUCTURE + 1 DABH 1 +@COMMENT +COMMENT N-1--(6-METHOXY-2-METHYL-4-PYRIMIDINIUMYL)-SULFANILAMIDE MO +@MOLECULE +DABLIB + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.6439 -3.8111 15.5442 C.3 1 UNCH -0.1950 + 2 C2 -10.4429 -4.2337 14.3550 C.3 1 UNCH 0.1900 + 3 C3 -8.8840 -4.8330 16.3097 C.3 1 UNCH 0.4634 + 4 F1 -8.8840 -4.8064 17.6847 F 1 UNCH -0.2317 + 5 F2 -8.8840 -6.1531 15.9240 F 1 UNCH -0.2317 + 6 H1 -10.1575 -3.0599 16.1320 H 1 UNCH 0.1000 + 7 H2 -11.1032 -3.4099 14.0575 H 1 UNCH 0.0000 + 8 C1B -8.1242 -3.8111 15.5442 C.3 1 UNCH -0.1950 + 9 C1J -9.6439 -4.6563 13.1658 C.3 1 UNCH -0.1950 + 10 H2J -11.1032 -5.0575 14.6525 H 1 UNCH 0.0000 + 11 C2H -7.3251 -4.2337 14.3550 C.3 1 UNCH 0.1900 + 12 H1B -7.6105 -3.0599 16.1320 H 1 UNCH 0.1000 + 13 C1H -8.1242 -4.6563 13.1658 C.3 1 UNCH -0.1950 + 14 C3H -8.8840 -3.6344 12.4003 C.3 1 UNCH 0.4634 + 15 H1J -10.1575 -5.4075 12.5780 H 1 UNCH 0.1000 + 16 H2H -6.6648 -5.0575 14.6525 H 1 UNCH 0.0000 + 17 H2B -6.6648 -3.4099 14.0575 H 1 UNCH 0.0000 + 18 H1H -7.6105 -5.4075 12.5780 H 1 UNCH 0.1000 + 19 F1H -8.8840 -3.6610 11.0253 F 1 UNCH -0.2317 + 20 F2H -8.8840 -2.3143 12.7860 F 1 UNCH -0.2317 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 6 1 + 4 1 8 1 + 5 2 7 1 + 6 2 9 1 + 7 2 10 1 + 8 3 4 1 + 9 3 5 1 + 10 3 8 1 + 11 8 11 1 + 12 8 12 1 + 13 9 13 1 + 14 9 14 1 + 15 9 15 1 + 16 11 13 1 + 17 11 16 1 + 18 11 17 1 + 19 13 14 1 + 20 13 18 1 + 21 14 19 1 + 22 14 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ANTI-4,4,8,8-TETRAFLUOROTRICYCLO(5.1.0.0-3,5-)OCTANE (FOR S +@MOLECULE +DACSAB + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 4.0408 -2.1803 6.8379 F 1 DACL -0.3290 + 2 O11 4.6238 -1.3311 4.5420 O.3 1 DACL -0.7000 + 3 O1 3.2670 -3.5212 4.9114 O.3 1 DACL -0.5512 + 4 P2 3.5566 -1.9957 5.3552 P 1 DACL 1.5681 + 5 N3 2.0798 -1.2867 5.4513 N.3 1 DACL -0.8079 + 6 C4 1.0743 -2.0431 6.1891 C.3 1 DACL 0.2700 + 7 C5 0.9576 -3.4634 5.6237 C.3 1 DACL 0.0000 + 8 C6 2.2868 -4.2061 5.6702 C.3 1 DACL 0.2800 + 9 C7 2.0606 0.1671 5.6657 C.3 1 DACL 0.4135 + 10 C8 0.7920 0.8182 5.0896 C.3 1 DACL 0.0000 + 11 C9 2.3699 0.5904 7.0955 C.2 1 DACL -0.1435 + 12 C10 1.3748 0.7184 8.0778 C.2 1 DACL -0.1500 + 13 C11 1.7008 1.0978 9.3824 C.2 1 DACL -0.1500 + 14 C12 3.0256 1.3525 9.7266 C.2 1 DACL -0.1500 + 15 C13 4.0264 1.2281 8.7675 C.2 1 DACL -0.1500 + 16 C14 3.7020 0.8503 7.4631 C.2 1 DACL -0.1500 + 17 H31 2.6416 -4.3212 6.7001 H 1 DACL 0.0000 + 18 H32 2.1697 -5.2074 5.2445 H 1 DACL 0.0000 + 19 H41 1.3369 -2.1031 7.2517 H 1 DACL 0.0000 + 20 H42 0.0842 -1.5832 6.1169 H 1 DACL 0.0000 + 21 H51 0.2048 -4.0219 6.1911 H 1 DACL 0.0000 + 22 H52 0.6109 -3.4043 4.5842 H 1 DACL 0.0000 + 23 H7 2.8598 0.5889 5.0397 H 1 DACL 0.0000 + 24 H81 -0.1233 0.5281 5.6134 H 1 DACL 0.0000 + 25 H82 0.6687 0.5516 4.0336 H 1 DACL 0.0000 + 26 H83 0.8643 1.9108 5.1461 H 1 DACL 0.0000 + 27 H10 0.3320 0.5206 7.8446 H 1 DACL 0.1500 + 28 H11 0.9188 1.1936 10.1314 H 1 DACL 0.1500 + 29 H12 3.2786 1.6466 10.7417 H 1 DACL 0.1500 + 30 H13 5.0624 1.4234 9.0326 H 1 DACL 0.1500 + 31 H14 4.5043 0.7587 6.7318 H 1 DACL 0.1500 +@BOND + 1 1 4 1 + 2 2 4 1 + 3 3 4 1 + 4 3 8 1 + 5 4 5 1 + 6 5 6 1 + 7 5 9 1 + 8 6 7 1 + 9 6 19 1 + 10 6 20 1 + 11 7 8 1 + 12 7 21 1 + 13 7 22 1 + 14 8 17 1 + 15 8 18 1 + 16 9 10 1 + 17 9 11 1 + 18 9 23 1 + 19 10 24 1 + 20 10 25 1 + 21 10 26 1 + 22 11 12 2 + 23 11 16 1 + 24 12 13 1 + 25 12 27 1 + 26 13 14 2 + 27 13 28 1 + 28 14 15 1 + 29 14 29 1 + 30 15 16 2 + 31 15 30 1 + 32 16 31 1 +@SUBSTRUCTURE + 1 DACL 1 +@COMMENT +COMMENT 2(S)-FLUORO-2-OXO-3-((S)-ALPHA-METHYLBENZYL)-1,3,2-OXAZAPHO +@MOLECULE +DACYIP + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S9 -10.8981 -2.1527 14.3550 S.3 1 UNCH -0.6773 + 2 P1 -9.3411 -3.3444 14.3550 P 1 UNCH 1.0072 + 3 N7 -7.8483 -2.5926 14.3550 N.3 1 UNCH -0.8079 + 4 C2 -9.3982 -4.7568 15.5540 C.3 1 UNCH -0.0310 + 5 C3 -10.0212 -5.5847 14.3549 C.3 1 UNCH 0.0000 + 6 C4 -10.3856 -4.6108 16.7207 C.3 1 UNCH 0.0000 + 7 C5 -8.0576 -5.2422 16.1139 C.3 1 UNCH 0.0000 + 8 C6 -9.7856 -7.0927 14.3549 C.3 1 UNCH 0.0000 + 9 C8 -7.5106 -1.8009 15.5413 C.3 1 UNCH 0.2700 + 10 H31 -11.1189 -5.4715 14.3549 H 1 UNCH 0.0000 + 11 H41 -11.3956 -4.3633 16.3819 H 1 UNCH 0.0000 + 12 H42 -10.4587 -5.5456 17.2876 H 1 UNCH 0.0000 + 13 H43 -10.0580 -3.8225 17.4067 H 1 UNCH 0.0000 + 14 H51 -7.2747 -5.3035 15.3602 H 1 UNCH 0.0000 + 15 H52 -7.6957 -4.5703 16.8983 H 1 UNCH 0.0000 + 16 H53 -8.1597 -6.2349 16.5660 H 1 UNCH 0.0000 + 17 H61 -8.7206 -7.3424 14.3549 H 1 UNCH 0.0000 + 18 H62 -10.2397 -7.5513 13.4704 H 1 UNCH 0.0000 + 19 H81 -6.4429 -1.5565 15.5565 H 1 UNCH 0.0000 + 20 H82 -7.7212 -2.3599 16.4564 H 1 UNCH 0.0000 + 21 H83 -8.0845 -0.8690 15.5851 H 1 UNCH 0.0000 + 22 C2G -9.3982 -4.7568 13.1559 C.3 1 UNCH -0.0310 + 23 C8G -7.5106 -1.8008 13.1687 C.3 1 UNCH 0.2700 + 24 H62G -10.2397 -7.5513 15.2394 H 1 UNCH 0.0000 + 25 C4G -10.3856 -4.6107 11.9892 C.3 1 UNCH 0.0000 + 26 C5G -8.0576 -5.2421 12.5960 C.3 1 UNCH 0.0000 + 27 H81G -6.4429 -1.5564 13.1535 H 1 UNCH 0.0000 + 28 H82G -7.7212 -2.3598 12.2536 H 1 UNCH 0.0000 + 29 H83G -8.0845 -0.8690 13.1249 H 1 UNCH 0.0000 + 30 H41G -11.3956 -4.3632 12.3280 H 1 UNCH 0.0000 + 31 H42G -10.4587 -5.5455 11.4222 H 1 UNCH 0.0000 + 32 H43G -10.0580 -3.8224 11.3032 H 1 UNCH 0.0000 + 33 H51G -7.2747 -5.3034 13.3496 H 1 UNCH 0.0000 + 34 H52G -7.6957 -4.5701 11.8116 H 1 UNCH 0.0000 + 35 H53G -8.1597 -6.2348 12.1438 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 2 4 1 + 4 2 22 1 + 5 3 9 1 + 6 3 23 1 + 7 4 5 1 + 8 4 6 1 + 9 4 7 1 + 10 5 8 1 + 11 5 10 1 + 12 5 22 1 + 13 6 11 1 + 14 6 12 1 + 15 6 13 1 + 16 7 14 1 + 17 7 15 1 + 18 7 16 1 + 19 8 17 1 + 20 8 18 1 + 21 8 24 1 + 22 9 19 1 + 23 9 20 1 + 24 9 21 1 + 25 22 25 1 + 26 22 26 1 + 27 23 27 1 + 28 23 28 1 + 29 23 29 1 + 30 25 30 1 + 31 25 31 1 + 32 25 32 1 + 33 26 33 1 + 34 26 34 1 + 35 26 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-DIMETHYLAMINO-2,2,3,4,4-PENTAMETHYL-1LAMBDA-5--PHOSPHETAN +@MOLECULE +DADDAN + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O10 -6.8341 -3.2079 13.5407 O.3 1 UNCH -0.4300 + 2 O11 -7.1703 -4.1615 11.4702 O.2 1 UNCH -0.5700 + 3 O14 -7.2166 -5.5541 16.2646 O.2 1 UNCH -0.5700 + 4 O15 -8.7818 -4.7209 14.8023 O.3 1 UNCH -0.4300 + 5 N4 -10.9957 -2.3838 14.8349 N.3 1 UNCH -0.8100 + 6 C1 -9.0176 -2.2015 13.5125 C.2 1 UNCH -0.2764 + 7 C2 -10.0614 -2.1332 12.6785 C.2 1 UNCH -0.2882 + 8 C3 -11.3532 -2.2394 13.4113 C.3 1 UNCH 0.4082 + 9 C5 -11.4487 -3.6599 15.4034 C.3 1 UNCH 0.2700 + 10 C6 -10.3881 -4.0020 16.4368 C.3 1 UNCH 0.0000 + 11 C7 -9.1057 -3.6452 15.7043 C.3 1 UNCH 0.2800 + 12 C8 -9.4992 -2.3721 14.9203 C.3 1 UNCH 0.4082 + 13 C9 -7.5768 -2.0489 13.1515 C.3 1 UNCH 0.4182 + 14 C11 -6.7648 -4.2103 12.6222 C.2 1 UNCH 0.6590 + 15 C12 -6.1644 -5.4433 13.2534 C.3 1 UNCH 0.0610 + 16 C13 -7.2367 -6.2628 13.9548 C.3 1 UNCH 0.0610 + 17 C14 -7.7401 -5.5138 15.1613 C.2 1 UNCH 0.6590 + 18 H2 -9.9976 -1.9937 11.6085 H 1 UNCH 0.1500 + 19 H7 -8.2838 -3.4317 16.3970 H 1 UNCH 0.0000 + 20 H8 -9.2282 -1.4887 15.5125 H 1 UNCH 0.0000 + 21 H31 -11.9471 -3.0731 13.0208 H 1 UNCH 0.0000 + 22 H32 -11.9334 -1.3203 13.2773 H 1 UNCH 0.0000 + 23 H51 -12.4391 -3.5601 15.8575 H 1 UNCH 0.0000 + 24 H52 -11.4927 -4.4619 14.6551 H 1 UNCH 0.0000 + 25 H61 -10.5091 -3.3776 17.3300 H 1 UNCH 0.0000 + 26 H62 -10.4369 -5.0560 16.7265 H 1 UNCH 0.0000 + 27 H91 -7.4382 -1.8272 12.0864 H 1 UNCH 0.0000 + 28 H92 -7.1570 -1.1987 13.7003 H 1 UNCH 0.0000 + 29 H121 -5.6942 -6.0323 12.4580 H 1 UNCH 0.0000 + 30 H122 -5.3628 -5.1434 13.9385 H 1 UNCH 0.0000 + 31 H131 -8.0767 -6.4933 13.2894 H 1 UNCH 0.0000 + 32 H132 -6.8299 -7.2207 14.2970 H 1 UNCH 0.0000 +@BOND + 1 1 13 1 + 2 1 14 1 + 3 2 14 2 + 4 3 17 2 + 5 4 11 1 + 6 4 17 1 + 7 5 8 1 + 8 5 9 1 + 9 5 12 1 + 10 6 7 2 + 11 6 12 1 + 12 6 13 1 + 13 7 8 1 + 14 7 18 1 + 15 8 21 1 + 16 8 22 1 + 17 9 10 1 + 18 9 23 1 + 19 9 24 1 + 20 10 11 1 + 21 10 25 1 + 22 10 26 1 + 23 11 12 1 + 24 11 19 1 + 25 12 20 1 + 26 13 27 1 + 27 13 28 1 + 28 14 15 1 + 29 15 16 1 + 30 15 29 1 + 31 15 30 1 + 32 16 17 1 + 33 16 31 1 + 34 16 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (+)-7-METHYL-2,3,5,7A-TETRAHYDRO-1H-PYRROLIZINE-1,8-DIYL SU +@MOLECULE +DADLAV + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -11.2662 -4.8811 16.2773 O.2 1 DADG -0.5700 + 2 O2 -8.3476 -5.5883 11.9040 O.2 1 DADG -0.5700 + 3 N1 -8.9503 -4.6365 16.2933 N.3 1 DADG -0.5390 + 4 N2 -10.9942 -4.9719 13.3328 N.3 1 DADG -0.9000 + 5 C1 -10.1907 -4.7861 15.7157 C.2 1 DADG 0.6156 + 6 C2 -9.9603 -4.8380 14.2292 C.2 1 DADG 0.1144 + 7 C3 -8.6276 -4.7455 14.0839 C.2 1 DADG 0.0144 + 8 C4 -7.9621 -4.6250 15.3581 C.2 1 DADG 0.1090 + 9 C5 -8.0070 -4.7526 12.7429 C.2 1 DADG 0.4946 + 10 C6 -6.9732 -3.7061 12.4229 C.3 1 DADG 0.0610 + 11 C7 -6.6666 -4.5519 15.6637 C.2 1 DADG -0.3000 + 12 H1 -8.8270 -4.5962 17.2942 H 1 DADG 0.3700 + 13 H2 -10.6975 -5.4424 12.4755 H 1 DADG 0.4000 + 14 H3 -11.8077 -5.4118 13.7646 H 1 DADG 0.4000 + 15 H4 -6.3344 -4.4793 16.6950 H 1 DADG 0.1500 + 16 H5 -5.8887 -4.5774 14.9090 H 1 DADG 0.1500 + 17 H6 -7.0247 -2.8693 13.1246 H 1 DADG 0.0000 + 18 H7 -7.1673 -3.3098 11.4219 H 1 DADG 0.0000 + 19 H8 -5.9770 -4.1538 12.4548 H 1 DADG 0.0000 +@BOND + 1 1 5 2 + 2 2 9 2 + 3 3 5 am + 4 3 8 1 + 5 3 12 1 + 6 4 6 1 + 7 4 13 1 + 8 4 14 1 + 9 5 6 1 + 10 6 7 2 + 11 7 8 1 + 12 7 9 1 + 13 8 11 2 + 14 9 10 1 + 15 10 17 1 + 16 10 18 1 + 17 10 19 1 + 18 11 15 1 + 19 11 16 1 +@SUBSTRUCTURE + 1 DADG 1 +@COMMENT +COMMENT 4-ACETYL-3-AMINO-5-METHYLENE-CDELTA-3--PYRROLIN-2-ONE +@MOLECULE +DADLEZ + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.8268 -2.8771 13.2158 O.3 1 DADL -0.2267 + 2 C1 -8.1312 -2.5808 14.3505 C.2 1 DADL 0.5856 + 3 C2 -8.2188 -3.6592 15.3571 C.2 1 DADL 0.1144 + 4 C3 -9.0234 -4.5519 14.7907 C.2 1 DADL 0.0144 + 5 C4 -9.4223 -4.1039 13.4961 C.2 1 DADL 0.0767 + 6 N1 -7.5016 -1.4656 14.4726 N.2 1 DADL -0.8500 + 7 N2 -7.5706 -3.5896 16.5649 N.3 1 DADL -0.9000 + 8 C5 -9.3793 -5.8117 15.4725 C.2 1 DADL 0.4946 + 9 O2 -9.7559 -5.7983 16.6453 O.2 1 DADL -0.5700 + 10 C6 -10.2658 -4.6693 12.6281 C.2 1 DADL -0.3000 + 11 C7 -9.2496 -7.1037 14.7104 C.3 1 DADL 0.0610 + 12 H1 -8.6270 -6.9791 13.8204 H 1 DADL 0.0000 + 13 H2 -8.7659 -7.8468 15.3511 H 1 DADL 0.0000 + 14 H3 -10.2414 -7.4575 14.4189 H 1 DADL 0.0000 + 15 H4 -8.0731 -4.0867 17.3019 H 1 DADL 0.4000 + 16 H5 -7.3569 -2.6208 16.8101 H 1 DADL 0.4000 + 17 H6 -10.7781 -5.6037 12.8245 H 1 DADL 0.1500 + 18 H7 -10.4803 -4.1831 11.6805 H 1 DADL 0.1500 + 19 H8 -7.6395 -0.9437 13.6002 H 1 DADL 0.4000 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 6 2 + 4 2 3 1 + 5 3 7 1 + 6 3 4 2 + 7 4 8 1 + 8 4 5 1 + 9 5 10 2 + 10 6 19 1 + 11 7 16 1 + 12 7 15 1 + 13 8 11 1 + 14 8 9 2 + 15 10 18 1 + 16 10 17 1 + 17 11 14 1 + 18 11 13 1 + 19 11 12 1 +@SUBSTRUCTURE + 1 DADL 1 +@COMMENT +COMMENT 4-ACETYL-3-AMINO-2-IMINO-5-METHYLENE-2,5-DIHYDROFURAN +@MOLECULE +DAFKIE + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.3452 -4.0013 14.3136 C.2 1 UNCH 0.1790 + 2 C2 -8.2754 -3.1375 14.5654 C.2 1 UNCH -0.1500 + 3 C3 -7.3271 -2.8707 13.5737 C.2 1 UNCH -0.1500 + 4 C4 -7.4470 -3.4512 12.3053 C.2 1 UNCH -0.1435 + 5 C5 -8.5161 -4.3186 12.0518 C.2 1 UNCH -0.1500 + 6 C6 -9.4620 -4.5827 13.0462 C.2 1 UNCH -0.1500 + 7 C7 -6.4118 -3.1931 11.2507 C.3 1 UNCH 0.1435 + 8 C8 -11.6796 -4.6230 17.5657 C.3 1 UNCH 0.3001 + 9 N1 -10.3068 -4.2366 15.3108 N.2 1 UNCH -0.1790 + 10 N2 -10.1363 -5.3661 15.8108 N.2 1 UNCH -0.0620 + 11 N3 -11.0512 -5.6616 16.7796 N.3 1 UNCH -0.6081 + 12 H2 -8.1795 -2.6757 15.5443 H 1 UNCH 0.1500 + 13 H3 -6.4967 -2.2053 13.7984 H 1 UNCH 0.1500 + 14 H5 -8.6223 -4.7931 11.0789 H 1 UNCH 0.1500 + 15 H6 -10.2951 -5.2493 12.8389 H 1 UNCH 0.1500 + 16 H71 -5.9831 -2.1915 11.3611 H 1 UNCH 0.0000 + 17 H72 -5.6085 -3.9324 11.3262 H 1 UNCH 0.0000 + 18 H73 -6.8519 -3.2490 10.2495 H 1 UNCH 0.0000 + 19 H81 -12.3420 -5.1039 18.2901 H 1 UNCH 0.0000 + 20 H82 -10.9115 -4.0572 18.0992 H 1 UNCH 0.0000 + 21 H83 -12.2731 -3.9686 16.9223 H 1 UNCH 0.0000 + 22 H31 -10.7857 -6.5062 17.2759 H 1 UNCH 0.3700 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 9 1 + 4 2 3 1 + 5 2 12 1 + 6 3 4 2 + 7 3 13 1 + 8 4 5 1 + 9 4 7 1 + 10 5 6 2 + 11 5 14 1 + 12 6 15 1 + 13 7 16 1 + 14 7 17 1 + 15 7 18 1 + 16 8 11 1 + 17 8 19 1 + 18 8 20 1 + 19 8 21 1 + 20 9 10 2 + 21 10 11 1 + 22 11 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-METHYL-1-P-TOLYL-TRIAZENE +@MOLECULE +DAFPUV + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.0624 -5.7775 12.4290 O.3 1 DAFN 0.2418 + 2 O2 -9.6793 -2.8057 15.2592 O.3 1 DAFN -0.5200 + 3 O3 -9.9812 -2.3104 13.1371 O.2 1 DAFN -0.5200 + 4 N1 -8.8129 -4.6018 12.4121 N.2 1 DAFN -0.4097 + 5 N2 -7.6450 -6.0953 13.7187 N.2 1 DAFN -0.4097 + 6 N3 -9.5446 -3.0314 14.0455 N.2 1 DAFN 0.9610 + 7 N4 -7.9213 -5.0663 15.8336 N.3 1 DAFN -0.8830 + 8 C1 -8.8324 -4.2193 13.6927 C.2 1 DAFN 0.3678 + 9 C2 -8.1205 -5.1246 14.4998 C.2 1 DAFN 0.3718 + 10 H1 -7.5544 -5.8844 16.3116 H 1 DAFN 0.4000 + 11 H2 -8.4667 -4.4448 16.4296 H 1 DAFN 0.4000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 6 1 + 4 3 6 2 + 5 4 8 2 + 6 5 9 2 + 7 6 8 am + 8 7 9 am + 9 7 10 1 + 10 7 11 1 + 11 8 9 1 +@SUBSTRUCTURE + 1 DAFN 1 +@COMMENT +COMMENT 3-AMINO-4-NITROFURAZANE (AT -120 DEG.C) +@MOLECULE +DAGTUA + 26 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.5926 -4.3934 15.8428 S.3 1 UNCH 1.3328 + 2 S2 -7.7405 -6.1904 14.4217 S.3 1 UNCH 1.3328 + 3 O1 -7.4152 -3.7047 13.8781 O.3 1 UNCH -0.1970 + 4 O2 -6.3612 -6.3083 14.8582 O.3 1 UNCH -0.6500 + 5 O3 -9.8604 -3.1117 13.7450 O.3 1 UNCH -0.1970 + 6 O4 -11.9851 -4.3224 15.4391 O.3 1 UNCH -0.6500 + 7 O5 -10.1347 -5.4191 16.7566 O.3 1 UNCH -0.6500 + 8 O6 -8.7482 -7.1233 14.8811 O.3 1 UNCH -0.6500 + 9 N1 -8.2600 -4.5431 14.7011 N.3 1 UNCH -0.2210 + 10 N2 -9.6064 -4.3779 14.3976 N.3 1 UNCH -0.2210 + 11 C1 -10.1714 -2.8268 16.5850 C.3 1 UNCH 0.1052 + 12 C2 -7.7454 -6.2739 12.6397 C.3 1 UNCH 0.1052 + 13 C3 -6.5286 -2.9940 14.7373 C.3 1 UNCH 0.2800 + 14 C4 -10.6193 -3.3675 12.5668 C.3 1 UNCH 0.2800 + 15 H1 -9.1013 -2.8021 16.7941 H 1 UNCH 0.0000 + 16 H2 -10.4688 -2.0106 15.9256 H 1 UNCH 0.0000 + 17 H3 -10.7249 -2.7493 17.5242 H 1 UNCH 0.0000 + 18 H4 -8.7517 -6.0714 12.2712 H 1 UNCH 0.0000 + 19 H5 -7.4551 -7.2892 12.3580 H 1 UNCH 0.0000 + 20 H6 -7.0208 -5.5681 12.2320 H 1 UNCH 0.0000 + 21 H7 -5.8544 -2.3994 14.1152 H 1 UNCH 0.0000 + 22 H8 -7.0933 -2.3164 15.3844 H 1 UNCH 0.0000 + 23 H9 -5.9299 -3.6810 15.3420 H 1 UNCH 0.0000 + 24 H10 -10.8574 -2.4083 12.0995 H 1 UNCH 0.0000 + 25 H11 -10.0313 -3.9618 11.8614 H 1 UNCH 0.0000 + 26 H12 -11.5551 -3.8814 12.8042 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 1 10 1 + 4 1 11 1 + 5 2 4 1 + 6 2 8 1 + 7 2 9 1 + 8 2 12 1 + 9 3 9 1 + 10 3 13 1 + 11 5 10 1 + 12 5 14 1 + 13 9 10 1 + 14 11 15 1 + 15 11 16 1 + 16 11 17 1 + 17 12 18 1 + 18 12 19 1 + 19 12 20 1 + 20 13 21 1 + 21 13 22 1 + 22 13 23 1 + 23 14 24 1 + 24 14 25 1 + 25 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-DIMESYL-1,2-DIMETHOXY-HYDRAZINE (AT -150 DEG.C) +@MOLECULE +DAHBAP + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.5862 -5.5171 15.9336 O.3 1 UNCH -0.4355 + 2 O2 -6.0296 -6.0352 15.1908 O.2 1 UNCH -0.5700 + 3 O3 -10.1509 -2.2350 15.4694 O.2 1 UNCH -0.5700 + 4 N1 -7.9138 -4.7385 14.9675 N.3 1 UNCH -0.1335 + 5 N2 -10.9897 -4.1224 14.4391 N.3 1 UNCH -0.6602 + 6 C6 -8.5661 -3.6403 14.4631 C.2 1 UNCH 0.1234 + 7 C5 -7.9244 -2.8237 13.6094 C.2 1 UNCH -0.1500 + 8 C4 -6.5633 -3.1194 13.2161 C.2 1 UNCH -0.1500 + 9 C3 -5.9176 -4.1847 13.7144 C.2 1 UNCH -0.1356 + 10 C2 -6.6083 -5.0762 14.6864 C.2 1 UNCH 0.6156 + 11 C7 -9.9607 -3.2838 14.8514 C.2 1 UNCH 0.6156 + 12 C8 -12.3269 -3.8800 14.9520 C.3 1 UNCH 0.3001 + 13 C9 -10.8069 -5.3614 13.6968 C.3 1 UNCH 0.3001 + 14 H3 -8.4003 -1.9325 13.2101 H 1 UNCH 0.1500 + 15 H4 -6.0767 -2.4495 12.5135 H 1 UNCH 0.1500 + 16 H5 -4.8976 -4.4355 13.4547 H 1 UNCH 0.1500 + 17 H1 -7.8651 -6.1000 16.2518 H 1 UNCH 0.4000 + 18 H81 -12.5761 -4.6719 15.6647 H 1 UNCH 0.0000 + 19 H82 -12.4095 -2.9143 15.4572 H 1 UNCH 0.0000 + 20 H83 -13.0365 -3.9017 14.1196 H 1 UNCH 0.0000 + 21 H91 -9.8679 -5.3745 13.1405 H 1 UNCH 0.0000 + 22 H92 -10.8270 -6.1985 14.4004 H 1 UNCH 0.0000 + 23 H93 -11.6264 -5.4720 12.9801 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 17 1 + 3 2 10 2 + 4 3 11 2 + 5 4 6 1 + 6 4 10 am + 7 5 11 am + 8 5 12 1 + 9 5 13 1 + 10 6 7 2 + 11 6 11 1 + 12 7 8 1 + 13 7 14 1 + 14 8 9 2 + 15 8 15 1 + 16 9 10 1 + 17 9 16 1 + 18 12 18 1 + 19 12 19 1 + 20 12 20 1 + 21 13 21 1 + 22 13 22 1 + 23 13 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N-DIMETHYL-1-HYDROXY-2(1H)-PYRIDINONE-6-CARBOXAMIDE +@MOLECULE +DAHNAB + 26 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.2809 -2.4716 15.7576 SI 1 UNCH 0.6116 + 2 CL1 -10.0801 -1.4752 15.8191 CL 1 UNCH -0.3701 + 3 C1 -6.9370 -1.2158 15.4848 C.3 1 UNCH -0.0805 + 4 C2 -8.3450 -3.6880 14.3082 C.3 1 UNCH -0.0805 + 5 C3 -8.0517 -3.3637 17.3705 C.3 1 UNCH -0.0805 + 6 H11 -6.9111 -0.4836 16.2977 H 1 UNCH 0.0000 + 7 H12 -7.0896 -0.6731 14.5468 H 1 UNCH 0.0000 + 8 H13 -5.9563 -1.6989 15.4370 H 1 UNCH 0.0000 + 9 H21 -7.3538 -4.1512 14.2299 H 1 UNCH 0.0000 + 10 H22 -8.4876 -3.1024 13.3915 H 1 UNCH 0.0000 + 11 H31 -8.8743 -4.0599 17.5599 H 1 UNCH 0.0000 + 12 H32 -7.1202 -3.9380 17.3696 H 1 UNCH 0.0000 + 13 H33 -8.0098 -2.6593 18.2070 H 1 UNCH 0.0000 + 14 C2A -9.4230 -4.7793 14.4018 C.3 1 UNCH -0.0805 + 15 SI1A -9.4872 -5.9957 12.9524 SI 1 UNCH 0.6116 + 16 H21A -10.4142 -4.3161 14.4801 H 1 UNCH 0.0000 + 17 H22A -9.2805 -5.3649 15.3184 H 1 UNCH 0.0000 + 18 CL1A -7.6879 -6.9921 12.8908 CL 1 UNCH -0.3701 + 19 C1A -10.8311 -7.2516 13.2252 C.3 1 UNCH -0.0805 + 20 C3A -9.7164 -5.1036 11.3395 C.3 1 UNCH -0.0805 + 21 H11A -10.8569 -7.9837 12.4123 H 1 UNCH 0.0000 + 22 H12A -10.6785 -7.7942 14.1632 H 1 UNCH 0.0000 + 23 H13A -11.8118 -6.7684 13.2730 H 1 UNCH 0.0000 + 24 H31A -8.8937 -4.4074 11.1501 H 1 UNCH 0.0000 + 25 H32A -10.6478 -4.5293 11.3404 H 1 UNCH 0.0000 + 26 H33A -9.7582 -5.8080 10.5030 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 3 6 1 + 6 3 7 1 + 7 3 8 1 + 8 4 9 1 + 9 4 10 1 + 10 4 14 1 + 11 5 11 1 + 12 5 12 1 + 13 5 13 1 + 14 14 15 1 + 15 14 16 1 + 16 14 17 1 + 17 15 18 1 + 18 15 19 1 + 19 15 20 1 + 20 19 21 1 + 21 19 22 1 + 22 19 23 1 + 23 20 24 1 + 24 20 25 1 + 25 20 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,5-DICHLORO-2,5-DIMETHYL-2,5-DISILAHEXANE (AT 150 DEG.K) +@MOLECULE +DAJXER + 31 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.2518 -4.1911 15.5587 N.3 1 UNCH -0.5851 + 2 C2 -10.1230 -3.1483 15.7953 C.2 1 UNCH 0.6900 + 3 O1 -10.9745 -3.1704 16.6829 O.2 1 UNCH -0.5700 + 4 N3 -10.0181 -2.0506 14.9919 N.3 1 UNCH -0.4900 + 5 C4 -9.3495 -1.9141 13.7980 C.2 1 UNCH 0.5770 + 6 O2 -9.5032 -0.8755 13.1464 O.2 1 UNCH -0.5700 + 7 C5 -8.4111 -3.0801 13.4019 C.3 1 UNCH 0.0530 + 8 C6 -8.2806 -4.2268 14.4361 C.3 1 UNCH 0.2250 + 9 C7 -7.0267 -2.5514 12.9905 C.3 1 UNCH 0.0000 + 10 N11 -9.7876 -6.0135 13.4396 N.3 1 UNCH -0.6641 + 11 C21 -10.7630 -5.2509 12.8702 C.2 1 UNCH 0.4400 + 12 N31 -10.4210 -4.1586 12.2623 N.2 1 UNCH -0.7370 + 13 C41 -8.9483 -4.0968 12.3632 C.3 1 UNCH 0.2870 + 14 C51 -8.5659 -5.2649 13.3167 C.3 1 UNCH 0.2450 + 15 C8 -9.3781 -5.4015 16.3669 C.3 1 UNCH 0.3001 + 16 C9 -10.4230 -6.3613 15.8029 C.3 1 UNCH 0.0000 + 17 C10 -9.9926 -6.9934 14.4817 C.3 1 UNCH 0.3691 + 18 H3 -10.6868 -1.3200 15.1844 H 1 UNCH 0.3700 + 19 H6 -7.2678 -4.3294 14.8489 H 1 UNCH 0.0000 + 20 H21 -11.8013 -5.5998 12.9892 H 1 UNCH 0.0600 + 21 H41 -8.4604 -4.1072 11.3835 H 1 UNCH 0.0000 + 22 H51 -7.7114 -5.8704 13.0014 H 1 UNCH 0.0000 + 23 H71 -6.3418 -3.3649 12.7257 H 1 UNCH 0.0000 + 24 H72 -7.1058 -1.8893 12.1212 H 1 UNCH 0.0000 + 25 H73 -6.5708 -1.9835 13.8090 H 1 UNCH 0.0000 + 26 H81 -8.3964 -5.8850 16.4317 H 1 UNCH 0.0000 + 27 H82 -9.6623 -5.1183 17.3871 H 1 UNCH 0.0000 + 28 H91 -11.3820 -5.8445 15.6765 H 1 UNCH 0.0000 + 29 H92 -10.5881 -7.1647 16.5306 H 1 UNCH 0.0000 + 30 H101 -9.0741 -7.5749 14.6264 H 1 UNCH 0.0000 + 31 H102 -10.7616 -7.7050 14.1586 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 8 1 + 3 1 15 1 + 4 2 3 2 + 5 2 4 am + 6 4 5 am + 7 4 18 1 + 8 5 6 2 + 9 5 7 1 + 10 7 8 1 + 11 7 9 1 + 12 7 13 1 + 13 8 14 1 + 14 8 19 1 + 15 9 23 1 + 16 9 24 1 + 17 9 25 1 + 18 10 11 am + 19 10 14 1 + 20 10 17 1 + 21 11 12 2 + 22 11 20 1 + 23 12 13 1 + 24 13 14 1 + 25 13 21 1 + 26 14 22 1 + 27 15 16 1 + 28 15 26 1 + 29 15 27 1 + 30 16 17 1 + 31 16 28 1 + 32 16 29 1 + 33 17 30 1 + 34 17 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 14-METHYL-4,6,10,12-TETRA-AZATETRACYCLO(8.4.0.0-2,6-.0-3,14 +@MOLECULE +DAKBAS + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.1960 -5.8941 17.9483 S.3 1 DAKB -0.9500 + 2 O1 -6.1623 -5.5560 12.4075 O.2 1 DAKB -0.5700 + 3 O2 -9.6196 -5.9309 10.8941 O.3 1 DAKB -0.5200 + 4 O3 -11.4226 -4.7311 10.5300 O.2 1 DAKB -0.5200 + 5 N1 -8.0640 -6.0176 16.3637 N.3 1 DAKB -0.6000 + 6 N2 -12.5819 -5.2907 14.7649 N.1 1 DAKB -0.5571 + 7 N3 -10.3304 -4.9336 11.0789 N.2 1 DAKB 0.9070 + 8 C1 -9.4375 -5.8230 16.3700 C.2 1 DAKB 0.0500 + 9 C2 -7.2655 -6.2304 15.2623 C.2 1 DAKB -0.0382 + 10 C3 -7.7976 -6.0445 14.0387 C.2 1 DAKB -0.1238 + 11 C4 -9.2346 -5.5762 13.8664 C.3 1 DAKB 0.4199 + 12 C5 -10.0466 -5.6138 15.1718 C.2 1 DAKB -0.0732 + 13 C6 -11.4608 -5.4405 15.0358 C.1 1 DAKB 0.4921 + 14 C7 -5.8588 -6.6798 15.5443 C.3 1 DAKB 0.1382 + 15 C8 -9.2824 -4.1768 13.2313 C.2 1 DAKB -0.1435 + 16 C9 -8.7860 -3.0831 13.9756 C.2 1 DAKB -0.1500 + 17 C10 -8.8305 -1.7771 13.4795 C.2 1 DAKB -0.1500 + 18 C11 -9.3726 -1.5217 12.2242 C.2 1 DAKB -0.1500 + 19 C12 -9.8670 -2.5753 11.4596 C.2 1 DAKB -0.1500 + 20 C13 -9.8169 -3.8899 11.9594 C.2 1 DAKB 0.1330 + 21 C14 -7.0100 -6.3453 12.8205 C.2 1 DAKB 0.4946 + 22 C15 -7.2564 -7.6702 12.1493 C.3 1 DAKB 0.0610 + 23 H1 -7.7316 -6.2634 17.2932 H 1 DAKB 0.4000 + 24 H4 -9.7248 -6.3112 13.2189 H 1 DAKB 0.0000 + 25 H17 -5.8699 -7.6077 16.1264 H 1 DAKB 0.0000 + 26 H27 -5.2723 -6.8690 14.6415 H 1 DAKB 0.0000 + 27 H37 -5.3310 -5.9165 16.1261 H 1 DAKB 0.0000 + 28 H9 -8.3674 -3.2455 14.9712 H 1 DAKB 0.1500 + 29 H10 -8.4461 -0.9610 14.0870 H 1 DAKB 0.1500 + 30 H11 -9.4112 -0.5040 11.8453 H 1 DAKB 0.1500 + 31 H12 -10.2884 -2.3682 10.4781 H 1 DAKB 0.1500 + 32 H115 -7.3306 -7.5211 11.0691 H 1 DAKB 0.0000 + 33 H215 -8.1868 -8.1252 12.4996 H 1 DAKB 0.0000 + 34 H315 -6.4260 -8.3447 12.3739 H 1 DAKB 0.0000 +@BOND + 1 1 8 1 + 2 2 21 2 + 3 3 7 1 + 4 4 7 2 + 5 5 23 1 + 6 5 9 1 + 7 5 8 1 + 8 6 13 3 + 9 7 20 1 + 10 8 12 2 + 11 9 14 1 + 12 9 10 2 + 13 10 21 1 + 14 10 11 1 + 15 11 24 1 + 16 11 15 1 + 17 11 12 1 + 18 12 13 1 + 19 14 27 1 + 20 14 26 1 + 21 14 25 1 + 22 15 20 1 + 23 15 16 2 + 24 16 28 1 + 25 16 17 1 + 26 17 29 1 + 27 17 18 2 + 28 18 30 1 + 29 18 19 1 + 30 19 31 1 + 31 19 20 2 + 32 21 22 1 + 33 22 34 1 + 34 22 33 1 + 35 22 32 1 +@SUBSTRUCTURE + 1 DAKB 1 +@COMMENT +COMMENT MORPHOLINIUM 5-ACETYL-3-CYANO-1,4-DIHYDRO-6-METHYL-4-(2-NIT +@MOLECULE +DAKCEX + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.3722 -7.3276 15.4389 N.2 1 DAKC -0.3381 + 2 N2 -10.3009 -7.4844 16.4451 N.2 1 DAKC 0.0000 + 3 N3 -10.8470 -6.3211 16.7848 N.2 1 DAKC -0.4180 + 4 N4 -10.2663 -5.4116 15.9928 N.3 1 DAKC 0.7716 + 5 N5 -10.5665 -4.0924 16.0431 N.2 1 DAKC -0.6520 + 6 C6 -9.9042 -3.3543 15.1998 C.2 1 DAKC 0.5748 + 7 C7 -8.8771 -3.8705 14.2253 C.2 1 DAKC 0.0862 + 8 C8 -8.6179 -5.2500 14.2301 C.2 1 DAKC 0.0530 + 9 C9 -9.3640 -6.0414 15.1722 C.2 1 DAKC 0.1335 + 10 C10 -8.1916 -3.0350 13.3381 C.2 1 DAKC -0.1500 + 11 C11 -7.2518 -3.5833 12.4617 C.2 1 DAKC -0.1500 + 12 C12 -6.9966 -4.9571 12.4696 C.2 1 DAKC -0.1500 + 13 C13 -7.6786 -5.7946 13.3536 C.2 1 DAKC -0.1500 + 14 N14 -10.1168 -1.9987 15.1508 N.2 1 DAKC -0.5289 + 15 N15 -10.9648 -1.5722 15.9553 N.1 1 DAKC 0.6879 + 16 N16 -11.7345 -1.1380 16.6760 N.2 1 DAKC -0.3700 + 17 H1 -7.4745 -6.8639 13.3540 H 1 DAKC 0.1500 + 18 H2 -6.2629 -5.3763 11.7837 H 1 DAKC 0.1500 + 19 H3 -6.7149 -2.9381 11.7688 H 1 DAKC 0.1500 + 20 H4 -8.3755 -1.9636 13.3161 H 1 DAKC 0.1500 +@BOND + 1 1 9 2 + 2 1 2 1 + 3 2 3 2 + 4 3 4 1 + 5 4 9 am + 6 4 5 1 + 7 5 6 2 + 8 6 14 am + 9 6 7 1 + 10 7 10 2 + 11 7 8 1 + 12 8 13 2 + 13 8 9 1 + 14 10 20 1 + 15 10 11 1 + 16 11 19 1 + 17 11 12 2 + 18 12 18 1 + 19 12 13 1 + 20 13 17 1 + 21 14 15 2 + 22 15 16 2 +@SUBSTRUCTURE + 1 DAKC 1 +@COMMENT +COMMENT 6-AZIDOTETRAZOLO(5,1-A)PHTHALAZINE +@MOLECULE +DAKDOI + 36 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.5755 -3.3626 7.8833 C.2 1 UNCH 0.5438 + 2 C2 1.4935 -2.0943 7.1141 C.2 1 UNCH 0.0862 + 3 C3 1.5707 -0.8702 7.7895 C.2 1 UNCH -0.1500 + 4 C4 1.4914 0.3264 7.0746 C.2 1 UNCH -0.1500 + 5 C5 1.3309 0.2961 5.6903 C.2 1 UNCH 0.1770 + 6 C6 1.2460 -0.9202 5.0102 C.2 1 UNCH -0.1500 + 7 C7 1.3282 -2.1300 5.7190 C.2 1 UNCH -0.1435 + 8 C8 1.2084 -3.4646 5.0021 C.3 1 UNCH 0.5126 + 9 C9 -0.2631 -3.8649 4.8699 C.3 1 UNCH 0.0610 + 10 C10 -0.4152 -5.0943 4.0304 C.2 1 UNCH 0.6590 + 11 C11 3.3043 -4.7455 5.4082 C.2 1 UNCH 0.1000 + 12 C12 3.6432 -4.9877 4.0655 C.2 1 UNCH -0.1500 + 13 C13 4.9551 -5.2592 3.6486 C.2 1 UNCH -0.1500 + 14 C14 5.9498 -5.3002 4.6283 C.2 1 UNCH 0.0400 + 15 C15 5.6730 -5.0899 5.9791 C.2 1 UNCH 0.2272 + 16 C16 4.3396 -4.8215 6.3616 C.2 1 UNCH -0.1500 + 17 CL1 1.2294 1.7703 4.8097 CL 1 UNCH -0.1770 + 18 N1 1.6831 -4.5236 7.1463 N.3 1 UNCH -0.4100 + 19 N2 1.9560 -4.4954 5.7663 N.3 1 UNCH -0.4891 + 20 N3 6.7760 -5.1714 6.8225 N.2 1 UNCH -0.2272 + 21 N4 7.8878 -5.4366 6.1587 N.2 1 UNCH -0.2207 + 22 O1 1.5383 -3.3704 9.1079 O.2 1 UNCH -0.5700 + 23 O2 -1.0113 -6.1113 4.3418 O.2 1 UNCH -0.5700 + 24 O3 0.1100 -4.9681 2.7961 O.3 1 UNCH -0.6500 + 25 S1 7.6421 -5.5973 4.5142 S.3 1 UNCH 0.1807 + 26 H3 1.6949 -0.8473 8.8708 H 1 UNCH 0.1500 + 27 H4 1.5550 1.2743 7.6031 H 1 UNCH 0.1500 + 28 H6 1.1161 -0.9232 3.9300 H 1 UNCH 0.1500 + 29 H8 1.6350 -3.3357 4.0008 H 1 UNCH 0.0000 + 30 H91 -0.8568 -3.0691 4.4039 H 1 UNCH 0.0000 + 31 H92 -0.7169 -4.0635 5.8486 H 1 UNCH 0.0000 + 32 H12 2.8687 -4.9997 3.3005 H 1 UNCH 0.1500 + 33 H13 5.1827 -5.4426 2.6033 H 1 UNCH 0.1500 + 34 H16 4.1555 -4.6570 7.4182 H 1 UNCH 0.1500 + 35 H10 1.7865 -5.4130 7.6261 H 1 UNCH 0.3700 + 36 H30 -0.1235 -5.8184 2.3623 H 1 UNCH 0.5000 +@BOND + 1 1 2 1 + 2 1 18 am + 3 1 22 2 + 4 2 3 2 + 5 2 7 1 + 6 3 4 1 + 7 3 26 1 + 8 4 5 2 + 9 4 27 1 + 10 5 6 1 + 11 5 17 1 + 12 6 7 2 + 13 6 28 1 + 14 7 8 1 + 15 8 9 1 + 16 8 19 1 + 17 8 29 1 + 18 9 10 1 + 19 9 30 1 + 20 9 31 1 + 21 10 23 2 + 22 10 24 1 + 23 11 12 1 + 24 11 16 2 + 25 11 19 1 + 26 12 13 2 + 27 12 32 1 + 28 13 14 1 + 29 13 33 1 + 30 14 15 2 + 31 14 25 1 + 32 15 16 1 + 33 15 20 1 + 34 16 34 1 + 35 18 19 1 + 36 18 35 1 + 37 20 21 2 + 38 21 25 1 + 39 24 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(1,2,3-BENZOTHIADIAZOL-5-YL)-7-CHLORO-4-OXO-1,2,3,4-TETRA +@MOLECULE +DANCUQ + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.8840 -4.2348 14.3549 SI 1 DAKF 1.3200 + 2 S1 -10.0352 -5.5738 13.1975 S.3 1 DAKF -0.5600 + 3 S2 -10.0447 -2.8958 15.5029 S.3 1 DAKF -0.5600 + 4 C1 -9.0994 -7.0892 13.6193 C.3 1 DAKF 0.2300 + 5 C2 -9.1055 -1.3805 15.0888 C.3 1 DAKF 0.2300 + 6 H11 -8.2259 -7.1603 12.9606 H 1 DAKF 0.0000 + 7 H12 -9.7340 -7.9574 13.4148 H 1 DAKF 0.0000 + 8 H21 -8.2374 -1.3094 15.7547 H 1 DAKF 0.0000 + 9 H22 -9.7418 -0.5122 15.2881 H 1 DAKF 0.0000 + 10 S1B -7.7327 -5.5738 15.5124 S.3 1 DAKF -0.5600 + 11 S2B -7.7232 -2.8958 13.2070 S.3 1 DAKF -0.5600 + 12 C1B -8.6685 -7.0892 15.0906 C.3 1 DAKF 0.2300 + 13 C2B -8.6625 -1.3805 13.6211 C.3 1 DAKF 0.2300 + 14 H11B -9.5420 -7.1603 15.7493 H 1 DAKF 0.0000 + 15 H12B -8.0339 -7.9574 15.2951 H 1 DAKF 0.0000 + 16 H21B -9.5306 -1.3094 12.9552 H 1 DAKF 0.0000 + 17 H22B -8.0262 -0.5122 13.4218 H 1 DAKF 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 10 1 + 4 1 11 1 + 5 2 4 1 + 6 3 5 1 + 7 4 6 1 + 8 4 7 1 + 9 4 12 1 + 10 5 8 1 + 11 5 9 1 + 12 5 13 1 + 13 10 12 1 + 14 11 13 1 + 15 12 14 1 + 16 12 15 1 + 17 13 16 1 + 18 13 17 1 +@SUBSTRUCTURE + 1 DAKF 1 +@COMMENT +COMMENT SPIRO-BIS(ETHYLENEDITHIA)-SILANE +@MOLECULE +DAPSUO03 + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -6.4937 -5.8959 13.5977 S.3 1 DAPS 1.3180 + 2 O1 -6.3968 -6.0765 12.1601 O.3 1 DAPS -0.6500 + 3 O2 -5.4231 -6.3498 14.4673 O.3 1 DAPS -0.6500 + 4 N1 -11.5048 -8.6609 15.2981 N.3 1 DAPS -0.9000 + 5 N2 -7.1422 -0.0547 14.6504 N.3 1 DAPS -0.9000 + 6 C1 -7.9949 -6.6897 14.1248 C.2 1 DAPS -0.0090 + 7 C2 -8.0469 -7.3317 15.3627 C.2 1 DAPS -0.1500 + 8 C3 -9.2299 -7.9613 15.7591 C.2 1 DAPS -0.1500 + 9 C4 -10.3680 -7.9267 14.9464 C.2 1 DAPS 0.1000 + 10 C5 -10.2738 -7.3411 13.6796 C.2 1 DAPS -0.1500 + 11 C6 -9.0979 -6.7075 13.2693 C.2 1 DAPS -0.1500 + 12 C7 -6.7237 -4.1611 13.9127 C.2 1 DAPS -0.0090 + 13 C8 -6.5048 -3.6628 15.1982 C.2 1 DAPS -0.1500 + 14 C9 -6.6748 -2.2976 15.4427 C.2 1 DAPS -0.1500 + 15 C10 -7.0926 -1.4338 14.4249 C.2 1 DAPS 0.1000 + 16 C11 -7.2365 -1.9395 13.1286 C.2 1 DAPS -0.1500 + 17 C12 -7.0702 -3.3025 12.8686 C.2 1 DAPS -0.1500 + 18 H1 -7.1770 -7.3662 16.0145 H 1 DAPS 0.1500 + 19 H2 -9.2544 -8.4876 16.7103 H 1 DAPS 0.1500 + 20 H3 -11.1186 -7.3804 12.9962 H 1 DAPS 0.1500 + 21 H4 -9.0480 -6.2546 12.2819 H 1 DAPS 0.1500 + 22 H5 -6.1838 -4.3173 16.0052 H 1 DAPS 0.1500 + 23 H6 -6.4711 -1.9099 16.4379 H 1 DAPS 0.1500 + 24 H7 -7.4747 -1.2705 12.3052 H 1 DAPS 0.1500 + 25 H8 -7.1939 -3.6736 11.8538 H 1 DAPS 0.1500 + 26 H9 -12.3577 -8.3538 14.8413 H 1 DAPS 0.4000 + 27 H10 -11.6258 -8.7891 16.2978 H 1 DAPS 0.4000 + 28 H11 -7.7231 0.4549 13.9921 H 1 DAPS 0.4000 + 29 H12 -7.3306 0.2041 15.6137 H 1 DAPS 0.4000 +@BOND + 1 1 12 1 + 2 1 6 1 + 3 1 3 1 + 4 1 2 1 + 5 4 27 1 + 6 4 26 1 + 7 4 9 1 + 8 5 29 1 + 9 5 28 1 + 10 5 15 1 + 11 6 11 2 + 12 6 7 1 + 13 7 18 1 + 14 7 8 2 + 15 8 19 1 + 16 8 9 1 + 17 9 10 2 + 18 10 20 1 + 19 10 11 1 + 20 11 21 1 + 21 12 17 1 + 22 12 13 2 + 23 13 22 1 + 24 13 14 1 + 25 14 23 1 + 26 14 15 2 + 27 15 16 1 + 28 16 24 1 + 29 16 17 2 + 30 17 25 1 +@SUBSTRUCTURE + 1 DAPS 1 +@COMMENT +COMMENT 4,4'-DIAMINODIPHENYL SULFONE (REDETERMINATION OF DICKINSON +@MOLECULE +DARDEF + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.1098 -4.6583 11.2672 C.3 1 UNCH 0.2300 + 2 S2 -6.7188 -5.4855 12.0949 S.3 1 UNCH -0.3710 + 3 C3 -7.1989 -4.9024 13.6918 C.2 1 UNCH 0.6410 + 4 N4 -8.2502 -4.0319 13.5837 N.3 1 UNCH -0.7882 + 5 C5 -8.4452 -2.9713 14.5675 C.3 1 UNCH 0.7801 + 6 S6 -8.0837 -1.4003 13.6524 S.3 1 UNCH -0.4600 + 7 C7 -7.9013 -2.2267 12.0476 C.3 1 UNCH 0.2300 + 8 C8 -8.5832 -3.5810 12.2355 C.3 1 UNCH 0.3691 + 9 N9 -6.6315 -5.2268 14.7971 N.2 1 UNCH -0.6960 + 10 C10 -5.5171 -6.1606 14.7952 C.3 1 UNCH 0.2460 + 11 C11 -9.8297 -2.8897 15.1753 C.2 1 UNCH 0.0462 + 12 C12 -10.1899 -2.8832 16.5147 C.2 1 UNCH -0.3316 + 13 N13 -11.5598 -2.8098 16.5170 N.3 1 UNCH 0.0332 + 14 C14 -11.9805 -2.7820 15.2196 C.2 1 UNCH 0.0365 + 15 N15 -10.9708 -2.8319 14.3844 N.2 1 UNCH -0.5653 + 16 C16 -9.3810 -2.9455 17.7527 C.3 1 UNCH 0.1800 + 17 H11 -8.8957 -5.4063 11.1188 H 1 UNCH 0.0000 + 18 H12 -7.8189 -4.2597 10.2913 H 1 UNCH 0.0000 + 19 H5 -7.7079 -3.0275 15.3757 H 1 UNCH 0.0000 + 20 H71 -6.8326 -2.3246 11.8315 H 1 UNCH 0.0000 + 21 H72 -8.3657 -1.6436 11.2474 H 1 UNCH 0.0000 + 22 H8 -9.6683 -3.4583 12.1251 H 1 UNCH 0.0000 + 23 H101 -5.1872 -6.3165 15.8275 H 1 UNCH 0.0000 + 24 H102 -4.6587 -5.7677 14.2406 H 1 UNCH 0.0000 + 25 H103 -5.8066 -7.1401 14.4007 H 1 UNCH 0.0000 + 26 H13 -12.1584 -2.7868 17.3310 H 1 UNCH 0.2700 + 27 H14 -13.0263 -2.7271 14.9488 H 1 UNCH 0.1500 + 28 H161 -8.7884 -3.8656 17.7749 H 1 UNCH 0.0000 + 29 H162 -10.0109 -2.9269 18.6478 H 1 UNCH 0.0000 + 30 H163 -8.6958 -2.0933 17.8033 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 17 1 + 4 1 18 1 + 5 2 3 1 + 6 3 4 am + 7 3 9 2 + 8 4 5 1 + 9 4 8 1 + 10 5 6 1 + 11 5 11 1 + 12 5 19 1 + 13 6 7 1 + 14 7 8 1 + 15 7 20 1 + 16 7 21 1 + 17 8 22 1 + 18 9 10 1 + 19 10 23 1 + 20 10 24 1 + 21 10 25 1 + 22 11 12 2 + 23 11 15 1 + 24 12 13 1 + 25 12 16 1 + 26 13 14 am + 27 13 26 1 + 28 14 15 2 + 29 14 27 1 + 30 16 28 1 + 31 16 29 1 + 32 16 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CIS-DIHYDRO-3-(5-METHYLIMIDAZOL-4-YL)-5-METHYLIMINO-1H,3H,5 +@MOLECULE +DARPOB10 + 39 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -9.4504 -5.4197 14.6546 P 1 A1 -0.5964 + 2 SI1 -8.8638 -5.3234 16.8195 SI 1 A1 0.5905 + 3 N1 -8.6473 -2.7936 14.7961 N.3 1 A1 -0.7882 + 4 N2 -9.3323 -3.5617 12.7124 N.3 1 A1 -0.7882 + 5 C1 -9.0877 -7.0717 17.5057 C.3 1 A1 -0.0805 + 6 C2 -7.0687 -4.8536 17.0426 C.3 1 A1 -0.0805 + 7 C3 -9.9703 -4.1840 17.8022 C.3 1 A1 -0.0805 + 8 C4 -9.1352 -3.8494 14.0550 C.2 1 A1 0.3474 + 9 C5 -9.5856 -1.7241 15.1519 C.3 1 A1 0.3691 + 10 C6 -7.3399 -2.2542 14.4009 C.3 1 A1 0.3691 + 11 C7 -10.6710 -3.1323 12.2656 C.3 1 A1 0.3691 + 12 C8 -11.5270 -4.2539 11.6975 C.3 1 A1 0.0000 + 13 C9 -8.4885 -4.2504 11.7182 C.3 1 A1 0.3691 + 14 C10 -8.1531 -3.3453 10.5427 C.3 1 A1 0.0000 + 15 H11 -10.1286 -7.3947 17.4094 H 1 A1 0.0000 + 16 H12 -8.8165 -7.0986 18.5654 H 1 A1 0.0000 + 17 H13 -8.4508 -7.7821 16.9702 H 1 A1 0.0000 + 18 H21 -6.9012 -3.7936 16.8370 H 1 A1 0.0000 + 19 H22 -6.4226 -5.4382 16.3808 H 1 A1 0.0000 + 20 H23 -6.7514 -5.0419 18.0731 H 1 A1 0.0000 + 21 H31 -9.7376 -3.1340 17.6109 H 1 A1 0.0000 + 22 H32 -9.8385 -4.3574 18.8750 H 1 A1 0.0000 + 23 H33 -11.0247 -4.3522 17.5630 H 1 A1 0.0000 + 24 H51 -10.5489 -2.1372 15.4693 H 1 A1 0.0000 + 25 H52 -9.1884 -1.1353 15.9855 H 1 A1 0.0000 + 26 H53 -9.7579 -1.0511 14.3051 H 1 A1 0.0000 + 27 H61 -6.6245 -3.0654 14.2272 H 1 A1 0.0000 + 28 H63 -6.9329 -1.6238 15.1987 H 1 A1 0.0000 + 29 H71 -10.5632 -2.3399 11.5167 H 1 A1 0.0000 + 30 H72 -11.2148 -2.6762 13.1007 H 1 A1 0.0000 + 31 H81 -11.1005 -4.6626 10.7767 H 1 A1 0.0000 + 32 H82 -12.5241 -3.8728 11.4533 H 1 A1 0.0000 + 33 H83 -11.6487 -5.0741 12.4098 H 1 A1 0.0000 + 34 H91 -7.5394 -4.5432 12.1851 H 1 A1 0.0000 + 35 H92 -8.9625 -5.1736 11.3679 H 1 A1 0.0000 + 36 H101 -9.0402 -3.1144 9.9452 H 1 A1 0.0000 + 37 H102 -7.4296 -3.8361 9.8838 H 1 A1 0.0000 + 38 H103 -7.7186 -2.4003 10.8845 H 1 A1 0.0000 + 39 H1 -7.4166 -1.6528 13.4886 H 1 A1 0.0000 +@BOND + 1 1 8 2 + 2 1 2 1 + 3 2 7 1 + 4 2 6 1 + 5 2 5 1 + 6 3 10 1 + 7 3 9 1 + 8 3 8 1 + 9 4 13 1 + 10 4 11 1 + 11 4 8 1 + 12 5 17 1 + 13 5 16 1 + 14 5 15 1 + 15 6 20 1 + 16 6 19 1 + 17 6 18 1 + 18 7 23 1 + 19 7 22 1 + 20 7 21 1 + 21 9 26 1 + 22 9 25 1 + 23 9 24 1 + 24 10 39 1 + 25 10 28 1 + 26 10 27 1 + 27 11 30 1 + 28 11 29 1 + 29 11 12 1 + 30 12 33 1 + 31 12 32 1 + 32 12 31 1 + 33 13 35 1 + 34 13 34 1 + 35 13 14 1 + 36 14 38 1 + 37 14 37 1 + 38 14 36 1 +@SUBSTRUCTURE + 1 A1 1 +@COMMENT +COMMENT (R)-TRIMETHYLSILYL-(S)-DIETHYLAMINO-(S)-DIMETHYLAMINOMETHYL +@MOLECULE +DARXID + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -12.2640 -3.0381 13.2444 S.2 1 UNCH -0.3800 + 2 N1 -9.9295 -4.2254 14.2535 N.3 1 UNCH -0.1570 + 3 N2 -9.2218 -5.4418 13.9900 N.3 1 UNCH -0.4891 + 4 C1 -11.1018 -4.2191 13.4646 C.2 1 UNCH 0.4256 + 5 C2 -11.1241 -5.5170 12.7392 C.2 1 UNCH -0.1356 + 6 C3 -10.0054 -6.1620 13.0892 C.2 1 UNCH -0.0382 + 7 C4 -9.6049 -7.5126 12.5986 C.3 1 UNCH 0.1382 + 8 C5 -8.7161 -6.1132 15.1962 C.3 1 UNCH 0.3691 + 9 C11 -9.2063 -3.0873 14.7121 C.2 1 UNCH 0.1170 + 10 C21 -7.8185 -2.9940 14.5193 C.2 1 UNCH -0.1500 + 11 C31 -7.0981 -1.8886 14.9813 C.2 1 UNCH -0.1500 + 12 C41 -7.7547 -0.8623 15.6537 C.2 1 UNCH -0.1500 + 13 C51 -9.1281 -0.9443 15.8663 C.2 1 UNCH -0.1500 + 14 C61 -9.8470 -2.0507 15.4013 C.2 1 UNCH -0.1500 + 15 H2 -11.8977 -5.8338 12.0622 H 1 UNCH 0.1500 + 16 H14 -8.5976 -7.4800 12.1712 H 1 UNCH 0.0000 + 17 H24 -9.6140 -8.2413 13.4152 H 1 UNCH 0.0000 + 18 H34 -10.2853 -7.8750 11.8207 H 1 UNCH 0.0000 + 19 H15 -8.0742 -6.9567 14.9208 H 1 UNCH 0.0000 + 20 H25 -8.1121 -5.4417 15.8136 H 1 UNCH 0.0000 + 21 H35 -9.5441 -6.4889 15.8080 H 1 UNCH 0.0000 + 22 H21 -7.2864 -3.7707 13.9758 H 1 UNCH 0.1500 + 23 H31 -6.0269 -1.8289 14.8081 H 1 UNCH 0.1500 + 24 H41 -7.1981 -0.0006 16.0124 H 1 UNCH 0.1500 + 25 H51 -9.6450 -0.1503 16.3994 H 1 UNCH 0.1500 + 26 H61 -10.9090 -2.0996 15.6227 H 1 UNCH 0.1500 +@BOND + 1 1 4 2 + 2 2 3 1 + 3 2 4 1 + 4 2 9 1 + 5 3 6 1 + 6 3 8 1 + 7 4 5 1 + 8 5 6 2 + 9 5 15 1 + 10 6 7 1 + 11 7 16 1 + 12 7 17 1 + 13 7 18 1 + 14 8 19 1 + 15 8 20 1 + 16 8 21 1 + 17 9 10 2 + 18 9 14 1 + 19 10 11 1 + 20 10 22 1 + 21 11 12 2 + 22 11 23 1 + 23 12 13 1 + 24 12 24 1 + 25 13 14 2 + 26 13 25 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3-DIMETHYL-1-PHENYL-5-THIOPYRAZOLONE +@MOLECULE +DARZEB + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -6.5841 -4.9346 14.7919 N.2 1 UNCH -0.1790 + 2 N2 -6.4862 -4.4724 13.6310 N.2 1 UNCH -0.0620 + 3 N3 -7.6134 -4.1507 12.9173 N.3 1 UNCH -0.5382 + 4 C4 -8.8546 -4.8492 13.1762 C.3 1 UNCH 0.7236 + 5 C41 -9.0207 -5.0812 14.6361 C.2 1 UNCH -0.1435 + 6 C5 -10.2631 -5.3038 15.2433 C.2 1 UNCH -0.1500 + 7 C6 -10.3328 -5.5196 16.6187 C.2 1 UNCH -0.1500 + 8 C7 -9.1662 -5.5222 17.3818 C.2 1 UNCH -0.1500 + 9 C8 -7.9293 -5.3150 16.7662 C.2 1 UNCH -0.1500 + 10 C81 -7.8470 -5.0927 15.3880 C.2 1 UNCH 0.1790 + 11 C31 -7.3636 -3.6281 11.5765 C.3 1 UNCH 0.3001 + 12 C32 -8.2740 -2.4666 11.2132 C.3 1 UNCH 0.0000 + 13 O4 -8.7861 -6.0929 12.5093 O.3 1 UNCH -0.6800 + 14 H31 -6.3255 -3.2766 11.5335 H 1 UNCH 0.0000 + 15 H32 -7.4643 -4.4458 10.8549 H 1 UNCH 0.0000 + 16 H33 -8.2114 -1.6711 11.9630 H 1 UNCH 0.0000 + 17 H34 -7.9850 -2.0489 10.2437 H 1 UNCH 0.0000 + 18 H35 -9.3195 -2.7805 11.1415 H 1 UNCH 0.0000 + 19 H41 -9.6938 -4.2657 12.7870 H 1 UNCH 0.0000 + 20 H42 -7.8515 -6.3414 12.6224 H 1 UNCH 0.4000 + 21 H5 -11.1719 -5.3140 14.6465 H 1 UNCH 0.1500 + 22 H6 -11.2950 -5.6910 17.0951 H 1 UNCH 0.1500 + 23 H7 -9.2166 -5.6940 18.4540 H 1 UNCH 0.1500 + 24 H8 -7.0201 -5.3313 17.3620 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 10 1 + 3 2 3 1 + 4 3 4 1 + 5 3 11 1 + 6 4 5 1 + 7 4 13 1 + 8 4 19 1 + 9 5 6 2 + 10 5 10 1 + 11 6 7 1 + 12 6 21 1 + 13 7 8 2 + 14 7 22 1 + 15 8 9 1 + 16 8 23 1 + 17 9 10 2 + 18 9 24 1 + 19 11 12 1 + 20 11 14 1 + 21 11 15 1 + 22 12 16 1 + 23 12 17 1 + 24 12 18 1 + 25 13 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-ETHYL-4-HYDROXY-1,2,3(4H)-BENZOTRIAZINE +@MOLECULE +DAVWEC + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -5.9736 -5.3954 15.6975 BR 1 DASR -0.1100 + 2 BR2 -8.8488 -7.1364 15.5010 BR 1 DASR -0.1100 + 3 C1 -8.6523 -2.6581 13.8086 C.2 1 DASR 0.4480 + 4 C2 -7.3607 -3.2355 14.3965 C.3 1 DASR 0.4394 + 5 C3 -7.5531 -4.6564 14.9356 C.2 1 DASR -0.0282 + 6 C4 -8.7243 -5.3446 14.8856 C.2 1 DASR -0.0282 + 7 C5 -10.0483 -4.7427 14.3335 C.3 1 DASR 0.3784 + 8 C6 -9.9703 -3.1863 14.3821 C.3 1 DASR 0.3012 + 9 C7 -6.8269 -2.2449 15.4501 C.3 1 DASR 0.0000 + 10 C8 -11.3162 -5.2487 15.0827 C.3 1 DASR 0.0000 + 11 C9 -10.1172 -2.6559 15.8365 C.3 1 DASR 0.0000 + 12 N1 -6.3816 -3.3014 13.2144 N.2 1 DASR 0.7998 + 13 N2 -10.0988 -5.2469 12.8742 N.2 1 DASR 0.7998 + 14 N3 -11.1019 -2.5143 13.5985 N.2 1 DASR 0.7998 + 15 O1 -8.6166 -1.7243 13.0065 O.2 1 DASR -0.5700 + 16 O2 -6.5248 -4.2331 12.4115 O.3 1 DASR -0.5200 + 17 O3 -5.4884 -2.4456 13.1484 O.2 1 DASR -0.5200 + 18 O4 -10.7895 -6.2396 12.6196 O.3 1 DASR -0.5200 + 19 O5 -9.3900 -4.6456 12.0610 O.2 1 DASR -0.5200 + 20 O6 -11.3272 -1.3214 13.8417 O.3 1 DASR -0.5200 + 21 O7 -11.7859 -3.2073 12.8408 O.2 1 DASR -0.5200 + 22 H1 -7.4005 -2.2978 16.3810 H 1 DASR 0.0000 + 23 H2 -6.8919 -1.2080 15.0974 H 1 DASR 0.0000 + 24 H3 -5.7783 -2.4276 15.7116 H 1 DASR 0.0000 + 25 H4 -11.5078 -6.3187 14.9460 H 1 DASR 0.0000 + 26 H5 -12.2276 -4.7442 14.7471 H 1 DASR 0.0000 + 27 H6 -11.2322 -5.0827 16.1629 H 1 DASR 0.0000 + 28 H7 -9.5048 -3.2206 16.5465 H 1 DASR 0.0000 + 29 H8 -11.1536 -2.7121 16.1909 H 1 DASR 0.0000 + 30 H9 -9.8067 -1.6065 15.9170 H 1 DASR 0.0000 +@BOND + 1 1 5 1 + 2 2 6 1 + 3 3 4 1 + 4 3 8 1 + 5 3 15 2 + 6 4 5 1 + 7 4 9 1 + 8 4 12 1 + 9 5 6 2 + 10 6 7 1 + 11 7 8 1 + 12 7 10 1 + 13 7 13 1 + 14 8 11 1 + 15 8 14 1 + 16 9 22 1 + 17 9 23 1 + 18 9 24 1 + 19 10 25 1 + 20 10 26 1 + 21 10 27 1 + 22 11 28 1 + 23 11 29 1 + 24 11 30 1 + 25 12 16 1 + 26 12 17 2 + 27 13 18 1 + 28 13 19 2 + 29 14 20 1 + 30 14 21 2 +@SUBSTRUCTURE + 1 DASR 1 +@COMMENT +COMMENT 3,4-DIBROMO-2,5,6-TRIMETHYL-R-2,C-5,C-6-TRINITROCYCLOHEX-3- +@MOLECULE +DAVXED + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.4142 -3.7016 13.9288 C.2 1 UNCH 0.4480 + 2 C2 -9.4306 -4.0374 12.7882 C.3 1 UNCH 0.4394 + 3 C3 -8.0458 -4.5076 13.2591 C.2 1 UNCH -0.2764 + 4 C4 -7.7604 -4.6090 14.5804 C.2 1 UNCH 0.0662 + 5 C5 -8.6664 -4.3497 15.7716 C.3 1 UNCH 0.3784 + 6 C6 -10.1646 -4.2298 15.3537 C.3 1 UNCH 0.3012 + 7 C7 -10.0846 -5.0265 11.8028 C.3 1 UNCH 0.0000 + 8 C8 -7.0545 -4.8094 12.1459 C.3 1 UNCH 0.1382 + 9 C9 -8.4530 -5.3627 16.9400 C.3 1 UNCH 0.0000 + 10 C10 -11.0431 -3.4271 16.3530 C.3 1 UNCH 0.0000 + 11 N1 -9.2506 -2.6802 12.0629 N.2 1 UNCH 0.7998 + 12 N2 -6.4372 -5.0740 14.9484 N.2 1 UNCH 0.8356 + 13 N3 -8.2622 -2.9583 16.2950 N.2 1 UNCH 0.7998 + 14 N4 -10.7260 -5.6485 15.2943 N.2 1 UNCH 0.7998 + 15 O1 -11.4644 -3.0966 13.6822 O.2 1 UNCH -0.5700 + 16 O2 -8.6301 -1.8004 12.6718 O.3 1 UNCH -0.5200 + 17 O3 -9.6939 -2.5608 10.9132 O.2 1 UNCH -0.5200 + 18 O4 -5.7187 -4.2718 15.5460 O.3 1 UNCH -0.5200 + 19 O5 -6.1672 -6.2478 14.6803 O.2 1 UNCH -0.5200 + 20 O6 -8.2426 -2.0448 15.4663 O.3 1 UNCH -0.5200 + 21 O7 -8.0767 -2.8190 17.5081 O.2 1 UNCH -0.5200 + 22 O8 -10.1531 -6.4343 14.5322 O.3 1 UNCH -0.5200 + 23 O9 -11.6628 -5.9548 16.0362 O.2 1 UNCH -0.5200 + 24 H1 -8.5392 -6.4013 16.6021 H 1 UNCH 0.0000 + 25 H2 -9.1831 -5.2165 17.7440 H 1 UNCH 0.0000 + 26 H3 -7.4628 -5.2713 17.4032 H 1 UNCH 0.0000 + 27 H4 -10.8066 -2.3575 16.3292 H 1 UNCH 0.0000 + 28 H5 -10.9232 -3.7778 17.3837 H 1 UNCH 0.0000 + 29 H6 -12.1118 -3.4964 16.1116 H 1 UNCH 0.0000 + 30 H7 -7.1043 -4.0559 11.3539 H 1 UNCH 0.0000 + 31 H8 -7.2759 -5.7858 11.7033 H 1 UNCH 0.0000 + 32 H9 -6.0133 -4.8161 12.4796 H 1 UNCH 0.0000 + 33 H10 -10.1102 -6.0466 12.1932 H 1 UNCH 0.0000 + 34 H11 -9.5462 -5.0792 10.8485 H 1 UNCH 0.0000 + 35 H12 -11.1209 -4.7472 11.5771 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 15 2 + 4 2 3 1 + 5 2 7 1 + 6 2 11 1 + 7 3 4 2 + 8 3 8 1 + 9 4 5 1 + 10 4 12 1 + 11 5 6 1 + 12 5 9 1 + 13 5 13 1 + 14 6 10 1 + 15 6 14 1 + 16 7 33 1 + 17 7 34 1 + 18 7 35 1 + 19 8 30 1 + 20 8 31 1 + 21 8 32 1 + 22 9 24 1 + 23 9 25 1 + 24 9 26 1 + 25 10 27 1 + 26 10 28 1 + 27 10 29 1 + 28 11 16 1 + 29 11 17 2 + 30 12 18 1 + 31 12 19 2 + 32 13 20 1 + 33 13 21 2 + 34 14 22 1 + 35 14 23 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3,5,6-TETRAMETHYL-R-2,4,C-5,T-6-TETRANITROCYCLOHEX-3-ENON +@MOLECULE +DAWXII + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.0537 -4.5754 14.1171 C.2 1 DAWX -0.0400 + 2 C2 -9.1972 -4.4901 14.8380 C.2 1 DAWX -0.2050 + 3 C3 -9.3966 -5.9714 14.9906 C.3 1 DAWX 0.7340 + 4 C4 -8.1170 -6.1388 14.1116 C.3 1 DAWX 0.7340 + 5 N5 -7.1817 -3.7502 13.5783 N.3 1 DAWX -0.8671 + 6 C6 -6.1286 -4.1715 12.6754 C.3 1 DAWX 0.3691 + 7 N7 -9.8983 -3.3543 15.2896 N.2 1 DAWX 0.9070 + 8 N8 -10.9133 -3.5519 16.0213 N.2 1 DAWX -0.4530 + 9 C9 -11.5573 -2.2992 16.4216 C.3 1 DAWX 0.2460 + 10 O10 -9.4402 -2.2297 14.9021 O.3 1 DAWX -0.6330 + 11 F11 -10.5319 -6.5055 14.4666 F 1 DAWX -0.2980 + 12 F12 -9.3094 -6.4873 16.2456 F 1 DAWX -0.2980 + 13 F13 -8.3024 -6.7418 12.9064 F 1 DAWX -0.2980 + 14 F14 -7.0833 -6.8031 14.6941 F 1 DAWX -0.2980 + 15 H5 -7.3567 -2.7404 13.5849 H 1 DAWX 0.4000 + 16 H61 -6.5498 -4.5021 11.7207 H 1 DAWX 0.0000 + 17 H62 -5.5397 -4.9867 13.1082 H 1 DAWX 0.0000 + 18 H63 -5.4525 -3.3335 12.4802 H 1 DAWX 0.0000 + 19 H91 -10.8829 -1.6696 17.0123 H 1 DAWX 0.0000 + 20 H92 -12.4214 -2.5340 17.0510 H 1 DAWX 0.0000 + 21 H93 -11.9255 -1.7399 15.5545 H 1 DAWX 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 2 2 + 4 2 7 1 + 5 2 3 1 + 6 3 12 1 + 7 3 11 1 + 8 3 4 1 + 9 4 14 1 + 10 4 13 1 + 11 5 15 1 + 12 5 6 1 + 13 6 18 1 + 14 6 17 1 + 15 6 16 1 + 16 7 10 1 + 17 7 8 2 + 18 8 9 1 + 19 9 21 1 + 20 9 20 1 + 21 9 19 1 +@SUBSTRUCTURE + 1 DAWX 1 +@COMMENT +COMMENT 3,3,4,4-TETRAFLUORO-N-METHYL-2-(CIS,S-TRANS-METHYL-N,N,O-AZ +@MOLECULE +DAWYUV + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -8.2706 -1.2595 14.6474 CL 1 DAWX -0.1400 + 2 O1 -8.0596 -5.7210 15.4391 O.3 1 DAWX -0.2325 + 3 C2 -7.3133 -4.8532 16.2179 C.2 1 DAWX 0.7056 + 4 C3 -7.4211 -3.4227 15.9165 C.2 1 DAWX -0.1356 + 5 C4 -8.2012 -2.9604 14.9362 C.2 1 DAWX 0.1116 + 6 C5 -9.8324 -3.4985 13.0691 C.2 1 DAWX -0.1500 + 7 C6 -10.5474 -4.4554 12.3382 C.2 1 DAWX -0.1500 + 8 C7 -10.4278 -5.8105 12.6445 C.2 1 DAWX -0.1500 + 9 C8 -9.5929 -6.2128 13.6823 C.2 1 DAWX -0.1500 + 10 C9 -8.8870 -5.2479 14.4015 C.2 1 DAWX 0.0825 + 11 C10 -8.9868 -3.8844 14.1177 C.2 1 DAWX 0.0284 + 12 O11 -6.5883 -5.2460 17.1244 O.2 1 DAWX -0.5700 + 13 H3 -6.8259 -2.7689 16.5422 H 1 DAWX 0.1500 + 14 H5 -9.9539 -2.4523 12.7981 H 1 DAWX 0.1500 + 15 H6 -11.1998 -4.1392 11.5270 H 1 DAWX 0.1500 + 16 H7 -10.9848 -6.5500 12.0744 H 1 DAWX 0.1500 + 17 H8 -9.4920 -7.2658 13.9297 H 1 DAWX 0.1500 +@BOND + 1 1 5 1 + 2 2 3 1 + 3 2 10 1 + 4 3 4 1 + 5 3 12 2 + 6 4 5 2 + 7 4 13 1 + 8 5 11 1 + 9 6 7 2 + 10 6 11 1 + 11 6 14 1 + 12 7 8 1 + 13 7 15 1 + 14 8 9 2 + 15 8 16 1 + 16 9 10 1 + 17 9 17 1 + 18 10 11 2 +@SUBSTRUCTURE + 1 DAWX 1 +@COMMENT +COMMENT 4-CHLORO-COUMARIN +@MOLECULE +DAYWEF + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -7.1548 -4.0623 14.3121 P 1 UNCH 1.5136 + 2 P2 -9.8261 -4.1855 15.1298 P 1 UNCH 1.5136 + 3 O2 -8.7016 -4.2815 14.0074 O.3 1 UNCH -0.5424 + 4 O11 -6.7257 -5.2466 15.3078 O.3 1 UNCH -0.5512 + 5 O13 -6.4504 -4.4959 12.9258 O.3 1 UNCH -0.5512 + 6 O14 -6.7950 -2.6810 14.7536 O.3 1 UNCH -0.7000 + 7 C14 -6.6091 -5.8365 12.4985 C.3 1 UNCH 0.2800 + 8 C15 -6.1182 -6.7983 13.5687 C.3 1 UNCH 0.0000 + 9 C16 -6.8809 -6.5818 14.8655 C.3 1 UNCH 0.2800 + 10 O21 -11.1939 -4.2471 14.2744 O.3 1 UNCH -0.5512 + 11 O23 -9.8069 -2.6663 15.6495 O.3 1 UNCH -0.5512 + 12 O24 -9.7417 -5.2350 16.1899 O.3 1 UNCH -0.7000 + 13 C24 -10.0595 -1.6357 14.7133 C.3 1 UNCH 0.2800 + 14 C25 -11.4050 -1.8543 14.0407 C.3 1 UNCH 0.0000 + 15 C26 -11.4364 -3.2061 13.3457 C.3 1 UNCH 0.2800 + 16 H141 -7.6609 -6.0171 12.2523 H 1 UNCH 0.0000 + 17 H142 -6.0266 -5.9692 11.5816 H 1 UNCH 0.0000 + 18 H151 -6.2266 -7.8335 13.2304 H 1 UNCH 0.0000 + 19 H152 -5.0544 -6.6041 13.7519 H 1 UNCH 0.0000 + 20 H161 -6.4916 -7.2441 15.6448 H 1 UNCH 0.0000 + 21 H162 -7.9450 -6.8057 14.7394 H 1 UNCH 0.0000 + 22 H241 -10.0592 -0.6825 15.2507 H 1 UNCH 0.0000 + 23 H242 -9.2509 -1.6025 13.9762 H 1 UNCH 0.0000 + 24 H251 -11.6086 -1.0520 13.3246 H 1 UNCH 0.0000 + 25 H252 -12.1871 -1.8382 14.8094 H 1 UNCH 0.0000 + 26 H261 -10.6957 -3.2578 12.5407 H 1 UNCH 0.0000 + 27 H262 -12.4219 -3.3744 12.9006 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 1 6 1 + 5 2 3 1 + 6 2 10 1 + 7 2 11 1 + 8 2 12 1 + 9 4 9 1 + 10 5 7 1 + 11 7 8 1 + 12 7 16 1 + 13 7 17 1 + 14 8 9 1 + 15 8 18 1 + 16 8 19 1 + 17 9 20 1 + 18 9 21 1 + 19 10 15 1 + 20 11 13 1 + 21 13 14 1 + 22 13 22 1 + 23 13 23 1 + 24 14 15 1 + 25 14 24 1 + 26 14 25 1 + 27 15 26 1 + 28 15 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(2-OXO-1,3,2LAMBDA-5--DIOXAPHOSPHORINAN-2-YL) OXIDE P,P' +@MOLECULE +DAZVEF + 27 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.0086 -4.6838 13.7441 C.2 1 UNCH 0.5700 + 2 O1 -7.1328 -5.2365 13.0903 O.2 1 UNCH -0.5700 + 3 C2 -9.4411 -4.6609 13.2991 C.3 1 UNCH 0.0000 + 4 C3 -9.7103 -4.6526 11.7949 C.3 1 UNCH -0.2000 + 5 C4 -9.9817 -5.8977 12.5833 C.3 1 UNCH -0.2000 + 6 C5 -10.4002 -3.9374 14.1938 C.2 1 UNCH 0.5700 + 7 O2 -11.3334 -3.2788 13.7536 O.2 1 UNCH -0.5700 + 8 C6 -10.1670 -4.1088 15.6636 C.3 1 UNCH 0.0000 + 9 C7 -11.1950 -3.5234 16.6309 C.3 1 UNCH -0.2000 + 10 C8 -11.1558 -5.0047 16.4079 C.3 1 UNCH -0.2000 + 11 C9 -8.7346 -4.1316 16.1088 C.2 1 UNCH 0.5700 + 12 O3 -8.4208 -4.2568 17.2860 O.2 1 UNCH -0.5700 + 13 C10 -7.7110 -3.9741 15.0280 C.3 1 UNCH 0.0000 + 14 C11 -6.2497 -3.7853 15.4325 C.3 1 UNCH -0.2000 + 15 C12 -7.0257 -2.6124 14.9204 C.3 1 UNCH -0.2000 + 16 H1 -8.8636 -4.6583 11.1158 H 1 UNCH 0.1000 + 17 H2 -10.5608 -4.0925 11.4199 H 1 UNCH 0.1000 + 18 H3 -11.0188 -6.1775 12.7353 H 1 UNCH 0.1000 + 19 H4 -9.3176 -6.7428 12.4318 H 1 UNCH 0.1000 + 20 H5 -12.0364 -2.9702 16.2265 H 1 UNCH 0.1000 + 21 H6 -10.8508 -3.1468 17.5889 H 1 UNCH 0.1000 + 22 H7 -11.9764 -5.4492 15.8546 H 1 UNCH 0.1000 + 23 H8 -10.7871 -5.6251 17.2185 H 1 UNCH 0.1000 + 24 H9 -5.9957 -3.8087 16.4874 H 1 UNCH 0.1000 + 25 H10 -5.4765 -4.2036 14.7961 H 1 UNCH 0.1000 + 26 H11 -6.7683 -2.2340 13.9365 H 1 UNCH 0.1000 + 27 H12 -7.2892 -1.8378 15.6332 H 1 UNCH 0.1000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 13 1 + 4 3 4 1 + 5 3 5 1 + 6 3 6 1 + 7 4 5 1 + 8 4 16 1 + 9 4 17 1 + 10 5 18 1 + 11 5 19 1 + 12 6 7 2 + 13 6 8 1 + 14 8 9 1 + 15 8 10 1 + 16 8 11 1 + 17 9 10 1 + 18 9 20 1 + 19 9 21 1 + 20 10 22 1 + 21 10 23 1 + 22 11 12 2 + 23 11 13 1 + 24 13 14 1 + 25 13 15 1 + 26 14 15 1 + 27 14 24 1 + 28 14 25 1 + 29 15 26 1 + 30 15 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRISPIRO(2.1.2.1.2.1)DODECANE-4,8,12-TRIONE +@MOLECULE +DEBMOM01 + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 14.4789 1.2575 0.3363 O.2 1 DEBM -0.5700 + 2 O2 14.5714 3.4520 0.7891 O.3 1 DEBM -0.6500 + 3 O3 15.3706 4.7475 2.6282 O.3 1 DEBM -0.9000 + 4 O4 16.3558 4.5074 4.6798 O.2 1 DEBM -0.9000 + 5 C1 14.7892 2.1687 1.0982 C.2 1 DEBM 0.7056 + 6 C2 15.4222 1.8503 2.3971 C.2 1 DEBM -0.1356 + 7 C3 15.8656 2.5953 3.4206 C.2 1 DEBM -0.4000 + 8 C4 15.8646 4.1025 3.5954 C.2 1 DEBM 1.0500 + 9 H1 14.8745 4.0887 1.5037 H 1 DEBM 0.5000 + 10 H2 15.5325 0.7728 2.5034 H 1 DEBM 0.1500 + 11 H3 16.2993 2.0763 4.2752 H 1 DEBM 0.1500 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 2 9 1 + 4 3 8 1 + 5 4 8 2 + 6 5 6 1 + 7 6 7 2 + 8 6 10 1 + 9 7 8 1 + 10 7 11 1 +@SUBSTRUCTURE + 1 DEBM 1 +@COMMENT +COMMENT GUANIDINIUM HYDROGEN MALEATE (FORM II) +@MOLECULE +DECJAW + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.3520 3.2066 5.1458 O.3 1 UNCH -0.0191 + 2 N2 -0.8627 3.8253 5.4491 N.2 1 UNCH -0.4097 + 3 C3 -1.0634 4.6963 4.4628 C.2 1 UNCH 0.3508 + 4 C31 -0.0241 4.7177 3.5313 C.2 1 UNCH -0.1810 + 5 C4 0.2970 5.5138 2.3287 C.3 1 UNCH 0.1810 + 6 C5 1.8303 5.6090 2.1635 C.3 1 UNCH 0.5030 + 7 N6 2.4850 4.2772 2.2326 N.3 1 UNCH -0.9060 + 8 C7 2.1390 3.3398 3.4468 C.3 1 UNCH 0.5770 + 9 C71 0.8269 3.7435 3.9978 C.2 1 UNCH -0.0400 + 10 C8 2.0637 1.8834 2.8832 C.2 1 UNCH 0.9060 + 11 O81 1.9595 1.9332 1.6068 O.2 1 UNCH -0.9000 + 12 O82 2.2188 0.9315 3.6760 O.3 1 UNCH -0.9000 + 13 O3 -2.1790 5.4304 4.5118 O.3 1 UNCH -0.5120 + 14 H41 -0.1409 5.0336 1.4456 H 1 UNCH 0.0000 + 15 H45 -0.1253 6.5215 2.4039 H 1 UNCH 0.0000 + 16 H51 2.2786 6.2161 2.9579 H 1 UNCH 0.0000 + 17 H55 2.0922 6.0449 1.1948 H 1 UNCH 0.0000 + 18 H61 2.1654 3.6350 1.4586 H 1 UNCH 0.4500 + 19 H65 3.5017 4.2779 2.1157 H 1 UNCH 0.4500 + 20 H71 2.9533 3.4684 4.1649 H 1 UNCH 0.0000 + 21 H3 -2.2894 5.9334 3.6926 H 1 UNCH 0.4500 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 2 3 2 + 4 3 4 1 + 5 3 13 1 + 6 4 5 1 + 7 4 9 2 + 8 5 6 1 + 9 5 14 1 + 10 5 15 1 + 11 6 7 1 + 12 6 16 1 + 13 6 17 1 + 14 7 8 1 + 15 7 18 1 + 16 7 19 1 + 17 8 9 1 + 18 8 10 1 + 19 8 20 1 + 20 10 11 2 + 21 10 12 1 + 22 13 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (RS)-3-HYDROXY-4,5,6,7-TETRAHYDROISOXAZOLO(5,4-C)PYRIDINE-7 +@MOLECULE +DECKUR + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.9060 -3.0637 14.8608 N.3 1 UNCH -0.8382 + 2 C2 -9.1567 -3.3948 13.5434 C.2 1 UNCH -0.0500 + 3 C3 -8.9806 -4.6144 13.0205 C.2 1 UNCH 0.0288 + 4 C4 -8.4424 -5.6615 13.9289 C.2 1 UNCH 0.6156 + 5 N5 -8.1284 -5.2891 15.2320 N.3 1 UNCH -0.6602 + 6 C6 -7.7836 -6.3404 16.1792 C.3 1 UNCH 0.3001 + 7 C7 -9.0411 -6.8111 16.9129 C.3 1 UNCH 0.0000 + 8 C8 -9.7824 -5.6325 17.5541 C.3 1 UNCH 0.0000 + 9 C9 -10.0224 -4.4956 16.5521 C.3 1 UNCH 0.0000 + 10 C9_ -8.7093 -4.1103 15.8537 C.3 1 UNCH 0.6692 + 11 C11 -9.3092 -4.8222 11.5841 C.2 1 UNCH 0.6156 + 12 O12 -9.7602 -3.9371 10.8630 O.2 1 UNCH -0.5700 + 13 N13 -9.0890 -6.0678 11.0865 N.3 1 UNCH -0.8000 + 14 O17 -8.2682 -6.8092 13.5113 O.2 1 UNCH -0.5700 + 15 C18 -9.1660 -1.7201 15.3683 C.3 1 UNCH 0.3691 + 16 H2 -9.5133 -2.5675 12.9317 H 1 UNCH 0.1500 + 17 H61 -7.3059 -7.1838 15.6698 H 1 UNCH 0.0000 + 18 H62 -7.0549 -5.9316 16.8891 H 1 UNCH 0.0000 + 19 H71 -9.7135 -7.3107 16.2044 H 1 UNCH 0.0000 + 20 H72 -8.7741 -7.5460 17.6801 H 1 UNCH 0.0000 + 21 H81 -10.7389 -5.9739 17.9651 H 1 UNCH 0.0000 + 22 H82 -9.1903 -5.2506 18.3951 H 1 UNCH 0.0000 + 23 H91 -10.7674 -4.8201 15.8140 H 1 UNCH 0.0000 + 24 H92 -10.4506 -3.6332 17.0756 H 1 UNCH 0.0000 + 25 H92_ -7.9849 -3.7583 16.6001 H 1 UNCH 0.0000 + 26 H131 -9.2950 -6.2537 10.1162 H 1 UNCH 0.3700 + 27 H132 -8.7166 -6.8132 11.6724 H 1 UNCH 0.3700 + 28 H181 -8.6508 -1.5465 16.3190 H 1 UNCH 0.0000 + 29 H182 -10.2398 -1.5725 15.5233 H 1 UNCH 0.0000 + 30 H183 -8.8101 -0.9631 14.6609 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 1 15 1 + 4 2 3 2 + 5 2 16 1 + 6 3 4 1 + 7 3 11 1 + 8 4 5 am + 9 4 14 2 + 10 5 6 1 + 11 5 10 1 + 12 6 7 1 + 13 6 17 1 + 14 6 18 1 + 15 7 8 1 + 16 7 19 1 + 17 7 20 1 + 18 8 9 1 + 19 8 21 1 + 20 8 22 1 + 21 9 10 1 + 22 9 23 1 + 23 9 24 1 + 24 10 25 1 + 25 11 12 2 + 26 11 13 am + 27 13 26 1 + 28 13 27 1 + 29 15 28 1 + 30 15 29 1 + 31 15 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-1-METHYL-4-OXO-1,6,7,8,9,9A-HEXAHYDRO-4H-PYRIDO(1,2-A +@MOLECULE +DECRIM + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.0627 -3.7054 14.6274 O.3 1 DECR -0.3330 + 2 N1 -10.0433 -4.2177 13.7919 N.2 1 DECR -0.7470 + 3 N3 -9.7265 -2.2153 15.1401 N.3 1 DECR -0.8110 + 4 C1 -9.3525 -3.3393 14.5318 C.2 1 DECR 0.9250 + 5 C2 -7.9087 -4.8228 13.8605 C.2 1 DECR 0.1400 + 6 C3 -6.7381 -5.5333 13.6372 C.2 1 DECR -0.1500 + 7 C4 -6.8645 -6.6512 12.8039 C.2 1 DECR -0.1500 + 8 C5 -8.0985 -7.0124 12.2442 C.2 1 DECR -0.1500 + 9 C6 -9.2637 -6.2691 12.4962 C.2 1 DECR -0.1500 + 10 C7 -9.1380 -5.1539 13.3265 C.2 1 DECR 0.3330 + 11 C8 -11.4556 -4.3032 13.5121 C.3 1 DECR 0.5140 + 12 C10 -11.0017 -1.5460 14.8927 C.3 1 DECR 0.4895 + 13 C11 -8.7639 -1.5438 16.0361 C.3 1 DECR 0.4895 + 14 H3 -5.7903 -5.2442 14.0760 H 1 DECR 0.1500 + 15 H4 -5.9831 -7.2549 12.5850 H 1 DECR 0.1500 + 16 H5 -8.1522 -7.8904 11.5999 H 1 DECR 0.1500 + 17 H101 -10.9445 -0.4929 15.1854 H 1 DECR 0.0000 + 18 H102 -11.7870 -2.0293 15.4789 H 1 DECR 0.0000 + 19 H112 -7.9841 -1.0675 15.4349 H 1 DECR 0.0000 + 20 H1 -10.2038 -6.5705 12.0482 H 1 DECR 0.1500 + 21 H2 -11.2428 -1.5766 13.8271 H 1 DECR 0.0000 + 22 H6 -9.2704 -0.7835 16.6381 H 1 DECR 0.0000 + 23 H7 -8.3197 -2.2747 16.7190 H 1 DECR 0.0000 + 24 H8 -11.7492 -5.3164 13.2270 H 1 DECR 0.0000 + 25 H9 -12.0239 -4.0440 14.4081 H 1 DECR 0.0000 + 26 H10 -11.7034 -3.6170 12.6984 H 1 DECR 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 4 2 + 4 2 10 1 + 5 2 11 1 + 6 3 4 am + 7 3 12 1 + 8 3 13 1 + 9 5 6 2 + 10 5 10 1 + 11 6 7 1 + 12 6 14 1 + 13 7 8 2 + 14 7 15 1 + 15 8 9 1 + 16 8 16 1 + 17 9 10 2 + 18 9 20 1 + 19 11 26 1 + 20 11 25 1 + 21 11 24 1 + 22 12 17 1 + 23 12 18 1 + 24 12 21 1 + 25 13 19 1 + 26 13 22 1 + 27 13 23 1 +@SUBSTRUCTURE + 1 DECR 1 +@COMMENT +COMMENT 3-METHYL-2-DIMETHYLAMINOBENZOXAZOLIUM IODIDE MONOHYDRATE +@MOLECULE +DEDCIY + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -12.5242 -5.2171 15.1876 CL 1 UNCH -0.1770 + 2 CL2 -9.8869 -1.8339 11.9121 CL 1 UNCH -0.1770 + 3 CL3 -6.9983 -4.0558 16.8673 CL 1 UNCH -0.2900 + 4 O1 -5.2447 -3.5189 14.1694 O.2 1 UNCH -0.5700 + 5 N1 -7.3916 -3.0173 13.4546 N.3 1 UNCH -0.5470 + 6 C1 -11.0413 -4.5337 14.6412 C.2 1 UNCH 0.1770 + 7 C2 -11.0641 -3.5703 13.6190 C.2 1 UNCH -0.1500 + 8 C3 -9.8710 -3.0082 13.1651 C.2 1 UNCH 0.1770 + 9 C4 -8.6872 -3.4275 13.7481 C.2 1 UNCH 0.1170 + 10 C5 -8.6600 -4.3846 14.7649 C.2 1 UNCH -0.1435 + 11 C6 -9.8400 -4.9510 15.2243 C.2 1 UNCH -0.1500 + 12 C7 -6.4529 -3.6745 14.2453 C.2 1 UNCH 0.5690 + 13 C8 -7.2326 -4.6206 15.1935 C.3 1 UNCH 0.4945 + 14 C9 -6.7738 -6.0614 15.0331 C.3 1 UNCH 0.0000 + 15 H2 -12.0120 -3.2640 13.1834 H 1 UNCH 0.1500 + 16 H6 -9.8344 -5.6904 16.0204 H 1 UNCH 0.1500 + 17 H1 -7.1425 -2.3340 12.7516 H 1 UNCH 0.3700 + 18 H91 -5.7137 -6.1724 15.2880 H 1 UNCH 0.0000 + 19 H92 -6.8921 -6.4011 13.9971 H 1 UNCH 0.0000 + 20 H93 -7.3491 -6.7431 15.6696 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 2 8 1 + 3 3 13 1 + 4 4 12 2 + 5 5 9 1 + 6 5 12 am + 7 5 17 1 + 8 6 7 2 + 9 6 11 1 + 10 7 8 1 + 11 7 15 1 + 12 8 9 2 + 13 9 10 1 + 14 10 11 2 + 15 10 13 1 + 16 11 16 1 + 17 12 13 1 + 18 13 14 1 + 19 14 18 1 + 20 14 19 1 + 21 14 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,5,7-TRICHLORO-3-METHYL-3H-INDOL-2-ONE +@MOLECULE +DEDSIO + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 -5.9277 -3.7485 17.5165 I 1 DEDS -0.1900 + 2 N1 -7.6031 -5.6789 15.2548 N.3 1 DEDS -0.3290 + 3 O1 -9.1485 -7.0536 16.3866 O.2 1 DEDS -0.5700 + 4 C1 -8.0396 -6.6712 16.0915 C.2 1 DEDS 0.5770 + 5 C2 -6.6071 -7.0835 16.4559 C.3 1 DEDS 0.0530 + 6 C3 -6.1729 -6.0175 15.4274 C.3 1 DEDS 0.2250 + 7 C4 -5.2773 -4.8394 15.8054 C.3 1 DEDS 0.1900 + 8 C5 -8.2644 -4.8552 14.4181 C.1 1 DEDS 0.0440 + 9 C6 -8.8468 -4.1161 13.6732 C.1 1 DEDS -0.1050 + 10 C7 -9.5386 -3.2286 12.7774 C.2 1 DEDS 0.8250 + 11 O2 -8.9902 -2.8082 11.7717 O.2 1 DEDS -0.5700 + 12 O3 -10.7945 -2.9591 13.2053 O.3 1 DEDS -0.4300 + 13 C8 -11.6616 -2.0825 12.4433 C.3 1 DEDS 0.2800 + 14 C9 -11.0854 -0.6646 12.3609 C.3 1 DEDS 0.0000 + 15 C10 -12.9718 -2.0345 13.2440 C.3 1 DEDS 0.0000 + 16 C11 -11.9567 -2.6611 11.0550 C.3 1 DEDS 0.0000 + 17 H21 -6.3491 -6.9088 17.5022 H 1 DEDS 0.0000 + 18 H22 -6.3637 -8.1140 16.1833 H 1 DEDS 0.0000 + 19 H3 -5.7854 -6.4814 14.5077 H 1 DEDS 0.0000 + 20 H41 -4.2636 -5.2123 15.9925 H 1 DEDS 0.0000 + 21 H42 -5.1997 -4.1530 14.9539 H 1 DEDS 0.0000 + 22 H91 -11.8086 0.0350 11.9280 H 1 DEDS 0.0000 + 23 H92 -10.8019 -0.3018 13.3553 H 1 DEDS 0.0000 + 24 H93 -10.1827 -0.6256 11.7439 H 1 DEDS 0.0000 + 25 H101 -13.7192 -1.3943 12.7638 H 1 DEDS 0.0000 + 26 H102 -12.7948 -1.6590 14.2587 H 1 DEDS 0.0000 + 27 H103 -13.3969 -3.0388 13.3562 H 1 DEDS 0.0000 + 28 H111 -11.0696 -2.6584 10.4143 H 1 DEDS 0.0000 + 29 H112 -12.7341 -2.0860 10.5406 H 1 DEDS 0.0000 + 30 H113 -12.2865 -3.7034 11.1303 H 1 DEDS 0.0000 +@BOND + 1 1 7 1 + 2 2 4 am + 3 2 6 1 + 4 2 8 1 + 5 3 4 2 + 6 4 5 1 + 7 5 6 1 + 8 5 17 1 + 9 5 18 1 + 10 6 7 1 + 11 6 19 1 + 12 7 20 1 + 13 7 21 1 + 14 8 9 3 + 15 9 10 1 + 16 10 11 2 + 17 10 12 1 + 18 12 13 1 + 19 13 14 1 + 20 13 15 1 + 21 13 16 1 + 22 14 22 1 + 23 14 23 1 + 24 14 24 1 + 25 15 25 1 + 26 15 26 1 + 27 15 27 1 + 28 16 28 1 + 29 16 29 1 + 30 16 30 1 +@SUBSTRUCTURE + 1 DEDS 1 +@COMMENT +COMMENT 3-(4-IODOMETHYL-2-OXO-1-AZETIDINYL)-PROPYNOIC ACID T-BUTYL +@MOLECULE +DEFGIE + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -7.6503 -1.9638 17.5989 O.3 1 DEFG -0.6330 + 2 O2 -8.2970 -8.6174 11.9631 O.2 1 DEFG -0.5700 + 3 N1 -7.8676 -3.2432 15.4362 N.3 1 DEFG -0.4580 + 4 N2 -8.7696 -2.2352 15.6402 N.2 1 DEFG -0.2490 + 5 N3 -8.5539 -1.6405 16.7510 N.2 1 DEFG 0.7410 + 6 N4 -10.4153 -7.9000 11.6863 N.3 1 DEFG -0.8000 + 7 C1 -8.2447 -4.3502 14.6567 C.2 1 DEFG 0.1000 + 8 C2 -7.4565 -5.5082 14.6883 C.2 1 DEFG -0.1500 + 9 C3 -7.7630 -6.6105 13.8830 C.2 1 DEFG -0.1500 + 10 C4 -8.8600 -6.5678 13.0169 C.2 1 DEFG 0.0862 + 11 C5 -9.6269 -5.4011 12.9415 C.2 1 DEFG -0.1500 + 12 C6 -9.3129 -4.3018 13.7508 C.2 1 DEFG -0.1500 + 13 C7 -9.4532 -0.5219 17.0486 C.3 1 DEFG 0.0990 + 14 C8 -9.1468 -7.7630 12.1793 C.2 1 DEFG 0.5438 + 15 H1 -7.2929 -3.4518 16.2594 H 1 DEFG 0.4000 + 16 H2 -6.5894 -5.5640 15.3427 H 1 DEFG 0.1500 + 17 H3 -7.1384 -7.5008 13.9309 H 1 DEFG 0.1500 + 18 H41 -10.6146 -8.7831 11.2330 H 1 DEFG 0.3700 + 19 H42 -11.1979 -7.3917 12.0710 H 1 DEFG 0.3700 + 20 H5 -10.4493 -5.3117 12.2384 H 1 DEFG 0.1500 + 21 H6 -9.9079 -3.3965 13.6574 H 1 DEFG 0.1500 + 22 H71 -9.1601 -0.0677 17.9985 H 1 DEFG 0.0000 + 23 H72 -10.4738 -0.9061 17.1196 H 1 DEFG 0.0000 + 24 H73 -9.3720 0.2148 16.2455 H 1 DEFG 0.0000 +@BOND + 1 1 5 1 + 2 2 14 2 + 3 3 15 1 + 4 3 7 1 + 5 3 4 1 + 6 4 5 2 + 7 5 13 1 + 8 6 19 1 + 9 6 18 1 + 10 6 14 am + 11 7 12 1 + 12 7 8 2 + 13 8 16 1 + 14 8 9 1 + 15 9 17 1 + 16 9 10 2 + 17 10 14 1 + 18 10 11 1 + 19 11 20 1 + 20 11 12 2 + 21 12 21 1 + 22 13 24 1 + 23 13 23 1 + 24 13 22 1 +@SUBSTRUCTURE + 1 DEFG 1 +@COMMENT +COMMENT 3-(4-CARBAMOYLPHENYL)-1-METHYLTRIAZENE 1-OXIDE (ANTITUMOUR +@MOLECULE +DEFLEF + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C7 -9.1314 -3.5948 15.6257 C.3 1 DEFL 0.6002 + 2 N1 -7.7250 -3.6049 15.3432 N.3 1 DEFL -0.3441 + 3 N11 -6.9334 -2.5823 15.8506 N.2 1 DEFL 1.0240 + 4 O12 -7.5588 -1.6178 16.2889 O.3 1 DEFL -0.5200 + 5 O13 -5.7189 -2.7332 15.7835 O.2 1 DEFL -0.5200 + 6 C2 -7.2435 -4.8845 15.1191 C.2 1 DEFL 0.6900 + 7 O21 -6.0872 -5.2548 15.0130 O.2 1 DEFL -0.5700 + 8 N3 -8.3595 -5.7414 14.9780 N.3 1 DEFL -0.4201 + 9 C31 -8.3523 -6.9662 15.6140 C.2 1 DEFL 0.5690 + 10 C33 -7.1899 -7.8774 15.3173 C.3 1 DEFL 0.0610 + 11 O32 -9.2218 -7.2723 16.4290 O.2 1 DEFL -0.5700 + 12 C8 -9.5719 -4.9472 15.0440 C.3 1 DEFL 0.6002 + 13 N4 -10.0990 -4.5535 13.7691 N.3 1 DEFL -0.3441 + 14 N41 -10.7339 -5.5078 12.9842 N.2 1 DEFL 1.0240 + 15 O43 -10.5619 -6.6701 13.3489 O.3 1 DEFL -0.5200 + 16 O42 -11.3625 -5.1013 12.0137 O.2 1 DEFL -0.5200 + 17 C5 -10.4324 -3.2093 13.7310 C.2 1 DEFL 0.6900 + 18 O51 -11.0421 -2.6006 12.8689 O.2 1 DEFL -0.5700 + 19 N6 -9.8896 -2.6024 14.8872 N.3 1 DEFL -0.4201 + 20 C61 -10.6610 -1.7109 15.6047 C.2 1 DEFL 0.5690 + 21 C62 -11.2269 -0.5395 14.8449 C.3 1 DEFL 0.0610 + 22 O63 -10.9224 -1.8980 16.7924 O.2 1 DEFL -0.5700 + 23 H1 -10.3778 -5.3843 15.6469 H 1 DEFL 0.0000 + 24 H2 -9.2798 -3.5739 16.7128 H 1 DEFL 0.0000 + 25 H3 -12.2319 -0.7810 14.4902 H 1 DEFL 0.0000 + 26 H4 -11.2764 0.3258 15.5124 H 1 DEFL 0.0000 + 27 H5 -10.5849 -0.2723 14.0011 H 1 DEFL 0.0000 + 28 H6 -6.4077 -7.7332 16.0666 H 1 DEFL 0.0000 + 29 H7 -7.5352 -8.9149 15.3490 H 1 DEFL 0.0000 + 30 H8 -6.7905 -7.6904 14.3167 H 1 DEFL 0.0000 +@BOND + 1 1 24 1 + 2 1 19 1 + 3 1 12 1 + 4 1 2 1 + 5 2 6 am + 6 2 3 1 + 7 3 5 2 + 8 3 4 1 + 9 6 8 am + 10 6 7 2 + 11 8 12 1 + 12 8 9 am + 13 9 11 2 + 14 9 10 1 + 15 10 30 1 + 16 10 29 1 + 17 10 28 1 + 18 12 23 1 + 19 12 13 1 + 20 13 17 am + 21 13 14 1 + 22 14 16 2 + 23 14 15 1 + 24 17 19 am + 25 17 18 2 + 26 19 20 am + 27 20 22 2 + 28 20 21 1 + 29 21 27 1 + 30 21 26 1 + 31 21 25 1 +@SUBSTRUCTURE + 1 DEFL 1 +@COMMENT +COMMENT 1,4-DIACETYL-3,6-DINITROTETRAHYDROIMIDAZO(4,5-D)IMIDAZOLE-2 +@MOLECULE +DEFPUZ + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.5280 -2.2949 13.2039 S.3 1 DEFP 0.1277 + 2 N1 -8.2249 -3.8928 12.8813 N.2 1 DEFP -0.5095 + 3 N2 -9.3793 -3.9515 14.8870 N.2 1 DEFP -0.7470 + 4 N3 -8.6318 -5.9843 13.9011 N.3 1 DEFP -0.8521 + 5 N4 -9.8482 -1.7000 15.4686 N.3 1 DEFP -0.7320 + 6 C1 -8.7227 -4.6391 13.8672 C.2 1 DEFP 0.7048 + 7 C2 -9.3457 -2.6327 14.6834 C.2 1 DEFP 0.8250 + 8 C3 -10.0374 -4.6671 15.9618 C.3 1 DEFP 0.5140 + 9 C4 -7.8678 -6.6834 12.8794 C.3 1 DEFP 0.3691 + 10 H3 -8.6379 -6.4818 14.7822 H 1 DEFP 0.4000 + 11 H410 -9.7421 -0.7401 15.1667 H 1 DEFP 0.4500 + 12 H420 -10.3029 -1.9385 16.3336 H 1 DEFP 0.4500 + 13 H31 -10.7085 -5.4281 15.5524 H 1 DEFP 0.0000 + 14 H32 -10.6371 -3.9859 16.5691 H 1 DEFP 0.0000 + 15 H33 -9.2838 -5.1330 16.6031 H 1 DEFP 0.0000 + 16 H41 -8.2268 -6.4407 11.8736 H 1 DEFP 0.0000 + 17 H42 -7.9808 -7.7633 13.0184 H 1 DEFP 0.0000 + 18 H43 -6.8022 -6.4427 12.9546 H 1 DEFP 0.0000 +@BOND + 1 1 7 1 + 2 1 2 1 + 3 2 6 2 + 4 3 8 1 + 5 3 7 2 + 6 3 6 am + 7 4 10 1 + 8 4 9 1 + 9 4 6 am + 10 5 12 1 + 11 5 11 1 + 12 5 7 am + 13 8 15 1 + 14 8 14 1 + 15 8 13 1 + 16 9 18 1 + 17 9 17 1 + 18 9 16 1 +@SUBSTRUCTURE + 1 DEFP 1 +@COMMENT +COMMENT 5-IMINO-4-METHYL-3-METHYLAMINO-4,5-DIHYDRO-1,2,4-THIADIAZOL +@MOLECULE +DEFTUD + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.1304 -4.4663 14.8318 N.3 1 DEFT -0.1150 + 2 N2 -8.5890 -3.2579 14.5227 N.2 1 DEFT -0.0620 + 3 N3 -7.3806 -3.1618 14.2557 N.2 1 DEFT -0.2110 + 4 C4 -6.5630 -4.2637 14.2750 C.2 1 DEFT 0.7110 + 5 N41 -5.2113 -4.0950 13.9826 N.3 1 DEFT -0.7882 + 6 C42 -4.3709 -5.2668 13.7647 C.3 1 DEFT 0.3691 + 7 C43 -4.7392 -2.8578 13.3775 C.3 1 DEFT 0.3691 + 8 N5 -7.0060 -5.4448 14.5547 N.2 1 DEFT -0.6610 + 9 C6 -8.3283 -5.6049 14.8435 C.2 1 DEFT 0.8410 + 10 O61 -8.7337 -6.7369 15.0927 O.2 1 DEFT -0.5700 + 11 C11 -10.5409 -4.4221 15.1188 C.2 1 DEFT 0.1170 + 12 C12 -11.2387 -3.1967 15.0519 C.2 1 DEFT -0.1500 + 13 C13 -12.6095 -3.1105 15.3237 C.2 1 DEFT -0.1500 + 14 C14 -13.3222 -4.2501 15.6714 C.2 1 DEFT -0.1500 + 15 C15 -12.6626 -5.4707 15.7468 C.2 1 DEFT -0.1500 + 16 C16 -11.2897 -5.5545 15.4742 C.2 1 DEFT -0.1500 + 17 H12 -10.7301 -2.2731 14.7845 H 1 DEFT 0.1500 + 18 H13 -13.1146 -2.1498 15.2622 H 1 DEFT 0.1500 + 19 H14 -14.3862 -4.1889 15.8836 H 1 DEFT 0.1500 + 20 H15 -13.2113 -6.3694 16.0194 H 1 DEFT 0.1500 + 21 H16 -10.8465 -6.5414 15.5569 H 1 DEFT 0.1500 + 22 H421 -3.3100 -4.9960 13.7350 H 1 DEFT 0.0000 + 23 H422 -4.4871 -5.9936 14.5759 H 1 DEFT 0.0000 + 24 H423 -4.6278 -5.7494 12.8160 H 1 DEFT 0.0000 + 25 H431 -3.6453 -2.8023 13.3833 H 1 DEFT 0.0000 + 26 H432 -5.0806 -2.7866 12.3397 H 1 DEFT 0.0000 + 27 H433 -5.1015 -1.9844 13.9300 H 1 DEFT 0.0000 +@BOND + 1 1 11 1 + 2 1 9 am + 3 1 2 1 + 4 2 3 2 + 5 3 4 am + 6 4 8 2 + 7 4 5 am + 8 5 7 1 + 9 5 6 1 + 10 6 24 1 + 11 6 23 1 + 12 6 22 1 + 13 7 27 1 + 14 7 26 1 + 15 7 25 1 + 16 8 9 am + 17 9 10 2 + 18 11 16 1 + 19 11 12 2 + 20 12 17 1 + 21 12 13 1 + 22 13 18 1 + 23 13 14 2 + 24 14 19 1 + 25 14 15 1 + 26 15 20 1 + 27 15 16 2 + 28 16 21 1 +@SUBSTRUCTURE + 1 DEFT 1 +@COMMENT +COMMENT 4-DIMETHYLAMINO-1-PHENYL-1,2,3,5-TETRAZIN-6-ONE (AT 278 DEG +@MOLECULE +DEFVAL + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.4342 -2.8238 13.3977 N.2 1 DEFV -0.0930 + 2 N2 -9.6934 -2.3943 13.4555 N.2 1 DEFV 0.3930 + 3 C3 -9.7066 -0.8815 13.7261 C.2 1 DEFV 1.1100 + 4 O31 -10.7615 -0.2874 13.8358 O.2 1 DEFV -0.5700 + 5 N4 -8.4129 -0.5401 13.8155 N.2 1 DEFV -0.6610 + 6 C5 -7.7341 -1.6374 13.6288 C.2 1 DEFV 0.7110 + 7 N51 -6.3513 -1.6309 13.6475 N.3 1 DEFV -0.7882 + 8 C52 -5.5859 -2.8741 13.7159 C.3 1 DEFV 0.3691 + 9 C53 -5.6226 -0.4337 14.0725 C.3 1 DEFV 0.3691 + 10 N21 -10.7805 -3.0429 13.2910 N.3 1 DEFV -0.3400 + 11 C22 -10.7486 -4.3803 13.7632 C.2 1 DEFV 0.1000 + 12 C23 -11.4270 -4.7162 14.9447 C.2 1 DEFV -0.1500 + 13 C24 -11.3694 -6.0168 15.4530 C.2 1 DEFV -0.1500 + 14 C25 -10.6424 -7.0082 14.7871 C.2 1 DEFV -0.1435 + 15 C26 -9.9534 -6.6759 13.6170 C.2 1 DEFV -0.1500 + 16 C27 -10.0077 -5.3760 13.1075 C.2 1 DEFV -0.1500 + 17 C28 -10.5627 -8.3991 15.3482 C.3 1 DEFV 0.1435 + 18 H23 -12.0109 -3.9795 15.4934 H 1 DEFV 0.1500 + 19 H24 -11.9025 -6.2572 16.3723 H 1 DEFV 0.1500 + 20 H26 -9.3794 -7.4357 13.0880 H 1 DEFV 0.1500 + 21 H27 -9.4839 -5.1663 12.1769 H 1 DEFV 0.1500 + 22 H281 -9.7132 -8.4771 16.0335 H 1 DEFV 0.0000 + 23 H282 -11.4797 -8.6548 15.8894 H 1 DEFV 0.0000 + 24 H283 -10.4417 -9.1366 14.5479 H 1 DEFV 0.0000 + 25 H521 -5.9717 -3.6119 13.0047 H 1 DEFV 0.0000 + 26 H522 -4.5327 -2.7101 13.4646 H 1 DEFV 0.0000 + 27 H523 -5.6404 -3.2953 14.7249 H 1 DEFV 0.0000 + 28 H531 -6.0181 0.4616 13.5813 H 1 DEFV 0.0000 + 29 H532 -5.7030 -0.3081 15.1571 H 1 DEFV 0.0000 + 30 H533 -4.5614 -0.4978 13.8095 H 1 DEFV 0.0000 + 31 H1 -11.6614 -2.5831 13.5411 H 1 DEFV 0.4000 +@BOND + 1 1 6 am + 2 1 2 2 + 3 2 10 1 + 4 2 3 am + 5 3 5 am + 6 3 4 2 + 7 5 6 2 + 8 6 7 am + 9 7 9 1 + 10 7 8 1 + 11 8 27 1 + 12 8 26 1 + 13 8 25 1 + 14 9 30 1 + 15 9 29 1 + 16 9 28 1 + 17 10 31 1 + 18 10 11 1 + 19 11 16 2 + 20 11 12 1 + 21 12 18 1 + 22 12 13 2 + 23 13 19 1 + 24 13 14 1 + 25 14 17 1 + 26 14 15 2 + 27 15 20 1 + 28 15 16 1 + 29 16 21 1 + 30 17 24 1 + 31 17 23 1 + 32 17 22 1 +@SUBSTRUCTURE + 1 DEFV 1 +@COMMENT +COMMENT 5-DIMETHYLAMINO-2,3-DIHYDRO-3-OXO-2-P-TOLYLIMINO-1H-1,2,4-T +@MOLECULE +DEFYUI + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.5351 0.7753 0.6190 S.2 1 UNCH -0.3800 + 2 S2 7.4260 0.8164 1.2032 S.3 1 UNCH -0.3210 + 3 N1 3.5463 -2.0837 1.7633 N.3 1 UNCH -0.9000 + 4 C1 5.8668 -0.0165 1.2808 C.2 1 UNCH 0.5066 + 5 C2 5.9053 -1.3749 1.9129 C.2 1 UNCH -0.1238 + 6 C3 4.8712 -2.2232 2.0768 C.2 1 UNCH -0.0382 + 7 C4 5.3188 -3.5162 2.7079 C.3 1 UNCH 0.1382 + 8 C5 6.6837 -3.1661 3.2747 C.3 1 UNCH 0.0000 + 9 C6 7.1754 -1.9886 2.4421 C.3 1 UNCH 0.1382 + 10 H3 6.9476 1.9186 0.6084 H 1 UNCH 0.1800 + 11 H1 3.0791 -2.9453 1.4923 H 1 UNCH 0.4000 + 12 H2 3.3440 -1.3084 1.1300 H 1 UNCH 0.4000 + 13 H41 4.6414 -3.8505 3.5003 H 1 UNCH 0.0000 + 14 H42 5.3906 -4.3023 1.9481 H 1 UNCH 0.0000 + 15 H51 6.5838 -2.8628 4.3252 H 1 UNCH 0.0000 + 16 H52 7.3764 -4.0132 3.2456 H 1 UNCH 0.0000 + 17 H61 7.7524 -1.3119 3.0793 H 1 UNCH 0.0000 + 18 H62 7.8066 -2.3317 1.6146 H 1 UNCH 0.0000 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 2 10 1 + 4 3 6 1 + 5 3 11 1 + 6 3 12 1 + 7 4 5 1 + 8 5 6 2 + 9 5 9 1 + 10 6 7 1 + 11 7 8 1 + 12 7 13 1 + 13 7 14 1 + 14 8 9 1 + 15 8 15 1 + 16 8 16 1 + 17 9 17 1 + 18 9 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-IMINOCYCLOPENTANE-DITHIOIC ACID +@MOLECULE +DEGLUW + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -7.0655 -3.0586 13.4596 CL 1 DEGL -0.1990 + 2 N1 -9.5673 -2.7463 13.5025 N.3 1 DEGL -0.7544 + 3 N2 -8.8127 -4.6800 14.6042 N.2 1 DEGL -0.8334 + 4 C1 -8.6274 -3.5633 13.9103 C.2 1 DEGL 0.9078 + 5 C2 -10.1616 -5.1183 14.9949 C.3 1 DEGL 0.4895 + 6 C3 -7.6713 -5.5292 15.0128 C.3 1 DEGL 0.4895 + 7 H3 -10.5459 -2.8959 13.6839 H 1 DEGL 0.4500 + 8 H4 -9.2827 -1.9268 12.9795 H 1 DEGL 0.4500 + 9 H21 -10.6231 -4.3504 15.6227 H 1 DEGL 0.0000 + 10 H22 -10.7648 -5.2756 14.0958 H 1 DEGL 0.0000 + 11 H23 -10.1260 -6.0544 15.5588 H 1 DEGL 0.0000 + 12 H31 -6.9997 -4.9543 15.6572 H 1 DEGL 0.0000 + 13 H32 -8.0185 -6.4018 15.5737 H 1 DEGL 0.0000 + 14 H33 -7.1420 -5.8837 14.1234 H 1 DEGL 0.0000 +@BOND + 1 1 4 1 + 2 2 8 1 + 3 2 7 1 + 4 2 4 am + 5 3 6 1 + 6 3 5 1 + 7 3 4 2 + 8 5 11 1 + 9 5 10 1 + 10 5 9 1 + 11 6 14 1 + 12 6 13 1 + 13 6 12 1 +@SUBSTRUCTURE + 1 DEGL 1 +@COMMENT +COMMENT N,N-DIMETHYL-CHLOROFORMAMIDINIUM CHLORIDE MONOHYDRATE +@MOLECULE +DEGRIQ + 37 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -7.9857 -5.7114 17.0579 C.2 1 DEGR -0.1500 + 2 C2 -6.5959 -5.7507 16.8925 C.2 1 DEGR -0.1435 + 3 C3 -5.9181 -4.5743 16.5569 C.2 1 DEGR -0.1500 + 4 C4 -6.6205 -3.3820 16.3672 C.2 1 DEGR -0.1500 + 5 C5 -8.0109 -3.3379 16.5219 C.2 1 DEGR 0.1000 + 6 C6 -8.8966 -1.8414 14.8803 C.3 1 DEGR 0.5126 + 7 C7 -10.1023 -2.5606 14.3144 C.2 1 DEGR -0.1435 + 8 C8 -10.3294 -2.5699 12.9286 C.2 1 DEGR -0.1500 + 9 C9 -11.4422 -3.2273 12.3901 C.2 1 DEGR -0.1435 + 10 C10 -12.3182 -3.8963 13.2509 C.2 1 DEGR -0.1500 + 11 C11 -12.1011 -3.8854 14.6307 C.2 1 DEGR -0.1500 + 12 C12 -11.0015 -3.2137 15.1772 C.2 1 DEGR 0.1000 + 13 C13 -10.2021 -4.4947 17.0327 C.3 1 DEGR 0.5126 + 14 C14 -8.6982 -4.5172 16.8627 C.2 1 DEGR -0.1435 + 15 C15 -9.9814 -2.0971 17.0147 C.3 1 DEGR 0.7382 + 16 C16 -5.8376 -7.0227 17.1305 C.3 1 DEGR 0.1435 + 17 C17 -11.6576 -3.2664 10.9063 C.3 1 DEGR 0.1435 + 18 N1 -8.7016 -2.1166 16.3161 N.3 1 DEGR -0.8382 + 19 N2 -10.7987 -3.2239 16.5807 N.3 1 DEGR -0.8382 + 20 H1 -8.5219 -6.6173 17.3332 H 1 DEGR 0.1500 + 21 H3 -4.8368 -4.5751 16.4426 H 1 DEGR 0.1500 + 22 H4 -6.0781 -2.4754 16.1129 H 1 DEGR 0.1500 + 23 H61 -9.0607 -0.7626 14.7625 H 1 DEGR 0.0000 + 24 H62 -8.0001 -2.0909 14.2981 H 1 DEGR 0.0000 + 25 H8 -9.6286 -2.0652 12.2667 H 1 DEGR 0.1500 + 26 H10 -13.1800 -4.4282 12.8552 H 1 DEGR 0.1500 + 27 H11 -12.8013 -4.3953 15.2869 H 1 DEGR 0.1500 + 28 H131 -10.4232 -4.6105 18.1015 H 1 DEGR 0.0000 + 29 H132 -10.6530 -5.3547 16.5210 H 1 DEGR 0.0000 + 30 H151 -10.5062 -1.1488 16.8309 H 1 DEGR 0.0000 + 31 H152 -9.8253 -2.1309 18.1024 H 1 DEGR 0.0000 + 32 H161 -4.9325 -7.0594 16.5151 H 1 DEGR 0.0000 + 33 H162 -6.4450 -7.8946 16.8659 H 1 DEGR 0.0000 + 34 H163 -5.5521 -7.0965 18.1844 H 1 DEGR 0.0000 + 35 H171 -11.2785 -2.3547 10.4326 H 1 DEGR 0.0000 + 36 H172 -12.7241 -3.3363 10.6678 H 1 DEGR 0.0000 + 37 H173 -11.1415 -4.1301 10.4760 H 1 DEGR 0.0000 +@BOND + 1 1 2 2 + 2 1 14 1 + 3 1 20 1 + 4 2 3 1 + 5 2 16 1 + 6 3 4 2 + 7 3 21 1 + 8 4 5 1 + 9 4 22 1 + 10 5 14 2 + 11 5 18 1 + 12 6 7 1 + 13 6 18 1 + 14 6 23 1 + 15 6 24 1 + 16 7 8 2 + 17 7 12 1 + 18 8 9 1 + 19 8 25 1 + 20 9 10 2 + 21 9 17 1 + 22 10 11 1 + 23 10 26 1 + 24 11 12 2 + 25 11 27 1 + 26 12 19 1 + 27 13 14 1 + 28 13 19 1 + 29 13 28 1 + 30 13 29 1 + 31 15 18 1 + 32 15 19 1 + 33 15 30 1 + 34 15 31 1 + 35 16 32 1 + 36 16 33 1 + 37 16 34 1 + 38 17 35 1 + 39 17 36 1 + 40 17 37 1 +@SUBSTRUCTURE + 1 DEGR 1 +@COMMENT +COMMENT DIOXANE 1,5,13-TRIMETHYL-1-AZONIA-9-AZATETRACYCLO(7.7.1.0-2 +@MOLECULE +DEKRUG + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.8865 -4.6665 14.3584 N.3 1 CHGB -0.6602 + 2 C1 -8.0729 -5.6408 13.3123 C.3 1 CHGB 0.3001 + 3 C2 -6.6569 -4.1885 14.7514 C.2 1 CHGB 0.6900 + 4 O2 -5.5627 -4.6332 14.4383 O.2 1 CHGB -0.5700 + 5 N3 -6.8386 -3.1297 15.5768 N.3 1 CHGB -0.4900 + 6 C4 -8.1605 -2.8053 15.6746 C.2 1 CHGB 0.5690 + 7 O4 -8.5763 -1.8994 16.3863 O.2 1 CHGB -0.5700 + 8 C5 -8.9540 -3.7643 14.7652 C.3 1 CHGB 0.7021 + 9 C6 -9.6253 -3.0593 13.6166 C.2 1 CHGB 0.2890 + 10 O6 -9.0375 -2.3973 12.7662 O.2 1 CHGB -0.5700 + 11 N7 -10.9235 -3.3216 13.6742 N.3 1 CHGB -0.5600 + 12 C8 -11.1332 -4.1376 14.7033 C.2 1 CHGB 0.5000 + 13 O8 -12.2132 -4.5926 15.0578 O.2 1 CHGB -0.5700 + 14 O9 -9.9888 -4.4773 15.3670 O.3 1 CHGB -0.4300 + 15 H11 -7.1997 -6.2969 13.2543 H 1 CHGB 0.0000 + 16 H12 -8.9619 -6.2404 13.5231 H 1 CHGB 0.0000 + 17 H13 -8.1838 -5.1276 12.3532 H 1 CHGB 0.0000 + 18 H3 -6.0961 -2.6200 16.0165 H 1 CHGB 0.3700 +@BOND + 1 1 8 1 + 2 1 3 am + 3 1 2 1 + 4 2 17 1 + 5 2 16 1 + 6 2 15 1 + 7 3 5 am + 8 3 4 2 + 9 5 18 1 + 10 5 6 am + 11 6 8 1 + 12 6 7 2 + 13 8 14 1 + 14 8 9 1 + 15 9 11 am + 16 9 10 2 + 17 11 12 am + 18 12 14 1 + 19 12 13 2 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT METHYLAMMONIUM 1-METHYLCAFFOLIDE +@MOLECULE +DEMBIG + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.7445 -3.7916 15.2852 N.2 1 UNCH -0.1260 + 2 N2 -7.1959 -4.2918 14.2766 N.2 1 UNCH -0.0620 + 3 N3 -7.8642 -5.2231 13.5143 N.3 1 UNCH -0.2981 + 4 C4 -9.1503 -5.6685 13.7609 C.2 1 UNCH 0.6390 + 5 N5 -9.6756 -5.0676 14.8855 N.3 1 UNCH 0.2942 + 6 C6 -10.9052 -5.2472 15.4531 C.2 1 UNCH 0.0365 + 7 N7 -11.0541 -4.5019 16.5242 N.2 1 UNCH -0.5653 + 8 C8 -9.8639 -3.7970 16.6614 C.2 1 UNCH 0.1412 + 9 C810 -8.9977 -4.1502 15.6372 C.2 1 UNCH -0.0256 + 10 C31 -7.1463 -5.7308 12.3511 C.3 1 UNCH 0.3001 + 11 C32 -7.6457 -5.1542 11.0278 C.3 1 UNCH 0.2900 + 12 CL1 -7.3227 -3.4060 10.9092 CL 1 UNCH -0.2900 + 13 O4 -9.8096 -6.4774 13.1245 O.2 1 UNCH -0.5700 + 14 C81 -9.6301 -2.8432 17.7476 C.2 1 UNCH 0.7160 + 15 N82 -8.4226 -2.1978 17.7455 N.3 1 UNCH -0.8000 + 16 O82 -10.4437 -2.5999 18.6336 O.2 1 UNCH -0.5700 + 17 H1 -7.2815 -6.8190 12.3301 H 1 UNCH 0.0000 + 18 H2 -6.0737 -5.5413 12.4793 H 1 UNCH 0.0000 + 19 H3 -7.1324 -5.6357 10.1904 H 1 UNCH 0.0000 + 20 H4 -8.7223 -5.2986 10.9008 H 1 UNCH 0.0000 + 21 H5 -11.6409 -5.9287 15.0441 H 1 UNCH 0.1500 + 22 H6 -8.2619 -1.5163 18.4738 H 1 UNCH 0.3700 + 23 H7 -7.7280 -2.3242 17.0231 H 1 UNCH 0.3700 +@BOND + 1 1 2 2 + 2 1 9 1 + 3 2 3 1 + 4 3 4 am + 5 3 10 1 + 6 4 5 am + 7 4 13 2 + 8 5 6 am + 9 5 9 1 + 10 6 7 2 + 11 6 21 1 + 12 7 8 1 + 13 8 9 2 + 14 8 14 1 + 15 10 11 1 + 16 10 17 1 + 17 10 18 1 + 18 11 12 1 + 19 11 19 1 + 20 11 20 1 + 21 14 15 am + 22 14 16 2 + 23 15 22 1 + 24 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 8-CARBAMOYL-3-(2-CHLOROETHYL)-IMIDAZO(5,1-D)-1,2,3,5-TETRAZ +@MOLECULE +DEPKEO + 19 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S10 -7.7634 -5.3978 15.5857 S.3 1 UNCH -0.2030 + 2 C101 -7.5524 -3.6856 15.2249 C.2 1 UNCH 0.4115 + 3 N1 -6.4222 -3.1211 15.7338 N.2 1 UNCH -0.6200 + 4 C2 -6.2365 -1.8095 15.4717 C.2 1 UNCH 0.1600 + 5 C3 -7.1379 -1.0738 14.7293 C.2 1 UNCH 0.1600 + 6 N4 -8.2627 -1.6186 14.2179 N.2 1 UNCH -0.6200 + 7 C41 -8.4605 -2.9398 14.4756 C.2 1 UNCH 0.3925 + 8 O5 -9.6194 -3.4158 13.9246 O.3 1 UNCH -0.1650 + 9 C51 -9.9885 -4.7232 14.0769 C.2 1 UNCH 0.0825 + 10 C6 -11.1942 -5.0715 13.4619 C.2 1 UNCH -0.1500 + 11 C7 -11.6684 -6.3752 13.5510 C.2 1 UNCH -0.1500 + 12 C8 -10.9136 -7.2912 14.2578 C.2 1 UNCH 0.1600 + 13 N9 -9.7459 -6.9869 14.8628 N.2 1 UNCH -0.6200 + 14 C91 -9.2956 -5.7092 14.7669 C.2 1 UNCH 0.4115 + 15 H2 -5.3355 -1.3647 15.8789 H 1 UNCH 0.1500 + 16 H3 -6.9810 -0.0210 14.5235 H 1 UNCH 0.1500 + 17 H6 -11.7621 -4.3238 12.9135 H 1 UNCH 0.1500 + 18 H7 -12.6013 -6.6670 13.0815 H 1 UNCH 0.1500 + 19 H8 -11.2338 -8.3244 14.3613 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 2 3 2 + 4 2 7 1 + 5 3 4 1 + 6 4 5 2 + 7 4 15 1 + 8 5 6 1 + 9 5 16 1 + 10 6 7 2 + 11 7 8 1 + 12 8 9 1 + 13 9 10 2 + 14 9 14 1 + 15 10 11 1 + 16 10 17 1 + 17 11 12 2 + 18 11 18 1 + 19 12 13 1 + 20 12 19 1 + 21 13 14 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,4,9-TRIAZAPHENOXATHIIN (AT 163 DEG.K) +@MOLECULE +DERZUV + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.1769 -4.8550 15.2337 N.2 1 DERZ -0.4054 + 2 C2 -7.2739 -4.1977 16.1202 C.2 1 DERZ 1.0110 + 3 O2 -7.1854 -4.3829 17.3173 O.2 1 DERZ -0.5700 + 4 N3 -6.5151 -3.3895 15.3349 N.3 1 DERZ -0.7301 + 5 C4 -7.0502 -3.2524 13.9910 C.3 1 DERZ 0.4051 + 6 C5 -8.0336 -4.4238 13.9687 C.2 1 DERZ 0.6038 + 7 N6 -9.1687 -5.7276 15.7632 N.2 1 DERZ -0.2800 + 8 C7 -10.3170 -5.0990 15.9082 C.2 1 DERZ 0.2500 + 9 O7 -10.5943 -3.9086 15.5994 O.3 1 DERZ -0.8610 + 10 C8 -11.4389 -6.0393 16.4914 C.3 1 DERZ 1.0810 + 11 F81 -10.9924 -6.7913 17.5401 F 1 DERZ -0.3400 + 12 F82 -11.8557 -6.9368 15.5444 F 1 DERZ -0.3400 + 13 F83 -12.5599 -5.3994 16.9285 F 1 DERZ -0.3400 + 14 C9 -7.7587 -1.9000 13.8887 C.3 1 DERZ 0.0000 + 15 C10 -5.8936 -3.3856 13.0062 C.3 1 DERZ 0.0000 + 16 N11 -8.6179 -4.9127 12.8496 N.3 1 DERZ -0.8334 + 17 C12 -8.5077 -4.3355 11.5054 C.3 1 DERZ 0.4895 + 18 C13 -9.4712 -6.1172 12.9432 C.3 1 DERZ 0.4895 + 19 H3 -5.9521 -2.6942 15.8044 H 1 DERZ 0.3700 + 20 H91 -7.0585 -1.0793 14.0843 H 1 DERZ 0.0000 + 21 H92 -8.5672 -1.8152 14.6232 H 1 DERZ 0.0000 + 22 H93 -8.1967 -1.7264 12.9041 H 1 DERZ 0.0000 + 23 H101 -6.1908 -3.1614 11.9792 H 1 DERZ 0.0000 + 24 H102 -5.0819 -2.6931 13.2597 H 1 DERZ 0.0000 + 25 H103 -5.4763 -4.3990 13.0214 H 1 DERZ 0.0000 + 26 H121 -8.4550 -3.2495 11.5397 H 1 DERZ 0.0000 + 27 H122 -7.6248 -4.7466 11.0090 H 1 DERZ 0.0000 + 28 H123 -9.3932 -4.5900 10.9134 H 1 DERZ 0.0000 + 29 H131 -9.5625 -6.5822 11.9553 H 1 DERZ 0.0000 + 30 H132 -10.4714 -5.8390 13.2801 H 1 DERZ 0.0000 + 31 H133 -9.0106 -6.8650 13.5932 H 1 DERZ 0.0000 +@BOND + 1 1 2 am + 2 1 6 2 + 3 1 7 1 + 4 2 3 2 + 5 2 4 am + 6 4 5 1 + 7 4 19 1 + 8 5 6 1 + 9 5 14 1 + 10 5 15 1 + 11 6 16 am + 12 7 8 2 + 13 8 9 1 + 14 8 10 1 + 15 10 11 1 + 16 10 12 1 + 17 10 13 1 + 18 14 20 1 + 19 14 21 1 + 20 14 22 1 + 21 15 23 1 + 22 15 24 1 + 23 15 25 1 + 24 16 17 1 + 25 16 18 1 + 26 17 26 1 + 27 17 27 1 + 28 17 28 1 + 29 18 29 1 + 30 18 30 1 + 31 18 31 1 +@SUBSTRUCTURE + 1 DERZ 1 +@COMMENT +COMMENT 5-DIMETHYLAMINO-4,4-DIMETHYL-2-OXO-4H-IMIDAZOLIUM-1-TRIFLUO +@MOLECULE +DESWUT + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.1152 -6.2943 17.3051 S.3 1 UNCH -0.0800 + 2 C2 -7.9291 -6.6736 16.1353 C.2 1 UNCH 0.2281 + 3 N3 -7.8764 -5.8877 15.0859 N.2 1 UNCH -0.5653 + 4 C4 -8.8488 -4.8838 15.1976 C.2 1 UNCH 0.1412 + 5 C5 -9.6135 -4.9506 16.3592 C.2 1 UNCH 0.1240 + 6 N6 -10.6115 -4.1403 16.7818 N.3 1 UNCH -0.8840 + 7 C7 -9.0289 -3.8675 14.1554 C.2 1 UNCH 0.8060 + 8 O8 -9.9225 -3.0242 14.1735 O.2 1 UNCH -0.5700 + 9 O9 -8.0965 -3.9698 13.1607 O.3 1 UNCH -0.4300 + 10 C10 -8.2024 -3.0185 12.0944 C.3 1 UNCH 0.2800 + 11 C11 -7.4611 -1.7442 12.4528 C.3 1 UNCH 0.0000 + 12 H61 -11.0253 -3.4748 16.1263 H 1 UNCH 0.4000 + 13 H62 -11.2451 -4.4569 17.5093 H 1 UNCH 0.4000 + 14 H101 -7.7424 -3.4747 11.2117 H 1 UNCH 0.0000 + 15 H102 -9.2495 -2.8165 11.8416 H 1 UNCH 0.0000 + 16 H111 -6.4170 -1.9634 12.6993 H 1 UNCH 0.0000 + 17 H112 -7.9025 -1.2667 13.3333 H 1 UNCH 0.0000 + 18 H113 -7.4860 -1.0342 11.6214 H 1 UNCH 0.0000 + 19 H2 -7.2632 -7.5178 16.2574 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 19 1 + 5 3 4 1 + 6 4 5 2 + 7 4 7 1 + 8 5 6 1 + 9 6 12 1 + 10 6 13 1 + 11 7 8 2 + 12 7 9 1 + 13 9 10 1 + 14 10 11 1 + 15 10 14 1 + 16 10 15 1 + 17 11 16 1 + 18 11 17 1 + 19 11 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-AMINOTHIAZOLE-4-CARBOXYLIC ACID ETHYL ESTER +@MOLECULE +DESYOP + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N11 -7.1934 -3.8409 12.5785 N.1 1 UNCH -0.5571 + 2 N21 -8.4774 -5.1940 15.4500 N.3 1 UNCH -0.9000 + 3 C11 -7.8997 -3.9600 13.4921 C.1 1 UNCH 0.4921 + 4 C21 -8.7804 -4.1387 14.6140 C.2 1 UNCH 0.1650 + 5 C31 -9.8226 -3.3189 14.7969 C.2 1 UNCH -0.3000 + 6 H211 -7.9771 -5.9525 14.9883 H 1 UNCH 0.4000 + 7 H221 -9.2677 -5.5241 15.9970 H 1 UNCH 0.4000 + 8 H311 -10.4925 -3.4350 15.6417 H 1 UNCH 0.1500 + 9 H321 -10.0267 -2.4988 14.1139 H 1 UNCH 0.1500 +@BOND + 1 1 3 3 + 2 2 4 1 + 3 2 6 1 + 4 2 7 1 + 5 3 4 1 + 6 4 5 2 + 7 5 8 1 + 8 5 9 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-AMINOPROPENENITRILE (AT 97DEG.K) +@MOLECULE +DEWHOC + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.3676 -5.5806 14.0718 N.3 1 DEWH -0.4271 + 2 N2 -8.5698 -6.0240 15.3507 N.2 1 DEWH -0.4920 + 3 O1 -9.8035 -4.9686 18.5609 O.3 1 DEWH -0.6500 + 4 O2 -9.0403 -6.9904 17.9272 O.2 1 DEWH -0.5700 + 5 O3 -10.0331 -3.1710 16.7850 O.2 1 DEWH -0.5700 + 6 O4 -10.2037 -0.6724 12.2356 O.3 1 DEWH -0.3625 + 7 O5 -9.1683 -2.1606 10.6474 O.3 1 DEWH -0.3625 + 8 C1 -9.3167 -5.8352 17.6563 C.2 1 DEWH 0.7200 + 9 C2 -9.1309 -5.2607 16.2432 C.2 1 DEWH 0.4500 + 10 C3 -9.5781 -3.8784 15.8931 C.2 1 DEWH 0.4838 + 11 C4 -9.4570 -3.4459 14.5039 C.2 1 DEWH 0.0862 + 12 C5 -9.9419 -2.1856 14.1234 C.2 1 DEWH -0.1500 + 13 C6 -9.8013 -1.8386 12.8032 C.2 1 DEWH 0.0825 + 14 C7 -9.7993 -0.8806 10.8658 C.3 1 DEWH 0.5600 + 15 C8 -9.2115 -2.6873 11.9008 C.2 1 DEWH 0.0825 + 16 C9 -8.7274 -3.9306 12.2675 C.2 1 DEWH -0.1500 + 17 C10 -8.8426 -4.3457 13.6061 C.2 1 DEWH 0.1000 + 18 C11 -7.7655 -6.5799 13.1758 C.3 1 DEWH 0.3691 + 19 C12 -8.8366 -7.4193 12.4958 C.3 1 DEWH 0.0000 + 20 H1 -10.0069 -4.0709 18.2009 H 1 DEWH 0.5000 + 21 H5 -10.4088 -1.5108 14.8327 H 1 DEWH 0.1500 + 22 H71 -10.6849 -0.8117 10.2237 H 1 DEWH 0.0000 + 23 H72 -9.0955 -0.0894 10.5831 H 1 DEWH 0.0000 + 24 H9 -8.2738 -4.5488 11.5020 H 1 DEWH 0.1500 + 25 H111 -7.1040 -6.1142 12.4373 H 1 DEWH 0.0000 + 26 H112 -7.1188 -7.2462 13.7617 H 1 DEWH 0.0000 + 27 H121 -8.3737 -8.1793 11.8587 H 1 DEWH 0.0000 + 28 H122 -9.4931 -6.8067 11.8703 H 1 DEWH 0.0000 + 29 H123 -9.4627 -7.9303 13.2348 H 1 DEWH 0.0000 +@BOND + 1 1 18 1 + 2 1 17 1 + 3 1 2 1 + 4 2 9 2 + 5 3 20 1 + 6 3 8 1 + 7 4 8 2 + 8 5 10 2 + 9 6 14 1 + 10 6 13 1 + 11 7 15 1 + 12 7 14 1 + 13 8 9 1 + 14 9 10 1 + 15 10 11 1 + 16 11 17 2 + 17 11 12 1 + 18 12 21 1 + 19 12 13 2 + 20 13 15 1 + 21 14 23 1 + 22 14 22 1 + 23 15 16 2 + 24 16 24 1 + 25 16 17 1 + 26 18 26 1 + 27 18 25 1 + 28 18 19 1 + 29 19 29 1 + 30 19 28 1 + 31 19 27 1 +@SUBSTRUCTURE + 1 DEWH 1 +@COMMENT +COMMENT 1-ETHYL-1,4-DIHYDRO-4-OXO(1,3)DIOXOLO(4,5G)CINNOLINE-3-CARB +@MOLECULE +DEWJEU + 36 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.0972 -2.0262 16.5258 SI 1 UNCH 0.5995 + 2 N1 -8.5132 -3.2349 15.3353 N.3 1 UNCH -0.5580 + 3 C1 -7.5744 -3.9060 14.5245 C.2 1 UNCH -0.0500 + 4 C2 -9.8488 -3.6315 15.0982 C.2 1 UNCH -0.0500 + 5 C3 -6.2557 -1.7532 16.5708 C.3 1 UNCH -0.0805 + 6 C4 -8.6973 -2.6455 18.1795 C.3 1 UNCH -0.0805 + 7 C5 -8.9706 -0.4497 16.0458 C.3 1 UNCH -0.0805 + 8 H1 -6.5323 -3.6400 14.6647 H 1 UNCH 0.1500 + 9 H2 -10.6078 -3.1409 15.7003 H 1 UNCH 0.1500 + 10 H31 -5.7234 -2.6722 16.8345 H 1 UNCH 0.0000 + 11 H32 -5.8811 -1.4053 15.6033 H 1 UNCH 0.0000 + 12 H33 -5.9985 -0.9955 17.3176 H 1 UNCH 0.0000 + 13 H41 -9.7831 -2.7801 18.1836 H 1 UNCH 0.0000 + 14 H42 -8.2355 -3.6059 18.4281 H 1 UNCH 0.0000 + 15 H43 -8.4450 -1.9351 18.9727 H 1 UNCH 0.0000 + 16 H51 -8.6688 -0.1249 15.0453 H 1 UNCH 0.0000 + 17 H52 -10.0568 -0.5808 16.0464 H 1 UNCH 0.0000 + 18 H53 -8.7299 0.3544 16.7479 H 1 UNCH 0.0000 + 19 C2B -7.9193 -4.8359 13.6118 C.2 1 UNCH -0.0500 + 20 C1B -10.1936 -4.5614 14.1855 C.2 1 UNCH -0.0500 + 21 N1B -9.2548 -5.2325 13.3747 N.3 1 UNCH -0.5580 + 22 H2B -7.1602 -5.3265 13.0097 H 1 UNCH 0.1500 + 23 H1B -11.2357 -4.8274 14.0453 H 1 UNCH 0.1500 + 24 SI1B -9.6708 -6.4412 12.1842 SI 1 UNCH 0.5995 + 25 C3B -11.5123 -6.7142 12.1392 C.3 1 UNCH -0.0805 + 26 C4B -9.0707 -5.8219 10.5305 C.3 1 UNCH -0.0805 + 27 C5B -8.7974 -8.0177 12.6642 C.3 1 UNCH -0.0805 + 28 H31B -12.0446 -5.7952 11.8755 H 1 UNCH 0.0000 + 29 H32B -11.8869 -7.0621 13.1067 H 1 UNCH 0.0000 + 30 H33B -11.7695 -7.4719 11.3924 H 1 UNCH 0.0000 + 31 H41B -7.9849 -5.6873 10.5264 H 1 UNCH 0.0000 + 32 H42B -9.5325 -4.8615 10.2819 H 1 UNCH 0.0000 + 33 H43B -9.3230 -6.5323 9.7373 H 1 UNCH 0.0000 + 34 H51B -9.0992 -8.3425 13.6647 H 1 UNCH 0.0000 + 35 H52B -7.7112 -7.8866 12.6636 H 1 UNCH 0.0000 + 36 H53B -9.0381 -8.8218 11.9621 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 3 1 + 6 2 4 1 + 7 3 8 1 + 8 3 19 2 + 9 4 9 1 + 10 4 20 2 + 11 5 10 1 + 12 5 11 1 + 13 5 12 1 + 14 6 13 1 + 15 6 14 1 + 16 6 15 1 + 17 7 16 1 + 18 7 17 1 + 19 7 18 1 + 20 19 21 1 + 21 19 22 1 + 22 20 21 1 + 23 20 23 1 + 24 21 24 1 + 25 24 25 1 + 26 24 26 1 + 27 24 27 1 + 28 25 28 1 + 29 25 29 1 + 30 25 30 1 + 31 26 31 1 + 32 26 32 1 + 33 26 33 1 + 34 27 34 1 + 35 27 35 1 + 36 27 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,4-BIS(TRIMETHYLSILYL)-1,4-DIHYDROPYRAZINE (AT -110DEG.C) +@MOLECULE +DEXCIS + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -7.8012 -7.5904 15.3143 O.2 1 UNCH -0.5700 + 2 C1 -8.2668 -6.9256 14.4220 C.2 1 UNCH 0.5770 + 3 C2 -9.5295 -6.0902 14.1183 C.3 1 UNCH 0.0530 + 4 C3 -8.6112 -5.4240 13.0420 C.3 1 UNCH 0.3330 + 5 N1 -7.6995 -6.5714 13.2338 N.3 1 UNCH -0.6550 + 6 C4 -10.0809 -5.2714 15.2727 C.3 1 UNCH 0.2800 + 7 C5 -11.1254 -4.2773 14.7838 C.3 1 UNCH 0.0000 + 8 O2 -10.7327 -6.1587 16.1822 O.3 1 UNCH -0.6800 + 9 C6 -7.9553 -3.9911 13.2686 C.2 1 UNCH -0.1080 + 10 C7 -8.2824 -2.9044 12.4304 C.2 1 UNCH -0.1500 + 11 C8 -7.7267 -1.6333 12.6045 C.2 1 UNCH -0.1500 + 12 C9 -6.8156 -1.4081 13.6293 C.2 1 UNCH -0.1500 + 13 C10 -6.4615 -2.4529 14.4745 C.2 1 UNCH -0.1500 + 14 C11 -7.0220 -3.7211 14.2929 C.2 1 UNCH -0.1500 + 15 H2 -10.3161 -6.7129 13.6653 H 1 UNCH 0.0000 + 16 H3 -9.0665 -5.4911 12.0430 H 1 UNCH 0.0000 + 17 H1 -6.6884 -6.5562 13.2136 H 1 UNCH 0.3700 + 18 H4 -9.2861 -4.7540 15.8190 H 1 UNCH 0.0000 + 19 H15 -10.7067 -3.5487 14.0859 H 1 UNCH 0.0000 + 20 H25 -11.9513 -4.7935 14.2812 H 1 UNCH 0.0000 + 21 H35 -11.5618 -3.7342 15.6291 H 1 UNCH 0.0000 + 22 H7 -8.9921 -3.0533 11.6174 H 1 UNCH 0.1500 + 23 H8 -8.0059 -0.8222 11.9367 H 1 UNCH 0.1500 + 24 H9 -6.3802 -0.4220 13.7672 H 1 UNCH 0.1500 + 25 H10 -5.7468 -2.2857 15.2767 H 1 UNCH 0.1500 + 26 H11 -6.7207 -4.5162 14.9742 H 1 UNCH 0.1500 + 27 H5 -10.9177 -5.6630 16.9988 H 1 UNCH 0.4000 +@BOND + 1 1 2 2 + 2 2 5 am + 3 2 3 1 + 4 3 15 1 + 5 3 6 1 + 6 3 4 1 + 7 4 16 1 + 8 4 9 1 + 9 4 5 1 + 10 5 17 1 + 11 6 18 1 + 12 6 8 1 + 13 6 7 1 + 14 7 21 1 + 15 7 20 1 + 16 7 19 1 + 17 8 27 1 + 18 9 14 1 + 19 9 10 2 + 20 10 22 1 + 21 10 11 1 + 22 11 23 1 + 23 11 12 2 + 24 12 24 1 + 25 12 13 1 + 26 13 25 1 + 27 13 14 2 + 28 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT REL-(1'R,3S,4S)-3-(1'-HYDROXYETHYL)-4-PHENYL-2-AZETIDINONE +@MOLECULE +DEXGIW + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.2196 -6.1743 15.7916 N.3 1 DEXC -0.4940 + 2 C2 -8.6049 -7.4917 15.7751 C.2 1 DEXC 0.5690 + 3 O2 -8.4520 -8.2164 16.7561 O.2 1 DEXC -0.5700 + 4 C3 -9.3290 -7.9782 14.5342 C.3 1 DEXC 0.0610 + 5 C4 -8.7936 -7.3297 13.2722 C.3 1 DEXC 0.2556 + 6 N5 -8.6298 -5.9034 13.4621 N.3 1 DEXC 0.0476 + 7 C6 -8.6649 -4.9279 12.5135 C.2 1 DEXC -0.3016 + 8 C7 -8.3327 -3.7411 13.1363 C.2 1 DEXC -0.1500 + 9 C8 -8.0849 -4.0119 14.5233 C.2 1 DEXC -0.0860 + 10 C9 -8.3083 -5.3707 14.6781 C.2 1 DEXC -0.0876 + 11 C10 -7.6873 -3.1130 15.6074 C.2 1 DEXC 0.7160 + 12 O10 -7.4684 -3.5232 16.7448 O.2 1 DEXC -0.5700 + 13 N11 -7.5729 -1.7910 15.2519 N.3 1 DEXC -0.4900 + 14 C12 -7.2662 -0.7977 16.1345 C.2 1 DEXC 0.5700 + 15 O13 -7.2405 0.3831 15.8092 O.2 1 DEXC -0.5700 + 16 H1 -7.8574 -5.7883 16.6615 H 1 DEXC 0.3700 + 17 H31 -9.2272 -9.0661 14.4627 H 1 DEXC 0.0000 + 18 H32 -10.3922 -7.7435 14.6655 H 1 DEXC 0.0000 + 19 H41 -9.4717 -7.4935 12.4287 H 1 DEXC 0.0000 + 20 H42 -7.8039 -7.7245 13.0154 H 1 DEXC 0.0000 + 21 H6 -8.9016 -5.1461 11.4796 H 1 DEXC 0.1500 + 22 H7 -8.2657 -2.7897 12.6247 H 1 DEXC 0.1500 + 23 H11 -7.7865 -1.4836 14.3180 H 1 DEXC 0.3700 + 24 H12 -7.0506 -1.1406 17.1597 H 1 DEXC 0.0600 +@BOND + 1 1 2 am + 2 1 10 1 + 3 1 16 1 + 4 2 3 2 + 5 2 4 1 + 6 4 5 1 + 7 4 17 1 + 8 4 18 1 + 9 5 6 1 + 10 5 19 1 + 11 5 20 1 + 12 6 7 1 + 13 6 10 1 + 14 7 8 2 + 15 7 21 1 + 16 8 9 1 + 17 8 22 1 + 18 9 10 2 + 19 9 11 1 + 20 11 12 2 + 21 11 13 am + 22 13 14 am + 23 13 23 1 + 24 14 15 2 + 25 14 24 1 +@SUBSTRUCTURE + 1 DEXC 1 +@COMMENT +COMMENT N-FORMYL-1,2,3,4-TETRAHYDRO-2-OXOPYRROLO(1,2-A)PYRIMIDINE-8 +@MOLECULE +DEZDUH + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 -8.7944 -2.3940 15.6023 F 1 DEXG -0.2980 + 2 F2 -8.8106 -3.3839 12.4846 F 1 DEXG -0.2980 + 3 F3 -6.4602 -4.9500 13.0359 F 1 DEXG -0.3400 + 4 F4 -6.3886 -2.9849 14.0119 F 1 DEXG -0.3400 + 5 F5 -11.2079 -2.6630 14.0337 F 1 DEXG -0.3400 + 6 F6 -11.3325 -3.7008 15.9641 F 1 DEXG -0.3400 + 7 C1 -9.1989 -3.5088 14.9700 C.3 1 DEXG 0.2980 + 8 C2 -8.5172 -3.9704 13.6576 C.3 1 DEXG 0.2980 + 9 C3 -7.0468 -4.1570 13.9562 C.3 1 DEXG 0.6800 + 10 C4 -7.1267 -4.8387 15.3072 C.3 1 DEXG 0.0000 + 11 C5 -8.6430 -4.8951 15.4438 C.3 1 DEXG 0.0000 + 12 C6 -9.2506 -5.2994 14.0469 C.3 1 DEXG 0.0000 + 13 C7 -10.7433 -4.9959 14.0691 C.3 1 DEXG 0.0000 + 14 C8 -10.6913 -3.6576 14.7780 C.3 1 DEXG 0.6800 + 15 H4 -6.6873 -5.8401 15.2960 H 1 DEXG 0.0000 + 16 H4_ -6.6738 -4.2414 16.1036 H 1 DEXG 0.0000 + 17 H5 -9.0688 -5.3469 16.3408 H 1 DEXG 0.0000 + 18 H6 -8.9152 -6.2314 13.5898 H 1 DEXG 0.0000 + 19 H7 -11.2974 -5.7481 14.6377 H 1 DEXG 0.0000 + 20 H7_ -11.1521 -4.9168 13.0577 H 1 DEXG 0.0000 +@BOND + 1 1 7 1 + 2 2 8 1 + 3 3 9 1 + 4 4 9 1 + 5 5 14 1 + 6 6 14 1 + 7 7 8 1 + 8 7 11 1 + 9 7 14 1 + 10 8 9 1 + 11 8 12 1 + 12 9 10 1 + 13 10 11 1 + 14 10 15 1 + 15 10 16 1 + 16 11 12 1 + 17 11 17 1 + 18 12 13 1 + 19 12 18 1 + 20 13 14 1 + 21 13 19 1 + 22 13 20 1 +@SUBSTRUCTURE + 1 DEXG 1 +@COMMENT +COMMENT 1,2,2,5,6,6-HEXAFLUORO-TRICYCLO(3.3.0.0-6,8-)OCTANE (AT -10 +@MOLECULE +DEZNIF + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.0618 -6.0341 11.9445 S.3 1 DEZN 1.1718 + 2 O1 -7.8049 -5.6551 11.3259 O.3 1 DEZN -0.6500 + 3 O2 -10.3368 -5.6294 11.3813 O.3 1 DEZN -0.6500 + 4 N1 -8.9708 -6.1877 14.5684 N.2 1 DEZN -0.6210 + 5 C2 -9.0163 -5.2868 13.6241 C.2 1 DEZN 0.4120 + 6 C3 -9.0202 -3.7671 13.8321 C.3 1 DEZN 0.1992 + 7 C4 -10.3908 -3.2994 14.2483 C.2 1 DEZN -0.2882 + 8 C5 -10.7620 -2.5498 15.2961 C.2 1 DEZN -0.1500 + 9 C6 -9.9340 -1.9702 16.3234 C.2 1 DEZN -0.1500 + 10 C7 -8.7355 -2.4097 16.7332 C.2 1 DEZN -0.2882 + 11 C8 -7.9460 -3.5526 16.1444 C.3 1 DEZN 0.2764 + 12 C9 -8.5088 -4.8668 16.6008 C.2 1 DEZN -0.2882 + 13 C10 -8.9447 -5.9215 15.9031 C.2 1 DEZN 0.0210 + 14 C11 -7.7879 -3.3726 14.6377 C.3 1 DEZN 0.0000 + 15 C12 -9.0747 -7.7870 12.2052 C.3 1 DEZN 0.1052 + 16 H4 -11.1923 -3.6159 13.5772 H 1 DEZN 0.1500 + 17 H5 -11.8222 -2.3136 15.3962 H 1 DEZN 0.1500 + 18 H6 -10.3788 -1.1244 16.8469 H 1 DEZN 0.1500 + 19 H7 -8.2583 -1.8857 17.5598 H 1 DEZN 0.1500 + 20 H9 -8.5788 -4.9575 17.6858 H 1 DEZN 0.1500 + 21 H10 -9.3089 -6.7625 16.4969 H 1 DEZN 0.1500 + 22 H111 -6.9267 -3.9662 14.2991 H 1 DEZN 0.0000 + 23 H112 -7.5288 -2.3281 14.4143 H 1 DEZN 0.0000 + 24 H121 -9.9639 -8.0582 12.7769 H 1 DEZN 0.0000 + 25 H122 -9.1062 -8.2707 11.2263 H 1 DEZN 0.0000 + 26 H123 -8.1628 -8.0792 12.7289 H 1 DEZN 0.0000 + 27 H1 -8.8657 -3.3485 12.8271 H 1 DEZN 0.0000 + 28 H2 -6.9359 -3.4776 16.5714 H 1 DEZN 0.0000 +@BOND + 1 1 15 1 + 2 1 5 1 + 3 1 3 1 + 4 1 2 1 + 5 4 13 1 + 6 4 5 2 + 7 5 6 1 + 8 6 27 1 + 9 6 14 1 + 10 6 7 1 + 11 7 16 1 + 12 7 8 2 + 13 8 17 1 + 14 8 9 1 + 15 9 18 1 + 16 9 10 2 + 17 10 19 1 + 18 10 11 1 + 19 11 28 1 + 20 11 14 1 + 21 11 12 1 + 22 12 20 1 + 23 12 13 2 + 24 13 21 1 + 25 14 23 1 + 26 14 22 1 + 27 15 26 1 + 28 15 25 1 + 29 15 24 1 +@SUBSTRUCTURE + 1 DEZN 1 +@COMMENT +COMMENT 2-METHANESULFONYL-3,8-METHANOAZA(10)ANNULENE 2-METHANESULFO +@MOLECULE +DEZXEL + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.7888 -3.5650 14.1345 N.3 1 DEZW -0.2780 + 2 C2 -7.2122 -4.7534 14.5565 C.2 1 DEZW 0.2490 + 3 C3 -7.7946 -5.8885 14.9750 C.2 1 DEZW -0.1500 + 4 C4 -9.1781 -6.2335 15.1185 C.2 1 DEZW -0.1500 + 5 C5 -10.2303 -5.4601 14.8530 C.2 1 DEZW -0.1500 + 6 C6 -10.2157 -4.1069 14.3634 C.2 1 DEZW 0.1400 + 7 C7 -9.1535 -3.3344 14.0696 C.2 1 DEZW -0.0292 + 8 C8 -9.3075 -1.9314 13.5642 C.3 1 DEZW 0.4182 + 9 O9 -7.9876 -1.4414 13.3691 O.3 1 DEZW -0.4300 + 10 C10 -7.0994 -2.4248 13.7128 C.2 1 DEZW 0.7800 + 11 O11 -5.8993 -2.2204 13.6226 O.2 1 DEZW -0.5700 + 12 CL12 -5.4628 -4.8226 14.5578 CL 1 DEZW -0.1400 + 13 CL13 -11.8329 -3.4517 14.1483 CL 1 DEZW -0.1400 + 14 H1 -7.1408 -6.7140 15.2647 H 1 DEZW 0.1500 + 15 H2 -9.3656 -7.2426 15.4860 H 1 DEZW 0.1500 + 16 H3 -11.2140 -5.8976 15.0246 H 1 DEZW 0.1500 + 17 H4 -9.8288 -1.8917 12.6025 H 1 DEZW 0.0000 + 18 H5 -9.8059 -1.2813 14.2903 H 1 DEZW 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 10 am + 4 2 3 2 + 5 2 12 1 + 6 3 4 1 + 7 3 14 1 + 8 4 5 2 + 9 4 15 1 + 10 5 6 1 + 11 5 16 1 + 12 6 7 2 + 13 6 13 1 + 14 7 8 1 + 15 8 9 1 + 16 8 17 1 + 17 8 18 1 + 18 9 10 1 + 19 10 11 2 +@SUBSTRUCTURE + 1 DEZW 1 +@COMMENT +COMMENT 4,8-DICHLORO-3-OXO-3H-OXAZOLO(3,4-A)AZEPINE +@MOLECULE +DHOADS01 + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -5.9595 -4.4054 16.8948 C.2 1 DHOA 0.4700 + 2 C2 -7.7116 -4.3609 15.5398 C.2 1 DHOA 0.1054 + 3 C3 -7.5447 -3.0133 15.2656 C.2 1 DHOA 0.2272 + 4 C4 -6.4617 -2.3730 15.8909 C.2 1 DHOA 0.4100 + 5 C5 -9.2683 -3.6223 14.1590 C.2 1 DHOA 0.0365 + 6 C6 -9.3761 -6.0703 14.7936 C.3 1 DHOA 0.6738 + 7 C7 -10.3371 -6.3120 15.9033 C.2 1 DHOA -0.2882 + 8 C8 -11.5033 -6.7361 15.4189 C.2 1 DHOA -0.2882 + 9 C9 -11.4321 -6.8211 13.9370 C.3 1 DHOA 0.4182 + 10 C10 -12.5246 -6.0290 13.2128 C.3 1 DHOA 0.2800 + 11 N1 -5.6784 -3.0950 16.7246 N.2 1 DHOA -0.6200 + 12 N2 -6.9585 -5.1276 16.3460 N.2 1 DHOA -0.5670 + 13 N3 -6.1670 -1.0277 15.7125 N.3 1 DHOA -0.9000 + 14 N4 -8.5297 -2.5607 14.4110 N.2 1 DHOA -0.5653 + 15 N5 -8.8134 -4.7332 14.8180 N.3 1 DHOA 0.0476 + 16 O1 -10.1456 -6.2510 13.5805 O.3 1 DHOA -0.5600 + 17 O2 -12.3697 -6.1591 11.7990 O.3 1 DHOA -0.6800 + 18 H1 -5.2944 -4.9456 17.5629 H 1 DHOA 0.1500 + 19 H2 -5.6257 -0.6482 16.4774 H 1 DHOA 0.4000 + 20 H3 -6.9511 -0.4843 15.3691 H 1 DHOA 0.4000 + 21 H4 -10.1359 -3.6414 13.5116 H 1 DHOA 0.1500 + 22 H5 -8.5555 -6.7955 14.7921 H 1 DHOA 0.0000 + 23 H6 -10.0959 -6.1844 16.9489 H 1 DHOA 0.1500 + 24 H7 -12.3662 -7.0113 16.0085 H 1 DHOA 0.1500 + 25 H8 -11.4298 -7.8638 13.6004 H 1 DHOA 0.0000 + 26 H9 -12.4662 -4.9612 13.4495 H 1 DHOA 0.0000 + 27 H10 -13.5214 -6.3930 13.4801 H 1 DHOA 0.0000 + 28 H11 -11.4290 -5.9775 11.6104 H 1 DHOA 0.4000 +@BOND + 1 1 11 am + 2 1 12 2 + 3 1 18 1 + 4 2 3 2 + 5 2 12 1 + 6 2 15 1 + 7 3 4 1 + 8 3 14 1 + 9 4 11 2 + 10 4 13 am + 11 5 14 2 + 12 5 15 am + 13 5 21 1 + 14 6 7 1 + 15 6 15 1 + 16 6 16 1 + 17 6 22 1 + 18 7 8 2 + 19 7 23 1 + 20 8 9 1 + 21 8 24 1 + 22 9 10 1 + 23 9 16 1 + 24 9 25 1 + 25 10 17 1 + 26 10 26 1 + 27 10 27 1 + 28 13 19 1 + 29 13 20 1 + 30 17 28 1 +@SUBSTRUCTURE + 1 DHOA 1 +@COMMENT +COMMENT 2',3'-DIDEHYDRO-2',3'-DIDEOXYADENOSINE +@MOLECULE +DICKIJ + 32 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -12.5709 -5.6752 14.0464 S.3 1 DICK -0.0800 + 2 C2 -11.9375 -7.1530 14.5856 C.2 1 DICK -0.1100 + 3 C3 -10.5709 -7.1971 14.4652 C.2 1 DICK -0.1500 + 4 C4 -8.6465 -5.6515 13.6401 C.2 1 DICK -0.1435 + 5 C5 -8.3550 -4.3895 13.0777 C.2 1 DICK -0.1500 + 6 C6 -9.0349 -2.2111 12.2271 C.2 1 DICK -0.1500 + 7 C7 -10.0354 -1.2811 11.9395 C.2 1 DICK -0.1500 + 8 C8 -11.3666 -1.5851 12.2047 C.2 1 DICK -0.1500 + 9 C9 -11.7031 -2.8209 12.7578 C.2 1 DICK -0.1500 + 10 C10 -10.7013 -3.7729 13.0543 C.2 1 DICK 0.0000 + 11 C11 -9.3518 -3.4603 12.7853 C.2 1 DICK 0.0000 + 12 C12 -10.0051 -5.9910 13.9098 C.2 1 DICK 0.0000 + 13 C13 -11.0082 -5.0522 13.6201 C.2 1 DICK 0.0400 + 14 C14 -7.4880 -6.5667 13.9619 C.3 1 DICK 0.6575 + 15 N15 -6.7413 -6.0113 15.0980 N.3 1 DICK -0.7640 + 16 C16 -7.2938 -5.6059 16.2541 C.2 1 DICK 0.6500 + 17 N17 -6.2965 -5.1755 17.0328 N.2 1 DICK -0.7000 + 18 C18 -5.0896 -5.3006 16.3886 C.2 1 DICK 0.2000 + 19 C19 -5.3642 -5.8351 15.1614 C.2 1 DICK 0.2000 + 20 H2 -12.5976 -7.9242 14.9616 H 1 DICK 0.1500 + 21 H3 -10.0075 -8.0749 14.7562 H 1 DICK 0.1500 + 22 H5 -7.3169 -4.1308 12.8663 H 1 DICK 0.1500 + 23 H6 -8.0036 -1.9456 12.0034 H 1 DICK 0.1500 + 24 H7 -9.7765 -0.3189 11.5034 H 1 DICK 0.1500 + 25 H8 -12.1464 -0.8618 11.9767 H 1 DICK 0.1500 + 26 H9 -12.7538 -3.0281 12.9474 H 1 DICK 0.1500 + 27 H141 -7.8137 -7.5736 14.2374 H 1 DICK 0.0000 + 28 H142 -6.8274 -6.6560 13.0920 H 1 DICK 0.0000 + 29 H16 -8.3464 -5.6186 16.5151 H 1 DICK 0.1500 + 30 H17 -6.4299 -4.8006 17.9695 H 1 DICK 0.4500 + 31 H18 -4.1923 -4.9909 16.8950 H 1 DICK 0.1500 + 32 H19 -4.7557 -6.1131 14.3174 H 1 DICK 0.1500 +@BOND + 1 1 13 1 + 2 1 2 1 + 3 2 20 1 + 4 2 3 2 + 5 3 21 1 + 6 3 12 1 + 7 4 14 1 + 8 4 12 1 + 9 4 5 2 + 10 5 22 1 + 11 5 11 1 + 12 6 23 1 + 13 6 11 1 + 14 6 7 2 + 15 7 24 1 + 16 7 8 1 + 17 8 25 1 + 18 8 9 2 + 19 9 26 1 + 20 9 10 1 + 21 10 13 1 + 22 10 11 2 + 23 12 13 2 + 24 14 28 1 + 25 14 27 1 + 26 14 15 1 + 27 15 19 1 + 28 15 16 am + 29 16 29 1 + 30 16 17 2 + 31 17 30 1 + 32 17 18 1 + 33 18 31 1 + 34 18 19 2 + 35 19 32 1 +@SUBSTRUCTURE + 1 DICK 1 +@COMMENT +COMMENT 1-((4-NAPHTHO(1,2-B)THIENYL)-METHYL)-1H,3H+-IMIDAZOLIUM MET +@MOLECULE +DICPUA + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.5308 -4.5876 15.5604 C.2 1 DICP -0.1360 + 2 C2 -8.9774 -4.5488 16.8586 C.2 1 DICP 0.1388 + 3 C3 -8.9185 -4.3371 14.2677 C.2 1 DICP 0.0540 + 4 C4 -9.6485 -3.8016 13.1977 C.2 1 DICP -0.1500 + 5 C5 -9.0325 -3.5559 11.9671 C.2 1 DICP -0.1500 + 6 C6 -7.6805 -3.8387 11.7920 C.2 1 DICP -0.1500 + 7 C7 -6.9418 -4.3676 12.8467 C.2 1 DICP -0.1500 + 8 C8 -7.5557 -4.6141 14.0780 C.2 1 DICP -0.1500 + 9 N1 -10.8180 -4.9372 15.7274 N.2 1 DICP 0.9530 + 10 N2 -9.8615 -4.8542 17.8063 N.2 1 DICP -0.4097 + 11 O1 -11.0555 -5.1119 17.1362 O.3 1 DICP -0.1171 + 12 O2 -11.8000 -5.1445 14.9765 O.3 1 DICP -0.6330 + 13 H2 -7.9668 -4.3055 17.1585 H 1 DICP 0.1500 + 14 H4 -10.7056 -3.5600 13.2952 H 1 DICP 0.1500 + 15 H5 -9.6124 -3.1432 11.1448 H 1 DICP 0.1500 + 16 H6 -7.2043 -3.6485 10.8334 H 1 DICP 0.1500 + 17 H7 -5.8866 -4.5920 12.7104 H 1 DICP 0.1500 + 18 H8 -6.9504 -5.0378 14.8763 H 1 DICP 0.1500 +@BOND + 1 1 9 2 + 2 1 3 1 + 3 1 2 1 + 4 2 13 1 + 5 2 10 2 + 6 3 8 1 + 7 3 4 2 + 8 4 14 1 + 9 4 5 1 + 10 5 15 1 + 11 5 6 2 + 12 6 16 1 + 13 6 7 1 + 14 7 17 1 + 15 7 8 2 + 16 8 18 1 + 17 9 12 1 + 18 9 11 1 + 19 10 11 1 +@SUBSTRUCTURE + 1 DICP 1 +@COMMENT +COMMENT 3-PHENYL-FUROXAN +@MOLECULE +DICRAI + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.8263 -4.8273 13.7969 C.2 1 DICR 0.2348 + 2 C2 -9.3025 -5.3471 12.5923 C.2 1 DICR -0.2320 + 3 C3 -9.1706 -3.9484 14.7722 C.2 1 DICR 0.0540 + 4 C4 -7.8517 -3.5066 14.5815 C.2 1 DICR -0.1500 + 5 C5 -7.2355 -2.6689 15.5172 C.2 1 DICR -0.1500 + 6 C6 -7.9275 -2.2616 16.6548 C.2 1 DICR -0.1500 + 7 C7 -9.2358 -2.6902 16.8598 C.2 1 DICR -0.1500 + 8 C8 -9.8526 -3.5272 15.9256 C.2 1 DICR -0.1500 + 9 N1 -11.0867 -5.2550 13.9703 N.2 1 DICR -0.4097 + 10 N2 -10.2529 -6.0933 12.0353 N.2 1 DICR 0.9530 + 11 O1 -11.3996 -6.0579 12.8822 O.3 1 DICR -0.1171 + 12 O2 -10.3318 -6.7715 10.9885 O.3 1 DICR -0.6330 + 13 H2 -8.3371 -5.2193 12.1351 H 1 DICR 0.1500 + 14 H4 -7.2766 -3.8007 13.7080 H 1 DICR 0.1500 + 15 H5 -6.2134 -2.3342 15.3568 H 1 DICR 0.1500 + 16 H6 -7.4479 -1.6106 17.3815 H 1 DICR 0.1500 + 17 H7 -9.7802 -2.3748 17.7466 H 1 DICR 0.1500 + 18 H8 -10.8768 -3.8467 16.1121 H 1 DICR 0.1500 +@BOND + 1 1 9 2 + 2 1 3 1 + 3 1 2 1 + 4 2 13 1 + 5 2 10 2 + 6 3 8 1 + 7 3 4 2 + 8 4 14 1 + 9 4 5 1 + 10 5 15 1 + 11 5 6 2 + 12 6 16 1 + 13 6 7 1 + 14 7 17 1 + 15 7 8 2 + 16 8 18 1 + 17 9 11 1 + 18 10 12 1 + 19 10 11 1 +@SUBSTRUCTURE + 1 DICR 1 +@COMMENT +COMMENT 4-PHENYL-FUROXAN +@MOLECULE +DICYIX + 22 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.8615 -4.9244 14.3529 SI 1 UNCH 0.5885 + 2 N1 -9.4136 -3.2968 14.6662 N.3 1 UNCH -0.8870 + 3 C1 -10.3035 -5.9776 13.7947 C.3 1 UNCH -0.0805 + 4 C2 -7.5566 -4.8706 13.0151 C.3 1 UNCH -0.0805 + 5 C3 -8.1400 -5.6524 15.9180 C.3 1 UNCH -0.0805 + 6 C4 -8.5337 -2.3210 15.3302 C.3 1 UNCH 0.2700 + 7 C5 -10.2240 -2.5750 13.6714 C.3 1 UNCH 0.2700 + 8 H11 -9.9904 -7.0176 13.6610 H 1 UNCH 0.0000 + 9 H12 -10.7059 -5.6234 12.8410 H 1 UNCH 0.0000 + 10 H13 -11.1096 -5.9592 14.5344 H 1 UNCH 0.0000 + 11 H21 -7.1885 -5.8770 12.7941 H 1 UNCH 0.0000 + 12 H22 -6.7039 -4.2588 13.3246 H 1 UNCH 0.0000 + 13 H23 -7.9613 -4.4478 12.0906 H 1 UNCH 0.0000 + 14 H31 -7.8526 -6.6963 15.7590 H 1 UNCH 0.0000 + 15 H32 -8.8682 -5.6223 16.7342 H 1 UNCH 0.0000 + 16 H33 -7.2481 -5.1037 16.2346 H 1 UNCH 0.0000 + 17 H41 -8.0556 -2.7500 16.2183 H 1 UNCH 0.0000 + 18 H42 -9.1008 -1.4531 15.6875 H 1 UNCH 0.0000 + 19 H43 -7.7464 -1.9656 14.6549 H 1 UNCH 0.0000 + 20 H51 -11.0403 -3.1986 13.2891 H 1 UNCH 0.0000 + 21 H52 -9.6159 -2.2466 12.8202 H 1 UNCH 0.0000 + 22 H53 -10.7044 -1.6941 14.1136 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 6 1 + 6 2 7 1 + 7 3 8 1 + 8 3 9 1 + 9 3 10 1 + 10 4 11 1 + 11 4 12 1 + 12 4 13 1 + 13 5 14 1 + 14 5 15 1 + 15 5 16 1 + 16 6 17 1 + 17 6 18 1 + 18 6 19 1 + 19 7 20 1 + 20 7 21 1 + 21 7 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N-DIMETHYL-(TRIMETHYLSILYL)-AMINE (AT 116 DEG.K) +@MOLECULE +DICYOD + 26 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -5.3010 -4.4329 12.0812 CL 1 UNCH -0.2090 + 2 CL2 -7.4391 -6.9154 14.9545 CL 1 UNCH -0.2900 + 3 CL3 -4.6791 -6.0335 15.0222 CL 1 UNCH -0.2900 + 4 CL4 -8.9057 -3.9777 16.7426 CL 1 UNCH -0.2090 + 5 O1 -6.6462 -6.6974 12.1508 O.2 1 UNCH -0.5700 + 6 O2 -6.1464 -3.5389 15.4918 O.2 1 UNCH -0.5700 + 7 N1 -8.0156 -3.9311 14.2448 N.2 1 UNCH -0.6610 + 8 N2 -10.2633 -3.3268 14.5466 N.3 1 UNCH -0.7882 + 9 C1 -6.1897 -5.7636 12.8106 C.2 1 UNCH 0.7180 + 10 C2 -6.2952 -5.6692 14.3275 C.3 1 UNCH 0.7020 + 11 C3 -6.8009 -4.2983 14.7816 C.2 1 UNCH 0.7200 + 12 C4 -9.0270 -3.7240 15.0357 C.2 1 UNCH 0.7090 + 13 C5 -11.4405 -3.0632 15.3776 C.3 1 UNCH 0.3691 + 14 C6 -12.2352 -4.3405 15.6029 C.3 1 UNCH 0.0000 + 15 C7 -10.4490 -3.1047 13.1077 C.3 1 UNCH 0.3691 + 16 C8 -10.0147 -1.6993 12.7216 C.3 1 UNCH 0.0000 + 17 H51 -12.0896 -2.3261 14.8882 H 1 UNCH 0.0000 + 18 H52 -11.1653 -2.6074 16.3346 H 1 UNCH 0.0000 + 19 H61 -11.6395 -5.1017 16.1157 H 1 UNCH 0.0000 + 20 H62 -13.1197 -4.1332 16.2131 H 1 UNCH 0.0000 + 21 H63 -12.5711 -4.7673 14.6520 H 1 UNCH 0.0000 + 22 H71 -9.8882 -3.8449 12.5246 H 1 UNCH 0.0000 + 23 H72 -11.5011 -3.2464 12.8319 H 1 UNCH 0.0000 + 24 H81 -8.9550 -1.5343 12.9409 H 1 UNCH 0.0000 + 25 H82 -10.1692 -1.5358 11.6506 H 1 UNCH 0.0000 + 26 H83 -10.5899 -0.9447 13.2682 H 1 UNCH 0.0000 +@BOND + 1 1 9 1 + 2 2 10 1 + 3 3 10 1 + 4 4 12 1 + 5 5 9 2 + 6 6 11 2 + 7 7 11 am + 8 7 12 2 + 9 8 12 am + 10 8 13 1 + 11 8 15 1 + 12 9 10 1 + 13 10 11 1 + 14 13 14 1 + 15 13 17 1 + 16 13 18 1 + 17 14 19 1 + 18 14 20 1 + 19 14 21 1 + 20 15 16 1 + 21 15 22 1 + 22 15 23 1 + 23 16 24 1 + 24 16 25 1 + 25 16 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2-DICHLORO-N-(CHLORO-(DIMETHYLAMINO)-METHYLENE)-MALONAMOY +@MOLECULE +DIDYOE + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -6.8945 -4.0996 12.9229 O.3 1 DICY -0.2170 + 2 O2 -9.2472 -2.5331 15.2842 O.3 1 DICY -0.6800 + 3 O3 -10.5417 -3.6012 13.2273 O.3 1 DICY -0.6800 + 4 O4 -9.7867 -6.0140 15.8230 O.2 1 DICY -0.5700 + 5 O5 -11.6523 -5.5483 14.5645 O.3 1 DICY -0.4300 + 6 N2 -5.6741 -4.3547 13.5927 N.2 1 DICY -0.5130 + 7 C3 -5.4455 -3.3350 14.3473 C.2 1 DICY 0.3290 + 8 C4 -6.4561 -2.2575 14.2883 C.3 1 DICY 0.0610 + 9 C5 -7.5668 -3.0385 13.6191 C.3 1 DICY 0.2800 + 10 C6 -8.5840 -3.6243 14.6161 C.3 1 DICY 0.2800 + 11 C7 -9.6336 -4.4907 13.8996 C.3 1 DICY 0.3410 + 12 C8 -10.3303 -5.4232 14.9007 C.2 1 DICY 0.6590 + 13 C9 -12.3880 -6.4113 15.4339 C.3 1 DICY 0.2800 + 14 H2 -9.9595 -2.2501 14.6724 H 1 DICY 0.4000 + 15 H3 -11.3066 -4.1532 12.9696 H 1 DICY 0.4000 + 16 H31 -4.5460 -3.2314 14.9697 H 1 DICY 0.0600 + 17 H41 -6.6955 -1.8644 15.2776 H 1 DICY 0.0000 + 18 H42 -6.0640 -1.4558 13.6558 H 1 DICY 0.0000 + 19 H5 -8.0788 -2.3983 12.8915 H 1 DICY 0.0000 + 20 H6 -8.0546 -4.2120 15.3745 H 1 DICY 0.0000 + 21 H7 -9.1803 -5.1425 13.1452 H 1 DICY 0.0000 + 22 H91 -13.4283 -6.4234 15.0973 H 1 DICY 0.0000 + 23 H92 -12.3610 -6.0354 16.4615 H 1 DICY 0.0000 + 24 H93 -11.9949 -7.4314 15.3820 H 1 DICY 0.0000 +@BOND + 1 1 6 1 + 2 1 9 1 + 3 2 10 1 + 4 2 14 1 + 5 3 11 1 + 6 3 15 1 + 7 4 12 2 + 8 5 12 1 + 9 5 13 1 + 10 6 7 2 + 11 7 8 1 + 12 7 16 1 + 13 8 9 1 + 14 8 17 1 + 15 8 18 1 + 16 9 10 1 + 17 9 19 1 + 18 10 11 1 + 19 10 20 1 + 20 11 12 1 + 21 11 21 1 + 22 13 22 1 + 23 13 23 1 + 24 13 24 1 +@SUBSTRUCTURE + 1 DICY 1 +@COMMENT +COMMENT 5-(1',2'-DIHYDROXY-2'-METHOXYCARBONYLETHYL)-ISOXAZOLINE +@MOLECULE +DIFSIU + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.2039 -6.0338 16.1421 S.2 1 DIFS 0.3720 + 2 O1 -10.0972 -5.8316 17.3329 O.2 1 DIFS -0.5000 + 3 O2 -8.1189 -6.9886 13.3890 O.3 1 DIFS -0.5200 + 4 O3 -7.5563 -5.0346 12.5457 O.2 1 DIFS -0.5200 + 5 O4 -6.4202 -7.0676 16.6847 O.3 1 DIFS -0.5200 + 6 O5 -5.1653 -6.2858 15.0584 O.2 1 DIFS -0.5200 + 7 N1 -8.3499 -5.8122 13.0893 N.2 1 DIFS 0.9070 + 8 N2 -6.0380 -6.1671 15.9281 N.2 1 DIFS 0.9070 + 9 C1 -10.1446 -5.3449 14.7348 C.2 1 DIFS 0.0640 + 10 C2 -9.6565 -5.2875 13.4217 C.2 1 DIFS 0.1330 + 11 C3 -10.4043 -4.7284 12.3728 C.2 1 DIFS -0.1500 + 12 C4 -11.6803 -4.2349 12.6311 C.2 1 DIFS -0.1500 + 13 C5 -12.2007 -4.3049 13.9217 C.2 1 DIFS -0.1500 + 14 C6 -11.4432 -4.8570 14.9611 C.2 1 DIFS -0.1500 + 15 C7 -8.0099 -4.6643 16.2499 C.2 1 DIFS 0.0640 + 16 C8 -6.6255 -4.8451 16.1003 C.2 1 DIFS 0.1330 + 17 C9 -5.7377 -3.7565 16.1452 C.2 1 DIFS -0.1500 + 18 C10 -6.2302 -2.4730 16.3717 C.2 1 DIFS -0.1500 + 19 C11 -7.5957 -2.2792 16.5662 C.2 1 DIFS -0.1500 + 20 C12 -8.4762 -3.3641 16.5131 C.2 1 DIFS -0.1500 + 21 H3 -10.0039 -4.6821 11.3615 H 1 DIFS 0.1500 + 22 H4 -12.2737 -3.8033 11.8276 H 1 DIFS 0.1500 + 23 H5 -13.2024 -3.9301 14.1250 H 1 DIFS 0.1500 + 24 H6 -11.8817 -4.8988 15.9582 H 1 DIFS 0.1500 + 25 H9 -4.6662 -3.9025 16.0162 H 1 DIFS 0.1500 + 26 H10 -5.5481 -1.6261 16.4126 H 1 DIFS 0.1500 + 27 H11 -7.9790 -1.2803 16.7660 H 1 DIFS 0.1500 + 28 H12 -9.5359 -3.1841 16.6898 H 1 DIFS 0.1500 +@BOND + 1 1 2 2 + 2 1 9 1 + 3 1 15 1 + 4 3 7 1 + 5 4 7 2 + 6 5 8 1 + 7 6 8 2 + 8 7 10 1 + 9 8 16 1 + 10 9 10 2 + 11 9 14 1 + 12 10 11 1 + 13 11 12 2 + 14 11 21 1 + 15 12 13 1 + 16 12 22 1 + 17 13 14 2 + 18 13 23 1 + 19 14 24 1 + 20 15 16 2 + 21 15 20 1 + 22 16 17 1 + 23 17 18 2 + 24 17 25 1 + 25 18 19 1 + 26 18 26 1 + 27 19 20 2 + 28 19 27 1 + 29 20 28 1 +@SUBSTRUCTURE + 1 DIFS 1 +@COMMENT +COMMENT 2,2'-DINITRODIPHENYL-SULFOXIDE +@MOLECULE +DIGCOL + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.0964 -6.9765 16.0985 S.2 1 CHGB -0.7500 + 2 S2 -9.0941 -4.1561 17.1177 S.3 1 CHGB -0.7500 + 3 N1 -9.0955 -4.9251 14.5566 N.3 1 CHGB -0.6660 + 4 C1 -9.0953 -5.2913 15.8447 C.2 1 CHGB 0.7960 + 5 H1 -9.0962 -5.5801 13.7765 H 1 CHGB 0.3700 + 6 N1E -9.0946 -3.5424 14.1539 N.3 1 CHGB -0.6660 + 7 C1E -9.0948 -3.1762 12.8658 C.2 1 CHGB 0.7960 + 8 H1E -9.0939 -2.8874 14.9340 H 1 CHGB 0.3700 + 9 S1E -9.0937 -1.4910 12.6120 S.2 1 CHGB -0.7500 + 10 S2E -9.0961 -4.3114 11.5928 S.3 1 CHGB -0.7500 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 4 1 + 4 3 5 1 + 5 3 6 1 + 6 6 7 1 + 7 6 8 1 + 8 7 9 2 + 9 7 10 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT DIPOTASSIUM HYDRAZINE-1,2-BIS(DITHIOFORMATE) (AT -85 DEG.C) +@MOLECULE +DIGCUR + 22 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S11 -10.1154 -4.1451 18.0250 S.2 1 UNCH -0.3800 + 2 S21 -12.1833 -3.2549 16.0275 S.3 1 UNCH -0.3710 + 3 S31 -10.4176 -5.5083 15.3431 S.3 1 UNCH -0.3710 + 4 C11 -13.5636 -4.2090 16.6988 C.3 1 UNCH 0.2300 + 5 C21 -10.8604 -4.2950 16.5359 C.2 1 UNCH 0.6620 + 6 C31 -8.8069 -4.8621 14.7827 C.3 1 UNCH 0.2300 + 7 H11 -14.5020 -3.7056 16.4513 H 1 UNCH 0.0000 + 8 H21 -13.4889 -4.2850 17.7868 H 1 UNCH 0.0000 + 9 H31 -13.5855 -5.2133 16.2674 H 1 UNCH 0.0000 + 10 H41 -8.1585 -4.6815 15.6460 H 1 UNCH 0.0000 + 11 H51 -8.3501 -5.6660 14.1974 H 1 UNCH 0.0000 + 12 C31A -8.9611 -3.6055 13.9276 C.3 1 UNCH 0.2300 + 13 S31A -7.3504 -2.9593 13.3672 S.3 1 UNCH -0.3710 + 14 H41A -9.6095 -3.7861 13.0643 H 1 UNCH 0.0000 + 15 H51A -9.4179 -2.8016 14.5130 H 1 UNCH 0.0000 + 16 C21A -6.9076 -4.1726 12.1745 C.2 1 UNCH 0.6620 + 17 S11A -7.6526 -4.3225 10.6854 S.2 1 UNCH -0.3800 + 18 S21A -5.5847 -5.2127 12.6829 S.3 1 UNCH -0.3710 + 19 C11A -4.2043 -4.2586 12.0115 C.3 1 UNCH 0.2300 + 20 H11A -3.2660 -4.7620 12.2590 H 1 UNCH 0.0000 + 21 H21A -4.2791 -4.1826 10.9235 H 1 UNCH 0.0000 + 22 H31A -4.1824 -3.2543 12.4429 H 1 UNCH 0.0000 +@BOND + 1 1 5 2 + 2 2 4 1 + 3 2 5 1 + 4 3 5 1 + 5 3 6 1 + 6 4 7 1 + 7 4 8 1 + 8 4 9 1 + 9 6 10 1 + 10 6 11 1 + 11 6 12 1 + 12 12 13 1 + 13 12 14 1 + 14 12 15 1 + 15 13 16 1 + 16 16 17 2 + 17 16 18 1 + 18 18 19 1 + 19 19 20 1 + 20 19 21 1 + 21 19 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-BIS(METHYLTRITHIOCARBONATO)-ETHANE (AT -40 DEG.C) +@MOLECULE +DIGLEK + 40 42 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -12.2753 -0.2064 12.1836 O.2 1 UNCH -0.5700 + 2 O2 -10.0720 0.3003 12.6672 O.3 1 UNCH -0.4079 + 3 O11 -10.1583 -3.4046 15.6885 O.2 1 UNCH -0.5700 + 4 O13 -9.1448 -5.7749 16.0211 O.3 1 UNCH -0.5325 + 5 O14 -9.2712 -8.3652 15.3048 O.3 1 UNCH -0.5325 + 6 O15 -5.5756 -6.7050 15.0596 O.3 1 UNCH -0.5200 + 7 O16 -5.1802 -5.3432 16.7334 O.2 1 UNCH -0.5200 + 8 N1 -10.8338 -2.7820 13.5930 N.3 1 UNCH -0.6550 + 9 N2 -5.6339 -5.5949 15.6074 N.2 1 UNCH 0.9070 + 10 C1 -11.2436 -0.3707 12.7930 C.2 1 UNCH 0.6670 + 11 C2 -10.7049 -1.3299 13.8784 C.3 1 UNCH 0.2780 + 12 C3 -9.3592 -0.6389 13.5410 C.3 1 UNCH 0.2579 + 13 C4 -8.2526 -1.3160 12.7286 C.3 1 UNCH 0.1435 + 14 C5 -7.5609 -2.4216 13.4918 C.2 1 UNCH -0.1435 + 15 C6 -6.9859 -2.1917 14.7508 C.2 1 UNCH -0.1500 + 16 C7 -6.3539 -3.2268 15.4457 C.2 1 UNCH -0.1500 + 17 C8 -6.2772 -4.5005 14.8706 C.2 1 UNCH 0.1330 + 18 C9 -6.8143 -4.7387 13.6011 C.2 1 UNCH -0.1500 + 19 C10 -7.4484 -3.6987 12.9165 C.2 1 UNCH -0.1500 + 20 C11 -10.5537 -3.7167 14.5670 C.2 1 UNCH 0.5438 + 21 C12 -10.6743 -5.1547 14.2137 C.2 1 UNCH 0.0862 + 22 C13 -9.9448 -6.0986 14.9509 C.2 1 UNCH 0.0825 + 23 C14 -10.0006 -7.4471 14.6054 C.2 1 UNCH 0.0825 + 24 C15 -10.7930 -7.8843 13.5539 C.2 1 UNCH -0.1500 + 25 C16 -11.5488 -6.9582 12.8362 C.2 1 UNCH -0.1500 + 26 C17 -11.4938 -5.5976 13.1631 C.2 1 UNCH -0.1500 + 27 H2 -11.1040 -1.0735 14.8672 H 1 UNCH 0.0000 + 28 H3 -8.9521 -0.0886 14.3997 H 1 UNCH 0.0000 + 29 H41 -7.4962 -0.5753 12.4406 H 1 UNCH 0.0000 + 30 H42 -8.6702 -1.7116 11.7940 H 1 UNCH 0.0000 + 31 H6 -7.0254 -1.2061 15.2106 H 1 UNCH 0.1500 + 32 H7 -5.9321 -3.0247 16.4283 H 1 UNCH 0.1500 + 33 H9 -6.7574 -5.7229 13.1398 H 1 UNCH 0.1500 + 34 H10 -7.8596 -3.8988 11.9285 H 1 UNCH 0.1500 + 35 H15 -10.8288 -8.9413 13.3045 H 1 UNCH 0.1500 + 36 H16 -12.1874 -7.2995 12.0242 H 1 UNCH 0.1500 + 37 H17 -12.1203 -4.9129 12.5995 H 1 UNCH 0.1500 + 38 H1 -11.0971 -3.0842 12.6625 H 1 UNCH 0.3700 + 39 H14 -8.7795 -7.8472 15.9741 H 1 UNCH 0.4500 + 40 H13 -9.3378 -4.8376 16.2569 H 1 UNCH 0.4500 +@BOND + 1 1 10 2 + 2 2 10 1 + 3 2 12 1 + 4 3 20 2 + 5 4 22 1 + 6 4 40 1 + 7 5 23 1 + 8 5 39 1 + 9 6 9 1 + 10 7 9 2 + 11 8 11 1 + 12 8 20 am + 13 8 38 1 + 14 9 17 1 + 15 10 11 1 + 16 11 12 1 + 17 11 27 1 + 18 12 13 1 + 19 12 28 1 + 20 13 14 1 + 21 13 29 1 + 22 13 30 1 + 23 14 15 2 + 24 14 19 1 + 25 15 16 1 + 26 15 31 1 + 27 16 17 2 + 28 16 32 1 + 29 17 18 1 + 30 18 19 2 + 31 18 33 1 + 32 19 34 1 + 33 20 21 1 + 34 21 22 2 + 35 21 26 1 + 36 22 23 1 + 37 23 24 2 + 38 24 25 1 + 39 24 35 1 + 40 25 26 2 + 41 25 36 1 + 42 26 37 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT OBAFLUORIN ACETONITRILE SOLVATE +@MOLECULE +DIHTET + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O4 -8.5879 -1.4392 16.4621 O.2 1 UNCH -0.5700 + 2 O7 -8.9131 -4.7449 12.1891 O.2 1 UNCH -0.5700 + 3 N1 -9.0830 -5.7237 15.0127 N.3 1 UNCH 0.3140 + 4 N2 -9.1122 -5.7639 16.3636 N.2 1 UNCH -0.7068 + 5 C3 -8.9633 -4.4855 16.7296 C.2 1 UNCH 0.1388 + 6 C4 -8.6644 -2.2081 15.5149 C.2 1 UNCH 0.6416 + 7 C5 -8.5804 -1.7271 14.1010 C.2 1 UNCH -0.1356 + 8 C6 -8.6576 -2.5225 13.0134 C.2 1 UNCH -0.1238 + 9 C7 -8.8414 -4.0108 13.1666 C.2 1 UNCH 0.6406 + 10 C8 -8.9206 -4.4606 14.5251 C.2 1 UNCH -0.2366 + 11 C9 -8.8395 -3.6318 15.6237 C.2 1 UNCH -0.0860 + 12 C10 -9.2179 -6.9449 14.2537 C.3 1 UNCH 0.2556 + 13 C11 -8.5698 -2.0081 11.6114 C.3 1 UNCH 0.1382 + 14 H1 -8.9516 -4.2334 17.7831 H 1 UNCH 0.1500 + 15 H2 -8.4482 -0.6538 14.0094 H 1 UNCH 0.1500 + 16 H3 -9.4845 -2.2443 11.0579 H 1 UNCH 0.0000 + 17 H4 -7.7193 -2.4590 11.0897 H 1 UNCH 0.0000 + 18 H5 -8.4371 -0.9213 11.5843 H 1 UNCH 0.0000 + 19 H6 -9.3329 -7.7888 14.9390 H 1 UNCH 0.0000 + 20 H7 -8.3163 -7.0788 13.6511 H 1 UNCH 0.0000 + 21 H8 -10.1033 -6.8614 13.6189 H 1 UNCH 0.0000 +@BOND + 1 1 6 2 + 2 2 9 2 + 3 3 4 1 + 4 3 10 1 + 5 3 12 1 + 6 4 5 2 + 7 5 11 1 + 8 5 14 1 + 9 6 7 1 + 10 6 11 1 + 11 7 8 2 + 12 7 15 1 + 13 8 9 1 + 14 8 13 1 + 15 9 10 1 + 16 10 11 2 + 17 12 19 1 + 18 12 20 1 + 19 12 21 1 + 20 13 16 1 + 21 13 17 1 + 22 13 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,6-DIMETHYL-1H-INDAZOLE-4,7-DIONE +@MOLECULE +DIKGAF + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -12.0879 -5.6056 14.4091 CL 1 DIHW -0.2900 + 2 CL2 -10.8745 -4.9325 17.0045 CL 1 DIHW -0.2900 + 3 CL3 -10.9273 -7.6611 16.0733 CL 1 DIHW -0.2900 + 4 S1 -9.7323 -3.1525 13.9596 S.3 1 DIHW 1.3390 + 5 O1 -8.6431 -6.6932 14.5797 O.2 1 DIHW -0.5700 + 6 O2 -10.4460 -2.4367 14.9856 O.3 1 DIHW -0.6500 + 7 O3 -10.3134 -3.5749 12.7100 O.3 1 DIHW -0.6500 + 8 N1 -8.9063 -4.4228 14.6450 N.3 1 DIHW -0.6813 + 9 C1 -8.0489 -2.5954 13.7855 C.3 1 DIHW 0.0990 + 10 C2 -7.6010 -4.0949 13.9745 C.3 1 DIHW 0.3070 + 11 C3 -7.7005 -1.8476 12.5128 C.3 1 DIHW 0.0000 + 12 C4 -6.4467 -4.2321 14.9663 C.3 1 DIHW 0.0000 + 13 C5 -7.3316 -4.8773 12.6870 C.3 1 DIHW 0.0000 + 14 C6 -9.3811 -5.7483 14.8583 C.2 1 DIHW 0.7453 + 15 C7 -10.7650 -5.9467 15.5403 C.3 1 DIHW 0.9310 + 16 H1 -7.7880 -1.9649 14.6479 H 1 DIHW 0.0000 + 17 H2 -8.0162 -2.3872 11.6150 H 1 DIHW 0.0000 + 18 H4 -6.2518 -5.2827 15.2072 H 1 DIHW 0.0000 + 19 H5 -7.0486 -5.9145 12.8921 H 1 DIHW 0.0000 + 20 H6 -5.5267 -3.8077 14.5496 H 1 DIHW 0.0000 + 21 H7 -6.6568 -3.7107 15.9071 H 1 DIHW 0.0000 + 22 H8 -6.4954 -4.4308 12.1368 H 1 DIHW 0.0000 + 23 H9 -8.1950 -4.8957 12.0157 H 1 DIHW 0.0000 + 24 H3 -6.6200 -1.6847 12.4485 H 1 DIHW 0.0000 + 25 H10 -8.1877 -0.8672 12.4998 H 1 DIHW 0.0000 +@BOND + 1 1 15 1 + 2 2 15 1 + 3 3 15 1 + 4 4 6 1 + 5 4 7 1 + 6 4 8 1 + 7 4 9 1 + 8 5 14 2 + 9 8 10 1 + 10 8 14 am + 11 9 10 1 + 12 9 11 1 + 13 9 16 1 + 14 10 12 1 + 15 10 13 1 + 16 11 17 1 + 17 11 24 1 + 18 11 25 1 + 19 12 18 1 + 20 12 20 1 + 21 12 21 1 + 22 13 19 1 + 23 13 22 1 + 24 13 23 1 + 25 14 15 1 +@SUBSTRUCTURE + 1 DIHW 1 +@COMMENT +COMMENT 3,3,4-TRIMETHYL-2-TRICHLOROACETOXY-1,2-THIAZETIDINE-1,1-DIO +@MOLECULE +DIKGEJ + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.7141 -3.9600 12.6677 S.3 1 UNCH 1.3828 + 2 CL1 -11.7442 -6.0239 12.5902 CL 1 UNCH -0.2900 + 3 CL2 -11.2592 -6.3194 15.4392 CL 1 UNCH -0.2900 + 4 CL3 -12.3965 -3.8337 14.3898 CL 1 UNCH -0.2900 + 5 O1 -9.4398 -3.9689 15.0950 O.3 1 UNCH -0.4300 + 6 O2 -6.7178 -5.0046 12.7831 O.3 1 UNCH -0.6500 + 7 O3 -7.7513 -3.1212 11.4865 O.3 1 UNCH -0.6500 + 8 N1 -9.1634 -4.6162 12.8501 N.2 1 UNCH -0.6380 + 9 C1 -11.2538 -5.1686 14.0736 C.3 1 UNCH 0.9310 + 10 C2 -9.8437 -4.5700 13.9422 C.2 1 UNCH 0.5390 + 11 C3 -8.0661 -3.5709 15.3121 C.3 1 UNCH 0.2800 + 12 C4 -7.5442 -2.8710 14.0598 C.3 1 UNCH 0.1052 + 13 C5 -6.1158 -2.3393 14.1511 C.3 1 UNCH 0.0000 + 14 C6 -8.1361 -2.5743 16.4838 C.3 1 UNCH 0.0000 + 15 C7 -7.2850 -4.8030 15.7893 C.3 1 UNCH 0.0000 + 16 H71 -7.3651 -5.6421 15.0932 H 1 UNCH 0.0000 + 17 H51 -6.0164 -1.5894 14.9410 H 1 UNCH 0.0000 + 18 H61 -8.7000 -1.6778 16.2010 H 1 UNCH 0.0000 + 19 H52 -5.3923 -3.1377 14.3423 H 1 UNCH 0.0000 + 20 H53 -5.8231 -1.8600 13.2102 H 1 UNCH 0.0000 + 21 H62 -7.1431 -2.2685 16.8270 H 1 UNCH 0.0000 + 22 H72 -7.7035 -5.1777 16.7317 H 1 UNCH 0.0000 + 23 H63 -8.6698 -3.0114 17.3364 H 1 UNCH 0.0000 + 24 H73 -6.2277 -4.5809 15.9592 H 1 UNCH 0.0000 + 25 H4 -8.2083 -2.0273 13.8241 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 1 8 1 + 4 1 12 1 + 5 2 9 1 + 6 3 9 1 + 7 4 9 1 + 8 5 10 1 + 9 5 11 1 + 10 8 10 2 + 11 9 10 1 + 12 11 12 1 + 13 11 14 1 + 14 11 15 1 + 15 12 13 1 + 16 12 25 1 + 17 13 17 1 + 18 13 19 1 + 19 13 20 1 + 20 14 18 1 + 21 14 21 1 + 22 14 23 1 + 23 15 16 1 + 24 15 22 1 + 25 15 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3,3-TRIMETHYL-6-TRICHLOROMETHYL-1,4,5-OXATHIAZIN-4,4-DIOX +@MOLECULE +DIKWID + 38 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -7.7533 -3.5910 13.7696 C.3 1 UNCH 0.5500 + 2 C2 -6.5054 -2.8818 13.2225 C.3 1 UNCH 0.0000 + 3 C3 -6.8487 -1.7844 12.2162 C.3 1 UNCH 0.0000 + 4 C4 -7.8212 -0.7700 12.8034 C.3 1 UNCH 0.0000 + 5 C5 -9.0981 -1.4439 13.2928 C.3 1 UNCH 0.0000 + 6 C6 -8.8015 -2.5483 14.3208 C.3 1 UNCH 0.2700 + 7 C7 -9.8434 -4.4392 15.4395 C.3 1 UNCH 0.2700 + 8 C8 -11.1750 -5.2035 15.5432 C.3 1 UNCH 0.0000 + 9 C9 -11.0165 -6.5209 16.2954 C.3 1 UNCH 0.0000 + 10 C10 -9.9424 -7.4020 15.6699 C.3 1 UNCH 0.0000 + 11 C11 -8.6035 -6.6719 15.5783 C.3 1 UNCH 0.0000 + 12 C12 -8.6983 -5.3436 14.8020 C.3 1 UNCH 0.5400 + 13 N1 -10.1062 -3.1730 14.6917 N.3 1 UNCH -0.9000 + 14 N2 -7.4367 -4.5665 14.8455 N.3 1 UNCH -0.6400 + 15 N3 -8.9414 -5.5624 13.3559 N.3 1 UNCH -0.7300 + 16 O1 -8.4124 -4.3321 12.7193 O.3 1 UNCH -0.1800 + 17 O2 -6.3757 -5.4431 14.3419 O.3 1 UNCH -0.3000 + 18 H12 -5.9352 -2.4404 14.0499 H 1 UNCH 0.0000 + 19 H22 -5.8470 -3.5973 12.7148 H 1 UNCH 0.0000 + 20 H13 -7.2825 -2.2316 11.3135 H 1 UNCH 0.0000 + 21 H23 -5.9298 -1.2736 11.9065 H 1 UNCH 0.0000 + 22 H14 -7.3430 -0.2388 13.6354 H 1 UNCH 0.0000 + 23 H24 -8.0701 -0.0186 12.0454 H 1 UNCH 0.0000 + 24 H15 -9.7551 -0.6858 13.7372 H 1 UNCH 0.0000 + 25 H25 -9.6345 -1.8578 12.4286 H 1 UNCH 0.0000 + 26 H6 -8.3857 -2.0727 15.2201 H 1 UNCH 0.0000 + 27 H7 -9.5351 -4.1588 16.4570 H 1 UNCH 0.0000 + 28 H18 -11.5780 -5.4103 14.5431 H 1 UNCH 0.0000 + 29 H28 -11.9207 -4.5867 16.0606 H 1 UNCH 0.0000 + 30 H19 -10.7583 -6.3152 17.3416 H 1 UNCH 0.0000 + 31 H29 -11.9725 -7.0566 16.3032 H 1 UNCH 0.0000 + 32 H110 -10.2627 -7.7245 14.6720 H 1 UNCH 0.0000 + 33 H210 -9.8212 -8.3102 16.2714 H 1 UNCH 0.0000 + 34 H111 -8.2399 -6.4740 16.5958 H 1 UNCH 0.0000 + 35 H211 -7.8715 -7.3474 15.1177 H 1 UNCH 0.0000 + 36 H1 -10.5279 -3.4778 13.8066 H 1 UNCH 0.3600 + 37 H3 -8.2298 -6.2241 13.0421 H 1 UNCH 0.3600 + 38 H2 -5.7217 -5.3853 15.0646 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 14 1 + 4 1 16 1 + 5 2 3 1 + 6 2 18 1 + 7 2 19 1 + 8 3 4 1 + 9 3 20 1 + 10 3 21 1 + 11 4 5 1 + 12 4 22 1 + 13 4 23 1 + 14 5 6 1 + 15 5 24 1 + 16 5 25 1 + 17 6 13 1 + 18 6 26 1 + 19 7 8 1 + 20 7 12 1 + 21 7 13 1 + 22 7 27 1 + 23 8 9 1 + 24 8 28 1 + 25 8 29 1 + 26 9 10 1 + 27 9 30 1 + 28 9 31 1 + 29 10 11 1 + 30 10 32 1 + 31 10 33 1 + 32 11 12 1 + 33 11 34 1 + 34 11 35 1 + 35 12 14 1 + 36 12 15 1 + 37 13 36 1 + 38 14 17 1 + 39 15 16 1 + 40 15 37 1 + 41 17 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 14-OXA-7,15,16-TRIAZATETRACYCLO(11.2.1.0-1,6-.0-8,13-)HEXAD +@MOLECULE +DIKYUR + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -5.6686 -3.4147 15.4547 CL 1 UNCH -0.2900 + 2 CL2 -7.0484 -5.3111 17.2794 CL 1 UNCH -0.2900 + 3 O1 -8.7660 -2.3647 16.3128 O.2 1 UNCH -0.5700 + 4 O2 -11.8071 -3.1047 14.3296 O.2 1 UNCH -0.5700 + 5 C1 -7.1843 -4.3287 15.7643 C.3 1 UNCH 0.6330 + 6 C2 -8.4690 -3.4189 15.7870 C.2 1 UNCH 0.4640 + 7 C3 -9.2245 -4.3930 14.8545 C.3 1 UNCH 0.1690 + 8 C4 -9.6697 -3.7678 13.6013 C.2 1 UNCH -0.1016 + 9 C5 -8.7566 -3.9208 12.6363 C.2 1 UNCH -0.2882 + 10 C6 -7.5528 -4.6946 13.0839 C.3 1 UNCH 0.1382 + 11 C7 -7.8529 -5.0697 14.5484 C.3 1 UNCH 0.0000 + 12 C8 -10.9621 -3.0850 13.4447 C.2 1 UNCH 0.4956 + 13 H3 -9.9579 -5.0251 15.3623 H 1 UNCH 0.0000 + 14 H5 -8.8597 -3.5504 11.6232 H 1 UNCH 0.1500 + 15 H61 -6.6461 -4.0968 12.9699 H 1 UNCH 0.0000 + 16 H62 -7.4483 -5.5973 12.4724 H 1 UNCH 0.0000 + 17 H7 -7.8650 -6.1624 14.6598 H 1 UNCH 0.0000 + 18 H8 -11.1289 -2.5794 12.4793 H 1 UNCH 0.0600 +@BOND + 1 1 5 1 + 2 2 5 1 + 3 3 6 2 + 4 4 12 2 + 5 5 6 1 + 6 5 11 1 + 7 6 7 1 + 8 7 8 1 + 9 7 11 1 + 10 7 13 1 + 11 8 9 2 + 12 8 12 1 + 13 9 10 1 + 14 9 14 1 + 15 10 11 1 + 16 10 15 1 + 17 10 16 1 + 18 11 17 1 + 19 12 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6,6-DICHLORO-2-FORMYL-BICYCLO(3.2.0)HEPT-2-EN-7-ONE (AT -10 +@MOLECULE +DILCOQ + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.4947 -5.6977 16.1749 N.3 1 UNCH -0.6550 + 2 C2 -10.4274 -6.3908 15.4799 C.2 1 UNCH 0.7010 + 3 O2 -10.9622 -7.4558 15.6907 O.2 1 UNCH -0.5700 + 4 C3 -10.5448 -5.3306 14.4915 C.2 1 UNCH -0.2400 + 5 C4 -9.7520 -4.4625 15.4466 C.3 1 UNCH 0.6209 + 6 O4 -8.6072 -3.8456 14.8442 O.3 1 UNCH -0.4079 + 7 C5 -7.8604 -3.0897 15.6938 C.2 1 UNCH 0.6590 + 8 O5 -8.1399 -2.9011 16.8708 O.2 1 UNCH -0.5700 + 9 C6 -6.6391 -2.5081 14.9784 C.3 1 UNCH 0.0610 + 10 C7 -5.8250 -1.6559 15.9646 C.3 1 UNCH 0.0000 + 11 C8 -7.1028 -1.6213 13.8151 C.3 1 UNCH 0.0000 + 12 C9 -5.7584 -3.6529 14.4607 C.3 1 UNCH 0.0000 + 13 C10 -11.1392 -5.1989 13.2930 C.2 1 UNCH -0.2454 + 14 C11 -11.8890 -6.3181 12.6198 C.3 1 UNCH 0.1382 + 15 C12 -11.1070 -3.9152 12.5080 C.3 1 UNCH 0.1382 + 16 H1 -9.4968 -5.8236 17.1751 H 1 UNCH 0.3700 + 17 H4 -10.3586 -3.7478 16.0190 H 1 UNCH 0.0000 + 18 H71 -6.4245 -0.8299 16.3648 H 1 UNCH 0.0000 + 19 H72 -4.9410 -1.2242 15.4820 H 1 UNCH 0.0000 + 20 H73 -5.4822 -2.2536 16.8172 H 1 UNCH 0.0000 + 21 H81 -6.2521 -1.1420 13.3180 H 1 UNCH 0.0000 + 22 H82 -7.6452 -2.1990 13.0580 H 1 UNCH 0.0000 + 23 H83 -7.7783 -0.8327 14.1662 H 1 UNCH 0.0000 + 24 H91 -5.4663 -4.3246 15.2762 H 1 UNCH 0.0000 + 25 H92 -6.2826 -4.2594 13.7135 H 1 UNCH 0.0000 + 26 H93 -4.8443 -3.2701 13.9934 H 1 UNCH 0.0000 + 27 H111 -11.8790 -7.2422 13.2046 H 1 UNCH 0.0000 + 28 H112 -12.9348 -6.0329 12.4652 H 1 UNCH 0.0000 + 29 H113 -11.4423 -6.5390 11.6448 H 1 UNCH 0.0000 + 30 H121 -10.5789 -3.1171 13.0390 H 1 UNCH 0.0000 + 31 H122 -10.6025 -4.0699 11.5487 H 1 UNCH 0.0000 + 32 H123 -12.1257 -3.5647 12.3126 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 5 1 + 3 1 16 1 + 4 2 3 2 + 5 2 4 1 + 6 4 5 1 + 7 4 13 2 + 8 5 6 1 + 9 5 17 1 + 10 6 7 1 + 11 7 8 2 + 12 7 9 1 + 13 9 10 1 + 14 9 11 1 + 15 9 12 1 + 16 10 18 1 + 17 10 19 1 + 18 10 20 1 + 19 11 21 1 + 20 11 22 1 + 21 11 23 1 + 22 12 24 1 + 23 12 25 1 + 24 12 26 1 + 25 13 14 1 + 26 13 15 1 + 27 14 27 1 + 28 14 28 1 + 29 14 29 1 + 30 15 30 1 + 31 15 31 1 + 32 15 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-((2,2-DIMETHYLPROPANOYL)OXY)-3-(1-METHYL-ETHYLIDENE)-2-AZ +@MOLECULE +DIMYIH10 + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -8.0440 -4.8226 14.1285 C.2 1 UNCH -0.0220 + 2 C3 -6.8920 -4.0755 14.2914 C.2 1 UNCH 0.0790 + 3 C4 -6.0029 -4.6353 15.2661 C.2 1 UNCH -0.1500 + 4 C5 -6.5432 -5.7633 15.8427 C.2 1 UNCH 0.1200 + 5 C6 -10.5926 -3.6092 13.8054 C.2 1 UNCH -0.0090 + 6 C7 -11.4100 -4.1288 14.8152 C.2 1 UNCH -0.1500 + 7 C8 -12.3452 -3.3009 15.4359 C.2 1 UNCH -0.1500 + 8 C9 -12.4684 -1.9680 15.0411 C.2 1 UNCH -0.1500 + 9 C10 -11.6649 -1.4603 14.0191 C.2 1 UNCH -0.1500 + 10 C11 -10.7286 -2.2820 13.3916 C.2 1 UNCH -0.1500 + 11 N1 -6.6242 -2.8729 13.5559 N.2 1 UNCH 0.9610 + 12 N2 -5.9410 -6.5731 16.8724 N.2 1 UNCH 0.9600 + 13 O1 -7.5231 -2.0267 13.5398 O.3 1 UNCH -0.5200 + 14 O2 -5.4922 -2.7644 13.0752 O.2 1 UNCH -0.5200 + 15 O3 -4.8188 -6.2183 17.2545 O.3 1 UNCH -0.5200 + 16 O4 -6.5771 -7.5419 17.3023 O.2 1 UNCH -0.5200 + 17 O5 -10.0086 -5.9919 12.9022 O.3 1 UNCH -0.6500 + 18 O6 -8.8638 -4.0068 11.8522 O.3 1 UNCH -0.6500 + 19 S1 -8.0746 -6.1488 15.2204 S.3 1 UNCH -0.0800 + 20 S2 -9.4213 -4.6717 13.0118 S.3 1 UNCH 1.3710 + 21 H4 -5.0354 -4.2185 15.5305 H 1 UNCH 0.1500 + 22 H7 -11.3396 -5.1724 15.1145 H 1 UNCH 0.1500 + 23 H8 -12.9869 -3.6949 16.2208 H 1 UNCH 0.1500 + 24 H9 -13.2010 -1.3247 15.5237 H 1 UNCH 0.1500 + 25 H10 -11.7720 -0.4235 13.7077 H 1 UNCH 0.1500 + 26 H11 -10.1140 -1.8756 12.5903 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 19 1 + 3 1 20 1 + 4 2 3 1 + 5 2 11 1 + 6 3 4 2 + 7 3 21 1 + 8 4 12 1 + 9 4 19 1 + 10 5 6 2 + 11 5 10 1 + 12 5 20 1 + 13 6 7 1 + 14 6 22 1 + 15 7 8 2 + 16 7 23 1 + 17 8 9 1 + 18 8 24 1 + 19 9 10 2 + 20 9 25 1 + 21 10 26 1 + 22 11 13 1 + 23 11 14 2 + 24 12 15 1 + 25 12 16 2 + 26 17 20 1 + 27 18 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-PHENYLSULFONYL-3,5-DINITROTHIOPHENE +@MOLECULE +DIPDAH10 + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O41 -12.6776 -4.7446 13.8029 O.2 1 UNCH -0.5700 + 2 O21 -8.9952 -1.9978 13.7937 O.3 1 UNCH -0.4300 + 3 O11 -6.5690 -4.2778 14.0727 O.3 1 UNCH -0.5600 + 4 O31 -5.4647 -1.3333 14.0553 O.3 1 UNCH -0.6800 + 5 O51 -8.4583 -3.4957 16.2815 O.3 1 UNCH -0.6800 + 6 N11 -8.7992 -4.1735 13.2393 N.3 1 UNCH -0.5191 + 7 N31 -10.9177 -3.2712 13.8235 N.2 1 UNCH -0.6610 + 8 C11 -8.3620 -6.5502 12.6217 C.3 1 UNCH 0.1382 + 9 C21 -9.6509 -3.1806 13.6289 C.2 1 UNCH 0.6500 + 10 C41 -11.4825 -4.5147 13.6419 C.2 1 UNCH 0.7666 + 11 C51 -10.6029 -5.6506 13.2222 C.2 1 UNCH -0.1356 + 12 C61 -9.2885 -5.4469 13.0353 C.2 1 UNCH -0.0382 + 13 C12 -7.4565 -3.6815 13.1222 C.3 1 UNCH 0.6491 + 14 C22 -7.6189 -2.2014 13.4337 C.3 1 UNCH 0.2800 + 15 C32 -6.6578 -1.9496 14.5796 C.3 1 UNCH 0.2800 + 16 C42 -6.3077 -3.3329 15.1304 C.3 1 UNCH 0.2800 + 17 C52 -7.0669 -3.7320 16.4020 C.3 1 UNCH 0.2800 + 18 H11 -7.6129 -6.7355 13.3980 H 1 UNCH 0.0000 + 19 H21 -8.8986 -7.4896 12.4498 H 1 UNCH 0.0000 + 20 H31 -7.8463 -6.2908 11.6914 H 1 UNCH 0.0000 + 21 H51 -11.0907 -6.6072 13.0928 H 1 UNCH 0.1500 + 22 H12 -7.0475 -3.8419 12.1188 H 1 UNCH 0.0000 + 23 H22 -7.4112 -1.5762 12.5583 H 1 UNCH 0.0000 + 24 H32 -7.0548 -1.2748 15.3434 H 1 UNCH 0.0000 + 25 H42 -5.2365 -3.4115 15.3502 H 1 UNCH 0.0000 + 26 H52 -6.7003 -3.1499 17.2534 H 1 UNCH 0.0000 + 27 H520 -6.9224 -4.7976 16.6072 H 1 UNCH 0.0000 + 28 H322 -4.9507 -1.9984 13.5637 H 1 UNCH 0.4000 + 29 H522 -8.8910 -3.8207 17.0907 H 1 UNCH 0.4000 +@BOND + 1 1 10 2 + 2 2 9 1 + 3 2 14 1 + 4 3 13 1 + 5 3 16 1 + 6 4 15 1 + 7 4 28 1 + 8 5 17 1 + 9 5 29 1 + 10 6 9 am + 11 6 12 1 + 12 6 13 1 + 13 7 9 2 + 14 7 10 am + 15 8 12 1 + 16 8 18 1 + 17 8 19 1 + 18 8 20 1 + 19 10 11 1 + 20 11 12 2 + 21 11 21 1 + 22 13 14 1 + 23 13 22 1 + 24 14 15 1 + 25 14 23 1 + 26 15 16 1 + 27 15 24 1 + 28 16 17 1 + 29 16 25 1 + 30 17 26 1 + 31 17 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2'-ANHYDRO-1-BETA-D-ARABINOFURANOSYL-6-METHYLURACIL HEMIH +@MOLECULE +DIPDIP10 + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N7 -8.5118 -4.7595 15.3603 N.3 1 DIPD -0.8667 + 2 N8 -10.1633 -3.6507 16.1102 N.2 1 DIPD -0.8667 + 3 N9 -9.2684 -5.3007 17.5350 N.3 1 DIPD -0.8367 + 4 N10 -9.4978 -4.4029 11.2113 N.3 1 DIPD -0.8530 + 5 C13 -9.3118 -4.6115 16.4059 C.2 1 DIPD 1.0700 + 6 C14 -9.8677 -3.1061 14.8832 C.2 1 DIPD 0.2000 + 7 C15 -8.8102 -3.8249 14.3700 C.2 1 DIPD 0.1820 + 8 C16 -8.0252 -3.6760 13.1160 C.3 1 DIPD 0.1680 + 9 C17 -8.3204 -4.7432 12.0591 C.3 1 DIPD 0.5030 + 10 H5 -7.7335 -5.4117 15.3598 H 1 DIPD 0.4500 + 11 H6 -10.8890 -3.3178 16.7391 H 1 DIPD 0.4500 + 12 H7 -9.9180 -5.1103 18.2898 H 1 DIPD 0.4500 + 13 H8 -8.5742 -6.0192 17.6997 H 1 DIPD 0.4500 + 14 H9 -10.4468 -2.2609 14.5498 H 1 DIPD 0.1500 + 15 H10 -6.9684 -3.7490 13.4009 H 1 DIPD 0.0000 + 16 H11 -8.1782 -2.6695 12.7101 H 1 DIPD 0.0000 + 17 H14 -9.6100 -5.1107 10.4659 H 1 DIPD 0.4500 + 18 H15 -9.3891 -3.5058 10.7130 H 1 DIPD 0.4500 + 19 H16 -10.3948 -4.3866 11.7148 H 1 DIPD 0.4500 + 20 H17 -8.5162 -5.7282 12.4942 H 1 DIPD 0.0000 + 21 H18 -7.4792 -4.8211 11.3633 H 1 DIPD 0.0000 +@BOND + 1 1 10 1 + 2 1 7 1 + 3 1 5 am + 4 2 11 1 + 5 2 6 1 + 6 2 5 2 + 7 3 13 1 + 8 3 12 1 + 9 3 5 am + 10 4 19 1 + 11 4 18 1 + 12 4 17 1 + 13 4 9 1 + 14 6 14 1 + 15 6 7 2 + 16 7 8 1 + 17 8 16 1 + 18 8 15 1 + 19 8 9 1 + 20 9 21 1 + 21 9 20 1 +@SUBSTRUCTURE + 1 DIPD 1 +@COMMENT +COMMENT 2-(2-AMINO-4-IMIDAZOLYL)ETHYLAMINE DIPICRATE MONOHYDRATE (H +@MOLECULE +DIRMIA + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.4740 -3.8401 13.6658 S.3 1 UNCH 1.3328 + 2 O1 -8.3756 -4.3542 12.3187 O.3 1 UNCH -0.6500 + 3 O2 -7.8394 -2.6030 14.0712 O.3 1 UNCH -0.6500 + 4 O3 -7.9765 -4.5545 16.0650 O.3 1 UNCH -0.3170 + 5 N1 -7.9026 -5.0537 14.7132 N.3 1 UNCH -0.6410 + 6 C1 -10.1970 -3.7665 14.1127 C.3 1 UNCH 0.1052 + 7 H1 -8.3577 -5.9617 14.5859 H 1 UNCH 0.4200 + 8 H2 -10.6781 -3.0288 13.4665 H 1 UNCH 0.0000 + 9 H3 -10.6462 -4.7481 13.9513 H 1 UNCH 0.0000 + 10 H4 -10.2875 -3.4574 15.1552 H 1 UNCH 0.0000 + 11 H5 -7.3883 -3.7660 16.0710 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 5 1 + 4 1 6 1 + 5 4 5 1 + 6 4 11 1 + 7 5 7 1 + 8 6 8 1 + 9 6 9 1 + 10 6 10 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYLSULFONYL-HYDROXYLAMINE (AT 160 DEG.K) N-MESYLHYDROXYL +@MOLECULE +DISHES + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -6.7903 -7.8053 13.2029 O.2 1 DISH -0.5700 + 2 N1 -8.8147 -2.8417 13.6821 N.2 1 DISH -0.6960 + 3 C1 -8.3879 -4.0535 13.6165 C.2 1 DISH 0.4212 + 4 C2 -7.2011 -4.3108 12.7668 C.2 1 DISH -0.1356 + 5 C3 -6.6778 -5.5298 12.6293 C.2 1 DISH -0.1356 + 6 C4 -7.2647 -6.6834 13.3241 C.2 1 DISH 0.5412 + 7 C5 -8.4451 -6.4421 14.1723 C.2 1 DISH -0.1356 + 8 C6 -8.9904 -5.2265 14.3274 C.2 1 DISH 0.0144 + 9 C7 -10.1539 -4.9518 15.1555 C.2 1 DISH -0.1382 + 10 C8 -10.5997 -3.6866 15.2241 C.2 1 DISH -0.2882 + 11 C9 -9.9856 -2.5110 14.5039 C.3 1 DISH 0.3842 + 12 C10 -10.8345 -6.0581 15.9116 C.3 1 DISH 0.1382 + 13 C11 -9.5294 -1.4682 15.5330 C.3 1 DISH 0.0000 + 14 C12 -11.0292 -1.8900 13.5658 C.3 1 DISH 0.0000 + 15 H2 -6.7765 -3.4519 12.2589 H 1 DISH 0.1500 + 16 H3 -5.8109 -5.7213 12.0094 H 1 DISH 0.1500 + 17 H5 -8.8314 -7.3303 14.6572 H 1 DISH 0.1500 + 18 H8 -11.4695 -3.4606 15.8388 H 1 DISH 0.1500 + 19 H111 -8.7618 -1.8796 16.1996 H 1 DISH 0.0000 + 20 H211 -9.0920 -0.5918 15.0402 H 1 DISH 0.0000 + 21 H311 -10.3632 -1.1211 16.1542 H 1 DISH 0.0000 + 22 H110 -11.2088 -6.8247 15.2247 H 1 DISH 0.0000 + 23 H210 -10.1437 -6.5252 16.6217 H 1 DISH 0.0000 + 24 H310 -11.6923 -5.6930 16.4873 H 1 DISH 0.0000 + 25 H112 -10.6186 -1.0212 13.0379 H 1 DISH 0.0000 + 26 H212 -11.9192 -1.5587 14.1133 H 1 DISH 0.0000 + 27 H312 -11.3519 -2.6081 12.8022 H 1 DISH 0.0000 +@BOND + 1 1 6 2 + 2 2 3 2 + 3 2 11 1 + 4 3 4 1 + 5 3 8 1 + 6 4 5 2 + 7 4 15 1 + 8 5 6 1 + 9 5 16 1 + 10 6 7 1 + 11 7 8 2 + 12 7 17 1 + 13 8 9 1 + 14 9 10 2 + 15 9 12 1 + 16 10 11 1 + 17 10 18 1 + 18 11 13 1 + 19 11 14 1 + 20 12 22 1 + 21 12 23 1 + 22 12 24 1 + 23 13 19 1 + 24 13 20 1 + 25 13 21 1 + 26 14 25 1 + 27 14 26 1 + 28 14 27 1 +@SUBSTRUCTURE + 1 DISH 1 +@COMMENT +COMMENT 2,6-DIHYDRO-6-OXO-2,2,4-TRIMETHYLQUINOLINE +@MOLECULE +DISJOE + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -10.8507 -4.5508 12.7497 CL 1 DISJ -0.1400 + 2 O1 -11.8940 -3.1437 15.5976 O.2 1 DISJ -0.5200 + 3 O2 -11.7615 -5.3253 15.8721 O.3 1 DISJ -0.5200 + 4 O3 -8.5945 -4.0104 15.9559 O.3 1 DISJ -0.8500 + 5 O4 -8.1430 -4.2736 13.6466 O.3 1 DISJ -0.3567 + 6 N1 -11.3559 -4.2487 15.3943 N.2 1 DISJ 0.8356 + 7 C1 -10.3134 -4.3129 14.3809 C.2 1 DISJ 0.3444 + 8 C2 -9.0154 -4.1851 14.7705 C.2 1 DISJ -0.0733 + 9 C3 -6.7496 -4.1514 13.9455 C.3 1 DISJ 0.2800 + 10 C4 -5.9843 -4.2693 12.6392 C.3 1 DISJ 0.0000 + 11 H3 -6.5381 -3.1740 14.3950 H 1 DISJ 0.0000 + 12 H4 -6.2960 -3.4880 11.9380 H 1 DISJ 0.0000 + 13 H5 -4.9074 -4.1826 12.8089 H 1 DISJ 0.0000 + 14 H3F -6.4300 -4.9552 14.6191 H 1 DISJ 0.0000 + 15 H4F -6.1903 -5.2308 12.1573 H 1 DISJ 0.0000 +@BOND + 1 1 7 1 + 2 2 6 2 + 3 3 6 1 + 4 4 8 1 + 5 5 8 1 + 6 5 9 1 + 7 6 7 1 + 8 7 8 2 + 9 9 10 1 + 10 9 11 1 + 11 9 14 1 + 12 10 12 1 + 13 10 13 1 + 14 10 15 1 +@SUBSTRUCTURE + 1 DISJ 1 +@COMMENT +COMMENT DIMETHYLAMMONIUM 1-CHLORO-1-NITRO-ETHYL ACETATE +@MOLECULE +DITRAZ + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.3178 -3.2786 13.0049 S.3 1 DITR -0.3610 + 2 C1 -9.7223 -3.7926 14.6103 C.2 1 DITR 0.8398 + 3 N1 -10.4976 -2.9763 15.2861 N.2 1 DITR -0.7544 + 4 N2 -9.3110 -4.9482 15.1347 N.3 1 DITR -0.5274 + 5 N3 -8.4876 -5.7947 14.3974 N.3 1 DITR -0.4970 + 6 C2 -7.7022 -2.5294 13.3237 C.3 1 DITR 0.2300 + 7 H1 -10.8163 -3.1623 16.2251 H 1 DITR 0.4500 + 8 H2 -10.8009 -2.1255 14.8256 H 1 DITR 0.4500 + 9 H33 -9.5850 -5.1712 16.0905 H 1 DITR 0.4500 + 10 H4 -8.6431 -5.7009 13.3878 H 1 DITR 0.3600 + 11 H5 -8.5930 -6.7720 14.6825 H 1 DITR 0.3600 + 12 H6 -7.0027 -3.2741 13.7116 H 1 DITR 0.0000 + 13 H7 -7.8000 -1.7164 14.0481 H 1 DITR 0.0000 + 14 H8 -7.3005 -2.1231 12.3919 H 1 DITR 0.0000 +@BOND + 1 1 6 1 + 2 1 2 1 + 3 2 4 am + 4 2 3 2 + 5 3 8 1 + 6 3 7 1 + 7 4 9 1 + 8 4 5 1 + 9 5 11 1 + 10 5 10 1 + 11 6 14 1 + 12 6 13 1 + 13 6 12 1 +@SUBSTRUCTURE + 1 DITR 1 +@COMMENT +COMMENT S-METHYL-ISOTHIOSEMICARBAZIDE NITRATE +@MOLECULE +DITYAG10 + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -14.3932 -3.9139 14.6087 CL 1 UNCH -0.1770 + 2 O1 -8.1243 -5.5747 13.0330 O.2 1 UNCH -0.5700 + 3 C1 -9.9497 -4.3810 13.9174 C.2 1 UNCH 0.0862 + 4 C2 -10.4460 -3.2591 14.5944 C.2 1 UNCH -0.1500 + 5 C3 -11.8224 -3.1178 14.8067 C.2 1 UNCH -0.1500 + 6 C4 -12.7036 -4.0939 14.3442 C.2 1 UNCH 0.1770 + 7 C5 -12.2225 -5.2127 13.6695 C.2 1 UNCH -0.1500 + 8 C6 -10.8484 -5.3555 13.4565 C.2 1 UNCH -0.1500 + 9 C7 -8.4895 -4.5838 13.6624 C.2 1 UNCH 0.4228 + 10 C8 -7.5050 -3.5552 14.1888 C.3 1 UNCH 0.0610 + 11 C9 -6.0472 -3.8917 13.8934 C.3 1 UNCH 0.0000 + 12 C10 -5.4082 -5.0569 14.6974 C.3 1 UNCH 0.0000 + 13 C11 -4.1094 -4.2261 14.7283 C.3 1 UNCH 0.0000 + 14 C12 -4.9920 -2.9721 14.5645 C.3 1 UNCH 0.0000 + 15 H2 -9.7886 -2.4788 14.9663 H 1 UNCH 0.1500 + 16 H3 -12.1999 -2.2442 15.3328 H 1 UNCH 0.1500 + 17 H5 -12.9057 -5.9763 13.3065 H 1 UNCH 0.1500 + 18 H6 -10.4816 -6.2341 12.9273 H 1 UNCH 0.1500 + 19 H81 -7.7412 -2.5921 13.7216 H 1 UNCH 0.0000 + 20 H82 -7.6485 -3.4655 15.2719 H 1 UNCH 0.0000 + 21 H9 -5.8694 -3.9848 12.8117 H 1 UNCH 0.0000 + 22 H101 -5.8475 -5.2207 15.6885 H 1 UNCH 0.0000 + 23 H102 -5.3426 -6.0148 14.1751 H 1 UNCH 0.0000 + 24 H111 -3.5294 -4.2831 15.6526 H 1 UNCH 0.0000 + 25 H112 -3.4458 -4.4130 13.8763 H 1 UNCH 0.0000 + 26 H121 -5.3091 -2.5333 15.5179 H 1 UNCH 0.0000 + 27 H122 -4.5790 -2.1830 13.9309 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 2 9 2 + 3 3 4 2 + 4 3 8 1 + 5 3 9 1 + 6 4 5 1 + 7 4 15 1 + 8 5 6 2 + 9 5 16 1 + 10 6 7 1 + 11 7 8 2 + 12 7 17 1 + 13 8 18 1 + 14 9 10 1 + 15 10 11 1 + 16 10 19 1 + 17 10 20 1 + 18 11 12 1 + 19 11 14 1 + 20 11 21 1 + 21 12 13 1 + 22 12 22 1 + 23 12 23 1 + 24 13 14 1 + 25 13 24 1 + 26 13 25 1 + 27 14 26 1 + 28 14 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(4-CHLOROPHENYL)-2-CYCLOBUTYLETHANONE ALPHA-CYCLOBUTYL-4- +@MOLECULE +DIVJUN + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -7.9141 -4.4740 14.9704 C.2 1 DIVJ 0.6010 + 2 C3 -9.0470 -4.1224 14.0799 C.2 1 DIVJ 0.6988 + 3 C5 -7.7368 -4.6796 12.0254 C.3 1 DIVJ 0.4895 + 4 C6 -6.4535 -4.2255 12.7002 C.3 1 DIVJ 0.2300 + 5 C10 -11.4074 -3.3169 14.0913 C.3 1 DIVJ 0.4895 + 6 N4 -8.9345 -4.2095 12.7587 N.2 1 DIVJ -0.7939 + 7 N7 -8.1812 -4.3978 16.2494 N.2 1 DIVJ -0.5130 + 8 N9 -10.1486 -3.7225 14.7030 N.3 1 DIVJ -0.7939 + 9 O8 -7.0838 -4.7350 17.0542 O.3 1 DIVJ -0.3370 + 10 S1 -6.3281 -4.9608 14.3475 S.3 1 DIVJ -0.3710 + 11 H4 -9.7435 -3.9665 12.2017 H 1 DIVJ 0.4500 + 12 H8 -7.4221 -4.6544 17.9673 H 1 DIVJ 0.4000 + 13 H9 -10.0651 -3.7227 15.7247 H 1 DIVJ 0.4500 + 14 H31 -7.7953 -5.7699 11.9340 H 1 DIVJ 0.0000 + 15 H52 -7.7885 -4.2577 11.0161 H 1 DIVJ 0.0000 + 16 H61 -6.4315 -3.1349 12.7956 H 1 DIVJ 0.0000 + 17 H62 -5.5852 -4.5335 12.1103 H 1 DIVJ 0.0000 + 18 H101 -11.8220 -4.1509 13.5193 H 1 DIVJ 0.0000 + 19 H102 -11.2369 -2.4586 13.4363 H 1 DIVJ 0.0000 + 20 H103 -12.1104 -3.0350 14.8792 H 1 DIVJ 0.0000 +@BOND + 1 1 10 1 + 2 1 7 2 + 3 1 2 1 + 4 2 8 am + 5 2 6 2 + 6 3 15 1 + 7 3 14 1 + 8 3 6 1 + 9 3 4 1 + 10 4 17 1 + 11 4 16 1 + 12 4 10 1 + 13 5 20 1 + 14 5 19 1 + 15 5 18 1 + 16 5 8 1 + 17 6 11 1 + 18 7 9 1 + 19 8 13 1 + 20 9 12 1 +@SUBSTRUCTURE + 1 DIVJ 1 +@COMMENT +COMMENT 5,6-DIHYDRO-3-DIMETHYLAMINO-2H-1,4-THIAZIN-2-ONE-OXIME HYDR +@MOLECULE +DIVTUX + 25 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.9975 -3.8121 15.6587 O.3 1 UNCH -0.6800 + 2 O2 -6.8925 -4.4839 14.8502 O.3 1 UNCH -0.3404 + 3 C1 -7.8892 -5.2528 14.3039 C.2 1 UNCH 0.0825 + 4 C2 -7.4877 -6.1715 13.3328 C.2 1 UNCH -0.1500 + 5 C3 -8.4275 -7.0023 12.7261 C.2 1 UNCH -0.1500 + 6 C4 -9.7666 -6.9197 13.0988 C.2 1 UNCH -0.1500 + 7 C5 -10.1638 -6.0079 14.0795 C.2 1 UNCH -0.1500 + 8 C6 -9.2303 -5.1552 14.6904 C.2 1 UNCH -0.1435 + 9 C7 -9.6367 -4.2174 15.7951 C.3 1 UNCH 0.4235 + 10 C8 -8.7633 -2.9798 15.7940 C.3 1 UNCH 0.0000 + 11 C9 -8.7347 -2.0490 14.5523 C.3 1 UNCH 0.0000 + 12 C10 -7.2071 -1.9724 14.7150 C.3 1 UNCH 0.0000 + 13 C11 -7.2697 -3.2758 15.5476 C.3 1 UNCH 0.2579 + 14 H2 -6.4413 -6.2355 13.0480 H 1 UNCH 0.1500 + 15 H3 -8.1151 -7.7136 11.9665 H 1 UNCH 0.1500 + 16 H4 -10.5037 -7.5672 12.6313 H 1 UNCH 0.1500 + 17 H5 -11.2123 -5.9622 14.3676 H 1 UNCH 0.1500 + 18 H7 -9.5403 -4.7542 16.7466 H 1 UNCH 0.0000 + 19 H8 -8.9164 -2.4032 16.7189 H 1 UNCH 0.0000 + 20 H91 -9.2647 -1.0994 14.6679 H 1 UNCH 0.0000 + 21 H92 -9.0520 -2.5121 13.6116 H 1 UNCH 0.0000 + 22 H101 -6.8637 -1.1036 15.2880 H 1 UNCH 0.0000 + 23 H102 -6.6386 -2.0274 13.7825 H 1 UNCH 0.0000 + 24 H11 -6.6715 -3.2070 16.4645 H 1 UNCH 0.0000 + 25 H1 -11.2189 -3.2844 16.4437 H 1 UNCH 0.4000 +@BOND + 1 1 25 1 + 2 1 9 1 + 3 2 13 1 + 4 2 3 1 + 5 3 8 1 + 6 3 4 2 + 7 4 14 1 + 8 4 5 1 + 9 5 15 1 + 10 5 6 2 + 11 6 16 1 + 12 6 7 1 + 13 7 17 1 + 14 7 8 2 + 15 8 9 1 + 16 9 18 1 + 17 9 10 1 + 18 10 19 1 + 19 10 13 1 + 20 10 11 1 + 21 11 21 1 + 22 11 20 1 + 23 11 12 1 + 24 12 23 1 + 25 12 22 1 + 26 12 13 1 + 27 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-OXATRICYCLO(6.4.0.0-3,6-)DODECA-1(12),8,10-TRIEN-7-OL +@MOLECULE +DIVVEJ + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.3136 -4.7915 12.2891 O.2 1 DIVV -0.5700 + 2 C1 -9.8103 -4.7799 13.4005 C.2 1 DIVV 0.9730 + 3 C2 -7.8895 -3.7731 14.4950 C.2 1 DIVV 1.2000 + 4 N1 -11.0413 -5.2302 13.6988 N.3 1 DIVV -0.8000 + 5 N2 -9.1275 -4.2814 14.5108 N.3 1 DIVV -0.8597 + 6 N3 -7.3423 -3.3251 15.6330 N.3 1 DIVV -0.9667 + 7 N4 -7.1718 -3.6952 13.3742 N.2 1 DIVV -0.9667 + 8 H1 -11.5903 -5.6063 12.9331 H 1 DIVV 0.3700 + 9 H2 -11.4738 -5.2313 14.6093 H 1 DIVV 0.3700 + 10 H3 -9.6107 -4.3095 15.3902 H 1 DIVV 0.4500 + 11 H4 -7.8288 -3.3533 16.5192 H 1 DIVV 0.4500 + 12 H5 -6.4065 -2.9373 15.6394 H 1 DIVV 0.4500 + 13 H7 -7.5860 -4.0363 12.5026 H 1 DIVV 0.4500 + 14 H8 -6.2366 -3.3173 13.3315 H 1 DIVV 0.4500 +@BOND + 1 1 2 2 + 2 2 4 am + 3 2 5 am + 4 3 5 am + 5 3 6 am + 6 3 7 2 + 7 4 8 1 + 8 4 9 1 + 9 5 10 1 + 10 6 11 1 + 11 6 12 1 + 12 7 13 1 + 13 7 14 1 +@SUBSTRUCTURE + 1 DIVV 1 +@COMMENT +COMMENT 1-CARBAMOYLGUANIDINIUM PERCHLORATE +@MOLECULE +DIVWEK + 34 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.2095 9.9708 -1.8032 O.3 1 UNCH -0.1534 + 2 C2 -0.3781 9.3435 -0.7369 C.2 1 UNCH 0.0911 + 3 C3 -1.6623 10.0117 -0.4420 C.2 1 UNCH 0.5412 + 4 C4 -1.7951 11.0925 -1.4567 C.2 1 UNCH -0.0140 + 5 C5 -0.6649 10.9981 -2.1825 C.2 1 UNCH 0.0911 + 6 C20 0.1072 8.3103 -0.0364 C.2 1 UNCH -0.1784 + 7 C21 1.3863 7.6305 -0.2800 C.2 1 UNCH 0.0284 + 8 C22 2.1273 7.1798 0.8211 C.2 1 UNCH -0.1500 + 9 C23 3.3351 6.5014 0.6387 C.2 1 UNCH -0.1500 + 10 C24 3.8094 6.2559 -0.6475 C.2 1 UNCH -0.1500 + 11 C25 3.0741 6.6833 -1.7507 C.2 1 UNCH -0.1500 + 12 C26 1.8659 7.3618 -1.5684 C.2 1 UNCH -0.1500 + 13 O30 -2.4407 9.7336 0.4492 O.2 1 UNCH -0.5700 + 14 C41 -2.9344 12.0066 -1.5328 C.2 1 UNCH 0.0284 + 15 C42 -3.3868 12.6624 -0.3789 C.2 1 UNCH -0.1500 + 16 C43 -4.4879 13.5209 -0.4301 C.2 1 UNCH -0.1500 + 17 C44 -5.1544 13.7292 -1.6347 C.2 1 UNCH -0.1500 + 18 C45 -4.7243 13.0751 -2.7865 C.2 1 UNCH -0.1500 + 19 C46 -3.6243 12.2145 -2.7349 C.2 1 UNCH -0.1500 + 20 C50 -0.2691 11.8857 -3.2940 C.2 1 UNCH 0.7056 + 21 O51 -0.8314 12.8898 -3.6861 O.2 1 UNCH -0.5700 + 22 O52 0.8604 11.4558 -3.8869 O.3 1 UNCH -0.6500 + 23 H52 1.0317 12.1207 -4.5859 H 1 UNCH 0.5000 + 24 H23 3.9035 6.1641 1.5016 H 1 UNCH 0.1500 + 25 H25 3.4375 6.4854 -2.7559 H 1 UNCH 0.1500 + 26 H42 -2.8907 12.5075 0.5776 H 1 UNCH 0.1500 + 27 H26 1.3050 7.6681 -2.4479 H 1 UNCH 0.1500 + 28 H20 -0.4674 7.9370 0.8101 H 1 UNCH 0.1500 + 29 H22 1.7749 7.3593 1.8347 H 1 UNCH 0.1500 + 30 H46 -3.3154 11.7131 -3.6492 H 1 UNCH 0.1500 + 31 H44 -6.0107 14.3973 -1.6752 H 1 UNCH 0.1500 + 32 H24 4.7484 5.7276 -0.7904 H 1 UNCH 0.1500 + 33 H45 -5.2442 13.2337 -3.7278 H 1 UNCH 0.1500 + 34 H43 -4.8263 14.0223 0.4730 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 1 + 4 2 6 2 + 5 3 4 1 + 6 3 13 2 + 7 4 5 2 + 8 4 14 1 + 9 5 20 1 + 10 6 7 1 + 11 6 28 1 + 12 7 8 1 + 13 7 12 2 + 14 8 9 2 + 15 8 29 1 + 16 9 10 1 + 17 9 24 1 + 18 10 11 2 + 19 10 32 1 + 20 11 12 1 + 21 11 25 1 + 22 12 27 1 + 23 14 15 2 + 24 14 19 1 + 25 15 16 1 + 26 15 26 1 + 27 16 17 2 + 28 16 34 1 + 29 17 18 1 + 30 17 31 1 + 31 18 19 2 + 32 18 33 1 + 33 19 30 1 + 34 20 21 2 + 35 20 22 1 + 36 22 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-BENZYLIDENE-4,5-DIHYDRO-4-OXO-3-PHENYLFURAN-2-CARBOXYLIC +@MOLECULE +DIWCOB + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.2263 -4.6997 14.9082 C.2 1 DIWC 1.2000 + 2 N1 -8.2200 -4.7776 15.8456 N.2 1 DIWC -0.7017 + 3 N2 -7.0188 -5.4241 15.5330 N.3 1 DIWC -0.5350 + 4 N3 -9.0666 -5.2932 13.6756 N.3 1 DIWC -0.7017 + 5 N4 -10.0797 -5.1980 12.7147 N.3 1 DIWC -0.5350 + 6 N5 -10.4002 -4.0458 15.2108 N.3 1 DIWC -0.7017 + 7 N6 -10.5566 -3.4250 16.4553 N.3 1 DIWC -0.5350 + 8 H2 -8.4355 -4.5796 16.8222 H 1 DIWC 0.4500 + 9 H3 -6.5599 -4.9423 14.7512 H 1 DIWC 0.3600 + 10 H4 -6.3796 -5.3693 16.3351 H 1 DIWC 0.3600 + 11 H5 -8.3305 -5.9876 13.5509 H 1 DIWC 0.4500 + 12 H6 -9.7849 -5.6768 11.8552 H 1 DIWC 0.3600 + 13 H7 -10.2336 -4.2128 12.4707 H 1 DIWC 0.3600 + 14 H8 -11.2247 -4.2149 14.6355 H 1 DIWC 0.4500 + 15 H9 -11.4774 -2.9723 16.5008 H 1 DIWC 0.3600 + 16 H10 -9.8536 -2.6847 16.5634 H 1 DIWC 0.3600 +@BOND + 1 1 6 am + 2 1 4 am + 3 1 2 2 + 4 2 8 1 + 5 2 3 1 + 6 3 10 1 + 7 3 9 1 + 8 4 11 1 + 9 4 5 1 + 10 5 13 1 + 11 5 12 1 + 12 6 14 1 + 13 6 7 1 + 14 7 16 1 + 15 7 15 1 +@SUBSTRUCTURE + 1 DIWC 1 +@COMMENT +COMMENT BIS(1,2,3-TRIAMINOGUANIDINIUM) BIS(5-AMINOTETRAZOLATE) MONO +@MOLECULE +DIXJEZ + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.4696 -2.7097 13.1281 N.2 1 DIXJ -0.6200 + 2 C2 -7.8443 -3.3838 12.1467 C.2 1 DIXJ 0.5210 + 3 N3 -7.5228 -4.6732 12.1813 N.2 1 DIXJ -0.1260 + 4 C4 -7.8662 -5.3257 13.3132 C.2 1 DIXJ 0.1564 + 5 C5 -8.5148 -4.7288 14.3823 C.2 1 DIXJ 0.2272 + 6 C6 -8.8446 -3.3444 14.2896 C.2 1 DIXJ 0.4100 + 7 N6 -9.5360 -2.6135 15.2511 N.3 1 DIXJ -0.8382 + 8 N7 -8.7083 -5.6750 15.3680 N.2 1 DIXJ -0.5653 + 9 C8 -8.2038 -6.7977 14.9086 C.2 1 DIXJ 0.0365 + 10 N9 -7.6769 -6.6363 13.6553 N.3 1 DIXJ 0.0332 + 11 C10 -9.4313 -1.1609 15.1630 C.3 1 DIXJ 0.3691 + 12 C11 -9.6722 -3.1781 16.5904 C.3 1 DIXJ 0.3691 + 13 H2 -7.5823 -2.8270 11.2518 H 1 DIXJ 0.1500 + 14 H3 -7.0519 -5.1191 11.3998 H 1 DIXJ 0.4570 + 15 H8 -8.1919 -7.7476 15.4322 H 1 DIXJ 0.1500 + 16 H9 -7.2393 -7.3720 13.1158 H 1 DIXJ 0.2700 + 17 H101 -8.4042 -0.8304 15.3543 H 1 DIXJ 0.0000 + 18 H102 -10.0832 -0.6790 15.9001 H 1 DIXJ 0.0000 + 19 H103 -9.7510 -0.7926 14.1817 H 1 DIXJ 0.0000 + 20 H111 -8.6932 -3.3730 17.0417 H 1 DIXJ 0.0000 + 21 H112 -10.2645 -4.0986 16.5726 H 1 DIXJ 0.0000 + 22 H113 -10.2081 -2.4869 17.2510 H 1 DIXJ 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 13 1 + 4 2 3 2 + 5 3 14 1 + 6 3 4 1 + 7 4 10 1 + 8 4 5 2 + 9 5 8 1 + 10 5 6 1 + 11 6 7 am + 12 7 12 1 + 13 7 11 1 + 14 8 9 2 + 15 9 15 1 + 16 9 10 am + 17 10 16 1 + 18 11 19 1 + 19 11 18 1 + 20 11 17 1 + 21 12 22 1 + 22 12 21 1 + 23 12 20 1 +@SUBSTRUCTURE + 1 DIXJ 1 +@COMMENT +COMMENT N-6-,N-6--DIMETHYL-ADENINIUM PICRATE +@MOLECULE +DIYDIY + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.9199 3.5166 -0.3953 C.2 1 UNCH 0.0825 + 2 C2 2.6062 4.7423 -0.3797 C.2 1 UNCH 0.0862 + 3 C3 2.5031 5.6332 -1.4570 C.2 1 UNCH -0.1500 + 4 C4 1.7145 5.3077 -2.5578 C.2 1 UNCH -0.1500 + 5 C5 1.0305 4.0951 -2.5825 C.2 1 UNCH -0.1500 + 6 C6 1.1312 3.2033 -1.5086 C.2 1 UNCH -0.1500 + 7 O7 2.0762 2.7068 0.6970 O.3 1 UNCH -0.3625 + 8 C8 1.3911 1.4587 0.7058 C.3 1 UNCH 0.3410 + 9 C9 1.6935 0.7172 1.9942 C.2 1 UNCH 0.6590 + 10 O10 2.4035 1.0777 2.9179 O.2 1 UNCH -0.5700 + 11 O11 1.0643 -0.4776 2.0509 O.3 1 UNCH -0.6500 + 12 C21 3.4531 5.1201 0.7743 C.2 1 UNCH 0.4238 + 13 O21 4.0609 6.1852 0.8087 O.2 1 UNCH -0.5700 + 14 H3 3.0378 6.5812 -1.4378 H 1 UNCH 0.1500 + 15 H4 1.6349 5.9992 -3.3932 H 1 UNCH 0.1500 + 16 H5 0.4144 3.8406 -3.4423 H 1 UNCH 0.1500 + 17 H6 0.5774 2.2725 -1.5796 H 1 UNCH 0.1500 + 18 H81 0.3086 1.6236 0.6660 H 1 UNCH 0.0000 + 19 H82 1.7381 0.8334 -0.1243 H 1 UNCH 0.0000 + 20 H21 3.5204 4.4053 1.6107 H 1 UNCH 0.0600 + 21 H11 1.3405 -0.8453 2.9181 H 1 UNCH 0.5000 +@BOND + 1 1 2 1 + 2 1 6 2 + 3 1 7 1 + 4 2 3 2 + 5 2 12 1 + 6 3 4 1 + 7 3 14 1 + 8 4 5 2 + 9 4 15 1 + 10 5 6 1 + 11 5 16 1 + 12 6 17 1 + 13 7 8 1 + 14 8 9 1 + 15 8 18 1 + 16 8 19 1 + 17 9 10 2 + 18 9 11 1 + 19 11 21 1 + 20 12 13 2 + 21 12 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-FORMYL-PHENOXYACETIC ACID +@MOLECULE +DIYPOQ + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.8446 -7.1635 15.1968 N.3 1 DIYP -0.8197 + 2 C2 -7.6541 -7.9466 14.1063 C.2 1 DIYP 1.2000 + 3 N3 -7.7968 -7.4088 12.8969 N.2 1 DIYP -0.8597 + 4 C4 -8.1280 -6.0638 12.6920 C.2 1 DIYP 0.8986 + 5 N5 -8.7077 -3.8898 13.8018 N.3 1 DIYP -0.7590 + 6 C6 -8.3448 -3.0182 15.0321 C.3 1 DIYP 0.5030 + 7 C7 -8.7873 -3.7643 16.3309 C.3 1 DIYP 0.3691 + 8 N8 -8.3125 -5.1580 16.3192 N.3 1 DIYP -0.8691 + 9 C9 -8.3241 -5.2742 13.9313 C.2 1 DIYP 0.3704 + 10 C10 -8.1806 -5.8400 15.1439 C.2 1 DIYP 0.4030 + 11 N11 -7.3273 -9.2339 14.2439 N.3 1 DIYP -0.9667 + 12 O12 -8.2405 -5.5745 11.5832 O.2 1 DIYP -0.5700 + 13 C13 -9.0864 -1.6758 14.8097 C.3 1 DIYP 0.2800 + 14 O14 -10.4170 -2.0126 14.3773 O.3 1 DIYP -0.6800 + 15 C15 -9.0723 -0.7596 16.0466 C.3 1 DIYP 0.2800 + 16 O16 -7.7559 -0.7849 16.5850 O.3 1 DIYP -0.6800 + 17 C17 -9.4634 0.6731 15.7035 C.3 1 DIYP 0.0000 + 18 H1 -7.6954 -7.6096 16.0985 H 1 DIYP 0.4500 + 19 H3 -7.6574 -7.9708 12.0653 H 1 DIYP 0.4500 + 20 H51 -9.7349 -3.7776 13.6913 H 1 DIYP 0.4500 + 21 H52 -8.3174 -3.4680 12.9427 H 1 DIYP 0.4500 + 22 H6 -7.2556 -2.8919 15.0081 H 1 DIYP 0.0000 + 23 H71 -9.8803 -3.7721 16.4157 H 1 DIYP 0.0000 + 24 H72 -8.3851 -3.2676 17.2188 H 1 DIYP 0.0000 + 25 H8 -8.5148 -5.6907 17.1651 H 1 DIYP 0.4000 + 26 H111 -7.1770 -9.8434 13.4446 H 1 DIYP 0.4500 + 27 H112 -7.2091 -9.6762 15.1504 H 1 DIYP 0.4500 + 28 H13 -8.5988 -1.1665 13.9684 H 1 DIYP 0.0000 + 29 H14 -10.9190 -1.1781 14.2531 H 1 DIYP 0.4000 + 30 H15 -9.7655 -1.1372 16.8067 H 1 DIYP 0.0000 + 31 H16 -7.6797 -0.0662 17.2470 H 1 DIYP 0.4000 + 32 H171 -8.7655 1.1062 14.9785 H 1 DIYP 0.0000 + 33 H172 -10.4762 0.7299 15.2951 H 1 DIYP 0.0000 + 34 H173 -9.4176 1.3053 16.5969 H 1 DIYP 0.0000 +@BOND + 1 1 18 1 + 2 1 10 1 + 3 1 2 am + 4 2 11 am + 5 2 3 2 + 6 3 19 1 + 7 3 4 am + 8 4 12 2 + 9 4 9 1 + 10 5 21 1 + 11 5 20 1 + 12 5 9 1 + 13 5 6 1 + 14 6 22 1 + 15 6 13 1 + 16 6 7 1 + 17 7 24 1 + 18 7 23 1 + 19 7 8 1 + 20 8 25 1 + 21 8 10 1 + 22 9 10 2 + 23 11 27 1 + 24 11 26 1 + 25 13 28 1 + 26 13 15 1 + 27 13 14 1 + 28 14 29 1 + 29 15 30 1 + 30 15 17 1 + 31 15 16 1 + 32 16 31 1 + 33 17 34 1 + 34 17 33 1 + 35 17 32 1 +@SUBSTRUCTURE + 1 DIYP 1 +@COMMENT +COMMENT (6R,1'R,2'S)-6-(1',2'-DIHYDROXYPROPYL)-5,6,7,8-TETRAHYDROPT +@MOLECULE +DIYPUW + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.8839 -2.7465 14.3552 O.2 1 UNCH -0.5700 + 2 C1 -8.8840 -3.9764 14.3550 C.2 1 UNCH 0.6900 + 3 N1 -9.8939 -4.7752 14.9126 N.3 1 UNCH -0.3580 + 4 C2 -10.5498 -4.3680 16.1224 C.3 1 UNCH -0.0510 + 5 C3 -11.2672 -4.3678 14.8235 C.3 1 UNCH -0.0510 + 6 H21 -10.7095 -5.1805 16.8164 H 1 UNCH 0.1000 + 7 H22 -10.2156 -3.4276 16.5405 H 1 UNCH 0.1000 + 8 H31 -11.9396 -5.1801 14.5889 H 1 UNCH 0.1000 + 9 H32 -11.4428 -3.4272 14.3182 H 1 UNCH 0.1000 + 10 N1B -7.8742 -4.7751 13.7972 N.3 1 UNCH -0.3580 + 11 C2B -7.2182 -4.3677 12.5875 C.3 1 UNCH -0.0510 + 12 C3B -6.5009 -4.3679 13.8864 C.3 1 UNCH -0.0510 + 13 H21B -7.0587 -5.1800 11.8933 H 1 UNCH 0.1000 + 14 H22B -7.5524 -3.4271 12.1697 H 1 UNCH 0.1000 + 15 H31B -5.8285 -5.1804 14.1208 H 1 UNCH 0.1000 + 16 H32B -6.3251 -3.4275 14.3919 H 1 UNCH 0.1000 +@BOND + 1 1 2 2 + 2 2 3 am + 3 2 10 am + 4 3 4 1 + 5 3 5 1 + 6 4 5 1 + 7 4 6 1 + 8 4 7 1 + 9 5 8 1 + 10 5 9 1 + 11 10 11 1 + 12 10 12 1 + 13 11 12 1 + 14 11 13 1 + 15 11 14 1 + 16 12 15 1 + 17 12 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,1-CARBONYL-BIS(AZIRIDINE) (AT -105 DEG.C) +@MOLECULE +DIZPUX + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -6.9947 -5.1897 11.8484 O.2 1 CHGB -0.5700 + 2 N1 -9.2277 -2.4442 13.0688 N.3 1 CHGB -0.9060 + 3 C1 -9.2052 -3.9309 12.8563 C.3 1 CHGB 0.6412 + 4 C2 -10.6571 -4.3502 13.1311 C.3 1 CHGB 0.0000 + 5 C3 -11.3323 -3.1686 13.8260 C.3 1 CHGB 0.0000 + 6 C4 -10.2249 -2.1761 14.1430 C.3 1 CHGB 0.5030 + 7 C5 -9.5700 -2.3317 15.5175 C.3 1 CHGB 0.0000 + 8 C6 -9.1903 -3.7469 15.9677 C.3 1 CHGB 0.1382 + 9 C7 -8.2035 -4.4993 15.1162 C.2 1 CHGB -0.2882 + 10 C8 -8.2042 -4.5953 13.7714 C.2 1 CHGB -0.1238 + 11 C9 -7.1479 -5.3864 13.0530 C.2 1 CHGB 0.4946 + 12 C10 -6.2856 -6.3678 13.8043 C.3 1 CHGB 0.0610 + 13 H11 -9.5162 -1.9905 12.1914 H 1 CHGB 0.4500 + 14 H12 -8.2868 -2.0853 13.2794 H 1 CHGB 0.4500 + 15 H1 -8.9805 -4.0708 11.7953 H 1 CHGB 0.0000 + 16 H21 -10.7276 -5.2623 13.7345 H 1 CHGB 0.0000 + 17 H22 -11.1745 -4.5649 12.1880 H 1 CHGB 0.0000 + 18 H31 -11.8999 -3.4740 14.7106 H 1 CHGB 0.0000 + 19 H32 -12.0484 -2.7102 13.1324 H 1 CHGB 0.0000 + 20 H4 -10.5617 -1.1419 14.0132 H 1 CHGB 0.0000 + 21 H51 -10.2673 -1.9309 16.2651 H 1 CHGB 0.0000 + 22 H52 -8.6794 -1.6910 15.5663 H 1 CHGB 0.0000 + 23 H61 -10.0859 -4.3643 16.1036 H 1 CHGB 0.0000 + 24 H62 -8.7490 -3.6539 16.9693 H 1 CHGB 0.0000 + 25 H7 -7.4444 -5.0205 15.7012 H 1 CHGB 0.1500 + 26 H101 -5.7723 -7.0157 13.0872 H 1 CHGB 0.0000 + 27 H102 -5.5373 -5.8325 14.3939 H 1 CHGB 0.0000 + 28 H103 -6.9004 -7.0059 14.4445 H 1 CHGB 0.0000 +@BOND + 1 1 11 2 + 2 2 3 1 + 3 2 6 1 + 4 2 13 1 + 5 2 14 1 + 6 3 4 1 + 7 3 10 1 + 8 3 15 1 + 9 4 5 1 + 10 4 16 1 + 11 4 17 1 + 12 5 6 1 + 13 5 18 1 + 14 5 19 1 + 15 6 7 1 + 16 6 20 1 + 17 7 8 1 + 18 7 21 1 + 19 7 22 1 + 20 8 9 1 + 21 8 23 1 + 22 8 24 1 + 23 9 10 2 + 24 9 25 1 + 25 10 11 1 + 26 11 12 1 + 27 12 26 1 + 28 12 27 1 + 29 12 28 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT (1R)-2-ACETYL-9-AZABICYCLO(4.2.1)NON-2-ENE HYDROCHLORIDE (C +@MOLECULE +DMEOXA01 + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.5013 -3.6302 14.6547 C.2 1 UNCH 0.7200 + 2 C2 -7.8533 -2.6225 16.6555 C.3 1 UNCH 0.2800 + 3 O1 -7.9610 -2.7678 13.9836 O.2 1 UNCH -0.5700 + 4 O2 -8.5340 -3.6947 16.0057 O.3 1 UNCH -0.4300 + 5 H1 -7.9401 -2.7702 17.7355 H 1 UNCH 0.0000 + 6 H2 -8.3146 -1.6635 16.3992 H 1 UNCH 0.0000 + 7 H3 -6.7914 -2.6249 16.3901 H 1 UNCH 0.0000 + 8 C1B -9.2667 -4.8372 14.0553 C.2 1 UNCH 0.7200 + 9 O1B -9.8070 -5.6996 14.7264 O.2 1 UNCH -0.5700 + 10 O2B -9.2340 -4.7727 12.7043 O.3 1 UNCH -0.4300 + 11 C2B -9.9147 -5.8449 12.0545 C.3 1 UNCH 0.2800 + 12 H1B -9.8279 -5.6972 10.9745 H 1 UNCH 0.0000 + 13 H2B -9.4534 -6.8039 12.3108 H 1 UNCH 0.0000 + 14 H3B -10.9766 -5.8425 12.3199 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 4 1 + 3 1 8 1 + 4 2 4 1 + 5 2 5 1 + 6 2 6 1 + 7 2 7 1 + 8 8 9 2 + 9 8 10 1 + 10 10 11 1 + 11 11 12 1 + 12 11 13 1 + 13 11 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DIMETHYL OXALATE +@MOLECULE +DOCCIH + 16 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -6.9692 -7.2779 16.0763 S.2 1 DOCC -0.7500 + 2 S2 -5.3594 -4.7161 16.1552 S.3 1 DOCC -0.7500 + 3 C1 -6.7294 -5.6306 15.7499 C.2 1 DOCC 0.6790 + 4 C2 -7.8362 -4.9130 15.0334 C.2 1 DOCC -0.1790 + 5 C3 -8.8700 -4.2854 15.7494 C.2 1 DOCC -0.1500 + 6 C4 -7.8649 -4.8518 13.6295 C.2 1 DOCC -0.1500 + 7 H1 -8.8683 -4.3199 16.8356 H 1 DOCC 0.1500 + 8 H2 -7.0758 -5.3300 13.0553 H 1 DOCC 0.1500 + 9 C4B -9.9032 -3.6156 15.0805 C.2 1 DOCC -0.1500 + 10 C3B -8.8980 -4.1820 12.9607 C.2 1 DOCC -0.1500 + 11 C2B -9.9319 -3.5544 13.6767 C.2 1 DOCC -0.1790 + 12 H2B -10.6923 -3.1374 15.6548 H 1 DOCC 0.1500 + 13 H1B -8.8998 -4.1475 11.8745 H 1 DOCC 0.1500 + 14 C1B -11.0387 -2.8368 12.9601 C.2 1 DOCC 0.6790 + 15 S1B -10.7989 -1.1895 12.6337 S.2 1 DOCC -0.7500 + 16 S2B -12.4087 -3.7513 12.5549 S.3 1 DOCC -0.7500 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 6 1 + 5 4 5 2 + 6 5 9 1 + 7 5 7 1 + 8 6 10 2 + 9 6 8 1 + 10 9 12 1 + 11 9 11 2 + 12 10 13 1 + 13 10 11 1 + 14 11 14 1 + 15 14 16 1 + 16 14 15 2 +@SUBSTRUCTURE + 1 DOCC 1 +@COMMENT +COMMENT DIPOTASSIUM TETRATHIOTEREPHTHALATE DIHYDRATE (AT -130 DEG.C +@MOLECULE +DOCFIK + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S10 -9.3311 -5.0839 13.0024 S.3 1 UNCH 0.1400 + 2 N1 -10.3006 -4.2835 14.0865 N.2 1 UNCH -0.5200 + 3 C1 -11.5157 -3.9450 13.7722 C.2 1 UNCH 0.7440 + 4 CL1 -12.2533 -4.2739 12.2365 CL 1 UNCH -0.2090 + 5 S1 -11.7727 -2.8398 16.3069 S.3 1 UNCH 0.1807 + 6 N2 -13.2103 -2.1131 16.7562 N.2 1 UNCH -0.5095 + 7 C3 -14.0256 -2.2200 15.7046 C.2 1 UNCH 0.5350 + 8 N4 -13.5873 -2.8488 14.5428 N.2 1 UNCH -0.5653 + 9 C5 -12.3420 -3.2457 14.7389 C.2 1 UNCH 0.2931 + 10 C6 -15.3564 -1.6825 15.7801 C.1 1 UNCH 0.5381 + 11 N7 -16.4348 -1.2505 15.8325 N.1 1 UNCH -0.5571 + 12 N1_ -7.9957 -5.2043 13.9811 N.2 1 UNCH -0.5200 + 13 C1_ -6.9107 -5.7847 13.5617 C.2 1 UNCH 0.7440 + 14 CL1_ -6.7256 -6.4823 11.9838 CL 1 UNCH -0.2090 + 15 S1_ -5.7657 -5.2397 16.0323 S.3 1 UNCH 0.1807 + 16 N2_ -4.1931 -5.7155 16.3440 N.2 1 UNCH -0.5095 + 17 C3_ -3.7611 -6.3208 15.2354 C.2 1 UNCH 0.5350 + 18 N4_ -4.6012 -6.4388 14.1320 N.2 1 UNCH -0.5653 + 19 C5_ -5.7574 -5.8763 14.4379 C.2 1 UNCH 0.2931 + 20 C6_ -2.4251 -6.8487 15.1890 C.1 1 UNCH 0.5381 + 21 N7_ -1.3456 -7.2787 15.1428 N.1 1 UNCH -0.5571 +@BOND + 1 1 2 1 + 2 1 12 1 + 3 2 3 2 + 4 3 4 1 + 5 3 9 1 + 6 5 6 1 + 7 5 9 1 + 8 6 7 2 + 9 7 8 am + 10 7 10 1 + 11 8 9 2 + 12 10 11 3 + 13 12 13 2 + 14 13 14 1 + 15 13 19 1 + 16 15 16 1 + 17 15 19 1 + 18 16 17 2 + 19 17 18 am + 20 17 20 1 + 21 18 19 2 + 22 20 21 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-(5-(3-CYANO-1,2,4-THIADIAZOL-5-YL)-1,5-DICHLORO-2,4-DIAZA +@MOLECULE +DOCWUN + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.3800 -2.9899 15.5356 O.2 1 DOCW -0.5700 + 2 O2 -5.4872 -2.2628 15.1728 O.3 1 DOCW -0.3370 + 3 O3 -8.1167 -7.3530 14.6794 O.3 1 DOCW -0.3370 + 4 N1 -8.8464 -4.7463 14.1000 N.3 1 DOCW -0.2290 + 5 N2 -6.2632 -3.2309 14.5236 N.2 1 DOCW -0.5130 + 6 N3 -7.2538 -6.3260 15.0741 N.2 1 DOCW -0.5130 + 7 C1 -11.4152 -1.9211 13.9710 C.3 1 DOCW 0.1382 + 8 C2 -9.5598 -3.6038 14.4832 C.2 1 DOCW 0.6156 + 9 C3 -10.6786 -3.1621 13.5790 C.2 1 DOCW -0.1238 + 10 C4 -10.9736 -3.8901 12.4921 C.2 1 DOCW -0.1500 + 11 C5 -10.2186 -5.0667 12.1688 C.2 1 DOCW -0.1500 + 12 C6 -9.2015 -5.4448 12.9498 C.2 1 DOCW -0.0410 + 13 C7 -7.7161 -5.1298 14.8332 C.2 1 DOCW 0.5100 + 14 C8 -6.8752 -3.9926 15.3852 C.2 1 DOCW 0.3890 + 15 C9 -6.7738 -3.8960 16.8813 C.3 1 DOCW 0.0610 + 16 H1 -5.1145 -1.7564 14.4274 H 1 DOCW 0.4000 + 17 H2 -7.6444 -8.1514 14.9828 H 1 DOCW 0.4000 + 18 H3 -11.8889 -2.0474 14.9500 H 1 DOCW 0.0000 + 19 H4 -12.2025 -1.6715 13.2517 H 1 DOCW 0.0000 + 20 H5 -10.7303 -1.0683 14.0210 H 1 DOCW 0.0000 + 21 H6 -11.7786 -3.6052 11.8213 H 1 DOCW 0.1500 + 22 H7 -10.4675 -5.6171 11.2671 H 1 DOCW 0.1500 + 23 H8 -8.5915 -6.2990 12.6741 H 1 DOCW 0.1500 + 24 H9 -5.7940 -4.2619 17.1997 H 1 DOCW 0.0000 + 25 H10 -7.5512 -4.4985 17.3591 H 1 DOCW 0.0000 + 26 H11 -6.8966 -2.8583 17.2028 H 1 DOCW 0.0000 +@BOND + 1 1 8 2 + 2 2 16 1 + 3 2 5 1 + 4 3 17 1 + 5 3 6 1 + 6 4 13 am + 7 4 12 1 + 8 4 8 am + 9 5 14 2 + 10 6 13 2 + 11 7 20 1 + 12 7 19 1 + 13 7 18 1 + 14 7 9 1 + 15 8 9 1 + 16 9 10 2 + 17 10 21 1 + 18 10 11 1 + 19 11 22 1 + 20 11 12 2 + 21 12 23 1 + 22 13 14 1 + 23 14 15 1 + 24 15 26 1 + 25 15 25 1 + 26 15 24 1 +@SUBSTRUCTURE + 1 DOCW 1 +@COMMENT +COMMENT 1-(1,2-BIS(HYDROXYIMINO)PROPYL)-3-METHYL-2-PYRIDONE 2-AMINO +@MOLECULE +DODNOZ + 31 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.7859 -4.1945 14.8973 N.3 1 UNCH -0.4140 + 2 S1 -7.6960 -4.5719 13.7013 S.3 1 UNCH 1.3328 + 3 O1 -6.8172 -3.4355 13.4959 O.3 1 UNCH -0.6500 + 4 O2 -7.1269 -5.8746 13.9801 O.3 1 UNCH -0.6500 + 5 C1 -8.6272 -4.6953 12.1703 C.3 1 UNCH 0.1052 + 6 C2 -9.5981 -3.5533 11.9578 C.3 1 UNCH 0.0000 + 7 S2 -8.1989 -3.2999 16.1802 S.3 1 UNCH 1.3328 + 8 O3 -9.1659 -3.2709 17.2600 O.3 1 UNCH -0.6500 + 9 O4 -6.8555 -3.7422 16.4917 O.3 1 UNCH -0.6500 + 10 C3 -8.1165 -1.6198 15.5591 C.3 1 UNCH 0.1052 + 11 C4 -9.4590 -1.1024 15.0844 C.3 1 UNCH 0.0000 + 12 S3 -9.9843 -5.2981 15.2404 S.3 1 UNCH 1.3328 + 13 O5 -11.1286 -4.5787 15.7636 O.3 1 UNCH -0.6500 + 14 O6 -10.2055 -6.1388 14.0801 O.3 1 UNCH -0.6500 + 15 C7 -9.2914 -6.3456 16.5319 C.3 1 UNCH 0.1052 + 16 C8 -10.2390 -7.4807 16.8754 C.3 1 UNCH 0.0000 + 17 H11 -9.1198 -5.6656 12.1095 H 1 UNCH 0.0000 + 18 H12 -7.8757 -4.6828 11.3718 H 1 UNCH 0.0000 + 19 H21 -10.0652 -3.6346 10.9714 H 1 UNCH 0.0000 + 20 H22 -10.3962 -3.5581 12.7049 H 1 UNCH 0.0000 + 21 H23 -9.0888 -2.5861 12.0120 H 1 UNCH 0.0000 + 22 H31 -7.3633 -1.5490 14.7757 H 1 UNCH 0.0000 + 23 H32 -7.7646 -1.0092 16.3983 H 1 UNCH 0.0000 + 24 H41 -9.8462 -1.6949 14.2525 H 1 UNCH 0.0000 + 25 H42 -9.3668 -0.0654 14.7475 H 1 UNCH 0.0000 + 26 H43 -10.2017 -1.1319 15.8878 H 1 UNCH 0.0000 + 27 H71 -9.1104 -5.7454 17.4239 H 1 UNCH 0.0000 + 28 H72 -8.3448 -6.7493 16.1653 H 1 UNCH 0.0000 + 29 H81 -11.2028 -7.0964 17.2243 H 1 UNCH 0.0000 + 30 H82 -9.8126 -8.1051 17.6665 H 1 UNCH 0.0000 + 31 H83 -10.4273 -8.1166 16.0047 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 12 1 + 4 2 3 1 + 5 2 4 1 + 6 2 5 1 + 7 5 6 1 + 8 5 17 1 + 9 5 18 1 + 10 6 19 1 + 11 6 20 1 + 12 6 21 1 + 13 7 8 1 + 14 7 9 1 + 15 7 10 1 + 16 10 11 1 + 17 10 22 1 + 18 10 23 1 + 19 11 24 1 + 20 11 25 1 + 21 11 26 1 + 22 12 13 1 + 23 12 14 1 + 24 12 15 1 + 25 15 16 1 + 26 15 27 1 + 27 15 28 1 + 28 16 29 1 + 29 16 30 1 + 30 16 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRIS(ETHYLSULFONYL)-AMINE +@MOLECULE +DODNUF + 22 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.3253 -3.7397 15.1080 N.3 1 UNCH -0.6960 + 2 S1 -7.1081 -3.3333 14.0987 S.3 1 UNCH 1.3328 + 3 O11 -7.6245 -2.4271 13.0974 O.3 1 UNCH -0.6500 + 4 O12 -6.0207 -2.9160 14.9607 O.3 1 UNCH -0.6500 + 5 C11 -6.6163 -4.8626 13.3040 C.3 1 UNCH 0.1052 + 6 C12 -6.3471 -5.9830 14.2874 C.3 1 UNCH 0.0000 + 7 S2 -9.8298 -4.1751 14.6388 S.3 1 UNCH 1.3328 + 8 O21 -9.7285 -5.0167 13.4684 O.3 1 UNCH -0.6500 + 9 O22 -10.4676 -4.6674 15.8427 O.3 1 UNCH -0.6500 + 10 C21 -10.6059 -2.6210 14.1968 C.3 1 UNCH 0.1052 + 11 C22 -12.0830 -2.8097 13.9077 C.3 1 UNCH 0.0000 + 12 H1 -8.1121 -3.8029 16.0956 H 1 UNCH 0.4200 + 13 H111 -5.7052 -4.6315 12.7417 H 1 UNCH 0.0000 + 14 H112 -7.3869 -5.1414 12.5822 H 1 UNCH 0.0000 + 15 H121 -5.5831 -5.6952 15.0164 H 1 UNCH 0.0000 + 16 H122 -5.9937 -6.8733 13.7580 H 1 UNCH 0.0000 + 17 H123 -7.2507 -6.2577 14.8397 H 1 UNCH 0.0000 + 18 H211 -10.1063 -2.2260 13.3106 H 1 UNCH 0.0000 + 19 H212 -10.4692 -1.9332 15.0363 H 1 UNCH 0.0000 + 20 H221 -12.5411 -1.8556 13.6300 H 1 UNCH 0.0000 + 21 H222 -12.6108 -3.1989 14.7842 H 1 UNCH 0.0000 + 22 H223 -12.2355 -3.5157 13.0850 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 12 1 + 4 2 3 1 + 5 2 4 1 + 6 2 5 1 + 7 5 6 1 + 8 5 13 1 + 9 5 14 1 + 10 6 15 1 + 11 6 16 1 + 12 6 17 1 + 13 7 8 1 + 14 7 9 1 + 15 7 10 1 + 16 10 11 1 + 17 10 18 1 + 18 10 19 1 + 19 11 20 1 + 20 11 21 1 + 21 11 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(ETHYLSULFONYL)-AMINE +@MOLECULE +DOJPAT + 21 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.9056 -4.4764 14.3929 S.3 1 UNCH 1.0896 + 2 O1 -12.0201 -5.1197 15.0551 O.3 1 UNCH -0.6500 + 3 O2 -11.0866 -3.6160 13.2415 O.3 1 UNCH -0.6500 + 4 C1 -9.6809 -5.6996 13.9933 C.3 1 UNCH 0.1052 + 5 C2 -8.3348 -5.0341 14.2411 C.3 1 UNCH 0.0000 + 6 C3 -7.8353 -4.0969 13.1189 C.3 1 UNCH 0.1380 + 7 C4 -6.3488 -3.8222 13.1509 C.2 1 UNCH -0.2880 + 8 C5 -6.4785 -2.7578 13.9667 C.2 1 UNCH -0.2880 + 9 C6 -7.9829 -2.8850 14.0478 C.3 1 UNCH 0.1380 + 10 C7 -8.4849 -3.8019 15.1855 C.3 1 UNCH 0.0000 + 11 C8 -9.9361 -3.6042 15.5992 C.3 1 UNCH 0.1052 + 12 H11 -9.8144 -6.0373 12.9633 H 1 UNCH 0.0000 + 13 H12 -9.8270 -6.5395 14.6792 H 1 UNCH 0.0000 + 14 H2 -7.5835 -5.7647 14.5669 H 1 UNCH 0.0000 + 15 H3 -8.3665 -4.0633 12.1659 H 1 UNCH 0.0000 + 16 H4 -5.5006 -4.3076 12.6764 H 1 UNCH 0.1500 + 17 H5 -5.7750 -2.0544 14.4034 H 1 UNCH 0.1500 + 18 H6 -8.6103 -2.0624 13.6995 H 1 UNCH 0.0000 + 19 H7 -7.8206 -3.8179 16.0590 H 1 UNCH 0.0000 + 20 H81 -10.1273 -4.0742 16.5687 H 1 UNCH 0.0000 + 21 H82 -10.2386 -2.5554 15.6320 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 11 1 + 5 4 5 1 + 6 4 12 1 + 7 4 13 1 + 8 5 6 1 + 9 5 10 1 + 10 5 14 1 + 11 6 7 1 + 12 6 9 1 + 13 6 15 1 + 14 7 8 2 + 15 7 16 1 + 16 8 9 1 + 17 8 17 1 + 18 9 10 1 + 19 9 18 1 + 20 10 11 1 + 21 10 19 1 + 22 11 20 1 + 23 11 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 8-THIATRICYCLO(4.3.0.0-2,5-)NONADEC-3-ENE-8,8-DIOXIDE +@MOLECULE +DONFOB + 28 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -6.0824 -2.2909 13.8721 S.3 1 CHGB 1.5680 + 2 S2 -11.5200 -6.2731 13.4146 S.3 1 CHGB 1.5680 + 3 S3 -6.2397 -3.0375 15.8205 S.3 1 CHGB -0.3480 + 4 S4 -10.9981 -5.3509 15.2394 S.3 1 CHGB -0.3480 + 5 N1 -7.1111 -5.5299 14.0289 N.3 1 CHGB -0.9590 + 6 O1 -5.7527 -3.5362 13.1780 O.3 1 CHGB -0.8167 + 7 O2 -7.4260 -1.7964 13.6306 O.3 1 CHGB -0.8167 + 8 O3 -5.0150 -1.3136 13.9747 O.3 1 CHGB -0.8167 + 9 O4 -10.4677 -5.7810 12.5325 O.3 1 CHGB -0.8167 + 10 O5 -11.4036 -7.6857 13.7559 O.3 1 CHGB -0.8167 + 11 O6 -12.8617 -5.7755 13.1638 O.3 1 CHGB -0.8167 + 12 C1 -7.4760 -6.0904 12.6753 C.3 1 CHGB 0.5030 + 13 C2 -6.3272 -6.4778 14.8559 C.3 1 CHGB 0.5030 + 14 C3 -8.3011 -4.8190 14.6905 C.3 1 CHGB 0.5030 + 15 C4 -9.2656 -5.8711 15.2972 C.3 1 CHGB 0.2300 + 16 C5 -7.8929 -3.7961 15.7986 C.3 1 CHGB 0.2300 + 17 H1 -6.5492 -6.4126 12.1914 H 1 CHGB 0.0000 + 18 H2 -8.1408 -6.9454 12.8096 H 1 CHGB 0.0000 + 19 H3 -7.9334 -5.2971 12.0795 H 1 CHGB 0.0000 + 20 H4 -6.9050 -7.3951 14.9945 H 1 CHGB 0.0000 + 21 H5 -5.3939 -6.6966 14.3297 H 1 CHGB 0.0000 + 22 H6 -6.1062 -6.0209 15.8219 H 1 CHGB 0.0000 + 23 H7 -8.7754 -4.2556 13.8788 H 1 CHGB 0.0000 + 24 H8 -9.0154 -6.0744 16.3442 H 1 CHGB 0.0000 + 25 H9 -9.1795 -6.8376 14.7948 H 1 CHGB 0.0000 + 26 H10 -8.6331 -2.9872 15.8112 H 1 CHGB 0.0000 + 27 H11 -7.9726 -4.2713 16.7826 H 1 CHGB 0.0000 + 28 H12 -6.4569 -4.7612 13.7428 H 1 CHGB 0.4500 +@BOND + 1 1 3 1 + 2 1 6 1 + 3 1 7 1 + 4 1 8 1 + 5 2 4 1 + 6 2 9 1 + 7 2 10 1 + 8 2 11 1 + 9 3 16 1 + 10 4 15 1 + 11 5 12 1 + 12 5 13 1 + 13 5 14 1 + 14 5 28 1 + 15 12 17 1 + 16 12 18 1 + 17 12 19 1 + 18 13 20 1 + 19 13 21 1 + 20 13 22 1 + 21 14 15 1 + 22 14 16 1 + 23 14 23 1 + 24 15 24 1 + 25 15 25 1 + 26 16 26 1 + 27 16 27 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM N,N-DIMETHYLAMMONIUM-2-PROPANE-1,3-DITHIOSULFONATE M +@MOLECULE +DOSNOO + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.5380 -3.5722 14.6926 N.3 1 DOPD -0.6813 + 2 S2 -9.4863 -4.0361 15.9910 S.3 1 DOPD 1.3390 + 3 C3 -8.2312 -5.2937 15.9854 C.3 1 DOPD 0.0990 + 4 H31 -8.6086 -6.3012 16.1733 H 1 DOPD 0.0000 + 5 H32 -7.4043 -5.0637 16.6636 H 1 DOPD 0.0000 + 6 C4 -7.9839 -4.9389 14.5071 C.3 1 DOPD 0.3070 + 7 H41 -8.5623 -5.5441 13.7985 H 1 DOPD 0.0000 + 8 H42 -6.9324 -4.9455 14.2066 H 1 DOPD 0.0000 + 9 C5 -9.0196 -2.8489 13.6067 C.2 1 DOPD 0.8663 + 10 O6 -10.0824 -2.2501 13.5867 O.2 1 DOPD -0.5700 + 11 N7 -8.1637 -2.7861 12.5545 N.3 1 DOPD -0.8000 + 12 H71 -7.1834 -2.9339 12.7341 H 1 DOPD 0.3700 + 13 H72 -8.4114 -2.0958 11.8579 H 1 DOPD 0.3700 + 14 O8 -10.7484 -4.5942 15.5690 O.3 1 DOPD -0.6500 + 15 O9 -9.3098 -3.1340 17.1031 O.3 1 DOPD -0.6500 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 9 am + 4 2 3 1 + 5 2 14 1 + 6 2 15 1 + 7 3 4 1 + 8 3 5 1 + 9 3 6 1 + 10 6 7 1 + 11 6 8 1 + 12 9 10 2 + 13 9 11 am + 14 11 12 1 + 15 11 13 1 +@SUBSTRUCTURE + 1 DOPD 1 +@COMMENT +COMMENT 2-CARBAMOYL-1,2-THIAZETIDINE-1,1-DIOXIDE +@MOLECULE +DOTNIJ + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.4404 -6.9646 12.4226 S.2 1 UNCH -0.3800 + 2 N1 -8.8865 -4.2357 12.6311 N.3 1 UNCH -0.2370 + 3 C1 -9.0185 -5.4276 11.9066 C.2 1 UNCH 0.3800 + 4 C2 -8.8854 -4.2349 14.0658 C.2 1 UNCH 0.1170 + 5 C3 -7.9930 -5.0472 14.7805 C.2 1 UNCH -0.1500 + 6 C4 -7.9924 -5.0454 16.1778 C.2 1 UNCH -0.1500 + 7 C5 -8.8832 -4.2333 16.8755 C.2 1 UNCH -0.1500 + 8 H1 -8.8413 -5.2705 10.8282 H 1 UNCH 0.0600 + 9 H3 -7.2710 -5.6733 14.2624 H 1 UNCH 0.1500 + 10 H4 -7.2934 -5.6769 16.7204 H 1 UNCH 0.1500 + 11 H5 -8.8823 -4.2327 17.9626 H 1 UNCH 0.1500 + 12 C1C -8.7557 -3.0445 11.9050 C.2 1 UNCH 0.3800 + 13 C3C -9.7767 -3.4218 14.7810 C.2 1 UNCH -0.1500 + 14 C4C -9.7751 -3.4219 16.1783 C.2 1 UNCH -0.1500 + 15 S1C -8.3330 -1.5070 12.4187 S.2 1 UNCH -0.3800 + 16 H1C -8.9346 -3.2029 10.8271 H 1 UNCH 0.0600 + 17 H3C -10.4995 -2.7961 14.2633 H 1 UNCH 0.1500 + 18 H4C -10.4733 -2.7898 16.7213 H 1 UNCH 0.1500 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 2 4 1 + 4 2 12 1 + 5 3 8 1 + 6 4 5 2 + 7 4 13 1 + 8 5 6 1 + 9 5 9 1 + 10 6 7 2 + 11 6 10 1 + 12 7 11 1 + 13 7 14 1 + 14 12 15 2 + 15 12 16 1 + 16 13 14 2 + 17 13 17 1 + 18 14 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N-DITHIOFORMYLANILINE (AT -130 DEG.C) +@MOLECULE +DOTVEN + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.5760 -5.8117 14.3715 S.3 1 DOTV 1.6260 + 2 N2 -8.2023 -5.4386 13.5408 N.3 1 DOTV -0.7943 + 3 C3 -7.9735 -4.1475 13.0840 C.2 1 DOTV 0.7453 + 4 C4 -8.9809 -3.1077 13.4826 C.3 1 DOTV 0.1220 + 5 C5 -9.5936 -3.3512 14.8453 C.2 1 DOTV 0.4390 + 6 N6 -9.8845 -4.5283 15.3015 N.2 1 DOTV -0.6380 + 7 O11 -10.6181 -5.9248 13.3758 O.3 1 DOTV -0.6500 + 8 O12 -9.2301 -6.9378 15.2078 O.3 1 DOTV -0.6500 + 9 O7 -7.0216 -3.9083 12.3543 O.2 1 DOTV -0.5700 + 10 N8 -9.8845 -2.2593 15.6224 N.3 1 DOTV -0.8500 + 11 H1 -10.1108 -2.4699 16.5909 H 1 DOTV 0.4000 + 12 H3 -8.4907 -2.1284 13.4722 H 1 DOTV 0.0000 + 13 H4 -7.6329 -6.2128 13.2200 H 1 DOTV 0.4200 + 14 H5 -9.3722 -1.3943 15.4903 H 1 DOTV 0.4000 + 15 H2 -9.7849 -3.0977 12.7389 H 1 DOTV 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 13 1 + 6 2 3 am + 7 3 9 2 + 8 3 4 1 + 9 4 15 1 + 10 4 12 1 + 11 4 5 1 + 12 5 10 am + 13 5 6 2 + 14 10 14 1 + 15 10 11 1 +@SUBSTRUCTURE + 1 DOTV 1 +@COMMENT +COMMENT 5-AMINO-2H,4H-1,2,6-THIADIAZIN-3-ONE-1,1-DIOXIDE +@MOLECULE +DOTWOY + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 1.4544 1.5583 9.1804 CL 1 UNCH -0.2273 + 2 CL2 1.6262 2.7571 11.8467 CL 1 UNCH -0.2273 + 3 C1 0.4461 4.2033 9.6717 C.3 1 UNCH 0.0320 + 4 C2 1.3306 3.0459 10.1275 C.3 1 UNCH 0.4546 + 5 C3 1.9700 4.2643 9.5355 C.3 1 UNCH -0.2000 + 6 C4 -0.1693 5.0512 10.7303 C.2 1 UNCH 0.7200 + 7 C1_ -0.3653 4.1156 8.3763 C.2 1 UNCH -0.0320 + 8 C2_ -1.4060 3.1821 8.2236 C.2 1 UNCH -0.1500 + 9 C3_ -2.1644 3.1059 7.0479 C.2 1 UNCH -0.1500 + 10 C4_ -1.9069 3.9760 5.9926 C.2 1 UNCH 0.0825 + 11 C5_ -0.8926 4.9224 6.1300 C.2 1 UNCH -0.1500 + 12 C6_ -0.1369 4.9946 7.3045 C.2 1 UNCH -0.1500 + 13 C7_ -3.5965 3.0467 4.5930 C.3 1 UNCH 0.2800 + 14 C8_ -4.1689 3.2583 3.2029 C.3 1 UNCH 0.0000 + 15 O1 0.2078 6.1768 11.0132 O.2 1 UNCH -0.5700 + 16 O2 -1.2122 4.4697 11.3569 O.3 1 UNCH -0.6500 + 17 O4_ -2.5660 4.0120 4.7960 O.3 1 UNCH -0.3625 + 18 H2 -1.5084 5.1429 12.0048 H 1 UNCH 0.5000 + 19 H31 2.4162 4.1780 8.5515 H 1 UNCH 0.1000 + 20 H32 2.5139 4.9371 10.1899 H 1 UNCH 0.1000 + 21 H2_ -1.6373 2.4957 9.0376 H 1 UNCH 0.1500 + 22 H3_ -2.9478 2.3573 6.9961 H 1 UNCH 0.1500 + 23 H5_ -0.6889 5.6143 5.3159 H 1 UNCH 0.1500 + 24 H6_ 0.6374 5.7560 7.3793 H 1 UNCH 0.1500 + 25 H71 -3.1870 2.0321 4.6606 H 1 UNCH 0.0000 + 26 H72 -4.3942 3.1814 5.3325 H 1 UNCH 0.0000 + 27 H81 -4.9672 2.5400 2.9964 H 1 UNCH 0.0000 + 28 H82 -3.3879 3.1472 2.4434 H 1 UNCH 0.0000 + 29 H83 -4.5702 4.2721 3.1014 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 2 4 1 + 3 3 4 1 + 4 3 5 1 + 5 3 6 1 + 6 3 7 1 + 7 4 5 1 + 8 5 19 1 + 9 5 20 1 + 10 6 15 2 + 11 6 16 1 + 12 7 8 2 + 13 7 12 1 + 14 8 9 1 + 15 8 21 1 + 16 9 10 2 + 17 9 22 1 + 18 10 11 1 + 19 10 17 1 + 20 11 12 2 + 21 11 23 1 + 22 12 24 1 + 23 13 14 1 + 24 13 17 1 + 25 13 25 1 + 26 13 26 1 + 27 14 27 1 + 28 14 28 1 + 29 14 29 1 + 30 16 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (-)-2,2-DICHLORO-1-(4-ETHOXYPHENYL)-1-CYCLOPROPANE-CARBOXYL +@MOLECULE +DOWDEY + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.2513 -3.9545 12.4681 O.3 1 UNCH -0.3000 + 2 C1 -9.5337 -2.9463 12.9851 C.2 1 UNCH 0.6500 + 3 N1 -8.9537 -2.9481 14.1331 N.2 1 UNCH -0.6210 + 4 C2 -9.0474 -4.0782 14.9032 C.2 1 UNCH 0.2720 + 5 C3 -9.7301 -5.1620 14.4970 C.2 1 UNCH 0.0794 + 6 C4 -10.3790 -5.0900 13.1876 C.2 1 UNCH 0.7056 + 7 N2 -9.4937 -1.8815 12.1509 N.3 1 UNCH -0.8500 + 8 S1 -8.2515 -4.1053 16.4843 S.3 1 UNCH -0.3310 + 9 C5 -7.3052 -2.5665 16.4433 C.3 1 UNCH 0.2300 + 10 C6 -9.8717 -6.3640 15.2398 C.1 1 UNCH 0.4921 + 11 N3 -9.9836 -7.3436 15.8533 N.1 1 UNCH -0.5571 + 12 O2 -11.0323 -6.0296 12.7439 O.2 1 UNCH -0.5700 + 13 H1 -9.2429 -1.0075 12.5977 H 1 UNCH 0.4000 + 14 H2 -10.2515 -1.8143 11.4824 H 1 UNCH 0.4000 + 15 H3 -6.7300 -2.4777 17.3691 H 1 UNCH 0.0000 + 16 H4 -6.6046 -2.5633 15.6036 H 1 UNCH 0.0000 + 17 H5 -7.9710 -1.7020 16.3710 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 2 + 4 2 7 am + 5 3 4 1 + 6 4 5 2 + 7 4 8 1 + 8 5 6 1 + 9 5 10 1 + 10 6 12 2 + 11 7 13 1 + 12 7 14 1 + 13 8 9 1 + 14 9 15 1 + 15 9 16 1 + 16 9 17 1 + 17 10 11 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-AMINO-4-METHYLTHIO-6-OXO-6H-1,3-OXAZINE-5-CARBONITRILE +@MOLECULE +DOXXAP + 17 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.3630 -1.6799 13.8143 C.2 1 DOXX 0.9060 + 2 C2 -8.3821 -3.1672 14.2295 C.3 1 DOXX 0.3970 + 3 C3 -9.2878 -3.8215 13.1972 C.3 1 DOXX 0.0990 + 4 N1 -8.9667 -3.2975 15.6277 N.3 1 DOXX -0.8530 + 5 N2 -9.2937 -5.2604 13.4936 N.2 1 DOXX 0.7410 + 6 N3 -8.8512 -6.0191 12.5693 N.2 1 DOXX -0.2700 + 7 O1 -9.0397 -0.9886 14.6399 O.2 1 DOXX -0.9000 + 8 O2 -7.7173 -1.3891 12.7855 O.3 1 DOXX -0.9000 + 9 O3 -9.7207 -5.6179 14.6509 O.3 1 DOXX -0.6330 + 10 O4 -8.8940 -7.3550 13.0046 O.3 1 DOXX -0.3370 + 11 H1 -7.3789 -3.6031 14.2636 H 1 DOXX 0.0000 + 12 H2 -8.9306 -3.6701 12.1721 H 1 DOXX 0.0000 + 13 H3 -10.3244 -3.4701 13.2590 H 1 DOXX 0.0000 + 14 H4 -9.5668 -2.4462 15.7077 H 1 DOXX 0.4500 + 15 H5 -9.5059 -4.1688 15.7568 H 1 DOXX 0.4500 + 16 H6 -8.2476 -3.1790 16.3434 H 1 DOXX 0.4500 + 17 H7 -8.5836 -7.8441 12.2212 H 1 DOXX 0.4000 +@BOND + 1 1 8 1 + 2 1 7 2 + 3 1 2 1 + 4 2 11 1 + 5 2 4 1 + 6 2 3 1 + 7 3 13 1 + 8 3 12 1 + 9 3 5 1 + 10 4 16 1 + 11 4 15 1 + 12 4 14 1 + 13 5 9 1 + 14 5 6 2 + 15 6 10 1 + 16 10 17 1 +@SUBSTRUCTURE + 1 DOXX 1 +@COMMENT +COMMENT L-ALANOSINE (AT 138 DEG.K, ANTIVIRAL, ANTIMICROBIAL, ANTIBI +@MOLECULE +DOXZOF + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -11.3080 -2.5705 12.8477 O.3 1 DOXZ -0.3370 + 2 N1 -11.6141 -3.6821 13.6403 N.2 1 DOXZ -0.5130 + 3 C1 -10.5468 -4.1521 14.1792 C.2 1 DOXZ 0.3108 + 4 C2 -10.3125 -5.3429 15.1239 C.3 1 DOXZ 0.1610 + 5 C21 -8.8714 -4.8977 15.0309 C.2 1 DOXZ -0.1080 + 6 C3 -7.5813 -5.1373 15.4326 C.2 1 DOXZ -0.1500 + 7 C4 -6.5912 -4.2724 14.9440 C.2 1 DOXZ -0.1500 + 8 C5 -6.9133 -3.2020 14.0757 C.2 1 DOXZ -0.1500 + 9 C6 -8.2323 -2.9751 13.6788 C.2 1 DOXZ -0.1500 + 10 C61 -9.1562 -3.8482 14.1849 C.2 1 DOXZ 0.0862 + 11 H1 -12.1841 -2.3145 12.5041 H 1 DOXZ 0.4000 + 12 H2 -10.7988 -5.2408 16.0982 H 1 DOXZ 0.0000 + 13 H2_ -10.5583 -6.3142 14.6855 H 1 DOXZ 0.0000 + 14 H3 -7.3343 -5.9570 16.0975 H 1 DOXZ 0.1500 + 15 H4 -5.5539 -4.4251 15.2366 H 1 DOXZ 0.1500 + 16 H5 -6.1211 -2.5495 13.7148 H 1 DOXZ 0.1500 + 17 H6 -8.5105 -2.1659 13.0165 H 1 DOXZ 0.1500 +@BOND + 1 1 11 1 + 2 1 2 1 + 3 2 3 2 + 4 3 10 1 + 5 3 4 1 + 6 4 13 1 + 7 4 12 1 + 8 4 5 1 + 9 5 10 1 + 10 5 6 2 + 11 6 14 1 + 12 6 7 1 + 13 7 15 1 + 14 7 8 2 + 15 8 16 1 + 16 8 9 1 + 17 9 17 1 + 18 9 10 2 +@SUBSTRUCTURE + 1 DOXZ 1 +@COMMENT +COMMENT 2H-BENZOCYCLOBUTEN-1-ONE OXIME +@MOLECULE +DOZFON + 20 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 1.7772 -3.1159 3.3637 F 1 DOZF -0.3400 + 2 F2 1.8911 -3.9775 1.3355 F 1 DOZF -0.3400 + 3 O1 0.4038 -1.6630 0.4454 O.2 1 DOZF -0.5700 + 4 O2 4.0727 -2.6737 1.1658 O.3 1 DOZF -0.5200 + 5 O3 3.3481 -1.0670 2.4863 O.2 1 DOZF -0.5200 + 6 N1 0.4308 -0.9015 2.5921 N.3 1 DOZF -0.1830 + 7 N2 -0.3399 0.2227 2.1088 N.3 1 DOZF -0.7030 + 8 N3 3.2116 -2.1493 1.8815 N.2 1 DOZF 0.7998 + 9 C1 0.8505 -1.7912 1.5876 C.2 1 DOZF 0.5690 + 10 C2 1.8693 -2.8202 2.0368 C.3 1 DOZF 0.9812 + 11 C3 -1.6035 0.2824 2.9078 C.3 1 DOZF 0.5030 + 12 C4 0.5180 1.4509 2.1740 C.3 1 DOZF 0.5030 + 13 H2 -0.5793 0.0317 1.1096 H 1 DOZF 0.4500 + 14 H31 -2.2011 1.1122 2.5217 H 1 DOZF 0.0000 + 15 H32 -2.1414 -0.6600 2.7705 H 1 DOZF 0.0000 + 16 H33 -1.3516 0.4444 3.9598 H 1 DOZF 0.0000 + 17 H41 0.7979 1.6336 3.2154 H 1 DOZF 0.0000 + 18 H42 1.4006 1.2865 1.5497 H 1 DOZF 0.0000 + 19 H43 -0.0682 2.2846 1.7794 H 1 DOZF 0.0000 + 20 H1 0.9802 -0.7827 3.4517 H 1 DOZF 0.3700 +@BOND + 1 1 10 1 + 2 2 10 1 + 3 3 9 2 + 4 4 8 1 + 5 5 8 2 + 6 6 20 1 + 7 6 9 am + 8 6 7 1 + 9 7 13 1 + 10 7 12 1 + 11 7 11 1 + 12 8 10 1 + 13 9 10 1 + 14 11 16 1 + 15 11 15 1 + 16 11 14 1 + 17 12 19 1 + 18 12 18 1 + 19 12 17 1 +@SUBSTRUCTURE + 1 DOZF 1 +@COMMENT +COMMENT 1-DIFLUORONITROACETYL-2,2-DIMETHYLHYDRAZINE +@MOLECULE +DOZNIP + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.2537 -3.7309 18.2863 O.3 1 DOZN -0.5200 + 2 O2 -10.6238 -5.3475 17.6690 O.2 1 DOZN -0.5200 + 3 O3 -7.0207 -3.7908 11.0881 O.3 1 DOZN -0.5200 + 4 O4 -8.1822 -5.6346 11.4348 O.2 1 DOZN -0.5200 + 5 N1 -9.6381 -4.6157 17.5140 N.2 1 DOZN 1.0440 + 6 N2 -8.8041 -5.0096 16.5452 N.3 1 DOZN -0.5000 + 7 N3 -9.1960 -2.8587 15.3794 N.2 1 DOZN -0.6500 + 8 N4 -9.2745 -2.5459 14.0549 N.2 1 DOZN -0.6500 + 9 N5 -8.8105 -4.6775 14.2226 N.3 1 DOZN -0.9667 + 10 N6 -8.9844 -3.6519 11.9887 N.3 1 DOZN -0.5000 + 11 N7 -7.9824 -4.4197 11.5462 N.2 1 DOZN 1.0440 + 12 C1 -8.9449 -4.1786 15.4598 C.2 1 DOZN 0.7293 + 13 C2 -8.9967 -3.6687 13.3637 C.2 1 DOZN 0.7293 + 14 H1 -8.9391 -2.6898 11.6984 H 1 DOZN 0.4000 + 15 H2 -8.9286 -5.9543 16.2262 H 1 DOZN 0.4000 +@BOND + 1 1 5 1 + 2 2 5 2 + 3 3 11 1 + 4 4 11 2 + 5 5 6 1 + 6 6 15 1 + 7 6 12 am + 8 7 12 2 + 9 7 8 1 + 10 8 13 2 + 11 9 13 am + 12 9 12 am + 13 10 14 1 + 14 10 13 am + 15 10 11 1 +@SUBSTRUCTURE + 1 DOZN 1 +@COMMENT +COMMENT POTASSIUM 3,5-DINITRAMINO-1,2,4-TRIAZOLATE +@MOLECULE +DUBNET + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.0655 -5.0607 12.1318 O.2 1 UNCH -0.5700 + 2 O2 -7.8453 -2.0336 15.4601 O.2 1 UNCH -0.5700 + 3 N1 -9.7494 -4.0248 13.3769 N.3 1 UNCH -0.3601 + 4 N2 -7.6932 -3.1408 13.4090 N.3 1 UNCH -0.4201 + 5 N3 -9.6791 -3.0593 14.4385 N.3 1 UNCH -0.3601 + 6 C1 -10.5603 -5.1368 13.9117 C.3 1 UNCH 0.4383 + 7 C2 -9.7681 -5.7783 15.0351 C.2 1 UNCH -0.2882 + 8 C3 -9.7023 -4.8745 16.0289 C.2 1 UNCH -0.2882 + 9 C4 -10.4518 -3.6447 15.5523 C.3 1 UNCH 0.4383 + 10 C5 -11.5675 -4.3489 14.7642 C.3 1 UNCH 0.0000 + 11 C6 -8.4599 -4.1526 12.8487 C.2 1 UNCH 0.6900 + 12 C7 -8.3493 -2.6318 14.5209 C.2 1 UNCH 0.6900 + 13 C8 -6.2649 -3.0782 13.2576 C.3 1 UNCH 0.3001 + 14 H1 -10.9596 -5.8042 13.1485 H 1 UNCH 0.0000 + 15 H2 -9.3019 -6.7507 15.0012 H 1 UNCH 0.1500 + 16 H3 -9.1720 -4.9655 16.9641 H 1 UNCH 0.1500 + 17 H4 -10.7501 -2.9250 16.3141 H 1 UNCH 0.0000 + 18 H51 -12.1716 -3.6523 14.1706 H 1 UNCH 0.0000 + 19 H52 -12.2253 -4.9762 15.3782 H 1 UNCH 0.0000 + 20 H81 -5.8089 -3.8290 13.9103 H 1 UNCH 0.0000 + 21 H82 -5.9912 -3.2935 12.2212 H 1 UNCH 0.0000 + 22 H83 -5.9035 -2.0877 13.5470 H 1 UNCH 0.0000 +@BOND + 1 1 11 2 + 2 2 12 2 + 3 3 5 1 + 4 3 6 1 + 5 3 11 am + 6 4 11 am + 7 4 12 am + 8 4 13 1 + 9 5 9 1 + 10 5 12 am + 11 6 7 1 + 12 6 10 1 + 13 6 14 1 + 14 7 8 2 + 15 7 15 1 + 16 8 9 1 + 17 8 16 1 + 18 9 10 1 + 19 9 17 1 + 20 10 18 1 + 21 10 19 1 + 22 13 20 1 + 23 13 21 1 + 24 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,8-DIHYDRO-2-METHYL-5,8-METHANO-1H-(1,2,4)TRIAZOLO(1,2-A)P +@MOLECULE +DUDMUK + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -1.7951 0.5043 9.4126 N.3 1 DUDM -0.4870 + 2 N2 -1.9618 0.6279 8.0621 N.2 1 DUDM -0.5030 + 3 C3 -2.6764 1.6455 7.6787 C.2 1 DUDM 0.6000 + 4 N4 -3.2441 2.6040 8.4909 N.2 1 DUDM -0.2110 + 5 N5 -2.8806 2.6807 9.6875 N.2 1 DUDM -0.2460 + 6 C6 -1.8423 1.7515 10.1918 C.3 1 DUDM 0.5160 + 7 C7 -0.7003 -0.3731 9.8110 C.3 1 DUDM 0.5500 + 8 C8 -2.9421 1.8434 6.2123 C.3 1 DUDM 0.0610 + 9 C9 -2.1778 1.5192 11.6679 C.3 1 DUDM 0.0000 + 10 O10 0.5172 0.1118 9.2772 O.3 1 DUDM -0.6800 + 11 H71 -0.5969 -0.4978 10.8914 H 1 DUDM 0.0000 + 12 H72 -0.8685 -1.3761 9.4021 H 1 DUDM 0.0000 + 13 H81 -2.5494 2.8151 5.8995 H 1 DUDM 0.0000 + 14 H82 -2.4632 1.0569 5.6228 H 1 DUDM 0.0000 + 15 H83 -4.0206 1.8203 6.0318 H 1 DUDM 0.0000 + 16 H91 -1.3786 0.9944 12.1985 H 1 DUDM 0.0000 + 17 H92 -2.3305 2.4754 12.1820 H 1 DUDM 0.0000 + 18 H93 -3.1032 0.9421 11.7771 H 1 DUDM 0.0000 + 19 H10 0.2421 0.3862 8.3822 H 1 DUDM 0.4000 + 20 H1 -0.8817 2.2776 10.1208 H 1 DUDM 0.0000 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 1 + 4 2 3 2 + 5 3 8 1 + 6 3 4 am + 7 4 5 2 + 8 5 6 1 + 9 6 20 1 + 10 6 9 1 + 11 7 12 1 + 12 7 11 1 + 13 7 10 1 + 14 8 15 1 + 15 8 14 1 + 16 8 13 1 + 17 9 18 1 + 18 9 17 1 + 19 9 16 1 + 20 10 19 1 +@SUBSTRUCTURE + 1 DUDM 1 +@COMMENT +COMMENT 1-HYDROXYMETHYL-3,6-DIMETHYL-1,6-DIHYDRO-1,2,4,5-TETRAZINE +@MOLECULE +DUGMUN + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.9699 1.9209 9.7283 O.3 1 DUGM -0.3370 + 2 N1 0.7055 2.0083 9.1299 N.2 1 DUGM -0.5130 + 3 N2 0.7594 -0.8600 11.0566 N.1 1 DUGM -0.5571 + 4 C1 -0.0836 1.0204 9.4482 C.2 1 DUGM 0.4688 + 5 C2 0.4160 -0.0070 10.3437 C.1 1 DUGM 0.4521 + 6 C3 -1.4703 0.9123 8.9272 C.2 1 DUGM 0.0862 + 7 C4 -1.9479 1.9085 8.0619 C.2 1 DUGM -0.1500 + 8 C5 -3.2463 1.8405 7.5520 C.2 1 DUGM -0.1500 + 9 C6 -4.0776 0.7787 7.9014 C.2 1 DUGM -0.1500 + 10 C7 -3.6135 -0.2161 8.7600 C.2 1 DUGM -0.1500 + 11 C8 -2.3148 -0.1530 9.2733 C.2 1 DUGM -0.1500 + 12 H1 2.4248 2.7175 9.3941 H 1 DUGM 0.4000 + 13 H4 -1.3150 2.7466 7.7762 H 1 DUGM 0.1500 + 14 H5 -3.6080 2.6170 6.8820 H 1 DUGM 0.1500 + 15 H6 -5.0887 0.7261 7.5041 H 1 DUGM 0.1500 + 16 H7 -4.2646 -1.0444 9.0314 H 1 DUGM 0.1500 + 17 H8 -1.9920 -0.9497 9.9400 H 1 DUGM 0.1500 +@BOND + 1 1 2 1 + 2 1 12 1 + 3 2 4 2 + 4 3 5 3 + 5 4 5 1 + 6 4 6 1 + 7 6 7 2 + 8 6 11 1 + 9 7 8 1 + 10 7 13 1 + 11 8 9 2 + 12 8 14 1 + 13 9 10 1 + 14 9 15 1 + 15 10 11 2 + 16 10 16 1 + 17 11 17 1 +@SUBSTRUCTURE + 1 DUGM 1 +@COMMENT +COMMENT HYDROXY-IMINO-PHENYL-ACETONITRILE (AT -60 DEG.C) +@MOLECULE +DUGWIL01 + 19 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.8688 0.1869 9.8981 S.3 1 UNCH 1.3328 + 2 S2 -0.7420 1.3169 7.2350 S.3 1 UNCH 1.3328 + 3 O1 0.4486 -0.3400 9.6168 O.3 1 UNCH -0.6500 + 4 O2 -1.8035 -0.6103 10.6688 O.3 1 UNCH -0.6500 + 5 O3 -0.0179 2.4421 7.7859 O.3 1 UNCH -0.6500 + 6 O4 -1.6515 1.5288 6.1239 O.3 1 UNCH -0.6500 + 7 N1 -1.6202 0.5981 8.4628 N.3 1 UNCH -0.6317 + 8 C1 -0.6771 1.7428 10.7515 C.3 1 UNCH 0.1052 + 9 C2 0.4144 0.0640 6.7097 C.3 1 UNCH 0.1052 + 10 C3 -3.0145 1.0619 8.5635 C.3 1 UNCH 0.3557 + 11 H1 -0.3241 1.5193 11.7615 H 1 UNCH 0.0000 + 12 H2 0.0637 2.3599 10.2461 H 1 UNCH 0.0000 + 13 H3 -1.6435 2.2452 10.8112 H 1 UNCH 0.0000 + 14 H4 0.7817 0.3521 5.7212 H 1 UNCH 0.0000 + 15 H5 1.2590 0.0160 7.3946 H 1 UNCH 0.0000 + 16 H6 -0.1060 -0.8924 6.6357 H 1 UNCH 0.0000 + 17 H7 -3.5341 0.6246 9.4205 H 1 UNCH 0.0000 + 18 H8 -3.0581 2.1509 8.6610 H 1 UNCH 0.0000 + 19 H9 -3.5778 0.7484 7.6789 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 7 1 + 4 1 8 1 + 5 2 5 1 + 6 2 6 1 + 7 2 7 1 + 8 2 9 1 + 9 7 10 1 + 10 8 11 1 + 11 8 12 1 + 12 8 13 1 + 13 9 14 1 + 14 9 15 1 + 15 9 16 1 + 16 10 17 1 + 17 10 18 1 + 18 10 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-METHYLDIMESYLAMINE (AT -95 DEG.C) +@MOLECULE +DUJHEV + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -2.0806 3.5126 8.7379 S.3 1 UNCH 1.3340 + 2 O1 -1.9680 4.2601 9.9759 O.3 1 UNCH -0.6500 + 3 O2 -2.8197 4.0734 7.6228 O.3 1 UNCH -0.6500 + 4 C1 -0.0778 1.8757 8.1429 C.2 1 UNCH -0.0410 + 5 C2 -0.5013 3.1405 8.1958 C.2 1 UNCH -0.1670 + 6 C3 -2.7687 1.9877 9.1080 C.2 1 UNCH -0.1670 + 7 C4 -2.0728 0.8588 8.9458 C.2 1 UNCH -0.0410 + 8 N1 -0.7712 0.7198 8.4857 N.3 1 UNCH -0.2780 + 9 C5 -0.1099 -0.5206 8.3448 C.2 1 UNCH 0.5690 + 10 C6 -0.8752 -1.7681 8.7208 C.3 1 UNCH 0.0610 + 11 O3 1.0493 -0.6260 7.9335 O.2 1 UNCH -0.5700 + 12 H1 0.9402 1.7097 7.7876 H 1 UNCH 0.1500 + 13 H2 0.1279 3.9680 7.9024 H 1 UNCH 0.1500 + 14 H3 -3.7845 1.9891 9.4756 H 1 UNCH 0.1500 + 15 H4 -2.5923 -0.0587 9.2066 H 1 UNCH 0.1500 + 16 H61 -1.7607 -1.8768 8.0891 H 1 UNCH 0.0000 + 17 H62 -0.2377 -2.6433 8.5595 H 1 UNCH 0.0000 + 18 H63 -1.1491 -1.7427 9.7787 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 5 1 + 4 1 6 1 + 5 4 5 2 + 6 4 8 1 + 7 4 12 1 + 8 5 13 1 + 9 6 7 2 + 10 6 14 1 + 11 7 8 1 + 12 7 15 1 + 13 8 9 am + 14 9 10 1 + 15 9 11 2 + 16 10 16 1 + 17 10 17 1 + 18 10 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-ACETYL-1,4-DIHYDRO-4,4-DIOXO-4-THIA-PYRIDINE +@MOLECULE +DUJMEA + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.8143 0.4830 7.9455 C.3 1 UNCH 0.7300 + 2 O1 -1.4151 -0.6340 7.1083 O.3 1 UNCH -0.5600 + 3 C2 0.0019 -0.8248 7.0189 C.3 1 UNCH 0.2800 + 4 C3 0.7737 0.4322 6.6028 C.3 1 UNCH 0.2700 + 5 N1 0.5249 1.5251 7.5508 N.3 1 UNCH -0.8100 + 6 C100 1.2961 2.7148 7.2100 C.3 1 UNCH 0.2700 + 7 C4 -0.9333 1.8023 7.5716 C.3 1 UNCH 0.5500 + 8 O2 -1.3162 2.3619 6.2940 O.3 1 UNCH -0.5600 + 9 C5 -2.7139 2.6321 6.2555 C.3 1 UNCH 0.2800 + 10 C6 -3.5131 1.3416 6.4247 C.3 1 UNCH 0.2700 + 11 N2 -3.2778 0.7418 7.7467 N.3 1 UNCH -0.8100 + 12 C200 -4.1017 -0.4580 7.8971 C.3 1 UNCH 0.2700 + 13 C7 -1.5796 0.1043 9.4047 C.2 1 UNCH -0.0400 + 14 C8 -1.4161 -1.1007 10.0689 C.2 1 UNCH -0.1500 + 15 O3 -1.5611 1.1247 10.3208 O.3 1 UNCH -0.2800 + 16 C9 -1.3613 0.5698 11.5420 C.2 1 UNCH -0.0100 + 17 C10 -1.2655 -0.7968 11.4420 C.2 1 UNCH -0.1500 + 18 H4 -1.1246 2.5757 8.3282 H 1 UNCH 0.0000 + 19 H8 -1.4134 -2.0770 9.6047 H 1 UNCH 0.1500 + 20 H9 -1.3160 1.2654 12.3681 H 1 UNCH 0.1500 + 21 H10 -1.1144 -1.4874 12.2592 H 1 UNCH 0.1500 + 22 H21 0.3863 -1.2149 7.9672 H 1 UNCH 0.0000 + 23 H22 0.1683 -1.6091 6.2725 H 1 UNCH 0.0000 + 24 H31 1.8429 0.1897 6.5846 H 1 UNCH 0.0000 + 25 H32 0.4839 0.7186 5.5839 H 1 UNCH 0.0000 + 26 H11 2.3684 2.5039 7.2901 H 1 UNCH 0.0000 + 27 H12 1.1011 3.0776 6.1947 H 1 UNCH 0.0000 + 28 H13 1.0844 3.5269 7.9143 H 1 UNCH 0.0000 + 29 H51 -2.9356 3.0759 5.2796 H 1 UNCH 0.0000 + 30 H52 -2.9715 3.3742 7.0208 H 1 UNCH 0.0000 + 31 H61 -3.2420 0.6365 5.6283 H 1 UNCH 0.0000 + 32 H62 -4.5768 1.5826 6.3119 H 1 UNCH 0.0000 + 33 H21_ -3.8537 -1.2399 7.1708 H 1 UNCH 0.0000 + 34 H22_ -5.1604 -0.2057 7.7632 H 1 UNCH 0.0000 + 35 H23_ -4.0272 -0.8802 8.9035 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 11 1 + 4 1 13 1 + 5 2 3 1 + 6 3 4 1 + 7 3 22 1 + 8 3 23 1 + 9 4 5 1 + 10 4 24 1 + 11 4 25 1 + 12 5 6 1 + 13 5 7 1 + 14 6 26 1 + 15 6 27 1 + 16 6 28 1 + 17 7 8 1 + 18 7 18 1 + 19 8 9 1 + 20 9 10 1 + 21 9 29 1 + 22 9 30 1 + 23 10 11 1 + 24 10 31 1 + 25 10 32 1 + 26 11 12 1 + 27 12 33 1 + 28 12 34 1 + 29 12 35 1 + 30 13 14 2 + 31 13 15 1 + 32 14 17 1 + 33 14 19 1 + 34 15 16 1 + 35 16 17 2 + 36 16 20 1 + 37 17 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 10-(2-FURYL)-4,8-DIMETHYL-4,8-DIAZA-1,5-DIOXADECALIN +@MOLECULE +DUKVAG + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.9421 1.4984 9.4371 S.3 1 DUKV -0.1330 + 2 N1 -1.9855 -0.4054 8.1713 N.2 1 DUKV -0.3970 + 3 N2 -2.3867 0.7023 7.4467 N.2 1 DUKV -0.2911 + 4 N3 -0.7314 -1.1153 10.0457 N.3 1 DUKV -0.7320 + 5 N4 -2.0663 3.0304 7.5500 N.3 1 DUKV -0.8840 + 6 C1 -1.2177 -0.1908 9.2410 C.2 1 DUKV 0.8250 + 7 C2 -1.8883 1.7837 8.0094 C.2 1 DUKV 0.4621 + 8 H1 -2.2547 -1.3507 7.9051 H 1 DUKV 0.4500 + 9 H31 -0.1597 -0.7971 10.8188 H 1 DUKV 0.4500 + 10 H32 -0.9189 -2.0941 9.8868 H 1 DUKV 0.4500 + 11 H41 -1.8690 3.8362 8.1356 H 1 DUKV 0.4000 + 12 H42 -2.7751 3.1997 6.8410 H 1 DUKV 0.4000 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 2 8 1 + 4 2 6 2 + 5 2 3 1 + 6 3 7 2 + 7 4 10 1 + 8 4 9 1 + 9 4 6 am + 10 5 12 1 + 11 5 11 1 + 12 5 7 am +@SUBSTRUCTURE + 1 DUKV 1 +@COMMENT +COMMENT 2,5-DIAMINO-3H-1,3,4-THIADIAZOLINIUM CHLORIDE MONOHYDRATE +@MOLECULE +DUKWUB + 28 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.1781 0.5209 5.9445 S.3 1 DUKV 1.3785 + 2 O51 0.6545 -0.2137 10.2025 O.3 1 DUKV -0.6800 + 3 O1 1.6020 -1.4519 8.4761 O.3 1 DUKV -0.5600 + 4 O11 2.4844 1.8743 6.3503 O.3 1 DUKV -0.6500 + 5 O12 2.8932 0.3390 4.5072 O.3 1 DUKV -0.6837 + 6 O13 0.8220 0.0397 5.8226 O.3 1 DUKV -0.6500 + 7 O21 5.0742 -0.3738 9.1091 O.3 1 DUKV -0.6800 + 8 O31 4.4762 -1.8179 11.4701 O.3 1 DUKV -0.6800 + 9 N1 1.7148 -2.0348 12.2183 N.3 1 DUKV -0.9900 + 10 C1 2.7730 -0.6324 8.3308 C.3 1 DUKV 0.2800 + 11 C2 3.9024 -1.1853 9.2100 C.3 1 DUKV 0.2800 + 12 C3 3.4386 -1.2294 10.6684 C.3 1 DUKV 0.2800 + 13 C4 2.1446 -2.0493 10.7973 C.3 1 DUKV 0.2700 + 14 C5 1.0903 -1.5032 9.8015 C.3 1 DUKV 0.5600 + 15 C11 3.1825 -0.6349 6.8623 C.3 1 DUKV 0.1052 + 16 H11 1.3792 -1.0853 12.4192 H 1 DUKV 0.3600 + 17 H12 0.8814 -2.6178 12.3141 H 1 DUKV 0.3600 + 18 H112 4.2164 -0.3042 6.7237 H 1 DUKV 0.0000 + 19 H111 3.0419 -1.6189 6.4039 H 1 DUKV 0.0000 + 20 H1 2.5419 0.3954 8.6390 H 1 DUKV 0.0000 + 21 H4 2.3746 -3.0903 10.5365 H 1 DUKV 0.0000 + 22 H2 4.1810 -2.1964 8.8869 H 1 DUKV 0.0000 + 23 H3 3.3031 -0.2071 11.0448 H 1 DUKV 0.0000 + 24 H5 0.2191 -2.1677 9.8023 H 1 DUKV 0.0000 + 25 H21 5.6359 -0.6453 9.8652 H 1 DUKV 0.4000 + 26 H31 4.0256 -2.0527 12.3092 H 1 DUKV 0.4000 + 27 H51 -0.1183 -0.0232 9.6404 H 1 DUKV 0.4000 + 28 H120 3.2271 1.2182 4.2254 H 1 DUKV 0.5000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 1 6 1 + 4 1 15 1 + 5 2 14 1 + 6 2 27 1 + 7 3 10 1 + 8 3 14 1 + 9 5 28 1 + 10 7 11 1 + 11 7 25 1 + 12 8 12 1 + 13 8 26 1 + 14 9 13 1 + 15 9 16 1 + 16 9 17 1 + 17 10 11 1 + 18 10 15 1 + 19 10 20 1 + 20 11 12 1 + 21 11 22 1 + 22 12 13 1 + 23 12 23 1 + 24 13 14 1 + 25 13 21 1 + 26 14 24 1 + 27 15 18 1 + 28 15 19 1 +@SUBSTRUCTURE + 1 DUKV 1 +@COMMENT +COMMENT 2-AMINO-2,6-DIDEOXY-ALPHA-D-GLUCOPYRANOSE-6-SULFONIC ACID +@MOLECULE +DULTIN + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -2.7445 0.7339 5.6239 BR 1 DUKZ -0.2300 + 2 C1 -1.1172 1.0443 8.0047 C.3 1 DUKZ 0.2579 + 3 C2 -1.9940 0.0298 7.2896 C.3 1 DUKZ 0.2300 + 4 C3 -3.1199 -0.2319 8.2822 C.3 1 DUKZ 0.2700 + 5 N1 -3.3475 1.0463 8.9959 N.3 1 DUKZ -0.7496 + 6 C5 -3.5196 0.8413 10.4405 C.3 1 DUKZ 0.2700 + 7 C6 -2.1254 0.6207 11.0182 C.3 1 DUKZ 0.0000 + 8 C7 -1.2119 1.3649 10.0659 C.3 1 DUKZ 0.2579 + 9 C8 -2.0825 1.8278 8.8958 C.3 1 DUKZ 0.2096 + 10 C9 -0.0852 1.7899 7.1672 C.3 1 DUKZ 0.2800 + 11 O1 -0.4639 0.4592 9.1926 O.3 1 DUKZ -0.5158 + 12 O2 0.8449 2.4715 8.0144 O.3 1 DUKZ -0.6800 + 13 H2 -1.4550 -0.8823 7.0173 H 1 DUKZ 0.0000 + 14 H3 -2.8006 -1.0286 8.9665 H 1 DUKZ 0.0000 + 15 H31 -4.0473 -0.5735 7.8103 H 1 DUKZ 0.0000 + 16 H5 -4.2076 0.0234 10.6809 H 1 DUKZ 0.0000 + 17 H51 -3.9509 1.7553 10.8681 H 1 DUKZ 0.0000 + 18 H6 -1.8745 -0.4448 11.0628 H 1 DUKZ 0.0000 + 19 H61 -2.0615 1.0254 12.0334 H 1 DUKZ 0.0000 + 20 H7 -0.5545 2.1187 10.5090 H 1 DUKZ 0.0000 + 21 H8 -2.1838 2.9042 8.7450 H 1 DUKZ 0.0000 + 22 H9 0.4885 1.0981 6.5419 H 1 DUKZ 0.0000 + 23 H91 -0.5480 2.5410 6.5211 H 1 DUKZ 0.0000 + 24 H21 1.1777 1.7953 8.6365 H 1 DUKZ 0.4000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 2 9 1 + 4 2 10 1 + 5 2 11 1 + 6 3 4 1 + 7 3 13 1 + 8 4 5 1 + 9 4 14 1 + 10 4 15 1 + 11 5 6 1 + 12 5 9 1 + 13 6 7 1 + 14 6 16 1 + 15 6 17 1 + 16 7 8 1 + 17 7 18 1 + 18 7 19 1 + 19 8 9 1 + 20 8 11 1 + 21 8 20 1 + 22 9 21 1 + 23 10 12 1 + 24 10 22 1 + 25 10 23 1 + 26 12 24 1 +@SUBSTRUCTURE + 1 DUKZ 1 +@COMMENT +COMMENT 2ALPHA-BROMO-1BETA,7BETA-EPOXY-TRACHELANTHAMIDINE +@MOLECULE +DUMHIC + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 8.6734 9.3292 1.1883 O.3 1 DULY -0.5600 + 2 C2 9.3325 9.3127 -0.0804 C.3 1 DULY 0.2800 + 3 C3 10.1166 8.0330 -0.3387 C.3 1 DULY 0.2800 + 4 O3 9.2451 6.9526 -0.6780 O.3 1 DULY -0.4300 + 5 C34 9.8973 5.8342 -0.2785 C.2 1 DULY 0.6800 + 6 S1 9.4310 4.3188 -0.6879 S.2 1 DULY -0.3800 + 7 C4 10.8672 7.4863 0.8527 C.3 1 DULY 0.2800 + 8 O4 10.9674 6.0968 0.5120 O.3 1 DULY -0.4300 + 9 C5 10.1122 7.6527 2.1825 C.3 1 DULY 0.2800 + 10 O5 10.9420 7.3925 3.3304 O.3 1 DULY -0.5600 + 11 C51 11.3139 6.0295 3.4826 C.3 1 DULY 0.2800 + 12 C6 9.5741 9.0941 2.2729 C.3 1 DULY 0.5600 + 13 O6 10.6534 10.0345 2.2606 O.3 1 DULY -0.5600 + 14 C61 10.2445 11.3095 2.7392 C.3 1 DULY 0.2800 + 15 H21 8.5541 9.4347 -0.8411 H 1 DULY 0.0000 + 16 H22 9.9918 10.1855 -0.1464 H 1 DULY 0.0000 + 17 H3 10.7789 8.1789 -1.2015 H 1 DULY 0.0000 + 18 H4 11.8767 7.9059 0.9229 H 1 DULY 0.0000 + 19 H5 9.2567 6.9648 2.2193 H 1 DULY 0.0000 + 20 H511 12.0826 5.7575 2.7552 H 1 DULY 0.0000 + 21 H512 10.4458 5.3697 3.3925 H 1 DULY 0.0000 + 22 H513 11.7406 5.9049 4.4818 H 1 DULY 0.0000 + 23 H6 9.0178 9.1946 3.2132 H 1 DULY 0.0000 + 24 H611 9.9289 11.2430 3.7848 H 1 DULY 0.0000 + 25 H612 9.4350 11.7152 2.1251 H 1 DULY 0.0000 + 26 H613 11.0998 11.9878 2.6784 H 1 DULY 0.0000 +@BOND + 1 1 2 1 + 2 1 12 1 + 3 2 3 1 + 4 2 15 1 + 5 2 16 1 + 6 3 4 1 + 7 3 7 1 + 8 3 17 1 + 9 4 5 1 + 10 5 6 2 + 11 5 8 1 + 12 7 8 1 + 13 7 9 1 + 14 7 18 1 + 15 9 10 1 + 16 9 12 1 + 17 9 19 1 + 18 10 11 1 + 19 11 20 1 + 20 11 21 1 + 21 11 22 1 + 22 12 13 1 + 23 12 23 1 + 24 13 14 1 + 25 14 24 1 + 26 14 25 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 DULY 1 +@COMMENT +COMMENT METHYL 2-O-METHYL-3,4-O-THIOCARBONYL-BETA-L-ARABINOSIDE +@MOLECULE +DUMPAC + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.8901 1.2914 3.4350 O.3 1 UNCH -0.5158 + 2 C2 3.5194 2.3018 2.4613 C.3 1 UNCH 0.2579 + 3 C3 3.4983 3.3905 3.5719 C.3 1 UNCH 0.0000 + 4 C4 4.3385 2.3351 4.3422 C.3 1 UNCH 0.2579 + 5 C5 4.1222 4.7450 3.1924 C.3 1 UNCH 0.2700 + 6 C6 2.0459 3.5336 4.1031 C.3 1 UNCH 0.2700 + 7 N7 5.4617 4.6334 2.5929 N.3 1 UNCH -0.5330 + 8 C8 6.5162 5.1033 3.4875 C.3 1 UNCH 0.2700 + 9 N9 5.5700 5.0317 1.2747 N.2 1 UNCH 1.0330 + 10 O10 4.5887 4.8150 0.5581 O.3 1 UNCH -0.5200 + 11 O11 6.6402 5.5325 0.9236 O.2 1 UNCH -0.5200 + 12 N12 1.8295 4.6049 5.1036 N.3 1 UNCH -0.5330 + 13 C13 0.4050 4.9564 5.1425 C.3 1 UNCH 0.2700 + 14 N14 2.3615 4.3164 6.3445 N.2 1 UNCH 1.0330 + 15 O15 1.5791 4.0459 7.2571 O.3 1 UNCH -0.5200 + 16 O16 3.5903 4.3841 6.4122 O.2 1 UNCH -0.5200 + 17 H21 4.2873 2.3731 1.6859 H 1 UNCH 0.0000 + 18 H22 2.5622 2.0719 1.9834 H 1 UNCH 0.0000 + 19 H41 4.0381 2.1087 5.3678 H 1 UNCH 0.0000 + 20 H42 5.4271 2.4355 4.3042 H 1 UNCH 0.0000 + 21 H51 3.4233 5.2855 2.5389 H 1 UNCH 0.0000 + 22 H52 4.1833 5.3850 4.0813 H 1 UNCH 0.0000 + 23 H61 1.6713 2.5741 4.4879 H 1 UNCH 0.0000 + 24 H62 1.4238 3.7665 3.2268 H 1 UNCH 0.0000 + 25 H81 6.5081 6.1950 3.5879 H 1 UNCH 0.0000 + 26 H82 6.4012 4.6728 4.4890 H 1 UNCH 0.0000 + 27 H83 7.5078 4.7889 3.1412 H 1 UNCH 0.0000 + 28 H131 -0.2321 4.1072 5.4179 H 1 UNCH 0.0000 + 29 H132 0.0757 5.3231 4.1631 H 1 UNCH 0.0000 + 30 H133 0.2210 5.7774 5.8463 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 2 3 1 + 4 2 17 1 + 5 2 18 1 + 6 3 4 1 + 7 3 5 1 + 8 3 6 1 + 9 4 19 1 + 10 4 20 1 + 11 5 7 1 + 12 5 21 1 + 13 5 22 1 + 14 6 12 1 + 15 6 23 1 + 16 6 24 1 + 17 7 8 1 + 18 7 9 1 + 19 8 25 1 + 20 8 26 1 + 21 8 27 1 + 22 9 10 1 + 23 9 11 2 + 24 12 13 1 + 25 12 14 1 + 26 13 28 1 + 27 13 29 1 + 28 13 30 1 + 29 14 15 1 + 30 14 16 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,3-BIS(METHYL-NITRAMINO-METHYL)-OXETANE +@MOLECULE +DUPHEB + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.2061 3.1854 4.6184 S.3 1 UNCH -0.3310 + 2 CL1 0.8737 0.0065 1.4631 CL 1 UNCH -0.1770 + 3 C1 5.3168 2.4837 2.3679 C.2 1 UNCH 0.0544 + 4 C2 4.2462 2.1942 3.1347 C.2 1 UNCH 0.2010 + 5 C3 2.5663 0.3392 3.5895 C.2 1 UNCH 0.1000 + 6 C4 1.4285 -0.3192 3.0716 C.2 1 UNCH 0.1770 + 7 C5 0.7148 -1.2519 3.8306 C.2 1 UNCH -0.1500 + 8 C6 1.1198 -1.5437 5.1299 C.2 1 UNCH -0.1500 + 9 C7 2.2351 -0.9046 5.6634 C.2 1 UNCH -0.1500 + 10 C8 2.9479 0.0292 4.9018 C.2 1 UNCH -0.1500 + 11 C9 2.5035 3.7973 4.5404 C.3 1 UNCH 0.2300 + 12 N1 5.5477 1.8608 1.0912 N.2 1 UNCH 0.8356 + 13 N2 3.2282 1.3110 2.7953 N.3 1 UNCH -0.6000 + 14 O1 4.6783 1.1230 0.6075 O.3 1 UNCH -0.5200 + 15 O2 6.6265 2.1323 0.5503 O.2 1 UNCH -0.5200 + 16 H1 6.1116 3.1777 2.5974 H 1 UNCH 0.1500 + 17 H5 -0.1561 -1.7503 3.4132 H 1 UNCH 0.1500 + 18 H6 0.5690 -2.2686 5.7240 H 1 UNCH 0.1500 + 19 H7 2.5587 -1.1328 6.6766 H 1 UNCH 0.1500 + 20 H8 3.8238 0.4837 5.3540 H 1 UNCH 0.1500 + 21 H19 2.3586 4.5449 5.3250 H 1 UNCH 0.0000 + 22 H29 2.3078 4.2693 3.5735 H 1 UNCH 0.0000 + 23 H39 1.7861 2.9895 4.7030 H 1 UNCH 0.0000 + 24 H2 3.2595 0.9952 1.8166 H 1 UNCH 0.4000 +@BOND + 1 1 4 1 + 2 1 11 1 + 3 2 6 1 + 4 3 4 2 + 5 3 12 1 + 6 3 16 1 + 7 4 13 1 + 8 5 6 2 + 9 5 10 1 + 10 5 13 1 + 11 6 7 1 + 12 7 8 2 + 13 7 17 1 + 14 8 9 1 + 15 8 18 1 + 16 9 10 2 + 17 9 19 1 + 18 10 20 1 + 19 11 21 1 + 20 11 22 1 + 21 11 23 1 + 22 12 14 1 + 23 12 15 2 + 24 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(O-CHLOROANILINO)-1-METHYLTHIO-2-NITROETHYLENE +@MOLECULE +DUPTAJ + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.4285 1.4570 3.6344 N.3 1 DUPT 0.3172 + 2 C2 0.4228 0.6678 3.1397 C.2 1 DUPT -0.3016 + 3 C3 -0.7215 0.9745 3.8469 C.2 1 DUPT -0.1500 + 4 C4 -0.3757 1.9514 4.8179 C.2 1 DUPT -0.1500 + 5 C5 0.9711 2.2169 4.6795 C.2 1 DUPT -0.3016 + 6 S6 3.0654 1.3206 3.1887 S.3 1 DUPT 1.2950 + 7 O7 3.6836 2.5792 3.5610 O.3 1 DUPT -0.6500 + 8 O8 3.0647 0.8308 1.8231 O.3 1 DUPT -0.6500 + 9 C9 3.6710 0.0444 4.2570 C.2 1 DUPT -0.0090 + 10 C10 3.6226 -1.2884 3.8373 C.2 1 DUPT -0.1500 + 11 C11 4.1037 -2.2897 4.6804 C.2 1 DUPT -0.1500 + 12 C12 4.6351 -1.9578 5.9279 C.2 1 DUPT -0.1500 + 13 C13 4.6932 -0.6241 6.3361 C.2 1 DUPT -0.1500 + 14 C14 4.2145 0.3839 5.4996 C.2 1 DUPT -0.1500 + 15 H2 0.5969 -0.0257 2.3267 H 1 DUPT 0.1500 + 16 H3 -1.6996 0.5370 3.6878 H 1 DUPT 0.1500 + 17 H4 -1.0384 2.4052 5.5448 H 1 DUPT 0.1500 + 18 H5 1.6276 2.8861 5.2211 H 1 DUPT 0.1500 + 19 H10 3.2206 -1.5554 2.8622 H 1 DUPT 0.1500 + 20 H11 4.0706 -3.3299 4.3644 H 1 DUPT 0.1500 + 21 H12 5.0124 -2.7411 6.5816 H 1 DUPT 0.1500 + 22 H13 5.1177 -0.3715 7.3051 H 1 DUPT 0.1500 + 23 H14 4.2743 1.4215 5.8213 H 1 DUPT 0.1500 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 2 1 + 4 2 15 1 + 5 2 3 2 + 6 3 16 1 + 7 3 4 1 + 8 4 17 1 + 9 4 5 2 + 10 5 18 1 + 11 6 9 1 + 12 6 8 1 + 13 6 7 1 + 14 9 14 1 + 15 9 10 2 + 16 10 19 1 + 17 10 11 1 + 18 11 20 1 + 19 11 12 2 + 20 12 21 1 + 21 12 13 1 + 22 13 22 1 + 23 13 14 2 + 24 14 23 1 +@SUBSTRUCTURE + 1 DUPT 1 +@COMMENT +COMMENT 1-PHENYLSULFONYL-PYRROLE +@MOLECULE +DURDID + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.9443 -1.6286 8.4086 C.2 1 UNCH -0.1742 + 2 C2 5.1435 -2.4380 9.4491 C.2 1 UNCH -0.2882 + 3 C3 5.3426 -1.6309 10.6984 C.3 1 UNCH 0.2372 + 4 C4 4.6992 -1.8470 6.9710 C.3 1 UNCH 0.1382 + 5 C5 6.7397 -1.7870 11.2853 C.3 1 UNCH 0.0000 + 6 C6 4.2337 -1.8436 11.7211 C.3 1 UNCH 0.0000 + 7 N1 5.2185 -0.2492 10.1641 N.2 1 UNCH 0.5340 + 8 N2 4.9948 -0.2650 8.8763 N.2 1 UNCH 0.6690 + 9 O1 5.3182 0.8074 10.8745 O.3 1 UNCH -0.6330 + 10 O2 4.8515 0.7991 8.1902 O.3 1 UNCH -0.6330 + 11 H21 5.1608 -3.5190 9.4082 H 1 UNCH 0.1500 + 12 H41 4.6824 -2.9161 6.7354 H 1 UNCH 0.0000 + 13 H42 3.7351 -1.4242 6.6712 H 1 UNCH 0.0000 + 14 H43 5.4860 -1.3846 6.3667 H 1 UNCH 0.0000 + 15 H51 6.8929 -1.1143 12.1369 H 1 UNCH 0.0000 + 16 H52 7.5182 -1.5584 10.5475 H 1 UNCH 0.0000 + 17 H53 6.9044 -2.8118 11.6368 H 1 UNCH 0.0000 + 18 H61 4.3476 -1.1717 12.5796 H 1 UNCH 0.0000 + 19 H62 4.2423 -2.8719 12.0997 H 1 UNCH 0.0000 + 20 H63 3.2427 -1.6549 11.2911 H 1 UNCH 0.0000 +@BOND + 1 1 8 1 + 2 1 4 1 + 3 1 2 2 + 4 2 11 1 + 5 2 3 1 + 6 3 7 1 + 7 3 6 1 + 8 3 5 1 + 9 4 14 1 + 10 4 13 1 + 11 4 12 1 + 12 5 17 1 + 13 5 16 1 + 14 5 15 1 + 15 6 20 1 + 16 6 19 1 + 17 6 18 1 + 18 7 9 1 + 19 7 8 2 + 20 8 10 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,5,5-TRIMETHYL-3-PYRAZOLINE N,N'-DIOXIDE +@MOLECULE +DUTHIJ + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 6.5864 0.0659 12.8160 C.2 1 DUTH 0.0825 + 2 C3 6.5342 -1.1560 12.1462 C.2 1 DUTH -0.1500 + 3 C4 7.1955 -1.3084 10.9266 C.2 1 DUTH -0.1500 + 4 C5 7.9079 -0.2409 10.3795 C.2 1 DUTH -0.1500 + 5 C6 7.9693 0.9780 11.0557 C.2 1 DUTH -0.1500 + 6 C7 7.3213 1.1262 12.2800 C.2 1 DUTH 0.0825 + 7 C9 7.0531 2.2814 14.2684 C.3 1 DUTH 0.2800 + 8 C10 5.7434 1.4970 14.4637 C.3 1 DUTH 0.6650 + 9 C11 5.4797 1.4379 15.9522 C.2 1 DUTH 0.6038 + 10 C13 4.7045 2.0304 18.0266 C.3 1 DUTH 0.4895 + 11 C14 5.4171 0.6667 18.1095 C.3 1 DUTH 0.4895 + 12 C17 3.4945 1.4538 13.6148 C.3 1 DUTH 0.2800 + 13 O1 5.8911 0.1466 13.9936 O.3 1 DUTH -0.3625 + 14 O8 7.4451 2.3424 12.8947 O.3 1 DUTH -0.3625 + 15 O16 4.6639 2.2306 13.8478 O.3 1 DUTH -0.5600 + 16 N12 4.8264 2.3854 16.6063 N.3 1 DUTH -0.7939 + 17 N15 5.8492 0.4289 16.7244 N.2 1 DUTH -0.7939 + 18 H3 5.9702 -1.9891 12.5566 H 1 DUTH 0.1500 + 19 H4 7.1507 -2.2572 10.3960 H 1 DUTH 0.1500 + 20 H5 8.4172 -0.3584 9.4253 H 1 DUTH 0.1500 + 21 H6 8.5293 1.8066 10.6292 H 1 DUTH 0.1500 + 22 H91 6.9352 3.3155 14.6117 H 1 DUTH 0.0000 + 23 H92 7.8772 1.8320 14.8382 H 1 DUTH 0.0000 + 24 H12 4.4575 3.1864 16.0965 H 1 DUTH 0.4500 + 25 H131 5.1993 2.7896 18.6380 H 1 DUTH 0.0000 + 26 H132 3.6477 1.9571 18.2964 H 1 DUTH 0.0000 + 27 H141 6.2913 0.6999 18.7650 H 1 DUTH 0.0000 + 28 H142 4.7390 -0.1313 18.4233 H 1 DUTH 0.0000 + 29 H15 6.3199 -0.3779 16.3203 H 1 DUTH 0.4500 + 30 H171 3.1628 0.9551 14.5301 H 1 DUTH 0.0000 + 31 H172 3.6699 0.7193 12.8240 H 1 DUTH 0.0000 + 32 H173 2.7012 2.1282 13.2809 H 1 DUTH 0.0000 +@BOND + 1 1 13 1 + 2 1 6 1 + 3 1 2 2 + 4 2 18 1 + 5 2 3 1 + 6 3 19 1 + 7 3 4 2 + 8 4 20 1 + 9 4 5 1 + 10 5 21 1 + 11 5 6 2 + 12 6 14 1 + 13 7 23 1 + 14 7 22 1 + 15 7 14 1 + 16 7 8 1 + 17 8 15 1 + 18 8 13 1 + 19 8 9 1 + 20 9 17 2 + 21 9 16 am + 22 10 26 1 + 23 10 25 1 + 24 10 16 1 + 25 10 11 1 + 26 11 28 1 + 27 11 27 1 + 28 11 17 1 + 29 12 32 1 + 30 12 31 1 + 31 12 30 1 + 32 12 15 1 + 33 16 24 1 + 34 17 29 1 +@SUBSTRUCTURE + 1 DUTH 1 +@COMMENT +COMMENT (+)-2-(2-(2-METHOXY-1,4-BENZODIOXAN))-2-IMIDAZOLINE HYDROBR +@MOLECULE +DUVHUX10 + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.2400 0.9608 1.9737 S.3 1 UNCH -0.1010 + 2 S2 0.1507 -0.6942 2.4054 S.3 1 UNCH -0.1410 + 3 S3 1.0543 -3.4415 1.6502 S.2 1 UNCH -0.3800 + 4 N1 4.1420 2.7321 -2.2700 N.2 1 UNCH -0.6200 + 5 N2 3.8133 5.5472 -2.3071 N.2 1 UNCH -0.6200 + 6 C1 3.2817 3.3569 -1.4275 C.2 1 UNCH 0.3384 + 7 C2 3.1292 4.7418 -1.4560 C.2 1 UNCH 0.1600 + 8 C3 4.6661 4.9094 -3.1377 C.2 1 UNCH 0.1600 + 9 C4 4.8262 3.5348 -3.1191 C.2 1 UNCH 0.1600 + 10 C5 2.5141 2.5281 -0.4859 C.2 1 UNCH -0.1784 + 11 C6 2.6327 1.1899 -0.4021 C.2 1 UNCH -0.1500 + 12 C7 1.0836 -1.7851 1.3915 C.2 1 UNCH 0.5066 + 13 C8 1.8246 -1.0387 0.3198 C.2 1 UNCH -0.1238 + 14 C9 1.9126 0.2986 0.5029 C.2 1 UNCH 0.1010 + 15 C10 2.3490 -1.8231 -0.8492 C.3 1 UNCH 0.1382 + 16 H2 2.4455 5.2557 -0.7888 H 1 UNCH 0.1500 + 17 H3 5.2224 5.5369 -3.8247 H 1 UNCH 0.1500 + 18 H4 5.5149 3.0368 -3.7920 H 1 UNCH 0.1500 + 19 H5 1.8206 3.0707 0.1489 H 1 UNCH 0.1500 + 20 H6 3.3412 0.7095 -1.0753 H 1 UNCH 0.1500 + 21 H101 2.6327 -1.1950 -1.6975 H 1 UNCH 0.0000 + 22 H102 1.5845 -2.5077 -1.2323 H 1 UNCH 0.0000 + 23 H103 3.2284 -2.4055 -0.5560 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 2 12 1 + 4 3 12 2 + 5 4 6 2 + 6 4 9 1 + 7 5 7 2 + 8 5 8 1 + 9 6 7 1 + 10 6 10 1 + 11 7 16 1 + 12 8 9 2 + 13 8 17 1 + 14 9 18 1 + 15 10 11 2 + 16 10 19 1 + 17 11 14 1 + 18 11 20 1 + 19 12 13 1 + 20 13 14 2 + 21 13 15 1 + 22 15 21 1 + 23 15 22 1 + 24 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-METHYL-5-(2-(2-PYRAZINYL)VINYL)-3H-1,2-DITHIOLE-3-THIONE +@MOLECULE +DUVXIB + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.8266 1.4406 7.8138 N.3 1 DUVX -0.4900 + 2 C2 3.0248 1.8898 9.1065 C.2 1 DUVX 0.6900 + 3 N3 2.5268 1.1035 10.1391 N.3 1 DUVX -0.4231 + 4 C4 1.8684 -0.0710 9.8177 C.2 1 DUVX 0.3518 + 5 C5 1.6853 -0.4963 8.4948 C.2 1 DUVX 0.2028 + 6 C6 2.1862 0.2895 7.3940 C.2 1 DUVX 0.7160 + 7 N7 1.0196 -1.6596 8.4744 N.2 1 DUVX -0.7068 + 8 N8 0.8381 -1.8709 9.7922 N.3 1 DUVX 0.5660 + 9 N9 1.3231 -0.9554 10.6562 N.2 1 DUVX -0.7068 + 10 O2 3.6245 2.9500 9.2790 O.2 1 DUVX -0.5700 + 11 C3 2.6955 1.5086 11.5223 C.3 1 DUVX 0.3001 + 12 O6 2.0781 0.0057 6.2054 O.2 1 DUVX -0.5700 + 13 H1 3.1976 2.0294 7.0834 H 1 DUVX 0.3700 + 14 H13 3.2616 0.7379 12.0548 H 1 DUVX 0.0000 + 15 H23 3.2349 2.4562 11.6028 H 1 DUVX 0.0000 + 16 H33 1.7101 1.6271 11.9836 H 1 DUVX 0.0000 + 17 H8 0.3482 -2.6989 10.1260 H 1 DUVX 0.2700 +@BOND + 1 1 13 1 + 2 1 6 am + 3 1 2 am + 4 2 10 2 + 5 2 3 am + 6 3 11 1 + 7 3 4 am + 8 4 9 2 + 9 4 5 1 + 10 5 7 2 + 11 5 6 1 + 12 6 12 2 + 13 7 8 1 + 14 8 17 1 + 15 8 9 1 + 16 11 16 1 + 17 11 15 1 + 18 11 14 1 +@SUBSTRUCTURE + 1 DUVX 1 +@COMMENT +COMMENT 3-METHYL-8-AZAXANTHINE MONOHYDRATE (ANTIALLERGIC AGENT) +@MOLECULE +DUWGAD + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 5.9782 5.2218 1.6921 P 1 DUWG 0.6712 + 2 CL1 6.3596 3.1580 1.7211 CL 1 DUWG -0.2112 + 3 N1 7.4836 5.9917 1.5839 N.3 1 DUWG -0.6510 + 4 C11 7.7136 6.9166 0.4843 C.3 1 DUWG 0.2700 + 5 C2 8.0554 6.4519 2.8402 C.3 1 DUWG 0.2700 + 6 C3 7.4039 5.6075 3.9236 C.3 1 DUWG 0.5030 + 7 N4 5.9405 5.4542 3.5118 N.3 1 DUWG -0.8580 + 8 C41 5.1434 6.7368 3.7723 C.3 1 DUWG 0.5030 + 9 C42 5.2586 4.3329 4.2742 C.3 1 DUWG 0.5030 + 10 H111 8.7729 7.1924 0.4258 H 1 DUWG 0.0000 + 11 H112 7.1278 7.8366 0.5962 H 1 DUWG 0.0000 + 12 H113 7.4592 6.4628 -0.4810 H 1 DUWG 0.0000 + 13 H21 9.1435 6.3264 2.8566 H 1 DUWG 0.0000 + 14 H22 7.8411 7.5134 3.0175 H 1 DUWG 0.0000 + 15 H31 7.4412 6.0770 4.9123 H 1 DUWG 0.0000 + 16 H32 7.8521 4.6075 3.9796 H 1 DUWG 0.0000 + 17 H411 5.1931 6.9521 4.8447 H 1 DUWG 0.0000 + 18 H412 4.1016 6.5710 3.4762 H 1 DUWG 0.0000 + 19 H413 5.5709 7.5753 3.2140 H 1 DUWG 0.0000 + 20 H421 5.8956 3.4452 4.3000 H 1 DUWG 0.0000 + 21 H422 5.1149 4.6692 5.3069 H 1 DUWG 0.0000 + 22 H423 4.2858 4.1225 3.8184 H 1 DUWG 0.0000 +@BOND + 1 1 7 1 + 2 1 3 1 + 3 1 2 1 + 4 3 5 1 + 5 3 4 1 + 6 4 12 1 + 7 4 11 1 + 8 4 10 1 + 9 5 14 1 + 10 5 13 1 + 11 5 6 1 + 12 6 16 1 + 13 6 15 1 + 14 6 7 1 + 15 7 9 1 + 16 7 8 1 + 17 8 19 1 + 18 8 18 1 + 19 8 17 1 + 20 9 22 1 + 21 9 21 1 + 22 9 20 1 +@SUBSTRUCTURE + 1 DUWG 1 +@COMMENT +COMMENT 2-CHLORO-1,3,3-TRIMETHYL-1,3,2-DIAZAPHOSPHOLIDINIUM CHLORID +@MOLECULE +DUWKUB + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 9.5649 -2.8192 1.3687 CL 1 UNCH -0.2900 + 2 CL2 7.1066 -2.9116 -0.1980 CL 1 UNCH -0.2900 + 3 CL3 7.7382 -5.0424 1.7087 CL 1 UNCH -0.2900 + 4 O1 7.1290 1.9940 1.8462 O.3 1 UNCH 0.2418 + 5 C4 5.8950 0.2221 1.8437 C.2 1 UNCH 0.3718 + 6 O9 5.4380 -2.2295 3.9999 O.3 1 UNCH -0.2170 + 7 N6 7.6337 -1.2813 2.9215 N.3 1 UNCH -0.5330 + 8 N5 5.8828 1.5047 1.4903 N.2 1 UNCH -0.4097 + 9 N2 7.9178 1.0062 2.4159 N.2 1 UNCH -0.4097 + 10 C3 7.1619 -0.0954 2.4298 C.2 1 UNCH 0.3718 + 11 C7 7.0754 -2.4834 2.4786 C.2 1 UNCH 0.4390 + 12 N8 5.9527 -2.9892 2.9363 N.2 1 UNCH -0.5130 + 13 C11 7.8364 -3.2948 1.3762 C.3 1 UNCH 0.9310 + 14 N12 4.8551 -0.6180 1.6510 N.3 1 UNCH -0.8830 + 15 C10 4.4123 -2.9825 4.6405 C.3 1 UNCH 0.2800 + 16 H101 4.0129 -2.3884 5.4664 H 1 UNCH 0.0000 + 17 H102 4.8223 -3.9149 5.0403 H 1 UNCH 0.0000 + 18 H103 3.6040 -3.1963 3.9347 H 1 UNCH 0.0000 + 19 H122 4.7867 -1.4373 2.2598 H 1 UNCH 0.4000 + 20 H121 3.9515 -0.1908 1.4761 H 1 UNCH 0.4000 + 21 H6 8.6522 -1.2742 2.9280 H 1 UNCH 0.4000 +@BOND + 1 1 13 1 + 2 2 13 1 + 3 3 13 1 + 4 4 8 1 + 5 4 9 1 + 6 5 8 2 + 7 5 10 1 + 8 5 14 am + 9 6 12 1 + 10 6 15 1 + 11 7 10 am + 12 7 11 am + 13 7 21 1 + 14 9 10 2 + 15 11 12 2 + 16 11 13 1 + 17 14 19 1 + 18 14 20 1 + 19 15 16 1 + 20 15 17 1 + 21 15 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(4-AMINO-3-FURAZANYL)-2,2,2-TRICHLORO-N'-METHOXYACETAMIDI +@MOLECULE +DUWRIW + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0245 3.8068 10.6757 C.2 1 UNCH 0.2811 + 2 N1 -0.8465 3.5879 11.8348 N.2 1 UNCH 0.8356 + 3 O1 -0.3178 3.1930 12.8857 O.3 1 UNCH -0.5200 + 4 O2 -2.0612 3.7991 11.7011 O.2 1 UNCH -0.5200 + 5 C2 1.3060 3.4258 10.6918 C.2 1 UNCH -0.2882 + 6 C3 2.1820 3.6775 9.5166 C.3 1 UNCH 0.4182 + 7 O3 2.5629 2.4219 8.9693 O.3 1 UNCH -0.6800 + 8 C4 1.5184 4.5779 8.4529 C.3 1 UNCH 0.2800 + 9 O4 1.7607 5.9594 8.7816 O.3 1 UNCH -0.6800 + 10 C5 -0.0112 4.3804 8.3721 C.3 1 UNCH 0.2800 + 11 O5 -0.6712 4.3910 9.6539 O.3 1 UNCH -0.3567 + 12 C6 -0.4488 3.1329 7.5854 C.3 1 UNCH 0.2800 + 13 O6 0.1298 1.9342 8.1008 O.3 1 UNCH -0.6800 + 14 H2 1.7511 2.9395 11.5544 H 1 UNCH 0.1500 + 15 H3 3.1010 4.1576 9.8721 H 1 UNCH 0.0000 + 16 H30 1.7359 1.9766 8.6803 H 1 UNCH 0.4000 + 17 H4 1.9627 4.4059 7.4655 H 1 UNCH 0.0000 + 18 H40 2.7221 6.1098 8.7339 H 1 UNCH 0.4000 + 19 H5 -0.4327 5.2453 7.8435 H 1 UNCH 0.0000 + 20 H61 -1.5375 3.0244 7.6373 H 1 UNCH 0.0000 + 21 H62 -0.1500 3.2217 6.5362 H 1 UNCH 0.0000 + 22 H60 -0.3673 1.1941 7.7001 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 5 2 + 3 1 11 1 + 4 2 3 1 + 5 2 4 2 + 6 5 6 1 + 7 5 14 1 + 8 6 7 1 + 9 6 8 1 + 10 6 15 1 + 11 7 16 1 + 12 8 9 1 + 13 8 10 1 + 14 8 17 1 + 15 9 18 1 + 16 10 11 1 + 17 10 12 1 + 18 10 19 1 + 19 12 13 1 + 20 12 20 1 + 21 12 21 1 + 22 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-DIDEOXY-1-NITRO-D-ARABINO-HEX-1-ENOPYRANOSE (AT 130 DEG +@MOLECULE +DUXTIZ + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.2081 1.6900 4.5020 C.2 1 UNCH 0.6300 + 2 N1 2.9468 1.7013 3.3492 N.3 1 UNCH -0.3945 + 3 O1 2.2859 1.3914 2.1426 O.3 1 UNCH -0.4355 + 4 O2 1.0372 1.3426 4.5863 O.2 1 UNCH -0.5700 + 5 H1 3.8728 2.1204 3.2992 H 1 UNCH 0.3700 + 6 H2 1.3690 1.1983 2.4328 H 1 UNCH 0.4000 + 7 C1B 2.9785 2.1808 5.7331 C.2 1 UNCH 0.6300 + 8 N1B 2.2398 2.1694 6.8860 N.3 1 UNCH -0.3945 + 9 O2B 4.1495 2.5281 5.6488 O.2 1 UNCH -0.5700 + 10 O1B 2.9007 2.4794 8.0925 O.3 1 UNCH -0.4355 + 11 H1B 1.3138 1.7503 6.9360 H 1 UNCH 0.3700 + 12 H2B 3.8177 2.6725 7.8023 H 1 UNCH 0.4000 +@BOND + 1 1 2 am + 2 1 4 2 + 3 1 7 1 + 4 2 3 1 + 5 2 5 1 + 6 3 6 1 + 7 7 8 am + 8 7 9 2 + 9 8 10 1 + 10 8 11 1 + 11 10 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT OXALYLHYDROXAMIC ACID +@MOLECULE +DUXWUO + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.6196 2.4016 20.2015 S.3 1 UNCH -0.3710 + 2 C2 5.0060 3.8291 19.2508 C.3 1 UNCH 0.6736 + 3 N3 5.1648 3.4405 17.8514 N.3 1 UNCH -0.2981 + 4 N4 5.8554 2.2688 17.5984 N.2 1 UNCH -0.5120 + 5 C5 6.1637 1.6868 18.7144 C.2 1 UNCH 0.6870 + 6 C6 5.7637 5.0934 19.6155 C.2 1 UNCH -0.1435 + 7 C7 5.1348 6.0797 20.3941 C.2 1 UNCH -0.1500 + 8 C8 5.8135 7.2456 20.7545 C.2 1 UNCH -0.1500 + 9 C9 7.1306 7.4417 20.3464 C.2 1 UNCH -0.1500 + 10 C10 7.7713 6.4736 19.5772 C.2 1 UNCH -0.1500 + 11 C11 7.0949 5.3074 19.2141 C.2 1 UNCH -0.1500 + 12 C12 4.5228 4.1357 16.8401 C.2 1 UNCH 0.5690 + 13 C13 4.7783 3.6332 15.4419 C.3 1 UNCH 0.0610 + 14 O14 3.7724 5.0881 17.0498 O.2 1 UNCH -0.5700 + 15 S15 7.0556 0.1397 18.8486 S.2 1 UNCH 0.2105 + 16 O16 8.1665 0.3778 19.8313 O.2 1 UNCH -0.5000 + 17 C17 7.7784 0.1680 17.1942 C.3 1 UNCH 0.1935 + 18 H2 3.9343 3.9525 19.4453 H 1 UNCH 0.0000 + 19 H7 4.1051 5.9511 20.7223 H 1 UNCH 0.1500 + 20 H8 5.3127 8.0022 21.3533 H 1 UNCH 0.1500 + 21 H9 7.6577 8.3496 20.6278 H 1 UNCH 0.1500 + 22 H10 8.8000 6.6256 19.2605 H 1 UNCH 0.1500 + 23 H11 7.6198 4.5658 18.6156 H 1 UNCH 0.1500 + 24 H131 4.3274 2.6458 15.3121 H 1 UNCH 0.0000 + 25 H132 5.8530 3.5877 15.2448 H 1 UNCH 0.0000 + 26 H133 4.3284 4.3222 14.7210 H 1 UNCH 0.0000 + 27 H171 8.4588 -0.6823 17.1013 H 1 UNCH 0.0000 + 28 H172 6.9911 0.0732 16.4425 H 1 UNCH 0.0000 + 29 H173 8.3418 1.0921 17.0424 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 1 + 4 2 6 1 + 5 2 18 1 + 6 3 4 1 + 7 3 12 am + 8 4 5 2 + 9 5 15 1 + 10 6 7 2 + 11 6 11 1 + 12 7 8 1 + 13 7 19 1 + 14 8 9 2 + 15 8 20 1 + 16 9 10 1 + 17 9 21 1 + 18 10 11 2 + 19 10 22 1 + 20 11 23 1 + 21 12 13 1 + 22 12 14 2 + 23 13 24 1 + 24 13 25 1 + 25 13 26 1 + 26 15 16 2 + 27 15 17 1 + 28 17 27 1 + 29 17 28 1 + 30 17 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (2S*)-3-ACETYL-5-((R*)-METHYLSULFINYL)-2-PHENYL-2,3-DIHYDRO +@MOLECULE +DUXXAV + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 9.5446 15.7067 4.1449 S.2 1 UNCH 0.2105 + 2 C2 10.7383 15.9551 5.4985 C.3 1 UNCH 0.6371 + 3 N3 10.0201 16.7526 6.4843 N.3 1 UNCH -0.2981 + 4 N4 8.8587 17.3761 6.0951 N.2 1 UNCH -0.5120 + 5 C5 8.5059 16.9726 4.9126 C.2 1 UNCH 0.6420 + 6 C6 11.9988 16.6153 4.9681 C.2 1 UNCH -0.1435 + 7 C7 13.1139 15.8176 4.6582 C.2 1 UNCH -0.1500 + 8 C8 14.2772 16.3875 4.1379 C.2 1 UNCH -0.1500 + 9 C9 14.3425 17.7604 3.9151 C.2 1 UNCH -0.1500 + 10 C10 13.2461 18.5658 4.2126 C.2 1 UNCH -0.1500 + 11 C11 12.0810 17.9994 4.7335 C.2 1 UNCH -0.1500 + 12 C12 10.4866 16.8418 7.7865 C.2 1 UNCH 0.5690 + 13 C13 9.6782 17.7149 8.7123 C.3 1 UNCH 0.0610 + 14 O14 11.4864 16.2431 8.1813 O.2 1 UNCH -0.5700 + 15 S15 7.0269 17.7044 4.1692 S.2 1 UNCH 0.2105 + 16 O16 7.3004 17.7260 2.6924 O.2 1 UNCH -0.5000 + 17 C17 5.9745 16.2730 4.5055 C.3 1 UNCH 0.1935 + 18 O18 8.8056 14.4186 4.3948 O.2 1 UNCH -0.5000 + 19 H2 10.9713 14.9804 5.9427 H 1 UNCH 0.0000 + 20 H11 11.2435 18.6571 4.9575 H 1 UNCH 0.1500 + 21 H10 13.2995 19.6381 4.0403 H 1 UNCH 0.1500 + 22 H9 15.2498 18.2033 3.5121 H 1 UNCH 0.1500 + 23 H8 15.1346 15.7592 3.9086 H 1 UNCH 0.1500 + 24 H7 13.0890 14.7417 4.8252 H 1 UNCH 0.1500 + 25 H131 9.6223 18.7333 8.3182 H 1 UNCH 0.0000 + 26 H132 8.6741 17.3006 8.8369 H 1 UNCH 0.0000 + 27 H133 10.1636 17.7519 9.6921 H 1 UNCH 0.0000 + 28 H171 4.9605 16.5068 4.1721 H 1 UNCH 0.0000 + 29 H172 6.3340 15.3990 3.9588 H 1 UNCH 0.0000 + 30 H173 5.9604 16.0692 5.5789 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 18 2 + 4 2 3 1 + 5 2 6 1 + 6 2 19 1 + 7 3 4 1 + 8 3 12 am + 9 4 5 2 + 10 5 15 1 + 11 6 7 2 + 12 6 11 1 + 13 7 8 1 + 14 7 24 1 + 15 8 9 2 + 16 8 23 1 + 17 9 10 1 + 18 9 22 1 + 19 10 11 2 + 20 10 21 1 + 21 11 20 1 + 22 12 13 1 + 23 12 14 2 + 24 13 25 1 + 25 13 26 1 + 26 13 27 1 + 27 15 16 2 + 28 15 17 1 + 29 17 28 1 + 30 17 29 1 + 31 17 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1R*,2S*)-3-ACETYL-5-((S*)-METHYLSULFINYL)-2-PHENYL-2,3-DIH +@MOLECULE +DUYNOA + 38 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.8410 10.6773 2.1527 C.3 1 UNCH 0.5500 + 2 O2 1.6007 11.2104 0.8460 O.3 1 UNCH -0.5600 + 3 C3 2.4721 12.3166 0.5495 C.3 1 UNCH 0.5500 + 4 N4 3.9081 11.9512 0.6404 N.3 1 UNCH -0.5400 + 5 C5 4.1701 11.3260 1.9743 C.3 1 UNCH 0.5400 + 6 C6 3.9384 12.4367 3.0419 C.3 1 UNCH 0.0000 + 7 C7 2.4927 12.9531 2.9842 C.3 1 UNCH 0.0000 + 8 C8 1.5704 11.7553 3.2253 C.3 1 UNCH 0.0000 + 9 N9 3.2404 10.1853 2.2613 N.3 1 UNCH -0.5400 + 10 C10 2.2125 13.4586 1.5606 C.3 1 UNCH 0.0000 + 11 C11 0.8173 9.5495 2.3834 C.3 1 UNCH 0.0000 + 12 C31 2.0886 12.8330 -0.8469 C.3 1 UNCH 0.0000 + 13 N41 4.3273 11.0942 -0.4772 N.3 1 UNCH -0.7200 + 14 C51 5.6461 10.8892 2.1353 C.3 1 UNCH 0.0000 + 15 C71 2.2564 14.0526 4.0183 C.3 1 UNCH 0.0000 + 16 N91 3.4658 9.0451 1.3317 N.3 1 UNCH -0.7200 + 17 H411 5.3243 11.2292 -0.6563 H 1 UNCH 0.3600 + 18 H412 4.2527 10.1140 -0.1787 H 1 UNCH 0.3600 + 19 H911 3.2091 8.1731 1.8016 H 1 UNCH 0.3600 + 20 H912 2.8047 9.1277 0.5465 H 1 UNCH 0.3600 + 21 H61 4.6369 13.2696 2.8777 H 1 UNCH 0.0000 + 22 H62 4.1553 12.0463 4.0464 H 1 UNCH 0.0000 + 23 H81 1.7208 11.3452 4.2330 H 1 UNCH 0.0000 + 24 H82 0.5254 12.0892 3.1657 H 1 UNCH 0.0000 + 25 H101 2.8393 14.3306 1.3301 H 1 UNCH 0.0000 + 26 H102 1.1661 13.7865 1.4942 H 1 UNCH 0.0000 + 27 H111 0.9790 9.0456 3.3425 H 1 UNCH 0.0000 + 28 H112 0.8385 8.8005 1.5843 H 1 UNCH 0.0000 + 29 H113 -0.2036 9.9506 2.3770 H 1 UNCH 0.0000 + 30 H311 2.7286 13.6632 -1.1646 H 1 UNCH 0.0000 + 31 H312 1.0488 13.1816 -0.8556 H 1 UNCH 0.0000 + 32 H313 2.1390 12.0393 -1.6010 H 1 UNCH 0.0000 + 33 H711 2.9167 14.9087 3.8417 H 1 UNCH 0.0000 + 34 H712 2.4465 13.6877 5.0336 H 1 UNCH 0.0000 + 35 H713 1.2230 14.4146 3.9817 H 1 UNCH 0.0000 + 36 H511 6.3253 11.7332 1.9649 H 1 UNCH 0.0000 + 37 H512 5.9380 10.0934 1.4419 H 1 UNCH 0.0000 + 38 H513 5.8353 10.5167 3.1494 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 9 1 + 4 1 11 1 + 5 2 3 1 + 6 3 4 1 + 7 3 10 1 + 8 3 12 1 + 9 4 5 1 + 10 4 13 1 + 11 5 6 1 + 12 5 9 1 + 13 5 14 1 + 14 6 7 1 + 15 6 21 1 + 16 6 22 1 + 17 7 8 1 + 18 7 10 1 + 19 7 15 1 + 20 8 23 1 + 21 8 24 1 + 22 9 16 1 + 23 10 25 1 + 24 10 26 1 + 25 11 27 1 + 26 11 28 1 + 27 11 29 1 + 28 12 30 1 + 29 12 31 1 + 30 12 32 1 + 31 13 17 1 + 32 13 18 1 + 33 14 36 1 + 34 14 37 1 + 35 14 38 1 + 36 15 33 1 + 37 15 34 1 + 38 15 35 1 + 39 16 19 1 + 40 16 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,9-DIAMINO-1,3,5,7-TETRAMETHYL-2,4,9-OXADIAZA-ADAMANTANE +@MOLECULE +DUYPES + 47 48 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O4 9.9586 -2.3766 -0.3618 O.3 1 DUYP -0.2147 + 2 O5 8.7303 1.3628 -2.0850 O.2 1 DUYP -0.5700 + 3 N1 12.1216 -2.9230 0.0257 N.2 1 DUYP -0.8334 + 4 N2 10.8227 -1.6093 1.6043 N.3 1 DUYP -0.8334 + 5 C2 12.0457 -3.6625 -1.2635 C.3 1 DUYP 0.4895 + 6 C3 13.3931 -3.0318 0.7502 C.3 1 DUYP 0.4895 + 7 C4 11.8507 -1.2806 2.5994 C.3 1 DUYP 0.4895 + 8 C5 9.4524 -1.1381 1.9466 C.3 1 DUYP 0.4895 + 9 C6 11.0181 -2.2923 0.4633 C.2 1 DUYP 0.8468 + 10 C7 9.6261 -1.3458 -1.2404 C.2 1 DUYP 0.0483 + 11 C8 10.3367 -0.2108 -1.3867 C.2 1 DUYP -0.1356 + 12 C9 9.8687 0.9306 -2.2169 C.2 1 DUYP 0.4694 + 13 C10 8.4202 -1.6654 -2.0267 C.2 1 DUYP 0.0284 + 14 C11 8.4978 -1.8251 -3.4185 C.2 1 DUYP -0.1500 + 15 C12 7.3608 -2.1607 -4.1566 C.2 1 DUYP -0.1500 + 16 C13 6.1400 -2.3460 -3.5117 C.2 1 DUYP -0.1500 + 17 C14 6.0530 -2.1959 -2.1293 C.2 1 DUYP -0.1500 + 18 C15 7.1884 -1.8599 -1.3885 C.2 1 DUYP -0.1500 + 19 C16 10.8494 1.5865 -3.1241 C.2 1 DUYP 0.0862 + 20 C17 10.5301 2.8512 -3.6358 C.2 1 DUYP -0.1500 + 21 C18 11.4137 3.5079 -4.4937 C.2 1 DUYP -0.1500 + 22 C19 12.6169 2.9027 -4.8509 C.2 1 DUYP -0.1500 + 23 C20 12.9371 1.6389 -4.3564 C.2 1 DUYP -0.1500 + 24 C21 12.0561 0.9776 -3.4963 C.2 1 DUYP -0.1500 + 25 H22 11.9635 -2.9466 -2.0861 H 1 DUYP 0.0000 + 26 H23 11.1862 -4.3399 -1.2535 H 1 DUYP 0.0000 + 27 H24 12.9439 -4.2660 -1.4226 H 1 DUYP 0.0000 + 28 H31 13.8713 -2.0516 0.8030 H 1 DUYP 0.0000 + 29 H32 14.0851 -3.7036 0.2329 H 1 DUYP 0.0000 + 30 H33 13.2213 -3.4509 1.7435 H 1 DUYP 0.0000 + 31 H41 12.1327 -2.1797 3.1513 H 1 DUYP 0.0000 + 32 H42 11.4700 -0.5465 3.3174 H 1 DUYP 0.0000 + 33 H43 12.7106 -0.8199 2.1100 H 1 DUYP 0.0000 + 34 H51 9.3586 -1.0124 3.0300 H 1 DUYP 0.0000 + 35 H52 9.2676 -0.1777 1.4590 H 1 DUYP 0.0000 + 36 H53 8.7056 -1.8786 1.6463 H 1 DUYP 0.0000 + 37 H8 11.2558 -0.0240 -0.8455 H 1 DUYP 0.1500 + 38 H11 9.4371 -1.6854 -3.9470 H 1 DUYP 0.1500 + 39 H12 7.4237 -2.2708 -5.2367 H 1 DUYP 0.1500 + 40 H13 5.2531 -2.5992 -4.0883 H 1 DUYP 0.1500 + 41 H14 5.0962 -2.3317 -1.6306 H 1 DUYP 0.1500 + 42 H15 7.0913 -1.7369 -0.3141 H 1 DUYP 0.1500 + 43 H17 9.5895 3.3324 -3.3712 H 1 DUYP 0.1500 + 44 H18 11.1594 4.4897 -4.8875 H 1 DUYP 0.1500 + 45 H19 13.3013 3.4150 -5.5241 H 1 DUYP 0.1500 + 46 H20 13.8723 1.1687 -4.6523 H 1 DUYP 0.1500 + 47 H21 12.3266 -0.0139 -3.1494 H 1 DUYP 0.1500 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 2 12 2 + 4 3 9 2 + 5 3 6 1 + 6 3 5 1 + 7 4 9 am + 8 4 8 1 + 9 4 7 1 + 10 5 27 1 + 11 5 26 1 + 12 5 25 1 + 13 6 30 1 + 14 6 29 1 + 15 6 28 1 + 16 7 33 1 + 17 7 32 1 + 18 7 31 1 + 19 8 36 1 + 20 8 35 1 + 21 8 34 1 + 22 10 13 1 + 23 10 11 2 + 24 11 37 1 + 25 11 12 1 + 26 12 19 1 + 27 13 18 1 + 28 13 14 2 + 29 14 38 1 + 30 14 15 1 + 31 15 39 1 + 32 15 16 2 + 33 16 40 1 + 34 16 17 1 + 35 17 41 1 + 36 17 18 2 + 37 18 42 1 + 38 19 24 1 + 39 19 20 2 + 40 20 43 1 + 41 20 21 1 + 42 21 44 1 + 43 21 22 2 + 44 22 45 1 + 45 22 23 1 + 46 23 46 1 + 47 23 24 2 + 48 24 47 1 +@SUBSTRUCTURE + 1 DUYP 1 +@COMMENT +COMMENT N,N,N',N'-TETRAMETHYL-O-((E)-3-OXO-1,3-DIPHENYL-1-PROPENYL) +@MOLECULE +DUYRAQ + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.4814 -0.1201 11.2351 P 1 UNCH -0.2228 + 2 P2 2.5682 1.9218 10.5020 P 1 UNCH -0.2228 + 3 N1 2.0776 -0.3883 11.7398 N.3 1 UNCH -0.4710 + 4 H1 2.4708 -1.2240 11.2977 H 1 UNCH 0.3600 + 5 N2 2.9907 0.7033 11.6026 N.3 1 UNCH -0.4710 + 6 H2 3.2017 1.0941 12.5252 H 1 UNCH 0.3600 + 7 C1 0.8002 1.4345 10.2922 C.3 1 UNCH 0.3338 + 8 C2 -0.3399 0.4500 12.8321 C.3 1 UNCH 0.1669 + 9 C3 -0.4292 -0.7604 13.7874 C.3 1 UNCH 0.0000 + 10 C4 0.3762 1.5953 13.5598 C.3 1 UNCH 0.0000 + 11 C5 -1.7793 0.8970 12.4979 C.3 1 UNCH 0.0000 + 12 C6 3.4161 1.3321 8.9260 C.3 1 UNCH 0.1669 + 13 C7 3.1150 -0.1189 8.5285 C.3 1 UNCH 0.0000 + 14 C8 2.9846 2.2629 7.7724 C.3 1 UNCH 0.0000 + 15 C9 4.9416 1.4848 9.1130 C.3 1 UNCH 0.0000 + 16 H11 0.1571 2.2476 10.6385 H 1 UNCH 0.0000 + 17 H12 0.5544 1.2760 9.2391 H 1 UNCH 0.0000 + 18 H31 -0.9644 -1.6019 13.3309 H 1 UNCH 0.0000 + 19 H32 -0.9641 -0.4948 14.7070 H 1 UNCH 0.0000 + 20 H33 0.5633 -1.1204 14.0829 H 1 UNCH 0.0000 + 21 H41 0.4661 2.4924 12.9399 H 1 UNCH 0.0000 + 22 H42 1.3786 1.3100 13.8941 H 1 UNCH 0.0000 + 23 H43 -0.1797 1.8886 14.4589 H 1 UNCH 0.0000 + 24 H51 -1.7941 1.7718 11.8382 H 1 UNCH 0.0000 + 25 H52 -2.3258 1.1702 13.4085 H 1 UNCH 0.0000 + 26 H53 -2.3493 0.1008 12.0037 H 1 UNCH 0.0000 + 27 H71 2.0468 -0.2955 8.3703 H 1 UNCH 0.0000 + 28 H72 3.4721 -0.8348 9.2754 H 1 UNCH 0.0000 + 29 H73 3.6187 -0.3737 7.5878 H 1 UNCH 0.0000 + 30 H81 3.2082 3.3142 7.9912 H 1 UNCH 0.0000 + 31 H82 1.9109 2.1897 7.5664 H 1 UNCH 0.0000 + 32 H83 3.5095 2.0056 6.8446 H 1 UNCH 0.0000 + 33 H91 5.2207 2.5149 9.3658 H 1 UNCH 0.0000 + 34 H92 5.4773 1.2186 8.1939 H 1 UNCH 0.0000 + 35 H93 5.3218 0.8339 9.9091 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 7 1 + 3 1 8 1 + 4 2 5 1 + 5 2 7 1 + 6 2 12 1 + 7 3 4 1 + 8 3 5 1 + 9 5 6 1 + 10 7 16 1 + 11 7 17 1 + 12 8 9 1 + 13 8 10 1 + 14 8 11 1 + 15 9 18 1 + 16 9 19 1 + 17 9 20 1 + 18 10 21 1 + 19 10 22 1 + 20 10 23 1 + 21 11 24 1 + 22 11 25 1 + 23 11 26 1 + 24 12 13 1 + 25 12 14 1 + 26 12 15 1 + 27 13 27 1 + 28 13 28 1 + 29 13 29 1 + 30 14 30 1 + 31 14 31 1 + 32 14 32 1 + 33 15 33 1 + 34 15 34 1 + 35 15 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-3,5-DI-T-BUTYL-1,2,3,5-DIAZADIPHOSPHOLANE +@MOLECULE +FACMIF + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 6.6635 2.2234 1.7274 P 1 UNCH -0.2318 + 2 O1 6.4394 0.2907 4.0968 O.2 1 UNCH -0.5700 + 3 N1 5.7762 2.3575 3.2399 N.3 1 UNCH -0.1000 + 4 N2 4.9938 3.4901 3.4134 N.2 1 UNCH -0.5120 + 5 C1 5.8281 1.3553 4.2109 C.2 1 UNCH 0.5690 + 6 C2 5.0370 1.6516 5.4623 C.3 1 UNCH 0.0610 + 7 C3 4.9655 4.2430 2.3481 C.2 1 UNCH 0.3280 + 8 C4 4.1864 5.5223 2.3291 C.3 1 UNCH 0.0610 + 9 C5 5.7000 3.8017 1.0866 C.3 1 UNCH 0.2279 + 10 C6 4.7706 3.2193 -0.0064 C.3 1 UNCH 0.1382 + 11 C7 4.2328 1.8856 0.5418 C.3 1 UNCH 0.0000 + 12 C8 5.5706 1.1496 0.6446 C.3 1 UNCH 0.3051 + 13 C9 6.1470 1.5086 -0.7067 C.2 1 UNCH -0.2882 + 14 C10 5.6343 2.6800 -1.1269 C.2 1 UNCH -0.2882 + 15 H21 3.9716 1.7190 5.2257 H 1 UNCH 0.0000 + 16 H22 5.1815 0.8414 6.1834 H 1 UNCH 0.0000 + 17 H23 5.3850 2.5818 5.9197 H 1 UNCH 0.0000 + 18 H41 3.3330 5.4173 1.6544 H 1 UNCH 0.0000 + 19 H42 3.8231 5.7641 3.3314 H 1 UNCH 0.0000 + 20 H43 4.8278 6.3333 1.9746 H 1 UNCH 0.0000 + 21 H5 6.4016 4.5640 0.7381 H 1 UNCH 0.0000 + 22 H6 3.9804 3.8934 -0.3436 H 1 UNCH 0.0000 + 23 H71 3.6964 1.9806 1.4908 H 1 UNCH 0.0000 + 24 H72 3.5542 1.3967 -0.1711 H 1 UNCH 0.0000 + 25 H8 5.5137 0.0846 0.8674 H 1 UNCH 0.0000 + 26 H9 6.8518 0.8946 -1.2509 H 1 UNCH 0.1500 + 27 H10 5.8759 3.1919 -2.0466 H 1 UNCH 0.1500 +@BOND + 1 1 3 1 + 2 1 9 1 + 3 1 12 1 + 4 2 5 2 + 5 3 4 1 + 6 3 5 am + 7 4 7 2 + 8 5 6 1 + 9 6 15 1 + 10 6 16 1 + 11 6 17 1 + 12 7 8 1 + 13 7 9 1 + 14 8 18 1 + 15 8 19 1 + 16 8 20 1 + 17 9 10 1 + 18 9 21 1 + 19 10 11 1 + 20 10 14 1 + 21 10 22 1 + 22 11 12 1 + 23 11 23 1 + 24 11 24 1 + 25 12 13 1 + 26 12 25 1 + 27 13 14 2 + 28 13 26 1 + 29 14 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT EXO-3-ACETYL-5-METHYL-3,4,2-DIAZAPHOSPHATRICYCLO(5.2.1.0-2, +@MOLECULE +FACREG + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.8669 4.8748 6.7445 C.3 1 UNCH 0.5202 + 2 N1 2.0481 5.9749 7.3896 N.2 1 UNCH 0.7998 + 3 O10 0.8285 5.9999 7.1695 O.3 1 UNCH -0.5200 + 4 O20 2.6543 6.7444 8.1480 O.2 1 UNCH -0.5200 + 5 C2 2.5010 3.5550 7.4113 C.3 1 UNCH 0.2800 + 6 O2 3.6188 2.6395 7.4261 O.3 1 UNCH -0.6800 + 7 C3 1.4552 2.9959 6.4559 C.3 1 UNCH 0.2800 + 8 O3 1.3656 1.5802 6.5390 O.3 1 UNCH -0.6800 + 9 C4 1.9709 3.4795 5.1041 C.3 1 UNCH 0.2800 + 10 O4 2.5326 4.7909 5.3414 O.3 1 UNCH -0.5600 + 11 C5 0.8673 3.5518 4.0496 C.3 1 UNCH 0.2800 + 12 H1 3.9236 5.1421 6.8441 H 1 UNCH 0.0000 + 13 H2 2.1353 3.6298 8.4404 H 1 UNCH 0.0000 + 14 H20 4.2372 2.9297 8.1227 H 1 UNCH 0.4000 + 15 H3 0.4694 3.4216 6.6725 H 1 UNCH 0.0000 + 16 H30 2.2782 1.2659 6.7112 H 1 UNCH 0.4000 + 17 H4 2.7828 2.8398 4.7352 H 1 UNCH 0.0000 + 18 H51 0.1712 4.3672 4.2722 H 1 UNCH 0.0000 + 19 H52 0.3182 2.6072 3.9898 H 1 UNCH 0.0000 + 20 H50 0.7015 3.9532 2.1508 H 1 UNCH 0.4000 + 21 O5 1.4396 3.8070 2.7669 O.3 1 UNCH -0.6800 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 10 1 + 4 1 12 1 + 5 2 3 1 + 6 2 4 2 + 7 5 6 1 + 8 5 7 1 + 9 5 13 1 + 10 6 14 1 + 11 7 8 1 + 12 7 9 1 + 13 7 15 1 + 14 8 16 1 + 15 9 10 1 + 16 9 11 1 + 17 9 17 1 + 18 11 18 1 + 19 11 19 1 + 20 11 21 1 + 21 20 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-DEOXY-1-NITRO-BETA-D-RIBOFURANOSE (AT 130 DEG.K) +@MOLECULE +FACYAJ + 19 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C11 6.0344 1.9552 7.8684 C.2 1 UNCH 0.1600 + 2 O21 6.0198 0.8229 8.6450 O.3 1 UNCH -0.2800 + 3 C31 6.0916 -0.2591 7.8067 C.2 1 UNCH -0.0100 + 4 C311 6.1516 0.1726 6.5085 C.2 1 UNCH 0.0000 + 5 C41 6.2328 -0.6172 5.3677 C.2 1 UNCH -0.1500 + 6 C51 6.2725 0.2327 4.2554 C.2 1 UNCH 0.0825 + 7 C61 6.2364 1.6504 4.2859 C.2 1 UNCH 0.0825 + 8 C71 6.1547 2.4495 5.4334 C.2 1 UNCH -0.1500 + 9 C711 6.1148 1.6087 6.5440 C.2 1 UNCH 0.0000 + 10 C81 5.9678 3.2043 8.5363 C.1 1 UNCH 0.5371 + 11 N91 5.9141 4.2380 9.0627 N.1 1 UNCH -0.5571 + 12 O101 6.3537 -0.2359 2.9710 O.3 1 UNCH -0.3625 + 13 O111 6.2922 2.1772 3.0230 O.3 1 UNCH -0.3625 + 14 C121 6.3651 0.9887 2.2129 C.3 1 UNCH 0.5600 + 15 H31 6.0887 -1.2254 8.2923 H 1 UNCH 0.1500 + 16 H41 6.2618 -1.6939 5.3155 H 1 UNCH 0.1500 + 17 H71 6.1291 3.5284 5.4220 H 1 UNCH 0.1500 + 18 H211 5.5112 0.9817 1.5259 H 1 UNCH 0.0000 + 19 H221 7.2876 1.0249 1.6223 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 9 2 + 3 1 10 1 + 4 2 3 1 + 5 3 4 2 + 6 3 15 1 + 7 4 5 1 + 8 4 9 1 + 9 5 6 2 + 10 5 16 1 + 11 6 7 1 + 12 6 12 1 + 13 7 8 2 + 14 7 13 1 + 15 8 9 1 + 16 8 17 1 + 17 10 11 3 + 18 12 14 1 + 19 13 14 1 + 20 14 18 1 + 21 14 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-CYANO-5,6-(METHYLENEDIOXY)BENZO(C)FURAN +@MOLECULE +FADMIG + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -1.9713 2.3642 -0.2775 N.3 1 FADM -0.5200 + 2 N2 -1.0467 1.3182 0.0347 N.3 1 FADM -0.4100 + 3 C3 -0.1698 1.6876 1.0442 C.2 1 FADM 0.5438 + 4 C31 -0.6709 2.9483 1.5755 C.2 1 FADM 0.0862 + 5 C4 -0.2414 3.7155 2.6400 C.2 1 FADM -0.1500 + 6 C5 -0.9500 4.8897 2.8971 C.2 1 FADM -0.1500 + 7 C6 -2.0455 5.2566 2.0905 C.2 1 FADM -0.1500 + 8 C7 -2.4506 4.4564 1.0130 C.2 1 FADM -0.1500 + 9 C71 -1.7495 3.2923 0.7665 C.2 1 FADM 0.1000 + 10 O9 0.8365 1.1100 1.4058 O.2 1 FADM -0.5700 + 11 H1 -2.9419 2.0422 -0.2512 H 1 FADM 0.4000 + 12 H2 -0.7044 0.7299 -0.7182 H 1 FADM 0.3700 + 13 H4 0.6070 3.4124 3.2431 H 1 FADM 0.1500 + 14 H5 -0.6525 5.5305 3.7245 H 1 FADM 0.1500 + 15 H6 -2.5798 6.1805 2.3040 H 1 FADM 0.1500 + 16 H7 -3.2839 4.7552 0.3863 H 1 FADM 0.1500 +@BOND + 1 1 11 1 + 2 1 9 1 + 3 1 2 1 + 4 2 12 1 + 5 2 3 am + 6 3 10 2 + 7 3 4 1 + 8 4 9 2 + 9 4 5 1 + 10 5 13 1 + 11 5 6 2 + 12 6 14 1 + 13 6 7 1 + 14 7 15 1 + 15 7 8 2 + 16 8 16 1 + 17 8 9 1 +@SUBSTRUCTURE + 1 FADM 1 +@COMMENT +COMMENT INDAZOLINONE +@MOLECULE +FADVEL + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.3416 2.0330 2.3158 S.3 1 UNCH 1.3328 + 2 S2 11.2444 1.1394 0.5689 S.3 1 UNCH 1.3785 + 3 S3 9.3545 4.3531 0.8446 S.3 1 UNCH 1.3328 + 4 O1 8.2623 2.8763 3.4902 O.3 1 UNCH -0.6500 + 5 O2 8.7223 0.6424 2.4595 O.3 1 UNCH -0.6500 + 6 O3 10.7157 2.3614 1.5372 O.3 1 UNCH -0.1007 + 7 O4 11.8599 0.1261 1.4003 O.3 1 UNCH -0.6500 + 8 O5 10.2366 0.8141 -0.4223 O.3 1 UNCH -0.6500 + 9 O6 10.4811 4.5916 -0.0408 O.3 1 UNCH -0.6500 + 10 O7 8.0212 4.7342 0.4284 O.3 1 UNCH -0.6500 + 11 N1 9.3580 2.7405 1.2112 N.3 1 UNCH -0.3590 + 12 C1 6.7674 2.0658 1.4850 C.3 1 UNCH 0.1052 + 13 C2 9.7201 5.1922 2.3771 C.3 1 UNCH 0.1052 + 14 C3 12.5511 2.0295 -0.2403 C.3 1 UNCH 0.1052 + 15 H1 6.8814 1.6287 0.4914 H 1 UNCH 0.0000 + 16 H2 6.0708 1.4623 2.0720 H 1 UNCH 0.0000 + 17 H3 6.3978 3.0892 1.4323 H 1 UNCH 0.0000 + 18 H4 10.5771 4.7181 2.8575 H 1 UNCH 0.0000 + 19 H5 9.9734 6.2264 2.1295 H 1 UNCH 0.0000 + 20 H6 8.8411 5.1921 3.0204 H 1 UNCH 0.0000 + 21 H7 12.1229 2.7989 -0.8819 H 1 UNCH 0.0000 + 22 H8 13.1138 1.3185 -0.8496 H 1 UNCH 0.0000 + 23 H9 13.2049 2.4664 0.5167 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 1 11 1 + 4 1 12 1 + 5 2 6 1 + 6 2 7 1 + 7 2 8 1 + 8 2 14 1 + 9 3 9 1 + 10 3 10 1 + 11 3 11 1 + 12 3 13 1 + 13 6 11 1 + 14 12 15 1 + 15 12 16 1 + 16 12 17 1 + 17 13 18 1 + 18 13 19 1 + 19 13 20 1 + 20 14 21 1 + 21 14 22 1 + 22 14 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRIMESYLHYDROXYLAMINE (AT 120 DEG.K) +@MOLECULE +FADVUB + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.6430 9.3364 15.9668 S.3 1 FADV 1.0291 + 2 O1 2.5018 10.2318 15.9341 O.3 1 FADV -0.6500 + 3 N1 3.6326 7.9472 15.2961 N.3 1 FADV -0.9895 + 4 C1 5.0525 10.2191 15.3273 C.3 1 FADV 0.1052 + 5 C2 4.0636 9.0822 17.6871 C.3 1 FADV 0.1052 + 6 C3 3.8229 10.3355 18.5335 C.3 1 FADV 0.0000 + 7 C4 4.7014 10.3639 19.7737 C.3 1 FADV 0.3970 + 8 N2 4.1033 11.3322 20.7816 N.3 1 FADV -0.8530 + 9 C5 6.1611 10.8340 19.4749 C.2 1 FADV 0.9060 + 10 O2 6.6676 10.4904 18.3864 O.2 1 FADV -0.9000 + 11 O3 6.5565 11.5892 20.4214 O.3 1 FADV -0.9000 + 12 H1 2.8042 7.4109 15.5588 H 1 FADV 0.4000 + 13 H2 5.9489 9.6113 15.4640 H 1 FADV 0.0000 + 14 H3 5.1488 11.1682 15.8569 H 1 FADV 0.0000 + 15 H4 4.8824 10.4096 14.2653 H 1 FADV 0.0000 + 16 H5 5.0946 8.7211 17.7138 H 1 FADV 0.0000 + 17 H6 3.4242 8.2717 18.0553 H 1 FADV 0.0000 + 18 H7 4.0058 11.2431 17.9454 H 1 FADV 0.0000 + 19 H8 2.7619 10.3616 18.8134 H 1 FADV 0.0000 + 20 H9 4.7345 9.3951 20.2831 H 1 FADV 0.0000 + 21 H10 4.9808 11.7054 21.2274 H 1 FADV 0.4500 + 22 H11 3.5150 10.9125 21.4995 H 1 FADV 0.4500 + 23 H12 3.6864 12.1537 20.3367 H 1 FADV 0.4500 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 3 12 1 + 6 4 15 1 + 7 4 14 1 + 8 4 13 1 + 9 5 17 1 + 10 5 16 1 + 11 5 6 1 + 12 6 19 1 + 13 6 18 1 + 14 6 7 1 + 15 7 20 1 + 16 7 9 1 + 17 7 8 1 + 18 8 23 1 + 19 8 22 1 + 20 8 21 1 + 21 9 11 1 + 22 9 10 2 +@SUBSTRUCTURE + 1 FADV 1 +@COMMENT +COMMENT (2S,SS)-2-AMINO-4-(S-METHYLSULFONIMIDOYL)-BUTANOIC ACID (AB +@MOLECULE +FAGBUK + 41 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 5.0264 6.1955 7.5994 P 1 FAGB 1.1340 + 2 O1 4.1427 5.4462 8.5801 O.3 1 FAGB -0.9500 + 3 N1 5.4511 8.1876 9.5963 N.2 1 FAGB -0.8334 + 4 N2 7.4582 7.2747 8.5851 N.3 1 FAGB -0.8334 + 5 C1 6.0947 7.3653 8.7070 C.2 1 FAGB 0.5918 + 6 C2 3.9792 8.1111 9.7466 C.3 1 FAGB 0.4895 + 7 C3 6.1194 8.9271 10.6804 C.3 1 FAGB 0.4895 + 8 C4 8.0606 6.0533 7.9757 C.3 1 FAGB 0.4895 + 9 C5 8.4490 8.2557 9.0437 C.3 1 FAGB 0.4895 + 10 H21 3.6183 8.9512 10.3498 H 1 FAGB 0.0000 + 11 H22 3.7057 7.1849 10.2557 H 1 FAGB 0.0000 + 12 H23 3.4941 8.2105 8.7816 H 1 FAGB 0.0000 + 13 H31 5.4068 9.1896 11.4696 H 1 FAGB 0.0000 + 14 H32 6.5375 9.8571 10.2905 H 1 FAGB 0.0000 + 15 H33 6.8786 8.3000 11.1513 H 1 FAGB 0.0000 + 16 H41 9.0802 5.9281 8.3583 H 1 FAGB 0.0000 + 17 H42 8.1271 6.1758 6.8928 H 1 FAGB 0.0000 + 18 H43 7.5135 5.1618 8.2916 H 1 FAGB 0.0000 + 19 H51 8.0631 9.2692 8.9207 H 1 FAGB 0.0000 + 20 H52 9.3478 8.1924 8.4201 H 1 FAGB 0.0000 + 21 H53 8.7337 8.0494 10.0775 H 1 FAGB 0.0000 + 22 O1A 5.9102 5.4466 6.6184 O.3 1 FAGB -0.9500 + 23 C1A 3.9581 7.3656 6.4921 C.2 1 FAGB 0.5918 + 24 N1A 4.6016 8.1882 5.6031 N.2 1 FAGB -0.8334 + 25 N2A 2.5946 7.2748 6.6140 N.3 1 FAGB -0.8334 + 26 C2A 6.0735 8.1118 5.4527 C.3 1 FAGB 0.4895 + 27 C3A 3.9333 8.9280 4.5192 C.3 1 FAGB 0.4895 + 28 C4A 1.9923 6.0532 7.2230 C.3 1 FAGB 0.4895 + 29 C5A 1.6037 8.2560 6.1557 C.3 1 FAGB 0.4895 + 30 H21A 6.4344 8.9521 4.8498 H 1 FAGB 0.0000 + 31 H22A 6.3471 7.1859 4.9434 H 1 FAGB 0.0000 + 32 H23A 6.5586 8.2110 6.4177 H 1 FAGB 0.0000 + 33 H31A 4.6459 9.1908 3.7301 H 1 FAGB 0.0000 + 34 H32A 3.5151 9.8579 4.9094 H 1 FAGB 0.0000 + 35 H33A 3.1741 8.3010 4.0481 H 1 FAGB 0.0000 + 36 H41A 0.9726 5.9281 6.8403 H 1 FAGB 0.0000 + 37 H42A 1.9257 6.1754 8.3059 H 1 FAGB 0.0000 + 38 H43A 2.5394 5.1619 6.9068 H 1 FAGB 0.0000 + 39 H51A 1.9896 9.2694 6.2790 H 1 FAGB 0.0000 + 40 H52A 0.7050 8.1924 6.7792 H 1 FAGB 0.0000 + 41 H53A 1.3190 8.0499 5.1218 H 1 FAGB 0.0000 +@BOND + 1 1 23 1 + 2 1 22 1 + 3 1 5 1 + 4 1 2 1 + 5 3 7 1 + 6 3 6 1 + 7 3 5 2 + 8 4 9 1 + 9 4 8 1 + 10 4 5 am + 11 6 12 1 + 12 6 11 1 + 13 6 10 1 + 14 7 15 1 + 15 7 14 1 + 16 7 13 1 + 17 8 18 1 + 18 8 17 1 + 19 8 16 1 + 20 9 21 1 + 21 9 20 1 + 22 9 19 1 + 23 23 25 am + 24 23 24 2 + 25 24 27 1 + 26 24 26 1 + 27 25 29 1 + 28 25 28 1 + 29 26 32 1 + 30 26 31 1 + 31 26 30 1 + 32 27 35 1 + 33 27 34 1 + 34 27 33 1 + 35 28 38 1 + 36 28 37 1 + 37 28 36 1 + 38 29 41 1 + 39 29 40 1 + 40 29 39 1 +@SUBSTRUCTURE + 1 FAGB 1 +@COMMENT +COMMENT BIS(AMIDINO)PHOSPHINYL PERCHLORATE +@MOLECULE +FAGCOF + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.1858 4.8637 1.6881 S.3 1 UNCH 1.3328 + 2 O1 3.4102 2.9974 4.2203 O.2 1 UNCH -0.5700 + 3 O2 1.8899 5.1916 2.2429 O.3 1 UNCH -0.6500 + 4 O3 3.7748 5.6945 0.6580 O.3 1 UNCH -0.6500 + 5 N1 4.2779 4.7827 2.9435 N.3 1 UNCH -0.6813 + 6 C2 4.0189 4.0336 4.0988 C.2 1 UNCH 0.7533 + 7 C3 4.7612 5.0485 4.9954 C.3 1 UNCH 0.0530 + 8 C4 4.7826 5.9476 3.7339 C.3 1 UNCH 0.4150 + 9 C5 6.1838 6.5758 3.3317 C.2 1 UNCH -0.1080 + 10 C6 6.8377 7.4897 4.1866 C.2 1 UNCH -0.1500 + 11 C7 8.0749 8.0572 3.8666 C.2 1 UNCH -0.1500 + 12 C8 8.6998 7.7288 2.6698 C.2 1 UNCH -0.1500 + 13 C9 8.0856 6.8385 1.7972 C.2 1 UNCH -0.1500 + 14 C10 6.8487 6.2747 2.1263 C.2 1 UNCH -0.1500 + 15 C12 3.1554 3.1915 1.0743 C.3 1 UNCH 0.1052 + 16 H31 5.7272 4.6802 5.3516 H 1 UNCH 0.0000 + 17 H32 4.1686 5.4308 5.8295 H 1 UNCH 0.0000 + 18 H4 4.0096 6.7296 3.7856 H 1 UNCH 0.0000 + 19 H6 6.3679 7.7708 5.1281 H 1 UNCH 0.1500 + 20 H7 8.5455 8.7584 4.5511 H 1 UNCH 0.1500 + 21 H8 9.6590 8.1704 2.4136 H 1 UNCH 0.1500 + 22 H9 8.5616 6.5837 0.8535 H 1 UNCH 0.1500 + 23 H10 6.3903 5.5907 1.4139 H 1 UNCH 0.1500 + 24 H121 2.5498 3.1832 0.1650 H 1 UNCH 0.0000 + 25 H122 2.7031 2.5336 1.8161 H 1 UNCH 0.0000 + 26 H123 4.1756 2.8832 0.8382 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 1 15 1 + 5 2 6 2 + 6 5 6 am + 7 5 8 1 + 8 6 7 1 + 9 7 8 1 + 10 7 16 1 + 11 7 17 1 + 12 8 9 1 + 13 8 18 1 + 14 9 10 2 + 15 9 14 1 + 16 10 11 1 + 17 10 19 1 + 18 11 12 2 + 19 11 20 1 + 20 12 13 1 + 21 12 21 1 + 22 13 14 2 + 23 13 22 1 + 24 14 23 1 + 25 15 24 1 + 26 15 25 1 + 27 15 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-METHYLSULFONYL-4-PHENYL-2-AZETIDINONE +@MOLECULE +FAGLII + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.4279 1.7605 -0.1582 CL 1 UNCH -0.2112 + 2 P1 1.2704 3.3330 -0.9414 P 1 UNCH 0.4132 + 3 O1 -0.0526 3.1889 0.0214 O.3 1 UNCH -0.1835 + 4 O2 1.9312 4.5847 -0.1080 O.3 1 UNCH -0.1835 + 5 C1 -0.0164 4.1354 1.0073 C.2 1 UNCH 0.0825 + 6 C2 -0.9681 4.3169 1.9884 C.2 1 UNCH -0.1500 + 7 C3 -0.7534 5.3413 2.9152 C.2 1 UNCH -0.1500 + 8 C4 0.3966 6.1505 2.8403 C.2 1 UNCH -0.1500 + 9 C5 1.3492 5.9475 1.8373 C.2 1 UNCH -0.1500 + 10 C6 1.1165 4.9325 0.9335 C.2 1 UNCH 0.0825 + 11 H2 -1.8484 3.6864 2.0399 H 1 UNCH 0.1500 + 12 H3 -1.4809 5.5147 3.7055 H 1 UNCH 0.1500 + 13 H4 0.5454 6.9405 3.5734 H 1 UNCH 0.1500 + 14 H5 2.2393 6.5627 1.7735 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 2 4 1 + 4 3 5 1 + 5 4 10 1 + 6 5 6 2 + 7 5 10 1 + 8 6 7 1 + 9 6 11 1 + 10 7 8 2 + 11 7 12 1 + 12 8 9 1 + 13 8 13 1 + 14 9 10 2 + 15 9 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-PHENYLENEPHOSPHORO-CHLORIDITE +@MOLECULE +FAGVEO + 8 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.0933 6.5433 3.3227 O.2 1 CHGB -0.5700 + 2 O2 5.5482 6.7901 6.4543 O.2 1 CHGB -0.5700 + 3 O3 4.5555 3.7611 6.5202 O.2 1 CHGB -0.5700 + 4 O4 5.1006 3.5143 3.3887 O.2 1 CHGB -0.5700 + 5 C1 5.6878 5.8097 4.1658 C.2 1 CHGB 0.5700 + 6 C2 5.4302 5.9264 5.6459 C.2 1 CHGB 0.5700 + 7 C3 4.9610 4.4947 5.6771 C.2 1 CHGB 0.5700 + 8 C4 5.2186 4.3781 4.1970 C.2 1 CHGB 0.5700 +@BOND + 1 1 5 2 + 2 2 6 2 + 3 3 7 2 + 4 4 8 2 + 5 5 6 1 + 6 5 8 1 + 7 6 7 1 + 8 7 8 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT STRONTIUM SQUARATE TRIHYDRATE (TYPE I) +@MOLECULE +FAGZOC + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -0.3796 1.3471 5.6882 BR 1 FAGZ -0.1100 + 2 O1 1.3542 1.2816 8.4428 O.3 1 FAGZ -0.8500 + 3 O2 -2.9387 0.1357 6.8407 O.2 1 FAGZ -0.5700 + 4 C1 0.1063 1.0327 8.4816 C.2 1 FAGZ -0.1356 + 5 C2 -2.2701 0.6630 7.7364 C.2 1 FAGZ 0.5412 + 6 C3 -0.8250 1.0015 7.5003 C.2 1 FAGZ 0.1244 + 7 C2M -0.4805 0.6633 9.8435 C.2 1 FAGZ 0.5412 + 8 C1M -2.8569 1.0326 9.0981 C.2 1 FAGZ -0.1356 + 9 O2M 0.1882 0.1363 10.7393 O.2 1 FAGZ -0.5700 + 10 C3M -1.9256 1.0017 10.0795 C.2 1 FAGZ 0.1244 + 11 O1M -4.1049 1.2814 9.1369 O.3 1 FAGZ -0.8500 + 12 BR1M -2.3710 1.3477 11.8915 BR 1 FAGZ -0.1100 +@BOND + 1 1 6 1 + 2 2 4 1 + 3 3 5 2 + 4 4 6 2 + 5 4 7 1 + 6 5 6 1 + 7 5 8 1 + 8 7 9 2 + 9 7 10 1 + 10 8 10 2 + 11 8 11 1 + 12 10 12 1 +@SUBSTRUCTURE + 1 FAGZ 1 +@COMMENT +COMMENT BARIUM 3,6-DIBROMO-2,5-DIHYDROXY-P-BENZOQUINONE TRIHYDRATE +@MOLECULE +FAHPUZ + 29 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.2578 2.4075 12.7284 S.3 1 FAHN 1.3328 + 2 O1 5.4010 3.1492 12.2398 O.3 1 FAHN -0.6500 + 3 O2 4.4349 1.0573 13.2347 O.3 1 FAHN -0.6500 + 4 N1 3.0375 2.3518 11.5748 N.3 1 FAHN -0.6927 + 5 C1 2.8889 3.4227 10.6421 C.2 1 FAHN 0.1990 + 6 C2 3.8457 3.9213 9.7765 C.2 1 FAHN -0.1500 + 7 C3 3.4686 4.9210 8.8761 C.2 1 FAHN -0.1500 + 8 C4 2.1473 5.3920 8.8437 C.2 1 FAHN -0.1500 + 9 C5 1.1856 4.8696 9.7109 C.2 1 FAHN -0.1500 + 10 C6 1.5711 3.8775 10.6022 C.2 1 FAHN -0.1435 + 11 C7 0.7409 3.2071 11.6603 C.3 1 FAHN 0.2817 + 12 C8 1.6775 2.0006 12.0683 C.3 1 FAHN 0.6257 + 13 C9 0.4621 4.1590 12.8057 C.2 1 FAHN -0.2882 + 14 C10 1.0696 4.0087 13.9948 C.2 1 FAHN -0.2882 + 15 C11 2.0382 2.8773 14.2611 C.3 1 FAHN 0.4082 + 16 N2 1.6198 1.6985 13.4948 N.3 1 FAHN -0.9000 + 17 C12 3.4805 3.3401 14.0285 C.3 1 FAHN 0.1052 + 18 H2 4.8625 3.5416 9.7777 H 1 FAHN 0.1500 + 19 H3 4.2054 5.3310 8.1890 H 1 FAHN 0.1500 + 20 H4 1.8721 6.1704 8.1353 H 1 FAHN 0.1500 + 21 H5 0.1653 5.2398 9.6881 H 1 FAHN 0.1500 + 22 H7 -0.2036 2.8221 11.2599 H 1 FAHN 0.0000 + 23 H8 1.3579 1.1075 11.5145 H 1 FAHN 0.0000 + 24 H9 -0.2310 4.9782 12.6397 H 1 FAHN 0.1500 + 25 H10 0.8814 4.7179 14.7968 H 1 FAHN 0.1500 + 26 H11 1.9269 2.6218 15.3223 H 1 FAHN 0.0000 + 27 H121 3.5544 4.3985 13.7563 H 1 FAHN 0.0000 + 28 H122 4.0885 3.1716 14.9242 H 1 FAHN 0.0000 + 29 H13 2.2483 0.9111 13.6800 H 1 FAHN 0.3600 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 17 1 + 5 4 5 1 + 6 4 12 1 + 7 5 6 2 + 8 5 10 1 + 9 6 7 1 + 10 6 18 1 + 11 7 8 2 + 12 7 19 1 + 13 8 9 1 + 14 8 20 1 + 15 9 10 2 + 16 9 21 1 + 17 10 11 1 + 18 11 12 1 + 19 11 13 1 + 20 11 22 1 + 21 12 16 1 + 22 12 23 1 + 23 13 14 2 + 24 13 24 1 + 25 14 15 1 + 26 14 25 1 + 27 15 16 1 + 28 15 17 1 + 29 15 26 1 + 30 16 29 1 + 31 17 27 1 + 32 17 28 1 +@SUBSTRUCTURE + 1 FAHN 1 +@COMMENT +COMMENT 2,3-BENZO-9,1,11-THIADIAZATRICYCLO(5.2.2.0-4,10-)UNDEC-5-EN +@MOLECULE +FAHSUC + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.6580 4.1935 0.0029 N.2 1 FAHS -0.6200 + 2 C2 1.2945 5.4990 0.0031 C.2 1 FAHS 0.5210 + 3 N3 2.1407 6.5497 0.0159 N.2 1 FAHS -0.2100 + 4 C4 3.4538 6.2659 0.0220 C.2 1 FAHS 0.4780 + 5 C5 3.8735 4.9336 0.0222 C.2 1 FAHS 0.1170 + 6 C6 2.9684 3.8976 0.0224 C.2 1 FAHS 0.4100 + 7 N7 5.2641 4.8951 0.0011 N.3 1 FAHS -0.5470 + 8 C8 5.7483 6.2025 -0.0143 C.2 1 FAHS 0.6900 + 9 N9 4.6210 7.0533 0.0138 N.3 1 FAHS -0.4771 + 10 O10 6.9191 6.5279 -0.0503 O.2 1 FAHS -0.5700 + 11 C11 4.7208 8.4829 -0.0143 C.3 1 FAHS 0.3001 + 12 C12 1.6181 7.9103 0.0108 C.3 1 FAHS 0.4880 + 13 N13 3.4145 2.5770 -0.0320 N.3 1 FAHS -0.8691 + 14 C14 2.3790 1.5523 -0.0146 C.3 1 FAHS 0.3691 + 15 H1 1.9692 8.4159 0.9127 H 1 FAHS 0.0000 + 16 H2 2.8510 0.5668 -0.0793 H 1 FAHS 0.0000 + 17 H3 0.5250 7.8933 0.0139 H 1 FAHS 0.0000 + 18 H4 1.8004 1.5867 0.9148 H 1 FAHS 0.0000 + 19 H5 4.2319 8.8999 0.8696 H 1 FAHS 0.0000 + 20 H6 5.8512 4.0740 -0.0624 H 1 FAHS 0.3700 + 21 H7 0.2244 5.6939 -0.0111 H 1 FAHS 0.1500 + 22 H8 5.7687 8.7965 -0.0107 H 1 FAHS 0.0000 + 23 H9 4.1279 2.3952 0.6710 H 1 FAHS 0.4000 + 24 H5L 4.2498 8.8621 -0.9247 H 1 FAHS 0.0000 + 25 H1L 1.9657 8.4081 -0.8968 H 1 FAHS 0.0000 + 26 H4L 1.7046 1.6517 -0.8719 H 1 FAHS 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 21 1 + 4 2 3 2 + 5 3 12 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 + 9 5 7 1 + 10 5 6 1 + 11 6 13 am + 12 7 20 1 + 13 7 8 am + 14 8 10 2 + 15 8 9 am + 16 9 11 1 + 17 11 24 1 + 18 11 22 1 + 19 11 19 1 + 20 12 25 1 + 21 12 17 1 + 22 12 15 1 + 23 13 23 1 + 24 13 14 1 + 25 14 26 1 + 26 14 18 1 + 27 14 16 1 +@SUBSTRUCTURE + 1 FAHS 1 +@COMMENT +COMMENT 3,9-DIMETHYL-6-METHYLIMINO-8-OXO-3,6,8,9-TETRAHYDROPURINE H +@MOLECULE +FAHYUI + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.6985 3.3140 6.0300 S.3 1 FAHY -0.3710 + 2 O1 1.0274 2.5602 8.1887 O.3 1 FAHY -0.6330 + 3 N1 1.5458 3.7223 8.3352 N.2 1 FAHY 0.5300 + 4 C1 2.9130 5.6161 7.5404 C.2 1 FAHY 0.0862 + 5 C2 4.2883 5.7481 7.7456 C.2 1 FAHY -0.1500 + 6 C3 4.8460 7.0214 7.8588 C.2 1 FAHY -0.1500 + 7 C4 4.0326 8.1517 7.7613 C.2 1 FAHY -0.1500 + 8 C5 2.6602 8.0139 7.5451 C.2 1 FAHY -0.1500 + 9 C6 2.0953 6.7437 7.4310 C.2 1 FAHY -0.1500 + 10 C7 2.3276 4.2839 7.4281 C.2 1 FAHY 0.0588 + 11 C8 1.1442 3.4706 5.1213 C.3 1 FAHY 0.2300 + 12 C9 1.2087 4.4113 9.6023 C.3 1 FAHY 0.0990 + 13 H2 4.9272 4.8708 7.8156 H 1 FAHY 0.1500 + 14 H3 5.9158 7.1337 8.0178 H 1 FAHY 0.1500 + 15 H4 4.4715 9.1433 7.8459 H 1 FAHY 0.1500 + 16 H5 2.0341 8.8989 7.4590 H 1 FAHY 0.1500 + 17 H6 1.0287 6.6463 7.2466 H 1 FAHY 0.1500 + 18 H81 0.9164 4.5242 4.9380 H 1 FAHY 0.0000 + 19 H82 0.3165 3.0149 5.6698 H 1 FAHY 0.0000 + 20 H83 1.2394 2.9636 4.1574 H 1 FAHY 0.0000 + 21 H91 0.7293 3.6976 10.2784 H 1 FAHY 0.0000 + 22 H92 0.5144 5.2249 9.3820 H 1 FAHY 0.0000 + 23 H93 2.1252 4.7808 10.0681 H 1 FAHY 0.0000 +@BOND + 1 1 11 1 + 2 1 10 1 + 3 2 3 1 + 4 3 12 1 + 5 3 10 2 + 6 4 10 1 + 7 4 9 1 + 8 4 5 2 + 9 5 13 1 + 10 5 6 1 + 11 6 14 1 + 12 6 7 2 + 13 7 15 1 + 14 7 8 1 + 15 8 16 1 + 16 8 9 2 + 17 9 17 1 + 18 11 20 1 + 19 11 19 1 + 20 11 18 1 + 21 12 23 1 + 22 12 22 1 + 23 12 21 1 +@SUBSTRUCTURE + 1 FAHY 1 +@COMMENT +COMMENT S-METHYL N-METHYLTHIOBENZIMIDATE N-OXIDE +@MOLECULE +FAHZET + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.7770 1.4174 10.0427 S.3 1 UNCH 1.6217 + 2 O1 3.9114 0.3255 8.8532 O.3 1 UNCH -0.2604 + 3 O2 3.1070 -1.2955 12.5644 O.2 1 UNCH -0.5700 + 4 O3 2.4569 2.0053 9.9818 O.3 1 UNCH -0.6500 + 5 O4 4.9621 2.2450 10.0500 O.3 1 UNCH -0.6500 + 6 N1 3.8296 0.5064 11.4114 N.3 1 UNCH -0.7943 + 7 C1 3.4169 -0.9503 9.0121 C.2 1 UNCH 0.0483 + 8 C2 3.1028 -1.5155 10.1957 C.2 1 UNCH -0.1238 + 9 C3 3.3257 -0.7844 11.4768 C.2 1 UNCH 0.7919 + 10 C4 2.5290 -2.8946 10.3795 C.3 1 UNCH 0.1382 + 11 C5 3.2717 -1.6482 7.7285 C.2 1 UNCH 0.0284 + 12 C6 2.1915 -1.3486 6.8890 C.2 1 UNCH -0.1500 + 13 C7 2.0471 -2.0090 5.6676 C.2 1 UNCH -0.1500 + 14 C8 2.9817 -2.9673 5.2773 C.2 1 UNCH -0.1500 + 15 C9 4.0638 -3.2651 6.1047 C.2 1 UNCH -0.1500 + 16 C10 4.2112 -2.6066 7.3268 C.2 1 UNCH -0.1500 + 17 H1 1.4576 -0.5994 7.1786 H 1 UNCH 0.1500 + 18 H2 1.2071 -1.7732 5.0188 H 1 UNCH 0.1500 + 19 H3 2.8693 -3.4788 4.3244 H 1 UNCH 0.1500 + 20 H4 4.7951 -4.0077 5.7954 H 1 UNCH 0.1500 + 21 H5 5.0645 -2.8437 7.9580 H 1 UNCH 0.1500 + 22 H6 3.9060 1.0258 12.2782 H 1 UNCH 0.4200 + 23 H7 2.2815 -3.3917 9.4378 H 1 UNCH 0.0000 + 24 H8 3.2411 -3.5334 10.9128 H 1 UNCH 0.0000 + 25 H9 1.6022 -2.8464 10.9619 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 1 6 1 + 5 2 7 1 + 6 3 9 2 + 7 6 9 am + 8 6 22 1 + 9 7 8 2 + 10 7 11 1 + 11 8 9 1 + 12 8 10 1 + 13 10 23 1 + 14 10 24 1 + 15 10 25 1 + 16 11 12 2 + 17 11 16 1 + 18 12 13 1 + 19 12 17 1 + 20 13 14 2 + 21 13 18 1 + 22 14 15 1 + 23 14 19 1 + 24 15 16 2 + 25 15 20 1 + 26 16 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-METHYL-6-PHENYL-1,2,3-OXATHIAZIN-4(3H)-ONE 2,2-DIOXIDE +@MOLECULE +FAJWIW + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.8249 5.8257 5.0553 O.3 1 UNCH -0.4300 + 2 O2 7.1067 5.3821 3.4829 O.2 1 UNCH -0.5700 + 3 O3 4.1764 2.0795 2.8328 O.3 1 UNCH -0.4300 + 4 N1 5.6099 3.7591 3.1814 N.3 1 UNCH -0.4900 + 5 N3 5.0138 5.7056 4.3025 N.2 1 UNCH -0.6610 + 6 N5 3.4517 3.9753 3.9705 N.2 1 UNCH -0.6610 + 7 C1 3.1183 7.1220 5.5826 C.3 1 UNCH 0.2800 + 8 C2 5.9608 4.9779 3.6534 C.2 1 UNCH 0.8410 + 9 C3 2.8649 1.5230 2.9830 C.3 1 UNCH 0.2800 + 10 C4 3.8440 5.1908 4.4277 C.2 1 UNCH 0.8110 + 11 C6 4.3604 3.3095 3.3631 C.2 1 UNCH 0.6600 + 12 H1 6.2990 3.2081 2.6988 H 1 UNCH 0.3700 + 13 H11 3.9026 7.0587 6.3433 H 1 UNCH 0.0000 + 14 H12 3.4058 7.8074 4.7793 H 1 UNCH 0.0000 + 15 H13 2.2103 7.5067 6.0552 H 1 UNCH 0.0000 + 16 H31 2.8623 0.5364 2.5116 H 1 UNCH 0.0000 + 17 H32 2.6199 1.4012 4.0427 H 1 UNCH 0.0000 + 18 H33 2.1231 2.1499 2.4786 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 1 10 1 + 3 2 8 2 + 4 3 9 1 + 5 3 11 1 + 6 4 8 am + 7 4 11 am + 8 4 12 1 + 9 5 8 am + 10 5 10 2 + 11 6 10 am + 12 6 11 2 + 13 7 13 1 + 14 7 14 1 + 15 7 15 1 + 16 9 16 1 + 17 9 17 1 + 18 9 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,6-DIMETHOXY-1,3,5-TRIAZIN-2(1H)-ONE +@MOLECULE +FAMHAC + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -2.7475 -1.5510 10.6881 S.3 1 UNCH -0.6773 + 2 P1 -1.8871 -0.5754 9.2350 P 1 UNCH 1.3554 + 3 O1 -0.2786 -0.4031 9.5084 O.3 1 UNCH -0.5512 + 4 N1 -1.9445 -1.2311 7.6992 N.3 1 UNCH -0.8079 + 5 C1 -1.3169 -0.4885 6.6063 C.3 1 UNCH 0.2700 + 6 C2 -1.5520 -2.6381 7.5874 C.3 1 UNCH 0.2700 + 7 C3 0.1296 0.9658 9.7089 C.3 1 UNCH 0.4235 + 8 C4 -1.0431 1.8582 9.3861 C.2 1 UNCH -0.1435 + 9 C5 -2.2169 1.1498 9.1037 C.2 1 UNCH -0.1390 + 10 C6 -3.3994 1.8034 8.7891 C.2 1 UNCH -0.1500 + 11 C7 -3.3986 3.1974 8.7502 C.2 1 UNCH -0.1500 + 12 C8 -2.2258 3.9145 9.0251 C.2 1 UNCH -0.1500 + 13 C9 -1.0405 3.2471 9.3448 C.2 1 UNCH -0.1500 + 14 C10 0.6118 1.1196 11.1425 C.3 1 UNCH 0.0000 + 15 H11 -0.2318 -0.4212 6.7372 H 1 UNCH 0.0000 + 16 H12 -1.7178 0.5264 6.5370 H 1 UNCH 0.0000 + 17 H13 -1.5218 -0.9573 5.6371 H 1 UNCH 0.0000 + 18 H21 -1.7329 -3.0252 6.5783 H 1 UNCH 0.0000 + 19 H22 -0.4931 -2.7762 7.8309 H 1 UNCH 0.0000 + 20 H23 -2.1434 -3.2652 8.2606 H 1 UNCH 0.0000 + 21 H3 0.9437 1.1653 9.0042 H 1 UNCH 0.0000 + 22 H6 -4.3050 1.2409 8.5805 H 1 UNCH 0.1500 + 23 H7 -4.3140 3.7329 8.5083 H 1 UNCH 0.1500 + 24 H8 -2.2418 5.0018 8.9926 H 1 UNCH 0.1500 + 25 H9 -0.1385 3.8139 9.5582 H 1 UNCH 0.1500 + 26 H101 0.9696 2.1345 11.3423 H 1 UNCH 0.0000 + 27 H102 -0.1881 0.8916 11.8564 H 1 UNCH 0.0000 + 28 H103 1.4263 0.4166 11.3477 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 2 4 1 + 4 2 9 1 + 5 3 7 1 + 6 4 5 1 + 7 4 6 1 + 8 5 15 1 + 9 5 16 1 + 10 5 17 1 + 11 6 18 1 + 12 6 19 1 + 13 6 20 1 + 14 7 8 1 + 15 7 14 1 + 16 7 21 1 + 17 8 9 2 + 18 8 13 1 + 19 9 10 1 + 20 10 11 2 + 21 10 22 1 + 22 11 12 1 + 23 11 23 1 + 24 12 13 2 + 25 12 24 1 + 26 13 25 1 + 27 14 26 1 + 28 14 27 1 + 29 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-DIMETHYLAMINO-3-METHYL-3H-2,1LAMBDA-5--BENZOXAPHOSPHOLE 1 +@MOLECULE +FAMYUN + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -0.0296 2.1529 5.7552 BR 1 FAMY 0.0060 + 2 N1 0.0456 3.5520 6.9901 N.3 1 FAMY -0.1260 + 3 C2 0.9251 3.5819 8.0345 C.2 1 FAMY 0.5690 + 4 O2 1.7707 2.7510 8.3335 O.2 1 FAMY -0.5700 + 5 C3 0.6980 4.8467 8.8088 C.3 1 FAMY 0.0610 + 6 C4 -0.4300 5.5514 8.0789 C.3 1 FAMY 0.0610 + 7 C5 -0.7738 4.6433 6.9353 C.2 1 FAMY 0.5690 + 8 O5 -1.6508 4.8887 6.1196 O.2 1 FAMY -0.5700 + 9 H31 0.4173 4.6061 9.8383 H 1 FAMY 0.0000 + 10 H32 1.6103 5.4502 8.8094 H 1 FAMY 0.0000 + 11 H41 -1.3030 5.6809 8.7252 H 1 FAMY 0.0000 + 12 H42 -0.1099 6.5250 7.6964 H 1 FAMY 0.0000 +@BOND + 1 1 2 1 + 2 2 3 am + 3 2 7 am + 4 3 4 2 + 5 3 5 1 + 6 5 6 1 + 7 5 9 1 + 8 5 10 1 + 9 6 7 1 + 10 6 11 1 + 11 6 12 1 + 12 7 8 2 +@SUBSTRUCTURE + 1 FAMY 1 +@COMMENT +COMMENT CESIUM TRIS(N-BROMOSUCCINIMIDE) BROMATE +@MOLECULE +FAPLUD + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 3.2436 1.0519 2.1639 P 1 FAPL 1.3893 + 2 N1 2.9360 0.6040 0.5865 N.3 1 FAPL -0.6860 + 3 N2 2.6688 2.6159 2.0809 N.3 1 FAPL -0.6860 + 4 N3 1.1804 2.0907 0.3964 N.3 1 FAPL -0.4900 + 5 C1 1.6449 2.9896 1.3020 C.2 1 FAPL 0.6900 + 6 C2 1.9005 1.0654 -0.1273 C.2 1 FAPL 0.6900 + 7 S1 5.1509 1.0503 2.5071 S.3 1 FAPL -0.9273 + 8 O1 2.3299 0.2654 3.0593 O.3 1 FAPL -0.9500 + 9 O2 1.1670 4.1228 1.3623 O.2 1 FAPL -0.5700 + 10 O3 1.6328 0.6165 -1.2421 O.2 1 FAPL -0.5700 + 11 H1 3.4303 -0.1968 0.2393 H 1 FAPL 0.3700 + 12 H2 2.9727 3.2480 2.7980 H 1 FAPL 0.3700 + 13 H3 0.4680 2.4507 -0.2157 H 1 FAPL 0.3700 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 3 1 + 4 1 2 1 + 5 2 11 1 + 6 2 6 am + 7 3 12 1 + 8 3 5 am + 9 4 13 1 + 10 4 6 am + 11 4 5 am + 12 5 9 2 + 13 6 10 2 +@SUBSTRUCTURE + 1 FAPL 1 +@COMMENT +COMMENT POTASSIUM 4,6-DIOXO-2-THIOXO-1,3,5,2LAMBDA-5--TRIAZAPHOSPHI +@MOLECULE +FARMAM + 24 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.8578 6.7425 2.1770 C.2 1 UNCH -0.1810 + 2 C2 7.4655 6.8135 3.4607 C.2 1 UNCH -0.1500 + 3 C3 7.4134 5.5936 4.2533 C.2 1 UNCH -0.1500 + 4 C4 7.7483 4.3968 3.7322 C.2 1 UNCH -0.1050 + 5 C41 8.1655 4.3087 2.3733 C.2 1 UNCH 0.1415 + 6 N5 8.5391 3.2732 1.6405 N.2 1 UNCH -0.5653 + 7 C51 8.8206 3.8069 0.4238 C.2 1 UNCH 0.4544 + 8 N6 9.2479 3.3438 -0.7792 N.2 1 UNCH -0.5653 + 9 C61 9.3121 4.4229 -1.5409 C.2 1 UNCH 0.1415 + 10 C7 9.6919 4.5904 -2.9033 C.2 1 UNCH -0.1050 + 11 C8 9.6720 5.8185 -3.4576 C.2 1 UNCH -0.1500 + 12 C9 9.2694 6.9932 -2.6978 C.2 1 UNCH -0.1500 + 13 C10 8.9089 6.8471 -1.4111 C.2 1 UNCH -0.1810 + 14 N11 8.9309 5.5772 -0.8429 N.3 1 UNCH 0.3342 + 15 C111 8.6243 5.1481 0.4055 C.2 1 UNCH -0.3032 + 16 N12 8.2028 5.5047 1.6431 N.3 1 UNCH 0.3342 + 17 H1 7.9190 7.6086 1.5332 H 1 UNCH 0.1500 + 18 H2 7.1859 7.7529 3.9260 H 1 UNCH 0.1500 + 19 H3 7.0935 5.6744 5.2882 H 1 UNCH 0.1500 + 20 H4 7.7101 3.4871 4.3207 H 1 UNCH 0.1500 + 21 H7 9.9914 3.7143 -3.4674 H 1 UNCH 0.1500 + 22 H8 9.9593 5.9599 -4.4955 H 1 UNCH 0.1500 + 23 H9 9.2700 7.9605 -3.1891 H 1 UNCH 0.1500 + 24 H10 8.5996 7.6764 -0.7905 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 16 1 + 3 1 17 1 + 4 2 3 1 + 5 2 18 1 + 6 3 4 2 + 7 3 19 1 + 8 4 5 1 + 9 4 20 1 + 10 5 6 2 + 11 5 16 am + 12 6 7 1 + 13 7 8 1 + 14 7 15 2 + 15 8 9 2 + 16 9 10 1 + 17 9 14 am + 18 10 11 2 + 19 10 21 1 + 20 11 12 1 + 21 11 22 1 + 22 12 13 2 + 23 12 23 1 + 24 13 14 1 + 25 13 24 1 + 26 14 15 1 + 27 15 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT PYRIDO(1'',2''.1',2')IMIDAZO(4',5'.4,5)IMIDAZO(1,2-A)PYRIDI +@MOLECULE +FARSOG + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.0494 6.2166 2.6180 S.3 1 FARS 0.4414 + 2 N1 3.5017 4.9517 1.6328 N.2 1 FARS -0.5095 + 3 C1 3.9948 5.5014 0.5198 C.2 1 FARS 0.2428 + 4 C2 4.0018 6.9660 0.5350 C.2 1 FARS 0.2428 + 5 N2 3.5138 7.4973 1.6592 N.2 1 FARS -0.5095 + 6 C3 4.5309 4.7412 -0.6045 C.2 1 FARS 0.0920 + 7 C4 4.5452 7.7441 -0.5735 C.2 1 FARS 0.0920 + 8 C5 4.1708 3.4612 -0.8952 C.2 1 FARS 0.1300 + 9 C6 4.1974 9.0332 -0.8376 C.2 1 FARS 0.1300 + 10 C7 3.1957 2.7427 -0.1396 C.1 1 FARS 0.4921 + 11 C8 3.2291 9.7452 -0.0672 C.1 1 FARS 0.4921 + 12 N3 2.3866 2.1392 0.4328 N.1 1 FARS -0.5571 + 13 N4 2.4257 10.3444 0.5176 N.1 1 FARS -0.5571 + 14 C1B 5.4897 5.5140 -1.3874 C.2 1 FARS 0.2428 + 15 C2B 5.4967 6.9786 -1.3723 C.2 1 FARS 0.2428 + 16 C7B 4.6761 2.7551 -2.0284 C.1 1 FARS 0.4921 + 17 C8B 4.7095 9.7577 -1.9560 C.1 1 FARS 0.4921 + 18 N1B 6.4561 4.9766 -2.1367 N.2 1 FARS -0.5095 + 19 N2B 6.4682 7.5221 -2.1103 N.2 1 FARS -0.5095 + 20 N3B 5.0424 2.1615 -2.9557 N.1 1 FARS -0.5571 + 21 N4B 5.0816 10.3668 -2.8709 N.1 1 FARS -0.5571 + 22 S1B 7.2966 6.2524 -2.8008 S.3 1 FARS 0.4414 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 3 4 1 + 5 3 6 1 + 6 4 5 2 + 7 4 7 1 + 8 6 8 2 + 9 6 14 1 + 10 7 9 2 + 11 7 15 1 + 12 8 10 1 + 13 8 16 1 + 14 9 11 1 + 15 9 17 1 + 16 10 12 3 + 17 11 13 3 + 18 14 15 1 + 19 14 18 2 + 20 15 19 2 + 21 16 20 3 + 22 17 21 3 + 23 18 22 1 + 24 19 22 1 +@SUBSTRUCTURE + 1 FARS 1 +@COMMENT +COMMENT BIS(1,2,5-THIADIAZOLO)-7,7,8,8-TETRACYANOQUINODIMETHANE +@MOLECULE +FARWEA + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.6568 0.7261 12.3616 S.2 1 CHGB -0.7500 + 2 S2 1.2433 2.2362 9.8336 S.3 1 CHGB -0.7500 + 3 N1 0.2750 3.2697 12.1482 N.2 1 CHGB -0.8080 + 4 N2 1.4038 5.0238 10.9888 N.3 1 CHGB -0.8500 + 5 C1 0.7356 2.1515 11.4513 C.2 1 CHGB 0.8580 + 6 C2 0.5497 4.5080 11.9262 C.2 1 CHGB 0.4390 + 7 C3 -0.1653 5.5203 12.7953 C.3 1 CHGB 0.0610 + 8 H1 1.0645 5.8511 10.5188 H 1 CHGB 0.4000 + 9 H2 1.6442 4.2932 10.3077 H 1 CHGB 0.4000 + 10 H3 -0.5764 5.0421 13.6889 H 1 CHGB 0.0000 + 11 H4 -0.9820 5.9683 12.2219 H 1 CHGB 0.0000 + 12 H5 0.5303 6.3071 13.1009 H 1 CHGB 0.0000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 3 5 1 + 4 3 6 2 + 5 4 6 am + 6 4 8 1 + 7 4 9 1 + 8 6 7 1 + 9 7 10 1 + 10 7 11 1 + 11 7 12 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT ACETAMIDINIUM N-ACETIMIDOYL DITHIOCARBAMATE +@MOLECULE +FASGUB + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.5463 0.3289 0.5404 C.2 1 UNCH 0.5500 + 2 N1 1.5434 1.3597 -0.2700 N.2 1 UNCH -0.5030 + 3 N2 2.0919 1.1234 -1.4964 N.3 1 UNCH -0.6670 + 4 N3 2.0938 -0.8999 0.2026 N.3 1 UNCH -0.4610 + 5 N4 2.5573 -1.7386 1.2500 N.3 1 UNCH -0.7090 + 6 N5 1.0120 0.3629 1.8160 N.3 1 UNCH -0.4610 + 7 N6 0.0305 1.3508 2.0810 N.3 1 UNCH -0.7090 + 8 H1 2.3265 2.0271 -1.9187 H 1 UNCH 0.3600 + 9 H2 1.3632 0.7533 -2.1153 H 1 UNCH 0.3600 + 10 H3 2.6813 -0.7669 -0.6259 H 1 UNCH 0.4000 + 11 H4 2.9079 -2.6179 0.8636 H 1 UNCH 0.3600 + 12 H5 3.3553 -1.2926 1.7139 H 1 UNCH 0.3600 + 13 H6 0.8596 -0.5827 2.1719 H 1 UNCH 0.4000 + 14 H7 0.4372 2.2579 1.8241 H 1 UNCH 0.3600 + 15 H8 -0.7369 1.2381 1.4124 H 1 UNCH 0.3600 +@BOND + 1 1 2 2 + 2 1 4 am + 3 1 6 am + 4 2 3 1 + 5 3 8 1 + 6 3 9 1 + 7 4 5 1 + 8 4 10 1 + 9 5 11 1 + 10 5 12 1 + 11 6 7 1 + 12 6 13 1 + 13 7 14 1 + 14 7 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2,3-TRIAMINOGUANIDINE (AT 168 DEG.K) +@MOLECULE +FASJIS + 39 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.6425 2.5491 8.9461 P 1 FASG 1.4843 + 2 P2 -2.2869 3.9878 8.5526 P 1 FASG 1.5037 + 3 S1 2.1081 3.8007 8.5873 S.3 1 FASG -0.6773 + 4 O1 1.1139 1.1041 9.5138 O.3 1 FASG -0.3537 + 5 O2 -2.1149 5.0672 7.5255 O.3 1 FASG -0.7000 + 6 N1 -0.4520 2.1931 7.7057 N.3 1 FASG -0.5379 + 7 N2 -1.9143 2.4611 7.9884 N.3 1 FASG -0.6279 + 8 N3 -1.2723 4.2355 9.8558 N.3 1 FASG -0.6279 + 9 N4 -0.3858 3.0699 10.2002 N.3 1 FASG -0.5379 + 10 N5 -3.8036 3.8335 9.1728 N.3 1 FASG -0.8079 + 11 C1 1.7312 0.0980 8.8295 C.2 1 FASG 0.0825 + 12 C2 1.6539 -1.1639 9.4243 C.2 1 FASG -0.1500 + 13 C3 2.2494 -2.2701 8.8172 C.2 1 FASG -0.1500 + 14 C4 2.9323 -2.1155 7.6137 C.2 1 FASG -0.1500 + 15 C5 3.0216 -0.8553 7.0248 C.2 1 FASG -0.1500 + 16 C6 2.4240 0.2525 7.6335 C.2 1 FASG -0.1500 + 17 C7 -0.1819 2.6468 6.3441 C.3 1 FASG 0.2700 + 18 C8 0.1957 3.3140 11.5155 C.3 1 FASG 0.2700 + 19 C9 -3.9949 3.1638 10.4542 C.3 1 FASG 0.2700 + 20 C10 -4.6368 5.0315 9.1219 C.3 1 FASG 0.2700 + 21 H1 -2.2294 1.7819 8.6753 H 1 FASG 0.3600 + 22 H2 1.1236 -1.2901 10.3647 H 1 FASG 0.1500 + 23 H3 2.1816 -3.2493 9.2837 H 1 FASG 0.1500 + 24 H4 3.4000 -2.9735 7.1377 H 1 FASG 0.1500 + 25 H5 3.5649 -0.7314 6.0909 H 1 FASG 0.1500 + 26 H6 2.5389 1.2158 7.1517 H 1 FASG 0.1500 + 27 H7 -0.6908 5.0442 9.6239 H 1 FASG 0.3600 + 28 H8 -0.1945 3.7378 6.2625 H 1 FASG 0.0000 + 29 H9 -0.9155 2.2380 5.6396 H 1 FASG 0.0000 + 30 H10 0.7967 2.2935 6.0080 H 1 FASG 0.0000 + 31 H11 0.8461 4.1948 11.5221 H 1 FASG 0.0000 + 32 H12 -0.5894 3.4589 12.2661 H 1 FASG 0.0000 + 33 H13 0.7866 2.4506 11.8371 H 1 FASG 0.0000 + 34 H14 -3.4547 2.2125 10.4835 H 1 FASG 0.0000 + 35 H15 -5.0512 2.9232 10.6189 H 1 FASG 0.0000 + 36 H16 -3.6459 3.7789 11.2905 H 1 FASG 0.0000 + 37 H17 -4.6661 5.4354 8.1046 H 1 FASG 0.0000 + 38 H18 -4.2531 5.8107 9.7890 H 1 FASG 0.0000 + 39 H19 -5.6746 4.8120 9.3966 H 1 FASG 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 6 1 + 4 1 9 1 + 5 2 5 1 + 6 2 7 1 + 7 2 8 1 + 8 2 10 1 + 9 4 11 1 + 10 6 7 1 + 11 6 17 1 + 12 7 21 1 + 13 8 9 1 + 14 8 27 1 + 15 9 18 1 + 16 10 19 1 + 17 10 20 1 + 18 11 12 2 + 19 11 16 1 + 20 12 13 1 + 21 12 22 1 + 22 13 14 2 + 23 13 23 1 + 24 14 15 1 + 25 14 24 1 + 26 15 16 2 + 27 15 25 1 + 28 16 26 1 + 29 17 28 1 + 30 17 29 1 + 31 17 30 1 + 32 18 31 1 + 33 18 32 1 + 34 18 33 1 + 35 19 34 1 + 36 19 35 1 + 37 19 36 1 + 38 20 37 1 + 39 20 38 1 + 40 20 39 1 +@SUBSTRUCTURE + 1 FASG 1 +@COMMENT +COMMENT 1,5-DIMETHYL-3-DIMETHYLAMINO-3-OXO-6-PHENOXY-1,2,4,5-TETRA- +@MOLECULE +FATLIV + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -1.8004 -1.7399 9.7905 P 1 FASJ 1.4918 + 2 O1 -1.1418 -2.1315 11.0846 O.3 1 FASJ -0.7000 + 3 O2 -0.7659 1.0073 10.4502 O.2 1 FASJ -0.5700 + 4 O3 0.7598 5.0187 7.6045 O.3 1 FASJ -0.3625 + 5 N1 -0.8760 -0.6647 8.8871 N.3 1 FASJ -0.6860 + 6 N2 -3.3191 -1.0947 9.8875 N.3 1 FASJ -0.5839 + 7 N3 -1.9614 -2.9980 8.7136 N.3 1 FASJ -0.5839 + 8 C1 -0.5032 0.5654 9.3393 C.2 1 FASJ 0.5438 + 9 C2 0.2370 1.4180 8.3678 C.2 1 FASJ 0.0862 + 10 C3 1.0504 0.8668 7.3692 C.2 1 FASJ -0.1500 + 11 C4 1.7211 1.7064 6.4808 C.2 1 FASJ -0.1500 + 12 C5 1.5865 3.0906 6.5958 C.2 1 FASJ -0.1500 + 13 C6 0.7939 3.6515 7.6009 C.2 1 FASJ 0.0825 + 14 C7 0.1213 2.8118 8.4886 C.2 1 FASJ -0.1500 + 15 C8 -4.2218 -1.5835 10.9245 C.3 1 FASJ -0.0420 + 16 C9 -3.6245 -0.2060 11.0052 C.3 1 FASJ -0.0420 + 17 C10 -0.9533 -4.0535 8.7192 C.3 1 FASJ -0.0420 + 18 C11 -2.3443 -4.3069 9.2346 C.3 1 FASJ -0.0420 + 19 C12 0.0213 5.6403 8.6499 C.3 1 FASJ 0.2800 + 20 H1 -0.8212 -0.8958 7.9117 H 1 FASJ 0.3700 + 21 H2 1.1959 -0.2062 7.2859 H 1 FASJ 0.1500 + 22 H3 2.3573 1.2878 5.7049 H 1 FASJ 0.1500 + 23 H4 2.1137 3.7426 5.9025 H 1 FASJ 0.1500 + 24 H5 -0.5034 3.2106 9.2824 H 1 FASJ 0.1500 + 25 H6 -5.2619 -1.6745 10.6414 H 1 FASJ 0.1000 + 26 H7 -3.8480 -2.3406 11.6028 H 1 FASJ 0.1000 + 27 H8 -2.8413 -0.0264 11.7330 H 1 FASJ 0.1000 + 28 H9 -4.2491 0.6457 10.7722 H 1 FASJ 0.1000 + 29 H10 -0.1465 -3.9777 9.4389 H 1 FASJ 0.1000 + 30 H11 -0.6856 -4.4623 7.7538 H 1 FASJ 0.1000 + 31 H12 -2.4842 -4.4019 10.3047 H 1 FASJ 0.1000 + 32 H13 -3.0256 -4.8787 8.6185 H 1 FASJ 0.1000 + 33 H14 0.1184 6.7235 8.5288 H 1 FASJ 0.0000 + 34 H15 -1.0429 5.3918 8.5814 H 1 FASJ 0.0000 + 35 H16 0.4277 5.3773 9.6322 H 1 FASJ 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 3 8 2 + 6 4 13 1 + 7 4 19 1 + 8 5 8 am + 9 5 20 1 + 10 6 15 1 + 11 6 16 1 + 12 7 17 1 + 13 7 18 1 + 14 8 9 1 + 15 9 10 2 + 16 9 14 1 + 17 10 11 1 + 18 10 21 1 + 19 11 12 2 + 20 11 22 1 + 21 12 13 1 + 22 12 23 1 + 23 13 14 2 + 24 14 24 1 + 25 15 16 1 + 26 15 25 1 + 27 15 26 1 + 28 16 27 1 + 29 16 28 1 + 30 17 18 1 + 31 17 29 1 + 32 17 30 1 + 33 18 31 1 + 34 18 32 1 + 35 19 33 1 + 36 19 34 1 + 37 19 35 1 +@SUBSTRUCTURE + 1 FASJ 1 +@COMMENT +COMMENT N-(M-METHOXYBENZOYL-N',N',N'',N'')-DIETHYLENE-TRIAMIDO-PHOS +@MOLECULE +FAXFUF10 + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O6 6.7532 1.6440 2.9665 O.2 1 FAXF -0.5700 + 2 N1 6.4663 1.6440 5.2362 N.3 1 FAXF -0.6854 + 3 N3 8.2142 1.6440 6.7655 N.2 1 FAXF -0.5994 + 4 N8 10.8489 1.6440 4.5416 N.3 1 FAXF 0.2996 + 5 N9 10.4287 1.6440 5.8284 N.2 1 FAXF -0.7068 + 6 C2 6.9287 1.6440 6.4758 C.2 1 FAXF 0.5588 + 7 C4 9.1100 1.6440 5.7180 C.2 1 FAXF 0.5838 + 8 C5 8.6643 1.6440 4.3983 C.2 1 FAXF -0.0860 + 9 C6 7.2794 1.6440 4.0617 C.2 1 FAXF 1.0370 + 10 C7 9.8129 1.6440 3.6404 C.2 1 FAXF -0.3016 + 11 H1 5.4648 1.6440 5.0785 H 1 FAXF 0.4500 + 12 H2 6.2182 1.6440 7.2931 H 1 FAXF 0.1500 + 13 H3 8.5931 1.6440 7.7060 H 1 FAXF 0.4500 + 14 H7 9.9927 1.6440 2.5722 H 1 FAXF 0.1500 + 15 H8 11.8505 1.6440 4.3527 H 1 FAXF 0.2700 +@BOND + 1 1 9 2 + 2 2 11 1 + 3 2 9 am + 4 2 6 am + 5 3 13 1 + 6 3 7 am + 7 3 6 2 + 8 4 15 1 + 9 4 10 1 + 10 4 5 1 + 11 5 7 2 + 12 6 12 1 + 13 7 8 1 + 14 8 10 2 + 15 8 9 1 + 16 10 14 1 +@SUBSTRUCTURE + 1 FAXF 1 +@COMMENT +COMMENT ALLOPURINOL HYDROCHLORIDE (ANTI-HYPERURICEMIA DRUG) PYRAZOL +@MOLECULE +FAXVAB + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.9770 6.5910 -2.4777 S.3 1 FAXV 1.5760 + 2 O1 4.0807 6.1929 -3.3175 O.3 1 FAXV -0.6500 + 3 O2 2.8997 7.9200 -1.9195 O.3 1 FAXV -0.6500 + 4 O3 1.3882 4.8371 0.4920 O.2 1 FAXV -0.5700 + 5 N1 1.5830 6.3184 -3.3615 N.3 1 FAXV -0.7570 + 6 N2 2.7566 5.4839 -1.2508 N.3 1 FAXV -0.7300 + 7 C1 0.3742 6.3822 -2.6108 C.2 1 FAXV 0.1990 + 8 C2 -0.7916 6.7898 -3.2667 C.2 1 FAXV -0.1500 + 9 C3 -2.0158 6.7800 -2.5952 C.2 1 FAXV -0.1500 + 10 C4 -2.0856 6.3331 -1.2776 C.2 1 FAXV -0.1500 + 11 C5 -0.9321 5.8828 -0.6344 C.2 1 FAXV -0.1500 + 12 C6 0.3011 5.8921 -1.3045 C.2 1 FAXV 0.0862 + 13 C7 1.5004 5.3713 -0.6053 C.2 1 FAXV 0.7201 + 14 C8 3.9878 5.1267 -0.5217 C.3 1 FAXV 0.3557 + 15 H1 1.6035 6.8718 -4.2174 H 1 FAXV 0.4200 + 16 H2 -0.7615 7.1216 -4.3014 H 1 FAXV 0.1500 + 17 H3 -2.9179 7.1132 -3.1039 H 1 FAXV 0.1500 + 18 H4 -3.0395 6.3218 -0.7545 H 1 FAXV 0.1500 + 19 H5 -1.0000 5.5158 0.3886 H 1 FAXV 0.1500 + 20 H6 4.2162 5.8888 0.2293 H 1 FAXV 0.0000 + 21 H7 3.8582 4.1633 -0.0178 H 1 FAXV 0.0000 + 22 H8 4.8425 5.0137 -1.1943 H 1 FAXV 0.0000 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 3 1 + 4 1 2 1 + 5 4 13 2 + 6 5 15 1 + 7 5 7 1 + 8 6 14 1 + 9 6 13 am + 10 7 12 1 + 11 7 8 2 + 12 8 16 1 + 13 8 9 1 + 14 9 17 1 + 15 9 10 2 + 16 10 18 1 + 17 10 11 1 + 18 11 19 1 + 19 11 12 2 + 20 12 13 1 + 21 14 22 1 + 22 14 21 1 + 23 14 20 1 +@SUBSTRUCTURE + 1 FAXV 1 +@COMMENT +COMMENT 3-ISOPROPYL-1H-2,1,3-BENZOTHIADIAZIN-4(3H)-ONE 2,2-DIOXIDE +@MOLECULE +FAXVEF + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.8391 5.3110 8.1200 N.2 1 FAXV -0.2100 + 2 C2 4.7012 4.6073 9.2693 C.2 1 FAXV 0.2110 + 3 C3 3.4724 4.5369 9.9146 C.2 1 FAXV -0.1500 + 4 C4 2.3803 5.2027 9.3744 C.2 1 FAXV -0.1500 + 5 C5 2.5373 5.9284 8.2012 C.2 1 FAXV -0.1500 + 6 C6 3.7839 5.9727 7.5879 C.2 1 FAXV 0.2110 + 7 C7 6.1661 5.3847 7.4610 C.3 1 FAXV 0.4880 + 8 C8 6.4663 4.0998 6.6942 C.3 1 FAXV 0.0000 + 9 C9 5.5524 3.8947 5.4851 C.3 1 FAXV 0.0000 + 10 C10 5.9522 2.6609 4.6905 C.3 1 FAXV 0.0000 + 11 H2 5.5809 4.1041 9.6607 H 1 FAXV 0.1500 + 12 H3 3.3664 3.9669 10.8353 H 1 FAXV 0.1500 + 13 H4 1.4100 5.1580 9.8677 H 1 FAXV 0.1500 + 14 H5 1.6916 6.4576 7.7668 H 1 FAXV 0.1500 + 15 H6 3.9457 6.5288 6.6688 H 1 FAXV 0.1500 + 16 H71 6.9054 5.5475 8.2540 H 1 FAXV 0.0000 + 17 H72 6.1852 6.2618 6.8053 H 1 FAXV 0.0000 + 18 H81 6.3889 3.2332 7.3613 H 1 FAXV 0.0000 + 19 H82 7.5072 4.1433 6.3509 H 1 FAXV 0.0000 + 20 H91 5.5959 4.7729 4.8307 H 1 FAXV 0.0000 + 21 H92 4.5130 3.7799 5.8105 H 1 FAXV 0.0000 + 22 H101 5.2850 2.5300 3.8328 H 1 FAXV 0.0000 + 23 H102 6.9759 2.7514 4.3133 H 1 FAXV 0.0000 + 24 H103 5.8917 1.7597 5.3089 H 1 FAXV 0.0000 +@BOND + 1 1 7 1 + 2 1 6 2 + 3 1 2 1 + 4 2 11 1 + 5 2 3 2 + 6 3 12 1 + 7 3 4 1 + 8 4 13 1 + 9 4 5 2 + 10 5 14 1 + 11 5 6 1 + 12 6 15 1 + 13 7 17 1 + 14 7 16 1 + 15 7 8 1 + 16 8 19 1 + 17 8 18 1 + 18 8 9 1 + 19 9 21 1 + 20 9 20 1 + 21 9 10 1 + 22 10 24 1 + 23 10 23 1 + 24 10 22 1 +@SUBSTRUCTURE + 1 FAXV 1 +@COMMENT +COMMENT N-N-BUTYLPYRIDINIUM CHLORIDE +@MOLECULE +FAXVIJ + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.8032 3.2932 4.3071 C.2 1 FAXV -0.1810 + 2 C2 2.3093 2.1546 3.7916 C.2 1 FAXV -0.1500 + 3 C3 1.1880 1.5082 4.4482 C.2 1 FAXV -0.1500 + 4 C4 0.6280 2.0337 5.5531 C.2 1 FAXV -0.1050 + 5 C41 1.1377 3.2458 6.0996 C.2 1 FAXV 0.1415 + 6 N5 0.7329 3.9468 7.1339 N.2 1 FAXV -0.5653 + 7 C51 1.5771 5.0185 7.1971 C.2 1 FAXV 0.2272 + 8 C6 1.5589 6.0790 8.1198 C.2 1 FAXV -0.1500 + 9 C7 2.5171 7.1033 8.0350 C.2 1 FAXV -0.1435 + 10 C71 2.4795 8.2585 9.0067 C.3 1 FAXV 1.1635 + 11 F1 1.9770 7.9187 10.2244 F 1 FAXV -0.3400 + 12 F2 3.7127 8.7843 9.2450 F 1 FAXV -0.3400 + 13 F3 1.7136 9.2861 8.5524 F 1 FAXV -0.3400 + 14 C8 3.4828 7.0528 7.0203 C.2 1 FAXV -0.1500 + 15 C9 3.5157 5.9889 6.0965 C.2 1 FAXV 0.1330 + 16 N9 4.5840 6.0081 5.1176 N.2 1 FAXV 0.9070 + 17 O91 4.6373 6.9858 4.3620 O.3 1 FAXV -0.5200 + 18 O92 5.3654 5.0496 5.1204 O.2 1 FAXV -0.5200 + 19 C91 2.5425 4.9786 6.1890 C.2 1 FAXV -0.1516 + 20 N10 2.2333 3.8369 5.4635 N.3 1 FAXV 0.3342 + 21 H1 3.6342 3.8028 3.8412 H 1 FAXV 0.1500 + 22 H2 2.7254 1.7034 2.8964 H 1 FAXV 0.1500 + 23 H3 0.8094 0.5848 4.0197 H 1 FAXV 0.1500 + 24 H4 -0.2124 1.5571 6.0454 H 1 FAXV 0.1500 + 25 H6 0.7927 6.0898 8.8924 H 1 FAXV 0.1500 + 26 H8 4.2267 7.8496 6.9515 H 1 FAXV 0.1500 +@BOND + 1 1 21 1 + 2 1 20 1 + 3 1 2 2 + 4 2 22 1 + 5 2 3 1 + 6 3 23 1 + 7 3 4 2 + 8 4 24 1 + 9 4 5 1 + 10 5 20 am + 11 5 6 2 + 12 6 7 1 + 13 7 19 2 + 14 7 8 1 + 15 8 25 1 + 16 8 9 2 + 17 9 14 1 + 18 9 10 1 + 19 10 13 1 + 20 10 12 1 + 21 10 11 1 + 22 14 26 1 + 23 14 15 2 + 24 15 19 1 + 25 15 16 1 + 26 16 18 2 + 27 16 17 1 + 28 19 20 1 +@SUBSTRUCTURE + 1 FAXV 1 +@COMMENT +COMMENT 9-NITRO-7-TRIFLUOROMETHYLPYRIDO(1,2-A)BENZIMIDAZOLE (AT 123 +@MOLECULE +FAZBAJ + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8179 10.7797 1.4769 S.3 1 FAZB -0.3310 + 2 O1 0.5692 8.6464 3.0858 O.3 1 FAZB -0.8500 + 3 C1 0.3748 9.8957 3.0041 C.2 1 FAZB -0.0490 + 4 C2 -0.1561 10.6940 3.9810 C.2 1 FAZB 0.1300 + 5 C3 -0.3625 12.1034 3.8564 C.1 1 FAZB 0.4921 + 6 C4 -0.5538 10.1397 5.2421 C.1 1 FAZB 0.4921 + 7 N3 -0.5541 13.2512 3.8141 N.1 1 FAZB -0.5571 + 8 N4 -0.9074 9.7925 6.2963 N.1 1 FAZB -0.5571 + 9 C5 1.4685 9.4448 0.4433 C.3 1 FAZB 0.2300 + 10 H1 2.3486 8.9841 0.9009 H 1 FAZB 0.0000 + 11 H2 0.7048 8.6859 0.2514 H 1 FAZB 0.0000 + 12 H3 1.7727 9.8655 -0.5195 H 1 FAZB 0.0000 +@BOND + 1 1 3 1 + 2 1 9 1 + 3 2 3 1 + 4 3 4 2 + 5 4 5 1 + 6 4 6 1 + 7 5 7 3 + 8 6 8 3 + 9 9 10 1 + 10 9 11 1 + 11 9 12 1 +@SUBSTRUCTURE + 1 FAZB 1 +@COMMENT +COMMENT POTASSIUM 1,1-DICYANO-3-THIA-BUT-1-EN-2-OLATE +@MOLECULE +FAZKUM + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 5.3681 0.2721 3.2548 CL 1 UNCH -0.1400 + 2 CL2 5.2602 0.0678 -1.2213 CL 1 UNCH -0.3701 + 3 CL3 6.7938 2.8342 -0.1351 CL 1 UNCH -0.3701 + 4 CL4 3.7611 2.0841 0.9086 CL 1 UNCH -0.3701 + 5 SI1 5.5554 1.3045 0.3608 SI 1 UNCH 1.3393 + 6 C1 6.3370 0.3246 1.7529 C.2 1 UNCH -0.0890 + 7 C1B 7.5380 -0.3246 1.7108 C.2 1 UNCH -0.0890 + 8 CL1B 8.5069 -0.2721 0.2089 CL 1 UNCH -0.1400 + 9 SI1B 8.3196 -1.3045 3.1029 SI 1 UNCH 1.3393 + 10 CL2B 8.6148 -0.0678 4.6850 CL 1 UNCH -0.3701 + 11 CL3B 7.0812 -2.8342 3.5988 CL 1 UNCH -0.3701 + 12 CL4B 10.1139 -2.0841 2.5551 CL 1 UNCH -0.3701 +@BOND + 1 1 6 1 + 2 2 5 1 + 3 3 5 1 + 4 4 5 1 + 5 5 6 1 + 6 6 7 2 + 7 7 8 1 + 8 7 9 1 + 9 9 10 1 + 10 9 11 1 + 11 9 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-1,2-DICHLORO-1,2-BIS(TRICHLOROSILYL)-ETHENE (AT -40 D +@MOLECULE +FBATNB + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2215 1.3527 1.6487 C.2 1 FBAT 0.1000 + 2 C2 4.9208 1.7541 -1.0093 C.3 1 FBAT 0.0000 + 3 C3 4.1922 0.5252 2.2571 C.2 1 FBAT 0.1330 + 4 C4 3.8797 -0.6462 2.9824 C.2 1 FBAT -0.1500 + 5 C5 2.5452 -1.0131 3.1483 C.2 1 FBAT 0.1330 + 6 C6 1.5340 -0.2123 2.6235 C.2 1 FBAT -0.1500 + 7 C7 1.8865 0.9506 1.9084 C.2 1 FBAT 0.1330 + 8 C8 3.6619 2.5134 -0.5784 C.3 1 FBAT 0.3691 + 9 C9 2.4510 1.9236 -1.3163 C.3 1 FBAT 0.0000 + 10 C10 3.8004 3.9877 -1.0127 C.3 1 FBAT 0.0000 + 11 F1 4.6521 3.0952 1.4545 F 1 FBAT -0.0530 + 12 H1 4.6826 -1.2452 3.4152 H 1 FBAT 0.1500 + 13 H2 5.8159 2.1430 -0.5132 H 1 FBAT 0.0000 + 14 H3 5.0849 1.8456 -2.0896 H 1 FBAT 0.0000 + 15 H4 0.4832 -0.4624 2.7744 H 1 FBAT 0.1500 + 16 H5 1.5389 2.4898 -1.1027 H 1 FBAT 0.0000 + 17 H6 2.5996 1.9542 -2.4023 H 1 FBAT 0.0000 + 18 H7 2.2789 0.8767 -1.0452 H 1 FBAT 0.0000 + 19 H8 4.6806 4.4582 -0.5598 H 1 FBAT 0.0000 + 20 H9 2.9249 4.5724 -0.7066 H 1 FBAT 0.0000 + 21 H10 3.9009 4.0761 -2.1004 H 1 FBAT 0.0000 + 22 H11 4.8366 0.6852 -0.7895 H 1 FBAT 0.0000 + 23 N1 3.4633 2.5102 0.8981 N.3 1 FBAT -0.4161 + 24 N2 5.6089 0.8285 2.2125 N.2 1 FBAT 0.9070 + 25 N3 2.2053 -2.2277 3.9006 N.2 1 FBAT 0.9070 + 26 N4 0.7710 1.7883 1.4929 N.2 1 FBAT 0.9070 + 27 O1 6.2725 0.2500 1.3439 O.3 1 FBAT -0.5200 + 28 O2 6.0536 1.5556 3.1082 O.2 1 FBAT -0.5200 + 29 O3 3.1416 -2.9230 4.3137 O.3 1 FBAT -0.5200 + 30 O4 1.0053 -2.4771 4.0691 O.2 1 FBAT -0.5200 + 31 O5 -0.0655 1.2610 0.7477 O.3 1 FBAT -0.5200 + 32 O6 0.7141 2.9350 1.9502 O.2 1 FBAT -0.5200 +@BOND + 1 1 23 1 + 2 1 7 2 + 3 1 3 1 + 4 2 22 1 + 5 2 14 1 + 6 2 13 1 + 7 2 8 1 + 8 3 24 1 + 9 3 4 2 + 10 4 12 1 + 11 4 5 1 + 12 5 25 1 + 13 5 6 2 + 14 6 15 1 + 15 6 7 1 + 16 7 26 1 + 17 8 23 1 + 18 8 10 1 + 19 8 9 1 + 20 9 18 1 + 21 9 17 1 + 22 9 16 1 + 23 10 21 1 + 24 10 20 1 + 25 10 19 1 + 26 11 23 1 + 27 24 28 2 + 28 24 27 1 + 29 25 30 2 + 30 25 29 1 + 31 26 32 2 + 32 26 31 1 +@SUBSTRUCTURE + 1 FBAT 1 +@COMMENT +COMMENT 1-(N-FLUORO-N-T-BUTYL)AMINO-2,4,6-TRINITROBENZENE +@MOLECULE +FECXEQ + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.8289 2.9791 4.2466 C.2 1 UNCH 0.3900 + 2 C2 3.3497 2.8789 4.4138 C.2 1 UNCH 0.5556 + 3 C3 2.7895 1.5119 4.6520 C.2 1 UNCH 0.0144 + 4 C4 3.3529 0.7588 5.7589 C.2 1 UNCH -0.1500 + 5 C5 4.4360 1.0991 6.4707 C.2 1 UNCH -0.0500 + 6 C6 1.7527 1.0941 3.8800 C.2 1 UNCH -0.2764 + 7 C7 1.1958 1.8918 2.7171 C.3 1 UNCH 0.1382 + 8 C8 1.0180 -0.2176 4.0432 C.3 1 UNCH 0.1382 + 9 C9 6.4016 2.3033 7.3407 C.3 1 UNCH 0.3691 + 10 N1 5.3413 2.1418 6.3326 N.3 1 UNCH -0.4271 + 11 N2 5.7273 2.6465 5.1183 N.2 1 UNCH -0.4920 + 12 O1 2.6804 3.8957 4.2808 O.2 1 UNCH -0.5700 + 13 H1 5.1412 3.3923 3.2755 H 1 UNCH 0.0600 + 14 H4 2.8277 -0.1303 6.0894 H 1 UNCH 0.1500 + 15 H5 4.6781 0.4766 7.3316 H 1 UNCH 0.1500 + 16 H71 1.8994 2.6239 2.3128 H 1 UNCH 0.0000 + 17 H72 0.2798 2.4085 3.0204 H 1 UNCH 0.0000 + 18 H73 0.9510 1.2260 1.8815 H 1 UNCH 0.0000 + 19 H81 1.3611 -0.8328 4.8755 H 1 UNCH 0.0000 + 20 H82 1.1252 -0.8219 3.1357 H 1 UNCH 0.0000 + 21 H83 -0.0488 -0.0271 4.2043 H 1 UNCH 0.0000 + 22 H91 5.9926 2.2094 8.3527 H 1 UNCH 0.0000 + 23 H92 6.8601 3.2955 7.2631 H 1 UNCH 0.0000 + 24 H93 7.1800 1.5453 7.2016 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 11 2 + 3 1 13 1 + 4 2 3 1 + 5 2 12 2 + 6 3 4 1 + 7 3 6 2 + 8 4 5 2 + 9 4 14 1 + 10 5 10 1 + 11 5 15 1 + 12 6 7 1 + 13 6 8 1 + 14 7 16 1 + 15 7 17 1 + 16 7 18 1 + 17 8 19 1 + 18 8 20 1 + 19 8 21 1 + 20 9 10 1 + 21 9 22 1 + 22 9 23 1 + 23 9 24 1 + 24 10 11 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,5-DIHYDRO-5-ISOPROPYLIDENE-1-METHYL-1H-1,2-DIAZEPIN-4-ONE +@MOLECULE +FEGSEP + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.6778 1.1572 7.7803 P 1 UNCH 1.2424 + 2 O1 0.8565 1.0196 7.3344 O.3 1 UNCH -0.7712 + 3 O2 -1.3885 0.4642 6.5190 O.3 1 UNCH -0.7712 + 4 O3 -1.1233 2.5660 7.9788 O.3 1 UNCH -0.7000 + 5 O4 -4.0773 0.6985 10.4562 O.2 1 UNCH -0.5700 + 6 N1 -2.3157 -0.2762 9.3364 N.3 1 UNCH -0.7301 + 7 C1 -0.9130 0.0127 9.1530 C.3 1 UNCH 0.3001 + 8 C2 -0.5140 0.5767 10.5059 C.3 1 UNCH 0.0000 + 9 C3 -1.7732 1.2971 10.9875 C.3 1 UNCH 0.0610 + 10 C4 -2.8813 0.5653 10.2730 C.2 1 UNCH 0.5690 + 11 H1 1.2606 0.1392 7.4409 H 1 UNCH 0.5000 + 12 H2 -1.4370 1.0897 5.7685 H 1 UNCH 0.5000 + 13 H3 -0.3965 -0.9268 8.9350 H 1 UNCH 0.0000 + 14 H4 -2.9161 -0.6526 8.6095 H 1 UNCH 0.3700 + 15 H5 0.3545 1.2395 10.4595 H 1 UNCH 0.0000 + 16 H6 -0.2834 -0.2423 11.1987 H 1 UNCH 0.0000 + 17 H7 -1.7807 2.3462 10.6789 H 1 UNCH 0.0000 + 18 H8 -1.8907 1.2218 12.0712 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 7 1 + 5 2 11 1 + 6 3 12 1 + 7 5 10 2 + 8 6 7 1 + 9 6 10 am + 10 6 14 1 + 11 7 8 1 + 12 7 13 1 + 13 8 9 1 + 14 8 15 1 + 15 8 16 1 + 16 9 10 1 + 17 9 17 1 + 18 9 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-OXO-2-PYRROLIDINYL-PHOSPHONIC ACID +@MOLECULE +FEHDAX + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.6760 2.6762 0.8913 C.2 1 UNCH -0.0800 + 2 C2 0.1919 3.4858 1.9428 C.3 1 UNCH -0.0600 + 3 C3 1.6972 3.0280 1.7919 C.3 1 UNCH -0.1600 + 4 C4 0.3926 2.0279 -0.2173 C.2 1 UNCH -0.3000 + 5 C5 -0.6235 2.8634 3.0037 C.2 1 UNCH 0.6300 + 6 O1 -0.2448 2.8230 4.1656 O.2 1 UNCH -0.5700 + 7 N1 -1.8306 2.3699 2.6100 N.3 1 UNCH -0.8000 + 8 H1 -0.0244 4.5234 1.7241 H 1 UNCH 0.1000 + 9 H2 2.0638 2.2595 2.4595 H 1 UNCH 0.1000 + 10 H3 2.4176 3.7660 1.4689 H 1 UNCH 0.1000 + 11 H4 -0.6117 2.0134 -0.6241 H 1 UNCH 0.1500 + 12 H5 1.1658 1.4921 -0.7581 H 1 UNCH 0.1500 + 13 H6 -2.0780 2.2896 1.6349 H 1 UNCH 0.3700 + 14 H7 -2.3713 1.8631 3.2972 H 1 UNCH 0.3700 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 2 + 4 2 3 1 + 5 2 5 1 + 6 2 8 1 + 7 3 9 1 + 8 3 10 1 + 9 4 11 1 + 10 4 12 1 + 11 5 6 2 + 12 5 7 am + 13 7 13 1 + 14 7 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYLENECYCLOPROPANE-2-CARBOXAMIDE +@MOLECULE +FEJJEJ + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.9647 5.8810 0.4170 O.2 1 UNCH -0.5700 + 2 C1 0.7759 5.4481 -0.6979 C.2 1 UNCH 0.7010 + 3 C2 1.1305 4.2360 -1.4336 C.2 1 UNCH -0.1750 + 4 C3 0.0653 4.6405 -2.4446 C.3 1 UNCH 0.3630 + 5 N1 0.0453 5.9224 -1.7367 N.3 1 UNCH -0.6550 + 6 C4 1.8721 3.2087 -1.2183 C.1 1 UNCH -0.0990 + 7 C5 2.6220 2.1735 -0.9951 C.2 1 UNCH -0.2350 + 8 C6 -1.2591 3.8766 -2.3668 C.3 1 UNCH 0.1435 + 9 C7 -2.3364 4.5922 -3.1478 C.2 1 UNCH -0.1435 + 10 C8 -2.3566 4.5382 -4.5484 C.2 1 UNCH -0.1500 + 11 C9 -3.3424 5.2152 -5.2678 C.2 1 UNCH -0.1500 + 12 C10 -4.3166 5.9507 -4.5958 C.2 1 UNCH -0.1500 + 13 C11 -4.3079 6.0085 -3.2037 C.2 1 UNCH -0.1500 + 14 C12 -3.3231 5.3327 -2.4817 C.2 1 UNCH -0.1500 + 15 H1 -0.7502 6.5012 -1.5110 H 1 UNCH 0.3700 + 16 H2 0.4332 4.7590 -3.4718 H 1 UNCH 0.0000 + 17 H3 2.9196 1.5171 -1.8045 H 1 UNCH 0.1500 + 18 H4 2.9827 1.9610 0.0053 H 1 UNCH 0.1500 + 19 H5 -1.5834 3.7406 -1.3265 H 1 UNCH 0.0000 + 20 H6 -1.1345 2.8668 -2.7785 H 1 UNCH 0.0000 + 21 H7 -1.6056 3.9673 -5.0902 H 1 UNCH 0.1500 + 22 H8 -3.3514 5.1680 -6.3538 H 1 UNCH 0.1500 + 23 H9 -5.0847 6.4764 -5.1571 H 1 UNCH 0.1500 + 24 H10 -5.0711 6.5785 -2.6798 H 1 UNCH 0.1500 + 25 H11 -3.3369 5.3849 -1.3950 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 2 3 1 + 3 2 5 am + 4 3 4 1 + 5 3 6 2 + 6 4 5 1 + 7 4 8 1 + 8 4 16 1 + 9 5 15 1 + 10 6 7 2 + 11 7 17 1 + 12 7 18 1 + 13 8 9 1 + 14 8 19 1 + 15 8 20 1 + 16 9 10 2 + 17 9 14 1 + 18 10 11 1 + 19 10 21 1 + 20 11 12 2 + 21 11 22 1 + 22 12 13 1 + 23 12 23 1 + 24 13 14 2 + 25 13 24 1 + 26 14 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-BENZYL-3-VINYLIDENE-AZETIDIN-2-ONE +@MOLECULE +FEJKIO + 38 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.0324 0.7694 8.3422 N.3 1 CHGB -0.9590 + 2 C1 -0.3043 1.2439 9.7526 C.3 1 CHGB 0.5030 + 3 C2 -1.0858 1.0714 7.3484 C.3 1 CHGB 0.5030 + 4 C3 1.3602 1.3361 7.8453 C.3 1 CHGB 0.5980 + 5 C4 2.5450 0.8759 8.6298 C.3 1 CHGB -0.1950 + 6 C5 3.0877 1.6768 9.7889 C.3 1 CHGB -0.2000 + 7 C6 3.8540 1.6127 8.4976 C.3 1 CHGB -0.2000 + 8 H1 0.1835 -0.2506 8.3654 H 1 CHGB 0.4500 + 9 H2 0.4894 0.8973 10.4194 H 1 CHGB 0.0000 + 10 H3 -0.3239 2.3388 9.7284 H 1 CHGB 0.0000 + 11 H4 -0.8028 0.6200 6.3922 H 1 CHGB 0.0000 + 12 H5 -1.1351 2.1609 7.2436 H 1 CHGB 0.0000 + 13 H6 1.2602 2.4279 7.8446 H 1 CHGB 0.0000 + 14 H7 1.4693 0.9963 6.8093 H 1 CHGB 0.0000 + 15 H8 2.6225 -0.2063 8.6700 H 1 CHGB 0.1000 + 16 H9 3.5113 1.1459 10.6372 H 1 CHGB 0.1000 + 17 H10 2.6552 2.6367 10.0495 H 1 CHGB 0.1000 + 18 H11 4.7745 1.0346 8.4862 H 1 CHGB 0.1000 + 19 H12 3.9103 2.5151 7.8968 H 1 CHGB 0.1000 + 20 C2B -1.6648 0.6800 10.2314 C.3 1 CHGB 0.5030 + 21 C1B -2.4462 0.5075 7.8273 C.3 1 CHGB 0.5030 + 22 N1B -2.7829 0.9820 9.2375 N.3 1 CHGB -0.9590 + 23 H4B -1.9478 1.1314 11.1876 H 1 CHGB 0.0000 + 24 H5B -1.6154 -0.4095 10.3362 H 1 CHGB 0.0000 + 25 H2B -3.2399 0.8541 7.1604 H 1 CHGB 0.0000 + 26 H3B -2.4266 -0.5874 7.8514 H 1 CHGB 0.0000 + 27 C3B -4.1107 0.4153 9.7345 C.3 1 CHGB 0.5980 + 28 H1B -2.9340 2.0020 9.2144 H 1 CHGB 0.4500 + 29 C4B -5.2955 0.8755 8.9500 C.3 1 CHGB -0.1950 + 30 H6B -4.0107 -0.6765 9.7352 H 1 CHGB 0.0000 + 31 H7B -4.2199 0.7551 10.7705 H 1 CHGB 0.0000 + 32 C5B -5.8383 0.0746 7.7909 C.3 1 CHGB -0.2000 + 33 C6B -6.6045 0.1387 9.0822 C.3 1 CHGB -0.2000 + 34 H8B -5.3730 1.9577 8.9098 H 1 CHGB 0.1000 + 35 H9B -6.2618 0.6055 6.9426 H 1 CHGB 0.1000 + 36 H10B -5.4057 -0.8853 7.5303 H 1 CHGB 0.1000 + 37 H11B -7.5251 0.7168 9.0936 H 1 CHGB 0.1000 + 38 H12B -6.6609 -0.7637 9.6830 H 1 CHGB 0.1000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 8 1 + 5 2 9 1 + 6 2 10 1 + 7 2 20 1 + 8 3 11 1 + 9 3 12 1 + 10 3 21 1 + 11 4 5 1 + 12 4 13 1 + 13 4 14 1 + 14 5 6 1 + 15 5 7 1 + 16 5 15 1 + 17 6 7 1 + 18 6 16 1 + 19 6 17 1 + 20 7 18 1 + 21 7 19 1 + 22 20 22 1 + 23 20 23 1 + 24 20 24 1 + 25 21 22 1 + 26 21 25 1 + 27 21 26 1 + 28 22 27 1 + 29 22 28 1 + 30 27 29 1 + 31 27 30 1 + 32 27 31 1 + 33 29 32 1 + 34 29 33 1 + 35 29 34 1 + 36 32 33 1 + 37 32 35 1 + 38 32 36 1 + 39 33 37 1 + 40 33 38 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT 1,4-BIS(CYCLOPROPYLMETHYL)PIPERAZINE DIHYDROCHLORIDE (INOTR +@MOLECULE +FELYIE + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.2716 1.8212 2.5900 S.2 1 UNCH -0.3800 + 2 O1 5.9486 1.2800 1.2276 O.3 1 UNCH -0.2800 + 3 O2 2.5553 1.0620 -2.0254 O.3 1 UNCH -0.6800 + 4 N1 3.5092 0.4159 0.6220 N.3 1 UNCH -0.7301 + 5 C1 3.5774 1.2814 1.6954 C.2 1 UNCH 0.5250 + 6 C2 4.9180 1.7295 2.0230 C.2 1 UNCH 0.0550 + 7 C3 5.4472 2.5555 3.0026 C.2 1 UNCH -0.1500 + 8 C4 6.8471 2.6078 2.7954 C.2 1 UNCH -0.1500 + 9 C5 7.1003 1.8149 1.7040 C.2 1 UNCH -0.0100 + 10 C6 2.3163 -0.1906 0.0349 C.3 1 UNCH 0.3001 + 11 C7 1.6421 0.7334 -0.9794 C.3 1 UNCH 0.2800 + 12 H1 4.8886 3.0621 3.7785 H 1 UNCH 0.1500 + 13 H2 7.5792 3.1560 3.3718 H 1 UNCH 0.1500 + 14 H3 8.0001 1.5425 1.1696 H 1 UNCH 0.1500 + 15 H4 4.4013 0.1782 0.1953 H 1 UNCH 0.3700 + 16 H5 3.2885 1.5422 -1.6001 H 1 UNCH 0.4000 + 17 H6 1.6153 -0.4736 0.8253 H 1 UNCH 0.0000 + 18 H7 2.6596 -1.1020 -0.4662 H 1 UNCH 0.0000 + 19 H8 1.2988 1.6656 -0.5213 H 1 UNCH 0.0000 + 20 H9 0.7791 0.2336 -1.4292 H 1 UNCH 0.0000 +@BOND + 1 1 5 2 + 2 2 6 1 + 3 2 9 1 + 4 3 11 1 + 5 3 16 1 + 6 4 5 1 + 7 4 10 1 + 8 4 15 1 + 9 5 6 1 + 10 6 7 2 + 11 7 8 1 + 12 7 12 1 + 13 8 9 2 + 14 8 13 1 + 15 9 14 1 + 16 10 11 1 + 17 10 17 1 + 18 10 18 1 + 19 11 19 1 + 20 11 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(2-HYDROXYETHYL)-2-THIOFURAMIDE +@MOLECULE +FELYUQ + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 6.7197 3.6128 2.7664 C.2 1 FELY 0.1170 + 2 C2 5.8908 2.6922 3.4209 C.2 1 FELY -0.1500 + 3 C3 4.4918 2.7927 3.3581 C.2 1 FELY -0.1500 + 4 C4 3.8900 3.8232 2.6338 C.2 1 FELY 0.0862 + 5 C5 4.7036 4.7487 1.9745 C.2 1 FELY -0.1500 + 6 C6 6.0989 4.6435 2.0416 C.2 1 FELY -0.1500 + 7 C7 2.4082 3.9742 2.5343 C.2 1 FELY 0.4228 + 8 O1 1.9301 4.8629 1.8322 O.2 1 FELY -0.5700 + 9 C8 1.5245 3.0239 3.2991 C.3 1 FELY 0.0610 + 10 N1 8.1392 3.5274 2.8062 N.3 1 FELY -0.1415 + 11 O2 8.8250 4.5325 2.0812 O.3 1 FELY -0.4355 + 12 C9 8.9251 2.6838 3.5831 C.2 1 FELY 0.5690 + 13 O3 8.5161 1.7743 4.3051 O.2 1 FELY -0.5700 + 14 C10 10.4126 2.9389 3.4868 C.3 1 FELY 0.0610 + 15 H1 6.3006 1.8654 3.9943 H 1 FELY 0.1500 + 16 H2 3.9042 2.0465 3.8855 H 1 FELY 0.1500 + 17 H3 4.2586 5.5646 1.4068 H 1 FELY 0.1500 + 18 H4 6.6867 5.3990 1.5255 H 1 FELY 0.1500 + 19 H5 1.7463 3.0751 4.3682 H 1 FELY 0.0000 + 20 H6 0.4786 3.3142 3.1584 H 1 FELY 0.0000 + 21 H7 1.6496 2.0056 2.9221 H 1 FELY 0.0000 + 22 H8 8.8596 4.1277 1.1945 H 1 FELY 0.4000 + 23 H9 10.7526 2.8084 2.4558 H 1 FELY 0.0000 + 24 H10 10.6465 3.9463 3.8417 H 1 FELY 0.0000 + 25 H11 10.9464 2.2210 4.1171 H 1 FELY 0.0000 +@BOND + 1 1 10 1 + 2 1 6 2 + 3 1 2 1 + 4 2 15 1 + 5 2 3 2 + 6 3 16 1 + 7 3 4 1 + 8 4 7 1 + 9 4 5 2 + 10 5 17 1 + 11 5 6 1 + 12 6 18 1 + 13 7 9 1 + 14 7 8 2 + 15 9 21 1 + 16 9 20 1 + 17 9 19 1 + 18 10 12 am + 19 10 11 1 + 20 11 22 1 + 21 12 14 1 + 22 12 13 2 + 23 14 25 1 + 24 14 24 1 + 25 14 23 1 +@SUBSTRUCTURE + 1 FELY 1 +@COMMENT +COMMENT N-(4-ACETYLPHENYL)ACETOHYDROXAMIC ACID (AT 138 DEG.K, THERA +@MOLECULE +FEMGEJ + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.5549 2.6346 4.2753 O.2 1 FEMG -0.9000 + 2 O2 6.8598 1.5739 5.7802 O.3 1 FEMG -0.9000 + 3 C1 4.1703 0.7944 6.9392 C.3 1 FEMG -0.0600 + 4 C2 3.9052 -0.5377 7.4930 C.2 1 FEMG -0.1900 + 5 C3 2.7924 -1.0586 8.0338 C.2 1 FEMG -0.2882 + 6 C4 1.4281 -0.4702 8.2626 C.3 1 FEMG 0.1382 + 7 C5 1.1252 0.9718 7.8530 C.3 1 FEMG 0.0000 + 8 C6 0.8762 1.1827 6.3546 C.3 1 FEMG 0.0000 + 9 C7 2.0331 0.8003 5.4341 C.3 1 FEMG 0.0950 + 10 C8 3.3111 1.4295 5.8808 C.3 1 FEMG -0.1950 + 11 C9 4.6497 0.8383 5.4901 C.3 1 FEMG -0.2470 + 12 C10 5.7627 1.7481 5.1623 C.2 1 FEMG 0.9470 + 13 H4 4.6717 1.4649 7.6333 H 1 FEMG 0.1000 + 14 H5 4.7768 -1.1931 7.4550 H 1 FEMG 0.1500 + 15 H6 2.8737 -2.0909 8.3745 H 1 FEMG 0.1500 + 16 H7 1.2427 -0.5444 9.3426 H 1 FEMG 0.0000 + 17 H8 0.6929 -1.1320 7.7873 H 1 FEMG 0.0000 + 18 H9 0.2070 1.2772 8.3727 H 1 FEMG 0.0000 + 19 H10 1.9032 1.6505 8.2203 H 1 FEMG 0.0000 + 20 H11 0.6408 2.2441 6.2022 H 1 FEMG 0.0000 + 21 H12 -0.0170 0.6236 6.0501 H 1 FEMG 0.0000 + 22 H13 2.1157 -0.2901 5.3633 H 1 FEMG 0.0000 + 23 H14 1.8056 1.1483 4.4191 H 1 FEMG 0.0000 + 24 H15 3.2460 2.5144 5.8684 H 1 FEMG 0.1000 + 25 H16 4.6228 -0.0869 4.9259 H 1 FEMG 0.1000 +@BOND + 1 1 12 2 + 2 2 12 1 + 3 3 4 1 + 4 3 10 1 + 5 3 11 1 + 6 3 13 1 + 7 4 5 2 + 8 4 14 1 + 9 5 6 1 + 10 5 15 1 + 11 6 7 1 + 12 6 16 1 + 13 6 17 1 + 14 7 8 1 + 15 7 18 1 + 16 7 19 1 + 17 8 9 1 + 18 8 20 1 + 19 8 21 1 + 20 9 10 1 + 21 9 22 1 + 22 9 23 1 + 23 10 11 1 + 24 10 24 1 + 25 11 12 1 + 26 11 25 1 +@SUBSTRUCTURE + 1 FEMG 1 +@COMMENT +COMMENT (+)-(R)-ALPHA-METHYLBENZYLAMMONIUM (+)-(1R,8S,9R)-BICYCLO(6 +@MOLECULE +FENCOQ + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.6215 6.9878 4.2337 O.3 1 FENC -0.1171 + 2 O2 1.6215 7.6778 2.0556 O.3 1 FENC -0.6330 + 3 O3 1.6215 1.2104 3.8906 O.3 1 FENC -0.3370 + 4 N1 1.6215 6.6985 2.8334 N.2 1 FENC 0.9530 + 5 N2 1.6215 5.7778 4.9151 N.2 1 FENC -0.4097 + 6 N3 1.6215 2.5255 3.4082 N.2 1 FENC -0.5130 + 7 C1 1.6215 5.3735 2.6879 C.2 1 FENC -0.2630 + 8 C2 1.6215 4.8076 3.9893 C.2 1 FENC 0.2028 + 9 C3 1.6215 4.7702 1.3478 C.3 1 FENC 0.1810 + 10 C4 1.6215 3.3948 4.3801 C.2 1 FENC 0.4750 + 11 C5 1.6215 2.9969 5.8406 C.3 1 FENC 0.0610 + 12 H1 1.6215 0.6800 3.0711 H 1 FENC 0.4000 + 13 H2 1.6215 5.5197 0.5501 H 1 FENC 0.0000 + 14 H3 2.5091 4.1446 1.2089 H 1 FENC 0.0000 + 15 H4 1.6215 3.8579 6.5116 H 1 FENC 0.0000 + 16 H5 2.5122 2.3974 6.0521 H 1 FENC 0.0000 + 17 H3A 0.7339 4.1446 1.2089 H 1 FENC 0.0000 + 18 H5A 0.7308 2.3974 6.0521 H 1 FENC 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 2 4 1 + 4 3 12 1 + 5 3 6 1 + 6 4 7 2 + 7 5 8 2 + 8 6 10 2 + 9 7 9 1 + 10 7 8 1 + 11 8 10 1 + 12 9 17 1 + 13 9 14 1 + 14 9 13 1 + 15 10 11 1 + 16 11 18 1 + 17 11 16 1 + 18 11 15 1 +@SUBSTRUCTURE + 1 FENC 1 +@COMMENT +COMMENT (E)-4-ACETYL-3-METHYLFUROXAN OXIME +@MOLECULE +FENHAH + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.6606 0.8554 0.5766 C.2 1 UNCH 0.4300 + 2 N2 -1.2257 -0.3206 1.1587 N.2 1 UNCH -0.5653 + 3 C3 -2.0902 -1.1979 0.7096 C.2 1 UNCH 0.2981 + 4 O4 -3.0331 -0.6585 -0.1130 O.3 1 UNCH -0.0191 + 5 N5 -2.7502 0.7040 -0.2048 N.2 1 UNCH -0.4097 + 6 C6 -1.0073 2.1624 0.7701 C.2 1 UNCH 0.7160 + 7 O7 0.0026 2.3182 1.4525 O.2 1 UNCH -0.5700 + 8 N8 -1.6243 3.2092 0.1036 N.3 1 UNCH -0.7301 + 9 C9 -1.0594 4.5309 0.0787 C.3 1 UNCH 0.3001 + 10 C10 -2.1815 -2.6458 0.9627 C.3 1 UNCH 0.1800 + 11 H8 -2.3870 2.9708 -0.5222 H 1 UNCH 0.3700 + 12 H91 -1.8451 5.2403 -0.1909 H 1 UNCH 0.0000 + 13 H92 -0.2649 4.5566 -0.6716 H 1 UNCH 0.0000 + 14 H93 -0.6443 4.7875 1.0569 H 1 UNCH 0.0000 + 15 H101 -1.3807 -2.9725 1.6327 H 1 UNCH 0.0000 + 16 H102 -2.0940 -3.2052 0.0266 H 1 UNCH 0.0000 + 17 H103 -3.1398 -2.8942 1.4282 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 5 2 + 3 1 6 1 + 4 2 3 2 + 5 3 4 1 + 6 3 10 1 + 7 4 5 1 + 8 6 7 2 + 9 6 8 am + 10 8 9 1 + 11 8 11 1 + 12 9 12 1 + 13 9 13 1 + 14 9 14 1 + 15 10 15 1 + 16 10 16 1 + 17 10 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,5-DIMETHYL-1,2,4-OXADIAZOLE-3-CARBOXAMIDE (AT 173 DEG.K) +@MOLECULE +FENJIR + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.2210 3.3626 5.2058 S.3 1 UNCH -0.4600 + 2 C2 1.3296 4.9193 5.4966 C.3 1 UNCH 0.2300 + 3 C3 1.9368 5.9071 4.5152 C.3 1 UNCH 0.3001 + 4 N4 2.2638 5.1536 3.3117 N.3 1 UNCH -0.6602 + 5 C5 1.2636 4.8633 2.3620 C.2 1 UNCH 0.5000 + 6 S5 0.0247 5.8268 1.8317 S.2 1 UNCH -0.3800 + 7 N6 1.4405 3.5735 1.8919 N.3 1 UNCH -0.7301 + 8 C7 2.7213 3.0247 2.3252 C.3 1 UNCH 0.3001 + 9 C71 3.0523 3.9455 3.5800 C.3 1 UNCH 0.8001 + 10 N71 4.4284 4.3082 3.9549 N.3 1 UNCH -0.8100 + 11 C8 3.6772 3.2030 1.1304 C.3 1 UNCH 0.0000 + 12 C9 2.5913 1.5269 2.6195 C.3 1 UNCH 0.0000 + 13 C10 5.1065 5.2815 3.1055 C.3 1 UNCH 0.2700 + 14 C11 5.3042 3.1689 4.2185 C.3 1 UNCH 0.2700 + 15 H21 1.4312 5.2531 6.5325 H 1 UNCH 0.0000 + 16 H22 0.2693 4.7507 5.2842 H 1 UNCH 0.0000 + 17 H31 2.8604 6.3409 4.9159 H 1 UNCH 0.0000 + 18 H32 1.2514 6.7335 4.3083 H 1 UNCH 0.0000 + 19 H6 0.9029 3.2396 1.1005 H 1 UNCH 0.3700 + 20 H81 3.7601 4.2521 0.8266 H 1 UNCH 0.0000 + 21 H82 3.3008 2.6641 0.2513 H 1 UNCH 0.0000 + 22 H83 4.6763 2.8120 1.3356 H 1 UNCH 0.0000 + 23 H91 3.5130 1.1218 3.0481 H 1 UNCH 0.0000 + 24 H92 2.3779 0.9657 1.7015 H 1 UNCH 0.0000 + 25 H93 1.7633 1.3067 3.3008 H 1 UNCH 0.0000 + 26 H101 4.4921 6.1610 2.8902 H 1 UNCH 0.0000 + 27 H102 5.4539 4.8618 2.1585 H 1 UNCH 0.0000 + 28 H103 5.9922 5.6658 3.6260 H 1 UNCH 0.0000 + 29 H111 6.2453 3.5130 4.6640 H 1 UNCH 0.0000 + 30 H112 5.5553 2.6081 3.3144 H 1 UNCH 0.0000 + 31 H113 4.8756 2.4679 4.9410 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 2 3 1 + 4 2 15 1 + 5 2 16 1 + 6 3 4 1 + 7 3 17 1 + 8 3 18 1 + 9 4 5 1 + 10 4 9 1 + 11 5 6 2 + 12 5 7 1 + 13 7 8 1 + 14 7 19 1 + 15 8 9 1 + 16 8 11 1 + 17 8 12 1 + 18 9 10 1 + 19 10 13 1 + 20 10 14 1 + 21 11 20 1 + 22 11 21 1 + 23 11 22 1 + 24 12 23 1 + 25 12 24 1 + 26 12 25 1 + 27 13 26 1 + 28 13 27 1 + 29 13 28 1 + 30 14 29 1 + 31 14 30 1 + 32 14 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT PERHYDRO-7A-(DIMETHYLAMINO)-7,7-DIMETHYLIMIDAZO(4,3-B)THIAZ +@MOLECULE +FENJOX + 34 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.0972 3.6326 1.7792 S.3 1 FENJ -0.3710 + 2 C2 6.4949 2.9604 1.5404 C.2 1 FENJ 0.5300 + 3 N3 6.1573 2.6735 0.3165 N.2 1 FENJ -0.6960 + 4 C4 7.2979 2.9362 -0.5851 C.3 1 FENJ 0.2460 + 5 C5 8.2070 3.9913 0.0196 C.3 1 FENJ 0.2300 + 6 C6 5.5395 2.7229 2.7417 C.3 1 FENJ 0.3611 + 7 C7 6.1420 1.6440 3.6723 C.3 1 FENJ 0.0000 + 8 C8 6.3115 0.2726 3.0244 C.3 1 FENJ 0.0000 + 9 C9 5.3444 4.0559 3.4820 C.3 1 FENJ 0.0000 + 10 N10 4.2626 2.2941 2.0977 N.3 1 FENJ -0.7301 + 11 C11 3.0273 1.9349 2.5864 C.2 1 FENJ 0.5000 + 12 S11 2.6480 1.8214 4.2165 S.2 1 FENJ -0.3800 + 13 N12 2.1014 1.6730 1.5612 N.3 1 FENJ -0.6602 + 14 C13 0.8662 0.9274 1.7971 C.3 1 FENJ 0.3001 + 15 C14 2.1904 2.2931 0.2401 C.3 1 FENJ 0.3001 + 16 H41 6.9251 3.2754 -1.5575 H 1 FENJ 0.0000 + 17 H51 7.8163 4.9969 -0.1649 H 1 FENJ 0.0000 + 18 H52 9.2310 3.9264 -0.3564 H 1 FENJ 0.0000 + 19 H71 5.5293 1.5242 4.5710 H 1 FENJ 0.0000 + 20 H72 7.1240 1.9699 4.0373 H 1 FENJ 0.0000 + 21 H81 5.3528 -0.1408 2.6980 H 1 FENJ 0.0000 + 22 H82 6.9822 0.3146 2.1613 H 1 FENJ 0.0000 + 23 H83 6.7450 -0.4275 3.7462 H 1 FENJ 0.0000 + 24 H91 6.2801 4.4206 3.9190 H 1 FENJ 0.0000 + 25 H92 4.9747 4.8316 2.8008 H 1 FENJ 0.0000 + 26 H93 4.6297 3.9763 4.3045 H 1 FENJ 0.0000 + 27 H10 4.4104 2.0473 1.1232 H 1 FENJ 0.3700 + 28 H131 0.9723 0.2165 2.6198 H 1 FENJ 0.0000 + 29 H132 0.0644 1.6370 2.0219 H 1 FENJ 0.0000 + 30 H133 0.6116 0.3622 0.8948 H 1 FENJ 0.0000 + 31 H141 2.5034 1.5311 -0.4791 H 1 FENJ 0.0000 + 32 H142 2.8907 3.1319 0.2224 H 1 FENJ 0.0000 + 33 H143 1.2052 2.6777 -0.0428 H 1 FENJ 0.0000 + 34 H1 7.8393 1.9972 -0.7557 H 1 FENJ 0.0000 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 6 1 + 4 2 3 2 + 5 3 4 1 + 6 4 34 1 + 7 4 16 1 + 8 4 5 1 + 9 5 18 1 + 10 5 17 1 + 11 6 10 1 + 12 6 9 1 + 13 6 7 1 + 14 7 20 1 + 15 7 19 1 + 16 7 8 1 + 17 8 23 1 + 18 8 22 1 + 19 8 21 1 + 20 9 26 1 + 21 9 25 1 + 22 9 24 1 + 23 10 27 1 + 24 10 11 1 + 25 11 13 1 + 26 11 12 2 + 27 13 15 1 + 28 13 14 1 + 29 14 30 1 + 30 14 29 1 + 31 14 28 1 + 32 15 33 1 + 33 15 32 1 + 34 15 31 1 +@SUBSTRUCTURE + 1 FENJ 1 +@COMMENT +COMMENT N,N-DIMETHYL-N'-(1-METHYL-1-(4,5-DIHYDRO-1,3-THIAZOL-2-YL)P +@MOLECULE +FENJUD + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.3512 4.9963 0.0384 N.3 1 UNCH -0.7301 + 2 C2 2.4126 3.8885 0.8546 C.2 1 UNCH 0.5000 + 3 S2 3.2425 2.5258 0.4127 S.2 1 UNCH -0.3800 + 4 N3 1.7011 4.1417 1.9929 N.3 1 UNCH -0.4201 + 5 C4 1.1273 5.3907 1.9229 C.2 1 UNCH 0.5690 + 6 O4 0.3788 5.8849 2.7559 O.2 1 UNCH -0.5700 + 7 C5 1.5751 6.0657 0.6157 C.3 1 UNCH 0.3611 + 8 C6 0.3855 6.4722 -0.2546 C.3 1 UNCH 0.0000 + 9 C7 0.2834 7.9795 -0.0628 C.3 1 UNCH 0.0000 + 10 C8 1.7357 8.4161 0.0317 C.3 1 UNCH 0.0000 + 11 C9 2.3969 7.3320 0.8788 C.3 1 UNCH 0.0000 + 12 C10 1.4459 3.2365 3.1102 C.3 1 UNCH 0.3001 + 13 C11 0.1521 2.4479 2.9055 C.3 1 UNCH 0.2300 + 14 S11 -0.1913 1.3693 4.3275 S.3 1 UNCH -0.4100 + 15 H1 2.8235 5.0306 -0.8581 H 1 UNCH 0.3700 + 16 H61 0.5829 6.2536 -1.3117 H 1 UNCH 0.0000 + 17 H62 -0.5488 5.9710 0.0190 H 1 UNCH 0.0000 + 18 H71 -0.2449 8.2100 0.8698 H 1 UNCH 0.0000 + 19 H72 -0.2452 8.4674 -0.8866 H 1 UNCH 0.0000 + 20 H81 2.1877 8.4367 -0.9672 H 1 UNCH 0.0000 + 21 H82 1.8446 9.4107 0.4737 H 1 UNCH 0.0000 + 22 H91 3.4531 7.2245 0.6085 H 1 UNCH 0.0000 + 23 H92 2.3573 7.6213 1.9358 H 1 UNCH 0.0000 + 24 H101 2.2979 2.5577 3.2235 H 1 UNCH 0.0000 + 25 H102 1.3762 3.8427 4.0217 H 1 UNCH 0.0000 + 26 H111 -0.6985 3.1243 2.7713 H 1 UNCH 0.0000 + 27 H112 0.2201 1.8256 2.0074 H 1 UNCH 0.0000 + 28 H113 -0.4166 2.3497 5.2158 H 1 UNCH 0.1800 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 15 1 + 4 2 3 2 + 5 2 4 1 + 6 4 5 am + 7 4 12 1 + 8 5 6 2 + 9 5 7 1 + 10 7 8 1 + 11 7 11 1 + 12 8 9 1 + 13 8 16 1 + 14 8 17 1 + 15 9 10 1 + 16 9 18 1 + 17 9 19 1 + 18 10 11 1 + 19 10 20 1 + 20 10 21 1 + 21 11 22 1 + 22 11 23 1 + 23 12 13 1 + 24 12 24 1 + 25 12 25 1 + 26 13 14 1 + 27 13 26 1 + 28 13 27 1 + 29 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3'-(2-MERCAPTOETHYL)-2'-THIOXOSPIRO-1,5'-(CYCLOPENTANE)IMID +@MOLECULE +FENNUH + 21 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.2065 5.5628 8.1599 P 1 FENN -0.3432 + 2 N1 0.1145 7.6833 9.8972 N.3 1 FENN -0.7882 + 3 N2 1.3585 7.7710 7.9213 N.3 1 FENN -0.7882 + 4 C1 0.4515 7.0682 8.6974 C.2 1 FENN 0.3474 + 5 C2 0.9662 8.7359 10.4548 C.3 1 FENN 0.3691 + 6 C3 -0.7691 7.0488 10.8772 C.3 1 FENN 0.3691 + 7 C4 0.8149 8.7110 6.9382 C.3 1 FENN 0.3691 + 8 C5 2.6100 7.1416 7.4998 C.3 1 FENN 0.3691 + 9 H1 0.4847 5.5242 6.9211 H 1 FENN 0.0958 + 10 H21 0.5368 9.1712 11.3636 H 1 FENN 0.0000 + 11 H22 1.0915 9.5623 9.7478 H 1 FENN 0.0000 + 12 H23 1.9514 8.3311 10.7099 H 1 FENN 0.0000 + 13 H31 -1.0627 7.7496 11.6667 H 1 FENN 0.0000 + 14 H32 -0.2683 6.1984 11.3517 H 1 FENN 0.0000 + 15 H33 -1.7015 6.7105 10.4137 H 1 FENN 0.0000 + 16 H41 0.4700 8.1821 6.0434 H 1 FENN 0.0000 + 17 H42 -0.0276 9.2717 7.3572 H 1 FENN 0.0000 + 18 H43 1.5786 9.4376 6.6413 H 1 FENN 0.0000 + 19 H51 3.3613 7.9088 7.2840 H 1 FENN 0.0000 + 20 H52 2.4720 6.5362 6.5981 H 1 FENN 0.0000 + 21 H53 3.0136 6.5071 8.2962 H 1 FENN 0.0000 +@BOND + 1 1 9 1 + 2 1 4 2 + 3 2 6 1 + 4 2 5 1 + 5 2 4 1 + 6 3 8 1 + 7 3 7 1 + 8 3 4 1 + 9 5 12 1 + 10 5 11 1 + 11 5 10 1 + 12 6 15 1 + 13 6 14 1 + 14 6 13 1 + 15 7 18 1 + 16 7 17 1 + 17 7 16 1 + 18 8 21 1 + 19 8 20 1 + 20 8 19 1 +@SUBSTRUCTURE + 1 FENN 1 +@COMMENT +COMMENT C,C-BIS(DIMETHYLAMINO)METHYLENE-PHOSPHINE (AT -110 DEG.C) +@MOLECULE +FENYIG + 36 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.0865 8.0307 2.9270 C.2 1 FENY 0.6300 + 2 O1 3.7388 8.9262 3.4061 O.2 1 FENY -0.5700 + 3 C2 2.7394 7.9018 1.5042 C.2 1 FENY 0.0134 + 4 C3 1.7639 6.8303 1.2602 C.2 1 FENY 0.6300 + 5 O2 1.3697 6.4646 0.1802 O.2 1 FENY -0.5700 + 6 N1 1.5078 6.3764 2.5379 N.3 1 FENY -0.3601 + 7 C4 0.9991 5.0451 2.8375 C.3 1 FENY 0.3611 + 8 C5 0.4876 4.9796 4.2822 C.3 1 FENY 0.0000 + 9 C6 1.5150 5.5366 5.2741 C.3 1 FENY 0.0000 + 10 C7 1.9652 6.9373 4.8701 C.3 1 FENY 0.3001 + 11 N2 2.4048 6.9675 3.4924 N.3 1 FENY -0.3601 + 12 N3 3.2368 8.6524 0.5679 N.1 1 FENY 0.3566 + 13 N4 3.6695 9.3139 -0.2552 N.2 1 FENY -0.3700 + 14 C8 2.0667 3.9734 2.5732 C.2 1 FENY 0.6590 + 15 O3 3.2598 4.1948 2.4187 O.2 1 FENY -0.5700 + 16 O4 1.4795 2.7435 2.5552 O.3 1 FENY -0.4300 + 17 C9 2.2676 1.5469 2.3215 C.3 1 FENY 0.2800 + 18 C10 3.2995 1.3369 3.4349 C.3 1 FENY 0.0000 + 19 C11 1.2513 0.3960 2.3706 C.3 1 FENY 0.0000 + 20 C12 2.9160 1.5695 0.9332 C.3 1 FENY 0.0000 + 21 H1 0.1792 4.8533 2.1339 H 1 FENY 0.0000 + 22 H2 0.2272 3.9528 4.5627 H 1 FENY 0.0000 + 23 H3 -0.4303 5.5763 4.3613 H 1 FENY 0.0000 + 24 H4 1.0869 5.5594 6.2822 H 1 FENY 0.0000 + 25 H5 2.3843 4.8684 5.3083 H 1 FENY 0.0000 + 26 H6 2.7878 7.2786 5.5079 H 1 FENY 0.0000 + 27 H7 1.1479 7.6604 4.9790 H 1 FENY 0.0000 + 28 H8 3.7786 0.3552 3.3540 H 1 FENY 0.0000 + 29 H9 2.8283 1.4149 4.4212 H 1 FENY 0.0000 + 30 H10 4.0921 2.0906 3.4060 H 1 FENY 0.0000 + 31 H11 1.7286 -0.5759 2.2069 H 1 FENY 0.0000 + 32 H12 0.4723 0.5315 1.6112 H 1 FENY 0.0000 + 33 H13 0.7376 0.3709 3.3387 H 1 FENY 0.0000 + 34 H14 3.3713 0.6033 0.6905 H 1 FENY 0.0000 + 35 H15 3.7011 2.3280 0.8604 H 1 FENY 0.0000 + 36 H16 2.1753 1.8094 0.1621 H 1 FENY 0.0000 +@BOND + 1 1 11 am + 2 1 3 1 + 3 1 2 2 + 4 3 12 2 + 5 3 4 1 + 6 4 6 am + 7 4 5 2 + 8 6 11 1 + 9 6 7 1 + 10 7 21 1 + 11 7 14 1 + 12 7 8 1 + 13 8 23 1 + 14 8 22 1 + 15 8 9 1 + 16 9 25 1 + 17 9 24 1 + 18 9 10 1 + 19 10 27 1 + 20 10 26 1 + 21 10 11 1 + 22 12 13 2 + 23 14 16 1 + 24 14 15 2 + 25 16 17 1 + 26 17 20 1 + 27 17 19 1 + 28 17 18 1 + 29 18 30 1 + 30 18 29 1 + 31 18 28 1 + 32 19 33 1 + 33 19 32 1 + 34 19 31 1 + 35 20 36 1 + 36 20 35 1 + 37 20 34 1 +@SUBSTRUCTURE + 1 FENY 1 +@COMMENT +COMMENT T-BUTYL 2-DIAZO-1,3-DIOXO-HEXAHYDRO-1H-PYRAZOLO(1,2-A)-PYRI +@MOLECULE +FEPWAY + 13 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.0919 3.1291 9.7190 S.2 1 FEPW -0.7500 + 2 S2 5.4224 1.1211 7.9273 S.3 1 FEPW -0.7500 + 3 N1 3.3535 0.6616 9.6280 N.3 1 FEPW -0.8324 + 4 N2 3.8847 -1.3398 8.5492 N.2 1 FEPW -0.7544 + 5 C1 4.2757 1.5766 9.0851 C.2 1 FEPW 1.0280 + 6 C2 3.1782 -0.6240 9.3945 C.2 1 FEPW 0.6038 + 7 C3 2.1019 -1.3094 10.1440 C.3 1 FEPW 0.1050 + 8 H1 2.7160 1.0530 10.3136 H 1 FEPW 0.4500 + 9 H2 4.6295 -0.8601 8.0321 H 1 FEPW 0.4500 + 10 H3 3.7337 -2.3233 8.3855 H 1 FEPW 0.4500 + 11 H4 2.0346 -2.3701 9.8824 H 1 FEPW 0.0000 + 12 H5 1.1341 -0.8465 9.9258 H 1 FEPW 0.0000 + 13 H6 2.2859 -1.2389 11.2208 H 1 FEPW 0.0000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 3 5 1 + 4 3 6 am + 5 3 8 1 + 6 4 6 2 + 7 4 9 1 + 8 4 10 1 + 9 6 7 1 + 10 7 11 1 + 11 7 12 1 + 12 7 13 1 +@SUBSTRUCTURE + 1 FEPW 1 +@COMMENT +COMMENT N-ACETIMIDOYL DITHIOCARBAMIC ACID +@MOLECULE +FEPWOM + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.0029 1.5407 4.4128 S.3 1 UNCH -0.2660 + 2 F1 1.8742 1.6889 5.8575 F 1 UNCH -0.3400 + 3 F2 1.6979 2.6681 3.9350 F 1 UNCH -0.3400 + 4 N1 4.5700 3.1387 2.1323 N.1 1 UNCH -0.5571 + 5 C1 2.5548 2.4811 4.9790 C.3 1 UNCH 0.9100 + 6 C2 4.3403 2.4833 3.0595 C.1 1 UNCH 0.5931 + 7 C1B 2.8982 3.8369 5.6515 C.3 1 UNCH 0.9100 + 8 S1B 1.4501 4.7773 6.2177 S.3 1 UNCH -0.2660 + 9 F1B 3.5788 4.6291 4.7730 F 1 UNCH -0.3400 + 10 F2B 3.7551 3.6499 6.6954 F 1 UNCH -0.3400 + 11 C2B 1.1127 3.8347 7.5710 C.1 1 UNCH 0.5931 + 12 N1B 0.8830 3.1794 8.4981 N.1 1 UNCH -0.5571 +@BOND + 1 1 5 1 + 2 1 6 1 + 3 2 5 1 + 4 3 5 1 + 5 4 6 3 + 6 5 7 1 + 7 7 8 1 + 8 7 9 1 + 9 7 10 1 + 10 8 11 1 + 11 11 12 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,1,2,2-TETRAFLUORO-1,2-DITHIOCYANATO-ETHANE (AT -130 DEG.C +@MOLECULE +FESCAH + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.8514 0.0000 1.4153 N.3 1 UNCH -0.1800 + 2 C1 4.6982 -1.0825 1.4153 C.2 1 UNCH 0.5700 + 3 O1 5.9246 -1.0364 1.4153 O.2 1 UNCH -0.5700 + 4 H1 4.1734 -2.0529 1.4153 H 1 UNCH 0.0600 + 5 C1A 4.3655 1.2746 1.4153 C.2 1 UNCH 0.5700 + 6 C1B 2.4905 -0.1921 1.4153 C.2 1 UNCH 0.5700 + 7 O1A 3.7123 2.3137 1.4153 O.2 1 UNCH -0.5700 + 8 H1A 5.4683 1.3053 1.4153 H 1 UNCH 0.0600 + 9 O1B 1.9172 -1.2773 1.4153 O.2 1 UNCH -0.5700 + 10 H1B 1.9125 0.7476 1.4153 H 1 UNCH 0.0600 +@BOND + 1 1 2 am + 2 1 5 am + 3 1 6 am + 4 2 3 2 + 5 2 4 1 + 6 5 7 2 + 7 5 8 1 + 8 6 9 2 + 9 6 10 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRIFORMAMIDE +@MOLECULE +FESMIZ + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 1.7331 7.5804 1.2079 CL 1 UNCH -0.2900 + 2 CL2 1.6268 4.6907 0.9285 CL 1 UNCH -0.2900 + 3 CL3 1.0929 5.9277 3.5178 CL 1 UNCH -0.2900 + 4 C1 2.1105 6.0224 2.0386 C.3 1 UNCH 0.8700 + 5 C2 3.6261 5.9419 2.3704 C.3 1 UNCH 0.5600 + 6 C3 5.7625 7.7894 4.3998 C.2 1 UNCH 0.4138 + 7 C4 7.1997 7.8135 4.8194 C.2 1 UNCH 0.0862 + 8 C5 8.1782 7.2407 3.9972 C.2 1 UNCH -0.1500 + 9 C6 9.5204 7.2668 4.3815 C.2 1 UNCH -0.1500 + 10 C7 9.8895 7.8596 5.5885 C.2 1 UNCH -0.1500 + 11 C8 8.9187 8.4239 6.4155 C.2 1 UNCH -0.1500 + 12 C9 7.5751 8.4012 6.0342 C.2 1 UNCH -0.1500 + 13 N1 5.3903 6.9040 3.5182 N.2 1 UNCH -0.5130 + 14 N2 4.8916 8.7013 4.9500 N.3 1 UNCH -0.8500 + 15 O1 3.9982 4.7168 3.0127 O.3 1 UNCH -0.6800 + 16 O2 4.0141 7.0343 3.2218 O.3 1 UNCH -0.2170 + 17 H1 4.2067 6.0139 1.4413 H 1 UNCH 0.0000 + 18 H2 7.9043 6.7774 3.0527 H 1 UNCH 0.1500 + 19 H3 10.2773 6.8227 3.7397 H 1 UNCH 0.1500 + 20 H4 10.9347 7.8757 5.8881 H 1 UNCH 0.1500 + 21 H5 9.2074 8.8743 7.3621 H 1 UNCH 0.1500 + 22 H6 6.8299 8.8221 6.7035 H 1 UNCH 0.1500 + 23 H7 4.0099 8.7245 4.4464 H 1 UNCH 0.4000 + 24 H8 5.2689 9.6305 5.0984 H 1 UNCH 0.4000 + 25 H9 4.8616 4.9620 3.4045 H 1 UNCH 0.4000 +@BOND + 1 1 4 1 + 2 2 4 1 + 3 3 4 1 + 4 4 5 1 + 5 5 15 1 + 6 5 16 1 + 7 5 17 1 + 8 6 7 1 + 9 6 13 2 + 10 6 14 am + 11 7 8 2 + 12 7 12 1 + 13 8 9 1 + 14 8 18 1 + 15 9 10 2 + 16 9 19 1 + 17 10 11 1 + 18 10 20 1 + 19 11 12 2 + 20 11 21 1 + 21 12 22 1 + 22 13 16 1 + 23 14 23 1 + 24 14 24 1 + 25 15 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT O-(2,2,2-TRICHLORO-1-HYDROXYETHYL)-BENZAMIDOXIME (AT 173 DE +@MOLECULE +FETRUR + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.0000 0.0000 5.9725 N.3 1 FETR -0.9590 + 2 C1 0.6912 1.1974 5.4676 C.3 1 FETR 0.7730 + 3 N2 0.6871 1.1902 4.0265 N.3 1 FETR -0.8100 + 4 C2 1.3713 0.0001 3.5378 C.3 1 FETR 0.5400 + 5 H1 0.0000 0.0000 6.9944 H 1 FETR 0.4500 + 6 H2 1.7091 1.2042 5.8791 H 1 FETR 0.0000 + 7 H3 1.4143 0.0001 2.4402 H 1 FETR 0.0000 + 8 H4 2.4223 0.0002 3.8574 H 1 FETR 0.0000 + 9 C1C -1.3826 -0.0001 5.4676 C.3 1 FETR 0.7730 + 10 C1D 0.6914 -1.1973 5.4675 C.3 1 FETR 0.7730 + 11 H2L 0.1880 2.0823 5.8791 H 1 FETR 0.0000 + 12 C2C -0.6858 1.1876 3.5378 C.3 1 FETR 0.5400 + 13 N2D 0.6872 -1.1901 4.0265 N.3 1 FETR -0.8100 + 14 N2C -1.3743 -0.0001 4.0265 N.3 1 FETR -0.8100 + 15 H2C -1.8974 0.8781 5.8791 H 1 FETR 0.0000 + 16 H2I -1.8973 -0.8783 5.8791 H 1 FETR 0.0000 + 17 H2D 0.1883 -2.0822 5.8791 H 1 FETR 0.0000 + 18 H2M 1.7093 -1.2039 5.8791 H 1 FETR 0.0000 + 19 H3C -0.7072 1.2248 2.4402 H 1 FETR 0.0000 + 20 H4C -1.2113 2.0977 3.8574 H 1 FETR 0.0000 + 21 C2D -0.6856 -1.1876 3.5378 C.3 1 FETR 0.5400 + 22 H3D -0.7071 -1.2248 2.4402 H 1 FETR 0.0000 + 23 H4D -1.2110 -2.0978 3.8574 H 1 FETR 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 9 1 + 4 1 10 1 + 5 2 3 1 + 6 2 6 1 + 7 2 11 1 + 8 3 4 1 + 9 3 12 1 + 10 4 7 1 + 11 4 8 1 + 12 4 13 1 + 13 9 14 1 + 14 9 15 1 + 15 9 16 1 + 16 10 13 1 + 17 10 17 1 + 18 10 18 1 + 19 12 14 1 + 20 12 19 1 + 21 12 20 1 + 22 13 21 1 + 23 14 21 1 + 24 21 22 1 + 25 21 23 1 +@SUBSTRUCTURE + 1 FETR 1 +@COMMENT +COMMENT HEXAMETHYLENETETRAMINE MONOHYDROCHLORIDE 3,5,7-TRIAZA-1-AZO +@MOLECULE +FETWOQ + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.7967 1.5822 3.6475 C.3 1 FETS 0.0530 + 2 C2 3.5437 1.4443 2.3348 C.3 1 FETS 0.0000 + 3 C3 4.4025 2.6986 2.2575 C.3 1 FETS 0.2800 + 4 C4 3.5269 3.7935 2.8921 C.3 1 FETS 0.2800 + 5 C5 2.6627 3.1066 3.9526 C.3 1 FETS 0.0000 + 6 C6 3.1163 2.8551 5.4283 C.3 1 FETS 0.2780 + 7 C7 3.6351 1.4849 4.9486 C.2 1 FETS 0.4640 + 8 C8 5.3891 3.9099 5.7801 C.2 1 FETS 0.5690 + 9 C9 5.9982 4.9427 6.6787 C.3 1 FETS 0.0610 + 10 C10 4.8149 5.5805 7.3733 C.3 1 FETS 0.0610 + 11 C11 3.6457 4.7460 6.9500 C.2 1 FETS 0.5690 + 12 N1 4.0486 3.8254 6.0223 N.3 1 FETS -0.3450 + 13 O1 2.6476 4.3225 1.8923 O.3 1 FETS -0.6800 + 14 O2 4.6859 3.0345 0.9020 O.3 1 FETS -0.6800 + 15 O3 4.3742 0.6435 5.4122 O.2 1 FETS -0.5700 + 16 O4 6.0233 3.2719 4.9550 O.2 1 FETS -0.5700 + 17 O5 2.5087 4.8980 7.3718 O.2 1 FETS -0.5700 + 18 H1 1.8669 1.0072 3.7098 H 1 FETS 0.0000 + 19 H2 4.1503 0.5340 2.2907 H 1 FETS 0.0000 + 20 H3 2.8412 1.4031 1.4935 H 1 FETS 0.0000 + 21 H4 5.3392 2.5603 2.8001 H 1 FETS 0.0000 + 22 H5 4.1148 4.6298 3.2782 H 1 FETS 0.0000 + 23 H6 1.6280 3.4749 3.9233 H 1 FETS 0.0000 + 24 H7 2.2558 2.6933 6.0951 H 1 FETS 0.0000 + 25 H8 6.6674 4.4542 7.3933 H 1 FETS 0.0000 + 26 H9 6.5593 5.6746 6.0911 H 1 FETS 0.0000 + 27 H10 4.9263 5.5561 8.4608 H 1 FETS 0.0000 + 28 H11 4.6649 6.6122 7.0415 H 1 FETS 0.0000 + 29 H12 3.1606 4.2666 1.0569 H 1 FETS 0.4000 + 30 H13 5.2646 2.3319 0.5533 H 1 FETS 0.4000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 7 1 + 4 1 18 1 + 5 2 3 1 + 6 2 19 1 + 7 2 20 1 + 8 3 4 1 + 9 3 14 1 + 10 3 21 1 + 11 4 5 1 + 12 4 13 1 + 13 4 22 1 + 14 5 6 1 + 15 5 23 1 + 16 6 7 1 + 17 6 12 1 + 18 6 24 1 + 19 7 15 2 + 20 8 9 1 + 21 8 12 am + 22 8 16 2 + 23 9 10 1 + 24 9 25 1 + 25 9 26 1 + 26 10 11 1 + 27 10 27 1 + 28 10 28 1 + 29 11 12 am + 30 11 17 2 + 31 13 29 1 + 32 14 30 1 +@SUBSTRUCTURE + 1 FETS 1 +@COMMENT +COMMENT N-(3,4-DIHYDROXY-7-OXOBICYCLO(3.2.0)HEPT-6-YL)SUCCINIMIDE +@MOLECULE +FEVNUP + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 9.6296 7.8575 1.2313 CL 1 UNCH 0.0020 + 2 CL2 9.4047 5.5899 5.3174 CL 1 UNCH -0.2900 + 3 CL3 8.1529 3.8168 3.3650 CL 1 UNCH -0.2900 + 4 N1 11.2700 3.2740 2.5608 N.3 1 UNCH -0.6602 + 5 C1 12.0460 2.0481 2.5539 C.3 1 UNCH 0.3001 + 6 C2 11.3067 4.0951 1.4565 C.2 1 UNCH 0.6900 + 7 O1 11.8433 3.8030 0.3926 O.2 1 UNCH -0.5700 + 8 N2 10.6683 5.3027 1.5865 N.3 1 UNCH -0.4900 + 9 C3 9.8593 5.7396 2.6191 C.2 1 UNCH 0.4490 + 10 N3 9.2629 6.8953 2.6286 N.2 1 UNCH -0.4520 + 11 C4 9.6402 4.7448 3.7536 C.3 1 UNCH 0.6410 + 12 C5 10.8660 3.8104 3.8453 C.3 1 UNCH 0.5801 + 13 O2 12.0202 4.4491 4.3941 O.3 1 UNCH -0.6800 + 14 H1 12.1765 1.6700 1.5359 H 1 UNCH 0.0000 + 15 H2 13.0313 2.2483 2.9850 H 1 UNCH 0.0000 + 16 H3 11.5284 1.2891 3.1473 H 1 UNCH 0.0000 + 17 H4 10.7563 5.9075 0.7808 H 1 UNCH 0.3700 + 18 H5 10.6274 2.9654 4.5038 H 1 UNCH 0.0000 + 19 H6 11.7710 4.7918 5.2727 H 1 UNCH 0.4000 +@BOND + 1 1 10 1 + 2 2 11 1 + 3 3 11 1 + 4 4 5 1 + 5 4 6 am + 6 4 12 1 + 7 5 14 1 + 8 5 15 1 + 9 5 16 1 + 10 6 7 2 + 11 6 8 am + 12 8 9 am + 13 8 17 1 + 14 9 10 2 + 15 9 11 1 + 16 11 12 1 + 17 12 13 1 + 18 12 18 1 + 19 13 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,5-DICHLORO-4-CHLOROIMINO-6-HYDROXY-5,6-DIHYDRO-1-METHYLPY +@MOLECULE +FEYLUQ + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 7.5405 1.2512 5.0629 O.3 1 UNCH 0.2418 + 2 O2 4.6392 1.7530 0.6991 O.3 1 UNCH -0.5200 + 3 O3 5.8790 3.2165 1.7743 O.2 1 UNCH -0.5200 + 4 O4 9.4422 -2.6640 2.1021 O.3 1 UNCH -0.5200 + 5 O5 8.6279 -2.6746 4.1446 O.2 1 UNCH -0.5200 + 6 N1 6.8943 1.8593 4.0000 N.2 1 UNCH -0.4097 + 7 N2 7.9950 -0.0113 4.7215 N.2 1 UNCH -0.4097 + 8 N3 6.4848 1.0731 1.7094 N.3 1 UNCH -0.4561 + 9 N4 7.8054 -1.2711 2.6217 N.3 1 UNCH -0.4561 + 10 N5 5.6034 2.0752 1.4012 N.2 1 UNCH 1.0440 + 11 N6 8.6953 -2.2442 2.9922 N.2 1 UNCH 1.0440 + 12 C1 6.3762 -0.1693 0.9419 C.3 1 UNCH 0.3691 + 13 C2 7.6134 -1.0555 1.1861 C.3 1 UNCH 0.3691 + 14 C3 6.9493 0.9848 2.9954 C.2 1 UNCH 0.3718 + 15 C4 7.6299 -0.1962 3.4529 C.2 1 UNCH 0.3718 + 16 H1 6.3132 0.0374 -0.1341 H 1 UNCH 0.0000 + 17 H2 5.4711 -0.7170 1.2381 H 1 UNCH 0.0000 + 18 H3 7.4581 -2.0075 0.6627 H 1 UNCH 0.0000 + 19 H4 8.5003 -0.5700 0.7563 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 10 1 + 4 3 10 2 + 5 4 11 1 + 6 5 11 2 + 7 6 14 2 + 8 7 15 2 + 9 8 10 1 + 10 8 12 1 + 11 8 14 am + 12 9 11 1 + 13 9 13 1 + 14 9 15 am + 15 12 13 1 + 16 12 16 1 + 17 12 17 1 + 18 13 18 1 + 19 13 19 1 + 20 14 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,4-DINITROFURAZANO(3,4-B)PIPERAZINE (POLYMORPH I) +@MOLECULE +FEZPOP + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -3.7763 1.0237 6.6009 S.2 1 CHGB -0.3800 + 2 O1 -3.7745 0.8249 9.1898 O.3 1 CHGB -0.8610 + 3 N1 -1.7240 0.6837 8.1848 N.3 1 CHGB -0.4300 + 4 C1 -3.0997 0.8354 8.1415 C.2 1 CHGB 0.3010 + 5 H1 -1.1295 0.7916 7.3704 H 1 CHGB 0.3700 + 6 N1B -1.0254 0.6787 9.3937 N.3 1 CHGB -0.4300 + 7 C1B 0.3499 0.8345 9.4386 C.2 1 CHGB 0.3010 + 8 H1B -1.6202 0.7765 10.2092 H 1 CHGB 0.3700 + 9 S1B 1.0259 1.0094 10.9810 S.2 1 CHGB -0.3800 + 10 O1B 1.0247 0.8368 8.3903 O.3 1 CHGB -0.8610 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 4 1 + 4 3 5 1 + 5 3 6 1 + 6 6 7 1 + 7 6 8 1 + 8 7 9 2 + 9 7 10 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT DIPOTASSIUM 1,2-HYDRAZINE-BIS(MONOTHIOCARBOXYLATE) DIHYDRAT +@MOLECULE +FEZRUX + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.1730 2.8063 0.0385 O.2 1 UNCH -0.5700 + 2 N1 0.1502 2.1448 -2.1488 N.3 1 UNCH -0.1000 + 3 N2 1.4433 2.6953 -2.1734 N.3 1 UNCH -0.4700 + 4 N3 1.8842 1.6712 -4.2905 N.2 1 UNCH -0.4920 + 5 N4 0.5426 1.4038 -4.3423 N.3 1 UNCH -0.4080 + 6 N5 -1.5388 1.0439 -3.3459 N.2 1 UNCH -0.6210 + 7 C1 3.7377 2.5831 -3.0543 C.3 1 UNCH 0.0610 + 8 C2 2.2651 2.2853 -3.2050 C.2 1 UNCH 0.4390 + 9 C3 -0.3297 1.5182 -3.2846 C.2 1 UNCH 0.5600 + 10 C4 -0.5866 2.2932 -0.9989 C.2 1 UNCH 0.6156 + 11 C5 -1.9548 1.7624 -1.0897 C.2 1 UNCH -0.1356 + 12 C6 -2.3407 1.1746 -2.2329 C.2 1 UNCH 0.1426 + 13 C7 -3.7257 0.6539 -2.3373 C.2 1 UNCH 0.0284 + 14 C8 -4.4795 0.9139 -3.4921 C.2 1 UNCH -0.1500 + 15 C9 -5.7846 0.4319 -3.6191 C.2 1 UNCH -0.1500 + 16 C10 -6.3506 -0.3250 -2.5959 C.2 1 UNCH -0.1500 + 17 C11 -5.6111 -0.6057 -1.4491 C.2 1 UNCH -0.1500 + 18 C12 -4.3054 -0.1231 -1.3215 C.2 1 UNCH -0.1500 + 19 H1 1.8362 2.8649 -1.2496 H 1 UNCH 0.4000 + 20 H2 0.1980 0.8661 -5.1324 H 1 UNCH 0.4000 + 21 H3 4.2870 2.2956 -3.9550 H 1 UNCH 0.0000 + 22 H4 3.8770 3.6532 -2.8763 H 1 UNCH 0.0000 + 23 H5 4.1325 2.0249 -2.2006 H 1 UNCH 0.0000 + 24 H6 -2.5872 1.8890 -0.2218 H 1 UNCH 0.1500 + 25 H7 -4.0487 1.4979 -4.3031 H 1 UNCH 0.1500 + 26 H8 -6.3551 0.6449 -4.5194 H 1 UNCH 0.1500 + 27 H9 -7.3648 -0.7028 -2.6962 H 1 UNCH 0.1500 + 28 H10 -6.0475 -1.2070 -0.6556 H 1 UNCH 0.1500 + 29 H11 -3.7425 -0.3751 -0.4260 H 1 UNCH 0.1500 +@BOND + 1 1 10 2 + 2 2 3 1 + 3 2 9 am + 4 2 10 am + 5 3 8 am + 6 3 19 1 + 7 4 5 1 + 8 4 8 2 + 9 5 9 am + 10 5 20 1 + 11 6 9 2 + 12 6 12 1 + 13 7 8 1 + 14 7 21 1 + 15 7 22 1 + 16 7 23 1 + 17 10 11 1 + 18 11 12 2 + 19 11 24 1 + 20 12 13 1 + 21 13 14 2 + 22 13 18 1 + 23 14 15 1 + 24 14 25 1 + 25 15 16 2 + 26 15 26 1 + 27 16 17 1 + 28 16 27 1 + 29 17 18 2 + 30 17 28 1 + 31 18 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-METHYL-8-PHENYL-1,4-DIHYDRO-6H-PYRIMIDO(1,2-B)-1,2,4,5-TE +@MOLECULE +FIBLIL + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 6.9055 0.3318 15.5601 N.3 1 UNCH -0.3246 + 2 O1 5.8616 1.2981 15.4159 O.3 1 UNCH -0.3155 + 3 C1 4.8659 0.7615 14.5365 C.3 1 UNCH 0.2800 + 4 C2 5.4575 0.6096 13.1389 C.3 1 UNCH 0.0000 + 5 C3 6.7248 -0.2428 13.1910 C.3 1 UNCH 0.0000 + 6 C4 7.6472 0.2334 14.3083 C.3 1 UNCH 0.3001 + 7 C5 7.6276 0.5006 16.7430 C.2 1 UNCH 0.5438 + 8 O2 8.8363 0.2880 16.8347 O.2 1 UNCH -0.5700 + 9 C6 6.8893 0.9020 17.9741 C.2 1 UNCH 0.0862 + 10 C7 5.5850 0.4578 18.2326 C.2 1 UNCH -0.1500 + 11 C8 4.9338 0.8338 19.4120 C.2 1 UNCH -0.1500 + 12 C9 5.5986 1.6473 20.3406 C.2 1 UNCH 0.1330 + 13 C10 6.9098 2.0794 20.1003 C.2 1 UNCH -0.1500 + 14 C11 7.5532 1.6989 18.9187 C.2 1 UNCH -0.1500 + 15 N2 4.9165 2.0440 21.5794 N.2 1 UNCH 0.9070 + 16 O3 5.5350 2.7681 22.3722 O.3 1 UNCH -0.5200 + 17 O4 3.7613 1.6320 21.7578 O.2 1 UNCH -0.5200 + 18 H1 5.0725 -0.1888 17.5249 H 1 UNCH 0.1500 + 19 H2 3.9195 0.4827 19.5917 H 1 UNCH 0.1500 + 20 H3 7.4424 2.7029 20.8157 H 1 UNCH 0.1500 + 21 H4 8.5756 2.0249 18.7325 H 1 UNCH 0.1500 + 22 H5 4.0244 1.4608 14.5161 H 1 UNCH 0.0000 + 23 H6 4.5001 -0.1949 14.9288 H 1 UNCH 0.0000 + 24 H7 4.7250 0.1682 12.4555 H 1 UNCH 0.0000 + 25 H8 5.7214 1.6014 12.7516 H 1 UNCH 0.0000 + 26 H9 7.2448 -0.2137 12.2276 H 1 UNCH 0.0000 + 27 H10 6.4416 -1.2865 13.3770 H 1 UNCH 0.0000 + 28 H11 8.4787 -0.4688 14.4333 H 1 UNCH 0.0000 + 29 H12 8.0709 1.2187 14.0792 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 7 am + 4 2 3 1 + 5 3 4 1 + 6 3 22 1 + 7 3 23 1 + 8 4 5 1 + 9 4 24 1 + 10 4 25 1 + 11 5 6 1 + 12 5 26 1 + 13 5 27 1 + 14 6 28 1 + 15 6 29 1 + 16 7 8 2 + 17 7 9 1 + 18 9 10 2 + 19 9 14 1 + 20 10 11 1 + 21 10 18 1 + 22 11 12 2 + 23 11 19 1 + 24 12 13 1 + 25 12 15 1 + 26 13 14 2 + 27 13 20 1 + 28 14 21 1 + 29 15 16 1 + 30 15 17 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(P-NITROBENZOYL)TETRAHYDRO-2H-1,2-OXAZINE +@MOLECULE +FICDOK + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.9142 5.1046 1.0100 N.3 1 UNCH 0.0476 + 2 C1 1.9486 3.6687 0.8689 C.3 1 UNCH 0.2556 + 3 C2 0.7958 5.8502 1.2465 C.2 1 UNCH 0.0365 + 4 N2 1.0781 7.1289 1.3278 N.2 1 UNCH -0.5653 + 5 C3 2.4474 7.2002 1.1293 C.2 1 UNCH 0.3062 + 6 N3 3.0765 8.4912 1.1414 N.2 1 UNCH 0.9610 + 7 O1 2.8849 9.2036 2.1362 O.3 1 UNCH -0.5200 + 8 O2 3.7755 8.7873 0.1621 O.2 1 UNCH -0.5200 + 9 C4 3.0091 5.9429 0.9407 C.2 1 UNCH -0.0886 + 10 O3 4.2151 5.3976 0.7480 O.3 1 UNCH -0.3430 + 11 C5 5.3465 6.2567 0.7591 C.3 1 UNCH 0.2800 + 12 H1 0.9352 3.2680 0.9534 H 1 UNCH 0.0000 + 13 H2 2.5768 3.2577 1.6632 H 1 UNCH 0.0000 + 14 H3 2.3608 3.4267 -0.1140 H 1 UNCH 0.0000 + 15 H4 -0.1915 5.4168 1.3507 H 1 UNCH 0.1500 + 16 H5 6.2424 5.6283 0.7744 H 1 UNCH 0.0000 + 17 H6 5.3673 6.8855 1.6547 H 1 UNCH 0.0000 + 18 H7 5.3809 6.8564 -0.1542 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 am + 3 1 9 1 + 4 2 12 1 + 5 2 13 1 + 6 2 14 1 + 7 3 4 2 + 8 3 15 1 + 9 4 5 1 + 10 5 6 1 + 11 5 9 2 + 12 6 7 1 + 13 6 8 2 + 14 9 10 1 + 15 10 11 1 + 16 11 16 1 + 17 11 17 1 + 18 11 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-METHOXY-1-METHYL-4-NITROIMIDAZOLE +@MOLECULE +FIFGUW + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.3008 1.3029 -0.6088 S.2 1 FIFG 0.2105 + 2 O1 2.0962 0.2208 -1.2769 O.2 1 FIFG -0.5000 + 3 O2 1.2994 2.5057 1.7883 O.3 1 FIFG -0.2960 + 4 C1 1.9829 1.4730 1.0649 C.3 1 FIFG 0.1490 + 5 C2 1.0350 1.1530 2.1895 C.3 1 FIFG -0.0470 + 6 C3 1.5501 0.7729 3.5594 C.3 1 FIFG 0.0950 + 7 C4 3.0908 0.9465 3.6707 C.3 1 FIFG 0.0000 + 8 C5 3.9316 0.6141 2.4079 C.3 1 FIFG 0.0000 + 9 C6 3.4635 1.4860 1.2210 C.3 1 FIFG 0.0950 + 10 C7 0.8778 1.6722 4.6215 C.3 1 FIFG 0.0000 + 11 C8 1.8850 2.8940 -1.2347 C.3 1 FIFG 0.1935 + 12 C9 5.4078 0.9483 2.7130 C.3 1 FIFG 0.0000 + 13 C10 3.8656 -0.8730 2.0215 C.3 1 FIFG 0.0000 + 14 C11 1.1324 -0.6773 3.8803 C.3 1 FIFG 0.0000 + 15 H1 0.0465 0.7663 1.9744 H 1 FIFG 0.1000 + 16 H2 3.4639 0.3682 4.5270 H 1 FIFG 0.0000 + 17 H3 3.2970 1.9976 3.9224 H 1 FIFG 0.0000 + 18 H4 3.9702 1.1501 0.3078 H 1 FIFG 0.0000 + 19 H5 3.7881 2.5243 1.3739 H 1 FIFG 0.0000 + 20 H6 -0.2143 1.5848 4.5804 H 1 FIFG 0.0000 + 21 H7 1.2020 1.4016 5.6327 H 1 FIFG 0.0000 + 22 H8 1.1207 2.7292 4.4641 H 1 FIFG 0.0000 + 23 H9 2.9731 2.9562 -1.1665 H 1 FIFG 0.0000 + 24 H10 1.4255 3.7065 -0.6672 H 1 FIFG 0.0000 + 25 H11 1.5890 2.9808 -2.2831 H 1 FIFG 0.0000 + 26 H12 6.0444 0.7698 1.8390 H 1 FIFG 0.0000 + 27 H13 5.7891 0.3334 3.5362 H 1 FIFG 0.0000 + 28 H14 5.5281 1.9993 2.9992 H 1 FIFG 0.0000 + 29 H15 4.6247 -1.1162 1.2685 H 1 FIFG 0.0000 + 30 H16 2.9022 -1.1454 1.5826 H 1 FIFG 0.0000 + 31 H17 4.0463 -1.5160 2.8896 H 1 FIFG 0.0000 + 32 H18 0.0405 -0.7650 3.9404 H 1 FIFG 0.0000 + 33 H19 1.4516 -1.3870 3.1151 H 1 FIFG 0.0000 + 34 H20 1.5419 -1.0071 4.8415 H 1 FIFG 0.0000 +@BOND + 1 1 2 2 + 2 1 4 1 + 3 1 11 1 + 4 3 4 1 + 5 3 5 1 + 6 4 5 1 + 7 4 9 1 + 8 5 6 1 + 9 5 15 1 + 10 6 7 1 + 11 6 10 1 + 12 6 14 1 + 13 7 8 1 + 14 7 16 1 + 15 7 17 1 + 16 8 9 1 + 17 8 12 1 + 18 8 13 1 + 19 9 18 1 + 20 9 19 1 + 21 10 20 1 + 22 10 21 1 + 23 10 22 1 + 24 11 23 1 + 25 11 24 1 + 26 11 25 1 + 27 12 26 1 + 28 12 27 1 + 29 12 28 1 + 30 13 29 1 + 31 13 30 1 + 32 13 31 1 + 33 14 32 1 + 34 14 33 1 + 35 14 34 1 +@SUBSTRUCTURE + 1 FIFG 1 +@COMMENT +COMMENT (1,2-EPOXY-3,3,5,5-TETRAMETHYLCYCLOHEXYL) METHYL SULFOXIDE +@MOLECULE +FIGYID + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.8662 1.8430 -0.0061 C.3 1 UNCH 0.0580 + 2 C2 4.2791 1.5040 0.3674 C.3 1 UNCH -0.2000 + 3 C3 3.4434 2.3547 1.2806 C.3 1 UNCH -0.2000 + 4 N1 1.8553 0.7945 0.0455 N.3 1 UNCH -0.8780 + 5 H1 2.7348 2.5707 -0.8042 H 1 UNCH 0.1000 + 6 H2 4.5015 0.4917 0.6847 H 1 UNCH 0.1000 + 7 H3 5.0790 1.9836 -0.1836 H 1 UNCH 0.1000 + 8 H4 3.1048 1.9135 2.2110 H 1 UNCH 0.1000 + 9 H5 3.6775 3.4102 1.3479 H 1 UNCH 0.1000 + 10 H6 0.9248 1.1943 0.1621 H 1 UNCH 0.3600 + 11 H7 1.8318 0.2711 -0.8290 H 1 UNCH 0.3600 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 3 1 + 6 2 6 1 + 7 2 7 1 + 8 3 8 1 + 9 3 9 1 + 10 4 10 1 + 11 4 11 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT AMINOCYCLOPROPANE (AT 170.5 DEG.K) +@MOLECULE +FIHXID + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 2.2282 9.8832 11.4105 BR 1 UNCH -0.1100 + 2 O1 2.9856 11.3607 6.7510 O.3 1 UNCH -0.5600 + 3 O2 -0.2082 9.1553 5.2733 O.2 1 UNCH -0.5700 + 4 O3 1.5061 13.3810 4.7689 O.3 1 UNCH -0.6800 + 5 O4 0.4005 6.0170 8.4602 O.2 1 UNCH -0.5700 + 6 O5 2.3172 13.0131 9.0097 O.3 1 UNCH -0.6800 + 7 N1 1.4157 9.5533 6.8719 N.3 1 UNCH -0.4691 + 8 N2 0.0918 7.6329 6.9045 N.3 1 UNCH -0.4900 + 9 C1 1.7530 10.8244 6.2372 C.3 1 UNCH 0.5801 + 10 C2 0.4005 8.8121 6.2843 C.2 1 UNCH 0.6900 + 11 C3 0.7081 11.9062 6.4738 C.3 1 UNCH 0.0000 + 12 C4 1.4989 13.1578 6.1826 C.3 1 UNCH 0.2800 + 13 C5 0.7002 7.1208 8.0139 C.2 1 UNCH 0.6156 + 14 C6 2.9147 12.8052 6.6493 C.3 1 UNCH 0.2800 + 15 C7 1.7500 7.9737 8.6438 C.2 1 UNCH 0.0144 + 16 C8 3.2636 13.3985 8.0157 C.3 1 UNCH 0.2800 + 17 C9 2.0598 9.1171 8.0152 C.2 1 UNCH -0.0410 + 18 C10 2.4329 7.4861 9.8287 C.2 1 UNCH -0.1500 + 19 C11 2.6851 8.1408 10.9698 C.2 1 UNCH -0.0400 + 20 H1 2.8580 9.7494 8.3908 H 1 UNCH 0.1500 + 21 H2 2.7237 6.4364 9.7741 H 1 UNCH 0.1500 + 22 H3 3.1874 7.6357 11.7889 H 1 UNCH 0.1500 + 23 H4 1.8925 10.6496 5.1622 H 1 UNCH 0.0000 + 24 H5 0.3798 11.9003 7.5196 H 1 UNCH 0.0000 + 25 H6 -0.1709 11.7804 5.8349 H 1 UNCH 0.0000 + 26 H7 -0.6228 7.0684 6.4730 H 1 UNCH 0.3700 + 27 H8 1.0928 14.0569 6.6551 H 1 UNCH 0.0000 + 28 H9 3.6678 13.1186 5.9175 H 1 UNCH 0.0000 + 29 H10 4.2495 13.0559 8.3469 H 1 UNCH 0.0000 + 30 H11 3.2742 14.4916 7.9676 H 1 UNCH 0.0000 + 31 H12 0.5943 13.5942 4.4996 H 1 UNCH 0.4000 + 32 H13 2.4353 12.0549 9.1440 H 1 UNCH 0.4000 +@BOND + 1 1 19 1 + 2 2 9 1 + 3 2 14 1 + 4 3 10 2 + 5 4 12 1 + 6 4 31 1 + 7 5 13 2 + 8 6 16 1 + 9 6 32 1 + 10 7 9 1 + 11 7 10 am + 12 7 17 1 + 13 8 10 am + 14 8 13 am + 15 8 26 1 + 16 9 11 1 + 17 9 23 1 + 18 11 12 1 + 19 11 24 1 + 20 11 25 1 + 21 12 14 1 + 22 12 27 1 + 23 13 15 1 + 24 14 16 1 + 25 14 28 1 + 26 15 17 2 + 27 15 18 1 + 28 16 29 1 + 29 16 30 1 + 30 17 20 1 + 31 18 19 2 + 32 18 21 1 + 33 19 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (Z)-5-(2-BROMOVINYL)-2'-DEOXYURIDINE MONOHYDRATE +@MOLECULE +FIKJAK + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.6482 -0.1211 -4.2979 C.2 1 UNCH -0.0382 + 2 C2 10.9604 0.1611 -4.5059 C.2 1 UNCH -0.0732 + 3 C3 11.4446 1.3725 -5.2705 C.3 1 UNCH 0.1382 + 4 C4 10.4036 1.9791 -6.2268 C.3 1 UNCH 0.4000 + 5 C5 9.0679 2.1377 -5.4758 C.3 1 UNCH 0.0000 + 6 C6 8.5273 0.8363 -4.8154 C.3 1 UNCH 0.5382 + 7 C7 11.9867 -0.7064 -4.0073 C.1 1 UNCH 0.4921 + 8 C8 10.8759 3.3186 -6.6383 C.1 1 UNCH 0.3571 + 9 C9 10.2608 1.1254 -7.4200 C.1 1 UNCH 0.3571 + 10 C10 7.6751 0.1113 -5.7883 C.1 1 UNCH 0.3571 + 11 C11 7.7005 1.2527 -3.6528 C.1 1 UNCH 0.3571 + 12 N1 9.2383 -1.2744 -3.6307 N.3 1 UNCH -0.9000 + 13 N2 12.8180 -1.3940 -3.5848 N.1 1 UNCH -0.5571 + 14 N3 11.2427 4.3833 -6.9151 N.1 1 UNCH -0.5571 + 15 N4 10.1540 0.4241 -8.3361 N.1 1 UNCH -0.5571 + 16 N5 6.9900 -0.4102 -6.5663 N.1 1 UNCH -0.5571 + 17 N6 7.0833 1.5978 -2.7321 N.1 1 UNCH -0.5571 + 18 H1 9.9403 -1.8077 -3.1123 H 1 UNCH 0.4000 + 19 H2 8.3361 -1.2702 -3.1507 H 1 UNCH 0.4000 + 20 H3 11.7610 2.1203 -4.5281 H 1 UNCH 0.0000 + 21 H4 12.3506 1.1101 -5.8374 H 1 UNCH 0.0000 + 22 H5 8.3052 2.5701 -6.1427 H 1 UNCH 0.0000 + 23 H6 9.2178 2.8988 -4.6921 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 12 1 + 4 2 3 1 + 5 2 7 1 + 6 3 4 1 + 7 3 20 1 + 8 3 21 1 + 9 4 5 1 + 10 4 8 1 + 11 4 9 1 + 12 5 6 1 + 13 5 22 1 + 14 5 23 1 + 15 6 10 1 + 16 6 11 1 + 17 7 13 3 + 18 8 14 3 + 19 9 15 3 + 20 10 16 3 + 21 11 17 3 + 22 12 18 1 + 23 12 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4,4,6,6-PENTACYANOCYCLOHEXENAMINE +@MOLECULE +FIKZOO10 + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.9435 3.4600 -0.4874 C.2 1 FIKJ 0.0284 + 2 C2 -0.1387 2.5679 -0.5074 C.2 1 FIKJ -0.1500 + 3 C3 -1.3169 2.8926 -1.1845 C.2 1 FIKJ -0.1500 + 4 C4 -1.4249 4.1106 -1.8519 C.2 1 FIKJ -0.1500 + 5 C5 -0.3568 5.0050 -1.8429 C.2 1 FIKJ -0.1500 + 6 C6 0.8214 4.6818 -1.1648 C.2 1 FIKJ -0.1500 + 7 C7 2.1807 3.1104 0.2152 C.2 1 FIKJ 0.0806 + 8 C8 2.8714 3.9121 1.0392 C.2 1 FIKJ -0.0490 + 9 C9 3.9039 1.6433 0.7847 C.2 1 FIKJ 0.5810 + 10 N1 2.7440 1.8642 0.0798 N.3 1 FIKJ -0.5390 + 11 S1 4.2819 3.1140 1.6800 S.3 1 FIKJ -0.2420 + 12 S2 4.7613 0.2302 0.7629 S.2 1 FIKJ -0.3800 + 13 H1 -0.0824 1.6177 0.0192 H 1 FIKJ 0.1500 + 14 H2 -2.1514 2.1958 -1.1877 H 1 FIKJ 0.1500 + 15 H3 -2.3416 4.3631 -2.3790 H 1 FIKJ 0.1500 + 16 H4 -0.4388 5.9541 -2.3668 H 1 FIKJ 0.1500 + 17 H5 1.6467 5.3904 -1.1835 H 1 FIKJ 0.1500 + 18 H6 2.6122 4.9273 1.3061 H 1 FIKJ 0.1500 + 19 H7 2.3578 1.1528 -0.5263 H 1 FIKJ 0.3700 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 13 1 + 6 3 4 2 + 7 3 14 1 + 8 4 5 1 + 9 4 15 1 + 10 5 6 2 + 11 5 16 1 + 12 6 17 1 + 13 7 8 2 + 14 7 10 1 + 15 8 11 1 + 16 8 18 1 + 17 9 10 1 + 18 9 11 1 + 19 9 12 2 + 20 10 19 1 +@SUBSTRUCTURE + 1 FIKJ 1 +@COMMENT +COMMENT 4-PHENYLTHIAZOLE-2(3H)-THIONE +@MOLECULE +FILGEM + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.2136 1.2432 13.2799 C.2 1 UNCH -0.0284 + 2 C2 1.1018 1.5454 13.3789 C.2 1 UNCH -0.0292 + 3 C3 1.5980 -0.6067 14.4370 C.2 1 UNCH 0.6156 + 4 C4 0.1557 -0.9470 14.3325 C.2 1 UNCH 0.0794 + 5 C5 -0.6757 -0.0479 13.7789 C.2 1 UNCH -0.1500 + 6 C6 1.7610 2.8206 12.9224 C.3 1 UNCH 0.1382 + 7 C7 -0.3086 -2.1979 14.8129 C.1 1 UNCH 0.4921 + 8 C8 -1.1691 2.1935 12.6810 C.2 1 UNCH 0.0284 + 9 C9 -1.4422 2.1517 11.3130 C.2 1 UNCH -0.1500 + 10 C10 -2.3560 3.0569 10.8011 C.2 1 UNCH 0.1600 + 11 C11 -2.7262 3.9899 12.8723 C.2 1 UNCH 0.1600 + 12 C12 -1.8296 3.1279 13.4801 C.2 1 UNCH -0.1500 + 13 N1 1.9625 0.6254 13.9472 N.3 1 UNCH -0.5390 + 14 N2 -0.7491 -3.2046 15.1876 N.1 1 UNCH -0.5571 + 15 N3 -3.0015 3.9756 11.5507 N.2 1 UNCH -0.6200 + 16 O1 2.4259 -1.3661 14.9271 O.2 1 UNCH -0.5700 + 17 H1 2.9506 0.8407 14.0269 H 1 UNCH 0.3700 + 18 H2 -1.7387 -0.2624 13.6855 H 1 UNCH 0.1500 + 19 H3 2.5289 2.5989 12.1731 H 1 UNCH 0.0000 + 20 H4 1.0675 3.5373 12.4756 H 1 UNCH 0.0000 + 21 H5 2.2433 3.3185 13.7707 H 1 UNCH 0.0000 + 22 H6 -0.9576 1.4363 10.6574 H 1 UNCH 0.1500 + 23 H7 -2.6019 3.0677 9.7429 H 1 UNCH 0.1500 + 24 H8 -3.2645 4.7370 13.4489 H 1 UNCH 0.1500 + 25 H9 -1.6532 3.1890 14.5486 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 5 1 + 3 1 8 1 + 4 2 6 1 + 5 2 13 1 + 6 3 4 1 + 7 3 13 am + 8 3 16 2 + 9 4 5 2 + 10 4 7 1 + 11 5 18 1 + 12 6 19 1 + 13 6 20 1 + 14 6 21 1 + 15 7 14 3 + 16 8 9 2 + 17 8 12 1 + 18 9 10 1 + 19 9 22 1 + 20 10 15 2 + 21 10 23 1 + 22 11 12 2 + 23 11 15 1 + 24 11 24 1 + 25 12 25 1 + 26 13 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-CYANO-2-METHYL-(3,4'-BIPYRIDIN)-6(1H)-ONE (INOTROPIC CARD +@MOLECULE +FILNOD + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.4312 6.6818 1.4450 S.2 1 UNCH 0.4980 + 2 O1 9.1655 5.7733 0.5057 O.2 1 UNCH -0.5000 + 3 O2 10.1883 6.1464 3.2192 O.3 1 UNCH -0.3000 + 4 N1 9.3629 7.2373 2.7309 N.3 1 UNCH -0.4320 + 5 C1 10.2094 8.4294 2.4604 C.3 1 UNCH 0.4135 + 6 C2 9.4778 9.1502 1.3471 C.2 1 UNCH -0.1435 + 7 C3 9.6657 10.4544 0.8981 C.2 1 UNCH -0.1500 + 8 C4 8.9175 10.9083 -0.1914 C.2 1 UNCH -0.1500 + 9 C5 7.9999 10.0626 -0.8294 C.2 1 UNCH -0.1500 + 10 C6 7.8153 8.7540 -0.3805 C.2 1 UNCH -0.1500 + 11 C7 8.5541 8.3150 0.7099 C.2 1 UNCH 0.0640 + 12 C8 10.2885 9.2593 3.7471 C.3 1 UNCH 0.0000 + 13 C9 11.6297 8.0876 1.9640 C.3 1 UNCH 0.0000 + 14 H1 9.6937 5.8696 4.0110 H 1 UNCH 0.4000 + 15 H2 10.3896 11.1126 1.3692 H 1 UNCH 0.1500 + 16 H3 9.0564 11.9235 -0.5566 H 1 UNCH 0.1500 + 17 H4 7.4334 10.4268 -1.6833 H 1 UNCH 0.1500 + 18 H5 7.1120 8.0936 -0.8782 H 1 UNCH 0.1500 + 19 H6 9.2935 9.5728 4.0861 H 1 UNCH 0.0000 + 20 H7 10.8824 10.1692 3.6031 H 1 UNCH 0.0000 + 21 H8 10.7549 8.6899 4.5596 H 1 UNCH 0.0000 + 22 H9 11.6092 7.4489 1.0728 H 1 UNCH 0.0000 + 23 H10 12.1839 8.9953 1.6959 H 1 UNCH 0.0000 + 24 H11 12.2142 7.5714 2.7341 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 4 1 + 3 1 11 1 + 4 3 4 1 + 5 3 14 1 + 6 4 5 1 + 7 5 6 1 + 8 5 12 1 + 9 5 13 1 + 10 6 7 2 + 11 6 11 1 + 12 7 8 1 + 13 7 15 1 + 14 8 9 2 + 15 8 16 1 + 16 9 10 1 + 17 9 17 1 + 18 10 11 2 + 19 10 18 1 + 20 12 19 1 + 21 12 20 1 + 22 12 21 1 + 23 13 22 1 + 24 13 23 1 + 25 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-HYDROXY-3,3-DIMETHYL-2,3-DIHYDRO-1,2-BENZOTHIAZOLE-1-OXID +@MOLECULE +FINBIN + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -3.1500 12.5977 4.0427 CL 1 UNCH -0.2900 + 2 CL2 -2.8978 10.6911 1.8517 CL 1 UNCH -0.2900 + 3 CL3 -5.3319 10.7965 3.4309 CL 1 UNCH -0.2900 + 4 CL4 1.3918 9.6150 2.3751 CL 1 UNCH -0.2900 + 5 CL5 1.8028 7.8032 4.6218 CL 1 UNCH -0.2900 + 6 CL6 0.8292 6.7908 2.0809 CL 1 UNCH -0.2900 + 7 CL7 -2.4731 10.6918 8.0103 CL 1 UNCH -0.2900 + 8 CL8 0.4325 10.4746 7.9110 CL 1 UNCH -0.2900 + 9 CL9 -1.1382 8.3624 9.1155 CL 1 UNCH -0.2900 + 10 P1 -2.7763 7.2510 4.9377 P 1 UNCH 0.3030 + 11 P2 -1.0477 9.9499 4.8182 P 1 UNCH -0.5007 + 12 O1 -3.4172 8.5333 4.1804 O.3 1 UNCH -0.3810 + 13 O2 -1.3294 7.1974 4.2082 O.3 1 UNCH -0.3810 + 14 O3 -2.3504 7.9457 6.3393 O.3 1 UNCH -0.3810 + 15 C1 -2.9749 9.8622 4.5306 C.3 1 UNCH 0.4469 + 16 C2 -0.7624 8.4066 3.6600 C.3 1 UNCH 0.4469 + 17 C3 -1.1872 8.7995 6.3871 C.3 1 UNCH 0.4469 + 18 C4 -3.5322 10.9184 3.5152 C.3 1 UNCH 0.8700 + 19 C5 0.7284 8.1771 3.2335 C.3 1 UNCH 0.8700 + 20 C6 -1.1081 9.5538 7.7589 C.3 1 UNCH 0.8700 + 21 H1 -3.4323 10.1072 5.4959 H 1 UNCH 0.0000 + 22 H2 -1.3068 8.6236 2.7339 H 1 UNCH 0.0000 + 23 H3 -0.3088 8.1448 6.3564 H 1 UNCH 0.0000 +@BOND + 1 1 18 1 + 2 2 18 1 + 3 3 18 1 + 4 4 19 1 + 5 5 19 1 + 6 6 19 1 + 7 7 20 1 + 8 8 20 1 + 9 9 20 1 + 10 10 12 1 + 11 10 13 1 + 12 10 14 1 + 13 11 15 1 + 14 11 16 1 + 15 11 17 1 + 16 12 15 1 + 17 13 16 1 + 18 14 17 1 + 19 15 18 1 + 20 15 21 1 + 21 16 19 1 + 22 16 22 1 + 23 17 20 1 + 24 17 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,6,7-TRIS(TRICHLOROMETHYL)-1,4-DIPHOSPHA-3,5,8-TRIOXABICYC +@MOLECULE +FINPEX + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.7189 3.6282 8.8078 O.3 1 CHGB -0.6500 + 2 O2 -1.0985 3.0196 6.7527 O.2 1 CHGB -0.5700 + 3 O3 -0.6845 -1.7611 8.8449 O.3 1 CHGB -0.6800 + 4 N1 -0.3226 0.4576 7.6174 N.3 1 CHGB -0.8220 + 5 C1 -1.2923 1.2171 8.4636 C.3 1 CHGB 0.5250 + 6 C2 -2.6359 0.4555 8.6172 C.3 1 CHGB 0.0000 + 7 C3 -2.1166 -0.1448 9.9480 C.3 1 CHGB 0.0000 + 8 C4 -1.0421 0.9727 9.9749 C.3 1 CHGB 0.0000 + 9 C5 -1.3645 2.6892 7.9045 C.2 1 CHGB 0.6670 + 10 C6 -1.6246 -1.5893 9.9137 C.3 1 CHGB 0.2800 + 11 H1 -3.5022 1.1154 8.7501 H 1 CHGB 0.0000 + 12 H2 -2.8797 -0.2645 7.8296 H 1 CHGB 0.0000 + 13 H3 -2.8447 -0.0404 10.7636 H 1 CHGB 0.0000 + 14 H4 -1.3172 1.8136 10.6223 H 1 CHGB 0.0000 + 15 H5 -0.0320 0.6549 10.2531 H 1 CHGB 0.0000 + 16 H6 -1.1297 -1.8495 10.8546 H 1 CHGB 0.0000 + 17 H7 -2.4612 -2.2758 9.7502 H 1 CHGB 0.0000 + 18 H8 -0.4294 -2.7099 8.8949 H 1 CHGB 0.4000 + 19 H9 0.6351 0.8144 7.7055 H 1 CHGB 0.4500 + 20 H10 -0.5745 0.5105 6.6211 H 1 CHGB 0.4500 + 21 H11 -0.3095 -0.5460 7.8966 H 1 CHGB 0.4500 + 22 H12 -1.7279 4.4895 8.3302 H 1 CHGB 0.5000 +@BOND + 1 1 9 1 + 2 1 22 1 + 3 2 9 2 + 4 3 10 1 + 5 3 18 1 + 6 4 5 1 + 7 4 19 1 + 8 4 20 1 + 9 4 21 1 + 10 5 6 1 + 11 5 8 1 + 12 5 9 1 + 13 6 7 1 + 14 6 11 1 + 15 6 12 1 + 16 7 8 1 + 17 7 10 1 + 18 7 13 1 + 19 8 14 1 + 20 8 15 1 + 21 10 16 1 + 22 10 17 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT CIS-1-AMMINO-3-HYDROXYMETHYL-CYCLOBUTANE-1-CARBOXYLIC ACID +@MOLECULE +FITGIY + 28 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.2205 -0.3064 2.2550 N.2 1 UNCH -0.6960 + 2 C1 -0.4425 -1.5924 2.2286 C.2 1 UNCH 0.3746 + 3 C2 -1.8496 -2.1119 2.1954 C.3 1 UNCH 0.0610 + 4 C3 0.7225 -2.4848 2.2525 C.2 1 UNCH 0.0288 + 5 C4 0.8190 -3.9444 2.2740 C.2 1 UNCH 0.7056 + 6 O1 1.8305 -4.5584 2.5857 O.2 1 UNCH -0.5700 + 7 O2 -0.3532 -4.5082 1.8967 O.3 1 UNCH -0.4300 + 8 C5 -0.3422 -5.9415 1.8765 C.3 1 UNCH 0.2800 + 9 C6 -1.7161 -6.4163 1.4458 C.3 1 UNCH 0.0000 + 10 C7 1.7519 -1.6301 2.2962 C.2 1 UNCH -0.0382 + 11 N2 3.1085 -1.8997 2.3883 N.3 1 UNCH -0.9000 + 12 C8 1.2448 -0.2016 2.2841 C.3 1 UNCH 0.6642 + 13 C9 1.7043 0.5825 1.0584 C.3 1 UNCH 0.0000 + 14 O3 1.7258 0.4462 3.4471 O.3 1 UNCH -0.6800 + 15 H1 -2.0096 -2.8191 3.0134 H 1 UNCH 0.0000 + 16 H2 -2.5577 -1.2860 2.3122 H 1 UNCH 0.0000 + 17 H3 -2.0413 -2.5987 1.2355 H 1 UNCH 0.0000 + 18 H4 -0.1154 -6.3239 2.8780 H 1 UNCH 0.0000 + 19 H5 0.4125 -6.2952 1.1652 H 1 UNCH 0.0000 + 20 H6 -1.9662 -6.0237 0.4546 H 1 UNCH 0.0000 + 21 H7 -2.4839 -6.0505 2.1356 H 1 UNCH 0.0000 + 22 H8 -1.7598 -7.5085 1.4148 H 1 UNCH 0.0000 + 23 H9 3.2992 -2.8503 2.7168 H 1 UNCH 0.4000 + 24 H10 3.5782 -1.1971 2.9643 H 1 UNCH 0.4000 + 25 H11 2.7944 0.6946 1.0429 H 1 UNCH 0.0000 + 26 H12 1.2861 1.5959 1.0736 H 1 UNCH 0.0000 + 27 H13 1.3896 0.1034 0.1247 H 1 UNCH 0.0000 + 28 H14 0.9608 0.9806 3.7210 H 1 UNCH 0.4000 +@BOND + 1 1 2 2 + 2 1 12 1 + 3 2 3 1 + 4 2 4 1 + 5 3 15 1 + 6 3 16 1 + 7 3 17 1 + 8 4 5 1 + 9 4 10 2 + 10 5 6 2 + 11 5 7 1 + 12 7 8 1 + 13 8 9 1 + 14 8 18 1 + 15 8 19 1 + 16 9 20 1 + 17 9 21 1 + 18 9 22 1 + 19 10 11 1 + 20 10 12 1 + 21 11 23 1 + 22 11 24 1 + 23 12 13 1 + 24 12 14 1 + 25 13 25 1 + 26 13 26 1 + 27 13 27 1 + 28 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ETHYL 3-AMINO-2-HYDROXY-2,5-DIMETHYL-2H-PYRROLE-4-CARBOXYLA +@MOLECULE +FITSEG + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.8489 2.2335 3.9648 C.3 1 UNCH 0.0050 + 2 C2 6.4483 2.2335 2.6641 C.1 1 UNCH 0.4521 + 3 N1 6.9010 2.2335 1.5979 N.1 1 UNCH -0.5571 + 4 C3 4.5532 1.4787 4.1603 C.3 1 UNCH 0.0050 + 5 C4 4.3830 0.7318 5.3721 C.1 1 UNCH 0.4521 + 6 N2 4.2609 0.1199 6.3478 N.1 1 UNCH -0.5571 + 7 H1 6.5597 2.2335 4.7871 H 1 UNCH 0.1000 + 8 H2 4.1132 1.0039 3.2874 H 1 UNCH 0.1000 + 9 C3B 4.5532 2.9883 4.1603 C.3 1 UNCH 0.0050 + 10 C4B 4.3830 3.7352 5.3721 C.1 1 UNCH 0.4521 + 11 H2B 4.1132 3.4631 3.2874 H 1 UNCH 0.1000 + 12 N2B 4.2609 4.3471 6.3478 N.1 1 UNCH -0.5571 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 7 1 + 4 1 9 1 + 5 2 3 3 + 6 4 5 1 + 7 4 8 1 + 8 4 9 1 + 9 5 6 3 + 10 9 10 1 + 11 9 11 1 + 12 10 12 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-CYCLOPROPANE-1,2,3-TRICARBONITRILE (FOR STEREOISOMER +@MOLECULE +FITTIL + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.4312 2.0183 0.0829 N.2 1 FITT -0.6200 + 2 C1 2.9252 1.1708 -0.8379 C.2 1 FITT 0.5210 + 3 N2 2.0390 0.2030 -0.6034 N.2 1 FITT -0.1560 + 4 C2 1.6236 0.0713 0.7013 C.2 1 FITT 0.5342 + 5 C3 2.1249 0.9215 1.6699 C.2 1 FITT -0.1516 + 6 C4 3.0400 1.9126 1.3669 C.2 1 FITT 0.4100 + 7 N3 1.5267 0.4962 2.8296 N.3 1 FITT 0.0332 + 8 C5 0.7023 -0.5515 2.5101 C.2 1 FITT 0.0365 + 9 N4 0.7402 -0.8283 1.2236 N.2 1 FITT -0.5653 + 10 N5 3.5773 2.7747 2.2889 N.3 1 FITT -0.9000 + 11 C6 1.5348 -0.6800 -1.6415 C.3 1 FITT 0.4880 + 12 H1 3.2817 1.3025 -1.8561 H 1 FITT 0.1500 + 13 H2 1.6775 0.8723 3.7578 H 1 FITT 0.2700 + 14 H3 4.1072 3.5381 1.8778 H 1 FITT 0.4000 + 15 H4 3.0703 3.0025 3.1318 H 1 FITT 0.4000 + 16 H5 0.1088 -1.0681 3.2568 H 1 FITT 0.1500 + 17 H6 1.9589 -0.3995 -2.6086 H 1 FITT 0.0000 + 18 H7 1.8280 -1.7019 -1.3880 H 1 FITT 0.0000 + 19 H8 0.4466 -0.5821 -1.6715 H 1 FITT 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 12 1 + 4 2 3 2 + 5 3 11 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 + 9 5 7 1 + 10 5 6 1 + 11 6 10 am + 12 7 13 1 + 13 7 8 am + 14 8 16 1 + 15 8 9 2 + 16 10 15 1 + 17 10 14 1 + 18 11 19 1 + 19 11 18 1 + 20 11 17 1 +@SUBSTRUCTURE + 1 FITT 1 +@COMMENT +COMMENT 3-METHYLADENINE HYDROCHLORIDE +@MOLECULE +FIVNUT + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.9348 3.6119 3.0533 S.2 1 UNCH -0.3800 + 2 O1 5.8247 0.7642 2.7663 O.2 1 UNCH -0.5700 + 3 N1 5.3405 2.8631 -0.6533 N.3 1 UNCH -0.5691 + 4 N2 2.9481 1.2269 3.4644 N.3 1 UNCH -0.8000 + 5 N3 4.1755 4.6790 6.1871 N.1 1 UNCH -0.5571 + 6 C1 5.2942 3.4949 0.5797 C.2 1 UNCH -0.0500 + 7 C2 5.4841 2.8920 1.7656 C.2 1 UNCH -0.1238 + 8 C3 5.7474 1.4182 1.7284 C.2 1 UNCH 0.5412 + 9 C4 5.8811 0.7578 0.3968 C.2 1 UNCH -0.1238 + 10 C5 5.6706 1.5179 -0.6874 C.2 1 UNCH -0.0500 + 11 C6 5.1715 3.6269 -1.8930 C.3 1 UNCH 0.3691 + 12 C7 5.4335 3.6304 3.0916 C.3 1 UNCH 0.1382 + 13 C8 4.4850 3.0168 4.1609 C.3 1 UNCH 0.2610 + 14 C9 6.8668 3.7739 3.6340 C.3 1 UNCH 0.0000 + 15 C10 3.1393 2.5786 3.5809 C.2 1 UNCH 0.3790 + 16 C11 4.2880 3.9481 5.2919 C.1 1 UNCH 0.3571 + 17 C12 6.2244 -0.6930 0.3667 C.3 1 UNCH 0.1382 + 18 H1 2.1082 0.8876 3.0084 H 1 UNCH 0.3700 + 19 H2 3.7266 0.5724 3.5380 H 1 UNCH 0.3700 + 20 H3 5.0890 4.5616 0.5213 H 1 UNCH 0.1500 + 21 H4 5.7464 1.0991 -1.6878 H 1 UNCH 0.1500 + 22 H5 4.4702 4.4573 -1.7537 H 1 UNCH 0.0000 + 23 H6 4.7732 2.9966 -2.6960 H 1 UNCH 0.0000 + 24 H7 6.1349 4.0349 -2.2162 H 1 UNCH 0.0000 + 25 H8 5.0829 4.6535 2.8870 H 1 UNCH 0.0000 + 26 H9 4.9660 2.1265 4.5877 H 1 UNCH 0.0000 + 27 H10 7.2827 2.8076 3.9396 H 1 UNCH 0.0000 + 28 H11 6.8970 4.4400 4.5025 H 1 UNCH 0.0000 + 29 H12 7.5333 4.2016 2.8761 H 1 UNCH 0.0000 + 30 H13 6.3013 -1.0703 -0.6585 H 1 UNCH 0.0000 + 31 H14 7.1861 -0.8698 0.8591 H 1 UNCH 0.0000 + 32 H15 5.4566 -1.2804 0.8806 H 1 UNCH 0.0000 +@BOND + 1 1 15 2 + 2 2 8 2 + 3 3 6 1 + 4 3 10 1 + 5 3 11 1 + 6 4 15 1 + 7 4 18 1 + 8 4 19 1 + 9 5 16 3 + 10 6 7 2 + 11 6 20 1 + 12 7 8 1 + 13 7 12 1 + 14 8 9 1 + 15 9 10 2 + 16 9 17 1 + 17 10 21 1 + 18 11 22 1 + 19 11 23 1 + 20 11 24 1 + 21 12 13 1 + 22 12 14 1 + 23 12 25 1 + 24 13 15 1 + 25 13 16 1 + 26 13 26 1 + 27 14 27 1 + 28 14 28 1 + 29 14 29 1 + 30 17 30 1 + 31 17 31 1 + 32 17 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-(1,5-DIMETHYL-4(1H)-PYRIDON-3-YL)-2-CYANO-N-BUTANETHIOAMI +@MOLECULE +FIVRAD + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.9773 11.4960 4.0923 S.3 1 FIVR 0.1807 + 2 O1 1.5545 7.6267 0.6164 O.2 1 FIVR -0.5700 + 3 N1 0.0331 10.4846 3.2732 N.2 1 FIVR -0.5095 + 4 N2 -0.0795 8.8138 1.5734 N.3 1 FIVR -0.4930 + 5 N3 2.0944 8.9525 2.3912 N.3 1 FIVR -0.7301 + 6 C1 -0.6688 9.7524 2.4082 C.2 1 FIVR 0.3518 + 7 C2 -2.0984 10.0146 2.3795 C.2 1 FIVR 0.0000 + 8 C3 -2.4218 11.0065 3.3091 C.2 1 FIVR 0.0400 + 9 C4 -3.7365 11.4635 3.5016 C.2 1 FIVR -0.1500 + 10 C5 -4.7546 10.8998 2.7301 C.2 1 FIVR -0.1500 + 11 C6 -4.4710 9.9112 1.7965 C.2 1 FIVR -0.1500 + 12 C7 -3.1577 9.4629 1.6130 C.2 1 FIVR -0.1500 + 13 C8 1.2241 8.4325 1.4848 C.2 1 FIVR 0.6900 + 14 C9 3.5213 8.7520 2.2821 C.3 1 FIVR 0.3001 + 15 C10 4.2293 9.1099 3.5841 C.3 1 FIVR 0.0000 + 16 C11 5.7387 8.9042 3.4717 C.3 1 FIVR 0.0000 + 17 C12 6.4477 9.2610 4.7684 C.3 1 FIVR 0.0000 + 18 H1 -0.6741 8.3466 0.9068 H 1 FIVR 0.3700 + 19 H2 1.7537 9.7762 2.8806 H 1 FIVR 0.3700 + 20 H3 -3.9585 12.2361 4.2320 H 1 FIVR 0.1500 + 21 H4 -5.7799 11.2391 2.8633 H 1 FIVR 0.1500 + 22 H5 -5.2750 9.4804 1.2032 H 1 FIVR 0.1500 + 23 H6 -2.9632 8.6867 0.8776 H 1 FIVR 0.1500 + 24 H7 3.8786 9.3818 1.4596 H 1 FIVR 0.0000 + 25 H8 3.7137 7.7077 2.0109 H 1 FIVR 0.0000 + 26 H9 4.0155 10.1542 3.8449 H 1 FIVR 0.0000 + 27 H10 3.8296 8.4951 4.4003 H 1 FIVR 0.0000 + 28 H11 5.9545 7.8594 3.2197 H 1 FIVR 0.0000 + 29 H12 6.1395 9.5232 2.6606 H 1 FIVR 0.0000 + 30 H13 6.2785 10.3098 5.0324 H 1 FIVR 0.0000 + 31 H14 6.0922 8.6368 5.5945 H 1 FIVR 0.0000 + 32 H15 7.5263 9.1063 4.6656 H 1 FIVR 0.0000 +@BOND + 1 1 8 1 + 2 1 3 1 + 3 2 13 2 + 4 3 6 2 + 5 4 18 1 + 6 4 13 am + 7 4 6 am + 8 5 19 1 + 9 5 14 1 + 10 5 13 am + 11 6 7 1 + 12 7 12 1 + 13 7 8 2 + 14 8 9 1 + 15 9 20 1 + 16 9 10 2 + 17 10 21 1 + 18 10 11 1 + 19 11 22 1 + 20 11 12 2 + 21 12 23 1 + 22 14 25 1 + 23 14 24 1 + 24 14 15 1 + 25 15 27 1 + 26 15 26 1 + 27 15 16 1 + 28 16 29 1 + 29 16 28 1 + 30 16 17 1 + 31 17 32 1 + 32 17 31 1 + 33 17 30 1 +@SUBSTRUCTURE + 1 FIVR 1 +@COMMENT +COMMENT 1-N-BUTYL-3-(1,2-BENZISOTHIAZOL-3-YL)UREA (PHYTOCIDAL AGENT +@MOLECULE +FIXPIL + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.0484 1.2049 0.5083 C.2 1 FIXP 0.3870 + 2 C2 4.1838 0.5252 1.3661 C.2 1 FIXP -0.1500 + 3 C3 2.8455 0.9198 1.4489 C.2 1 FIXP -0.1500 + 4 C4 2.3697 1.9923 0.6828 C.2 1 FIXP -0.1435 + 5 C5 3.2566 2.6904 -0.1465 C.2 1 FIXP -0.1500 + 6 C6 4.5953 2.3018 -0.2341 C.2 1 FIXP -0.1500 + 7 C7 7.0882 -0.3713 0.5402 C.2 1 FIXP 0.2470 + 8 C8 8.4484 -0.0730 0.6217 C.2 1 FIXP -0.0840 + 9 C9 6.4473 -1.6665 0.4683 C.2 1 FIXP 0.5950 + 10 C10 0.9374 2.4294 0.7994 C.3 1 FIXP 0.1435 + 11 C11 7.2284 -2.9105 0.8128 C.3 1 FIXP 0.0610 + 12 N1 6.4530 0.8431 0.4441 N.2 1 FIXP 0.2410 + 13 N2 7.2594 1.8754 0.3902 N.2 1 FIXP -0.0819 + 14 O1 8.5277 1.3168 0.5190 O.3 1 FIXP -0.0191 + 15 O2 9.4818 -0.6964 0.7284 O.3 1 FIXP -0.7760 + 16 O3 5.2722 -1.7708 0.1081 O.2 1 FIXP -0.5700 + 17 H1 4.5225 -0.2918 1.9951 H 1 FIXP 0.1500 + 18 H2 2.1731 0.3854 2.1190 H 1 FIXP 0.1500 + 19 H3 2.9068 3.5405 -0.7307 H 1 FIXP 0.1500 + 20 H4 5.2607 2.8522 -0.8943 H 1 FIXP 0.1500 + 21 H5 0.2863 1.5771 1.0204 H 1 FIXP 0.0000 + 22 H6 0.8366 3.1696 1.5991 H 1 FIXP 0.0000 + 23 H7 0.5866 2.8712 -0.1392 H 1 FIXP 0.0000 + 24 H8 7.6988 -2.8065 1.7941 H 1 FIXP 0.0000 + 25 H9 7.9762 -3.1123 0.0418 H 1 FIXP 0.0000 + 26 H10 6.5448 -3.7641 0.8599 H 1 FIXP 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 12 1 + 4 2 3 1 + 5 2 17 1 + 6 3 4 2 + 7 3 18 1 + 8 4 5 1 + 9 4 10 1 + 10 5 6 2 + 11 5 19 1 + 12 6 20 1 + 13 7 8 2 + 14 7 9 1 + 15 7 12 1 + 16 8 14 1 + 17 8 15 1 + 18 9 11 1 + 19 9 16 2 + 20 10 21 1 + 21 10 22 1 + 22 10 23 1 + 23 11 24 1 + 24 11 25 1 + 25 11 26 1 + 26 12 13 2 + 27 13 14 1 +@SUBSTRUCTURE + 1 FIXP 1 +@COMMENT +COMMENT 4-ACETYL-3-(P-TOLYL)SYDNONE +@MOLECULE +FIYBIY + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8736 2.9588 0.7491 S.3 1 FIYB 1.1433 + 2 O1 1.0726 1.6584 0.1414 O.3 1 FIYB -0.6500 + 3 O2 -0.7561 4.8572 -1.7033 O.2 1 FIYB -0.5700 + 4 O3 1.1857 5.4699 -0.7407 O.3 1 FIYB -0.4300 + 5 N1 -0.2174 3.9606 0.3549 N.3 1 FIYB -1.0195 + 6 C1 0.7468 2.6933 2.5083 C.2 1 FIYB -0.0090 + 7 C2 1.3313 1.5509 3.0644 C.2 1 FIYB -0.1500 + 8 C3 1.2508 1.3370 4.4405 C.2 1 FIYB -0.1500 + 9 C4 0.5843 2.2556 5.2525 C.2 1 FIYB -0.1500 + 10 C5 -0.0103 3.3870 4.6917 C.2 1 FIYB -0.1500 + 11 C6 0.0657 3.6088 3.3163 C.2 1 FIYB -0.1500 + 12 C7 0.0130 4.7593 -0.7599 C.2 1 FIYB 1.1500 + 13 C8 2.0522 5.3191 0.4038 C.3 1 FIYB 0.2800 + 14 C9 2.4062 3.8531 0.5903 C.3 1 FIYB 0.1052 + 15 C10 3.3019 6.1488 0.1415 C.3 1 FIYB 0.0000 + 16 H1 1.8393 0.8207 2.4380 H 1 FIYB 0.1500 + 17 H2 1.6983 0.4486 4.8799 H 1 FIYB 0.1500 + 18 H3 0.5158 2.0821 6.3240 H 1 FIYB 0.1500 + 19 H4 -0.5441 4.0902 5.3268 H 1 FIYB 0.1500 + 20 H5 -0.4200 4.4839 2.8918 H 1 FIYB 0.1500 + 21 H6 1.5431 5.7311 1.2846 H 1 FIYB 0.0000 + 22 H7 3.0364 3.6755 1.4650 H 1 FIYB 0.0000 + 23 H8 2.9060 3.4534 -0.2991 H 1 FIYB 0.0000 + 24 H9 3.0353 7.1997 -0.0149 H 1 FIYB 0.0000 + 25 H10 4.0028 6.0874 0.9795 H 1 FIYB 0.0000 + 26 H11 3.8115 5.8159 -0.7695 H 1 FIYB 0.0000 +@BOND + 1 1 14 1 + 2 1 6 1 + 3 1 5 1 + 4 1 2 1 + 5 3 12 2 + 6 4 13 1 + 7 4 12 1 + 8 5 12 am + 9 6 11 1 + 10 6 7 2 + 11 7 16 1 + 12 7 8 1 + 13 8 17 1 + 14 8 9 2 + 15 9 18 1 + 16 9 10 1 + 17 10 19 1 + 18 10 11 2 + 19 11 20 1 + 20 13 21 1 + 21 13 15 1 + 22 13 14 1 + 23 14 23 1 + 24 14 22 1 + 25 15 26 1 + 26 15 25 1 + 27 15 24 1 +@SUBSTRUCTURE + 1 FIYB 1 +@COMMENT +COMMENT 6-METHYL-4-PHENYL-1,4,3-OXATHIAZIN-2(6H)-ONE 4-OXIDE +@MOLECULE +FIZGEA + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.6764 3.1648 2.9826 S.2 1 FIZG 0.0230 + 2 C1 7.3223 4.1506 1.6439 C.2 1 FIZG 0.1960 + 3 C2 7.4907 5.4294 1.9996 C.2 1 FIZG 0.1400 + 4 C3 7.0761 5.7031 3.3645 C.2 1 FIZG 0.1400 + 5 C4 6.5993 4.6253 3.9992 C.2 1 FIZG 0.1960 + 6 CL1 7.6386 3.3930 0.1607 CL 1 FIZG -0.1400 + 7 CL2 8.1107 6.6418 0.9609 CL 1 FIZG -0.1400 + 8 CL3 7.2023 7.2576 4.0725 CL 1 FIZG -0.1400 + 9 CL4 6.0646 4.4738 5.6008 CL 1 FIZG -0.1400 + 10 N1 5.2479 2.5412 2.6065 N.2 1 FIZG -0.2730 + 11 S2 3.9393 3.6182 2.3635 S.3 1 FIZG 1.4470 + 12 O1 3.3694 3.9729 3.6477 O.3 1 FIZG -0.6500 + 13 O2 4.3233 4.6485 1.4170 O.3 1 FIZG -0.6500 + 14 C5 2.7931 2.5380 1.5418 C.2 1 FIZG -0.0090 + 15 C6 1.8236 1.8608 2.2854 C.2 1 FIZG -0.1500 + 16 C7 0.9145 1.0283 1.6306 C.2 1 FIZG -0.1500 + 17 C8 0.9710 0.8685 0.2390 C.2 1 FIZG -0.1435 + 18 C9 1.9321 1.5763 -0.4960 C.2 1 FIZG -0.1500 + 19 C10 2.8447 2.4108 0.1511 C.2 1 FIZG -0.1500 + 20 C11 -0.0314 0.0003 -0.4644 C.3 1 FIZG 0.1435 + 21 H1 1.7638 1.9763 3.3655 H 1 FIZG 0.1500 + 22 H2 0.1569 0.5061 2.2120 H 1 FIZG 0.1500 + 23 H3 1.9712 1.4833 -1.5797 H 1 FIZG 0.1500 + 24 H4 3.5818 2.9562 -0.4343 H 1 FIZG 0.1500 + 25 H5 0.3975 -0.4327 -1.3742 H 1 FIZG 0.0000 + 26 H6 -0.9129 0.5901 -0.7340 H 1 FIZG 0.0000 + 27 H7 -0.3437 -0.8321 0.1750 H 1 FIZG 0.0000 +@BOND + 1 1 10 2 + 2 1 5 1 + 3 1 2 1 + 4 2 6 1 + 5 2 3 2 + 6 3 7 1 + 7 3 4 1 + 8 4 8 1 + 9 4 5 2 + 10 5 9 1 + 11 10 11 1 + 12 11 14 1 + 13 11 13 1 + 14 11 12 1 + 15 14 19 1 + 16 14 15 2 + 17 15 21 1 + 18 15 16 1 + 19 16 22 1 + 20 16 17 2 + 21 17 20 1 + 22 17 18 1 + 23 18 23 1 + 24 18 19 2 + 25 19 24 1 + 26 20 27 1 + 27 20 26 1 + 28 20 25 1 +@SUBSTRUCTURE + 1 FIZG 1 +@COMMENT +COMMENT TETRACHLOROTHIOPHENE-N-P-TOSYLIMIDE +@MOLECULE +FIZGOK + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.7957 1.3128 7.9486 S.3 1 FIZG 1.2735 + 2 C1 1.4860 0.8966 6.2778 C.2 1 FIZG 0.1230 + 3 C2 0.2127 1.1307 5.9565 C.2 1 FIZG 0.1400 + 4 C3 -0.5629 1.6810 7.0492 C.2 1 FIZG 0.1400 + 5 C4 0.1447 1.8482 8.1676 C.2 1 FIZG 0.1230 + 6 CL1 2.7726 0.2964 5.3600 CL 1 FIZG -0.1400 + 7 CL2 -0.4489 0.8414 4.4044 CL 1 FIZG -0.1400 + 8 CL3 -2.2166 2.0955 6.8949 CL 1 FIZG -0.1400 + 9 CL4 -0.2919 2.4706 9.6776 CL 1 FIZG -0.1400 + 10 N1 2.8683 2.4065 8.1591 N.3 1 FIZG -1.0195 + 11 C5 2.8022 3.6208 7.5007 C.2 1 FIZG 1.1500 + 12 O1 1.9115 3.9210 6.7174 O.2 1 FIZG -0.5700 + 13 O2 3.8375 4.4328 7.8267 O.3 1 FIZG -0.4300 + 14 C6 3.8245 5.7059 7.1764 C.3 1 FIZG 0.2800 + 15 C7 5.0365 6.4891 7.6422 C.3 1 FIZG 0.0000 + 16 O3 1.8915 0.0432 8.6558 O.3 1 FIZG -0.6500 + 17 H1 3.8696 5.5681 6.0902 H 1 FIZG 0.0000 + 18 H2 2.9103 6.2487 7.4418 H 1 FIZG 0.0000 + 19 H3 5.0696 7.4746 7.1694 H 1 FIZG 0.0000 + 20 H4 5.9591 5.9504 7.4022 H 1 FIZG 0.0000 + 21 H5 5.0171 6.6187 8.7294 H 1 FIZG 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 10 1 + 4 1 16 1 + 5 2 3 2 + 6 2 6 1 + 7 3 4 1 + 8 3 7 1 + 9 4 5 2 + 10 4 8 1 + 11 5 9 1 + 12 10 11 am + 13 11 12 2 + 14 11 13 1 + 15 13 14 1 + 16 14 15 1 + 17 14 17 1 + 18 14 18 1 + 19 15 19 1 + 20 15 20 1 + 21 15 21 1 +@SUBSTRUCTURE + 1 FIZG 1 +@COMMENT +COMMENT TETRACHLOROTHIOPHENE-N-ETHOXYCARBONYLIMIDE-S-OXIDE +@MOLECULE +FIZJED + 16 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.3770 -1.2805 0.2870 N.2 1 FIZJ -0.3100 + 2 N2 0.8471 -0.8307 0.6782 N.2 1 FIZJ -0.3100 + 3 C1 -1.1896 -0.4364 -0.3804 C.2 1 FIZJ 0.7025 + 4 O1 -2.4403 -0.8366 -0.8013 O.3 1 FIZJ -0.3625 + 5 C2 -2.7343 -2.1833 -0.4533 C.3 1 FIZJ 0.2800 + 6 H1 -2.0368 -2.8794 -0.9322 H 1 FIZJ 0.0000 + 7 H2 -2.7425 -2.3207 0.6337 H 1 FIZJ 0.0000 + 8 H3 -3.7382 -2.4124 -0.8240 H 1 FIZJ 0.0000 + 9 C1D 1.1896 0.4364 0.3804 C.2 1 FIZJ 0.7025 + 10 N2D -0.8471 0.8307 -0.6782 N.2 1 FIZJ -0.3100 + 11 N1D 0.3770 1.2805 -0.2870 N.2 1 FIZJ -0.3100 + 12 O1D 2.4403 0.8366 0.8013 O.3 1 FIZJ -0.3625 + 13 C2D 2.7343 2.1833 0.4533 C.3 1 FIZJ 0.2800 + 14 H1D 2.0368 2.8794 0.9322 H 1 FIZJ 0.0000 + 15 H2D 2.7425 2.3207 -0.6337 H 1 FIZJ 0.0000 + 16 H3D 3.7382 2.4124 0.8240 H 1 FIZJ 0.0000 +@BOND + 1 1 3 2 + 2 1 2 1 + 3 2 9 2 + 4 3 10 am + 5 3 4 1 + 6 4 5 1 + 7 5 8 1 + 8 5 7 1 + 9 5 6 1 + 10 9 12 1 + 11 9 11 am + 12 10 11 2 + 13 12 13 1 + 14 13 16 1 + 15 13 15 1 + 16 13 14 1 +@SUBSTRUCTURE + 1 FIZJ 1 +@COMMENT +COMMENT 3,6-DIMETHOXY-1,2,4,5-TETRAZINE +@MOLECULE +FOBJUB01 + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.9696 6.2231 4.4243 O.2 1 UNCH -0.9000 + 2 O2 4.7595 4.2100 5.1458 O.3 1 UNCH -0.9000 + 3 N1 4.5917 7.6307 6.3867 N.3 1 UNCH -0.7460 + 4 C1 4.5409 5.4448 5.2618 C.2 1 UNCH 0.9470 + 5 C2 4.9577 6.1902 6.4845 C.3 1 UNCH 0.2490 + 6 C3 4.8973 5.5557 7.8468 C.3 1 UNCH -0.2000 + 7 C4 6.2292 5.8511 7.2127 C.3 1 UNCH -0.2000 + 8 H1 5.4047 8.2412 6.3376 H 1 UNCH 0.4500 + 9 H2 4.1344 7.6472 5.4338 H 1 UNCH 0.4500 + 10 H3 3.8814 7.9034 7.0628 H 1 UNCH 0.4500 + 11 H4 4.6002 6.1452 8.7037 H 1 UNCH 0.1000 + 12 H5 4.5920 4.5138 7.9023 H 1 UNCH 0.1000 + 13 H6 6.8324 6.6402 7.6411 H 1 UNCH 0.1000 + 14 H7 6.8061 5.0048 6.8482 H 1 UNCH 0.1000 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 5 1 + 4 3 8 1 + 5 3 9 1 + 6 3 10 1 + 7 4 5 1 + 8 5 6 1 + 9 5 7 1 + 10 6 7 1 + 11 6 11 1 + 12 6 12 1 + 13 7 13 1 + 14 7 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-AMINOCYCLOPROPANECARBOXYLIC ACID HEMIHYDRATE +@MOLECULE +FODTUN + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.1444 4.4102 8.8417 C.3 1 UNCH 0.0610 + 2 C2 2.0718 4.6517 7.6772 C.2 1 UNCH 0.5690 + 3 O1 2.6808 3.7203 7.1557 O.2 1 UNCH -0.5700 + 4 N1 2.1608 5.9542 7.2421 N.3 1 UNCH -0.5851 + 5 C3 2.9615 6.4663 6.0685 C.3 1 UNCH 0.2780 + 6 C4 1.8598 6.8515 5.0073 C.3 1 UNCH 0.0000 + 7 C5 2.9777 8.0429 6.3096 C.3 1 UNCH 0.0000 + 8 C6 1.4432 7.8121 6.1809 C.3 1 UNCH 0.0000 + 9 C7 1.0668 6.9234 7.3709 C.3 1 UNCH 0.3001 + 10 C8 4.3139 5.8372 5.6091 C.2 1 UNCH 0.5770 + 11 O2 5.3725 6.4715 5.5414 O.2 1 UNCH -0.5700 + 12 N2 4.2533 4.5096 5.2312 N.3 1 UNCH -0.7301 + 13 C9 5.4578 3.7796 4.9318 C.3 1 UNCH 0.3001 + 14 H1 1.4626 3.5081 9.3729 H 1 UNCH 0.0000 + 15 H2 0.1241 4.2701 8.4760 H 1 UNCH 0.0000 + 16 H3 1.1779 5.2426 9.5496 H 1 UNCH 0.0000 + 17 H4 1.1384 6.0702 4.7489 H 1 UNCH 0.0000 + 18 H5 2.2123 7.3291 4.0860 H 1 UNCH 0.0000 + 19 H6 3.4444 8.6544 5.5285 H 1 UNCH 0.0000 + 20 H7 3.3373 8.3829 7.2859 H 1 UNCH 0.0000 + 21 H8 0.8110 8.6684 5.9490 H 1 UNCH 0.0000 + 22 H9 0.0944 6.4397 7.2445 H 1 UNCH 0.0000 + 23 H10 1.1358 7.4394 8.3323 H 1 UNCH 0.0000 + 24 H11 3.4989 3.9810 5.6725 H 1 UNCH 0.3700 + 25 H12 5.1813 2.8112 4.5089 H 1 UNCH 0.0000 + 26 H13 6.0235 3.6342 5.8561 H 1 UNCH 0.0000 + 27 H14 6.0669 4.3390 4.2166 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 1 15 1 + 4 1 16 1 + 5 2 3 2 + 6 2 4 am + 7 4 5 1 + 8 4 9 1 + 9 5 6 1 + 10 5 7 1 + 11 5 10 1 + 12 6 8 1 + 13 6 17 1 + 14 6 18 1 + 15 7 8 1 + 16 7 19 1 + 17 7 20 1 + 18 8 9 1 + 19 8 21 1 + 20 9 22 1 + 21 9 23 1 + 22 10 11 2 + 23 10 12 am + 24 12 13 1 + 25 12 24 1 + 26 13 25 1 + 27 13 26 1 + 28 13 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-ACETYL-2,4-METHANOPROLINE-N'-METHYLAMIDE PEPSEQ A=1 PRO* +@MOLECULE +FOGBIM + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 7.6466 1.6567 -1.6392 SI 1 FOGB 0.5389 + 2 O1 8.9802 0.9814 -2.4318 O.3 1 FOGB -0.4474 + 3 N1 8.9440 -0.4473 -0.6875 N.2 1 FOGB -0.0922 + 4 C1 7.9608 3.3707 -1.0269 C.3 1 FOGB -0.0805 + 5 C2 6.0760 1.4897 -2.5968 C.3 1 FOGB -0.0805 + 6 C3 7.7603 0.3764 -0.2427 C.3 1 FOGB 0.2656 + 7 C4 9.3583 -1.6184 0.1274 C.3 1 FOGB 0.3461 + 8 C5 10.7698 -2.0587 -0.2379 C.3 1 FOGB 0.0000 + 9 C6 10.9403 -2.1344 -1.7513 C.3 1 FOGB 0.0000 + 10 C7 10.6978 -0.7628 -2.3693 C.3 1 FOGB 0.0610 + 11 C8 9.5019 -0.0925 -1.7969 C.2 1 FOGB 0.4890 + 12 H11 8.0478 4.0770 -1.8582 H 1 FOGB 0.0000 + 13 H12 7.1475 3.7150 -0.3808 H 1 FOGB 0.0000 + 14 H13 8.8889 3.4210 -0.4492 H 1 FOGB 0.0000 + 15 H21 5.9188 0.4569 -2.9230 H 1 FOGB 0.0000 + 16 H22 6.0891 2.1221 -3.4898 H 1 FOGB 0.0000 + 17 H23 5.2118 1.7832 -1.9931 H 1 FOGB 0.0000 + 18 H31 8.0025 0.8167 0.7277 H 1 FOGB 0.0000 + 19 H32 6.8916 -0.2843 -0.1882 H 1 FOGB 0.0000 + 20 H41 9.3029 -1.3346 1.1832 H 1 FOGB 0.0000 + 21 H42 8.6307 -2.4130 -0.0680 H 1 FOGB 0.0000 + 22 H51 10.9790 -3.0344 0.2146 H 1 FOGB 0.0000 + 23 H52 11.5005 -1.3517 0.1760 H 1 FOGB 0.0000 + 24 H61 10.2303 -2.8612 -2.1653 H 1 FOGB 0.0000 + 25 H62 11.9470 -2.4844 -2.0041 H 1 FOGB 0.0000 + 26 H71 10.5759 -0.8572 -3.4535 H 1 FOGB 0.0000 + 27 H72 11.5616 -0.1126 -2.1862 H 1 FOGB 0.0000 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 4 1 + 4 1 2 1 + 5 2 11 1 + 6 3 11 2 + 7 3 7 1 + 8 3 6 1 + 9 4 14 1 + 10 4 13 1 + 11 4 12 1 + 12 5 17 1 + 13 5 16 1 + 14 5 15 1 + 15 6 19 1 + 16 6 18 1 + 17 7 21 1 + 18 7 20 1 + 19 7 8 1 + 20 8 23 1 + 21 8 22 1 + 22 8 9 1 + 23 9 25 1 + 24 9 24 1 + 25 9 10 1 + 26 10 27 1 + 27 10 26 1 + 28 10 11 1 +@SUBSTRUCTURE + 1 FOGB 1 +@COMMENT +COMMENT (1-(DIMETHYLSILYL)METHYL)-2-PIPERIDONE IODIDE (AT -120 DEG. +@MOLECULE +FOGVIG01 + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.4088 1.4158 -1.6006 N.3 1 UNCH -0.8500 + 2 N2 5.3358 0.2230 0.2586 N.3 1 UNCH -0.8500 + 3 C1 5.1522 1.4594 -0.2697 C.2 1 UNCH 0.5500 + 4 N3 4.8118 2.5686 0.2914 N.2 1 UNCH -0.5760 + 5 C2 4.5433 2.5687 1.6227 C.2 1 UNCH 0.5041 + 6 N4 4.4627 1.5370 2.4447 N.2 1 UNCH -0.5653 + 7 C3 4.1376 1.9412 3.7333 C.2 1 UNCH 0.0462 + 8 C4 3.9908 3.3063 3.8806 C.2 1 UNCH -0.1100 + 9 S1 4.2375 4.0926 2.3829 S.3 1 UNCH -0.0800 + 10 C5 4.0025 0.9154 4.8121 C.3 1 UNCH 0.4110 + 11 S2 2.7100 -0.3314 4.4654 S.3 1 UNCH -0.4600 + 12 C6 1.2137 0.7208 4.4801 C.3 1 UNCH 0.2300 + 13 C7 0.4452 0.6235 5.7940 C.3 1 UNCH 0.0610 + 14 C8 1.2030 1.2418 6.9638 C.2 1 UNCH 0.4390 + 15 N5 1.3938 2.5150 6.8974 N.2 1 UNCH -0.6380 + 16 S3 2.1935 3.3561 8.0035 S.3 1 UNCH 1.6260 + 17 O1 2.8611 4.4543 7.3418 O.3 1 UNCH -0.6500 + 18 O2 2.9445 2.4851 8.8839 O.3 1 UNCH -0.6500 + 19 N6 1.0618 4.0979 8.9852 N.3 1 UNCH -0.9780 + 20 N7 1.5992 0.3706 7.9456 N.3 1 UNCH -0.8500 + 21 H1 5.4839 2.3535 -1.9817 H 1 UNCH 0.4000 + 22 H2 6.2375 0.8709 -1.8070 H 1 UNCH 0.4000 + 23 H3 5.0030 0.1910 1.2268 H 1 UNCH 0.4000 + 24 H4 4.8749 -0.4962 -0.2854 H 1 UNCH 0.4000 + 25 H5 3.7503 3.8684 4.7726 H 1 UNCH 0.1500 + 26 H6 3.8081 1.3811 5.7821 H 1 UNCH 0.0000 + 27 H7 4.9538 0.3800 4.9047 H 1 UNCH 0.0000 + 28 H8 0.5685 0.3549 3.6740 H 1 UNCH 0.0000 + 29 H9 1.4584 1.7584 4.2391 H 1 UNCH 0.0000 + 30 H10 -0.5003 1.1715 5.6937 H 1 UNCH 0.0000 + 31 H11 0.1829 -0.4172 6.0180 H 1 UNCH 0.0000 + 32 H12 1.3830 4.0566 9.9515 H 1 UNCH 0.4200 + 33 H13 0.9330 5.0562 8.6607 H 1 UNCH 0.4200 + 34 H14 2.3122 0.7188 8.5916 H 1 UNCH 0.4000 + 35 H15 1.7477 -0.5987 7.6801 H 1 UNCH 0.4000 +@BOND + 1 1 3 am + 2 1 21 1 + 3 1 22 1 + 4 2 3 am + 5 2 23 1 + 6 2 24 1 + 7 3 4 2 + 8 4 5 am + 9 5 6 2 + 10 5 9 1 + 11 6 7 1 + 12 7 8 2 + 13 7 10 1 + 14 8 9 1 + 15 8 25 1 + 16 10 11 1 + 17 10 26 1 + 18 10 27 1 + 19 11 12 1 + 20 12 13 1 + 21 12 28 1 + 22 12 29 1 + 23 13 14 1 + 24 13 30 1 + 25 13 31 1 + 26 14 15 2 + 27 14 20 am + 28 15 16 1 + 29 16 17 1 + 30 16 18 1 + 31 16 19 1 + 32 19 32 1 + 33 19 33 1 + 34 20 34 1 + 35 20 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-((2-(DIAMINOMETHYLENEAMINO)-1,3-THIAZOL-4-YL)METHYLTHIO)- +@MOLECULE +FOHXEF + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.1665 4.8608 4.2586 S.2 1 FOHP -0.3800 + 2 S2 5.1410 3.8307 5.5829 S.3 1 FOHP -0.3710 + 3 N8 2.1531 0.4921 3.2606 N.3 1 FOHP -0.8191 + 4 C81 2.4608 1.6904 3.8345 C.2 1 FOHP 0.5600 + 5 N1 3.5745 2.0271 4.3621 N.2 1 FOHP -0.6610 + 6 C2 3.6303 3.2931 4.8686 C.2 1 FOHP 0.8020 + 7 N3 2.6603 4.1417 4.8562 N.2 1 FOHP -0.6610 + 8 C4 1.4628 3.7824 4.3046 C.2 1 FOHP 0.6510 + 9 N5 1.3752 2.5147 3.8060 N.3 1 FOHP -0.4201 + 10 C6 0.2558 1.8375 3.1645 C.3 1 FOHP 0.3001 + 11 C7 0.7171 0.3754 3.0745 C.3 1 FOHP 0.3691 + 12 C9 5.6735 2.3144 6.4260 C.3 1 FOHP 0.2300 + 13 C10 4.7814 1.9881 7.6222 C.3 1 FOHP 0.0000 + 14 C11 5.2708 0.7413 8.3447 C.3 1 FOHP 0.0000 + 15 H8 2.6986 -0.3120 3.5461 H 1 FOHP 0.4000 + 16 H61 -0.6665 1.9488 3.7419 H 1 FOHP 0.0000 + 17 H62 0.1151 2.2750 2.1699 H 1 FOHP 0.0000 + 18 H71 0.4596 -0.0835 2.1163 H 1 FOHP 0.0000 + 19 H72 0.2852 -0.2173 3.8878 H 1 FOHP 0.0000 + 20 H91 6.6995 2.4820 6.7718 H 1 FOHP 0.0000 + 21 H92 5.7120 1.4789 5.7196 H 1 FOHP 0.0000 + 22 H101 4.7744 2.8253 8.3307 H 1 FOHP 0.0000 + 23 H102 3.7464 1.8207 7.3029 H 1 FOHP 0.0000 + 24 H111 4.6245 0.5209 9.2001 H 1 FOHP 0.0000 + 25 H112 6.2913 0.8780 8.7165 H 1 FOHP 0.0000 + 26 H113 5.2604 -0.1272 7.6783 H 1 FOHP 0.0000 +@BOND + 1 1 8 2 + 2 2 6 1 + 3 2 12 1 + 4 3 4 am + 5 3 11 1 + 6 3 15 1 + 7 4 5 2 + 8 4 9 am + 9 5 6 am + 10 6 7 2 + 11 7 8 1 + 12 8 9 1 + 13 9 10 1 + 14 10 11 1 + 15 10 16 1 + 16 10 17 1 + 17 11 18 1 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 12 21 1 + 22 13 14 1 + 23 13 22 1 + 24 13 23 1 + 25 14 24 1 + 26 14 25 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 FOHP 1 +@COMMENT +COMMENT 2-N-PROPYLTHIO-7,8-DIHYDROIMIDAZO(1,2-A)-1,3,5-TRIAZINE-4(6 +@MOLECULE +FOHYAC + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.9746 1.5246 0.6052 S.3 1 UNCH 1.4950 + 2 CL1 7.8132 1.4834 1.4954 CL 1 UNCH -0.1860 + 3 O1 5.0085 1.4262 1.6794 O.3 1 UNCH -0.6500 + 4 O2 6.0047 2.6363 -0.3223 O.3 1 UNCH -0.6500 + 5 C1 5.9883 0.0075 -0.3051 C.2 1 UNCH -0.0090 + 6 C2 5.5008 -1.1594 0.2892 C.2 1 UNCH -0.1500 + 7 C3 5.4972 -2.3506 -0.4382 C.2 1 UNCH -0.1500 + 8 C4 5.9591 -2.3771 -1.7613 C.2 1 UNCH -0.1435 + 9 C5 6.4455 -1.1987 -2.3437 C.2 1 UNCH -0.1500 + 10 C6 6.4525 -0.0033 -1.6230 C.2 1 UNCH -0.1500 + 11 C7 5.9826 -3.6668 -2.5293 C.3 1 UNCH 0.1435 + 12 H2 5.1250 -1.1541 1.3105 H 1 UNCH 0.1500 + 13 H3 5.1261 -3.2601 0.0310 H 1 UNCH 0.1500 + 14 H5 6.8172 -1.2059 -3.3668 H 1 UNCH 0.1500 + 15 H6 6.8203 0.9052 -2.0959 H 1 UNCH 0.1500 + 16 H7 5.1658 -4.3243 -2.2136 H 1 UNCH 0.0000 + 17 H8 5.8566 -3.4851 -3.6018 H 1 UNCH 0.0000 + 18 H9 6.9346 -4.1813 -2.3665 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 5 6 2 + 6 5 10 1 + 7 6 7 1 + 8 6 12 1 + 9 7 8 2 + 10 7 13 1 + 11 8 9 1 + 12 8 11 1 + 13 9 10 2 + 14 9 14 1 + 15 10 15 1 + 16 11 16 1 + 17 11 17 1 + 18 11 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-METHYL-BENZENESULFONYL CHLORIDE +@MOLECULE +FOJBEL + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S3 0.8225 3.0387 15.7481 S.2 1 FOJB 0.1130 + 2 O1 1.0741 1.5282 17.9770 O.3 1 FOJB -0.5600 + 3 O11 -0.6736 2.9481 15.8262 O.2 1 FOJB -0.5000 + 4 C2 1.5333 2.7541 17.4062 C.3 1 FOJB 0.4735 + 5 C4 1.4515 1.4761 15.0293 C.3 1 FOJB 0.1935 + 6 C5 1.0001 0.2877 15.8821 C.3 1 FOJB 0.0000 + 7 C6 1.5506 0.3741 17.2986 C.3 1 FOJB 0.2800 + 8 C7 0.9672 1.3156 13.5783 C.3 1 FOJB 0.0000 + 9 C8 1.6031 2.3233 12.6140 C.3 1 FOJB 0.0000 + 10 C9 1.1578 2.0745 11.1807 C.3 1 FOJB 0.0000 + 11 C10 1.1271 3.8862 18.3368 C.3 1 FOJB 0.0000 + 12 H101 1.6221 2.8025 10.5081 H 1 FOJB 0.0000 + 13 H102 0.0713 2.1687 11.0860 H 1 FOJB 0.0000 + 14 H103 1.4469 1.0725 10.8478 H 1 FOJB 0.0000 + 15 H81 -0.1260 1.3989 13.5274 H 1 FOJB 0.0000 + 16 H82 1.2204 0.3054 13.2309 H 1 FOJB 0.0000 + 17 H61 1.3439 -0.6491 15.4279 H 1 FOJB 0.0000 + 18 H62 -0.0960 0.2495 15.9212 H 1 FOJB 0.0000 + 19 H31 2.6256 2.7387 17.3150 H 1 FOJB 0.0000 + 20 H71 2.5464 1.5389 15.0384 H 1 FOJB 0.0000 + 21 H91 1.3323 3.3475 12.8913 H 1 FOJB 0.0000 + 22 H92 2.6955 2.2495 12.6672 H 1 FOJB 0.0000 + 23 H51 2.6470 0.3657 17.3047 H 1 FOJB 0.0000 + 24 H52 1.2177 -0.4991 17.8694 H 1 FOJB 0.0000 + 25 H111 1.4557 4.8592 17.9574 H 1 FOJB 0.0000 + 26 H112 1.5634 3.7358 19.3303 H 1 FOJB 0.0000 + 27 H113 0.0402 3.9183 18.4746 H 1 FOJB 0.0000 +@BOND + 1 1 3 2 + 2 1 4 1 + 3 1 5 1 + 4 2 4 1 + 5 2 7 1 + 6 4 11 1 + 7 4 19 1 + 8 5 6 1 + 9 5 8 1 + 10 5 20 1 + 11 6 7 1 + 12 6 17 1 + 13 6 18 1 + 14 7 23 1 + 15 7 24 1 + 16 8 9 1 + 17 8 15 1 + 18 8 16 1 + 19 9 10 1 + 20 9 21 1 + 21 9 22 1 + 22 10 12 1 + 23 10 13 1 + 24 10 14 1 + 25 11 25 1 + 26 11 26 1 + 27 11 27 1 +@SUBSTRUCTURE + 1 FOJB 1 +@COMMENT +COMMENT (2S-C-,3R-S-,4R-C-)-2-METHYL-4-PROPYL-1,3-OXATHIANE-3-OXIDE +@MOLECULE +FOJPAV + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.7261 0.2653 5.2889 S.3 1 FOJL -0.3310 + 2 C2 3.5434 0.2686 5.0922 C.3 1 FOJL 0.2910 + 3 C3 3.8354 0.7449 3.6783 C.2 1 FOJL 0.5690 + 4 O3 4.9738 0.8566 3.2422 O.2 1 FOJL -0.5700 + 5 N4 2.6521 1.0166 3.0079 N.3 1 FOJL -0.2290 + 6 C5 2.5069 1.4575 1.7032 C.2 1 FOJL 0.7710 + 7 O5 3.3475 1.7139 0.8607 O.2 1 FOJL -0.5700 + 8 S6 0.7571 1.6143 1.3894 S.3 1 FOJL -0.2420 + 9 C7 0.3698 1.0846 3.0073 C.2 1 FOJL 0.0726 + 10 C71 1.4854 0.8220 3.6950 C.2 1 FOJL 0.2100 + 11 C8 -1.0289 0.9880 3.4222 C.2 1 FOJL 0.0284 + 12 C9 -1.9263 0.1598 2.7344 C.2 1 FOJL -0.1500 + 13 C10 -3.2624 0.0672 3.1357 C.2 1 FOJL -0.1500 + 14 C11 -3.7242 0.7931 4.2382 C.2 1 FOJL -0.1435 + 15 C12 -2.8359 1.6332 4.9172 C.2 1 FOJL -0.1500 + 16 C13 -1.4998 1.7263 4.5160 C.2 1 FOJL -0.1500 + 17 C14 -5.1655 0.7199 4.6474 C.3 1 FOJL 0.1435 + 18 H21 3.9328 -0.7435 5.2268 H 1 FOJL 0.0000 + 19 H11 3.9928 0.9570 5.8120 H 1 FOJL 0.0000 + 20 H9 -1.5971 -0.4245 1.8775 H 1 FOJL 0.1500 + 21 H10 -3.9401 -0.5774 2.5799 H 1 FOJL 0.1500 + 22 H12 -3.1782 2.2232 5.7649 H 1 FOJL 0.1500 + 23 H13 -0.8358 2.3901 5.0656 H 1 FOJL 0.1500 + 24 H141 -5.2741 0.8800 5.7253 H 1 FOJL 0.0000 + 25 H142 -5.5859 -0.2659 4.4221 H 1 FOJL 0.0000 + 26 H143 -5.7444 1.4816 4.1162 H 1 FOJL 0.0000 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 2 3 1 + 4 2 18 1 + 5 2 19 1 + 6 3 4 2 + 7 3 5 am + 8 5 6 am + 9 5 10 1 + 10 6 7 2 + 11 6 8 1 + 12 8 9 1 + 13 9 10 2 + 14 9 11 1 + 15 11 12 2 + 16 11 16 1 + 17 12 13 1 + 18 12 20 1 + 19 13 14 2 + 20 13 21 1 + 21 14 15 1 + 22 14 17 1 + 23 15 16 2 + 24 15 22 1 + 25 16 23 1 + 26 17 24 1 + 27 17 25 1 + 28 17 26 1 +@SUBSTRUCTURE + 1 FOJL 1 +@COMMENT +COMMENT 7-P-TOLYL-2,3-DIHYDRO-5H-THIAZOLO(4,3-B)THIAZOLE-3,5-DIONE +@MOLECULE +FONCOA + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.0073 1.5120 3.1780 C.3 1 FONC 0.0000 + 2 C2 8.0328 3.7764 2.5871 C.3 1 FONC 0.0000 + 3 C3 7.5252 5.9348 3.8164 C.2 1 FONC 0.5690 + 4 C4 7.8031 4.4194 3.9635 C.3 1 FONC 0.3611 + 5 O1 9.7217 4.3185 6.9671 O.2 1 FONC -0.5700 + 6 C5 8.9953 4.8099 6.1027 C.2 1 FONC 0.5770 + 7 N1 7.4692 6.5770 5.0382 N.3 1 FONC -0.5100 + 8 C6 8.2137 2.2440 2.5894 C.3 1 FONC 0.0000 + 9 C7 8.1088 6.0884 6.2715 C.3 1 FONC 0.2780 + 10 O2 7.2646 6.4940 2.7559 O.2 1 FONC -0.5700 + 11 N2 8.9474 4.2151 4.8558 N.3 1 FONC -0.7301 + 12 C8 8.8074 7.4590 6.3233 C.3 1 FONC 0.0000 + 13 C9 7.7905 7.9719 5.2950 C.3 1 FONC 0.2250 + 14 C10 8.4678 1.7542 1.1605 C.3 1 FONC 0.0000 + 15 H1 6.0823 1.7928 2.6632 H 1 FONC 0.0000 + 16 H2 6.8878 1.7335 4.2428 H 1 FONC 0.0000 + 17 H3 7.1285 0.4271 3.0865 H 1 FONC 0.0000 + 18 H4 9.0968 1.9834 3.1843 H 1 FONC 0.0000 + 19 H5 9.4185 3.3187 4.8499 H 1 FONC 0.3700 + 20 H6 7.1880 4.0274 1.9313 H 1 FONC 0.0000 + 21 H7 8.9197 4.2336 2.1269 H 1 FONC 0.0000 + 22 H8 7.3548 5.9550 7.0580 H 1 FONC 0.0000 + 23 H9 8.7788 7.9609 7.2948 H 1 FONC 0.0000 + 24 H10 9.8415 7.4548 5.9594 H 1 FONC 0.0000 + 25 H11 8.2194 8.5120 4.4476 H 1 FONC 0.0000 + 26 H12 6.9407 8.5225 5.7079 H 1 FONC 0.0000 + 27 H13 7.6142 1.9685 0.5084 H 1 FONC 0.0000 + 28 H14 8.6426 0.6731 1.1450 H 1 FONC 0.0000 + 29 H15 9.3518 2.2400 0.7340 H 1 FONC 0.0000 + 30 H16 6.9207 3.9880 4.4505 H 1 FONC 0.0000 +@BOND + 1 1 17 1 + 2 1 16 1 + 3 1 15 1 + 4 1 8 1 + 5 2 21 1 + 6 2 20 1 + 7 2 8 1 + 8 2 4 1 + 9 3 10 2 + 10 3 7 am + 11 3 4 1 + 12 4 30 1 + 13 4 11 1 + 14 5 6 2 + 15 6 11 am + 16 6 9 1 + 17 7 13 1 + 18 7 9 1 + 19 8 18 1 + 20 8 14 1 + 21 9 22 1 + 22 9 12 1 + 23 11 19 1 + 24 12 24 1 + 25 12 23 1 + 26 12 13 1 + 27 13 26 1 + 28 13 25 1 + 29 14 29 1 + 30 14 28 1 + 31 14 27 1 +@SUBSTRUCTURE + 1 FONC 1 +@COMMENT +COMMENT (3R,6R)-3-ISOBUTYL-1,4-DIAZABICYCLO(4.2.0)OCTANE-2,5-DIONE +@MOLECULE +FORGOI + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 1.8692 1.0981 2.3029 I 1 FORG -0.0810 + 2 O1 1.2799 2.3035 9.2597 O.2 1 FORG -0.5700 + 3 O2 2.1430 4.2972 8.5187 O.3 1 FORG -0.4300 + 4 C1 1.7466 2.6166 6.9366 C.2 1 FORG 0.0862 + 5 C2 1.3104 1.3267 6.6014 C.2 1 FORG -0.1500 + 6 C3 1.3450 0.8903 5.2737 C.2 1 FORG -0.1500 + 7 C4 1.8166 1.7443 4.2773 C.2 1 FORG 0.0810 + 8 C5 2.2534 3.0299 4.5977 C.2 1 FORG -0.1500 + 9 C6 2.2187 3.4664 5.9262 C.2 1 FORG -0.1500 + 10 C7 1.6875 3.0287 8.3661 C.2 1 FORG 0.6338 + 11 C8 2.1165 4.7638 9.8685 C.3 1 FORG 0.2800 + 12 H2 0.9410 0.6548 7.3746 H 1 FORG 0.1500 + 13 H3 1.0020 -0.1138 5.0362 H 1 FORG 0.1500 + 14 H5 2.6228 3.7031 3.8277 H 1 FORG 0.1500 + 15 H6 2.5632 4.4717 6.1569 H 1 FORG 0.1500 + 16 H81 1.0908 4.7744 10.2504 H 1 FORG 0.0000 + 17 H82 2.7604 4.1447 10.5009 H 1 FORG 0.0000 + 18 H83 2.5008 5.7875 9.8803 H 1 FORG 0.0000 +@BOND + 1 1 7 1 + 2 2 10 2 + 3 3 10 1 + 4 3 11 1 + 5 4 5 2 + 6 4 9 1 + 7 4 10 1 + 8 5 6 1 + 9 5 12 1 + 10 6 7 2 + 11 6 13 1 + 12 7 8 1 + 13 8 9 2 + 14 8 14 1 + 15 9 15 1 + 16 11 16 1 + 17 11 17 1 + 18 11 18 1 +@SUBSTRUCTURE + 1 FORG 1 +@COMMENT +COMMENT METHYL 4-IODOBENZOATE +@MOLECULE +FORHEZ + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.8508 -1.0915 -0.4908 C.3 1 UNCH 0.1382 + 2 C2 10.0735 0.2241 -1.2043 C.2 1 UNCH -0.0372 + 3 C3 11.2459 0.5062 -1.8149 C.2 1 UNCH 0.0662 + 4 C4 12.4661 -0.3344 -1.9959 C.3 1 UNCH 0.1382 + 5 C5 7.6467 0.5419 -2.0696 C.1 1 UNCH 0.5931 + 6 N1 6.9089 -0.0629 -2.7287 N.1 1 UNCH -0.5571 + 7 N2 11.4086 1.8003 -2.4452 N.2 1 UNCH 0.8356 + 8 O1 12.1670 2.5983 -1.8825 O.3 1 UNCH -0.5200 + 9 O2 10.8132 1.9856 -3.5133 O.2 1 UNCH -0.5200 + 10 S1 8.7411 1.3733 -1.0797 S.3 1 UNCH -0.1370 + 11 H11 9.3042 -0.9448 0.4480 H 1 UNCH 0.0000 + 12 H12 10.7872 -1.5863 -0.2177 H 1 UNCH 0.0000 + 13 H13 9.2748 -1.7767 -1.1214 H 1 UNCH 0.0000 + 14 H41 12.2870 -1.3871 -1.7613 H 1 UNCH 0.0000 + 15 H42 13.2784 0.0189 -1.3519 H 1 UNCH 0.0000 + 16 H43 12.8135 -0.3061 -3.0353 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 11 1 + 3 1 12 1 + 4 1 13 1 + 5 2 3 2 + 6 2 10 1 + 7 3 4 1 + 8 3 7 1 + 9 4 14 1 + 10 4 15 1 + 11 4 16 1 + 12 5 6 3 + 13 5 10 1 + 14 7 8 1 + 15 7 9 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CIS-3-NITRO-2-THIOCYANATO-2-BUTENE +@MOLECULE +FORJIF + 22 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 1.8884 -6.7836 6.6679 CL 1 UNCH -0.2900 + 2 CL2 2.6408 -5.2644 3.6425 CL 1 UNCH -0.2900 + 3 CL3 0.0878 -7.6095 3.7431 CL 1 UNCH -0.2900 + 4 CL4 2.7299 -3.4390 6.8554 CL 1 UNCH -0.2900 + 5 CL5 0.4633 -4.2813 8.4886 CL 1 UNCH -0.2900 + 6 C1 0.9816 -5.3942 6.0266 C.3 1 UNCH 0.2900 + 7 C2 -0.5242 -5.6295 5.6941 C.3 1 UNCH 0.0000 + 8 C3 1.1291 -5.0100 4.5013 C.3 1 UNCH 0.2900 + 9 C4 -0.1376 -5.9075 4.2086 C.3 1 UNCH 0.2900 + 10 C5 1.0842 -4.0952 6.8397 C.3 1 UNCH 0.5800 + 11 H1 -1.0758 -6.3906 6.2486 H 1 UNCH 0.0000 + 12 C3A -1.1291 -4.1749 5.6558 C.3 1 UNCH 0.2900 + 13 C2A 0.5242 -3.5554 4.4630 C.3 1 UNCH 0.0000 + 14 C5A -1.0842 -5.0897 3.3174 C.3 1 UNCH 0.5800 + 15 C4A 0.1376 -3.2774 5.9485 C.3 1 UNCH 0.2900 + 16 CL2A -2.6408 -3.9205 6.5146 CL 1 UNCH -0.2900 + 17 C1A -0.9816 -3.7907 4.1305 C.3 1 UNCH 0.2900 + 18 H1A 1.0758 -2.7943 3.9085 H 1 UNCH 0.0000 + 19 CL4A -2.7299 -5.7459 3.3017 CL 1 UNCH -0.2900 + 20 CL5A -0.4633 -4.9036 1.6685 CL 1 UNCH -0.2900 + 21 CL3A -0.0878 -1.5754 6.4140 CL 1 UNCH -0.2900 + 22 CL1A -1.8884 -2.4012 3.4892 CL 1 UNCH -0.2900 +@BOND + 1 1 6 1 + 2 2 8 1 + 3 3 9 1 + 4 4 10 1 + 5 5 10 1 + 6 6 7 1 + 7 6 8 1 + 8 6 10 1 + 9 7 9 1 + 10 7 11 1 + 11 7 12 1 + 12 8 9 1 + 13 8 13 1 + 14 9 14 1 + 15 10 15 1 + 16 12 15 1 + 17 12 16 1 + 18 12 17 1 + 19 13 15 1 + 20 13 17 1 + 21 13 18 1 + 22 14 17 1 + 23 14 19 1 + 24 14 20 1 + 25 15 21 1 + 26 17 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,3,4,4,5,6,7,9,10,10-DECACHLOROPENTACYCLO(5.2.1.0-2,6-.0-3 +@MOLECULE +FORJUR + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 15.5245 1.8274 1.4136 S.3 1 UNCH -0.2850 + 2 N1 12.7801 -0.1123 -0.3417 N.3 1 UNCH 0.5926 + 3 N2 13.4665 0.1762 0.7925 N.2 1 UNCH -0.7068 + 4 C3 14.3696 1.0549 0.3588 C.2 1 UNCH 0.5710 + 5 N4 14.3642 1.2896 -0.9841 N.2 1 UNCH -0.5653 + 6 C5 13.3950 0.5263 -1.4221 C.2 1 UNCH 0.2705 + 7 N6 13.0951 0.3186 -2.7241 N.3 1 UNCH -0.8840 + 8 C7 11.6510 -0.9782 -0.3292 C.2 1 UNCH -0.0230 + 9 C8 11.7209 -2.2022 0.3860 C.2 1 UNCH -0.1435 + 10 C9 10.6109 -3.0633 0.3695 C.2 1 UNCH -0.1500 + 11 C10 9.4638 -2.7394 -0.3472 C.2 1 UNCH -0.1500 + 12 C11 9.3916 -1.5315 -1.0332 C.2 1 UNCH -0.1500 + 13 C12 10.4623 -0.6206 -1.0137 C.2 1 UNCH -0.1435 + 14 C13 10.2263 0.7111 -1.6807 C.3 1 UNCH 0.1435 + 15 C14 12.9383 -2.6535 1.1531 C.3 1 UNCH 0.1435 + 16 C15 14.9941 1.2254 3.0289 C.3 1 UNCH 0.2300 + 17 H9 8.4720 -1.2852 -1.5620 H 1 UNCH 0.1500 + 18 H10 8.6178 -3.4221 -0.3569 H 1 UNCH 0.1500 + 19 H11 10.6393 -4.0074 0.9109 H 1 UNCH 0.1500 + 20 H131 10.8071 1.5125 -1.2155 H 1 UNCH 0.0000 + 21 H132 9.1757 1.0078 -1.5778 H 1 UNCH 0.0000 + 22 H133 10.4551 0.6520 -2.7482 H 1 UNCH 0.0000 + 23 H141 13.8482 -2.5206 0.5593 H 1 UNCH 0.0000 + 24 H142 12.8821 -3.7210 1.3944 H 1 UNCH 0.0000 + 25 H143 13.0192 -2.1070 2.0975 H 1 UNCH 0.0000 + 26 H151 15.6388 1.6569 3.7996 H 1 UNCH 0.0000 + 27 H152 15.0769 0.1363 3.0861 H 1 UNCH 0.0000 + 28 H153 13.9637 1.5265 3.2383 H 1 UNCH 0.0000 + 29 H61 13.8063 0.6333 -3.3794 H 1 UNCH 0.4000 + 30 H62 12.6821 -0.5697 -2.9952 H 1 UNCH 0.4000 +@BOND + 1 1 4 1 + 2 1 16 1 + 3 2 3 1 + 4 2 6 am + 5 2 8 1 + 6 3 4 2 + 7 4 5 am + 8 5 6 2 + 9 6 7 am + 10 7 29 1 + 11 7 30 1 + 12 8 9 2 + 13 8 13 1 + 14 9 10 1 + 15 9 15 1 + 16 10 11 2 + 17 10 19 1 + 18 11 12 1 + 19 11 18 1 + 20 12 13 2 + 21 12 17 1 + 22 13 14 1 + 23 14 20 1 + 24 14 21 1 + 25 14 22 1 + 26 15 23 1 + 27 15 24 1 + 28 15 25 1 + 29 16 26 1 + 30 16 27 1 + 31 16 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-AMINO-1-(2,6-DIMETHYLPHENYL)-3-METHYLTHIO-1H-1,2,4-TRIAZO +@MOLECULE +FORTAH + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.7303 -0.7990 2.4773 S.2 1 FORT -0.7500 + 2 S2 6.0982 -0.1217 -0.3881 S.3 1 FORT -0.7500 + 3 C2 6.4473 0.3424 1.2324 C.2 1 FORT 0.6060 + 4 C1 6.4451 1.9445 1.5110 C.3 1 FORT 0.4340 + 5 N1 7.8114 2.5145 1.6970 N.3 1 FORT -0.8100 + 6 C3 8.6356 2.3693 0.5006 C.3 1 FORT 0.2700 + 7 C4 8.5324 2.0475 2.8758 C.3 1 FORT 0.2700 + 8 N2 5.5346 2.3321 2.6361 N.3 1 FORT -0.8100 + 9 C5 4.1625 1.8786 2.3724 C.3 1 FORT 0.2700 + 10 C6 5.5120 3.7877 2.8152 C.3 1 FORT 0.2700 + 11 H31 8.1244 2.7704 -0.3815 H 1 FORT 0.0000 + 12 H32 9.5594 2.9498 0.6074 H 1 FORT 0.0000 + 13 H33 8.9189 1.3305 0.3020 H 1 FORT 0.0000 + 14 H41 9.3728 2.7237 3.0743 H 1 FORT 0.0000 + 15 H42 7.9160 2.0675 3.7802 H 1 FORT 0.0000 + 16 H43 8.9583 1.0477 2.7541 H 1 FORT 0.0000 + 17 H51 4.0834 0.7891 2.3341 H 1 FORT 0.0000 + 18 H52 3.7647 2.2875 1.4361 H 1 FORT 0.0000 + 19 H53 3.4966 2.1902 3.1861 H 1 FORT 0.0000 + 20 H61 6.4859 4.1761 3.1303 H 1 FORT 0.0000 + 21 H62 4.8152 4.0636 3.6158 H 1 FORT 0.0000 + 22 H63 5.2056 4.3143 1.9037 H 1 FORT 0.0000 + 23 H2 6.0372 2.4392 0.6163 H 1 FORT 0.0000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 23 1 + 5 4 8 1 + 6 4 5 1 + 7 5 7 1 + 8 5 6 1 + 9 6 13 1 + 10 6 12 1 + 11 6 11 1 + 12 7 16 1 + 13 7 15 1 + 14 7 14 1 + 15 8 10 1 + 16 8 9 1 + 17 9 19 1 + 18 9 18 1 + 19 9 17 1 + 20 10 22 1 + 21 10 21 1 + 22 10 20 1 +@SUBSTRUCTURE + 1 FORT 1 +@COMMENT +COMMENT 2,2-BIS(DIMETHYLAMINO)-DITHIOACETATE +@MOLECULE +FOSDIA + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -4.2833 2.5542 14.2965 CL 1 UNCH -0.2900 + 2 CL2 -2.1993 0.8355 15.2838 CL 1 UNCH -0.2900 + 3 CL3 -2.6228 1.2491 12.3756 CL 1 UNCH -0.2900 + 4 S1 0.6531 0.2638 13.3068 S.3 1 UNCH -0.6773 + 5 P1 0.7449 2.1707 12.8620 P 1 UNCH 1.4891 + 6 N1 2.2599 2.8588 13.0743 N.3 1 UNCH -0.5839 + 7 N2 0.3677 2.6581 11.3152 N.3 1 UNCH -0.5839 + 8 N3 -0.2194 3.1806 13.7589 N.3 1 UNCH -0.6951 + 9 N4 -2.0506 4.3436 14.4789 N.2 1 UNCH -0.6960 + 10 C1 3.0660 2.5554 14.2523 C.3 1 UNCH -0.0420 + 11 C2 3.4969 2.1169 12.8763 C.3 1 UNCH -0.0420 + 12 C3 1.2621 2.3302 10.2048 C.3 1 UNCH -0.0420 + 13 C4 -0.1169 1.7503 10.2819 C.3 1 UNCH -0.0420 + 14 C5 -1.5914 3.1780 14.0512 C.2 1 UNCH 0.4390 + 15 C6 -0.9128 5.2700 14.5212 C.3 1 UNCH 0.2460 + 16 C7 0.2273 4.5699 13.8096 C.3 1 UNCH 0.3691 + 17 C8 -2.5934 1.9817 13.9843 C.3 1 UNCH 0.9310 + 18 H11 3.5843 3.3921 14.7040 H 1 UNCH 0.1000 + 19 H12 2.7088 1.8054 14.9470 H 1 UNCH 0.1000 + 20 H21 4.3042 2.6594 12.3997 H 1 UNCH 0.1000 + 21 H22 3.4476 1.0633 12.6332 H 1 UNCH 0.1000 + 22 H31 1.4454 3.1283 9.4970 H 1 UNCH 0.1000 + 23 H32 2.0957 1.6645 10.3878 H 1 UNCH 0.1000 + 24 H41 -0.8767 2.1486 9.6204 H 1 UNCH 0.1000 + 25 H42 -0.2092 0.6934 10.4971 H 1 UNCH 0.1000 + 26 H61 -0.6578 5.4802 15.5658 H 1 UNCH 0.0000 + 27 H62 -1.1644 6.2175 14.0347 H 1 UNCH 0.0000 + 28 H71 0.3526 4.9858 12.8038 H 1 UNCH 0.0000 + 29 H72 1.1514 4.7075 14.3780 H 1 UNCH 0.0000 +@BOND + 1 1 17 1 + 2 2 17 1 + 3 3 17 1 + 4 4 5 1 + 5 5 6 1 + 6 5 7 1 + 7 5 8 1 + 8 6 10 1 + 9 6 11 1 + 10 7 12 1 + 11 7 13 1 + 12 8 14 am + 13 8 16 1 + 14 9 14 2 + 15 9 15 1 + 16 10 11 1 + 17 10 18 1 + 18 10 19 1 + 19 11 20 1 + 20 11 21 1 + 21 12 13 1 + 22 12 22 1 + 23 12 23 1 + 24 13 24 1 + 25 13 25 1 + 26 14 17 1 + 27 15 16 1 + 28 15 26 1 + 29 15 27 1 + 30 16 28 1 + 31 16 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-DIETHYLENEAMIDOTHIOPHOSPHORYL-2-TRICHLOROMETHYL-DELTA-2-- +@MOLECULE +FOVHUT + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N11 -0.7437 7.7898 15.0649 N.2 1 FOVH -0.6610 + 2 C21 -0.2091 8.1593 16.2615 C.2 1 FOVH 0.7110 + 3 N21 -0.6283 9.3490 16.7587 N.3 1 FOVH -0.8500 + 4 H121 -0.9580 9.9694 16.0318 H 1 FOVH 0.4000 + 5 H221 0.0460 9.7609 17.3887 H 1 FOVH 0.4000 + 6 N31 0.6679 7.4866 16.9261 N.2 1 FOVH -0.6960 + 7 C41 1.0201 6.2110 16.3554 C.3 1 FOVH 0.8851 + 8 N41 2.3205 5.8803 16.8794 N.3 1 FOVH -0.9900 + 9 H414 2.2566 6.0805 17.8757 H 1 FOVH 0.3600 + 10 H241 2.9303 6.6110 16.5203 H 1 FOVH 0.3600 + 11 N51 0.9150 6.1691 14.9409 N.3 1 FOVH -0.8191 + 12 C61 -0.1536 6.8328 14.4276 C.2 1 FOVH 0.4390 + 13 C11_ -0.6859 6.4138 13.0838 C.3 1 FOVH 0.0610 + 14 H1 0.3285 5.4627 16.7639 H 1 FOVH 0.0000 + 15 H2 1.1535 5.2673 14.5514 H 1 FOVH 0.4000 + 16 H3 -1.2547 5.4868 13.1982 H 1 FOVH 0.0000 + 17 H4 -1.3399 7.1872 12.6716 H 1 FOVH 0.0000 + 18 H5 0.1438 6.2408 12.3927 H 1 FOVH 0.0000 +@BOND + 1 1 12 2 + 2 1 2 am + 3 2 6 2 + 4 2 3 am + 5 3 5 1 + 6 3 4 1 + 7 6 7 1 + 8 7 14 1 + 9 7 11 1 + 10 7 8 1 + 11 8 10 1 + 12 8 9 1 + 13 11 15 1 + 14 11 12 am + 15 12 13 1 + 16 13 18 1 + 17 13 17 1 + 18 13 16 1 +@SUBSTRUCTURE + 1 FOVH 1 +@COMMENT +COMMENT 6-(BETA-D-RIBOFURANOSYL)(1,3,5)TRIAZINE-2,4-DIAMINE HEMIHYD +@MOLECULE +FOVJIJ + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.5393 -1.2073 2.4868 O.2 1 UNCH -0.5700 + 2 O2 1.8954 1.0645 0.6785 O.3 1 UNCH -0.2980 + 3 O3 0.9292 2.9795 1.5177 O.2 1 UNCH -0.5700 + 4 C1 3.3852 -0.1971 2.2122 C.3 1 UNCH -0.1000 + 5 C2 4.6831 -0.4449 2.8951 C.2 1 UNCH 0.5556 + 6 C3 4.7415 0.3711 4.1331 C.2 1 UNCH -0.1238 + 7 C4 3.6035 1.0854 4.1675 C.2 1 UNCH -0.1900 + 8 C5 2.6612 0.8458 3.0642 C.3 1 UNCH -0.0600 + 9 C6 5.8964 0.3467 5.0530 C.3 1 UNCH 0.1382 + 10 C7 2.9975 1.1381 1.6192 C.3 1 UNCH 0.0530 + 11 C8 4.0515 2.1265 1.2132 C.3 1 UNCH 0.0950 + 12 C9 0.9506 2.0485 0.7250 C.2 1 UNCH 0.6590 + 13 C10 -0.0765 1.8174 -0.3402 C.3 1 UNCH 0.0610 + 14 H1 2.8362 -1.0781 1.9061 H 1 UNCH 0.1000 + 15 H4 3.3694 1.7942 4.9536 H 1 UNCH 0.1500 + 16 H5 1.6317 0.6537 3.3401 H 1 UNCH 0.1000 + 17 H61 6.0346 -0.6561 5.4689 H 1 UNCH 0.0000 + 18 H62 5.7556 1.0414 5.8872 H 1 UNCH 0.0000 + 19 H63 6.8129 0.6328 4.5276 H 1 UNCH 0.0000 + 20 H81 4.3850 1.9154 0.1917 H 1 UNCH 0.0000 + 21 H82 3.6501 3.1445 1.2334 H 1 UNCH 0.0000 + 22 H83 4.9355 2.1107 1.8563 H 1 UNCH 0.0000 + 23 H101 -0.5848 0.8661 -0.1645 H 1 UNCH 0.0000 + 24 H102 -0.8178 2.6210 -0.3091 H 1 UNCH 0.0000 + 25 H103 0.4009 1.8236 -1.3233 H 1 UNCH 0.0000 +@BOND + 1 1 5 2 + 2 2 10 1 + 3 2 12 1 + 4 3 12 2 + 5 4 5 1 + 6 4 8 1 + 7 4 10 1 + 8 4 14 1 + 9 5 6 1 + 10 6 7 2 + 11 6 9 1 + 12 7 8 1 + 13 7 15 1 + 14 8 10 1 + 15 8 16 1 + 16 9 17 1 + 17 9 18 1 + 18 9 19 1 + 19 10 11 1 + 20 11 20 1 + 21 11 21 1 + 22 11 22 1 + 23 12 13 1 + 24 13 23 1 + 25 13 24 1 + 26 13 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (RS)-6-ACETOXY-3,6-DIMETHYLBICYCLO(3.1.0)HEX-3-EN-2-ONE +@MOLECULE +FOVRAJ + 34 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.8948 4.8199 0.0171 N.2 1 FOVR -0.7000 + 2 C2 1.7802 4.0452 0.2840 C.2 1 FOVR 0.1820 + 3 C3 2.1843 2.7127 0.1612 C.2 1 FOVR 0.4460 + 4 N4 3.5258 2.7573 -0.1729 N.3 1 FOVR -0.6290 + 5 C5 4.4287 1.7366 -0.4144 C.2 1 FOVR 0.2290 + 6 C6 5.6910 2.1078 -0.7238 C.2 1 FOVR 0.0210 + 7 N7 6.1697 3.4135 -0.8229 N.2 1 FOVR -0.6210 + 8 C8 5.2802 4.3393 -0.5863 C.2 1 FOVR 0.6490 + 9 C81 3.9437 4.0373 -0.2571 C.2 1 FOVR 0.7510 + 10 C9 0.4676 4.6236 0.6199 C.3 1 FOVR 0.1680 + 11 N10 1.5390 1.5133 0.3024 N.3 1 FOVR -0.8960 + 12 O11 5.5608 5.6674 -0.6356 O.3 1 FOVR -0.4300 + 13 C12 6.9122 6.0208 -0.9676 C.3 1 FOVR 0.4235 + 14 C13 6.9810 7.5235 -0.9613 C.2 1 FOVR -0.1435 + 15 C14 6.6993 8.2535 -2.1251 C.2 1 FOVR -0.1500 + 16 C15 6.7371 9.6487 -2.1110 C.2 1 FOVR -0.1500 + 17 C16 7.0489 10.3269 -0.9345 C.2 1 FOVR -0.1500 + 18 C17 7.3217 9.6121 0.2301 C.2 1 FOVR -0.1500 + 19 C18 7.2846 8.2169 0.2192 C.2 1 FOVR -0.1500 + 20 H1 2.9492 5.8366 0.0190 H 1 FOVR 0.4500 + 21 H5 4.1129 0.7019 -0.3517 H 1 FOVR 0.1500 + 22 H6 6.4331 1.3347 -0.9212 H 1 FOVR 0.1500 + 23 H91 0.1116 4.2097 1.5673 H 1 FOVR 0.0000 + 24 H92 0.5438 5.7102 0.7162 H 1 FOVR 0.0000 + 25 H93 -0.2513 4.3872 -0.1693 H 1 FOVR 0.0000 + 26 H101 1.9527 0.5950 0.1833 H 1 FOVR 0.4000 + 27 H102 0.5532 1.4332 0.5468 H 1 FOVR 0.4000 + 28 H121 7.1733 5.6323 -1.9592 H 1 FOVR 0.0000 + 29 H122 7.6060 5.6053 -0.2270 H 1 FOVR 0.0000 + 30 H14 6.4553 7.7427 -3.0540 H 1 FOVR 0.1500 + 31 H15 6.5285 10.2092 -3.0194 H 1 FOVR 0.1500 + 32 H16 7.0841 11.4138 -0.9263 H 1 FOVR 0.1500 + 33 H17 7.5685 10.1441 1.1459 H 1 FOVR 0.1500 + 34 H18 7.5022 7.6772 1.1383 H 1 FOVR 0.1500 +@BOND + 1 1 20 1 + 2 1 9 2 + 3 1 2 1 + 4 2 10 1 + 5 2 3 2 + 6 3 11 1 + 7 3 4 1 + 8 4 9 am + 9 4 5 1 + 10 5 21 1 + 11 5 6 2 + 12 6 22 1 + 13 6 7 1 + 14 7 8 2 + 15 8 12 1 + 16 8 9 1 + 17 10 25 1 + 18 10 24 1 + 19 10 23 1 + 20 11 27 1 + 21 11 26 1 + 22 12 13 1 + 23 13 29 1 + 24 13 28 1 + 25 13 14 1 + 26 14 19 1 + 27 14 15 2 + 28 15 30 1 + 29 15 16 1 + 30 16 31 1 + 31 16 17 2 + 32 17 32 1 + 33 17 18 1 + 34 18 33 1 + 35 18 19 2 + 36 19 34 1 +@SUBSTRUCTURE + 1 FOVR 1 +@COMMENT +COMMENT 3-AMINO-2-METHYL-8-(BENZYLOXY)IMIDAZO(1,2-A)PYRAZIN-1-IUM M +@MOLECULE +FOVRUD + 34 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.1018 -4.0135 -1.8533 N.2 1 FOVR -0.5120 + 2 N2 5.4694 -5.2049 -2.3987 N.3 1 FOVR -0.3680 + 3 C3 4.6203 -6.1978 -2.8167 C.2 1 FOVR 0.5690 + 4 C4 3.1573 -5.9116 -2.6271 C.3 1 FOVR 0.0610 + 5 C5 2.8579 -4.4286 -2.7983 C.3 1 FOVR 0.0610 + 6 C6 3.8676 -3.6246 -1.9890 C.2 1 FOVR 0.3028 + 7 O7 5.0335 -7.2669 -3.2549 O.2 1 FOVR -0.5700 + 8 C8 2.9131 -4.0074 -4.2680 C.3 1 FOVR 0.0000 + 9 C11 3.4571 -2.3250 -1.3541 C.2 1 FOVR 0.0862 + 10 C21 4.3268 -1.7262 -0.4298 C.2 1 FOVR -0.1500 + 11 C31 4.0009 -0.5130 0.1890 C.2 1 FOVR -0.1500 + 12 C41 2.7966 0.1137 -0.1186 C.2 1 FOVR 0.3870 + 13 C51 1.9184 -0.4634 -1.0353 C.2 1 FOVR -0.1500 + 14 C61 2.2505 -1.6812 -1.6508 C.2 1 FOVR -0.1500 + 15 N12 2.4562 1.3905 0.5277 N.3 1 FOVR -0.6370 + 16 C22 1.3838 2.1443 0.2169 C.2 1 FOVR 0.6500 + 17 N32 1.3969 3.2274 1.0020 N.2 1 FOVR -0.7000 + 18 C42 2.4819 3.1991 1.8362 C.2 1 FOVR 0.2000 + 19 C52 3.1572 2.0463 1.5462 C.2 1 FOVR 0.2000 + 20 H2 6.4633 -5.4167 -2.4150 H 1 FOVR 0.3700 + 21 H41 2.8922 -6.2388 -1.6144 H 1 FOVR 0.0000 + 22 H42 2.5785 -6.5093 -3.3395 H 1 FOVR 0.0000 + 23 H5 1.8459 -4.2560 -2.4179 H 1 FOVR 0.0000 + 24 H81 2.6761 -2.9449 -4.3841 H 1 FOVR 0.0000 + 25 H82 3.9073 -4.1629 -4.7006 H 1 FOVR 0.0000 + 26 H83 2.1916 -4.5781 -4.8619 H 1 FOVR 0.0000 + 27 H21 5.2758 -2.2029 -0.1817 H 1 FOVR 0.1500 + 28 H31 4.7202 -0.0993 0.8848 H 1 FOVR 0.1500 + 29 H51 0.9671 -0.0193 -1.3000 H 1 FOVR 0.1500 + 30 H61 1.5482 -2.0974 -2.3688 H 1 FOVR 0.1500 + 31 H22 0.6311 1.9465 -0.5343 H 1 FOVR 0.1500 + 32 H32 0.6949 3.9641 0.9708 H 1 FOVR 0.4500 + 33 H421 2.6307 4.0063 2.5320 H 1 FOVR 0.1500 + 34 H52 4.0538 1.6196 1.9610 H 1 FOVR 0.1500 +@BOND + 1 1 6 2 + 2 1 2 1 + 3 2 20 1 + 4 2 3 am + 5 3 7 2 + 6 3 4 1 + 7 4 22 1 + 8 4 21 1 + 9 4 5 1 + 10 5 23 1 + 11 5 8 1 + 12 5 6 1 + 13 6 9 1 + 14 8 26 1 + 15 8 25 1 + 16 8 24 1 + 17 9 14 1 + 18 9 10 2 + 19 10 27 1 + 20 10 11 1 + 21 11 28 1 + 22 11 12 2 + 23 12 15 1 + 24 12 13 1 + 25 13 29 1 + 26 13 14 2 + 27 14 30 1 + 28 15 19 1 + 29 15 16 am + 30 16 31 1 + 31 16 17 2 + 32 17 32 1 + 33 17 18 1 + 34 18 33 1 + 35 18 19 2 + 36 19 34 1 +@SUBSTRUCTURE + 1 FOVR 1 +@COMMENT +COMMENT 6-(4-(IMIDAZOL-1-YL-3-IUM)PHENYL)-5-METHYL-2,3,4,5-TETRAHYD +@MOLECULE +FOWBEY + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 4.2340 1.7216 6.6301 CL 1 UNCH -0.2090 + 2 N1 1.2892 5.7307 3.7507 N.2 1 UNCH -0.5653 + 3 C2 0.8987 6.3983 4.8857 C.2 1 UNCH 0.0772 + 4 C3 1.3911 5.7859 6.0146 C.2 1 UNCH -0.3016 + 5 N4 2.1057 4.7104 5.5673 N.3 1 UNCH 0.5052 + 6 N5 2.7715 3.8165 6.3586 N.2 1 UNCH -0.6520 + 7 C6 3.3752 2.8810 5.6817 C.2 1 UNCH 0.6446 + 8 C61 3.3555 2.7768 4.2014 C.2 1 UNCH 0.1854 + 9 N7 3.9633 1.8274 3.4353 N.2 1 UNCH -0.1710 + 10 N8 3.7230 2.0662 2.2135 N.2 1 UNCH -0.2460 + 11 C9 2.8661 3.2962 2.0829 C.3 1 UNCH 0.3842 + 12 C91 2.6822 3.6901 3.5052 C.2 1 UNCH -0.0932 + 13 C92 2.0129 4.7206 4.1809 C.2 1 UNCH 0.1415 + 14 C10 3.6339 4.3376 1.2711 C.3 1 UNCH 0.0000 + 15 C11 1.5574 2.9046 1.3995 C.3 1 UNCH 0.0000 + 16 H2 0.2821 7.2869 4.8302 H 1 UNCH 0.1500 + 17 H3 1.3021 6.0092 7.0671 H 1 UNCH 0.1500 + 18 H101 4.5896 4.5920 1.7445 H 1 UNCH 0.0000 + 19 H102 3.0567 5.2624 1.1612 H 1 UNCH 0.0000 + 20 H103 3.8626 3.9604 0.2677 H 1 UNCH 0.0000 + 21 H111 1.0239 2.1314 1.9650 H 1 UNCH 0.0000 + 22 H112 0.8886 3.7662 1.2953 H 1 UNCH 0.0000 + 23 H113 1.7449 2.4990 0.3987 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 2 3 1 + 3 2 13 2 + 4 3 4 2 + 5 3 16 1 + 6 4 5 1 + 7 4 17 1 + 8 5 6 1 + 9 5 13 am + 10 6 7 2 + 11 7 8 1 + 12 8 9 1 + 13 8 12 2 + 14 9 10 2 + 15 10 11 1 + 16 11 12 1 + 17 11 14 1 + 18 11 15 1 + 19 12 13 1 + 20 14 18 1 + 21 14 19 1 + 22 14 20 1 + 23 15 21 1 + 24 15 22 1 + 25 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6-CHLORO-9,9-DIMETHYL-9H-IMIDAZO(1,2-B)PYRAZOLO(4,3-D)PYRID +@MOLECULE +FOWPOW + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 9.0722 7.4705 -2.3992 O.2 1 FOWP -0.5700 + 2 O2 3.9167 1.9376 0.8093 O.3 1 FOWP -0.3625 + 3 N1 13.1973 5.3034 -1.8716 N.2 1 FOWP -0.3381 + 4 N2 13.3699 4.0564 -1.3069 N.2 1 FOWP 0.0000 + 5 N3 12.2090 3.5321 -0.9231 N.2 1 FOWP -0.4180 + 6 N4 11.2846 4.4459 -1.2423 N.3 1 FOWP 0.7716 + 7 N5 9.9690 4.2819 -1.0092 N.2 1 FOWP -0.6520 + 8 N6 11.1867 6.6014 -2.2422 N.3 1 FOWP -0.4940 + 9 N7 7.8462 5.3508 -1.2589 N.3 1 FOWP -0.5500 + 10 C1 11.9080 5.5246 -1.8225 C.2 1 FOWP 0.2505 + 11 C2 9.2209 5.2827 -1.3901 C.2 1 FOWP 0.5000 + 12 C3 9.8285 6.5676 -2.0652 C.2 1 FOWP 0.6300 + 13 C4 6.9280 4.4356 -0.7204 C.2 1 FOWP 0.1000 + 14 C5 5.5675 4.7817 -0.7214 C.2 1 FOWP -0.1500 + 15 C6 4.5961 3.9192 -0.2013 C.2 1 FOWP -0.1500 + 16 C7 4.9569 2.6855 0.3348 C.2 1 FOWP 0.0825 + 17 C8 6.3012 2.3261 0.3440 C.2 1 FOWP -0.1500 + 18 C9 7.2731 3.1944 -0.1788 C.2 1 FOWP -0.1500 + 19 C10 4.2400 0.6694 1.3661 C.3 1 FOWP 0.2800 + 20 H60 11.6414 7.3957 -2.6690 H 1 FOWP 0.3700 + 21 H7 7.4300 6.2110 -1.6132 H 1 FOWP 0.4000 + 22 H5 5.2392 5.7348 -1.1297 H 1 FOWP 0.1500 + 23 H6 3.5497 4.2146 -0.2158 H 1 FOWP 0.1500 + 24 H8 6.6382 1.3775 0.7492 H 1 FOWP 0.1500 + 25 H9 8.3052 2.8598 -0.1443 H 1 FOWP 0.1500 + 26 H110 3.3073 0.2018 1.6962 H 1 FOWP 0.0000 + 27 H210 4.8872 0.7766 2.2429 H 1 FOWP 0.0000 + 28 H310 4.6942 0.0132 0.6163 H 1 FOWP 0.0000 +@BOND + 1 1 12 2 + 2 2 19 1 + 3 2 16 1 + 4 3 10 2 + 5 3 4 1 + 6 4 5 2 + 7 5 6 1 + 8 6 10 am + 9 6 7 1 + 10 7 11 2 + 11 8 20 1 + 12 8 12 am + 13 8 10 am + 14 9 21 1 + 15 9 13 1 + 16 9 11 am + 17 11 12 1 + 18 13 18 2 + 19 13 14 1 + 20 14 22 1 + 21 14 15 2 + 22 15 23 1 + 23 15 16 1 + 24 16 17 2 + 25 17 24 1 + 26 17 18 1 + 27 18 25 1 + 28 19 28 1 + 29 19 27 1 + 30 19 26 1 +@SUBSTRUCTURE + 1 FOWP 1 +@COMMENT +COMMENT 6-(4-METHOXYANILINO)-7-OXO-7,8-DIHYDROTETRAZOLO(5,1-B)(1,2, +@MOLECULE +FOWVES + 16 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.4333 -1.4990 4.5780 S.3 1 UNCH -0.2020 + 2 S2 9.0513 1.2831 7.7835 S.3 1 UNCH -0.2820 + 3 O1 7.6133 -0.8694 7.4562 O.2 1 UNCH -0.5700 + 4 O2 7.6195 -2.5783 1.8348 O.2 1 UNCH -0.5700 + 5 C1 8.9298 -0.1867 5.5662 C.2 1 UNCH 0.1154 + 6 C2 8.9326 -0.9584 3.0276 C.2 1 UNCH 0.1154 + 7 C3 8.4041 -0.0952 6.9453 C.2 1 UNCH 0.6966 + 8 C4 8.4097 -1.6503 1.8299 C.2 1 UNCH 0.6966 + 9 C2B 9.7779 0.7969 5.2681 C.2 1 UNCH 0.1154 + 10 C1B 9.7807 0.0251 2.7295 C.2 1 UNCH 0.1154 + 11 C4B 9.9848 1.7381 6.3897 C.2 1 UNCH 0.6966 + 12 S2B 9.0594 -0.9713 0.3677 S.3 1 UNCH -0.2820 + 13 S1B 10.6353 1.0548 3.8040 S.3 1 UNCH -0.2020 + 14 C3B 9.9904 0.1830 1.2743 C.2 1 UNCH 0.6966 + 15 O2B 10.7076 2.7193 6.3686 O.2 1 UNCH -0.5700 + 16 O1B 10.7137 1.0104 0.7472 O.2 1 UNCH -0.5700 +@BOND + 1 1 5 1 + 2 1 6 1 + 3 2 7 1 + 4 2 11 1 + 5 3 7 2 + 6 4 8 2 + 7 5 7 1 + 8 5 9 2 + 9 6 8 1 + 10 6 10 2 + 11 8 12 1 + 12 9 11 1 + 13 9 13 1 + 14 10 13 1 + 15 10 14 1 + 16 11 15 2 + 17 12 14 1 + 18 14 16 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DITHIENO(3,4-B,3',4'-E)(1,4)DITHIINE-1,3,5,7-TETRAONE +@MOLECULE +FOWZAS + 29 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.4339 0.9133 -3.5671 C.3 1 UNCH 0.0000 + 2 C2 8.7608 -0.4832 -3.5112 C.3 1 UNCH 0.0000 + 3 C3 7.5981 -0.2007 -2.5385 C.3 1 UNCH 0.0000 + 4 C4 8.0794 0.3257 -1.1671 C.3 1 UNCH 0.0000 + 5 C5 9.0253 1.5407 -1.3228 C.3 1 UNCH 0.0000 + 6 C6 10.1876 1.1473 -2.2468 C.3 1 UNCH 0.2800 + 7 C7 8.1970 1.8919 -3.5073 C.3 1 UNCH 0.0000 + 8 C8 7.0119 0.9158 -3.4206 C.3 1 UNCH 0.0610 + 9 C9 8.3269 2.6129 -2.1649 C.3 1 UNCH 0.0000 + 10 C10 6.9361 0.2063 -4.7521 C.2 1 UNCH 0.4480 + 11 C11 8.0554 -0.7977 -4.8434 C.3 1 UNCH 0.0610 + 12 C12 12.0288 2.3743 -1.4377 C.2 1 UNCH 0.6600 + 13 O1 6.1203 0.4358 -5.6305 O.2 1 UNCH -0.5700 + 14 O2 11.1189 2.2232 -2.4322 O.3 1 UNCH -0.4300 + 15 O3 12.1248 1.6952 -0.4288 O.2 1 UNCH -0.5700 + 16 H1 10.0549 1.0669 -4.4546 H 1 UNCH 0.0000 + 17 H2 9.4373 -1.2827 -3.1971 H 1 UNCH 0.0000 + 18 H3 6.9266 -1.0598 -2.4281 H 1 UNCH 0.0000 + 19 H4 7.2097 0.6152 -0.5653 H 1 UNCH 0.0000 + 20 H5 8.5997 -0.4769 -0.6312 H 1 UNCH 0.0000 + 21 H6 9.3490 1.9366 -0.3565 H 1 UNCH 0.0000 + 22 H7 10.7191 0.2448 -1.9209 H 1 UNCH 0.0000 + 23 H8 8.1389 2.5722 -4.3618 H 1 UNCH 0.0000 + 24 H9 6.0576 1.3257 -3.0878 H 1 UNCH 0.0000 + 25 H10 7.3614 2.9174 -1.7477 H 1 UNCH 0.0000 + 26 H11 8.9480 3.5103 -2.2632 H 1 UNCH 0.0000 + 27 H12 7.6408 -1.8088 -4.8531 H 1 UNCH 0.0000 + 28 H13 8.6913 -0.6113 -5.7110 H 1 UNCH 0.0000 + 29 H14 12.6865 3.2232 -1.6810 H 1 UNCH 0.0600 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 7 1 + 4 1 16 1 + 5 2 3 1 + 6 2 11 1 + 7 2 17 1 + 8 3 4 1 + 9 3 8 1 + 10 3 18 1 + 11 4 5 1 + 12 4 19 1 + 13 4 20 1 + 14 5 6 1 + 15 5 9 1 + 16 5 21 1 + 17 6 14 1 + 18 6 22 1 + 19 7 8 1 + 20 7 9 1 + 21 7 23 1 + 22 8 10 1 + 23 8 24 1 + 24 9 25 1 + 25 9 26 1 + 26 10 11 1 + 27 10 13 2 + 28 11 27 1 + 29 11 28 1 + 30 12 14 1 + 31 12 15 2 + 32 12 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-OXOTETRACYCLO(6.2.1.0-2,6-.0-5,10-)UNDEC-9-YL FORMATE +@MOLECULE +FOYMAH + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.7102 5.5013 4.7097 N.3 1 FOYM -0.7544 + 2 N2 -1.0669 5.5166 2.4430 N.2 1 FOYM -0.7544 + 3 C4 -1.3123 5.9872 3.6463 C.2 1 FOYM 0.7308 + 4 C5 -2.2826 7.0770 3.8063 C.2 1 FOYM -0.0220 + 5 C6 -3.3586 6.9491 4.6988 C.2 1 FOYM -0.1500 + 6 C7 -4.2808 7.9862 4.8489 C.2 1 FOYM -0.1500 + 7 C8 -4.1368 9.1596 4.1122 C.2 1 FOYM -0.1500 + 8 C9 -3.0731 9.3001 3.2237 C.2 1 FOYM -0.1500 + 9 C10 -2.1500 8.2645 3.0694 C.2 1 FOYM -0.1500 + 10 H6 -3.5041 6.0371 5.2749 H 1 FOYM 0.1500 + 11 H7 -5.1176 7.8819 5.5377 H 1 FOYM 0.1500 + 12 H8 -4.8565 9.9680 4.2309 H 1 FOYM 0.1500 + 13 H9 -2.9645 10.2223 2.6551 H 1 FOYM 0.1500 + 14 H10 -1.3195 8.4072 2.3804 H 1 FOYM 0.1500 + 15 H11 -0.0347 4.7514 4.6609 H 1 FOYM 0.4500 + 16 H21 -0.8989 5.9050 5.6224 H 1 FOYM 0.4500 + 17 H12 -0.4117 4.7666 2.2723 H 1 FOYM 0.4500 + 18 H22 -1.5657 5.8957 1.6436 H 1 FOYM 0.4500 +@BOND + 1 1 16 1 + 2 1 15 1 + 3 1 3 am + 4 2 18 1 + 5 2 17 1 + 6 2 3 2 + 7 3 4 1 + 8 4 9 1 + 9 4 5 2 + 10 5 10 1 + 11 5 6 1 + 12 6 11 1 + 13 6 7 2 + 14 7 12 1 + 15 7 8 1 + 16 8 13 1 + 17 8 9 2 + 18 9 14 1 +@SUBSTRUCTURE + 1 FOYM 1 +@COMMENT +COMMENT BENZAMIDINIUM PYRUVATE +@MOLECULE +FOYNUC + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.5929 2.7169 0.5926 O.3 1 UNCH -0.2800 + 2 C2 -0.2209 2.0033 -0.2274 C.2 1 UNCH 0.2200 + 3 C3 0.0577 2.2313 -1.5534 C.2 1 UNCH -0.1500 + 4 C4 1.8879 3.8012 -2.5536 C.2 1 UNCH -0.1500 + 5 C5 2.9065 4.6794 -2.1608 C.2 1 UNCH -0.1500 + 6 C6 4.2771 5.9164 -0.4618 C.3 1 UNCH 0.1435 + 7 C7 4.7409 5.8319 0.9915 C.3 1 UNCH 0.0000 + 8 C8 3.5442 5.7850 1.9333 C.3 1 UNCH 0.0000 + 9 C9 2.7125 4.5316 1.6726 C.3 1 UNCH 0.1435 + 10 C10 2.4257 4.3075 0.2133 C.2 1 UNCH -0.1435 + 11 C11 3.1868 4.9250 -0.8053 C.2 1 UNCH -0.1435 + 12 C12 1.1327 3.1611 -1.5595 C.2 1 UNCH 0.0000 + 13 C13 1.4242 3.4311 -0.2240 C.2 1 UNCH 0.1400 + 14 N21 -1.1904 1.1691 0.4066 N.2 1 UNCH 0.9600 + 15 O22 -1.9295 0.5208 -0.3472 O.3 1 UNCH -0.5200 + 16 O23 -1.2237 1.1526 1.6433 O.2 1 UNCH -0.5200 + 17 H13 -0.4431 1.7877 -2.4025 H 1 UNCH 0.1500 + 18 H14 1.6933 3.6248 -3.6075 H 1 UNCH 0.1500 + 19 H15 3.4899 5.1801 -2.9326 H 1 UNCH 0.1500 + 20 H16 5.1426 5.7586 -1.1163 H 1 UNCH 0.0000 + 21 H26 3.8909 6.9243 -0.6597 H 1 UNCH 0.0000 + 22 H17 5.3563 4.9346 1.1352 H 1 UNCH 0.0000 + 23 H27 5.3731 6.6956 1.2261 H 1 UNCH 0.0000 + 24 H18 3.8827 5.7918 2.9754 H 1 UNCH 0.0000 + 25 H28 2.9272 6.6810 1.7889 H 1 UNCH 0.0000 + 26 H19 1.7726 4.6037 2.2323 H 1 UNCH 0.0000 + 27 H29 3.2521 3.6539 2.0498 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 13 1 + 3 2 3 2 + 4 2 14 1 + 5 3 12 1 + 6 3 17 1 + 7 4 5 2 + 8 4 12 1 + 9 4 18 1 + 10 5 11 1 + 11 5 19 1 + 12 6 7 1 + 13 6 11 1 + 14 6 20 1 + 15 6 21 1 + 16 7 8 1 + 17 7 22 1 + 18 7 23 1 + 19 8 9 1 + 20 8 24 1 + 21 8 25 1 + 22 9 10 1 + 23 9 26 1 + 24 9 27 1 + 25 10 11 2 + 26 10 13 1 + 27 12 13 2 + 28 14 15 1 + 29 14 16 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-NITRO-6,7,8,9-TETRAHYDRONAPHTHO(1,2-B)FURAN (MUTAGENIC AG +@MOLECULE +FUCMIZ + 13 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.8016 10.3139 2.4150 CL 1 FUCM -0.3701 + 2 CL2 -0.4016 10.0818 1.8145 CL 1 FUCM -0.3701 + 3 SI1 1.2269 9.0173 2.4334 SI 1 FUCM 1.2872 + 4 N1 0.9563 8.3678 4.0053 N.3 1 FUCM -0.8870 + 5 C1 0.0922 7.1926 4.1746 C.3 1 FUCM 0.2700 + 6 C2 0.7665 9.2532 5.1621 C.3 1 FUCM 0.2700 + 7 H11 -0.9684 7.4516 4.0702 H 1 FUCM 0.0000 + 8 H12 0.2390 6.7303 5.1581 H 1 FUCM 0.0000 + 9 H21 0.8799 8.7030 6.1040 H 1 FUCM 0.0000 + 10 H22 1.5189 10.0503 5.1909 H 1 FUCM 0.0000 + 11 H23 -0.2254 9.7208 5.1551 H 1 FUCM 0.0000 + 12 H1 1.4819 7.9148 1.4776 H 1 FUCM -0.2000 + 13 H2 0.3274 6.4135 3.4389 H 1 FUCM 0.0000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 3 12 1 + 4 3 4 1 + 5 4 6 1 + 6 4 5 1 + 7 5 13 1 + 8 5 8 1 + 9 5 7 1 + 10 6 11 1 + 11 6 10 1 + 12 6 9 1 +@SUBSTRUCTURE + 1 FUCM 1 +@COMMENT +COMMENT DICHLORO(DIMETHYLAMINO)SILANE (AT 94 DEG.K) +@MOLECULE +FUCMUL + 10 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8343 1.6737 0.9612 S.3 1 UNCH -0.1090 + 2 N1 -0.6751 4.0260 1.4873 N.2 1 UNCH -0.6371 + 3 C1 -0.0178 3.1566 0.6684 C.2 1 UNCH 0.3680 + 4 C2 1.1482 1.6028 -0.7395 C.2 1 UNCH 0.2281 + 5 H2 1.7138 0.7797 -1.1588 H 1 UNCH 0.1500 + 6 C1B 0.0177 3.4494 -0.6683 C.2 1 UNCH 0.3680 + 7 C2B -1.1483 5.0032 0.7396 C.2 1 UNCH 0.2281 + 8 N1B 0.6750 2.5800 -1.4872 N.2 1 UNCH -0.6371 + 9 S1B -0.8344 4.9323 -0.9611 S.3 1 UNCH -0.1090 + 10 H2B -1.7139 5.8263 1.1589 H 1 UNCH 0.1500 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 2 3 1 + 4 2 7 2 + 5 3 6 2 + 6 4 5 1 + 7 4 8 2 + 8 6 8 1 + 9 6 9 1 + 10 7 9 1 + 11 7 10 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT THIAZOLO(5,4-D)THIAZOLE +@MOLECULE +FUCTIG01 + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.0035 1.2655 1.3334 O.2 1 FUCT -0.6867 + 2 O2 5.1570 3.0749 0.5343 O.3 1 FUCT -0.6867 + 3 O3 7.2750 2.9431 0.8889 O.3 1 FUCT -0.6867 + 4 N1 6.1452 2.4278 0.9189 N.2 1 FUCT 1.0600 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 4 1 +@SUBSTRUCTURE + 1 FUCT 1 +@COMMENT +COMMENT (TRUNCATED TO NITRATE ANION) +@MOLECULE +FUCWIJ + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.2819 -0.5120 2.0686 N.3 1 UNCH -0.4691 + 2 C2 0.4186 -1.8509 1.7021 C.2 1 UNCH 0.4400 + 3 N3 0.3131 -2.8999 2.4753 N.2 1 UNCH -0.5760 + 4 C4 0.0475 -2.5235 3.7549 C.2 1 UNCH -0.0256 + 5 C5 -0.1117 -1.2460 4.2568 C.2 1 UNCH 0.1412 + 6 C6 0.0113 -0.1036 3.3707 C.2 1 UNCH 0.5860 + 7 N7 -0.3897 -1.2516 5.5987 N.2 1 UNCH -0.5653 + 8 C8 -0.3799 -2.5298 5.9202 C.2 1 UNCH 0.0365 + 9 N9 -0.1295 -3.3409 4.8370 N.3 1 UNCH 0.0476 + 10 C1 0.4521 0.5334 1.0695 C.3 1 UNCH 0.3691 + 11 N6 -0.1320 1.0947 3.8296 N.2 1 UNCH -0.8500 + 12 C1_ -0.1096 -4.7890 4.8800 C.3 1 UNCH 0.5356 + 13 C2_ -1.2173 -5.4539 4.0634 C.3 1 UNCH 0.2800 + 14 C3_ -0.6040 -6.8267 3.8407 C.3 1 UNCH 0.2800 + 15 C4_ 0.8912 -6.5315 3.6961 C.3 1 UNCH 0.2800 + 16 C5_ 1.3517 -6.4117 2.2417 C.3 1 UNCH 0.2800 + 17 O4_ 1.1453 -5.2689 4.3652 O.3 1 UNCH -0.5600 + 18 O2_ -2.4622 -5.5665 4.7611 O.3 1 UNCH -0.6800 + 19 O3_ -0.8257 -7.6250 5.0169 O.3 1 UNCH -0.6800 + 20 O5_ 0.5411 -5.5051 1.5016 O.3 1 UNCH -0.6800 + 21 H21 0.6379 -1.9981 0.6309 H 1 UNCH 0.0600 + 22 H81 -0.5497 -2.9244 6.9147 H 1 UNCH 0.1500 + 23 H61 -0.3223 1.0110 4.8422 H 1 UNCH 0.4000 + 24 H1_ -0.1727 -5.0837 5.9355 H 1 UNCH 0.0000 + 25 H2_ -1.3979 -4.9577 3.1051 H 1 UNCH 0.0000 + 26 H3_ -1.0390 -7.3712 2.9979 H 1 UNCH 0.0000 + 27 H4_ 1.4996 -7.2887 4.2031 H 1 UNCH 0.0000 + 28 H5_ 1.2945 -7.3855 1.7459 H 1 UNCH 0.0000 + 29 H51_ 2.3854 -6.0548 2.1884 H 1 UNCH 0.0000 + 30 H1 1.3236 1.1518 1.3100 H 1 UNCH 0.0000 + 31 H2 -0.4348 1.1751 1.0289 H 1 UNCH 0.0000 + 32 H3 0.6037 0.1238 0.0651 H 1 UNCH 0.0000 + 33 H22 -2.8988 -4.6953 4.7074 H 1 UNCH 0.4000 + 34 H32 -1.7625 -7.4662 5.2581 H 1 UNCH 0.4000 + 35 H52 0.6846 -4.6139 1.8929 H 1 UNCH 0.4000 +@BOND + 1 1 2 am + 2 1 6 am + 3 1 10 1 + 4 2 3 2 + 5 2 21 1 + 6 3 4 1 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 7 1 + 11 6 11 2 + 12 7 8 2 + 13 8 9 am + 14 8 22 1 + 15 9 12 1 + 16 10 30 1 + 17 10 31 1 + 18 10 32 1 + 19 11 23 1 + 20 12 13 1 + 21 12 17 1 + 22 12 24 1 + 23 13 14 1 + 24 13 18 1 + 25 13 25 1 + 26 14 15 1 + 27 14 19 1 + 28 14 26 1 + 29 15 16 1 + 30 15 17 1 + 31 15 27 1 + 32 16 20 1 + 33 16 28 1 + 34 16 29 1 + 35 18 33 1 + 36 19 34 1 + 37 20 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-6--DIDEHYDRO-1,6-DIHYDRO-1-METHYLADENOSINE TRIHYDRATE +@MOLECULE +FUCWOP + 25 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.2106 3.1271 3.1369 N.2 1 FUCW -0.6200 + 2 C2 3.5531 2.9399 4.4207 C.2 1 FUCW 0.7200 + 3 N2 4.3123 3.9168 5.0119 N.3 1 FUCW -0.9000 + 4 N3 3.2255 1.8885 5.1761 N.2 1 FUCW -0.5670 + 5 C4 2.4693 0.9946 4.5346 C.2 1 FUCW 0.1054 + 6 C5 2.0273 1.0587 3.2273 C.2 1 FUCW 0.2272 + 7 C6 2.4353 2.1953 2.5275 C.2 1 FUCW 0.6710 + 8 N7 1.2643 -0.0507 2.9325 N.2 1 FUCW -0.5653 + 9 C8 1.2479 -0.7664 4.0399 C.2 1 FUCW 0.0365 + 10 N9 1.9678 -0.1703 5.0402 N.3 1 FUCW 0.0332 + 11 N11 2.0779 2.4737 1.1469 N.2 1 FUCW -0.0830 + 12 C12 1.3671 1.5941 0.3966 C.2 1 FUCW 0.2110 + 13 C13 1.0309 1.8805 -0.9255 C.2 1 FUCW -0.1500 + 14 C14 1.4258 3.0818 -1.4911 C.2 1 FUCW -0.1500 + 15 C15 2.1516 3.9765 -0.7229 C.2 1 FUCW -0.1500 + 16 C16 2.4674 3.6533 0.5938 C.2 1 FUCW 0.2110 + 17 H21 4.7681 3.5997 5.8584 H 1 FUCW 0.4000 + 18 H22 4.8587 4.4760 4.3747 H 1 FUCW 0.4000 + 19 H8 0.7388 -1.7132 4.1815 H 1 FUCW 0.1500 + 20 H9 2.1045 -0.5143 5.9816 H 1 FUCW 0.2700 + 21 H12 1.0576 0.6468 0.8221 H 1 FUCW 0.1500 + 22 H13 0.4608 1.1610 -1.5105 H 1 FUCW 0.1500 + 23 H14 1.1694 3.3184 -2.5227 H 1 FUCW 0.1500 + 24 H15 2.4719 4.9274 -1.1442 H 1 FUCW 0.1500 + 25 H16 3.0322 4.3556 1.2023 H 1 FUCW 0.1500 +@BOND + 1 1 7 1 + 2 1 2 2 + 3 2 4 am + 4 2 3 am + 5 3 18 1 + 6 3 17 1 + 7 4 5 2 + 8 5 10 am + 9 5 6 1 + 10 6 8 1 + 11 6 7 2 + 12 7 11 1 + 13 8 9 2 + 14 9 19 1 + 15 9 10 am + 16 10 20 1 + 17 11 16 2 + 18 11 12 1 + 19 12 21 1 + 20 12 13 2 + 21 13 22 1 + 22 13 14 1 + 23 14 23 1 + 24 14 15 2 + 25 15 24 1 + 26 15 16 1 + 27 16 25 1 +@SUBSTRUCTURE + 1 FUCW 1 +@COMMENT +COMMENT N-(2-AMINO-6-PURINYL)PYRIDINIUM CHLORIDE DIHYDRATE +@MOLECULE +FUDPOJ + 8 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.7374 0.2698 1.9728 O.2 1 UNCH -0.5700 + 2 O2 0.8399 -1.8010 3.4104 O.3 1 UNCH -0.5267 + 3 C1 0.4730 0.2119 1.9746 C.2 1 UNCH 0.5412 + 4 C2 1.3428 -0.7791 2.6388 C.2 1 UNCH 0.0911 + 5 H2 -0.1317 -1.6989 3.4081 H 1 UNCH 0.4500 + 6 C2G 1.3449 -0.7786 1.3123 C.2 1 UNCH 0.0911 + 7 O2G 0.8443 -1.7999 0.5384 O.3 1 UNCH -0.5267 + 8 H2G -0.1274 -1.6978 0.5378 H 1 UNCH 0.4500 +@BOND + 1 1 3 2 + 2 2 4 1 + 3 2 5 1 + 4 3 4 1 + 5 3 6 1 + 6 4 6 2 + 7 6 7 1 + 8 7 8 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3-DIHYDROXYCYCLOPROPEN-1-ONE (AT 135 DEG.K) DELTIC ACID +@MOLECULE +FUDXUX + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.5784 1.1856 1.9529 N.1 1 CHGB -0.5571 + 2 N2 1.1344 4.5865 1.7378 N.3 1 CHGB -0.9060 + 3 C1 1.8951 2.2489 1.6194 C.1 1 CHGB 0.3571 + 4 C2 2.2041 3.6364 1.2504 C.3 1 CHGB 0.7030 + 5 C3 1.0652 4.7550 3.2174 C.3 1 CHGB 0.5030 + 6 H28 1.2862 5.5067 1.3048 H 1 CHGB 0.4500 + 7 H29 0.2179 4.2600 1.3971 H 1 CHGB 0.4500 + 8 H21 2.2340 3.7530 0.1630 H 1 CHGB 0.0000 + 9 H22 3.1549 3.9775 1.6704 H 1 CHGB 0.0000 + 10 H31 0.2930 5.5001 3.4220 H 1 CHGB 0.0000 + 11 H32 0.7969 3.7978 3.6693 H 1 CHGB 0.0000 + 12 H33 2.0380 5.1065 3.5687 H 1 CHGB 0.0000 +@BOND + 1 1 3 3 + 2 2 4 1 + 3 2 5 1 + 4 2 6 1 + 5 2 7 1 + 6 3 4 1 + 7 4 8 1 + 8 4 9 1 + 9 5 10 1 + 10 5 11 1 + 11 5 12 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT N-METHYLAMINOACETONITRILE HYDROCHLORIDE (CYANOMETHYL)METHYL +@MOLECULE +FUFDIT + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 6.5100 0.5188 1.4080 N.3 1 UNCH -0.7301 + 2 C2 5.7471 -0.4972 1.8799 C.2 1 UNCH 0.6900 + 3 N3 5.5056 -0.5230 3.2187 N.3 1 UNCH -0.4900 + 4 C4 5.7081 0.5342 4.0693 C.2 1 UNCH 0.5690 + 5 C5 6.8400 1.4966 3.6858 C.3 1 UNCH 0.3410 + 6 C6 6.7579 1.7186 2.1641 C.3 1 UNCH 0.5801 + 7 O2 5.2765 -1.3349 1.1192 O.2 1 UNCH -0.5700 + 8 C7 8.1690 0.8346 4.0680 C.3 1 UNCH 0.0000 + 9 O4 5.0119 0.6758 5.0737 O.2 1 UNCH -0.5700 + 10 O5 6.7775 2.7365 4.3924 O.3 1 UNCH -0.6800 + 11 O6 5.7898 2.7181 1.7893 O.3 1 UNCH -0.2800 + 12 O8 4.4632 2.2388 2.1582 O.3 1 UNCH -0.4000 + 13 H1 6.5755 0.5644 0.4001 H 1 UNCH 0.3700 + 14 H3 4.7771 -1.1661 3.4956 H 1 UNCH 0.3700 + 15 H6 7.7137 2.1171 1.8058 H 1 UNCH 0.0000 + 16 H71 8.3217 -0.1262 3.5657 H 1 UNCH 0.0000 + 17 H72 8.2119 0.6564 5.1492 H 1 UNCH 0.0000 + 18 H73 9.0135 1.4903 3.8268 H 1 UNCH 0.0000 + 19 H5 5.8562 3.0520 4.3002 H 1 UNCH 0.4000 + 20 H8 4.1138 2.1613 1.2498 H 1 UNCH 0.4000 +@BOND + 1 1 2 am + 2 1 6 1 + 3 1 13 1 + 4 2 3 am + 5 2 7 2 + 6 3 4 am + 7 3 14 1 + 8 4 5 1 + 9 4 9 2 + 10 5 6 1 + 11 5 8 1 + 12 5 10 1 + 13 6 11 1 + 14 6 15 1 + 15 8 16 1 + 16 8 17 1 + 17 8 18 1 + 18 10 19 1 + 19 11 12 1 + 20 12 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6-HYDROPEROXY-5-HYDROXYTHYMINE HEMIHYDRATE 5,6-DIHYDRO-6-HY +@MOLECULE +FUGWIN + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 8.4542 16.9325 -3.4747 O.3 1 FUGW -0.5600 + 2 O2 8.8923 19.7795 -2.1545 O.3 1 FUGW -0.6800 + 3 N1 6.6918 19.2057 -5.7327 N.2 1 FUGW -0.7068 + 4 O3 6.7714 15.0810 -2.2503 O.3 1 FUGW -0.6800 + 5 N2 4.2178 15.3840 -6.0617 N.2 1 FUGW -0.6200 + 6 N3 5.9910 15.8530 -4.5518 N.2 1 FUGW -0.1250 + 7 N4 5.6655 18.7347 -6.4745 N.3 1 FUGW 0.2996 + 8 N5 3.4630 16.9036 -7.6675 N.3 1 FUGW -0.9000 + 9 C1 5.0457 15.0660 -5.0459 C.2 1 FUGW 0.5210 + 10 C2 5.2997 17.4541 -6.1584 C.2 1 FUGW -0.1516 + 11 C3 6.1393 17.0927 -5.1205 C.2 1 FUGW 0.3070 + 12 C4 8.3789 16.9159 -2.0341 C.3 1 FUGW 0.2800 + 13 C5 7.7544 19.0868 -2.6705 C.3 1 FUGW 0.2800 + 14 C6 4.3267 16.5953 -6.6461 C.2 1 FUGW 0.4100 + 15 C7 6.9941 18.1930 -4.9087 C.2 1 FUGW 0.1078 + 16 C8 8.1188 18.2756 -3.9250 C.3 1 FUGW 0.4610 + 17 C9 7.9729 15.5180 -1.5723 C.3 1 FUGW 0.2800 + 18 C10 7.3836 18.0074 -1.6759 C.3 1 FUGW 0.0000 + 19 H1 9.3741 17.1565 -1.6406 H 1 FUGW 0.0000 + 20 H2 6.3538 17.6774 -1.8543 H 1 FUGW 0.0000 + 21 H3 4.9264 14.0896 -4.5880 H 1 FUGW 0.1500 + 22 H4 6.9533 19.8181 -2.8163 H 1 FUGW 0.0000 + 23 H5 8.7535 14.7936 -1.8245 H 1 FUGW 0.0000 + 24 H6 9.0103 18.6805 -4.4178 H 1 FUGW 0.0000 + 25 H7 7.4822 18.3160 -0.6309 H 1 FUGW 0.0000 + 26 H8 7.7959 15.5004 -0.4922 H 1 FUGW 0.0000 + 27 H9 2.9256 16.1053 -7.9958 H 1 FUGW 0.4000 + 28 H10 3.7409 17.5551 -8.3879 H 1 FUGW 0.4000 + 29 H11 6.5637 15.5538 -3.7497 H 1 FUGW 0.4570 + 30 H12 5.2555 19.3459 -7.1762 H 1 FUGW 0.2700 + 31 H13 6.4637 14.3301 -1.6940 H 1 FUGW 0.4000 + 32 H14 9.0596 20.5543 -2.7234 H 1 FUGW 0.4000 +@BOND + 1 1 16 1 + 2 1 12 1 + 3 2 32 1 + 4 2 13 1 + 5 3 15 2 + 6 3 7 1 + 7 4 31 1 + 8 4 17 1 + 9 5 14 1 + 10 5 9 2 + 11 6 29 1 + 12 6 11 2 + 13 6 9 am + 14 7 30 1 + 15 7 10 1 + 16 8 28 1 + 17 8 27 1 + 18 8 14 1 + 19 9 21 1 + 20 10 14 2 + 21 10 11 1 + 22 11 15 1 + 23 12 19 1 + 24 12 18 1 + 25 12 17 1 + 26 13 22 1 + 27 13 18 1 + 28 13 16 1 + 29 15 16 1 + 30 16 24 1 + 31 17 26 1 + 32 17 23 1 + 33 18 25 1 + 34 18 20 1 +@SUBSTRUCTURE + 1 FUGW 1 +@COMMENT +COMMENT (S)-1-C-(7-AMINO-1H-PYRAZOLO(4,3-D)PYRIMIDIN-3-YL)-1,4-ANHY +@MOLECULE +FUHFAP + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.5343 1.3693 2.1428 N.3 1 FUHF -0.5600 + 2 O1 -0.7691 0.7250 2.2224 O.3 1 FUHF -0.1800 + 3 C1 -1.7573 1.7417 2.3431 C.3 1 FUHF 0.2800 + 4 H1 -1.7456 2.3947 1.4644 H 1 FUHF 0.0000 + 5 H2 -2.7376 1.2615 2.4067 H 1 FUHF 0.0000 + 6 H3 -1.5963 2.3274 3.2539 H 1 FUHF 0.0000 + 7 O1B 1.1745 0.8948 0.9241 O.3 1 FUHF -0.1800 + 8 C1B 1.5344 2.0294 0.1443 C.3 1 FUHF 0.2800 + 9 H1B 2.2405 2.6628 0.6909 H 1 FUHF 0.0000 + 10 H2B 2.0188 1.6772 -0.7705 H 1 FUHF 0.0000 + 11 H3B 0.6440 2.6036 -0.1318 H 1 FUHF 0.0000 + 12 H4 1.0555 0.8514 2.8553 H 1 FUHF 0.3600 +@BOND + 1 1 12 1 + 2 1 7 1 + 3 1 2 1 + 4 2 3 1 + 5 3 6 1 + 6 3 5 1 + 7 3 4 1 + 8 7 8 1 + 9 8 11 1 + 10 8 10 1 + 11 8 9 1 +@SUBSTRUCTURE + 1 FUHF 1 +@COMMENT +COMMENT N,N-DIMETHOXYAMINE (AT -120 DEG.C) +@MOLECULE +FUHSEG + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.4803 4.6745 2.5616 O.3 1 UNCH -0.5200 + 2 O2 0.3153 5.0071 2.6290 O.2 1 UNCH -0.5200 + 3 N1 2.9189 1.4497 1.4574 N.1 1 UNCH -0.5571 + 4 N2 1.3194 4.3948 2.2358 N.2 1 UNCH 0.8356 + 5 C1 2.1198 2.2914 1.4135 C.1 1 UNCH 0.4921 + 6 C2 1.1210 3.2865 1.3231 C.2 1 UNCH 0.2694 + 7 C3 0.0281 3.2952 0.5418 C.2 1 UNCH -0.1784 + 8 C4 -0.3316 2.2346 -0.4074 C.2 1 UNCH 0.0284 + 9 C5 0.5275 1.8453 -1.4427 C.2 1 UNCH -0.1500 + 10 C6 0.1438 0.8426 -2.3362 C.2 1 UNCH -0.1500 + 11 C7 -1.1019 0.2314 -2.2091 C.2 1 UNCH -0.1500 + 12 C8 -1.9688 0.6244 -1.1917 C.2 1 UNCH -0.1500 + 13 C9 -1.5877 1.6258 -0.2963 C.2 1 UNCH -0.1500 + 14 H3 -0.6926 4.1110 0.5892 H 1 UNCH 0.1500 + 15 H5 1.5001 2.3136 -1.5772 H 1 UNCH 0.1500 + 16 H6 0.8176 0.5392 -3.1341 H 1 UNCH 0.1500 + 17 H7 -1.3982 -0.5494 -2.9055 H 1 UNCH 0.1500 + 18 H8 -2.9427 0.1505 -1.0957 H 1 UNCH 0.1500 + 19 H9 -2.2814 1.9180 0.4897 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 2 4 2 + 3 3 5 3 + 4 4 6 1 + 5 5 6 1 + 6 6 7 2 + 7 7 8 1 + 8 7 14 1 + 9 8 9 2 + 10 8 13 1 + 11 9 10 1 + 12 9 15 1 + 13 10 11 2 + 14 10 16 1 + 15 11 12 1 + 16 11 17 1 + 17 12 13 2 + 18 12 18 1 + 19 13 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-CYANO-1-NITRO-2-PHENYLETHENE +@MOLECULE +FULRAF + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.2335 4.8538 8.8573 N.3 1 FULR 0.3140 + 2 N2 4.3052 4.5460 7.9173 N.2 1 FULR -0.7068 + 3 C3 4.9608 3.6535 7.1738 C.2 1 FULR 0.4400 + 4 N4 6.2223 3.3461 7.6035 N.2 1 FULR -0.5653 + 5 C5 6.3762 4.1108 8.6621 C.2 1 FULR 0.2705 + 6 C6 4.3310 3.1051 5.9593 C.2 1 FULR 0.7848 + 7 N7 3.1625 3.6016 5.6055 N.2 1 FULR -0.7544 + 8 N8 4.9843 2.1680 5.3085 N.3 1 FULR -0.7544 + 9 N9 7.4787 4.2143 9.4185 N.3 1 FULR -0.8840 + 10 C1_ 5.0011 5.9501 9.7923 C.3 1 FULR 0.5356 + 11 C2_ 5.4900 7.2878 9.2387 C.3 1 FULR 0.2800 + 12 C3_ 4.2631 7.7980 8.5004 C.3 1 FULR 0.2800 + 13 C4_ 3.1106 7.2908 9.3681 C.3 1 FULR 0.2800 + 14 C5_ 1.8352 6.9842 8.5679 C.3 1 FULR 0.2800 + 15 O1_ 3.5676 6.0757 10.0091 O.3 1 FULR -0.5600 + 16 O2_ 5.8205 8.1850 10.3098 O.3 1 FULR -0.6800 + 17 O3_ 4.2826 9.2126 8.3590 O.3 1 FULR -0.6800 + 18 O5_ 2.0417 5.8898 7.6601 O.3 1 FULR -0.6800 + 19 H71 2.6473 3.3006 4.7934 H 1 FULR 0.4500 + 20 H72 2.7620 4.3456 6.1868 H 1 FULR 0.4500 + 21 H81 5.8881 1.8781 5.6781 H 1 FULR 0.4500 + 22 H82 4.6334 1.7390 4.4659 H 1 FULR 0.4500 + 23 H91 8.2020 3.5131 9.2615 H 1 FULR 0.4000 + 24 H92 7.4354 4.4744 10.4013 H 1 FULR 0.4000 + 25 H1_ 5.4606 5.6810 10.7483 H 1 FULR 0.0000 + 26 H2_ 6.3737 7.2062 8.5976 H 1 FULR 0.0000 + 27 H3_ 4.2262 7.3588 7.4976 H 1 FULR 0.0000 + 28 H4_ 2.8676 8.0143 10.1554 H 1 FULR 0.0000 + 29 H51_ 1.5024 7.8542 7.9947 H 1 FULR 0.0000 + 30 H52_ 1.0321 6.6804 9.2469 H 1 FULR 0.0000 + 31 H21_ 6.2446 8.9652 9.9011 H 1 FULR 0.4000 + 32 H31_ 4.2295 9.6057 9.2510 H 1 FULR 0.4000 + 33 H50 2.5614 5.2463 8.1929 H 1 FULR 0.4000 +@BOND + 1 1 10 1 + 2 1 5 am + 3 1 2 1 + 4 2 3 2 + 5 3 6 1 + 6 3 4 am + 7 4 5 2 + 8 5 9 am + 9 6 8 am + 10 6 7 2 + 11 7 20 1 + 12 7 19 1 + 13 8 22 1 + 14 8 21 1 + 15 9 24 1 + 16 9 23 1 + 17 10 25 1 + 18 10 15 1 + 19 10 11 1 + 20 11 26 1 + 21 11 16 1 + 22 11 12 1 + 23 12 27 1 + 24 12 17 1 + 25 12 13 1 + 26 13 28 1 + 27 13 15 1 + 28 13 14 1 + 29 14 30 1 + 30 14 29 1 + 31 14 18 1 + 32 16 31 1 + 33 17 32 1 + 34 18 33 1 +@SUBSTRUCTURE + 1 FULR 1 +@COMMENT +COMMENT 5-AMINO-1-BETA-D-RIBOFURANOSYL-1,2,4-TRIAZOLE-3-CARBOXAMIDI +@MOLECULE +FUNSIQ + 19 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 12.1970 1.5314 3.3090 S.3 1 FUNS 1.3448 + 2 O1 10.7916 3.6871 1.5975 O.2 1 FUNS -0.5700 + 3 O2 9.1554 3.9561 3.1574 O.3 1 FUNS -0.4300 + 4 O3 9.0517 0.6176 4.2725 O.3 1 FUNS -0.5200 + 5 O4 9.2752 0.8174 2.1072 O.2 1 FUNS -0.5200 + 6 O5 12.3007 1.0566 1.9341 O.3 1 FUNS -0.8167 + 7 O6 12.2796 0.4719 4.3162 O.3 1 FUNS -0.8167 + 8 O7 13.0440 2.6835 3.6283 O.3 1 FUNS -0.8167 + 9 N1 9.6124 1.0975 3.2695 N.2 1 FUNS 0.7998 + 10 C1 10.2565 3.3054 2.6284 C.2 1 FUNS 0.6590 + 11 C2 10.5979 2.1611 3.5083 C.3 1 FUNS 0.4064 + 12 C3 8.7104 5.0806 2.3885 C.3 1 FUNS 0.2800 + 13 C4 7.5003 5.6763 3.0813 C.3 1 FUNS 0.0000 + 14 H1 10.5142 2.4812 4.5543 H 1 FUNS 0.0000 + 15 H2 8.4341 4.7537 1.3798 H 1 FUNS 0.0000 + 16 H3 9.5087 5.8289 2.3315 H 1 FUNS 0.0000 + 17 H4 7.1218 6.5416 2.5302 H 1 FUNS 0.0000 + 18 H5 7.7541 5.9886 4.0997 H 1 FUNS 0.0000 + 19 H6 6.7004 4.9333 3.1663 H 1 FUNS 0.0000 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 1 8 1 + 4 1 11 1 + 5 2 10 2 + 6 3 10 1 + 7 3 12 1 + 8 4 9 1 + 9 5 9 2 + 10 9 11 1 + 11 10 11 1 + 12 11 14 1 + 13 12 13 1 + 14 12 15 1 + 15 12 16 1 + 16 13 17 1 + 17 13 18 1 + 18 13 19 1 +@SUBSTRUCTURE + 1 FUNS 1 +@COMMENT +COMMENT SODIUM ETHYL NITROSULFOACETATE MONOHYDRATE +@MOLECULE +FUNXOB + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 11.1267 0.1017 1.4270 O.3 1 UNCH -0.2800 + 2 C1 9.9583 0.7921 1.4785 C.2 1 UNCH -0.0100 + 3 C2 10.1311 2.0923 1.0448 C.2 1 UNCH -0.0860 + 4 C3 11.5214 2.1969 0.7396 C.2 1 UNCH -0.1500 + 5 C4 12.0743 0.9622 0.9784 C.2 1 UNCH -0.0100 + 6 C5 9.1383 3.1530 0.9637 C.2 1 UNCH 0.5698 + 7 O2 9.4647 4.3346 0.8815 O.2 1 UNCH -0.5700 + 8 C6 7.6907 2.8244 0.9945 C.2 1 UNCH 0.0862 + 9 C7 6.8410 3.6263 1.7654 C.2 1 UNCH -0.1500 + 10 C8 5.4675 3.3615 1.8098 C.2 1 UNCH -0.1500 + 11 C9 4.9346 2.3030 1.0727 C.2 1 UNCH 0.0825 + 12 C10 5.7840 1.5191 0.2855 C.2 1 UNCH -0.1500 + 13 C11 7.1562 1.7787 0.2359 C.2 1 UNCH -0.1500 + 14 O3 3.6182 1.9367 1.0276 O.3 1 UNCH -0.3625 + 15 C12 2.7063 2.7138 1.7941 C.3 1 UNCH 0.2800 + 16 H1 9.1128 0.2270 1.8474 H 1 UNCH 0.1500 + 17 H2 12.0433 3.0766 0.3869 H 1 UNCH 0.1500 + 18 H3 13.0731 0.5572 0.8910 H 1 UNCH 0.1500 + 19 H4 7.2459 4.4620 2.3337 H 1 UNCH 0.1500 + 20 H5 4.8445 4.0036 2.4240 H 1 UNCH 0.1500 + 21 H6 5.3681 0.7039 -0.3030 H 1 UNCH 0.1500 + 22 H7 7.7849 1.1717 -0.4105 H 1 UNCH 0.1500 + 23 H8 2.9381 2.6538 2.8626 H 1 UNCH 0.0000 + 24 H9 2.6877 3.7533 1.4505 H 1 UNCH 0.0000 + 25 H10 1.7055 2.2965 1.6467 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 16 1 + 5 3 4 1 + 6 3 6 1 + 7 4 5 2 + 8 4 17 1 + 9 5 18 1 + 10 6 7 2 + 11 6 8 1 + 12 8 9 2 + 13 8 13 1 + 14 9 10 1 + 15 9 19 1 + 16 10 11 2 + 17 10 20 1 + 18 11 12 1 + 19 11 14 1 + 20 12 13 2 + 21 12 21 1 + 22 13 22 1 + 23 14 15 1 + 24 15 23 1 + 25 15 24 1 + 26 15 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-(4-METHOXYBENZOYL)FURAN +@MOLECULE +FUPJUV + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.1080 1.7115 6.0307 N.2 1 FUPJ 1.0910 + 2 O1 2.9804 1.7115 6.9387 O.3 1 FUPJ -0.6330 + 3 N2 2.4263 1.7115 4.7636 N.2 1 FUPJ -0.7940 + 4 N3 1.2448 1.7115 4.0931 N.3 1 FUPJ 0.5606 + 5 C1 0.1858 1.7115 4.9737 C.2 1 FUPJ -0.1516 + 6 C2 -1.2073 1.7115 4.8252 C.2 1 FUPJ -0.1500 + 7 C3 -1.9739 1.7115 5.9991 C.2 1 FUPJ -0.1500 + 8 C4 -1.3761 1.7115 7.2640 C.2 1 FUPJ -0.1500 + 9 C5 0.0156 1.7115 7.4034 C.2 1 FUPJ -0.1500 + 10 C6 0.7696 1.7115 6.2248 C.2 1 FUPJ -0.0820 + 11 C7 1.1973 1.7115 2.6796 C.2 1 FUPJ 0.7290 + 12 O2 0.1316 1.7115 2.0823 O.2 1 FUPJ -0.5700 + 13 O3 2.4514 1.7115 2.1633 O.3 1 FUPJ -0.4300 + 14 C8 2.6602 1.7115 0.7298 C.3 1 FUPJ 0.2800 + 15 C9 4.1859 1.7115 0.5543 C.3 1 FUPJ 0.0000 + 16 C10 2.0908 0.4420 0.0873 C.3 1 FUPJ 0.0000 + 17 H1 -1.6865 1.7115 3.8496 H 1 FUPJ 0.1500 + 18 H2 -3.0604 1.7115 5.9234 H 1 FUPJ 0.1500 + 19 H3 -2.0035 1.7115 8.1536 H 1 FUPJ 0.1500 + 20 H4 0.4849 1.7115 8.3835 H 1 FUPJ 0.1500 + 21 H5 2.3820 0.3631 -0.9656 H 1 FUPJ 0.0000 + 22 H6 2.4430 -0.4519 0.6143 H 1 FUPJ 0.0000 + 23 H7 0.9976 0.4194 0.1278 H 1 FUPJ 0.0000 + 24 H8 4.6334 2.5891 1.0354 H 1 FUPJ 0.0000 + 25 H9 4.4741 1.7115 -0.5021 H 1 FUPJ 0.0000 + 26 C10C 2.0908 2.9810 0.0873 C.3 1 FUPJ 0.0000 + 27 H8C 4.6334 0.8339 1.0354 H 1 FUPJ 0.0000 + 28 H5C 2.3820 3.0599 -0.9656 H 1 FUPJ 0.0000 + 29 H6C 2.4430 3.8749 0.6143 H 1 FUPJ 0.0000 + 30 H7C 0.9976 3.0036 0.1278 H 1 FUPJ 0.0000 +@BOND + 1 1 10 1 + 2 1 3 2 + 3 1 2 1 + 4 3 4 1 + 5 4 11 am + 6 4 5 1 + 7 5 10 1 + 8 5 6 2 + 9 6 17 1 + 10 6 7 1 + 11 7 18 1 + 12 7 8 2 + 13 8 19 1 + 14 8 9 1 + 15 9 20 1 + 16 9 10 2 + 17 11 13 1 + 18 11 12 2 + 19 13 14 1 + 20 14 26 1 + 21 14 16 1 + 22 14 15 1 + 23 15 27 1 + 24 15 25 1 + 25 15 24 1 + 26 16 23 1 + 27 16 22 1 + 28 16 21 1 + 29 26 30 1 + 30 26 29 1 + 31 26 28 1 +@SUBSTRUCTURE + 1 FUPJ 1 +@COMMENT +COMMENT 1H-BENZOTRIAZOLE-1-CARBOXYLIC ACID 1,1-DIMETHYLETHYL ESTER +@MOLECULE +FUPKIK + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.5471 3.2248 0.0738 N.2 1 UNCH -0.2272 + 2 N2 2.4104 2.5409 0.1434 N.2 1 UNCH -0.4180 + 3 N3 2.6851 1.3892 0.7723 N.3 1 UNCH 0.7086 + 4 C1 4.7752 0.2326 1.6466 C.2 1 UNCH -0.1500 + 5 C2 6.1446 0.4887 1.7828 C.2 1 UNCH -0.1500 + 6 C3 6.7068 1.6946 1.3517 C.2 1 UNCH -0.1500 + 7 C4 5.9149 2.6908 0.7640 C.2 1 UNCH -0.1500 + 8 C5 4.5419 2.4506 0.6180 C.2 1 UNCH 0.2272 + 9 C6 4.0107 1.2453 1.0610 C.2 1 UNCH -0.1516 + 10 O1 1.7069 0.4318 0.8821 O.3 1 UNCH -0.3227 + 11 S1 0.8284 0.5216 2.2412 S.3 1 UNCH 1.3785 + 12 O2 1.5803 1.1960 3.2786 O.3 1 UNCH -0.6500 + 13 O3 0.2418 -0.7826 2.4741 O.3 1 UNCH -0.6500 + 14 C7 -0.4546 1.6070 1.6538 C.3 1 UNCH 0.1052 + 15 H1 4.3351 -0.6983 1.9897 H 1 UNCH 0.1500 + 16 H2 6.7846 -0.2655 2.2385 H 1 UNCH 0.1500 + 17 H3 7.7748 1.8636 1.4739 H 1 UNCH 0.1500 + 18 H4 6.3499 3.6252 0.4258 H 1 UNCH 0.1500 + 19 H5 -1.2089 1.6887 2.4396 H 1 UNCH 0.0000 + 20 H6 -0.0333 2.5912 1.4472 H 1 UNCH 0.0000 + 21 H7 -0.8997 1.1737 0.7563 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 8 1 + 3 2 3 1 + 4 3 9 1 + 5 3 10 1 + 6 4 5 2 + 7 4 9 1 + 8 4 15 1 + 9 5 6 1 + 10 5 16 1 + 11 6 7 2 + 12 6 17 1 + 13 7 8 1 + 14 7 18 1 + 15 8 9 2 + 16 10 11 1 + 17 11 12 1 + 18 11 13 1 + 19 11 14 1 + 20 14 19 1 + 21 14 20 1 + 22 14 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-((METHYLSULFONYL)OXY)BENZOTRIAZOLE +@MOLECULE +FUPKOQ + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.8431 3.1512 3.7586 N.3 1 FUPK 0.5606 + 2 N2 4.9532 2.7379 2.8247 N.2 1 FUPK -0.7940 + 3 N3 4.1165 1.9559 3.4599 N.2 1 FUPK 1.0910 + 4 C1 4.4307 1.8248 4.7682 C.2 1 FUPK -0.0820 + 5 C2 5.5569 2.5936 4.9843 C.2 1 FUPK -0.1516 + 6 C3 6.1459 2.6741 6.2527 C.2 1 FUPK -0.1500 + 7 C4 5.5417 1.9411 7.2838 C.2 1 FUPK -0.1500 + 8 C5 4.4005 1.1638 7.0582 C.2 1 FUPK -0.1500 + 9 C6 3.8182 1.0894 5.7885 C.2 1 FUPK -0.1500 + 10 O1 3.1509 1.3985 2.8756 O.3 1 FUPK -0.6330 + 11 C7 6.8914 4.0171 3.4359 C.2 1 FUPK 0.5790 + 12 O2 7.7253 4.3753 4.2533 O.2 1 FUPK -0.5700 + 13 C8 6.8669 4.4639 2.0004 C.2 1 FUPK 0.5360 + 14 C9 6.0139 5.5856 1.6315 C.2 1 FUPK 0.1412 + 15 C10 5.8673 6.0929 0.3532 C.2 1 FUPK -0.1100 + 16 S1 4.7614 7.3994 0.3617 S.3 1 FUPK -0.0800 + 17 C11 4.5492 7.1988 2.0517 C.2 1 FUPK 0.4621 + 18 N4 5.2525 6.2390 2.5984 N.2 1 FUPK -0.5653 + 19 N5 3.7271 7.9946 2.7534 N.3 1 FUPK -0.8840 + 20 N6 7.5987 3.9030 1.0778 N.2 1 FUPK -0.5130 + 21 O3 8.3500 2.8406 1.6058 O.3 1 FUPK -0.2170 + 22 C12 9.1228 2.2694 0.5553 C.3 1 FUPK 0.2800 + 23 H1 7.0318 3.2750 6.4424 H 1 FUPK 0.1500 + 24 H2 5.9717 1.9791 8.2837 H 1 FUPK 0.1500 + 25 H3 3.9586 0.6083 7.8835 H 1 FUPK 0.1500 + 26 H4 2.9320 0.4872 5.6080 H 1 FUPK 0.1500 + 27 H5 6.3422 5.7607 -0.5596 H 1 FUPK 0.1500 + 28 H6 3.5049 8.8999 2.3570 H 1 FUPK 0.4000 + 29 H7 3.8879 8.0158 3.7540 H 1 FUPK 0.4000 + 30 H8 8.4660 1.8818 -0.2294 H 1 FUPK 0.0000 + 31 H9 9.7074 1.4426 0.9670 H 1 FUPK 0.0000 + 32 H10 9.8080 3.0153 0.1411 H 1 FUPK 0.0000 +@BOND + 1 1 11 am + 2 1 5 1 + 3 1 2 1 + 4 2 3 2 + 5 3 10 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 + 9 5 6 1 + 10 6 23 1 + 11 6 7 2 + 12 7 24 1 + 13 7 8 1 + 14 8 25 1 + 15 8 9 2 + 16 9 26 1 + 17 11 13 1 + 18 11 12 2 + 19 13 20 2 + 20 13 14 1 + 21 14 18 1 + 22 14 15 2 + 23 15 27 1 + 24 15 16 1 + 25 16 17 1 + 26 17 19 am + 27 17 18 2 + 28 19 29 1 + 29 19 28 1 + 30 20 21 1 + 31 21 22 1 + 32 22 32 1 + 33 22 31 1 + 34 22 30 1 +@SUBSTRUCTURE + 1 FUPK 1 +@COMMENT +COMMENT 1-((2-AMINO-4-THIAZOLYL)(METHOXYIMINO)ACETYL)-1H-BENZOTRIAZ +@MOLECULE +FUPTOZ + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.1640 9.8662 9.3292 O.3 1 UNCH -0.5600 + 2 S1 -0.7392 8.3505 7.0861 S.3 1 UNCH -0.3310 + 3 S2 0.8996 8.0828 9.5953 S.3 1 UNCH -0.3310 + 4 C1 0.5752 7.5604 7.9474 C.2 1 UNCH 0.2020 + 5 C2 1.3111 6.5848 7.3627 C.2 1 UNCH 0.2800 + 6 CL1 1.0343 6.0225 5.7353 CL 1 UNCH -0.1400 + 7 CL2 2.6276 5.7688 8.1641 CL 1 UNCH -0.1400 + 8 C3 0.2645 9.8074 9.5111 C.3 1 UNCH 0.5100 + 9 H1 0.7191 10.2757 8.6278 H 1 UNCH 0.0000 + 10 C4 0.6813 10.6876 10.7432 C.3 1 UNCH 0.8700 + 11 CL3 0.0917 12.3808 10.5149 CL 1 UNCH -0.2900 + 12 CL4 -0.0233 10.0689 12.2770 CL 1 UNCH -0.2900 + 13 CL5 2.4704 10.7815 10.9222 CL 1 UNCH -0.2900 + 14 C5 -1.7887 8.8594 8.5088 C.3 1 UNCH 0.5100 + 15 H2 -1.9273 7.9720 9.1409 H 1 UNCH 0.0000 + 16 C6 -3.2260 9.3320 8.0874 C.3 1 UNCH 0.8700 + 17 CL6 -4.2021 9.7145 9.5597 CL 1 UNCH -0.2900 + 18 CL7 -3.1723 10.8137 7.0708 CL 1 UNCH -0.2900 + 19 CL8 -4.1166 8.0469 7.1945 CL 1 UNCH -0.2900 +@BOND + 1 1 8 1 + 2 1 14 1 + 3 2 4 1 + 4 2 14 1 + 5 3 4 1 + 6 3 8 1 + 7 4 5 2 + 8 5 6 1 + 9 5 7 1 + 10 8 9 1 + 11 8 10 1 + 12 10 11 1 + 13 10 12 1 + 14 10 13 1 + 15 14 15 1 + 16 14 16 1 + 17 16 17 1 + 18 16 18 1 + 19 16 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,6-BIS(TRICHLOROMETHYL)-4-DICHLOROMETHYLENE-1-OXA-3,5-DITH +@MOLECULE +FUPZEV + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.2941 2.2349 -0.4846 O.3 1 UNCH -0.6579 + 2 O2 0.0234 0.6374 2.4003 O.3 1 UNCH -0.4079 + 3 O3 1.9045 1.5885 3.3177 O.2 1 UNCH -0.5700 + 4 C1 -1.5934 1.9432 0.9003 C.3 1 UNCH 0.3739 + 5 C2 -2.6074 0.8553 1.0553 C.2 1 UNCH -0.2542 + 6 C3 -3.7268 1.3340 1.6143 C.2 1 UNCH -0.2882 + 7 C4 -3.6402 2.7857 1.9672 C.3 1 UNCH 0.1382 + 8 C5 -2.1732 3.1487 1.7056 C.3 1 UNCH 0.0000 + 9 C6 -1.0703 2.9389 2.8046 C.3 1 UNCH 0.0000 + 10 C7 -0.3526 1.9248 1.8526 C.3 1 UNCH 0.2579 + 11 C8 1.1861 0.6226 3.1058 C.2 1 UNCH 0.6590 + 12 C9 1.4611 -0.7627 3.6041 C.3 1 UNCH 0.0610 + 13 C10 -2.3596 -0.5251 0.5633 C.3 1 UNCH 0.1382 + 14 C11 -0.2579 4.2191 3.0319 C.3 1 UNCH 0.0000 + 15 C12 -1.5303 2.3634 4.1462 C.3 1 UNCH 0.0000 + 16 H1 -2.1652 2.3464 -0.9025 H 1 UNCH 0.4000 + 17 H2 -4.6153 0.7445 1.8016 H 1 UNCH 0.1500 + 18 H3 -3.9360 2.9737 3.0023 H 1 UNCH 0.0000 + 19 H4 -4.3046 3.3576 1.3102 H 1 UNCH 0.0000 + 20 H5 -2.0908 4.1101 1.1807 H 1 UNCH 0.0000 + 21 H6 0.5083 2.3665 1.3276 H 1 UNCH 0.0000 + 22 H7 1.5383 -1.4522 2.7597 H 1 UNCH 0.0000 + 23 H8 2.4104 -0.7709 4.1472 H 1 UNCH 0.0000 + 24 H9 0.6657 -1.0753 4.2853 H 1 UNCH 0.0000 + 25 H10 -3.2558 -1.1475 0.6557 H 1 UNCH 0.0000 + 26 H11 -1.5602 -1.0072 1.1322 H 1 UNCH 0.0000 + 27 H12 -2.0719 -0.5108 -0.4925 H 1 UNCH 0.0000 + 28 H13 0.6134 4.0250 3.6660 H 1 UNCH 0.0000 + 29 H14 -0.8690 4.9841 3.5234 H 1 UNCH 0.0000 + 30 H15 0.1061 4.6404 2.0882 H 1 UNCH 0.0000 + 31 H16 -2.0740 1.4212 4.0286 H 1 UNCH 0.0000 + 32 H17 -0.6751 2.1658 4.8016 H 1 UNCH 0.0000 + 33 H18 -2.1863 3.0680 4.6687 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 16 1 + 3 2 10 1 + 4 2 11 1 + 5 3 11 2 + 6 4 5 1 + 7 4 8 1 + 8 4 10 1 + 9 5 6 2 + 10 5 13 1 + 11 6 7 1 + 12 6 17 1 + 13 7 8 1 + 14 7 18 1 + 15 7 19 1 + 16 8 9 1 + 17 8 20 1 + 18 9 10 1 + 19 9 14 1 + 20 9 15 1 + 21 10 21 1 + 22 11 12 1 + 23 12 22 1 + 24 12 23 1 + 25 12 24 1 + 26 13 25 1 + 27 13 26 1 + 28 13 27 1 + 29 14 28 1 + 30 14 29 1 + 31 14 30 1 + 32 15 31 1 + 33 15 32 1 + 34 15 33 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-HYDROXY-2,6,6-TRIMETHYL-ENDO-7-ACETOXYBICYCLO(3.2.0)HEPT- +@MOLECULE +FUSPEO + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O6 1.8447 3.2458 8.1201 O.2 1 FUSP -0.5700 + 2 C1 1.3609 3.4985 7.0203 C.2 1 FUSP 0.4956 + 3 C2 2.0345 3.1496 5.7563 C.2 1 FUSP -0.1356 + 4 C3 1.4722 3.4432 4.5708 C.2 1 FUSP -0.3000 + 5 O7 1.8805 3.2322 3.4011 O.3 1 FUSP -0.8500 + 6 H1 0.3869 4.0050 6.9226 H 1 FUSP 0.0600 + 7 H2 2.9926 2.6514 5.8239 H 1 FUSP 0.1500 + 8 H3 0.5055 3.9458 4.6432 H 1 FUSP 0.1500 +@BOND + 1 1 2 2 + 2 2 6 1 + 3 2 3 1 + 4 3 7 1 + 5 3 4 2 + 6 4 8 1 + 7 4 5 1 +@SUBSTRUCTURE + 1 FUSP 1 +@COMMENT +COMMENT SODIUM 2-PROPENAL-3-OLATE SESQUIHYDRATE (AT -150 DEG.C) +@MOLECULE +FUTCEC + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 7.3551 1.4123 6.6875 N.3 1 UNCH -0.1680 + 2 N2 8.3019 1.8702 5.7599 N.3 1 UNCH -0.5786 + 3 C1 7.7644 0.8564 4.8050 C.3 1 UNCH 0.2626 + 4 C2 6.7591 0.4924 5.9043 C.2 1 UNCH 0.5770 + 5 C3 8.7925 -0.2220 4.4904 C.3 1 UNCH 0.0000 + 6 C4 7.1626 1.4910 3.5587 C.3 1 UNCH 0.0000 + 7 C5 7.1487 1.8572 7.9916 C.2 1 UNCH 0.1170 + 8 C6 7.9784 2.8405 8.5464 C.2 1 UNCH -0.1500 + 9 C7 7.7705 3.2926 9.8524 C.2 1 UNCH -0.1500 + 10 C8 6.7320 2.7646 10.6160 C.2 1 UNCH -0.1500 + 11 C9 5.9039 1.7832 10.0761 C.2 1 UNCH -0.1500 + 12 C10 6.1121 1.3304 8.7702 C.2 1 UNCH -0.1500 + 13 O1 5.8318 -0.2720 6.0366 O.2 1 UNCH -0.5700 + 14 H1 8.0472 2.8341 5.5305 H 1 UNCH 0.3600 + 15 H2 8.3315 -1.0446 3.9327 H 1 UNCH 0.0000 + 16 H3 9.2309 -0.6473 5.4007 H 1 UNCH 0.0000 + 17 H4 9.6110 0.1780 3.8816 H 1 UNCH 0.0000 + 18 H5 6.6386 0.7400 2.9573 H 1 UNCH 0.0000 + 19 H6 7.9389 1.9415 2.9304 H 1 UNCH 0.0000 + 20 H7 6.4380 2.2747 3.8084 H 1 UNCH 0.0000 + 21 H8 8.8035 3.2568 7.9747 H 1 UNCH 0.1500 + 22 H9 8.4231 4.0529 10.2737 H 1 UNCH 0.1500 + 23 H10 6.5705 3.1140 11.6326 H 1 UNCH 0.1500 + 24 H11 5.0947 1.3656 10.6700 H 1 UNCH 0.1500 + 25 H12 5.4514 0.5622 8.3747 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 4 am + 3 1 7 1 + 4 2 3 1 + 5 2 14 1 + 6 3 4 1 + 7 3 5 1 + 8 3 6 1 + 9 4 13 2 + 10 5 15 1 + 11 5 16 1 + 12 5 17 1 + 13 6 18 1 + 14 6 19 1 + 15 6 20 1 + 16 7 8 2 + 17 7 12 1 + 18 8 9 1 + 19 8 21 1 + 20 9 10 2 + 21 9 22 1 + 22 10 11 1 + 23 10 23 1 + 24 11 12 2 + 25 11 24 1 + 26 12 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,4-DIMETHYL-2-PHENYL-1,2-DIAZETIDIN-3-ONE +@MOLECULE +FUTZEZ + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 5.3336 1.8903 1.2551 SI 1 UNCH 0.8974 + 2 O1 3.8504 1.8903 0.5030 O.3 1 UNCH -0.5774 + 3 C1 3.8161 1.8903 -0.9146 C.3 1 UNCH 0.2800 + 4 H1 5.1494 1.8903 2.7261 H 1 UNCH -0.2000 + 5 H2 6.0883 0.6829 0.8396 H 1 UNCH -0.2000 + 6 H3 2.7678 1.8903 -1.2296 H 1 UNCH 0.0000 + 7 H4 4.2905 0.9912 -1.3244 H 1 UNCH 0.0000 + 8 H2B 6.0883 3.0977 0.8396 H 1 UNCH -0.2000 + 9 H4B 4.2905 2.7894 -1.3244 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 1 8 1 + 5 2 3 1 + 6 3 6 1 + 7 3 7 1 + 8 3 9 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHOXYSILANE (AT 110 DEG.K) +@MOLECULE +FUVDOP + 36 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.5469 3.4606 9.7631 O.3 1 UNCH -0.4300 + 2 O2 1.7069 4.6301 8.0742 O.3 1 UNCH -0.4300 + 3 O3 2.7109 2.1268 7.4986 O.3 1 UNCH -0.4300 + 4 O4 3.5380 5.2146 11.2415 O.2 1 UNCH -0.5700 + 5 O5 0.3361 4.6745 6.2354 O.2 1 UNCH -0.5700 + 6 O6 3.9938 0.2740 7.9268 O.2 1 UNCH -0.5700 + 7 N1 0.0841 2.6790 10.6842 N.3 1 UNCH -0.2700 + 8 N2 -0.3188 1.9295 9.5073 N.3 1 UNCH -0.2700 + 9 N3 0.6471 1.3641 10.4328 N.3 1 UNCH -0.2700 + 10 C1 2.4032 2.9166 10.4264 C.3 1 UNCH 0.2800 + 11 C2 1.0870 3.6774 10.2479 C.3 1 UNCH 0.2700 + 12 C3 0.6946 3.9200 8.7918 C.3 1 UNCH 0.2800 + 13 C4 0.4399 2.4743 8.3581 C.3 1 UNCH 0.2700 + 14 C5 1.6881 1.5941 8.3437 C.3 1 UNCH 0.2800 + 15 C6 1.9908 1.5661 9.8439 C.3 1 UNCH 0.2700 + 16 C7 4.0211 4.6225 10.2886 C.2 1 UNCH 0.6590 + 17 C8 1.3857 4.9561 6.7930 C.2 1 UNCH 0.6590 + 18 C9 3.8189 1.3477 7.3713 C.2 1 UNCH 0.6590 + 19 C10 5.2168 5.0851 9.5152 C.3 1 UNCH 0.0610 + 20 C11 2.5179 5.6983 6.1532 C.3 1 UNCH 0.0610 + 21 C12 4.8084 2.0075 6.4616 C.3 1 UNCH 0.0610 + 22 H1 2.6375 2.7886 11.4940 H 1 UNCH 0.0000 + 23 H2 1.0554 4.6005 10.8334 H 1 UNCH 0.0000 + 24 H3 -0.2375 4.5045 8.7657 H 1 UNCH 0.0000 + 25 H4 -0.1087 2.4118 7.4142 H 1 UNCH 0.0000 + 26 H5 1.4139 0.5913 7.9828 H 1 UNCH 0.0000 + 27 H6 2.6993 0.7777 10.1125 H 1 UNCH 0.0000 + 28 H7 5.6229 5.9874 9.9810 H 1 UNCH 0.0000 + 29 H8 5.9889 4.3117 9.5276 H 1 UNCH 0.0000 + 30 H9 4.9246 5.3203 8.4888 H 1 UNCH 0.0000 + 31 H10 2.2266 6.0046 5.1445 H 1 UNCH 0.0000 + 32 H11 2.7493 6.5948 6.7338 H 1 UNCH 0.0000 + 33 H12 3.3936 5.0483 6.0841 H 1 UNCH 0.0000 + 34 H13 5.6687 1.3470 6.3216 H 1 UNCH 0.0000 + 35 H14 4.3508 2.1912 5.4862 H 1 UNCH 0.0000 + 36 H15 5.1528 2.9439 6.9072 H 1 UNCH 0.0000 +@BOND + 1 1 10 1 + 2 1 16 1 + 3 2 12 1 + 4 2 17 1 + 5 3 14 1 + 6 3 18 1 + 7 4 16 2 + 8 5 17 2 + 9 6 18 2 + 10 7 8 1 + 11 7 9 1 + 12 7 11 1 + 13 8 9 1 + 14 8 13 1 + 15 9 15 1 + 16 10 11 1 + 17 10 15 1 + 18 10 22 1 + 19 11 12 1 + 20 11 23 1 + 21 12 13 1 + 22 12 24 1 + 23 13 14 1 + 24 13 25 1 + 25 14 15 1 + 26 14 26 1 + 27 15 27 1 + 28 16 19 1 + 29 17 20 1 + 30 18 21 1 + 31 19 28 1 + 32 19 29 1 + 33 19 30 1 + 34 20 31 1 + 35 20 32 1 + 36 20 33 1 + 37 21 34 1 + 38 21 35 1 + 39 21 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6,8,9-TRIACETOXY-2,3,4-TRIAZATETRACYCLO(3.3.1.0-2,4-.0-3,7- +@MOLECULE +FUVMUE + 33 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C3 -3.7521 3.1834 11.6610 C.3 1 FUVM 0.3001 + 2 C4 -4.3791 0.9147 10.9467 C.3 1 FUVM 0.3001 + 3 N1 -3.3109 1.8840 11.1605 N.3 1 FUVM -0.6602 + 4 C5 -1.9907 1.5545 11.2431 C.2 1 FUVM 0.9490 + 5 O7 -1.2023 2.4673 11.6896 O.2 1 FUVM -0.4500 + 6 C6 -1.4311 0.2207 10.7857 C.3 1 FUVM 0.0610 + 7 C7 -1.3379 0.1183 9.2523 C.3 1 FUVM 0.0000 + 8 C8 -0.7962 -1.2463 8.7886 C.3 1 FUVM 0.0610 + 9 C9 -0.6778 -1.3386 7.2790 C.2 1 FUVM 0.9490 + 10 O8 -1.5641 -1.9758 6.5990 O.2 1 FUVM -0.4500 + 11 N2 0.3076 -0.7261 6.5633 N.3 1 FUVM -0.6602 + 12 C10 1.5332 -0.1997 7.1524 C.3 1 FUVM 0.3001 + 13 C11 0.3511 -0.9067 5.1145 C.3 1 FUVM 0.3001 + 14 H1 -0.2563 2.1997 11.7457 H 1 FUVM 0.5000 + 15 H2 -2.2591 -2.4145 7.1415 H 1 FUVM 0.5000 + 16 H3 -2.9340 3.9087 11.6649 H 1 FUVM 0.0000 + 17 H4 -4.5542 3.5626 11.0213 H 1 FUVM 0.0000 + 18 H5 -4.1211 3.0572 12.6832 H 1 FUVM 0.0000 + 19 H6 -4.0204 0.0140 10.4472 H 1 FUVM 0.0000 + 20 H7 -4.7955 0.6361 11.9193 H 1 FUVM 0.0000 + 21 H8 -5.1585 1.3694 10.3284 H 1 FUVM 0.0000 + 22 H9 -2.0538 -0.5882 11.1804 H 1 FUVM 0.0000 + 23 H10 -0.4318 0.1052 11.2195 H 1 FUVM 0.0000 + 24 H11 -0.7006 0.9276 8.8762 H 1 FUVM 0.0000 + 25 H12 -2.3227 0.2865 8.7999 H 1 FUVM 0.0000 + 26 H13 -1.4724 -2.0397 9.1251 H 1 FUVM 0.0000 + 27 H14 0.1819 -1.4371 9.2412 H 1 FUVM 0.0000 + 28 H15 1.8287 0.7071 6.6168 H 1 FUVM 0.0000 + 29 H16 1.4076 0.0452 8.2077 H 1 FUVM 0.0000 + 30 H17 2.3176 -0.9565 7.0573 H 1 FUVM 0.0000 + 31 H18 0.6884 0.0222 4.6456 H 1 FUVM 0.0000 + 32 H19 1.0521 -1.7144 4.8839 H 1 FUVM 0.0000 + 33 H20 -0.6331 -1.1645 4.7143 H 1 FUVM 0.0000 +@BOND + 1 1 18 1 + 2 1 17 1 + 3 1 16 1 + 4 1 3 1 + 5 2 21 1 + 6 2 20 1 + 7 2 19 1 + 8 2 3 1 + 9 3 4 am + 10 4 6 1 + 11 4 5 2 + 12 5 14 1 + 13 6 23 1 + 14 6 22 1 + 15 6 7 1 + 16 7 25 1 + 17 7 24 1 + 18 7 8 1 + 19 8 27 1 + 20 8 26 1 + 21 8 9 1 + 22 9 11 am + 23 9 10 2 + 24 10 15 1 + 25 11 13 1 + 26 11 12 1 + 27 12 30 1 + 28 12 29 1 + 29 12 28 1 + 30 13 33 1 + 31 13 32 1 + 32 13 31 1 +@SUBSTRUCTURE + 1 FUVM 1 +@COMMENT +COMMENT N,N,N',N'-TETRAMETHYLGLUTARAMIDE BIS(TRIFLUOROMETHANESULFON +@MOLECULE +FUVNEP + 40 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 3.2371 6.5274 10.9245 O.2 1 FUVN -0.5700 + 2 N1 0.5760 11.9162 8.6942 N.3 1 FUVN -0.8382 + 3 N2 2.6128 6.9653 17.2894 N.3 1 FUVN -0.8382 + 4 C7 1.0732 12.1963 7.3476 C.3 1 FUVN 0.3691 + 5 C8 -0.7950 12.3505 8.9599 C.3 1 FUVN 0.3691 + 6 C9 1.0820 10.8116 9.3902 C.2 1 FUVN 0.1000 + 7 C10 2.2340 10.1226 8.9672 C.2 1 FUVN -0.1500 + 8 C11 2.7560 9.0292 9.6735 C.2 1 FUVN -0.1500 + 9 C12 2.1491 8.6021 10.8517 C.2 1 FUVN 0.0862 + 10 C13 1.0024 9.2544 11.2988 C.2 1 FUVN -0.1500 + 11 C14 0.4911 10.3462 10.5805 C.2 1 FUVN -0.1500 + 12 C15 2.7238 7.4377 11.5704 C.2 1 FUVN 0.3976 + 13 C16 2.6928 7.3477 13.0515 C.2 1 FUVN 0.0862 + 14 C17 2.5510 6.0958 13.6444 C.2 1 FUVN -0.1500 + 15 C18 2.5241 5.9758 15.0414 C.2 1 FUVN -0.1500 + 16 C19 2.6615 7.0861 15.8953 C.2 1 FUVN 0.1000 + 17 C20 2.8114 8.3337 15.2601 C.2 1 FUVN -0.1500 + 18 C21 2.8389 8.4699 13.8637 C.2 1 FUVN -0.1500 + 19 C22 2.7074 5.6358 17.8913 C.3 1 FUVN 0.3691 + 20 C23 3.1196 8.0638 18.1113 C.3 1 FUVN 0.3691 + 21 H2 -1.5094 11.5438 8.7617 H 1 FUVN 0.0000 + 22 H3 -0.9076 12.6978 9.9925 H 1 FUVN 0.0000 + 23 H4 -1.0734 13.2003 8.3265 H 1 FUVN 0.0000 + 24 H5 2.1499 12.3969 7.3557 H 1 FUVN 0.0000 + 25 H6 0.6052 13.0956 6.9314 H 1 FUVN 0.0000 + 26 H7 0.8570 11.3653 6.6672 H 1 FUVN 0.0000 + 27 H8 2.6381 5.6894 18.9837 H 1 FUVN 0.0000 + 28 H9 1.8787 4.9952 17.5709 H 1 FUVN 0.0000 + 29 H10 3.6615 5.1580 17.6430 H 1 FUVN 0.0000 + 30 H11 3.0530 7.8259 19.1790 H 1 FUVN 0.0000 + 31 H12 4.1712 8.2726 17.8853 H 1 FUVN 0.0000 + 32 H13 2.5243 8.9721 17.9698 H 1 FUVN 0.0000 + 33 H14 2.7631 10.4146 8.0652 H 1 FUVN 0.1500 + 34 H15 3.6409 8.5199 9.2975 H 1 FUVN 0.1500 + 35 H16 0.4811 8.9270 12.1944 H 1 FUVN 0.1500 + 36 H17 -0.3950 10.8247 10.9869 H 1 FUVN 0.1500 + 37 H18 2.9874 9.4584 13.4371 H 1 FUVN 0.1500 + 38 H19 2.9134 9.2459 15.8406 H 1 FUVN 0.1500 + 39 H20 2.3952 4.9740 15.4398 H 1 FUVN 0.1500 + 40 H21 2.4555 5.2050 13.0269 H 1 FUVN 0.1500 +@BOND + 1 1 12 2 + 2 2 6 1 + 3 2 5 1 + 4 2 4 1 + 5 3 20 1 + 6 3 19 1 + 7 3 16 1 + 8 4 26 1 + 9 4 25 1 + 10 4 24 1 + 11 5 23 1 + 12 5 22 1 + 13 5 21 1 + 14 6 11 2 + 15 6 7 1 + 16 7 33 1 + 17 7 8 2 + 18 8 34 1 + 19 8 9 1 + 20 9 12 1 + 21 9 10 2 + 22 10 35 1 + 23 10 11 1 + 24 11 36 1 + 25 12 13 1 + 26 13 18 1 + 27 13 14 2 + 28 14 40 1 + 29 14 15 1 + 30 15 39 1 + 31 15 16 2 + 32 16 17 1 + 33 17 38 1 + 34 17 18 2 + 35 18 37 1 + 36 19 29 1 + 37 19 28 1 + 38 19 27 1 + 39 20 32 1 + 40 20 31 1 + 41 20 30 1 +@SUBSTRUCTURE + 1 FUVN 1 +@COMMENT +COMMENT 4,4'-BIS(DIMETHYLAMINO)BENZOPHENONE PENTAFLUOROPHENOL (AT - +@MOLECULE +FUVXOJ + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.4253 4.5071 3.1942 O.3 1 FUVX -0.3625 + 2 O2 6.4439 0.3833 3.3021 O.3 1 FUVX -0.2190 + 3 N1 7.1991 1.4260 3.7769 N.2 1 FUVX 0.0190 + 4 C1 0.2739 3.6903 3.3725 C.3 1 FUVX 0.2800 + 5 C2 2.6437 3.9276 3.4012 C.2 1 FUVX 0.0825 + 6 C3 2.8736 2.6043 3.7754 C.2 1 FUVX -0.1500 + 7 C4 4.1826 2.1360 3.9546 C.2 1 FUVX -0.1500 + 8 C5 5.2692 2.9922 3.7485 C.2 1 FUVX 0.0862 + 9 C6 5.0398 4.3248 3.3931 C.2 1 FUVX -0.1500 + 10 C7 3.7321 4.7823 3.2152 C.2 1 FUVX -0.1500 + 11 C8 6.6761 2.5900 3.9368 C.2 1 FUVX 0.2538 + 12 H1 0.1998 3.3351 4.4056 H 1 FUVX 0.0000 + 13 H2 0.2713 2.8539 2.6658 H 1 FUVX 0.0000 + 14 H3 -0.6076 4.3049 3.1663 H 1 FUVX 0.0000 + 15 H4 2.0521 1.9135 3.9439 H 1 FUVX 0.1500 + 16 H5 4.3080 1.1068 4.2782 H 1 FUVX 0.1500 + 17 H6 5.8567 5.0268 3.2396 H 1 FUVX 0.1500 + 18 H7 3.5537 5.8183 2.9301 H 1 FUVX 0.1500 + 19 H8 7.3872 3.3856 4.2222 H 1 FUVX 0.0600 + 20 H9 8.2022 1.2803 3.9403 H 1 FUVX 0.4000 + 21 H10 7.0843 -0.3499 3.2279 H 1 FUVX 0.4000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 2 21 1 + 4 2 3 1 + 5 3 20 1 + 6 3 11 2 + 7 4 14 1 + 8 4 13 1 + 9 4 12 1 + 10 5 10 2 + 11 5 6 1 + 12 6 15 1 + 13 6 7 2 + 14 7 16 1 + 15 7 8 1 + 16 8 11 1 + 17 8 9 2 + 18 9 17 1 + 19 9 10 1 + 20 10 18 1 + 21 11 19 1 +@SUBSTRUCTURE + 1 FUVX 1 +@COMMENT +COMMENT Z-4-METHOXYBENZALDOXIME HYDROCHLORIDE (AT 105 DEG.K) +@MOLECULE +FUWMOZ + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.3754 3.1226 -2.7612 O.3 1 UNCH -0.4300 + 2 C1 4.9159 2.1001 -1.9779 C.2 1 UNCH 0.9563 + 3 O2 5.5467 1.0856 -1.7326 O.2 1 UNCH -0.5700 + 4 N1 3.6379 2.4011 -1.5062 N.3 1 UNCH -0.7300 + 5 C2 3.3472 3.8082 -1.7377 C.3 1 UNCH 0.3557 + 6 C3 4.3197 4.0930 -2.8739 C.3 1 UNCH 0.2800 + 7 S1 3.0054 1.6941 -0.1539 S.3 1 UNCH 1.5760 + 8 O3 1.6189 2.0926 -0.0591 O.3 1 UNCH -0.6500 + 9 O4 3.9153 1.9611 0.9361 O.3 1 UNCH -0.6500 + 10 N2 3.1074 0.0558 -0.5097 N.3 1 UNCH -0.7570 + 11 C4 2.3706 -0.4537 -1.6236 C.2 1 UNCH 0.1990 + 12 C5 3.0662 -1.0152 -2.6972 C.2 1 UNCH -0.1500 + 13 C6 2.3696 -1.5193 -3.7974 C.2 1 UNCH -0.1500 + 14 C7 0.9766 -1.4714 -3.8222 C.2 1 UNCH -0.1500 + 15 C8 0.2800 -0.9255 -2.7451 C.2 1 UNCH -0.1500 + 16 C9 0.9763 -0.4211 -1.6447 C.2 1 UNCH -0.1500 + 17 H1 4.1520 -1.0652 -2.6918 H 1 UNCH 0.1500 + 18 H2 2.9140 -1.9533 -4.6323 H 1 UNCH 0.1500 + 19 H3 0.4331 -1.8671 -4.6766 H 1 UNCH 0.1500 + 20 H4 -0.8067 -0.8969 -2.7561 H 1 UNCH 0.1500 + 21 H5 0.4181 -0.0162 -0.8044 H 1 UNCH 0.1500 + 22 H6 4.0888 -0.2308 -0.4757 H 1 UNCH 0.4200 + 23 H7 2.3124 3.9964 -2.0319 H 1 UNCH 0.0000 + 24 H8 3.6056 4.4067 -0.8578 H 1 UNCH 0.0000 + 25 H9 3.8471 3.9666 -3.8541 H 1 UNCH 0.0000 + 26 H10 4.7362 5.1026 -2.8111 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 2 + 4 2 4 am + 5 4 5 1 + 6 4 7 1 + 7 5 6 1 + 8 5 23 1 + 9 5 24 1 + 10 6 25 1 + 11 6 26 1 + 12 7 8 1 + 13 7 9 1 + 14 7 10 1 + 15 10 11 1 + 16 10 22 1 + 17 11 12 2 + 18 11 16 1 + 19 12 13 1 + 20 12 17 1 + 21 13 14 2 + 22 13 18 1 + 23 14 15 1 + 24 14 19 1 + 25 15 16 2 + 26 15 20 1 + 27 16 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-OXO-3-OXAZOLIDINESULFONANILIDE N-(N'-PHENYLSULFAMOYL)OXAZ +@MOLECULE +FUWTUM + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -2.4978 -1.9535 10.7595 S.3 1 UNCH -0.6773 + 2 S2 -3.8477 0.3909 8.5971 S.3 1 UNCH -0.3420 + 3 S3 -1.1583 -1.2452 7.6453 S.3 1 UNCH -0.3420 + 4 P1 -2.1645 -0.6026 9.3792 P 1 UNCH 1.1733 + 5 P2 -2.8341 1.7577 7.3748 P 1 UNCH -0.0729 + 6 P3 -0.9669 0.6218 6.7140 P 1 UNCH -0.0729 + 7 C1 -1.1065 0.7350 10.0694 C.3 1 UNCH 0.0000 + 8 C2 -1.9095 2.7224 8.6488 C.3 1 UNCH 0.1669 + 9 C3 0.1091 1.4944 7.9344 C.3 1 UNCH 0.1669 + 10 C4 -0.7015 1.9261 9.1663 C.3 1 UNCH 0.0000 + 11 C5 0.1743 2.8702 10.0183 C.3 1 UNCH 0.0000 + 12 H1 -0.1970 0.2449 10.4416 H 1 UNCH 0.0000 + 13 H2 -1.6360 1.1204 10.9509 H 1 UNCH 0.0000 + 14 H3 -2.5723 3.0237 9.4683 H 1 UNCH 0.0000 + 15 H4 -1.5708 3.6496 8.1686 H 1 UNCH 0.0000 + 16 H5 0.5219 2.3766 7.4280 H 1 UNCH 0.0000 + 17 H6 0.9659 0.8713 8.2161 H 1 UNCH 0.0000 + 18 H7 1.0730 2.3570 10.3788 H 1 UNCH 0.0000 + 19 H8 -0.3759 3.2384 10.8916 H 1 UNCH 0.0000 + 20 H9 0.5014 3.7431 9.4418 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 2 4 1 + 3 2 5 1 + 4 3 4 1 + 5 3 6 1 + 6 4 7 1 + 7 5 6 1 + 8 5 8 1 + 9 6 9 1 + 10 7 10 1 + 11 7 12 1 + 12 7 13 1 + 13 8 10 1 + 14 8 14 1 + 15 8 15 1 + 16 9 10 1 + 17 9 16 1 + 18 9 17 1 + 19 10 11 1 + 20 11 18 1 + 21 11 19 1 + 22 11 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-METHYL-2,8-DITHIA-1,3,7-TRIPHOSPHATRICYCLO(3.3.1.0-3,7-)N +@MOLECULE +FUXXAX + 27 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -1.7094 -2.2964 8.3982 S.3 1 UNCH -0.4780 + 2 P1 -2.4184 -0.7231 9.5475 P 1 UNCH 1.3480 + 3 O1 -2.9659 0.2592 8.5040 O.3 1 UNCH -1.0333 + 4 O2 -1.1709 0.0117 10.0472 O.3 1 UNCH -1.0333 + 5 O3 -3.3853 -1.1646 10.5874 O.3 1 UNCH -1.0333 + 6 C1 -0.1328 -1.6993 7.7208 C.3 1 UNCH 0.2300 + 7 C2 -0.1971 -0.3716 6.9441 C.3 1 UNCH 0.5030 + 8 N1 -0.6990 0.7333 7.7829 N.3 1 UNCH -0.9060 + 9 C3 -0.4301 2.1389 7.5120 C.3 1 UNCH 0.5030 + 10 C4 -0.5471 2.9944 8.7808 C.3 1 UNCH 0.0000 + 11 C5 -1.9487 3.2616 9.3392 C.3 1 UNCH 0.5030 + 12 N2 -2.5315 2.1142 10.0092 N.3 1 UNCH -0.8530 + 13 H1 -0.5288 0.4802 8.8005 H 1 UNCH 0.4500 + 14 H2 -1.7504 0.5921 7.8137 H 1 UNCH 0.4500 + 15 H3 -3.2334 2.2353 10.7423 H 1 UNCH 0.4500 + 16 H4 -1.8421 1.4022 10.3815 H 1 UNCH 0.4500 + 17 H5 -3.0136 1.4717 9.3154 H 1 UNCH 0.4500 + 18 H12 0.2548 -2.4777 7.0553 H 1 UNCH 0.0000 + 19 H13 0.5774 -1.6075 8.5499 H 1 UNCH 0.0000 + 20 H14 -0.8475 -0.4406 6.0659 H 1 UNCH 0.0000 + 21 H15 0.8109 -0.0984 6.6151 H 1 UNCH 0.0000 + 22 H16 0.5946 2.2040 7.1315 H 1 UNCH 0.0000 + 23 H17 -1.1191 2.4700 6.7288 H 1 UNCH 0.0000 + 24 H18 -0.1196 3.9750 8.5325 H 1 UNCH 0.0000 + 25 H19 0.0952 2.5821 9.5695 H 1 UNCH 0.0000 + 26 H20 -2.6455 3.5822 8.5588 H 1 UNCH 0.0000 + 27 H21 -1.8892 4.0519 10.0944 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 1 + 4 2 4 1 + 5 2 5 1 + 6 6 7 1 + 7 6 18 1 + 8 6 19 1 + 9 7 8 1 + 10 7 20 1 + 11 7 21 1 + 12 8 9 1 + 13 8 13 1 + 14 8 14 1 + 15 9 10 1 + 16 9 22 1 + 17 9 23 1 + 18 10 11 1 + 19 10 24 1 + 20 10 25 1 + 21 11 12 1 + 22 11 26 1 + 23 11 27 1 + 24 12 15 1 + 25 12 16 1 + 26 12 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT S-2-(3-AMINOPROPYLAMINO)ETHYLPHOSPHOROTHIOIC ACID TRIHYDRAT +@MOLECULE +FUXZED + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.0303 7.6640 1.4069 S.3 1 UNCH 1.3340 + 2 O1 3.8367 7.6076 0.5774 O.3 1 UNCH -0.6500 + 3 O2 4.8584 7.7426 2.8492 O.3 1 UNCH -0.6500 + 4 O3 7.1454 11.0192 1.3962 O.3 1 UNCH -0.3567 + 5 O4 6.3523 4.2525 -0.1247 O.3 1 UNCH -0.3567 + 6 N1 6.5914 9.0078 -1.6380 N.1 1 UNCH -0.5571 + 7 N2 8.3051 6.2411 2.2817 N.1 1 UNCH -0.5571 + 8 C1 5.9924 9.0055 0.8638 C.2 1 UNCH 0.0480 + 9 C2 6.3867 9.9318 1.7482 C.2 1 UNCH -0.0733 + 10 C3 6.0387 6.2902 1.0658 C.2 1 UNCH 0.0480 + 11 C4 5.6149 5.3644 0.1947 C.2 1 UNCH -0.0733 + 12 C5 6.3174 9.0423 -0.5111 C.1 1 UNCH 0.4921 + 13 C6 7.7925 11.6246 2.5153 C.3 1 UNCH 0.2800 + 14 C7 7.2805 6.2277 1.7376 C.1 1 UNCH 0.4921 + 15 C8 5.9299 3.6435 -1.3446 C.3 1 UNCH 0.2800 + 16 H1 6.1209 9.9001 2.7998 H 1 UNCH 0.1500 + 17 H2 4.6537 5.4162 -0.3064 H 1 UNCH 0.1500 + 18 H3 8.4146 12.4444 2.1449 H 1 UNCH 0.0000 + 19 H4 8.4389 10.9033 3.0268 H 1 UNCH 0.0000 + 20 H5 7.0547 12.0384 3.2108 H 1 UNCH 0.0000 + 21 H6 6.5975 2.8026 -1.5530 H 1 UNCH 0.0000 + 22 H7 5.9969 4.3531 -2.1763 H 1 UNCH 0.0000 + 23 H8 4.9089 3.2584 -1.2509 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 8 1 + 4 1 10 1 + 5 4 9 1 + 6 4 13 1 + 7 5 11 1 + 8 5 15 1 + 9 6 12 3 + 10 7 14 3 + 11 8 9 2 + 12 8 12 1 + 13 9 16 1 + 14 10 11 2 + 15 10 14 1 + 16 11 17 1 + 17 13 18 1 + 18 13 19 1 + 19 13 20 1 + 20 15 21 1 + 21 15 22 1 + 22 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2'-BIS(METHOXYMETHYLENE)-2,2'-SULFONYLDIACETONITRILE +@MOLECULE +GADHEY + 35 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.9431 4.4733 4.9507 N.3 1 GADH -0.8382 + 2 N2 3.9823 4.7371 6.6153 N.3 1 GADH -0.8200 + 3 C1 1.2322 5.4792 5.7054 C.2 1 GADH 0.1000 + 4 C2 -0.0655 5.8785 5.3357 C.2 1 GADH -0.1500 + 5 C3 -0.7459 6.8463 6.0642 C.2 1 GADH -0.1500 + 6 C4 -0.1437 7.4314 7.1725 C.2 1 GADH -0.1500 + 7 C5 1.1471 7.0618 7.5737 C.2 1 GADH 0.0000 + 8 C6 1.8678 6.0758 6.8498 C.2 1 GADH 0.0000 + 9 C7 3.1767 5.7596 7.3277 C.2 1 GADH 0.3640 + 10 C8 3.7288 6.3862 8.4535 C.2 1 GADH -0.1500 + 11 C9 2.9961 7.3459 9.1376 C.2 1 GADH -0.1500 + 12 C10 1.7173 7.6785 8.6993 C.2 1 GADH -0.1500 + 13 C11 1.1963 3.1904 4.9926 C.3 1 GADH 0.3691 + 14 C12 2.1438 4.9387 3.5549 C.3 1 GADH 0.3691 + 15 C13 5.1854 5.3171 5.9614 C.3 1 GADH 0.5030 + 16 C14 4.2117 3.5204 7.4390 C.3 1 GADH 0.5030 + 17 H1 3.3416 4.4478 5.8412 H 1 GADH 0.4500 + 18 H2 -0.5657 5.4416 4.4749 H 1 GADH 0.1500 + 19 H3 -1.7492 7.1472 5.7690 H 1 GADH 0.1500 + 20 H4 -0.7013 8.1877 7.7248 H 1 GADH 0.1500 + 21 H5 4.7244 6.1409 8.8113 H 1 GADH 0.1500 + 22 H6 3.4136 7.8397 10.0133 H 1 GADH 0.1500 + 23 H7 1.1601 8.4356 9.2527 H 1 GADH 0.1500 + 24 H8 1.8104 2.4064 4.5362 H 1 GADH 0.0000 + 25 H9 1.0039 2.8896 6.0288 H 1 GADH 0.0000 + 26 H10 0.2473 3.2357 4.4471 H 1 GADH 0.0000 + 27 H11 2.6431 5.9143 3.5413 H 1 GADH 0.0000 + 28 H12 2.7996 4.2317 3.0351 H 1 GADH 0.0000 + 29 H13 1.2060 5.0047 2.9923 H 1 GADH 0.0000 + 30 H14 5.6130 4.5493 5.3103 H 1 GADH 0.0000 + 31 H15 4.8811 6.1782 5.3587 H 1 GADH 0.0000 + 32 H16 5.9117 5.6073 6.7257 H 1 GADH 0.0000 + 33 H17 3.2517 3.1715 7.8314 H 1 GADH 0.0000 + 34 H18 4.6396 2.7533 6.7874 H 1 GADH 0.0000 + 35 H19 4.9076 3.7545 8.2494 H 1 GADH 0.0000 +@BOND + 1 1 14 1 + 2 1 13 1 + 3 1 3 1 + 4 2 17 1 + 5 2 16 1 + 6 2 15 1 + 7 2 9 1 + 8 3 8 1 + 9 3 4 2 + 10 4 18 1 + 11 4 5 1 + 12 5 19 1 + 13 5 6 2 + 14 6 20 1 + 15 6 7 1 + 16 7 12 1 + 17 7 8 2 + 18 8 9 1 + 19 9 10 2 + 20 10 21 1 + 21 10 11 1 + 22 11 22 1 + 23 11 12 2 + 24 12 23 1 + 25 13 26 1 + 26 13 25 1 + 27 13 24 1 + 28 14 29 1 + 29 14 28 1 + 30 14 27 1 + 31 15 32 1 + 32 15 31 1 + 33 15 30 1 + 34 16 35 1 + 35 16 34 1 + 36 16 33 1 +@SUBSTRUCTURE + 1 GADH 1 +@COMMENT +COMMENT 1,8-BIS(DIMETHYLAMINO)NAPHTHALENE 2,4-DINITROIMIDAZOLATE +@MOLECULE +GAFNUW + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.2450 1.7175 0.2339 C.3 1 GAFN 0.1435 + 2 C2 4.2080 2.6507 -0.4411 C.3 1 GAFN 0.2800 + 3 C3 2.8483 1.9410 -0.1489 C.3 1 GAFN 0.0000 + 4 C4 3.2588 0.7087 0.6843 C.3 1 GAFN 0.1435 + 5 C5 3.8121 1.1969 2.0021 C.2 1 GAFN -0.1435 + 6 C6 3.3124 1.1420 3.2869 C.2 1 GAFN -0.0605 + 7 N1 4.0426 1.6978 4.3320 N.2 1 GAFN 0.5710 + 8 C7 5.2611 2.3023 4.0235 C.2 1 GAFN 0.2225 + 9 C8 5.7920 2.3842 2.7258 C.2 1 GAFN -0.1500 + 10 C9 5.0407 1.8131 1.7282 C.2 1 GAFN -0.1435 + 11 C10 4.5912 0.3366 0.0082 C.3 1 GAFN 0.0000 + 12 O1 4.4781 2.6974 -1.8502 O.3 1 GAFN -0.4300 + 13 C11 3.7973 3.6589 -2.5345 C.2 1 GAFN 0.6590 + 14 O2 2.9963 4.4414 -2.0449 O.2 1 GAFN -0.5700 + 15 C12 4.1673 3.6164 -3.9850 C.3 1 GAFN 0.0610 + 16 N2 5.9909 2.8683 5.1143 N.2 1 GAFN 0.9070 + 17 O3 5.8097 4.0716 5.3431 O.3 1 GAFN -0.5200 + 18 O4 6.8294 2.1405 5.6627 O.2 1 GAFN -0.5200 + 19 O5 3.5759 1.6357 5.5099 O.3 1 GAFN -0.7500 + 20 H1 6.2761 1.7915 -0.1151 H 1 GAFN 0.0000 + 21 H2 4.2481 3.6610 -0.0133 H 1 GAFN 0.0000 + 22 H3 2.3522 1.6327 -1.0760 H 1 GAFN 0.0000 + 23 H4 2.1733 2.5998 0.4086 H 1 GAFN 0.0000 + 24 H5 2.5235 -0.0934 0.7572 H 1 GAFN 0.0000 + 25 H6 2.3787 0.6971 3.5923 H 1 GAFN 0.1500 + 26 H7 6.7411 2.8712 2.5275 H 1 GAFN 0.1500 + 27 H8 5.1213 -0.4782 0.5189 H 1 GAFN 0.0000 + 28 H9 4.4785 0.0787 -1.0508 H 1 GAFN 0.0000 + 29 H10 5.2393 3.7958 -4.0996 H 1 GAFN 0.0000 + 30 H11 3.8911 2.6480 -4.4094 H 1 GAFN 0.0000 + 31 H12 3.6242 4.4003 -4.5206 H 1 GAFN 0.0000 +@BOND + 1 1 20 1 + 2 1 11 1 + 3 1 10 1 + 4 1 2 1 + 5 2 21 1 + 6 2 12 1 + 7 2 3 1 + 8 3 23 1 + 9 3 22 1 + 10 3 4 1 + 11 4 24 1 + 12 4 11 1 + 13 4 5 1 + 14 5 10 1 + 15 5 6 2 + 16 6 25 1 + 17 6 7 1 + 18 7 19 1 + 19 7 8 2 + 20 8 16 am + 21 8 9 1 + 22 9 26 1 + 23 9 10 2 + 24 11 28 1 + 25 11 27 1 + 26 12 13 1 + 27 13 15 1 + 28 13 14 2 + 29 15 31 1 + 30 15 30 1 + 31 15 29 1 + 32 16 18 2 + 33 16 17 1 +@SUBSTRUCTURE + 1 GAFN 1 +@COMMENT +COMMENT 3-NITRO-5,6,7,8-TETRAHYDRO-5,8-METHANOISOQUINOLIN-6-(EXO)-O +@MOLECULE +GAHPIO + 22 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -3.6927 2.2346 6.4690 O.2 1 UNCH -0.5700 + 2 O2 -3.9315 1.1824 8.4204 O.3 1 UNCH -0.6500 + 3 O3 -1.8274 4.3594 6.5385 O.3 1 UNCH -0.4355 + 4 O4 0.7822 2.4429 7.9358 O.2 1 UNCH -0.5700 + 5 N1 -1.2252 3.2638 7.1962 N.3 1 UNCH -0.3246 + 6 C1 -3.2785 2.0361 7.6032 C.2 1 UNCH 0.6590 + 7 C2 -2.0557 2.6724 8.2567 C.3 1 UNCH 0.3611 + 8 C3 -2.4769 3.6791 9.3354 C.3 1 UNCH 0.0000 + 9 C4 -1.3019 4.2394 10.1235 C.3 1 UNCH 0.0000 + 10 C5 0.1483 3.1933 7.1943 C.2 1 UNCH 0.5690 + 11 C6 0.8488 4.0855 6.2019 C.3 1 UNCH 0.0610 + 12 H1 0.7729 5.1277 6.5230 H 1 UNCH 0.0000 + 13 H2 1.9061 3.8094 6.1483 H 1 UNCH 0.0000 + 14 H3 0.4138 3.9642 5.2060 H 1 UNCH 0.0000 + 15 H4 -1.6643 4.8864 10.9288 H 1 UNCH 0.0000 + 16 H5 -0.7123 3.4353 10.5749 H 1 UNCH 0.0000 + 17 H6 -0.6434 4.8389 9.4879 H 1 UNCH 0.0000 + 18 H7 -1.4816 1.8567 8.7131 H 1 UNCH 0.0000 + 19 H8 -3.0384 4.5086 8.8882 H 1 UNCH 0.0000 + 20 H9 -3.1628 3.1926 10.0401 H 1 UNCH 0.0000 + 21 H10 -4.6791 0.8479 7.8809 H 1 UNCH 0.5000 + 22 H11 -2.3712 3.9039 5.8608 H 1 UNCH 0.4000 +@BOND + 1 1 6 2 + 2 2 6 1 + 3 2 21 1 + 4 3 5 1 + 5 3 22 1 + 6 4 10 2 + 7 5 7 1 + 8 5 10 am + 9 6 7 1 + 10 7 8 1 + 11 7 18 1 + 12 8 9 1 + 13 8 19 1 + 14 8 20 1 + 15 9 15 1 + 16 9 16 1 + 17 9 17 1 + 18 10 11 1 + 19 11 12 1 + 20 11 13 1 + 21 11 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DL-2-(N-ACETYL-N-HYDROXYAMINO)BUTYRIC ACID +@MOLECULE +GAJTEQ + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.2301 2.5956 1.2309 S.3 1 GAJT 1.8200 + 2 O1 0.8031 2.5712 1.5211 O.3 1 GAJT -0.8167 + 3 O2 2.6199 2.1710 -0.1066 O.3 1 GAJT -0.8167 + 4 O3 3.1142 2.1971 2.3157 O.3 1 GAJT -0.8167 + 5 N1 2.5684 4.3894 1.1675 N.2 1 GAJT -0.0920 + 6 C1 1.8385 5.2152 1.9331 C.2 1 GAJT 0.2110 + 7 C2 2.0887 6.5840 1.9171 C.2 1 GAJT -0.1500 + 8 C3 3.1064 7.0772 1.1071 C.2 1 GAJT -0.1500 + 9 C4 3.8549 6.1949 0.3348 C.2 1 GAJT -0.1500 + 10 C5 3.5647 4.8349 0.3866 C.2 1 GAJT 0.2110 + 11 H1 1.0662 4.7648 2.5483 H 1 GAJT 0.1500 + 12 H2 1.4957 7.2543 2.5335 H 1 GAJT 0.1500 + 13 H3 3.3184 8.1445 1.0813 H 1 GAJT 0.1500 + 14 H4 4.6588 6.5575 -0.3003 H 1 GAJT 0.1500 + 15 H5 4.1151 4.0931 -0.1832 H 1 GAJT 0.1500 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 5 10 2 + 6 5 6 1 + 7 6 11 1 + 8 6 7 2 + 9 7 12 1 + 10 7 8 1 + 11 8 13 1 + 12 8 9 2 + 13 9 14 1 + 14 9 10 1 + 15 10 15 1 +@SUBSTRUCTURE + 1 GAJT 1 +@COMMENT +COMMENT PYRIDINE-1-SULFONATE +@MOLECULE +GAKGOO + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.6337 2.1553 5.4825 O.3 1 UNCH -0.2267 + 2 C2 2.7886 2.8613 5.7673 C.2 1 UNCH 0.7056 + 3 O2 3.8119 2.7976 5.1008 O.2 1 UNCH -0.5700 + 4 C3 2.6555 3.7113 6.9737 C.2 1 UNCH -0.1238 + 5 C31 3.7417 4.5659 7.4842 C.3 1 UNCH 0.1382 + 6 C32 1.4221 3.4813 7.3780 C.2 1 UNCH 0.1000 + 7 N4 0.4928 3.7981 8.3289 N.3 1 UNCH -0.5691 + 8 C5 0.5488 4.8395 9.3371 C.3 1 UNCH 0.3691 + 9 C6 -0.4613 4.5246 10.4470 C.3 1 UNCH 0.0000 + 10 C7 -1.8638 4.2179 9.8961 C.3 1 UNCH 0.1382 + 11 C8 -1.8403 3.3097 8.6975 C.2 1 UNCH -0.2882 + 12 C81 -0.7056 3.1441 8.0095 C.2 1 UNCH 0.1000 + 13 C9 -0.4622 2.3295 6.8162 C.2 1 UNCH -0.1382 + 14 C91 -1.4577 1.4609 6.1479 C.3 1 UNCH 0.1382 + 15 C92 0.8160 2.5643 6.4796 C.2 1 UNCH 0.0767 + 16 H311 3.4332 5.1311 8.3678 H 1 UNCH 0.0000 + 17 H312 4.0541 5.2860 6.7213 H 1 UNCH 0.0000 + 18 H313 4.6098 3.9592 7.7605 H 1 UNCH 0.0000 + 19 H51 1.5510 4.9063 9.7735 H 1 UNCH 0.0000 + 20 H52 0.3153 5.8087 8.8804 H 1 UNCH 0.0000 + 21 H61 -0.1070 3.6500 11.0094 H 1 UNCH 0.0000 + 22 H62 -0.5125 5.3575 11.1571 H 1 UNCH 0.0000 + 23 H71 -2.3658 5.1516 9.6163 H 1 UNCH 0.0000 + 24 H72 -2.4614 3.7548 10.6895 H 1 UNCH 0.0000 + 25 H8 -2.7593 2.8149 8.4041 H 1 UNCH 0.1500 + 26 H911 -1.0284 0.9614 5.2732 H 1 UNCH 0.0000 + 27 H912 -2.3175 2.0472 5.8082 H 1 UNCH 0.0000 + 28 H913 -1.8151 0.6851 6.8326 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 15 1 + 3 2 3 2 + 4 2 4 1 + 5 4 5 1 + 6 4 6 2 + 7 5 16 1 + 8 5 17 1 + 9 5 18 1 + 10 6 7 1 + 11 6 15 1 + 12 7 8 1 + 13 7 12 1 + 14 8 9 1 + 15 8 19 1 + 16 8 20 1 + 17 9 10 1 + 18 9 21 1 + 19 9 22 1 + 20 10 11 1 + 21 10 23 1 + 22 10 24 1 + 23 11 12 2 + 24 11 25 1 + 25 12 13 1 + 26 13 14 1 + 27 13 15 2 + 28 14 26 1 + 29 14 27 1 + 30 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,9-DIMETHYL-2,5,6,7-TETRAHYDROFURO(2,3-B)INDOLIZIN-2-ONE +@MOLECULE +GAKNEL + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.1110 0.3329 6.5730 CL 1 GAKN -0.1770 + 2 O11 -2.3756 0.6054 6.5842 O.3 1 GAKN 0.2418 + 3 O21 -2.7461 4.5815 8.3392 O.3 1 GAKN -0.5200 + 4 O31 -1.6470 4.4591 10.2409 O.2 1 GAKN -0.5200 + 5 N11 -2.5557 1.7276 7.3704 N.2 1 GAKN -0.4097 + 6 N21 -1.0374 0.3041 6.4190 N.2 1 GAKN -0.4097 + 7 N31 -1.8405 4.1458 9.0587 N.2 1 GAKN 0.9070 + 8 C11 -1.3300 2.1582 7.6951 C.2 1 GAKN 0.2888 + 9 C21 -0.8876 3.2467 8.4692 C.2 1 GAKN 0.1330 + 10 C31 0.5007 3.4091 8.6620 C.2 1 GAKN -0.1500 + 11 C41 1.4339 2.5187 8.0796 C.2 1 GAKN -0.1500 + 12 C51 1.0284 1.4289 7.2901 C.2 1 GAKN 0.1770 + 13 C61 -0.3581 1.2393 7.0965 C.2 1 GAKN 0.2888 + 14 H31 0.8707 4.2366 9.2693 H 1 GAKN 0.1500 + 15 H41 2.4980 2.6835 8.2512 H 1 GAKN 0.1500 +@BOND + 1 1 12 1 + 2 2 5 1 + 3 2 6 1 + 4 3 7 1 + 5 4 7 2 + 6 5 8 2 + 7 6 13 2 + 8 7 9 1 + 9 8 9 1 + 10 8 13 1 + 11 9 10 2 + 12 10 11 1 + 13 10 14 1 + 14 11 12 2 + 15 11 15 1 + 16 12 13 1 +@SUBSTRUCTURE + 1 GAKN 1 +@COMMENT +COMMENT 4-CHLORO-7-NITRO-2,1,3-BENZOXADIAZOLE +@MOLECULE +GAKNIP + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.6852 0.3735 7.5190 S.2 1 UNCH 0.2505 + 2 S2 6.6887 -1.7637 6.6839 S.2 1 UNCH 0.2505 + 3 O1 4.1630 0.9832 8.7885 O.2 1 UNCH -0.5000 + 4 O2 5.7260 -2.0374 5.5659 O.2 1 UNCH -0.5000 + 5 C1 5.7493 -0.9863 7.9774 C.2 1 UNCH 0.1120 + 6 C2 7.6581 -0.3014 6.2037 C.3 1 UNCH 0.1935 + 7 C3 6.7843 0.8648 5.7572 C.3 1 UNCH 0.0000 + 8 C4 5.9921 1.4762 6.9028 C.3 1 UNCH 0.1935 + 9 C5 5.7856 -1.4272 9.2451 C.2 1 UNCH -0.2882 + 10 C6 6.5775 -2.5615 9.8139 C.3 1 UNCH 0.1382 + 11 H21 8.3044 -0.0224 7.0427 H 1 UNCH 0.0000 + 12 H22 8.3038 -0.6146 5.3768 H 1 UNCH 0.0000 + 13 H31 6.1120 0.5588 4.9464 H 1 UNCH 0.0000 + 14 H32 7.4403 1.6412 5.3448 H 1 UNCH 0.0000 + 15 H41 5.4941 2.3896 6.5617 H 1 UNCH 0.0000 + 16 H42 6.6464 1.7467 7.7389 H 1 UNCH 0.0000 + 17 H51 5.1610 -0.9231 9.9839 H 1 UNCH 0.1500 + 18 H61 7.2134 -3.0666 9.0835 H 1 UNCH 0.0000 + 19 H62 7.2221 -2.1913 10.6173 H 1 UNCH 0.0000 + 20 H63 5.8981 -3.3066 10.2398 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 5 1 + 3 1 8 1 + 4 2 4 2 + 5 2 5 1 + 6 2 6 1 + 7 5 9 2 + 8 6 7 1 + 9 6 11 1 + 10 6 12 1 + 11 7 8 1 + 12 7 13 1 + 13 7 14 1 + 14 8 15 1 + 15 8 16 1 + 16 9 10 1 + 17 9 17 1 + 18 10 18 1 + 19 10 19 1 + 20 10 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-ETHYLIDENE-1,3-DITHIANE 1,3-DIOXIDE +@MOLECULE +GAKPEN + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.7610 6.5939 -3.1493 S.3 1 UNCH 1.3260 + 2 C2 8.8629 7.9439 -3.0129 C.2 1 UNCH -0.1552 + 3 C3 8.2187 9.1238 -3.0711 C.2 1 UNCH -0.1784 + 4 C31 6.7758 8.9719 -3.2321 C.2 1 UNCH 0.0284 + 5 C4 5.8219 9.9719 -3.3265 C.2 1 UNCH -0.1500 + 6 C5 4.4774 9.6055 -3.4790 C.2 1 UNCH -0.1500 + 7 C6 4.0966 8.2524 -3.5358 C.2 1 UNCH -0.1500 + 8 C7 5.0540 7.2437 -3.4411 C.2 1 UNCH -0.1500 + 9 C71 6.3701 7.6404 -3.2915 C.2 1 UNCH -0.0090 + 10 C21 10.3133 7.6903 -2.8555 C.3 1 UNCH 0.1382 + 11 O1 7.9458 5.9184 -4.4164 O.3 1 UNCH -0.6500 + 12 O2 7.6665 5.8907 -1.8873 O.3 1 UNCH -0.6500 + 13 H3 8.6901 10.0943 -3.0084 H 1 UNCH 0.1500 + 14 H4 6.0989 11.0211 -3.2844 H 1 UNCH 0.1500 + 15 H5 3.7149 10.3786 -3.5547 H 1 UNCH 0.1500 + 16 H6 3.0465 7.9933 -3.6546 H 1 UNCH 0.1500 + 17 H7 4.7812 6.1945 -3.4827 H 1 UNCH 0.1500 + 18 H211 10.8773 8.6258 -2.7830 H 1 UNCH 0.0000 + 19 H212 10.7004 7.1300 -3.7122 H 1 UNCH 0.0000 + 20 H213 10.5055 7.1107 -1.9473 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 1 11 1 + 4 1 12 1 + 5 2 3 2 + 6 2 10 1 + 7 3 4 1 + 8 3 13 1 + 9 4 5 2 + 10 4 9 1 + 11 5 6 1 + 12 5 14 1 + 13 6 7 2 + 14 6 15 1 + 15 7 8 1 + 16 7 16 1 + 17 8 9 2 + 18 8 17 1 + 19 10 18 1 + 20 10 19 1 + 21 10 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-METHYLBENZO(B)THIOPHENE 1,1-DIOXIDE +@MOLECULE +GAKTAN + 15 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.4101 2.4722 3.9520 S.3 1 UNCH -0.1380 + 2 S2 7.1327 -0.2631 0.9597 S.3 1 UNCH -0.0800 + 3 S3 2.1477 -0.2735 5.0567 S.3 1 UNCH -0.0800 + 4 C1 4.0627 1.2182 4.3391 C.2 1 UNCH 0.0940 + 5 C2 4.1594 0.0135 3.5661 C.2 1 UNCH -0.0130 + 6 C3 5.2800 0.0158 2.6451 C.2 1 UNCH -0.0130 + 7 C4 6.0541 1.2224 2.7025 C.2 1 UNCH 0.0940 + 8 C5 7.1034 1.2219 1.8386 C.2 1 UNCH -0.1220 + 9 C6 5.7317 -0.8951 1.7490 C.2 1 UNCH -0.1100 + 10 C7 3.1950 -0.9004 3.8338 C.2 1 UNCH -0.1100 + 11 C8 3.0119 1.2133 5.2012 C.2 1 UNCH -0.1220 + 12 H5 7.8335 2.0047 1.6883 H 1 UNCH 0.1500 + 13 H6 5.3488 -1.8747 1.5002 H 1 UNCH 0.1500 + 14 H7 3.0276 -1.8795 3.4080 H 1 UNCH 0.1500 + 15 H8 2.7210 1.9940 5.8900 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 7 1 + 3 2 8 1 + 4 2 9 1 + 5 3 10 1 + 6 3 11 1 + 7 4 5 1 + 8 4 11 2 + 9 5 6 1 + 10 5 10 2 + 11 6 7 1 + 12 6 9 2 + 13 7 8 2 + 14 8 12 1 + 15 9 13 1 + 16 10 14 1 + 17 11 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DITHIENO(3,4-B.3',4'-D)THIOPHENE +@MOLECULE +GANHUY + 9 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.7927 1.4765 8.0963 O.2 1 UNCH -0.5700 + 2 O2 -1.2630 0.8437 7.5970 O.2 1 UNCH -0.5700 + 3 O4 1.4278 4.3481 6.5521 O.3 1 UNCH -0.5270 + 4 C1 0.8910 2.0654 7.5583 C.2 1 UNCH 0.6410 + 5 C2 -0.5509 1.7732 7.3194 C.2 1 UNCH 0.6410 + 6 C3 -0.6340 3.0665 6.6457 C.2 1 UNCH -0.2210 + 7 C4 0.6804 3.3534 6.8531 C.2 1 UNCH 0.0060 + 8 H3 -1.4273 3.6225 6.1532 H 1 UNCH 0.1500 + 9 H40 2.3335 4.1792 6.8797 H 1 UNCH 0.4500 +@BOND + 1 1 4 2 + 2 2 5 2 + 3 3 7 1 + 4 3 9 1 + 5 4 5 1 + 6 4 7 1 + 7 5 6 1 + 8 6 7 2 + 9 6 8 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-HYDROXYCYCLOBUTENE-3,4-DIONE (AT 133 DEG.K, GROWTH REGULA +@MOLECULE +GAPMEP + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 0.4812 1.4219 7.7517 BR 1 GAPM -0.1100 + 2 S1 1.4048 2.2869 4.9400 S.3 1 GAPM 1.3260 + 3 O1 2.4640 3.1956 5.3300 O.3 1 GAPM -0.6500 + 4 O2 0.1296 2.7418 4.4236 O.3 1 GAPM -0.6500 + 5 C2 1.1974 1.0135 6.1115 C.2 1 GAPM 0.0930 + 6 C3 1.6057 -0.1811 5.6581 C.2 1 GAPM -0.1784 + 7 C31 2.1209 -0.1083 4.2950 C.2 1 GAPM 0.0284 + 8 C4 2.6224 -1.1415 3.5206 C.2 1 GAPM -0.1500 + 9 C5 3.0696 -0.8522 2.2240 C.2 1 GAPM -0.1500 + 10 C6 3.0138 0.4572 1.7123 C.2 1 GAPM -0.1500 + 11 C7 2.5098 1.4994 2.4886 C.2 1 GAPM -0.1500 + 12 C71 2.0774 1.1794 3.7624 C.2 1 GAPM -0.0090 + 13 H3 1.5692 -1.1059 6.2151 H 1 GAPM 0.1500 + 14 H7 2.4585 2.5157 2.1119 H 1 GAPM 0.1500 + 15 H6 3.3674 0.6557 0.7024 H 1 GAPM 0.1500 + 16 H5 3.4669 -1.6520 1.6014 H 1 GAPM 0.1500 + 17 H4 2.6732 -2.1584 3.8989 H 1 GAPM 0.1500 +@BOND + 1 1 5 1 + 2 2 3 1 + 3 2 4 1 + 4 2 5 1 + 5 2 12 1 + 6 5 6 2 + 7 6 7 1 + 8 6 13 1 + 9 7 8 2 + 10 7 12 1 + 11 8 9 1 + 12 8 17 1 + 13 9 10 2 + 14 9 16 1 + 15 10 11 1 + 16 10 15 1 + 17 11 12 2 + 18 11 14 1 +@SUBSTRUCTURE + 1 GAPM 1 +@COMMENT +COMMENT 2-BROMOBENZO(B)THIOPHENE 1,1-DIOXIDE +@MOLECULE +GAVKOD + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.1065 3.1347 0.4158 O.3 1 GAVK -0.1171 + 2 O2 4.3225 1.1958 1.3719 O.3 1 GAVK -0.6330 + 3 N1 6.2967 3.8653 0.4277 N.2 1 GAVK -0.4097 + 4 N2 5.2974 1.9730 1.2354 N.2 1 GAVK 0.9530 + 5 N3 7.0607 1.0824 2.5647 N.3 1 GAVK -0.8830 + 6 C1 7.1469 3.1923 1.2132 C.2 1 GAVK 0.1078 + 7 C2 6.5503 2.0258 1.7291 C.2 1 GAVK 0.0010 + 8 C3 8.5165 3.7062 1.4412 C.3 1 GAVK 0.1810 + 9 H1 6.4517 0.3595 2.9522 H 1 GAVK 0.4000 + 10 H2 7.9248 1.2126 3.0843 H 1 GAVK 0.4000 + 11 H31 8.6604 3.9498 2.4987 H 1 GAVK 0.0000 + 12 H32 8.7125 4.6108 0.8561 H 1 GAVK 0.0000 + 13 H33 9.2593 2.9540 1.1567 H 1 GAVK 0.0000 +@BOND + 1 1 4 1 + 2 1 3 1 + 3 2 4 1 + 4 3 6 2 + 5 4 7 2 + 6 5 10 1 + 7 5 9 1 + 8 5 7 am + 9 6 8 1 + 10 6 7 1 + 11 8 13 1 + 12 8 12 1 + 13 8 11 1 +@SUBSTRUCTURE + 1 GAVK 1 +@COMMENT +COMMENT 3-AMINO-4-METHYLFURAZAN N-OXIDE +@MOLECULE +GAVMEV + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.7087 -1.4086 1.0220 C.2 1 UNCH -0.0130 + 2 S2 1.8626 0.0214 0.5600 S.3 1 UNCH -0.0800 + 3 C3 2.8951 0.9582 1.5620 C.2 1 UNCH 0.1981 + 4 N4 3.8235 0.2884 2.2089 N.2 1 UNCH -0.5653 + 5 C5 3.7169 -1.0424 1.8965 C.2 1 UNCH 0.2892 + 6 O6 4.5637 -1.9272 2.4423 O.3 1 UNCH -0.5120 + 7 C7 2.7050 2.4314 1.6516 C.3 1 UNCH 0.1800 + 8 C8 2.3345 -2.7182 0.4730 C.2 1 UNCH 0.0530 + 9 C9 0.9911 -3.1086 0.3525 C.2 1 UNCH -0.1500 + 10 C10 0.6519 -4.3590 -0.1731 C.2 1 UNCH -0.1500 + 11 C11 1.6508 -5.2382 -0.5834 C.2 1 UNCH -0.1500 + 12 C12 2.9885 -4.8700 -0.4661 C.2 1 UNCH -0.1500 + 13 C13 3.3269 -3.6199 0.0597 C.2 1 UNCH -0.1500 + 14 H6 5.1429 -1.4079 3.0258 H 1 UNCH 0.4500 + 15 H72 2.8285 2.9004 0.6703 H 1 UNCH 0.0000 + 16 H9 0.1905 -2.4486 0.6780 H 1 UNCH 0.1500 + 17 H11 1.3874 -6.2108 -0.9906 H 1 UNCH 0.1500 + 18 H13 4.3789 -3.3538 0.1415 H 1 UNCH 0.1500 + 19 H71 3.4427 2.8714 2.3303 H 1 UNCH 0.0000 + 20 H73 1.7086 2.6728 2.0352 H 1 UNCH 0.0000 + 21 H10 -0.3931 -4.6457 -0.2575 H 1 UNCH 0.1500 + 22 H12 3.7719 -5.5542 -0.7813 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 2 + 3 1 8 1 + 4 2 3 1 + 5 3 4 2 + 6 3 7 1 + 7 4 5 1 + 8 5 6 1 + 9 6 14 1 + 10 7 15 1 + 11 7 19 1 + 12 7 20 1 + 13 8 9 2 + 14 8 13 1 + 15 9 10 1 + 16 9 16 1 + 17 10 11 2 + 18 10 21 1 + 19 11 12 1 + 20 11 17 1 + 21 12 13 2 + 22 12 22 1 + 23 13 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-METHYL-5-PHENYL-THIAZOLIN-4-ONE +@MOLECULE +GAWWOQ + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 3.4941 0.9322 -0.0010 P 1 UNCH 1.5103 + 2 O1 2.1593 1.7625 0.3231 O.3 1 UNCH -0.4212 + 3 O2 3.6008 0.5127 -1.4354 O.3 1 UNCH -0.7000 + 4 O3 4.6122 2.0571 0.3421 O.3 1 UNCH -0.5512 + 5 N1 3.7330 -0.2090 1.1577 N.3 1 UNCH -0.8079 + 6 O4 0.6507 0.1564 -0.2596 O.2 1 UNCH -0.5700 + 7 C1 3.8911 0.2545 2.5298 C.3 1 UNCH 0.2700 + 8 C2 4.9942 1.3096 2.6096 C.3 1 UNCH 0.0000 + 9 C3 4.7134 2.4864 1.6876 C.3 1 UNCH 0.2800 + 10 C4 0.9289 1.2860 0.1022 C.2 1 UNCH 0.6338 + 11 C5 -0.0918 2.3231 0.4083 C.2 1 UNCH 0.0862 + 12 C6 -1.4411 1.9434 0.4039 C.2 1 UNCH -0.1500 + 13 C7 -2.4372 2.8796 0.6879 C.2 1 UNCH -0.1500 + 14 C8 -2.0918 4.1994 0.9746 C.2 1 UNCH -0.1500 + 15 C9 -0.7523 4.5871 0.9757 C.2 1 UNCH -0.1500 + 16 C10 0.2480 3.6537 0.6926 C.2 1 UNCH -0.1500 + 17 C11 2.9249 -1.4174 1.1011 C.3 1 UNCH 0.2700 + 18 H11 2.9481 0.6725 2.9024 H 1 UNCH 0.0000 + 19 H12 4.1690 -0.5750 3.1912 H 1 UNCH 0.0000 + 20 H21 5.9492 0.8481 2.3278 H 1 UNCH 0.0000 + 21 H22 5.0912 1.6635 3.6419 H 1 UNCH 0.0000 + 22 H31 5.5329 3.2093 1.7482 H 1 UNCH 0.0000 + 23 H32 3.7936 3.0064 1.9758 H 1 UNCH 0.0000 + 24 H111 2.8467 -1.7820 0.0718 H 1 UNCH 0.0000 + 25 H112 1.9148 -1.2493 1.4864 H 1 UNCH 0.0000 + 26 H113 3.3853 -2.2219 1.6850 H 1 UNCH 0.0000 + 27 H6 -1.7228 0.9166 0.1765 H 1 UNCH 0.1500 + 28 H7 -3.4823 2.5791 0.6813 H 1 UNCH 0.1500 + 29 H8 -2.8689 4.9286 1.1920 H 1 UNCH 0.1500 + 30 H9 -0.4873 5.6195 1.1918 H 1 UNCH 0.1500 + 31 H10 1.2836 3.9838 0.6884 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 10 1 + 6 4 9 1 + 7 5 7 1 + 8 5 17 1 + 9 6 10 2 + 10 7 8 1 + 11 7 18 1 + 12 7 19 1 + 13 8 9 1 + 14 8 20 1 + 15 8 21 1 + 16 9 22 1 + 17 9 23 1 + 18 10 11 1 + 19 11 12 2 + 20 11 16 1 + 21 12 13 1 + 22 12 27 1 + 23 13 14 2 + 24 13 28 1 + 25 14 15 1 + 26 14 29 1 + 27 15 16 2 + 28 15 30 1 + 29 16 31 1 + 30 17 24 1 + 31 17 25 1 + 32 17 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-BENZOYLOXY-N-METHYL-2-OXO-1,3,2-OXAZAPHOSPHORINANE +@MOLECULE +GEHBOK + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.4246 2.5895 1.2387 C.3 1 GEHB 0.0280 + 2 C2 2.5336 3.1825 2.6748 C.3 1 GEHB 0.0000 + 3 C3 1.5093 2.0980 3.1176 C.3 1 GEHB 0.4010 + 4 C4 0.9895 2.1204 1.6526 C.3 1 GEHB 0.0000 + 5 C5 3.4296 1.4976 0.9960 C.2 1 GEHB 0.8710 + 6 O6 3.0015 0.3025 1.1867 O.2 1 GEHB -0.9000 + 7 O7 4.6538 1.7854 0.8749 O.3 1 GEHB -0.9000 + 8 N8 2.1437 0.7784 3.4702 N.3 1 GEHB -0.8220 + 9 C9 0.4845 2.4683 4.1933 C.2 1 GEHB 0.8710 + 10 O10 0.0050 3.6365 4.2219 O.2 1 GEHB -0.9000 + 11 O11 0.2238 1.5068 4.9916 O.3 1 GEHB -0.9000 + 12 S12 2.5777 3.6584 -0.1509 S.3 1 GEHB 1.2100 + 13 O13 3.6155 4.6564 0.0647 O.3 1 GEHB -0.6500 + 14 O14 2.5482 2.9095 -1.3991 O.3 1 GEHB -0.6500 + 15 C15 1.0750 4.6564 -0.2346 C.2 1 GEHB -0.0090 + 16 C16 0.9670 5.8031 0.5568 C.2 1 GEHB -0.1500 + 17 C17 -0.1969 6.5688 0.4961 C.2 1 GEHB -0.1500 + 18 C18 -1.2343 6.1993 -0.3623 C.2 1 GEHB -0.1500 + 19 C19 -1.1110 5.0660 -1.1681 C.2 1 GEHB -0.1500 + 20 C20 0.0473 4.2913 -1.1107 C.2 1 GEHB -0.1500 + 21 H21 2.1775 4.2139 2.7715 H 1 GEHB 0.0000 + 22 H22 3.5192 3.1275 3.1488 H 1 GEHB 0.0000 + 23 H23 0.6402 1.1677 1.2418 H 1 GEHB 0.0000 + 24 H24 0.1846 2.8468 1.4966 H 1 GEHB 0.0000 + 25 H25 2.9875 0.8922 4.0298 H 1 GEHB 0.4500 + 26 H26 1.4461 0.2828 4.0562 H 1 GEHB 0.4500 + 27 H27 2.3963 0.2169 2.6184 H 1 GEHB 0.4500 + 28 H28 1.7739 6.1009 1.2219 H 1 GEHB 0.1500 + 29 H29 -0.2966 7.4506 1.1238 H 1 GEHB 0.1500 + 30 H30 -2.1413 6.7967 -0.4012 H 1 GEHB 0.1500 + 31 H31 -1.9186 4.7847 -1.8385 H 1 GEHB 0.1500 + 32 H32 0.1396 3.4111 -1.7424 H 1 GEHB 0.1500 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 1 12 1 + 5 2 3 1 + 6 2 21 1 + 7 2 22 1 + 8 3 4 1 + 9 3 8 1 + 10 3 9 1 + 11 4 23 1 + 12 4 24 1 + 13 5 6 2 + 14 5 7 1 + 15 8 25 1 + 16 8 26 1 + 17 8 27 1 + 18 9 10 2 + 19 9 11 1 + 20 12 13 1 + 21 12 14 1 + 22 12 15 1 + 23 15 16 2 + 24 15 20 1 + 25 16 17 1 + 26 16 28 1 + 27 17 18 2 + 28 17 29 1 + 29 18 19 1 + 30 18 30 1 + 31 19 20 2 + 32 19 31 1 + 33 20 32 1 +@SUBSTRUCTURE + 1 GEHB 1 +@COMMENT +COMMENT TRANS-2,4-METHANOGLUTAMIC ACID-2-PHENYLSULFONE DIHYDRATE (T +@MOLECULE +GEHPUE + 21 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.1431 7.1405 11.9129 S.3 1 UNCH 0.0080 + 2 S2 0.8998 8.7309 11.5236 S.3 1 UNCH 0.0000 + 3 S3 1.3702 9.3603 9.6248 S.3 1 UNCH 0.0080 + 4 O1 1.5079 5.8019 9.2175 O.2 1 UNCH -0.5700 + 5 O2 -0.1086 3.4487 11.1995 O.2 1 UNCH -0.5700 + 6 O3 -1.1420 9.6580 7.8674 O.2 1 UNCH -0.5700 + 7 O4 -0.8202 6.2197 7.4187 O.2 1 UNCH -0.5700 + 8 N1 1.2249 5.7768 11.5338 N.3 1 UNCH -0.4380 + 9 N2 -0.4180 3.8337 8.9620 N.3 1 UNCH -0.8000 + 10 N3 0.5782 8.2646 8.6186 N.3 1 UNCH -0.4380 + 11 N4 -2.1366 7.6931 6.2711 N.3 1 UNCH -0.8000 + 12 C1 1.0573 5.3183 10.2481 C.2 1 UNCH 0.6300 + 13 C2 0.1318 4.0891 10.1866 C.2 1 UNCH 0.6300 + 14 C3 -0.5725 8.5762 7.9376 C.2 1 UNCH 0.6300 + 15 C4 -1.1746 7.3667 7.1879 C.2 1 UNCH 0.6300 + 16 H1 0.8058 5.2285 12.2810 H 1 UNCH 0.3700 + 17 H2 -0.3531 4.5411 8.2263 H 1 UNCH 0.3700 + 18 H3 -1.1459 3.1383 8.8889 H 1 UNCH 0.3700 + 19 H4 0.9305 7.3045 8.5769 H 1 UNCH 0.3700 + 20 H5 -2.4514 8.6563 6.2046 H 1 UNCH 0.3700 + 21 H6 -2.6404 6.9656 5.7855 H 1 UNCH 0.3700 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 2 3 1 + 4 3 10 1 + 5 4 12 2 + 6 5 13 2 + 7 6 14 2 + 8 7 15 2 + 9 8 12 am + 10 8 16 1 + 11 9 13 am + 12 9 17 1 + 13 9 18 1 + 14 10 14 am + 15 10 19 1 + 16 11 15 am + 17 11 20 1 + 18 11 21 1 + 19 12 13 1 + 20 14 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(OXAMIDO)TRISULFANE +@MOLECULE +GEHXEW + 38 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 3.4972 0.4406 9.0499 CL 1 UNCH -0.0400 + 2 N3 3.0146 -0.4659 10.4345 N.3 1 UNCH -0.3791 + 3 C4 3.1891 0.0941 11.6733 C.2 1 UNCH 0.6500 + 4 O1 4.2681 0.8941 11.8399 O.3 1 UNCH -0.4300 + 5 N1 2.3389 -0.1686 12.6280 N.2 1 UNCH -0.6960 + 6 C7 1.3751 -1.1176 11.9656 C.3 1 UNCH 0.6151 + 7 C8 4.4139 1.5038 13.1303 C.3 1 UNCH 0.2800 + 8 C9 5.6511 2.3798 13.0999 C.3 1 UNCH 0.0000 + 9 C1 1.6591 -0.9921 10.4013 C.3 1 UNCH 0.6151 + 10 N2 0.5864 -0.0791 9.8685 N.2 1 UNCH -0.6960 + 11 N4 -0.0324 -0.7528 11.9944 N.3 1 UNCH -0.3791 + 12 CL2 -0.6059 -0.1083 13.4869 CL 1 UNCH -0.0400 + 13 O4 -1.4467 0.6335 10.7802 O.3 1 UNCH -0.4300 + 14 C15 -1.6727 1.3944 9.5851 C.3 1 UNCH 0.2800 + 15 C16 -3.0029 2.1082 9.7262 C.3 1 UNCH 0.0000 + 16 C10 -0.2808 -0.0512 10.8434 C.2 1 UNCH 0.6500 + 17 C11 1.6148 -2.5042 12.5856 C.3 1 UNCH 0.0000 + 18 C12 1.2866 -3.6664 11.6617 C.3 1 UNCH 0.0000 + 19 C13 2.0453 -3.5308 10.3511 C.3 1 UNCH 0.0000 + 20 C14 1.5770 -2.2982 9.5938 C.3 1 UNCH 0.0000 + 21 H81 3.5332 2.1165 13.3526 H 1 UNCH 0.0000 + 22 H82 4.5301 0.7271 13.8942 H 1 UNCH 0.0000 + 23 H91 5.5604 3.1479 12.3247 H 1 UNCH 0.0000 + 24 H92 6.5383 1.7856 12.8570 H 1 UNCH 0.0000 + 25 H93 5.8068 2.8689 14.0655 H 1 UNCH 0.0000 + 26 H111 1.0492 -2.6126 13.5193 H 1 UNCH 0.0000 + 27 H112 2.6717 -2.6000 12.8715 H 1 UNCH 0.0000 + 28 H121 1.5655 -4.6072 12.1500 H 1 UNCH 0.0000 + 29 H122 0.2069 -3.7101 11.4756 H 1 UNCH 0.0000 + 30 H131 3.1242 -3.4741 10.5381 H 1 UNCH 0.0000 + 31 H132 1.8736 -4.4211 9.7353 H 1 UNCH 0.0000 + 32 H141 0.5361 -2.4756 9.2890 H 1 UNCH 0.0000 + 33 H142 2.1438 -2.2103 8.6588 H 1 UNCH 0.0000 + 34 H151 -1.7042 0.7223 8.7204 H 1 UNCH 0.0000 + 35 H152 -0.8709 2.1300 9.4567 H 1 UNCH 0.0000 + 36 H161 -3.2222 2.7045 8.8361 H 1 UNCH 0.0000 + 37 H162 -3.8131 1.3873 9.8776 H 1 UNCH 0.0000 + 38 H163 -2.9957 2.7672 10.6008 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 2 3 am + 3 2 9 1 + 4 3 4 1 + 5 3 5 2 + 6 4 7 1 + 7 5 6 1 + 8 6 9 1 + 9 6 11 1 + 10 6 17 1 + 11 7 8 1 + 12 7 21 1 + 13 7 22 1 + 14 8 23 1 + 15 8 24 1 + 16 8 25 1 + 17 9 10 1 + 18 9 20 1 + 19 10 16 2 + 20 11 12 1 + 21 11 16 am + 22 13 14 1 + 23 13 16 1 + 24 14 15 1 + 25 14 34 1 + 26 14 35 1 + 27 15 36 1 + 28 15 37 1 + 29 15 38 1 + 30 17 18 1 + 31 17 26 1 + 32 17 27 1 + 33 18 19 1 + 34 18 28 1 + 35 18 29 1 + 36 19 20 1 + 37 19 30 1 + 38 19 31 1 + 39 20 32 1 + 40 20 33 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,5-DIETHOXY-3A,6A-TETRAMETHYLENE-1,4-DICHLORO-1,4-DIHYDRO- +@MOLECULE +GEJYOJ + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.1495 2.3642 2.6035 P 1 GEJY -0.5024 + 2 F1 1.4214 0.6938 0.9870 F 1 GEJY -0.2220 + 3 F2 -0.9812 0.5650 4.2519 F 1 GEJY -0.3400 + 4 F3 -0.8016 -0.1496 2.2161 F 1 GEJY -0.3400 + 5 F4 0.9500 -0.0667 3.5050 F 1 GEJY -0.3400 + 6 N1 1.7427 2.8626 0.4089 N.3 1 GEJY -0.7882 + 7 C1 -0.1747 0.6165 3.1517 C.3 1 GEJY 1.2750 + 8 C2 1.1456 1.9706 1.2803 C.2 1 GEJY 0.5194 + 9 C3 1.8127 4.2964 0.6744 C.3 1 GEJY 0.3691 + 10 C4 2.7178 2.3607 -0.5549 C.3 1 GEJY 0.3691 + 11 H31 0.8190 4.7132 0.8677 H 1 GEJY 0.0000 + 12 H32 2.2168 4.8444 -0.1839 H 1 GEJY 0.0000 + 13 H33 2.4609 4.4955 1.5343 H 1 GEJY 0.0000 + 14 H41 2.8971 3.0842 -1.3573 H 1 GEJY 0.0000 + 15 H42 3.6698 2.1525 -0.0559 H 1 GEJY 0.0000 + 16 H43 2.3622 1.4411 -1.0319 H 1 GEJY 0.0000 +@BOND + 1 1 8 2 + 2 1 7 1 + 3 2 8 1 + 4 3 7 1 + 5 4 7 1 + 6 5 7 1 + 7 6 10 1 + 8 6 9 1 + 9 6 8 1 + 10 9 13 1 + 11 9 12 1 + 12 9 11 1 + 13 10 16 1 + 14 10 15 1 + 15 10 14 1 +@SUBSTRUCTURE + 1 GEJY 1 +@COMMENT +COMMENT (Z)-1-DIMETHYLAMINO-1,3,3,3-TETRAFLUORO-2-PHOSPHA-1-PROPENE +@MOLECULE +GEKXEZ + 18 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.3964 2.3499 1.3617 C.3 1 GEKX 0.2700 + 2 C2 -1.6992 1.5594 1.1518 C.3 1 GEKX 0.0000 + 3 C3 0.7815 1.6301 0.6828 C.3 1 GEKX 0.0000 + 4 C4 -0.5617 3.7351 0.7062 C.3 1 GEKX 0.0000 + 5 N1 -0.1286 2.6054 2.7954 N.3 1 GEKX -0.6300 + 6 N2 -0.0519 1.4139 3.6001 N.3 1 GEKX -0.7200 + 7 H1 0.7199 3.1736 2.8928 H 1 GEKX 0.3600 + 8 H2 0.5582 0.6932 3.2106 H 1 GEKX 0.3600 + 9 H3 -0.9725 0.9874 3.7308 H 1 GEKX 0.3600 + 10 H21 -1.9465 1.4892 0.0861 H 1 GEKX 0.0000 + 11 H22 -1.6227 0.5349 1.5324 H 1 GEKX 0.0000 + 12 H23 -2.5445 2.0441 1.6542 H 1 GEKX 0.0000 + 13 H31 1.7232 2.1683 0.8418 H 1 GEKX 0.0000 + 14 H32 0.6234 1.5583 -0.3997 H 1 GEKX 0.0000 + 15 H33 0.9103 0.6092 1.0577 H 1 GEKX 0.0000 + 16 H41 -0.7714 3.6423 -0.3659 H 1 GEKX 0.0000 + 17 H42 -1.3907 4.2944 1.1563 H 1 GEKX 0.0000 + 18 H43 0.3462 4.3412 0.8112 H 1 GEKX 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 10 1 + 6 2 11 1 + 7 2 12 1 + 8 3 13 1 + 9 3 14 1 + 10 3 15 1 + 11 4 16 1 + 12 4 17 1 + 13 4 18 1 + 14 5 6 1 + 15 5 7 1 + 16 6 8 1 + 17 6 9 1 +@SUBSTRUCTURE + 1 GEKX 1 +@COMMENT +COMMENT T-BUTYLHYDRAZINE HYDROCHLORIDE +@MOLECULE +GEMCEG + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.3764 1.3766 5.5410 C.3 1 UNCH 0.0100 + 2 C2 2.8030 1.3620 4.9641 C.3 1 UNCH 0.0100 + 3 C3 1.8446 0.2234 4.6754 C.3 1 UNCH -0.2000 + 4 C4 1.1942 1.1154 6.9525 C.1 1 UNCH 0.4521 + 5 C5 0.3395 2.3124 4.9720 C.3 1 UNCH 0.0950 + 6 C6 3.1692 2.2836 3.8278 C.3 1 UNCH 0.0950 + 7 C7 3.9104 1.0877 5.8542 C.1 1 UNCH 0.4521 + 8 N1 1.0249 0.9071 8.0802 N.1 1 UNCH -0.5571 + 9 N2 4.8122 0.8685 6.5488 N.1 1 UNCH -0.5571 + 10 H1 2.0247 -0.7406 5.1452 H 1 UNCH 0.1000 + 11 H2 1.4386 0.1260 3.6737 H 1 UNCH 0.1000 + 12 H3 0.5173 3.3352 5.3215 H 1 UNCH 0.0000 + 13 H4 0.3369 2.3237 3.8777 H 1 UNCH 0.0000 + 14 H5 -0.6669 2.0136 5.2873 H 1 UNCH 0.0000 + 15 H6 4.1065 1.9649 3.3571 H 1 UNCH 0.0000 + 16 H7 2.4107 2.3026 3.0391 H 1 UNCH 0.0000 + 17 H8 3.3022 3.3068 4.1954 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 3 1 + 6 2 6 1 + 7 2 7 1 + 8 3 10 1 + 9 3 11 1 + 10 4 8 3 + 11 5 12 1 + 12 5 13 1 + 13 5 14 1 + 14 6 15 1 + 15 6 16 1 + 16 6 17 1 + 17 7 9 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CIS-1,2-DICYANO-1,2-DIMETHYLCYCLOPROPANE +@MOLECULE +GEMCOQ + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.9926 5.0093 1.0665 C.3 1 UNCH 0.2530 + 2 C2 5.1885 5.8313 0.6164 C.3 1 UNCH 0.2530 + 3 C3 4.9484 4.4664 0.0299 C.3 1 UNCH -0.2000 + 4 C4 3.9635 4.3592 2.3520 C.1 1 UNCH 0.4521 + 5 C5 2.0338 6.4141 1.2009 C.3 1 UNCH 0.2800 + 6 C6 5.8779 7.2177 -1.2421 C.3 1 UNCH 0.2800 + 7 C7 6.2794 6.0423 1.5329 C.1 1 UNCH 0.4521 + 8 N1 3.9418 3.8372 3.3880 N.1 1 UNCH -0.5571 + 9 N2 7.1745 6.2081 2.2520 N.1 1 UNCH -0.5571 + 10 O1 2.6847 5.3435 0.5229 O.3 1 UNCH -0.4280 + 11 O2 4.8907 6.9644 -0.2474 O.3 1 UNCH -0.4280 + 12 H1 4.5877 4.3988 -0.9900 H 1 UNCH 0.1000 + 13 H2 5.6138 3.6564 0.3085 H 1 UNCH 0.1000 + 14 H3 2.6908 7.2842 1.2868 H 1 UNCH 0.0000 + 15 H4 1.7089 6.0906 2.1939 H 1 UNCH 0.0000 + 16 H5 1.1511 6.6986 0.6221 H 1 UNCH 0.0000 + 17 H6 5.5084 8.0131 -1.8949 H 1 UNCH 0.0000 + 18 H7 6.0570 6.3248 -1.8480 H 1 UNCH 0.0000 + 19 H8 6.8104 7.5534 -0.7797 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 10 1 + 5 2 3 1 + 6 2 7 1 + 7 2 11 1 + 8 3 12 1 + 9 3 13 1 + 10 4 8 3 + 11 5 10 1 + 12 5 14 1 + 13 5 15 1 + 14 5 16 1 + 15 6 11 1 + 16 6 17 1 + 17 6 18 1 + 18 6 19 1 + 19 7 9 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CIS-1,2-DICYANO-1,2-DIMETHOXYCYCLOPROPANE +@MOLECULE +GEMDAD + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.9196 2.6325 4.1977 C.3 1 UNCH 0.2630 + 2 C2 4.2322 2.8852 4.9970 C.3 1 UNCH 0.2630 + 3 C3 4.2752 2.4818 3.5364 C.3 1 UNCH -0.2000 + 4 C4 2.2098 1.3873 4.4716 C.1 1 UNCH 0.4521 + 5 N1 1.6090 0.4129 4.6679 N.1 1 UNCH -0.5571 + 6 N2 2.0903 3.8144 3.7491 N.3 1 UNCH -0.6980 + 7 C5 1.4277 3.5883 2.4626 C.3 1 UNCH 0.2700 + 8 C6 1.1151 4.2362 4.7584 C.3 1 UNCH 0.2700 + 9 C7 4.5765 4.2752 5.2776 C.1 1 UNCH 0.4521 + 10 N3 4.8809 5.3670 5.5311 N.1 1 UNCH -0.5571 + 11 N4 4.7048 1.8446 5.9868 N.3 1 UNCH -0.6980 + 12 C8 4.1339 2.0352 7.3230 C.3 1 UNCH 0.2700 + 13 C9 6.1646 1.7549 6.0638 C.3 1 UNCH 0.2700 + 14 H1 4.5757 3.2241 2.8041 H 1 UNCH 0.1000 + 15 H2 4.6210 1.4836 3.2884 H 1 UNCH 0.1000 + 16 H3 0.9384 4.5061 2.1180 H 1 UNCH 0.0000 + 17 H4 0.6732 2.7957 2.5154 H 1 UNCH 0.0000 + 18 H5 2.1589 3.3149 1.6942 H 1 UNCH 0.0000 + 19 H6 1.6066 4.4269 5.7184 H 1 UNCH 0.0000 + 20 H7 0.3319 3.4871 4.9195 H 1 UNCH 0.0000 + 21 H8 0.6363 5.1746 4.4574 H 1 UNCH 0.0000 + 22 H9 4.4944 2.9517 7.8031 H 1 UNCH 0.0000 + 23 H10 4.3850 1.1871 7.9695 H 1 UNCH 0.0000 + 24 H11 3.0408 2.0829 7.2757 H 1 UNCH 0.0000 + 25 H12 6.4631 0.9127 6.6980 H 1 UNCH 0.0000 + 26 H13 6.5931 1.5690 5.0730 H 1 UNCH 0.0000 + 27 H14 6.6181 2.6668 6.4678 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 6 1 + 5 2 3 1 + 6 2 9 1 + 7 2 11 1 + 8 3 14 1 + 9 3 15 1 + 10 4 5 3 + 11 6 7 1 + 12 6 8 1 + 13 7 16 1 + 14 7 17 1 + 15 7 18 1 + 16 8 19 1 + 17 8 20 1 + 18 8 21 1 + 19 9 10 3 + 20 11 12 1 + 21 11 13 1 + 22 12 22 1 + 23 12 23 1 + 24 12 24 1 + 25 13 25 1 + 26 13 26 1 + 27 13 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-1,2-DICYANO-1,2-BIS(DIMETHYLAMINO)-CYCLOPROPANE +@MOLECULE +GERCUB + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.2101 2.3125 0.4720 S.3 1 GERC 1.4760 + 2 C1 0.7905 1.4217 1.9025 C.2 1 GERC 0.7740 + 3 C2 1.5319 -0.1902 3.2309 C.2 1 GERC 0.3090 + 4 C3 1.4124 0.9910 3.9869 C.2 1 GERC 0.3090 + 5 C4 1.7293 1.0460 5.3379 C.2 1 GERC -0.1090 + 6 C5 2.1788 -0.1561 5.9063 C.2 1 GERC -0.1500 + 7 C6 2.2988 -1.3414 5.1481 C.2 1 GERC -0.1500 + 8 C7 1.9755 -1.3851 3.7828 C.2 1 GERC -0.1090 + 9 N1 1.1383 0.1257 1.9570 N.3 1 GERC -0.7000 + 10 N2 0.9542 1.9501 3.1269 N.2 1 GERC -0.7000 + 11 O1 -1.0037 1.5963 0.0831 O.3 1 GERC -0.8167 + 12 O2 1.3100 2.1933 -0.4839 O.3 1 GERC -0.8167 + 13 O3 -0.0098 3.6627 0.9961 O.3 1 GERC -0.8167 + 14 H1 1.6326 1.9618 5.9074 H 1 GERC 0.1500 + 15 H2 2.4432 -0.1764 6.9641 H 1 GERC 0.1500 + 16 H3 2.6531 -2.2487 5.6387 H 1 GERC 0.1500 + 17 H4 2.0631 -2.2872 3.1904 H 1 GERC 0.1500 + 18 H5 1.0846 -0.4559 1.1256 H 1 GERC 0.4500 + 19 H6 0.7364 2.9346 3.2748 H 1 GERC 0.4500 +@BOND + 1 1 13 1 + 2 1 12 1 + 3 1 11 1 + 4 1 2 1 + 5 2 10 2 + 6 2 9 am + 7 3 9 1 + 8 3 8 1 + 9 3 4 2 + 10 4 10 1 + 11 4 5 1 + 12 5 14 1 + 13 5 6 2 + 14 6 15 1 + 15 6 7 1 + 16 7 16 1 + 17 7 8 2 + 18 8 17 1 + 19 9 18 1 + 20 10 19 1 +@SUBSTRUCTURE + 1 GERC 1 +@COMMENT +COMMENT 2-BENZIMIDAZOLESULFONIC ACID MONOHYDRATE +@MOLECULE +GESCIQ + 35 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.2158 1.2600 2.7015 S.3 1 GESC -0.0800 + 2 C1 1.1890 0.5110 3.3165 C.2 1 GESC 0.2240 + 3 N1 1.3253 -0.7217 2.8548 N.2 1 GESC -0.1810 + 4 C2 0.2924 -1.1452 2.0173 C.2 1 GESC 0.1520 + 5 C3 0.3013 -2.5188 1.4511 C.3 1 GESC 0.1810 + 6 C4 -0.6541 -0.1519 1.8290 C.2 1 GESC -0.1400 + 7 C5 -1.9272 -0.1842 1.0265 C.3 1 GESC 0.1800 + 8 C6 -3.1058 -0.7049 1.8500 C.3 1 GESC 0.2800 + 9 O1 -2.8541 -2.0461 2.2629 O.3 1 GESC -0.6800 + 10 C7 2.4655 -1.5540 3.2764 C.3 1 GESC 0.6575 + 11 N2 5.0116 -0.5866 0.6728 N.2 1 GESC -0.6200 + 12 C8 5.2659 -1.7952 0.1472 C.2 1 GESC 0.4765 + 13 C9 6.2607 -1.8835 -0.9675 C.3 1 GESC 0.1435 + 14 N3 4.7158 -2.9373 0.5945 N.2 1 GESC -0.6200 + 15 C10 3.8561 -2.8526 1.6133 C.2 1 GESC 0.4100 + 16 N4 3.3404 -4.0721 2.0498 N.3 1 GESC -0.9000 + 17 C11 3.4904 -1.6547 2.1947 C.2 1 GESC -0.1435 + 18 C12 4.1294 -0.5431 1.6825 C.2 1 GESC 0.1600 + 19 H1 1.8741 1.0058 3.9945 H 1 GESC 0.1500 + 20 H2 -0.6357 -2.7502 0.9364 H 1 GESC 0.0000 + 21 H3 0.4268 -3.2708 2.2347 H 1 GESC 0.0000 + 22 H4 1.0998 -2.6236 0.7123 H 1 GESC 0.0000 + 23 H5 -2.1626 0.8163 0.6445 H 1 GESC 0.0000 + 24 H6 -1.7774 -0.8289 0.1520 H 1 GESC 0.0000 + 25 H7 -4.0155 -0.6969 1.2411 H 1 GESC 0.0000 + 26 H8 -3.2734 -0.0943 2.7432 H 1 GESC 0.0000 + 27 H9 -3.6878 -2.3832 2.6425 H 1 GESC 0.4000 + 28 H10 6.2508 -0.9671 -1.5654 H 1 GESC 0.0000 + 29 H11 6.0264 -2.7252 -1.6263 H 1 GESC 0.0000 + 30 H12 7.2638 -2.0258 -0.5555 H 1 GESC 0.0000 + 31 H13 3.7225 -4.7750 1.4085 H 1 GESC 0.4000 + 32 H14 3.6676 -4.3104 2.9829 H 1 GESC 0.4000 + 33 H15 3.9543 0.4592 2.0638 H 1 GESC 0.1500 + 34 H16 2.9335 -1.1120 4.1661 H 1 GESC 0.0000 + 35 H17 2.0805 -2.5250 3.6041 H 1 GESC 0.0000 +@BOND + 1 1 6 1 + 2 1 2 1 + 3 2 19 1 + 4 2 3 2 + 5 3 10 1 + 6 3 4 1 + 7 4 6 2 + 8 4 5 1 + 9 5 22 1 + 10 5 21 1 + 11 5 20 1 + 12 6 7 1 + 13 7 24 1 + 14 7 23 1 + 15 7 8 1 + 16 8 26 1 + 17 8 25 1 + 18 8 9 1 + 19 9 27 1 + 20 10 35 1 + 21 10 34 1 + 22 10 17 1 + 23 11 18 1 + 24 11 12 2 + 25 12 14 am + 26 12 13 1 + 27 13 30 1 + 28 13 29 1 + 29 13 28 1 + 30 14 15 2 + 31 15 17 1 + 32 15 16 am + 33 16 32 1 + 34 16 31 1 + 35 17 18 2 + 36 18 33 1 +@SUBSTRUCTURE + 1 GESC 1 +@COMMENT +COMMENT THIAMINE PICRATE (METABOLIC CATALYZING ACTIVITY) +@MOLECULE +GESNIB + 13 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.8342 0.0964 6.3504 C.2 1 UNCH -0.0320 + 2 C2 2.9161 0.8771 6.4815 C.2 1 UNCH -0.1500 + 3 C3 2.8722 1.7396 7.5848 C.2 1 UNCH -0.1500 + 4 C4 1.7536 1.7516 8.4651 C.2 1 UNCH -0.1500 + 5 C5 0.6596 0.9012 8.2571 C.2 1 UNCH -0.1500 + 6 C6 0.7763 0.1077 7.1829 C.2 1 UNCH -0.0320 + 7 C7 0.7462 -0.8098 6.0686 C.3 1 UNCH -0.1360 + 8 H2 3.7540 0.8500 5.7996 H 1 UNCH 0.1500 + 9 H3 3.7051 2.4131 7.7755 H 1 UNCH 0.1500 + 10 H4 1.7520 2.4339 9.3124 H 1 UNCH 0.1500 + 11 H5 -0.2004 0.8922 8.9113 H 1 UNCH 0.1500 + 12 H71 0.0884 -0.6116 5.2299 H 1 UNCH 0.1000 + 13 H7 0.8746 -1.8716 6.2461 H 1 UNCH 0.1000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 8 1 + 6 3 4 2 + 7 3 9 1 + 8 4 5 1 + 9 4 10 1 + 10 5 6 2 + 11 5 11 1 + 12 6 7 1 + 13 7 12 1 + 14 7 13 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1H-CYCLOPROPABENZENE (AT 120 DEG.K) +@MOLECULE +GESSUS + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.7074 3.5913 3.6406 S.3 1 UNCH 1.4470 + 2 O1 2.2676 2.2450 3.3387 O.3 1 UNCH -0.6500 + 3 O2 4.0445 4.0317 3.3009 O.3 1 UNCH -0.6500 + 4 N1 1.5961 4.6820 2.9512 N.3 1 UNCH -0.8494 + 5 C1 2.4906 3.8440 5.3907 C.2 1 UNCH -0.0090 + 6 C2 1.5745 3.0583 6.0947 C.2 1 UNCH -0.1500 + 7 C3 1.4240 3.2422 7.4702 C.2 1 UNCH -0.1500 + 8 C4 2.1877 4.2036 8.1463 C.2 1 UNCH -0.1435 + 9 C5 3.1302 4.9579 7.4338 C.2 1 UNCH -0.1500 + 10 C6 3.2859 4.7791 6.0583 C.2 1 UNCH -0.1500 + 11 C7 2.0514 4.3707 9.6318 C.3 1 UNCH 0.1435 + 12 C8 0.1666 4.3732 3.1241 C.3 1 UNCH 0.3557 + 13 C9 1.9003 6.1164 3.0872 C.3 1 UNCH 0.3557 + 14 H2 0.9851 2.2992 5.5851 H 1 UNCH 0.1500 + 15 H3 0.7133 2.6238 8.0152 H 1 UNCH 0.1500 + 16 H5 3.7560 5.6832 7.9503 H 1 UNCH 0.1500 + 17 H6 4.0306 5.3614 5.5202 H 1 UNCH 0.1500 + 18 H71 2.7407 3.6961 10.1489 H 1 UNCH 0.0000 + 19 H72 2.2724 5.4008 9.9305 H 1 UNCH 0.0000 + 20 H73 1.0291 4.1508 9.9570 H 1 UNCH 0.0000 + 21 H81 -0.0382 3.3173 2.9280 H 1 UNCH 0.0000 + 22 H82 -0.1735 4.6307 4.1310 H 1 UNCH 0.0000 + 23 H83 -0.4227 4.9488 2.4026 H 1 UNCH 0.0000 + 24 H91 1.6622 6.4765 4.0919 H 1 UNCH 0.0000 + 25 H92 2.9506 6.3226 2.8644 H 1 UNCH 0.0000 + 26 H93 1.3062 6.6872 2.3658 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 4 12 1 + 6 4 13 1 + 7 5 6 2 + 8 5 10 1 + 9 6 7 1 + 10 6 14 1 + 11 7 8 2 + 12 7 15 1 + 13 8 9 1 + 14 8 11 1 + 15 9 10 2 + 16 9 16 1 + 17 10 17 1 + 18 11 18 1 + 19 11 19 1 + 20 11 20 1 + 21 12 21 1 + 22 12 22 1 + 23 12 23 1 + 24 13 24 1 + 25 13 25 1 + 26 13 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N-DIMETHYLTOLUENE-P-SULFONAMIDE +@MOLECULE +GETFIU + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0456 4.1189 12.8475 C.2 1 GETF 0.5556 + 2 C2 -0.7647 4.7645 11.7089 C.2 1 GETF -0.0010 + 3 C3 -2.0793 5.4088 11.8733 C.2 1 GETF -0.1356 + 4 C4 -2.6378 5.3480 13.0957 C.2 1 GETF 0.2044 + 5 C5 -2.0127 4.6737 14.2239 C.2 1 GETF -0.1500 + 6 C6 -0.8099 4.0909 14.0991 C.2 1 GETF 0.2188 + 7 N1 -0.1670 4.7381 10.5377 N.1 1 GETF 0.3566 + 8 N2 0.3154 4.7348 9.5050 N.2 1 GETF -0.3700 + 9 N3 -3.9548 5.9883 13.2594 N.2 1 GETF 0.8356 + 10 N4 -0.2534 3.4346 15.2430 N.2 1 GETF 0.8356 + 11 O1 1.0903 3.7145 12.6923 O.2 1 GETF -0.5700 + 12 O2 -4.4278 6.6092 12.2992 O.3 1 GETF -0.5200 + 13 O3 -4.5057 5.8597 14.3594 O.2 1 GETF -0.5200 + 14 O4 -0.1602 4.1018 16.2813 O.3 1 GETF -0.5200 + 15 O5 0.0346 2.2398 15.1209 O.2 1 GETF -0.5200 + 16 H1 -2.5299 5.8935 11.0111 H 1 GETF 0.1500 + 17 H2 -2.5505 4.6458 15.1712 H 1 GETF 0.1500 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 11 2 + 4 2 3 1 + 5 2 7 2 + 6 3 4 2 + 7 3 16 1 + 8 4 5 1 + 9 4 9 1 + 10 5 6 2 + 11 5 17 1 + 12 6 10 1 + 13 7 8 2 + 14 9 12 1 + 15 9 13 2 + 16 10 14 1 + 17 10 15 2 +@SUBSTRUCTURE + 1 GETF 1 +@COMMENT +COMMENT 2-DIAZO-4,6-DINITROPHENOL +@MOLECULE +GETFOA + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.5243 0.8668 2.5977 C.2 1 GETF -0.1710 + 2 C2 3.7762 2.0925 3.2234 C.2 1 GETF 0.1380 + 3 C3 3.0211 3.2466 2.9971 C.2 1 GETF -0.1500 + 4 C4 1.9537 3.1695 2.0919 C.2 1 GETF 0.1330 + 5 C5 1.6288 1.9970 1.4104 C.2 1 GETF 0.1770 + 6 C6 2.4234 0.8683 1.6827 C.2 1 GETF 0.1330 + 7 N1 4.8541 2.1203 4.1178 N.1 1 GETF 1.3540 + 8 N2 5.6615 2.2783 4.8355 N.1 1 GETF -0.4920 + 9 N3 1.1909 4.3790 1.8807 N.2 1 GETF 0.9070 + 10 N4 2.0935 -0.3646 0.9762 N.2 1 GETF 0.9070 + 11 O1 4.2686 -0.1218 2.8770 O.3 1 GETF -0.8290 + 12 O2 1.7778 5.3017 1.3036 O.3 1 GETF -0.5200 + 13 O3 0.0604 4.4229 2.3755 O.2 1 GETF -0.5200 + 14 O4 2.6185 -0.5289 -0.1350 O.3 1 GETF -0.5200 + 15 O5 1.2405 -1.0966 1.4994 O.2 1 GETF -0.5200 + 16 CL1 0.3314 1.9597 0.2635 CL 1 GETF -0.1770 + 17 H1 3.2494 4.1829 3.5036 H 1 GETF 0.1500 +@BOND + 1 1 11 1 + 2 1 6 1 + 3 1 2 2 + 4 2 7 1 + 5 2 3 1 + 6 3 17 1 + 7 3 4 2 + 8 4 9 1 + 9 4 5 1 + 10 5 16 1 + 11 5 6 2 + 12 6 10 1 + 13 7 8 3 + 14 9 13 2 + 15 9 12 1 + 16 10 15 2 + 17 10 14 1 +@SUBSTRUCTURE + 1 GETF 1 +@COMMENT +COMMENT 2-DIAZO-5-CHLORO-4,6-DINITROPHENOL +@MOLECULE +GETJOE + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.3271 0.1831 11.7164 S.3 1 GETJ -0.4960 + 2 P1 4.0174 0.1617 9.6332 P 1 GETJ 1.4213 + 3 S2 5.0241 -1.2011 8.6536 S.3 1 GETJ -0.6773 + 4 S3 4.3422 2.1167 8.8649 S.3 1 GETJ -0.3495 + 5 C1 3.3377 3.1322 9.9075 C.2 1 GETJ 0.1015 + 6 C2 2.0261 3.4420 9.5350 C.2 1 GETJ -0.1500 + 7 C3 1.2570 4.3049 10.3178 C.2 1 GETJ -0.1500 + 8 C4 1.8009 4.8755 11.4668 C.2 1 GETJ -0.1500 + 9 C5 3.1155 4.5905 11.8302 C.2 1 GETJ -0.1500 + 10 C6 3.8853 3.7277 11.0479 C.2 1 GETJ -0.1500 + 11 H1 1.5898 3.0308 8.6272 H 1 GETJ 0.1500 + 12 H2 0.2340 4.5354 10.0309 H 1 GETJ 0.1500 + 13 H3 1.1995 5.5426 12.0798 H 1 GETJ 0.1500 + 14 H4 3.5412 5.0437 12.7222 H 1 GETJ 0.1500 + 15 H5 4.9179 3.5423 11.3355 H 1 GETJ 0.1500 + 16 P1B 2.2544 -0.1617 11.8608 P 1 GETJ 1.4213 + 17 S1B 1.9447 -0.1831 9.7776 S.3 1 GETJ -0.4960 + 18 S2B 1.2478 1.2011 12.8404 S.3 1 GETJ -0.6773 + 19 S3B 1.9296 -2.1167 12.6291 S.3 1 GETJ -0.3495 + 20 C1B 2.9341 -3.1322 11.5865 C.2 1 GETJ 0.1015 + 21 C2B 4.2457 -3.4420 11.9591 C.2 1 GETJ -0.1500 + 22 C6B 2.3865 -3.7277 10.4461 C.2 1 GETJ -0.1500 + 23 C3B 5.0148 -4.3049 11.1762 C.2 1 GETJ -0.1500 + 24 H1B 4.6820 -3.0308 12.8668 H 1 GETJ 0.1500 + 25 C5B 3.1563 -4.5905 9.6638 C.2 1 GETJ -0.1500 + 26 H5B 1.3539 -3.5423 10.1585 H 1 GETJ 0.1500 + 27 C4B 4.4709 -4.8755 10.0272 C.2 1 GETJ -0.1500 + 28 H2B 6.0378 -4.5354 11.4632 H 1 GETJ 0.1500 + 29 H4B 2.7306 -5.0437 8.7718 H 1 GETJ 0.1500 + 30 H3B 5.0722 -5.5426 9.4143 H 1 GETJ 0.1500 +@BOND + 1 1 2 1 + 2 1 16 1 + 3 2 3 1 + 4 2 4 1 + 5 2 17 1 + 6 4 5 1 + 7 5 6 2 + 8 5 10 1 + 9 6 7 1 + 10 6 11 1 + 11 7 8 2 + 12 7 12 1 + 13 8 9 1 + 14 8 13 1 + 15 9 10 2 + 16 9 14 1 + 17 10 15 1 + 18 16 17 1 + 19 16 18 1 + 20 16 19 1 + 21 19 20 1 + 22 20 21 2 + 23 20 22 1 + 24 21 23 1 + 25 21 24 1 + 26 22 25 2 + 27 22 26 1 + 28 23 27 2 + 29 23 28 1 + 30 25 27 1 + 31 25 29 1 + 32 27 30 1 +@SUBSTRUCTURE + 1 GETJ 1 +@COMMENT +COMMENT 2,4-BIS(PHENYLTHIO)-1,3-DITHIA-2LAMBDA-5-,4LAMBDA-5--DIPHOS +@MOLECULE +GEWTAD + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.0050 0.8715 1.6893 N.3 1 GEWT -0.5691 + 2 C1 1.3425 1.4173 1.9756 C.3 1 GEWT 0.4301 + 3 C2 1.1494 2.8559 1.5211 C.2 1 GEWT 0.4946 + 4 O1 1.9867 3.7455 1.5511 O.2 1 GEWT -0.5700 + 5 C3 -0.2254 3.0591 1.0187 C.2 1 GEWT -0.1356 + 6 C4 -0.8007 1.8598 1.1582 C.2 1 GEWT -0.0500 + 7 C5 -0.3085 -0.4687 1.9523 C.2 1 GEWT 0.1000 + 8 C6 -1.5812 -1.0020 1.6837 C.2 1 GEWT -0.1500 + 9 C7 -1.8956 -2.3419 1.9463 C.2 1 GEWT -0.1500 + 10 C8 -0.9388 -3.1902 2.4884 C.2 1 GEWT -0.1500 + 11 C9 0.3292 -2.6968 2.7664 C.2 1 GEWT -0.1500 + 12 C10 0.6361 -1.3559 2.5011 C.2 1 GEWT -0.1500 + 13 H1 1.5717 1.3999 3.0451 H 1 GEWT 0.0000 + 14 H2 2.1175 0.9428 1.3665 H 1 GEWT 0.0000 + 15 H3 -0.6207 3.9813 0.6390 H 1 GEWT 0.1500 + 16 H4 -1.8248 1.6464 0.8833 H 1 GEWT 0.1500 + 17 H5 -2.3670 -0.3850 1.2602 H 1 GEWT 0.1500 + 18 H6 -1.1803 -4.2295 2.6929 H 1 GEWT 0.1500 + 19 H7 1.0861 -3.3514 3.1908 H 1 GEWT 0.1500 + 20 H8 1.6431 -1.0254 2.7385 H 1 GEWT 0.1500 + 21 H9 -2.8916 -2.7162 1.7244 H 1 GEWT 0.1500 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 1 + 4 2 14 1 + 5 2 13 1 + 6 2 3 1 + 7 3 5 1 + 8 3 4 2 + 9 5 15 1 + 10 5 6 2 + 11 6 16 1 + 12 7 12 1 + 13 7 8 2 + 14 8 17 1 + 15 8 9 1 + 16 9 21 1 + 17 9 10 2 + 18 10 18 1 + 19 10 11 1 + 20 11 19 1 + 21 11 12 2 + 22 12 20 1 +@SUBSTRUCTURE + 1 GEWT 1 +@COMMENT +COMMENT 1-PHENYL-1H-PYRROL-3(2H)-ONE +@MOLECULE +GEXGIZ + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -5.6158 0.8601 2.0445 O.2 1 GEXG -0.5700 + 2 O2 -3.6932 1.4738 1.0958 O.3 1 GEXG -0.6500 + 3 O3 0.2521 4.4087 2.9853 O.3 1 GEXG -0.6500 + 4 O4 1.3199 6.1442 2.0791 O.2 1 GEXG -0.5700 + 5 N1 -3.6355 3.8304 2.5457 N.2 1 GEXG -0.7640 + 6 N2 -2.0863 5.0450 1.6489 N.3 1 GEXG -0.7640 + 7 C1 -2.3789 3.8052 2.0733 C.2 1 GEXG 0.6500 + 8 C2 -3.1742 5.8763 1.8562 C.2 1 GEXG 0.2000 + 9 C3 -4.1546 5.1079 2.4184 C.2 1 GEXG 0.2000 + 10 C4 -4.3357 2.6530 3.1007 C.3 1 GEXG 0.5750 + 11 C5 -4.6444 1.5972 2.0494 C.2 1 GEXG 0.6590 + 12 C6 -0.7862 5.4352 1.0640 C.3 1 GEXG 0.5750 + 13 C7 0.3513 5.4033 2.0741 C.2 1 GEXG 0.6590 + 14 H1 -4.0310 0.7488 0.5187 H 1 GEXG 0.5000 + 15 H2 -1.7215 2.9425 2.0406 H 1 GEXG 0.1500 + 16 H3 -3.1129 6.9138 1.5741 H 1 GEXG 0.1500 + 17 H4 -5.1600 5.3093 2.7475 H 1 GEXG 0.1500 + 18 H5 -3.7050 2.2098 3.8772 H 1 GEXG 0.0000 + 19 H6 -5.2775 2.9876 3.5474 H 1 GEXG 0.0000 + 20 H7 -0.5554 4.7478 0.2447 H 1 GEXG 0.0000 + 21 H8 -0.8744 6.4521 0.6686 H 1 GEXG 0.0000 + 22 H9 1.0614 4.5150 3.5389 H 1 GEXG 0.5000 +@BOND + 1 1 11 2 + 2 2 14 1 + 3 2 11 1 + 4 3 22 1 + 5 3 13 1 + 6 4 13 2 + 7 5 10 1 + 8 5 9 1 + 9 5 7 2 + 10 6 12 1 + 11 6 8 1 + 12 6 7 am + 13 7 15 1 + 14 8 16 1 + 15 8 9 2 + 16 9 17 1 + 17 10 19 1 + 18 10 18 1 + 19 10 11 1 + 20 12 21 1 + 21 12 20 1 + 22 12 13 1 +@SUBSTRUCTURE + 1 GEXG 1 +@COMMENT +COMMENT 1,3-BIS(CARBOXYMETHYL)IMIDAZOLE +@MOLECULE +GEYWOW + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.9546 4.6445 3.9490 O.3 1 GEYW -0.7500 + 2 O2 0.6576 0.2302 5.9997 O.3 1 GEYW -0.7500 + 3 O3 2.2594 1.7015 1.4082 O.2 1 GEYW -0.5700 + 4 O4 6.5183 4.0204 1.1500 O.3 1 GEYW -0.6800 + 5 N1 2.4126 3.5762 4.4166 N.2 1 GEYW 0.5710 + 6 N2 1.2118 1.2672 5.5015 N.2 1 GEYW 0.5710 + 7 N3 3.7454 3.3484 1.9362 N.3 1 GEYW -0.7301 + 8 C1 2.2766 2.4161 3.6535 C.2 1 GEYW 0.1757 + 9 C2 1.6962 1.2504 4.1973 C.2 1 GEYW -0.0540 + 10 C3 1.3315 2.4336 6.2867 C.2 1 GEYW 0.0895 + 11 C4 1.9374 3.5871 5.7467 C.2 1 GEYW 0.0895 + 12 C5 2.0496 4.7408 6.5581 C.2 1 GEYW -0.1500 + 13 C6 1.5743 4.7554 7.8696 C.2 1 GEYW -0.1500 + 14 C7 0.9761 3.6195 8.3997 C.2 1 GEYW -0.1500 + 15 C8 0.8555 2.4709 7.6177 C.2 1 GEYW -0.1500 + 16 C9 2.7502 2.4538 2.2427 C.2 1 GEYW 0.5438 + 17 C10 4.2097 3.5395 0.5745 C.3 1 GEYW 0.3001 + 18 C11 5.3646 4.5359 0.4908 C.3 1 GEYW 0.2800 + 19 C12 1.5598 -0.0357 3.4334 C.3 1 GEYW 0.1435 + 20 H1 7.2036 4.7083 1.1034 H 1 GEYW 0.4000 + 21 H2 3.8726 4.1175 2.6041 H 1 GEYW 0.3700 + 22 H3 2.5147 5.6415 6.1558 H 1 GEYW 0.1500 + 23 H4 1.6716 5.6548 8.4740 H 1 GEYW 0.1500 + 24 H5 0.6023 3.6231 9.4215 H 1 GEYW 0.1500 + 25 H6 0.3847 1.5849 8.0458 H 1 GEYW 0.1500 + 26 H7 4.5154 2.5604 0.1893 H 1 GEYW 0.0000 + 27 H8 3.3605 3.8949 -0.0190 H 1 GEYW 0.0000 + 28 H9 5.0934 5.4866 0.9615 H 1 GEYW 0.0000 + 29 H10 5.6249 4.7193 -0.5562 H 1 GEYW 0.0000 + 30 H11 2.5009 -0.2861 2.9327 H 1 GEYW 0.0000 + 31 H12 0.7590 0.0505 2.6925 H 1 GEYW 0.0000 + 32 H13 1.3278 -0.8937 4.0708 H 1 GEYW 0.0000 +@BOND + 1 1 5 1 + 2 2 6 1 + 3 3 16 2 + 4 4 20 1 + 5 4 18 1 + 6 5 11 1 + 7 5 8 2 + 8 6 10 1 + 9 6 9 2 + 10 7 21 1 + 11 7 17 1 + 12 7 16 am + 13 8 16 1 + 14 8 9 1 + 15 9 19 1 + 16 10 15 2 + 17 10 11 1 + 18 11 12 2 + 19 12 22 1 + 20 12 13 1 + 21 13 23 1 + 22 13 14 2 + 23 14 24 1 + 24 14 15 1 + 25 15 25 1 + 26 17 27 1 + 27 17 26 1 + 28 17 18 1 + 29 18 29 1 + 30 18 28 1 + 31 19 32 1 + 32 19 31 1 + 33 19 30 1 +@SUBSTRUCTURE + 1 GEYW 1 +@COMMENT +COMMENT 2-(N-(2-HYDROXYETHYL)CARBOXAMIDE)-3-METHYLQUINOXALINE 1,4-D +@MOLECULE +GICTIV01 + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.6836 1.1208 7.6608 C.2 1 UNCH 0.0365 + 2 C2 6.2457 1.6643 5.7006 C.2 1 UNCH 0.6410 + 3 N1 5.5852 0.5174 5.5035 N.2 1 UNCH -0.7068 + 4 N2 5.2372 0.1918 6.7708 N.3 1 UNCH 0.7256 + 5 N3 6.3266 2.0672 7.0158 N.2 1 UNCH -0.5653 + 6 N4 6.7807 2.3356 4.5932 N.2 1 UNCH -0.1250 + 7 N5 4.4893 -1.0031 7.0579 N.2 1 UNCH 0.8840 + 8 O1 4.2522 -1.1560 8.2603 O.3 1 UNCH -0.5200 + 9 O2 4.1962 -1.6932 6.0794 O.2 1 UNCH -0.5200 + 10 H1 5.5177 1.0597 8.7278 H 1 UNCH 0.1500 + 11 N4B 7.3705 3.3884 4.9101 N.2 1 UNCH -0.1250 + 12 C2B 7.9055 4.0597 3.8027 C.2 1 UNCH 0.6410 + 13 N1B 8.5660 5.2066 3.9998 N.2 1 UNCH -0.7068 + 14 N3B 7.8246 3.6568 2.4875 N.2 1 UNCH -0.5653 + 15 N2B 8.9140 5.5322 2.7325 N.3 1 UNCH 0.7256 + 16 C1B 8.4676 4.6032 1.8425 C.2 1 UNCH 0.0365 + 17 N5B 9.6619 6.7271 2.4454 N.2 1 UNCH 0.8840 + 18 H1B 8.6335 4.6643 0.7755 H 1 UNCH 0.1500 + 19 O1B 9.8990 6.8800 1.2430 O.3 1 UNCH -0.5200 + 20 O2B 9.9550 7.4172 3.4239 O.2 1 UNCH -0.5200 +@BOND + 1 1 4 am + 2 1 5 2 + 3 1 10 1 + 4 2 3 2 + 5 2 5 am + 6 2 6 am + 7 3 4 1 + 8 4 7 1 + 9 6 11 2 + 10 7 8 1 + 11 7 9 2 + 12 11 12 am + 13 12 13 2 + 14 12 14 am + 15 13 15 1 + 16 14 16 2 + 17 15 16 am + 18 15 17 1 + 19 16 18 1 + 20 17 19 1 + 21 17 20 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,1'-DINITRO-3,3'-AZO-1,2,4-TRIAZOLE (YELLOW POLYMORPH) +@MOLECULE +GIDJUY + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 1.5232 2.1109 11.3103 BR 1 GIDJ -0.2300 + 2 C1 4.6228 4.7176 10.8565 C.3 1 GIDJ 0.1220 + 3 C2 4.8024 3.2391 10.4455 C.3 1 GIDJ 0.0000 + 4 C3 3.6839 2.7189 9.5188 C.3 1 GIDJ 0.0000 + 5 C4 2.2830 3.2580 9.8774 C.3 1 GIDJ 0.4300 + 6 C5 2.3502 4.7192 10.3876 C.3 1 GIDJ 0.2800 + 7 O1 3.0009 5.5483 9.3939 O.3 1 GIDJ -0.4300 + 8 C6 4.3609 5.5318 9.6191 C.2 1 GIDJ 0.6590 + 9 O2 5.1828 6.0317 8.8737 O.2 1 GIDJ -0.5700 + 10 C7 3.2914 4.8952 11.5664 C.3 1 GIDJ 0.0000 + 11 O3 6.5933 4.4969 12.2331 O.2 1 GIDJ -0.5700 + 12 C8 5.7712 5.2248 11.6908 C.2 1 GIDJ 0.6590 + 13 O4 5.7344 6.5785 11.8209 O.3 1 GIDJ -0.4300 + 14 C9 6.8076 7.1263 12.5900 C.3 1 GIDJ 0.2800 + 15 C10 1.3734 3.1594 8.7185 C.1 1 GIDJ 0.3571 + 16 N1 0.6569 3.0783 7.8087 N.1 1 GIDJ -0.5571 + 17 H1 4.8338 2.6131 11.3471 H 1 GIDJ 0.0000 + 18 H2 5.7680 3.0979 9.9428 H 1 GIDJ 0.0000 + 19 H3 3.9388 3.0310 8.4954 H 1 GIDJ 0.0000 + 20 H4 3.7069 1.6218 9.4955 H 1 GIDJ 0.0000 + 21 H5 1.3593 5.1342 10.6037 H 1 GIDJ 0.0000 + 22 H6 3.1929 5.9106 11.9736 H 1 GIDJ 0.0000 + 23 H7 3.1402 4.2005 12.3962 H 1 GIDJ 0.0000 + 24 H8 6.7013 8.2145 12.5919 H 1 GIDJ 0.0000 + 25 H9 6.7555 6.7701 13.6234 H 1 GIDJ 0.0000 + 26 H10 7.7721 6.8727 12.1391 H 1 GIDJ 0.0000 +@BOND + 1 1 5 1 + 2 2 3 1 + 3 2 8 1 + 4 2 10 1 + 5 2 12 1 + 6 3 4 1 + 7 3 17 1 + 8 3 18 1 + 9 4 5 1 + 10 4 19 1 + 11 4 20 1 + 12 5 6 1 + 13 5 15 1 + 14 6 7 1 + 15 6 10 1 + 16 6 21 1 + 17 7 8 1 + 18 8 9 2 + 19 10 22 1 + 20 10 23 1 + 21 11 12 2 + 22 12 13 1 + 23 13 14 1 + 24 14 24 1 + 25 14 25 1 + 26 14 26 1 + 27 15 16 3 +@SUBSTRUCTURE + 1 GIDJ 1 +@COMMENT +COMMENT METHYL C-4-BROMO-T-4-CYANO-6-OXABICYCLO(3.2.1)OCTAN-7-ONE-R +@MOLECULE +GIDMEL + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.8084 2.2134 10.1827 N.2 1 GIDM -0.1790 + 2 C1 5.8397 3.0319 10.0028 C.2 1 GIDM 0.7710 + 3 N2 6.7237 3.2060 11.0483 N.3 1 GIDM -0.9000 + 4 N3 6.0542 3.7178 8.8758 N.2 1 GIDM -0.6200 + 5 C2 5.1734 3.5414 7.8784 C.2 1 GIDM 0.4100 + 6 N4 5.4054 4.2994 6.7386 N.3 1 GIDM -0.9000 + 7 C3 4.0529 2.7015 7.9922 C.2 1 GIDM 0.0000 + 8 C4 3.0771 2.5064 6.9867 C.2 1 GIDM -0.1500 + 9 C5 1.9838 1.6580 7.1922 C.2 1 GIDM 0.1790 + 10 N5 1.0561 1.4456 6.1682 N.2 1 GIDM -0.4969 + 11 N6 0.0640 2.1988 6.2530 N.1 1 GIDM 0.6879 + 12 N7 -0.8373 2.8904 6.3427 N.2 1 GIDM -0.3700 + 13 C6 1.8677 0.9790 8.4085 C.2 1 GIDM -0.1500 + 14 C7 2.8133 1.1640 9.4214 C.2 1 GIDM -0.1500 + 15 C8 3.9013 2.0224 9.2166 C.2 1 GIDM 0.3610 + 16 H1 4.7119 1.7833 11.0938 H 1 GIDM 0.4570 + 17 H2 7.1122 2.3641 11.4572 H 1 GIDM 0.4000 + 18 H3 7.4631 3.8432 10.7463 H 1 GIDM 0.4000 + 19 H4 6.2646 4.8375 6.8356 H 1 GIDM 0.4000 + 20 H5 5.3989 3.7750 5.8691 H 1 GIDM 0.4000 + 21 H6 3.1610 3.0238 6.0311 H 1 GIDM 0.1500 + 22 H7 1.0316 0.2971 8.5644 H 1 GIDM 0.1500 + 23 H8 2.6820 0.6247 10.3570 H 1 GIDM 0.1500 +@BOND + 1 1 16 1 + 2 1 15 1 + 3 1 2 2 + 4 2 4 am + 5 2 3 am + 6 3 18 1 + 7 3 17 1 + 8 4 5 2 + 9 5 7 1 + 10 5 6 am + 11 6 20 1 + 12 6 19 1 + 13 7 15 2 + 14 7 8 1 + 15 8 21 1 + 16 8 9 2 + 17 9 13 1 + 18 9 10 1 + 19 10 11 2 + 20 11 12 2 + 21 13 22 1 + 22 13 14 2 + 23 14 23 1 + 24 14 15 1 +@SUBSTRUCTURE + 1 GIDM 1 +@COMMENT +COMMENT 2,4-DIAMINO-6-AZIDOQUINAZOLINE HYDROCHLORIDE (DIHYDROFOLATE +@MOLECULE +GIDTIW + 37 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.9475 8.5654 -0.2556 O.2 1 GIDP -0.5700 + 2 O2 -2.4642 12.6508 3.1262 O.2 1 GIDP -0.5700 + 3 O3 1.4659 11.7523 3.7080 O.2 1 GIDP -0.5700 + 4 O4 -1.4925 3.7326 -1.5638 O.3 1 GIDP -0.6800 + 5 O5 -1.5591 7.0099 -3.0823 O.3 1 GIDP -0.5600 + 6 O6 -4.3040 5.8929 -2.7154 O.3 1 GIDP -0.6800 + 7 N1 -1.1675 8.2676 -1.0880 N.3 1 GIDP -0.4691 + 8 N2 -0.6873 9.8499 0.6320 N.2 1 GIDP -0.6610 + 9 N3 -2.4386 11.1007 1.4969 N.3 1 GIDP -0.4900 + 10 N4 -0.4255 11.8062 2.4553 N.3 1 GIDP -0.4900 + 11 N5 -0.0491 13.3529 4.1353 N.3 1 GIDP -0.8000 + 12 C1 -0.2390 8.8811 -0.2386 C.2 1 GIDP 0.8410 + 13 C2 -1.9405 10.1364 0.6411 C.2 1 GIDP 0.4956 + 14 C3 -2.9709 9.5121 -0.1991 C.2 1 GIDP -0.1356 + 15 C4 -2.5082 8.5861 -1.0382 C.2 1 GIDP -0.0410 + 16 C5 -1.7918 11.8928 2.4259 C.2 1 GIDP 0.6900 + 17 C6 0.3885 12.2742 3.4446 C.2 1 GIDP 0.6900 + 18 C7 -0.6502 7.2341 -1.9820 C.3 1 GIDP 0.5801 + 19 C8 -0.4412 5.8917 -1.2861 C.3 1 GIDP 0.0000 + 20 C9 -1.6926 5.1325 -1.6570 C.3 1 GIDP 0.2800 + 21 C10 -1.9032 5.6100 -3.0875 C.3 1 GIDP 0.2800 + 22 C11 -3.3188 5.4014 -3.6244 C.3 1 GIDP 0.2800 + 23 H1 -2.3720 3.3160 -1.5363 H 1 GIDP 0.4000 + 24 H2 -5.1590 5.8430 -3.1792 H 1 GIDP 0.4000 + 25 H3 -3.4342 11.2727 1.5077 H 1 GIDP 0.3700 + 26 H4 -0.0334 11.0087 1.9624 H 1 GIDP 0.3700 + 27 H5 0.4825 13.5853 4.9624 H 1 GIDP 0.3700 + 28 H6 -1.0530 13.5043 4.1777 H 1 GIDP 0.3700 + 29 H7 -4.0141 9.7850 -0.1419 H 1 GIDP 0.1500 + 30 H8 -3.1806 8.0619 -1.7103 H 1 GIDP 0.1500 + 31 H9 0.2958 7.5888 -2.4078 H 1 GIDP 0.0000 + 32 H10 -0.2888 5.9578 -0.2043 H 1 GIDP 0.0000 + 33 H11 0.4393 5.3836 -1.7004 H 1 GIDP 0.0000 + 34 H12 -2.5079 5.4274 -0.9866 H 1 GIDP 0.0000 + 35 H13 -1.2049 5.1076 -3.7696 H 1 GIDP 0.0000 + 36 H14 -3.5133 4.3362 -3.7835 H 1 GIDP 0.0000 + 37 H15 -3.4438 5.9363 -4.5715 H 1 GIDP 0.0000 +@BOND + 1 1 12 2 + 2 2 16 2 + 3 3 17 2 + 4 4 20 1 + 5 4 23 1 + 6 5 18 1 + 7 5 21 1 + 8 6 22 1 + 9 6 24 1 + 10 7 12 am + 11 7 15 1 + 12 7 18 1 + 13 8 12 am + 14 8 13 2 + 15 9 13 am + 16 9 16 am + 17 9 25 1 + 18 10 16 am + 19 10 17 am + 20 10 26 1 + 21 11 17 am + 22 11 27 1 + 23 11 28 1 + 24 13 14 1 + 25 14 15 2 + 26 14 29 1 + 27 15 30 1 + 28 18 19 1 + 29 18 31 1 + 30 19 20 1 + 31 19 32 1 + 32 19 33 1 + 33 20 21 1 + 34 20 34 1 + 35 21 22 1 + 36 21 35 1 + 37 22 36 1 + 38 22 37 1 +@SUBSTRUCTURE + 1 GIDP 1 +@COMMENT +COMMENT N-4--(UREIDOCARBONYL)-2'DEOXYCYTIDINE +@MOLECULE +GIFRAO + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N3 10.4241 0.2002 -1.2780 N.3 1 GIFR -0.9000 + 2 C14 10.4759 1.0696 -0.1745 C.2 1 GIFR 0.1000 + 3 C15 9.4547 2.0050 0.0316 C.2 1 GIFR -0.1500 + 4 C16 9.4462 2.8089 1.1740 C.2 1 GIFR -0.1500 + 5 C17 10.4388 2.6363 2.1388 C.2 1 GIFR -0.0090 + 6 C18 11.4303 1.6705 1.9779 C.2 1 GIFR -0.1500 + 7 C19 11.4283 0.8713 0.8321 C.2 1 GIFR -0.1500 + 8 S1 10.4396 3.7196 3.5989 S.3 1 GIFR 0.8491 + 9 O1 11.7923 3.5615 4.1382 O.3 1 GIFR -0.6500 + 10 O2 10.2300 5.0264 2.9654 O.3 1 GIFR -0.6500 + 11 N4 9.2413 3.2791 4.5427 N.3 1 GIFR -0.2881 + 12 C20 9.1098 2.0509 5.0622 C.2 1 GIFR 0.3680 + 13 N5 8.0064 1.8689 5.8151 N.2 1 GIFR -0.6200 + 14 C21 7.8146 0.6483 6.3516 C.2 1 GIFR 0.1665 + 15 C22 8.6931 -0.3960 6.1507 C.2 1 GIFR -0.1500 + 16 C23 9.7932 -0.1257 5.3650 C.2 1 GIFR 0.1665 + 17 N6 10.0086 1.0848 4.8196 N.2 1 GIFR -0.6200 + 18 C24 6.5892 0.4567 7.1895 C.3 1 GIFR 0.1435 + 19 C25 10.8060 -1.1894 5.0786 C.3 1 GIFR 0.1435 + 20 H12 9.9560 0.6179 -2.0751 H 1 GIFR 0.4000 + 21 H13 11.3367 -0.1741 -1.5149 H 1 GIFR 0.4000 + 22 H14 8.6608 2.1257 -0.6983 H 1 GIFR 0.1500 + 23 H15 8.6746 3.5587 1.3218 H 1 GIFR 0.1500 + 24 H16 12.1782 1.5305 2.7529 H 1 GIFR 0.1500 + 25 H17 12.1834 0.0983 0.7349 H 1 GIFR 0.1500 + 26 H18 8.5289 -1.3718 6.5838 H 1 GIFR 0.1500 + 27 H19 6.8678 0.1666 8.2073 H 1 GIFR 0.0000 + 28 H20 6.0060 1.3815 7.2474 H 1 GIFR 0.0000 + 29 H21 5.9518 -0.3204 6.7561 H 1 GIFR 0.0000 + 30 H22 11.2413 -1.5596 6.0120 H 1 GIFR 0.0000 + 31 H23 10.3386 -2.0226 4.5447 H 1 GIFR 0.0000 + 32 H24 11.6183 -0.7998 4.4564 H 1 GIFR 0.0000 +@BOND + 1 1 2 1 + 2 1 20 1 + 3 1 21 1 + 4 2 3 2 + 5 2 7 1 + 6 3 4 1 + 7 3 22 1 + 8 4 5 2 + 9 4 23 1 + 10 5 6 1 + 11 5 8 1 + 12 6 7 2 + 13 6 24 1 + 14 7 25 1 + 15 8 9 1 + 16 8 10 1 + 17 8 11 1 + 18 11 12 am + 19 12 13 am + 20 12 17 2 + 21 13 14 2 + 22 14 15 1 + 23 14 18 1 + 24 15 16 2 + 25 15 26 1 + 26 16 17 1 + 27 16 19 1 + 28 18 27 1 + 29 18 28 1 + 30 18 29 1 + 31 19 30 1 + 32 19 31 1 + 33 19 32 1 +@SUBSTRUCTURE + 1 GIFR 1 +@COMMENT +COMMENT 9-AMINOACRIDINIUM N-1--(4,6-DIMETHYL-2-PYRIMIDINYL)SULFANIL +@MOLECULE +GIGCEE + 26 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.2590 7.9378 6.7152 C.2 1 GIGC -0.3016 + 2 C2 6.6206 7.9426 7.9387 C.2 1 GIGC -0.1500 + 3 C3 6.4184 6.5972 8.3100 C.2 1 GIGC -0.1500 + 4 C4 7.1090 4.4055 7.2066 C.2 1 GIGC 0.4750 + 5 N1 7.6777 3.8596 6.1805 N.2 1 GIGC -0.6290 + 6 C5 8.7494 4.0716 4.0604 C.2 1 GIGC -0.1500 + 7 C6 9.1711 4.8158 2.9617 C.2 1 GIGC -0.1500 + 8 N2 9.3076 6.7619 1.7129 N.2 1 GIGC -0.6200 + 9 C7 8.9963 8.0560 1.5157 C.2 1 GIGC 0.1600 + 10 C8 8.2630 8.7986 2.4096 C.2 1 GIGC -0.1500 + 11 C9 7.8583 8.1799 3.5894 C.2 1 GIGC -0.1500 + 12 N3 7.3616 6.6395 6.2695 N.3 1 GIGC 0.3262 + 13 C10 6.9447 5.8214 7.2999 C.2 1 GIGC -0.2366 + 14 C11 8.0961 4.6905 5.1182 C.2 1 GIGC 0.1790 + 15 C12 8.9034 6.1684 2.8481 C.2 1 GIGC 0.3100 + 16 C13 8.2076 6.8368 3.8864 C.2 1 GIGC 0.0000 + 17 C14 7.8834 6.0884 5.0661 C.2 1 GIGC -0.0230 + 18 H1 7.6747 8.7722 6.1754 H 1 GIGC 0.1500 + 19 H2 6.3845 8.8228 8.5237 H 1 GIGC 0.1500 + 20 H3 5.9894 6.2363 9.2363 H 1 GIGC 0.1500 + 21 H4 6.7639 3.7684 8.0373 H 1 GIGC 0.0600 + 22 H5 8.9387 3.0017 4.0942 H 1 GIGC 0.1500 + 23 H6 9.6939 4.3123 2.1510 H 1 GIGC 0.1500 + 24 H7 9.3461 8.4816 0.5798 H 1 GIGC 0.1500 + 25 H8 7.9957 9.8265 2.1932 H 1 GIGC 0.1500 + 26 H9 7.2123 8.7570 4.2393 H 1 GIGC 0.1500 +@BOND + 1 1 18 1 + 2 1 12 1 + 3 1 2 2 + 4 2 19 1 + 5 2 3 1 + 6 3 20 1 + 7 3 13 2 + 8 4 21 1 + 9 4 13 1 + 10 4 5 2 + 11 5 14 1 + 12 6 22 1 + 13 6 14 1 + 14 6 7 2 + 15 7 23 1 + 16 7 15 1 + 17 8 15 1 + 18 8 9 2 + 19 9 24 1 + 20 9 10 1 + 21 10 25 1 + 22 10 11 2 + 23 11 26 1 + 24 11 16 1 + 25 12 17 1 + 26 12 13 1 + 27 14 17 2 + 28 15 16 2 + 29 16 17 1 +@SUBSTRUCTURE + 1 GIGC 1 +@COMMENT +COMMENT PYRIDO(2,3-H)PYRROLO(1,2-A)QUINOXALINE 7,7,8,8-TETRACYANO-P +@MOLECULE +GIGMUE + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.2269 4.3601 4.8825 S.3 1 GIGM -0.0800 + 2 S2 7.6522 2.9723 8.1004 S.3 1 GIGM -0.4600 + 3 S3 4.4776 0.5403 6.1703 S.3 1 GIGM -0.4600 + 4 S4 4.8927 2.4261 2.1418 S.3 1 GIGM -0.4600 + 5 C1 8.4521 3.2917 5.4218 C.2 1 GIGM -0.1400 + 6 C2 8.9095 2.5016 4.3837 C.2 1 GIGM -0.1500 + 7 C3 8.1356 2.6619 3.1994 C.2 1 GIGM -0.1500 + 8 C4 7.0970 3.5550 3.3761 C.2 1 GIGM -0.1400 + 9 C5 8.9348 3.3042 6.8400 C.3 1 GIGM 0.4100 + 10 C6 6.8003 1.5104 7.3933 C.3 1 GIGM 0.2300 + 11 C7 5.3412 1.8625 7.0942 C.3 1 GIGM 0.2300 + 12 C8 5.0431 0.9061 4.4665 C.3 1 GIGM 0.2300 + 13 C9 4.2890 2.0807 3.8396 C.3 1 GIGM 0.2300 + 14 C10 5.9698 3.8755 2.4478 C.3 1 GIGM 0.4100 + 15 H1 9.7269 1.7966 4.4833 H 1 GIGM 0.1500 + 16 H2 8.2833 2.0904 2.2899 H 1 GIGM 0.1500 + 17 H3 9.3833 4.2780 7.0666 H 1 GIGM 0.0000 + 18 H4 9.7241 2.5560 6.9743 H 1 GIGM 0.0000 + 19 H5 7.3306 1.1384 6.5142 H 1 GIGM 0.0000 + 20 H6 6.8398 0.7168 8.1477 H 1 GIGM 0.0000 + 21 H7 4.7988 1.9928 8.0378 H 1 GIGM 0.0000 + 22 H8 5.2403 2.7989 6.5416 H 1 GIGM 0.0000 + 23 H9 6.1225 1.0608 4.4853 H 1 GIGM 0.0000 + 24 H10 4.8612 -0.0005 3.8781 H 1 GIGM 0.0000 + 25 H11 4.3453 2.9908 4.4424 H 1 GIGM 0.0000 + 26 H12 3.2276 1.8241 3.7472 H 1 GIGM 0.0000 + 27 H13 5.3459 4.6971 2.8152 H 1 GIGM 0.0000 + 28 H14 6.3783 4.1929 1.4821 H 1 GIGM 0.0000 +@BOND + 1 1 5 1 + 2 1 8 1 + 3 2 9 1 + 4 2 10 1 + 5 3 11 1 + 6 3 12 1 + 7 4 13 1 + 8 4 14 1 + 9 5 6 2 + 10 5 9 1 + 11 6 7 1 + 12 6 15 1 + 13 7 8 2 + 14 7 16 1 + 15 8 14 1 + 16 9 17 1 + 17 9 18 1 + 18 10 11 1 + 19 10 19 1 + 20 10 20 1 + 21 11 21 1 + 22 11 22 1 + 23 12 13 1 + 24 12 23 1 + 25 12 24 1 + 26 13 25 1 + 27 13 26 1 + 28 14 27 1 + 29 14 28 1 +@SUBSTRUCTURE + 1 GIGM 1 +@COMMENT +COMMENT 2,5,8-TRITHIA(9)(2,5)THIOPHENOPHANE +@MOLECULE +GIHZEC + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.7695 1.3304 10.0203 O.2 1 UNCH -0.5700 + 2 O2 0.9093 0.9370 5.5856 O.2 1 UNCH -0.5700 + 3 O3 -0.7187 1.1408 7.1986 O.3 1 UNCH -0.4300 + 4 O4 0.9047 -2.2083 7.2005 O.2 1 UNCH -0.5700 + 5 O5 -0.4390 -1.5548 8.9499 O.3 1 UNCH -0.4300 + 6 C1 1.4989 0.8745 7.8429 C.3 1 UNCH 0.0000 + 7 C2 1.5627 -0.4456 8.5862 C.3 1 UNCH 0.0000 + 8 C3 2.7923 0.1746 8.0379 C.3 1 UNCH -0.1000 + 9 C4 1.4291 0.8338 9.3234 C.3 1 UNCH -0.1000 + 10 C5 2.8937 0.8964 9.3088 C.2 1 UNCH 0.5700 + 11 C6 0.5537 0.9767 6.7522 C.2 1 UNCH 0.7200 + 12 C7 -1.6859 1.2421 6.1527 C.3 1 UNCH 0.2800 + 13 C8 0.6606 -1.4908 8.1569 C.2 1 UNCH 0.7200 + 14 C9 -1.3684 -2.5686 8.5659 C.3 1 UNCH 0.2800 + 15 H1 3.4816 -0.1891 7.3159 H 1 UNCH 0.1000 + 16 H2 0.6668 1.1665 9.9838 H 1 UNCH 0.1000 + 17 H3 -2.6708 1.3603 6.6128 H 1 UNCH 0.0000 + 18 H4 -1.4865 2.1196 5.5297 H 1 UNCH 0.0000 + 19 H5 -1.6936 0.3295 5.5483 H 1 UNCH 0.0000 + 20 H6 -0.9057 -3.5583 8.6324 H 1 UNCH 0.0000 + 21 H7 -2.2133 -2.5338 9.2591 H 1 UNCH 0.0000 + 22 H8 -1.7425 -2.3816 7.5543 H 1 UNCH 0.0000 +@BOND + 1 1 10 2 + 2 2 11 2 + 3 3 11 1 + 4 3 12 1 + 5 4 13 2 + 6 5 13 1 + 7 5 14 1 + 8 6 7 1 + 9 6 8 1 + 10 6 9 1 + 11 6 11 1 + 12 7 8 1 + 13 7 9 1 + 14 7 13 1 + 15 8 10 1 + 16 8 15 1 + 17 9 10 1 + 18 9 16 1 + 19 12 17 1 + 20 12 18 1 + 21 12 19 1 + 22 14 20 1 + 23 14 21 1 + 24 14 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DIMETHYL 3-OXOTRICYCLO(2.1.0.0-2,5-)PENTANE-1,5-DICARBOXYLA +@MOLECULE +GIJMOB01 + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.1583 0.6547 1.7257 S.3 1 GIJM 0.8491 + 2 O1 6.8527 1.3616 0.4872 O.3 1 GIJM -0.6500 + 3 N1 6.8858 -0.9268 1.7257 N.3 1 GIJM -0.3201 + 4 C1 8.0495 -1.6000 1.7257 C.2 1 GIJM 0.2638 + 5 O2 8.2236 -2.8174 1.7257 O.2 1 GIJM -0.5700 + 6 C2 9.2420 -0.7336 1.7257 C.2 1 GIJM 0.0862 + 7 C3 10.5714 -1.1086 1.7257 C.2 1 GIJM 0.0825 + 8 O3 10.9459 -2.4208 1.7257 O.3 1 GIJM -0.5325 + 9 C4 11.5472 -0.1116 1.7257 C.2 1 GIJM -0.1500 + 10 C5 11.1732 1.2496 1.7257 C.2 1 GIJM -0.1500 + 11 C6 9.8244 1.6200 1.7257 C.2 1 GIJM -0.1500 + 12 C7 8.9017 0.5963 1.7257 C.2 1 GIJM -0.0090 + 13 O1G 6.8527 1.3616 2.9642 O.3 1 GIJM -0.6500 + 14 H1 10.0988 -2.9290 1.7257 H 1 GIJM 0.4500 + 15 H2 12.5973 -0.3878 1.7257 H 1 GIJM 0.1500 + 16 H3 11.9417 2.0178 1.7257 H 1 GIJM 0.1500 + 17 H4 9.5018 2.6543 1.7257 H 1 GIJM 0.1500 +@BOND + 1 1 13 1 + 2 1 12 1 + 3 1 3 1 + 4 1 2 1 + 5 3 4 am + 6 4 6 1 + 7 4 5 2 + 8 6 12 1 + 9 6 7 2 + 10 7 9 1 + 11 7 8 1 + 12 8 14 1 + 13 9 15 1 + 14 9 10 2 + 15 10 16 1 + 16 10 11 1 + 17 11 17 1 + 18 11 12 2 +@SUBSTRUCTURE + 1 GIJM 1 +@COMMENT +COMMENT SODIUM 4-HYDROXY-1,2-BENZISOTHIAZOL-3(2H)-ONE 1,1-DIOXIDE M +@MOLECULE +GIKJIT + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.0239 2.1875 2.0026 C.2 1 GIJY -0.1050 + 2 C2 2.4482 1.4075 0.9882 C.2 1 GIJY -0.1356 + 3 C3 3.6905 2.0071 0.4463 C.2 1 GIJY 0.5646 + 4 O1 4.4219 1.6654 -0.4577 O.2 1 GIJY -0.5700 + 5 N1 3.8773 3.1252 1.2305 N.3 1 GIJY 0.2942 + 6 C4 4.7853 4.1382 1.3186 C.2 1 GIJY -0.3016 + 7 C5 4.3510 4.9367 2.3570 C.2 1 GIJY 0.0570 + 8 BR1 5.1736 6.5007 2.9810 BR 1 GIJY -0.0570 + 9 C6 3.1570 4.3967 2.9083 C.2 1 GIJY -0.1500 + 10 C7 2.9036 3.2702 2.1732 C.2 1 GIJY -0.1966 + 11 H1 1.1401 2.0151 2.6022 H 1 GIJY 0.1500 + 12 H2 2.0068 0.5065 0.6013 H 1 GIJY 0.1500 + 13 H3 5.6351 4.1977 0.6526 H 1 GIJY 0.1500 + 14 H4 2.5716 4.7869 3.7302 H 1 GIJY 0.1500 +@BOND + 1 1 2 2 + 2 1 10 1 + 3 1 11 1 + 4 2 3 1 + 5 2 12 1 + 6 3 4 2 + 7 3 5 am + 8 5 6 1 + 9 5 10 1 + 10 6 7 2 + 11 6 13 1 + 12 7 8 1 + 13 7 9 1 + 14 9 10 2 + 15 9 14 1 +@SUBSTRUCTURE + 1 GIJY 1 +@COMMENT +COMMENT 6-BROMOPYRROLIZIN-3-ONE +@MOLECULE +GIKNOD + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.2575 0.2398 7.3294 S.3 1 UNCH -0.3315 + 2 C1 0.5210 1.6838 8.4368 C.3 1 UNCH 0.1240 + 3 C2 0.3810 1.3417 9.9339 C.3 1 UNCH 0.5030 + 4 N1 0.8851 2.4757 10.7757 N.3 1 UNCH -0.8530 + 5 C3 1.0937 0.0758 10.4195 C.3 1 UNCH 0.0000 + 6 C4 1.9164 2.2586 8.1035 C.2 1 UNCH 0.9060 + 7 O1 2.6301 2.4744 9.1421 O.2 1 UNCH -0.9000 + 8 O2 2.1358 2.6031 6.9184 O.3 1 UNCH -0.9000 + 9 C5 -1.5042 0.0428 7.5063 C.2 1 UNCH 0.1015 + 10 C6 -2.0135 -1.1257 8.0798 C.2 1 UNCH -0.1500 + 11 C7 -3.3912 -1.2891 8.2387 C.2 1 UNCH -0.1500 + 12 C8 -4.2657 -0.2893 7.8153 C.2 1 UNCH -0.1500 + 13 C9 -3.7646 0.8697 7.2246 C.2 1 UNCH -0.1500 + 14 C10 -2.3871 1.0335 7.0663 C.2 1 UNCH -0.1500 + 15 H1 -0.1932 2.4758 8.1803 H 1 UNCH 0.0000 + 16 H2 -0.6815 1.2570 10.1900 H 1 UNCH 0.0000 + 17 H3 0.4125 3.3635 10.5934 H 1 UNCH 0.4500 + 18 H4 0.9643 2.2837 11.7740 H 1 UNCH 0.4500 + 19 H5 1.8719 2.6342 10.4150 H 1 UNCH 0.4500 + 20 H6 1.0120 -0.0228 11.5082 H 1 UNCH 0.0000 + 21 H7 2.1587 0.0796 10.1670 H 1 UNCH 0.0000 + 22 H8 0.6472 -0.8263 9.9912 H 1 UNCH 0.0000 + 23 H9 -1.3440 -1.9220 8.3968 H 1 UNCH 0.1500 + 24 H10 -3.7825 -2.2028 8.6791 H 1 UNCH 0.1500 + 25 H11 -5.3390 -0.4218 7.9275 H 1 UNCH 0.1500 + 26 H12 -4.4462 1.6394 6.8709 H 1 UNCH 0.1500 + 27 H13 -2.0105 1.9298 6.5771 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 2 3 1 + 4 2 6 1 + 5 2 15 1 + 6 3 4 1 + 7 3 5 1 + 8 3 16 1 + 9 4 17 1 + 10 4 18 1 + 11 4 19 1 + 12 5 20 1 + 13 5 21 1 + 14 5 22 1 + 15 6 7 2 + 16 6 8 1 + 17 9 10 2 + 18 9 14 1 + 19 10 11 1 + 20 10 23 1 + 21 11 12 2 + 22 11 24 1 + 23 12 13 1 + 24 12 25 1 + 25 13 14 2 + 26 13 26 1 + 27 14 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (2S,3R)-3-AMINO-2-PHENYLTHIOBUTANOIC ACID +@MOLECULE +GIKTUP + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2188 1.7878 5.9046 C.3 1 UNCH 0.6982 + 2 C2 0.8664 1.5195 5.8635 C.2 1 UNCH -0.0733 + 3 C3 0.8992 1.6037 4.5286 C.2 1 UNCH -0.1238 + 4 C4 2.2085 1.6968 3.8152 C.3 1 UNCH 0.6982 + 5 C5 3.1078 3.7842 4.4796 C.2 1 UNCH -0.0733 + 6 C6 3.4385 3.2449 5.6586 C.2 1 UNCH -0.1238 + 7 C7 -0.3445 1.5458 3.7485 C.2 1 UNCH 0.4956 + 8 C8 4.0740 4.0641 6.6996 C.2 1 UNCH 0.4956 + 9 O1 1.9976 1.5718 6.6478 O.3 1 UNCH -0.3567 + 10 O2 2.5067 3.0682 3.4680 O.3 1 UNCH -0.3567 + 11 O3 3.2219 1.1060 4.6419 O.3 1 UNCH -0.5600 + 12 O4 -0.3534 1.5587 2.5245 O.2 1 UNCH -0.5700 + 13 O5 4.4465 3.5961 7.7677 O.2 1 UNCH -0.5700 + 14 H1 4.0383 1.3607 6.4916 H 1 UNCH 0.0000 + 15 H2 -0.0207 1.4119 6.4736 H 1 UNCH 0.1500 + 16 H3 2.1904 1.1207 2.8844 H 1 UNCH 0.0000 + 17 H4 3.2577 4.8147 4.1858 H 1 UNCH 0.1500 + 18 H5 -1.2788 1.4832 4.3316 H 1 UNCH 0.0600 + 19 H6 4.2043 5.1333 6.4615 H 1 UNCH 0.0600 +@BOND + 1 1 6 1 + 2 1 9 1 + 3 1 11 1 + 4 1 14 1 + 5 2 3 2 + 6 2 9 1 + 7 2 15 1 + 8 3 4 1 + 9 3 7 1 + 10 4 10 1 + 11 4 11 1 + 12 4 16 1 + 13 5 6 2 + 14 5 10 1 + 15 5 17 1 + 16 6 8 1 + 17 7 12 2 + 18 7 18 1 + 19 8 13 2 + 20 8 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,6,9-TRIOXABICYCLO(3.3.1)NONA-3,7-DIENE-4,8-DICARBALDEHYDE +@MOLECULE +GIMJIV + 27 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 3.3424 10.2951 9.5582 CL 1 GILY -0.2900 + 2 CL3 1.6724 12.5083 5.1010 CL 1 GILY -0.2090 + 3 CL4 4.7247 13.6586 5.4436 CL 1 GILY -0.2900 + 4 CL11 3.4715 13.6273 8.6356 CL 1 GILY -0.2900 + 5 N1 2.3525 11.0703 7.1896 N.2 1 GILY -0.6960 + 6 C1 3.6297 10.8955 7.9391 C.3 1 GILY 0.5360 + 7 C3 2.7421 11.9124 6.2705 C.2 1 GILY 0.5980 + 8 C4 4.2057 12.2367 6.3078 C.3 1 GILY 0.3510 + 9 C5 5.0271 10.9658 5.9784 C.3 1 GILY 0.0000 + 10 C6 4.7505 10.1047 4.7248 C.3 1 GILY 0.0000 + 11 C7 5.8587 9.0245 4.6706 C.3 1 GILY 0.0000 + 12 C8 5.4771 8.0784 5.8321 C.3 1 GILY 0.0000 + 13 C9 4.1933 8.7288 6.4033 C.3 1 GILY 0.0000 + 14 C10 4.6278 10.0140 7.1404 C.3 1 GILY 0.0000 + 15 C11 4.3210 12.2769 7.8394 C.3 1 GILY 0.2900 + 16 C12 3.5616 9.2129 5.0970 C.3 1 GILY 0.0000 + 17 H5 6.0973 11.2073 6.0440 H 1 GILY 0.0000 + 18 H6 4.6493 10.6727 3.7984 H 1 GILY 0.0000 + 19 H71 5.8275 8.4817 3.7188 H 1 GILY 0.0000 + 20 H72 6.8647 9.4387 4.7911 H 1 GILY 0.0000 + 21 H81 5.2667 7.0748 5.4448 H 1 GILY 0.0000 + 22 H82 6.2779 7.9943 6.5737 H 1 GILY 0.0000 + 23 H9 3.5874 8.0467 7.0020 H 1 GILY 0.0000 + 24 H10 5.5056 9.8103 7.7700 H 1 GILY 0.0000 + 25 H11 5.3550 12.2749 8.2039 H 1 GILY 0.0000 + 26 H121 2.6070 9.7169 5.2055 H 1 GILY 0.0000 + 27 H122 3.4048 8.3991 4.3774 H 1 GILY 0.0000 +@BOND + 1 1 6 1 + 2 2 7 1 + 3 3 8 1 + 4 4 15 1 + 5 5 6 1 + 6 5 7 2 + 7 6 14 1 + 8 6 15 1 + 9 7 8 1 + 10 8 9 1 + 11 8 15 1 + 12 9 10 1 + 13 9 14 1 + 14 9 17 1 + 15 10 11 1 + 16 10 16 1 + 17 10 18 1 + 18 11 12 1 + 19 11 19 1 + 20 11 20 1 + 21 12 13 1 + 22 12 21 1 + 23 12 22 1 + 24 13 14 1 + 25 13 16 1 + 26 13 23 1 + 27 14 24 1 + 28 15 25 1 + 29 16 26 1 + 30 16 27 1 +@SUBSTRUCTURE + 1 GILY 1 +@COMMENT +COMMENT 2,4,5,11-TETRACHLORO-2,5,7,10-DIMETHANO-3-AZABICYCLO(4.4.0) +@MOLECULE +GINMUL + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.4438 3.5337 5.4708 S.3 1 UNCH -0.2420 + 2 O1 4.5352 3.7409 8.2995 O.2 1 UNCH -0.5700 + 3 O2 1.6355 8.4382 7.3275 O.2 1 UNCH -0.5700 + 4 O3 2.7423 9.9471 6.0002 O.3 1 UNCH -0.4300 + 5 N1 2.6413 3.5888 7.0158 N.2 1 UNCH -0.6610 + 6 N2 2.0470 5.5603 5.7626 N.3 1 UNCH -0.2500 + 7 C1 3.1345 6.2800 6.2449 C.2 1 UNCH -0.0382 + 8 C2 3.9741 5.6648 7.0993 C.2 1 UNCH -0.1356 + 9 C3 3.7347 4.2511 7.5232 C.2 1 UNCH 0.7666 + 10 C4 1.8933 4.2513 6.2059 C.2 1 UNCH 0.6410 + 11 C5 0.1113 5.0301 4.6274 C.2 1 UNCH -0.0490 + 12 C6 1.0409 5.9593 4.8967 C.2 1 UNCH -0.0500 + 13 C7 3.3965 7.6980 5.7986 C.3 1 UNCH 0.1992 + 14 C8 2.4795 8.6971 6.4822 C.2 1 UNCH 0.6590 + 15 C9 1.9409 10.9764 6.5843 C.3 1 UNCH 0.2800 + 16 H1 4.8517 6.1344 7.5253 H 1 UNCH 0.1500 + 17 H2 -0.7478 5.1589 3.9839 H 1 UNCH 0.1500 + 18 H3 1.0385 6.9640 4.4979 H 1 UNCH 0.1500 + 19 H4 4.4283 7.9864 6.0350 H 1 UNCH 0.0000 + 20 H5 3.2729 7.7795 4.7130 H 1 UNCH 0.0000 + 21 H6 0.8815 10.8040 6.3701 H 1 UNCH 0.0000 + 22 H7 2.1158 11.0322 7.6632 H 1 UNCH 0.0000 + 23 H8 2.2346 11.9294 6.1358 H 1 UNCH 0.0000 +@BOND + 1 1 10 1 + 2 1 11 1 + 3 2 9 2 + 4 3 14 2 + 5 4 14 1 + 6 4 15 1 + 7 5 9 am + 8 5 10 2 + 9 6 7 1 + 10 6 10 am + 11 6 12 1 + 12 7 8 2 + 13 7 13 1 + 14 8 9 1 + 15 8 16 1 + 16 11 12 2 + 17 11 17 1 + 18 12 18 1 + 19 13 14 1 + 20 13 19 1 + 21 13 20 1 + 22 15 21 1 + 23 15 22 1 + 24 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 7-OXO-7H-1,4-THIAZOLO(3,2-A)PYRIMIDIN-5-YL ACETATE +@MOLECULE +GIPHES + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.2676 2.3320 0.6690 O.2 1 GIPH -0.9000 + 2 O2 1.6586 2.7789 2.8135 O.3 1 GIPH -0.9000 + 3 O3 4.8791 0.0982 1.1144 O.2 1 GIPH -0.5700 + 4 O4 5.0916 1.8347 2.4738 O.3 1 GIPH -0.6500 + 5 C1 2.2325 2.1022 1.9130 C.2 1 GIPH 0.9060 + 6 C2 2.9196 0.8192 2.3559 C.3 1 GIPH -0.0450 + 7 C3 4.3417 0.8720 1.8977 C.2 1 GIPH 0.6590 + 8 C4 2.8223 0.5694 3.8603 C.3 1 GIPH 0.1435 + 9 C5 3.3439 -0.7892 4.2831 C.2 1 GIPH -0.1435 + 10 C6 4.5941 -0.9101 4.9033 C.2 1 GIPH -0.1500 + 11 C7 5.0764 -2.1632 5.2845 C.2 1 GIPH -0.1500 + 12 C8 4.3144 -3.3063 5.0477 C.2 1 GIPH -0.1500 + 13 C9 3.0705 -3.1970 4.4282 C.2 1 GIPH -0.1500 + 14 C10 2.5874 -1.9445 4.0468 C.2 1 GIPH -0.1500 + 15 H1 2.4296 -0.0013 1.8146 H 1 GIPH 0.0000 + 16 H2 1.7766 0.6356 4.1904 H 1 GIPH 0.0000 + 17 H3 3.3524 1.3507 4.4215 H 1 GIPH 0.0000 + 18 H4 5.1981 -0.0237 5.0840 H 1 GIPH 0.1500 + 19 H5 6.0491 -2.2448 5.7603 H 1 GIPH 0.1500 + 20 H6 4.6921 -4.2815 5.3395 H 1 GIPH 0.1500 + 21 H7 2.4765 -4.0854 4.2348 H 1 GIPH 0.1500 + 22 H8 1.6187 -1.8668 3.5576 H 1 GIPH 0.1500 + 23 H9 5.9304 1.7656 1.9785 H 1 GIPH 0.5000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 3 7 2 + 4 4 7 1 + 5 4 23 1 + 6 5 6 1 + 7 6 7 1 + 8 6 8 1 + 9 6 15 1 + 10 8 9 1 + 11 8 16 1 + 12 8 17 1 + 13 9 10 2 + 14 9 14 1 + 15 10 11 1 + 16 10 18 1 + 17 11 12 2 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 13 14 2 + 22 13 21 1 + 23 14 22 1 +@SUBSTRUCTURE + 1 GIPH 1 +@COMMENT +COMMENT N-METHYLGUANIDINIUM BENZYLHYDROGENMALONATE +@MOLECULE +GIRDOA01 + 34 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 3.6285 6.3379 0.9575 P 1 UNCH -0.4129 + 2 N1 1.7729 4.9320 2.3323 N.3 1 UNCH -0.7496 + 3 C1 3.0343 5.6567 2.6597 C.3 1 UNCH 0.4556 + 4 C2 1.0310 5.6171 1.2721 C.3 1 UNCH 0.2700 + 5 C3 2.0177 5.9360 0.1582 C.3 1 UNCH 0.1669 + 6 C4 4.0317 4.6898 3.3113 C.3 1 UNCH 0.0000 + 7 C5 0.9311 4.6427 3.4883 C.3 1 UNCH 0.2700 + 8 H1 0.2353 4.9736 0.8777 H 1 UNCH 0.0000 + 9 H2 0.5428 6.5283 1.6372 H 1 UNCH 0.0000 + 10 H3 2.1694 5.0448 -0.4621 H 1 UNCH 0.0000 + 11 H4 1.6528 6.7314 -0.4971 H 1 UNCH 0.0000 + 12 H5 5.0466 5.0973 3.3478 H 1 UNCH 0.0000 + 13 H6 4.0918 3.7457 2.7557 H 1 UNCH 0.0000 + 14 H7 3.7438 4.4504 4.3410 H 1 UNCH 0.0000 + 15 H8 1.4815 4.0981 4.2618 H 1 UNCH 0.0000 + 16 H9 0.1024 3.9904 3.1891 H 1 UNCH 0.0000 + 17 H10 0.4953 5.5392 3.9411 H 1 UNCH 0.0000 + 18 C1B 3.3644 8.0263 1.7332 C.3 1 UNCH 0.4556 + 19 P1B 2.7701 7.3451 3.4354 P 1 UNCH -0.4129 + 20 N1B 4.6257 8.7511 2.0606 N.3 1 UNCH -0.7496 + 21 C4B 2.3670 8.9932 1.0816 C.3 1 UNCH 0.0000 + 22 C3B 4.3809 7.7470 4.2347 C.3 1 UNCH 0.1669 + 23 C2B 5.3676 8.0660 3.1208 C.3 1 UNCH 0.2700 + 24 C5B 5.4675 9.0403 0.9046 C.3 1 UNCH 0.2700 + 25 H5B 1.3520 8.5857 1.0451 H 1 UNCH 0.0000 + 26 H6B 2.3068 9.9373 1.6372 H 1 UNCH 0.0000 + 27 H7B 2.6548 9.2326 0.0519 H 1 UNCH 0.0000 + 28 H3B 4.2292 8.6382 4.8550 H 1 UNCH 0.0000 + 29 H4B 4.7458 6.9516 4.8899 H 1 UNCH 0.0000 + 30 H1B 6.1633 8.7094 3.5152 H 1 UNCH 0.0000 + 31 H2B 5.8558 7.1547 2.7557 H 1 UNCH 0.0000 + 32 H8B 4.9171 9.5849 0.1311 H 1 UNCH 0.0000 + 33 H9B 6.2962 9.6926 1.2038 H 1 UNCH 0.0000 + 34 H10B 5.9033 8.1438 0.4518 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 1 18 1 + 4 2 3 1 + 5 2 4 1 + 6 2 7 1 + 7 3 6 1 + 8 3 19 1 + 9 4 5 1 + 10 4 8 1 + 11 4 9 1 + 12 5 10 1 + 13 5 11 1 + 14 6 12 1 + 15 6 13 1 + 16 6 14 1 + 17 7 15 1 + 18 7 16 1 + 19 7 17 1 + 20 18 19 1 + 21 18 20 1 + 22 18 21 1 + 23 19 22 1 + 24 20 23 1 + 25 20 24 1 + 26 21 25 1 + 27 21 26 1 + 28 21 27 1 + 29 22 23 1 + 30 22 28 1 + 31 22 29 1 + 32 23 30 1 + 33 23 31 1 + 34 24 32 1 + 35 24 33 1 + 36 24 34 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3,7,8-TETRAMETHYL-3,8-DIAZA-1,6-DIPHOSPHATRICYCLO(5.3.0.0 +@MOLECULE +GOHVUU + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.0068 6.3954 9.3915 N.3 1 UNCH -0.1200 + 2 C1 2.4388 6.3617 8.0605 C.2 1 UNCH 0.6900 + 3 N2 1.8599 5.2750 7.4605 N.3 1 UNCH -0.4900 + 4 C2 1.2266 4.5033 8.3982 C.2 1 UNCH 0.6900 + 5 N3 1.2329 5.2088 9.6072 N.3 1 UNCH -0.1200 + 6 C3 1.6932 4.6351 10.7981 C.2 1 UNCH 0.6900 + 7 N4 2.6150 5.4883 11.3442 N.3 1 UNCH -0.4900 + 8 C4 2.9054 6.4935 10.4604 C.2 1 UNCH 0.6900 + 9 O1 3.1649 7.1530 7.4828 O.2 1 UNCH -0.5700 + 10 O2 0.7274 3.4160 8.1620 O.2 1 UNCH -0.5700 + 11 O3 1.3409 3.5893 11.3171 O.2 1 UNCH -0.5700 + 12 O4 3.7783 7.3263 10.6379 O.2 1 UNCH -0.5700 + 13 H1 2.0439 4.9831 6.5149 H 1 UNCH 0.3700 + 14 H2 3.1449 5.2941 12.1777 H 1 UNCH 0.3700 +@BOND + 1 1 2 am + 2 1 5 1 + 3 1 8 am + 4 2 3 am + 5 2 9 2 + 6 3 4 am + 7 3 13 1 + 8 4 5 am + 9 4 10 2 + 10 5 6 am + 11 6 7 am + 12 6 11 2 + 13 7 8 am + 14 7 14 1 + 15 8 12 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1,2,4)TRIAZOLO(1,2-A)(1,2,4)TRIAZOLE-1,3,5,7(2H,6H)-TETRON +@MOLECULE +GOJCIR + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.1084 23.5070 -1.1324 O.3 1 GOJB -0.5600 + 2 C1 2.3485 22.7231 0.0485 C.3 1 GOJB 0.5100 + 3 H1 1.5422 21.9832 0.1224 H 1 GOJB 0.0000 + 4 S1 2.3055 23.7623 1.5603 S.3 1 GOJB -0.4600 + 5 C2 0.4686 24.0670 1.6580 C.3 1 GOJB 0.7500 + 6 S2 -0.3031 24.1161 -0.0448 S.3 1 GOJB -0.4600 + 7 C3 1.1593 24.5828 -1.0526 C.3 1 GOJB 0.5100 + 8 H2 1.6559 25.4269 -0.5611 H 1 GOJB 0.0000 + 9 C4 3.6766 21.8957 -0.1205 C.3 1 GOJB 0.8700 + 10 CL1 5.1084 22.9656 -0.3072 CL 1 GOJB -0.2900 + 11 CL2 3.5689 20.8591 -1.5943 CL 1 GOJB -0.2900 + 12 CL3 3.9508 20.7965 1.2771 CL 1 GOJB -0.2900 + 13 CL4 -0.2173 22.5504 2.4299 CL 1 GOJB -0.2900 + 14 C5 0.1043 25.3389 2.5396 C.3 1 GOJB 0.8700 + 15 CL5 0.7714 25.2435 4.2212 CL 1 GOJB -0.2900 + 16 CL6 -1.6837 25.5819 2.7111 CL 1 GOJB -0.2900 + 17 CL7 0.7582 26.8676 1.8102 CL 1 GOJB -0.2900 + 18 C6 0.7992 25.0842 -2.5016 C.3 1 GOJB 0.8700 + 19 CL8 0.0102 23.8008 -3.4785 CL 1 GOJB -0.2900 + 20 CL9 2.3021 25.5897 -3.3638 CL 1 GOJB -0.2900 + 21 CL10 -0.2821 26.5220 -2.4448 CL 1 GOJB -0.2900 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 2 3 1 + 4 2 4 1 + 5 2 9 1 + 6 4 5 1 + 7 5 6 1 + 8 5 13 1 + 9 5 14 1 + 10 6 7 1 + 11 7 8 1 + 12 7 18 1 + 13 9 10 1 + 14 9 11 1 + 15 9 12 1 + 16 14 15 1 + 17 14 16 1 + 18 14 17 1 + 19 18 19 1 + 20 18 20 1 + 21 18 21 1 +@SUBSTRUCTURE + 1 GOJB 1 +@COMMENT +COMMENT TRANS-4-CHLORO-2,4,6-TRIS(TRICHLOROMETHYL)-1-OXA-3,5-DITHIA +@MOLECULE +GOJKIZ + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.1260 0.6673 12.4257 C.2 1 UNCH 0.4115 + 2 N1 2.7732 -0.6012 12.7844 N.2 1 UNCH -0.6200 + 3 C2 3.7273 -1.4244 13.2765 C.2 1 UNCH 0.1600 + 4 C3 5.0527 -1.0602 13.4308 C.2 1 UNCH -0.1500 + 5 C4 5.4248 0.2224 13.0488 C.2 1 UNCH -0.1500 + 6 C5 4.4486 1.0875 12.5336 C.2 1 UNCH 0.1330 + 7 S1 1.7548 1.6386 11.8412 S.3 1 UNCH -0.1565 + 8 C6 1.6329 2.8618 13.0746 C.2 1 UNCH 0.5710 + 9 N2 0.6827 3.8019 13.0364 N.2 1 UNCH -0.7068 + 10 N3 0.9802 4.5330 14.1206 N.3 1 UNCH 0.2996 + 11 C7 2.0666 4.0342 14.7651 C.2 1 UNCH 0.0365 + 12 N4 2.5041 2.9743 14.1273 N.2 1 UNCH -0.5653 + 13 N5 4.8733 2.3994 12.1006 N.2 1 UNCH 0.9070 + 14 O1 5.5919 3.0462 12.8769 O.3 1 UNCH -0.5200 + 15 O2 4.5609 2.7582 10.9578 O.2 1 UNCH -0.5200 + 16 H1 3.3816 -2.4173 13.5533 H 1 UNCH 0.1500 + 17 H2 5.7771 -1.7602 13.8338 H 1 UNCH 0.1500 + 18 H3 6.4605 0.5398 13.1472 H 1 UNCH 0.1500 + 19 H4 0.4117 5.3412 14.3484 H 1 UNCH 0.2700 + 20 H5 2.4818 4.4716 15.6619 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 3 4 2 + 6 3 16 1 + 7 4 5 1 + 8 4 17 1 + 9 5 6 2 + 10 5 18 1 + 11 6 13 1 + 12 7 8 1 + 13 8 9 2 + 14 8 12 am + 15 9 10 1 + 16 10 11 am + 17 10 19 1 + 18 11 12 2 + 19 11 20 1 + 20 13 14 1 + 21 13 15 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (3-NITRO-2-PYRIDYL)-3-THIO-1H-1,2,4-TRIAZOLE (ANTITHYROID D +@MOLECULE +GUANCH01 + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.7020 5.5248 17.7081 O.2 1 GUAN -0.5700 + 2 N1 2.0991 7.2604 17.2051 N.3 1 GUAN -0.4900 + 3 N2 3.1349 8.7117 18.7681 N.2 1 GUAN -0.5880 + 4 N3 1.1753 6.4576 20.6548 N.2 1 GUAN -0.7000 + 5 N4 2.4718 8.1248 21.0298 N.3 1 GUAN -0.7000 + 6 N5 3.5373 8.9421 16.5137 N.3 1 GUAN -0.8500 + 7 C1 2.9256 8.3149 17.5440 C.2 1 GUAN 0.5600 + 8 C2 2.4605 7.9670 19.6665 C.2 1 GUAN 0.4880 + 9 C3 1.6320 6.9022 19.4239 C.2 1 GUAN 0.2770 + 10 C4 1.3966 6.4584 18.0943 C.2 1 GUAN 0.7030 + 11 C5 1.6992 7.2133 21.6240 C.2 1 GUAN 0.6500 + 12 H3 2.0224 6.9906 16.2332 H 1 GUAN 0.3700 + 13 H4 0.5416 5.6697 20.7822 H 1 GUAN 0.4500 + 14 H5 1.5295 7.1062 22.6892 H 1 GUAN 0.1500 + 15 H6 3.0128 8.8460 21.4976 H 1 GUAN 0.4500 + 16 H7 3.1004 8.9592 15.5994 H 1 GUAN 0.4000 + 17 H8 3.9936 9.8201 16.7506 H 1 GUAN 0.4000 +@BOND + 1 1 10 2 + 2 2 12 1 + 3 2 10 am + 4 2 7 am + 5 3 8 1 + 6 3 7 2 + 7 4 13 1 + 8 4 11 2 + 9 4 9 1 + 10 5 15 1 + 11 5 11 am + 12 5 8 1 + 13 6 17 1 + 14 6 16 1 + 15 6 7 am + 16 8 9 2 + 17 9 10 1 + 18 11 14 1 +@SUBSTRUCTURE + 1 GUAN 1 +@COMMENT +COMMENT GUANINE HYDROCHLORIDE MONOHYDRATE +@MOLECULE +HYTPRD01 + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.6171 7.2158 1.5281 S.2 1 HQOX -0.3800 + 2 C1 3.6893 7.1786 0.1135 C.2 1 HQOX 0.3538 + 3 C2 2.5855 6.1843 0.0402 C.2 1 HQOX 0.0862 + 4 C3 2.7915 4.8989 -0.4741 C.2 1 HQOX 0.0825 + 5 O1 4.0204 4.5387 -0.9495 O.3 1 HQOX -0.5325 + 6 C4 1.7357 3.9886 -0.5159 C.2 1 HQOX -0.1500 + 7 C5 0.4751 4.3649 -0.0435 C.2 1 HQOX -0.1500 + 8 C6 0.2669 5.6465 0.4697 C.2 1 HQOX -0.1500 + 9 C7 1.3206 6.5594 0.5135 C.2 1 HQOX -0.1500 + 10 N1 3.8413 8.0545 -0.9808 N.3 1 HQOX -0.6602 + 11 C8 4.9440 9.0217 -1.0829 C.3 1 HQOX 0.3001 + 12 C9 5.9527 8.5567 -2.1326 C.3 1 HQOX 0.0000 + 13 C10 5.2702 8.3219 -3.4818 C.3 1 HQOX 0.0000 + 14 C11 4.0574 7.3998 -3.3414 C.3 1 HQOX 0.0000 + 15 C12 3.1119 7.8942 -2.2467 C.3 1 HQOX 0.3001 + 16 H1 4.0309 3.5818 -1.1134 H 1 HQOX 0.4500 + 17 H4 1.8723 2.9879 -0.9146 H 1 HQOX 0.1500 + 18 H5 -0.3487 3.6553 -0.0740 H 1 HQOX 0.1500 + 19 H6 -0.7148 5.9324 0.8398 H 1 HQOX 0.1500 + 20 H7 1.1618 7.5556 0.9184 H 1 HQOX 0.1500 + 21 H81 5.4506 9.1833 -0.1299 H 1 HQOX 0.0000 + 22 H82 4.5089 9.9853 -1.3753 H 1 HQOX 0.0000 + 23 H91 6.4248 7.6237 -1.8008 H 1 HQOX 0.0000 + 24 H92 6.7469 9.3029 -2.2441 H 1 HQOX 0.0000 + 25 H101 5.9854 7.8914 -4.1913 H 1 HQOX 0.0000 + 26 H102 4.9466 9.2847 -3.8961 H 1 HQOX 0.0000 + 27 H111 4.4036 6.3879 -3.0995 H 1 HQOX 0.0000 + 28 H112 3.5240 7.3409 -4.2964 H 1 HQOX 0.0000 + 29 H121 2.2640 7.2129 -2.1596 H 1 HQOX 0.0000 + 30 H122 2.7017 8.8755 -2.5147 H 1 HQOX 0.0000 +@BOND + 1 1 2 2 + 2 2 3 1 + 3 2 10 1 + 4 3 4 1 + 5 3 9 2 + 6 4 5 1 + 7 4 6 2 + 8 5 16 1 + 9 6 7 1 + 10 6 17 1 + 11 7 8 2 + 12 7 18 1 + 13 8 9 1 + 14 8 19 1 + 15 9 20 1 + 16 10 11 1 + 17 10 15 1 + 18 11 12 1 + 19 11 21 1 + 20 11 22 1 + 21 12 13 1 + 22 12 23 1 + 23 12 24 1 + 24 13 14 1 + 25 13 25 1 + 26 13 26 1 + 27 14 15 1 + 28 14 27 1 + 29 14 28 1 + 30 15 29 1 + 31 15 30 1 +@SUBSTRUCTURE + 1 HQOX 1 +@COMMENT +COMMENT 1-(2'-HYDROXYTHIOBENZOYL)-PIPERIDINE (NEUTRON STUDY, AT 20 +@MOLECULE +ISTZCN10 + 12 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.6611 4.2955 -2.0894 S.3 1 UNCH -0.0550 + 2 S2 6.3051 4.7144 -0.9305 S.3 1 UNCH 0.0000 + 3 S3 7.1469 2.8829 -0.5575 S.3 1 UNCH 0.0000 + 4 S4 5.9657 2.0524 0.8975 S.3 1 UNCH 0.0000 + 5 S5 4.2937 1.4096 -0.1081 S.3 1 UNCH -0.0550 + 6 S6 1.4084 4.4724 0.4312 S.3 1 UNCH 0.1807 + 7 N1 2.4830 4.9631 -0.7261 N.2 1 UNCH -0.5095 + 8 N2 1.2159 1.2674 2.4515 N.1 1 UNCH -0.5571 + 9 C1 3.3992 4.0095 -0.8904 C.2 1 UNCH 0.3438 + 10 C2 3.2488 2.8323 -0.0806 C.2 1 UNCH 0.0550 + 11 C3 2.1362 2.9587 0.7305 C.2 1 UNCH 0.0600 + 12 C4 1.6297 2.0265 1.6778 C.1 1 UNCH 0.5371 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 2 3 1 + 4 3 4 1 + 5 4 5 1 + 6 5 10 1 + 7 6 7 1 + 8 6 11 1 + 9 7 9 2 + 10 8 12 3 + 11 9 10 1 + 12 10 11 2 + 13 11 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 8-CYANOISOTHIAZOLOPENTATHIEPIN +@MOLECULE +JABGAU + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.4676 2.0705 1.5274 S.3 1 JABC -0.2420 + 2 S2 8.5769 -0.3702 0.1326 S.2 1 JABC -0.3800 + 3 C1 8.7852 0.9336 1.1548 C.2 1 JABC 0.5810 + 4 N1 9.9380 1.3782 1.8295 N.3 1 JABC -0.2860 + 5 C2 9.7654 2.5696 2.5382 C.2 1 JABC -0.0292 + 6 C3 8.5187 3.0570 2.4830 C.2 1 JABC -0.0490 + 7 C4 11.1836 0.7032 1.7206 C.2 1 JABC 0.1170 + 8 C5 11.4439 -0.4945 2.4232 C.2 1 JABC -0.1435 + 9 C6 12.6909 -1.1367 2.2328 C.2 1 JABC -0.1435 + 10 C7 13.6573 -0.5481 1.4003 C.2 1 JABC -0.1500 + 11 C8 13.3985 0.6495 0.7396 C.2 1 JABC -0.1500 + 12 C9 12.1653 1.2722 0.8969 C.2 1 JABC -0.1500 + 13 C10 13.0279 -2.4308 2.9256 C.3 1 JABC 0.1435 + 14 C11 10.4223 -1.1016 3.3522 C.3 1 JABC 0.1435 + 15 C12 10.8775 3.1910 3.3198 C.3 1 JABC 0.1382 + 16 H1 14.6240 -1.0277 1.2578 H 1 JABC 0.1500 + 17 H2 14.1531 1.0890 0.0929 H 1 JABC 0.1500 + 18 H3 11.9620 2.1943 0.3581 H 1 JABC 0.1500 + 19 H4 8.1747 3.9565 2.9756 H 1 JABC 0.1500 + 20 H5 9.6457 -0.3899 3.6460 H 1 JABC 0.0000 + 21 H6 10.8947 -1.4285 4.2844 H 1 JABC 0.0000 + 22 H7 9.9425 -1.9610 2.8742 H 1 JABC 0.0000 + 23 H8 11.3037 2.4753 4.0303 H 1 JABC 0.0000 + 24 H9 10.5245 4.0518 3.8986 H 1 JABC 0.0000 + 25 H10 11.6711 3.5486 2.6568 H 1 JABC 0.0000 + 26 H11 12.2283 -3.1647 2.7829 H 1 JABC 0.0000 + 27 H12 13.1803 -2.2572 3.9953 H 1 JABC 0.0000 + 28 H13 13.9446 -2.8744 2.5222 H 1 JABC 0.0000 +@BOND + 1 1 3 1 + 2 1 6 1 + 3 2 3 2 + 4 3 4 1 + 5 4 5 1 + 6 4 7 1 + 7 5 6 2 + 8 5 15 1 + 9 6 19 1 + 10 7 8 2 + 11 7 12 1 + 12 8 9 1 + 13 8 14 1 + 14 9 10 2 + 15 9 13 1 + 16 10 11 1 + 17 10 16 1 + 18 11 12 2 + 19 11 17 1 + 20 12 18 1 + 21 13 26 1 + 22 13 27 1 + 23 13 28 1 + 24 14 20 1 + 25 14 21 1 + 26 14 22 1 + 27 15 23 1 + 28 15 24 1 + 29 15 25 1 +@SUBSTRUCTURE + 1 JABC 1 +@COMMENT +COMMENT 3-(2',3'-DIMETHYLPHENYL)-4-METHYL-(CDELTA-4--THIAZOLINE-2-T +@MOLECULE +JADLIJ + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 6.7195 5.7264 -0.5453 CL 1 JADL -0.1770 + 2 S1 2.5995 2.9110 1.6858 S.3 1 JADL -0.1015 + 3 S2 2.6789 0.9089 2.0732 S.3 1 JADL -0.1410 + 4 S3 4.9934 -0.9181 1.5330 S.2 1 JADL -0.3800 + 5 C1 4.3215 0.6165 1.4797 C.2 1 JADL 0.4348 + 6 C2 4.9865 1.8411 0.9584 C.2 1 JADL 0.0862 + 7 C3 6.2851 1.8721 0.4344 C.2 1 JADL -0.1500 + 8 C4 6.8167 3.0793 -0.0301 C.2 1 JADL -0.1500 + 9 C5 6.0553 4.2474 0.0289 C.2 1 JADL 0.1770 + 10 C6 4.7627 4.2263 0.5485 C.2 1 JADL -0.1500 + 11 C7 4.2331 3.0214 1.0117 C.2 1 JADL 0.1015 + 12 H1 6.8986 0.9762 0.3774 H 1 JADL 0.1500 + 13 H2 7.8257 3.1016 -0.4369 H 1 JADL 0.1500 + 14 H3 4.1759 5.1405 0.5910 H 1 JADL 0.1500 +@BOND + 1 1 9 1 + 2 2 11 1 + 3 2 3 1 + 4 3 5 1 + 5 4 5 2 + 6 5 6 1 + 7 6 11 2 + 8 6 7 1 + 9 7 12 1 + 10 7 8 2 + 11 8 13 1 + 12 8 9 1 + 13 9 10 2 + 14 10 14 1 + 15 10 11 1 +@SUBSTRUCTURE + 1 JADL 1 +@COMMENT +COMMENT 6-CHLORO-1,2-BENZODITHIOLE-3-THIONE +@MOLECULE +JADXER + 39 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.4058 -0.2380 2.8100 O.3 1 JADX -0.2960 + 2 O2 0.0361 1.0850 1.7326 O.3 1 JADX -0.5200 + 3 O3 1.6273 1.7523 0.3571 O.2 1 JADX -0.5200 + 4 O4 3.5726 -2.4947 1.4904 O.3 1 JADX -0.5600 + 5 O5 5.4831 -2.6273 0.1434 O.3 1 JADX -0.5600 + 6 O6 6.0972 0.9799 0.6462 O.3 1 JADX -0.5600 + 7 O7 6.6336 0.6458 -1.6085 O.3 1 JADX -0.5600 + 8 N1 1.1327 0.9661 1.1749 N.2 1 JADX 0.8750 + 9 C1 1.8965 -0.2454 1.4630 C.3 1 JADX 0.2130 + 10 C2 3.3697 -0.1103 1.7500 C.3 1 JADX -0.0470 + 11 C3 4.3084 -1.2654 1.6121 C.3 1 JADX 0.3750 + 12 C4 5.1430 -1.2469 0.3385 C.3 1 JADX 0.2800 + 13 C5 6.4159 -0.4009 0.4400 C.3 1 JADX 0.2800 + 14 C6 7.2184 -0.4073 -0.8433 C.3 1 JADX 0.2800 + 15 C7 4.4032 -3.3694 0.7194 C.3 1 JADX 0.5600 + 16 C8 4.9825 -4.4443 1.6294 C.3 1 JADX 0.0000 + 17 C9 3.5622 -3.9792 -0.3944 C.3 1 JADX 0.0000 + 18 C10 6.2256 1.6158 -0.6373 C.3 1 JADX 0.5600 + 19 C11 4.8799 2.1923 -1.0545 C.3 1 JADX 0.0000 + 20 C12 7.2796 2.7138 -0.5320 C.3 1 JADX 0.0000 + 21 H1 1.4607 -1.1516 1.0757 H 1 JADX 0.1000 + 22 H2 3.8545 0.8524 1.6665 H 1 JADX 0.1000 + 23 H3 4.9412 -1.3491 2.5040 H 1 JADX 0.0000 + 24 H4 4.5267 -0.9306 -0.5129 H 1 JADX 0.0000 + 25 H7 8.2664 -0.1473 -0.6561 H 1 JADX 0.0000 + 26 H8 5.5879 -3.9904 2.4225 H 1 JADX 0.0000 + 27 H9 4.1905 -5.0216 2.1176 H 1 JADX 0.0000 + 28 H11 4.1628 -4.6357 -1.0326 H 1 JADX 0.0000 + 29 H12 3.1480 -3.1935 -1.0368 H 1 JADX 0.0000 + 30 H13 2.7159 -4.5444 0.0099 H 1 JADX 0.0000 + 31 H14 4.1333 1.3969 -1.1516 H 1 JADX 0.0000 + 32 H15 4.5030 2.9023 -0.3111 H 1 JADX 0.0000 + 33 H16 4.9450 2.6898 -2.0279 H 1 JADX 0.0000 + 34 H17 7.4431 3.2008 -1.4990 H 1 JADX 0.0000 + 35 H18 6.9927 3.4687 0.2077 H 1 JADX 0.0000 + 36 H19 8.2424 2.3007 -0.2108 H 1 JADX 0.0000 + 37 H5 7.0329 -0.7654 1.2691 H 1 JADX 0.0000 + 38 H6 7.1878 -1.3479 -1.3992 H 1 JADX 0.0000 + 39 H10 5.6361 -5.1256 1.0747 H 1 JADX 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 2 8 1 + 4 3 8 2 + 5 4 15 1 + 6 4 11 1 + 7 5 15 1 + 8 5 12 1 + 9 6 18 1 + 10 6 13 1 + 11 7 18 1 + 12 7 14 1 + 13 8 9 1 + 14 9 21 1 + 15 9 10 1 + 16 10 22 1 + 17 10 11 1 + 18 11 23 1 + 19 11 12 1 + 20 12 24 1 + 21 12 13 1 + 22 13 37 1 + 23 13 14 1 + 24 14 38 1 + 25 14 25 1 + 26 15 17 1 + 27 15 16 1 + 28 16 39 1 + 29 16 27 1 + 30 16 26 1 + 31 17 30 1 + 32 17 29 1 + 33 17 28 1 + 34 18 20 1 + 35 18 19 1 + 36 19 33 1 + 37 19 32 1 + 38 19 31 1 + 39 20 36 1 + 40 20 35 1 + 41 20 34 1 +@SUBSTRUCTURE + 1 JADX 1 +@COMMENT +COMMENT 1,2-ANHYDRO-3,4.5,6-DI-O-ISOPROPYLIDENE-1-C-NITRO-D-MANNITO +@MOLECULE +JAHKOS + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 9.0185 0.4479 0.7283 S.3 1 JAGT 1.1718 + 2 O1 7.6513 0.5824 1.1951 O.3 1 JAGT -0.6500 + 3 O2 9.4230 1.0391 -0.5331 O.3 1 JAGT -0.6500 + 4 O3 10.7860 -1.5558 0.5838 O.3 1 JAGT -0.2960 + 5 C1 9.3784 -1.3142 0.6724 C.3 1 JAGT 0.0760 + 6 C2 10.0032 -1.8201 -0.6045 C.3 1 JAGT 0.0800 + 7 C3 8.6630 -2.1335 1.6757 C.3 1 JAGT 0.0950 + 8 C4 10.0868 1.0802 1.9934 C.3 1 JAGT 0.1052 + 9 C5 9.8225 -3.2554 -1.0278 C.2 1 JAGT -0.0320 + 10 C6 10.8608 -4.1948 -0.9142 C.2 1 JAGT -0.1500 + 11 C7 10.6877 -5.5227 -1.3126 C.2 1 JAGT -0.1500 + 12 C8 9.4683 -5.9375 -1.8398 C.2 1 JAGT -0.1500 + 13 C9 8.4255 -5.0250 -1.9706 C.2 1 JAGT -0.1500 + 14 C10 8.6041 -3.6983 -1.5705 C.2 1 JAGT -0.1500 + 15 H1 10.1443 -1.1215 -1.4246 H 1 JAGT 0.1000 + 16 H2 7.6003 -2.2084 1.4240 H 1 JAGT 0.0000 + 17 H3 8.7478 -1.6980 2.6765 H 1 JAGT 0.0000 + 18 H4 9.0617 -3.1517 1.7345 H 1 JAGT 0.0000 + 19 H5 11.1251 0.9278 1.6941 H 1 JAGT 0.0000 + 20 H6 9.8733 0.5646 2.9310 H 1 JAGT 0.0000 + 21 H7 9.8868 2.1483 2.1034 H 1 JAGT 0.0000 + 22 H8 11.8214 -3.8859 -0.5059 H 1 JAGT 0.1500 + 23 H9 11.5067 -6.2302 -1.2122 H 1 JAGT 0.1500 + 24 H10 9.3321 -6.9696 -2.1519 H 1 JAGT 0.1500 + 25 H11 7.4730 -5.3431 -2.3869 H 1 JAGT 0.1500 + 26 H12 7.7785 -2.9982 -1.6864 H 1 JAGT 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 5 1 + 4 1 8 1 + 5 4 5 1 + 6 4 6 1 + 7 5 6 1 + 8 5 7 1 + 9 6 9 1 + 10 6 15 1 + 11 7 16 1 + 12 7 17 1 + 13 7 18 1 + 14 8 19 1 + 15 8 20 1 + 16 8 21 1 + 17 9 10 2 + 18 9 14 1 + 19 10 11 1 + 20 10 22 1 + 21 11 12 2 + 22 11 23 1 + 23 12 13 1 + 24 12 24 1 + 25 13 14 2 + 26 13 25 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 JAGT 1 +@COMMENT +COMMENT E-1,2-EPOXY-2-METHYLSULFONYL-1-PHENYLPROPANE +@MOLECULE +JAHTOB + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 6.5034 15.5914 -3.0087 C.2 1 UNCH 0.0367 + 2 C2 5.8485 16.2751 -2.1109 C.2 1 UNCH -0.0684 + 3 C3 7.3193 16.4213 -2.1807 C.3 1 UNCH -0.1100 + 4 C4 7.8801 17.6858 -2.7636 C.3 1 UNCH 0.0950 + 5 C5 8.1487 15.7727 -1.1107 C.3 1 UNCH 0.0950 + 6 C6 5.2623 14.2449 -4.3656 C.3 1 UNCH 0.2800 + 7 C7 4.6943 16.7201 -1.4083 C.2 1 UNCH 0.0284 + 8 C8 4.8257 17.6422 -0.3623 C.2 1 UNCH -0.1500 + 9 C9 3.7015 18.0896 0.3382 C.2 1 UNCH -0.1500 + 10 C10 2.4389 17.6145 -0.0065 C.2 1 UNCH 0.1770 + 11 C11 2.2925 16.6974 -1.0443 C.2 1 UNCH -0.1500 + 12 C12 3.4193 16.2521 -1.7429 C.2 1 UNCH -0.1500 + 13 O1 6.5446 14.7377 -4.0035 O.3 1 UNCH -0.3567 + 14 CL1 1.0536 18.1628 0.8532 CL 1 UNCH -0.1770 + 15 H1 8.0140 18.4393 -1.9796 H 1 UNCH 0.0000 + 16 H2 7.2340 18.1210 -3.5354 H 1 UNCH 0.0000 + 17 H3 8.8581 17.4938 -3.2185 H 1 UNCH 0.0000 + 18 H4 9.1368 15.5085 -1.5033 H 1 UNCH 0.0000 + 19 H5 8.2916 16.4612 -0.2706 H 1 UNCH 0.0000 + 20 H6 7.6922 14.8572 -0.7157 H 1 UNCH 0.0000 + 21 H7 4.6103 15.0577 -4.7041 H 1 UNCH 0.0000 + 22 H8 5.3899 13.5448 -5.1967 H 1 UNCH 0.0000 + 23 H9 4.8005 13.7024 -3.5332 H 1 UNCH 0.0000 + 24 H10 5.8064 18.0216 -0.0825 H 1 UNCH 0.1500 + 25 H11 3.8199 18.8051 1.1472 H 1 UNCH 0.1500 + 26 H12 1.3083 16.3250 -1.3154 H 1 UNCH 0.1500 + 27 H13 3.2864 15.5365 -2.5495 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 13 1 + 4 2 3 1 + 5 2 7 1 + 6 3 4 1 + 7 3 5 1 + 8 4 15 1 + 9 4 16 1 + 10 4 17 1 + 11 5 18 1 + 12 5 19 1 + 13 5 20 1 + 14 6 13 1 + 15 6 21 1 + 16 6 22 1 + 17 6 23 1 + 18 7 8 2 + 19 7 12 1 + 20 8 9 1 + 21 8 24 1 + 22 9 10 2 + 23 9 25 1 + 24 10 11 1 + 25 10 14 1 + 26 11 12 2 + 27 11 26 1 + 28 12 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-P-CHLOROPHENYL-3,3-DIMETHYL-1-METHOXYCYCLOPROPENE (AT 120 +@MOLECULE +JAHYEW + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.3097 7.6805 3.1825 CL 1 JAHT -0.2900 + 2 CL2 2.7939 11.0409 3.1267 CL 1 JAHT -0.2900 + 3 CL3 5.1725 9.4937 3.3977 CL 1 JAHT -0.2900 + 4 N1 4.4014 10.5228 1.0501 N.3 1 JAHT -0.8100 + 5 C1 3.3448 10.9785 0.1251 C.3 1 JAHT 0.2700 + 6 C2 2.3027 9.9300 -0.2813 C.3 1 JAHT 0.0000 + 7 C3 1.8896 8.9833 0.8481 C.3 1 JAHT 0.0000 + 8 C4 3.0504 8.5754 1.7900 C.3 1 JAHT 0.2900 + 9 C5 4.0252 7.5942 1.0914 C.3 1 JAHT 0.0000 + 10 C6 4.8997 8.2407 0.0146 C.3 1 JAHT 0.0000 + 11 C7 5.3759 9.6573 0.3565 C.3 1 JAHT 0.2700 + 12 C8 3.8270 9.8479 2.2392 C.3 1 JAHT 0.8500 + 13 H1 2.8223 11.8342 0.5694 H 1 JAHT 0.0000 + 14 H2 3.8004 11.3990 -0.7811 H 1 JAHT 0.0000 + 15 H3 1.4091 10.4430 -0.6589 H 1 JAHT 0.0000 + 16 H4 2.6684 9.3495 -1.1327 H 1 JAHT 0.0000 + 17 H5 1.1001 9.4817 1.4265 H 1 JAHT 0.0000 + 18 H6 1.4161 8.0938 0.4126 H 1 JAHT 0.0000 + 19 H7 4.6949 7.1434 1.8360 H 1 JAHT 0.0000 + 20 H8 3.4744 6.7550 0.6471 H 1 JAHT 0.0000 + 21 H9 5.7753 7.6029 -0.1614 H 1 JAHT 0.0000 + 22 H10 4.3654 8.2457 -0.9394 H 1 JAHT 0.0000 + 23 H11 6.2858 9.5814 0.9640 H 1 JAHT 0.0000 + 24 H12 5.7217 10.1493 -0.5622 H 1 JAHT 0.0000 +@BOND + 1 1 8 1 + 2 2 12 1 + 3 3 12 1 + 4 4 5 1 + 5 4 11 1 + 6 4 12 1 + 7 5 6 1 + 8 5 13 1 + 9 5 14 1 + 10 6 7 1 + 11 6 15 1 + 12 6 16 1 + 13 7 8 1 + 14 7 17 1 + 15 7 18 1 + 16 8 9 1 + 17 8 12 1 + 18 9 10 1 + 19 9 19 1 + 20 9 20 1 + 21 10 11 1 + 22 10 21 1 + 23 10 22 1 + 24 11 23 1 + 25 11 24 1 +@SUBSTRUCTURE + 1 JAHT 1 +@COMMENT +COMMENT 5,9,9-TRICHLORO-1-AZABICYCLO(3.3.1)NONANE +@MOLECULE +JAKGUX + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 4.2971 1.7644 7.7176 P 1 UNCH -0.3488 + 2 P2 1.0849 1.3896 8.1658 P 1 UNCH -0.3488 + 3 C1 3.4597 2.5557 9.1386 C.2 1 UNCH 0.0150 + 4 C2 2.0616 2.4505 9.2915 C.2 1 UNCH 0.0150 + 5 C3 1.4292 3.1130 10.3498 C.2 1 UNCH -0.1500 + 6 C4 2.1767 3.8761 11.2482 C.2 1 UNCH -0.1500 + 7 C5 3.5587 3.9785 11.0982 C.2 1 UNCH -0.1500 + 8 C6 4.1995 3.3227 10.0458 C.2 1 UNCH -0.1500 + 9 C7 3.6093 0.0467 7.8095 C.3 1 UNCH 0.1669 + 10 C8 2.1725 -0.1119 8.3085 C.3 1 UNCH 0.1669 + 11 C9 3.1460 2.4210 6.4131 C.3 1 UNCH 0.1669 + 12 C10 1.6875 1.9727 6.5138 C.3 1 UNCH 0.1669 + 13 H1 0.3535 3.0338 10.4881 H 1 UNCH 0.1500 + 14 H2 1.6797 4.3874 12.0686 H 1 UNCH 0.1500 + 15 H3 4.1389 4.5734 11.7988 H 1 UNCH 0.1500 + 16 H4 5.2768 3.4227 9.9360 H 1 UNCH 0.1500 + 17 H5 4.2694 -0.5596 8.4413 H 1 UNCH 0.0000 + 18 H6 3.6885 -0.3850 6.8037 H 1 UNCH 0.0000 + 19 H7 1.6976 -0.9413 7.7713 H 1 UNCH 0.0000 + 20 H8 2.1852 -0.4105 9.3646 H 1 UNCH 0.0000 + 21 H9 3.5376 2.1428 5.4276 H 1 UNCH 0.0000 + 22 H10 3.1933 3.5167 6.4532 H 1 UNCH 0.0000 + 23 H11 1.0436 2.7944 6.1783 H 1 UNCH 0.0000 + 24 H12 1.5143 1.1553 5.8023 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 9 1 + 3 1 11 1 + 4 2 4 1 + 5 2 10 1 + 6 2 12 1 + 7 3 4 2 + 8 3 8 1 + 9 4 5 1 + 10 5 6 2 + 11 5 13 1 + 12 6 7 1 + 13 6 14 1 + 14 7 8 2 + 15 7 15 1 + 16 8 16 1 + 17 9 10 1 + 18 9 17 1 + 19 9 18 1 + 20 10 19 1 + 21 10 20 1 + 22 11 12 1 + 23 11 21 1 + 24 11 22 1 + 25 12 23 1 + 26 12 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,8-DIPHOSPHATRICYLO(6.2.2.0-2,7-)DODECA-2(7),3,5-TRIENE +@MOLECULE +JAKJOU + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.4082 2.6692 6.1667 C.2 1 JAKJ 0.1000 + 2 C2 5.1499 1.4203 5.5313 C.2 1 JAKJ 0.3020 + 3 C3 3.9162 0.7718 5.7193 C.2 1 JAKJ -0.1500 + 4 C4 2.9201 1.3290 6.5285 C.2 1 JAKJ -0.1435 + 5 C5 3.1535 2.5721 7.1177 C.2 1 JAKJ -0.1500 + 6 C6 4.3732 3.2340 6.9314 C.2 1 JAKJ -0.1500 + 7 N1 6.6056 3.3822 5.9150 N.3 1 JAKJ -0.8691 + 8 C7 7.0978 4.2984 6.9293 C.3 1 JAKJ 0.3691 + 9 N2 6.0669 0.8049 4.6954 N.2 1 JAKJ -0.1402 + 10 O1 7.1248 0.5286 5.2758 O.2 1 JAKJ -0.1618 + 11 C8 1.5991 0.6392 6.6958 C.3 1 JAKJ 0.1435 + 12 H1 8.1023 4.6332 6.6508 H 1 JAKJ 0.0000 + 13 H2 7.1670 3.8131 7.9085 H 1 JAKJ 0.0000 + 14 H3 6.4701 5.1919 7.0016 H 1 JAKJ 0.0000 + 15 H4 1.7194 -0.4485 6.6567 H 1 JAKJ 0.0000 + 16 H5 1.1521 0.8815 7.6657 H 1 JAKJ 0.0000 + 17 H6 0.9120 0.9486 5.9023 H 1 JAKJ 0.0000 + 18 H7 7.3335 2.7371 5.5989 H 1 JAKJ 0.4000 + 19 H8 3.7359 -0.1811 5.2245 H 1 JAKJ 0.1500 + 20 H9 2.3817 3.0481 7.7198 H 1 JAKJ 0.1500 + 21 H10 4.4890 4.2135 7.3860 H 1 JAKJ 0.1500 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 2 + 4 2 9 1 + 5 2 3 1 + 6 3 19 1 + 7 3 4 2 + 8 4 11 1 + 9 4 5 1 + 10 5 20 1 + 11 5 6 2 + 12 6 21 1 + 13 7 18 1 + 14 7 8 1 + 15 8 14 1 + 16 8 13 1 + 17 8 12 1 + 18 9 10 2 + 19 11 17 1 + 20 11 16 1 + 21 11 15 1 +@SUBSTRUCTURE + 1 JAKJ 1 +@COMMENT +COMMENT 4,N-DIMETHYL-2-NITROSOANILINE +@MOLECULE +JALSOE + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.4462 3.1964 11.5966 S.3 1 JALS 0.2123 + 2 S2 3.1577 2.0399 10.5115 S.3 1 JALS -0.7000 + 3 O1 4.3589 4.6772 11.3112 O.3 1 JALS -0.6000 + 4 C1 3.7921 3.0944 13.3341 C.3 1 JALS 0.0877 + 5 C2 4.7486 3.9412 14.2143 C.3 1 JALS 0.0000 + 6 C3 4.2948 3.8953 15.6847 C.3 1 JALS 0.0000 + 7 C4 4.3130 2.4384 16.1729 C.3 1 JALS 0.0000 + 8 C5 3.3714 1.5845 15.3092 C.3 1 JALS 0.0000 + 9 C6 3.8376 1.6381 13.8409 C.3 1 JALS 0.0000 + 10 C7 2.3678 3.6672 13.4511 C.3 1 JALS 0.0000 + 11 C8 1.9096 3.6085 14.9226 C.3 1 JALS 0.0000 + 12 C9 2.8639 4.4490 15.7873 C.3 1 JALS 0.0000 + 13 C10 1.9420 2.1477 15.4076 C.3 1 JALS 0.0000 + 14 H4 5.7800 3.5704 14.1401 H 1 JALS 0.0000 + 15 H5 4.7698 4.9883 13.8844 H 1 JALS 0.0000 + 16 H7 4.9706 4.4999 16.2998 H 1 JALS 0.0000 + 17 H8 4.0037 2.3912 17.2242 H 1 JALS 0.0000 + 18 H9 5.3332 2.0387 16.1228 H 1 JALS 0.0000 + 19 H10 3.3853 0.5474 15.6628 H 1 JALS 0.0000 + 20 H11 4.8522 1.2257 13.7613 H 1 JALS 0.0000 + 21 H12 3.1865 0.9814 13.2531 H 1 JALS 0.0000 + 22 H13 2.3270 4.7060 13.0993 H 1 JALS 0.0000 + 23 H14 1.6515 3.1030 12.8433 H 1 JALS 0.0000 + 24 H15 0.8909 4.0034 15.0067 H 1 JALS 0.0000 + 25 H16 2.8425 5.4957 15.4597 H 1 JALS 0.0000 + 26 H17 2.5316 4.4358 16.8326 H 1 JALS 0.0000 + 27 H18 1.5898 2.0915 16.4450 H 1 JALS 0.0000 + 28 H19 1.2570 1.5382 14.8056 H 1 JALS 0.0000 +@BOND + 1 1 4 1 + 2 1 3 1 + 3 1 2 1 + 4 4 10 1 + 5 4 9 1 + 6 4 5 1 + 7 5 15 1 + 8 5 14 1 + 9 5 6 1 + 10 6 16 1 + 11 6 12 1 + 12 6 7 1 + 13 7 18 1 + 14 7 17 1 + 15 7 8 1 + 16 8 19 1 + 17 8 13 1 + 18 8 9 1 + 19 9 21 1 + 20 9 20 1 + 21 10 23 1 + 22 10 22 1 + 23 10 11 1 + 24 11 24 1 + 25 11 13 1 + 26 11 12 1 + 27 12 26 1 + 28 12 25 1 + 29 13 28 1 + 30 13 27 1 +@SUBSTRUCTURE + 1 JALS 1 +@COMMENT +COMMENT S-BENZYLTHIURONIUM ADAMANTANETHIOSULFINATE +@MOLECULE +JAMREU + 52 53 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 12.7887 13.7509 2.4169 N.2 1 JAMR -0.9667 + 2 N2 10.9294 13.4017 1.1209 N.3 1 JAMR -0.9667 + 3 C1 11.5768 14.1542 2.0155 C.2 1 JAMR 1.2000 + 4 N3 11.0927 15.3159 2.4895 N.3 1 JAMR -0.8277 + 5 C2 9.7343 15.7356 2.4733 C.2 1 JAMR 0.3110 + 6 C3 9.4865 17.1071 2.5596 C.2 1 JAMR -0.1500 + 7 C4 8.1739 17.5922 2.5718 C.2 1 JAMR -0.1500 + 8 C5 7.0883 16.7084 2.5201 C.2 1 JAMR 0.0862 + 9 C6 7.3389 15.3308 2.4663 C.2 1 JAMR -0.1500 + 10 C7 8.6557 14.8487 2.4511 C.2 1 JAMR -0.1500 + 11 C8 5.7128 17.2844 2.5389 C.2 1 JAMR 0.6338 + 12 O1 5.5059 18.4868 2.5726 O.2 1 JAMR -0.5700 + 13 O2 4.7856 16.2621 2.5138 O.3 1 JAMR -0.2325 + 14 C9 3.4395 16.6500 2.5185 C.2 1 JAMR 0.0825 + 15 C10 2.6369 16.1560 3.5435 C.2 1 JAMR -0.1500 + 16 C11 1.2765 16.4626 3.5550 C.2 1 JAMR -0.1500 + 17 C12 0.7159 17.2513 2.5368 C.2 1 JAMR -0.1435 + 18 C13 1.5381 17.7218 1.5021 C.2 1 JAMR -0.1500 + 19 C14 2.8999 17.4159 1.4870 C.2 1 JAMR -0.1500 + 20 C15 -0.7596 17.5762 2.5595 C.3 1 JAMR 0.2045 + 21 C16 -1.6464 16.3835 2.2755 C.2 1 JAMR 0.6590 + 22 O3 -1.3443 15.4057 1.6038 O.2 1 JAMR -0.5700 + 23 O4 -2.8687 16.5778 2.8534 O.3 1 JAMR -0.4300 + 24 C17 -3.7104 15.4230 2.8265 C.3 1 JAMR 0.3410 + 25 C18 -3.2613 14.3481 3.8308 C.2 1 JAMR 0.5690 + 26 O5 -2.3355 14.5684 4.6173 O.2 1 JAMR -0.5700 + 27 N4 -3.9597 13.1405 3.8256 N.3 1 JAMR -0.6602 + 28 C19 -4.9160 12.7662 2.7954 C.3 1 JAMR 0.3001 + 29 C20 -3.4651 12.0589 4.6618 C.3 1 JAMR 0.3001 + 30 H1 13.3077 14.2580 3.1231 H 1 JAMR 0.4500 + 31 H2 13.2062 12.8978 2.0676 H 1 JAMR 0.4500 + 32 H3 11.3052 12.5236 0.7886 H 1 JAMR 0.4500 + 33 H4 10.1009 13.7522 0.6560 H 1 JAMR 0.4500 + 34 H5 11.7692 15.9754 2.8578 H 1 JAMR 0.4500 + 35 H6 10.3034 17.8235 2.6020 H 1 JAMR 0.1500 + 36 H7 8.0005 18.6677 2.6265 H 1 JAMR 0.1500 + 37 H8 6.5183 14.6145 2.4544 H 1 JAMR 0.1500 + 38 H9 8.7985 13.7723 2.4761 H 1 JAMR 0.1500 + 39 H10 3.0574 15.5348 4.3278 H 1 JAMR 0.1500 + 40 H11 0.6492 16.0730 4.3562 H 1 JAMR 0.1500 + 41 H12 1.1225 18.3254 0.6982 H 1 JAMR 0.1500 + 42 H13 3.5243 17.7796 0.6770 H 1 JAMR 0.1500 + 43 H14 -0.9979 18.3536 1.8247 H 1 JAMR 0.0000 + 44 H15 -1.0006 17.9784 3.5514 H 1 JAMR 0.0000 + 45 H16 -3.7590 15.0168 1.8105 H 1 JAMR 0.0000 + 46 H17 -4.7131 15.7551 3.1146 H 1 JAMR 0.0000 + 47 H18 -5.4607 13.6339 2.4186 H 1 JAMR 0.0000 + 48 H19 -5.6417 12.0604 3.2100 H 1 JAMR 0.0000 + 49 H20 -4.3729 12.2955 1.9707 H 1 JAMR 0.0000 + 50 H21 -4.3139 11.5047 5.0728 H 1 JAMR 0.0000 + 51 H22 -2.8576 12.4303 5.4913 H 1 JAMR 0.0000 + 52 H23 -2.8542 11.3925 4.0454 H 1 JAMR 0.0000 +@BOND + 1 1 31 1 + 2 1 30 1 + 3 1 3 2 + 4 2 33 1 + 5 2 32 1 + 6 2 3 am + 7 3 4 am + 8 4 34 1 + 9 4 5 1 + 10 5 10 1 + 11 5 6 2 + 12 6 35 1 + 13 6 7 1 + 14 7 36 1 + 15 7 8 2 + 16 8 11 1 + 17 8 9 1 + 18 9 37 1 + 19 9 10 2 + 20 10 38 1 + 21 11 13 1 + 22 11 12 2 + 23 13 14 1 + 24 14 19 1 + 25 14 15 2 + 26 15 39 1 + 27 15 16 1 + 28 16 40 1 + 29 16 17 2 + 30 17 20 1 + 31 17 18 1 + 32 18 41 1 + 33 18 19 2 + 34 19 42 1 + 35 20 44 1 + 36 20 43 1 + 37 20 21 1 + 38 21 23 1 + 39 21 22 2 + 40 23 24 1 + 41 24 46 1 + 42 24 45 1 + 43 24 25 1 + 44 25 27 am + 45 25 26 2 + 46 27 29 1 + 47 27 28 1 + 48 28 49 1 + 49 28 48 1 + 50 28 47 1 + 51 29 52 1 + 52 29 51 1 + 53 29 50 1 +@SUBSTRUCTURE + 1 JAMR 1 +@COMMENT +COMMENT N,N-DIMETHYLCARBAMOYLMETHYL-P-(P-GUANIDINOBENZOYLOXY)PHENYL +@MOLECULE +JANDOR + 53 56 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.3349 11.6677 3.5535 C.3 1 JAND 0.4182 + 2 C2 -0.5086 11.1681 2.3949 C.2 1 JAND -0.0372 + 3 C3 0.7569 11.6133 2.4757 C.2 1 JAND 0.1234 + 4 N1 0.9736 12.3879 3.6045 N.3 1 JAND -0.3940 + 5 C4 -0.3087 12.4733 4.3632 C.3 1 JAND 0.2250 + 6 C5 -0.1713 14.0238 4.2704 C.3 1 JAND 0.0530 + 7 C6 1.1152 13.7467 3.4871 C.2 1 JAND 0.5770 + 8 C7 -0.0113 14.8295 5.5486 C.3 1 JAND 0.2800 + 9 C8 -1.3623 15.0124 6.2256 C.3 1 JAND 0.0000 + 10 O1 0.8592 14.1548 6.4526 O.3 1 JAND -0.6800 + 11 O2 -2.3738 12.5402 3.1133 O.3 1 JAND -0.5600 + 12 C9 -3.6704 11.9895 3.3041 C.3 1 JAND 0.2800 + 13 S1 -1.1802 10.1291 1.1947 S.3 1 JAND -0.2025 + 14 C10 -1.3723 8.6289 2.1339 C.2 1 JAND 0.7215 + 15 N2 -2.2577 7.7344 1.6626 N.2 1 JAND -0.6200 + 16 C11 -2.3895 6.5922 2.3610 C.2 1 JAND 0.1600 + 17 C12 -1.6832 6.3182 3.5068 C.2 1 JAND -0.1500 + 18 C13 -0.8137 7.3007 3.9137 C.2 1 JAND 0.1600 + 19 N3 -0.6440 8.4630 3.2562 N.2 1 JAND -0.6200 + 20 C14 1.8667 11.3411 1.5136 C.2 1 JAND 0.7056 + 21 O3 1.7293 10.8844 0.3891 O.2 1 JAND -0.5700 + 22 O4 3.0571 11.6454 2.0942 O.3 1 JAND -0.4300 + 23 C15 4.2078 11.4562 1.2648 C.3 1 JAND 0.4235 + 24 C16 4.4512 12.6624 0.3893 C.2 1 JAND -0.1435 + 25 C17 4.5074 12.5296 -1.0059 C.2 1 JAND -0.1500 + 26 C18 4.7283 13.6455 -1.8173 C.2 1 JAND -0.1500 + 27 C19 4.8925 14.9055 -1.2282 C.2 1 JAND 0.1330 + 28 C20 4.8366 15.0541 0.1621 C.2 1 JAND -0.1500 + 29 C21 4.6175 13.9318 0.9638 C.2 1 JAND -0.1500 + 30 N4 5.1226 16.0806 -2.0768 N.2 1 JAND 0.9070 + 31 O5 5.1396 15.9121 -3.3051 O.3 1 JAND -0.5200 + 32 O6 5.2952 17.1739 -1.5182 O.2 1 JAND -0.5200 + 33 O7 1.9113 14.4298 2.8827 O.2 1 JAND -0.5700 + 34 H1 -1.7203 10.8425 4.1650 H 1 JAND 0.0000 + 35 H2 -0.1843 12.0633 5.3742 H 1 JAND 0.0000 + 36 H3 -0.9088 14.5025 3.6107 H 1 JAND 0.0000 + 37 H4 0.4225 15.8097 5.3206 H 1 JAND 0.0000 + 38 H5 -1.2535 15.5854 7.1526 H 1 JAND 0.0000 + 39 H6 -1.7990 14.0455 6.5000 H 1 JAND 0.0000 + 40 H7 -2.0683 15.5336 5.5717 H 1 JAND 0.0000 + 41 H8 -3.1024 5.8802 1.9546 H 1 JAND 0.1500 + 42 H9 -1.8019 5.3907 4.0492 H 1 JAND 0.1500 + 43 H10 -0.2068 7.1786 4.8066 H 1 JAND 0.1500 + 44 H11 4.1265 10.5301 0.6821 H 1 JAND 0.0000 + 45 H12 5.0712 11.3244 1.9273 H 1 JAND 0.0000 + 46 H13 4.3602 11.5556 -1.4703 H 1 JAND 0.1500 + 47 H14 4.7597 13.5164 -2.8969 H 1 JAND 0.1500 + 48 H15 4.9467 16.0270 0.6359 H 1 JAND 0.1500 + 49 H16 4.5491 14.0543 2.0446 H 1 JAND 0.1500 + 50 H17 1.0783 14.7792 7.1678 H 1 JAND 0.4000 + 51 H18 -3.7799 11.0468 2.7608 H 1 JAND 0.0000 + 52 H19 -3.8622 11.8344 4.3703 H 1 JAND 0.0000 + 53 H20 -4.4054 12.7013 2.9191 H 1 JAND 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 11 1 + 4 1 34 1 + 5 2 3 2 + 6 2 13 1 + 7 3 4 1 + 8 3 20 1 + 9 4 5 1 + 10 4 7 am + 11 5 6 1 + 12 5 35 1 + 13 6 7 1 + 14 6 8 1 + 15 6 36 1 + 16 7 33 2 + 17 8 9 1 + 18 8 10 1 + 19 8 37 1 + 20 9 38 1 + 21 9 39 1 + 22 9 40 1 + 23 10 50 1 + 24 11 12 1 + 25 12 51 1 + 26 12 52 1 + 27 12 53 1 + 28 13 14 1 + 29 14 15 2 + 30 14 19 am + 31 15 16 1 + 32 16 17 2 + 33 16 41 1 + 34 17 18 1 + 35 17 42 1 + 36 18 19 2 + 37 18 43 1 + 38 20 21 2 + 39 20 22 1 + 40 22 23 1 + 41 23 24 1 + 42 23 44 1 + 43 23 45 1 + 44 24 25 2 + 45 24 29 1 + 46 25 26 1 + 47 25 46 1 + 48 26 27 2 + 49 26 47 1 + 50 27 28 1 + 51 27 30 1 + 52 28 29 2 + 53 28 48 1 + 54 29 49 1 + 55 30 31 1 + 56 30 32 2 +@SUBSTRUCTURE + 1 JAND 1 +@COMMENT +COMMENT P-NITROBENZYL 1BETA-METHOXYCARBAPENEM ESTER +@MOLECULE +JANMAM + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.9782 18.6146 8.0182 P 1 JANM 1.2782 + 2 O1 0.6541 17.1074 7.4705 O.3 1 JANM -0.5512 + 3 O2 0.7957 18.5912 9.5252 O.3 1 JANM -0.9500 + 4 O3 2.3188 19.0282 7.4358 O.3 1 JANM -0.9500 + 5 O4 -2.3717 19.8254 6.2478 O.3 1 JANM -0.3370 + 6 N1 -1.3226 19.0275 6.7152 N.2 1 JANM -0.5130 + 7 C1 1.0340 16.8286 6.1412 C.3 1 JANM 0.2800 + 8 C2 -0.3571 19.7112 7.2745 C.2 1 JANM 0.2568 + 9 C3 -0.2369 21.1889 7.3783 C.2 1 JANM 0.0862 + 10 C4 -0.5435 22.0206 6.2957 C.2 1 JANM -0.1500 + 11 C5 -0.3996 23.4051 6.4115 C.2 1 JANM -0.1500 + 12 C6 0.0611 23.9608 7.6050 C.2 1 JANM -0.1500 + 13 C7 0.3841 23.1331 8.6803 C.2 1 JANM -0.1500 + 14 C8 0.2400 21.7486 8.5666 C.2 1 JANM -0.1500 + 15 H1 -0.8767 21.5896 5.3563 H 1 JANM 0.1500 + 16 H2 -0.6371 24.0448 5.5670 H 1 JANM 0.1500 + 17 H3 0.1809 25.0364 7.6947 H 1 JANM 0.1500 + 18 H4 0.7587 23.5565 9.6079 H 1 JANM 0.1500 + 19 H5 0.5047 21.1112 9.4093 H 1 JANM 0.1500 + 20 H7 0.7678 17.6487 5.4689 H 1 JANM 0.0000 + 21 H8 2.1115 16.6491 6.0951 H 1 JANM 0.0000 + 22 H9 0.5154 15.9246 5.8116 H 1 JANM 0.0000 + 23 H6 -3.0358 19.1537 6.0125 H 1 JANM 0.4000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 8 1 + 5 2 7 1 + 6 5 23 1 + 7 5 6 1 + 8 6 8 2 + 9 7 20 1 + 10 7 21 1 + 11 7 22 1 + 12 8 9 1 + 13 9 10 2 + 14 9 14 1 + 15 10 11 1 + 16 10 15 1 + 17 11 12 2 + 18 11 16 1 + 19 12 13 1 + 20 12 17 1 + 21 13 14 2 + 22 13 18 1 + 23 14 19 1 +@SUBSTRUCTURE + 1 JANM 1 +@COMMENT +COMMENT SODIUM METHYL (ALPHA(HYDROXYIMINO)BENZYL)PHOSPHONATE +@MOLECULE +JAPFAH + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.7456 4.7092 1.8759 S.3 1 UNCH -0.3710 + 2 C1 0.3305 4.9919 4.5064 C.3 1 UNCH 0.3001 + 3 C2 -0.3825 4.4039 3.2923 C.3 1 UNCH 0.2300 + 4 C3 1.5606 5.9704 2.7146 C.2 1 UNCH 0.6510 + 5 N1 2.4360 6.8251 2.3078 N.2 1 UNCH -0.6210 + 6 N2 1.1883 6.0272 4.0048 N.3 1 UNCH -0.4201 + 7 C4 1.9210 6.9834 4.6128 C.2 1 UNCH 0.6156 + 8 O1 1.9636 7.3042 5.7830 O.2 1 UNCH -0.5700 + 9 C5 2.7195 7.5357 3.4634 C.2 1 UNCH 0.1854 + 10 C6 3.5583 8.5675 3.6191 C.2 1 UNCH -0.1784 + 11 C7 4.3762 9.1829 2.5641 C.2 1 UNCH 0.0284 + 12 C8 5.0266 8.4274 1.5798 C.2 1 UNCH -0.1500 + 13 C9 5.8169 9.0684 0.6153 C.2 1 UNCH 0.1330 + 14 N3 6.4935 8.2722 -0.4145 N.2 1 UNCH 0.9070 + 15 O2 7.0089 8.8799 -1.3645 O.3 1 UNCH -0.5200 + 16 O3 6.5201 7.0416 -0.2716 O.2 1 UNCH -0.5200 + 17 C10 5.9771 10.4595 0.6273 C.2 1 UNCH -0.1500 + 18 C11 5.3458 11.2101 1.6172 C.2 1 UNCH -0.1500 + 19 C12 4.5572 10.5747 2.5810 C.2 1 UNCH -0.1500 + 20 H1 0.9614 4.2424 4.9983 H 1 UNCH 0.0000 + 21 H2 -0.3594 5.3957 5.2534 H 1 UNCH 0.0000 + 22 H3 -1.3163 4.9414 3.0986 H 1 UNCH 0.0000 + 23 H4 -0.6025 3.3400 3.4129 H 1 UNCH 0.0000 + 24 H5 3.6455 9.0255 4.6030 H 1 UNCH 0.1500 + 25 H6 4.9150 7.3447 1.5642 H 1 UNCH 0.1500 + 26 H7 6.5887 10.9658 -0.1165 H 1 UNCH 0.1500 + 27 H8 5.4658 12.2909 1.6412 H 1 UNCH 0.1500 + 28 H9 4.0730 11.1826 3.3439 H 1 UNCH 0.1500 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 2 3 1 + 4 2 6 1 + 5 2 20 1 + 6 2 21 1 + 7 3 22 1 + 8 3 23 1 + 9 4 5 2 + 10 4 6 am + 11 5 9 1 + 12 6 7 am + 13 7 8 2 + 14 7 9 1 + 15 9 10 2 + 16 10 11 1 + 17 10 24 1 + 18 11 12 1 + 19 11 19 2 + 20 12 13 2 + 21 12 25 1 + 22 13 14 1 + 23 13 17 1 + 24 14 15 1 + 25 14 16 2 + 26 17 18 2 + 27 17 26 1 + 28 18 19 1 + 29 18 27 1 + 30 19 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3-DIHYDRO-6-(3-NITROBENZYLIDENE)IMADAZO(2,1-B)THIAZOL-5(6 +@MOLECULE +JATBIP + 24 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.5094 0.0778 4.5172 N.2 1 UNCH -0.4500 + 2 C1 1.2317 1.1373 4.7000 C.2 1 UNCH 0.7500 + 3 O1 1.0277 2.0219 5.7151 O.3 1 UNCH -0.4300 + 4 C2 1.8954 3.1545 5.8083 C.3 1 UNCH 0.2800 + 5 O2 2.2731 1.4757 3.8920 O.3 1 UNCH -0.4300 + 6 C3 2.5269 0.5764 2.8103 C.3 1 UNCH 0.2800 + 7 H1 1.5843 3.7461 6.6739 H 1 UNCH 0.0000 + 8 H2 1.8075 3.7797 4.9146 H 1 UNCH 0.0000 + 9 H3 2.9297 2.8335 5.9647 H 1 UNCH 0.0000 + 10 H4 3.3804 0.9621 2.2457 H 1 UNCH 0.0000 + 11 H5 1.6639 0.5284 2.1388 H 1 UNCH 0.0000 + 12 H6 2.7858 -0.4175 3.1885 H 1 UNCH 0.0000 + 13 N1B -0.5094 -0.0778 5.4658 N.2 1 UNCH -0.4500 + 14 C1B -1.2317 -1.1373 5.2830 C.2 1 UNCH 0.7500 + 15 O1B -1.0277 -2.0219 4.2679 O.3 1 UNCH -0.4300 + 16 O2B -2.2731 -1.4757 6.0910 O.3 1 UNCH -0.4300 + 17 C2B -1.8954 -3.1545 4.1747 C.3 1 UNCH 0.2800 + 18 C3B -2.5269 -0.5764 7.1727 C.3 1 UNCH 0.2800 + 19 H1B -1.5843 -3.7461 3.3091 H 1 UNCH 0.0000 + 20 H2B -1.8075 -3.7797 5.0684 H 1 UNCH 0.0000 + 21 H3B -2.9297 -2.8335 4.0183 H 1 UNCH 0.0000 + 22 H4B -3.3804 -0.9621 7.7373 H 1 UNCH 0.0000 + 23 H5B -1.6639 -0.5284 7.8442 H 1 UNCH 0.0000 + 24 H6B -2.7858 0.4175 6.7945 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 13 1 + 3 2 3 1 + 4 2 5 1 + 5 3 4 1 + 6 4 7 1 + 7 4 8 1 + 8 4 9 1 + 9 5 6 1 + 10 6 10 1 + 11 6 11 1 + 12 6 12 1 + 13 13 14 2 + 14 14 15 1 + 15 14 16 1 + 16 15 17 1 + 17 16 18 1 + 18 17 19 1 + 19 17 20 1 + 20 17 21 1 + 21 18 22 1 + 22 18 23 1 + 23 18 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TETRAMETHOXYFORMALDAZINE +@MOLECULE +JATCOW + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 15.4231 5.1345 4.3797 S.3 1 JATC -0.0800 + 2 C1 16.2688 4.8652 5.8258 C.2 1 JATC 0.5021 + 3 N1 15.6497 5.0934 6.9535 N.2 1 JATC -0.5653 + 4 N2 13.5051 5.8494 7.6431 N.2 1 JATC -0.5660 + 5 C2 12.3170 6.2556 7.1929 C.2 1 JATC 0.4700 + 6 N3 11.9207 6.3693 5.9140 N.2 1 JATC -0.6200 + 7 C3 12.7922 6.0587 4.9397 C.2 1 JATC 0.4100 + 8 C4 14.0593 5.6227 5.3075 C.2 1 JATC 0.0400 + 9 C5 14.3759 5.5335 6.6617 C.2 1 JATC 0.4832 + 10 CL1 17.8896 4.3021 5.7690 CL 1 JATC -0.1240 + 11 N4 12.3647 6.1879 3.6293 N.3 1 JATC -0.9000 + 12 H1 11.5828 6.5243 7.9467 H 1 JATC 0.1500 + 13 H2 12.8305 5.6122 2.9413 H 1 JATC 0.4000 + 14 H3 11.3556 6.2589 3.5634 H 1 JATC 0.4000 +@BOND + 1 1 8 1 + 2 1 2 1 + 3 2 10 1 + 4 2 3 2 + 5 3 9 1 + 6 4 9 1 + 7 4 5 2 + 8 5 12 1 + 9 5 6 am + 10 6 7 2 + 11 7 11 am + 12 7 8 1 + 13 8 9 2 + 14 11 14 1 + 15 11 13 1 +@SUBSTRUCTURE + 1 JATC 1 +@COMMENT +COMMENT 7-AMINO-2-CHLORO(1,3)THIAZOLO(4,5-D)PYRIMIDINE +@MOLECULE +JATLOF + 36 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.6173 1.6947 0.2386 S.3 1 JATL -0.0800 + 2 C1 4.4623 0.5379 0.7468 C.2 1 JATL 0.6361 + 3 N1 3.2068 0.9056 0.6394 N.2 1 JATL -0.5653 + 4 C2 3.1246 2.2059 0.1466 C.2 1 JATL 0.0462 + 5 C3 4.3495 2.7837 -0.1368 C.2 1 JATL -0.1100 + 6 N2 4.9591 -0.6585 1.2179 N.2 1 JATL -0.7747 + 7 C4 4.1490 -1.6280 1.6767 C.2 1 JATL 1.2000 + 8 N3 4.6849 -2.7790 2.1135 N.3 1 JATL -0.9667 + 9 N4 2.8189 -1.5006 1.7234 N.3 1 JATL -0.9667 + 10 C5 1.7807 2.8442 -0.0260 C.3 1 JATL 0.4110 + 11 S2 0.8935 3.0652 1.5572 S.3 1 JATL -0.4600 + 12 C6 2.0962 4.0711 2.4959 C.3 1 JATL 0.2300 + 13 C7 2.3006 5.4658 1.9141 C.3 1 JATL 0.0610 + 14 C8 3.5804 6.0708 2.4803 C.2 1 JATL 0.4390 + 15 N5 3.4320 7.1183 3.3515 N.3 1 JATL -0.8500 + 16 N6 4.6710 5.5194 2.0680 N.2 1 JATL -0.6380 + 17 S3 6.1298 5.9847 2.5469 S.3 1 JATL 1.6260 + 18 N7 6.4663 5.1708 3.9732 N.3 1 JATL -0.9780 + 19 O1 7.1090 5.4748 1.6150 O.3 1 JATL -0.6500 + 20 O2 6.1192 7.3815 2.9247 O.3 1 JATL -0.6500 + 21 H1 4.5596 3.7744 -0.5196 H 1 JATL 0.1500 + 22 H2 5.9576 -0.8030 1.2256 H 1 JATL 0.4500 + 23 H3 5.6824 -2.9476 2.1051 H 1 JATL 0.4500 + 24 H4 4.0969 -3.5246 2.4648 H 1 JATL 0.4500 + 25 H5 2.1973 -2.2164 2.0687 H 1 JATL 0.4500 + 26 H6 2.3986 -0.6252 1.3979 H 1 JATL 0.4500 + 27 H7 1.8565 3.8038 -0.5456 H 1 JATL 0.0000 + 28 H8 1.1640 2.1949 -0.6570 H 1 JATL 0.0000 + 29 H9 1.7099 4.1670 3.5173 H 1 JATL 0.0000 + 30 H10 3.0319 3.5109 2.5866 H 1 JATL 0.0000 + 31 H11 2.4181 5.4500 0.8258 H 1 JATL 0.0000 + 32 H12 1.4418 6.1066 2.1429 H 1 JATL 0.0000 + 33 H13 4.2520 7.7251 3.4466 H 1 JATL 0.4000 + 34 H14 2.5742 7.6607 3.2976 H 1 JATL 0.4000 + 35 H15 6.4422 5.8442 4.7401 H 1 JATL 0.4200 + 36 H16 7.3917 4.7510 3.8771 H 1 JATL 0.4200 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 6 am + 4 2 3 2 + 5 3 4 1 + 6 4 10 1 + 7 4 5 2 + 8 5 21 1 + 9 6 22 1 + 10 6 7 2 + 11 7 9 am + 12 7 8 am + 13 8 24 1 + 14 8 23 1 + 15 9 26 1 + 16 9 25 1 + 17 10 28 1 + 18 10 27 1 + 19 10 11 1 + 20 11 12 1 + 21 12 30 1 + 22 12 29 1 + 23 12 13 1 + 24 13 32 1 + 25 13 31 1 + 26 13 14 1 + 27 14 16 2 + 28 14 15 am + 29 15 34 1 + 30 15 33 1 + 31 16 17 1 + 32 17 20 1 + 33 17 19 1 + 34 17 18 1 + 35 18 36 1 + 36 18 35 1 +@SUBSTRUCTURE + 1 JATL 1 +@COMMENT +COMMENT 3-(2-(DIAMINOMETHYLENEAMINO)-4-THIAZOLYLMETHYLTHIO)-N'-SULF +@MOLECULE +JATMEW + 38 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.6555 -3.0519 3.4049 S.3 1 UNCH -0.0800 + 2 C1 4.3017 -3.7699 2.6017 C.2 1 UNCH 0.4621 + 3 N1 3.1600 -3.1487 2.8140 N.2 1 UNCH -0.5653 + 4 C2 3.3312 -2.0514 3.6472 C.2 1 UNCH 0.0462 + 5 C3 4.6296 -1.8635 4.0805 C.2 1 UNCH -0.1100 + 6 N2 4.3738 -4.8562 1.7790 N.3 1 UNCH -0.4950 + 7 N3 5.3002 -5.8544 2.1834 N.3 1 UNCH -0.5290 + 8 C4 5.9165 -6.4164 0.9797 C.3 1 UNCH 0.2700 + 9 C5 4.6043 -6.8977 2.9441 C.3 1 UNCH 0.2700 + 10 C6 2.1461 -1.2157 4.0061 C.3 1 UNCH 0.4110 + 11 S2 1.5750 -0.1256 2.6551 S.3 1 UNCH -0.4600 + 12 C7 3.0985 0.8094 2.2864 C.3 1 UNCH 0.2300 + 13 C8 3.4843 1.7604 3.4124 C.3 1 UNCH 0.0610 + 14 C9 4.8493 2.3653 3.1103 C.2 1 UNCH 0.4390 + 15 N4 4.8514 3.6010 2.5141 N.3 1 UNCH -0.8500 + 16 N5 5.8600 1.6378 3.4458 N.2 1 UNCH -0.6380 + 17 S3 7.3665 2.0929 3.1384 S.3 1 UNCH 1.6260 + 18 N6 8.3402 1.3116 4.2544 N.3 1 UNCH -0.9780 + 19 O1 7.7856 1.5497 1.8675 O.3 1 UNCH -0.6500 + 20 O2 7.5329 3.5022 3.4269 O.3 1 UNCH -0.6500 + 21 H1 5.0212 -1.0929 4.7291 H 1 UNCH 0.1500 + 22 H2 3.4592 -5.1725 1.4595 H 1 UNCH 0.4000 + 23 H3 5.1792 -6.8731 0.3088 H 1 UNCH 0.0000 + 24 H4 6.4503 -5.6371 0.4236 H 1 UNCH 0.0000 + 25 H5 6.6575 -7.1772 1.2489 H 1 UNCH 0.0000 + 26 H6 4.1540 -6.4803 3.8519 H 1 UNCH 0.0000 + 27 H7 3.8126 -7.3805 2.3591 H 1 UNCH 0.0000 + 28 H8 5.3125 -7.6680 3.2687 H 1 UNCH 0.0000 + 29 H9 1.3118 -1.8780 4.2626 H 1 UNCH 0.0000 + 30 H10 2.3454 -0.6119 4.8970 H 1 UNCH 0.0000 + 31 H11 3.9085 0.1199 2.0300 H 1 UNCH 0.0000 + 32 H12 2.9052 1.3911 1.3775 H 1 UNCH 0.0000 + 33 H13 2.7409 2.5586 3.5196 H 1 UNCH 0.0000 + 34 H14 3.5582 1.2456 4.3762 H 1 UNCH 0.0000 + 35 H15 4.0190 4.1742 2.6080 H 1 UNCH 0.4000 + 36 H16 5.7080 4.1474 2.6274 H 1 UNCH 0.4000 + 37 H17 8.7495 0.4956 3.7990 H 1 UNCH 0.4200 + 38 H18 9.0476 1.9671 4.5833 H 1 UNCH 0.4200 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 6 am + 5 3 4 1 + 6 4 5 2 + 7 4 10 1 + 8 5 21 1 + 9 6 7 1 + 10 6 22 1 + 11 7 8 1 + 12 7 9 1 + 13 8 23 1 + 14 8 24 1 + 15 8 25 1 + 16 9 26 1 + 17 9 27 1 + 18 9 28 1 + 19 10 11 1 + 20 10 29 1 + 21 10 30 1 + 22 11 12 1 + 23 12 13 1 + 24 12 31 1 + 25 12 32 1 + 26 13 14 1 + 27 13 33 1 + 28 13 34 1 + 29 14 15 am + 30 14 16 2 + 31 15 35 1 + 32 15 36 1 + 33 16 17 1 + 34 17 18 1 + 35 17 19 1 + 36 17 20 1 + 37 18 37 1 + 38 18 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-(2-N',N'-(DIMETHYLHYDRAZINO)-4-THIAZOLYLMETHYLTHIO)-N''-S +@MOLECULE +JAVGAO + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.1791 0.6231 1.2604 S.3 1 JATV -0.0845 + 2 O1 2.2659 3.3478 3.4050 O.3 1 JATV -0.5200 + 3 O2 2.7715 1.7063 4.7895 O.2 1 JATV -0.5200 + 4 N1 2.0038 1.3812 -0.2216 N.3 1 JATV -0.5570 + 5 N2 2.9307 2.3618 3.7511 N.2 1 JATV 0.9070 + 6 C1 3.7952 1.2190 1.7438 C.2 1 JATV 0.1015 + 7 C2 4.0290 1.9755 2.8971 C.2 1 JATV 0.1330 + 8 C3 5.3122 2.3993 3.2715 C.2 1 JATV -0.1500 + 9 C4 6.3974 2.0589 2.4677 C.2 1 JATV -0.1500 + 10 C5 6.1941 1.3059 1.3108 C.2 1 JATV -0.1500 + 11 C6 4.9060 0.8877 0.9539 C.2 1 JATV -0.1500 + 12 C7 1.4899 2.7579 -0.2388 C.3 1 JATV 0.2700 + 13 H1 5.4660 2.9859 4.1743 H 1 JATV 0.1500 + 14 H2 7.4011 2.3782 2.7396 H 1 JATV 0.1500 + 15 H3 7.0407 1.0387 0.6815 H 1 JATV 0.1500 + 16 H4 4.7756 0.2980 0.0479 H 1 JATV 0.1500 + 17 H5 0.4334 2.7970 0.0504 H 1 JATV 0.0000 + 18 H6 2.0566 3.3986 0.4463 H 1 JATV 0.0000 + 19 H7 1.5960 3.2052 -1.2338 H 1 JATV 0.0000 + 20 C7C 1.3661 0.6217 -1.3034 C.3 1 JATV 0.2700 + 21 H5C 0.2950 0.4783 -1.1199 H 1 JATV 0.0000 + 22 H6C 1.8303 -0.3656 -1.4119 H 1 JATV 0.0000 + 23 H7C 1.4906 1.1279 -2.2675 H 1 JATV 0.0000 +@BOND + 1 1 4 1 + 2 1 6 1 + 3 2 5 1 + 4 3 5 2 + 5 4 12 1 + 6 4 20 1 + 7 5 7 1 + 8 6 7 2 + 9 6 11 1 + 10 7 8 1 + 11 8 9 2 + 12 8 13 1 + 13 9 10 1 + 14 9 14 1 + 15 10 11 2 + 16 10 15 1 + 17 11 16 1 + 18 12 17 1 + 19 12 18 1 + 20 12 19 1 + 21 20 21 1 + 22 20 22 1 + 23 20 23 1 +@SUBSTRUCTURE + 1 JATV 1 +@COMMENT +COMMENT N,N-DIMETHYL-O-NITROBENZENESULFENAMIDE +@MOLECULE +JAWJIA + 37 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.1716 2.0417 10.7477 N.3 1 UNCH -0.4900 + 2 C1 1.9337 1.7930 9.4212 C.2 1 UNCH 0.5600 + 3 N2 1.9446 2.7184 8.5078 N.2 1 UNCH -0.6210 + 4 C2 2.2196 3.9748 8.9547 C.2 1 UNCH 0.2800 + 5 C3 2.4617 4.3303 10.2200 C.2 1 UNCH 0.1234 + 6 C4 2.4271 3.2966 11.2528 C.2 1 UNCH 0.6156 + 7 N3 2.7318 5.6704 10.2971 N.3 1 UNCH -0.4691 + 8 C5 2.6701 6.1993 8.9870 C.2 1 UNCH 0.6900 + 9 N4 2.3233 5.0961 8.1677 N.3 1 UNCH -0.4691 + 10 N5 1.6839 0.5069 9.0747 N.3 1 UNCH -0.8500 + 11 O1 2.6078 3.5120 12.4443 O.2 1 UNCH -0.5700 + 12 C6 3.0656 6.4060 11.4835 C.3 1 UNCH 0.3001 + 13 O2 2.8733 7.3513 8.6443 O.2 1 UNCH -0.5700 + 14 C7 2.2223 5.1844 6.7384 C.3 1 UNCH 0.5801 + 15 C8 3.3310 4.4454 5.9785 C.3 1 UNCH 0.2800 + 16 C9 2.6553 4.2182 4.6359 C.3 1 UNCH 0.2800 + 17 C10 1.1854 4.0041 5.0078 C.3 1 UNCH 0.2800 + 18 C11 0.7753 2.5312 5.0957 C.3 1 UNCH 0.2800 + 19 O3 4.5365 5.1964 5.8371 O.3 1 UNCH -0.6800 + 20 O4 2.8068 5.4278 3.8635 O.3 1 UNCH -0.6800 + 21 O5 0.9723 4.6186 6.2996 O.3 1 UNCH -0.5600 + 22 O6 1.6214 1.7901 5.9682 O.3 1 UNCH -0.6800 + 23 H1 2.1014 1.2985 11.4240 H 1 UNCH 0.3700 + 24 H2 1.7302 0.3536 8.0681 H 1 UNCH 0.4000 + 25 H3 2.1774 -0.2105 9.5900 H 1 UNCH 0.4000 + 26 H4 3.9827 5.9962 11.9162 H 1 UNCH 0.0000 + 27 H5 3.2258 7.4607 11.2434 H 1 UNCH 0.0000 + 28 H6 2.2459 6.3240 12.2029 H 1 UNCH 0.0000 + 29 H7 2.2190 6.2449 6.4573 H 1 UNCH 0.0000 + 30 H8 3.5796 3.4898 6.4488 H 1 UNCH 0.0000 + 31 H9 3.1040 3.4059 4.0568 H 1 UNCH 0.0000 + 32 H10 0.5217 4.5128 4.2996 H 1 UNCH 0.0000 + 33 H11 -0.2483 2.4389 5.4733 H 1 UNCH 0.0000 + 34 H12 0.8241 2.0632 4.1079 H 1 UNCH 0.0000 + 35 H13 4.3481 5.8532 5.1348 H 1 UNCH 0.4000 + 36 H14 2.4141 5.2651 2.9867 H 1 UNCH 0.4000 + 37 H15 1.5576 2.2403 6.8435 H 1 UNCH 0.4000 +@BOND + 1 1 2 am + 2 1 6 am + 3 1 23 1 + 4 2 3 2 + 5 2 10 am + 6 3 4 1 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 7 1 + 11 6 11 2 + 12 7 8 am + 13 7 12 1 + 14 8 9 am + 15 8 13 2 + 16 9 14 1 + 17 10 24 1 + 18 10 25 1 + 19 12 26 1 + 20 12 27 1 + 21 12 28 1 + 22 14 15 1 + 23 14 21 1 + 24 14 29 1 + 25 15 16 1 + 26 15 19 1 + 27 15 30 1 + 28 16 17 1 + 29 16 20 1 + 30 16 31 1 + 31 17 18 1 + 32 17 21 1 + 33 17 32 1 + 34 18 22 1 + 35 18 33 1 + 36 18 34 1 + 37 19 35 1 + 38 20 36 1 + 39 22 37 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 7-METHYL-8-OXO-7,8-DIHYDROGUANOSINE MONOHYDRATE +@MOLECULE +JAWMAV + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.4997 -0.6430 2.0602 O.3 1 UNCH -0.6579 + 2 N1 3.8576 2.4510 2.0603 N.3 1 UNCH -0.7792 + 3 C1 3.5396 0.3595 2.0602 C.3 1 UNCH 0.2579 + 4 C2 3.4242 1.4978 3.1011 C.3 1 UNCH 0.2096 + 5 H1 4.5274 -0.1185 2.0601 H 1 UNCH 0.0000 + 6 H2 2.4067 1.6758 3.4681 H 1 UNCH 0.0000 + 7 H3 4.1014 1.4225 3.9563 H 1 UNCH 0.0000 + 8 H4 3.3692 3.3452 2.0604 H 1 UNCH 0.3600 + 9 H5 1.6638 -0.1467 2.0603 H 1 UNCH 0.4000 + 10 C2G 3.4240 1.4979 1.0194 C.3 1 UNCH 0.2096 + 11 H2G 2.4064 1.6760 0.6527 H 1 UNCH 0.0000 + 12 H3G 4.1011 1.4227 0.1641 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 9 1 + 3 2 4 1 + 4 2 8 1 + 5 2 10 1 + 6 3 4 1 + 7 3 5 1 + 8 3 10 1 + 9 4 6 1 + 10 4 7 1 + 11 10 11 1 + 12 10 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-AZETIDINOL (AT 110 DEG.K) +@MOLECULE +JAWVEI + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 4.8885 -0.9639 5.9838 O.3 1 UNCH -0.6800 + 2 O2 3.6598 0.9700 8.8200 O.3 1 UNCH -0.2960 + 3 O3 6.2895 1.5865 6.4253 O.3 1 UNCH -0.6800 + 4 C1 5.8404 -0.8853 8.1590 C.2 1 UNCH -0.2114 + 5 C2 4.5429 -0.8845 7.3694 C.3 1 UNCH 0.5132 + 6 C3 3.6583 0.3180 7.5392 C.3 1 UNCH -0.0470 + 7 C4 4.3278 1.6432 7.7420 C.3 1 UNCH -0.0470 + 8 C5 5.8243 1.6526 7.7786 C.3 1 UNCH 0.3750 + 9 C6 6.4016 0.4660 8.5717 C.3 1 UNCH 0.1382 + 10 C7 6.4354 -1.9961 8.5079 C.1 1 UNCH -0.1300 + 11 C8 7.0267 -3.1026 8.8522 C.2 1 UNCH -0.0850 + 12 C9 7.2915 -3.4806 10.2295 C.2 1 UNCH -0.1382 + 13 C10 7.9131 -4.6396 10.5032 C.2 1 UNCH -0.3000 + 14 C11 6.8550 -2.5551 11.3347 C.3 1 UNCH 0.1382 + 15 H1 5.4209 -0.1655 5.7929 H 1 UNCH 0.4000 + 16 H2 7.2580 1.6908 6.4534 H 1 UNCH 0.4000 + 17 H3 3.9585 -1.7797 7.6113 H 1 UNCH 0.0000 + 18 H4 2.7323 0.2649 6.9855 H 1 UNCH 0.1000 + 19 H5 3.8830 2.5314 7.3182 H 1 UNCH 0.1000 + 20 H6 6.1753 2.5966 8.2091 H 1 UNCH 0.0000 + 21 H7 7.4921 0.4507 8.4483 H 1 UNCH 0.0000 + 22 H8 6.1929 0.6105 9.6396 H 1 UNCH 0.0000 + 23 H9 7.3356 -3.7842 8.0644 H 1 UNCH 0.1500 + 24 H10 8.2338 -5.3218 9.7215 H 1 UNCH 0.1500 + 25 H11 8.1190 -4.9427 11.5253 H 1 UNCH 0.1500 + 26 H12 7.3490 -1.5816 11.2443 H 1 UNCH 0.0000 + 27 H13 5.7702 -2.4043 11.3104 H 1 UNCH 0.0000 + 28 H14 7.1048 -2.9551 12.3238 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 15 1 + 3 2 6 1 + 4 2 7 1 + 5 3 8 1 + 6 3 16 1 + 7 4 5 1 + 8 4 9 1 + 9 4 10 2 + 10 5 6 1 + 11 5 17 1 + 12 6 7 1 + 13 6 18 1 + 14 7 8 1 + 15 7 19 1 + 16 8 9 1 + 17 8 20 1 + 18 9 21 1 + 19 9 22 1 + 20 10 11 2 + 21 11 12 1 + 22 11 23 1 + 23 12 13 2 + 24 12 14 1 + 25 13 24 1 + 26 13 25 1 + 27 14 26 1 + 28 14 27 1 + 29 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-(3-METHYLBUTA-1,3-DIENYLIDENE)-2,3-EPOXYCYCLOHEXANE-1,4-D +@MOLECULE +JAWZEM + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -2.8584 1.5244 7.6687 P 1 JAWZ 1.2840 + 2 O1 -2.7770 2.1463 6.2845 O.3 1 JAWZ -0.9500 + 3 O2 -4.1747 0.9922 8.2108 O.3 1 JAWZ -0.9500 + 4 N1 -2.8774 2.9770 10.1132 N.3 1 JAWZ 0.0332 + 5 N2 -1.1367 3.4116 8.8174 N.2 1 JAWZ -0.5653 + 6 N3 -0.7414 -0.0808 6.6551 N.3 1 JAWZ 0.0332 + 7 N4 -1.3595 -0.5971 8.7165 N.2 1 JAWZ -0.5653 + 8 C1 -2.2549 2.6964 8.9128 C.2 1 JAWZ -0.0055 + 9 C2 -2.1343 3.8973 10.7901 C.2 1 JAWZ -0.3016 + 10 C3 -1.0636 4.1512 9.9688 C.2 1 JAWZ 0.0772 + 11 C4 -1.6030 0.2172 7.6925 C.2 1 JAWZ -0.0055 + 12 C5 -0.3382 -1.4162 8.3115 C.2 1 JAWZ 0.0772 + 13 C6 0.0631 -1.1137 7.0337 C.2 1 JAWZ -0.3016 + 14 H1 -0.2390 4.8280 10.1433 H 1 JAWZ 0.1500 + 15 H2 -2.4226 4.2735 11.7592 H 1 JAWZ 0.1500 + 16 H3 -3.7442 2.5266 10.3785 H 1 JAWZ 0.2700 + 17 H4 0.0537 -2.1815 8.9667 H 1 JAWZ 0.1500 + 18 H5 0.8210 -1.5241 6.3849 H 1 JAWZ 0.1500 + 19 H6 -0.7629 0.4342 5.7840 H 1 JAWZ 0.2700 +@BOND + 1 1 11 1 + 2 1 8 1 + 3 1 3 1 + 4 1 2 1 + 5 4 16 1 + 6 4 9 1 + 7 4 8 am + 8 5 10 1 + 9 5 8 2 + 10 6 19 1 + 11 6 13 1 + 12 6 11 am + 13 7 12 1 + 14 7 11 2 + 15 9 15 1 + 16 9 10 2 + 17 10 14 1 + 18 12 17 1 + 19 12 13 2 + 20 13 18 1 +@SUBSTRUCTURE + 1 JAWZ 1 +@COMMENT +COMMENT BIS(IMIDAZOL-2-YL)PHOSPHINIC ACID HEMIHYDRATE +@MOLECULE +JAZGOG + 30 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.1118 1.8927 26.0938 S.3 1 UNCH 1.3328 + 2 O1 2.9757 1.8500 24.6547 O.3 1 UNCH -0.6500 + 3 O2 3.4333 0.7157 26.8708 O.3 1 UNCH -0.6500 + 4 O3 3.6681 4.3434 25.9553 O.3 1 UNCH -0.0650 + 5 O4 5.4007 5.3998 27.9398 O.2 1 UNCH -0.5700 + 6 O5 3.7855 5.1284 29.5146 O.3 1 UNCH -0.4300 + 7 N1 4.1919 3.1461 26.5394 N.3 1 UNCH -0.4520 + 8 C1 4.3169 4.9353 28.2647 C.2 1 UNCH 0.7200 + 9 C2 3.4657 4.1266 27.3588 C.3 1 UNCH 0.2840 + 10 C3 2.0780 3.6885 27.7618 C.3 1 UNCH 0.0950 + 11 C4 1.1744 4.9468 27.7273 C.3 1 UNCH 0.0000 + 12 C5 1.4668 5.6746 29.0509 C.3 1 UNCH 0.0000 + 13 C6 2.4182 4.7372 29.8133 C.3 1 UNCH 0.2800 + 14 C7 2.0969 3.3232 29.2783 C.3 1 UNCH 0.0000 + 15 C8 0.7335 2.8296 29.8160 C.3 1 UNCH 0.0000 + 16 C9 3.1432 2.2817 29.7094 C.3 1 UNCH 0.0000 + 17 C10 1.6279 2.6151 26.7802 C.3 1 UNCH 0.1052 + 18 H1 1.3864 5.5965 26.8705 H 1 UNCH 0.0000 + 19 H2 0.1128 4.6793 27.6720 H 1 UNCH 0.0000 + 20 H3 1.9123 6.6584 28.8696 H 1 UNCH 0.0000 + 21 H4 0.5318 5.8193 29.6030 H 1 UNCH 0.0000 + 22 H5 2.2885 4.8237 30.8967 H 1 UNCH 0.0000 + 23 H6 0.4923 1.8333 29.4304 H 1 UNCH 0.0000 + 24 H7 -0.1026 3.4859 29.5614 H 1 UNCH 0.0000 + 25 H8 0.7581 2.7573 30.9098 H 1 UNCH 0.0000 + 26 H9 3.2034 2.2334 30.8032 H 1 UNCH 0.0000 + 27 H10 2.8689 1.2823 29.3574 H 1 UNCH 0.0000 + 28 H11 4.1527 2.4913 29.3482 H 1 UNCH 0.0000 + 29 H12 1.0806 3.0535 25.9384 H 1 UNCH 0.0000 + 30 H13 1.0205 1.8243 27.2229 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 7 1 + 4 1 17 1 + 5 4 7 1 + 6 4 9 1 + 7 5 8 2 + 8 6 8 1 + 9 6 13 1 + 10 7 9 1 + 11 8 9 1 + 12 9 10 1 + 13 10 11 1 + 14 10 14 1 + 15 10 17 1 + 16 11 12 1 + 17 11 18 1 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 12 21 1 + 22 13 14 1 + 23 13 22 1 + 24 14 15 1 + 25 14 16 1 + 26 15 23 1 + 27 15 24 1 + 28 15 25 1 + 29 16 26 1 + 30 16 27 1 + 31 16 28 1 + 32 17 29 1 + 33 17 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (4AS,9AR)-10,10-DIMETHYL-6,7-DIHYDRO-4H-4A,7-METHANO-OXAZIR +@MOLECULE +JAZVIP10 + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 6.1208 5.3377 11.3403 N.3 1 UNCH 0.3140 + 2 N2 4.9841 5.3564 10.6003 N.2 1 UNCH -0.7068 + 3 C1 4.8382 4.0509 10.2831 C.2 1 UNCH 0.4300 + 4 N3 5.8444 3.2435 10.7947 N.2 1 UNCH -0.5653 + 5 C2 6.6125 4.0753 11.4531 C.2 1 UNCH 0.0365 + 6 C3 3.7593 3.4642 9.4800 C.2 1 UNCH 0.5260 + 7 S1 2.5229 4.3783 8.8552 S.2 1 UNCH -0.3800 + 8 N4 3.8234 2.1112 9.2747 N.3 1 UNCH -0.8000 + 9 C4 6.7380 6.5415 11.8700 C.3 1 UNCH 0.5356 + 10 C5 7.1584 7.5341 10.7902 C.3 1 UNCH 0.2800 + 11 C6 7.1882 8.8190 11.6038 C.3 1 UNCH 0.2800 + 12 C7 6.0242 8.6491 12.5843 C.3 1 UNCH 0.2800 + 13 C8 4.7178 9.2889 12.1106 C.3 1 UNCH 0.2800 + 14 O1 8.4475 7.2678 10.2296 O.3 1 UNCH -0.6800 + 15 O2 8.4251 8.8697 12.3344 O.3 1 UNCH -0.6800 + 16 O3 5.8079 7.2207 12.7349 O.3 1 UNCH -0.5600 + 17 O4 4.4717 8.9260 10.7610 O.3 1 UNCH -0.4637 + 18 S2 2.9492 8.6321 10.2952 S.3 1 UNCH 1.6217 + 19 O5 2.0759 9.5990 10.9164 O.3 1 UNCH -0.6500 + 20 O6 2.9584 8.4249 8.8675 O.3 1 UNCH -0.6500 + 21 N5 2.6301 7.1445 10.9827 N.3 1 UNCH -0.9780 + 22 H1 7.5095 3.8256 12.0040 H 1 UNCH 0.1500 + 23 H2 4.5846 1.5780 9.6836 H 1 UNCH 0.3700 + 24 H3 3.1089 1.6356 8.7412 H 1 UNCH 0.3700 + 25 H4 7.5967 6.2257 12.4758 H 1 UNCH 0.0000 + 26 H5 6.4280 7.6089 9.9779 H 1 UNCH 0.0000 + 27 H6 7.1366 9.7270 10.9964 H 1 UNCH 0.0000 + 28 H7 6.2747 9.0369 13.5779 H 1 UNCH 0.0000 + 29 H8 3.8986 8.9618 12.7613 H 1 UNCH 0.0000 + 30 H9 4.7910 10.3802 12.1577 H 1 UNCH 0.0000 + 31 H10 8.3076 6.7251 9.4298 H 1 UNCH 0.4000 + 32 H11 9.1191 8.6307 11.6847 H 1 UNCH 0.4000 + 33 H12 3.4353 6.5161 10.8366 H 1 UNCH 0.4200 + 34 H13 1.8199 6.7331 10.5153 H 1 UNCH 0.4200 +@BOND + 1 1 2 1 + 2 1 5 am + 3 1 9 1 + 4 2 3 2 + 5 3 4 am + 6 3 6 1 + 7 4 5 2 + 8 5 22 1 + 9 6 7 2 + 10 6 8 1 + 11 8 23 1 + 12 8 24 1 + 13 9 10 1 + 14 9 16 1 + 15 9 25 1 + 16 10 11 1 + 17 10 14 1 + 18 10 26 1 + 19 11 12 1 + 20 11 15 1 + 21 11 27 1 + 22 12 13 1 + 23 12 16 1 + 24 12 28 1 + 25 13 17 1 + 26 13 29 1 + 27 13 30 1 + 28 14 31 1 + 29 15 32 1 + 30 17 18 1 + 31 18 19 1 + 32 18 20 1 + 33 18 21 1 + 34 21 33 1 + 35 21 34 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(5-O-SULFAMOYL-BETA-D-RIBOFURANOSYL)-1H-1,2,4-TRIAZOLE-3- +@MOLECULE +JAZZOZ10 + 37 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.0426 12.3370 3.0348 N.2 1 JAZZ -0.6200 + 2 C1 1.3827 12.4262 4.1953 C.2 1 JAZZ 0.7200 + 3 N2 0.9337 11.4050 4.9403 N.2 1 JAZZ -0.5670 + 4 C2 1.1902 10.2033 4.3975 C.2 1 JAZZ 0.1054 + 5 C3 1.8535 9.9529 3.2073 C.2 1 JAZZ 0.2272 + 6 C4 2.2690 11.0829 2.5320 C.2 1 JAZZ 0.3010 + 7 N3 1.9520 8.6024 2.9836 N.2 1 JAZZ -0.5653 + 8 C5 1.3496 8.0385 4.0093 C.2 1 JAZZ 0.0365 + 9 N4 0.8682 8.9684 4.8934 N.3 1 JAZZ 0.0476 + 10 N5 1.1658 13.6897 4.6927 N.3 1 JAZZ -0.9000 + 11 S1 3.1290 11.0398 1.0011 S.3 1 JAZZ 1.4470 + 12 O1 4.4845 10.5958 1.2418 O.3 1 JAZZ -0.6500 + 13 O2 2.2725 10.4738 -0.0147 O.3 1 JAZZ -0.6500 + 14 N6 3.2907 12.6957 0.6255 N.3 1 JAZZ -0.9780 + 15 C6 0.1679 8.6623 6.1240 C.3 1 JAZZ 0.5356 + 16 C7 0.9270 9.0515 7.3919 C.3 1 JAZZ 0.2800 + 17 C8 -0.2223 9.1618 8.3800 C.3 1 JAZZ 0.2800 + 18 C9 -1.3689 9.7196 7.5328 C.3 1 JAZZ 0.2800 + 19 C10 -1.5187 11.2391 7.6395 C.3 1 JAZZ 0.2800 + 20 O3 1.8684 8.0616 7.8120 O.3 1 JAZZ -0.6800 + 21 O4 -0.5710 7.8450 8.8411 O.3 1 JAZZ -0.6800 + 22 O5 -1.0825 9.3776 6.1510 O.3 1 JAZZ -0.5600 + 23 O6 -0.2927 11.9066 7.3522 O.3 1 JAZZ -0.6800 + 24 H1 1.2360 6.9713 4.1594 H 1 JAZZ 0.1500 + 25 H2 1.0077 13.6870 5.6925 H 1 JAZZ 0.4000 + 26 H3 1.8239 14.3646 4.3324 H 1 JAZZ 0.4000 + 27 H4 2.7531 13.2421 1.3065 H 1 JAZZ 0.4200 + 28 H5 4.2835 12.9292 0.6635 H 1 JAZZ 0.4200 + 29 H6 -0.0590 7.5886 6.1129 H 1 JAZZ 0.0000 + 30 H7 1.4477 10.0077 7.2796 H 1 JAZZ 0.0000 + 31 H8 0.0172 9.7576 9.2651 H 1 JAZZ 0.0000 + 32 H9 -2.3233 9.2465 7.7893 H 1 JAZZ 0.0000 + 33 H10 -2.2709 11.6066 6.9338 H 1 JAZZ 0.0000 + 34 H11 -1.8231 11.5220 8.6517 H 1 JAZZ 0.0000 + 35 H12 2.4709 8.4895 8.4493 H 1 JAZZ 0.4000 + 36 H13 0.2689 7.3510 8.9322 H 1 JAZZ 0.4000 + 37 H14 -0.1166 11.7416 6.3986 H 1 JAZZ 0.4000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 10 am + 4 2 3 2 + 5 3 4 1 + 6 4 9 1 + 7 4 5 2 + 8 5 7 1 + 9 5 6 1 + 10 6 11 1 + 11 7 8 2 + 12 8 24 1 + 13 8 9 am + 14 9 15 1 + 15 10 26 1 + 16 10 25 1 + 17 11 14 1 + 18 11 13 1 + 19 11 12 1 + 20 14 28 1 + 21 14 27 1 + 22 15 29 1 + 23 15 22 1 + 24 15 16 1 + 25 16 30 1 + 26 16 20 1 + 27 16 17 1 + 28 17 31 1 + 29 17 21 1 + 30 17 18 1 + 31 18 32 1 + 32 18 22 1 + 33 18 19 1 + 34 19 34 1 + 35 19 33 1 + 36 19 23 1 + 37 20 35 1 + 38 21 36 1 + 39 23 37 1 +@SUBSTRUCTURE + 1 JAZZ 1 +@COMMENT +COMMENT 2-AMINO-9-(BETA-D-RIBOFURANOSYL)-9H-PURINE-6-SULFONAMIDE (A +@MOLECULE +JEBFEB01 + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 8.1501 1.8946 8.0437 P 1 UNCH 1.3910 + 2 O1 9.4761 1.8946 8.7656 O.3 1 UNCH -0.7000 + 3 N1 7.0942 3.1162 8.5327 N.3 1 UNCH -0.7760 + 4 C1 8.3290 1.8946 6.2618 C.2 1 UNCH -0.1390 + 5 C2 9.5988 1.8946 5.6684 C.2 1 UNCH -0.1500 + 6 C3 9.7309 1.8946 4.2791 C.2 1 UNCH -0.1500 + 7 C4 8.5950 1.8946 3.4708 C.2 1 UNCH -0.1500 + 8 C5 7.3266 1.8946 4.0490 C.2 1 UNCH -0.1500 + 9 C6 7.1940 1.8946 5.4379 C.2 1 UNCH -0.1500 + 10 C7 6.0782 2.5931 9.3528 C.2 1 UNCH 0.1000 + 11 C8 5.1109 3.3091 10.0311 C.2 1 UNCH -0.1500 + 12 C9 4.1411 2.5969 10.7420 C.2 1 UNCH -0.1500 + 13 H1 7.5373 3.9266 8.9421 H 1 UNCH 0.4000 + 14 H2 10.4891 1.8947 6.2951 H 1 UNCH 0.1500 + 15 H3 10.7198 1.8947 3.8277 H 1 UNCH 0.1500 + 16 H4 8.6985 1.8946 2.3887 H 1 UNCH 0.1500 + 17 H5 6.4408 1.8945 3.4190 H 1 UNCH 0.1500 + 18 H6 6.2024 1.8945 5.8875 H 1 UNCH 0.1500 + 19 H7 5.0939 4.3930 10.0086 H 1 UNCH 0.1500 + 20 H8 3.3697 3.1344 11.2888 H 1 UNCH 0.1500 + 21 N1B 7.0943 0.6730 8.5327 N.3 1 UNCH -0.7760 + 22 C7B 6.0783 1.1960 9.3528 C.2 1 UNCH 0.1000 + 23 C9B 4.1411 1.1921 10.7420 C.2 1 UNCH -0.1500 + 24 H1B 7.5374 -0.1374 8.9421 H 1 UNCH 0.4000 + 25 C8B 5.1110 0.4799 10.0312 C.2 1 UNCH -0.1500 + 26 H8B 3.3698 0.6545 11.2888 H 1 UNCH 0.1500 + 27 H7B 5.0940 -0.6039 10.0086 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 21 1 + 5 3 10 1 + 6 3 13 1 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 14 1 + 11 6 7 2 + 12 6 15 1 + 13 7 8 1 + 14 7 16 1 + 15 8 9 2 + 16 8 17 1 + 17 9 18 1 + 18 10 11 2 + 19 10 22 1 + 20 11 12 1 + 21 11 19 1 + 22 12 20 1 + 23 12 23 2 + 24 21 22 1 + 25 21 24 1 + 26 22 25 2 + 27 23 25 1 + 28 23 26 1 + 29 25 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,3-DIHYDRIDO-2-PHENYL-1,3,2-DIAZAPHOSPHOLE (POLYMORPH 1) +@MOLECULE +JECVES + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.1594 2.2744 8.0811 N.3 1 UNCH 0.0476 + 2 C1 3.1586 2.2839 9.0179 C.2 1 UNCH 0.2665 + 3 N2 2.7498 2.7624 10.1780 N.2 1 UNCH -0.5653 + 4 C2 1.4282 3.0694 9.9886 C.2 1 UNCH 0.0772 + 5 C3 1.0379 2.7764 8.7025 C.2 1 UNCH -0.3016 + 6 N3 4.5047 1.8453 8.7823 N.2 1 UNCH 0.9600 + 7 O1 4.9639 2.0287 7.6467 O.3 1 UNCH -0.5200 + 8 O2 5.1068 1.3209 9.7270 O.2 1 UNCH -0.5200 + 9 C4 2.1752 1.7598 6.7192 C.3 1 UNCH 0.2556 + 10 C5 2.5445 2.8276 5.6775 C.3 1 UNCH 0.2800 + 11 O3 1.5417 3.8571 5.6501 O.3 1 UNCH -0.6800 + 12 C6 2.6262 2.2270 4.2601 C.3 1 UNCH 0.2700 + 13 N4 3.6070 1.1398 4.1801 N.3 1 UNCH -0.5860 + 14 C7 4.0211 0.8366 2.8117 C.3 1 UNCH -0.0420 + 15 C8 4.9347 1.5778 3.7599 C.3 1 UNCH -0.0370 + 16 C9 6.1327 0.8979 4.3280 C.3 1 UNCH 0.0950 + 17 H1 0.8248 3.4805 10.7890 H 1 UNCH 0.1500 + 18 H2 0.0863 2.8701 8.1948 H 1 UNCH 0.1500 + 19 H3 2.8526 0.9005 6.7036 H 1 UNCH 0.0000 + 20 H4 1.1651 1.3777 6.5232 H 1 UNCH 0.0000 + 21 H5 3.4961 3.3120 5.9230 H 1 UNCH 0.0000 + 22 H6 1.6900 4.4350 6.4205 H 1 UNCH 0.4000 + 23 H7 2.8187 3.0388 3.5439 H 1 UNCH 0.0000 + 24 H8 1.6397 1.8313 3.9842 H 1 UNCH 0.0000 + 25 H9 3.5664 1.3858 1.9960 H 1 UNCH 0.1000 + 26 H10 4.2247 -0.2070 2.6028 H 1 UNCH 0.1000 + 27 H11 5.1101 2.6330 3.5840 H 1 UNCH 0.1000 + 28 H12 6.4513 1.3992 5.2470 H 1 UNCH 0.0000 + 29 H13 5.9419 -0.1547 4.5629 H 1 UNCH 0.0000 + 30 H14 6.9616 0.9419 3.6145 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 5 1 + 3 1 9 1 + 4 2 3 2 + 5 2 6 am + 6 3 4 1 + 7 4 5 2 + 8 4 17 1 + 9 5 18 1 + 10 6 7 1 + 11 6 8 2 + 12 9 10 1 + 13 9 19 1 + 14 9 20 1 + 15 10 11 1 + 16 10 12 1 + 17 10 21 1 + 18 11 22 1 + 19 12 13 1 + 20 12 23 1 + 21 12 24 1 + 22 13 14 1 + 23 13 15 1 + 24 14 15 1 + 25 14 25 1 + 26 14 26 1 + 27 15 16 1 + 28 15 27 1 + 29 16 28 1 + 30 16 29 1 + 31 16 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(2-METHYL-1-AZIRIDINYL)-3-(2-NITRO-1-IMIDAZOLYL)-2-PROPAN +@MOLECULE +JECVUI + 24 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.4404 1.1176 9.5211 C.3 1 UNCH 0.0610 + 2 C2 4.5837 1.2861 8.2903 C.2 1 UNCH 0.5690 + 3 O1 3.5576 0.6141 8.1497 O.2 1 UNCH -0.5700 + 4 N1 4.9914 2.2575 7.3925 N.3 1 UNCH -0.0845 + 5 O2 6.1981 2.9416 7.6820 O.3 1 UNCH -0.1855 + 6 C3 5.9601 4.1747 8.2193 C.2 1 UNCH 0.7800 + 7 O3 4.8655 4.5754 8.5891 O.2 1 UNCH -0.5700 + 8 N2 7.1275 4.8800 8.2978 N.3 1 UNCH -0.7301 + 9 C4 7.1332 6.2724 8.6573 C.3 1 UNCH 0.3001 + 10 C5 4.5892 2.4453 6.0673 C.2 1 UNCH 0.6900 + 11 O4 5.1905 3.1766 5.2788 O.2 1 UNCH -0.5700 + 12 N3 3.4867 1.7146 5.6874 N.3 1 UNCH -0.7301 + 13 C6 2.8714 1.8802 4.3978 C.3 1 UNCH 0.3001 + 14 H1 5.0930 0.2479 10.0871 H 1 UNCH 0.0000 + 15 H2 6.4828 0.9424 9.2416 H 1 UNCH 0.0000 + 16 H3 5.3605 2.0022 10.1577 H 1 UNCH 0.0000 + 17 H4 7.9006 4.5030 7.7662 H 1 UNCH 0.3700 + 18 H5 8.1512 6.5567 8.9329 H 1 UNCH 0.0000 + 19 H6 6.8053 6.8587 7.7948 H 1 UNCH 0.0000 + 20 H7 6.4548 6.4507 9.4960 H 1 UNCH 0.0000 + 21 H8 2.9610 1.2559 6.4296 H 1 UNCH 0.3700 + 22 H9 2.2279 1.0187 4.2060 H 1 UNCH 0.0000 + 23 H10 2.2723 2.7945 4.4110 H 1 UNCH 0.0000 + 24 H11 3.6347 1.9570 3.6189 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 1 15 1 + 4 1 16 1 + 5 2 3 2 + 6 2 4 am + 7 4 5 1 + 8 4 10 am + 9 5 6 1 + 10 6 7 2 + 11 6 8 am + 12 8 9 1 + 13 8 17 1 + 14 9 18 1 + 15 9 19 1 + 16 9 20 1 + 17 10 11 2 + 18 10 12 am + 19 12 13 1 + 20 12 21 1 + 21 13 22 1 + 22 13 23 1 + 23 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-ACETYL-N,O-DI(METHYLCARBAMOYL)HYDROXYLAMINE (AT 105 DEG.K +@MOLECULE +JECYIZ + 40 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 2.5304 5.0624 5.4752 P 1 JECY 1.2358 + 2 O1 1.5314 4.1130 4.8834 O.3 1 JECY -0.7000 + 3 N1 2.1715 6.6905 5.2907 N.3 1 JECY -0.8079 + 4 N2 2.6197 5.0551 7.1377 N.3 1 JECY -0.8079 + 5 N3 4.6888 3.4726 5.0506 N.2 1 JECY -0.5639 + 6 N4 4.0396 2.5251 4.5640 N.1 1 JECY 0.6879 + 7 N5 3.4858 1.6373 4.1148 N.2 1 JECY -0.3700 + 8 C1 1.8332 7.2218 6.6266 C.3 1 JECY 0.2700 + 9 C2 2.0266 8.7241 6.8243 C.3 1 JECY 0.0000 + 10 C3 1.7146 9.1028 8.2764 C.3 1 JECY 0.0000 + 11 C4 2.5039 8.2684 9.2891 C.3 1 JECY 0.0000 + 12 C5 2.3872 6.7607 9.0368 C.3 1 JECY 0.0000 + 13 C6 2.7682 6.4442 7.5912 C.3 1 JECY 0.2700 + 14 C7 3.4595 4.1094 7.8414 C.3 1 JECY 0.2700 + 15 C8 1.1532 7.0276 4.3039 C.3 1 JECY 0.2700 + 16 C9 4.2077 4.8472 4.7670 C.3 1 JECY 0.2460 + 17 C10 4.2819 5.1593 3.2678 C.3 1 JECY 0.0000 + 18 C11 5.6967 5.0747 2.7140 C.3 1 JECY 0.0000 + 19 H1 0.7899 6.9595 6.8616 H 1 JECY 0.0000 + 20 H2 3.0576 9.0119 6.5831 H 1 JECY 0.0000 + 21 H3 1.3694 9.2935 6.1581 H 1 JECY 0.0000 + 22 H4 1.9275 10.1665 8.4322 H 1 JECY 0.0000 + 23 H5 0.6417 8.9643 8.4599 H 1 JECY 0.0000 + 24 H6 3.5612 8.5582 9.2421 H 1 JECY 0.0000 + 25 H7 2.1577 8.4985 10.3031 H 1 JECY 0.0000 + 26 H8 3.0432 6.2329 9.7376 H 1 JECY 0.0000 + 27 H9 1.3612 6.4315 9.2435 H 1 JECY 0.0000 + 28 H10 3.8087 6.7592 7.4209 H 1 JECY 0.0000 + 29 H11 3.2294 4.0880 8.9110 H 1 JECY 0.0000 + 30 H12 3.2783 3.0960 7.4699 H 1 JECY 0.0000 + 31 H13 4.5229 4.3376 7.7199 H 1 JECY 0.0000 + 32 H14 0.1723 6.6234 4.5756 H 1 JECY 0.0000 + 33 H15 1.0653 8.1105 4.1751 H 1 JECY 0.0000 + 34 H16 1.4270 6.6149 3.3275 H 1 JECY 0.0000 + 35 H17 4.8680 5.5402 5.3018 H 1 JECY 0.0000 + 36 H18 3.6267 4.4864 2.7030 H 1 JECY 0.0000 + 37 H19 3.9036 6.1726 3.0934 H 1 JECY 0.0000 + 38 H20 6.3692 5.7497 3.2528 H 1 JECY 0.0000 + 39 H21 5.7046 5.3615 1.6576 H 1 JECY 0.0000 + 40 H22 6.0962 4.0587 2.7871 H 1 JECY 0.0000 +@BOND + 1 1 16 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 3 15 1 + 6 3 8 1 + 7 4 14 1 + 8 4 13 1 + 9 5 16 1 + 10 5 6 2 + 11 6 7 2 + 12 8 19 1 + 13 8 13 1 + 14 8 9 1 + 15 9 21 1 + 16 9 20 1 + 17 9 10 1 + 18 10 23 1 + 19 10 22 1 + 20 10 11 1 + 21 11 25 1 + 22 11 24 1 + 23 11 12 1 + 24 12 27 1 + 25 12 26 1 + 26 12 13 1 + 27 13 28 1 + 28 14 31 1 + 29 14 30 1 + 30 14 29 1 + 31 15 34 1 + 32 15 33 1 + 33 15 32 1 + 34 16 35 1 + 35 16 17 1 + 36 17 37 1 + 37 17 36 1 + 38 17 18 1 + 39 18 40 1 + 40 18 39 1 + 41 18 38 1 +@SUBSTRUCTURE + 1 JECY 1 +@COMMENT +COMMENT 2-((R)-1-AZIDOPROPYL)-2,3,3A,4,5,6,7A-OCTAHYDRO-1,3-DIMETHY +@MOLECULE +JEFRAN + 36 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.9681 2.4397 6.3137 S.3 1 JEDY -0.2820 + 2 S2 -3.8134 3.0001 7.7617 S.2 1 JEDY -0.3800 + 3 N1 -0.7712 0.7366 5.2184 N.2 1 JEDY -0.6610 + 4 N2 -1.4071 3.0321 5.2482 N.2 1 JEDY -0.6610 + 5 N3 -2.8103 1.3238 5.9365 N.2 1 JEDY -0.6610 + 6 N4 -4.6903 2.5285 5.2096 N.3 1 JEDY -0.6602 + 7 N5 1.4411 -0.0240 5.3044 N.3 1 JEDY -0.7882 + 8 N6 0.0974 4.8175 5.3724 N.3 1 JEDY -0.7882 + 9 C1 0.4639 0.9429 5.5433 C.2 1 JEDY 0.6410 + 10 C2 -0.2362 3.4798 5.5698 C.2 1 JEDY 0.6410 + 11 C3 -1.6628 1.7213 5.4956 C.2 1 JEDY 0.8720 + 12 C4 -3.7505 2.2777 6.2265 C.2 1 JEDY 0.6510 + 13 C5 -5.6008 3.6680 5.2437 C.3 1 JEDY 0.3001 + 14 C6 -4.5455 1.8964 3.9040 C.3 1 JEDY 0.3001 + 15 C7 1.0096 -1.3306 4.8067 C.3 1 JEDY 0.3691 + 16 C8 2.7321 -0.0290 5.9843 C.3 1 JEDY 0.3691 + 17 C9 -0.8704 5.6964 4.7213 C.3 1 JEDY 0.3691 + 18 C10 1.4645 5.3191 5.4219 C.3 1 JEDY 0.3691 + 19 H1 -5.9022 3.9359 6.2575 H 1 JEDY 0.0000 + 20 H2 -5.1003 4.5239 4.7806 H 1 JEDY 0.0000 + 21 H3 -6.5070 3.4266 4.6798 H 1 JEDY 0.0000 + 22 H4 -4.0922 0.9047 3.9768 H 1 JEDY 0.0000 + 23 H5 -3.9189 2.5352 3.2743 H 1 JEDY 0.0000 + 24 H6 -5.5309 1.7807 3.4428 H 1 JEDY 0.0000 + 25 H7 1.8573 -1.9138 4.4311 H 1 JEDY 0.0000 + 26 H8 0.5252 -1.9014 5.6059 H 1 JEDY 0.0000 + 27 H9 0.3102 -1.2252 3.9702 H 1 JEDY 0.0000 + 28 H10 3.2928 0.8881 5.7769 H 1 JEDY 0.0000 + 29 H11 3.3642 -0.8570 5.6446 H 1 JEDY 0.0000 + 30 H12 2.5975 -0.1364 7.0658 H 1 JEDY 0.0000 + 31 H13 -0.8925 5.5028 3.6439 H 1 JEDY 0.0000 + 32 H14 -0.6229 6.7520 4.8768 H 1 JEDY 0.0000 + 33 H15 -1.8772 5.5505 5.1280 H 1 JEDY 0.0000 + 34 H16 2.0856 4.8177 4.6720 H 1 JEDY 0.0000 + 35 H17 1.9021 5.1696 6.4142 H 1 JEDY 0.0000 + 36 H18 1.5129 6.3948 5.2200 H 1 JEDY 0.0000 +@BOND + 1 1 9 1 + 2 1 10 1 + 3 2 12 2 + 4 3 9 2 + 5 3 11 am + 6 4 10 2 + 7 4 11 am + 8 5 11 2 + 9 5 12 1 + 10 6 12 1 + 11 6 13 1 + 12 6 14 1 + 13 7 9 am + 14 7 15 1 + 15 7 16 1 + 16 8 10 am + 17 8 17 1 + 18 8 18 1 + 19 13 19 1 + 20 13 20 1 + 21 13 21 1 + 22 14 22 1 + 23 14 23 1 + 24 14 24 1 + 25 15 25 1 + 26 15 26 1 + 27 15 27 1 + 28 16 28 1 + 29 16 29 1 + 30 16 30 1 + 31 17 31 1 + 32 17 32 1 + 33 17 33 1 + 34 18 34 1 + 35 18 35 1 + 36 18 36 1 +@SUBSTRUCTURE + 1 JEDY 1 +@COMMENT +COMMENT 2,6-BIS(DIMETHYLAMINO)-4-DIMETHYLAMINOTHIOCARBAMOYLIMINO-1, +@MOLECULE +JEHCUU01 + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.3963 0.6104 8.0335 N.2 1 JEHC -0.6200 + 2 C1 3.5209 0.5261 8.7625 C.2 1 JEHC 0.7200 + 3 N2 4.7764 0.7217 8.3338 N.2 1 JEHC -0.5670 + 4 C2 4.8194 1.0627 7.0370 C.2 1 JEHC 0.1054 + 5 C3 3.7499 1.2028 6.1689 C.2 1 JEHC 0.2272 + 6 C4 2.4920 0.9602 6.7231 C.2 1 JEHC 0.3925 + 7 N3 4.1914 1.5608 4.9106 N.2 1 JEHC -0.5653 + 8 C5 5.5014 1.6401 5.0183 C.2 1 JEHC 0.0365 + 9 N4 5.9235 1.3476 6.2848 N.3 1 JEHC 0.0476 + 10 N5 3.3679 0.1548 10.0839 N.3 1 JEHC -0.9000 + 11 O1 1.3551 1.0623 5.9442 O.3 1 JEHC -0.3625 + 12 C6 0.1543 0.8681 6.6805 C.3 1 JEHC 0.2800 + 13 C7 7.2827 1.3420 6.7554 C.3 1 JEHC 0.2556 + 14 H1 4.2121 -0.2861 10.4198 H 1 JEHC 0.4000 + 15 H2 2.5010 -0.3513 10.1988 H 1 JEHC 0.4000 + 16 H4 0.0482 1.6164 7.4737 H 1 JEHC 0.0000 + 17 H5 0.0989 -0.1472 7.0881 H 1 JEHC 0.0000 + 18 H6 6.1806 1.9030 4.2170 H 1 JEHC 0.1500 + 19 H7 7.9551 1.6112 5.9368 H 1 JEHC 0.0000 + 20 H8 7.3745 2.0716 7.5641 H 1 JEHC 0.0000 + 21 H9 7.5224 0.3383 7.1155 H 1 JEHC 0.0000 + 22 H3 -0.6851 0.9949 5.9899 H 1 JEHC 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 10 am + 4 2 3 2 + 5 3 4 1 + 6 4 9 1 + 7 4 5 2 + 8 5 7 1 + 9 5 6 1 + 10 6 11 1 + 11 7 8 2 + 12 8 18 1 + 13 8 9 am + 14 9 13 1 + 15 10 15 1 + 16 10 14 1 + 17 11 12 1 + 18 12 22 1 + 19 12 17 1 + 20 12 16 1 + 21 13 21 1 + 22 13 20 1 + 23 13 19 1 +@SUBSTRUCTURE + 1 JEHC 1 +@COMMENT +COMMENT O-6-,9-DIMETHYLGUANINE +@MOLECULE +JEHXOJ + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S2 2.4046 9.0021 11.8987 S.3 1 JEHX 1.4470 + 2 O4 3.2114 8.2944 12.8631 O.3 1 JEHX -0.6500 + 3 O5 1.0744 8.5617 11.5273 O.3 1 JEHX -0.6500 + 4 N1 3.3008 8.8760 10.4071 N.3 1 JEHX -0.3930 + 5 N2 2.7926 7.8614 9.5690 N.3 1 JEHX -0.5150 + 6 C7 2.4311 10.7350 12.1928 C.2 1 JEHX -0.0090 + 7 C8 3.4349 11.2817 12.9982 C.2 1 JEHX -0.1500 + 8 C9 3.4486 12.6560 13.2351 C.2 1 JEHX -0.1500 + 9 C10 2.4611 13.4711 12.6802 C.2 1 JEHX -0.1500 + 10 C11 1.4503 12.9168 11.8936 C.2 1 JEHX -0.1500 + 11 C12 1.4276 11.5437 11.6505 C.2 1 JEHX -0.1500 + 12 H1 4.2957 8.7446 10.6608 H 1 JEHX 0.4200 + 13 H2 3.0352 6.9194 9.9221 H 1 JEHX 0.4500 + 14 H3 1.7496 7.9113 9.5887 H 1 JEHX 0.4500 + 15 H4 3.1064 7.9751 8.5938 H 1 JEHX 0.4500 + 16 H10 4.1993 10.6589 13.4587 H 1 JEHX 0.1500 + 17 H11 4.2203 13.0965 13.8642 H 1 JEHX 0.1500 + 18 H12 2.4701 14.5423 12.8754 H 1 JEHX 0.1500 + 19 H13 0.6739 13.5600 11.4828 H 1 JEHX 0.1500 + 20 H14 0.6200 11.1262 11.0533 H 1 JEHX 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 6 1 + 5 4 5 1 + 6 4 12 1 + 7 5 13 1 + 8 5 14 1 + 9 5 15 1 + 10 6 7 2 + 11 6 11 1 + 12 7 8 1 + 13 7 16 1 + 14 8 9 2 + 15 8 17 1 + 16 9 10 1 + 17 9 18 1 + 18 10 11 2 + 19 10 19 1 + 20 11 20 1 +@SUBSTRUCTURE + 1 JEHX 1 +@COMMENT +COMMENT BENZENESULFONYLHYDRAZINIUM PHENYLSULFONATE +@MOLECULE +JELKUG + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -0.6270 2.6130 5.6867 CL 1 UNCH -0.3160 + 2 CL2 -2.0911 -0.1650 5.4027 CL 1 UNCH -0.3160 + 3 P1 -0.7564 0.8080 6.5458 P 1 UNCH 1.3320 + 4 O1 0.5668 0.0971 6.5631 O.3 1 UNCH -0.7000 + 5 O2 -2.8545 1.6092 7.9869 O.3 1 UNCH -0.6800 + 6 C1 -1.5558 1.0078 8.1808 C.3 1 UNCH 0.2800 + 7 C2 -1.7466 -0.3549 8.8722 C.3 1 UNCH 0.0000 + 8 C3 -2.3190 -0.2300 10.2831 C.3 1 UNCH 0.0000 + 9 C4 -1.4771 0.7000 11.1483 C.3 1 UNCH 0.0000 + 10 C5 -1.3066 2.0659 10.4945 C.3 1 UNCH 0.0000 + 11 C6 -0.7368 1.9480 9.0814 C.3 1 UNCH 0.0000 + 12 H1 -3.4172 0.9857 7.4900 H 1 UNCH 0.4000 + 13 H2 -0.7841 -0.8792 8.9163 H 1 UNCH 0.0000 + 14 H3 -2.4224 -0.9852 8.2828 H 1 UNCH 0.0000 + 15 H4 -3.3482 0.1458 10.2334 H 1 UNCH 0.0000 + 16 H5 -2.3663 -1.2213 10.7481 H 1 UNCH 0.0000 + 17 H6 -0.4911 0.2498 11.3168 H 1 UNCH 0.0000 + 18 H7 -1.9471 0.8168 12.1313 H 1 UNCH 0.0000 + 19 H8 -0.6416 2.6856 11.1067 H 1 UNCH 0.0000 + 20 H9 -2.2752 2.5795 10.4610 H 1 UNCH 0.0000 + 21 H10 -0.7039 2.9523 8.6437 H 1 UNCH 0.0000 + 22 H11 0.2989 1.5907 9.1353 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 3 4 1 + 4 3 6 1 + 5 5 6 1 + 6 5 12 1 + 7 6 7 1 + 8 6 11 1 + 9 7 8 1 + 10 7 13 1 + 11 7 14 1 + 12 8 9 1 + 13 8 15 1 + 14 8 16 1 + 15 9 10 1 + 16 9 17 1 + 17 9 18 1 + 18 10 11 1 + 19 10 19 1 + 20 10 20 1 + 21 11 21 1 + 22 11 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ALPHA-HYDROXYCYCLOHEXYLPHOSPHONIC ACID DICHLOROANHYDRIDE (A +@MOLECULE +JELREX + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.0878 1.8267 14.5933 O.3 1 JELR -0.6330 + 2 N1 3.1560 1.3639 14.0898 N.2 1 JELR 0.6570 + 3 C1 3.3060 0.8330 12.9077 C.2 1 JELR -0.0822 + 4 C2 4.7442 0.4795 12.7176 C.2 1 JELR 0.4838 + 5 O2 5.2248 -0.0702 11.7577 O.2 1 JELR -0.5700 + 6 C3 6.7351 0.8111 14.3346 C.2 1 JELR -0.1500 + 7 C4 7.0418 1.2987 15.6089 C.2 1 JELR -0.1500 + 8 C5 6.0367 1.8382 16.4418 C.2 1 JELR -0.1500 + 9 C6 4.7050 1.9006 16.0179 C.2 1 JELR -0.1500 + 10 C7 4.4277 1.4123 14.7567 C.2 1 JELR -0.0280 + 11 C8 5.4167 0.8868 13.9419 C.2 1 JELR 0.0862 + 12 N2 2.4977 1.1058 10.7166 N.2 1 JELR -0.6200 + 13 C9 2.2670 0.6385 11.9526 C.2 1 JELR 0.7062 + 14 N3 1.1738 -0.0197 12.3658 N.2 1 JELR -0.6200 + 15 C10 0.2219 -0.1996 11.4325 C.2 1 JELR 0.1600 + 16 C11 0.3409 0.2365 10.1323 C.2 1 JELR -0.1500 + 17 C12 1.5140 0.8879 9.8251 C.2 1 JELR 0.1600 + 18 H1 7.4958 0.3926 13.6844 H 1 JELR 0.1500 + 19 H2 8.0694 1.2627 15.9667 H 1 JELR 0.1500 + 20 H3 6.3045 2.2109 17.4293 H 1 JELR 0.1500 + 21 H4 3.9259 2.3139 16.6511 H 1 JELR 0.1500 + 22 H5 -0.6677 -0.7231 11.7712 H 1 JELR 0.1500 + 23 H6 -0.4370 0.0764 9.3988 H 1 JELR 0.1500 + 24 H7 1.7026 1.2646 8.8238 H 1 JELR 0.1500 +@BOND + 1 1 2 1 + 2 2 10 1 + 3 2 3 2 + 4 3 13 1 + 5 3 4 1 + 6 4 11 1 + 7 4 5 2 + 8 6 18 1 + 9 6 11 1 + 10 6 7 2 + 11 7 19 1 + 12 7 8 1 + 13 8 20 1 + 14 8 9 2 + 15 9 21 1 + 16 9 10 1 + 17 10 11 2 + 18 12 17 1 + 19 12 13 2 + 20 13 14 am + 21 14 15 2 + 22 15 22 1 + 23 15 16 1 + 24 16 23 1 + 25 16 17 2 + 26 17 24 1 +@SUBSTRUCTURE + 1 JELR 1 +@COMMENT +COMMENT 2-(PYRIMIDIN-2-YL)ISATOGEN +@MOLECULE +JELRIB + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.0598 6.0885 11.9040 N.2 1 JELR 0.6570 + 2 O1 3.7802 5.0927 12.2131 O.3 1 JELR -0.6330 + 3 C1 1.7645 6.1755 12.0209 C.2 1 JELR 0.0040 + 4 C2 1.3274 7.5059 11.5239 C.2 1 JELR 0.4838 + 5 O2 0.1831 7.8835 11.4811 O.2 1 JELR -0.5700 + 6 C3 2.7462 9.4490 10.5742 C.2 1 JELR -0.1500 + 7 C4 4.0692 9.7949 10.2817 C.2 1 JELR -0.1500 + 8 C5 5.1285 8.8928 10.5267 C.2 1 JELR -0.1500 + 9 C6 4.8876 7.6260 11.0691 C.2 1 JELR -0.1500 + 10 C7 3.5743 7.3085 11.3492 C.2 1 JELR -0.0280 + 11 C8 2.5379 8.1967 11.1080 C.2 1 JELR 0.0862 + 12 C9 1.0010 5.0635 12.5751 C.2 1 JELR 0.7200 + 13 O3 0.7656 4.9852 13.7636 O.2 1 JELR -0.5700 + 14 O4 0.6300 4.2543 11.5695 O.3 1 JELR -0.4300 + 15 C10 -0.1345 3.1290 12.0015 C.3 1 JELR 0.2800 + 16 H1 1.9238 10.1323 10.3905 H 1 JELR 0.1500 + 17 H2 4.2895 10.7740 9.8588 H 1 JELR 0.1500 + 18 H3 6.1488 9.1908 10.2890 H 1 JELR 0.1500 + 19 H4 5.6969 6.9276 11.2605 H 1 JELR 0.1500 + 20 H5 -1.0696 3.4569 12.4666 H 1 JELR 0.0000 + 21 H6 0.4471 2.5124 12.6943 H 1 JELR 0.0000 + 22 H7 -0.3777 2.5262 11.1222 H 1 JELR 0.0000 +@BOND + 1 1 10 1 + 2 1 3 2 + 3 1 2 1 + 4 3 12 1 + 5 3 4 1 + 6 4 11 1 + 7 4 5 2 + 8 6 16 1 + 9 6 11 1 + 10 6 7 2 + 11 7 17 1 + 12 7 8 1 + 13 8 18 1 + 14 8 9 2 + 15 9 19 1 + 16 9 10 1 + 17 10 11 2 + 18 12 14 1 + 19 12 13 2 + 20 14 15 1 + 21 15 22 1 + 22 15 21 1 + 23 15 20 1 +@SUBSTRUCTURE + 1 JELR 1 +@COMMENT +COMMENT 2-METHOXYCARBONYLISATOGEN +@MOLECULE +JEMHIS + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -2.0047 0.4667 5.9190 P 1 UNCH 1.1712 + 2 O1 -0.5192 -0.0906 5.5751 O.3 1 UNCH -0.7712 + 3 O2 -2.4731 -0.4177 7.0484 O.3 1 UNCH -0.9500 + 4 O3 -2.7155 0.5139 4.5967 O.3 1 UNCH -0.9500 + 5 F1 -2.7904 2.7760 6.6928 F 1 UNCH -0.3400 + 6 C1 -1.6314 2.0766 6.5916 C.3 1 UNCH 0.6800 + 7 F2 -0.8244 2.7381 5.7249 F 1 UNCH -0.3400 + 8 N1 -0.7010 3.3804 8.4618 N.3 1 UNCH -0.8530 + 9 C2 -0.9774 1.9861 7.9454 C.3 1 UNCH 0.5030 + 10 H1 -0.6692 -0.9402 5.1138 H 1 UNCH 0.5000 + 11 H2 -0.2594 3.3628 9.3854 H 1 UNCH 0.4500 + 12 H3 -1.5899 3.8984 8.5131 H 1 UNCH 0.4500 + 13 H4 -0.0961 3.8766 7.7926 H 1 UNCH 0.4500 + 14 H5 -0.0100 1.4790 7.9070 H 1 UNCH 0.0000 + 15 H6 -1.6224 1.5154 8.6915 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 6 1 + 5 2 10 1 + 6 5 6 1 + 7 6 7 1 + 8 6 9 1 + 9 8 9 1 + 10 8 11 1 + 11 8 12 1 + 12 8 13 1 + 13 9 14 1 + 14 9 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-AMINO-1,1-DIFLUOROPHOSPHONIC ACID +@MOLECULE +JEMWUT + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.6286 0.8663 -4.4815 O.3 1 JEMW -0.5600 + 2 C1 1.9416 2.1108 -3.8685 C.3 1 JEMW 0.2800 + 3 C2 1.0806 2.4151 -2.6485 C.3 1 JEMW 0.2800 + 4 O2 -0.2901 2.0921 -2.9042 O.3 1 JEMW -0.3567 + 5 C3 -0.6523 0.7622 -2.7092 C.2 1 JEMW -0.0615 + 6 C4 0.1836 -0.2872 -2.9338 C.2 1 JEMW -0.2764 + 7 C5 1.5191 -0.2191 -3.5765 C.3 1 JEMW 1.0982 + 8 C6 -2.1226 0.6350 -2.2831 C.3 1 JEMW 0.8182 + 9 C7 -2.3522 0.9594 -0.7945 C.3 1 JEMW 1.0200 + 10 C8 -0.0931 -1.7037 -2.5856 C.3 1 JEMW 1.1582 + 11 F1 -2.6000 -0.6077 -2.5855 F 1 JEMW -0.3400 + 12 F2 -2.8811 1.4792 -3.0519 F 1 JEMW -0.3400 + 13 F3 -3.6530 0.8259 -0.4381 F 1 JEMW -0.3400 + 14 F4 -1.6310 0.1470 0.0189 F 1 JEMW -0.3400 + 15 F5 -1.9872 2.2306 -0.4866 F 1 JEMW -0.3400 + 16 F6 -0.9382 -1.8037 -1.5275 F 1 JEMW -0.3400 + 17 F7 1.0199 -2.3810 -2.2094 F 1 JEMW -0.3400 + 18 F8 -0.6555 -2.3811 -3.6115 F 1 JEMW -0.3400 + 19 F9 1.7884 -1.3230 -4.3159 F 1 JEMW -0.3400 + 20 F10 2.5123 -0.1162 -2.6577 F 1 JEMW -0.3400 + 21 H1 3.0063 2.1428 -3.6127 H 1 JEMW 0.0000 + 22 H2 1.7687 2.8767 -4.6321 H 1 JEMW 0.0000 + 23 H3 1.4331 1.8948 -1.7491 H 1 JEMW 0.0000 + 24 H4 1.1365 3.4859 -2.4239 H 1 JEMW 0.0000 +@BOND + 1 1 7 1 + 2 1 2 1 + 3 2 22 1 + 4 2 21 1 + 5 2 3 1 + 6 3 24 1 + 7 3 23 1 + 8 3 4 1 + 9 4 5 1 + 10 5 8 1 + 11 5 6 2 + 12 6 10 1 + 13 6 7 1 + 14 7 20 1 + 15 7 19 1 + 16 8 12 1 + 17 8 11 1 + 18 8 9 1 + 19 9 15 1 + 20 9 14 1 + 21 9 13 1 + 22 10 18 1 + 23 10 17 1 + 24 10 16 1 +@SUBSTRUCTURE + 1 JEMW 1 +@COMMENT +COMMENT 6-TRIFLUOROMETHYL-5-PERFLUOROETHYL-7,7-DIFLUORO-2,3-DIHYDRO +@MOLECULE +JESFES + 25 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 0.0000 2.3253 6.2968 SI 1 UNCH 1.3880 + 2 N1 1.1521 3.0367 5.3653 N.3 1 UNCH -0.9770 + 3 H1 0.7330 3.8813 4.9911 H 1 UNCH 0.3600 + 4 C1 1.9693 2.4160 4.3427 C.3 1 UNCH 0.2700 + 5 H2 2.5429 1.5707 4.7390 H 1 UNCH 0.0000 + 6 H3 2.6911 3.1435 3.9568 H 1 UNCH 0.0000 + 7 H4 1.3663 2.0653 3.4979 H 1 UNCH 0.0000 + 8 N1K 0.7114 1.1733 7.2284 N.3 1 UNCH -0.9770 + 9 N1E -1.1518 1.6139 5.3651 N.3 1 UNCH -0.9770 + 10 N1N -0.7115 3.4772 7.2283 N.3 1 UNCH -0.9770 + 11 H1K 1.5559 1.5924 7.6027 H 1 UNCH 0.3600 + 12 C1K 0.0905 0.3561 8.2510 C.3 1 UNCH 0.2700 + 13 H1E -0.7327 0.7693 4.9908 H 1 UNCH 0.3600 + 14 C1E -1.9689 2.2347 4.3423 C.3 1 UNCH 0.2700 + 15 H1N -1.5561 3.0581 7.6025 H 1 UNCH 0.3600 + 16 C1N -0.0908 4.2943 8.2511 C.3 1 UNCH 0.2700 + 17 H2K -0.7547 -0.2175 7.8545 H 1 UNCH 0.0000 + 18 H3K 0.8179 -0.3657 8.6370 H 1 UNCH 0.0000 + 19 H4K -0.2603 0.9591 9.0957 H 1 UNCH 0.0000 + 20 H2E -2.5426 3.0800 4.7386 H 1 UNCH 0.0000 + 21 H3E -2.6906 1.5072 3.9562 H 1 UNCH 0.0000 + 22 H4E -1.3657 2.5855 3.4977 H 1 UNCH 0.0000 + 23 H2N 0.7545 4.8679 7.8549 H 1 UNCH 0.0000 + 24 H3N -0.8183 5.0160 8.6371 H 1 UNCH 0.0000 + 25 H4N 0.2599 3.6912 9.0958 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 9 1 + 4 1 10 1 + 5 2 3 1 + 6 2 4 1 + 7 4 5 1 + 8 4 6 1 + 9 4 7 1 + 10 8 11 1 + 11 8 12 1 + 12 9 13 1 + 13 9 14 1 + 14 10 15 1 + 15 10 16 1 + 16 12 17 1 + 17 12 18 1 + 18 12 19 1 + 19 14 20 1 + 20 14 21 1 + 21 14 22 1 + 22 16 23 1 + 23 16 24 1 + 24 16 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TETRAKIS(METHYLAMINO)SILANE +@MOLECULE +JETJUN + 18 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 6.9504 4.2128 3.8606 P 1 JETJ 1.2424 + 2 P2 6.9550 3.9861 6.9058 P 1 JETJ 1.1712 + 3 C1 7.9778 3.9168 5.3394 C.3 1 JETJ 0.2800 + 4 C2 9.1992 4.8205 5.3975 C.3 1 JETJ 0.0000 + 5 O1 8.4760 2.5399 5.3204 O.3 1 JETJ -0.6800 + 6 O2 5.5641 3.4164 4.0605 O.3 1 JETJ -0.7712 + 7 O3 6.7645 5.6293 3.4051 O.3 1 JETJ -0.7000 + 8 O4 7.6002 3.3251 2.6771 O.3 1 JETJ -0.7712 + 9 O5 5.5184 3.7010 6.5400 O.3 1 JETJ -0.9500 + 10 O6 7.0430 5.5246 7.3682 O.3 1 JETJ -0.7712 + 11 O7 7.6721 3.1623 7.9438 O.3 1 JETJ -0.9500 + 12 H1 9.8055 4.6027 6.2827 H 1 JETJ 0.0000 + 13 H2 9.8340 4.6666 4.5187 H 1 JETJ 0.0000 + 14 H3 8.9074 5.8740 5.4274 H 1 JETJ 0.0000 + 15 H4 7.0857 3.4599 1.8635 H 1 JETJ 0.5000 + 16 H5 5.3053 3.4100 5.0377 H 1 JETJ 0.5000 + 17 H6 6.5485 5.5967 8.2039 H 1 JETJ 0.5000 + 18 H9 8.4147 2.2641 6.2669 H 1 JETJ 0.4000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 3 1 + 5 2 11 1 + 6 2 10 1 + 7 2 9 1 + 8 2 3 1 + 9 3 5 1 + 10 3 4 1 + 11 4 14 1 + 12 4 13 1 + 13 4 12 1 + 14 5 18 1 + 15 6 16 1 + 16 8 15 1 + 17 10 17 1 +@SUBSTRUCTURE + 1 JETJ 1 +@COMMENT +COMMENT SODIUM TRIHYDROGEN-1-HYDROXY-1,1-DIPHOSPHONATOETHANE MONOHY +@MOLECULE +JEVXIR + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.0876 0.4374 6.0087 O.3 1 JEVX -0.3790 + 2 O2 -2.4231 3.1210 3.9625 O.2 1 JEVX -0.5700 + 3 O3 0.0501 -0.5982 2.3420 O.2 1 JEVX -0.5700 + 4 N1 0.8121 0.6136 4.6581 N.3 1 JEVX -0.5210 + 5 C1 -1.0718 1.2991 3.2403 C.2 1 JEVX 0.0288 + 6 C2 -2.1890 2.2737 3.1018 C.2 1 JEVX 0.4946 + 7 C3 -3.0772 2.1602 1.8819 C.3 1 JEVX 0.0610 + 8 C4 -2.3633 1.5869 0.6476 C.3 1 JEVX 0.0000 + 9 C5 -1.7355 0.2278 0.9942 C.3 1 JEVX 0.0610 + 10 C6 -0.8265 0.2573 2.2039 C.2 1 JEVX 0.4946 + 11 C7 -0.2847 1.3796 4.3272 C.2 1 JEVX -0.0500 + 12 C8 -3.4050 1.3768 -0.4689 C.3 1 JEVX 0.0000 + 13 C9 -1.2968 2.5679 0.1216 C.3 1 JEVX 0.0000 + 14 H1 -3.4648 3.1610 1.6539 H 1 JEVX 0.0000 + 15 H2 -1.1488 -0.1375 0.1421 H 1 JEVX 0.0000 + 16 H3 -0.4793 2.1321 5.0908 H 1 JEVX 0.1500 + 17 H4 -2.9410 0.9595 -1.3698 H 1 JEVX 0.0000 + 18 H5 -0.8091 2.1718 -0.7765 H 1 JEVX 0.0000 + 19 H6 -1.7475 3.5308 -0.1450 H 1 JEVX 0.0000 + 20 H7 1.9699 0.8427 6.1086 H 1 JEVX 0.4000 + 21 H8 -3.9304 1.5310 2.1649 H 1 JEVX 0.0000 + 22 H9 -2.5155 -0.5153 1.2030 H 1 JEVX 0.0000 + 23 H10 -3.8835 2.3228 -0.7470 H 1 JEVX 0.0000 + 24 H11 -4.1946 0.6862 -0.1518 H 1 JEVX 0.0000 + 25 H12 -0.5119 2.7672 0.8577 H 1 JEVX 0.0000 + 26 H13 0.8904 -0.2456 4.0910 H 1 JEVX 0.4000 +@BOND + 1 1 20 1 + 2 1 4 1 + 3 2 6 2 + 4 3 10 2 + 5 4 26 1 + 6 4 11 1 + 7 5 11 2 + 8 5 10 1 + 9 5 6 1 + 10 6 7 1 + 11 7 21 1 + 12 7 14 1 + 13 7 8 1 + 14 8 13 1 + 15 8 12 1 + 16 8 9 1 + 17 9 22 1 + 18 9 15 1 + 19 9 10 1 + 20 11 16 1 + 21 12 24 1 + 22 12 23 1 + 23 12 17 1 + 24 13 25 1 + 25 13 19 1 + 26 13 18 1 +@SUBSTRUCTURE + 1 JEVX 1 +@COMMENT +COMMENT 5,5-DIMETHYL-2-(N-HYDROXY)AMINOMETHYLENE-M-BENZOQUINONE 2-( +@MOLECULE +JEWFAS + 38 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -2.0483 0.9538 7.2302 P 1 UNCH 1.5070 + 2 CL1 -0.5645 -2.9566 9.8238 CL 1 UNCH -0.2900 + 3 CL2 -2.0215 -1.3879 2.9716 CL 1 UNCH -0.2900 + 4 O1 -0.4526 1.0791 7.4239 O.3 1 UNCH -0.5512 + 5 O2 -2.5399 1.8961 6.1770 O.3 1 UNCH -0.7000 + 6 N1 -2.6357 1.2912 8.7171 N.3 1 UNCH -0.8979 + 7 N2 -2.3582 -0.6382 6.9813 N.3 1 UNCH -0.8079 + 8 N3 -3.8230 4.3049 12.2011 N.2 1 UNCH -0.6200 + 9 C1 -2.1463 2.5468 9.2858 C.3 1 UNCH 0.4135 + 10 C2 -0.6065 2.5502 9.3336 C.3 1 UNCH 0.0000 + 11 C3 -0.0027 2.3168 7.9524 C.3 1 UNCH 0.2800 + 12 C4 -1.5110 -1.6623 7.6184 C.3 1 UNCH 0.2700 + 13 C5 -1.4741 -1.5786 9.1478 C.3 1 UNCH 0.2900 + 14 C6 -2.6773 -1.0193 5.5909 C.3 1 UNCH 0.2700 + 15 C7 -1.5156 -0.8731 4.6011 C.3 1 UNCH 0.2900 + 16 C8 -3.2999 4.0063 10.9904 C.2 1 UNCH 0.1600 + 17 C9 -2.7230 2.7809 10.6636 C.2 1 UNCH -0.1435 + 18 C10 -2.6868 1.8084 11.6704 C.2 1 UNCH -0.1500 + 19 C11 -3.2194 2.0869 12.9259 C.2 1 UNCH -0.1500 + 20 C12 -3.7718 3.3375 13.1407 C.2 1 UNCH 0.1600 + 21 H1 -3.6499 1.3261 8.6889 H 1 UNCH 0.3600 + 22 H2 -2.4741 3.3625 8.6276 H 1 UNCH 0.0000 + 23 H3 -0.2416 3.5041 9.7333 H 1 UNCH 0.0000 + 24 H4 -0.2523 1.7616 10.0107 H 1 UNCH 0.0000 + 25 H5 1.0886 2.2775 8.0227 H 1 UNCH 0.0000 + 26 H6 -0.2642 3.1251 7.2610 H 1 UNCH 0.0000 + 27 H7 -0.4882 -1.5982 7.2282 H 1 UNCH 0.0000 + 28 H8 -1.8915 -2.6578 7.3549 H 1 UNCH 0.0000 + 29 H9 -2.4818 -1.6125 9.5725 H 1 UNCH 0.0000 + 30 H10 -0.9680 -0.6757 9.4946 H 1 UNCH 0.0000 + 31 H11 -3.0598 -2.0482 5.5711 H 1 UNCH 0.0000 + 32 H12 -3.5189 -0.4011 5.2530 H 1 UNCH 0.0000 + 33 H13 -1.1742 0.1628 4.5259 H 1 UNCH 0.0000 + 34 H14 -0.6654 -1.4996 4.8842 H 1 UNCH 0.0000 + 35 H15 -3.3622 4.8154 10.2666 H 1 UNCH 0.1500 + 36 H16 -2.2465 0.8326 11.4812 H 1 UNCH 0.1500 + 37 H17 -3.2032 1.3462 13.7175 H 1 UNCH 0.1500 + 38 H18 -4.2000 3.6030 14.1031 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 13 1 + 6 3 15 1 + 7 4 11 1 + 8 6 9 1 + 9 6 21 1 + 10 7 12 1 + 11 7 14 1 + 12 8 16 2 + 13 8 20 1 + 14 9 10 1 + 15 9 17 1 + 16 9 22 1 + 17 10 11 1 + 18 10 23 1 + 19 10 24 1 + 20 11 25 1 + 21 11 26 1 + 22 12 13 1 + 23 12 27 1 + 24 12 28 1 + 25 13 29 1 + 26 13 30 1 + 27 14 15 1 + 28 14 31 1 + 29 14 32 1 + 30 15 33 1 + 31 15 34 1 + 32 16 17 1 + 33 16 35 1 + 34 17 18 2 + 35 18 19 1 + 36 18 36 1 + 37 19 20 2 + 38 19 37 1 + 39 20 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-(3'-PYRIDYL)CYCLOPHOSPHAMIDE +@MOLECULE +JEWPIK + 19 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.8473 8.9061 0.2478 N.3 1 JEWP -0.1000 + 2 C1 4.9599 8.3287 0.8782 C.2 1 JEWP 0.6156 + 3 C2 4.6711 8.3431 2.3492 C.2 1 JEWP 0.1544 + 4 C3 3.4203 8.8043 2.4788 C.2 1 JEWP -0.0382 + 5 N2 2.9062 9.1868 1.2512 N.3 1 JEWP -0.2200 + 6 C4 1.6478 8.8065 0.8158 C.2 1 JEWP -0.0382 + 7 C5 1.6969 8.3468 -0.4412 C.2 1 JEWP 0.1544 + 8 C6 3.1465 8.3309 -0.8231 C.2 1 JEWP 0.6156 + 9 O1 5.9999 7.9369 0.3773 O.2 1 JEWP -0.5700 + 10 O2 3.5796 7.9398 -1.8934 O.2 1 JEWP -0.5700 + 11 CL1 5.7097 7.7094 3.5162 CL 1 JEWP -0.1400 + 12 CL2 0.4653 7.7158 -1.4042 CL 1 JEWP -0.1400 + 13 C7 2.5416 8.8591 3.6869 C.3 1 JEWP 0.3682 + 14 C8 0.4982 8.8616 1.7698 C.3 1 JEWP 0.3682 + 15 S1 0.9477 8.0179 3.3371 S.3 1 JEWP -0.4600 + 16 H1 2.9994 8.3669 4.5497 H 1 JEWP 0.0000 + 17 H2 2.3372 9.8984 3.9641 H 1 JEWP 0.0000 + 18 H3 0.2360 9.9010 1.9927 H 1 JEWP 0.0000 + 19 H4 -0.3926 8.3711 1.3672 H 1 JEWP 0.0000 +@BOND + 1 1 8 am + 2 1 5 1 + 3 1 2 am + 4 2 9 2 + 5 2 3 1 + 6 3 11 1 + 7 3 4 2 + 8 4 13 1 + 9 4 5 1 + 10 5 6 1 + 11 6 14 1 + 12 6 7 2 + 13 7 12 1 + 14 7 8 1 + 15 8 10 2 + 16 13 17 1 + 17 13 16 1 + 18 13 15 1 + 19 14 19 1 + 20 14 18 1 + 21 14 15 1 +@SUBSTRUCTURE + 1 JEWP 1 +@COMMENT +COMMENT SYN-3,7-DICHLORO-4,6-(2-THIA-1,3-TRIMETHYLENE)-1,5-DIAZABIC +@MOLECULE +JEXREJ + 34 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 13.7021 1.0491 2.9003 S.3 1 UNCH 1.3328 + 2 S2 13.2007 3.6859 1.7897 S.3 1 UNCH 1.3328 + 3 O1 15.0950 1.4295 2.7799 O.3 1 UNCH -0.6500 + 4 O2 13.2917 0.2715 4.0545 O.3 1 UNCH -0.6500 + 5 O3 13.6230 3.1487 0.5124 O.3 1 UNCH -0.6500 + 6 O4 12.1725 4.7108 1.8247 O.3 1 UNCH -0.6500 + 7 N1 7.2199 1.5233 3.8272 N.3 1 UNCH -0.8382 + 8 N2 12.7485 2.4237 2.7930 N.3 1 UNCH -0.4750 + 9 C1 8.5731 1.7738 3.5726 C.2 1 UNCH 0.1000 + 10 C2 9.5281 1.8671 4.6000 C.2 1 UNCH -0.1500 + 11 C3 10.8868 2.1035 4.3427 C.2 1 UNCH -0.1500 + 12 C4 11.3424 2.2538 3.0363 C.2 1 UNCH 0.1990 + 13 C5 10.4273 2.1281 1.9923 C.2 1 UNCH -0.1500 + 14 C6 9.0704 1.8973 2.2630 C.2 1 UNCH -0.1500 + 15 C7 6.2389 1.8974 2.8075 C.3 1 UNCH 0.3691 + 16 C8 6.7331 1.5578 5.2056 C.3 1 UNCH 0.3691 + 17 C9 13.2716 0.1094 1.4454 C.3 1 UNCH 0.1052 + 18 C10 14.6107 4.3903 2.6229 C.3 1 UNCH 0.1052 + 19 H1 9.2431 1.7563 5.6420 H 1 UNCH 0.1500 + 20 H2 11.5785 2.1574 5.1804 H 1 UNCH 0.1500 + 21 H3 10.7407 2.2129 0.9545 H 1 UNCH 0.1500 + 22 H4 8.4094 1.8056 1.4060 H 1 UNCH 0.1500 + 23 H5 6.3205 2.9599 2.5524 H 1 UNCH 0.0000 + 24 H6 6.3566 1.2911 1.9032 H 1 UNCH 0.0000 + 25 H7 5.2149 1.7209 3.1559 H 1 UNCH 0.0000 + 26 H8 6.8450 2.5582 5.6379 H 1 UNCH 0.0000 + 27 H9 7.2553 0.8248 5.8300 H 1 UNCH 0.0000 + 28 H10 5.6715 1.2901 5.2556 H 1 UNCH 0.0000 + 29 H11 13.5156 0.6709 0.5456 H 1 UNCH 0.0000 + 30 H12 12.2126 -0.1487 1.4787 H 1 UNCH 0.0000 + 31 H13 13.8636 -0.8092 1.4645 H 1 UNCH 0.0000 + 32 H14 15.4909 3.7659 2.4856 H 1 UNCH 0.0000 + 33 H15 14.8016 5.3685 2.1738 H 1 UNCH 0.0000 + 34 H16 14.3698 4.5198 3.6796 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 8 1 + 4 1 17 1 + 5 2 5 1 + 6 2 6 1 + 7 2 8 1 + 8 2 18 1 + 9 7 9 1 + 10 7 15 1 + 11 7 16 1 + 12 8 12 1 + 13 9 10 1 + 14 9 14 2 + 15 10 11 2 + 16 10 19 1 + 17 11 12 1 + 18 11 20 1 + 19 12 13 2 + 20 13 14 1 + 21 13 21 1 + 22 14 22 1 + 23 15 23 1 + 24 15 24 1 + 25 15 25 1 + 26 16 26 1 + 27 16 27 1 + 28 16 28 1 + 29 17 29 1 + 30 17 30 1 + 31 17 31 1 + 32 18 32 1 + 33 18 33 1 + 34 18 34 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-(N,N-DIMETHYLAMINO)-N,N-DIMETHANESULFONANILIDE +@MOLECULE +JEYBUK + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.5522 5.1676 15.9119 N.3 1 JEYB 0.0332 + 2 C1 4.8380 4.1926 15.2696 C.2 1 JEYB -0.3016 + 3 C2 4.0842 3.5143 16.2090 C.2 1 JEYB -0.1810 + 4 C3 3.9078 3.8909 18.7957 C.2 1 JEYB -0.1500 + 5 C4 4.3917 4.7017 19.8255 C.2 1 JEYB 0.0825 + 6 O1 3.9882 4.5130 21.1170 O.3 1 JEYB -0.5325 + 7 C5 5.2970 5.7253 19.5810 C.2 1 JEYB -0.1500 + 8 C6 5.7587 5.9722 18.2857 C.2 1 JEYB -0.1500 + 9 C7 5.2717 5.1554 17.2577 C.2 1 JEYB -0.1516 + 10 C8 4.3573 4.1241 17.4779 C.2 1 JEYB 0.0000 + 11 C9 3.1478 2.3783 15.9430 C.3 1 JEYB 0.2420 + 12 C10 3.7107 1.0324 16.3346 C.2 1 JEYB 0.6590 + 13 O2 4.8062 0.7636 16.7965 O.2 1 JEYB -0.5700 + 14 O3 2.8203 0.0378 16.1133 O.3 1 JEYB -0.6500 + 15 H1 6.1935 5.8098 15.4676 H 1 JEYB 0.2700 + 16 H2 4.9306 4.0608 14.1996 H 1 JEYB 0.1500 + 17 H3 3.2030 3.0919 18.9929 H 1 JEYB 0.1500 + 18 H4 3.4030 3.7388 21.1444 H 1 JEYB 0.4500 + 19 H5 5.6530 6.3366 20.4062 H 1 JEYB 0.1500 + 20 H6 6.4702 6.7680 18.0927 H 1 JEYB 0.1500 + 21 H7 2.9038 2.3440 14.8747 H 1 JEYB 0.0000 + 22 H8 2.2186 2.5383 16.5019 H 1 JEYB 0.0000 + 23 H9 3.3050 -0.7676 16.3934 H 1 JEYB 0.5000 +@BOND + 1 1 15 1 + 2 1 9 1 + 3 1 2 1 + 4 2 16 1 + 5 2 3 2 + 6 3 11 1 + 7 3 10 1 + 8 4 17 1 + 9 4 10 1 + 10 4 5 2 + 11 5 7 1 + 12 5 6 1 + 13 6 18 1 + 14 7 19 1 + 15 7 8 2 + 16 8 20 1 + 17 8 9 1 + 18 9 10 2 + 19 11 22 1 + 20 11 21 1 + 21 11 12 1 + 22 12 14 1 + 23 12 13 2 + 24 14 23 1 +@SUBSTRUCTURE + 1 JEYB 1 +@COMMENT +COMMENT 5-HYDROXYINDOLE-3-ACETIC ACID +@MOLECULE +JIDHIN + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.1469 6.8120 -2.6986 S.3 1 UNCH 1.4470 + 2 C1 4.9967 8.0918 0.3527 C.2 1 UNCH -0.1435 + 3 C2 4.9668 6.7996 -0.1902 C.2 1 UNCH -0.1500 + 4 C3 5.9289 6.3990 -1.1194 C.2 1 UNCH -0.1500 + 5 C4 6.9200 7.3002 -1.5136 C.2 1 UNCH -0.0090 + 6 C5 6.9516 8.5975 -0.9956 C.2 1 UNCH -0.1500 + 7 C6 5.9876 8.9904 -0.0659 C.2 1 UNCH -0.1500 + 8 C7 3.9417 8.5283 1.3269 C.3 1 UNCH 0.1435 + 9 C8 10.7925 6.4237 -2.4232 C.3 1 UNCH 0.0360 + 10 C9 10.5901 7.9058 -2.2243 C.3 1 UNCH 0.0360 + 11 C10 11.6712 5.5709 -1.5759 C.3 1 UNCH 0.3750 + 12 C11 11.2796 8.7051 -1.1729 C.3 1 UNCH 0.3750 + 13 N1 9.5761 6.9397 -1.7673 N.3 1 UNCH -0.6000 + 14 O1 7.9600 5.4046 -2.9915 O.3 1 UNCH -0.6500 + 15 O2 8.1555 7.8035 -3.7549 O.3 1 UNCH -0.6500 + 16 O3 11.1875 4.2341 -1.5968 O.3 1 UNCH -0.6800 + 17 O4 10.5305 9.8859 -0.9030 O.3 1 UNCH -0.6800 + 18 H1 4.1920 6.0966 0.1092 H 1 UNCH 0.1500 + 19 H2 5.8937 5.3919 -1.5285 H 1 UNCH 0.1500 + 20 H3 7.7197 9.3016 -1.3061 H 1 UNCH 0.1500 + 21 H4 6.0154 10.0025 0.3327 H 1 UNCH 0.1500 + 22 H5 3.5926 7.6830 1.9291 H 1 UNCH 0.0000 + 23 H6 4.3365 9.2790 2.0196 H 1 UNCH 0.0000 + 24 H7 3.0900 8.9558 0.7889 H 1 UNCH 0.0000 + 25 H8 10.6538 6.0202 -3.4205 H 1 UNCH 0.1000 + 26 H9 10.3487 8.4922 -3.1021 H 1 UNCH 0.1000 + 27 H10 11.7116 5.8990 -0.5330 H 1 UNCH 0.0000 + 28 H11 12.6906 5.5694 -1.9728 H 1 UNCH 0.0000 + 29 H12 11.3808 8.1590 -0.2305 H 1 UNCH 0.0000 + 30 H13 12.2804 8.9974 -1.5058 H 1 UNCH 0.0000 + 31 H14 10.2344 4.2753 -1.3909 H 1 UNCH 0.4000 + 32 H15 10.5610 10.4446 -1.6983 H 1 UNCH 0.4000 +@BOND + 1 1 5 1 + 2 1 13 1 + 3 1 14 1 + 4 1 15 1 + 5 2 3 2 + 6 2 7 1 + 7 2 8 1 + 8 3 4 1 + 9 3 18 1 + 10 4 5 2 + 11 4 19 1 + 12 5 6 1 + 13 6 7 2 + 14 6 20 1 + 15 7 21 1 + 16 8 22 1 + 17 8 23 1 + 18 8 24 1 + 19 9 10 1 + 20 9 11 1 + 21 9 13 1 + 22 9 25 1 + 23 10 12 1 + 24 10 13 1 + 25 10 26 1 + 26 11 16 1 + 27 11 27 1 + 28 11 28 1 + 29 12 17 1 + 30 12 29 1 + 31 12 30 1 + 32 16 31 1 + 33 17 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3-DI(HYDROXYMETHYL)-N-P-TOSYLAZIRIDINE +@MOLECULE +JIFYUS + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.0454 1.7840 -1.1061 S.3 1 JIFY 1.6670 + 2 O1 7.3971 3.0413 -1.7268 O.3 1 JIFY -0.6500 + 3 N1 7.5877 1.7840 0.3951 N.3 1 JIFY -0.6624 + 4 N2 8.9773 1.7840 2.7920 N.3 1 JIFY -0.9900 + 5 N3 5.4965 1.7840 1.4615 N.2 1 JIFY -0.6534 + 6 C1 6.8195 1.7840 1.4533 C.2 1 JIFY 0.6038 + 7 C2 3.3637 1.7840 0.4228 C.2 1 JIFY -0.1500 + 8 C3 2.5544 1.7840 -0.7193 C.2 1 JIFY -0.1500 + 9 C4 3.1312 1.7840 -1.9873 C.2 1 JIFY -0.1500 + 10 C5 4.5164 1.7840 -2.1139 C.2 1 JIFY -0.1500 + 11 C6 4.7606 1.7840 0.3164 C.2 1 JIFY 0.3490 + 12 C7 5.3068 1.7840 -0.9579 C.2 1 JIFY -0.0090 + 13 C8 7.5215 1.7840 2.7923 C.3 1 JIFY 0.3750 + 14 H1 2.8751 1.7840 1.3953 H 1 JIFY 0.1500 + 15 H2 1.4690 1.7840 -0.6206 H 1 JIFY 0.1500 + 16 H3 2.4986 1.7840 -2.8746 H 1 JIFY 0.1500 + 17 H4 4.9686 1.7840 -3.1053 H 1 JIFY 0.1500 + 18 H5 7.1816 0.9052 3.3529 H 1 JIFY 0.0000 + 19 H6 5.0146 1.7840 2.3599 H 1 JIFY 0.4500 + 20 H7 9.4281 2.6348 2.4656 H 1 JIFY 0.3600 + 21 H8 8.5858 1.7840 0.5256 H 1 JIFY 0.4500 + 22 O1B 7.3971 0.5267 -1.7268 O.3 1 JIFY -0.6500 + 23 H5B 7.1816 2.6628 3.3529 H 1 JIFY 0.0000 + 24 H7B 9.4281 0.9332 2.4656 H 1 JIFY 0.3600 +@BOND + 1 1 22 1 + 2 1 12 1 + 3 1 3 1 + 4 1 2 1 + 5 3 21 1 + 6 3 6 am + 7 4 24 1 + 8 4 20 1 + 9 4 13 1 + 10 5 19 1 + 11 5 11 1 + 12 5 6 2 + 13 6 13 1 + 14 7 14 1 + 15 7 11 1 + 16 7 8 2 + 17 8 15 1 + 18 8 9 1 + 19 9 16 1 + 20 9 10 2 + 21 10 17 1 + 22 10 12 1 + 23 11 12 2 + 24 13 23 1 + 25 13 18 1 +@SUBSTRUCTURE + 1 JIFY 1 +@COMMENT +COMMENT 3-AMINOMETHYL-1,2,4-BENZOTHIADIAZINE-1,1-DIOXIDE +@MOLECULE +JIGCIL + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.9007 0.9603 0.1566 S.3 1 UNCH 0.1807 + 2 O1 5.0485 -2.3937 1.8114 O.3 1 UNCH -0.0481 + 3 N1 5.7757 -0.3387 0.8246 N.2 1 UNCH -0.5277 + 4 N2 3.7575 -2.9357 2.0287 N.2 1 UNCH -0.4097 + 5 N3 2.1518 0.9049 0.0547 N.3 1 UNCH -0.8840 + 6 C1 3.2963 0.2853 0.4134 C.2 1 UNCH 0.1240 + 7 C2 4.8578 -1.1794 1.2042 C.2 1 UNCH 0.4890 + 8 C3 3.5164 -0.9068 1.0144 C.2 1 UNCH -0.0130 + 9 C4 2.8615 -2.0340 1.5511 C.2 1 UNCH 0.1078 + 10 C5 1.4099 -2.3026 1.6363 C.3 1 UNCH 0.1810 + 11 H1 1.2828 0.3840 -0.0207 H 1 UNCH 0.4000 + 12 H2 2.1976 1.7020 -0.5758 H 1 UNCH 0.4000 + 13 H3 0.9048 -1.5027 2.1870 H 1 UNCH 0.0000 + 14 H4 0.9735 -2.3594 0.6340 H 1 UNCH 0.0000 + 15 H5 1.2030 -3.2475 2.1492 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 6 1 + 3 2 4 1 + 4 2 7 1 + 5 3 7 2 + 6 4 9 2 + 7 5 6 1 + 8 5 11 1 + 9 5 12 1 + 10 6 8 2 + 11 7 8 1 + 12 8 9 1 + 13 9 10 1 + 14 10 13 1 + 15 10 14 1 + 16 10 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-AMINOISOTHIAZOLO(4,3-D)ISOXAZOLE +@MOLECULE +JIGRAS + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 7.8109 15.6345 2.0126 CL 1 JIGR -0.1400 + 2 CL2 6.0498 20.1515 6.0748 CL 1 JIGR -0.1400 + 3 CL3 3.2109 11.1671 6.0809 CL 1 JIGR -0.1400 + 4 O1 8.6272 18.4865 2.1190 O.2 1 JIGR -0.5700 + 5 O2 7.9587 20.4869 3.7759 O.3 1 JIGR -0.5267 + 6 O3 5.1974 17.3213 6.0234 O.2 1 JIGR -0.5700 + 7 C1 7.2748 16.8112 3.1695 C.2 1 JIGR 0.1544 + 8 C2 7.8344 18.1730 3.0037 C.2 1 JIGR 0.5412 + 9 C3 7.4147 19.2233 3.9612 C.2 1 JIGR 0.0911 + 10 C4 6.5546 18.9431 4.9452 C.2 1 JIGR 0.1544 + 11 C5 5.9878 17.5805 5.1199 C.2 1 JIGR 0.5412 + 12 C6 6.4115 16.5220 4.1539 C.2 1 JIGR 0.0794 + 13 C7 5.8682 15.2105 4.3190 C.1 1 JIGR -0.0650 + 14 C8 5.4046 14.1127 4.4686 C.1 1 JIGR -0.0650 + 15 C9 4.8499 12.8076 4.6509 C.2 1 JIGR -0.0732 + 16 C10 3.9957 12.6339 5.6702 C.2 1 JIGR -0.0100 + 17 C11 5.2693 11.7343 3.6845 C.3 1 JIGR 0.1382 + 18 H1 8.5497 20.4170 2.9942 H 1 JIGR 0.4500 + 19 H2 3.7112 13.4280 6.3523 H 1 JIGR 0.1500 + 20 H3 4.8072 10.7637 3.8833 H 1 JIGR 0.0000 + 21 H4 4.9998 12.0211 2.6620 H 1 JIGR 0.0000 + 22 H5 6.3551 11.5936 3.7250 H 1 JIGR 0.0000 +@BOND + 1 1 7 1 + 2 2 10 1 + 3 3 16 1 + 4 4 8 2 + 5 5 9 1 + 6 5 18 1 + 7 6 11 2 + 8 7 8 1 + 9 7 12 2 + 10 8 9 1 + 11 9 10 2 + 12 10 11 1 + 13 11 12 1 + 14 12 13 1 + 15 13 14 3 + 16 14 15 1 + 17 15 16 2 + 18 15 17 1 + 19 16 19 1 + 20 17 20 1 + 21 17 21 1 + 22 17 22 1 +@SUBSTRUCTURE + 1 JIGR 1 +@COMMENT +COMMENT MYCENON (INHIBITOR OF ISOCITRATE LYASE) +@MOLECULE +JIHVEB + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.6048 -0.5338 -4.7869 O.3 1 UNCH -0.5200 + 2 N1 -0.6340 -0.7046 -6.0146 N.2 1 UNCH 0.8750 + 3 O2 -1.4545 -1.4055 -6.6263 O.2 1 UNCH -0.5200 + 4 C1 0.4014 -0.0617 -6.8328 C.2 1 UNCH 0.5540 + 5 N2 0.7763 1.0767 -6.3324 N.2 1 UNCH -0.5130 + 6 C2 0.8027 -0.7386 -8.0976 C.3 1 UNCH 0.0610 + 7 O3 1.7259 1.6946 -7.1574 O.3 1 UNCH -0.3370 + 8 H1 0.7341 -1.8256 -7.9996 H 1 UNCH 0.0000 + 9 H2 1.8344 -0.4879 -8.3573 H 1 UNCH 0.0000 + 10 H3 0.1451 -0.4082 -8.9065 H 1 UNCH 0.0000 + 11 H4 1.9310 2.5163 -6.6687 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 2 3 2 + 3 2 4 am + 4 4 5 2 + 5 4 6 1 + 6 5 7 1 + 7 6 8 1 + 8 6 9 1 + 9 6 10 1 + 10 7 11 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-ACETONITROLIC ACID (AT 185 DEG.K) +@MOLECULE +JIKHUG + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.7740 -1.0594 3.1673 N.3 1 JIKH -0.4691 + 2 C1 0.5635 -2.3383 2.6712 C.2 1 JIKH 0.6900 + 3 O1 1.1123 -2.7947 1.6720 O.2 1 JIKH -0.5700 + 4 N2 -0.3336 -3.1024 3.3691 N.3 1 JIKH -0.4900 + 5 C2 -1.0756 -2.7068 4.4491 C.2 1 JIKH 0.6156 + 6 O2 -1.8865 -3.4671 4.9685 O.2 1 JIKH -0.5700 + 7 C3 -0.8373 -1.3152 4.9201 C.2 1 JIKH 0.1044 + 8 I1 -1.8764 -0.5860 6.5215 I 1 JIKH -0.0900 + 9 C4 0.0618 -0.5790 4.2545 C.2 1 JIKH -0.0410 + 10 C5 1.7108 -0.1948 2.4395 C.3 1 JIKH 0.5801 + 11 C6 0.9956 0.5716 1.3181 C.3 1 JIKH 0.0000 + 12 C7 1.9513 1.5377 0.6303 C.3 1 JIKH 0.2800 + 13 O3 2.8938 0.7907 -0.1448 O.3 1 JIKH -0.6800 + 14 C8 2.6973 2.4084 1.6490 C.3 1 JIKH 0.2800 + 15 O4 3.7204 3.1484 0.9801 O.3 1 JIKH -0.6800 + 16 C9 3.3095 1.5294 2.7398 C.3 1 JIKH 0.2800 + 17 O5 2.3064 0.7281 3.3646 O.3 1 JIKH -0.5600 + 18 H1 -0.4967 -4.0346 3.0213 H 1 JIKH 0.3700 + 19 H2 0.2726 0.4448 4.5524 H 1 JIKH 0.1500 + 20 H3 2.5077 -0.8248 2.0236 H 1 JIKH 0.0000 + 21 H4 0.1628 1.1477 1.7409 H 1 JIKH 0.0000 + 22 H5 0.5768 -0.1351 0.5923 H 1 JIKH 0.0000 + 23 H6 1.4076 2.1733 -0.0771 H 1 JIKH 0.0000 + 24 H7 3.6475 1.3901 -0.3178 H 1 JIKH 0.4000 + 25 H8 1.9944 3.1124 2.1110 H 1 JIKH 0.0000 + 26 H9 3.2840 3.8536 0.4685 H 1 JIKH 0.4000 + 27 H10 4.1145 0.8935 2.3509 H 1 JIKH 0.0000 + 28 H11 3.7657 2.1622 3.5090 H 1 JIKH 0.0000 +@BOND + 1 1 2 am + 2 1 9 1 + 3 1 10 1 + 4 2 3 2 + 5 2 4 am + 6 4 5 am + 7 4 18 1 + 8 5 6 2 + 9 5 7 1 + 10 7 8 1 + 11 7 9 2 + 12 9 19 1 + 13 10 11 1 + 14 10 17 1 + 15 10 20 1 + 16 11 12 1 + 17 11 21 1 + 18 11 22 1 + 19 12 13 1 + 20 12 14 1 + 21 12 23 1 + 22 13 24 1 + 23 14 15 1 + 24 14 16 1 + 25 14 25 1 + 26 15 26 1 + 27 16 17 1 + 28 16 27 1 + 29 16 28 1 +@SUBSTRUCTURE + 1 JIKH 1 +@COMMENT +COMMENT 1-(2-DEOXY-BETA-D-RIBOPYRANOSYL)-5-IODO-URACIL +@MOLECULE +JILWUW + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 7.5009 1.5209 2.9574 N.3 1 JILW -0.7750 + 2 N2 8.0398 1.5881 4.1949 N.2 1 JILW -0.7750 + 3 C1 7.0104 1.5997 5.0784 C.2 1 JILW 0.3670 + 4 C2 4.4624 1.5443 4.8824 C.2 1 JILW -0.1090 + 5 C3 3.4902 1.4840 3.8701 C.2 1 JILW 0.1330 + 6 C4 3.8325 1.4328 2.5022 C.2 1 JILW -0.1500 + 7 C5 5.1707 1.4412 2.0969 C.2 1 JILW -0.1090 + 8 C6 6.1603 1.5014 3.0910 C.2 1 JILW 0.2340 + 9 C7 5.7857 1.5491 4.4396 C.2 1 JILW -0.0410 + 10 N3 7.2716 1.6302 6.4790 N.2 1 JILW 0.9480 + 11 O1 8.2813 2.2234 6.8928 O.3 1 JILW -0.5200 + 12 O2 6.4173 1.0887 7.2060 O.2 1 JILW -0.5200 + 13 N4 2.0722 1.4766 4.2506 N.2 1 JILW 0.9070 + 14 O3 1.7912 1.6105 5.4506 O.3 1 JILW -0.5200 + 15 O4 1.2304 1.3398 3.3497 O.2 1 JILW -0.5200 + 16 H1 4.2233 1.5831 5.9384 H 1 JILW 0.1500 + 17 H2 3.0647 1.3868 1.7329 H 1 JILW 0.1500 + 18 H3 5.4765 1.4038 1.0596 H 1 JILW 0.1500 +@BOND + 1 1 8 1 + 2 1 2 1 + 3 2 3 2 + 4 3 10 am + 5 3 9 1 + 6 4 16 1 + 7 4 9 1 + 8 4 5 2 + 9 5 13 1 + 10 5 6 1 + 11 6 17 1 + 12 6 7 2 + 13 7 18 1 + 14 7 8 1 + 15 8 9 2 + 16 10 12 2 + 17 10 11 1 + 18 13 15 2 + 19 13 14 1 +@SUBSTRUCTURE + 1 JILW 1 +@COMMENT +COMMENT THIOMORPHOLINIUM 3,5-DINITROINDAZOLE +@MOLECULE +JINDAL + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.5944 1.9423 10.0748 S.3 1 UNCH 1.3328 + 2 O1 3.3401 4.3458 9.2268 O.3 1 UNCH -0.3170 + 3 O2 2.9785 0.9689 10.9524 O.3 1 UNCH -0.6500 + 4 O3 4.9593 2.3857 10.3025 O.3 1 UNCH -0.6500 + 5 N1 2.6367 3.3636 10.0198 N.3 1 UNCH -0.4200 + 6 C1 -1.4046 2.8425 8.8455 C.2 1 UNCH -0.1500 + 7 C2 -0.5072 3.4409 7.9629 C.2 1 UNCH -0.1500 + 8 C3 0.8239 3.6334 8.3420 C.2 1 UNCH -0.1500 + 9 C4 1.2631 3.2372 9.6110 C.2 1 UNCH 0.1990 + 10 C5 0.3567 2.6302 10.4857 C.2 1 UNCH -0.1500 + 11 C6 -0.9733 2.4362 10.1067 C.2 1 UNCH -0.1500 + 12 C7 3.4970 1.3344 8.4000 C.3 1 UNCH 0.1052 + 13 H1 -2.4407 2.6933 8.5513 H 1 UNCH 0.1500 + 14 H2 -0.8432 3.7592 6.9792 H 1 UNCH 0.1500 + 15 H3 1.5067 4.0998 7.6375 H 1 UNCH 0.1500 + 16 H4 0.6810 2.3059 11.4725 H 1 UNCH 0.1500 + 17 H5 -1.6699 1.9669 10.7970 H 1 UNCH 0.1500 + 18 H6 4.1913 4.4641 9.7011 H 1 UNCH 0.4000 + 19 H7 2.4742 1.0227 8.1844 H 1 UNCH 0.0000 + 20 H8 4.1624 0.4711 8.3240 H 1 UNCH 0.0000 + 21 H9 3.8310 2.1129 7.7123 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 1 12 1 + 5 2 5 1 + 6 2 18 1 + 7 5 9 1 + 8 6 7 2 + 9 6 11 1 + 10 6 13 1 + 11 7 8 1 + 12 7 14 1 + 13 8 9 2 + 14 8 15 1 + 15 9 10 1 + 16 10 11 2 + 17 10 16 1 + 18 11 17 1 + 19 12 19 1 + 20 12 20 1 + 21 12 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-METHANESULFONYL-N-PHENYLHYDROXYLAMINE +@MOLECULE +JINDOZ + 33 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.1445 0.7246 3.0597 S.3 1 JIND 1.6337 + 2 O1 6.2054 2.0372 2.0725 O.3 1 JIND -0.2662 + 3 O2 7.2765 -0.0812 2.6264 O.3 1 JIND -0.8167 + 4 O3 4.8283 0.1328 2.8193 O.3 1 JIND -0.8167 + 5 O4 6.2672 1.3344 4.3814 O.3 1 JIND -0.8167 + 6 N1 2.5351 2.1975 -2.0020 N.3 1 JIND 0.0332 + 7 N2 3.5255 3.5010 2.3619 N.3 1 JIND -0.8730 + 8 C1 1.5211 2.9108 -1.3965 C.2 1 JIND -0.3016 + 9 C2 1.9429 3.2311 -0.1287 C.2 1 JIND -0.1810 + 10 C3 3.2400 2.6992 0.0357 C.2 1 JIND 0.0000 + 11 C4 4.0953 2.7525 1.1502 C.2 1 JIND 0.3640 + 12 C5 5.3262 2.0952 1.0290 C.2 1 JIND 0.0825 + 13 C6 5.6999 1.4707 -0.1706 C.2 1 JIND -0.1500 + 14 C7 4.8457 1.4426 -1.2833 C.2 1 JIND -0.1500 + 15 C8 3.6045 2.0658 -1.1413 C.2 1 JIND -0.1516 + 16 C9 1.3338 3.9716 0.9988 C.3 1 JIND 0.1810 + 17 C10 2.4601 4.5464 1.8956 C.3 1 JIND 0.5030 + 18 C11 2.9035 2.4719 3.2991 C.3 1 JIND 0.5030 + 19 C12 4.6312 4.2588 3.0805 C.3 1 JIND 0.5030 + 20 H1 2.5018 1.8166 -2.9389 H 1 JIND 0.2700 + 21 H2 0.6001 3.1121 -1.9286 H 1 JIND 0.1500 + 22 H3 6.6632 0.9622 -0.2250 H 1 JIND 0.1500 + 23 H4 5.1367 0.9323 -2.1962 H 1 JIND 0.1500 + 24 H5 0.6911 3.3019 1.5810 H 1 JIND 0.0000 + 25 H6 0.7102 4.7928 0.6292 H 1 JIND 0.0000 + 26 H7 3.0125 5.3267 1.3544 H 1 JIND 0.0000 + 27 H8 2.0323 4.9947 2.8000 H 1 JIND 0.0000 + 28 H9 2.3141 1.7540 2.7214 H 1 JIND 0.0000 + 29 H10 2.2520 3.0083 3.9965 H 1 JIND 0.0000 + 30 H11 3.6830 1.9798 3.8769 H 1 JIND 0.0000 + 31 H12 5.2766 3.5738 3.6269 H 1 JIND 0.0000 + 32 H13 4.1598 4.9308 3.8056 H 1 JIND 0.0000 + 33 H14 5.1954 4.8445 2.3480 H 1 JIND 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 2 12 1 + 6 6 20 1 + 7 6 15 1 + 8 6 8 1 + 9 7 19 1 + 10 7 18 1 + 11 7 17 1 + 12 7 11 1 + 13 8 21 1 + 14 8 9 2 + 15 9 16 1 + 16 9 10 1 + 17 10 15 2 + 18 10 11 1 + 19 11 12 2 + 20 12 13 1 + 21 13 22 1 + 22 13 14 2 + 23 14 23 1 + 24 14 15 1 + 25 16 25 1 + 26 16 24 1 + 27 16 17 1 + 28 17 27 1 + 29 17 26 1 + 30 18 30 1 + 31 18 29 1 + 32 18 28 1 + 33 19 33 1 + 34 19 32 1 + 35 19 31 1 +@SUBSTRUCTURE + 1 JIND 1 +@COMMENT +COMMENT (1,3,4,5-TETRAHYDRO-5,5-DIMETHYLPYRROLO(4,3,2-DE)QUINOLINIO +@MOLECULE +JIRJID + 13 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8895 1.9994 1.8109 S.3 1 UNCH 1.2118 + 2 O1 1.8178 1.4462 0.8449 O.3 1 UNCH -0.6500 + 3 O2 0.9062 3.4141 2.1262 O.3 1 UNCH -0.6500 + 4 C1 1.1006 1.1078 3.3304 C.3 1 UNCH 0.1052 + 5 C2 -0.7160 1.5684 1.3306 C.2 1 UNCH -0.1670 + 6 C3 -1.1820 2.0951 0.1900 C.2 1 UNCH -0.0850 + 7 C4 -2.4856 1.7992 -0.2829 C.1 1 UNCH 0.4921 + 8 N1 -3.5547 1.5429 -0.6499 N.1 1 UNCH -0.5571 + 9 H1 2.1010 1.3223 3.7128 H 1 UNCH 0.0000 + 10 H2 1.0008 0.0385 3.1342 H 1 UNCH 0.0000 + 11 H3 0.3500 1.4433 4.0488 H 1 UNCH 0.0000 + 12 H4 -1.2907 0.8967 1.9533 H 1 UNCH 0.1500 + 13 H5 -0.5782 2.7674 -0.4129 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 4 9 1 + 6 4 10 1 + 7 4 11 1 + 8 5 6 2 + 9 5 12 1 + 10 6 7 1 + 11 6 13 1 + 12 7 8 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-1-METHYLSULFONYL-2-CYANOETHENE (FOR STEREOISOMER SEE JI +@MOLECULE +JISZAM + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.6435 1.7886 11.3778 O.3 1 JISZ -0.3625 + 2 O2 -4.0902 0.9720 9.4927 O.3 1 JISZ -0.6800 + 3 N1 -2.9808 -0.7478 8.1291 N.3 1 JISZ -1.0120 + 4 C1 -1.7389 1.0376 9.1788 C.2 1 JISZ -0.1435 + 5 C2 -1.1000 1.8210 10.1282 C.2 1 JISZ 0.0825 + 6 C3 0.0087 2.5606 9.7170 C.2 1 JISZ -0.1500 + 7 C4 0.4452 2.5131 8.3800 C.2 1 JISZ -0.1500 + 8 C5 -0.2175 1.7301 7.4323 C.2 1 JISZ -0.1500 + 9 C6 -1.3096 0.9885 7.8472 C.2 1 JISZ -0.1435 + 10 C7 -2.2313 0.1020 7.0603 C.3 1 JISZ 0.6465 + 11 C8 -2.9406 0.1645 9.3712 C.3 1 JISZ 0.9265 + 12 C9 -0.9979 2.5793 12.3753 C.3 1 JISZ 0.2800 + 13 C10 -1.5647 -0.7468 5.9851 C.3 1 JISZ 0.0000 + 14 C11 -4.4037 -1.0340 7.7133 C.3 1 JISZ 0.5030 + 15 C12 -2.2777 -2.0491 8.4723 C.3 1 JISZ 0.5030 + 16 H1 -3.8737 1.6492 10.1625 H 1 JISZ 0.4000 + 17 H2 0.5608 3.1967 10.4043 H 1 JISZ 0.1500 + 18 H3 1.3087 3.1066 8.0804 H 1 JISZ 0.1500 + 19 H4 0.1266 1.7239 6.4013 H 1 JISZ 0.1500 + 20 H5 -2.9885 0.7459 6.5931 H 1 JISZ 0.0000 + 21 H6 -2.8519 -0.4698 10.2605 H 1 JISZ 0.0000 + 22 H7 -1.5433 2.4409 13.3137 H 1 JISZ 0.0000 + 23 H8 0.0329 2.2462 12.5345 H 1 JISZ 0.0000 + 24 H9 -1.0369 3.6430 12.1188 H 1 JISZ 0.0000 + 25 H10 -2.2796 -1.4312 5.5174 H 1 JISZ 0.0000 + 26 H11 -1.1619 -0.1071 5.1915 H 1 JISZ 0.0000 + 27 H12 -0.7239 -1.3295 6.3760 H 1 JISZ 0.0000 + 28 H13 -4.9000 -0.1010 7.4306 H 1 JISZ 0.0000 + 29 H14 -4.3802 -1.7103 6.8537 H 1 JISZ 0.0000 + 30 H15 -4.9228 -1.5080 8.5519 H 1 JISZ 0.0000 + 31 H16 -1.2412 -1.8378 8.7509 H 1 JISZ 0.0000 + 32 H17 -2.8061 -2.5184 9.3085 H 1 JISZ 0.0000 + 33 H18 -2.3179 -2.7137 7.6049 H 1 JISZ 0.0000 +@BOND + 1 1 5 1 + 2 1 12 1 + 3 2 11 1 + 4 2 16 1 + 5 3 10 1 + 6 3 11 1 + 7 3 14 1 + 8 3 15 1 + 9 4 5 2 + 10 4 9 1 + 11 4 11 1 + 12 5 6 1 + 13 6 7 2 + 14 6 17 1 + 15 7 8 1 + 16 7 18 1 + 17 8 9 2 + 18 8 19 1 + 19 9 10 1 + 20 10 13 1 + 21 10 20 1 + 22 11 21 1 + 23 12 22 1 + 24 12 23 1 + 25 12 24 1 + 26 13 25 1 + 27 13 26 1 + 28 13 27 1 + 29 14 28 1 + 30 14 29 1 + 31 14 30 1 + 32 15 31 1 + 33 15 32 1 + 34 15 33 1 +@SUBSTRUCTURE + 1 JISZ 1 +@COMMENT +COMMENT RAC-1H-1-HYDROXY-2,3-DIHYDRO-2,2,3-TRIMETHYL-7-METHOXYISOIN +@MOLECULE +JITMII + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.0668 11.2037 2.3014 S.3 1 JITM 1.5007 + 2 O1 1.4248 10.9041 1.4684 O.3 1 JITM -0.4637 + 3 C1 1.2280 9.9395 0.4011 C.3 1 JITM 0.4182 + 4 C2 -0.2957 9.9673 0.1040 C.2 1 JITM -0.0382 + 5 C3 -0.9718 10.6050 1.0772 C.2 1 JITM -0.1670 + 6 O2 0.0359 10.3306 3.4523 O.3 1 JITM -0.6500 + 7 O3 -0.0892 12.6367 2.4150 O.3 1 JITM -0.6500 + 8 C4 1.7563 8.5797 0.9150 C.3 1 JITM 1.0200 + 9 F1 0.9635 8.0580 1.8778 F 1 JITM -0.3400 + 10 F2 1.8569 7.6509 -0.0627 F 1 JITM -0.3400 + 11 F3 2.9983 8.7093 1.4450 F 1 JITM -0.3400 + 12 C5 2.0827 10.4836 -0.7477 C.3 1 JITM 0.0000 + 13 N1 -0.8887 9.4658 -1.0764 N.3 1 JITM -0.8382 + 14 C6 -2.3312 9.6472 -1.3761 C.3 1 JITM 0.3691 + 15 C7 -3.1015 8.4088 -0.9171 C.3 1 JITM 0.0000 + 16 C8 -2.5500 7.1442 -1.5794 C.3 1 JITM 0.0000 + 17 C9 -1.0301 7.0466 -1.4288 C.3 1 JITM 0.0000 + 18 C10 -0.3513 8.3433 -1.8722 C.3 1 JITM 0.3691 + 19 H1 -2.0280 10.7919 1.1405 H 1 JITM 0.1500 + 20 H2 3.1140 10.6506 -0.4143 H 1 JITM 0.0000 + 21 H3 1.7093 11.4584 -1.0839 H 1 JITM 0.0000 + 22 H4 2.1186 9.8180 -1.6122 H 1 JITM 0.0000 + 23 H5 -2.7385 10.5524 -0.9146 H 1 JITM 0.0000 + 24 H6 -2.4591 9.7863 -2.4575 H 1 JITM 0.0000 + 25 H7 -4.1639 8.5194 -1.1603 H 1 JITM 0.0000 + 26 H8 -3.0271 8.3070 0.1724 H 1 JITM 0.0000 + 27 H9 -3.0264 6.2575 -1.1468 H 1 JITM 0.0000 + 28 H10 -2.8055 7.1565 -2.6463 H 1 JITM 0.0000 + 29 H11 -0.7835 6.8387 -0.3804 H 1 JITM 0.0000 + 30 H12 -0.6542 6.2070 -2.0237 H 1 JITM 0.0000 + 31 H13 -0.5551 8.5245 -2.9356 H 1 JITM 0.0000 + 32 H14 0.7291 8.2496 -1.7984 H 1 JITM 0.0000 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 5 1 + 4 1 2 1 + 5 2 3 1 + 6 3 12 1 + 7 3 8 1 + 8 3 4 1 + 9 4 13 1 + 10 4 5 2 + 11 5 19 1 + 12 8 11 1 + 13 8 10 1 + 14 8 9 1 + 15 12 22 1 + 16 12 21 1 + 17 12 20 1 + 18 13 18 1 + 19 13 14 1 + 20 14 24 1 + 21 14 23 1 + 22 14 15 1 + 23 15 26 1 + 24 15 25 1 + 25 15 16 1 + 26 16 28 1 + 27 16 27 1 + 28 16 17 1 + 29 17 30 1 + 30 17 29 1 + 31 17 18 1 + 32 18 32 1 + 33 18 31 1 +@SUBSTRUCTURE + 1 JITM 1 +@COMMENT +COMMENT 5-METHYL-4-(1-PIPERIDYL)-5-TRIFLUOROMETHYL-1,2-OXATHIOLE +@MOLECULE +JIWKOP + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.8641 -1.5209 6.8512 N.2 1 JIWK 0.5710 + 2 O1 4.3190 -2.2872 7.7680 O.3 1 JIWK -0.7500 + 3 C1 4.6701 -0.6160 6.1628 C.2 1 JIWK 0.0895 + 4 C2 4.0916 0.2123 5.1943 C.2 1 JIWK 0.0825 + 5 O2 4.8602 1.1138 4.5023 O.3 1 JIWK -0.5325 + 6 C3 2.7309 0.1355 4.9085 C.2 1 JIWK 0.0825 + 7 O3 2.2379 0.9729 3.9471 O.3 1 JIWK -0.5325 + 8 C4 1.9213 -0.7625 5.5792 C.2 1 JIWK -0.1500 + 9 C5 2.5043 -1.5792 6.5459 C.2 1 JIWK -0.0605 + 10 H1 4.2463 1.5422 3.8721 H 1 JIWK 0.4500 + 11 H2 1.2905 0.7865 3.8227 H 1 JIWK 0.4500 + 12 H3 0.8594 -0.8460 5.3765 H 1 JIWK 0.1500 + 13 H4 1.9738 -2.3135 7.1343 H 1 JIWK 0.1500 + 14 C1B 6.0867 -0.6160 6.4757 C.2 1 JIWK 0.0895 + 15 N1B 6.8927 -1.5209 5.7874 N.2 1 JIWK 0.5710 + 16 C2B 6.6652 0.2124 7.4442 C.2 1 JIWK 0.0825 + 17 O1B 6.4378 -2.2872 4.8706 O.3 1 JIWK -0.7500 + 18 C5B 8.2526 -1.5792 6.0926 C.2 1 JIWK -0.0605 + 19 O2B 5.8966 1.1139 8.1362 O.3 1 JIWK -0.5325 + 20 C3B 8.0259 0.1356 7.7300 C.2 1 JIWK 0.0825 + 21 C4B 8.8356 -0.7624 7.0593 C.2 1 JIWK -0.1500 + 22 H4B 8.7831 -2.3135 5.5043 H 1 JIWK 0.1500 + 23 H1B 6.5105 1.5423 8.7664 H 1 JIWK 0.4500 + 24 O3B 8.5190 0.9730 8.6914 O.3 1 JIWK -0.5325 + 25 H3B 9.8975 -0.8459 7.2620 H 1 JIWK 0.1500 + 26 H2B 9.4663 0.7867 8.8158 H 1 JIWK 0.4500 +@BOND + 1 1 9 2 + 2 1 3 1 + 3 1 2 1 + 4 3 14 1 + 5 3 4 2 + 6 4 6 1 + 7 4 5 1 + 8 5 10 1 + 9 6 8 2 + 10 6 7 1 + 11 7 11 1 + 12 8 12 1 + 13 8 9 1 + 14 9 13 1 + 15 14 16 2 + 16 14 15 1 + 17 15 18 2 + 18 15 17 1 + 19 16 20 1 + 20 16 19 1 + 21 18 22 1 + 22 18 21 1 + 23 19 23 1 + 24 20 24 1 + 25 20 21 2 + 26 21 25 1 + 27 24 26 1 +@SUBSTRUCTURE + 1 JIWK 1 +@COMMENT +COMMENT ORELLANINE MONOHYDRATE 3,3',4,4'-TETRAHYDROXY-2,2'-BIPYRIDI +@MOLECULE +JIXBAT + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.4713 0.6008 1.0585 C.2 1 UNCH 0.2360 + 2 C2 2.2282 -0.2816 -0.0536 C.2 1 UNCH 0.3038 + 3 C3 2.8967 -1.0806 -1.1007 C.2 1 UNCH 0.0862 + 4 C4 2.1519 -1.7823 -2.0536 C.2 1 UNCH -0.1500 + 5 C5 2.8095 -2.5276 -3.0331 C.2 1 UNCH -0.1500 + 6 C6 4.1999 -2.5672 -3.0525 C.2 1 UNCH 0.0825 + 7 C7 4.9500 -1.8728 -2.1068 C.2 1 UNCH -0.1500 + 8 C8 4.2950 -1.1249 -1.1247 C.2 1 UNCH -0.1500 + 9 C9 -0.0837 1.8115 0.8055 C.2 1 UNCH 0.1767 + 10 C10 0.5296 0.1023 2.4057 C.1 1 UNCH 0.4921 + 11 C11 -0.0294 3.8590 1.9102 C.3 1 UNCH 0.2800 + 12 N1 0.9366 -0.1825 0.0111 N.2 1 UNCH -0.6210 + 13 N2 -0.2220 2.3313 -0.4729 N.3 1 UNCH -0.9000 + 14 N3 0.6243 -0.3124 3.4874 N.1 1 UNCH -0.5571 + 15 O1 -0.6274 2.5658 1.8274 O.3 1 UNCH -0.3567 + 16 O2 4.7978 -3.3085 -4.0275 O.3 1 UNCH -0.5325 + 17 H1 2.8926 0.2325 0.6680 H 1 UNCH 0.0600 + 18 H2 1.0652 -1.7569 -2.0385 H 1 UNCH 0.1500 + 19 H3 2.2391 -3.0773 -3.7770 H 1 UNCH 0.1500 + 20 H4 6.0352 -1.9023 -2.1185 H 1 UNCH 0.1500 + 21 H5 4.8832 -0.5846 -0.3874 H 1 UNCH 0.1500 + 22 H6 -0.3369 4.4893 1.0695 H 1 UNCH 0.0000 + 23 H7 1.0630 3.7880 1.9578 H 1 UNCH 0.0000 + 24 H8 -0.3803 4.3321 2.8321 H 1 UNCH 0.0000 + 25 H9 5.7612 -3.2590 -3.9152 H 1 UNCH 0.4500 + 26 H10 -1.1388 2.7593 -0.5767 H 1 UNCH 0.4000 + 27 H11 -0.0848 1.5851 -1.1587 H 1 UNCH 0.4000 +@BOND + 1 1 9 2 + 2 1 10 1 + 3 1 12 1 + 4 2 3 1 + 5 2 12 2 + 6 2 17 1 + 7 3 4 1 + 8 3 8 2 + 9 4 5 2 + 10 4 18 1 + 11 5 6 1 + 12 5 19 1 + 13 6 7 2 + 14 6 16 1 + 15 7 8 1 + 16 7 20 1 + 17 8 21 1 + 18 9 13 1 + 19 9 15 1 + 20 10 14 3 + 21 11 15 1 + 22 11 22 1 + 23 11 23 1 + 24 11 24 1 + 25 13 26 1 + 26 13 27 1 + 27 16 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E,E)-4-AMINO-3-CYANO-1-(4-HYDROXYPHENYL)-4-METHOXY-2-AZA-1 +@MOLECULE +JIYJAC + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 7.5240 0.7865 8.1681 O.3 1 UNCH -0.2267 + 2 O2 9.4234 1.3728 7.0132 O.2 1 UNCH -0.5700 + 3 O3 5.0777 0.4865 9.3821 O.3 1 UNCH -0.3567 + 4 F1 9.9271 -2.7965 9.8860 F 1 UNCH -0.1495 + 5 F2 8.2401 -3.9591 11.4384 F 1 UNCH -0.1495 + 6 F3 5.8315 -3.2910 11.9677 F 1 UNCH -0.1495 + 7 F4 4.4441 -1.3753 11.0511 F 1 UNCH -0.1495 + 8 C1 8.4703 -1.0624 9.1927 C.2 1 UNCH 0.0000 + 9 C2 7.2860 -0.2707 9.0476 C.2 1 UNCH 0.0767 + 10 C3 6.0846 -0.4421 9.6225 C.2 1 UNCH 0.0767 + 11 C4 5.7174 -1.4636 10.5879 C.2 1 UNCH 0.1495 + 12 C5 6.4487 -2.4775 11.0745 C.2 1 UNCH 0.1495 + 13 C6 7.8112 -2.8490 10.7890 C.2 1 UNCH 0.1495 + 14 C7 8.6924 -2.2458 9.9815 C.2 1 UNCH 0.1495 + 15 C8 9.4196 -0.5185 8.4333 C.2 1 UNCH -0.1356 + 16 C9 8.8258 0.6457 7.7874 C.2 1 UNCH 0.7056 + 17 C10 4.2278 0.0668 8.3137 C.3 1 UNCH 0.2800 + 18 H1 3.4689 0.8402 8.1640 H 1 UNCH 0.0000 + 19 H2 3.7171 -0.8703 8.5588 H 1 UNCH 0.0000 + 20 H3 4.7932 -0.0425 7.3821 H 1 UNCH 0.0000 + 21 H4 10.4387 -0.8265 8.2791 H 1 UNCH 0.1500 +@BOND + 1 1 9 1 + 2 1 16 1 + 3 2 16 2 + 4 3 10 1 + 5 3 17 1 + 6 4 14 1 + 7 5 13 1 + 8 6 12 1 + 9 7 11 1 + 10 8 9 1 + 11 8 14 1 + 12 8 15 2 + 13 9 10 2 + 14 10 11 1 + 15 11 12 2 + 16 12 13 1 + 17 13 14 2 + 18 15 16 1 + 19 15 21 1 + 20 17 18 1 + 21 17 19 1 + 22 17 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,5,6,7-TETRAFLUORO-8-METHOXY-2H-CYCLOHEPTA(B)FURAN-2-ONE +@MOLECULE +JIYREO + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.4217 0.4265 7.0114 N.3 1 JIYR -0.7640 + 2 C1 3.3340 0.5457 7.9918 C.2 1 JIYR 0.6500 + 3 N2 2.8733 1.4360 8.8736 N.2 1 JIYR -0.7000 + 4 C2 1.6474 1.9188 8.4764 C.2 1 JIYR 0.2000 + 5 C3 1.3342 1.3007 7.2909 C.2 1 JIYR 0.4420 + 6 C4 2.5912 -0.4861 5.8685 C.3 1 JIYR 0.5140 + 7 C5 3.2170 0.2202 4.6812 C.3 1 JIYR 0.0000 + 8 N3 0.1828 1.4788 6.4973 N.2 1 JIYR 0.9480 + 9 O1 -0.6698 2.2369 6.9693 O.3 1 JIYR -0.5200 + 10 O2 0.1354 0.8782 5.4218 O.2 1 JIYR -0.5200 + 11 H1 4.2768 0.0135 8.0598 H 1 JIYR 0.1500 + 12 H2 3.3710 1.7122 9.7201 H 1 JIYR 0.4500 + 13 H3 1.1509 2.6505 9.0918 H 1 JIYR 0.1500 + 14 H4 3.2509 -1.3003 6.1925 H 1 JIYR 0.0000 + 15 H5 1.6367 -0.9535 5.6141 H 1 JIYR 0.0000 + 16 H6 4.1970 0.6287 4.9485 H 1 JIYR 0.0000 + 17 H7 2.5969 1.0531 4.3377 H 1 JIYR 0.0000 + 18 H8 3.3509 -0.4767 3.8486 H 1 JIYR 0.0000 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 2 am + 4 2 11 1 + 5 2 3 2 + 6 3 12 1 + 7 3 4 1 + 8 4 13 1 + 9 4 5 2 + 10 5 8 1 + 11 6 15 1 + 12 6 14 1 + 13 6 7 1 + 14 7 18 1 + 15 7 17 1 + 16 7 16 1 + 17 8 10 2 + 18 8 9 1 +@SUBSTRUCTURE + 1 JIYR 1 +@COMMENT +COMMENT 1-ETHYL-5-NITROIMIDAZOLE HYDROCHLORIDE MONOHYDRATE (AT 100 +@MOLECULE +JIYTOA + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.1603 1.9543 10.5809 N.2 1 JIYT -0.6200 + 2 C1 3.4845 0.8193 10.2778 C.2 1 JIYT 0.1390 + 3 O1 3.4501 0.4653 9.0582 O.3 1 JIYT -0.8290 + 4 C2 2.8672 0.1044 11.3088 C.2 1 JIYT -0.1500 + 5 C3 2.9360 0.5385 12.6340 C.2 1 JIYT -0.1500 + 6 C4 3.6301 1.6989 12.9240 C.2 1 JIYT -0.1500 + 7 C5 4.2197 2.3640 11.8673 C.2 1 JIYT 0.1600 + 8 H1 2.3264 -0.8048 11.0625 H 1 JIYT 0.1500 + 9 H2 2.4495 -0.0327 13.4150 H 1 JIYT 0.1500 + 10 H3 3.7109 2.0742 13.9341 H 1 JIYT 0.1500 + 11 H4 4.7792 3.2794 12.0197 H 1 JIYT 0.1500 +@BOND + 1 1 7 1 + 2 1 2 2 + 3 2 4 1 + 4 2 3 1 + 5 4 8 1 + 6 4 5 2 + 7 5 9 1 + 8 5 6 1 + 9 6 10 1 + 10 6 7 2 + 11 7 11 1 +@SUBSTRUCTURE + 1 JIYT 1 +@COMMENT +COMMENT POTASSIUM 2-PYRIDONIDE MONOHYDRATE (AT 120 DEG.K) +@MOLECULE +JIZWUK + 37 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H1 1.8065 -0.5164 6.8299 H 1 UNCH 0.0000 + 2 H2 2.8251 -1.7272 6.1087 H 1 UNCH 0.0000 + 3 H3 1.0905 -1.7936 5.8168 H 1 UNCH 0.0000 + 4 H4 1.9736 -1.9891 3.3549 H 1 UNCH 0.0000 + 5 H5 3.0057 -0.6967 2.6842 H 1 UNCH 0.0000 + 6 H6 3.5938 -1.7070 3.9791 H 1 UNCH 0.0000 + 7 H7 4.1434 0.3233 5.3058 H 1 UNCH 0.0000 + 8 H8 3.4769 1.4263 4.1092 H 1 UNCH 0.0000 + 9 H9 2.9264 1.4975 5.7878 H 1 UNCH 0.0000 + 10 S1 -0.0001 1.4249 5.4013 S.3 1 UNCH 0.0340 + 11 N1 0.8118 0.4468 4.2546 N.3 1 UNCH -0.6340 + 12 SI1 0.5033 0.9201 2.5682 SI 1 UNCH 1.4573 + 13 CL1 2.0010 2.0328 1.7392 CL 1 UNCH -0.3701 + 14 CL2 0.2338 -0.6989 1.3452 CL 1 UNCH -0.3701 + 15 CL3 -1.1971 2.0301 2.2725 CL 1 UNCH -0.3701 + 16 C1 2.1207 -0.2235 4.6651 C.3 1 UNCH 0.2700 + 17 C2 1.9375 -1.1088 5.9245 C.3 1 UNCH 0.0000 + 18 C3 2.6946 -1.2024 3.6028 C.3 1 UNCH 0.0000 + 19 C4 3.2205 0.8189 4.9807 C.3 1 UNCH 0.0000 + 20 N1F -0.8117 0.4465 6.5480 N.3 1 UNCH -0.6340 + 21 SI1F -0.5033 0.9199 8.2344 SI 1 UNCH 1.4573 + 22 C1F -2.1205 -0.2241 6.1375 C.3 1 UNCH 0.2700 + 23 CL1F -2.0013 2.0322 9.0635 CL 1 UNCH -0.3701 + 24 CL2F -0.2335 -0.6991 9.4574 CL 1 UNCH -0.3701 + 25 CL3F 1.1968 2.0303 8.5302 CL 1 UNCH -0.3701 + 26 C2F -1.9370 -1.1092 4.8781 C.3 1 UNCH 0.0000 + 27 C3F -2.6942 -1.2031 7.1998 C.3 1 UNCH 0.0000 + 28 C4F -3.2205 0.8181 5.8219 C.3 1 UNCH 0.0000 + 29 H1F -1.8062 -0.5168 3.9727 H 1 UNCH 0.0000 + 30 H2F -2.8245 -1.7279 4.6939 H 1 UNCH 0.0000 + 31 H3F -1.0900 -1.7938 4.9857 H 1 UNCH 0.0000 + 32 H4F -1.9729 -1.9897 7.4477 H 1 UNCH 0.0000 + 33 H5F -3.0054 -0.6975 8.1184 H 1 UNCH 0.0000 + 34 H6F -3.5932 -1.7079 6.8234 H 1 UNCH 0.0000 + 35 H7F -4.1434 0.3223 5.4968 H 1 UNCH 0.0000 + 36 H8F -3.4771 1.4254 6.6934 H 1 UNCH 0.0000 + 37 H9F -2.9266 1.4969 5.0149 H 1 UNCH 0.0000 +@BOND + 1 1 17 1 + 2 2 17 1 + 3 3 17 1 + 4 4 18 1 + 5 5 18 1 + 6 6 18 1 + 7 7 19 1 + 8 8 19 1 + 9 9 19 1 + 10 10 11 1 + 11 10 20 1 + 12 11 12 1 + 13 11 16 1 + 14 12 13 1 + 15 12 14 1 + 16 12 15 1 + 17 16 17 1 + 18 16 18 1 + 19 16 19 1 + 20 20 21 1 + 21 20 22 1 + 22 21 23 1 + 23 21 24 1 + 24 21 25 1 + 25 22 26 1 + 26 22 27 1 + 27 22 28 1 + 28 26 29 1 + 29 26 30 1 + 30 26 31 1 + 31 27 32 1 + 32 27 33 1 + 33 27 34 1 + 34 28 35 1 + 35 28 36 1 + 36 28 37 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(T-BUTYL(TRICHLOROSILYL)AMINO)SULFANE (AT 213 DEG.K) +@MOLECULE +JOFDUD + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -1.0979 3.1305 3.3028 SI 1 UNCH 0.6415 + 2 CL1 0.3065 0.5352 3.0348 CL 1 UNCH -0.2900 + 3 C1 0.0238 1.9152 4.1213 C.3 1 UNCH 0.2095 + 4 C2 -0.3567 3.8971 1.7888 C.3 1 UNCH -0.0805 + 5 C3 -2.7928 2.4553 2.9863 C.3 1 UNCH -0.0805 + 6 N1 -1.3216 4.4423 4.4272 N.2 1 UNCH -0.7000 + 7 C4 -1.6976 5.4537 4.8801 C.1 1 UNCH 0.7870 + 8 O1 -2.0758 6.4690 5.3330 O.2 1 UNCH -0.4870 + 9 H1 -0.4060 1.5221 5.0469 H 1 UNCH 0.0000 + 10 H2 0.9979 2.3530 4.3568 H 1 UNCH 0.0000 + 11 H3 0.6154 4.3487 2.0096 H 1 UNCH 0.0000 + 12 H4 -0.2069 3.1521 1.0014 H 1 UNCH 0.0000 + 13 H5 -1.0049 4.6809 1.3845 H 1 UNCH 0.0000 + 14 H6 -2.7635 1.6389 2.2581 H 1 UNCH 0.0000 + 15 H7 -3.2415 2.0659 3.9054 H 1 UNCH 0.0000 + 16 H8 -3.4591 3.2283 2.5909 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 1 6 1 + 5 2 3 1 + 6 3 9 1 + 7 3 10 1 + 8 4 11 1 + 9 4 12 1 + 10 4 13 1 + 11 5 14 1 + 12 5 15 1 + 13 5 16 1 + 14 6 7 2 + 15 7 8 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CHLOROMETHYL-DIMETHYLSILYL-ISOCYANATE (AT -90 DEG.C) +@MOLECULE +KAFXIY + 25 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.1265 1.2811 3.6103 CL 1 UNCH -0.2900 + 2 CL2 1.0284 0.0138 1.1585 CL 1 UNCH -0.2900 + 3 O1 1.6819 -2.1503 3.9311 O.2 1 UNCH -0.5700 + 4 C1 4.4154 -2.9939 2.7767 C.3 1 UNCH -0.2000 + 5 C2 3.5425 -3.1521 1.5582 C.3 1 UNCH -0.2000 + 6 C3 3.4769 -1.8986 2.3753 C.3 1 UNCH -0.0760 + 7 C4 2.3117 -1.4917 3.1359 C.2 1 UNCH 0.5170 + 8 C5 2.3321 -0.0848 2.4345 C.3 1 UNCH 0.6330 + 9 C6 3.8319 -0.4830 1.9687 C.3 1 UNCH 0.1520 + 10 C7 4.1462 -0.2714 0.4713 C.3 1 UNCH -0.1760 + 11 C8 4.5514 1.0512 -0.1241 C.3 1 UNCH -0.2000 + 12 C9 5.5151 -0.1039 -0.1316 C.3 1 UNCH -0.2000 + 13 C10 4.9285 0.1005 2.8932 C.3 1 UNCH 0.0000 + 14 H1 5.4789 -2.8630 2.6144 H 1 UNCH 0.1000 + 15 H2 4.1707 -3.5865 3.6525 H 1 UNCH 0.1000 + 16 H3 4.0340 -3.1380 0.5925 H 1 UNCH 0.1000 + 17 H4 2.7167 -3.8539 1.6215 H 1 UNCH 0.1000 + 18 H5 3.4418 -0.8555 -0.1179 H 1 UNCH 0.1000 + 19 H6 4.1004 1.3421 -1.0674 H 1 UNCH 0.1000 + 20 H7 4.7681 1.8883 0.5289 H 1 UNCH 0.1000 + 21 H8 5.7132 -0.5902 -1.0815 H 1 UNCH 0.1000 + 22 H9 6.3883 -0.0340 0.5049 H 1 UNCH 0.1000 + 23 H10 4.7056 -0.0783 3.9515 H 1 UNCH 0.0000 + 24 H11 5.9002 -0.3639 2.6958 H 1 UNCH 0.0000 + 25 H12 5.0338 1.1809 2.7540 H 1 UNCH 0.0000 +@BOND + 1 1 8 1 + 2 2 8 1 + 3 3 7 2 + 4 4 5 1 + 5 4 6 1 + 6 4 14 1 + 7 4 15 1 + 8 5 6 1 + 9 5 16 1 + 10 5 17 1 + 11 6 7 1 + 12 6 9 1 + 13 7 8 1 + 14 8 9 1 + 15 9 10 1 + 16 9 13 1 + 17 10 11 1 + 18 10 12 1 + 19 10 18 1 + 20 11 12 1 + 21 11 19 1 + 22 11 20 1 + 23 12 21 1 + 24 12 22 1 + 25 13 23 1 + 26 13 24 1 + 27 13 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,5-DICHLORO-6-METHYL-6-CYCLOPROPYLSPIRO(2.3)HEXAN-4-ONE (A +@MOLECULE +KAGBOJ + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.1810 0.6051 1.8291 O.3 1 KAGB -0.1592 + 2 C1 6.4470 1.8678 1.3307 C.2 1 KAGB 0.0483 + 3 C2 7.6469 2.4648 1.3422 C.2 1 KAGB -0.1356 + 4 C3 8.7893 1.7485 1.9286 C.2 1 KAGB 0.4694 + 5 C4 9.5381 -0.3557 3.0413 C.2 1 KAGB -0.1500 + 6 C5 9.2518 -1.6272 3.5405 C.2 1 KAGB -0.1500 + 7 C6 7.9523 -2.1328 3.4617 C.2 1 KAGB -0.1500 + 8 C7 6.9358 -1.3687 2.8839 C.2 1 KAGB -0.1500 + 9 C8 7.2202 -0.0977 2.3847 C.2 1 KAGB 0.0825 + 10 C9 8.5170 0.4051 2.4639 C.2 1 KAGB 0.0862 + 11 O2 9.9041 2.2539 1.9631 O.2 1 KAGB -0.5700 + 12 C10 5.2742 2.5464 0.7478 C.2 1 KAGB 0.0284 + 13 C11 4.5752 3.5223 1.4937 C.2 1 KAGB 0.0825 + 14 C12 3.4666 4.1565 0.9264 C.2 1 KAGB -0.1500 + 15 C13 3.0530 3.8293 -0.3651 C.2 1 KAGB -0.1500 + 16 C14 3.7405 2.8675 -1.1058 C.2 1 KAGB -0.1500 + 17 C15 4.8522 2.2195 -0.5607 C.2 1 KAGB 0.0825 + 18 O3 5.0518 3.7818 2.7552 O.3 1 KAGB -0.3625 + 19 C16 4.3515 4.7335 3.5447 C.3 1 KAGB 0.2800 + 20 O4 5.5942 1.2712 -1.2210 O.3 1 KAGB -0.3625 + 21 C17 5.1648 0.8802 -2.5178 C.3 1 KAGB 0.2800 + 22 H1 7.8286 3.4534 0.9433 H 1 KAGB 0.1500 + 23 H2 10.5495 0.0399 3.1014 H 1 KAGB 0.1500 + 24 H3 10.0419 -2.2235 3.9907 H 1 KAGB 0.1500 + 25 H4 7.7308 -3.1237 3.8510 H 1 KAGB 0.1500 + 26 H5 5.9249 -1.7628 2.8227 H 1 KAGB 0.1500 + 27 H6 5.8481 0.1042 -2.8761 H 1 KAGB 0.0000 + 28 H7 4.1587 0.4492 -2.4885 H 1 KAGB 0.0000 + 29 H8 5.2174 1.7189 -3.2196 H 1 KAGB 0.0000 + 30 H9 3.3837 2.6503 -2.1071 H 1 KAGB 0.1500 + 31 H10 2.1894 4.3288 -0.7983 H 1 KAGB 0.1500 + 32 H11 2.9012 4.9118 1.4621 H 1 KAGB 0.1500 + 33 H12 4.8564 4.8003 4.5132 H 1 KAGB 0.0000 + 34 H13 4.3826 5.7266 3.0847 H 1 KAGB 0.0000 + 35 H14 3.3208 4.4129 3.7286 H 1 KAGB 0.0000 +@BOND + 1 1 9 1 + 2 1 2 1 + 3 2 12 1 + 4 2 3 2 + 5 3 22 1 + 6 3 4 1 + 7 4 11 2 + 8 4 10 1 + 9 5 23 1 + 10 5 10 1 + 11 5 6 2 + 12 6 24 1 + 13 6 7 1 + 14 7 25 1 + 15 7 8 2 + 16 8 26 1 + 17 8 9 1 + 18 9 10 2 + 19 12 17 1 + 20 12 13 2 + 21 13 18 1 + 22 13 14 1 + 23 14 32 1 + 24 14 15 2 + 25 15 31 1 + 26 15 16 1 + 27 16 30 1 + 28 16 17 2 + 29 17 20 1 + 30 18 19 1 + 31 19 35 1 + 32 19 34 1 + 33 19 33 1 + 34 20 21 1 + 35 21 29 1 + 36 21 28 1 + 37 21 27 1 +@SUBSTRUCTURE + 1 KAGB 1 +@COMMENT +COMMENT 2-(2,6-DIMETHOXYPHENYL)-4H-1-BENZOPYRAN-4-ONE ACETIC ACID S +@MOLECULE +KAKGOS + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.9555 5.6920 0.1288 S.3 1 UNCH -0.3185 + 2 N1 3.6109 7.8033 -0.0630 N.3 1 UNCH -0.4020 + 3 O1 3.2297 9.9580 0.8117 O.2 1 UNCH -0.5700 + 4 C1 1.9655 6.7069 -1.3306 C.2 1 UNCH 0.1015 + 5 C2 1.1526 6.5525 -2.4430 C.2 1 UNCH -0.1500 + 6 C3 1.2443 7.4908 -3.4757 C.2 1 UNCH -0.1500 + 7 C4 2.1325 8.5729 -3.3805 C.2 1 UNCH -0.1500 + 8 C5 2.9456 8.7251 -2.2557 C.2 1 UNCH -0.1500 + 9 C6 2.8570 7.7767 -1.2478 C.2 1 UNCH 0.1170 + 10 C7 3.3147 8.7523 0.8826 C.2 1 UNCH 0.5770 + 11 C8 3.0526 7.6845 1.9877 C.3 1 UNCH 0.0530 + 12 C9 3.3890 6.6502 0.8495 C.3 1 UNCH 0.4420 + 13 C10 4.6286 5.7732 0.9248 C.3 1 UNCH 0.0000 + 14 C11 1.6272 7.7462 2.5452 C.3 1 UNCH 0.0000 + 15 C12 4.0631 7.7650 3.1372 C.3 1 UNCH 0.0000 + 16 H1 0.4490 5.7286 -2.5105 H 1 UNCH 0.1500 + 17 H2 0.6130 7.3886 -4.3557 H 1 UNCH 0.1500 + 18 H3 2.1840 9.3021 -4.1860 H 1 UNCH 0.1500 + 19 H4 3.6273 9.5660 -2.1723 H 1 UNCH 0.1500 + 20 H5 4.8196 5.2538 -0.0218 H 1 UNCH 0.0000 + 21 H6 5.5289 6.3551 1.1490 H 1 UNCH 0.0000 + 22 H7 4.5214 5.0148 1.7081 H 1 UNCH 0.0000 + 23 H8 1.5060 8.6083 3.2109 H 1 UNCH 0.0000 + 24 H9 0.8775 7.8537 1.7546 H 1 UNCH 0.0000 + 25 H10 1.3951 6.8439 3.1208 H 1 UNCH 0.0000 + 26 H11 3.8570 8.6279 3.7804 H 1 UNCH 0.0000 + 27 H12 4.0171 6.8633 3.7570 H 1 UNCH 0.0000 + 28 H13 5.0898 7.8777 2.7747 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 12 1 + 3 2 9 1 + 4 2 10 am + 5 2 12 1 + 6 3 10 2 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 16 1 + 11 6 7 2 + 12 6 17 1 + 13 7 8 1 + 14 7 18 1 + 15 8 9 2 + 16 8 19 1 + 17 10 11 1 + 18 11 12 1 + 19 11 14 1 + 20 11 15 1 + 21 12 13 1 + 22 13 20 1 + 23 13 21 1 + 24 13 22 1 + 25 14 23 1 + 26 14 24 1 + 27 14 25 1 + 28 15 26 1 + 29 15 27 1 + 30 15 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,6,6-TRIMETHYL-2,3-BENZO-4-THIA-1-AZABICYCLO(3.2.0)HEPTAN- +@MOLECULE +KAMCUW + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 3.2723 3.0814 10.2464 BR 1 KAMB -0.1430 + 2 BR2 0.4975 2.1925 8.9922 BR 1 KAMB -0.1430 + 3 C1 1.4501 3.5559 9.9342 C.3 1 KAMB 0.2860 + 4 C2 0.7321 4.2676 11.0491 C.3 1 KAMB -0.2000 + 5 C3 1.0040 4.9893 9.7536 C.3 1 KAMB -0.0600 + 6 C4 2.1635 7.0251 10.6231 C.2 1 KAMB -0.0410 + 7 C5 1.9924 6.0846 9.6794 C.2 1 KAMB -0.0256 + 8 C6 2.8358 6.2398 8.4533 C.2 1 KAMB 0.6156 + 9 O1 2.6686 5.5196 7.4730 O.2 1 KAMB -0.5700 + 10 N1 3.7724 7.2290 8.4649 N.3 1 KAMB -0.4900 + 11 C7 3.8881 8.2059 9.4134 C.2 1 KAMB 0.6900 + 12 O2 4.6487 9.1546 9.2346 O.2 1 KAMB -0.5700 + 13 N2 3.0856 8.0498 10.5307 N.3 1 KAMB -0.4691 + 14 C8 0.6640 9.1473 13.9026 C.3 1 KAMB 0.2800 + 15 O3 -0.1511 8.9938 12.7414 O.3 1 KAMB -0.6800 + 16 C9 2.0752 9.6282 13.5470 C.3 1 KAMB 0.2800 + 17 O4 2.7583 8.5658 12.8397 O.3 1 KAMB -0.5600 + 18 C10 2.0898 10.8616 12.6406 C.3 1 KAMB 0.2800 + 19 O5 3.2074 11.6895 12.9792 O.3 1 KAMB -0.6800 + 20 C11 2.3030 10.2882 11.2626 C.3 1 KAMB 0.0000 + 21 C12 3.1743 9.0774 11.5626 C.3 1 KAMB 0.5801 + 22 H1 1.2957 4.5292 11.9377 H 1 KAMB 0.1000 + 23 H2 -0.2943 3.9923 11.2653 H 1 KAMB 0.1000 + 24 H3 0.1500 5.1586 9.1027 H 1 KAMB 0.1000 + 25 H4 4.3155 7.3512 7.6250 H 1 KAMB 0.3700 + 26 H5 4.2225 9.3846 11.6715 H 1 KAMB 0.0000 + 27 H6 1.5553 7.0101 11.5237 H 1 KAMB 0.1500 + 28 H7 2.6335 9.8046 14.4733 H 1 KAMB 0.0000 + 29 H8 1.1897 11.4771 12.7278 H 1 KAMB 0.0000 + 30 H9 3.2182 12.4405 12.3591 H 1 KAMB 0.4000 + 31 H10 2.7887 10.9741 10.5616 H 1 KAMB 0.0000 + 32 H11 1.3452 9.9796 10.8288 H 1 KAMB 0.0000 + 33 H12 0.1745 9.8683 14.5648 H 1 KAMB 0.0000 + 34 H13 0.7129 8.1748 14.4033 H 1 KAMB 0.0000 + 35 H14 -1.0052 8.6374 13.0439 H 1 KAMB 0.4000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 3 4 1 + 4 3 5 1 + 5 4 5 1 + 6 4 22 1 + 7 4 23 1 + 8 5 7 1 + 9 5 24 1 + 10 6 7 2 + 11 6 13 1 + 12 6 27 1 + 13 7 8 1 + 14 8 9 2 + 15 8 10 am + 16 10 11 am + 17 10 25 1 + 18 11 12 2 + 19 11 13 am + 20 13 21 1 + 21 14 15 1 + 22 14 16 1 + 23 14 33 1 + 24 14 34 1 + 25 15 35 1 + 26 16 17 1 + 27 16 18 1 + 28 16 28 1 + 29 17 21 1 + 30 18 19 1 + 31 18 20 1 + 32 18 29 1 + 33 19 30 1 + 34 20 21 1 + 35 20 31 1 + 36 20 32 1 + 37 21 26 1 +@SUBSTRUCTURE + 1 KAMB 1 +@COMMENT +COMMENT 1-(2-DEOXY-BETA-D-RIBOFURANOSYL)-5-((1S)-2,2-DIBROMOCYCLOPR +@MOLECULE +KAMJAJ + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 4.0276 1.5203 1.3119 CL 1 KAMJ -0.1770 + 2 C1 3.0345 1.7770 -0.0688 C.2 1 KAMJ 0.1770 + 3 C2 1.7786 1.1733 -0.1406 C.2 1 KAMJ -0.1500 + 4 C3 0.9713 1.3793 -1.2609 C.2 1 KAMJ -0.1500 + 5 C4 1.4360 2.1862 -2.2996 C.2 1 KAMJ 0.0862 + 6 C5 2.6884 2.8006 -2.2299 C.2 1 KAMJ -0.1500 + 7 C6 3.4915 2.5899 -1.1075 C.2 1 KAMJ -0.1500 + 8 C7 0.5913 2.4150 -3.4737 C.2 1 KAMJ -0.1432 + 9 C8 -0.5638 3.3792 -3.3845 C.3 1 KAMJ 0.3166 + 10 C9 -2.7689 2.4937 -4.2454 C.2 1 KAMJ 0.0365 + 11 C10 -3.4670 1.7359 -2.4203 C.2 1 KAMJ 0.3660 + 12 C11 1.8591 0.8089 -4.8396 C.3 1 KAMJ 0.0990 + 13 N1 0.7958 1.8106 -4.6253 N.2 1 KAMJ 0.5300 + 14 N2 -1.8401 2.6993 -3.2737 N.3 1 KAMJ 0.3140 + 15 N3 -3.8147 1.8869 -3.7313 N.2 1 KAMJ -0.5653 + 16 N4 -2.2636 2.2127 -2.0890 N.2 1 KAMJ -0.7068 + 17 O1 0.0618 2.0952 -5.6298 O.3 1 KAMJ -0.6330 + 18 H1 1.4207 0.5466 0.6726 H 1 KAMJ 0.1500 + 19 H2 -0.0096 0.9110 -1.3072 H 1 KAMJ 0.1500 + 20 H3 3.0453 3.4431 -3.0310 H 1 KAMJ 0.1500 + 21 H4 4.4682 3.0634 -1.0440 H 1 KAMJ 0.1500 + 22 H5 -0.5957 4.0454 -4.2531 H 1 KAMJ 0.0000 + 23 H6 -0.4601 4.0136 -2.4965 H 1 KAMJ 0.0000 + 24 H7 -2.6327 2.7916 -5.2764 H 1 KAMJ 0.1500 + 25 H8 -4.1093 1.2650 -1.6873 H 1 KAMJ 0.1500 + 26 H9 1.7242 0.3530 -5.8245 H 1 KAMJ 0.0000 + 27 H10 1.7818 0.0344 -4.0732 H 1 KAMJ 0.0000 + 28 H11 2.8273 1.3126 -4.8015 H 1 KAMJ 0.0000 +@BOND + 1 1 2 1 + 2 2 7 1 + 3 2 3 2 + 4 3 18 1 + 5 3 4 1 + 6 4 19 1 + 7 4 5 2 + 8 5 8 1 + 9 5 6 1 + 10 6 20 1 + 11 6 7 2 + 12 7 21 1 + 13 8 13 2 + 14 8 9 1 + 15 9 23 1 + 16 9 22 1 + 17 9 14 1 + 18 10 24 1 + 19 10 15 2 + 20 10 14 am + 21 11 25 1 + 22 11 16 2 + 23 11 15 am + 24 12 28 1 + 25 12 27 1 + 26 12 26 1 + 27 12 13 1 + 28 13 17 1 + 29 14 16 1 +@SUBSTRUCTURE + 1 KAMJ 1 +@COMMENT +COMMENT N-(1-(4-CHLOROPHENYL)-2-(1H-1,2,4-TRIAZOL-1-YL)ETHYLIDENE)M +@MOLECULE +KANWEB + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.5006 2.5985 5.2856 S.3 1 UNCH 0.4414 + 2 N1 6.3385 3.3333 3.8018 N.2 1 UNCH -0.5095 + 3 N2 4.9688 2.8412 5.8876 N.2 1 UNCH -0.5095 + 4 N3 7.6563 4.1806 0.9791 N.1 1 UNCH -0.5571 + 5 N4 2.8526 2.4546 8.2947 N.1 1 UNCH -0.5571 + 6 N5 4.0280 6.0709 -0.4657 N.1 1 UNCH -0.5571 + 7 N6 -0.3414 4.5009 6.1884 N.1 1 UNCH -0.5571 + 8 C1 5.0829 3.7857 3.7421 C.2 1 UNCH 0.2428 + 9 C2 4.2945 3.5024 4.9428 C.2 1 UNCH 0.2428 + 10 C3 4.5102 4.5007 2.6048 C.2 1 UNCH 0.0460 + 11 C4 2.9004 3.9223 5.0563 C.2 1 UNCH 0.0460 + 12 C5 3.0978 4.9012 2.7743 C.2 1 UNCH -0.1500 + 13 C6 2.3735 4.6409 3.8774 C.2 1 UNCH -0.1500 + 14 C7 5.1896 4.7947 1.4613 C.2 1 UNCH 0.1300 + 15 C8 2.1144 3.6898 6.1443 C.2 1 UNCH 0.1300 + 16 C9 6.5529 4.4392 1.2300 C.1 1 UNCH 0.4921 + 17 C10 2.5568 3.0034 7.3155 C.1 1 UNCH 0.4921 + 18 C11 4.5687 5.4976 0.3860 C.1 1 UNCH 0.4921 + 19 C12 0.7574 4.1282 6.1901 C.1 1 UNCH 0.4921 + 20 H1 2.5936 5.4395 1.9719 H 1 UNCH 0.1500 + 21 H2 1.3408 4.9894 3.8798 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 2 8 2 + 4 3 9 2 + 5 4 16 3 + 6 5 17 3 + 7 6 18 3 + 8 7 19 3 + 9 8 9 1 + 10 8 10 1 + 11 9 11 1 + 12 10 12 1 + 13 10 14 2 + 14 11 13 1 + 15 11 15 2 + 16 12 13 2 + 17 12 20 1 + 18 13 21 1 + 19 14 16 1 + 20 14 18 1 + 21 15 17 1 + 22 15 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,7-BIS(DICYANOMETHYLENE)-4,7-DIHYDRO-2,1,3-BENZOTHIADIAZOL +@MOLECULE +KANZOO + 40 43 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 0.7223 9.5045 4.5190 CL 1 UNCH -0.1770 + 2 CL2 2.7366 7.5498 8.8187 CL 1 UNCH -0.1770 + 3 CL3 4.6508 2.8111 7.0632 CL 1 UNCH -0.1770 + 4 N1 1.8548 7.1759 4.5328 N.2 1 UNCH -0.6200 + 5 C1 1.5215 8.2167 5.2958 C.2 1 UNCH 0.7970 + 6 N2 1.7744 8.3574 6.5885 N.2 1 UNCH -0.6200 + 7 C2 2.4282 7.3123 7.1349 C.2 1 UNCH 0.4870 + 8 N3 3.5080 5.1362 7.0964 N.2 1 UNCH -0.6200 + 9 C3 3.8233 4.1011 6.3196 C.2 1 UNCH 0.7970 + 10 N4 3.5506 3.9729 5.0249 N.2 1 UNCH -0.6200 + 11 C4 2.9082 5.0060 4.4462 C.2 1 UNCH 0.4100 + 12 C5 2.5031 6.1528 5.1452 C.2 1 UNCH 0.3100 + 13 C6 2.8448 6.1514 6.4921 C.2 1 UNCH 0.3100 + 14 N5 2.5128 4.8889 3.0930 N.3 1 UNCH -0.8691 + 15 C7 3.3948 4.0882 2.2552 C.3 1 UNCH 0.6491 + 16 C8 2.7395 3.8474 0.8791 C.3 1 UNCH 0.2800 + 17 C9 3.7863 4.2876 -0.0983 C.3 1 UNCH 0.2800 + 18 C10 4.6530 5.2645 0.6715 C.3 1 UNCH 0.2800 + 19 C11 4.1757 6.7197 0.5808 C.3 1 UNCH 0.2800 + 20 C12 3.6052 2.0155 -0.1842 C.3 1 UNCH 0.5600 + 21 C13 4.3209 0.8959 0.5586 C.3 1 UNCH 0.0000 + 22 C14 3.0872 1.5330 -1.5350 C.3 1 UNCH 0.0000 + 23 O1 2.4929 2.4673 0.5924 O.3 1 UNCH -0.5600 + 24 O2 4.5230 3.0923 -0.3921 O.3 1 UNCH -0.5600 + 25 O3 4.6027 4.8400 2.0485 O.3 1 UNCH -0.5600 + 26 O4 2.8046 6.8478 0.9565 O.3 1 UNCH -0.6800 + 27 H1 2.4453 5.8278 2.6863 H 1 UNCH 0.4000 + 28 H2 3.6464 3.1308 2.7247 H 1 UNCH 0.0000 + 29 H3 1.7979 4.3960 0.7724 H 1 UNCH 0.0000 + 30 H4 3.3908 4.6817 -1.0394 H 1 UNCH 0.0000 + 31 H5 5.7002 5.2103 0.3549 H 1 UNCH 0.0000 + 32 H6 4.2861 7.0941 -0.4416 H 1 UNCH 0.0000 + 33 H7 4.7614 7.3476 1.2599 H 1 UNCH 0.0000 + 34 H8 3.6434 0.0624 0.7716 H 1 UNCH 0.0000 + 35 H9 5.1798 0.5259 -0.0112 H 1 UNCH 0.0000 + 36 H10 4.7047 1.2549 1.5200 H 1 UNCH 0.0000 + 37 H11 2.3716 0.7125 -1.4162 H 1 UNCH 0.0000 + 38 H12 2.5656 2.3415 -2.0600 H 1 UNCH 0.0000 + 39 H13 3.9079 1.2048 -2.1814 H 1 UNCH 0.0000 + 40 H14 2.5874 7.7981 0.9137 H 1 UNCH 0.4000 +@BOND + 1 1 5 1 + 2 2 7 1 + 3 3 9 1 + 4 4 5 2 + 5 4 12 1 + 6 5 6 am + 7 6 7 2 + 8 7 13 1 + 9 8 9 2 + 10 8 13 1 + 11 9 10 am + 12 10 11 2 + 13 11 12 1 + 14 11 14 am + 15 12 13 2 + 16 14 15 1 + 17 14 27 1 + 18 15 16 1 + 19 15 25 1 + 20 15 28 1 + 21 16 17 1 + 22 16 23 1 + 23 16 29 1 + 24 17 18 1 + 25 17 24 1 + 26 17 30 1 + 27 18 19 1 + 28 18 25 1 + 29 18 31 1 + 30 19 26 1 + 31 19 32 1 + 32 19 33 1 + 33 20 21 1 + 34 20 22 1 + 35 20 23 1 + 36 20 24 1 + 37 21 34 1 + 38 21 35 1 + 39 21 36 1 + 40 22 37 1 + 41 22 38 1 + 42 22 39 1 + 43 26 40 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4,6-TRICHLORO-8-(2,3-O-ISOPROPYLIDENE-BETA-D-RIBOFURANOSY +@MOLECULE +KAPCUZ + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.8261 2.5294 9.6157 S.2 1 KAPC -0.7500 + 2 S2 2.5771 1.4689 12.3782 S.3 1 KAPC -0.7500 + 3 N1 5.2566 2.6491 10.2937 N.3 1 KAPC -0.7640 + 4 N2 4.3887 4.3008 11.4081 N.2 1 KAPC -0.7640 + 5 C1 2.8185 2.3465 10.9625 C.2 1 KAPC 0.6960 + 6 C2 6.2417 3.6033 10.4353 C.2 1 KAPC 0.2000 + 7 C3 5.6981 4.6385 11.1387 C.2 1 KAPC 0.2000 + 8 C4 4.1107 3.0741 10.8906 C.2 1 KAPC 0.6040 + 9 C5 5.3801 1.3691 9.6056 C.3 1 KAPC 0.5140 + 10 C6 3.4185 5.1040 12.1434 C.3 1 KAPC 0.5140 + 11 H1 7.2132 3.4187 10.0131 H 1 KAPC 0.1500 + 12 H2 6.0765 5.5832 11.4857 H 1 KAPC 0.1500 + 13 H3 6.4300 1.1764 9.3671 H 1 KAPC 0.0000 + 14 H4 4.8051 1.4023 8.6770 H 1 KAPC 0.0000 + 15 H5 5.0154 0.5655 10.2495 H 1 KAPC 0.0000 + 16 H6 3.8150 6.1111 12.3014 H 1 KAPC 0.0000 + 17 H7 3.2291 4.6405 13.1145 H 1 KAPC 0.0000 + 18 H8 2.4908 5.1800 11.5714 H 1 KAPC 0.0000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 3 9 1 + 4 3 8 am + 5 3 6 1 + 6 4 10 1 + 7 4 8 2 + 8 4 7 1 + 9 5 8 1 + 10 6 11 1 + 11 6 7 2 + 12 7 12 1 + 13 9 15 1 + 14 9 14 1 + 15 9 13 1 + 16 10 18 1 + 17 10 17 1 + 18 10 16 1 +@SUBSTRUCTURE + 1 KAPC 1 +@COMMENT +COMMENT 1,3-DIMETHYLIMIDAZOLIUM-2-DITHIOCARBOXYLATE (AT 130 DEG.K) +@MOLECULE +KARYAD + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.1395 4.5334 5.5392 S.3 1 KARY 1.0896 + 2 O1 4.3218 4.7500 6.3500 O.3 1 KARY -0.6500 + 3 O2 1.8397 4.9647 6.0136 O.3 1 KARY -0.6500 + 4 N1 1.1829 1.5534 6.3080 N.1 1 KARY -0.5571 + 5 C1 3.0765 2.8200 5.0199 C.3 1 KARY 0.3052 + 6 C2 3.4156 5.2454 3.8811 C.3 1 KARY 0.1052 + 7 C3 3.7363 4.0167 2.9968 C.3 1 KARY 0.0000 + 8 C4 5.1488 3.3908 3.1191 C.3 1 KARY 0.0000 + 9 C5 4.8678 1.9752 3.6523 C.3 1 KARY 0.0000 + 10 C6 4.4271 2.0775 5.1235 C.3 1 KARY 0.0000 + 11 C7 2.8319 2.8557 3.4882 C.3 1 KARY 0.0000 + 12 C8 3.5556 1.6214 2.9625 C.3 1 KARY 0.0000 + 13 C9 2.0124 2.1560 5.7637 C.1 1 KARY 0.3571 + 14 C10 4.5199 6.3057 3.9007 C.3 1 KARY 0.0000 + 15 C11 2.1206 5.9158 3.3788 C.3 1 KARY 0.0000 + 16 H1 3.5470 4.2404 1.9391 H 1 KARY 0.0000 + 17 H2 5.8375 3.9330 3.7697 H 1 KARY 0.0000 + 18 H3 5.6071 3.3316 2.1246 H 1 KARY 0.0000 + 19 H4 5.6865 1.2716 3.4892 H 1 KARY 0.0000 + 20 H5 4.2990 1.0659 5.5301 H 1 KARY 0.0000 + 21 H6 5.1822 2.5792 5.7342 H 1 KARY 0.0000 + 22 H7 1.7861 2.9407 3.1819 H 1 KARY 0.0000 + 23 H8 3.6342 1.6024 1.8706 H 1 KARY 0.0000 + 24 H9 3.1201 0.6818 3.3169 H 1 KARY 0.0000 + 25 H10 4.2192 7.1677 4.5077 H 1 KARY 0.0000 + 26 H11 4.7334 6.6661 2.8884 H 1 KARY 0.0000 + 27 H12 5.4569 5.9402 4.3289 H 1 KARY 0.0000 + 28 H13 2.2464 6.2930 2.3576 H 1 KARY 0.0000 + 29 H14 1.2713 5.2248 3.3745 H 1 KARY 0.0000 + 30 H15 1.8435 6.7655 4.0133 H 1 KARY 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 5 1 + 4 1 6 1 + 5 4 13 3 + 6 5 10 1 + 7 5 11 1 + 8 5 13 1 + 9 6 7 1 + 10 6 14 1 + 11 6 15 1 + 12 7 8 1 + 13 7 11 1 + 14 7 16 1 + 15 8 9 1 + 16 8 17 1 + 17 8 18 1 + 18 9 10 1 + 19 9 12 1 + 20 9 19 1 + 21 10 20 1 + 22 10 21 1 + 23 11 12 1 + 24 11 22 1 + 25 12 23 1 + 26 12 24 1 + 27 14 25 1 + 28 14 26 1 + 29 14 27 1 + 30 15 28 1 + 31 15 29 1 + 32 15 30 1 +@SUBSTRUCTURE + 1 KARY 1 +@COMMENT +COMMENT 1-CYANO-3,3-DIMETHYL-2-THIATRICYCLO(3.2.1.1-6,8-)NONANE 2,2 +@MOLECULE +KASBAH + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -3.6165 2.0841 5.7943 C.2 1 UNCH -0.1435 + 2 C2 -4.2785 1.0821 5.0686 C.2 1 UNCH -0.1500 + 3 C3 -5.5522 0.6585 5.4498 C.2 1 UNCH -0.1500 + 4 C4 -6.1733 1.2267 6.5602 C.2 1 UNCH -0.1500 + 5 C5 -5.5218 2.2173 7.2923 C.2 1 UNCH -0.1500 + 6 C6 -4.2481 2.6444 6.9140 C.2 1 UNCH -0.1500 + 7 C7 -2.2262 2.5246 5.3897 C.3 1 UNCH 0.4992 + 8 N1 -1.1685 1.5635 5.7770 N.3 1 UNCH -0.5477 + 9 N2 0.0620 1.6512 5.1328 N.2 1 UNCH 1.1060 + 10 C8 -1.0975 1.0024 6.9888 C.1 1 UNCH 0.6831 + 11 N3 -1.0697 0.5528 8.0566 N.1 1 UNCH -0.5571 + 12 O1 0.9265 0.8378 5.4615 O.3 1 UNCH -0.5200 + 13 O2 0.1488 2.5287 4.2719 O.2 1 UNCH -0.5200 + 14 H1 -3.8063 0.6222 4.2027 H 1 UNCH 0.1500 + 15 H2 -6.0597 -0.1186 4.8835 H 1 UNCH 0.1500 + 16 H3 -7.1640 0.8931 6.8589 H 1 UNCH 0.1500 + 17 H4 -6.0052 2.6535 8.1632 H 1 UNCH 0.1500 + 18 H5 -3.7544 3.4124 7.5060 H 1 UNCH 0.1500 + 19 H6 -2.0019 3.5048 5.8308 H 1 UNCH 0.0000 + 20 H7 -2.2455 2.6694 4.3016 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 14 1 + 6 3 4 2 + 7 3 15 1 + 8 4 5 1 + 9 4 16 1 + 10 5 6 2 + 11 5 17 1 + 12 6 18 1 + 13 7 8 1 + 14 7 19 1 + 15 7 20 1 + 16 8 9 1 + 17 8 10 1 + 18 9 12 1 + 19 9 13 2 + 20 10 11 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-CYANO-N-NITROTOLYLAMINE (AT 225 DEG.K) +@MOLECULE +KASBOV + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.2076 2.3178 -0.6358 C.2 1 KASB 0.0730 + 2 C2 0.5755 3.4738 -0.5783 C.2 1 KASB -0.1500 + 3 C3 0.9277 4.0268 0.6589 C.2 1 KASB 0.0825 + 4 C4 0.4878 3.4108 1.8497 C.2 1 KASB 0.0825 + 5 C5 -0.2958 2.2537 1.7799 C.2 1 KASB -0.1500 + 6 C6 -0.6420 1.7095 0.5404 C.2 1 KASB -0.1500 + 7 C7 -0.5642 1.7575 -1.9027 C.1 1 KASB -0.0730 + 8 C8 -0.8639 1.2866 -2.9667 C.1 1 KASB -0.1050 + 9 C9 -1.2225 0.7233 -4.2352 C.2 1 KASB 0.8250 + 10 C10 2.1547 5.8079 -0.3614 C.3 1 KASB 0.2800 + 11 C11 0.4522 3.4236 4.2396 C.3 1 KASB 0.2800 + 12 O1 -0.7423 1.4024 -5.2924 O.3 1 KASB -0.6500 + 13 O2 -1.9016 -0.2812 -4.3580 O.2 1 KASB -0.5700 + 14 O3 1.6919 5.1578 0.8134 O.3 1 KASB -0.3625 + 15 O4 0.8759 4.0149 3.0200 O.3 1 KASB -0.3625 + 16 H1 0.8986 3.9247 -1.5107 H 1 KASB 0.1500 + 17 H2 -0.6539 1.7500 2.6713 H 1 KASB 0.1500 + 18 H3 -1.2518 0.8095 0.5030 H 1 KASB 0.1500 + 19 H4 -1.0731 0.8938 -6.0602 H 1 KASB 0.5000 + 20 H5 2.8139 5.1538 -0.9415 H 1 KASB 0.0000 + 21 H6 1.3182 6.1683 -0.9692 H 1 KASB 0.0000 + 22 H7 2.7401 6.6794 -0.0528 H 1 KASB 0.0000 + 23 H8 -0.6396 3.4263 4.3219 H 1 KASB 0.0000 + 24 H9 0.8560 2.4118 4.3496 H 1 KASB 0.0000 + 25 H10 0.8481 4.0296 5.0603 H 1 KASB 0.0000 +@BOND + 1 1 7 1 + 2 1 6 2 + 3 1 2 1 + 4 2 16 1 + 5 2 3 2 + 6 3 14 1 + 7 3 4 1 + 8 4 15 1 + 9 4 5 2 + 10 5 17 1 + 11 5 6 1 + 12 6 18 1 + 13 7 8 3 + 14 8 9 1 + 15 9 13 2 + 16 9 12 1 + 17 10 22 1 + 18 10 21 1 + 19 10 20 1 + 20 10 14 1 + 21 11 25 1 + 22 11 24 1 + 23 11 23 1 + 24 11 15 1 + 25 12 19 1 +@SUBSTRUCTURE + 1 KASB 1 +@COMMENT +COMMENT (3,4-DIMETHOXYPHENYL)PROPIOLIC ACID +@MOLECULE +KATNAU + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.2097 2.9281 0.0253 S.3 1 UNCH 1.4650 + 2 O1 0.5053 4.1778 0.2446 O.3 1 UNCH -0.6500 + 3 O2 0.7286 1.6927 0.6151 O.3 1 UNCH -0.6500 + 4 N1 1.3901 2.7055 -1.5667 N.2 1 UNCH -0.6380 + 5 N2 3.9357 3.2968 0.0376 N.2 1 UNCH -0.6210 + 6 N3 4.1941 3.1482 -3.5594 N.3 1 UNCH -0.5000 + 7 N4 2.8863 2.7173 -3.4305 N.3 1 UNCH -0.4191 + 8 C1 2.8492 3.1884 0.7603 C.2 1 UNCH 0.3868 + 9 C2 3.8061 3.2014 -1.3070 C.2 1 UNCH 0.1854 + 10 C3 2.5619 2.8486 -2.0769 C.2 1 UNCH 0.4856 + 11 C4 4.7300 3.3347 -2.2790 C.2 1 UNCH -0.0382 + 12 C5 1.9306 3.0556 -4.4694 C.3 1 UNCH 0.3691 + 13 C6 6.1804 3.6192 -2.0982 C.3 1 UNCH 0.1382 + 14 C7 2.9835 3.2918 2.2558 C.2 1 UNCH 0.0862 + 15 C8 4.2724 3.3337 2.8153 C.2 1 UNCH -0.1500 + 16 C9 4.4498 3.4315 4.1976 C.2 1 UNCH -0.1500 + 17 C10 3.3424 3.4908 5.0382 C.2 1 UNCH -0.1500 + 18 C11 2.0594 3.4538 4.4977 C.2 1 UNCH -0.1500 + 19 C12 1.8780 3.3560 3.1139 C.2 1 UNCH -0.1500 + 20 H3 4.7989 2.5971 -4.1724 H 1 UNCH 0.4000 + 21 H4 2.3359 2.8063 -5.4556 H 1 UNCH 0.0000 + 22 H5 1.6972 4.1252 -4.4494 H 1 UNCH 0.0000 + 23 H6 1.0021 2.4907 -4.3386 H 1 UNCH 0.0000 + 24 H7 6.4486 3.7291 -1.0426 H 1 UNCH 0.0000 + 25 H8 6.4521 4.5472 -2.6114 H 1 UNCH 0.0000 + 26 H9 6.7832 2.8056 -2.5143 H 1 UNCH 0.0000 + 27 H10 5.1555 3.2887 2.1808 H 1 UNCH 0.1500 + 28 H11 5.4531 3.4615 4.6154 H 1 UNCH 0.1500 + 29 H12 3.4778 3.5669 6.1143 H 1 UNCH 0.1500 + 30 H13 1.1930 3.5021 5.1538 H 1 UNCH 0.1500 + 31 H14 0.8552 3.3372 2.7468 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 8 1 + 5 4 10 2 + 6 5 8 2 + 7 5 9 1 + 8 6 7 1 + 9 6 11 1 + 10 6 20 1 + 11 7 10 am + 12 7 12 1 + 13 8 14 1 + 14 9 10 1 + 15 9 11 2 + 16 11 13 1 + 17 12 21 1 + 18 12 22 1 + 19 12 23 1 + 20 13 24 1 + 21 13 25 1 + 22 13 26 1 + 23 14 15 1 + 24 14 19 2 + 25 15 16 2 + 26 15 27 1 + 27 16 17 1 + 28 16 28 1 + 29 17 18 2 + 30 17 29 1 + 31 18 19 1 + 32 18 30 1 + 33 19 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-PHENYL-5,7-DIMETHYL-6H-PYRAZOLO(3,4-C)(1,2,4)THIADIAZINE +@MOLECULE +KAVFUI + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -3.4414 10.6904 3.6492 N.3 1 UNCH 0.4592 + 2 N2 -4.6202 10.9655 2.8835 N.2 1 UNCH 0.8840 + 3 O1 -4.6665 12.1068 2.4234 O.3 1 UNCH -0.5200 + 4 O2 -5.4008 10.0161 2.8071 O.2 1 UNCH -0.5200 + 5 C1 -2.4181 11.5743 3.8867 C.2 1 UNCH 0.0365 + 6 H1 -2.4178 12.5875 3.5013 H 1 UNCH 0.1500 + 7 N3 -1.4679 11.0367 4.6241 N.2 1 UNCH -0.5653 + 8 C2 -1.8993 9.7476 4.8727 C.2 1 UNCH 0.3062 + 9 N4 -1.1118 8.8264 5.6647 N.2 1 UNCH 0.9610 + 10 O3 -1.5899 7.6946 5.8273 O.3 1 UNCH -0.5200 + 11 O4 -0.0334 9.2300 6.1158 O.2 1 UNCH -0.5200 + 12 C3 -3.1214 9.5085 4.2784 C.2 1 UNCH -0.3016 + 13 H2 -3.7624 8.6371 4.2505 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 am + 3 1 12 1 + 4 2 3 1 + 5 2 4 2 + 6 5 6 1 + 7 5 7 2 + 8 7 8 1 + 9 8 9 1 + 10 8 12 2 + 11 9 10 1 + 12 9 11 2 + 13 12 13 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,4-DINITROIMIDAZOLE (AT 173 DEG.K) +@MOLECULE +KAVTEG + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.5031 6.2062 11.3556 N.3 1 UNCH -0.6400 + 2 C1 3.6735 5.0625 11.7149 C.3 1 UNCH 0.5500 + 3 O1 3.2097 4.3093 10.6007 O.3 1 UNCH -0.5600 + 4 C2 2.3905 5.1091 9.7397 C.3 1 UNCH 0.2800 + 5 C3 3.2817 6.1899 9.1463 C.3 1 UNCH 0.0000 + 6 C4 3.9446 7.0054 10.2697 C.3 1 UNCH 0.2700 + 7 C5 5.1861 7.7160 9.7678 C.3 1 UNCH 0.0610 + 8 C6 6.2121 6.6333 9.9014 C.2 1 UNCH 0.6590 + 9 O2 7.2915 6.5981 9.3314 O.2 1 UNCH -0.5700 + 10 O3 5.7417 5.6819 10.7722 O.3 1 UNCH -0.0500 + 11 C7 1.8086 4.2095 8.6408 C.3 1 UNCH 0.2800 + 12 O4 0.8425 3.2853 9.1785 O.3 1 UNCH -0.4300 + 13 C8 -0.3889 3.8067 9.4238 C.2 1 UNCH 0.6590 + 14 O5 -0.7137 4.9710 9.2365 O.2 1 UNCH -0.5700 + 15 C9 -1.2974 2.7483 9.9688 C.3 1 UNCH 0.0610 + 16 H1 2.8117 5.3981 12.3050 H 1 UNCH 0.0000 + 17 H2 4.2397 4.3849 12.3637 H 1 UNCH 0.0000 + 18 H3 1.5814 5.5503 10.3339 H 1 UNCH 0.0000 + 19 H4 2.7027 6.8562 8.4959 H 1 UNCH 0.0000 + 20 H5 4.0477 5.7157 8.5182 H 1 UNCH 0.0000 + 21 H6 3.2187 7.7254 10.6650 H 1 UNCH 0.0000 + 22 H7 5.4722 8.5549 10.4101 H 1 UNCH 0.0000 + 23 H8 5.0945 8.0399 8.7279 H 1 UNCH 0.0000 + 24 H9 2.5996 3.5962 8.1950 H 1 UNCH 0.0000 + 25 H10 1.3514 4.7953 7.8342 H 1 UNCH 0.0000 + 26 H11 -2.2881 3.1769 10.1451 H 1 UNCH 0.0000 + 27 H12 -0.9042 2.3755 10.9179 H 1 UNCH 0.0000 + 28 H13 -1.3947 1.9346 9.2457 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 10 1 + 4 2 3 1 + 5 2 16 1 + 6 2 17 1 + 7 3 4 1 + 8 4 5 1 + 9 4 11 1 + 10 4 18 1 + 11 5 6 1 + 12 5 19 1 + 13 5 20 1 + 14 6 7 1 + 15 6 21 1 + 16 7 8 1 + 17 7 22 1 + 18 7 23 1 + 19 8 9 2 + 20 8 10 1 + 21 11 12 1 + 22 11 24 1 + 23 11 25 1 + 24 12 13 1 + 25 13 14 2 + 26 13 15 1 + 27 15 26 1 + 28 15 27 1 + 29 15 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (4S*,6R*)-(8-OXO-3,9-DIOXA-1-AZA-4-BICYCLO(4.3.0)NONANYL)ME +@MOLECULE +KECSIU + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.2663 6.7777 5.1475 S.3 1 UNCH -0.2020 + 2 S2 -1.2330 8.2626 2.8906 S.2 1 UNCH -0.3800 + 3 F1 2.0540 10.1709 1.9493 F 1 UNCH -0.3400 + 4 F2 0.3829 9.5740 0.6989 F 1 UNCH -0.3400 + 5 F3 2.6628 8.1206 0.2178 F 1 UNCH -0.3400 + 6 F4 2.7884 7.5097 2.2971 F 1 UNCH -0.3400 + 7 F5 0.2367 4.3174 6.5874 F 1 UNCH -0.3400 + 8 F6 1.4155 4.5058 8.3904 F 1 UNCH -0.3400 + 9 F7 2.6108 3.8942 5.0973 F 1 UNCH -0.3400 + 10 F8 3.7778 4.1624 6.9164 F 1 UNCH -0.3400 + 11 C1 1.3675 8.5105 5.2926 C.2 1 UNCH 0.1010 + 12 C2 1.9765 9.1187 6.4650 C.2 1 UNCH -0.1500 + 13 C3 2.3368 8.4614 7.5780 C.2 1 UNCH -0.1382 + 14 C4 2.1178 7.0392 7.7219 C.2 1 UNCH -0.1500 + 15 C5 1.6696 6.2178 6.7541 C.2 1 UNCH -0.0372 + 16 C6 2.9635 9.1608 8.7516 C.3 1 UNCH 0.1382 + 17 C7 0.9526 9.3194 4.2977 C.2 1 UNCH -0.1356 + 18 C8 0.3333 8.8973 2.9990 C.2 1 UNCH 0.3046 + 19 C9 1.1629 9.1523 1.7411 C.3 1 UNCH 0.7410 + 20 C10 1.9122 7.8893 1.3301 C.3 1 UNCH 0.6800 + 21 C11 1.4615 4.7342 7.0353 C.3 1 UNCH 0.8182 + 22 C12 2.5451 3.8199 6.4514 C.3 1 UNCH 0.6800 + 23 H1 2.1451 10.1938 6.4257 H 1 UNCH 0.1500 + 24 H2 2.3411 6.6263 8.7058 H 1 UNCH 0.1500 + 25 H3 3.0935 10.2331 8.5695 H 1 UNCH 0.0000 + 26 H4 3.9523 8.7407 8.9656 H 1 UNCH 0.0000 + 27 H5 2.3382 9.0512 9.6444 H 1 UNCH 0.0000 + 28 H6 1.0843 10.3976 4.3676 H 1 UNCH 0.1500 + 29 H7 1.2425 7.0522 1.1148 H 1 UNCH 0.0000 + 30 H8 2.3593 2.7773 6.7243 H 1 UNCH 0.0000 +@BOND + 1 1 11 1 + 2 1 15 1 + 3 2 18 2 + 4 3 19 1 + 5 4 19 1 + 6 5 20 1 + 7 6 20 1 + 8 7 21 1 + 9 8 21 1 + 10 9 22 1 + 11 10 22 1 + 12 11 12 1 + 13 11 17 2 + 14 12 13 2 + 15 12 23 1 + 16 13 14 1 + 17 13 16 1 + 18 14 15 2 + 19 14 24 1 + 20 15 21 1 + 21 16 25 1 + 22 16 26 1 + 23 16 27 1 + 24 17 18 1 + 25 17 28 1 + 26 18 19 1 + 27 19 20 1 + 28 20 29 1 + 29 21 22 1 + 30 22 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT Z-4-METHYL-6-TETRAFLUOROETHYL-2-(TETRAFLUOROTHIOACYLMETHYLE +@MOLECULE +KECSUG + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.7688 6.0085 5.7119 N.3 1 UNCH 0.3140 + 2 N2 3.9721 4.9463 4.8893 N.2 1 UNCH -0.7068 + 3 C1 4.8191 4.1591 5.5891 C.2 1 UNCH 0.3350 + 4 N3 5.1499 4.6927 6.8165 N.2 1 UNCH -0.5653 + 5 C2 4.4912 5.8205 6.8572 C.2 1 UNCH 0.3105 + 6 C3 2.8904 7.1234 5.3248 C.3 1 UNCH 0.8356 + 7 C4 2.2289 6.9638 3.8998 C.3 1 UNCH 0.8700 + 8 C5 5.3510 2.8241 5.0749 C.3 1 UNCH 1.0510 + 9 CL1 1.1473 8.3921 3.4861 CL 1 UNCH -0.2900 + 10 CL2 1.1394 5.5164 3.7567 CL 1 UNCH -0.2900 + 11 CL3 3.4307 6.8986 2.5383 CL 1 UNCH -0.2900 + 12 CL4 1.5652 7.3120 6.5856 CL 1 UNCH -0.2900 + 13 CL5 3.8509 8.6908 5.3701 CL 1 UNCH -0.2900 + 14 CL6 3.9743 1.7220 4.7661 CL 1 UNCH -0.2900 + 15 CL7 6.4460 2.0536 6.2600 CL 1 UNCH -0.2900 + 16 CL8 6.2544 3.0974 3.5536 CL 1 UNCH -0.2900 + 17 CL9 4.5285 6.9076 8.1604 CL 1 UNCH -0.1240 +@BOND + 1 1 2 1 + 2 1 5 am + 3 1 6 1 + 4 2 3 2 + 5 3 4 am + 6 3 8 1 + 7 4 5 2 + 8 5 17 1 + 9 6 7 1 + 10 6 12 1 + 11 6 13 1 + 12 7 9 1 + 13 7 10 1 + 14 7 11 1 + 15 8 14 1 + 16 8 15 1 + 17 8 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-PERCHLOROETHYL-3-TRICHLOROMETHYL-5-CHLORO-1,2,4-TRIAZOLE +@MOLECULE +KEDYAT + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.8834 4.2089 5.0058 S.3 1 UNCH -0.0800 + 2 C1 2.2750 2.7167 4.2689 C.2 1 UNCH -0.1100 + 3 C2 1.3340 1.7490 4.5340 C.2 1 UNCH 0.0620 + 4 C3 0.2821 2.2503 5.3538 C.2 1 UNCH -0.1500 + 5 C4 0.4367 3.5832 5.6984 C.2 1 UNCH 0.0400 + 6 O1 1.3368 0.4601 4.1062 O.3 1 UNCH -0.3420 + 7 C5 2.4418 0.0842 3.2948 C.3 1 UNCH 0.2800 + 8 H1 2.4675 0.6649 2.3665 H 1 UNCH 0.0000 + 9 H2 2.3159 -0.9688 3.0250 H 1 UNCH 0.0000 + 10 H3 3.3855 0.1767 3.8431 H 1 UNCH 0.0000 + 11 H4 3.1796 2.6466 3.6833 H 1 UNCH 0.1500 + 12 H5 -0.5532 1.6385 5.6708 H 1 UNCH 0.1500 + 13 C4A -0.4367 4.4064 6.5136 C.2 1 UNCH 0.0400 + 14 S1A -1.8834 3.7808 7.2062 S.3 1 UNCH -0.0800 + 15 C3A -0.2821 5.7394 6.8582 C.2 1 UNCH -0.1500 + 16 C1A -2.2750 5.2730 7.9430 C.2 1 UNCH -0.1100 + 17 C2A -1.3340 6.2407 7.6779 C.2 1 UNCH 0.0620 + 18 H5A 0.5532 6.3512 6.5411 H 1 UNCH 0.1500 + 19 H4A -3.1796 5.3430 8.5286 H 1 UNCH 0.1500 + 20 O1A -1.3368 7.5295 8.1058 O.3 1 UNCH -0.3420 + 21 C5A -2.4418 7.9054 8.9171 C.3 1 UNCH 0.2800 + 22 H1A -2.4675 7.3247 9.8455 H 1 UNCH 0.0000 + 23 H2A -2.3159 8.9585 9.1869 H 1 UNCH 0.0000 + 24 H3A -3.3856 7.8129 8.3688 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 11 1 + 5 3 4 1 + 6 3 6 1 + 7 4 5 2 + 8 4 12 1 + 9 5 13 1 + 10 6 7 1 + 11 7 8 1 + 12 7 9 1 + 13 7 10 1 + 14 13 14 1 + 15 13 15 2 + 16 14 16 1 + 17 15 17 1 + 18 15 18 1 + 19 16 17 2 + 20 16 19 1 + 21 17 20 1 + 22 20 21 1 + 23 21 22 1 + 24 21 23 1 + 25 21 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,4'-DIMETHOXY-2,2'-BITHIENYL +@MOLECULE +KEFJEK + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 4.6547 0.4264 0.6571 O.3 1 UNCH -0.3430 + 2 O2 6.3883 -0.7518 -0.1599 O.3 1 UNCH -0.2800 + 3 N1 8.3245 -1.6190 -0.9813 N.3 1 UNCH -0.5840 + 4 N2 8.0623 0.7286 -0.4180 N.2 1 UNCH -0.5653 + 5 N3 6.9305 3.8964 0.6016 N.1 1 UNCH -0.5571 + 6 C1 4.0883 1.6532 1.0946 C.3 1 UNCH 0.2800 + 7 C2 5.9186 0.4670 0.2439 C.2 1 UNCH 0.2030 + 8 C3 7.6817 -0.5246 -0.5451 C.2 1 UNCH 0.5621 + 9 C4 9.6440 -1.7483 -1.4475 C.2 1 UNCH 0.1000 + 10 C5 10.0882 -3.0190 -1.8532 C.2 1 UNCH -0.1500 + 11 C6 11.3882 -3.2202 -2.3275 C.2 1 UNCH -0.1500 + 12 C7 12.2724 -2.1499 -2.4054 C.2 1 UNCH -0.1500 + 13 C8 11.8544 -0.8834 -2.0092 C.2 1 UNCH -0.1500 + 14 C9 10.5522 -0.6866 -1.5351 C.2 1 UNCH -0.1500 + 15 C10 6.9499 1.3644 0.0819 C.2 1 UNCH 0.2462 + 16 C11 6.9632 2.7606 0.3604 C.1 1 UNCH 0.5381 + 17 H1 3.0557 1.4584 1.3995 H 1 UNCH 0.0000 + 18 H2 4.0660 2.3868 0.2823 H 1 UNCH 0.0000 + 19 H3 4.6266 2.0461 1.9633 H 1 UNCH 0.0000 + 20 H4 7.7895 -2.4773 -0.9769 H 1 UNCH 0.4000 + 21 H5 9.4204 -3.8757 -1.8042 H 1 UNCH 0.1500 + 22 H6 11.7070 -4.2127 -2.6350 H 1 UNCH 0.1500 + 23 H7 13.2837 -2.3005 -2.7731 H 1 UNCH 0.1500 + 24 H8 12.5391 -0.0410 -2.0668 H 1 UNCH 0.1500 + 25 H9 10.2711 0.3192 -1.2375 H 1 UNCH 0.1500 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 7 1 + 4 2 8 1 + 5 3 8 am + 6 3 9 1 + 7 3 20 1 + 8 4 8 2 + 9 4 15 1 + 10 5 16 3 + 11 6 17 1 + 12 6 18 1 + 13 6 19 1 + 14 7 15 2 + 15 9 10 1 + 16 9 14 2 + 17 10 11 2 + 18 10 21 1 + 19 11 12 1 + 20 11 22 1 + 21 12 13 2 + 22 12 23 1 + 23 13 14 1 + 24 13 24 1 + 25 14 25 1 + 26 15 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-ANILINO-5-METHOXY-4-CYANO-OXAZOLE +@MOLECULE +KEJFOU + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 1.5735 0.7163 4.5885 P 1 KEJF 1.3182 + 2 O1 0.3260 -0.0379 4.1848 O.3 1 KEJF -0.9500 + 3 O2 1.9372 0.8049 6.0544 O.3 1 KEJF -0.9500 + 4 O3 1.3746 2.2575 4.0631 O.3 1 KEJF -0.5512 + 5 O4 4.1777 2.2322 0.7150 O.2 1 KEJF -0.5700 + 6 N1 5.3533 0.7995 1.9921 N.3 1 KEJF -0.8000 + 7 C1 2.9623 0.4034 3.5355 C.2 1 KEJF -0.2970 + 8 C2 3.1584 1.4438 2.7122 C.2 1 KEJF -0.1238 + 9 C3 2.1461 2.5543 2.8816 C.3 1 KEJF 0.4182 + 10 C4 4.2345 1.5222 1.7104 C.2 1 KEJF 0.6156 + 11 C5 2.8054 3.9115 3.1357 C.3 1 KEJF 0.0000 + 12 C6 1.1611 2.6329 1.7137 C.3 1 KEJF 0.0000 + 13 H1 3.4893 3.8612 3.9914 H 1 KEJF 0.0000 + 14 H2 2.0520 4.6667 3.3892 H 1 KEJF 0.0000 + 15 H3 3.3665 4.2702 2.2671 H 1 KEJF 0.0000 + 16 H4 0.3637 3.3541 1.9283 H 1 KEJF 0.0000 + 17 H5 1.6474 2.9312 0.7799 H 1 KEJF 0.0000 + 18 H6 0.6658 1.6685 1.5504 H 1 KEJF 0.0000 + 19 H7 6.1458 0.9123 1.3781 H 1 KEJF 0.3700 + 20 H8 5.4875 0.3555 2.8895 H 1 KEJF 0.3700 + 21 H9 3.5212 -0.5131 3.5860 H 1 KEJF 0.1500 +@BOND + 1 1 7 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 4 9 1 + 6 5 10 2 + 7 6 20 1 + 8 6 19 1 + 9 6 10 am + 10 7 21 1 + 11 7 8 2 + 12 8 10 1 + 13 8 9 1 + 14 9 12 1 + 15 9 11 1 + 16 11 15 1 + 17 11 14 1 + 18 11 13 1 + 19 12 18 1 + 20 12 17 1 + 21 12 16 1 +@SUBSTRUCTURE + 1 KEJF 1 +@COMMENT +COMMENT SODIUM 4-CARBAMOYL-5,5-DIMETHYL-5H-1,2-OXAPHOSPHOLE 2,2-DIO +@MOLECULE +KEMFAJ + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.0273 5.5840 4.9495 S.3 1 KEMF -0.0800 + 2 S2 2.9655 2.4303 6.2652 S.3 1 KEMF 0.8491 + 3 O3 2.7378 3.4297 7.3120 O.3 1 KEMF -0.6500 + 4 O4 3.5532 1.1895 6.7792 O.3 1 KEMF -0.6500 + 5 N1 1.9364 5.6972 3.4824 N.2 1 KEMF -0.3381 + 6 N2 2.1562 4.3545 3.7225 N.2 1 KEMF -0.3381 + 7 N3 3.6551 2.9392 4.9140 N.3 1 KEMF -0.2351 + 8 N4 -2.6311 0.6344 4.9924 N.3 1 KEMF -0.9000 + 9 C1 2.8313 6.4541 4.0803 C.2 1 KEMF 0.1981 + 10 C2 3.1796 4.1441 4.5282 C.2 1 KEMF 0.0731 + 11 C3 1.2782 1.8944 5.8549 C.2 1 KEMF -0.0090 + 12 C4 0.2279 2.8081 5.9277 C.2 1 KEMF -0.1500 + 13 C5 -1.0729 2.3806 5.6502 C.2 1 KEMF -0.1500 + 14 C6 -1.3363 1.0369 5.3603 C.2 1 KEMF 0.1000 + 15 C7 -0.2629 0.1468 5.2385 C.2 1 KEMF -0.1500 + 16 C8 1.0430 0.5640 5.5084 C.2 1 KEMF -0.1500 + 17 C9 2.8510 7.9427 4.0236 C.3 1 KEMF 0.1800 + 18 C10 1.9623 8.5533 5.0959 C.3 1 KEMF 0.0000 + 19 H1 0.4292 3.8476 6.1716 H 1 KEMF 0.1500 + 20 H2 -1.8754 3.1109 5.6679 H 1 KEMF 0.1500 + 21 H3 -0.4321 -0.8828 4.9400 H 1 KEMF 0.1500 + 22 H4 1.8701 -0.1364 5.4437 H 1 KEMF 0.1500 + 23 H9 -3.3504 1.2134 5.4123 H 1 KEMF 0.4000 + 24 H10 -2.7879 -0.3562 5.1416 H 1 KEMF 0.4000 + 25 H11 3.8726 8.3256 4.1308 H 1 KEMF 0.0000 + 26 H12 2.4981 8.2662 3.0371 H 1 KEMF 0.0000 + 27 H13 0.9251 8.2174 4.9895 H 1 KEMF 0.0000 + 28 H14 1.9749 9.6453 5.0221 H 1 KEMF 0.0000 + 29 H15 2.3029 8.2770 6.0996 H 1 KEMF 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 2 11 1 + 4 2 7 1 + 5 2 4 1 + 6 2 3 1 + 7 5 9 2 + 8 5 6 1 + 9 6 10 2 + 10 7 10 am + 11 8 24 1 + 12 8 23 1 + 13 8 14 1 + 14 9 17 1 + 15 11 16 1 + 16 11 12 2 + 17 12 19 1 + 18 12 13 1 + 19 13 20 1 + 20 13 14 2 + 21 14 15 1 + 22 15 21 1 + 23 15 16 2 + 24 16 22 1 + 25 17 26 1 + 26 17 25 1 + 27 17 18 1 + 28 18 29 1 + 29 18 28 1 + 30 18 27 1 +@SUBSTRUCTURE + 1 KEMF 1 +@COMMENT +COMMENT SODIUM 2-(P-AMINOPHENYLSULFONAMIDO)-5-ETHYL-1,3,4-THIADIAZO +@MOLECULE +KENHOA + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.0829 2.3066 0.8465 S.3 1 UNCH 1.6740 + 2 CL1 1.9237 3.8437 2.1951 CL 1 UNCH -0.1860 + 3 N1 2.9813 2.9195 -0.3418 N.2 1 UNCH -0.6380 + 4 O1 2.8540 1.3034 1.5523 O.3 1 UNCH -0.6500 + 5 C1 2.7600 5.1954 -3.2541 C.3 1 UNCH -0.1950 + 6 O2 0.7318 2.0282 0.4055 O.3 1 UNCH -0.6500 + 7 C2 3.4022 4.4041 -2.1468 C.3 1 UNCH -0.1000 + 8 C3 2.5353 3.8989 -1.0418 C.2 1 UNCH 0.6000 + 9 O3 1.3207 4.4908 -0.8518 O.3 1 UNCH -0.4300 + 10 C4 1.0113 5.6982 -1.5905 C.3 1 UNCH 0.4182 + 11 C5 1.8622 6.8027 -1.0149 C.2 1 UNCH -0.2882 + 12 C6 3.1536 6.8626 -1.3840 C.2 1 UNCH -0.1900 + 13 C7 3.7327 5.8787 -2.3148 C.3 1 UNCH -0.0600 + 14 C8 1.2910 5.4706 -3.0887 C.3 1 UNCH 0.0950 + 15 H1 3.0586 5.0080 -4.2760 H 1 UNCH 0.1000 + 16 H2 4.1810 3.7068 -2.4457 H 1 UNCH 0.1000 + 17 H3 -0.0500 5.9205 -1.4405 H 1 UNCH 0.0000 + 18 H4 1.4339 7.4989 -0.3033 H 1 UNCH 0.1500 + 19 H5 3.8022 7.6359 -0.9799 H 1 UNCH 0.1500 + 20 H6 4.7150 6.1291 -2.7021 H 1 UNCH 0.1000 + 21 H7 1.0063 6.3490 -3.6783 H 1 UNCH 0.0000 + 22 H8 0.7234 4.6071 -3.4536 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 6 1 + 5 3 8 2 + 6 5 7 1 + 7 5 13 1 + 8 5 14 1 + 9 5 15 1 + 10 7 8 1 + 11 7 13 1 + 12 7 16 1 + 13 8 9 1 + 14 9 10 1 + 15 10 11 1 + 16 10 14 1 + 17 10 17 1 + 18 11 12 2 + 19 11 18 1 + 20 12 13 1 + 21 12 19 1 + 22 13 20 1 + 23 14 21 1 + 24 14 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-CHLOROSULFONYLIMINO-4-OXATRICYCLO(3.3.1.0-2,8-)NON-6-ENE +@MOLECULE +KEPKIZ + 15 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.7064 8.4079 2.0514 C.2 1 KEPK 0.2118 + 2 C2 2.2305 8.0610 3.3009 C.2 1 KEPK -0.1280 + 3 C3 1.5701 8.4633 4.5036 C.2 1 KEPK -0.1040 + 4 C4 0.4276 9.1863 4.4370 C.2 1 KEPK -0.1050 + 5 C5 -0.1286 9.5538 3.1673 C.2 1 KEPK 0.1415 + 6 N1 2.4097 7.9763 1.0124 N.2 1 KEPK -0.4097 + 7 N2 3.3394 7.3631 3.0513 N.2 1 KEPK 0.9530 + 8 N3 0.5194 9.1588 1.9979 N.3 1 KEPK 0.6466 + 9 N4 -0.1705 9.6082 0.9380 N.2 1 KEPK -0.4180 + 10 N5 -1.2108 10.2594 1.4455 N.2 1 KEPK 0.0000 + 11 N6 -1.1997 10.2351 2.8237 N.2 1 KEPK -0.3381 + 12 O1 3.4936 7.2838 1.6091 O.3 1 KEPK -0.1171 + 13 O2 4.2088 6.8048 3.7538 O.3 1 KEPK -0.6330 + 14 H1 1.9945 8.1830 5.4658 H 1 KEPK 0.1500 + 15 H2 -0.0925 9.5038 5.3360 H 1 KEPK 0.1500 +@BOND + 1 1 8 am + 2 1 6 2 + 3 1 2 1 + 4 2 7 2 + 5 2 3 1 + 6 3 14 1 + 7 3 4 2 + 8 4 15 1 + 9 4 5 1 + 10 5 11 2 + 11 5 8 am + 12 6 12 1 + 13 7 13 1 + 14 7 12 1 + 15 8 9 1 + 16 9 10 2 + 17 10 11 1 +@SUBSTRUCTURE + 1 KEPK 1 +@COMMENT +COMMENT TETRAZOLO(1,5-F)FURAZANO(4,5-B)PYRIDINE 1-OXIDE +@MOLECULE +KESNEB + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 9.6589 4.7019 16.0626 O.3 1 KESN -0.5200 + 2 O2 9.0686 6.5485 15.0216 O.2 1 KESN -0.5200 + 3 O3 13.3508 9.2605 14.9378 O.3 1 KESN -0.5200 + 4 O4 14.0148 9.9866 16.9000 O.2 1 KESN -0.5200 + 5 O5 11.1621 4.8026 20.1961 O.3 1 KESN -0.6330 + 6 N1 9.7154 5.9230 15.8715 N.2 1 KESN 0.9070 + 7 N2 13.3218 9.2600 16.1758 N.2 1 KESN 0.9070 + 8 N3 9.9573 4.8599 19.7751 N.2 1 KESN 0.5300 + 9 C1 10.6264 6.5464 18.0990 C.2 1 KESN 0.0862 + 10 C2 10.6228 6.6962 16.7038 C.2 1 KESN 0.1330 + 11 C3 11.4987 7.5816 16.0561 C.2 1 KESN -0.1500 + 12 C4 12.3920 8.3303 16.8308 C.2 1 KESN 0.1330 + 13 C5 12.4046 8.2035 18.2265 C.2 1 KESN -0.1500 + 14 C6 11.5184 7.3197 18.8546 C.2 1 KESN -0.1500 + 15 C7 9.6536 5.6729 18.7804 C.2 1 KESN -0.1422 + 16 C8 8.9205 3.9672 20.4220 C.3 1 KESN 0.0990 + 17 C9 7.8200 4.8622 20.9964 C.3 1 KESN 0.0000 + 18 C10 9.5795 3.1692 21.5563 C.3 1 KESN 0.0000 + 19 C11 8.3955 3.0073 19.3522 C.3 1 KESN 0.0000 + 20 H1 11.4797 7.6773 14.9710 H 1 KESN 0.1500 + 21 H2 13.0940 8.7816 18.8412 H 1 KESN 0.1500 + 22 H3 11.5381 7.2471 19.9417 H 1 KESN 0.1500 + 23 H4 8.6155 5.6601 18.4165 H 1 KESN 0.0600 + 24 H5 7.2764 5.4051 20.2163 H 1 KESN 0.0000 + 25 H6 7.0826 4.2675 21.5473 H 1 KESN 0.0000 + 26 H7 8.2345 5.6063 21.6862 H 1 KESN 0.0000 + 27 H8 8.8494 2.5164 22.0484 H 1 KESN 0.0000 + 28 H9 10.3897 2.5312 21.1844 H 1 KESN 0.0000 + 29 H10 9.9985 3.8298 22.3242 H 1 KESN 0.0000 + 30 H11 9.2142 2.4455 18.8879 H 1 KESN 0.0000 + 31 H12 7.6962 2.2843 19.7872 H 1 KESN 0.0000 + 32 H13 7.8616 3.5299 18.5517 H 1 KESN 0.0000 +@BOND + 1 1 6 1 + 2 2 6 2 + 3 3 7 1 + 4 4 7 2 + 5 5 8 1 + 6 6 10 1 + 7 7 12 1 + 8 8 16 1 + 9 8 15 2 + 10 9 15 1 + 11 9 14 1 + 12 9 10 2 + 13 10 11 1 + 14 11 20 1 + 15 11 12 2 + 16 12 13 1 + 17 13 21 1 + 18 13 14 2 + 19 14 22 1 + 20 15 23 1 + 21 16 19 1 + 22 16 18 1 + 23 16 17 1 + 24 17 26 1 + 25 17 25 1 + 26 17 24 1 + 27 18 29 1 + 28 18 28 1 + 29 18 27 1 + 30 19 32 1 + 31 19 31 1 + 32 19 30 1 +@SUBSTRUCTURE + 1 KESN 1 +@COMMENT +COMMENT 2,4-DINITROPHENYL-T-BUTYL NITRONE +@MOLECULE +KEWJIF + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.9802 2.9133 0.2508 S.3 1 KEWJ 0.4414 + 2 N1 8.1875 1.4573 -0.5488 N.2 1 KEWJ -0.5095 + 3 C1 7.5820 0.5479 0.2147 C.2 1 KEWJ 0.3718 + 4 C2 6.9855 1.0920 1.4195 C.2 1 KEWJ 0.4138 + 5 N2 7.1268 2.4058 1.6008 N.2 1 KEWJ -0.5095 + 6 N3 7.5403 -0.7659 -0.1102 N.3 1 KEWJ -0.8830 + 7 N4 6.3347 0.2687 2.3540 N.2 1 KEWJ -0.4429 + 8 N5 5.5919 0.8788 3.1423 N.1 1 KEWJ 0.6879 + 9 N6 4.8956 1.4012 3.8802 N.2 1 KEWJ -0.3700 + 10 H1 8.1965 -1.0884 -0.8135 H 1 KEWJ 0.4000 + 11 H2 7.3464 -1.4477 0.6166 H 1 KEWJ 0.4000 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 3 2 + 4 3 6 am + 5 3 4 1 + 6 4 7 am + 7 4 5 2 + 8 6 11 1 + 9 6 10 1 + 10 7 8 2 + 11 8 9 2 +@SUBSTRUCTURE + 1 KEWJ 1 +@COMMENT +COMMENT 3-AMINO-4-AZIDO-1,2,5-THIADIAZOLE +@MOLECULE +KHDFRM11 + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O3 5.0901 0.4079 0.1391 O.3 1 KHDF -0.6500 + 2 O4 7.1051 0.9327 1.0371 O.2 1 KHDF -0.5700 + 3 C2 5.8887 0.9522 1.0764 C.2 1 KHDF 0.6600 + 4 H2 5.2971 1.4160 1.8810 H 1 KHDF 0.0600 + 5 H3 4.1447 0.5277 0.3507 H 1 KHDF 0.5000 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 2 3 2 + 4 3 4 1 +@SUBSTRUCTURE + 1 KHDF 1 +@COMMENT +COMMENT POTASSIUM HYDROGEN DIFORMATE (NEUTRON STUDY) +@MOLECULE +KIBDII + 28 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 8.8205 10.5802 -2.2844 N.2 1 KIBD -0.4960 + 2 C1 9.6063 11.2335 -1.4981 C.2 1 KIBD 0.7110 + 3 N2 10.9241 11.2369 -1.8472 N.2 1 KIBD -0.6610 + 4 C2 11.6835 10.2094 -1.5927 C.2 1 KIBD 0.6410 + 5 S1 11.1121 8.7903 -0.7043 S.3 1 KIBD -0.3710 + 6 C3 11.5204 9.3496 0.9626 C.3 1 KIBD 0.2300 + 7 N3 9.3061 11.9926 -0.4005 N.3 1 KIBD -0.8500 + 8 N4 13.0027 10.1960 -2.0011 N.3 1 KIBD -0.7882 + 9 C4 13.9171 9.0599 -1.9445 C.3 1 KIBD 0.3691 + 10 C5 15.2369 9.6181 -2.4658 C.3 1 KIBD 0.0000 + 11 C6 14.7835 10.6338 -3.4963 C.3 1 KIBD 0.0000 + 12 C7 13.5539 11.2575 -2.8444 C.3 1 KIBD 0.3691 + 13 N5 7.5247 10.5798 -1.9624 N.2 1 KIBD 1.0860 + 14 O1 6.9358 9.4917 -1.9254 O.3 1 KIBD -0.5200 + 15 O2 6.9460 11.6583 -1.7388 O.2 1 KIBD -0.5200 + 16 H1 11.2492 8.5712 1.6807 H 1 KIBD 0.0000 + 17 H2 10.9696 10.2591 1.2136 H 1 KIBD 0.0000 + 18 H3 12.5925 9.5448 1.0510 H 1 KIBD 0.0000 + 19 H4 8.3755 12.4061 -0.4307 H 1 KIBD 0.4000 + 20 H5 10.0208 12.6916 -0.2315 H 1 KIBD 0.4000 + 21 H6 14.0464 8.6727 -0.9291 H 1 KIBD 0.0000 + 22 H7 13.5601 8.2554 -2.5977 H 1 KIBD 0.0000 + 23 H8 15.8835 8.8428 -2.8858 H 1 KIBD 0.0000 + 24 H9 15.7810 10.1210 -1.6571 H 1 KIBD 0.0000 + 25 H10 15.5524 11.3739 -3.7346 H 1 KIBD 0.0000 + 26 H11 14.4989 10.1236 -4.4245 H 1 KIBD 0.0000 + 27 H12 12.8496 11.5971 -3.6114 H 1 KIBD 0.0000 + 28 H13 13.8362 12.1108 -2.2180 H 1 KIBD 0.0000 +@BOND + 1 1 13 1 + 2 1 2 2 + 3 2 7 am + 4 2 3 am + 5 3 4 2 + 6 4 8 am + 7 4 5 1 + 8 5 6 1 + 9 6 18 1 + 10 6 17 1 + 11 6 16 1 + 12 7 20 1 + 13 7 19 1 + 14 8 12 1 + 15 8 9 1 + 16 9 22 1 + 17 9 21 1 + 18 9 10 1 + 19 10 24 1 + 20 10 23 1 + 21 10 11 1 + 22 11 26 1 + 23 11 25 1 + 24 11 12 1 + 25 12 28 1 + 26 12 27 1 + 27 13 15 2 + 28 13 14 1 +@SUBSTRUCTURE + 1 KIBD 1 +@COMMENT +COMMENT 2-METHYL-3-(2-NITROAMIDINO)-1,1-TETRAMETHYLENEISOTHIOUREA +@MOLECULE +KIBFAC + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 7.3873 0.1366 1.4653 N.2 1 KIBF -0.6480 + 2 N2 8.2023 1.1301 1.8023 N.2 1 KIBF 1.4260 + 3 N3 7.9404 2.4351 1.7189 N.2 1 KIBF -0.6480 + 4 C1 6.7363 2.7645 1.2432 C.2 1 KIBF 0.1665 + 5 C2 5.8156 1.8119 0.8676 C.2 1 KIBF -0.1500 + 6 C3 6.1799 0.4859 1.0019 C.2 1 KIBF 0.3100 + 7 C4 6.4144 4.2235 1.1224 C.3 1 KIBF 0.1435 + 8 C5 5.2862 -0.6340 0.6357 C.2 1 KIBF 0.0000 + 9 C6 3.8850 -0.5413 0.7383 C.2 1 KIBF -0.1500 + 10 C7 3.0558 -1.6106 0.3815 C.2 1 KIBF -0.1500 + 11 C8 3.6094 -2.7998 -0.0823 C.2 1 KIBF -0.1500 + 12 C9 4.9909 -2.9234 -0.1840 C.2 1 KIBF -0.1500 + 13 C10 5.8173 -1.8538 0.1736 C.2 1 KIBF -0.1500 + 14 O1 9.3359 0.8091 2.2356 O.3 1 KIBF -0.7500 + 15 H1 4.8517 2.1041 0.4668 H 1 KIBF 0.1500 + 16 H2 5.5366 4.4688 1.7282 H 1 KIBF 0.0000 + 17 H3 6.2142 4.4813 0.0777 H 1 KIBF 0.0000 + 18 H4 7.2510 4.8379 1.4708 H 1 KIBF 0.0000 + 19 H5 3.4114 0.3606 1.1189 H 1 KIBF 0.1500 + 20 H6 1.9766 -1.5158 0.4739 H 1 KIBF 0.1500 + 21 H7 2.9663 -3.6321 -0.3563 H 1 KIBF 0.1500 + 22 H8 5.4314 -3.8525 -0.5373 H 1 KIBF 0.1500 + 23 H9 6.8962 -1.9813 0.0878 H 1 KIBF 0.1500 +@BOND + 1 1 6 1 + 2 1 2 2 + 3 2 14 1 + 4 2 3 1 + 5 3 4 2 + 6 4 7 1 + 7 4 5 1 + 8 5 15 1 + 9 5 6 2 + 10 6 8 1 + 11 7 18 1 + 12 7 17 1 + 13 7 16 1 + 14 8 13 1 + 15 8 9 2 + 16 9 19 1 + 17 9 10 1 + 18 10 20 1 + 19 10 11 2 + 20 11 21 1 + 21 11 12 1 + 22 12 22 1 + 23 12 13 2 + 24 13 23 1 +@SUBSTRUCTURE + 1 KIBF 1 +@COMMENT +COMMENT 4-METHYL-6-PHENYL-1,2,3-TRIAZINE 2-OXIDE +@MOLECULE +KICCUU + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 4.8446 1.7403 -0.2876 P 1 UNCH 0.4510 + 2 F1 4.7247 0.6023 0.7937 F 1 UNCH -0.1750 + 3 F2 4.9762 2.9104 0.7580 F 1 UNCH -0.1750 + 4 O1 3.2903 1.9102 -0.7215 O.3 1 UNCH -0.3810 + 5 C1 2.3116 1.9383 0.3179 C.3 1 UNCH 0.2800 + 6 H1 2.3275 1.0020 0.8909 H 1 UNCH 0.0000 + 7 H2 2.5218 2.7741 0.9974 H 1 UNCH 0.0000 + 8 C2 0.9369 2.1601 -0.3030 C.3 1 UNCH 0.2000 + 9 H3 0.9745 2.9885 -1.0192 H 1 UNCH 0.0000 + 10 H4 0.2234 2.4285 0.4840 H 1 UNCH 0.0000 + 11 C3 0.4630 0.9481 -0.9829 C.1 1 UNCH 0.3571 + 12 N1 0.0707 -0.0091 -1.5088 N.1 1 UNCH -0.5571 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 4 5 1 + 5 5 6 1 + 6 5 7 1 + 7 5 8 1 + 8 8 9 1 + 9 8 10 1 + 10 8 11 1 + 11 11 12 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,5-DIFLUORO-4-OXA-5-PHOSPHAPENTANENITRILE (AT 173 DEG.K) +@MOLECULE +KICGAE + 22 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.8968 -1.0362 6.0103 C.3 1 UNCH 0.0000 + 2 C2 -0.1341 -1.5085 4.9239 C.3 1 UNCH 0.0000 + 3 C3 0.6566 -1.9524 3.6995 C.3 1 UNCH 0.0000 + 4 C4 1.7133 -0.8387 3.7897 C.3 1 UNCH 0.0000 + 5 C5 0.8131 0.4517 3.7421 C.3 1 UNCH 0.4282 + 6 C6 1.3459 1.6140 4.5412 C.2 1 UNCH 0.0018 + 7 C7 0.9701 1.5624 5.8294 C.2 1 UNCH 0.0240 + 8 C8 0.1110 0.3447 6.0632 C.3 1 UNCH 0.4060 + 9 C9 -0.4077 -0.0153 4.6275 C.3 1 UNCH 0.2900 + 10 C10 2.2295 -1.0175 5.2389 C.3 1 UNCH 0.2900 + 11 CL1 0.3788 0.8624 2.0736 CL 1 UNCH -0.2900 + 12 CL2 2.4580 2.7182 3.8651 CL 1 UNCH -0.1400 + 13 CL3 1.5166 2.6184 7.0589 CL 1 UNCH -0.1400 + 14 CL4 -1.0824 0.4960 7.3865 CL 1 UNCH -0.2900 + 15 CL5 -2.0381 0.4674 4.1353 CL 1 UNCH -0.2900 + 16 CL6 3.1323 -2.5321 5.4797 CL 1 UNCH -0.2900 + 17 H1 0.9083 -1.5941 6.9516 H 1 UNCH 0.0000 + 18 H2 -0.9746 -2.1090 5.2767 H 1 UNCH 0.0000 + 19 H3 1.0573 -2.9637 3.8061 H 1 UNCH 0.0000 + 20 H4 0.0605 -1.9223 2.7818 H 1 UNCH 0.0000 + 21 H5 2.4987 -0.8775 3.0307 H 1 UNCH 0.0000 + 22 H6 2.9033 -0.2227 5.5671 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 10 1 + 4 1 17 1 + 5 2 3 1 + 6 2 9 1 + 7 2 18 1 + 8 3 4 1 + 9 3 19 1 + 10 3 20 1 + 11 4 5 1 + 12 4 10 1 + 13 4 21 1 + 14 5 6 1 + 15 5 9 1 + 16 5 11 1 + 17 6 7 2 + 18 6 12 1 + 19 7 8 1 + 20 7 13 1 + 21 8 9 1 + 22 8 14 1 + 23 9 15 1 + 24 10 16 1 + 25 10 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3A,4,5,5A,5B,EXO-6-HEXACHLORO-1A,2,3,3A,5A,5B-HEXAHYDRO-1,3 +@MOLECULE +KICLAJ + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -1.7570 0.7222 11.5972 P 1 KICJ 1.2786 + 2 O1 -1.2372 -0.1061 12.7383 O.3 1 KICJ -0.7000 + 3 O2 -2.1962 -0.2227 10.3515 O.3 1 KICJ -0.5512 + 4 O3 -3.2002 2.4622 9.9951 O.3 1 KICJ -0.6800 + 5 O4 -0.5740 1.5967 10.9179 O.3 1 KICJ -0.5512 + 6 O5 0.0292 0.1987 8.4881 O.3 1 KICJ -0.5600 + 7 O6 -1.5905 0.2488 6.7728 O.3 1 KICJ -0.5600 + 8 C1 -1.2923 -0.1885 8.1017 C.3 1 KICJ 0.5600 + 9 C2 -2.3610 0.3739 9.0624 C.3 1 KICJ 0.2800 + 10 C3 -2.2177 1.8959 9.1167 C.3 1 KICJ 0.2800 + 11 C4 -0.8125 2.1960 9.6425 C.3 1 KICJ 0.2800 + 12 C5 0.2051 1.6092 8.6619 C.3 1 KICJ 0.2800 + 13 C6 -0.8190 -0.4532 5.8042 C.3 1 KICJ 0.2800 + 14 H1 -1.3300 -1.2840 8.1444 H 1 KICJ 0.0000 + 15 H2 -3.3665 0.1151 8.7128 H 1 KICJ 0.0000 + 16 H3 -2.3615 2.3526 8.1308 H 1 KICJ 0.0000 + 17 H4 -4.0658 2.3928 9.5499 H 1 KICJ 0.4000 + 18 H5 -2.8270 1.6273 11.7459 H 1 KICJ -0.0362 + 19 H6 -0.6660 3.2745 9.7591 H 1 KICJ 0.0000 + 20 H7 0.1445 2.1011 7.6846 H 1 KICJ 0.0000 + 21 H8 1.2206 1.7515 9.0461 H 1 KICJ 0.0000 + 22 H9 -1.1023 -0.0877 4.8134 H 1 KICJ 0.0000 + 23 H10 0.2496 -0.2682 5.9477 H 1 KICJ 0.0000 + 24 H11 -1.0276 -1.5264 5.8503 H 1 KICJ 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 5 1 + 4 1 18 1 + 5 3 9 1 + 6 4 10 1 + 7 4 17 1 + 8 5 11 1 + 9 6 8 1 + 10 6 12 1 + 11 7 8 1 + 12 7 13 1 + 13 8 9 1 + 14 8 14 1 + 15 9 10 1 + 16 9 15 1 + 17 10 11 1 + 18 10 16 1 + 19 11 12 1 + 20 11 19 1 + 21 12 20 1 + 22 12 21 1 + 23 13 22 1 + 24 13 23 1 + 25 13 24 1 +@SUBSTRUCTURE + 1 KICJ 1 +@COMMENT +COMMENT BETA-D-RIBOPYRANOSYL 2,3,4-BICYCLOPHOSPHITE +@MOLECULE +KIGKIU + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.5448 4.0353 1.8143 S.3 1 UNCH -0.1955 + 2 P1 3.9559 6.1167 1.9741 P 1 UNCH 0.4272 + 3 CL1 2.5868 6.6329 3.4794 CL 1 UNCH -0.2112 + 4 N1 3.1211 6.4695 0.5895 N.3 1 UNCH -0.6220 + 5 C1 2.2867 5.5101 -0.0111 C.2 1 UNCH 0.1000 + 6 C2 1.4639 5.7764 -1.1014 C.2 1 UNCH -0.1500 + 7 C3 0.7214 4.7376 -1.6695 C.2 1 UNCH -0.1500 + 8 C4 0.8207 3.4380 -1.1617 C.2 1 UNCH -0.1500 + 9 C5 1.6700 3.1669 -0.0877 C.2 1 UNCH -0.1500 + 10 C6 2.4033 4.2074 0.4723 C.2 1 UNCH 0.1015 + 11 H1 2.7712 7.4148 0.4716 H 1 UNCH 0.4000 + 12 H2 1.3934 6.7776 -1.5147 H 1 UNCH 0.1500 + 13 H3 0.0681 4.9386 -2.5154 H 1 UNCH 0.1500 + 14 H4 0.2416 2.6345 -1.6107 H 1 UNCH 0.1500 + 15 H5 1.7578 2.1560 0.2986 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 2 3 1 + 4 2 4 1 + 5 4 5 1 + 6 4 11 1 + 7 5 6 2 + 8 5 10 1 + 9 6 7 1 + 10 6 12 1 + 11 7 8 2 + 12 7 13 1 + 13 8 9 1 + 14 8 14 1 + 15 9 10 2 + 16 9 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-CHLORO-1,3,2-BENZATHIAPHOSPHOLE +@MOLECULE +KIKVUV + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.2020 3.6553 7.2592 C.2 1 UNCH -0.0280 + 2 C2 0.9950 4.2999 7.4576 C.2 1 UNCH 0.1900 + 3 C3 0.6237 5.2700 6.5406 C.2 1 UNCH 0.5000 + 4 N1 1.3709 5.6175 5.4667 N.2 1 UNCH -0.6200 + 5 C4 2.5451 4.9619 5.3125 C.2 1 UNCH 0.5000 + 6 C5 2.9990 3.9785 6.1766 C.2 1 UNCH 0.1900 + 7 N2 2.6199 2.6363 8.1686 N.2 1 UNCH 0.6610 + 8 O1 2.3005 1.4133 7.9759 O.3 1 UNCH -0.6330 + 9 F1 0.2206 3.9962 8.5064 F 1 UNCH -0.1900 + 10 F2 -0.5415 5.9097 6.7115 F 1 UNCH -0.1900 + 11 F3 3.3000 5.2937 4.2560 F 1 UNCH -0.1900 + 12 F4 4.1714 3.3626 5.9811 F 1 UNCH -0.1900 + 13 N2B 3.3374 3.0167 9.1957 N.2 1 UNCH 0.6610 + 14 C1B 3.7553 1.9977 10.1051 C.2 1 UNCH -0.0280 + 15 O1B 3.6567 4.2397 9.3884 O.3 1 UNCH -0.6330 + 16 C2B 4.9622 1.3531 9.9067 C.2 1 UNCH 0.1900 + 17 C5B 2.9582 1.6745 11.1877 C.2 1 UNCH 0.1900 + 18 C3B 5.3335 0.3830 10.8237 C.2 1 UNCH 0.5000 + 19 F1B 5.7367 1.6568 8.8579 F 1 UNCH -0.1900 + 20 C4B 3.4122 0.6911 12.0518 C.2 1 UNCH 0.5000 + 21 F4B 1.7859 2.2904 11.3832 F 1 UNCH -0.1900 + 22 N1B 4.5863 0.0355 11.8976 N.2 1 UNCH -0.6200 + 23 F2B 6.4987 -0.2567 10.6528 F 1 UNCH -0.1900 + 24 F3B 2.6572 0.3593 13.1083 F 1 UNCH -0.1900 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 2 + 4 2 9 1 + 5 2 3 1 + 6 3 10 1 + 7 3 4 2 + 8 4 5 1 + 9 5 11 1 + 10 5 6 2 + 11 6 12 1 + 12 7 13 2 + 13 7 8 1 + 14 13 15 1 + 15 13 14 1 + 16 14 17 1 + 17 14 16 2 + 18 16 19 1 + 19 16 18 1 + 20 17 21 1 + 21 17 20 2 + 22 18 23 1 + 23 18 22 2 + 24 20 24 1 + 25 20 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-1,2-BIS(2,3,5,6-TETRAFLUORO-4-PYRIDYL)DIAZENE 1,2-DIOXI +@MOLECULE +KIMLEX01 + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.5128 1.5204 0.6219 C.3 1 KIML 0.9474 + 2 O1 2.5782 2.2614 0.7558 O.3 1 KIML -0.9274 + 3 F1 0.3787 2.2491 0.7584 F 1 KIML -0.3400 + 4 F2 1.4719 0.5342 1.5501 F 1 KIML -0.3400 + 5 F3 1.4671 0.9289 -0.5963 F 1 KIML -0.3400 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 +@SUBSTRUCTURE + 1 KIML 1 +@COMMENT +COMMENT CESIUM TRIFLUORORTHOCARBONATE (AT -100 DEG.C, MONOCLINIC FO +@MOLECULE +KINKUN + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.5563 3.0245 8.0957 O.3 1 UNCH -0.2590 + 2 N1 4.9063 3.0098 7.6953 N.3 1 UNCH -0.4901 + 3 C1 5.7405 3.8594 8.5633 C.3 1 UNCH 0.5073 + 4 C2 5.4473 3.5325 10.0027 C.2 1 UNCH -0.2882 + 5 C3 4.3998 2.7678 10.3523 C.2 1 UNCH -0.2882 + 6 C4 3.4439 2.2585 9.3095 C.3 1 UNCH 0.4182 + 7 C5 5.1967 2.7953 6.3545 C.2 1 UNCH -0.0500 + 8 C6 4.5460 2.1750 5.3485 C.2 1 UNCH 0.1660 + 9 C7 5.2031 2.0992 4.0782 C.1 1 UNCH 0.4921 + 10 N2 5.7504 2.0601 3.0545 N.1 1 UNCH -0.5571 + 11 S1 3.0230 1.3508 5.5587 S.3 1 UNCH -0.3310 + 12 C8 1.7965 2.4739 4.7579 C.3 1 UNCH 0.2300 + 13 C9 1.9320 2.4294 3.2305 C.3 1 UNCH 0.0000 + 14 C10 1.9122 3.9183 5.2610 C.3 1 UNCH 0.0000 + 15 C11 0.4109 1.9264 5.1449 C.3 1 UNCH 0.0000 + 16 H1 5.5408 4.9184 8.3670 H 1 UNCH 0.0000 + 17 H2 6.8009 3.6623 8.3690 H 1 UNCH 0.0000 + 18 H3 6.1278 3.9134 10.7566 H 1 UNCH 0.1500 + 19 H4 4.2185 2.5045 11.3883 H 1 UNCH 0.1500 + 20 H5 2.4164 2.3773 9.6667 H 1 UNCH 0.0000 + 21 H6 3.6151 1.1970 9.0995 H 1 UNCH 0.0000 + 22 H7 6.1779 3.2139 6.1276 H 1 UNCH 0.1500 + 23 H8 1.9055 1.4026 2.8479 H 1 UNCH 0.0000 + 24 H9 1.1068 2.9726 2.7541 H 1 UNCH 0.0000 + 25 H10 2.8548 2.9031 2.8836 H 1 UNCH 0.0000 + 26 H11 1.1289 4.5441 4.8162 H 1 UNCH 0.0000 + 27 H12 2.8694 4.3764 4.9917 H 1 UNCH 0.0000 + 28 H13 1.7909 3.9817 6.3474 H 1 UNCH 0.0000 + 29 H14 0.2583 1.9356 6.2310 H 1 UNCH 0.0000 + 30 H15 0.2629 0.9000 4.7881 H 1 UNCH 0.0000 + 31 H16 -0.3861 2.5373 4.7038 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 1 + 4 2 7 1 + 5 3 4 1 + 6 3 16 1 + 7 3 17 1 + 8 4 5 2 + 9 4 18 1 + 10 5 6 1 + 11 5 19 1 + 12 6 20 1 + 13 6 21 1 + 14 7 8 2 + 15 7 22 1 + 16 8 9 1 + 17 8 11 1 + 18 9 10 3 + 19 11 12 1 + 20 12 13 1 + 21 12 14 1 + 22 12 15 1 + 23 13 23 1 + 24 13 24 1 + 25 13 25 1 + 26 14 26 1 + 27 14 27 1 + 28 14 28 1 + 29 15 29 1 + 30 15 30 1 + 31 15 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(T-BUTYLTHIO)-3-(3,6-DIHYDRO-2H-1,2-OXAZIN-2-YL)ACRYLONIT +@MOLECULE +KINTUW + 34 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.5382 2.0403 1.7063 N.3 1 KINT -0.8100 + 2 N2 -1.0340 2.4688 2.0117 N.1 1 KINT 0.1043 + 3 C1 1.8807 3.2373 2.2790 C.3 1 KINT 0.2700 + 4 C2 0.8455 3.8803 1.3424 C.3 1 KINT 0.0000 + 5 C3 -0.2597 2.9277 0.8967 C.3 1 KINT 0.2657 + 6 C4 -1.6726 2.0850 2.9164 C.1 1 KINT -0.3700 + 7 H1 2.6306 3.9876 2.5630 H 1 KINT 0.0000 + 8 H2 1.3554 2.9810 3.2049 H 1 KINT 0.0000 + 9 H3 0.3928 4.7300 1.8692 H 1 KINT 0.0000 + 10 H4 1.3349 4.2975 0.4561 H 1 KINT 0.0000 + 11 H5 0.1461 2.0609 0.3663 H 1 KINT 0.0000 + 12 H6 -0.9322 3.4477 0.2050 H 1 KINT 0.0000 + 13 C1A 3.1542 1.2316 2.7830 C.3 1 KINT 0.2700 + 14 C1B 3.5658 2.4450 0.7197 C.3 1 KINT 0.2700 + 15 C2A 2.1426 0.3943 3.5816 C.3 1 KINT 0.0000 + 16 H1A 3.7181 1.8754 3.4712 H 1 KINT 0.0000 + 17 H2A 3.8871 0.5324 2.3670 H 1 KINT 0.0000 + 18 C2B 3.9713 1.3198 -0.2456 C.3 1 KINT 0.0000 + 19 H1B 4.4598 2.8256 1.2316 H 1 KINT 0.0000 + 20 H2B 3.2026 3.2752 0.1051 H 1 KINT 0.0000 + 21 C3A 1.3120 -0.5546 2.7230 C.3 1 KINT 0.2657 + 22 H3A 2.6985 -0.1916 4.3247 H 1 KINT 0.0000 + 23 H4A 1.4680 1.0439 4.1490 H 1 KINT 0.0000 + 24 C3B 2.8035 0.7263 -1.0275 C.3 1 KINT 0.2657 + 25 H3B 4.7038 1.7278 -0.9538 H 1 KINT 0.0000 + 26 H4B 4.4840 0.5162 0.2934 H 1 KINT 0.0000 + 27 N2A 2.1380 -1.5293 2.0741 N.1 1 KINT 0.1043 + 28 H5A 0.7397 -0.0131 1.9637 H 1 KINT 0.0000 + 29 H6A 0.5925 -1.0848 3.3572 H 1 KINT 0.0000 + 30 N2B 2.1889 1.7073 -1.8721 N.1 1 KINT 0.1043 + 31 H5B 2.0442 0.3074 -0.3603 H 1 KINT 0.0000 + 32 H6B 3.1669 -0.0904 -1.6616 H 1 KINT 0.0000 + 33 C4A 2.8041 -2.3297 1.5363 C.1 1 KINT -0.3700 + 34 C4B 1.6767 2.5020 -2.5648 C.1 1 KINT -0.3700 +@BOND + 1 1 14 1 + 2 1 13 1 + 3 1 3 1 + 4 2 6 3 + 5 2 5 1 + 6 3 8 1 + 7 3 7 1 + 8 3 4 1 + 9 4 10 1 + 10 4 9 1 + 11 4 5 1 + 12 5 12 1 + 13 5 11 1 + 14 13 17 1 + 15 13 16 1 + 16 13 15 1 + 17 14 20 1 + 18 14 19 1 + 19 14 18 1 + 20 15 23 1 + 21 15 22 1 + 22 15 21 1 + 23 18 26 1 + 24 18 25 1 + 25 18 24 1 + 26 21 29 1 + 27 21 28 1 + 28 21 27 1 + 29 24 32 1 + 30 24 31 1 + 31 24 30 1 + 32 27 33 3 + 33 30 34 3 +@SUBSTRUCTURE + 1 KINT 1 +@COMMENT +COMMENT 3,3',3''-NITRILOTRIPROPYLISOCYANIDE (AT -105DEG.C) TALC +@MOLECULE +KINWEJ + 39 43 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.1746 7.6207 2.9594 C.3 1 KINW 0.0000 + 2 C2 5.5829 7.2140 3.4320 C.3 1 KINW 0.1080 + 3 C3 6.5434 6.4513 2.5761 C.2 1 KINW -0.1080 + 4 C4 6.8847 5.1976 2.1271 C.2 1 KINW -0.1500 + 5 C5 8.0150 5.0955 1.3123 C.2 1 KINW -0.1500 + 6 C6 8.7757 6.2365 0.9907 C.2 1 KINW -0.1500 + 7 C7 8.4177 7.4941 1.4820 C.2 1 KINW -0.1500 + 8 C8 7.2907 7.5664 2.2666 C.2 1 KINW -0.1080 + 9 C9 6.4400 8.4861 3.0866 C.3 1 KINW 0.1080 + 10 C10 5.3934 9.4402 2.4760 C.3 1 KINW 0.0000 + 11 C11 4.8346 9.0088 1.1042 C.3 1 KINW 0.0610 + 12 C12 5.8260 8.8683 -0.0185 C.2 1 KINW 0.5690 + 13 O1 6.6452 9.7498 -0.2751 O.2 1 KINW -0.5700 + 14 N1 5.7160 7.7460 -0.7988 N.3 1 KINW -0.3680 + 15 N2 5.0248 6.6086 -0.5012 N.2 1 KINW -0.5120 + 16 C13 4.2728 6.6012 0.5511 C.2 1 KINW 0.5390 + 17 C14 3.9996 7.7754 1.4344 C.3 1 KINW 0.0610 + 18 C15 4.1826 9.1083 3.3735 C.3 1 KINW 0.0000 + 19 O2 3.5669 5.5095 0.9439 O.3 1 KINW -0.4300 + 20 C16 3.7137 4.3323 0.1350 C.3 1 KINW 0.2800 + 21 C17 2.9289 3.2127 0.7901 C.3 1 KINW 0.0000 + 22 H1 3.3850 7.0288 3.4294 H 1 KINW 0.0000 + 23 H2 5.5971 6.9574 4.4999 H 1 KINW 0.0000 + 24 H3 6.3017 4.3238 2.3931 H 1 KINW 0.1500 + 25 H4 8.3162 4.1250 0.9257 H 1 KINW 0.1500 + 26 H5 9.6550 6.1353 0.3592 H 1 KINW 0.1500 + 27 H6 9.0007 8.3786 1.2498 H 1 KINW 0.1500 + 28 H7 6.9333 8.9286 3.9624 H 1 KINW 0.0000 + 29 H8 5.7061 10.4869 2.5092 H 1 KINW 0.0000 + 30 H9 4.1418 9.7936 0.7632 H 1 KINW 0.0000 + 31 H10 6.3981 7.6579 -1.5458 H 1 KINW 0.3700 + 32 H11 2.9446 8.0291 1.2468 H 1 KINW 0.0000 + 33 H12 4.3854 9.2562 4.4402 H 1 KINW 0.0000 + 34 H13 3.2700 9.6462 3.0953 H 1 KINW 0.0000 + 35 H14 3.3164 4.5263 -0.8673 H 1 KINW 0.0000 + 36 H15 4.7699 4.0500 0.0681 H 1 KINW 0.0000 + 37 H16 3.0054 2.2901 0.2080 H 1 KINW 0.0000 + 38 H17 1.8726 3.4856 0.8839 H 1 KINW 0.0000 + 39 H18 3.3003 3.0240 1.8029 H 1 KINW 0.0000 +@BOND + 1 1 22 1 + 2 1 18 1 + 3 1 17 1 + 4 1 2 1 + 5 2 23 1 + 6 2 9 1 + 7 2 3 1 + 8 3 8 1 + 9 3 4 2 + 10 4 24 1 + 11 4 5 1 + 12 5 25 1 + 13 5 6 2 + 14 6 26 1 + 15 6 7 1 + 16 7 27 1 + 17 7 8 2 + 18 8 9 1 + 19 9 28 1 + 20 9 10 1 + 21 10 29 1 + 22 10 18 1 + 23 10 11 1 + 24 11 30 1 + 25 11 17 1 + 26 11 12 1 + 27 12 14 am + 28 12 13 2 + 29 14 31 1 + 30 14 15 1 + 31 15 16 2 + 32 16 19 1 + 33 16 17 1 + 34 17 32 1 + 35 18 34 1 + 36 18 33 1 + 37 19 20 1 + 38 20 36 1 + 39 20 35 1 + 40 20 21 1 + 41 21 39 1 + 42 21 38 1 + 43 21 37 1 +@SUBSTRUCTURE + 1 KINW 1 +@COMMENT +COMMENT 3-ETHOXY-BENZO(J)-4,5-DIAZATETRACYCLO(6.4.1.0.0-9,12-)TRIDE +@MOLECULE +KINWIN + 19 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.7839 -1.2623 9.1457 C.2 1 UNCH 0.6590 + 2 O1 -0.8078 -1.5805 10.3271 O.2 1 UNCH -0.5700 + 3 O2 -0.9291 -2.1834 8.1789 O.3 1 UNCH -0.6500 + 4 C2 -0.5315 0.1607 8.6419 C.3 1 UNCH 0.5640 + 5 N1 -0.3882 1.0745 9.8219 N.3 1 UNCH -0.8530 + 6 C3 -1.6583 0.6265 7.7046 C.3 1 UNCH 0.0000 + 7 C4 -1.3185 1.8874 6.9138 C.3 1 UNCH 0.2340 + 8 F1 -0.0995 1.6973 6.3274 F 1 UNCH -0.3400 + 9 C5 -1.2493 3.0504 7.9123 C.2 1 UNCH 0.9060 + 10 O3 -0.1751 3.1034 8.5973 O.2 1 UNCH -0.9000 + 11 O4 -2.3292 3.6584 8.1199 O.3 1 UNCH -0.9000 + 12 H1 -1.0589 -3.0433 8.6361 H 1 UNCH 0.5000 + 13 H2 0.4451 0.1596 8.1460 H 1 UNCH 0.0000 + 14 H3 -1.2818 1.3307 10.2531 H 1 UNCH 0.4500 + 15 H4 0.2471 0.7208 10.5394 H 1 UNCH 0.4500 + 16 H5 -0.0018 2.0019 9.4873 H 1 UNCH 0.4500 + 17 H6 -2.5909 0.7594 8.2679 H 1 UNCH 0.0000 + 18 H7 -1.8544 -0.1650 6.9707 H 1 UNCH 0.0000 + 19 H8 -2.0534 2.0853 6.1280 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 4 1 + 4 3 12 1 + 5 4 5 1 + 6 4 6 1 + 7 4 13 1 + 8 5 14 1 + 9 5 15 1 + 10 5 16 1 + 11 6 7 1 + 12 6 17 1 + 13 6 18 1 + 14 7 8 1 + 15 7 9 1 + 16 7 19 1 + 17 9 10 2 + 18 9 11 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT D-ERYTHRO-4-FLUOROGLUTAMIC ACID (FOR STEREOISOMER SEE KINWO +@MOLECULE +KIRCAP + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.4495 1.7184 9.3581 O.3 1 UNCH -0.5200 + 2 O2 2.6495 3.0245 8.0627 O.2 1 UNCH -0.5200 + 3 O3 0.9960 -2.9334 8.1345 O.3 1 UNCH -0.5200 + 4 O4 0.6253 -3.3831 6.0208 O.2 1 UNCH -0.5200 + 5 O5 0.5766 -3.2101 2.5822 O.3 1 UNCH -0.5200 + 6 O6 -0.1930 -1.6003 3.8454 O.2 1 UNCH -0.5200 + 7 O7 3.5068 -3.4110 5.4078 O.3 1 UNCH -0.5200 + 8 O8 2.8464 -4.3074 3.5274 O.2 1 UNCH -0.5200 + 9 O9 5.9912 -0.1571 5.1949 O.2 1 UNCH -0.5700 + 10 O10 5.6184 1.9294 4.3146 O.3 1 UNCH -0.4300 + 11 O11 2.3219 -0.1488 2.6609 O.3 1 UNCH -0.1800 + 12 O12 4.2876 -1.2912 3.2834 O.3 1 UNCH -0.1800 + 13 N1 2.0483 1.9691 8.3053 N.2 1 UNCH 0.9070 + 14 N2 1.0265 -2.6524 6.9317 N.2 1 UNCH 0.9070 + 15 N3 0.7328 -2.3399 3.4527 N.2 1 UNCH 0.7998 + 16 N4 2.8593 -3.3728 4.3429 N.2 1 UNCH 0.7998 + 17 N5 2.8864 -1.4990 2.8458 N.3 1 UNCH -0.4700 + 18 C1 2.1247 -2.0682 4.0385 C.3 1 UNCH 0.8939 + 19 C2 2.0684 -1.0649 5.2356 C.2 1 UNCH -0.1435 + 20 C3 1.5753 -1.3397 6.5424 C.2 1 UNCH 0.1330 + 21 C4 1.5709 -0.3452 7.5435 C.2 1 UNCH -0.1500 + 22 C5 2.0458 0.9383 7.2573 C.2 1 UNCH 0.1330 + 23 C6 2.5182 1.2554 5.9804 C.2 1 UNCH -0.1500 + 24 C7 2.5296 0.2749 4.9751 C.2 1 UNCH -0.1435 + 25 C8 3.0770 0.6397 3.5906 C.3 1 UNCH 0.4235 + 26 C9 4.4734 0.1284 3.3181 C.3 1 UNCH 0.3410 + 27 C10 5.4514 0.5769 4.3804 C.2 1 UNCH 0.6590 + 28 C11 6.5332 2.4523 5.2835 C.3 1 UNCH 0.2800 + 29 H1 1.1943 -0.5714 8.5427 H 1 UNCH 0.1500 + 30 H2 2.8782 2.2619 5.7626 H 1 UNCH 0.1500 + 31 H3 2.9416 1.7021 3.3658 H 1 UNCH 0.0000 + 32 H4 4.8460 0.4272 2.3313 H 1 UNCH 0.0000 + 33 H5 7.5264 2.0130 5.1487 H 1 UNCH 0.0000 + 34 H6 6.6069 3.5324 5.1299 H 1 UNCH 0.0000 + 35 H7 6.1599 2.2696 6.2960 H 1 UNCH 0.0000 +@BOND + 1 1 13 1 + 2 2 13 2 + 3 3 14 1 + 4 4 14 2 + 5 5 15 1 + 6 6 15 2 + 7 7 16 1 + 8 8 16 2 + 9 9 27 2 + 10 10 27 1 + 11 10 28 1 + 12 11 17 1 + 13 11 25 1 + 14 12 17 1 + 15 12 26 1 + 16 13 22 1 + 17 14 20 1 + 18 15 18 1 + 19 16 18 1 + 20 17 18 1 + 21 18 19 1 + 22 19 20 1 + 23 19 24 2 + 24 20 21 2 + 25 21 22 1 + 26 21 29 1 + 27 22 23 2 + 28 23 24 1 + 29 23 30 1 + 30 24 25 1 + 31 25 26 1 + 32 25 31 1 + 33 26 27 1 + 34 26 32 1 + 35 28 33 1 + 36 28 34 1 + 37 28 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 1,1,7,9-TETRANITRO-2,5-EPOXY-1,2,4,5-TETRAHYDRO-3,2- +@MOLECULE +KIRCOD + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 5.0771 4.3358 13.1726 CL 1 UNCH -0.0510 + 2 N1 5.0096 5.7939 12.1941 N.3 1 UNCH -0.2650 + 3 C1 3.7493 6.4708 12.4430 C.3 1 UNCH -0.0420 + 4 C2 3.9975 5.7803 11.1083 C.3 1 UNCH 0.1580 + 5 C3 4.3713 6.6476 9.9626 C.2 1 UNCH 0.7200 + 6 O1 3.8068 7.7078 9.7270 O.2 1 UNCH -0.5700 + 7 O2 5.4004 6.1205 9.2375 O.3 1 UNCH -0.4300 + 8 C4 5.7996 6.9312 8.1319 C.3 1 UNCH 0.2800 + 9 C5 3.2504 4.5259 10.8183 C.2 1 UNCH 0.6300 + 10 O3 2.0602 4.4318 11.0953 O.2 1 UNCH -0.5700 + 11 N2 3.9839 3.5196 10.2231 N.3 1 UNCH -0.7301 + 12 C6 3.4204 2.2113 10.0135 C.3 1 UNCH 0.3001 + 13 H1 3.0205 6.0335 13.1166 H 1 UNCH 0.1000 + 14 H2 3.7883 7.5533 12.4765 H 1 UNCH 0.1000 + 15 H3 6.6247 6.4261 7.6222 H 1 UNCH 0.0000 + 16 H4 6.1528 7.9070 8.4795 H 1 UNCH 0.0000 + 17 H5 4.9735 7.0465 7.4232 H 1 UNCH 0.0000 + 18 H6 4.9912 3.6284 10.1797 H 1 UNCH 0.3700 + 19 H7 4.0260 1.6867 9.2711 H 1 UNCH 0.0000 + 20 H8 2.3878 2.2929 9.6638 H 1 UNCH 0.0000 + 21 H9 3.4416 1.6664 10.9610 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 2 4 1 + 4 3 4 1 + 5 3 13 1 + 6 3 14 1 + 7 4 5 1 + 8 4 9 1 + 9 5 6 2 + 10 5 7 1 + 11 7 8 1 + 12 8 15 1 + 13 8 16 1 + 14 8 17 1 + 15 9 10 2 + 16 9 11 am + 17 11 12 1 + 18 11 18 1 + 19 12 19 1 + 20 12 20 1 + 21 12 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (-)-(1R,2R)-(E)-1-CHLORO-2-METHOXYCARBONYL-2-METHYLCARBAMOY +@MOLECULE +KITREK + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.2756 0.9316 2.7573 N.2 1 KITR -0.1790 + 2 C1 -0.2132 1.0009 4.0865 C.2 1 KITR 0.5210 + 3 N2 -0.1779 2.1324 4.8075 N.2 1 KITR -0.5670 + 4 C2 -0.0722 3.1729 3.9662 C.2 1 KITR 0.1054 + 5 C3 -0.3088 3.1942 2.5996 C.2 1 KITR 0.2272 + 6 C4 -0.4751 1.9666 1.9399 C.2 1 KITR 0.4610 + 7 N3 -0.5448 1.7956 0.5548 N.3 1 KITR -0.9000 + 8 N4 -0.1566 4.4763 2.1089 N.2 1 KITR -0.5653 + 9 C5 0.4381 5.1322 3.0872 C.2 1 KITR 0.0365 + 10 N5 0.6536 4.3180 4.1696 N.3 1 KITR 0.0476 + 11 C6 1.8346 4.3506 5.0256 C.3 1 KITR 0.2556 + 12 C7 2.9827 3.4948 4.4355 C.3 1 KITR 0.2800 + 13 O1 2.6790 2.0950 4.5226 O.3 1 KITR -0.5600 + 14 C8 3.6523 1.2549 3.8701 C.3 1 KITR 0.2800 + 15 P1 3.0215 0.6251 2.2597 P 1 KITR 1.1712 + 16 O2 1.6854 -0.0977 2.3545 O.3 1 KITR -0.9500 + 17 O3 4.1334 0.0427 1.4420 O.3 1 KITR -0.9500 + 18 O4 2.6909 2.0078 1.4889 O.3 1 KITR -0.7712 + 19 H1 0.2447 0.1221 2.3607 H 1 KITR 0.4570 + 20 H2 -0.0053 0.0710 4.6059 H 1 KITR 0.1500 + 21 H3 0.0266 1.0217 0.2212 H 1 KITR 0.4000 + 22 H4 -0.3306 2.6730 0.0789 H 1 KITR 0.4000 + 23 H5 0.8108 6.1476 3.0311 H 1 KITR 0.1500 + 24 H6 2.1422 5.3979 5.1129 H 1 KITR 0.0000 + 25 H7 1.5283 3.9847 6.0114 H 1 KITR 0.0000 + 26 H8 3.8934 3.6810 5.0156 H 1 KITR 0.0000 + 27 H9 3.1686 3.7715 3.3919 H 1 KITR 0.0000 + 28 H10 4.6021 1.7802 3.7238 H 1 KITR 0.0000 + 29 H11 3.8260 0.3876 4.5133 H 1 KITR 0.0000 + 30 H12 2.8960 1.8190 0.5514 H 1 KITR 0.5000 +@BOND + 1 1 19 1 + 2 1 6 2 + 3 1 2 am + 4 2 20 1 + 5 2 3 2 + 6 3 4 1 + 7 4 10 1 + 8 4 5 2 + 9 5 8 1 + 10 5 6 1 + 11 6 7 am + 12 7 22 1 + 13 7 21 1 + 14 8 9 2 + 15 9 23 1 + 16 9 10 am + 17 10 11 1 + 18 11 25 1 + 19 11 24 1 + 20 11 12 1 + 21 12 27 1 + 22 12 26 1 + 23 12 13 1 + 24 13 14 1 + 25 14 29 1 + 26 14 28 1 + 27 14 15 1 + 28 15 18 1 + 29 15 17 1 + 30 15 16 1 + 31 18 30 1 +@SUBSTRUCTURE + 1 KITR 1 +@COMMENT +COMMENT 9-(2'-PHOSPHONOMETHOXYETHYL)ADENINE (IN VIVO ANTIRETROVIRUS +@MOLECULE +KIYGAA + 20 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.0529 3.8871 1.9794 C.3 1 UNCH 0.2300 + 2 C2 0.7806 3.1732 1.6032 C.3 1 UNCH 1.0200 + 3 F1 0.9733 2.3128 0.5790 F 1 UNCH -0.3400 + 4 F2 0.3255 2.4251 2.6395 F 1 UNCH -0.3400 + 5 F3 -0.2141 4.0128 1.2512 F 1 UNCH -0.3400 + 6 C3 2.4806 4.6630 0.7647 C.3 1 UNCH 1.0200 + 7 F4 2.6660 3.8601 -0.3053 F 1 UNCH -0.3400 + 8 F5 3.6648 5.2804 0.9825 F 1 UNCH -0.3400 + 9 F6 1.5920 5.6153 0.4151 F 1 UNCH -0.3400 + 10 S1 1.7748 4.9509 3.4785 S.3 1 UNCH -0.2300 + 11 S2 3.6720 5.2692 4.2219 S.3 1 UNCH -0.1410 + 12 C4 4.1298 6.7905 3.5357 C.2 1 UNCH 0.5910 + 13 N1 3.3560 7.6914 3.0380 N.2 1 UNCH -0.8500 + 14 C5 5.6018 6.9604 3.7529 C.2 1 UNCH 0.4400 + 15 N2 5.9804 7.7548 4.8049 N.3 1 UNCH -0.8000 + 16 S3 6.6844 6.2831 2.6921 S.2 1 UNCH -0.3800 + 17 H1 2.8092 3.1379 2.2362 H 1 UNCH 0.0000 + 18 H2 2.3943 7.3338 3.0640 H 1 UNCH 0.4000 + 19 H3 6.9541 8.0238 4.8846 H 1 UNCH 0.3700 + 20 H4 5.2971 8.3207 5.2963 H 1 UNCH 0.3700 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 10 1 + 4 1 17 1 + 5 2 3 1 + 6 2 4 1 + 7 2 5 1 + 8 6 7 1 + 9 6 8 1 + 10 6 9 1 + 11 10 11 1 + 12 11 12 1 + 13 12 13 2 + 14 12 14 1 + 15 13 18 1 + 16 14 15 1 + 17 14 16 2 + 18 15 19 1 + 19 15 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6,6,6-TRIFLUORO-5-TRIFLUOROMETHYL-2-IMINO-1-THIO-3,4-DITHIA +@MOLECULE +KOBXOO + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.4692 0.4342 5.0406 O.2 1 KOBX -0.5700 + 2 O2 0.1941 2.5331 3.8066 O.3 1 KOBX -0.5200 + 3 O3 1.8965 3.0073 5.1035 O.2 1 KOBX -0.5200 + 4 N1 -1.5069 0.9922 7.2971 N.3 1 KOBX -0.4100 + 5 N2 -0.5693 1.6236 8.1329 N.3 1 KOBX -0.5200 + 6 N3 1.2133 3.2062 7.8540 N.3 1 KOBX -0.9000 + 7 N4 0.7569 2.5529 4.9070 N.2 1 KOBX 0.8356 + 8 C1 0.3034 2.3359 7.3118 C.2 1 KOBX 0.2000 + 9 C2 0.0528 2.0381 6.0225 C.2 1 KOBX 0.2188 + 10 C3 -1.0516 1.0812 5.9813 C.2 1 KOBX 0.6156 + 11 H1 -1.9710 0.1414 7.6019 H 1 KOBX 0.3700 + 12 H2 -0.9813 2.2420 8.8381 H 1 KOBX 0.4000 + 13 H3 1.6028 2.8569 8.7274 H 1 KOBX 0.4000 + 14 H4 1.9579 3.4620 7.1962 H 1 KOBX 0.4000 +@BOND + 1 1 10 2 + 2 2 7 1 + 3 3 7 2 + 4 4 11 1 + 5 4 10 am + 6 4 5 1 + 7 5 12 1 + 8 5 8 1 + 9 6 14 1 + 10 6 13 1 + 11 6 8 1 + 12 7 9 1 + 13 8 9 2 + 14 9 10 1 +@SUBSTRUCTURE + 1 KOBX 1 +@COMMENT +COMMENT 3-AMINO-4-NITRO-1,2-DIHYDRO-5-PYRAZOLONE +@MOLECULE +KOBYOP + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.7352 -0.1370 1.4817 N.3 1 UNCH 0.2996 + 2 N2 4.2983 0.7634 2.3833 N.2 1 UNCH -0.7068 + 3 C1 3.6547 -0.0350 3.2419 C.2 1 UNCH 0.4390 + 4 N3 3.6593 -1.3677 2.9398 N.2 1 UNCH -0.5653 + 5 C2 4.3500 -1.3989 1.8222 C.2 1 UNCH 0.0365 + 6 N4 2.2425 1.8374 5.9269 N.2 1 UNCH -0.3381 + 7 N5 1.8599 0.5574 6.2593 N.2 1 UNCH -0.3381 + 8 C3 2.3265 -0.2479 5.3309 C.2 1 UNCH 0.0365 + 9 N6 3.0113 0.4674 4.3877 N.3 1 UNCH 0.3802 + 10 C4 2.9287 1.7665 4.8077 C.2 1 UNCH 0.0365 + 11 H1 5.2756 0.1751 0.6816 H 1 UNCH 0.2700 + 12 H2 4.5955 -2.2724 1.2343 H 1 UNCH 0.1500 + 13 H3 2.2057 -1.3207 5.2881 H 1 UNCH 0.1500 + 14 H4 3.3748 2.5923 4.2728 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 am + 3 1 11 1 + 4 2 3 2 + 5 3 4 am + 6 3 9 am + 7 4 5 2 + 8 5 12 1 + 9 6 7 1 + 10 6 10 2 + 11 7 8 2 + 12 8 9 am + 13 8 13 1 + 14 9 10 am + 15 10 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,4'-BI(1,2,4-TRIAZOLYL) +@MOLECULE +KOBZEG + 39 42 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 0.7671 8.8067 7.6481 CL 1 UNCH -0.1400 + 2 CL2 1.5934 6.7698 5.2934 CL 1 UNCH -0.1400 + 3 C1 1.1963 7.1536 7.9387 C.2 1 UNCH 0.1544 + 4 C2 1.5407 6.3126 6.9628 C.2 1 UNCH 0.1544 + 5 C3 1.9045 4.9121 7.2662 C.2 1 UNCH 0.5412 + 6 O1 2.3270 4.1487 6.3977 O.2 1 UNCH -0.5700 + 7 C4 1.7290 4.3945 8.6739 C.2 1 UNCH 0.1144 + 8 C5 1.4021 5.2718 9.6413 C.2 1 UNCH 0.0794 + 9 C6 1.1700 6.7098 9.3523 C.2 1 UNCH 0.5412 + 10 O2 0.9515 7.5050 10.2614 O.2 1 UNCH -0.5700 + 11 N1 1.9715 3.0184 8.7545 N.3 1 UNCH -0.6600 + 12 C7 1.2717 4.8904 11.0064 C.1 1 UNCH 0.4921 + 13 N2 1.1471 4.5663 12.1137 N.1 1 UNCH -0.5571 + 14 N3 1.2495 2.1624 9.5948 N.3 1 UNCH 0.4632 + 15 N4 0.7680 0.7412 11.2034 N.2 1 UNCH -0.3381 + 16 N5 -0.3280 0.8554 10.3993 N.2 1 UNCH -0.3381 + 17 C8 1.7288 1.5168 10.7281 C.2 1 UNCH 0.1335 + 18 C9 3.0588 1.6660 11.3257 C.2 1 UNCH 0.3630 + 19 N6 3.9616 2.4263 10.6580 N.2 1 UNCH -0.6200 + 20 C10 5.1889 2.5609 11.2089 C.2 1 UNCH 0.1600 + 21 C11 5.5690 1.9741 12.4032 C.2 1 UNCH -0.1500 + 22 C12 4.6350 1.1993 13.0774 C.2 1 UNCH -0.1500 + 23 C13 3.3629 1.0405 12.5334 C.2 1 UNCH -0.1500 + 24 C14 -0.0498 1.6973 9.4188 C.2 1 UNCH 0.1335 + 25 C15 -0.9758 2.0431 8.3373 C.2 1 UNCH 0.3630 + 26 N7 -0.5323 2.9062 7.3901 N.2 1 UNCH -0.6200 + 27 C16 -1.3688 3.1871 6.3633 C.2 1 UNCH 0.1600 + 28 C17 -2.6480 2.6733 6.2470 C.2 1 UNCH -0.1500 + 29 C18 -3.0977 1.8092 7.2360 C.2 1 UNCH -0.1500 + 30 C19 -2.2515 1.4845 8.2936 C.2 1 UNCH -0.1500 + 31 H1 5.8849 3.1747 10.6442 H 1 UNCH 0.1500 + 32 H2 6.5677 2.1184 12.7999 H 1 UNCH 0.1500 + 33 H3 4.8893 0.7236 14.0203 H 1 UNCH 0.1500 + 34 H4 2.6186 0.4419 13.0510 H 1 UNCH 0.1500 + 35 H5 -0.9682 3.8555 5.6053 H 1 UNCH 0.1500 + 36 H6 -3.2775 2.9341 5.4030 H 1 UNCH 0.1500 + 37 H7 -4.0949 1.3804 7.1826 H 1 UNCH 0.1500 + 38 H8 -2.5850 0.7979 9.0673 H 1 UNCH 0.1500 + 39 H12 2.0555 2.6089 7.8162 H 1 UNCH 0.4000 +@BOND + 1 1 3 1 + 2 2 4 1 + 3 3 4 2 + 4 3 9 1 + 5 4 5 1 + 6 5 6 2 + 7 5 7 1 + 8 7 8 2 + 9 7 11 1 + 10 8 9 1 + 11 8 12 1 + 12 9 10 2 + 13 11 14 1 + 14 11 39 1 + 15 12 13 3 + 16 14 17 am + 17 14 24 am + 18 15 16 1 + 19 15 17 2 + 20 16 24 2 + 21 17 18 1 + 22 18 19 2 + 23 18 23 1 + 24 19 20 1 + 25 20 21 2 + 26 20 31 1 + 27 21 22 1 + 28 21 32 1 + 29 22 23 2 + 30 22 33 1 + 31 23 34 1 + 32 24 25 1 + 33 25 26 2 + 34 25 30 1 + 35 26 27 1 + 36 27 28 2 + 37 27 35 1 + 38 28 29 1 + 39 28 36 1 + 40 29 30 2 + 41 29 37 1 + 42 30 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-((3,5-BIS(2-PYRIDYL)-1,2,4-TRIAZOL-4-YL)AMINO)-5,6-DICHLO +@MOLECULE +KOCWUU + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.1700 -1.2244 9.3138 S.3 1 KOCW -0.0800 + 2 C1 5.1364 -0.3412 8.2198 C.2 1 KOCW -0.0360 + 3 C2 6.1609 0.3364 8.8506 C.2 1 KOCW 0.0190 + 4 C3 6.0821 0.1883 10.2730 C.2 1 KOCW -0.1500 + 5 C4 5.0369 -0.6226 10.6587 C.2 1 KOCW -0.1100 + 6 N1 4.8235 -0.4134 6.8500 N.3 1 KOCW 0.3792 + 7 C5 4.9374 0.5837 5.8794 C.2 1 KOCW -0.2366 + 8 C6 4.7652 -0.0045 4.6350 C.2 1 KOCW -0.1500 + 9 C7 4.3836 -1.3427 4.8362 C.2 1 KOCW -0.1500 + 10 C8 4.3673 -1.5516 6.1943 C.2 1 KOCW -0.3016 + 11 C9 7.2347 1.0238 8.1937 C.1 1 KOCW 0.5381 + 12 N2 8.1187 1.5419 7.6477 N.1 1 KOCW -0.5571 + 13 O1 4.9228 2.5622 7.1939 O.2 1 KOCW -0.5700 + 14 C10 5.1048 1.9998 6.1181 C.2 1 KOCW 0.5950 + 15 H1 6.7733 0.6367 10.9780 H 1 KOCW 0.1500 + 16 H2 4.7536 -0.9079 11.6632 H 1 KOCW 0.1500 + 17 H3 5.3790 2.5966 5.2304 H 1 KOCW 0.0600 + 18 H4 4.8259 0.5060 3.6810 H 1 KOCW 0.1500 + 19 H5 4.1272 -2.0739 4.0796 H 1 KOCW 0.1500 + 20 H6 4.1402 -2.4543 6.7461 H 1 KOCW 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 6 1 + 5 3 4 1 + 6 3 11 1 + 7 4 5 2 + 8 4 15 1 + 9 5 16 1 + 10 6 7 1 + 11 6 10 1 + 12 7 8 2 + 13 7 14 1 + 14 8 9 1 + 15 8 18 1 + 16 9 10 2 + 17 9 19 1 + 18 10 20 1 + 19 11 12 3 + 20 13 14 2 + 21 14 17 1 +@SUBSTRUCTURE + 1 KOCW 1 +@COMMENT +COMMENT 2-(2-FORMYL-1-PYRROLYL)-3-THIOPHENECARBONITRILE +@MOLECULE +KODFUE + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.4560 3.3287 0.9413 N.3 1 KOCW -0.6602 + 2 C1 3.0797 3.7859 0.7107 C.3 1 KOCW 0.3001 + 3 C2 3.0890 4.2574 -0.7480 C.3 1 KOCW 0.0000 + 4 C3 4.5128 4.7650 -0.9405 C.3 1 KOCW 0.0000 + 5 C4 5.3493 3.7647 -0.1387 C.3 1 KOCW 0.3001 + 6 C5 2.6826 4.9283 1.6463 C.3 1 KOCW 0.0000 + 7 C6 5.8009 2.5935 -1.0146 C.3 1 KOCW 0.0000 + 8 C7 4.9557 2.5873 1.9993 C.2 1 KOCW 0.5690 + 9 O1 6.1611 2.3292 2.0766 O.2 1 KOCW -0.5700 + 10 C8 3.9769 2.0551 3.0522 C.3 1 KOCW 0.2510 + 11 C9 4.1342 0.5311 3.1668 C.3 1 KOCW 0.0000 + 12 C10 2.9783 -0.1359 3.9021 C.3 1 KOCW 0.0000 + 13 I1 4.4781 3.0398 4.9166 I 1 KOCW -0.1900 + 14 H1 2.3846 2.9490 0.8318 H 1 KOCW 0.0000 + 15 H2 2.3356 5.0195 -0.9683 H 1 KOCW 0.0000 + 16 H3 2.9083 3.4060 -1.4155 H 1 KOCW 0.0000 + 17 H4 4.6098 5.7666 -0.5045 H 1 KOCW 0.0000 + 18 H5 4.7986 4.8312 -1.9945 H 1 KOCW 0.0000 + 19 H6 6.2312 4.2527 0.2921 H 1 KOCW 0.0000 + 20 H7 2.6255 4.5963 2.6850 H 1 KOCW 0.0000 + 21 H8 3.4022 5.7531 1.6091 H 1 KOCW 0.0000 + 22 H9 1.6972 5.3226 1.3765 H 1 KOCW 0.0000 + 23 H10 6.4080 1.8813 -0.4474 H 1 KOCW 0.0000 + 24 H11 4.9478 2.0398 -1.4212 H 1 KOCW 0.0000 + 25 H12 6.4074 2.9510 -1.8533 H 1 KOCW 0.0000 + 26 H13 2.9429 2.2903 2.7976 H 1 KOCW 0.0000 + 27 H14 5.0787 0.2642 3.6568 H 1 KOCW 0.0000 + 28 H15 4.1803 0.0994 2.1583 H 1 KOCW 0.0000 + 29 H16 3.1107 -1.2227 3.8996 H 1 KOCW 0.0000 + 30 H17 2.9178 0.1889 4.9445 H 1 KOCW 0.0000 + 31 H18 2.0236 0.0874 3.4152 H 1 KOCW 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 8 am + 4 2 3 1 + 5 2 6 1 + 6 2 14 1 + 7 3 4 1 + 8 3 15 1 + 9 3 16 1 + 10 4 5 1 + 11 4 17 1 + 12 4 18 1 + 13 5 7 1 + 14 5 19 1 + 15 6 20 1 + 16 6 21 1 + 17 6 22 1 + 18 7 23 1 + 19 7 24 1 + 20 7 25 1 + 21 8 9 2 + 22 8 10 1 + 23 10 11 1 + 24 10 13 1 + 25 10 26 1 + 26 11 12 1 + 27 11 27 1 + 28 11 28 1 + 29 12 29 1 + 30 12 30 1 + 31 12 31 1 +@SUBSTRUCTURE + 1 KOCW 1 +@COMMENT +COMMENT (2RS,5RS,2'SR)-TRANS-2,5-DIMETHYL-1-(1'-OXO-2'-IODOBUTYL)PY +@MOLECULE +KOFKIZ + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 8.9814 4.6849 8.3094 C.3 1 KOFK 0.5400 + 2 C2 10.0393 6.7639 7.6011 C.3 1 KOFK 0.5400 + 3 C3 11.0539 5.2045 6.0074 C.3 1 KOFK 0.2700 + 4 C4 10.9248 3.9512 6.8933 C.3 1 KOFK 0.2700 + 5 N1 9.5692 3.7266 7.3766 N.3 1 KOFK -0.5330 + 6 N2 9.8674 5.8049 8.7130 N.3 1 KOFK -0.3640 + 7 N3 11.1930 6.4547 6.7570 N.3 1 KOFK -0.5330 + 8 N4 8.6848 3.0600 6.5720 N.2 1 KOFK 1.0330 + 9 O1 9.1112 2.6567 5.4888 O.3 1 KOFK -0.5200 + 10 O2 7.5372 2.9355 7.0030 O.2 1 KOFK -0.5200 + 11 N5 9.4671 6.4075 9.8142 N.2 1 KOFK -0.0142 + 12 O3 9.6775 5.6963 10.8023 O.2 1 KOFK -0.1618 + 13 N6 12.4202 6.7083 7.3290 N.2 1 KOFK 1.0330 + 14 O4 13.3466 5.9572 7.0160 O.3 1 KOFK -0.5200 + 15 O5 12.4898 7.6919 8.0674 O.2 1 KOFK -0.5200 + 16 H1 8.0453 5.1149 7.9213 H 1 KOFK 0.0000 + 17 H2 8.6975 4.0985 9.1952 H 1 KOFK 0.0000 + 18 H3 10.1285 7.7971 7.9718 H 1 KOFK 0.0000 + 19 H4 9.1348 6.8121 6.9764 H 1 KOFK 0.0000 + 20 H5 10.1858 5.2858 5.3394 H 1 KOFK 0.0000 + 21 H6 11.8983 5.0725 5.3173 H 1 KOFK 0.0000 + 22 H7 11.6147 3.9981 7.7462 H 1 KOFK 0.0000 + 23 H8 11.2900 3.0826 6.3286 H 1 KOFK 0.0000 +@BOND + 1 1 17 1 + 2 1 16 1 + 3 1 6 1 + 4 1 5 1 + 5 2 19 1 + 6 2 18 1 + 7 2 7 1 + 8 2 6 1 + 9 3 21 1 + 10 3 20 1 + 11 3 7 1 + 12 3 4 1 + 13 4 23 1 + 14 4 22 1 + 15 4 5 1 + 16 5 8 1 + 17 6 11 1 + 18 7 13 1 + 19 8 10 2 + 20 8 9 1 + 21 11 12 2 + 22 13 15 2 + 23 13 14 1 +@SUBSTRUCTURE + 1 KOFK 1 +@COMMENT +COMMENT 1,5-DINITRO-3-NITROSO-1,3,5-TRIAZACYCLOHEPTANE +@MOLECULE +KOFMEX + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 10.5546 10.4458 2.7104 O.3 1 UNCH -0.2800 + 2 C1 11.6393 11.1078 3.1970 C.2 1 UNCH 0.5421 + 3 N1 11.4909 12.4115 3.2828 N.2 1 UNCH -0.5653 + 4 C2 10.2147 12.6218 2.8183 C.2 1 UNCH 0.0772 + 5 C3 9.6290 11.4257 2.4639 C.2 1 UNCH 0.0870 + 6 N2 12.7583 10.4252 3.5499 N.3 1 UNCH -0.4940 + 7 C4 12.8897 9.0782 3.4529 C.2 1 UNCH 0.7800 + 8 O2 12.0728 8.2634 3.0518 O.2 1 UNCH -0.5700 + 9 O3 14.1354 8.7434 3.8921 O.3 1 UNCH -0.4300 + 10 C5 14.4209 7.3392 3.8477 C.3 1 UNCH 0.2800 + 11 C6 15.8311 7.1272 4.3632 C.3 1 UNCH 0.0000 + 12 C7 8.3426 11.0054 1.9266 C.2 1 UNCH 0.0530 + 13 C8 7.3421 11.9488 1.6475 C.2 1 UNCH -0.1500 + 14 C9 8.0687 9.6521 1.6741 C.2 1 UNCH -0.1500 + 15 C10 6.1049 11.5503 1.1314 C.2 1 UNCH -0.1500 + 16 C11 6.8324 9.2534 1.1583 C.2 1 UNCH -0.1500 + 17 C12 5.8510 10.2030 0.8872 C.2 1 UNCH -0.1500 + 18 H1 9.7919 13.6149 2.7653 H 1 UNCH 0.1500 + 19 H2 13.5312 10.9621 3.9038 H 1 UNCH 0.3700 + 20 H3 13.7105 6.7969 4.4817 H 1 UNCH 0.0000 + 21 H4 14.3469 6.9790 2.8155 H 1 UNCH 0.0000 + 22 H5 16.0965 6.0664 4.3487 H 1 UNCH 0.0000 + 23 H6 16.5521 7.6807 3.7525 H 1 UNCH 0.0000 + 24 H7 15.9275 7.5020 5.3876 H 1 UNCH 0.0000 + 25 H8 7.5090 13.0079 1.8270 H 1 UNCH 0.1500 + 26 H9 8.8200 8.8900 1.8778 H 1 UNCH 0.1500 + 27 H10 5.3399 12.2933 0.9204 H 1 UNCH 0.1500 + 28 H11 6.6402 8.2002 0.9698 H 1 UNCH 0.1500 + 29 H12 4.8897 9.8927 0.4861 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 6 am + 5 3 4 1 + 6 4 5 2 + 7 4 18 1 + 8 5 12 1 + 9 6 7 am + 10 6 19 1 + 11 7 8 2 + 12 7 9 1 + 13 9 10 1 + 14 10 11 1 + 15 10 20 1 + 16 10 21 1 + 17 11 22 1 + 18 11 23 1 + 19 11 24 1 + 20 12 13 2 + 21 12 14 1 + 22 13 15 1 + 23 13 25 1 + 24 14 16 2 + 25 14 26 1 + 26 15 17 2 + 27 15 27 1 + 28 16 17 1 + 29 16 28 1 + 30 17 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ETHYL 5-PHENYL-2-OXAZOLECARBAMATE (TESTED FOR ALDOSE REDUCT +@MOLECULE +KOFNIC + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.5466 3.0665 1.8769 S.3 1 KOFN 1.0958 + 2 C1 5.9922 1.9979 2.1558 C.3 1 KOFN 0.1052 + 3 C2 6.4264 2.4954 3.5503 C.3 1 KOFN 0.3611 + 4 H1 6.9937 3.4328 3.4583 H 1 KOFN 0.0000 + 5 C3 3.9324 2.9972 3.5620 C.3 1 KOFN 0.3240 + 6 H2 3.2210 2.1859 3.7398 H 1 KOFN 0.0000 + 7 C4 3.7164 4.2835 4.3584 C.3 1 KOFN 0.0530 + 8 H3 2.9314 4.2351 5.1178 H 1 KOFN 0.0000 + 9 H4 3.6188 5.2035 3.7782 H 1 KOFN 0.0000 + 10 C5 5.1231 4.0328 4.9173 C.2 1 KOFN 0.5770 + 11 C6 7.3553 1.5269 4.2695 C.2 1 KOFN 0.6590 + 12 C7 5.5599 0.5209 2.1706 C.3 1 KOFN 0.0000 + 13 H5 4.8623 0.3104 2.9886 H 1 KOFN 0.0000 + 14 H6 6.4214 -0.1448 2.2889 H 1 KOFN 0.0000 + 15 H7 5.0486 0.2353 1.2457 H 1 KOFN 0.0000 + 16 C8 7.0781 2.2952 1.1099 C.3 1 KOFN 0.2556 + 17 H8 7.9947 1.7368 1.3356 H 1 KOFN 0.0000 + 18 H9 7.3581 3.3557 1.1092 H 1 KOFN 0.0000 + 19 C9 6.1136 1.9455 -2.3130 C.2 1 KOFN 0.0772 + 20 H10 5.7495 2.1762 -3.3036 H 1 KOFN 0.1500 + 21 C10 6.2417 2.7776 -1.2274 C.2 1 KOFN -0.3016 + 22 H11 6.0257 3.8255 -1.0773 H 1 KOFN 0.1500 + 23 N1 5.2065 2.8082 4.3068 N.3 1 KOFN -0.5851 + 24 N2 6.7225 1.9606 -0.2518 N.3 1 KOFN 0.3140 + 25 N3 6.9231 0.7144 -0.7094 N.2 1 KOFN -0.4180 + 26 N4 6.5358 0.6906 -1.9775 N.2 1 KOFN -0.2272 + 27 O1 3.6151 2.4095 0.9850 O.3 1 KOFN -0.6500 + 28 O2 5.0354 4.4001 1.5782 O.3 1 KOFN -0.6500 + 29 O3 5.9564 4.6621 5.5221 O.2 1 KOFN -0.5700 + 30 O4 8.4528 1.1859 3.8563 O.2 1 KOFN -0.5700 + 31 O5 6.8595 1.0027 5.4038 O.3 1 KOFN -0.6500 + 32 H12 7.5729 0.4310 5.7596 H 1 KOFN 0.5000 +@BOND + 1 1 28 1 + 2 1 27 1 + 3 1 5 1 + 4 1 2 1 + 5 2 16 1 + 6 2 12 1 + 7 2 3 1 + 8 3 23 1 + 9 3 11 1 + 10 3 4 1 + 11 5 23 1 + 12 5 7 1 + 13 5 6 1 + 14 7 10 1 + 15 7 9 1 + 16 7 8 1 + 17 10 29 2 + 18 10 23 am + 19 11 31 1 + 20 11 30 2 + 21 12 15 1 + 22 12 14 1 + 23 12 13 1 + 24 16 24 1 + 25 16 18 1 + 26 16 17 1 + 27 19 26 1 + 28 19 21 2 + 29 19 20 1 + 30 21 24 1 + 31 21 22 1 + 32 24 25 1 + 33 25 26 2 + 34 31 32 1 +@SUBSTRUCTURE + 1 KOFN 1 +@COMMENT +COMMENT TAZOBACTAM (EFFECTIVE INHIBITOR OF BACTERIAL BETA-LACTAMASE +@MOLECULE +KOHVEI + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.1711 1.0293 1.4702 S.3 1 UNCH 1.4927 + 2 O1 2.4292 -0.3031 0.8806 O.3 1 UNCH -0.2267 + 3 O2 4.4895 1.1471 0.8724 O.3 1 UNCH -0.6500 + 4 O3 3.0215 1.0273 2.9142 O.3 1 UNCH -0.6500 + 5 C1 2.3786 -0.8243 -3.0777 C.3 1 UNCH 0.2000 + 6 C2 2.3969 -0.6320 -1.6282 C.1 1 UNCH -0.2000 + 7 C3 2.4168 -0.4734 -0.4384 C.1 1 UNCH 0.0430 + 8 C4 -0.2497 5.6204 -0.5641 C.3 1 UNCH 0.1435 + 9 C5 2.1792 2.3833 0.8677 C.2 1 UNCH -0.0090 + 10 C6 0.8992 2.5713 1.3961 C.2 1 UNCH -0.1500 + 11 C7 0.1146 3.6277 0.9317 C.2 1 UNCH -0.1500 + 12 C8 0.6088 4.5037 -0.0450 C.2 1 UNCH -0.1435 + 13 C9 1.8929 4.2974 -0.5689 C.2 1 UNCH -0.1500 + 14 C10 2.6845 3.2436 -0.1096 C.2 1 UNCH -0.1500 + 15 H1 2.3344 0.1378 -3.5969 H 1 UNCH 0.0000 + 16 H2 3.2783 -1.3495 -3.4121 H 1 UNCH 0.0000 + 17 H3 1.5084 -1.4142 -3.3812 H 1 UNCH 0.0000 + 18 H4 0.5105 1.9076 2.1655 H 1 UNCH 0.1500 + 19 H5 -0.8844 3.7691 1.3400 H 1 UNCH 0.1500 + 20 H6 2.2852 4.9621 -1.3362 H 1 UNCH 0.1500 + 21 H7 3.6824 3.1031 -0.5193 H 1 UNCH 0.1500 + 22 H8 0.3641 6.4707 -0.8795 H 1 UNCH 0.0000 + 23 H9 -0.8389 5.2726 -1.4181 H 1 UNCH 0.0000 + 24 H10 -0.9312 5.9827 0.2128 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 9 1 + 5 2 7 1 + 6 5 6 1 + 7 5 15 1 + 8 5 16 1 + 9 5 17 1 + 10 6 7 3 + 11 8 12 1 + 12 8 22 1 + 13 8 23 1 + 14 8 24 1 + 15 9 10 2 + 16 9 14 1 + 17 10 11 1 + 18 10 18 1 + 19 11 12 2 + 20 11 19 1 + 21 12 13 1 + 22 13 14 2 + 23 13 20 1 + 24 14 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT PROPYNYL TOSYLATE +@MOLECULE +KOHVIM + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.2522 1.1530 5.3636 O.3 1 UNCH -0.1930 + 2 O2 -0.1259 3.4314 5.4238 O.2 1 UNCH -0.5700 + 3 C1 1.6539 1.2617 7.4689 C.1 1 UNCH -0.1770 + 4 C2 0.9880 1.2185 6.4710 C.1 1 UNCH 0.0430 + 5 C3 -0.2652 2.3274 4.9170 C.2 1 UNCH 0.6338 + 6 C4 -1.0608 2.1002 3.6772 C.2 1 UNCH 0.0862 + 7 C5 -1.6717 3.2094 3.0743 C.2 1 UNCH -0.1500 + 8 C6 -2.4285 3.0535 1.9112 C.2 1 UNCH -0.1500 + 9 C7 -2.5801 1.7899 1.3429 C.2 1 UNCH -0.1500 + 10 C8 -1.9766 0.6809 1.9347 C.2 1 UNCH -0.1500 + 11 C9 -1.2183 0.8322 3.0988 C.2 1 UNCH -0.1500 + 12 H1 2.2428 1.3117 8.3545 H 1 UNCH 0.1770 + 13 H2 -1.5605 4.2015 3.5089 H 1 UNCH 0.1500 + 14 H3 -2.8990 3.9186 1.4500 H 1 UNCH 0.1500 + 15 H4 -3.1696 1.6693 0.4371 H 1 UNCH 0.1500 + 16 H5 -2.0968 -0.3038 1.4889 H 1 UNCH 0.1500 + 17 H6 -0.7595 -0.0501 3.5381 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 5 2 + 4 3 4 3 + 5 3 12 1 + 6 5 6 1 + 7 6 7 2 + 8 6 11 1 + 9 7 8 1 + 10 7 13 1 + 11 8 9 2 + 12 8 14 1 + 13 9 10 1 + 14 9 15 1 + 15 10 11 2 + 16 10 16 1 + 17 11 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ETHYNYL BENZOATE +@MOLECULE +KOJGOF + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.5611 3.7877 0.0000 S.2 1 KOJG -0.3800 + 2 N1 3.9537 3.3363 0.7577 N.3 1 KOJG 0.5606 + 3 N2 2.7343 3.3105 0.1375 N.2 1 KOJG -0.7068 + 4 C1 5.0831 2.9346 0.0000 C.2 1 KOJG 0.3980 + 5 C2 1.8820 3.8649 1.0004 C.2 1 KOJG 0.1078 + 6 C3 2.5305 4.2906 2.1712 C.2 1 KOJG -0.1500 + 7 C4 3.8570 3.9506 2.0059 C.2 1 KOJG -0.3316 + 8 C5 0.4435 3.9727 0.6595 C.3 1 KOJG 0.1810 + 9 C6 4.9795 4.1085 2.9650 C.3 1 KOJG 0.1800 + 10 H1 2.0890 4.7674 3.0359 H 1 KOJG 0.1500 + 11 H2 -0.1220 4.4352 1.4748 H 1 KOJG 0.0000 + 12 H3 0.3064 4.5849 -0.2376 H 1 KOJG 0.0000 + 13 H4 0.0176 2.9817 0.4720 H 1 KOJG 0.0000 + 14 H5 4.5955 4.2415 3.9826 H 1 KOJG 0.0000 + 15 H6 5.5775 4.9922 2.7243 H 1 KOJG 0.0000 + 16 H7 5.6235 3.2239 2.9794 H 1 KOJG 0.0000 + 17 N1C 4.8662 1.7556 -0.7577 N.3 1 KOJG 0.5606 + 18 N2C 4.2339 0.7126 -0.1376 N.2 1 KOJG -0.7068 + 19 C4C 5.3497 1.3647 -2.0060 C.2 1 KOJG -0.3316 + 20 C2C 4.2877 -0.3027 -1.0004 C.2 1 KOJG 0.1078 + 21 C3C 4.9807 0.0460 -2.1713 C.2 1 KOJG -0.1500 + 22 C6C 6.0479 2.2578 -2.9650 C.3 1 KOJG 0.1800 + 23 C5C 3.6616 -1.6023 -0.6596 C.3 1 KOJG 0.1810 + 24 H1C 5.1728 -0.5748 -3.0359 H 1 KOJG 0.1500 + 25 H5C 5.9710 1.8587 -3.9826 H 1 KOJG 0.0000 + 26 H6C 7.1122 2.3336 -2.7243 H 1 KOJG 0.0000 + 27 H7C 5.6040 3.2578 -2.9794 H 1 KOJG 0.0000 + 28 H2C 3.7793 -2.3233 -1.4749 H 1 KOJG 0.0000 + 29 H3C 4.1232 -2.0272 0.2375 H 1 KOJG 0.0000 + 30 H4C 2.5905 -1.4754 -0.4721 H 1 KOJG 0.0000 +@BOND + 1 1 4 2 + 2 2 7 1 + 3 2 4 1 + 4 2 3 1 + 5 3 5 2 + 6 4 17 1 + 7 5 8 1 + 8 5 6 1 + 9 6 10 1 + 10 6 7 2 + 11 7 9 1 + 12 8 13 1 + 13 8 12 1 + 14 8 11 1 + 15 9 16 1 + 16 9 15 1 + 17 9 14 1 + 18 17 19 1 + 19 17 18 1 + 20 18 20 2 + 21 19 22 1 + 22 19 21 2 + 23 20 23 1 + 24 20 21 1 + 25 21 24 1 + 26 22 27 1 + 27 22 26 1 + 28 22 25 1 + 29 23 30 1 + 30 23 29 1 + 31 23 28 1 +@SUBSTRUCTURE + 1 KOJG 1 +@COMMENT +COMMENT N,N'-THIOCARBONYL-BIS(3,5-DIMETHYLPYRAZOLE) +@MOLECULE +KOJKID + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.7253 0.6835 -0.0145 N.3 1 UNCH -0.8100 + 2 C1 4.2347 -0.5927 0.5337 C.3 1 UNCH 0.4700 + 3 C2 4.5299 -0.8045 1.9599 C.1 1 UNCH -0.2000 + 4 C3 4.9407 -0.8697 3.0886 C.1 1 UNCH -0.2000 + 5 C4 6.1912 0.8018 -0.0978 C.3 1 UNCH 0.4700 + 6 C5 4.0925 1.8476 0.5957 C.3 1 UNCH 0.2700 + 7 H1 4.6578 -1.4179 -0.0525 H 1 UNCH 0.0000 + 8 H2 3.1506 -0.6526 0.3767 H 1 UNCH 0.0000 + 9 H3 6.4421 1.6934 -0.6857 H 1 UNCH 0.0000 + 10 H4 6.5844 -0.0447 -0.6743 H 1 UNCH 0.0000 + 11 H5 4.3832 2.7625 0.0671 H 1 UNCH 0.0000 + 12 H6 3.0020 1.7780 0.5130 H 1 UNCH 0.0000 + 13 H7 4.3443 1.9737 1.6540 H 1 UNCH 0.0000 + 14 C4B 5.6280 -0.8020 4.3882 C.3 1 UNCH 0.4700 + 15 C3B 6.8786 0.8695 1.2018 C.1 1 UNCH -0.2000 + 16 N1B 7.0939 -0.6837 4.3049 N.3 1 UNCH -0.8100 + 17 H3B 5.3772 -1.6936 4.9761 H 1 UNCH 0.0000 + 18 H4B 5.2349 0.0445 4.9647 H 1 UNCH 0.0000 + 19 C2B 7.2893 0.8043 2.3305 C.1 1 UNCH -0.2000 + 20 C1B 7.5845 0.5925 3.7567 C.3 1 UNCH 0.4700 + 21 C5B 7.7267 -1.8478 3.6947 C.3 1 UNCH 0.2700 + 22 H1B 7.1615 1.4177 4.3429 H 1 UNCH 0.0000 + 23 H2B 8.6686 0.6524 3.9137 H 1 UNCH 0.0000 + 24 H5B 7.4360 -2.7627 4.2233 H 1 UNCH 0.0000 + 25 H6B 8.8173 -1.7782 3.7775 H 1 UNCH 0.0000 + 26 H7B 7.4750 -1.9739 2.6364 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 2 3 1 + 5 2 7 1 + 6 2 8 1 + 7 3 4 3 + 8 4 14 1 + 9 5 9 1 + 10 5 10 1 + 11 5 15 1 + 12 6 11 1 + 13 6 12 1 + 14 6 13 1 + 15 14 16 1 + 16 14 17 1 + 17 14 18 1 + 18 15 19 3 + 19 16 20 1 + 20 16 21 1 + 21 19 20 1 + 22 20 22 1 + 23 20 23 1 + 24 21 24 1 + 25 21 25 1 + 26 21 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N'-DIMETHYL-1,6-DIAZACYCLODECA-3,8-DIYNE +@MOLECULE +KOJZOY + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 9.7802 0.5608 1.5980 N.3 1 KOJZ -0.4691 + 2 C1 8.6607 1.5009 1.5484 C.3 1 KOJZ 0.3001 + 3 C2 11.0623 1.1064 1.6393 C.2 1 KOJZ 0.6900 + 4 O1 11.2606 2.3223 1.6622 O.2 1 KOJZ -0.5700 + 5 N2 12.1108 0.2024 1.6402 N.3 1 KOJZ -0.4201 + 6 C3 13.4603 0.7384 1.6410 C.3 1 KOJZ 0.3001 + 7 C4 11.9567 -1.1553 1.4273 C.2 1 KOJZ 0.6156 + 8 O2 12.9121 -1.8968 1.1875 O.2 1 KOJZ -0.5700 + 9 C5 10.5613 -1.6810 1.5057 C.2 1 KOJZ 0.3084 + 10 N3 10.4454 -3.0157 1.4544 N.2 1 KOJZ -0.1322 + 11 O3 9.7643 -3.5151 2.3596 O.2 1 KOJZ -0.1618 + 12 C6 9.5210 -0.8098 1.5768 C.2 1 KOJZ 0.2090 + 13 N4 8.1878 -1.2409 1.6135 N.3 1 KOJZ -0.9000 + 14 H1 8.9883 2.5323 1.3919 H 1 KOJZ 0.0000 + 15 H2 8.1185 1.4579 2.4985 H 1 KOJZ 0.0000 + 16 H3 14.1766 0.0031 2.0194 H 1 KOJZ 0.0000 + 17 H4 13.5211 1.6368 2.2627 H 1 KOJZ 0.0000 + 18 H5 8.1117 -2.2452 1.7925 H 1 KOJZ 0.4000 + 19 H6 7.6423 -0.7289 2.3012 H 1 KOJZ 0.4000 + 20 H2G 7.9932 1.2381 0.7211 H 1 KOJZ 0.0000 + 21 H4G 13.7281 1.0002 0.6124 H 1 KOJZ 0.0000 +@BOND + 1 1 12 1 + 2 1 3 am + 3 1 2 1 + 4 2 20 1 + 5 2 15 1 + 6 2 14 1 + 7 3 5 am + 8 3 4 2 + 9 5 7 am + 10 5 6 1 + 11 6 21 1 + 12 6 17 1 + 13 6 16 1 + 14 7 9 1 + 15 7 8 2 + 16 9 12 2 + 17 9 10 1 + 18 10 11 2 + 19 12 13 1 + 20 13 19 1 + 21 13 18 1 +@SUBSTRUCTURE + 1 KOJZ 1 +@COMMENT +COMMENT 6-AMINO-1,3-DIMETHYL-5-NITROSOURACIL MONOHYDRATE +@MOLECULE +KOKMIG + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -1.0486 0.0431 8.5819 P 1 UNCH 1.2472 + 2 O1 -0.1633 -1.1480 8.3614 O.3 1 UNCH -0.7000 + 3 O2 -0.2266 1.3942 8.9218 O.3 1 UNCH -0.5512 + 4 N1 -2.3227 0.0088 9.5960 N.3 1 UNCH -0.7260 + 5 N2 -4.5858 0.7503 9.8199 N.2 1 UNCH -0.5560 + 6 N3 -4.5941 0.0404 12.2104 N.1 1 UNCH -0.5571 + 7 N4 -3.3665 0.9160 7.8173 N.3 1 UNCH -0.7882 + 8 C1 -2.3992 -0.7732 6.2843 C.3 1 UNCH 0.0000 + 9 C2 -1.5299 1.5933 6.2764 C.3 1 UNCH 0.0000 + 10 C3 -2.1253 0.4757 7.1287 C.3 1 UNCH 0.3691 + 11 C4 -4.5382 1.2800 7.0362 C.3 1 UNCH 0.3691 + 12 C5 -3.4922 0.5616 9.1534 C.2 1 UNCH 0.5500 + 13 C6 -4.6150 0.3763 11.1012 C.1 1 UNCH 0.6631 + 14 C7 1.1392 1.4474 8.5425 C.3 1 UNCH 0.2800 + 15 C8 1.6283 2.8727 8.6924 C.3 1 UNCH 0.0000 + 16 H1 -2.2108 -0.1899 10.5775 H 1 UNCH 0.4000 + 17 H2 -1.4684 -1.1623 5.8582 H 1 UNCH 0.0000 + 18 H3 -3.0875 -0.5637 5.4589 H 1 UNCH 0.0000 + 19 H4 -2.8399 -1.5703 6.8932 H 1 UNCH 0.0000 + 20 H5 -1.4269 2.5195 6.8515 H 1 UNCH 0.0000 + 21 H6 -2.1478 1.8177 5.4012 H 1 UNCH 0.0000 + 22 H7 -0.5361 1.3125 5.9136 H 1 UNCH 0.0000 + 23 H8 -5.1147 2.0600 7.5448 H 1 UNCH 0.0000 + 24 H9 -5.1843 0.4080 6.8910 H 1 UNCH 0.0000 + 25 H10 -4.2722 1.6722 6.0510 H 1 UNCH 0.0000 + 26 H11 1.2543 1.1175 7.5056 H 1 UNCH 0.0000 + 27 H12 1.7143 0.7804 9.1922 H 1 UNCH 0.0000 + 28 H13 1.0434 3.5489 8.0601 H 1 UNCH 0.0000 + 29 H14 1.5054 3.2165 9.7248 H 1 UNCH 0.0000 + 30 H15 2.6831 2.9548 8.4160 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 10 1 + 5 3 14 1 + 6 4 12 am + 7 4 16 1 + 8 5 12 2 + 9 5 13 1 + 10 6 13 3 + 11 7 10 1 + 12 7 11 1 + 13 7 12 am + 14 8 10 1 + 15 8 17 1 + 16 8 18 1 + 17 8 19 1 + 18 9 10 1 + 19 9 20 1 + 20 9 21 1 + 21 9 22 1 + 22 11 23 1 + 23 11 24 1 + 24 11 25 1 + 25 14 15 1 + 26 14 26 1 + 27 14 27 1 + 28 15 28 1 + 29 15 29 1 + 30 15 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-CYANIMINO-2-ETHOXY-2-OXO-3,3,4-TRIMETHYL-1,4,2-DIAZAPHOSP +@MOLECULE +KOLCUJ + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.3528 9.9787 3.3236 S.3 1 KOKS -0.1600 + 2 S2 5.0599 7.1510 3.3316 S.3 1 KOKS -0.2020 + 3 S3 2.6649 5.5285 3.5642 S.3 1 KOKS -0.2020 + 4 CL1 4.2457 11.9124 5.4350 CL 1 KOKS -0.2900 + 5 CL2 1.4700 12.0062 4.4937 CL 1 KOKS -0.2900 + 6 CL3 3.6367 12.8594 2.7607 CL 1 KOKS -0.2900 + 7 CL4 6.0245 5.1165 5.2887 CL 1 KOKS -0.2900 + 8 CL5 5.9449 7.9240 6.0967 CL 1 KOKS -0.2900 + 9 CL6 7.8702 7.0207 4.1440 CL 1 KOKS -0.2900 + 10 CL7 0.6471 4.7997 1.5702 CL 1 KOKS -0.2900 + 11 CL8 0.2971 7.2886 2.9877 CL 1 KOKS -0.2900 + 12 CL9 2.3853 7.0214 0.9575 CL 1 KOKS -0.2900 + 13 N1 2.8361 9.1886 4.6979 N.2 1 KOKS -0.5200 + 14 N2 3.5291 6.9169 4.0286 N.3 1 KOKS -0.1060 + 15 C1 2.9153 7.8953 4.8503 C.2 1 KOKS 0.4138 + 16 C2 3.1657 11.6721 4.0280 C.3 1 KOKS 1.1000 + 17 C3 6.1787 6.8073 4.7290 C.3 1 KOKS 1.1000 + 18 C4 1.5290 6.2034 2.2903 C.3 1 KOKS 1.1000 + 19 C5 2.2083 7.4230 6.1206 C.2 1 KOKS 0.0862 + 20 C6 1.0863 8.1309 6.5804 C.2 1 KOKS -0.1500 + 21 C7 0.4179 7.7279 7.7381 C.2 1 KOKS -0.1500 + 22 C8 0.8665 6.6186 8.4504 C.2 1 KOKS -0.1500 + 23 C9 1.9840 5.9135 8.0081 C.2 1 KOKS -0.1500 + 24 C10 2.6545 6.3142 6.8492 C.2 1 KOKS -0.1500 + 25 H1 0.7170 8.9988 6.0377 H 1 KOKS 0.1500 + 26 H2 -0.4513 8.2826 8.0832 H 1 KOKS 0.1500 + 27 H3 0.3478 6.3063 9.3536 H 1 KOKS 0.1500 + 28 H4 2.3375 5.0517 8.5696 H 1 KOKS 0.1500 + 29 H5 3.5258 5.7483 6.5432 H 1 KOKS 0.1500 +@BOND + 1 1 13 1 + 2 1 16 1 + 3 2 14 1 + 4 2 17 1 + 5 3 14 1 + 6 3 18 1 + 7 4 16 1 + 8 5 16 1 + 9 6 16 1 + 10 7 17 1 + 11 8 17 1 + 12 9 17 1 + 13 10 18 1 + 14 11 18 1 + 15 12 18 1 + 16 13 15 2 + 17 14 15 am + 18 15 19 1 + 19 19 20 2 + 20 19 24 1 + 21 20 21 1 + 22 20 25 1 + 23 21 22 2 + 24 21 26 1 + 25 22 23 1 + 26 22 27 1 + 27 23 24 2 + 28 23 28 1 + 29 24 29 1 +@SUBSTRUCTURE + 1 KOKS 1 +@COMMENT +COMMENT N,N-BIS(TRICHLOROMETHYLTHIO)-(ALPHA-((TRICHLOROMETHYL)THIOI +@MOLECULE +MAPMIP03 + 28 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N6 5.2307 7.4359 -4.7976 N.3 1 MAPM -0.8382 + 2 N7 1.3597 5.2833 1.0712 N.2 1 MAPM -0.0922 + 3 C1 4.3376 7.4913 -3.7373 C.2 1 MAPM -0.0500 + 4 C2 4.0033 6.5304 -2.8644 C.2 1 MAPM -0.1500 + 5 C3 3.0561 6.7397 -1.7908 C.2 1 MAPM -0.1500 + 6 C4 2.7382 5.7768 -0.9142 C.2 1 MAPM -0.1356 + 7 C5 1.7630 6.0946 0.1500 C.2 1 MAPM 0.3256 + 8 C8 5.3249 8.5473 -5.7506 C.3 1 MAPM 0.3691 + 9 C9 5.8215 6.1828 -5.2718 C.3 1 MAPM 0.3691 + 10 C10 0.3683 5.7321 2.0897 C.3 1 MAPM 0.3461 + 11 C11 1.8361 3.8777 1.1908 C.3 1 MAPM 0.3461 + 12 H1 3.8860 8.4790 -3.6449 H 1 MAPM 0.1500 + 13 H2 4.4618 5.5498 -2.9541 H 1 MAPM 0.1500 + 14 H3 2.6133 7.7333 -1.7301 H 1 MAPM 0.1500 + 15 H4 3.1846 4.7906 -0.9790 H 1 MAPM 0.1500 + 16 H5 1.3484 7.1181 0.1504 H 1 MAPM 0.0600 + 17 H81 6.3193 8.5901 -6.2076 H 1 MAPM 0.0000 + 18 H82 5.1574 9.5104 -5.2557 H 1 MAPM 0.0000 + 19 H83 4.5789 8.4279 -6.5430 H 1 MAPM 0.0000 + 20 H91 6.2869 5.6346 -4.4459 H 1 MAPM 0.0000 + 21 H92 5.0536 5.5510 -5.7304 H 1 MAPM 0.0000 + 22 H93 6.6047 6.3614 -6.0165 H 1 MAPM 0.0000 + 23 H101 -0.5126 5.0898 2.0103 H 1 MAPM 0.0000 + 24 H102 0.0867 6.7734 1.9107 H 1 MAPM 0.0000 + 25 H103 0.8295 5.6360 3.0761 H 1 MAPM 0.0000 + 26 H111 2.9184 3.8896 1.3445 H 1 MAPM 0.0000 + 27 H112 1.5693 3.3417 0.2762 H 1 MAPM 0.0000 + 28 H113 1.3498 3.4038 2.0481 H 1 MAPM 0.0000 +@BOND + 1 1 9 1 + 2 1 8 1 + 3 1 3 1 + 4 2 11 1 + 5 2 10 1 + 6 2 7 2 + 7 3 12 1 + 8 3 4 2 + 9 4 13 1 + 10 4 5 1 + 11 5 14 1 + 12 5 6 2 + 13 6 15 1 + 14 6 7 1 + 15 7 16 1 + 16 8 19 1 + 17 8 18 1 + 18 8 17 1 + 19 9 22 1 + 20 9 21 1 + 21 9 20 1 + 22 10 25 1 + 23 10 24 1 + 24 10 23 1 + 25 11 28 1 + 26 11 27 1 + 27 11 26 1 +@SUBSTRUCTURE + 1 MAPM 1 +@COMMENT +COMMENT (5-DIMETHYLAMINO-2,4-PENTADIENYLIDENE)-DIMETHYLAMMONIUM PER +@MOLECULE +MENBZS01 + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 9.2797 0.2795 8.5647 S.3 1 UNCH -0.0945 + 2 O1 6.5068 2.7451 9.7818 O.3 1 UNCH -0.5200 + 3 O2 8.1091 3.3772 8.4051 O.2 1 UNCH -0.5200 + 4 O3 10.8365 0.4299 7.9868 O.3 1 UNCH -0.2870 + 5 N1 7.6939 2.8486 9.4455 N.2 1 UNCH 0.9070 + 6 C1 9.4676 1.2405 10.0614 C.2 1 UNCH 0.1015 + 7 C2 8.6838 2.3563 10.3781 C.2 1 UNCH 0.1330 + 8 C3 8.8277 3.0535 11.5869 C.2 1 UNCH -0.1500 + 9 C4 9.7868 2.6300 12.5038 C.2 1 UNCH -0.1500 + 10 C5 10.5856 1.5247 12.2106 C.2 1 UNCH -0.1500 + 11 C6 10.4255 0.8349 11.0026 C.2 1 UNCH -0.1500 + 12 C7 10.9896 1.4327 6.9890 C.3 1 UNCH 0.2800 + 13 H1 8.2040 3.9157 11.8128 H 1 UNCH 0.1500 + 14 H2 9.9138 3.1584 13.4462 H 1 UNCH 0.1500 + 15 H3 11.3351 1.1917 12.9260 H 1 UNCH 0.1500 + 16 H4 11.0571 -0.0301 10.8036 H 1 UNCH 0.1500 + 17 H5 12.0302 1.4203 6.6524 H 1 UNCH 0.0000 + 18 H6 10.3477 1.2277 6.1256 H 1 UNCH 0.0000 + 19 H7 10.7744 2.4256 7.3971 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 6 1 + 3 2 5 1 + 4 3 5 2 + 5 4 12 1 + 6 5 7 1 + 7 6 7 2 + 8 6 11 1 + 9 7 8 1 + 10 8 9 2 + 11 8 13 1 + 12 9 10 1 + 13 9 14 1 + 14 10 11 2 + 15 10 15 1 + 16 11 16 1 + 17 12 17 1 + 18 12 18 1 + 19 12 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 2-NITROBENZENE-SULFENATE +@MOLECULE +METBZC10 + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.8370 4.7331 3.1901 S.2 1 UNCH 0.2425 + 2 O1 3.3001 4.5864 1.7690 O.2 1 UNCH -0.5000 + 3 O2 1.7242 5.4340 5.9208 O.2 1 UNCH -0.5700 + 4 O3 -0.0642 6.8319 5.5576 O.3 1 UNCH -0.4300 + 5 C1 1.0381 4.4998 3.1432 C.2 1 UNCH 0.0640 + 6 C2 0.1889 5.0245 4.1318 C.2 1 UNCH 0.0862 + 7 C3 -1.2015 4.8365 4.0326 C.2 1 UNCH -0.1500 + 8 C4 -1.7459 4.1400 2.9536 C.2 1 UNCH -0.1500 + 9 C5 -0.9092 3.6282 1.9665 C.2 1 UNCH -0.1500 + 10 C6 0.4721 3.8094 2.0587 C.2 1 UNCH -0.1500 + 11 C7 0.7237 5.7573 5.3040 C.2 1 UNCH 0.6338 + 12 C8 0.3797 7.6298 6.6562 C.3 1 UNCH 0.2800 + 13 C9 3.2393 3.1849 4.0425 C.3 1 UNCH 0.1935 + 14 H3 -1.8680 5.2299 4.7977 H 1 UNCH 0.1500 + 15 H4 -2.8221 4.0009 2.8810 H 1 UNCH 0.1500 + 16 H5 -1.3292 3.0926 1.1180 H 1 UNCH 0.1500 + 17 H6 1.1102 3.4146 1.2688 H 1 UNCH 0.1500 + 18 H81 -0.3149 8.4667 6.7695 H 1 UNCH 0.0000 + 19 H82 0.3723 7.0451 7.5814 H 1 UNCH 0.0000 + 20 H83 1.3783 8.0321 6.4590 H 1 UNCH 0.0000 + 21 H91 2.7851 3.1709 5.0352 H 1 UNCH 0.0000 + 22 H92 2.8832 2.3331 3.4577 H 1 UNCH 0.0000 + 23 H93 4.3254 3.1212 4.1441 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 5 1 + 3 1 13 1 + 4 3 11 2 + 5 4 11 1 + 6 4 12 1 + 7 5 6 1 + 8 5 10 2 + 9 6 7 2 + 10 6 11 1 + 11 7 8 1 + 12 7 14 1 + 13 8 9 2 + 14 8 15 1 + 15 9 10 1 + 16 9 16 1 + 17 10 17 1 + 18 12 18 1 + 19 12 19 1 + 20 12 20 1 + 21 13 21 1 + 22 13 22 1 + 23 13 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 2-(METHYLSULFINYL)BENZOATE +@MOLECULE +NAESCB01 + 18 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.6821 12.1613 -0.2220 S.2 1 NAES -0.7500 + 2 S2 0.7005 10.0651 0.3119 S.3 1 NAES -0.7500 + 3 C1 2.3317 10.4914 -0.0195 C.2 1 NAES 0.7960 + 4 N1 3.3087 9.5428 -0.1178 N.3 1 NAES -0.8962 + 5 C2 3.0537 8.1213 0.1425 C.3 1 NAES 0.3001 + 6 C3 4.6892 9.8714 -0.4914 C.3 1 NAES 0.3001 + 7 C4 3.1709 7.7664 1.6183 C.3 1 NAES 0.0000 + 8 C5 4.8928 9.9148 -1.9995 C.3 1 NAES 0.0000 + 9 H1 2.0948 7.8029 -0.2775 H 1 NAES 0.0000 + 10 H2 3.7988 7.5354 -0.4115 H 1 NAES 0.0000 + 11 H3 5.0260 10.7939 -0.0088 H 1 NAES 0.0000 + 12 H4 5.3468 9.0953 -0.0786 H 1 NAES 0.0000 + 13 H5 3.0077 6.6939 1.7628 H 1 NAES 0.0000 + 14 H6 2.4424 8.3060 2.2298 H 1 NAES 0.0000 + 15 H7 4.1676 8.0124 1.9996 H 1 NAES 0.0000 + 16 H8 5.9405 10.1286 -2.2330 H 1 NAES 0.0000 + 17 H9 4.2757 10.6818 -2.4755 H 1 NAES 0.0000 + 18 H10 4.6329 8.9534 -2.4550 H 1 NAES 0.0000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 6 1 + 5 4 5 1 + 6 5 10 1 + 7 5 9 1 + 8 5 7 1 + 9 6 12 1 + 10 6 11 1 + 11 6 8 1 + 12 7 15 1 + 13 7 14 1 + 14 7 13 1 + 15 8 18 1 + 16 8 17 1 + 17 8 16 1 +@SUBSTRUCTURE + 1 NAES 1 +@COMMENT +COMMENT SODIUM N,N-DIETHYLDITHIOCARBAMATE TRIHYDRATE +@MOLECULE +NHOXAL06 + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.4454 0.4676 8.9712 C.2 1 CHGB 0.5730 + 2 C2 -0.6693 1.8061 8.9913 C.2 1 CHGB 0.9470 + 3 O1 -0.9720 -0.5853 9.3806 O.2 1 CHGB -0.5700 + 4 O2 -2.6992 0.5666 8.4585 O.3 1 CHGB -0.6500 + 5 O3 -1.2694 2.8366 8.5370 O.2 1 CHGB -0.9000 + 6 O4 0.5153 1.7769 9.4621 O.3 1 CHGB -0.9000 + 7 H1 -3.0318 -0.3459 8.5219 H 1 CHGB 0.5000 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 1 + 4 2 5 2 + 5 2 6 1 + 6 4 7 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM HYDROGEN OXALATE MONOHYDRATE (AT 120 DEG.K) +@MOLECULE +PHOSLA10 + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -2.9484 0.8757 9.5739 P 1 UNCH 1.3584 + 2 O1 -2.7557 2.0961 8.5021 O.3 1 UNCH -0.3479 + 3 O2 -4.1806 0.8757 10.4275 O.3 1 UNCH -0.7000 + 4 N1 -1.5800 0.8757 10.5522 N.3 1 UNCH 0.4536 + 5 N2 -0.3198 0.8757 10.0164 N.2 1 UNCH -0.7068 + 6 N3 -0.2190 0.8757 12.2945 N.2 1 UNCH -0.5653 + 7 C1 -2.5120 1.5463 7.2288 C.2 1 UNCH -0.0615 + 8 C2 -2.2940 2.5082 6.1189 C.3 1 UNCH 0.1382 + 9 C3 0.4471 0.8757 11.1073 C.2 1 UNCH 0.3660 + 10 C4 -1.4766 0.8757 11.9231 C.2 1 UNCH 0.0365 + 11 H11 -1.4322 3.1467 6.3374 H 1 UNCH 0.0000 + 12 H12 -2.1077 2.0087 5.1646 H 1 UNCH 0.0000 + 13 H13 -3.1733 3.1483 5.9966 H 1 UNCH 0.0000 + 14 H3 1.5280 0.8757 11.0351 H 1 UNCH 0.1500 + 15 H4 -2.3479 0.8757 12.5640 H 1 UNCH 0.1500 + 16 O1B -2.7557 -0.3447 8.5021 O.3 1 UNCH -0.3479 + 17 C1B -2.5120 0.2051 7.2288 C.2 1 UNCH -0.0615 + 18 C2B -2.2940 -0.7568 6.1189 C.3 1 UNCH 0.1382 + 19 H11B -1.4323 -1.3953 6.3374 H 1 UNCH 0.0000 + 20 H12B -2.1077 -0.2573 5.1646 H 1 UNCH 0.0000 + 21 H13B -3.1734 -1.3969 5.9967 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 16 1 + 5 2 7 1 + 6 4 5 1 + 7 4 10 am + 8 5 9 2 + 9 6 9 am + 10 6 10 2 + 11 7 8 1 + 12 7 17 2 + 13 8 11 1 + 14 8 12 1 + 15 8 13 1 + 16 9 14 1 + 17 10 15 1 + 18 16 17 1 + 19 17 18 1 + 20 18 19 1 + 21 18 20 1 + 22 18 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,5-DIMETHYL-2-(1,2,4-TRIAZOL-1-YL)-2-OXO-1,3,2-DIOXAPHOSPH +@MOLECULE +PHOSLB10 + 34 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 9.7278 4.6369 15.0017 P 1 PHOS 1.5604 + 2 O1 8.9147 4.2667 13.6141 O.3 1 PHOS -0.3479 + 3 O2 10.2034 6.1235 14.4671 O.3 1 PHOS -0.3479 + 4 O3 8.8091 4.7419 16.1878 O.3 1 PHOS -0.7000 + 5 N1 11.0273 3.7223 15.0768 N.2 1 PHOS -0.7680 + 6 N2 10.0978 1.6991 15.9462 N.3 1 PHOS -0.7882 + 7 N3 12.3565 1.8761 15.5295 N.3 1 PHOS -0.7882 + 8 C1 9.0216 5.3183 12.6917 C.2 1 PHOS -0.0615 + 9 C2 9.7343 6.3456 13.1636 C.2 1 PHOS -0.0615 + 10 C3 8.3484 5.1312 11.3829 C.3 1 PHOS 0.1382 + 11 C4 10.0908 7.6427 12.5376 C.3 1 PHOS 0.1382 + 12 C5 11.1182 2.5043 15.4896 C.2 1 PHOS 0.5500 + 13 C6 8.9126 1.4727 15.1288 C.3 1 PHOS 0.3691 + 14 C7 9.8256 1.7219 17.3843 C.3 1 PHOS 0.3691 + 15 C8 13.5248 2.5845 15.0118 C.3 1 PHOS 0.3691 + 16 C9 12.4722 0.4209 15.5149 C.3 1 PHOS 0.3691 + 17 H31 8.7539 4.2520 10.8724 H 1 PHOS 0.0000 + 18 H32 7.2746 4.9780 11.5293 H 1 PHOS 0.0000 + 19 H33 8.4770 5.9919 10.7213 H 1 PHOS 0.0000 + 20 H41 9.6891 7.7410 11.5256 H 1 PHOS 0.0000 + 21 H42 9.6990 8.4711 13.1361 H 1 PHOS 0.0000 + 22 H43 11.1788 7.7467 12.4782 H 1 PHOS 0.0000 + 23 H62 8.4810 0.4935 15.3619 H 1 PHOS 0.0000 + 24 H63 8.1458 2.2313 15.3095 H 1 PHOS 0.0000 + 25 H71 9.2395 2.6027 17.6613 H 1 PHOS 0.0000 + 26 H72 9.2676 0.8272 17.6801 H 1 PHOS 0.0000 + 27 H73 10.7573 1.7327 17.9603 H 1 PHOS 0.0000 + 28 H81 13.4945 2.6233 13.9179 H 1 PHOS 0.0000 + 29 H82 14.4549 2.0910 15.3139 H 1 PHOS 0.0000 + 30 H83 13.5735 3.6067 15.4026 H 1 PHOS 0.0000 + 31 H91 11.9391 -0.0326 16.3566 H 1 PHOS 0.0000 + 32 H92 13.5159 0.0993 15.6014 H 1 PHOS 0.0000 + 33 H93 12.0715 0.0161 14.5795 H 1 PHOS 0.0000 + 34 H2 9.1680 1.4702 14.0639 H 1 PHOS 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 2 8 1 + 6 3 9 1 + 7 5 12 2 + 8 6 14 1 + 9 6 13 1 + 10 6 12 am + 11 7 16 1 + 12 7 15 1 + 13 7 12 am + 14 8 10 1 + 15 8 9 2 + 16 9 11 1 + 17 10 19 1 + 18 10 18 1 + 19 10 17 1 + 20 11 22 1 + 21 11 21 1 + 22 11 20 1 + 23 13 34 1 + 24 13 24 1 + 25 13 23 1 + 26 14 27 1 + 27 14 26 1 + 28 14 25 1 + 29 15 30 1 + 30 15 29 1 + 31 15 28 1 + 32 16 33 1 + 33 16 32 1 + 34 16 31 1 +@SUBSTRUCTURE + 1 PHOS 1 +@COMMENT +COMMENT 4,5-DIMETHYL-2-(TETRAMETHYLGUANIDYL)-2-OXO-1,3,2-DIOXAPHOSP +@MOLECULE +PIMTAZ01 + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.9328 2.9057 5.7589 S.3 1 UNCH -0.3710 + 2 N1 6.0664 0.9887 7.4970 N.3 1 UNCH -0.7882 + 3 N2 6.7250 3.0300 8.3481 N.2 1 UNCH -0.6960 + 4 C1 5.3387 1.2459 5.2518 C.3 1 UNCH 0.2300 + 5 C2 5.0720 0.4954 6.5655 C.3 1 UNCH 0.3691 + 6 C3 5.9751 0.7697 8.9234 C.3 1 UNCH 0.3691 + 7 C4 6.7755 1.9992 9.4524 C.3 1 UNCH 0.3895 + 8 C5 6.3258 2.3196 7.3399 C.2 1 UNCH 0.6410 + 9 C6 6.2414 2.4847 10.7820 C.2 1 UNCH -0.1435 + 10 C7 6.5728 1.7927 11.9583 C.2 1 UNCH -0.1500 + 11 C8 6.0683 2.2046 13.1934 C.2 1 UNCH -0.1500 + 12 C9 5.2256 3.3113 13.2686 C.2 1 UNCH -0.1500 + 13 C10 4.8886 4.0076 12.1100 C.2 1 UNCH -0.1500 + 14 C11 5.3921 3.5965 10.8744 C.2 1 UNCH -0.1500 + 15 H1 4.4442 1.3135 4.6274 H 1 UNCH 0.0000 + 16 H2 6.1374 0.7572 4.6847 H 1 UNCH 0.0000 + 17 H3 5.1559 -0.5869 6.4265 H 1 UNCH 0.0000 + 18 H4 4.0602 0.7173 6.9273 H 1 UNCH 0.0000 + 19 H5 4.9307 0.7885 9.2578 H 1 UNCH 0.0000 + 20 H6 6.4338 -0.1764 9.2265 H 1 UNCH 0.0000 + 21 H7 7.8346 1.7318 9.5739 H 1 UNCH 0.0000 + 22 H8 7.2346 0.9301 11.9212 H 1 UNCH 0.1500 + 23 H9 6.3368 1.6651 14.0978 H 1 UNCH 0.1500 + 24 H10 4.8363 3.6357 14.2298 H 1 UNCH 0.1500 + 25 H11 4.2374 4.8760 12.1658 H 1 UNCH 0.1500 + 26 H12 5.1237 4.1569 9.9805 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 8 1 + 3 2 5 1 + 4 2 6 1 + 5 2 8 am + 6 3 7 1 + 7 3 8 2 + 8 4 5 1 + 9 4 15 1 + 10 4 16 1 + 11 5 17 1 + 12 5 18 1 + 13 6 7 1 + 14 6 19 1 + 15 6 20 1 + 16 7 9 1 + 17 7 21 1 + 18 9 10 2 + 19 9 14 1 + 20 10 11 1 + 21 10 22 1 + 22 11 12 2 + 23 11 23 1 + 24 12 13 1 + 25 12 24 1 + 26 13 14 2 + 27 13 25 1 + 28 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT RAC-6-PHENYL-2,3,5,6-TETRAHYDROIMIDAZO(2,1-B)THIAZOLE (FOR +@MOLECULE +QUICNA01 + 16 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -1.8005 1.5124 0.8734 C.2 1 QUIC 0.1820 + 2 C3 -2.5948 1.6221 2.0065 C.2 1 QUIC -0.1790 + 3 C4 -1.9655 1.6978 3.2643 C.2 1 QUIC -0.1500 + 4 C5 -0.5783 1.6969 3.3690 C.2 1 QUIC -0.1500 + 5 C6 0.1656 1.6313 2.2037 C.2 1 QUIC 0.2110 + 6 C7 -2.1453 1.3256 -0.5684 C.2 1 QUIC 0.9790 + 7 C8 -4.0722 1.7466 1.9420 C.2 1 QUIC 0.9790 + 8 H1 -2.5912 1.7751 4.1541 H 1 QUIC 0.1500 + 9 H2 -0.1004 1.7629 4.3399 H 1 QUIC 0.1500 + 10 H3 1.2463 1.6408 2.1751 H 1 QUIC 0.1500 + 11 H4 0.0089 1.4963 0.1095 H 1 QUIC 0.4570 + 12 N1 -0.4585 1.5464 1.0345 N.2 1 QUIC -0.1790 + 13 O1 -1.0749 1.4369 -1.2733 O.2 1 QUIC -0.9000 + 14 O2 -3.2858 0.9873 -0.9682 O.3 1 QUIC -0.9000 + 15 O3 -4.5051 2.8504 1.4995 O.2 1 QUIC -0.9000 + 16 O4 -4.7252 0.8131 2.4974 O.3 1 QUIC -0.9000 +@BOND + 1 1 12 1 + 2 1 6 1 + 3 1 2 2 + 4 2 7 1 + 5 2 3 1 + 6 3 8 1 + 7 3 4 2 + 8 4 9 1 + 9 4 5 1 + 10 5 12 2 + 11 5 10 1 + 12 6 14 1 + 13 6 13 2 + 14 7 16 1 + 15 7 15 2 + 16 11 12 1 +@SUBSTRUCTURE + 1 QUIC 1 +@COMMENT +COMMENT QUINOLINIC ACID (NEUTRON STUDY) PYRIDINE-2,3-DICARBOXYLIC A +@MOLECULE +SABNOY + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 15.0151 0.4670 -0.2791 N.3 1 UNCH -0.5390 + 2 C1 15.6679 0.1130 -1.4245 C.2 1 UNCH 0.6900 + 3 N2 14.9039 0.0981 -2.5521 N.3 1 UNCH -0.4900 + 4 C2 13.5749 0.4046 -2.6026 C.2 1 UNCH 0.6156 + 5 C3 12.8960 0.7904 -1.3107 C.2 1 UNCH 0.1144 + 6 C4 13.6860 0.7916 -0.2261 C.2 1 UNCH -0.0410 + 7 N3 11.5513 1.0887 -1.4297 N.3 1 UNCH -0.5500 + 8 C5 10.5773 1.4733 -0.5472 C.2 1 UNCH 0.6500 + 9 N4 9.3335 1.7286 -0.7757 N.2 1 UNCH -0.6610 + 10 C6 8.8546 1.6215 -2.0453 C.2 1 UNCH 0.9310 + 11 O1 7.5320 1.9341 -2.0519 O.3 1 UNCH -0.4300 + 12 C7 6.9207 1.8555 -3.3379 C.3 1 UNCH 0.2800 + 13 O2 9.4935 1.2972 -3.0383 O.2 1 UNCH -0.5700 + 14 C8 10.1029 1.9849 1.7476 C.3 1 UNCH 0.2800 + 15 C9 10.8453 2.0385 3.0687 C.3 1 UNCH 0.0000 + 16 O3 12.9390 0.3725 -3.6547 O.2 1 UNCH -0.5700 + 17 O4 16.8601 -0.1714 -1.4331 O.2 1 UNCH -0.5700 + 18 O5 11.0384 1.5860 0.7302 O.3 1 UNCH -0.4300 + 19 H1 15.5789 0.4798 0.5637 H 1 UNCH 0.3700 + 20 H2 15.3569 -0.1593 -3.4144 H 1 UNCH 0.3700 + 21 H3 13.3217 1.0497 0.7612 H 1 UNCH 0.1500 + 22 H4 11.2292 0.9961 -2.4016 H 1 UNCH 0.4000 + 23 H5 5.8663 2.1245 -3.2292 H 1 UNCH 0.0000 + 24 H6 7.3879 2.5634 -4.0298 H 1 UNCH 0.0000 + 25 H7 6.9778 0.8348 -3.7292 H 1 UNCH 0.0000 + 26 H8 9.2907 1.2525 1.8102 H 1 UNCH 0.0000 + 27 H9 9.6994 2.9754 1.5106 H 1 UNCH 0.0000 + 28 H10 11.2768 1.0609 3.3081 H 1 UNCH 0.0000 + 29 H11 11.6772 2.7485 3.0146 H 1 UNCH 0.0000 + 30 H12 10.1767 2.3383 3.8804 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 6 1 + 3 1 19 1 + 4 2 3 am + 5 2 17 2 + 6 3 4 am + 7 3 20 1 + 8 4 5 1 + 9 4 16 2 + 10 5 6 2 + 11 5 7 1 + 12 6 21 1 + 13 7 8 am + 14 7 22 1 + 15 8 9 2 + 16 8 18 1 + 17 9 10 am + 18 10 11 1 + 19 10 13 2 + 20 11 12 1 + 21 12 23 1 + 22 12 24 1 + 23 12 25 1 + 24 14 15 1 + 25 14 18 1 + 26 14 26 1 + 27 14 27 1 + 28 15 28 1 + 29 15 29 1 + 30 15 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-(1-(3-METHOXYCARBONYL-O-ETHYLPSEUDOUREIDO))URACIL +@MOLECULE +SACXAV + 35 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 10.1523 1.9196 4.9868 S.3 1 UNCH -0.3315 + 2 N1 9.6160 -0.0364 3.1665 N.2 1 UNCH -0.6200 + 3 N2 8.9848 -2.3216 3.6761 N.2 1 UNCH -0.5670 + 4 N3 9.4474 -0.7140 6.8320 N.2 1 UNCH -0.5653 + 5 N4 8.8837 -2.7190 6.0581 N.3 1 UNCH 0.0332 + 6 C1 9.2624 -1.2978 2.8457 C.2 1 UNCH 0.4700 + 7 C2 9.0963 -1.9417 4.9570 C.2 1 UNCH 0.1054 + 8 C3 9.4455 -0.6938 5.4491 C.2 1 UNCH 0.2272 + 9 C4 9.7151 0.2825 4.4837 C.2 1 UNCH 0.4115 + 10 C5 9.1053 -1.9414 7.1604 C.2 1 UNCH 0.0365 + 11 C6 11.1240 2.4778 3.5485 C.3 1 UNCH 0.2300 + 12 C7 12.4972 1.8084 3.4976 C.3 1 UNCH 0.0000 + 13 C8 13.3119 2.3243 2.3081 C.3 1 UNCH 0.0000 + 14 C9 14.6889 1.6611 2.2472 C.3 1 UNCH 0.0000 + 15 C10 15.5022 2.1759 1.0586 C.3 1 UNCH 0.0000 + 16 C11 16.8781 1.5130 0.9976 C.3 1 UNCH 0.0000 + 17 C12 17.6899 2.0220 -0.1828 C.3 1 UNCH 0.0000 + 18 H1 9.1929 -1.5148 1.7833 H 1 UNCH 0.1500 + 19 H2 9.0029 -2.3212 8.1688 H 1 UNCH 0.1500 + 20 H3 8.6114 -3.6901 6.0430 H 1 UNCH 0.2700 + 21 H4 10.5636 2.3147 2.6221 H 1 UNCH 0.0000 + 22 H5 11.2523 3.5609 3.6530 H 1 UNCH 0.0000 + 23 H6 12.3932 0.7204 3.4119 H 1 UNCH 0.0000 + 24 H7 13.0470 2.0112 4.4253 H 1 UNCH 0.0000 + 25 H8 13.4310 3.4117 2.3881 H 1 UNCH 0.0000 + 26 H9 12.7672 2.1257 1.3770 H 1 UNCH 0.0000 + 27 H10 15.2335 1.8592 3.1784 H 1 UNCH 0.0000 + 28 H11 14.5697 0.5737 2.1673 H 1 UNCH 0.0000 + 29 H12 14.9575 1.9782 0.1273 H 1 UNCH 0.0000 + 30 H13 15.6216 3.2633 1.1383 H 1 UNCH 0.0000 + 31 H14 16.7644 0.4259 0.9137 H 1 UNCH 0.0000 + 32 H15 17.4285 1.7111 1.9246 H 1 UNCH 0.0000 + 33 H16 18.6697 1.5349 -0.2072 H 1 UNCH 0.0000 + 34 H17 17.8494 3.1027 -0.1124 H 1 UNCH 0.0000 + 35 H18 17.1816 1.8103 -1.1290 H 1 UNCH 0.0000 +@BOND + 1 1 9 1 + 2 1 11 1 + 3 2 6 2 + 4 2 9 1 + 5 3 6 am + 6 3 7 2 + 7 4 8 1 + 8 4 10 2 + 9 5 7 am + 10 5 10 am + 11 5 20 1 + 12 6 18 1 + 13 7 8 1 + 14 8 9 2 + 15 10 19 1 + 16 11 12 1 + 17 11 21 1 + 18 11 22 1 + 19 12 13 1 + 20 12 23 1 + 21 12 24 1 + 22 13 14 1 + 23 13 25 1 + 24 13 26 1 + 25 14 15 1 + 26 14 27 1 + 27 14 28 1 + 28 15 16 1 + 29 15 29 1 + 30 15 30 1 + 31 16 17 1 + 32 16 31 1 + 33 16 32 1 + 34 17 33 1 + 35 17 34 1 + 36 17 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6-N-HEPTYLMERCAPTOPURINE (AT 123 DEG.K) +@MOLECULE +SADXAW + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.8116 3.9810 3.1008 O.2 1 UNCH -0.5700 + 2 O2 3.1700 -0.7097 0.0259 O.2 1 UNCH -0.5700 + 3 O3 5.1264 2.4706 2.6094 O.2 1 UNCH -0.5700 + 4 N1 2.8452 2.4909 2.3176 N.3 1 UNCH -0.2290 + 5 N2 1.8631 0.8705 0.9448 N.2 1 UNCH -0.6610 + 6 N3 4.2026 0.9688 1.1611 N.3 1 UNCH -0.4201 + 7 N4 0.5040 2.4145 1.9938 N.3 1 UNCH -0.4201 + 8 C1 1.7639 1.8879 1.7240 C.2 1 UNCH 0.5700 + 9 C2 1.4838 4.0781 3.4519 C.2 1 UNCH -0.1356 + 10 C3 4.1216 2.0082 2.0602 C.2 1 UNCH 0.6900 + 11 C4 0.2826 3.4930 2.8361 C.2 1 UNCH 0.6156 + 12 C5 5.5027 0.4016 0.8603 C.3 1 UNCH 0.3001 + 13 C6 3.0831 0.3283 0.6764 C.2 1 UNCH 0.8410 + 14 C7 2.6805 3.5647 3.1718 C.2 1 UNCH -0.0410 + 15 C8 -0.6557 1.7946 1.3691 C.3 1 UNCH 0.3001 + 16 H1 3.5788 3.9883 3.6158 H 1 UNCH 0.1500 + 17 H2 1.3436 4.9195 4.1182 H 1 UNCH 0.1500 + 18 H3 5.5160 -0.0279 -0.1460 H 1 UNCH 0.0000 + 19 H4 6.2887 1.1593 0.9287 H 1 UNCH 0.0000 + 20 H5 5.7091 -0.3910 1.5866 H 1 UNCH 0.0000 + 21 H6 -0.7155 0.7494 1.6901 H 1 UNCH 0.0000 + 22 H7 -0.5321 1.8194 0.2814 H 1 UNCH 0.0000 + 23 H8 -1.5904 2.2978 1.6291 H 1 UNCH 0.0000 +@BOND + 1 1 11 2 + 2 2 13 2 + 3 3 10 2 + 4 4 8 am + 5 4 10 am + 6 4 14 1 + 7 5 8 2 + 8 5 13 am + 9 6 10 am + 10 6 12 1 + 11 6 13 am + 12 7 8 am + 13 7 11 am + 14 7 15 1 + 15 9 11 1 + 16 9 14 2 + 17 9 17 1 + 18 12 18 1 + 19 12 19 1 + 20 12 20 1 + 21 14 16 1 + 22 15 21 1 + 23 15 22 1 + 24 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,9-DIMETHYL-2H-PYRIMIDO(1,2-A)(1,3,5)-TRIAZINE-2,4,8(3H,9H +@MOLECULE +SAFFOU + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.9857 0.5170 6.2920 S.3 1 SAFF -0.0800 + 2 N1 3.7587 1.9861 5.1193 N.2 1 SAFF -0.5653 + 3 C1 2.5158 2.5390 4.8480 C.2 1 SAFF 0.2272 + 4 C2 1.4387 1.8762 5.4017 C.2 1 SAFF -0.1100 + 5 C3 3.5998 0.9187 5.8709 C.2 1 SAFF 0.2281 + 6 C1B 2.4400 3.7490 4.0188 C.2 1 SAFF 0.2272 + 7 N1B 1.1971 4.3019 3.7475 N.2 1 SAFF -0.5653 + 8 C2B 3.5171 4.4118 3.4650 C.2 1 SAFF -0.1100 + 9 C3B 1.3560 5.3693 2.9959 C.2 1 SAFF 0.2281 + 10 S1B 2.9701 5.7710 2.5747 S.3 1 SAFF -0.0800 + 11 H1 0.3897 2.1244 5.3236 H 1 SAFF 0.1500 + 12 H2 4.4358 0.3207 6.2096 H 1 SAFF 0.1500 + 13 H3 4.5661 4.1635 3.5432 H 1 SAFF 0.1500 + 14 H4 0.5200 5.9673 2.6572 H 1 SAFF 0.1500 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 2 5 2 + 4 2 3 1 + 5 3 6 1 + 6 3 4 2 + 7 4 11 1 + 8 5 12 1 + 9 6 8 2 + 10 6 7 1 + 11 7 9 2 + 12 8 13 1 + 13 8 10 1 + 14 9 14 1 + 15 9 10 1 +@SUBSTRUCTURE + 1 SAFF 1 +@COMMENT +COMMENT 4,4'-BITHIAZOLE +@MOLECULE +SAFFUA + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.1548 4.2045 0.3619 S.3 1 UNCH -0.0800 + 2 S2 2.8268 6.3276 3.9639 S.3 1 UNCH -0.0800 + 3 N1 4.6654 4.0694 2.8828 N.2 1 UNCH -0.5653 + 4 N2 2.3161 6.4627 1.4430 N.2 1 UNCH -0.5653 + 5 C1 3.9427 4.7277 1.9929 C.2 1 UNCH 0.3781 + 6 C2 5.2820 3.0275 0.8883 C.2 1 UNCH -0.1100 + 7 C3 5.4265 3.1033 2.2551 C.2 1 UNCH 0.0772 + 8 C4 3.0388 5.8044 2.3329 C.2 1 UNCH 0.3781 + 9 C5 1.6996 7.5045 3.4376 C.2 1 UNCH -0.1100 + 10 C6 1.5551 7.4288 2.0707 C.2 1 UNCH 0.0772 + 11 H1 5.7692 2.3581 0.1943 H 1 UNCH 0.1500 + 12 H2 6.0778 2.4738 2.8495 H 1 UNCH 0.1500 + 13 H3 1.2124 8.1740 4.1315 H 1 UNCH 0.1500 + 14 H4 0.9037 8.0583 1.4763 H 1 UNCH 0.1500 +@BOND + 1 1 5 1 + 2 1 6 1 + 3 2 8 1 + 4 2 9 1 + 5 3 5 2 + 6 3 7 1 + 7 4 8 2 + 8 4 10 1 + 9 5 8 1 + 10 6 7 2 + 11 6 11 1 + 12 7 12 1 + 13 9 10 2 + 14 9 13 1 + 15 10 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2'-BITHIAZOLE +@MOLECULE +SAFKAL + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2160 2.3909 2.5230 C.2 1 SAFK 0.1784 + 2 C2 2.8675 1.3735 3.5158 C.2 1 SAFK 0.7200 + 3 N1 2.7814 2.5178 1.1767 N.2 1 SAFK 0.8750 + 4 N2 4.0319 3.3252 2.9432 N.1 1 SAFK 0.3566 + 5 N3 4.7470 4.1233 3.3379 N.2 1 SAFK -0.3700 + 6 O1 1.9985 1.6460 0.7864 O.3 1 SAFK -0.5200 + 7 O2 3.2091 3.4655 0.5089 O.2 1 SAFK -0.5200 + 8 O3 1.9756 1.5081 4.3238 O.2 1 SAFK -0.5700 + 9 O4 3.6701 0.3136 3.4349 O.3 1 SAFK -0.6500 + 10 H1 3.3553 -0.3129 4.1231 H 1 SAFK 0.5000 +@BOND + 1 1 4 2 + 2 1 3 am + 3 1 2 1 + 4 2 9 1 + 5 2 8 2 + 6 3 7 2 + 7 3 6 1 + 8 4 5 2 + 9 9 10 1 +@SUBSTRUCTURE + 1 SAFK 1 +@COMMENT +COMMENT NITRODIAZOACETIC ACID (AT -60 DEG.C) +@MOLECULE +SAHSOJ + 36 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.0709 9.3139 -0.2220 N.3 1 SAHS -0.3940 + 2 C1 0.6322 7.9927 -0.2012 C.2 1 SAHS -0.1410 + 3 C2 -0.3768 7.8023 0.6645 C.2 1 SAHS -0.0372 + 4 C3 -0.7911 9.1026 1.2903 C.3 1 SAHS 0.1382 + 5 C4 0.1939 10.0965 0.6861 C.3 1 SAHS 0.2250 + 6 C5 -0.1822 10.9672 -0.5429 C.3 1 SAHS 0.0530 + 7 C6 0.8401 10.1105 -1.3119 C.2 1 SAHS 0.5770 + 8 C7 0.1671 12.4397 -0.4357 C.3 1 SAHS 0.2800 + 9 C8 -0.1224 13.1639 -1.7432 C.3 1 SAHS 0.0000 + 10 C9 1.2450 6.9138 -1.1282 C.2 1 SAHS 1.0500 + 11 C10 0.0859 5.1256 1.1960 C.3 1 SAHS 0.2300 + 12 C11 -0.4086 3.8687 1.9192 C.3 1 SAHS 0.3691 + 13 C12 -1.3630 3.2493 4.1342 C.2 1 SAHS 0.4400 + 14 O1 1.2820 10.1338 -2.4383 O.2 1 SAHS -0.5700 + 15 O2 -0.6371 13.0188 0.5962 O.3 1 SAHS -0.6800 + 16 S1 -1.2502 6.3672 1.0483 S.3 1 SAHS -0.3310 + 17 O3 0.5084 6.5384 -2.0833 O.3 1 SAHS -0.9000 + 18 O4 2.3794 6.4887 -0.7591 O.2 1 SAHS -0.9000 + 19 N2 -0.8749 4.1757 3.2679 N.3 1 SAHS -0.8191 + 20 N3 -1.1772 1.9795 4.1303 N.2 1 SAHS -0.8500 + 21 H1 -1.8266 9.3636 1.0483 H 1 SAHS 0.0000 + 22 H2 -0.6789 9.0612 2.3795 H 1 SAHS 0.0000 + 23 H3 0.7903 10.6161 1.4481 H 1 SAHS 0.0000 + 24 H4 -1.2078 10.7985 -0.8977 H 1 SAHS 0.0000 + 25 H5 1.2175 12.5789 -0.1553 H 1 SAHS 0.0000 + 26 H6 0.0893 14.2340 -1.6450 H 1 SAHS 0.0000 + 27 H7 0.4774 12.7665 -2.5670 H 1 SAHS 0.0000 + 28 H8 -1.1804 13.0748 -2.0145 H 1 SAHS 0.0000 + 29 H9 0.9265 5.5607 1.7472 H 1 SAHS 0.0000 + 30 H10 0.4232 4.8300 0.2002 H 1 SAHS 0.0000 + 31 H11 -1.2172 3.3963 1.3484 H 1 SAHS 0.0000 + 32 H12 0.4190 3.1523 1.9739 H 1 SAHS 0.0000 + 33 H13 -1.9803 3.7007 4.9298 H 1 SAHS 0.0600 + 34 H14 -0.4134 13.9648 0.6368 H 1 SAHS 0.4000 + 35 H15 -1.3266 5.0887 3.3085 H 1 SAHS 0.4000 + 36 H16 -0.5656 1.7369 3.3483 H 1 SAHS 0.4000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 7 am + 4 2 3 2 + 5 2 10 1 + 6 3 4 1 + 7 3 16 1 + 8 4 5 1 + 9 4 21 1 + 10 4 22 1 + 11 5 6 1 + 12 5 23 1 + 13 6 7 1 + 14 6 8 1 + 15 6 24 1 + 16 7 14 2 + 17 8 9 1 + 18 8 15 1 + 19 8 25 1 + 20 9 26 1 + 21 9 27 1 + 22 9 28 1 + 23 10 17 1 + 24 10 18 2 + 25 11 12 1 + 26 11 16 1 + 27 11 29 1 + 28 11 30 1 + 29 12 19 1 + 30 12 31 1 + 31 12 32 1 + 32 13 19 am + 33 13 20 2 + 34 13 33 1 + 35 15 34 1 + 36 19 35 1 + 37 20 36 1 +@SUBSTRUCTURE + 1 SAHS 1 +@COMMENT +COMMENT 6-(1-HYDROXYETHYL)-3-(2-(IMINIOMETHYLAMINO)ETHYLTHIO)-7-OXO +@MOLECULE +SAHSUP + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.5494 7.9857 3.8546 C.2 1 SAHS -0.1790 + 2 C2 6.9956 9.0591 3.1239 C.2 1 SAHS 0.1015 + 3 C3 6.6913 8.8797 1.7613 C.2 1 SAHS -0.1500 + 4 C4 6.9053 7.6554 1.1268 C.2 1 SAHS -0.1500 + 5 C5 7.4305 6.5897 1.8448 C.2 1 SAHS -0.1500 + 6 C6 7.7467 6.7544 3.1929 C.2 1 SAHS -0.1500 + 7 C7 7.8979 8.0492 5.3171 C.2 1 SAHS 0.9790 + 8 O1 8.2856 9.1570 5.8184 O.2 1 SAHS -0.9000 + 9 O2 7.6399 7.0208 6.0237 O.3 1 SAHS -0.9000 + 10 S1 6.6584 10.6981 3.7758 S.3 1 SAHS -0.3315 + 11 C8 4.9855 10.4733 4.4800 C.3 1 SAHS 0.2300 + 12 C9 4.8581 9.4672 5.6242 C.3 1 SAHS 0.4895 + 13 C10 6.1034 8.8992 7.6912 C.2 1 SAHS 0.5588 + 14 N1 5.9438 9.6047 6.5932 N.2 1 SAHS -0.7939 + 15 N2 5.2418 8.0597 8.2185 N.3 1 SAHS -0.7544 + 16 H1 6.2910 9.7041 1.1747 H 1 SAHS 0.1500 + 17 H2 6.6689 7.5393 0.0729 H 1 SAHS 0.1500 + 18 H3 7.6031 5.6320 1.3616 H 1 SAHS 0.1500 + 19 H4 8.1588 5.9132 3.7514 H 1 SAHS 0.1500 + 20 H5 4.2880 10.2145 3.6763 H 1 SAHS 0.0000 + 21 H6 4.6878 11.4594 4.8533 H 1 SAHS 0.0000 + 22 H7 4.8691 8.4440 5.2334 H 1 SAHS 0.0000 + 23 H8 3.9023 9.6141 6.1389 H 1 SAHS 0.0000 + 24 H9 7.0673 8.9888 8.1813 H 1 SAHS 0.1500 + 25 H10 6.8550 9.9883 6.2576 H 1 SAHS 0.4500 + 26 H11 5.5360 7.4996 9.0083 H 1 SAHS 0.4500 + 27 H12 4.3847 7.8273 7.7457 H 1 SAHS 0.4500 +@BOND + 1 1 7 1 + 2 1 6 2 + 3 1 2 1 + 4 2 10 1 + 5 2 3 2 + 6 3 16 1 + 7 3 4 1 + 8 4 17 1 + 9 4 5 2 + 10 5 18 1 + 11 5 6 1 + 12 6 19 1 + 13 7 9 1 + 14 7 8 2 + 15 10 11 1 + 16 11 21 1 + 17 11 20 1 + 18 11 12 1 + 19 12 23 1 + 20 12 22 1 + 21 12 14 1 + 22 13 24 1 + 23 13 15 am + 24 13 14 2 + 25 14 25 1 + 26 15 27 1 + 27 15 26 1 +@SUBSTRUCTURE + 1 SAHS 1 +@COMMENT +COMMENT 2-(2-(IMINIOMETHYLAMINO)ETHYLTHIO)BENZOATE +@MOLECULE +SAKGUG + 35 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 4.9050 12.6791 -0.7502 CL 1 UNCH -0.1400 + 2 CL2 5.2604 15.4684 -2.3851 CL 1 UNCH -0.1400 + 3 O1 6.0818 10.4890 -2.4639 O.2 1 UNCH -0.5700 + 4 O2 6.6313 14.8016 -4.9917 O.2 1 UNCH -0.5700 + 5 N1 10.2774 14.3512 -3.9127 N.1 1 UNCH -0.5571 + 6 N2 9.8438 10.9479 -1.9179 N.1 1 UNCH -0.5571 + 7 C1 7.9127 11.7788 -4.8679 C.3 1 UNCH 0.0640 + 8 C2 6.7076 11.4069 -5.7643 C.2 1 UNCH -0.0320 + 9 C3 5.3383 11.6462 -5.6538 C.2 1 UNCH -0.1500 + 10 C4 4.4644 11.1776 -6.6431 C.2 1 UNCH -0.1500 + 11 C5 4.9433 10.4690 -7.7480 C.2 1 UNCH -0.1500 + 12 C6 6.3055 10.2170 -7.8819 C.2 1 UNCH -0.1500 + 13 C7 7.1717 10.6829 -6.8987 C.2 1 UNCH 0.0000 + 14 C8 8.6208 10.5394 -6.8285 C.2 1 UNCH 0.0000 + 15 C9 9.4745 9.9053 -7.7247 C.2 1 UNCH -0.1500 + 16 C10 10.8405 9.8906 -7.4528 C.2 1 UNCH -0.1500 + 17 C11 11.3359 10.5039 -6.2987 C.2 1 UNCH -0.1500 + 18 C12 10.4748 11.1416 -5.3980 C.2 1 UNCH -0.1500 + 19 C13 9.1030 11.1692 -5.6492 C.2 1 UNCH -0.0320 + 20 C14 7.8434 11.7850 -3.3473 C.3 1 UNCH 0.1050 + 21 C15 6.5517 11.6031 -2.6402 C.2 1 UNCH 0.5556 + 22 C16 5.9020 12.8483 -2.1481 C.2 1 UNCH 0.1544 + 23 C17 6.0483 13.9968 -2.8213 C.2 1 UNCH 0.1544 + 24 C18 6.8618 14.0371 -4.0669 C.2 1 UNCH 0.5556 + 25 C19 8.0110 13.0997 -4.1179 C.3 1 UNCH 0.1050 + 26 C20 8.9513 11.2903 -2.5731 C.1 1 UNCH 0.4521 + 27 C21 9.2701 13.7925 -4.0396 C.1 1 UNCH 0.4521 + 28 H1 4.8976 12.1868 -4.8273 H 1 UNCH 0.1500 + 29 H2 3.3961 11.3667 -6.5528 H 1 UNCH 0.1500 + 30 H3 4.2486 10.1135 -8.5056 H 1 UNCH 0.1500 + 31 H4 6.6708 9.6660 -8.7426 H 1 UNCH 0.1500 + 32 H5 9.0982 9.4268 -8.6229 H 1 UNCH 0.1500 + 33 H6 11.5259 9.4004 -8.1403 H 1 UNCH 0.1500 + 34 H7 12.4055 10.4858 -6.0971 H 1 UNCH 0.1500 + 35 H8 10.9183 11.6002 -4.5192 H 1 UNCH 0.1500 +@BOND + 1 1 22 1 + 2 2 23 1 + 3 3 21 2 + 4 4 24 2 + 5 5 27 3 + 6 6 26 3 + 7 7 8 1 + 8 7 19 1 + 9 7 20 1 + 10 7 25 1 + 11 8 9 2 + 12 8 13 1 + 13 9 10 1 + 14 9 28 1 + 15 10 11 2 + 16 10 29 1 + 17 11 12 1 + 18 11 30 1 + 19 12 13 2 + 20 12 31 1 + 21 13 14 1 + 22 14 15 2 + 23 14 19 1 + 24 15 16 1 + 25 15 32 1 + 26 16 17 2 + 27 16 33 1 + 28 17 18 1 + 29 17 34 1 + 30 18 19 2 + 31 18 35 1 + 32 20 21 1 + 33 20 25 1 + 34 20 26 1 + 35 21 22 1 + 36 22 23 2 + 37 23 24 1 + 38 24 25 1 + 39 25 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3',4'-DICHLORO-1',6'-DICYANOSPIRO(FLUORENE-9,7'-(3')NORCARE +@MOLECULE +SALVEG + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.5829 1.5740 -0.1310 S.2 1 SALV 0.3685 + 2 O1 1.0851 2.7520 0.6489 O.2 1 SALV -0.5000 + 3 O2 2.4235 -2.8789 0.2265 O.2 1 SALV -0.5700 + 4 O3 -0.6690 -0.1875 -1.7699 O.2 1 SALV -0.5700 + 5 N1 2.9058 0.8892 0.6292 N.3 1 SALV -0.6920 + 6 N2 0.9231 -1.7005 -1.0593 N.3 1 SALV -0.4201 + 7 C1 1.6838 -1.9223 0.0525 C.2 1 SALV 0.5690 + 8 C2 1.3820 -0.8554 1.0797 C.3 1 SALV 0.0610 + 9 C3 2.5691 -0.0955 1.6639 C.3 1 SALV 0.2700 + 10 C4 0.5383 0.1460 0.2998 C.3 1 SALV 0.2545 + 11 C5 0.1625 -0.5722 -0.9611 C.2 1 SALV 0.5690 + 12 C6 0.8739 -2.6084 -2.1811 C.3 1 SALV 0.3001 + 13 C7 3.7814 -0.9278 2.1404 C.3 1 SALV 0.0000 + 14 C8 3.3712 -1.9327 3.2238 C.3 1 SALV 0.0000 + 15 C9 4.9028 -0.0391 2.6979 C.3 1 SALV 0.0000 + 16 H1 3.5523 1.5767 1.0181 H 1 SALV 0.3600 + 17 H2 0.7798 -1.3257 1.8668 H 1 SALV 0.0000 + 18 H3 2.1967 0.4679 2.5329 H 1 SALV 0.0000 + 19 H4 -0.3472 0.4722 0.8518 H 1 SALV 0.0000 + 20 H5 0.5079 -2.0969 -3.0752 H 1 SALV 0.0000 + 21 H6 0.1925 -3.4267 -1.9299 H 1 SALV 0.0000 + 22 H7 1.8682 -3.0240 -2.3678 H 1 SALV 0.0000 + 23 H8 4.2059 -1.4829 1.2955 H 1 SALV 0.0000 + 24 H9 4.2354 -2.5184 3.5560 H 1 SALV 0.0000 + 25 H10 2.6209 -2.6403 2.8606 H 1 SALV 0.0000 + 26 H11 2.9554 -1.4212 4.0988 H 1 SALV 0.0000 + 27 H12 5.7233 -0.6498 3.0904 H 1 SALV 0.0000 + 28 H13 4.5377 0.5980 3.5106 H 1 SALV 0.0000 + 29 H14 5.3262 0.6050 1.9210 H 1 SALV 0.0000 +@BOND + 1 1 2 2 + 2 1 5 1 + 3 1 10 1 + 4 3 7 2 + 5 4 11 2 + 6 5 9 1 + 7 5 16 1 + 8 6 7 am + 9 6 11 am + 10 6 12 1 + 11 7 8 1 + 12 8 9 1 + 13 8 10 1 + 14 8 17 1 + 15 9 13 1 + 16 9 18 1 + 17 10 11 1 + 18 10 19 1 + 19 12 20 1 + 20 12 21 1 + 21 12 22 1 + 22 13 14 1 + 23 13 15 1 + 24 13 23 1 + 25 14 24 1 + 26 14 25 1 + 27 14 26 1 + 28 15 27 1 + 29 15 28 1 + 30 15 29 1 +@SUBSTRUCTURE + 1 SALV 1 +@COMMENT +COMMENT 4-ISOPROPYL-7-METHYL-6,8-DIOXO-2-THIA-3,7-DIAZABICYCLO(3.3. +@MOLECULE +SAMFUH + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 11.5071 2.9850 1.9858 S.2 1 SAMF -0.7500 + 2 S2 11.8567 0.5080 3.6302 S.3 1 SAMF -0.7500 + 3 S3 10.9607 3.6677 5.3954 S.3 1 SAMF 0.8491 + 4 C1 11.7733 2.2164 3.4896 C.2 1 SAMF 0.4270 + 5 N1 12.1148 2.9289 4.5780 N.3 1 SAMF -0.4671 + 6 O1 10.5135 4.9599 4.8663 O.3 1 SAMF -0.6500 + 7 O2 11.2295 3.7316 6.8391 O.3 1 SAMF -0.6500 + 8 C2 9.4305 2.6838 5.3682 C.2 1 SAMF -0.0090 + 9 C3 8.4362 2.9782 4.4341 C.2 1 SAMF -0.1500 + 10 C4 7.2478 2.2479 4.4448 C.2 1 SAMF -0.1500 + 11 C5 7.0551 1.2395 5.3929 C.2 1 SAMF -0.1500 + 12 C6 8.0511 0.9579 6.3319 C.2 1 SAMF -0.1500 + 13 C7 9.2420 1.6845 6.3249 C.2 1 SAMF -0.1500 + 14 H1 8.6109 3.7529 3.6921 H 1 SAMF 0.1500 + 15 H2 6.4875 2.4589 3.7007 H 1 SAMF 0.1500 + 16 H3 6.1370 0.6622 5.3881 H 1 SAMF 0.1500 + 17 H4 7.9140 0.1647 7.0585 H 1 SAMF 0.1500 + 18 H5 10.0344 1.4691 7.0352 H 1 SAMF 0.1500 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 8 1 + 4 3 7 1 + 5 3 6 1 + 6 3 5 1 + 7 4 5 1 + 8 8 13 1 + 9 8 9 2 + 10 9 14 1 + 11 9 10 1 + 12 10 15 1 + 13 10 11 2 + 14 11 16 1 + 15 11 12 1 + 16 12 17 1 + 17 12 13 2 + 18 13 18 1 +@SUBSTRUCTURE + 1 SAMF 1 +@COMMENT +COMMENT DI-POTASSIUM N-PHENYLSULFONYL-DITHIOCARBIMATE DIHYDRATE +@MOLECULE +SAMXUZ + 33 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 5.7317 3.4201 0.7165 P 1 SAMX 1.3482 + 2 S1 7.2309 4.2311 1.6818 S.3 1 SAMX -0.6773 + 3 S2 4.5880 -0.5750 1.5608 S.2 1 SAMX -0.3800 + 4 N1 5.0303 2.0992 1.5664 N.3 1 SAMX -0.6161 + 5 N2 5.7411 1.0558 -0.3199 N.3 1 SAMX -0.4691 + 6 N3 4.4427 4.3718 0.3013 N.3 1 SAMX -0.8079 + 7 C1 5.1333 0.8777 0.9247 C.2 1 SAMX 0.5000 + 8 C2 6.1399 2.3450 -0.6311 C.2 1 SAMX -0.0380 + 9 C3 4.4898 2.2752 2.9038 C.3 1 SAMX 0.3001 + 10 C4 5.9950 -0.0366 -1.2644 C.3 1 SAMX 0.3001 + 11 C5 6.7547 2.7348 -1.7577 C.2 1 SAMX -0.3000 + 12 C6 3.2050 3.8429 -0.2640 C.3 1 SAMX 0.2700 + 13 C7 3.1330 4.0027 -1.7772 C.3 1 SAMX 0.0000 + 14 C8 4.4190 5.8170 0.4964 C.3 1 SAMX 0.2700 + 15 C9 3.9119 6.1951 1.8814 C.3 1 SAMX 0.0000 + 16 H1 4.4111 3.3389 3.1372 H 1 SAMX 0.0000 + 17 H2 5.1536 1.7908 3.6254 H 1 SAMX 0.0000 + 18 H3 3.4931 1.8295 2.9636 H 1 SAMX 0.0000 + 19 H4 5.6119 -0.9983 -0.9214 H 1 SAMX 0.0000 + 20 H5 7.0756 -0.1361 -1.4108 H 1 SAMX 0.0000 + 21 H6 5.5080 0.1943 -2.2176 H 1 SAMX 0.0000 + 22 H7 7.0346 3.7763 -1.8919 H 1 SAMX 0.1500 + 23 H8 7.0057 2.0580 -2.5649 H 1 SAMX 0.1500 + 24 H9 3.0932 2.7805 -0.0267 H 1 SAMX 0.0000 + 25 H10 2.3350 4.3291 0.1938 H 1 SAMX 0.0000 + 26 H11 2.1871 3.5947 -2.1486 H 1 SAMX 0.0000 + 27 H12 3.9425 3.4657 -2.2785 H 1 SAMX 0.0000 + 28 H13 3.1809 5.0531 -2.0796 H 1 SAMX 0.0000 + 29 H14 5.4180 6.2380 0.3418 H 1 SAMX 0.0000 + 30 H15 3.7894 6.3100 -0.2538 H 1 SAMX 0.0000 + 31 H16 3.9016 7.2846 1.9904 H 1 SAMX 0.0000 + 32 H17 4.5487 5.7887 2.6722 H 1 SAMX 0.0000 + 33 H18 2.8915 5.8341 2.0460 H 1 SAMX 0.0000 +@BOND + 1 1 8 1 + 2 1 6 1 + 3 1 4 1 + 4 1 2 1 + 5 3 7 2 + 6 4 9 1 + 7 4 7 1 + 8 5 10 1 + 9 5 8 1 + 10 5 7 1 + 11 6 14 1 + 12 6 12 1 + 13 8 11 2 + 14 9 18 1 + 15 9 17 1 + 16 9 16 1 + 17 10 21 1 + 18 10 20 1 + 19 10 19 1 + 20 11 23 1 + 21 11 22 1 + 22 12 25 1 + 23 12 24 1 + 24 12 13 1 + 25 13 28 1 + 26 13 27 1 + 27 13 26 1 + 28 14 30 1 + 29 14 29 1 + 30 14 15 1 + 31 15 33 1 + 32 15 32 1 + 33 15 31 1 +@SUBSTRUCTURE + 1 SAMX 1 +@COMMENT +COMMENT 2-DIETHYLAMINO-1,4-DIMETHYL-3-METHYLENE-2-THIOXO-1,4,2-DIAZ +@MOLECULE +SANKEX10 + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 8.9813 3.9244 -1.1152 N.3 1 UNCH 0.3140 + 2 N2 10.1262 4.6461 -1.2798 N.2 1 UNCH -0.7068 + 3 C1 9.7208 5.9222 -1.1970 C.2 1 UNCH 0.1388 + 4 C2 7.4416 7.1430 -0.7795 C.2 1 UNCH 0.6416 + 5 C3 6.0257 6.7236 -0.5030 C.2 1 UNCH -0.1356 + 6 C4 5.7062 5.4159 -0.4560 C.2 1 UNCH -0.0500 + 7 N3 6.6125 4.3920 -0.6629 N.3 1 UNCH -0.5840 + 8 C5 7.8987 4.7317 -0.9009 C.2 1 UNCH -0.0676 + 9 C6 8.3445 6.0302 -0.9616 C.2 1 UNCH -0.0860 + 10 O1 7.7685 8.3215 -0.8339 O.2 1 UNCH -0.5700 + 11 C7 9.0011 2.4667 -1.1575 C.3 1 UNCH 0.5356 + 12 C8 10.0890 1.8468 -2.0165 C.3 1 UNCH 0.0000 + 13 C9 11.2510 1.7378 -1.0570 C.3 1 UNCH 0.2800 + 14 C10 10.5529 1.4638 0.2733 C.3 1 UNCH 0.2800 + 15 C11 11.2576 2.1320 1.4529 C.3 1 UNCH 0.2800 + 16 O2 12.1093 0.6753 -1.4492 O.3 1 UNCH -0.6800 + 17 O3 9.2036 1.9820 0.1866 O.3 1 UNCH -0.5600 + 18 O4 10.5831 1.7998 2.6664 O.3 1 UNCH -0.6800 + 19 H1 10.4478 6.7174 -1.3052 H 1 UNCH 0.1500 + 20 H2 5.3071 7.5150 -0.3412 H 1 UNCH 0.1500 + 21 H3 4.6935 5.0836 -0.2461 H 1 UNCH 0.1500 + 22 H4 6.2844 3.4415 -0.5039 H 1 UNCH 0.4000 + 23 H5 8.0126 2.1447 -1.5017 H 1 UNCH 0.0000 + 24 H6 9.7833 0.8432 -2.3398 H 1 UNCH 0.0000 + 25 H7 10.3295 2.4135 -2.9215 H 1 UNCH 0.0000 + 26 H8 11.8352 2.6636 -1.0390 H 1 UNCH 0.0000 + 27 H9 10.4632 0.3878 0.4653 H 1 UNCH 0.0000 + 28 H10 11.2439 3.2228 1.3603 H 1 UNCH 0.0000 + 29 H11 12.2949 1.7952 1.5370 H 1 UNCH 0.0000 + 30 H12 12.9020 0.7069 -0.8848 H 1 UNCH 0.4000 + 31 H13 9.6411 2.0027 2.5089 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 11 1 + 4 2 3 2 + 5 3 9 1 + 6 3 19 1 + 7 4 5 1 + 8 4 9 1 + 9 4 10 2 + 10 5 6 2 + 11 5 20 1 + 12 6 7 1 + 13 6 21 1 + 14 7 8 1 + 15 7 22 1 + 16 8 9 2 + 17 11 12 1 + 18 11 17 1 + 19 11 23 1 + 20 12 13 1 + 21 12 24 1 + 22 12 25 1 + 23 13 14 1 + 24 13 16 1 + 25 13 26 1 + 26 14 15 1 + 27 14 17 1 + 28 14 27 1 + 29 15 18 1 + 30 15 28 1 + 31 15 29 1 + 32 16 30 1 + 33 18 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(2-DEOXY-BETA-D-ERYTHRO-PENTOFURANOSYL)-1H-PYRAZOLO(3,4-B +@MOLECULE +SAVDOI + 40 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.7071 5.4803 4.8785 S.2 1 SAVD 0.6040 + 2 O1 2.8130 6.9758 4.8785 O.2 1 SAVD -0.5000 + 3 C1 5.7257 4.8180 4.8785 C.3 1 SAVD 0.0000 + 4 O2 3.6057 4.9272 3.6616 O.3 1 SAVD -0.3320 + 5 C2 4.9685 5.3728 3.6309 C.3 1 SAVD 0.2800 + 6 C3 5.5473 5.1070 2.1960 C.3 1 SAVD 0.0000 + 7 C4 5.8432 3.2956 4.8785 C.3 1 SAVD 0.0000 + 8 C5 4.9313 6.1640 1.2412 C.3 1 SAVD 0.0000 + 9 C6 5.1651 3.7325 1.6097 C.3 1 SAVD 0.0000 + 10 C7 7.0742 5.2819 2.1594 C.3 1 SAVD 0.0000 + 11 H1 6.7380 5.2378 4.8785 H 1 SAVD 0.0000 + 12 H2 4.9780 6.4687 3.7375 H 1 SAVD 0.0000 + 13 H3 6.4126 2.9416 5.7383 H 1 SAVD 0.0000 + 14 H4 4.8669 2.8025 4.8785 H 1 SAVD 0.0000 + 15 H5 7.3697 6.2548 2.5679 H 1 SAVD 0.0000 + 16 H6 7.4539 5.2263 1.1325 H 1 SAVD 0.0000 + 17 H7 7.5875 4.5044 2.7329 H 1 SAVD 0.0000 + 18 H8 5.5275 3.6376 0.5787 H 1 SAVD 0.0000 + 19 H9 5.5928 2.8974 2.1641 H 1 SAVD 0.0000 + 20 H10 4.0792 3.5916 1.5798 H 1 SAVD 0.0000 + 21 H11 5.1932 7.1816 1.5529 H 1 SAVD 0.0000 + 22 H12 3.8382 6.0920 1.2173 H 1 SAVD 0.0000 + 23 H13 5.2945 6.0335 0.2151 H 1 SAVD 0.0000 + 24 O2G 3.6057 4.9272 6.0954 O.3 1 SAVD -0.3320 + 25 C2G 4.9685 5.3728 6.1262 C.3 1 SAVD 0.2800 + 26 H3G 6.4126 2.9416 4.0186 H 1 SAVD 0.0000 + 27 C3G 5.5473 5.1069 7.5610 C.3 1 SAVD 0.0000 + 28 H2G 4.9780 6.4687 6.0195 H 1 SAVD 0.0000 + 29 C5G 4.9313 6.1639 8.5159 C.3 1 SAVD 0.0000 + 30 C6G 5.1651 3.7324 8.1473 C.3 1 SAVD 0.0000 + 31 C7G 7.0742 5.2819 7.5976 C.3 1 SAVD 0.0000 + 32 H11G 5.1932 7.1815 8.2041 H 1 SAVD 0.0000 + 33 H12G 3.8382 6.0920 8.5397 H 1 SAVD 0.0000 + 34 H13G 5.2945 6.0335 9.5419 H 1 SAVD 0.0000 + 35 H8G 5.5275 3.6375 9.1783 H 1 SAVD 0.0000 + 36 H9G 5.5928 2.8973 7.5929 H 1 SAVD 0.0000 + 37 H10G 4.0792 3.5915 8.1772 H 1 SAVD 0.0000 + 38 H5G 7.3697 6.2548 7.1892 H 1 SAVD 0.0000 + 39 H6G 7.4539 5.2262 8.6245 H 1 SAVD 0.0000 + 40 H7G 7.5875 4.5043 7.0241 H 1 SAVD 0.0000 +@BOND + 1 1 24 1 + 2 1 4 1 + 3 1 2 2 + 4 3 25 1 + 5 3 11 1 + 6 3 7 1 + 7 3 5 1 + 8 4 5 1 + 9 5 12 1 + 10 5 6 1 + 11 6 10 1 + 12 6 9 1 + 13 6 8 1 + 14 7 26 1 + 15 7 14 1 + 16 7 13 1 + 17 8 23 1 + 18 8 22 1 + 19 8 21 1 + 20 9 20 1 + 21 9 19 1 + 22 9 18 1 + 23 10 17 1 + 24 10 16 1 + 25 10 15 1 + 26 24 25 1 + 27 25 28 1 + 28 25 27 1 + 29 27 31 1 + 30 27 30 1 + 31 27 29 1 + 32 29 34 1 + 33 29 33 1 + 34 29 32 1 + 35 30 37 1 + 36 30 36 1 + 37 30 35 1 + 38 31 40 1 + 39 31 39 1 + 40 31 38 1 +@SUBSTRUCTURE + 1 SAVD 1 +@COMMENT +COMMENT TRANS,TRANS-4,6-DI-T-BUTYL-TRANS-5-METHYL-1,3,2-DIOXATHIANE +@MOLECULE +SAWKEG10 + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.4137 1.5396 0.3499 N.3 1 UNCH 0.7186 + 2 N2 0.8584 0.9704 1.4133 N.2 1 UNCH -0.7068 + 3 C1 0.9860 1.8764 2.4000 C.2 1 UNCH 0.2348 + 4 C2 1.6455 3.0391 1.9096 C.2 1 UNCH -0.1500 + 5 C3 1.9039 2.7814 0.5849 C.2 1 UNCH -0.3016 + 6 N3 1.4729 0.8960 -0.8821 N.3 1 UNCH -0.8690 + 7 C4 0.4857 1.6143 3.7566 C.2 1 UNCH 0.0540 + 8 C5 -0.1454 0.3968 4.0591 C.2 1 UNCH -0.1500 + 9 C6 -0.6257 0.1351 5.3454 C.2 1 UNCH -0.1500 + 10 C7 -0.4818 1.0885 6.3496 C.2 1 UNCH -0.1500 + 11 C8 0.1413 2.3018 6.0684 C.2 1 UNCH -0.1500 + 12 C9 0.6221 2.5637 4.7809 C.2 1 UNCH -0.1500 + 13 H1 1.8997 3.9427 2.4438 H 1 UNCH 0.1500 + 14 H2 2.3823 3.3605 -0.1906 H 1 UNCH 0.1500 + 15 H3 0.5251 0.6391 -1.1461 H 1 UNCH 0.3600 + 16 H4 1.9421 0.0041 -0.7462 H 1 UNCH 0.3600 + 17 H5 -0.2681 -0.3623 3.2887 H 1 UNCH 0.1500 + 18 H6 -1.1110 -0.8137 5.5585 H 1 UNCH 0.1500 + 19 H7 -0.8550 0.8858 7.3501 H 1 UNCH 0.1500 + 20 H8 0.2545 3.0474 6.8514 H 1 UNCH 0.1500 + 21 H9 1.1022 3.5208 4.5995 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 2 3 2 + 5 3 4 1 + 6 3 7 1 + 7 4 5 2 + 8 4 13 1 + 9 5 14 1 + 10 6 15 1 + 11 6 16 1 + 12 7 8 2 + 13 7 12 1 + 14 8 9 1 + 15 8 17 1 + 16 9 10 2 + 17 9 18 1 + 18 10 11 1 + 19 10 19 1 + 20 11 12 2 + 21 11 20 1 + 22 12 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-AMINO-3-PHENYLPYRAZOLE +@MOLECULE +SEBPEU01 + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.9462 0.2508 3.5846 N.3 1 SEBP -0.7939 + 2 C1 5.0163 0.3040 2.2681 C.2 1 SEBP 0.6038 + 3 N2 6.2137 0.0141 1.7951 N.2 1 SEBP -0.7939 + 4 C2 7.1340 -0.2888 2.9036 C.3 1 SEBP 0.4895 + 5 C3 6.2481 -0.1231 4.1511 C.3 1 SEBP 0.4895 + 6 C4 3.8797 0.6519 1.3798 C.3 1 SEBP 0.2485 + 7 C5 2.5892 0.9528 2.1021 C.2 1 SEBP -0.1435 + 8 C6 1.6890 -0.0790 2.4051 C.2 1 SEBP -0.1500 + 9 C7 0.5233 0.1921 3.1220 C.2 1 SEBP -0.1500 + 10 C8 0.2490 1.4911 3.5444 C.2 1 SEBP -0.1500 + 11 C9 1.1376 2.5227 3.2488 C.2 1 SEBP -0.1500 + 12 C10 2.3047 2.2569 2.5322 C.2 1 SEBP -0.1500 + 13 H1 4.0753 0.4540 4.0699 H 1 SEBP 0.4500 + 14 H2 6.4065 0.0175 0.7991 H 1 SEBP 0.4500 + 15 H3 7.5084 -1.3104 2.7987 H 1 SEBP 0.0000 + 16 H4 7.9649 0.4215 2.8929 H 1 SEBP 0.0000 + 17 H5 6.1499 -1.0565 4.7117 H 1 SEBP 0.0000 + 18 H6 6.6064 0.6755 4.8059 H 1 SEBP 0.0000 + 19 H7 4.1586 1.5179 0.7658 H 1 SEBP 0.0000 + 20 H8 3.7132 -0.1719 0.6739 H 1 SEBP 0.0000 + 21 H9 1.8761 -1.1010 2.0802 H 1 SEBP 0.1500 + 22 H10 -0.1806 -0.6074 3.3447 H 1 SEBP 0.1500 + 23 H11 -0.6658 1.7023 4.0946 H 1 SEBP 0.1500 + 24 H12 0.9120 3.5376 3.5702 H 1 SEBP 0.1500 + 25 H13 2.9786 3.0818 2.3077 H 1 SEBP 0.1500 +@BOND + 1 1 13 1 + 2 1 5 1 + 3 1 2 am + 4 2 6 1 + 5 2 3 2 + 6 3 14 1 + 7 3 4 1 + 8 4 16 1 + 9 4 15 1 + 10 4 5 1 + 11 5 18 1 + 12 5 17 1 + 13 6 20 1 + 14 6 19 1 + 15 6 7 1 + 16 7 12 1 + 17 7 8 2 + 18 8 21 1 + 19 8 9 1 + 20 9 22 1 + 21 9 10 2 + 22 10 23 1 + 23 10 11 1 + 24 11 24 1 + 25 11 12 2 + 26 12 25 1 +@SUBSTRUCTURE + 1 SEBP 1 +@COMMENT +COMMENT 2-BENZYL-2-IMIDAZOLINE CHLORIDE (PHARMACOLOGICAL ACTIVITITY +@MOLECULE +SECDAF + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.0532 -1.0753 9.6642 S.3 1 CHGB 1.4470 + 2 O1 3.1761 -1.6812 8.9657 O.3 1 CHGB -0.6500 + 3 O2 1.5620 -1.6639 10.8932 O.3 1 CHGB -0.6500 + 4 N1 0.8087 -0.8574 8.5533 N.3 1 CHGB -0.6847 + 5 C1 1.2015 -0.5387 7.1695 C.3 1 CHGB 0.3557 + 6 C2 -0.2711 -0.0495 9.0753 C.2 1 CHGB 0.2054 + 7 C3 -0.0076 1.1397 9.7061 C.2 1 CHGB -0.1784 + 8 C4 1.4531 1.5260 9.9040 C.2 1 CHGB 0.0284 + 9 O3 -0.8819 1.9548 10.1399 O.3 1 CHGB -0.8500 + 10 C5 1.8305 2.8735 10.0723 C.2 1 CHGB -0.1500 + 11 C6 3.1625 3.2477 10.2934 C.2 1 CHGB -0.1500 + 12 C7 4.1605 2.2792 10.3539 C.2 1 CHGB -0.1500 + 13 C8 3.8231 0.9395 10.1924 C.2 1 CHGB -0.1500 + 14 C9 2.4816 0.5881 9.9840 C.2 1 CHGB -0.0090 + 15 C10 -1.6667 -0.6018 8.7604 C.2 1 CHGB 0.6156 + 16 O4 -1.7868 -1.6007 8.0461 O.2 1 CHGB -0.5700 + 17 N2 -2.7061 0.0972 9.3174 N.3 1 CHGB -0.5470 + 18 C11 -4.0740 -0.1501 9.2540 C.2 1 CHGB 0.4270 + 19 N3 -4.8527 0.7652 9.8750 N.2 1 CHGB -0.6200 + 20 C12 -6.1894 0.5822 9.8550 C.2 1 CHGB 0.1600 + 21 C13 -6.8121 -0.4861 9.2381 C.2 1 CHGB -0.1500 + 22 C14 -6.0090 -1.4226 8.6050 C.2 1 CHGB -0.1500 + 23 C15 -4.6236 -1.2545 8.6128 C.2 1 CHGB -0.1500 + 24 H1 1.7979 -1.3546 6.7499 H 1 CHGB 0.0000 + 25 H2 1.7726 0.3926 7.1120 H 1 CHGB 0.0000 + 26 H3 0.3174 -0.4349 6.5312 H 1 CHGB 0.0000 + 27 H4 1.0638 3.6467 10.0389 H 1 CHGB 0.1500 + 28 H5 3.4059 4.2981 10.4231 H 1 CHGB 0.1500 + 29 H6 5.1930 2.5680 10.5241 H 1 CHGB 0.1500 + 30 H7 4.5926 0.1730 10.2235 H 1 CHGB 0.1500 + 31 H8 -2.4229 0.9443 9.8278 H 1 CHGB 0.3700 + 32 H9 -6.7620 1.3478 10.3690 H 1 CHGB 0.1500 + 33 H10 -7.8902 -0.5857 9.2528 H 1 CHGB 0.1500 + 34 H11 -6.4462 -2.2827 8.1080 H 1 CHGB 0.1500 + 35 H12 -4.0046 -1.9948 8.1219 H 1 CHGB 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 14 1 + 5 4 5 1 + 6 4 6 1 + 7 5 24 1 + 8 5 25 1 + 9 5 26 1 + 10 6 7 2 + 11 6 15 1 + 12 7 8 1 + 13 7 9 1 + 14 8 10 2 + 15 8 14 1 + 16 10 11 1 + 17 10 27 1 + 18 11 12 2 + 19 11 28 1 + 20 12 13 1 + 21 12 29 1 + 22 13 14 2 + 23 13 30 1 + 24 15 16 2 + 25 15 17 am + 26 17 18 am + 27 17 31 1 + 28 18 19 2 + 29 18 23 1 + 30 19 20 1 + 31 20 21 2 + 32 20 32 1 + 33 21 22 1 + 34 21 33 1 + 35 22 23 2 + 36 22 34 1 + 37 23 35 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT 2-ETHANOLAMMONIUM N-(2-PYRIDYL)-2-METHYL-2H-1,2-BENZOTHIAZO +@MOLECULE +SEFRAW + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.2063 1.4611 2.5331 S.3 1 SEFR -0.0800 + 2 C1 -0.1470 0.7000 3.2430 C.2 1 SEFR 0.1660 + 3 N1 -0.5874 -0.5141 2.8151 N.2 1 SEFR -0.5760 + 4 C2 -1.6252 -0.9519 3.4494 C.2 1 SEFR 0.4500 + 5 N2 -2.2633 -0.2908 4.4700 N.3 1 SEFR -0.4900 + 6 C3 -1.8584 0.9399 4.9365 C.2 1 SEFR 0.7160 + 7 C4 -0.6924 1.4667 4.2556 C.2 1 SEFR -0.0860 + 8 C5 0.0158 2.6933 4.4575 C.2 1 SEFR -0.1810 + 9 C6 -0.3013 3.7686 5.4547 C.3 1 SEFR 0.1810 + 10 C7 0.8619 4.7612 5.6149 C.3 1 SEFR 0.0000 + 11 C8 1.4558 5.1687 4.2590 C.3 1 SEFR 0.0000 + 12 C9 2.0219 3.9585 3.4999 C.3 1 SEFR 0.1800 + 13 C10 1.0660 2.8080 3.5649 C.2 1 SEFR -0.1400 + 14 O1 -2.4522 1.5136 5.8436 O.2 1 SEFR -0.5700 + 15 H1 -2.0807 -1.9232 3.1993 H 1 SEFR 0.0600 + 16 H2 -3.0731 -0.6893 4.9200 H 1 SEFR 0.3700 + 17 H3 -1.1937 4.3076 5.1133 H 1 SEFR 0.0000 + 18 H4 -0.5335 3.3303 6.4315 H 1 SEFR 0.0000 + 19 H9 2.2272 4.2438 2.4619 H 1 SEFR 0.0000 + 20 H10 2.9727 3.6563 3.9560 H 1 SEFR 0.0000 + 21 H5 0.5121 5.6492 6.1533 H 1 SEFR 0.0000 + 22 H6 1.6504 4.3054 6.2278 H 1 SEFR 0.0000 + 23 H7 0.6744 5.6486 3.6557 H 1 SEFR 0.0000 + 24 H8 2.2484 5.9112 4.4050 H 1 SEFR 0.0000 +@BOND + 1 1 13 1 + 2 1 2 1 + 3 2 7 2 + 4 2 3 1 + 5 3 4 2 + 6 4 15 1 + 7 4 5 am + 8 5 16 1 + 9 5 6 am + 10 6 14 2 + 11 6 7 1 + 12 7 8 1 + 13 8 13 2 + 14 8 9 1 + 15 9 18 1 + 16 9 17 1 + 17 9 10 1 + 18 10 22 1 + 19 10 21 1 + 20 10 11 1 + 21 11 24 1 + 22 11 23 1 + 23 11 12 1 + 24 12 20 1 + 25 12 19 1 + 26 12 13 1 +@SUBSTRUCTURE + 1 SEFR 1 +@COMMENT +COMMENT 4-OXO-5,6,7,8-TETRAHYDRO-3H-BENZOTHIENO(2,3-D)PYRIMIDINE +@MOLECULE +SEFYIL + 32 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -1.1063 1.3545 1.3639 S.3 1 SEFY -0.6773 + 2 S2 1.3547 5.3162 4.3675 S.2 1 SEFY -0.3800 + 3 P1 0.6315 2.1731 1.6032 P 1 SEFY 1.4757 + 4 O1 1.1916 2.9654 0.3115 O.3 1 SEFY -0.5512 + 5 O2 1.8560 1.1658 1.9148 O.3 1 SEFY -0.5512 + 6 N1 0.6890 3.3138 2.8370 N.3 1 SEFY -0.6860 + 7 C1 1.6456 4.2252 3.1329 C.2 1 SEFY 0.3790 + 8 C2 2.9288 4.2661 2.3470 C.3 1 SEFY 0.0610 + 9 C3 1.5252 2.2374 -0.8644 C.3 1 SEFY 0.2800 + 10 C4 3.0266 2.3510 -1.0858 C.3 1 SEFY 0.0000 + 11 C5 0.7522 2.8388 -2.0287 C.3 1 SEFY 0.0000 + 12 C6 1.8174 0.3359 3.0692 C.3 1 SEFY 0.2800 + 13 C7 3.0454 0.6391 3.9159 C.3 1 SEFY 0.0000 + 14 C8 1.8170 -1.1160 2.6129 C.3 1 SEFY 0.0000 + 15 H1 -0.1638 3.3904 3.3738 H 1 SEFY 0.3700 + 16 H2 3.7380 4.7219 2.9265 H 1 SEFY 0.0000 + 17 H3 2.7767 4.8598 1.4402 H 1 SEFY 0.0000 + 18 H4 3.2537 3.2642 2.0624 H 1 SEFY 0.0000 + 19 H5 1.2559 1.1810 -0.7572 H 1 SEFY 0.0000 + 20 H6 3.3353 3.3996 -1.1603 H 1 SEFY 0.0000 + 21 H7 3.3352 1.8279 -1.9959 H 1 SEFY 0.0000 + 22 H8 3.5723 1.9234 -0.2380 H 1 SEFY 0.0000 + 23 H9 0.9830 3.9034 -2.1464 H 1 SEFY 0.0000 + 24 H10 0.9817 2.3242 -2.9667 H 1 SEFY 0.0000 + 25 H11 -0.3259 2.7702 -1.8490 H 1 SEFY 0.0000 + 26 H12 0.9175 0.5356 3.6610 H 1 SEFY 0.0000 + 27 H13 3.0852 -0.0008 4.8026 H 1 SEFY 0.0000 + 28 H14 3.9661 0.4995 3.3387 H 1 SEFY 0.0000 + 29 H15 3.0365 1.6833 4.2443 H 1 SEFY 0.0000 + 30 H16 1.8034 -1.8008 3.4662 H 1 SEFY 0.0000 + 31 H17 0.9429 -1.3236 1.9873 H 1 SEFY 0.0000 + 32 H18 2.6987 -1.3355 2.0005 H 1 SEFY 0.0000 +@BOND + 1 1 3 1 + 2 2 7 2 + 3 3 6 1 + 4 3 5 1 + 5 3 4 1 + 6 4 9 1 + 7 5 12 1 + 8 6 15 1 + 9 6 7 1 + 10 7 8 1 + 11 8 18 1 + 12 8 17 1 + 13 8 16 1 + 14 9 19 1 + 15 9 11 1 + 16 9 10 1 + 17 10 22 1 + 18 10 21 1 + 19 10 20 1 + 20 11 25 1 + 21 11 24 1 + 22 11 23 1 + 23 12 26 1 + 24 12 14 1 + 25 12 13 1 + 26 13 29 1 + 27 13 28 1 + 28 13 27 1 + 29 14 32 1 + 30 14 31 1 + 31 14 30 1 +@SUBSTRUCTURE + 1 SEFY 1 +@COMMENT +COMMENT N-(DI-ISOPROPOXYTHIOPHOSPHORYL)THIOACETAMIDE +@MOLECULE +SEGFIT + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.9264 2.3261 1.7449 S.2 1 SEGF -0.3800 + 2 O1 2.6482 -2.8412 -1.7960 O.3 1 SEGF -0.9000 + 3 O2 4.4051 -3.7069 -0.6428 O.2 1 SEGF -0.9000 + 4 N1 2.5195 -0.7631 -0.0586 N.2 1 SEGF -0.5120 + 5 N2 2.3200 0.2369 0.8533 N.3 1 SEGF -0.3680 + 6 N3 0.8009 1.1314 -0.6139 N.3 1 SEGF -0.8000 + 7 C1 1.3634 1.1869 0.6194 C.2 1 SEGF 0.5000 + 8 C2 3.4315 -1.6755 0.1719 C.2 1 SEGF 0.2168 + 9 C3 3.4983 -2.8391 -0.8503 C.2 1 SEGF 0.9470 + 10 C4 4.3735 -1.6452 1.3222 C.2 1 SEGF 0.0862 + 11 C5 5.2339 -0.5532 1.4836 C.2 1 SEGF -0.1500 + 12 C6 6.0921 -0.5040 2.5822 C.2 1 SEGF -0.1500 + 13 C7 6.0936 -1.5455 3.5119 C.2 1 SEGF -0.1500 + 14 C8 5.2424 -2.6396 3.3424 C.2 1 SEGF -0.1500 + 15 C9 4.3804 -2.6916 2.2463 C.2 1 SEGF -0.1500 + 16 H1 2.7431 0.1747 1.7718 H 1 SEGF 0.3700 + 17 H2 1.0194 0.2721 -1.1199 H 1 SEGF 0.3700 + 18 H3 -0.0402 1.6408 -0.8272 H 1 SEGF 0.3700 + 19 H4 5.2359 0.2479 0.7483 H 1 SEGF 0.1500 + 20 H5 6.7642 0.3402 2.7063 H 1 SEGF 0.1500 + 21 H6 6.7690 -1.5126 4.3623 H 1 SEGF 0.1500 + 22 H7 5.2570 -3.4604 4.0538 H 1 SEGF 0.1500 + 23 H8 3.7314 -3.5518 2.0988 H 1 SEGF 0.1500 +@BOND + 1 1 7 2 + 2 2 9 1 + 3 3 9 2 + 4 4 5 1 + 5 4 8 2 + 6 5 7 1 + 7 5 16 1 + 8 6 7 1 + 9 6 17 1 + 10 6 18 1 + 11 8 9 1 + 12 8 10 1 + 13 10 11 2 + 14 10 15 1 + 15 11 12 1 + 16 11 19 1 + 17 12 13 2 + 18 12 20 1 + 19 13 14 1 + 20 13 21 1 + 21 14 15 2 + 22 14 22 1 + 23 15 23 1 +@SUBSTRUCTURE + 1 SEGF 1 +@COMMENT +COMMENT BENZOYLFORMIC ACID THIOSEMICARBAZONE +@MOLECULE +SEGJAP + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 7.4841 0.8635 5.3462 SI 1 SEGJ 1.3350 + 2 CL1 9.3906 1.2679 4.7475 CL 1 SEGJ -0.3701 + 3 CL2 6.4039 2.5801 5.1457 CL 1 SEGJ -0.3701 + 4 O1 7.4951 0.3887 6.9352 O.3 1 SEGJ -0.3799 + 5 O2 6.8725 -0.2768 4.3312 O.3 1 SEGJ -0.3799 + 6 C1 7.5761 1.1162 8.0913 C.2 1 SEGJ 0.0825 + 7 C2 8.7013 1.9136 8.3372 C.2 1 SEGJ -0.1500 + 8 C3 8.7986 2.6540 9.5160 C.2 1 SEGJ -0.1500 + 9 C4 7.7798 2.5930 10.4611 C.2 1 SEGJ -0.1500 + 10 C5 6.6692 1.7815 10.2317 C.2 1 SEGJ -0.1500 + 11 C6 5.7328 -1.0295 4.2572 C.2 1 SEGJ 0.0825 + 12 H1 9.5237 1.9625 7.6290 H 1 SEGJ 0.1500 + 13 H2 9.6732 3.2742 9.6978 H 1 SEGJ 0.1500 + 14 H3 7.8524 3.1689 11.3804 H 1 SEGJ 0.1500 + 15 H4 5.8821 1.7315 10.9811 H 1 SEGJ 0.1500 + 16 C6B 6.5616 1.0295 9.0552 C.2 1 SEGJ 0.0825 + 17 C1B 4.7183 -1.1162 5.2210 C.2 1 SEGJ 0.0825 + 18 C5B 5.6252 -1.7815 3.0807 C.2 1 SEGJ -0.1500 + 19 O2B 5.4219 0.2768 8.9812 O.3 1 SEGJ -0.3799 + 20 O1B 4.7993 -0.3887 6.3772 O.3 1 SEGJ -0.3799 + 21 C2B 3.5931 -1.9135 4.9751 C.2 1 SEGJ -0.1500 + 22 C4B 4.5146 -2.5930 2.8512 C.2 1 SEGJ -0.1500 + 23 H4B 6.4123 -1.7315 2.3313 H 1 SEGJ 0.1500 + 24 SI1B 4.8103 -0.8635 7.9662 SI 1 SEGJ 1.3350 + 25 C3B 3.4958 -2.6540 3.7964 C.2 1 SEGJ -0.1500 + 26 H1B 2.7707 -1.9624 5.6834 H 1 SEGJ 0.1500 + 27 H3B 4.4419 -3.1688 1.9319 H 1 SEGJ 0.1500 + 28 CL1B 2.9038 -1.2679 8.5649 CL 1 SEGJ -0.3701 + 29 CL2B 5.8905 -2.5801 8.1667 CL 1 SEGJ -0.3701 + 30 H2B 2.6211 -3.2741 3.6146 H 1 SEGJ 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 4 6 1 + 6 5 11 1 + 7 6 7 2 + 8 6 16 1 + 9 7 8 1 + 10 7 12 1 + 11 8 9 2 + 12 8 13 1 + 13 9 10 1 + 14 9 14 1 + 15 10 15 1 + 16 10 16 2 + 17 11 17 2 + 18 11 18 1 + 19 16 19 1 + 20 17 20 1 + 21 17 21 1 + 22 18 22 2 + 23 18 23 1 + 24 19 24 1 + 25 20 24 1 + 26 21 25 2 + 27 21 26 1 + 28 22 25 1 + 29 22 27 1 + 30 24 28 1 + 31 24 29 1 + 32 25 30 1 +@SUBSTRUCTURE + 1 SEGJ 1 +@COMMENT +COMMENT 4,5.9,10-DIBENZO-2,2,7,7-TETRACHLORO-1,3,6,8-TETRAOXA-2,7-D +@MOLECULE +SEGLAR + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.1177 0.8001 3.7034 S.3 1 SEGL 1.4470 + 2 O1 1.5607 0.0291 4.8452 O.3 1 SEGL -0.6500 + 3 O2 0.4949 0.1753 2.5540 O.3 1 SEGL -0.6500 + 4 N1 0.0175 1.9864 4.3317 N.3 1 SEGL -0.6310 + 5 N2 -1.3287 1.5417 4.1549 N.3 1 SEGL -0.6470 + 6 C1 2.4442 1.8236 3.1353 C.2 1 SEGL -0.0090 + 7 C2 2.2440 2.6350 2.0143 C.2 1 SEGL -0.1500 + 8 C3 3.2875 3.4374 1.5538 C.2 1 SEGL -0.1500 + 9 C4 4.5209 3.4220 2.2078 C.2 1 SEGL -0.1500 + 10 C5 4.7174 2.6035 3.3220 C.2 1 SEGL -0.1500 + 11 C6 3.6788 1.7979 3.7896 C.2 1 SEGL -0.1500 + 12 H1 0.2287 2.1348 5.3280 H 1 SEGL 0.4200 + 13 H2 -1.4239 0.6103 4.5793 H 1 SEGL 0.3600 + 14 H4 1.2848 2.6451 1.5013 H 1 SEGL 0.1500 + 15 H5 3.1418 4.0733 0.6838 H 1 SEGL 0.1500 + 16 H6 5.3336 4.0473 1.8452 H 1 SEGL 0.1500 + 17 H7 5.6826 2.5920 3.8229 H 1 SEGL 0.1500 + 18 H8 3.8425 1.1579 4.6536 H 1 SEGL 0.1500 + 19 H3 -1.4552 1.3618 3.1482 H 1 SEGL 0.3600 +@BOND + 1 1 6 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 4 12 1 + 6 4 5 1 + 7 5 19 1 + 8 5 13 1 + 9 6 11 1 + 10 6 7 2 + 11 7 14 1 + 12 7 8 1 + 13 8 15 1 + 14 8 9 2 + 15 9 16 1 + 16 9 10 1 + 17 10 17 1 + 18 10 11 2 + 19 11 18 1 +@SUBSTRUCTURE + 1 SEGL 1 +@COMMENT +COMMENT BENZENESULFINOHYDRAZIDE +@MOLECULE +SEGNEX + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.3162 2.2109 6.7174 S.2 1 CHGB -0.3800 + 2 O1 -2.7118 2.8412 8.4744 O.2 1 CHGB -0.9000 + 3 O2 -4.3832 2.0472 9.8118 O.3 1 CHGB -0.9000 + 4 O3 -4.2688 -0.0210 11.0537 O.3 1 CHGB -0.6500 + 5 O4 -2.4120 -1.2903 10.9439 O.2 1 CHGB -0.5700 + 6 N1 -0.7007 1.3564 8.2539 N.3 1 CHGB -0.3680 + 7 N2 -1.2572 0.4626 9.1337 N.2 1 CHGB -0.5120 + 8 N3 1.1277 -0.0220 8.1060 N.3 1 CHGB -0.8000 + 9 C1 0.5457 1.1471 7.7322 C.2 1 CHGB 0.5000 + 10 C2 -2.4466 0.7367 9.6197 C.2 1 CHGB 0.3030 + 11 C3 -3.2352 1.9898 9.2592 C.2 1 CHGB 0.9470 + 12 C4 -3.0318 -0.2947 10.6020 C.2 1 CHGB 0.7200 + 13 H1 -1.2305 2.2174 8.0311 H 1 CHGB 0.3700 + 14 H2 0.6378 -0.5240 8.8400 H 1 CHGB 0.3700 + 15 H3 2.0936 -0.2130 7.8974 H 1 CHGB 0.3700 + 16 H4 -4.6061 0.8468 10.6722 H 1 CHGB 0.5000 +@BOND + 1 1 9 2 + 2 2 11 2 + 3 3 11 1 + 4 4 12 1 + 5 4 16 1 + 6 5 12 2 + 7 6 7 1 + 8 6 9 1 + 9 6 13 1 + 10 7 10 2 + 11 8 9 1 + 12 8 14 1 + 13 8 15 1 + 14 10 11 1 + 15 10 12 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM 2-OXOPROPANE-1,3-DIOIC ACID THIOSEMICARBAZONE MONOHY +@MOLECULE +SEGWEG + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 -0.0457 0.0000 -0.0477 I 1 SEGW -0.1890 + 2 CL1 5.6405 0.0000 2.8481 CL 1 SEGW -0.2900 + 3 CL2 3.9502 1.4522 4.7108 CL 1 SEGW -0.2900 + 4 C1 2.9691 0.0000 2.6882 C.3 1 SEGW 0.0000 + 5 C2 1.4051 0.0000 2.9162 C.3 1 SEGW 0.0000 + 6 C3 1.5118 0.0000 1.3657 C.3 1 SEGW 0.1890 + 7 C4 2.6347 1.0564 1.5612 C.3 1 SEGW 0.0000 + 8 C5 4.0700 0.0000 3.6873 C.3 1 SEGW 0.8700 + 9 H1 0.9739 0.8908 3.3865 H 1 SEGW 0.0000 + 10 H2 2.3283 2.0544 1.8940 H 1 SEGW 0.0000 + 11 H3 3.3652 1.1636 0.7514 H 1 SEGW 0.0000 + 12 C4B 2.6347 -1.0564 1.5612 C.3 1 SEGW 0.0000 + 13 H1B 0.9739 -0.8908 3.3865 H 1 SEGW 0.0000 + 14 CL2B 3.9502 -1.4522 4.7108 CL 1 SEGW -0.2900 + 15 H2B 2.3283 -2.0544 1.8940 H 1 SEGW 0.0000 + 16 H3B 3.3652 -1.1636 0.7514 H 1 SEGW 0.0000 +@BOND + 1 1 6 1 + 2 2 8 1 + 3 3 8 1 + 4 4 5 1 + 5 4 7 1 + 6 4 8 1 + 7 4 12 1 + 8 5 6 1 + 9 5 9 1 + 10 5 13 1 + 11 6 7 1 + 12 6 12 1 + 13 7 10 1 + 14 7 11 1 + 15 8 14 1 + 16 12 15 1 + 17 12 16 1 +@SUBSTRUCTURE + 1 SEGW 1 +@COMMENT +COMMENT 3-IODO-1-TRICHLOROMETHYLBICYCLO(1.1.1)PENTANE +@MOLECULE +SEHBEM + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.6848 0.2399 7.3460 O.3 1 UNCH -0.5325 + 2 O2 1.3133 0.6121 8.8107 O.3 1 UNCH -0.7500 + 3 N1 0.9778 1.6168 9.6909 N.3 1 UNCH -0.0180 + 4 C1 -1.7101 0.7791 8.0746 C.2 1 UNCH 0.0825 + 5 C2 -1.4920 1.8378 8.9665 C.2 1 UNCH -0.1435 + 6 C3 -2.5893 2.3371 9.6914 C.2 1 UNCH -0.1500 + 7 C4 -3.8695 1.7896 9.5390 C.2 1 UNCH -0.1435 + 8 C5 -4.0614 0.7505 8.6218 C.2 1 UNCH -0.1500 + 9 C6 -2.9876 0.2369 7.8831 C.2 1 UNCH -0.1435 + 10 C7 -0.1414 2.4910 9.1340 C.3 1 UNCH 0.3995 + 11 C8 2.1982 2.4749 9.8992 C.3 1 UNCH 0.2560 + 12 C9 0.5753 1.0165 11.0124 C.3 1 UNCH 0.2560 + 13 C10 -5.0352 2.3555 10.2955 C.3 1 UNCH 0.1435 + 14 C11 -3.2055 -0.8868 6.9103 C.3 1 UNCH 0.1435 + 15 H3 0.1592 0.3254 7.8662 H 1 UNCH 0.4500 + 16 H4 -2.4528 3.1696 10.3792 H 1 UNCH 0.1500 + 17 H5 -5.0575 0.3358 8.4796 H 1 UNCH 0.1500 + 18 H6 -0.2077 3.3503 9.8126 H 1 UNCH 0.0000 + 19 H7 0.2144 2.8552 8.1621 H 1 UNCH 0.0000 + 20 H8 2.4677 2.9056 8.9310 H 1 UNCH 0.0000 + 21 H9 2.9999 1.8278 10.2659 H 1 UNCH 0.0000 + 22 H10 1.9521 3.2518 10.6275 H 1 UNCH 0.0000 + 23 H11 -0.2460 0.3186 10.8344 H 1 UNCH 0.0000 + 24 H12 1.4416 0.4768 11.4051 H 1 UNCH 0.0000 + 25 H13 0.2789 1.8296 11.6797 H 1 UNCH 0.0000 + 26 H14 -5.7885 1.5841 10.4870 H 1 UNCH 0.0000 + 27 H15 -5.4955 3.1658 9.7220 H 1 UNCH 0.0000 + 28 H16 -4.7169 2.7460 11.2679 H 1 UNCH 0.0000 + 29 H17 -2.8964 -0.5843 5.9045 H 1 UNCH 0.0000 + 30 H18 -4.2609 -1.1743 6.8589 H 1 UNCH 0.0000 + 31 H19 -2.6344 -1.7691 7.2167 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 15 1 + 3 2 3 1 + 4 3 10 1 + 5 3 11 1 + 6 3 12 1 + 7 4 5 1 + 8 4 9 2 + 9 5 6 2 + 10 5 10 1 + 11 6 7 1 + 12 6 16 1 + 13 7 8 2 + 14 7 13 1 + 15 8 9 1 + 16 8 17 1 + 17 9 14 1 + 18 10 18 1 + 19 10 19 1 + 20 11 20 1 + 21 11 21 1 + 22 11 22 1 + 23 12 23 1 + 24 12 24 1 + 25 12 25 1 + 26 13 26 1 + 27 13 27 1 + 28 13 28 1 + 29 14 29 1 + 30 14 30 1 + 31 14 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(N,N-DIMETHYLAMINO-N-OXYMETHYL)-4,6-DIMETHYLPHENOL MONOHY +@MOLECULE +SEJDAM + 27 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2943 1.4668 7.4347 C.2 1 SEJD -0.1730 + 2 C2 2.3937 0.5200 6.6912 C.3 1 SEJD 0.0710 + 3 C3 3.0004 0.9190 5.4352 C.2 1 SEJD 0.5700 + 4 C4 3.8938 1.8467 6.1094 C.3 1 SEJD 0.0710 + 5 C5 1.9752 -0.8701 7.0260 C.3 1 SEJD -0.2000 + 6 C6 0.9427 0.2222 6.8553 C.3 1 SEJD -0.2000 + 7 C7 4.2834 3.1738 5.5573 C.3 1 SEJD -0.2000 + 8 C8 5.3064 2.0654 5.6902 C.3 1 SEJD -0.2000 + 9 C9 3.4396 1.7767 8.7236 C.2 1 SEJD -0.0928 + 10 C10 4.4068 2.7901 9.1920 C.2 1 SEJD 0.7056 + 11 C11 2.7058 1.2719 9.9043 C.3 1 SEJD 0.1382 + 12 C12 2.8702 2.4355 10.8471 C.3 1 SEJD 0.2800 + 13 O1 2.8228 0.6007 4.2756 O.2 1 SEJD -0.5700 + 14 O2 5.3224 3.2971 8.5759 O.2 1 SEJD -0.5700 + 15 O3 4.1083 3.0570 10.4976 O.3 1 SEJD -0.4300 + 16 H1 2.1600 -1.2421 8.0259 H 1 SEJD 0.1000 + 17 H2 2.0438 -1.6250 6.2499 H 1 SEJD 0.1000 + 18 H3 0.4295 0.5811 7.7375 H 1 SEJD 0.1000 + 19 H4 0.3233 0.1930 5.9647 H 1 SEJD 0.1000 + 20 H5 3.9523 3.4346 4.5584 H 1 SEJD 0.1000 + 21 H6 4.3712 4.0174 6.2312 H 1 SEJD 0.1000 + 22 H7 5.6539 1.5912 4.7790 H 1 SEJD 0.1000 + 23 H8 6.0701 2.1718 6.4506 H 1 SEJD 0.1000 + 24 H10 2.9079 2.1083 11.8906 H 1 SEJD 0.0000 + 25 H11 1.6556 1.0312 9.7282 H 1 SEJD 0.0000 + 26 H12 3.2121 0.3832 10.2975 H 1 SEJD 0.0000 + 27 H9 2.0672 3.1744 10.7432 H 1 SEJD 0.0000 +@BOND + 1 1 9 2 + 2 1 4 1 + 3 1 2 1 + 4 2 6 1 + 5 2 5 1 + 6 2 3 1 + 7 3 13 2 + 8 3 4 1 + 9 4 8 1 + 10 4 7 1 + 11 5 17 1 + 12 5 16 1 + 13 5 6 1 + 14 6 19 1 + 15 6 18 1 + 16 7 21 1 + 17 7 20 1 + 18 7 8 1 + 19 8 23 1 + 20 8 22 1 + 21 9 11 1 + 22 9 10 1 + 23 10 15 1 + 24 10 14 2 + 25 11 26 1 + 26 11 25 1 + 27 11 12 1 + 28 12 27 1 + 29 12 24 1 + 30 12 15 1 +@SUBSTRUCTURE + 1 SEJD 1 +@COMMENT +COMMENT 3-(8-OXODISPIRO(2.1.2.1)OCTAN-4-YLIDENE)TETRAHYDROFURAN-2-O +@MOLECULE +SEKKIC + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.6926 5.7915 11.6729 O.3 1 UNCH -0.3370 + 2 N1 6.5749 5.4571 10.6440 N.2 1 UNCH -0.5130 + 3 C1 6.1582 4.4411 9.9426 C.2 1 UNCH 0.3280 + 4 C2 7.0359 3.9150 8.7806 C.3 1 UNCH 0.1992 + 5 C3 6.1259 3.7428 7.5393 C.3 1 UNCH 0.0000 + 6 C4 4.8513 2.9412 7.8092 C.3 1 UNCH 0.0000 + 7 C5 4.0443 3.5625 8.9434 C.3 1 UNCH 0.0000 + 8 C6 4.8670 3.6763 10.2186 C.3 1 UNCH 0.0610 + 9 C7 8.1589 4.9064 8.4234 C.3 1 UNCH 0.0000 + 10 C8 7.6842 2.6357 9.2854 C.2 1 UNCH -0.2232 + 11 C9 7.9428 1.5709 8.5820 C.1 1 UNCH -0.1300 + 12 C10 8.2020 0.5087 7.8779 C.2 1 UNCH -0.2232 + 13 C11 8.6220 0.5159 6.4462 C.3 1 UNCH 0.1382 + 14 H1 6.1377 6.5512 12.0927 H 1 UNCH 0.4000 + 15 H2 5.8253 4.7352 7.1747 H 1 UNCH 0.0000 + 16 H3 6.6780 3.2733 6.7155 H 1 UNCH 0.0000 + 17 H4 5.0942 1.9008 8.0521 H 1 UNCH 0.0000 + 18 H5 4.2398 2.9170 6.8997 H 1 UNCH 0.0000 + 19 H6 3.6988 4.5585 8.6393 H 1 UNCH 0.0000 + 20 H7 3.1515 2.9563 9.1337 H 1 UNCH 0.0000 + 21 H8 4.2598 4.1563 10.9896 H 1 UNCH 0.0000 + 22 H9 5.1328 2.6809 10.5919 H 1 UNCH 0.0000 + 23 H10 8.8496 5.0608 9.2615 H 1 UNCH 0.0000 + 24 H11 7.7512 5.8879 8.1544 H 1 UNCH 0.0000 + 25 H12 8.7499 4.5472 7.5725 H 1 UNCH 0.0000 + 26 H13 8.0978 2.6748 10.2923 H 1 UNCH 0.1500 + 27 H14 8.1027 -0.4629 8.3533 H 1 UNCH 0.1500 + 28 H15 9.5828 0.0042 6.3360 H 1 UNCH 0.0000 + 29 H16 7.8806 -0.0094 5.8365 H 1 UNCH 0.0000 + 30 H17 8.7288 1.5336 6.0570 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 2 3 2 + 4 3 4 1 + 5 3 8 1 + 6 4 5 1 + 7 4 9 1 + 8 4 10 1 + 9 5 6 1 + 10 5 15 1 + 11 5 16 1 + 12 6 7 1 + 13 6 17 1 + 14 6 18 1 + 15 7 8 1 + 16 7 19 1 + 17 7 20 1 + 18 8 21 1 + 19 8 22 1 + 20 9 23 1 + 21 9 24 1 + 22 9 25 1 + 23 10 11 2 + 24 10 26 1 + 25 11 12 2 + 26 12 13 1 + 27 12 27 1 + 28 13 28 1 + 29 13 29 1 + 30 13 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(BUTA-1,2-DIENYL)-2-METHYLCYCLOHEXANONE OXIME +@MOLECULE +SEKPED + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.3186 3.4794 0.0674 N.2 1 SEKP -0.7068 + 2 N2 1.1515 3.3633 1.3858 N.3 1 SEKP 0.9850 + 3 N3 1.8660 2.4434 2.0360 N.2 1 SEKP -0.7068 + 4 C1 2.6579 1.9502 1.0738 C.2 1 SEKP 0.2888 + 5 C2 3.6617 0.9697 1.1547 C.2 1 SEKP -0.1500 + 6 C3 4.2964 0.6859 -0.0704 C.2 1 SEKP -0.1500 + 7 C4 3.9567 1.3289 -1.2923 C.2 1 SEKP -0.1500 + 8 C5 2.9526 2.3117 -1.3952 C.2 1 SEKP -0.1500 + 9 C6 2.3086 2.6113 -0.1824 C.2 1 SEKP 0.2888 + 10 N4 0.1701 4.0892 2.0407 N.3 1 SEKP -0.8690 + 11 H1 3.9219 0.4779 2.0823 H 1 SEKP 0.1500 + 12 H2 5.0878 -0.0645 -0.0831 H 1 SEKP 0.1500 + 13 H3 4.5007 1.0467 -2.1945 H 1 SEKP 0.1500 + 14 H4 2.6960 2.7982 -2.3265 H 1 SEKP 0.1500 + 15 H5 -0.1982 3.5089 2.7852 H 1 SEKP 0.3600 + 16 H6 -0.5873 4.2453 1.3859 H 1 SEKP 0.3600 +@BOND + 1 1 9 2 + 2 1 2 1 + 3 2 10 1 + 4 2 3 1 + 5 3 4 2 + 6 4 9 1 + 7 4 5 1 + 8 5 11 1 + 9 5 6 2 + 10 6 12 1 + 11 6 7 1 + 12 7 13 1 + 13 7 8 2 + 14 8 14 1 + 15 8 9 1 + 16 10 16 1 + 17 10 15 1 +@SUBSTRUCTURE + 1 SEKP 1 +@COMMENT +COMMENT 2-AMINOBENZOTRIAZOLE +@MOLECULE +SEKPIH + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.0581 0.3535 2.0970 N.3 1 UNCH 0.4522 + 2 C1 1.3066 -0.8071 1.4228 C.2 1 UNCH 0.0365 + 3 N2 2.0513 -1.6310 2.1285 N.2 1 UNCH -0.5653 + 4 C2 2.2896 -0.9657 3.3085 C.2 1 UNCH 0.2272 + 5 C3 3.0289 -1.3754 4.4283 C.2 1 UNCH -0.1500 + 6 C4 3.1287 -0.5101 5.5251 C.2 1 UNCH -0.1500 + 7 C5 2.5054 0.7396 5.5099 C.2 1 UNCH -0.1500 + 8 C6 1.7631 1.1683 4.4032 C.2 1 UNCH -0.1500 + 9 C7 1.6767 0.2869 3.3178 C.2 1 UNCH -0.1516 + 10 N3 0.2891 1.4425 1.6130 N.3 1 UNCH -0.8690 + 11 H1 0.9209 -0.9912 0.4300 H 1 UNCH 0.1500 + 12 H2 3.5106 -2.3470 4.4343 H 1 UNCH 0.1500 + 13 H3 3.6996 -0.8186 6.3980 H 1 UNCH 0.1500 + 14 H4 2.5989 1.3927 6.3756 H 1 UNCH 0.1500 + 15 H5 1.2801 2.1390 4.3938 H 1 UNCH 0.1500 + 16 H6 0.8473 2.2936 1.5911 H 1 UNCH 0.3600 + 17 H7 -0.4943 1.6324 2.2348 H 1 UNCH 0.3600 +@BOND + 1 1 2 am + 2 1 9 1 + 3 1 10 1 + 4 2 3 2 + 5 2 11 1 + 6 3 4 1 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 12 1 + 11 6 7 2 + 12 6 13 1 + 13 7 8 1 + 14 7 14 1 + 15 8 9 2 + 16 8 15 1 + 17 10 16 1 + 18 10 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-AMINOBENZIMIDAZOLE +@MOLECULE +SELFIY + 36 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 1.2629 5.2003 3.7512 SI 1 UNCH 0.9604 + 2 O1 2.0939 5.1024 5.1815 O.3 1 UNCH -0.6974 + 3 C1 -0.2403 4.1085 3.8362 C.2 1 UNCH -0.2210 + 4 C2 -0.8203 3.5457 2.6825 C.2 1 UNCH -0.1500 + 5 C3 -1.9502 2.7272 2.7679 C.2 1 UNCH -0.1500 + 6 C4 -2.5260 2.4569 4.0057 C.2 1 UNCH -0.1500 + 7 C5 -1.9744 3.0055 5.1596 C.2 1 UNCH -0.1500 + 8 C6 -0.8440 3.8235 5.0766 C.2 1 UNCH -0.1500 + 9 C7 2.3962 4.6151 2.3970 C.2 1 UNCH -0.2210 + 10 C8 3.0258 5.5160 1.5169 C.2 1 UNCH -0.1500 + 11 C9 3.8854 5.0637 0.5113 C.2 1 UNCH -0.1500 + 12 C10 4.1395 3.7034 0.3668 C.2 1 UNCH -0.1500 + 13 C11 3.5374 2.7929 1.2293 C.2 1 UNCH -0.1500 + 14 C12 2.6782 3.2428 2.2360 C.2 1 UNCH -0.1500 + 15 C13 0.7103 6.9429 3.4401 C.2 1 UNCH -0.2210 + 16 C14 1.1512 7.9957 4.2655 C.2 1 UNCH -0.1500 + 17 C15 0.7482 9.3141 4.0344 C.2 1 UNCH -0.1500 + 18 C16 -0.1041 9.6083 2.9745 C.2 1 UNCH -0.1500 + 19 C17 -0.5551 8.5854 2.1458 C.2 1 UNCH -0.1500 + 20 C18 -0.1529 7.2663 2.3752 C.2 1 UNCH -0.1500 + 21 H1 -0.3999 3.7358 1.6951 H 1 UNCH 0.1500 + 22 H2 -2.3811 2.3029 1.8647 H 1 UNCH 0.1500 + 23 H3 -3.4059 1.8230 4.0709 H 1 UNCH 0.1500 + 24 H4 -2.4249 2.8016 6.1275 H 1 UNCH 0.1500 + 25 H5 -0.4419 4.2428 5.9993 H 1 UNCH 0.1500 + 26 H6 2.8609 6.5905 1.5999 H 1 UNCH 0.1500 + 27 H7 4.3579 5.7788 -0.1575 H 1 UNCH 0.1500 + 28 H8 4.8080 3.3541 -0.4154 H 1 UNCH 0.1500 + 29 H9 3.7351 1.7296 1.1203 H 1 UNCH 0.1500 + 30 H10 2.2249 2.4979 2.8905 H 1 UNCH 0.1500 + 31 H11 1.8171 7.7995 5.1063 H 1 UNCH 0.1500 + 32 H12 1.1002 10.1093 4.6862 H 1 UNCH 0.1500 + 33 H13 -0.4189 10.6328 2.7967 H 1 UNCH 0.1500 + 34 H14 -1.2238 8.8112 1.3192 H 1 UNCH 0.1500 + 35 H15 -0.5279 6.4934 1.7055 H 1 UNCH 0.1500 + 36 H23 2.6925 4.3430 5.2510 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 9 1 + 4 1 15 1 + 5 2 36 1 + 6 3 4 2 + 7 3 8 1 + 8 4 5 1 + 9 4 21 1 + 10 5 6 2 + 11 5 22 1 + 12 6 7 1 + 13 6 23 1 + 14 7 8 2 + 15 7 24 1 + 16 8 25 1 + 17 9 10 2 + 18 9 14 1 + 19 10 11 1 + 20 10 26 1 + 21 11 12 2 + 22 11 27 1 + 23 12 13 1 + 24 12 28 1 + 25 13 14 2 + 26 13 29 1 + 27 14 30 1 + 28 15 16 2 + 29 15 20 1 + 30 16 17 1 + 31 16 31 1 + 32 17 18 2 + 33 17 32 1 + 34 18 19 1 + 35 18 33 1 + 36 19 20 2 + 37 19 34 1 + 38 20 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(TRIPHENYLSILANOL) 12-CROWN-4 +@MOLECULE +SEMDIX + 28 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8497 6.5570 9.1635 S.3 1 SEMD 0.1123 + 2 F1 -1.6670 6.2080 9.8154 F 1 SEMD -0.3400 + 3 O1 1.0246 5.0706 8.9656 O.3 1 SEMD -0.6000 + 4 O2 1.4995 7.4084 8.0980 O.3 1 SEMD -0.6000 + 5 N1 -1.5325 8.1908 8.5575 N.3 1 SEMD -1.0120 + 6 C1 -0.9631 6.7618 8.7906 C.3 1 SEMD 0.9307 + 7 C2 -1.0031 8.6752 7.1863 C.3 1 SEMD 0.5030 + 8 C3 -1.7131 9.9192 6.6599 C.3 1 SEMD 0.0000 + 9 C4 -1.0109 9.1509 9.6394 C.3 1 SEMD 0.5030 + 10 C5 -1.3361 8.7553 11.0734 C.3 1 SEMD 0.0000 + 11 C6 -3.0573 8.0969 8.6094 C.3 1 SEMD 0.5030 + 12 C7 -3.6695 7.1965 7.5435 C.3 1 SEMD 0.0000 + 13 H1 -1.1630 6.1753 7.8879 H 1 SEMD 0.0000 + 14 H2 -1.1044 7.8541 6.4691 H 1 SEMD 0.0000 + 15 H3 0.0516 8.9292 7.2918 H 1 SEMD 0.0000 + 16 H4 -1.6419 10.7610 7.3535 H 1 SEMD 0.0000 + 17 H5 -1.2423 10.2331 5.7217 H 1 SEMD 0.0000 + 18 H6 -2.7680 9.7391 6.4390 H 1 SEMD 0.0000 + 19 H7 -1.4694 10.1259 9.4419 H 1 SEMD 0.0000 + 20 H8 0.0694 9.2712 9.5121 H 1 SEMD 0.0000 + 21 H9 -0.8940 7.7993 11.3612 H 1 SEMD 0.0000 + 22 H10 -0.9279 9.5106 11.7543 H 1 SEMD 0.0000 + 23 H11 -2.4125 8.7147 11.2584 H 1 SEMD 0.0000 + 24 H12 -3.3475 7.7212 9.5954 H 1 SEMD 0.0000 + 25 H13 -3.4525 9.1149 8.5237 H 1 SEMD 0.0000 + 26 H14 -3.3939 6.1480 7.6876 H 1 SEMD 0.0000 + 27 H15 -3.3930 7.4904 6.5284 H 1 SEMD 0.0000 + 28 H16 -4.7617 7.2494 7.6099 H 1 SEMD 0.0000 +@BOND + 1 1 6 1 + 2 1 4 1 + 3 1 3 1 + 4 2 6 1 + 5 5 11 1 + 6 5 9 1 + 7 5 7 1 + 8 5 6 1 + 9 6 13 1 + 10 7 15 1 + 11 7 14 1 + 12 7 8 1 + 13 8 18 1 + 14 8 17 1 + 15 8 16 1 + 16 9 20 1 + 17 9 19 1 + 18 9 10 1 + 19 10 23 1 + 20 10 22 1 + 21 10 21 1 + 22 11 25 1 + 23 11 24 1 + 24 11 12 1 + 25 12 28 1 + 26 12 27 1 + 27 12 26 1 +@SUBSTRUCTURE + 1 SEMD 1 +@COMMENT +COMMENT TRIETHYLAMMONIOFLUOROMETHANESULFINATE +@MOLECULE +SEMXOX + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.5444 2.6698 10.4181 O.3 1 SEMX -0.4300 + 2 O2 1.1547 0.9587 11.0401 O.2 1 SEMX -0.5700 + 3 N1 1.6272 -0.8758 7.3055 N.3 1 SEMX -0.1580 + 4 N2 0.7647 -1.9672 7.3841 N.2 1 SEMX -0.0420 + 5 N3 0.1419 -1.9134 8.4964 N.2 1 SEMX -0.0420 + 6 N4 0.4791 -0.7424 9.1034 N.3 1 SEMX -0.4580 + 7 N5 4.3377 1.8046 7.6859 N.1 1 SEMX -0.5571 + 8 C1 2.4775 -1.4129 5.0841 C.2 1 SEMX -0.1500 + 9 C2 2.8078 -1.0576 3.7739 C.2 1 SEMX -0.1500 + 10 C3 2.6076 0.2484 3.3372 C.2 1 SEMX -0.1500 + 11 C4 2.0699 1.1939 4.2064 C.2 1 SEMX -0.1500 + 12 C5 1.7397 0.8361 5.5176 C.2 1 SEMX -0.1500 + 13 C6 1.9525 -0.4699 5.9858 C.2 1 SEMX 0.1000 + 14 C7 1.5060 -0.1194 8.4497 C.2 1 SEMX 0.2000 + 15 C8 2.2525 0.9052 8.9106 C.2 1 SEMX 0.0794 + 16 C9 1.9116 1.4836 10.2327 C.2 1 SEMX 0.7056 + 17 C10 2.2727 3.2978 11.6735 C.3 1 SEMX 0.2800 + 18 C11 3.3955 1.3957 8.2272 C.1 1 SEMX 0.4921 + 19 H1 2.6443 -2.4377 5.4096 H 1 SEMX 0.1500 + 20 H2 3.2218 -1.8012 3.0980 H 1 SEMX 0.1500 + 21 H3 2.8650 0.5282 2.3190 H 1 SEMX 0.1500 + 22 H4 1.9015 2.2116 3.8632 H 1 SEMX 0.1500 + 23 H5 1.2872 1.5910 6.1537 H 1 SEMX 0.1500 + 24 H6 0.3702 -0.6219 10.1103 H 1 SEMX 0.4000 + 25 H7 1.2066 3.5286 11.7622 H 1 SEMX 0.0000 + 26 H8 2.6024 2.6599 12.4994 H 1 SEMX 0.0000 + 27 H9 2.8353 4.2346 11.7121 H 1 SEMX 0.0000 +@BOND + 1 1 16 1 + 2 1 17 1 + 3 2 16 2 + 4 3 4 1 + 5 3 13 1 + 6 3 14 1 + 7 4 5 2 + 8 5 6 1 + 9 6 14 1 + 10 6 24 1 + 11 7 18 3 + 12 8 9 2 + 13 8 13 1 + 14 8 19 1 + 15 9 10 1 + 16 9 20 1 + 17 10 11 2 + 18 10 21 1 + 19 11 12 1 + 20 11 22 1 + 21 12 13 2 + 22 12 23 1 + 23 14 15 2 + 24 15 16 1 + 25 15 18 1 + 26 17 25 1 + 27 17 26 1 + 28 17 27 1 +@SUBSTRUCTURE + 1 SEMX 1 +@COMMENT +COMMENT METHYL (E)-2-CYANO-2-(1-PHENYL-4,5-DIHYDRO-1H-TETRAZOL-5-YL +@MOLECULE +SETHAA + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -3.0983 7.4942 -2.3528 S.3 1 SETH 1.2118 + 2 S2 -1.2123 5.3719 -0.5861 S.3 1 SETH 1.2118 + 3 O1 -3.2947 7.7333 -3.7674 O.3 1 SETH -0.6500 + 4 O2 -3.8554 8.2402 -1.3677 O.3 1 SETH -0.6500 + 5 O3 -0.7840 4.3150 -1.4847 O.3 1 SETH -0.6500 + 6 O4 -0.8901 5.3147 0.8265 O.3 1 SETH -0.6500 + 7 C1 -3.4280 5.7823 -2.0630 C.3 1 SETH 0.1052 + 8 C2 -2.9771 5.3959 -0.6811 C.3 1 SETH 0.1052 + 9 C3 -0.7038 6.8810 -1.2479 C.2 1 SETH -0.0454 + 10 C4 -1.4314 7.7136 -1.9993 C.2 1 SETH -0.1670 + 11 C5 0.7110 7.1332 -0.9677 C.2 1 SETH 0.0284 + 12 C6 1.7127 6.5278 -1.7391 C.2 1 SETH -0.1500 + 13 C7 3.0582 6.8046 -1.4900 C.2 1 SETH -0.1500 + 14 C8 3.4124 7.6933 -0.4766 C.2 1 SETH -0.1500 + 15 C9 2.4232 8.3075 0.2892 C.2 1 SETH -0.1500 + 16 C10 1.0766 8.0330 0.0431 C.2 1 SETH -0.1500 + 17 H1 -0.9964 8.6208 -2.4017 H 1 SETH 0.1500 + 18 H2 -2.9356 5.2021 -2.8494 H 1 SETH 0.0000 + 19 H3 -4.5098 5.6496 -2.1656 H 1 SETH 0.0000 + 20 H4 -3.3182 4.3851 -0.4348 H 1 SETH 0.0000 + 21 H5 -3.3489 6.0768 0.0910 H 1 SETH 0.0000 + 22 H6 1.4589 5.8288 -2.5344 H 1 SETH 0.1500 + 23 H7 3.8307 6.3235 -2.0850 H 1 SETH 0.1500 + 24 H8 4.4609 7.9046 -0.2810 H 1 SETH 0.1500 + 25 H9 2.7010 8.9975 1.0823 H 1 SETH 0.1500 + 26 H10 0.3205 8.5189 0.6568 H 1 SETH 0.1500 +@BOND + 1 1 10 1 + 2 1 7 1 + 3 1 4 1 + 4 1 3 1 + 5 2 9 1 + 6 2 8 1 + 7 2 6 1 + 8 2 5 1 + 9 7 19 1 + 10 7 18 1 + 11 7 8 1 + 12 8 21 1 + 13 8 20 1 + 14 9 11 1 + 15 9 10 2 + 16 10 17 1 + 17 11 16 1 + 18 11 12 2 + 19 12 22 1 + 20 12 13 1 + 21 13 23 1 + 22 13 14 2 + 23 14 24 1 + 24 14 15 1 + 25 15 25 1 + 26 15 16 2 + 27 16 26 1 +@SUBSTRUCTURE + 1 SETH 1 +@COMMENT +COMMENT 2,3-DIHYDRO-5-PHENYL-1,4-DITHIIN 1,1,4,4-TETROXIDE (FUNGICI +@MOLECULE +SETLIM + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 9.5554 1.9863 1.3973 S.3 1 UNCH -0.2300 + 2 S2 8.3438 0.9454 2.6514 S.3 1 UNCH -0.1410 + 3 C1 7.4745 0.0947 1.3688 C.2 1 UNCH 0.6410 + 4 N1 6.6925 -0.9779 1.7037 N.3 1 UNCH -0.5500 + 5 N2 7.6245 0.4338 0.1253 N.2 1 UNCH -0.6960 + 6 C2 8.5083 1.6489 -0.0816 C.3 1 UNCH 0.4760 + 7 C3 7.6538 2.8779 -0.4095 C.3 1 UNCH 1.0200 + 8 F1 8.3859 3.9979 -0.6028 F 1 UNCH -0.3400 + 9 F2 6.7840 3.1515 0.6003 F 1 UNCH -0.3400 + 10 F3 6.8970 2.7014 -1.5178 F 1 UNCH -0.3400 + 11 C4 9.4049 1.4570 -1.3059 C.3 1 UNCH 1.0200 + 12 F4 10.1981 2.5249 -1.5523 F 1 UNCH -0.3400 + 13 F5 10.2304 0.3887 -1.1484 F 1 UNCH -0.3400 + 14 F6 8.6953 1.2237 -2.4351 F 1 UNCH -0.3400 + 15 C5 5.6760 -0.9615 2.6894 C.2 1 UNCH 0.1000 + 16 C6 5.2681 -2.1844 3.2403 C.2 1 UNCH -0.1500 + 17 C7 4.2332 -2.2388 4.1765 C.2 1 UNCH -0.1500 + 18 C8 3.5794 -1.0706 4.5589 C.2 1 UNCH -0.1500 + 19 C9 3.9552 0.1485 3.9997 C.2 1 UNCH -0.1500 + 20 C10 4.9914 0.2020 3.0632 C.2 1 UNCH -0.1500 + 21 H1 6.3228 -1.4231 0.8672 H 1 UNCH 0.4000 + 22 H2 5.7694 -3.1061 2.9534 H 1 UNCH 0.1500 + 23 H3 3.9385 -3.1929 4.6061 H 1 UNCH 0.1500 + 24 H4 2.7735 -1.1103 5.2874 H 1 UNCH 0.1500 + 25 H5 3.4371 1.0603 4.2871 H 1 UNCH 0.1500 + 26 H6 5.2388 1.1662 2.6262 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 1 + 4 3 4 am + 5 3 5 2 + 6 4 15 1 + 7 4 21 1 + 8 5 6 1 + 9 6 7 1 + 10 6 11 1 + 11 7 8 1 + 12 7 9 1 + 13 7 10 1 + 14 11 12 1 + 15 11 13 1 + 16 11 14 1 + 17 15 16 2 + 18 15 20 1 + 19 16 17 1 + 20 16 22 1 + 21 17 18 2 + 22 17 23 1 + 23 18 19 1 + 24 18 24 1 + 25 19 20 2 + 26 19 25 1 + 27 20 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-PHENYLAMINO-5,5-BIS(TRIFLUOROMETHYL)-1,2,4-DITHIAZOLINE +@MOLECULE +SEYVUN + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 10.2553 -2.8173 3.1168 N.3 1 SEYV 0.2996 + 2 N2 10.8801 -3.9871 3.3067 N.2 1 SEYV -0.7068 + 3 C1 9.9543 -4.9053 3.0285 C.2 1 SEYV 0.1388 + 4 C2 8.7230 -4.3252 2.6564 C.2 1 SEYV 0.0000 + 5 C3 7.4581 -4.7890 2.2754 C.2 1 SEYV -0.1500 + 6 C4 6.4912 -3.8330 1.9826 C.2 1 SEYV 0.2110 + 7 N3 6.7697 -2.5232 2.0650 N.2 1 SEYV -0.1790 + 8 C5 7.9632 -2.0309 2.4244 C.2 1 SEYV 0.2110 + 9 C6 8.9483 -2.9544 2.7227 C.2 1 SEYV -0.1516 + 10 H1 10.7894 -1.9673 3.2768 H 1 SEYV 0.2700 + 11 H2 10.2161 -5.9542 3.1088 H 1 SEYV 0.1500 + 12 H3 7.2386 -5.8513 2.2105 H 1 SEYV 0.1500 + 13 H4 5.4830 -4.0982 1.6788 H 1 SEYV 0.1500 + 14 H5 6.0245 -1.8608 1.8394 H 1 SEYV 0.4570 + 15 H6 8.0865 -0.9542 2.4603 H 1 SEYV 0.1500 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 1 2 1 + 4 2 3 2 + 5 3 11 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 + 9 5 12 1 + 10 5 6 1 + 11 6 13 1 + 12 6 7 2 + 13 7 14 1 + 14 7 8 1 + 15 8 15 1 + 16 8 9 2 +@SUBSTRUCTURE + 1 SEYV 1 +@COMMENT +COMMENT 1H-PYRAZOLO(3,4-C)PYRIDINE HYDROCHLORIDE MONOHYDRATE +@MOLECULE +SEYWUO + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.6312 10.5857 6.5912 S.2 1 SEYW -0.3800 + 2 N1 2.1528 7.9082 6.9151 N.3 1 SEYW -0.1790 + 3 N2 1.2729 8.2259 7.9721 N.2 1 SEYW -0.8364 + 4 N3 -0.6629 8.6644 8.9451 N.3 1 SEYW -0.7301 + 5 N4 2.7747 8.2098 9.8729 N.3 1 SEYW -0.8334 + 6 O1 -0.6880 8.2676 6.6661 O.2 1 SEYW -0.5700 + 7 O2 2.4039 8.7788 4.7987 O.3 1 SEYW -0.4300 + 8 C1 1.9990 7.5174 4.2392 C.3 1 SEYW 0.2800 + 9 C2 2.3368 8.9920 6.1456 C.2 1 SEYW 0.3100 + 10 C3 -0.1263 8.3936 7.7340 C.2 1 SEYW 1.0110 + 11 C4 0.3233 8.9044 9.9810 C.3 1 SEYW 0.4051 + 12 C5 1.5862 8.4091 9.2645 C.2 1 SEYW 0.6038 + 13 C6 0.3654 10.4079 10.2597 C.3 1 SEYW 0.0000 + 14 C7 -0.0665 8.0829 11.2050 C.3 1 SEYW 0.0000 + 15 C8 3.0610 8.4840 11.2854 C.3 1 SEYW 0.4895 + 16 C9 3.9049 7.6417 9.1095 C.3 1 SEYW 0.4895 + 17 H1 -1.6249 8.9653 8.9732 H 1 SEYW 0.3700 + 18 H2 1.9826 7.6275 3.1513 H 1 SEYW 0.0000 + 19 H3 2.7247 6.7404 4.4966 H 1 SEYW 0.0000 + 20 H4 0.9921 7.2477 4.5711 H 1 SEYW 0.0000 + 21 H5 -0.6168 10.7697 10.5865 H 1 SEYW 0.0000 + 22 H6 1.0839 10.6761 11.0360 H 1 SEYW 0.0000 + 23 H7 0.6343 10.9725 9.3601 H 1 SEYW 0.0000 + 24 H8 -1.1055 8.2811 11.4945 H 1 SEYW 0.0000 + 25 H9 0.5521 8.3089 12.0764 H 1 SEYW 0.0000 + 26 H10 0.0180 7.0090 11.0031 H 1 SEYW 0.0000 + 27 H11 4.1275 8.6922 11.4217 H 1 SEYW 0.0000 + 28 H12 2.7959 7.6074 11.8824 H 1 SEYW 0.0000 + 29 H13 2.5278 9.3621 11.6415 H 1 SEYW 0.0000 + 30 H14 4.7176 7.3637 9.7897 H 1 SEYW 0.0000 + 31 H15 4.2991 8.3847 8.4132 H 1 SEYW 0.0000 + 32 H16 3.5978 6.7197 8.6088 H 1 SEYW 0.0000 +@BOND + 1 1 9 2 + 2 2 9 1 + 3 2 3 1 + 4 3 12 2 + 5 3 10 am + 6 4 17 1 + 7 4 11 1 + 8 4 10 am + 9 5 16 1 + 10 5 15 1 + 11 5 12 am + 12 6 10 2 + 13 7 9 1 + 14 7 8 1 + 15 8 20 1 + 16 8 19 1 + 17 8 18 1 + 18 11 14 1 + 19 11 13 1 + 20 11 12 1 + 21 13 23 1 + 22 13 22 1 + 23 13 21 1 + 24 14 26 1 + 25 14 25 1 + 26 14 24 1 + 27 15 29 1 + 28 15 28 1 + 29 15 27 1 + 30 16 32 1 + 31 16 31 1 + 32 16 30 1 +@SUBSTRUCTURE + 1 SEYW 1 +@COMMENT +COMMENT 5-(DIMETHYLAMINO)-3,4-DIHYDRO-4,4-DIMETHYL-2-OXO-2H-IMIDAZO +@MOLECULE +SEZMEP + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 6.8716 14.1992 -2.7019 CL 1 UNCH -0.2273 + 2 CL2 8.3660 14.0953 0.4334 CL 1 UNCH -0.2900 + 3 CL3 5.5611 13.3554 0.3050 CL 1 UNCH -0.2900 + 4 CL4 5.2130 10.1197 1.1449 CL 1 UNCH -0.2900 + 5 CL5 7.8948 9.0527 1.6001 CL 1 UNCH -0.2900 + 6 CL6 6.6569 7.7798 -1.0736 CL 1 UNCH -0.1400 + 7 CL7 7.5944 9.4539 -3.2287 CL 1 UNCH -0.1400 + 8 O1 8.5633 12.2542 -1.8583 O.3 1 UNCH -0.2960 + 9 O2 7.0174 12.0711 2.6451 O.3 1 UNCH -0.6800 + 10 C1 7.4393 11.8987 -1.0339 C.3 1 UNCH 0.0930 + 11 C2 7.2373 12.7264 0.2319 C.3 1 UNCH 0.6750 + 12 C3 7.5107 11.7023 1.3505 C.3 1 UNCH 0.2800 + 13 C4 7.2694 12.5278 -2.4072 C.3 1 UNCH 0.2753 + 14 C5 6.9514 10.3568 0.8035 C.3 1 UNCH 0.7182 + 15 C6 7.1716 10.4399 -0.7195 C.2 1 UNCH -0.1782 + 16 C7 7.1515 9.3749 -1.5546 C.2 1 UNCH 0.2800 + 17 H1 7.3216 12.9765 2.8455 H 1 UNCH 0.4000 + 18 H2 8.6014 11.6017 1.4602 H 1 UNCH 0.0000 + 19 H3 6.9205 11.9507 -3.2469 H 1 UNCH 0.1000 +@BOND + 1 1 13 1 + 2 2 11 1 + 3 3 11 1 + 4 4 14 1 + 5 5 14 1 + 6 6 16 1 + 7 7 16 1 + 8 8 10 1 + 9 8 13 1 + 10 9 12 1 + 11 9 17 1 + 12 10 11 1 + 13 10 13 1 + 14 10 15 1 + 15 11 12 1 + 16 12 14 1 + 17 12 18 1 + 18 13 19 1 + 19 14 15 1 + 20 15 16 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1R*,3S*)-2,2,4,4-TETRACHLORO-5-DICHLOROMETHYLENE-3-HYDROXY +@MOLECULE +SICNUN + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.1034 0.4837 7.7842 C.2 1 UNCH 0.1000 + 2 C2 -1.4549 0.8346 8.0099 C.2 1 UNCH 0.1330 + 3 C3 -2.5141 0.1828 7.3504 C.2 1 UNCH -0.1500 + 4 C4 -2.2252 -0.8514 6.4549 C.2 1 UNCH 0.1330 + 5 C5 -0.9014 -1.2389 6.2240 C.2 1 UNCH -0.1500 + 6 C6 0.1398 -0.5782 6.8864 C.2 1 UNCH -0.1500 + 7 N1 1.0303 1.0857 8.3575 N.3 1 UNCH -0.4731 + 8 N2 -1.8209 1.8572 8.9857 N.2 1 UNCH 0.9070 + 9 O1 -2.7579 2.6114 8.6973 O.3 1 UNCH -0.5200 + 10 O2 -1.1935 1.8696 10.0532 O.2 1 UNCH -0.5200 + 11 N3 -3.3193 -1.5472 5.7637 N.2 1 UNCH 0.9070 + 12 O3 -3.0148 -2.4090 4.9286 O.3 1 UNCH -0.5200 + 13 O4 -4.4778 -1.2347 6.0682 O.2 1 UNCH -0.5200 + 14 N4 1.2423 2.4238 8.1033 N.2 1 UNCH 1.0440 + 15 O5 0.6076 2.9307 7.1733 O.3 1 UNCH -0.5200 + 16 O6 2.0647 2.9966 8.8222 O.2 1 UNCH -0.5200 + 17 C7 1.5481 0.5344 9.6104 C.3 1 UNCH 0.4301 + 18 C8 3.0322 0.2417 9.4752 C.2 1 UNCH 0.6590 + 19 O7 3.6416 0.0829 10.6682 O.3 1 UNCH -0.6500 + 20 O8 3.6582 0.0943 8.4370 O.2 1 UNCH -0.5700 + 21 H1 -3.5454 0.4788 7.5434 H 1 UNCH 0.1500 + 22 H2 -0.6592 -2.0427 5.5294 H 1 UNCH 0.1500 + 23 H3 1.1673 -0.8815 6.6752 H 1 UNCH 0.1500 + 24 H4 1.0604 -0.4169 9.8579 H 1 UNCH 0.0000 + 25 H5 1.3862 1.2210 10.4499 H 1 UNCH 0.0000 + 26 H6 4.5844 -0.0762 10.4453 H 1 UNCH 0.5000 +@BOND + 1 1 2 1 + 2 1 6 2 + 3 1 7 1 + 4 2 3 2 + 5 2 8 1 + 6 3 4 1 + 7 3 21 1 + 8 4 5 2 + 9 4 11 1 + 10 5 6 1 + 11 5 22 1 + 12 6 23 1 + 13 7 14 1 + 14 7 17 1 + 15 8 9 1 + 16 8 10 2 + 17 11 12 1 + 18 11 13 2 + 19 14 15 1 + 20 14 16 2 + 21 17 18 1 + 22 17 24 1 + 23 17 25 1 + 24 18 19 1 + 25 18 20 2 + 26 19 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4-N-TRINITROANILINOACETIC ACID +@MOLECULE +SICPEZ + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.4886 2.1220 0.9463 S.3 1 UNCH -0.0800 + 2 O1 3.7085 -1.6430 3.8693 O.3 1 UNCH -0.5325 + 3 N1 5.6222 -0.1242 2.5764 N.2 1 UNCH -0.6290 + 4 C1 5.3581 0.7524 0.3748 C.2 1 UNCH -0.0450 + 5 C2 5.6128 0.8679 -0.9817 C.2 1 UNCH -0.1500 + 6 C3 5.0919 2.0711 -1.5431 C.2 1 UNCH -0.1500 + 7 C4 4.4549 2.8436 -0.6006 C.2 1 UNCH -0.1100 + 8 C5 5.7229 -0.3269 1.2926 C.2 1 UNCH 0.4740 + 9 C6 6.2372 -1.6166 0.6739 C.3 1 UNCH 0.0610 + 10 C7 6.0116 -1.1193 3.4869 C.2 1 UNCH 0.1790 + 11 C8 7.3526 -1.3355 3.8084 C.2 1 UNCH -0.1500 + 12 C9 7.7017 -2.3340 4.7225 C.2 1 UNCH -0.1500 + 13 C10 6.7100 -3.1102 5.3288 C.2 1 UNCH -0.1500 + 14 C11 5.3656 -2.8832 5.0349 C.2 1 UNCH -0.1500 + 15 C12 5.0309 -1.8849 4.1295 C.2 1 UNCH 0.0825 + 16 H1 3.7155 -0.8174 3.3426 H 1 UNCH 0.4500 + 17 H2 6.1558 0.1303 -1.5601 H 1 UNCH 0.1500 + 18 H3 5.1828 2.3556 -2.5844 H 1 UNCH 0.1500 + 19 H4 3.9718 3.8006 -0.7430 H 1 UNCH 0.1500 + 20 H5 6.0459 -2.4818 1.3123 H 1 UNCH 0.0000 + 21 H6 7.3146 -1.5266 0.5063 H 1 UNCH 0.0000 + 22 H7 5.7431 -1.8136 -0.2817 H 1 UNCH 0.0000 + 23 H8 8.1251 -0.7248 3.3505 H 1 UNCH 0.1500 + 24 H9 8.7474 -2.5025 4.9678 H 1 UNCH 0.1500 + 25 H10 6.9846 -3.8836 6.0418 H 1 UNCH 0.1500 + 26 H11 4.5869 -3.4678 5.5146 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 7 1 + 3 2 15 1 + 4 2 16 1 + 5 3 8 2 + 6 3 10 1 + 7 4 5 2 + 8 4 8 1 + 9 5 6 1 + 10 5 17 1 + 11 6 7 2 + 12 6 18 1 + 13 7 19 1 + 14 8 9 1 + 15 9 20 1 + 16 9 21 1 + 17 9 22 1 + 18 10 11 1 + 19 10 15 2 + 20 11 12 2 + 21 11 23 1 + 22 12 13 1 + 23 12 24 1 + 24 13 14 2 + 25 13 25 1 + 26 14 15 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(1-(2-THIENYL)ETHYLIDENEAMINO)PHENOL +@MOLECULE +SICSEC + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.5645 16.3955 2.4819 N.2 1 SICS -0.7068 + 2 N2 0.7046 15.2121 3.1395 N.3 1 SICS 0.8590 + 3 N3 1.9682 14.7393 3.3190 N.2 1 SICS -0.7068 + 4 C1 2.7005 15.6851 2.7353 C.2 1 SICS 0.5448 + 5 C2 1.8295 16.7129 2.2158 C.2 1 SICS 0.5448 + 6 N4 4.0592 15.7105 2.6274 N.2 1 SICS -0.5660 + 7 C3 4.4707 16.8281 1.9689 C.2 1 SICS 0.1600 + 8 C4 3.6253 17.8255 1.4648 C.2 1 SICS 0.1600 + 9 N5 2.2678 17.8241 1.5591 N.2 1 SICS -0.5660 + 10 C5 -0.4265 14.4966 3.6208 C.2 1 SICS -0.0230 + 11 C6 -1.7186 15.0059 3.4227 C.2 1 SICS -0.1500 + 12 C7 -2.8263 14.3001 3.8969 C.2 1 SICS -0.1500 + 13 C8 -2.6508 13.0898 4.5672 C.2 1 SICS -0.1500 + 14 C9 -1.3682 12.5797 4.7665 C.2 1 SICS -0.1500 + 15 C10 -0.2547 13.2787 4.2956 C.2 1 SICS -0.1500 + 16 H1 5.5477 16.9133 1.8467 H 1 SICS 0.1500 + 17 H2 4.0447 18.6866 0.9504 H 1 SICS 0.1500 + 18 H3 -1.8801 15.9484 2.9024 H 1 SICS 0.1500 + 19 H4 -3.8275 14.6955 3.7429 H 1 SICS 0.1500 + 20 H5 -3.5155 12.5429 4.9352 H 1 SICS 0.1500 + 21 H6 -1.2342 11.6358 5.2894 H 1 SICS 0.1500 + 22 H7 0.7366 12.8611 4.4628 H 1 SICS 0.1500 +@BOND + 1 1 5 2 + 2 1 2 1 + 3 2 10 1 + 4 2 3 1 + 5 3 4 2 + 6 4 6 am + 7 4 5 1 + 8 5 9 am + 9 6 7 2 + 10 7 16 1 + 11 7 8 1 + 12 8 17 1 + 13 8 9 2 + 14 10 15 1 + 15 10 11 2 + 16 11 18 1 + 17 11 12 1 + 18 12 19 1 + 19 12 13 2 + 20 13 20 1 + 21 13 14 1 + 22 14 21 1 + 23 14 15 2 + 24 15 22 1 +@SUBSTRUCTURE + 1 SICS 1 +@COMMENT +COMMENT 2-PHENYL-1,2,3-TRIAZOLO(4,5-B)PYRAZINE +@MOLECULE +SIDFIU + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 1.6089 -0.1845 4.0887 I 1 UNCH -0.0900 + 2 N1 4.8910 4.0839 7.0392 N.1 1 UNCH -0.5571 + 3 N2 1.0237 3.3074 5.1723 N.1 1 UNCH -0.5571 + 4 C1 3.3887 1.0020 6.4261 C.2 1 UNCH 0.0000 + 5 C2 2.4947 -0.1010 5.9715 C.2 1 UNCH 0.0900 + 6 C3 2.4194 -1.2049 6.7497 C.2 1 UNCH -0.1500 + 7 C4 3.1792 2.3288 6.2103 C.2 1 UNCH 0.1300 + 8 C5 4.1123 3.3101 6.6639 C.1 1 UNCH 0.4921 + 9 C6 1.9918 2.8536 5.6232 C.1 1 UNCH 0.4921 + 10 H1 1.8321 -2.0686 6.4430 H 1 UNCH 0.1500 + 11 C3B 4.5825 0.5514 7.1844 C.2 1 UNCH -0.1500 + 12 C1B 3.2168 -1.2886 7.9988 C.2 1 UNCH 0.0000 + 13 C2B 4.5175 -0.5620 7.9498 C.2 1 UNCH 0.0900 + 14 H1B 5.5189 1.0923 7.0590 H 1 UNCH 0.1500 + 15 C4B 2.7359 -1.9768 9.0694 C.2 1 UNCH 0.1300 + 16 I1B 6.3020 -1.3098 8.7201 I 1 UNCH -0.0900 + 17 C5B 1.4862 -2.6653 9.0077 C.1 1 UNCH 0.4921 + 18 C6B 3.3649 -1.9851 10.3478 C.1 1 UNCH 0.4921 + 19 N1B 0.4704 -3.2197 8.9259 N.1 1 UNCH -0.5571 + 20 N2B 3.8433 -1.9858 11.4049 N.1 1 UNCH -0.5571 +@BOND + 1 1 5 1 + 2 2 8 3 + 3 3 9 3 + 4 4 5 1 + 5 4 7 2 + 6 4 11 1 + 7 5 6 2 + 8 6 10 1 + 9 6 12 1 + 10 7 8 1 + 11 7 9 1 + 12 11 13 2 + 13 11 14 1 + 14 12 13 1 + 15 12 15 2 + 16 13 16 1 + 17 15 17 1 + 18 15 18 1 + 19 17 19 3 + 20 18 20 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,5-DI-IODO-7,7,8,8-TETRACYANO-P-QUINODIMETHANE (AT -70 DEG +@MOLECULE +SIDRUS + 38 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.5051 8.4925 7.7069 S.3 1 SIDR 0.7349 + 2 O1 2.0554 7.3689 6.9462 O.3 1 SIDR -0.6500 + 3 N1 3.3700 8.8389 4.2500 N.2 1 SIDR -0.4570 + 4 O2 2.5014 9.4695 8.1458 O.3 1 SIDR -0.6500 + 5 N2 4.6668 8.8809 4.6311 N.2 1 SIDR 0.0430 + 6 N3 4.8462 9.9533 5.2872 N.2 1 SIDR 0.0430 + 7 N4 3.6630 10.6143 5.3464 N.3 1 SIDR -0.4570 + 8 C1 2.7495 9.9771 4.5977 C.2 1 SIDR 0.6560 + 9 C2 1.3331 10.3852 4.2185 C.3 1 SIDR 0.3900 + 10 C3 1.1419 11.6419 3.3297 C.3 1 SIDR 0.0000 + 11 N5 0.5571 10.4645 5.4640 N.2 1 SIDR -0.2460 + 12 N6 0.2591 9.3113 5.8277 N.2 1 SIDR -0.4310 + 13 N7 0.1346 9.1236 7.1503 N.3 1 SIDR -0.1091 + 14 C4 2.8146 7.5793 3.8259 C.3 1 SIDR 0.5140 + 15 C5 0.9139 7.7582 9.2168 C.3 1 SIDR 0.1052 + 16 C6 3.5199 11.6261 6.3634 C.3 1 SIDR 0.5140 + 17 C7 -0.3447 11.7569 2.9287 C.3 1 SIDR 0.0000 + 18 C8 1.9747 11.4852 2.0415 C.3 1 SIDR 0.0000 + 19 C9 1.5551 12.9498 4.0179 C.3 1 SIDR 0.0000 + 20 H1 0.9785 9.5320 3.6219 H 1 SIDR 0.0000 + 21 H2 1.8113 7.4475 4.2357 H 1 SIDR 0.0000 + 22 H3 3.4428 6.7494 4.1623 H 1 SIDR 0.0000 + 23 H4 2.7614 7.5726 2.7340 H 1 SIDR 0.0000 + 24 H5 0.4918 8.5370 9.8558 H 1 SIDR 0.0000 + 25 H6 1.7612 7.2880 9.7219 H 1 SIDR 0.0000 + 26 H7 0.1624 7.0020 8.9791 H 1 SIDR 0.0000 + 27 H8 2.4723 11.7801 6.6221 H 1 SIDR 0.0000 + 28 H9 3.9419 12.5627 5.9898 H 1 SIDR 0.0000 + 29 H10 4.0709 11.3381 7.2633 H 1 SIDR 0.0000 + 30 H11 -0.9845 11.9252 3.8019 H 1 SIDR 0.0000 + 31 H12 -0.6920 10.8458 2.4284 H 1 SIDR 0.0000 + 32 H13 -0.5058 12.5931 2.2385 H 1 SIDR 0.0000 + 33 H14 3.0470 11.4356 2.2608 H 1 SIDR 0.0000 + 34 H15 1.8174 12.3315 1.3629 H 1 SIDR 0.0000 + 35 H16 1.7010 10.5720 1.5010 H 1 SIDR 0.0000 + 36 H17 1.0594 13.0749 4.9858 H 1 SIDR 0.0000 + 37 H18 1.2887 13.8174 3.4023 H 1 SIDR 0.0000 + 38 H19 2.6361 12.9970 4.1694 H 1 SIDR 0.0000 +@BOND + 1 1 15 1 + 2 1 13 1 + 3 1 4 1 + 4 1 2 1 + 5 3 14 1 + 6 3 8 2 + 7 3 5 1 + 8 5 6 2 + 9 6 7 1 + 10 7 16 1 + 11 7 8 am + 12 8 9 1 + 13 9 20 1 + 14 9 11 1 + 15 9 10 1 + 16 10 19 1 + 17 10 18 1 + 18 10 17 1 + 19 11 12 2 + 20 12 13 1 + 21 14 23 1 + 22 14 22 1 + 23 14 21 1 + 24 15 26 1 + 25 15 25 1 + 26 15 24 1 + 27 16 29 1 + 28 16 28 1 + 29 16 27 1 + 30 17 32 1 + 31 17 31 1 + 32 17 30 1 + 33 18 35 1 + 34 18 34 1 + 35 18 33 1 + 36 19 38 1 + 37 19 37 1 + 38 19 36 1 +@SUBSTRUCTURE + 1 SIDR 1 +@COMMENT +COMMENT 5-(6-METHYLSULFONYL-2,2-DIMETHYL-4,5,6-TRIAZAHEX-4-EN-3-YL) +@MOLECULE +SINMIL + 40 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.0543 0.5004 8.3368 P 1 SINM -0.4129 + 2 N1 -1.3752 -1.3672 9.9950 N.3 1 SINM -0.9280 + 3 N2 -1.3752 2.8084 7.3637 N.3 1 SINM -0.9280 + 4 C1 -1.3752 -0.8286 8.6131 C.3 1 SINM 0.7180 + 5 C2 -1.3752 1.3331 7.2779 C.3 1 SINM 0.7180 + 6 C3 0.9425 -0.2639 6.9689 C.3 1 SINM 0.1669 + 7 C4 2.0508 -1.1644 7.4816 C.3 1 SINM 0.0000 + 8 C5 -0.1427 -2.2005 10.2310 C.3 1 SINM 0.5030 + 9 C6 -2.6111 3.3614 6.6992 C.3 1 SINM 0.5030 + 10 H1 -1.3752 -0.5961 10.6754 H 1 SINM 0.4500 + 11 H2 -1.3752 3.1104 8.3468 H 1 SINM 0.4500 + 12 H3 -1.3752 -1.5741 7.8134 H 1 SINM 0.0000 + 13 H4 -1.3752 0.9309 6.2602 H 1 SINM 0.0000 + 14 H5 0.2992 -0.8264 6.2843 H 1 SINM 0.0000 + 15 H6 1.3926 0.5503 6.3902 H 1 SINM 0.0000 + 16 H7 2.6705 -1.5070 6.6462 H 1 SINM 0.0000 + 17 H8 1.6493 -2.0533 7.9760 H 1 SINM 0.0000 + 18 H9 2.7026 -0.6430 8.1908 H 1 SINM 0.0000 + 19 H10 -0.0851 -2.9772 9.4633 H 1 SINM 0.0000 + 20 H11 0.7356 -1.5524 10.2205 H 1 SINM 0.0000 + 21 H12 -0.2264 -2.6517 11.2242 H 1 SINM 0.0000 + 22 H13 -2.6643 2.9840 5.6739 H 1 SINM 0.0000 + 23 H14 -2.5343 4.4526 6.7028 H 1 SINM 0.0000 + 24 H15 -3.4904 3.0717 7.2783 H 1 SINM 0.0000 + 25 P1A -2.6961 0.5004 8.3368 P 1 SINM -0.4129 + 26 C5A -2.6078 -2.2005 10.2310 C.3 1 SINM 0.5030 + 27 C6A -0.1393 3.3614 6.6992 C.3 1 SINM 0.5030 + 28 C3A -3.6929 -0.2638 6.9689 C.3 1 SINM 0.1669 + 29 H10A -2.6653 -2.9772 9.4633 H 1 SINM 0.0000 + 30 H11A -3.4861 -1.5524 10.2205 H 1 SINM 0.0000 + 31 H12A -2.5241 -2.6517 11.2242 H 1 SINM 0.0000 + 32 H13A -0.0861 2.9840 5.6739 H 1 SINM 0.0000 + 33 H14A -0.2161 4.4526 6.7028 H 1 SINM 0.0000 + 34 H15A 0.7400 3.0717 7.2783 H 1 SINM 0.0000 + 35 C4A -4.8013 -1.1644 7.4816 C.3 1 SINM 0.0000 + 36 H5A -3.0496 -0.8264 6.2843 H 1 SINM 0.0000 + 37 H6A -4.1430 0.5504 6.3902 H 1 SINM 0.0000 + 38 H7A -5.4210 -1.5070 6.6462 H 1 SINM 0.0000 + 39 H8A -4.3998 -2.0533 7.9760 H 1 SINM 0.0000 + 40 H9A -5.4531 -0.6430 8.1908 H 1 SINM 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 1 6 1 + 4 2 4 1 + 5 2 8 1 + 6 2 10 1 + 7 2 26 1 + 8 3 5 1 + 9 3 9 1 + 10 3 11 1 + 11 3 27 1 + 12 4 12 1 + 13 4 25 1 + 14 5 13 1 + 15 5 25 1 + 16 6 7 1 + 17 6 14 1 + 18 6 15 1 + 19 7 16 1 + 20 7 17 1 + 21 7 18 1 + 22 8 19 1 + 23 8 20 1 + 24 8 21 1 + 25 9 22 1 + 26 9 23 1 + 27 9 24 1 + 28 25 28 1 + 29 26 29 1 + 30 26 30 1 + 31 26 31 1 + 32 27 32 1 + 33 27 33 1 + 34 27 34 1 + 35 28 35 1 + 36 28 36 1 + 37 28 37 1 + 38 35 38 1 + 39 35 39 1 + 40 35 40 1 +@SUBSTRUCTURE + 1 SINM 1 +@COMMENT +COMMENT 1,3-DIETHYL-2,4-BIS(DIMETHYLAMINO)-1LAMBDA-3-,3LAMBDA-3--DI +@MOLECULE +SIYLOB + 38 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.3159 5.5863 4.3256 S.3 1 UNCH -0.4600 + 2 P1 2.7268 1.6314 6.0127 P 1 UNCH 1.2424 + 3 O1 3.2286 1.9332 7.3957 O.3 1 UNCH -0.7000 + 4 O2 3.5609 0.4720 5.2553 O.3 1 UNCH -0.5512 + 5 O3 1.2291 1.0290 5.9814 O.3 1 UNCH -0.5512 + 6 N1 4.0324 3.6749 4.9577 N.3 1 UNCH -0.9000 + 7 C1 3.9869 4.8845 4.1307 C.3 1 UNCH 0.5000 + 8 C2 2.6837 3.0412 4.8763 C.3 1 UNCH 0.2700 + 9 C3 1.6316 4.1192 5.1851 C.3 1 UNCH 0.2300 + 10 C4 5.1113 5.8824 4.5018 C.3 1 UNCH 0.0000 + 11 C5 5.0957 7.1362 3.6162 C.3 1 UNCH 0.0000 + 12 C6 6.4961 5.2261 4.3907 C.3 1 UNCH 0.0000 + 13 C7 1.4894 4.4747 6.6685 C.3 1 UNCH 0.0000 + 14 C8 0.2648 3.7884 4.5837 C.3 1 UNCH 0.0000 + 15 C9 0.9588 -0.0454 6.8604 C.3 1 UNCH 0.2800 + 16 C10 4.9623 0.6217 5.1461 C.3 1 UNCH 0.2800 + 17 H1 4.1932 3.9528 5.9305 H 1 UNCH 0.3600 + 18 H2 4.0963 4.5932 3.0791 H 1 UNCH 0.0000 + 19 H3 2.5445 2.6358 3.8651 H 1 UNCH 0.0000 + 20 H4 4.9836 6.2051 5.5443 H 1 UNCH 0.0000 + 21 H5 5.9396 7.7919 3.8576 H 1 UNCH 0.0000 + 22 H6 5.1685 6.8717 2.5557 H 1 UNCH 0.0000 + 23 H7 4.1848 7.7246 3.7601 H 1 UNCH 0.0000 + 24 H8 7.2873 5.9455 4.6285 H 1 UNCH 0.0000 + 25 H9 6.6750 4.8499 3.3776 H 1 UNCH 0.0000 + 26 H10 6.6013 4.3896 5.0888 H 1 UNCH 0.0000 + 27 H11 2.4480 4.7229 7.1372 H 1 UNCH 0.0000 + 28 H12 1.0548 3.6407 7.2302 H 1 UNCH 0.0000 + 29 H13 0.8189 5.3308 6.8129 H 1 UNCH 0.0000 + 30 H14 -0.4355 4.6256 4.6897 H 1 UNCH 0.0000 + 31 H15 -0.1911 2.9288 5.0843 H 1 UNCH 0.0000 + 32 H16 0.3354 3.5446 3.5172 H 1 UNCH 0.0000 + 33 H17 -0.0583 -0.4004 6.6767 H 1 UNCH 0.0000 + 34 H18 1.0331 0.2923 7.8975 H 1 UNCH 0.0000 + 35 H19 1.6575 -0.8677 6.6849 H 1 UNCH 0.0000 + 36 H20 5.4091 -0.3692 5.0313 H 1 UNCH 0.0000 + 37 H21 5.3831 1.0923 6.0387 H 1 UNCH 0.0000 + 38 H22 5.2016 1.2150 4.2605 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 1 9 1 + 3 2 3 1 + 4 2 4 1 + 5 2 5 1 + 6 2 8 1 + 7 4 16 1 + 8 5 15 1 + 9 6 7 1 + 10 6 8 1 + 11 6 17 1 + 12 7 10 1 + 13 7 18 1 + 14 8 9 1 + 15 8 19 1 + 16 9 13 1 + 17 9 14 1 + 18 10 11 1 + 19 10 12 1 + 20 10 20 1 + 21 11 21 1 + 22 11 22 1 + 23 11 23 1 + 24 12 24 1 + 25 12 25 1 + 26 12 26 1 + 27 13 27 1 + 28 13 28 1 + 29 13 29 1 + 30 14 30 1 + 31 14 31 1 + 32 14 32 1 + 33 15 33 1 + 34 15 34 1 + 35 15 35 1 + 36 16 36 1 + 37 16 37 1 + 38 16 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (2RS,4RS)-CIS-3-ISOPROPYL-5,5-DIMETHYL-4-THIAZOLIDINYLPHOSP +@MOLECULE +SIZJIU + 38 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.3059 5.0164 2.7158 O.3 1 UNCH -0.2960 + 2 O2 0.2043 6.8965 3.9300 O.3 1 UNCH -0.6800 + 3 O3 1.1174 2.3786 3.9340 O.3 1 UNCH -0.5600 + 4 O4 3.2445 1.1548 5.3759 O.3 1 UNCH -0.6800 + 5 O5 3.6166 -1.6752 4.6051 O.3 1 UNCH -0.6800 + 6 O6 3.6633 -2.0633 1.8037 O.3 1 UNCH -0.6800 + 7 O7 1.4724 0.8960 2.1492 O.3 1 UNCH -0.5600 + 8 O8 0.4945 -1.2232 0.5305 O.3 1 UNCH -0.6800 + 9 N1 -1.4622 2.3726 1.5937 N.1 1 UNCH -0.5571 + 10 C1 0.4735 3.3522 3.1017 C.3 1 UNCH 0.5750 + 11 C2 1.3891 4.0703 2.1377 C.3 1 UNCH -0.0470 + 12 C3 1.0798 5.5249 2.1736 C.3 1 UNCH -0.0470 + 13 C4 -0.0388 5.7446 3.1444 C.3 1 UNCH 0.3750 + 14 C5 -0.0659 4.4773 4.0150 C.3 1 UNCH 0.0000 + 15 C6 -0.6122 2.7907 2.2670 C.1 1 UNCH 0.3571 + 16 C7 2.0624 1.5200 3.2819 C.3 1 UNCH 0.5600 + 17 C8 2.5192 0.4839 4.3315 C.3 1 UNCH 0.2800 + 18 C9 3.4001 -0.5908 3.6870 C.3 1 UNCH 0.2800 + 19 C10 2.7446 -1.1550 2.4205 C.3 1 UNCH 0.2800 + 20 C11 2.3720 -0.0007 1.4810 C.3 1 UNCH 0.2800 + 21 C12 1.6725 -0.4891 0.2076 C.3 1 UNCH 0.2800 + 22 H1 1.1247 6.8480 4.2477 H 1 UNCH 0.4000 + 23 H2 2.6031 1.7432 5.8147 H 1 UNCH 0.4000 + 24 H3 4.1436 -2.3320 4.1106 H 1 UNCH 0.4000 + 25 H4 3.1285 -2.6746 1.2610 H 1 UNCH 0.4000 + 26 H5 -0.1158 -0.5864 0.9537 H 1 UNCH 0.4000 + 27 H6 1.6504 3.5776 1.2142 H 1 UNCH 0.1000 + 28 H7 1.0881 6.1344 1.2854 H 1 UNCH 0.1000 + 29 H8 -0.9869 5.8711 2.6113 H 1 UNCH 0.0000 + 30 H9 -1.0702 4.2758 4.4054 H 1 UNCH 0.0000 + 31 H10 0.5816 4.6044 4.8935 H 1 UNCH 0.0000 + 32 H11 2.9219 2.1286 2.9732 H 1 UNCH 0.0000 + 33 H12 1.6509 0.0091 4.8057 H 1 UNCH 0.0000 + 34 H13 4.3938 -0.1829 3.4631 H 1 UNCH 0.0000 + 35 H14 1.8581 -1.7297 2.7182 H 1 UNCH 0.0000 + 36 H15 3.2700 0.5509 1.1730 H 1 UNCH 0.0000 + 37 H16 2.3278 -1.1364 -0.3825 H 1 UNCH 0.0000 + 38 H17 1.3722 0.3587 -0.4174 H 1 UNCH 0.0000 +@BOND + 1 1 11 1 + 2 1 12 1 + 3 2 13 1 + 4 2 22 1 + 5 3 10 1 + 6 3 16 1 + 7 4 17 1 + 8 4 23 1 + 9 5 18 1 + 10 5 24 1 + 11 6 19 1 + 12 6 25 1 + 13 7 16 1 + 14 7 20 1 + 15 8 21 1 + 16 8 26 1 + 17 9 15 3 + 18 10 11 1 + 19 10 14 1 + 20 10 15 1 + 21 11 12 1 + 22 11 27 1 + 23 12 13 1 + 24 12 28 1 + 25 13 14 1 + 26 13 29 1 + 27 14 30 1 + 28 14 31 1 + 29 16 17 1 + 30 16 32 1 + 31 17 18 1 + 32 17 33 1 + 33 18 19 1 + 34 18 34 1 + 35 19 20 1 + 36 19 35 1 + 37 20 21 1 + 38 20 36 1 + 39 21 37 1 + 40 21 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1R,2R,3R,4R)-1-(BETA-D-GLUCOPYRANOSYLOXY)-2,3-EPOXY-4-HYDR +@MOLECULE +SIZWUT + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.8274 0.4612 -0.1446 S.3 1 UNCH -0.0800 + 2 C1 5.1186 2.1492 -0.3608 C.2 1 UNCH 0.1981 + 3 N1 6.3898 2.5059 -0.3013 N.2 1 UNCH -0.5653 + 4 C2 7.1955 1.3883 -0.0530 C.2 1 UNCH 0.1412 + 5 C3 6.5043 0.1977 0.0588 C.2 1 UNCH -0.1100 + 6 C4 8.6483 1.5041 0.0730 C.2 1 UNCH 0.7160 + 7 N2 9.1126 2.7804 -0.0660 N.3 1 UNCH -0.8000 + 8 O1 9.4003 0.5602 0.2867 O.2 1 UNCH -0.5700 + 9 C5 3.9831 3.1096 -0.6219 C.3 1 UNCH 0.5982 + 10 C6 3.1954 2.9066 -1.8712 C.2 1 UNCH -0.2882 + 11 C7 1.8984 2.8012 -1.5857 C.2 1 UNCH -0.2882 + 12 C8 1.6913 2.9267 -0.1190 C.3 1 UNCH 0.4182 + 13 C9 0.9522 1.7427 0.5118 C.3 1 UNCH 0.2800 + 14 O2 3.0211 2.9927 0.4569 O.3 1 UNCH -0.5600 + 15 O3 0.8303 1.9372 1.9221 O.3 1 UNCH -0.6800 + 16 H1 6.9062 -0.7886 0.2471 H 1 UNCH 0.1500 + 17 H2 10.0969 2.9646 0.0515 H 1 UNCH 0.3700 + 18 H3 8.4527 3.5379 -0.1935 H 1 UNCH 0.3700 + 19 H4 4.3725 4.1345 -0.5991 H 1 UNCH 0.0000 + 20 H5 3.6294 2.8725 -2.8596 H 1 UNCH 0.1500 + 21 H6 1.1044 2.6704 -2.3066 H 1 UNCH 0.1500 + 22 H7 1.1852 3.8663 0.1289 H 1 UNCH 0.0000 + 23 H8 -0.0539 1.6363 0.0947 H 1 UNCH 0.0000 + 24 H9 1.4949 0.8039 0.3591 H 1 UNCH 0.0000 + 25 H10 1.7267 2.1706 2.2332 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 9 1 + 5 3 4 1 + 6 4 5 2 + 7 4 6 1 + 8 5 16 1 + 9 6 7 am + 10 6 8 2 + 11 7 17 1 + 12 7 18 1 + 13 9 10 1 + 14 9 14 1 + 15 9 19 1 + 16 10 11 2 + 17 10 20 1 + 18 11 12 1 + 19 11 21 1 + 20 12 13 1 + 21 12 14 1 + 22 12 22 1 + 23 13 15 1 + 24 13 23 1 + 25 13 24 1 + 26 15 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(2',3'-DIDEOXY-BETA-D-GLYCERO-PENT-2-ENOFURANOSYL)THIAZOL +@MOLECULE +SLFNMB04 + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.6868 2.4212 -7.0696 C.2 1 UNCH 0.1000 + 2 C2 9.1657 3.2196 -6.0461 C.2 1 UNCH -0.1500 + 3 C3 8.9162 2.6861 -4.7791 C.2 1 UNCH -0.1500 + 4 C4 9.2232 1.3475 -4.5257 C.2 1 UNCH -0.0090 + 5 C5 9.8105 0.5561 -5.5139 C.2 1 UNCH -0.1500 + 6 C6 10.0543 1.1038 -6.7762 C.2 1 UNCH -0.1500 + 7 N1 10.0445 2.9941 -8.2939 N.3 1 UNCH -0.9000 + 8 S1 8.9087 0.6764 -2.9105 S.3 1 UNCH 1.4470 + 9 O1 9.3893 1.6451 -1.9485 O.3 1 UNCH -0.6500 + 10 O2 9.3681 -0.6962 -2.8910 O.3 1 UNCH -0.6500 + 11 N2 7.2503 0.6950 -2.8251 N.3 1 UNCH -0.7030 + 12 C7 6.3900 -0.0502 -3.6075 C.2 1 UNCH 0.4338 + 13 C8 6.6682 -1.1452 -4.4491 C.2 1 UNCH -0.1500 + 14 C9 5.4472 -1.4914 -4.9734 C.2 1 UNCH -0.0400 + 15 O3 4.4964 -0.6573 -4.4759 O.3 1 UNCH -0.0191 + 16 N3 5.0879 0.2463 -3.6114 N.2 1 UNCH -0.4097 + 17 C10 4.9841 -2.5315 -5.9075 C.3 1 UNCH 0.1800 + 18 H1 8.9537 4.2705 -6.2281 H 1 UNCH 0.1500 + 19 H2 8.5042 3.3218 -3.9992 H 1 UNCH 0.1500 + 20 H3 10.0991 -0.4725 -5.3114 H 1 UNCH 0.1500 + 21 H4 10.5418 0.4926 -7.5320 H 1 UNCH 0.1500 + 22 H5 9.4995 3.8128 -8.5458 H 1 UNCH 0.4000 + 23 H6 10.1210 2.3312 -9.0588 H 1 UNCH 0.4000 + 24 H7 6.8413 1.4267 -2.2508 H 1 UNCH 0.4200 + 25 H8 7.6112 -1.6332 -4.6413 H 1 UNCH 0.1500 + 26 H9 4.2595 -3.1904 -5.4196 H 1 UNCH 0.0000 + 27 H10 5.8200 -3.1448 -6.2581 H 1 UNCH 0.0000 + 28 H11 4.5056 -2.0776 -6.7807 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 18 1 + 6 3 4 2 + 7 3 19 1 + 8 4 5 1 + 9 4 8 1 + 10 5 6 2 + 11 5 20 1 + 12 6 21 1 + 13 7 22 1 + 14 7 23 1 + 15 8 9 1 + 16 8 10 1 + 17 8 11 1 + 18 11 12 am + 19 11 24 1 + 20 12 13 1 + 21 12 16 2 + 22 13 14 2 + 23 13 25 1 + 24 14 15 1 + 25 14 17 1 + 26 15 16 1 + 27 17 26 1 + 28 17 27 1 + 29 17 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(5-METHYL-3-ISOXAZOLYL)-SULFANILAMIDE (FORM II, DRUG) SUL +@MOLECULE +SOGVOZ + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.1946 0.6917 0.3111 O.2 1 UNCH -0.5700 + 2 O2 6.0493 3.5767 -0.6898 O.3 1 UNCH -0.5200 + 3 O3 6.8527 3.2231 -2.7184 O.2 1 UNCH -0.5200 + 4 N1 6.9208 3.1934 -1.4823 N.2 1 UNCH 0.9610 + 5 N2 9.3645 3.2319 -1.2666 N.2 1 UNCH -0.5653 + 6 N3 9.6441 1.6770 0.2881 N.3 1 UNCH 0.0476 + 7 N4 9.2204 0.4315 2.2544 N.3 1 UNCH -0.6390 + 8 N5 7.9492 0.0523 1.6894 N.3 1 UNCH -0.3511 + 9 C1 7.3608 0.8127 0.6631 C.2 1 UNCH 0.7150 + 10 C2 8.2897 1.7054 0.0373 C.2 1 UNCH -0.2366 + 11 C3 8.1399 2.6937 -0.9071 C.2 1 UNCH 0.3062 + 12 C4 10.2471 2.5808 -0.5391 C.2 1 UNCH 0.0365 + 13 C5 10.2617 0.7447 1.2351 C.3 1 UNCH 0.5256 + 14 C6 11.4468 1.3777 1.9820 C.3 1 UNCH 0.0000 + 15 C7 10.7158 -0.5382 0.5253 C.3 1 UNCH 0.0000 + 16 C8 7.1430 -0.8770 2.4594 C.3 1 UNCH 0.3001 + 17 H1 9.0538 1.2634 2.8287 H 1 UNCH 0.3600 + 18 H2 11.3189 2.7331 -0.5787 H 1 UNCH 0.1500 + 19 H3 12.2816 1.5883 1.3039 H 1 UNCH 0.0000 + 20 H4 11.8264 0.7090 2.7638 H 1 UNCH 0.0000 + 21 H5 11.1657 2.3250 2.4581 H 1 UNCH 0.0000 + 22 H6 11.1173 -1.2665 1.2392 H 1 UNCH 0.0000 + 23 H7 11.5023 -0.3221 -0.2075 H 1 UNCH 0.0000 + 24 H8 9.8961 -1.0208 -0.0196 H 1 UNCH 0.0000 + 25 H9 7.7804 -1.6674 2.8661 H 1 UNCH 0.0000 + 26 H10 6.3728 -1.3262 1.8260 H 1 UNCH 0.0000 + 27 H11 6.6586 -0.3299 3.2736 H 1 UNCH 0.0000 +@BOND + 1 1 9 2 + 2 2 4 1 + 3 3 4 2 + 4 4 11 1 + 5 5 11 1 + 6 5 12 2 + 7 6 10 1 + 8 6 12 am + 9 6 13 1 + 10 7 8 1 + 11 7 13 1 + 12 7 17 1 + 13 8 9 am + 14 8 16 1 + 15 9 10 1 + 16 10 11 2 + 17 12 18 1 + 18 13 14 1 + 19 13 15 1 + 20 14 19 1 + 21 14 20 1 + 22 14 21 1 + 23 15 22 1 + 24 15 23 1 + 25 15 24 1 + 26 16 25 1 + 27 16 26 1 + 28 16 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2,3,4-TETRAHYDRO-2,4,4-TRIMETHYL-8-NITROIMIDAZO(1,5-D)(1, +@MOLECULE +SOHXOC + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 6.0774 5.6340 -2.3123 C.2 1 SOHX 1.2000 + 2 C2 4.3126 3.2819 -0.3313 C.2 1 SOHX 0.3746 + 3 C3 5.1424 2.0257 -0.4752 C.3 1 SOHX 0.0610 + 4 C4 3.1037 3.2329 0.5265 C.2 1 SOHX 0.0288 + 5 C5 2.1734 2.2790 0.7137 C.2 1 SOHX 0.1648 + 6 C6 2.0382 0.9695 0.0229 C.3 1 SOHX 0.1382 + 7 C7 2.6331 4.3386 1.3494 C.2 1 SOHX 0.3756 + 8 C8 0.1259 2.1990 2.2032 C.2 1 SOHX 1.2000 + 9 N1 7.1666 5.7116 -3.0847 N.3 1 SOHX -0.9667 + 10 N2 5.3181 6.7199 -2.1430 N.3 1 SOHX -0.9667 + 11 N3 5.7389 4.4550 -1.6995 N.2 1 SOHX -0.6487 + 12 N4 4.6237 4.4153 -0.9062 N.2 1 SOHX -0.3180 + 13 N5 1.5474 4.0726 1.9932 N.2 1 SOHX -0.3180 + 14 N6 1.2558 2.7817 1.6281 N.2 1 SOHX -0.5017 + 15 N7 -0.2297 0.9118 2.0590 N.3 1 SOHX -0.9667 + 16 N8 -0.6630 2.9714 2.9742 N.3 1 SOHX -0.9667 + 17 H1 6.3442 3.6575 -1.8765 H 1 SOHX 0.4500 + 18 H2 3.1839 5.2887 1.3884 H 1 SOHX 0.0600 + 19 H3 7.4214 6.5806 -3.5401 H 1 SOHX 0.4500 + 20 H4 7.7804 4.9232 -3.2449 H 1 SOHX 0.4500 + 21 H5 4.4940 6.6353 -1.5617 H 1 SOHX 0.4500 + 22 H6 5.5254 7.6111 -2.5720 H 1 SOHX 0.4500 + 23 H7 5.0645 1.6526 -1.5000 H 1 SOHX 0.0000 + 24 H8 4.8208 1.2457 0.2188 H 1 SOHX 0.0000 + 25 H9 6.1891 2.2480 -0.2470 H 1 SOHX 0.0000 + 26 H10 2.2835 0.1477 0.7015 H 1 SOHX 0.0000 + 27 H11 1.0202 0.8375 -0.3565 H 1 SOHX 0.0000 + 28 H12 2.6956 0.8935 -0.8475 H 1 SOHX 0.0000 + 29 H13 0.3423 0.2240 1.5989 H 1 SOHX 0.4500 + 30 H14 -1.0790 0.5671 2.4907 H 1 SOHX 0.4500 + 31 H15 -0.3826 3.9394 3.0998 H 1 SOHX 0.4500 + 32 H16 -1.4946 2.6411 3.4412 H 1 SOHX 0.4500 +@BOND + 1 1 11 2 + 2 1 10 am + 3 1 9 am + 4 2 12 2 + 5 2 4 1 + 6 2 3 1 + 7 3 25 1 + 8 3 24 1 + 9 3 23 1 + 10 4 7 1 + 11 4 5 2 + 12 5 14 1 + 13 5 6 1 + 14 6 28 1 + 15 6 27 1 + 16 6 26 1 + 17 7 18 1 + 18 7 13 2 + 19 8 16 am + 20 8 15 am + 21 8 14 2 + 22 9 20 1 + 23 9 19 1 + 24 10 22 1 + 25 10 21 1 + 26 11 17 1 + 27 11 12 1 + 28 13 14 1 + 29 15 30 1 + 30 15 29 1 + 31 16 32 1 + 32 16 31 1 +@SUBSTRUCTURE + 1 SOHX 1 +@COMMENT +COMMENT 4-((1-AMIDINIOHYDRAZONO)ETHYL)-5-METHYL-1-PYRAZOLECARBOXAMI +@MOLECULE +SOJNEK + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.4822 -0.5375 1.5450 S.3 1 UNCH -0.2820 + 2 C1 6.7368 -0.7139 1.7038 C.2 1 UNCH 0.6140 + 3 N1 6.1056 -1.2684 0.7049 N.2 1 UNCH -0.4920 + 4 N2 7.0270 -1.6019 -0.2596 N.3 1 UNCH -0.3771 + 5 C2 8.3434 -1.2348 -0.0658 C.2 1 UNCH 0.6410 + 6 S2 5.8580 -0.1670 3.1473 S.3 1 UNCH 1.4150 + 7 O1 6.3175 -0.9668 4.2622 O.3 1 UNCH -0.6500 + 8 N3 4.2175 -0.5498 2.9708 N.3 1 UNCH -0.9780 + 9 O2 5.9097 1.2787 3.1639 O.3 1 UNCH -0.6500 + 10 C3 6.5172 -2.0343 -1.5462 C.3 1 UNCH 0.3691 + 11 N4 9.3055 -1.3990 -0.9139 N.2 1 UNCH -0.6610 + 12 C4 10.5487 -0.9283 -0.5875 C.2 1 UNCH 0.7200 + 13 O3 10.8411 0.2614 -0.5433 O.2 1 UNCH -0.5700 + 14 C5 11.5721 -2.0092 -0.3661 C.3 1 UNCH 0.0610 + 15 H1 3.9245 -1.1444 3.7478 H 1 UNCH 0.4200 + 16 H2 3.6744 0.3133 2.9114 H 1 UNCH 0.4200 + 17 H3 11.8113 -2.4869 -1.3195 H 1 UNCH 0.0000 + 18 H4 11.1848 -2.7523 0.3362 H 1 UNCH 0.0000 + 19 H5 12.4811 -1.5728 0.0571 H 1 UNCH 0.0000 + 20 H6 7.1875 -2.7671 -2.0070 H 1 UNCH 0.0000 + 21 H7 5.5353 -2.5078 -1.4392 H 1 UNCH 0.0000 + 22 H8 6.4152 -1.1783 -2.2208 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 6 1 + 5 3 4 1 + 6 4 5 am + 7 4 10 1 + 8 5 11 2 + 9 6 7 1 + 10 6 8 1 + 11 6 9 1 + 12 8 15 1 + 13 8 16 1 + 14 10 20 1 + 15 10 21 1 + 16 10 22 1 + 17 11 12 am + 18 12 13 2 + 19 12 14 1 + 20 14 17 1 + 21 14 18 1 + 22 14 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(3-METHYL-5-SULFAMOYL-1,3,4-THIADIAZOL-2(3H)-YLIDENE)ACET +@MOLECULE +SOMKIO + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.0494 8.0734 6.5518 S.2 1 SOMK 0.1345 + 2 BR1 1.2250 10.6781 8.5765 BR 1 SOMK -0.2190 + 3 BR2 1.4844 8.6250 11.0146 BR 1 SOMK -0.2190 + 4 N1 2.1268 7.1322 8.0173 N.3 1 SOMK -0.5851 + 5 N2 1.7162 4.0074 6.7141 N.1 1 SOMK -0.5571 + 6 O1 -1.0303 7.0421 6.4142 O.2 1 SOMK -0.5000 + 7 O2 3.9522 8.5507 8.2881 O.2 1 SOMK -0.5700 + 8 C1 1.5709 7.4158 5.6673 C.3 1 SOMK 0.1935 + 9 C2 2.3628 6.5665 6.6953 C.3 1 SOMK 0.5001 + 10 C3 0.7991 7.7264 8.2627 C.3 1 SOMK 0.3970 + 11 C4 1.5036 8.8351 9.0844 C.3 1 SOMK 0.4910 + 12 C5 2.8002 8.2331 8.4667 C.2 1 SOMK 0.5770 + 13 C6 1.9869 5.1361 6.7032 C.1 1 SOMK 0.3571 + 14 C7 2.3865 8.6397 5.2026 C.3 1 SOMK 0.0000 + 15 C8 1.1312 6.6537 4.4056 C.3 1 SOMK 0.0000 + 16 H1 3.4368 6.6302 6.4788 H 1 SOMK 0.0000 + 17 H2 0.1577 7.0561 8.8458 H 1 SOMK 0.0000 + 18 H3 2.6714 9.3000 6.0246 H 1 SOMK 0.0000 + 19 H4 1.8147 9.2519 4.4946 H 1 SOMK 0.0000 + 20 H5 3.3063 8.3236 4.6976 H 1 SOMK 0.0000 + 21 H6 0.4531 5.8234 4.6291 H 1 SOMK 0.0000 + 22 H7 1.9989 6.2461 3.8745 H 1 SOMK 0.0000 + 23 H8 0.5966 7.3123 3.7105 H 1 SOMK 0.0000 +@BOND + 1 1 10 1 + 2 1 8 1 + 3 1 6 2 + 4 2 11 1 + 5 3 11 1 + 6 4 12 am + 7 4 10 1 + 8 4 9 1 + 9 5 13 3 + 10 7 12 2 + 11 8 15 1 + 12 8 14 1 + 13 8 9 1 + 14 9 16 1 + 15 9 13 1 + 16 10 17 1 + 17 10 11 1 + 18 11 12 1 + 19 14 20 1 + 20 14 19 1 + 21 14 18 1 + 22 15 23 1 + 23 15 22 1 + 24 15 21 1 +@SUBSTRUCTURE + 1 SOMK 1 +@COMMENT +COMMENT (2S(2ALPHA,4ALPHA(R*),5ALPHA))-6,6-DIBROMO-2,2-DIMETHYL-7-O +@MOLECULE +SONZIE + 36 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.8112 5.3942 3.7332 S.3 1 UNCH -0.0800 + 2 N1 4.2114 4.5843 5.7409 N.2 1 UNCH -0.5653 + 3 N2 2.7797 6.3617 6.2325 N.3 1 UNCH -0.8840 + 4 N3 6.6840 0.8712 3.4858 N.3 1 UNCH -0.8100 + 5 C1 3.3101 5.4665 5.3815 C.2 1 UNCH 0.4621 + 6 C2 4.5460 3.8081 4.6540 C.2 1 UNCH 0.1812 + 7 C3 3.8983 4.1098 3.4794 C.2 1 UNCH -0.1400 + 8 C4 4.0953 3.4270 2.1771 C.3 1 UNCH 0.1800 + 9 C5 5.3873 2.5950 2.2222 C.3 1 UNCH 0.0000 + 10 C6 5.5001 1.7849 3.5485 C.3 1 UNCH 0.4082 + 11 C7 5.5276 2.7697 4.7367 C.2 1 UNCH -0.0922 + 12 C8 6.4240 2.6767 5.7336 C.2 1 UNCH -0.2882 + 13 C9 7.4338 1.5790 5.7688 C.3 1 UNCH 0.1382 + 14 C10 7.0540 0.4164 4.8443 C.3 1 UNCH 0.2700 + 15 C11 6.4156 -0.3016 2.6251 C.3 1 UNCH 0.2700 + 16 C12 7.7082 -0.9908 2.1667 C.3 1 UNCH 0.0000 + 17 C13 7.4136 -2.1272 1.1975 C.3 1 UNCH 0.0000 + 18 H2 4.5954 1.1692 3.6699 H 1 UNCH 0.0000 + 19 H3 6.4395 3.4118 6.5337 H 1 UNCH 0.1500 + 20 H4 1.8555 6.7115 6.0139 H 1 UNCH 0.4000 + 21 H5 2.9096 6.1354 7.2122 H 1 UNCH 0.4000 + 22 H6 4.1526 4.1479 1.3539 H 1 UNCH 0.0000 + 23 H7 3.2422 2.7658 1.9823 H 1 UNCH 0.0000 + 24 H8 6.2551 3.2639 2.1307 H 1 UNCH 0.0000 + 25 H9 5.3988 1.9537 1.3359 H 1 UNCH 0.0000 + 26 H10 7.5226 1.2016 6.7940 H 1 UNCH 0.0000 + 27 H11 8.4111 1.9870 5.4850 H 1 UNCH 0.0000 + 28 H12 6.2268 -0.1509 5.2937 H 1 UNCH 0.0000 + 29 H13 7.9175 -0.2561 4.8087 H 1 UNCH 0.0000 + 30 H14 5.8805 -0.0035 1.7184 H 1 UNCH 0.0000 + 31 H15 5.7613 -1.0200 3.1367 H 1 UNCH 0.0000 + 32 H16 8.2603 -1.4016 3.0180 H 1 UNCH 0.0000 + 33 H17 8.3633 -0.2627 1.6734 H 1 UNCH 0.0000 + 34 H18 8.3453 -2.6077 0.8829 H 1 UNCH 0.0000 + 35 H19 6.9036 -1.7580 0.3020 H 1 UNCH 0.0000 + 36 H20 6.7802 -2.8872 1.6661 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 7 1 + 3 2 5 2 + 4 2 6 1 + 5 3 5 am + 6 3 20 1 + 7 3 21 1 + 8 4 10 1 + 9 4 14 1 + 10 4 15 1 + 11 6 7 2 + 12 6 11 1 + 13 7 8 1 + 14 8 9 1 + 15 8 22 1 + 16 8 23 1 + 17 9 10 1 + 18 9 24 1 + 19 9 25 1 + 20 10 11 1 + 21 10 18 1 + 22 11 12 2 + 23 12 13 1 + 24 12 19 1 + 25 13 14 1 + 26 13 26 1 + 27 13 27 1 + 28 14 28 1 + 29 14 29 1 + 30 15 16 1 + 31 15 30 1 + 32 15 31 1 + 33 16 17 1 + 34 16 32 1 + 35 16 33 1 + 36 17 34 1 + 37 17 35 1 + 38 17 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (+-)-4,5,5A,6,7,8-HEXAHYDRO-6-N-PROPYLTHIAZOLO(4,5-F)QUINOL +@MOLECULE +SOPZEC + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.4379 5.5868 10.4263 S.3 1 UNCH -0.1400 + 2 S2 3.3550 7.1249 9.4129 S.3 1 UNCH -0.1400 + 3 O1 5.2136 7.9325 11.6936 O.2 1 UNCH -0.5700 + 4 N1 -0.6638 4.6087 7.2245 N.1 1 UNCH -0.5571 + 5 N2 2.4746 7.1328 5.5369 N.1 1 UNCH -0.5571 + 6 C1 2.8423 6.4899 10.9473 C.2 1 UNCH 0.1090 + 7 C2 1.9645 6.2158 8.8863 C.2 1 UNCH 0.1090 + 8 C3 1.4458 6.0478 7.6503 C.2 1 UNCH 0.1610 + 9 C4 0.2822 5.2546 7.4108 C.1 1 UNCH 0.4921 + 10 C5 2.0168 6.6481 6.4867 C.1 1 UNCH 0.4921 + 11 C6 3.2997 6.5976 12.2008 C.2 1 UNCH -0.1046 + 12 C7 4.5079 7.3903 12.5375 C.2 1 UNCH 0.4946 + 13 C8 4.8644 7.4717 14.0000 C.3 1 UNCH 0.0610 + 14 H1 2.7883 6.0970 13.0136 H 1 UNCH 0.1500 + 15 H2 3.9821 7.3279 14.6298 H 1 UNCH 0.0000 + 16 H3 5.6098 6.7077 14.2344 H 1 UNCH 0.0000 + 17 H4 5.2695 8.4644 14.2166 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 6 1 + 4 2 7 1 + 5 3 12 2 + 6 4 9 3 + 7 5 10 3 + 8 6 11 2 + 9 7 8 2 + 10 8 9 1 + 11 8 10 1 + 12 11 12 1 + 13 11 14 1 + 14 12 13 1 + 15 13 15 1 + 16 13 16 1 + 17 13 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-ACETONYLIDENE-4-DICYANOMETHYLENE-1,3-DITHIETANE +@MOLECULE +SORBIK + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -1.8322 0.2952 -1.1619 CL 1 SORB -0.1240 + 2 CL2 2.6654 -2.4634 -1.7076 CL 1 SORB -0.1230 + 3 O1 -6.9038 -4.7808 -0.5186 O.3 1 SORB -0.5200 + 4 O2 -5.6888 -6.5252 0.0260 O.2 1 SORB -0.5200 + 5 N1 -5.8170 -5.3464 -0.3330 N.2 1 SORB 0.9070 + 6 N2 -1.0376 -2.3320 -1.1762 N.3 1 SORB 0.5926 + 7 N3 0.1354 -3.0270 -1.2282 N.2 1 SORB -0.7068 + 8 N4 0.5361 -0.8129 -1.5890 N.2 1 SORB -0.5653 + 9 C1 -4.5950 -4.5628 -0.5537 C.2 1 SORB 0.1330 + 10 C2 -4.6873 -3.2250 -0.9542 C.2 1 SORB -0.1500 + 11 C3 -3.5222 -2.4727 -1.1668 C.2 1 SORB -0.1500 + 12 C4 -2.2591 -3.0470 -0.9728 C.2 1 SORB -0.0230 + 13 C5 -2.1856 -4.4017 -0.5863 C.2 1 SORB -0.1500 + 14 C6 -3.3441 -5.1570 -0.3719 C.2 1 SORB -0.1500 + 15 C7 -0.7400 -0.9937 -1.3571 C.2 1 SORB 0.3105 + 16 C8 1.0283 -2.0764 -1.5049 C.2 1 SORB 0.6390 + 17 H1 -5.6558 -2.7529 -1.1153 H 1 SORB 0.1500 + 18 H2 -3.6654 -1.4575 -1.5186 H 1 SORB 0.1500 + 19 H3 -1.2234 -4.8929 -0.4350 H 1 SORB 0.1500 + 20 H4 -3.2486 -6.1979 -0.0674 H 1 SORB 0.1500 +@BOND + 1 1 15 1 + 2 2 16 1 + 3 3 5 1 + 4 4 5 2 + 5 5 9 1 + 6 6 7 1 + 7 6 12 1 + 8 6 15 am + 9 7 16 2 + 10 8 15 2 + 11 8 16 am + 12 9 10 2 + 13 9 14 1 + 14 10 11 1 + 15 10 17 1 + 16 11 12 2 + 17 11 18 1 + 18 12 13 1 + 19 13 14 2 + 20 13 19 1 + 21 14 20 1 +@SUBSTRUCTURE + 1 SORB 1 +@COMMENT +COMMENT 3,5-DICHLORO-1-(4-NITROPHENYL)-1,2,4-TRIAZOLE (ABSOLUTE CON +@MOLECULE +SURDOX02 + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.9022 2.5288 1.4835 S.2 1 SURD 1.2770 + 2 C1 6.5479 2.5279 2.1508 C.2 1 SURD 0.1430 + 3 N1 7.1781 3.6960 2.3858 N.3 1 SURD -0.8000 + 4 O1 4.3537 1.2552 1.9185 O.3 1 SURD -0.6500 + 5 H1 7.9904 3.7319 2.9887 H 1 SURD 0.3700 + 6 H2 6.6186 4.5496 2.3672 H 1 SURD 0.3700 + 7 O1B 4.3401 3.7831 1.9554 O.3 1 SURD -0.6500 + 8 N1B 7.1907 1.3603 2.3517 N.3 1 SURD -0.8000 + 9 H1B 8.0034 1.3156 2.9534 H 1 SURD 0.3700 + 10 H2B 6.6404 0.5016 2.3081 H 1 SURD 0.3700 +@BOND + 1 1 7 1 + 2 1 4 1 + 3 1 2 2 + 4 2 8 1 + 5 2 3 1 + 6 3 6 1 + 7 3 5 1 + 8 8 10 1 + 9 8 9 1 +@SUBSTRUCTURE + 1 SURD 1 +@COMMENT +COMMENT THIOUREA S,S,-DIOXIDE (AT 110 DEG.K, FULL DATA REFINEMENT) +@MOLECULE +TACGIN + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.2040 2.5856 1.5688 N.3 1 UNCH 0.3140 + 2 N2 3.7527 1.3960 1.2290 N.2 1 UNCH -0.7068 + 3 C1 4.9968 1.7141 0.8513 C.2 1 UNCH 0.1388 + 4 C2 5.2401 3.0959 0.9351 C.2 1 UNCH 0.0790 + 5 C3 4.0591 3.6400 1.3973 C.2 1 UNCH -0.3016 + 6 N3 6.4457 3.7914 0.6116 N.2 1 UNCH 0.9610 + 7 O1 6.4402 5.0213 0.7438 O.3 1 UNCH -0.5200 + 8 O2 7.3968 3.1035 0.2214 O.2 1 UNCH -0.5200 + 9 N4 1.7521 2.7163 3.4701 N.3 1 UNCH 0.3140 + 10 N5 1.5532 3.9097 4.0768 N.2 1 UNCH -0.7068 + 11 C4 1.5218 3.6045 5.3797 C.2 1 UNCH 0.1388 + 12 C5 1.6857 2.2271 5.6065 C.2 1 UNCH 0.0790 + 13 C6 1.8268 1.6719 4.3510 C.2 1 UNCH -0.3016 + 14 N6 1.7015 1.5448 6.8618 N.2 1 UNCH 0.9610 + 15 O3 1.5671 2.2414 7.8750 O.3 1 UNCH -0.5200 + 16 O4 1.8442 0.3163 6.8343 O.2 1 UNCH -0.5200 + 17 C7 1.8273 2.6440 2.0230 C.3 1 UNCH 0.5112 + 18 H1 5.6692 0.9272 0.5300 H 1 UNCH 0.1500 + 19 H2 3.7699 4.6589 1.6230 H 1 UNCH 0.1500 + 20 H3 1.3789 4.3972 6.1049 H 1 UNCH 0.1500 + 21 H4 1.9819 0.6515 4.0230 H 1 UNCH 0.1500 + 22 H5 1.3524 3.5305 1.5909 H 1 UNCH 0.0000 + 23 H6 1.2972 1.7466 1.6883 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 17 1 + 4 2 3 2 + 5 3 4 1 + 6 3 18 1 + 7 4 5 2 + 8 4 6 1 + 9 5 19 1 + 10 6 7 1 + 11 6 8 2 + 12 9 10 1 + 13 9 13 1 + 14 9 17 1 + 15 10 11 2 + 16 11 12 1 + 17 11 20 1 + 18 12 13 2 + 19 12 14 1 + 20 13 21 1 + 21 14 15 1 + 22 14 16 2 + 23 17 22 1 + 24 17 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(4-NITROPYRAZOL-1-YL)METHANE +@MOLECULE +TACLEO + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.1335 0.7036 10.3644 C.3 1 UNCH 0.4010 + 2 C2 -2.9502 1.6632 7.6042 C.2 1 UNCH -0.1500 + 3 C3 -1.1001 0.7316 11.9101 C.3 1 UNCH 0.0000 + 4 C4 -1.9872 -0.5161 11.8657 C.3 1 UNCH 0.4720 + 5 C5 0.0503 -0.0367 9.7407 C.2 1 UNCH 0.8710 + 6 C6 -1.4545 2.0245 9.6511 C.3 1 UNCH 0.4235 + 7 C7 -1.6794 1.8652 8.1595 C.2 1 UNCH -0.1435 + 8 C8 -0.5890 1.9179 7.2819 C.2 1 UNCH -0.1500 + 9 C9 -0.8095 1.7687 5.9212 C.2 1 UNCH 0.1600 + 10 C10 -3.0716 1.5379 6.2275 C.2 1 UNCH 0.1600 + 11 N1 -2.3471 -0.2186 10.4856 N.3 1 UNCH -0.8440 + 12 N2 -2.0305 1.5918 5.3747 N.2 1 UNCH -0.6200 + 13 O1 1.1707 0.5414 9.7210 O.2 1 UNCH -0.9000 + 14 O2 -0.2430 -1.2065 9.3365 O.3 1 UNCH -0.9000 + 15 O3 -2.6691 2.5585 10.2254 O.3 1 UNCH -0.6800 + 16 H1 -2.7576 3.4587 9.8550 H 1 UNCH 0.4000 + 17 H2 -3.8441 1.6160 8.2161 H 1 UNCH 0.1500 + 18 H3 -3.2097 0.2973 10.3063 H 1 UNCH 0.4500 + 19 H4 -2.1492 -0.9936 9.8145 H 1 UNCH 0.4500 + 20 H5 -0.1223 0.5861 12.3788 H 1 UNCH 0.0000 + 21 H6 -1.5806 1.5993 12.3752 H 1 UNCH 0.0000 + 22 H7 -1.4525 -1.4665 11.9655 H 1 UNCH 0.0000 + 23 H8 -2.8399 -0.5071 12.5493 H 1 UNCH 0.0000 + 24 H11 -0.6646 2.7624 9.8372 H 1 UNCH 0.0000 + 25 H12 0.4292 2.0513 7.6423 H 1 UNCH 0.1500 + 26 H13 0.0185 1.7866 5.2177 H 1 UNCH 0.1500 + 27 H14 -4.0410 1.3875 5.7607 H 1 UNCH 0.1500 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 1 6 1 + 4 1 11 1 + 5 2 7 2 + 6 2 10 1 + 7 2 17 1 + 8 3 4 1 + 9 3 20 1 + 10 3 21 1 + 11 4 11 1 + 12 4 22 1 + 13 4 23 1 + 14 5 13 2 + 15 5 14 1 + 16 6 7 1 + 17 6 15 1 + 18 6 24 1 + 19 7 8 1 + 20 8 9 2 + 21 8 25 1 + 22 9 12 1 + 23 9 26 1 + 24 10 12 2 + 25 10 27 1 + 26 11 18 1 + 27 11 19 1 + 28 15 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (R)-2-((R)-HYDROXY(4-PYRIDYL)METHYL)-2-AZETIDINECARBOXYLIC +@MOLECULE +TAFKIU + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.3584 4.8162 11.5824 C.2 1 TAFK 0.3718 + 2 C2 -0.5798 3.9611 12.2407 C.2 1 TAFK 0.3718 + 3 C3 1.7183 4.8166 13.5795 C.3 1 TAFK 0.3691 + 4 C4 0.4308 4.5291 14.3606 C.3 1 TAFK 0.3691 + 5 N1 1.4246 5.3765 12.2471 N.3 1 TAFK -0.2871 + 6 N2 -0.4898 3.6780 13.5840 N.3 1 TAFK -0.2871 + 7 N3 -1.4761 3.5341 11.3458 N.2 1 TAFK -0.4097 + 8 N4 0.0013 4.9426 10.3006 N.2 1 TAFK -0.4097 + 9 N5 2.2689 6.1441 11.5206 N.2 1 TAFK -0.0032 + 10 N6 -1.4487 2.8829 14.1115 N.2 1 TAFK -0.0032 + 11 O1 -1.1240 4.1456 10.1518 O.3 1 TAFK 0.2418 + 12 O2 3.2730 6.4983 12.1470 O.2 1 TAFK -0.1618 + 13 O3 -1.3840 2.7851 15.3413 O.2 1 TAFK -0.1618 + 14 H1 2.2986 3.8926 13.4577 H 1 TAFK 0.0000 + 15 H2 2.3273 5.5115 14.1703 H 1 TAFK 0.0000 + 16 H3 -0.0772 5.4704 14.6078 H 1 TAFK 0.0000 + 17 H4 0.7064 4.0464 15.3060 H 1 TAFK 0.0000 +@BOND + 1 1 8 2 + 2 1 5 am + 3 1 2 1 + 4 2 7 2 + 5 2 6 am + 6 3 15 1 + 7 3 14 1 + 8 3 5 1 + 9 3 4 1 + 10 4 17 1 + 11 4 16 1 + 12 4 6 1 + 13 5 9 1 + 14 6 10 1 + 15 7 11 1 + 16 8 11 1 + 17 9 12 2 + 18 10 13 2 +@SUBSTRUCTURE + 1 TAFK 1 +@COMMENT +COMMENT 4,7-DINITROSO-4,5,6,7-TETRAHYDRO-1,2,5-OXADIAZOLO(3,4-B) PY +@MOLECULE +TAFXIH + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.8591 8.3254 -0.9620 C.3 1 TAFX 0.4600 + 2 C2 1.4649 9.0282 -0.8131 C.3 1 TAFX 0.1435 + 3 C3 3.2876 8.3218 -2.4604 C.3 1 TAFX 0.2300 + 4 C4 2.1169 8.8117 -3.3608 C.3 1 TAFX 0.1435 + 5 C5 0.3895 8.1974 -1.5835 C.3 1 TAFX 0.2300 + 6 C6 0.8318 7.9970 -3.0525 C.3 1 TAFX 0.2300 + 7 C7 1.8739 10.2438 -2.9136 C.2 1 TAFX -0.1435 + 8 C8 1.9716 11.3688 -3.7207 C.2 1 TAFX -0.1500 + 9 C9 1.5471 10.3648 -1.5489 C.2 1 TAFX -0.1435 + 10 C10 1.3167 11.6124 -0.9838 C.2 1 TAFX -0.1500 + 11 C11 1.7393 12.6223 -3.1532 C.2 1 TAFX -0.1500 + 12 C12 1.4156 12.7432 -1.7950 C.2 1 TAFX -0.1500 + 13 BR1 4.2112 9.3715 0.0797 BR 1 TAFX -0.2300 + 14 BR2 -1.3850 8.9713 -1.2652 BR 1 TAFX -0.2300 + 15 BR3 -0.4980 8.3188 -4.4446 BR 1 TAFX -0.2300 + 16 BR4 2.7629 6.5572 -0.0789 BR 1 TAFX -0.2300 + 17 BR5 4.0182 6.6606 -3.1855 BR 1 TAFX -0.2300 + 18 H1 1.1855 9.1744 0.2375 H 1 TAFX 0.0000 + 19 H2 4.1310 9.0078 -2.6176 H 1 TAFX 0.0000 + 20 H3 2.3868 8.7751 -4.4229 H 1 TAFX 0.0000 + 21 H4 0.2629 7.2119 -1.1245 H 1 TAFX 0.0000 + 22 H5 1.0475 6.9319 -3.1970 H 1 TAFX 0.0000 + 23 H6 2.2195 11.2871 -4.7753 H 1 TAFX 0.1500 + 24 H7 1.0574 11.7172 0.0660 H 1 TAFX 0.1500 + 25 H8 1.8068 13.5155 -3.7703 H 1 TAFX 0.1500 + 26 H9 1.2346 13.7288 -1.3717 H 1 TAFX 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 13 1 + 4 1 16 1 + 5 2 5 1 + 6 2 9 1 + 7 2 18 1 + 8 3 4 1 + 9 3 17 1 + 10 3 19 1 + 11 4 6 1 + 12 4 7 1 + 13 4 20 1 + 14 5 6 1 + 15 5 14 1 + 16 5 21 1 + 17 6 15 1 + 18 6 22 1 + 19 7 8 2 + 20 7 9 1 + 21 8 11 1 + 22 8 23 1 + 23 9 10 2 + 24 10 12 1 + 25 10 24 1 + 26 11 12 2 + 27 11 25 1 + 28 12 26 1 +@SUBSTRUCTURE + 1 TAFX 1 +@COMMENT +COMMENT EXO,ENDO,ENDO-9,9,10,11,12-PENTABROMO-TRICYCLO (6.2.2.0-2,7 +@MOLECULE +TAFZIJ + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 5.6228 -0.0544 12.6781 CL 1 TAFZ -0.0680 + 2 S1 5.2646 1.7560 11.8255 S.3 1 TAFZ -0.0335 + 3 O1 6.5402 1.6438 8.8105 O.3 1 TAFZ -0.5200 + 4 O2 6.3646 -0.5531 8.7817 O.2 1 TAFZ -0.5200 + 5 N1 5.9135 0.5865 8.9572 N.2 1 TAFZ 0.9070 + 6 C1 4.1304 1.2128 10.5572 C.2 1 TAFZ 0.1015 + 7 C2 4.5149 0.6890 9.3160 C.2 1 TAFZ 0.1330 + 8 C3 3.5776 0.2465 8.3705 C.2 1 TAFZ -0.1500 + 9 C4 2.2195 0.3416 8.6642 C.2 1 TAFZ -0.1500 + 10 C5 1.8102 0.8714 9.8878 C.2 1 TAFZ -0.1500 + 11 C6 2.7561 1.3026 10.8259 C.2 1 TAFZ -0.1500 + 12 H1 3.8982 -0.1659 7.4159 H 1 TAFZ 0.1500 + 13 H2 1.4789 0.0041 7.9421 H 1 TAFZ 0.1500 + 14 H3 0.7489 0.9460 10.1178 H 1 TAFZ 0.1500 + 15 H4 2.4041 1.7032 11.7756 H 1 TAFZ 0.1500 +@BOND + 1 1 2 1 + 2 2 6 1 + 3 3 5 1 + 4 4 5 2 + 5 5 7 1 + 6 6 7 1 + 7 6 11 2 + 8 7 8 2 + 9 8 9 1 + 10 8 12 1 + 11 9 10 2 + 12 9 13 1 + 13 10 11 1 + 14 10 14 1 + 15 11 15 1 +@SUBSTRUCTURE + 1 TAFZ 1 +@COMMENT +COMMENT 2-NITROBENZENESULFENYL CHLORIDE +@MOLECULE +TAGVIG + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.9577 0.2901 7.1962 N.3 1 CHGB -0.5390 + 2 C1 -1.2845 1.5891 6.9238 C.2 1 CHGB 0.6900 + 3 N2 -1.5767 2.3641 8.0096 N.3 1 CHGB -0.4900 + 4 C2 -1.7143 1.9088 9.3004 C.2 1 CHGB 0.6156 + 5 C3 -1.2802 0.5226 9.5192 C.2 1 CHGB -0.2356 + 6 C4 -0.9377 -0.2245 8.4637 C.2 1 CHGB -0.0410 + 7 C5 -1.2051 -0.0953 10.8965 C.2 1 CHGB 1.0500 + 8 O1 -1.3219 2.0240 5.7753 O.2 1 CHGB -0.5700 + 9 O2 -2.2198 2.6305 10.1530 O.2 1 CHGB -0.5700 + 10 O3 -1.8467 -1.1800 11.0306 O.2 1 CHGB -0.9000 + 11 O4 -0.4351 0.4798 11.7150 O.3 1 CHGB -0.9000 + 12 H1 -0.7228 -0.2963 6.4071 H 1 CHGB 0.3700 + 13 H2 -1.8952 3.3012 7.8363 H 1 CHGB 0.3700 + 14 H3 -0.6342 -1.2623 8.5726 H 1 CHGB 0.1500 +@BOND + 1 1 2 am + 2 1 6 1 + 3 1 12 1 + 4 2 3 am + 5 2 8 2 + 6 3 4 am + 7 3 13 1 + 8 4 5 1 + 9 4 9 2 + 10 5 6 2 + 11 5 7 1 + 12 6 14 1 + 13 7 10 2 + 14 7 11 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT AMMONIUM (1,2,3,4-TETRAHYDRO)-2,4-DIOXO-5-PYRIMIDINECARBOXY +@MOLECULE +TAHMOE + 18 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.2125 5.3795 2.7638 C.2 1 UNCH 0.8410 + 2 C2 0.2049 2.5035 3.3057 C.3 1 UNCH 0.4460 + 3 C3 0.6254 2.1463 4.6789 C.1 1 UNCH 0.3571 + 4 C4 0.7939 1.5309 2.2800 C.3 1 UNCH 0.0000 + 5 C5 -1.3249 2.4862 3.2174 C.3 1 UNCH 0.0000 + 6 N1 1.8731 4.0795 3.0625 N.2 1 UNCH -0.2110 + 7 N2 0.6363 3.8890 3.0088 N.2 1 UNCH -0.2460 + 8 N3 0.9569 1.8510 5.7527 N.1 1 UNCH -0.5571 + 9 N4 3.4627 5.7056 3.1920 N.3 1 UNCH -0.8000 + 10 O1 1.5263 6.2139 2.1820 O.2 1 UNCH -0.5700 + 11 H1 3.9516 5.0833 3.8169 H 1 UNCH 0.3700 + 12 H2 3.7341 6.6756 3.1302 H 1 UNCH 0.3700 + 13 H3 0.4303 0.5100 2.4457 H 1 UNCH 0.0000 + 14 H4 1.8885 1.4963 2.3344 H 1 UNCH 0.0000 + 15 H5 0.5261 1.8247 1.2586 H 1 UNCH 0.0000 + 16 H6 -1.7287 1.4915 3.4395 H 1 UNCH 0.0000 + 17 H7 -1.6662 2.7750 2.2166 H 1 UNCH 0.0000 + 18 H8 -1.7728 3.1906 3.9291 H 1 UNCH 0.0000 +@BOND + 1 1 6 am + 2 1 9 am + 3 1 10 2 + 4 2 3 1 + 5 2 4 1 + 6 2 5 1 + 7 2 7 1 + 8 3 8 3 + 9 4 13 1 + 10 4 14 1 + 11 4 15 1 + 12 5 16 1 + 13 5 17 1 + 14 5 18 1 + 15 6 7 2 + 16 9 11 1 + 17 9 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1-CYANO-1-METHYLETHYLAZO)FORMAMIDE +@MOLECULE +TAJPUP + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.1134 -0.2865 3.6607 O.3 1 TAJP 0.1625 + 2 O2 -3.6698 -4.2828 0.3849 O.3 1 TAJP -0.5200 + 3 O3 -1.6540 -4.8514 -0.2780 O.2 1 TAJP -0.5200 + 4 N1 1.2787 -0.2589 3.5766 N.2 1 TAJP 0.0330 + 5 N2 0.1160 -2.0348 2.0883 N.2 1 TAJP -0.6200 + 6 N3 5.3901 0.0718 3.5497 N.3 1 TAJP -0.9000 + 7 N4 -2.4384 -4.1676 0.3912 N.2 1 TAJP 0.9070 + 8 C1 1.8467 0.5783 2.6952 C.2 1 TAJP 0.2110 + 9 C2 3.2335 0.6731 2.6441 C.2 1 TAJP -0.1500 + 10 C3 4.0130 -0.1165 3.4898 C.2 1 TAJP 0.1000 + 11 C4 3.3733 -0.9191 4.4347 C.2 1 TAJP -0.1500 + 12 C5 1.9841 -0.9870 4.4556 C.2 1 TAJP 0.2110 + 13 C6 -0.6938 -1.2552 2.8446 C.2 1 TAJP 0.3925 + 14 C7 -2.0784 -1.3603 2.8593 C.2 1 TAJP -0.1500 + 15 C8 -2.6771 -2.3260 2.0473 C.2 1 TAJP -0.1500 + 16 C9 -1.8650 -3.1444 1.2562 C.2 1 TAJP 0.1330 + 17 C10 -0.4889 -2.9697 1.3042 C.2 1 TAJP 0.1600 + 18 H1 1.1906 1.1587 2.0573 H 1 TAJP 0.1500 + 19 H2 3.7001 1.3673 1.9492 H 1 TAJP 0.1500 + 20 H3 3.9507 -1.4876 5.1599 H 1 TAJP 0.1500 + 21 H4 1.4328 -1.5994 5.1592 H 1 TAJP 0.1500 + 22 H5 -2.6908 -0.7139 3.4818 H 1 TAJP 0.1500 + 23 H6 -3.7617 -2.4295 2.0399 H 1 TAJP 0.1500 + 24 H7 0.1939 -3.5766 0.7112 H 1 TAJP 0.1500 + 25 H8 5.9345 -0.6823 3.9630 H 1 TAJP 0.4000 + 26 H9 5.8366 0.4325 2.7093 H 1 TAJP 0.4000 +@BOND + 1 1 13 1 + 2 1 4 1 + 3 2 7 1 + 4 3 7 2 + 5 4 12 2 + 6 4 8 1 + 7 5 17 1 + 8 5 13 2 + 9 6 26 1 + 10 6 25 1 + 11 6 10 1 + 12 7 16 1 + 13 8 18 1 + 14 8 9 2 + 15 9 19 1 + 16 9 10 1 + 17 10 11 2 + 18 11 20 1 + 19 11 12 1 + 20 12 21 1 + 21 13 14 1 + 22 14 22 1 + 23 14 15 2 + 24 15 23 1 + 25 15 16 1 + 26 16 17 2 + 27 17 24 1 +@SUBSTRUCTURE + 1 TAJP 1 +@COMMENT +COMMENT 4-AMINO-1-(5-NITRO-2-PYRIDYLOXY)PYRIDINIUM CHLORIDE +@MOLECULE +TAJSUS + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.0967 -0.8361 5.0834 C.2 1 TAJS 0.9060 + 2 C2 -0.3529 -0.6252 4.5960 C.3 1 TAJS 0.4080 + 3 C3 -2.5134 1.7485 5.9216 C.2 1 TAJS 0.5030 + 4 C4 -1.3475 0.1495 6.7863 C.2 1 TAJS 0.6500 + 5 C5 -3.0807 0.3837 9.0338 C.2 1 TAJS 0.2500 + 6 C6 -3.5441 0.7317 10.4729 C.3 1 TAJS 0.2045 + 7 C7 -2.4292 1.2566 11.3567 C.2 1 TAJS -0.1435 + 8 C8 -2.5350 2.5103 11.9742 C.2 1 TAJS -0.1500 + 9 C9 -1.5118 2.9822 12.7993 C.2 1 TAJS -0.1500 + 10 C10 -0.3754 2.2048 13.0174 C.2 1 TAJS -0.1500 + 11 C11 -0.2621 0.9544 12.4126 C.2 1 TAJS -0.1500 + 12 C12 -1.2853 0.4810 11.5904 C.2 1 TAJS -0.1500 + 13 N1 -1.1969 0.2122 5.4466 N.2 1 TAJS -0.4570 + 14 N2 -1.9361 1.2352 4.8950 N.2 1 TAJS -0.2600 + 15 N3 -2.2340 1.1124 7.0910 N.3 1 TAJS -0.4580 + 16 N4 -2.7065 1.4497 8.3644 N.2 1 TAJS -0.2420 + 17 O1 1.3088 -0.5886 6.3059 O.2 1 TAJS -0.9000 + 18 O2 1.9019 -1.2447 4.1975 O.3 1 TAJS -0.9000 + 19 O3 -3.1522 -0.8223 8.6964 O.3 1 TAJS -0.8610 + 20 H1 -0.8380 -1.6052 4.5251 H 1 TAJS 0.0000 + 21 H2 -0.3270 -0.1867 3.5915 H 1 TAJS 0.0000 + 22 H3 -3.1920 2.5838 5.9529 H 1 TAJS 0.1500 + 23 H4 -0.8523 -0.5303 7.4676 H 1 TAJS 0.1500 + 24 H5 -4.3401 1.4835 10.3847 H 1 TAJS 0.0000 + 25 H6 -3.9941 -0.1414 10.9640 H 1 TAJS 0.0000 + 26 H7 -3.4135 3.1275 11.8067 H 1 TAJS 0.1500 + 27 H8 -1.6002 3.9587 13.2659 H 1 TAJS 0.1500 + 28 H9 0.4248 2.5739 13.6518 H 1 TAJS 0.1500 + 29 H10 0.6245 0.3467 12.5698 H 1 TAJS 0.1500 + 30 H11 -1.1875 -0.4941 11.1147 H 1 TAJS 0.1500 +@BOND + 1 1 18 1 + 2 1 17 2 + 3 1 2 1 + 4 2 21 1 + 5 2 20 1 + 6 2 13 1 + 7 3 22 1 + 8 3 15 am + 9 3 14 2 + 10 4 23 1 + 11 4 15 am + 12 4 13 2 + 13 5 19 1 + 14 5 16 2 + 15 5 6 1 + 16 6 25 1 + 17 6 24 1 + 18 6 7 1 + 19 7 12 1 + 20 7 8 2 + 21 8 26 1 + 22 8 9 1 + 23 9 27 1 + 24 9 10 2 + 25 10 28 1 + 26 10 11 1 + 27 11 29 1 + 28 11 12 2 + 29 12 30 1 + 30 13 14 1 + 31 15 16 1 +@SUBSTRUCTURE + 1 TAJS 1 +@COMMENT +COMMENT SODIUM N-(1-CARBOXYMETHYL-4-(1,2,4-TRIAZOLIO))-PHENYLACETAM +@MOLECULE +TAJVUV + 6 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.2402 12.9647 -2.9071 S.3 1 TAJV 0.1807 + 2 S2 3.8509 10.5167 -1.7517 S.3 1 TAJV -0.9000 + 3 N1 4.7893 14.4919 -2.3735 N.2 1 TAJV -0.2207 + 4 N2 3.8279 14.4038 -1.4643 N.2 1 TAJV 0.0000 + 5 N3 3.4205 13.1069 -1.1651 N.2 1 TAJV -0.3381 + 6 C1 4.0860 12.2010 -1.8605 C.2 1 TAJV 0.2781 +@BOND + 1 1 6 1 + 2 1 3 1 + 3 2 6 1 + 4 3 4 2 + 5 4 5 1 + 6 5 6 2 +@SUBSTRUCTURE + 1 TAJV 1 +@COMMENT +COMMENT SODIUM 1,2,3,4-THIATRIAZOLE-5-THIOLATE DIHYDRATE (AT 173 DE +@MOLECULE +TAJWAC + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.3881 4.0712 -0.2896 S.3 1 UNCH 0.1807 + 2 S2 3.7494 1.3798 -0.8523 S.3 1 UNCH -0.1970 + 3 O1 1.5568 1.1826 -2.2275 O.2 1 UNCH -0.5700 + 4 N1 1.6860 4.3186 1.2177 N.2 1 UNCH -0.2207 + 5 N2 1.8267 3.2435 1.9847 N.2 1 UNCH 0.0000 + 6 N3 2.5069 2.1850 1.3894 N.2 1 UNCH -0.3381 + 7 C1 2.8676 2.4843 0.1582 C.2 1 UNCH 0.4341 + 8 C2 2.3250 0.5760 -1.4904 C.2 1 UNCH 0.6248 + 9 C3 2.0978 -0.8605 -1.1548 C.2 1 UNCH 0.0862 + 10 C4 2.7774 -1.5359 -0.1305 C.2 1 UNCH -0.1500 + 11 C5 2.5047 -2.8830 0.1274 C.2 1 UNCH -0.1500 + 12 C6 1.5526 -3.5640 -0.6288 C.2 1 UNCH -0.1500 + 13 C7 0.8656 -2.9012 -1.6428 C.2 1 UNCH -0.1500 + 14 C8 1.1343 -1.5558 -1.9032 C.2 1 UNCH -0.1500 + 15 H1 3.5143 -1.0402 0.4954 H 1 UNCH 0.1500 + 16 H2 3.0330 -3.4004 0.9253 H 1 UNCH 0.1500 + 17 H3 1.3418 -4.6109 -0.4234 H 1 UNCH 0.1500 + 18 H4 0.1181 -3.4294 -2.2300 H 1 UNCH 0.1500 + 19 H5 0.5849 -1.0525 -2.6976 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 7 1 + 3 2 7 1 + 4 2 8 1 + 5 3 8 2 + 6 4 5 2 + 7 5 6 1 + 8 6 7 2 + 9 8 9 1 + 10 9 10 2 + 11 9 14 1 + 12 10 11 1 + 13 10 15 1 + 14 11 12 2 + 15 11 16 1 + 16 12 13 1 + 17 12 17 1 + 18 13 14 2 + 19 13 18 1 + 20 14 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-BENZOYLTHIO-1,2,3,4-THIATRIAZOLE (AT 173 DEG.K) +@MOLECULE +TAKHES + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 3.6742 3.9519 6.8242 CL 1 UNCH -0.1400 + 2 CL2 5.0594 6.0173 8.3370 CL 1 UNCH -0.1400 + 3 CL3 4.6962 0.9303 7.9637 CL 1 UNCH -0.2900 + 4 CL4 2.5923 1.6711 9.9360 CL 1 UNCH -0.2900 + 5 C1 4.4743 4.3873 8.3052 C.2 1 UNCH 0.3110 + 6 C2 4.6528 3.5057 9.3038 C.2 1 UNCH -0.1690 + 7 C3 4.3462 1.9929 9.4118 C.3 1 UNCH 0.7180 + 8 C2B 5.1794 3.5057 10.6482 C.2 1 UNCH -0.1690 + 9 C3B 5.4859 1.9929 10.5402 C.3 1 UNCH 0.7180 + 10 C1B 5.3580 4.3873 11.6468 C.2 1 UNCH 0.3110 + 11 CL3B 5.1359 0.9303 11.9883 CL 1 UNCH -0.2900 + 12 CL4B 7.2399 1.6710 10.0160 CL 1 UNCH -0.2900 + 13 CL1B 6.1581 3.9519 13.1278 CL 1 UNCH -0.1400 + 14 CL2B 4.7729 6.0173 11.6149 CL 1 UNCH -0.1400 +@BOND + 1 1 5 1 + 2 2 5 1 + 3 3 7 1 + 4 4 7 1 + 5 5 6 2 + 6 6 7 1 + 7 6 8 1 + 8 7 9 1 + 9 8 9 1 + 10 8 10 2 + 11 9 11 1 + 12 9 12 1 + 13 10 13 1 + 14 10 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT OCTACHLORO-1,2-BIS(METHYLENE)CYCLOBUTANE (AT -95 DEG.C) +@MOLECULE +TAMMAV + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.3745 1.9917 0.7382 S.3 1 TAMM 0.8491 + 2 S2 1.5591 4.0318 -2.1963 S.2 1 TAMM -0.3800 + 3 O1 -1.6874 1.3971 0.5119 O.3 1 TAMM -0.6500 + 4 O2 0.3072 1.5995 1.9669 O.3 1 TAMM -0.6500 + 5 N1 0.5503 2.1862 -0.5566 N.3 1 TAMM -0.3201 + 6 C1 -0.7429 3.6769 1.0087 C.2 1 TAMM -0.0090 + 7 C2 -1.5228 4.2361 2.0001 C.2 1 TAMM -0.1500 + 8 C3 -1.6544 5.6239 1.9874 C.2 1 TAMM -0.1500 + 9 C4 -1.0105 6.3914 0.9979 C.2 1 TAMM -0.1500 + 10 C5 -0.2262 5.7798 0.0079 C.2 1 TAMM -0.1500 + 11 C6 -0.0984 4.3983 0.0249 C.2 1 TAMM 0.0862 + 12 C7 0.6564 3.4907 -0.8836 C.2 1 TAMM 0.0738 + 13 H2 -2.0009 3.6088 2.7428 H 1 TAMM 0.1500 + 14 H3 -2.2577 6.1143 2.7461 H 1 TAMM 0.1500 + 15 H4 -1.1218 7.4725 1.0001 H 1 TAMM 0.1500 + 16 H5 0.2659 6.3786 -0.7501 H 1 TAMM 0.1500 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 4 1 + 4 1 3 1 + 5 2 12 2 + 6 5 12 1 + 7 6 11 1 + 8 6 7 2 + 9 7 13 1 + 10 7 8 1 + 11 8 14 1 + 12 8 9 2 + 13 9 15 1 + 14 9 10 1 + 15 10 16 1 + 16 10 11 2 + 17 11 12 1 +@SUBSTRUCTURE + 1 TAMM 1 +@COMMENT +COMMENT POTASSIUM 1,2-BENZISOTHIAZOL-3(2H)-THIONE 1,1-DIOXIDE MONOH +@MOLECULE +TANHAR + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.4230 1.4699 16.2076 C.3 1 UNCH 0.3500 + 2 C2 8.4392 1.1418 15.1939 C.2 1 UNCH -0.0684 + 3 C3 8.0980 2.0492 16.0608 C.2 1 UNCH -0.1900 + 4 C4 10.6565 2.1623 15.9785 C.1 1 UNCH 0.4521 + 5 C5 8.1455 0.3460 14.0531 C.2 1 UNCH 0.0284 + 6 C6 9.0687 -0.5929 13.5803 C.2 1 UNCH -0.1500 + 7 C7 8.7750 -1.3695 12.4566 C.2 1 UNCH -0.1500 + 8 C8 7.5577 -1.2129 11.7974 C.2 1 UNCH -0.1500 + 9 C9 6.6322 -0.2809 12.2612 C.2 1 UNCH -0.1500 + 10 C10 6.9248 0.4955 13.3851 C.2 1 UNCH -0.1500 + 11 N1 11.6445 2.7388 15.7780 N.1 1 UNCH -0.5571 + 12 N2 9.6115 0.4960 17.3010 N.2 1 UNCH 0.8750 + 13 O1 10.0645 -0.6158 16.9957 O.3 1 UNCH -0.5200 + 14 O2 9.3118 0.8682 18.4443 O.2 1 UNCH -0.5200 + 15 H1 7.3923 2.7421 16.4435 H 1 UNCH 0.1500 + 16 H2 10.0252 -0.7421 14.0775 H 1 UNCH 0.1500 + 17 H3 9.4971 -2.0990 12.0976 H 1 UNCH 0.1500 + 18 H4 7.3303 -1.8184 10.9235 H 1 UNCH 0.1500 + 19 H5 5.6814 -0.1584 11.7483 H 1 UNCH 0.1500 + 20 H6 6.1871 1.2172 13.7297 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 12 1 + 5 2 3 2 + 6 2 5 1 + 7 3 15 1 + 8 4 11 3 + 9 5 6 2 + 10 5 10 1 + 11 6 7 1 + 12 6 16 1 + 13 7 8 2 + 14 7 17 1 + 15 8 9 1 + 16 8 18 1 + 17 9 10 2 + 18 9 19 1 + 19 10 20 1 + 20 12 13 1 + 21 12 14 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-NITRO-2-PHENYLCYCLOPROP-2-ENE-CARBONITRILE +@MOLECULE +TAPJUP + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.5839 6.2924 1.0994 C.2 1 TAPJ -0.1500 + 2 C2 -2.2546 5.1046 1.3892 C.2 1 TAPJ -0.1500 + 3 C3 -1.6344 4.0925 2.1549 C.2 1 TAPJ -0.1500 + 4 C4 -0.3308 4.2440 2.6524 C.2 1 TAPJ -0.1500 + 5 C5 0.3411 5.4228 2.3769 C.2 1 TAPJ -0.1435 + 6 C6 1.7505 5.8553 2.7792 C.3 1 TAPJ 0.6045 + 7 C7 1.7657 7.1848 2.1300 C.2 1 TAPJ 0.1520 + 8 C8 2.5649 8.2810 1.9137 C.2 1 TAPJ -0.0840 + 9 O1 3.6874 8.6164 2.2142 O.3 1 TAPJ -0.7760 + 10 O2 1.7490 9.1518 1.1281 O.3 1 TAPJ -0.0191 + 11 N1 0.4819 8.5548 0.8806 N.2 1 TAPJ -0.0819 + 12 N2 0.6096 7.4395 1.4967 N.2 1 TAPJ 0.2410 + 13 C9 -0.3113 6.3947 1.6077 C.2 1 TAPJ 0.3870 + 14 O3 2.6772 4.9467 2.1978 O.3 1 TAPJ -0.6800 + 15 C10 1.9411 5.9048 4.2882 C.3 1 TAPJ 0.0000 + 16 H1 -2.0404 7.0774 0.5093 H 1 TAPJ 0.1500 + 17 H2 -3.2668 4.9469 1.0184 H 1 TAPJ 0.1500 + 18 H3 -2.1789 3.1700 2.3579 H 1 TAPJ 0.1500 + 19 H4 0.1385 3.4488 3.2266 H 1 TAPJ 0.1500 + 20 H5 1.8498 4.9059 4.7304 H 1 TAPJ 0.0000 + 21 H6 1.2119 6.5617 4.7758 H 1 TAPJ 0.0000 + 22 H7 2.9448 6.2658 4.5416 H 1 TAPJ 0.0000 + 23 H8 3.5426 5.4064 2.2073 H 1 TAPJ 0.4000 +@BOND + 1 1 16 1 + 2 1 13 1 + 3 1 2 2 + 4 2 17 1 + 5 2 3 1 + 6 3 18 1 + 7 3 4 2 + 8 4 19 1 + 9 4 5 1 + 10 5 13 2 + 11 5 6 1 + 12 6 15 1 + 13 6 14 1 + 14 6 7 1 + 15 7 12 1 + 16 7 8 2 + 17 8 10 1 + 18 8 9 1 + 19 10 11 1 + 20 11 12 2 + 21 12 13 1 + 22 14 23 1 + 23 15 22 1 + 24 15 21 1 + 25 15 20 1 +@SUBSTRUCTURE + 1 TAPJ 1 +@COMMENT +COMMENT 5-HYDROXY-5-METHYLSYDNO(3,4-A)INDOLE +@MOLECULE +TAPSAE + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 11.8917 2.4159 3.9552 N.1 1 TAPS -0.5571 + 2 N2 9.3497 4.9649 6.4463 N.1 1 TAPS -0.5571 + 3 N3 5.2686 -0.3822 4.0194 N.3 1 TAPS -0.9000 + 4 C1 10.8396 2.8873 4.0991 C.1 1 TAPS 0.3571 + 5 C2 9.5054 3.4957 4.2622 C.3 1 TAPS 0.5435 + 6 C3 9.4186 4.3096 5.4894 C.1 1 TAPS 0.3571 + 7 C4 8.3983 2.4499 4.1952 C.2 1 TAPS -0.1435 + 8 C5 8.2978 1.4258 5.1520 C.2 1 TAPS -0.1500 + 9 C6 7.2742 0.4758 5.0738 C.2 1 TAPS -0.1500 + 10 C7 6.3566 0.4957 4.0230 C.2 1 TAPS 0.1000 + 11 C8 6.4178 1.5452 3.1055 C.2 1 TAPS -0.1500 + 12 C9 7.4366 2.5016 3.1739 C.2 1 TAPS -0.1500 + 13 H1 9.3691 4.1849 3.4170 H 1 TAPS 0.0000 + 14 H2 9.0031 1.3571 5.9796 H 1 TAPS 0.1500 + 15 H3 7.2014 -0.2856 5.8469 H 1 TAPS 0.1500 + 16 H4 5.6668 1.6278 2.3235 H 1 TAPS 0.1500 + 17 H5 7.4543 3.2906 2.4242 H 1 TAPS 0.1500 + 18 H6 5.4453 -1.2621 4.4944 H 1 TAPS 0.4000 + 19 H7 4.8463 -0.5168 3.1062 H 1 TAPS 0.4000 +@BOND + 1 1 4 3 + 2 2 6 3 + 3 3 10 1 + 4 3 18 1 + 5 3 19 1 + 6 4 5 1 + 7 5 6 1 + 8 5 7 1 + 9 5 13 1 + 10 7 8 2 + 11 7 12 1 + 12 8 9 1 + 13 8 14 1 + 14 9 10 2 + 15 9 15 1 + 16 10 11 1 + 17 11 12 2 + 18 11 16 1 + 19 12 17 1 +@SUBSTRUCTURE + 1 TAPS 1 +@COMMENT +COMMENT 2-(4-AMINOPHENYL)-1,3-PROPANEDINITRILE +@MOLECULE +TCYMPH02 + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.0001 -0.0001 -0.0334 P 1 TCYM -0.5007 + 2 C1 1.1333 1.1886 0.8273 C.3 1 TCYM 0.3669 + 3 C2 0.7310 2.5725 0.5425 C.1 1 TCYM 0.3571 + 4 N1 0.3773 3.6610 0.3504 N.1 1 TCYM -0.5571 + 5 H1 2.1599 1.0252 0.4842 H 1 TCYM 0.0000 + 6 H2 1.1137 1.0128 1.9081 H 1 TCYM 0.0000 + 7 C1C -1.5961 0.3870 0.8271 C.3 1 TCYM 0.3669 + 8 C1D 0.4628 -1.5759 0.8273 C.3 1 TCYM 0.3669 + 9 C2C -2.5934 -0.6534 0.5423 C.1 1 TCYM 0.3571 + 10 H1C -1.9678 1.3577 0.4839 H 1 TCYM 0.0000 + 11 H2C -1.4341 0.4580 1.9079 H 1 TCYM 0.0000 + 12 C2D 1.8625 -1.9194 0.5426 C.1 1 TCYM 0.3571 + 13 H1D -0.1919 -2.3832 0.4841 H 1 TCYM 0.0000 + 14 H2D 0.3202 -1.4710 1.9081 H 1 TCYM 0.0000 + 15 N1C -3.3591 -1.5039 0.3502 N.1 1 TCYM -0.5571 + 16 N1D 2.9820 -2.1573 0.3507 N.1 1 TCYM -0.5571 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 8 1 + 4 2 3 1 + 5 2 5 1 + 6 2 6 1 + 7 3 4 3 + 8 7 9 1 + 9 7 10 1 + 10 7 11 1 + 11 8 12 1 + 12 8 13 1 + 13 8 14 1 + 14 9 15 3 + 15 12 16 3 +@SUBSTRUCTURE + 1 TCYM 1 +@COMMENT +COMMENT 2',2'',2'''-PHOSPHINETRIYL-TRIACETONITRILE (AT 95 DEG.K, NE +@MOLECULE +TMTCHD01 + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 4.2865 0.8872 1.9739 O.2 1 TMTC -0.5700 + 2 C1 3.6514 0.4423 1.0464 C.2 1 TMTC 0.5700 + 3 C2 3.9143 0.6277 -0.4197 C.3 1 TMTC -0.0950 + 4 C3 3.4491 -0.6125 -1.1856 C.3 1 TMTC -0.0950 + 5 C4 5.0704 1.4423 -0.8947 C.3 1 TMTC 0.0950 + 6 C5 3.8718 -1.2226 -2.4588 C.3 1 TMTC 0.0950 + 7 H1 5.1247 1.4998 -1.9856 H 1 TMTC 0.0000 + 8 H2 6.0099 1.0106 -0.5350 H 1 TMTC 0.0000 + 9 H3 4.9956 2.4646 -0.5103 H 1 TMTC 0.0000 + 10 H4 3.0268 -1.4310 -3.1219 H 1 TMTC 0.0000 + 11 H5 4.3706 -2.1756 -2.2565 H 1 TMTC 0.0000 + 12 H6 4.5819 -0.5904 -2.9997 H 1 TMTC 0.0000 + 13 C1C 2.3907 -0.4423 1.0464 C.2 1 TMTC 0.5700 + 14 C3C 2.5929 0.6125 -1.1856 C.3 1 TMTC -0.0950 + 15 C2C 2.1277 -0.6277 -0.4197 C.3 1 TMTC -0.0950 + 16 O1C 1.7555 -0.8872 1.9739 O.2 1 TMTC -0.5700 + 17 C5C 2.1702 1.2226 -2.4588 C.3 1 TMTC 0.0950 + 18 C4C 0.9716 -1.4423 -0.8947 C.3 1 TMTC 0.0950 + 19 H4C 3.0152 1.4310 -3.1219 H 1 TMTC 0.0000 + 20 H5C 1.6714 2.1756 -2.2565 H 1 TMTC 0.0000 + 21 H6C 1.4601 0.5904 -2.9997 H 1 TMTC 0.0000 + 22 H1C 0.9173 -1.4998 -1.9856 H 1 TMTC 0.0000 + 23 H2C 0.0321 -1.0106 -0.5350 H 1 TMTC 0.0000 + 24 H3C 1.0464 -2.4646 -0.5103 H 1 TMTC 0.0000 +@BOND + 1 1 2 2 + 2 2 3 1 + 3 2 13 1 + 4 3 4 1 + 5 3 5 1 + 6 3 14 1 + 7 4 6 1 + 8 4 14 1 + 9 4 15 1 + 10 5 7 1 + 11 5 8 1 + 12 5 9 1 + 13 6 10 1 + 14 6 11 1 + 15 6 12 1 + 16 13 15 1 + 17 13 16 2 + 18 14 15 1 + 19 14 17 1 + 20 15 18 1 + 21 17 19 1 + 22 17 20 1 + 23 17 21 1 + 24 18 22 1 + 25 18 23 1 + 26 18 24 1 +@SUBSTRUCTURE + 1 TMTC 1 +@COMMENT +COMMENT 1,2,5,6-TETRAMETHYLTRICYCLO(3.1.0.0-2,6-)HEXANE-3,4-DIONE ( +@MOLECULE +VABLIT + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.1157 1.5167 9.0697 N.2 1 VABL -0.6200 + 2 C1 3.0528 2.2422 8.6590 C.2 1 VABL 0.1600 + 3 C2 1.9728 2.5384 9.4604 C.2 1 VABL -0.1500 + 4 C3 1.9988 2.0615 10.7609 C.2 1 VABL -0.1500 + 5 C4 3.1082 1.3063 11.2134 C.2 1 VABL 0.0000 + 6 C5 4.1494 1.0473 10.3192 C.2 1 VABL 0.6200 + 7 N2 5.2083 0.3286 10.6611 N.2 1 VABL -0.6200 + 8 C6 5.2469 -0.1604 11.9006 C.2 1 VABL 0.4700 + 9 N3 4.3244 0.0165 12.8467 N.2 1 VABL -0.6200 + 10 C7 3.2629 0.7719 12.5025 C.2 1 VABL 0.4100 + 11 N4 2.2433 0.9853 13.4833 N.3 1 VABL -0.5110 + 12 N5 2.4850 0.4323 14.7740 N.3 1 VABL -0.6190 + 13 C8 1.4275 -0.5359 15.0532 C.3 1 VABL 0.2700 + 14 H1 3.1001 2.5841 7.6285 H 1 VABL 0.1500 + 15 H2 1.1372 3.1171 9.0836 H 1 VABL 0.1500 + 16 H3 1.1548 2.2627 11.4151 H 1 VABL 0.1500 + 17 H4 6.1132 -0.7581 12.1632 H 1 VABL 0.1500 + 18 H5 2.0404 1.9861 13.5275 H 1 VABL 0.4000 + 19 H6 3.3826 -0.0730 14.7454 H 1 VABL 0.3600 + 20 H7 0.4457 -0.0510 15.0751 H 1 VABL 0.0000 + 21 H8 1.5970 -0.9860 16.0361 H 1 VABL 0.0000 + 22 H9 1.4116 -1.3412 14.3107 H 1 VABL 0.0000 +@BOND + 1 1 6 1 + 2 1 2 2 + 3 2 14 1 + 4 2 3 1 + 5 3 15 1 + 6 3 4 2 + 7 4 16 1 + 8 4 5 1 + 9 5 10 1 + 10 5 6 2 + 11 6 7 1 + 12 7 8 2 + 13 8 17 1 + 14 8 9 am + 15 9 10 2 + 16 10 11 am + 17 11 18 1 + 18 11 12 1 + 19 12 19 1 + 20 12 13 1 + 21 13 22 1 + 22 13 21 1 + 23 13 20 1 +@SUBSTRUCTURE + 1 VABL 1 +@COMMENT +COMMENT 4-(BETA-METHYLHYDRAZINO)PYRIDO(2,3-D)PYRIMIDINE +@MOLECULE +VABROF + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.6976 3.5841 6.3311 C.3 1 VABR 0.5600 + 2 C2 2.4418 3.5305 5.0074 C.3 1 VABR 0.2800 + 3 C3 3.5857 2.6016 5.2949 C.3 1 VABR 0.2800 + 4 C4 3.0677 1.7201 6.4282 C.3 1 VABR 0.3410 + 5 C5 4.0050 1.6695 7.6198 C.2 1 VABR 0.4490 + 6 C6 1.5654 4.7659 8.3668 C.3 1 VABR 0.2800 + 7 C7 2.6328 2.0634 3.2810 C.3 1 VABR 0.5600 + 8 C8 3.0465 2.7891 2.0046 C.3 1 VABR 0.0000 + 9 C9 2.0008 0.7155 2.9642 C.3 1 VABR 0.0000 + 10 O1 2.3157 4.5482 7.1792 O.3 1 VABR -0.5600 + 11 O2 1.8244 2.2722 6.9001 O.3 1 VABR -0.5600 + 12 O3 3.7964 1.8602 4.0891 O.3 1 VABR -0.5600 + 13 O4 1.6837 2.8608 3.9932 O.3 1 VABR -0.5600 + 14 O5 5.1874 1.9990 7.6057 O.2 1 VABR -0.5700 + 15 H1 0.6353 3.8120 6.1880 H 1 VABR 0.0000 + 16 H2 2.7579 4.5097 4.6336 H 1 VABR 0.0000 + 17 H3 4.5047 3.1377 5.5490 H 1 VABR 0.0000 + 18 H4 2.8849 0.6870 6.1155 H 1 VABR 0.0000 + 19 H5 3.5634 1.2391 8.5355 H 1 VABR 0.0600 + 20 H6 2.0834 5.5203 8.9651 H 1 VABR 0.0000 + 21 H7 0.5655 5.1400 8.1267 H 1 VABR 0.0000 + 22 H8 1.4938 3.8468 8.9559 H 1 VABR 0.0000 + 23 H9 3.7804 2.2071 1.4373 H 1 VABR 0.0000 + 24 H10 2.1805 2.9965 1.3674 H 1 VABR 0.0000 + 25 H11 3.5131 3.7525 2.2399 H 1 VABR 0.0000 + 26 H12 1.1001 0.8319 2.3524 H 1 VABR 0.0000 + 27 H13 2.7056 0.0563 2.4468 H 1 VABR 0.0000 + 28 H14 1.6995 0.2066 3.8869 H 1 VABR 0.0000 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 1 11 1 + 4 1 15 1 + 5 2 3 1 + 6 2 13 1 + 7 2 16 1 + 8 3 4 1 + 9 3 12 1 + 10 3 17 1 + 11 4 5 1 + 12 4 11 1 + 13 4 18 1 + 14 5 14 2 + 15 5 19 1 + 16 6 10 1 + 17 6 20 1 + 18 6 21 1 + 19 6 22 1 + 20 7 8 1 + 21 7 9 1 + 22 7 12 1 + 23 7 13 1 + 24 8 23 1 + 25 8 24 1 + 26 8 25 1 + 27 9 26 1 + 28 9 27 1 + 29 9 28 1 +@SUBSTRUCTURE + 1 VABR 1 +@COMMENT +COMMENT 2-FORMYL-3,4-(O,O-ISOPROPYLIDENEDIOXY)-5-METHOXY-TETRAHYDRO +@MOLECULE +VACRUM + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.0975 12.3838 2.3854 N.3 1 VACR 0.3140 + 2 N2 0.8841 12.7475 3.6715 N.2 1 VACR -0.7068 + 3 C1 1.2277 14.0449 3.6189 C.2 1 VACR 0.5950 + 4 N3 1.6771 14.5008 2.4060 N.2 1 VACR -0.5653 + 5 C2 1.5955 13.4307 1.6404 C.2 1 VACR 0.2705 + 6 N4 1.1401 14.8982 4.7951 N.2 1 VACR 0.9610 + 7 O1 0.6763 14.4071 5.8375 O.3 1 VACR -0.5200 + 8 O2 1.5377 16.0679 4.6764 O.2 1 VACR -0.5200 + 9 N5 1.9238 13.2494 0.3320 N.3 1 VACR -0.4220 + 10 C3 3.0061 14.1144 -0.1629 C.3 1 VACR -0.0310 + 11 C4 1.5897 14.3855 -0.5423 C.3 1 VACR -0.0310 + 12 C5 0.8512 11.0210 1.9528 C.3 1 VACR 0.2556 + 13 C6 -0.3311 10.3511 2.6468 C.3 1 VACR 0.0610 + 14 C7 -1.6300 11.0659 2.3428 C.2 1 VACR 0.4480 + 15 O3 -1.7757 11.7422 1.3249 O.2 1 VACR -0.5700 + 16 C8 -2.7583 10.8632 3.3183 C.3 1 VACR 0.0610 + 17 H1 3.6482 13.6209 -0.8788 H 1 VACR 0.1000 + 18 H2 3.4880 14.7552 0.5642 H 1 VACR 0.1000 + 19 H3 1.2430 14.0766 -1.5186 H 1 VACR 0.1000 + 20 H4 1.0682 15.2141 -0.0805 H 1 VACR 0.1000 + 21 H6 1.7711 10.4639 2.1633 H 1 VACR 0.0000 + 22 H7 -0.4308 9.3165 2.3015 H 1 VACR 0.0000 + 23 H8 -0.1817 10.3306 3.7319 H 1 VACR 0.0000 + 24 H9 -3.0139 9.8019 3.3664 H 1 VACR 0.0000 + 25 H10 -3.6361 11.4259 2.9888 H 1 VACR 0.0000 + 26 H11 -2.4590 11.2253 4.3049 H 1 VACR 0.0000 + 27 H5 0.6997 11.0275 0.8681 H 1 VACR 0.0000 +@BOND + 1 1 12 1 + 2 1 5 am + 3 1 2 1 + 4 2 3 2 + 5 3 6 am + 6 3 4 am + 7 4 5 2 + 8 5 9 am + 9 6 8 2 + 10 6 7 1 + 11 9 11 1 + 12 9 10 1 + 13 10 18 1 + 14 10 17 1 + 15 10 11 1 + 16 11 20 1 + 17 11 19 1 + 18 12 27 1 + 19 12 21 1 + 20 12 13 1 + 21 13 23 1 + 22 13 22 1 + 23 13 14 1 + 24 14 16 1 + 25 14 15 2 + 26 16 26 1 + 27 16 25 1 + 28 16 24 1 +@SUBSTRUCTURE + 1 VACR 1 +@COMMENT +COMMENT 5-(1-AZIRIDINYL)-3-NITRO-1-(3-OXO-BUTYL)-1,2,4-TRIAZOLE (PO +@MOLECULE +VAJFAN + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.0462 -1.2230 10.4355 C.1 1 VAJF 0.4921 + 2 C2 2.8150 -0.6614 9.1511 C.2 1 VAJF 0.1660 + 3 C3 2.7919 -1.3704 8.0221 C.2 1 VAJF 0.1660 + 4 C4 2.9957 -2.7753 7.9637 C.1 1 VAJF 0.4921 + 5 C5 -0.4719 -0.4310 8.2862 C.2 1 VAJF -0.0090 + 6 C6 -0.6901 -0.3335 9.6636 C.2 1 VAJF -0.1500 + 7 C7 -1.0981 -1.4617 10.3753 C.2 1 VAJF -0.1500 + 8 C8 -1.3033 -2.6813 9.7164 C.2 1 VAJF -0.1435 + 9 C9 -1.1400 -2.7485 8.3263 C.2 1 VAJF -0.1500 + 10 C10 -0.7321 -1.6249 7.6072 C.2 1 VAJF -0.1500 + 11 C11 -1.7708 -3.8855 10.4822 C.3 1 VAJF 0.1435 + 12 N1 1.8239 0.8678 7.4237 N.3 1 VAJF -0.3180 + 13 N2 3.2311 -1.6817 11.4842 N.1 1 VAJF -0.5571 + 14 N3 3.1582 -3.9223 7.9163 N.1 1 VAJF -0.5571 + 15 S1 2.5548 1.0390 8.9621 S.3 1 VAJF -0.0110 + 16 S2 2.5061 -0.4566 6.5805 S.3 1 VAJF -0.0110 + 17 S3 0.1087 0.9957 7.3784 S.3 1 VAJF 1.4470 + 18 O1 -0.3395 0.8288 6.0086 O.3 1 VAJF -0.6500 + 19 O2 -0.2961 2.1649 8.1362 O.3 1 VAJF -0.6500 + 20 H1 -0.5469 0.6081 10.1907 H 1 VAJF 0.1500 + 21 H2 -1.2627 -1.3854 11.4492 H 1 VAJF 0.1500 + 22 H3 -1.3374 -3.6793 7.7965 H 1 VAJF 0.1500 + 23 H4 -0.6218 -1.6931 6.5264 H 1 VAJF 0.1500 + 24 H5 -1.3832 -3.8709 11.5063 H 1 VAJF 0.0000 + 25 H6 -1.4138 -4.8085 10.0133 H 1 VAJF 0.0000 + 26 H7 -2.8644 -3.9053 10.5170 H 1 VAJF 0.0000 +@BOND + 1 1 2 1 + 2 1 13 3 + 3 2 3 2 + 4 2 15 1 + 5 3 4 1 + 6 3 16 1 + 7 4 14 3 + 8 5 6 2 + 9 5 10 1 + 10 5 17 1 + 11 6 7 1 + 12 6 20 1 + 13 7 8 2 + 14 7 21 1 + 15 8 9 1 + 16 8 11 1 + 17 9 10 2 + 18 9 22 1 + 19 10 23 1 + 20 11 24 1 + 21 11 25 1 + 22 11 26 1 + 23 12 15 1 + 24 12 16 1 + 25 12 17 1 + 26 17 18 1 + 27 17 19 1 +@SUBSTRUCTURE + 1 VAJF 1 +@COMMENT +COMMENT 2-(P-TOLYLSULFONYL)-4,5-DICYANO-1,3,2-DITHIAZOLE +@MOLECULE +VALTEH + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S3 -0.4682 -3.1153 2.8072 S.2 1 VALT -0.7500 + 2 S4 -2.6744 -4.1834 1.0019 S.3 1 VALT -0.7500 + 3 C3 -1.2091 -3.4275 1.3307 C.2 1 VALT 0.7950 + 4 O2 -0.4880 -3.0818 0.2449 O.3 1 VALT -0.5750 + 5 C4 -0.7513 -1.7602 -0.2153 C.3 1 VALT 0.2800 + 6 H4 -0.1221 -1.5785 -1.0917 H 1 VALT 0.0000 + 7 H5 -0.4962 -1.0136 0.5436 H 1 VALT 0.0000 + 8 H6 -1.7961 -1.6430 -0.5201 H 1 VALT 0.0000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 5 1 + 5 5 8 1 + 6 5 7 1 + 7 5 6 1 +@SUBSTRUCTURE + 1 VALT 1 +@COMMENT +COMMENT POTASSIUM O-METHYLDITHIOCARBONATE POTASSIUM METHYLXANTHATE +@MOLECULE +VALWOU + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -3.2041 0.1999 8.6171 S.3 1 VALW -0.4600 + 2 S2 -3.0262 2.5287 6.7298 S.3 1 VALW 0.1123 + 3 O1 -3.2872 3.2134 8.0550 O.3 1 VALW -0.6000 + 4 O2 -1.5541 2.3398 6.4435 O.3 1 VALW -0.6000 + 5 C1 -3.6498 0.7930 6.9989 C.3 1 VALW 0.9977 + 6 F1 -5.0072 0.8218 6.8941 F 1 VALW -0.3400 + 7 F2 -3.2190 -0.0349 6.0148 F 1 VALW -0.3400 + 8 C2 -1.5176 -0.2065 8.2909 C.3 1 VALW 1.4130 + 9 F3 -1.0555 -0.0076 7.0443 F 1 VALW -0.3400 + 10 F4 -1.4197 -1.5634 8.4557 F 1 VALW -0.3400 + 11 N1 -0.5217 0.3612 9.3001 N.3 1 VALW -1.0120 + 12 C3 -0.8475 -0.1028 10.7071 C.3 1 VALW 0.5030 + 13 C4 0.2631 0.3441 11.6625 C.3 1 VALW 0.0000 + 14 C5 -0.4851 1.8901 9.2453 C.3 1 VALW 0.5030 + 15 C6 0.5153 2.3997 10.2936 C.3 1 VALW 0.0000 + 16 C7 0.8513 -0.1557 8.8803 C.3 1 VALW 0.5030 + 17 C8 1.9200 0.4078 9.8214 C.3 1 VALW 0.0000 + 18 C9 1.2739 1.2343 10.9352 C.3 1 VALW 0.0000 + 19 H1 -0.9413 -1.1944 10.7077 H 1 VALW 0.0000 + 20 H2 -1.7996 0.3412 11.0154 H 1 VALW 0.0000 + 21 H3 0.7656 -0.5355 12.0831 H 1 VALW 0.0000 + 22 H4 -0.1774 0.8803 12.5118 H 1 VALW 0.0000 + 23 H5 -1.4770 2.2803 9.4712 H 1 VALW 0.0000 + 24 H6 -0.1454 2.1848 8.2527 H 1 VALW 0.0000 + 25 H7 1.2153 3.0993 9.8208 H 1 VALW 0.0000 + 26 H8 -0.0165 2.9732 11.0629 H 1 VALW 0.0000 + 27 H9 1.0505 0.1556 7.8484 H 1 VALW 0.0000 + 28 H10 0.8360 -1.2507 8.9270 H 1 VALW 0.0000 + 29 H11 2.5068 -0.4158 10.2459 H 1 VALW 0.0000 + 30 H12 2.6256 1.0251 9.2518 H 1 VALW 0.0000 + 31 H13 2.0330 1.6041 11.6322 H 1 VALW 0.0000 +@BOND + 1 1 8 1 + 2 1 5 1 + 3 2 5 1 + 4 2 4 1 + 5 2 3 1 + 6 5 7 1 + 7 5 6 1 + 8 8 11 1 + 9 8 10 1 + 10 8 9 1 + 11 11 16 1 + 12 11 14 1 + 13 11 12 1 + 14 12 20 1 + 15 12 19 1 + 16 12 13 1 + 17 13 22 1 + 18 13 21 1 + 19 13 18 1 + 20 14 24 1 + 21 14 23 1 + 22 14 15 1 + 23 15 26 1 + 24 15 25 1 + 25 15 18 1 + 26 16 28 1 + 27 16 27 1 + 28 16 17 1 + 29 17 30 1 + 30 17 29 1 + 31 17 18 1 + 32 18 31 1 +@SUBSTRUCTURE + 1 VALW 1 +@COMMENT +COMMENT (QUINUCLIDINO-DIFLUOROMETHYLTHIO)-DIFLUOROMETHANESULFINATE +@MOLECULE +VAPZOB10 + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.0579 5.7957 13.0513 N.2 1 UNCH -0.3381 + 2 N2 4.1786 4.6964 13.8693 N.2 1 UNCH -0.3381 + 3 C1 4.8067 3.7500 13.1938 C.2 1 UNCH 0.0065 + 4 N3 5.0998 4.2077 11.9322 N.3 1 UNCH 0.5052 + 5 N4 5.7210 3.5239 10.9256 N.2 1 UNCH -0.6520 + 6 C2 5.8407 4.2347 9.8499 C.2 1 UNCH 0.3756 + 7 C3 5.3748 5.6287 9.6613 C.2 1 UNCH -0.1356 + 8 C4 4.7779 6.2490 10.6924 C.2 1 UNCH 0.1450 + 9 C5 4.6193 5.5010 11.8958 C.2 1 UNCH 0.1415 + 10 N5 4.3251 7.5547 10.6118 N.3 1 UNCH -0.9000 + 11 C6 5.1932 2.4006 13.6739 C.3 1 UNCH 0.4600 + 12 C7 6.3599 2.4522 14.6662 C.3 1 UNCH 0.2800 + 13 C8 5.9547 1.4041 15.6921 C.3 1 UNCH 0.2800 + 14 C9 4.4425 1.5577 15.7429 C.3 1 UNCH 0.2800 + 15 C10 3.9763 2.6892 16.6640 C.3 1 UNCH 0.2800 + 16 O1 7.6151 2.1341 14.0667 O.3 1 UNCH -0.6800 + 17 O2 6.3302 0.1096 15.1792 O.3 1 UNCH -0.6800 + 18 O3 4.0502 1.8493 14.3785 O.3 1 UNCH -0.5600 + 19 O4 2.5557 2.7936 16.6072 O.3 1 UNCH -0.6800 + 20 H1 6.3322 3.7856 8.9703 H 1 UNCH 0.0600 + 21 H2 5.5556 6.1016 8.7058 H 1 UNCH 0.1500 + 22 H3 3.9992 7.8324 9.6912 H 1 UNCH 0.4000 + 23 H4 3.6482 7.7646 11.3485 H 1 UNCH 0.4000 + 24 H5 5.4089 1.7248 12.8391 H 1 UNCH 0.0000 + 25 H6 6.4499 3.4372 15.1384 H 1 UNCH 0.0000 + 26 H7 6.4543 1.5279 16.6566 H 1 UNCH 0.0000 + 27 H8 3.9390 0.6246 16.0185 H 1 UNCH 0.0000 + 28 H9 4.3890 3.6609 16.3802 H 1 UNCH 0.0000 + 29 H10 4.2598 2.4834 17.7006 H 1 UNCH 0.0000 + 30 H11 7.7344 1.1689 14.1903 H 1 UNCH 0.4000 + 31 H12 5.5830 -0.2374 14.6543 H 1 UNCH 0.4000 + 32 H13 2.3449 2.9923 15.6729 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 9 2 + 3 2 3 2 + 4 3 4 am + 5 3 11 1 + 6 4 5 1 + 7 4 9 am + 8 5 6 2 + 9 6 7 1 + 10 6 20 1 + 11 7 8 2 + 12 7 21 1 + 13 8 9 1 + 14 8 10 1 + 15 10 22 1 + 16 10 23 1 + 17 11 12 1 + 18 11 18 1 + 19 11 24 1 + 20 12 13 1 + 21 12 16 1 + 22 12 25 1 + 23 13 14 1 + 24 13 17 1 + 25 13 26 1 + 26 14 15 1 + 27 14 18 1 + 28 14 27 1 + 29 15 19 1 + 30 15 28 1 + 31 15 29 1 + 32 16 30 1 + 33 17 31 1 + 34 19 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 8-AMINO-3-BETA-D-RIBOFURANOSYL-1,2,4-TRIAZOLO(4,3-B)PYRIDAZ +@MOLECULE +VASDOI + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.4044 2.0158 11.3041 C.2 1 VASD -0.1050 + 2 C2 1.6080 1.1513 12.3134 C.2 1 VASD -0.1238 + 3 C3 1.8895 -0.3027 12.0468 C.2 1 VASD 0.7056 + 4 O1 1.9356 -0.7367 10.7435 O.3 1 VASD -0.2120 + 5 C4 1.7276 0.1535 9.7551 C.2 1 VASD 0.0620 + 6 C5 1.7244 -0.0463 8.3661 C.2 1 VASD -0.1500 + 7 C6 1.4599 1.1967 7.8264 C.2 1 VASD -0.0400 + 8 O2 1.3054 2.1261 8.8179 O.3 1 VASD -0.2800 + 9 C7 1.4713 1.4790 10.0091 C.2 1 VASD 0.0950 + 10 C8 1.5710 1.5606 13.7524 C.3 1 VASD 0.1382 + 11 O3 2.0733 -1.0796 12.9800 O.2 1 VASD -0.5700 + 12 C9 1.3181 1.6932 6.4433 C.3 1 VASD 0.1800 + 13 H1 1.1990 3.0691 11.4489 H 1 VASD 0.1500 + 14 H2 1.8908 -0.9655 7.8236 H 1 VASD 0.1500 + 15 H3 1.3614 2.6297 13.8661 H 1 VASD 0.0000 + 16 H4 0.7897 1.0116 14.2882 H 1 VASD 0.0000 + 17 H5 2.5334 1.3591 14.2342 H 1 VASD 0.0000 + 18 H6 0.3224 2.1206 6.2905 H 1 VASD 0.0000 + 19 H7 2.0631 2.4675 6.2365 H 1 VASD 0.0000 + 20 H8 1.4569 0.8842 5.7196 H 1 VASD 0.0000 +@BOND + 1 1 2 2 + 2 1 9 1 + 3 1 13 1 + 4 2 3 1 + 5 2 10 1 + 6 3 4 1 + 7 3 11 2 + 8 4 5 1 + 9 5 6 1 + 10 5 9 2 + 11 6 7 2 + 12 6 14 1 + 13 7 8 1 + 14 7 12 1 + 15 8 9 1 + 16 10 15 1 + 17 10 16 1 + 18 10 17 1 + 19 12 18 1 + 20 12 19 1 + 21 12 20 1 +@SUBSTRUCTURE + 1 VASD 1 +@COMMENT +COMMENT 2,6-DIMETHYL-5H-FURO(3,2-B)PYRAN-5-ONE +@MOLECULE +VATKAC + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.6837 4.8763 1.4585 CL 1 VATK -0.1400 + 2 S1 0.2528 2.6150 -5.7387 S.3 1 VATK -0.2860 + 3 O1 2.5543 1.8881 1.4123 O.2 1 VATK -0.5700 + 4 O2 1.8449 0.2548 -0.7285 O.2 1 VATK -0.5700 + 5 N1 1.0362 1.7153 -3.2628 N.3 1 VATK 0.0476 + 6 N2 1.7959 5.7786 -1.3787 N.3 1 VATK -0.8691 + 7 C1 1.4731 3.5479 -2.1194 C.2 1 VATK -0.0460 + 8 C2 1.8472 4.4185 -1.0582 C.2 1 VATK 0.1460 + 9 C3 2.2075 3.8808 0.1263 C.2 1 VATK 0.1544 + 10 C4 2.2274 2.3902 0.3421 C.2 1 VATK 0.5556 + 11 C5 1.8287 1.4720 -0.8392 C.2 1 VATK 0.6550 + 12 C6 1.4615 2.1857 -2.0322 C.2 1 VATK -0.2366 + 13 C7 0.8057 2.7962 -4.1007 C.2 1 VATK -0.0956 + 14 C8 1.0604 3.9554 -3.3965 C.2 1 VATK -0.1810 + 15 C9 0.9463 5.4077 -3.7245 C.3 1 VATK 0.1810 + 16 C10 1.8466 6.2471 -2.7789 C.3 1 VATK 0.3691 + 17 C11 0.8695 0.3060 -3.5586 C.3 1 VATK 0.2556 + 18 C12 1.8103 2.8439 -6.6279 C.3 1 VATK 0.2300 + 19 H1 2.2672 6.3766 -0.7016 H 1 VATK 0.4000 + 20 H2 1.2213 5.6065 -4.7654 H 1 VATK 0.0000 + 21 H3 -0.0989 5.7124 -3.5904 H 1 VATK 0.0000 + 22 H4 1.5466 7.2994 -2.8205 H 1 VATK 0.0000 + 23 H5 2.8878 6.1893 -3.1200 H 1 VATK 0.0000 + 24 H6 0.1541 -0.1115 -2.8451 H 1 VATK 0.0000 + 25 H7 0.4926 0.1540 -4.5698 H 1 VATK 0.0000 + 26 H8 1.8437 -0.1802 -3.4606 H 1 VATK 0.0000 + 27 H9 2.2187 3.8407 -6.4411 H 1 VATK 0.0000 + 28 H10 2.5408 2.0909 -6.3191 H 1 VATK 0.0000 + 29 H11 1.6322 2.7367 -7.7011 H 1 VATK 0.0000 +@BOND + 1 1 9 1 + 2 2 13 1 + 3 2 18 1 + 4 3 10 2 + 5 4 11 2 + 6 5 12 1 + 7 5 13 1 + 8 5 17 1 + 9 6 8 1 + 10 6 16 1 + 11 6 19 1 + 12 7 8 1 + 13 7 12 2 + 14 7 14 1 + 15 8 9 2 + 16 9 10 1 + 17 10 11 1 + 18 11 12 1 + 19 13 14 2 + 20 14 15 1 + 21 15 16 1 + 22 15 20 1 + 23 15 21 1 + 24 16 22 1 + 25 16 23 1 + 26 17 24 1 + 27 17 25 1 + 28 17 26 1 + 29 18 27 1 + 30 18 28 1 + 31 18 29 1 +@SUBSTRUCTURE + 1 VATK 1 +@COMMENT +COMMENT BATZELLINE A METHANOL SOLVATE +@MOLECULE +VAWDUS + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.3643 4.8512 8.4631 P 1 VAWD 1.0782 + 2 O1 1.1212 3.4577 8.7540 O.3 1 VAWD -0.5512 + 3 O2 1.0179 6.0770 9.0241 O.3 1 VAWD -0.7000 + 4 O3 -1.4239 4.3441 10.8995 O.3 1 VAWD -0.6330 + 5 O4 -0.8952 4.5522 4.1952 O.3 1 VAWD -0.5200 + 6 O5 -2.5064 5.9084 4.8215 O.2 1 VAWD -0.5200 + 7 N1 -2.0610 4.4823 9.8095 N.2 1 VAWD 0.3370 + 8 N2 -1.5639 5.1421 5.0507 N.2 1 VAWD 0.8356 + 9 C1 -1.3883 4.6830 8.7024 C.2 1 VAWD -0.1174 + 10 C2 -2.0966 4.8194 7.3970 C.2 1 VAWD -0.1238 + 11 C3 -1.1803 4.9353 6.4267 C.2 1 VAWD 0.0662 + 12 C4 0.2747 4.8897 6.6775 C.3 1 VAWD 0.1382 + 13 C5 -3.5886 4.7710 7.3198 C.3 1 VAWD 0.1382 + 14 C6 1.4062 3.1373 10.1038 C.3 1 VAWD 0.2800 + 15 H1 -3.9630 4.6200 6.3043 H 1 VAWD 0.0000 + 16 H2 -3.9769 3.9326 7.9076 H 1 VAWD 0.0000 + 17 H3 -4.0187 5.6975 7.7125 H 1 VAWD 0.0000 + 18 H4 0.7357 3.9979 6.2416 H 1 VAWD 0.0000 + 19 H5 0.7831 5.7792 6.2923 H 1 VAWD 0.0000 + 20 H6 1.5918 4.0365 10.6973 H 1 VAWD 0.0000 + 21 H7 0.5709 2.5749 10.5272 H 1 VAWD 0.0000 + 22 H8 2.3000 2.5088 10.1302 H 1 VAWD 0.0000 + 23 H9 -3.0783 4.4173 9.8793 H 1 VAWD 0.2920 +@BOND + 1 1 12 1 + 2 1 9 1 + 3 1 3 1 + 4 1 2 1 + 5 2 14 1 + 6 4 7 1 + 7 5 8 1 + 8 6 8 2 + 9 7 23 1 + 10 7 9 2 + 11 8 11 1 + 12 9 10 1 + 13 10 13 1 + 14 10 11 2 + 15 11 12 1 + 16 12 19 1 + 17 12 18 1 + 18 13 17 1 + 19 13 16 1 + 20 13 15 1 + 21 14 22 1 + 22 14 21 1 + 23 14 20 1 +@SUBSTRUCTURE + 1 VAWD 1 +@COMMENT +COMMENT 1-METHOXY-2-OXIMINO-3-METHYL-4-NITRO-3-PHOSPHOLENE-1-OXIDE +@MOLECULE +VAWMOV + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.2657 7.8503 1.9758 N.3 1 UNCH 0.3140 + 2 C1 1.7247 6.2191 0.7815 C.2 1 UNCH 0.4530 + 3 C2 3.2985 7.5830 1.1289 C.2 1 UNCH 0.0365 + 4 O1 1.5998 3.7014 0.2723 O.3 1 UNCH -0.6500 + 5 N2 -0.5822 4.6749 1.0576 N.3 1 UNCH -0.9780 + 6 C3 0.8426 9.1841 3.5744 C.3 1 UNCH 0.2800 + 7 C4 2.3465 8.5016 5.2587 C.3 1 UNCH 0.2800 + 8 O2 3.1160 8.5536 4.0356 O.3 1 UNCH -0.5600 + 9 O3 -0.0321 8.7588 5.8112 O.3 1 UNCH -0.6800 + 10 N3 1.2441 6.9807 1.7941 N.2 1 UNCH -0.7068 + 11 N4 2.9872 6.5742 0.3515 N.2 1 UNCH -0.5653 + 12 S1 0.7924 4.8850 0.0799 S.3 1 UNCH 1.5010 + 13 O4 0.3501 5.3621 -1.2099 O.3 1 UNCH -0.6500 + 14 C5 2.2234 8.9192 2.9608 C.3 1 UNCH 0.5356 + 15 C6 0.8954 8.3246 4.8269 C.3 1 UNCH 0.2800 + 16 C7 2.8334 7.3617 6.1524 C.3 1 UNCH 0.2800 + 17 O5 0.6962 10.5608 3.9864 O.3 1 UNCH -0.6800 + 18 O6 4.1288 7.6687 6.6662 O.3 1 UNCH -0.6800 + 19 H1 4.2268 8.1395 1.1256 H 1 UNCH 0.1500 + 20 H2 -0.7660 5.5389 1.5719 H 1 UNCH 0.4200 + 21 H3 -0.4198 3.8798 1.6758 H 1 UNCH 0.4200 + 22 H4 2.6233 9.8169 2.4759 H 1 UNCH 0.0000 + 23 H5 -0.0135 8.9537 2.9338 H 1 UNCH 0.0000 + 24 H6 0.6866 7.2768 4.5829 H 1 UNCH 0.0000 + 25 H7 2.4970 9.4563 5.7787 H 1 UNCH 0.0000 + 26 H8 2.9141 6.4300 5.5829 H 1 UNCH 0.0000 + 27 H9 2.1599 7.2145 7.0021 H 1 UNCH 0.0000 + 28 H10 0.5096 11.0911 3.1896 H 1 UNCH 0.4000 + 29 H11 -0.0497 9.7368 5.7448 H 1 UNCH 0.4000 + 30 H12 4.4271 6.8937 7.1725 H 1 UNCH 0.4000 +@BOND + 1 1 3 am + 2 1 10 1 + 3 1 14 1 + 4 2 10 2 + 5 2 11 am + 6 2 12 1 + 7 3 11 2 + 8 3 19 1 + 9 4 12 1 + 10 5 12 1 + 11 5 20 1 + 12 5 21 1 + 13 6 14 1 + 14 6 15 1 + 15 6 17 1 + 16 6 23 1 + 17 7 8 1 + 18 7 15 1 + 19 7 16 1 + 20 7 25 1 + 21 8 14 1 + 22 9 15 1 + 23 9 29 1 + 24 12 13 1 + 25 14 22 1 + 26 15 24 1 + 27 16 18 1 + 28 16 26 1 + 29 16 27 1 + 30 17 28 1 + 31 18 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1BETA-D-RIBOFURANOSYL-1,2,4-TRIAZOLE-3-SULFONAMIDE +@MOLECULE +VAWWAR + 33 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 4.1017 2.8927 11.4672 BR 1 VAWW -0.2300 + 2 O1 5.0147 0.1570 9.4157 O.3 1 VAWW -0.5200 + 3 O2 5.3171 -1.0440 7.6136 O.2 1 VAWW -0.5200 + 4 O3 8.4001 -1.4158 8.0880 O.3 1 VAWW -0.5200 + 5 O4 8.1328 -0.0828 6.3540 O.2 1 VAWW -0.5200 + 6 N1 5.6995 -0.2118 8.4483 N.2 1 VAWW 0.8356 + 7 N2 7.8908 -0.4421 7.5156 N.2 1 VAWW 0.8356 + 8 N3 6.5047 2.4419 9.4950 N.3 1 VAWW -0.8691 + 9 C1 7.0022 0.3692 8.2823 C.2 1 VAWW 0.4088 + 10 C2 7.3714 1.5821 8.7777 C.2 1 VAWW -0.0382 + 11 C3 8.7893 2.0771 8.5323 C.3 1 VAWW 0.1382 + 12 C4 6.6931 3.6903 10.2820 C.3 1 VAWW 0.3691 + 13 C5 5.2488 4.3009 10.6020 C.3 1 VAWW 0.2300 + 14 C6 5.2500 5.4744 11.5967 C.3 1 VAWW 0.0000 + 15 C7 4.4836 4.7158 9.3313 C.3 1 VAWW 0.0000 + 16 C8 7.5078 4.7281 9.4809 C.3 1 VAWW 0.0000 + 17 C9 7.4586 3.3475 11.5778 C.3 1 VAWW 0.0000 + 18 H1 9.4675 1.3232 8.1236 H 1 VAWW 0.0000 + 19 H2 9.2626 2.3945 9.4633 H 1 VAWW 0.0000 + 20 H3 8.7793 2.9093 7.8218 H 1 VAWW 0.0000 + 21 H4 4.2314 5.8388 11.7802 H 1 VAWW 0.0000 + 22 H5 5.8253 6.3259 11.2225 H 1 VAWW 0.0000 + 23 H6 5.6585 5.1912 12.5721 H 1 VAWW 0.0000 + 24 H7 4.4062 3.8926 8.6127 H 1 VAWW 0.0000 + 25 H8 3.4605 5.0351 9.5644 H 1 VAWW 0.0000 + 26 H9 4.9716 5.5572 8.8286 H 1 VAWW 0.0000 + 27 H10 7.1741 4.7885 8.4394 H 1 VAWW 0.0000 + 28 H11 7.4358 5.7294 9.9152 H 1 VAWW 0.0000 + 29 H12 8.5767 4.4990 9.4720 H 1 VAWW 0.0000 + 30 H13 8.4331 2.8968 11.3693 H 1 VAWW 0.0000 + 31 H14 6.9180 2.6273 12.1993 H 1 VAWW 0.0000 + 32 H15 7.6531 4.2410 12.1796 H 1 VAWW 0.0000 + 33 H16 5.6422 1.9587 9.8016 H 1 VAWW 0.4000 +@BOND + 1 1 13 1 + 2 2 6 1 + 3 3 6 2 + 4 4 7 1 + 5 5 7 2 + 6 6 9 1 + 7 7 9 1 + 8 8 33 1 + 9 8 12 1 + 10 8 10 1 + 11 9 10 2 + 12 10 11 1 + 13 11 20 1 + 14 11 19 1 + 15 11 18 1 + 16 12 17 1 + 17 12 16 1 + 18 12 13 1 + 19 13 15 1 + 20 13 14 1 + 21 14 23 1 + 22 14 22 1 + 23 14 21 1 + 24 15 26 1 + 25 15 25 1 + 26 15 24 1 + 27 16 29 1 + 28 16 28 1 + 29 16 27 1 + 30 17 32 1 + 31 17 31 1 + 32 17 30 1 +@SUBSTRUCTURE + 1 VAWW 1 +@COMMENT +COMMENT N-(2,2-DINITRO-1-METHYLETHENYL)-2-BROMO-1,1,2-TRIMETHYLPROP +@MOLECULE +VAYKUB + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N4 6.2138 10.9567 0.8083 N.2 1 VAYK -0.1790 + 2 C9 6.1986 11.1174 2.1368 C.2 1 VAYK 0.5275 + 3 N5 5.1997 11.7521 2.7882 N.2 1 VAYK -0.6200 + 4 C10 4.1829 12.2231 2.0494 C.2 1 VAYK 0.4100 + 5 C11 4.1379 12.0900 0.6673 C.2 1 VAYK -0.1435 + 6 C12 5.2070 11.4322 0.0661 C.2 1 VAYK 0.2110 + 7 C13 7.3521 10.5898 2.9277 C.3 1 VAYK 0.1435 + 8 N6 3.2081 12.9108 2.7527 N.3 1 VAYK -0.9000 + 9 C14 3.0224 12.6796 -0.1504 C.3 1 VAYK 0.4235 + 10 O2 3.1527 12.2487 -1.5061 O.3 1 VAYK -0.5600 + 11 C15 2.1197 12.7950 -2.3310 C.3 1 VAYK 0.2800 + 12 C16 2.3261 12.2946 -3.7466 C.3 1 VAYK 0.0000 + 13 H14 6.9962 10.4798 0.3654 H 1 VAYK 0.4570 + 14 H15 2.2602 12.5822 2.5983 H 1 VAYK 0.4000 + 15 H16 3.4305 12.8965 3.7476 H 1 VAYK 0.4000 + 16 H17 5.2913 11.2788 -1.0052 H 1 VAYK 0.1500 + 17 H18 8.2525 11.1673 2.6994 H 1 VAYK 0.0000 + 18 H19 7.1550 10.6597 4.0017 H 1 VAYK 0.0000 + 19 H20 7.5302 9.5400 2.6768 H 1 VAYK 0.0000 + 20 H21 2.0560 12.3373 0.2368 H 1 VAYK 0.0000 + 21 H22 3.0793 13.7734 -0.1091 H 1 VAYK 0.0000 + 22 H23 1.1413 12.4719 -1.9593 H 1 VAYK 0.0000 + 23 H24 2.1712 13.8890 -2.3103 H 1 VAYK 0.0000 + 24 H25 1.5563 12.6884 -4.4160 H 1 VAYK 0.0000 + 25 H26 2.2952 11.2004 -3.7769 H 1 VAYK 0.0000 + 26 H27 3.3096 12.5958 -4.1223 H 1 VAYK 0.0000 +@BOND + 1 1 13 1 + 2 1 6 2 + 3 1 2 am + 4 2 7 1 + 5 2 3 2 + 6 3 4 1 + 7 4 8 1 + 8 4 5 2 + 9 5 9 1 + 10 5 6 1 + 11 6 16 1 + 12 7 19 1 + 13 7 18 1 + 14 7 17 1 + 15 8 15 1 + 16 8 14 1 + 17 9 21 1 + 18 9 20 1 + 19 9 10 1 + 20 10 11 1 + 21 11 23 1 + 22 11 22 1 + 23 11 12 1 + 24 12 26 1 + 25 12 25 1 + 26 12 24 1 +@SUBSTRUCTURE + 1 VAYK 1 +@COMMENT +COMMENT 2-METHYL-4-AMINO-5-ETHOXYMETHYLPYRIMIDINE MONOHYDROGEN BROM +@MOLECULE +VAZHUZ + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.1432 5.5827 4.4315 C.2 1 UNCH 0.0862 + 2 C2 2.8458 5.7960 3.2285 C.2 1 UNCH -0.1500 + 3 C3 2.3173 6.6246 2.2386 C.2 1 UNCH 0.0825 + 4 C4 1.0769 7.2319 2.4605 C.2 1 UNCH 0.0825 + 5 C5 0.3639 7.0242 3.6335 C.2 1 UNCH -0.1500 + 6 C6 0.8954 6.1929 4.6203 C.2 1 UNCH -0.1500 + 7 C7 2.7541 4.6641 5.4396 C.2 1 UNCH 0.5688 + 8 C8 4.1511 6.3000 0.7593 C.3 1 UNCH 0.2800 + 9 O1 3.5362 3.8042 5.0278 O.2 1 UNCH -0.5700 + 10 O2 2.8979 6.9181 1.0316 O.3 1 UNCH -0.3625 + 11 O3 0.5307 8.0500 1.5096 O.3 1 UNCH -0.5325 + 12 C9 2.4520 4.7852 6.8532 C.2 1 UNCH 0.1015 + 13 C10 2.4829 4.3020 9.0214 C.2 1 UNCH -0.3016 + 14 C11 1.7524 5.4390 8.7787 C.2 1 UNCH 0.0772 + 15 N1 2.9270 3.9003 7.7942 N.3 1 UNCH 0.0332 + 16 N2 1.7418 5.7323 7.4388 N.2 1 UNCH -0.5653 + 17 H1 3.8040 5.3028 3.0945 H 1 UNCH 0.1500 + 18 H2 -0.6002 7.5034 3.7777 H 1 UNCH 0.1500 + 19 H3 0.3142 6.0284 5.5240 H 1 UNCH 0.1500 + 20 H4 4.4738 6.6244 -0.2347 H 1 UNCH 0.0000 + 21 H5 4.0571 5.2092 0.7396 H 1 UNCH 0.0000 + 22 H6 4.9127 6.6201 1.4778 H 1 UNCH 0.0000 + 23 H7 1.1808 8.0604 0.7802 H 1 UNCH 0.4500 + 24 H8 2.7213 3.7655 9.9286 H 1 UNCH 0.1500 + 25 H9 1.2357 6.0638 9.4963 H 1 UNCH 0.1500 + 26 H10 3.5092 3.1008 7.5796 H 1 UNCH 0.2700 +@BOND + 1 1 2 1 + 2 1 6 2 + 3 1 7 1 + 4 2 3 2 + 5 2 17 1 + 6 3 4 1 + 7 3 10 1 + 8 4 5 2 + 9 4 11 1 + 10 5 6 1 + 11 5 18 1 + 12 6 19 1 + 13 7 9 2 + 14 7 12 1 + 15 8 10 1 + 16 8 20 1 + 17 8 21 1 + 18 8 22 1 + 19 11 23 1 + 20 12 15 am + 21 12 16 2 + 22 13 14 2 + 23 13 15 1 + 24 13 24 1 + 25 14 16 1 + 26 14 25 1 + 27 15 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-VANILLOYL-IMIDAZOLE (AT 173 DEG.K) +@MOLECULE +VECSAX + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.2011 0.1191 9.8980 S.3 1 UNCH -0.2870 + 2 S2 0.0777 -0.3014 13.0108 S.3 1 UNCH -0.3000 + 3 S3 2.6379 -3.6751 11.8182 S.2 1 UNCH -0.3800 + 4 S4 3.9125 -1.0565 12.6670 S.3 1 UNCH -0.3710 + 5 S5 3.1346 0.1756 8.9630 S.3 1 UNCH -0.4470 + 6 S6 1.4282 -2.2818 8.3295 S.3 1 UNCH -0.4470 + 7 C1 0.7461 -0.5122 11.4168 C.2 1 UNCH 0.1400 + 8 C2 1.7826 -1.2405 10.9741 C.2 1 UNCH -0.2090 + 9 C3 1.6904 -0.8852 9.5102 C.3 1 UNCH 0.7890 + 10 C4 -0.0440 1.5020 13.0261 C.3 1 UNCH 0.2300 + 11 H1 -0.3488 1.8293 14.0239 H 1 UNCH 0.0000 + 12 H2 -0.7939 1.8496 12.3103 H 1 UNCH 0.0000 + 13 H3 0.9224 1.9592 12.7951 H 1 UNCH 0.0000 + 14 C5 2.7430 -2.0111 11.7743 C.2 1 UNCH 0.5920 + 15 C6 5.4389 -1.5951 11.8647 C.3 1 UNCH 0.2300 + 16 H4 6.2648 -0.9675 12.2104 H 1 UNCH 0.0000 + 17 H5 5.3634 -1.4988 10.7786 H 1 UNCH 0.0000 + 18 H6 5.6680 -2.6326 12.1213 H 1 UNCH 0.0000 + 19 C7 2.4720 0.8001 7.4020 C.3 1 UNCH 0.2300 + 20 H7 3.1990 1.4932 6.9688 H 1 UNCH 0.0000 + 21 H8 1.5384 1.3469 7.5511 H 1 UNCH 0.0000 + 22 H9 2.3128 -0.0061 6.6826 H 1 UNCH 0.0000 + 23 C8 -0.1022 -3.0048 8.9554 C.3 1 UNCH 0.2300 + 24 H10 -0.2750 -3.9533 8.4386 H 1 UNCH 0.0000 + 25 H11 -0.9555 -2.3551 8.7454 H 1 UNCH 0.0000 + 26 H12 -0.0551 -3.2125 10.0258 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 1 9 1 + 3 2 7 1 + 4 2 10 1 + 5 3 14 2 + 6 4 14 1 + 7 4 15 1 + 8 5 9 1 + 9 5 19 1 + 10 6 9 1 + 11 6 23 1 + 12 7 8 2 + 13 8 9 1 + 14 8 14 1 + 15 10 11 1 + 16 10 12 1 + 17 10 13 1 + 18 15 16 1 + 19 15 17 1 + 20 15 18 1 + 21 19 20 1 + 22 19 21 1 + 23 19 22 1 + 24 23 24 1 + 25 23 25 1 + 26 23 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4,4-TRIS(METHYLTHIO)-3-(METHYLTHIO(THIO)CARBONYL)-2-THIET +@MOLECULE +VEDTED + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.6994 1.2861 5.6234 S.3 1 UNCH 1.6260 + 2 N1 0.8960 1.3582 4.0103 N.2 1 UNCH -0.6380 + 3 C1 2.0789 1.4689 3.4884 C.2 1 UNCH 0.5850 + 4 N2 4.5868 1.4699 3.9968 N.3 1 UNCH 0.0476 + 5 C2 5.2953 1.6785 5.1493 C.2 1 UNCH 0.0365 + 6 N3 4.5010 1.8839 6.1758 N.2 1 UNCH -0.5653 + 7 N4 2.0703 1.9138 6.3918 N.3 1 UNCH -0.6387 + 8 C3 3.2389 1.7909 5.6645 C.2 1 UNCH 0.3722 + 9 C4 3.2548 1.5734 4.3070 C.2 1 UNCH -0.2366 + 10 O1 0.6213 -0.1141 5.9949 O.3 1 UNCH -0.6500 + 11 O2 -0.3989 2.1681 5.9691 O.3 1 UNCH -0.6500 + 12 N5 2.1259 1.5107 2.1167 N.3 1 UNCH -0.8500 + 13 C5 5.1681 1.1368 2.7208 C.3 1 UNCH 0.2556 + 14 C6 2.0935 1.8564 7.8534 C.3 1 UNCH 0.3557 + 15 H1 6.3776 1.6615 5.1881 H 1 UNCH 0.1500 + 16 H2 2.7116 2.2473 1.7412 H 1 UNCH 0.4000 + 17 H3 1.1850 1.5781 1.7342 H 1 UNCH 0.4000 + 18 H4 6.2323 0.9214 2.8496 H 1 UNCH 0.0000 + 19 H5 5.0445 1.9911 2.0511 H 1 UNCH 0.0000 + 20 H6 4.6667 0.2511 2.3233 H 1 UNCH 0.0000 + 21 H7 2.4165 0.8694 8.1985 H 1 UNCH 0.0000 + 22 H8 1.1061 2.0736 8.2721 H 1 UNCH 0.0000 + 23 H9 2.7800 2.6115 8.2505 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 10 1 + 4 1 11 1 + 5 2 3 2 + 6 3 9 1 + 7 3 12 am + 8 4 5 am + 9 4 9 1 + 10 4 13 1 + 11 5 6 2 + 12 5 15 1 + 13 6 8 1 + 14 7 8 1 + 15 7 14 1 + 16 8 9 2 + 17 12 16 1 + 18 12 17 1 + 19 13 18 1 + 20 13 19 1 + 21 13 20 1 + 22 14 21 1 + 23 14 22 1 + 24 14 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-AMINO-1,5-DIMETHYLIMIDAZO(4,5-C)-1,2,6-THIADIAZINE 2,2-DI +@MOLECULE +VEHCOA + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.1704 1.0340 7.2321 N.3 1 UNCH 0.2996 + 2 N2 -0.9432 1.3509 6.1852 N.2 1 UNCH -0.7068 + 3 C1 -1.4559 2.5348 6.5151 C.2 1 UNCH 0.1388 + 4 C2 -1.0111 2.9778 7.7760 C.2 1 UNCH 0.0790 + 5 N3 -1.4003 4.2207 8.3888 N.2 1 UNCH 0.9610 + 6 O1 -0.9359 4.4898 9.5018 O.3 1 UNCH -0.5200 + 7 O2 -2.1808 4.9345 7.7457 O.2 1 UNCH -0.5200 + 8 C3 -0.1544 1.9732 8.2492 C.2 1 UNCH -0.4256 + 9 SI1 0.8769 1.7134 9.8183 SI 1 UNCH 0.5155 + 10 C4 2.1056 3.0930 9.8839 C.3 1 UNCH -0.0805 + 11 C5 1.7263 0.0695 9.6055 C.3 1 UNCH -0.0805 + 12 C6 -0.3091 1.6704 11.2355 C.3 1 UNCH -0.0805 + 13 H1 0.3294 0.1499 7.1946 H 1 UNCH 0.2700 + 14 H2 -2.1317 3.0268 5.8256 H 1 UNCH 0.1500 + 15 H3 1.6278 4.0670 10.0177 H 1 UNCH 0.0000 + 16 H4 2.7009 3.1379 8.9664 H 1 UNCH 0.0000 + 17 H5 2.7995 2.9539 10.7190 H 1 UNCH 0.0000 + 18 H6 2.3478 -0.1569 10.4775 H 1 UNCH 0.0000 + 19 H7 2.3763 0.0683 8.7250 H 1 UNCH 0.0000 + 20 H8 1.0005 -0.7421 9.4951 H 1 UNCH 0.0000 + 21 H9 0.2107 1.4288 12.1681 H 1 UNCH 0.0000 + 22 H10 -1.0814 0.9097 11.0835 H 1 UNCH 0.0000 + 23 H11 -0.8124 2.6295 11.3836 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 13 1 + 4 2 3 2 + 5 3 4 1 + 6 3 14 1 + 7 4 5 1 + 8 4 8 2 + 9 5 6 1 + 10 5 7 2 + 11 8 9 1 + 12 9 10 1 + 13 9 11 1 + 14 9 12 1 + 15 10 15 1 + 16 10 16 1 + 17 10 17 1 + 18 11 18 1 + 19 11 19 1 + 20 11 20 1 + 21 12 21 1 + 22 12 22 1 + 23 12 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-NITRO-5-(TRIMETHYLSILYL)PYRAZOLE +@MOLECULE +VEHZOX + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.8671 1.8425 10.1011 CL 1 UNCH -0.2900 + 2 S1 1.6282 3.2140 5.6574 S.3 1 UNCH 1.5050 + 3 O1 4.3790 2.8500 6.5027 O.3 1 UNCH -0.2267 + 4 O2 6.5208 4.1546 2.6669 O.3 1 UNCH -0.5600 + 5 O3 0.4169 2.5135 5.2822 O.3 1 UNCH -0.6500 + 6 O4 1.6580 4.6633 5.6681 O.3 1 UNCH -0.6500 + 7 N1 2.8347 2.6830 4.7408 N.2 1 UNCH -0.6380 + 8 N2 5.1380 2.3470 4.4033 N.3 1 UNCH -0.7882 + 9 C1 4.0388 2.6418 5.1935 C.2 1 UNCH 0.6500 + 10 C2 2.1003 2.6563 7.2070 C.2 1 UNCH -0.1670 + 11 C3 3.4049 2.5975 7.4912 C.2 1 UNCH -0.0615 + 12 C4 4.0213 2.2520 8.8179 C.3 1 UNCH 0.4282 + 13 C5 4.9685 2.2748 2.9359 C.3 1 UNCH 0.3691 + 14 C6 5.2098 3.6644 2.3267 C.3 1 UNCH 0.2800 + 15 C7 6.6895 4.2271 4.0936 C.3 1 UNCH 0.2800 + 16 C8 6.4828 2.8501 4.7453 C.3 1 UNCH 0.3691 + 17 H1 1.3070 2.4583 7.9106 H 1 UNCH 0.1500 + 18 H2 4.6879 1.3917 8.7007 H 1 UNCH 0.0000 + 19 H3 4.6180 3.0964 9.1770 H 1 UNCH 0.0000 + 20 H4 3.9825 1.8903 2.6543 H 1 UNCH 0.0000 + 21 H5 5.7103 1.5700 2.5407 H 1 UNCH 0.0000 + 22 H6 5.1516 3.6088 1.2353 H 1 UNCH 0.0000 + 23 H7 4.4611 4.3883 2.6691 H 1 UNCH 0.0000 + 24 H8 5.9893 4.9681 4.4969 H 1 UNCH 0.0000 + 25 H9 7.7061 4.5823 4.2880 H 1 UNCH 0.0000 + 26 H10 7.2231 2.1450 4.3477 H 1 UNCH 0.0000 + 27 H11 6.6468 2.9065 5.8259 H 1 UNCH 0.0000 +@BOND + 1 1 12 1 + 2 2 5 1 + 3 2 6 1 + 4 2 7 1 + 5 2 10 1 + 6 3 9 1 + 7 3 11 1 + 8 4 14 1 + 9 4 15 1 + 10 7 9 2 + 11 8 9 am + 12 8 13 1 + 13 8 16 1 + 14 10 11 2 + 15 10 17 1 + 16 11 12 1 + 17 12 18 1 + 18 12 19 1 + 19 13 14 1 + 20 13 20 1 + 21 13 21 1 + 22 14 22 1 + 23 14 23 1 + 24 15 16 1 + 25 15 24 1 + 26 15 25 1 + 27 16 26 1 + 28 16 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6-(CHLOROMETHYL)-2-(4-MORPHOLINYL)-1,4,3-OXATHIAZIN-4,4-DIO +@MOLECULE +VEJWOW + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.4593 2.7451 8.1613 S.3 1 UNCH -0.0800 + 2 C1 0.5389 2.3504 6.5227 C.2 1 UNCH 0.1640 + 3 C2 1.7134 1.7434 6.1640 C.2 1 UNCH 0.1230 + 4 C3 2.5822 1.6027 7.2955 C.2 1 UNCH 0.1230 + 5 C4 2.0356 2.1104 8.4736 C.2 1 UNCH -0.1400 + 6 C5 2.6493 2.1479 9.8790 C.3 1 UNCH 0.5920 + 7 C6 3.0942 0.7605 10.3522 C.2 1 UNCH 0.6590 + 8 O1 2.3048 -0.2341 9.8369 O.3 1 UNCH -0.4300 + 9 C7 2.6598 -1.5513 10.2644 C.3 1 UNCH 0.2800 + 10 O2 4.0033 0.5458 11.1485 O.2 1 UNCH -0.5700 + 11 C8 1.7218 2.7846 10.9184 C.2 1 UNCH 0.6590 + 12 O3 0.9517 1.8432 11.5477 O.3 1 UNCH -0.4300 + 13 C9 0.0365 2.3743 12.5100 C.3 1 UNCH 0.2800 + 14 O4 1.6103 3.9881 11.1331 O.2 1 UNCH -0.5700 + 15 CL1 4.1309 3.2024 9.7916 CL 1 UNCH -0.2900 + 16 CL2 -0.8068 2.7287 5.5184 CL 1 UNCH -0.1240 + 17 CL3 2.1049 1.2119 4.5796 CL 1 UNCH -0.1230 + 18 CL4 4.1347 0.8655 7.1748 CL 1 UNCH -0.1230 + 19 H1 1.9850 -2.2585 9.7744 H 1 UNCH 0.0000 + 20 H2 3.6858 -1.7878 9.9659 H 1 UNCH 0.0000 + 21 H3 2.5363 -1.6468 11.3475 H 1 UNCH 0.0000 + 22 H4 0.5765 2.9036 13.3011 H 1 UNCH 0.0000 + 23 H5 -0.6882 3.0341 12.0232 H 1 UNCH 0.0000 + 24 H6 -0.5040 1.5369 12.9596 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 16 1 + 5 3 4 1 + 6 3 17 1 + 7 4 5 2 + 8 4 18 1 + 9 5 6 1 + 10 6 7 1 + 11 6 11 1 + 12 6 15 1 + 13 7 8 1 + 14 7 10 2 + 15 8 9 1 + 16 9 19 1 + 17 9 20 1 + 18 9 21 1 + 19 11 12 1 + 20 11 14 2 + 21 12 13 1 + 22 13 22 1 + 23 13 23 1 + 24 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DIMETHYL 2-CHLORO-2-(3,4,5-TRICHLOROTHIEN-2-YL)MALONATE +@MOLECULE +VEKMON + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.0445 6.6458 8.4340 C.2 1 VEKM 0.2110 + 2 C2 5.5398 5.7568 7.4813 C.2 1 VEKM -0.1500 + 3 C3 6.4725 6.1551 6.5233 C.2 1 VEKM 0.1000 + 4 C4 6.8539 7.4964 6.5867 C.2 1 VEKM -0.1500 + 5 C5 6.3392 8.3631 7.5523 C.2 1 VEKM 0.2110 + 6 C6 4.8792 8.8037 9.4920 C.2 1 VEKM 0.9020 + 7 C7 5.3266 10.2326 9.5111 C.3 1 VEKM 0.0610 + 8 C8 8.1083 5.6653 4.7244 C.3 1 VEKM 0.3691 + 9 C9 6.6830 3.8519 5.6281 C.3 1 VEKM 0.3691 + 10 N1 5.4411 7.9428 8.4725 N.2 1 VEKM -0.1150 + 11 N2 6.9558 5.2912 5.5505 N.3 1 VEKM -0.8382 + 12 O1 4.0763 8.3225 10.2781 O.2 1 VEKM -0.5700 + 13 H1 4.3177 6.3109 9.1722 H 1 VEKM 0.1500 + 14 H2 5.1651 4.7366 7.5133 H 1 VEKM 0.1500 + 15 H3 7.5641 7.9096 5.8743 H 1 VEKM 0.1500 + 16 H4 6.6636 9.3989 7.5641 H 1 VEKM 0.1500 + 17 H5 4.8191 10.7529 10.3293 H 1 VEKM 0.0000 + 18 H6 6.4030 10.2915 9.6895 H 1 VEKM 0.0000 + 19 H7 5.0551 10.7284 8.5760 H 1 VEKM 0.0000 + 20 H8 7.8944 6.5646 4.1370 H 1 VEKM 0.0000 + 21 H9 8.9930 5.8361 5.3474 H 1 VEKM 0.0000 + 22 H10 8.3594 4.8819 4.0008 H 1 VEKM 0.0000 + 23 H11 7.1271 3.4214 6.5322 H 1 VEKM 0.0000 + 24 H12 5.6055 3.6551 5.6188 H 1 VEKM 0.0000 + 25 H13 7.0966 3.3156 4.7670 H 1 VEKM 0.0000 +@BOND + 1 1 13 1 + 2 1 10 1 + 3 1 2 2 + 4 2 14 1 + 5 2 3 1 + 6 3 11 1 + 7 3 4 2 + 8 4 15 1 + 9 4 5 1 + 10 5 16 1 + 11 5 10 2 + 12 6 12 2 + 13 6 10 am + 14 6 7 1 + 15 7 19 1 + 16 7 18 1 + 17 7 17 1 + 18 8 22 1 + 19 8 21 1 + 20 8 20 1 + 21 8 11 1 + 22 9 25 1 + 23 9 24 1 + 24 9 23 1 + 25 9 11 1 +@SUBSTRUCTURE + 1 VEKM 1 +@COMMENT +COMMENT 1-ACETYL-4-DIMETHYLAMINOPYRIDINIUM DIMESYLAMIDE (AT -90 DEG +@MOLECULE +VENYUI + 24 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.7129 3.2790 6.9845 C.3 1 UNCH -0.0600 + 2 C2 5.2772 1.9647 6.4769 C.3 1 UNCH -0.0600 + 3 C3 4.1488 1.9646 7.4920 C.3 1 UNCH -0.0600 + 4 C4 5.5539 4.0798 7.9193 C.2 1 UNCH -0.0800 + 5 C5 5.5538 5.4243 7.9193 C.2 1 UNCH -0.3000 + 6 C6 6.6337 1.5643 6.9479 C.2 1 UNCH -0.0800 + 7 C7 7.4994 0.8921 6.1691 C.2 1 UNCH -0.3000 + 8 H1 4.0952 3.8482 6.2978 H 1 UNCH 0.1000 + 9 H2 5.0258 1.6801 5.4606 H 1 UNCH 0.1000 + 10 H3 3.1647 1.6800 7.1350 H 1 UNCH 0.1000 + 11 H4 4.9341 5.9880 7.2305 H 1 UNCH 0.1500 + 12 H5 7.2426 0.6103 5.1537 H 1 UNCH 0.1500 + 13 H6 8.4820 0.6103 6.5315 H 1 UNCH 0.1500 + 14 C6F 4.4743 1.5642 8.8906 C.2 1 UNCH -0.0800 + 15 C1F 6.3949 3.2791 8.8541 C.3 1 UNCH -0.0600 + 16 H4F 6.1736 5.9880 8.6082 H 1 UNCH 0.1500 + 17 C3F 6.9592 1.9647 8.3465 C.3 1 UNCH -0.0600 + 18 C2F 5.8308 1.9646 9.3616 C.3 1 UNCH -0.0600 + 19 C7F 3.6087 0.8919 9.6693 C.2 1 UNCH -0.3000 + 20 H1F 7.0127 3.8482 9.5407 H 1 UNCH 0.1000 + 21 H3F 7.9433 1.6801 8.7035 H 1 UNCH 0.1000 + 22 H2F 6.0821 1.6800 10.3779 H 1 UNCH 0.1000 + 23 H5F 3.8655 0.6100 10.6847 H 1 UNCH 0.1500 + 24 H6F 2.6261 0.6100 9.3070 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 8 1 + 5 2 3 1 + 6 2 6 1 + 7 2 9 1 + 8 3 10 1 + 9 3 14 1 + 10 4 5 2 + 11 4 15 1 + 12 5 11 1 + 13 5 16 1 + 14 6 7 2 + 15 6 17 1 + 16 7 12 1 + 17 7 13 1 + 18 14 18 1 + 19 14 19 2 + 20 15 17 1 + 21 15 18 1 + 22 15 20 1 + 23 17 18 1 + 24 17 21 1 + 25 18 22 1 + 26 19 23 1 + 27 19 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,7,9-TRIMETHYLENE-TETRACYCLO(3.3.1.0-2,8-.0-4,6-)NONANE TR +@MOLECULE +VETWAS + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.6598 3.6820 0.0948 C.2 1 UNCH 0.1865 + 2 C2 3.7471 2.4466 1.5573 C.2 1 UNCH -0.0716 + 3 C3 2.6505 1.7793 1.0899 C.2 1 UNCH 0.3062 + 4 N1 3.7683 3.6483 0.9061 N.3 1 UNCH 0.0332 + 5 N2 1.9610 2.5656 0.1736 N.2 1 UNCH -0.5653 + 6 N3 4.7128 2.1183 2.5273 N.2 1 UNCH 0.9600 + 7 N4 2.2150 0.4452 1.3852 N.2 1 UNCH 0.9610 + 8 O1 4.4063 1.2584 3.3534 O.3 1 UNCH -0.5200 + 9 O2 5.7611 2.7705 2.4878 O.2 1 UNCH -0.5200 + 10 O3 1.0093 0.2889 1.6103 O.3 1 UNCH -0.5200 + 11 O4 3.0811 -0.4370 1.3543 O.2 1 UNCH -0.5200 + 12 H1 4.4549 4.3890 1.0068 H 1 UNCH 0.2700 + 13 C1B 2.3318 4.7960 -0.7236 C.2 1 UNCH 0.1865 + 14 N1B 1.2233 4.8297 -1.5349 N.3 1 UNCH 0.0332 + 15 N2B 3.0306 5.9124 -0.8024 N.2 1 UNCH -0.5653 + 16 C2B 1.2444 6.0314 -2.1861 C.2 1 UNCH -0.0716 + 17 H1B 0.5367 4.0890 -1.6356 H 1 UNCH 0.2700 + 18 C3B 2.3411 6.6987 -1.7187 C.2 1 UNCH 0.3062 + 19 N3B 0.2788 6.3597 -3.1561 N.2 1 UNCH 0.9600 + 20 N4B 2.7765 8.0328 -2.0140 N.2 1 UNCH 0.9610 + 21 O1B 0.5853 7.2196 -3.9822 O.3 1 UNCH -0.5200 + 22 O2B -0.7695 5.7076 -3.1166 O.2 1 UNCH -0.5200 + 23 O3B 3.9823 8.1891 -2.2391 O.3 1 UNCH -0.5200 + 24 O4B 1.9104 8.9150 -1.9831 O.2 1 UNCH -0.5200 +@BOND + 1 1 4 am + 2 1 5 2 + 3 1 13 1 + 4 2 3 2 + 5 2 4 1 + 6 2 6 1 + 7 3 5 1 + 8 3 7 1 + 9 4 12 1 + 10 6 8 1 + 11 6 9 2 + 12 7 10 1 + 13 7 11 2 + 14 13 14 am + 15 13 15 2 + 16 14 16 1 + 17 14 17 1 + 18 15 18 1 + 19 16 18 2 + 20 16 19 1 + 21 18 20 1 + 22 19 21 1 + 23 19 22 2 + 24 20 23 1 + 25 20 24 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,4',5,5'-TETRANITRO-2,2'-BI-IMIDAZOLE DIHYDRATE +@MOLECULE +VEVDIJ + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -0.2197 2.9275 7.0232 CL 1 VEVD -0.2273 + 2 CL2 1.7192 1.5484 5.3414 CL 1 VEVD -0.2273 + 3 O1 -1.5632 -1.7791 8.9984 O.3 1 VEVD -0.7000 + 4 C1 0.6596 0.2947 7.6709 C.3 1 VEVD -0.1900 + 5 C2 0.0081 0.4409 9.0373 C.3 1 VEVD 0.0950 + 6 P1 -1.6397 -0.2830 8.8037 P 1 VEVD 0.8390 + 7 C3 -1.7852 0.0895 7.0357 C.3 1 VEVD 0.0950 + 8 C4 -0.3623 0.1392 6.5576 C.3 1 VEVD -0.1950 + 9 C5 0.5012 1.3776 6.6095 C.3 1 VEVD 0.4546 + 10 C6 1.8570 -0.6201 7.6615 C.3 1 VEVD 0.0950 + 11 C7 -2.8573 0.5711 9.7476 C.2 1 VEVD -0.1390 + 12 C8 -3.6773 -0.1525 10.6249 C.2 1 VEVD -0.1500 + 13 C9 -4.6522 0.4901 11.3889 C.2 1 VEVD -0.1500 + 14 C10 -4.8197 1.8683 11.2848 C.2 1 VEVD -0.1500 + 15 C11 -4.0131 2.6016 10.4178 C.2 1 VEVD -0.1500 + 16 C12 -3.0379 1.9566 9.6539 C.2 1 VEVD -0.1500 + 17 H1 -0.0487 1.4843 9.3558 H 1 VEVD 0.0000 + 18 H2 0.5419 -0.1110 9.8176 H 1 VEVD 0.0000 + 19 H3 -2.3433 -0.7082 6.5361 H 1 VEVD 0.0000 + 20 H4 -2.3102 1.0307 6.8567 H 1 VEVD 0.0000 + 21 H5 -0.1725 -0.5898 5.7784 H 1 VEVD 0.1000 + 22 H6 1.6359 -1.5448 8.2059 H 1 VEVD 0.0000 + 23 H7 2.1618 -0.9119 6.6517 H 1 VEVD 0.0000 + 24 H8 2.7063 -0.1309 8.1491 H 1 VEVD 0.0000 + 25 H9 -3.5533 -1.2317 10.7128 H 1 VEVD 0.1500 + 26 H10 -5.2794 -0.0864 12.0642 H 1 VEVD 0.1500 + 27 H11 -5.5787 2.3704 11.8792 H 1 VEVD 0.1500 + 28 H12 -4.1440 3.6780 10.3364 H 1 VEVD 0.1500 + 29 H13 -2.4229 2.5526 8.9858 H 1 VEVD 0.1500 +@BOND + 1 1 9 1 + 2 2 9 1 + 3 3 6 1 + 4 4 5 1 + 5 4 8 1 + 6 4 9 1 + 7 4 10 1 + 8 5 6 1 + 9 5 17 1 + 10 5 18 1 + 11 6 7 1 + 12 6 11 1 + 13 7 8 1 + 14 7 19 1 + 15 7 20 1 + 16 8 9 1 + 17 8 21 1 + 18 10 22 1 + 19 10 23 1 + 20 10 24 1 + 21 11 12 2 + 22 11 16 1 + 23 12 13 1 + 24 12 25 1 + 25 13 14 2 + 26 13 26 1 + 27 14 15 1 + 28 14 27 1 + 29 15 16 2 + 30 15 28 1 + 31 16 29 1 +@SUBSTRUCTURE + 1 VEVD 1 +@COMMENT +COMMENT 6,6-DICHLORO-5-METHYL-3-PHENYL-3-PHOSPHALAMBDA-5--BICYCLO(3 +@MOLECULE +VEWZOM + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.8913 3.8932 10.8662 C.2 1 VEWZ 0.0365 + 2 N1 7.2108 3.5204 11.9331 N.2 1 VEWZ -0.3381 + 3 N2 5.8661 3.6528 11.6577 N.2 1 VEWZ -0.3381 + 4 C2 5.7839 4.1021 10.4303 C.2 1 VEWZ 0.1115 + 5 C3 4.5971 4.4042 9.6792 C.2 1 VEWZ 0.7838 + 6 N3 3.4471 4.2037 10.3021 N.3 1 VEWZ -0.7939 + 7 C4 2.0941 4.4208 9.7721 C.3 1 VEWZ 0.4895 + 8 C5 1.7121 5.8745 10.0044 C.3 1 VEWZ 0.0000 + 9 C6 1.1428 3.4706 10.4851 C.3 1 VEWZ 0.0000 + 10 N4 4.7475 4.8562 8.4359 N.2 1 VEWZ -0.6534 + 11 C7 5.9942 5.0299 7.8803 C.2 1 VEWZ 0.3490 + 12 C8 6.1019 5.5073 6.5709 C.2 1 VEWZ -0.1500 + 13 C9 7.3618 5.6903 5.9888 C.2 1 VEWZ -0.1500 + 14 C10 8.5153 5.3972 6.7130 C.2 1 VEWZ 0.1900 + 15 F1 9.7116 5.5772 6.1434 F 1 VEWZ -0.1900 + 16 C11 8.4473 4.9212 8.0167 C.2 1 VEWZ -0.1500 + 17 C12 7.1864 4.7428 8.5860 C.2 1 VEWZ -0.0230 + 18 N5 7.0203 4.2702 9.8897 N.3 1 VEWZ 0.3262 + 19 H1 8.9692 3.9003 10.7766 H 1 VEWZ 0.1500 + 20 H2 3.5487 3.8617 11.2621 H 1 VEWZ 0.4500 + 21 H3 2.0882 4.1949 8.7004 H 1 VEWZ 0.0000 + 22 H4 1.7448 6.1273 11.0699 H 1 VEWZ 0.0000 + 23 H5 0.7026 6.0781 9.6334 H 1 VEWZ 0.0000 + 24 H6 2.4062 6.5454 9.4874 H 1 VEWZ 0.0000 + 25 H7 0.1207 3.5864 10.1109 H 1 VEWZ 0.0000 + 26 H8 1.1353 3.6510 11.5656 H 1 VEWZ 0.0000 + 27 H9 1.4490 2.4309 10.3279 H 1 VEWZ 0.0000 + 28 H10 3.9267 5.0801 7.8902 H 1 VEWZ 0.4500 + 29 H11 5.2188 5.7442 5.9823 H 1 VEWZ 0.1500 + 30 H12 7.4557 6.0614 4.9701 H 1 VEWZ 0.1500 + 31 H13 9.3755 4.7078 8.5386 H 1 VEWZ 0.1500 +@BOND + 1 1 19 1 + 2 1 18 am + 3 1 2 2 + 4 2 3 1 + 5 3 4 2 + 6 4 18 am + 7 4 5 1 + 8 5 10 2 + 9 5 6 am + 10 6 20 1 + 11 6 7 1 + 12 7 21 1 + 13 7 9 1 + 14 7 8 1 + 15 8 24 1 + 16 8 23 1 + 17 8 22 1 + 18 9 27 1 + 19 9 26 1 + 20 9 25 1 + 21 10 28 1 + 22 10 11 1 + 23 11 17 1 + 24 11 12 2 + 25 12 29 1 + 26 12 13 1 + 27 13 30 1 + 28 13 14 2 + 29 14 16 1 + 30 14 15 1 + 31 16 31 1 + 32 16 17 2 + 33 17 18 1 +@SUBSTRUCTURE + 1 VEWZ 1 +@COMMENT +COMMENT 8-FLUORO-4-ISOPROPYLAMINO(1,2,4)TRIAZOLO(4,3-A)QUINOXALINE +@MOLECULE +VEXKOY + 21 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 11.9739 2.4492 -1.2540 N.2 1 VEXK -0.5660 + 2 C1 10.9216 2.6872 -0.4271 C.2 1 VEXK 0.2560 + 3 C2 11.0596 2.8569 0.9453 C.2 1 VEXK 0.1400 + 4 C3 12.2889 2.7971 1.5867 C.2 1 VEXK -0.1500 + 5 C4 13.3786 2.5531 0.7489 C.2 1 VEXK -0.1500 + 6 C5 13.1757 2.3910 -0.6251 C.2 1 VEXK 0.3830 + 7 C6 14.3013 2.1397 -1.4854 C.1 1 VEXK 0.4841 + 8 N2 15.2372 1.9384 -2.1445 N.1 1 VEXK -0.5571 + 9 O1 9.8503 3.0801 1.5248 O.3 1 VEXK -0.2800 + 10 C7 9.5366 2.8146 -0.7077 C.2 1 VEXK 0.0000 + 11 C8 8.7305 2.7547 -1.8595 C.2 1 VEXK -0.1500 + 12 C9 7.3473 2.9383 -1.7242 C.2 1 VEXK -0.1500 + 13 C10 6.7720 3.1769 -0.4730 C.2 1 VEXK -0.1500 + 14 C11 7.5550 3.2404 0.6848 C.2 1 VEXK -0.1500 + 15 C12 8.9262 3.0543 0.5210 C.2 1 VEXK 0.1400 + 16 H1 12.3856 2.9307 2.6566 H 1 VEXK 0.1500 + 17 H2 14.3790 2.4908 1.1706 H 1 VEXK 0.1500 + 18 H3 9.1739 2.5695 -2.8340 H 1 VEXK 0.1500 + 19 H4 6.7138 2.8941 -2.6081 H 1 VEXK 0.1500 + 20 H5 5.6952 3.3159 -0.3966 H 1 VEXK 0.1500 + 21 H6 7.1227 3.4245 1.6610 H 1 VEXK 0.1500 +@BOND + 1 1 6 1 + 2 1 2 2 + 3 2 10 1 + 4 2 3 1 + 5 3 9 1 + 6 3 4 2 + 7 4 16 1 + 8 4 5 1 + 9 5 17 1 + 10 5 6 2 + 11 6 7 1 + 12 7 8 3 + 13 9 15 1 + 14 10 15 1 + 15 10 11 2 + 16 11 18 1 + 17 11 12 1 + 18 12 19 1 + 19 12 13 2 + 20 13 20 1 + 21 13 14 1 + 22 14 21 1 + 23 14 15 2 +@SUBSTRUCTURE + 1 VEXK 1 +@COMMENT +COMMENT 3-CYANO-4-AZADIBENZOFURAN +@MOLECULE +VEXMOA + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 7.6664 3.1350 4.2429 N.2 1 UNCH -0.5130 + 2 C1 8.0451 2.2151 5.0884 C.2 1 UNCH 0.2776 + 3 C2 7.0078 1.5247 5.9296 C.2 1 UNCH 0.3962 + 4 C3 7.1884 0.2202 6.3835 C.2 1 UNCH -0.1500 + 5 C4 6.1856 -0.3594 7.1579 C.2 1 UNCH -0.1500 + 6 C5 5.0406 0.3723 7.4505 C.2 1 UNCH -0.1500 + 7 C6 4.9412 1.6611 6.9540 C.2 1 UNCH 0.1600 + 8 N2 5.8948 2.2520 6.2048 N.2 1 UNCH -0.6200 + 9 C7 9.4619 1.7995 5.2753 C.2 1 UNCH 0.0862 + 10 C8 10.0866 2.0056 6.5097 C.2 1 UNCH -0.1500 + 11 C9 11.4029 1.5815 6.6931 C.2 1 UNCH -0.1500 + 12 C10 12.0879 0.9573 5.6484 C.2 1 UNCH -0.1500 + 13 C11 11.4628 0.7589 4.4156 C.2 1 UNCH -0.1500 + 14 C12 10.1471 1.1803 4.2254 C.2 1 UNCH -0.1500 + 15 O1 8.7401 3.7190 3.5612 O.3 1 UNCH -0.3370 + 16 H1 8.0758 -0.3522 6.1381 H 1 UNCH 0.1500 + 17 H2 6.2953 -1.3763 7.5244 H 1 UNCH 0.1500 + 18 H3 4.2411 -0.0525 8.0476 H 1 UNCH 0.1500 + 19 H4 4.0647 2.2722 7.1506 H 1 UNCH 0.1500 + 20 H5 9.5599 2.5039 7.3196 H 1 UNCH 0.1500 + 21 H6 11.8985 1.7444 7.6469 H 1 UNCH 0.1500 + 22 H7 13.1161 0.6336 5.7921 H 1 UNCH 0.1500 + 23 H8 12.0036 0.2835 3.6013 H 1 UNCH 0.1500 + 24 H9 9.6599 1.0376 3.2642 H 1 UNCH 0.1500 + 25 H10 8.2955 4.4161 3.0449 H 1 UNCH 0.4000 +@BOND + 1 1 2 2 + 2 1 15 1 + 3 2 3 1 + 4 2 9 1 + 5 3 4 2 + 6 3 8 1 + 7 4 5 1 + 8 4 16 1 + 9 5 6 2 + 10 5 17 1 + 11 6 7 1 + 12 6 18 1 + 13 7 8 2 + 14 7 19 1 + 15 9 10 2 + 16 9 14 1 + 17 10 11 1 + 18 10 20 1 + 19 11 12 2 + 20 11 21 1 + 21 12 13 1 + 22 12 22 1 + 23 13 14 2 + 24 13 23 1 + 25 14 24 1 + 26 15 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-PHENYL 2-PYRIDYL KETONE OXIME +@MOLECULE +VEYBIK + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 10.1554 4.0578 2.7697 SI 1 UNCH 0.7558 + 2 SI2 12.5008 4.6607 4.6252 SI 1 UNCH 0.7558 + 3 O1 10.8904 4.6990 4.1406 O.3 1 UNCH -0.5948 + 4 O2 8.7178 3.3772 3.2562 O.3 1 UNCH -0.6974 + 5 O3 13.1557 6.1377 4.2235 O.3 1 UNCH -0.6974 + 6 C1 11.3537 2.7330 2.0737 C.3 1 UNCH -0.0805 + 7 C2 12.8443 3.1091 2.1809 C.3 1 UNCH 0.0000 + 8 C3 13.3423 3.2520 3.6321 C.3 1 UNCH -0.0805 + 9 C4 9.8859 5.3792 1.4802 C.3 1 UNCH -0.0805 + 10 C5 12.6602 4.3189 6.4489 C.3 1 UNCH -0.0805 + 11 H1 8.2151 3.8953 3.9045 H 1 UNCH 0.4000 + 12 H2 12.6525 6.9107 4.5249 H 1 UNCH 0.4000 + 13 H3 11.1742 1.7964 2.6144 H 1 UNCH 0.0000 + 14 H4 11.0939 2.5580 1.0238 H 1 UNCH 0.0000 + 15 H9 13.0392 4.0353 1.6245 H 1 UNCH 0.0000 + 16 H10 13.4319 2.3209 1.6939 H 1 UNCH 0.0000 + 17 H11 13.1732 2.3111 4.1687 H 1 UNCH 0.0000 + 18 H12 14.4221 3.4378 3.6323 H 1 UNCH 0.0000 + 19 H13 9.2358 6.1705 1.8653 H 1 UNCH 0.0000 + 20 H14 9.4167 4.9597 0.5854 H 1 UNCH 0.0000 + 21 H15 10.8354 5.8349 1.1838 H 1 UNCH 0.0000 + 22 H16 12.2051 3.3581 6.7073 H 1 UNCH 0.0000 + 23 H17 12.1633 5.0971 7.0360 H 1 UNCH 0.0000 + 24 H18 13.7116 4.2875 6.7497 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 6 1 + 4 1 9 1 + 5 2 3 1 + 6 2 5 1 + 7 2 8 1 + 8 2 10 1 + 9 4 11 1 + 10 5 12 1 + 11 6 7 1 + 12 6 13 1 + 13 6 14 1 + 14 7 8 1 + 15 7 15 1 + 16 7 16 1 + 17 8 17 1 + 18 8 18 1 + 19 9 19 1 + 20 9 20 1 + 21 9 21 1 + 22 10 22 1 + 23 10 23 1 + 24 10 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,6-DIHYDROXY-2,6-DIMETHYL-2,6-DISILA-1-OXACYCLOHEXANE +@MOLECULE +VEYWAX + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 3.6818 1.1947 3.8865 CL 1 VEYW -0.2090 + 2 O1 1.4242 -1.6791 2.6722 O.3 1 VEYW -0.3370 + 3 O2 2.6002 -1.7720 7.0134 O.3 1 VEYW -0.3370 + 4 N1 2.1227 -0.4642 2.6279 N.2 1 VEYW -0.5130 + 5 N2 2.5329 -0.7032 6.1109 N.2 1 VEYW -0.5130 + 6 C1 2.7503 -0.2309 3.7401 C.2 1 VEYW 0.6590 + 7 C2 2.7552 -1.1513 4.9174 C.2 1 VEYW 0.3900 + 8 H1 0.9718 -1.6948 1.8057 H 1 VEYW 0.4000 + 9 H2 2.4133 -1.3396 7.8688 H 1 VEYW 0.4000 + 10 H3 2.9576 -2.2102 4.6874 H 1 VEYW 0.0600 +@BOND + 1 1 6 1 + 2 2 8 1 + 3 2 4 1 + 4 3 9 1 + 5 3 5 1 + 6 4 6 2 + 7 5 7 2 + 8 6 7 1 + 9 7 10 1 +@SUBSTRUCTURE + 1 VEYW 1 +@COMMENT +COMMENT AMPHI-CHLOROGLYOXIME MONOHYDRATE +@MOLECULE +VEZBUX + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 0.8143 1.1643 7.9447 CL 1 UNCH -0.2900 + 2 P1 -1.9695 1.6848 7.0697 P 1 UNCH 0.8390 + 3 O1 -2.0072 2.8503 9.4121 O.3 1 UNCH -0.3625 + 4 O2 -2.8863 1.8150 5.8794 O.3 1 UNCH -0.7000 + 5 C1 -1.8585 3.2109 8.0112 C.3 1 UNCH 0.2800 + 6 C2 -0.3047 1.2821 6.5803 C.3 1 UNCH 0.2900 + 7 C3 -2.5211 0.7525 8.4112 C.2 1 UNCH -0.1390 + 8 C4 -2.4599 1.5577 9.5462 C.2 1 UNCH 0.0825 + 9 C5 -2.8227 1.0592 10.7851 C.2 1 UNCH -0.1500 + 10 C6 -3.2691 -0.2618 10.8715 C.2 1 UNCH -0.1500 + 11 C7 -3.3446 -1.0642 9.7237 C.2 1 UNCH -0.1500 + 12 C8 -2.9683 -0.5562 8.4796 C.2 1 UNCH -0.1500 + 13 H1 -0.9072 3.7328 7.8803 H 1 UNCH 0.0000 + 14 H2 -2.6778 3.8907 7.7578 H 1 UNCH 0.0000 + 15 H3 -0.2912 0.3203 6.0602 H 1 UNCH 0.0000 + 16 H4 0.0831 2.0424 5.8967 H 1 UNCH 0.0000 + 17 H5 -2.7644 1.6837 11.6708 H 1 UNCH 0.1500 + 18 H6 -3.5631 -0.6700 11.8356 H 1 UNCH 0.1500 + 19 H7 -3.7006 -2.0888 9.8058 H 1 UNCH 0.1500 + 20 H8 -3.0309 -1.1712 7.5870 H 1 UNCH 0.1500 +@BOND + 1 1 6 1 + 2 2 4 1 + 3 2 5 1 + 4 2 6 1 + 5 2 7 1 + 6 3 5 1 + 7 3 8 1 + 8 5 13 1 + 9 5 14 1 + 10 6 15 1 + 11 6 16 1 + 12 7 8 2 + 13 7 12 1 + 14 8 9 1 + 15 9 10 2 + 16 9 17 1 + 17 10 11 1 + 18 10 18 1 + 19 11 12 2 + 20 11 19 1 + 21 12 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-OXO-3-CHLOROMETHYL-2,3-DIHYDRO-1,3-BENZOXAPHOSPHOLE +@MOLECULE +VICGAP + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.3725 3.7900 5.8399 N.3 1 UNCH -0.4391 + 2 C1 6.6381 3.6570 5.6891 C.2 1 UNCH 0.8410 + 3 C2 4.9473 2.9094 6.7231 C.2 1 UNCH 0.5500 + 4 O1 7.7718 3.7264 5.2363 O.2 1 UNCH -0.5700 + 5 C3 3.3471 4.7343 6.3164 C.3 1 UNCH 0.6491 + 6 C4 2.9096 6.7874 7.3932 C.3 1 UNCH 0.2800 + 7 C5 3.8028 7.9249 5.2851 C.3 1 UNCH 0.2800 + 8 O2 1.6202 6.4979 7.9641 O.3 1 UNCH -0.6800 + 9 O3 5.1192 7.6234 5.7368 O.3 1 UNCH -0.6800 + 10 H1 5.3535 3.7083 3.2457 H 1 UNCH 0.0000 + 11 H2 3.3357 1.8434 7.1705 H 1 UNCH 0.4000 + 12 H3 2.4528 4.1518 6.5722 H 1 UNCH 0.0000 + 13 H4 3.2967 7.6682 7.9134 H 1 UNCH 0.0000 + 14 H5 3.7979 7.8531 4.1926 H 1 UNCH 0.0000 + 15 H6 3.9990 4.0639 8.7703 H 1 UNCH 0.4000 + 16 H7 5.7330 8.1930 5.2393 H 1 UNCH 0.4000 + 17 N2 5.5268 4.3599 5.2125 N.3 1 UNCH -0.3401 + 18 N3 6.2397 2.8095 6.7022 N.2 1 UNCH -0.6610 + 19 C6 5.4584 4.6463 3.8002 C.3 1 UNCH 0.3001 + 20 N4 4.1600 2.2492 7.6051 N.3 1 UNCH -0.8500 + 21 C7 3.7924 5.5620 7.5336 C.3 1 UNCH 0.2800 + 22 C8 2.7724 6.9614 5.8838 C.3 1 UNCH 0.2800 + 23 O4 3.5445 4.9313 8.8003 O.3 1 UNCH -0.6800 + 24 O5 2.9474 5.6539 5.2841 O.3 1 UNCH -0.5600 + 25 H8 4.6229 5.3088 3.5734 H 1 UNCH 0.0000 + 26 H9 6.3875 5.1310 3.4847 H 1 UNCH 0.0000 + 27 H10 4.6947 1.5179 8.0719 H 1 UNCH 0.4000 + 28 H11 4.8517 5.8320 7.4834 H 1 UNCH 0.0000 + 29 H12 1.7680 7.3009 5.6074 H 1 UNCH 0.0000 + 30 H13 3.5746 8.9539 5.5795 H 1 UNCH 0.0000 + 31 H14 1.8216 6.0324 8.8040 H 1 UNCH 0.4000 +@BOND + 1 1 3 am + 2 1 5 1 + 3 1 17 1 + 4 2 4 2 + 5 2 17 am + 6 2 18 am + 7 3 18 2 + 8 3 20 am + 9 5 12 1 + 10 5 21 1 + 11 5 24 1 + 12 6 8 1 + 13 6 13 1 + 14 6 21 1 + 15 6 22 1 + 16 7 9 1 + 17 7 14 1 + 18 7 22 1 + 19 7 30 1 + 20 8 31 1 + 21 9 16 1 + 22 10 19 1 + 23 11 20 1 + 24 15 23 1 + 25 17 19 1 + 26 19 25 1 + 27 19 26 1 + 28 20 27 1 + 29 21 23 1 + 30 21 28 1 + 31 22 24 1 + 32 22 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-AMINO-2-METHYL-1-(BETA-D-RIBOFURANOSYL)-1,2,4-TRIAZOLIN-3 +@MOLECULE +VICGET + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.0787 8.7638 6.3636 N.2 1 VICG -0.6200 + 2 C1 2.1193 8.7039 5.4304 C.2 1 VICG 0.7200 + 3 N2 2.1202 7.9459 4.3233 N.2 1 VICG -0.5670 + 4 C2 3.2438 7.2218 4.1967 C.2 1 VICG 0.1054 + 5 C3 4.3157 7.1792 5.0709 C.2 1 VICG 0.2272 + 6 C4 4.1865 7.9871 6.1899 C.2 1 VICG 0.3740 + 7 N3 5.2878 6.3237 4.6061 N.2 1 VICG -0.5653 + 8 C5 4.8088 5.8466 3.4743 C.2 1 VICG 0.0365 + 9 N4 3.5757 6.3636 3.1823 N.3 1 VICG 0.0476 + 10 N5 1.0002 9.4795 5.6516 N.3 1 VICG -0.9000 + 11 S1 5.4380 8.0692 7.4644 S.2 1 VICG 0.4980 + 12 O1 4.9950 7.1112 8.5300 O.2 1 VICG -0.5000 + 13 N6 5.1004 9.6432 7.9276 N.3 1 VICG -0.7820 + 14 C6 2.7401 6.0909 2.0255 C.3 1 VICG 0.5356 + 15 C7 1.6288 5.0861 2.2926 C.3 1 VICG 0.0000 + 16 C8 2.2277 3.7848 1.8199 C.3 1 VICG 0.2800 + 17 C9 3.1846 4.2019 0.7025 C.3 1 VICG 0.2800 + 18 C10 2.5648 4.1134 -0.6946 C.3 1 VICG 0.2800 + 19 O2 2.9782 3.2089 2.8911 O.3 1 VICG -0.6800 + 20 O3 3.5525 5.5804 0.9496 O.3 1 VICG -0.5600 + 21 O4 1.4410 4.9817 -0.8196 O.3 1 VICG -0.6800 + 22 H1 5.3074 5.1286 2.8345 H 1 VICG 0.1500 + 23 H2 0.2033 9.0962 5.1629 H 1 VICG 0.4000 + 24 H3 0.8882 9.6594 6.6399 H 1 VICG 0.4000 + 25 H4 4.9816 9.7328 8.9340 H 1 VICG 0.3600 + 26 H5 4.2252 9.9997 7.5360 H 1 VICG 0.3600 + 27 H6 2.3320 7.0552 1.7017 H 1 VICG 0.0000 + 28 H7 0.7620 5.3367 1.6709 H 1 VICG 0.0000 + 29 H8 1.3022 5.0683 3.3372 H 1 VICG 0.0000 + 30 H9 1.4854 3.0468 1.5022 H 1 VICG 0.0000 + 31 H10 4.1038 3.6058 0.7238 H 1 VICG 0.0000 + 32 H12 3.2938 4.4071 -1.4574 H 1 VICG 0.0000 + 33 H13 2.3500 2.9056 3.5715 H 1 VICG 0.4000 + 34 H14 1.8062 5.8851 -0.8685 H 1 VICG 0.4000 + 35 H11 2.2352 3.0923 -0.9088 H 1 VICG 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 10 am + 4 2 3 2 + 5 3 4 1 + 6 4 9 1 + 7 4 5 2 + 8 5 7 1 + 9 5 6 1 + 10 6 11 1 + 11 7 8 2 + 12 8 22 1 + 13 8 9 am + 14 9 14 1 + 15 10 24 1 + 16 10 23 1 + 17 11 13 1 + 18 11 12 2 + 19 13 26 1 + 20 13 25 1 + 21 14 27 1 + 22 14 20 1 + 23 14 15 1 + 24 15 29 1 + 25 15 28 1 + 26 15 16 1 + 27 16 30 1 + 28 16 19 1 + 29 16 17 1 + 30 17 31 1 + 31 17 20 1 + 32 17 18 1 + 33 18 35 1 + 34 18 32 1 + 35 18 21 1 + 36 19 33 1 + 37 21 34 1 +@SUBSTRUCTURE + 1 VICG 1 +@COMMENT +COMMENT (S)-2-AMINO-9-(2-DEOXY-ALPHA-D-ERYTHRO-PENTOFURANOSYL)PURIN +@MOLECULE +VICKIB + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.4350 2.8580 2.4039 CL 1 VICK -0.2090 + 2 S1 5.1559 2.3110 1.6325 S.1 1 VICK 0.1810 + 3 O1 4.9748 3.4877 0.7374 O.2 1 VICK -0.5000 + 4 O2 1.9139 -0.3173 2.5741 O.2 1 VICK -0.5700 + 5 C1 3.8557 1.9073 2.5473 C.2 1 VICK 0.4670 + 6 C2 3.8848 0.7666 3.5376 C.3 1 VICK 0.1220 + 7 C3 2.6561 -0.1379 3.5264 C.2 1 VICK 0.4480 + 8 C4 2.5372 -0.8506 4.8584 C.3 1 VICK 0.0610 + 9 C5 3.8430 -0.3354 5.5092 C.3 1 VICK 0.0000 + 10 C6 5.0187 -1.0080 4.7666 C.3 1 VICK 0.0000 + 11 C7 5.0354 -0.2778 3.4063 C.3 1 VICK 0.0000 + 12 C8 3.9331 1.1486 5.0516 C.3 1 VICK 0.0000 + 13 C9 2.7640 2.0031 5.5832 C.3 1 VICK 0.0000 + 14 C10 5.2293 1.8567 5.4936 C.3 1 VICK 0.0000 + 15 H1 2.5320 -1.9349 4.7254 H 1 VICK 0.0000 + 16 H2 1.6426 -0.5212 5.3908 H 1 VICK 0.0000 + 17 H3 3.8721 -0.4957 6.5898 H 1 VICK 0.0000 + 18 H4 4.8774 -2.0872 4.6455 H 1 VICK 0.0000 + 19 H5 5.9642 -0.8598 5.2989 H 1 VICK 0.0000 + 20 H6 4.8609 -0.9823 2.5837 H 1 VICK 0.0000 + 21 H7 6.0204 0.1710 3.2444 H 1 VICK 0.0000 + 22 H8 1.7852 1.7035 5.1989 H 1 VICK 0.0000 + 23 H9 2.7170 1.9436 6.6768 H 1 VICK 0.0000 + 24 H10 2.8966 3.0589 5.3223 H 1 VICK 0.0000 + 25 H11 6.1473 1.3670 5.1616 H 1 VICK 0.0000 + 26 H12 5.2628 2.8798 5.1019 H 1 VICK 0.0000 + 27 H13 5.2767 1.9171 6.5870 H 1 VICK 0.0000 +@BOND + 1 1 5 1 + 2 2 3 2 + 3 2 5 2 + 4 4 7 2 + 5 5 6 1 + 6 6 7 1 + 7 6 11 1 + 8 6 12 1 + 9 7 8 1 + 10 8 9 1 + 11 8 15 1 + 12 8 16 1 + 13 9 10 1 + 14 9 12 1 + 15 9 17 1 + 16 10 11 1 + 17 10 18 1 + 18 10 19 1 + 19 11 20 1 + 20 11 21 1 + 21 12 13 1 + 22 12 14 1 + 23 13 22 1 + 24 13 23 1 + 25 13 24 1 + 26 14 25 1 + 27 14 26 1 + 28 14 27 1 +@SUBSTRUCTURE + 1 VICK 1 +@COMMENT +COMMENT 10-CHLORO-10-SULFINYLCAMPHOR (ABSOLUTE CONFIGURATION) +@MOLECULE +VICPOM + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.7338 6.6848 2.1236 O.3 1 VICP -0.2800 + 2 N1 -1.8185 3.5593 2.0505 N.2 1 VICP -0.6200 + 3 N2 -1.3184 1.7352 0.6175 N.2 1 VICP -0.1250 + 4 N3 -0.2145 4.4652 3.5790 N.3 1 VICP -0.8691 + 5 N4 1.5991 2.2490 2.4155 N.3 1 VICP 0.0332 + 6 N5 0.9472 0.8321 0.8257 N.2 1 VICP -0.5653 + 7 C1 -2.1341 2.6603 1.0973 C.2 1 VICP 0.5210 + 8 C2 -0.0604 1.6892 1.1395 C.2 1 VICP 0.5342 + 9 C3 0.3035 2.5944 2.1176 C.2 1 VICP -0.1516 + 10 C4 -0.5727 3.5655 2.5889 C.2 1 VICP 0.4100 + 11 C5 1.9406 1.1904 1.6127 C.2 1 VICP 0.0365 + 12 C6 -0.9549 5.7318 3.5988 C.3 1 VICP 0.5491 + 13 C7 -0.5774 6.6863 2.5142 C.2 1 VICP -0.0400 + 14 C8 -1.2839 7.6205 1.7857 C.2 1 VICP -0.1500 + 15 C9 -0.3544 8.2279 0.9074 C.2 1 VICP -0.1500 + 16 C10 0.8578 7.6276 1.1538 C.2 1 VICP -0.0100 + 17 H1 -1.5937 1.0743 -0.0992 H 1 VICP 0.4570 + 18 H2 0.7822 4.6565 3.6091 H 1 VICP 0.4000 + 19 H3 2.1946 2.6847 3.1097 H 1 VICP 0.2700 + 20 H4 -3.1401 2.6969 0.6913 H 1 VICP 0.1500 + 21 H5 2.9214 0.7286 1.6532 H 1 VICP 0.1500 + 22 H6 -2.0380 5.5575 3.5999 H 1 VICP 0.0000 + 23 H7 -0.7338 6.2199 4.5560 H 1 VICP 0.0000 + 24 H8 -2.3374 7.8456 1.8838 H 1 VICP 0.1500 + 25 H9 -0.5407 9.0159 0.1902 H 1 VICP 0.1500 + 26 H10 1.8519 7.7577 0.7478 H 1 VICP 0.1500 +@BOND + 1 1 16 1 + 2 1 13 1 + 3 2 10 2 + 4 2 7 am + 5 3 17 1 + 6 3 8 1 + 7 3 7 2 + 8 4 18 1 + 9 4 12 1 + 10 4 10 am + 11 5 19 1 + 12 5 11 am + 13 5 9 1 + 14 6 11 2 + 15 6 8 1 + 16 7 20 1 + 17 8 9 2 + 18 9 10 1 + 19 11 21 1 + 20 12 23 1 + 21 12 22 1 + 22 12 13 1 + 23 13 14 2 + 24 14 24 1 + 25 14 15 1 + 26 15 25 1 + 27 15 16 2 + 28 16 26 1 +@SUBSTRUCTURE + 1 VICP 1 +@COMMENT +COMMENT 6-FURFURYLPURINE PICRATE KINETIN PICRATE +@MOLECULE +VIDKUO + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.5054 0.0930 10.0847 N.3 1 CHGB -0.5880 + 2 N2 -0.7340 1.4471 10.5769 N.2 1 CHGB -0.2650 + 3 C1 -1.7161 1.9323 9.8798 C.2 1 CHGB 0.3280 + 4 C2 -2.3130 1.0153 8.8555 C.3 1 CHGB 0.0610 + 5 C3 -1.2675 -0.0981 8.7939 C.3 1 CHGB 0.5030 + 6 C4 -2.2665 3.3027 10.0985 C.3 1 CHGB 0.0610 + 7 C5 -1.8813 -1.4930 8.7842 C.3 1 CHGB 0.0000 + 8 C6 -0.2906 0.0930 7.6322 C.3 1 CHGB 0.0000 + 9 H1 0.5118 -0.0537 9.9697 H 1 CHGB 0.4500 + 10 H2 -0.8013 -0.5717 10.8199 H 1 CHGB 0.4500 + 11 H3 -3.2838 0.6702 9.2258 H 1 CHGB 0.0000 + 12 H4 -2.4528 1.5329 7.9026 H 1 CHGB 0.0000 + 13 H5 -3.3048 3.2257 10.4313 H 1 CHGB 0.0000 + 14 H6 -2.2307 3.8619 9.1600 H 1 CHGB 0.0000 + 15 H7 -1.6834 3.8328 10.8558 H 1 CHGB 0.0000 + 16 H8 -2.4698 -1.6519 7.8740 H 1 CHGB 0.0000 + 17 H9 -2.5476 -1.6456 9.6409 H 1 CHGB 0.0000 + 18 H10 -1.1076 -2.2680 8.8234 H 1 CHGB 0.0000 + 19 H11 -0.8088 0.0027 6.6711 H 1 CHGB 0.0000 + 20 H12 0.5047 -0.6607 7.6535 H 1 CHGB 0.0000 + 21 H13 0.1853 1.0798 7.6614 H 1 CHGB 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 9 1 + 4 1 10 1 + 5 2 3 2 + 6 3 4 1 + 7 3 6 1 + 8 4 5 1 + 9 4 11 1 + 10 4 12 1 + 11 5 7 1 + 12 5 8 1 + 13 6 13 1 + 14 6 14 1 + 15 6 15 1 + 16 7 16 1 + 17 7 17 1 + 18 7 18 1 + 19 8 19 1 + 20 8 20 1 + 21 8 21 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT 4,5-DIHYDRO-3,5,5-TRIMETHYLPYRAZOLIUM CHLORIDE +@MOLECULE +VIFFEV + 25 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.6391 9.1295 0.9915 S.3 1 VIFF -0.1090 + 2 N5 1.2628 7.3958 0.8794 N.3 1 VIFF -0.0544 + 3 C7 3.4086 7.9414 0.7464 C.2 1 VIFF 0.0820 + 4 C8 3.2769 6.5996 0.2742 C.2 1 VIFF -0.0130 + 5 C9 4.1697 5.6315 -0.2200 C.2 1 VIFF -0.1500 + 6 C10 3.6691 4.3821 -0.6010 C.2 1 VIFF -0.1500 + 7 C11 2.3088 4.0984 -0.4939 C.2 1 VIFF -0.1500 + 8 C12 1.4074 5.0500 -0.0044 C.2 1 VIFF -0.1500 + 9 C13 1.9176 6.2978 0.3745 C.2 1 VIFF -0.1516 + 10 C14 2.1773 8.3960 1.1046 C.2 1 VIFF -0.0510 + 11 C15 2.1618 9.7343 1.5985 C.2 1 VIFF -0.0130 + 12 C16 1.1008 10.5464 2.0615 C.2 1 VIFF -0.1500 + 13 C17 1.3584 11.8484 2.4996 C.2 1 VIFF -0.1500 + 14 C18 2.6523 12.3517 2.4834 C.2 1 VIFF -0.1500 + 15 C19 3.7160 11.5671 2.0300 C.2 1 VIFF -0.1500 + 16 C20 3.4609 10.2528 1.5871 C.2 1 VIFF 0.0400 + 17 H1 0.2735 7.4879 1.0669 H 1 VIFF 0.2700 + 18 H2 5.2302 5.8490 -0.3049 H 1 VIFF 0.1500 + 19 H3 4.3501 3.6262 -0.9844 H 1 VIFF 0.1500 + 20 H4 1.9403 3.1204 -0.7958 H 1 VIFF 0.1500 + 21 H5 0.3496 4.8210 0.0758 H 1 VIFF 0.1500 + 22 H6 0.0839 10.1645 2.0792 H 1 VIFF 0.1500 + 23 H7 0.5397 12.4697 2.8549 H 1 VIFF 0.1500 + 24 H8 2.8432 13.3660 2.8262 H 1 VIFF 0.1500 + 25 H9 4.7266 11.9662 2.0196 H 1 VIFF 0.1500 +@BOND + 1 1 16 1 + 2 1 3 1 + 3 2 17 1 + 4 2 10 1 + 5 2 9 1 + 6 3 10 2 + 7 3 4 1 + 8 4 9 2 + 9 4 5 1 + 10 5 18 1 + 11 5 6 2 + 12 6 19 1 + 13 6 7 1 + 14 7 20 1 + 15 7 8 2 + 16 8 21 1 + 17 8 9 1 + 18 10 11 1 + 19 11 16 1 + 20 11 12 2 + 21 12 22 1 + 22 12 13 1 + 23 13 23 1 + 24 13 14 2 + 25 14 24 1 + 26 14 15 1 + 27 15 25 1 + 28 15 16 2 +@SUBSTRUCTURE + 1 VIFF 1 +@COMMENT +COMMENT 10H-(1)BENZOTHIENO(3,2-B)INDOLE TETRACYANOETHYLENE +@MOLECULE +VIGPEG + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 9.1481 0.7814 6.1946 N.2 1 UNCH -0.7068 + 2 N2 9.3174 1.4310 7.3769 N.3 1 UNCH 0.3140 + 3 C1 8.1733 2.0813 7.7883 C.2 1 UNCH -0.3016 + 4 C2 5.8668 2.2148 6.6606 C.2 1 UNCH 0.7160 + 5 N3 5.3317 1.7166 5.4955 N.3 1 UNCH -0.4900 + 6 C3 6.0429 0.9336 4.6115 C.2 1 UNCH 0.4500 + 7 N4 7.2764 0.5588 4.7249 N.2 1 UNCH -0.5750 + 8 C4 7.8848 1.0369 5.8841 C.2 1 UNCH 0.4138 + 9 C5 7.2308 1.8282 6.8224 C.2 1 UNCH -0.0860 + 10 C6 10.6286 1.3902 8.0762 C.3 1 UNCH 0.2556 + 11 C7 10.3755 0.9486 9.5411 C.3 1 UNCH 0.0000 + 12 C8 11.5326 0.2925 7.4499 C.3 1 UNCH 0.0000 + 13 C9 11.3293 2.8120 8.0111 C.3 1 UNCH 0.2800 + 14 C10 11.3661 3.3989 6.5887 C.3 1 UNCH 0.0000 + 15 C11 12.7735 2.8035 8.5498 C.3 1 UNCH 0.0000 + 16 O1 5.2265 2.8993 7.4490 O.2 1 UNCH -0.5700 + 17 O2 10.6044 3.7668 8.8118 O.3 1 UNCH -0.6800 + 18 H1 8.1359 2.6664 8.6964 H 1 UNCH 0.1500 + 19 H2 4.3671 1.9523 5.3167 H 1 UNCH 0.3700 + 20 H3 5.4463 0.6250 3.7376 H 1 UNCH 0.0600 + 21 H4 9.7784 1.6757 10.1011 H 1 UNCH 0.0000 + 22 H5 9.8315 -0.0036 9.5736 H 1 UNCH 0.0000 + 23 H6 11.3131 0.8048 10.0878 H 1 UNCH 0.0000 + 24 H7 12.4583 0.1564 8.0192 H 1 UNCH 0.0000 + 25 H8 11.8092 0.5255 6.4164 H 1 UNCH 0.0000 + 26 H9 11.0262 -0.6809 7.4413 H 1 UNCH 0.0000 + 27 H10 10.3597 3.5850 6.1997 H 1 UNCH 0.0000 + 28 H11 11.8622 4.3773 6.5894 H 1 UNCH 0.0000 + 29 H12 11.9010 2.7518 5.8878 H 1 UNCH 0.0000 + 30 H13 13.4477 2.2158 7.9196 H 1 UNCH 0.0000 + 31 H14 12.8207 2.4153 9.5720 H 1 UNCH 0.0000 + 32 H15 13.1707 3.8248 8.6007 H 1 UNCH 0.0000 + 33 H16 10.8828 3.6801 9.7398 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 8 2 + 3 2 3 1 + 4 2 10 1 + 5 3 9 2 + 6 3 18 1 + 7 4 5 am + 8 4 9 1 + 9 4 16 2 + 10 5 6 am + 11 5 19 1 + 12 6 7 2 + 13 6 20 1 + 14 7 8 am + 15 8 9 1 + 16 10 11 1 + 17 10 12 1 + 18 10 13 1 + 19 11 21 1 + 20 11 22 1 + 21 11 23 1 + 22 12 24 1 + 23 12 25 1 + 24 12 26 1 + 25 13 14 1 + 26 13 15 1 + 27 13 17 1 + 28 14 27 1 + 29 14 28 1 + 30 14 29 1 + 31 15 30 1 + 32 15 31 1 + 33 15 32 1 + 34 17 33 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(3'-HYDROXY-2',3'-DIMETHYLBUTAN-2'-YL)PYRAZOLO(3,4-D)PYRI +@MOLECULE +VIGTUA + 22 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.2487 8.4379 0.5263 N.2 1 VIGT -0.6200 + 2 N2 2.3601 7.1922 -0.9922 N.2 1 VIGT -0.6200 + 3 C1 1.5649 8.8905 -2.7954 C.3 1 VIGT -0.0680 + 4 C2 0.1326 9.3274 -3.1029 C.3 1 VIGT -0.1000 + 5 C3 -0.0101 9.8196 -1.6627 C.3 1 VIGT -0.0680 + 6 C4 0.5632 8.7840 -0.7273 C.2 1 VIGT 0.2780 + 7 C5 1.0122 7.4430 1.0292 C.2 1 VIGT 0.3100 + 8 C6 0.7716 7.0044 2.3241 C.2 1 VIGT -0.1500 + 9 C7 1.5263 5.9806 2.8994 C.2 1 VIGT -0.1500 + 10 C8 2.5434 5.3805 2.1679 C.2 1 VIGT -0.1500 + 11 C9 2.8019 5.8066 0.8640 C.2 1 VIGT -0.1500 + 12 C10 2.0634 6.8229 0.2732 C.2 1 VIGT 0.3100 + 13 C11 1.5897 8.1785 -1.4655 C.2 1 VIGT 0.2780 + 14 C12 1.0979 10.3306 -2.5838 C.3 1 VIGT -0.1000 + 15 H1 2.2480 8.6461 -3.5931 H 1 VIGT 0.1000 + 16 H2 -0.3191 9.6709 -4.0128 H 1 VIGT 0.1000 + 17 H3 -0.8292 10.4615 -1.3801 H 1 VIGT 0.1000 + 18 H4 -0.0241 7.4726 2.8988 H 1 VIGT 0.1500 + 19 H5 1.3167 5.6563 3.9158 H 1 VIGT 0.1500 + 20 H6 3.1371 4.5823 2.6066 H 1 VIGT 0.1500 + 21 H7 3.5987 5.3352 0.2934 H 1 VIGT 0.1500 + 22 H8 1.1391 11.1865 -3.2285 H 1 VIGT 0.1000 +@BOND + 1 1 7 1 + 2 1 6 2 + 3 2 13 2 + 4 2 12 1 + 5 3 15 1 + 6 3 14 1 + 7 3 13 1 + 8 3 4 1 + 9 4 16 1 + 10 4 14 1 + 11 4 5 1 + 12 5 17 1 + 13 5 14 1 + 14 5 6 1 + 15 6 13 1 + 16 7 12 2 + 17 7 8 1 + 18 8 18 1 + 19 8 9 2 + 20 9 19 1 + 21 9 10 1 + 22 10 20 1 + 23 10 11 2 + 24 11 21 1 + 25 11 12 1 + 26 14 22 1 +@SUBSTRUCTURE + 1 VIGT 1 +@COMMENT +COMMENT 1,2,3-METHYLIDYNE-2,3-DIHYDRO-1H-CYCLOPENTA(B)QUINOXALINE +@MOLECULE +VIHHID + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.3600 1.2171 3.5783 S.3 1 VIHH -0.2820 + 2 S2 3.1491 3.9334 3.5783 S.1 1 VIHH 0.1810 + 3 O1 4.5462 4.4516 3.5783 O.2 1 VIHH -0.5000 + 4 N1 1.9906 0.1231 3.5783 N.2 1 VIHH -0.6960 + 5 C1 3.0113 2.3060 3.5783 C.2 1 VIHH 0.3990 + 6 C2 1.6898 1.5743 3.5783 C.3 1 VIHH 0.3070 + 7 C3 3.2585 -0.1341 3.5783 C.2 1 VIHH 0.5048 + 8 C4 3.7798 -1.5295 3.5783 C.2 1 VIHH 0.0862 + 9 C5 2.8510 -2.5827 3.5783 C.2 1 VIHH -0.1500 + 10 C6 3.2793 -3.9124 3.5783 C.2 1 VIHH -0.1500 + 11 C7 4.6405 -4.2050 3.5783 C.2 1 VIHH -0.1500 + 12 C8 5.5734 -3.1703 3.5783 C.2 1 VIHH -0.1500 + 13 C9 5.1479 -1.8379 3.5783 C.2 1 VIHH -0.1500 + 14 C10 0.8773 1.8707 2.3163 C.3 1 VIHH 0.0000 + 15 H1 1.4679 1.6797 1.4125 H 1 VIHH 0.0000 + 16 H2 -0.0151 1.2365 2.2638 H 1 VIHH 0.0000 + 17 H3 0.5483 2.9148 2.2812 H 1 VIHH 0.0000 + 18 H4 1.7821 -2.3767 3.5783 H 1 VIHH 0.1500 + 19 H5 2.5488 -4.7178 3.5783 H 1 VIHH 0.1500 + 20 H6 4.9750 -5.2397 3.5783 H 1 VIHH 0.1500 + 21 H7 6.6367 -3.3993 3.5783 H 1 VIHH 0.1500 + 22 H8 5.9101 -1.0637 3.5783 H 1 VIHH 0.1500 + 23 C10G 0.8773 1.8707 4.8403 C.3 1 VIHH 0.0000 + 24 H1G 1.4679 1.6797 5.7441 H 1 VIHH 0.0000 + 25 H2G -0.0151 1.2365 4.8928 H 1 VIHH 0.0000 + 26 H3G 0.5483 2.9148 4.8753 H 1 VIHH 0.0000 +@BOND + 1 1 5 1 + 2 1 7 1 + 3 2 3 2 + 4 2 5 2 + 5 4 6 1 + 6 4 7 2 + 7 5 6 1 + 8 6 14 1 + 9 6 23 1 + 10 7 8 1 + 11 8 9 2 + 12 8 13 1 + 13 9 10 1 + 14 9 18 1 + 15 10 11 2 + 16 10 19 1 + 17 11 12 1 + 18 11 20 1 + 19 12 13 2 + 20 12 21 1 + 21 13 22 1 + 22 14 15 1 + 23 14 16 1 + 24 14 17 1 + 25 23 24 1 + 26 23 25 1 + 27 23 26 1 +@SUBSTRUCTURE + 1 VIHH 1 +@COMMENT +COMMENT 4,4-DIMETHYL-2-PHENYL-1,3-THIAZOLE-5(4H)-THIONOXIDE (AT -60 +@MOLECULE +VIKVIU + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.8627 0.4527 7.4499 C.3 1 VIKV 0.1650 + 2 C2 1.8140 -0.5546 8.5934 C.3 1 VIKV -0.1950 + 3 C3 3.0914 -0.3798 7.8039 C.3 1 VIKV -0.1950 + 4 C4 1.0022 -1.8034 8.5255 C.3 1 VIKV 0.0950 + 5 C5 3.6187 -1.4271 6.8823 C.3 1 VIKV 0.0950 + 6 C6 1.1392 0.3075 6.1841 C.2 1 VIKV 0.7200 + 7 N1 1.8979 1.8757 7.8082 N.2 1 VIKV 0.8750 + 8 O1 1.6436 0.4304 5.0791 O.2 1 VIKV -0.5700 + 9 O2 -0.1686 -0.0040 6.3183 O.3 1 VIKV -0.6500 + 10 O3 0.9444 2.3102 8.4662 O.3 1 VIKV -0.5200 + 11 O4 2.8858 2.5261 7.4455 O.2 1 VIKV -0.5200 + 12 H1 1.8077 -0.1612 9.6069 H 1 VIKV 0.1000 + 13 H2 3.9132 0.1203 8.3102 H 1 VIKV 0.1000 + 14 H3 0.9385 -2.2248 7.5186 H 1 VIKV 0.0000 + 15 H4 1.4352 -2.5649 9.1819 H 1 VIKV 0.0000 + 16 H5 -0.0175 -1.6034 8.8701 H 1 VIKV 0.0000 + 17 H6 2.8383 -1.9220 6.2978 H 1 VIKV 0.0000 + 18 H7 4.3281 -0.9792 6.1789 H 1 VIKV 0.0000 + 19 H8 4.1503 -2.1940 7.4544 H 1 VIKV 0.0000 + 20 H9 -0.5072 -0.0537 5.3989 H 1 VIKV 0.5000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 6 1 + 4 1 7 1 + 5 2 3 1 + 6 2 4 1 + 7 2 12 1 + 8 3 5 1 + 9 3 13 1 + 10 4 14 1 + 11 4 15 1 + 12 4 16 1 + 13 5 17 1 + 14 5 18 1 + 15 5 19 1 + 16 6 8 2 + 17 6 9 1 + 18 7 10 1 + 19 7 11 2 + 20 9 20 1 +@SUBSTRUCTURE + 1 VIKV 1 +@COMMENT +COMMENT CIS,CIS-2,3-DIMETHYL-1-NITROCYCLOPROPANECARBOXYLIC ACID (FO +@MOLECULE +VIKYAP + 26 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.7024 4.4360 3.4520 C.3 1 VIKY 0.4702 + 2 C2 1.2272 3.4406 2.4079 C.3 1 VIKY 0.0000 + 3 C3 0.0853 2.8136 1.5173 C.3 1 VIKY 0.0530 + 4 C4 -1.3454 3.3513 1.9149 C.2 1 VIKY 0.4560 + 5 C5 -1.4654 2.9479 3.3708 C.3 1 VIKY 0.0610 + 6 C6 -0.3022 3.5737 4.2441 C.3 1 VIKY 0.0000 + 7 C7 0.5549 2.3078 4.5528 C.3 1 VIKY 0.0000 + 8 C8 1.2980 2.1106 3.2074 C.3 1 VIKY 0.0000 + 9 C9 0.2115 1.4940 2.3183 C.3 1 VIKY 0.0000 + 10 C10 -1.0288 1.4550 3.2596 C.3 1 VIKY 0.0000 + 11 C11 -0.4267 1.1542 4.6143 C.3 1 VIKY 0.0000 + 12 BR1 2.1699 5.0917 4.5720 BR 1 VIKY -0.2300 + 13 N1 0.1024 5.6952 2.8762 N.2 1 VIKY 0.7998 + 14 O1 0.5507 6.0912 1.7916 O.3 1 VIKY -0.5200 + 15 O2 -0.7890 6.2519 3.5315 O.2 1 VIKY -0.5200 + 16 O3 -2.1817 3.9664 1.2816 O.2 1 VIKY -0.5700 + 17 H1 2.1301 3.7086 1.8513 H 1 VIKY 0.0000 + 18 H2 0.2933 2.7422 0.4487 H 1 VIKY 0.0000 + 19 H3 -2.4609 3.0879 3.7950 H 1 VIKY 0.0000 + 20 H4 -0.6977 4.0344 5.1551 H 1 VIKY 0.0000 + 21 H5 1.2186 2.3969 5.4153 H 1 VIKY 0.0000 + 22 H6 2.2544 1.5846 3.2313 H 1 VIKY 0.0000 + 23 H7 0.4746 0.5847 1.7758 H 1 VIKY 0.0000 + 24 H8 -1.8149 0.7797 2.9138 H 1 VIKY 0.0000 + 25 H9 -1.1433 1.2419 5.4360 H 1 VIKY 0.0000 + 26 H10 0.0726 0.1807 4.6460 H 1 VIKY 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 12 1 + 4 1 13 1 + 5 2 3 1 + 6 2 8 1 + 7 2 17 1 + 8 3 4 1 + 9 3 9 1 + 10 3 18 1 + 11 4 5 1 + 12 4 16 2 + 13 5 6 1 + 14 5 10 1 + 15 5 19 1 + 16 6 7 1 + 17 6 20 1 + 18 7 8 1 + 19 7 11 1 + 20 7 21 1 + 21 8 9 1 + 22 8 22 1 + 23 9 10 1 + 24 9 23 1 + 25 10 11 1 + 26 10 24 1 + 27 11 25 1 + 28 11 26 1 + 29 13 14 1 + 30 13 15 2 +@SUBSTRUCTURE + 1 VIKY 1 +@COMMENT +COMMENT 11-BROMO-11-NITROPENTACYCLO(5.4.0.0-2,6-.0-3,10-.0-5,9-)UND +@MOLECULE +VIMHII + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -1.3049 0.9545 8.7165 CL 1 VIMH 1.3000 + 2 O1 -0.4556 1.7327 7.8358 O.3 1 VIMH -0.5750 + 3 O2 -0.4937 0.3326 9.7450 O.3 1 VIMH -0.5750 + 4 O3 -1.9841 -0.0721 7.9501 O.3 1 VIMH -0.5750 + 5 O4 -2.2861 1.8246 9.3350 O.3 1 VIMH -0.5750 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 +@SUBSTRUCTURE + 1 VIMH 1 +@COMMENT +COMMENT PROPY-1,3-DIAMMONIUM PERCHLORATE +@MOLECULE +VIPXAT + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.1157 7.6373 2.1786 N.2 1 VIPX -0.6510 + 2 C1 2.8702 8.5072 1.6134 C.2 1 VIPX 0.5856 + 3 O1 2.5428 9.7990 1.6718 O.3 1 VIPX -0.6000 + 4 C2 4.1036 8.2467 0.8777 C.2 1 VIPX -0.1238 + 5 C3 4.8968 9.3475 0.2627 C.3 1 VIPX 0.1382 + 6 C4 4.4072 6.9426 0.8355 C.2 1 VIPX 0.1910 + 7 N2 3.6084 5.9746 1.4392 N.3 1 VIPX -0.5764 + 8 C5 4.0132 4.6059 1.3414 C.2 1 VIPX 0.9366 + 9 O2 5.0300 4.2931 0.7459 O.2 1 VIPX -0.5700 + 10 C6 3.1198 3.6379 2.0037 C.2 1 VIPX -0.1238 + 11 C7 3.4948 2.1943 1.9327 C.3 1 VIPX 0.1382 + 12 C8 2.0361 4.1109 2.6227 C.2 1 VIPX 0.1910 + 13 N3 1.7452 5.4462 2.6536 N.2 1 VIPX -0.6454 + 14 C9 2.5093 6.3488 2.0788 C.2 1 VIPX 0.9098 + 15 H1 1.7161 9.9140 2.1716 H 1 VIPX 0.4500 + 16 H2 5.2298 10.0562 1.0278 H 1 VIPX 0.0000 + 17 H3 4.2969 9.8878 -0.4767 H 1 VIPX 0.0000 + 18 H4 5.7879 8.9665 -0.2472 H 1 VIPX 0.0000 + 19 H5 5.3072 6.6136 0.3143 H 1 VIPX 0.1500 + 20 H6 2.7693 1.5605 2.4535 H 1 VIPX 0.0000 + 21 H7 4.4734 2.0287 2.3951 H 1 VIPX 0.0000 + 22 H8 3.5407 1.8603 0.8910 H 1 VIPX 0.0000 + 23 H9 1.3379 3.4466 3.1300 H 1 VIPX 0.1500 + 24 H10 0.9218 5.8101 3.1235 H 1 VIPX 0.4500 +@BOND + 1 1 14 am + 2 1 2 2 + 3 2 4 1 + 4 2 3 1 + 5 3 15 1 + 6 4 6 2 + 7 4 5 1 + 8 5 18 1 + 9 5 17 1 + 10 5 16 1 + 11 6 19 1 + 12 6 7 1 + 13 7 14 am + 14 7 8 am + 15 8 10 1 + 16 8 9 2 + 17 10 12 2 + 18 10 11 1 + 19 11 22 1 + 20 11 21 1 + 21 11 20 1 + 22 12 23 1 + 23 12 13 1 + 24 13 24 1 + 25 13 14 2 +@SUBSTRUCTURE + 1 VIPX 1 +@COMMENT +COMMENT 3,7-DIMETHYL-1H-PYRIMIDO(1,2-A)PYRIMIDINE-2,6-DIONE HYDROGE +@MOLECULE +VIRBON + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 7.8686 2.2224 -0.1160 O.2 1 VIRB -0.5700 + 2 O2 4.3794 2.4889 2.7874 O.2 1 VIRB -0.5700 + 3 N1 5.1849 4.4659 0.8540 N.1 1 VIRB 0.3566 + 4 N2 5.4407 5.5650 1.0155 N.2 1 VIRB -0.3700 + 5 C1 7.5376 2.0007 1.0284 C.2 1 VIRB 0.4640 + 6 C2 8.1311 2.3356 2.4137 C.3 1 VIRB 0.0530 + 7 C3 9.6365 2.2950 2.6125 C.3 1 VIRB 0.0000 + 8 C4 10.1824 0.8761 2.6805 C.3 1 VIRB 0.0000 + 9 C5 9.3902 0.0331 3.6787 C.3 1 VIRB 0.0000 + 10 C6 7.9768 -0.1878 3.1560 C.3 1 VIRB 0.0000 + 11 C7 7.2549 1.1499 2.9623 C.3 1 VIRB 0.0000 + 12 C8 6.3040 1.3012 1.6816 C.3 1 VIRB 0.1060 + 13 C9 5.8299 0.0351 0.9791 C.3 1 VIRB 0.0000 + 14 C10 5.1435 2.3390 1.8427 C.2 1 VIRB 0.5170 + 15 C11 4.9097 3.1988 0.6594 C.2 1 VIRB -0.0466 + 16 H1 7.7587 3.3181 2.7431 H 1 VIRB 0.0000 + 17 H2 10.1441 2.8593 1.8220 H 1 VIRB 0.0000 + 18 H3 9.8790 2.7998 3.5566 H 1 VIRB 0.0000 + 19 H4 10.1474 0.4117 1.6875 H 1 VIRB 0.0000 + 20 H5 11.2358 0.9090 2.9813 H 1 VIRB 0.0000 + 21 H6 9.8835 -0.9367 3.8090 H 1 VIRB 0.0000 + 22 H7 9.3666 0.5241 4.6587 H 1 VIRB 0.0000 + 23 H8 8.0588 -0.7433 2.2174 H 1 VIRB 0.0000 + 24 H9 7.4095 -0.8199 3.8484 H 1 VIRB 0.0000 + 25 H10 6.7620 1.4265 3.9049 H 1 VIRB 0.0000 + 26 H11 5.1939 -0.5596 1.6429 H 1 VIRB 0.0000 + 27 H12 5.2449 0.2778 0.0850 H 1 VIRB 0.0000 + 28 H13 6.6598 -0.5932 0.6439 H 1 VIRB 0.0000 + 29 H14 4.5475 2.7513 -0.2716 H 1 VIRB 0.0600 +@BOND + 1 1 5 2 + 2 2 14 2 + 3 3 15 2 + 4 3 4 2 + 5 5 12 1 + 6 5 6 1 + 7 6 16 1 + 8 6 11 1 + 9 6 7 1 + 10 7 18 1 + 11 7 17 1 + 12 7 8 1 + 13 8 20 1 + 14 8 19 1 + 15 8 9 1 + 16 9 22 1 + 17 9 21 1 + 18 9 10 1 + 19 10 24 1 + 20 10 23 1 + 21 10 11 1 + 22 11 25 1 + 23 11 12 1 + 24 12 14 1 + 25 12 13 1 + 26 13 28 1 + 27 13 27 1 + 28 13 26 1 + 29 14 15 1 + 30 15 29 1 +@SUBSTRUCTURE + 1 VIRB 1 +@COMMENT +COMMENT 8-DIAZOACETYL-8-METHYLBICYCLO(4.2.0)OCTAN-7-ONE (AT -125 DE +@MOLECULE +VIWCOT + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.0585 8.7243 1.8204 C.2 1 UNCH 0.7910 + 2 C2 1.0804 9.0285 0.7974 C.2 1 UNCH -0.2400 + 3 C3 0.5216 10.0231 1.7715 C.3 1 UNCH 0.3959 + 4 C4 0.8662 8.5890 -0.4440 C.2 1 UNCH -0.1474 + 5 C5 -0.1820 9.0247 -1.3751 C.2 1 UNCH 0.0284 + 6 C6 -1.4686 9.3753 -0.9474 C.2 1 UNCH -0.1500 + 7 C7 -2.4408 9.7724 -1.8699 C.2 1 UNCH -0.1500 + 8 C8 -2.1386 9.8159 -3.2291 C.2 1 UNCH -0.1500 + 9 C9 -0.8669 9.4563 -3.6682 C.2 1 UNCH -0.1500 + 10 C10 0.1046 9.0583 -2.7464 C.2 1 UNCH -0.1500 + 11 O1 1.5601 9.6207 2.6971 O.3 1 UNCH -0.4079 + 12 O2 3.0012 7.9682 1.9274 O.2 1 UNCH -0.5700 + 13 H1 -0.4740 9.8223 2.1787 H 1 UNCH 0.0000 + 14 H2 0.6059 11.0815 1.5064 H 1 UNCH 0.0000 + 15 H3 1.5498 7.8343 -0.8308 H 1 UNCH 0.1500 + 16 H4 -1.7423 9.3250 0.1023 H 1 UNCH 0.1500 + 17 H5 -3.4371 10.0403 -1.5272 H 1 UNCH 0.1500 + 18 H6 -2.8956 10.1232 -3.9461 H 1 UNCH 0.1500 + 19 H7 -0.6296 9.4839 -4.7287 H 1 UNCH 0.1500 + 20 H8 1.0919 8.7829 -3.1115 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 11 1 + 3 1 12 2 + 4 2 3 1 + 5 2 4 2 + 6 3 11 1 + 7 3 13 1 + 8 3 14 1 + 9 4 5 1 + 10 4 15 1 + 11 5 6 2 + 12 5 10 1 + 13 6 7 1 + 14 6 16 1 + 15 7 8 2 + 16 7 17 1 + 17 8 9 1 + 18 8 18 1 + 19 9 10 2 + 20 9 19 1 + 21 10 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-3-PHENYLMETHYLENE-2-OXETANONE +@MOLECULE +VIXRID + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.4822 2.7197 2.8962 N.3 1 VIXR 0.0476 + 2 N2 1.3767 1.8279 4.7190 N.2 1 VIXR -0.5653 + 3 N3 4.5382 1.4589 2.2835 N.2 1 VIXR -0.5200 + 4 S1 3.9096 1.2038 3.8157 S.3 1 VIXR 0.0150 + 5 O1 1.9932 2.9925 0.2991 O.2 1 VIXR -0.5700 + 6 C1 0.2956 2.3758 4.2064 C.2 1 VIXR 0.0365 + 7 C2 3.8696 2.0027 1.3126 C.2 1 VIXR 0.3900 + 8 C3 2.4496 2.5072 1.3259 C.2 1 VIXR 0.6550 + 9 C4 2.2874 1.8213 3.6995 C.2 1 VIXR 0.2822 + 10 C5 1.7614 2.3669 2.5599 C.2 1 VIXR -0.2366 + 11 C6 -0.4965 3.3394 2.0375 C.3 1 VIXR 0.2556 + 12 H1 -0.6345 2.5432 4.7354 H 1 VIXR 0.1500 + 13 H2 4.3705 2.1285 0.3390 H 1 VIXR 0.0600 + 14 H3 -1.4235 3.4967 2.5950 H 1 VIXR 0.0000 + 15 H4 -0.1028 4.3010 1.6990 H 1 VIXR 0.0000 + 16 H5 -0.6848 2.6762 1.1897 H 1 VIXR 0.0000 +@BOND + 1 1 11 1 + 2 1 10 1 + 3 1 6 am + 4 2 9 1 + 5 2 6 2 + 6 3 7 2 + 7 3 4 1 + 8 4 9 1 + 9 5 8 2 + 10 6 12 1 + 11 7 13 1 + 12 7 8 1 + 13 8 10 1 + 14 9 10 2 + 15 11 16 1 + 16 11 15 1 + 17 11 14 1 +@SUBSTRUCTURE + 1 VIXR 1 +@COMMENT +COMMENT 5-METHYLIMIDAZO(4,5-E)-1,2-THIAZON-4-ONE (CYTOTOXIC ACTIVIT +@MOLECULE +VIXXOP + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.3140 4.4977 2.8849 S.2 1 UNCH 0.3900 + 2 S2 0.4677 4.3426 0.1966 S.2 1 UNCH 0.3900 + 3 F1 2.4629 3.3198 1.7227 F 1 UNCH -0.2980 + 4 F2 2.4240 5.5248 1.5933 F 1 UNCH -0.2980 + 5 C1 1.6755 4.4037 1.6151 C.3 1 UNCH 0.9400 + 6 N1 -0.5087 4.0131 1.5128 N.3 1 UNCH -0.3940 + 7 O1 0.5132 3.3900 3.8761 O.2 1 UNCH -0.5000 + 8 O2 0.7710 3.1300 -0.6320 O.2 1 UNCH -0.5000 + 9 C2 -1.9446 4.2101 1.4193 C.3 1 UNCH 0.2700 + 10 H1 -2.3533 3.6949 0.5429 H 1 UNCH 0.0000 + 11 H2 -2.4536 3.7961 2.2969 H 1 UNCH 0.0000 + 12 H3 -2.2011 5.2727 1.3434 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 6 1 + 3 1 7 2 + 4 2 5 1 + 5 2 6 1 + 6 2 8 2 + 7 3 5 1 + 8 4 5 1 + 9 6 9 1 + 10 9 10 1 + 11 9 11 1 + 12 9 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,4-DIFLUORO-2-METHYL-1LAMBDA-3-,3LAMBDA-3--DITHIA-2-AZACYC +@MOLECULE +VIYPAU + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -0.6071 -2.2339 -1.3284 BR 1 VIYP -0.2190 + 2 O1 -2.7153 -1.2350 -5.9079 O.3 1 VIYP -0.5600 + 3 O2 -1.7171 0.8997 -5.8494 O.3 1 VIYP -0.5600 + 4 O3 -0.8899 -1.6012 -4.4702 O.3 1 VIYP -0.5379 + 5 O4 -1.0317 0.4401 -2.2355 O.3 1 VIYP -0.5158 + 6 O5 2.4794 -0.7230 -1.8026 O.2 1 VIYP -0.5700 + 7 O6 1.2723 0.9291 -0.7949 O.3 1 VIYP -0.4300 + 8 C1 -1.2056 -0.5820 -7.6736 C.3 1 VIYP 0.0000 + 9 C2 -3.4806 0.4542 -7.4245 C.3 1 VIYP 0.0000 + 10 C3 -2.2754 -0.1218 -6.6906 C.3 1 VIYP 0.5600 + 11 C4 -2.1955 -1.0201 -4.6091 C.3 1 VIYP 0.5600 + 12 C5 -2.0024 0.4822 -4.5065 C.3 1 VIYP 0.2800 + 13 C6 -0.0325 -0.6482 -3.7834 C.3 1 VIYP 0.2579 + 14 C7 -0.7750 0.6839 -3.6443 C.3 1 VIYP 0.2579 + 15 C8 0.0038 -0.6095 -2.2307 C.3 1 VIYP 0.5299 + 16 C9 1.3951 -0.1739 -1.6024 C.2 1 VIYP 0.6670 + 17 C10 2.4898 1.3587 -0.1830 C.3 1 VIYP 0.2800 + 18 H1 -0.8503 0.2489 -8.2921 H 1 VIYP 0.0000 + 19 H2 -1.5792 -1.3807 -8.3228 H 1 VIYP 0.0000 + 20 H3 -3.9473 -0.2944 -8.0733 H 1 VIYP 0.0000 + 21 H5 -4.2435 0.7824 -6.7090 H 1 VIYP 0.0000 + 22 H6 -2.8526 -1.4366 -3.8401 H 1 VIYP 0.0000 + 23 H7 -2.8912 1.0182 -4.1608 H 1 VIYP 0.0000 + 24 H8 0.9418 -0.5782 -4.2764 H 1 VIYP 0.0000 + 25 H9 -0.1985 1.6011 -3.7952 H 1 VIYP 0.0000 + 26 H10 2.2654 2.2252 0.4451 H 1 VIYP 0.0000 + 27 H11 3.2143 1.6615 -0.9452 H 1 VIYP 0.0000 + 28 H12 2.8999 0.5675 0.4522 H 1 VIYP 0.0000 + 29 H4 -0.3349 -0.9795 -7.1403 H 1 VIYP 0.0000 + 30 H13 -3.2025 1.3277 -8.0234 H 1 VIYP 0.0000 +@BOND + 1 1 15 1 + 2 2 11 1 + 3 2 10 1 + 4 3 12 1 + 5 3 10 1 + 6 4 13 1 + 7 4 11 1 + 8 5 15 1 + 9 5 14 1 + 10 6 16 2 + 11 7 17 1 + 12 7 16 1 + 13 8 29 1 + 14 8 19 1 + 15 8 18 1 + 16 8 10 1 + 17 9 30 1 + 18 9 21 1 + 19 9 20 1 + 20 9 10 1 + 21 11 22 1 + 22 11 12 1 + 23 12 23 1 + 24 12 14 1 + 25 13 24 1 + 26 13 15 1 + 27 13 14 1 + 28 14 25 1 + 29 15 16 1 + 30 17 28 1 + 31 17 27 1 + 32 17 26 1 +@SUBSTRUCTURE + 1 VIYP 1 +@COMMENT +COMMENT METHYL 3,5-ANHYDRO-5-BROMO-1,2-O-ISOPROPYLIDENE-ALPHA-D-GLU +@MOLECULE +VOBLAZ + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.4252 8.5273 -1.4182 C.2 1 UNCH 0.2705 + 2 C2 4.9576 10.7174 -0.5295 C.3 1 UNCH 0.3691 + 3 C3 3.4566 11.0295 -0.6142 C.3 1 UNCH 0.0610 + 4 C4 2.7598 10.2962 -1.7321 C.2 1 UNCH 0.5180 + 5 C5 2.8138 8.0610 -2.8719 C.2 1 UNCH -0.1516 + 6 C6 1.7149 7.9937 -3.7402 C.2 1 UNCH -0.1500 + 7 C7 1.5545 6.8177 -4.4816 C.2 1 UNCH -0.1500 + 8 C8 2.4523 5.7568 -4.3589 C.2 1 UNCH -0.1500 + 9 C9 3.5439 5.8417 -3.4869 C.2 1 UNCH -0.1500 + 10 C10 3.7226 7.0133 -2.7353 C.2 1 UNCH 0.2272 + 11 C11 5.7374 11.3599 -1.6880 C.3 1 UNCH 0.0000 + 12 C12 5.5125 11.2491 0.8005 C.3 1 UNCH 0.0000 + 13 N1 5.1426 9.2703 -0.5483 N.3 1 UNCH -0.8531 + 14 N2 3.2776 9.0300 -1.9992 N.3 1 UNCH 0.2942 + 15 N3 4.7093 7.3212 -1.8343 N.2 1 UNCH -0.5653 + 16 O1 1.7721 10.7088 -2.3278 O.2 1 UNCH -0.5700 + 17 H1 6.0829 8.9270 -0.3568 H 1 UNCH 0.4000 + 18 H2 3.2969 12.1052 -0.7538 H 1 UNCH 0.0000 + 19 H3 2.9471 10.7381 0.3139 H 1 UNCH 0.0000 + 20 H4 1.0109 8.8151 -3.8383 H 1 UNCH 0.1500 + 21 H5 0.7120 6.7308 -5.1651 H 1 UNCH 0.1500 + 22 H6 2.3048 4.8533 -4.9459 H 1 UNCH 0.1500 + 23 H7 4.2459 5.0209 -3.3875 H 1 UNCH 0.1500 + 24 H8 6.8049 11.1180 -1.6251 H 1 UNCH 0.0000 + 25 H9 5.6389 12.4510 -1.6712 H 1 UNCH 0.0000 + 26 H10 5.3868 11.0105 -2.6653 H 1 UNCH 0.0000 + 27 H11 5.0091 10.7832 1.6558 H 1 UNCH 0.0000 + 28 H12 6.5827 11.0325 0.8992 H 1 UNCH 0.0000 + 29 H13 5.3792 12.3336 0.8806 H 1 UNCH 0.0000 +@BOND + 1 1 13 am + 2 1 14 am + 3 1 15 2 + 4 2 3 1 + 5 2 11 1 + 6 2 12 1 + 7 2 13 1 + 8 3 4 1 + 9 3 18 1 + 10 3 19 1 + 11 4 14 am + 12 4 16 2 + 13 5 6 2 + 14 5 10 1 + 15 5 14 1 + 16 6 7 1 + 17 6 20 1 + 18 7 8 2 + 19 7 21 1 + 20 8 9 1 + 21 8 22 1 + 22 9 10 2 + 23 9 23 1 + 24 10 15 1 + 25 11 24 1 + 26 11 25 1 + 27 11 26 1 + 28 12 27 1 + 29 12 28 1 + 30 12 29 1 + 31 13 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2-DIMETHYL-1,2,3,4-TETRAHYDROBENZIMIDAZO(3,2-A)PYRIMID-4- +@MOLECULE +VOBWOY + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2035 4.9959 0.7675 C.3 1 VOBW 0.2487 + 2 S1 4.2593 6.0835 -0.1759 S.3 1 VOBW 1.3328 + 3 O1 5.1624 5.2679 -0.9591 O.3 1 VOBW -0.6500 + 4 O2 4.7477 7.1444 0.6769 O.3 1 VOBW -0.6500 + 5 N1 3.1745 6.7495 -1.2666 N.3 1 VOBW -0.9137 + 6 C2 2.0851 7.5005 -0.6499 C.3 1 VOBW 0.4992 + 7 C3 0.0548 7.2098 0.7747 C.2 1 VOBW -0.1500 + 8 C4 -0.6911 6.5806 1.7699 C.2 1 VOBW -0.1500 + 9 C5 -0.1732 5.4695 2.4226 C.2 1 VOBW -0.1500 + 10 C6 1.0916 4.9921 2.0824 C.2 1 VOBW -0.1500 + 11 C7 1.8651 5.6199 1.0862 C.2 1 VOBW -0.1435 + 12 C8 1.3288 6.7347 0.4100 C.2 1 VOBW -0.1435 + 13 H1 3.7513 4.7461 1.6818 H 1 VOBW 0.0000 + 14 H2 3.0515 4.0908 0.1705 H 1 VOBW 0.0000 + 15 H3 2.9029 6.0945 -1.9981 H 1 VOBW 0.4200 + 16 H4 2.4785 8.4279 -0.2179 H 1 VOBW 0.0000 + 17 H5 1.3925 7.7800 -1.4531 H 1 VOBW 0.0000 + 18 H6 -0.3656 8.0855 0.2822 H 1 VOBW 0.1500 + 19 H7 -1.6738 6.9608 2.0375 H 1 VOBW 0.1500 + 20 H8 -0.7515 4.9751 3.1991 H 1 VOBW 0.1500 + 21 H9 1.4764 4.1185 2.6071 H 1 VOBW 0.1500 +@BOND + 1 1 2 1 + 2 1 11 1 + 3 1 13 1 + 4 1 14 1 + 5 2 3 1 + 6 2 4 1 + 7 2 5 1 + 8 5 6 1 + 9 5 15 1 + 10 6 12 1 + 11 6 16 1 + 12 6 17 1 + 13 7 8 2 + 14 7 12 1 + 15 7 18 1 + 16 8 9 1 + 17 8 19 1 + 18 9 10 2 + 19 9 20 1 + 20 10 11 1 + 21 10 21 1 + 22 11 12 2 +@SUBSTRUCTURE + 1 VOBW 1 +@COMMENT +COMMENT 1H-3,4-DIHYDRO-2,3-BENZOTHIAZINE 2,2-DIOXIDE +@MOLECULE +VOFBOH + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 5.6313 2.1569 2.2160 BR 1 VOFB -0.1430 + 2 BR2 2.9034 3.5840 2.8743 BR 1 VOFB -0.1430 + 3 O1 8.5545 6.7906 1.3630 O.3 1 VOFB -0.6500 + 4 O2 6.8097 6.8208 -0.0236 O.2 1 VOFB -0.5700 + 5 C1 4.6192 3.7695 2.0332 C.3 1 VOFB 0.2860 + 6 C2 5.3115 5.1326 1.8842 C.3 1 VOFB -0.0630 + 7 C3 4.6265 4.4621 0.7028 C.3 1 VOFB -0.2000 + 8 C4 6.8362 5.2199 1.8281 C.3 1 VOFB 0.1560 + 9 C5 7.3430 6.3500 0.9676 C.2 1 VOFB 0.6590 + 10 C6 4.6640 6.3588 2.5393 C.2 1 VOFB -0.0320 + 11 C7 4.1097 7.4026 1.7779 C.2 1 VOFB -0.1500 + 12 C8 3.5394 8.5259 2.3826 C.2 1 VOFB -0.1500 + 13 C9 3.5166 8.6341 3.7694 C.2 1 VOFB -0.1500 + 14 C10 4.0684 7.6230 4.5493 C.2 1 VOFB -0.1500 + 15 C11 4.6388 6.5029 3.9391 C.2 1 VOFB -0.1500 + 16 H1 3.6977 4.8800 0.3291 H 1 VOFB 0.1000 + 17 H2 5.2445 4.0601 -0.0932 H 1 VOFB 0.1000 + 18 H3 7.2877 4.3116 1.4169 H 1 VOFB 0.0000 + 19 H4 7.2195 5.3479 2.8476 H 1 VOFB 0.0000 + 20 H5 4.1305 7.3484 0.6906 H 1 VOFB 0.1500 + 21 H6 3.1171 9.3159 1.7671 H 1 VOFB 0.1500 + 22 H7 3.0720 9.5063 4.2411 H 1 VOFB 0.1500 + 23 H8 4.0556 7.7030 5.6331 H 1 VOFB 0.1500 + 24 H9 5.0656 5.7247 4.5691 H 1 VOFB 0.1500 + 25 H10 8.7682 7.5031 0.7243 H 1 VOFB 0.5000 +@BOND + 1 1 5 1 + 2 2 5 1 + 3 3 9 1 + 4 3 25 1 + 5 4 9 2 + 6 5 6 1 + 7 5 7 1 + 8 6 7 1 + 9 6 8 1 + 10 6 10 1 + 11 7 16 1 + 12 7 17 1 + 13 8 9 1 + 14 8 18 1 + 15 8 19 1 + 16 10 11 2 + 17 10 15 1 + 18 11 12 1 + 19 11 20 1 + 20 12 13 2 + 21 12 21 1 + 22 13 14 1 + 23 13 22 1 + 24 14 15 2 + 25 14 23 1 + 26 15 24 1 +@SUBSTRUCTURE + 1 VOFB 1 +@COMMENT +COMMENT 2-(2,2-DIBROMO-1-PHENYLCYCLOPROPYL)ETHANOIC ACID (AT -140 D +@MOLECULE +VOFCAU + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 4.7291 1.3233 5.1382 BR 1 UNCH -0.2300 + 2 CL1 7.3513 -2.5636 6.6476 CL 1 UNCH -0.2273 + 3 CL2 5.6887 -2.7830 9.0412 CL 1 UNCH -0.2273 + 4 C1 6.1099 -1.7946 7.6369 C.3 1 UNCH 0.4546 + 5 C2 5.0943 -0.8315 7.0034 C.3 1 UNCH -0.0630 + 6 C3 6.2278 -0.3196 7.8808 C.3 1 UNCH -0.2000 + 7 C4 5.1872 -0.5391 5.5191 C.3 1 UNCH 0.3250 + 8 C5 3.6605 -0.8338 7.5505 C.2 1 UNCH -0.0320 + 9 C6 2.8050 -1.9306 7.3337 C.2 1 UNCH -0.1500 + 10 C7 1.4933 -1.9420 7.8149 C.2 1 UNCH -0.1500 + 11 C8 1.0019 -0.8489 8.5209 C.2 1 UNCH -0.1500 + 12 C9 1.8207 0.2535 8.7430 C.2 1 UNCH -0.1500 + 13 C10 3.1325 0.2592 8.2612 C.2 1 UNCH -0.1500 + 14 H1 7.0479 0.2140 7.4129 H 1 UNCH 0.1000 + 15 H2 6.0005 0.0519 8.8738 H 1 UNCH 0.1000 + 16 H3 6.1946 -0.6496 5.1109 H 1 UNCH 0.0000 + 17 H4 4.5015 -1.1594 4.9343 H 1 UNCH 0.0000 + 18 H5 3.1660 -2.7990 6.7857 H 1 UNCH 0.1500 + 19 H6 0.8576 -2.8058 7.6382 H 1 UNCH 0.1500 + 20 H7 -0.0181 -0.8551 8.8958 H 1 UNCH 0.1500 + 21 H8 1.4399 1.1129 9.2888 H 1 UNCH 0.1500 + 22 H9 3.7476 1.1392 8.4386 H 1 UNCH 0.1500 +@BOND + 1 1 7 1 + 2 2 4 1 + 3 3 4 1 + 4 4 5 1 + 5 4 6 1 + 6 5 6 1 + 7 5 7 1 + 8 5 8 1 + 9 6 14 1 + 10 6 15 1 + 11 7 16 1 + 12 7 17 1 + 13 8 9 2 + 14 8 13 1 + 15 9 10 1 + 16 9 18 1 + 17 10 11 2 + 18 10 19 1 + 19 11 12 1 + 20 11 20 1 + 21 12 13 2 + 22 12 21 1 + 23 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-BROMOMETHYL-1,1-DICHLORO-2-PHENYLCYCLOPROPANE (AT -135 DE +@MOLECULE +VOJGEG + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O3 -2.2179 0.6733 10.0279 O.3 1 VOJG -0.6500 + 2 O4 -1.8950 2.1831 8.3635 O.2 1 VOJG -0.4500 + 3 C3 -1.1678 -0.0813 7.9875 C.3 1 VOJG 0.0610 + 4 C4 -1.7829 0.9887 8.8089 C.2 1 VOJG 1.0390 + 5 H2 -2.0840 -0.2703 10.2722 H 1 VOJG 0.5000 + 6 H3 -2.3265 2.7399 9.0550 H 1 VOJG 0.5000 + 7 H10 -0.8625 0.3265 7.0211 H 1 VOJG 0.0000 + 8 H11 -0.2933 -0.4827 8.5057 H 1 VOJG 0.0000 + 9 H12 -1.8924 -0.8842 7.8312 H 1 VOJG 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 4 2 + 4 2 6 1 + 5 3 4 1 + 6 3 7 1 + 7 3 8 1 + 8 3 9 1 +@SUBSTRUCTURE + 1 VOJG 1 +@COMMENT +COMMENT ACETACIDINIUM ACETIC ACID TRIFLUOROMETHANESULFONATE (AT -13 +@MOLECULE +VOJJIN + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.0879 2.7860 9.9440 P 1 VOJJ 0.9362 + 2 O1 1.1740 3.6081 10.0725 O.3 1 VOJJ -0.9500 + 3 N1 -1.0556 1.0329 8.0986 N.2 1 VOJJ -0.2100 + 4 O2 -1.4198 3.4775 9.7162 O.3 1 VOJJ -0.9500 + 5 N2 -0.2468 -0.9157 9.2910 N.3 1 VOJJ -0.9000 + 6 C1 -1.2144 -0.2351 8.5435 C.2 1 VOJJ 0.4610 + 7 C2 -2.3733 -0.9361 8.1697 C.2 1 VOJJ -0.1500 + 8 C3 -3.3795 -0.3107 7.4434 C.2 1 VOJJ -0.1500 + 9 C4 -3.2235 1.0184 7.0932 C.2 1 VOJJ -0.1500 + 10 C5 -2.0517 1.6745 7.4408 C.2 1 VOJJ 0.2110 + 11 C6 0.1567 1.8192 8.4014 C.3 1 VOJJ 0.4880 + 12 H1 -0.1786 1.7954 10.9447 H 1 VOJJ -0.0362 + 13 H3 -2.4988 -1.9755 8.4643 H 1 VOJJ 0.1500 + 14 H4 -4.2857 -0.8498 7.1772 H 1 VOJJ 0.1500 + 15 H5 -4.0092 1.5521 6.5650 H 1 VOJJ 0.1500 + 16 H6 -1.9022 2.7289 7.2164 H 1 VOJJ 0.1500 + 17 H7 0.5505 -0.3993 9.6404 H 1 VOJJ 0.4000 + 18 H8 -0.6511 -1.4898 10.0289 H 1 VOJJ 0.4000 + 19 H13 0.3335 2.5054 7.5651 H 1 VOJJ 0.0000 + 20 H14 1.0281 1.1647 8.4699 H 1 VOJJ 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 11 1 + 4 1 12 1 + 5 3 6 2 + 6 3 10 1 + 7 3 11 1 + 8 5 6 am + 9 5 17 1 + 10 5 18 1 + 11 6 7 1 + 12 7 8 2 + 13 7 13 1 + 14 8 9 1 + 15 8 14 1 + 16 9 10 2 + 17 9 15 1 + 18 10 16 1 + 19 11 19 1 + 20 11 20 1 +@SUBSTRUCTURE + 1 VOJJ 1 +@COMMENT +COMMENT (1-(2-AMINOPYRIDINIO))METHYLPHOSPHONITE MONOHYDRATE (AT -15 +@MOLECULE +VUWXUG + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.1326 2.7484 -0.7778 O.3 1 CHGB -0.7120 + 2 C1 -0.1903 0.7437 0.1965 C.2 1 CHGB 0.6300 + 3 N1 -0.4738 1.5328 -0.9252 N.3 1 CHGB -0.7180 + 4 O2 -0.1968 1.0800 1.3793 O.2 1 CHGB -0.5700 + 5 H1 -0.5916 1.0431 -1.8066 H 1 CHGB 0.3700 + 6 C1A 0.1903 -0.7437 -0.1965 C.2 1 CHGB 0.6300 + 7 N1A 0.4738 -1.5328 0.9252 N.3 1 CHGB -0.7180 + 8 O2A 0.1968 -1.0800 -1.3793 O.2 1 CHGB -0.5700 + 9 O1A 1.1326 -2.7484 0.7778 O.3 1 CHGB -0.7120 + 10 H1A 0.5916 -1.0431 1.8066 H 1 CHGB 0.3700 +@BOND + 1 1 3 1 + 2 2 6 1 + 3 2 4 2 + 4 2 3 am + 5 3 5 1 + 6 6 8 2 + 7 6 7 am + 8 7 10 1 + 9 7 9 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT AMMONIUM OXALOHYDROXAMATE (changed by TAH to the dianion) +@MOLECULE +VUXGOK + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.3878 1.4496 8.9814 O.3 1 VUXG -0.2800 + 2 O2 0.6720 2.9214 7.1889 O.2 1 VUXG -0.5700 + 3 C1 2.2641 2.2094 8.7807 C.2 1 VUXG 0.0550 + 4 C2 1.8586 2.7537 9.9851 C.2 1 VUXG 0.0830 + 5 C3 2.7684 2.3105 10.9796 C.2 1 VUXG 0.0000 + 6 C4 3.6875 1.5125 10.3081 C.2 1 VUXG 0.1400 + 7 C5 4.7623 0.8718 10.9212 C.2 1 VUXG -0.1500 + 8 C6 4.9004 1.0631 12.2999 C.2 1 VUXG -0.1500 + 9 C7 3.9999 1.8592 13.0124 C.2 1 VUXG -0.1500 + 10 C8 2.9274 2.4915 12.3666 C.2 1 VUXG -0.1500 + 11 C9 1.7112 2.3097 7.4479 C.2 1 VUXG 0.5940 + 12 C10 2.4705 1.6080 6.3484 C.3 1 VUXG 0.0610 + 13 N1 0.7953 3.5600 10.1755 N.3 1 VUXG -0.8830 + 14 H1 5.4525 0.2592 10.3543 H 1 VUXG 0.1500 + 15 H2 5.7245 0.5843 12.8250 H 1 VUXG 0.1500 + 16 H3 4.1322 1.9932 14.0841 H 1 VUXG 0.1500 + 17 H4 2.2355 3.1114 12.9279 H 1 VUXG 0.1500 + 18 H5 1.9694 1.7793 5.3909 H 1 VUXG 0.0000 + 19 H6 3.4871 2.0054 6.2819 H 1 VUXG 0.0000 + 20 H7 2.4962 0.5317 6.5392 H 1 VUXG 0.0000 + 21 H8 0.4271 3.7608 11.0993 H 1 VUXG 0.4000 + 22 H9 0.1235 3.7108 9.4208 H 1 VUXG 0.4000 +@BOND + 1 1 6 1 + 2 1 3 1 + 3 2 11 2 + 4 3 11 1 + 5 3 4 2 + 6 4 13 1 + 7 4 5 1 + 8 5 10 1 + 9 5 6 2 + 10 6 7 1 + 11 7 14 1 + 12 7 8 2 + 13 8 15 1 + 14 8 9 1 + 15 9 16 1 + 16 9 10 2 + 17 10 17 1 + 18 11 12 1 + 19 12 20 1 + 20 12 19 1 + 21 12 18 1 + 22 13 22 1 + 23 13 21 1 +@SUBSTRUCTURE + 1 VUXG 1 +@COMMENT +COMMENT 2-ACETYL-3-AMINOBENZOFURAN +@MOLECULE +VUXPUZ + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.5552 4.3911 3.0667 S.3 1 UNCH 1.3328 + 2 O1 1.5642 5.0530 3.8817 O.3 1 UNCH -0.6500 + 3 O2 2.2213 3.2971 2.1826 O.3 1 UNCH -0.6500 + 4 O3 1.9556 8.2077 0.4116 O.3 1 UNCH -0.0191 + 5 N1 3.6279 3.7142 4.1762 N.3 1 UNCH -0.9780 + 6 N2 2.6841 7.7193 1.4827 N.2 1 UNCH -0.4097 + 7 C1 3.6007 5.5808 2.2207 C.3 1 UNCH 0.2862 + 8 C2 2.8332 6.4047 1.2571 C.2 1 UNCH 0.1078 + 9 C3 2.2364 6.0211 0.0258 C.2 1 UNCH 0.0000 + 10 C4 1.6932 7.1984 -0.4587 C.2 1 UNCH 0.1400 + 11 C5 0.9944 7.3101 -1.6577 C.2 1 UNCH -0.1500 + 12 C6 0.8514 6.1345 -2.4015 C.2 1 UNCH -0.1500 + 13 C7 1.3881 4.9250 -1.9506 C.2 1 UNCH -0.1500 + 14 C8 2.0876 4.8492 -0.7364 C.2 1 UNCH -0.1500 + 15 H1 3.3212 3.9393 5.1260 H 1 UNCH 0.4200 + 16 H2 3.7048 2.7081 4.0112 H 1 UNCH 0.4200 + 17 H3 4.3857 5.0175 1.7064 H 1 UNCH 0.0000 + 18 H4 4.0602 6.2050 2.9946 H 1 UNCH 0.0000 + 19 H5 0.5866 8.2568 -1.9903 H 1 UNCH 0.1500 + 20 H6 0.3114 6.1624 -3.3461 H 1 UNCH 0.1500 + 21 H7 1.2577 4.0242 -2.5478 H 1 UNCH 0.1500 + 22 H8 2.4898 3.8970 -0.4014 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 5 1 + 4 1 7 1 + 5 4 6 1 + 6 4 10 1 + 7 5 15 1 + 8 5 16 1 + 9 6 8 2 + 10 7 8 1 + 11 7 17 1 + 12 7 18 1 + 13 8 9 1 + 14 9 10 2 + 15 9 14 1 + 16 10 11 1 + 17 11 12 2 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 13 14 2 + 22 13 21 1 + 23 14 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1,2-BENZISOXAZOL-3-YL)-METHANESULFONAMIDE (ANTIEPILEPTIC D +@MOLECULE +VUXREL + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.0321 6.7575 10.8502 O.3 1 UNCH -0.3090 + 2 C1 0.2029 7.7633 11.2574 C.2 1 UNCH -0.0100 + 3 C2 -0.9725 7.8177 10.5409 C.2 1 UNCH -0.1630 + 4 C3 -0.8292 6.7527 9.6297 C.2 1 UNCH -0.0510 + 5 C4 0.3585 6.1525 9.8393 C.2 1 UNCH 0.1820 + 6 C5 0.5521 5.0813 8.9553 C.2 1 UNCH -0.1630 + 7 C6 -0.6071 5.0629 8.1805 C.2 1 UNCH -0.2366 + 8 N1 -1.4425 6.0899 8.6037 N.3 1 UNCH -0.0544 + 9 C7 -0.9880 4.1811 7.0997 C.2 1 UNCH 0.8050 + 10 O2 -2.0427 4.2579 6.4831 O.2 1 UNCH -0.5700 + 11 O3 -0.0093 3.2635 6.8734 O.3 1 UNCH -0.4300 + 12 C8 -0.3006 2.3442 5.8158 C.3 1 UNCH 0.2800 + 13 C9 0.8709 1.3909 5.6817 C.3 1 UNCH 0.0000 + 14 H1 0.5918 8.3584 12.0730 H 1 UNCH 0.1500 + 15 H2 -1.7874 8.5144 10.6658 H 1 UNCH 0.1500 + 16 H3 1.4015 4.4170 8.8834 H 1 UNCH 0.1500 + 17 H4 -2.3540 6.3209 8.2261 H 1 UNCH 0.2700 + 18 H5 -0.4407 2.8918 4.8771 H 1 UNCH 0.0000 + 19 H6 -1.2098 1.7811 6.0544 H 1 UNCH 0.0000 + 20 H7 1.0372 0.8503 6.6194 H 1 UNCH 0.0000 + 21 H8 0.6944 0.6658 4.8824 H 1 UNCH 0.0000 + 22 H9 1.7923 1.9408 5.4636 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 14 1 + 5 3 4 1 + 6 3 15 1 + 7 4 5 2 + 8 4 8 1 + 9 5 6 1 + 10 6 7 2 + 11 6 16 1 + 12 7 8 1 + 13 7 9 1 + 14 8 17 1 + 15 9 10 2 + 16 9 11 1 + 17 11 12 1 + 18 12 13 1 + 19 12 18 1 + 20 12 19 1 + 21 13 20 1 + 22 13 21 1 + 23 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ETHYL 4H-FURO(3,2-B)PYRROLE-5-CARBOXYLATE +@MOLECULE +ZZZIZA01 + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.9227 0.0000 0.4349 C.2 1 ZZZI 0.1380 + 2 C2 4.3175 1.2197 -0.1192 C.2 1 ZZZI -0.1500 + 3 N7 3.1171 0.0000 1.5655 N.1 1 ZZZI 0.2320 + 4 C9 2.4372 0.0000 2.5198 C.1 1 ZZZI -0.3700 + 5 H2 3.9990 2.1580 0.3279 H 1 ZZZI 0.1500 + 6 C2F 4.3175 -1.2197 -0.1192 C.2 1 ZZZI -0.1500 + 7 C2B 5.1270 1.2197 -1.2553 C.2 1 ZZZI -0.1500 + 8 C2D 5.1270 -1.2197 -1.2553 C.2 1 ZZZI -0.1500 + 9 H2F 3.9990 -2.1580 0.3279 H 1 ZZZI 0.1500 + 10 C1D 5.5218 0.0000 -1.8093 C.2 1 ZZZI 0.1380 + 11 H2B 5.4455 2.1580 -1.7024 H 1 ZZZI 0.1500 + 12 H2D 5.4455 -2.1580 -1.7024 H 1 ZZZI 0.1500 + 13 N7D 6.3274 0.0000 -2.9400 N.1 1 ZZZI 0.2320 + 14 C9D 7.0073 0.0000 -3.8943 C.1 1 ZZZI -0.3700 +@BOND + 1 1 6 1 + 2 1 3 1 + 3 1 2 2 + 4 2 7 1 + 5 2 5 1 + 6 3 4 3 + 7 6 9 1 + 8 6 8 2 + 9 7 11 1 + 10 7 10 2 + 11 8 12 1 + 12 8 10 1 + 13 10 13 1 + 14 13 14 3 +@SUBSTRUCTURE + 1 ZZZI 1 +@COMMENT +COMMENT P-DI-ISOCYANOBENZENE (CONVENTIONAL REFINEMENT) +@MOLECULE +ZZZMVU10 + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.9957 2.2135 9.6142 S.3 1 UNCH 1.4270 + 2 S2 3.1102 3.7064 8.6308 S.3 1 UNCH -0.1180 + 3 S3 4.7595 2.6635 7.9643 S.3 1 UNCH -0.1180 + 4 S4 3.9263 1.5870 6.3679 S.3 1 UNCH 1.4270 + 5 O1 1.3916 2.8329 10.7791 O.3 1 UNCH -0.6500 + 6 O2 2.8219 1.0310 9.7565 O.3 1 UNCH -0.6500 + 7 O3 2.9176 2.4150 5.7342 O.3 1 UNCH -0.6500 + 8 O4 3.6076 0.2502 6.8260 O.3 1 UNCH -0.6500 + 9 C1 0.6688 1.8462 8.4921 C.2 1 UNCH -0.0090 + 10 C2 0.5635 0.5755 7.9213 C.2 1 UNCH -0.1500 + 11 C3 -0.4907 0.3000 7.0506 C.2 1 UNCH -0.1500 + 12 C4 -1.4395 1.2834 6.7667 C.2 1 UNCH -0.1500 + 13 C5 -1.3430 2.5448 7.3562 C.2 1 UNCH -0.1500 + 14 C6 -0.2907 2.8298 8.2260 C.2 1 UNCH -0.1500 + 15 C7 5.2940 1.4506 5.2406 C.2 1 UNCH -0.0090 + 16 C8 6.1740 0.3694 5.3534 C.2 1 UNCH -0.1500 + 17 C9 7.2383 0.2569 4.4593 C.2 1 UNCH -0.1500 + 18 C10 7.4132 1.2127 3.4569 C.2 1 UNCH -0.1500 + 19 C11 6.5230 2.2818 3.3397 C.2 1 UNCH -0.1500 + 20 C12 5.4556 2.4029 4.2292 C.2 1 UNCH -0.1500 + 21 H1 1.2930 -0.2024 8.1390 H 1 UNCH 0.1500 + 22 H2 -0.5722 -0.6831 6.5928 H 1 UNCH 0.1500 + 23 H3 -2.2596 1.0636 6.0872 H 1 UNCH 0.1500 + 24 H4 -2.0914 3.3031 7.1389 H 1 UNCH 0.1500 + 25 H5 -0.2329 3.8101 8.6934 H 1 UNCH 0.1500 + 26 H6 6.0387 -0.3859 6.1252 H 1 UNCH 0.1500 + 27 H7 7.9299 -0.5789 4.5387 H 1 UNCH 0.1500 + 28 H8 8.2428 1.1198 2.7593 H 1 UNCH 0.1500 + 29 H9 6.6599 3.0170 2.5499 H 1 UNCH 0.1500 + 30 H10 4.7608 3.2334 4.1233 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 9 1 + 5 2 3 1 + 6 3 4 1 + 7 4 7 1 + 8 4 8 1 + 9 4 15 1 + 10 9 10 2 + 11 9 14 1 + 12 10 11 1 + 13 10 21 1 + 14 11 12 2 + 15 11 22 1 + 16 12 13 1 + 17 12 23 1 + 18 13 14 2 + 19 13 24 1 + 20 14 25 1 + 21 15 16 2 + 22 15 20 1 + 23 16 17 1 + 24 16 26 1 + 25 17 18 2 + 26 17 27 1 + 27 18 19 1 + 28 18 28 1 + 29 19 20 2 + 30 19 29 1 + 31 20 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(PHENYLSULFONYL)-DISULFANE +@MOLECULE +ZZZVCQ01 + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 1.2558 -0.8409 7.6954 I 1 ZZZV 0.0360 + 2 O1 3.9626 -0.5382 5.7373 O.2 1 ZZZV -0.5700 + 3 O2 0.2026 2.0409 6.3397 O.2 1 ZZZV -0.5700 + 4 N1 1.9533 0.5023 6.2977 N.3 1 ZZZV -0.1560 + 5 C1 3.1423 0.3633 5.6295 C.2 1 ZZZV 0.5690 + 6 C2 3.3212 1.5222 4.6961 C.3 1 ZZZV 0.0610 + 7 C3 2.0847 2.3703 4.8942 C.3 1 ZZZV 0.0610 + 8 C4 1.2823 1.6392 5.9275 C.2 1 ZZZV 0.5690 + 9 H1 4.2294 2.0728 4.9581 H 1 ZZZV 0.0000 + 10 H2 3.3970 1.1609 3.6664 H 1 ZZZV 0.0000 + 11 H3 1.5074 2.4570 3.9691 H 1 ZZZV 0.0000 + 12 H4 2.3398 3.3689 5.2608 H 1 ZZZV 0.0000 +@BOND + 1 1 4 1 + 2 2 5 2 + 3 3 8 2 + 4 4 5 am + 5 4 8 am + 6 5 6 1 + 7 6 7 1 + 8 6 9 1 + 9 6 10 1 + 10 7 8 1 + 11 7 11 1 + 12 7 12 1 +@SUBSTRUCTURE + 1 ZZZV 1 +@COMMENT +COMMENT N-IODOSUCCINIMIDE (ABSOLUTE CONFIGURATION) +@MOLECULE +AR14A + 8 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.0021 0.0000 -0.0072 O.3 1 OXAZ -0.2800 + 2 C2 0.0006 0.0000 1.3546 C.2 1 OXAZ 0.3281 + 3 N3 1.1919 0.0000 1.9096 N.2 1 OXAZ -0.5653 + 4 C4 2.0435 0.0000 0.8341 C.2 1 OXAZ 0.0772 + 5 C5 1.3209 0.0000 -0.3327 C.2 1 OXAZ -0.0100 + 6 H6 -0.9644 0.0000 1.8413 H 1 OXAZ 0.1500 + 7 H7 3.1174 0.0000 0.9569 H 1 OXAZ 0.1500 + 8 H8 1.5613 0.0000 -1.3853 H 1 OXAZ 0.1500 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 6 1 + 4 2 3 2 + 5 3 4 1 + 6 4 7 1 + 7 4 5 2 + 8 5 8 1 +@SUBSTRUCTURE + 1 OXAZ 1 +@COMMENT +COMMENT OXAZOLE +@MOLECULE +CA04A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.0176 0.0036 0.0008 O.2 1 CA04 -0.5700 + 2 C2 -0.0131 -0.0003 1.2209 C.2 1 CA04 0.5100 + 3 C3 1.2674 0.0002 2.0507 C.2 1 CA04 0.7200 + 4 O4 1.2589 -0.0037 3.2665 O.2 1 CA04 -0.5700 + 5 O5 2.3882 0.0053 1.3273 O.3 1 CA04 -0.6500 + 6 H6 3.1210 0.0050 1.9752 H 1 CA04 0.5000 + 7 H7 -0.9284 -0.0045 1.8327 H 1 CA04 0.0600 +@BOND + 1 1 2 2 + 2 2 7 1 + 3 2 3 1 + 4 3 5 1 + 5 3 4 2 + 6 5 6 1 +@SUBSTRUCTURE + 1 CA04 1 +@COMMENT +COMMENT GLYOXYLIC ACID +@MOLECULE +CE05A + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0206 0.0000 -0.0060 C.2 1 CE05 -0.3000 + 2 C2 0.0319 0.0000 1.3272 C.2 1 CE05 -0.0733 + 3 O3 1.2500 0.0000 2.0057 O.3 1 CE05 -0.2267 + 4 C4 1.1701 0.0000 3.3701 C.2 1 CE05 0.6600 + 5 O5 0.1679 0.0000 4.0687 O.2 1 CE05 -0.5700 + 6 H6 -0.9739 0.0000 -0.5235 H 1 CE05 0.1500 + 7 H7 0.8846 0.0000 -0.6038 H 1 CE05 0.1500 + 8 H8 -0.8518 0.0000 1.9534 H 1 CE05 0.1500 + 9 H9 2.1963 0.0000 3.7706 H 1 CE05 0.0600 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 2 + 4 2 8 1 + 5 2 3 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 +@SUBSTRUCTURE + 1 CE05 1 +@COMMENT +COMMENT VINYL FORMATE +@MOLECULE +CO01A + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0000 0.0000 -0.0023 C.2 1 FORM 0.4500 + 2 O2 0.0000 0.0001 1.2224 O.2 1 FORM -0.5700 + 3 H3 0.9319 0.0000 -0.5899 H 1 FORM 0.0600 + 4 H4 -0.9319 -0.0002 -0.5899 H 1 FORM 0.0600 +@BOND + 1 1 4 1 + 2 1 3 1 + 3 1 2 2 +@SUBSTRUCTURE + 1 FORM 1 +@COMMENT +COMMENT FORMALDEHYDE +@MOLECULE +CO08A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0119 0.0038 0.0073 C.2 1 CO08 -0.2882 + 2 C2 -0.0117 0.0137 1.5062 C.3 1 CO08 0.1992 + 3 C3 1.3899 -0.0278 2.0871 C.2 1 CO08 0.4490 + 4 O4 2.4272 0.1702 1.4617 O.2 1 CO08 -0.5700 + 5 H5 0.5597 0.7887 -0.4868 H 1 CO08 0.1500 + 6 C4 -0.6487 -0.9042 -0.7438 C.2 1 CO08 -0.3000 + 7 H8 -0.5556 -0.8495 1.9054 H 1 CO08 0.0000 + 8 H9 -0.4987 0.9222 1.8745 H 1 CO08 0.0000 + 9 H10 1.4283 -0.2134 3.1746 H 1 CO08 0.0600 + 10 H2 -0.5978 -0.8569 -1.8278 H 1 CO08 0.1500 + 11 H3 -1.2261 -1.7121 -0.3059 H 1 CO08 0.1500 +@BOND + 1 1 6 2 + 2 1 5 1 + 3 1 2 1 + 4 2 8 1 + 5 2 7 1 + 6 2 3 1 + 7 3 9 1 + 8 3 4 2 + 9 6 11 1 + 10 6 10 1 +@SUBSTRUCTURE + 1 CO08 1 +@COMMENT +COMMENT BUT-3-ENEAL C-C-C-C ANTI +@MOLECULE +HL08A + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 Cl1 -0.0363 0.0484 -0.0021 CL 1 HL08 -0.2900 + 2 C3 -0.0160 0.0214 1.7802 C.3 1 HL08 0.2900 + 3 C2 1.3487 -0.0258 2.5099 C.3 1 HL08 0.0000 + 4 C4 -0.3507 -1.3025 2.5099 C.3 1 HL08 0.0000 + 5 C5 0.6435 -0.8565 3.6035 C.3 1 HL08 0.0000 + 6 H6 2.1297 -0.5820 1.9779 H 1 HL08 0.0000 + 7 H7 1.7523 0.9384 2.8290 H 1 HL08 0.0000 + 8 H8 -0.6422 0.8549 2.1248 H 1 HL08 0.0000 + 9 H9 -1.3891 -1.4217 2.8289 H 1 HL08 0.0000 + 10 H10 -0.0339 -2.2075 1.9779 H 1 HL08 0.0000 + 11 H11 0.1885 -0.2508 4.3956 H 1 HL08 0.0000 + 12 H12 1.2403 -1.6509 4.0580 H 1 HL08 0.0000 +@BOND + 1 1 2 1 + 2 3 2 1 + 3 3 5 1 + 4 3 6 1 + 5 3 7 1 + 6 2 4 1 + 7 2 8 1 + 8 4 5 1 + 9 4 9 1 + 10 4 10 1 + 11 5 11 1 + 12 5 12 1 +@SUBSTRUCTURE + 1 HL08 1 +@COMMENT +COMMENT CHLOROCYCLOBUTANE +@MOLECULE +IM02A + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0036 -0.0001 0.0016 C.2 1 IM02 0.3300 + 2 N2 -0.0130 0.0001 1.2844 N.2 1 IM02 -0.6960 + 3 C3 1.3010 0.0000 1.9196 C.3 1 IM02 0.2460 + 4 H4 1.3974 -0.8855 2.5553 H 1 IM02 0.0000 + 5 H5 1.3976 0.8857 2.5551 H 1 IM02 0.0000 + 6 H6 2.1376 -0.0001 1.2122 H 1 IM02 0.0000 + 7 H7 0.9244 -0.0003 -0.6061 H 1 IM02 0.0600 + 8 H8 -0.9472 -0.0001 -0.5549 H 1 IM02 0.0600 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 2 2 + 4 2 3 1 + 5 3 6 1 + 6 3 5 1 + 7 3 4 1 +@SUBSTRUCTURE + 1 IM02 1 +@COMMENT +COMMENT N-METHYLFORMALDEHYDEIMINE +@MOLECULE +NC10A + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0009 0.0000 0.0015 C.2 1 NC10 0.2800 + 2 N2 -0.0001 0.0000 1.2845 N.2 1 NC10 -0.1461 + 3 C3 1.1917 0.0000 2.1487 C.3 1 NC10 0.3461 + 4 H4 0.9514 0.0000 -0.5523 H 1 NC10 0.0600 + 5 H5 -0.9590 0.0000 -0.5351 H 1 NC10 0.0600 + 6 H6 -0.9078 0.0000 1.7623 H 1 NC10 0.4000 + 7 H7 2.0946 0.0000 1.5328 H 1 NC10 0.0000 + 8 H8 1.1536 0.8970 2.7705 H 1 NC10 0.0000 + 9 H9 1.1536 -0.8970 2.7705 H 1 NC10 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 2 2 + 4 2 6 1 + 5 2 3 1 + 6 3 9 1 + 7 3 8 1 + 8 3 7 1 +@SUBSTRUCTURE + 1 NC10 1 +@COMMENT +COMMENT N-METHYLFORMALDEHYDEIMINE CATION +@MOLECULE +NC13A + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.0000 0.0000 -0.0014 N.2 1 NC13 -0.2000 + 2 C2 0.0000 0.0000 1.2784 C.2 1 NC13 0.2800 + 3 H3 0.8689 0.0000 -0.5388 H 1 NC13 0.4000 + 4 H4 0.9573 0.0000 1.8193 H 1 NC13 0.0600 + 5 H5 -0.9573 0.0000 1.8193 H 1 NC13 0.0600 + 6 H6 -0.8689 0.0000 -0.5388 H 1 NC13 0.4000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 6 1 + 4 2 4 1 + 5 2 5 1 +@SUBSTRUCTURE + 1 NC13 1 +@COMMENT +COMMENT FORMALDEHYDEIMINE CATION +@MOLECULE +NH10A + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.0014 0.0021 -0.0010 N.3 1 NH3 -1.0800 + 2 H2 0.0018 -0.0027 1.0179 H 1 NH3 0.3600 + 3 H3 0.9772 -0.0028 -0.2850 H 1 NH3 0.3600 + 4 H4 -0.3808 -0.9000 -0.2850 H 1 NH3 0.3600 +@BOND + 1 1 4 1 + 2 1 3 1 + 3 1 2 1 +@SUBSTRUCTURE + 1 NH3 1 +@COMMENT +COMMENT AMMONIA +@MOLECULE +NH20A + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0060 -0.0315 -0.0137 C.3 1 NH20 0.2560 + 2 N1 -0.0194 0.0258 1.4765 N.3 1 NH20 -0.1220 + 3 C3 1.3744 0.0497 2.0383 C.3 1 NH20 0.2560 + 4 C4 1.3635 -0.0729 3.5496 C.3 1 NH20 0.0000 + 5 O1 -0.7496 1.0962 1.8928 O.3 1 NH20 -0.7500 + 6 H2 -0.4485 -0.8660 1.7912 H 1 NH20 0.3600 + 7 H1 0.5514 -0.9340 -0.2971 H 1 NH20 0.0000 + 8 H3 -1.0347 -0.0887 -0.3411 H 1 NH20 0.0000 + 9 H4 0.4919 0.8773 -0.3756 H 1 NH20 0.0000 + 10 H5 1.8964 -0.8019 1.5909 H 1 NH20 0.0000 + 11 H6 1.8300 0.9893 1.7098 H 1 NH20 0.0000 + 12 H7 2.3867 -0.1072 3.9357 H 1 NH20 0.0000 + 13 H8 0.8530 0.7770 4.0134 H 1 NH20 0.0000 + 14 H9 0.8450 -0.9844 3.8639 H 1 NH20 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 8 1 + 4 1 9 1 + 5 2 3 1 + 6 2 5 1 + 7 2 6 1 + 8 3 4 1 + 9 3 10 1 + 10 3 11 1 + 11 4 12 1 + 12 4 13 1 + 13 4 14 1 +@SUBSTRUCTURE + 1 NH20 1 +@COMMENT +COMMENT METHYLETHYLAMINE OXIDE, CNCC ANTI +@MOLECULE +NH22A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H1 0.0318 -0.0865 -0.0149 H 1 NH22 0.3600 + 2 N1 -0.0044 -0.0092 1.0196 N.3 1 NH22 -0.2260 + 3 C3 1.4076 0.0228 1.4990 C.3 1 NH22 0.2560 + 4 C4 1.4874 -0.0767 3.0072 C.3 1 NH22 0.0000 + 5 O1 -0.7207 1.0687 1.4115 O.3 1 NH22 -0.7500 + 6 H2 -0.4226 -0.9061 1.3350 H 1 NH22 0.3600 + 7 H5 1.8859 -0.8351 1.0178 H 1 NH22 0.0000 + 8 H6 1.8376 0.9528 1.1160 H 1 NH22 0.0000 + 9 H7 2.5316 -0.1033 3.3327 H 1 NH22 0.0000 + 10 H8 1.0022 0.7791 3.4871 H 1 NH22 0.0000 + 11 H9 0.9906 -0.9839 3.3661 H 1 NH22 0.0000 +@BOND + 1 1 2 1 + 2 2 6 1 + 3 2 5 1 + 4 2 3 1 + 5 3 8 1 + 6 3 7 1 + 7 3 4 1 + 8 4 11 1 + 9 4 10 1 + 10 4 9 1 +@SUBSTRUCTURE + 1 NH22 1 +@COMMENT +COMMENT ETHYLAMINE N-OXIDE ONCC GAUCHE +@MOLECULE +NH23A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H1 0.0055 -0.0607 -0.0219 H 1 NH23 0.3600 + 2 N1 0.0059 -0.0144 1.0008 N.3 1 NH23 -0.7300 + 3 C3 1.3944 0.0115 1.4688 C.3 1 NH23 0.2700 + 4 C4 1.4803 0.0435 2.9876 C.3 1 NH23 0.0000 + 5 O1 -0.5115 -1.3260 1.3613 O.3 1 NH23 -0.3000 + 6 H4 1.9478 -0.8499 1.0771 H 1 NH23 0.0000 + 7 H5 1.8747 0.9113 1.0691 H 1 NH23 0.0000 + 8 H6 2.5260 0.1214 3.3025 H 1 NH23 0.0000 + 9 H7 0.9416 0.9057 3.3949 H 1 NH23 0.0000 + 10 H8 1.0634 -0.8645 3.4353 H 1 NH23 0.0000 + 11 H9 -1.3094 -1.0902 1.8740 H 1 NH23 0.4000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 2 5 1 + 4 3 4 1 + 5 3 6 1 + 6 3 7 1 + 7 4 8 1 + 8 4 9 1 + 9 4 10 1 + 10 5 11 1 +@SUBSTRUCTURE + 1 NH23 1 +@COMMENT +COMMENT ETHYLHYDROXYLAMINE, ONCC GAUCHE +@MOLECULE +OH10A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0005 0.0000 0.0024 C.2 1 VINL -0.3000 + 2 C2 0.0007 -0.0001 1.3338 C.2 1 VINL -0.0733 + 3 O3 1.1621 0.0002 2.0505 O.3 1 VINL -0.5267 + 4 H4 -0.9287 -0.0003 -0.5573 H 1 VINL 0.1500 + 5 H5 0.9321 0.0004 -0.5522 H 1 VINL 0.1500 + 6 H6 -0.8984 -0.0005 1.9363 H 1 VINL 0.1500 + 7 H7 0.9356 0.0001 2.9972 H 1 VINL 0.4500 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 2 2 + 4 2 6 1 + 5 2 3 1 + 6 3 7 1 +@SUBSTRUCTURE + 1 VINL 1 +@COMMENT +COMMENT trans-VINYL ALCOHOL +@MOLECULE +SR01A + 3 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.0007 0.0000 -0.0007 S.3 1 RS01 -0.3600 + 2 H2 -0.0007 0.0000 1.3403 H 1 RS01 0.1800 + 3 H3 1.3380 0.0000 -0.0796 H 1 RS01 0.1800 +@BOND + 1 1 2 1 + 2 1 3 1 +@SUBSTRUCTURE + 1 RS01 1 +@COMMENT +COMMENT HYDROGEN SULFIDE +@MOLECULE +SR05A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.0189 -0.0067 -0.0009 S.3 1 RS02 -0.1800 + 2 S2 0.0008 0.0577 2.0519 S.3 1 RS02 -0.2300 + 3 C3 1.7679 0.0031 2.4382 C.3 1 RS02 0.2300 + 4 H4 0.0205 -1.3362 -0.1825 H 1 RS02 0.1800 + 5 H5 1.8960 0.0315 3.5238 H 1 RS02 0.0000 + 6 H6 2.2826 0.8671 2.0093 H 1 RS02 0.0000 + 7 H7 2.2153 -0.9216 2.0639 H 1 RS02 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 2 3 1 + 4 3 5 1 + 5 3 6 1 + 6 3 7 1 +@SUBSTRUCTURE + 1 RS02 1 +@COMMENT +COMMENT METHYL HYDROGEN DISULFIDE +@MOLECULE +SR07A + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0031 -0.0361 -0.0065 C.2 1 SR07 0.1015 + 2 C2 -0.0020 -0.0149 1.3912 C.2 1 SR07 -0.1500 + 3 C3 1.2218 -0.0224 -0.6905 C.2 1 SR07 -0.1500 + 4 S1 -1.5224 -0.1024 -0.9198 S.3 1 SR07 -0.2815 + 5 C5 1.2021 0.0305 2.0978 C.2 1 SR07 -0.1500 + 6 H6 -0.9378 -0.0388 1.9435 H 1 SR07 0.1500 + 7 C7 2.4252 0.0232 0.0167 C.2 1 SR07 -0.1500 + 8 H8 1.2443 -0.0467 -1.7774 H 1 SR07 0.1500 + 9 H9 -2.2278 0.6903 -0.1003 H 1 SR07 0.1800 + 10 C10 2.4147 0.0509 1.4104 C.2 1 SR07 -0.1500 + 11 H11 1.1935 0.0466 3.1847 H 1 SR07 0.1500 + 12 H12 3.3699 0.0352 -0.5209 H 1 SR07 0.1500 + 13 H13 3.3517 0.0849 1.9605 H 1 SR07 0.1500 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 1 + 4 2 5 2 + 5 2 6 1 + 6 3 7 1 + 7 3 8 1 + 8 4 9 1 + 9 5 10 1 + 10 5 11 1 + 11 7 10 2 + 12 7 12 1 + 13 10 13 1 +@SUBSTRUCTURE + 1 SR07 1 +@COMMENT +COMMENT THIOPHENOL, NONPLANAR +@MOLECULE +AN05A + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.3904 -0.3499 0.0002 C.3 1 OA01 -0.0726 + 2 O1 2.7143 -0.3937 0.0002 O.3 1 OA01 -0.9274 + 3 H1 0.9014 0.1571 0.8493 H 1 OA01 0.0000 + 4 H2 0.9014 0.1567 -0.8492 H 1 OA01 0.0000 + 5 H3 0.8528 -1.3133 0.0004 H 1 OA01 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 +@SUBSTRUCTURE + 1 OA01 1 +@COMMENT +COMMENT METHOXIDE ANION +@MOLECULE +AN06A + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.3097 -0.3471 0.0002 C.3 1 OA01 0.0500 + 2 S1 3.1352 -0.4075 0.0002 S.3 1 OA01 -1.0500 + 3 H1 0.9024 0.1722 0.8754 H 1 OA01 0.0000 + 4 H2 0.9024 0.1718 -0.8752 H 1 OA01 0.0000 + 5 H3 0.8523 -1.3432 0.0004 H 1 OA01 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 +@SUBSTRUCTURE + 1 OA01 1 +@COMMENT +COMMENT METHYLSULFIDE ANION +@MOLECULE +AN08A + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.1297 1.2438 0.0000 S.3 1 AN07 -0.9500 + 2 C2 0.1656 -0.1794 0.0000 C.2 1 AN07 -0.2000 + 3 C3 -1.1687 -0.2886 0.0000 C.2 1 AN07 -0.3000 + 4 H1 0.7219 -1.1153 0.0000 H 1 AN07 0.1500 + 5 H2 -1.7931 0.5981 0.0000 H 1 AN07 0.1500 + 6 H3 -1.6471 -1.2590 0.0000 H 1 AN07 0.1500 +@BOND + 1 1 2 1 + 2 2 4 1 + 3 2 3 2 + 4 3 6 1 + 5 3 5 1 +@SUBSTRUCTURE + 1 AN07 1 +@COMMENT +COMMENT VINYL SULFIDE ANION +@MOLECULE +AN11A + 6 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -2.3322 1.9196 -0.0002 N.3 1 AN11 -0.2500 + 2 N2 -1.0067 2.2029 -0.0001 N.2 1 AN11 -0.5875 + 3 C3 -0.4223 0.9903 0.0001 C.2 1 AN11 0.5250 + 4 N4 -1.2953 -0.0344 0.0001 N.2 1 AN11 -0.5875 + 5 N3 -2.5055 0.5760 -0.0001 N.2 1 AN11 -0.2500 + 6 H1 0.6477 0.8523 0.0003 H 1 AN11 0.1500 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 3 2 + 4 3 6 1 + 5 3 4 am + 6 4 5 2 +@SUBSTRUCTURE + 1 AN11 1 +@COMMENT +COMMENT TETRAZOLE ANION +@MOLECULE +AN12A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.5750 0.5810 0.0001 C.2 1 AN12 -0.3500 + 2 C2 -2.9139 0.5574 -0.0001 C.2 1 AN12 -0.3000 + 3 N1 -0.7297 -0.4647 0.0002 N.3 1 AN12 -0.9500 + 4 H1 0.2197 -0.0740 0.0004 H 1 AN12 0.1500 + 5 H2 -1.1544 1.5900 0.0002 H 1 AN12 0.1500 + 6 H3 -3.4349 -0.3932 -0.0002 H 1 AN12 0.1500 + 7 H4 -3.4919 1.4714 -0.0001 H 1 AN12 0.1500 +@BOND + 1 1 5 1 + 2 1 3 1 + 3 1 2 2 + 4 2 7 1 + 5 2 6 1 + 6 3 4 1 +@SUBSTRUCTURE + 1 AN12 1 +@COMMENT +COMMENT DEPROTONATED VINYLAMINE ANION +@MOLECULE +HL11A + 9 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 0.0393 0.0087 0.6979 F 1 HL17 -0.2317 + 2 C2 -0.9321 0.1111 -0.2794 C.3 1 HL17 0.1317 + 3 C3 -2.0857 1.0213 -0.0041 C.3 1 HL17 -0.2000 + 4 C4 -2.2744 -0.4715 0.0271 C.3 1 HL17 -0.2000 + 5 H1 -0.5102 0.0371 -1.2696 H 1 HL17 0.1000 + 6 H2 -2.0846 1.5550 0.9384 H 1 HL17 0.1000 + 7 H3 -2.5052 1.5717 -0.8366 H 1 HL17 0.1000 + 8 H4 -2.4011 -0.9495 0.9908 H 1 HL17 0.1000 + 9 H5 -2.8219 -0.9341 -0.7842 H 1 HL17 0.1000 +@BOND + 1 1 2 1 + 2 2 5 1 + 3 2 4 1 + 4 2 3 1 + 5 3 7 1 + 6 3 6 1 + 7 3 4 1 + 8 4 9 1 + 9 4 8 1 +@SUBSTRUCTURE + 1 HL17 1 +@COMMENT +COMMENT CYCLOPROPYL FLUORIDE +@MOLECULE +HL13A + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 -1.6503 -1.1206 0.0002 F 1 HL13 -0.1495 + 2 C2 -0.3926 -0.6449 0.0001 C.2 1 HL13 -0.0005 + 3 C3 0.6570 -1.4623 0.0000 C.2 1 HL13 -0.3000 + 4 H1 -0.3765 0.4353 0.0000 H 1 HL13 0.1500 + 5 H2 0.5150 -2.5373 0.0001 H 1 HL13 0.1500 + 6 H3 1.6685 -1.0737 -0.0001 H 1 HL13 0.1500 +@BOND + 1 1 2 1 + 2 2 4 1 + 3 2 3 2 + 4 3 6 1 + 5 3 5 1 +@SUBSTRUCTURE + 1 HL13 1 +@COMMENT +COMMENT VINYL FLUORIDE +@MOLECULE +NO03A + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.3486 -0.5026 0.1850 C.3 1 NO01 0.3332 + 2 N1 -0.8698 -0.5122 0.1009 N.2 1 NO01 -0.1714 + 3 O1 -0.3912 0.6249 0.1762 O.2 1 NO01 -0.1618 + 4 H1 -2.6368 -1.1077 1.0468 H 1 NO01 0.0000 + 5 H2 -2.7238 0.5174 0.2977 H 1 NO01 0.0000 + 6 H3 -2.7369 -0.9478 -0.7332 H 1 NO01 0.0000 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 4 1 + 4 1 2 1 + 5 2 3 2 +@SUBSTRUCTURE + 1 NO01 1 +@COMMENT +COMMENT NITROSOMETHANE +@MOLECULE +NX02A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -3.2273 1.9098 -0.0002 C.3 1 NX02 0.0610 + 2 C2 -2.4844 0.6163 0.0001 C.2 1 NX02 -0.1086 + 3 N2 -1.1653 0.6307 0.0001 N.1 1 NX02 0.3566 + 4 N1 -0.0252 0.6432 0.0002 N.2 1 NX02 -0.3700 + 5 C5 -3.1988 -0.6932 0.0002 C.3 1 NX02 0.0610 + 6 H1 -3.8608 1.9616 0.8894 H 1 NX02 0.0000 + 7 H2 -2.5407 2.7607 -0.0003 H 1 NX02 0.0000 + 8 H3 -3.8607 1.9613 -0.8899 H 1 NX02 0.0000 + 9 H4 -3.8309 -0.7589 -0.8895 H 1 NX02 0.0000 + 10 H5 -2.4937 -1.5288 0.0004 H 1 NX02 0.0000 + 11 H6 -3.8310 -0.7586 0.8899 H 1 NX02 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 5 1 + 6 2 3 2 + 7 3 4 2 + 8 5 11 1 + 9 5 10 1 + 10 5 9 1 +@SUBSTRUCTURE + 1 NX02 1 +@COMMENT +COMMENT DIMETHYLDIAZOMETHANE +@MOLECULE +OC02A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.7182 2.4471 0.3061 C.3 1 OC02 0.0610 + 2 C2 -1.9212 1.1982 0.4956 C.2 1 OC02 0.8280 + 3 O1 -0.7339 1.2450 0.9980 O.2 1 OC02 -0.4500 + 4 C4 -2.4779 -0.1311 0.1091 C.3 1 OC02 0.0610 + 5 H1 -0.4361 2.1582 1.2281 H 1 OC02 0.5000 + 6 H2 -3.6477 2.3706 0.8760 H 1 OC02 0.0000 + 7 H3 -2.1530 3.3182 0.6432 H 1 OC02 0.0000 + 8 H4 -2.9659 2.5585 -0.7526 H 1 OC02 0.0000 + 9 H5 -2.7139 -0.1283 -0.9580 H 1 OC02 0.0000 + 10 H6 -1.7493 -0.9159 0.3235 H 1 OC02 0.0000 + 11 H7 -3.3962 -0.3165 0.6719 H 1 OC02 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 4 1 + 6 2 3 2 + 7 3 5 1 + 8 4 11 1 + 9 4 10 1 + 10 4 9 1 +@SUBSTRUCTURE + 1 OC02 1 +@COMMENT +COMMENT PROTONATED ACETONE +@MOLECULE +PO02A + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.0819 -0.2172 -0.0001 P 1 PO01 0.8086 + 2 O1 -0.0657 1.2929 0.0000 O.3 1 PO01 -0.7000 + 3 H1 -0.7143 -0.8636 1.0830 H 1 PO01 -0.0362 + 4 H2 -0.7143 -0.8634 -1.0833 H 1 PO01 -0.0362 + 5 H3 1.1617 -0.8837 -0.0002 H 1 PO01 -0.0362 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 +@SUBSTRUCTURE + 1 PO01 1 +@COMMENT +COMMENT PHOSPHINE OXIDE +@MOLECULE +PO05A + 13 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C4 0.0120 0.0057 -0.0026 C.3 1 PHNS 0.3557 + 2 N1 0.0175 -0.0406 1.4481 N.3 1 PHNS -1.1137 + 3 P1 1.5455 -0.0089 2.2629 P 1 PHNS 1.2380 + 4 O1 2.3723 1.0873 1.6528 O.3 1 PHNS -0.9500 + 5 O2 1.2028 -0.0935 3.7246 O.3 1 PHNS -0.9500 + 6 C11 2.2490 -1.6026 1.7745 C.3 1 PHNS 0.0000 + 7 H1 -0.6171 -0.6828 1.9155 H 1 PHNS 0.4200 + 8 HC8 0.6806 0.7846 -0.3758 H 1 PHNS 0.0000 + 9 HC9 0.3149 -0.9601 -0.4141 H 1 PHNS 0.0000 + 10 HC10 -1.0009 0.2222 -0.3527 H 1 PHNS 0.0000 + 11 HC11 1.5752 -2.4181 2.0514 H 1 PHNS 0.0000 + 12 HC12 2.4209 -1.6368 0.6955 H 1 PHNS 0.0000 + 13 HC13 3.2061 -1.7516 2.2820 H 1 PHNS 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 1 8 1 + 4 1 2 1 + 5 2 3 1 + 6 2 7 1 + 7 3 4 1 + 8 3 5 1 + 9 3 6 1 + 10 6 13 1 + 11 6 12 1 + 12 6 11 1 +@SUBSTRUCTURE + 1 PHNS 1 +@COMMENT +COMMENT METHYL-NHPO2-METHYL ANION, CPNH GAUCHE +@MOLECULE +PR01A + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.0003 -0.0003 -0.0003 P 1 PR01 -0.2880 + 2 H2 0.0020 0.0022 1.4147 H 1 PR01 0.0960 + 3 H3 1.4102 0.0022 -0.1129 H 1 PR01 0.0960 + 4 H4 -0.1225 1.4049 -0.1129 H 1 PR01 0.0960 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 +@SUBSTRUCTURE + 1 PR01 1 +@COMMENT +COMMENT PHOSPHINE +@MOLECULE +PR02A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.5373 0.3664 0.0169 C.3 1 PR02 0.1669 + 2 P1 -0.7617 0.5374 0.4447 P 1 PR02 -0.3589 + 3 H1 -0.4352 1.5216 -0.5181 H 1 PR02 0.0960 + 4 H2 -0.2844 -0.5586 -0.3125 H 1 PR02 0.0960 + 5 H3 -2.6632 0.2505 -1.0632 H 1 PR02 0.0000 + 6 H4 -2.9672 -0.5095 0.5104 H 1 PR02 0.0000 + 7 H5 -3.0949 1.2511 0.3364 H 1 PR02 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 3 1 + 6 2 4 1 +@SUBSTRUCTURE + 1 PR02 1 +@COMMENT +COMMENT METHYLPHOSPHINE +@MOLECULE +PR03A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.5744 0.3212 0.0331 C.3 1 PR02 0.1669 + 2 P1 -0.8167 0.3610 0.5598 P 1 PR02 -0.0517 + 3 CL1 -0.1344 1.9820 -0.5888 CL 1 PR02 -0.2112 + 4 H2 -0.3475 -0.6703 -0.2878 H 1 PR02 0.0960 + 5 H3 -2.6620 0.3166 -1.0573 H 1 PR02 0.0000 + 6 H4 -3.0608 -0.5807 0.4156 H 1 PR02 0.0000 + 7 H5 -3.1141 1.1898 0.4210 H 1 PR02 0.0000 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 5 1 + 4 1 2 1 + 5 2 4 1 + 6 2 3 1 +@SUBSTRUCTURE + 1 PR02 1 +@COMMENT +COMMENT METHYLCHLOROPHOSPHINE +@MOLECULE +PR04A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.6544 2.3975 0.3126 C.3 1 PR04 0.0610 + 2 C2 -1.8499 1.1289 0.5496 C.2 1 PR04 0.1254 + 3 P1 -0.2598 1.1239 1.2898 P 1 PR04 -0.3432 + 4 C4 -2.5328 -0.1517 0.0926 C.3 1 PR04 0.0610 + 5 H1 -0.1645 2.5299 1.4868 H 1 PR04 0.0958 + 6 H2 -3.6053 2.3240 0.8483 H 1 PR04 0.0000 + 7 H3 -2.1221 3.2875 0.6571 H 1 PR04 0.0000 + 8 H4 -2.8572 2.4983 -0.7576 H 1 PR04 0.0000 + 9 H5 -2.7335 -0.0878 -0.9809 H 1 PR04 0.0000 + 10 H6 -1.9126 -1.0309 0.2860 H 1 PR04 0.0000 + 11 H7 -3.4817 -0.2622 0.6254 H 1 PR04 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 4 1 + 6 2 3 2 + 7 3 5 1 + 8 4 11 1 + 9 4 10 1 + 10 4 9 1 +@SUBSTRUCTURE + 1 PR04 1 +@COMMENT +COMMENT (CH3)2C=PH +@MOLECULE +SI02A + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -0.5924 0.4082 0.0003 SI 1 SI01 0.6805 + 2 C1 -0.5929 2.2526 0.0003 C.3 1 SI01 -0.0805 + 3 H2 0.1037 -0.1082 -1.2054 H 1 SI01 -0.2000 + 4 H3 0.1039 -0.1082 1.2059 H 1 SI01 -0.2000 + 5 H4 -1.9844 -0.1087 0.0004 H 1 SI01 -0.2000 + 6 H1 -1.1032 2.6481 -0.8833 H 1 SI01 0.0000 + 7 H5 -1.1031 2.6481 0.8839 H 1 SI01 0.0000 + 8 H6 0.4272 2.6485 0.0002 H 1 SI01 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 2 8 1 + 6 2 7 1 + 7 2 6 1 +@SUBSTRUCTURE + 1 SI01 1 +@COMMENT +COMMENT METHYLSILANE +@MOLECULE +SI03A + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -0.6158 0.4454 0.0281 SI 1 SI01 0.7779 + 2 C1 -0.6148 2.2915 0.0378 C.3 1 SI01 -0.0805 + 3 O1 0.1525 -0.1941 -1.2967 O.3 1 SI01 -0.6974 + 4 H3 0.0381 -0.0740 1.2506 H 1 SI01 -0.2000 + 5 H4 -2.0128 -0.0440 -0.0047 H 1 SI01 -0.2000 + 6 H1 -1.1072 2.6919 -0.8537 H 1 SI01 0.0000 + 7 H5 -1.1425 2.6819 0.9133 H 1 SI01 0.0000 + 8 H6 0.4055 2.6863 0.0605 H 1 SI01 0.0000 + 9 H2 -0.3284 -0.1377 -2.1369 H 1 SI01 0.4000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 2 8 1 + 6 2 7 1 + 7 2 6 1 + 8 3 9 1 +@SUBSTRUCTURE + 1 SI01 1 +@COMMENT +COMMENT METHYL HYDROXYL SILANE +@MOLECULE +SO07A + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0024 0.0850 0.0247 C.2 1 SO07 -0.1500 + 2 C2 0.0171 -0.0497 1.4118 C.2 1 SO07 -0.1500 + 3 C3 1.2360 -0.1090 2.0897 C.2 1 SO07 -0.1500 + 4 C4 2.4442 -0.0286 1.3824 C.2 1 SO07 0.0862 + 5 C5 2.4172 0.0961 -0.0140 C.2 1 SO07 -0.1500 + 6 C6 1.1943 0.1537 -0.6879 C.2 1 SO07 -0.1500 + 7 C7 3.7149 -0.0741 2.1582 C.2 1 SO07 0.7201 + 8 N1 4.8276 0.4973 1.5296 N.3 1 SO07 -0.7943 + 9 S1 6.3811 0.4296 2.1022 S.3 1 SO07 1.3328 + 10 O1 7.1379 1.2724 1.1983 O.3 1 SO07 -0.6500 + 11 O2 6.7497 -0.9518 2.3067 O.3 1 SO07 -0.6500 + 12 C13 6.2892 1.2718 3.6706 C.3 1 SO07 0.1052 + 13 H1 4.7365 1.0966 0.7162 H 1 SO07 0.4200 + 14 O3 3.7518 -0.5345 3.2878 O.2 1 SO07 -0.5700 + 15 H2 -0.9526 0.1260 -0.5032 H 1 SO07 0.1500 + 16 H3 -0.9166 -0.1127 1.9660 H 1 SO07 0.1500 + 17 H4 1.2385 -0.2182 3.1731 H 1 SO07 0.1500 + 18 H5 3.3305 0.1140 -0.6020 H 1 SO07 0.1500 + 19 H6 1.1735 0.2411 -1.7721 H 1 SO07 0.1500 + 20 H7 5.7158 0.6724 4.3776 H 1 SO07 0.0000 + 21 H8 7.3097 1.3940 4.0411 H 1 SO07 0.0000 + 22 H9 5.8337 2.2522 3.5196 H 1 SO07 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 15 1 + 4 2 3 1 + 5 2 16 1 + 6 3 4 2 + 7 3 17 1 + 8 4 5 1 + 9 4 7 1 + 10 5 6 2 + 11 5 18 1 + 12 6 19 1 + 13 7 8 am + 14 7 14 2 + 15 8 9 1 + 16 8 13 1 + 17 9 10 1 + 18 9 11 1 + 19 9 12 1 + 20 12 20 1 + 21 12 21 1 + 22 12 22 1 +@SUBSTRUCTURE + 1 SO07 1 +@COMMENT +COMMENT PHENYL-C(=O)-NHSO2-METHYL, CSNC G +@MOLECULE +SO12A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.0034 0.0000 0.0027 S.3 1 SULF 1.6674 + 2 O2 0.0100 0.0074 1.6069 O.3 1 SULF -0.6837 + 3 O3 1.5762 -0.0073 -0.3127 O.3 1 SULF -0.6837 + 4 O4 -0.5074 -1.2711 -0.4434 O.3 1 SULF -0.6500 + 5 O5 -0.5363 1.2710 -0.4082 O.3 1 SULF -0.6500 + 6 H6 0.0787 0.9424 1.8912 H 1 SULF 0.5000 + 7 H7 1.8686 -0.9423 -0.3023 H 1 SULF 0.5000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 2 6 1 + 6 3 7 1 +@SUBSTRUCTURE + 1 SULF 1 +@COMMENT +COMMENT SULFURIC ACID, C2 +@MOLECULE +SO15A + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -2.7851 -0.6573 0.7335 C.3 1 SO14 0.1052 + 2 S1 -1.5409 -0.6186 2.0068 S.3 1 SO14 0.7349 + 3 O2 -0.4923 -1.4902 1.4840 O.3 1 SO14 -0.6500 + 4 O1 -2.2449 -1.1169 3.1852 O.3 1 SO14 -0.6500 + 5 N1 -1.2136 0.9410 2.0018 N.3 1 SO14 -0.4901 + 6 C1 -0.1910 1.2925 2.9782 C.3 1 SO14 -0.0500 + 7 H2 -3.1202 -1.6907 0.6150 H 1 SO14 0.0000 + 8 H3 -3.6288 -0.0311 1.0327 H 1 SO14 0.0000 + 9 H4 -2.3534 -0.3027 -0.2053 H 1 SO14 0.0000 + 10 H1 0.7670 0.7937 2.7891 H 1 SO14 0.0000 + 11 H5 0.0127 2.3692 2.9518 H 1 SO14 0.0000 + 12 H6 -0.4885 1.0611 4.0078 H 1 SO14 0.0000 +@BOND + 1 1 9 1 + 2 1 8 1 + 3 1 7 1 + 4 1 2 1 + 5 2 5 1 + 6 2 4 1 + 7 2 3 1 + 8 5 6 1 + 9 6 12 1 + 10 6 11 1 + 11 6 10 1 +@SUBSTRUCTURE + 1 SO14 1 +@COMMENT +COMMENT METHYL-SO2-NH(-)-METHYL ANION +@MOLECULE +SO16A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.5543 1.1987 -0.0673 C.3 1 SO16 0.0610 + 2 C2 -1.6194 0.0284 -0.1580 C.2 1 SO16 0.1970 + 3 S1 -0.0087 0.2364 -0.3895 S.1 1 SO16 0.1810 + 4 O1 0.4159 1.6599 -0.4968 O.2 1 SO16 -0.5000 + 5 C5 -2.1749 -1.3600 -0.0336 C.3 1 SO16 0.0610 + 6 H1 -3.0618 1.1738 0.9016 H 1 SO16 0.0000 + 7 H2 -2.0458 2.1598 -0.1707 H 1 SO16 0.0000 + 8 H3 -3.3068 1.1144 -0.8569 H 1 SO16 0.0000 + 9 H4 -2.9151 -1.5210 -0.8229 H 1 SO16 0.0000 + 10 H5 -1.3998 -2.1269 -0.1157 H 1 SO16 0.0000 + 11 H6 -2.6699 -1.4615 0.9366 H 1 SO16 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 5 1 + 6 2 3 2 + 7 3 4 2 + 8 5 11 1 + 9 5 10 1 + 10 5 9 1 +@SUBSTRUCTURE + 1 SO16 1 +@COMMENT +COMMENT (CH3)2C=S=O +@MOLECULE +SO18A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H2 -2.3136 0.8190 -0.0157 H 1 SO16 0.0000 + 2 C2 -1.5827 0.0283 -0.2042 C.3 1 SO16 0.0877 + 3 S1 -0.0797 0.4009 0.7813 S.3 1 SO16 0.2123 + 4 O1 0.3257 1.7274 0.1836 O.3 1 SO16 -0.6000 + 5 H1 -2.0042 -0.9282 0.1154 H 1 SO16 0.0000 + 6 S2 1.0637 -1.1910 0.2121 S.3 1 SO16 -0.7000 + 7 H7 -1.3421 0.0060 -1.2704 H 1 SO16 0.0000 +@BOND + 1 1 2 1 + 2 2 7 1 + 3 2 3 1 + 4 2 5 1 + 5 3 4 1 + 6 3 6 1 +@SUBSTRUCTURE + 1 SO16 1 +@COMMENT +COMMENT METHYLTHIOSULFINATE ANION +@MOLECULE +BRMW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -2.4840 1.0537 4.4872 O.3 1 NAPW -0.8600 + 2 H3 -2.2908 1.7885 3.8669 H 1 NAPW 0.4300 + 3 H4 -1.6618 0.5568 4.2896 H 1 NAPW 0.4300 + 4 BR1 0.0690 1.6518 2.4310 BR 1 NAPW -1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT OH2 ... BR- DIMER +@MOLECULE +CA2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9504 -0.6883 4.1275 O.3 1 NAPW -0.8600 + 2 H3 -2.5306 -1.0551 3.4072 H 1 NAPW 0.4300 + 3 H4 -2.5616 -0.9449 4.8694 H 1 NAPW 0.4300 + 4 O3 0.4887 2.1549 5.5051 O.3 1 NAPW -0.8600 + 5 H6 1.2864 2.4282 6.0333 H 1 NAPW 0.4300 + 6 H5 -0.0770 2.9175 5.8026 H 1 NAPW 0.4300 + 7 O4 1.7351 -0.3269 2.6384 O.3 1 NAPW -0.8600 + 8 H8 2.3990 0.1645 2.0836 H 1 NAPW 0.4300 + 9 H7 2.0307 -1.2308 2.3459 H 1 NAPW 0.4300 + 10 CA1 0.0911 0.3799 4.0903 CA 1 NAPW 2.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 5 1 + 4 4 6 1 + 5 7 8 1 + 6 7 9 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT CALCIUM +2 CATION PLUS 3 WATERS +@MOLECULE +CLMW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -2.4761 1.0479 4.4860 O.3 1 NAPW -0.8600 + 2 H3 -2.4125 1.8377 3.9121 H 1 NAPW 0.4300 + 3 H4 -1.6170 0.6691 4.1852 H 1 NAPW 0.4300 + 4 CL1 -0.0428 1.6251 2.5211 CL 1 NAPW -1.0000 +@BOND + 1 1 2 1 + 2 1 3 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT OH2 ... CL- +@MOLECULE +CU1PW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9861 -0.7088 4.1281 O.3 1 NAPW -0.8600 + 2 H3 -2.5426 -1.0556 3.3951 H 1 NAPW 0.4300 + 3 H4 -2.5672 -0.9578 4.8815 H 1 NAPW 0.4300 + 4 CU1 -0.0086 0.3270 4.0927 CU 1 NAPW 1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT CU+ ... WATER DIMER +@MOLECULE +CU2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.6936 -0.5554 4.1229 O.3 1 NAPW -0.8600 + 2 H3 -2.2901 -0.9132 3.4039 H 1 NAPW 0.4300 + 3 H4 -2.3072 -0.8312 4.8633 H 1 NAPW 0.4300 + 4 O3 0.4383 1.9311 5.3290 O.3 1 NAPW -0.8600 + 5 H6 1.2301 2.2050 5.8756 H 1 NAPW 0.4300 + 6 H5 -0.1183 2.7092 5.6214 H 1 NAPW 0.4300 + 7 O4 1.5296 -0.2382 2.8219 O.3 1 NAPW -0.8600 + 8 H8 2.1903 0.2483 2.2495 H 1 NAPW 0.4300 + 9 H7 1.8439 -1.1432 2.5338 H 1 NAPW 0.4300 + 10 CU1 0.0914 0.3792 4.0912 CU 1 NAPW 2.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 5 1 + 4 4 6 1 + 5 7 8 1 + 6 7 9 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT COPPER +2 CATION PLUS 3 WATERS +@MOLECULE +FE2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.7308 -0.5750 4.1235 O.3 1 NAPW -0.8600 + 2 H3 -2.3247 -0.9341 3.4043 H 1 NAPW 0.4300 + 3 H4 -2.3440 -0.8479 4.8641 H 1 NAPW 0.4300 + 4 O3 0.4455 1.9635 5.3548 O.3 1 NAPW -0.8600 + 5 H6 1.2381 2.2374 5.8987 H 1 NAPW 0.4300 + 6 H5 -0.1125 2.7392 5.6479 H 1 NAPW 0.4300 + 7 O4 1.5597 -0.2511 2.7954 O.3 1 NAPW -0.8600 + 8 H8 2.2208 0.2362 2.2257 H 1 NAPW 0.4300 + 9 H7 1.8712 -1.1559 2.5067 H 1 NAPW 0.4300 + 10 FE1 0.0915 0.3791 4.0912 FE 1 NAPW 2.0000 +@BOND + 1 1 3 1 + 2 1 2 1 + 3 4 6 1 + 4 4 5 1 + 5 7 9 1 + 6 7 8 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT IRON+2 CATION PLUS 3 WATERS +@MOLECULE +FE3PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.6268 -0.5207 4.1217 O.3 1 NAPW -0.8600 + 2 H3 -2.2645 -0.8978 3.4169 H 1 NAPW 0.4300 + 3 H4 -2.2801 -0.8196 4.8493 H 1 NAPW 0.4300 + 4 O3 0.4253 1.8728 5.2830 O.3 1 NAPW -0.8600 + 5 H6 1.2119 2.1860 5.8564 H 1 NAPW 0.4300 + 6 H5 -0.1106 2.6821 5.6049 H 1 NAPW 0.4300 + 7 O4 1.4759 -0.2151 2.8694 O.3 1 NAPW -0.8600 + 8 H8 2.1651 0.2446 2.2700 H 1 NAPW 0.4300 + 9 H7 1.8269 -1.1211 2.5507 H 1 NAPW 0.4300 + 10 FE1 0.0915 0.3790 4.0914 FE 1 NAPW 3.0000 +@BOND + 1 1 3 1 + 2 1 2 1 + 3 4 6 1 + 4 4 5 1 + 5 7 9 1 + 6 7 8 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT IRON +3 CATION PLUS 3 WATERS +@MOLECULE +FMW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -2.4567 1.0512 4.4711 O.3 1 NAPW -0.8600 + 2 H3 -2.3017 1.8010 3.8662 H 1 NAPW 0.4300 + 3 H4 -1.5916 0.6231 4.1995 H 1 NAPW 0.4300 + 4 F1 -0.1828 0.8786 3.1161 F 1 NAPW -1.0000 +@BOND + 1 1 2 1 + 2 1 3 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT OH2 ... F- DIMER +@MOLECULE +H3OPW1 + 7 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.8222 -0.6848 4.2326 O.3 1 NAPW -0.8600 + 2 H3 -2.1840 -0.8919 3.3382 H 1 NAPW 0.4300 + 3 H4 -2.5431 -1.0883 4.7700 H 1 NAPW 0.4300 + 4 O1 0.2986 0.5107 4.7579 O.3 1 NAPW -0.7019 + 5 H1 -0.5458 0.0343 4.4561 H 1 NAPW 0.5673 + 6 H2 0.0210 1.2911 5.2954 H 1 NAPW 0.5673 + 7 H5 0.8197 -0.1284 5.3010 H 1 NAPW 0.5673 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 7 1 + 4 4 6 1 + 5 4 5 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT H3O+ ... WATER DIMER +@MOLECULE +KPW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9896 -0.7106 4.1282 O.3 1 NAPW -0.8600 + 2 H3 -2.5391 -1.0540 3.3925 H 1 NAPW 0.4300 + 3 H4 -2.5638 -0.9559 4.8840 H 1 NAPW 0.4300 + 4 K1 0.3233 0.5010 4.0868 K 1 NAPW 1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT K+ ... WATER DIMER +@MOLECULE +LIPW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9065 -0.6669 4.1267 O.3 1 NAPW -0.8600 + 2 H3 -2.4730 -1.0186 3.3969 H 1 NAPW 0.4300 + 3 H4 -2.4976 -0.9212 4.8771 H 1 NAPW 0.4300 + 4 LI1 -0.2880 0.1804 4.0978 LI 1 NAPW 1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT LI+ ... WATER DIMER +@MOLECULE +MG2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.5939 -0.5034 4.1212 O.3 1 NAPW -0.8600 + 2 H3 -2.1976 -0.8577 3.4028 H 1 NAPW 0.4300 + 3 H4 -2.2087 -0.7872 4.8611 H 1 NAPW 0.4300 + 4 O3 0.4189 1.8443 5.2601 O.3 1 NAPW -0.8600 + 5 H6 1.2084 2.1189 5.8144 H 1 NAPW 0.4300 + 6 H5 -0.1339 2.6292 5.5507 H 1 NAPW 0.4300 + 7 O4 1.4494 -0.2037 2.8928 O.3 1 NAPW -0.8600 + 8 H8 2.1090 0.2806 2.3127 H 1 NAPW 0.4300 + 9 H7 1.7716 -1.1093 2.6063 H 1 NAPW 0.4300 + 10 MG1 0.0915 0.3791 4.0913 MG 1 NAPW 2.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 5 1 + 4 4 6 1 + 5 7 8 1 + 6 7 9 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT MAGNESIUM +2 CATION PLUS 3 WATERS +@MOLECULE +NAPW + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9111 -0.6693 4.1268 O.3 1 NAPW -0.8600 + 2 H3 -2.4681 -1.0162 3.3939 H 1 NAPW 0.4300 + 3 H4 -2.4927 -0.9184 4.8800 H 1 NAPW 0.4300 + 4 NA1 0.0487 0.3567 4.0917 NA 1 NAPW 1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT NA+ ... WATER DIMER +@MOLECULE +OHMW1 + 5 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.6663 0.7572 2.5211 O.3 1 NAPW -0.8600 + 2 H3 -0.9618 1.2378 3.0556 H 1 NAPW 0.4300 + 3 H4 -0.9938 0.4643 1.8776 H 1 NAPW 0.4300 + 4 O1 0.7612 1.5971 3.1101 O.3 1 NAPW -1.1130 + 5 H1 1.6247 1.9513 3.4048 H 1 NAPW 0.1130 +@BOND + 1 1 3 1 + 2 1 2 1 + 3 4 5 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT OH2 ... OH- +@MOLECULE +ZN2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.7163 -0.5675 4.1233 O.3 1 NAPW -0.8600 + 2 H3 -2.3112 -0.9260 3.4041 H 1 NAPW 0.4300 + 3 H4 -2.3297 -0.8415 4.8638 H 1 NAPW 0.4300 + 4 O3 0.4427 1.9508 5.3449 O.3 1 NAPW -0.8600 + 5 H6 1.2349 2.2247 5.8899 H 1 NAPW 0.4300 + 6 H5 -0.1148 2.7274 5.6378 H 1 NAPW 0.4300 + 7 O4 1.5481 -0.2461 2.8058 O.3 1 NAPW -0.8600 + 8 H8 2.2090 0.2409 2.2351 H 1 NAPW 0.4300 + 9 H7 1.8607 -1.1509 2.5173 H 1 NAPW 0.4300 + 10 ZN1 0.0915 0.3791 4.0913 ZN 1 NAPW 2.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 5 1 + 4 4 6 1 + 5 7 8 1 + 6 7 9 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT ZINC +2 CATION PLUS 3 WATERS +@MOLECULE +ERULE_01 + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.7620 1.0442 0.8595 S.3 1 ER01 -0.2130 + 2 N2 0.7445 1.6830 0.4925 N.3 1 ER01 -0.6470 + 3 N4 1.3456 -0.5534 0.7395 N.3 1 ER01 -0.9000 + 4 C3 1.6616 0.6614 0.0007 C.3 1 ER01 0.5400 + 5 C5 -0.1187 -0.6717 0.7670 C.3 1 ER01 0.5000 + 6 C8 -0.5723 -1.4942 1.9606 C.3 1 ER01 0.0000 + 7 H3 2.7026 0.9580 0.1625 H 1 ER01 0.0000 + 8 H4 -0.4787 -1.1197 -0.1661 H 1 ER01 0.0000 + 9 H8 1.1520 2.0375 1.3577 H 1 ER01 0.3600 + 10 H9 1.7454 -1.3591 0.2673 H 1 ER01 0.3600 + 11 H1 -1.6647 -1.5711 1.9936 H 1 ER01 0.0000 + 12 H2 -0.1741 -2.5134 1.8991 H 1 ER01 0.0000 + 13 H5 -0.2327 -1.0642 2.9102 H 1 ER01 0.0000 + 14 H6 1.5191 0.5103 -1.0764 H 1 ER01 0.0000 +@BOND + 1 1 2 1 + 2 2 4 1 + 3 3 4 1 + 4 5 1 1 + 5 6 5 1 + 6 3 5 1 + 7 4 7 1 + 8 5 8 1 + 9 2 9 1 + 10 3 10 1 + 11 6 11 1 + 12 6 12 1 + 13 6 13 1 + 14 4 14 1 +@SUBSTRUCTURE + 1 ER01 1 +@COMMENT +@MOLECULE +ERULE_02 + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C14 -0.0013 -1.2611 0.1723 C.3 1 ER02 0.2300 + 2 C15 -0.6874 -1.2595 1.5269 C.3 1 ER02 0.2700 + 3 N3 0.2587 -0.6650 2.4820 N.3 1 ER02 -0.6300 + 4 N4 1.5031 -1.3490 2.2430 N.3 1 ER02 -0.3770 + 5 S1 1.7496 -1.4452 0.6095 S.3 1 ER02 -0.2130 + 6 H23 0.3652 0.3270 2.2558 H 1 ER02 0.3600 + 7 H24 2.2933 -0.9254 2.7391 H 1 ER02 0.3600 + 8 H1 -0.1383 -0.3084 -0.3482 H 1 ER02 0.0000 + 9 H2 -0.3427 -2.0815 -0.4641 H 1 ER02 0.0000 + 10 H3 -0.9441 -2.2805 1.8391 H 1 ER02 0.0000 + 11 H4 -1.6219 -0.6896 1.4967 H 1 ER02 0.0000 +@BOND + 1 1 2 1 + 2 3 2 1 + 3 4 3 1 + 4 5 1 1 + 5 4 5 1 + 6 3 6 1 + 7 4 7 1 + 8 1 8 1 + 9 1 9 1 + 10 2 10 1 + 11 2 11 1 +@SUBSTRUCTURE + 1 ER02 1 +@COMMENT +@MOLECULE +ERULE_03 + 19 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.1064 -1.0239 -0.0614 P 1 ER03 -0.4989 + 2 SI1 0.1434 -0.9550 2.1661 SI 1 ER03 0.4775 + 3 C1 -0.5728 -2.5325 2.8456 C.3 1 ER03 -0.0805 + 4 C2 1.9556 -0.8342 2.5576 C.3 1 ER03 -0.0805 + 5 C3 -0.7836 0.5245 2.8015 C.3 1 ER03 -0.0805 + 6 C4 0.7778 0.4989 -0.5693 C.3 1 ER03 0.1669 + 7 H2 0.9150 -1.9560 -0.3595 H 1 ER03 0.0960 + 8 H1 -0.0518 -3.4081 2.4462 H 1 ER03 0.0000 + 9 H3 -0.4843 -2.5598 3.9361 H 1 ER03 0.0000 + 10 H4 -1.6338 -2.6264 2.5942 H 1 ER03 0.0000 + 11 H5 2.3828 0.1047 2.1929 H 1 ER03 0.0000 + 12 H6 2.1207 -0.8738 3.6389 H 1 ER03 0.0000 + 13 H7 2.5154 -1.6587 2.1052 H 1 ER03 0.0000 + 14 H8 -1.8438 0.4732 2.5350 H 1 ER03 0.0000 + 15 H9 -0.7170 0.5847 3.8923 H 1 ER03 0.0000 + 16 H10 -0.3776 1.4546 2.3921 H 1 ER03 0.0000 + 17 H11 1.8014 0.5295 -0.1857 H 1 ER03 0.0000 + 18 H12 0.8361 0.5415 -1.6613 H 1 ER03 0.0000 + 19 H13 0.2505 1.3955 -0.2304 H 1 ER03 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 4 2 1 + 4 5 2 1 + 5 6 1 1 + 6 1 7 1 + 7 3 8 1 + 8 3 9 1 + 9 3 10 1 + 10 4 11 1 + 11 4 12 1 + 12 4 13 1 + 13 5 14 1 + 14 5 15 1 + 15 5 16 1 + 16 6 17 1 + 17 6 18 1 + 18 6 19 1 +@SUBSTRUCTURE + 1 ER03 1 +@COMMENT +@MOLECULE +ERULE_04 + 10 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.0797 0.7207 0.7247 CL 1 ER04 -0.2900 + 2 C1 0.7975 -0.1234 1.6137 C.3 1 ER04 0.5600 + 3 N1 1.3196 -1.4530 1.9201 N.3 1 ER04 -0.6470 + 4 S1 0.2145 -2.6741 2.1528 S.3 1 ER04 0.0170 + 5 S2 -1.4082 -1.5635 1.5751 S.3 1 ER04 -0.2300 + 6 C2 -0.4658 -0.2488 0.7699 C.3 1 ER04 0.2300 + 7 H1 0.6066 0.4338 2.5383 H 1 ER04 0.0000 + 8 H2 -1.0395 0.6826 0.7552 H 1 ER04 0.0000 + 9 H9 1.9662 -1.7082 1.1742 H 1 ER04 0.3600 + 10 H3 -0.2564 -0.5468 -0.2635 H 1 ER04 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 3 4 1 + 4 4 5 1 + 5 5 6 1 + 6 6 2 1 + 7 2 7 1 + 8 6 8 1 + 9 3 9 1 + 10 6 10 1 +@SUBSTRUCTURE + 1 ER04 1 +@COMMENT +@MOLECULE +ERULE_05 + 6 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P2 1.1394 -1.5231 0.1456 P 1 ER05 -0.0960 + 2 P3 -0.6320 -0.5721 1.2220 P 1 ER05 -0.0960 + 3 P4 0.4189 -2.3830 2.1312 P 1 ER05 -0.0960 + 4 H1 0.4020 -2.3792 -0.7071 H 1 ER05 0.0960 + 5 H2 0.0803 0.4295 1.9239 H 1 ER05 0.0960 + 6 H3 1.3035 -1.6783 2.9821 H 1 ER05 0.0960 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 3 1 1 + 4 1 4 1 + 5 2 5 1 + 6 3 6 1 +@SUBSTRUCTURE + 1 ER05 1 +@COMMENT +@MOLECULE +ERULE_06 + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0397 -1.9490 1.8739 C.3 1 ER06 0.2700 + 2 C8 -0.0918 -0.2055 0.2263 C.3 1 ER06 0.2700 + 3 F1 1.8506 -0.6592 1.4319 F 1 ER06 -0.0640 + 4 N1 0.4724 -0.6376 1.4983 N.3 1 ER06 -0.4760 + 5 H1 0.1838 -0.8855 -0.5864 H 1 ER06 0.0000 + 6 H2 -1.1831 -0.1352 0.2800 H 1 ER06 0.0000 + 7 H3 0.2892 0.7897 -0.0233 H 1 ER06 0.0000 + 8 H14 0.2384 -2.7132 1.1408 H 1 ER06 0.0000 + 9 H4 -1.1294 -1.9338 1.9796 H 1 ER06 0.0000 + 10 H5 0.3797 -2.2418 2.8415 H 1 ER06 0.0000 +@BOND + 1 3 4 1 + 2 4 1 1 + 3 2 4 1 + 4 2 5 1 + 5 2 6 1 + 6 2 7 1 + 7 1 8 1 + 8 1 9 1 + 9 1 10 1 +@SUBSTRUCTURE + 1 ER06 1 +@COMMENT +@MOLECULE +ERULE_07 + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.8013 -0.9902 1.1526 N.3 1 ER07 -0.5860 + 2 N2 -0.2942 -2.0078 0.5913 N.3 1 ER07 -0.9000 + 3 C1 1.1658 -2.1740 0.5670 C.3 1 ER07 0.5400 + 4 C2 -0.5672 -1.0537 1.6714 C.3 1 ER07 0.3650 + 5 C3 0.6956 -0.2665 1.7721 C.3 1 ER07 -0.0370 + 6 C4 1.4042 0.2841 0.5561 C.3 1 ER07 -0.0420 + 7 H1 0.9190 0.2702 -0.4112 H 1 ER07 0.1000 + 8 H2 2.0975 1.1036 0.7035 H 1 ER07 0.1000 + 9 H5 1.4341 -3.0526 1.1642 H 1 ER07 0.0000 + 10 H6 -0.7636 -1.5908 2.6053 H 1 ER07 0.0000 + 11 H7 0.8730 0.1817 2.7392 H 1 ER07 0.1000 + 12 H11 -0.5495 -1.5613 -0.2865 H 1 ER07 0.3600 + 13 H8 1.5185 -2.3507 -0.4552 H 1 ER07 0.0000 + 14 H10 -1.4292 -0.4219 1.4381 H 1 ER07 0.0000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 4 2 1 + 4 5 1 1 + 5 6 1 1 + 6 4 5 1 + 7 5 6 1 + 8 6 7 1 + 9 6 8 1 + 10 3 9 1 + 11 4 10 1 + 12 5 11 1 + 13 2 12 1 + 14 3 13 1 + 15 4 14 1 +@SUBSTRUCTURE + 1 ER07 1 +@COMMENT +@MOLECULE +ERULE_08 + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.1208 -0.3892 1.2878 N.3 1 ER08 -0.4796 + 2 N2 1.2957 -0.2590 1.0257 N.3 1 ER08 -0.5696 + 3 C1 1.2571 -1.4088 0.0997 C.3 1 ER08 0.2096 + 4 C2 -0.1376 -1.7445 0.6911 C.3 1 ER08 0.2096 + 5 C5 -0.3273 -0.4735 2.7355 C.3 1 ER08 0.2700 + 6 H1 1.4895 0.6338 0.5651 H 1 ER08 0.3600 + 7 H2 -0.1732 0.5102 3.1931 H 1 ER08 0.0000 + 8 H3 -1.3604 -0.7701 2.9473 H 1 ER08 0.0000 + 9 H4 0.3411 -1.1876 3.2332 H 1 ER08 0.0000 + 10 H5 2.0318 -2.1612 0.2693 H 1 ER08 0.0000 + 11 H6 1.2447 -1.1252 -0.9583 H 1 ER08 0.0000 + 12 H7 -0.1330 -2.5873 1.3928 H 1 ER08 0.0000 + 13 H8 -0.9234 -1.9038 -0.0535 H 1 ER08 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 3 4 1 + 4 4 1 1 + 5 5 1 1 + 6 6 2 1 + 7 5 7 1 + 8 5 8 1 + 9 5 9 1 + 10 3 10 1 + 11 3 11 1 + 12 4 12 1 + 13 4 13 1 +@SUBSTRUCTURE + 1 ER08 1 +@COMMENT diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94_hypervalent.mol2 b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94_hypervalent.mol2 new file mode 100755 index 000000000000..1752fae771c2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/MMFF94_hypervalent.mol2 @@ -0,0 +1,43301 @@ +@MOLECULE +AGLYSL01 + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.6234 1.6965 8.8431 C.3 1 AGLY 0.3310 + 2 C2 -1.5438 0.1710 8.8960 C.2 1 AGLY 0.6590 + 3 H1 -1.5827 1.7640 6.8094 H 1 AGLY 0.3600 + 4 H3 -0.1271 1.8630 7.4736 H 1 AGLY 0.3600 + 5 H5 -2.6707 1.9987 8.9343 H 1 AGLY 0.0000 + 6 H6 -1.0462 2.1092 9.6756 H 1 AGLY 0.0000 + 7 H7 -2.3655 0.3289 10.6732 H 1 AGLY 0.5000 + 8 N1 -1.0818 2.2182 7.5784 N.3 1 AGLY -0.9900 + 9 O5 -2.0344 -0.3437 10.0478 O.3 1 AGLY -0.6500 + 10 O6 -1.0893 -0.5326 8.0048 O.2 1 AGLY -0.5700 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 8 1 + 5 2 9 1 + 6 2 10 2 + 7 3 8 1 + 8 4 8 1 + 9 7 9 1 +@SUBSTRUCTURE + 1 AGLY 1 +@COMMENT +COMMENT AMMONIUM GLYCINIUM SULFATE (NEUTRON STUDY) PEPSEQ A=1 GLY +@MOLECULE +AMHTAR01 + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.0329 4.1505 3.0521 O.3 1 CHGB -0.6500 + 2 O2 6.0663 6.3454 3.3434 O.2 1 CHGB -0.5700 + 3 O3 3.3628 6.5809 2.4858 O.3 1 CHGB -0.6800 + 4 O4 3.0917 4.7690 4.8310 O.3 1 CHGB -0.6800 + 5 O5 1.4779 4.5967 1.7561 O.2 1 CHGB -0.9000 + 6 O6 0.9232 3.6514 3.7696 O.3 1 CHGB -0.9000 + 7 C1 5.4114 5.3557 3.0467 C.2 1 CHGB 0.6590 + 8 C2 3.9637 5.2827 2.5659 C.3 1 CHGB 0.3410 + 9 C3 3.1574 4.3301 3.4494 C.3 1 CHGB 0.1740 + 10 C4 1.7124 4.1626 2.9176 C.2 1 CHGB 0.9060 + 11 H1 4.0141 4.9060 1.5362 H 1 CHGB 0.0000 + 12 H2 3.6146 3.3340 3.4620 H 1 CHGB 0.0000 + 13 H3 2.4715 6.3966 2.1130 H 1 CHGB 0.4000 + 14 H4 2.1962 4.4581 5.1047 H 1 CHGB 0.4000 + 15 H5 6.9144 4.3825 3.4068 H 1 CHGB 0.5000 +@BOND + 1 1 7 1 + 2 1 15 1 + 3 2 7 2 + 4 3 8 1 + 5 3 13 1 + 6 4 9 1 + 7 4 14 1 + 8 5 10 2 + 9 6 10 1 + 10 7 8 1 + 11 8 9 1 + 12 8 11 1 + 13 9 10 1 + 14 9 12 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT AMMONIUM HYDROGEN D-TARTRATE (REDETERMINATION OF VAN BOMMEL +@MOLECULE +AMPTRB10 + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.1919 -2.5996 15.5208 N.2 1 AMPT -0.1790 + 2 C2 -7.3473 -2.9481 16.4744 C.2 1 AMPT 0.7710 + 3 N2 -7.0280 -2.0314 17.4497 N.3 1 AMPT -0.9000 + 4 N3 -6.8030 -4.1635 16.5533 N.2 1 AMPT -0.6200 + 5 C4 -7.1510 -5.0414 15.5932 C.2 1 AMPT 0.4100 + 6 N4 -6.4861 -6.2649 15.6298 N.3 1 AMPT -0.9000 + 7 C41 -8.0373 -4.7460 14.5496 C.2 1 AMPT 0.3100 + 8 N5 -8.3988 -5.6364 13.5890 N.2 1 AMPT -0.6200 + 9 C6 -9.2723 -5.2287 12.6323 C.2 1 AMPT 0.1665 + 10 C61 -9.6407 -6.2351 11.5828 C.3 1 AMPT 0.1435 + 11 C7 -9.7914 -3.9347 12.6414 C.2 1 AMPT 0.1665 + 12 C71 -10.7592 -3.4605 11.5968 C.3 1 AMPT 0.1435 + 13 N8 -9.4417 -3.0372 13.6053 N.2 1 AMPT -0.6200 + 14 C81 -8.5630 -3.4458 14.5572 C.2 1 AMPT 0.6710 + 15 H1 -8.6125 -1.6818 15.5170 H 1 AMPT 0.4570 + 16 H21 -6.8787 -1.0653 17.1879 H 1 AMPT 0.4000 + 17 H22 -6.2924 -2.3987 18.0542 H 1 AMPT 0.4000 + 18 H41 -5.9528 -6.4036 16.4824 H 1 AMPT 0.4000 + 19 H42 -7.0594 -7.0612 15.3599 H 1 AMPT 0.4000 + 20 H61 -10.7172 -6.4303 11.6018 H 1 AMPT 0.0000 + 21 H62 -9.1241 -7.1845 11.7587 H 1 AMPT 0.0000 + 22 H63 -9.3526 -5.8752 10.5905 H 1 AMPT 0.0000 + 23 H71 -11.0461 -2.4197 11.7801 H 1 AMPT 0.0000 + 24 H72 -11.6693 -4.0677 11.6153 H 1 AMPT 0.0000 + 25 H73 -10.3048 -3.5133 10.6028 H 1 AMPT 0.0000 +@BOND + 1 1 15 1 + 2 1 14 2 + 3 1 2 am + 4 2 4 2 + 5 2 3 am + 6 3 17 1 + 7 3 16 1 + 8 4 5 1 + 9 5 7 2 + 10 5 6 1 + 11 6 19 1 + 12 6 18 1 + 13 7 14 1 + 14 7 8 1 + 15 8 9 2 + 16 9 11 1 + 17 9 10 1 + 18 10 22 1 + 19 10 21 1 + 20 10 20 1 + 21 11 13 2 + 22 11 12 1 + 23 12 25 1 + 24 12 24 1 + 25 12 23 1 + 26 13 14 am +@SUBSTRUCTURE + 1 AMPT 1 +@COMMENT +COMMENT 2,4-DIAMINO-6,7-DIMETHYLPTERIDINE HYDROCHLORIDE MONOHYDRATE +@MOLECULE +ARGIND11 + 26 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.4236 -3.9134 16.1526 C.2 1 ARGI 0.9060 + 2 C2 -7.8705 -3.8619 16.1247 C.3 1 ARGI 0.1640 + 3 C3 -7.3587 -3.4410 14.7361 C.3 1 ARGI 0.0000 + 4 C4 -7.5729 -4.4157 13.5579 C.3 1 ARGI 0.0000 + 5 C5 -8.8860 -4.2251 12.7890 C.3 1 ARGI 0.3276 + 6 C6 -11.2501 -4.1623 13.5988 C.2 1 ARGI 1.2000 + 7 H1 -7.9647 -5.8794 16.1666 H 1 ARGI 0.3600 + 8 H3 -7.5456 -3.1159 16.8598 H 1 ARGI 0.0000 + 9 H4 -7.4554 -5.2638 17.5407 H 1 ARGI 0.3600 + 10 H6 -7.7736 -2.4595 14.4740 H 1 ARGI 0.0000 + 11 H7 -6.2742 -3.2886 14.8304 H 1 ARGI 0.0000 + 12 H9 -6.7611 -4.2348 12.8412 H 1 ARGI 0.0000 + 13 H10 -7.4716 -5.4570 13.8808 H 1 ARGI 0.0000 + 14 H12 -9.0173 -3.1655 12.5477 H 1 ARGI 0.0000 + 15 H13 -8.8454 -4.7980 11.8571 H 1 ARGI 0.0000 + 16 H14 -9.8566 -5.3053 14.3719 H 1 ARGI 0.4500 + 17 H15 -11.0819 -3.0491 11.8990 H 1 ARGI 0.4500 + 18 H16 -12.5789 -2.8604 12.7633 H 1 ARGI 0.4500 + 19 H17 -11.5793 -4.8989 15.4167 H 1 ARGI 0.4500 + 20 H18 -12.9222 -4.0055 14.7891 H 1 ARGI 0.4500 + 21 N1 -7.3046 -5.1800 16.5326 N.3 1 ARGI -0.9900 + 22 N2 -11.6823 -3.3087 12.6644 N.3 1 ARGI -0.9667 + 23 N3 -10.0324 -4.7112 13.5460 N.2 1 ARGI -0.8443 + 24 N4 -12.0658 -4.4933 14.5978 N.3 1 ARGI -0.9667 + 25 O1 -9.9392 -5.0804 16.0320 O.2 1 ARGI -0.9000 + 26 O3 -10.0474 -2.8208 16.1127 O.3 1 ARGI -0.9000 +@BOND + 1 1 26 1 + 2 1 25 2 + 3 1 2 1 + 4 2 21 1 + 5 2 8 1 + 6 2 3 1 + 7 3 11 1 + 8 3 10 1 + 9 3 4 1 + 10 4 13 1 + 11 4 12 1 + 12 4 5 1 + 13 5 23 1 + 14 5 15 1 + 15 5 14 1 + 16 6 24 am + 17 6 23 2 + 18 6 22 am + 19 7 21 1 + 20 9 21 1 + 21 16 23 1 + 22 17 22 1 + 23 18 22 1 + 24 19 24 1 + 25 20 24 1 +@SUBSTRUCTURE + 1 ARGI 1 +@COMMENT +COMMENT L-ARGININE DIHYDRATE (NEUTRON STUDY) PEPSEQ A=1 ARG +@MOLECULE +BAOXLM01 + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.4475 -5.5931 13.3076 O.2 1 CHGB -0.9000 + 2 O2 -9.3541 -5.5931 15.4096 O.3 1 CHGB -0.9000 + 3 C1 -8.9008 -5.0134 14.3586 C.2 1 CHGB 0.8000 + 4 C1F -8.9008 -3.4541 14.3586 C.2 1 CHGB 0.8000 + 5 O1F -8.4475 -2.8743 13.3076 O.2 1 CHGB -0.9000 + 6 O2F -9.3541 -2.8743 15.4096 O.3 1 CHGB -0.9000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 5 2 + 5 4 6 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT BARIUM OXALATE MONOHYDRATE +@MOLECULE +BBSPRT10 + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -11.7206 -8.1007 15.0551 BR 1 BBSP -0.1110 + 2 S1 -9.2362 -1.6115 11.7041 S.3 1 BBSP -0.3580 + 3 S2 -7.3421 -3.5061 16.1557 S.1 1 BBSP 1.4470 + 4 O1 -9.1295 -4.1509 12.4379 O.2 1 BBSP -0.5700 + 5 O2 -7.8958 -2.5619 17.0995 O.2 1 BBSP -0.6500 + 6 O3 -6.0663 -4.1510 16.3659 O.2 1 BBSP -0.6500 + 7 N1 -7.2304 -2.7171 14.6762 N.3 1 BBSP -0.8650 + 8 C1 -8.9510 -2.9834 12.7050 C.2 1 BBSP 0.6580 + 9 C2 -8.3961 -2.1511 13.9087 C.3 1 BBSP 0.3600 + 10 C3 -8.0751 -0.9771 12.9464 C.3 1 BBSP 0.2170 + 11 C4 -8.5537 -4.7627 15.8442 C.2 1 BBSP -0.0090 + 12 C5 -8.1675 -5.9435 15.2018 C.2 1 BBSP -0.1500 + 13 C6 -9.1177 -6.9383 14.9634 C.2 1 BBSP -0.1500 + 14 C7 -10.4369 -6.7510 15.3784 C.2 1 BBSP 0.1110 + 15 C8 -10.8172 -5.5803 16.0366 C.2 1 BBSP -0.1500 + 16 C9 -9.8718 -4.5815 16.2766 C.2 1 BBSP -0.1500 + 17 H1 -6.4251 -3.0464 14.1407 H 1 BBSP 0.4200 + 18 H2 -9.2007 -1.8904 14.6120 H 1 BBSP 0.0000 + 19 H31 -7.0365 -0.9493 12.5974 H 1 BBSP 0.0000 + 20 H32 -8.3230 0.0106 13.3475 H 1 BBSP 0.0000 + 21 H5 -7.1391 -6.0958 14.8821 H 1 BBSP 0.1500 + 22 H6 -8.8222 -7.8521 14.4536 H 1 BBSP 0.1500 + 23 H8 -11.8433 -5.4410 16.3683 H 1 BBSP 0.1500 + 24 H9 -10.1698 -3.6760 16.8011 H 1 BBSP 0.1500 +@BOND + 1 1 14 1 + 2 2 10 1 + 3 2 8 1 + 4 3 11 1 + 5 3 7 1 + 6 3 6 2 + 7 3 5 2 + 8 4 8 2 + 9 7 17 1 + 10 7 9 1 + 11 8 9 1 + 12 9 18 1 + 13 9 10 1 + 14 10 20 1 + 15 10 19 1 + 16 11 16 1 + 17 11 12 2 + 18 12 21 1 + 19 12 13 1 + 20 13 22 1 + 21 13 14 2 + 22 14 15 1 + 23 15 23 1 + 24 15 16 2 + 25 16 24 1 +@SUBSTRUCTURE + 1 BBSP 1 +@COMMENT +COMMENT (S)-ALPHA-(P-BROMOBENZENESULFONAMIDO)-BETA-PROPIOTHIOLACTON +@MOLECULE +BEVJER10 + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.5626 -3.4018 13.6992 C.2 1 CHGB -0.0310 + 2 C2 -8.2870 -4.8168 13.9343 C.2 1 CHGB -0.0310 + 3 C3 -8.4006 -2.5213 12.6800 C.2 1 CHGB 0.1610 + 4 C4 -7.8420 -2.8938 11.4184 C.1 1 CHGB 0.4921 + 5 N5 -7.4410 -3.2487 10.3907 N.1 1 CHGB -0.5571 + 6 C6 -8.9419 -1.1990 12.7078 C.1 1 CHGB 0.4921 + 7 N7 -9.4476 -0.1568 12.7430 N.1 1 CHGB -0.5571 + 8 C8 -7.3061 -5.6973 13.6137 C.2 1 CHGB 0.1610 + 9 C9 -6.1483 -5.3248 12.8632 C.1 1 CHGB 0.4921 + 10 N10 -5.1967 -4.9699 12.3053 N.1 1 CHGB -0.5571 + 11 C11 -7.2482 -7.0196 14.1526 C.1 1 CHGB 0.4921 + 12 N12 -7.2032 -8.0618 14.6575 N.1 1 CHGB -0.5571 + 13 C1B -9.2053 -3.4018 15.0108 C.2 1 CHGB -0.0310 + 14 C2B -9.4809 -4.8168 14.7757 C.2 1 CHGB -0.0310 + 15 C3B -9.3673 -2.5213 16.0300 C.2 1 CHGB 0.1610 + 16 C8B -10.4618 -5.6973 15.0963 C.2 1 CHGB 0.1610 + 17 C4B -9.9259 -2.8938 17.2916 C.1 1 CHGB 0.4921 + 18 C6B -8.8260 -1.1990 16.0022 C.1 1 CHGB 0.4921 + 19 C9B -11.6196 -5.3248 15.8468 C.1 1 CHGB 0.4921 + 20 C11B -10.5197 -7.0196 14.5574 C.1 1 CHGB 0.4921 + 21 N5B -10.3269 -3.2487 18.3193 N.1 1 CHGB -0.5571 + 22 N7B -8.3203 -0.1568 15.9670 N.1 1 CHGB -0.5571 + 23 N10B -12.5713 -4.9699 16.4047 N.1 1 CHGB -0.5571 + 24 N12B -10.5647 -8.0618 14.0525 N.1 1 CHGB -0.5571 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 13 1 + 4 2 8 2 + 5 2 14 1 + 6 3 4 1 + 7 3 6 1 + 8 4 5 3 + 9 6 7 3 + 10 8 9 1 + 11 8 11 1 + 12 9 10 3 + 13 11 12 3 + 14 13 14 1 + 15 13 15 2 + 16 14 16 2 + 17 15 17 1 + 18 15 18 1 + 19 16 19 1 + 20 16 20 1 + 21 17 21 3 + 22 18 22 3 + 23 19 23 3 + 24 20 24 3 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT BIS(DIMETHYLAMMONIUM) (3,4-BIS(DICYANOMETHYLENE)-1-CYCLOBUT +@MOLECULE +BEWCUB + 59 61 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.4600 -4.5425 14.5213 N.3 1 BEWC -0.3940 + 2 C2 -8.1473 -4.4467 14.0828 C.2 1 BEWC 0.1234 + 3 C3 -7.9618 -5.0830 12.9159 C.2 1 BEWC -0.0822 + 4 C4 -9.2455 -5.6722 12.4107 C.3 1 BEWC 0.1382 + 5 C5 -10.2040 -5.4037 13.5710 C.3 1 BEWC 0.3630 + 6 C6 -11.2033 -4.2688 13.4898 C.2 1 BEWC -0.2400 + 7 C7 -10.3129 -3.4839 14.3486 C.2 1 BEWC 0.7010 + 8 C8 -12.3860 -4.0450 12.8869 C.2 1 BEWC -0.2454 + 9 S9 -6.4387 -5.1715 12.0259 S.2 1 BEWC 0.3880 + 10 C10 -5.5543 -6.3432 13.0558 C.2 1 BEWC -0.0940 + 11 C11 -5.9147 -7.6330 13.0506 C.2 1 BEWC -0.0410 + 12 N12 -5.2880 -8.5778 13.8276 N.3 1 BEWC -0.5390 + 13 C13 -5.6988 -9.8981 13.8837 C.2 1 BEWC 0.5690 + 14 O14 -6.6875 -10.3451 13.3093 O.2 1 BEWC -0.5700 + 15 C15 -4.8365 -10.7609 14.7670 C.3 1 BEWC 0.0610 + 16 O16 -6.7786 -5.9093 10.7644 O.2 1 BEWC -0.5000 + 17 C17 -13.1350 -2.7421 13.0269 C.3 1 BEWC 0.1382 + 18 C18 -13.1091 -5.0480 12.0072 C.3 1 BEWC 0.4182 + 19 O19 -12.3381 -6.2441 11.8532 O.3 1 BEWC -0.4300 + 20 C20 -12.9335 -7.1782 11.0618 C.2 1 BEWC 0.6590 + 21 O21 -14.0264 -7.0600 10.5278 O.2 1 BEWC -0.5700 + 22 C22 -12.0496 -8.3811 10.9366 C.3 1 BEWC 0.0610 + 23 O23 -10.2700 -2.3231 14.6953 O.2 1 BEWC -0.5700 + 24 C24 -7.1266 -3.6904 14.8642 C.2 1 BEWC 0.7056 + 25 O25 -5.9639 -3.5412 14.5182 O.2 1 BEWC -0.5700 + 26 O26 -7.6699 -3.2327 16.0185 O.3 1 BEWC -0.4300 + 27 C27 -6.8102 -2.4243 16.8301 C.3 1 BEWC 0.4235 + 28 C28 -6.8193 -0.9896 16.3597 C.2 1 BEWC -0.1435 + 29 C29 -5.6228 -0.3478 16.0074 C.2 1 BEWC -0.1500 + 30 C30 -5.6308 0.9795 15.5706 C.2 1 BEWC -0.1500 + 31 C31 -6.8457 1.6714 15.4843 C.2 1 BEWC 0.1330 + 32 C32 -8.0475 1.0441 15.8312 C.2 1 BEWC -0.1500 + 33 C33 -8.0283 -0.2823 16.2685 C.2 1 BEWC -0.1500 + 34 N34 -6.8579 3.0651 15.0242 N.2 1 BEWC 0.9070 + 35 O35 -5.7746 3.5765 14.7045 O.3 1 BEWC -0.5200 + 36 O36 -7.9487 3.6524 14.9858 O.2 1 BEWC -0.5200 + 37 H1 -9.5681 -5.1885 11.4826 H 1 BEWC 0.0000 + 38 H2 -9.1419 -6.7483 12.2370 H 1 BEWC 0.0000 + 39 H3 -10.5570 -6.3194 14.0629 H 1 BEWC 0.0000 + 40 H4 -4.7422 -5.9900 13.6810 H 1 BEWC 0.1500 + 41 H5 -6.7308 -7.9971 12.4261 H 1 BEWC 0.1500 + 42 H6 -4.4928 -8.2952 14.3885 H 1 BEWC 0.3700 + 43 H7 -3.8377 -10.3338 14.8926 H 1 BEWC 0.0000 + 44 H8 -5.3121 -10.8598 15.7462 H 1 BEWC 0.0000 + 45 H9 -4.7281 -11.7479 14.3085 H 1 BEWC 0.0000 + 46 H10 -14.1282 -2.9217 13.4518 H 1 BEWC 0.0000 + 47 H11 -12.6240 -2.0272 13.6771 H 1 BEWC 0.0000 + 48 H12 -13.2577 -2.2699 12.0466 H 1 BEWC 0.0000 + 49 H13 -14.0734 -5.2957 12.4672 H 1 BEWC 0.0000 + 50 H14 -13.2756 -4.6003 11.0198 H 1 BEWC 0.0000 + 51 H15 -11.8704 -8.8137 11.9242 H 1 BEWC 0.0000 + 52 H16 -12.5438 -9.1308 10.3122 H 1 BEWC 0.0000 + 53 H17 -11.1057 -8.0990 10.4633 H 1 BEWC 0.0000 + 54 H18 -7.1952 -2.4615 17.8557 H 1 BEWC 0.0000 + 55 H19 -5.7970 -2.8432 16.8657 H 1 BEWC 0.0000 + 56 H20 -9.0013 1.5629 15.7609 H 1 BEWC 0.1500 + 57 H21 -8.9688 -0.7717 16.5219 H 1 BEWC 0.1500 + 58 H22 -4.6758 -0.8828 16.0590 H 1 BEWC 0.1500 + 59 H23 -4.6897 1.4532 15.2986 H 1 BEWC 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 7 am + 4 2 3 2 + 5 2 24 1 + 6 3 4 1 + 7 3 9 1 + 8 4 5 1 + 9 4 37 1 + 10 4 38 1 + 11 5 6 1 + 12 5 39 1 + 13 6 7 1 + 14 6 8 2 + 15 7 23 2 + 16 8 17 1 + 17 8 18 1 + 18 9 10 1 + 19 9 16 2 + 20 10 11 2 + 21 10 40 1 + 22 11 12 1 + 23 11 41 1 + 24 12 13 am + 25 12 42 1 + 26 13 14 2 + 27 13 15 1 + 28 15 43 1 + 29 15 44 1 + 30 15 45 1 + 31 17 46 1 + 32 17 47 1 + 33 17 48 1 + 34 18 19 1 + 35 18 49 1 + 36 18 50 1 + 37 19 20 1 + 38 20 21 2 + 39 20 22 1 + 40 22 51 1 + 41 22 52 1 + 42 22 53 1 + 43 24 25 2 + 44 24 26 1 + 45 26 27 1 + 46 27 28 1 + 47 27 54 1 + 48 27 55 1 + 49 28 29 2 + 50 28 33 1 + 51 29 30 1 + 52 29 58 1 + 53 30 31 2 + 54 30 59 1 + 55 31 32 1 + 56 31 34 1 + 57 32 33 2 + 58 32 56 1 + 59 33 57 1 + 60 34 35 1 + 61 34 36 2 +@SUBSTRUCTURE + 1 BEWC 1 +@COMMENT +COMMENT 18-ACETATO-ASPARENOMYCIN A P-NITROBENZYL ESTER +@MOLECULE +BEWKUJ04 + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.6591 -4.9168 12.3108 S.1 1 BEWK 0.8491 + 2 O1 -11.3221 -6.1340 11.8625 O.2 1 BEWK -0.6500 + 3 O2 -10.7467 -3.8106 11.3483 O.2 1 BEWK -0.6500 + 4 N1 -9.1721 -5.1341 12.8512 N.3 1 BEWK -0.2881 + 5 N2 -14.0534 -3.0980 16.8966 N.3 1 BEWK -0.9000 + 6 N3 -8.3254 -4.2835 10.7924 N.2 1 BEWK -0.1790 + 7 C1 -11.6515 -4.3687 13.7041 C.2 1 BEWK -0.0090 + 8 C2 -12.3132 -5.3132 14.4873 C.2 1 BEWK -0.1500 + 9 C3 -13.0914 -4.8844 15.5654 C.2 1 BEWK -0.1500 + 10 C4 -13.1819 -3.5256 15.8868 C.2 1 BEWK 0.1000 + 11 C5 -12.5678 -2.5905 15.0460 C.2 1 BEWK -0.1500 + 12 C6 -11.7872 -3.0058 13.9638 C.2 1 BEWK -0.1500 + 13 C7 -8.1647 -4.9328 11.9710 C.2 1 BEWK 0.1090 + 14 C8 -6.8638 -5.3847 12.2626 C.2 1 BEWK -0.1500 + 15 C9 -5.8198 -5.1805 11.3599 C.2 1 BEWK -0.1500 + 16 C10 -6.0659 -4.5200 10.1636 C.2 1 BEWK -0.1500 + 17 C11 -7.3516 -4.0739 9.9031 C.2 1 BEWK 0.2110 + 18 H1 -12.2428 -6.3719 14.2519 H 1 BEWK 0.1500 + 19 H2 -13.6309 -5.6238 16.1506 H 1 BEWK 0.1500 + 20 H3 -12.6972 -1.5268 15.2247 H 1 BEWK 0.1500 + 21 H4 -11.3101 -2.2692 13.3249 H 1 BEWK 0.1500 + 22 H5 -14.2020 -3.7885 17.6254 H 1 BEWK 0.4000 + 23 H6 -13.8293 -2.1812 17.2689 H 1 BEWK 0.4000 + 24 H7 -6.6690 -5.9082 13.1980 H 1 BEWK 0.1500 + 25 H8 -7.6341 -3.5467 9.0007 H 1 BEWK 0.1500 + 26 H9 -5.2670 -4.3552 9.4474 H 1 BEWK 0.1500 + 27 H10 -4.8214 -5.5423 11.5954 H 1 BEWK 0.1500 + 28 H11 -9.2800 -3.9297 10.6014 H 1 BEWK 0.4570 +@BOND + 1 1 7 1 + 2 1 4 1 + 3 1 3 2 + 4 1 2 2 + 5 4 13 am + 6 5 23 1 + 7 5 22 1 + 8 5 10 1 + 9 6 28 1 + 10 6 17 1 + 11 6 13 2 + 12 7 12 2 + 13 7 8 1 + 14 8 18 1 + 15 8 9 2 + 16 9 19 1 + 17 9 10 1 + 18 10 11 2 + 19 11 20 1 + 20 11 12 1 + 21 12 21 1 + 22 13 14 1 + 23 14 24 1 + 24 14 15 2 + 25 15 27 1 + 26 15 16 1 + 27 16 26 1 + 28 16 17 2 + 29 17 25 1 +@SUBSTRUCTURE + 1 BEWK 1 +@COMMENT +COMMENT 4-AMINO-N-2-PYRIDINYLBENZENESULFONAMIDE (ANTIBACTERIAL DRUG +@MOLECULE +BIHKEI01 + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.7716 -2.9955 14.2543 O.3 1 BIHK -0.8290 + 2 O2 -9.8028 -7.2137 13.9344 O.3 1 BIHK -0.5600 + 3 O3 -11.3719 -6.0058 15.2078 O.3 1 BIHK -0.6800 + 4 N1 -7.2539 -3.4869 14.6747 N.2 1 BIHK -0.1790 + 5 C1 -9.6292 -3.5461 14.3353 C.2 1 BIHK -0.1710 + 6 C2 -8.4271 -2.8343 14.5350 C.2 1 BIHK 0.2175 + 7 C3 -8.3957 -1.3349 14.6274 C.3 1 BIHK 0.1435 + 8 C4 -7.1390 -4.8217 14.6424 C.2 1 BIHK 0.2110 + 9 C5 -8.2600 -5.5732 14.4293 C.2 1 BIHK -0.1435 + 10 C6 -8.4600 -7.0363 14.4112 C.3 1 BIHK 0.4235 + 11 C7 -10.5356 -5.9741 14.0681 C.3 1 BIHK 0.7035 + 12 C8 -9.4710 -4.9338 14.2583 C.2 1 BIHK -0.1435 + 13 H23 -11.5294 -5.0517 15.3789 H 1 BIHK 0.4000 + 14 H3 -6.4222 -2.9264 14.8291 H 1 BIHK 0.4570 + 15 H131 -7.3708 -0.9705 14.7516 H 1 BIHK 0.0000 + 16 H132 -8.9770 -0.9925 15.4894 H 1 BIHK 0.0000 + 17 H133 -8.7971 -0.8855 13.7136 H 1 BIHK 0.0000 + 18 H14 -6.1514 -5.2349 14.7979 H 1 BIHK 0.1500 + 19 H161 -8.3810 -7.4669 15.4140 H 1 BIHK 0.0000 + 20 H162 -7.7751 -7.5428 13.7259 H 1 BIHK 0.0000 + 21 H17 -11.1275 -5.8182 13.1610 H 1 BIHK 0.0000 +@BOND + 1 1 5 1 + 2 2 11 1 + 3 2 10 1 + 4 3 13 1 + 5 3 11 1 + 6 4 14 1 + 7 4 8 1 + 8 4 6 2 + 9 5 12 2 + 10 5 6 1 + 11 6 7 1 + 12 7 17 1 + 13 7 16 1 + 14 7 15 1 + 15 8 18 1 + 16 8 9 2 + 17 9 12 1 + 18 9 10 1 + 19 10 20 1 + 20 10 19 1 + 21 11 21 1 + 22 11 12 1 +@SUBSTRUCTURE + 1 BIHK 1 +@COMMENT +COMMENT PYRIDOXAL +@MOLECULE +BIPDEJ02 + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.3726 -4.8729 14.3028 N.3 1 UNCH -0.4691 + 2 C1 -7.4540 -5.4673 15.1648 C.2 1 UNCH 0.6900 + 3 O1 -6.2769 -5.1266 15.2560 O.2 1 UNCH -0.5700 + 4 N2 -7.9411 -6.4832 15.9495 N.3 1 UNCH -0.4900 + 5 C2 -9.2361 -6.9297 15.9894 C.2 1 UNCH 0.6156 + 6 O2 -9.5985 -7.8228 16.7462 O.2 1 UNCH -0.5700 + 7 C3 -10.1544 -6.2466 15.0605 C.2 1 UNCH 0.1639 + 8 F1 -11.4404 -6.6418 15.0485 F 1 UNCH -0.1495 + 9 C4 -9.6989 -5.2702 14.2769 C.2 1 UNCH -0.0410 + 10 C5 -7.8759 -3.7839 13.4619 C.3 1 UNCH 0.5801 + 11 C6 -7.7514 -2.4611 14.2152 C.3 1 UNCH 0.0000 + 12 C7 -9.0174 -1.7357 13.8330 C.3 1 UNCH 0.0000 + 13 C8 -9.2106 -2.1898 12.4054 C.3 1 UNCH 0.2800 + 14 O3 -8.7669 -3.5516 12.3542 O.3 1 UNCH -0.5600 + 15 H2 -7.2877 -6.9206 16.5806 H 1 UNCH 0.3700 + 16 H4 -10.3715 -4.7662 13.5914 H 1 UNCH 0.1500 + 17 H5 -6.9029 -4.0825 13.0542 H 1 UNCH 0.0000 + 18 H61 -7.6250 -2.5643 15.2967 H 1 UNCH 0.0000 + 19 H62 -6.8896 -1.9031 13.8284 H 1 UNCH 0.0000 + 20 H71 -9.8487 -2.0846 14.4564 H 1 UNCH 0.0000 + 21 H72 -8.9462 -0.6493 13.9298 H 1 UNCH 0.0000 + 22 H81 -10.2529 -2.1293 12.0807 H 1 UNCH 0.0000 + 23 H82 -8.5927 -1.6065 11.7141 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 9 1 + 3 1 10 1 + 4 2 3 2 + 5 2 4 am + 6 4 5 am + 7 4 15 1 + 8 5 6 2 + 9 5 7 1 + 10 7 8 1 + 11 7 9 2 + 12 9 16 1 + 13 10 11 1 + 14 10 14 1 + 15 10 17 1 + 16 11 12 1 + 17 11 18 1 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 12 21 1 + 22 13 14 1 + 23 13 22 1 + 24 13 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-FLUORO-1-(TETRAHYDRO-2-FURYL)-URACIL (BETA FORM) TEGAFUR +@MOLECULE +BIPJUF10 + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.5426 -3.1043 14.1621 C.2 1 UNCH 0.0862 + 2 C2 -8.1148 -4.3981 13.8468 C.2 1 UNCH 0.1330 + 3 C3 -8.7663 -5.5329 14.3545 C.2 1 UNCH -0.1500 + 4 C4 -9.8807 -5.3518 15.1832 C.2 1 UNCH 0.1330 + 5 C5 -10.3403 -4.0620 15.4919 C.2 1 UNCH -0.1500 + 6 C6 -9.6722 -2.9435 14.9786 C.2 1 UNCH -0.1500 + 7 C7 -7.8617 -1.8795 13.7040 C.2 1 UNCH 0.6338 + 8 O1 -6.5293 -2.0119 13.7657 O.3 1 UNCH -0.6500 + 9 O2 -8.4072 -0.8370 13.4033 O.2 1 UNCH -0.5700 + 10 N1 -7.0220 -4.6104 12.9179 N.2 1 UNCH 0.9070 + 11 O3 -6.0938 -5.3329 13.3019 O.3 1 UNCH -0.5200 + 12 O4 -7.1336 -4.1044 11.7939 O.2 1 UNCH -0.5200 + 13 N2 -10.5843 -6.5234 15.7239 N.2 1 UNCH 0.9070 + 14 O5 -10.1950 -7.6409 15.3605 O.3 1 UNCH -0.5200 + 15 O6 -11.5211 -6.3195 16.5070 O.2 1 UNCH -0.5200 + 16 H1 -6.1718 -1.1514 13.4541 H 1 UNCH 0.5000 + 17 H31 -8.4131 -6.5301 14.0937 H 1 UNCH 0.1500 + 18 H51 -11.2117 -3.9100 16.1286 H 1 UNCH 0.1500 + 19 H61 -10.0305 -1.9439 15.2269 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 10 1 + 6 3 4 2 + 7 3 17 1 + 8 4 5 1 + 9 4 13 1 + 10 5 6 2 + 11 5 18 1 + 12 6 19 1 + 13 7 8 1 + 14 7 9 2 + 15 8 16 1 + 16 10 11 1 + 17 10 12 2 + 18 13 14 1 + 19 13 15 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4-DINITROBENZOIC ACID +@MOLECULE +BIPYCL01 + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.9478 -4.8693 16.0403 N.2 1 BIPY -0.1790 + 2 C1 -8.5627 -4.6651 14.7565 C.2 1 BIPY 0.3610 + 3 C2 -7.2408 -4.9640 14.3971 C.2 1 BIPY -0.1500 + 4 C3 -6.3623 -5.4656 15.3546 C.2 1 BIPY -0.1500 + 5 C4 -6.8022 -5.6629 16.6573 C.2 1 BIPY -0.1500 + 6 C5 -8.1134 -5.3515 16.9823 C.2 1 BIPY 0.2110 + 7 N2 -9.6159 -4.6735 12.5923 N.2 1 BIPY -0.1790 + 8 C6 -9.5732 -4.1341 13.8355 C.2 1 BIPY 0.3610 + 9 C7 -10.4798 -3.1135 14.1554 C.2 1 BIPY -0.1500 + 10 C8 -11.4002 -2.6847 13.2019 C.2 1 BIPY -0.1500 + 11 C9 -11.4103 -3.2695 11.9420 C.2 1 BIPY -0.1500 + 12 C10 -10.4966 -4.2718 11.6548 C.2 1 BIPY 0.2110 + 13 H1 -9.9049 -4.6686 16.3421 H 1 BIPY 0.4570 + 14 H2 -6.8594 -4.7848 13.3925 H 1 BIPY 0.1500 + 15 H3 -5.3269 -5.6928 15.0924 H 1 BIPY 0.1500 + 16 H4 -6.1214 -6.0503 17.4155 H 1 BIPY 0.1500 + 17 H5 -8.5168 -5.4795 17.9837 H 1 BIPY 0.1500 + 18 H6 -8.9750 -5.4236 12.3206 H 1 BIPY 0.4570 + 19 H7 -10.4699 -2.6127 15.1227 H 1 BIPY 0.1500 + 20 H8 -12.1053 -1.8834 13.4327 H 1 BIPY 0.1500 + 21 H9 -12.1231 -2.9378 11.1868 H 1 BIPY 0.1500 + 22 H10 -10.4512 -4.7658 10.6875 H 1 BIPY 0.1500 +@BOND + 1 1 13 1 + 2 1 6 2 + 3 1 2 1 + 4 2 8 1 + 5 2 3 2 + 6 3 14 1 + 7 3 4 1 + 8 4 15 1 + 9 4 5 2 + 10 5 16 1 + 11 5 6 1 + 12 6 17 1 + 13 7 18 1 + 14 7 12 2 + 15 7 8 1 + 16 8 9 2 + 17 9 19 1 + 18 9 10 1 + 19 10 20 1 + 20 10 11 2 + 21 11 21 1 + 22 11 12 1 + 23 12 22 1 +@SUBSTRUCTURE + 1 BIPY 1 +@COMMENT +COMMENT 2,2'-BIPYRIDINIUM DICHLORIDE +@MOLECULE +BITNAT10 + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.5687 -5.5963 12.7150 C.2 1 BITN 0.0400 + 2 C2 -11.4179 -6.2797 11.8290 C.2 1 BITN -0.1500 + 3 C3 -12.2309 -5.5254 10.9773 C.2 1 BITN -0.1500 + 4 C4 -12.1993 -4.1347 11.0070 C.2 1 BITN -0.1500 + 5 C5 -11.3499 -3.4639 11.8932 C.2 1 BITN -0.1500 + 6 C6 -10.5199 -4.2005 12.7626 C.2 1 BITN 0.2272 + 7 N1 -9.6354 -3.6672 13.6860 N.2 1 BITN -0.5653 + 8 C7 -9.0290 -4.6478 14.3222 C.2 1 BITN 0.3021 + 9 S1 -9.4636 -6.2345 13.8718 S.3 1 BITN -0.0800 + 10 N2 -8.0673 -4.4416 15.3270 N.3 1 BITN 0.6456 + 11 C8 -7.5750 -3.2471 15.8388 C.2 1 BITN -0.3316 + 12 C9 -6.6518 -3.5865 16.8046 C.2 1 BITN -0.1500 + 13 C10 -6.6346 -4.9928 16.8260 C.2 1 BITN 0.1078 + 14 N3 -7.4853 -5.5127 15.9380 N.2 1 BITN -0.7068 + 15 C11 -5.8170 -5.8845 17.6829 C.3 1 BITN 0.1810 + 16 C12 -8.0153 -1.9077 15.3752 C.3 1 BITN 0.1800 + 17 H1 -11.4432 -7.3650 11.8052 H 1 BITN 0.1500 + 18 H2 -12.8963 -6.0347 10.2830 H 1 BITN 0.1500 + 19 H3 -12.8380 -3.5626 10.3379 H 1 BITN 0.1500 + 20 H4 -11.3229 -2.3791 11.9188 H 1 BITN 0.1500 + 21 H5 -6.0697 -2.9064 17.4114 H 1 BITN 0.1500 + 22 H6 -5.1764 -6.5257 17.0688 H 1 BITN 0.0000 + 23 H7 -6.4603 -6.5227 18.2971 H 1 BITN 0.0000 + 24 H8 -5.1737 -5.3064 18.3539 H 1 BITN 0.0000 + 25 H9 -9.0874 -1.7672 15.5445 H 1 BITN 0.0000 + 26 H10 -7.4898 -1.1178 15.9225 H 1 BITN 0.0000 + 27 H11 -7.7983 -1.7702 14.3113 H 1 BITN 0.0000 +@BOND + 1 1 9 1 + 2 1 6 1 + 3 1 2 2 + 4 2 17 1 + 5 2 3 1 + 6 3 18 1 + 7 3 4 2 + 8 4 19 1 + 9 4 5 1 + 10 5 20 1 + 11 5 6 2 + 12 6 7 1 + 13 7 8 2 + 14 8 10 am + 15 8 9 1 + 16 10 14 1 + 17 10 11 1 + 18 11 16 1 + 19 11 12 2 + 20 12 21 1 + 21 12 13 1 + 22 13 15 1 + 23 13 14 2 + 24 15 24 1 + 25 15 23 1 + 26 15 22 1 + 27 16 27 1 + 28 16 26 1 + 29 16 25 1 +@SUBSTRUCTURE + 1 BITN 1 +@COMMENT +COMMENT 2-(3,5-DIMETHYLPYRAZOLYL)-1,3-BENZOTHIAZOLE +@MOLECULE +BIYBIU10 + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C23 -9.7950 -3.3132 13.7261 C.2 1 BIYB 0.1000 + 2 C24 -9.6673 -4.5046 12.9922 C.2 1 BIYB 0.1015 + 3 C25 -10.3720 -4.6597 11.7883 C.2 1 BIYB -0.1500 + 4 C26 -11.1877 -3.6375 11.3031 C.2 1 BIYB -0.1500 + 5 C27 -11.3009 -2.4482 12.0145 C.2 1 BIYB -0.1500 + 6 C28 -10.6036 -2.2856 13.2131 C.2 1 BIYB -0.1500 + 7 C29 -7.6724 -3.6190 16.8084 C.2 1 BIYB -0.1500 + 8 C30 -6.8255 -4.4841 17.5039 C.2 1 BIYB -0.1500 + 9 C31 -6.5512 -5.7466 16.9900 C.2 1 BIYB -0.1500 + 10 C32 -7.1192 -6.1395 15.7781 C.2 1 BIYB -0.1500 + 11 N1 -9.0798 -3.0830 14.9148 N.3 1 BIYB -0.6000 + 12 S1 -8.6393 -5.8635 13.5245 S.3 1 BIYB -0.2030 + 13 C21 -7.9714 -5.2761 15.0723 C.2 1 BIYB 0.1015 + 14 C22 -8.2692 -4.0073 15.5976 C.2 1 BIYB 0.1000 + 15 H25 -10.2854 -5.5814 11.2171 H 1 BIYB 0.1500 + 16 H26 -11.7264 -3.7694 10.3684 H 1 BIYB 0.1500 + 17 H27 -11.9266 -1.6441 11.6358 H 1 BIYB 0.1500 + 18 H29 -7.8630 -2.6314 17.2203 H 1 BIYB 0.1500 + 19 H30 -6.3772 -4.1685 18.4425 H 1 BIYB 0.1500 + 20 H31 -5.8912 -6.4239 17.5258 H 1 BIYB 0.1500 + 21 H10 -9.3966 -2.2960 15.4650 H 1 BIYB 0.4000 + 22 H1 -10.6948 -1.3431 13.7468 H 1 BIYB 0.1500 + 23 H2 -6.8889 -7.1265 15.3830 H 1 BIYB 0.1500 +@BOND + 1 13 12 1 + 2 13 10 1 + 3 13 14 2 + 4 14 11 1 + 5 14 7 1 + 6 1 11 1 + 7 1 6 1 + 8 1 2 2 + 9 2 12 1 + 10 2 3 1 + 11 3 15 1 + 12 3 4 2 + 13 4 16 1 + 14 4 5 1 + 15 5 17 1 + 16 5 6 2 + 17 6 22 1 + 18 7 18 1 + 19 7 8 2 + 20 8 19 1 + 21 8 9 1 + 22 9 20 1 + 23 9 10 2 + 24 10 23 1 + 25 11 21 1 +@SUBSTRUCTURE + 1 BIYB 1 +@COMMENT +COMMENT PHENOTHIAZINE BIS(PYROMELLITIC DIANHYDRIDE) +@MOLECULE +BODKOU + 37 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C10 -8.5960 -3.4175 9.7954 C.3 1 BODK 0.2300 + 2 S11 -9.6850 -2.0390 10.1998 S.3 1 BODK -0.3710 + 3 C12 -10.6665 -2.7817 11.4188 C.2 1 BODK 0.7320 + 4 S13 -11.4860 -1.7486 12.5575 S.3 1 BODK -0.3710 + 5 C14 -12.3482 -3.2104 13.1913 C.3 1 BODK 0.5000 + 6 N15 -11.6779 -4.3558 12.5736 N.3 1 BODK -0.5770 + 7 N16 -10.8750 -4.0630 11.5078 N.2 1 BODK -0.5030 + 8 C17 -12.2621 -3.2900 14.7055 C.3 1 BODK 0.0000 + 9 H8 -8.0651 -3.7675 10.6844 H 1 BODK 0.0000 + 10 H9 -9.1624 -4.2452 9.3599 H 1 BODK 0.0000 + 11 H10 -7.8559 -3.0864 9.0618 H 1 BODK 0.0000 + 12 H13 -12.7527 -2.4294 15.1737 H 1 BODK 0.0000 + 13 H14 -12.7639 -4.1924 15.0729 H 1 BODK 0.0000 + 14 H15 -11.2250 -3.3232 15.0593 H 1 BODK 0.0000 + 15 H1 -13.3915 -3.1653 12.8621 H 1 BODK 0.0000 + 16 H2 -12.3398 -5.1053 12.3623 H 1 BODK 0.3600 + 17 N26 -5.0853 -5.2620 16.2061 N.2 1 BODK -0.5653 + 18 C27 -3.8111 -5.0836 15.9735 C.2 1 BODK 0.4621 + 19 S28 -3.4333 -4.3553 14.4695 S.3 1 BODK -0.0800 + 20 C29 -5.1054 -4.2442 14.1131 C.2 1 BODK -0.1100 + 21 N30 -2.8504 -5.4608 16.8325 N.3 1 BODK -0.8840 + 22 N18 -8.9235 -5.3880 13.4011 N.3 1 BODK -0.8000 + 23 C19 -8.1282 -4.4136 13.9479 C.2 1 BODK 0.6300 + 24 O20 -8.0343 -3.2839 13.4945 O.2 1 BODK -0.5700 + 25 C21 -7.3208 -4.8462 15.1723 C.2 1 BODK 0.5360 + 26 N22 -7.8906 -5.3110 16.2513 N.2 1 BODK -0.5130 + 27 O23 -9.2910 -5.3087 16.1658 O.3 1 BODK -0.2170 + 28 H16 -9.2052 -6.1381 14.0221 H 1 BODK 0.3700 + 29 H17 -9.6578 -5.0437 12.7778 H 1 BODK 0.3700 + 30 H18 -9.4776 -6.6816 17.7097 H 1 BODK 0.0000 + 31 H19 -9.5016 -4.9540 18.1988 H 1 BODK 0.0000 + 32 H20 -10.9051 -5.6734 17.3759 H 1 BODK 0.0000 + 33 H24 -3.1509 -6.1230 17.5393 H 1 BODK 0.4000 + 34 H25 -1.9343 -5.6569 16.4494 H 1 BODK 0.4000 + 35 C24 -9.8138 -5.6762 17.4382 C.3 1 BODK 0.2800 + 36 C25 -5.8579 -4.7731 15.1482 C.2 1 BODK 0.1412 + 37 H3 -5.4406 -3.7978 13.1870 H 1 BODK 0.1500 +@BOND + 1 1 11 1 + 2 1 10 1 + 3 1 9 1 + 4 1 2 1 + 5 2 3 1 + 6 3 7 2 + 7 3 4 1 + 8 4 5 1 + 9 5 15 1 + 10 5 8 1 + 11 5 6 1 + 12 6 16 1 + 13 6 7 1 + 14 8 14 1 + 15 8 13 1 + 16 8 12 1 + 17 22 29 1 + 18 22 28 1 + 19 22 23 am + 20 23 25 1 + 21 23 24 2 + 22 25 36 1 + 23 25 26 2 + 24 26 27 1 + 25 27 35 1 + 26 35 32 1 + 27 35 31 1 + 28 35 30 1 + 29 36 20 2 + 30 36 17 1 + 31 17 18 2 + 32 18 21 am + 33 18 19 1 + 34 19 20 1 + 35 20 37 1 + 36 21 34 1 + 37 21 33 1 +@SUBSTRUCTURE + 1 BODK 1 +@COMMENT +COMMENT SODIUM 3-((5-METHYL-1,3,4-THIADIAZOL-2-YL)-THIOMETHYL)-8-OX +@MOLECULE +BSALAP01 + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -4.6488 -2.1650 16.9381 BR 1 BRUR -0.1110 + 2 O1 -9.0505 -1.7703 12.8248 O.3 1 BRUR -0.5325 + 3 N1 -9.7667 -4.2478 13.5059 N.2 1 BRUR -0.6290 + 4 N2 -10.7353 -6.1291 14.5551 N.2 1 BRUR -0.6200 + 5 C1 -6.8968 -3.1523 15.4884 C.2 1 BRUR -0.1500 + 6 C2 -6.0348 -2.0677 15.6554 C.2 1 BRUR 0.1110 + 7 C3 -6.1831 -0.9125 14.8870 C.2 1 BRUR -0.1500 + 8 C4 -7.2054 -0.8375 13.9400 C.2 1 BRUR -0.1500 + 9 C5 -8.0703 -1.9154 13.7677 C.2 1 BRUR 0.0825 + 10 C6 -7.9198 -3.0759 14.5378 C.2 1 BRUR 0.0862 + 11 C7 -8.8131 -4.2439 14.3840 C.2 1 BRUR 0.3038 + 12 C8 -10.5789 -5.3896 13.4362 C.2 1 BRUR 0.4890 + 13 C9 -11.2199 -5.6866 12.2413 C.2 1 BRUR -0.1500 + 14 C10 -12.0505 -6.8022 12.1816 C.2 1 BRUR -0.1500 + 15 C11 -12.2201 -7.5800 13.3195 C.2 1 BRUR -0.1500 + 16 C12 -11.5490 -7.2049 14.4715 C.2 1 BRUR 0.1600 + 17 H1 -9.5837 -2.5968 12.8376 H 1 BRUR 0.4500 + 18 H2 -6.7708 -4.0459 16.0936 H 1 BRUR 0.1500 + 19 H3 -5.5120 -0.0672 15.0170 H 1 BRUR 0.1500 + 20 H4 -7.3302 0.0586 13.3378 H 1 BRUR 0.1500 + 21 H5 -8.6131 -5.1040 15.0501 H 1 BRUR 0.0600 + 22 H6 -11.0730 -5.0553 11.3724 H 1 BRUR 0.1500 + 23 H7 -12.5615 -7.0562 11.2575 H 1 BRUR 0.1500 + 24 H8 -12.8617 -8.4541 13.3112 H 1 BRUR 0.1500 + 25 H9 -11.6527 -7.7775 15.3889 H 1 BRUR 0.1500 +@BOND + 1 1 6 1 + 2 2 9 1 + 3 2 17 1 + 4 3 11 2 + 5 3 12 am + 6 4 12 2 + 7 4 16 1 + 8 5 6 2 + 9 5 10 1 + 10 5 18 1 + 11 6 7 1 + 12 7 8 2 + 13 7 19 1 + 14 8 9 1 + 15 8 20 1 + 16 9 10 2 + 17 10 11 1 + 18 11 21 1 + 19 12 13 1 + 20 13 14 2 + 21 13 22 1 + 22 14 15 1 + 23 14 23 1 + 24 15 16 2 + 25 15 24 1 + 26 16 25 1 +@SUBSTRUCTURE + 1 BRUR 1 +@COMMENT +COMMENT 4-BROMO-2-(2-PYRIDYLIMINOMETHYL)PHENOL +@MOLECULE +BUPSLB10 + 38 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -8.7898 -3.1065 14.4282 P 1 UNCH 0.6773 + 2 S1 -10.5491 -2.2321 14.4431 S.2 1 UNCH -0.6773 + 3 C1 -7.6388 -2.4220 13.1008 C.3 1 UNCH 0.0000 + 4 C2 -8.0166 -2.9766 11.7195 C.3 1 UNCH 0.0000 + 5 C3 -7.7526 -0.8798 13.0380 C.3 1 UNCH 0.0000 + 6 C4 -6.1543 -2.7385 13.3543 C.3 1 UNCH 0.0000 + 7 C5 -7.8609 -2.7869 15.9463 C.3 1 UNCH 0.0000 + 8 H1 -9.0900 -2.8795 11.5314 H 1 UNCH 0.0000 + 9 H2 -7.7510 -4.0332 11.6403 H 1 UNCH 0.0000 + 10 H3 -7.4848 -2.4523 10.9172 H 1 UNCH 0.0000 + 11 H4 -7.0275 -0.4535 12.3350 H 1 UNCH 0.0000 + 12 H5 -7.5707 -0.4305 14.0192 H 1 UNCH 0.0000 + 13 H6 -8.7451 -0.5620 12.7044 H 1 UNCH 0.0000 + 14 H7 -5.5230 -2.3422 12.5500 H 1 UNCH 0.0000 + 15 H8 -5.9685 -3.8097 13.4054 H 1 UNCH 0.0000 + 16 H9 -5.8000 -2.2937 14.2889 H 1 UNCH 0.0000 + 17 H10 -6.9802 -3.4303 16.0074 H 1 UNCH 0.0000 + 18 H11 -8.4690 -2.9655 16.8341 H 1 UNCH 0.0000 + 19 H12 -7.5321 -1.7447 15.9861 H 1 UNCH 0.0000 + 20 P1A -8.9782 -5.3609 14.2818 P 1 UNCH 0.6773 + 21 S1A -7.2189 -6.2353 14.2669 S.2 1 UNCH -0.6773 + 22 C1A -10.1292 -6.0454 15.6092 C.3 1 UNCH 0.0000 + 23 C5A -9.9071 -5.6805 12.7637 C.3 1 UNCH 0.0000 + 24 C2A -9.7514 -5.4908 16.9905 C.3 1 UNCH 0.0000 + 25 C3A -10.0154 -7.5876 15.6720 C.3 1 UNCH 0.0000 + 26 C4A -11.6137 -5.7289 15.3557 C.3 1 UNCH 0.0000 + 27 H10A -10.7878 -5.0371 12.7026 H 1 UNCH 0.0000 + 28 H11A -9.2990 -5.5019 11.8759 H 1 UNCH 0.0000 + 29 H12A -10.2359 -6.7227 12.7239 H 1 UNCH 0.0000 + 30 H1A -8.6780 -5.5879 17.1786 H 1 UNCH 0.0000 + 31 H2A -10.0170 -4.4342 17.0697 H 1 UNCH 0.0000 + 32 H3A -10.2832 -6.0151 17.7928 H 1 UNCH 0.0000 + 33 H4A -10.7405 -8.0139 16.3750 H 1 UNCH 0.0000 + 34 H5A -10.1973 -8.0369 14.6908 H 1 UNCH 0.0000 + 35 H6A -9.0229 -7.9054 16.0056 H 1 UNCH 0.0000 + 36 H7A -12.2450 -6.1252 16.1600 H 1 UNCH 0.0000 + 37 H8A -11.7995 -4.6577 15.3046 H 1 UNCH 0.0000 + 38 H9A -11.9679 -6.1737 14.4211 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 7 1 + 4 1 20 1 + 5 3 4 1 + 6 3 5 1 + 7 3 6 1 + 8 4 8 1 + 9 4 9 1 + 10 4 10 1 + 11 5 11 1 + 12 5 12 1 + 13 5 13 1 + 14 6 14 1 + 15 6 15 1 + 16 6 16 1 + 17 7 17 1 + 18 7 18 1 + 19 7 19 1 + 20 20 21 2 + 21 20 22 1 + 22 20 23 1 + 23 22 24 1 + 24 22 25 1 + 25 22 26 1 + 26 23 27 1 + 27 23 28 1 + 28 23 29 1 + 29 24 30 1 + 30 24 31 1 + 31 24 32 1 + 32 25 33 1 + 33 25 34 1 + 34 25 35 1 + 35 26 36 1 + 36 26 37 1 + 37 26 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DIMETHYL-DI-T-BUTYL-DIPHOSPHANE-DISULFIDE (FOR STEREOISOMER +@MOLECULE +BUPSLD10 + 39 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -10.5312 -4.1464 15.3751 P 1 BUPS 0.9253 + 2 P2 -8.5256 -5.7414 13.1924 P 1 BUPS 0.9253 + 3 S1 -12.2754 -4.1015 14.4738 S.2 1 BUPS -0.6773 + 4 S2 -7.7101 -7.1766 14.2562 S.2 1 BUPS -0.6773 + 5 S3 -8.8240 -3.8895 14.1604 S.3 1 BUPS -0.4960 + 6 C11 -10.3800 -2.8077 16.7239 C.3 1 BUPS 0.0000 + 7 C12 -10.4375 -1.4079 16.0772 C.3 1 BUPS 0.0000 + 8 C13 -11.5341 -2.9140 17.7405 C.3 1 BUPS 0.0000 + 9 C14 -9.0523 -2.9288 17.4958 C.3 1 BUPS 0.0000 + 10 C15 -10.3053 -5.6703 16.3223 C.3 1 BUPS 0.0000 + 11 C21 -7.5037 -5.3240 11.6382 C.3 1 BUPS 0.0000 + 12 C22 -6.1311 -4.7551 12.0545 C.3 1 BUPS 0.0000 + 13 C23 -7.2611 -6.5823 10.7811 C.3 1 BUPS 0.0000 + 14 C24 -8.2131 -4.2774 10.7580 C.3 1 BUPS 0.0000 + 15 C25 -10.1093 -6.2502 12.4829 C.3 1 BUPS 0.0000 + 16 H121 -9.6171 -1.2609 15.3685 H 1 BUPS 0.0000 + 17 H122 -10.3670 -0.6178 16.8334 H 1 BUPS 0.0000 + 18 H123 -11.3735 -1.2603 15.5300 H 1 BUPS 0.0000 + 19 H131 -11.4543 -2.1391 18.5117 H 1 BUPS 0.0000 + 20 H132 -11.5327 -3.8828 18.2476 H 1 BUPS 0.0000 + 21 H133 -12.5084 -2.7957 17.2574 H 1 BUPS 0.0000 + 22 H141 -8.1882 -2.8581 16.8298 H 1 BUPS 0.0000 + 23 H142 -8.9840 -3.8823 18.0271 H 1 BUPS 0.0000 + 24 H143 -8.9564 -2.1326 18.2431 H 1 BUPS 0.0000 + 25 H151 -11.0455 -5.7487 17.1225 H 1 BUPS 0.0000 + 26 H152 -9.3101 -5.7207 16.7693 H 1 BUPS 0.0000 + 27 H153 -10.4392 -6.5425 15.6779 H 1 BUPS 0.0000 + 28 H221 -5.5736 -5.4694 12.6681 H 1 BUPS 0.0000 + 29 H222 -6.2396 -3.8364 12.6386 H 1 BUPS 0.0000 + 30 H223 -5.5163 -4.5195 11.1784 H 1 BUPS 0.0000 + 31 H231 -6.6656 -6.3462 9.8917 H 1 BUPS 0.0000 + 32 H232 -6.7224 -7.3527 11.3405 H 1 BUPS 0.0000 + 33 H233 -8.2025 -7.0207 10.4386 H 1 BUPS 0.0000 + 34 H241 -8.4130 -3.3537 11.3077 H 1 BUPS 0.0000 + 35 H242 -9.1691 -4.6528 10.3821 H 1 BUPS 0.0000 + 36 H243 -7.6018 -4.0148 9.8868 H 1 BUPS 0.0000 + 37 H251 -9.9790 -7.0849 11.7894 H 1 BUPS 0.0000 + 38 H252 -10.5901 -5.4297 11.9458 H 1 BUPS 0.0000 + 39 H253 -10.7865 -6.5922 13.2693 H 1 BUPS 0.0000 +@BOND + 1 1 3 2 + 2 1 5 1 + 3 1 6 1 + 4 1 10 1 + 5 2 4 2 + 6 2 5 1 + 7 2 11 1 + 8 2 15 1 + 9 6 7 1 + 10 6 8 1 + 11 6 9 1 + 12 7 16 1 + 13 7 17 1 + 14 7 18 1 + 15 8 19 1 + 16 8 20 1 + 17 8 21 1 + 18 9 22 1 + 19 9 23 1 + 20 9 24 1 + 21 10 25 1 + 22 10 26 1 + 23 10 27 1 + 24 11 12 1 + 25 11 13 1 + 26 11 14 1 + 27 12 28 1 + 28 12 29 1 + 29 12 30 1 + 30 13 31 1 + 31 13 32 1 + 32 13 33 1 + 33 14 34 1 + 34 14 35 1 + 35 14 36 1 + 36 15 37 1 + 37 15 38 1 + 38 15 39 1 +@SUBSTRUCTURE + 1 BUPS 1 +@COMMENT +COMMENT BIS(METHYL-T-BUTYL-PHOSPHINE-SULFIDE)-SULFANE +@MOLECULE +BUYTIY10 + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.2133 -3.9879 17.7745 N.2 1 BUYT -0.5653 + 2 C2 -7.6687 -5.2547 17.9193 C.2 1 BUYT 0.0772 + 3 C3 -7.2324 -5.7713 16.7094 C.2 1 BUYT -0.3016 + 4 N4 -7.5427 -4.7974 15.8239 N.3 1 BUYT 0.4632 + 5 N5 -7.3935 -4.5656 14.4704 N.3 1 BUYT -0.6291 + 6 C6 -7.9332 -3.2758 14.3325 C.2 1 BUYT -0.0500 + 7 C7 -8.3281 -2.7464 15.5140 C.2 1 BUYT 0.1100 + 8 C8 -8.0879 -3.7363 16.4955 C.2 1 BUYT 0.1415 + 9 C9 -8.9138 -1.4778 15.7008 C.1 1 BUYT 0.4921 + 10 N9 -9.3982 -0.4294 15.8197 N.1 1 BUYT -0.5571 + 11 C1_ -7.6603 -5.6813 13.5734 C.3 1 BUYT 0.6491 + 12 C2_ -9.1228 -6.1739 13.5879 C.3 1 BUYT 0.2800 + 13 O2_ -9.2051 -7.6086 13.4386 O.3 1 BUYT -0.6800 + 14 C3_ -9.7015 -5.5339 12.3391 C.3 1 BUYT 0.2800 + 15 O3_ -10.7950 -6.2848 11.8181 O.3 1 BUYT -0.6800 + 16 C4_ -8.5016 -5.5257 11.4015 C.3 1 BUYT 0.2800 + 17 C5_ -8.5892 -4.4580 10.3103 C.3 1 BUYT 0.2800 + 18 O5_ -8.7853 -3.1596 10.8723 O.3 1 BUYT -0.6800 + 19 O1_ -7.3378 -5.3061 12.2229 O.3 1 BUYT -0.5600 + 20 H2 -7.6109 -5.7217 18.8954 H 1 BUYT 0.1500 + 21 H3 -6.7422 -6.6948 16.4430 H 1 BUYT 0.1500 + 22 H6 -8.0045 -2.8374 13.3437 H 1 BUYT 0.1500 + 23 H1_ -6.9842 -6.5067 13.8270 H 1 BUYT 0.0000 + 24 H2_ -9.6915 -5.9161 14.4862 H 1 BUYT 0.0000 + 25 H21 -8.9537 -8.0042 14.2935 H 1 BUYT 0.4000 + 26 H3_ -10.0473 -4.5203 12.5658 H 1 BUYT 0.0000 + 27 H31 -10.6173 -7.2152 12.0703 H 1 BUYT 0.4000 + 28 H4_ -8.3812 -6.5031 10.9173 H 1 BUYT 0.0000 + 29 H51_ -9.4231 -4.6671 9.6331 H 1 BUYT 0.0000 + 30 H52_ -7.6567 -4.4300 9.7373 H 1 BUYT 0.0000 + 31 H5_ -8.7938 -2.5319 10.1280 H 1 BUYT 0.4000 +@BOND + 1 1 2 1 + 2 1 8 2 + 3 2 3 2 + 4 2 20 1 + 5 3 4 1 + 6 3 21 1 + 7 4 5 1 + 8 4 8 am + 9 5 6 1 + 10 5 11 1 + 11 6 7 2 + 12 6 22 1 + 13 7 8 1 + 14 7 9 1 + 15 9 10 3 + 16 11 12 1 + 17 11 19 1 + 18 11 23 1 + 19 12 13 1 + 20 12 14 1 + 21 12 24 1 + 22 13 25 1 + 23 14 15 1 + 24 14 16 1 + 25 14 26 1 + 26 15 27 1 + 27 16 17 1 + 28 16 19 1 + 29 16 28 1 + 30 17 18 1 + 31 17 29 1 + 32 17 30 1 + 33 18 31 1 +@SUBSTRUCTURE + 1 BUYT 1 +@COMMENT +COMMENT 5-BETA-D-RIBOFURANOSYLIMIDAZO(1,2-B)PYRAZOLE-7-CARBONITRILE +@MOLECULE +BUYTOE10 + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.5207 -4.0012 13.4853 N.3 1 BUYT -0.5531 + 2 C2 -10.5818 -4.5487 12.7493 C.2 1 BUYT -0.0500 + 3 C3 -10.5524 -4.0667 11.4900 C.2 1 BUYT -0.1810 + 4 N4 -9.4803 -3.1921 11.4233 N.3 1 BUYT 0.6006 + 5 N5 -8.9102 -2.3851 10.5127 N.2 1 BUYT -0.7068 + 6 C6 -7.9031 -1.8194 11.2006 C.2 1 BUYT 0.1388 + 7 C7 -7.8200 -2.2593 12.5453 C.2 1 BUYT 0.0190 + 8 C8 -8.8517 -3.1451 12.6528 C.2 1 BUYT -0.0676 + 9 C9 -6.8770 -1.8817 13.5362 C.1 1 BUYT 0.5381 + 10 N9 -6.0954 -1.5915 14.3440 N.1 1 BUYT -0.5571 + 11 C1_ -9.2822 -4.0785 14.9174 C.3 1 BUYT 0.6491 + 12 C2_ -10.0033 -2.9513 15.6782 C.3 1 BUYT 0.2800 + 13 O2_ -9.2699 -1.7313 15.7649 O.3 1 BUYT -0.6800 + 14 C3_ -10.1853 -3.5883 17.0428 C.3 1 BUYT 0.2800 + 15 O3_ -8.9359 -3.4785 17.7462 O.3 1 BUYT -0.6800 + 16 C4_ -10.4825 -5.0396 16.6857 C.3 1 BUYT 0.2800 + 17 C5_ -11.9706 -5.3020 16.4440 C.3 1 BUYT 0.2800 + 18 O5_ -12.1656 -6.6770 16.1189 O.3 1 BUYT -0.6800 + 19 O1_ -9.7862 -5.3239 15.4471 O.3 1 BUYT -0.5600 + 20 H2 -11.2720 -5.2467 13.2007 H 1 BUYT 0.1500 + 21 H3 -11.1916 -4.2528 10.6465 H 1 BUYT 0.1500 + 22 H6 -7.2655 -1.1075 10.6901 H 1 BUYT 0.1500 + 23 H1_ -8.2035 -4.0590 15.1158 H 1 BUYT 0.0000 + 24 H2_ -10.9772 -2.7334 15.2249 H 1 BUYT 0.0000 + 25 H21 -8.5704 -1.8868 16.4350 H 1 BUYT 0.4000 + 26 H3_ -10.9514 -3.1005 17.6521 H 1 BUYT 0.0000 + 27 H31 -9.0420 -3.9100 18.6142 H 1 BUYT 0.4000 + 28 H4_ -10.0931 -5.7389 17.4336 H 1 BUYT 0.0000 + 29 H51_ -12.3575 -4.7142 15.6061 H 1 BUYT 0.0000 + 30 H52_ -12.5614 -5.0763 17.3365 H 1 BUYT 0.0000 + 31 H5_ -11.4625 -6.9111 15.4812 H 1 BUYT 0.4000 +@BOND + 1 1 11 1 + 2 1 8 1 + 3 1 2 1 + 4 2 20 1 + 5 2 3 2 + 6 3 21 1 + 7 3 4 1 + 8 4 8 1 + 9 4 5 1 + 10 5 6 2 + 11 6 22 1 + 12 6 7 1 + 13 7 9 1 + 14 7 8 2 + 15 9 10 3 + 16 11 23 1 + 17 11 19 1 + 18 11 12 1 + 19 12 24 1 + 20 12 14 1 + 21 12 13 1 + 22 13 25 1 + 23 14 26 1 + 24 14 16 1 + 25 14 15 1 + 26 15 27 1 + 27 16 28 1 + 28 16 19 1 + 29 16 17 1 + 30 17 30 1 + 31 17 29 1 + 32 17 18 1 + 33 18 31 1 +@SUBSTRUCTURE + 1 BUYT 1 +@COMMENT +COMMENT 1-BETA-D-RIBOFURANOSYLIMIDAZO(1,2-B)PYRAZOLE-7-CARBONITRILE +@MOLECULE +BUYXEY10 + 38 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.6187 -5.3039 18.9959 O.2 1 UNCH -0.5700 + 2 C1 -8.4428 -5.3599 18.6669 C.2 1 UNCH 0.5700 + 3 N1 -7.9571 -5.0316 17.4330 N.3 1 UNCH -0.7301 + 4 C2 -8.8270 -4.6770 16.3191 C.3 1 UNCH 0.3611 + 5 C3 -8.2388 -5.3352 15.0549 C.2 1 UNCH 0.5690 + 6 O2 -7.0620 -5.6873 14.9861 O.2 1 UNCH -0.5700 + 7 C4 -8.9168 -3.1583 16.1151 C.3 1 UNCH 0.0000 + 8 C5 -9.6496 -2.4597 17.2587 C.3 1 UNCH 0.2300 + 9 S1 -9.7903 -0.6619 16.9680 S.3 1 UNCH -0.4600 + 10 C6 -11.1162 -0.6545 15.7360 C.3 1 UNCH 0.2300 + 11 N2 -9.1260 -5.4672 14.0072 N.3 1 UNCH -0.7301 + 12 C7 -8.6574 -5.8451 12.6673 C.3 1 UNCH 0.3611 + 13 C8 -9.7418 -6.6385 11.9084 C.3 1 UNCH 0.0000 + 14 C9 -10.1365 -7.9066 12.6760 C.3 1 UNCH 0.0000 + 15 C10 -9.2820 -7.0337 10.5010 C.3 1 UNCH 0.0000 + 16 C11 -8.3387 -4.5244 11.9606 C.2 1 UNCH 0.6590 + 17 O3 -7.3034 -4.6077 11.1037 O.3 1 UNCH -0.6500 + 18 O4 -8.9437 -3.4711 12.1083 O.2 1 UNCH -0.5700 + 19 H1 -9.4311 -2.9568 15.1685 H 1 UNCH 0.0000 + 20 H2 -10.6402 -6.0153 11.8048 H 1 UNCH 0.0000 + 21 H3 -7.6444 -5.6803 19.3566 H 1 UNCH 0.0600 + 22 H4 -7.1963 -3.6982 10.7542 H 1 UNCH 0.5000 + 23 H5 -10.8900 -8.4775 12.1226 H 1 UNCH 0.0000 + 24 H6 -10.5666 -7.6648 13.6532 H 1 UNCH 0.0000 + 25 H7 -6.9830 -5.2238 17.2136 H 1 UNCH 0.3700 + 26 H8 -9.8239 -5.1007 16.4914 H 1 UNCH 0.0000 + 27 H9 -7.7345 -6.4286 12.7628 H 1 UNCH 0.0000 + 28 H10 -9.9648 -4.8981 14.0340 H 1 UNCH 0.3700 + 29 H11 -7.9047 -2.7436 16.0134 H 1 UNCH 0.0000 + 30 H12 -9.0943 -2.5809 18.1936 H 1 UNCH 0.0000 + 31 H13 -10.7845 -1.1174 14.8039 H 1 UNCH 0.0000 + 32 H14 -9.1215 -6.1530 9.8718 H 1 UNCH 0.0000 + 33 H15 -10.6487 -2.8807 17.4104 H 1 UNCH 0.0000 + 34 H16 -9.2701 -8.5574 12.8367 H 1 UNCH 0.0000 + 35 H17 -11.3967 0.3805 15.5220 H 1 UNCH 0.0000 + 36 H18 -11.9965 -1.1783 16.1173 H 1 UNCH 0.0000 + 37 H19 -10.0387 -7.6499 10.0031 H 1 UNCH 0.0000 + 38 H20 -8.3490 -7.6065 10.5346 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 2 3 am + 3 2 21 1 + 4 3 4 1 + 5 3 25 1 + 6 4 5 1 + 7 4 7 1 + 8 4 26 1 + 9 5 6 2 + 10 5 11 am + 11 7 8 1 + 12 7 19 1 + 13 7 29 1 + 14 8 9 1 + 15 8 30 1 + 16 8 33 1 + 17 9 10 1 + 18 10 31 1 + 19 10 35 1 + 20 10 36 1 + 21 11 12 1 + 22 11 28 1 + 23 12 13 1 + 24 12 16 1 + 25 12 27 1 + 26 13 14 1 + 27 13 15 1 + 28 13 20 1 + 29 14 23 1 + 30 14 24 1 + 31 14 34 1 + 32 15 32 1 + 33 15 37 1 + 34 15 38 1 + 35 16 17 1 + 36 16 18 2 + 37 17 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-FORMYL-L-METHIONYL-L-VALINE PEPSEQ A=2 MET*-VAL +@MOLECULE +BYITOT02 + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.7918 -6.4924 15.6850 O.3 1 BUYX -0.2870 + 2 S2 -11.0024 -4.8493 15.4979 S.3 1 BUYX -0.1340 + 3 C3 -10.2546 -4.7066 13.8769 C.2 1 BUYX 0.6410 + 4 N4 -10.5183 -5.7297 12.9609 N.3 1 BUYX -0.7882 + 5 C5 -10.6687 -7.1263 13.3964 C.3 1 BUYX 0.3691 + 6 C6 -11.4672 -7.2479 14.6864 C.3 1 BUYX 0.2800 + 7 N7 -9.5194 -3.6878 13.5346 N.2 1 BUYX -0.6610 + 8 C8 -9.3306 -2.6693 14.4317 C.2 1 BUYX 0.6948 + 9 O9 -10.1666 -1.8015 14.6565 O.2 1 BUYX -0.5700 + 10 C10 -8.0000 -2.6159 15.1126 C.2 1 BUYX 0.0862 + 11 C11 -7.7798 -1.6487 16.1028 C.2 1 BUYX -0.1500 + 12 C12 -6.5488 -1.5807 16.7581 C.2 1 BUYX -0.1500 + 13 C13 -5.5325 -2.4764 16.4274 C.2 1 BUYX -0.1500 + 14 C14 -5.7431 -3.4404 15.4416 C.2 1 BUYX -0.1500 + 15 C15 -6.9733 -3.5118 14.7838 C.2 1 BUYX -0.1500 + 16 C16 -10.0157 -5.5824 11.5961 C.3 1 BUYX 0.3691 + 17 H51 -9.6660 -7.5457 13.5462 H 1 BUYX 0.0000 + 18 H52 -11.1658 -7.7146 12.6168 H 1 BUYX 0.0000 + 19 H61 -11.4907 -8.2928 15.0127 H 1 BUYX 0.0000 + 20 H62 -12.5061 -6.9148 14.5662 H 1 BUYX 0.0000 + 21 H11 -8.5681 -0.9465 16.3675 H 1 BUYX 0.1500 + 22 H12 -6.3846 -0.8288 17.5260 H 1 BUYX 0.1500 + 23 H13 -4.5743 -2.4220 16.9384 H 1 BUYX 0.1500 + 24 H14 -4.9483 -4.1360 15.1840 H 1 BUYX 0.1500 + 25 H15 -7.1189 -4.2653 14.0144 H 1 BUYX 0.1500 + 26 H161 -8.9284 -5.7102 11.5709 H 1 BUYX 0.0000 + 27 H162 -10.4654 -6.3262 10.9295 H 1 BUYX 0.0000 + 28 H163 -10.2688 -4.5976 11.1888 H 1 BUYX 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 1 + 4 3 4 am + 5 3 7 2 + 6 4 5 1 + 7 4 16 1 + 8 5 6 1 + 9 5 17 1 + 10 5 18 1 + 11 6 19 1 + 12 6 20 1 + 13 7 8 am + 14 8 9 2 + 15 8 10 1 + 16 10 11 2 + 17 10 15 1 + 18 11 12 1 + 19 11 21 1 + 20 12 13 2 + 21 12 22 1 + 22 13 14 1 + 23 13 23 1 + 24 14 15 2 + 25 14 24 1 + 26 15 25 1 + 27 16 26 1 + 28 16 27 1 + 29 16 28 1 +@SUBSTRUCTURE + 1 BUYX 1 +@COMMENT +COMMENT 3-BENZOYLIMINO-4-METHYL-1,2,4-OXATHIAZANE (NEUTRON STUDY, A +@MOLECULE +CABWEH10 + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.0844 -3.3914 16.7311 S.1 1 CABW 1.0896 + 2 C10 -9.9453 -3.1879 12.9717 C.2 1 CABW -0.1500 + 3 O1 -5.8165 -4.0882 16.6163 O.2 1 CABW -0.6500 + 4 O2 -7.1911 -2.1352 17.4498 O.2 1 CABW -0.6500 + 5 C1 -7.7753 -3.1792 15.0950 C.3 1 CABW 0.2434 + 6 C2 -8.9459 -4.1234 15.0696 C.2 1 CABW -0.1666 + 7 C3 -9.2088 -4.7795 16.2133 C.2 1 CABW -0.2882 + 8 C4 -8.3038 -4.5264 17.3761 C.3 1 CABW 0.2434 + 9 C5 -9.7437 -4.2725 13.8381 C.2 1 CABW 0.0284 + 10 C6 -10.2958 -5.5133 13.4817 C.2 1 CABW -0.1500 + 11 C7 -11.0358 -5.6617 12.3048 C.2 1 CABW -0.1500 + 12 C8 -11.2321 -4.5718 11.4623 C.2 1 CABW -0.1500 + 13 C9 -10.6865 -3.3353 11.7949 C.2 1 CABW -0.1500 + 14 H11 -7.0137 -3.4457 14.3580 H 1 CABW 0.0000 + 15 H12 -8.0771 -2.1343 14.9909 H 1 CABW 0.0000 + 16 H3 -10.0401 -5.4655 16.3330 H 1 CABW 0.1500 + 17 H41 -7.8042 -5.4398 17.7050 H 1 CABW 0.0000 + 18 H42 -8.8368 -4.0512 18.2021 H 1 CABW 0.0000 + 19 H6 -10.1444 -6.3903 14.1067 H 1 CABW 0.1500 + 20 H7 -11.4536 -6.6312 12.0454 H 1 CABW 0.1500 + 21 H8 -11.8071 -4.6861 10.5471 H 1 CABW 0.1500 + 22 H9 -10.8384 -2.4814 11.1392 H 1 CABW 0.1500 + 23 H10 -9.5465 -2.2029 13.2005 H 1 CABW 0.1500 +@BOND + 1 1 8 1 + 2 1 5 1 + 3 1 4 2 + 4 1 3 2 + 5 2 23 1 + 6 2 13 2 + 7 2 9 1 + 8 5 15 1 + 9 5 14 1 + 10 5 6 1 + 11 6 9 1 + 12 6 7 2 + 13 7 16 1 + 14 7 8 1 + 15 8 18 1 + 16 8 17 1 + 17 9 10 2 + 18 10 19 1 + 19 10 11 1 + 20 11 20 1 + 21 11 12 2 + 22 12 21 1 + 23 12 13 1 + 24 13 22 1 +@SUBSTRUCTURE + 1 CABW 1 +@COMMENT +COMMENT 3-PHENYL-3-THIOLENE-1,1-DIOXIDE (AT -120 DEG.C) +@MOLECULE +CAFORM07 + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -8.7373 -4.0353 14.5626 C.2 1 CAFO 1.0203 + 2 O3 -7.9790 -4.9254 15.0311 O.2 1 CAFO -0.9000 + 3 O4 -9.7818 -3.5089 15.0304 O.3 1 CAFO -0.9000 + 4 H2 -8.4244 -3.6375 13.5384 H 1 CAFO -0.2203 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 4 1 +@SUBSTRUCTURE + 1 CAFO 1 +@COMMENT +COMMENT CALCIUM FORMATE (NEUTRON STUDY, ALPHA FORM) +@MOLECULE +CAGREH10 + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.7453 -6.2525 15.2519 S.1 1 CAFO 1.6674 + 2 S2 -11.2747 -3.7074 16.0917 S.1 1 CAFO 1.6717 + 3 O1 -9.3678 -5.4906 14.8964 O.3 1 CAFO -0.3337 + 4 O2 -11.7976 -5.0837 15.4923 O.3 1 CAFO -0.3674 + 5 O3 -11.1524 -6.9569 14.0515 O.2 1 CAFO -0.6500 + 6 O4 -10.5567 -6.9794 16.4885 O.2 1 CAFO -0.6500 + 7 O5 -12.3679 -2.7619 16.0293 O.2 1 CAFO -0.6500 + 8 O6 -10.5886 -3.9631 17.3378 O.2 1 CAFO -0.6500 + 9 N1 -10.1958 -3.3194 14.9648 N.2 1 CAFO -0.6380 + 10 C1 -9.3428 -4.1953 14.5717 C.2 1 CAFO 0.5138 + 11 C2 -8.2070 -3.8794 13.6713 C.2 1 CAFO 0.0862 + 12 C3 -8.0537 -2.5625 13.2144 C.2 1 CAFO -0.1500 + 13 C4 -6.9974 -2.2297 12.3636 C.2 1 CAFO -0.1500 + 14 C5 -6.0886 -3.2074 11.9641 C.2 1 CAFO -0.1500 + 15 C6 -6.2325 -4.5188 12.4138 C.2 1 CAFO -0.1500 + 16 C7 -7.2875 -4.8573 13.2652 C.2 1 CAFO -0.1500 + 17 H3 -8.7505 -1.7817 13.5133 H 1 CAFO 0.1500 + 18 H4 -6.8836 -1.2064 12.0128 H 1 CAFO 0.1500 + 19 H5 -5.2662 -2.9468 11.3017 H 1 CAFO 0.1500 + 20 H6 -5.5207 -5.2796 12.1006 H 1 CAFO 0.1500 + 21 H7 -7.3685 -5.8892 13.5979 H 1 CAFO 0.1500 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 2 + 4 1 6 2 + 5 2 4 1 + 6 2 7 2 + 7 2 8 2 + 8 2 9 1 + 9 3 10 1 + 10 9 10 2 + 11 10 11 1 + 12 11 12 2 + 13 11 16 1 + 14 12 13 1 + 15 12 17 1 + 16 13 14 2 + 17 13 18 1 + 18 14 15 1 + 19 14 19 1 + 20 15 16 2 + 21 15 20 1 + 22 16 21 1 +@SUBSTRUCTURE + 1 CAFO 1 +@COMMENT +COMMENT 6-PHENYL-1,3,2,4,5-DIOXADITHIAZINE-2,2,4,4-TETROXIDE +@MOLECULE +CALXES20 + 27 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -11.0292 -5.8950 13.7243 N.3 1 CALX -0.8530 + 2 C1 -11.3292 -4.4837 14.0370 C.3 1 CALX 0.5640 + 3 C2 -12.1765 -4.4381 15.2995 C.3 1 CALX 0.0000 + 4 C3 -10.0616 -3.6026 14.1499 C.2 1 CALX 0.5690 + 5 O1 -9.7805 -2.7802 13.2798 O.2 1 CALX -0.5700 + 6 N2 -9.2778 -3.7953 15.2686 N.3 1 CALX -0.7301 + 7 C4 -7.9950 -3.1042 15.4292 C.3 1 CALX 0.3611 + 8 C5 -6.8871 -4.1333 15.2090 C.2 1 CALX 0.5690 + 9 O2 -6.3019 -4.6704 16.1451 O.2 1 CALX -0.5700 + 10 N3 -6.7401 -4.5149 13.8830 N.3 1 CALX -0.7301 + 11 C6 -6.7959 -5.9615 13.6204 C.3 1 CALX 0.1941 + 12 C7 -8.2534 -6.4417 13.6277 C.2 1 CALX 0.9060 + 13 O3 -8.8542 -6.5721 14.7450 O.2 1 CALX -0.9000 + 14 O4 -8.8941 -6.4172 12.5299 O.3 1 CALX -0.9000 + 15 H1 -10.3751 -6.3177 14.4304 H 1 CALX 0.4500 + 16 H2 -11.8021 -6.5385 13.5767 H 1 CALX 0.4500 + 17 H3 -10.3856 -5.9826 12.8936 H 1 CALX 0.4500 + 18 H4 -12.4036 -3.4027 15.5755 H 1 CALX 0.0000 + 19 H5 -11.6667 -4.9026 16.1508 H 1 CALX 0.0000 + 20 H6 -13.1263 -4.9634 15.1515 H 1 CALX 0.0000 + 21 H7 -11.9179 -4.1085 13.1924 H 1 CALX 0.0000 + 22 H8 -9.2761 -4.7408 15.6626 H 1 CALX 0.3700 + 23 H9 -7.9384 -2.7332 16.4564 H 1 CALX 0.0000 + 24 H10 -7.8883 -2.2673 14.7338 H 1 CALX 0.0000 + 25 H11 -7.2946 -3.9818 13.2199 H 1 CALX 0.3700 + 26 H12 -6.2185 -6.5053 14.3745 H 1 CALX 0.0000 + 27 H13 -6.3484 -6.1314 12.6366 H 1 CALX 0.0000 +@BOND + 1 1 2 1 + 2 1 15 1 + 3 1 16 1 + 4 1 17 1 + 5 2 3 1 + 6 2 4 1 + 7 2 21 1 + 8 3 18 1 + 9 3 19 1 + 10 3 20 1 + 11 4 5 2 + 12 4 6 am + 13 6 7 1 + 14 6 22 1 + 15 7 8 1 + 16 7 23 1 + 17 7 24 1 + 18 8 9 2 + 19 8 10 am + 20 10 11 1 + 21 10 25 1 + 22 11 12 1 + 23 11 26 1 + 24 11 27 1 + 25 12 13 2 + 26 12 14 1 +@SUBSTRUCTURE + 1 CALX 1 +@COMMENT +COMMENT L-ALANYL-GLYCYL-GLYCINE MONOHYDRATE PEPSEQ A=3 ALA-GLY-GLY +@MOLECULE +CAMALD03 + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -7.5941 -3.5863 14.4239 C.2 1 CAMA 0.9060 + 2 C2 -8.7777 -4.4242 14.8322 C.3 1 CAMA -0.2120 + 3 C3 -9.9333 -4.1879 13.8950 C.2 1 CAMA 0.9060 + 4 O1 -7.1751 -2.7696 15.3078 O.2 1 CAMA -0.9000 + 5 O2 -7.0173 -3.8790 13.3337 O.3 1 CAMA -0.9000 + 6 O3 -10.3579 -5.2221 13.2837 O.3 1 CAMA -0.9000 + 7 O4 -10.4881 -3.0484 13.9246 O.2 1 CAMA -0.9000 + 8 H21 -9.0950 -4.1811 15.8529 H 1 CAMA 0.0000 + 9 H22 -8.4815 -5.4796 14.8291 H 1 CAMA 0.0000 +@BOND + 1 1 5 1 + 2 1 4 2 + 3 1 2 1 + 4 2 9 1 + 5 2 8 1 + 6 2 3 1 + 7 3 7 2 + 8 3 6 1 +@SUBSTRUCTURE + 1 CAMA 1 +@COMMENT +COMMENT CALCIUM MALONATE DIHYDRATE (NEUTRON STUDY) +@MOLECULE +CEFMEN + 50 53 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.7747 9.1942 7.3740 S.3 1 CEFM -0.4470 + 2 S2 6.1927 10.3546 14.7781 S.3 1 CEFM -0.0800 + 3 S3 0.5782 7.0155 3.4380 S.3 1 CEFM -0.2860 + 4 O1 6.7133 7.4541 6.7534 O.2 1 CEFM -0.5700 + 5 O2 5.5406 5.6595 4.4165 O.2 1 CEFM -0.5700 + 6 O3 5.1947 7.6005 3.3570 O.3 1 CEFM -0.6500 + 7 O4 3.8266 8.7650 10.9777 O.2 1 CEFM -0.5700 + 8 O5 4.8532 11.6090 8.8862 O.3 1 CEFM -0.2170 + 9 N1 4.3756 7.1940 6.6501 N.3 1 CEFM -0.3940 + 10 N2 5.3199 8.9618 9.2418 N.3 1 CEFM -0.6550 + 11 N3 5.3041 11.8065 10.1972 N.2 1 CEFM -0.5130 + 12 N4 6.1694 12.0295 12.8402 N.2 1 CEFM -0.5653 + 13 N5 7.0125 12.8983 14.8303 N.3 1 CEFM -0.8840 + 14 N6 -0.0297 4.3569 3.5876 N.3 1 CEFM 0.3140 + 15 N7 0.5450 3.1655 3.8278 N.2 1 CEFM -0.4180 + 16 N8 1.8268 3.4357 4.0395 N.2 1 CEFM 0.0000 + 17 N9 2.0706 4.7854 3.9404 N.2 1 CEFM -0.3381 + 18 C1 1.8644 8.4667 5.9823 C.3 1 CEFM 0.3682 + 19 C2 2.7695 7.7631 4.9893 C.2 1 CEFM -0.2764 + 20 C3 3.9762 7.2552 5.3443 C.2 1 CEFM 0.1234 + 21 C4 3.5910 7.6255 7.7915 C.3 1 CEFM 0.4420 + 22 C5 4.9334 7.6886 8.5857 C.3 1 CEFM 0.2780 + 23 C6 5.5941 7.4036 7.2070 C.2 1 CEFM 0.5770 + 24 C7 4.9518 6.7228 4.3491 C.2 1 CEFM 0.7056 + 25 C8 4.6914 9.3985 10.3886 C.2 1 CEFM 0.6300 + 26 C9 5.2008 10.7357 10.9366 C.2 1 CEFM 0.5360 + 27 C10 4.8585 12.8649 8.2157 C.3 1 CEFM 0.2800 + 28 C11 5.6331 10.8410 12.3346 C.2 1 CEFM 0.1412 + 29 C12 5.5795 9.8209 13.2695 C.2 1 CEFM -0.1100 + 30 C13 6.4809 11.9023 14.1035 C.2 1 CEFM 0.4621 + 31 C14 2.2439 7.7461 3.5651 C.3 1 CEFM 0.3682 + 32 C15 0.9140 5.3389 3.6638 C.2 1 CEFM 0.2425 + 33 C16 -1.4348 4.4495 3.3089 C.3 1 CEFM 0.2556 + 34 H11 1.3448 9.2991 5.4960 H 1 CEFM 0.0000 + 35 H12 1.1081 7.7749 6.3679 H 1 CEFM 0.0000 + 36 H31 5.9150 7.1599 2.8575 H 1 CEFM 0.5000 + 37 H41 2.9100 6.8480 8.1562 H 1 CEFM 0.0000 + 38 H51 5.0727 6.8461 9.2763 H 1 CEFM 0.0000 + 39 H21 5.8776 9.6556 8.7465 H 1 CEFM 0.3700 + 40 H103 5.8734 13.2729 8.1843 H 1 CEFM 0.0000 + 41 H121 5.2140 8.8098 13.1571 H 1 CEFM 0.1500 + 42 H510 7.4023 13.6586 14.2837 H 1 CEFM 0.4000 + 43 H520 7.5756 12.6401 15.6309 H 1 CEFM 0.4000 + 44 H141 2.8820 7.2060 2.8626 H 1 CEFM 0.0000 + 45 H142 2.1812 8.7782 3.2022 H 1 CEFM 0.0000 + 46 H1 4.5082 12.7106 7.1919 H 1 CEFM 0.0000 + 47 H2 4.1842 13.5650 8.7183 H 1 CEFM 0.0000 + 48 H4 -1.9061 5.0611 4.0821 H 1 CEFM 0.0000 + 49 H5 -1.5685 4.9021 2.3233 H 1 CEFM 0.0000 + 50 H6 -1.8768 3.4495 3.3140 H 1 CEFM 0.0000 +@BOND + 1 1 18 1 + 2 1 21 1 + 3 2 29 1 + 4 2 30 1 + 5 3 31 1 + 6 3 32 1 + 7 4 23 2 + 8 5 24 2 + 9 6 24 1 + 10 6 36 1 + 11 7 25 2 + 12 8 11 1 + 13 8 27 1 + 14 9 20 1 + 15 9 21 1 + 16 9 23 am + 17 10 22 1 + 18 10 25 am + 19 10 39 1 + 20 11 26 2 + 21 12 28 1 + 22 12 30 2 + 23 13 30 am + 24 13 42 1 + 25 13 43 1 + 26 14 15 1 + 27 14 32 am + 28 14 33 1 + 29 15 16 2 + 30 16 17 1 + 31 17 32 2 + 32 18 19 1 + 33 18 34 1 + 34 18 35 1 + 35 19 20 2 + 36 19 31 1 + 37 20 24 1 + 38 21 22 1 + 39 21 37 1 + 40 22 23 1 + 41 22 38 1 + 42 25 26 1 + 43 26 28 1 + 44 27 40 1 + 45 27 46 1 + 46 27 47 1 + 47 28 29 2 + 48 29 41 1 + 49 31 44 1 + 50 31 45 1 + 51 33 48 1 + 52 33 49 1 + 53 33 50 1 +@SUBSTRUCTURE + 1 CEFM 1 +@COMMENT +COMMENT 7BETA-(2-(2-AMINOTHIAZOL-4-YL)-(Z)-2-METHOXYIMINOACETAMIDO) +@MOLECULE +CETROI01 + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.1245 -2.8069 15.6056 S.3 1 UNCH -0.4600 + 2 C1 -8.7529 -1.5871 15.4788 C.3 1 UNCH 0.4300 + 3 C2 -7.3994 -2.3087 15.6646 C.3 1 UNCH 0.2800 + 4 O1 -7.1412 -3.2893 14.6431 O.3 1 UNCH -0.5600 + 5 C3 -8.0594 -4.3980 14.6933 C.3 1 UNCH 0.2800 + 6 C4 -7.5921 -5.4254 13.6549 C.3 1 UNCH 0.2800 + 7 C5 -8.5592 -6.6104 13.5784 C.3 1 UNCH 0.2800 + 8 C6 -9.9863 -6.1015 13.3479 C.3 1 UNCH 0.2800 + 9 O2 -10.3550 -5.1530 14.3696 O.3 1 UNCH -0.5600 + 10 C7 -9.5107 -4.0007 14.3666 C.3 1 UNCH 0.5100 + 11 C8 -8.8142 -0.8361 14.2101 C.1 1 UNCH 0.3571 + 12 N1 -8.8581 -0.2519 13.2077 N.1 1 UNCH -0.5571 + 13 C9 -6.2172 -1.3396 15.6642 C.3 1 UNCH 0.0000 + 14 O3 -6.2859 -5.9191 13.9956 O.3 1 UNCH -0.6800 + 15 O4 -8.1463 -7.4838 12.5275 O.3 1 UNCH -0.6800 + 16 C10 -11.0040 -7.2457 13.3940 C.3 1 UNCH 0.2800 + 17 O5 -12.3211 -6.7211 13.2100 O.3 1 UNCH -0.6800 + 18 H1 -8.8928 -0.8817 16.3060 H 1 UNCH 0.0000 + 19 H2 -7.3883 -2.8189 16.6380 H 1 UNCH 0.0000 + 20 H3 -7.9863 -4.8651 15.6857 H 1 UNCH 0.0000 + 21 H4 -7.4837 -4.9571 12.6683 H 1 UNCH 0.0000 + 22 H5 -8.5045 -7.1802 14.5147 H 1 UNCH 0.0000 + 23 H6 -10.0760 -5.6074 12.3712 H 1 UNCH 0.0000 + 24 H7 -9.5773 -3.5104 13.3882 H 1 UNCH 0.0000 + 25 H8 -6.3466 -0.5523 16.4128 H 1 UNCH 0.0000 + 26 H9 -6.0725 -0.8782 14.6816 H 1 UNCH 0.0000 + 27 H10 -5.2902 -1.8797 15.8873 H 1 UNCH 0.0000 + 28 H11 -10.8181 -7.9851 12.6099 H 1 UNCH 0.0000 + 29 H12 -10.9890 -7.7484 14.3667 H 1 UNCH 0.0000 + 30 H13 -5.7293 -5.1248 14.1218 H 1 UNCH 0.4000 + 31 H14 -7.1878 -7.6263 12.6675 H 1 UNCH 0.4000 + 32 H15 -12.3944 -5.9707 13.8311 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 2 3 1 + 4 2 11 1 + 5 2 18 1 + 6 3 4 1 + 7 3 13 1 + 8 3 19 1 + 9 4 5 1 + 10 5 6 1 + 11 5 10 1 + 12 5 20 1 + 13 6 7 1 + 14 6 14 1 + 15 6 21 1 + 16 7 8 1 + 17 7 15 1 + 18 7 22 1 + 19 8 9 1 + 20 8 16 1 + 21 8 23 1 + 22 9 10 1 + 23 10 24 1 + 24 11 12 3 + 25 13 25 1 + 26 13 26 1 + 27 13 27 1 + 28 14 30 1 + 29 15 31 1 + 30 16 17 1 + 31 16 28 1 + 32 16 29 1 + 33 17 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-S,O-(1R,2S-1-CYANO-2-METHYL-1,2-ETHANEDIYL)-1-THIO-BETA +@MOLECULE +CEWCUC10 + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -8.3178 -2.6921 13.5710 P 1 UNCH 1.1170 + 2 O1 -7.2438 -1.7268 13.0951 O.2 1 UNCH -0.7000 + 3 C1 -9.7762 -2.6024 12.5128 C.2 1 UNCH -0.1390 + 4 C2 -10.1555 -1.3540 11.9941 C.2 1 UNCH -0.1500 + 5 C3 -11.2840 -1.2316 11.1834 C.2 1 UNCH -0.1500 + 6 C4 -12.0470 -2.3565 10.8794 C.2 1 UNCH -0.1500 + 7 C5 -11.6809 -3.6031 11.3834 C.2 1 UNCH -0.1500 + 8 C6 -10.5516 -3.7271 12.1954 C.2 1 UNCH -0.1500 + 9 C7 -7.7113 -4.3910 13.5447 C.2 1 UNCH -0.1390 + 10 C8 -6.8470 -4.7810 12.5093 C.2 1 UNCH -0.1500 + 11 C9 -6.3635 -6.0876 12.4379 C.2 1 UNCH -0.1500 + 12 C10 -6.7371 -7.0207 13.4022 C.2 1 UNCH -0.1500 + 13 C11 -7.5911 -6.6475 14.4383 C.2 1 UNCH -0.1500 + 14 C12 -8.0760 -5.3401 14.5108 C.2 1 UNCH -0.1500 + 15 C13 -8.8264 -2.3058 15.2582 C.2 1 UNCH -0.1390 + 16 C14 -7.8557 -1.8556 16.1673 C.2 1 UNCH -0.1500 + 17 C15 -8.1974 -1.5585 17.4867 C.2 1 UNCH -0.1500 + 18 C16 -9.5150 -1.7062 17.9136 C.2 1 UNCH -0.1500 + 19 C17 -10.4905 -2.1481 17.0219 C.2 1 UNCH -0.1500 + 20 C18 -10.1498 -2.4462 15.7010 C.2 1 UNCH -0.1500 + 21 H10 -9.5582 -0.4721 12.2224 H 1 UNCH 0.1500 + 22 H11 -11.5638 -0.2591 10.7861 H 1 UNCH 0.1500 + 23 H12 -12.9244 -2.2624 10.2448 H 1 UNCH 0.1500 + 24 H13 -12.2739 -4.4814 11.1400 H 1 UNCH 0.1500 + 25 H14 -10.2859 -4.7112 12.5730 H 1 UNCH 0.1500 + 26 H15 -6.5456 -4.0534 11.7567 H 1 UNCH 0.1500 + 27 H16 -5.6923 -6.3745 11.6324 H 1 UNCH 0.1500 + 28 H17 -6.3578 -8.0380 13.3491 H 1 UNCH 0.1500 + 29 H18 -7.8766 -7.3755 15.1938 H 1 UNCH 0.1500 + 30 H19 -8.7381 -5.0738 15.3308 H 1 UNCH 0.1500 + 31 H20 -6.8252 -1.7312 15.8368 H 1 UNCH 0.1500 + 32 H21 -7.4359 -1.2078 18.1786 H 1 UNCH 0.1500 + 33 H22 -9.7826 -1.4714 18.9406 H 1 UNCH 0.1500 + 34 H23 -11.5198 -2.2567 17.3551 H 1 UNCH 0.1500 + 35 H24 -10.9301 -2.7860 15.0248 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 9 1 + 4 1 15 1 + 5 3 4 2 + 6 3 8 1 + 7 4 5 1 + 8 4 21 1 + 9 5 6 2 + 10 5 22 1 + 11 6 7 1 + 12 6 23 1 + 13 7 8 2 + 14 7 24 1 + 15 8 25 1 + 16 9 10 2 + 17 9 14 1 + 18 10 11 1 + 19 10 26 1 + 20 11 12 2 + 21 11 27 1 + 22 12 13 1 + 23 12 28 1 + 24 13 14 2 + 25 13 29 1 + 26 14 30 1 + 27 15 16 2 + 28 15 20 1 + 29 16 17 1 + 30 16 31 1 + 31 17 18 2 + 32 17 32 1 + 33 18 19 1 + 34 18 33 1 + 35 19 20 2 + 36 19 34 1 + 37 20 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-METHYL-6-PHENYL-1,2,3-OXATHIAZIN-4(3H)-OL 2,2-DIOXIDE TRI +@MOLECULE +CEWVIJ10 + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.1068 -2.8222 15.4864 O.2 1 UNCH -0.5700 + 2 O2 -6.9403 -2.0574 12.1918 O.2 1 UNCH -0.5700 + 3 N1 -8.5421 -2.4095 13.8467 N.3 1 UNCH -0.4201 + 4 N2 -9.4581 -4.6030 14.1781 N.3 1 UNCH -0.4231 + 5 N3 -7.1893 -4.9348 11.5521 N.3 1 UNCH 0.0332 + 6 N4 -8.5669 -6.2956 12.6507 N.2 1 UNCH -0.5653 + 7 C1 -9.4153 -3.2581 14.5608 C.2 1 UNCH 0.6900 + 8 C2 -8.6540 -5.0302 13.1477 C.2 1 UNCH 0.2902 + 9 C3 -7.8224 -4.1777 12.4933 C.2 1 UNCH -0.2366 + 10 C4 -7.7049 -2.7995 12.7993 C.2 1 UNCH 0.7150 + 11 C5 -7.6728 -6.2106 11.6856 C.2 1 UNCH 0.0365 + 12 C6 -8.5148 -1.0209 14.2617 C.3 1 UNCH 0.3001 + 13 C7 -10.3321 -5.5408 14.8795 C.3 1 UNCH 0.3001 + 14 C8 -9.5898 -6.4164 15.9080 C.3 1 UNCH 0.0000 + 15 C9 -10.5352 -7.4884 16.4536 C.3 1 UNCH 0.0000 + 16 C10 -9.0187 -5.5917 17.0627 C.3 1 UNCH 0.0000 + 17 H1 -6.4979 -4.6105 10.8878 H 1 UNCH 0.2700 + 18 H2 -7.3382 -7.0258 11.0569 H 1 UNCH 0.1500 + 19 H3 -8.1906 -0.9700 15.3063 H 1 UNCH 0.0000 + 20 H4 -9.5263 -0.6073 14.1932 H 1 UNCH 0.0000 + 21 H5 -7.8418 -0.4139 13.6511 H 1 UNCH 0.0000 + 22 H6 -11.1391 -4.9889 15.3765 H 1 UNCH 0.0000 + 23 H7 -10.8159 -6.1732 14.1238 H 1 UNCH 0.0000 + 24 H8 -8.7542 -6.9269 15.4134 H 1 UNCH 0.0000 + 25 H9 -10.9192 -8.1172 15.6433 H 1 UNCH 0.0000 + 26 H10 -11.3907 -7.0391 16.9695 H 1 UNCH 0.0000 + 27 H11 -10.0159 -8.1410 17.1635 H 1 UNCH 0.0000 + 28 H12 -8.2629 -4.8840 16.7083 H 1 UNCH 0.0000 + 29 H13 -8.5357 -6.2410 17.8009 H 1 UNCH 0.0000 + 30 H14 -9.8045 -5.0260 17.5744 H 1 UNCH 0.0000 +@BOND + 1 1 7 2 + 2 2 10 2 + 3 3 7 am + 4 3 10 am + 5 3 12 1 + 6 4 7 am + 7 4 8 1 + 8 4 13 1 + 9 5 9 1 + 10 5 11 am + 11 5 17 1 + 12 6 8 1 + 13 6 11 2 + 14 8 9 2 + 15 9 10 1 + 16 11 18 1 + 17 12 19 1 + 18 12 20 1 + 19 12 21 1 + 20 13 14 1 + 21 13 22 1 + 22 13 23 1 + 23 14 15 1 + 24 14 16 1 + 25 14 24 1 + 26 15 25 1 + 27 15 26 1 + 28 15 27 1 + 29 16 28 1 + 30 16 29 1 + 31 16 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-ISOBUTYL-1-METHYLXANTHINE +@MOLECULE +CEWYIM30 + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -7.5087 -7.0390 14.0442 O.3 1 CEWY -0.5325 + 2 O2 -7.6929 -5.1149 17.2584 O.3 1 CEWY -0.5325 + 3 C1 -8.5935 -4.9085 14.0806 C.2 1 CEWY 0.0000 + 4 C2 -8.1176 -6.0006 13.4243 C.2 1 CEWY 0.0825 + 5 C3 -8.3126 -6.0282 12.0434 C.2 1 CEWY -0.1500 + 6 C4 -9.0075 -4.9788 11.3837 C.2 1 CEWY -0.1500 + 7 C5 -9.5211 -3.8832 12.0924 C.2 1 CEWY -0.1500 + 8 C6 -9.2879 -3.8953 13.4359 C.2 1 CEWY 0.0000 + 9 C7 -8.7401 -4.2346 15.2974 C.2 1 CEWY 0.0000 + 10 C8 -8.4675 -4.1996 16.6295 C.2 1 CEWY 0.0825 + 11 C9 -9.0090 -3.1321 17.3456 C.2 1 CEWY -0.1500 + 12 C10 -9.7697 -2.1258 16.6913 C.2 1 CEWY -0.1500 + 13 C11 -10.0021 -2.1677 15.3091 C.2 1 CEWY -0.1500 + 14 C12 -9.4671 -3.2404 14.6590 C.2 1 CEWY 0.0000 + 15 H1 -7.8458 -7.0670 14.9565 H 1 CEWY 0.4500 + 16 H2 -7.0797 -5.4770 16.5954 H 1 CEWY 0.4500 + 17 H3 -7.9437 -6.8719 11.4649 H 1 CEWY 0.1500 + 18 H4 -9.1501 -5.0359 10.3062 H 1 CEWY 0.1500 + 19 H5 -10.0616 -3.0843 11.6020 H 1 CEWY 0.1500 + 20 H6 -8.8327 -3.0581 18.4162 H 1 CEWY 0.1500 + 21 H7 -10.1702 -1.3015 17.2784 H 1 CEWY 0.1500 + 22 H8 -10.5702 -1.4010 14.7987 H 1 CEWY 0.1500 +@BOND + 1 1 15 1 + 2 1 4 1 + 3 2 16 1 + 4 2 10 1 + 5 3 9 1 + 6 3 8 1 + 7 3 4 2 + 8 4 5 1 + 9 5 17 1 + 10 5 6 2 + 11 6 18 1 + 12 6 7 1 + 13 7 19 1 + 14 7 8 2 + 15 8 14 1 + 16 9 14 1 + 17 9 10 2 + 18 10 11 1 + 19 11 20 1 + 20 11 12 2 + 21 12 21 1 + 22 12 13 1 + 23 13 22 1 + 24 13 14 2 +@SUBSTRUCTURE + 1 CEWY 1 +@COMMENT +COMMENT 1,2,6-TRIMETHYL-4-PYRIDONE 1,8-BIPHENYLENEDIOL CLATHRATE (A +@MOLECULE +CIHWUL10 + 17 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.9153 -6.3245 16.0386 O.3 1 UNCH -0.2960 + 2 O2 -7.1386 -4.2024 14.6412 O.3 1 UNCH -0.2960 + 3 O3 -9.7006 -2.1219 12.8319 O.3 1 UNCH -0.2960 + 4 C1 -9.8302 -5.1785 16.8884 C.3 1 UNCH -0.0520 + 5 C2 -8.6761 -5.5926 16.0086 C.3 1 UNCH 0.0480 + 6 C3 -8.3572 -4.9601 14.6704 C.3 1 UNCH 0.0480 + 7 C4 -8.3499 -3.4636 14.4246 C.3 1 UNCH 0.0480 + 8 C5 -8.4695 -2.8345 13.0525 C.3 1 UNCH 0.0480 + 9 C6 -9.4685 -3.2654 12.0066 C.3 1 UNCH -0.0520 + 10 H1 -10.4119 -4.3077 16.6144 H 1 UNCH 0.1000 + 11 H2 -9.7474 -5.3494 17.9544 H 1 UNCH 0.1000 + 12 H3 -7.8339 -6.0659 16.5064 H 1 UNCH 0.1000 + 13 H4 -8.5399 -5.5980 13.8102 H 1 UNCH 0.1000 + 14 H5 -8.6723 -2.8296 15.2458 H 1 UNCH 0.1000 + 15 H6 -7.5683 -2.3476 12.6893 H 1 UNCH 0.1000 + 16 H7 -10.0717 -4.1454 12.1891 H 1 UNCH 0.1000 + 17 H8 -9.2258 -3.0920 10.9657 H 1 UNCH 0.1000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 6 1 + 4 2 7 1 + 5 3 8 1 + 6 3 9 1 + 7 4 5 1 + 8 4 10 1 + 9 4 11 1 + 10 5 6 1 + 11 5 12 1 + 12 6 7 1 + 13 6 13 1 + 14 7 8 1 + 15 7 14 1 + 16 8 9 1 + 17 8 15 1 + 18 9 16 1 + 19 9 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2.3,4.5,6-TRIANHYDRO-D-IDITOL +@MOLECULE +CIJXOI10 + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C7 -9.8417 -5.6394 14.0667 C.3 1 CIJX 0.3461 + 2 C8 -10.4457 -5.1425 15.3990 C.3 1 CIJX 0.0000 + 3 C9 -10.0295 -3.6623 15.6502 C.3 1 CIJX 0.0000 + 4 C10 -9.1658 -3.1809 14.4575 C.3 1 CIJX 0.1220 + 5 C11 -8.0053 -4.1447 14.3571 C.2 1 CIJX 0.2780 + 6 C12 -9.9968 -3.3525 13.1892 C.2 1 CIJX 0.4480 + 7 C13 -10.3872 -4.7948 12.9021 C.3 1 CIJX 0.0610 + 8 C14 -11.2377 -2.7649 15.9061 C.3 1 CIJX 0.0000 + 9 C15 -6.5745 -3.7715 14.4691 C.3 1 CIJX 0.0610 + 10 N7 -8.3665 -5.3636 14.1551 N.2 1 CIJX -0.1461 + 11 O12 -10.2877 -2.4229 12.4513 O.2 1 CIJX -0.5700 + 12 H1 -7.6745 -6.1156 14.0694 H 1 CIJX 0.4000 + 13 H7 -9.9841 -6.7125 13.9138 H 1 CIJX 0.0000 + 14 H81 -10.0799 -5.7604 16.2295 H 1 CIJX 0.0000 + 15 H82 -11.5364 -5.2542 15.3804 H 1 CIJX 0.0000 + 16 H9 -9.4089 -3.6388 16.5572 H 1 CIJX 0.0000 + 17 H10 -8.8197 -2.1504 14.5685 H 1 CIJX 0.0000 + 18 H131 -11.4768 -4.8688 12.8383 H 1 CIJX 0.0000 + 19 H132 -9.9358 -5.0953 11.9506 H 1 CIJX 0.0000 + 20 H141 -11.7795 -3.0981 16.7976 H 1 CIJX 0.0000 + 21 H142 -10.9216 -1.7299 16.0723 H 1 CIJX 0.0000 + 22 H143 -11.9399 -2.7752 15.0663 H 1 CIJX 0.0000 + 23 H151 -6.3291 -3.0539 13.6810 H 1 CIJX 0.0000 + 24 H152 -5.9147 -4.6389 14.3772 H 1 CIJX 0.0000 + 25 H153 -6.4035 -3.2972 15.4397 H 1 CIJX 0.0000 +@BOND + 1 1 13 1 + 2 1 10 1 + 3 1 7 1 + 4 1 2 1 + 5 2 15 1 + 6 2 14 1 + 7 2 3 1 + 8 3 16 1 + 9 3 8 1 + 10 3 4 1 + 11 4 17 1 + 12 4 6 1 + 13 4 5 1 + 14 5 10 2 + 15 5 9 1 + 16 6 11 2 + 17 6 7 1 + 18 7 19 1 + 19 7 18 1 + 20 8 22 1 + 21 8 21 1 + 22 8 20 1 + 23 9 25 1 + 24 9 24 1 + 25 9 23 1 + 26 10 12 1 +@SUBSTRUCTURE + 1 CIJX 1 +@COMMENT +COMMENT 3,8-DIMETHYL-2-AZONIABICYCLO(2.2.2)OCT-2-EN-5-ONE PICRATE ( +@MOLECULE +CIKSEU10 + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.3291 -5.7922 12.9144 N.2 1 CIKS -0.6210 + 2 C2 -7.9271 -6.6596 13.6745 C.2 1 CIKS 0.6010 + 3 N3 -8.9013 -6.3929 14.6104 N.2 1 CIKS -0.6610 + 4 C3 -9.2559 -5.1450 14.7439 C.2 1 CIKS 0.4856 + 5 C4 -10.3031 -4.7560 15.7315 C.2 1 CIKS 0.0794 + 6 C5 -10.5851 -3.4403 15.7795 C.2 1 CIKS 0.0210 + 7 N6 -10.0125 -2.4344 15.0202 N.2 1 CIKS -0.6210 + 8 C6 -9.0944 -2.8010 14.1590 C.2 1 CIKS 0.4856 + 9 C7 -8.4579 -1.7386 13.3249 C.2 1 CIKS -0.1356 + 10 C8 -7.5213 -2.1394 12.4512 C.2 1 CIKS -0.1500 + 11 C9 -7.1443 -3.5355 12.3216 C.2 1 CIKS -0.1500 + 12 C91 -7.7257 -4.4887 13.0803 C.2 1 CIKS 0.2710 + 13 N9 -8.7015 -4.1251 14.0005 N.3 1 CIKS -0.2000 + 14 C10 -10.9491 -5.7087 16.5554 C.1 1 CIKS 0.4921 + 15 N11 -11.5039 -6.4552 17.2501 N.1 1 CIKS -0.5571 + 16 H8 -11.3411 -3.0834 16.4789 H 1 CIKS 0.1500 + 17 H6 -8.7699 -0.7116 13.4552 H 1 CIKS 0.1500 + 18 H5 -7.0169 -1.4205 11.8123 H 1 CIKS 0.1500 + 19 H4 -6.3796 -3.7957 11.5961 H 1 CIKS 0.1500 + 20 H2 -7.6374 -7.7196 13.5726 H 1 CIKS 0.0600 +@BOND + 1 1 12 1 + 2 1 2 2 + 3 2 20 1 + 4 2 3 am + 5 3 4 2 + 6 4 13 am + 7 4 5 1 + 8 5 14 1 + 9 5 6 2 + 10 6 16 1 + 11 6 7 1 + 12 7 8 2 + 13 8 13 am + 14 8 9 1 + 15 9 17 1 + 16 9 10 2 + 17 10 18 1 + 18 10 11 1 + 19 11 19 1 + 20 11 12 2 + 21 12 13 1 + 22 14 15 3 +@SUBSTRUCTURE + 1 CIKS 1 +@COMMENT +COMMENT 4-CYANO-1,3,6-TRIAZACYCL(3.3.3)AZINE +@MOLECULE +CILBII + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.4876 -4.9553 13.7777 C.3 1 CIKS 0.5600 + 2 C2 -9.7332 -5.3252 12.4876 C.3 1 CIKS 0.2800 + 3 C3 -8.2770 -5.6806 12.8355 C.3 1 CIKS 0.2800 + 4 C4 -7.6152 -4.5580 13.6674 C.3 1 CIKS 0.2800 + 5 C5 -8.4952 -4.2561 14.8912 C.3 1 CIKS 0.2800 + 6 C6 -7.9630 -3.0910 15.7408 C.3 1 CIKS 0.2800 + 7 C7 -12.6317 -4.3040 14.5452 C.3 1 CIKS 0.2800 + 8 O1 -11.8005 -4.5383 13.4154 O.3 1 CIKS -0.5600 + 9 O2 -10.3515 -6.4809 11.9127 O.3 1 CIKS -0.2710 + 10 O21 -12.0020 -7.1689 10.6290 O.3 1 CIKS -0.5200 + 11 O22 -11.3060 -5.0614 10.4295 O.2 1 CIKS -0.5200 + 12 O3 -7.5141 -5.7877 11.6210 O.3 1 CIKS -0.2710 + 13 O31 -7.8483 -8.0176 11.7985 O.3 1 CIKS -0.5200 + 14 O32 -6.6571 -7.1558 10.1236 O.2 1 CIKS -0.5200 + 15 O4 -6.3422 -5.0629 14.0860 O.3 1 CIKS -0.2710 + 16 O41 -5.5424 -3.0078 13.6021 O.3 1 CIKS -0.5200 + 17 O42 -4.1740 -4.6859 14.1340 O.2 1 CIKS -0.5200 + 18 O5 -9.8110 -3.8984 14.4518 O.3 1 CIKS -0.5600 + 19 O6 -8.7889 -2.9933 16.9044 O.3 1 CIKS -0.2710 + 20 O61 -9.1575 -1.8023 18.7208 O.3 1 CIKS -0.5200 + 21 O62 -7.4575 -1.2344 17.3923 O.2 1 CIKS -0.5200 + 22 N2 -11.3161 -6.1909 10.9154 N.2 1 CIKS 1.0310 + 23 N3 -7.3302 -7.1118 11.1485 N.2 1 CIKS 1.0310 + 24 N4 -5.2606 -4.1651 13.9050 N.2 1 CIKS 1.0310 + 25 N6 -8.4307 -1.9059 17.7355 N.2 1 CIKS 1.0310 + 26 H1 -10.5706 -5.8324 14.4339 H 1 CIKS 0.0000 + 27 H2 -9.7010 -4.4683 11.8032 H 1 CIKS 0.0000 + 28 H3 -8.2339 -6.6011 13.4321 H 1 CIKS 0.0000 + 29 H4 -7.5533 -3.6785 13.0133 H 1 CIKS 0.0000 + 30 H5 -8.5715 -5.1389 15.5408 H 1 CIKS 0.0000 + 31 H61 -6.9315 -3.2904 16.0498 H 1 CIKS 0.0000 + 32 H62 -8.0244 -2.1606 15.1628 H 1 CIKS 0.0000 + 33 H71 -13.6269 -4.0286 14.1857 H 1 CIKS 0.0000 + 34 H72 -12.7199 -5.2101 15.1523 H 1 CIKS 0.0000 + 35 H73 -12.2430 -3.4799 15.1504 H 1 CIKS 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 18 1 + 4 1 26 1 + 5 2 3 1 + 6 2 9 1 + 7 2 27 1 + 8 3 4 1 + 9 3 12 1 + 10 3 28 1 + 11 4 5 1 + 12 4 15 1 + 13 4 29 1 + 14 5 6 1 + 15 5 18 1 + 16 5 30 1 + 17 6 19 1 + 18 6 31 1 + 19 6 32 1 + 20 7 8 1 + 21 7 33 1 + 22 7 34 1 + 23 7 35 1 + 24 9 22 1 + 25 10 22 1 + 26 11 22 2 + 27 12 23 1 + 28 13 23 1 + 29 14 23 2 + 30 15 24 1 + 31 16 24 1 + 32 17 24 2 + 33 19 25 1 + 34 20 25 1 + 35 21 25 2 +@SUBSTRUCTURE + 1 CIKS 1 +@COMMENT +COMMENT METHYL-BETA-D-GLUCOPYRANOSIDE TETRANITRATE +@MOLECULE +CILDOQ + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -2.2277 7.2179 5.4061 S.2 1 UNCH -0.3800 + 2 O1 2.3361 2.7688 4.7940 O.3 1 UNCH -0.6500 + 3 O2 3.4683 3.3341 2.8975 O.2 1 UNCH -0.5700 + 4 O3 1.3581 6.7076 -0.7034 O.3 1 UNCH -0.6500 + 5 O4 2.3330 7.9619 0.8655 O.2 1 UNCH -0.5700 + 6 N1 -0.1199 5.8619 4.5531 N.3 1 UNCH -0.3680 + 7 N2 0.7003 4.7711 4.5146 N.2 1 UNCH -0.5120 + 8 N3 -1.5451 4.7389 5.9841 N.3 1 UNCH -0.8000 + 9 C1 -1.2583 5.8768 5.3095 C.2 1 UNCH 0.5000 + 10 C2 1.7466 4.8083 3.7349 C.2 1 UNCH 0.3890 + 11 C3 2.6269 3.5548 3.7437 C.2 1 UNCH 0.7200 + 12 C4 2.1707 5.9164 2.8056 C.3 1 UNCH 0.0610 + 13 C5 1.4861 5.7544 1.4544 C.3 1 UNCH 0.0610 + 14 C6 1.7897 6.9168 0.5535 C.2 1 UNCH 0.6590 + 15 H1 0.1028 6.7195 4.0564 H 1 UNCH 0.3700 + 16 H2 -1.0858 3.8936 5.6759 H 1 UNCH 0.3700 + 17 H3 -2.4423 4.6590 6.4446 H 1 UNCH 0.3700 + 18 H4 1.5944 3.1723 5.3005 H 1 UNCH 0.5000 + 19 H5 1.9469 6.8885 3.2561 H 1 UNCH 0.0000 + 20 H6 3.2601 5.8935 2.6840 H 1 UNCH 0.0000 + 21 H7 0.3991 5.6930 1.5773 H 1 UNCH 0.0000 + 22 H8 1.8325 4.8341 0.9708 H 1 UNCH 0.0000 + 23 H9 1.6060 7.5221 -1.1903 H 1 UNCH 0.5000 +@BOND + 1 1 9 2 + 2 2 11 1 + 3 2 18 1 + 4 3 11 2 + 5 4 14 1 + 6 4 23 1 + 7 5 14 2 + 8 6 7 1 + 9 6 9 1 + 10 6 15 1 + 11 7 10 2 + 12 8 9 1 + 13 8 16 1 + 14 8 17 1 + 15 10 11 1 + 16 10 12 1 + 17 12 13 1 + 18 12 19 1 + 19 12 20 1 + 20 13 14 1 + 21 13 21 1 + 22 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ALPHA-KETOGLUTARIC ACID THIOSEMICARBAZONE +@MOLECULE +CILWUP11 + 9 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.7203 -4.0667 12.6176 N.2 1 CILW -0.3100 + 2 N2 -7.5674 -4.6271 12.8888 N.2 1 CILW 0.0000 + 3 N3 -7.2435 -4.9957 14.1037 N.2 1 CILW -0.3100 + 4 C2 -9.3439 -4.2161 14.9111 C.2 1 CILW -0.1500 + 5 C3 -9.5981 -3.8637 13.6173 C.2 1 CILW 0.1600 + 6 C1 -8.1218 -4.7925 15.1030 C.2 1 CILW 0.1600 + 7 H1 -7.7901 -5.1207 16.0815 H 1 CILW 0.1500 + 8 H2 -10.0479 -4.0532 15.7125 H 1 CILW 0.1500 + 9 H3 -10.5310 -3.3963 13.3232 H 1 CILW 0.1500 +@BOND + 1 1 5 1 + 2 1 2 2 + 3 2 3 1 + 4 3 6 2 + 5 4 8 1 + 6 4 6 1 + 7 4 5 2 + 8 5 9 1 + 9 6 7 1 +@SUBSTRUCTURE + 1 CILW 1 +@COMMENT +COMMENT 1,2,3-TRIAZINE (AT 100 DEG.K) +@MOLECULE +CIMRUL10 + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -13.4439 -3.2781 15.6139 CL 1 UNCH -0.2273 + 2 O1 -9.7454 -6.1653 12.5666 O.2 1 UNCH -0.5700 + 3 O2 -11.7442 -2.8873 12.5236 O.2 1 UNCH -0.5700 + 4 O3 -10.1649 -2.3545 14.1148 O.3 1 UNCH -0.4300 + 5 N1 -9.9574 -5.1189 14.6022 N.3 1 UNCH -0.5790 + 6 C1 -11.2228 -4.4674 14.2672 C.3 1 UNCH 0.1490 + 7 C2 -12.3496 -4.5923 15.2819 C.3 1 UNCH 0.1273 + 8 C3 -12.4479 -5.3313 13.9913 C.3 1 UNCH -0.2000 + 9 C4 -9.2784 -5.8678 13.6594 C.2 1 UNCH 0.5438 + 10 C5 -7.8943 -6.2799 14.0221 C.2 1 UNCH 0.0862 + 11 C6 -6.9765 -6.5066 12.9887 C.2 1 UNCH -0.1500 + 12 C7 -5.6676 -6.8909 13.2841 C.2 1 UNCH -0.1500 + 13 C8 -5.2735 -7.0590 14.6109 C.2 1 UNCH -0.1500 + 14 C9 -6.1875 -6.8513 15.6441 C.2 1 UNCH -0.1500 + 15 C10 -7.4985 -6.4657 15.3536 C.2 1 UNCH -0.1500 + 16 C11 -11.0897 -3.1636 13.5191 C.2 1 UNCH 0.7200 + 17 C12 -10.0070 -1.0968 13.4589 C.3 1 UNCH 0.2800 + 18 H1 -12.3206 -6.4072 14.0016 H 1 UNCH 0.1000 + 19 H2 -13.1519 -4.9893 13.2404 H 1 UNCH 0.1000 + 20 H3 -12.1768 -5.1684 16.1818 H 1 UNCH 0.1000 + 21 H4 -9.4020 -4.6494 15.3094 H 1 UNCH 0.3700 + 22 H5 -7.2795 -6.3829 11.9504 H 1 UNCH 0.1500 + 23 H6 -4.9581 -7.0631 12.4783 H 1 UNCH 0.1500 + 24 H7 -4.2545 -7.3629 14.8391 H 1 UNCH 0.1500 + 25 H8 -5.8793 -7.0010 16.6763 H 1 UNCH 0.1500 + 26 H9 -8.1997 -6.3441 16.1739 H 1 UNCH 0.1500 + 27 H10 -10.9461 -0.5347 13.4748 H 1 UNCH 0.0000 + 28 H11 -9.2522 -0.5232 14.0039 H 1 UNCH 0.0000 + 29 H12 -9.6568 -1.2404 12.4319 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 2 9 2 + 3 3 16 2 + 4 4 16 1 + 5 4 17 1 + 6 5 6 1 + 7 5 9 am + 8 5 21 1 + 9 6 7 1 + 10 6 8 1 + 11 6 16 1 + 12 7 8 1 + 13 7 20 1 + 14 8 18 1 + 15 8 19 1 + 16 9 10 1 + 17 10 11 2 + 18 10 15 1 + 19 11 12 1 + 20 11 22 1 + 21 12 13 2 + 22 12 23 1 + 23 13 14 1 + 24 13 24 1 + 25 14 15 2 + 26 14 25 1 + 27 15 26 1 + 28 17 27 1 + 29 17 28 1 + 30 17 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-DL-1-BENZAMIDO-1-METHOXYCARBONYL-2-CHLOROCYCLOPROPANE +@MOLECULE +CINVIE + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.2280 -6.5915 15.6371 O.2 1 UNCH -0.5700 + 2 O2 -9.5030 -7.0411 13.0602 O.3 1 UNCH -0.6800 + 3 O3 -11.8159 -4.7066 13.1233 O.3 1 UNCH -0.5200 + 4 O4 -11.1636 -5.1288 11.0668 O.2 1 UNCH -0.5200 + 5 O5 -9.9450 -2.2226 11.1893 O.3 1 UNCH -0.5200 + 6 O6 -11.0002 -1.5051 12.9793 O.2 1 UNCH -0.5200 + 7 O7 -11.3130 -3.2774 17.1165 O.3 1 UNCH -0.5200 + 8 O8 -9.6011 -4.5305 17.7086 O.2 1 UNCH -0.5200 + 9 N1 -10.9527 -4.8530 12.2508 N.2 1 UNCH 0.7998 + 10 N2 -10.1787 -2.2285 12.4048 N.2 1 UNCH 0.7998 + 11 N3 -10.3523 -4.0163 16.8722 N.2 1 UNCH 0.8356 + 12 C1 -9.8517 -5.6073 15.0058 C.2 1 UNCH 0.4946 + 13 C2 -9.1520 -5.7826 13.6462 C.3 1 UNCH 0.3410 + 14 C3 -9.5064 -4.6417 12.6683 C.3 1 UNCH 0.2402 + 15 C4 -9.3255 -3.2154 13.2675 C.3 1 UNCH 0.4734 + 16 C5 -9.7764 -3.1393 14.7301 C.2 1 UNCH -0.2882 + 17 C6 -10.0112 -4.2227 15.4906 C.2 1 UNCH 0.2188 + 18 C7 -7.8631 -2.7356 13.0740 C.3 1 UNCH -0.1950 + 19 C8 -7.4292 -1.3511 13.5217 C.3 1 UNCH -0.2000 + 20 C9 -6.8548 -2.5602 14.1958 C.3 1 UNCH -0.2000 + 21 C10 -7.6456 -5.8907 13.9144 C.3 1 UNCH 0.0000 + 22 H2 -9.6480 -7.6805 13.7918 H 1 UNCH 0.4000 + 23 H3 -8.9349 -4.7614 11.7372 H 1 UNCH 0.0000 + 24 H5 -9.8911 -2.1430 15.1622 H 1 UNCH 0.1500 + 25 H7 -7.4695 -3.0352 12.1024 H 1 UNCH 0.1000 + 26 H81 -8.1049 -0.7233 14.0934 H 1 UNCH 0.1000 + 27 H82 -6.7816 -0.7828 12.8593 H 1 UNCH 0.1000 + 28 H91 -5.8150 -2.7999 13.9885 H 1 UNCH 0.1000 + 29 H92 -7.1242 -2.7182 15.2339 H 1 UNCH 0.1000 + 30 H101 -7.4065 -6.8500 14.3907 H 1 UNCH 0.0000 + 31 H102 -7.2749 -5.1110 14.5812 H 1 UNCH 0.0000 + 32 H103 -7.0765 -5.8612 12.9787 H 1 UNCH 0.0000 +@BOND + 1 1 12 2 + 2 2 13 1 + 3 2 22 1 + 4 3 9 1 + 5 4 9 2 + 6 5 10 1 + 7 6 10 2 + 8 7 11 1 + 9 8 11 2 + 10 9 14 1 + 11 10 15 1 + 12 11 17 1 + 13 12 13 1 + 14 12 17 1 + 15 13 14 1 + 16 13 21 1 + 17 14 15 1 + 18 14 23 1 + 19 15 16 1 + 20 15 18 1 + 21 16 17 2 + 22 16 24 1 + 23 18 19 1 + 24 18 20 1 + 25 18 25 1 + 26 19 20 1 + 27 19 26 1 + 28 19 27 1 + 29 20 28 1 + 30 20 29 1 + 31 21 30 1 + 32 21 31 1 + 33 21 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-CYCLOPROPYL-2-HYDROXY-2-METHYL-3,4,6-TRINITRO-CYCLOHEX-5- +@MOLECULE +CIPVOM + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N11 -9.0801 -5.1422 14.1026 N.2 1 CIPV -0.1260 + 2 N21 -8.7295 -6.3096 14.4885 N.2 1 CIPV -0.0620 + 3 N31 -7.9438 -6.1873 15.6475 N.3 1 CIPV -0.3781 + 4 N41 -7.7532 -4.8728 15.8246 N.3 1 CIPV 0.7096 + 5 N51 -7.0931 -4.1209 16.6916 N.2 1 CIPV -0.7068 + 6 C61 -7.4174 -2.8779 16.2752 C.2 1 CIPV 0.1078 + 7 C71 -8.2969 -2.8941 15.1326 C.2 1 CIPV -0.0860 + 8 C711 -8.4725 -4.2347 14.8979 C.2 1 CIPV -0.0256 + 9 C311 -6.8863 -7.1483 15.8186 C.3 1 CIPV 0.3001 + 10 C611 -6.8772 -1.6902 16.9870 C.3 1 CIPV 0.1810 + 11 O721 -8.6345 -0.6122 14.7037 O.2 1 CIPV -0.5700 + 12 C731 -8.8596 -1.7795 14.4084 C.2 1 CIPV 0.8060 + 13 O741 -9.6565 -2.1682 13.3732 O.3 1 CIPV -0.4300 + 14 C751 -10.2359 -1.0900 12.6304 C.3 1 CIPV 0.2800 + 15 C761 -11.0880 -1.6823 11.5250 C.3 1 CIPV 0.0000 + 16 H311 -6.1177 -6.9909 15.0562 H 1 CIPV 0.0000 + 17 H321 -7.3005 -8.1561 15.7242 H 1 CIPV 0.0000 + 18 H331 -6.4506 -7.0353 16.8154 H 1 CIPV 0.0000 + 19 H611 -6.2840 -1.0736 16.3045 H 1 CIPV 0.0000 + 20 H621 -7.6937 -1.0817 17.3881 H 1 CIPV 0.0000 + 21 H631 -6.2330 -1.9823 17.8229 H 1 CIPV 0.0000 + 22 H751 -10.8603 -0.4787 13.2915 H 1 CIPV 0.0000 + 23 H752 -9.4426 -0.4721 12.1952 H 1 CIPV 0.0000 + 24 H761 -11.8733 -2.3204 11.9436 H 1 CIPV 0.0000 + 25 H762 -11.5542 -0.8944 10.9269 H 1 CIPV 0.0000 + 26 H763 -10.4816 -2.3139 10.8674 H 1 CIPV 0.0000 +@BOND + 1 1 8 1 + 2 1 2 2 + 3 2 3 1 + 4 3 9 1 + 5 3 4 1 + 6 4 8 1 + 7 4 5 1 + 8 5 6 2 + 9 6 10 1 + 10 6 7 1 + 11 7 12 1 + 12 7 8 2 + 13 9 18 1 + 14 9 17 1 + 15 9 16 1 + 16 10 21 1 + 17 10 20 1 + 18 10 19 1 + 19 11 12 2 + 20 12 13 1 + 21 13 14 1 + 22 14 23 1 + 23 14 22 1 + 24 14 15 1 + 25 15 26 1 + 26 15 25 1 + 27 15 24 1 +@SUBSTRUCTURE + 1 CIPV 1 +@COMMENT +COMMENT 3,6-DIMETHYL-3H-PYRAZOLO(1,5-D)TETRAZOLE-7-CARBOXYLIC ACID +@MOLECULE +CIPYAB10 + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.2079 -4.7721 14.2088 C.2 1 CHGB 0.0000 + 2 C2 -7.9411 -4.2519 14.4947 C.2 1 CHGB 0.0000 + 3 C3 -9.0326 -3.3905 14.3408 C.2 1 CHGB 0.0000 + 4 C4 -9.9945 -5.8094 13.9809 C.2 1 CHGB 0.1300 + 5 C5 -6.6548 -4.4381 14.7346 C.2 1 CHGB 0.1300 + 6 C6 -9.5323 -2.1670 14.3289 C.2 1 CHGB 0.1300 + 7 C7 -11.3775 -5.6241 13.7220 C.1 1 CHGB 0.4921 + 8 C8 -9.4712 -7.1286 13.9907 C.1 1 CHGB 0.4921 + 9 C9 -6.1050 -5.7463 14.7504 C.1 1 CHGB 0.4921 + 10 C10 -5.7988 -3.3333 14.9809 C.1 1 CHGB 0.4921 + 11 C11 -8.6991 -1.0441 14.5720 C.1 1 CHGB 0.4921 + 12 C12 -10.9116 -1.9526 14.0727 C.1 1 CHGB 0.4921 + 13 N1 -12.5051 -5.4598 13.5117 N.1 1 CHGB -0.5571 + 14 N2 -9.0322 -8.2009 14.0014 N.1 1 CHGB -0.5571 + 15 N3 -5.6678 -6.8194 14.7606 N.1 1 CHGB -0.5571 + 16 N4 -5.1099 -2.4231 15.1806 N.1 1 CHGB -0.5571 + 17 N5 -8.0086 -0.1353 14.7720 N.1 1 CHGB -0.5571 + 18 N6 -12.0395 -1.7904 13.8623 N.1 1 CHGB -0.5571 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 2 + 4 2 3 1 + 5 2 5 2 + 6 3 6 2 + 7 4 7 1 + 8 4 8 1 + 9 5 9 1 + 10 5 10 1 + 11 6 11 1 + 12 6 12 1 + 13 7 13 3 + 14 8 14 3 + 15 9 15 3 + 16 10 16 3 + 17 11 17 3 + 18 12 18 3 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT TETRAMETHYLAMMONIUM HEXACYANOTRIMETHYLENECYCLOPROPANIDE (TR +@MOLECULE +CISMOG + 14 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -11.8195 -5.9166 13.6410 S.3 1 UNCH 0.4414 + 2 N1 -10.3015 -6.5187 14.0102 N.2 1 UNCH -0.5095 + 3 N2 -11.5248 -4.2682 13.7127 N.2 1 UNCH -0.5095 + 4 C1 -9.5850 -5.4174 14.1845 C.2 1 UNCH 0.2888 + 5 C2 -10.2243 -4.1149 14.0290 C.2 1 UNCH 0.2888 + 6 C3 -9.5668 -2.8648 14.1890 C.2 1 UNCH -0.1500 + 7 H1 -10.1129 -1.9359 14.0562 H 1 UNCH 0.1500 + 8 C1B -8.1829 -5.4174 14.5256 C.2 1 UNCH 0.2888 + 9 C3B -8.2011 -2.8648 14.5212 C.2 1 UNCH -0.1500 + 10 N1B -7.4664 -6.5187 14.6998 N.2 1 UNCH -0.5095 + 11 C2B -7.5436 -4.1149 14.6811 C.2 1 UNCH 0.2888 + 12 H1B -7.6550 -1.9359 14.6540 H 1 UNCH 0.1500 + 13 S1B -5.9484 -5.9166 15.0691 S.3 1 UNCH 0.4414 + 14 N2B -6.2431 -4.2682 14.9974 N.2 1 UNCH -0.5095 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 2 4 2 + 4 3 5 2 + 5 4 5 1 + 6 4 8 1 + 7 5 6 1 + 8 6 7 1 + 9 6 9 2 + 10 8 10 2 + 11 8 11 1 + 12 9 11 1 + 13 9 12 1 + 14 10 13 1 + 15 11 14 2 + 16 13 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BENZO(1,2-C.3,4-C')-BIS(1,2,5)THIADIAZOLE +@MOLECULE +CISPOJ + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.7944 -3.2646 14.0049 C.2 1 CISP -0.1500 + 2 C2 -8.9611 -4.6413 14.2615 C.2 1 CISP -0.1516 + 3 C3 -8.3474 -5.6261 13.4809 C.2 1 CISP 0.0000 + 4 C4 -7.5353 -5.2114 12.4026 C.2 1 CISP 0.1330 + 5 C5 -7.3433 -3.8497 12.1202 C.2 1 CISP -0.1500 + 6 C6 -7.9750 -2.8937 12.9218 C.2 1 CISP 0.1330 + 7 C7 -8.7596 -6.8436 14.0711 C.2 1 CISP 0.1388 + 8 C8 -10.4757 -4.8461 16.2471 C.2 1 CISP 0.1105 + 9 N1 -10.7343 -3.5916 16.5349 N.2 1 CISP -0.3381 + 10 N2 -11.5707 -3.6376 17.6289 N.2 1 CISP 0.0000 + 11 N3 -11.8135 -4.8919 17.9953 N.2 1 CISP -0.4180 + 12 N4 -11.1266 -5.6494 17.1281 N.3 1 CISP 0.2996 + 13 N5 -9.6822 -5.3231 15.2287 N.3 1 CISP 0.6456 + 14 N6 -9.5596 -6.6687 15.1242 N.2 1 CISP -0.7068 + 15 N7 -6.8766 -6.2206 11.5801 N.2 1 CISP 0.9070 + 16 N8 -7.7807 -1.4648 12.6259 N.2 1 CISP 0.9070 + 17 O1 -7.4040 -7.3371 11.5005 O.3 1 CISP -0.5200 + 18 O2 -5.8307 -5.8878 11.0086 O.2 1 CISP -0.5200 + 19 O3 -7.1802 -1.1749 11.5826 O.3 1 CISP -0.5200 + 20 O4 -8.2290 -0.6437 13.4358 O.2 1 CISP -0.5200 + 21 H1 -9.2862 -2.5192 14.6289 H 1 CISP 0.1500 + 22 H5 -6.7101 -3.5479 11.2860 H 1 CISP 0.1500 + 23 H7 -8.5084 -7.8568 13.7756 H 1 CISP 0.1500 + 24 H4 -11.1426 -6.6613 17.1879 H 1 CISP 0.2700 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 21 1 + 4 2 3 1 + 5 2 13 1 + 6 3 4 2 + 7 3 7 1 + 8 4 5 1 + 9 4 15 1 + 10 5 6 2 + 11 5 22 1 + 12 6 16 1 + 13 7 14 2 + 14 7 23 1 + 15 8 9 2 + 16 8 12 am + 17 8 13 am + 18 9 10 1 + 19 10 11 2 + 20 11 12 1 + 21 12 24 1 + 22 13 14 1 + 23 15 17 1 + 24 15 18 2 + 25 16 19 1 + 26 16 20 2 +@SUBSTRUCTURE + 1 CISP 1 +@COMMENT +COMMENT 4,6-DINITRO-1-(5-TETRAZOLYL)-1H-INDAZOLE TRIHYDRATE +@MOLECULE +CITDIS + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.0591 -4.5119 14.3631 C.2 1 UNCH 0.0825 + 2 C2 -7.7366 -4.0472 14.3008 C.2 1 UNCH 0.1770 + 3 CL2 -7.1760 -2.9049 15.4779 CL 1 UNCH -0.1770 + 4 C3 -6.8938 -4.5295 13.2909 C.2 1 UNCH 0.1770 + 5 CL3 -5.2517 -4.0145 13.1266 CL 1 UNCH -0.1770 + 6 C4 -7.3676 -5.4714 12.3691 C.2 1 UNCH -0.1500 + 7 H4 -6.7149 -5.8465 11.5831 H 1 UNCH 0.1500 + 8 C5 -8.6797 -5.9437 12.4533 C.2 1 UNCH -0.1500 + 9 H5 -9.0329 -6.6812 11.7359 H 1 UNCH 0.1500 + 10 C6 -9.5258 -5.4691 13.4544 C.2 1 UNCH 0.1770 + 11 CL6 -11.1312 -6.0931 13.5469 CL 1 UNCH -0.1770 + 12 O1 -9.9123 -4.0498 15.3736 O.3 1 UNCH -0.2325 + 13 C7 -10.6245 -2.9285 14.9658 C.2 1 UNCH 0.6590 + 14 O7 -10.5518 -2.3783 13.8750 O.2 1 UNCH -0.5700 + 15 C8 -11.5151 -2.4824 16.0859 C.3 1 UNCH 0.0610 + 16 H81 -10.9104 -2.2167 16.9565 H 1 UNCH 0.0000 + 17 H82 -12.0787 -1.5998 15.7703 H 1 UNCH 0.0000 + 18 H83 -12.2228 -3.2769 16.3352 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 10 1 + 3 1 12 1 + 4 2 3 1 + 5 2 4 1 + 6 4 5 1 + 7 4 6 2 + 8 6 7 1 + 9 6 8 1 + 10 8 9 1 + 11 8 10 2 + 12 10 11 1 + 13 12 13 1 + 14 13 14 2 + 15 13 15 1 + 16 15 16 1 + 17 15 17 1 + 18 15 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3,6-TRICHLOROPHENYL ACETATE +@MOLECULE +CITNOI10 + 28 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.2664 -2.2342 13.2171 S.3 1 CITK -0.3710 + 2 O1 -5.8086 -1.8717 14.0312 O.2 1 CITK -0.5700 + 3 O2 -7.8200 -5.1637 15.8576 O.2 1 CITK -0.5700 + 4 N1 -7.4655 -5.1229 13.5956 N.3 1 CITK -0.7301 + 5 C1 -8.8481 -1.5703 15.8351 C.3 1 CITK 0.0000 + 6 C2 -8.6035 -0.9585 14.4662 C.3 1 CITK 0.2300 + 7 C3 -6.6515 -2.7192 13.7534 C.2 1 CITK 0.6500 + 8 C4 -6.3324 -4.2161 13.7122 C.3 1 CITK 0.3611 + 9 C5 -8.1623 -5.4942 14.7283 C.2 1 CITK 0.5438 + 10 C6 -9.4112 -6.2749 14.5123 C.2 1 CITK 0.0862 + 11 C7 -9.5903 -7.0923 13.3886 C.2 1 CITK -0.1500 + 12 C8 -10.7809 -7.8050 13.2270 C.2 1 CITK -0.1500 + 13 C9 -11.7894 -7.7096 14.1861 C.2 1 CITK -0.1500 + 14 C10 -11.6092 -6.9090 15.3134 C.2 1 CITK -0.1500 + 15 C11 -10.4209 -6.1959 15.4795 C.2 1 CITK -0.1500 + 16 H1 -7.9600 -5.1329 12.7126 H 1 CITK 0.3700 + 17 H2 -9.6826 -2.2795 15.8151 H 1 CITK 0.0000 + 18 H3 -7.9611 -2.0876 16.2147 H 1 CITK 0.0000 + 19 H4 -9.1007 -0.7830 16.5532 H 1 CITK 0.0000 + 20 H5 -7.7825 -0.2359 14.5049 H 1 CITK 0.0000 + 21 H6 -9.4991 -0.4139 14.1498 H 1 CITK 0.0000 + 22 H7 -5.7637 -4.4655 14.6143 H 1 CITK 0.0000 + 23 H8 -5.7003 -4.3935 12.8361 H 1 CITK 0.0000 + 24 H9 -8.8063 -7.2072 12.6458 H 1 CITK 0.1500 + 25 H10 -10.9196 -8.4433 12.3576 H 1 CITK 0.1500 + 26 H11 -12.7142 -8.2677 14.0598 H 1 CITK 0.1500 + 27 H12 -12.3915 -6.8422 16.0655 H 1 CITK 0.1500 + 28 H13 -10.2840 -5.5765 16.3638 H 1 CITK 0.1500 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 7 2 + 4 3 9 2 + 5 4 8 1 + 6 4 9 am + 7 4 16 1 + 8 5 6 1 + 9 5 17 1 + 10 5 18 1 + 11 5 19 1 + 12 6 20 1 + 13 6 21 1 + 14 7 8 1 + 15 8 22 1 + 16 8 23 1 + 17 9 10 1 + 18 10 11 2 + 19 10 15 1 + 20 11 12 1 + 21 11 24 1 + 22 12 13 2 + 23 12 25 1 + 24 13 14 1 + 25 13 26 1 + 26 14 15 2 + 27 14 27 1 + 28 15 28 1 +@SUBSTRUCTURE + 1 CITK 1 +@COMMENT +COMMENT N-BENZOYLGLYCINE ETHYL-THIOL ESTER PEPSEQ A=1 GLY* +@MOLECULE +CITPEA10 + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.2448 -4.4527 12.0903 S.3 1 UNCH -0.3710 + 2 S2 -8.9033 -7.0775 11.3503 S.2 1 UNCH -0.3800 + 3 O1 -6.9226 -5.5294 14.9088 O.2 1 UNCH -0.5700 + 4 N1 -9.1866 -5.2068 14.8579 N.3 1 UNCH -0.7301 + 5 C1 -7.7434 -3.2566 11.9057 C.3 1 UNCH 0.0000 + 6 C2 -8.9611 -3.6439 11.0863 C.3 1 UNCH 0.2300 + 7 C3 -9.4614 -5.9907 12.5090 C.2 1 UNCH 0.4600 + 8 C4 -9.4588 -6.3646 14.0077 C.3 1 UNCH 0.3611 + 9 C5 -10.7952 -6.9924 14.4033 C.3 1 UNCH 0.0000 + 10 C6 -7.9008 -4.8520 15.2023 C.2 1 UNCH 0.5438 + 11 C7 -7.7330 -3.5890 15.9745 C.2 1 UNCH 0.0862 + 12 C8 -8.6287 -2.5164 15.8709 C.2 1 UNCH -0.1500 + 13 C9 -8.4159 -1.3535 16.6164 C.2 1 UNCH -0.1500 + 14 C10 -7.3094 -1.2538 17.4593 C.2 1 UNCH -0.1500 + 15 C11 -6.4066 -2.3115 17.5544 C.2 1 UNCH -0.1500 + 16 C12 -6.6145 -3.4743 16.8107 C.2 1 UNCH -0.1500 + 17 H1 -9.9556 -4.5824 15.0552 H 1 UNCH 0.3700 + 18 H2 -8.0120 -2.5938 12.7342 H 1 UNCH 0.0000 + 19 H3 -7.2267 -4.1327 12.3083 H 1 UNCH 0.0000 + 20 H4 -7.0283 -2.7190 11.2739 H 1 UNCH 0.0000 + 21 H5 -8.6745 -4.2736 10.2394 H 1 UNCH 0.0000 + 22 H6 -9.4072 -2.7366 10.6654 H 1 UNCH 0.0000 + 23 H7 -8.6681 -7.1045 14.1849 H 1 UNCH 0.0000 + 24 H8 -11.0155 -7.8753 13.7944 H 1 UNCH 0.0000 + 25 H9 -11.6250 -6.2877 14.2793 H 1 UNCH 0.0000 + 26 H10 -10.7802 -7.2998 15.4547 H 1 UNCH 0.0000 + 27 H11 -9.4785 -2.5483 15.1968 H 1 UNCH 0.1500 + 28 H12 -9.1087 -0.5193 16.5329 H 1 UNCH 0.1500 + 29 H13 -7.1449 -0.3468 18.0363 H 1 UNCH 0.1500 + 30 H14 -5.5384 -2.2313 18.2040 H 1 UNCH 0.1500 + 31 H15 -5.9024 -4.2942 16.8859 H 1 UNCH 0.1500 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 7 2 + 4 3 10 2 + 5 4 8 1 + 6 4 10 am + 7 4 17 1 + 8 5 6 1 + 9 5 18 1 + 10 5 19 1 + 11 5 20 1 + 12 6 21 1 + 13 6 22 1 + 14 7 8 1 + 15 8 9 1 + 16 8 23 1 + 17 9 24 1 + 18 9 25 1 + 19 9 26 1 + 20 10 11 1 + 21 11 12 2 + 22 11 16 1 + 23 12 13 1 + 24 12 27 1 + 25 13 14 2 + 26 13 28 1 + 27 14 15 1 + 28 14 29 1 + 29 15 16 2 + 30 15 30 1 + 31 16 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-BENZOYL-DL-ALANINE ETHYL DITHIOESTER PEPSEQ A=1 ALA* +@MOLECULE +CITSED10 + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N12 -8.5812 -5.3902 15.2107 N.3 1 CITS -0.7544 + 2 C32 -9.1947 -4.9659 14.1285 C.2 1 CITS 0.5588 + 3 N22 -9.2732 -3.7019 13.7582 N.2 1 CITS -0.5374 + 4 O52 -8.6561 -2.7703 14.5864 O.3 1 CITS -0.1670 + 5 H52 -8.8162 -1.9036 14.1591 H 1 CITS 0.4000 + 6 H22 -9.7550 -3.3958 12.9135 H 1 CITS 0.4500 + 7 H32 -9.6703 -5.7029 13.4938 H 1 CITS 0.1500 + 8 H112 -8.1274 -4.7207 15.8227 H 1 CITS 0.4500 + 9 H122 -8.5464 -6.3735 15.4559 H 1 CITS 0.4500 +@BOND + 1 1 9 1 + 2 1 8 1 + 3 1 2 am + 4 2 7 1 + 5 2 3 2 + 6 3 6 1 + 7 3 4 1 + 8 4 5 1 +@SUBSTRUCTURE + 1 CITS 1 +@COMMENT +COMMENT N-1--HYDROXYFORMAMIDINIUM HYDROGEN OXALATE (AT 105 DEG.K) N +@MOLECULE +CIVCEP02 + 36 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.7018 -3.4307 11.7838 O.2 1 UNCH -0.5700 + 2 O2 -6.1600 -4.6461 13.2663 O.3 1 UNCH -0.2960 + 3 N1 -8.8326 -5.2705 12.8144 N.3 1 UNCH -0.4201 + 4 C1 -9.6572 -4.1682 12.7724 C.2 1 UNCH 0.6900 + 5 C2 -7.9180 -5.4953 11.7013 C.3 1 UNCH 0.3951 + 6 C3 -6.5496 -4.9085 11.9116 C.3 1 UNCH -0.0470 + 7 C4 -6.3202 -3.5029 12.4121 C.3 1 UNCH -0.0520 + 8 H1 -7.8114 -6.5739 11.5363 H 1 UNCH 0.0000 + 9 H2 -8.3374 -5.0834 10.7766 H 1 UNCH 0.0000 + 10 H3 -5.8127 -5.3337 11.2421 H 1 UNCH 0.1000 + 11 H4 -5.4209 -2.9863 12.0994 H 1 UNCH 0.1000 + 12 H5 -7.1621 -2.8485 12.5976 H 1 UNCH 0.1000 + 13 N1A -10.4464 -3.9512 13.8810 N.3 1 UNCH -0.4201 + 14 C1B -8.8136 -6.1684 13.8595 C.2 1 UNCH 0.6900 + 15 C1A -10.4869 -4.8000 14.9648 C.2 1 UNCH 0.6900 + 16 C2A -11.2708 -2.7488 13.9103 C.3 1 UNCH 0.3951 + 17 O1B -8.1201 -7.1890 13.8319 O.2 1 UNCH -0.5700 + 18 N1B -9.6324 -5.8804 14.9289 N.3 1 UNCH -0.4201 + 19 O1A -11.2651 -4.6131 15.9044 O.2 1 UNCH -0.5700 + 20 C3A -10.5557 -1.5348 14.4354 C.3 1 UNCH -0.0470 + 21 H1A -11.6249 -2.5313 12.8958 H 1 UNCH 0.0000 + 22 H2A -12.1666 -2.9180 14.5183 H 1 UNCH 0.0000 + 23 C2B -9.5849 -6.7554 16.0943 C.3 1 UNCH 0.3951 + 24 O2A -9.1228 -1.5580 14.3888 O.3 1 UNCH -0.2960 + 25 C4A -9.7219 -1.5456 15.6939 C.3 1 UNCH -0.0520 + 26 H3A -11.0599 -0.6142 14.1704 H 1 UNCH 0.1000 + 27 C3B -8.6295 -6.2955 17.1605 C.3 1 UNCH -0.0470 + 28 H1B -10.5873 -6.8243 16.5328 H 1 UNCH 0.0000 + 29 H2B -9.3109 -7.7729 15.7936 H 1 UNCH 0.0000 + 30 H4A -9.6449 -0.6298 16.2672 H 1 UNCH 0.1000 + 31 H5A -9.6508 -2.4459 16.2903 H 1 UNCH 0.1000 + 32 O2B -8.2661 -4.9086 17.1483 O.3 1 UNCH -0.2960 + 33 C4B -7.2172 -5.8488 16.8690 C.3 1 UNCH -0.0520 + 34 H3B -8.8250 -6.7633 18.1170 H 1 UNCH 0.1000 + 35 H4B -6.4640 -5.9945 17.6337 H 1 UNCH 0.1000 + 36 H5B -6.8325 -5.8901 15.8583 H 1 UNCH 0.1000 +@BOND + 1 1 4 2 + 2 2 6 1 + 3 2 7 1 + 4 3 4 am + 5 3 5 1 + 6 3 14 am + 7 4 13 am + 8 5 6 1 + 9 5 8 1 + 10 5 9 1 + 11 6 7 1 + 12 6 10 1 + 13 7 11 1 + 14 7 12 1 + 15 13 15 am + 16 13 16 1 + 17 14 17 2 + 18 14 18 am + 19 15 18 am + 20 15 19 2 + 21 16 20 1 + 22 16 21 1 + 23 16 22 1 + 24 18 23 1 + 25 20 24 1 + 26 20 25 1 + 27 20 26 1 + 28 23 27 1 + 29 23 28 1 + 30 23 29 1 + 31 24 25 1 + 32 25 30 1 + 33 25 31 1 + 34 27 32 1 + 35 27 33 1 + 36 27 34 1 + 37 32 33 1 + 38 33 35 1 + 39 33 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,3,5-TRIS(OXIRAN-2-YLMETHYL)-1,3,5-TRIAZINE-2,4,6-TRIONE ( +@MOLECULE +CIVLAU02 + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.0598 -3.5751 15.3909 C.3 1 UNCH 0.0000 + 2 C2 -7.5593 -3.1794 15.0766 C.3 1 UNCH 0.0530 + 3 C3 -7.6129 -4.7317 14.7724 C.3 1 UNCH 0.0000 + 4 C4 -8.4072 -4.8073 16.1399 C.3 1 UNCH 0.0530 + 5 C5 -9.0008 -4.4547 14.0905 C.3 1 UNCH 0.5158 + 6 O1 -9.0075 -3.7695 12.8179 O.3 1 UNCH -0.5379 + 7 C6 -9.7037 -4.6036 11.8853 C.3 1 UNCH 0.2800 + 8 C7 -10.6648 -5.3789 12.7653 C.3 1 UNCH 0.2800 + 9 O2 -9.9236 -5.5613 13.9767 O.3 1 UNCH -0.5379 + 10 C8 -7.2004 -2.1757 13.9645 C.2 1 UNCH 0.6670 + 11 O3 -6.2345 -2.2799 13.2097 O.2 1 UNCH -0.5700 + 12 O4 -8.0687 -1.1200 13.9414 O.3 1 UNCH -0.4300 + 13 C9 -7.8067 -0.1726 12.9061 C.3 1 UNCH 0.2800 + 14 C10 -9.2587 -6.0343 16.5173 C.2 1 UNCH 0.6670 + 15 O5 -10.3454 -5.9849 17.0919 O.2 1 UNCH -0.5700 + 16 O6 -8.6376 -7.2022 16.1716 O.3 1 UNCH -0.4300 + 17 C11 -9.3968 -8.3749 16.4654 C.3 1 UNCH 0.2800 + 18 H1 -9.8500 -2.9324 15.7472 H 1 UNCH 0.0000 + 19 H2 -6.9642 -2.9139 15.9650 H 1 UNCH 0.0000 + 20 H3 -6.8036 -5.3658 14.4445 H 1 UNCH 0.0000 + 21 H4 -7.8127 -4.5334 17.0261 H 1 UNCH 0.0000 + 22 H5 -8.9707 -5.2633 11.4102 H 1 UNCH 0.0000 + 23 H6 -10.2098 -4.0020 11.1267 H 1 UNCH 0.0000 + 24 H7 -10.9544 -6.3413 12.3370 H 1 UNCH 0.0000 + 25 H8 -11.5580 -4.7918 13.0014 H 1 UNCH 0.0000 + 26 H9 -7.8632 -0.6510 11.9232 H 1 UNCH 0.0000 + 27 H10 -8.5745 0.6044 12.9562 H 1 UNCH 0.0000 + 28 H11 -6.8293 0.2966 13.0554 H 1 UNCH 0.0000 + 29 H12 -8.8277 -9.2420 16.1189 H 1 UNCH 0.0000 + 30 H13 -9.5506 -8.4706 17.5447 H 1 UNCH 0.0000 + 31 H14 -10.3545 -8.3564 15.9356 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 1 18 1 + 5 2 3 1 + 6 2 10 1 + 7 2 19 1 + 8 3 4 1 + 9 3 5 1 + 10 3 20 1 + 11 4 14 1 + 12 4 21 1 + 13 5 6 1 + 14 5 9 1 + 15 6 7 1 + 16 7 8 1 + 17 7 22 1 + 18 7 23 1 + 19 8 9 1 + 20 8 24 1 + 21 8 25 1 + 22 10 11 2 + 23 10 12 1 + 24 12 13 1 + 25 13 26 1 + 26 13 27 1 + 27 13 28 1 + 28 14 15 2 + 29 14 16 1 + 30 16 17 1 + 31 17 29 1 + 32 17 30 1 + 33 17 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT EXO,EXO-4,5-DICARBOMETHOXYSPIRO(BICYCLO(1.1.1)PENTANE-2,2'- +@MOLECULE +CIXWAH + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -7.8107 -3.7845 12.5500 O.3 1 CIXR -0.6800 + 2 O2 -10.1668 -2.8045 14.0839 O.3 1 CIXR -0.4300 + 3 O3 -11.3474 -3.4763 12.2788 O.2 1 CIXR -0.5700 + 4 O4 -10.3331 -5.0579 13.5385 O.3 1 CIXR -0.4300 + 5 C1 -9.7192 -4.4550 15.7828 C.3 1 CIXR 0.0000 + 6 C2 -9.4972 -5.4227 14.6473 C.3 1 CIXR 0.2800 + 7 C3 -8.0223 -5.4885 14.2278 C.3 1 CIXR 0.0000 + 8 C4 -7.4267 -4.1220 13.8779 C.3 1 CIXR 0.2800 + 9 C5 -7.8626 -3.0242 14.8516 C.3 1 CIXR 0.0000 + 10 C6 -9.3481 -3.1036 15.2247 C.3 1 CIXR 0.2800 + 11 C7 -10.6404 -3.7643 13.2358 C.2 1 CIXR 0.8700 + 12 H1 -7.4115 -2.9277 12.3180 H 1 CIXR 0.4000 + 13 H11 -10.7776 -4.4582 16.0700 H 1 CIXR 0.0000 + 14 H12 -9.1194 -4.7122 16.6621 H 1 CIXR 0.0000 + 15 H2 -9.8167 -6.4231 14.9602 H 1 CIXR 0.0000 + 16 H31 -7.9254 -6.1581 13.3646 H 1 CIXR 0.0000 + 17 H32 -7.4473 -5.9196 15.0566 H 1 CIXR 0.0000 + 18 H4 -6.3334 -4.1965 13.8725 H 1 CIXR 0.0000 + 19 H51 -7.6561 -2.0417 14.4107 H 1 CIXR 0.0000 + 20 H52 -7.2696 -3.1130 15.7702 H 1 CIXR 0.0000 + 21 H6 -9.5637 -2.3335 15.9737 H 1 CIXR 0.0000 +@BOND + 1 1 8 1 + 2 1 12 1 + 3 2 10 1 + 4 2 11 1 + 5 3 11 2 + 6 4 6 1 + 7 4 11 1 + 8 5 6 1 + 9 5 10 1 + 10 5 13 1 + 11 5 14 1 + 12 6 7 1 + 13 6 15 1 + 14 7 8 1 + 15 7 16 1 + 16 7 17 1 + 17 8 9 1 + 18 8 18 1 + 19 9 10 1 + 20 9 19 1 + 21 9 20 1 + 22 10 21 1 +@SUBSTRUCTURE + 1 CIXR 1 +@COMMENT +COMMENT ENDO-7-HYDROXY-2,4-DIOXA-3-OXOBICYCLO(3.3.1)NONANE +@MOLECULE +CIYNUT + 14 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.9480 -6.4271 11.8278 S.3 1 CHGB 0.4414 + 2 O1 -9.4929 -6.1403 16.2661 O.2 1 CHGB -0.5700 + 3 N1 -9.3417 -4.8764 11.7184 N.2 1 CHGB -0.5095 + 4 N2 -9.9037 -6.6364 13.4827 N.2 1 CHGB -0.5095 + 5 C1 -9.4120 -5.4925 13.9792 C.2 1 CHGB 0.2028 + 6 C2 -9.0935 -4.4950 12.9793 C.2 1 CHGB 0.2028 + 7 C3 -9.2231 -5.2955 15.4193 C.2 1 CHGB 0.7420 + 8 C3B -8.5450 -3.1719 13.2906 C.2 1 CHGB 0.7420 + 9 C2B -8.6746 -3.9724 15.7306 C.2 1 CHGB 0.2028 + 10 O1B -8.2752 -2.3271 12.4438 O.2 1 CHGB -0.5700 + 11 C1B -8.3561 -2.9749 14.7307 C.2 1 CHGB 0.2028 + 12 N1B -8.4264 -3.5910 16.9915 N.2 1 CHGB -0.5095 + 13 N2B -7.8644 -1.8310 15.2272 N.2 1 CHGB -0.5095 + 14 S1B -7.8201 -2.0403 16.8821 S.3 1 CHGB 0.4414 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 2 7 2 + 4 3 6 2 + 5 4 5 2 + 6 5 6 1 + 7 5 7 1 + 8 6 8 1 + 9 7 9 1 + 10 8 10 2 + 11 8 11 1 + 12 9 11 1 + 13 9 12 2 + 14 11 13 2 + 15 12 14 1 + 16 13 14 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT TETRATHIAFULVALENE BENZO(1,2-C.4,5-C')BIS(1,2,5)THIADIAZOLE +@MOLECULE +CIZFIA + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.4153 -1.7576 15.1058 S.2 1 UNCH 0.3595 + 2 O8 -9.8820 -5.2202 15.9432 O.3 1 UNCH -0.4300 + 3 O12 -6.9242 -1.6317 15.2553 O.2 1 UNCH -0.5000 + 4 O13 -10.3666 -3.1510 16.6329 O.2 1 UNCH -0.5700 + 5 N6 -8.8166 -3.3886 14.9351 N.3 1 UNCH -0.4131 + 6 C2 -8.7666 -1.3123 13.3435 C.3 1 UNCH 0.3317 + 7 C3 -8.1999 -2.3266 12.3792 C.2 1 UNCH -0.2882 + 8 C4 -7.8591 -3.5886 12.6948 C.2 1 UNCH -0.2882 + 9 C5 -8.0363 -4.2403 14.0518 C.3 1 UNCH 0.4383 + 10 C7 -9.7047 -3.8663 15.8841 C.2 1 UNCH 0.7800 + 11 C9 -8.9928 -6.1204 15.2656 C.3 1 UNCH 0.2800 + 12 C10 -8.7021 -5.5959 13.8773 C.3 1 UNCH 0.0000 + 13 C11 -10.2646 -1.1175 13.1427 C.3 1 UNCH 0.0000 + 14 C14 -9.6678 -7.4839 15.2150 C.3 1 UNCH 0.0000 + 15 H2 -8.2559 -0.3555 13.1853 H 1 UNCH 0.0000 + 16 H3 -8.0252 -1.9732 11.3652 H 1 UNCH 0.1500 + 17 H4 -7.4071 -4.2069 11.9209 H 1 UNCH 0.1500 + 18 H5 -7.0484 -4.3762 14.5110 H 1 UNCH 0.0000 + 19 H9 -8.0759 -6.2038 15.8619 H 1 UNCH 0.0000 + 20 H101 -8.0529 -6.2841 13.3232 H 1 UNCH 0.0000 + 21 H102 -9.6388 -5.4884 13.3132 H 1 UNCH 0.0000 + 22 H111 -10.8248 -2.0437 13.3147 H 1 UNCH 0.0000 + 23 H112 -10.4805 -0.7824 12.1221 H 1 UNCH 0.0000 + 24 H113 -10.6577 -0.3616 13.8317 H 1 UNCH 0.0000 + 25 H141 -9.0314 -8.2250 14.7220 H 1 UNCH 0.0000 + 26 H142 -9.8930 -7.8355 16.2277 H 1 UNCH 0.0000 + 27 H143 -10.6238 -7.4302 14.6823 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 5 1 + 3 1 6 1 + 4 2 10 1 + 5 2 11 1 + 6 4 10 2 + 7 5 9 1 + 8 5 10 am + 9 6 7 1 + 10 6 13 1 + 11 6 15 1 + 12 7 8 2 + 13 7 16 1 + 14 8 9 1 + 15 8 17 1 + 16 9 12 1 + 17 9 18 1 + 18 11 12 1 + 19 11 14 1 + 20 11 19 1 + 21 12 20 1 + 22 12 21 1 + 23 13 22 1 + 24 13 23 1 + 25 13 24 1 + 26 14 25 1 + 27 14 26 1 + 28 14 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,7-DIMETHYL-1-OXO-1,2-THIAZINO(2,3-C)-1',3'-PERHYDRO-OXAZI +@MOLECULE +CIZJAW + 48 48 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -7.7960 -3.9260 15.2621 SI 1 CIZJ 0.3870 + 2 SI3 -9.8403 -3.9488 13.6172 SI 1 CIZJ 0.3870 + 3 SI20 -7.6023 -1.5021 12.8948 SI 1 CIZJ 0.3545 + 4 SI40 -9.3484 -6.9412 15.1403 SI 1 CIZJ 0.3545 + 5 CL2 -9.4196 -1.4634 15.1529 CL 1 CIZJ -0.2900 + 6 CL4 -10.4211 -4.5830 16.4408 CL 1 CIZJ -0.2900 + 7 C2 -8.5721 -2.6186 14.1156 C.3 1 CIZJ -0.0490 + 8 C4 -9.3443 -5.0238 15.1085 C.3 1 CIZJ -0.0490 + 9 C11 -6.3091 -4.7150 14.5072 C.3 1 CIZJ -0.0805 + 10 C12 -7.4097 -3.3486 16.9611 C.3 1 CIZJ -0.0805 + 11 C21 -6.4265 -0.4200 13.8676 C.3 1 CIZJ -0.0805 + 12 C22 -6.6097 -2.5047 11.6750 C.3 1 CIZJ -0.0805 + 13 C23 -8.8187 -0.4466 11.9428 C.3 1 CIZJ -0.0805 + 14 C31 -9.4105 -4.7495 12.0118 C.3 1 CIZJ -0.0805 + 15 C32 -11.5903 -3.3951 13.5974 C.3 1 CIZJ -0.0805 + 16 C41 -8.2649 -7.6606 13.8036 C.3 1 CIZJ -0.0805 + 17 C42 -8.7061 -7.5206 16.7991 C.3 1 CIZJ -0.0805 + 18 C43 -11.0983 -7.5472 14.8743 C.3 1 CIZJ -0.0805 + 19 H1 -5.4728 -4.0101 14.4622 H 1 CIZJ 0.0000 + 20 H2 -5.9729 -5.5679 15.1054 H 1 CIZJ 0.0000 + 21 H3 -6.4917 -5.0755 13.4919 H 1 CIZJ 0.0000 + 22 H4 -7.0909 -4.1837 17.5935 H 1 CIZJ 0.0000 + 23 H5 -6.5898 -2.6228 16.9491 H 1 CIZJ 0.0000 + 24 H6 -8.2532 -2.8694 17.4657 H 1 CIZJ 0.0000 + 25 H7 -5.8274 0.1974 13.1912 H 1 CIZJ 0.0000 + 26 H8 -6.9648 0.2512 14.5429 H 1 CIZJ 0.0000 + 27 H9 -5.7403 -1.0272 14.4654 H 1 CIZJ 0.0000 + 28 H10 -7.2461 -3.1456 11.0612 H 1 CIZJ 0.0000 + 29 H11 -6.0698 -1.8378 10.9948 H 1 CIZJ 0.0000 + 30 H12 -5.8654 -3.1303 12.1722 H 1 CIZJ 0.0000 + 31 H13 -8.2946 0.1699 11.2061 H 1 CIZJ 0.0000 + 32 H14 -9.5412 -1.0696 11.4072 H 1 CIZJ 0.0000 + 33 H15 -9.3722 0.2244 12.6059 H 1 CIZJ 0.0000 + 34 H16 -10.0551 -5.6133 11.8208 H 1 CIZJ 0.0000 + 35 H17 -9.5550 -4.0556 11.1777 H 1 CIZJ 0.0000 + 36 H18 -8.3748 -5.0965 11.9767 H 1 CIZJ 0.0000 + 37 H19 -11.7638 -2.6805 12.7861 H 1 CIZJ 0.0000 + 38 H20 -12.2649 -4.2414 13.4305 H 1 CIZJ 0.0000 + 39 H21 -11.9092 -2.9101 14.5241 H 1 CIZJ 0.0000 + 40 H22 -8.2902 -8.7543 13.8502 H 1 CIZJ 0.0000 + 41 H23 -8.6030 -7.3720 12.8061 H 1 CIZJ 0.0000 + 42 H24 -7.2222 -7.3566 13.9170 H 1 CIZJ 0.0000 + 43 H25 -9.3551 -7.1943 17.6167 H 1 CIZJ 0.0000 + 44 H26 -8.6559 -8.6134 16.8287 H 1 CIZJ 0.0000 + 45 H27 -7.7003 -7.1326 16.9860 H 1 CIZJ 0.0000 + 46 H28 -11.1232 -8.6409 14.8436 H 1 CIZJ 0.0000 + 47 H29 -11.7625 -7.2211 15.6798 H 1 CIZJ 0.0000 + 48 H30 -11.5013 -7.1750 13.9277 H 1 CIZJ 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 1 8 1 + 4 1 7 1 + 5 2 15 1 + 6 2 14 1 + 7 2 8 1 + 8 2 7 1 + 9 3 13 1 + 10 3 12 1 + 11 3 11 1 + 12 3 7 1 + 13 4 18 1 + 14 4 17 1 + 15 4 16 1 + 16 4 8 1 + 17 5 7 1 + 18 6 8 1 + 19 9 21 1 + 20 9 20 1 + 21 9 19 1 + 22 10 24 1 + 23 10 23 1 + 24 10 22 1 + 25 11 27 1 + 26 11 26 1 + 27 11 25 1 + 28 12 30 1 + 29 12 29 1 + 30 12 28 1 + 31 13 33 1 + 32 13 32 1 + 33 13 31 1 + 34 14 36 1 + 35 14 35 1 + 36 14 34 1 + 37 15 39 1 + 38 15 38 1 + 39 15 37 1 + 40 16 42 1 + 41 16 41 1 + 42 16 40 1 + 43 17 45 1 + 44 17 44 1 + 45 17 43 1 + 46 18 48 1 + 47 18 47 1 + 48 18 46 1 +@SUBSTRUCTURE + 1 CIZJ 1 +@COMMENT +COMMENT CIS-2,4-DICHLORO-2,4-BIS(TRIMETHYLSILYL)-1,1,3,3-TETRAMETHY +@MOLECULE +CIZWUD + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -8.9260 -4.4260 14.4977 C.2 1 CIZW 0.2820 + 2 C3 -7.5826 -4.7391 14.6764 C.2 1 CIZW -0.1500 + 3 C4 -7.1239 -5.9526 14.1729 C.2 1 CIZW -0.1500 + 4 C5 -8.0113 -6.8011 13.5166 C.2 1 CIZW -0.1500 + 5 C6 -9.3333 -6.4043 13.3860 C.2 1 CIZW 0.1600 + 6 C7 -11.1412 -1.7942 15.2823 C.1 1 CIZW 0.6631 + 7 N1 -9.8161 -5.2357 13.8605 N.2 1 CIZW -0.6200 + 8 N2 -9.4724 -3.1518 15.0101 N.2 1 CIZW 0.8680 + 9 N3 -10.7080 -2.9582 14.7976 N.2 1 CIZW -0.3130 + 10 N4 -11.5748 -0.7955 15.6825 N.1 1 CIZW -0.5571 + 11 O1 -8.6809 -2.3471 15.6200 O.3 1 CIZW -0.6330 + 12 H3 -6.9057 -4.0640 15.1913 H 1 CIZW 0.1500 + 13 H4 -6.0810 -6.2355 14.2913 H 1 CIZW 0.1500 + 14 H5 -7.6788 -7.7526 13.1149 H 1 CIZW 0.1500 + 15 H6 -10.0585 -7.0367 12.8807 H 1 CIZW 0.1500 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 2 2 + 4 2 12 1 + 5 2 3 1 + 6 3 13 1 + 7 3 4 2 + 8 4 14 1 + 9 4 5 1 + 10 5 15 1 + 11 5 7 2 + 12 6 10 3 + 13 6 9 1 + 14 8 11 1 + 15 8 9 2 +@SUBSTRUCTURE + 1 CIZW 1 +@COMMENT +COMMENT 2-PYRIDINE-ONN-AZOXYCYANIDE +@MOLECULE +CIZYEP + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.3946 -1.6394 13.0681 S.3 1 UNCH -0.3310 + 2 C1 -10.2275 -2.4964 12.6264 C.1 1 UNCH 0.4921 + 3 C2 -9.4937 -3.2677 13.5893 C.2 1 UNCH 0.0366 + 4 C3 -8.1773 -3.0335 13.8717 C.2 1 UNCH 0.2010 + 5 C7 -10.2761 -4.3210 14.2856 C.2 1 UNCH 0.0284 + 6 C8 -10.4768 -4.2643 15.6736 C.2 1 UNCH -0.1500 + 7 C9 -11.2279 -5.2457 16.3233 C.2 1 UNCH -0.1500 + 8 C10 -11.7927 -6.2893 15.5928 C.2 1 UNCH -0.1500 + 9 C11 -11.6098 -6.3526 14.2126 C.2 1 UNCH -0.1500 + 10 C12 -10.8584 -5.3725 13.5602 C.2 1 UNCH -0.1500 + 11 C4 -6.4349 -2.5401 11.8278 C.3 1 UNCH 0.2300 + 12 C5 -7.3062 -5.2631 14.6420 C.3 1 UNCH 0.3691 + 13 C6 -6.3640 -3.2118 15.6033 C.3 1 UNCH 0.3691 + 14 N2 -7.4169 -3.8074 14.7778 N.3 1 UNCH -0.8382 + 15 N1 -10.8416 -1.9111 11.8325 N.1 1 UNCH -0.5571 + 16 H8 -10.0424 -3.4549 16.2574 H 1 UNCH 0.1500 + 17 H9 -11.3745 -5.1923 17.3991 H 1 UNCH 0.1500 + 18 H10 -12.3811 -7.0506 16.0988 H 1 UNCH 0.1500 + 19 H11 -12.0576 -7.1626 13.6421 H 1 UNCH 0.1500 + 20 H12 -10.7320 -5.4390 12.4814 H 1 UNCH 0.1500 + 21 H41 -7.0951 -3.1273 11.1835 H 1 UNCH 0.0000 + 22 H42 -5.8885 -1.8254 11.2067 H 1 UNCH 0.0000 + 23 H43 -5.7126 -3.2062 12.3074 H 1 UNCH 0.0000 + 24 H51 -7.8070 -5.6369 13.7432 H 1 UNCH 0.0000 + 25 H52 -6.2547 -5.5622 14.5632 H 1 UNCH 0.0000 + 26 H53 -7.7370 -5.7561 15.5190 H 1 UNCH 0.0000 + 27 H61 -6.6672 -2.2295 15.9815 H 1 UNCH 0.0000 + 28 H62 -6.1608 -3.8412 16.4770 H 1 UNCH 0.0000 + 29 H63 -5.4347 -3.1072 15.0337 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 11 1 + 3 2 3 1 + 4 2 15 3 + 5 3 4 2 + 6 3 5 1 + 7 4 14 1 + 8 5 6 2 + 9 5 10 1 + 10 6 7 1 + 11 6 16 1 + 12 7 8 2 + 13 7 17 1 + 14 8 9 1 + 15 8 18 1 + 16 9 10 2 + 17 9 19 1 + 18 10 20 1 + 19 11 21 1 + 20 11 22 1 + 21 11 23 1 + 22 12 14 1 + 23 12 24 1 + 24 12 25 1 + 25 12 26 1 + 26 13 14 1 + 27 13 27 1 + 28 13 28 1 + 29 13 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-DIMETHYLAMINO-3-METHYLTHIO-2-PHENYLACRYLONITRILE +@MOLECULE +CIZZUG + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.0608 -4.0330 14.8926 S.3 1 CIZZ -0.0800 + 2 C2 -8.4469 -4.1199 14.3276 C.2 1 CIZZ 0.4421 + 3 N3 -7.5213 -4.1684 15.2663 N.2 1 CIZZ -0.5653 + 4 C4 -8.1194 -4.1432 16.5143 C.2 1 CIZZ 0.0772 + 5 C5 -9.4901 -4.0708 16.4879 C.2 1 CIZZ 0.1200 + 6 N6 -10.3686 -4.0285 17.6117 N.2 1 CIZZ 0.9600 + 7 O7 -11.5858 -3.9567 17.4054 O.3 1 CIZZ -0.5200 + 8 O8 -9.8306 -4.0668 18.7266 O.2 1 CIZZ -0.5200 + 9 N9 -8.1431 -4.1277 12.9842 N.3 1 CIZZ -0.4241 + 10 C10 -9.0645 -4.1421 11.9304 C.2 1 CIZZ 0.6900 + 11 N11 -8.3390 -4.1875 10.7400 N.3 1 CIZZ -0.7301 + 12 C12 -6.9477 -3.9458 10.9857 C.3 1 CIZZ 0.3001 + 13 C13 -6.7942 -4.2256 12.4709 C.3 1 CIZZ 0.3001 + 14 O14 -10.2826 -4.1080 11.9410 O.2 1 CIZZ -0.5700 + 15 H4 -7.4988 -4.1795 17.4028 H 1 CIZZ 0.1500 + 16 H11 -8.8267 -4.0060 9.8715 H 1 CIZZ 0.3700 + 17 H121 -6.3280 -4.5883 10.3558 H 1 CIZZ 0.0000 + 18 H122 -6.7435 -2.8956 10.7533 H 1 CIZZ 0.0000 + 19 H131 -6.4334 -5.2454 12.6459 H 1 CIZZ 0.0000 + 20 H132 -6.1259 -3.5089 12.9582 H 1 CIZZ 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 9 am + 5 3 4 1 + 6 4 5 2 + 7 4 15 1 + 8 5 6 1 + 9 6 7 1 + 10 6 8 2 + 11 9 10 am + 12 9 13 1 + 13 10 11 am + 14 10 14 2 + 15 11 12 1 + 16 11 16 1 + 17 12 13 1 + 18 12 17 1 + 19 12 18 1 + 20 13 19 1 + 21 13 20 1 +@SUBSTRUCTURE + 1 CIZZ 1 +@COMMENT +COMMENT 1-(5-NITRO-1,3-THIAZOL-2-YL)-2-IMIDAZOLIDINONE NIRIDAZOLE +@MOLECULE +COBKIN01 + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.2733 -4.6182 13.8940 O.3 1 UNCH -0.1800 + 2 O2 -6.4585 -7.3650 14.7610 O.2 1 UNCH -0.5700 + 3 O3 -7.4828 -3.8424 14.9761 O.3 1 UNCH -0.4300 + 4 O4 -8.5562 -4.9409 16.6939 O.2 1 UNCH -0.5700 + 5 N1 -9.4870 -5.8025 13.5648 N.3 1 UNCH -0.4160 + 6 N2 -6.9616 -6.6126 12.6844 N.3 1 UNCH -0.8000 + 7 C1 -8.3809 -5.9864 14.5608 C.3 1 UNCH 0.1580 + 8 C2 -9.6821 -6.7681 14.6341 C.3 1 UNCH -0.0420 + 9 C3 -7.1884 -6.7068 14.0307 C.2 1 UNCH 0.6300 + 10 C4 -8.1555 -4.8887 15.5376 C.2 1 UNCH 0.7200 + 11 C5 -7.2469 -2.7238 15.8410 C.3 1 UNCH 0.2800 + 12 C6 -8.4363 -1.7822 15.8088 C.3 1 UNCH 0.0000 + 13 C7 -10.4889 -3.8840 12.6945 C.3 1 UNCH 0.2800 + 14 H1 -7.6825 -6.2273 12.0869 H 1 UNCH 0.3700 + 15 H2 -6.2426 -7.1979 12.2829 H 1 UNCH 0.3700 + 16 H3 -10.3894 -6.5264 15.4193 H 1 UNCH 0.1000 + 17 H4 -9.6682 -7.8121 14.3465 H 1 UNCH 0.1000 + 18 H5 -9.5343 -3.5639 12.2646 H 1 UNCH 0.0000 + 19 H6 -11.0489 -4.4858 11.9715 H 1 UNCH 0.0000 + 20 H7 -11.0764 -2.9947 12.9380 H 1 UNCH 0.0000 + 21 H8 -7.0184 -3.0483 16.8626 H 1 UNCH 0.0000 + 22 H9 -6.3589 -2.2076 15.4619 H 1 UNCH 0.0000 + 23 H10 -8.6500 -1.4681 14.7818 H 1 UNCH 0.0000 + 24 H11 -8.2447 -0.8940 16.4174 H 1 UNCH 0.0000 + 25 H12 -9.3384 -2.2755 16.1843 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 13 1 + 3 2 9 2 + 4 3 10 1 + 5 3 11 1 + 6 4 10 2 + 7 5 7 1 + 8 5 8 1 + 9 6 9 am + 10 6 14 1 + 11 6 15 1 + 12 7 8 1 + 13 7 9 1 + 14 7 10 1 + 15 8 16 1 + 16 8 17 1 + 17 11 12 1 + 18 11 21 1 + 19 11 22 1 + 20 12 23 1 + 21 12 24 1 + 22 12 25 1 + 23 13 18 1 + 24 13 19 1 + 25 13 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-CARBAMOYL-2-ETHOXYCARBONYL-1-METHOXY-AZIRIDINE (ALPHA ISO +@MOLECULE +COCXUN + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.8396 -3.3864 13.4172 C.2 1 COCX 0.3494 + 2 C2 -8.4824 -3.8075 12.9716 C.2 1 COCX -0.1356 + 3 C3 -7.6460 -4.4968 13.7505 C.2 1 COCX -0.1356 + 4 C4 -7.9904 -4.9102 15.1391 C.2 1 COCX 0.3494 + 5 C5 -9.7420 -4.8589 16.9207 C.2 1 COCX -0.1500 + 6 C6 -11.0007 -4.4960 17.4018 C.2 1 COCX -0.1500 + 7 C7 -11.8722 -3.7778 16.5903 C.2 1 COCX -0.1500 + 8 C8 -11.4852 -3.4224 15.2975 C.2 1 COCX -0.1500 + 9 C9 -10.2191 -3.7833 14.8035 C.2 1 COCX 0.0862 + 10 C10 -9.3428 -4.5055 15.6196 C.2 1 COCX 0.0862 + 11 C11 -10.3891 -2.3448 11.4622 C.1 1 COCX 0.6631 + 12 C12 -6.0041 -5.9583 15.5454 C.1 1 COCX 0.6631 + 13 N1 -10.0984 -2.0343 10.3846 N.1 1 COCX -0.5571 + 14 N2 -10.6956 -2.7173 12.7090 N.2 1 COCX -0.5560 + 15 N3 -4.9526 -6.2748 15.1763 N.1 1 COCX -0.5571 + 16 N4 -7.2229 -5.5790 15.9427 N.2 1 COCX -0.5560 + 17 H2 -8.1641 -3.5398 11.9687 H 1 COCX 0.1500 + 18 H3 -6.6708 -4.7703 13.3592 H 1 COCX 0.1500 + 19 H5 -9.0778 -5.4209 17.5750 H 1 COCX 0.1500 + 20 H6 -11.2988 -4.7749 18.4102 H 1 COCX 0.1500 + 21 H7 -12.8543 -3.4932 16.9618 H 1 COCX 0.1500 + 22 H8 -12.1850 -2.8603 14.6816 H 1 COCX 0.1500 +@BOND + 1 1 14 2 + 2 1 9 1 + 3 1 2 1 + 4 2 17 1 + 5 2 3 2 + 6 3 18 1 + 7 3 4 1 + 8 4 16 2 + 9 4 10 1 + 10 5 19 1 + 11 5 10 1 + 12 5 6 2 + 13 6 20 1 + 14 6 7 1 + 15 7 21 1 + 16 7 8 2 + 17 8 22 1 + 18 8 9 1 + 19 9 10 2 + 20 11 14 1 + 21 11 13 3 + 22 12 16 1 + 23 12 15 3 +@SUBSTRUCTURE + 1 COCX 1 +@COMMENT +COMMENT N,N'-DICYANO-1,4-NAPHTHOQUINONE-DI-IMINE TETRATHIAFULVALENE +@MOLECULE +COGDEH + 23 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.8470 -5.9114 17.7786 N.2 1 COGD -0.3381 + 2 N2 -8.8310 -6.1660 18.6722 N.2 1 COGD 0.0000 + 3 N3 -7.6633 -5.7390 18.2096 N.2 1 COGD -0.4180 + 4 N4 -7.9344 -5.2077 17.0121 N.3 1 COGD 0.7716 + 5 N5 -6.9825 -4.6603 16.2223 N.2 1 COGD -0.6520 + 6 N6 -9.8253 -4.8474 15.5837 N.2 1 COGD -0.5760 + 7 C1 -9.2901 -5.3148 16.7444 C.2 1 COGD 0.3125 + 8 C2 -7.4796 -4.2082 15.1072 C.2 1 COGD 0.4356 + 9 C3 -8.9721 -4.3017 14.7621 C.2 1 COGD 0.3638 + 10 C4 -6.5856 -3.5736 14.1160 C.2 1 COGD -0.1356 + 11 C5 -7.0602 -3.0982 12.9606 C.2 1 COGD -0.1784 + 12 C6 -8.4769 -3.1719 12.6020 C.2 1 COGD 0.0284 + 13 C7 -9.4192 -3.7515 13.4617 C.2 1 COGD 0.0862 + 14 C8 -8.9081 -2.6537 11.3737 C.2 1 COGD -0.1500 + 15 C9 -10.2565 -2.7142 11.0124 C.2 1 COGD -0.1500 + 16 C10 -11.1868 -3.2923 11.8733 C.2 1 COGD -0.1500 + 17 C11 -10.7714 -3.8118 13.0987 C.2 1 COGD -0.1500 + 18 H4 -5.5329 -3.5131 14.3707 H 1 COGD 0.1500 + 19 H5 -6.3790 -2.6363 12.2504 H 1 COGD 0.1500 + 20 H8 -8.2021 -2.1969 10.6829 H 1 COGD 0.1500 + 21 H9 -10.5814 -2.3091 10.0564 H 1 COGD 0.1500 + 22 H10 -12.2363 -3.3389 11.5911 H 1 COGD 0.1500 + 23 H11 -11.5071 -4.2611 13.7632 H 1 COGD 0.1500 +@BOND + 1 1 7 2 + 2 1 2 1 + 3 2 3 2 + 4 3 4 1 + 5 4 7 am + 6 4 5 1 + 7 5 8 2 + 8 6 9 2 + 9 6 7 am + 10 8 10 1 + 11 8 9 1 + 12 9 13 1 + 13 10 18 1 + 14 10 11 2 + 15 11 19 1 + 16 11 12 1 + 17 12 14 1 + 18 12 13 2 + 19 13 17 1 + 20 14 20 1 + 21 14 15 2 + 22 15 21 1 + 23 15 16 1 + 24 16 22 1 + 25 16 17 2 + 26 17 23 1 +@SUBSTRUCTURE + 1 COGD 1 +@COMMENT +COMMENT NAPHTHO(L,2-E)TETRAZOLO(L,5-B)-AS-TRIAZINE +@MOLECULE +COGYAY + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -7.5022 -1.0292 11.6230 CL 1 COGH -0.1230 + 2 N1 -10.0706 -3.6881 12.7757 N.2 1 COGH -0.7068 + 3 N2 -8.9954 -3.8133 13.6091 N.3 1 COGH 0.8590 + 4 N3 -7.9605 -2.9597 13.3761 N.2 1 COGH -0.7068 + 5 C4 -8.4106 -2.2584 12.3376 C.2 1 COGH 0.4118 + 6 C5 -9.6843 -2.6945 11.9713 C.2 1 COGH 0.1388 + 7 C6 -8.9595 -4.7739 14.6534 C.2 1 COGH -0.0230 + 8 C7 -7.8341 -4.8669 15.4852 C.2 1 COGH -0.1500 + 9 C8 -7.8030 -5.8134 16.5114 C.2 1 COGH -0.1500 + 10 C9 -8.8887 -6.6661 16.7104 C.2 1 COGH -0.1500 + 11 C10 -10.0097 -6.5767 15.8852 C.2 1 COGH -0.1500 + 12 C11 -10.0492 -5.6331 14.8566 C.2 1 COGH -0.1500 + 13 H1 -10.3345 -2.3490 11.1805 H 1 COGH 0.1500 + 14 H2 -6.9762 -4.2113 15.3474 H 1 COGH 0.1500 + 15 H3 -6.9305 -5.8853 17.1563 H 1 COGH 0.1500 + 16 H4 -8.8611 -7.4019 17.5104 H 1 COGH 0.1500 + 17 H5 -10.8545 -7.2428 16.0427 H 1 COGH 0.1500 + 18 H6 -10.9334 -5.5800 14.2242 H 1 COGH 0.1500 +@BOND + 1 1 5 1 + 2 2 3 1 + 3 2 6 2 + 4 3 4 1 + 5 3 7 1 + 6 4 5 2 + 7 5 6 1 + 8 6 13 1 + 9 7 8 2 + 10 7 12 1 + 11 8 9 1 + 12 8 14 1 + 13 9 10 2 + 14 9 15 1 + 15 10 11 1 + 16 10 16 1 + 17 11 12 2 + 18 11 17 1 + 19 12 18 1 +@SUBSTRUCTURE + 1 COGH 1 +@COMMENT +COMMENT 2-PHENYL-4-CHLORO-1,2,3-TRIAZOLE +@MOLECULE +COHKOZ + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.2992 -2.2928 14.0617 S.3 1 UNCH 0.1807 + 2 O9 -10.6583 -4.0781 15.9912 O.3 1 UNCH -0.4300 + 3 N2 -8.1078 -2.1634 12.8931 N.2 1 UNCH -0.5095 + 4 N4 -7.9944 -4.4165 13.6068 N.2 1 UNCH -0.5653 + 5 N7 -5.6033 -3.7707 11.1208 N.1 1 UNCH -0.5571 + 6 N11 -9.4309 -6.0008 15.5360 N.2 1 UNCH -0.8500 + 7 C3 -7.5452 -3.3714 12.8033 C.2 1 UNCH 0.5350 + 8 C5 -8.9751 -3.9464 14.3588 C.2 1 UNCH 0.2931 + 9 C6 -6.4722 -3.5858 11.8714 C.1 1 UNCH 0.5381 + 10 C8 -9.6871 -4.7517 15.3223 C.2 1 UNCH 0.6850 + 11 C10 -11.3924 -4.8369 16.9586 C.3 1 UNCH 0.2800 + 12 H11 -8.6595 -6.2799 14.9115 H 1 UNCH 0.4000 + 13 H101 -12.1328 -4.1731 17.4138 H 1 UNCH 0.0000 + 14 H102 -11.9217 -5.6644 16.4761 H 1 UNCH 0.0000 + 15 H103 -10.7260 -5.2018 17.7463 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 8 1 + 3 2 10 1 + 4 2 11 1 + 5 3 7 2 + 6 4 7 am + 7 4 8 2 + 8 5 9 3 + 9 6 10 2 + 10 6 12 1 + 11 7 9 1 + 12 8 10 1 + 13 11 13 1 + 14 11 14 1 + 15 11 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 3-CYANO-1,2,4-THIADIAZOLE-5-CARBOXIMIDATE +@MOLECULE +COJFIQ + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.8081 -5.5748 13.6429 N.2 1 COJF -0.1790 + 2 C2 -7.6263 -6.0940 14.0128 C.2 1 COJF 0.5210 + 3 N3 -6.7090 -5.4675 14.7809 N.2 1 COJF -0.5790 + 4 C4 -7.1238 -4.2140 15.1317 C.2 1 COJF 0.6190 + 5 C5 -8.3326 -3.6245 14.7774 C.2 1 COJF 0.3090 + 6 C6 -9.2558 -4.3477 13.9913 C.2 1 COJF 0.5020 + 7 N6 -10.4844 -3.9580 13.4726 N.3 1 COJF -0.8382 + 8 N7 -8.2996 -2.3641 15.3687 N.2 1 COJF -0.7000 + 9 C8 -7.1435 -2.1887 16.0331 C.2 1 COJF 0.6500 + 10 N9 -6.4382 -3.3124 15.8866 N.3 1 COJF -0.7000 + 11 C10 -11.6397 -4.7211 13.9795 C.3 1 COJF 0.3691 + 12 C11 -10.7542 -2.5226 13.3282 C.3 1 COJF 0.3691 + 13 H1 -9.4065 -6.1141 13.0153 H 1 COJF 0.4570 + 14 H7 -9.0291 -1.6527 15.3375 H 1 COJF 0.4500 + 15 H8 -6.8453 -1.3027 16.5857 H 1 COJF 0.1500 + 16 H9 -5.5138 -3.4808 16.2811 H 1 COJF 0.4500 + 17 H10 -11.8105 -4.5057 15.0403 H 1 COJF 0.0000 + 18 H11 -12.5443 -4.4548 13.4221 H 1 COJF 0.0000 + 19 H12 -11.4915 -5.7994 13.8580 H 1 COJF 0.0000 + 20 H13 -9.9064 -2.0067 12.8642 H 1 COJF 0.0000 + 21 H14 -11.6201 -2.3695 12.6748 H 1 COJF 0.0000 + 22 H15 -10.9742 -2.0614 14.2968 H 1 COJF 0.0000 + 23 H2 -7.3865 -7.0932 13.6538 H 1 COJF 0.1500 +@BOND + 1 1 13 1 + 2 1 6 2 + 3 1 2 am + 4 2 23 1 + 5 2 3 2 + 6 3 4 1 + 7 4 10 1 + 8 4 5 2 + 9 5 8 1 + 10 5 6 1 + 11 6 7 am + 12 7 12 1 + 13 7 11 1 + 14 8 14 1 + 15 8 9 2 + 16 9 15 1 + 17 9 10 am + 18 10 16 1 + 19 11 19 1 + 20 11 18 1 + 21 11 17 1 + 22 12 22 1 + 23 12 21 1 + 24 12 20 1 +@SUBSTRUCTURE + 1 COJF 1 +@COMMENT +COMMENT N-6-,N-6--DIMETHYLADENINE DIHYDROCHLORIDE +@MOLECULE +COKDEL + 25 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.4142 -2.5749 12.8727 S.2 1 COKD 0.3585 + 2 O1 -8.0402 -2.5799 12.2715 O.2 1 COKD -0.5000 + 3 O2 -9.4315 -3.6972 14.0286 O.3 1 COKD -0.3320 + 4 C1 -10.4886 -3.5430 11.7847 C.3 1 COKD 0.1935 + 5 C2 -8.5569 -3.4558 15.1377 C.3 1 COKD 0.4800 + 6 C3 -9.3302 -2.7803 16.2046 C.1 1 COKD -0.2000 + 7 C4 -9.9596 -2.2226 17.0626 C.1 1 COKD -0.1770 + 8 C5 -7.9479 -4.8170 15.6045 C.3 1 COKD 0.0000 + 9 C6 -7.1461 -5.4355 14.4379 C.3 1 COKD 0.0000 + 10 C7 -6.9829 -4.6075 16.7881 C.3 1 COKD 0.0000 + 11 C8 -9.0389 -5.8266 16.0148 C.3 1 COKD 0.0000 + 12 H2 -7.7237 -2.7996 14.8469 H 1 COKD 0.0000 + 13 H4 -10.5180 -1.7284 17.8241 H 1 COKD 0.1770 + 14 H11 -11.4662 -3.6650 12.2571 H 1 COKD 0.0000 + 15 H12 -10.6051 -3.0061 10.8405 H 1 COKD 0.0000 + 16 H13 -10.0394 -4.5211 11.5956 H 1 COKD 0.0000 + 17 H61 -6.6619 -6.3706 14.7421 H 1 COKD 0.0000 + 18 H62 -7.7894 -5.6648 13.5813 H 1 COKD 0.0000 + 19 H63 -6.3610 -4.7525 14.0943 H 1 COKD 0.0000 + 20 H71 -7.5046 -4.2422 17.6789 H 1 COKD 0.0000 + 21 H72 -6.4890 -5.5461 17.0649 H 1 COKD 0.0000 + 22 H73 -6.2002 -3.8836 16.5351 H 1 COKD 0.0000 + 23 H81 -9.7368 -6.0217 15.1933 H 1 COKD 0.0000 + 24 H82 -8.5954 -6.7870 16.3026 H 1 COKD 0.0000 + 25 H83 -9.6197 -5.4689 16.8714 H 1 COKD 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 4 1 + 4 3 5 1 + 5 4 14 1 + 6 4 15 1 + 7 4 16 1 + 8 5 6 1 + 9 5 8 1 + 10 5 12 1 + 11 6 7 3 + 12 7 13 1 + 13 8 9 1 + 14 8 10 1 + 15 8 11 1 + 16 9 17 1 + 17 9 18 1 + 18 9 19 1 + 19 10 20 1 + 20 10 21 1 + 21 10 22 1 + 22 11 23 1 + 23 11 24 1 + 24 11 25 1 +@SUBSTRUCTURE + 1 COKD 1 +@COMMENT +COMMENT (3RS)-4,4-DIMETHYL-PENT-1-YN-3-YL-(SR)-METHANESULFINATE +@MOLECULE +COKROJ + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H1 -11.7755 -6.9576 14.0971 H 1 CHGB 0.1500 + 2 H2 -10.0564 -7.5763 10.7657 H 1 CHGB 0.0000 + 3 H3 -9.5396 -8.9517 11.7613 H 1 CHGB 0.0000 + 4 H4 -11.2448 -8.4728 11.7259 H 1 CHGB 0.0000 + 5 H5 -6.8322 -3.7730 15.0166 H 1 CHGB 0.1500 + 6 H6 -6.1318 -1.8760 13.5944 H 1 CHGB 0.1500 + 7 H7 -9.9046 0.0674 14.3418 H 1 CHGB 0.1500 + 8 H8 -10.5932 -1.8368 15.7655 H 1 CHGB 0.1500 + 9 H9 -6.5644 0.4208 12.9832 H 1 CHGB 0.4000 + 10 H10 -8.0357 1.1907 13.2876 H 1 CHGB 0.4000 + 11 O1 -8.7343 -6.6509 12.9391 O.3 1 CHGB -0.0191 + 12 N1 -8.6709 -5.8276 14.0458 N.2 1 CHGB -0.4097 + 13 C1 -9.8803 -5.8711 14.6169 C.2 1 CHGB -0.0172 + 14 C2 -10.7441 -6.7224 13.8853 C.2 1 CHGB -0.1500 + 15 C3 -9.9786 -7.1860 12.8464 C.2 1 CHGB -0.0400 + 16 C4 -10.2180 -8.0942 11.7161 C.3 1 CHGB 0.1800 + 17 N2 -10.2726 -5.1939 15.7479 N.3 1 CHGB -0.2341 + 18 C5 -8.7456 -2.9055 15.4818 C.2 1 CHGB -0.0090 + 19 C6 -7.4876 -2.9166 14.8831 C.2 1 CHGB -0.1500 + 20 C7 -7.0973 -1.8359 14.0881 C.2 1 CHGB -0.1500 + 21 C8 -7.9310 -0.7216 13.9383 C.2 1 CHGB 0.1000 + 22 C9 -9.2112 -0.7513 14.5038 C.2 1 CHGB -0.1500 + 23 C10 -9.6138 -1.8288 15.2969 C.2 1 CHGB -0.1500 + 24 N3 -7.5705 0.3178 13.0638 N.3 1 CHGB -0.9000 + 25 O2 -9.9077 -3.5366 17.6514 O.2 1 CHGB -0.6500 + 26 O3 -7.9901 -4.8830 16.9665 O.2 1 CHGB -0.6500 + 27 S1 -9.2582 -4.2738 16.5615 S.1 1 CHGB 0.8491 +@BOND + 1 1 14 1 + 2 2 16 1 + 3 3 16 1 + 4 4 16 1 + 5 5 19 1 + 6 6 20 1 + 7 7 22 1 + 8 8 23 1 + 9 9 24 1 + 10 10 24 1 + 11 11 15 1 + 12 11 12 1 + 13 12 13 2 + 14 13 17 am + 15 13 14 1 + 16 14 15 2 + 17 15 16 1 + 18 17 27 1 + 19 18 27 1 + 20 18 23 1 + 21 18 19 2 + 22 19 20 1 + 23 20 21 2 + 24 21 24 1 + 25 21 22 1 + 26 22 23 2 + 27 25 27 2 + 28 26 27 2 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM 4-AMINO-N-(5-METHYL-3-ISOXAZOLYL)-BENZENESULFONAMIDE +@MOLECULE +COLZUY + 44 46 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -10.1443 -5.9215 13.9723 P 1 COLZ 0.0551 + 2 C1 -7.4708 -6.3066 15.5891 C.3 1 COLZ 0.0000 + 3 C2 -7.4608 -6.3720 14.0562 C.3 1 COLZ 0.2700 + 4 N1 -8.5694 -5.6359 13.4687 N.3 1 COLZ -0.6510 + 5 C3 -8.2971 -4.9471 12.2099 C.3 1 COLZ 0.2700 + 6 C4 -7.3664 -3.6979 12.2907 C.3 1 COLZ 0.2700 + 7 N2 -9.9927 -5.9932 15.6572 N.3 1 COLZ -0.6510 + 8 C5 -8.8219 -6.6832 16.2085 C.3 1 COLZ 0.2700 + 9 C6 -10.3750 -7.6834 13.5363 C.3 1 COLZ 0.1669 + 10 N2B -7.7757 -2.4998 13.0527 N.3 1 COLZ -0.6510 + 11 C4B -10.4020 -4.7952 16.4191 C.3 1 COLZ 0.2700 + 12 P1B -7.6241 -2.5715 14.7376 P 1 COLZ 0.0551 + 13 C5B -8.9465 -1.8098 12.5014 C.3 1 COLZ 0.2700 + 14 C3B -9.4713 -3.5459 16.5000 C.3 1 COLZ 0.2700 + 15 N1B -9.1990 -2.8571 15.2412 N.3 1 COLZ -0.6510 + 16 C6B -7.3934 -0.8097 15.1736 C.3 1 COLZ 0.1669 + 17 C1B -10.2976 -2.1864 13.1208 C.3 1 COLZ 0.0000 + 18 C2B -10.3076 -2.1210 14.6537 C.3 1 COLZ 0.2700 + 19 H1 -6.7033 -6.9890 15.9748 H 1 COLZ 0.0000 + 20 H2 -7.1744 -5.3082 15.9199 H 1 COLZ 0.0000 + 21 H3 -6.4939 -5.9797 13.7202 H 1 COLZ 0.0000 + 22 H4 -7.4811 -7.4187 13.7277 H 1 COLZ 0.0000 + 23 H5 -7.8412 -5.6635 11.5124 H 1 COLZ 0.0000 + 24 H6 -9.2249 -4.6379 11.7116 H 1 COLZ 0.0000 + 25 H7 -6.3723 -4.0174 12.6328 H 1 COLZ 0.0000 + 26 H8 -7.1849 -3.3758 11.2553 H 1 COLZ 0.0000 + 27 H9 -8.9655 -7.7647 16.0832 H 1 COLZ 0.0000 + 28 H10 -8.7660 -6.5437 17.2960 H 1 COLZ 0.0000 + 29 H11 -9.6048 -8.3476 13.9362 H 1 COLZ 0.0000 + 30 H12 -11.3416 -8.0375 13.9085 H 1 COLZ 0.0000 + 31 H13 -10.3806 -7.8022 12.4480 H 1 COLZ 0.0000 + 32 H14 -11.3961 -4.4757 16.0770 H 1 COLZ 0.0000 + 33 H15 -10.5835 -5.1173 17.4545 H 1 COLZ 0.0000 + 34 H16 -8.8029 -0.7283 12.6267 H 1 COLZ 0.0000 + 35 H17 -9.0024 -1.9493 11.4139 H 1 COLZ 0.0000 + 36 H18 -9.9272 -2.8295 17.1974 H 1 COLZ 0.0000 + 37 H19 -8.5435 -3.8551 16.9983 H 1 COLZ 0.0000 + 38 H20 -8.1635 -0.1454 14.7737 H 1 COLZ 0.0000 + 39 H21 -7.3878 -0.6908 16.2618 H 1 COLZ 0.0000 + 40 H22 -6.4268 -0.4555 14.8014 H 1 COLZ 0.0000 + 41 H23 -11.0650 -1.5040 12.7351 H 1 COLZ 0.0000 + 42 H24 -10.5940 -3.1848 12.7900 H 1 COLZ 0.0000 + 43 H25 -11.2745 -2.5134 14.9897 H 1 COLZ 0.0000 + 44 H26 -10.2873 -1.0743 14.9821 H 1 COLZ 0.0000 +@BOND + 1 1 9 1 + 2 1 7 1 + 3 1 4 1 + 4 2 20 1 + 5 2 19 1 + 6 2 8 1 + 7 2 3 1 + 8 3 22 1 + 9 3 21 1 + 10 3 4 1 + 11 4 5 1 + 12 5 24 1 + 13 5 23 1 + 14 5 6 1 + 15 6 26 1 + 16 6 25 1 + 17 6 10 1 + 18 7 11 1 + 19 7 8 1 + 20 8 28 1 + 21 8 27 1 + 22 9 31 1 + 23 9 30 1 + 24 9 29 1 + 25 10 13 1 + 26 10 12 1 + 27 11 33 1 + 28 11 32 1 + 29 11 14 1 + 30 12 16 1 + 31 12 15 1 + 32 13 35 1 + 33 13 34 1 + 34 13 17 1 + 35 14 37 1 + 36 14 36 1 + 37 14 15 1 + 38 15 18 1 + 39 16 40 1 + 40 16 39 1 + 41 16 38 1 + 42 17 42 1 + 43 17 41 1 + 44 17 18 1 + 45 18 44 1 + 46 18 43 1 +@SUBSTRUCTURE + 1 COLZ 1 +@COMMENT +COMMENT N-1-,N-11-.N-4-,N-8--BIS(MU-2--METHYLPHOSPHINO)-1,4,8,11-TE +@MOLECULE +COMDIR + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -6.0409 -6.1219 12.2892 BR 1 UNCH -0.1100 + 2 BR2 -8.6569 -1.8387 15.5228 BR 1 UNCH -0.2300 + 3 O1 -9.5091 -2.3850 12.4427 O.2 1 UNCH -0.5700 + 4 O2 -7.5248 -6.7012 14.9028 O.2 1 UNCH -0.5700 + 5 C1 -8.9646 -3.2321 13.1503 C.2 1 UNCH 0.4946 + 6 C2 -7.8898 -4.0407 12.5510 C.2 1 UNCH -0.1356 + 7 C3 -7.3788 -5.1245 13.1394 C.2 1 UNCH 0.1244 + 8 C4 -7.8684 -5.6031 14.4632 C.2 1 UNCH 0.4946 + 9 C5 -8.7664 -4.7135 15.2900 C.3 1 UNCH 0.0610 + 10 C6 -9.3283 -3.4481 14.6041 C.3 1 UNCH 0.2910 + 11 C7 -10.8585 -3.5792 14.8192 C.3 1 UNCH 0.1382 + 12 C8 -11.3516 -4.7339 13.9676 C.2 1 UNCH -0.2882 + 13 C9 -10.8542 -5.8586 14.5015 C.2 1 UNCH -0.2882 + 14 C10 -10.0570 -5.4610 15.7248 C.3 1 UNCH 0.1382 + 15 C11 -10.9266 -4.2851 16.1828 C.3 1 UNCH 0.0000 + 16 H2 -7.5583 -3.7103 11.5717 H 1 UNCH 0.1500 + 17 H7 -11.4586 -2.6707 14.7439 H 1 UNCH 0.0000 + 18 H10 -9.9290 -6.2539 16.4634 H 1 UNCH 0.0000 + 19 H5 -8.1923 -4.4555 16.1903 H 1 UNCH 0.0000 + 20 H8 -11.9548 -4.6467 13.0746 H 1 UNCH 0.1500 + 21 H9 -10.9812 -6.8667 14.1318 H 1 UNCH 0.1500 + 22 H11 -11.9444 -4.5796 16.4714 H 1 UNCH 0.0000 + 23 H11_ -10.4845 -3.7144 17.0059 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 2 10 1 + 3 3 5 2 + 4 4 8 2 + 5 5 6 1 + 6 5 10 1 + 7 6 7 2 + 8 6 16 1 + 9 7 8 1 + 10 8 9 1 + 11 9 10 1 + 12 9 14 1 + 13 9 19 1 + 14 10 11 1 + 15 11 12 1 + 16 11 15 1 + 17 11 17 1 + 18 12 13 2 + 19 12 20 1 + 20 13 14 1 + 21 13 21 1 + 22 14 15 1 + 23 14 18 1 + 24 15 22 1 + 25 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,5-DIBROMOTRICYCLO(6.2.1.0-2,7-)UNDECA-4,9-DIENE-3,6-DIONE +@MOLECULE +COMKAQ + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.3319 -4.6906 13.6369 C.2 1 UNCH 0.6670 + 2 O1 -11.3782 -5.1670 14.0503 O.2 1 UNCH -0.5700 + 3 O2 -10.2486 -3.4430 13.0837 O.3 1 UNCH -0.4300 + 4 C2 -8.9346 -3.2196 12.5427 C.3 1 UNCH 0.2800 + 5 C3 -7.9734 -4.2387 13.1302 C.3 1 UNCH 0.0000 + 6 C4 -7.5239 -4.0323 14.5960 C.3 1 UNCH 0.0000 + 7 C5 -8.0954 -5.4316 14.9192 C.3 1 UNCH 0.1810 + 8 C6 -8.9317 -5.3308 13.6268 C.3 1 UNCH 0.0530 + 9 C7 -8.8105 -5.5422 16.1697 C.1 1 UNCH 0.3761 + 10 N1 -9.3517 -5.6261 17.1916 N.1 1 UNCH -0.5571 + 11 H1 -9.0035 -3.3229 11.4545 H 1 UNCH 0.0000 + 12 H2 -8.6267 -2.1947 12.7716 H 1 UNCH 0.0000 + 13 H3 -7.1775 -4.5826 12.4619 H 1 UNCH 0.0000 + 14 H4 -6.4432 -3.9321 14.7367 H 1 UNCH 0.0000 + 15 H5 -8.0185 -3.1973 15.1074 H 1 UNCH 0.0000 + 16 H6 -7.3232 -6.2091 14.8292 H 1 UNCH 0.0000 + 17 H7 -8.9171 -6.2461 13.0229 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 8 1 + 4 3 4 1 + 5 4 5 1 + 6 4 11 1 + 7 4 12 1 + 8 5 6 1 + 9 5 8 1 + 10 5 13 1 + 11 6 7 1 + 12 6 14 1 + 13 6 15 1 + 14 7 8 1 + 15 7 9 1 + 16 7 16 1 + 17 8 17 1 + 18 9 10 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1SR,5SR,6SR)-4-OXO-3-OXABICYCLO(3.2.0)HEPTANE-6-CARBONITRI +@MOLECULE +COMWOQ + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -10.0346 -5.7925 13.8515 N.3 1 COMW 0.0332 + 2 C2 -10.8888 -5.1048 14.6725 C.2 1 COMW -0.3016 + 3 C3 -10.2710 -3.9263 15.0508 C.2 1 COMW -0.0860 + 4 C4 -7.9037 -3.0036 14.4163 C.2 1 COMW -0.1500 + 5 C5 -6.7548 -3.3024 13.6752 C.2 1 COMW -0.1500 + 6 C6 -6.6691 -4.4857 12.9465 C.2 1 COMW -0.1500 + 7 C7 -7.7242 -5.4025 12.9360 C.2 1 COMW -0.1500 + 8 C8 -8.8661 -5.0877 13.6829 C.2 1 COMW -0.1516 + 9 C9 -8.9844 -3.9105 14.4242 C.2 1 COMW 0.0000 + 10 C10 -10.8629 -2.9281 15.9224 C.2 1 COMW 0.5960 + 11 O11 -10.3120 -1.8834 16.2562 O.2 1 COMW -0.5700 + 12 H12 -10.2263 -6.6893 13.4259 H 1 COMW 0.2700 + 13 H13 -11.8607 -5.5138 14.9155 H 1 COMW 0.1500 + 14 H14 -7.9614 -2.0770 14.9823 H 1 COMW 0.1500 + 15 H15 -5.9239 -2.6013 13.6713 H 1 COMW 0.1500 + 16 H16 -5.7678 -4.7001 12.3767 H 1 COMW 0.1500 + 17 H17 -7.6526 -6.3233 12.3665 H 1 COMW 0.1500 + 18 H18 -11.8772 -3.1647 16.2863 H 1 COMW 0.0600 +@BOND + 1 1 12 1 + 2 1 8 1 + 3 1 2 1 + 4 2 13 1 + 5 2 3 2 + 6 3 10 1 + 7 3 9 1 + 8 4 14 1 + 9 4 9 1 + 10 4 5 2 + 11 5 15 1 + 12 5 6 1 + 13 6 16 1 + 14 6 7 2 + 15 7 17 1 + 16 7 8 1 + 17 8 9 2 + 18 10 18 1 + 19 10 11 2 +@SUBSTRUCTURE + 1 COMW 1 +@COMMENT +COMMENT 1H-INDOLE-3-CARBOXALDEHYDE +@MOLECULE +COMWUW + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.8331 -2.3825 13.3404 N.3 1 COMW 0.0332 + 2 N11 -9.0178 -5.0036 16.8355 N.3 1 COMW -0.8100 + 3 C2 -8.2891 -2.3282 14.6296 C.2 1 COMW -0.3016 + 4 C3 -8.9785 -3.4975 14.8993 C.2 1 COMW -0.1810 + 5 C4 -9.4391 -5.5512 13.3413 C.2 1 COMW -0.1500 + 6 C5 -9.2163 -6.0436 12.0504 C.2 1 COMW -0.1500 + 7 C6 -8.5004 -5.2945 11.1200 C.2 1 COMW -0.1500 + 8 C7 -7.9852 -4.0375 11.4507 C.2 1 COMW -0.1500 + 9 C8 -8.2175 -3.5613 12.7469 C.2 1 COMW -0.1516 + 10 C9 -8.9338 -4.2847 13.7008 C.2 1 COMW 0.0000 + 11 C10 -9.6640 -3.8507 16.1856 C.3 1 COMW 0.4510 + 12 C12 -9.8527 -5.4842 17.9367 C.3 1 COMW 0.2700 + 13 C13 -7.6825 -4.6676 17.3346 C.3 1 COMW 0.2700 + 14 H14 -7.2948 -1.6616 12.8812 H 1 COMW 0.2700 + 15 H15 -8.0861 -1.4652 15.2491 H 1 COMW 0.1500 + 16 H16 -9.9881 -6.1444 14.0669 H 1 COMW 0.1500 + 17 H17 -9.6034 -7.0216 11.7768 H 1 COMW 0.1500 + 18 H18 -8.3359 -5.6941 10.1221 H 1 COMW 0.1500 + 19 H19 -7.4249 -3.4582 10.7246 H 1 COMW 0.1500 + 20 H20 -10.7060 -4.0962 15.9402 H 1 COMW 0.0000 + 21 H21 -9.6936 -2.9827 16.8574 H 1 COMW 0.0000 + 22 H22 -7.0031 -4.4026 16.5180 H 1 COMW 0.0000 + 23 H23 -7.2312 -5.5343 17.8316 H 1 COMW 0.0000 + 24 H24 -7.7052 -3.8381 18.0508 H 1 COMW 0.0000 + 25 H25 -9.4043 -6.3684 18.4036 H 1 COMW 0.0000 + 26 H26 -10.8371 -5.7940 17.5682 H 1 COMW 0.0000 + 27 H27 -9.9977 -4.7214 18.7104 H 1 COMW 0.0000 +@BOND + 1 1 14 1 + 2 1 9 1 + 3 1 3 1 + 4 2 13 1 + 5 2 12 1 + 6 2 11 1 + 7 3 15 1 + 8 3 4 2 + 9 4 11 1 + 10 4 10 1 + 11 5 16 1 + 12 5 10 1 + 13 5 6 2 + 14 6 17 1 + 15 6 7 1 + 16 7 18 1 + 17 7 8 2 + 18 8 19 1 + 19 8 9 1 + 20 9 10 2 + 21 11 21 1 + 22 11 20 1 + 23 12 27 1 + 24 12 26 1 + 25 12 25 1 + 26 13 24 1 + 27 13 23 1 + 28 13 22 1 +@SUBSTRUCTURE + 1 COMW 1 +@COMMENT +COMMENT N,N-DIMETHYL-1H-INDOLE-3-METHANAMINE GRAMINE +@MOLECULE +CONBAI + 36 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.1263 -5.5427 13.4816 N.3 1 UNCH -0.5851 + 2 C1 -9.3048 -5.1890 12.0779 C.3 1 UNCH 0.3001 + 3 C2 -10.2758 -5.8984 14.1778 C.2 1 UNCH 0.6900 + 4 O2 -11.3852 -5.7905 13.6544 O.2 1 UNCH -0.5700 + 5 N3 -10.1074 -6.3797 15.4740 N.3 1 UNCH -0.4201 + 6 C3 -11.3093 -6.7935 16.1817 C.3 1 UNCH 0.3001 + 7 C4 -8.8949 -6.5978 16.1477 C.2 1 UNCH 0.5770 + 8 O4 -8.8596 -7.2199 17.2185 O.2 1 UNCH -0.5700 + 9 C5 -7.6225 -6.0469 15.4698 C.3 1 UNCH 0.3510 + 10 F5 -6.5841 -6.8843 15.7509 F 1 UNCH -0.2980 + 11 C6 -7.7441 -5.7516 13.9642 C.3 1 UNCH 0.2250 + 12 N1_ -7.2131 -3.2582 13.4985 N.3 1 UNCH -0.5851 + 13 C1_ -6.4012 -2.9135 12.3393 C.3 1 UNCH 0.3001 + 14 C2_ -8.1407 -2.3229 13.9354 C.2 1 UNCH 0.6900 + 15 O2_ -8.3195 -1.2705 13.3219 O.2 1 UNCH -0.5700 + 16 N3_ -8.8486 -2.6362 15.0931 N.3 1 UNCH -0.4201 + 17 C3_ -9.9281 -1.7340 15.4597 C.3 1 UNCH 0.3001 + 18 C4_ -8.5031 -3.6119 16.0378 C.2 1 UNCH 0.5770 + 19 O4_ -9.1339 -3.7327 17.0970 O.2 1 UNCH -0.5700 + 20 C5_ -7.3052 -4.5290 15.6877 C.3 1 UNCH 0.3510 + 21 F5_ -6.3029 -4.2661 16.5680 F 1 UNCH -0.2980 + 22 C6_ -6.8693 -4.4961 14.2193 C.3 1 UNCH 0.2250 + 23 H11 -9.8925 -4.2683 12.0151 H 1 UNCH 0.0000 + 24 H12 -9.8445 -5.9929 11.5672 H 1 UNCH 0.0000 + 25 H13 -8.3388 -5.0445 11.5883 H 1 UNCH 0.0000 + 26 H31 -11.4450 -7.8686 16.0266 H 1 UNCH 0.0000 + 27 H32 -12.1967 -6.2672 15.8188 H 1 UNCH 0.0000 + 28 H33 -11.2119 -6.6005 17.2548 H 1 UNCH 0.0000 + 29 H6 -7.2418 -6.5033 13.3422 H 1 UNCH 0.0000 + 30 H14 -5.5965 -2.2480 12.6647 H 1 UNCH 0.0000 + 31 H15 -7.0071 -2.4036 11.5845 H 1 UNCH 0.0000 + 32 H16 -5.9773 -3.8199 11.8978 H 1 UNCH 0.0000 + 33 H34 -10.3728 -1.2652 14.5769 H 1 UNCH 0.0000 + 34 H35 -9.5204 -0.9551 16.1119 H 1 UNCH 0.0000 + 35 H36 -10.7155 -2.2705 15.9979 H 1 UNCH 0.0000 + 36 H6_ -5.7955 -4.7142 14.1218 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 am + 3 1 11 1 + 4 2 23 1 + 5 2 24 1 + 6 2 25 1 + 7 3 4 2 + 8 3 5 am + 9 5 6 1 + 10 5 7 am + 11 6 26 1 + 12 6 27 1 + 13 6 28 1 + 14 7 8 2 + 15 7 9 1 + 16 9 10 1 + 17 9 11 1 + 18 9 20 1 + 19 11 22 1 + 20 11 29 1 + 21 12 13 1 + 22 12 14 am + 23 12 22 1 + 24 13 30 1 + 25 13 31 1 + 26 13 32 1 + 27 14 15 2 + 28 14 16 am + 29 16 17 1 + 30 16 18 am + 31 17 33 1 + 32 17 34 1 + 33 17 35 1 + 34 18 19 2 + 35 18 20 1 + 36 20 21 1 + 37 20 22 1 + 38 22 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4A,4B-DIFLUORO-4A,4B,8A,8B-TETRAHYDRO-1,3,6,8-TETRAMETHYLCY +@MOLECULE +CONFAM + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.6283 -2.7626 15.5257 S.2 1 CONF -0.3800 + 2 C1 -8.3319 -4.1387 14.9376 C.2 1 CONF 0.5900 + 3 C2 -9.6475 -3.0339 13.2093 C.3 1 CONF 0.2800 + 4 O1 -9.2148 -4.2103 13.9168 O.3 1 CONF -0.4300 + 5 N1 -8.0779 -5.3666 15.4448 N.3 1 CONF -0.8000 + 6 H1 -8.8001 -2.5485 12.7164 H 1 CONF 0.0000 + 7 H2 -10.1676 -2.3487 13.8851 H 1 CONF 0.0000 + 8 H3 -10.3535 -3.3544 12.4379 H 1 CONF 0.0000 + 9 H4 -8.5331 -6.1775 15.0507 H 1 CONF 0.3700 + 10 H5 -7.4349 -5.4778 16.2162 H 1 CONF 0.3700 +@BOND + 1 1 2 2 + 2 2 5 1 + 3 2 4 1 + 4 3 8 1 + 5 3 7 1 + 6 3 6 1 + 7 3 4 1 + 8 5 10 1 + 9 5 9 1 +@SUBSTRUCTURE + 1 CONF 1 +@COMMENT +COMMENT O-METHYL-THIOCARBAMATE (AT -150 DEG.C) +@MOLECULE +CONLIA + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.6643 -3.7868 15.2998 N.3 1 CONL -1.0120 + 2 N2 -8.4570 -4.9679 13.5524 N.3 1 CONL -1.0120 + 3 C1 -10.6370 -4.7005 14.5537 C.3 1 CONL 0.5030 + 4 C2 -9.7394 -5.7376 13.8943 C.3 1 CONL 0.5030 + 5 C3 -8.4039 -3.7782 14.4792 C.3 1 CONL 1.0060 + 6 C5 -9.3905 -4.3145 16.7097 C.3 1 CONL 0.5030 + 7 C6 -10.2427 -2.3800 15.4333 C.3 1 CONL 0.5030 + 8 C7 -8.4896 -4.5028 12.0933 C.3 1 CONL 0.5030 + 9 C8 -7.2305 -5.8587 13.7304 C.3 1 CONL 0.5030 + 10 H1 -11.1507 -4.0971 13.7970 H 1 CONL 0.0000 + 11 H2 -11.3645 -5.1217 15.2537 H 1 CONL 0.0000 + 12 H3 -9.4782 -6.5322 14.6016 H 1 CONL 0.0000 + 13 H4 -10.1655 -6.1773 12.9875 H 1 CONL 0.0000 + 14 H5 -8.3611 -2.8584 13.8848 H 1 CONL 0.0000 + 15 H6 -7.5292 -3.8416 15.1366 H 1 CONL 0.0000 + 16 H9 -10.3377 -4.3431 17.2563 H 1 CONL 0.0000 + 17 H10 -8.6852 -3.6371 17.2003 H 1 CONL 0.0000 + 18 H11 -8.9638 -5.3181 16.6317 H 1 CONL 0.0000 + 19 H12 -9.5073 -1.7538 15.9469 H 1 CONL 0.0000 + 20 H13 -11.1704 -2.4448 16.0092 H 1 CONL 0.0000 + 21 H14 -10.4434 -1.9889 14.4313 H 1 CONL 0.0000 + 22 H15 -9.3764 -3.8785 11.9498 H 1 CONL 0.0000 + 23 H16 -8.5362 -5.3871 11.4510 H 1 CONL 0.0000 + 24 H17 -7.5785 -3.9307 11.8940 H 1 CONL 0.0000 + 25 H18 -7.1852 -6.1807 14.7750 H 1 CONL 0.0000 + 26 H19 -6.3413 -5.2762 13.4718 H 1 CONL 0.0000 + 27 H20 -7.3356 -6.7229 13.0682 H 1 CONL 0.0000 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 4 1 + 6 2 5 1 + 7 2 8 1 + 8 2 9 1 + 9 3 4 1 + 10 3 10 1 + 11 3 11 1 + 12 4 12 1 + 13 4 13 1 + 14 5 14 1 + 15 5 15 1 + 16 6 16 1 + 17 6 17 1 + 18 6 18 1 + 19 7 19 1 + 20 7 20 1 + 21 7 21 1 + 22 8 22 1 + 23 8 23 1 + 24 8 24 1 + 25 9 25 1 + 26 9 26 1 + 27 9 27 1 +@SUBSTRUCTURE + 1 CONL 1 +@COMMENT +COMMENT 1,1,3,3-TETRAMETHYLIMIDAZOLIDINIUM DI-IODIDE METHYLENE DICH +@MOLECULE +CORDOC + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.5146 -2.8636 12.6363 S.1 1 CORD 1.0896 + 2 CL1 -7.4354 -0.8477 13.0733 CL 1 CORD -0.2900 + 3 C1 -9.3762 -2.1504 11.0111 C.3 1 CORD 0.1052 + 4 C2 -7.9674 -2.5082 13.4631 C.3 1 CORD 0.4562 + 5 C3 -8.1279 -2.6723 14.9598 C.2 1 CORD 0.4228 + 6 C4 -8.4391 -4.0170 15.5250 C.2 1 CORD 0.0862 + 7 C5 -7.9836 -5.2039 14.9405 C.2 1 CORD -0.1500 + 8 C6 -8.2969 -6.4340 15.5258 C.2 1 CORD -0.1500 + 9 C7 -9.0523 -6.4835 16.6967 C.2 1 CORD -0.1500 + 10 C8 -9.4948 -5.3039 17.2910 C.2 1 CORD -0.1500 + 11 C9 -9.1861 -4.0734 16.7100 C.2 1 CORD -0.1500 + 12 O1 -9.5731 -4.3011 12.4247 O.2 1 CORD -0.6500 + 13 O2 -10.6051 -2.1862 13.3115 O.2 1 CORD -0.6500 + 14 O3 -7.9792 -1.7511 15.7649 O.2 1 CORD -0.5700 + 15 H11 -9.4206 -1.0628 11.0777 H 1 CORD 0.0000 + 16 H12 -10.2215 -2.5075 10.4178 H 1 CORD 0.0000 + 17 H13 -8.4424 -2.4848 10.5552 H 1 CORD 0.0000 + 18 H21 -7.1970 -3.1765 13.0740 H 1 CORD 0.0000 + 19 H51 -7.3841 -5.2114 14.0360 H 1 CORD 0.1500 + 20 H61 -7.9527 -7.3579 15.0664 H 1 CORD 0.1500 + 21 H71 -9.2958 -7.4429 17.1471 H 1 CORD 0.1500 + 22 H81 -10.0811 -5.3402 18.2060 H 1 CORD 0.1500 + 23 H91 -9.5359 -3.1574 17.1840 H 1 CORD 0.1500 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 12 2 + 4 1 13 2 + 5 2 4 1 + 6 3 15 1 + 7 3 16 1 + 8 3 17 1 + 9 4 5 1 + 10 4 18 1 + 11 5 6 1 + 12 5 14 2 + 13 6 7 2 + 14 6 11 1 + 15 7 8 1 + 16 7 19 1 + 17 8 9 2 + 18 8 20 1 + 19 9 10 1 + 20 9 21 1 + 21 10 11 2 + 22 10 22 1 + 23 11 23 1 +@SUBSTRUCTURE + 1 CORD 1 +@COMMENT +COMMENT 2-CHLORO-2-METHYLSULFONYL-1-PHENYLETHANONE +@MOLECULE +CORWUB10 + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S13 -9.0005 -2.6310 13.2990 S.2 1 CORW -0.7500 + 2 S23 -11.0948 -4.1948 14.7416 S.3 1 CORW -0.7500 + 3 C13 -9.4865 -3.9382 14.2560 C.2 1 CORW 0.7960 + 4 N13 -8.6773 -4.8833 14.7194 N.3 1 CORW -0.7260 + 5 C23 -7.3374 -4.9633 14.5084 C.2 1 CORW 0.5700 + 6 O13 -6.6536 -5.8732 14.9734 O.2 1 CORW -0.5700 + 7 H13 -9.0556 -5.6277 15.2844 H 1 CORW 0.3700 + 8 H23 -6.8835 -4.1714 13.8972 H 1 CORW 0.0600 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 7 1 + 5 4 5 am + 6 5 8 1 + 7 5 6 2 +@SUBSTRUCTURE + 1 CORW 1 +@COMMENT +COMMENT POTASSIUM N-FORMYL-DITHIOCARBAMATE +@MOLECULE +COSFAR + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.6779 -6.1310 12.8376 S.3 1 UNCH -0.2425 + 2 O1 -5.4159 -4.9290 13.4900 O.2 1 UNCH -0.5700 + 3 N1 -7.4076 -4.0009 14.2955 N.3 1 UNCH -0.4771 + 4 C1 -10.4469 -5.7531 13.3236 C.2 1 UNCH -0.1500 + 5 C2 -11.4490 -4.9945 13.9315 C.2 1 UNCH -0.1500 + 6 C3 -11.1211 -3.8623 14.6916 C.2 1 UNCH -0.1500 + 7 C4 -9.7873 -3.4740 14.8537 C.2 1 UNCH -0.1500 + 8 C5 -8.7964 -4.2336 14.2460 C.2 1 UNCH 0.1170 + 9 C6 -9.1290 -5.3589 13.4911 C.2 1 UNCH 0.1015 + 10 C7 -6.6322 -4.9156 13.5975 C.2 1 UNCH 0.7710 + 11 C8 -6.8285 -2.8953 15.0168 C.3 1 UNCH 0.3001 + 12 H1 -10.6976 -6.6299 12.7348 H 1 UNCH 0.1500 + 13 H2 -12.4915 -5.2833 13.8151 H 1 UNCH 0.1500 + 14 H3 -11.9135 -3.2813 15.1592 H 1 UNCH 0.1500 + 15 H4 -9.5529 -2.5956 15.4449 H 1 UNCH 0.1500 + 16 H11 -7.2100 -1.9551 14.6074 H 1 UNCH 0.0000 + 17 H22 -7.0914 -2.9753 16.0759 H 1 UNCH 0.0000 + 18 H33 -5.7384 -2.8978 14.9271 H 1 UNCH 0.0000 +@BOND + 1 1 9 1 + 2 1 10 1 + 3 2 10 2 + 4 3 8 1 + 5 3 10 am + 6 3 11 1 + 7 4 5 2 + 8 4 9 1 + 9 4 12 1 + 10 5 6 1 + 11 5 13 1 + 12 6 7 2 + 13 6 14 1 + 14 7 8 1 + 15 7 15 1 + 16 8 9 2 + 17 11 16 1 + 18 11 17 1 + 19 11 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-METHYL-2(3H)-BENZOTHIAZOLONE +@MOLECULE +COSSEI + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -11.3118 -6.0396 15.8364 S.2 1 CHGB -0.7500 + 2 S2 -10.9511 -4.0620 18.0481 S.3 1 CHGB -0.7500 + 3 C1 -10.7381 -4.5712 16.4406 C.2 1 CHGB 0.7960 + 4 N1 -10.0893 -3.6614 15.7160 N.3 1 CHGB -0.9661 + 5 C2 -9.5491 -3.8465 14.3757 C.3 1 CHGB 0.3001 + 6 H1 -9.7532 -2.8390 16.1970 H 1 CHGB 0.3700 + 7 H21 -9.3899 -2.8359 13.9837 H 1 CHGB 0.0000 + 8 H22 -10.3028 -4.3000 13.7226 H 1 CHGB 0.0000 + 9 C2A -8.2189 -4.6209 14.3343 C.3 1 CHGB 0.3001 + 10 N1A -7.6787 -4.8060 12.9940 N.3 1 CHGB -0.9661 + 11 H21A -8.3781 -5.6315 14.7263 H 1 CHGB 0.0000 + 12 H22A -7.4652 -4.1674 14.9874 H 1 CHGB 0.0000 + 13 C1A -7.0299 -3.8962 12.2694 C.2 1 CHGB 0.7960 + 14 H1A -8.0148 -5.6284 12.5130 H 1 CHGB 0.3700 + 15 S1A -6.4562 -2.4278 12.8736 S.2 1 CHGB -0.7500 + 16 S2A -6.8169 -4.4054 10.6619 S.3 1 CHGB -0.7500 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 6 1 + 5 4 5 1 + 6 5 9 1 + 7 5 8 1 + 8 5 7 1 + 9 9 12 1 + 10 9 11 1 + 11 9 10 1 + 12 10 14 1 + 13 10 13 1 + 14 13 16 1 + 15 13 15 2 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT DISODIUM ETHYLENE-BIS(DITHIOCARBAMATE) HEXAHYDRATE +@MOLECULE +COSWIQ + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.6891 -4.1628 14.9279 N.2 1 COSW -0.6210 + 2 C2 -9.9662 -4.1709 15.0839 C.2 1 COSW 0.5856 + 3 C3 -10.9406 -3.0855 15.3261 C.2 1 COSW -0.1356 + 4 C4 -11.1339 -2.0929 14.4443 C.2 1 COSW -0.1500 + 5 C5 -10.4168 -1.9016 13.1918 C.2 1 COSW 0.0650 + 6 C6 -9.0742 -1.8324 13.0979 C.2 1 COSW -0.1500 + 7 C7 -8.1411 -1.9307 14.2033 C.2 1 COSW -0.1500 + 8 C8 -8.0093 -2.9766 15.0417 C.2 1 COSW 0.1710 + 9 O9 -10.6950 -5.3205 15.0468 O.3 1 COSW -0.4300 + 10 C10 -9.9599 -6.5219 14.7902 C.3 1 COSW 0.2800 + 11 C11 -11.2080 -1.6888 12.0180 C.1 1 COSW 0.4921 + 12 N12 -11.8494 -1.5003 11.0692 N.1 1 COSW -0.5571 + 13 C13 -7.0049 -2.9352 16.0988 C.2 1 COSW -0.1500 + 14 C14 -6.7505 -3.9115 16.9821 C.2 1 COSW -0.3000 + 15 H3 -11.5509 -3.1827 16.2158 H 1 COSW 0.1500 + 16 H4 -11.9236 -1.3709 14.6475 H 1 COSW 0.1500 + 17 H6 -8.6079 -1.6238 12.1351 H 1 COSW 0.1500 + 18 H7 -7.4891 -1.0662 14.3119 H 1 COSW 0.1500 + 19 H101 -10.6702 -7.3531 14.7731 H 1 COSW 0.0000 + 20 H102 -9.2339 -6.7045 15.5885 H 1 COSW 0.0000 + 21 H103 -9.4667 -6.4695 13.8146 H 1 COSW 0.0000 + 22 H13 -6.4128 -2.0251 16.1717 H 1 COSW 0.1500 + 23 H1 -7.2938 -4.8512 16.9705 H 1 COSW 0.1500 + 24 H2 -5.9793 -3.7905 17.7352 H 1 COSW 0.1500 +@BOND + 1 1 8 1 + 2 1 2 2 + 3 2 9 1 + 4 2 3 1 + 5 3 15 1 + 6 3 4 2 + 7 4 16 1 + 8 4 5 1 + 9 5 11 1 + 10 5 6 2 + 11 6 17 1 + 12 6 7 1 + 13 7 18 1 + 14 7 8 2 + 15 8 13 1 + 16 9 10 1 + 17 10 21 1 + 18 10 20 1 + 19 10 19 1 + 20 11 12 3 + 21 13 22 1 + 22 13 14 2 + 23 14 24 1 + 24 14 23 1 +@SUBSTRUCTURE + 1 COSW 1 +@COMMENT +COMMENT 5-CYANO-2-METHOXY-8-VINYL-PERHYDROAZOCINE +@MOLECULE +COTMON + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.2413 -4.9357 17.6085 N.3 1 UNCH -0.7290 + 2 N2 -7.4607 -3.5685 17.3342 N.3 1 UNCH -0.4210 + 3 C3 -8.0826 -3.1469 16.1608 C.2 1 UNCH 0.5000 + 4 N4 -8.4273 -4.2111 15.3613 N.3 1 UNCH -0.5470 + 5 C5 -9.0550 -4.3498 14.1119 C.2 1 UNCH 0.1170 + 6 C6 -9.2160 -5.6641 13.6447 C.2 1 UNCH -0.1500 + 7 C7 -9.8271 -5.9247 12.4140 C.2 1 UNCH -0.1500 + 8 C8 -10.2844 -4.8672 11.6368 C.2 1 UNCH 0.1770 + 9 C9 -10.1336 -3.5585 12.0834 C.2 1 UNCH -0.1500 + 10 C10 -9.5205 -3.3021 13.3176 C.2 1 UNCH -0.1500 + 11 CL1 -11.0371 -5.1775 10.1223 CL 1 UNCH -0.1770 + 12 S1 -8.2848 -1.5088 15.9515 S.2 1 UNCH -0.3800 + 13 H11 -7.6912 -5.1558 18.5023 H 1 UNCH 0.3600 + 14 H21 -6.2373 -5.0708 17.7624 H 1 UNCH 0.3600 + 15 H2 -7.1711 -2.8395 17.9870 H 1 UNCH 0.3700 + 16 H4 -8.1397 -5.0688 15.8279 H 1 UNCH 0.3700 + 17 H6 -8.8656 -6.5068 14.2364 H 1 UNCH 0.1500 + 18 H7 -9.9404 -6.9501 12.0736 H 1 UNCH 0.1500 + 19 H9 -10.4888 -2.7263 11.4810 H 1 UNCH 0.1500 + 20 H10 -9.4302 -2.2656 13.6141 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 13 1 + 3 1 14 1 + 4 2 3 1 + 5 2 15 1 + 6 3 4 1 + 7 3 12 2 + 8 4 5 1 + 9 4 16 1 + 10 5 6 2 + 11 5 10 1 + 12 6 7 1 + 13 6 17 1 + 14 7 8 2 + 15 7 18 1 + 16 8 9 1 + 17 8 11 1 + 18 9 10 2 + 19 9 19 1 + 20 10 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-(4-CHLOROPHENYL)-THIOSEMICARBAZIDE (ANTIBACTERIAL ACTIVIT +@MOLECULE +COTPEG + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.1160 0.6908 9.6405 O.2 1 CHGB -0.9000 + 2 O2 0.9445 2.4104 10.6840 O.3 1 CHGB -0.9000 + 3 O3 -0.9089 -0.1660 12.0973 O.2 1 CHGB -0.5700 + 4 O4 0.7478 2.7972 15.8180 O.2 1 CHGB -0.5700 + 5 O5 -0.4010 1.2263 16.8905 O.3 1 CHGB -0.6500 + 6 C1 0.2368 1.3526 10.6658 C.2 1 CHGB 0.9470 + 7 C2 -0.2198 0.8543 12.0435 C.2 1 CHGB 0.3620 + 8 C3 0.2018 1.6443 13.2603 C.3 1 CHGB 0.0610 + 9 C4 -0.3359 1.0116 14.5367 C.3 1 CHGB 0.0610 + 10 C5 0.0736 1.7838 15.7560 C.2 1 CHGB 0.6590 + 11 H5 -0.0624 1.8236 17.5882 H 1 CHGB 0.5000 + 12 H31 1.2966 1.6803 13.2906 H 1 CHGB 0.0000 + 13 H32 -0.1761 2.6679 13.1597 H 1 CHGB 0.0000 + 14 H41 -1.4310 0.9768 14.5055 H 1 CHGB 0.0000 + 15 H42 0.0434 -0.0120 14.6365 H 1 CHGB 0.0000 +@BOND + 1 1 6 2 + 2 2 6 1 + 3 3 7 2 + 4 4 10 2 + 5 5 10 1 + 6 5 11 1 + 7 6 7 1 + 8 7 8 1 + 9 8 9 1 + 10 8 12 1 + 11 8 13 1 + 12 9 10 1 + 13 9 14 1 + 14 9 15 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM HYDROGEN ALPHA-KETOGLUTARATE +@MOLECULE +COTRIM + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O11 -8.0525 -4.7451 8.6962 O.3 1 COTR -0.7500 + 2 O21 -10.6218 -3.5928 14.2765 O.3 1 COTR -0.6330 + 3 N11 -8.3634 -4.5724 9.9114 N.2 1 COTR 0.5710 + 4 N21 -9.4321 -3.9831 14.0195 N.2 1 COTR 0.8680 + 5 N31 -8.5254 -4.2151 14.8847 N.2 1 COTR -0.3860 + 6 C21 -9.6324 -4.1511 10.2675 C.2 1 COTR -0.0605 + 7 C31 -9.9895 -3.9565 11.6028 C.2 1 COTR -0.1500 + 8 C41 -9.0477 -4.1908 12.6112 C.2 1 COTR -0.0280 + 9 C51 -7.7606 -4.6172 12.2645 C.2 1 COTR -0.1500 + 10 C61 -7.4398 -4.8011 10.9179 C.2 1 COTR -0.0605 + 11 C71 -8.8510 -4.0293 16.2372 C.2 1 COTR 0.1790 + 12 C81 -8.6218 -2.7963 16.8569 C.2 1 COTR -0.1500 + 13 C91 -8.9071 -2.6222 18.2128 C.2 1 COTR -0.1500 + 14 C101 -9.4130 -3.6848 18.9600 C.2 1 COTR -0.1500 + 15 C111 -9.6306 -4.9214 18.3544 C.2 1 COTR -0.1500 + 16 C121 -9.3449 -5.0940 16.9985 C.2 1 COTR -0.1500 + 17 H21 -10.2865 -3.9973 9.4226 H 1 COTR 0.1500 + 18 H31 -10.9986 -3.6243 11.8401 H 1 COTR 0.1500 + 19 H51 -6.9980 -4.8109 13.0151 H 1 COTR 0.1500 + 20 H61 -6.4786 -5.1263 10.5487 H 1 COTR 0.1500 + 21 H81 -8.2247 -1.9641 16.2821 H 1 COTR 0.1500 + 22 H91 -8.7356 -1.6581 18.6848 H 1 COTR 0.1500 + 23 H101 -9.6378 -3.5490 20.0152 H 1 COTR 0.1500 + 24 H111 -10.0236 -5.7508 18.9369 H 1 COTR 0.1500 + 25 H121 -9.5142 -6.0618 16.5345 H 1 COTR 0.1500 +@BOND + 1 1 3 1 + 2 2 4 1 + 3 3 10 2 + 4 3 6 1 + 5 4 8 1 + 6 4 5 2 + 7 5 11 1 + 8 6 17 1 + 9 6 7 2 + 10 7 18 1 + 11 7 8 1 + 12 8 9 2 + 13 9 19 1 + 14 9 10 1 + 15 10 20 1 + 16 11 16 1 + 17 11 12 2 + 18 12 21 1 + 19 12 13 1 + 20 13 22 1 + 21 13 14 2 + 22 14 23 1 + 23 14 15 1 + 24 15 24 1 + 25 15 16 2 + 26 16 25 1 +@SUBSTRUCTURE + 1 COTR 1 +@COMMENT +COMMENT 4-(PHENYL-BETA-AZOXY)-PYRIDINE-N-OXIDE +@MOLECULE +COVHUQ + 17 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.9633 -2.6554 19.0299 C.3 1 UNCH 0.2300 + 2 C3 -8.9967 -3.9952 16.8763 C.2 1 UNCH 0.8520 + 3 O3 -10.0207 -4.6417 17.0475 O.2 1 UNCH -0.5700 + 4 S2 -8.5521 -2.6403 17.9049 S.3 1 UNCH -0.3710 + 5 S4 -7.8253 -4.3196 15.6047 S.3 1 UNCH -0.1410 + 6 S5 -8.8523 -5.5898 14.3586 S.3 1 UNCH 0.0000 + 7 H11 -9.8489 -1.8504 19.7608 H 1 UNCH 0.0000 + 8 H12 -10.8954 -2.4934 18.4817 H 1 UNCH 0.0000 + 9 H13 -10.0169 -3.6053 19.5689 H 1 UNCH 0.0000 + 10 S4B -9.9155 -4.3612 13.1013 S.3 1 UNCH -0.1410 + 11 C3B -8.7539 -4.0146 11.8266 C.2 1 UNCH 0.8520 + 12 O3B -7.7115 -4.6328 11.6611 O.2 1 UNCH -0.5700 + 13 S2B -9.2374 -2.6826 10.7858 S.3 1 UNCH -0.3710 + 14 C1B -7.8262 -2.6670 9.6608 C.3 1 UNCH 0.2300 + 15 H11B -7.9638 -1.8723 8.9226 H 1 UNCH 0.0000 + 16 H12B -6.8992 -2.4730 10.2074 H 1 UNCH 0.0000 + 17 H13B -7.7450 -3.6198 9.1304 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 7 1 + 3 1 8 1 + 4 1 9 1 + 5 2 3 2 + 6 2 4 1 + 7 2 5 1 + 8 5 6 1 + 9 6 10 1 + 10 10 11 1 + 11 11 12 2 + 12 11 13 1 + 13 13 14 1 + 14 14 15 1 + 15 14 16 1 + 16 14 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS((METHYLTHIO)-CARBONYL)-TRISULFANE (AT -10 DEG.C) +@MOLECULE +COVMAB + 32 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N2 -8.1665 -3.0748 13.2311 N.2 1 UNCH -0.6960 + 2 C1 -8.2264 -4.0658 14.0432 C.2 1 UNCH 0.3900 + 3 C3 -6.8605 -2.7562 12.6239 C.3 1 UNCH 0.2460 + 4 C4 -6.3575 -3.9247 11.7674 C.3 1 UNCH 0.0000 + 5 C5 -5.8375 -2.3724 13.7001 C.3 1 UNCH 0.0000 + 6 C6 -7.1022 -1.5414 11.7132 C.3 1 UNCH 0.0000 + 7 H11 -7.3865 -4.7151 14.3388 H 1 UNCH 0.0600 + 8 H41 -6.1242 -4.8052 12.3754 H 1 UNCH 0.0000 + 9 H42 -5.4454 -3.6516 11.2250 H 1 UNCH 0.0000 + 10 H43 -7.1110 -4.2265 11.0310 H 1 UNCH 0.0000 + 11 H51 -6.2208 -1.5691 14.3396 H 1 UNCH 0.0000 + 12 H52 -5.5928 -3.2188 14.3505 H 1 UNCH 0.0000 + 13 H53 -4.9010 -2.0267 13.2481 H 1 UNCH 0.0000 + 14 H61 -6.1799 -1.2269 11.2125 H 1 UNCH 0.0000 + 15 H62 -7.4831 -0.6881 12.2865 H 1 UNCH 0.0000 + 16 H63 -7.8454 -1.7694 10.9402 H 1 UNCH 0.0000 + 17 C1B -9.5416 -4.4016 14.6668 C.2 1 UNCH 0.3900 + 18 N2B -9.6015 -5.3926 15.4788 N.2 1 UNCH -0.6960 + 19 H11B -10.3815 -3.7522 14.3712 H 1 UNCH 0.0600 + 20 C3B -10.9075 -5.7112 16.0861 C.3 1 UNCH 0.2460 + 21 C4B -11.4105 -4.5427 16.9426 C.3 1 UNCH 0.0000 + 22 C5B -11.9305 -6.0950 15.0099 C.3 1 UNCH 0.0000 + 23 C6B -10.6658 -6.9260 16.9967 C.3 1 UNCH 0.0000 + 24 H41B -11.6438 -3.6622 16.3346 H 1 UNCH 0.0000 + 25 H42B -12.3226 -4.8158 17.4850 H 1 UNCH 0.0000 + 26 H43B -10.6570 -4.2409 17.6790 H 1 UNCH 0.0000 + 27 H51B -11.5472 -6.8983 14.3704 H 1 UNCH 0.0000 + 28 H52B -12.1752 -5.2486 14.3595 H 1 UNCH 0.0000 + 29 H53B -12.8670 -6.4407 15.4618 H 1 UNCH 0.0000 + 30 H61B -11.5881 -7.2405 17.4975 H 1 UNCH 0.0000 + 31 H62B -10.2849 -7.7793 16.4235 H 1 UNCH 0.0000 + 32 H63B -9.9226 -6.6980 17.7698 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 2 7 1 + 4 2 17 1 + 5 3 4 1 + 6 3 5 1 + 7 3 6 1 + 8 4 8 1 + 9 4 9 1 + 10 4 10 1 + 11 5 11 1 + 12 5 12 1 + 13 5 13 1 + 14 6 14 1 + 15 6 15 1 + 16 6 16 1 + 17 17 18 2 + 18 17 19 1 + 19 18 20 1 + 20 20 21 1 + 21 20 22 1 + 22 20 23 1 + 23 21 24 1 + 24 21 25 1 + 25 21 26 1 + 26 22 27 1 + 27 22 28 1 + 28 22 29 1 + 29 23 30 1 + 30 23 31 1 + 31 23 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N'-DI-T-BUTYLETHANE-DI-IMINE (AT 98 DEG.K) +@MOLECULE +COVXIU + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.8158 -4.0415 17.6460 C.2 1 COVX 0.1000 + 2 C2 -9.7901 -3.1938 17.2145 C.2 1 COVX -0.1500 + 3 C3 -9.7495 -2.7343 15.8954 C.2 1 COVX -0.1500 + 4 C4 -10.7149 -3.1701 14.9869 C.2 1 COVX -0.0090 + 5 C5 -11.7186 -4.0540 15.3889 C.2 1 COVX -0.1500 + 6 C6 -11.7478 -4.5049 16.7112 C.2 1 COVX -0.1500 + 7 N7 -10.7812 -4.5878 18.9345 N.3 1 COVX -0.9000 + 8 S8 -10.6979 -2.5767 13.3134 S.1 1 COVX 1.4470 + 9 O9 -12.0766 -2.2783 12.9746 O.2 1 COVX -0.6500 + 10 O10 -9.6835 -1.5528 13.1755 O.2 1 COVX -0.6500 + 11 N11 -10.2897 -3.9118 12.4164 N.3 1 COVX -0.7570 + 12 C12 -8.9437 -4.2448 12.3394 C.2 1 COVX 0.8190 + 13 N13 -8.5932 -4.7506 11.1537 N.2 1 COVX -0.6200 + 14 C14 -7.3356 -5.2277 11.0668 C.2 1 COVX 0.1665 + 15 C15 -6.4720 -5.2383 12.1469 C.2 1 COVX -0.1500 + 16 C16 -6.9626 -4.7387 13.3388 C.2 1 COVX 0.1665 + 17 N17 -8.2137 -4.2552 13.4539 N.2 1 COVX -0.6200 + 18 C18 -6.8927 -5.7687 9.7407 C.3 1 COVX 0.1435 + 19 C19 -6.1059 -4.7306 14.5684 C.3 1 COVX 0.1435 + 20 H2 -9.0118 -2.8808 17.9054 H 1 COVX 0.1500 + 21 H3 -8.9544 -2.0623 15.5814 H 1 COVX 0.1500 + 22 H5 -12.4675 -4.4013 14.6816 H 1 COVX 0.1500 + 23 H6 -12.5105 -5.2202 17.0080 H 1 COVX 0.1500 + 24 H71 -10.3155 -3.9972 19.6165 H 1 COVX 0.4000 + 25 H72 -11.6836 -4.9162 19.2640 H 1 COVX 0.4000 + 26 H11 -10.7674 -3.9697 11.5256 H 1 COVX 0.4200 + 27 H15 -5.4644 -5.6274 12.0660 H 1 COVX 0.1500 + 28 H181 -7.6895 -5.6753 8.9958 H 1 COVX 0.0000 + 29 H182 -6.6338 -6.8281 9.8320 H 1 COVX 0.0000 + 30 H183 -6.0211 -5.2149 9.3781 H 1 COVX 0.0000 + 31 H191 -5.8208 -5.7525 14.8372 H 1 COVX 0.0000 + 32 H192 -6.6436 -4.2927 15.4157 H 1 COVX 0.0000 + 33 H193 -5.2021 -4.1380 14.3961 H 1 COVX 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 20 1 + 6 3 4 2 + 7 3 21 1 + 8 4 5 1 + 9 4 8 1 + 10 5 6 2 + 11 5 22 1 + 12 6 23 1 + 13 7 24 1 + 14 7 25 1 + 15 8 9 2 + 16 8 10 2 + 17 8 11 1 + 18 11 12 am + 19 11 26 1 + 20 12 13 2 + 21 12 17 am + 22 13 14 1 + 23 14 15 2 + 24 14 18 1 + 25 15 16 1 + 26 15 27 1 + 27 16 17 2 + 28 16 19 1 + 29 18 28 1 + 30 18 29 1 + 31 18 30 1 + 32 19 31 1 + 33 19 32 1 + 34 19 33 1 +@SUBSTRUCTURE + 1 COVX 1 +@COMMENT +COMMENT N'-(4,6-DIMETHYL-2-PYRIMIDINYL)-SULFANILAMIDE METHANOL SOLV +@MOLECULE +COWTIR + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -6.8484 -5.8109 14.4133 P 1 UNCH 1.1712 + 2 O1 -6.1732 -4.5857 13.5935 O.3 1 UNCH -0.7712 + 3 O2 -6.6922 -7.0578 13.6075 O.3 1 UNCH -0.9500 + 4 O3 -6.3880 -5.6282 15.8428 O.3 1 UNCH -0.9500 + 5 O12 -7.9155 -2.6917 13.6066 O.3 1 UNCH -0.5325 + 6 N1 -8.7816 -4.3569 15.7970 N.3 1 UNCH -0.9060 + 7 C1 -8.6926 -5.2646 14.5582 C.3 1 UNCH 0.6465 + 8 C2 -10.0374 -4.3320 16.5612 C.3 1 UNCH 0.5030 + 9 C3 -10.0420 -3.0719 17.4188 C.3 1 UNCH 0.0000 + 10 C4 -10.1450 -5.5806 17.4274 C.3 1 UNCH 0.0000 + 11 C11 -9.2983 -4.6241 13.3368 C.2 1 UNCH -0.1435 + 12 C12 -8.9023 -3.3482 12.9246 C.2 1 UNCH 0.0825 + 13 C13 -9.4930 -2.7114 11.8408 C.2 1 UNCH -0.1500 + 14 C14 -10.4874 -3.3713 11.1226 C.2 1 UNCH -0.1500 + 15 C15 -10.8813 -4.6568 11.4959 C.2 1 UNCH -0.1500 + 16 C16 -10.2916 -5.2815 12.5982 C.2 1 UNCH -0.1500 + 17 H1 -5.2343 -4.8457 13.4741 H 1 UNCH 0.5000 + 18 H2 -9.2082 -6.1928 14.8251 H 1 UNCH 0.0000 + 19 H3 -8.4730 -3.4321 15.4620 H 1 UNCH 0.4500 + 20 H4 -7.9505 -4.6990 16.3456 H 1 UNCH 0.4500 + 21 H5 -10.8639 -4.2859 15.8440 H 1 UNCH 0.0000 + 22 H6 -10.9679 -3.0032 17.9996 H 1 UNCH 0.0000 + 23 H7 -9.9738 -2.1734 16.7956 H 1 UNCH 0.0000 + 24 H8 -9.2010 -3.0604 18.1211 H 1 UNCH 0.0000 + 25 H9 -11.0582 -5.5503 18.0316 H 1 UNCH 0.0000 + 26 H10 -10.1865 -6.4907 16.8214 H 1 UNCH 0.0000 + 27 H11 -9.2938 -5.6695 18.1116 H 1 UNCH 0.0000 + 28 H12 -7.0864 -3.2092 13.4271 H 1 UNCH 0.4500 + 29 H13 -9.1727 -1.7160 11.5466 H 1 UNCH 0.1500 + 30 H14 -10.9467 -2.8897 10.2628 H 1 UNCH 0.1500 + 31 H15 -11.6454 -5.1763 10.9217 H 1 UNCH 0.1500 + 32 H16 -10.6097 -6.2883 12.8638 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 7 1 + 5 2 17 1 + 6 5 12 1 + 7 5 28 1 + 8 6 7 1 + 9 6 8 1 + 10 6 19 1 + 11 6 20 1 + 12 7 11 1 + 13 7 18 1 + 14 8 9 1 + 15 8 10 1 + 16 8 21 1 + 17 9 22 1 + 18 9 23 1 + 19 9 24 1 + 20 10 25 1 + 21 10 26 1 + 22 10 27 1 + 23 11 12 2 + 24 11 16 1 + 25 12 13 1 + 26 13 14 2 + 27 13 29 1 + 28 14 15 1 + 29 14 30 1 + 30 15 16 2 + 31 15 31 1 + 32 16 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ALPHA-(ISOPROPYLAMINO)SALICYLPHOSPHONIC ACID HEMIHYDRATE +@MOLECULE +COXBAS + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -9.0816 -4.9316 14.0833 P 1 COXB 1.2424 + 2 S1 -7.1441 -3.6364 15.9660 S.3 1 COXB -0.4600 + 3 S2 -8.8178 -1.1620 16.1611 S.3 1 COXB -0.4600 + 4 S3 -8.0466 -2.1911 13.4517 S.3 1 COXB -0.4600 + 5 O1 -10.3871 -4.5386 14.7148 O.2 1 COXB -0.7000 + 6 O2 -9.2213 -5.1837 12.4893 O.3 1 COXB -0.5512 + 7 O3 -8.5645 -6.3715 14.6117 O.3 1 COXB -0.5512 + 8 C1 -7.7189 -3.7745 14.2591 C.3 1 COXB 0.4600 + 9 C2 -8.5659 -2.8448 16.7477 C.3 1 COXB 0.4600 + 10 C3 -9.3689 -1.5306 14.4880 C.3 1 COXB 0.4600 + 11 C4 -10.3738 -5.8791 12.0531 C.3 1 COXB 0.2800 + 12 C5 -7.3890 -6.9470 14.0788 C.3 1 COXB 0.2800 + 13 H1 -6.8778 -4.1996 13.7039 H 1 COXB 0.0000 + 14 H21 -8.3411 -2.7792 17.8168 H 1 COXB 0.0000 + 15 H22 -9.4748 -3.4422 16.6687 H 1 COXB 0.0000 + 16 H32 -10.2593 -2.1597 14.4852 H 1 COXB 0.0000 + 17 H41 -10.2645 -6.1048 10.9894 H 1 COXB 0.0000 + 18 H42 -11.2603 -5.2551 12.1931 H 1 COXB 0.0000 + 19 H43 -10.4858 -6.8168 12.6043 H 1 COXB 0.0000 + 20 H51 -7.3924 -8.0162 14.3056 H 1 COXB 0.0000 + 21 H52 -6.5089 -6.4962 14.5430 H 1 COXB 0.0000 + 22 H53 -7.3415 -6.8211 12.9944 H 1 COXB 0.0000 + 23 H2 -9.6736 -0.5805 14.0383 H 1 COXB 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 5 2 + 5 2 9 1 + 6 2 8 1 + 7 3 10 1 + 8 3 9 1 + 9 4 10 1 + 10 4 8 1 + 11 6 11 1 + 12 7 12 1 + 13 8 13 1 + 14 9 15 1 + 15 9 14 1 + 16 10 23 1 + 17 10 16 1 + 18 11 19 1 + 19 11 18 1 + 20 11 17 1 + 21 12 22 1 + 22 12 21 1 + 23 12 20 1 +@SUBSTRUCTURE + 1 COXB 1 +@COMMENT +COMMENT 2-DIMETHOXYPHOSPHORYL-1,3,5-TRITHIANE +@MOLECULE +COXZEU + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.6966 -6.0052 13.0219 S.3 1 COXZ -0.3710 + 2 S2 -6.6464 -5.9781 15.1873 S.2 1 COXZ -0.3800 + 3 N1 -8.5594 -4.0917 14.9105 N.2 1 COXZ -0.6610 + 4 N2 -7.4023 -2.7284 13.3142 N.3 1 COXZ -0.8500 + 5 N3 -8.7779 -1.8201 14.7890 N.3 1 COXZ -0.8500 + 6 C1 -8.2414 -2.9799 14.3454 C.2 1 COXZ 0.5500 + 7 C2 -7.9730 -5.2447 14.4544 C.2 1 COXZ 0.7320 + 8 C3 -10.4375 -5.8864 13.4878 C.3 1 COXZ 0.2300 + 9 H1 -10.6031 -6.3257 14.4753 H 1 COXZ 0.0000 + 10 H2 -11.0413 -6.4347 12.7596 H 1 COXZ 0.0000 + 11 H3 -10.7689 -4.8447 13.4918 H 1 COXZ 0.0000 + 12 H4 -7.1324 -3.5347 12.7601 H 1 COXZ 0.4000 + 13 H5 -8.0839 -1.0879 14.8903 H 1 COXZ 0.4000 + 14 H6 -7.7253 -1.9753 12.7164 H 1 COXZ 0.4000 + 15 H7 -9.2631 -1.9658 15.6700 H 1 COXZ 0.4000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 2 7 2 + 4 3 7 1 + 5 3 6 2 + 6 4 14 1 + 7 4 12 1 + 8 4 6 am + 9 5 15 1 + 10 5 13 1 + 11 5 6 am + 12 8 11 1 + 13 8 10 1 + 14 8 9 1 +@SUBSTRUCTURE + 1 COXZ 1 +@COMMENT +COMMENT TRANS-GUANIDINO-DITHIOFORMIC ACID S-METHYL ESTER +@MOLECULE +COYMOS + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.2993 -7.2391 15.0374 O.2 1 COYK -0.5700 + 2 O2 -11.3692 -7.2079 13.0262 O.2 1 COYK -0.5700 + 3 N1 -7.6642 -6.2966 13.0768 N.3 1 COYK -0.8000 + 4 N2 -11.1488 -5.1613 12.0754 N.3 1 COYK -0.8000 + 5 N3 -9.7851 -4.2222 14.3239 N.3 1 COYK -0.4380 + 6 C1 -8.5514 -6.4896 14.1009 C.2 1 COYK 0.6300 + 7 C2 -10.8323 -6.1083 13.0132 C.2 1 COYK 0.6300 + 8 C3 -10.3621 -5.1148 15.3212 C.3 1 COYK -0.0310 + 9 C4 -9.8176 -5.7013 14.0361 C.3 1 COYK 0.1690 + 10 C5 -8.5670 -3.5400 14.5730 C.2 1 COYK 0.1000 + 11 C6 -8.3306 -2.3883 13.8030 C.2 1 COYK -0.1500 + 12 C7 -7.1646 -1.6340 13.9574 C.2 1 COYK -0.1500 + 13 C8 -6.2112 -2.0168 14.8946 C.2 1 COYK -0.1500 + 14 C9 -6.4289 -3.1474 15.6766 C.2 1 COYK -0.1500 + 15 C10 -7.5988 -3.8997 15.5202 C.2 1 COYK -0.1500 + 16 H11 -6.7470 -6.7081 13.1860 H 1 COYK 0.3700 + 17 H21 -7.7611 -5.5097 12.4493 H 1 COYK 0.3700 + 18 H12 -10.9026 -4.1973 12.2664 H 1 COYK 0.3700 + 19 H22 -11.9556 -5.3488 11.4955 H 1 COYK 0.3700 + 20 H13 -11.4339 -5.0049 15.4265 H 1 COYK 0.1000 + 21 H23 -9.8244 -5.2679 16.2450 H 1 COYK 0.1000 + 22 H6 -9.0703 -2.0683 13.0726 H 1 COYK 0.1500 + 23 H7 -7.0066 -0.7465 13.3503 H 1 COYK 0.1500 + 24 H8 -5.3035 -1.4324 15.0215 H 1 COYK 0.1500 + 25 H9 -5.6897 -3.4480 16.4154 H 1 COYK 0.1500 + 26 H10 -7.7201 -4.7720 16.1566 H 1 COYK 0.1500 +@BOND + 1 1 6 2 + 2 2 7 2 + 3 3 6 am + 4 3 16 1 + 5 3 17 1 + 6 4 7 am + 7 4 18 1 + 8 4 19 1 + 9 5 8 1 + 10 5 9 1 + 11 5 10 1 + 12 6 9 1 + 13 7 9 1 + 14 8 9 1 + 15 8 20 1 + 16 8 21 1 + 17 10 11 2 + 18 10 15 1 + 19 11 12 1 + 20 11 22 1 + 21 12 13 2 + 22 12 23 1 + 23 13 14 1 + 24 13 24 1 + 25 14 15 2 + 26 14 25 1 + 27 15 26 1 +@SUBSTRUCTURE + 1 COYK 1 +@COMMENT +COMMENT 1-PHENYL-2,2-AZIRIDINEDICARBOXAMIDE (MONOCLINIC FORM) +@MOLECULE +COYNAF + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N2 -7.2187 -1.6103 15.1818 N.3 1 UNCH -0.7290 + 2 N1 -7.8880 -2.7932 14.8402 N.3 1 UNCH -0.1110 + 3 O1 -9.7191 -2.6666 16.3067 O.2 1 UNCH -0.5700 + 4 O2 -6.3365 -3.7240 13.3414 O.2 1 UNCH -0.5700 + 5 C1 -9.0698 -3.1917 15.4213 C.2 1 UNCH 0.5438 + 6 C2 -9.4068 -4.4673 14.7856 C.2 1 UNCH 0.0862 + 7 C3 -10.4977 -5.2934 14.9739 C.2 1 UNCH -0.1500 + 8 C4 -10.5430 -6.4724 14.2228 C.2 1 UNCH -0.1500 + 9 C5 -9.5101 -6.7952 13.3174 C.2 1 UNCH -0.1500 + 10 C6 -8.4128 -5.9451 13.1462 C.2 1 UNCH -0.1500 + 11 C7 -8.3911 -4.7847 13.8953 C.2 1 UNCH 0.0862 + 12 C8 -7.3908 -3.7165 13.9494 C.2 1 UNCH 0.5438 + 13 H5 -6.2149 -1.7925 15.1118 H 1 UNCH 0.3600 + 14 H6 -7.4175 -1.4165 16.1660 H 1 UNCH 0.3600 + 15 H1 -11.2843 -5.0355 15.6759 H 1 UNCH 0.1500 + 16 H2 -11.3855 -7.1526 14.3379 H 1 UNCH 0.1500 + 17 H3 -9.5695 -7.7203 12.7459 H 1 UNCH 0.1500 + 18 H4 -7.6104 -6.1839 12.4553 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 13 1 + 3 1 14 1 + 4 2 5 am + 5 2 12 am + 6 3 5 2 + 7 4 12 2 + 8 5 6 1 + 9 6 7 2 + 10 6 11 1 + 11 7 8 1 + 12 7 15 1 + 13 8 9 2 + 14 8 16 1 + 15 9 10 1 + 16 9 17 1 + 17 10 11 2 + 18 10 18 1 + 19 11 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-AMINOPHTHALIMIDE +@MOLECULE +COYVIV + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S11 -10.0967 -4.9462 16.7055 S.3 1 UNCH -0.0800 + 2 C21 -10.7713 -3.3661 16.7481 C.2 1 UNCH 0.4621 + 3 N31 -10.0089 -2.4472 16.1975 N.2 1 UNCH -0.3381 + 4 N41 -8.8349 -2.9667 15.6967 N.2 1 UNCH -0.3381 + 5 C51 -8.7544 -4.2693 15.8776 C.2 1 UNCH 0.3251 + 6 C61 -7.6535 -5.1045 15.4045 C.2 1 UNCH 0.0530 + 7 C71 -6.8352 -5.7562 16.3451 C.2 1 UNCH -0.1500 + 8 C81 -5.7436 -6.5268 15.9365 C.2 1 UNCH -0.1500 + 9 C91 -5.4485 -6.6571 14.5823 C.2 1 UNCH -0.1500 + 10 C101 -6.2439 -6.0181 13.6324 C.2 1 UNCH -0.1500 + 11 C111 -7.3381 -5.2393 14.0407 C.2 1 UNCH -0.0090 + 12 N121 -11.9800 -3.1298 17.2953 N.3 1 UNCH -0.8840 + 13 S131 -8.3627 -4.5017 12.7813 S.1 1 UNCH 1.4470 + 14 O141 -9.7376 -4.8018 13.1126 O.2 1 UNCH -0.6500 + 15 O151 -7.8096 -4.8664 11.4940 O.2 1 UNCH -0.6500 + 16 N161 -8.1221 -2.8528 12.9860 N.3 1 UNCH -0.9137 + 17 C171 -6.7780 -2.3109 12.8231 C.3 1 UNCH 0.3557 + 18 H1 -12.6307 -3.9071 17.3117 H 1 UNCH 0.4000 + 19 H2 -12.4144 -2.2592 17.0053 H 1 UNCH 0.4000 + 20 H3 -7.0346 -5.6583 17.4116 H 1 UNCH 0.1500 + 21 H4 -5.1217 -7.0238 16.6781 H 1 UNCH 0.1500 + 22 H5 -4.6012 -7.2611 14.2646 H 1 UNCH 0.1500 + 23 H6 -6.0088 -6.1406 12.5763 H 1 UNCH 0.1500 + 24 H7 -8.6729 -2.4737 13.7668 H 1 UNCH 0.4200 + 25 H8 -6.2891 -2.7068 11.9296 H 1 UNCH 0.0000 + 26 H9 -6.1690 -2.5213 13.7060 H 1 UNCH 0.0000 + 27 H10 -6.8472 -1.2247 12.7130 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 12 am + 5 3 4 1 + 6 4 5 2 + 7 5 6 1 + 8 6 7 2 + 9 6 11 1 + 10 7 8 1 + 11 7 20 1 + 12 8 9 2 + 13 8 21 1 + 14 9 10 1 + 15 9 22 1 + 16 10 11 2 + 17 10 23 1 + 18 11 13 1 + 19 12 18 1 + 20 12 19 1 + 21 13 14 2 + 22 13 15 2 + 23 13 16 1 + 24 16 17 1 + 25 16 24 1 + 26 17 25 1 + 27 17 26 1 + 28 17 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(5-AMINO-1,3,4-THIADIAZOL-2-YL)-N-METHYL-BENZENESULFONAMI +@MOLECULE +CUBTUO + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -10.6191 -2.8339 13.7075 N.2 1 CUBT -0.7000 + 2 N2 -12.6178 -2.1111 13.8978 N.3 1 CUBT -0.7000 + 3 C1 -8.8833 -4.4704 15.3274 C.2 1 CUBT -0.1435 + 4 C2 -8.6192 -5.5726 14.4741 C.2 1 CUBT -0.1435 + 5 C3 -7.2973 -5.7862 14.0154 C.2 1 CUBT -0.1435 + 6 C4 -6.2841 -4.8801 14.3654 C.2 1 CUBT -0.1500 + 7 C5 -6.5531 -3.7888 15.1831 C.2 1 CUBT -0.1500 + 8 C6 -7.8409 -3.5870 15.6645 C.2 1 CUBT -0.1500 + 9 C7 -10.2682 -4.1628 15.8588 C.3 1 CUBT 0.3115 + 10 C8 -11.0747 -3.3196 14.9334 C.2 1 CUBT 0.1820 + 11 C9 -11.5527 -2.1085 13.0925 C.2 1 CUBT 0.6500 + 12 C10 -12.3610 -2.8437 15.0361 C.2 1 CUBT 0.2000 + 13 C11 -9.7130 -6.5527 14.1200 C.3 1 CUBT 0.1435 + 14 C12 -6.9283 -6.9644 13.1499 C.3 1 CUBT 0.1435 + 15 H1 -5.2643 -5.0325 14.0138 H 1 CUBT 0.1500 + 16 H2 -5.7508 -3.1074 15.4579 H 1 CUBT 0.1500 + 17 H3 -9.6861 -3.0169 13.3349 H 1 CUBT 0.4500 + 18 H4 -11.4648 -1.6157 12.1312 H 1 CUBT 0.1500 + 19 H5 -13.4925 -1.6337 13.6892 H 1 CUBT 0.4500 + 20 H6 -13.1364 -2.9310 15.7780 H 1 CUBT 0.1500 + 21 H7 -10.8153 -5.0872 16.0744 H 1 CUBT 0.0000 + 22 H8 -10.1882 -3.6337 16.8169 H 1 CUBT 0.0000 + 23 H9 -10.6637 -6.0413 13.9429 H 1 CUBT 0.0000 + 24 H10 -9.4999 -7.0976 13.1962 H 1 CUBT 0.0000 + 25 H11 -9.8391 -7.2763 14.9313 H 1 CUBT 0.0000 + 26 H12 -7.2546 -7.8995 13.6163 H 1 CUBT 0.0000 + 27 H13 -7.3860 -6.8641 12.1608 H 1 CUBT 0.0000 + 28 H14 -5.8444 -7.0374 13.0092 H 1 CUBT 0.0000 + 29 H15 -8.0209 -2.7347 16.3181 H 1 CUBT 0.1500 +@BOND + 1 1 10 1 + 2 1 11 2 + 3 1 17 1 + 4 2 11 am + 5 2 12 1 + 6 2 19 1 + 7 3 4 2 + 8 3 8 1 + 9 3 9 1 + 10 4 5 1 + 11 4 13 1 + 12 5 6 2 + 13 5 14 1 + 14 6 7 1 + 15 6 15 1 + 16 7 8 2 + 17 7 16 1 + 18 8 29 1 + 19 9 10 1 + 20 9 21 1 + 21 9 22 1 + 22 10 12 2 + 23 11 18 1 + 24 12 20 1 + 25 13 23 1 + 26 13 24 1 + 27 13 25 1 + 28 14 26 1 + 29 14 27 1 + 30 14 28 1 +@SUBSTRUCTURE + 1 CUBT 1 +@COMMENT +COMMENT 4(5)-(2,3-DIMETHYLBENZYL)-IMIDAZOLE HYDROCHLORIDE MONOHYDRA +@MOLECULE +CUCDAF + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.7839 -3.1845 11.6432 O.3 1 CUCD -0.6800 + 2 O2 -6.3716 -3.0543 13.4209 O.3 1 CUCD -0.2960 + 3 O3 -6.6777 -4.8767 16.3435 O.2 1 CUCD -0.5700 + 4 C1 -8.5001 -4.1246 12.6767 C.3 1 CUCD 0.5185 + 5 C2 -6.9972 -4.1733 12.7749 C.3 1 CUCD -0.0470 + 6 C3 -6.3252 -4.3315 14.0971 C.3 1 CUCD 0.0480 + 7 C4 -7.1495 -4.4178 15.3120 C.2 1 CUCD 0.4838 + 8 C5 -9.1890 -3.6509 16.4484 C.2 1 CUCD -0.1500 + 9 C6 -10.4788 -3.1416 16.4581 C.2 1 CUCD -0.1500 + 10 C7 -11.1335 -2.9109 15.2534 C.2 1 CUCD -0.1500 + 11 C8 -10.5229 -3.2026 14.0163 C.2 1 CUCD -0.1435 + 12 C9 -9.1965 -3.7197 13.9862 C.2 1 CUCD -0.1435 + 13 C10 -8.5492 -3.9277 15.2312 C.2 1 CUCD 0.0862 + 14 C11 -9.0002 -5.5063 12.2280 C.3 1 CUCD 0.0000 + 15 C12 -11.3279 -2.8932 12.7775 C.3 1 CUCD 0.1435 + 16 H2 -6.5155 -4.5582 11.8854 H 1 CUCD 0.1000 + 17 H3 -5.3692 -4.8391 14.1298 H 1 CUCD 0.1000 + 18 H5 -8.6742 -3.8196 17.3928 H 1 CUCD 0.1500 + 19 H6 -10.9711 -2.9171 17.4009 H 1 CUCD 0.1500 + 20 H7 -12.1422 -2.5003 15.2828 H 1 CUCD 0.1500 + 21 H101 -8.4657 -2.3232 11.9710 H 1 CUCD 0.4000 + 22 H111 -10.0843 -5.5305 12.0835 H 1 CUCD 0.0000 + 23 H112 -8.5565 -5.7871 11.2652 H 1 CUCD 0.0000 + 24 H113 -8.7423 -6.2831 12.9571 H 1 CUCD 0.0000 + 25 H121 -10.9658 -1.9701 12.3146 H 1 CUCD 0.0000 + 26 H122 -11.2951 -3.7104 12.0545 H 1 CUCD 0.0000 + 27 H123 -12.3868 -2.7458 13.0193 H 1 CUCD 0.0000 +@BOND + 1 1 21 1 + 2 1 4 1 + 3 2 6 1 + 4 2 5 1 + 5 3 7 2 + 6 4 14 1 + 7 4 12 1 + 8 4 5 1 + 9 5 16 1 + 10 5 6 1 + 11 6 17 1 + 12 6 7 1 + 13 7 13 1 + 14 8 18 1 + 15 8 13 1 + 16 8 9 2 + 17 9 19 1 + 18 9 10 1 + 19 10 20 1 + 20 10 11 2 + 21 11 15 1 + 22 11 12 1 + 23 12 13 2 + 24 14 24 1 + 25 14 23 1 + 26 14 22 1 + 27 15 27 1 + 28 15 26 1 + 29 15 25 1 +@SUBSTRUCTURE + 1 CUCD 1 +@COMMENT +COMMENT 4,5-DIMETHYL-2,3-EPOXY-4-HYDROXY-1-OXO-1,2,3,4-TETRAHYDRO-N +@MOLECULE +CUCHOX + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -7.2906 -6.5785 14.6543 O.3 1 UNCH -0.6800 + 2 C10 -10.4237 -2.3170 12.5584 C.3 1 UNCH 0.0610 + 3 O3 -7.9036 -2.4068 14.6100 O.2 1 UNCH -0.5700 + 4 C2 -9.9230 -5.3344 12.6592 C.2 1 UNCH 0.5090 + 5 O4 -11.3915 -2.7537 14.7114 O.2 1 UNCH -0.5700 + 6 C1 -10.0047 -4.4735 13.8697 C.3 1 UNCH 0.0000 + 7 C3 -8.6632 -6.1598 12.6744 C.3 1 UNCH 0.0610 + 8 C7 -8.0775 -3.4254 15.2674 C.2 1 UNCH 0.5090 + 9 C4 -7.7914 -5.5529 13.7976 C.3 1 UNCH 0.3750 + 10 C5 -8.6856 -4.6262 14.6187 C.3 1 UNCH -0.0950 + 11 C9 -10.6720 -3.1364 13.7935 C.2 1 UNCH 0.5090 + 12 C6 -9.9691 -5.1807 15.2172 C.3 1 UNCH -0.2000 + 13 C11 -6.5793 -4.8439 13.1904 C.3 1 UNCH 0.0000 + 14 O1 -10.7991 -5.3858 11.8121 O.2 1 UNCH -0.5700 + 15 C8 -7.7112 -3.5557 16.7164 C.3 1 UNCH 0.0610 + 16 H2 -8.0205 -7.1567 14.9333 H 1 UNCH 0.4000 + 17 H61 -10.4158 -4.6738 16.0687 H 1 UNCH 0.1000 + 18 H62 -10.1427 -6.2506 15.2401 H 1 UNCH 0.1000 + 19 H31 -8.9305 -7.2014 12.8800 H 1 UNCH 0.0000 + 20 H32 -8.1845 -6.1003 11.6922 H 1 UNCH 0.0000 + 21 H111 -5.9131 -4.4562 13.9695 H 1 UNCH 0.0000 + 22 H112 -5.9771 -5.5445 12.6001 H 1 UNCH 0.0000 + 23 H113 -6.8766 -4.0123 12.5430 H 1 UNCH 0.0000 + 24 H101 -10.4912 -1.2552 12.8111 H 1 UNCH 0.0000 + 25 H102 -11.1737 -2.5598 11.8021 H 1 UNCH 0.0000 + 26 H103 -9.4228 -2.5090 12.1631 H 1 UNCH 0.0000 + 27 H81 -6.9100 -2.8500 16.9521 H 1 UNCH 0.0000 + 28 H82 -7.3509 -4.5661 16.9268 H 1 UNCH 0.0000 + 29 H83 -8.5840 -3.3359 17.3356 H 1 UNCH 0.0000 +@BOND + 1 1 9 1 + 2 1 16 1 + 3 2 11 1 + 4 2 24 1 + 5 2 25 1 + 6 2 26 1 + 7 3 8 2 + 8 4 6 1 + 9 4 7 1 + 10 4 14 2 + 11 5 11 2 + 12 6 10 1 + 13 6 11 1 + 14 6 12 1 + 15 7 9 1 + 16 7 19 1 + 17 7 20 1 + 18 8 10 1 + 19 8 15 1 + 20 9 10 1 + 21 9 13 1 + 22 10 12 1 + 23 12 17 1 + 24 12 18 1 + 25 13 21 1 + 26 13 22 1 + 27 13 23 1 + 28 15 27 1 + 29 15 28 1 + 30 15 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1ALPHA,4BETA,5ALPHA)-1,5-DIACETYL-4-HYDROXY-4-METHYLBICYCL +@MOLECULE +CUCHUD + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.5310 -4.6799 13.8457 S.3 1 UNCH -0.1575 + 2 C2 -8.6857 -2.9513 13.9657 C.2 1 UNCH -0.0956 + 3 C3 -8.3376 -2.0110 14.9187 C.2 1 UNCH 0.3062 + 4 N4 -8.7063 -0.7349 14.5195 N.2 1 UNCH -0.5653 + 5 C5 -9.2745 -0.9021 13.3473 C.2 1 UNCH 0.0365 + 6 N6 -9.2826 -2.2182 12.9665 N.3 1 UNCH 0.0476 + 7 C7 -9.1761 -5.1791 15.4425 C.2 1 UNCH 0.4115 + 8 N8 -10.1265 -4.3815 15.9980 N.2 1 UNCH -0.6200 + 9 C9 -10.5989 -4.7323 17.2135 C.2 1 UNCH 0.1600 + 10 C10 -10.1809 -5.8547 17.9079 C.2 1 UNCH -0.1500 + 11 C11 -9.2193 -6.6737 17.3245 C.2 1 UNCH -0.1500 + 12 C12 -8.7081 -6.3361 16.0739 C.2 1 UNCH 0.0825 + 13 N13 -7.6603 -2.1988 16.1787 N.2 1 UNCH 0.9610 + 14 O14 -6.8354 -3.1225 16.2524 O.3 1 UNCH -0.5200 + 15 O15 -7.9334 -1.4110 17.0966 O.2 1 UNCH -0.5200 + 16 C16 -9.8518 -2.7062 11.7323 C.3 1 UNCH 0.2556 + 17 O17 -7.7635 -7.1338 15.4894 O.3 1 UNCH -0.5325 + 18 H5 -9.6941 -0.1118 12.7367 H 1 UNCH 0.1500 + 19 H9 -11.3464 -4.0625 17.6305 H 1 UNCH 0.1500 + 20 H10 -10.5954 -6.0854 18.8834 H 1 UNCH 0.1500 + 21 H11 -8.8833 -7.5604 17.8523 H 1 UNCH 0.1500 + 22 H161 -9.0667 -3.2026 11.1564 H 1 UNCH 0.0000 + 23 H162 -10.6627 -3.3993 11.9701 H 1 UNCH 0.0000 + 24 H163 -10.2488 -1.8662 11.1559 H 1 UNCH 0.0000 + 25 H17 -7.4542 -7.7895 16.1354 H 1 UNCH 0.4500 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 2 3 2 + 4 2 6 1 + 5 3 4 1 + 6 3 13 1 + 7 4 5 2 + 8 5 6 am + 9 5 18 1 + 10 6 16 1 + 11 7 8 2 + 12 7 12 1 + 13 8 9 1 + 14 9 10 2 + 15 9 19 1 + 16 10 11 1 + 17 10 20 1 + 18 11 12 2 + 19 11 21 1 + 20 12 17 1 + 21 13 14 1 + 22 13 15 2 + 23 16 22 1 + 24 16 23 1 + 25 16 24 1 + 26 17 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-(3'-HYDROXYPYRIDYL-2'-THIO)-4-NITRO-1-METHYLIMIDAZOLE (AT +@MOLECULE +CUDJAM + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -6.6070 -3.0047 11.7942 O.2 1 UNCH -0.5700 + 2 O2 -10.4307 -7.0939 13.7275 O.3 1 UNCH -0.3370 + 3 O3 -9.2187 -2.5202 17.0680 O.3 1 UNCH -0.3370 + 4 N1 -8.6920 -5.0189 13.6910 N.3 1 UNCH -0.3880 + 5 N2 -8.8996 -3.5352 16.1580 N.2 1 UNCH -0.5130 + 6 N3 -10.6838 -6.0516 14.6291 N.2 1 UNCH -0.5130 + 7 N4 -6.6364 -2.9570 14.0701 N.3 1 UNCH -0.8000 + 8 C1 -9.9678 -3.9729 15.5504 C.2 1 UNCH 0.3890 + 9 C2 -9.7914 -5.1071 14.5343 C.2 1 UNCH 0.5000 + 10 C3 -8.8506 -5.1344 12.2502 C.3 1 UNCH -0.0310 + 11 C4 -8.5398 -3.7993 12.8905 C.3 1 UNCH 0.0690 + 12 C5 -11.3702 -3.4733 15.7707 C.3 1 UNCH 0.0610 + 13 C6 -7.1790 -3.2297 12.8504 C.2 1 UNCH 0.6300 + 14 H2 -11.0980 -7.7588 13.9794 H 1 UNCH 0.4000 + 15 H3 -8.3725 -2.3634 17.5280 H 1 UNCH 0.4000 + 16 H14 -5.6719 -2.6619 14.1134 H 1 UNCH 0.3700 + 17 H24 -7.1024 -3.2605 14.9215 H 1 UNCH 0.3700 + 18 H13 -9.8555 -5.3170 11.8976 H 1 UNCH 0.1000 + 19 H23 -8.0513 -5.6855 11.7755 H 1 UNCH 0.1000 + 20 H4 -9.3505 -3.0819 12.9306 H 1 UNCH 0.1000 + 21 H15 -12.0031 -3.7115 14.9114 H 1 UNCH 0.0000 + 22 H25 -11.7837 -3.9477 16.6646 H 1 UNCH 0.0000 + 23 H35 -11.3778 -2.3878 15.8990 H 1 UNCH 0.0000 +@BOND + 1 1 13 2 + 2 2 6 1 + 3 2 14 1 + 4 3 5 1 + 5 3 15 1 + 6 4 9 am + 7 4 10 1 + 8 4 11 1 + 9 5 8 2 + 10 6 9 2 + 11 7 13 am + 12 7 16 1 + 13 7 17 1 + 14 8 9 1 + 15 8 12 1 + 16 10 11 1 + 17 10 18 1 + 18 10 19 1 + 19 11 13 1 + 20 11 20 1 + 21 12 21 1 + 22 12 22 1 + 23 12 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT Z,Z'-1-METHYL-2-(2-CARBAMOYLAZIRIDINO)-GLYOXIME +@MOLECULE +CUDNEU + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.4067 -6.2596 13.6657 SI 1 UNCH 0.3220 + 2 O1 -9.0065 -4.4194 15.9097 O.3 1 UNCH -0.5600 + 3 O2 -9.9670 -3.7540 12.3324 O.3 1 UNCH -0.6800 + 4 C1 -9.9981 -7.1998 13.3526 C.3 1 UNCH -0.0805 + 5 C2 -7.3432 -7.1339 14.9430 C.3 1 UNCH -0.0805 + 6 C3 -7.4527 -6.0417 12.0663 C.3 1 UNCH -0.0805 + 7 C4 -8.8829 -4.3786 14.4605 C.3 1 UNCH 0.1995 + 8 C5 -7.6593 -3.4483 14.1945 C.3 1 UNCH 0.0000 + 9 C6 -7.9295 -2.0124 14.6552 C.3 1 UNCH 0.0000 + 10 C7 -9.1904 -1.4378 14.0165 C.3 1 UNCH 0.0000 + 11 C8 -10.4051 -2.3425 14.2287 C.3 1 UNCH 0.0000 + 12 C9 -10.1415 -3.7794 13.7522 C.3 1 UNCH 0.2800 + 13 C10 -10.1464 -5.0622 16.4569 C.3 1 UNCH 0.2800 + 14 H1 -10.7534 -3.3308 11.9462 H 1 UNCH 0.4000 + 15 H11 -9.7786 -8.1907 12.9433 H 1 UNCH 0.0000 + 16 H12 -10.6276 -6.6700 12.6318 H 1 UNCH 0.0000 + 17 H13 -10.5723 -7.3364 14.2722 H 1 UNCH 0.0000 + 18 H21 -7.8920 -7.2738 15.8785 H 1 UNCH 0.0000 + 19 H22 -6.4422 -6.5518 15.1573 H 1 UNCH 0.0000 + 20 H23 -7.0362 -8.1181 14.5769 H 1 UNCH 0.0000 + 21 H31 -7.2352 -7.0160 11.6181 H 1 UNCH 0.0000 + 22 H32 -8.0256 -5.4569 11.3415 H 1 UNCH 0.0000 + 23 H33 -6.5002 -5.5340 12.2439 H 1 UNCH 0.0000 + 24 H51 -7.4042 -3.4265 13.1283 H 1 UNCH 0.0000 + 25 H52 -6.7776 -3.8190 14.7328 H 1 UNCH 0.0000 + 26 H61 -7.0707 -1.3804 14.4012 H 1 UNCH 0.0000 + 27 H62 -8.0276 -1.9841 15.7471 H 1 UNCH 0.0000 + 28 H71 -9.3948 -0.4461 14.4360 H 1 UNCH 0.0000 + 29 H72 -9.0206 -1.2957 12.9422 H 1 UNCH 0.0000 + 30 H81 -11.2529 -1.9177 13.6779 H 1 UNCH 0.0000 + 31 H82 -10.6772 -2.3394 15.2902 H 1 UNCH 0.0000 + 32 H91 -11.0277 -4.3904 13.9534 H 1 UNCH 0.0000 + 33 H101 -10.1937 -6.1133 16.1706 H 1 UNCH 0.0000 + 34 H102 -10.0606 -5.0196 17.5467 H 1 UNCH 0.0000 + 35 H103 -11.0698 -4.5492 16.1797 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 7 1 + 6 2 13 1 + 7 3 12 1 + 8 3 14 1 + 9 4 15 1 + 10 4 16 1 + 11 4 17 1 + 12 5 18 1 + 13 5 19 1 + 14 5 20 1 + 15 6 21 1 + 16 6 22 1 + 17 6 23 1 + 18 7 8 1 + 19 7 12 1 + 20 8 9 1 + 21 8 24 1 + 22 8 25 1 + 23 9 10 1 + 24 9 26 1 + 25 9 27 1 + 26 10 11 1 + 27 10 28 1 + 28 10 29 1 + 29 11 12 1 + 30 11 30 1 + 31 11 31 1 + 32 12 32 1 + 33 13 33 1 + 34 13 34 1 + 35 13 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-TRIMETHYLSILYL-TRANS-2-METHOXY-CYCLOHEXANOL +@MOLECULE +CUDPAS + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.6500 -7.0282 14.6685 N.2 1 CUDP -0.6200 + 2 C2 -8.4295 -6.1672 15.6857 C.2 1 CUDP 0.1600 + 3 C3 -8.4616 -4.7920 15.5489 C.2 1 CUDP -0.1500 + 4 C4 -8.7204 -4.2531 14.2851 C.2 1 CUDP 0.0862 + 5 C5 -8.9198 -5.1097 13.2036 C.2 1 CUDP 0.0825 + 6 C6 -8.8790 -6.4748 13.4528 C.2 1 CUDP 0.1600 + 7 O7 -9.1333 -4.7224 11.9116 O.3 1 CUDP -0.5325 + 8 C8 -8.8081 -2.7918 14.1699 C.2 1 CUDP 0.5288 + 9 N9 -8.0140 -1.8188 14.5078 N.2 1 CUDP -0.8000 + 10 O10 -6.8082 -2.1949 15.0372 O.3 1 CUDP -0.6500 + 11 N11 -10.0274 -2.2522 13.5585 N.2 1 CUDP 0.8750 + 12 O12 -11.0231 -2.1167 14.2902 O.3 1 CUDP -0.5200 + 13 O13 -10.0028 -2.0935 12.3224 O.2 1 CUDP -0.5200 + 14 H1 -8.2205 -6.6240 16.6483 H 1 CUDP 0.1500 + 15 H2 -8.2759 -4.1425 16.3998 H 1 CUDP 0.1500 + 16 H3 -9.0291 -7.1852 12.6451 H 1 CUDP 0.1500 + 17 H4 -8.9776 -3.7617 11.8043 H 1 CUDP 0.4500 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 2 3 1 + 4 2 14 1 + 5 3 4 2 + 6 3 15 1 + 7 4 5 1 + 8 4 8 1 + 9 5 6 2 + 10 5 7 1 + 11 6 16 1 + 12 7 17 1 + 13 8 9 2 + 14 8 11 am + 15 9 10 1 + 16 11 12 1 + 17 11 13 2 +@SUBSTRUCTURE + 1 CUDP 1 +@COMMENT +COMMENT FURO(2,3-C)PYRIDINIUM 3-HYDROXYPYRIDINE-4-NITROLATE +@MOLECULE +CUDPOG + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -11.5579 -5.0093 15.1031 S.2 1 UNCH -0.3800 + 2 N1 -8.9937 -3.9752 15.2997 N.3 1 UNCH -0.4771 + 3 N3 -10.3882 -3.5872 17.0521 N.2 1 UNCH -0.2110 + 4 N4 -9.3545 -2.9199 17.2995 N.2 1 UNCH -0.2460 + 5 C2 -10.2680 -4.2061 15.8216 C.2 1 UNCH 0.6510 + 6 C5 -8.4150 -2.9689 16.1520 C.3 1 UNCH 0.5461 + 7 C6 -7.0442 -3.3307 16.7317 C.3 1 UNCH 0.0000 + 8 C7 -8.4364 -1.5515 15.5587 C.3 1 UNCH 0.0000 + 9 C8 -8.3188 -4.6386 14.2335 C.2 1 UNCH 0.1170 + 10 C9 -8.6139 -5.9683 13.8972 C.2 1 UNCH -0.1500 + 11 C10 -7.9421 -6.6337 12.8639 C.2 1 UNCH -0.1500 + 12 C11 -6.9452 -5.9849 12.1482 C.2 1 UNCH -0.1500 + 13 C12 -6.6156 -4.6764 12.4759 C.2 1 UNCH -0.1500 + 14 C13 -7.2906 -4.0164 13.5115 C.2 1 UNCH -0.1500 + 15 H9 -9.3396 -6.5498 14.4571 H 1 UNCH 0.1500 + 16 H10 -8.1974 -7.6647 12.6309 H 1 UNCH 0.1500 + 17 H11 -6.4234 -6.4989 11.3455 H 1 UNCH 0.1500 + 18 H12 -5.8331 -4.1607 11.9245 H 1 UNCH 0.1500 + 19 H13 -6.9910 -2.9952 13.7042 H 1 UNCH 0.1500 + 20 H61 -8.2183 -0.8042 16.3313 H 1 UNCH 0.0000 + 21 H62 -9.4227 -1.3107 15.1445 H 1 UNCH 0.0000 + 22 H63 -7.7031 -1.4084 14.7635 H 1 UNCH 0.0000 + 23 H71 -6.7517 -2.6224 17.5158 H 1 UNCH 0.0000 + 24 H72 -7.0595 -4.3290 17.1848 H 1 UNCH 0.0000 + 25 H73 -6.2558 -3.3215 15.9740 H 1 UNCH 0.0000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 2 6 1 + 4 2 9 1 + 5 3 4 2 + 6 3 5 1 + 7 4 6 1 + 8 6 7 1 + 9 6 8 1 + 10 7 23 1 + 11 7 24 1 + 12 7 25 1 + 13 8 20 1 + 14 8 21 1 + 15 8 22 1 + 16 9 10 2 + 17 9 14 1 + 18 10 11 1 + 19 10 15 1 + 20 11 12 2 + 21 11 16 1 + 22 12 13 1 + 23 12 17 1 + 24 13 14 2 + 25 13 18 1 + 26 14 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,3-DIMETHYL-4-PHENYL-CDELTA-1--TRIAZOLINE-5-THIONE +@MOLECULE +CUDREY + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.4713 -5.3089 13.5870 S.3 1 CUDR -0.1330 + 2 N1 -8.3073 -3.5699 15.0514 N.2 1 CUDR -0.6830 + 3 N2 -10.6252 -3.6557 15.3492 N.3 1 CUDR -0.7320 + 4 C1 -9.5138 -4.0647 14.7780 C.2 1 CUDR 0.8250 + 5 C2 -7.2967 -4.1672 14.3175 C.2 1 CUDR 0.1830 + 6 C3 -7.7611 -5.1417 13.4662 C.2 1 CUDR -0.1100 + 7 H1 -8.1714 -2.8292 15.7340 H 1 CUDR 0.4500 + 8 H2 -6.2605 -3.8663 14.4343 H 1 CUDR 0.1500 + 9 H3 -7.1937 -5.7616 12.7834 H 1 CUDR 0.1500 + 10 H4 -10.6100 -2.9245 16.0425 H 1 CUDR 0.4500 + 11 H5 -11.4816 -4.1094 15.0576 H 1 CUDR 0.4500 +@BOND + 1 1 6 1 + 2 1 4 1 + 3 2 7 1 + 4 2 5 1 + 5 2 4 2 + 6 3 11 1 + 7 3 10 1 + 8 3 4 am + 9 5 8 1 + 10 5 6 2 + 11 6 9 1 +@SUBSTRUCTURE + 1 CUDR 1 +@COMMENT +COMMENT 2-AMINOTHIAZOLIUM TRICHLOROACETATE (AT -120 DEG.C) +@MOLECULE +CUFFAK + 37 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -12.1032 -1.4750 18.5715 O.3 1 UNCH -0.5325 + 2 C17 -6.6832 -7.2554 15.8273 C.2 1 UNCH -0.1500 + 3 O2 -6.9161 -0.4794 10.8681 O.3 1 UNCH -0.5325 + 4 C18 -6.3547 -5.9427 16.2064 C.2 1 UNCH -0.1500 + 5 O3 -8.9625 -1.3701 15.0092 O.3 1 UNCH -0.1650 + 6 C19 -7.1477 -4.8625 15.8054 C.2 1 UNCH -0.1500 + 7 O4 -10.1804 -5.0998 13.7439 O.3 1 UNCH -0.4300 + 8 C20 -9.7832 -6.4011 13.8501 C.2 1 UNCH 0.6338 + 9 O5 -10.3299 -7.3669 13.3573 O.2 1 UNCH -0.5700 + 10 H1 -11.8463 -0.5382 18.5828 H 1 UNCH 0.4500 + 11 C1 -9.8492 -2.1128 15.7517 C.2 1 UNCH 0.0825 + 12 H2 -6.6850 -0.9104 10.0287 H 1 UNCH 0.4500 + 13 C2 -10.5116 -1.4264 16.7736 C.2 1 UNCH -0.1500 + 14 H3 -10.3041 -0.3725 16.9284 H 1 UNCH 0.1500 + 15 C3 -11.4296 -2.1034 17.5668 C.2 1 UNCH 0.0825 + 16 H4 -12.4127 -3.9685 17.9831 H 1 UNCH 0.1500 + 17 C4 -11.6905 -3.4509 17.3572 C.2 1 UNCH -0.1500 + 18 H5 -11.2366 -5.1933 16.1980 H 1 UNCH 0.1500 + 19 C5 -11.0207 -4.1367 16.3422 C.2 1 UNCH -0.1500 + 20 H6 -8.3418 -4.6729 11.8634 H 1 UNCH 0.1500 + 21 C6 -10.0858 -3.4738 15.5252 C.2 1 UNCH -0.1435 + 22 H7 -7.3026 -3.0705 10.3293 H 1 UNCH 0.1500 + 23 C7 -9.2915 -4.1907 14.4505 C.3 1 UNCH 0.7105 + 24 H8 -7.8197 0.0696 13.2217 H 1 UNCH 0.1500 + 25 C8 -8.6939 -3.2238 13.4457 C.2 1 UNCH -0.1435 + 26 H9 -8.0790 -8.5098 14.7400 H 1 UNCH 0.1500 + 27 C9 -8.2378 -3.6363 12.1786 C.2 1 UNCH -0.1500 + 28 H10 -6.0545 -8.0828 16.1496 H 1 UNCH 0.1500 + 29 C10 -7.6433 -2.7260 11.3011 C.2 1 UNCH -0.1500 + 30 H11 -5.4732 -5.7659 16.8198 H 1 UNCH 0.1500 + 31 C11 -7.4954 -1.4001 11.6896 C.2 1 UNCH 0.0825 + 32 H12 -6.8886 -3.8496 16.1024 H 1 UNCH 0.1500 + 33 C12 -7.9376 -0.9710 12.9339 C.2 1 UNCH -0.1500 + 34 C13 -8.5431 -1.8795 13.8041 C.2 1 UNCH 0.0825 + 35 C14 -8.2665 -5.1192 15.0246 C.2 1 UNCH -0.1435 + 36 C15 -8.5752 -6.4143 14.6608 C.2 1 UNCH 0.0862 + 37 C16 -7.8096 -7.5026 15.0421 C.2 1 UNCH -0.1500 +@BOND + 1 1 10 1 + 2 1 15 1 + 3 2 4 2 + 4 2 28 1 + 5 2 37 1 + 6 3 12 1 + 7 3 31 1 + 8 4 6 1 + 9 4 30 1 + 10 5 11 1 + 11 5 34 1 + 12 6 32 1 + 13 6 35 2 + 14 7 8 1 + 15 7 23 1 + 16 8 9 2 + 17 8 36 1 + 18 11 13 2 + 19 11 21 1 + 20 13 14 1 + 21 13 15 1 + 22 15 17 2 + 23 16 17 1 + 24 17 19 1 + 25 18 19 1 + 26 19 21 2 + 27 20 27 1 + 28 21 23 1 + 29 22 29 1 + 30 23 25 1 + 31 23 35 1 + 32 24 33 1 + 33 25 27 2 + 34 25 34 1 + 35 26 37 1 + 36 27 29 1 + 37 29 31 2 + 38 31 33 1 + 39 33 34 2 + 40 35 36 1 + 41 36 37 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT FLUORESCIN METHANOL +@MOLECULE +CUGBEL + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.5820 -4.4342 15.5876 C.2 1 UNCH 0.1857 + 2 C2 -9.0482 -3.6074 14.6675 C.2 1 UNCH 0.0650 + 3 C3 -7.6549 -3.8119 14.2499 C.2 1 UNCH -0.1382 + 4 C4 -7.0807 -2.9182 13.1698 C.3 1 UNCH 0.1382 + 5 C5 -5.7498 -3.4166 12.5984 C.3 1 UNCH 0.0000 + 6 C6 -4.8212 -3.8986 13.7044 C.3 1 UNCH 0.0000 + 7 C7 -5.4632 -5.0377 14.4966 C.3 1 UNCH 0.1382 + 8 C8 -6.9084 -4.7821 14.8238 C.2 1 UNCH -0.1238 + 9 C9 -7.5167 -5.6643 15.8681 C.2 1 UNCH 0.6156 + 10 N10 -8.8289 -5.4163 16.1671 N.3 1 UNCH -0.5390 + 11 O11 -10.8623 -4.3111 16.0725 O.3 1 UNCH -0.3567 + 12 C12 -11.7393 -5.2835 15.4914 C.3 1 UNCH 0.2800 + 13 C13 -13.1448 -5.0069 15.9907 C.3 1 UNCH 0.0000 + 14 C14 -9.8325 -2.5519 14.1110 C.1 1 UNCH 0.4921 + 15 N15 -10.4540 -1.6968 13.6308 N.1 1 UNCH -0.5571 + 16 O16 -6.8841 -6.5570 16.4194 O.2 1 UNCH -0.5700 + 17 H4 -6.9353 -1.9138 13.5881 H 1 UNCH 0.0000 + 18 H41 -7.7829 -2.8249 12.3325 H 1 UNCH 0.0000 + 19 H5 -5.2708 -2.6128 12.0280 H 1 UNCH 0.0000 + 20 H51 -5.9365 -4.2381 11.8949 H 1 UNCH 0.0000 + 21 H6 -3.8697 -4.2361 13.2783 H 1 UNCH 0.0000 + 22 H61 -4.5908 -3.0635 14.3783 H 1 UNCH 0.0000 + 23 H7 -5.3963 -5.9664 13.9163 H 1 UNCH 0.0000 + 24 H71 -4.8822 -5.1870 15.4144 H 1 UNCH 0.0000 + 25 H10 -9.2377 -5.9834 16.8977 H 1 UNCH 0.3700 + 26 H12 -11.7185 -5.2097 14.3973 H 1 UNCH 0.0000 + 27 H121 -11.4362 -6.2935 15.7912 H 1 UNCH 0.0000 + 28 H13 -13.1837 -5.0634 17.0835 H 1 UNCH 0.0000 + 29 H131 -13.4605 -3.9960 15.7120 H 1 UNCH 0.0000 + 30 H132 -13.8553 -5.7263 15.5741 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 10 1 + 3 1 11 1 + 4 2 3 1 + 5 2 14 1 + 6 3 4 1 + 7 3 8 2 + 8 4 5 1 + 9 4 17 1 + 10 4 18 1 + 11 5 6 1 + 12 5 19 1 + 13 5 20 1 + 14 6 7 1 + 15 6 21 1 + 16 6 22 1 + 17 7 8 1 + 18 7 23 1 + 19 7 24 1 + 20 8 9 1 + 21 9 10 am + 22 9 16 2 + 23 10 25 1 + 24 11 12 1 + 25 12 13 1 + 26 12 26 1 + 27 12 27 1 + 28 13 28 1 + 29 13 29 1 + 30 13 30 1 + 31 14 15 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-ETHOXY-5,6,7,8-TETRAHYDRO-1-HYDROXYISOQUINOLINE-4-CARBONI +@MOLECULE +CUGGOA + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL2 1.7634 0.1396 9.2881 CL 1 CUGG -0.2900 + 2 CL4 5.6551 -1.1064 6.5856 CL 1 CUGG -0.1400 + 3 CL5 4.7804 1.9558 7.9592 CL 1 CUGG -0.2900 + 4 CL61 3.5357 0.4359 3.9632 CL 1 CUGG -0.2900 + 5 CL62 5.9475 1.7980 4.9128 CL 1 CUGG -0.2900 + 6 O11 1.1058 -0.0820 5.9128 O.2 1 CUGG -0.5700 + 7 O12 -0.4862 -1.0085 7.1506 O.3 1 CUGG -0.6500 + 8 O61 2.7152 3.3045 5.8126 O.3 1 CUGG -0.5200 + 9 O62 3.7699 3.4592 3.9042 O.2 1 CUGG -0.5200 + 10 N6 3.5146 2.8690 4.9687 N.2 1 CUGG 0.7998 + 11 C1 0.8093 -0.7087 6.9211 C.2 1 CUGG 0.6590 + 12 C2 1.7781 -1.1484 8.0356 C.3 1 CUGG 0.4892 + 13 C3 3.1998 -1.3358 7.5175 C.2 1 CUGG -0.2882 + 14 C4 4.0776 -0.4599 6.9778 C.2 1 CUGG 0.0018 + 15 C5 3.8774 1.0267 6.6800 C.3 1 CUGG 0.4282 + 16 C6 4.2003 1.5170 5.2393 C.3 1 CUGG 0.8202 + 17 C7 1.2954 -2.4477 8.6972 C.3 1 CUGG 0.0000 + 18 H1 -0.9777 -0.6097 6.4003 H 1 CUGG 0.5000 + 19 H2 3.5596 -2.3607 7.6344 H 1 CUGG 0.1500 + 20 H3 2.8357 1.2572 6.9030 H 1 CUGG 0.0000 + 21 H4 1.2060 -3.2539 7.9589 H 1 CUGG 0.0000 + 22 H5 1.9875 -2.7860 9.4781 H 1 CUGG 0.0000 + 23 H6 0.3106 -2.3302 9.1648 H 1 CUGG 0.0000 +@BOND + 1 1 12 1 + 2 2 14 1 + 3 3 15 1 + 4 4 16 1 + 5 5 16 1 + 6 6 11 2 + 7 7 18 1 + 8 7 11 1 + 9 8 10 1 + 10 9 10 2 + 11 10 16 1 + 12 11 12 1 + 13 12 17 1 + 14 12 13 1 + 15 13 19 1 + 16 13 14 2 + 17 14 15 1 + 18 15 20 1 + 19 15 16 1 + 20 17 23 1 + 21 17 22 1 + 22 17 21 1 +@SUBSTRUCTURE + 1 CUGG 1 +@COMMENT +COMMENT (E)-(2RS,5RS)-2,4,5,6,6-PENTACHLORO-2-METHYL-6-NITROHEX-3-E +@MOLECULE +CUGLOF + 28 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.8273 -3.6231 13.4854 C.3 1 UNCH 0.0000 + 2 C2 -7.9780 -4.4559 14.5550 C.3 1 UNCH 0.0000 + 3 C3 -7.9167 -2.9444 14.9363 C.3 1 UNCH 0.0000 + 4 C4 -9.3115 -2.4843 14.4324 C.3 1 UNCH 0.0000 + 5 C5 -10.2551 -3.0246 15.5363 C.3 1 UNCH 0.0000 + 6 C6 -10.3958 -4.3258 14.7534 C.3 1 UNCH 0.0000 + 7 C7 -9.1461 -4.8608 15.4886 C.3 1 UNCH 0.2410 + 8 C8 -9.3231 -3.7399 16.5478 C.3 1 UNCH 0.0000 + 9 C9 -8.5838 -4.4371 13.1452 C.3 1 UNCH 0.4804 + 10 C10 -8.0366 -2.9346 16.4574 C.3 1 UNCH 0.0000 + 11 N1 -8.8625 -5.7820 12.5786 N.2 1 UNCH 0.7998 + 12 N2 -7.6997 -3.7992 12.1289 N.2 1 UNCH 0.7998 + 13 N3 -9.1494 -6.2560 15.9868 N.2 1 UNCH 0.7990 + 14 O1 -8.0927 -6.6995 12.8876 O.3 1 UNCH -0.5200 + 15 O2 -9.8617 -5.9026 11.8590 O.2 1 UNCH -0.5200 + 16 O3 -6.4833 -4.0155 12.2087 O.3 1 UNCH -0.5200 + 17 O4 -8.2312 -3.0600 11.2899 O.2 1 UNCH -0.5200 + 18 O5 -9.9862 -7.0254 15.5058 O.3 1 UNCH -0.5200 + 19 O6 -8.3071 -6.5437 16.8430 O.2 1 UNCH -0.5200 + 20 H1 -10.5602 -3.3346 12.7294 H 1 UNCH 0.0000 + 21 H2 -7.0398 -4.9921 14.7214 H 1 UNCH 0.0000 + 22 H3 -7.0781 -2.3885 14.5131 H 1 UNCH 0.0000 + 23 H4 -9.4381 -1.4452 14.1284 H 1 UNCH 0.0000 + 24 H5 -11.1441 -2.4745 15.8338 H 1 UNCH 0.0000 + 25 H6 -11.3506 -4.8462 14.7587 H 1 UNCH 0.0000 + 26 H7 -9.7567 -3.9972 17.5147 H 1 UNCH 0.0000 + 27 H8 -7.1959 -3.4339 16.9487 H 1 UNCH 0.0000 + 28 H9 -8.1566 -1.9255 16.8643 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 6 1 + 3 1 9 1 + 4 1 20 1 + 5 2 3 1 + 6 2 7 1 + 7 2 9 1 + 8 2 21 1 + 9 3 4 1 + 10 3 10 1 + 11 3 22 1 + 12 4 5 1 + 13 4 23 1 + 14 5 6 1 + 15 5 8 1 + 16 5 24 1 + 17 6 7 1 + 18 6 25 1 + 19 7 8 1 + 20 7 13 1 + 21 8 10 1 + 22 8 26 1 + 23 9 11 1 + 24 9 12 1 + 25 10 27 1 + 26 10 28 1 + 27 11 14 1 + 28 11 15 2 + 29 12 16 1 + 30 12 17 2 + 31 13 18 1 + 32 13 19 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6,6,8-TRINITROPENTACYCLO(5.3.0.0-2,5-.0-3,9-.0-4,8-)DECANE +@MOLECULE +CUJYUB10 + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.9639 -6.3149 14.4015 S.3 1 CUJY -0.3710 + 2 O1 -11.6433 -4.7291 12.6864 O.3 1 CUJY -0.3370 + 3 C1 -7.4970 -4.3324 14.7922 C.2 1 CUJY -0.1500 + 4 C2 -6.4854 -3.6119 15.4130 C.2 1 CUJY -0.1500 + 5 C3 -6.7947 -2.4117 16.0318 C.2 1 CUJY -0.1500 + 6 C4 -8.1070 -1.9561 16.0245 C.2 1 CUJY 0.2110 + 7 C5 -10.4721 -2.1293 15.4930 C.3 1 CUJY 0.4880 + 8 C6 -8.8134 -3.8491 14.8086 C.2 1 CUJY 0.4472 + 9 C7 -9.8974 -4.5839 14.0969 C.2 1 CUJY 0.5048 + 10 C8 -11.5468 -6.4264 15.2652 C.3 1 CUJY 0.2300 + 11 N1 -9.0965 -2.6675 15.4311 N.2 1 CUJY -0.2100 + 12 N2 -10.6964 -3.9157 13.3175 N.2 1 CUJY -0.5130 + 13 H1 -12.0317 -4.1515 12.0001 H 1 CUJY 0.4000 + 14 H2 -7.2468 -5.2600 14.2791 H 1 CUJY 0.1500 + 15 H3 -5.4599 -3.9801 15.4022 H 1 CUJY 0.1500 + 16 H4 -6.0134 -1.8282 16.5159 H 1 CUJY 0.1500 + 17 H5 -8.3735 -1.0140 16.4979 H 1 CUJY 0.1500 + 18 H6 -11.1676 -2.9385 15.7271 H 1 CUJY 0.0000 + 19 H7 -10.6916 -1.6483 14.5372 H 1 CUJY 0.0000 + 20 H8 -10.5358 -1.3888 16.2956 H 1 CUJY 0.0000 + 21 H9 -11.6618 -7.4351 15.6712 H 1 CUJY 0.0000 + 22 H10 -11.5795 -5.7142 16.0942 H 1 CUJY 0.0000 + 23 H11 -12.3836 -6.2331 14.5906 H 1 CUJY 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 2 13 1 + 4 2 12 1 + 5 3 14 1 + 6 3 8 1 + 7 3 4 2 + 8 4 15 1 + 9 4 5 1 + 10 5 16 1 + 11 5 6 2 + 12 6 17 1 + 13 6 11 1 + 14 7 20 1 + 15 7 19 1 + 16 7 18 1 + 17 7 11 1 + 18 8 11 2 + 19 8 9 1 + 20 9 12 2 + 21 10 23 1 + 22 10 22 1 + 23 10 21 1 +@SUBSTRUCTURE + 1 CUJY 1 +@COMMENT +COMMENT 2-((HYDROXYIMINO)(METHYLTHIO)METHYL)-1-METHYLPYRIDINIUM CHL +@MOLECULE +CULGEV10 + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.3294 -3.2410 17.1700 S.1 1 CUKC 1.3328 + 2 N1 -8.4894 -3.3657 15.4742 N.3 1 CUKC -0.4520 + 3 O1 -9.6336 -3.2333 17.8034 O.2 1 CUKC -0.6500 + 4 O2 -7.3158 -4.1902 17.5844 O.2 1 CUKC -0.6500 + 5 O3 -9.8269 -3.0057 15.1563 O.3 1 CUKC -0.0650 + 6 C1 -9.4520 -4.3955 15.0546 C.3 1 CUKC 0.3110 + 7 C2 -9.3412 -4.9887 13.6780 C.2 1 CUKC -0.0320 + 8 C3 -10.4078 -4.9241 12.7646 C.2 1 CUKC -0.1500 + 9 C4 -10.3102 -5.4896 11.4904 C.2 1 CUKC -0.1500 + 10 C5 -9.1399 -6.1364 11.1038 C.2 1 CUKC -0.1500 + 11 C6 -8.0695 -6.2174 11.9897 C.2 1 CUKC -0.1500 + 12 C7 -8.1722 -5.6503 13.2624 C.2 1 CUKC -0.1500 + 13 C8 -7.6413 -1.6071 17.2902 C.3 1 CUKC 0.1052 + 14 H1 -9.7817 -5.0594 15.8484 H 1 CUKC 0.1000 + 15 H2 -11.3309 -4.4220 13.0487 H 1 CUKC 0.1500 + 16 H3 -11.1483 -5.4238 10.8012 H 1 CUKC 0.1500 + 17 H4 -9.0617 -6.5763 10.1130 H 1 CUKC 0.1500 + 18 H5 -7.1531 -6.7210 11.6923 H 1 CUKC 0.1500 + 19 H6 -7.3246 -5.7219 13.9427 H 1 CUKC 0.1500 + 20 H7 -7.4578 -1.3954 18.3458 H 1 CUKC 0.0000 + 21 H8 -8.3582 -0.8893 16.8874 H 1 CUKC 0.0000 + 22 H9 -6.7007 -1.5760 16.7371 H 1 CUKC 0.0000 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 2 + 4 1 13 1 + 5 2 5 1 + 6 2 6 1 + 7 5 6 1 + 8 6 7 1 + 9 6 14 1 + 10 7 8 2 + 11 7 12 1 + 12 8 9 1 + 13 8 15 1 + 14 9 10 2 + 15 9 16 1 + 16 10 11 1 + 17 10 17 1 + 18 11 12 2 + 19 11 18 1 + 20 12 19 1 + 21 13 20 1 + 22 13 21 1 + 23 13 22 1 +@SUBSTRUCTURE + 1 CUKC 1 +@COMMENT +COMMENT (S,S)-(-)-2-METHYLSULFONYL-3-PHENYLOXAZIRIDINE (ABSOLUTE CO +@MOLECULE +CULHIA10 + 39 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -11.4630 -3.6374 15.6609 C.3 1 UNCH 0.2700 + 2 C2 -12.5660 -4.3952 16.4004 C.3 1 UNCH 0.0000 + 3 C3 -12.0557 -4.9677 17.7161 C.3 1 UNCH 0.0000 + 4 C4 -10.7913 -5.7836 17.4816 C.3 1 UNCH 0.0000 + 5 C5 -9.7445 -4.9837 16.7026 C.3 1 UNCH 0.2700 + 6 N1 -10.2853 -4.4936 15.4215 N.3 1 UNCH -0.8100 + 7 C6 -9.2658 -3.7268 14.6629 C.3 1 UNCH 0.2700 + 8 C7 -8.1410 -4.6138 14.1070 C.3 1 UNCH 0.2560 + 9 N2 -7.1468 -3.8893 13.1994 N.3 1 UNCH -0.0180 + 10 C8 -7.8160 -3.4652 11.9019 C.3 1 UNCH 0.2560 + 11 C9 -6.8297 -2.8639 10.9062 C.3 1 UNCH 0.0000 + 12 C10 -5.6825 -3.8208 10.6097 C.3 1 UNCH 0.0000 + 13 C11 -5.0049 -4.2642 11.8996 C.3 1 UNCH 0.0000 + 14 C12 -6.0157 -4.8542 12.8741 C.3 1 UNCH 0.2560 + 15 O1 -6.6483 -2.7958 13.8604 O.3 1 UNCH -0.7500 + 16 H1 -11.8748 -3.2977 14.7027 H 1 UNCH 0.0000 + 17 H2 -11.1839 -2.7418 16.2318 H 1 UNCH 0.0000 + 18 H3 -13.4112 -3.7245 16.5925 H 1 UNCH 0.0000 + 19 H4 -12.9411 -5.2092 15.7672 H 1 UNCH 0.0000 + 20 H5 -12.8269 -5.5921 18.1802 H 1 UNCH 0.0000 + 21 H6 -11.8398 -4.1490 18.4134 H 1 UNCH 0.0000 + 22 H7 -11.0426 -6.6964 16.9265 H 1 UNCH 0.0000 + 23 H8 -10.3731 -6.1006 18.4438 H 1 UNCH 0.0000 + 24 H9 -8.8933 -5.6500 16.5279 H 1 UNCH 0.0000 + 25 H10 -9.3855 -4.1491 17.3192 H 1 UNCH 0.0000 + 26 H11 -8.8496 -2.9199 15.2792 H 1 UNCH 0.0000 + 27 H12 -9.7694 -3.2445 13.8190 H 1 UNCH 0.0000 + 28 H13 -8.5435 -5.4465 13.5185 H 1 UNCH 0.0000 + 29 H14 -7.5318 -5.0158 14.9239 H 1 UNCH 0.0000 + 30 H15 -8.3002 -4.3583 11.4916 H 1 UNCH 0.0000 + 31 H16 -8.5731 -2.7202 12.1605 H 1 UNCH 0.0000 + 32 H17 -6.4248 -1.9261 11.3055 H 1 UNCH 0.0000 + 33 H18 -7.3526 -2.6155 9.9761 H 1 UNCH 0.0000 + 34 H19 -6.0644 -4.6982 10.0735 H 1 UNCH 0.0000 + 35 H20 -4.9524 -3.3354 9.9527 H 1 UNCH 0.0000 + 36 H21 -4.4991 -3.4065 12.3588 H 1 UNCH 0.0000 + 37 H22 -4.2331 -5.0084 11.6742 H 1 UNCH 0.0000 + 38 H23 -6.4830 -5.7554 12.4604 H 1 UNCH 0.0000 + 39 H24 -5.5334 -5.0992 13.8270 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 16 1 + 4 1 17 1 + 5 2 3 1 + 6 2 18 1 + 7 2 19 1 + 8 3 4 1 + 9 3 20 1 + 10 3 21 1 + 11 4 5 1 + 12 4 22 1 + 13 4 23 1 + 14 5 6 1 + 15 5 24 1 + 16 5 25 1 + 17 6 7 1 + 18 7 8 1 + 19 7 26 1 + 20 7 27 1 + 21 8 9 1 + 22 8 28 1 + 23 8 29 1 + 24 9 10 1 + 25 9 14 1 + 26 9 15 1 + 27 10 11 1 + 28 10 30 1 + 29 10 31 1 + 30 11 12 1 + 31 11 32 1 + 32 11 33 1 + 33 12 13 1 + 34 12 34 1 + 35 12 35 1 + 36 13 14 1 + 37 13 36 1 + 38 13 37 1 + 39 14 38 1 + 40 14 39 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(2-(PIPERIDINO)ETHYL)PIPERIDINE N-OXIDE TRIHYDRATE 1,2-DI +@MOLECULE +CULVEK + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -9.2832 -6.1497 16.1521 P 1 UNCH 1.5584 + 2 CL1 -7.4161 -6.8199 16.4168 CL 1 UNCH -0.3160 + 3 O1 -9.4305 -4.8785 17.1294 O.3 1 UNCH -0.5512 + 4 O2 -10.3070 -7.2201 16.3638 O.2 1 UNCH -0.7000 + 5 O3 -9.3001 -5.4880 14.6853 O.3 1 UNCH -0.5512 + 6 C1 -8.6487 -3.7311 16.8615 C.3 1 UNCH 0.2800 + 7 C2 -8.8967 -3.1871 15.4347 C.3 1 UNCH 0.0000 + 8 C3 -8.5253 -4.3220 14.4310 C.3 1 UNCH 0.2800 + 9 C4 -10.3676 -2.7482 15.3313 C.3 1 UNCH 0.0000 + 10 C5 -7.9962 -1.9533 15.2393 C.3 1 UNCH 0.0000 + 11 C6 -8.6206 -3.9983 12.9131 C.3 1 UNCH 0.0000 + 12 C7 -7.6736 -4.9294 12.1356 C.3 1 UNCH 0.0000 + 13 C8 -10.0219 -4.1550 12.3103 C.3 1 UNCH 0.0000 + 14 H1 -7.5910 -3.9720 17.0172 H 1 UNCH 0.0000 + 15 H2 -8.9090 -2.9765 17.6126 H 1 UNCH 0.0000 + 16 H3 -7.4763 -4.5789 14.6298 H 1 UNCH 0.0000 + 17 H4 -11.0531 -3.6018 15.3277 H 1 UNCH 0.0000 + 18 H5 -10.6453 -2.1083 16.1773 H 1 UNCH 0.0000 + 19 H6 -10.5460 -2.1582 14.4275 H 1 UNCH 0.0000 + 20 H7 -8.1609 -1.2169 16.0347 H 1 UNCH 0.0000 + 21 H8 -8.1954 -1.4470 14.2897 H 1 UNCH 0.0000 + 22 H9 -6.9362 -2.2299 15.2588 H 1 UNCH 0.0000 + 23 H10 -8.2742 -2.9767 12.7282 H 1 UNCH 0.0000 + 24 H11 -6.6393 -4.8023 12.4729 H 1 UNCH 0.0000 + 25 H12 -7.9479 -5.9815 12.2684 H 1 UNCH 0.0000 + 26 H13 -7.6989 -4.7048 11.0637 H 1 UNCH 0.0000 + 27 H14 -10.7529 -3.4952 12.7777 H 1 UNCH 0.0000 + 28 H15 -10.3895 -5.1830 12.3978 H 1 UNCH 0.0000 + 29 H16 -10.0062 -3.9052 11.2431 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 2 + 4 1 5 1 + 5 3 6 1 + 6 5 8 1 + 7 6 7 1 + 8 6 14 1 + 9 6 15 1 + 10 7 8 1 + 11 7 9 1 + 12 7 10 1 + 13 8 11 1 + 14 8 16 1 + 15 9 17 1 + 16 9 18 1 + 17 9 19 1 + 18 10 20 1 + 19 10 21 1 + 20 10 22 1 + 21 11 12 1 + 22 11 13 1 + 23 11 23 1 + 24 12 24 1 + 25 12 25 1 + 26 12 26 1 + 27 13 27 1 + 28 13 28 1 + 29 13 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-2-CHLORO-4-ISOPROPYL-5,5-DIMETHYL-1,3,2LAMBDA-5--DIOX +@MOLECULE +CUNVAI + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.2201 -1.5821 12.9513 C.2 1 CUNV 0.1330 + 2 C2 -9.3883 -1.1775 14.0000 C.2 1 CUNV -0.1500 + 3 C3 -8.7855 -2.1568 14.8123 C.2 1 CUNV 0.1330 + 4 C4 -8.9793 -3.5386 14.5850 C.2 1 CUNV 0.1000 + 5 C5 -9.8492 -3.8993 13.5375 C.2 1 CUNV -0.1500 + 6 C6 -10.4571 -2.9398 12.7189 C.2 1 CUNV -0.1500 + 7 C9 -7.9261 -6.7209 15.7904 C.2 1 CUNV 0.3890 + 8 C20 -7.9212 -8.1565 15.2992 C.2 1 CUNV 0.5090 + 9 O21 -6.9885 -8.8884 15.6041 O.2 1 CUNV -0.5700 + 10 N2 -10.8557 -0.5744 12.0920 N.2 1 CUNV 0.9070 + 11 N1 -7.9343 -1.6952 15.9129 N.2 1 CUNV 0.9070 + 12 N7 -8.4420 -4.5340 15.4426 N.3 1 CUNV -0.4580 + 13 N8 -8.4848 -5.8276 15.0252 N.2 1 CUNV -0.4920 + 14 O3 -10.5568 0.6118 12.2842 O.3 1 CUNV -0.5200 + 15 O4 -11.6482 -0.9722 11.2276 O.2 1 CUNV -0.5200 + 16 O2 -8.1563 -0.5680 16.3747 O.3 1 CUNV -0.5200 + 17 O1 -7.0399 -2.4580 16.3114 O.2 1 CUNV -0.5200 + 18 C10 -7.2457 -6.4641 17.1077 C.3 1 CUNV 0.0610 + 19 C22 -9.0826 -8.5858 14.4524 C.3 1 CUNV 0.0610 + 20 H2 -9.2117 -0.1191 14.1887 H 1 CUNV 0.1500 + 21 H5 -10.0633 -4.9507 13.3485 H 1 CUNV 0.1500 + 22 H6 -11.1119 -3.2730 11.9150 H 1 CUNV 0.1500 + 23 H7 -7.5983 -4.2107 15.9382 H 1 CUNV 0.4000 + 24 H101 -7.2140 -7.3764 17.7097 H 1 CUNV 0.0000 + 25 H102 -7.7859 -5.7060 17.6808 H 1 CUNV 0.0000 + 26 H103 -6.2240 -6.1217 16.9227 H 1 CUNV 0.0000 + 27 H221 -9.0382 -8.0910 13.4793 H 1 CUNV 0.0000 + 28 H222 -10.0209 -8.3472 14.9597 H 1 CUNV 0.0000 + 29 H223 -9.0393 -9.6681 14.3005 H 1 CUNV 0.0000 +@BOND + 1 1 10 1 + 2 1 6 1 + 3 1 2 2 + 4 2 20 1 + 5 2 3 1 + 6 3 11 1 + 7 3 4 2 + 8 4 12 1 + 9 4 5 1 + 10 5 21 1 + 11 5 6 2 + 12 6 22 1 + 13 7 18 1 + 14 7 13 2 + 15 7 8 1 + 16 8 19 1 + 17 8 9 2 + 18 10 15 2 + 19 10 14 1 + 20 11 17 2 + 21 11 16 1 + 22 12 23 1 + 23 12 13 1 + 24 18 26 1 + 25 18 25 1 + 26 18 24 1 + 27 19 29 1 + 28 19 28 1 + 29 19 27 1 +@SUBSTRUCTURE + 1 CUNV 1 +@COMMENT +COMMENT (E)-2,3-BUTANEDIONE-2',4'-DINITROPHENYLHYDRAZONE +@MOLECULE +CUNVEM + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -8.2441 -1.3553 13.8609 CL 1 CUNV -0.2273 + 2 S1 -7.1509 -3.6455 16.0887 S.3 1 CUNV -0.3710 + 3 O2 -10.8890 -3.3256 13.6066 O.3 1 CUNV -0.4300 + 4 O1 -11.6743 -1.5381 14.8283 O.2 1 CUNV -0.5700 + 5 N1 -10.5980 -4.9614 16.8452 N.1 1 CUNV -0.5571 + 6 C1 -9.3798 -2.1572 14.9964 C.3 1 CUNV 0.2273 + 7 C2 -8.8679 -3.1966 16.0057 C.3 1 CUNV 0.2460 + 8 C3 -9.1763 -1.7703 16.4451 C.3 1 CUNV -0.2000 + 9 C4 -9.8138 -4.1865 16.4830 C.1 1 CUNV 0.4521 + 10 C5 -10.7743 -2.2880 14.4783 C.2 1 CUNV 0.7200 + 11 C6 -12.2115 -3.5114 13.1001 C.3 1 CUNV 0.2800 + 12 C7 -6.9269 -5.1286 15.0165 C.3 1 CUNV 0.2300 + 13 C8 -7.2266 -6.3987 15.8229 C.3 1 CUNV 0.0000 + 14 C9 -7.7774 -5.0907 13.7435 C.3 1 CUNV 0.0000 + 15 C10 -5.4408 -5.1393 14.6157 C.3 1 CUNV 0.0000 + 16 H61 -12.1963 -4.3674 12.4199 H 1 CUNV 0.0000 + 17 H62 -12.5344 -2.6284 12.5398 H 1 CUNV 0.0000 + 18 H63 -12.9071 -3.7296 13.9165 H 1 CUNV 0.0000 + 19 H81 -6.6277 -6.4504 16.7397 H 1 CUNV 0.0000 + 20 H82 -6.9912 -7.2938 15.2344 H 1 CUNV 0.0000 + 21 H83 -8.2810 -6.4748 16.1014 H 1 CUNV 0.0000 + 22 H91 -7.5809 -4.1939 13.1477 H 1 CUNV 0.0000 + 23 H92 -8.8482 -5.1399 13.9592 H 1 CUNV 0.0000 + 24 H93 -7.5504 -5.9525 13.1039 H 1 CUNV 0.0000 + 25 H101 -5.1695 -4.2467 14.0390 H 1 CUNV 0.0000 + 26 H102 -5.2133 -6.0093 13.9879 H 1 CUNV 0.0000 + 27 H103 -4.7807 -5.1942 15.4898 H 1 CUNV 0.0000 + 28 H31 -8.3574 -1.1025 16.6912 H 1 CUNV 0.1000 + 29 H32 -10.0587 -1.5832 17.0504 H 1 CUNV 0.1000 +@BOND + 1 1 6 1 + 2 2 7 1 + 3 2 12 1 + 4 3 10 1 + 5 3 11 1 + 6 4 10 2 + 7 5 9 3 + 8 6 7 1 + 9 6 8 1 + 10 6 10 1 + 11 7 8 1 + 12 7 9 1 + 13 8 28 1 + 14 8 29 1 + 15 11 16 1 + 16 11 17 1 + 17 11 18 1 + 18 12 13 1 + 19 12 14 1 + 20 12 15 1 + 21 13 19 1 + 22 13 20 1 + 23 13 21 1 + 24 14 22 1 + 25 14 23 1 + 26 14 24 1 + 27 15 25 1 + 28 15 26 1 + 29 15 27 1 +@SUBSTRUCTURE + 1 CUNV 1 +@COMMENT +COMMENT METHYL 2-T-BUTYLTHIO-1-CHLORO-2-CYANO-1-CYCLOPROPANECARBOXY +@MOLECULE +CURZIY + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.9541 -3.3456 14.8147 S.1 1 CURJ 1.0896 + 2 O1 -9.6395 -6.0227 12.1028 O.3 1 CURJ -0.2960 + 3 O2 -9.7583 -2.2609 13.8747 O.2 1 CURJ -0.6500 + 4 O3 -10.6247 -3.1318 16.0816 O.2 1 CURJ -0.6500 + 5 C1 -10.7243 -4.7648 13.9837 C.3 1 CURJ 0.2002 + 6 C3 -8.3896 -4.2173 15.1289 C.3 1 CURJ 0.1052 + 7 C4 -8.5894 -5.5521 14.3498 C.3 1 CURJ 0.0950 + 8 C5 -8.6733 -5.2791 12.8544 C.3 1 CURJ -0.0470 + 9 C6 -10.0530 -4.7544 12.6289 C.3 1 CURJ -0.0470 + 10 C7 -10.0507 -5.9497 14.7065 C.3 1 CURJ 0.0000 + 11 C9 -6.8780 -2.2690 15.6974 C.3 1 CURJ 0.0000 + 12 C8 -7.1457 -3.4238 14.7409 C.3 1 CURJ 0.0000 + 13 H1 -11.8117 -4.7224 13.9971 H 1 CURJ 0.0000 + 14 H3 -8.3733 -4.4426 16.2029 H 1 CURJ 0.0000 + 15 H4 -7.8523 -6.3166 14.6061 H 1 CURJ 0.0000 + 16 H5 -7.8142 -4.8619 12.3559 H 1 CURJ 0.1000 + 17 H6 -10.2503 -3.9301 11.9624 H 1 CURJ 0.1000 + 18 H71 -10.2364 -5.9690 15.7854 H 1 CURJ 0.0000 + 19 H72 -10.3366 -6.9163 14.2777 H 1 CURJ 0.0000 + 20 H91 -5.9601 -1.7470 15.4086 H 1 CURJ 0.0000 + 21 H912 -6.7514 -2.6311 16.7227 H 1 CURJ 0.0000 + 22 H93 -7.6945 -1.5412 15.6889 H 1 CURJ 0.0000 + 23 H81 -6.2755 -4.0907 14.7560 H 1 CURJ 0.0000 + 24 H82 -7.2258 -3.0248 13.7241 H 1 CURJ 0.0000 +@BOND + 1 1 3 2 + 2 1 4 2 + 3 1 5 1 + 4 1 6 1 + 5 2 8 1 + 6 2 9 1 + 7 5 9 1 + 8 5 10 1 + 9 5 13 1 + 10 6 7 1 + 11 6 12 1 + 12 6 14 1 + 13 7 8 1 + 14 7 10 1 + 15 7 15 1 + 16 8 9 1 + 17 8 16 1 + 18 9 17 1 + 19 10 18 1 + 20 10 19 1 + 21 11 12 1 + 22 11 20 1 + 23 11 21 1 + 24 11 22 1 + 25 12 23 1 + 26 12 24 1 +@SUBSTRUCTURE + 1 CURJ 1 +@COMMENT +COMMENT ENDO-3-ETHYL-EXO-5,6-EPOXY-2-THIABICYCLO(2.2.1)HEPTANE-2,2- +@MOLECULE +CUVFOO + 24 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.8355 -0.9925 0.3674 O.2 1 UNCH -0.9000 + 2 O2 0.8867 -1.5595 2.3986 O.3 1 UNCH -0.9000 + 3 C1 0.9745 -1.4797 1.1287 C.2 1 UNCH 0.9060 + 4 C2 -0.2997 -2.0991 0.4939 C.3 1 UNCH 0.3970 + 5 N1 -1.3713 -2.2257 1.5702 N.3 1 UNCH -0.8530 + 6 C3 -0.8115 -1.3269 -0.7155 C.3 1 UNCH 0.2300 + 7 S1 -1.5326 0.2886 -0.2335 S.3 1 UNCH -0.2300 + 8 S2 -0.9906 1.5017 -1.8018 S.3 1 UNCH -0.2300 + 9 C4 0.7979 1.8117 -1.5219 C.3 1 UNCH 0.2300 + 10 C5 1.1064 2.4536 -0.1774 C.3 1 UNCH 0.0610 + 11 C6 2.5743 2.7547 -0.0776 C.2 1 UNCH 0.6590 + 12 O3 3.3855 2.7905 -0.9877 O.2 1 UNCH -0.5700 + 13 O4 2.9432 3.0631 1.1817 O.3 1 UNCH -0.6500 + 14 H1 -0.0501 -3.1280 0.2108 H 1 UNCH 0.0000 + 15 H2 -1.9449 -1.3775 1.6187 H 1 UNCH 0.4500 + 16 H3 -0.7742 -2.1830 2.4351 H 1 UNCH 0.4500 + 17 H4 -1.9082 -3.0903 1.5648 H 1 UNCH 0.4500 + 18 H5 -0.0064 -1.1883 -1.4436 H 1 UNCH 0.0000 + 19 H6 -1.6043 -1.8994 -1.2093 H 1 UNCH 0.0000 + 20 H7 1.3455 0.8721 -1.6492 H 1 UNCH 0.0000 + 21 H8 1.1257 2.4702 -2.3346 H 1 UNCH 0.0000 + 22 H9 0.8479 1.7804 0.6456 H 1 UNCH 0.0000 + 23 H10 0.5599 3.3955 -0.0592 H 1 UNCH 0.0000 + 24 H11 3.9157 3.1642 1.1245 H 1 UNCH 0.5000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 5 1 + 5 4 6 1 + 6 4 14 1 + 7 5 15 1 + 8 5 16 1 + 9 5 17 1 + 10 6 7 1 + 11 6 18 1 + 12 6 19 1 + 13 7 8 1 + 14 8 9 1 + 15 9 10 1 + 16 9 20 1 + 17 9 21 1 + 18 10 11 1 + 19 10 22 1 + 20 10 23 1 + 21 11 12 2 + 22 11 13 1 + 23 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT L-2-AMINO-4,5-DITHIAOCTANEDIOIC ACID 2-DEAMINO-L-CYSTINE,PE +@MOLECULE +CUVGAB + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.2711 1.3119 5.5260 P 1 CUVG 0.9712 + 2 O1 1.3020 1.8936 4.4238 O.3 1 CUVG -0.7712 + 3 O2 -0.0504 2.3026 6.5999 O.2 1 CUVG -0.7000 + 4 O3 2.0710 -0.5619 5.0864 O.3 1 CUVG -0.6800 + 5 O4 -2.2962 0.7823 5.5242 O.3 1 CUVG -0.6800 + 6 C1 0.9764 -0.2985 5.9843 C.3 1 CUVG 0.2800 + 7 C2 -0.1452 -1.3142 5.6934 C.3 1 CUVG 0.0000 + 8 C3 -0.8660 -0.8272 4.4200 C.3 1 CUVG 0.0000 + 9 C4 -1.1741 0.6662 4.6333 C.3 1 CUVG 0.2800 + 10 C5 1.4915 -0.3839 7.4064 C.3 1 CUVG 0.0000 + 11 C6 -1.5182 1.3869 3.3451 C.3 1 CUVG 0.0000 + 12 H1 1.1089 2.8194 4.1662 H 1 CUVG 0.5000 + 13 H3 2.3450 0.3052 4.7161 H 1 CUVG 0.4000 + 14 H4 -2.1656 1.5969 6.0538 H 1 CUVG 0.4000 + 15 H21 0.2509 -2.3237 5.5408 H 1 CUVG 0.0000 + 16 H22 -0.8619 -1.3424 6.5225 H 1 CUVG 0.0000 + 17 H31 -0.2034 -0.9634 3.5574 H 1 CUVG 0.0000 + 18 H32 -1.7781 -1.4105 4.2560 H 1 CUVG 0.0000 + 19 H51 2.2901 0.3486 7.5664 H 1 CUVG 0.0000 + 20 H52 0.6975 -0.1785 8.1308 H 1 CUVG 0.0000 + 21 H53 1.9154 -1.3719 7.6145 H 1 CUVG 0.0000 + 22 H61 -2.4256 0.9733 2.8923 H 1 CUVG 0.0000 + 23 H62 -1.7119 2.4469 3.5421 H 1 CUVG 0.0000 + 24 H63 -0.7023 1.3238 2.6189 H 1 CUVG 0.0000 +@BOND + 1 1 9 1 + 2 1 6 1 + 3 1 3 2 + 4 1 2 1 + 5 2 12 1 + 6 4 13 1 + 7 4 6 1 + 8 5 14 1 + 9 5 9 1 + 10 6 10 1 + 11 6 7 1 + 12 7 16 1 + 13 7 15 1 + 14 7 8 1 + 15 8 18 1 + 16 8 17 1 + 17 8 9 1 + 18 9 11 1 + 19 10 21 1 + 20 10 20 1 + 21 10 19 1 + 22 11 24 1 + 23 11 23 1 + 24 11 22 1 +@SUBSTRUCTURE + 1 CUVG 1 +@COMMENT +COMMENT 1,2,5-TRIHYDROXY-2,5-DIMETHYLPHOSPHOLANE 1-OXIDE +@MOLECULE +CUVJOS + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.9250 -4.7746 13.8897 N.3 1 CHGB -0.4820 + 2 N2 -8.7096 -3.7189 14.4561 N.3 1 CHGB -0.6410 + 3 C3 -10.1657 -4.0321 14.2807 C.3 1 CHGB 0.5030 + 4 H11 -6.9143 -4.5764 13.8655 H 1 CHGB 0.3600 + 5 H21 -8.0096 -5.6747 14.3834 H 1 CHGB 0.3600 + 6 H12 -8.5035 -3.5598 15.4589 H 1 CHGB 0.4500 + 7 H22 -8.5181 -2.8200 13.9759 H 1 CHGB 0.4500 + 8 H13 -10.3745 -4.1295 13.2119 H 1 CHGB 0.0000 + 9 H23 -10.3896 -4.9543 14.8235 H 1 CHGB 0.0000 + 10 H33 -10.7262 -3.1954 14.7040 H 1 CHGB 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 2 3 1 + 5 2 6 1 + 6 2 7 1 + 7 3 8 1 + 8 3 9 1 + 9 3 10 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT 1-METHYLHYDRAZINIUM TRIFLUOROACETATE (AT 150 DEG.K) +@MOLECULE +CUYRAP + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.8829 -4.2706 13.7293 O.3 1 UNCH -0.2800 + 2 O2 -13.1347 -4.3028 12.0880 O.2 1 UNCH -0.5700 + 3 O3 -6.4339 -4.1868 12.4835 O.3 1 UNCH -0.3625 + 4 O4 -7.4251 -4.2251 17.1760 O.3 1 UNCH -0.3625 + 5 C2 -10.7839 -4.2627 12.3635 C.2 1 UNCH 0.0550 + 6 C3 -9.4483 -4.2377 12.0048 C.2 1 UNCH -0.1500 + 7 C4 -7.3171 -4.2070 13.5283 C.2 1 UNCH 0.0825 + 8 C5 -6.9723 -4.2070 14.8914 C.2 1 UNCH -0.1500 + 9 C6 -7.9432 -4.2286 15.9057 C.2 1 UNCH 0.0825 + 10 C7 -9.3034 -4.2511 15.5912 C.2 1 UNCH -0.1500 + 11 C8 -9.6204 -4.2506 14.2349 C.2 1 UNCH 0.1400 + 12 C9 -8.6888 -4.2297 13.2085 C.2 1 UNCH 0.0000 + 13 C10 -12.0091 -4.2808 11.5893 C.2 1 UNCH 0.5940 + 14 C11 -11.8531 -4.2714 10.0876 C.3 1 UNCH 0.0610 + 15 C12 -5.0492 -4.1639 12.8076 C.3 1 UNCH 0.2800 + 16 C13 -8.3579 -4.2463 18.2506 C.3 1 UNCH 0.2800 + 17 H3 -9.0485 -4.2262 11.0004 H 1 UNCH 0.1500 + 18 H5 -5.9316 -4.1901 15.2032 H 1 UNCH 0.1500 + 19 H7 -10.0948 -4.2683 16.3273 H 1 UNCH 0.1500 + 20 H111 -11.3021 -5.1578 9.7615 H 1 UNCH 0.0000 + 21 H112 -11.3337 -3.3633 9.7695 H 1 UNCH 0.0000 + 22 H121 -4.4869 -4.1498 11.8690 H 1 UNCH 0.0000 + 23 H122 -4.7573 -5.0652 13.3566 H 1 UNCH 0.0000 + 24 H131 -7.7899 -4.2405 19.1858 H 1 UNCH 0.0000 + 25 H132 -8.9919 -3.3535 18.2403 H 1 UNCH 0.0000 + 26 H114 -12.8410 -4.2867 9.6174 H 1 UNCH 0.0000 + 27 H124 -4.7891 -3.2578 13.3646 H 1 UNCH 0.0000 + 28 H134 -8.9601 -5.1607 18.2323 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 11 1 + 3 2 13 2 + 4 3 7 1 + 5 3 15 1 + 6 4 9 1 + 7 4 16 1 + 8 5 6 2 + 9 5 13 1 + 10 6 12 1 + 11 6 17 1 + 12 7 8 2 + 13 7 12 1 + 14 8 9 1 + 15 8 18 1 + 16 9 10 2 + 17 10 11 1 + 18 10 19 1 + 19 11 12 2 + 20 13 14 1 + 21 14 20 1 + 22 14 21 1 + 23 14 26 1 + 24 15 22 1 + 25 15 23 1 + 26 15 27 1 + 27 16 24 1 + 28 16 25 1 + 29 16 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-ACETYL-4,6-DIMETHOXYBENZOFURAN CALEBERTIN A +@MOLECULE +CYANAM01 + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.6629 -3.9830 13.6271 N.3 1 UNCH -0.9660 + 2 N2 -8.9020 -5.0695 15.8536 N.1 1 UNCH -0.5571 + 3 C1 -8.7849 -4.5586 14.8239 C.1 1 UNCH 0.6831 + 4 H1 -8.1204 -4.4494 12.8944 H 1 UNCH 0.4200 + 5 H2 -9.4366 -3.4267 13.2521 H 1 UNCH 0.4200 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 2 3 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CYANAMIDE (AT 108 DEG.K) +@MOLECULE +CYGUAN01 + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -12.0017 -3.0646 10.1904 CL 1 CYGU -0.1770 + 2 N1 -8.6693 -4.3083 14.8823 N.2 1 CYGU -0.6929 + 3 C1 -7.5194 -3.4519 15.2508 C.3 1 CYGU 0.8586 + 4 N2 -7.3224 -3.6251 16.6673 N.3 1 CYGU -0.8191 + 5 C2 -7.5433 -4.8136 17.2470 C.2 1 CYGU 0.5500 + 6 N3 -8.3272 -5.6984 16.7484 N.2 1 CYGU -0.6510 + 7 C3 -8.9808 -5.3729 15.6214 C.2 1 CYGU 0.9098 + 8 C4 -6.2583 -3.9069 14.5105 C.3 1 CYGU 0.0000 + 9 C5 -7.7901 -1.9634 15.0015 C.3 1 CYGU 0.0000 + 10 N4 -6.9157 -4.9744 18.4274 N.3 1 CYGU -0.8500 + 11 N5 -9.9524 -6.2036 15.3109 N.3 1 CYGU -0.7544 + 12 C6 -9.4273 -4.0093 13.7849 C.2 1 CYGU 0.3490 + 13 C7 -8.9933 -4.3366 12.4949 C.2 1 CYGU -0.1500 + 14 C8 -9.7889 -4.0421 11.3825 C.2 1 CYGU -0.1500 + 15 C9 -11.0254 -3.4230 11.5563 C.2 1 CYGU 0.1770 + 16 C10 -11.4754 -3.1011 12.8347 C.2 1 CYGU -0.1500 + 17 C11 -10.6799 -3.3975 13.9453 C.2 1 CYGU -0.1500 + 18 H1 -6.3182 -3.6904 13.4396 H 1 CYGU 0.0000 + 19 H2 -6.0964 -4.9852 14.6211 H 1 CYGU 0.0000 + 20 H3 -5.3675 -3.3990 14.8983 H 1 CYGU 0.0000 + 21 H4 -7.9101 -1.7404 13.9360 H 1 CYGU 0.0000 + 22 H5 -6.9629 -1.3457 15.3714 H 1 CYGU 0.0000 + 23 H6 -8.6975 -1.6329 15.5203 H 1 CYGU 0.0000 + 24 H7 -6.6208 -3.0300 17.0908 H 1 CYGU 0.4000 + 25 H8 -5.9686 -4.6282 18.5182 H 1 CYGU 0.4000 + 26 H9 -7.0039 -5.9094 18.8174 H 1 CYGU 0.4000 + 27 H10 -10.0902 -6.9675 15.9583 H 1 CYGU 0.4500 + 28 H11 -10.5309 -6.1175 14.4931 H 1 CYGU 0.4500 + 29 H12 -8.0426 -4.8394 12.3364 H 1 CYGU 0.1500 + 30 H13 -9.4420 -4.2993 10.3829 H 1 CYGU 0.1500 + 31 H14 -12.4404 -2.6155 12.9704 H 1 CYGU 0.1500 + 32 H15 -11.0383 -3.1319 14.9384 H 1 CYGU 0.1500 +@BOND + 1 1 15 1 + 2 2 12 1 + 3 2 7 2 + 4 2 3 1 + 5 3 9 1 + 6 3 8 1 + 7 3 4 1 + 8 4 24 1 + 9 4 5 am + 10 5 10 am + 11 5 6 2 + 12 6 7 am + 13 7 11 am + 14 8 20 1 + 15 8 19 1 + 16 8 18 1 + 17 9 23 1 + 18 9 22 1 + 19 9 21 1 + 20 10 26 1 + 21 10 25 1 + 22 11 28 1 + 23 11 27 1 + 24 12 17 2 + 25 12 13 1 + 26 13 29 1 + 27 13 14 2 + 28 14 30 1 + 29 14 15 1 + 30 15 16 2 + 31 16 31 1 + 32 16 17 1 + 33 17 32 1 +@SUBSTRUCTURE + 1 CYGU 1 +@COMMENT +COMMENT 4,6-DIAMINO-1-(P-CHLOROPHENYL)-1,2-DIHYDRO-2,2-DIMETHYL-S-T +@MOLECULE +DABHAP + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.0187 -7.6751 13.3460 C.2 1 DABH 0.1000 + 2 C2 -6.7736 -7.1913 13.7626 C.2 1 DABH -0.1500 + 3 C3 -6.6797 -6.2325 14.7745 C.2 1 DABH -0.1500 + 4 C4 -7.8436 -5.7851 15.4011 C.2 1 DABH -0.0090 + 5 C5 -9.0900 -6.3026 15.0422 C.2 1 DABH -0.1500 + 6 C6 -9.1673 -7.2614 14.0293 C.2 1 DABH -0.1500 + 7 N7 -8.0913 -8.7190 12.4181 N.3 1 DABH -0.9000 + 8 S8 -7.7546 -4.5393 16.6739 S.1 1 DABH 1.4970 + 9 O9 -6.4305 -3.9502 16.6171 O.2 1 DABH -0.6500 + 10 O10 -8.2055 -5.1937 17.8862 O.2 1 DABH -0.6500 + 11 N11 -8.8593 -3.4349 16.2477 N.2 1 DABH -0.6380 + 12 C12 -8.7500 -2.6489 15.2239 C.2 1 DABH 0.4856 + 13 C13 -7.6502 -2.5720 14.2239 C.2 1 DABH -0.1356 + 14 C14 -7.7843 -1.6851 13.2210 C.2 1 DABH 0.2477 + 15 N15 -8.8658 -0.8373 13.0531 N.2 1 DABH -0.6210 + 16 C16 -9.8114 -0.9006 13.9441 C.2 1 DABH 0.4390 + 17 N17 -9.7761 -1.7683 15.0007 N.3 1 DABH -0.5000 + 18 O18 -6.7386 -1.6464 12.3046 O.3 1 DABH -0.3567 + 19 C19 -6.8708 -0.6400 11.3062 C.3 1 DABH 0.2800 + 20 C20 -11.0025 0.0091 13.8065 C.3 1 DABH 0.0610 + 21 H2 -5.8617 -7.5610 13.2998 H 1 DABH 0.1500 + 22 H3 -5.7029 -5.8580 15.0719 H 1 DABH 0.1500 + 23 H5 -9.9931 -5.9846 15.5575 H 1 DABH 0.1500 + 24 H6 -10.1350 -7.6887 13.7780 H 1 DABH 0.1500 + 25 H7 -7.3126 -8.7513 11.7674 H 1 DABH 0.4000 + 26 H71 -8.9885 -8.7990 11.9501 H 1 DABH 0.4000 + 27 H13 -6.7702 -3.1917 14.2948 H 1 DABH 0.1500 + 28 H17 -10.5310 -1.7774 15.6730 H 1 DABH 0.4000 + 29 H19 -7.7529 -0.8180 10.6819 H 1 DABH 0.0000 + 30 H191 -5.9884 -0.6904 10.6613 H 1 DABH 0.0000 + 31 H192 -6.9025 0.3589 11.7544 H 1 DABH 0.0000 + 32 H20 -10.8696 0.6966 12.9668 H 1 DABH 0.0000 + 33 H201 -11.1285 0.5869 14.7265 H 1 DABH 0.0000 + 34 H202 -11.8993 -0.5938 13.6383 H 1 DABH 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 21 1 + 6 3 4 2 + 7 3 22 1 + 8 4 5 1 + 9 4 8 1 + 10 5 6 2 + 11 5 23 1 + 12 6 24 1 + 13 7 25 1 + 14 7 26 1 + 15 8 9 2 + 16 8 10 2 + 17 8 11 1 + 18 11 12 2 + 19 12 13 1 + 20 12 17 am + 21 13 14 2 + 22 13 27 1 + 23 14 15 1 + 24 14 18 1 + 25 15 16 2 + 26 16 17 am + 27 16 20 1 + 28 17 28 1 + 29 18 19 1 + 30 19 29 1 + 31 19 30 1 + 32 19 31 1 + 33 20 32 1 + 34 20 33 1 + 35 20 34 1 +@SUBSTRUCTURE + 1 DABH 1 +@COMMENT +COMMENT N-1--(6-METHOXY-2-METHYL-4-PYRIMIDINIUMYL)-SULFANILAMIDE MO +@MOLECULE +DABLIB + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.6439 -3.8111 15.5442 C.3 1 UNCH -0.1950 + 2 C2 -10.4429 -4.2337 14.3550 C.3 1 UNCH 0.1900 + 3 C3 -8.8840 -4.8330 16.3097 C.3 1 UNCH 0.4634 + 4 F1 -8.8840 -4.8064 17.6847 F 1 UNCH -0.2317 + 5 F2 -8.8840 -6.1531 15.9240 F 1 UNCH -0.2317 + 6 H1 -10.1575 -3.0599 16.1320 H 1 UNCH 0.1000 + 7 H2 -11.1032 -3.4099 14.0575 H 1 UNCH 0.0000 + 8 C1B -8.1242 -3.8111 15.5442 C.3 1 UNCH -0.1950 + 9 C1J -9.6439 -4.6563 13.1658 C.3 1 UNCH -0.1950 + 10 H2J -11.1032 -5.0575 14.6525 H 1 UNCH 0.0000 + 11 C2H -7.3251 -4.2337 14.3550 C.3 1 UNCH 0.1900 + 12 H1B -7.6105 -3.0599 16.1320 H 1 UNCH 0.1000 + 13 C1H -8.1242 -4.6563 13.1658 C.3 1 UNCH -0.1950 + 14 C3H -8.8840 -3.6344 12.4003 C.3 1 UNCH 0.4634 + 15 H1J -10.1575 -5.4075 12.5780 H 1 UNCH 0.1000 + 16 H2H -6.6648 -5.0575 14.6525 H 1 UNCH 0.0000 + 17 H2B -6.6648 -3.4099 14.0575 H 1 UNCH 0.0000 + 18 H1H -7.6105 -5.4075 12.5780 H 1 UNCH 0.1000 + 19 F1H -8.8840 -3.6610 11.0253 F 1 UNCH -0.2317 + 20 F2H -8.8840 -2.3143 12.7860 F 1 UNCH -0.2317 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 6 1 + 4 1 8 1 + 5 2 7 1 + 6 2 9 1 + 7 2 10 1 + 8 3 4 1 + 9 3 5 1 + 10 3 8 1 + 11 8 11 1 + 12 8 12 1 + 13 9 13 1 + 14 9 14 1 + 15 9 15 1 + 16 11 13 1 + 17 11 16 1 + 18 11 17 1 + 19 13 14 1 + 20 13 18 1 + 21 14 19 1 + 22 14 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ANTI-4,4,8,8-TETRAFLUOROTRICYCLO(5.1.0.0-3,5-)OCTANE (FOR S +@MOLECULE +DACSAB + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 4.0408 -2.1803 6.8379 F 1 DACL -0.3290 + 2 O11 4.6238 -1.3311 4.5420 O.2 1 DACL -0.7000 + 3 O1 3.2670 -3.5212 4.9114 O.3 1 DACL -0.5512 + 4 P2 3.5566 -1.9957 5.3552 P 1 DACL 1.5681 + 5 N3 2.0798 -1.2867 5.4513 N.3 1 DACL -0.8079 + 6 C4 1.0743 -2.0431 6.1891 C.3 1 DACL 0.2700 + 7 C5 0.9576 -3.4634 5.6237 C.3 1 DACL 0.0000 + 8 C6 2.2868 -4.2061 5.6702 C.3 1 DACL 0.2800 + 9 C7 2.0606 0.1671 5.6657 C.3 1 DACL 0.4135 + 10 C8 0.7920 0.8182 5.0896 C.3 1 DACL 0.0000 + 11 C9 2.3699 0.5904 7.0955 C.2 1 DACL -0.1435 + 12 C10 1.3748 0.7184 8.0778 C.2 1 DACL -0.1500 + 13 C11 1.7008 1.0978 9.3824 C.2 1 DACL -0.1500 + 14 C12 3.0256 1.3525 9.7266 C.2 1 DACL -0.1500 + 15 C13 4.0264 1.2281 8.7675 C.2 1 DACL -0.1500 + 16 C14 3.7020 0.8503 7.4631 C.2 1 DACL -0.1500 + 17 H31 2.6416 -4.3212 6.7001 H 1 DACL 0.0000 + 18 H32 2.1697 -5.2074 5.2445 H 1 DACL 0.0000 + 19 H41 1.3369 -2.1031 7.2517 H 1 DACL 0.0000 + 20 H42 0.0842 -1.5832 6.1169 H 1 DACL 0.0000 + 21 H51 0.2048 -4.0219 6.1911 H 1 DACL 0.0000 + 22 H52 0.6109 -3.4043 4.5842 H 1 DACL 0.0000 + 23 H7 2.8598 0.5889 5.0397 H 1 DACL 0.0000 + 24 H81 -0.1233 0.5281 5.6134 H 1 DACL 0.0000 + 25 H82 0.6687 0.5516 4.0336 H 1 DACL 0.0000 + 26 H83 0.8643 1.9108 5.1461 H 1 DACL 0.0000 + 27 H10 0.3320 0.5206 7.8446 H 1 DACL 0.1500 + 28 H11 0.9188 1.1936 10.1314 H 1 DACL 0.1500 + 29 H12 3.2786 1.6466 10.7417 H 1 DACL 0.1500 + 30 H13 5.0624 1.4234 9.0326 H 1 DACL 0.1500 + 31 H14 4.5043 0.7587 6.7318 H 1 DACL 0.1500 +@BOND + 1 1 4 1 + 2 2 4 2 + 3 3 4 1 + 4 3 8 1 + 5 4 5 1 + 6 5 6 1 + 7 5 9 1 + 8 6 7 1 + 9 6 19 1 + 10 6 20 1 + 11 7 8 1 + 12 7 21 1 + 13 7 22 1 + 14 8 17 1 + 15 8 18 1 + 16 9 10 1 + 17 9 11 1 + 18 9 23 1 + 19 10 24 1 + 20 10 25 1 + 21 10 26 1 + 22 11 12 2 + 23 11 16 1 + 24 12 13 1 + 25 12 27 1 + 26 13 14 2 + 27 13 28 1 + 28 14 15 1 + 29 14 29 1 + 30 15 16 2 + 31 15 30 1 + 32 16 31 1 +@SUBSTRUCTURE + 1 DACL 1 +@COMMENT +COMMENT 2(S)-FLUORO-2-OXO-3-((S)-ALPHA-METHYLBENZYL)-1,3,2-OXAZAPHO +@MOLECULE +DACYIP + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S9 -10.8981 -2.1527 14.3550 S.2 1 UNCH -0.6773 + 2 P1 -9.3411 -3.3444 14.3550 P 1 UNCH 1.0072 + 3 N7 -7.8483 -2.5926 14.3550 N.3 1 UNCH -0.8079 + 4 C2 -9.3982 -4.7568 15.5540 C.3 1 UNCH -0.0310 + 5 C3 -10.0212 -5.5847 14.3549 C.3 1 UNCH 0.0000 + 6 C4 -10.3856 -4.6108 16.7207 C.3 1 UNCH 0.0000 + 7 C5 -8.0576 -5.2422 16.1139 C.3 1 UNCH 0.0000 + 8 C6 -9.7856 -7.0927 14.3549 C.3 1 UNCH 0.0000 + 9 C8 -7.5106 -1.8009 15.5413 C.3 1 UNCH 0.2700 + 10 H31 -11.1189 -5.4715 14.3549 H 1 UNCH 0.0000 + 11 H41 -11.3956 -4.3633 16.3819 H 1 UNCH 0.0000 + 12 H42 -10.4587 -5.5456 17.2876 H 1 UNCH 0.0000 + 13 H43 -10.0580 -3.8225 17.4067 H 1 UNCH 0.0000 + 14 H51 -7.2747 -5.3035 15.3602 H 1 UNCH 0.0000 + 15 H52 -7.6957 -4.5703 16.8983 H 1 UNCH 0.0000 + 16 H53 -8.1597 -6.2349 16.5660 H 1 UNCH 0.0000 + 17 H61 -8.7206 -7.3424 14.3549 H 1 UNCH 0.0000 + 18 H62 -10.2397 -7.5513 13.4704 H 1 UNCH 0.0000 + 19 H81 -6.4429 -1.5565 15.5565 H 1 UNCH 0.0000 + 20 H82 -7.7212 -2.3599 16.4564 H 1 UNCH 0.0000 + 21 H83 -8.0845 -0.8690 15.5851 H 1 UNCH 0.0000 + 22 C2G -9.3982 -4.7568 13.1559 C.3 1 UNCH -0.0310 + 23 C8G -7.5106 -1.8008 13.1687 C.3 1 UNCH 0.2700 + 24 H62G -10.2397 -7.5513 15.2394 H 1 UNCH 0.0000 + 25 C4G -10.3856 -4.6107 11.9892 C.3 1 UNCH 0.0000 + 26 C5G -8.0576 -5.2421 12.5960 C.3 1 UNCH 0.0000 + 27 H81G -6.4429 -1.5564 13.1535 H 1 UNCH 0.0000 + 28 H82G -7.7212 -2.3598 12.2536 H 1 UNCH 0.0000 + 29 H83G -8.0845 -0.8690 13.1249 H 1 UNCH 0.0000 + 30 H41G -11.3956 -4.3632 12.3280 H 1 UNCH 0.0000 + 31 H42G -10.4587 -5.5455 11.4222 H 1 UNCH 0.0000 + 32 H43G -10.0580 -3.8224 11.3032 H 1 UNCH 0.0000 + 33 H51G -7.2747 -5.3034 13.3496 H 1 UNCH 0.0000 + 34 H52G -7.6957 -4.5701 11.8116 H 1 UNCH 0.0000 + 35 H53G -8.1597 -6.2348 12.1438 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 2 3 1 + 3 2 4 1 + 4 2 22 1 + 5 3 9 1 + 6 3 23 1 + 7 4 5 1 + 8 4 6 1 + 9 4 7 1 + 10 5 8 1 + 11 5 10 1 + 12 5 22 1 + 13 6 11 1 + 14 6 12 1 + 15 6 13 1 + 16 7 14 1 + 17 7 15 1 + 18 7 16 1 + 19 8 17 1 + 20 8 18 1 + 21 8 24 1 + 22 9 19 1 + 23 9 20 1 + 24 9 21 1 + 25 22 25 1 + 26 22 26 1 + 27 23 27 1 + 28 23 28 1 + 29 23 29 1 + 30 25 30 1 + 31 25 31 1 + 32 25 32 1 + 33 26 33 1 + 34 26 34 1 + 35 26 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-DIMETHYLAMINO-2,2,3,4,4-PENTAMETHYL-1LAMBDA-5--PHOSPHETAN +@MOLECULE +DADDAN + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O10 -6.8341 -3.2079 13.5407 O.3 1 UNCH -0.4300 + 2 O11 -7.1703 -4.1615 11.4702 O.2 1 UNCH -0.5700 + 3 O14 -7.2166 -5.5541 16.2646 O.2 1 UNCH -0.5700 + 4 O15 -8.7818 -4.7209 14.8023 O.3 1 UNCH -0.4300 + 5 N4 -10.9957 -2.3838 14.8349 N.3 1 UNCH -0.8100 + 6 C1 -9.0176 -2.2015 13.5125 C.2 1 UNCH -0.2764 + 7 C2 -10.0614 -2.1332 12.6785 C.2 1 UNCH -0.2882 + 8 C3 -11.3532 -2.2394 13.4113 C.3 1 UNCH 0.4082 + 9 C5 -11.4487 -3.6599 15.4034 C.3 1 UNCH 0.2700 + 10 C6 -10.3881 -4.0020 16.4368 C.3 1 UNCH 0.0000 + 11 C7 -9.1057 -3.6452 15.7043 C.3 1 UNCH 0.2800 + 12 C8 -9.4992 -2.3721 14.9203 C.3 1 UNCH 0.4082 + 13 C9 -7.5768 -2.0489 13.1515 C.3 1 UNCH 0.4182 + 14 C11 -6.7648 -4.2103 12.6222 C.2 1 UNCH 0.6590 + 15 C12 -6.1644 -5.4433 13.2534 C.3 1 UNCH 0.0610 + 16 C13 -7.2367 -6.2628 13.9548 C.3 1 UNCH 0.0610 + 17 C14 -7.7401 -5.5138 15.1613 C.2 1 UNCH 0.6590 + 18 H2 -9.9976 -1.9937 11.6085 H 1 UNCH 0.1500 + 19 H7 -8.2838 -3.4317 16.3970 H 1 UNCH 0.0000 + 20 H8 -9.2282 -1.4887 15.5125 H 1 UNCH 0.0000 + 21 H31 -11.9471 -3.0731 13.0208 H 1 UNCH 0.0000 + 22 H32 -11.9334 -1.3203 13.2773 H 1 UNCH 0.0000 + 23 H51 -12.4391 -3.5601 15.8575 H 1 UNCH 0.0000 + 24 H52 -11.4927 -4.4619 14.6551 H 1 UNCH 0.0000 + 25 H61 -10.5091 -3.3776 17.3300 H 1 UNCH 0.0000 + 26 H62 -10.4369 -5.0560 16.7265 H 1 UNCH 0.0000 + 27 H91 -7.4382 -1.8272 12.0864 H 1 UNCH 0.0000 + 28 H92 -7.1570 -1.1987 13.7003 H 1 UNCH 0.0000 + 29 H121 -5.6942 -6.0323 12.4580 H 1 UNCH 0.0000 + 30 H122 -5.3628 -5.1434 13.9385 H 1 UNCH 0.0000 + 31 H131 -8.0767 -6.4933 13.2894 H 1 UNCH 0.0000 + 32 H132 -6.8299 -7.2207 14.2970 H 1 UNCH 0.0000 +@BOND + 1 1 13 1 + 2 1 14 1 + 3 2 14 2 + 4 3 17 2 + 5 4 11 1 + 6 4 17 1 + 7 5 8 1 + 8 5 9 1 + 9 5 12 1 + 10 6 7 2 + 11 6 12 1 + 12 6 13 1 + 13 7 8 1 + 14 7 18 1 + 15 8 21 1 + 16 8 22 1 + 17 9 10 1 + 18 9 23 1 + 19 9 24 1 + 20 10 11 1 + 21 10 25 1 + 22 10 26 1 + 23 11 12 1 + 24 11 19 1 + 25 12 20 1 + 26 13 27 1 + 27 13 28 1 + 28 14 15 1 + 29 15 16 1 + 30 15 29 1 + 31 15 30 1 + 32 16 17 1 + 33 16 31 1 + 34 16 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (+)-7-METHYL-2,3,5,7A-TETRAHYDRO-1H-PYRROLIZINE-1,8-DIYL SU +@MOLECULE +DADLAV + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -11.2662 -4.8811 16.2773 O.2 1 DADG -0.5700 + 2 O2 -8.3476 -5.5883 11.9040 O.2 1 DADG -0.5700 + 3 N1 -8.9503 -4.6365 16.2933 N.3 1 DADG -0.5390 + 4 N2 -10.9942 -4.9719 13.3328 N.3 1 DADG -0.9000 + 5 C1 -10.1907 -4.7861 15.7157 C.2 1 DADG 0.6156 + 6 C2 -9.9603 -4.8380 14.2292 C.2 1 DADG 0.1144 + 7 C3 -8.6276 -4.7455 14.0839 C.2 1 DADG 0.0144 + 8 C4 -7.9621 -4.6250 15.3581 C.2 1 DADG 0.1090 + 9 C5 -8.0070 -4.7526 12.7429 C.2 1 DADG 0.4946 + 10 C6 -6.9732 -3.7061 12.4229 C.3 1 DADG 0.0610 + 11 C7 -6.6666 -4.5519 15.6637 C.2 1 DADG -0.3000 + 12 H1 -8.8270 -4.5962 17.2942 H 1 DADG 0.3700 + 13 H2 -10.6975 -5.4424 12.4755 H 1 DADG 0.4000 + 14 H3 -11.8077 -5.4118 13.7646 H 1 DADG 0.4000 + 15 H4 -6.3344 -4.4793 16.6950 H 1 DADG 0.1500 + 16 H5 -5.8887 -4.5774 14.9090 H 1 DADG 0.1500 + 17 H6 -7.0247 -2.8693 13.1246 H 1 DADG 0.0000 + 18 H7 -7.1673 -3.3098 11.4219 H 1 DADG 0.0000 + 19 H8 -5.9770 -4.1538 12.4548 H 1 DADG 0.0000 +@BOND + 1 1 5 2 + 2 2 9 2 + 3 3 5 am + 4 3 8 1 + 5 3 12 1 + 6 4 6 1 + 7 4 13 1 + 8 4 14 1 + 9 5 6 1 + 10 6 7 2 + 11 7 8 1 + 12 7 9 1 + 13 8 11 2 + 14 9 10 1 + 15 10 17 1 + 16 10 18 1 + 17 10 19 1 + 18 11 15 1 + 19 11 16 1 +@SUBSTRUCTURE + 1 DADG 1 +@COMMENT +COMMENT 4-ACETYL-3-AMINO-5-METHYLENE-CDELTA-3--PYRROLIN-2-ONE +@MOLECULE +DADLEZ + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.8268 -2.8771 13.2158 O.3 1 DADL -0.2267 + 2 C1 -8.1312 -2.5808 14.3505 C.2 1 DADL 0.5856 + 3 C2 -8.2188 -3.6592 15.3571 C.2 1 DADL 0.1144 + 4 C3 -9.0234 -4.5519 14.7907 C.2 1 DADL 0.0144 + 5 C4 -9.4223 -4.1039 13.4961 C.2 1 DADL 0.0767 + 6 N1 -7.5016 -1.4656 14.4726 N.2 1 DADL -0.8500 + 7 N2 -7.5706 -3.5896 16.5649 N.3 1 DADL -0.9000 + 8 C5 -9.3793 -5.8117 15.4725 C.2 1 DADL 0.4946 + 9 O2 -9.7559 -5.7983 16.6453 O.2 1 DADL -0.5700 + 10 C6 -10.2658 -4.6693 12.6281 C.2 1 DADL -0.3000 + 11 C7 -9.2496 -7.1037 14.7104 C.3 1 DADL 0.0610 + 12 H1 -8.6270 -6.9791 13.8204 H 1 DADL 0.0000 + 13 H2 -8.7659 -7.8468 15.3511 H 1 DADL 0.0000 + 14 H3 -10.2414 -7.4575 14.4189 H 1 DADL 0.0000 + 15 H4 -8.0731 -4.0867 17.3019 H 1 DADL 0.4000 + 16 H5 -7.3569 -2.6208 16.8101 H 1 DADL 0.4000 + 17 H6 -10.7781 -5.6037 12.8245 H 1 DADL 0.1500 + 18 H7 -10.4803 -4.1831 11.6805 H 1 DADL 0.1500 + 19 H8 -7.6395 -0.9437 13.6002 H 1 DADL 0.4000 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 6 2 + 4 2 3 1 + 5 3 7 1 + 6 3 4 2 + 7 4 8 1 + 8 4 5 1 + 9 5 10 2 + 10 6 19 1 + 11 7 16 1 + 12 7 15 1 + 13 8 11 1 + 14 8 9 2 + 15 10 18 1 + 16 10 17 1 + 17 11 14 1 + 18 11 13 1 + 19 11 12 1 +@SUBSTRUCTURE + 1 DADL 1 +@COMMENT +COMMENT 4-ACETYL-3-AMINO-2-IMINO-5-METHYLENE-2,5-DIHYDROFURAN +@MOLECULE +DAFKIE + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.3452 -4.0013 14.3136 C.2 1 UNCH 0.1790 + 2 C2 -8.2754 -3.1375 14.5654 C.2 1 UNCH -0.1500 + 3 C3 -7.3271 -2.8707 13.5737 C.2 1 UNCH -0.1500 + 4 C4 -7.4470 -3.4512 12.3053 C.2 1 UNCH -0.1435 + 5 C5 -8.5161 -4.3186 12.0518 C.2 1 UNCH -0.1500 + 6 C6 -9.4620 -4.5827 13.0462 C.2 1 UNCH -0.1500 + 7 C7 -6.4118 -3.1931 11.2507 C.3 1 UNCH 0.1435 + 8 C8 -11.6796 -4.6230 17.5657 C.3 1 UNCH 0.3001 + 9 N1 -10.3068 -4.2366 15.3108 N.2 1 UNCH -0.1790 + 10 N2 -10.1363 -5.3661 15.8108 N.2 1 UNCH -0.0620 + 11 N3 -11.0512 -5.6616 16.7796 N.3 1 UNCH -0.6081 + 12 H2 -8.1795 -2.6757 15.5443 H 1 UNCH 0.1500 + 13 H3 -6.4967 -2.2053 13.7984 H 1 UNCH 0.1500 + 14 H5 -8.6223 -4.7931 11.0789 H 1 UNCH 0.1500 + 15 H6 -10.2951 -5.2493 12.8389 H 1 UNCH 0.1500 + 16 H71 -5.9831 -2.1915 11.3611 H 1 UNCH 0.0000 + 17 H72 -5.6085 -3.9324 11.3262 H 1 UNCH 0.0000 + 18 H73 -6.8519 -3.2490 10.2495 H 1 UNCH 0.0000 + 19 H81 -12.3420 -5.1039 18.2901 H 1 UNCH 0.0000 + 20 H82 -10.9115 -4.0572 18.0992 H 1 UNCH 0.0000 + 21 H83 -12.2731 -3.9686 16.9223 H 1 UNCH 0.0000 + 22 H31 -10.7857 -6.5062 17.2759 H 1 UNCH 0.3700 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 9 1 + 4 2 3 1 + 5 2 12 1 + 6 3 4 2 + 7 3 13 1 + 8 4 5 1 + 9 4 7 1 + 10 5 6 2 + 11 5 14 1 + 12 6 15 1 + 13 7 16 1 + 14 7 17 1 + 15 7 18 1 + 16 8 11 1 + 17 8 19 1 + 18 8 20 1 + 19 8 21 1 + 20 9 10 2 + 21 10 11 1 + 22 11 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-METHYL-1-P-TOLYL-TRIAZENE +@MOLECULE +DAFPUV + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.0624 -5.7775 12.4290 O.3 1 DAFN 0.2418 + 2 O2 -9.6793 -2.8057 15.2592 O.3 1 DAFN -0.5200 + 3 O3 -9.9812 -2.3104 13.1371 O.2 1 DAFN -0.5200 + 4 N1 -8.8129 -4.6018 12.4121 N.2 1 DAFN -0.4097 + 5 N2 -7.6450 -6.0953 13.7187 N.2 1 DAFN -0.4097 + 6 N3 -9.5446 -3.0314 14.0455 N.2 1 DAFN 0.9610 + 7 N4 -7.9213 -5.0663 15.8336 N.3 1 DAFN -0.8830 + 8 C1 -8.8324 -4.2193 13.6927 C.2 1 DAFN 0.3678 + 9 C2 -8.1205 -5.1246 14.4998 C.2 1 DAFN 0.3718 + 10 H1 -7.5544 -5.8844 16.3116 H 1 DAFN 0.4000 + 11 H2 -8.4667 -4.4448 16.4296 H 1 DAFN 0.4000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 6 1 + 4 3 6 2 + 5 4 8 2 + 6 5 9 2 + 7 6 8 am + 8 7 9 am + 9 7 10 1 + 10 7 11 1 + 11 8 9 1 +@SUBSTRUCTURE + 1 DAFN 1 +@COMMENT +COMMENT 3-AMINO-4-NITROFURAZANE (AT -120 DEG.C) +@MOLECULE +DAGTUA + 26 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.5926 -4.3934 15.8428 S.1 1 UNCH 1.3328 + 2 S2 -7.7405 -6.1904 14.4217 S.1 1 UNCH 1.3328 + 3 O1 -7.4152 -3.7047 13.8781 O.3 1 UNCH -0.1970 + 4 O2 -6.3612 -6.3083 14.8582 O.2 1 UNCH -0.6500 + 5 O3 -9.8604 -3.1117 13.7450 O.3 1 UNCH -0.1970 + 6 O4 -11.9851 -4.3224 15.4391 O.2 1 UNCH -0.6500 + 7 O5 -10.1347 -5.4191 16.7566 O.2 1 UNCH -0.6500 + 8 O6 -8.7482 -7.1233 14.8811 O.2 1 UNCH -0.6500 + 9 N1 -8.2600 -4.5431 14.7011 N.3 1 UNCH -0.2210 + 10 N2 -9.6064 -4.3779 14.3976 N.3 1 UNCH -0.2210 + 11 C1 -10.1714 -2.8268 16.5850 C.3 1 UNCH 0.1052 + 12 C2 -7.7454 -6.2739 12.6397 C.3 1 UNCH 0.1052 + 13 C3 -6.5286 -2.9940 14.7373 C.3 1 UNCH 0.2800 + 14 C4 -10.6193 -3.3675 12.5668 C.3 1 UNCH 0.2800 + 15 H1 -9.1013 -2.8021 16.7941 H 1 UNCH 0.0000 + 16 H2 -10.4688 -2.0106 15.9256 H 1 UNCH 0.0000 + 17 H3 -10.7249 -2.7493 17.5242 H 1 UNCH 0.0000 + 18 H4 -8.7517 -6.0714 12.2712 H 1 UNCH 0.0000 + 19 H5 -7.4551 -7.2892 12.3580 H 1 UNCH 0.0000 + 20 H6 -7.0208 -5.5681 12.2320 H 1 UNCH 0.0000 + 21 H7 -5.8544 -2.3994 14.1152 H 1 UNCH 0.0000 + 22 H8 -7.0933 -2.3164 15.3844 H 1 UNCH 0.0000 + 23 H9 -5.9299 -3.6810 15.3420 H 1 UNCH 0.0000 + 24 H10 -10.8574 -2.4083 12.0995 H 1 UNCH 0.0000 + 25 H11 -10.0313 -3.9618 11.8614 H 1 UNCH 0.0000 + 26 H12 -11.5551 -3.8814 12.8042 H 1 UNCH 0.0000 +@BOND + 1 1 6 2 + 2 1 7 2 + 3 1 10 1 + 4 1 11 1 + 5 2 4 2 + 6 2 8 2 + 7 2 9 1 + 8 2 12 1 + 9 3 9 1 + 10 3 13 1 + 11 5 10 1 + 12 5 14 1 + 13 9 10 1 + 14 11 15 1 + 15 11 16 1 + 16 11 17 1 + 17 12 18 1 + 18 12 19 1 + 19 12 20 1 + 20 13 21 1 + 21 13 22 1 + 22 13 23 1 + 23 14 24 1 + 24 14 25 1 + 25 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-DIMESYL-1,2-DIMETHOXY-HYDRAZINE (AT -150 DEG.C) +@MOLECULE +DAHBAP + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.5862 -5.5171 15.9336 O.3 1 UNCH -0.4355 + 2 O2 -6.0296 -6.0352 15.1908 O.2 1 UNCH -0.5700 + 3 O3 -10.1509 -2.2350 15.4694 O.2 1 UNCH -0.5700 + 4 N1 -7.9138 -4.7385 14.9675 N.3 1 UNCH -0.1335 + 5 N2 -10.9897 -4.1224 14.4391 N.3 1 UNCH -0.6602 + 6 C6 -8.5661 -3.6403 14.4631 C.2 1 UNCH 0.1234 + 7 C5 -7.9244 -2.8237 13.6094 C.2 1 UNCH -0.1500 + 8 C4 -6.5633 -3.1194 13.2161 C.2 1 UNCH -0.1500 + 9 C3 -5.9176 -4.1847 13.7144 C.2 1 UNCH -0.1356 + 10 C2 -6.6083 -5.0762 14.6864 C.2 1 UNCH 0.6156 + 11 C7 -9.9607 -3.2838 14.8514 C.2 1 UNCH 0.6156 + 12 C8 -12.3269 -3.8800 14.9520 C.3 1 UNCH 0.3001 + 13 C9 -10.8069 -5.3614 13.6968 C.3 1 UNCH 0.3001 + 14 H3 -8.4003 -1.9325 13.2101 H 1 UNCH 0.1500 + 15 H4 -6.0767 -2.4495 12.5135 H 1 UNCH 0.1500 + 16 H5 -4.8976 -4.4355 13.4547 H 1 UNCH 0.1500 + 17 H1 -7.8651 -6.1000 16.2518 H 1 UNCH 0.4000 + 18 H81 -12.5761 -4.6719 15.6647 H 1 UNCH 0.0000 + 19 H82 -12.4095 -2.9143 15.4572 H 1 UNCH 0.0000 + 20 H83 -13.0365 -3.9017 14.1196 H 1 UNCH 0.0000 + 21 H91 -9.8679 -5.3745 13.1405 H 1 UNCH 0.0000 + 22 H92 -10.8270 -6.1985 14.4004 H 1 UNCH 0.0000 + 23 H93 -11.6264 -5.4720 12.9801 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 17 1 + 3 2 10 2 + 4 3 11 2 + 5 4 6 1 + 6 4 10 am + 7 5 11 am + 8 5 12 1 + 9 5 13 1 + 10 6 7 2 + 11 6 11 1 + 12 7 8 1 + 13 7 14 1 + 14 8 9 2 + 15 8 15 1 + 16 9 10 1 + 17 9 16 1 + 18 12 18 1 + 19 12 19 1 + 20 12 20 1 + 21 13 21 1 + 22 13 22 1 + 23 13 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N-DIMETHYL-1-HYDROXY-2(1H)-PYRIDINONE-6-CARBOXAMIDE +@MOLECULE +DAHNAB + 26 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.2809 -2.4716 15.7576 SI 1 UNCH 0.6116 + 2 CL1 -10.0801 -1.4752 15.8191 CL 1 UNCH -0.3701 + 3 C1 -6.9370 -1.2158 15.4848 C.3 1 UNCH -0.0805 + 4 C2 -8.3450 -3.6880 14.3082 C.3 1 UNCH -0.0805 + 5 C3 -8.0517 -3.3637 17.3705 C.3 1 UNCH -0.0805 + 6 H11 -6.9111 -0.4836 16.2977 H 1 UNCH 0.0000 + 7 H12 -7.0896 -0.6731 14.5468 H 1 UNCH 0.0000 + 8 H13 -5.9563 -1.6989 15.4370 H 1 UNCH 0.0000 + 9 H21 -7.3538 -4.1512 14.2299 H 1 UNCH 0.0000 + 10 H22 -8.4876 -3.1024 13.3915 H 1 UNCH 0.0000 + 11 H31 -8.8743 -4.0599 17.5599 H 1 UNCH 0.0000 + 12 H32 -7.1202 -3.9380 17.3696 H 1 UNCH 0.0000 + 13 H33 -8.0098 -2.6593 18.2070 H 1 UNCH 0.0000 + 14 C2A -9.4230 -4.7793 14.4018 C.3 1 UNCH -0.0805 + 15 SI1A -9.4872 -5.9957 12.9524 SI 1 UNCH 0.6116 + 16 H21A -10.4142 -4.3161 14.4801 H 1 UNCH 0.0000 + 17 H22A -9.2805 -5.3649 15.3184 H 1 UNCH 0.0000 + 18 CL1A -7.6879 -6.9921 12.8908 CL 1 UNCH -0.3701 + 19 C1A -10.8311 -7.2516 13.2252 C.3 1 UNCH -0.0805 + 20 C3A -9.7164 -5.1036 11.3395 C.3 1 UNCH -0.0805 + 21 H11A -10.8569 -7.9837 12.4123 H 1 UNCH 0.0000 + 22 H12A -10.6785 -7.7942 14.1632 H 1 UNCH 0.0000 + 23 H13A -11.8118 -6.7684 13.2730 H 1 UNCH 0.0000 + 24 H31A -8.8937 -4.4074 11.1501 H 1 UNCH 0.0000 + 25 H32A -10.6478 -4.5293 11.3404 H 1 UNCH 0.0000 + 26 H33A -9.7582 -5.8080 10.5030 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 3 6 1 + 6 3 7 1 + 7 3 8 1 + 8 4 9 1 + 9 4 10 1 + 10 4 14 1 + 11 5 11 1 + 12 5 12 1 + 13 5 13 1 + 14 14 15 1 + 15 14 16 1 + 16 14 17 1 + 17 15 18 1 + 18 15 19 1 + 19 15 20 1 + 20 19 21 1 + 21 19 22 1 + 22 19 23 1 + 23 20 24 1 + 24 20 25 1 + 25 20 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,5-DICHLORO-2,5-DIMETHYL-2,5-DISILAHEXANE (AT 150 DEG.K) +@MOLECULE +DAJXER + 31 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.2518 -4.1911 15.5587 N.3 1 UNCH -0.5851 + 2 C2 -10.1230 -3.1483 15.7953 C.2 1 UNCH 0.6900 + 3 O1 -10.9745 -3.1704 16.6829 O.2 1 UNCH -0.5700 + 4 N3 -10.0181 -2.0506 14.9919 N.3 1 UNCH -0.4900 + 5 C4 -9.3495 -1.9141 13.7980 C.2 1 UNCH 0.5770 + 6 O2 -9.5032 -0.8755 13.1464 O.2 1 UNCH -0.5700 + 7 C5 -8.4111 -3.0801 13.4019 C.3 1 UNCH 0.0530 + 8 C6 -8.2806 -4.2268 14.4361 C.3 1 UNCH 0.2250 + 9 C7 -7.0267 -2.5514 12.9905 C.3 1 UNCH 0.0000 + 10 N11 -9.7876 -6.0135 13.4396 N.3 1 UNCH -0.6641 + 11 C21 -10.7630 -5.2509 12.8702 C.2 1 UNCH 0.4400 + 12 N31 -10.4210 -4.1586 12.2623 N.2 1 UNCH -0.7370 + 13 C41 -8.9483 -4.0968 12.3632 C.3 1 UNCH 0.2870 + 14 C51 -8.5659 -5.2649 13.3167 C.3 1 UNCH 0.2450 + 15 C8 -9.3781 -5.4015 16.3669 C.3 1 UNCH 0.3001 + 16 C9 -10.4230 -6.3613 15.8029 C.3 1 UNCH 0.0000 + 17 C10 -9.9926 -6.9934 14.4817 C.3 1 UNCH 0.3691 + 18 H3 -10.6868 -1.3200 15.1844 H 1 UNCH 0.3700 + 19 H6 -7.2678 -4.3294 14.8489 H 1 UNCH 0.0000 + 20 H21 -11.8013 -5.5998 12.9892 H 1 UNCH 0.0600 + 21 H41 -8.4604 -4.1072 11.3835 H 1 UNCH 0.0000 + 22 H51 -7.7114 -5.8704 13.0014 H 1 UNCH 0.0000 + 23 H71 -6.3418 -3.3649 12.7257 H 1 UNCH 0.0000 + 24 H72 -7.1058 -1.8893 12.1212 H 1 UNCH 0.0000 + 25 H73 -6.5708 -1.9835 13.8090 H 1 UNCH 0.0000 + 26 H81 -8.3964 -5.8850 16.4317 H 1 UNCH 0.0000 + 27 H82 -9.6623 -5.1183 17.3871 H 1 UNCH 0.0000 + 28 H91 -11.3820 -5.8445 15.6765 H 1 UNCH 0.0000 + 29 H92 -10.5881 -7.1647 16.5306 H 1 UNCH 0.0000 + 30 H101 -9.0741 -7.5749 14.6264 H 1 UNCH 0.0000 + 31 H102 -10.7616 -7.7050 14.1586 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 8 1 + 3 1 15 1 + 4 2 3 2 + 5 2 4 am + 6 4 5 am + 7 4 18 1 + 8 5 6 2 + 9 5 7 1 + 10 7 8 1 + 11 7 9 1 + 12 7 13 1 + 13 8 14 1 + 14 8 19 1 + 15 9 23 1 + 16 9 24 1 + 17 9 25 1 + 18 10 11 am + 19 10 14 1 + 20 10 17 1 + 21 11 12 2 + 22 11 20 1 + 23 12 13 1 + 24 13 14 1 + 25 13 21 1 + 26 14 22 1 + 27 15 16 1 + 28 15 26 1 + 29 15 27 1 + 30 16 17 1 + 31 16 28 1 + 32 16 29 1 + 33 17 30 1 + 34 17 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 14-METHYL-4,6,10,12-TETRA-AZATETRACYCLO(8.4.0.0-2,6-.0-3,14 +@MOLECULE +DAKBAS + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.1960 -5.8941 17.9483 S.3 1 DAKB -0.9500 + 2 O1 -6.1623 -5.5560 12.4075 O.2 1 DAKB -0.5700 + 3 O2 -9.6196 -5.9309 10.8941 O.3 1 DAKB -0.5200 + 4 O3 -11.4226 -4.7311 10.5300 O.2 1 DAKB -0.5200 + 5 N1 -8.0640 -6.0176 16.3637 N.3 1 DAKB -0.6000 + 6 N2 -12.5819 -5.2907 14.7649 N.1 1 DAKB -0.5571 + 7 N3 -10.3304 -4.9336 11.0789 N.2 1 DAKB 0.9070 + 8 C1 -9.4375 -5.8230 16.3700 C.2 1 DAKB 0.0500 + 9 C2 -7.2655 -6.2304 15.2623 C.2 1 DAKB -0.0382 + 10 C3 -7.7976 -6.0445 14.0387 C.2 1 DAKB -0.1238 + 11 C4 -9.2346 -5.5762 13.8664 C.3 1 DAKB 0.4199 + 12 C5 -10.0466 -5.6138 15.1718 C.2 1 DAKB -0.0732 + 13 C6 -11.4608 -5.4405 15.0358 C.1 1 DAKB 0.4921 + 14 C7 -5.8588 -6.6798 15.5443 C.3 1 DAKB 0.1382 + 15 C8 -9.2824 -4.1768 13.2313 C.2 1 DAKB -0.1435 + 16 C9 -8.7860 -3.0831 13.9756 C.2 1 DAKB -0.1500 + 17 C10 -8.8305 -1.7771 13.4795 C.2 1 DAKB -0.1500 + 18 C11 -9.3726 -1.5217 12.2242 C.2 1 DAKB -0.1500 + 19 C12 -9.8670 -2.5753 11.4596 C.2 1 DAKB -0.1500 + 20 C13 -9.8169 -3.8899 11.9594 C.2 1 DAKB 0.1330 + 21 C14 -7.0100 -6.3453 12.8205 C.2 1 DAKB 0.4946 + 22 C15 -7.2564 -7.6702 12.1493 C.3 1 DAKB 0.0610 + 23 H1 -7.7316 -6.2634 17.2932 H 1 DAKB 0.4000 + 24 H4 -9.7248 -6.3112 13.2189 H 1 DAKB 0.0000 + 25 H17 -5.8699 -7.6077 16.1264 H 1 DAKB 0.0000 + 26 H27 -5.2723 -6.8690 14.6415 H 1 DAKB 0.0000 + 27 H37 -5.3310 -5.9165 16.1261 H 1 DAKB 0.0000 + 28 H9 -8.3674 -3.2455 14.9712 H 1 DAKB 0.1500 + 29 H10 -8.4461 -0.9610 14.0870 H 1 DAKB 0.1500 + 30 H11 -9.4112 -0.5040 11.8453 H 1 DAKB 0.1500 + 31 H12 -10.2884 -2.3682 10.4781 H 1 DAKB 0.1500 + 32 H115 -7.3306 -7.5211 11.0691 H 1 DAKB 0.0000 + 33 H215 -8.1868 -8.1252 12.4996 H 1 DAKB 0.0000 + 34 H315 -6.4260 -8.3447 12.3739 H 1 DAKB 0.0000 +@BOND + 1 1 8 1 + 2 2 21 2 + 3 3 7 1 + 4 4 7 2 + 5 5 23 1 + 6 5 9 1 + 7 5 8 1 + 8 6 13 3 + 9 7 20 1 + 10 8 12 2 + 11 9 14 1 + 12 9 10 2 + 13 10 21 1 + 14 10 11 1 + 15 11 24 1 + 16 11 15 1 + 17 11 12 1 + 18 12 13 1 + 19 14 27 1 + 20 14 26 1 + 21 14 25 1 + 22 15 20 1 + 23 15 16 2 + 24 16 28 1 + 25 16 17 1 + 26 17 29 1 + 27 17 18 2 + 28 18 30 1 + 29 18 19 1 + 30 19 31 1 + 31 19 20 2 + 32 21 22 1 + 33 22 34 1 + 34 22 33 1 + 35 22 32 1 +@SUBSTRUCTURE + 1 DAKB 1 +@COMMENT +COMMENT MORPHOLINIUM 5-ACETYL-3-CYANO-1,4-DIHYDRO-6-METHYL-4-(2-NIT +@MOLECULE +DAKCEX + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.3722 -7.3276 15.4389 N.2 1 DAKC -0.3381 + 2 N2 -10.3009 -7.4844 16.4451 N.2 1 DAKC 0.0000 + 3 N3 -10.8470 -6.3211 16.7848 N.2 1 DAKC -0.4180 + 4 N4 -10.2663 -5.4116 15.9928 N.3 1 DAKC 0.7716 + 5 N5 -10.5665 -4.0924 16.0431 N.2 1 DAKC -0.6520 + 6 C6 -9.9042 -3.3543 15.1998 C.2 1 DAKC 0.5748 + 7 C7 -8.8771 -3.8705 14.2253 C.2 1 DAKC 0.0862 + 8 C8 -8.6179 -5.2500 14.2301 C.2 1 DAKC 0.0530 + 9 C9 -9.3640 -6.0414 15.1722 C.2 1 DAKC 0.1335 + 10 C10 -8.1916 -3.0350 13.3381 C.2 1 DAKC -0.1500 + 11 C11 -7.2518 -3.5833 12.4617 C.2 1 DAKC -0.1500 + 12 C12 -6.9966 -4.9571 12.4696 C.2 1 DAKC -0.1500 + 13 C13 -7.6786 -5.7946 13.3536 C.2 1 DAKC -0.1500 + 14 N14 -10.1168 -1.9987 15.1508 N.2 1 DAKC -0.5289 + 15 N15 -10.9648 -1.5722 15.9553 N.1 1 DAKC 0.6879 + 16 N16 -11.7345 -1.1380 16.6760 N.2 1 DAKC -0.3700 + 17 H1 -7.4745 -6.8639 13.3540 H 1 DAKC 0.1500 + 18 H2 -6.2629 -5.3763 11.7837 H 1 DAKC 0.1500 + 19 H3 -6.7149 -2.9381 11.7688 H 1 DAKC 0.1500 + 20 H4 -8.3755 -1.9636 13.3161 H 1 DAKC 0.1500 +@BOND + 1 1 9 2 + 2 1 2 1 + 3 2 3 2 + 4 3 4 1 + 5 4 9 am + 6 4 5 1 + 7 5 6 2 + 8 6 14 am + 9 6 7 1 + 10 7 10 2 + 11 7 8 1 + 12 8 13 2 + 13 8 9 1 + 14 10 20 1 + 15 10 11 1 + 16 11 19 1 + 17 11 12 2 + 18 12 18 1 + 19 12 13 1 + 20 13 17 1 + 21 14 15 2 + 22 15 16 2 +@SUBSTRUCTURE + 1 DAKC 1 +@COMMENT +COMMENT 6-AZIDOTETRAZOLO(5,1-A)PHTHALAZINE +@MOLECULE +DAKDOI + 36 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.5755 -3.3626 7.8833 C.2 1 UNCH 0.5438 + 2 C2 1.4935 -2.0943 7.1141 C.2 1 UNCH 0.0862 + 3 C3 1.5707 -0.8702 7.7895 C.2 1 UNCH -0.1500 + 4 C4 1.4914 0.3264 7.0746 C.2 1 UNCH -0.1500 + 5 C5 1.3309 0.2961 5.6903 C.2 1 UNCH 0.1770 + 6 C6 1.2460 -0.9202 5.0102 C.2 1 UNCH -0.1500 + 7 C7 1.3282 -2.1300 5.7190 C.2 1 UNCH -0.1435 + 8 C8 1.2084 -3.4646 5.0021 C.3 1 UNCH 0.5126 + 9 C9 -0.2631 -3.8649 4.8699 C.3 1 UNCH 0.0610 + 10 C10 -0.4152 -5.0943 4.0304 C.2 1 UNCH 0.6590 + 11 C11 3.3043 -4.7455 5.4082 C.2 1 UNCH 0.1000 + 12 C12 3.6432 -4.9877 4.0655 C.2 1 UNCH -0.1500 + 13 C13 4.9551 -5.2592 3.6486 C.2 1 UNCH -0.1500 + 14 C14 5.9498 -5.3002 4.6283 C.2 1 UNCH 0.0400 + 15 C15 5.6730 -5.0899 5.9791 C.2 1 UNCH 0.2272 + 16 C16 4.3396 -4.8215 6.3616 C.2 1 UNCH -0.1500 + 17 CL1 1.2294 1.7703 4.8097 CL 1 UNCH -0.1770 + 18 N1 1.6831 -4.5236 7.1463 N.3 1 UNCH -0.4100 + 19 N2 1.9560 -4.4954 5.7663 N.3 1 UNCH -0.4891 + 20 N3 6.7760 -5.1714 6.8225 N.2 1 UNCH -0.2272 + 21 N4 7.8878 -5.4366 6.1587 N.2 1 UNCH -0.2207 + 22 O1 1.5383 -3.3704 9.1079 O.2 1 UNCH -0.5700 + 23 O2 -1.0113 -6.1113 4.3418 O.2 1 UNCH -0.5700 + 24 O3 0.1100 -4.9681 2.7961 O.3 1 UNCH -0.6500 + 25 S1 7.6421 -5.5973 4.5142 S.3 1 UNCH 0.1807 + 26 H3 1.6949 -0.8473 8.8708 H 1 UNCH 0.1500 + 27 H4 1.5550 1.2743 7.6031 H 1 UNCH 0.1500 + 28 H6 1.1161 -0.9232 3.9300 H 1 UNCH 0.1500 + 29 H8 1.6350 -3.3357 4.0008 H 1 UNCH 0.0000 + 30 H91 -0.8568 -3.0691 4.4039 H 1 UNCH 0.0000 + 31 H92 -0.7169 -4.0635 5.8486 H 1 UNCH 0.0000 + 32 H12 2.8687 -4.9997 3.3005 H 1 UNCH 0.1500 + 33 H13 5.1827 -5.4426 2.6033 H 1 UNCH 0.1500 + 34 H16 4.1555 -4.6570 7.4182 H 1 UNCH 0.1500 + 35 H10 1.7865 -5.4130 7.6261 H 1 UNCH 0.3700 + 36 H30 -0.1235 -5.8184 2.3623 H 1 UNCH 0.5000 +@BOND + 1 1 2 1 + 2 1 18 am + 3 1 22 2 + 4 2 3 2 + 5 2 7 1 + 6 3 4 1 + 7 3 26 1 + 8 4 5 2 + 9 4 27 1 + 10 5 6 1 + 11 5 17 1 + 12 6 7 2 + 13 6 28 1 + 14 7 8 1 + 15 8 9 1 + 16 8 19 1 + 17 8 29 1 + 18 9 10 1 + 19 9 30 1 + 20 9 31 1 + 21 10 23 2 + 22 10 24 1 + 23 11 12 1 + 24 11 16 2 + 25 11 19 1 + 26 12 13 2 + 27 12 32 1 + 28 13 14 1 + 29 13 33 1 + 30 14 15 2 + 31 14 25 1 + 32 15 16 1 + 33 15 20 1 + 34 16 34 1 + 35 18 19 1 + 36 18 35 1 + 37 20 21 2 + 38 21 25 1 + 39 24 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(1,2,3-BENZOTHIADIAZOL-5-YL)-7-CHLORO-4-OXO-1,2,3,4-TETRA +@MOLECULE +DANCUQ + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.8840 -4.2348 14.3549 SI 1 DAKF 1.3200 + 2 S1 -10.0352 -5.5738 13.1975 S.3 1 DAKF -0.5600 + 3 S2 -10.0447 -2.8958 15.5029 S.3 1 DAKF -0.5600 + 4 C1 -9.0994 -7.0892 13.6193 C.3 1 DAKF 0.2300 + 5 C2 -9.1055 -1.3805 15.0888 C.3 1 DAKF 0.2300 + 6 H11 -8.2259 -7.1603 12.9606 H 1 DAKF 0.0000 + 7 H12 -9.7340 -7.9574 13.4148 H 1 DAKF 0.0000 + 8 H21 -8.2374 -1.3094 15.7547 H 1 DAKF 0.0000 + 9 H22 -9.7418 -0.5122 15.2881 H 1 DAKF 0.0000 + 10 S1B -7.7327 -5.5738 15.5124 S.3 1 DAKF -0.5600 + 11 S2B -7.7232 -2.8958 13.2070 S.3 1 DAKF -0.5600 + 12 C1B -8.6685 -7.0892 15.0906 C.3 1 DAKF 0.2300 + 13 C2B -8.6625 -1.3805 13.6211 C.3 1 DAKF 0.2300 + 14 H11B -9.5420 -7.1603 15.7493 H 1 DAKF 0.0000 + 15 H12B -8.0339 -7.9574 15.2951 H 1 DAKF 0.0000 + 16 H21B -9.5306 -1.3094 12.9552 H 1 DAKF 0.0000 + 17 H22B -8.0262 -0.5122 13.4218 H 1 DAKF 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 10 1 + 4 1 11 1 + 5 2 4 1 + 6 3 5 1 + 7 4 6 1 + 8 4 7 1 + 9 4 12 1 + 10 5 8 1 + 11 5 9 1 + 12 5 13 1 + 13 10 12 1 + 14 11 13 1 + 15 12 14 1 + 16 12 15 1 + 17 13 16 1 + 18 13 17 1 +@SUBSTRUCTURE + 1 DAKF 1 +@COMMENT +COMMENT SPIRO-BIS(ETHYLENEDITHIA)-SILANE +@MOLECULE +DAPSUO03 + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -6.4937 -5.8959 13.5977 S.1 1 DAPS 1.3180 + 2 O1 -6.3968 -6.0765 12.1601 O.2 1 DAPS -0.6500 + 3 O2 -5.4231 -6.3498 14.4673 O.2 1 DAPS -0.6500 + 4 N1 -11.5048 -8.6609 15.2981 N.3 1 DAPS -0.9000 + 5 N2 -7.1422 -0.0547 14.6504 N.3 1 DAPS -0.9000 + 6 C1 -7.9949 -6.6897 14.1248 C.2 1 DAPS -0.0090 + 7 C2 -8.0469 -7.3317 15.3627 C.2 1 DAPS -0.1500 + 8 C3 -9.2299 -7.9613 15.7591 C.2 1 DAPS -0.1500 + 9 C4 -10.3680 -7.9267 14.9464 C.2 1 DAPS 0.1000 + 10 C5 -10.2738 -7.3411 13.6796 C.2 1 DAPS -0.1500 + 11 C6 -9.0979 -6.7075 13.2693 C.2 1 DAPS -0.1500 + 12 C7 -6.7237 -4.1611 13.9127 C.2 1 DAPS -0.0090 + 13 C8 -6.5048 -3.6628 15.1982 C.2 1 DAPS -0.1500 + 14 C9 -6.6748 -2.2976 15.4427 C.2 1 DAPS -0.1500 + 15 C10 -7.0926 -1.4338 14.4249 C.2 1 DAPS 0.1000 + 16 C11 -7.2365 -1.9395 13.1286 C.2 1 DAPS -0.1500 + 17 C12 -7.0702 -3.3025 12.8686 C.2 1 DAPS -0.1500 + 18 H1 -7.1770 -7.3662 16.0145 H 1 DAPS 0.1500 + 19 H2 -9.2544 -8.4876 16.7103 H 1 DAPS 0.1500 + 20 H3 -11.1186 -7.3804 12.9962 H 1 DAPS 0.1500 + 21 H4 -9.0480 -6.2546 12.2819 H 1 DAPS 0.1500 + 22 H5 -6.1838 -4.3173 16.0052 H 1 DAPS 0.1500 + 23 H6 -6.4711 -1.9099 16.4379 H 1 DAPS 0.1500 + 24 H7 -7.4747 -1.2705 12.3052 H 1 DAPS 0.1500 + 25 H8 -7.1939 -3.6736 11.8538 H 1 DAPS 0.1500 + 26 H9 -12.3577 -8.3538 14.8413 H 1 DAPS 0.4000 + 27 H10 -11.6258 -8.7891 16.2978 H 1 DAPS 0.4000 + 28 H11 -7.7231 0.4549 13.9921 H 1 DAPS 0.4000 + 29 H12 -7.3306 0.2041 15.6137 H 1 DAPS 0.4000 +@BOND + 1 1 12 1 + 2 1 6 1 + 3 1 3 2 + 4 1 2 2 + 5 4 27 1 + 6 4 26 1 + 7 4 9 1 + 8 5 29 1 + 9 5 28 1 + 10 5 15 1 + 11 6 11 2 + 12 6 7 1 + 13 7 18 1 + 14 7 8 2 + 15 8 19 1 + 16 8 9 1 + 17 9 10 2 + 18 10 20 1 + 19 10 11 1 + 20 11 21 1 + 21 12 17 1 + 22 12 13 2 + 23 13 22 1 + 24 13 14 1 + 25 14 23 1 + 26 14 15 2 + 27 15 16 1 + 28 16 24 1 + 29 16 17 2 + 30 17 25 1 +@SUBSTRUCTURE + 1 DAPS 1 +@COMMENT +COMMENT 4,4'-DIAMINODIPHENYL SULFONE (REDETERMINATION OF DICKINSON +@MOLECULE +DARDEF + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.1098 -4.6583 11.2672 C.3 1 UNCH 0.2300 + 2 S2 -6.7188 -5.4855 12.0949 S.3 1 UNCH -0.3710 + 3 C3 -7.1989 -4.9024 13.6918 C.2 1 UNCH 0.6410 + 4 N4 -8.2502 -4.0319 13.5837 N.3 1 UNCH -0.7882 + 5 C5 -8.4452 -2.9713 14.5675 C.3 1 UNCH 0.7801 + 6 S6 -8.0837 -1.4003 13.6524 S.3 1 UNCH -0.4600 + 7 C7 -7.9013 -2.2267 12.0476 C.3 1 UNCH 0.2300 + 8 C8 -8.5832 -3.5810 12.2355 C.3 1 UNCH 0.3691 + 9 N9 -6.6315 -5.2268 14.7971 N.2 1 UNCH -0.6960 + 10 C10 -5.5171 -6.1606 14.7952 C.3 1 UNCH 0.2460 + 11 C11 -9.8297 -2.8897 15.1753 C.2 1 UNCH 0.0462 + 12 C12 -10.1899 -2.8832 16.5147 C.2 1 UNCH -0.3316 + 13 N13 -11.5598 -2.8098 16.5170 N.3 1 UNCH 0.0332 + 14 C14 -11.9805 -2.7820 15.2196 C.2 1 UNCH 0.0365 + 15 N15 -10.9708 -2.8319 14.3844 N.2 1 UNCH -0.5653 + 16 C16 -9.3810 -2.9455 17.7527 C.3 1 UNCH 0.1800 + 17 H11 -8.8957 -5.4063 11.1188 H 1 UNCH 0.0000 + 18 H12 -7.8189 -4.2597 10.2913 H 1 UNCH 0.0000 + 19 H5 -7.7079 -3.0275 15.3757 H 1 UNCH 0.0000 + 20 H71 -6.8326 -2.3246 11.8315 H 1 UNCH 0.0000 + 21 H72 -8.3657 -1.6436 11.2474 H 1 UNCH 0.0000 + 22 H8 -9.6683 -3.4583 12.1251 H 1 UNCH 0.0000 + 23 H101 -5.1872 -6.3165 15.8275 H 1 UNCH 0.0000 + 24 H102 -4.6587 -5.7677 14.2406 H 1 UNCH 0.0000 + 25 H103 -5.8066 -7.1401 14.4007 H 1 UNCH 0.0000 + 26 H13 -12.1584 -2.7868 17.3310 H 1 UNCH 0.2700 + 27 H14 -13.0263 -2.7271 14.9488 H 1 UNCH 0.1500 + 28 H161 -8.7884 -3.8656 17.7749 H 1 UNCH 0.0000 + 29 H162 -10.0109 -2.9269 18.6478 H 1 UNCH 0.0000 + 30 H163 -8.6958 -2.0933 17.8033 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 17 1 + 4 1 18 1 + 5 2 3 1 + 6 3 4 am + 7 3 9 2 + 8 4 5 1 + 9 4 8 1 + 10 5 6 1 + 11 5 11 1 + 12 5 19 1 + 13 6 7 1 + 14 7 8 1 + 15 7 20 1 + 16 7 21 1 + 17 8 22 1 + 18 9 10 1 + 19 10 23 1 + 20 10 24 1 + 21 10 25 1 + 22 11 12 2 + 23 11 15 1 + 24 12 13 1 + 25 12 16 1 + 26 13 14 am + 27 13 26 1 + 28 14 15 2 + 29 14 27 1 + 30 16 28 1 + 31 16 29 1 + 32 16 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CIS-DIHYDRO-3-(5-METHYLIMIDAZOL-4-YL)-5-METHYLIMINO-1H,3H,5 +@MOLECULE +DARPOB10 + 39 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -9.4504 -5.4197 14.6546 P 1 A1 -0.5964 + 2 SI1 -8.8638 -5.3234 16.8195 SI 1 A1 0.5905 + 3 N1 -8.6473 -2.7936 14.7961 N.3 1 A1 -0.7882 + 4 N2 -9.3323 -3.5617 12.7124 N.3 1 A1 -0.7882 + 5 C1 -9.0877 -7.0717 17.5057 C.3 1 A1 -0.0805 + 6 C2 -7.0687 -4.8536 17.0426 C.3 1 A1 -0.0805 + 7 C3 -9.9703 -4.1840 17.8022 C.3 1 A1 -0.0805 + 8 C4 -9.1352 -3.8494 14.0550 C.2 1 A1 0.3474 + 9 C5 -9.5856 -1.7241 15.1519 C.3 1 A1 0.3691 + 10 C6 -7.3399 -2.2542 14.4009 C.3 1 A1 0.3691 + 11 C7 -10.6710 -3.1323 12.2656 C.3 1 A1 0.3691 + 12 C8 -11.5270 -4.2539 11.6975 C.3 1 A1 0.0000 + 13 C9 -8.4885 -4.2504 11.7182 C.3 1 A1 0.3691 + 14 C10 -8.1531 -3.3453 10.5427 C.3 1 A1 0.0000 + 15 H11 -10.1286 -7.3947 17.4094 H 1 A1 0.0000 + 16 H12 -8.8165 -7.0986 18.5654 H 1 A1 0.0000 + 17 H13 -8.4508 -7.7821 16.9702 H 1 A1 0.0000 + 18 H21 -6.9012 -3.7936 16.8370 H 1 A1 0.0000 + 19 H22 -6.4226 -5.4382 16.3808 H 1 A1 0.0000 + 20 H23 -6.7514 -5.0419 18.0731 H 1 A1 0.0000 + 21 H31 -9.7376 -3.1340 17.6109 H 1 A1 0.0000 + 22 H32 -9.8385 -4.3574 18.8750 H 1 A1 0.0000 + 23 H33 -11.0247 -4.3522 17.5630 H 1 A1 0.0000 + 24 H51 -10.5489 -2.1372 15.4693 H 1 A1 0.0000 + 25 H52 -9.1884 -1.1353 15.9855 H 1 A1 0.0000 + 26 H53 -9.7579 -1.0511 14.3051 H 1 A1 0.0000 + 27 H61 -6.6245 -3.0654 14.2272 H 1 A1 0.0000 + 28 H63 -6.9329 -1.6238 15.1987 H 1 A1 0.0000 + 29 H71 -10.5632 -2.3399 11.5167 H 1 A1 0.0000 + 30 H72 -11.2148 -2.6762 13.1007 H 1 A1 0.0000 + 31 H81 -11.1005 -4.6626 10.7767 H 1 A1 0.0000 + 32 H82 -12.5241 -3.8728 11.4533 H 1 A1 0.0000 + 33 H83 -11.6487 -5.0741 12.4098 H 1 A1 0.0000 + 34 H91 -7.5394 -4.5432 12.1851 H 1 A1 0.0000 + 35 H92 -8.9625 -5.1736 11.3679 H 1 A1 0.0000 + 36 H101 -9.0402 -3.1144 9.9452 H 1 A1 0.0000 + 37 H102 -7.4296 -3.8361 9.8838 H 1 A1 0.0000 + 38 H103 -7.7186 -2.4003 10.8845 H 1 A1 0.0000 + 39 H1 -7.4166 -1.6528 13.4886 H 1 A1 0.0000 +@BOND + 1 1 8 2 + 2 1 2 1 + 3 2 7 1 + 4 2 6 1 + 5 2 5 1 + 6 3 10 1 + 7 3 9 1 + 8 3 8 1 + 9 4 13 1 + 10 4 11 1 + 11 4 8 1 + 12 5 17 1 + 13 5 16 1 + 14 5 15 1 + 15 6 20 1 + 16 6 19 1 + 17 6 18 1 + 18 7 23 1 + 19 7 22 1 + 20 7 21 1 + 21 9 26 1 + 22 9 25 1 + 23 9 24 1 + 24 10 39 1 + 25 10 28 1 + 26 10 27 1 + 27 11 30 1 + 28 11 29 1 + 29 11 12 1 + 30 12 33 1 + 31 12 32 1 + 32 12 31 1 + 33 13 35 1 + 34 13 34 1 + 35 13 14 1 + 36 14 38 1 + 37 14 37 1 + 38 14 36 1 +@SUBSTRUCTURE + 1 A1 1 +@COMMENT +COMMENT (R)-TRIMETHYLSILYL-(S)-DIETHYLAMINO-(S)-DIMETHYLAMINOMETHYL +@MOLECULE +DARXID + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -12.2640 -3.0381 13.2444 S.2 1 UNCH -0.3800 + 2 N1 -9.9295 -4.2254 14.2535 N.3 1 UNCH -0.1570 + 3 N2 -9.2218 -5.4418 13.9900 N.3 1 UNCH -0.4891 + 4 C1 -11.1018 -4.2191 13.4646 C.2 1 UNCH 0.4256 + 5 C2 -11.1241 -5.5170 12.7392 C.2 1 UNCH -0.1356 + 6 C3 -10.0054 -6.1620 13.0892 C.2 1 UNCH -0.0382 + 7 C4 -9.6049 -7.5126 12.5986 C.3 1 UNCH 0.1382 + 8 C5 -8.7161 -6.1132 15.1962 C.3 1 UNCH 0.3691 + 9 C11 -9.2063 -3.0873 14.7121 C.2 1 UNCH 0.1170 + 10 C21 -7.8185 -2.9940 14.5193 C.2 1 UNCH -0.1500 + 11 C31 -7.0981 -1.8886 14.9813 C.2 1 UNCH -0.1500 + 12 C41 -7.7547 -0.8623 15.6537 C.2 1 UNCH -0.1500 + 13 C51 -9.1281 -0.9443 15.8663 C.2 1 UNCH -0.1500 + 14 C61 -9.8470 -2.0507 15.4013 C.2 1 UNCH -0.1500 + 15 H2 -11.8977 -5.8338 12.0622 H 1 UNCH 0.1500 + 16 H14 -8.5976 -7.4800 12.1712 H 1 UNCH 0.0000 + 17 H24 -9.6140 -8.2413 13.4152 H 1 UNCH 0.0000 + 18 H34 -10.2853 -7.8750 11.8207 H 1 UNCH 0.0000 + 19 H15 -8.0742 -6.9567 14.9208 H 1 UNCH 0.0000 + 20 H25 -8.1121 -5.4417 15.8136 H 1 UNCH 0.0000 + 21 H35 -9.5441 -6.4889 15.8080 H 1 UNCH 0.0000 + 22 H21 -7.2864 -3.7707 13.9758 H 1 UNCH 0.1500 + 23 H31 -6.0269 -1.8289 14.8081 H 1 UNCH 0.1500 + 24 H41 -7.1981 -0.0006 16.0124 H 1 UNCH 0.1500 + 25 H51 -9.6450 -0.1503 16.3994 H 1 UNCH 0.1500 + 26 H61 -10.9090 -2.0996 15.6227 H 1 UNCH 0.1500 +@BOND + 1 1 4 2 + 2 2 3 1 + 3 2 4 1 + 4 2 9 1 + 5 3 6 1 + 6 3 8 1 + 7 4 5 1 + 8 5 6 2 + 9 5 15 1 + 10 6 7 1 + 11 7 16 1 + 12 7 17 1 + 13 7 18 1 + 14 8 19 1 + 15 8 20 1 + 16 8 21 1 + 17 9 10 2 + 18 9 14 1 + 19 10 11 1 + 20 10 22 1 + 21 11 12 2 + 22 11 23 1 + 23 12 13 1 + 24 12 24 1 + 25 13 14 2 + 26 13 25 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3-DIMETHYL-1-PHENYL-5-THIOPYRAZOLONE +@MOLECULE +DARZEB + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -6.5841 -4.9346 14.7919 N.2 1 UNCH -0.1790 + 2 N2 -6.4862 -4.4724 13.6310 N.2 1 UNCH -0.0620 + 3 N3 -7.6134 -4.1507 12.9173 N.3 1 UNCH -0.5382 + 4 C4 -8.8546 -4.8492 13.1762 C.3 1 UNCH 0.7236 + 5 C41 -9.0207 -5.0812 14.6361 C.2 1 UNCH -0.1435 + 6 C5 -10.2631 -5.3038 15.2433 C.2 1 UNCH -0.1500 + 7 C6 -10.3328 -5.5196 16.6187 C.2 1 UNCH -0.1500 + 8 C7 -9.1662 -5.5222 17.3818 C.2 1 UNCH -0.1500 + 9 C8 -7.9293 -5.3150 16.7662 C.2 1 UNCH -0.1500 + 10 C81 -7.8470 -5.0927 15.3880 C.2 1 UNCH 0.1790 + 11 C31 -7.3636 -3.6281 11.5765 C.3 1 UNCH 0.3001 + 12 C32 -8.2740 -2.4666 11.2132 C.3 1 UNCH 0.0000 + 13 O4 -8.7861 -6.0929 12.5093 O.3 1 UNCH -0.6800 + 14 H31 -6.3255 -3.2766 11.5335 H 1 UNCH 0.0000 + 15 H32 -7.4643 -4.4458 10.8549 H 1 UNCH 0.0000 + 16 H33 -8.2114 -1.6711 11.9630 H 1 UNCH 0.0000 + 17 H34 -7.9850 -2.0489 10.2437 H 1 UNCH 0.0000 + 18 H35 -9.3195 -2.7805 11.1415 H 1 UNCH 0.0000 + 19 H41 -9.6938 -4.2657 12.7870 H 1 UNCH 0.0000 + 20 H42 -7.8515 -6.3414 12.6224 H 1 UNCH 0.4000 + 21 H5 -11.1719 -5.3140 14.6465 H 1 UNCH 0.1500 + 22 H6 -11.2950 -5.6910 17.0951 H 1 UNCH 0.1500 + 23 H7 -9.2166 -5.6940 18.4540 H 1 UNCH 0.1500 + 24 H8 -7.0201 -5.3313 17.3620 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 10 1 + 3 2 3 1 + 4 3 4 1 + 5 3 11 1 + 6 4 5 1 + 7 4 13 1 + 8 4 19 1 + 9 5 6 2 + 10 5 10 1 + 11 6 7 1 + 12 6 21 1 + 13 7 8 2 + 14 7 22 1 + 15 8 9 1 + 16 8 23 1 + 17 9 10 2 + 18 9 24 1 + 19 11 12 1 + 20 11 14 1 + 21 11 15 1 + 22 12 16 1 + 23 12 17 1 + 24 12 18 1 + 25 13 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-ETHYL-4-HYDROXY-1,2,3(4H)-BENZOTRIAZINE +@MOLECULE +DAVWEC + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -5.9736 -5.3954 15.6975 BR 1 DASR -0.1100 + 2 BR2 -8.8488 -7.1364 15.5010 BR 1 DASR -0.1100 + 3 C1 -8.6523 -2.6581 13.8086 C.2 1 DASR 0.4480 + 4 C2 -7.3607 -3.2355 14.3965 C.3 1 DASR 0.4394 + 5 C3 -7.5531 -4.6564 14.9356 C.2 1 DASR -0.0282 + 6 C4 -8.7243 -5.3446 14.8856 C.2 1 DASR -0.0282 + 7 C5 -10.0483 -4.7427 14.3335 C.3 1 DASR 0.3784 + 8 C6 -9.9703 -3.1863 14.3821 C.3 1 DASR 0.3012 + 9 C7 -6.8269 -2.2449 15.4501 C.3 1 DASR 0.0000 + 10 C8 -11.3162 -5.2487 15.0827 C.3 1 DASR 0.0000 + 11 C9 -10.1172 -2.6559 15.8365 C.3 1 DASR 0.0000 + 12 N1 -6.3816 -3.3014 13.2144 N.2 1 DASR 0.7998 + 13 N2 -10.0988 -5.2469 12.8742 N.2 1 DASR 0.7998 + 14 N3 -11.1019 -2.5143 13.5985 N.2 1 DASR 0.7998 + 15 O1 -8.6166 -1.7243 13.0065 O.2 1 DASR -0.5700 + 16 O2 -6.5248 -4.2331 12.4115 O.3 1 DASR -0.5200 + 17 O3 -5.4884 -2.4456 13.1484 O.2 1 DASR -0.5200 + 18 O4 -10.7895 -6.2396 12.6196 O.3 1 DASR -0.5200 + 19 O5 -9.3900 -4.6456 12.0610 O.2 1 DASR -0.5200 + 20 O6 -11.3272 -1.3214 13.8417 O.3 1 DASR -0.5200 + 21 O7 -11.7859 -3.2073 12.8408 O.2 1 DASR -0.5200 + 22 H1 -7.4005 -2.2978 16.3810 H 1 DASR 0.0000 + 23 H2 -6.8919 -1.2080 15.0974 H 1 DASR 0.0000 + 24 H3 -5.7783 -2.4276 15.7116 H 1 DASR 0.0000 + 25 H4 -11.5078 -6.3187 14.9460 H 1 DASR 0.0000 + 26 H5 -12.2276 -4.7442 14.7471 H 1 DASR 0.0000 + 27 H6 -11.2322 -5.0827 16.1629 H 1 DASR 0.0000 + 28 H7 -9.5048 -3.2206 16.5465 H 1 DASR 0.0000 + 29 H8 -11.1536 -2.7121 16.1909 H 1 DASR 0.0000 + 30 H9 -9.8067 -1.6065 15.9170 H 1 DASR 0.0000 +@BOND + 1 1 5 1 + 2 2 6 1 + 3 3 4 1 + 4 3 8 1 + 5 3 15 2 + 6 4 5 1 + 7 4 9 1 + 8 4 12 1 + 9 5 6 2 + 10 6 7 1 + 11 7 8 1 + 12 7 10 1 + 13 7 13 1 + 14 8 11 1 + 15 8 14 1 + 16 9 22 1 + 17 9 23 1 + 18 9 24 1 + 19 10 25 1 + 20 10 26 1 + 21 10 27 1 + 22 11 28 1 + 23 11 29 1 + 24 11 30 1 + 25 12 16 1 + 26 12 17 2 + 27 13 18 1 + 28 13 19 2 + 29 14 20 1 + 30 14 21 2 +@SUBSTRUCTURE + 1 DASR 1 +@COMMENT +COMMENT 3,4-DIBROMO-2,5,6-TRIMETHYL-R-2,C-5,C-6-TRINITROCYCLOHEX-3- +@MOLECULE +DAVXED + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -10.4142 -3.7016 13.9288 C.2 1 UNCH 0.4480 + 2 C2 -9.4306 -4.0374 12.7882 C.3 1 UNCH 0.4394 + 3 C3 -8.0458 -4.5076 13.2591 C.2 1 UNCH -0.2764 + 4 C4 -7.7604 -4.6090 14.5804 C.2 1 UNCH 0.0662 + 5 C5 -8.6664 -4.3497 15.7716 C.3 1 UNCH 0.3784 + 6 C6 -10.1646 -4.2298 15.3537 C.3 1 UNCH 0.3012 + 7 C7 -10.0846 -5.0265 11.8028 C.3 1 UNCH 0.0000 + 8 C8 -7.0545 -4.8094 12.1459 C.3 1 UNCH 0.1382 + 9 C9 -8.4530 -5.3627 16.9400 C.3 1 UNCH 0.0000 + 10 C10 -11.0431 -3.4271 16.3530 C.3 1 UNCH 0.0000 + 11 N1 -9.2506 -2.6802 12.0629 N.2 1 UNCH 0.7998 + 12 N2 -6.4372 -5.0740 14.9484 N.2 1 UNCH 0.8356 + 13 N3 -8.2622 -2.9583 16.2950 N.2 1 UNCH 0.7998 + 14 N4 -10.7260 -5.6485 15.2943 N.2 1 UNCH 0.7998 + 15 O1 -11.4644 -3.0966 13.6822 O.2 1 UNCH -0.5700 + 16 O2 -8.6301 -1.8004 12.6718 O.3 1 UNCH -0.5200 + 17 O3 -9.6939 -2.5608 10.9132 O.2 1 UNCH -0.5200 + 18 O4 -5.7187 -4.2718 15.5460 O.3 1 UNCH -0.5200 + 19 O5 -6.1672 -6.2478 14.6803 O.2 1 UNCH -0.5200 + 20 O6 -8.2426 -2.0448 15.4663 O.3 1 UNCH -0.5200 + 21 O7 -8.0767 -2.8190 17.5081 O.2 1 UNCH -0.5200 + 22 O8 -10.1531 -6.4343 14.5322 O.3 1 UNCH -0.5200 + 23 O9 -11.6628 -5.9548 16.0362 O.2 1 UNCH -0.5200 + 24 H1 -8.5392 -6.4013 16.6021 H 1 UNCH 0.0000 + 25 H2 -9.1831 -5.2165 17.7440 H 1 UNCH 0.0000 + 26 H3 -7.4628 -5.2713 17.4032 H 1 UNCH 0.0000 + 27 H4 -10.8066 -2.3575 16.3292 H 1 UNCH 0.0000 + 28 H5 -10.9232 -3.7778 17.3837 H 1 UNCH 0.0000 + 29 H6 -12.1118 -3.4964 16.1116 H 1 UNCH 0.0000 + 30 H7 -7.1043 -4.0559 11.3539 H 1 UNCH 0.0000 + 31 H8 -7.2759 -5.7858 11.7033 H 1 UNCH 0.0000 + 32 H9 -6.0133 -4.8161 12.4796 H 1 UNCH 0.0000 + 33 H10 -10.1102 -6.0466 12.1932 H 1 UNCH 0.0000 + 34 H11 -9.5462 -5.0792 10.8485 H 1 UNCH 0.0000 + 35 H12 -11.1209 -4.7472 11.5771 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 15 2 + 4 2 3 1 + 5 2 7 1 + 6 2 11 1 + 7 3 4 2 + 8 3 8 1 + 9 4 5 1 + 10 4 12 1 + 11 5 6 1 + 12 5 9 1 + 13 5 13 1 + 14 6 10 1 + 15 6 14 1 + 16 7 33 1 + 17 7 34 1 + 18 7 35 1 + 19 8 30 1 + 20 8 31 1 + 21 8 32 1 + 22 9 24 1 + 23 9 25 1 + 24 9 26 1 + 25 10 27 1 + 26 10 28 1 + 27 10 29 1 + 28 11 16 1 + 29 11 17 2 + 30 12 18 1 + 31 12 19 2 + 32 13 20 1 + 33 13 21 2 + 34 14 22 1 + 35 14 23 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3,5,6-TETRAMETHYL-R-2,4,C-5,T-6-TETRANITROCYCLOHEX-3-ENON +@MOLECULE +DAWXII + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.0537 -4.5754 14.1171 C.2 1 DAWX -0.0400 + 2 C2 -9.1972 -4.4901 14.8380 C.2 1 DAWX -0.2050 + 3 C3 -9.3966 -5.9714 14.9906 C.3 1 DAWX 0.7340 + 4 C4 -8.1170 -6.1388 14.1116 C.3 1 DAWX 0.7340 + 5 N5 -7.1817 -3.7502 13.5783 N.3 1 DAWX -0.8671 + 6 C6 -6.1286 -4.1715 12.6754 C.3 1 DAWX 0.3691 + 7 N7 -9.8983 -3.3543 15.2896 N.2 1 DAWX 0.9070 + 8 N8 -10.9133 -3.5519 16.0213 N.2 1 DAWX -0.4530 + 9 C9 -11.5573 -2.2992 16.4216 C.3 1 DAWX 0.2460 + 10 O10 -9.4402 -2.2297 14.9021 O.3 1 DAWX -0.6330 + 11 F11 -10.5319 -6.5055 14.4666 F 1 DAWX -0.2980 + 12 F12 -9.3094 -6.4873 16.2456 F 1 DAWX -0.2980 + 13 F13 -8.3024 -6.7418 12.9064 F 1 DAWX -0.2980 + 14 F14 -7.0833 -6.8031 14.6941 F 1 DAWX -0.2980 + 15 H5 -7.3567 -2.7404 13.5849 H 1 DAWX 0.4000 + 16 H61 -6.5498 -4.5021 11.7207 H 1 DAWX 0.0000 + 17 H62 -5.5397 -4.9867 13.1082 H 1 DAWX 0.0000 + 18 H63 -5.4525 -3.3335 12.4802 H 1 DAWX 0.0000 + 19 H91 -10.8829 -1.6696 17.0123 H 1 DAWX 0.0000 + 20 H92 -12.4214 -2.5340 17.0510 H 1 DAWX 0.0000 + 21 H93 -11.9255 -1.7399 15.5545 H 1 DAWX 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 2 2 + 4 2 7 1 + 5 2 3 1 + 6 3 12 1 + 7 3 11 1 + 8 3 4 1 + 9 4 14 1 + 10 4 13 1 + 11 5 15 1 + 12 5 6 1 + 13 6 18 1 + 14 6 17 1 + 15 6 16 1 + 16 7 10 1 + 17 7 8 2 + 18 8 9 1 + 19 9 21 1 + 20 9 20 1 + 21 9 19 1 +@SUBSTRUCTURE + 1 DAWX 1 +@COMMENT +COMMENT 3,3,4,4-TETRAFLUORO-N-METHYL-2-(CIS,S-TRANS-METHYL-N,N,O-AZ +@MOLECULE +DAWYUV + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -8.2706 -1.2595 14.6474 CL 1 DAWX -0.1400 + 2 O1 -8.0596 -5.7210 15.4391 O.3 1 DAWX -0.2325 + 3 C2 -7.3133 -4.8532 16.2179 C.2 1 DAWX 0.7056 + 4 C3 -7.4211 -3.4227 15.9165 C.2 1 DAWX -0.1356 + 5 C4 -8.2012 -2.9604 14.9362 C.2 1 DAWX 0.1116 + 6 C5 -9.8324 -3.4985 13.0691 C.2 1 DAWX -0.1500 + 7 C6 -10.5474 -4.4554 12.3382 C.2 1 DAWX -0.1500 + 8 C7 -10.4278 -5.8105 12.6445 C.2 1 DAWX -0.1500 + 9 C8 -9.5929 -6.2128 13.6823 C.2 1 DAWX -0.1500 + 10 C9 -8.8870 -5.2479 14.4015 C.2 1 DAWX 0.0825 + 11 C10 -8.9868 -3.8844 14.1177 C.2 1 DAWX 0.0284 + 12 O11 -6.5883 -5.2460 17.1244 O.2 1 DAWX -0.5700 + 13 H3 -6.8259 -2.7689 16.5422 H 1 DAWX 0.1500 + 14 H5 -9.9539 -2.4523 12.7981 H 1 DAWX 0.1500 + 15 H6 -11.1998 -4.1392 11.5270 H 1 DAWX 0.1500 + 16 H7 -10.9848 -6.5500 12.0744 H 1 DAWX 0.1500 + 17 H8 -9.4920 -7.2658 13.9297 H 1 DAWX 0.1500 +@BOND + 1 1 5 1 + 2 2 3 1 + 3 2 10 1 + 4 3 4 1 + 5 3 12 2 + 6 4 5 2 + 7 4 13 1 + 8 5 11 1 + 9 6 7 2 + 10 6 11 1 + 11 6 14 1 + 12 7 8 1 + 13 7 15 1 + 14 8 9 2 + 15 8 16 1 + 16 9 10 1 + 17 9 17 1 + 18 10 11 2 +@SUBSTRUCTURE + 1 DAWX 1 +@COMMENT +COMMENT 4-CHLORO-COUMARIN +@MOLECULE +DAYWEF + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -7.1548 -4.0623 14.3121 P 1 UNCH 1.5136 + 2 P2 -9.8261 -4.1855 15.1298 P 1 UNCH 1.5136 + 3 O2 -8.7016 -4.2815 14.0074 O.3 1 UNCH -0.5424 + 4 O11 -6.7257 -5.2466 15.3078 O.3 1 UNCH -0.5512 + 5 O13 -6.4504 -4.4959 12.9258 O.3 1 UNCH -0.5512 + 6 O14 -6.7950 -2.6810 14.7536 O.2 1 UNCH -0.7000 + 7 C14 -6.6091 -5.8365 12.4985 C.3 1 UNCH 0.2800 + 8 C15 -6.1182 -6.7983 13.5687 C.3 1 UNCH 0.0000 + 9 C16 -6.8809 -6.5818 14.8655 C.3 1 UNCH 0.2800 + 10 O21 -11.1939 -4.2471 14.2744 O.3 1 UNCH -0.5512 + 11 O23 -9.8069 -2.6663 15.6495 O.3 1 UNCH -0.5512 + 12 O24 -9.7417 -5.2350 16.1899 O.2 1 UNCH -0.7000 + 13 C24 -10.0595 -1.6357 14.7133 C.3 1 UNCH 0.2800 + 14 C25 -11.4050 -1.8543 14.0407 C.3 1 UNCH 0.0000 + 15 C26 -11.4364 -3.2061 13.3457 C.3 1 UNCH 0.2800 + 16 H141 -7.6609 -6.0171 12.2523 H 1 UNCH 0.0000 + 17 H142 -6.0266 -5.9692 11.5816 H 1 UNCH 0.0000 + 18 H151 -6.2266 -7.8335 13.2304 H 1 UNCH 0.0000 + 19 H152 -5.0544 -6.6041 13.7519 H 1 UNCH 0.0000 + 20 H161 -6.4916 -7.2441 15.6448 H 1 UNCH 0.0000 + 21 H162 -7.9450 -6.8057 14.7394 H 1 UNCH 0.0000 + 22 H241 -10.0592 -0.6825 15.2507 H 1 UNCH 0.0000 + 23 H242 -9.2509 -1.6025 13.9762 H 1 UNCH 0.0000 + 24 H251 -11.6086 -1.0520 13.3246 H 1 UNCH 0.0000 + 25 H252 -12.1871 -1.8382 14.8094 H 1 UNCH 0.0000 + 26 H261 -10.6957 -3.2578 12.5407 H 1 UNCH 0.0000 + 27 H262 -12.4219 -3.3744 12.9006 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 1 6 2 + 5 2 3 1 + 6 2 10 1 + 7 2 11 1 + 8 2 12 2 + 9 4 9 1 + 10 5 7 1 + 11 7 8 1 + 12 7 16 1 + 13 7 17 1 + 14 8 9 1 + 15 8 18 1 + 16 8 19 1 + 17 9 20 1 + 18 9 21 1 + 19 10 15 1 + 20 11 13 1 + 21 13 14 1 + 22 13 22 1 + 23 13 23 1 + 24 14 15 1 + 25 14 24 1 + 26 14 25 1 + 27 15 26 1 + 28 15 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(2-OXO-1,3,2LAMBDA-5--DIOXAPHOSPHORINAN-2-YL) OXIDE P,P' +@MOLECULE +DAZVEF + 27 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.0086 -4.6838 13.7441 C.2 1 UNCH 0.5700 + 2 O1 -7.1328 -5.2365 13.0903 O.2 1 UNCH -0.5700 + 3 C2 -9.4411 -4.6609 13.2991 C.3 1 UNCH 0.0000 + 4 C3 -9.7103 -4.6526 11.7949 C.3 1 UNCH -0.2000 + 5 C4 -9.9817 -5.8977 12.5833 C.3 1 UNCH -0.2000 + 6 C5 -10.4002 -3.9374 14.1938 C.2 1 UNCH 0.5700 + 7 O2 -11.3334 -3.2788 13.7536 O.2 1 UNCH -0.5700 + 8 C6 -10.1670 -4.1088 15.6636 C.3 1 UNCH 0.0000 + 9 C7 -11.1950 -3.5234 16.6309 C.3 1 UNCH -0.2000 + 10 C8 -11.1558 -5.0047 16.4079 C.3 1 UNCH -0.2000 + 11 C9 -8.7346 -4.1316 16.1088 C.2 1 UNCH 0.5700 + 12 O3 -8.4208 -4.2568 17.2860 O.2 1 UNCH -0.5700 + 13 C10 -7.7110 -3.9741 15.0280 C.3 1 UNCH 0.0000 + 14 C11 -6.2497 -3.7853 15.4325 C.3 1 UNCH -0.2000 + 15 C12 -7.0257 -2.6124 14.9204 C.3 1 UNCH -0.2000 + 16 H1 -8.8636 -4.6583 11.1158 H 1 UNCH 0.1000 + 17 H2 -10.5608 -4.0925 11.4199 H 1 UNCH 0.1000 + 18 H3 -11.0188 -6.1775 12.7353 H 1 UNCH 0.1000 + 19 H4 -9.3176 -6.7428 12.4318 H 1 UNCH 0.1000 + 20 H5 -12.0364 -2.9702 16.2265 H 1 UNCH 0.1000 + 21 H6 -10.8508 -3.1468 17.5889 H 1 UNCH 0.1000 + 22 H7 -11.9764 -5.4492 15.8546 H 1 UNCH 0.1000 + 23 H8 -10.7871 -5.6251 17.2185 H 1 UNCH 0.1000 + 24 H9 -5.9957 -3.8087 16.4874 H 1 UNCH 0.1000 + 25 H10 -5.4765 -4.2036 14.7961 H 1 UNCH 0.1000 + 26 H11 -6.7683 -2.2340 13.9365 H 1 UNCH 0.1000 + 27 H12 -7.2892 -1.8378 15.6332 H 1 UNCH 0.1000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 13 1 + 4 3 4 1 + 5 3 5 1 + 6 3 6 1 + 7 4 5 1 + 8 4 16 1 + 9 4 17 1 + 10 5 18 1 + 11 5 19 1 + 12 6 7 2 + 13 6 8 1 + 14 8 9 1 + 15 8 10 1 + 16 8 11 1 + 17 9 10 1 + 18 9 20 1 + 19 9 21 1 + 20 10 22 1 + 21 10 23 1 + 22 11 12 2 + 23 11 13 1 + 24 13 14 1 + 25 13 15 1 + 26 14 15 1 + 27 14 24 1 + 28 14 25 1 + 29 15 26 1 + 30 15 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRISPIRO(2.1.2.1.2.1)DODECANE-4,8,12-TRIONE +@MOLECULE +DEBMOM01 + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 14.4789 1.2575 0.3363 O.2 1 DEBM -0.5700 + 2 O2 14.5714 3.4520 0.7891 O.3 1 DEBM -0.6500 + 3 O3 15.3706 4.7475 2.6282 O.3 1 DEBM -0.9000 + 4 O4 16.3558 4.5074 4.6798 O.2 1 DEBM -0.9000 + 5 C1 14.7892 2.1687 1.0982 C.2 1 DEBM 0.7056 + 6 C2 15.4222 1.8503 2.3971 C.2 1 DEBM -0.1356 + 7 C3 15.8656 2.5953 3.4206 C.2 1 DEBM -0.4000 + 8 C4 15.8646 4.1025 3.5954 C.2 1 DEBM 1.0500 + 9 H1 14.8745 4.0887 1.5037 H 1 DEBM 0.5000 + 10 H2 15.5325 0.7728 2.5034 H 1 DEBM 0.1500 + 11 H3 16.2993 2.0763 4.2752 H 1 DEBM 0.1500 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 2 9 1 + 4 3 8 1 + 5 4 8 2 + 6 5 6 1 + 7 6 7 2 + 8 6 10 1 + 9 7 8 1 + 10 7 11 1 +@SUBSTRUCTURE + 1 DEBM 1 +@COMMENT +COMMENT GUANIDINIUM HYDROGEN MALEATE (FORM II) +@MOLECULE +DECJAW + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.3520 3.2066 5.1458 O.3 1 UNCH -0.0191 + 2 N2 -0.8627 3.8253 5.4491 N.2 1 UNCH -0.4097 + 3 C3 -1.0634 4.6963 4.4628 C.2 1 UNCH 0.3508 + 4 C31 -0.0241 4.7177 3.5313 C.2 1 UNCH -0.1810 + 5 C4 0.2970 5.5138 2.3287 C.3 1 UNCH 0.1810 + 6 C5 1.8303 5.6090 2.1635 C.3 1 UNCH 0.5030 + 7 N6 2.4850 4.2772 2.2326 N.3 1 UNCH -0.9060 + 8 C7 2.1390 3.3398 3.4468 C.3 1 UNCH 0.5770 + 9 C71 0.8269 3.7435 3.9978 C.2 1 UNCH -0.0400 + 10 C8 2.0637 1.8834 2.8832 C.2 1 UNCH 0.9060 + 11 O81 1.9595 1.9332 1.6068 O.2 1 UNCH -0.9000 + 12 O82 2.2188 0.9315 3.6760 O.3 1 UNCH -0.9000 + 13 O3 -2.1790 5.4304 4.5118 O.3 1 UNCH -0.5120 + 14 H41 -0.1409 5.0336 1.4456 H 1 UNCH 0.0000 + 15 H45 -0.1253 6.5215 2.4039 H 1 UNCH 0.0000 + 16 H51 2.2786 6.2161 2.9579 H 1 UNCH 0.0000 + 17 H55 2.0922 6.0449 1.1948 H 1 UNCH 0.0000 + 18 H61 2.1654 3.6350 1.4586 H 1 UNCH 0.4500 + 19 H65 3.5017 4.2779 2.1157 H 1 UNCH 0.4500 + 20 H71 2.9533 3.4684 4.1649 H 1 UNCH 0.0000 + 21 H3 -2.2894 5.9334 3.6926 H 1 UNCH 0.4500 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 2 3 2 + 4 3 4 1 + 5 3 13 1 + 6 4 5 1 + 7 4 9 2 + 8 5 6 1 + 9 5 14 1 + 10 5 15 1 + 11 6 7 1 + 12 6 16 1 + 13 6 17 1 + 14 7 8 1 + 15 7 18 1 + 16 7 19 1 + 17 8 9 1 + 18 8 10 1 + 19 8 20 1 + 20 10 11 2 + 21 10 12 1 + 22 13 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (RS)-3-HYDROXY-4,5,6,7-TETRAHYDROISOXAZOLO(5,4-C)PYRIDINE-7 +@MOLECULE +DECKUR + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.9060 -3.0637 14.8608 N.3 1 UNCH -0.8382 + 2 C2 -9.1567 -3.3948 13.5434 C.2 1 UNCH -0.0500 + 3 C3 -8.9806 -4.6144 13.0205 C.2 1 UNCH 0.0288 + 4 C4 -8.4424 -5.6615 13.9289 C.2 1 UNCH 0.6156 + 5 N5 -8.1284 -5.2891 15.2320 N.3 1 UNCH -0.6602 + 6 C6 -7.7836 -6.3404 16.1792 C.3 1 UNCH 0.3001 + 7 C7 -9.0411 -6.8111 16.9129 C.3 1 UNCH 0.0000 + 8 C8 -9.7824 -5.6325 17.5541 C.3 1 UNCH 0.0000 + 9 C9 -10.0224 -4.4956 16.5521 C.3 1 UNCH 0.0000 + 10 C9_ -8.7093 -4.1103 15.8537 C.3 1 UNCH 0.6692 + 11 C11 -9.3092 -4.8222 11.5841 C.2 1 UNCH 0.6156 + 12 O12 -9.7602 -3.9371 10.8630 O.2 1 UNCH -0.5700 + 13 N13 -9.0890 -6.0678 11.0865 N.3 1 UNCH -0.8000 + 14 O17 -8.2682 -6.8092 13.5113 O.2 1 UNCH -0.5700 + 15 C18 -9.1660 -1.7201 15.3683 C.3 1 UNCH 0.3691 + 16 H2 -9.5133 -2.5675 12.9317 H 1 UNCH 0.1500 + 17 H61 -7.3059 -7.1838 15.6698 H 1 UNCH 0.0000 + 18 H62 -7.0549 -5.9316 16.8891 H 1 UNCH 0.0000 + 19 H71 -9.7135 -7.3107 16.2044 H 1 UNCH 0.0000 + 20 H72 -8.7741 -7.5460 17.6801 H 1 UNCH 0.0000 + 21 H81 -10.7389 -5.9739 17.9651 H 1 UNCH 0.0000 + 22 H82 -9.1903 -5.2506 18.3951 H 1 UNCH 0.0000 + 23 H91 -10.7674 -4.8201 15.8140 H 1 UNCH 0.0000 + 24 H92 -10.4506 -3.6332 17.0756 H 1 UNCH 0.0000 + 25 H92_ -7.9849 -3.7583 16.6001 H 1 UNCH 0.0000 + 26 H131 -9.2950 -6.2537 10.1162 H 1 UNCH 0.3700 + 27 H132 -8.7166 -6.8132 11.6724 H 1 UNCH 0.3700 + 28 H181 -8.6508 -1.5465 16.3190 H 1 UNCH 0.0000 + 29 H182 -10.2398 -1.5725 15.5233 H 1 UNCH 0.0000 + 30 H183 -8.8101 -0.9631 14.6609 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 1 15 1 + 4 2 3 2 + 5 2 16 1 + 6 3 4 1 + 7 3 11 1 + 8 4 5 am + 9 4 14 2 + 10 5 6 1 + 11 5 10 1 + 12 6 7 1 + 13 6 17 1 + 14 6 18 1 + 15 7 8 1 + 16 7 19 1 + 17 7 20 1 + 18 8 9 1 + 19 8 21 1 + 20 8 22 1 + 21 9 10 1 + 22 9 23 1 + 23 9 24 1 + 24 10 25 1 + 25 11 12 2 + 26 11 13 am + 27 13 26 1 + 28 13 27 1 + 29 15 28 1 + 30 15 29 1 + 31 15 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-1-METHYL-4-OXO-1,6,7,8,9,9A-HEXAHYDRO-4H-PYRIDO(1,2-A +@MOLECULE +DECRIM + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.0627 -3.7054 14.6274 O.3 1 DECR -0.3330 + 2 N1 -10.0433 -4.2177 13.7919 N.2 1 DECR -0.7470 + 3 N3 -9.7265 -2.2153 15.1401 N.3 1 DECR -0.8110 + 4 C1 -9.3525 -3.3393 14.5318 C.2 1 DECR 0.9250 + 5 C2 -7.9087 -4.8228 13.8605 C.2 1 DECR 0.1400 + 6 C3 -6.7381 -5.5333 13.6372 C.2 1 DECR -0.1500 + 7 C4 -6.8645 -6.6512 12.8039 C.2 1 DECR -0.1500 + 8 C5 -8.0985 -7.0124 12.2442 C.2 1 DECR -0.1500 + 9 C6 -9.2637 -6.2691 12.4962 C.2 1 DECR -0.1500 + 10 C7 -9.1380 -5.1539 13.3265 C.2 1 DECR 0.3330 + 11 C8 -11.4556 -4.3032 13.5121 C.3 1 DECR 0.5140 + 12 C10 -11.0017 -1.5460 14.8927 C.3 1 DECR 0.4895 + 13 C11 -8.7639 -1.5438 16.0361 C.3 1 DECR 0.4895 + 14 H3 -5.7903 -5.2442 14.0760 H 1 DECR 0.1500 + 15 H4 -5.9831 -7.2549 12.5850 H 1 DECR 0.1500 + 16 H5 -8.1522 -7.8904 11.5999 H 1 DECR 0.1500 + 17 H101 -10.9445 -0.4929 15.1854 H 1 DECR 0.0000 + 18 H102 -11.7870 -2.0293 15.4789 H 1 DECR 0.0000 + 19 H112 -7.9841 -1.0675 15.4349 H 1 DECR 0.0000 + 20 H1 -10.2038 -6.5705 12.0482 H 1 DECR 0.1500 + 21 H2 -11.2428 -1.5766 13.8271 H 1 DECR 0.0000 + 22 H6 -9.2704 -0.7835 16.6381 H 1 DECR 0.0000 + 23 H7 -8.3197 -2.2747 16.7190 H 1 DECR 0.0000 + 24 H8 -11.7492 -5.3164 13.2270 H 1 DECR 0.0000 + 25 H9 -12.0239 -4.0440 14.4081 H 1 DECR 0.0000 + 26 H10 -11.7034 -3.6170 12.6984 H 1 DECR 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 4 2 + 4 2 10 1 + 5 2 11 1 + 6 3 4 am + 7 3 12 1 + 8 3 13 1 + 9 5 6 2 + 10 5 10 1 + 11 6 7 1 + 12 6 14 1 + 13 7 8 2 + 14 7 15 1 + 15 8 9 1 + 16 8 16 1 + 17 9 10 2 + 18 9 20 1 + 19 11 26 1 + 20 11 25 1 + 21 11 24 1 + 22 12 17 1 + 23 12 18 1 + 24 12 21 1 + 25 13 19 1 + 26 13 22 1 + 27 13 23 1 +@SUBSTRUCTURE + 1 DECR 1 +@COMMENT +COMMENT 3-METHYL-2-DIMETHYLAMINOBENZOXAZOLIUM IODIDE MONOHYDRATE +@MOLECULE +DEDCIY + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -12.5242 -5.2171 15.1876 CL 1 UNCH -0.1770 + 2 CL2 -9.8869 -1.8339 11.9121 CL 1 UNCH -0.1770 + 3 CL3 -6.9983 -4.0558 16.8673 CL 1 UNCH -0.2900 + 4 O1 -5.2447 -3.5189 14.1694 O.2 1 UNCH -0.5700 + 5 N1 -7.3916 -3.0173 13.4546 N.3 1 UNCH -0.5470 + 6 C1 -11.0413 -4.5337 14.6412 C.2 1 UNCH 0.1770 + 7 C2 -11.0641 -3.5703 13.6190 C.2 1 UNCH -0.1500 + 8 C3 -9.8710 -3.0082 13.1651 C.2 1 UNCH 0.1770 + 9 C4 -8.6872 -3.4275 13.7481 C.2 1 UNCH 0.1170 + 10 C5 -8.6600 -4.3846 14.7649 C.2 1 UNCH -0.1435 + 11 C6 -9.8400 -4.9510 15.2243 C.2 1 UNCH -0.1500 + 12 C7 -6.4529 -3.6745 14.2453 C.2 1 UNCH 0.5690 + 13 C8 -7.2326 -4.6206 15.1935 C.3 1 UNCH 0.4945 + 14 C9 -6.7738 -6.0614 15.0331 C.3 1 UNCH 0.0000 + 15 H2 -12.0120 -3.2640 13.1834 H 1 UNCH 0.1500 + 16 H6 -9.8344 -5.6904 16.0204 H 1 UNCH 0.1500 + 17 H1 -7.1425 -2.3340 12.7516 H 1 UNCH 0.3700 + 18 H91 -5.7137 -6.1724 15.2880 H 1 UNCH 0.0000 + 19 H92 -6.8921 -6.4011 13.9971 H 1 UNCH 0.0000 + 20 H93 -7.3491 -6.7431 15.6696 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 2 8 1 + 3 3 13 1 + 4 4 12 2 + 5 5 9 1 + 6 5 12 am + 7 5 17 1 + 8 6 7 2 + 9 6 11 1 + 10 7 8 1 + 11 7 15 1 + 12 8 9 2 + 13 9 10 1 + 14 10 11 2 + 15 10 13 1 + 16 11 16 1 + 17 12 13 1 + 18 13 14 1 + 19 14 18 1 + 20 14 19 1 + 21 14 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,5,7-TRICHLORO-3-METHYL-3H-INDOL-2-ONE +@MOLECULE +DEDSIO + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 -5.9277 -3.7485 17.5165 I 1 DEDS -0.1900 + 2 N1 -7.6031 -5.6789 15.2548 N.3 1 DEDS -0.3290 + 3 O1 -9.1485 -7.0536 16.3866 O.2 1 DEDS -0.5700 + 4 C1 -8.0396 -6.6712 16.0915 C.2 1 DEDS 0.5770 + 5 C2 -6.6071 -7.0835 16.4559 C.3 1 DEDS 0.0530 + 6 C3 -6.1729 -6.0175 15.4274 C.3 1 DEDS 0.2250 + 7 C4 -5.2773 -4.8394 15.8054 C.3 1 DEDS 0.1900 + 8 C5 -8.2644 -4.8552 14.4181 C.1 1 DEDS 0.0440 + 9 C6 -8.8468 -4.1161 13.6732 C.1 1 DEDS -0.1050 + 10 C7 -9.5386 -3.2286 12.7774 C.2 1 DEDS 0.8250 + 11 O2 -8.9902 -2.8082 11.7717 O.2 1 DEDS -0.5700 + 12 O3 -10.7945 -2.9591 13.2053 O.3 1 DEDS -0.4300 + 13 C8 -11.6616 -2.0825 12.4433 C.3 1 DEDS 0.2800 + 14 C9 -11.0854 -0.6646 12.3609 C.3 1 DEDS 0.0000 + 15 C10 -12.9718 -2.0345 13.2440 C.3 1 DEDS 0.0000 + 16 C11 -11.9567 -2.6611 11.0550 C.3 1 DEDS 0.0000 + 17 H21 -6.3491 -6.9088 17.5022 H 1 DEDS 0.0000 + 18 H22 -6.3637 -8.1140 16.1833 H 1 DEDS 0.0000 + 19 H3 -5.7854 -6.4814 14.5077 H 1 DEDS 0.0000 + 20 H41 -4.2636 -5.2123 15.9925 H 1 DEDS 0.0000 + 21 H42 -5.1997 -4.1530 14.9539 H 1 DEDS 0.0000 + 22 H91 -11.8086 0.0350 11.9280 H 1 DEDS 0.0000 + 23 H92 -10.8019 -0.3018 13.3553 H 1 DEDS 0.0000 + 24 H93 -10.1827 -0.6256 11.7439 H 1 DEDS 0.0000 + 25 H101 -13.7192 -1.3943 12.7638 H 1 DEDS 0.0000 + 26 H102 -12.7948 -1.6590 14.2587 H 1 DEDS 0.0000 + 27 H103 -13.3969 -3.0388 13.3562 H 1 DEDS 0.0000 + 28 H111 -11.0696 -2.6584 10.4143 H 1 DEDS 0.0000 + 29 H112 -12.7341 -2.0860 10.5406 H 1 DEDS 0.0000 + 30 H113 -12.2865 -3.7034 11.1303 H 1 DEDS 0.0000 +@BOND + 1 1 7 1 + 2 2 4 am + 3 2 6 1 + 4 2 8 1 + 5 3 4 2 + 6 4 5 1 + 7 5 6 1 + 8 5 17 1 + 9 5 18 1 + 10 6 7 1 + 11 6 19 1 + 12 7 20 1 + 13 7 21 1 + 14 8 9 3 + 15 9 10 1 + 16 10 11 2 + 17 10 12 1 + 18 12 13 1 + 19 13 14 1 + 20 13 15 1 + 21 13 16 1 + 22 14 22 1 + 23 14 23 1 + 24 14 24 1 + 25 15 25 1 + 26 15 26 1 + 27 15 27 1 + 28 16 28 1 + 29 16 29 1 + 30 16 30 1 +@SUBSTRUCTURE + 1 DEDS 1 +@COMMENT +COMMENT 3-(4-IODOMETHYL-2-OXO-1-AZETIDINYL)-PROPYNOIC ACID T-BUTYL +@MOLECULE +DEFGIE + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -7.6503 -1.9638 17.5989 O.3 1 DEFG -0.6330 + 2 O2 -8.2970 -8.6174 11.9631 O.2 1 DEFG -0.5700 + 3 N1 -7.8676 -3.2432 15.4362 N.3 1 DEFG -0.4580 + 4 N2 -8.7696 -2.2352 15.6402 N.2 1 DEFG -0.2490 + 5 N3 -8.5539 -1.6405 16.7510 N.2 1 DEFG 0.7410 + 6 N4 -10.4153 -7.9000 11.6863 N.3 1 DEFG -0.8000 + 7 C1 -8.2447 -4.3502 14.6567 C.2 1 DEFG 0.1000 + 8 C2 -7.4565 -5.5082 14.6883 C.2 1 DEFG -0.1500 + 9 C3 -7.7630 -6.6105 13.8830 C.2 1 DEFG -0.1500 + 10 C4 -8.8600 -6.5678 13.0169 C.2 1 DEFG 0.0862 + 11 C5 -9.6269 -5.4011 12.9415 C.2 1 DEFG -0.1500 + 12 C6 -9.3129 -4.3018 13.7508 C.2 1 DEFG -0.1500 + 13 C7 -9.4532 -0.5219 17.0486 C.3 1 DEFG 0.0990 + 14 C8 -9.1468 -7.7630 12.1793 C.2 1 DEFG 0.5438 + 15 H1 -7.2929 -3.4518 16.2594 H 1 DEFG 0.4000 + 16 H2 -6.5894 -5.5640 15.3427 H 1 DEFG 0.1500 + 17 H3 -7.1384 -7.5008 13.9309 H 1 DEFG 0.1500 + 18 H41 -10.6146 -8.7831 11.2330 H 1 DEFG 0.3700 + 19 H42 -11.1979 -7.3917 12.0710 H 1 DEFG 0.3700 + 20 H5 -10.4493 -5.3117 12.2384 H 1 DEFG 0.1500 + 21 H6 -9.9079 -3.3965 13.6574 H 1 DEFG 0.1500 + 22 H71 -9.1601 -0.0677 17.9985 H 1 DEFG 0.0000 + 23 H72 -10.4738 -0.9061 17.1196 H 1 DEFG 0.0000 + 24 H73 -9.3720 0.2148 16.2455 H 1 DEFG 0.0000 +@BOND + 1 1 5 1 + 2 2 14 2 + 3 3 15 1 + 4 3 7 1 + 5 3 4 1 + 6 4 5 2 + 7 5 13 1 + 8 6 19 1 + 9 6 18 1 + 10 6 14 am + 11 7 12 1 + 12 7 8 2 + 13 8 16 1 + 14 8 9 1 + 15 9 17 1 + 16 9 10 2 + 17 10 14 1 + 18 10 11 1 + 19 11 20 1 + 20 11 12 2 + 21 12 21 1 + 22 13 24 1 + 23 13 23 1 + 24 13 22 1 +@SUBSTRUCTURE + 1 DEFG 1 +@COMMENT +COMMENT 3-(4-CARBAMOYLPHENYL)-1-METHYLTRIAZENE 1-OXIDE (ANTITUMOUR +@MOLECULE +DEFLEF + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C7 -9.1314 -3.5948 15.6257 C.3 1 DEFL 0.6002 + 2 N1 -7.7250 -3.6049 15.3432 N.3 1 DEFL -0.3441 + 3 N11 -6.9334 -2.5823 15.8506 N.2 1 DEFL 1.0240 + 4 O12 -7.5588 -1.6178 16.2889 O.3 1 DEFL -0.5200 + 5 O13 -5.7189 -2.7332 15.7835 O.2 1 DEFL -0.5200 + 6 C2 -7.2435 -4.8845 15.1191 C.2 1 DEFL 0.6900 + 7 O21 -6.0872 -5.2548 15.0130 O.2 1 DEFL -0.5700 + 8 N3 -8.3595 -5.7414 14.9780 N.3 1 DEFL -0.4201 + 9 C31 -8.3523 -6.9662 15.6140 C.2 1 DEFL 0.5690 + 10 C33 -7.1899 -7.8774 15.3173 C.3 1 DEFL 0.0610 + 11 O32 -9.2218 -7.2723 16.4290 O.2 1 DEFL -0.5700 + 12 C8 -9.5719 -4.9472 15.0440 C.3 1 DEFL 0.6002 + 13 N4 -10.0990 -4.5535 13.7691 N.3 1 DEFL -0.3441 + 14 N41 -10.7339 -5.5078 12.9842 N.2 1 DEFL 1.0240 + 15 O43 -10.5619 -6.6701 13.3489 O.3 1 DEFL -0.5200 + 16 O42 -11.3625 -5.1013 12.0137 O.2 1 DEFL -0.5200 + 17 C5 -10.4324 -3.2093 13.7310 C.2 1 DEFL 0.6900 + 18 O51 -11.0421 -2.6006 12.8689 O.2 1 DEFL -0.5700 + 19 N6 -9.8896 -2.6024 14.8872 N.3 1 DEFL -0.4201 + 20 C61 -10.6610 -1.7109 15.6047 C.2 1 DEFL 0.5690 + 21 C62 -11.2269 -0.5395 14.8449 C.3 1 DEFL 0.0610 + 22 O63 -10.9224 -1.8980 16.7924 O.2 1 DEFL -0.5700 + 23 H1 -10.3778 -5.3843 15.6469 H 1 DEFL 0.0000 + 24 H2 -9.2798 -3.5739 16.7128 H 1 DEFL 0.0000 + 25 H3 -12.2319 -0.7810 14.4902 H 1 DEFL 0.0000 + 26 H4 -11.2764 0.3258 15.5124 H 1 DEFL 0.0000 + 27 H5 -10.5849 -0.2723 14.0011 H 1 DEFL 0.0000 + 28 H6 -6.4077 -7.7332 16.0666 H 1 DEFL 0.0000 + 29 H7 -7.5352 -8.9149 15.3490 H 1 DEFL 0.0000 + 30 H8 -6.7905 -7.6904 14.3167 H 1 DEFL 0.0000 +@BOND + 1 1 24 1 + 2 1 19 1 + 3 1 12 1 + 4 1 2 1 + 5 2 6 am + 6 2 3 1 + 7 3 5 2 + 8 3 4 1 + 9 6 8 am + 10 6 7 2 + 11 8 12 1 + 12 8 9 am + 13 9 11 2 + 14 9 10 1 + 15 10 30 1 + 16 10 29 1 + 17 10 28 1 + 18 12 23 1 + 19 12 13 1 + 20 13 17 am + 21 13 14 1 + 22 14 16 2 + 23 14 15 1 + 24 17 19 am + 25 17 18 2 + 26 19 20 am + 27 20 22 2 + 28 20 21 1 + 29 21 27 1 + 30 21 26 1 + 31 21 25 1 +@SUBSTRUCTURE + 1 DEFL 1 +@COMMENT +COMMENT 1,4-DIACETYL-3,6-DINITROTETRAHYDROIMIDAZO(4,5-D)IMIDAZOLE-2 +@MOLECULE +DEFPUZ + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.5280 -2.2949 13.2039 S.3 1 DEFP 0.1277 + 2 N1 -8.2249 -3.8928 12.8813 N.2 1 DEFP -0.5095 + 3 N2 -9.3793 -3.9515 14.8870 N.2 1 DEFP -0.7470 + 4 N3 -8.6318 -5.9843 13.9011 N.3 1 DEFP -0.8521 + 5 N4 -9.8482 -1.7000 15.4686 N.3 1 DEFP -0.7320 + 6 C1 -8.7227 -4.6391 13.8672 C.2 1 DEFP 0.7048 + 7 C2 -9.3457 -2.6327 14.6834 C.2 1 DEFP 0.8250 + 8 C3 -10.0374 -4.6671 15.9618 C.3 1 DEFP 0.5140 + 9 C4 -7.8678 -6.6834 12.8794 C.3 1 DEFP 0.3691 + 10 H3 -8.6379 -6.4818 14.7822 H 1 DEFP 0.4000 + 11 H410 -9.7421 -0.7401 15.1667 H 1 DEFP 0.4500 + 12 H420 -10.3029 -1.9385 16.3336 H 1 DEFP 0.4500 + 13 H31 -10.7085 -5.4281 15.5524 H 1 DEFP 0.0000 + 14 H32 -10.6371 -3.9859 16.5691 H 1 DEFP 0.0000 + 15 H33 -9.2838 -5.1330 16.6031 H 1 DEFP 0.0000 + 16 H41 -8.2268 -6.4407 11.8736 H 1 DEFP 0.0000 + 17 H42 -7.9808 -7.7633 13.0184 H 1 DEFP 0.0000 + 18 H43 -6.8022 -6.4427 12.9546 H 1 DEFP 0.0000 +@BOND + 1 1 7 1 + 2 1 2 1 + 3 2 6 2 + 4 3 8 1 + 5 3 7 2 + 6 3 6 am + 7 4 10 1 + 8 4 9 1 + 9 4 6 am + 10 5 12 1 + 11 5 11 1 + 12 5 7 am + 13 8 15 1 + 14 8 14 1 + 15 8 13 1 + 16 9 18 1 + 17 9 17 1 + 18 9 16 1 +@SUBSTRUCTURE + 1 DEFP 1 +@COMMENT +COMMENT 5-IMINO-4-METHYL-3-METHYLAMINO-4,5-DIHYDRO-1,2,4-THIADIAZOL +@MOLECULE +DEFTUD + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.1304 -4.4663 14.8318 N.3 1 DEFT -0.1150 + 2 N2 -8.5890 -3.2579 14.5227 N.2 1 DEFT -0.0620 + 3 N3 -7.3806 -3.1618 14.2557 N.2 1 DEFT -0.2110 + 4 C4 -6.5630 -4.2637 14.2750 C.2 1 DEFT 0.7110 + 5 N41 -5.2113 -4.0950 13.9826 N.3 1 DEFT -0.7882 + 6 C42 -4.3709 -5.2668 13.7647 C.3 1 DEFT 0.3691 + 7 C43 -4.7392 -2.8578 13.3775 C.3 1 DEFT 0.3691 + 8 N5 -7.0060 -5.4448 14.5547 N.2 1 DEFT -0.6610 + 9 C6 -8.3283 -5.6049 14.8435 C.2 1 DEFT 0.8410 + 10 O61 -8.7337 -6.7369 15.0927 O.2 1 DEFT -0.5700 + 11 C11 -10.5409 -4.4221 15.1188 C.2 1 DEFT 0.1170 + 12 C12 -11.2387 -3.1967 15.0519 C.2 1 DEFT -0.1500 + 13 C13 -12.6095 -3.1105 15.3237 C.2 1 DEFT -0.1500 + 14 C14 -13.3222 -4.2501 15.6714 C.2 1 DEFT -0.1500 + 15 C15 -12.6626 -5.4707 15.7468 C.2 1 DEFT -0.1500 + 16 C16 -11.2897 -5.5545 15.4742 C.2 1 DEFT -0.1500 + 17 H12 -10.7301 -2.2731 14.7845 H 1 DEFT 0.1500 + 18 H13 -13.1146 -2.1498 15.2622 H 1 DEFT 0.1500 + 19 H14 -14.3862 -4.1889 15.8836 H 1 DEFT 0.1500 + 20 H15 -13.2113 -6.3694 16.0194 H 1 DEFT 0.1500 + 21 H16 -10.8465 -6.5414 15.5569 H 1 DEFT 0.1500 + 22 H421 -3.3100 -4.9960 13.7350 H 1 DEFT 0.0000 + 23 H422 -4.4871 -5.9936 14.5759 H 1 DEFT 0.0000 + 24 H423 -4.6278 -5.7494 12.8160 H 1 DEFT 0.0000 + 25 H431 -3.6453 -2.8023 13.3833 H 1 DEFT 0.0000 + 26 H432 -5.0806 -2.7866 12.3397 H 1 DEFT 0.0000 + 27 H433 -5.1015 -1.9844 13.9300 H 1 DEFT 0.0000 +@BOND + 1 1 11 1 + 2 1 9 am + 3 1 2 1 + 4 2 3 2 + 5 3 4 am + 6 4 8 2 + 7 4 5 am + 8 5 7 1 + 9 5 6 1 + 10 6 24 1 + 11 6 23 1 + 12 6 22 1 + 13 7 27 1 + 14 7 26 1 + 15 7 25 1 + 16 8 9 am + 17 9 10 2 + 18 11 16 1 + 19 11 12 2 + 20 12 17 1 + 21 12 13 1 + 22 13 18 1 + 23 13 14 2 + 24 14 19 1 + 25 14 15 1 + 26 15 20 1 + 27 15 16 2 + 28 16 21 1 +@SUBSTRUCTURE + 1 DEFT 1 +@COMMENT +COMMENT 4-DIMETHYLAMINO-1-PHENYL-1,2,3,5-TETRAZIN-6-ONE (AT 278 DEG +@MOLECULE +DEFVAL + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.4342 -2.8238 13.3977 N.2 1 DEFV -0.0930 + 2 N2 -9.6934 -2.3943 13.4555 N.2 1 DEFV 0.3930 + 3 C3 -9.7066 -0.8815 13.7261 C.2 1 DEFV 1.1100 + 4 O31 -10.7615 -0.2874 13.8358 O.2 1 DEFV -0.5700 + 5 N4 -8.4129 -0.5401 13.8155 N.2 1 DEFV -0.6610 + 6 C5 -7.7341 -1.6374 13.6288 C.2 1 DEFV 0.7110 + 7 N51 -6.3513 -1.6309 13.6475 N.3 1 DEFV -0.7882 + 8 C52 -5.5859 -2.8741 13.7159 C.3 1 DEFV 0.3691 + 9 C53 -5.6226 -0.4337 14.0725 C.3 1 DEFV 0.3691 + 10 N21 -10.7805 -3.0429 13.2910 N.3 1 DEFV -0.3400 + 11 C22 -10.7486 -4.3803 13.7632 C.2 1 DEFV 0.1000 + 12 C23 -11.4270 -4.7162 14.9447 C.2 1 DEFV -0.1500 + 13 C24 -11.3694 -6.0168 15.4530 C.2 1 DEFV -0.1500 + 14 C25 -10.6424 -7.0082 14.7871 C.2 1 DEFV -0.1435 + 15 C26 -9.9534 -6.6759 13.6170 C.2 1 DEFV -0.1500 + 16 C27 -10.0077 -5.3760 13.1075 C.2 1 DEFV -0.1500 + 17 C28 -10.5627 -8.3991 15.3482 C.3 1 DEFV 0.1435 + 18 H23 -12.0109 -3.9795 15.4934 H 1 DEFV 0.1500 + 19 H24 -11.9025 -6.2572 16.3723 H 1 DEFV 0.1500 + 20 H26 -9.3794 -7.4357 13.0880 H 1 DEFV 0.1500 + 21 H27 -9.4839 -5.1663 12.1769 H 1 DEFV 0.1500 + 22 H281 -9.7132 -8.4771 16.0335 H 1 DEFV 0.0000 + 23 H282 -11.4797 -8.6548 15.8894 H 1 DEFV 0.0000 + 24 H283 -10.4417 -9.1366 14.5479 H 1 DEFV 0.0000 + 25 H521 -5.9717 -3.6119 13.0047 H 1 DEFV 0.0000 + 26 H522 -4.5327 -2.7101 13.4646 H 1 DEFV 0.0000 + 27 H523 -5.6404 -3.2953 14.7249 H 1 DEFV 0.0000 + 28 H531 -6.0181 0.4616 13.5813 H 1 DEFV 0.0000 + 29 H532 -5.7030 -0.3081 15.1571 H 1 DEFV 0.0000 + 30 H533 -4.5614 -0.4978 13.8095 H 1 DEFV 0.0000 + 31 H1 -11.6614 -2.5831 13.5411 H 1 DEFV 0.4000 +@BOND + 1 1 6 am + 2 1 2 2 + 3 2 10 1 + 4 2 3 am + 5 3 5 am + 6 3 4 2 + 7 5 6 2 + 8 6 7 am + 9 7 9 1 + 10 7 8 1 + 11 8 27 1 + 12 8 26 1 + 13 8 25 1 + 14 9 30 1 + 15 9 29 1 + 16 9 28 1 + 17 10 31 1 + 18 10 11 1 + 19 11 16 2 + 20 11 12 1 + 21 12 18 1 + 22 12 13 2 + 23 13 19 1 + 24 13 14 1 + 25 14 17 1 + 26 14 15 2 + 27 15 20 1 + 28 15 16 1 + 29 16 21 1 + 30 17 24 1 + 31 17 23 1 + 32 17 22 1 +@SUBSTRUCTURE + 1 DEFV 1 +@COMMENT +COMMENT 5-DIMETHYLAMINO-2,3-DIHYDRO-3-OXO-2-P-TOLYLIMINO-1H-1,2,4-T +@MOLECULE +DEFYUI + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.5351 0.7753 0.6190 S.2 1 UNCH -0.3800 + 2 S2 7.4260 0.8164 1.2032 S.3 1 UNCH -0.3210 + 3 N1 3.5463 -2.0837 1.7633 N.3 1 UNCH -0.9000 + 4 C1 5.8668 -0.0165 1.2808 C.2 1 UNCH 0.5066 + 5 C2 5.9053 -1.3749 1.9129 C.2 1 UNCH -0.1238 + 6 C3 4.8712 -2.2232 2.0768 C.2 1 UNCH -0.0382 + 7 C4 5.3188 -3.5162 2.7079 C.3 1 UNCH 0.1382 + 8 C5 6.6837 -3.1661 3.2747 C.3 1 UNCH 0.0000 + 9 C6 7.1754 -1.9886 2.4421 C.3 1 UNCH 0.1382 + 10 H3 6.9476 1.9186 0.6084 H 1 UNCH 0.1800 + 11 H1 3.0791 -2.9453 1.4923 H 1 UNCH 0.4000 + 12 H2 3.3440 -1.3084 1.1300 H 1 UNCH 0.4000 + 13 H41 4.6414 -3.8505 3.5003 H 1 UNCH 0.0000 + 14 H42 5.3906 -4.3023 1.9481 H 1 UNCH 0.0000 + 15 H51 6.5838 -2.8628 4.3252 H 1 UNCH 0.0000 + 16 H52 7.3764 -4.0132 3.2456 H 1 UNCH 0.0000 + 17 H61 7.7524 -1.3119 3.0793 H 1 UNCH 0.0000 + 18 H62 7.8066 -2.3317 1.6146 H 1 UNCH 0.0000 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 2 10 1 + 4 3 6 1 + 5 3 11 1 + 6 3 12 1 + 7 4 5 1 + 8 5 6 2 + 9 5 9 1 + 10 6 7 1 + 11 7 8 1 + 12 7 13 1 + 13 7 14 1 + 14 8 9 1 + 15 8 15 1 + 16 8 16 1 + 17 9 17 1 + 18 9 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-IMINOCYCLOPENTANE-DITHIOIC ACID +@MOLECULE +DEGLUW + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -7.0655 -3.0586 13.4596 CL 1 DEGL -0.1990 + 2 N1 -9.5673 -2.7463 13.5025 N.3 1 DEGL -0.7544 + 3 N2 -8.8127 -4.6800 14.6042 N.2 1 DEGL -0.8334 + 4 C1 -8.6274 -3.5633 13.9103 C.2 1 DEGL 0.9078 + 5 C2 -10.1616 -5.1183 14.9949 C.3 1 DEGL 0.4895 + 6 C3 -7.6713 -5.5292 15.0128 C.3 1 DEGL 0.4895 + 7 H3 -10.5459 -2.8959 13.6839 H 1 DEGL 0.4500 + 8 H4 -9.2827 -1.9268 12.9795 H 1 DEGL 0.4500 + 9 H21 -10.6231 -4.3504 15.6227 H 1 DEGL 0.0000 + 10 H22 -10.7648 -5.2756 14.0958 H 1 DEGL 0.0000 + 11 H23 -10.1260 -6.0544 15.5588 H 1 DEGL 0.0000 + 12 H31 -6.9997 -4.9543 15.6572 H 1 DEGL 0.0000 + 13 H32 -8.0185 -6.4018 15.5737 H 1 DEGL 0.0000 + 14 H33 -7.1420 -5.8837 14.1234 H 1 DEGL 0.0000 +@BOND + 1 1 4 1 + 2 2 8 1 + 3 2 7 1 + 4 2 4 am + 5 3 6 1 + 6 3 5 1 + 7 3 4 2 + 8 5 11 1 + 9 5 10 1 + 10 5 9 1 + 11 6 14 1 + 12 6 13 1 + 13 6 12 1 +@SUBSTRUCTURE + 1 DEGL 1 +@COMMENT +COMMENT N,N-DIMETHYL-CHLOROFORMAMIDINIUM CHLORIDE MONOHYDRATE +@MOLECULE +DEGRIQ + 37 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -7.9857 -5.7114 17.0579 C.2 1 DEGR -0.1500 + 2 C2 -6.5959 -5.7507 16.8925 C.2 1 DEGR -0.1435 + 3 C3 -5.9181 -4.5743 16.5569 C.2 1 DEGR -0.1500 + 4 C4 -6.6205 -3.3820 16.3672 C.2 1 DEGR -0.1500 + 5 C5 -8.0109 -3.3379 16.5219 C.2 1 DEGR 0.1000 + 6 C6 -8.8966 -1.8414 14.8803 C.3 1 DEGR 0.5126 + 7 C7 -10.1023 -2.5606 14.3144 C.2 1 DEGR -0.1435 + 8 C8 -10.3294 -2.5699 12.9286 C.2 1 DEGR -0.1500 + 9 C9 -11.4422 -3.2273 12.3901 C.2 1 DEGR -0.1435 + 10 C10 -12.3182 -3.8963 13.2509 C.2 1 DEGR -0.1500 + 11 C11 -12.1011 -3.8854 14.6307 C.2 1 DEGR -0.1500 + 12 C12 -11.0015 -3.2137 15.1772 C.2 1 DEGR 0.1000 + 13 C13 -10.2021 -4.4947 17.0327 C.3 1 DEGR 0.5126 + 14 C14 -8.6982 -4.5172 16.8627 C.2 1 DEGR -0.1435 + 15 C15 -9.9814 -2.0971 17.0147 C.3 1 DEGR 0.7382 + 16 C16 -5.8376 -7.0227 17.1305 C.3 1 DEGR 0.1435 + 17 C17 -11.6576 -3.2664 10.9063 C.3 1 DEGR 0.1435 + 18 N1 -8.7016 -2.1166 16.3161 N.3 1 DEGR -0.8382 + 19 N2 -10.7987 -3.2239 16.5807 N.3 1 DEGR -0.8382 + 20 H1 -8.5219 -6.6173 17.3332 H 1 DEGR 0.1500 + 21 H3 -4.8368 -4.5751 16.4426 H 1 DEGR 0.1500 + 22 H4 -6.0781 -2.4754 16.1129 H 1 DEGR 0.1500 + 23 H61 -9.0607 -0.7626 14.7625 H 1 DEGR 0.0000 + 24 H62 -8.0001 -2.0909 14.2981 H 1 DEGR 0.0000 + 25 H8 -9.6286 -2.0652 12.2667 H 1 DEGR 0.1500 + 26 H10 -13.1800 -4.4282 12.8552 H 1 DEGR 0.1500 + 27 H11 -12.8013 -4.3953 15.2869 H 1 DEGR 0.1500 + 28 H131 -10.4232 -4.6105 18.1015 H 1 DEGR 0.0000 + 29 H132 -10.6530 -5.3547 16.5210 H 1 DEGR 0.0000 + 30 H151 -10.5062 -1.1488 16.8309 H 1 DEGR 0.0000 + 31 H152 -9.8253 -2.1309 18.1024 H 1 DEGR 0.0000 + 32 H161 -4.9325 -7.0594 16.5151 H 1 DEGR 0.0000 + 33 H162 -6.4450 -7.8946 16.8659 H 1 DEGR 0.0000 + 34 H163 -5.5521 -7.0965 18.1844 H 1 DEGR 0.0000 + 35 H171 -11.2785 -2.3547 10.4326 H 1 DEGR 0.0000 + 36 H172 -12.7241 -3.3363 10.6678 H 1 DEGR 0.0000 + 37 H173 -11.1415 -4.1301 10.4760 H 1 DEGR 0.0000 +@BOND + 1 1 2 2 + 2 1 14 1 + 3 1 20 1 + 4 2 3 1 + 5 2 16 1 + 6 3 4 2 + 7 3 21 1 + 8 4 5 1 + 9 4 22 1 + 10 5 14 2 + 11 5 18 1 + 12 6 7 1 + 13 6 18 1 + 14 6 23 1 + 15 6 24 1 + 16 7 8 2 + 17 7 12 1 + 18 8 9 1 + 19 8 25 1 + 20 9 10 2 + 21 9 17 1 + 22 10 11 1 + 23 10 26 1 + 24 11 12 2 + 25 11 27 1 + 26 12 19 1 + 27 13 14 1 + 28 13 19 1 + 29 13 28 1 + 30 13 29 1 + 31 15 18 1 + 32 15 19 1 + 33 15 30 1 + 34 15 31 1 + 35 16 32 1 + 36 16 33 1 + 37 16 34 1 + 38 17 35 1 + 39 17 36 1 + 40 17 37 1 +@SUBSTRUCTURE + 1 DEGR 1 +@COMMENT +COMMENT DIOXANE 1,5,13-TRIMETHYL-1-AZONIA-9-AZATETRACYCLO(7.7.1.0-2 +@MOLECULE +DEKRUG + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.8865 -4.6665 14.3584 N.3 1 CHGB -0.6602 + 2 C1 -8.0729 -5.6408 13.3123 C.3 1 CHGB 0.3001 + 3 C2 -6.6569 -4.1885 14.7514 C.2 1 CHGB 0.6900 + 4 O2 -5.5627 -4.6332 14.4383 O.2 1 CHGB -0.5700 + 5 N3 -6.8386 -3.1297 15.5768 N.3 1 CHGB -0.4900 + 6 C4 -8.1605 -2.8053 15.6746 C.2 1 CHGB 0.5690 + 7 O4 -8.5763 -1.8994 16.3863 O.2 1 CHGB -0.5700 + 8 C5 -8.9540 -3.7643 14.7652 C.3 1 CHGB 0.7021 + 9 C6 -9.6253 -3.0593 13.6166 C.2 1 CHGB 0.2890 + 10 O6 -9.0375 -2.3973 12.7662 O.2 1 CHGB -0.5700 + 11 N7 -10.9235 -3.3216 13.6742 N.3 1 CHGB -0.5600 + 12 C8 -11.1332 -4.1376 14.7033 C.2 1 CHGB 0.5000 + 13 O8 -12.2132 -4.5926 15.0578 O.2 1 CHGB -0.5700 + 14 O9 -9.9888 -4.4773 15.3670 O.3 1 CHGB -0.4300 + 15 H11 -7.1997 -6.2969 13.2543 H 1 CHGB 0.0000 + 16 H12 -8.9619 -6.2404 13.5231 H 1 CHGB 0.0000 + 17 H13 -8.1838 -5.1276 12.3532 H 1 CHGB 0.0000 + 18 H3 -6.0961 -2.6200 16.0165 H 1 CHGB 0.3700 +@BOND + 1 1 8 1 + 2 1 3 am + 3 1 2 1 + 4 2 17 1 + 5 2 16 1 + 6 2 15 1 + 7 3 5 am + 8 3 4 2 + 9 5 18 1 + 10 5 6 am + 11 6 8 1 + 12 6 7 2 + 13 8 14 1 + 14 8 9 1 + 15 9 11 am + 16 9 10 2 + 17 11 12 am + 18 12 14 1 + 19 12 13 2 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT METHYLAMMONIUM 1-METHYLCAFFOLIDE +@MOLECULE +DEMBIG + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.7445 -3.7916 15.2852 N.2 1 UNCH -0.1260 + 2 N2 -7.1959 -4.2918 14.2766 N.2 1 UNCH -0.0620 + 3 N3 -7.8642 -5.2231 13.5143 N.3 1 UNCH -0.2981 + 4 C4 -9.1503 -5.6685 13.7609 C.2 1 UNCH 0.6390 + 5 N5 -9.6756 -5.0676 14.8855 N.3 1 UNCH 0.2942 + 6 C6 -10.9052 -5.2472 15.4531 C.2 1 UNCH 0.0365 + 7 N7 -11.0541 -4.5019 16.5242 N.2 1 UNCH -0.5653 + 8 C8 -9.8639 -3.7970 16.6614 C.2 1 UNCH 0.1412 + 9 C810 -8.9977 -4.1502 15.6372 C.2 1 UNCH -0.0256 + 10 C31 -7.1463 -5.7308 12.3511 C.3 1 UNCH 0.3001 + 11 C32 -7.6457 -5.1542 11.0278 C.3 1 UNCH 0.2900 + 12 CL1 -7.3227 -3.4060 10.9092 CL 1 UNCH -0.2900 + 13 O4 -9.8096 -6.4774 13.1245 O.2 1 UNCH -0.5700 + 14 C81 -9.6301 -2.8432 17.7476 C.2 1 UNCH 0.7160 + 15 N82 -8.4226 -2.1978 17.7455 N.3 1 UNCH -0.8000 + 16 O82 -10.4437 -2.5999 18.6336 O.2 1 UNCH -0.5700 + 17 H1 -7.2815 -6.8190 12.3301 H 1 UNCH 0.0000 + 18 H2 -6.0737 -5.5413 12.4793 H 1 UNCH 0.0000 + 19 H3 -7.1324 -5.6357 10.1904 H 1 UNCH 0.0000 + 20 H4 -8.7223 -5.2986 10.9008 H 1 UNCH 0.0000 + 21 H5 -11.6409 -5.9287 15.0441 H 1 UNCH 0.1500 + 22 H6 -8.2619 -1.5163 18.4738 H 1 UNCH 0.3700 + 23 H7 -7.7280 -2.3242 17.0231 H 1 UNCH 0.3700 +@BOND + 1 1 2 2 + 2 1 9 1 + 3 2 3 1 + 4 3 4 am + 5 3 10 1 + 6 4 5 am + 7 4 13 2 + 8 5 6 am + 9 5 9 1 + 10 6 7 2 + 11 6 21 1 + 12 7 8 1 + 13 8 9 2 + 14 8 14 1 + 15 10 11 1 + 16 10 17 1 + 17 10 18 1 + 18 11 12 1 + 19 11 19 1 + 20 11 20 1 + 21 14 15 am + 22 14 16 2 + 23 15 22 1 + 24 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 8-CARBAMOYL-3-(2-CHLOROETHYL)-IMIDAZO(5,1-D)-1,2,3,5-TETRAZ +@MOLECULE +DEPKEO + 19 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S10 -7.7634 -5.3978 15.5857 S.3 1 UNCH -0.2030 + 2 C101 -7.5524 -3.6856 15.2249 C.2 1 UNCH 0.4115 + 3 N1 -6.4222 -3.1211 15.7338 N.2 1 UNCH -0.6200 + 4 C2 -6.2365 -1.8095 15.4717 C.2 1 UNCH 0.1600 + 5 C3 -7.1379 -1.0738 14.7293 C.2 1 UNCH 0.1600 + 6 N4 -8.2627 -1.6186 14.2179 N.2 1 UNCH -0.6200 + 7 C41 -8.4605 -2.9398 14.4756 C.2 1 UNCH 0.3925 + 8 O5 -9.6194 -3.4158 13.9246 O.3 1 UNCH -0.1650 + 9 C51 -9.9885 -4.7232 14.0769 C.2 1 UNCH 0.0825 + 10 C6 -11.1942 -5.0715 13.4619 C.2 1 UNCH -0.1500 + 11 C7 -11.6684 -6.3752 13.5510 C.2 1 UNCH -0.1500 + 12 C8 -10.9136 -7.2912 14.2578 C.2 1 UNCH 0.1600 + 13 N9 -9.7459 -6.9869 14.8628 N.2 1 UNCH -0.6200 + 14 C91 -9.2956 -5.7092 14.7669 C.2 1 UNCH 0.4115 + 15 H2 -5.3355 -1.3647 15.8789 H 1 UNCH 0.1500 + 16 H3 -6.9810 -0.0210 14.5235 H 1 UNCH 0.1500 + 17 H6 -11.7621 -4.3238 12.9135 H 1 UNCH 0.1500 + 18 H7 -12.6013 -6.6670 13.0815 H 1 UNCH 0.1500 + 19 H8 -11.2338 -8.3244 14.3613 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 2 3 2 + 4 2 7 1 + 5 3 4 1 + 6 4 5 2 + 7 4 15 1 + 8 5 6 1 + 9 5 16 1 + 10 6 7 2 + 11 7 8 1 + 12 8 9 1 + 13 9 10 2 + 14 9 14 1 + 15 10 11 1 + 16 10 17 1 + 17 11 12 2 + 18 11 18 1 + 19 12 13 1 + 20 12 19 1 + 21 13 14 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,4,9-TRIAZAPHENOXATHIIN (AT 163 DEG.K) +@MOLECULE +DERZUV + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.1769 -4.8550 15.2337 N.2 1 DERZ -0.4054 + 2 C2 -7.2739 -4.1977 16.1202 C.2 1 DERZ 1.0110 + 3 O2 -7.1854 -4.3829 17.3173 O.2 1 DERZ -0.5700 + 4 N3 -6.5151 -3.3895 15.3349 N.3 1 DERZ -0.7301 + 5 C4 -7.0502 -3.2524 13.9910 C.3 1 DERZ 0.4051 + 6 C5 -8.0336 -4.4238 13.9687 C.2 1 DERZ 0.6038 + 7 N6 -9.1687 -5.7276 15.7632 N.2 1 DERZ -0.2800 + 8 C7 -10.3170 -5.0990 15.9082 C.2 1 DERZ 0.2500 + 9 O7 -10.5943 -3.9086 15.5994 O.3 1 DERZ -0.8610 + 10 C8 -11.4389 -6.0393 16.4914 C.3 1 DERZ 1.0810 + 11 F81 -10.9924 -6.7913 17.5401 F 1 DERZ -0.3400 + 12 F82 -11.8557 -6.9368 15.5444 F 1 DERZ -0.3400 + 13 F83 -12.5599 -5.3994 16.9285 F 1 DERZ -0.3400 + 14 C9 -7.7587 -1.9000 13.8887 C.3 1 DERZ 0.0000 + 15 C10 -5.8936 -3.3856 13.0062 C.3 1 DERZ 0.0000 + 16 N11 -8.6179 -4.9127 12.8496 N.3 1 DERZ -0.8334 + 17 C12 -8.5077 -4.3355 11.5054 C.3 1 DERZ 0.4895 + 18 C13 -9.4712 -6.1172 12.9432 C.3 1 DERZ 0.4895 + 19 H3 -5.9521 -2.6942 15.8044 H 1 DERZ 0.3700 + 20 H91 -7.0585 -1.0793 14.0843 H 1 DERZ 0.0000 + 21 H92 -8.5672 -1.8152 14.6232 H 1 DERZ 0.0000 + 22 H93 -8.1967 -1.7264 12.9041 H 1 DERZ 0.0000 + 23 H101 -6.1908 -3.1614 11.9792 H 1 DERZ 0.0000 + 24 H102 -5.0819 -2.6931 13.2597 H 1 DERZ 0.0000 + 25 H103 -5.4763 -4.3990 13.0214 H 1 DERZ 0.0000 + 26 H121 -8.4550 -3.2495 11.5397 H 1 DERZ 0.0000 + 27 H122 -7.6248 -4.7466 11.0090 H 1 DERZ 0.0000 + 28 H123 -9.3932 -4.5900 10.9134 H 1 DERZ 0.0000 + 29 H131 -9.5625 -6.5822 11.9553 H 1 DERZ 0.0000 + 30 H132 -10.4714 -5.8390 13.2801 H 1 DERZ 0.0000 + 31 H133 -9.0106 -6.8650 13.5932 H 1 DERZ 0.0000 +@BOND + 1 1 2 am + 2 1 6 2 + 3 1 7 1 + 4 2 3 2 + 5 2 4 am + 6 4 5 1 + 7 4 19 1 + 8 5 6 1 + 9 5 14 1 + 10 5 15 1 + 11 6 16 am + 12 7 8 2 + 13 8 9 1 + 14 8 10 1 + 15 10 11 1 + 16 10 12 1 + 17 10 13 1 + 18 14 20 1 + 19 14 21 1 + 20 14 22 1 + 21 15 23 1 + 22 15 24 1 + 23 15 25 1 + 24 16 17 1 + 25 16 18 1 + 26 17 26 1 + 27 17 27 1 + 28 17 28 1 + 29 18 29 1 + 30 18 30 1 + 31 18 31 1 +@SUBSTRUCTURE + 1 DERZ 1 +@COMMENT +COMMENT 5-DIMETHYLAMINO-4,4-DIMETHYL-2-OXO-4H-IMIDAZOLIUM-1-TRIFLUO +@MOLECULE +DESWUT + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.1152 -6.2943 17.3051 S.3 1 UNCH -0.0800 + 2 C2 -7.9291 -6.6736 16.1353 C.2 1 UNCH 0.2281 + 3 N3 -7.8764 -5.8877 15.0859 N.2 1 UNCH -0.5653 + 4 C4 -8.8488 -4.8838 15.1976 C.2 1 UNCH 0.1412 + 5 C5 -9.6135 -4.9506 16.3592 C.2 1 UNCH 0.1240 + 6 N6 -10.6115 -4.1403 16.7818 N.3 1 UNCH -0.8840 + 7 C7 -9.0289 -3.8675 14.1554 C.2 1 UNCH 0.8060 + 8 O8 -9.9225 -3.0242 14.1735 O.2 1 UNCH -0.5700 + 9 O9 -8.0965 -3.9698 13.1607 O.3 1 UNCH -0.4300 + 10 C10 -8.2024 -3.0185 12.0944 C.3 1 UNCH 0.2800 + 11 C11 -7.4611 -1.7442 12.4528 C.3 1 UNCH 0.0000 + 12 H61 -11.0253 -3.4748 16.1263 H 1 UNCH 0.4000 + 13 H62 -11.2451 -4.4569 17.5093 H 1 UNCH 0.4000 + 14 H101 -7.7424 -3.4747 11.2117 H 1 UNCH 0.0000 + 15 H102 -9.2495 -2.8165 11.8416 H 1 UNCH 0.0000 + 16 H111 -6.4170 -1.9634 12.6993 H 1 UNCH 0.0000 + 17 H112 -7.9025 -1.2667 13.3333 H 1 UNCH 0.0000 + 18 H113 -7.4860 -1.0342 11.6214 H 1 UNCH 0.0000 + 19 H2 -7.2632 -7.5178 16.2574 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 19 1 + 5 3 4 1 + 6 4 5 2 + 7 4 7 1 + 8 5 6 1 + 9 6 12 1 + 10 6 13 1 + 11 7 8 2 + 12 7 9 1 + 13 9 10 1 + 14 10 11 1 + 15 10 14 1 + 16 10 15 1 + 17 11 16 1 + 18 11 17 1 + 19 11 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-AMINOTHIAZOLE-4-CARBOXYLIC ACID ETHYL ESTER +@MOLECULE +DESYOP + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N11 -7.1934 -3.8409 12.5785 N.1 1 UNCH -0.5571 + 2 N21 -8.4774 -5.1940 15.4500 N.3 1 UNCH -0.9000 + 3 C11 -7.8997 -3.9600 13.4921 C.1 1 UNCH 0.4921 + 4 C21 -8.7804 -4.1387 14.6140 C.2 1 UNCH 0.1650 + 5 C31 -9.8226 -3.3189 14.7969 C.2 1 UNCH -0.3000 + 6 H211 -7.9771 -5.9525 14.9883 H 1 UNCH 0.4000 + 7 H221 -9.2677 -5.5241 15.9970 H 1 UNCH 0.4000 + 8 H311 -10.4925 -3.4350 15.6417 H 1 UNCH 0.1500 + 9 H321 -10.0267 -2.4988 14.1139 H 1 UNCH 0.1500 +@BOND + 1 1 3 3 + 2 2 4 1 + 3 2 6 1 + 4 2 7 1 + 5 3 4 1 + 6 4 5 2 + 7 5 8 1 + 8 5 9 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-AMINOPROPENENITRILE (AT 97DEG.K) +@MOLECULE +DEWHOC + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.3676 -5.5806 14.0718 N.3 1 DEWH -0.4271 + 2 N2 -8.5698 -6.0240 15.3507 N.2 1 DEWH -0.4920 + 3 O1 -9.8035 -4.9686 18.5609 O.3 1 DEWH -0.6500 + 4 O2 -9.0403 -6.9904 17.9272 O.2 1 DEWH -0.5700 + 5 O3 -10.0331 -3.1710 16.7850 O.2 1 DEWH -0.5700 + 6 O4 -10.2037 -0.6724 12.2356 O.3 1 DEWH -0.3625 + 7 O5 -9.1683 -2.1606 10.6474 O.3 1 DEWH -0.3625 + 8 C1 -9.3167 -5.8352 17.6563 C.2 1 DEWH 0.7200 + 9 C2 -9.1309 -5.2607 16.2432 C.2 1 DEWH 0.4500 + 10 C3 -9.5781 -3.8784 15.8931 C.2 1 DEWH 0.4838 + 11 C4 -9.4570 -3.4459 14.5039 C.2 1 DEWH 0.0862 + 12 C5 -9.9419 -2.1856 14.1234 C.2 1 DEWH -0.1500 + 13 C6 -9.8013 -1.8386 12.8032 C.2 1 DEWH 0.0825 + 14 C7 -9.7993 -0.8806 10.8658 C.3 1 DEWH 0.5600 + 15 C8 -9.2115 -2.6873 11.9008 C.2 1 DEWH 0.0825 + 16 C9 -8.7274 -3.9306 12.2675 C.2 1 DEWH -0.1500 + 17 C10 -8.8426 -4.3457 13.6061 C.2 1 DEWH 0.1000 + 18 C11 -7.7655 -6.5799 13.1758 C.3 1 DEWH 0.3691 + 19 C12 -8.8366 -7.4193 12.4958 C.3 1 DEWH 0.0000 + 20 H1 -10.0069 -4.0709 18.2009 H 1 DEWH 0.5000 + 21 H5 -10.4088 -1.5108 14.8327 H 1 DEWH 0.1500 + 22 H71 -10.6849 -0.8117 10.2237 H 1 DEWH 0.0000 + 23 H72 -9.0955 -0.0894 10.5831 H 1 DEWH 0.0000 + 24 H9 -8.2738 -4.5488 11.5020 H 1 DEWH 0.1500 + 25 H111 -7.1040 -6.1142 12.4373 H 1 DEWH 0.0000 + 26 H112 -7.1188 -7.2462 13.7617 H 1 DEWH 0.0000 + 27 H121 -8.3737 -8.1793 11.8587 H 1 DEWH 0.0000 + 28 H122 -9.4931 -6.8067 11.8703 H 1 DEWH 0.0000 + 29 H123 -9.4627 -7.9303 13.2348 H 1 DEWH 0.0000 +@BOND + 1 1 18 1 + 2 1 17 1 + 3 1 2 1 + 4 2 9 2 + 5 3 20 1 + 6 3 8 1 + 7 4 8 2 + 8 5 10 2 + 9 6 14 1 + 10 6 13 1 + 11 7 15 1 + 12 7 14 1 + 13 8 9 1 + 14 9 10 1 + 15 10 11 1 + 16 11 17 2 + 17 11 12 1 + 18 12 21 1 + 19 12 13 2 + 20 13 15 1 + 21 14 23 1 + 22 14 22 1 + 23 15 16 2 + 24 16 24 1 + 25 16 17 1 + 26 18 26 1 + 27 18 25 1 + 28 18 19 1 + 29 19 29 1 + 30 19 28 1 + 31 19 27 1 +@SUBSTRUCTURE + 1 DEWH 1 +@COMMENT +COMMENT 1-ETHYL-1,4-DIHYDRO-4-OXO(1,3)DIOXOLO(4,5G)CINNOLINE-3-CARB +@MOLECULE +DEWJEU + 36 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.0972 -2.0262 16.5258 SI 1 UNCH 0.5995 + 2 N1 -8.5132 -3.2349 15.3353 N.3 1 UNCH -0.5580 + 3 C1 -7.5744 -3.9060 14.5245 C.2 1 UNCH -0.0500 + 4 C2 -9.8488 -3.6315 15.0982 C.2 1 UNCH -0.0500 + 5 C3 -6.2557 -1.7532 16.5708 C.3 1 UNCH -0.0805 + 6 C4 -8.6973 -2.6455 18.1795 C.3 1 UNCH -0.0805 + 7 C5 -8.9706 -0.4497 16.0458 C.3 1 UNCH -0.0805 + 8 H1 -6.5323 -3.6400 14.6647 H 1 UNCH 0.1500 + 9 H2 -10.6078 -3.1409 15.7003 H 1 UNCH 0.1500 + 10 H31 -5.7234 -2.6722 16.8345 H 1 UNCH 0.0000 + 11 H32 -5.8811 -1.4053 15.6033 H 1 UNCH 0.0000 + 12 H33 -5.9985 -0.9955 17.3176 H 1 UNCH 0.0000 + 13 H41 -9.7831 -2.7801 18.1836 H 1 UNCH 0.0000 + 14 H42 -8.2355 -3.6059 18.4281 H 1 UNCH 0.0000 + 15 H43 -8.4450 -1.9351 18.9727 H 1 UNCH 0.0000 + 16 H51 -8.6688 -0.1249 15.0453 H 1 UNCH 0.0000 + 17 H52 -10.0568 -0.5808 16.0464 H 1 UNCH 0.0000 + 18 H53 -8.7299 0.3544 16.7479 H 1 UNCH 0.0000 + 19 C2B -7.9193 -4.8359 13.6118 C.2 1 UNCH -0.0500 + 20 C1B -10.1936 -4.5614 14.1855 C.2 1 UNCH -0.0500 + 21 N1B -9.2548 -5.2325 13.3747 N.3 1 UNCH -0.5580 + 22 H2B -7.1602 -5.3265 13.0097 H 1 UNCH 0.1500 + 23 H1B -11.2357 -4.8274 14.0453 H 1 UNCH 0.1500 + 24 SI1B -9.6708 -6.4412 12.1842 SI 1 UNCH 0.5995 + 25 C3B -11.5123 -6.7142 12.1392 C.3 1 UNCH -0.0805 + 26 C4B -9.0707 -5.8219 10.5305 C.3 1 UNCH -0.0805 + 27 C5B -8.7974 -8.0177 12.6642 C.3 1 UNCH -0.0805 + 28 H31B -12.0446 -5.7952 11.8755 H 1 UNCH 0.0000 + 29 H32B -11.8869 -7.0621 13.1067 H 1 UNCH 0.0000 + 30 H33B -11.7695 -7.4719 11.3924 H 1 UNCH 0.0000 + 31 H41B -7.9849 -5.6873 10.5264 H 1 UNCH 0.0000 + 32 H42B -9.5325 -4.8615 10.2819 H 1 UNCH 0.0000 + 33 H43B -9.3230 -6.5323 9.7373 H 1 UNCH 0.0000 + 34 H51B -9.0992 -8.3425 13.6647 H 1 UNCH 0.0000 + 35 H52B -7.7112 -7.8866 12.6636 H 1 UNCH 0.0000 + 36 H53B -9.0381 -8.8218 11.9621 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 3 1 + 6 2 4 1 + 7 3 8 1 + 8 3 19 2 + 9 4 9 1 + 10 4 20 2 + 11 5 10 1 + 12 5 11 1 + 13 5 12 1 + 14 6 13 1 + 15 6 14 1 + 16 6 15 1 + 17 7 16 1 + 18 7 17 1 + 19 7 18 1 + 20 19 21 1 + 21 19 22 1 + 22 20 21 1 + 23 20 23 1 + 24 21 24 1 + 25 24 25 1 + 26 24 26 1 + 27 24 27 1 + 28 25 28 1 + 29 25 29 1 + 30 25 30 1 + 31 26 31 1 + 32 26 32 1 + 33 26 33 1 + 34 27 34 1 + 35 27 35 1 + 36 27 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,4-BIS(TRIMETHYLSILYL)-1,4-DIHYDROPYRAZINE (AT -110DEG.C) +@MOLECULE +DEXCIS + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -7.8012 -7.5904 15.3143 O.2 1 UNCH -0.5700 + 2 C1 -8.2668 -6.9256 14.4220 C.2 1 UNCH 0.5770 + 3 C2 -9.5295 -6.0902 14.1183 C.3 1 UNCH 0.0530 + 4 C3 -8.6112 -5.4240 13.0420 C.3 1 UNCH 0.3330 + 5 N1 -7.6995 -6.5714 13.2338 N.3 1 UNCH -0.6550 + 6 C4 -10.0809 -5.2714 15.2727 C.3 1 UNCH 0.2800 + 7 C5 -11.1254 -4.2773 14.7838 C.3 1 UNCH 0.0000 + 8 O2 -10.7327 -6.1587 16.1822 O.3 1 UNCH -0.6800 + 9 C6 -7.9553 -3.9911 13.2686 C.2 1 UNCH -0.1080 + 10 C7 -8.2824 -2.9044 12.4304 C.2 1 UNCH -0.1500 + 11 C8 -7.7267 -1.6333 12.6045 C.2 1 UNCH -0.1500 + 12 C9 -6.8156 -1.4081 13.6293 C.2 1 UNCH -0.1500 + 13 C10 -6.4615 -2.4529 14.4745 C.2 1 UNCH -0.1500 + 14 C11 -7.0220 -3.7211 14.2929 C.2 1 UNCH -0.1500 + 15 H2 -10.3161 -6.7129 13.6653 H 1 UNCH 0.0000 + 16 H3 -9.0665 -5.4911 12.0430 H 1 UNCH 0.0000 + 17 H1 -6.6884 -6.5562 13.2136 H 1 UNCH 0.3700 + 18 H4 -9.2861 -4.7540 15.8190 H 1 UNCH 0.0000 + 19 H15 -10.7067 -3.5487 14.0859 H 1 UNCH 0.0000 + 20 H25 -11.9513 -4.7935 14.2812 H 1 UNCH 0.0000 + 21 H35 -11.5618 -3.7342 15.6291 H 1 UNCH 0.0000 + 22 H7 -8.9921 -3.0533 11.6174 H 1 UNCH 0.1500 + 23 H8 -8.0059 -0.8222 11.9367 H 1 UNCH 0.1500 + 24 H9 -6.3802 -0.4220 13.7672 H 1 UNCH 0.1500 + 25 H10 -5.7468 -2.2857 15.2767 H 1 UNCH 0.1500 + 26 H11 -6.7207 -4.5162 14.9742 H 1 UNCH 0.1500 + 27 H5 -10.9177 -5.6630 16.9988 H 1 UNCH 0.4000 +@BOND + 1 1 2 2 + 2 2 5 am + 3 2 3 1 + 4 3 15 1 + 5 3 6 1 + 6 3 4 1 + 7 4 16 1 + 8 4 9 1 + 9 4 5 1 + 10 5 17 1 + 11 6 18 1 + 12 6 8 1 + 13 6 7 1 + 14 7 21 1 + 15 7 20 1 + 16 7 19 1 + 17 8 27 1 + 18 9 14 1 + 19 9 10 2 + 20 10 22 1 + 21 10 11 1 + 22 11 23 1 + 23 11 12 2 + 24 12 24 1 + 25 12 13 1 + 26 13 25 1 + 27 13 14 2 + 28 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT REL-(1'R,3S,4S)-3-(1'-HYDROXYETHYL)-4-PHENYL-2-AZETIDINONE +@MOLECULE +DEXGIW + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.2196 -6.1743 15.7916 N.3 1 DEXC -0.4940 + 2 C2 -8.6049 -7.4917 15.7751 C.2 1 DEXC 0.5690 + 3 O2 -8.4520 -8.2164 16.7561 O.2 1 DEXC -0.5700 + 4 C3 -9.3290 -7.9782 14.5342 C.3 1 DEXC 0.0610 + 5 C4 -8.7936 -7.3297 13.2722 C.3 1 DEXC 0.2556 + 6 N5 -8.6298 -5.9034 13.4621 N.3 1 DEXC 0.0476 + 7 C6 -8.6649 -4.9279 12.5135 C.2 1 DEXC -0.3016 + 8 C7 -8.3327 -3.7411 13.1363 C.2 1 DEXC -0.1500 + 9 C8 -8.0849 -4.0119 14.5233 C.2 1 DEXC -0.0860 + 10 C9 -8.3083 -5.3707 14.6781 C.2 1 DEXC -0.0876 + 11 C10 -7.6873 -3.1130 15.6074 C.2 1 DEXC 0.7160 + 12 O10 -7.4684 -3.5232 16.7448 O.2 1 DEXC -0.5700 + 13 N11 -7.5729 -1.7910 15.2519 N.3 1 DEXC -0.4900 + 14 C12 -7.2662 -0.7977 16.1345 C.2 1 DEXC 0.5700 + 15 O13 -7.2405 0.3831 15.8092 O.2 1 DEXC -0.5700 + 16 H1 -7.8574 -5.7883 16.6615 H 1 DEXC 0.3700 + 17 H31 -9.2272 -9.0661 14.4627 H 1 DEXC 0.0000 + 18 H32 -10.3922 -7.7435 14.6655 H 1 DEXC 0.0000 + 19 H41 -9.4717 -7.4935 12.4287 H 1 DEXC 0.0000 + 20 H42 -7.8039 -7.7245 13.0154 H 1 DEXC 0.0000 + 21 H6 -8.9016 -5.1461 11.4796 H 1 DEXC 0.1500 + 22 H7 -8.2657 -2.7897 12.6247 H 1 DEXC 0.1500 + 23 H11 -7.7865 -1.4836 14.3180 H 1 DEXC 0.3700 + 24 H12 -7.0506 -1.1406 17.1597 H 1 DEXC 0.0600 +@BOND + 1 1 2 am + 2 1 10 1 + 3 1 16 1 + 4 2 3 2 + 5 2 4 1 + 6 4 5 1 + 7 4 17 1 + 8 4 18 1 + 9 5 6 1 + 10 5 19 1 + 11 5 20 1 + 12 6 7 1 + 13 6 10 1 + 14 7 8 2 + 15 7 21 1 + 16 8 9 1 + 17 8 22 1 + 18 9 10 2 + 19 9 11 1 + 20 11 12 2 + 21 11 13 am + 22 13 14 am + 23 13 23 1 + 24 14 15 2 + 25 14 24 1 +@SUBSTRUCTURE + 1 DEXC 1 +@COMMENT +COMMENT N-FORMYL-1,2,3,4-TETRAHYDRO-2-OXOPYRROLO(1,2-A)PYRIMIDINE-8 +@MOLECULE +DEZDUH + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 -8.7944 -2.3940 15.6023 F 1 DEXG -0.2980 + 2 F2 -8.8106 -3.3839 12.4846 F 1 DEXG -0.2980 + 3 F3 -6.4602 -4.9500 13.0359 F 1 DEXG -0.3400 + 4 F4 -6.3886 -2.9849 14.0119 F 1 DEXG -0.3400 + 5 F5 -11.2079 -2.6630 14.0337 F 1 DEXG -0.3400 + 6 F6 -11.3325 -3.7008 15.9641 F 1 DEXG -0.3400 + 7 C1 -9.1989 -3.5088 14.9700 C.3 1 DEXG 0.2980 + 8 C2 -8.5172 -3.9704 13.6576 C.3 1 DEXG 0.2980 + 9 C3 -7.0468 -4.1570 13.9562 C.3 1 DEXG 0.6800 + 10 C4 -7.1267 -4.8387 15.3072 C.3 1 DEXG 0.0000 + 11 C5 -8.6430 -4.8951 15.4438 C.3 1 DEXG 0.0000 + 12 C6 -9.2506 -5.2994 14.0469 C.3 1 DEXG 0.0000 + 13 C7 -10.7433 -4.9959 14.0691 C.3 1 DEXG 0.0000 + 14 C8 -10.6913 -3.6576 14.7780 C.3 1 DEXG 0.6800 + 15 H4 -6.6873 -5.8401 15.2960 H 1 DEXG 0.0000 + 16 H4_ -6.6738 -4.2414 16.1036 H 1 DEXG 0.0000 + 17 H5 -9.0688 -5.3469 16.3408 H 1 DEXG 0.0000 + 18 H6 -8.9152 -6.2314 13.5898 H 1 DEXG 0.0000 + 19 H7 -11.2974 -5.7481 14.6377 H 1 DEXG 0.0000 + 20 H7_ -11.1521 -4.9168 13.0577 H 1 DEXG 0.0000 +@BOND + 1 1 7 1 + 2 2 8 1 + 3 3 9 1 + 4 4 9 1 + 5 5 14 1 + 6 6 14 1 + 7 7 8 1 + 8 7 11 1 + 9 7 14 1 + 10 8 9 1 + 11 8 12 1 + 12 9 10 1 + 13 10 11 1 + 14 10 15 1 + 15 10 16 1 + 16 11 12 1 + 17 11 17 1 + 18 12 13 1 + 19 12 18 1 + 20 13 14 1 + 21 13 19 1 + 22 13 20 1 +@SUBSTRUCTURE + 1 DEXG 1 +@COMMENT +COMMENT 1,2,2,5,6,6-HEXAFLUORO-TRICYCLO(3.3.0.0-6,8-)OCTANE (AT -10 +@MOLECULE +DEZNIF + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.0618 -6.0341 11.9445 S.1 1 DEZN 1.1718 + 2 O1 -7.8049 -5.6551 11.3259 O.2 1 DEZN -0.6500 + 3 O2 -10.3368 -5.6294 11.3813 O.2 1 DEZN -0.6500 + 4 N1 -8.9708 -6.1877 14.5684 N.2 1 DEZN -0.6210 + 5 C2 -9.0163 -5.2868 13.6241 C.2 1 DEZN 0.4120 + 6 C3 -9.0202 -3.7671 13.8321 C.3 1 DEZN 0.1992 + 7 C4 -10.3908 -3.2994 14.2483 C.2 1 DEZN -0.2882 + 8 C5 -10.7620 -2.5498 15.2961 C.2 1 DEZN -0.1500 + 9 C6 -9.9340 -1.9702 16.3234 C.2 1 DEZN -0.1500 + 10 C7 -8.7355 -2.4097 16.7332 C.2 1 DEZN -0.2882 + 11 C8 -7.9460 -3.5526 16.1444 C.3 1 DEZN 0.2764 + 12 C9 -8.5088 -4.8668 16.6008 C.2 1 DEZN -0.2882 + 13 C10 -8.9447 -5.9215 15.9031 C.2 1 DEZN 0.0210 + 14 C11 -7.7879 -3.3726 14.6377 C.3 1 DEZN 0.0000 + 15 C12 -9.0747 -7.7870 12.2052 C.3 1 DEZN 0.1052 + 16 H4 -11.1923 -3.6159 13.5772 H 1 DEZN 0.1500 + 17 H5 -11.8222 -2.3136 15.3962 H 1 DEZN 0.1500 + 18 H6 -10.3788 -1.1244 16.8469 H 1 DEZN 0.1500 + 19 H7 -8.2583 -1.8857 17.5598 H 1 DEZN 0.1500 + 20 H9 -8.5788 -4.9575 17.6858 H 1 DEZN 0.1500 + 21 H10 -9.3089 -6.7625 16.4969 H 1 DEZN 0.1500 + 22 H111 -6.9267 -3.9662 14.2991 H 1 DEZN 0.0000 + 23 H112 -7.5288 -2.3281 14.4143 H 1 DEZN 0.0000 + 24 H121 -9.9639 -8.0582 12.7769 H 1 DEZN 0.0000 + 25 H122 -9.1062 -8.2707 11.2263 H 1 DEZN 0.0000 + 26 H123 -8.1628 -8.0792 12.7289 H 1 DEZN 0.0000 + 27 H1 -8.8657 -3.3485 12.8271 H 1 DEZN 0.0000 + 28 H2 -6.9359 -3.4776 16.5714 H 1 DEZN 0.0000 +@BOND + 1 1 15 1 + 2 1 5 1 + 3 1 3 2 + 4 1 2 2 + 5 4 13 1 + 6 4 5 2 + 7 5 6 1 + 8 6 27 1 + 9 6 14 1 + 10 6 7 1 + 11 7 16 1 + 12 7 8 2 + 13 8 17 1 + 14 8 9 1 + 15 9 18 1 + 16 9 10 2 + 17 10 19 1 + 18 10 11 1 + 19 11 28 1 + 20 11 14 1 + 21 11 12 1 + 22 12 20 1 + 23 12 13 2 + 24 13 21 1 + 25 14 23 1 + 26 14 22 1 + 27 15 26 1 + 28 15 25 1 + 29 15 24 1 +@SUBSTRUCTURE + 1 DEZN 1 +@COMMENT +COMMENT 2-METHANESULFONYL-3,8-METHANOAZA(10)ANNULENE 2-METHANESULFO +@MOLECULE +DEZXEL + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.7888 -3.5650 14.1345 N.3 1 DEZW -0.2780 + 2 C2 -7.2122 -4.7534 14.5565 C.2 1 DEZW 0.2490 + 3 C3 -7.7946 -5.8885 14.9750 C.2 1 DEZW -0.1500 + 4 C4 -9.1781 -6.2335 15.1185 C.2 1 DEZW -0.1500 + 5 C5 -10.2303 -5.4601 14.8530 C.2 1 DEZW -0.1500 + 6 C6 -10.2157 -4.1069 14.3634 C.2 1 DEZW 0.1400 + 7 C7 -9.1535 -3.3344 14.0696 C.2 1 DEZW -0.0292 + 8 C8 -9.3075 -1.9314 13.5642 C.3 1 DEZW 0.4182 + 9 O9 -7.9876 -1.4414 13.3691 O.3 1 DEZW -0.4300 + 10 C10 -7.0994 -2.4248 13.7128 C.2 1 DEZW 0.7800 + 11 O11 -5.8993 -2.2204 13.6226 O.2 1 DEZW -0.5700 + 12 CL12 -5.4628 -4.8226 14.5578 CL 1 DEZW -0.1400 + 13 CL13 -11.8329 -3.4517 14.1483 CL 1 DEZW -0.1400 + 14 H1 -7.1408 -6.7140 15.2647 H 1 DEZW 0.1500 + 15 H2 -9.3656 -7.2426 15.4860 H 1 DEZW 0.1500 + 16 H3 -11.2140 -5.8976 15.0246 H 1 DEZW 0.1500 + 17 H4 -9.8288 -1.8917 12.6025 H 1 DEZW 0.0000 + 18 H5 -9.8059 -1.2813 14.2903 H 1 DEZW 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 10 am + 4 2 3 2 + 5 2 12 1 + 6 3 4 1 + 7 3 14 1 + 8 4 5 2 + 9 4 15 1 + 10 5 6 1 + 11 5 16 1 + 12 6 7 2 + 13 6 13 1 + 14 7 8 1 + 15 8 9 1 + 16 8 17 1 + 17 8 18 1 + 18 9 10 1 + 19 10 11 2 +@SUBSTRUCTURE + 1 DEZW 1 +@COMMENT +COMMENT 4,8-DICHLORO-3-OXO-3H-OXAZOLO(3,4-A)AZEPINE +@MOLECULE +DHOADS01 + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -5.9595 -4.4054 16.8948 C.2 1 DHOA 0.4700 + 2 C2 -7.7116 -4.3609 15.5398 C.2 1 DHOA 0.1054 + 3 C3 -7.5447 -3.0133 15.2656 C.2 1 DHOA 0.2272 + 4 C4 -6.4617 -2.3730 15.8909 C.2 1 DHOA 0.4100 + 5 C5 -9.2683 -3.6223 14.1590 C.2 1 DHOA 0.0365 + 6 C6 -9.3761 -6.0703 14.7936 C.3 1 DHOA 0.6738 + 7 C7 -10.3371 -6.3120 15.9033 C.2 1 DHOA -0.2882 + 8 C8 -11.5033 -6.7361 15.4189 C.2 1 DHOA -0.2882 + 9 C9 -11.4321 -6.8211 13.9370 C.3 1 DHOA 0.4182 + 10 C10 -12.5246 -6.0290 13.2128 C.3 1 DHOA 0.2800 + 11 N1 -5.6784 -3.0950 16.7246 N.2 1 DHOA -0.6200 + 12 N2 -6.9585 -5.1276 16.3460 N.2 1 DHOA -0.5670 + 13 N3 -6.1670 -1.0277 15.7125 N.3 1 DHOA -0.9000 + 14 N4 -8.5297 -2.5607 14.4110 N.2 1 DHOA -0.5653 + 15 N5 -8.8134 -4.7332 14.8180 N.3 1 DHOA 0.0476 + 16 O1 -10.1456 -6.2510 13.5805 O.3 1 DHOA -0.5600 + 17 O2 -12.3697 -6.1591 11.7990 O.3 1 DHOA -0.6800 + 18 H1 -5.2944 -4.9456 17.5629 H 1 DHOA 0.1500 + 19 H2 -5.6257 -0.6482 16.4774 H 1 DHOA 0.4000 + 20 H3 -6.9511 -0.4843 15.3691 H 1 DHOA 0.4000 + 21 H4 -10.1359 -3.6414 13.5116 H 1 DHOA 0.1500 + 22 H5 -8.5555 -6.7955 14.7921 H 1 DHOA 0.0000 + 23 H6 -10.0959 -6.1844 16.9489 H 1 DHOA 0.1500 + 24 H7 -12.3662 -7.0113 16.0085 H 1 DHOA 0.1500 + 25 H8 -11.4298 -7.8638 13.6004 H 1 DHOA 0.0000 + 26 H9 -12.4662 -4.9612 13.4495 H 1 DHOA 0.0000 + 27 H10 -13.5214 -6.3930 13.4801 H 1 DHOA 0.0000 + 28 H11 -11.4290 -5.9775 11.6104 H 1 DHOA 0.4000 +@BOND + 1 1 11 am + 2 1 12 2 + 3 1 18 1 + 4 2 3 2 + 5 2 12 1 + 6 2 15 1 + 7 3 4 1 + 8 3 14 1 + 9 4 11 2 + 10 4 13 am + 11 5 14 2 + 12 5 15 am + 13 5 21 1 + 14 6 7 1 + 15 6 15 1 + 16 6 16 1 + 17 6 22 1 + 18 7 8 2 + 19 7 23 1 + 20 8 9 1 + 21 8 24 1 + 22 9 10 1 + 23 9 16 1 + 24 9 25 1 + 25 10 17 1 + 26 10 26 1 + 27 10 27 1 + 28 13 19 1 + 29 13 20 1 + 30 17 28 1 +@SUBSTRUCTURE + 1 DHOA 1 +@COMMENT +COMMENT 2',3'-DIDEHYDRO-2',3'-DIDEOXYADENOSINE +@MOLECULE +DICKIJ + 32 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -12.5709 -5.6752 14.0464 S.3 1 DICK -0.0800 + 2 C2 -11.9375 -7.1530 14.5856 C.2 1 DICK -0.1100 + 3 C3 -10.5709 -7.1971 14.4652 C.2 1 DICK -0.1500 + 4 C4 -8.6465 -5.6515 13.6401 C.2 1 DICK -0.1435 + 5 C5 -8.3550 -4.3895 13.0777 C.2 1 DICK -0.1500 + 6 C6 -9.0349 -2.2111 12.2271 C.2 1 DICK -0.1500 + 7 C7 -10.0354 -1.2811 11.9395 C.2 1 DICK -0.1500 + 8 C8 -11.3666 -1.5851 12.2047 C.2 1 DICK -0.1500 + 9 C9 -11.7031 -2.8209 12.7578 C.2 1 DICK -0.1500 + 10 C10 -10.7013 -3.7729 13.0543 C.2 1 DICK 0.0000 + 11 C11 -9.3518 -3.4603 12.7853 C.2 1 DICK 0.0000 + 12 C12 -10.0051 -5.9910 13.9098 C.2 1 DICK 0.0000 + 13 C13 -11.0082 -5.0522 13.6201 C.2 1 DICK 0.0400 + 14 C14 -7.4880 -6.5667 13.9619 C.3 1 DICK 0.6575 + 15 N15 -6.7413 -6.0113 15.0980 N.3 1 DICK -0.7640 + 16 C16 -7.2938 -5.6059 16.2541 C.2 1 DICK 0.6500 + 17 N17 -6.2965 -5.1755 17.0328 N.2 1 DICK -0.7000 + 18 C18 -5.0896 -5.3006 16.3886 C.2 1 DICK 0.2000 + 19 C19 -5.3642 -5.8351 15.1614 C.2 1 DICK 0.2000 + 20 H2 -12.5976 -7.9242 14.9616 H 1 DICK 0.1500 + 21 H3 -10.0075 -8.0749 14.7562 H 1 DICK 0.1500 + 22 H5 -7.3169 -4.1308 12.8663 H 1 DICK 0.1500 + 23 H6 -8.0036 -1.9456 12.0034 H 1 DICK 0.1500 + 24 H7 -9.7765 -0.3189 11.5034 H 1 DICK 0.1500 + 25 H8 -12.1464 -0.8618 11.9767 H 1 DICK 0.1500 + 26 H9 -12.7538 -3.0281 12.9474 H 1 DICK 0.1500 + 27 H141 -7.8137 -7.5736 14.2374 H 1 DICK 0.0000 + 28 H142 -6.8274 -6.6560 13.0920 H 1 DICK 0.0000 + 29 H16 -8.3464 -5.6186 16.5151 H 1 DICK 0.1500 + 30 H17 -6.4299 -4.8006 17.9695 H 1 DICK 0.4500 + 31 H18 -4.1923 -4.9909 16.8950 H 1 DICK 0.1500 + 32 H19 -4.7557 -6.1131 14.3174 H 1 DICK 0.1500 +@BOND + 1 1 13 1 + 2 1 2 1 + 3 2 20 1 + 4 2 3 2 + 5 3 21 1 + 6 3 12 1 + 7 4 14 1 + 8 4 12 1 + 9 4 5 2 + 10 5 22 1 + 11 5 11 1 + 12 6 23 1 + 13 6 11 1 + 14 6 7 2 + 15 7 24 1 + 16 7 8 1 + 17 8 25 1 + 18 8 9 2 + 19 9 26 1 + 20 9 10 1 + 21 10 13 1 + 22 10 11 2 + 23 12 13 2 + 24 14 28 1 + 25 14 27 1 + 26 14 15 1 + 27 15 19 1 + 28 15 16 am + 29 16 29 1 + 30 16 17 2 + 31 17 30 1 + 32 17 18 1 + 33 18 31 1 + 34 18 19 2 + 35 19 32 1 +@SUBSTRUCTURE + 1 DICK 1 +@COMMENT +COMMENT 1-((4-NAPHTHO(1,2-B)THIENYL)-METHYL)-1H,3H+-IMIDAZOLIUM MET +@MOLECULE +DICPUA + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.5308 -4.5876 15.5604 C.2 1 DICP -0.1360 + 2 C2 -8.9774 -4.5488 16.8586 C.2 1 DICP 0.1388 + 3 C3 -8.9185 -4.3371 14.2677 C.2 1 DICP 0.0540 + 4 C4 -9.6485 -3.8016 13.1977 C.2 1 DICP -0.1500 + 5 C5 -9.0325 -3.5559 11.9671 C.2 1 DICP -0.1500 + 6 C6 -7.6805 -3.8387 11.7920 C.2 1 DICP -0.1500 + 7 C7 -6.9418 -4.3676 12.8467 C.2 1 DICP -0.1500 + 8 C8 -7.5557 -4.6141 14.0780 C.2 1 DICP -0.1500 + 9 N1 -10.8180 -4.9372 15.7274 N.2 1 DICP 0.9530 + 10 N2 -9.8615 -4.8542 17.8063 N.2 1 DICP -0.4097 + 11 O1 -11.0555 -5.1119 17.1362 O.3 1 DICP -0.1171 + 12 O2 -11.8000 -5.1445 14.9765 O.3 1 DICP -0.6330 + 13 H2 -7.9668 -4.3055 17.1585 H 1 DICP 0.1500 + 14 H4 -10.7056 -3.5600 13.2952 H 1 DICP 0.1500 + 15 H5 -9.6124 -3.1432 11.1448 H 1 DICP 0.1500 + 16 H6 -7.2043 -3.6485 10.8334 H 1 DICP 0.1500 + 17 H7 -5.8866 -4.5920 12.7104 H 1 DICP 0.1500 + 18 H8 -6.9504 -5.0378 14.8763 H 1 DICP 0.1500 +@BOND + 1 1 9 2 + 2 1 3 1 + 3 1 2 1 + 4 2 13 1 + 5 2 10 2 + 6 3 8 1 + 7 3 4 2 + 8 4 14 1 + 9 4 5 1 + 10 5 15 1 + 11 5 6 2 + 12 6 16 1 + 13 6 7 1 + 14 7 17 1 + 15 7 8 2 + 16 8 18 1 + 17 9 12 1 + 18 9 11 1 + 19 10 11 1 +@SUBSTRUCTURE + 1 DICP 1 +@COMMENT +COMMENT 3-PHENYL-FUROXAN +@MOLECULE +DICRAI + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.8263 -4.8273 13.7969 C.2 1 DICR 0.2348 + 2 C2 -9.3025 -5.3471 12.5923 C.2 1 DICR -0.2320 + 3 C3 -9.1706 -3.9484 14.7722 C.2 1 DICR 0.0540 + 4 C4 -7.8517 -3.5066 14.5815 C.2 1 DICR -0.1500 + 5 C5 -7.2355 -2.6689 15.5172 C.2 1 DICR -0.1500 + 6 C6 -7.9275 -2.2616 16.6548 C.2 1 DICR -0.1500 + 7 C7 -9.2358 -2.6902 16.8598 C.2 1 DICR -0.1500 + 8 C8 -9.8526 -3.5272 15.9256 C.2 1 DICR -0.1500 + 9 N1 -11.0867 -5.2550 13.9703 N.2 1 DICR -0.4097 + 10 N2 -10.2529 -6.0933 12.0353 N.2 1 DICR 0.9530 + 11 O1 -11.3996 -6.0579 12.8822 O.3 1 DICR -0.1171 + 12 O2 -10.3318 -6.7715 10.9885 O.3 1 DICR -0.6330 + 13 H2 -8.3371 -5.2193 12.1351 H 1 DICR 0.1500 + 14 H4 -7.2766 -3.8007 13.7080 H 1 DICR 0.1500 + 15 H5 -6.2134 -2.3342 15.3568 H 1 DICR 0.1500 + 16 H6 -7.4479 -1.6106 17.3815 H 1 DICR 0.1500 + 17 H7 -9.7802 -2.3748 17.7466 H 1 DICR 0.1500 + 18 H8 -10.8768 -3.8467 16.1121 H 1 DICR 0.1500 +@BOND + 1 1 9 2 + 2 1 3 1 + 3 1 2 1 + 4 2 13 1 + 5 2 10 2 + 6 3 8 1 + 7 3 4 2 + 8 4 14 1 + 9 4 5 1 + 10 5 15 1 + 11 5 6 2 + 12 6 16 1 + 13 6 7 1 + 14 7 17 1 + 15 7 8 2 + 16 8 18 1 + 17 9 11 1 + 18 10 12 1 + 19 10 11 1 +@SUBSTRUCTURE + 1 DICR 1 +@COMMENT +COMMENT 4-PHENYL-FUROXAN +@MOLECULE +DICYIX + 22 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -8.8615 -4.9244 14.3529 SI 1 UNCH 0.5885 + 2 N1 -9.4136 -3.2968 14.6662 N.3 1 UNCH -0.8870 + 3 C1 -10.3035 -5.9776 13.7947 C.3 1 UNCH -0.0805 + 4 C2 -7.5566 -4.8706 13.0151 C.3 1 UNCH -0.0805 + 5 C3 -8.1400 -5.6524 15.9180 C.3 1 UNCH -0.0805 + 6 C4 -8.5337 -2.3210 15.3302 C.3 1 UNCH 0.2700 + 7 C5 -10.2240 -2.5750 13.6714 C.3 1 UNCH 0.2700 + 8 H11 -9.9904 -7.0176 13.6610 H 1 UNCH 0.0000 + 9 H12 -10.7059 -5.6234 12.8410 H 1 UNCH 0.0000 + 10 H13 -11.1096 -5.9592 14.5344 H 1 UNCH 0.0000 + 11 H21 -7.1885 -5.8770 12.7941 H 1 UNCH 0.0000 + 12 H22 -6.7039 -4.2588 13.3246 H 1 UNCH 0.0000 + 13 H23 -7.9613 -4.4478 12.0906 H 1 UNCH 0.0000 + 14 H31 -7.8526 -6.6963 15.7590 H 1 UNCH 0.0000 + 15 H32 -8.8682 -5.6223 16.7342 H 1 UNCH 0.0000 + 16 H33 -7.2481 -5.1037 16.2346 H 1 UNCH 0.0000 + 17 H41 -8.0556 -2.7500 16.2183 H 1 UNCH 0.0000 + 18 H42 -9.1008 -1.4531 15.6875 H 1 UNCH 0.0000 + 19 H43 -7.7464 -1.9656 14.6549 H 1 UNCH 0.0000 + 20 H51 -11.0403 -3.1986 13.2891 H 1 UNCH 0.0000 + 21 H52 -9.6159 -2.2466 12.8202 H 1 UNCH 0.0000 + 22 H53 -10.7044 -1.6941 14.1136 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 6 1 + 6 2 7 1 + 7 3 8 1 + 8 3 9 1 + 9 3 10 1 + 10 4 11 1 + 11 4 12 1 + 12 4 13 1 + 13 5 14 1 + 14 5 15 1 + 15 5 16 1 + 16 6 17 1 + 17 6 18 1 + 18 6 19 1 + 19 7 20 1 + 20 7 21 1 + 21 7 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N-DIMETHYL-(TRIMETHYLSILYL)-AMINE (AT 116 DEG.K) +@MOLECULE +DICYOD + 26 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -5.3010 -4.4329 12.0812 CL 1 UNCH -0.2090 + 2 CL2 -7.4391 -6.9154 14.9545 CL 1 UNCH -0.2900 + 3 CL3 -4.6791 -6.0335 15.0222 CL 1 UNCH -0.2900 + 4 CL4 -8.9057 -3.9777 16.7426 CL 1 UNCH -0.2090 + 5 O1 -6.6462 -6.6974 12.1508 O.2 1 UNCH -0.5700 + 6 O2 -6.1464 -3.5389 15.4918 O.2 1 UNCH -0.5700 + 7 N1 -8.0156 -3.9311 14.2448 N.2 1 UNCH -0.6610 + 8 N2 -10.2633 -3.3268 14.5466 N.3 1 UNCH -0.7882 + 9 C1 -6.1897 -5.7636 12.8106 C.2 1 UNCH 0.7180 + 10 C2 -6.2952 -5.6692 14.3275 C.3 1 UNCH 0.7020 + 11 C3 -6.8009 -4.2983 14.7816 C.2 1 UNCH 0.7200 + 12 C4 -9.0270 -3.7240 15.0357 C.2 1 UNCH 0.7090 + 13 C5 -11.4405 -3.0632 15.3776 C.3 1 UNCH 0.3691 + 14 C6 -12.2352 -4.3405 15.6029 C.3 1 UNCH 0.0000 + 15 C7 -10.4490 -3.1047 13.1077 C.3 1 UNCH 0.3691 + 16 C8 -10.0147 -1.6993 12.7216 C.3 1 UNCH 0.0000 + 17 H51 -12.0896 -2.3261 14.8882 H 1 UNCH 0.0000 + 18 H52 -11.1653 -2.6074 16.3346 H 1 UNCH 0.0000 + 19 H61 -11.6395 -5.1017 16.1157 H 1 UNCH 0.0000 + 20 H62 -13.1197 -4.1332 16.2131 H 1 UNCH 0.0000 + 21 H63 -12.5711 -4.7673 14.6520 H 1 UNCH 0.0000 + 22 H71 -9.8882 -3.8449 12.5246 H 1 UNCH 0.0000 + 23 H72 -11.5011 -3.2464 12.8319 H 1 UNCH 0.0000 + 24 H81 -8.9550 -1.5343 12.9409 H 1 UNCH 0.0000 + 25 H82 -10.1692 -1.5358 11.6506 H 1 UNCH 0.0000 + 26 H83 -10.5899 -0.9447 13.2682 H 1 UNCH 0.0000 +@BOND + 1 1 9 1 + 2 2 10 1 + 3 3 10 1 + 4 4 12 1 + 5 5 9 2 + 6 6 11 2 + 7 7 11 am + 8 7 12 2 + 9 8 12 am + 10 8 13 1 + 11 8 15 1 + 12 9 10 1 + 13 10 11 1 + 14 13 14 1 + 15 13 17 1 + 16 13 18 1 + 17 14 19 1 + 18 14 20 1 + 19 14 21 1 + 20 15 16 1 + 21 15 22 1 + 22 15 23 1 + 23 16 24 1 + 24 16 25 1 + 25 16 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2-DICHLORO-N-(CHLORO-(DIMETHYLAMINO)-METHYLENE)-MALONAMOY +@MOLECULE +DIDYOE + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -6.8945 -4.0996 12.9229 O.3 1 DICY -0.2170 + 2 O2 -9.2472 -2.5331 15.2842 O.3 1 DICY -0.6800 + 3 O3 -10.5417 -3.6012 13.2273 O.3 1 DICY -0.6800 + 4 O4 -9.7867 -6.0140 15.8230 O.2 1 DICY -0.5700 + 5 O5 -11.6523 -5.5483 14.5645 O.3 1 DICY -0.4300 + 6 N2 -5.6741 -4.3547 13.5927 N.2 1 DICY -0.5130 + 7 C3 -5.4455 -3.3350 14.3473 C.2 1 DICY 0.3290 + 8 C4 -6.4561 -2.2575 14.2883 C.3 1 DICY 0.0610 + 9 C5 -7.5668 -3.0385 13.6191 C.3 1 DICY 0.2800 + 10 C6 -8.5840 -3.6243 14.6161 C.3 1 DICY 0.2800 + 11 C7 -9.6336 -4.4907 13.8996 C.3 1 DICY 0.3410 + 12 C8 -10.3303 -5.4232 14.9007 C.2 1 DICY 0.6590 + 13 C9 -12.3880 -6.4113 15.4339 C.3 1 DICY 0.2800 + 14 H2 -9.9595 -2.2501 14.6724 H 1 DICY 0.4000 + 15 H3 -11.3066 -4.1532 12.9696 H 1 DICY 0.4000 + 16 H31 -4.5460 -3.2314 14.9697 H 1 DICY 0.0600 + 17 H41 -6.6955 -1.8644 15.2776 H 1 DICY 0.0000 + 18 H42 -6.0640 -1.4558 13.6558 H 1 DICY 0.0000 + 19 H5 -8.0788 -2.3983 12.8915 H 1 DICY 0.0000 + 20 H6 -8.0546 -4.2120 15.3745 H 1 DICY 0.0000 + 21 H7 -9.1803 -5.1425 13.1452 H 1 DICY 0.0000 + 22 H91 -13.4283 -6.4234 15.0973 H 1 DICY 0.0000 + 23 H92 -12.3610 -6.0354 16.4615 H 1 DICY 0.0000 + 24 H93 -11.9949 -7.4314 15.3820 H 1 DICY 0.0000 +@BOND + 1 1 6 1 + 2 1 9 1 + 3 2 10 1 + 4 2 14 1 + 5 3 11 1 + 6 3 15 1 + 7 4 12 2 + 8 5 12 1 + 9 5 13 1 + 10 6 7 2 + 11 7 8 1 + 12 7 16 1 + 13 8 9 1 + 14 8 17 1 + 15 8 18 1 + 16 9 10 1 + 17 9 19 1 + 18 10 11 1 + 19 10 20 1 + 20 11 12 1 + 21 11 21 1 + 22 13 22 1 + 23 13 23 1 + 24 13 24 1 +@SUBSTRUCTURE + 1 DICY 1 +@COMMENT +COMMENT 5-(1',2'-DIHYDROXY-2'-METHOXYCARBONYLETHYL)-ISOXAZOLINE +@MOLECULE +DIFSIU + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.2039 -6.0338 16.1421 S.2 1 DIFS 0.3720 + 2 O1 -10.0972 -5.8316 17.3329 O.2 1 DIFS -0.5000 + 3 O2 -8.1189 -6.9886 13.3890 O.3 1 DIFS -0.5200 + 4 O3 -7.5563 -5.0346 12.5457 O.2 1 DIFS -0.5200 + 5 O4 -6.4202 -7.0676 16.6847 O.3 1 DIFS -0.5200 + 6 O5 -5.1653 -6.2858 15.0584 O.2 1 DIFS -0.5200 + 7 N1 -8.3499 -5.8122 13.0893 N.2 1 DIFS 0.9070 + 8 N2 -6.0380 -6.1671 15.9281 N.2 1 DIFS 0.9070 + 9 C1 -10.1446 -5.3449 14.7348 C.2 1 DIFS 0.0640 + 10 C2 -9.6565 -5.2875 13.4217 C.2 1 DIFS 0.1330 + 11 C3 -10.4043 -4.7284 12.3728 C.2 1 DIFS -0.1500 + 12 C4 -11.6803 -4.2349 12.6311 C.2 1 DIFS -0.1500 + 13 C5 -12.2007 -4.3049 13.9217 C.2 1 DIFS -0.1500 + 14 C6 -11.4432 -4.8570 14.9611 C.2 1 DIFS -0.1500 + 15 C7 -8.0099 -4.6643 16.2499 C.2 1 DIFS 0.0640 + 16 C8 -6.6255 -4.8451 16.1003 C.2 1 DIFS 0.1330 + 17 C9 -5.7377 -3.7565 16.1452 C.2 1 DIFS -0.1500 + 18 C10 -6.2302 -2.4730 16.3717 C.2 1 DIFS -0.1500 + 19 C11 -7.5957 -2.2792 16.5662 C.2 1 DIFS -0.1500 + 20 C12 -8.4762 -3.3641 16.5131 C.2 1 DIFS -0.1500 + 21 H3 -10.0039 -4.6821 11.3615 H 1 DIFS 0.1500 + 22 H4 -12.2737 -3.8033 11.8276 H 1 DIFS 0.1500 + 23 H5 -13.2024 -3.9301 14.1250 H 1 DIFS 0.1500 + 24 H6 -11.8817 -4.8988 15.9582 H 1 DIFS 0.1500 + 25 H9 -4.6662 -3.9025 16.0162 H 1 DIFS 0.1500 + 26 H10 -5.5481 -1.6261 16.4126 H 1 DIFS 0.1500 + 27 H11 -7.9790 -1.2803 16.7660 H 1 DIFS 0.1500 + 28 H12 -9.5359 -3.1841 16.6898 H 1 DIFS 0.1500 +@BOND + 1 1 2 2 + 2 1 9 1 + 3 1 15 1 + 4 3 7 1 + 5 4 7 2 + 6 5 8 1 + 7 6 8 2 + 8 7 10 1 + 9 8 16 1 + 10 9 10 2 + 11 9 14 1 + 12 10 11 1 + 13 11 12 2 + 14 11 21 1 + 15 12 13 1 + 16 12 22 1 + 17 13 14 2 + 18 13 23 1 + 19 14 24 1 + 20 15 16 2 + 21 15 20 1 + 22 16 17 1 + 23 17 18 2 + 24 17 25 1 + 25 18 19 1 + 26 18 26 1 + 27 19 20 2 + 28 19 27 1 + 29 20 28 1 +@SUBSTRUCTURE + 1 DIFS 1 +@COMMENT +COMMENT 2,2'-DINITRODIPHENYL-SULFOXIDE +@MOLECULE +DIGCOL + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.0964 -6.9765 16.0985 S.2 1 CHGB -0.7500 + 2 S2 -9.0941 -4.1561 17.1177 S.3 1 CHGB -0.7500 + 3 N1 -9.0955 -4.9251 14.5566 N.3 1 CHGB -0.6660 + 4 C1 -9.0953 -5.2913 15.8447 C.2 1 CHGB 0.7960 + 5 H1 -9.0962 -5.5801 13.7765 H 1 CHGB 0.3700 + 6 N1E -9.0946 -3.5424 14.1539 N.3 1 CHGB -0.6660 + 7 C1E -9.0948 -3.1762 12.8658 C.2 1 CHGB 0.7960 + 8 H1E -9.0939 -2.8874 14.9340 H 1 CHGB 0.3700 + 9 S1E -9.0937 -1.4910 12.6120 S.2 1 CHGB -0.7500 + 10 S2E -9.0961 -4.3114 11.5928 S.3 1 CHGB -0.7500 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 4 1 + 4 3 5 1 + 5 3 6 1 + 6 6 7 1 + 7 6 8 1 + 8 7 9 2 + 9 7 10 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT DIPOTASSIUM HYDRAZINE-1,2-BIS(DITHIOFORMATE) (AT -85 DEG.C) +@MOLECULE +DIGCUR + 22 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S11 -10.1154 -4.1451 18.0250 S.2 1 UNCH -0.3800 + 2 S21 -12.1833 -3.2549 16.0275 S.3 1 UNCH -0.3710 + 3 S31 -10.4176 -5.5083 15.3431 S.3 1 UNCH -0.3710 + 4 C11 -13.5636 -4.2090 16.6988 C.3 1 UNCH 0.2300 + 5 C21 -10.8604 -4.2950 16.5359 C.2 1 UNCH 0.6620 + 6 C31 -8.8069 -4.8621 14.7827 C.3 1 UNCH 0.2300 + 7 H11 -14.5020 -3.7056 16.4513 H 1 UNCH 0.0000 + 8 H21 -13.4889 -4.2850 17.7868 H 1 UNCH 0.0000 + 9 H31 -13.5855 -5.2133 16.2674 H 1 UNCH 0.0000 + 10 H41 -8.1585 -4.6815 15.6460 H 1 UNCH 0.0000 + 11 H51 -8.3501 -5.6660 14.1974 H 1 UNCH 0.0000 + 12 C31A -8.9611 -3.6055 13.9276 C.3 1 UNCH 0.2300 + 13 S31A -7.3504 -2.9593 13.3672 S.3 1 UNCH -0.3710 + 14 H41A -9.6095 -3.7861 13.0643 H 1 UNCH 0.0000 + 15 H51A -9.4179 -2.8016 14.5130 H 1 UNCH 0.0000 + 16 C21A -6.9076 -4.1726 12.1745 C.2 1 UNCH 0.6620 + 17 S11A -7.6526 -4.3225 10.6854 S.2 1 UNCH -0.3800 + 18 S21A -5.5847 -5.2127 12.6829 S.3 1 UNCH -0.3710 + 19 C11A -4.2043 -4.2586 12.0115 C.3 1 UNCH 0.2300 + 20 H11A -3.2660 -4.7620 12.2590 H 1 UNCH 0.0000 + 21 H21A -4.2791 -4.1826 10.9235 H 1 UNCH 0.0000 + 22 H31A -4.1824 -3.2543 12.4429 H 1 UNCH 0.0000 +@BOND + 1 1 5 2 + 2 2 4 1 + 3 2 5 1 + 4 3 5 1 + 5 3 6 1 + 6 4 7 1 + 7 4 8 1 + 8 4 9 1 + 9 6 10 1 + 10 6 11 1 + 11 6 12 1 + 12 12 13 1 + 13 12 14 1 + 14 12 15 1 + 15 13 16 1 + 16 16 17 2 + 17 16 18 1 + 18 18 19 1 + 19 19 20 1 + 20 19 21 1 + 21 19 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-BIS(METHYLTRITHIOCARBONATO)-ETHANE (AT -40 DEG.C) +@MOLECULE +DIGLEK + 40 42 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -12.2753 -0.2064 12.1836 O.2 1 UNCH -0.5700 + 2 O2 -10.0720 0.3003 12.6672 O.3 1 UNCH -0.4079 + 3 O11 -10.1583 -3.4046 15.6885 O.2 1 UNCH -0.5700 + 4 O13 -9.1448 -5.7749 16.0211 O.3 1 UNCH -0.5325 + 5 O14 -9.2712 -8.3652 15.3048 O.3 1 UNCH -0.5325 + 6 O15 -5.5756 -6.7050 15.0596 O.3 1 UNCH -0.5200 + 7 O16 -5.1802 -5.3432 16.7334 O.2 1 UNCH -0.5200 + 8 N1 -10.8338 -2.7820 13.5930 N.3 1 UNCH -0.6550 + 9 N2 -5.6339 -5.5949 15.6074 N.2 1 UNCH 0.9070 + 10 C1 -11.2436 -0.3707 12.7930 C.2 1 UNCH 0.6670 + 11 C2 -10.7049 -1.3299 13.8784 C.3 1 UNCH 0.2780 + 12 C3 -9.3592 -0.6389 13.5410 C.3 1 UNCH 0.2579 + 13 C4 -8.2526 -1.3160 12.7286 C.3 1 UNCH 0.1435 + 14 C5 -7.5609 -2.4216 13.4918 C.2 1 UNCH -0.1435 + 15 C6 -6.9859 -2.1917 14.7508 C.2 1 UNCH -0.1500 + 16 C7 -6.3539 -3.2268 15.4457 C.2 1 UNCH -0.1500 + 17 C8 -6.2772 -4.5005 14.8706 C.2 1 UNCH 0.1330 + 18 C9 -6.8143 -4.7387 13.6011 C.2 1 UNCH -0.1500 + 19 C10 -7.4484 -3.6987 12.9165 C.2 1 UNCH -0.1500 + 20 C11 -10.5537 -3.7167 14.5670 C.2 1 UNCH 0.5438 + 21 C12 -10.6743 -5.1547 14.2137 C.2 1 UNCH 0.0862 + 22 C13 -9.9448 -6.0986 14.9509 C.2 1 UNCH 0.0825 + 23 C14 -10.0006 -7.4471 14.6054 C.2 1 UNCH 0.0825 + 24 C15 -10.7930 -7.8843 13.5539 C.2 1 UNCH -0.1500 + 25 C16 -11.5488 -6.9582 12.8362 C.2 1 UNCH -0.1500 + 26 C17 -11.4938 -5.5976 13.1631 C.2 1 UNCH -0.1500 + 27 H2 -11.1040 -1.0735 14.8672 H 1 UNCH 0.0000 + 28 H3 -8.9521 -0.0886 14.3997 H 1 UNCH 0.0000 + 29 H41 -7.4962 -0.5753 12.4406 H 1 UNCH 0.0000 + 30 H42 -8.6702 -1.7116 11.7940 H 1 UNCH 0.0000 + 31 H6 -7.0254 -1.2061 15.2106 H 1 UNCH 0.1500 + 32 H7 -5.9321 -3.0247 16.4283 H 1 UNCH 0.1500 + 33 H9 -6.7574 -5.7229 13.1398 H 1 UNCH 0.1500 + 34 H10 -7.8596 -3.8988 11.9285 H 1 UNCH 0.1500 + 35 H15 -10.8288 -8.9413 13.3045 H 1 UNCH 0.1500 + 36 H16 -12.1874 -7.2995 12.0242 H 1 UNCH 0.1500 + 37 H17 -12.1203 -4.9129 12.5995 H 1 UNCH 0.1500 + 38 H1 -11.0971 -3.0842 12.6625 H 1 UNCH 0.3700 + 39 H14 -8.7795 -7.8472 15.9741 H 1 UNCH 0.4500 + 40 H13 -9.3378 -4.8376 16.2569 H 1 UNCH 0.4500 +@BOND + 1 1 10 2 + 2 2 10 1 + 3 2 12 1 + 4 3 20 2 + 5 4 22 1 + 6 4 40 1 + 7 5 23 1 + 8 5 39 1 + 9 6 9 1 + 10 7 9 2 + 11 8 11 1 + 12 8 20 am + 13 8 38 1 + 14 9 17 1 + 15 10 11 1 + 16 11 12 1 + 17 11 27 1 + 18 12 13 1 + 19 12 28 1 + 20 13 14 1 + 21 13 29 1 + 22 13 30 1 + 23 14 15 2 + 24 14 19 1 + 25 15 16 1 + 26 15 31 1 + 27 16 17 2 + 28 16 32 1 + 29 17 18 1 + 30 18 19 2 + 31 18 33 1 + 32 19 34 1 + 33 20 21 1 + 34 21 22 2 + 35 21 26 1 + 36 22 23 1 + 37 23 24 2 + 38 24 25 1 + 39 24 35 1 + 40 25 26 2 + 41 25 36 1 + 42 26 37 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT OBAFLUORIN ACETONITRILE SOLVATE +@MOLECULE +DIHTET + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O4 -8.5879 -1.4392 16.4621 O.2 1 UNCH -0.5700 + 2 O7 -8.9131 -4.7449 12.1891 O.2 1 UNCH -0.5700 + 3 N1 -9.0830 -5.7237 15.0127 N.3 1 UNCH 0.3140 + 4 N2 -9.1122 -5.7639 16.3636 N.2 1 UNCH -0.7068 + 5 C3 -8.9633 -4.4855 16.7296 C.2 1 UNCH 0.1388 + 6 C4 -8.6644 -2.2081 15.5149 C.2 1 UNCH 0.6416 + 7 C5 -8.5804 -1.7271 14.1010 C.2 1 UNCH -0.1356 + 8 C6 -8.6576 -2.5225 13.0134 C.2 1 UNCH -0.1238 + 9 C7 -8.8414 -4.0108 13.1666 C.2 1 UNCH 0.6406 + 10 C8 -8.9206 -4.4606 14.5251 C.2 1 UNCH -0.2366 + 11 C9 -8.8395 -3.6318 15.6237 C.2 1 UNCH -0.0860 + 12 C10 -9.2179 -6.9449 14.2537 C.3 1 UNCH 0.2556 + 13 C11 -8.5698 -2.0081 11.6114 C.3 1 UNCH 0.1382 + 14 H1 -8.9516 -4.2334 17.7831 H 1 UNCH 0.1500 + 15 H2 -8.4482 -0.6538 14.0094 H 1 UNCH 0.1500 + 16 H3 -9.4845 -2.2443 11.0579 H 1 UNCH 0.0000 + 17 H4 -7.7193 -2.4590 11.0897 H 1 UNCH 0.0000 + 18 H5 -8.4371 -0.9213 11.5843 H 1 UNCH 0.0000 + 19 H6 -9.3329 -7.7888 14.9390 H 1 UNCH 0.0000 + 20 H7 -8.3163 -7.0788 13.6511 H 1 UNCH 0.0000 + 21 H8 -10.1033 -6.8614 13.6189 H 1 UNCH 0.0000 +@BOND + 1 1 6 2 + 2 2 9 2 + 3 3 4 1 + 4 3 10 1 + 5 3 12 1 + 6 4 5 2 + 7 5 11 1 + 8 5 14 1 + 9 6 7 1 + 10 6 11 1 + 11 7 8 2 + 12 7 15 1 + 13 8 9 1 + 14 8 13 1 + 15 9 10 1 + 16 10 11 2 + 17 12 19 1 + 18 12 20 1 + 19 12 21 1 + 20 13 16 1 + 21 13 17 1 + 22 13 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,6-DIMETHYL-1H-INDAZOLE-4,7-DIONE +@MOLECULE +DIKGAF + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -12.0879 -5.6056 14.4091 CL 1 DIHW -0.2900 + 2 CL2 -10.8745 -4.9325 17.0045 CL 1 DIHW -0.2900 + 3 CL3 -10.9273 -7.6611 16.0733 CL 1 DIHW -0.2900 + 4 S1 -9.7323 -3.1525 13.9596 S.1 1 DIHW 1.3390 + 5 O1 -8.6431 -6.6932 14.5797 O.2 1 DIHW -0.5700 + 6 O2 -10.4460 -2.4367 14.9856 O.2 1 DIHW -0.6500 + 7 O3 -10.3134 -3.5749 12.7100 O.2 1 DIHW -0.6500 + 8 N1 -8.9063 -4.4228 14.6450 N.3 1 DIHW -0.6813 + 9 C1 -8.0489 -2.5954 13.7855 C.3 1 DIHW 0.0990 + 10 C2 -7.6010 -4.0949 13.9745 C.3 1 DIHW 0.3070 + 11 C3 -7.7005 -1.8476 12.5128 C.3 1 DIHW 0.0000 + 12 C4 -6.4467 -4.2321 14.9663 C.3 1 DIHW 0.0000 + 13 C5 -7.3316 -4.8773 12.6870 C.3 1 DIHW 0.0000 + 14 C6 -9.3811 -5.7483 14.8583 C.2 1 DIHW 0.7453 + 15 C7 -10.7650 -5.9467 15.5403 C.3 1 DIHW 0.9310 + 16 H1 -7.7880 -1.9649 14.6479 H 1 DIHW 0.0000 + 17 H2 -8.0162 -2.3872 11.6150 H 1 DIHW 0.0000 + 18 H4 -6.2518 -5.2827 15.2072 H 1 DIHW 0.0000 + 19 H5 -7.0486 -5.9145 12.8921 H 1 DIHW 0.0000 + 20 H6 -5.5267 -3.8077 14.5496 H 1 DIHW 0.0000 + 21 H7 -6.6568 -3.7107 15.9071 H 1 DIHW 0.0000 + 22 H8 -6.4954 -4.4308 12.1368 H 1 DIHW 0.0000 + 23 H9 -8.1950 -4.8957 12.0157 H 1 DIHW 0.0000 + 24 H3 -6.6200 -1.6847 12.4485 H 1 DIHW 0.0000 + 25 H10 -8.1877 -0.8672 12.4998 H 1 DIHW 0.0000 +@BOND + 1 1 15 1 + 2 2 15 1 + 3 3 15 1 + 4 4 6 2 + 5 4 7 2 + 6 4 8 1 + 7 4 9 1 + 8 5 14 2 + 9 8 10 1 + 10 8 14 am + 11 9 10 1 + 12 9 11 1 + 13 9 16 1 + 14 10 12 1 + 15 10 13 1 + 16 11 17 1 + 17 11 24 1 + 18 11 25 1 + 19 12 18 1 + 20 12 20 1 + 21 12 21 1 + 22 13 19 1 + 23 13 22 1 + 24 13 23 1 + 25 14 15 1 +@SUBSTRUCTURE + 1 DIHW 1 +@COMMENT +COMMENT 3,3,4-TRIMETHYL-2-TRICHLOROACETOXY-1,2-THIAZETIDINE-1,1-DIO +@MOLECULE +DIKGEJ + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -7.7141 -3.9600 12.6677 S.1 1 UNCH 1.3828 + 2 CL1 -11.7442 -6.0239 12.5902 CL 1 UNCH -0.2900 + 3 CL2 -11.2592 -6.3194 15.4392 CL 1 UNCH -0.2900 + 4 CL3 -12.3965 -3.8337 14.3898 CL 1 UNCH -0.2900 + 5 O1 -9.4398 -3.9689 15.0950 O.3 1 UNCH -0.4300 + 6 O2 -6.7178 -5.0046 12.7831 O.2 1 UNCH -0.6500 + 7 O3 -7.7513 -3.1212 11.4865 O.2 1 UNCH -0.6500 + 8 N1 -9.1634 -4.6162 12.8501 N.2 1 UNCH -0.6380 + 9 C1 -11.2538 -5.1686 14.0736 C.3 1 UNCH 0.9310 + 10 C2 -9.8437 -4.5700 13.9422 C.2 1 UNCH 0.5390 + 11 C3 -8.0661 -3.5709 15.3121 C.3 1 UNCH 0.2800 + 12 C4 -7.5442 -2.8710 14.0598 C.3 1 UNCH 0.1052 + 13 C5 -6.1158 -2.3393 14.1511 C.3 1 UNCH 0.0000 + 14 C6 -8.1361 -2.5743 16.4838 C.3 1 UNCH 0.0000 + 15 C7 -7.2850 -4.8030 15.7893 C.3 1 UNCH 0.0000 + 16 H71 -7.3651 -5.6421 15.0932 H 1 UNCH 0.0000 + 17 H51 -6.0164 -1.5894 14.9410 H 1 UNCH 0.0000 + 18 H61 -8.7000 -1.6778 16.2010 H 1 UNCH 0.0000 + 19 H52 -5.3923 -3.1377 14.3423 H 1 UNCH 0.0000 + 20 H53 -5.8231 -1.8600 13.2102 H 1 UNCH 0.0000 + 21 H62 -7.1431 -2.2685 16.8270 H 1 UNCH 0.0000 + 22 H72 -7.7035 -5.1777 16.7317 H 1 UNCH 0.0000 + 23 H63 -8.6698 -3.0114 17.3364 H 1 UNCH 0.0000 + 24 H73 -6.2277 -4.5809 15.9592 H 1 UNCH 0.0000 + 25 H4 -8.2083 -2.0273 13.8241 H 1 UNCH 0.0000 +@BOND + 1 1 6 2 + 2 1 7 2 + 3 1 8 1 + 4 1 12 1 + 5 2 9 1 + 6 3 9 1 + 7 4 9 1 + 8 5 10 1 + 9 5 11 1 + 10 8 10 2 + 11 9 10 1 + 12 11 12 1 + 13 11 14 1 + 14 11 15 1 + 15 12 13 1 + 16 12 25 1 + 17 13 17 1 + 18 13 19 1 + 19 13 20 1 + 20 14 18 1 + 21 14 21 1 + 22 14 23 1 + 23 15 16 1 + 24 15 22 1 + 25 15 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3,3-TRIMETHYL-6-TRICHLOROMETHYL-1,4,5-OXATHIAZIN-4,4-DIOX +@MOLECULE +DIKWID + 38 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -7.7533 -3.5910 13.7696 C.3 1 UNCH 0.5500 + 2 C2 -6.5054 -2.8818 13.2225 C.3 1 UNCH 0.0000 + 3 C3 -6.8487 -1.7844 12.2162 C.3 1 UNCH 0.0000 + 4 C4 -7.8212 -0.7700 12.8034 C.3 1 UNCH 0.0000 + 5 C5 -9.0981 -1.4439 13.2928 C.3 1 UNCH 0.0000 + 6 C6 -8.8015 -2.5483 14.3208 C.3 1 UNCH 0.2700 + 7 C7 -9.8434 -4.4392 15.4395 C.3 1 UNCH 0.2700 + 8 C8 -11.1750 -5.2035 15.5432 C.3 1 UNCH 0.0000 + 9 C9 -11.0165 -6.5209 16.2954 C.3 1 UNCH 0.0000 + 10 C10 -9.9424 -7.4020 15.6699 C.3 1 UNCH 0.0000 + 11 C11 -8.6035 -6.6719 15.5783 C.3 1 UNCH 0.0000 + 12 C12 -8.6983 -5.3436 14.8020 C.3 1 UNCH 0.5400 + 13 N1 -10.1062 -3.1730 14.6917 N.3 1 UNCH -0.9000 + 14 N2 -7.4367 -4.5665 14.8455 N.3 1 UNCH -0.6400 + 15 N3 -8.9414 -5.5624 13.3559 N.3 1 UNCH -0.7300 + 16 O1 -8.4124 -4.3321 12.7193 O.3 1 UNCH -0.1800 + 17 O2 -6.3757 -5.4431 14.3419 O.3 1 UNCH -0.3000 + 18 H12 -5.9352 -2.4404 14.0499 H 1 UNCH 0.0000 + 19 H22 -5.8470 -3.5973 12.7148 H 1 UNCH 0.0000 + 20 H13 -7.2825 -2.2316 11.3135 H 1 UNCH 0.0000 + 21 H23 -5.9298 -1.2736 11.9065 H 1 UNCH 0.0000 + 22 H14 -7.3430 -0.2388 13.6354 H 1 UNCH 0.0000 + 23 H24 -8.0701 -0.0186 12.0454 H 1 UNCH 0.0000 + 24 H15 -9.7551 -0.6858 13.7372 H 1 UNCH 0.0000 + 25 H25 -9.6345 -1.8578 12.4286 H 1 UNCH 0.0000 + 26 H6 -8.3857 -2.0727 15.2201 H 1 UNCH 0.0000 + 27 H7 -9.5351 -4.1588 16.4570 H 1 UNCH 0.0000 + 28 H18 -11.5780 -5.4103 14.5431 H 1 UNCH 0.0000 + 29 H28 -11.9207 -4.5867 16.0606 H 1 UNCH 0.0000 + 30 H19 -10.7583 -6.3152 17.3416 H 1 UNCH 0.0000 + 31 H29 -11.9725 -7.0566 16.3032 H 1 UNCH 0.0000 + 32 H110 -10.2627 -7.7245 14.6720 H 1 UNCH 0.0000 + 33 H210 -9.8212 -8.3102 16.2714 H 1 UNCH 0.0000 + 34 H111 -8.2399 -6.4740 16.5958 H 1 UNCH 0.0000 + 35 H211 -7.8715 -7.3474 15.1177 H 1 UNCH 0.0000 + 36 H1 -10.5279 -3.4778 13.8066 H 1 UNCH 0.3600 + 37 H3 -8.2298 -6.2241 13.0421 H 1 UNCH 0.3600 + 38 H2 -5.7217 -5.3853 15.0646 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 14 1 + 4 1 16 1 + 5 2 3 1 + 6 2 18 1 + 7 2 19 1 + 8 3 4 1 + 9 3 20 1 + 10 3 21 1 + 11 4 5 1 + 12 4 22 1 + 13 4 23 1 + 14 5 6 1 + 15 5 24 1 + 16 5 25 1 + 17 6 13 1 + 18 6 26 1 + 19 7 8 1 + 20 7 12 1 + 21 7 13 1 + 22 7 27 1 + 23 8 9 1 + 24 8 28 1 + 25 8 29 1 + 26 9 10 1 + 27 9 30 1 + 28 9 31 1 + 29 10 11 1 + 30 10 32 1 + 31 10 33 1 + 32 11 12 1 + 33 11 34 1 + 34 11 35 1 + 35 12 14 1 + 36 12 15 1 + 37 13 36 1 + 38 14 17 1 + 39 15 16 1 + 40 15 37 1 + 41 17 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 14-OXA-7,15,16-TRIAZATETRACYCLO(11.2.1.0-1,6-.0-8,13-)HEXAD +@MOLECULE +DIKYUR + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -5.6686 -3.4147 15.4547 CL 1 UNCH -0.2900 + 2 CL2 -7.0484 -5.3111 17.2794 CL 1 UNCH -0.2900 + 3 O1 -8.7660 -2.3647 16.3128 O.2 1 UNCH -0.5700 + 4 O2 -11.8071 -3.1047 14.3296 O.2 1 UNCH -0.5700 + 5 C1 -7.1843 -4.3287 15.7643 C.3 1 UNCH 0.6330 + 6 C2 -8.4690 -3.4189 15.7870 C.2 1 UNCH 0.4640 + 7 C3 -9.2245 -4.3930 14.8545 C.3 1 UNCH 0.1690 + 8 C4 -9.6697 -3.7678 13.6013 C.2 1 UNCH -0.1016 + 9 C5 -8.7566 -3.9208 12.6363 C.2 1 UNCH -0.2882 + 10 C6 -7.5528 -4.6946 13.0839 C.3 1 UNCH 0.1382 + 11 C7 -7.8529 -5.0697 14.5484 C.3 1 UNCH 0.0000 + 12 C8 -10.9621 -3.0850 13.4447 C.2 1 UNCH 0.4956 + 13 H3 -9.9579 -5.0251 15.3623 H 1 UNCH 0.0000 + 14 H5 -8.8597 -3.5504 11.6232 H 1 UNCH 0.1500 + 15 H61 -6.6461 -4.0968 12.9699 H 1 UNCH 0.0000 + 16 H62 -7.4483 -5.5973 12.4724 H 1 UNCH 0.0000 + 17 H7 -7.8650 -6.1624 14.6598 H 1 UNCH 0.0000 + 18 H8 -11.1289 -2.5794 12.4793 H 1 UNCH 0.0600 +@BOND + 1 1 5 1 + 2 2 5 1 + 3 3 6 2 + 4 4 12 2 + 5 5 6 1 + 6 5 11 1 + 7 6 7 1 + 8 7 8 1 + 9 7 11 1 + 10 7 13 1 + 11 8 9 2 + 12 8 12 1 + 13 9 10 1 + 14 9 14 1 + 15 10 11 1 + 16 10 15 1 + 17 10 16 1 + 18 11 17 1 + 19 12 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6,6-DICHLORO-2-FORMYL-BICYCLO(3.2.0)HEPT-2-EN-7-ONE (AT -10 +@MOLECULE +DILCOQ + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -9.4947 -5.6977 16.1749 N.3 1 UNCH -0.6550 + 2 C2 -10.4274 -6.3908 15.4799 C.2 1 UNCH 0.7010 + 3 O2 -10.9622 -7.4558 15.6907 O.2 1 UNCH -0.5700 + 4 C3 -10.5448 -5.3306 14.4915 C.2 1 UNCH -0.2400 + 5 C4 -9.7520 -4.4625 15.4466 C.3 1 UNCH 0.6209 + 6 O4 -8.6072 -3.8456 14.8442 O.3 1 UNCH -0.4079 + 7 C5 -7.8604 -3.0897 15.6938 C.2 1 UNCH 0.6590 + 8 O5 -8.1399 -2.9011 16.8708 O.2 1 UNCH -0.5700 + 9 C6 -6.6391 -2.5081 14.9784 C.3 1 UNCH 0.0610 + 10 C7 -5.8250 -1.6559 15.9646 C.3 1 UNCH 0.0000 + 11 C8 -7.1028 -1.6213 13.8151 C.3 1 UNCH 0.0000 + 12 C9 -5.7584 -3.6529 14.4607 C.3 1 UNCH 0.0000 + 13 C10 -11.1392 -5.1989 13.2930 C.2 1 UNCH -0.2454 + 14 C11 -11.8890 -6.3181 12.6198 C.3 1 UNCH 0.1382 + 15 C12 -11.1070 -3.9152 12.5080 C.3 1 UNCH 0.1382 + 16 H1 -9.4968 -5.8236 17.1751 H 1 UNCH 0.3700 + 17 H4 -10.3586 -3.7478 16.0190 H 1 UNCH 0.0000 + 18 H71 -6.4245 -0.8299 16.3648 H 1 UNCH 0.0000 + 19 H72 -4.9410 -1.2242 15.4820 H 1 UNCH 0.0000 + 20 H73 -5.4822 -2.2536 16.8172 H 1 UNCH 0.0000 + 21 H81 -6.2521 -1.1420 13.3180 H 1 UNCH 0.0000 + 22 H82 -7.6452 -2.1990 13.0580 H 1 UNCH 0.0000 + 23 H83 -7.7783 -0.8327 14.1662 H 1 UNCH 0.0000 + 24 H91 -5.4663 -4.3246 15.2762 H 1 UNCH 0.0000 + 25 H92 -6.2826 -4.2594 13.7135 H 1 UNCH 0.0000 + 26 H93 -4.8443 -3.2701 13.9934 H 1 UNCH 0.0000 + 27 H111 -11.8790 -7.2422 13.2046 H 1 UNCH 0.0000 + 28 H112 -12.9348 -6.0329 12.4652 H 1 UNCH 0.0000 + 29 H113 -11.4423 -6.5390 11.6448 H 1 UNCH 0.0000 + 30 H121 -10.5789 -3.1171 13.0390 H 1 UNCH 0.0000 + 31 H122 -10.6025 -4.0699 11.5487 H 1 UNCH 0.0000 + 32 H123 -12.1257 -3.5647 12.3126 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 5 1 + 3 1 16 1 + 4 2 3 2 + 5 2 4 1 + 6 4 5 1 + 7 4 13 2 + 8 5 6 1 + 9 5 17 1 + 10 6 7 1 + 11 7 8 2 + 12 7 9 1 + 13 9 10 1 + 14 9 11 1 + 15 9 12 1 + 16 10 18 1 + 17 10 19 1 + 18 10 20 1 + 19 11 21 1 + 20 11 22 1 + 21 11 23 1 + 22 12 24 1 + 23 12 25 1 + 24 12 26 1 + 25 13 14 1 + 26 13 15 1 + 27 14 27 1 + 28 14 28 1 + 29 14 29 1 + 30 15 30 1 + 31 15 31 1 + 32 15 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-((2,2-DIMETHYLPROPANOYL)OXY)-3-(1-METHYL-ETHYLIDENE)-2-AZ +@MOLECULE +DIMYIH10 + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -8.0440 -4.8226 14.1285 C.2 1 UNCH -0.0220 + 2 C3 -6.8920 -4.0755 14.2914 C.2 1 UNCH 0.0790 + 3 C4 -6.0029 -4.6353 15.2661 C.2 1 UNCH -0.1500 + 4 C5 -6.5432 -5.7633 15.8427 C.2 1 UNCH 0.1200 + 5 C6 -10.5926 -3.6092 13.8054 C.2 1 UNCH -0.0090 + 6 C7 -11.4100 -4.1288 14.8152 C.2 1 UNCH -0.1500 + 7 C8 -12.3452 -3.3009 15.4359 C.2 1 UNCH -0.1500 + 8 C9 -12.4684 -1.9680 15.0411 C.2 1 UNCH -0.1500 + 9 C10 -11.6649 -1.4603 14.0191 C.2 1 UNCH -0.1500 + 10 C11 -10.7286 -2.2820 13.3916 C.2 1 UNCH -0.1500 + 11 N1 -6.6242 -2.8729 13.5559 N.2 1 UNCH 0.9610 + 12 N2 -5.9410 -6.5731 16.8724 N.2 1 UNCH 0.9600 + 13 O1 -7.5231 -2.0267 13.5398 O.3 1 UNCH -0.5200 + 14 O2 -5.4922 -2.7644 13.0752 O.2 1 UNCH -0.5200 + 15 O3 -4.8188 -6.2183 17.2545 O.3 1 UNCH -0.5200 + 16 O4 -6.5771 -7.5419 17.3023 O.2 1 UNCH -0.5200 + 17 O5 -10.0086 -5.9919 12.9022 O.2 1 UNCH -0.6500 + 18 O6 -8.8638 -4.0068 11.8522 O.2 1 UNCH -0.6500 + 19 S1 -8.0746 -6.1488 15.2204 S.3 1 UNCH -0.0800 + 20 S2 -9.4213 -4.6717 13.0118 S.1 1 UNCH 1.3710 + 21 H4 -5.0354 -4.2185 15.5305 H 1 UNCH 0.1500 + 22 H7 -11.3396 -5.1724 15.1145 H 1 UNCH 0.1500 + 23 H8 -12.9869 -3.6949 16.2208 H 1 UNCH 0.1500 + 24 H9 -13.2010 -1.3247 15.5237 H 1 UNCH 0.1500 + 25 H10 -11.7720 -0.4235 13.7077 H 1 UNCH 0.1500 + 26 H11 -10.1140 -1.8756 12.5903 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 19 1 + 3 1 20 1 + 4 2 3 1 + 5 2 11 1 + 6 3 4 2 + 7 3 21 1 + 8 4 12 1 + 9 4 19 1 + 10 5 6 2 + 11 5 10 1 + 12 5 20 1 + 13 6 7 1 + 14 6 22 1 + 15 7 8 2 + 16 7 23 1 + 17 8 9 1 + 18 8 24 1 + 19 9 10 2 + 20 9 25 1 + 21 10 26 1 + 22 11 13 1 + 23 11 14 2 + 24 12 15 1 + 25 12 16 2 + 26 17 20 2 + 27 18 20 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-PHENYLSULFONYL-3,5-DINITROTHIOPHENE +@MOLECULE +DIPDAH10 + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O41 -12.6776 -4.7446 13.8029 O.2 1 UNCH -0.5700 + 2 O21 -8.9952 -1.9978 13.7937 O.3 1 UNCH -0.4300 + 3 O11 -6.5690 -4.2778 14.0727 O.3 1 UNCH -0.5600 + 4 O31 -5.4647 -1.3333 14.0553 O.3 1 UNCH -0.6800 + 5 O51 -8.4583 -3.4957 16.2815 O.3 1 UNCH -0.6800 + 6 N11 -8.7992 -4.1735 13.2393 N.3 1 UNCH -0.5191 + 7 N31 -10.9177 -3.2712 13.8235 N.2 1 UNCH -0.6610 + 8 C11 -8.3620 -6.5502 12.6217 C.3 1 UNCH 0.1382 + 9 C21 -9.6509 -3.1806 13.6289 C.2 1 UNCH 0.6500 + 10 C41 -11.4825 -4.5147 13.6419 C.2 1 UNCH 0.7666 + 11 C51 -10.6029 -5.6506 13.2222 C.2 1 UNCH -0.1356 + 12 C61 -9.2885 -5.4469 13.0353 C.2 1 UNCH -0.0382 + 13 C12 -7.4565 -3.6815 13.1222 C.3 1 UNCH 0.6491 + 14 C22 -7.6189 -2.2014 13.4337 C.3 1 UNCH 0.2800 + 15 C32 -6.6578 -1.9496 14.5796 C.3 1 UNCH 0.2800 + 16 C42 -6.3077 -3.3329 15.1304 C.3 1 UNCH 0.2800 + 17 C52 -7.0669 -3.7320 16.4020 C.3 1 UNCH 0.2800 + 18 H11 -7.6129 -6.7355 13.3980 H 1 UNCH 0.0000 + 19 H21 -8.8986 -7.4896 12.4498 H 1 UNCH 0.0000 + 20 H31 -7.8463 -6.2908 11.6914 H 1 UNCH 0.0000 + 21 H51 -11.0907 -6.6072 13.0928 H 1 UNCH 0.1500 + 22 H12 -7.0475 -3.8419 12.1188 H 1 UNCH 0.0000 + 23 H22 -7.4112 -1.5762 12.5583 H 1 UNCH 0.0000 + 24 H32 -7.0548 -1.2748 15.3434 H 1 UNCH 0.0000 + 25 H42 -5.2365 -3.4115 15.3502 H 1 UNCH 0.0000 + 26 H52 -6.7003 -3.1499 17.2534 H 1 UNCH 0.0000 + 27 H520 -6.9224 -4.7976 16.6072 H 1 UNCH 0.0000 + 28 H322 -4.9507 -1.9984 13.5637 H 1 UNCH 0.4000 + 29 H522 -8.8910 -3.8207 17.0907 H 1 UNCH 0.4000 +@BOND + 1 1 10 2 + 2 2 9 1 + 3 2 14 1 + 4 3 13 1 + 5 3 16 1 + 6 4 15 1 + 7 4 28 1 + 8 5 17 1 + 9 5 29 1 + 10 6 9 am + 11 6 12 1 + 12 6 13 1 + 13 7 9 2 + 14 7 10 am + 15 8 12 1 + 16 8 18 1 + 17 8 19 1 + 18 8 20 1 + 19 10 11 1 + 20 11 12 2 + 21 11 21 1 + 22 13 14 1 + 23 13 22 1 + 24 14 15 1 + 25 14 23 1 + 26 15 16 1 + 27 15 24 1 + 28 16 17 1 + 29 16 25 1 + 30 17 26 1 + 31 17 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2'-ANHYDRO-1-BETA-D-ARABINOFURANOSYL-6-METHYLURACIL HEMIH +@MOLECULE +DIPDIP10 + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N7 -8.5118 -4.7595 15.3603 N.3 1 DIPD -0.8667 + 2 N8 -10.1633 -3.6507 16.1102 N.2 1 DIPD -0.8667 + 3 N9 -9.2684 -5.3007 17.5350 N.3 1 DIPD -0.8367 + 4 N10 -9.4978 -4.4029 11.2113 N.3 1 DIPD -0.8530 + 5 C13 -9.3118 -4.6115 16.4059 C.2 1 DIPD 1.0700 + 6 C14 -9.8677 -3.1061 14.8832 C.2 1 DIPD 0.2000 + 7 C15 -8.8102 -3.8249 14.3700 C.2 1 DIPD 0.1820 + 8 C16 -8.0252 -3.6760 13.1160 C.3 1 DIPD 0.1680 + 9 C17 -8.3204 -4.7432 12.0591 C.3 1 DIPD 0.5030 + 10 H5 -7.7335 -5.4117 15.3598 H 1 DIPD 0.4500 + 11 H6 -10.8890 -3.3178 16.7391 H 1 DIPD 0.4500 + 12 H7 -9.9180 -5.1103 18.2898 H 1 DIPD 0.4500 + 13 H8 -8.5742 -6.0192 17.6997 H 1 DIPD 0.4500 + 14 H9 -10.4468 -2.2609 14.5498 H 1 DIPD 0.1500 + 15 H10 -6.9684 -3.7490 13.4009 H 1 DIPD 0.0000 + 16 H11 -8.1782 -2.6695 12.7101 H 1 DIPD 0.0000 + 17 H14 -9.6100 -5.1107 10.4659 H 1 DIPD 0.4500 + 18 H15 -9.3891 -3.5058 10.7130 H 1 DIPD 0.4500 + 19 H16 -10.3948 -4.3866 11.7148 H 1 DIPD 0.4500 + 20 H17 -8.5162 -5.7282 12.4942 H 1 DIPD 0.0000 + 21 H18 -7.4792 -4.8211 11.3633 H 1 DIPD 0.0000 +@BOND + 1 1 10 1 + 2 1 7 1 + 3 1 5 am + 4 2 11 1 + 5 2 6 1 + 6 2 5 2 + 7 3 13 1 + 8 3 12 1 + 9 3 5 am + 10 4 19 1 + 11 4 18 1 + 12 4 17 1 + 13 4 9 1 + 14 6 14 1 + 15 6 7 2 + 16 7 8 1 + 17 8 16 1 + 18 8 15 1 + 19 8 9 1 + 20 9 21 1 + 21 9 20 1 +@SUBSTRUCTURE + 1 DIPD 1 +@COMMENT +COMMENT 2-(2-AMINO-4-IMIDAZOLYL)ETHYLAMINE DIPICRATE MONOHYDRATE (H +@MOLECULE +DIRMIA + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -8.4740 -3.8401 13.6658 S.1 1 UNCH 1.3328 + 2 O1 -8.3756 -4.3542 12.3187 O.2 1 UNCH -0.6500 + 3 O2 -7.8394 -2.6030 14.0712 O.2 1 UNCH -0.6500 + 4 O3 -7.9765 -4.5545 16.0650 O.3 1 UNCH -0.3170 + 5 N1 -7.9026 -5.0537 14.7132 N.3 1 UNCH -0.6410 + 6 C1 -10.1970 -3.7665 14.1127 C.3 1 UNCH 0.1052 + 7 H1 -8.3577 -5.9617 14.5859 H 1 UNCH 0.4200 + 8 H2 -10.6781 -3.0288 13.4665 H 1 UNCH 0.0000 + 9 H3 -10.6462 -4.7481 13.9513 H 1 UNCH 0.0000 + 10 H4 -10.2875 -3.4574 15.1552 H 1 UNCH 0.0000 + 11 H5 -7.3883 -3.7660 16.0710 H 1 UNCH 0.4000 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 5 1 + 4 1 6 1 + 5 4 5 1 + 6 4 11 1 + 7 5 7 1 + 8 6 8 1 + 9 6 9 1 + 10 6 10 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYLSULFONYL-HYDROXYLAMINE (AT 160 DEG.K) N-MESYLHYDROXYL +@MOLECULE +DISHES + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -6.7903 -7.8053 13.2029 O.2 1 DISH -0.5700 + 2 N1 -8.8147 -2.8417 13.6821 N.2 1 DISH -0.6960 + 3 C1 -8.3879 -4.0535 13.6165 C.2 1 DISH 0.4212 + 4 C2 -7.2011 -4.3108 12.7668 C.2 1 DISH -0.1356 + 5 C3 -6.6778 -5.5298 12.6293 C.2 1 DISH -0.1356 + 6 C4 -7.2647 -6.6834 13.3241 C.2 1 DISH 0.5412 + 7 C5 -8.4451 -6.4421 14.1723 C.2 1 DISH -0.1356 + 8 C6 -8.9904 -5.2265 14.3274 C.2 1 DISH 0.0144 + 9 C7 -10.1539 -4.9518 15.1555 C.2 1 DISH -0.1382 + 10 C8 -10.5997 -3.6866 15.2241 C.2 1 DISH -0.2882 + 11 C9 -9.9856 -2.5110 14.5039 C.3 1 DISH 0.3842 + 12 C10 -10.8345 -6.0581 15.9116 C.3 1 DISH 0.1382 + 13 C11 -9.5294 -1.4682 15.5330 C.3 1 DISH 0.0000 + 14 C12 -11.0292 -1.8900 13.5658 C.3 1 DISH 0.0000 + 15 H2 -6.7765 -3.4519 12.2589 H 1 DISH 0.1500 + 16 H3 -5.8109 -5.7213 12.0094 H 1 DISH 0.1500 + 17 H5 -8.8314 -7.3303 14.6572 H 1 DISH 0.1500 + 18 H8 -11.4695 -3.4606 15.8388 H 1 DISH 0.1500 + 19 H111 -8.7618 -1.8796 16.1996 H 1 DISH 0.0000 + 20 H211 -9.0920 -0.5918 15.0402 H 1 DISH 0.0000 + 21 H311 -10.3632 -1.1211 16.1542 H 1 DISH 0.0000 + 22 H110 -11.2088 -6.8247 15.2247 H 1 DISH 0.0000 + 23 H210 -10.1437 -6.5252 16.6217 H 1 DISH 0.0000 + 24 H310 -11.6923 -5.6930 16.4873 H 1 DISH 0.0000 + 25 H112 -10.6186 -1.0212 13.0379 H 1 DISH 0.0000 + 26 H212 -11.9192 -1.5587 14.1133 H 1 DISH 0.0000 + 27 H312 -11.3519 -2.6081 12.8022 H 1 DISH 0.0000 +@BOND + 1 1 6 2 + 2 2 3 2 + 3 2 11 1 + 4 3 4 1 + 5 3 8 1 + 6 4 5 2 + 7 4 15 1 + 8 5 6 1 + 9 5 16 1 + 10 6 7 1 + 11 7 8 2 + 12 7 17 1 + 13 8 9 1 + 14 9 10 2 + 15 9 12 1 + 16 10 11 1 + 17 10 18 1 + 18 11 13 1 + 19 11 14 1 + 20 12 22 1 + 21 12 23 1 + 22 12 24 1 + 23 13 19 1 + 24 13 20 1 + 25 13 21 1 + 26 14 25 1 + 27 14 26 1 + 28 14 27 1 +@SUBSTRUCTURE + 1 DISH 1 +@COMMENT +COMMENT 2,6-DIHYDRO-6-OXO-2,2,4-TRIMETHYLQUINOLINE +@MOLECULE +DISJOE + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -10.8507 -4.5508 12.7497 CL 1 DISJ -0.1400 + 2 O1 -11.8940 -3.1437 15.5976 O.2 1 DISJ -0.5200 + 3 O2 -11.7615 -5.3253 15.8721 O.3 1 DISJ -0.5200 + 4 O3 -8.5945 -4.0104 15.9559 O.3 1 DISJ -0.8500 + 5 O4 -8.1430 -4.2736 13.6466 O.3 1 DISJ -0.3567 + 6 N1 -11.3559 -4.2487 15.3943 N.2 1 DISJ 0.8356 + 7 C1 -10.3134 -4.3129 14.3809 C.2 1 DISJ 0.3444 + 8 C2 -9.0154 -4.1851 14.7705 C.2 1 DISJ -0.0733 + 9 C3 -6.7496 -4.1514 13.9455 C.3 1 DISJ 0.2800 + 10 C4 -5.9843 -4.2693 12.6392 C.3 1 DISJ 0.0000 + 11 H3 -6.5381 -3.1740 14.3950 H 1 DISJ 0.0000 + 12 H4 -6.2960 -3.4880 11.9380 H 1 DISJ 0.0000 + 13 H5 -4.9074 -4.1826 12.8089 H 1 DISJ 0.0000 + 14 H3F -6.4300 -4.9552 14.6191 H 1 DISJ 0.0000 + 15 H4F -6.1903 -5.2308 12.1573 H 1 DISJ 0.0000 +@BOND + 1 1 7 1 + 2 2 6 2 + 3 3 6 1 + 4 4 8 1 + 5 5 8 1 + 6 5 9 1 + 7 6 7 1 + 8 7 8 2 + 9 9 10 1 + 10 9 11 1 + 11 9 14 1 + 12 10 12 1 + 13 10 13 1 + 14 10 15 1 +@SUBSTRUCTURE + 1 DISJ 1 +@COMMENT +COMMENT DIMETHYLAMMONIUM 1-CHLORO-1-NITRO-ETHYL ACETATE +@MOLECULE +DITRAZ + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.3178 -3.2786 13.0049 S.3 1 DITR -0.3610 + 2 C1 -9.7223 -3.7926 14.6103 C.2 1 DITR 0.8398 + 3 N1 -10.4976 -2.9763 15.2861 N.2 1 DITR -0.7544 + 4 N2 -9.3110 -4.9482 15.1347 N.3 1 DITR -0.5274 + 5 N3 -8.4876 -5.7947 14.3974 N.3 1 DITR -0.4970 + 6 C2 -7.7022 -2.5294 13.3237 C.3 1 DITR 0.2300 + 7 H1 -10.8163 -3.1623 16.2251 H 1 DITR 0.4500 + 8 H2 -10.8009 -2.1255 14.8256 H 1 DITR 0.4500 + 9 H33 -9.5850 -5.1712 16.0905 H 1 DITR 0.4500 + 10 H4 -8.6431 -5.7009 13.3878 H 1 DITR 0.3600 + 11 H5 -8.5930 -6.7720 14.6825 H 1 DITR 0.3600 + 12 H6 -7.0027 -3.2741 13.7116 H 1 DITR 0.0000 + 13 H7 -7.8000 -1.7164 14.0481 H 1 DITR 0.0000 + 14 H8 -7.3005 -2.1231 12.3919 H 1 DITR 0.0000 +@BOND + 1 1 6 1 + 2 1 2 1 + 3 2 4 am + 4 2 3 2 + 5 3 8 1 + 6 3 7 1 + 7 4 9 1 + 8 4 5 1 + 9 5 11 1 + 10 5 10 1 + 11 6 14 1 + 12 6 13 1 + 13 6 12 1 +@SUBSTRUCTURE + 1 DITR 1 +@COMMENT +COMMENT S-METHYL-ISOTHIOSEMICARBAZIDE NITRATE +@MOLECULE +DITYAG10 + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -14.3932 -3.9139 14.6087 CL 1 UNCH -0.1770 + 2 O1 -8.1243 -5.5747 13.0330 O.2 1 UNCH -0.5700 + 3 C1 -9.9497 -4.3810 13.9174 C.2 1 UNCH 0.0862 + 4 C2 -10.4460 -3.2591 14.5944 C.2 1 UNCH -0.1500 + 5 C3 -11.8224 -3.1178 14.8067 C.2 1 UNCH -0.1500 + 6 C4 -12.7036 -4.0939 14.3442 C.2 1 UNCH 0.1770 + 7 C5 -12.2225 -5.2127 13.6695 C.2 1 UNCH -0.1500 + 8 C6 -10.8484 -5.3555 13.4565 C.2 1 UNCH -0.1500 + 9 C7 -8.4895 -4.5838 13.6624 C.2 1 UNCH 0.4228 + 10 C8 -7.5050 -3.5552 14.1888 C.3 1 UNCH 0.0610 + 11 C9 -6.0472 -3.8917 13.8934 C.3 1 UNCH 0.0000 + 12 C10 -5.4082 -5.0569 14.6974 C.3 1 UNCH 0.0000 + 13 C11 -4.1094 -4.2261 14.7283 C.3 1 UNCH 0.0000 + 14 C12 -4.9920 -2.9721 14.5645 C.3 1 UNCH 0.0000 + 15 H2 -9.7886 -2.4788 14.9663 H 1 UNCH 0.1500 + 16 H3 -12.1999 -2.2442 15.3328 H 1 UNCH 0.1500 + 17 H5 -12.9057 -5.9763 13.3065 H 1 UNCH 0.1500 + 18 H6 -10.4816 -6.2341 12.9273 H 1 UNCH 0.1500 + 19 H81 -7.7412 -2.5921 13.7216 H 1 UNCH 0.0000 + 20 H82 -7.6485 -3.4655 15.2719 H 1 UNCH 0.0000 + 21 H9 -5.8694 -3.9848 12.8117 H 1 UNCH 0.0000 + 22 H101 -5.8475 -5.2207 15.6885 H 1 UNCH 0.0000 + 23 H102 -5.3426 -6.0148 14.1751 H 1 UNCH 0.0000 + 24 H111 -3.5294 -4.2831 15.6526 H 1 UNCH 0.0000 + 25 H112 -3.4458 -4.4130 13.8763 H 1 UNCH 0.0000 + 26 H121 -5.3091 -2.5333 15.5179 H 1 UNCH 0.0000 + 27 H122 -4.5790 -2.1830 13.9309 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 2 9 2 + 3 3 4 2 + 4 3 8 1 + 5 3 9 1 + 6 4 5 1 + 7 4 15 1 + 8 5 6 2 + 9 5 16 1 + 10 6 7 1 + 11 7 8 2 + 12 7 17 1 + 13 8 18 1 + 14 9 10 1 + 15 10 11 1 + 16 10 19 1 + 17 10 20 1 + 18 11 12 1 + 19 11 14 1 + 20 11 21 1 + 21 12 13 1 + 22 12 22 1 + 23 12 23 1 + 24 13 14 1 + 25 13 24 1 + 26 13 25 1 + 27 14 26 1 + 28 14 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(4-CHLOROPHENYL)-2-CYCLOBUTYLETHANONE ALPHA-CYCLOBUTYL-4- +@MOLECULE +DIVJUN + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -7.9141 -4.4740 14.9704 C.2 1 DIVJ 0.6010 + 2 C3 -9.0470 -4.1224 14.0799 C.2 1 DIVJ 0.6988 + 3 C5 -7.7368 -4.6796 12.0254 C.3 1 DIVJ 0.4895 + 4 C6 -6.4535 -4.2255 12.7002 C.3 1 DIVJ 0.2300 + 5 C10 -11.4074 -3.3169 14.0913 C.3 1 DIVJ 0.4895 + 6 N4 -8.9345 -4.2095 12.7587 N.2 1 DIVJ -0.7939 + 7 N7 -8.1812 -4.3978 16.2494 N.2 1 DIVJ -0.5130 + 8 N9 -10.1486 -3.7225 14.7030 N.3 1 DIVJ -0.7939 + 9 O8 -7.0838 -4.7350 17.0542 O.3 1 DIVJ -0.3370 + 10 S1 -6.3281 -4.9608 14.3475 S.3 1 DIVJ -0.3710 + 11 H4 -9.7435 -3.9665 12.2017 H 1 DIVJ 0.4500 + 12 H8 -7.4221 -4.6544 17.9673 H 1 DIVJ 0.4000 + 13 H9 -10.0651 -3.7227 15.7247 H 1 DIVJ 0.4500 + 14 H31 -7.7953 -5.7699 11.9340 H 1 DIVJ 0.0000 + 15 H52 -7.7885 -4.2577 11.0161 H 1 DIVJ 0.0000 + 16 H61 -6.4315 -3.1349 12.7956 H 1 DIVJ 0.0000 + 17 H62 -5.5852 -4.5335 12.1103 H 1 DIVJ 0.0000 + 18 H101 -11.8220 -4.1509 13.5193 H 1 DIVJ 0.0000 + 19 H102 -11.2369 -2.4586 13.4363 H 1 DIVJ 0.0000 + 20 H103 -12.1104 -3.0350 14.8792 H 1 DIVJ 0.0000 +@BOND + 1 1 10 1 + 2 1 7 2 + 3 1 2 1 + 4 2 8 am + 5 2 6 2 + 6 3 15 1 + 7 3 14 1 + 8 3 6 1 + 9 3 4 1 + 10 4 17 1 + 11 4 16 1 + 12 4 10 1 + 13 5 20 1 + 14 5 19 1 + 15 5 18 1 + 16 5 8 1 + 17 6 11 1 + 18 7 9 1 + 19 8 13 1 + 20 9 12 1 +@SUBSTRUCTURE + 1 DIVJ 1 +@COMMENT +COMMENT 5,6-DIHYDRO-3-DIMETHYLAMINO-2H-1,4-THIAZIN-2-ONE-OXIME HYDR +@MOLECULE +DIVTUX + 25 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.9975 -3.8121 15.6587 O.3 1 UNCH -0.6800 + 2 O2 -6.8925 -4.4839 14.8502 O.3 1 UNCH -0.3404 + 3 C1 -7.8892 -5.2528 14.3039 C.2 1 UNCH 0.0825 + 4 C2 -7.4877 -6.1715 13.3328 C.2 1 UNCH -0.1500 + 5 C3 -8.4275 -7.0023 12.7261 C.2 1 UNCH -0.1500 + 6 C4 -9.7666 -6.9197 13.0988 C.2 1 UNCH -0.1500 + 7 C5 -10.1638 -6.0079 14.0795 C.2 1 UNCH -0.1500 + 8 C6 -9.2303 -5.1552 14.6904 C.2 1 UNCH -0.1435 + 9 C7 -9.6367 -4.2174 15.7951 C.3 1 UNCH 0.4235 + 10 C8 -8.7633 -2.9798 15.7940 C.3 1 UNCH 0.0000 + 11 C9 -8.7347 -2.0490 14.5523 C.3 1 UNCH 0.0000 + 12 C10 -7.2071 -1.9724 14.7150 C.3 1 UNCH 0.0000 + 13 C11 -7.2697 -3.2758 15.5476 C.3 1 UNCH 0.2579 + 14 H2 -6.4413 -6.2355 13.0480 H 1 UNCH 0.1500 + 15 H3 -8.1151 -7.7136 11.9665 H 1 UNCH 0.1500 + 16 H4 -10.5037 -7.5672 12.6313 H 1 UNCH 0.1500 + 17 H5 -11.2123 -5.9622 14.3676 H 1 UNCH 0.1500 + 18 H7 -9.5403 -4.7542 16.7466 H 1 UNCH 0.0000 + 19 H8 -8.9164 -2.4032 16.7189 H 1 UNCH 0.0000 + 20 H91 -9.2647 -1.0994 14.6679 H 1 UNCH 0.0000 + 21 H92 -9.0520 -2.5121 13.6116 H 1 UNCH 0.0000 + 22 H101 -6.8637 -1.1036 15.2880 H 1 UNCH 0.0000 + 23 H102 -6.6386 -2.0274 13.7825 H 1 UNCH 0.0000 + 24 H11 -6.6715 -3.2070 16.4645 H 1 UNCH 0.0000 + 25 H1 -11.2189 -3.2844 16.4437 H 1 UNCH 0.4000 +@BOND + 1 1 25 1 + 2 1 9 1 + 3 2 13 1 + 4 2 3 1 + 5 3 8 1 + 6 3 4 2 + 7 4 14 1 + 8 4 5 1 + 9 5 15 1 + 10 5 6 2 + 11 6 16 1 + 12 6 7 1 + 13 7 17 1 + 14 7 8 2 + 15 8 9 1 + 16 9 18 1 + 17 9 10 1 + 18 10 19 1 + 19 10 13 1 + 20 10 11 1 + 21 11 21 1 + 22 11 20 1 + 23 11 12 1 + 24 12 23 1 + 25 12 22 1 + 26 12 13 1 + 27 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-OXATRICYCLO(6.4.0.0-3,6-)DODECA-1(12),8,10-TRIEN-7-OL +@MOLECULE +DIVVEJ + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.3136 -4.7915 12.2891 O.2 1 DIVV -0.5700 + 2 C1 -9.8103 -4.7799 13.4005 C.2 1 DIVV 0.9730 + 3 C2 -7.8895 -3.7731 14.4950 C.2 1 DIVV 1.2000 + 4 N1 -11.0413 -5.2302 13.6988 N.3 1 DIVV -0.8000 + 5 N2 -9.1275 -4.2814 14.5108 N.3 1 DIVV -0.8597 + 6 N3 -7.3423 -3.3251 15.6330 N.3 1 DIVV -0.9667 + 7 N4 -7.1718 -3.6952 13.3742 N.2 1 DIVV -0.9667 + 8 H1 -11.5903 -5.6063 12.9331 H 1 DIVV 0.3700 + 9 H2 -11.4738 -5.2313 14.6093 H 1 DIVV 0.3700 + 10 H3 -9.6107 -4.3095 15.3902 H 1 DIVV 0.4500 + 11 H4 -7.8288 -3.3533 16.5192 H 1 DIVV 0.4500 + 12 H5 -6.4065 -2.9373 15.6394 H 1 DIVV 0.4500 + 13 H7 -7.5860 -4.0363 12.5026 H 1 DIVV 0.4500 + 14 H8 -6.2366 -3.3173 13.3315 H 1 DIVV 0.4500 +@BOND + 1 1 2 2 + 2 2 4 am + 3 2 5 am + 4 3 5 am + 5 3 6 am + 6 3 7 2 + 7 4 8 1 + 8 4 9 1 + 9 5 10 1 + 10 6 11 1 + 11 6 12 1 + 12 7 13 1 + 13 7 14 1 +@SUBSTRUCTURE + 1 DIVV 1 +@COMMENT +COMMENT 1-CARBAMOYLGUANIDINIUM PERCHLORATE +@MOLECULE +DIVWEK + 34 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.2095 9.9708 -1.8032 O.3 1 UNCH -0.1534 + 2 C2 -0.3781 9.3435 -0.7369 C.2 1 UNCH 0.0911 + 3 C3 -1.6623 10.0117 -0.4420 C.2 1 UNCH 0.5412 + 4 C4 -1.7951 11.0925 -1.4567 C.2 1 UNCH -0.0140 + 5 C5 -0.6649 10.9981 -2.1825 C.2 1 UNCH 0.0911 + 6 C20 0.1072 8.3103 -0.0364 C.2 1 UNCH -0.1784 + 7 C21 1.3863 7.6305 -0.2800 C.2 1 UNCH 0.0284 + 8 C22 2.1273 7.1798 0.8211 C.2 1 UNCH -0.1500 + 9 C23 3.3351 6.5014 0.6387 C.2 1 UNCH -0.1500 + 10 C24 3.8094 6.2559 -0.6475 C.2 1 UNCH -0.1500 + 11 C25 3.0741 6.6833 -1.7507 C.2 1 UNCH -0.1500 + 12 C26 1.8659 7.3618 -1.5684 C.2 1 UNCH -0.1500 + 13 O30 -2.4407 9.7336 0.4492 O.2 1 UNCH -0.5700 + 14 C41 -2.9344 12.0066 -1.5328 C.2 1 UNCH 0.0284 + 15 C42 -3.3868 12.6624 -0.3789 C.2 1 UNCH -0.1500 + 16 C43 -4.4879 13.5209 -0.4301 C.2 1 UNCH -0.1500 + 17 C44 -5.1544 13.7292 -1.6347 C.2 1 UNCH -0.1500 + 18 C45 -4.7243 13.0751 -2.7865 C.2 1 UNCH -0.1500 + 19 C46 -3.6243 12.2145 -2.7349 C.2 1 UNCH -0.1500 + 20 C50 -0.2691 11.8857 -3.2940 C.2 1 UNCH 0.7056 + 21 O51 -0.8314 12.8898 -3.6861 O.2 1 UNCH -0.5700 + 22 O52 0.8604 11.4558 -3.8869 O.3 1 UNCH -0.6500 + 23 H52 1.0317 12.1207 -4.5859 H 1 UNCH 0.5000 + 24 H23 3.9035 6.1641 1.5016 H 1 UNCH 0.1500 + 25 H25 3.4375 6.4854 -2.7559 H 1 UNCH 0.1500 + 26 H42 -2.8907 12.5075 0.5776 H 1 UNCH 0.1500 + 27 H26 1.3050 7.6681 -2.4479 H 1 UNCH 0.1500 + 28 H20 -0.4674 7.9370 0.8101 H 1 UNCH 0.1500 + 29 H22 1.7749 7.3593 1.8347 H 1 UNCH 0.1500 + 30 H46 -3.3154 11.7131 -3.6492 H 1 UNCH 0.1500 + 31 H44 -6.0107 14.3973 -1.6752 H 1 UNCH 0.1500 + 32 H24 4.7484 5.7276 -0.7904 H 1 UNCH 0.1500 + 33 H45 -5.2442 13.2337 -3.7278 H 1 UNCH 0.1500 + 34 H43 -4.8263 14.0223 0.4730 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 1 + 4 2 6 2 + 5 3 4 1 + 6 3 13 2 + 7 4 5 2 + 8 4 14 1 + 9 5 20 1 + 10 6 7 1 + 11 6 28 1 + 12 7 8 1 + 13 7 12 2 + 14 8 9 2 + 15 8 29 1 + 16 9 10 1 + 17 9 24 1 + 18 10 11 2 + 19 10 32 1 + 20 11 12 1 + 21 11 25 1 + 22 12 27 1 + 23 14 15 2 + 24 14 19 1 + 25 15 16 1 + 26 15 26 1 + 27 16 17 2 + 28 16 34 1 + 29 17 18 1 + 30 17 31 1 + 31 18 19 2 + 32 18 33 1 + 33 19 30 1 + 34 20 21 2 + 35 20 22 1 + 36 22 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-BENZYLIDENE-4,5-DIHYDRO-4-OXO-3-PHENYLFURAN-2-CARBOXYLIC +@MOLECULE +DIWCOB + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -9.2263 -4.6997 14.9082 C.2 1 DIWC 1.2000 + 2 N1 -8.2200 -4.7776 15.8456 N.2 1 DIWC -0.7017 + 3 N2 -7.0188 -5.4241 15.5330 N.3 1 DIWC -0.5350 + 4 N3 -9.0666 -5.2932 13.6756 N.3 1 DIWC -0.7017 + 5 N4 -10.0797 -5.1980 12.7147 N.3 1 DIWC -0.5350 + 6 N5 -10.4002 -4.0458 15.2108 N.3 1 DIWC -0.7017 + 7 N6 -10.5566 -3.4250 16.4553 N.3 1 DIWC -0.5350 + 8 H2 -8.4355 -4.5796 16.8222 H 1 DIWC 0.4500 + 9 H3 -6.5599 -4.9423 14.7512 H 1 DIWC 0.3600 + 10 H4 -6.3796 -5.3693 16.3351 H 1 DIWC 0.3600 + 11 H5 -8.3305 -5.9876 13.5509 H 1 DIWC 0.4500 + 12 H6 -9.7849 -5.6768 11.8552 H 1 DIWC 0.3600 + 13 H7 -10.2336 -4.2128 12.4707 H 1 DIWC 0.3600 + 14 H8 -11.2247 -4.2149 14.6355 H 1 DIWC 0.4500 + 15 H9 -11.4774 -2.9723 16.5008 H 1 DIWC 0.3600 + 16 H10 -9.8536 -2.6847 16.5634 H 1 DIWC 0.3600 +@BOND + 1 1 6 am + 2 1 4 am + 3 1 2 2 + 4 2 8 1 + 5 2 3 1 + 6 3 10 1 + 7 3 9 1 + 8 4 11 1 + 9 4 5 1 + 10 5 13 1 + 11 5 12 1 + 12 6 14 1 + 13 6 7 1 + 14 7 16 1 + 15 7 15 1 +@SUBSTRUCTURE + 1 DIWC 1 +@COMMENT +COMMENT BIS(1,2,3-TRIAMINOGUANIDINIUM) BIS(5-AMINOTETRAZOLATE) MONO +@MOLECULE +DIXJEZ + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.4696 -2.7097 13.1281 N.2 1 DIXJ -0.6200 + 2 C2 -7.8443 -3.3838 12.1467 C.2 1 DIXJ 0.5210 + 3 N3 -7.5228 -4.6732 12.1813 N.2 1 DIXJ -0.1260 + 4 C4 -7.8662 -5.3257 13.3132 C.2 1 DIXJ 0.1564 + 5 C5 -8.5148 -4.7288 14.3823 C.2 1 DIXJ 0.2272 + 6 C6 -8.8446 -3.3444 14.2896 C.2 1 DIXJ 0.4100 + 7 N6 -9.5360 -2.6135 15.2511 N.3 1 DIXJ -0.8382 + 8 N7 -8.7083 -5.6750 15.3680 N.2 1 DIXJ -0.5653 + 9 C8 -8.2038 -6.7977 14.9086 C.2 1 DIXJ 0.0365 + 10 N9 -7.6769 -6.6363 13.6553 N.3 1 DIXJ 0.0332 + 11 C10 -9.4313 -1.1609 15.1630 C.3 1 DIXJ 0.3691 + 12 C11 -9.6722 -3.1781 16.5904 C.3 1 DIXJ 0.3691 + 13 H2 -7.5823 -2.8270 11.2518 H 1 DIXJ 0.1500 + 14 H3 -7.0519 -5.1191 11.3998 H 1 DIXJ 0.4570 + 15 H8 -8.1919 -7.7476 15.4322 H 1 DIXJ 0.1500 + 16 H9 -7.2393 -7.3720 13.1158 H 1 DIXJ 0.2700 + 17 H101 -8.4042 -0.8304 15.3543 H 1 DIXJ 0.0000 + 18 H102 -10.0832 -0.6790 15.9001 H 1 DIXJ 0.0000 + 19 H103 -9.7510 -0.7926 14.1817 H 1 DIXJ 0.0000 + 20 H111 -8.6932 -3.3730 17.0417 H 1 DIXJ 0.0000 + 21 H112 -10.2645 -4.0986 16.5726 H 1 DIXJ 0.0000 + 22 H113 -10.2081 -2.4869 17.2510 H 1 DIXJ 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 13 1 + 4 2 3 2 + 5 3 14 1 + 6 3 4 1 + 7 4 10 1 + 8 4 5 2 + 9 5 8 1 + 10 5 6 1 + 11 6 7 am + 12 7 12 1 + 13 7 11 1 + 14 8 9 2 + 15 9 15 1 + 16 9 10 am + 17 10 16 1 + 18 11 19 1 + 19 11 18 1 + 20 11 17 1 + 21 12 22 1 + 22 12 21 1 + 23 12 20 1 +@SUBSTRUCTURE + 1 DIXJ 1 +@COMMENT +COMMENT N-6-,N-6--DIMETHYL-ADENINIUM PICRATE +@MOLECULE +DIYDIY + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.9199 3.5166 -0.3953 C.2 1 UNCH 0.0825 + 2 C2 2.6062 4.7423 -0.3797 C.2 1 UNCH 0.0862 + 3 C3 2.5031 5.6332 -1.4570 C.2 1 UNCH -0.1500 + 4 C4 1.7145 5.3077 -2.5578 C.2 1 UNCH -0.1500 + 5 C5 1.0305 4.0951 -2.5825 C.2 1 UNCH -0.1500 + 6 C6 1.1312 3.2033 -1.5086 C.2 1 UNCH -0.1500 + 7 O7 2.0762 2.7068 0.6970 O.3 1 UNCH -0.3625 + 8 C8 1.3911 1.4587 0.7058 C.3 1 UNCH 0.3410 + 9 C9 1.6935 0.7172 1.9942 C.2 1 UNCH 0.6590 + 10 O10 2.4035 1.0777 2.9179 O.2 1 UNCH -0.5700 + 11 O11 1.0643 -0.4776 2.0509 O.3 1 UNCH -0.6500 + 12 C21 3.4531 5.1201 0.7743 C.2 1 UNCH 0.4238 + 13 O21 4.0609 6.1852 0.8087 O.2 1 UNCH -0.5700 + 14 H3 3.0378 6.5812 -1.4378 H 1 UNCH 0.1500 + 15 H4 1.6349 5.9992 -3.3932 H 1 UNCH 0.1500 + 16 H5 0.4144 3.8406 -3.4423 H 1 UNCH 0.1500 + 17 H6 0.5774 2.2725 -1.5796 H 1 UNCH 0.1500 + 18 H81 0.3086 1.6236 0.6660 H 1 UNCH 0.0000 + 19 H82 1.7381 0.8334 -0.1243 H 1 UNCH 0.0000 + 20 H21 3.5204 4.4053 1.6107 H 1 UNCH 0.0600 + 21 H11 1.3405 -0.8453 2.9181 H 1 UNCH 0.5000 +@BOND + 1 1 2 1 + 2 1 6 2 + 3 1 7 1 + 4 2 3 2 + 5 2 12 1 + 6 3 4 1 + 7 3 14 1 + 8 4 5 2 + 9 4 15 1 + 10 5 6 1 + 11 5 16 1 + 12 6 17 1 + 13 7 8 1 + 14 8 9 1 + 15 8 18 1 + 16 8 19 1 + 17 9 10 2 + 18 9 11 1 + 19 11 21 1 + 20 12 13 2 + 21 12 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-FORMYL-PHENOXYACETIC ACID +@MOLECULE +DIYPOQ + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -7.8446 -7.1635 15.1968 N.3 1 DIYP -0.8197 + 2 C2 -7.6541 -7.9466 14.1063 C.2 1 DIYP 1.2000 + 3 N3 -7.7968 -7.4088 12.8969 N.2 1 DIYP -0.8597 + 4 C4 -8.1280 -6.0638 12.6920 C.2 1 DIYP 0.8986 + 5 N5 -8.7077 -3.8898 13.8018 N.3 1 DIYP -0.7590 + 6 C6 -8.3448 -3.0182 15.0321 C.3 1 DIYP 0.5030 + 7 C7 -8.7873 -3.7643 16.3309 C.3 1 DIYP 0.3691 + 8 N8 -8.3125 -5.1580 16.3192 N.3 1 DIYP -0.8691 + 9 C9 -8.3241 -5.2742 13.9313 C.2 1 DIYP 0.3704 + 10 C10 -8.1806 -5.8400 15.1439 C.2 1 DIYP 0.4030 + 11 N11 -7.3273 -9.2339 14.2439 N.3 1 DIYP -0.9667 + 12 O12 -8.2405 -5.5745 11.5832 O.2 1 DIYP -0.5700 + 13 C13 -9.0864 -1.6758 14.8097 C.3 1 DIYP 0.2800 + 14 O14 -10.4170 -2.0126 14.3773 O.3 1 DIYP -0.6800 + 15 C15 -9.0723 -0.7596 16.0466 C.3 1 DIYP 0.2800 + 16 O16 -7.7559 -0.7849 16.5850 O.3 1 DIYP -0.6800 + 17 C17 -9.4634 0.6731 15.7035 C.3 1 DIYP 0.0000 + 18 H1 -7.6954 -7.6096 16.0985 H 1 DIYP 0.4500 + 19 H3 -7.6574 -7.9708 12.0653 H 1 DIYP 0.4500 + 20 H51 -9.7349 -3.7776 13.6913 H 1 DIYP 0.4500 + 21 H52 -8.3174 -3.4680 12.9427 H 1 DIYP 0.4500 + 22 H6 -7.2556 -2.8919 15.0081 H 1 DIYP 0.0000 + 23 H71 -9.8803 -3.7721 16.4157 H 1 DIYP 0.0000 + 24 H72 -8.3851 -3.2676 17.2188 H 1 DIYP 0.0000 + 25 H8 -8.5148 -5.6907 17.1651 H 1 DIYP 0.4000 + 26 H111 -7.1770 -9.8434 13.4446 H 1 DIYP 0.4500 + 27 H112 -7.2091 -9.6762 15.1504 H 1 DIYP 0.4500 + 28 H13 -8.5988 -1.1665 13.9684 H 1 DIYP 0.0000 + 29 H14 -10.9190 -1.1781 14.2531 H 1 DIYP 0.4000 + 30 H15 -9.7655 -1.1372 16.8067 H 1 DIYP 0.0000 + 31 H16 -7.6797 -0.0662 17.2470 H 1 DIYP 0.4000 + 32 H171 -8.7655 1.1062 14.9785 H 1 DIYP 0.0000 + 33 H172 -10.4762 0.7299 15.2951 H 1 DIYP 0.0000 + 34 H173 -9.4176 1.3053 16.5969 H 1 DIYP 0.0000 +@BOND + 1 1 18 1 + 2 1 10 1 + 3 1 2 am + 4 2 11 am + 5 2 3 2 + 6 3 19 1 + 7 3 4 am + 8 4 12 2 + 9 4 9 1 + 10 5 21 1 + 11 5 20 1 + 12 5 9 1 + 13 5 6 1 + 14 6 22 1 + 15 6 13 1 + 16 6 7 1 + 17 7 24 1 + 18 7 23 1 + 19 7 8 1 + 20 8 25 1 + 21 8 10 1 + 22 9 10 2 + 23 11 27 1 + 24 11 26 1 + 25 13 28 1 + 26 13 15 1 + 27 13 14 1 + 28 14 29 1 + 29 15 30 1 + 30 15 17 1 + 31 15 16 1 + 32 16 31 1 + 33 17 34 1 + 34 17 33 1 + 35 17 32 1 +@SUBSTRUCTURE + 1 DIYP 1 +@COMMENT +COMMENT (6R,1'R,2'S)-6-(1',2'-DIHYDROXYPROPYL)-5,6,7,8-TETRAHYDROPT +@MOLECULE +DIYPUW + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.8839 -2.7465 14.3552 O.2 1 UNCH -0.5700 + 2 C1 -8.8840 -3.9764 14.3550 C.2 1 UNCH 0.6900 + 3 N1 -9.8939 -4.7752 14.9126 N.3 1 UNCH -0.3580 + 4 C2 -10.5498 -4.3680 16.1224 C.3 1 UNCH -0.0510 + 5 C3 -11.2672 -4.3678 14.8235 C.3 1 UNCH -0.0510 + 6 H21 -10.7095 -5.1805 16.8164 H 1 UNCH 0.1000 + 7 H22 -10.2156 -3.4276 16.5405 H 1 UNCH 0.1000 + 8 H31 -11.9396 -5.1801 14.5889 H 1 UNCH 0.1000 + 9 H32 -11.4428 -3.4272 14.3182 H 1 UNCH 0.1000 + 10 N1B -7.8742 -4.7751 13.7972 N.3 1 UNCH -0.3580 + 11 C2B -7.2182 -4.3677 12.5875 C.3 1 UNCH -0.0510 + 12 C3B -6.5009 -4.3679 13.8864 C.3 1 UNCH -0.0510 + 13 H21B -7.0587 -5.1800 11.8933 H 1 UNCH 0.1000 + 14 H22B -7.5524 -3.4271 12.1697 H 1 UNCH 0.1000 + 15 H31B -5.8285 -5.1804 14.1208 H 1 UNCH 0.1000 + 16 H32B -6.3251 -3.4275 14.3919 H 1 UNCH 0.1000 +@BOND + 1 1 2 2 + 2 2 3 am + 3 2 10 am + 4 3 4 1 + 5 3 5 1 + 6 4 5 1 + 7 4 6 1 + 8 4 7 1 + 9 5 8 1 + 10 5 9 1 + 11 10 11 1 + 12 10 12 1 + 13 11 12 1 + 14 11 13 1 + 15 11 14 1 + 16 12 15 1 + 17 12 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,1-CARBONYL-BIS(AZIRIDINE) (AT -105 DEG.C) +@MOLECULE +DIZPUX + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -6.9947 -5.1897 11.8484 O.2 1 CHGB -0.5700 + 2 N1 -9.2277 -2.4442 13.0688 N.3 1 CHGB -0.9060 + 3 C1 -9.2052 -3.9309 12.8563 C.3 1 CHGB 0.6412 + 4 C2 -10.6571 -4.3502 13.1311 C.3 1 CHGB 0.0000 + 5 C3 -11.3323 -3.1686 13.8260 C.3 1 CHGB 0.0000 + 6 C4 -10.2249 -2.1761 14.1430 C.3 1 CHGB 0.5030 + 7 C5 -9.5700 -2.3317 15.5175 C.3 1 CHGB 0.0000 + 8 C6 -9.1903 -3.7469 15.9677 C.3 1 CHGB 0.1382 + 9 C7 -8.2035 -4.4993 15.1162 C.2 1 CHGB -0.2882 + 10 C8 -8.2042 -4.5953 13.7714 C.2 1 CHGB -0.1238 + 11 C9 -7.1479 -5.3864 13.0530 C.2 1 CHGB 0.4946 + 12 C10 -6.2856 -6.3678 13.8043 C.3 1 CHGB 0.0610 + 13 H11 -9.5162 -1.9905 12.1914 H 1 CHGB 0.4500 + 14 H12 -8.2868 -2.0853 13.2794 H 1 CHGB 0.4500 + 15 H1 -8.9805 -4.0708 11.7953 H 1 CHGB 0.0000 + 16 H21 -10.7276 -5.2623 13.7345 H 1 CHGB 0.0000 + 17 H22 -11.1745 -4.5649 12.1880 H 1 CHGB 0.0000 + 18 H31 -11.8999 -3.4740 14.7106 H 1 CHGB 0.0000 + 19 H32 -12.0484 -2.7102 13.1324 H 1 CHGB 0.0000 + 20 H4 -10.5617 -1.1419 14.0132 H 1 CHGB 0.0000 + 21 H51 -10.2673 -1.9309 16.2651 H 1 CHGB 0.0000 + 22 H52 -8.6794 -1.6910 15.5663 H 1 CHGB 0.0000 + 23 H61 -10.0859 -4.3643 16.1036 H 1 CHGB 0.0000 + 24 H62 -8.7490 -3.6539 16.9693 H 1 CHGB 0.0000 + 25 H7 -7.4444 -5.0205 15.7012 H 1 CHGB 0.1500 + 26 H101 -5.7723 -7.0157 13.0872 H 1 CHGB 0.0000 + 27 H102 -5.5373 -5.8325 14.3939 H 1 CHGB 0.0000 + 28 H103 -6.9004 -7.0059 14.4445 H 1 CHGB 0.0000 +@BOND + 1 1 11 2 + 2 2 3 1 + 3 2 6 1 + 4 2 13 1 + 5 2 14 1 + 6 3 4 1 + 7 3 10 1 + 8 3 15 1 + 9 4 5 1 + 10 4 16 1 + 11 4 17 1 + 12 5 6 1 + 13 5 18 1 + 14 5 19 1 + 15 6 7 1 + 16 6 20 1 + 17 7 8 1 + 18 7 21 1 + 19 7 22 1 + 20 8 9 1 + 21 8 23 1 + 22 8 24 1 + 23 9 10 2 + 24 9 25 1 + 25 10 11 1 + 26 11 12 1 + 27 12 26 1 + 28 12 27 1 + 29 12 28 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT (1R)-2-ACETYL-9-AZABICYCLO(4.2.1)NON-2-ENE HYDROCHLORIDE (C +@MOLECULE +DMEOXA01 + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.5013 -3.6302 14.6547 C.2 1 UNCH 0.7200 + 2 C2 -7.8533 -2.6225 16.6555 C.3 1 UNCH 0.2800 + 3 O1 -7.9610 -2.7678 13.9836 O.2 1 UNCH -0.5700 + 4 O2 -8.5340 -3.6947 16.0057 O.3 1 UNCH -0.4300 + 5 H1 -7.9401 -2.7702 17.7355 H 1 UNCH 0.0000 + 6 H2 -8.3146 -1.6635 16.3992 H 1 UNCH 0.0000 + 7 H3 -6.7914 -2.6249 16.3901 H 1 UNCH 0.0000 + 8 C1B -9.2667 -4.8372 14.0553 C.2 1 UNCH 0.7200 + 9 O1B -9.8070 -5.6996 14.7264 O.2 1 UNCH -0.5700 + 10 O2B -9.2340 -4.7727 12.7043 O.3 1 UNCH -0.4300 + 11 C2B -9.9147 -5.8449 12.0545 C.3 1 UNCH 0.2800 + 12 H1B -9.8279 -5.6972 10.9745 H 1 UNCH 0.0000 + 13 H2B -9.4534 -6.8039 12.3108 H 1 UNCH 0.0000 + 14 H3B -10.9766 -5.8425 12.3199 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 4 1 + 3 1 8 1 + 4 2 4 1 + 5 2 5 1 + 6 2 6 1 + 7 2 7 1 + 8 8 9 2 + 9 8 10 1 + 10 10 11 1 + 11 11 12 1 + 12 11 13 1 + 13 11 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DIMETHYL OXALATE +@MOLECULE +DOCCIH + 16 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -6.9692 -7.2779 16.0763 S.2 1 DOCC -0.7500 + 2 S2 -5.3594 -4.7161 16.1552 S.3 1 DOCC -0.7500 + 3 C1 -6.7294 -5.6306 15.7499 C.2 1 DOCC 0.6790 + 4 C2 -7.8362 -4.9130 15.0334 C.2 1 DOCC -0.1790 + 5 C3 -8.8700 -4.2854 15.7494 C.2 1 DOCC -0.1500 + 6 C4 -7.8649 -4.8518 13.6295 C.2 1 DOCC -0.1500 + 7 H1 -8.8683 -4.3199 16.8356 H 1 DOCC 0.1500 + 8 H2 -7.0758 -5.3300 13.0553 H 1 DOCC 0.1500 + 9 C4B -9.9032 -3.6156 15.0805 C.2 1 DOCC -0.1500 + 10 C3B -8.8980 -4.1820 12.9607 C.2 1 DOCC -0.1500 + 11 C2B -9.9319 -3.5544 13.6767 C.2 1 DOCC -0.1790 + 12 H2B -10.6923 -3.1374 15.6548 H 1 DOCC 0.1500 + 13 H1B -8.8998 -4.1475 11.8745 H 1 DOCC 0.1500 + 14 C1B -11.0387 -2.8368 12.9601 C.2 1 DOCC 0.6790 + 15 S1B -10.7989 -1.1895 12.6337 S.2 1 DOCC -0.7500 + 16 S2B -12.4087 -3.7513 12.5549 S.3 1 DOCC -0.7500 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 6 1 + 5 4 5 2 + 6 5 9 1 + 7 5 7 1 + 8 6 10 2 + 9 6 8 1 + 10 9 12 1 + 11 9 11 2 + 12 10 13 1 + 13 10 11 1 + 14 11 14 1 + 15 14 16 1 + 16 14 15 2 +@SUBSTRUCTURE + 1 DOCC 1 +@COMMENT +COMMENT DIPOTASSIUM TETRATHIOTEREPHTHALATE DIHYDRATE (AT -130 DEG.C +@MOLECULE +DOCFIK + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S10 -9.3311 -5.0839 13.0024 S.3 1 UNCH 0.1400 + 2 N1 -10.3006 -4.2835 14.0865 N.2 1 UNCH -0.5200 + 3 C1 -11.5157 -3.9450 13.7722 C.2 1 UNCH 0.7440 + 4 CL1 -12.2533 -4.2739 12.2365 CL 1 UNCH -0.2090 + 5 S1 -11.7727 -2.8398 16.3069 S.3 1 UNCH 0.1807 + 6 N2 -13.2103 -2.1131 16.7562 N.2 1 UNCH -0.5095 + 7 C3 -14.0256 -2.2200 15.7046 C.2 1 UNCH 0.5350 + 8 N4 -13.5873 -2.8488 14.5428 N.2 1 UNCH -0.5653 + 9 C5 -12.3420 -3.2457 14.7389 C.2 1 UNCH 0.2931 + 10 C6 -15.3564 -1.6825 15.7801 C.1 1 UNCH 0.5381 + 11 N7 -16.4348 -1.2505 15.8325 N.1 1 UNCH -0.5571 + 12 N1_ -7.9957 -5.2043 13.9811 N.2 1 UNCH -0.5200 + 13 C1_ -6.9107 -5.7847 13.5617 C.2 1 UNCH 0.7440 + 14 CL1_ -6.7256 -6.4823 11.9838 CL 1 UNCH -0.2090 + 15 S1_ -5.7657 -5.2397 16.0323 S.3 1 UNCH 0.1807 + 16 N2_ -4.1931 -5.7155 16.3440 N.2 1 UNCH -0.5095 + 17 C3_ -3.7611 -6.3208 15.2354 C.2 1 UNCH 0.5350 + 18 N4_ -4.6012 -6.4388 14.1320 N.2 1 UNCH -0.5653 + 19 C5_ -5.7574 -5.8763 14.4379 C.2 1 UNCH 0.2931 + 20 C6_ -2.4251 -6.8487 15.1890 C.1 1 UNCH 0.5381 + 21 N7_ -1.3456 -7.2787 15.1428 N.1 1 UNCH -0.5571 +@BOND + 1 1 2 1 + 2 1 12 1 + 3 2 3 2 + 4 3 4 1 + 5 3 9 1 + 6 5 6 1 + 7 5 9 1 + 8 6 7 2 + 9 7 8 am + 10 7 10 1 + 11 8 9 2 + 12 10 11 3 + 13 12 13 2 + 14 13 14 1 + 15 13 19 1 + 16 15 16 1 + 17 15 19 1 + 18 16 17 2 + 19 17 18 am + 20 17 20 1 + 21 18 19 2 + 22 20 21 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-(5-(3-CYANO-1,2,4-THIADIAZOL-5-YL)-1,5-DICHLORO-2,4-DIAZA +@MOLECULE +DOCWUN + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.3800 -2.9899 15.5356 O.2 1 DOCW -0.5700 + 2 O2 -5.4872 -2.2628 15.1728 O.3 1 DOCW -0.3370 + 3 O3 -8.1167 -7.3530 14.6794 O.3 1 DOCW -0.3370 + 4 N1 -8.8464 -4.7463 14.1000 N.3 1 DOCW -0.2290 + 5 N2 -6.2632 -3.2309 14.5236 N.2 1 DOCW -0.5130 + 6 N3 -7.2538 -6.3260 15.0741 N.2 1 DOCW -0.5130 + 7 C1 -11.4152 -1.9211 13.9710 C.3 1 DOCW 0.1382 + 8 C2 -9.5598 -3.6038 14.4832 C.2 1 DOCW 0.6156 + 9 C3 -10.6786 -3.1621 13.5790 C.2 1 DOCW -0.1238 + 10 C4 -10.9736 -3.8901 12.4921 C.2 1 DOCW -0.1500 + 11 C5 -10.2186 -5.0667 12.1688 C.2 1 DOCW -0.1500 + 12 C6 -9.2015 -5.4448 12.9498 C.2 1 DOCW -0.0410 + 13 C7 -7.7161 -5.1298 14.8332 C.2 1 DOCW 0.5100 + 14 C8 -6.8752 -3.9926 15.3852 C.2 1 DOCW 0.3890 + 15 C9 -6.7738 -3.8960 16.8813 C.3 1 DOCW 0.0610 + 16 H1 -5.1145 -1.7564 14.4274 H 1 DOCW 0.4000 + 17 H2 -7.6444 -8.1514 14.9828 H 1 DOCW 0.4000 + 18 H3 -11.8889 -2.0474 14.9500 H 1 DOCW 0.0000 + 19 H4 -12.2025 -1.6715 13.2517 H 1 DOCW 0.0000 + 20 H5 -10.7303 -1.0683 14.0210 H 1 DOCW 0.0000 + 21 H6 -11.7786 -3.6052 11.8213 H 1 DOCW 0.1500 + 22 H7 -10.4675 -5.6171 11.2671 H 1 DOCW 0.1500 + 23 H8 -8.5915 -6.2990 12.6741 H 1 DOCW 0.1500 + 24 H9 -5.7940 -4.2619 17.1997 H 1 DOCW 0.0000 + 25 H10 -7.5512 -4.4985 17.3591 H 1 DOCW 0.0000 + 26 H11 -6.8966 -2.8583 17.2028 H 1 DOCW 0.0000 +@BOND + 1 1 8 2 + 2 2 16 1 + 3 2 5 1 + 4 3 17 1 + 5 3 6 1 + 6 4 13 am + 7 4 12 1 + 8 4 8 am + 9 5 14 2 + 10 6 13 2 + 11 7 20 1 + 12 7 19 1 + 13 7 18 1 + 14 7 9 1 + 15 8 9 1 + 16 9 10 2 + 17 10 21 1 + 18 10 11 1 + 19 11 22 1 + 20 11 12 2 + 21 12 23 1 + 22 13 14 1 + 23 14 15 1 + 24 15 26 1 + 25 15 25 1 + 26 15 24 1 +@SUBSTRUCTURE + 1 DOCW 1 +@COMMENT +COMMENT 1-(1,2-BIS(HYDROXYIMINO)PROPYL)-3-METHYL-2-PYRIDONE 2-AMINO +@MOLECULE +DODNOZ + 31 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.7859 -4.1945 14.8973 N.3 1 UNCH -0.4140 + 2 S1 -7.6960 -4.5719 13.7013 S.1 1 UNCH 1.3328 + 3 O1 -6.8172 -3.4355 13.4959 O.2 1 UNCH -0.6500 + 4 O2 -7.1269 -5.8746 13.9801 O.2 1 UNCH -0.6500 + 5 C1 -8.6272 -4.6953 12.1703 C.3 1 UNCH 0.1052 + 6 C2 -9.5981 -3.5533 11.9578 C.3 1 UNCH 0.0000 + 7 S2 -8.1989 -3.2999 16.1802 S.1 1 UNCH 1.3328 + 8 O3 -9.1659 -3.2709 17.2600 O.2 1 UNCH -0.6500 + 9 O4 -6.8555 -3.7422 16.4917 O.2 1 UNCH -0.6500 + 10 C3 -8.1165 -1.6198 15.5591 C.3 1 UNCH 0.1052 + 11 C4 -9.4590 -1.1024 15.0844 C.3 1 UNCH 0.0000 + 12 S3 -9.9843 -5.2981 15.2404 S.1 1 UNCH 1.3328 + 13 O5 -11.1286 -4.5787 15.7636 O.2 1 UNCH -0.6500 + 14 O6 -10.2055 -6.1388 14.0801 O.2 1 UNCH -0.6500 + 15 C7 -9.2914 -6.3456 16.5319 C.3 1 UNCH 0.1052 + 16 C8 -10.2390 -7.4807 16.8754 C.3 1 UNCH 0.0000 + 17 H11 -9.1198 -5.6656 12.1095 H 1 UNCH 0.0000 + 18 H12 -7.8757 -4.6828 11.3718 H 1 UNCH 0.0000 + 19 H21 -10.0652 -3.6346 10.9714 H 1 UNCH 0.0000 + 20 H22 -10.3962 -3.5581 12.7049 H 1 UNCH 0.0000 + 21 H23 -9.0888 -2.5861 12.0120 H 1 UNCH 0.0000 + 22 H31 -7.3633 -1.5490 14.7757 H 1 UNCH 0.0000 + 23 H32 -7.7646 -1.0092 16.3983 H 1 UNCH 0.0000 + 24 H41 -9.8462 -1.6949 14.2525 H 1 UNCH 0.0000 + 25 H42 -9.3668 -0.0654 14.7475 H 1 UNCH 0.0000 + 26 H43 -10.2017 -1.1319 15.8878 H 1 UNCH 0.0000 + 27 H71 -9.1104 -5.7454 17.4239 H 1 UNCH 0.0000 + 28 H72 -8.3448 -6.7493 16.1653 H 1 UNCH 0.0000 + 29 H81 -11.2028 -7.0964 17.2243 H 1 UNCH 0.0000 + 30 H82 -9.8126 -8.1051 17.6665 H 1 UNCH 0.0000 + 31 H83 -10.4273 -8.1166 16.0047 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 12 1 + 4 2 3 2 + 5 2 4 2 + 6 2 5 1 + 7 5 6 1 + 8 5 17 1 + 9 5 18 1 + 10 6 19 1 + 11 6 20 1 + 12 6 21 1 + 13 7 8 2 + 14 7 9 2 + 15 7 10 1 + 16 10 11 1 + 17 10 22 1 + 18 10 23 1 + 19 11 24 1 + 20 11 25 1 + 21 11 26 1 + 22 12 13 2 + 23 12 14 2 + 24 12 15 1 + 25 15 16 1 + 26 15 27 1 + 27 15 28 1 + 28 16 29 1 + 29 16 30 1 + 30 16 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRIS(ETHYLSULFONYL)-AMINE +@MOLECULE +DODNUF + 22 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.3253 -3.7397 15.1080 N.3 1 UNCH -0.6960 + 2 S1 -7.1081 -3.3333 14.0987 S.1 1 UNCH 1.3328 + 3 O11 -7.6245 -2.4271 13.0974 O.2 1 UNCH -0.6500 + 4 O12 -6.0207 -2.9160 14.9607 O.2 1 UNCH -0.6500 + 5 C11 -6.6163 -4.8626 13.3040 C.3 1 UNCH 0.1052 + 6 C12 -6.3471 -5.9830 14.2874 C.3 1 UNCH 0.0000 + 7 S2 -9.8298 -4.1751 14.6388 S.1 1 UNCH 1.3328 + 8 O21 -9.7285 -5.0167 13.4684 O.2 1 UNCH -0.6500 + 9 O22 -10.4676 -4.6674 15.8427 O.2 1 UNCH -0.6500 + 10 C21 -10.6059 -2.6210 14.1968 C.3 1 UNCH 0.1052 + 11 C22 -12.0830 -2.8097 13.9077 C.3 1 UNCH 0.0000 + 12 H1 -8.1121 -3.8029 16.0956 H 1 UNCH 0.4200 + 13 H111 -5.7052 -4.6315 12.7417 H 1 UNCH 0.0000 + 14 H112 -7.3869 -5.1414 12.5822 H 1 UNCH 0.0000 + 15 H121 -5.5831 -5.6952 15.0164 H 1 UNCH 0.0000 + 16 H122 -5.9937 -6.8733 13.7580 H 1 UNCH 0.0000 + 17 H123 -7.2507 -6.2577 14.8397 H 1 UNCH 0.0000 + 18 H211 -10.1063 -2.2260 13.3106 H 1 UNCH 0.0000 + 19 H212 -10.4692 -1.9332 15.0363 H 1 UNCH 0.0000 + 20 H221 -12.5411 -1.8556 13.6300 H 1 UNCH 0.0000 + 21 H222 -12.6108 -3.1989 14.7842 H 1 UNCH 0.0000 + 22 H223 -12.2355 -3.5157 13.0850 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 12 1 + 4 2 3 2 + 5 2 4 2 + 6 2 5 1 + 7 5 6 1 + 8 5 13 1 + 9 5 14 1 + 10 6 15 1 + 11 6 16 1 + 12 6 17 1 + 13 7 8 2 + 14 7 9 2 + 15 7 10 1 + 16 10 11 1 + 17 10 18 1 + 18 10 19 1 + 19 11 20 1 + 20 11 21 1 + 21 11 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(ETHYLSULFONYL)-AMINE +@MOLECULE +DOJPAT + 21 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -10.9056 -4.4764 14.3929 S.1 1 UNCH 1.0896 + 2 O1 -12.0201 -5.1197 15.0551 O.2 1 UNCH -0.6500 + 3 O2 -11.0866 -3.6160 13.2415 O.2 1 UNCH -0.6500 + 4 C1 -9.6809 -5.6996 13.9933 C.3 1 UNCH 0.1052 + 5 C2 -8.3348 -5.0341 14.2411 C.3 1 UNCH 0.0000 + 6 C3 -7.8353 -4.0969 13.1189 C.3 1 UNCH 0.1380 + 7 C4 -6.3488 -3.8222 13.1509 C.2 1 UNCH -0.2880 + 8 C5 -6.4785 -2.7578 13.9667 C.2 1 UNCH -0.2880 + 9 C6 -7.9829 -2.8850 14.0478 C.3 1 UNCH 0.1380 + 10 C7 -8.4849 -3.8019 15.1855 C.3 1 UNCH 0.0000 + 11 C8 -9.9361 -3.6042 15.5992 C.3 1 UNCH 0.1052 + 12 H11 -9.8144 -6.0373 12.9633 H 1 UNCH 0.0000 + 13 H12 -9.8270 -6.5395 14.6792 H 1 UNCH 0.0000 + 14 H2 -7.5835 -5.7647 14.5669 H 1 UNCH 0.0000 + 15 H3 -8.3665 -4.0633 12.1659 H 1 UNCH 0.0000 + 16 H4 -5.5006 -4.3076 12.6764 H 1 UNCH 0.1500 + 17 H5 -5.7750 -2.0544 14.4034 H 1 UNCH 0.1500 + 18 H6 -8.6103 -2.0624 13.6995 H 1 UNCH 0.0000 + 19 H7 -7.8206 -3.8179 16.0590 H 1 UNCH 0.0000 + 20 H81 -10.1273 -4.0742 16.5687 H 1 UNCH 0.0000 + 21 H82 -10.2386 -2.5554 15.6320 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 4 1 + 4 1 11 1 + 5 4 5 1 + 6 4 12 1 + 7 4 13 1 + 8 5 6 1 + 9 5 10 1 + 10 5 14 1 + 11 6 7 1 + 12 6 9 1 + 13 6 15 1 + 14 7 8 2 + 15 7 16 1 + 16 8 9 1 + 17 8 17 1 + 18 9 10 1 + 19 9 18 1 + 20 10 11 1 + 21 10 19 1 + 22 11 20 1 + 23 11 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 8-THIATRICYCLO(4.3.0.0-2,5-)NONADEC-3-ENE-8,8-DIOXIDE +@MOLECULE +DONFOB + 28 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -6.0824 -2.2909 13.8721 S.1 1 CHGB 1.5680 + 2 S2 -11.5200 -6.2731 13.4146 S.1 1 CHGB 1.5680 + 3 S3 -6.2397 -3.0375 15.8205 S.3 1 CHGB -0.3480 + 4 S4 -10.9981 -5.3509 15.2394 S.3 1 CHGB -0.3480 + 5 N1 -7.1111 -5.5299 14.0289 N.3 1 CHGB -0.9590 + 6 O1 -5.7527 -3.5362 13.1780 O.2 1 CHGB -0.8167 + 7 O2 -7.4260 -1.7964 13.6306 O.2 1 CHGB -0.8167 + 8 O3 -5.0150 -1.3136 13.9747 O.3 1 CHGB -0.8167 + 9 O4 -10.4677 -5.7810 12.5325 O.2 1 CHGB -0.8167 + 10 O5 -11.4036 -7.6857 13.7559 O.2 1 CHGB -0.8167 + 11 O6 -12.8617 -5.7755 13.1638 O.3 1 CHGB -0.8167 + 12 C1 -7.4760 -6.0904 12.6753 C.3 1 CHGB 0.5030 + 13 C2 -6.3272 -6.4778 14.8559 C.3 1 CHGB 0.5030 + 14 C3 -8.3011 -4.8190 14.6905 C.3 1 CHGB 0.5030 + 15 C4 -9.2656 -5.8711 15.2972 C.3 1 CHGB 0.2300 + 16 C5 -7.8929 -3.7961 15.7986 C.3 1 CHGB 0.2300 + 17 H1 -6.5492 -6.4126 12.1914 H 1 CHGB 0.0000 + 18 H2 -8.1408 -6.9454 12.8096 H 1 CHGB 0.0000 + 19 H3 -7.9334 -5.2971 12.0795 H 1 CHGB 0.0000 + 20 H4 -6.9050 -7.3951 14.9945 H 1 CHGB 0.0000 + 21 H5 -5.3939 -6.6966 14.3297 H 1 CHGB 0.0000 + 22 H6 -6.1062 -6.0209 15.8219 H 1 CHGB 0.0000 + 23 H7 -8.7754 -4.2556 13.8788 H 1 CHGB 0.0000 + 24 H8 -9.0154 -6.0744 16.3442 H 1 CHGB 0.0000 + 25 H9 -9.1795 -6.8376 14.7948 H 1 CHGB 0.0000 + 26 H10 -8.6331 -2.9872 15.8112 H 1 CHGB 0.0000 + 27 H11 -7.9726 -4.2713 16.7826 H 1 CHGB 0.0000 + 28 H12 -6.4569 -4.7612 13.7428 H 1 CHGB 0.4500 +@BOND + 1 1 3 1 + 2 1 6 2 + 3 1 7 2 + 4 1 8 1 + 5 2 4 1 + 6 2 9 2 + 7 2 10 2 + 8 2 11 1 + 9 3 16 1 + 10 4 15 1 + 11 5 12 1 + 12 5 13 1 + 13 5 14 1 + 14 5 28 1 + 15 12 17 1 + 16 12 18 1 + 17 12 19 1 + 18 13 20 1 + 19 13 21 1 + 20 13 22 1 + 21 14 15 1 + 22 14 16 1 + 23 14 23 1 + 24 15 24 1 + 25 15 25 1 + 26 16 26 1 + 27 16 27 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM N,N-DIMETHYLAMMONIUM-2-PROPANE-1,3-DITHIOSULFONATE M +@MOLECULE +DOSNOO + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -8.5380 -3.5722 14.6926 N.3 1 DOPD -0.6813 + 2 S2 -9.4863 -4.0361 15.9910 S.1 1 DOPD 1.3390 + 3 C3 -8.2312 -5.2937 15.9854 C.3 1 DOPD 0.0990 + 4 H31 -8.6086 -6.3012 16.1733 H 1 DOPD 0.0000 + 5 H32 -7.4043 -5.0637 16.6636 H 1 DOPD 0.0000 + 6 C4 -7.9839 -4.9389 14.5071 C.3 1 DOPD 0.3070 + 7 H41 -8.5623 -5.5441 13.7985 H 1 DOPD 0.0000 + 8 H42 -6.9324 -4.9455 14.2066 H 1 DOPD 0.0000 + 9 C5 -9.0196 -2.8489 13.6067 C.2 1 DOPD 0.8663 + 10 O6 -10.0824 -2.2501 13.5867 O.2 1 DOPD -0.5700 + 11 N7 -8.1637 -2.7861 12.5545 N.3 1 DOPD -0.8000 + 12 H71 -7.1834 -2.9339 12.7341 H 1 DOPD 0.3700 + 13 H72 -8.4114 -2.0958 11.8579 H 1 DOPD 0.3700 + 14 O8 -10.7484 -4.5942 15.5690 O.2 1 DOPD -0.6500 + 15 O9 -9.3098 -3.1340 17.1031 O.2 1 DOPD -0.6500 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 9 am + 4 2 3 1 + 5 2 14 2 + 6 2 15 2 + 7 3 4 1 + 8 3 5 1 + 9 3 6 1 + 10 6 7 1 + 11 6 8 1 + 12 9 10 2 + 13 9 11 am + 14 11 12 1 + 15 11 13 1 +@SUBSTRUCTURE + 1 DOPD 1 +@COMMENT +COMMENT 2-CARBAMOYL-1,2-THIAZETIDINE-1,1-DIOXIDE +@MOLECULE +DOTNIJ + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.4404 -6.9646 12.4226 S.2 1 UNCH -0.3800 + 2 N1 -8.8865 -4.2357 12.6311 N.3 1 UNCH -0.2370 + 3 C1 -9.0185 -5.4276 11.9066 C.2 1 UNCH 0.3800 + 4 C2 -8.8854 -4.2349 14.0658 C.2 1 UNCH 0.1170 + 5 C3 -7.9930 -5.0472 14.7805 C.2 1 UNCH -0.1500 + 6 C4 -7.9924 -5.0454 16.1778 C.2 1 UNCH -0.1500 + 7 C5 -8.8832 -4.2333 16.8755 C.2 1 UNCH -0.1500 + 8 H1 -8.8413 -5.2705 10.8282 H 1 UNCH 0.0600 + 9 H3 -7.2710 -5.6733 14.2624 H 1 UNCH 0.1500 + 10 H4 -7.2934 -5.6769 16.7204 H 1 UNCH 0.1500 + 11 H5 -8.8823 -4.2327 17.9626 H 1 UNCH 0.1500 + 12 C1C -8.7557 -3.0445 11.9050 C.2 1 UNCH 0.3800 + 13 C3C -9.7767 -3.4218 14.7810 C.2 1 UNCH -0.1500 + 14 C4C -9.7751 -3.4219 16.1783 C.2 1 UNCH -0.1500 + 15 S1C -8.3330 -1.5070 12.4187 S.2 1 UNCH -0.3800 + 16 H1C -8.9346 -3.2029 10.8271 H 1 UNCH 0.0600 + 17 H3C -10.4995 -2.7961 14.2633 H 1 UNCH 0.1500 + 18 H4C -10.4733 -2.7898 16.7213 H 1 UNCH 0.1500 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 2 4 1 + 4 2 12 1 + 5 3 8 1 + 6 4 5 2 + 7 4 13 1 + 8 5 6 1 + 9 5 9 1 + 10 6 7 2 + 11 6 10 1 + 12 7 11 1 + 13 7 14 1 + 14 12 15 2 + 15 12 16 1 + 16 13 14 2 + 17 13 17 1 + 18 14 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N-DITHIOFORMYLANILINE (AT -130 DEG.C) +@MOLECULE +DOTVEN + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -9.5760 -5.8117 14.3715 S.1 1 DOTV 1.6260 + 2 N2 -8.2023 -5.4386 13.5408 N.3 1 DOTV -0.7943 + 3 C3 -7.9735 -4.1475 13.0840 C.2 1 DOTV 0.7453 + 4 C4 -8.9809 -3.1077 13.4826 C.3 1 DOTV 0.1220 + 5 C5 -9.5936 -3.3512 14.8453 C.2 1 DOTV 0.4390 + 6 N6 -9.8845 -4.5283 15.3015 N.2 1 DOTV -0.6380 + 7 O11 -10.6181 -5.9248 13.3758 O.2 1 DOTV -0.6500 + 8 O12 -9.2301 -6.9378 15.2078 O.2 1 DOTV -0.6500 + 9 O7 -7.0216 -3.9083 12.3543 O.2 1 DOTV -0.5700 + 10 N8 -9.8845 -2.2593 15.6224 N.3 1 DOTV -0.8500 + 11 H1 -10.1108 -2.4699 16.5909 H 1 DOTV 0.4000 + 12 H3 -8.4907 -2.1284 13.4722 H 1 DOTV 0.0000 + 13 H4 -7.6329 -6.2128 13.2200 H 1 DOTV 0.4200 + 14 H5 -9.3722 -1.3943 15.4903 H 1 DOTV 0.4000 + 15 H2 -9.7849 -3.0977 12.7389 H 1 DOTV 0.0000 +@BOND + 1 1 8 2 + 2 1 7 2 + 3 1 6 1 + 4 1 2 1 + 5 2 13 1 + 6 2 3 am + 7 3 9 2 + 8 3 4 1 + 9 4 15 1 + 10 4 12 1 + 11 4 5 1 + 12 5 10 am + 13 5 6 2 + 14 10 14 1 + 15 10 11 1 +@SUBSTRUCTURE + 1 DOTV 1 +@COMMENT +COMMENT 5-AMINO-2H,4H-1,2,6-THIADIAZIN-3-ONE-1,1-DIOXIDE +@MOLECULE +DOTWOY + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 1.4544 1.5583 9.1804 CL 1 UNCH -0.2273 + 2 CL2 1.6262 2.7571 11.8467 CL 1 UNCH -0.2273 + 3 C1 0.4461 4.2033 9.6717 C.3 1 UNCH 0.0320 + 4 C2 1.3306 3.0459 10.1275 C.3 1 UNCH 0.4546 + 5 C3 1.9700 4.2643 9.5355 C.3 1 UNCH -0.2000 + 6 C4 -0.1693 5.0512 10.7303 C.2 1 UNCH 0.7200 + 7 C1_ -0.3653 4.1156 8.3763 C.2 1 UNCH -0.0320 + 8 C2_ -1.4060 3.1821 8.2236 C.2 1 UNCH -0.1500 + 9 C3_ -2.1644 3.1059 7.0479 C.2 1 UNCH -0.1500 + 10 C4_ -1.9069 3.9760 5.9926 C.2 1 UNCH 0.0825 + 11 C5_ -0.8926 4.9224 6.1300 C.2 1 UNCH -0.1500 + 12 C6_ -0.1369 4.9946 7.3045 C.2 1 UNCH -0.1500 + 13 C7_ -3.5965 3.0467 4.5930 C.3 1 UNCH 0.2800 + 14 C8_ -4.1689 3.2583 3.2029 C.3 1 UNCH 0.0000 + 15 O1 0.2078 6.1768 11.0132 O.2 1 UNCH -0.5700 + 16 O2 -1.2122 4.4697 11.3569 O.3 1 UNCH -0.6500 + 17 O4_ -2.5660 4.0120 4.7960 O.3 1 UNCH -0.3625 + 18 H2 -1.5084 5.1429 12.0048 H 1 UNCH 0.5000 + 19 H31 2.4162 4.1780 8.5515 H 1 UNCH 0.1000 + 20 H32 2.5139 4.9371 10.1899 H 1 UNCH 0.1000 + 21 H2_ -1.6373 2.4957 9.0376 H 1 UNCH 0.1500 + 22 H3_ -2.9478 2.3573 6.9961 H 1 UNCH 0.1500 + 23 H5_ -0.6889 5.6143 5.3159 H 1 UNCH 0.1500 + 24 H6_ 0.6374 5.7560 7.3793 H 1 UNCH 0.1500 + 25 H71 -3.1870 2.0321 4.6606 H 1 UNCH 0.0000 + 26 H72 -4.3942 3.1814 5.3325 H 1 UNCH 0.0000 + 27 H81 -4.9672 2.5400 2.9964 H 1 UNCH 0.0000 + 28 H82 -3.3879 3.1472 2.4434 H 1 UNCH 0.0000 + 29 H83 -4.5702 4.2721 3.1014 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 2 4 1 + 3 3 4 1 + 4 3 5 1 + 5 3 6 1 + 6 3 7 1 + 7 4 5 1 + 8 5 19 1 + 9 5 20 1 + 10 6 15 2 + 11 6 16 1 + 12 7 8 2 + 13 7 12 1 + 14 8 9 1 + 15 8 21 1 + 16 9 10 2 + 17 9 22 1 + 18 10 11 1 + 19 10 17 1 + 20 11 12 2 + 21 11 23 1 + 22 12 24 1 + 23 13 14 1 + 24 13 17 1 + 25 13 25 1 + 26 13 26 1 + 27 14 27 1 + 28 14 28 1 + 29 14 29 1 + 30 16 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (-)-2,2-DICHLORO-1-(4-ETHOXYPHENYL)-1-CYCLOPROPANE-CARBOXYL +@MOLECULE +DOWDEY + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -10.2513 -3.9545 12.4681 O.3 1 UNCH -0.3000 + 2 C1 -9.5337 -2.9463 12.9851 C.2 1 UNCH 0.6500 + 3 N1 -8.9537 -2.9481 14.1331 N.2 1 UNCH -0.6210 + 4 C2 -9.0474 -4.0782 14.9032 C.2 1 UNCH 0.2720 + 5 C3 -9.7301 -5.1620 14.4970 C.2 1 UNCH 0.0794 + 6 C4 -10.3790 -5.0900 13.1876 C.2 1 UNCH 0.7056 + 7 N2 -9.4937 -1.8815 12.1509 N.3 1 UNCH -0.8500 + 8 S1 -8.2515 -4.1053 16.4843 S.3 1 UNCH -0.3310 + 9 C5 -7.3052 -2.5665 16.4433 C.3 1 UNCH 0.2300 + 10 C6 -9.8717 -6.3640 15.2398 C.1 1 UNCH 0.4921 + 11 N3 -9.9836 -7.3436 15.8533 N.1 1 UNCH -0.5571 + 12 O2 -11.0323 -6.0296 12.7439 O.2 1 UNCH -0.5700 + 13 H1 -9.2429 -1.0075 12.5977 H 1 UNCH 0.4000 + 14 H2 -10.2515 -1.8143 11.4824 H 1 UNCH 0.4000 + 15 H3 -6.7300 -2.4777 17.3691 H 1 UNCH 0.0000 + 16 H4 -6.6046 -2.5633 15.6036 H 1 UNCH 0.0000 + 17 H5 -7.9710 -1.7020 16.3710 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 2 + 4 2 7 am + 5 3 4 1 + 6 4 5 2 + 7 4 8 1 + 8 5 6 1 + 9 5 10 1 + 10 6 12 2 + 11 7 13 1 + 12 7 14 1 + 13 8 9 1 + 14 9 15 1 + 15 9 16 1 + 16 9 17 1 + 17 10 11 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-AMINO-4-METHYLTHIO-6-OXO-6H-1,3-OXAZINE-5-CARBONITRILE +@MOLECULE +DOXXAP + 17 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -8.3630 -1.6799 13.8143 C.2 1 DOXX 0.9060 + 2 C2 -8.3821 -3.1672 14.2295 C.3 1 DOXX 0.3970 + 3 C3 -9.2878 -3.8215 13.1972 C.3 1 DOXX 0.0990 + 4 N1 -8.9667 -3.2975 15.6277 N.3 1 DOXX -0.8530 + 5 N2 -9.2937 -5.2604 13.4936 N.2 1 DOXX 0.7410 + 6 N3 -8.8512 -6.0191 12.5693 N.2 1 DOXX -0.2700 + 7 O1 -9.0397 -0.9886 14.6399 O.2 1 DOXX -0.9000 + 8 O2 -7.7173 -1.3891 12.7855 O.3 1 DOXX -0.9000 + 9 O3 -9.7207 -5.6179 14.6509 O.3 1 DOXX -0.6330 + 10 O4 -8.8940 -7.3550 13.0046 O.3 1 DOXX -0.3370 + 11 H1 -7.3789 -3.6031 14.2636 H 1 DOXX 0.0000 + 12 H2 -8.9306 -3.6701 12.1721 H 1 DOXX 0.0000 + 13 H3 -10.3244 -3.4701 13.2590 H 1 DOXX 0.0000 + 14 H4 -9.5668 -2.4462 15.7077 H 1 DOXX 0.4500 + 15 H5 -9.5059 -4.1688 15.7568 H 1 DOXX 0.4500 + 16 H6 -8.2476 -3.1790 16.3434 H 1 DOXX 0.4500 + 17 H7 -8.5836 -7.8441 12.2212 H 1 DOXX 0.4000 +@BOND + 1 1 8 1 + 2 1 7 2 + 3 1 2 1 + 4 2 11 1 + 5 2 4 1 + 6 2 3 1 + 7 3 13 1 + 8 3 12 1 + 9 3 5 1 + 10 4 16 1 + 11 4 15 1 + 12 4 14 1 + 13 5 9 1 + 14 5 6 2 + 15 6 10 1 + 16 10 17 1 +@SUBSTRUCTURE + 1 DOXX 1 +@COMMENT +COMMENT L-ALANOSINE (AT 138 DEG.K, ANTIVIRAL, ANTIMICROBIAL, ANTIBI +@MOLECULE +DOXZOF + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -11.3080 -2.5705 12.8477 O.3 1 DOXZ -0.3370 + 2 N1 -11.6141 -3.6821 13.6403 N.2 1 DOXZ -0.5130 + 3 C1 -10.5468 -4.1521 14.1792 C.2 1 DOXZ 0.3108 + 4 C2 -10.3125 -5.3429 15.1239 C.3 1 DOXZ 0.1610 + 5 C21 -8.8714 -4.8977 15.0309 C.2 1 DOXZ -0.1080 + 6 C3 -7.5813 -5.1373 15.4326 C.2 1 DOXZ -0.1500 + 7 C4 -6.5912 -4.2724 14.9440 C.2 1 DOXZ -0.1500 + 8 C5 -6.9133 -3.2020 14.0757 C.2 1 DOXZ -0.1500 + 9 C6 -8.2323 -2.9751 13.6788 C.2 1 DOXZ -0.1500 + 10 C61 -9.1562 -3.8482 14.1849 C.2 1 DOXZ 0.0862 + 11 H1 -12.1841 -2.3145 12.5041 H 1 DOXZ 0.4000 + 12 H2 -10.7988 -5.2408 16.0982 H 1 DOXZ 0.0000 + 13 H2_ -10.5583 -6.3142 14.6855 H 1 DOXZ 0.0000 + 14 H3 -7.3343 -5.9570 16.0975 H 1 DOXZ 0.1500 + 15 H4 -5.5539 -4.4251 15.2366 H 1 DOXZ 0.1500 + 16 H5 -6.1211 -2.5495 13.7148 H 1 DOXZ 0.1500 + 17 H6 -8.5105 -2.1659 13.0165 H 1 DOXZ 0.1500 +@BOND + 1 1 11 1 + 2 1 2 1 + 3 2 3 2 + 4 3 10 1 + 5 3 4 1 + 6 4 13 1 + 7 4 12 1 + 8 4 5 1 + 9 5 10 1 + 10 5 6 2 + 11 6 14 1 + 12 6 7 1 + 13 7 15 1 + 14 7 8 2 + 15 8 16 1 + 16 8 9 1 + 17 9 17 1 + 18 9 10 2 +@SUBSTRUCTURE + 1 DOXZ 1 +@COMMENT +COMMENT 2H-BENZOCYCLOBUTEN-1-ONE OXIME +@MOLECULE +DOZFON + 20 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 1.7772 -3.1159 3.3637 F 1 DOZF -0.3400 + 2 F2 1.8911 -3.9775 1.3355 F 1 DOZF -0.3400 + 3 O1 0.4038 -1.6630 0.4454 O.2 1 DOZF -0.5700 + 4 O2 4.0727 -2.6737 1.1658 O.3 1 DOZF -0.5200 + 5 O3 3.3481 -1.0670 2.4863 O.2 1 DOZF -0.5200 + 6 N1 0.4308 -0.9015 2.5921 N.3 1 DOZF -0.1830 + 7 N2 -0.3399 0.2227 2.1088 N.3 1 DOZF -0.7030 + 8 N3 3.2116 -2.1493 1.8815 N.2 1 DOZF 0.7998 + 9 C1 0.8505 -1.7912 1.5876 C.2 1 DOZF 0.5690 + 10 C2 1.8693 -2.8202 2.0368 C.3 1 DOZF 0.9812 + 11 C3 -1.6035 0.2824 2.9078 C.3 1 DOZF 0.5030 + 12 C4 0.5180 1.4509 2.1740 C.3 1 DOZF 0.5030 + 13 H2 -0.5793 0.0317 1.1096 H 1 DOZF 0.4500 + 14 H31 -2.2011 1.1122 2.5217 H 1 DOZF 0.0000 + 15 H32 -2.1414 -0.6600 2.7705 H 1 DOZF 0.0000 + 16 H33 -1.3516 0.4444 3.9598 H 1 DOZF 0.0000 + 17 H41 0.7979 1.6336 3.2154 H 1 DOZF 0.0000 + 18 H42 1.4006 1.2865 1.5497 H 1 DOZF 0.0000 + 19 H43 -0.0682 2.2846 1.7794 H 1 DOZF 0.0000 + 20 H1 0.9802 -0.7827 3.4517 H 1 DOZF 0.3700 +@BOND + 1 1 10 1 + 2 2 10 1 + 3 3 9 2 + 4 4 8 1 + 5 5 8 2 + 6 6 20 1 + 7 6 9 am + 8 6 7 1 + 9 7 13 1 + 10 7 12 1 + 11 7 11 1 + 12 8 10 1 + 13 9 10 1 + 14 11 16 1 + 15 11 15 1 + 16 11 14 1 + 17 12 19 1 + 18 12 18 1 + 19 12 17 1 +@SUBSTRUCTURE + 1 DOZF 1 +@COMMENT +COMMENT 1-DIFLUORONITROACETYL-2,2-DIMETHYLHYDRAZINE +@MOLECULE +DOZNIP + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -9.2537 -3.7309 18.2863 O.3 1 DOZN -0.5200 + 2 O2 -10.6238 -5.3475 17.6690 O.2 1 DOZN -0.5200 + 3 O3 -7.0207 -3.7908 11.0881 O.3 1 DOZN -0.5200 + 4 O4 -8.1822 -5.6346 11.4348 O.2 1 DOZN -0.5200 + 5 N1 -9.6381 -4.6157 17.5140 N.2 1 DOZN 1.0440 + 6 N2 -8.8041 -5.0096 16.5452 N.3 1 DOZN -0.5000 + 7 N3 -9.1960 -2.8587 15.3794 N.2 1 DOZN -0.6500 + 8 N4 -9.2745 -2.5459 14.0549 N.2 1 DOZN -0.6500 + 9 N5 -8.8105 -4.6775 14.2226 N.3 1 DOZN -0.9667 + 10 N6 -8.9844 -3.6519 11.9887 N.3 1 DOZN -0.5000 + 11 N7 -7.9824 -4.4197 11.5462 N.2 1 DOZN 1.0440 + 12 C1 -8.9449 -4.1786 15.4598 C.2 1 DOZN 0.7293 + 13 C2 -8.9967 -3.6687 13.3637 C.2 1 DOZN 0.7293 + 14 H1 -8.9391 -2.6898 11.6984 H 1 DOZN 0.4000 + 15 H2 -8.9286 -5.9543 16.2262 H 1 DOZN 0.4000 +@BOND + 1 1 5 1 + 2 2 5 2 + 3 3 11 1 + 4 4 11 2 + 5 5 6 1 + 6 6 15 1 + 7 6 12 am + 8 7 12 2 + 9 7 8 1 + 10 8 13 2 + 11 9 13 am + 12 9 12 am + 13 10 14 1 + 14 10 13 am + 15 10 11 1 +@SUBSTRUCTURE + 1 DOZN 1 +@COMMENT +COMMENT POTASSIUM 3,5-DINITRAMINO-1,2,4-TRIAZOLATE +@MOLECULE +DUBNET + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -8.0655 -5.0607 12.1318 O.2 1 UNCH -0.5700 + 2 O2 -7.8453 -2.0336 15.4601 O.2 1 UNCH -0.5700 + 3 N1 -9.7494 -4.0248 13.3769 N.3 1 UNCH -0.3601 + 4 N2 -7.6932 -3.1408 13.4090 N.3 1 UNCH -0.4201 + 5 N3 -9.6791 -3.0593 14.4385 N.3 1 UNCH -0.3601 + 6 C1 -10.5603 -5.1368 13.9117 C.3 1 UNCH 0.4383 + 7 C2 -9.7681 -5.7783 15.0351 C.2 1 UNCH -0.2882 + 8 C3 -9.7023 -4.8745 16.0289 C.2 1 UNCH -0.2882 + 9 C4 -10.4518 -3.6447 15.5523 C.3 1 UNCH 0.4383 + 10 C5 -11.5675 -4.3489 14.7642 C.3 1 UNCH 0.0000 + 11 C6 -8.4599 -4.1526 12.8487 C.2 1 UNCH 0.6900 + 12 C7 -8.3493 -2.6318 14.5209 C.2 1 UNCH 0.6900 + 13 C8 -6.2649 -3.0782 13.2576 C.3 1 UNCH 0.3001 + 14 H1 -10.9596 -5.8042 13.1485 H 1 UNCH 0.0000 + 15 H2 -9.3019 -6.7507 15.0012 H 1 UNCH 0.1500 + 16 H3 -9.1720 -4.9655 16.9641 H 1 UNCH 0.1500 + 17 H4 -10.7501 -2.9250 16.3141 H 1 UNCH 0.0000 + 18 H51 -12.1716 -3.6523 14.1706 H 1 UNCH 0.0000 + 19 H52 -12.2253 -4.9762 15.3782 H 1 UNCH 0.0000 + 20 H81 -5.8089 -3.8290 13.9103 H 1 UNCH 0.0000 + 21 H82 -5.9912 -3.2935 12.2212 H 1 UNCH 0.0000 + 22 H83 -5.9035 -2.0877 13.5470 H 1 UNCH 0.0000 +@BOND + 1 1 11 2 + 2 2 12 2 + 3 3 5 1 + 4 3 6 1 + 5 3 11 am + 6 4 11 am + 7 4 12 am + 8 4 13 1 + 9 5 9 1 + 10 5 12 am + 11 6 7 1 + 12 6 10 1 + 13 6 14 1 + 14 7 8 2 + 15 7 15 1 + 16 8 9 1 + 17 8 16 1 + 18 9 10 1 + 19 9 17 1 + 20 10 18 1 + 21 10 19 1 + 22 13 20 1 + 23 13 21 1 + 24 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,8-DIHYDRO-2-METHYL-5,8-METHANO-1H-(1,2,4)TRIAZOLO(1,2-A)P +@MOLECULE +DUDMUK + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -1.7951 0.5043 9.4126 N.3 1 DUDM -0.4870 + 2 N2 -1.9618 0.6279 8.0621 N.2 1 DUDM -0.5030 + 3 C3 -2.6764 1.6455 7.6787 C.2 1 DUDM 0.6000 + 4 N4 -3.2441 2.6040 8.4909 N.2 1 DUDM -0.2110 + 5 N5 -2.8806 2.6807 9.6875 N.2 1 DUDM -0.2460 + 6 C6 -1.8423 1.7515 10.1918 C.3 1 DUDM 0.5160 + 7 C7 -0.7003 -0.3731 9.8110 C.3 1 DUDM 0.5500 + 8 C8 -2.9421 1.8434 6.2123 C.3 1 DUDM 0.0610 + 9 C9 -2.1778 1.5192 11.6679 C.3 1 DUDM 0.0000 + 10 O10 0.5172 0.1118 9.2772 O.3 1 DUDM -0.6800 + 11 H71 -0.5969 -0.4978 10.8914 H 1 DUDM 0.0000 + 12 H72 -0.8685 -1.3761 9.4021 H 1 DUDM 0.0000 + 13 H81 -2.5494 2.8151 5.8995 H 1 DUDM 0.0000 + 14 H82 -2.4632 1.0569 5.6228 H 1 DUDM 0.0000 + 15 H83 -4.0206 1.8203 6.0318 H 1 DUDM 0.0000 + 16 H91 -1.3786 0.9944 12.1985 H 1 DUDM 0.0000 + 17 H92 -2.3305 2.4754 12.1820 H 1 DUDM 0.0000 + 18 H93 -3.1032 0.9421 11.7771 H 1 DUDM 0.0000 + 19 H10 0.2421 0.3862 8.3822 H 1 DUDM 0.4000 + 20 H1 -0.8817 2.2776 10.1208 H 1 DUDM 0.0000 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 1 + 4 2 3 2 + 5 3 8 1 + 6 3 4 am + 7 4 5 2 + 8 5 6 1 + 9 6 20 1 + 10 6 9 1 + 11 7 12 1 + 12 7 11 1 + 13 7 10 1 + 14 8 15 1 + 15 8 14 1 + 16 8 13 1 + 17 9 18 1 + 18 9 17 1 + 19 9 16 1 + 20 10 19 1 +@SUBSTRUCTURE + 1 DUDM 1 +@COMMENT +COMMENT 1-HYDROXYMETHYL-3,6-DIMETHYL-1,6-DIHYDRO-1,2,4,5-TETRAZINE +@MOLECULE +DUGMUN + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.9699 1.9209 9.7283 O.3 1 DUGM -0.3370 + 2 N1 0.7055 2.0083 9.1299 N.2 1 DUGM -0.5130 + 3 N2 0.7594 -0.8600 11.0566 N.1 1 DUGM -0.5571 + 4 C1 -0.0836 1.0204 9.4482 C.2 1 DUGM 0.4688 + 5 C2 0.4160 -0.0070 10.3437 C.1 1 DUGM 0.4521 + 6 C3 -1.4703 0.9123 8.9272 C.2 1 DUGM 0.0862 + 7 C4 -1.9479 1.9085 8.0619 C.2 1 DUGM -0.1500 + 8 C5 -3.2463 1.8405 7.5520 C.2 1 DUGM -0.1500 + 9 C6 -4.0776 0.7787 7.9014 C.2 1 DUGM -0.1500 + 10 C7 -3.6135 -0.2161 8.7600 C.2 1 DUGM -0.1500 + 11 C8 -2.3148 -0.1530 9.2733 C.2 1 DUGM -0.1500 + 12 H1 2.4248 2.7175 9.3941 H 1 DUGM 0.4000 + 13 H4 -1.3150 2.7466 7.7762 H 1 DUGM 0.1500 + 14 H5 -3.6080 2.6170 6.8820 H 1 DUGM 0.1500 + 15 H6 -5.0887 0.7261 7.5041 H 1 DUGM 0.1500 + 16 H7 -4.2646 -1.0444 9.0314 H 1 DUGM 0.1500 + 17 H8 -1.9920 -0.9497 9.9400 H 1 DUGM 0.1500 +@BOND + 1 1 2 1 + 2 1 12 1 + 3 2 4 2 + 4 3 5 3 + 5 4 5 1 + 6 4 6 1 + 7 6 7 2 + 8 6 11 1 + 9 7 8 1 + 10 7 13 1 + 11 8 9 2 + 12 8 14 1 + 13 9 10 1 + 14 9 15 1 + 15 10 11 2 + 16 10 16 1 + 17 11 17 1 +@SUBSTRUCTURE + 1 DUGM 1 +@COMMENT +COMMENT HYDROXY-IMINO-PHENYL-ACETONITRILE (AT -60 DEG.C) +@MOLECULE +DUGWIL01 + 19 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.8688 0.1869 9.8981 S.1 1 UNCH 1.3328 + 2 S2 -0.7420 1.3169 7.2350 S.1 1 UNCH 1.3328 + 3 O1 0.4486 -0.3400 9.6168 O.2 1 UNCH -0.6500 + 4 O2 -1.8035 -0.6103 10.6688 O.2 1 UNCH -0.6500 + 5 O3 -0.0179 2.4421 7.7859 O.2 1 UNCH -0.6500 + 6 O4 -1.6515 1.5288 6.1239 O.2 1 UNCH -0.6500 + 7 N1 -1.6202 0.5981 8.4628 N.3 1 UNCH -0.6317 + 8 C1 -0.6771 1.7428 10.7515 C.3 1 UNCH 0.1052 + 9 C2 0.4144 0.0640 6.7097 C.3 1 UNCH 0.1052 + 10 C3 -3.0145 1.0619 8.5635 C.3 1 UNCH 0.3557 + 11 H1 -0.3241 1.5193 11.7615 H 1 UNCH 0.0000 + 12 H2 0.0637 2.3599 10.2461 H 1 UNCH 0.0000 + 13 H3 -1.6435 2.2452 10.8112 H 1 UNCH 0.0000 + 14 H4 0.7817 0.3521 5.7212 H 1 UNCH 0.0000 + 15 H5 1.2590 0.0160 7.3946 H 1 UNCH 0.0000 + 16 H6 -0.1060 -0.8924 6.6357 H 1 UNCH 0.0000 + 17 H7 -3.5341 0.6246 9.4205 H 1 UNCH 0.0000 + 18 H8 -3.0581 2.1509 8.6610 H 1 UNCH 0.0000 + 19 H9 -3.5778 0.7484 7.6789 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 4 2 + 3 1 7 1 + 4 1 8 1 + 5 2 5 2 + 6 2 6 2 + 7 2 7 1 + 8 2 9 1 + 9 7 10 1 + 10 8 11 1 + 11 8 12 1 + 12 8 13 1 + 13 9 14 1 + 14 9 15 1 + 15 9 16 1 + 16 10 17 1 + 17 10 18 1 + 18 10 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-METHYLDIMESYLAMINE (AT -95 DEG.C) +@MOLECULE +DUJHEV + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -2.0806 3.5126 8.7379 S.1 1 UNCH 1.3340 + 2 O1 -1.9680 4.2601 9.9759 O.2 1 UNCH -0.6500 + 3 O2 -2.8197 4.0734 7.6228 O.2 1 UNCH -0.6500 + 4 C1 -0.0778 1.8757 8.1429 C.2 1 UNCH -0.0410 + 5 C2 -0.5013 3.1405 8.1958 C.2 1 UNCH -0.1670 + 6 C3 -2.7687 1.9877 9.1080 C.2 1 UNCH -0.1670 + 7 C4 -2.0728 0.8588 8.9458 C.2 1 UNCH -0.0410 + 8 N1 -0.7712 0.7198 8.4857 N.3 1 UNCH -0.2780 + 9 C5 -0.1099 -0.5206 8.3448 C.2 1 UNCH 0.5690 + 10 C6 -0.8752 -1.7681 8.7208 C.3 1 UNCH 0.0610 + 11 O3 1.0493 -0.6260 7.9335 O.2 1 UNCH -0.5700 + 12 H1 0.9402 1.7097 7.7876 H 1 UNCH 0.1500 + 13 H2 0.1279 3.9680 7.9024 H 1 UNCH 0.1500 + 14 H3 -3.7845 1.9891 9.4756 H 1 UNCH 0.1500 + 15 H4 -2.5923 -0.0587 9.2066 H 1 UNCH 0.1500 + 16 H61 -1.7607 -1.8768 8.0891 H 1 UNCH 0.0000 + 17 H62 -0.2377 -2.6433 8.5595 H 1 UNCH 0.0000 + 18 H63 -1.1491 -1.7427 9.7787 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 5 1 + 4 1 6 1 + 5 4 5 2 + 6 4 8 1 + 7 4 12 1 + 8 5 13 1 + 9 6 7 2 + 10 6 14 1 + 11 7 8 1 + 12 7 15 1 + 13 8 9 am + 14 9 10 1 + 15 9 11 2 + 16 10 16 1 + 17 10 17 1 + 18 10 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-ACETYL-1,4-DIHYDRO-4,4-DIOXO-4-THIA-PYRIDINE +@MOLECULE +DUJMEA + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.8143 0.4830 7.9455 C.3 1 UNCH 0.7300 + 2 O1 -1.4151 -0.6340 7.1083 O.3 1 UNCH -0.5600 + 3 C2 0.0019 -0.8248 7.0189 C.3 1 UNCH 0.2800 + 4 C3 0.7737 0.4322 6.6028 C.3 1 UNCH 0.2700 + 5 N1 0.5249 1.5251 7.5508 N.3 1 UNCH -0.8100 + 6 C100 1.2961 2.7148 7.2100 C.3 1 UNCH 0.2700 + 7 C4 -0.9333 1.8023 7.5716 C.3 1 UNCH 0.5500 + 8 O2 -1.3162 2.3619 6.2940 O.3 1 UNCH -0.5600 + 9 C5 -2.7139 2.6321 6.2555 C.3 1 UNCH 0.2800 + 10 C6 -3.5131 1.3416 6.4247 C.3 1 UNCH 0.2700 + 11 N2 -3.2778 0.7418 7.7467 N.3 1 UNCH -0.8100 + 12 C200 -4.1017 -0.4580 7.8971 C.3 1 UNCH 0.2700 + 13 C7 -1.5796 0.1043 9.4047 C.2 1 UNCH -0.0400 + 14 C8 -1.4161 -1.1007 10.0689 C.2 1 UNCH -0.1500 + 15 O3 -1.5611 1.1247 10.3208 O.3 1 UNCH -0.2800 + 16 C9 -1.3613 0.5698 11.5420 C.2 1 UNCH -0.0100 + 17 C10 -1.2655 -0.7968 11.4420 C.2 1 UNCH -0.1500 + 18 H4 -1.1246 2.5757 8.3282 H 1 UNCH 0.0000 + 19 H8 -1.4134 -2.0770 9.6047 H 1 UNCH 0.1500 + 20 H9 -1.3160 1.2654 12.3681 H 1 UNCH 0.1500 + 21 H10 -1.1144 -1.4874 12.2592 H 1 UNCH 0.1500 + 22 H21 0.3863 -1.2149 7.9672 H 1 UNCH 0.0000 + 23 H22 0.1683 -1.6091 6.2725 H 1 UNCH 0.0000 + 24 H31 1.8429 0.1897 6.5846 H 1 UNCH 0.0000 + 25 H32 0.4839 0.7186 5.5839 H 1 UNCH 0.0000 + 26 H11 2.3684 2.5039 7.2901 H 1 UNCH 0.0000 + 27 H12 1.1011 3.0776 6.1947 H 1 UNCH 0.0000 + 28 H13 1.0844 3.5269 7.9143 H 1 UNCH 0.0000 + 29 H51 -2.9356 3.0759 5.2796 H 1 UNCH 0.0000 + 30 H52 -2.9715 3.3742 7.0208 H 1 UNCH 0.0000 + 31 H61 -3.2420 0.6365 5.6283 H 1 UNCH 0.0000 + 32 H62 -4.5768 1.5826 6.3119 H 1 UNCH 0.0000 + 33 H21_ -3.8537 -1.2399 7.1708 H 1 UNCH 0.0000 + 34 H22_ -5.1604 -0.2057 7.7632 H 1 UNCH 0.0000 + 35 H23_ -4.0272 -0.8802 8.9035 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 11 1 + 4 1 13 1 + 5 2 3 1 + 6 3 4 1 + 7 3 22 1 + 8 3 23 1 + 9 4 5 1 + 10 4 24 1 + 11 4 25 1 + 12 5 6 1 + 13 5 7 1 + 14 6 26 1 + 15 6 27 1 + 16 6 28 1 + 17 7 8 1 + 18 7 18 1 + 19 8 9 1 + 20 9 10 1 + 21 9 29 1 + 22 9 30 1 + 23 10 11 1 + 24 10 31 1 + 25 10 32 1 + 26 11 12 1 + 27 12 33 1 + 28 12 34 1 + 29 12 35 1 + 30 13 14 2 + 31 13 15 1 + 32 14 17 1 + 33 14 19 1 + 34 15 16 1 + 35 16 17 2 + 36 16 20 1 + 37 17 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 10-(2-FURYL)-4,8-DIMETHYL-4,8-DIAZA-1,5-DIOXADECALIN +@MOLECULE +DUKVAG + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.9421 1.4984 9.4371 S.3 1 DUKV -0.1330 + 2 N1 -1.9855 -0.4054 8.1713 N.2 1 DUKV -0.3970 + 3 N2 -2.3867 0.7023 7.4467 N.2 1 DUKV -0.2911 + 4 N3 -0.7314 -1.1153 10.0457 N.3 1 DUKV -0.7320 + 5 N4 -2.0663 3.0304 7.5500 N.3 1 DUKV -0.8840 + 6 C1 -1.2177 -0.1908 9.2410 C.2 1 DUKV 0.8250 + 7 C2 -1.8883 1.7837 8.0094 C.2 1 DUKV 0.4621 + 8 H1 -2.2547 -1.3507 7.9051 H 1 DUKV 0.4500 + 9 H31 -0.1597 -0.7971 10.8188 H 1 DUKV 0.4500 + 10 H32 -0.9189 -2.0941 9.8868 H 1 DUKV 0.4500 + 11 H41 -1.8690 3.8362 8.1356 H 1 DUKV 0.4000 + 12 H42 -2.7751 3.1997 6.8410 H 1 DUKV 0.4000 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 2 8 1 + 4 2 6 2 + 5 2 3 1 + 6 3 7 2 + 7 4 10 1 + 8 4 9 1 + 9 4 6 am + 10 5 12 1 + 11 5 11 1 + 12 5 7 am +@SUBSTRUCTURE + 1 DUKV 1 +@COMMENT +COMMENT 2,5-DIAMINO-3H-1,3,4-THIADIAZOLINIUM CHLORIDE MONOHYDRATE +@MOLECULE +DUKWUB + 28 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.1781 0.5209 5.9445 S.1 1 DUKV 1.3785 + 2 O51 0.6545 -0.2137 10.2025 O.3 1 DUKV -0.6800 + 3 O1 1.6020 -1.4519 8.4761 O.3 1 DUKV -0.5600 + 4 O11 2.4844 1.8743 6.3503 O.2 1 DUKV -0.6500 + 5 O12 2.8932 0.3390 4.5072 O.3 1 DUKV -0.6837 + 6 O13 0.8220 0.0397 5.8226 O.2 1 DUKV -0.6500 + 7 O21 5.0742 -0.3738 9.1091 O.3 1 DUKV -0.6800 + 8 O31 4.4762 -1.8179 11.4701 O.3 1 DUKV -0.6800 + 9 N1 1.7148 -2.0348 12.2183 N.3 1 DUKV -0.9900 + 10 C1 2.7730 -0.6324 8.3308 C.3 1 DUKV 0.2800 + 11 C2 3.9024 -1.1853 9.2100 C.3 1 DUKV 0.2800 + 12 C3 3.4386 -1.2294 10.6684 C.3 1 DUKV 0.2800 + 13 C4 2.1446 -2.0493 10.7973 C.3 1 DUKV 0.2700 + 14 C5 1.0903 -1.5032 9.8015 C.3 1 DUKV 0.5600 + 15 C11 3.1825 -0.6349 6.8623 C.3 1 DUKV 0.1052 + 16 H11 1.3792 -1.0853 12.4192 H 1 DUKV 0.3600 + 17 H12 0.8814 -2.6178 12.3141 H 1 DUKV 0.3600 + 18 H112 4.2164 -0.3042 6.7237 H 1 DUKV 0.0000 + 19 H111 3.0419 -1.6189 6.4039 H 1 DUKV 0.0000 + 20 H1 2.5419 0.3954 8.6390 H 1 DUKV 0.0000 + 21 H4 2.3746 -3.0903 10.5365 H 1 DUKV 0.0000 + 22 H2 4.1810 -2.1964 8.8869 H 1 DUKV 0.0000 + 23 H3 3.3031 -0.2071 11.0448 H 1 DUKV 0.0000 + 24 H5 0.2191 -2.1677 9.8023 H 1 DUKV 0.0000 + 25 H21 5.6359 -0.6453 9.8652 H 1 DUKV 0.4000 + 26 H31 4.0256 -2.0527 12.3092 H 1 DUKV 0.4000 + 27 H51 -0.1183 -0.0232 9.6404 H 1 DUKV 0.4000 + 28 H120 3.2271 1.2182 4.2254 H 1 DUKV 0.5000 +@BOND + 1 1 4 2 + 2 1 5 1 + 3 1 6 2 + 4 1 15 1 + 5 2 14 1 + 6 2 27 1 + 7 3 10 1 + 8 3 14 1 + 9 5 28 1 + 10 7 11 1 + 11 7 25 1 + 12 8 12 1 + 13 8 26 1 + 14 9 13 1 + 15 9 16 1 + 16 9 17 1 + 17 10 11 1 + 18 10 15 1 + 19 10 20 1 + 20 11 12 1 + 21 11 22 1 + 22 12 13 1 + 23 12 23 1 + 24 13 14 1 + 25 13 21 1 + 26 14 24 1 + 27 15 18 1 + 28 15 19 1 +@SUBSTRUCTURE + 1 DUKV 1 +@COMMENT +COMMENT 2-AMINO-2,6-DIDEOXY-ALPHA-D-GLUCOPYRANOSE-6-SULFONIC ACID +@MOLECULE +DULTIN + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -2.7445 0.7339 5.6239 BR 1 DUKZ -0.2300 + 2 C1 -1.1172 1.0443 8.0047 C.3 1 DUKZ 0.2579 + 3 C2 -1.9940 0.0298 7.2896 C.3 1 DUKZ 0.2300 + 4 C3 -3.1199 -0.2319 8.2822 C.3 1 DUKZ 0.2700 + 5 N1 -3.3475 1.0463 8.9959 N.3 1 DUKZ -0.7496 + 6 C5 -3.5196 0.8413 10.4405 C.3 1 DUKZ 0.2700 + 7 C6 -2.1254 0.6207 11.0182 C.3 1 DUKZ 0.0000 + 8 C7 -1.2119 1.3649 10.0659 C.3 1 DUKZ 0.2579 + 9 C8 -2.0825 1.8278 8.8958 C.3 1 DUKZ 0.2096 + 10 C9 -0.0852 1.7899 7.1672 C.3 1 DUKZ 0.2800 + 11 O1 -0.4639 0.4592 9.1926 O.3 1 DUKZ -0.5158 + 12 O2 0.8449 2.4715 8.0144 O.3 1 DUKZ -0.6800 + 13 H2 -1.4550 -0.8823 7.0173 H 1 DUKZ 0.0000 + 14 H3 -2.8006 -1.0286 8.9665 H 1 DUKZ 0.0000 + 15 H31 -4.0473 -0.5735 7.8103 H 1 DUKZ 0.0000 + 16 H5 -4.2076 0.0234 10.6809 H 1 DUKZ 0.0000 + 17 H51 -3.9509 1.7553 10.8681 H 1 DUKZ 0.0000 + 18 H6 -1.8745 -0.4448 11.0628 H 1 DUKZ 0.0000 + 19 H61 -2.0615 1.0254 12.0334 H 1 DUKZ 0.0000 + 20 H7 -0.5545 2.1187 10.5090 H 1 DUKZ 0.0000 + 21 H8 -2.1838 2.9042 8.7450 H 1 DUKZ 0.0000 + 22 H9 0.4885 1.0981 6.5419 H 1 DUKZ 0.0000 + 23 H91 -0.5480 2.5410 6.5211 H 1 DUKZ 0.0000 + 24 H21 1.1777 1.7953 8.6365 H 1 DUKZ 0.4000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 2 9 1 + 4 2 10 1 + 5 2 11 1 + 6 3 4 1 + 7 3 13 1 + 8 4 5 1 + 9 4 14 1 + 10 4 15 1 + 11 5 6 1 + 12 5 9 1 + 13 6 7 1 + 14 6 16 1 + 15 6 17 1 + 16 7 8 1 + 17 7 18 1 + 18 7 19 1 + 19 8 9 1 + 20 8 11 1 + 21 8 20 1 + 22 9 21 1 + 23 10 12 1 + 24 10 22 1 + 25 10 23 1 + 26 12 24 1 +@SUBSTRUCTURE + 1 DUKZ 1 +@COMMENT +COMMENT 2ALPHA-BROMO-1BETA,7BETA-EPOXY-TRACHELANTHAMIDINE +@MOLECULE +DUMHIC + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 8.6734 9.3292 1.1883 O.3 1 DULY -0.5600 + 2 C2 9.3325 9.3127 -0.0804 C.3 1 DULY 0.2800 + 3 C3 10.1166 8.0330 -0.3387 C.3 1 DULY 0.2800 + 4 O3 9.2451 6.9526 -0.6780 O.3 1 DULY -0.4300 + 5 C34 9.8973 5.8342 -0.2785 C.2 1 DULY 0.6800 + 6 S1 9.4310 4.3188 -0.6879 S.2 1 DULY -0.3800 + 7 C4 10.8672 7.4863 0.8527 C.3 1 DULY 0.2800 + 8 O4 10.9674 6.0968 0.5120 O.3 1 DULY -0.4300 + 9 C5 10.1122 7.6527 2.1825 C.3 1 DULY 0.2800 + 10 O5 10.9420 7.3925 3.3304 O.3 1 DULY -0.5600 + 11 C51 11.3139 6.0295 3.4826 C.3 1 DULY 0.2800 + 12 C6 9.5741 9.0941 2.2729 C.3 1 DULY 0.5600 + 13 O6 10.6534 10.0345 2.2606 O.3 1 DULY -0.5600 + 14 C61 10.2445 11.3095 2.7392 C.3 1 DULY 0.2800 + 15 H21 8.5541 9.4347 -0.8411 H 1 DULY 0.0000 + 16 H22 9.9918 10.1855 -0.1464 H 1 DULY 0.0000 + 17 H3 10.7789 8.1789 -1.2015 H 1 DULY 0.0000 + 18 H4 11.8767 7.9059 0.9229 H 1 DULY 0.0000 + 19 H5 9.2567 6.9648 2.2193 H 1 DULY 0.0000 + 20 H511 12.0826 5.7575 2.7552 H 1 DULY 0.0000 + 21 H512 10.4458 5.3697 3.3925 H 1 DULY 0.0000 + 22 H513 11.7406 5.9049 4.4818 H 1 DULY 0.0000 + 23 H6 9.0178 9.1946 3.2132 H 1 DULY 0.0000 + 24 H611 9.9289 11.2430 3.7848 H 1 DULY 0.0000 + 25 H612 9.4350 11.7152 2.1251 H 1 DULY 0.0000 + 26 H613 11.0998 11.9878 2.6784 H 1 DULY 0.0000 +@BOND + 1 1 2 1 + 2 1 12 1 + 3 2 3 1 + 4 2 15 1 + 5 2 16 1 + 6 3 4 1 + 7 3 7 1 + 8 3 17 1 + 9 4 5 1 + 10 5 6 2 + 11 5 8 1 + 12 7 8 1 + 13 7 9 1 + 14 7 18 1 + 15 9 10 1 + 16 9 12 1 + 17 9 19 1 + 18 10 11 1 + 19 11 20 1 + 20 11 21 1 + 21 11 22 1 + 22 12 13 1 + 23 12 23 1 + 24 13 14 1 + 25 14 24 1 + 26 14 25 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 DULY 1 +@COMMENT +COMMENT METHYL 2-O-METHYL-3,4-O-THIOCARBONYL-BETA-L-ARABINOSIDE +@MOLECULE +DUMPAC + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.8901 1.2914 3.4350 O.3 1 UNCH -0.5158 + 2 C2 3.5194 2.3018 2.4613 C.3 1 UNCH 0.2579 + 3 C3 3.4983 3.3905 3.5719 C.3 1 UNCH 0.0000 + 4 C4 4.3385 2.3351 4.3422 C.3 1 UNCH 0.2579 + 5 C5 4.1222 4.7450 3.1924 C.3 1 UNCH 0.2700 + 6 C6 2.0459 3.5336 4.1031 C.3 1 UNCH 0.2700 + 7 N7 5.4617 4.6334 2.5929 N.3 1 UNCH -0.5330 + 8 C8 6.5162 5.1033 3.4875 C.3 1 UNCH 0.2700 + 9 N9 5.5700 5.0317 1.2747 N.2 1 UNCH 1.0330 + 10 O10 4.5887 4.8150 0.5581 O.3 1 UNCH -0.5200 + 11 O11 6.6402 5.5325 0.9236 O.2 1 UNCH -0.5200 + 12 N12 1.8295 4.6049 5.1036 N.3 1 UNCH -0.5330 + 13 C13 0.4050 4.9564 5.1425 C.3 1 UNCH 0.2700 + 14 N14 2.3615 4.3164 6.3445 N.2 1 UNCH 1.0330 + 15 O15 1.5791 4.0459 7.2571 O.3 1 UNCH -0.5200 + 16 O16 3.5903 4.3841 6.4122 O.2 1 UNCH -0.5200 + 17 H21 4.2873 2.3731 1.6859 H 1 UNCH 0.0000 + 18 H22 2.5622 2.0719 1.9834 H 1 UNCH 0.0000 + 19 H41 4.0381 2.1087 5.3678 H 1 UNCH 0.0000 + 20 H42 5.4271 2.4355 4.3042 H 1 UNCH 0.0000 + 21 H51 3.4233 5.2855 2.5389 H 1 UNCH 0.0000 + 22 H52 4.1833 5.3850 4.0813 H 1 UNCH 0.0000 + 23 H61 1.6713 2.5741 4.4879 H 1 UNCH 0.0000 + 24 H62 1.4238 3.7665 3.2268 H 1 UNCH 0.0000 + 25 H81 6.5081 6.1950 3.5879 H 1 UNCH 0.0000 + 26 H82 6.4012 4.6728 4.4890 H 1 UNCH 0.0000 + 27 H83 7.5078 4.7889 3.1412 H 1 UNCH 0.0000 + 28 H131 -0.2321 4.1072 5.4179 H 1 UNCH 0.0000 + 29 H132 0.0757 5.3231 4.1631 H 1 UNCH 0.0000 + 30 H133 0.2210 5.7774 5.8463 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 2 3 1 + 4 2 17 1 + 5 2 18 1 + 6 3 4 1 + 7 3 5 1 + 8 3 6 1 + 9 4 19 1 + 10 4 20 1 + 11 5 7 1 + 12 5 21 1 + 13 5 22 1 + 14 6 12 1 + 15 6 23 1 + 16 6 24 1 + 17 7 8 1 + 18 7 9 1 + 19 8 25 1 + 20 8 26 1 + 21 8 27 1 + 22 9 10 1 + 23 9 11 2 + 24 12 13 1 + 25 12 14 1 + 26 13 28 1 + 27 13 29 1 + 28 13 30 1 + 29 14 15 1 + 30 14 16 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,3-BIS(METHYL-NITRAMINO-METHYL)-OXETANE +@MOLECULE +DUPHEB + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.2061 3.1854 4.6184 S.3 1 UNCH -0.3310 + 2 CL1 0.8737 0.0065 1.4631 CL 1 UNCH -0.1770 + 3 C1 5.3168 2.4837 2.3679 C.2 1 UNCH 0.0544 + 4 C2 4.2462 2.1942 3.1347 C.2 1 UNCH 0.2010 + 5 C3 2.5663 0.3392 3.5895 C.2 1 UNCH 0.1000 + 6 C4 1.4285 -0.3192 3.0716 C.2 1 UNCH 0.1770 + 7 C5 0.7148 -1.2519 3.8306 C.2 1 UNCH -0.1500 + 8 C6 1.1198 -1.5437 5.1299 C.2 1 UNCH -0.1500 + 9 C7 2.2351 -0.9046 5.6634 C.2 1 UNCH -0.1500 + 10 C8 2.9479 0.0292 4.9018 C.2 1 UNCH -0.1500 + 11 C9 2.5035 3.7973 4.5404 C.3 1 UNCH 0.2300 + 12 N1 5.5477 1.8608 1.0912 N.2 1 UNCH 0.8356 + 13 N2 3.2282 1.3110 2.7953 N.3 1 UNCH -0.6000 + 14 O1 4.6783 1.1230 0.6075 O.3 1 UNCH -0.5200 + 15 O2 6.6265 2.1323 0.5503 O.2 1 UNCH -0.5200 + 16 H1 6.1116 3.1777 2.5974 H 1 UNCH 0.1500 + 17 H5 -0.1561 -1.7503 3.4132 H 1 UNCH 0.1500 + 18 H6 0.5690 -2.2686 5.7240 H 1 UNCH 0.1500 + 19 H7 2.5587 -1.1328 6.6766 H 1 UNCH 0.1500 + 20 H8 3.8238 0.4837 5.3540 H 1 UNCH 0.1500 + 21 H19 2.3586 4.5449 5.3250 H 1 UNCH 0.0000 + 22 H29 2.3078 4.2693 3.5735 H 1 UNCH 0.0000 + 23 H39 1.7861 2.9895 4.7030 H 1 UNCH 0.0000 + 24 H2 3.2595 0.9952 1.8166 H 1 UNCH 0.4000 +@BOND + 1 1 4 1 + 2 1 11 1 + 3 2 6 1 + 4 3 4 2 + 5 3 12 1 + 6 3 16 1 + 7 4 13 1 + 8 5 6 2 + 9 5 10 1 + 10 5 13 1 + 11 6 7 1 + 12 7 8 2 + 13 7 17 1 + 14 8 9 1 + 15 8 18 1 + 16 9 10 2 + 17 9 19 1 + 18 10 20 1 + 19 11 21 1 + 20 11 22 1 + 21 11 23 1 + 22 12 14 1 + 23 12 15 2 + 24 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(O-CHLOROANILINO)-1-METHYLTHIO-2-NITROETHYLENE +@MOLECULE +DUPTAJ + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.4285 1.4570 3.6344 N.3 1 DUPT 0.3172 + 2 C2 0.4228 0.6678 3.1397 C.2 1 DUPT -0.3016 + 3 C3 -0.7215 0.9745 3.8469 C.2 1 DUPT -0.1500 + 4 C4 -0.3757 1.9514 4.8179 C.2 1 DUPT -0.1500 + 5 C5 0.9711 2.2169 4.6795 C.2 1 DUPT -0.3016 + 6 S6 3.0654 1.3206 3.1887 S.1 1 DUPT 1.2950 + 7 O7 3.6836 2.5792 3.5610 O.2 1 DUPT -0.6500 + 8 O8 3.0647 0.8308 1.8231 O.2 1 DUPT -0.6500 + 9 C9 3.6710 0.0444 4.2570 C.2 1 DUPT -0.0090 + 10 C10 3.6226 -1.2884 3.8373 C.2 1 DUPT -0.1500 + 11 C11 4.1037 -2.2897 4.6804 C.2 1 DUPT -0.1500 + 12 C12 4.6351 -1.9578 5.9279 C.2 1 DUPT -0.1500 + 13 C13 4.6932 -0.6241 6.3361 C.2 1 DUPT -0.1500 + 14 C14 4.2145 0.3839 5.4996 C.2 1 DUPT -0.1500 + 15 H2 0.5969 -0.0257 2.3267 H 1 DUPT 0.1500 + 16 H3 -1.6996 0.5370 3.6878 H 1 DUPT 0.1500 + 17 H4 -1.0384 2.4052 5.5448 H 1 DUPT 0.1500 + 18 H5 1.6276 2.8861 5.2211 H 1 DUPT 0.1500 + 19 H10 3.2206 -1.5554 2.8622 H 1 DUPT 0.1500 + 20 H11 4.0706 -3.3299 4.3644 H 1 DUPT 0.1500 + 21 H12 5.0124 -2.7411 6.5816 H 1 DUPT 0.1500 + 22 H13 5.1177 -0.3715 7.3051 H 1 DUPT 0.1500 + 23 H14 4.2743 1.4215 5.8213 H 1 DUPT 0.1500 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 2 1 + 4 2 15 1 + 5 2 3 2 + 6 3 16 1 + 7 3 4 1 + 8 4 17 1 + 9 4 5 2 + 10 5 18 1 + 11 6 9 1 + 12 6 8 2 + 13 6 7 2 + 14 9 14 1 + 15 9 10 2 + 16 10 19 1 + 17 10 11 1 + 18 11 20 1 + 19 11 12 2 + 20 12 21 1 + 21 12 13 1 + 22 13 22 1 + 23 13 14 2 + 24 14 23 1 +@SUBSTRUCTURE + 1 DUPT 1 +@COMMENT +COMMENT 1-PHENYLSULFONYL-PYRROLE +@MOLECULE +DURDID + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.9443 -1.6286 8.4086 C.2 1 UNCH -0.1742 + 2 C2 5.1435 -2.4380 9.4491 C.2 1 UNCH -0.2882 + 3 C3 5.3426 -1.6309 10.6984 C.3 1 UNCH 0.2372 + 4 C4 4.6992 -1.8470 6.9710 C.3 1 UNCH 0.1382 + 5 C5 6.7397 -1.7870 11.2853 C.3 1 UNCH 0.0000 + 6 C6 4.2337 -1.8436 11.7211 C.3 1 UNCH 0.0000 + 7 N1 5.2185 -0.2492 10.1641 N.2 1 UNCH 0.5340 + 8 N2 4.9948 -0.2650 8.8763 N.2 1 UNCH 0.6690 + 9 O1 5.3182 0.8074 10.8745 O.3 1 UNCH -0.6330 + 10 O2 4.8515 0.7991 8.1902 O.3 1 UNCH -0.6330 + 11 H21 5.1608 -3.5190 9.4082 H 1 UNCH 0.1500 + 12 H41 4.6824 -2.9161 6.7354 H 1 UNCH 0.0000 + 13 H42 3.7351 -1.4242 6.6712 H 1 UNCH 0.0000 + 14 H43 5.4860 -1.3846 6.3667 H 1 UNCH 0.0000 + 15 H51 6.8929 -1.1143 12.1369 H 1 UNCH 0.0000 + 16 H52 7.5182 -1.5584 10.5475 H 1 UNCH 0.0000 + 17 H53 6.9044 -2.8118 11.6368 H 1 UNCH 0.0000 + 18 H61 4.3476 -1.1717 12.5796 H 1 UNCH 0.0000 + 19 H62 4.2423 -2.8719 12.0997 H 1 UNCH 0.0000 + 20 H63 3.2427 -1.6549 11.2911 H 1 UNCH 0.0000 +@BOND + 1 1 8 1 + 2 1 4 1 + 3 1 2 2 + 4 2 11 1 + 5 2 3 1 + 6 3 7 1 + 7 3 6 1 + 8 3 5 1 + 9 4 14 1 + 10 4 13 1 + 11 4 12 1 + 12 5 17 1 + 13 5 16 1 + 14 5 15 1 + 15 6 20 1 + 16 6 19 1 + 17 6 18 1 + 18 7 9 1 + 19 7 8 2 + 20 8 10 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,5,5-TRIMETHYL-3-PYRAZOLINE N,N'-DIOXIDE +@MOLECULE +DUTHIJ + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 6.5864 0.0659 12.8160 C.2 1 DUTH 0.0825 + 2 C3 6.5342 -1.1560 12.1462 C.2 1 DUTH -0.1500 + 3 C4 7.1955 -1.3084 10.9266 C.2 1 DUTH -0.1500 + 4 C5 7.9079 -0.2409 10.3795 C.2 1 DUTH -0.1500 + 5 C6 7.9693 0.9780 11.0557 C.2 1 DUTH -0.1500 + 6 C7 7.3213 1.1262 12.2800 C.2 1 DUTH 0.0825 + 7 C9 7.0531 2.2814 14.2684 C.3 1 DUTH 0.2800 + 8 C10 5.7434 1.4970 14.4637 C.3 1 DUTH 0.6650 + 9 C11 5.4797 1.4379 15.9522 C.2 1 DUTH 0.6038 + 10 C13 4.7045 2.0304 18.0266 C.3 1 DUTH 0.4895 + 11 C14 5.4171 0.6667 18.1095 C.3 1 DUTH 0.4895 + 12 C17 3.4945 1.4538 13.6148 C.3 1 DUTH 0.2800 + 13 O1 5.8911 0.1466 13.9936 O.3 1 DUTH -0.3625 + 14 O8 7.4451 2.3424 12.8947 O.3 1 DUTH -0.3625 + 15 O16 4.6639 2.2306 13.8478 O.3 1 DUTH -0.5600 + 16 N12 4.8264 2.3854 16.6063 N.3 1 DUTH -0.7939 + 17 N15 5.8492 0.4289 16.7244 N.2 1 DUTH -0.7939 + 18 H3 5.9702 -1.9891 12.5566 H 1 DUTH 0.1500 + 19 H4 7.1507 -2.2572 10.3960 H 1 DUTH 0.1500 + 20 H5 8.4172 -0.3584 9.4253 H 1 DUTH 0.1500 + 21 H6 8.5293 1.8066 10.6292 H 1 DUTH 0.1500 + 22 H91 6.9352 3.3155 14.6117 H 1 DUTH 0.0000 + 23 H92 7.8772 1.8320 14.8382 H 1 DUTH 0.0000 + 24 H12 4.4575 3.1864 16.0965 H 1 DUTH 0.4500 + 25 H131 5.1993 2.7896 18.6380 H 1 DUTH 0.0000 + 26 H132 3.6477 1.9571 18.2964 H 1 DUTH 0.0000 + 27 H141 6.2913 0.6999 18.7650 H 1 DUTH 0.0000 + 28 H142 4.7390 -0.1313 18.4233 H 1 DUTH 0.0000 + 29 H15 6.3199 -0.3779 16.3203 H 1 DUTH 0.4500 + 30 H171 3.1628 0.9551 14.5301 H 1 DUTH 0.0000 + 31 H172 3.6699 0.7193 12.8240 H 1 DUTH 0.0000 + 32 H173 2.7012 2.1282 13.2809 H 1 DUTH 0.0000 +@BOND + 1 1 13 1 + 2 1 6 1 + 3 1 2 2 + 4 2 18 1 + 5 2 3 1 + 6 3 19 1 + 7 3 4 2 + 8 4 20 1 + 9 4 5 1 + 10 5 21 1 + 11 5 6 2 + 12 6 14 1 + 13 7 23 1 + 14 7 22 1 + 15 7 14 1 + 16 7 8 1 + 17 8 15 1 + 18 8 13 1 + 19 8 9 1 + 20 9 17 2 + 21 9 16 am + 22 10 26 1 + 23 10 25 1 + 24 10 16 1 + 25 10 11 1 + 26 11 28 1 + 27 11 27 1 + 28 11 17 1 + 29 12 32 1 + 30 12 31 1 + 31 12 30 1 + 32 12 15 1 + 33 16 24 1 + 34 17 29 1 +@SUBSTRUCTURE + 1 DUTH 1 +@COMMENT +COMMENT (+)-2-(2-(2-METHOXY-1,4-BENZODIOXAN))-2-IMIDAZOLINE HYDROBR +@MOLECULE +DUVHUX10 + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.2400 0.9608 1.9737 S.3 1 UNCH -0.1010 + 2 S2 0.1507 -0.6942 2.4054 S.3 1 UNCH -0.1410 + 3 S3 1.0543 -3.4415 1.6502 S.2 1 UNCH -0.3800 + 4 N1 4.1420 2.7321 -2.2700 N.2 1 UNCH -0.6200 + 5 N2 3.8133 5.5472 -2.3071 N.2 1 UNCH -0.6200 + 6 C1 3.2817 3.3569 -1.4275 C.2 1 UNCH 0.3384 + 7 C2 3.1292 4.7418 -1.4560 C.2 1 UNCH 0.1600 + 8 C3 4.6661 4.9094 -3.1377 C.2 1 UNCH 0.1600 + 9 C4 4.8262 3.5348 -3.1191 C.2 1 UNCH 0.1600 + 10 C5 2.5141 2.5281 -0.4859 C.2 1 UNCH -0.1784 + 11 C6 2.6327 1.1899 -0.4021 C.2 1 UNCH -0.1500 + 12 C7 1.0836 -1.7851 1.3915 C.2 1 UNCH 0.5066 + 13 C8 1.8246 -1.0387 0.3198 C.2 1 UNCH -0.1238 + 14 C9 1.9126 0.2986 0.5029 C.2 1 UNCH 0.1010 + 15 C10 2.3490 -1.8231 -0.8492 C.3 1 UNCH 0.1382 + 16 H2 2.4455 5.2557 -0.7888 H 1 UNCH 0.1500 + 17 H3 5.2224 5.5369 -3.8247 H 1 UNCH 0.1500 + 18 H4 5.5149 3.0368 -3.7920 H 1 UNCH 0.1500 + 19 H5 1.8206 3.0707 0.1489 H 1 UNCH 0.1500 + 20 H6 3.3412 0.7095 -1.0753 H 1 UNCH 0.1500 + 21 H101 2.6327 -1.1950 -1.6975 H 1 UNCH 0.0000 + 22 H102 1.5845 -2.5077 -1.2323 H 1 UNCH 0.0000 + 23 H103 3.2284 -2.4055 -0.5560 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 2 12 1 + 4 3 12 2 + 5 4 6 2 + 6 4 9 1 + 7 5 7 2 + 8 5 8 1 + 9 6 7 1 + 10 6 10 1 + 11 7 16 1 + 12 8 9 2 + 13 8 17 1 + 14 9 18 1 + 15 10 11 2 + 16 10 19 1 + 17 11 14 1 + 18 11 20 1 + 19 12 13 1 + 20 13 14 2 + 21 13 15 1 + 22 15 21 1 + 23 15 22 1 + 24 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-METHYL-5-(2-(2-PYRAZINYL)VINYL)-3H-1,2-DITHIOLE-3-THIONE +@MOLECULE +DUVXIB + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.8266 1.4406 7.8138 N.3 1 DUVX -0.4900 + 2 C2 3.0248 1.8898 9.1065 C.2 1 DUVX 0.6900 + 3 N3 2.5268 1.1035 10.1391 N.3 1 DUVX -0.4231 + 4 C4 1.8684 -0.0710 9.8177 C.2 1 DUVX 0.3518 + 5 C5 1.6853 -0.4963 8.4948 C.2 1 DUVX 0.2028 + 6 C6 2.1862 0.2895 7.3940 C.2 1 DUVX 0.7160 + 7 N7 1.0196 -1.6596 8.4744 N.2 1 DUVX -0.7068 + 8 N8 0.8381 -1.8709 9.7922 N.3 1 DUVX 0.5660 + 9 N9 1.3231 -0.9554 10.6562 N.2 1 DUVX -0.7068 + 10 O2 3.6245 2.9500 9.2790 O.2 1 DUVX -0.5700 + 11 C3 2.6955 1.5086 11.5223 C.3 1 DUVX 0.3001 + 12 O6 2.0781 0.0057 6.2054 O.2 1 DUVX -0.5700 + 13 H1 3.1976 2.0294 7.0834 H 1 DUVX 0.3700 + 14 H13 3.2616 0.7379 12.0548 H 1 DUVX 0.0000 + 15 H23 3.2349 2.4562 11.6028 H 1 DUVX 0.0000 + 16 H33 1.7101 1.6271 11.9836 H 1 DUVX 0.0000 + 17 H8 0.3482 -2.6989 10.1260 H 1 DUVX 0.2700 +@BOND + 1 1 13 1 + 2 1 6 am + 3 1 2 am + 4 2 10 2 + 5 2 3 am + 6 3 11 1 + 7 3 4 am + 8 4 9 2 + 9 4 5 1 + 10 5 7 2 + 11 5 6 1 + 12 6 12 2 + 13 7 8 1 + 14 8 17 1 + 15 8 9 1 + 16 11 16 1 + 17 11 15 1 + 18 11 14 1 +@SUBSTRUCTURE + 1 DUVX 1 +@COMMENT +COMMENT 3-METHYL-8-AZAXANTHINE MONOHYDRATE (ANTIALLERGIC AGENT) +@MOLECULE +DUWGAD + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 5.9782 5.2218 1.6921 P 1 DUWG 0.6712 + 2 CL1 6.3596 3.1580 1.7211 CL 1 DUWG -0.2112 + 3 N1 7.4836 5.9917 1.5839 N.3 1 DUWG -0.6510 + 4 C11 7.7136 6.9166 0.4843 C.3 1 DUWG 0.2700 + 5 C2 8.0554 6.4519 2.8402 C.3 1 DUWG 0.2700 + 6 C3 7.4039 5.6075 3.9236 C.3 1 DUWG 0.5030 + 7 N4 5.9405 5.4542 3.5118 N.3 1 DUWG -0.8580 + 8 C41 5.1434 6.7368 3.7723 C.3 1 DUWG 0.5030 + 9 C42 5.2586 4.3329 4.2742 C.3 1 DUWG 0.5030 + 10 H111 8.7729 7.1924 0.4258 H 1 DUWG 0.0000 + 11 H112 7.1278 7.8366 0.5962 H 1 DUWG 0.0000 + 12 H113 7.4592 6.4628 -0.4810 H 1 DUWG 0.0000 + 13 H21 9.1435 6.3264 2.8566 H 1 DUWG 0.0000 + 14 H22 7.8411 7.5134 3.0175 H 1 DUWG 0.0000 + 15 H31 7.4412 6.0770 4.9123 H 1 DUWG 0.0000 + 16 H32 7.8521 4.6075 3.9796 H 1 DUWG 0.0000 + 17 H411 5.1931 6.9521 4.8447 H 1 DUWG 0.0000 + 18 H412 4.1016 6.5710 3.4762 H 1 DUWG 0.0000 + 19 H413 5.5709 7.5753 3.2140 H 1 DUWG 0.0000 + 20 H421 5.8956 3.4452 4.3000 H 1 DUWG 0.0000 + 21 H422 5.1149 4.6692 5.3069 H 1 DUWG 0.0000 + 22 H423 4.2858 4.1225 3.8184 H 1 DUWG 0.0000 +@BOND + 1 1 7 1 + 2 1 3 1 + 3 1 2 1 + 4 3 5 1 + 5 3 4 1 + 6 4 12 1 + 7 4 11 1 + 8 4 10 1 + 9 5 14 1 + 10 5 13 1 + 11 5 6 1 + 12 6 16 1 + 13 6 15 1 + 14 6 7 1 + 15 7 9 1 + 16 7 8 1 + 17 8 19 1 + 18 8 18 1 + 19 8 17 1 + 20 9 22 1 + 21 9 21 1 + 22 9 20 1 +@SUBSTRUCTURE + 1 DUWG 1 +@COMMENT +COMMENT 2-CHLORO-1,3,3-TRIMETHYL-1,3,2-DIAZAPHOSPHOLIDINIUM CHLORID +@MOLECULE +DUWKUB + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 9.5649 -2.8192 1.3687 CL 1 UNCH -0.2900 + 2 CL2 7.1066 -2.9116 -0.1980 CL 1 UNCH -0.2900 + 3 CL3 7.7382 -5.0424 1.7087 CL 1 UNCH -0.2900 + 4 O1 7.1290 1.9940 1.8462 O.3 1 UNCH 0.2418 + 5 C4 5.8950 0.2221 1.8437 C.2 1 UNCH 0.3718 + 6 O9 5.4380 -2.2295 3.9999 O.3 1 UNCH -0.2170 + 7 N6 7.6337 -1.2813 2.9215 N.3 1 UNCH -0.5330 + 8 N5 5.8828 1.5047 1.4903 N.2 1 UNCH -0.4097 + 9 N2 7.9178 1.0062 2.4159 N.2 1 UNCH -0.4097 + 10 C3 7.1619 -0.0954 2.4298 C.2 1 UNCH 0.3718 + 11 C7 7.0754 -2.4834 2.4786 C.2 1 UNCH 0.4390 + 12 N8 5.9527 -2.9892 2.9363 N.2 1 UNCH -0.5130 + 13 C11 7.8364 -3.2948 1.3762 C.3 1 UNCH 0.9310 + 14 N12 4.8551 -0.6180 1.6510 N.3 1 UNCH -0.8830 + 15 C10 4.4123 -2.9825 4.6405 C.3 1 UNCH 0.2800 + 16 H101 4.0129 -2.3884 5.4664 H 1 UNCH 0.0000 + 17 H102 4.8223 -3.9149 5.0403 H 1 UNCH 0.0000 + 18 H103 3.6040 -3.1963 3.9347 H 1 UNCH 0.0000 + 19 H122 4.7867 -1.4373 2.2598 H 1 UNCH 0.4000 + 20 H121 3.9515 -0.1908 1.4761 H 1 UNCH 0.4000 + 21 H6 8.6522 -1.2742 2.9280 H 1 UNCH 0.4000 +@BOND + 1 1 13 1 + 2 2 13 1 + 3 3 13 1 + 4 4 8 1 + 5 4 9 1 + 6 5 8 2 + 7 5 10 1 + 8 5 14 am + 9 6 12 1 + 10 6 15 1 + 11 7 10 am + 12 7 11 am + 13 7 21 1 + 14 9 10 2 + 15 11 12 2 + 16 11 13 1 + 17 14 19 1 + 18 14 20 1 + 19 15 16 1 + 20 15 17 1 + 21 15 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(4-AMINO-3-FURAZANYL)-2,2,2-TRICHLORO-N'-METHOXYACETAMIDI +@MOLECULE +DUWRIW + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0245 3.8068 10.6757 C.2 1 UNCH 0.2811 + 2 N1 -0.8465 3.5879 11.8348 N.2 1 UNCH 0.8356 + 3 O1 -0.3178 3.1930 12.8857 O.3 1 UNCH -0.5200 + 4 O2 -2.0612 3.7991 11.7011 O.2 1 UNCH -0.5200 + 5 C2 1.3060 3.4258 10.6918 C.2 1 UNCH -0.2882 + 6 C3 2.1820 3.6775 9.5166 C.3 1 UNCH 0.4182 + 7 O3 2.5629 2.4219 8.9693 O.3 1 UNCH -0.6800 + 8 C4 1.5184 4.5779 8.4529 C.3 1 UNCH 0.2800 + 9 O4 1.7607 5.9594 8.7816 O.3 1 UNCH -0.6800 + 10 C5 -0.0112 4.3804 8.3721 C.3 1 UNCH 0.2800 + 11 O5 -0.6712 4.3910 9.6539 O.3 1 UNCH -0.3567 + 12 C6 -0.4488 3.1329 7.5854 C.3 1 UNCH 0.2800 + 13 O6 0.1298 1.9342 8.1008 O.3 1 UNCH -0.6800 + 14 H2 1.7511 2.9395 11.5544 H 1 UNCH 0.1500 + 15 H3 3.1010 4.1576 9.8721 H 1 UNCH 0.0000 + 16 H30 1.7359 1.9766 8.6803 H 1 UNCH 0.4000 + 17 H4 1.9627 4.4059 7.4655 H 1 UNCH 0.0000 + 18 H40 2.7221 6.1098 8.7339 H 1 UNCH 0.4000 + 19 H5 -0.4327 5.2453 7.8435 H 1 UNCH 0.0000 + 20 H61 -1.5375 3.0244 7.6373 H 1 UNCH 0.0000 + 21 H62 -0.1500 3.2217 6.5362 H 1 UNCH 0.0000 + 22 H60 -0.3673 1.1941 7.7001 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 5 2 + 3 1 11 1 + 4 2 3 1 + 5 2 4 2 + 6 5 6 1 + 7 5 14 1 + 8 6 7 1 + 9 6 8 1 + 10 6 15 1 + 11 7 16 1 + 12 8 9 1 + 13 8 10 1 + 14 8 17 1 + 15 9 18 1 + 16 10 11 1 + 17 10 12 1 + 18 10 19 1 + 19 12 13 1 + 20 12 20 1 + 21 12 21 1 + 22 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-DIDEOXY-1-NITRO-D-ARABINO-HEX-1-ENOPYRANOSE (AT 130 DEG +@MOLECULE +DUXTIZ + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.2081 1.6900 4.5020 C.2 1 UNCH 0.6300 + 2 N1 2.9468 1.7013 3.3492 N.3 1 UNCH -0.3945 + 3 O1 2.2859 1.3914 2.1426 O.3 1 UNCH -0.4355 + 4 O2 1.0372 1.3426 4.5863 O.2 1 UNCH -0.5700 + 5 H1 3.8728 2.1204 3.2992 H 1 UNCH 0.3700 + 6 H2 1.3690 1.1983 2.4328 H 1 UNCH 0.4000 + 7 C1B 2.9785 2.1808 5.7331 C.2 1 UNCH 0.6300 + 8 N1B 2.2398 2.1694 6.8860 N.3 1 UNCH -0.3945 + 9 O2B 4.1495 2.5281 5.6488 O.2 1 UNCH -0.5700 + 10 O1B 2.9007 2.4794 8.0925 O.3 1 UNCH -0.4355 + 11 H1B 1.3138 1.7503 6.9360 H 1 UNCH 0.3700 + 12 H2B 3.8177 2.6725 7.8023 H 1 UNCH 0.4000 +@BOND + 1 1 2 am + 2 1 4 2 + 3 1 7 1 + 4 2 3 1 + 5 2 5 1 + 6 3 6 1 + 7 7 8 am + 8 7 9 2 + 9 8 10 1 + 10 8 11 1 + 11 10 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT OXALYLHYDROXAMIC ACID +@MOLECULE +DUXWUO + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.6196 2.4016 20.2015 S.3 1 UNCH -0.3710 + 2 C2 5.0060 3.8291 19.2508 C.3 1 UNCH 0.6736 + 3 N3 5.1648 3.4405 17.8514 N.3 1 UNCH -0.2981 + 4 N4 5.8554 2.2688 17.5984 N.2 1 UNCH -0.5120 + 5 C5 6.1637 1.6868 18.7144 C.2 1 UNCH 0.6870 + 6 C6 5.7637 5.0934 19.6155 C.2 1 UNCH -0.1435 + 7 C7 5.1348 6.0797 20.3941 C.2 1 UNCH -0.1500 + 8 C8 5.8135 7.2456 20.7545 C.2 1 UNCH -0.1500 + 9 C9 7.1306 7.4417 20.3464 C.2 1 UNCH -0.1500 + 10 C10 7.7713 6.4736 19.5772 C.2 1 UNCH -0.1500 + 11 C11 7.0949 5.3074 19.2141 C.2 1 UNCH -0.1500 + 12 C12 4.5228 4.1357 16.8401 C.2 1 UNCH 0.5690 + 13 C13 4.7783 3.6332 15.4419 C.3 1 UNCH 0.0610 + 14 O14 3.7724 5.0881 17.0498 O.2 1 UNCH -0.5700 + 15 S15 7.0556 0.1397 18.8486 S.2 1 UNCH 0.2105 + 16 O16 8.1665 0.3778 19.8313 O.2 1 UNCH -0.5000 + 17 C17 7.7784 0.1680 17.1942 C.3 1 UNCH 0.1935 + 18 H2 3.9343 3.9525 19.4453 H 1 UNCH 0.0000 + 19 H7 4.1051 5.9511 20.7223 H 1 UNCH 0.1500 + 20 H8 5.3127 8.0022 21.3533 H 1 UNCH 0.1500 + 21 H9 7.6577 8.3496 20.6278 H 1 UNCH 0.1500 + 22 H10 8.8000 6.6256 19.2605 H 1 UNCH 0.1500 + 23 H11 7.6198 4.5658 18.6156 H 1 UNCH 0.1500 + 24 H131 4.3274 2.6458 15.3121 H 1 UNCH 0.0000 + 25 H132 5.8530 3.5877 15.2448 H 1 UNCH 0.0000 + 26 H133 4.3284 4.3222 14.7210 H 1 UNCH 0.0000 + 27 H171 8.4588 -0.6823 17.1013 H 1 UNCH 0.0000 + 28 H172 6.9911 0.0732 16.4425 H 1 UNCH 0.0000 + 29 H173 8.3418 1.0921 17.0424 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 1 + 4 2 6 1 + 5 2 18 1 + 6 3 4 1 + 7 3 12 am + 8 4 5 2 + 9 5 15 1 + 10 6 7 2 + 11 6 11 1 + 12 7 8 1 + 13 7 19 1 + 14 8 9 2 + 15 8 20 1 + 16 9 10 1 + 17 9 21 1 + 18 10 11 2 + 19 10 22 1 + 20 11 23 1 + 21 12 13 1 + 22 12 14 2 + 23 13 24 1 + 24 13 25 1 + 25 13 26 1 + 26 15 16 2 + 27 15 17 1 + 28 17 27 1 + 29 17 28 1 + 30 17 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (2S*)-3-ACETYL-5-((R*)-METHYLSULFINYL)-2-PHENYL-2,3-DIHYDRO +@MOLECULE +DUXXAV + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 9.5446 15.7067 4.1449 S.2 1 UNCH 0.2105 + 2 C2 10.7383 15.9551 5.4985 C.3 1 UNCH 0.6371 + 3 N3 10.0201 16.7526 6.4843 N.3 1 UNCH -0.2981 + 4 N4 8.8587 17.3761 6.0951 N.2 1 UNCH -0.5120 + 5 C5 8.5059 16.9726 4.9126 C.2 1 UNCH 0.6420 + 6 C6 11.9988 16.6153 4.9681 C.2 1 UNCH -0.1435 + 7 C7 13.1139 15.8176 4.6582 C.2 1 UNCH -0.1500 + 8 C8 14.2772 16.3875 4.1379 C.2 1 UNCH -0.1500 + 9 C9 14.3425 17.7604 3.9151 C.2 1 UNCH -0.1500 + 10 C10 13.2461 18.5658 4.2126 C.2 1 UNCH -0.1500 + 11 C11 12.0810 17.9994 4.7335 C.2 1 UNCH -0.1500 + 12 C12 10.4866 16.8418 7.7865 C.2 1 UNCH 0.5690 + 13 C13 9.6782 17.7149 8.7123 C.3 1 UNCH 0.0610 + 14 O14 11.4864 16.2431 8.1813 O.2 1 UNCH -0.5700 + 15 S15 7.0269 17.7044 4.1692 S.2 1 UNCH 0.2105 + 16 O16 7.3004 17.7260 2.6924 O.2 1 UNCH -0.5000 + 17 C17 5.9745 16.2730 4.5055 C.3 1 UNCH 0.1935 + 18 O18 8.8056 14.4186 4.3948 O.2 1 UNCH -0.5000 + 19 H2 10.9713 14.9804 5.9427 H 1 UNCH 0.0000 + 20 H11 11.2435 18.6571 4.9575 H 1 UNCH 0.1500 + 21 H10 13.2995 19.6381 4.0403 H 1 UNCH 0.1500 + 22 H9 15.2498 18.2033 3.5121 H 1 UNCH 0.1500 + 23 H8 15.1346 15.7592 3.9086 H 1 UNCH 0.1500 + 24 H7 13.0890 14.7417 4.8252 H 1 UNCH 0.1500 + 25 H131 9.6223 18.7333 8.3182 H 1 UNCH 0.0000 + 26 H132 8.6741 17.3006 8.8369 H 1 UNCH 0.0000 + 27 H133 10.1636 17.7519 9.6921 H 1 UNCH 0.0000 + 28 H171 4.9605 16.5068 4.1721 H 1 UNCH 0.0000 + 29 H172 6.3340 15.3990 3.9588 H 1 UNCH 0.0000 + 30 H173 5.9604 16.0692 5.5789 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 18 2 + 4 2 3 1 + 5 2 6 1 + 6 2 19 1 + 7 3 4 1 + 8 3 12 am + 9 4 5 2 + 10 5 15 1 + 11 6 7 2 + 12 6 11 1 + 13 7 8 1 + 14 7 24 1 + 15 8 9 2 + 16 8 23 1 + 17 9 10 1 + 18 9 22 1 + 19 10 11 2 + 20 10 21 1 + 21 11 20 1 + 22 12 13 1 + 23 12 14 2 + 24 13 25 1 + 25 13 26 1 + 26 13 27 1 + 27 15 16 2 + 28 15 17 1 + 29 17 28 1 + 30 17 29 1 + 31 17 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1R*,2S*)-3-ACETYL-5-((S*)-METHYLSULFINYL)-2-PHENYL-2,3-DIH +@MOLECULE +DUYNOA + 38 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.8410 10.6773 2.1527 C.3 1 UNCH 0.5500 + 2 O2 1.6007 11.2104 0.8460 O.3 1 UNCH -0.5600 + 3 C3 2.4721 12.3166 0.5495 C.3 1 UNCH 0.5500 + 4 N4 3.9081 11.9512 0.6404 N.3 1 UNCH -0.5400 + 5 C5 4.1701 11.3260 1.9743 C.3 1 UNCH 0.5400 + 6 C6 3.9384 12.4367 3.0419 C.3 1 UNCH 0.0000 + 7 C7 2.4927 12.9531 2.9842 C.3 1 UNCH 0.0000 + 8 C8 1.5704 11.7553 3.2253 C.3 1 UNCH 0.0000 + 9 N9 3.2404 10.1853 2.2613 N.3 1 UNCH -0.5400 + 10 C10 2.2125 13.4586 1.5606 C.3 1 UNCH 0.0000 + 11 C11 0.8173 9.5495 2.3834 C.3 1 UNCH 0.0000 + 12 C31 2.0886 12.8330 -0.8469 C.3 1 UNCH 0.0000 + 13 N41 4.3273 11.0942 -0.4772 N.3 1 UNCH -0.7200 + 14 C51 5.6461 10.8892 2.1353 C.3 1 UNCH 0.0000 + 15 C71 2.2564 14.0526 4.0183 C.3 1 UNCH 0.0000 + 16 N91 3.4658 9.0451 1.3317 N.3 1 UNCH -0.7200 + 17 H411 5.3243 11.2292 -0.6563 H 1 UNCH 0.3600 + 18 H412 4.2527 10.1140 -0.1787 H 1 UNCH 0.3600 + 19 H911 3.2091 8.1731 1.8016 H 1 UNCH 0.3600 + 20 H912 2.8047 9.1277 0.5465 H 1 UNCH 0.3600 + 21 H61 4.6369 13.2696 2.8777 H 1 UNCH 0.0000 + 22 H62 4.1553 12.0463 4.0464 H 1 UNCH 0.0000 + 23 H81 1.7208 11.3452 4.2330 H 1 UNCH 0.0000 + 24 H82 0.5254 12.0892 3.1657 H 1 UNCH 0.0000 + 25 H101 2.8393 14.3306 1.3301 H 1 UNCH 0.0000 + 26 H102 1.1661 13.7865 1.4942 H 1 UNCH 0.0000 + 27 H111 0.9790 9.0456 3.3425 H 1 UNCH 0.0000 + 28 H112 0.8385 8.8005 1.5843 H 1 UNCH 0.0000 + 29 H113 -0.2036 9.9506 2.3770 H 1 UNCH 0.0000 + 30 H311 2.7286 13.6632 -1.1646 H 1 UNCH 0.0000 + 31 H312 1.0488 13.1816 -0.8556 H 1 UNCH 0.0000 + 32 H313 2.1390 12.0393 -1.6010 H 1 UNCH 0.0000 + 33 H711 2.9167 14.9087 3.8417 H 1 UNCH 0.0000 + 34 H712 2.4465 13.6877 5.0336 H 1 UNCH 0.0000 + 35 H713 1.2230 14.4146 3.9817 H 1 UNCH 0.0000 + 36 H511 6.3253 11.7332 1.9649 H 1 UNCH 0.0000 + 37 H512 5.9380 10.0934 1.4419 H 1 UNCH 0.0000 + 38 H513 5.8353 10.5167 3.1494 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 9 1 + 4 1 11 1 + 5 2 3 1 + 6 3 4 1 + 7 3 10 1 + 8 3 12 1 + 9 4 5 1 + 10 4 13 1 + 11 5 6 1 + 12 5 9 1 + 13 5 14 1 + 14 6 7 1 + 15 6 21 1 + 16 6 22 1 + 17 7 8 1 + 18 7 10 1 + 19 7 15 1 + 20 8 23 1 + 21 8 24 1 + 22 9 16 1 + 23 10 25 1 + 24 10 26 1 + 25 11 27 1 + 26 11 28 1 + 27 11 29 1 + 28 12 30 1 + 29 12 31 1 + 30 12 32 1 + 31 13 17 1 + 32 13 18 1 + 33 14 36 1 + 34 14 37 1 + 35 14 38 1 + 36 15 33 1 + 37 15 34 1 + 38 15 35 1 + 39 16 19 1 + 40 16 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,9-DIAMINO-1,3,5,7-TETRAMETHYL-2,4,9-OXADIAZA-ADAMANTANE +@MOLECULE +DUYPES + 47 48 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O4 9.9586 -2.3766 -0.3618 O.3 1 DUYP -0.2147 + 2 O5 8.7303 1.3628 -2.0850 O.2 1 DUYP -0.5700 + 3 N1 12.1216 -2.9230 0.0257 N.2 1 DUYP -0.8334 + 4 N2 10.8227 -1.6093 1.6043 N.3 1 DUYP -0.8334 + 5 C2 12.0457 -3.6625 -1.2635 C.3 1 DUYP 0.4895 + 6 C3 13.3931 -3.0318 0.7502 C.3 1 DUYP 0.4895 + 7 C4 11.8507 -1.2806 2.5994 C.3 1 DUYP 0.4895 + 8 C5 9.4524 -1.1381 1.9466 C.3 1 DUYP 0.4895 + 9 C6 11.0181 -2.2923 0.4633 C.2 1 DUYP 0.8468 + 10 C7 9.6261 -1.3458 -1.2404 C.2 1 DUYP 0.0483 + 11 C8 10.3367 -0.2108 -1.3867 C.2 1 DUYP -0.1356 + 12 C9 9.8687 0.9306 -2.2169 C.2 1 DUYP 0.4694 + 13 C10 8.4202 -1.6654 -2.0267 C.2 1 DUYP 0.0284 + 14 C11 8.4978 -1.8251 -3.4185 C.2 1 DUYP -0.1500 + 15 C12 7.3608 -2.1607 -4.1566 C.2 1 DUYP -0.1500 + 16 C13 6.1400 -2.3460 -3.5117 C.2 1 DUYP -0.1500 + 17 C14 6.0530 -2.1959 -2.1293 C.2 1 DUYP -0.1500 + 18 C15 7.1884 -1.8599 -1.3885 C.2 1 DUYP -0.1500 + 19 C16 10.8494 1.5865 -3.1241 C.2 1 DUYP 0.0862 + 20 C17 10.5301 2.8512 -3.6358 C.2 1 DUYP -0.1500 + 21 C18 11.4137 3.5079 -4.4937 C.2 1 DUYP -0.1500 + 22 C19 12.6169 2.9027 -4.8509 C.2 1 DUYP -0.1500 + 23 C20 12.9371 1.6389 -4.3564 C.2 1 DUYP -0.1500 + 24 C21 12.0561 0.9776 -3.4963 C.2 1 DUYP -0.1500 + 25 H22 11.9635 -2.9466 -2.0861 H 1 DUYP 0.0000 + 26 H23 11.1862 -4.3399 -1.2535 H 1 DUYP 0.0000 + 27 H24 12.9439 -4.2660 -1.4226 H 1 DUYP 0.0000 + 28 H31 13.8713 -2.0516 0.8030 H 1 DUYP 0.0000 + 29 H32 14.0851 -3.7036 0.2329 H 1 DUYP 0.0000 + 30 H33 13.2213 -3.4509 1.7435 H 1 DUYP 0.0000 + 31 H41 12.1327 -2.1797 3.1513 H 1 DUYP 0.0000 + 32 H42 11.4700 -0.5465 3.3174 H 1 DUYP 0.0000 + 33 H43 12.7106 -0.8199 2.1100 H 1 DUYP 0.0000 + 34 H51 9.3586 -1.0124 3.0300 H 1 DUYP 0.0000 + 35 H52 9.2676 -0.1777 1.4590 H 1 DUYP 0.0000 + 36 H53 8.7056 -1.8786 1.6463 H 1 DUYP 0.0000 + 37 H8 11.2558 -0.0240 -0.8455 H 1 DUYP 0.1500 + 38 H11 9.4371 -1.6854 -3.9470 H 1 DUYP 0.1500 + 39 H12 7.4237 -2.2708 -5.2367 H 1 DUYP 0.1500 + 40 H13 5.2531 -2.5992 -4.0883 H 1 DUYP 0.1500 + 41 H14 5.0962 -2.3317 -1.6306 H 1 DUYP 0.1500 + 42 H15 7.0913 -1.7369 -0.3141 H 1 DUYP 0.1500 + 43 H17 9.5895 3.3324 -3.3712 H 1 DUYP 0.1500 + 44 H18 11.1594 4.4897 -4.8875 H 1 DUYP 0.1500 + 45 H19 13.3013 3.4150 -5.5241 H 1 DUYP 0.1500 + 46 H20 13.8723 1.1687 -4.6523 H 1 DUYP 0.1500 + 47 H21 12.3266 -0.0139 -3.1494 H 1 DUYP 0.1500 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 2 12 2 + 4 3 9 2 + 5 3 6 1 + 6 3 5 1 + 7 4 9 am + 8 4 8 1 + 9 4 7 1 + 10 5 27 1 + 11 5 26 1 + 12 5 25 1 + 13 6 30 1 + 14 6 29 1 + 15 6 28 1 + 16 7 33 1 + 17 7 32 1 + 18 7 31 1 + 19 8 36 1 + 20 8 35 1 + 21 8 34 1 + 22 10 13 1 + 23 10 11 2 + 24 11 37 1 + 25 11 12 1 + 26 12 19 1 + 27 13 18 1 + 28 13 14 2 + 29 14 38 1 + 30 14 15 1 + 31 15 39 1 + 32 15 16 2 + 33 16 40 1 + 34 16 17 1 + 35 17 41 1 + 36 17 18 2 + 37 18 42 1 + 38 19 24 1 + 39 19 20 2 + 40 20 43 1 + 41 20 21 1 + 42 21 44 1 + 43 21 22 2 + 44 22 45 1 + 45 22 23 1 + 46 23 46 1 + 47 23 24 2 + 48 24 47 1 +@SUBSTRUCTURE + 1 DUYP 1 +@COMMENT +COMMENT N,N,N',N'-TETRAMETHYL-O-((E)-3-OXO-1,3-DIPHENYL-1-PROPENYL) +@MOLECULE +DUYRAQ + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.4814 -0.1201 11.2351 P 1 UNCH -0.2228 + 2 P2 2.5682 1.9218 10.5020 P 1 UNCH -0.2228 + 3 N1 2.0776 -0.3883 11.7398 N.3 1 UNCH -0.4710 + 4 H1 2.4708 -1.2240 11.2977 H 1 UNCH 0.3600 + 5 N2 2.9907 0.7033 11.6026 N.3 1 UNCH -0.4710 + 6 H2 3.2017 1.0941 12.5252 H 1 UNCH 0.3600 + 7 C1 0.8002 1.4345 10.2922 C.3 1 UNCH 0.3338 + 8 C2 -0.3399 0.4500 12.8321 C.3 1 UNCH 0.1669 + 9 C3 -0.4292 -0.7604 13.7874 C.3 1 UNCH 0.0000 + 10 C4 0.3762 1.5953 13.5598 C.3 1 UNCH 0.0000 + 11 C5 -1.7793 0.8970 12.4979 C.3 1 UNCH 0.0000 + 12 C6 3.4161 1.3321 8.9260 C.3 1 UNCH 0.1669 + 13 C7 3.1150 -0.1189 8.5285 C.3 1 UNCH 0.0000 + 14 C8 2.9846 2.2629 7.7724 C.3 1 UNCH 0.0000 + 15 C9 4.9416 1.4848 9.1130 C.3 1 UNCH 0.0000 + 16 H11 0.1571 2.2476 10.6385 H 1 UNCH 0.0000 + 17 H12 0.5544 1.2760 9.2391 H 1 UNCH 0.0000 + 18 H31 -0.9644 -1.6019 13.3309 H 1 UNCH 0.0000 + 19 H32 -0.9641 -0.4948 14.7070 H 1 UNCH 0.0000 + 20 H33 0.5633 -1.1204 14.0829 H 1 UNCH 0.0000 + 21 H41 0.4661 2.4924 12.9399 H 1 UNCH 0.0000 + 22 H42 1.3786 1.3100 13.8941 H 1 UNCH 0.0000 + 23 H43 -0.1797 1.8886 14.4589 H 1 UNCH 0.0000 + 24 H51 -1.7941 1.7718 11.8382 H 1 UNCH 0.0000 + 25 H52 -2.3258 1.1702 13.4085 H 1 UNCH 0.0000 + 26 H53 -2.3493 0.1008 12.0037 H 1 UNCH 0.0000 + 27 H71 2.0468 -0.2955 8.3703 H 1 UNCH 0.0000 + 28 H72 3.4721 -0.8348 9.2754 H 1 UNCH 0.0000 + 29 H73 3.6187 -0.3737 7.5878 H 1 UNCH 0.0000 + 30 H81 3.2082 3.3142 7.9912 H 1 UNCH 0.0000 + 31 H82 1.9109 2.1897 7.5664 H 1 UNCH 0.0000 + 32 H83 3.5095 2.0056 6.8446 H 1 UNCH 0.0000 + 33 H91 5.2207 2.5149 9.3658 H 1 UNCH 0.0000 + 34 H92 5.4773 1.2186 8.1939 H 1 UNCH 0.0000 + 35 H93 5.3218 0.8339 9.9091 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 7 1 + 3 1 8 1 + 4 2 5 1 + 5 2 7 1 + 6 2 12 1 + 7 3 4 1 + 8 3 5 1 + 9 5 6 1 + 10 7 16 1 + 11 7 17 1 + 12 8 9 1 + 13 8 10 1 + 14 8 11 1 + 15 9 18 1 + 16 9 19 1 + 17 9 20 1 + 18 10 21 1 + 19 10 22 1 + 20 10 23 1 + 21 11 24 1 + 22 11 25 1 + 23 11 26 1 + 24 12 13 1 + 25 12 14 1 + 26 12 15 1 + 27 13 27 1 + 28 13 28 1 + 29 13 29 1 + 30 14 30 1 + 31 14 31 1 + 32 14 32 1 + 33 15 33 1 + 34 15 34 1 + 35 15 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-3,5-DI-T-BUTYL-1,2,3,5-DIAZADIPHOSPHOLANE +@MOLECULE +FACMIF + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 6.6635 2.2234 1.7274 P 1 UNCH -0.2318 + 2 O1 6.4394 0.2907 4.0968 O.2 1 UNCH -0.5700 + 3 N1 5.7762 2.3575 3.2399 N.3 1 UNCH -0.1000 + 4 N2 4.9938 3.4901 3.4134 N.2 1 UNCH -0.5120 + 5 C1 5.8281 1.3553 4.2109 C.2 1 UNCH 0.5690 + 6 C2 5.0370 1.6516 5.4623 C.3 1 UNCH 0.0610 + 7 C3 4.9655 4.2430 2.3481 C.2 1 UNCH 0.3280 + 8 C4 4.1864 5.5223 2.3291 C.3 1 UNCH 0.0610 + 9 C5 5.7000 3.8017 1.0866 C.3 1 UNCH 0.2279 + 10 C6 4.7706 3.2193 -0.0064 C.3 1 UNCH 0.1382 + 11 C7 4.2328 1.8856 0.5418 C.3 1 UNCH 0.0000 + 12 C8 5.5706 1.1496 0.6446 C.3 1 UNCH 0.3051 + 13 C9 6.1470 1.5086 -0.7067 C.2 1 UNCH -0.2882 + 14 C10 5.6343 2.6800 -1.1269 C.2 1 UNCH -0.2882 + 15 H21 3.9716 1.7190 5.2257 H 1 UNCH 0.0000 + 16 H22 5.1815 0.8414 6.1834 H 1 UNCH 0.0000 + 17 H23 5.3850 2.5818 5.9197 H 1 UNCH 0.0000 + 18 H41 3.3330 5.4173 1.6544 H 1 UNCH 0.0000 + 19 H42 3.8231 5.7641 3.3314 H 1 UNCH 0.0000 + 20 H43 4.8278 6.3333 1.9746 H 1 UNCH 0.0000 + 21 H5 6.4016 4.5640 0.7381 H 1 UNCH 0.0000 + 22 H6 3.9804 3.8934 -0.3436 H 1 UNCH 0.0000 + 23 H71 3.6964 1.9806 1.4908 H 1 UNCH 0.0000 + 24 H72 3.5542 1.3967 -0.1711 H 1 UNCH 0.0000 + 25 H8 5.5137 0.0846 0.8674 H 1 UNCH 0.0000 + 26 H9 6.8518 0.8946 -1.2509 H 1 UNCH 0.1500 + 27 H10 5.8759 3.1919 -2.0466 H 1 UNCH 0.1500 +@BOND + 1 1 3 1 + 2 1 9 1 + 3 1 12 1 + 4 2 5 2 + 5 3 4 1 + 6 3 5 am + 7 4 7 2 + 8 5 6 1 + 9 6 15 1 + 10 6 16 1 + 11 6 17 1 + 12 7 8 1 + 13 7 9 1 + 14 8 18 1 + 15 8 19 1 + 16 8 20 1 + 17 9 10 1 + 18 9 21 1 + 19 10 11 1 + 20 10 14 1 + 21 10 22 1 + 22 11 12 1 + 23 11 23 1 + 24 11 24 1 + 25 12 13 1 + 26 12 25 1 + 27 13 14 2 + 28 13 26 1 + 29 14 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT EXO-3-ACETYL-5-METHYL-3,4,2-DIAZAPHOSPHATRICYCLO(5.2.1.0-2, +@MOLECULE +FACREG + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.8669 4.8748 6.7445 C.3 1 UNCH 0.5202 + 2 N1 2.0481 5.9749 7.3896 N.2 1 UNCH 0.7998 + 3 O10 0.8285 5.9999 7.1695 O.3 1 UNCH -0.5200 + 4 O20 2.6543 6.7444 8.1480 O.2 1 UNCH -0.5200 + 5 C2 2.5010 3.5550 7.4113 C.3 1 UNCH 0.2800 + 6 O2 3.6188 2.6395 7.4261 O.3 1 UNCH -0.6800 + 7 C3 1.4552 2.9959 6.4559 C.3 1 UNCH 0.2800 + 8 O3 1.3656 1.5802 6.5390 O.3 1 UNCH -0.6800 + 9 C4 1.9709 3.4795 5.1041 C.3 1 UNCH 0.2800 + 10 O4 2.5326 4.7909 5.3414 O.3 1 UNCH -0.5600 + 11 C5 0.8673 3.5518 4.0496 C.3 1 UNCH 0.2800 + 12 H1 3.9236 5.1421 6.8441 H 1 UNCH 0.0000 + 13 H2 2.1353 3.6298 8.4404 H 1 UNCH 0.0000 + 14 H20 4.2372 2.9297 8.1227 H 1 UNCH 0.4000 + 15 H3 0.4694 3.4216 6.6725 H 1 UNCH 0.0000 + 16 H30 2.2782 1.2659 6.7112 H 1 UNCH 0.4000 + 17 H4 2.7828 2.8398 4.7352 H 1 UNCH 0.0000 + 18 H51 0.1712 4.3672 4.2722 H 1 UNCH 0.0000 + 19 H52 0.3182 2.6072 3.9898 H 1 UNCH 0.0000 + 20 H50 0.7015 3.9532 2.1508 H 1 UNCH 0.4000 + 21 O5 1.4396 3.8070 2.7669 O.3 1 UNCH -0.6800 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 10 1 + 4 1 12 1 + 5 2 3 1 + 6 2 4 2 + 7 5 6 1 + 8 5 7 1 + 9 5 13 1 + 10 6 14 1 + 11 7 8 1 + 12 7 9 1 + 13 7 15 1 + 14 8 16 1 + 15 9 10 1 + 16 9 11 1 + 17 9 17 1 + 18 11 18 1 + 19 11 19 1 + 20 11 21 1 + 21 20 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-DEOXY-1-NITRO-BETA-D-RIBOFURANOSE (AT 130 DEG.K) +@MOLECULE +FACYAJ + 19 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C11 6.0344 1.9552 7.8684 C.2 1 UNCH 0.1600 + 2 O21 6.0198 0.8229 8.6450 O.3 1 UNCH -0.2800 + 3 C31 6.0916 -0.2591 7.8067 C.2 1 UNCH -0.0100 + 4 C311 6.1516 0.1726 6.5085 C.2 1 UNCH 0.0000 + 5 C41 6.2328 -0.6172 5.3677 C.2 1 UNCH -0.1500 + 6 C51 6.2725 0.2327 4.2554 C.2 1 UNCH 0.0825 + 7 C61 6.2364 1.6504 4.2859 C.2 1 UNCH 0.0825 + 8 C71 6.1547 2.4495 5.4334 C.2 1 UNCH -0.1500 + 9 C711 6.1148 1.6087 6.5440 C.2 1 UNCH 0.0000 + 10 C81 5.9678 3.2043 8.5363 C.1 1 UNCH 0.5371 + 11 N91 5.9141 4.2380 9.0627 N.1 1 UNCH -0.5571 + 12 O101 6.3537 -0.2359 2.9710 O.3 1 UNCH -0.3625 + 13 O111 6.2922 2.1772 3.0230 O.3 1 UNCH -0.3625 + 14 C121 6.3651 0.9887 2.2129 C.3 1 UNCH 0.5600 + 15 H31 6.0887 -1.2254 8.2923 H 1 UNCH 0.1500 + 16 H41 6.2618 -1.6939 5.3155 H 1 UNCH 0.1500 + 17 H71 6.1291 3.5284 5.4220 H 1 UNCH 0.1500 + 18 H211 5.5112 0.9817 1.5259 H 1 UNCH 0.0000 + 19 H221 7.2876 1.0249 1.6223 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 9 2 + 3 1 10 1 + 4 2 3 1 + 5 3 4 2 + 6 3 15 1 + 7 4 5 1 + 8 4 9 1 + 9 5 6 2 + 10 5 16 1 + 11 6 7 1 + 12 6 12 1 + 13 7 8 2 + 14 7 13 1 + 15 8 9 1 + 16 8 17 1 + 17 10 11 3 + 18 12 14 1 + 19 13 14 1 + 20 14 18 1 + 21 14 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-CYANO-5,6-(METHYLENEDIOXY)BENZO(C)FURAN +@MOLECULE +FADMIG + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -1.9713 2.3642 -0.2775 N.3 1 FADM -0.5200 + 2 N2 -1.0467 1.3182 0.0347 N.3 1 FADM -0.4100 + 3 C3 -0.1698 1.6876 1.0442 C.2 1 FADM 0.5438 + 4 C31 -0.6709 2.9483 1.5755 C.2 1 FADM 0.0862 + 5 C4 -0.2414 3.7155 2.6400 C.2 1 FADM -0.1500 + 6 C5 -0.9500 4.8897 2.8971 C.2 1 FADM -0.1500 + 7 C6 -2.0455 5.2566 2.0905 C.2 1 FADM -0.1500 + 8 C7 -2.4506 4.4564 1.0130 C.2 1 FADM -0.1500 + 9 C71 -1.7495 3.2923 0.7665 C.2 1 FADM 0.1000 + 10 O9 0.8365 1.1100 1.4058 O.2 1 FADM -0.5700 + 11 H1 -2.9419 2.0422 -0.2512 H 1 FADM 0.4000 + 12 H2 -0.7044 0.7299 -0.7182 H 1 FADM 0.3700 + 13 H4 0.6070 3.4124 3.2431 H 1 FADM 0.1500 + 14 H5 -0.6525 5.5305 3.7245 H 1 FADM 0.1500 + 15 H6 -2.5798 6.1805 2.3040 H 1 FADM 0.1500 + 16 H7 -3.2839 4.7552 0.3863 H 1 FADM 0.1500 +@BOND + 1 1 11 1 + 2 1 9 1 + 3 1 2 1 + 4 2 12 1 + 5 2 3 am + 6 3 10 2 + 7 3 4 1 + 8 4 9 2 + 9 4 5 1 + 10 5 13 1 + 11 5 6 2 + 12 6 14 1 + 13 6 7 1 + 14 7 15 1 + 15 7 8 2 + 16 8 16 1 + 17 8 9 1 +@SUBSTRUCTURE + 1 FADM 1 +@COMMENT +COMMENT INDAZOLINONE +@MOLECULE +FADVEL + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.3416 2.0330 2.3158 S.1 1 UNCH 1.3328 + 2 S2 11.2444 1.1394 0.5689 S.1 1 UNCH 1.3785 + 3 S3 9.3545 4.3531 0.8446 S.1 1 UNCH 1.3328 + 4 O1 8.2623 2.8763 3.4902 O.2 1 UNCH -0.6500 + 5 O2 8.7223 0.6424 2.4595 O.2 1 UNCH -0.6500 + 6 O3 10.7157 2.3614 1.5372 O.3 1 UNCH -0.1007 + 7 O4 11.8599 0.1261 1.4003 O.2 1 UNCH -0.6500 + 8 O5 10.2366 0.8141 -0.4223 O.2 1 UNCH -0.6500 + 9 O6 10.4811 4.5916 -0.0408 O.2 1 UNCH -0.6500 + 10 O7 8.0212 4.7342 0.4284 O.2 1 UNCH -0.6500 + 11 N1 9.3580 2.7405 1.2112 N.3 1 UNCH -0.3590 + 12 C1 6.7674 2.0658 1.4850 C.3 1 UNCH 0.1052 + 13 C2 9.7201 5.1922 2.3771 C.3 1 UNCH 0.1052 + 14 C3 12.5511 2.0295 -0.2403 C.3 1 UNCH 0.1052 + 15 H1 6.8814 1.6287 0.4914 H 1 UNCH 0.0000 + 16 H2 6.0708 1.4623 2.0720 H 1 UNCH 0.0000 + 17 H3 6.3978 3.0892 1.4323 H 1 UNCH 0.0000 + 18 H4 10.5771 4.7181 2.8575 H 1 UNCH 0.0000 + 19 H5 9.9734 6.2264 2.1295 H 1 UNCH 0.0000 + 20 H6 8.8411 5.1921 3.0204 H 1 UNCH 0.0000 + 21 H7 12.1229 2.7989 -0.8819 H 1 UNCH 0.0000 + 22 H8 13.1138 1.3185 -0.8496 H 1 UNCH 0.0000 + 23 H9 13.2049 2.4664 0.5167 H 1 UNCH 0.0000 +@BOND + 1 1 4 2 + 2 1 5 2 + 3 1 11 1 + 4 1 12 1 + 5 2 6 1 + 6 2 7 2 + 7 2 8 2 + 8 2 14 1 + 9 3 9 2 + 10 3 10 2 + 11 3 11 1 + 12 3 13 1 + 13 6 11 1 + 14 12 15 1 + 15 12 16 1 + 16 12 17 1 + 17 13 18 1 + 18 13 19 1 + 19 13 20 1 + 20 14 21 1 + 21 14 22 1 + 22 14 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRIMESYLHYDROXYLAMINE (AT 120 DEG.K) +@MOLECULE +FADVUB + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.6430 9.3364 15.9668 S.1 1 FADV 1.0291 + 2 O1 2.5018 10.2318 15.9341 O.2 1 FADV -0.6500 + 3 N1 3.6326 7.9472 15.2961 N.2 1 FADV -0.9895 + 4 C1 5.0525 10.2191 15.3273 C.3 1 FADV 0.1052 + 5 C2 4.0636 9.0822 17.6871 C.3 1 FADV 0.1052 + 6 C3 3.8229 10.3355 18.5335 C.3 1 FADV 0.0000 + 7 C4 4.7014 10.3639 19.7737 C.3 1 FADV 0.3970 + 8 N2 4.1033 11.3322 20.7816 N.3 1 FADV -0.8530 + 9 C5 6.1611 10.8340 19.4749 C.2 1 FADV 0.9060 + 10 O2 6.6676 10.4904 18.3864 O.2 1 FADV -0.9000 + 11 O3 6.5565 11.5892 20.4214 O.3 1 FADV -0.9000 + 12 H1 2.8042 7.4109 15.5588 H 1 FADV 0.4000 + 13 H2 5.9489 9.6113 15.4640 H 1 FADV 0.0000 + 14 H3 5.1488 11.1682 15.8569 H 1 FADV 0.0000 + 15 H4 4.8824 10.4096 14.2653 H 1 FADV 0.0000 + 16 H5 5.0946 8.7211 17.7138 H 1 FADV 0.0000 + 17 H6 3.4242 8.2717 18.0553 H 1 FADV 0.0000 + 18 H7 4.0058 11.2431 17.9454 H 1 FADV 0.0000 + 19 H8 2.7619 10.3616 18.8134 H 1 FADV 0.0000 + 20 H9 4.7345 9.3951 20.2831 H 1 FADV 0.0000 + 21 H10 4.9808 11.7054 21.2274 H 1 FADV 0.4500 + 22 H11 3.5150 10.9125 21.4995 H 1 FADV 0.4500 + 23 H12 3.6864 12.1537 20.3367 H 1 FADV 0.4500 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 2 + 4 1 2 2 + 5 3 12 1 + 6 4 15 1 + 7 4 14 1 + 8 4 13 1 + 9 5 17 1 + 10 5 16 1 + 11 5 6 1 + 12 6 19 1 + 13 6 18 1 + 14 6 7 1 + 15 7 20 1 + 16 7 9 1 + 17 7 8 1 + 18 8 23 1 + 19 8 22 1 + 20 8 21 1 + 21 9 11 1 + 22 9 10 2 +@SUBSTRUCTURE + 1 FADV 1 +@COMMENT +COMMENT (2S,SS)-2-AMINO-4-(S-METHYLSULFONIMIDOYL)-BUTANOIC ACID (AB +@MOLECULE +FAGBUK + 41 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 5.0264 6.1955 7.5994 P 1 FAGB 1.1340 + 2 O1 4.1427 5.4462 8.5801 O.3 1 FAGB -0.9500 + 3 N1 5.4511 8.1876 9.5963 N.2 1 FAGB -0.8334 + 4 N2 7.4582 7.2747 8.5851 N.3 1 FAGB -0.8334 + 5 C1 6.0947 7.3653 8.7070 C.2 1 FAGB 0.5918 + 6 C2 3.9792 8.1111 9.7466 C.3 1 FAGB 0.4895 + 7 C3 6.1194 8.9271 10.6804 C.3 1 FAGB 0.4895 + 8 C4 8.0606 6.0533 7.9757 C.3 1 FAGB 0.4895 + 9 C5 8.4490 8.2557 9.0437 C.3 1 FAGB 0.4895 + 10 H21 3.6183 8.9512 10.3498 H 1 FAGB 0.0000 + 11 H22 3.7057 7.1849 10.2557 H 1 FAGB 0.0000 + 12 H23 3.4941 8.2105 8.7816 H 1 FAGB 0.0000 + 13 H31 5.4068 9.1896 11.4696 H 1 FAGB 0.0000 + 14 H32 6.5375 9.8571 10.2905 H 1 FAGB 0.0000 + 15 H33 6.8786 8.3000 11.1513 H 1 FAGB 0.0000 + 16 H41 9.0802 5.9281 8.3583 H 1 FAGB 0.0000 + 17 H42 8.1271 6.1758 6.8928 H 1 FAGB 0.0000 + 18 H43 7.5135 5.1618 8.2916 H 1 FAGB 0.0000 + 19 H51 8.0631 9.2692 8.9207 H 1 FAGB 0.0000 + 20 H52 9.3478 8.1924 8.4201 H 1 FAGB 0.0000 + 21 H53 8.7337 8.0494 10.0775 H 1 FAGB 0.0000 + 22 O1A 5.9102 5.4466 6.6184 O.2 1 FAGB -0.9500 + 23 C1A 3.9581 7.3656 6.4921 C.2 1 FAGB 0.5918 + 24 N1A 4.6016 8.1882 5.6031 N.2 1 FAGB -0.8334 + 25 N2A 2.5946 7.2748 6.6140 N.3 1 FAGB -0.8334 + 26 C2A 6.0735 8.1118 5.4527 C.3 1 FAGB 0.4895 + 27 C3A 3.9333 8.9280 4.5192 C.3 1 FAGB 0.4895 + 28 C4A 1.9923 6.0532 7.2230 C.3 1 FAGB 0.4895 + 29 C5A 1.6037 8.2560 6.1557 C.3 1 FAGB 0.4895 + 30 H21A 6.4344 8.9521 4.8498 H 1 FAGB 0.0000 + 31 H22A 6.3471 7.1859 4.9434 H 1 FAGB 0.0000 + 32 H23A 6.5586 8.2110 6.4177 H 1 FAGB 0.0000 + 33 H31A 4.6459 9.1908 3.7301 H 1 FAGB 0.0000 + 34 H32A 3.5151 9.8579 4.9094 H 1 FAGB 0.0000 + 35 H33A 3.1741 8.3010 4.0481 H 1 FAGB 0.0000 + 36 H41A 0.9726 5.9281 6.8403 H 1 FAGB 0.0000 + 37 H42A 1.9257 6.1754 8.3059 H 1 FAGB 0.0000 + 38 H43A 2.5394 5.1619 6.9068 H 1 FAGB 0.0000 + 39 H51A 1.9896 9.2694 6.2790 H 1 FAGB 0.0000 + 40 H52A 0.7050 8.1924 6.7792 H 1 FAGB 0.0000 + 41 H53A 1.3190 8.0499 5.1218 H 1 FAGB 0.0000 +@BOND + 1 1 23 1 + 2 1 22 2 + 3 1 5 1 + 4 1 2 1 + 5 3 7 1 + 6 3 6 1 + 7 3 5 2 + 8 4 9 1 + 9 4 8 1 + 10 4 5 am + 11 6 12 1 + 12 6 11 1 + 13 6 10 1 + 14 7 15 1 + 15 7 14 1 + 16 7 13 1 + 17 8 18 1 + 18 8 17 1 + 19 8 16 1 + 20 9 21 1 + 21 9 20 1 + 22 9 19 1 + 23 23 25 am + 24 23 24 2 + 25 24 27 1 + 26 24 26 1 + 27 25 29 1 + 28 25 28 1 + 29 26 32 1 + 30 26 31 1 + 31 26 30 1 + 32 27 35 1 + 33 27 34 1 + 34 27 33 1 + 35 28 38 1 + 36 28 37 1 + 37 28 36 1 + 38 29 41 1 + 39 29 40 1 + 40 29 39 1 +@SUBSTRUCTURE + 1 FAGB 1 +@COMMENT +COMMENT BIS(AMIDINO)PHOSPHINYL PERCHLORATE +@MOLECULE +FAGCOF + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.1858 4.8637 1.6881 S.1 1 UNCH 1.3328 + 2 O1 3.4102 2.9974 4.2203 O.2 1 UNCH -0.5700 + 3 O2 1.8899 5.1916 2.2429 O.2 1 UNCH -0.6500 + 4 O3 3.7748 5.6945 0.6580 O.2 1 UNCH -0.6500 + 5 N1 4.2779 4.7827 2.9435 N.3 1 UNCH -0.6813 + 6 C2 4.0189 4.0336 4.0988 C.2 1 UNCH 0.7533 + 7 C3 4.7612 5.0485 4.9954 C.3 1 UNCH 0.0530 + 8 C4 4.7826 5.9476 3.7339 C.3 1 UNCH 0.4150 + 9 C5 6.1838 6.5758 3.3317 C.2 1 UNCH -0.1080 + 10 C6 6.8377 7.4897 4.1866 C.2 1 UNCH -0.1500 + 11 C7 8.0749 8.0572 3.8666 C.2 1 UNCH -0.1500 + 12 C8 8.6998 7.7288 2.6698 C.2 1 UNCH -0.1500 + 13 C9 8.0856 6.8385 1.7972 C.2 1 UNCH -0.1500 + 14 C10 6.8487 6.2747 2.1263 C.2 1 UNCH -0.1500 + 15 C12 3.1554 3.1915 1.0743 C.3 1 UNCH 0.1052 + 16 H31 5.7272 4.6802 5.3516 H 1 UNCH 0.0000 + 17 H32 4.1686 5.4308 5.8295 H 1 UNCH 0.0000 + 18 H4 4.0096 6.7296 3.7856 H 1 UNCH 0.0000 + 19 H6 6.3679 7.7708 5.1281 H 1 UNCH 0.1500 + 20 H7 8.5455 8.7584 4.5511 H 1 UNCH 0.1500 + 21 H8 9.6590 8.1704 2.4136 H 1 UNCH 0.1500 + 22 H9 8.5616 6.5837 0.8535 H 1 UNCH 0.1500 + 23 H10 6.3903 5.5907 1.4139 H 1 UNCH 0.1500 + 24 H121 2.5498 3.1832 0.1650 H 1 UNCH 0.0000 + 25 H122 2.7031 2.5336 1.8161 H 1 UNCH 0.0000 + 26 H123 4.1756 2.8832 0.8382 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 4 2 + 3 1 5 1 + 4 1 15 1 + 5 2 6 2 + 6 5 6 am + 7 5 8 1 + 8 6 7 1 + 9 7 8 1 + 10 7 16 1 + 11 7 17 1 + 12 8 9 1 + 13 8 18 1 + 14 9 10 2 + 15 9 14 1 + 16 10 11 1 + 17 10 19 1 + 18 11 12 2 + 19 11 20 1 + 20 12 13 1 + 21 12 21 1 + 22 13 14 2 + 23 13 22 1 + 24 14 23 1 + 25 15 24 1 + 26 15 25 1 + 27 15 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-METHYLSULFONYL-4-PHENYL-2-AZETIDINONE +@MOLECULE +FAGLII + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.4279 1.7605 -0.1582 CL 1 UNCH -0.2112 + 2 P1 1.2704 3.3330 -0.9414 P 1 UNCH 0.4132 + 3 O1 -0.0526 3.1889 0.0214 O.3 1 UNCH -0.1835 + 4 O2 1.9312 4.5847 -0.1080 O.3 1 UNCH -0.1835 + 5 C1 -0.0164 4.1354 1.0073 C.2 1 UNCH 0.0825 + 6 C2 -0.9681 4.3169 1.9884 C.2 1 UNCH -0.1500 + 7 C3 -0.7534 5.3413 2.9152 C.2 1 UNCH -0.1500 + 8 C4 0.3966 6.1505 2.8403 C.2 1 UNCH -0.1500 + 9 C5 1.3492 5.9475 1.8373 C.2 1 UNCH -0.1500 + 10 C6 1.1165 4.9325 0.9335 C.2 1 UNCH 0.0825 + 11 H2 -1.8484 3.6864 2.0399 H 1 UNCH 0.1500 + 12 H3 -1.4809 5.5147 3.7055 H 1 UNCH 0.1500 + 13 H4 0.5454 6.9405 3.5734 H 1 UNCH 0.1500 + 14 H5 2.2393 6.5627 1.7735 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 2 4 1 + 4 3 5 1 + 5 4 10 1 + 6 5 6 2 + 7 5 10 1 + 8 6 7 1 + 9 6 11 1 + 10 7 8 2 + 11 7 12 1 + 12 8 9 1 + 13 8 13 1 + 14 9 10 2 + 15 9 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2-PHENYLENEPHOSPHORO-CHLORIDITE +@MOLECULE +FAGVEO + 8 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.0933 6.5433 3.3227 O.2 1 CHGB -0.5700 + 2 O2 5.5482 6.7901 6.4543 O.2 1 CHGB -0.5700 + 3 O3 4.5555 3.7611 6.5202 O.2 1 CHGB -0.5700 + 4 O4 5.1006 3.5143 3.3887 O.2 1 CHGB -0.5700 + 5 C1 5.6878 5.8097 4.1658 C.2 1 CHGB 0.5700 + 6 C2 5.4302 5.9264 5.6459 C.2 1 CHGB 0.5700 + 7 C3 4.9610 4.4947 5.6771 C.2 1 CHGB 0.5700 + 8 C4 5.2186 4.3781 4.1970 C.2 1 CHGB 0.5700 +@BOND + 1 1 5 2 + 2 2 6 2 + 3 3 7 2 + 4 4 8 2 + 5 5 6 1 + 6 5 8 1 + 7 6 7 1 + 8 7 8 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT STRONTIUM SQUARATE TRIHYDRATE (TYPE I) +@MOLECULE +FAGZOC + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -0.3796 1.3471 5.6882 BR 1 FAGZ -0.1100 + 2 O1 1.3542 1.2816 8.4428 O.3 1 FAGZ -0.8500 + 3 O2 -2.9387 0.1357 6.8407 O.2 1 FAGZ -0.5700 + 4 C1 0.1063 1.0327 8.4816 C.2 1 FAGZ -0.1356 + 5 C2 -2.2701 0.6630 7.7364 C.2 1 FAGZ 0.5412 + 6 C3 -0.8250 1.0015 7.5003 C.2 1 FAGZ 0.1244 + 7 C2M -0.4805 0.6633 9.8435 C.2 1 FAGZ 0.5412 + 8 C1M -2.8569 1.0326 9.0981 C.2 1 FAGZ -0.1356 + 9 O2M 0.1882 0.1363 10.7393 O.2 1 FAGZ -0.5700 + 10 C3M -1.9256 1.0017 10.0795 C.2 1 FAGZ 0.1244 + 11 O1M -4.1049 1.2814 9.1369 O.3 1 FAGZ -0.8500 + 12 BR1M -2.3710 1.3477 11.8915 BR 1 FAGZ -0.1100 +@BOND + 1 1 6 1 + 2 2 4 1 + 3 3 5 2 + 4 4 6 2 + 5 4 7 1 + 6 5 6 1 + 7 5 8 1 + 8 7 9 2 + 9 7 10 1 + 10 8 10 2 + 11 8 11 1 + 12 10 12 1 +@SUBSTRUCTURE + 1 FAGZ 1 +@COMMENT +COMMENT BARIUM 3,6-DIBROMO-2,5-DIHYDROXY-P-BENZOQUINONE TRIHYDRATE +@MOLECULE +FAHPUZ + 29 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.2578 2.4075 12.7284 S.1 1 FAHN 1.3328 + 2 O1 5.4010 3.1492 12.2398 O.2 1 FAHN -0.6500 + 3 O2 4.4349 1.0573 13.2347 O.2 1 FAHN -0.6500 + 4 N1 3.0375 2.3518 11.5748 N.3 1 FAHN -0.6927 + 5 C1 2.8889 3.4227 10.6421 C.2 1 FAHN 0.1990 + 6 C2 3.8457 3.9213 9.7765 C.2 1 FAHN -0.1500 + 7 C3 3.4686 4.9210 8.8761 C.2 1 FAHN -0.1500 + 8 C4 2.1473 5.3920 8.8437 C.2 1 FAHN -0.1500 + 9 C5 1.1856 4.8696 9.7109 C.2 1 FAHN -0.1500 + 10 C6 1.5711 3.8775 10.6022 C.2 1 FAHN -0.1435 + 11 C7 0.7409 3.2071 11.6603 C.3 1 FAHN 0.2817 + 12 C8 1.6775 2.0006 12.0683 C.3 1 FAHN 0.6257 + 13 C9 0.4621 4.1590 12.8057 C.2 1 FAHN -0.2882 + 14 C10 1.0696 4.0087 13.9948 C.2 1 FAHN -0.2882 + 15 C11 2.0382 2.8773 14.2611 C.3 1 FAHN 0.4082 + 16 N2 1.6198 1.6985 13.4948 N.3 1 FAHN -0.9000 + 17 C12 3.4805 3.3401 14.0285 C.3 1 FAHN 0.1052 + 18 H2 4.8625 3.5416 9.7777 H 1 FAHN 0.1500 + 19 H3 4.2054 5.3310 8.1890 H 1 FAHN 0.1500 + 20 H4 1.8721 6.1704 8.1353 H 1 FAHN 0.1500 + 21 H5 0.1653 5.2398 9.6881 H 1 FAHN 0.1500 + 22 H7 -0.2036 2.8221 11.2599 H 1 FAHN 0.0000 + 23 H8 1.3579 1.1075 11.5145 H 1 FAHN 0.0000 + 24 H9 -0.2310 4.9782 12.6397 H 1 FAHN 0.1500 + 25 H10 0.8814 4.7179 14.7968 H 1 FAHN 0.1500 + 26 H11 1.9269 2.6218 15.3223 H 1 FAHN 0.0000 + 27 H121 3.5544 4.3985 13.7563 H 1 FAHN 0.0000 + 28 H122 4.0885 3.1716 14.9242 H 1 FAHN 0.0000 + 29 H13 2.2483 0.9111 13.6800 H 1 FAHN 0.3600 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 4 1 + 4 1 17 1 + 5 4 5 1 + 6 4 12 1 + 7 5 6 2 + 8 5 10 1 + 9 6 7 1 + 10 6 18 1 + 11 7 8 2 + 12 7 19 1 + 13 8 9 1 + 14 8 20 1 + 15 9 10 2 + 16 9 21 1 + 17 10 11 1 + 18 11 12 1 + 19 11 13 1 + 20 11 22 1 + 21 12 16 1 + 22 12 23 1 + 23 13 14 2 + 24 13 24 1 + 25 14 15 1 + 26 14 25 1 + 27 15 16 1 + 28 15 17 1 + 29 15 26 1 + 30 16 29 1 + 31 17 27 1 + 32 17 28 1 +@SUBSTRUCTURE + 1 FAHN 1 +@COMMENT +COMMENT 2,3-BENZO-9,1,11-THIADIAZATRICYCLO(5.2.2.0-4,10-)UNDEC-5-EN +@MOLECULE +FAHSUC + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.6580 4.1935 0.0029 N.2 1 FAHS -0.6200 + 2 C2 1.2945 5.4990 0.0031 C.2 1 FAHS 0.5210 + 3 N3 2.1407 6.5497 0.0159 N.2 1 FAHS -0.2100 + 4 C4 3.4538 6.2659 0.0220 C.2 1 FAHS 0.4780 + 5 C5 3.8735 4.9336 0.0222 C.2 1 FAHS 0.1170 + 6 C6 2.9684 3.8976 0.0224 C.2 1 FAHS 0.4100 + 7 N7 5.2641 4.8951 0.0011 N.3 1 FAHS -0.5470 + 8 C8 5.7483 6.2025 -0.0143 C.2 1 FAHS 0.6900 + 9 N9 4.6210 7.0533 0.0138 N.3 1 FAHS -0.4771 + 10 O10 6.9191 6.5279 -0.0503 O.2 1 FAHS -0.5700 + 11 C11 4.7208 8.4829 -0.0143 C.3 1 FAHS 0.3001 + 12 C12 1.6181 7.9103 0.0108 C.3 1 FAHS 0.4880 + 13 N13 3.4145 2.5770 -0.0320 N.3 1 FAHS -0.8691 + 14 C14 2.3790 1.5523 -0.0146 C.3 1 FAHS 0.3691 + 15 H1 1.9692 8.4159 0.9127 H 1 FAHS 0.0000 + 16 H2 2.8510 0.5668 -0.0793 H 1 FAHS 0.0000 + 17 H3 0.5250 7.8933 0.0139 H 1 FAHS 0.0000 + 18 H4 1.8004 1.5867 0.9148 H 1 FAHS 0.0000 + 19 H5 4.2319 8.8999 0.8696 H 1 FAHS 0.0000 + 20 H6 5.8512 4.0740 -0.0624 H 1 FAHS 0.3700 + 21 H7 0.2244 5.6939 -0.0111 H 1 FAHS 0.1500 + 22 H8 5.7687 8.7965 -0.0107 H 1 FAHS 0.0000 + 23 H9 4.1279 2.3952 0.6710 H 1 FAHS 0.4000 + 24 H5L 4.2498 8.8621 -0.9247 H 1 FAHS 0.0000 + 25 H1L 1.9657 8.4081 -0.8968 H 1 FAHS 0.0000 + 26 H4L 1.7046 1.6517 -0.8719 H 1 FAHS 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 21 1 + 4 2 3 2 + 5 3 12 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 + 9 5 7 1 + 10 5 6 1 + 11 6 13 am + 12 7 20 1 + 13 7 8 am + 14 8 10 2 + 15 8 9 am + 16 9 11 1 + 17 11 24 1 + 18 11 22 1 + 19 11 19 1 + 20 12 25 1 + 21 12 17 1 + 22 12 15 1 + 23 13 23 1 + 24 13 14 1 + 25 14 26 1 + 26 14 18 1 + 27 14 16 1 +@SUBSTRUCTURE + 1 FAHS 1 +@COMMENT +COMMENT 3,9-DIMETHYL-6-METHYLIMINO-8-OXO-3,6,8,9-TETRAHYDROPURINE H +@MOLECULE +FAHYUI + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.6985 3.3140 6.0300 S.3 1 FAHY -0.3710 + 2 O1 1.0274 2.5602 8.1887 O.3 1 FAHY -0.6330 + 3 N1 1.5458 3.7223 8.3352 N.2 1 FAHY 0.5300 + 4 C1 2.9130 5.6161 7.5404 C.2 1 FAHY 0.0862 + 5 C2 4.2883 5.7481 7.7456 C.2 1 FAHY -0.1500 + 6 C3 4.8460 7.0214 7.8588 C.2 1 FAHY -0.1500 + 7 C4 4.0326 8.1517 7.7613 C.2 1 FAHY -0.1500 + 8 C5 2.6602 8.0139 7.5451 C.2 1 FAHY -0.1500 + 9 C6 2.0953 6.7437 7.4310 C.2 1 FAHY -0.1500 + 10 C7 2.3276 4.2839 7.4281 C.2 1 FAHY 0.0588 + 11 C8 1.1442 3.4706 5.1213 C.3 1 FAHY 0.2300 + 12 C9 1.2087 4.4113 9.6023 C.3 1 FAHY 0.0990 + 13 H2 4.9272 4.8708 7.8156 H 1 FAHY 0.1500 + 14 H3 5.9158 7.1337 8.0178 H 1 FAHY 0.1500 + 15 H4 4.4715 9.1433 7.8459 H 1 FAHY 0.1500 + 16 H5 2.0341 8.8989 7.4590 H 1 FAHY 0.1500 + 17 H6 1.0287 6.6463 7.2466 H 1 FAHY 0.1500 + 18 H81 0.9164 4.5242 4.9380 H 1 FAHY 0.0000 + 19 H82 0.3165 3.0149 5.6698 H 1 FAHY 0.0000 + 20 H83 1.2394 2.9636 4.1574 H 1 FAHY 0.0000 + 21 H91 0.7293 3.6976 10.2784 H 1 FAHY 0.0000 + 22 H92 0.5144 5.2249 9.3820 H 1 FAHY 0.0000 + 23 H93 2.1252 4.7808 10.0681 H 1 FAHY 0.0000 +@BOND + 1 1 11 1 + 2 1 10 1 + 3 2 3 1 + 4 3 12 1 + 5 3 10 2 + 6 4 10 1 + 7 4 9 1 + 8 4 5 2 + 9 5 13 1 + 10 5 6 1 + 11 6 14 1 + 12 6 7 2 + 13 7 15 1 + 14 7 8 1 + 15 8 16 1 + 16 8 9 2 + 17 9 17 1 + 18 11 20 1 + 19 11 19 1 + 20 11 18 1 + 21 12 23 1 + 22 12 22 1 + 23 12 21 1 +@SUBSTRUCTURE + 1 FAHY 1 +@COMMENT +COMMENT S-METHYL N-METHYLTHIOBENZIMIDATE N-OXIDE +@MOLECULE +FAHZET + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.7770 1.4174 10.0427 S.1 1 UNCH 1.6217 + 2 O1 3.9114 0.3255 8.8532 O.3 1 UNCH -0.2604 + 3 O2 3.1070 -1.2955 12.5644 O.2 1 UNCH -0.5700 + 4 O3 2.4569 2.0053 9.9818 O.2 1 UNCH -0.6500 + 5 O4 4.9621 2.2450 10.0500 O.2 1 UNCH -0.6500 + 6 N1 3.8296 0.5064 11.4114 N.3 1 UNCH -0.7943 + 7 C1 3.4169 -0.9503 9.0121 C.2 1 UNCH 0.0483 + 8 C2 3.1028 -1.5155 10.1957 C.2 1 UNCH -0.1238 + 9 C3 3.3257 -0.7844 11.4768 C.2 1 UNCH 0.7919 + 10 C4 2.5290 -2.8946 10.3795 C.3 1 UNCH 0.1382 + 11 C5 3.2717 -1.6482 7.7285 C.2 1 UNCH 0.0284 + 12 C6 2.1915 -1.3486 6.8890 C.2 1 UNCH -0.1500 + 13 C7 2.0471 -2.0090 5.6676 C.2 1 UNCH -0.1500 + 14 C8 2.9817 -2.9673 5.2773 C.2 1 UNCH -0.1500 + 15 C9 4.0638 -3.2651 6.1047 C.2 1 UNCH -0.1500 + 16 C10 4.2112 -2.6066 7.3268 C.2 1 UNCH -0.1500 + 17 H1 1.4576 -0.5994 7.1786 H 1 UNCH 0.1500 + 18 H2 1.2071 -1.7732 5.0188 H 1 UNCH 0.1500 + 19 H3 2.8693 -3.4788 4.3244 H 1 UNCH 0.1500 + 20 H4 4.7951 -4.0077 5.7954 H 1 UNCH 0.1500 + 21 H5 5.0645 -2.8437 7.9580 H 1 UNCH 0.1500 + 22 H6 3.9060 1.0258 12.2782 H 1 UNCH 0.4200 + 23 H7 2.2815 -3.3917 9.4378 H 1 UNCH 0.0000 + 24 H8 3.2411 -3.5334 10.9128 H 1 UNCH 0.0000 + 25 H9 1.6022 -2.8464 10.9619 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 4 2 + 3 1 5 2 + 4 1 6 1 + 5 2 7 1 + 6 3 9 2 + 7 6 9 am + 8 6 22 1 + 9 7 8 2 + 10 7 11 1 + 11 8 9 1 + 12 8 10 1 + 13 10 23 1 + 14 10 24 1 + 15 10 25 1 + 16 11 12 2 + 17 11 16 1 + 18 12 13 1 + 19 12 17 1 + 20 13 14 2 + 21 13 18 1 + 22 14 15 1 + 23 14 19 1 + 24 15 16 2 + 25 15 20 1 + 26 16 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-METHYL-6-PHENYL-1,2,3-OXATHIAZIN-4(3H)-ONE 2,2-DIOXIDE +@MOLECULE +FAJWIW + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.8249 5.8257 5.0553 O.3 1 UNCH -0.4300 + 2 O2 7.1067 5.3821 3.4829 O.2 1 UNCH -0.5700 + 3 O3 4.1764 2.0795 2.8328 O.3 1 UNCH -0.4300 + 4 N1 5.6099 3.7591 3.1814 N.3 1 UNCH -0.4900 + 5 N3 5.0138 5.7056 4.3025 N.2 1 UNCH -0.6610 + 6 N5 3.4517 3.9753 3.9705 N.2 1 UNCH -0.6610 + 7 C1 3.1183 7.1220 5.5826 C.3 1 UNCH 0.2800 + 8 C2 5.9608 4.9779 3.6534 C.2 1 UNCH 0.8410 + 9 C3 2.8649 1.5230 2.9830 C.3 1 UNCH 0.2800 + 10 C4 3.8440 5.1908 4.4277 C.2 1 UNCH 0.8110 + 11 C6 4.3604 3.3095 3.3631 C.2 1 UNCH 0.6600 + 12 H1 6.2990 3.2081 2.6988 H 1 UNCH 0.3700 + 13 H11 3.9026 7.0587 6.3433 H 1 UNCH 0.0000 + 14 H12 3.4058 7.8074 4.7793 H 1 UNCH 0.0000 + 15 H13 2.2103 7.5067 6.0552 H 1 UNCH 0.0000 + 16 H31 2.8623 0.5364 2.5116 H 1 UNCH 0.0000 + 17 H32 2.6199 1.4012 4.0427 H 1 UNCH 0.0000 + 18 H33 2.1231 2.1499 2.4786 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 1 10 1 + 3 2 8 2 + 4 3 9 1 + 5 3 11 1 + 6 4 8 am + 7 4 11 am + 8 4 12 1 + 9 5 8 am + 10 5 10 2 + 11 6 10 am + 12 6 11 2 + 13 7 13 1 + 14 7 14 1 + 15 7 15 1 + 16 9 16 1 + 17 9 17 1 + 18 9 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,6-DIMETHOXY-1,3,5-TRIAZIN-2(1H)-ONE +@MOLECULE +FAMHAC + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -2.7475 -1.5510 10.6881 S.2 1 UNCH -0.6773 + 2 P1 -1.8871 -0.5754 9.2350 P 1 UNCH 1.3554 + 3 O1 -0.2786 -0.4031 9.5084 O.3 1 UNCH -0.5512 + 4 N1 -1.9445 -1.2311 7.6992 N.3 1 UNCH -0.8079 + 5 C1 -1.3169 -0.4885 6.6063 C.3 1 UNCH 0.2700 + 6 C2 -1.5520 -2.6381 7.5874 C.3 1 UNCH 0.2700 + 7 C3 0.1296 0.9658 9.7089 C.3 1 UNCH 0.4235 + 8 C4 -1.0431 1.8582 9.3861 C.2 1 UNCH -0.1435 + 9 C5 -2.2169 1.1498 9.1037 C.2 1 UNCH -0.1390 + 10 C6 -3.3994 1.8034 8.7891 C.2 1 UNCH -0.1500 + 11 C7 -3.3986 3.1974 8.7502 C.2 1 UNCH -0.1500 + 12 C8 -2.2258 3.9145 9.0251 C.2 1 UNCH -0.1500 + 13 C9 -1.0405 3.2471 9.3448 C.2 1 UNCH -0.1500 + 14 C10 0.6118 1.1196 11.1425 C.3 1 UNCH 0.0000 + 15 H11 -0.2318 -0.4212 6.7372 H 1 UNCH 0.0000 + 16 H12 -1.7178 0.5264 6.5370 H 1 UNCH 0.0000 + 17 H13 -1.5218 -0.9573 5.6371 H 1 UNCH 0.0000 + 18 H21 -1.7329 -3.0252 6.5783 H 1 UNCH 0.0000 + 19 H22 -0.4931 -2.7762 7.8309 H 1 UNCH 0.0000 + 20 H23 -2.1434 -3.2652 8.2606 H 1 UNCH 0.0000 + 21 H3 0.9437 1.1653 9.0042 H 1 UNCH 0.0000 + 22 H6 -4.3050 1.2409 8.5805 H 1 UNCH 0.1500 + 23 H7 -4.3140 3.7329 8.5083 H 1 UNCH 0.1500 + 24 H8 -2.2418 5.0018 8.9926 H 1 UNCH 0.1500 + 25 H9 -0.1385 3.8139 9.5582 H 1 UNCH 0.1500 + 26 H101 0.9696 2.1345 11.3423 H 1 UNCH 0.0000 + 27 H102 -0.1881 0.8916 11.8564 H 1 UNCH 0.0000 + 28 H103 1.4263 0.4166 11.3477 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 2 3 1 + 3 2 4 1 + 4 2 9 1 + 5 3 7 1 + 6 4 5 1 + 7 4 6 1 + 8 5 15 1 + 9 5 16 1 + 10 5 17 1 + 11 6 18 1 + 12 6 19 1 + 13 6 20 1 + 14 7 8 1 + 15 7 14 1 + 16 7 21 1 + 17 8 9 2 + 18 8 13 1 + 19 9 10 1 + 20 10 11 2 + 21 10 22 1 + 22 11 12 1 + 23 11 23 1 + 24 12 13 2 + 25 12 24 1 + 26 13 25 1 + 27 14 26 1 + 28 14 27 1 + 29 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-DIMETHYLAMINO-3-METHYL-3H-2,1LAMBDA-5--BENZOXAPHOSPHOLE 1 +@MOLECULE +FAMYUN + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -0.0296 2.1529 5.7552 BR 1 FAMY 0.0060 + 2 N1 0.0456 3.5520 6.9901 N.3 1 FAMY -0.1260 + 3 C2 0.9251 3.5819 8.0345 C.2 1 FAMY 0.5690 + 4 O2 1.7707 2.7510 8.3335 O.2 1 FAMY -0.5700 + 5 C3 0.6980 4.8467 8.8088 C.3 1 FAMY 0.0610 + 6 C4 -0.4300 5.5514 8.0789 C.3 1 FAMY 0.0610 + 7 C5 -0.7738 4.6433 6.9353 C.2 1 FAMY 0.5690 + 8 O5 -1.6508 4.8887 6.1196 O.2 1 FAMY -0.5700 + 9 H31 0.4173 4.6061 9.8383 H 1 FAMY 0.0000 + 10 H32 1.6103 5.4502 8.8094 H 1 FAMY 0.0000 + 11 H41 -1.3030 5.6809 8.7252 H 1 FAMY 0.0000 + 12 H42 -0.1099 6.5250 7.6964 H 1 FAMY 0.0000 +@BOND + 1 1 2 1 + 2 2 3 am + 3 2 7 am + 4 3 4 2 + 5 3 5 1 + 6 5 6 1 + 7 5 9 1 + 8 5 10 1 + 9 6 7 1 + 10 6 11 1 + 11 6 12 1 + 12 7 8 2 +@SUBSTRUCTURE + 1 FAMY 1 +@COMMENT +COMMENT CESIUM TRIS(N-BROMOSUCCINIMIDE) BROMATE +@MOLECULE +FAPLUD + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 3.2436 1.0519 2.1639 P 1 FAPL 1.3893 + 2 N1 2.9360 0.6040 0.5865 N.3 1 FAPL -0.6860 + 3 N2 2.6688 2.6159 2.0809 N.3 1 FAPL -0.6860 + 4 N3 1.1804 2.0907 0.3964 N.3 1 FAPL -0.4900 + 5 C1 1.6449 2.9896 1.3020 C.2 1 FAPL 0.6900 + 6 C2 1.9005 1.0654 -0.1273 C.2 1 FAPL 0.6900 + 7 S1 5.1509 1.0503 2.5071 S.3 1 FAPL -0.9273 + 8 O1 2.3299 0.2654 3.0593 O.2 1 FAPL -0.9500 + 9 O2 1.1670 4.1228 1.3623 O.2 1 FAPL -0.5700 + 10 O3 1.6328 0.6165 -1.2421 O.2 1 FAPL -0.5700 + 11 H1 3.4303 -0.1968 0.2393 H 1 FAPL 0.3700 + 12 H2 2.9727 3.2480 2.7980 H 1 FAPL 0.3700 + 13 H3 0.4680 2.4507 -0.2157 H 1 FAPL 0.3700 +@BOND + 1 1 8 2 + 2 1 7 1 + 3 1 3 1 + 4 1 2 1 + 5 2 11 1 + 6 2 6 am + 7 3 12 1 + 8 3 5 am + 9 4 13 1 + 10 4 6 am + 11 4 5 am + 12 5 9 2 + 13 6 10 2 +@SUBSTRUCTURE + 1 FAPL 1 +@COMMENT +COMMENT POTASSIUM 4,6-DIOXO-2-THIOXO-1,3,5,2LAMBDA-5--TRIAZAPHOSPHI +@MOLECULE +FARMAM + 24 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.8578 6.7425 2.1770 C.2 1 UNCH -0.1810 + 2 C2 7.4655 6.8135 3.4607 C.2 1 UNCH -0.1500 + 3 C3 7.4134 5.5936 4.2533 C.2 1 UNCH -0.1500 + 4 C4 7.7483 4.3968 3.7322 C.2 1 UNCH -0.1050 + 5 C41 8.1655 4.3087 2.3733 C.2 1 UNCH 0.1415 + 6 N5 8.5391 3.2732 1.6405 N.2 1 UNCH -0.5653 + 7 C51 8.8206 3.8069 0.4238 C.2 1 UNCH 0.4544 + 8 N6 9.2479 3.3438 -0.7792 N.2 1 UNCH -0.5653 + 9 C61 9.3121 4.4229 -1.5409 C.2 1 UNCH 0.1415 + 10 C7 9.6919 4.5904 -2.9033 C.2 1 UNCH -0.1050 + 11 C8 9.6720 5.8185 -3.4576 C.2 1 UNCH -0.1500 + 12 C9 9.2694 6.9932 -2.6978 C.2 1 UNCH -0.1500 + 13 C10 8.9089 6.8471 -1.4111 C.2 1 UNCH -0.1810 + 14 N11 8.9309 5.5772 -0.8429 N.3 1 UNCH 0.3342 + 15 C111 8.6243 5.1481 0.4055 C.2 1 UNCH -0.3032 + 16 N12 8.2028 5.5047 1.6431 N.3 1 UNCH 0.3342 + 17 H1 7.9190 7.6086 1.5332 H 1 UNCH 0.1500 + 18 H2 7.1859 7.7529 3.9260 H 1 UNCH 0.1500 + 19 H3 7.0935 5.6744 5.2882 H 1 UNCH 0.1500 + 20 H4 7.7101 3.4871 4.3207 H 1 UNCH 0.1500 + 21 H7 9.9914 3.7143 -3.4674 H 1 UNCH 0.1500 + 22 H8 9.9593 5.9599 -4.4955 H 1 UNCH 0.1500 + 23 H9 9.2700 7.9605 -3.1891 H 1 UNCH 0.1500 + 24 H10 8.5996 7.6764 -0.7905 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 16 1 + 3 1 17 1 + 4 2 3 1 + 5 2 18 1 + 6 3 4 2 + 7 3 19 1 + 8 4 5 1 + 9 4 20 1 + 10 5 6 2 + 11 5 16 am + 12 6 7 1 + 13 7 8 1 + 14 7 15 2 + 15 8 9 2 + 16 9 10 1 + 17 9 14 am + 18 10 11 2 + 19 10 21 1 + 20 11 12 1 + 21 11 22 1 + 22 12 13 2 + 23 12 23 1 + 24 13 14 1 + 25 13 24 1 + 26 14 15 1 + 27 15 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT PYRIDO(1'',2''.1',2')IMIDAZO(4',5'.4,5)IMIDAZO(1,2-A)PYRIDI +@MOLECULE +FARSOG + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.0494 6.2166 2.6180 S.3 1 FARS 0.4414 + 2 N1 3.5017 4.9517 1.6328 N.2 1 FARS -0.5095 + 3 C1 3.9948 5.5014 0.5198 C.2 1 FARS 0.2428 + 4 C2 4.0018 6.9660 0.5350 C.2 1 FARS 0.2428 + 5 N2 3.5138 7.4973 1.6592 N.2 1 FARS -0.5095 + 6 C3 4.5309 4.7412 -0.6045 C.2 1 FARS 0.0920 + 7 C4 4.5452 7.7441 -0.5735 C.2 1 FARS 0.0920 + 8 C5 4.1708 3.4612 -0.8952 C.2 1 FARS 0.1300 + 9 C6 4.1974 9.0332 -0.8376 C.2 1 FARS 0.1300 + 10 C7 3.1957 2.7427 -0.1396 C.1 1 FARS 0.4921 + 11 C8 3.2291 9.7452 -0.0672 C.1 1 FARS 0.4921 + 12 N3 2.3866 2.1392 0.4328 N.1 1 FARS -0.5571 + 13 N4 2.4257 10.3444 0.5176 N.1 1 FARS -0.5571 + 14 C1B 5.4897 5.5140 -1.3874 C.2 1 FARS 0.2428 + 15 C2B 5.4967 6.9786 -1.3723 C.2 1 FARS 0.2428 + 16 C7B 4.6761 2.7551 -2.0284 C.1 1 FARS 0.4921 + 17 C8B 4.7095 9.7577 -1.9560 C.1 1 FARS 0.4921 + 18 N1B 6.4561 4.9766 -2.1367 N.2 1 FARS -0.5095 + 19 N2B 6.4682 7.5221 -2.1103 N.2 1 FARS -0.5095 + 20 N3B 5.0424 2.1615 -2.9557 N.1 1 FARS -0.5571 + 21 N4B 5.0816 10.3668 -2.8709 N.1 1 FARS -0.5571 + 22 S1B 7.2966 6.2524 -2.8008 S.3 1 FARS 0.4414 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 3 4 1 + 5 3 6 1 + 6 4 5 2 + 7 4 7 1 + 8 6 8 2 + 9 6 14 1 + 10 7 9 2 + 11 7 15 1 + 12 8 10 1 + 13 8 16 1 + 14 9 11 1 + 15 9 17 1 + 16 10 12 3 + 17 11 13 3 + 18 14 15 1 + 19 14 18 2 + 20 15 19 2 + 21 16 20 3 + 22 17 21 3 + 23 18 22 1 + 24 19 22 1 +@SUBSTRUCTURE + 1 FARS 1 +@COMMENT +COMMENT BIS(1,2,5-THIADIAZOLO)-7,7,8,8-TETRACYANOQUINODIMETHANE +@MOLECULE +FARWEA + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.6568 0.7261 12.3616 S.2 1 CHGB -0.7500 + 2 S2 1.2433 2.2362 9.8336 S.3 1 CHGB -0.7500 + 3 N1 0.2750 3.2697 12.1482 N.2 1 CHGB -0.8080 + 4 N2 1.4038 5.0238 10.9888 N.3 1 CHGB -0.8500 + 5 C1 0.7356 2.1515 11.4513 C.2 1 CHGB 0.8580 + 6 C2 0.5497 4.5080 11.9262 C.2 1 CHGB 0.4390 + 7 C3 -0.1653 5.5203 12.7953 C.3 1 CHGB 0.0610 + 8 H1 1.0645 5.8511 10.5188 H 1 CHGB 0.4000 + 9 H2 1.6442 4.2932 10.3077 H 1 CHGB 0.4000 + 10 H3 -0.5764 5.0421 13.6889 H 1 CHGB 0.0000 + 11 H4 -0.9820 5.9683 12.2219 H 1 CHGB 0.0000 + 12 H5 0.5303 6.3071 13.1009 H 1 CHGB 0.0000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 3 5 1 + 4 3 6 2 + 5 4 6 am + 6 4 8 1 + 7 4 9 1 + 8 6 7 1 + 9 7 10 1 + 10 7 11 1 + 11 7 12 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT ACETAMIDINIUM N-ACETIMIDOYL DITHIOCARBAMATE +@MOLECULE +FASGUB + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.5463 0.3289 0.5404 C.2 1 UNCH 0.5500 + 2 N1 1.5434 1.3597 -0.2700 N.2 1 UNCH -0.5030 + 3 N2 2.0919 1.1234 -1.4964 N.3 1 UNCH -0.6670 + 4 N3 2.0938 -0.8999 0.2026 N.3 1 UNCH -0.4610 + 5 N4 2.5573 -1.7386 1.2500 N.3 1 UNCH -0.7090 + 6 N5 1.0120 0.3629 1.8160 N.3 1 UNCH -0.4610 + 7 N6 0.0305 1.3508 2.0810 N.3 1 UNCH -0.7090 + 8 H1 2.3265 2.0271 -1.9187 H 1 UNCH 0.3600 + 9 H2 1.3632 0.7533 -2.1153 H 1 UNCH 0.3600 + 10 H3 2.6813 -0.7669 -0.6259 H 1 UNCH 0.4000 + 11 H4 2.9079 -2.6179 0.8636 H 1 UNCH 0.3600 + 12 H5 3.3553 -1.2926 1.7139 H 1 UNCH 0.3600 + 13 H6 0.8596 -0.5827 2.1719 H 1 UNCH 0.4000 + 14 H7 0.4372 2.2579 1.8241 H 1 UNCH 0.3600 + 15 H8 -0.7369 1.2381 1.4124 H 1 UNCH 0.3600 +@BOND + 1 1 2 2 + 2 1 4 am + 3 1 6 am + 4 2 3 1 + 5 3 8 1 + 6 3 9 1 + 7 4 5 1 + 8 4 10 1 + 9 5 11 1 + 10 5 12 1 + 11 6 7 1 + 12 6 13 1 + 13 7 14 1 + 14 7 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2,3-TRIAMINOGUANIDINE (AT 168 DEG.K) +@MOLECULE +FASJIS + 39 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.6425 2.5491 8.9461 P 1 FASG 1.4843 + 2 P2 -2.2869 3.9878 8.5526 P 1 FASG 1.5037 + 3 S1 2.1081 3.8007 8.5873 S.3 1 FASG -0.6773 + 4 O1 1.1139 1.1041 9.5138 O.3 1 FASG -0.3537 + 5 O2 -2.1149 5.0672 7.5255 O.3 1 FASG -0.7000 + 6 N1 -0.4520 2.1931 7.7057 N.3 1 FASG -0.5379 + 7 N2 -1.9143 2.4611 7.9884 N.3 1 FASG -0.6279 + 8 N3 -1.2723 4.2355 9.8558 N.3 1 FASG -0.6279 + 9 N4 -0.3858 3.0699 10.2002 N.3 1 FASG -0.5379 + 10 N5 -3.8036 3.8335 9.1728 N.3 1 FASG -0.8079 + 11 C1 1.7312 0.0980 8.8295 C.2 1 FASG 0.0825 + 12 C2 1.6539 -1.1639 9.4243 C.2 1 FASG -0.1500 + 13 C3 2.2494 -2.2701 8.8172 C.2 1 FASG -0.1500 + 14 C4 2.9323 -2.1155 7.6137 C.2 1 FASG -0.1500 + 15 C5 3.0216 -0.8553 7.0248 C.2 1 FASG -0.1500 + 16 C6 2.4240 0.2525 7.6335 C.2 1 FASG -0.1500 + 17 C7 -0.1819 2.6468 6.3441 C.3 1 FASG 0.2700 + 18 C8 0.1957 3.3140 11.5155 C.3 1 FASG 0.2700 + 19 C9 -3.9949 3.1638 10.4542 C.3 1 FASG 0.2700 + 20 C10 -4.6368 5.0315 9.1219 C.3 1 FASG 0.2700 + 21 H1 -2.2294 1.7819 8.6753 H 1 FASG 0.3600 + 22 H2 1.1236 -1.2901 10.3647 H 1 FASG 0.1500 + 23 H3 2.1816 -3.2493 9.2837 H 1 FASG 0.1500 + 24 H4 3.4000 -2.9735 7.1377 H 1 FASG 0.1500 + 25 H5 3.5649 -0.7314 6.0909 H 1 FASG 0.1500 + 26 H6 2.5389 1.2158 7.1517 H 1 FASG 0.1500 + 27 H7 -0.6908 5.0442 9.6239 H 1 FASG 0.3600 + 28 H8 -0.1945 3.7378 6.2625 H 1 FASG 0.0000 + 29 H9 -0.9155 2.2380 5.6396 H 1 FASG 0.0000 + 30 H10 0.7967 2.2935 6.0080 H 1 FASG 0.0000 + 31 H11 0.8461 4.1948 11.5221 H 1 FASG 0.0000 + 32 H12 -0.5894 3.4589 12.2661 H 1 FASG 0.0000 + 33 H13 0.7866 2.4506 11.8371 H 1 FASG 0.0000 + 34 H14 -3.4547 2.2125 10.4835 H 1 FASG 0.0000 + 35 H15 -5.0512 2.9232 10.6189 H 1 FASG 0.0000 + 36 H16 -3.6459 3.7789 11.2905 H 1 FASG 0.0000 + 37 H17 -4.6661 5.4354 8.1046 H 1 FASG 0.0000 + 38 H18 -4.2531 5.8107 9.7890 H 1 FASG 0.0000 + 39 H19 -5.6746 4.8120 9.3966 H 1 FASG 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 6 1 + 4 1 9 1 + 5 2 5 1 + 6 2 7 1 + 7 2 8 1 + 8 2 10 1 + 9 4 11 1 + 10 6 7 1 + 11 6 17 1 + 12 7 21 1 + 13 8 9 1 + 14 8 27 1 + 15 9 18 1 + 16 10 19 1 + 17 10 20 1 + 18 11 12 2 + 19 11 16 1 + 20 12 13 1 + 21 12 22 1 + 22 13 14 2 + 23 13 23 1 + 24 14 15 1 + 25 14 24 1 + 26 15 16 2 + 27 15 25 1 + 28 16 26 1 + 29 17 28 1 + 30 17 29 1 + 31 17 30 1 + 32 18 31 1 + 33 18 32 1 + 34 18 33 1 + 35 19 34 1 + 36 19 35 1 + 37 19 36 1 + 38 20 37 1 + 39 20 38 1 + 40 20 39 1 +@SUBSTRUCTURE + 1 FASG 1 +@COMMENT +COMMENT 1,5-DIMETHYL-3-DIMETHYLAMINO-3-OXO-6-PHENOXY-1,2,4,5-TETRA- +@MOLECULE +FATLIV + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -1.8004 -1.7399 9.7905 P 1 FASJ 1.4918 + 2 O1 -1.1418 -2.1315 11.0846 O.3 1 FASJ -0.7000 + 3 O2 -0.7659 1.0073 10.4502 O.2 1 FASJ -0.5700 + 4 O3 0.7598 5.0187 7.6045 O.3 1 FASJ -0.3625 + 5 N1 -0.8760 -0.6647 8.8871 N.3 1 FASJ -0.6860 + 6 N2 -3.3191 -1.0947 9.8875 N.3 1 FASJ -0.5839 + 7 N3 -1.9614 -2.9980 8.7136 N.3 1 FASJ -0.5839 + 8 C1 -0.5032 0.5654 9.3393 C.2 1 FASJ 0.5438 + 9 C2 0.2370 1.4180 8.3678 C.2 1 FASJ 0.0862 + 10 C3 1.0504 0.8668 7.3692 C.2 1 FASJ -0.1500 + 11 C4 1.7211 1.7064 6.4808 C.2 1 FASJ -0.1500 + 12 C5 1.5865 3.0906 6.5958 C.2 1 FASJ -0.1500 + 13 C6 0.7939 3.6515 7.6009 C.2 1 FASJ 0.0825 + 14 C7 0.1213 2.8118 8.4886 C.2 1 FASJ -0.1500 + 15 C8 -4.2218 -1.5835 10.9245 C.3 1 FASJ -0.0420 + 16 C9 -3.6245 -0.2060 11.0052 C.3 1 FASJ -0.0420 + 17 C10 -0.9533 -4.0535 8.7192 C.3 1 FASJ -0.0420 + 18 C11 -2.3443 -4.3069 9.2346 C.3 1 FASJ -0.0420 + 19 C12 0.0213 5.6403 8.6499 C.3 1 FASJ 0.2800 + 20 H1 -0.8212 -0.8958 7.9117 H 1 FASJ 0.3700 + 21 H2 1.1959 -0.2062 7.2859 H 1 FASJ 0.1500 + 22 H3 2.3573 1.2878 5.7049 H 1 FASJ 0.1500 + 23 H4 2.1137 3.7426 5.9025 H 1 FASJ 0.1500 + 24 H5 -0.5034 3.2106 9.2824 H 1 FASJ 0.1500 + 25 H6 -5.2619 -1.6745 10.6414 H 1 FASJ 0.1000 + 26 H7 -3.8480 -2.3406 11.6028 H 1 FASJ 0.1000 + 27 H8 -2.8413 -0.0264 11.7330 H 1 FASJ 0.1000 + 28 H9 -4.2491 0.6457 10.7722 H 1 FASJ 0.1000 + 29 H10 -0.1465 -3.9777 9.4389 H 1 FASJ 0.1000 + 30 H11 -0.6856 -4.4623 7.7538 H 1 FASJ 0.1000 + 31 H12 -2.4842 -4.4019 10.3047 H 1 FASJ 0.1000 + 32 H13 -3.0256 -4.8787 8.6185 H 1 FASJ 0.1000 + 33 H14 0.1184 6.7235 8.5288 H 1 FASJ 0.0000 + 34 H15 -1.0429 5.3918 8.5814 H 1 FASJ 0.0000 + 35 H16 0.4277 5.3773 9.6322 H 1 FASJ 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 3 8 2 + 6 4 13 1 + 7 4 19 1 + 8 5 8 am + 9 5 20 1 + 10 6 15 1 + 11 6 16 1 + 12 7 17 1 + 13 7 18 1 + 14 8 9 1 + 15 9 10 2 + 16 9 14 1 + 17 10 11 1 + 18 10 21 1 + 19 11 12 2 + 20 11 22 1 + 21 12 13 1 + 22 12 23 1 + 23 13 14 2 + 24 14 24 1 + 25 15 16 1 + 26 15 25 1 + 27 15 26 1 + 28 16 27 1 + 29 16 28 1 + 30 17 18 1 + 31 17 29 1 + 32 17 30 1 + 33 18 31 1 + 34 18 32 1 + 35 19 33 1 + 36 19 34 1 + 37 19 35 1 +@SUBSTRUCTURE + 1 FASJ 1 +@COMMENT +COMMENT N-(M-METHOXYBENZOYL-N',N',N'',N'')-DIETHYLENE-TRIAMIDO-PHOS +@MOLECULE +FAXFUF10 + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O6 6.7532 1.6440 2.9665 O.2 1 FAXF -0.5700 + 2 N1 6.4663 1.6440 5.2362 N.3 1 FAXF -0.6854 + 3 N3 8.2142 1.6440 6.7655 N.2 1 FAXF -0.5994 + 4 N8 10.8489 1.6440 4.5416 N.3 1 FAXF 0.2996 + 5 N9 10.4287 1.6440 5.8284 N.2 1 FAXF -0.7068 + 6 C2 6.9287 1.6440 6.4758 C.2 1 FAXF 0.5588 + 7 C4 9.1100 1.6440 5.7180 C.2 1 FAXF 0.5838 + 8 C5 8.6643 1.6440 4.3983 C.2 1 FAXF -0.0860 + 9 C6 7.2794 1.6440 4.0617 C.2 1 FAXF 1.0370 + 10 C7 9.8129 1.6440 3.6404 C.2 1 FAXF -0.3016 + 11 H1 5.4648 1.6440 5.0785 H 1 FAXF 0.4500 + 12 H2 6.2182 1.6440 7.2931 H 1 FAXF 0.1500 + 13 H3 8.5931 1.6440 7.7060 H 1 FAXF 0.4500 + 14 H7 9.9927 1.6440 2.5722 H 1 FAXF 0.1500 + 15 H8 11.8505 1.6440 4.3527 H 1 FAXF 0.2700 +@BOND + 1 1 9 2 + 2 2 11 1 + 3 2 9 am + 4 2 6 am + 5 3 13 1 + 6 3 7 am + 7 3 6 2 + 8 4 15 1 + 9 4 10 1 + 10 4 5 1 + 11 5 7 2 + 12 6 12 1 + 13 7 8 1 + 14 8 10 2 + 15 8 9 1 + 16 10 14 1 +@SUBSTRUCTURE + 1 FAXF 1 +@COMMENT +COMMENT ALLOPURINOL HYDROCHLORIDE (ANTI-HYPERURICEMIA DRUG) PYRAZOL +@MOLECULE +FAXVAB + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.9770 6.5910 -2.4777 S.1 1 FAXV 1.5760 + 2 O1 4.0807 6.1929 -3.3175 O.2 1 FAXV -0.6500 + 3 O2 2.8997 7.9200 -1.9195 O.2 1 FAXV -0.6500 + 4 O3 1.3882 4.8371 0.4920 O.2 1 FAXV -0.5700 + 5 N1 1.5830 6.3184 -3.3615 N.3 1 FAXV -0.7570 + 6 N2 2.7566 5.4839 -1.2508 N.3 1 FAXV -0.7300 + 7 C1 0.3742 6.3822 -2.6108 C.2 1 FAXV 0.1990 + 8 C2 -0.7916 6.7898 -3.2667 C.2 1 FAXV -0.1500 + 9 C3 -2.0158 6.7800 -2.5952 C.2 1 FAXV -0.1500 + 10 C4 -2.0856 6.3331 -1.2776 C.2 1 FAXV -0.1500 + 11 C5 -0.9321 5.8828 -0.6344 C.2 1 FAXV -0.1500 + 12 C6 0.3011 5.8921 -1.3045 C.2 1 FAXV 0.0862 + 13 C7 1.5004 5.3713 -0.6053 C.2 1 FAXV 0.7201 + 14 C8 3.9878 5.1267 -0.5217 C.3 1 FAXV 0.3557 + 15 H1 1.6035 6.8718 -4.2174 H 1 FAXV 0.4200 + 16 H2 -0.7615 7.1216 -4.3014 H 1 FAXV 0.1500 + 17 H3 -2.9179 7.1132 -3.1039 H 1 FAXV 0.1500 + 18 H4 -3.0395 6.3218 -0.7545 H 1 FAXV 0.1500 + 19 H5 -1.0000 5.5158 0.3886 H 1 FAXV 0.1500 + 20 H6 4.2162 5.8888 0.2293 H 1 FAXV 0.0000 + 21 H7 3.8582 4.1633 -0.0178 H 1 FAXV 0.0000 + 22 H8 4.8425 5.0137 -1.1943 H 1 FAXV 0.0000 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 3 2 + 4 1 2 2 + 5 4 13 2 + 6 5 15 1 + 7 5 7 1 + 8 6 14 1 + 9 6 13 am + 10 7 12 1 + 11 7 8 2 + 12 8 16 1 + 13 8 9 1 + 14 9 17 1 + 15 9 10 2 + 16 10 18 1 + 17 10 11 1 + 18 11 19 1 + 19 11 12 2 + 20 12 13 1 + 21 14 22 1 + 22 14 21 1 + 23 14 20 1 +@SUBSTRUCTURE + 1 FAXV 1 +@COMMENT +COMMENT 3-ISOPROPYL-1H-2,1,3-BENZOTHIADIAZIN-4(3H)-ONE 2,2-DIOXIDE +@MOLECULE +FAXVEF + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.8391 5.3110 8.1200 N.2 1 FAXV -0.2100 + 2 C2 4.7012 4.6073 9.2693 C.2 1 FAXV 0.2110 + 3 C3 3.4724 4.5369 9.9146 C.2 1 FAXV -0.1500 + 4 C4 2.3803 5.2027 9.3744 C.2 1 FAXV -0.1500 + 5 C5 2.5373 5.9284 8.2012 C.2 1 FAXV -0.1500 + 6 C6 3.7839 5.9727 7.5879 C.2 1 FAXV 0.2110 + 7 C7 6.1661 5.3847 7.4610 C.3 1 FAXV 0.4880 + 8 C8 6.4663 4.0998 6.6942 C.3 1 FAXV 0.0000 + 9 C9 5.5524 3.8947 5.4851 C.3 1 FAXV 0.0000 + 10 C10 5.9522 2.6609 4.6905 C.3 1 FAXV 0.0000 + 11 H2 5.5809 4.1041 9.6607 H 1 FAXV 0.1500 + 12 H3 3.3664 3.9669 10.8353 H 1 FAXV 0.1500 + 13 H4 1.4100 5.1580 9.8677 H 1 FAXV 0.1500 + 14 H5 1.6916 6.4576 7.7668 H 1 FAXV 0.1500 + 15 H6 3.9457 6.5288 6.6688 H 1 FAXV 0.1500 + 16 H71 6.9054 5.5475 8.2540 H 1 FAXV 0.0000 + 17 H72 6.1852 6.2618 6.8053 H 1 FAXV 0.0000 + 18 H81 6.3889 3.2332 7.3613 H 1 FAXV 0.0000 + 19 H82 7.5072 4.1433 6.3509 H 1 FAXV 0.0000 + 20 H91 5.5959 4.7729 4.8307 H 1 FAXV 0.0000 + 21 H92 4.5130 3.7799 5.8105 H 1 FAXV 0.0000 + 22 H101 5.2850 2.5300 3.8328 H 1 FAXV 0.0000 + 23 H102 6.9759 2.7514 4.3133 H 1 FAXV 0.0000 + 24 H103 5.8917 1.7597 5.3089 H 1 FAXV 0.0000 +@BOND + 1 1 7 1 + 2 1 6 2 + 3 1 2 1 + 4 2 11 1 + 5 2 3 2 + 6 3 12 1 + 7 3 4 1 + 8 4 13 1 + 9 4 5 2 + 10 5 14 1 + 11 5 6 1 + 12 6 15 1 + 13 7 17 1 + 14 7 16 1 + 15 7 8 1 + 16 8 19 1 + 17 8 18 1 + 18 8 9 1 + 19 9 21 1 + 20 9 20 1 + 21 9 10 1 + 22 10 24 1 + 23 10 23 1 + 24 10 22 1 +@SUBSTRUCTURE + 1 FAXV 1 +@COMMENT +COMMENT N-N-BUTYLPYRIDINIUM CHLORIDE +@MOLECULE +FAXVIJ + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.8032 3.2932 4.3071 C.2 1 FAXV -0.1810 + 2 C2 2.3093 2.1546 3.7916 C.2 1 FAXV -0.1500 + 3 C3 1.1880 1.5082 4.4482 C.2 1 FAXV -0.1500 + 4 C4 0.6280 2.0337 5.5531 C.2 1 FAXV -0.1050 + 5 C41 1.1377 3.2458 6.0996 C.2 1 FAXV 0.1415 + 6 N5 0.7329 3.9468 7.1339 N.2 1 FAXV -0.5653 + 7 C51 1.5771 5.0185 7.1971 C.2 1 FAXV 0.2272 + 8 C6 1.5589 6.0790 8.1198 C.2 1 FAXV -0.1500 + 9 C7 2.5171 7.1033 8.0350 C.2 1 FAXV -0.1435 + 10 C71 2.4795 8.2585 9.0067 C.3 1 FAXV 1.1635 + 11 F1 1.9770 7.9187 10.2244 F 1 FAXV -0.3400 + 12 F2 3.7127 8.7843 9.2450 F 1 FAXV -0.3400 + 13 F3 1.7136 9.2861 8.5524 F 1 FAXV -0.3400 + 14 C8 3.4828 7.0528 7.0203 C.2 1 FAXV -0.1500 + 15 C9 3.5157 5.9889 6.0965 C.2 1 FAXV 0.1330 + 16 N9 4.5840 6.0081 5.1176 N.2 1 FAXV 0.9070 + 17 O91 4.6373 6.9858 4.3620 O.3 1 FAXV -0.5200 + 18 O92 5.3654 5.0496 5.1204 O.2 1 FAXV -0.5200 + 19 C91 2.5425 4.9786 6.1890 C.2 1 FAXV -0.1516 + 20 N10 2.2333 3.8369 5.4635 N.3 1 FAXV 0.3342 + 21 H1 3.6342 3.8028 3.8412 H 1 FAXV 0.1500 + 22 H2 2.7254 1.7034 2.8964 H 1 FAXV 0.1500 + 23 H3 0.8094 0.5848 4.0197 H 1 FAXV 0.1500 + 24 H4 -0.2124 1.5571 6.0454 H 1 FAXV 0.1500 + 25 H6 0.7927 6.0898 8.8924 H 1 FAXV 0.1500 + 26 H8 4.2267 7.8496 6.9515 H 1 FAXV 0.1500 +@BOND + 1 1 21 1 + 2 1 20 1 + 3 1 2 2 + 4 2 22 1 + 5 2 3 1 + 6 3 23 1 + 7 3 4 2 + 8 4 24 1 + 9 4 5 1 + 10 5 20 am + 11 5 6 2 + 12 6 7 1 + 13 7 19 2 + 14 7 8 1 + 15 8 25 1 + 16 8 9 2 + 17 9 14 1 + 18 9 10 1 + 19 10 13 1 + 20 10 12 1 + 21 10 11 1 + 22 14 26 1 + 23 14 15 2 + 24 15 19 1 + 25 15 16 1 + 26 16 18 2 + 27 16 17 1 + 28 19 20 1 +@SUBSTRUCTURE + 1 FAXV 1 +@COMMENT +COMMENT 9-NITRO-7-TRIFLUOROMETHYLPYRIDO(1,2-A)BENZIMIDAZOLE (AT 123 +@MOLECULE +FAZBAJ + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8179 10.7797 1.4769 S.3 1 FAZB -0.3310 + 2 O1 0.5692 8.6464 3.0858 O.3 1 FAZB -0.8500 + 3 C1 0.3748 9.8957 3.0041 C.2 1 FAZB -0.0490 + 4 C2 -0.1561 10.6940 3.9810 C.2 1 FAZB 0.1300 + 5 C3 -0.3625 12.1034 3.8564 C.1 1 FAZB 0.4921 + 6 C4 -0.5538 10.1397 5.2421 C.1 1 FAZB 0.4921 + 7 N3 -0.5541 13.2512 3.8141 N.1 1 FAZB -0.5571 + 8 N4 -0.9074 9.7925 6.2963 N.1 1 FAZB -0.5571 + 9 C5 1.4685 9.4448 0.4433 C.3 1 FAZB 0.2300 + 10 H1 2.3486 8.9841 0.9009 H 1 FAZB 0.0000 + 11 H2 0.7048 8.6859 0.2514 H 1 FAZB 0.0000 + 12 H3 1.7727 9.8655 -0.5195 H 1 FAZB 0.0000 +@BOND + 1 1 3 1 + 2 1 9 1 + 3 2 3 1 + 4 3 4 2 + 5 4 5 1 + 6 4 6 1 + 7 5 7 3 + 8 6 8 3 + 9 9 10 1 + 10 9 11 1 + 11 9 12 1 +@SUBSTRUCTURE + 1 FAZB 1 +@COMMENT +COMMENT POTASSIUM 1,1-DICYANO-3-THIA-BUT-1-EN-2-OLATE +@MOLECULE +FAZKUM + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 5.3681 0.2721 3.2548 CL 1 UNCH -0.1400 + 2 CL2 5.2602 0.0678 -1.2213 CL 1 UNCH -0.3701 + 3 CL3 6.7938 2.8342 -0.1351 CL 1 UNCH -0.3701 + 4 CL4 3.7611 2.0841 0.9086 CL 1 UNCH -0.3701 + 5 SI1 5.5554 1.3045 0.3608 SI 1 UNCH 1.3393 + 6 C1 6.3370 0.3246 1.7529 C.2 1 UNCH -0.0890 + 7 C1B 7.5380 -0.3246 1.7108 C.2 1 UNCH -0.0890 + 8 CL1B 8.5069 -0.2721 0.2089 CL 1 UNCH -0.1400 + 9 SI1B 8.3196 -1.3045 3.1029 SI 1 UNCH 1.3393 + 10 CL2B 8.6148 -0.0678 4.6850 CL 1 UNCH -0.3701 + 11 CL3B 7.0812 -2.8342 3.5988 CL 1 UNCH -0.3701 + 12 CL4B 10.1139 -2.0841 2.5551 CL 1 UNCH -0.3701 +@BOND + 1 1 6 1 + 2 2 5 1 + 3 3 5 1 + 4 4 5 1 + 5 5 6 1 + 6 6 7 2 + 7 7 8 1 + 8 7 9 1 + 9 9 10 1 + 10 9 11 1 + 11 9 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-1,2-DICHLORO-1,2-BIS(TRICHLOROSILYL)-ETHENE (AT -40 D +@MOLECULE +FBATNB + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2215 1.3527 1.6487 C.2 1 FBAT 0.1000 + 2 C2 4.9208 1.7541 -1.0093 C.3 1 FBAT 0.0000 + 3 C3 4.1922 0.5252 2.2571 C.2 1 FBAT 0.1330 + 4 C4 3.8797 -0.6462 2.9824 C.2 1 FBAT -0.1500 + 5 C5 2.5452 -1.0131 3.1483 C.2 1 FBAT 0.1330 + 6 C6 1.5340 -0.2123 2.6235 C.2 1 FBAT -0.1500 + 7 C7 1.8865 0.9506 1.9084 C.2 1 FBAT 0.1330 + 8 C8 3.6619 2.5134 -0.5784 C.3 1 FBAT 0.3691 + 9 C9 2.4510 1.9236 -1.3163 C.3 1 FBAT 0.0000 + 10 C10 3.8004 3.9877 -1.0127 C.3 1 FBAT 0.0000 + 11 F1 4.6521 3.0952 1.4545 F 1 FBAT -0.0530 + 12 H1 4.6826 -1.2452 3.4152 H 1 FBAT 0.1500 + 13 H2 5.8159 2.1430 -0.5132 H 1 FBAT 0.0000 + 14 H3 5.0849 1.8456 -2.0896 H 1 FBAT 0.0000 + 15 H4 0.4832 -0.4624 2.7744 H 1 FBAT 0.1500 + 16 H5 1.5389 2.4898 -1.1027 H 1 FBAT 0.0000 + 17 H6 2.5996 1.9542 -2.4023 H 1 FBAT 0.0000 + 18 H7 2.2789 0.8767 -1.0452 H 1 FBAT 0.0000 + 19 H8 4.6806 4.4582 -0.5598 H 1 FBAT 0.0000 + 20 H9 2.9249 4.5724 -0.7066 H 1 FBAT 0.0000 + 21 H10 3.9009 4.0761 -2.1004 H 1 FBAT 0.0000 + 22 H11 4.8366 0.6852 -0.7895 H 1 FBAT 0.0000 + 23 N1 3.4633 2.5102 0.8981 N.3 1 FBAT -0.4161 + 24 N2 5.6089 0.8285 2.2125 N.2 1 FBAT 0.9070 + 25 N3 2.2053 -2.2277 3.9006 N.2 1 FBAT 0.9070 + 26 N4 0.7710 1.7883 1.4929 N.2 1 FBAT 0.9070 + 27 O1 6.2725 0.2500 1.3439 O.3 1 FBAT -0.5200 + 28 O2 6.0536 1.5556 3.1082 O.2 1 FBAT -0.5200 + 29 O3 3.1416 -2.9230 4.3137 O.3 1 FBAT -0.5200 + 30 O4 1.0053 -2.4771 4.0691 O.2 1 FBAT -0.5200 + 31 O5 -0.0655 1.2610 0.7477 O.3 1 FBAT -0.5200 + 32 O6 0.7141 2.9350 1.9502 O.2 1 FBAT -0.5200 +@BOND + 1 1 23 1 + 2 1 7 2 + 3 1 3 1 + 4 2 22 1 + 5 2 14 1 + 6 2 13 1 + 7 2 8 1 + 8 3 24 1 + 9 3 4 2 + 10 4 12 1 + 11 4 5 1 + 12 5 25 1 + 13 5 6 2 + 14 6 15 1 + 15 6 7 1 + 16 7 26 1 + 17 8 23 1 + 18 8 10 1 + 19 8 9 1 + 20 9 18 1 + 21 9 17 1 + 22 9 16 1 + 23 10 21 1 + 24 10 20 1 + 25 10 19 1 + 26 11 23 1 + 27 24 28 2 + 28 24 27 1 + 29 25 30 2 + 30 25 29 1 + 31 26 32 2 + 32 26 31 1 +@SUBSTRUCTURE + 1 FBAT 1 +@COMMENT +COMMENT 1-(N-FLUORO-N-T-BUTYL)AMINO-2,4,6-TRINITROBENZENE +@MOLECULE +FECXEQ + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.8289 2.9791 4.2466 C.2 1 UNCH 0.3900 + 2 C2 3.3497 2.8789 4.4138 C.2 1 UNCH 0.5556 + 3 C3 2.7895 1.5119 4.6520 C.2 1 UNCH 0.0144 + 4 C4 3.3529 0.7588 5.7589 C.2 1 UNCH -0.1500 + 5 C5 4.4360 1.0991 6.4707 C.2 1 UNCH -0.0500 + 6 C6 1.7527 1.0941 3.8800 C.2 1 UNCH -0.2764 + 7 C7 1.1958 1.8918 2.7171 C.3 1 UNCH 0.1382 + 8 C8 1.0180 -0.2176 4.0432 C.3 1 UNCH 0.1382 + 9 C9 6.4016 2.3033 7.3407 C.3 1 UNCH 0.3691 + 10 N1 5.3413 2.1418 6.3326 N.3 1 UNCH -0.4271 + 11 N2 5.7273 2.6465 5.1183 N.2 1 UNCH -0.4920 + 12 O1 2.6804 3.8957 4.2808 O.2 1 UNCH -0.5700 + 13 H1 5.1412 3.3923 3.2755 H 1 UNCH 0.0600 + 14 H4 2.8277 -0.1303 6.0894 H 1 UNCH 0.1500 + 15 H5 4.6781 0.4766 7.3316 H 1 UNCH 0.1500 + 16 H71 1.8994 2.6239 2.3128 H 1 UNCH 0.0000 + 17 H72 0.2798 2.4085 3.0204 H 1 UNCH 0.0000 + 18 H73 0.9510 1.2260 1.8815 H 1 UNCH 0.0000 + 19 H81 1.3611 -0.8328 4.8755 H 1 UNCH 0.0000 + 20 H82 1.1252 -0.8219 3.1357 H 1 UNCH 0.0000 + 21 H83 -0.0488 -0.0271 4.2043 H 1 UNCH 0.0000 + 22 H91 5.9926 2.2094 8.3527 H 1 UNCH 0.0000 + 23 H92 6.8601 3.2955 7.2631 H 1 UNCH 0.0000 + 24 H93 7.1800 1.5453 7.2016 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 11 2 + 3 1 13 1 + 4 2 3 1 + 5 2 12 2 + 6 3 4 1 + 7 3 6 2 + 8 4 5 2 + 9 4 14 1 + 10 5 10 1 + 11 5 15 1 + 12 6 7 1 + 13 6 8 1 + 14 7 16 1 + 15 7 17 1 + 16 7 18 1 + 17 8 19 1 + 18 8 20 1 + 19 8 21 1 + 20 9 10 1 + 21 9 22 1 + 22 9 23 1 + 23 9 24 1 + 24 10 11 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,5-DIHYDRO-5-ISOPROPYLIDENE-1-METHYL-1H-1,2-DIAZEPIN-4-ONE +@MOLECULE +FEGSEP + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.6778 1.1572 7.7803 P 1 UNCH 1.2424 + 2 O1 0.8565 1.0196 7.3344 O.3 1 UNCH -0.7712 + 3 O2 -1.3885 0.4642 6.5190 O.3 1 UNCH -0.7712 + 4 O3 -1.1233 2.5660 7.9788 O.3 1 UNCH -0.7000 + 5 O4 -4.0773 0.6985 10.4562 O.2 1 UNCH -0.5700 + 6 N1 -2.3157 -0.2762 9.3364 N.3 1 UNCH -0.7301 + 7 C1 -0.9130 0.0127 9.1530 C.3 1 UNCH 0.3001 + 8 C2 -0.5140 0.5767 10.5059 C.3 1 UNCH 0.0000 + 9 C3 -1.7732 1.2971 10.9875 C.3 1 UNCH 0.0610 + 10 C4 -2.8813 0.5653 10.2730 C.2 1 UNCH 0.5690 + 11 H1 1.2606 0.1392 7.4409 H 1 UNCH 0.5000 + 12 H2 -1.4370 1.0897 5.7685 H 1 UNCH 0.5000 + 13 H3 -0.3965 -0.9268 8.9350 H 1 UNCH 0.0000 + 14 H4 -2.9161 -0.6526 8.6095 H 1 UNCH 0.3700 + 15 H5 0.3545 1.2395 10.4595 H 1 UNCH 0.0000 + 16 H6 -0.2834 -0.2423 11.1987 H 1 UNCH 0.0000 + 17 H7 -1.7807 2.3462 10.6789 H 1 UNCH 0.0000 + 18 H8 -1.8907 1.2218 12.0712 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 7 1 + 5 2 11 1 + 6 3 12 1 + 7 5 10 2 + 8 6 7 1 + 9 6 10 am + 10 6 14 1 + 11 7 8 1 + 12 7 13 1 + 13 8 9 1 + 14 8 15 1 + 15 8 16 1 + 16 9 10 1 + 17 9 17 1 + 18 9 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-OXO-2-PYRROLIDINYL-PHOSPHONIC ACID +@MOLECULE +FEHDAX + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.6760 2.6762 0.8913 C.2 1 UNCH -0.0800 + 2 C2 0.1919 3.4858 1.9428 C.3 1 UNCH -0.0600 + 3 C3 1.6972 3.0280 1.7919 C.3 1 UNCH -0.1600 + 4 C4 0.3926 2.0279 -0.2173 C.2 1 UNCH -0.3000 + 5 C5 -0.6235 2.8634 3.0037 C.2 1 UNCH 0.6300 + 6 O1 -0.2448 2.8230 4.1656 O.2 1 UNCH -0.5700 + 7 N1 -1.8306 2.3699 2.6100 N.3 1 UNCH -0.8000 + 8 H1 -0.0244 4.5234 1.7241 H 1 UNCH 0.1000 + 9 H2 2.0638 2.2595 2.4595 H 1 UNCH 0.1000 + 10 H3 2.4176 3.7660 1.4689 H 1 UNCH 0.1000 + 11 H4 -0.6117 2.0134 -0.6241 H 1 UNCH 0.1500 + 12 H5 1.1658 1.4921 -0.7581 H 1 UNCH 0.1500 + 13 H6 -2.0780 2.2896 1.6349 H 1 UNCH 0.3700 + 14 H7 -2.3713 1.8631 3.2972 H 1 UNCH 0.3700 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 2 + 4 2 3 1 + 5 2 5 1 + 6 2 8 1 + 7 3 9 1 + 8 3 10 1 + 9 4 11 1 + 10 4 12 1 + 11 5 6 2 + 12 5 7 am + 13 7 13 1 + 14 7 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYLENECYCLOPROPANE-2-CARBOXAMIDE +@MOLECULE +FEJJEJ + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.9647 5.8810 0.4170 O.2 1 UNCH -0.5700 + 2 C1 0.7759 5.4481 -0.6979 C.2 1 UNCH 0.7010 + 3 C2 1.1305 4.2360 -1.4336 C.2 1 UNCH -0.1750 + 4 C3 0.0653 4.6405 -2.4446 C.3 1 UNCH 0.3630 + 5 N1 0.0453 5.9224 -1.7367 N.3 1 UNCH -0.6550 + 6 C4 1.8721 3.2087 -1.2183 C.1 1 UNCH -0.0990 + 7 C5 2.6220 2.1735 -0.9951 C.2 1 UNCH -0.2350 + 8 C6 -1.2591 3.8766 -2.3668 C.3 1 UNCH 0.1435 + 9 C7 -2.3364 4.5922 -3.1478 C.2 1 UNCH -0.1435 + 10 C8 -2.3566 4.5382 -4.5484 C.2 1 UNCH -0.1500 + 11 C9 -3.3424 5.2152 -5.2678 C.2 1 UNCH -0.1500 + 12 C10 -4.3166 5.9507 -4.5958 C.2 1 UNCH -0.1500 + 13 C11 -4.3079 6.0085 -3.2037 C.2 1 UNCH -0.1500 + 14 C12 -3.3231 5.3327 -2.4817 C.2 1 UNCH -0.1500 + 15 H1 -0.7502 6.5012 -1.5110 H 1 UNCH 0.3700 + 16 H2 0.4332 4.7590 -3.4718 H 1 UNCH 0.0000 + 17 H3 2.9196 1.5171 -1.8045 H 1 UNCH 0.1500 + 18 H4 2.9827 1.9610 0.0053 H 1 UNCH 0.1500 + 19 H5 -1.5834 3.7406 -1.3265 H 1 UNCH 0.0000 + 20 H6 -1.1345 2.8668 -2.7785 H 1 UNCH 0.0000 + 21 H7 -1.6056 3.9673 -5.0902 H 1 UNCH 0.1500 + 22 H8 -3.3514 5.1680 -6.3538 H 1 UNCH 0.1500 + 23 H9 -5.0847 6.4764 -5.1571 H 1 UNCH 0.1500 + 24 H10 -5.0711 6.5785 -2.6798 H 1 UNCH 0.1500 + 25 H11 -3.3369 5.3849 -1.3950 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 2 3 1 + 3 2 5 am + 4 3 4 1 + 5 3 6 2 + 6 4 5 1 + 7 4 8 1 + 8 4 16 1 + 9 5 15 1 + 10 6 7 2 + 11 7 17 1 + 12 7 18 1 + 13 8 9 1 + 14 8 19 1 + 15 8 20 1 + 16 9 10 2 + 17 9 14 1 + 18 10 11 1 + 19 10 21 1 + 20 11 12 2 + 21 11 22 1 + 22 12 13 1 + 23 12 23 1 + 24 13 14 2 + 25 13 24 1 + 26 14 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-BENZYL-3-VINYLIDENE-AZETIDIN-2-ONE +@MOLECULE +FEJKIO + 38 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.0324 0.7694 8.3422 N.3 1 CHGB -0.9590 + 2 C1 -0.3043 1.2439 9.7526 C.3 1 CHGB 0.5030 + 3 C2 -1.0858 1.0714 7.3484 C.3 1 CHGB 0.5030 + 4 C3 1.3602 1.3361 7.8453 C.3 1 CHGB 0.5980 + 5 C4 2.5450 0.8759 8.6298 C.3 1 CHGB -0.1950 + 6 C5 3.0877 1.6768 9.7889 C.3 1 CHGB -0.2000 + 7 C6 3.8540 1.6127 8.4976 C.3 1 CHGB -0.2000 + 8 H1 0.1835 -0.2506 8.3654 H 1 CHGB 0.4500 + 9 H2 0.4894 0.8973 10.4194 H 1 CHGB 0.0000 + 10 H3 -0.3239 2.3388 9.7284 H 1 CHGB 0.0000 + 11 H4 -0.8028 0.6200 6.3922 H 1 CHGB 0.0000 + 12 H5 -1.1351 2.1609 7.2436 H 1 CHGB 0.0000 + 13 H6 1.2602 2.4279 7.8446 H 1 CHGB 0.0000 + 14 H7 1.4693 0.9963 6.8093 H 1 CHGB 0.0000 + 15 H8 2.6225 -0.2063 8.6700 H 1 CHGB 0.1000 + 16 H9 3.5113 1.1459 10.6372 H 1 CHGB 0.1000 + 17 H10 2.6552 2.6367 10.0495 H 1 CHGB 0.1000 + 18 H11 4.7745 1.0346 8.4862 H 1 CHGB 0.1000 + 19 H12 3.9103 2.5151 7.8968 H 1 CHGB 0.1000 + 20 C2B -1.6648 0.6800 10.2314 C.3 1 CHGB 0.5030 + 21 C1B -2.4462 0.5075 7.8273 C.3 1 CHGB 0.5030 + 22 N1B -2.7829 0.9820 9.2375 N.3 1 CHGB -0.9590 + 23 H4B -1.9478 1.1314 11.1876 H 1 CHGB 0.0000 + 24 H5B -1.6154 -0.4095 10.3362 H 1 CHGB 0.0000 + 25 H2B -3.2399 0.8541 7.1604 H 1 CHGB 0.0000 + 26 H3B -2.4266 -0.5874 7.8514 H 1 CHGB 0.0000 + 27 C3B -4.1107 0.4153 9.7345 C.3 1 CHGB 0.5980 + 28 H1B -2.9340 2.0020 9.2144 H 1 CHGB 0.4500 + 29 C4B -5.2955 0.8755 8.9500 C.3 1 CHGB -0.1950 + 30 H6B -4.0107 -0.6765 9.7352 H 1 CHGB 0.0000 + 31 H7B -4.2199 0.7551 10.7705 H 1 CHGB 0.0000 + 32 C5B -5.8383 0.0746 7.7909 C.3 1 CHGB -0.2000 + 33 C6B -6.6045 0.1387 9.0822 C.3 1 CHGB -0.2000 + 34 H8B -5.3730 1.9577 8.9098 H 1 CHGB 0.1000 + 35 H9B -6.2618 0.6055 6.9426 H 1 CHGB 0.1000 + 36 H10B -5.4057 -0.8853 7.5303 H 1 CHGB 0.1000 + 37 H11B -7.5251 0.7168 9.0936 H 1 CHGB 0.1000 + 38 H12B -6.6609 -0.7637 9.6830 H 1 CHGB 0.1000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 8 1 + 5 2 9 1 + 6 2 10 1 + 7 2 20 1 + 8 3 11 1 + 9 3 12 1 + 10 3 21 1 + 11 4 5 1 + 12 4 13 1 + 13 4 14 1 + 14 5 6 1 + 15 5 7 1 + 16 5 15 1 + 17 6 7 1 + 18 6 16 1 + 19 6 17 1 + 20 7 18 1 + 21 7 19 1 + 22 20 22 1 + 23 20 23 1 + 24 20 24 1 + 25 21 22 1 + 26 21 25 1 + 27 21 26 1 + 28 22 27 1 + 29 22 28 1 + 30 27 29 1 + 31 27 30 1 + 32 27 31 1 + 33 29 32 1 + 34 29 33 1 + 35 29 34 1 + 36 32 33 1 + 37 32 35 1 + 38 32 36 1 + 39 33 37 1 + 40 33 38 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT 1,4-BIS(CYCLOPROPYLMETHYL)PIPERAZINE DIHYDROCHLORIDE (INOTR +@MOLECULE +FELYIE + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.2716 1.8212 2.5900 S.2 1 UNCH -0.3800 + 2 O1 5.9486 1.2800 1.2276 O.3 1 UNCH -0.2800 + 3 O2 2.5553 1.0620 -2.0254 O.3 1 UNCH -0.6800 + 4 N1 3.5092 0.4159 0.6220 N.3 1 UNCH -0.7301 + 5 C1 3.5774 1.2814 1.6954 C.2 1 UNCH 0.5250 + 6 C2 4.9180 1.7295 2.0230 C.2 1 UNCH 0.0550 + 7 C3 5.4472 2.5555 3.0026 C.2 1 UNCH -0.1500 + 8 C4 6.8471 2.6078 2.7954 C.2 1 UNCH -0.1500 + 9 C5 7.1003 1.8149 1.7040 C.2 1 UNCH -0.0100 + 10 C6 2.3163 -0.1906 0.0349 C.3 1 UNCH 0.3001 + 11 C7 1.6421 0.7334 -0.9794 C.3 1 UNCH 0.2800 + 12 H1 4.8886 3.0621 3.7785 H 1 UNCH 0.1500 + 13 H2 7.5792 3.1560 3.3718 H 1 UNCH 0.1500 + 14 H3 8.0001 1.5425 1.1696 H 1 UNCH 0.1500 + 15 H4 4.4013 0.1782 0.1953 H 1 UNCH 0.3700 + 16 H5 3.2885 1.5422 -1.6001 H 1 UNCH 0.4000 + 17 H6 1.6153 -0.4736 0.8253 H 1 UNCH 0.0000 + 18 H7 2.6596 -1.1020 -0.4662 H 1 UNCH 0.0000 + 19 H8 1.2988 1.6656 -0.5213 H 1 UNCH 0.0000 + 20 H9 0.7791 0.2336 -1.4292 H 1 UNCH 0.0000 +@BOND + 1 1 5 2 + 2 2 6 1 + 3 2 9 1 + 4 3 11 1 + 5 3 16 1 + 6 4 5 1 + 7 4 10 1 + 8 4 15 1 + 9 5 6 1 + 10 6 7 2 + 11 7 8 1 + 12 7 12 1 + 13 8 9 2 + 14 8 13 1 + 15 9 14 1 + 16 10 11 1 + 17 10 17 1 + 18 10 18 1 + 19 11 19 1 + 20 11 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(2-HYDROXYETHYL)-2-THIOFURAMIDE +@MOLECULE +FELYUQ + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 6.7197 3.6128 2.7664 C.2 1 FELY 0.1170 + 2 C2 5.8908 2.6922 3.4209 C.2 1 FELY -0.1500 + 3 C3 4.4918 2.7927 3.3581 C.2 1 FELY -0.1500 + 4 C4 3.8900 3.8232 2.6338 C.2 1 FELY 0.0862 + 5 C5 4.7036 4.7487 1.9745 C.2 1 FELY -0.1500 + 6 C6 6.0989 4.6435 2.0416 C.2 1 FELY -0.1500 + 7 C7 2.4082 3.9742 2.5343 C.2 1 FELY 0.4228 + 8 O1 1.9301 4.8629 1.8322 O.2 1 FELY -0.5700 + 9 C8 1.5245 3.0239 3.2991 C.3 1 FELY 0.0610 + 10 N1 8.1392 3.5274 2.8062 N.3 1 FELY -0.1415 + 11 O2 8.8250 4.5325 2.0812 O.3 1 FELY -0.4355 + 12 C9 8.9251 2.6838 3.5831 C.2 1 FELY 0.5690 + 13 O3 8.5161 1.7743 4.3051 O.2 1 FELY -0.5700 + 14 C10 10.4126 2.9389 3.4868 C.3 1 FELY 0.0610 + 15 H1 6.3006 1.8654 3.9943 H 1 FELY 0.1500 + 16 H2 3.9042 2.0465 3.8855 H 1 FELY 0.1500 + 17 H3 4.2586 5.5646 1.4068 H 1 FELY 0.1500 + 18 H4 6.6867 5.3990 1.5255 H 1 FELY 0.1500 + 19 H5 1.7463 3.0751 4.3682 H 1 FELY 0.0000 + 20 H6 0.4786 3.3142 3.1584 H 1 FELY 0.0000 + 21 H7 1.6496 2.0056 2.9221 H 1 FELY 0.0000 + 22 H8 8.8596 4.1277 1.1945 H 1 FELY 0.4000 + 23 H9 10.7526 2.8084 2.4558 H 1 FELY 0.0000 + 24 H10 10.6465 3.9463 3.8417 H 1 FELY 0.0000 + 25 H11 10.9464 2.2210 4.1171 H 1 FELY 0.0000 +@BOND + 1 1 10 1 + 2 1 6 2 + 3 1 2 1 + 4 2 15 1 + 5 2 3 2 + 6 3 16 1 + 7 3 4 1 + 8 4 7 1 + 9 4 5 2 + 10 5 17 1 + 11 5 6 1 + 12 6 18 1 + 13 7 9 1 + 14 7 8 2 + 15 9 21 1 + 16 9 20 1 + 17 9 19 1 + 18 10 12 am + 19 10 11 1 + 20 11 22 1 + 21 12 14 1 + 22 12 13 2 + 23 14 25 1 + 24 14 24 1 + 25 14 23 1 +@SUBSTRUCTURE + 1 FELY 1 +@COMMENT +COMMENT N-(4-ACETYLPHENYL)ACETOHYDROXAMIC ACID (AT 138 DEG.K, THERA +@MOLECULE +FEMGEJ + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.5549 2.6346 4.2753 O.2 1 FEMG -0.9000 + 2 O2 6.8598 1.5739 5.7802 O.3 1 FEMG -0.9000 + 3 C1 4.1703 0.7944 6.9392 C.3 1 FEMG -0.0600 + 4 C2 3.9052 -0.5377 7.4930 C.2 1 FEMG -0.1900 + 5 C3 2.7924 -1.0586 8.0338 C.2 1 FEMG -0.2882 + 6 C4 1.4281 -0.4702 8.2626 C.3 1 FEMG 0.1382 + 7 C5 1.1252 0.9718 7.8530 C.3 1 FEMG 0.0000 + 8 C6 0.8762 1.1827 6.3546 C.3 1 FEMG 0.0000 + 9 C7 2.0331 0.8003 5.4341 C.3 1 FEMG 0.0950 + 10 C8 3.3111 1.4295 5.8808 C.3 1 FEMG -0.1950 + 11 C9 4.6497 0.8383 5.4901 C.3 1 FEMG -0.2470 + 12 C10 5.7627 1.7481 5.1623 C.2 1 FEMG 0.9470 + 13 H4 4.6717 1.4649 7.6333 H 1 FEMG 0.1000 + 14 H5 4.7768 -1.1931 7.4550 H 1 FEMG 0.1500 + 15 H6 2.8737 -2.0909 8.3745 H 1 FEMG 0.1500 + 16 H7 1.2427 -0.5444 9.3426 H 1 FEMG 0.0000 + 17 H8 0.6929 -1.1320 7.7873 H 1 FEMG 0.0000 + 18 H9 0.2070 1.2772 8.3727 H 1 FEMG 0.0000 + 19 H10 1.9032 1.6505 8.2203 H 1 FEMG 0.0000 + 20 H11 0.6408 2.2441 6.2022 H 1 FEMG 0.0000 + 21 H12 -0.0170 0.6236 6.0501 H 1 FEMG 0.0000 + 22 H13 2.1157 -0.2901 5.3633 H 1 FEMG 0.0000 + 23 H14 1.8056 1.1483 4.4191 H 1 FEMG 0.0000 + 24 H15 3.2460 2.5144 5.8684 H 1 FEMG 0.1000 + 25 H16 4.6228 -0.0869 4.9259 H 1 FEMG 0.1000 +@BOND + 1 1 12 2 + 2 2 12 1 + 3 3 4 1 + 4 3 10 1 + 5 3 11 1 + 6 3 13 1 + 7 4 5 2 + 8 4 14 1 + 9 5 6 1 + 10 5 15 1 + 11 6 7 1 + 12 6 16 1 + 13 6 17 1 + 14 7 8 1 + 15 7 18 1 + 16 7 19 1 + 17 8 9 1 + 18 8 20 1 + 19 8 21 1 + 20 9 10 1 + 21 9 22 1 + 22 9 23 1 + 23 10 11 1 + 24 10 24 1 + 25 11 12 1 + 26 11 25 1 +@SUBSTRUCTURE + 1 FEMG 1 +@COMMENT +COMMENT (+)-(R)-ALPHA-METHYLBENZYLAMMONIUM (+)-(1R,8S,9R)-BICYCLO(6 +@MOLECULE +FENCOQ + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.6215 6.9878 4.2337 O.3 1 FENC -0.1171 + 2 O2 1.6215 7.6778 2.0556 O.3 1 FENC -0.6330 + 3 O3 1.6215 1.2104 3.8906 O.3 1 FENC -0.3370 + 4 N1 1.6215 6.6985 2.8334 N.2 1 FENC 0.9530 + 5 N2 1.6215 5.7778 4.9151 N.2 1 FENC -0.4097 + 6 N3 1.6215 2.5255 3.4082 N.2 1 FENC -0.5130 + 7 C1 1.6215 5.3735 2.6879 C.2 1 FENC -0.2630 + 8 C2 1.6215 4.8076 3.9893 C.2 1 FENC 0.2028 + 9 C3 1.6215 4.7702 1.3478 C.3 1 FENC 0.1810 + 10 C4 1.6215 3.3948 4.3801 C.2 1 FENC 0.4750 + 11 C5 1.6215 2.9969 5.8406 C.3 1 FENC 0.0610 + 12 H1 1.6215 0.6800 3.0711 H 1 FENC 0.4000 + 13 H2 1.6215 5.5197 0.5501 H 1 FENC 0.0000 + 14 H3 2.5091 4.1446 1.2089 H 1 FENC 0.0000 + 15 H4 1.6215 3.8579 6.5116 H 1 FENC 0.0000 + 16 H5 2.5122 2.3974 6.0521 H 1 FENC 0.0000 + 17 H3A 0.7339 4.1446 1.2089 H 1 FENC 0.0000 + 18 H5A 0.7308 2.3974 6.0521 H 1 FENC 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 2 4 1 + 4 3 12 1 + 5 3 6 1 + 6 4 7 2 + 7 5 8 2 + 8 6 10 2 + 9 7 9 1 + 10 7 8 1 + 11 8 10 1 + 12 9 17 1 + 13 9 14 1 + 14 9 13 1 + 15 10 11 1 + 16 11 18 1 + 17 11 16 1 + 18 11 15 1 +@SUBSTRUCTURE + 1 FENC 1 +@COMMENT +COMMENT (E)-4-ACETYL-3-METHYLFUROXAN OXIME +@MOLECULE +FENHAH + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.6606 0.8554 0.5766 C.2 1 UNCH 0.4300 + 2 N2 -1.2257 -0.3206 1.1587 N.2 1 UNCH -0.5653 + 3 C3 -2.0902 -1.1979 0.7096 C.2 1 UNCH 0.2981 + 4 O4 -3.0331 -0.6585 -0.1130 O.3 1 UNCH -0.0191 + 5 N5 -2.7502 0.7040 -0.2048 N.2 1 UNCH -0.4097 + 6 C6 -1.0073 2.1624 0.7701 C.2 1 UNCH 0.7160 + 7 O7 0.0026 2.3182 1.4525 O.2 1 UNCH -0.5700 + 8 N8 -1.6243 3.2092 0.1036 N.3 1 UNCH -0.7301 + 9 C9 -1.0594 4.5309 0.0787 C.3 1 UNCH 0.3001 + 10 C10 -2.1815 -2.6458 0.9627 C.3 1 UNCH 0.1800 + 11 H8 -2.3870 2.9708 -0.5222 H 1 UNCH 0.3700 + 12 H91 -1.8451 5.2403 -0.1909 H 1 UNCH 0.0000 + 13 H92 -0.2649 4.5566 -0.6716 H 1 UNCH 0.0000 + 14 H93 -0.6443 4.7875 1.0569 H 1 UNCH 0.0000 + 15 H101 -1.3807 -2.9725 1.6327 H 1 UNCH 0.0000 + 16 H102 -2.0940 -3.2052 0.0266 H 1 UNCH 0.0000 + 17 H103 -3.1398 -2.8942 1.4282 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 5 2 + 3 1 6 1 + 4 2 3 2 + 5 3 4 1 + 6 3 10 1 + 7 4 5 1 + 8 6 7 2 + 9 6 8 am + 10 8 9 1 + 11 8 11 1 + 12 9 12 1 + 13 9 13 1 + 14 9 14 1 + 15 10 15 1 + 16 10 16 1 + 17 10 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,5-DIMETHYL-1,2,4-OXADIAZOLE-3-CARBOXAMIDE (AT 173 DEG.K) +@MOLECULE +FENJIR + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.2210 3.3626 5.2058 S.3 1 UNCH -0.4600 + 2 C2 1.3296 4.9193 5.4966 C.3 1 UNCH 0.2300 + 3 C3 1.9368 5.9071 4.5152 C.3 1 UNCH 0.3001 + 4 N4 2.2638 5.1536 3.3117 N.3 1 UNCH -0.6602 + 5 C5 1.2636 4.8633 2.3620 C.2 1 UNCH 0.5000 + 6 S5 0.0247 5.8268 1.8317 S.2 1 UNCH -0.3800 + 7 N6 1.4405 3.5735 1.8919 N.3 1 UNCH -0.7301 + 8 C7 2.7213 3.0247 2.3252 C.3 1 UNCH 0.3001 + 9 C71 3.0523 3.9455 3.5800 C.3 1 UNCH 0.8001 + 10 N71 4.4284 4.3082 3.9549 N.3 1 UNCH -0.8100 + 11 C8 3.6772 3.2030 1.1304 C.3 1 UNCH 0.0000 + 12 C9 2.5913 1.5269 2.6195 C.3 1 UNCH 0.0000 + 13 C10 5.1065 5.2815 3.1055 C.3 1 UNCH 0.2700 + 14 C11 5.3042 3.1689 4.2185 C.3 1 UNCH 0.2700 + 15 H21 1.4312 5.2531 6.5325 H 1 UNCH 0.0000 + 16 H22 0.2693 4.7507 5.2842 H 1 UNCH 0.0000 + 17 H31 2.8604 6.3409 4.9159 H 1 UNCH 0.0000 + 18 H32 1.2514 6.7335 4.3083 H 1 UNCH 0.0000 + 19 H6 0.9029 3.2396 1.1005 H 1 UNCH 0.3700 + 20 H81 3.7601 4.2521 0.8266 H 1 UNCH 0.0000 + 21 H82 3.3008 2.6641 0.2513 H 1 UNCH 0.0000 + 22 H83 4.6763 2.8120 1.3356 H 1 UNCH 0.0000 + 23 H91 3.5130 1.1218 3.0481 H 1 UNCH 0.0000 + 24 H92 2.3779 0.9657 1.7015 H 1 UNCH 0.0000 + 25 H93 1.7633 1.3067 3.3008 H 1 UNCH 0.0000 + 26 H101 4.4921 6.1610 2.8902 H 1 UNCH 0.0000 + 27 H102 5.4539 4.8618 2.1585 H 1 UNCH 0.0000 + 28 H103 5.9922 5.6658 3.6260 H 1 UNCH 0.0000 + 29 H111 6.2453 3.5130 4.6640 H 1 UNCH 0.0000 + 30 H112 5.5553 2.6081 3.3144 H 1 UNCH 0.0000 + 31 H113 4.8756 2.4679 4.9410 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 2 3 1 + 4 2 15 1 + 5 2 16 1 + 6 3 4 1 + 7 3 17 1 + 8 3 18 1 + 9 4 5 1 + 10 4 9 1 + 11 5 6 2 + 12 5 7 1 + 13 7 8 1 + 14 7 19 1 + 15 8 9 1 + 16 8 11 1 + 17 8 12 1 + 18 9 10 1 + 19 10 13 1 + 20 10 14 1 + 21 11 20 1 + 22 11 21 1 + 23 11 22 1 + 24 12 23 1 + 25 12 24 1 + 26 12 25 1 + 27 13 26 1 + 28 13 27 1 + 29 13 28 1 + 30 14 29 1 + 31 14 30 1 + 32 14 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT PERHYDRO-7A-(DIMETHYLAMINO)-7,7-DIMETHYLIMIDAZO(4,3-B)THIAZ +@MOLECULE +FENJOX + 34 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.0972 3.6326 1.7792 S.3 1 FENJ -0.3710 + 2 C2 6.4949 2.9604 1.5404 C.2 1 FENJ 0.5300 + 3 N3 6.1573 2.6735 0.3165 N.2 1 FENJ -0.6960 + 4 C4 7.2979 2.9362 -0.5851 C.3 1 FENJ 0.2460 + 5 C5 8.2070 3.9913 0.0196 C.3 1 FENJ 0.2300 + 6 C6 5.5395 2.7229 2.7417 C.3 1 FENJ 0.3611 + 7 C7 6.1420 1.6440 3.6723 C.3 1 FENJ 0.0000 + 8 C8 6.3115 0.2726 3.0244 C.3 1 FENJ 0.0000 + 9 C9 5.3444 4.0559 3.4820 C.3 1 FENJ 0.0000 + 10 N10 4.2626 2.2941 2.0977 N.3 1 FENJ -0.7301 + 11 C11 3.0273 1.9349 2.5864 C.2 1 FENJ 0.5000 + 12 S11 2.6480 1.8214 4.2165 S.2 1 FENJ -0.3800 + 13 N12 2.1014 1.6730 1.5612 N.3 1 FENJ -0.6602 + 14 C13 0.8662 0.9274 1.7971 C.3 1 FENJ 0.3001 + 15 C14 2.1904 2.2931 0.2401 C.3 1 FENJ 0.3001 + 16 H41 6.9251 3.2754 -1.5575 H 1 FENJ 0.0000 + 17 H51 7.8163 4.9969 -0.1649 H 1 FENJ 0.0000 + 18 H52 9.2310 3.9264 -0.3564 H 1 FENJ 0.0000 + 19 H71 5.5293 1.5242 4.5710 H 1 FENJ 0.0000 + 20 H72 7.1240 1.9699 4.0373 H 1 FENJ 0.0000 + 21 H81 5.3528 -0.1408 2.6980 H 1 FENJ 0.0000 + 22 H82 6.9822 0.3146 2.1613 H 1 FENJ 0.0000 + 23 H83 6.7450 -0.4275 3.7462 H 1 FENJ 0.0000 + 24 H91 6.2801 4.4206 3.9190 H 1 FENJ 0.0000 + 25 H92 4.9747 4.8316 2.8008 H 1 FENJ 0.0000 + 26 H93 4.6297 3.9763 4.3045 H 1 FENJ 0.0000 + 27 H10 4.4104 2.0473 1.1232 H 1 FENJ 0.3700 + 28 H131 0.9723 0.2165 2.6198 H 1 FENJ 0.0000 + 29 H132 0.0644 1.6370 2.0219 H 1 FENJ 0.0000 + 30 H133 0.6116 0.3622 0.8948 H 1 FENJ 0.0000 + 31 H141 2.5034 1.5311 -0.4791 H 1 FENJ 0.0000 + 32 H142 2.8907 3.1319 0.2224 H 1 FENJ 0.0000 + 33 H143 1.2052 2.6777 -0.0428 H 1 FENJ 0.0000 + 34 H1 7.8393 1.9972 -0.7557 H 1 FENJ 0.0000 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 6 1 + 4 2 3 2 + 5 3 4 1 + 6 4 34 1 + 7 4 16 1 + 8 4 5 1 + 9 5 18 1 + 10 5 17 1 + 11 6 10 1 + 12 6 9 1 + 13 6 7 1 + 14 7 20 1 + 15 7 19 1 + 16 7 8 1 + 17 8 23 1 + 18 8 22 1 + 19 8 21 1 + 20 9 26 1 + 21 9 25 1 + 22 9 24 1 + 23 10 27 1 + 24 10 11 1 + 25 11 13 1 + 26 11 12 2 + 27 13 15 1 + 28 13 14 1 + 29 14 30 1 + 30 14 29 1 + 31 14 28 1 + 32 15 33 1 + 33 15 32 1 + 34 15 31 1 +@SUBSTRUCTURE + 1 FENJ 1 +@COMMENT +COMMENT N,N-DIMETHYL-N'-(1-METHYL-1-(4,5-DIHYDRO-1,3-THIAZOL-2-YL)P +@MOLECULE +FENJUD + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.3512 4.9963 0.0384 N.3 1 UNCH -0.7301 + 2 C2 2.4126 3.8885 0.8546 C.2 1 UNCH 0.5000 + 3 S2 3.2425 2.5258 0.4127 S.2 1 UNCH -0.3800 + 4 N3 1.7011 4.1417 1.9929 N.3 1 UNCH -0.4201 + 5 C4 1.1273 5.3907 1.9229 C.2 1 UNCH 0.5690 + 6 O4 0.3788 5.8849 2.7559 O.2 1 UNCH -0.5700 + 7 C5 1.5751 6.0657 0.6157 C.3 1 UNCH 0.3611 + 8 C6 0.3855 6.4722 -0.2546 C.3 1 UNCH 0.0000 + 9 C7 0.2834 7.9795 -0.0628 C.3 1 UNCH 0.0000 + 10 C8 1.7357 8.4161 0.0317 C.3 1 UNCH 0.0000 + 11 C9 2.3969 7.3320 0.8788 C.3 1 UNCH 0.0000 + 12 C10 1.4459 3.2365 3.1102 C.3 1 UNCH 0.3001 + 13 C11 0.1521 2.4479 2.9055 C.3 1 UNCH 0.2300 + 14 S11 -0.1913 1.3693 4.3275 S.3 1 UNCH -0.4100 + 15 H1 2.8235 5.0306 -0.8581 H 1 UNCH 0.3700 + 16 H61 0.5829 6.2536 -1.3117 H 1 UNCH 0.0000 + 17 H62 -0.5488 5.9710 0.0190 H 1 UNCH 0.0000 + 18 H71 -0.2449 8.2100 0.8698 H 1 UNCH 0.0000 + 19 H72 -0.2452 8.4674 -0.8866 H 1 UNCH 0.0000 + 20 H81 2.1877 8.4367 -0.9672 H 1 UNCH 0.0000 + 21 H82 1.8446 9.4107 0.4737 H 1 UNCH 0.0000 + 22 H91 3.4531 7.2245 0.6085 H 1 UNCH 0.0000 + 23 H92 2.3573 7.6213 1.9358 H 1 UNCH 0.0000 + 24 H101 2.2979 2.5577 3.2235 H 1 UNCH 0.0000 + 25 H102 1.3762 3.8427 4.0217 H 1 UNCH 0.0000 + 26 H111 -0.6985 3.1243 2.7713 H 1 UNCH 0.0000 + 27 H112 0.2201 1.8256 2.0074 H 1 UNCH 0.0000 + 28 H113 -0.4166 2.3497 5.2158 H 1 UNCH 0.1800 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 15 1 + 4 2 3 2 + 5 2 4 1 + 6 4 5 am + 7 4 12 1 + 8 5 6 2 + 9 5 7 1 + 10 7 8 1 + 11 7 11 1 + 12 8 9 1 + 13 8 16 1 + 14 8 17 1 + 15 9 10 1 + 16 9 18 1 + 17 9 19 1 + 18 10 11 1 + 19 10 20 1 + 20 10 21 1 + 21 11 22 1 + 22 11 23 1 + 23 12 13 1 + 24 12 24 1 + 25 12 25 1 + 26 13 14 1 + 27 13 26 1 + 28 13 27 1 + 29 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3'-(2-MERCAPTOETHYL)-2'-THIOXOSPIRO-1,5'-(CYCLOPENTANE)IMID +@MOLECULE +FENNUH + 21 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.2065 5.5628 8.1599 P 1 FENN -0.3432 + 2 N1 0.1145 7.6833 9.8972 N.3 1 FENN -0.7882 + 3 N2 1.3585 7.7710 7.9213 N.3 1 FENN -0.7882 + 4 C1 0.4515 7.0682 8.6974 C.2 1 FENN 0.3474 + 5 C2 0.9662 8.7359 10.4548 C.3 1 FENN 0.3691 + 6 C3 -0.7691 7.0488 10.8772 C.3 1 FENN 0.3691 + 7 C4 0.8149 8.7110 6.9382 C.3 1 FENN 0.3691 + 8 C5 2.6100 7.1416 7.4998 C.3 1 FENN 0.3691 + 9 H1 0.4847 5.5242 6.9211 H 1 FENN 0.0958 + 10 H21 0.5368 9.1712 11.3636 H 1 FENN 0.0000 + 11 H22 1.0915 9.5623 9.7478 H 1 FENN 0.0000 + 12 H23 1.9514 8.3311 10.7099 H 1 FENN 0.0000 + 13 H31 -1.0627 7.7496 11.6667 H 1 FENN 0.0000 + 14 H32 -0.2683 6.1984 11.3517 H 1 FENN 0.0000 + 15 H33 -1.7015 6.7105 10.4137 H 1 FENN 0.0000 + 16 H41 0.4700 8.1821 6.0434 H 1 FENN 0.0000 + 17 H42 -0.0276 9.2717 7.3572 H 1 FENN 0.0000 + 18 H43 1.5786 9.4376 6.6413 H 1 FENN 0.0000 + 19 H51 3.3613 7.9088 7.2840 H 1 FENN 0.0000 + 20 H52 2.4720 6.5362 6.5981 H 1 FENN 0.0000 + 21 H53 3.0136 6.5071 8.2962 H 1 FENN 0.0000 +@BOND + 1 1 9 1 + 2 1 4 2 + 3 2 6 1 + 4 2 5 1 + 5 2 4 1 + 6 3 8 1 + 7 3 7 1 + 8 3 4 1 + 9 5 12 1 + 10 5 11 1 + 11 5 10 1 + 12 6 15 1 + 13 6 14 1 + 14 6 13 1 + 15 7 18 1 + 16 7 17 1 + 17 7 16 1 + 18 8 21 1 + 19 8 20 1 + 20 8 19 1 +@SUBSTRUCTURE + 1 FENN 1 +@COMMENT +COMMENT C,C-BIS(DIMETHYLAMINO)METHYLENE-PHOSPHINE (AT -110 DEG.C) +@MOLECULE +FENYIG + 36 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.0865 8.0307 2.9270 C.2 1 FENY 0.6300 + 2 O1 3.7388 8.9262 3.4061 O.2 1 FENY -0.5700 + 3 C2 2.7394 7.9018 1.5042 C.2 1 FENY 0.0134 + 4 C3 1.7639 6.8303 1.2602 C.2 1 FENY 0.6300 + 5 O2 1.3697 6.4646 0.1802 O.2 1 FENY -0.5700 + 6 N1 1.5078 6.3764 2.5379 N.3 1 FENY -0.3601 + 7 C4 0.9991 5.0451 2.8375 C.3 1 FENY 0.3611 + 8 C5 0.4876 4.9796 4.2822 C.3 1 FENY 0.0000 + 9 C6 1.5150 5.5366 5.2741 C.3 1 FENY 0.0000 + 10 C7 1.9652 6.9373 4.8701 C.3 1 FENY 0.3001 + 11 N2 2.4048 6.9675 3.4924 N.3 1 FENY -0.3601 + 12 N3 3.2368 8.6524 0.5679 N.1 1 FENY 0.3566 + 13 N4 3.6695 9.3139 -0.2552 N.2 1 FENY -0.3700 + 14 C8 2.0667 3.9734 2.5732 C.2 1 FENY 0.6590 + 15 O3 3.2598 4.1948 2.4187 O.2 1 FENY -0.5700 + 16 O4 1.4795 2.7435 2.5552 O.3 1 FENY -0.4300 + 17 C9 2.2676 1.5469 2.3215 C.3 1 FENY 0.2800 + 18 C10 3.2995 1.3369 3.4349 C.3 1 FENY 0.0000 + 19 C11 1.2513 0.3960 2.3706 C.3 1 FENY 0.0000 + 20 C12 2.9160 1.5695 0.9332 C.3 1 FENY 0.0000 + 21 H1 0.1792 4.8533 2.1339 H 1 FENY 0.0000 + 22 H2 0.2272 3.9528 4.5627 H 1 FENY 0.0000 + 23 H3 -0.4303 5.5763 4.3613 H 1 FENY 0.0000 + 24 H4 1.0869 5.5594 6.2822 H 1 FENY 0.0000 + 25 H5 2.3843 4.8684 5.3083 H 1 FENY 0.0000 + 26 H6 2.7878 7.2786 5.5079 H 1 FENY 0.0000 + 27 H7 1.1479 7.6604 4.9790 H 1 FENY 0.0000 + 28 H8 3.7786 0.3552 3.3540 H 1 FENY 0.0000 + 29 H9 2.8283 1.4149 4.4212 H 1 FENY 0.0000 + 30 H10 4.0921 2.0906 3.4060 H 1 FENY 0.0000 + 31 H11 1.7286 -0.5759 2.2069 H 1 FENY 0.0000 + 32 H12 0.4723 0.5315 1.6112 H 1 FENY 0.0000 + 33 H13 0.7376 0.3709 3.3387 H 1 FENY 0.0000 + 34 H14 3.3713 0.6033 0.6905 H 1 FENY 0.0000 + 35 H15 3.7011 2.3280 0.8604 H 1 FENY 0.0000 + 36 H16 2.1753 1.8094 0.1621 H 1 FENY 0.0000 +@BOND + 1 1 11 am + 2 1 3 1 + 3 1 2 2 + 4 3 12 2 + 5 3 4 1 + 6 4 6 am + 7 4 5 2 + 8 6 11 1 + 9 6 7 1 + 10 7 21 1 + 11 7 14 1 + 12 7 8 1 + 13 8 23 1 + 14 8 22 1 + 15 8 9 1 + 16 9 25 1 + 17 9 24 1 + 18 9 10 1 + 19 10 27 1 + 20 10 26 1 + 21 10 11 1 + 22 12 13 2 + 23 14 16 1 + 24 14 15 2 + 25 16 17 1 + 26 17 20 1 + 27 17 19 1 + 28 17 18 1 + 29 18 30 1 + 30 18 29 1 + 31 18 28 1 + 32 19 33 1 + 33 19 32 1 + 34 19 31 1 + 35 20 36 1 + 36 20 35 1 + 37 20 34 1 +@SUBSTRUCTURE + 1 FENY 1 +@COMMENT +COMMENT T-BUTYL 2-DIAZO-1,3-DIOXO-HEXAHYDRO-1H-PYRAZOLO(1,2-A)-PYRI +@MOLECULE +FEPWAY + 13 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.0919 3.1291 9.7190 S.2 1 FEPW -0.7500 + 2 S2 5.4224 1.1211 7.9273 S.3 1 FEPW -0.7500 + 3 N1 3.3535 0.6616 9.6280 N.3 1 FEPW -0.8324 + 4 N2 3.8847 -1.3398 8.5492 N.2 1 FEPW -0.7544 + 5 C1 4.2757 1.5766 9.0851 C.2 1 FEPW 1.0280 + 6 C2 3.1782 -0.6240 9.3945 C.2 1 FEPW 0.6038 + 7 C3 2.1019 -1.3094 10.1440 C.3 1 FEPW 0.1050 + 8 H1 2.7160 1.0530 10.3136 H 1 FEPW 0.4500 + 9 H2 4.6295 -0.8601 8.0321 H 1 FEPW 0.4500 + 10 H3 3.7337 -2.3233 8.3855 H 1 FEPW 0.4500 + 11 H4 2.0346 -2.3701 9.8824 H 1 FEPW 0.0000 + 12 H5 1.1341 -0.8465 9.9258 H 1 FEPW 0.0000 + 13 H6 2.2859 -1.2389 11.2208 H 1 FEPW 0.0000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 3 5 1 + 4 3 6 am + 5 3 8 1 + 6 4 6 2 + 7 4 9 1 + 8 4 10 1 + 9 6 7 1 + 10 7 11 1 + 11 7 12 1 + 12 7 13 1 +@SUBSTRUCTURE + 1 FEPW 1 +@COMMENT +COMMENT N-ACETIMIDOYL DITHIOCARBAMIC ACID +@MOLECULE +FEPWOM + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.0029 1.5407 4.4128 S.3 1 UNCH -0.2660 + 2 F1 1.8742 1.6889 5.8575 F 1 UNCH -0.3400 + 3 F2 1.6979 2.6681 3.9350 F 1 UNCH -0.3400 + 4 N1 4.5700 3.1387 2.1323 N.1 1 UNCH -0.5571 + 5 C1 2.5548 2.4811 4.9790 C.3 1 UNCH 0.9100 + 6 C2 4.3403 2.4833 3.0595 C.1 1 UNCH 0.5931 + 7 C1B 2.8982 3.8369 5.6515 C.3 1 UNCH 0.9100 + 8 S1B 1.4501 4.7773 6.2177 S.3 1 UNCH -0.2660 + 9 F1B 3.5788 4.6291 4.7730 F 1 UNCH -0.3400 + 10 F2B 3.7551 3.6499 6.6954 F 1 UNCH -0.3400 + 11 C2B 1.1127 3.8347 7.5710 C.1 1 UNCH 0.5931 + 12 N1B 0.8830 3.1794 8.4981 N.1 1 UNCH -0.5571 +@BOND + 1 1 5 1 + 2 1 6 1 + 3 2 5 1 + 4 3 5 1 + 5 4 6 3 + 6 5 7 1 + 7 7 8 1 + 8 7 9 1 + 9 7 10 1 + 10 8 11 1 + 11 11 12 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,1,2,2-TETRAFLUORO-1,2-DITHIOCYANATO-ETHANE (AT -130 DEG.C +@MOLECULE +FESCAH + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.8514 0.0000 1.4153 N.3 1 UNCH -0.1800 + 2 C1 4.6982 -1.0825 1.4153 C.2 1 UNCH 0.5700 + 3 O1 5.9246 -1.0364 1.4153 O.2 1 UNCH -0.5700 + 4 H1 4.1734 -2.0529 1.4153 H 1 UNCH 0.0600 + 5 C1A 4.3655 1.2746 1.4153 C.2 1 UNCH 0.5700 + 6 C1B 2.4905 -0.1921 1.4153 C.2 1 UNCH 0.5700 + 7 O1A 3.7123 2.3137 1.4153 O.2 1 UNCH -0.5700 + 8 H1A 5.4683 1.3053 1.4153 H 1 UNCH 0.0600 + 9 O1B 1.9172 -1.2773 1.4153 O.2 1 UNCH -0.5700 + 10 H1B 1.9125 0.7476 1.4153 H 1 UNCH 0.0600 +@BOND + 1 1 2 am + 2 1 5 am + 3 1 6 am + 4 2 3 2 + 5 2 4 1 + 6 5 7 2 + 7 5 8 1 + 8 6 9 2 + 9 6 10 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRIFORMAMIDE +@MOLECULE +FESMIZ + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 1.7331 7.5804 1.2079 CL 1 UNCH -0.2900 + 2 CL2 1.6268 4.6907 0.9285 CL 1 UNCH -0.2900 + 3 CL3 1.0929 5.9277 3.5178 CL 1 UNCH -0.2900 + 4 C1 2.1105 6.0224 2.0386 C.3 1 UNCH 0.8700 + 5 C2 3.6261 5.9419 2.3704 C.3 1 UNCH 0.5600 + 6 C3 5.7625 7.7894 4.3998 C.2 1 UNCH 0.4138 + 7 C4 7.1997 7.8135 4.8194 C.2 1 UNCH 0.0862 + 8 C5 8.1782 7.2407 3.9972 C.2 1 UNCH -0.1500 + 9 C6 9.5204 7.2668 4.3815 C.2 1 UNCH -0.1500 + 10 C7 9.8895 7.8596 5.5885 C.2 1 UNCH -0.1500 + 11 C8 8.9187 8.4239 6.4155 C.2 1 UNCH -0.1500 + 12 C9 7.5751 8.4012 6.0342 C.2 1 UNCH -0.1500 + 13 N1 5.3903 6.9040 3.5182 N.2 1 UNCH -0.5130 + 14 N2 4.8916 8.7013 4.9500 N.3 1 UNCH -0.8500 + 15 O1 3.9982 4.7168 3.0127 O.3 1 UNCH -0.6800 + 16 O2 4.0141 7.0343 3.2218 O.3 1 UNCH -0.2170 + 17 H1 4.2067 6.0139 1.4413 H 1 UNCH 0.0000 + 18 H2 7.9043 6.7774 3.0527 H 1 UNCH 0.1500 + 19 H3 10.2773 6.8227 3.7397 H 1 UNCH 0.1500 + 20 H4 10.9347 7.8757 5.8881 H 1 UNCH 0.1500 + 21 H5 9.2074 8.8743 7.3621 H 1 UNCH 0.1500 + 22 H6 6.8299 8.8221 6.7035 H 1 UNCH 0.1500 + 23 H7 4.0099 8.7245 4.4464 H 1 UNCH 0.4000 + 24 H8 5.2689 9.6305 5.0984 H 1 UNCH 0.4000 + 25 H9 4.8616 4.9620 3.4045 H 1 UNCH 0.4000 +@BOND + 1 1 4 1 + 2 2 4 1 + 3 3 4 1 + 4 4 5 1 + 5 5 15 1 + 6 5 16 1 + 7 5 17 1 + 8 6 7 1 + 9 6 13 2 + 10 6 14 am + 11 7 8 2 + 12 7 12 1 + 13 8 9 1 + 14 8 18 1 + 15 9 10 2 + 16 9 19 1 + 17 10 11 1 + 18 10 20 1 + 19 11 12 2 + 20 11 21 1 + 21 12 22 1 + 22 13 16 1 + 23 14 23 1 + 24 14 24 1 + 25 15 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT O-(2,2,2-TRICHLORO-1-HYDROXYETHYL)-BENZAMIDOXIME (AT 173 DE +@MOLECULE +FETRUR + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.0000 0.0000 5.9725 N.3 1 FETR -0.9590 + 2 C1 0.6912 1.1974 5.4676 C.3 1 FETR 0.7730 + 3 N2 0.6871 1.1902 4.0265 N.3 1 FETR -0.8100 + 4 C2 1.3713 0.0001 3.5378 C.3 1 FETR 0.5400 + 5 H1 0.0000 0.0000 6.9944 H 1 FETR 0.4500 + 6 H2 1.7091 1.2042 5.8791 H 1 FETR 0.0000 + 7 H3 1.4143 0.0001 2.4402 H 1 FETR 0.0000 + 8 H4 2.4223 0.0002 3.8574 H 1 FETR 0.0000 + 9 C1C -1.3826 -0.0001 5.4676 C.3 1 FETR 0.7730 + 10 C1D 0.6914 -1.1973 5.4675 C.3 1 FETR 0.7730 + 11 H2L 0.1880 2.0823 5.8791 H 1 FETR 0.0000 + 12 C2C -0.6858 1.1876 3.5378 C.3 1 FETR 0.5400 + 13 N2D 0.6872 -1.1901 4.0265 N.3 1 FETR -0.8100 + 14 N2C -1.3743 -0.0001 4.0265 N.3 1 FETR -0.8100 + 15 H2C -1.8974 0.8781 5.8791 H 1 FETR 0.0000 + 16 H2I -1.8973 -0.8783 5.8791 H 1 FETR 0.0000 + 17 H2D 0.1883 -2.0822 5.8791 H 1 FETR 0.0000 + 18 H2M 1.7093 -1.2039 5.8791 H 1 FETR 0.0000 + 19 H3C -0.7072 1.2248 2.4402 H 1 FETR 0.0000 + 20 H4C -1.2113 2.0977 3.8574 H 1 FETR 0.0000 + 21 C2D -0.6856 -1.1876 3.5378 C.3 1 FETR 0.5400 + 22 H3D -0.7071 -1.2248 2.4402 H 1 FETR 0.0000 + 23 H4D -1.2110 -2.0978 3.8574 H 1 FETR 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 9 1 + 4 1 10 1 + 5 2 3 1 + 6 2 6 1 + 7 2 11 1 + 8 3 4 1 + 9 3 12 1 + 10 4 7 1 + 11 4 8 1 + 12 4 13 1 + 13 9 14 1 + 14 9 15 1 + 15 9 16 1 + 16 10 13 1 + 17 10 17 1 + 18 10 18 1 + 19 12 14 1 + 20 12 19 1 + 21 12 20 1 + 22 13 21 1 + 23 14 21 1 + 24 21 22 1 + 25 21 23 1 +@SUBSTRUCTURE + 1 FETR 1 +@COMMENT +COMMENT HEXAMETHYLENETETRAMINE MONOHYDROCHLORIDE 3,5,7-TRIAZA-1-AZO +@MOLECULE +FETWOQ + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.7967 1.5822 3.6475 C.3 1 FETS 0.0530 + 2 C2 3.5437 1.4443 2.3348 C.3 1 FETS 0.0000 + 3 C3 4.4025 2.6986 2.2575 C.3 1 FETS 0.2800 + 4 C4 3.5269 3.7935 2.8921 C.3 1 FETS 0.2800 + 5 C5 2.6627 3.1066 3.9526 C.3 1 FETS 0.0000 + 6 C6 3.1163 2.8551 5.4283 C.3 1 FETS 0.2780 + 7 C7 3.6351 1.4849 4.9486 C.2 1 FETS 0.4640 + 8 C8 5.3891 3.9099 5.7801 C.2 1 FETS 0.5690 + 9 C9 5.9982 4.9427 6.6787 C.3 1 FETS 0.0610 + 10 C10 4.8149 5.5805 7.3733 C.3 1 FETS 0.0610 + 11 C11 3.6457 4.7460 6.9500 C.2 1 FETS 0.5690 + 12 N1 4.0486 3.8254 6.0223 N.3 1 FETS -0.3450 + 13 O1 2.6476 4.3225 1.8923 O.3 1 FETS -0.6800 + 14 O2 4.6859 3.0345 0.9020 O.3 1 FETS -0.6800 + 15 O3 4.3742 0.6435 5.4122 O.2 1 FETS -0.5700 + 16 O4 6.0233 3.2719 4.9550 O.2 1 FETS -0.5700 + 17 O5 2.5087 4.8980 7.3718 O.2 1 FETS -0.5700 + 18 H1 1.8669 1.0072 3.7098 H 1 FETS 0.0000 + 19 H2 4.1503 0.5340 2.2907 H 1 FETS 0.0000 + 20 H3 2.8412 1.4031 1.4935 H 1 FETS 0.0000 + 21 H4 5.3392 2.5603 2.8001 H 1 FETS 0.0000 + 22 H5 4.1148 4.6298 3.2782 H 1 FETS 0.0000 + 23 H6 1.6280 3.4749 3.9233 H 1 FETS 0.0000 + 24 H7 2.2558 2.6933 6.0951 H 1 FETS 0.0000 + 25 H8 6.6674 4.4542 7.3933 H 1 FETS 0.0000 + 26 H9 6.5593 5.6746 6.0911 H 1 FETS 0.0000 + 27 H10 4.9263 5.5561 8.4608 H 1 FETS 0.0000 + 28 H11 4.6649 6.6122 7.0415 H 1 FETS 0.0000 + 29 H12 3.1606 4.2666 1.0569 H 1 FETS 0.4000 + 30 H13 5.2646 2.3319 0.5533 H 1 FETS 0.4000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 7 1 + 4 1 18 1 + 5 2 3 1 + 6 2 19 1 + 7 2 20 1 + 8 3 4 1 + 9 3 14 1 + 10 3 21 1 + 11 4 5 1 + 12 4 13 1 + 13 4 22 1 + 14 5 6 1 + 15 5 23 1 + 16 6 7 1 + 17 6 12 1 + 18 6 24 1 + 19 7 15 2 + 20 8 9 1 + 21 8 12 am + 22 8 16 2 + 23 9 10 1 + 24 9 25 1 + 25 9 26 1 + 26 10 11 1 + 27 10 27 1 + 28 10 28 1 + 29 11 12 am + 30 11 17 2 + 31 13 29 1 + 32 14 30 1 +@SUBSTRUCTURE + 1 FETS 1 +@COMMENT +COMMENT N-(3,4-DIHYDROXY-7-OXOBICYCLO(3.2.0)HEPT-6-YL)SUCCINIMIDE +@MOLECULE +FEVNUP + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 9.6296 7.8575 1.2313 CL 1 UNCH 0.0020 + 2 CL2 9.4047 5.5899 5.3174 CL 1 UNCH -0.2900 + 3 CL3 8.1529 3.8168 3.3650 CL 1 UNCH -0.2900 + 4 N1 11.2700 3.2740 2.5608 N.3 1 UNCH -0.6602 + 5 C1 12.0460 2.0481 2.5539 C.3 1 UNCH 0.3001 + 6 C2 11.3067 4.0951 1.4565 C.2 1 UNCH 0.6900 + 7 O1 11.8433 3.8030 0.3926 O.2 1 UNCH -0.5700 + 8 N2 10.6683 5.3027 1.5865 N.3 1 UNCH -0.4900 + 9 C3 9.8593 5.7396 2.6191 C.2 1 UNCH 0.4490 + 10 N3 9.2629 6.8953 2.6286 N.2 1 UNCH -0.4520 + 11 C4 9.6402 4.7448 3.7536 C.3 1 UNCH 0.6410 + 12 C5 10.8660 3.8104 3.8453 C.3 1 UNCH 0.5801 + 13 O2 12.0202 4.4491 4.3941 O.3 1 UNCH -0.6800 + 14 H1 12.1765 1.6700 1.5359 H 1 UNCH 0.0000 + 15 H2 13.0313 2.2483 2.9850 H 1 UNCH 0.0000 + 16 H3 11.5284 1.2891 3.1473 H 1 UNCH 0.0000 + 17 H4 10.7563 5.9075 0.7808 H 1 UNCH 0.3700 + 18 H5 10.6274 2.9654 4.5038 H 1 UNCH 0.0000 + 19 H6 11.7710 4.7918 5.2727 H 1 UNCH 0.4000 +@BOND + 1 1 10 1 + 2 2 11 1 + 3 3 11 1 + 4 4 5 1 + 5 4 6 am + 6 4 12 1 + 7 5 14 1 + 8 5 15 1 + 9 5 16 1 + 10 6 7 2 + 11 6 8 am + 12 8 9 am + 13 8 17 1 + 14 9 10 2 + 15 9 11 1 + 16 11 12 1 + 17 12 13 1 + 18 12 18 1 + 19 13 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,5-DICHLORO-4-CHLOROIMINO-6-HYDROXY-5,6-DIHYDRO-1-METHYLPY +@MOLECULE +FEYLUQ + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 7.5405 1.2512 5.0629 O.3 1 UNCH 0.2418 + 2 O2 4.6392 1.7530 0.6991 O.3 1 UNCH -0.5200 + 3 O3 5.8790 3.2165 1.7743 O.2 1 UNCH -0.5200 + 4 O4 9.4422 -2.6640 2.1021 O.3 1 UNCH -0.5200 + 5 O5 8.6279 -2.6746 4.1446 O.2 1 UNCH -0.5200 + 6 N1 6.8943 1.8593 4.0000 N.2 1 UNCH -0.4097 + 7 N2 7.9950 -0.0113 4.7215 N.2 1 UNCH -0.4097 + 8 N3 6.4848 1.0731 1.7094 N.3 1 UNCH -0.4561 + 9 N4 7.8054 -1.2711 2.6217 N.3 1 UNCH -0.4561 + 10 N5 5.6034 2.0752 1.4012 N.2 1 UNCH 1.0440 + 11 N6 8.6953 -2.2442 2.9922 N.2 1 UNCH 1.0440 + 12 C1 6.3762 -0.1693 0.9419 C.3 1 UNCH 0.3691 + 13 C2 7.6134 -1.0555 1.1861 C.3 1 UNCH 0.3691 + 14 C3 6.9493 0.9848 2.9954 C.2 1 UNCH 0.3718 + 15 C4 7.6299 -0.1962 3.4529 C.2 1 UNCH 0.3718 + 16 H1 6.3132 0.0374 -0.1341 H 1 UNCH 0.0000 + 17 H2 5.4711 -0.7170 1.2381 H 1 UNCH 0.0000 + 18 H3 7.4581 -2.0075 0.6627 H 1 UNCH 0.0000 + 19 H4 8.5003 -0.5700 0.7563 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 10 1 + 4 3 10 2 + 5 4 11 1 + 6 5 11 2 + 7 6 14 2 + 8 7 15 2 + 9 8 10 1 + 10 8 12 1 + 11 8 14 am + 12 9 11 1 + 13 9 13 1 + 14 9 15 am + 15 12 13 1 + 16 12 16 1 + 17 12 17 1 + 18 13 18 1 + 19 13 19 1 + 20 14 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,4-DINITROFURAZANO(3,4-B)PIPERAZINE (POLYMORPH I) +@MOLECULE +FEZPOP + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -3.7763 1.0237 6.6009 S.2 1 CHGB -0.3800 + 2 O1 -3.7745 0.8249 9.1898 O.3 1 CHGB -0.8610 + 3 N1 -1.7240 0.6837 8.1848 N.3 1 CHGB -0.4300 + 4 C1 -3.0997 0.8354 8.1415 C.2 1 CHGB 0.3010 + 5 H1 -1.1295 0.7916 7.3704 H 1 CHGB 0.3700 + 6 N1B -1.0254 0.6787 9.3937 N.3 1 CHGB -0.4300 + 7 C1B 0.3499 0.8345 9.4386 C.2 1 CHGB 0.3010 + 8 H1B -1.6202 0.7765 10.2092 H 1 CHGB 0.3700 + 9 S1B 1.0259 1.0094 10.9810 S.2 1 CHGB -0.3800 + 10 O1B 1.0247 0.8368 8.3903 O.3 1 CHGB -0.8610 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 4 1 + 4 3 5 1 + 5 3 6 1 + 6 6 7 1 + 7 6 8 1 + 8 7 9 2 + 9 7 10 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT DIPOTASSIUM 1,2-HYDRAZINE-BIS(MONOTHIOCARBOXYLATE) DIHYDRAT +@MOLECULE +FEZRUX + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.1730 2.8063 0.0385 O.2 1 UNCH -0.5700 + 2 N1 0.1502 2.1448 -2.1488 N.3 1 UNCH -0.1000 + 3 N2 1.4433 2.6953 -2.1734 N.3 1 UNCH -0.4700 + 4 N3 1.8842 1.6712 -4.2905 N.2 1 UNCH -0.4920 + 5 N4 0.5426 1.4038 -4.3423 N.3 1 UNCH -0.4080 + 6 N5 -1.5388 1.0439 -3.3459 N.2 1 UNCH -0.6210 + 7 C1 3.7377 2.5831 -3.0543 C.3 1 UNCH 0.0610 + 8 C2 2.2651 2.2853 -3.2050 C.2 1 UNCH 0.4390 + 9 C3 -0.3297 1.5182 -3.2846 C.2 1 UNCH 0.5600 + 10 C4 -0.5866 2.2932 -0.9989 C.2 1 UNCH 0.6156 + 11 C5 -1.9548 1.7624 -1.0897 C.2 1 UNCH -0.1356 + 12 C6 -2.3407 1.1746 -2.2329 C.2 1 UNCH 0.1426 + 13 C7 -3.7257 0.6539 -2.3373 C.2 1 UNCH 0.0284 + 14 C8 -4.4795 0.9139 -3.4921 C.2 1 UNCH -0.1500 + 15 C9 -5.7846 0.4319 -3.6191 C.2 1 UNCH -0.1500 + 16 C10 -6.3506 -0.3250 -2.5959 C.2 1 UNCH -0.1500 + 17 C11 -5.6111 -0.6057 -1.4491 C.2 1 UNCH -0.1500 + 18 C12 -4.3054 -0.1231 -1.3215 C.2 1 UNCH -0.1500 + 19 H1 1.8362 2.8649 -1.2496 H 1 UNCH 0.4000 + 20 H2 0.1980 0.8661 -5.1324 H 1 UNCH 0.4000 + 21 H3 4.2870 2.2956 -3.9550 H 1 UNCH 0.0000 + 22 H4 3.8770 3.6532 -2.8763 H 1 UNCH 0.0000 + 23 H5 4.1325 2.0249 -2.2006 H 1 UNCH 0.0000 + 24 H6 -2.5872 1.8890 -0.2218 H 1 UNCH 0.1500 + 25 H7 -4.0487 1.4979 -4.3031 H 1 UNCH 0.1500 + 26 H8 -6.3551 0.6449 -4.5194 H 1 UNCH 0.1500 + 27 H9 -7.3648 -0.7028 -2.6962 H 1 UNCH 0.1500 + 28 H10 -6.0475 -1.2070 -0.6556 H 1 UNCH 0.1500 + 29 H11 -3.7425 -0.3751 -0.4260 H 1 UNCH 0.1500 +@BOND + 1 1 10 2 + 2 2 3 1 + 3 2 9 am + 4 2 10 am + 5 3 8 am + 6 3 19 1 + 7 4 5 1 + 8 4 8 2 + 9 5 9 am + 10 5 20 1 + 11 6 9 2 + 12 6 12 1 + 13 7 8 1 + 14 7 21 1 + 15 7 22 1 + 16 7 23 1 + 17 10 11 1 + 18 11 12 2 + 19 11 24 1 + 20 12 13 1 + 21 13 14 2 + 22 13 18 1 + 23 14 15 1 + 24 14 25 1 + 25 15 16 2 + 26 15 26 1 + 27 16 17 1 + 28 16 27 1 + 29 17 18 2 + 30 17 28 1 + 31 18 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-METHYL-8-PHENYL-1,4-DIHYDRO-6H-PYRIMIDO(1,2-B)-1,2,4,5-TE +@MOLECULE +FIBLIL + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 6.9055 0.3318 15.5601 N.3 1 UNCH -0.3246 + 2 O1 5.8616 1.2981 15.4159 O.3 1 UNCH -0.3155 + 3 C1 4.8659 0.7615 14.5365 C.3 1 UNCH 0.2800 + 4 C2 5.4575 0.6096 13.1389 C.3 1 UNCH 0.0000 + 5 C3 6.7248 -0.2428 13.1910 C.3 1 UNCH 0.0000 + 6 C4 7.6472 0.2334 14.3083 C.3 1 UNCH 0.3001 + 7 C5 7.6276 0.5006 16.7430 C.2 1 UNCH 0.5438 + 8 O2 8.8363 0.2880 16.8347 O.2 1 UNCH -0.5700 + 9 C6 6.8893 0.9020 17.9741 C.2 1 UNCH 0.0862 + 10 C7 5.5850 0.4578 18.2326 C.2 1 UNCH -0.1500 + 11 C8 4.9338 0.8338 19.4120 C.2 1 UNCH -0.1500 + 12 C9 5.5986 1.6473 20.3406 C.2 1 UNCH 0.1330 + 13 C10 6.9098 2.0794 20.1003 C.2 1 UNCH -0.1500 + 14 C11 7.5532 1.6989 18.9187 C.2 1 UNCH -0.1500 + 15 N2 4.9165 2.0440 21.5794 N.2 1 UNCH 0.9070 + 16 O3 5.5350 2.7681 22.3722 O.3 1 UNCH -0.5200 + 17 O4 3.7613 1.6320 21.7578 O.2 1 UNCH -0.5200 + 18 H1 5.0725 -0.1888 17.5249 H 1 UNCH 0.1500 + 19 H2 3.9195 0.4827 19.5917 H 1 UNCH 0.1500 + 20 H3 7.4424 2.7029 20.8157 H 1 UNCH 0.1500 + 21 H4 8.5756 2.0249 18.7325 H 1 UNCH 0.1500 + 22 H5 4.0244 1.4608 14.5161 H 1 UNCH 0.0000 + 23 H6 4.5001 -0.1949 14.9288 H 1 UNCH 0.0000 + 24 H7 4.7250 0.1682 12.4555 H 1 UNCH 0.0000 + 25 H8 5.7214 1.6014 12.7516 H 1 UNCH 0.0000 + 26 H9 7.2448 -0.2137 12.2276 H 1 UNCH 0.0000 + 27 H10 6.4416 -1.2865 13.3770 H 1 UNCH 0.0000 + 28 H11 8.4787 -0.4688 14.4333 H 1 UNCH 0.0000 + 29 H12 8.0709 1.2187 14.0792 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 7 am + 4 2 3 1 + 5 3 4 1 + 6 3 22 1 + 7 3 23 1 + 8 4 5 1 + 9 4 24 1 + 10 4 25 1 + 11 5 6 1 + 12 5 26 1 + 13 5 27 1 + 14 6 28 1 + 15 6 29 1 + 16 7 8 2 + 17 7 9 1 + 18 9 10 2 + 19 9 14 1 + 20 10 11 1 + 21 10 18 1 + 22 11 12 2 + 23 11 19 1 + 24 12 13 1 + 25 12 15 1 + 26 13 14 2 + 27 13 20 1 + 28 14 21 1 + 29 15 16 1 + 30 15 17 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(P-NITROBENZOYL)TETRAHYDRO-2H-1,2-OXAZINE +@MOLECULE +FICDOK + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.9142 5.1046 1.0100 N.3 1 UNCH 0.0476 + 2 C1 1.9486 3.6687 0.8689 C.3 1 UNCH 0.2556 + 3 C2 0.7958 5.8502 1.2465 C.2 1 UNCH 0.0365 + 4 N2 1.0781 7.1289 1.3278 N.2 1 UNCH -0.5653 + 5 C3 2.4474 7.2002 1.1293 C.2 1 UNCH 0.3062 + 6 N3 3.0765 8.4912 1.1414 N.2 1 UNCH 0.9610 + 7 O1 2.8849 9.2036 2.1362 O.3 1 UNCH -0.5200 + 8 O2 3.7755 8.7873 0.1621 O.2 1 UNCH -0.5200 + 9 C4 3.0091 5.9429 0.9407 C.2 1 UNCH -0.0886 + 10 O3 4.2151 5.3976 0.7480 O.3 1 UNCH -0.3430 + 11 C5 5.3465 6.2567 0.7591 C.3 1 UNCH 0.2800 + 12 H1 0.9352 3.2680 0.9534 H 1 UNCH 0.0000 + 13 H2 2.5768 3.2577 1.6632 H 1 UNCH 0.0000 + 14 H3 2.3608 3.4267 -0.1140 H 1 UNCH 0.0000 + 15 H4 -0.1915 5.4168 1.3507 H 1 UNCH 0.1500 + 16 H5 6.2424 5.6283 0.7744 H 1 UNCH 0.0000 + 17 H6 5.3673 6.8855 1.6547 H 1 UNCH 0.0000 + 18 H7 5.3809 6.8564 -0.1542 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 am + 3 1 9 1 + 4 2 12 1 + 5 2 13 1 + 6 2 14 1 + 7 3 4 2 + 8 3 15 1 + 9 4 5 1 + 10 5 6 1 + 11 5 9 2 + 12 6 7 1 + 13 6 8 2 + 14 9 10 1 + 15 10 11 1 + 16 11 16 1 + 17 11 17 1 + 18 11 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-METHOXY-1-METHYL-4-NITROIMIDAZOLE +@MOLECULE +FIFGUW + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.3008 1.3029 -0.6088 S.2 1 FIFG 0.2105 + 2 O1 2.0962 0.2208 -1.2769 O.2 1 FIFG -0.5000 + 3 O2 1.2994 2.5057 1.7883 O.3 1 FIFG -0.2960 + 4 C1 1.9829 1.4730 1.0649 C.3 1 FIFG 0.1490 + 5 C2 1.0350 1.1530 2.1895 C.3 1 FIFG -0.0470 + 6 C3 1.5501 0.7729 3.5594 C.3 1 FIFG 0.0950 + 7 C4 3.0908 0.9465 3.6707 C.3 1 FIFG 0.0000 + 8 C5 3.9316 0.6141 2.4079 C.3 1 FIFG 0.0000 + 9 C6 3.4635 1.4860 1.2210 C.3 1 FIFG 0.0950 + 10 C7 0.8778 1.6722 4.6215 C.3 1 FIFG 0.0000 + 11 C8 1.8850 2.8940 -1.2347 C.3 1 FIFG 0.1935 + 12 C9 5.4078 0.9483 2.7130 C.3 1 FIFG 0.0000 + 13 C10 3.8656 -0.8730 2.0215 C.3 1 FIFG 0.0000 + 14 C11 1.1324 -0.6773 3.8803 C.3 1 FIFG 0.0000 + 15 H1 0.0465 0.7663 1.9744 H 1 FIFG 0.1000 + 16 H2 3.4639 0.3682 4.5270 H 1 FIFG 0.0000 + 17 H3 3.2970 1.9976 3.9224 H 1 FIFG 0.0000 + 18 H4 3.9702 1.1501 0.3078 H 1 FIFG 0.0000 + 19 H5 3.7881 2.5243 1.3739 H 1 FIFG 0.0000 + 20 H6 -0.2143 1.5848 4.5804 H 1 FIFG 0.0000 + 21 H7 1.2020 1.4016 5.6327 H 1 FIFG 0.0000 + 22 H8 1.1207 2.7292 4.4641 H 1 FIFG 0.0000 + 23 H9 2.9731 2.9562 -1.1665 H 1 FIFG 0.0000 + 24 H10 1.4255 3.7065 -0.6672 H 1 FIFG 0.0000 + 25 H11 1.5890 2.9808 -2.2831 H 1 FIFG 0.0000 + 26 H12 6.0444 0.7698 1.8390 H 1 FIFG 0.0000 + 27 H13 5.7891 0.3334 3.5362 H 1 FIFG 0.0000 + 28 H14 5.5281 1.9993 2.9992 H 1 FIFG 0.0000 + 29 H15 4.6247 -1.1162 1.2685 H 1 FIFG 0.0000 + 30 H16 2.9022 -1.1454 1.5826 H 1 FIFG 0.0000 + 31 H17 4.0463 -1.5160 2.8896 H 1 FIFG 0.0000 + 32 H18 0.0405 -0.7650 3.9404 H 1 FIFG 0.0000 + 33 H19 1.4516 -1.3870 3.1151 H 1 FIFG 0.0000 + 34 H20 1.5419 -1.0071 4.8415 H 1 FIFG 0.0000 +@BOND + 1 1 2 2 + 2 1 4 1 + 3 1 11 1 + 4 3 4 1 + 5 3 5 1 + 6 4 5 1 + 7 4 9 1 + 8 5 6 1 + 9 5 15 1 + 10 6 7 1 + 11 6 10 1 + 12 6 14 1 + 13 7 8 1 + 14 7 16 1 + 15 7 17 1 + 16 8 9 1 + 17 8 12 1 + 18 8 13 1 + 19 9 18 1 + 20 9 19 1 + 21 10 20 1 + 22 10 21 1 + 23 10 22 1 + 24 11 23 1 + 25 11 24 1 + 26 11 25 1 + 27 12 26 1 + 28 12 27 1 + 29 12 28 1 + 30 13 29 1 + 31 13 30 1 + 32 13 31 1 + 33 14 32 1 + 34 14 33 1 + 35 14 34 1 +@SUBSTRUCTURE + 1 FIFG 1 +@COMMENT +COMMENT (1,2-EPOXY-3,3,5,5-TETRAMETHYLCYCLOHEXYL) METHYL SULFOXIDE +@MOLECULE +FIGYID + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.8662 1.8430 -0.0061 C.3 1 UNCH 0.0580 + 2 C2 4.2791 1.5040 0.3674 C.3 1 UNCH -0.2000 + 3 C3 3.4434 2.3547 1.2806 C.3 1 UNCH -0.2000 + 4 N1 1.8553 0.7945 0.0455 N.3 1 UNCH -0.8780 + 5 H1 2.7348 2.5707 -0.8042 H 1 UNCH 0.1000 + 6 H2 4.5015 0.4917 0.6847 H 1 UNCH 0.1000 + 7 H3 5.0790 1.9836 -0.1836 H 1 UNCH 0.1000 + 8 H4 3.1048 1.9135 2.2110 H 1 UNCH 0.1000 + 9 H5 3.6775 3.4102 1.3479 H 1 UNCH 0.1000 + 10 H6 0.9248 1.1943 0.1621 H 1 UNCH 0.3600 + 11 H7 1.8318 0.2711 -0.8290 H 1 UNCH 0.3600 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 3 1 + 6 2 6 1 + 7 2 7 1 + 8 3 8 1 + 9 3 9 1 + 10 4 10 1 + 11 4 11 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT AMINOCYCLOPROPANE (AT 170.5 DEG.K) +@MOLECULE +FIHXID + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 2.2282 9.8832 11.4105 BR 1 UNCH -0.1100 + 2 O1 2.9856 11.3607 6.7510 O.3 1 UNCH -0.5600 + 3 O2 -0.2082 9.1553 5.2733 O.2 1 UNCH -0.5700 + 4 O3 1.5061 13.3810 4.7689 O.3 1 UNCH -0.6800 + 5 O4 0.4005 6.0170 8.4602 O.2 1 UNCH -0.5700 + 6 O5 2.3172 13.0131 9.0097 O.3 1 UNCH -0.6800 + 7 N1 1.4157 9.5533 6.8719 N.3 1 UNCH -0.4691 + 8 N2 0.0918 7.6329 6.9045 N.3 1 UNCH -0.4900 + 9 C1 1.7530 10.8244 6.2372 C.3 1 UNCH 0.5801 + 10 C2 0.4005 8.8121 6.2843 C.2 1 UNCH 0.6900 + 11 C3 0.7081 11.9062 6.4738 C.3 1 UNCH 0.0000 + 12 C4 1.4989 13.1578 6.1826 C.3 1 UNCH 0.2800 + 13 C5 0.7002 7.1208 8.0139 C.2 1 UNCH 0.6156 + 14 C6 2.9147 12.8052 6.6493 C.3 1 UNCH 0.2800 + 15 C7 1.7500 7.9737 8.6438 C.2 1 UNCH 0.0144 + 16 C8 3.2636 13.3985 8.0157 C.3 1 UNCH 0.2800 + 17 C9 2.0598 9.1171 8.0152 C.2 1 UNCH -0.0410 + 18 C10 2.4329 7.4861 9.8287 C.2 1 UNCH -0.1500 + 19 C11 2.6851 8.1408 10.9698 C.2 1 UNCH -0.0400 + 20 H1 2.8580 9.7494 8.3908 H 1 UNCH 0.1500 + 21 H2 2.7237 6.4364 9.7741 H 1 UNCH 0.1500 + 22 H3 3.1874 7.6357 11.7889 H 1 UNCH 0.1500 + 23 H4 1.8925 10.6496 5.1622 H 1 UNCH 0.0000 + 24 H5 0.3798 11.9003 7.5196 H 1 UNCH 0.0000 + 25 H6 -0.1709 11.7804 5.8349 H 1 UNCH 0.0000 + 26 H7 -0.6228 7.0684 6.4730 H 1 UNCH 0.3700 + 27 H8 1.0928 14.0569 6.6551 H 1 UNCH 0.0000 + 28 H9 3.6678 13.1186 5.9175 H 1 UNCH 0.0000 + 29 H10 4.2495 13.0559 8.3469 H 1 UNCH 0.0000 + 30 H11 3.2742 14.4916 7.9676 H 1 UNCH 0.0000 + 31 H12 0.5943 13.5942 4.4996 H 1 UNCH 0.4000 + 32 H13 2.4353 12.0549 9.1440 H 1 UNCH 0.4000 +@BOND + 1 1 19 1 + 2 2 9 1 + 3 2 14 1 + 4 3 10 2 + 5 4 12 1 + 6 4 31 1 + 7 5 13 2 + 8 6 16 1 + 9 6 32 1 + 10 7 9 1 + 11 7 10 am + 12 7 17 1 + 13 8 10 am + 14 8 13 am + 15 8 26 1 + 16 9 11 1 + 17 9 23 1 + 18 11 12 1 + 19 11 24 1 + 20 11 25 1 + 21 12 14 1 + 22 12 27 1 + 23 13 15 1 + 24 14 16 1 + 25 14 28 1 + 26 15 17 2 + 27 15 18 1 + 28 16 29 1 + 29 16 30 1 + 30 17 20 1 + 31 18 19 2 + 32 18 21 1 + 33 19 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (Z)-5-(2-BROMOVINYL)-2'-DEOXYURIDINE MONOHYDRATE +@MOLECULE +FIKJAK + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.6482 -0.1211 -4.2979 C.2 1 UNCH -0.0382 + 2 C2 10.9604 0.1611 -4.5059 C.2 1 UNCH -0.0732 + 3 C3 11.4446 1.3725 -5.2705 C.3 1 UNCH 0.1382 + 4 C4 10.4036 1.9791 -6.2268 C.3 1 UNCH 0.4000 + 5 C5 9.0679 2.1377 -5.4758 C.3 1 UNCH 0.0000 + 6 C6 8.5273 0.8363 -4.8154 C.3 1 UNCH 0.5382 + 7 C7 11.9867 -0.7064 -4.0073 C.1 1 UNCH 0.4921 + 8 C8 10.8759 3.3186 -6.6383 C.1 1 UNCH 0.3571 + 9 C9 10.2608 1.1254 -7.4200 C.1 1 UNCH 0.3571 + 10 C10 7.6751 0.1113 -5.7883 C.1 1 UNCH 0.3571 + 11 C11 7.7005 1.2527 -3.6528 C.1 1 UNCH 0.3571 + 12 N1 9.2383 -1.2744 -3.6307 N.3 1 UNCH -0.9000 + 13 N2 12.8180 -1.3940 -3.5848 N.1 1 UNCH -0.5571 + 14 N3 11.2427 4.3833 -6.9151 N.1 1 UNCH -0.5571 + 15 N4 10.1540 0.4241 -8.3361 N.1 1 UNCH -0.5571 + 16 N5 6.9900 -0.4102 -6.5663 N.1 1 UNCH -0.5571 + 17 N6 7.0833 1.5978 -2.7321 N.1 1 UNCH -0.5571 + 18 H1 9.9403 -1.8077 -3.1123 H 1 UNCH 0.4000 + 19 H2 8.3361 -1.2702 -3.1507 H 1 UNCH 0.4000 + 20 H3 11.7610 2.1203 -4.5281 H 1 UNCH 0.0000 + 21 H4 12.3506 1.1101 -5.8374 H 1 UNCH 0.0000 + 22 H5 8.3052 2.5701 -6.1427 H 1 UNCH 0.0000 + 23 H6 9.2178 2.8988 -4.6921 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 12 1 + 4 2 3 1 + 5 2 7 1 + 6 3 4 1 + 7 3 20 1 + 8 3 21 1 + 9 4 5 1 + 10 4 8 1 + 11 4 9 1 + 12 5 6 1 + 13 5 22 1 + 14 5 23 1 + 15 6 10 1 + 16 6 11 1 + 17 7 13 3 + 18 8 14 3 + 19 9 15 3 + 20 10 16 3 + 21 11 17 3 + 22 12 18 1 + 23 12 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4,4,6,6-PENTACYANOCYCLOHEXENAMINE +@MOLECULE +FIKZOO10 + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.9435 3.4600 -0.4874 C.2 1 FIKJ 0.0284 + 2 C2 -0.1387 2.5679 -0.5074 C.2 1 FIKJ -0.1500 + 3 C3 -1.3169 2.8926 -1.1845 C.2 1 FIKJ -0.1500 + 4 C4 -1.4249 4.1106 -1.8519 C.2 1 FIKJ -0.1500 + 5 C5 -0.3568 5.0050 -1.8429 C.2 1 FIKJ -0.1500 + 6 C6 0.8214 4.6818 -1.1648 C.2 1 FIKJ -0.1500 + 7 C7 2.1807 3.1104 0.2152 C.2 1 FIKJ 0.0806 + 8 C8 2.8714 3.9121 1.0392 C.2 1 FIKJ -0.0490 + 9 C9 3.9039 1.6433 0.7847 C.2 1 FIKJ 0.5810 + 10 N1 2.7440 1.8642 0.0798 N.3 1 FIKJ -0.5390 + 11 S1 4.2819 3.1140 1.6800 S.3 1 FIKJ -0.2420 + 12 S2 4.7613 0.2302 0.7629 S.2 1 FIKJ -0.3800 + 13 H1 -0.0824 1.6177 0.0192 H 1 FIKJ 0.1500 + 14 H2 -2.1514 2.1958 -1.1877 H 1 FIKJ 0.1500 + 15 H3 -2.3416 4.3631 -2.3790 H 1 FIKJ 0.1500 + 16 H4 -0.4388 5.9541 -2.3668 H 1 FIKJ 0.1500 + 17 H5 1.6467 5.3904 -1.1835 H 1 FIKJ 0.1500 + 18 H6 2.6122 4.9273 1.3061 H 1 FIKJ 0.1500 + 19 H7 2.3578 1.1528 -0.5263 H 1 FIKJ 0.3700 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 13 1 + 6 3 4 2 + 7 3 14 1 + 8 4 5 1 + 9 4 15 1 + 10 5 6 2 + 11 5 16 1 + 12 6 17 1 + 13 7 8 2 + 14 7 10 1 + 15 8 11 1 + 16 8 18 1 + 17 9 10 1 + 18 9 11 1 + 19 9 12 2 + 20 10 19 1 +@SUBSTRUCTURE + 1 FIKJ 1 +@COMMENT +COMMENT 4-PHENYLTHIAZOLE-2(3H)-THIONE +@MOLECULE +FILGEM + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.2136 1.2432 13.2799 C.2 1 UNCH -0.0284 + 2 C2 1.1018 1.5454 13.3789 C.2 1 UNCH -0.0292 + 3 C3 1.5980 -0.6067 14.4370 C.2 1 UNCH 0.6156 + 4 C4 0.1557 -0.9470 14.3325 C.2 1 UNCH 0.0794 + 5 C5 -0.6757 -0.0479 13.7789 C.2 1 UNCH -0.1500 + 6 C6 1.7610 2.8206 12.9224 C.3 1 UNCH 0.1382 + 7 C7 -0.3086 -2.1979 14.8129 C.1 1 UNCH 0.4921 + 8 C8 -1.1691 2.1935 12.6810 C.2 1 UNCH 0.0284 + 9 C9 -1.4422 2.1517 11.3130 C.2 1 UNCH -0.1500 + 10 C10 -2.3560 3.0569 10.8011 C.2 1 UNCH 0.1600 + 11 C11 -2.7262 3.9899 12.8723 C.2 1 UNCH 0.1600 + 12 C12 -1.8296 3.1279 13.4801 C.2 1 UNCH -0.1500 + 13 N1 1.9625 0.6254 13.9472 N.3 1 UNCH -0.5390 + 14 N2 -0.7491 -3.2046 15.1876 N.1 1 UNCH -0.5571 + 15 N3 -3.0015 3.9756 11.5507 N.2 1 UNCH -0.6200 + 16 O1 2.4259 -1.3661 14.9271 O.2 1 UNCH -0.5700 + 17 H1 2.9506 0.8407 14.0269 H 1 UNCH 0.3700 + 18 H2 -1.7387 -0.2624 13.6855 H 1 UNCH 0.1500 + 19 H3 2.5289 2.5989 12.1731 H 1 UNCH 0.0000 + 20 H4 1.0675 3.5373 12.4756 H 1 UNCH 0.0000 + 21 H5 2.2433 3.3185 13.7707 H 1 UNCH 0.0000 + 22 H6 -0.9576 1.4363 10.6574 H 1 UNCH 0.1500 + 23 H7 -2.6019 3.0677 9.7429 H 1 UNCH 0.1500 + 24 H8 -3.2645 4.7370 13.4489 H 1 UNCH 0.1500 + 25 H9 -1.6532 3.1890 14.5486 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 5 1 + 3 1 8 1 + 4 2 6 1 + 5 2 13 1 + 6 3 4 1 + 7 3 13 am + 8 3 16 2 + 9 4 5 2 + 10 4 7 1 + 11 5 18 1 + 12 6 19 1 + 13 6 20 1 + 14 6 21 1 + 15 7 14 3 + 16 8 9 2 + 17 8 12 1 + 18 9 10 1 + 19 9 22 1 + 20 10 15 2 + 21 10 23 1 + 22 11 12 2 + 23 11 15 1 + 24 11 24 1 + 25 12 25 1 + 26 13 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-CYANO-2-METHYL-(3,4'-BIPYRIDIN)-6(1H)-ONE (INOTROPIC CARD +@MOLECULE +FILNOD + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.4312 6.6818 1.4450 S.2 1 UNCH 0.4980 + 2 O1 9.1655 5.7733 0.5057 O.2 1 UNCH -0.5000 + 3 O2 10.1883 6.1464 3.2192 O.3 1 UNCH -0.3000 + 4 N1 9.3629 7.2373 2.7309 N.3 1 UNCH -0.4320 + 5 C1 10.2094 8.4294 2.4604 C.3 1 UNCH 0.4135 + 6 C2 9.4778 9.1502 1.3471 C.2 1 UNCH -0.1435 + 7 C3 9.6657 10.4544 0.8981 C.2 1 UNCH -0.1500 + 8 C4 8.9175 10.9083 -0.1914 C.2 1 UNCH -0.1500 + 9 C5 7.9999 10.0626 -0.8294 C.2 1 UNCH -0.1500 + 10 C6 7.8153 8.7540 -0.3805 C.2 1 UNCH -0.1500 + 11 C7 8.5541 8.3150 0.7099 C.2 1 UNCH 0.0640 + 12 C8 10.2885 9.2593 3.7471 C.3 1 UNCH 0.0000 + 13 C9 11.6297 8.0876 1.9640 C.3 1 UNCH 0.0000 + 14 H1 9.6937 5.8696 4.0110 H 1 UNCH 0.4000 + 15 H2 10.3896 11.1126 1.3692 H 1 UNCH 0.1500 + 16 H3 9.0564 11.9235 -0.5566 H 1 UNCH 0.1500 + 17 H4 7.4334 10.4268 -1.6833 H 1 UNCH 0.1500 + 18 H5 7.1120 8.0936 -0.8782 H 1 UNCH 0.1500 + 19 H6 9.2935 9.5728 4.0861 H 1 UNCH 0.0000 + 20 H7 10.8824 10.1692 3.6031 H 1 UNCH 0.0000 + 21 H8 10.7549 8.6899 4.5596 H 1 UNCH 0.0000 + 22 H9 11.6092 7.4489 1.0728 H 1 UNCH 0.0000 + 23 H10 12.1839 8.9953 1.6959 H 1 UNCH 0.0000 + 24 H11 12.2142 7.5714 2.7341 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 4 1 + 3 1 11 1 + 4 3 4 1 + 5 3 14 1 + 6 4 5 1 + 7 5 6 1 + 8 5 12 1 + 9 5 13 1 + 10 6 7 2 + 11 6 11 1 + 12 7 8 1 + 13 7 15 1 + 14 8 9 2 + 15 8 16 1 + 16 9 10 1 + 17 9 17 1 + 18 10 11 2 + 19 10 18 1 + 20 12 19 1 + 21 12 20 1 + 22 12 21 1 + 23 13 22 1 + 24 13 23 1 + 25 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-HYDROXY-3,3-DIMETHYL-2,3-DIHYDRO-1,2-BENZOTHIAZOLE-1-OXID +@MOLECULE +FINBIN + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -3.1500 12.5977 4.0427 CL 1 UNCH -0.2900 + 2 CL2 -2.8978 10.6911 1.8517 CL 1 UNCH -0.2900 + 3 CL3 -5.3319 10.7965 3.4309 CL 1 UNCH -0.2900 + 4 CL4 1.3918 9.6150 2.3751 CL 1 UNCH -0.2900 + 5 CL5 1.8028 7.8032 4.6218 CL 1 UNCH -0.2900 + 6 CL6 0.8292 6.7908 2.0809 CL 1 UNCH -0.2900 + 7 CL7 -2.4731 10.6918 8.0103 CL 1 UNCH -0.2900 + 8 CL8 0.4325 10.4746 7.9110 CL 1 UNCH -0.2900 + 9 CL9 -1.1382 8.3624 9.1155 CL 1 UNCH -0.2900 + 10 P1 -2.7763 7.2510 4.9377 P 1 UNCH 0.3030 + 11 P2 -1.0477 9.9499 4.8182 P 1 UNCH -0.5007 + 12 O1 -3.4172 8.5333 4.1804 O.3 1 UNCH -0.3810 + 13 O2 -1.3294 7.1974 4.2082 O.3 1 UNCH -0.3810 + 14 O3 -2.3504 7.9457 6.3393 O.3 1 UNCH -0.3810 + 15 C1 -2.9749 9.8622 4.5306 C.3 1 UNCH 0.4469 + 16 C2 -0.7624 8.4066 3.6600 C.3 1 UNCH 0.4469 + 17 C3 -1.1872 8.7995 6.3871 C.3 1 UNCH 0.4469 + 18 C4 -3.5322 10.9184 3.5152 C.3 1 UNCH 0.8700 + 19 C5 0.7284 8.1771 3.2335 C.3 1 UNCH 0.8700 + 20 C6 -1.1081 9.5538 7.7589 C.3 1 UNCH 0.8700 + 21 H1 -3.4323 10.1072 5.4959 H 1 UNCH 0.0000 + 22 H2 -1.3068 8.6236 2.7339 H 1 UNCH 0.0000 + 23 H3 -0.3088 8.1448 6.3564 H 1 UNCH 0.0000 +@BOND + 1 1 18 1 + 2 2 18 1 + 3 3 18 1 + 4 4 19 1 + 5 5 19 1 + 6 6 19 1 + 7 7 20 1 + 8 8 20 1 + 9 9 20 1 + 10 10 12 1 + 11 10 13 1 + 12 10 14 1 + 13 11 15 1 + 14 11 16 1 + 15 11 17 1 + 16 12 15 1 + 17 13 16 1 + 18 14 17 1 + 19 15 18 1 + 20 15 21 1 + 21 16 19 1 + 22 16 22 1 + 23 17 20 1 + 24 17 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,6,7-TRIS(TRICHLOROMETHYL)-1,4-DIPHOSPHA-3,5,8-TRIOXABICYC +@MOLECULE +FINPEX + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.7189 3.6282 8.8078 O.3 1 CHGB -0.6500 + 2 O2 -1.0985 3.0196 6.7527 O.2 1 CHGB -0.5700 + 3 O3 -0.6845 -1.7611 8.8449 O.3 1 CHGB -0.6800 + 4 N1 -0.3226 0.4576 7.6174 N.3 1 CHGB -0.8220 + 5 C1 -1.2923 1.2171 8.4636 C.3 1 CHGB 0.5250 + 6 C2 -2.6359 0.4555 8.6172 C.3 1 CHGB 0.0000 + 7 C3 -2.1166 -0.1448 9.9480 C.3 1 CHGB 0.0000 + 8 C4 -1.0421 0.9727 9.9749 C.3 1 CHGB 0.0000 + 9 C5 -1.3645 2.6892 7.9045 C.2 1 CHGB 0.6670 + 10 C6 -1.6246 -1.5893 9.9137 C.3 1 CHGB 0.2800 + 11 H1 -3.5022 1.1154 8.7501 H 1 CHGB 0.0000 + 12 H2 -2.8797 -0.2645 7.8296 H 1 CHGB 0.0000 + 13 H3 -2.8447 -0.0404 10.7636 H 1 CHGB 0.0000 + 14 H4 -1.3172 1.8136 10.6223 H 1 CHGB 0.0000 + 15 H5 -0.0320 0.6549 10.2531 H 1 CHGB 0.0000 + 16 H6 -1.1297 -1.8495 10.8546 H 1 CHGB 0.0000 + 17 H7 -2.4612 -2.2758 9.7502 H 1 CHGB 0.0000 + 18 H8 -0.4294 -2.7099 8.8949 H 1 CHGB 0.4000 + 19 H9 0.6351 0.8144 7.7055 H 1 CHGB 0.4500 + 20 H10 -0.5745 0.5105 6.6211 H 1 CHGB 0.4500 + 21 H11 -0.3095 -0.5460 7.8966 H 1 CHGB 0.4500 + 22 H12 -1.7279 4.4895 8.3302 H 1 CHGB 0.5000 +@BOND + 1 1 9 1 + 2 1 22 1 + 3 2 9 2 + 4 3 10 1 + 5 3 18 1 + 6 4 5 1 + 7 4 19 1 + 8 4 20 1 + 9 4 21 1 + 10 5 6 1 + 11 5 8 1 + 12 5 9 1 + 13 6 7 1 + 14 6 11 1 + 15 6 12 1 + 16 7 8 1 + 17 7 10 1 + 18 7 13 1 + 19 8 14 1 + 20 8 15 1 + 21 10 16 1 + 22 10 17 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT CIS-1-AMMINO-3-HYDROXYMETHYL-CYCLOBUTANE-1-CARBOXYLIC ACID +@MOLECULE +FITGIY + 28 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.2205 -0.3064 2.2550 N.2 1 UNCH -0.6960 + 2 C1 -0.4425 -1.5924 2.2286 C.2 1 UNCH 0.3746 + 3 C2 -1.8496 -2.1119 2.1954 C.3 1 UNCH 0.0610 + 4 C3 0.7225 -2.4848 2.2525 C.2 1 UNCH 0.0288 + 5 C4 0.8190 -3.9444 2.2740 C.2 1 UNCH 0.7056 + 6 O1 1.8305 -4.5584 2.5857 O.2 1 UNCH -0.5700 + 7 O2 -0.3532 -4.5082 1.8967 O.3 1 UNCH -0.4300 + 8 C5 -0.3422 -5.9415 1.8765 C.3 1 UNCH 0.2800 + 9 C6 -1.7161 -6.4163 1.4458 C.3 1 UNCH 0.0000 + 10 C7 1.7519 -1.6301 2.2962 C.2 1 UNCH -0.0382 + 11 N2 3.1085 -1.8997 2.3883 N.3 1 UNCH -0.9000 + 12 C8 1.2448 -0.2016 2.2841 C.3 1 UNCH 0.6642 + 13 C9 1.7043 0.5825 1.0584 C.3 1 UNCH 0.0000 + 14 O3 1.7258 0.4462 3.4471 O.3 1 UNCH -0.6800 + 15 H1 -2.0096 -2.8191 3.0134 H 1 UNCH 0.0000 + 16 H2 -2.5577 -1.2860 2.3122 H 1 UNCH 0.0000 + 17 H3 -2.0413 -2.5987 1.2355 H 1 UNCH 0.0000 + 18 H4 -0.1154 -6.3239 2.8780 H 1 UNCH 0.0000 + 19 H5 0.4125 -6.2952 1.1652 H 1 UNCH 0.0000 + 20 H6 -1.9662 -6.0237 0.4546 H 1 UNCH 0.0000 + 21 H7 -2.4839 -6.0505 2.1356 H 1 UNCH 0.0000 + 22 H8 -1.7598 -7.5085 1.4148 H 1 UNCH 0.0000 + 23 H9 3.2992 -2.8503 2.7168 H 1 UNCH 0.4000 + 24 H10 3.5782 -1.1971 2.9643 H 1 UNCH 0.4000 + 25 H11 2.7944 0.6946 1.0429 H 1 UNCH 0.0000 + 26 H12 1.2861 1.5959 1.0736 H 1 UNCH 0.0000 + 27 H13 1.3896 0.1034 0.1247 H 1 UNCH 0.0000 + 28 H14 0.9608 0.9806 3.7210 H 1 UNCH 0.4000 +@BOND + 1 1 2 2 + 2 1 12 1 + 3 2 3 1 + 4 2 4 1 + 5 3 15 1 + 6 3 16 1 + 7 3 17 1 + 8 4 5 1 + 9 4 10 2 + 10 5 6 2 + 11 5 7 1 + 12 7 8 1 + 13 8 9 1 + 14 8 18 1 + 15 8 19 1 + 16 9 20 1 + 17 9 21 1 + 18 9 22 1 + 19 10 11 1 + 20 10 12 1 + 21 11 23 1 + 22 11 24 1 + 23 12 13 1 + 24 12 14 1 + 25 13 25 1 + 26 13 26 1 + 27 13 27 1 + 28 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ETHYL 3-AMINO-2-HYDROXY-2,5-DIMETHYL-2H-PYRROLE-4-CARBOXYLA +@MOLECULE +FITSEG + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.8489 2.2335 3.9648 C.3 1 UNCH 0.0050 + 2 C2 6.4483 2.2335 2.6641 C.1 1 UNCH 0.4521 + 3 N1 6.9010 2.2335 1.5979 N.1 1 UNCH -0.5571 + 4 C3 4.5532 1.4787 4.1603 C.3 1 UNCH 0.0050 + 5 C4 4.3830 0.7318 5.3721 C.1 1 UNCH 0.4521 + 6 N2 4.2609 0.1199 6.3478 N.1 1 UNCH -0.5571 + 7 H1 6.5597 2.2335 4.7871 H 1 UNCH 0.1000 + 8 H2 4.1132 1.0039 3.2874 H 1 UNCH 0.1000 + 9 C3B 4.5532 2.9883 4.1603 C.3 1 UNCH 0.0050 + 10 C4B 4.3830 3.7352 5.3721 C.1 1 UNCH 0.4521 + 11 H2B 4.1132 3.4631 3.2874 H 1 UNCH 0.1000 + 12 N2B 4.2609 4.3471 6.3478 N.1 1 UNCH -0.5571 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 7 1 + 4 1 9 1 + 5 2 3 3 + 6 4 5 1 + 7 4 8 1 + 8 4 9 1 + 9 5 6 3 + 10 9 10 1 + 11 9 11 1 + 12 10 12 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-CYCLOPROPANE-1,2,3-TRICARBONITRILE (FOR STEREOISOMER +@MOLECULE +FITTIL + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.4312 2.0183 0.0829 N.2 1 FITT -0.6200 + 2 C1 2.9252 1.1708 -0.8379 C.2 1 FITT 0.5210 + 3 N2 2.0390 0.2030 -0.6034 N.2 1 FITT -0.1560 + 4 C2 1.6236 0.0713 0.7013 C.2 1 FITT 0.5342 + 5 C3 2.1249 0.9215 1.6699 C.2 1 FITT -0.1516 + 6 C4 3.0400 1.9126 1.3669 C.2 1 FITT 0.4100 + 7 N3 1.5267 0.4962 2.8296 N.3 1 FITT 0.0332 + 8 C5 0.7023 -0.5515 2.5101 C.2 1 FITT 0.0365 + 9 N4 0.7402 -0.8283 1.2236 N.2 1 FITT -0.5653 + 10 N5 3.5773 2.7747 2.2889 N.3 1 FITT -0.9000 + 11 C6 1.5348 -0.6800 -1.6415 C.3 1 FITT 0.4880 + 12 H1 3.2817 1.3025 -1.8561 H 1 FITT 0.1500 + 13 H2 1.6775 0.8723 3.7578 H 1 FITT 0.2700 + 14 H3 4.1072 3.5381 1.8778 H 1 FITT 0.4000 + 15 H4 3.0703 3.0025 3.1318 H 1 FITT 0.4000 + 16 H5 0.1088 -1.0681 3.2568 H 1 FITT 0.1500 + 17 H6 1.9589 -0.3995 -2.6086 H 1 FITT 0.0000 + 18 H7 1.8280 -1.7019 -1.3880 H 1 FITT 0.0000 + 19 H8 0.4466 -0.5821 -1.6715 H 1 FITT 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 12 1 + 4 2 3 2 + 5 3 11 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 + 9 5 7 1 + 10 5 6 1 + 11 6 10 am + 12 7 13 1 + 13 7 8 am + 14 8 16 1 + 15 8 9 2 + 16 10 15 1 + 17 10 14 1 + 18 11 19 1 + 19 11 18 1 + 20 11 17 1 +@SUBSTRUCTURE + 1 FITT 1 +@COMMENT +COMMENT 3-METHYLADENINE HYDROCHLORIDE +@MOLECULE +FIVNUT + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.9348 3.6119 3.0533 S.2 1 UNCH -0.3800 + 2 O1 5.8247 0.7642 2.7663 O.2 1 UNCH -0.5700 + 3 N1 5.3405 2.8631 -0.6533 N.3 1 UNCH -0.5691 + 4 N2 2.9481 1.2269 3.4644 N.3 1 UNCH -0.8000 + 5 N3 4.1755 4.6790 6.1871 N.1 1 UNCH -0.5571 + 6 C1 5.2942 3.4949 0.5797 C.2 1 UNCH -0.0500 + 7 C2 5.4841 2.8920 1.7656 C.2 1 UNCH -0.1238 + 8 C3 5.7474 1.4182 1.7284 C.2 1 UNCH 0.5412 + 9 C4 5.8811 0.7578 0.3968 C.2 1 UNCH -0.1238 + 10 C5 5.6706 1.5179 -0.6874 C.2 1 UNCH -0.0500 + 11 C6 5.1715 3.6269 -1.8930 C.3 1 UNCH 0.3691 + 12 C7 5.4335 3.6304 3.0916 C.3 1 UNCH 0.1382 + 13 C8 4.4850 3.0168 4.1609 C.3 1 UNCH 0.2610 + 14 C9 6.8668 3.7739 3.6340 C.3 1 UNCH 0.0000 + 15 C10 3.1393 2.5786 3.5809 C.2 1 UNCH 0.3790 + 16 C11 4.2880 3.9481 5.2919 C.1 1 UNCH 0.3571 + 17 C12 6.2244 -0.6930 0.3667 C.3 1 UNCH 0.1382 + 18 H1 2.1082 0.8876 3.0084 H 1 UNCH 0.3700 + 19 H2 3.7266 0.5724 3.5380 H 1 UNCH 0.3700 + 20 H3 5.0890 4.5616 0.5213 H 1 UNCH 0.1500 + 21 H4 5.7464 1.0991 -1.6878 H 1 UNCH 0.1500 + 22 H5 4.4702 4.4573 -1.7537 H 1 UNCH 0.0000 + 23 H6 4.7732 2.9966 -2.6960 H 1 UNCH 0.0000 + 24 H7 6.1349 4.0349 -2.2162 H 1 UNCH 0.0000 + 25 H8 5.0829 4.6535 2.8870 H 1 UNCH 0.0000 + 26 H9 4.9660 2.1265 4.5877 H 1 UNCH 0.0000 + 27 H10 7.2827 2.8076 3.9396 H 1 UNCH 0.0000 + 28 H11 6.8970 4.4400 4.5025 H 1 UNCH 0.0000 + 29 H12 7.5333 4.2016 2.8761 H 1 UNCH 0.0000 + 30 H13 6.3013 -1.0703 -0.6585 H 1 UNCH 0.0000 + 31 H14 7.1861 -0.8698 0.8591 H 1 UNCH 0.0000 + 32 H15 5.4566 -1.2804 0.8806 H 1 UNCH 0.0000 +@BOND + 1 1 15 2 + 2 2 8 2 + 3 3 6 1 + 4 3 10 1 + 5 3 11 1 + 6 4 15 1 + 7 4 18 1 + 8 4 19 1 + 9 5 16 3 + 10 6 7 2 + 11 6 20 1 + 12 7 8 1 + 13 7 12 1 + 14 8 9 1 + 15 9 10 2 + 16 9 17 1 + 17 10 21 1 + 18 11 22 1 + 19 11 23 1 + 20 11 24 1 + 21 12 13 1 + 22 12 14 1 + 23 12 25 1 + 24 13 15 1 + 25 13 16 1 + 26 13 26 1 + 27 14 27 1 + 28 14 28 1 + 29 14 29 1 + 30 17 30 1 + 31 17 31 1 + 32 17 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-(1,5-DIMETHYL-4(1H)-PYRIDON-3-YL)-2-CYANO-N-BUTANETHIOAMI +@MOLECULE +FIVRAD + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.9773 11.4960 4.0923 S.3 1 FIVR 0.1807 + 2 O1 1.5545 7.6267 0.6164 O.2 1 FIVR -0.5700 + 3 N1 0.0331 10.4846 3.2732 N.2 1 FIVR -0.5095 + 4 N2 -0.0795 8.8138 1.5734 N.3 1 FIVR -0.4930 + 5 N3 2.0944 8.9525 2.3912 N.3 1 FIVR -0.7301 + 6 C1 -0.6688 9.7524 2.4082 C.2 1 FIVR 0.3518 + 7 C2 -2.0984 10.0146 2.3795 C.2 1 FIVR 0.0000 + 8 C3 -2.4218 11.0065 3.3091 C.2 1 FIVR 0.0400 + 9 C4 -3.7365 11.4635 3.5016 C.2 1 FIVR -0.1500 + 10 C5 -4.7546 10.8998 2.7301 C.2 1 FIVR -0.1500 + 11 C6 -4.4710 9.9112 1.7965 C.2 1 FIVR -0.1500 + 12 C7 -3.1577 9.4629 1.6130 C.2 1 FIVR -0.1500 + 13 C8 1.2241 8.4325 1.4848 C.2 1 FIVR 0.6900 + 14 C9 3.5213 8.7520 2.2821 C.3 1 FIVR 0.3001 + 15 C10 4.2293 9.1099 3.5841 C.3 1 FIVR 0.0000 + 16 C11 5.7387 8.9042 3.4717 C.3 1 FIVR 0.0000 + 17 C12 6.4477 9.2610 4.7684 C.3 1 FIVR 0.0000 + 18 H1 -0.6741 8.3466 0.9068 H 1 FIVR 0.3700 + 19 H2 1.7537 9.7762 2.8806 H 1 FIVR 0.3700 + 20 H3 -3.9585 12.2361 4.2320 H 1 FIVR 0.1500 + 21 H4 -5.7799 11.2391 2.8633 H 1 FIVR 0.1500 + 22 H5 -5.2750 9.4804 1.2032 H 1 FIVR 0.1500 + 23 H6 -2.9632 8.6867 0.8776 H 1 FIVR 0.1500 + 24 H7 3.8786 9.3818 1.4596 H 1 FIVR 0.0000 + 25 H8 3.7137 7.7077 2.0109 H 1 FIVR 0.0000 + 26 H9 4.0155 10.1542 3.8449 H 1 FIVR 0.0000 + 27 H10 3.8296 8.4951 4.4003 H 1 FIVR 0.0000 + 28 H11 5.9545 7.8594 3.2197 H 1 FIVR 0.0000 + 29 H12 6.1395 9.5232 2.6606 H 1 FIVR 0.0000 + 30 H13 6.2785 10.3098 5.0324 H 1 FIVR 0.0000 + 31 H14 6.0922 8.6368 5.5945 H 1 FIVR 0.0000 + 32 H15 7.5263 9.1063 4.6656 H 1 FIVR 0.0000 +@BOND + 1 1 8 1 + 2 1 3 1 + 3 2 13 2 + 4 3 6 2 + 5 4 18 1 + 6 4 13 am + 7 4 6 am + 8 5 19 1 + 9 5 14 1 + 10 5 13 am + 11 6 7 1 + 12 7 12 1 + 13 7 8 2 + 14 8 9 1 + 15 9 20 1 + 16 9 10 2 + 17 10 21 1 + 18 10 11 1 + 19 11 22 1 + 20 11 12 2 + 21 12 23 1 + 22 14 25 1 + 23 14 24 1 + 24 14 15 1 + 25 15 27 1 + 26 15 26 1 + 27 15 16 1 + 28 16 29 1 + 29 16 28 1 + 30 16 17 1 + 31 17 32 1 + 32 17 31 1 + 33 17 30 1 +@SUBSTRUCTURE + 1 FIVR 1 +@COMMENT +COMMENT 1-N-BUTYL-3-(1,2-BENZISOTHIAZOL-3-YL)UREA (PHYTOCIDAL AGENT +@MOLECULE +FIXPIL + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.0484 1.2049 0.5083 C.2 1 FIXP 0.3870 + 2 C2 4.1838 0.5252 1.3661 C.2 1 FIXP -0.1500 + 3 C3 2.8455 0.9198 1.4489 C.2 1 FIXP -0.1500 + 4 C4 2.3697 1.9923 0.6828 C.2 1 FIXP -0.1435 + 5 C5 3.2566 2.6904 -0.1465 C.2 1 FIXP -0.1500 + 6 C6 4.5953 2.3018 -0.2341 C.2 1 FIXP -0.1500 + 7 C7 7.0882 -0.3713 0.5402 C.2 1 FIXP 0.2470 + 8 C8 8.4484 -0.0730 0.6217 C.2 1 FIXP -0.0840 + 9 C9 6.4473 -1.6665 0.4683 C.2 1 FIXP 0.5950 + 10 C10 0.9374 2.4294 0.7994 C.3 1 FIXP 0.1435 + 11 C11 7.2284 -2.9105 0.8128 C.3 1 FIXP 0.0610 + 12 N1 6.4530 0.8431 0.4441 N.2 1 FIXP 0.2410 + 13 N2 7.2594 1.8754 0.3902 N.2 1 FIXP -0.0819 + 14 O1 8.5277 1.3168 0.5190 O.3 1 FIXP -0.0191 + 15 O2 9.4818 -0.6964 0.7284 O.3 1 FIXP -0.7760 + 16 O3 5.2722 -1.7708 0.1081 O.2 1 FIXP -0.5700 + 17 H1 4.5225 -0.2918 1.9951 H 1 FIXP 0.1500 + 18 H2 2.1731 0.3854 2.1190 H 1 FIXP 0.1500 + 19 H3 2.9068 3.5405 -0.7307 H 1 FIXP 0.1500 + 20 H4 5.2607 2.8522 -0.8943 H 1 FIXP 0.1500 + 21 H5 0.2863 1.5771 1.0204 H 1 FIXP 0.0000 + 22 H6 0.8366 3.1696 1.5991 H 1 FIXP 0.0000 + 23 H7 0.5866 2.8712 -0.1392 H 1 FIXP 0.0000 + 24 H8 7.6988 -2.8065 1.7941 H 1 FIXP 0.0000 + 25 H9 7.9762 -3.1123 0.0418 H 1 FIXP 0.0000 + 26 H10 6.5448 -3.7641 0.8599 H 1 FIXP 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 12 1 + 4 2 3 1 + 5 2 17 1 + 6 3 4 2 + 7 3 18 1 + 8 4 5 1 + 9 4 10 1 + 10 5 6 2 + 11 5 19 1 + 12 6 20 1 + 13 7 8 2 + 14 7 9 1 + 15 7 12 1 + 16 8 14 1 + 17 8 15 1 + 18 9 11 1 + 19 9 16 2 + 20 10 21 1 + 21 10 22 1 + 22 10 23 1 + 23 11 24 1 + 24 11 25 1 + 25 11 26 1 + 26 12 13 2 + 27 13 14 1 +@SUBSTRUCTURE + 1 FIXP 1 +@COMMENT +COMMENT 4-ACETYL-3-(P-TOLYL)SYDNONE +@MOLECULE +FIYBIY + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8736 2.9588 0.7491 S.1 1 FIYB 1.1433 + 2 O1 1.0726 1.6584 0.1414 O.2 1 FIYB -0.6500 + 3 O2 -0.7561 4.8572 -1.7033 O.2 1 FIYB -0.5700 + 4 O3 1.1857 5.4699 -0.7407 O.3 1 FIYB -0.4300 + 5 N1 -0.2174 3.9606 0.3549 N.2 1 FIYB -1.0195 + 6 C1 0.7468 2.6933 2.5083 C.2 1 FIYB -0.0090 + 7 C2 1.3313 1.5509 3.0644 C.2 1 FIYB -0.1500 + 8 C3 1.2508 1.3370 4.4405 C.2 1 FIYB -0.1500 + 9 C4 0.5843 2.2556 5.2525 C.2 1 FIYB -0.1500 + 10 C5 -0.0103 3.3870 4.6917 C.2 1 FIYB -0.1500 + 11 C6 0.0657 3.6088 3.3163 C.2 1 FIYB -0.1500 + 12 C7 0.0130 4.7593 -0.7599 C.2 1 FIYB 1.1500 + 13 C8 2.0522 5.3191 0.4038 C.3 1 FIYB 0.2800 + 14 C9 2.4062 3.8531 0.5903 C.3 1 FIYB 0.1052 + 15 C10 3.3019 6.1488 0.1415 C.3 1 FIYB 0.0000 + 16 H1 1.8393 0.8207 2.4380 H 1 FIYB 0.1500 + 17 H2 1.6983 0.4486 4.8799 H 1 FIYB 0.1500 + 18 H3 0.5158 2.0821 6.3240 H 1 FIYB 0.1500 + 19 H4 -0.5441 4.0902 5.3268 H 1 FIYB 0.1500 + 20 H5 -0.4200 4.4839 2.8918 H 1 FIYB 0.1500 + 21 H6 1.5431 5.7311 1.2846 H 1 FIYB 0.0000 + 22 H7 3.0364 3.6755 1.4650 H 1 FIYB 0.0000 + 23 H8 2.9060 3.4534 -0.2991 H 1 FIYB 0.0000 + 24 H9 3.0353 7.1997 -0.0149 H 1 FIYB 0.0000 + 25 H10 4.0028 6.0874 0.9795 H 1 FIYB 0.0000 + 26 H11 3.8115 5.8159 -0.7695 H 1 FIYB 0.0000 +@BOND + 1 1 14 1 + 2 1 6 1 + 3 1 5 2 + 4 1 2 2 + 5 3 12 2 + 6 4 13 1 + 7 4 12 1 + 8 5 12 am + 9 6 11 1 + 10 6 7 2 + 11 7 16 1 + 12 7 8 1 + 13 8 17 1 + 14 8 9 2 + 15 9 18 1 + 16 9 10 1 + 17 10 19 1 + 18 10 11 2 + 19 11 20 1 + 20 13 21 1 + 21 13 15 1 + 22 13 14 1 + 23 14 23 1 + 24 14 22 1 + 25 15 26 1 + 26 15 25 1 + 27 15 24 1 +@SUBSTRUCTURE + 1 FIYB 1 +@COMMENT +COMMENT 6-METHYL-4-PHENYL-1,4,3-OXATHIAZIN-2(6H)-ONE 4-OXIDE +@MOLECULE +FIZGEA + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.6764 3.1648 2.9826 S.2 1 FIZG 0.0230 + 2 C1 7.3223 4.1506 1.6439 C.2 1 FIZG 0.1960 + 3 C2 7.4907 5.4294 1.9996 C.2 1 FIZG 0.1400 + 4 C3 7.0761 5.7031 3.3645 C.2 1 FIZG 0.1400 + 5 C4 6.5993 4.6253 3.9992 C.2 1 FIZG 0.1960 + 6 CL1 7.6386 3.3930 0.1607 CL 1 FIZG -0.1400 + 7 CL2 8.1107 6.6418 0.9609 CL 1 FIZG -0.1400 + 8 CL3 7.2023 7.2576 4.0725 CL 1 FIZG -0.1400 + 9 CL4 6.0646 4.4738 5.6008 CL 1 FIZG -0.1400 + 10 N1 5.2479 2.5412 2.6065 N.2 1 FIZG -0.2730 + 11 S2 3.9393 3.6182 2.3635 S.1 1 FIZG 1.4470 + 12 O1 3.3694 3.9729 3.6477 O.2 1 FIZG -0.6500 + 13 O2 4.3233 4.6485 1.4170 O.2 1 FIZG -0.6500 + 14 C5 2.7931 2.5380 1.5418 C.2 1 FIZG -0.0090 + 15 C6 1.8236 1.8608 2.2854 C.2 1 FIZG -0.1500 + 16 C7 0.9145 1.0283 1.6306 C.2 1 FIZG -0.1500 + 17 C8 0.9710 0.8685 0.2390 C.2 1 FIZG -0.1435 + 18 C9 1.9321 1.5763 -0.4960 C.2 1 FIZG -0.1500 + 19 C10 2.8447 2.4108 0.1511 C.2 1 FIZG -0.1500 + 20 C11 -0.0314 0.0003 -0.4644 C.3 1 FIZG 0.1435 + 21 H1 1.7638 1.9763 3.3655 H 1 FIZG 0.1500 + 22 H2 0.1569 0.5061 2.2120 H 1 FIZG 0.1500 + 23 H3 1.9712 1.4833 -1.5797 H 1 FIZG 0.1500 + 24 H4 3.5818 2.9562 -0.4343 H 1 FIZG 0.1500 + 25 H5 0.3975 -0.4327 -1.3742 H 1 FIZG 0.0000 + 26 H6 -0.9129 0.5901 -0.7340 H 1 FIZG 0.0000 + 27 H7 -0.3437 -0.8321 0.1750 H 1 FIZG 0.0000 +@BOND + 1 1 10 2 + 2 1 5 1 + 3 1 2 1 + 4 2 6 1 + 5 2 3 2 + 6 3 7 1 + 7 3 4 1 + 8 4 8 1 + 9 4 5 2 + 10 5 9 1 + 11 10 11 1 + 12 11 14 1 + 13 11 13 2 + 14 11 12 2 + 15 14 19 1 + 16 14 15 2 + 17 15 21 1 + 18 15 16 1 + 19 16 22 1 + 20 16 17 2 + 21 17 20 1 + 22 17 18 1 + 23 18 23 1 + 24 18 19 2 + 25 19 24 1 + 26 20 27 1 + 27 20 26 1 + 28 20 25 1 +@SUBSTRUCTURE + 1 FIZG 1 +@COMMENT +COMMENT TETRACHLOROTHIOPHENE-N-P-TOSYLIMIDE +@MOLECULE +FIZGOK + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.7957 1.3128 7.9486 S.1 1 FIZG 1.2735 + 2 C1 1.4860 0.8966 6.2778 C.2 1 FIZG 0.1230 + 3 C2 0.2127 1.1307 5.9565 C.2 1 FIZG 0.1400 + 4 C3 -0.5629 1.6810 7.0492 C.2 1 FIZG 0.1400 + 5 C4 0.1447 1.8482 8.1676 C.2 1 FIZG 0.1230 + 6 CL1 2.7726 0.2964 5.3600 CL 1 FIZG -0.1400 + 7 CL2 -0.4489 0.8414 4.4044 CL 1 FIZG -0.1400 + 8 CL3 -2.2166 2.0955 6.8949 CL 1 FIZG -0.1400 + 9 CL4 -0.2919 2.4706 9.6776 CL 1 FIZG -0.1400 + 10 N1 2.8683 2.4065 8.1591 N.2 1 FIZG -1.0195 + 11 C5 2.8022 3.6208 7.5007 C.2 1 FIZG 1.1500 + 12 O1 1.9115 3.9210 6.7174 O.2 1 FIZG -0.5700 + 13 O2 3.8375 4.4328 7.8267 O.3 1 FIZG -0.4300 + 14 C6 3.8245 5.7059 7.1764 C.3 1 FIZG 0.2800 + 15 C7 5.0365 6.4891 7.6422 C.3 1 FIZG 0.0000 + 16 O3 1.8915 0.0432 8.6558 O.2 1 FIZG -0.6500 + 17 H1 3.8696 5.5681 6.0902 H 1 FIZG 0.0000 + 18 H2 2.9103 6.2487 7.4418 H 1 FIZG 0.0000 + 19 H3 5.0696 7.4746 7.1694 H 1 FIZG 0.0000 + 20 H4 5.9591 5.9504 7.4022 H 1 FIZG 0.0000 + 21 H5 5.0171 6.6187 8.7294 H 1 FIZG 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 10 2 + 4 1 16 2 + 5 2 3 2 + 6 2 6 1 + 7 3 4 1 + 8 3 7 1 + 9 4 5 2 + 10 4 8 1 + 11 5 9 1 + 12 10 11 am + 13 11 12 2 + 14 11 13 1 + 15 13 14 1 + 16 14 15 1 + 17 14 17 1 + 18 14 18 1 + 19 15 19 1 + 20 15 20 1 + 21 15 21 1 +@SUBSTRUCTURE + 1 FIZG 1 +@COMMENT +COMMENT TETRACHLOROTHIOPHENE-N-ETHOXYCARBONYLIMIDE-S-OXIDE +@MOLECULE +FIZJED + 16 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.3770 -1.2805 0.2870 N.2 1 FIZJ -0.3100 + 2 N2 0.8471 -0.8307 0.6782 N.2 1 FIZJ -0.3100 + 3 C1 -1.1896 -0.4364 -0.3804 C.2 1 FIZJ 0.7025 + 4 O1 -2.4403 -0.8366 -0.8013 O.3 1 FIZJ -0.3625 + 5 C2 -2.7343 -2.1833 -0.4533 C.3 1 FIZJ 0.2800 + 6 H1 -2.0368 -2.8794 -0.9322 H 1 FIZJ 0.0000 + 7 H2 -2.7425 -2.3207 0.6337 H 1 FIZJ 0.0000 + 8 H3 -3.7382 -2.4124 -0.8240 H 1 FIZJ 0.0000 + 9 C1D 1.1896 0.4364 0.3804 C.2 1 FIZJ 0.7025 + 10 N2D -0.8471 0.8307 -0.6782 N.2 1 FIZJ -0.3100 + 11 N1D 0.3770 1.2805 -0.2870 N.2 1 FIZJ -0.3100 + 12 O1D 2.4403 0.8366 0.8013 O.3 1 FIZJ -0.3625 + 13 C2D 2.7343 2.1833 0.4533 C.3 1 FIZJ 0.2800 + 14 H1D 2.0368 2.8794 0.9322 H 1 FIZJ 0.0000 + 15 H2D 2.7425 2.3207 -0.6337 H 1 FIZJ 0.0000 + 16 H3D 3.7382 2.4124 0.8240 H 1 FIZJ 0.0000 +@BOND + 1 1 3 2 + 2 1 2 1 + 3 2 9 2 + 4 3 10 am + 5 3 4 1 + 6 4 5 1 + 7 5 8 1 + 8 5 7 1 + 9 5 6 1 + 10 9 12 1 + 11 9 11 am + 12 10 11 2 + 13 12 13 1 + 14 13 16 1 + 15 13 15 1 + 16 13 14 1 +@SUBSTRUCTURE + 1 FIZJ 1 +@COMMENT +COMMENT 3,6-DIMETHOXY-1,2,4,5-TETRAZINE +@MOLECULE +FOBJUB01 + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.9696 6.2231 4.4243 O.2 1 UNCH -0.9000 + 2 O2 4.7595 4.2100 5.1458 O.3 1 UNCH -0.9000 + 3 N1 4.5917 7.6307 6.3867 N.3 1 UNCH -0.7460 + 4 C1 4.5409 5.4448 5.2618 C.2 1 UNCH 0.9470 + 5 C2 4.9577 6.1902 6.4845 C.3 1 UNCH 0.2490 + 6 C3 4.8973 5.5557 7.8468 C.3 1 UNCH -0.2000 + 7 C4 6.2292 5.8511 7.2127 C.3 1 UNCH -0.2000 + 8 H1 5.4047 8.2412 6.3376 H 1 UNCH 0.4500 + 9 H2 4.1344 7.6472 5.4338 H 1 UNCH 0.4500 + 10 H3 3.8814 7.9034 7.0628 H 1 UNCH 0.4500 + 11 H4 4.6002 6.1452 8.7037 H 1 UNCH 0.1000 + 12 H5 4.5920 4.5138 7.9023 H 1 UNCH 0.1000 + 13 H6 6.8324 6.6402 7.6411 H 1 UNCH 0.1000 + 14 H7 6.8061 5.0048 6.8482 H 1 UNCH 0.1000 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 5 1 + 4 3 8 1 + 5 3 9 1 + 6 3 10 1 + 7 4 5 1 + 8 5 6 1 + 9 5 7 1 + 10 6 7 1 + 11 6 11 1 + 12 6 12 1 + 13 7 13 1 + 14 7 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-AMINOCYCLOPROPANECARBOXYLIC ACID HEMIHYDRATE +@MOLECULE +FODTUN + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.1444 4.4102 8.8417 C.3 1 UNCH 0.0610 + 2 C2 2.0718 4.6517 7.6772 C.2 1 UNCH 0.5690 + 3 O1 2.6808 3.7203 7.1557 O.2 1 UNCH -0.5700 + 4 N1 2.1608 5.9542 7.2421 N.3 1 UNCH -0.5851 + 5 C3 2.9615 6.4663 6.0685 C.3 1 UNCH 0.2780 + 6 C4 1.8598 6.8515 5.0073 C.3 1 UNCH 0.0000 + 7 C5 2.9777 8.0429 6.3096 C.3 1 UNCH 0.0000 + 8 C6 1.4432 7.8121 6.1809 C.3 1 UNCH 0.0000 + 9 C7 1.0668 6.9234 7.3709 C.3 1 UNCH 0.3001 + 10 C8 4.3139 5.8372 5.6091 C.2 1 UNCH 0.5770 + 11 O2 5.3725 6.4715 5.5414 O.2 1 UNCH -0.5700 + 12 N2 4.2533 4.5096 5.2312 N.3 1 UNCH -0.7301 + 13 C9 5.4578 3.7796 4.9318 C.3 1 UNCH 0.3001 + 14 H1 1.4626 3.5081 9.3729 H 1 UNCH 0.0000 + 15 H2 0.1241 4.2701 8.4760 H 1 UNCH 0.0000 + 16 H3 1.1779 5.2426 9.5496 H 1 UNCH 0.0000 + 17 H4 1.1384 6.0702 4.7489 H 1 UNCH 0.0000 + 18 H5 2.2123 7.3291 4.0860 H 1 UNCH 0.0000 + 19 H6 3.4444 8.6544 5.5285 H 1 UNCH 0.0000 + 20 H7 3.3373 8.3829 7.2859 H 1 UNCH 0.0000 + 21 H8 0.8110 8.6684 5.9490 H 1 UNCH 0.0000 + 22 H9 0.0944 6.4397 7.2445 H 1 UNCH 0.0000 + 23 H10 1.1358 7.4394 8.3323 H 1 UNCH 0.0000 + 24 H11 3.4989 3.9810 5.6725 H 1 UNCH 0.3700 + 25 H12 5.1813 2.8112 4.5089 H 1 UNCH 0.0000 + 26 H13 6.0235 3.6342 5.8561 H 1 UNCH 0.0000 + 27 H14 6.0669 4.3390 4.2166 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 1 15 1 + 4 1 16 1 + 5 2 3 2 + 6 2 4 am + 7 4 5 1 + 8 4 9 1 + 9 5 6 1 + 10 5 7 1 + 11 5 10 1 + 12 6 8 1 + 13 6 17 1 + 14 6 18 1 + 15 7 8 1 + 16 7 19 1 + 17 7 20 1 + 18 8 9 1 + 19 8 21 1 + 20 9 22 1 + 21 9 23 1 + 22 10 11 2 + 23 10 12 am + 24 12 13 1 + 25 12 24 1 + 26 13 25 1 + 27 13 26 1 + 28 13 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-ACETYL-2,4-METHANOPROLINE-N'-METHYLAMIDE PEPSEQ A=1 PRO* +@MOLECULE +FOGBIM + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 7.6466 1.6567 -1.6392 SI 1 FOGB 0.5389 + 2 O1 8.9802 0.9814 -2.4318 O.3 1 FOGB -0.4474 + 3 N1 8.9440 -0.4473 -0.6875 N.2 1 FOGB -0.0922 + 4 C1 7.9608 3.3707 -1.0269 C.3 1 FOGB -0.0805 + 5 C2 6.0760 1.4897 -2.5968 C.3 1 FOGB -0.0805 + 6 C3 7.7603 0.3764 -0.2427 C.3 1 FOGB 0.2656 + 7 C4 9.3583 -1.6184 0.1274 C.3 1 FOGB 0.3461 + 8 C5 10.7698 -2.0587 -0.2379 C.3 1 FOGB 0.0000 + 9 C6 10.9403 -2.1344 -1.7513 C.3 1 FOGB 0.0000 + 10 C7 10.6978 -0.7628 -2.3693 C.3 1 FOGB 0.0610 + 11 C8 9.5019 -0.0925 -1.7969 C.2 1 FOGB 0.4890 + 12 H11 8.0478 4.0770 -1.8582 H 1 FOGB 0.0000 + 13 H12 7.1475 3.7150 -0.3808 H 1 FOGB 0.0000 + 14 H13 8.8889 3.4210 -0.4492 H 1 FOGB 0.0000 + 15 H21 5.9188 0.4569 -2.9230 H 1 FOGB 0.0000 + 16 H22 6.0891 2.1221 -3.4898 H 1 FOGB 0.0000 + 17 H23 5.2118 1.7832 -1.9931 H 1 FOGB 0.0000 + 18 H31 8.0025 0.8167 0.7277 H 1 FOGB 0.0000 + 19 H32 6.8916 -0.2843 -0.1882 H 1 FOGB 0.0000 + 20 H41 9.3029 -1.3346 1.1832 H 1 FOGB 0.0000 + 21 H42 8.6307 -2.4130 -0.0680 H 1 FOGB 0.0000 + 22 H51 10.9790 -3.0344 0.2146 H 1 FOGB 0.0000 + 23 H52 11.5005 -1.3517 0.1760 H 1 FOGB 0.0000 + 24 H61 10.2303 -2.8612 -2.1653 H 1 FOGB 0.0000 + 25 H62 11.9470 -2.4844 -2.0041 H 1 FOGB 0.0000 + 26 H71 10.5759 -0.8572 -3.4535 H 1 FOGB 0.0000 + 27 H72 11.5616 -0.1126 -2.1862 H 1 FOGB 0.0000 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 4 1 + 4 1 2 1 + 5 2 11 1 + 6 3 11 2 + 7 3 7 1 + 8 3 6 1 + 9 4 14 1 + 10 4 13 1 + 11 4 12 1 + 12 5 17 1 + 13 5 16 1 + 14 5 15 1 + 15 6 19 1 + 16 6 18 1 + 17 7 21 1 + 18 7 20 1 + 19 7 8 1 + 20 8 23 1 + 21 8 22 1 + 22 8 9 1 + 23 9 25 1 + 24 9 24 1 + 25 9 10 1 + 26 10 27 1 + 27 10 26 1 + 28 10 11 1 +@SUBSTRUCTURE + 1 FOGB 1 +@COMMENT +COMMENT (1-(DIMETHYLSILYL)METHYL)-2-PIPERIDONE IODIDE (AT -120 DEG. +@MOLECULE +FOGVIG01 + 35 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.4088 1.4158 -1.6006 N.3 1 UNCH -0.8500 + 2 N2 5.3358 0.2230 0.2586 N.3 1 UNCH -0.8500 + 3 C1 5.1522 1.4594 -0.2697 C.2 1 UNCH 0.5500 + 4 N3 4.8118 2.5686 0.2914 N.2 1 UNCH -0.5760 + 5 C2 4.5433 2.5687 1.6227 C.2 1 UNCH 0.5041 + 6 N4 4.4627 1.5370 2.4447 N.2 1 UNCH -0.5653 + 7 C3 4.1376 1.9412 3.7333 C.2 1 UNCH 0.0462 + 8 C4 3.9908 3.3063 3.8806 C.2 1 UNCH -0.1100 + 9 S1 4.2375 4.0926 2.3829 S.3 1 UNCH -0.0800 + 10 C5 4.0025 0.9154 4.8121 C.3 1 UNCH 0.4110 + 11 S2 2.7100 -0.3314 4.4654 S.3 1 UNCH -0.4600 + 12 C6 1.2137 0.7208 4.4801 C.3 1 UNCH 0.2300 + 13 C7 0.4452 0.6235 5.7940 C.3 1 UNCH 0.0610 + 14 C8 1.2030 1.2418 6.9638 C.2 1 UNCH 0.4390 + 15 N5 1.3938 2.5150 6.8974 N.2 1 UNCH -0.6380 + 16 S3 2.1935 3.3561 8.0035 S.1 1 UNCH 1.6260 + 17 O1 2.8611 4.4543 7.3418 O.2 1 UNCH -0.6500 + 18 O2 2.9445 2.4851 8.8839 O.2 1 UNCH -0.6500 + 19 N6 1.0618 4.0979 8.9852 N.3 1 UNCH -0.9780 + 20 N7 1.5992 0.3706 7.9456 N.3 1 UNCH -0.8500 + 21 H1 5.4839 2.3535 -1.9817 H 1 UNCH 0.4000 + 22 H2 6.2375 0.8709 -1.8070 H 1 UNCH 0.4000 + 23 H3 5.0030 0.1910 1.2268 H 1 UNCH 0.4000 + 24 H4 4.8749 -0.4962 -0.2854 H 1 UNCH 0.4000 + 25 H5 3.7503 3.8684 4.7726 H 1 UNCH 0.1500 + 26 H6 3.8081 1.3811 5.7821 H 1 UNCH 0.0000 + 27 H7 4.9538 0.3800 4.9047 H 1 UNCH 0.0000 + 28 H8 0.5685 0.3549 3.6740 H 1 UNCH 0.0000 + 29 H9 1.4584 1.7584 4.2391 H 1 UNCH 0.0000 + 30 H10 -0.5003 1.1715 5.6937 H 1 UNCH 0.0000 + 31 H11 0.1829 -0.4172 6.0180 H 1 UNCH 0.0000 + 32 H12 1.3830 4.0566 9.9515 H 1 UNCH 0.4200 + 33 H13 0.9330 5.0562 8.6607 H 1 UNCH 0.4200 + 34 H14 2.3122 0.7188 8.5916 H 1 UNCH 0.4000 + 35 H15 1.7477 -0.5987 7.6801 H 1 UNCH 0.4000 +@BOND + 1 1 3 am + 2 1 21 1 + 3 1 22 1 + 4 2 3 am + 5 2 23 1 + 6 2 24 1 + 7 3 4 2 + 8 4 5 am + 9 5 6 2 + 10 5 9 1 + 11 6 7 1 + 12 7 8 2 + 13 7 10 1 + 14 8 9 1 + 15 8 25 1 + 16 10 11 1 + 17 10 26 1 + 18 10 27 1 + 19 11 12 1 + 20 12 13 1 + 21 12 28 1 + 22 12 29 1 + 23 13 14 1 + 24 13 30 1 + 25 13 31 1 + 26 14 15 2 + 27 14 20 am + 28 15 16 1 + 29 16 17 2 + 30 16 18 2 + 31 16 19 1 + 32 19 32 1 + 33 19 33 1 + 34 20 34 1 + 35 20 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-((2-(DIAMINOMETHYLENEAMINO)-1,3-THIAZOL-4-YL)METHYLTHIO)- +@MOLECULE +FOHXEF + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.1665 4.8608 4.2586 S.2 1 FOHP -0.3800 + 2 S2 5.1410 3.8307 5.5829 S.3 1 FOHP -0.3710 + 3 N8 2.1531 0.4921 3.2606 N.3 1 FOHP -0.8191 + 4 C81 2.4608 1.6904 3.8345 C.2 1 FOHP 0.5600 + 5 N1 3.5745 2.0271 4.3621 N.2 1 FOHP -0.6610 + 6 C2 3.6303 3.2931 4.8686 C.2 1 FOHP 0.8020 + 7 N3 2.6603 4.1417 4.8562 N.2 1 FOHP -0.6610 + 8 C4 1.4628 3.7824 4.3046 C.2 1 FOHP 0.6510 + 9 N5 1.3752 2.5147 3.8060 N.3 1 FOHP -0.4201 + 10 C6 0.2558 1.8375 3.1645 C.3 1 FOHP 0.3001 + 11 C7 0.7171 0.3754 3.0745 C.3 1 FOHP 0.3691 + 12 C9 5.6735 2.3144 6.4260 C.3 1 FOHP 0.2300 + 13 C10 4.7814 1.9881 7.6222 C.3 1 FOHP 0.0000 + 14 C11 5.2708 0.7413 8.3447 C.3 1 FOHP 0.0000 + 15 H8 2.6986 -0.3120 3.5461 H 1 FOHP 0.4000 + 16 H61 -0.6665 1.9488 3.7419 H 1 FOHP 0.0000 + 17 H62 0.1151 2.2750 2.1699 H 1 FOHP 0.0000 + 18 H71 0.4596 -0.0835 2.1163 H 1 FOHP 0.0000 + 19 H72 0.2852 -0.2173 3.8878 H 1 FOHP 0.0000 + 20 H91 6.6995 2.4820 6.7718 H 1 FOHP 0.0000 + 21 H92 5.7120 1.4789 5.7196 H 1 FOHP 0.0000 + 22 H101 4.7744 2.8253 8.3307 H 1 FOHP 0.0000 + 23 H102 3.7464 1.8207 7.3029 H 1 FOHP 0.0000 + 24 H111 4.6245 0.5209 9.2001 H 1 FOHP 0.0000 + 25 H112 6.2913 0.8780 8.7165 H 1 FOHP 0.0000 + 26 H113 5.2604 -0.1272 7.6783 H 1 FOHP 0.0000 +@BOND + 1 1 8 2 + 2 2 6 1 + 3 2 12 1 + 4 3 4 am + 5 3 11 1 + 6 3 15 1 + 7 4 5 2 + 8 4 9 am + 9 5 6 am + 10 6 7 2 + 11 7 8 1 + 12 8 9 1 + 13 9 10 1 + 14 10 11 1 + 15 10 16 1 + 16 10 17 1 + 17 11 18 1 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 12 21 1 + 22 13 14 1 + 23 13 22 1 + 24 13 23 1 + 25 14 24 1 + 26 14 25 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 FOHP 1 +@COMMENT +COMMENT 2-N-PROPYLTHIO-7,8-DIHYDROIMIDAZO(1,2-A)-1,3,5-TRIAZINE-4(6 +@MOLECULE +FOHYAC + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.9746 1.5246 0.6052 S.1 1 UNCH 1.4950 + 2 CL1 7.8132 1.4834 1.4954 CL 1 UNCH -0.1860 + 3 O1 5.0085 1.4262 1.6794 O.2 1 UNCH -0.6500 + 4 O2 6.0047 2.6363 -0.3223 O.2 1 UNCH -0.6500 + 5 C1 5.9883 0.0075 -0.3051 C.2 1 UNCH -0.0090 + 6 C2 5.5008 -1.1594 0.2892 C.2 1 UNCH -0.1500 + 7 C3 5.4972 -2.3506 -0.4382 C.2 1 UNCH -0.1500 + 8 C4 5.9591 -2.3771 -1.7613 C.2 1 UNCH -0.1435 + 9 C5 6.4455 -1.1987 -2.3437 C.2 1 UNCH -0.1500 + 10 C6 6.4525 -0.0033 -1.6230 C.2 1 UNCH -0.1500 + 11 C7 5.9826 -3.6668 -2.5293 C.3 1 UNCH 0.1435 + 12 H2 5.1250 -1.1541 1.3105 H 1 UNCH 0.1500 + 13 H3 5.1261 -3.2601 0.0310 H 1 UNCH 0.1500 + 14 H5 6.8172 -1.2059 -3.3668 H 1 UNCH 0.1500 + 15 H6 6.8203 0.9052 -2.0959 H 1 UNCH 0.1500 + 16 H7 5.1658 -4.3243 -2.2136 H 1 UNCH 0.0000 + 17 H8 5.8566 -3.4851 -3.6018 H 1 UNCH 0.0000 + 18 H9 6.9346 -4.1813 -2.3665 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 2 + 4 1 5 1 + 5 5 6 2 + 6 5 10 1 + 7 6 7 1 + 8 6 12 1 + 9 7 8 2 + 10 7 13 1 + 11 8 9 1 + 12 8 11 1 + 13 9 10 2 + 14 9 14 1 + 15 10 15 1 + 16 11 16 1 + 17 11 17 1 + 18 11 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-METHYL-BENZENESULFONYL CHLORIDE +@MOLECULE +FOJBEL + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S3 0.8225 3.0387 15.7481 S.2 1 FOJB 0.1130 + 2 O1 1.0741 1.5282 17.9770 O.3 1 FOJB -0.5600 + 3 O11 -0.6736 2.9481 15.8262 O.2 1 FOJB -0.5000 + 4 C2 1.5333 2.7541 17.4062 C.3 1 FOJB 0.4735 + 5 C4 1.4515 1.4761 15.0293 C.3 1 FOJB 0.1935 + 6 C5 1.0001 0.2877 15.8821 C.3 1 FOJB 0.0000 + 7 C6 1.5506 0.3741 17.2986 C.3 1 FOJB 0.2800 + 8 C7 0.9672 1.3156 13.5783 C.3 1 FOJB 0.0000 + 9 C8 1.6031 2.3233 12.6140 C.3 1 FOJB 0.0000 + 10 C9 1.1578 2.0745 11.1807 C.3 1 FOJB 0.0000 + 11 C10 1.1271 3.8862 18.3368 C.3 1 FOJB 0.0000 + 12 H101 1.6221 2.8025 10.5081 H 1 FOJB 0.0000 + 13 H102 0.0713 2.1687 11.0860 H 1 FOJB 0.0000 + 14 H103 1.4469 1.0725 10.8478 H 1 FOJB 0.0000 + 15 H81 -0.1260 1.3989 13.5274 H 1 FOJB 0.0000 + 16 H82 1.2204 0.3054 13.2309 H 1 FOJB 0.0000 + 17 H61 1.3439 -0.6491 15.4279 H 1 FOJB 0.0000 + 18 H62 -0.0960 0.2495 15.9212 H 1 FOJB 0.0000 + 19 H31 2.6256 2.7387 17.3150 H 1 FOJB 0.0000 + 20 H71 2.5464 1.5389 15.0384 H 1 FOJB 0.0000 + 21 H91 1.3323 3.3475 12.8913 H 1 FOJB 0.0000 + 22 H92 2.6955 2.2495 12.6672 H 1 FOJB 0.0000 + 23 H51 2.6470 0.3657 17.3047 H 1 FOJB 0.0000 + 24 H52 1.2177 -0.4991 17.8694 H 1 FOJB 0.0000 + 25 H111 1.4557 4.8592 17.9574 H 1 FOJB 0.0000 + 26 H112 1.5634 3.7358 19.3303 H 1 FOJB 0.0000 + 27 H113 0.0402 3.9183 18.4746 H 1 FOJB 0.0000 +@BOND + 1 1 3 2 + 2 1 4 1 + 3 1 5 1 + 4 2 4 1 + 5 2 7 1 + 6 4 11 1 + 7 4 19 1 + 8 5 6 1 + 9 5 8 1 + 10 5 20 1 + 11 6 7 1 + 12 6 17 1 + 13 6 18 1 + 14 7 23 1 + 15 7 24 1 + 16 8 9 1 + 17 8 15 1 + 18 8 16 1 + 19 9 10 1 + 20 9 21 1 + 21 9 22 1 + 22 10 12 1 + 23 10 13 1 + 24 10 14 1 + 25 11 25 1 + 26 11 26 1 + 27 11 27 1 +@SUBSTRUCTURE + 1 FOJB 1 +@COMMENT +COMMENT (2S-C-,3R-S-,4R-C-)-2-METHYL-4-PROPYL-1,3-OXATHIANE-3-OXIDE +@MOLECULE +FOJPAV + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.7261 0.2653 5.2889 S.3 1 FOJL -0.3310 + 2 C2 3.5434 0.2686 5.0922 C.3 1 FOJL 0.2910 + 3 C3 3.8354 0.7449 3.6783 C.2 1 FOJL 0.5690 + 4 O3 4.9738 0.8566 3.2422 O.2 1 FOJL -0.5700 + 5 N4 2.6521 1.0166 3.0079 N.3 1 FOJL -0.2290 + 6 C5 2.5069 1.4575 1.7032 C.2 1 FOJL 0.7710 + 7 O5 3.3475 1.7139 0.8607 O.2 1 FOJL -0.5700 + 8 S6 0.7571 1.6143 1.3894 S.3 1 FOJL -0.2420 + 9 C7 0.3698 1.0846 3.0073 C.2 1 FOJL 0.0726 + 10 C71 1.4854 0.8220 3.6950 C.2 1 FOJL 0.2100 + 11 C8 -1.0289 0.9880 3.4222 C.2 1 FOJL 0.0284 + 12 C9 -1.9263 0.1598 2.7344 C.2 1 FOJL -0.1500 + 13 C10 -3.2624 0.0672 3.1357 C.2 1 FOJL -0.1500 + 14 C11 -3.7242 0.7931 4.2382 C.2 1 FOJL -0.1435 + 15 C12 -2.8359 1.6332 4.9172 C.2 1 FOJL -0.1500 + 16 C13 -1.4998 1.7263 4.5160 C.2 1 FOJL -0.1500 + 17 C14 -5.1655 0.7199 4.6474 C.3 1 FOJL 0.1435 + 18 H21 3.9328 -0.7435 5.2268 H 1 FOJL 0.0000 + 19 H11 3.9928 0.9570 5.8120 H 1 FOJL 0.0000 + 20 H9 -1.5971 -0.4245 1.8775 H 1 FOJL 0.1500 + 21 H10 -3.9401 -0.5774 2.5799 H 1 FOJL 0.1500 + 22 H12 -3.1782 2.2232 5.7649 H 1 FOJL 0.1500 + 23 H13 -0.8358 2.3901 5.0656 H 1 FOJL 0.1500 + 24 H141 -5.2741 0.8800 5.7253 H 1 FOJL 0.0000 + 25 H142 -5.5859 -0.2659 4.4221 H 1 FOJL 0.0000 + 26 H143 -5.7444 1.4816 4.1162 H 1 FOJL 0.0000 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 2 3 1 + 4 2 18 1 + 5 2 19 1 + 6 3 4 2 + 7 3 5 am + 8 5 6 am + 9 5 10 1 + 10 6 7 2 + 11 6 8 1 + 12 8 9 1 + 13 9 10 2 + 14 9 11 1 + 15 11 12 2 + 16 11 16 1 + 17 12 13 1 + 18 12 20 1 + 19 13 14 2 + 20 13 21 1 + 21 14 15 1 + 22 14 17 1 + 23 15 16 2 + 24 15 22 1 + 25 16 23 1 + 26 17 24 1 + 27 17 25 1 + 28 17 26 1 +@SUBSTRUCTURE + 1 FOJL 1 +@COMMENT +COMMENT 7-P-TOLYL-2,3-DIHYDRO-5H-THIAZOLO(4,3-B)THIAZOLE-3,5-DIONE +@MOLECULE +FONCOA + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.0073 1.5120 3.1780 C.3 1 FONC 0.0000 + 2 C2 8.0328 3.7764 2.5871 C.3 1 FONC 0.0000 + 3 C3 7.5252 5.9348 3.8164 C.2 1 FONC 0.5690 + 4 C4 7.8031 4.4194 3.9635 C.3 1 FONC 0.3611 + 5 O1 9.7217 4.3185 6.9671 O.2 1 FONC -0.5700 + 6 C5 8.9953 4.8099 6.1027 C.2 1 FONC 0.5770 + 7 N1 7.4692 6.5770 5.0382 N.3 1 FONC -0.5100 + 8 C6 8.2137 2.2440 2.5894 C.3 1 FONC 0.0000 + 9 C7 8.1088 6.0884 6.2715 C.3 1 FONC 0.2780 + 10 O2 7.2646 6.4940 2.7559 O.2 1 FONC -0.5700 + 11 N2 8.9474 4.2151 4.8558 N.3 1 FONC -0.7301 + 12 C8 8.8074 7.4590 6.3233 C.3 1 FONC 0.0000 + 13 C9 7.7905 7.9719 5.2950 C.3 1 FONC 0.2250 + 14 C10 8.4678 1.7542 1.1605 C.3 1 FONC 0.0000 + 15 H1 6.0823 1.7928 2.6632 H 1 FONC 0.0000 + 16 H2 6.8878 1.7335 4.2428 H 1 FONC 0.0000 + 17 H3 7.1285 0.4271 3.0865 H 1 FONC 0.0000 + 18 H4 9.0968 1.9834 3.1843 H 1 FONC 0.0000 + 19 H5 9.4185 3.3187 4.8499 H 1 FONC 0.3700 + 20 H6 7.1880 4.0274 1.9313 H 1 FONC 0.0000 + 21 H7 8.9197 4.2336 2.1269 H 1 FONC 0.0000 + 22 H8 7.3548 5.9550 7.0580 H 1 FONC 0.0000 + 23 H9 8.7788 7.9609 7.2948 H 1 FONC 0.0000 + 24 H10 9.8415 7.4548 5.9594 H 1 FONC 0.0000 + 25 H11 8.2194 8.5120 4.4476 H 1 FONC 0.0000 + 26 H12 6.9407 8.5225 5.7079 H 1 FONC 0.0000 + 27 H13 7.6142 1.9685 0.5084 H 1 FONC 0.0000 + 28 H14 8.6426 0.6731 1.1450 H 1 FONC 0.0000 + 29 H15 9.3518 2.2400 0.7340 H 1 FONC 0.0000 + 30 H16 6.9207 3.9880 4.4505 H 1 FONC 0.0000 +@BOND + 1 1 17 1 + 2 1 16 1 + 3 1 15 1 + 4 1 8 1 + 5 2 21 1 + 6 2 20 1 + 7 2 8 1 + 8 2 4 1 + 9 3 10 2 + 10 3 7 am + 11 3 4 1 + 12 4 30 1 + 13 4 11 1 + 14 5 6 2 + 15 6 11 am + 16 6 9 1 + 17 7 13 1 + 18 7 9 1 + 19 8 18 1 + 20 8 14 1 + 21 9 22 1 + 22 9 12 1 + 23 11 19 1 + 24 12 24 1 + 25 12 23 1 + 26 12 13 1 + 27 13 26 1 + 28 13 25 1 + 29 14 29 1 + 30 14 28 1 + 31 14 27 1 +@SUBSTRUCTURE + 1 FONC 1 +@COMMENT +COMMENT (3R,6R)-3-ISOBUTYL-1,4-DIAZABICYCLO(4.2.0)OCTANE-2,5-DIONE +@MOLECULE +FORGOI + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 1.8692 1.0981 2.3029 I 1 FORG -0.0810 + 2 O1 1.2799 2.3035 9.2597 O.2 1 FORG -0.5700 + 3 O2 2.1430 4.2972 8.5187 O.3 1 FORG -0.4300 + 4 C1 1.7466 2.6166 6.9366 C.2 1 FORG 0.0862 + 5 C2 1.3104 1.3267 6.6014 C.2 1 FORG -0.1500 + 6 C3 1.3450 0.8903 5.2737 C.2 1 FORG -0.1500 + 7 C4 1.8166 1.7443 4.2773 C.2 1 FORG 0.0810 + 8 C5 2.2534 3.0299 4.5977 C.2 1 FORG -0.1500 + 9 C6 2.2187 3.4664 5.9262 C.2 1 FORG -0.1500 + 10 C7 1.6875 3.0287 8.3661 C.2 1 FORG 0.6338 + 11 C8 2.1165 4.7638 9.8685 C.3 1 FORG 0.2800 + 12 H2 0.9410 0.6548 7.3746 H 1 FORG 0.1500 + 13 H3 1.0020 -0.1138 5.0362 H 1 FORG 0.1500 + 14 H5 2.6228 3.7031 3.8277 H 1 FORG 0.1500 + 15 H6 2.5632 4.4717 6.1569 H 1 FORG 0.1500 + 16 H81 1.0908 4.7744 10.2504 H 1 FORG 0.0000 + 17 H82 2.7604 4.1447 10.5009 H 1 FORG 0.0000 + 18 H83 2.5008 5.7875 9.8803 H 1 FORG 0.0000 +@BOND + 1 1 7 1 + 2 2 10 2 + 3 3 10 1 + 4 3 11 1 + 5 4 5 2 + 6 4 9 1 + 7 4 10 1 + 8 5 6 1 + 9 5 12 1 + 10 6 7 2 + 11 6 13 1 + 12 7 8 1 + 13 8 9 2 + 14 8 14 1 + 15 9 15 1 + 16 11 16 1 + 17 11 17 1 + 18 11 18 1 +@SUBSTRUCTURE + 1 FORG 1 +@COMMENT +COMMENT METHYL 4-IODOBENZOATE +@MOLECULE +FORHEZ + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.8508 -1.0915 -0.4908 C.3 1 UNCH 0.1382 + 2 C2 10.0735 0.2241 -1.2043 C.2 1 UNCH -0.0372 + 3 C3 11.2459 0.5062 -1.8149 C.2 1 UNCH 0.0662 + 4 C4 12.4661 -0.3344 -1.9959 C.3 1 UNCH 0.1382 + 5 C5 7.6467 0.5419 -2.0696 C.1 1 UNCH 0.5931 + 6 N1 6.9089 -0.0629 -2.7287 N.1 1 UNCH -0.5571 + 7 N2 11.4086 1.8003 -2.4452 N.2 1 UNCH 0.8356 + 8 O1 12.1670 2.5983 -1.8825 O.3 1 UNCH -0.5200 + 9 O2 10.8132 1.9856 -3.5133 O.2 1 UNCH -0.5200 + 10 S1 8.7411 1.3733 -1.0797 S.3 1 UNCH -0.1370 + 11 H11 9.3042 -0.9448 0.4480 H 1 UNCH 0.0000 + 12 H12 10.7872 -1.5863 -0.2177 H 1 UNCH 0.0000 + 13 H13 9.2748 -1.7767 -1.1214 H 1 UNCH 0.0000 + 14 H41 12.2870 -1.3871 -1.7613 H 1 UNCH 0.0000 + 15 H42 13.2784 0.0189 -1.3519 H 1 UNCH 0.0000 + 16 H43 12.8135 -0.3061 -3.0353 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 11 1 + 3 1 12 1 + 4 1 13 1 + 5 2 3 2 + 6 2 10 1 + 7 3 4 1 + 8 3 7 1 + 9 4 14 1 + 10 4 15 1 + 11 4 16 1 + 12 5 6 3 + 13 5 10 1 + 14 7 8 1 + 15 7 9 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CIS-3-NITRO-2-THIOCYANATO-2-BUTENE +@MOLECULE +FORJIF + 22 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 1.8884 -6.7836 6.6679 CL 1 UNCH -0.2900 + 2 CL2 2.6408 -5.2644 3.6425 CL 1 UNCH -0.2900 + 3 CL3 0.0878 -7.6095 3.7431 CL 1 UNCH -0.2900 + 4 CL4 2.7299 -3.4390 6.8554 CL 1 UNCH -0.2900 + 5 CL5 0.4633 -4.2813 8.4886 CL 1 UNCH -0.2900 + 6 C1 0.9816 -5.3942 6.0266 C.3 1 UNCH 0.2900 + 7 C2 -0.5242 -5.6295 5.6941 C.3 1 UNCH 0.0000 + 8 C3 1.1291 -5.0100 4.5013 C.3 1 UNCH 0.2900 + 9 C4 -0.1376 -5.9075 4.2086 C.3 1 UNCH 0.2900 + 10 C5 1.0842 -4.0952 6.8397 C.3 1 UNCH 0.5800 + 11 H1 -1.0758 -6.3906 6.2486 H 1 UNCH 0.0000 + 12 C3A -1.1291 -4.1749 5.6558 C.3 1 UNCH 0.2900 + 13 C2A 0.5242 -3.5554 4.4630 C.3 1 UNCH 0.0000 + 14 C5A -1.0842 -5.0897 3.3174 C.3 1 UNCH 0.5800 + 15 C4A 0.1376 -3.2774 5.9485 C.3 1 UNCH 0.2900 + 16 CL2A -2.6408 -3.9205 6.5146 CL 1 UNCH -0.2900 + 17 C1A -0.9816 -3.7907 4.1305 C.3 1 UNCH 0.2900 + 18 H1A 1.0758 -2.7943 3.9085 H 1 UNCH 0.0000 + 19 CL4A -2.7299 -5.7459 3.3017 CL 1 UNCH -0.2900 + 20 CL5A -0.4633 -4.9036 1.6685 CL 1 UNCH -0.2900 + 21 CL3A -0.0878 -1.5754 6.4140 CL 1 UNCH -0.2900 + 22 CL1A -1.8884 -2.4012 3.4892 CL 1 UNCH -0.2900 +@BOND + 1 1 6 1 + 2 2 8 1 + 3 3 9 1 + 4 4 10 1 + 5 5 10 1 + 6 6 7 1 + 7 6 8 1 + 8 6 10 1 + 9 7 9 1 + 10 7 11 1 + 11 7 12 1 + 12 8 9 1 + 13 8 13 1 + 14 9 14 1 + 15 10 15 1 + 16 12 15 1 + 17 12 16 1 + 18 12 17 1 + 19 13 15 1 + 20 13 17 1 + 21 13 18 1 + 22 14 17 1 + 23 14 19 1 + 24 14 20 1 + 25 15 21 1 + 26 17 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,3,4,4,5,6,7,9,10,10-DECACHLOROPENTACYCLO(5.2.1.0-2,6-.0-3 +@MOLECULE +FORJUR + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 15.5245 1.8274 1.4136 S.3 1 UNCH -0.2850 + 2 N1 12.7801 -0.1123 -0.3417 N.3 1 UNCH 0.5926 + 3 N2 13.4665 0.1762 0.7925 N.2 1 UNCH -0.7068 + 4 C3 14.3696 1.0549 0.3588 C.2 1 UNCH 0.5710 + 5 N4 14.3642 1.2896 -0.9841 N.2 1 UNCH -0.5653 + 6 C5 13.3950 0.5263 -1.4221 C.2 1 UNCH 0.2705 + 7 N6 13.0951 0.3186 -2.7241 N.3 1 UNCH -0.8840 + 8 C7 11.6510 -0.9782 -0.3292 C.2 1 UNCH -0.0230 + 9 C8 11.7209 -2.2022 0.3860 C.2 1 UNCH -0.1435 + 10 C9 10.6109 -3.0633 0.3695 C.2 1 UNCH -0.1500 + 11 C10 9.4638 -2.7394 -0.3472 C.2 1 UNCH -0.1500 + 12 C11 9.3916 -1.5315 -1.0332 C.2 1 UNCH -0.1500 + 13 C12 10.4623 -0.6206 -1.0137 C.2 1 UNCH -0.1435 + 14 C13 10.2263 0.7111 -1.6807 C.3 1 UNCH 0.1435 + 15 C14 12.9383 -2.6535 1.1531 C.3 1 UNCH 0.1435 + 16 C15 14.9941 1.2254 3.0289 C.3 1 UNCH 0.2300 + 17 H9 8.4720 -1.2852 -1.5620 H 1 UNCH 0.1500 + 18 H10 8.6178 -3.4221 -0.3569 H 1 UNCH 0.1500 + 19 H11 10.6393 -4.0074 0.9109 H 1 UNCH 0.1500 + 20 H131 10.8071 1.5125 -1.2155 H 1 UNCH 0.0000 + 21 H132 9.1757 1.0078 -1.5778 H 1 UNCH 0.0000 + 22 H133 10.4551 0.6520 -2.7482 H 1 UNCH 0.0000 + 23 H141 13.8482 -2.5206 0.5593 H 1 UNCH 0.0000 + 24 H142 12.8821 -3.7210 1.3944 H 1 UNCH 0.0000 + 25 H143 13.0192 -2.1070 2.0975 H 1 UNCH 0.0000 + 26 H151 15.6388 1.6569 3.7996 H 1 UNCH 0.0000 + 27 H152 15.0769 0.1363 3.0861 H 1 UNCH 0.0000 + 28 H153 13.9637 1.5265 3.2383 H 1 UNCH 0.0000 + 29 H61 13.8063 0.6333 -3.3794 H 1 UNCH 0.4000 + 30 H62 12.6821 -0.5697 -2.9952 H 1 UNCH 0.4000 +@BOND + 1 1 4 1 + 2 1 16 1 + 3 2 3 1 + 4 2 6 am + 5 2 8 1 + 6 3 4 2 + 7 4 5 am + 8 5 6 2 + 9 6 7 am + 10 7 29 1 + 11 7 30 1 + 12 8 9 2 + 13 8 13 1 + 14 9 10 1 + 15 9 15 1 + 16 10 11 2 + 17 10 19 1 + 18 11 12 1 + 19 11 18 1 + 20 12 13 2 + 21 12 17 1 + 22 13 14 1 + 23 14 20 1 + 24 14 21 1 + 25 14 22 1 + 26 15 23 1 + 27 15 24 1 + 28 15 25 1 + 29 16 26 1 + 30 16 27 1 + 31 16 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-AMINO-1-(2,6-DIMETHYLPHENYL)-3-METHYLTHIO-1H-1,2,4-TRIAZO +@MOLECULE +FORTAH + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.7303 -0.7990 2.4773 S.2 1 FORT -0.7500 + 2 S2 6.0982 -0.1217 -0.3881 S.3 1 FORT -0.7500 + 3 C2 6.4473 0.3424 1.2324 C.2 1 FORT 0.6060 + 4 C1 6.4451 1.9445 1.5110 C.3 1 FORT 0.4340 + 5 N1 7.8114 2.5145 1.6970 N.3 1 FORT -0.8100 + 6 C3 8.6356 2.3693 0.5006 C.3 1 FORT 0.2700 + 7 C4 8.5324 2.0475 2.8758 C.3 1 FORT 0.2700 + 8 N2 5.5346 2.3321 2.6361 N.3 1 FORT -0.8100 + 9 C5 4.1625 1.8786 2.3724 C.3 1 FORT 0.2700 + 10 C6 5.5120 3.7877 2.8152 C.3 1 FORT 0.2700 + 11 H31 8.1244 2.7704 -0.3815 H 1 FORT 0.0000 + 12 H32 9.5594 2.9498 0.6074 H 1 FORT 0.0000 + 13 H33 8.9189 1.3305 0.3020 H 1 FORT 0.0000 + 14 H41 9.3728 2.7237 3.0743 H 1 FORT 0.0000 + 15 H42 7.9160 2.0675 3.7802 H 1 FORT 0.0000 + 16 H43 8.9583 1.0477 2.7541 H 1 FORT 0.0000 + 17 H51 4.0834 0.7891 2.3341 H 1 FORT 0.0000 + 18 H52 3.7647 2.2875 1.4361 H 1 FORT 0.0000 + 19 H53 3.4966 2.1902 3.1861 H 1 FORT 0.0000 + 20 H61 6.4859 4.1761 3.1303 H 1 FORT 0.0000 + 21 H62 4.8152 4.0636 3.6158 H 1 FORT 0.0000 + 22 H63 5.2056 4.3143 1.9037 H 1 FORT 0.0000 + 23 H2 6.0372 2.4392 0.6163 H 1 FORT 0.0000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 23 1 + 5 4 8 1 + 6 4 5 1 + 7 5 7 1 + 8 5 6 1 + 9 6 13 1 + 10 6 12 1 + 11 6 11 1 + 12 7 16 1 + 13 7 15 1 + 14 7 14 1 + 15 8 10 1 + 16 8 9 1 + 17 9 19 1 + 18 9 18 1 + 19 9 17 1 + 20 10 22 1 + 21 10 21 1 + 22 10 20 1 +@SUBSTRUCTURE + 1 FORT 1 +@COMMENT +COMMENT 2,2-BIS(DIMETHYLAMINO)-DITHIOACETATE +@MOLECULE +FOSDIA + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -4.2833 2.5542 14.2965 CL 1 UNCH -0.2900 + 2 CL2 -2.1993 0.8355 15.2838 CL 1 UNCH -0.2900 + 3 CL3 -2.6228 1.2491 12.3756 CL 1 UNCH -0.2900 + 4 S1 0.6531 0.2638 13.3068 S.3 1 UNCH -0.6773 + 5 P1 0.7449 2.1707 12.8620 P 1 UNCH 1.4891 + 6 N1 2.2599 2.8588 13.0743 N.3 1 UNCH -0.5839 + 7 N2 0.3677 2.6581 11.3152 N.3 1 UNCH -0.5839 + 8 N3 -0.2194 3.1806 13.7589 N.3 1 UNCH -0.6951 + 9 N4 -2.0506 4.3436 14.4789 N.2 1 UNCH -0.6960 + 10 C1 3.0660 2.5554 14.2523 C.3 1 UNCH -0.0420 + 11 C2 3.4969 2.1169 12.8763 C.3 1 UNCH -0.0420 + 12 C3 1.2621 2.3302 10.2048 C.3 1 UNCH -0.0420 + 13 C4 -0.1169 1.7503 10.2819 C.3 1 UNCH -0.0420 + 14 C5 -1.5914 3.1780 14.0512 C.2 1 UNCH 0.4390 + 15 C6 -0.9128 5.2700 14.5212 C.3 1 UNCH 0.2460 + 16 C7 0.2273 4.5699 13.8096 C.3 1 UNCH 0.3691 + 17 C8 -2.5934 1.9817 13.9843 C.3 1 UNCH 0.9310 + 18 H11 3.5843 3.3921 14.7040 H 1 UNCH 0.1000 + 19 H12 2.7088 1.8054 14.9470 H 1 UNCH 0.1000 + 20 H21 4.3042 2.6594 12.3997 H 1 UNCH 0.1000 + 21 H22 3.4476 1.0633 12.6332 H 1 UNCH 0.1000 + 22 H31 1.4454 3.1283 9.4970 H 1 UNCH 0.1000 + 23 H32 2.0957 1.6645 10.3878 H 1 UNCH 0.1000 + 24 H41 -0.8767 2.1486 9.6204 H 1 UNCH 0.1000 + 25 H42 -0.2092 0.6934 10.4971 H 1 UNCH 0.1000 + 26 H61 -0.6578 5.4802 15.5658 H 1 UNCH 0.0000 + 27 H62 -1.1644 6.2175 14.0347 H 1 UNCH 0.0000 + 28 H71 0.3526 4.9858 12.8038 H 1 UNCH 0.0000 + 29 H72 1.1514 4.7075 14.3780 H 1 UNCH 0.0000 +@BOND + 1 1 17 1 + 2 2 17 1 + 3 3 17 1 + 4 4 5 1 + 5 5 6 1 + 6 5 7 1 + 7 5 8 1 + 8 6 10 1 + 9 6 11 1 + 10 7 12 1 + 11 7 13 1 + 12 8 14 am + 13 8 16 1 + 14 9 14 2 + 15 9 15 1 + 16 10 11 1 + 17 10 18 1 + 18 10 19 1 + 19 11 20 1 + 20 11 21 1 + 21 12 13 1 + 22 12 22 1 + 23 12 23 1 + 24 13 24 1 + 25 13 25 1 + 26 14 17 1 + 27 15 16 1 + 28 15 26 1 + 29 15 27 1 + 30 16 28 1 + 31 16 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-DIETHYLENEAMIDOTHIOPHOSPHORYL-2-TRICHLOROMETHYL-DELTA-2-- +@MOLECULE +FOVHUT + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N11 -0.7437 7.7898 15.0649 N.2 1 FOVH -0.6610 + 2 C21 -0.2091 8.1593 16.2615 C.2 1 FOVH 0.7110 + 3 N21 -0.6283 9.3490 16.7587 N.3 1 FOVH -0.8500 + 4 H121 -0.9580 9.9694 16.0318 H 1 FOVH 0.4000 + 5 H221 0.0460 9.7609 17.3887 H 1 FOVH 0.4000 + 6 N31 0.6679 7.4866 16.9261 N.2 1 FOVH -0.6960 + 7 C41 1.0201 6.2110 16.3554 C.3 1 FOVH 0.8851 + 8 N41 2.3205 5.8803 16.8794 N.3 1 FOVH -0.9900 + 9 H414 2.2566 6.0805 17.8757 H 1 FOVH 0.3600 + 10 H241 2.9303 6.6110 16.5203 H 1 FOVH 0.3600 + 11 N51 0.9150 6.1691 14.9409 N.3 1 FOVH -0.8191 + 12 C61 -0.1536 6.8328 14.4276 C.2 1 FOVH 0.4390 + 13 C11_ -0.6859 6.4138 13.0838 C.3 1 FOVH 0.0610 + 14 H1 0.3285 5.4627 16.7639 H 1 FOVH 0.0000 + 15 H2 1.1535 5.2673 14.5514 H 1 FOVH 0.4000 + 16 H3 -1.2547 5.4868 13.1982 H 1 FOVH 0.0000 + 17 H4 -1.3399 7.1872 12.6716 H 1 FOVH 0.0000 + 18 H5 0.1438 6.2408 12.3927 H 1 FOVH 0.0000 +@BOND + 1 1 12 2 + 2 1 2 am + 3 2 6 2 + 4 2 3 am + 5 3 5 1 + 6 3 4 1 + 7 6 7 1 + 8 7 14 1 + 9 7 11 1 + 10 7 8 1 + 11 8 10 1 + 12 8 9 1 + 13 11 15 1 + 14 11 12 am + 15 12 13 1 + 16 13 18 1 + 17 13 17 1 + 18 13 16 1 +@SUBSTRUCTURE + 1 FOVH 1 +@COMMENT +COMMENT 6-(BETA-D-RIBOFURANOSYL)(1,3,5)TRIAZINE-2,4-DIAMINE HEMIHYD +@MOLECULE +FOVJIJ + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.5393 -1.2073 2.4868 O.2 1 UNCH -0.5700 + 2 O2 1.8954 1.0645 0.6785 O.3 1 UNCH -0.2980 + 3 O3 0.9292 2.9795 1.5177 O.2 1 UNCH -0.5700 + 4 C1 3.3852 -0.1971 2.2122 C.3 1 UNCH -0.1000 + 5 C2 4.6831 -0.4449 2.8951 C.2 1 UNCH 0.5556 + 6 C3 4.7415 0.3711 4.1331 C.2 1 UNCH -0.1238 + 7 C4 3.6035 1.0854 4.1675 C.2 1 UNCH -0.1900 + 8 C5 2.6612 0.8458 3.0642 C.3 1 UNCH -0.0600 + 9 C6 5.8964 0.3467 5.0530 C.3 1 UNCH 0.1382 + 10 C7 2.9975 1.1381 1.6192 C.3 1 UNCH 0.0530 + 11 C8 4.0515 2.1265 1.2132 C.3 1 UNCH 0.0950 + 12 C9 0.9506 2.0485 0.7250 C.2 1 UNCH 0.6590 + 13 C10 -0.0765 1.8174 -0.3402 C.3 1 UNCH 0.0610 + 14 H1 2.8362 -1.0781 1.9061 H 1 UNCH 0.1000 + 15 H4 3.3694 1.7942 4.9536 H 1 UNCH 0.1500 + 16 H5 1.6317 0.6537 3.3401 H 1 UNCH 0.1000 + 17 H61 6.0346 -0.6561 5.4689 H 1 UNCH 0.0000 + 18 H62 5.7556 1.0414 5.8872 H 1 UNCH 0.0000 + 19 H63 6.8129 0.6328 4.5276 H 1 UNCH 0.0000 + 20 H81 4.3850 1.9154 0.1917 H 1 UNCH 0.0000 + 21 H82 3.6501 3.1445 1.2334 H 1 UNCH 0.0000 + 22 H83 4.9355 2.1107 1.8563 H 1 UNCH 0.0000 + 23 H101 -0.5848 0.8661 -0.1645 H 1 UNCH 0.0000 + 24 H102 -0.8178 2.6210 -0.3091 H 1 UNCH 0.0000 + 25 H103 0.4009 1.8236 -1.3233 H 1 UNCH 0.0000 +@BOND + 1 1 5 2 + 2 2 10 1 + 3 2 12 1 + 4 3 12 2 + 5 4 5 1 + 6 4 8 1 + 7 4 10 1 + 8 4 14 1 + 9 5 6 1 + 10 6 7 2 + 11 6 9 1 + 12 7 8 1 + 13 7 15 1 + 14 8 10 1 + 15 8 16 1 + 16 9 17 1 + 17 9 18 1 + 18 9 19 1 + 19 10 11 1 + 20 11 20 1 + 21 11 21 1 + 22 11 22 1 + 23 12 13 1 + 24 13 23 1 + 25 13 24 1 + 26 13 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (RS)-6-ACETOXY-3,6-DIMETHYLBICYCLO(3.1.0)HEX-3-EN-2-ONE +@MOLECULE +FOVRAJ + 34 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.8948 4.8199 0.0171 N.2 1 FOVR -0.7000 + 2 C2 1.7802 4.0452 0.2840 C.2 1 FOVR 0.1820 + 3 C3 2.1843 2.7127 0.1612 C.2 1 FOVR 0.4460 + 4 N4 3.5258 2.7573 -0.1729 N.3 1 FOVR -0.6290 + 5 C5 4.4287 1.7366 -0.4144 C.2 1 FOVR 0.2290 + 6 C6 5.6910 2.1078 -0.7238 C.2 1 FOVR 0.0210 + 7 N7 6.1697 3.4135 -0.8229 N.2 1 FOVR -0.6210 + 8 C8 5.2802 4.3393 -0.5863 C.2 1 FOVR 0.6490 + 9 C81 3.9437 4.0373 -0.2571 C.2 1 FOVR 0.7510 + 10 C9 0.4676 4.6236 0.6199 C.3 1 FOVR 0.1680 + 11 N10 1.5390 1.5133 0.3024 N.3 1 FOVR -0.8960 + 12 O11 5.5608 5.6674 -0.6356 O.3 1 FOVR -0.4300 + 13 C12 6.9122 6.0208 -0.9676 C.3 1 FOVR 0.4235 + 14 C13 6.9810 7.5235 -0.9613 C.2 1 FOVR -0.1435 + 15 C14 6.6993 8.2535 -2.1251 C.2 1 FOVR -0.1500 + 16 C15 6.7371 9.6487 -2.1110 C.2 1 FOVR -0.1500 + 17 C16 7.0489 10.3269 -0.9345 C.2 1 FOVR -0.1500 + 18 C17 7.3217 9.6121 0.2301 C.2 1 FOVR -0.1500 + 19 C18 7.2846 8.2169 0.2192 C.2 1 FOVR -0.1500 + 20 H1 2.9492 5.8366 0.0190 H 1 FOVR 0.4500 + 21 H5 4.1129 0.7019 -0.3517 H 1 FOVR 0.1500 + 22 H6 6.4331 1.3347 -0.9212 H 1 FOVR 0.1500 + 23 H91 0.1116 4.2097 1.5673 H 1 FOVR 0.0000 + 24 H92 0.5438 5.7102 0.7162 H 1 FOVR 0.0000 + 25 H93 -0.2513 4.3872 -0.1693 H 1 FOVR 0.0000 + 26 H101 1.9527 0.5950 0.1833 H 1 FOVR 0.4000 + 27 H102 0.5532 1.4332 0.5468 H 1 FOVR 0.4000 + 28 H121 7.1733 5.6323 -1.9592 H 1 FOVR 0.0000 + 29 H122 7.6060 5.6053 -0.2270 H 1 FOVR 0.0000 + 30 H14 6.4553 7.7427 -3.0540 H 1 FOVR 0.1500 + 31 H15 6.5285 10.2092 -3.0194 H 1 FOVR 0.1500 + 32 H16 7.0841 11.4138 -0.9263 H 1 FOVR 0.1500 + 33 H17 7.5685 10.1441 1.1459 H 1 FOVR 0.1500 + 34 H18 7.5022 7.6772 1.1383 H 1 FOVR 0.1500 +@BOND + 1 1 20 1 + 2 1 9 2 + 3 1 2 1 + 4 2 10 1 + 5 2 3 2 + 6 3 11 1 + 7 3 4 1 + 8 4 9 am + 9 4 5 1 + 10 5 21 1 + 11 5 6 2 + 12 6 22 1 + 13 6 7 1 + 14 7 8 2 + 15 8 12 1 + 16 8 9 1 + 17 10 25 1 + 18 10 24 1 + 19 10 23 1 + 20 11 27 1 + 21 11 26 1 + 22 12 13 1 + 23 13 29 1 + 24 13 28 1 + 25 13 14 1 + 26 14 19 1 + 27 14 15 2 + 28 15 30 1 + 29 15 16 1 + 30 16 31 1 + 31 16 17 2 + 32 17 32 1 + 33 17 18 1 + 34 18 33 1 + 35 18 19 2 + 36 19 34 1 +@SUBSTRUCTURE + 1 FOVR 1 +@COMMENT +COMMENT 3-AMINO-2-METHYL-8-(BENZYLOXY)IMIDAZO(1,2-A)PYRAZIN-1-IUM M +@MOLECULE +FOVRUD + 34 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.1018 -4.0135 -1.8533 N.2 1 FOVR -0.5120 + 2 N2 5.4694 -5.2049 -2.3987 N.3 1 FOVR -0.3680 + 3 C3 4.6203 -6.1978 -2.8167 C.2 1 FOVR 0.5690 + 4 C4 3.1573 -5.9116 -2.6271 C.3 1 FOVR 0.0610 + 5 C5 2.8579 -4.4286 -2.7983 C.3 1 FOVR 0.0610 + 6 C6 3.8676 -3.6246 -1.9890 C.2 1 FOVR 0.3028 + 7 O7 5.0335 -7.2669 -3.2549 O.2 1 FOVR -0.5700 + 8 C8 2.9131 -4.0074 -4.2680 C.3 1 FOVR 0.0000 + 9 C11 3.4571 -2.3250 -1.3541 C.2 1 FOVR 0.0862 + 10 C21 4.3268 -1.7262 -0.4298 C.2 1 FOVR -0.1500 + 11 C31 4.0009 -0.5130 0.1890 C.2 1 FOVR -0.1500 + 12 C41 2.7966 0.1137 -0.1186 C.2 1 FOVR 0.3870 + 13 C51 1.9184 -0.4634 -1.0353 C.2 1 FOVR -0.1500 + 14 C61 2.2505 -1.6812 -1.6508 C.2 1 FOVR -0.1500 + 15 N12 2.4562 1.3905 0.5277 N.3 1 FOVR -0.6370 + 16 C22 1.3838 2.1443 0.2169 C.2 1 FOVR 0.6500 + 17 N32 1.3969 3.2274 1.0020 N.2 1 FOVR -0.7000 + 18 C42 2.4819 3.1991 1.8362 C.2 1 FOVR 0.2000 + 19 C52 3.1572 2.0463 1.5462 C.2 1 FOVR 0.2000 + 20 H2 6.4633 -5.4167 -2.4150 H 1 FOVR 0.3700 + 21 H41 2.8922 -6.2388 -1.6144 H 1 FOVR 0.0000 + 22 H42 2.5785 -6.5093 -3.3395 H 1 FOVR 0.0000 + 23 H5 1.8459 -4.2560 -2.4179 H 1 FOVR 0.0000 + 24 H81 2.6761 -2.9449 -4.3841 H 1 FOVR 0.0000 + 25 H82 3.9073 -4.1629 -4.7006 H 1 FOVR 0.0000 + 26 H83 2.1916 -4.5781 -4.8619 H 1 FOVR 0.0000 + 27 H21 5.2758 -2.2029 -0.1817 H 1 FOVR 0.1500 + 28 H31 4.7202 -0.0993 0.8848 H 1 FOVR 0.1500 + 29 H51 0.9671 -0.0193 -1.3000 H 1 FOVR 0.1500 + 30 H61 1.5482 -2.0974 -2.3688 H 1 FOVR 0.1500 + 31 H22 0.6311 1.9465 -0.5343 H 1 FOVR 0.1500 + 32 H32 0.6949 3.9641 0.9708 H 1 FOVR 0.4500 + 33 H421 2.6307 4.0063 2.5320 H 1 FOVR 0.1500 + 34 H52 4.0538 1.6196 1.9610 H 1 FOVR 0.1500 +@BOND + 1 1 6 2 + 2 1 2 1 + 3 2 20 1 + 4 2 3 am + 5 3 7 2 + 6 3 4 1 + 7 4 22 1 + 8 4 21 1 + 9 4 5 1 + 10 5 23 1 + 11 5 8 1 + 12 5 6 1 + 13 6 9 1 + 14 8 26 1 + 15 8 25 1 + 16 8 24 1 + 17 9 14 1 + 18 9 10 2 + 19 10 27 1 + 20 10 11 1 + 21 11 28 1 + 22 11 12 2 + 23 12 15 1 + 24 12 13 1 + 25 13 29 1 + 26 13 14 2 + 27 14 30 1 + 28 15 19 1 + 29 15 16 am + 30 16 31 1 + 31 16 17 2 + 32 17 32 1 + 33 17 18 1 + 34 18 33 1 + 35 18 19 2 + 36 19 34 1 +@SUBSTRUCTURE + 1 FOVR 1 +@COMMENT +COMMENT 6-(4-(IMIDAZOL-1-YL-3-IUM)PHENYL)-5-METHYL-2,3,4,5-TETRAHYD +@MOLECULE +FOWBEY + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 4.2340 1.7216 6.6301 CL 1 UNCH -0.2090 + 2 N1 1.2892 5.7307 3.7507 N.2 1 UNCH -0.5653 + 3 C2 0.8987 6.3983 4.8857 C.2 1 UNCH 0.0772 + 4 C3 1.3911 5.7859 6.0146 C.2 1 UNCH -0.3016 + 5 N4 2.1057 4.7104 5.5673 N.3 1 UNCH 0.5052 + 6 N5 2.7715 3.8165 6.3586 N.2 1 UNCH -0.6520 + 7 C6 3.3752 2.8810 5.6817 C.2 1 UNCH 0.6446 + 8 C61 3.3555 2.7768 4.2014 C.2 1 UNCH 0.1854 + 9 N7 3.9633 1.8274 3.4353 N.2 1 UNCH -0.1710 + 10 N8 3.7230 2.0662 2.2135 N.2 1 UNCH -0.2460 + 11 C9 2.8661 3.2962 2.0829 C.3 1 UNCH 0.3842 + 12 C91 2.6822 3.6901 3.5052 C.2 1 UNCH -0.0932 + 13 C92 2.0129 4.7206 4.1809 C.2 1 UNCH 0.1415 + 14 C10 3.6339 4.3376 1.2711 C.3 1 UNCH 0.0000 + 15 C11 1.5574 2.9046 1.3995 C.3 1 UNCH 0.0000 + 16 H2 0.2821 7.2869 4.8302 H 1 UNCH 0.1500 + 17 H3 1.3021 6.0092 7.0671 H 1 UNCH 0.1500 + 18 H101 4.5896 4.5920 1.7445 H 1 UNCH 0.0000 + 19 H102 3.0567 5.2624 1.1612 H 1 UNCH 0.0000 + 20 H103 3.8626 3.9604 0.2677 H 1 UNCH 0.0000 + 21 H111 1.0239 2.1314 1.9650 H 1 UNCH 0.0000 + 22 H112 0.8886 3.7662 1.2953 H 1 UNCH 0.0000 + 23 H113 1.7449 2.4990 0.3987 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 2 3 1 + 3 2 13 2 + 4 3 4 2 + 5 3 16 1 + 6 4 5 1 + 7 4 17 1 + 8 5 6 1 + 9 5 13 am + 10 6 7 2 + 11 7 8 1 + 12 8 9 1 + 13 8 12 2 + 14 9 10 2 + 15 10 11 1 + 16 11 12 1 + 17 11 14 1 + 18 11 15 1 + 19 12 13 1 + 20 14 18 1 + 21 14 19 1 + 22 14 20 1 + 23 15 21 1 + 24 15 22 1 + 25 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6-CHLORO-9,9-DIMETHYL-9H-IMIDAZO(1,2-B)PYRAZOLO(4,3-D)PYRID +@MOLECULE +FOWPOW + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 9.0722 7.4705 -2.3992 O.2 1 FOWP -0.5700 + 2 O2 3.9167 1.9376 0.8093 O.3 1 FOWP -0.3625 + 3 N1 13.1973 5.3034 -1.8716 N.2 1 FOWP -0.3381 + 4 N2 13.3699 4.0564 -1.3069 N.2 1 FOWP 0.0000 + 5 N3 12.2090 3.5321 -0.9231 N.2 1 FOWP -0.4180 + 6 N4 11.2846 4.4459 -1.2423 N.3 1 FOWP 0.7716 + 7 N5 9.9690 4.2819 -1.0092 N.2 1 FOWP -0.6520 + 8 N6 11.1867 6.6014 -2.2422 N.3 1 FOWP -0.4940 + 9 N7 7.8462 5.3508 -1.2589 N.3 1 FOWP -0.5500 + 10 C1 11.9080 5.5246 -1.8225 C.2 1 FOWP 0.2505 + 11 C2 9.2209 5.2827 -1.3901 C.2 1 FOWP 0.5000 + 12 C3 9.8285 6.5676 -2.0652 C.2 1 FOWP 0.6300 + 13 C4 6.9280 4.4356 -0.7204 C.2 1 FOWP 0.1000 + 14 C5 5.5675 4.7817 -0.7214 C.2 1 FOWP -0.1500 + 15 C6 4.5961 3.9192 -0.2013 C.2 1 FOWP -0.1500 + 16 C7 4.9569 2.6855 0.3348 C.2 1 FOWP 0.0825 + 17 C8 6.3012 2.3261 0.3440 C.2 1 FOWP -0.1500 + 18 C9 7.2731 3.1944 -0.1788 C.2 1 FOWP -0.1500 + 19 C10 4.2400 0.6694 1.3661 C.3 1 FOWP 0.2800 + 20 H60 11.6414 7.3957 -2.6690 H 1 FOWP 0.3700 + 21 H7 7.4300 6.2110 -1.6132 H 1 FOWP 0.4000 + 22 H5 5.2392 5.7348 -1.1297 H 1 FOWP 0.1500 + 23 H6 3.5497 4.2146 -0.2158 H 1 FOWP 0.1500 + 24 H8 6.6382 1.3775 0.7492 H 1 FOWP 0.1500 + 25 H9 8.3052 2.8598 -0.1443 H 1 FOWP 0.1500 + 26 H110 3.3073 0.2018 1.6962 H 1 FOWP 0.0000 + 27 H210 4.8872 0.7766 2.2429 H 1 FOWP 0.0000 + 28 H310 4.6942 0.0132 0.6163 H 1 FOWP 0.0000 +@BOND + 1 1 12 2 + 2 2 19 1 + 3 2 16 1 + 4 3 10 2 + 5 3 4 1 + 6 4 5 2 + 7 5 6 1 + 8 6 10 am + 9 6 7 1 + 10 7 11 2 + 11 8 20 1 + 12 8 12 am + 13 8 10 am + 14 9 21 1 + 15 9 13 1 + 16 9 11 am + 17 11 12 1 + 18 13 18 2 + 19 13 14 1 + 20 14 22 1 + 21 14 15 2 + 22 15 23 1 + 23 15 16 1 + 24 16 17 2 + 25 17 24 1 + 26 17 18 1 + 27 18 25 1 + 28 19 28 1 + 29 19 27 1 + 30 19 26 1 +@SUBSTRUCTURE + 1 FOWP 1 +@COMMENT +COMMENT 6-(4-METHOXYANILINO)-7-OXO-7,8-DIHYDROTETRAZOLO(5,1-B)(1,2, +@MOLECULE +FOWVES + 16 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.4333 -1.4990 4.5780 S.3 1 UNCH -0.2020 + 2 S2 9.0513 1.2831 7.7835 S.3 1 UNCH -0.2820 + 3 O1 7.6133 -0.8694 7.4562 O.2 1 UNCH -0.5700 + 4 O2 7.6195 -2.5783 1.8348 O.2 1 UNCH -0.5700 + 5 C1 8.9298 -0.1867 5.5662 C.2 1 UNCH 0.1154 + 6 C2 8.9326 -0.9584 3.0276 C.2 1 UNCH 0.1154 + 7 C3 8.4041 -0.0952 6.9453 C.2 1 UNCH 0.6966 + 8 C4 8.4097 -1.6503 1.8299 C.2 1 UNCH 0.6966 + 9 C2B 9.7779 0.7969 5.2681 C.2 1 UNCH 0.1154 + 10 C1B 9.7807 0.0251 2.7295 C.2 1 UNCH 0.1154 + 11 C4B 9.9848 1.7381 6.3897 C.2 1 UNCH 0.6966 + 12 S2B 9.0594 -0.9713 0.3677 S.3 1 UNCH -0.2820 + 13 S1B 10.6353 1.0548 3.8040 S.3 1 UNCH -0.2020 + 14 C3B 9.9904 0.1830 1.2743 C.2 1 UNCH 0.6966 + 15 O2B 10.7076 2.7193 6.3686 O.2 1 UNCH -0.5700 + 16 O1B 10.7137 1.0104 0.7472 O.2 1 UNCH -0.5700 +@BOND + 1 1 5 1 + 2 1 6 1 + 3 2 7 1 + 4 2 11 1 + 5 3 7 2 + 6 4 8 2 + 7 5 7 1 + 8 5 9 2 + 9 6 8 1 + 10 6 10 2 + 11 8 12 1 + 12 9 11 1 + 13 9 13 1 + 14 10 13 1 + 15 10 14 1 + 16 11 15 2 + 17 12 14 1 + 18 14 16 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DITHIENO(3,4-B,3',4'-E)(1,4)DITHIINE-1,3,5,7-TETRAONE +@MOLECULE +FOWZAS + 29 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.4339 0.9133 -3.5671 C.3 1 UNCH 0.0000 + 2 C2 8.7608 -0.4832 -3.5112 C.3 1 UNCH 0.0000 + 3 C3 7.5981 -0.2007 -2.5385 C.3 1 UNCH 0.0000 + 4 C4 8.0794 0.3257 -1.1671 C.3 1 UNCH 0.0000 + 5 C5 9.0253 1.5407 -1.3228 C.3 1 UNCH 0.0000 + 6 C6 10.1876 1.1473 -2.2468 C.3 1 UNCH 0.2800 + 7 C7 8.1970 1.8919 -3.5073 C.3 1 UNCH 0.0000 + 8 C8 7.0119 0.9158 -3.4206 C.3 1 UNCH 0.0610 + 9 C9 8.3269 2.6129 -2.1649 C.3 1 UNCH 0.0000 + 10 C10 6.9361 0.2063 -4.7521 C.2 1 UNCH 0.4480 + 11 C11 8.0554 -0.7977 -4.8434 C.3 1 UNCH 0.0610 + 12 C12 12.0288 2.3743 -1.4377 C.2 1 UNCH 0.6600 + 13 O1 6.1203 0.4358 -5.6305 O.2 1 UNCH -0.5700 + 14 O2 11.1189 2.2232 -2.4322 O.3 1 UNCH -0.4300 + 15 O3 12.1248 1.6952 -0.4288 O.2 1 UNCH -0.5700 + 16 H1 10.0549 1.0669 -4.4546 H 1 UNCH 0.0000 + 17 H2 9.4373 -1.2827 -3.1971 H 1 UNCH 0.0000 + 18 H3 6.9266 -1.0598 -2.4281 H 1 UNCH 0.0000 + 19 H4 7.2097 0.6152 -0.5653 H 1 UNCH 0.0000 + 20 H5 8.5997 -0.4769 -0.6312 H 1 UNCH 0.0000 + 21 H6 9.3490 1.9366 -0.3565 H 1 UNCH 0.0000 + 22 H7 10.7191 0.2448 -1.9209 H 1 UNCH 0.0000 + 23 H8 8.1389 2.5722 -4.3618 H 1 UNCH 0.0000 + 24 H9 6.0576 1.3257 -3.0878 H 1 UNCH 0.0000 + 25 H10 7.3614 2.9174 -1.7477 H 1 UNCH 0.0000 + 26 H11 8.9480 3.5103 -2.2632 H 1 UNCH 0.0000 + 27 H12 7.6408 -1.8088 -4.8531 H 1 UNCH 0.0000 + 28 H13 8.6913 -0.6113 -5.7110 H 1 UNCH 0.0000 + 29 H14 12.6865 3.2232 -1.6810 H 1 UNCH 0.0600 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 7 1 + 4 1 16 1 + 5 2 3 1 + 6 2 11 1 + 7 2 17 1 + 8 3 4 1 + 9 3 8 1 + 10 3 18 1 + 11 4 5 1 + 12 4 19 1 + 13 4 20 1 + 14 5 6 1 + 15 5 9 1 + 16 5 21 1 + 17 6 14 1 + 18 6 22 1 + 19 7 8 1 + 20 7 9 1 + 21 7 23 1 + 22 8 10 1 + 23 8 24 1 + 24 9 25 1 + 25 9 26 1 + 26 10 11 1 + 27 10 13 2 + 28 11 27 1 + 29 11 28 1 + 30 12 14 1 + 31 12 15 2 + 32 12 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-OXOTETRACYCLO(6.2.1.0-2,6-.0-5,10-)UNDEC-9-YL FORMATE +@MOLECULE +FOYMAH + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.7102 5.5013 4.7097 N.3 1 FOYM -0.7544 + 2 N2 -1.0669 5.5166 2.4430 N.2 1 FOYM -0.7544 + 3 C4 -1.3123 5.9872 3.6463 C.2 1 FOYM 0.7308 + 4 C5 -2.2826 7.0770 3.8063 C.2 1 FOYM -0.0220 + 5 C6 -3.3586 6.9491 4.6988 C.2 1 FOYM -0.1500 + 6 C7 -4.2808 7.9862 4.8489 C.2 1 FOYM -0.1500 + 7 C8 -4.1368 9.1596 4.1122 C.2 1 FOYM -0.1500 + 8 C9 -3.0731 9.3001 3.2237 C.2 1 FOYM -0.1500 + 9 C10 -2.1500 8.2645 3.0694 C.2 1 FOYM -0.1500 + 10 H6 -3.5041 6.0371 5.2749 H 1 FOYM 0.1500 + 11 H7 -5.1176 7.8819 5.5377 H 1 FOYM 0.1500 + 12 H8 -4.8565 9.9680 4.2309 H 1 FOYM 0.1500 + 13 H9 -2.9645 10.2223 2.6551 H 1 FOYM 0.1500 + 14 H10 -1.3195 8.4072 2.3804 H 1 FOYM 0.1500 + 15 H11 -0.0347 4.7514 4.6609 H 1 FOYM 0.4500 + 16 H21 -0.8989 5.9050 5.6224 H 1 FOYM 0.4500 + 17 H12 -0.4117 4.7666 2.2723 H 1 FOYM 0.4500 + 18 H22 -1.5657 5.8957 1.6436 H 1 FOYM 0.4500 +@BOND + 1 1 16 1 + 2 1 15 1 + 3 1 3 am + 4 2 18 1 + 5 2 17 1 + 6 2 3 2 + 7 3 4 1 + 8 4 9 1 + 9 4 5 2 + 10 5 10 1 + 11 5 6 1 + 12 6 11 1 + 13 6 7 2 + 14 7 12 1 + 15 7 8 1 + 16 8 13 1 + 17 8 9 2 + 18 9 14 1 +@SUBSTRUCTURE + 1 FOYM 1 +@COMMENT +COMMENT BENZAMIDINIUM PYRUVATE +@MOLECULE +FOYNUC + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.5929 2.7169 0.5926 O.3 1 UNCH -0.2800 + 2 C2 -0.2209 2.0033 -0.2274 C.2 1 UNCH 0.2200 + 3 C3 0.0577 2.2313 -1.5534 C.2 1 UNCH -0.1500 + 4 C4 1.8879 3.8012 -2.5536 C.2 1 UNCH -0.1500 + 5 C5 2.9065 4.6794 -2.1608 C.2 1 UNCH -0.1500 + 6 C6 4.2771 5.9164 -0.4618 C.3 1 UNCH 0.1435 + 7 C7 4.7409 5.8319 0.9915 C.3 1 UNCH 0.0000 + 8 C8 3.5442 5.7850 1.9333 C.3 1 UNCH 0.0000 + 9 C9 2.7125 4.5316 1.6726 C.3 1 UNCH 0.1435 + 10 C10 2.4257 4.3075 0.2133 C.2 1 UNCH -0.1435 + 11 C11 3.1868 4.9250 -0.8053 C.2 1 UNCH -0.1435 + 12 C12 1.1327 3.1611 -1.5595 C.2 1 UNCH 0.0000 + 13 C13 1.4242 3.4311 -0.2240 C.2 1 UNCH 0.1400 + 14 N21 -1.1904 1.1691 0.4066 N.2 1 UNCH 0.9600 + 15 O22 -1.9295 0.5208 -0.3472 O.3 1 UNCH -0.5200 + 16 O23 -1.2237 1.1526 1.6433 O.2 1 UNCH -0.5200 + 17 H13 -0.4431 1.7877 -2.4025 H 1 UNCH 0.1500 + 18 H14 1.6933 3.6248 -3.6075 H 1 UNCH 0.1500 + 19 H15 3.4899 5.1801 -2.9326 H 1 UNCH 0.1500 + 20 H16 5.1426 5.7586 -1.1163 H 1 UNCH 0.0000 + 21 H26 3.8909 6.9243 -0.6597 H 1 UNCH 0.0000 + 22 H17 5.3563 4.9346 1.1352 H 1 UNCH 0.0000 + 23 H27 5.3731 6.6956 1.2261 H 1 UNCH 0.0000 + 24 H18 3.8827 5.7918 2.9754 H 1 UNCH 0.0000 + 25 H28 2.9272 6.6810 1.7889 H 1 UNCH 0.0000 + 26 H19 1.7726 4.6037 2.2323 H 1 UNCH 0.0000 + 27 H29 3.2521 3.6539 2.0498 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 13 1 + 3 2 3 2 + 4 2 14 1 + 5 3 12 1 + 6 3 17 1 + 7 4 5 2 + 8 4 12 1 + 9 4 18 1 + 10 5 11 1 + 11 5 19 1 + 12 6 7 1 + 13 6 11 1 + 14 6 20 1 + 15 6 21 1 + 16 7 8 1 + 17 7 22 1 + 18 7 23 1 + 19 8 9 1 + 20 8 24 1 + 21 8 25 1 + 22 9 10 1 + 23 9 26 1 + 24 9 27 1 + 25 10 11 2 + 26 10 13 1 + 27 12 13 2 + 28 14 15 1 + 29 14 16 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-NITRO-6,7,8,9-TETRAHYDRONAPHTHO(1,2-B)FURAN (MUTAGENIC AG +@MOLECULE +FUCMIZ + 13 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.8016 10.3139 2.4150 CL 1 FUCM -0.3701 + 2 CL2 -0.4016 10.0818 1.8145 CL 1 FUCM -0.3701 + 3 SI1 1.2269 9.0173 2.4334 SI 1 FUCM 1.2872 + 4 N1 0.9563 8.3678 4.0053 N.3 1 FUCM -0.8870 + 5 C1 0.0922 7.1926 4.1746 C.3 1 FUCM 0.2700 + 6 C2 0.7665 9.2532 5.1621 C.3 1 FUCM 0.2700 + 7 H11 -0.9684 7.4516 4.0702 H 1 FUCM 0.0000 + 8 H12 0.2390 6.7303 5.1581 H 1 FUCM 0.0000 + 9 H21 0.8799 8.7030 6.1040 H 1 FUCM 0.0000 + 10 H22 1.5189 10.0503 5.1909 H 1 FUCM 0.0000 + 11 H23 -0.2254 9.7208 5.1551 H 1 FUCM 0.0000 + 12 H1 1.4819 7.9148 1.4776 H 1 FUCM -0.2000 + 13 H2 0.3274 6.4135 3.4389 H 1 FUCM 0.0000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 3 12 1 + 4 3 4 1 + 5 4 6 1 + 6 4 5 1 + 7 5 13 1 + 8 5 8 1 + 9 5 7 1 + 10 6 11 1 + 11 6 10 1 + 12 6 9 1 +@SUBSTRUCTURE + 1 FUCM 1 +@COMMENT +COMMENT DICHLORO(DIMETHYLAMINO)SILANE (AT 94 DEG.K) +@MOLECULE +FUCMUL + 10 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8343 1.6737 0.9612 S.3 1 UNCH -0.1090 + 2 N1 -0.6751 4.0260 1.4873 N.2 1 UNCH -0.6371 + 3 C1 -0.0178 3.1566 0.6684 C.2 1 UNCH 0.3680 + 4 C2 1.1482 1.6028 -0.7395 C.2 1 UNCH 0.2281 + 5 H2 1.7138 0.7797 -1.1588 H 1 UNCH 0.1500 + 6 C1B 0.0177 3.4494 -0.6683 C.2 1 UNCH 0.3680 + 7 C2B -1.1483 5.0032 0.7396 C.2 1 UNCH 0.2281 + 8 N1B 0.6750 2.5800 -1.4872 N.2 1 UNCH -0.6371 + 9 S1B -0.8344 4.9323 -0.9611 S.3 1 UNCH -0.1090 + 10 H2B -1.7139 5.8263 1.1589 H 1 UNCH 0.1500 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 2 3 1 + 4 2 7 2 + 5 3 6 2 + 6 4 5 1 + 7 4 8 2 + 8 6 8 1 + 9 6 9 1 + 10 7 9 1 + 11 7 10 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT THIAZOLO(5,4-D)THIAZOLE +@MOLECULE +FUCTIG01 + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.0035 1.2655 1.3334 O.2 1 FUCT -0.6867 + 2 O2 5.1570 3.0749 0.5343 O.3 1 FUCT -0.6867 + 3 O3 7.2750 2.9431 0.8889 O.3 1 FUCT -0.6867 + 4 N1 6.1452 2.4278 0.9189 N.2 1 FUCT 1.0600 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 4 1 +@SUBSTRUCTURE + 1 FUCT 1 +@COMMENT +COMMENT (TRUNCATED TO NITRATE ANION) +@MOLECULE +FUCWIJ + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.2819 -0.5120 2.0686 N.3 1 UNCH -0.4691 + 2 C2 0.4186 -1.8509 1.7021 C.2 1 UNCH 0.4400 + 3 N3 0.3131 -2.8999 2.4753 N.2 1 UNCH -0.5760 + 4 C4 0.0475 -2.5235 3.7549 C.2 1 UNCH -0.0256 + 5 C5 -0.1117 -1.2460 4.2568 C.2 1 UNCH 0.1412 + 6 C6 0.0113 -0.1036 3.3707 C.2 1 UNCH 0.5860 + 7 N7 -0.3897 -1.2516 5.5987 N.2 1 UNCH -0.5653 + 8 C8 -0.3799 -2.5298 5.9202 C.2 1 UNCH 0.0365 + 9 N9 -0.1295 -3.3409 4.8370 N.3 1 UNCH 0.0476 + 10 C1 0.4521 0.5334 1.0695 C.3 1 UNCH 0.3691 + 11 N6 -0.1320 1.0947 3.8296 N.2 1 UNCH -0.8500 + 12 C1_ -0.1096 -4.7890 4.8800 C.3 1 UNCH 0.5356 + 13 C2_ -1.2173 -5.4539 4.0634 C.3 1 UNCH 0.2800 + 14 C3_ -0.6040 -6.8267 3.8407 C.3 1 UNCH 0.2800 + 15 C4_ 0.8912 -6.5315 3.6961 C.3 1 UNCH 0.2800 + 16 C5_ 1.3517 -6.4117 2.2417 C.3 1 UNCH 0.2800 + 17 O4_ 1.1453 -5.2689 4.3652 O.3 1 UNCH -0.5600 + 18 O2_ -2.4622 -5.5665 4.7611 O.3 1 UNCH -0.6800 + 19 O3_ -0.8257 -7.6250 5.0169 O.3 1 UNCH -0.6800 + 20 O5_ 0.5411 -5.5051 1.5016 O.3 1 UNCH -0.6800 + 21 H21 0.6379 -1.9981 0.6309 H 1 UNCH 0.0600 + 22 H81 -0.5497 -2.9244 6.9147 H 1 UNCH 0.1500 + 23 H61 -0.3223 1.0110 4.8422 H 1 UNCH 0.4000 + 24 H1_ -0.1727 -5.0837 5.9355 H 1 UNCH 0.0000 + 25 H2_ -1.3979 -4.9577 3.1051 H 1 UNCH 0.0000 + 26 H3_ -1.0390 -7.3712 2.9979 H 1 UNCH 0.0000 + 27 H4_ 1.4996 -7.2887 4.2031 H 1 UNCH 0.0000 + 28 H5_ 1.2945 -7.3855 1.7459 H 1 UNCH 0.0000 + 29 H51_ 2.3854 -6.0548 2.1884 H 1 UNCH 0.0000 + 30 H1 1.3236 1.1518 1.3100 H 1 UNCH 0.0000 + 31 H2 -0.4348 1.1751 1.0289 H 1 UNCH 0.0000 + 32 H3 0.6037 0.1238 0.0651 H 1 UNCH 0.0000 + 33 H22 -2.8988 -4.6953 4.7074 H 1 UNCH 0.4000 + 34 H32 -1.7625 -7.4662 5.2581 H 1 UNCH 0.4000 + 35 H52 0.6846 -4.6139 1.8929 H 1 UNCH 0.4000 +@BOND + 1 1 2 am + 2 1 6 am + 3 1 10 1 + 4 2 3 2 + 5 2 21 1 + 6 3 4 1 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 7 1 + 11 6 11 2 + 12 7 8 2 + 13 8 9 am + 14 8 22 1 + 15 9 12 1 + 16 10 30 1 + 17 10 31 1 + 18 10 32 1 + 19 11 23 1 + 20 12 13 1 + 21 12 17 1 + 22 12 24 1 + 23 13 14 1 + 24 13 18 1 + 25 13 25 1 + 26 14 15 1 + 27 14 19 1 + 28 14 26 1 + 29 15 16 1 + 30 15 17 1 + 31 15 27 1 + 32 16 20 1 + 33 16 28 1 + 34 16 29 1 + 35 18 33 1 + 36 19 34 1 + 37 20 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-6--DIDEHYDRO-1,6-DIHYDRO-1-METHYLADENOSINE TRIHYDRATE +@MOLECULE +FUCWOP + 25 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.2106 3.1271 3.1369 N.2 1 FUCW -0.6200 + 2 C2 3.5531 2.9399 4.4207 C.2 1 FUCW 0.7200 + 3 N2 4.3123 3.9168 5.0119 N.3 1 FUCW -0.9000 + 4 N3 3.2255 1.8885 5.1761 N.2 1 FUCW -0.5670 + 5 C4 2.4693 0.9946 4.5346 C.2 1 FUCW 0.1054 + 6 C5 2.0273 1.0587 3.2273 C.2 1 FUCW 0.2272 + 7 C6 2.4353 2.1953 2.5275 C.2 1 FUCW 0.6710 + 8 N7 1.2643 -0.0507 2.9325 N.2 1 FUCW -0.5653 + 9 C8 1.2479 -0.7664 4.0399 C.2 1 FUCW 0.0365 + 10 N9 1.9678 -0.1703 5.0402 N.3 1 FUCW 0.0332 + 11 N11 2.0779 2.4737 1.1469 N.2 1 FUCW -0.0830 + 12 C12 1.3671 1.5941 0.3966 C.2 1 FUCW 0.2110 + 13 C13 1.0309 1.8805 -0.9255 C.2 1 FUCW -0.1500 + 14 C14 1.4258 3.0818 -1.4911 C.2 1 FUCW -0.1500 + 15 C15 2.1516 3.9765 -0.7229 C.2 1 FUCW -0.1500 + 16 C16 2.4674 3.6533 0.5938 C.2 1 FUCW 0.2110 + 17 H21 4.7681 3.5997 5.8584 H 1 FUCW 0.4000 + 18 H22 4.8587 4.4760 4.3747 H 1 FUCW 0.4000 + 19 H8 0.7388 -1.7132 4.1815 H 1 FUCW 0.1500 + 20 H9 2.1045 -0.5143 5.9816 H 1 FUCW 0.2700 + 21 H12 1.0576 0.6468 0.8221 H 1 FUCW 0.1500 + 22 H13 0.4608 1.1610 -1.5105 H 1 FUCW 0.1500 + 23 H14 1.1694 3.3184 -2.5227 H 1 FUCW 0.1500 + 24 H15 2.4719 4.9274 -1.1442 H 1 FUCW 0.1500 + 25 H16 3.0322 4.3556 1.2023 H 1 FUCW 0.1500 +@BOND + 1 1 7 1 + 2 1 2 2 + 3 2 4 am + 4 2 3 am + 5 3 18 1 + 6 3 17 1 + 7 4 5 2 + 8 5 10 am + 9 5 6 1 + 10 6 8 1 + 11 6 7 2 + 12 7 11 1 + 13 8 9 2 + 14 9 19 1 + 15 9 10 am + 16 10 20 1 + 17 11 16 2 + 18 11 12 1 + 19 12 21 1 + 20 12 13 2 + 21 13 22 1 + 22 13 14 1 + 23 14 23 1 + 24 14 15 2 + 25 15 24 1 + 26 15 16 1 + 27 16 25 1 +@SUBSTRUCTURE + 1 FUCW 1 +@COMMENT +COMMENT N-(2-AMINO-6-PURINYL)PYRIDINIUM CHLORIDE DIHYDRATE +@MOLECULE +FUDPOJ + 8 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.7374 0.2698 1.9728 O.2 1 UNCH -0.5700 + 2 O2 0.8399 -1.8010 3.4104 O.3 1 UNCH -0.5267 + 3 C1 0.4730 0.2119 1.9746 C.2 1 UNCH 0.5412 + 4 C2 1.3428 -0.7791 2.6388 C.2 1 UNCH 0.0911 + 5 H2 -0.1317 -1.6989 3.4081 H 1 UNCH 0.4500 + 6 C2G 1.3449 -0.7786 1.3123 C.2 1 UNCH 0.0911 + 7 O2G 0.8443 -1.7999 0.5384 O.3 1 UNCH -0.5267 + 8 H2G -0.1274 -1.6978 0.5378 H 1 UNCH 0.4500 +@BOND + 1 1 3 2 + 2 2 4 1 + 3 2 5 1 + 4 3 4 1 + 5 3 6 1 + 6 4 6 2 + 7 6 7 1 + 8 7 8 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3-DIHYDROXYCYCLOPROPEN-1-ONE (AT 135 DEG.K) DELTIC ACID +@MOLECULE +FUDXUX + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.5784 1.1856 1.9529 N.1 1 CHGB -0.5571 + 2 N2 1.1344 4.5865 1.7378 N.3 1 CHGB -0.9060 + 3 C1 1.8951 2.2489 1.6194 C.1 1 CHGB 0.3571 + 4 C2 2.2041 3.6364 1.2504 C.3 1 CHGB 0.7030 + 5 C3 1.0652 4.7550 3.2174 C.3 1 CHGB 0.5030 + 6 H28 1.2862 5.5067 1.3048 H 1 CHGB 0.4500 + 7 H29 0.2179 4.2600 1.3971 H 1 CHGB 0.4500 + 8 H21 2.2340 3.7530 0.1630 H 1 CHGB 0.0000 + 9 H22 3.1549 3.9775 1.6704 H 1 CHGB 0.0000 + 10 H31 0.2930 5.5001 3.4220 H 1 CHGB 0.0000 + 11 H32 0.7969 3.7978 3.6693 H 1 CHGB 0.0000 + 12 H33 2.0380 5.1065 3.5687 H 1 CHGB 0.0000 +@BOND + 1 1 3 3 + 2 2 4 1 + 3 2 5 1 + 4 2 6 1 + 5 2 7 1 + 6 3 4 1 + 7 4 8 1 + 8 4 9 1 + 9 5 10 1 + 10 5 11 1 + 11 5 12 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT N-METHYLAMINOACETONITRILE HYDROCHLORIDE (CYANOMETHYL)METHYL +@MOLECULE +FUFDIT + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 6.5100 0.5188 1.4080 N.3 1 UNCH -0.7301 + 2 C2 5.7471 -0.4972 1.8799 C.2 1 UNCH 0.6900 + 3 N3 5.5056 -0.5230 3.2187 N.3 1 UNCH -0.4900 + 4 C4 5.7081 0.5342 4.0693 C.2 1 UNCH 0.5690 + 5 C5 6.8400 1.4966 3.6858 C.3 1 UNCH 0.3410 + 6 C6 6.7579 1.7186 2.1641 C.3 1 UNCH 0.5801 + 7 O2 5.2765 -1.3349 1.1192 O.2 1 UNCH -0.5700 + 8 C7 8.1690 0.8346 4.0680 C.3 1 UNCH 0.0000 + 9 O4 5.0119 0.6758 5.0737 O.2 1 UNCH -0.5700 + 10 O5 6.7775 2.7365 4.3924 O.3 1 UNCH -0.6800 + 11 O6 5.7898 2.7181 1.7893 O.3 1 UNCH -0.2800 + 12 O8 4.4632 2.2388 2.1582 O.3 1 UNCH -0.4000 + 13 H1 6.5755 0.5644 0.4001 H 1 UNCH 0.3700 + 14 H3 4.7771 -1.1661 3.4956 H 1 UNCH 0.3700 + 15 H6 7.7137 2.1171 1.8058 H 1 UNCH 0.0000 + 16 H71 8.3217 -0.1262 3.5657 H 1 UNCH 0.0000 + 17 H72 8.2119 0.6564 5.1492 H 1 UNCH 0.0000 + 18 H73 9.0135 1.4903 3.8268 H 1 UNCH 0.0000 + 19 H5 5.8562 3.0520 4.3002 H 1 UNCH 0.4000 + 20 H8 4.1138 2.1613 1.2498 H 1 UNCH 0.4000 +@BOND + 1 1 2 am + 2 1 6 1 + 3 1 13 1 + 4 2 3 am + 5 2 7 2 + 6 3 4 am + 7 3 14 1 + 8 4 5 1 + 9 4 9 2 + 10 5 6 1 + 11 5 8 1 + 12 5 10 1 + 13 6 11 1 + 14 6 15 1 + 15 8 16 1 + 16 8 17 1 + 17 8 18 1 + 18 10 19 1 + 19 11 12 1 + 20 12 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6-HYDROPEROXY-5-HYDROXYTHYMINE HEMIHYDRATE 5,6-DIHYDRO-6-HY +@MOLECULE +FUGWIN + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 8.4542 16.9325 -3.4747 O.3 1 FUGW -0.5600 + 2 O2 8.8923 19.7795 -2.1545 O.3 1 FUGW -0.6800 + 3 N1 6.6918 19.2057 -5.7327 N.2 1 FUGW -0.7068 + 4 O3 6.7714 15.0810 -2.2503 O.3 1 FUGW -0.6800 + 5 N2 4.2178 15.3840 -6.0617 N.2 1 FUGW -0.6200 + 6 N3 5.9910 15.8530 -4.5518 N.2 1 FUGW -0.1250 + 7 N4 5.6655 18.7347 -6.4745 N.3 1 FUGW 0.2996 + 8 N5 3.4630 16.9036 -7.6675 N.3 1 FUGW -0.9000 + 9 C1 5.0457 15.0660 -5.0459 C.2 1 FUGW 0.5210 + 10 C2 5.2997 17.4541 -6.1584 C.2 1 FUGW -0.1516 + 11 C3 6.1393 17.0927 -5.1205 C.2 1 FUGW 0.3070 + 12 C4 8.3789 16.9159 -2.0341 C.3 1 FUGW 0.2800 + 13 C5 7.7544 19.0868 -2.6705 C.3 1 FUGW 0.2800 + 14 C6 4.3267 16.5953 -6.6461 C.2 1 FUGW 0.4100 + 15 C7 6.9941 18.1930 -4.9087 C.2 1 FUGW 0.1078 + 16 C8 8.1188 18.2756 -3.9250 C.3 1 FUGW 0.4610 + 17 C9 7.9729 15.5180 -1.5723 C.3 1 FUGW 0.2800 + 18 C10 7.3836 18.0074 -1.6759 C.3 1 FUGW 0.0000 + 19 H1 9.3741 17.1565 -1.6406 H 1 FUGW 0.0000 + 20 H2 6.3538 17.6774 -1.8543 H 1 FUGW 0.0000 + 21 H3 4.9264 14.0896 -4.5880 H 1 FUGW 0.1500 + 22 H4 6.9533 19.8181 -2.8163 H 1 FUGW 0.0000 + 23 H5 8.7535 14.7936 -1.8245 H 1 FUGW 0.0000 + 24 H6 9.0103 18.6805 -4.4178 H 1 FUGW 0.0000 + 25 H7 7.4822 18.3160 -0.6309 H 1 FUGW 0.0000 + 26 H8 7.7959 15.5004 -0.4922 H 1 FUGW 0.0000 + 27 H9 2.9256 16.1053 -7.9958 H 1 FUGW 0.4000 + 28 H10 3.7409 17.5551 -8.3879 H 1 FUGW 0.4000 + 29 H11 6.5637 15.5538 -3.7497 H 1 FUGW 0.4570 + 30 H12 5.2555 19.3459 -7.1762 H 1 FUGW 0.2700 + 31 H13 6.4637 14.3301 -1.6940 H 1 FUGW 0.4000 + 32 H14 9.0596 20.5543 -2.7234 H 1 FUGW 0.4000 +@BOND + 1 1 16 1 + 2 1 12 1 + 3 2 32 1 + 4 2 13 1 + 5 3 15 2 + 6 3 7 1 + 7 4 31 1 + 8 4 17 1 + 9 5 14 1 + 10 5 9 2 + 11 6 29 1 + 12 6 11 2 + 13 6 9 am + 14 7 30 1 + 15 7 10 1 + 16 8 28 1 + 17 8 27 1 + 18 8 14 1 + 19 9 21 1 + 20 10 14 2 + 21 10 11 1 + 22 11 15 1 + 23 12 19 1 + 24 12 18 1 + 25 12 17 1 + 26 13 22 1 + 27 13 18 1 + 28 13 16 1 + 29 15 16 1 + 30 16 24 1 + 31 17 26 1 + 32 17 23 1 + 33 18 25 1 + 34 18 20 1 +@SUBSTRUCTURE + 1 FUGW 1 +@COMMENT +COMMENT (S)-1-C-(7-AMINO-1H-PYRAZOLO(4,3-D)PYRIMIDIN-3-YL)-1,4-ANHY +@MOLECULE +FUHFAP + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.5343 1.3693 2.1428 N.3 1 FUHF -0.5600 + 2 O1 -0.7691 0.7250 2.2224 O.3 1 FUHF -0.1800 + 3 C1 -1.7573 1.7417 2.3431 C.3 1 FUHF 0.2800 + 4 H1 -1.7456 2.3947 1.4644 H 1 FUHF 0.0000 + 5 H2 -2.7376 1.2615 2.4067 H 1 FUHF 0.0000 + 6 H3 -1.5963 2.3274 3.2539 H 1 FUHF 0.0000 + 7 O1B 1.1745 0.8948 0.9241 O.3 1 FUHF -0.1800 + 8 C1B 1.5344 2.0294 0.1443 C.3 1 FUHF 0.2800 + 9 H1B 2.2405 2.6628 0.6909 H 1 FUHF 0.0000 + 10 H2B 2.0188 1.6772 -0.7705 H 1 FUHF 0.0000 + 11 H3B 0.6440 2.6036 -0.1318 H 1 FUHF 0.0000 + 12 H4 1.0555 0.8514 2.8553 H 1 FUHF 0.3600 +@BOND + 1 1 12 1 + 2 1 7 1 + 3 1 2 1 + 4 2 3 1 + 5 3 6 1 + 6 3 5 1 + 7 3 4 1 + 8 7 8 1 + 9 8 11 1 + 10 8 10 1 + 11 8 9 1 +@SUBSTRUCTURE + 1 FUHF 1 +@COMMENT +COMMENT N,N-DIMETHOXYAMINE (AT -120 DEG.C) +@MOLECULE +FUHSEG + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.4803 4.6745 2.5616 O.3 1 UNCH -0.5200 + 2 O2 0.3153 5.0071 2.6290 O.2 1 UNCH -0.5200 + 3 N1 2.9189 1.4497 1.4574 N.1 1 UNCH -0.5571 + 4 N2 1.3194 4.3948 2.2358 N.2 1 UNCH 0.8356 + 5 C1 2.1198 2.2914 1.4135 C.1 1 UNCH 0.4921 + 6 C2 1.1210 3.2865 1.3231 C.2 1 UNCH 0.2694 + 7 C3 0.0281 3.2952 0.5418 C.2 1 UNCH -0.1784 + 8 C4 -0.3316 2.2346 -0.4074 C.2 1 UNCH 0.0284 + 9 C5 0.5275 1.8453 -1.4427 C.2 1 UNCH -0.1500 + 10 C6 0.1438 0.8426 -2.3362 C.2 1 UNCH -0.1500 + 11 C7 -1.1019 0.2314 -2.2091 C.2 1 UNCH -0.1500 + 12 C8 -1.9688 0.6244 -1.1917 C.2 1 UNCH -0.1500 + 13 C9 -1.5877 1.6258 -0.2963 C.2 1 UNCH -0.1500 + 14 H3 -0.6926 4.1110 0.5892 H 1 UNCH 0.1500 + 15 H5 1.5001 2.3136 -1.5772 H 1 UNCH 0.1500 + 16 H6 0.8176 0.5392 -3.1341 H 1 UNCH 0.1500 + 17 H7 -1.3982 -0.5494 -2.9055 H 1 UNCH 0.1500 + 18 H8 -2.9427 0.1505 -1.0957 H 1 UNCH 0.1500 + 19 H9 -2.2814 1.9180 0.4897 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 2 4 2 + 3 3 5 3 + 4 4 6 1 + 5 5 6 1 + 6 6 7 2 + 7 7 8 1 + 8 7 14 1 + 9 8 9 2 + 10 8 13 1 + 11 9 10 1 + 12 9 15 1 + 13 10 11 2 + 14 10 16 1 + 15 11 12 1 + 16 11 17 1 + 17 12 13 2 + 18 12 18 1 + 19 13 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-CYANO-1-NITRO-2-PHENYLETHENE +@MOLECULE +FULRAF + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.2335 4.8538 8.8573 N.3 1 FULR 0.3140 + 2 N2 4.3052 4.5460 7.9173 N.2 1 FULR -0.7068 + 3 C3 4.9608 3.6535 7.1738 C.2 1 FULR 0.4400 + 4 N4 6.2223 3.3461 7.6035 N.2 1 FULR -0.5653 + 5 C5 6.3762 4.1108 8.6621 C.2 1 FULR 0.2705 + 6 C6 4.3310 3.1051 5.9593 C.2 1 FULR 0.7848 + 7 N7 3.1625 3.6016 5.6055 N.2 1 FULR -0.7544 + 8 N8 4.9843 2.1680 5.3085 N.3 1 FULR -0.7544 + 9 N9 7.4787 4.2143 9.4185 N.3 1 FULR -0.8840 + 10 C1_ 5.0011 5.9501 9.7923 C.3 1 FULR 0.5356 + 11 C2_ 5.4900 7.2878 9.2387 C.3 1 FULR 0.2800 + 12 C3_ 4.2631 7.7980 8.5004 C.3 1 FULR 0.2800 + 13 C4_ 3.1106 7.2908 9.3681 C.3 1 FULR 0.2800 + 14 C5_ 1.8352 6.9842 8.5679 C.3 1 FULR 0.2800 + 15 O1_ 3.5676 6.0757 10.0091 O.3 1 FULR -0.5600 + 16 O2_ 5.8205 8.1850 10.3098 O.3 1 FULR -0.6800 + 17 O3_ 4.2826 9.2126 8.3590 O.3 1 FULR -0.6800 + 18 O5_ 2.0417 5.8898 7.6601 O.3 1 FULR -0.6800 + 19 H71 2.6473 3.3006 4.7934 H 1 FULR 0.4500 + 20 H72 2.7620 4.3456 6.1868 H 1 FULR 0.4500 + 21 H81 5.8881 1.8781 5.6781 H 1 FULR 0.4500 + 22 H82 4.6334 1.7390 4.4659 H 1 FULR 0.4500 + 23 H91 8.2020 3.5131 9.2615 H 1 FULR 0.4000 + 24 H92 7.4354 4.4744 10.4013 H 1 FULR 0.4000 + 25 H1_ 5.4606 5.6810 10.7483 H 1 FULR 0.0000 + 26 H2_ 6.3737 7.2062 8.5976 H 1 FULR 0.0000 + 27 H3_ 4.2262 7.3588 7.4976 H 1 FULR 0.0000 + 28 H4_ 2.8676 8.0143 10.1554 H 1 FULR 0.0000 + 29 H51_ 1.5024 7.8542 7.9947 H 1 FULR 0.0000 + 30 H52_ 1.0321 6.6804 9.2469 H 1 FULR 0.0000 + 31 H21_ 6.2446 8.9652 9.9011 H 1 FULR 0.4000 + 32 H31_ 4.2295 9.6057 9.2510 H 1 FULR 0.4000 + 33 H50 2.5614 5.2463 8.1929 H 1 FULR 0.4000 +@BOND + 1 1 10 1 + 2 1 5 am + 3 1 2 1 + 4 2 3 2 + 5 3 6 1 + 6 3 4 am + 7 4 5 2 + 8 5 9 am + 9 6 8 am + 10 6 7 2 + 11 7 20 1 + 12 7 19 1 + 13 8 22 1 + 14 8 21 1 + 15 9 24 1 + 16 9 23 1 + 17 10 25 1 + 18 10 15 1 + 19 10 11 1 + 20 11 26 1 + 21 11 16 1 + 22 11 12 1 + 23 12 27 1 + 24 12 17 1 + 25 12 13 1 + 26 13 28 1 + 27 13 15 1 + 28 13 14 1 + 29 14 30 1 + 30 14 29 1 + 31 14 18 1 + 32 16 31 1 + 33 17 32 1 + 34 18 33 1 +@SUBSTRUCTURE + 1 FULR 1 +@COMMENT +COMMENT 5-AMINO-1-BETA-D-RIBOFURANOSYL-1,2,4-TRIAZOLE-3-CARBOXAMIDI +@MOLECULE +FUNSIQ + 19 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 12.1970 1.5314 3.3090 S.1 1 FUNS 1.3448 + 2 O1 10.7916 3.6871 1.5975 O.2 1 FUNS -0.5700 + 3 O2 9.1554 3.9561 3.1574 O.3 1 FUNS -0.4300 + 4 O3 9.0517 0.6176 4.2725 O.3 1 FUNS -0.5200 + 5 O4 9.2752 0.8174 2.1072 O.2 1 FUNS -0.5200 + 6 O5 12.3007 1.0566 1.9341 O.2 1 FUNS -0.8167 + 7 O6 12.2796 0.4719 4.3162 O.2 1 FUNS -0.8167 + 8 O7 13.0440 2.6835 3.6283 O.3 1 FUNS -0.8167 + 9 N1 9.6124 1.0975 3.2695 N.2 1 FUNS 0.7998 + 10 C1 10.2565 3.3054 2.6284 C.2 1 FUNS 0.6590 + 11 C2 10.5979 2.1611 3.5083 C.3 1 FUNS 0.4064 + 12 C3 8.7104 5.0806 2.3885 C.3 1 FUNS 0.2800 + 13 C4 7.5003 5.6763 3.0813 C.3 1 FUNS 0.0000 + 14 H1 10.5142 2.4812 4.5543 H 1 FUNS 0.0000 + 15 H2 8.4341 4.7537 1.3798 H 1 FUNS 0.0000 + 16 H3 9.5087 5.8289 2.3315 H 1 FUNS 0.0000 + 17 H4 7.1218 6.5416 2.5302 H 1 FUNS 0.0000 + 18 H5 7.7541 5.9886 4.0997 H 1 FUNS 0.0000 + 19 H6 6.7004 4.9333 3.1663 H 1 FUNS 0.0000 +@BOND + 1 1 6 2 + 2 1 7 2 + 3 1 8 1 + 4 1 11 1 + 5 2 10 2 + 6 3 10 1 + 7 3 12 1 + 8 4 9 1 + 9 5 9 2 + 10 9 11 1 + 11 10 11 1 + 12 11 14 1 + 13 12 13 1 + 14 12 15 1 + 15 12 16 1 + 16 13 17 1 + 17 13 18 1 + 18 13 19 1 +@SUBSTRUCTURE + 1 FUNS 1 +@COMMENT +COMMENT SODIUM ETHYL NITROSULFOACETATE MONOHYDRATE +@MOLECULE +FUNXOB + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 11.1267 0.1017 1.4270 O.3 1 UNCH -0.2800 + 2 C1 9.9583 0.7921 1.4785 C.2 1 UNCH -0.0100 + 3 C2 10.1311 2.0923 1.0448 C.2 1 UNCH -0.0860 + 4 C3 11.5214 2.1969 0.7396 C.2 1 UNCH -0.1500 + 5 C4 12.0743 0.9622 0.9784 C.2 1 UNCH -0.0100 + 6 C5 9.1383 3.1530 0.9637 C.2 1 UNCH 0.5698 + 7 O2 9.4647 4.3346 0.8815 O.2 1 UNCH -0.5700 + 8 C6 7.6907 2.8244 0.9945 C.2 1 UNCH 0.0862 + 9 C7 6.8410 3.6263 1.7654 C.2 1 UNCH -0.1500 + 10 C8 5.4675 3.3615 1.8098 C.2 1 UNCH -0.1500 + 11 C9 4.9346 2.3030 1.0727 C.2 1 UNCH 0.0825 + 12 C10 5.7840 1.5191 0.2855 C.2 1 UNCH -0.1500 + 13 C11 7.1562 1.7787 0.2359 C.2 1 UNCH -0.1500 + 14 O3 3.6182 1.9367 1.0276 O.3 1 UNCH -0.3625 + 15 C12 2.7063 2.7138 1.7941 C.3 1 UNCH 0.2800 + 16 H1 9.1128 0.2270 1.8474 H 1 UNCH 0.1500 + 17 H2 12.0433 3.0766 0.3869 H 1 UNCH 0.1500 + 18 H3 13.0731 0.5572 0.8910 H 1 UNCH 0.1500 + 19 H4 7.2459 4.4620 2.3337 H 1 UNCH 0.1500 + 20 H5 4.8445 4.0036 2.4240 H 1 UNCH 0.1500 + 21 H6 5.3681 0.7039 -0.3030 H 1 UNCH 0.1500 + 22 H7 7.7849 1.1717 -0.4105 H 1 UNCH 0.1500 + 23 H8 2.9381 2.6538 2.8626 H 1 UNCH 0.0000 + 24 H9 2.6877 3.7533 1.4505 H 1 UNCH 0.0000 + 25 H10 1.7055 2.2965 1.6467 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 16 1 + 5 3 4 1 + 6 3 6 1 + 7 4 5 2 + 8 4 17 1 + 9 5 18 1 + 10 6 7 2 + 11 6 8 1 + 12 8 9 2 + 13 8 13 1 + 14 9 10 1 + 15 9 19 1 + 16 10 11 2 + 17 10 20 1 + 18 11 12 1 + 19 11 14 1 + 20 12 13 2 + 21 12 21 1 + 22 13 22 1 + 23 14 15 1 + 24 15 23 1 + 25 15 24 1 + 26 15 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-(4-METHOXYBENZOYL)FURAN +@MOLECULE +FUPJUV + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.1080 1.7115 6.0307 N.2 1 FUPJ 1.0910 + 2 O1 2.9804 1.7115 6.9387 O.3 1 FUPJ -0.6330 + 3 N2 2.4263 1.7115 4.7636 N.2 1 FUPJ -0.7940 + 4 N3 1.2448 1.7115 4.0931 N.3 1 FUPJ 0.5606 + 5 C1 0.1858 1.7115 4.9737 C.2 1 FUPJ -0.1516 + 6 C2 -1.2073 1.7115 4.8252 C.2 1 FUPJ -0.1500 + 7 C3 -1.9739 1.7115 5.9991 C.2 1 FUPJ -0.1500 + 8 C4 -1.3761 1.7115 7.2640 C.2 1 FUPJ -0.1500 + 9 C5 0.0156 1.7115 7.4034 C.2 1 FUPJ -0.1500 + 10 C6 0.7696 1.7115 6.2248 C.2 1 FUPJ -0.0820 + 11 C7 1.1973 1.7115 2.6796 C.2 1 FUPJ 0.7290 + 12 O2 0.1316 1.7115 2.0823 O.2 1 FUPJ -0.5700 + 13 O3 2.4514 1.7115 2.1633 O.3 1 FUPJ -0.4300 + 14 C8 2.6602 1.7115 0.7298 C.3 1 FUPJ 0.2800 + 15 C9 4.1859 1.7115 0.5543 C.3 1 FUPJ 0.0000 + 16 C10 2.0908 0.4420 0.0873 C.3 1 FUPJ 0.0000 + 17 H1 -1.6865 1.7115 3.8496 H 1 FUPJ 0.1500 + 18 H2 -3.0604 1.7115 5.9234 H 1 FUPJ 0.1500 + 19 H3 -2.0035 1.7115 8.1536 H 1 FUPJ 0.1500 + 20 H4 0.4849 1.7115 8.3835 H 1 FUPJ 0.1500 + 21 H5 2.3820 0.3631 -0.9656 H 1 FUPJ 0.0000 + 22 H6 2.4430 -0.4519 0.6143 H 1 FUPJ 0.0000 + 23 H7 0.9976 0.4194 0.1278 H 1 FUPJ 0.0000 + 24 H8 4.6334 2.5891 1.0354 H 1 FUPJ 0.0000 + 25 H9 4.4741 1.7115 -0.5021 H 1 FUPJ 0.0000 + 26 C10C 2.0908 2.9810 0.0873 C.3 1 FUPJ 0.0000 + 27 H8C 4.6334 0.8339 1.0354 H 1 FUPJ 0.0000 + 28 H5C 2.3820 3.0599 -0.9656 H 1 FUPJ 0.0000 + 29 H6C 2.4430 3.8749 0.6143 H 1 FUPJ 0.0000 + 30 H7C 0.9976 3.0036 0.1278 H 1 FUPJ 0.0000 +@BOND + 1 1 10 1 + 2 1 3 2 + 3 1 2 1 + 4 3 4 1 + 5 4 11 am + 6 4 5 1 + 7 5 10 1 + 8 5 6 2 + 9 6 17 1 + 10 6 7 1 + 11 7 18 1 + 12 7 8 2 + 13 8 19 1 + 14 8 9 1 + 15 9 20 1 + 16 9 10 2 + 17 11 13 1 + 18 11 12 2 + 19 13 14 1 + 20 14 26 1 + 21 14 16 1 + 22 14 15 1 + 23 15 27 1 + 24 15 25 1 + 25 15 24 1 + 26 16 23 1 + 27 16 22 1 + 28 16 21 1 + 29 26 30 1 + 30 26 29 1 + 31 26 28 1 +@SUBSTRUCTURE + 1 FUPJ 1 +@COMMENT +COMMENT 1H-BENZOTRIAZOLE-1-CARBOXYLIC ACID 1,1-DIMETHYLETHYL ESTER +@MOLECULE +FUPKIK + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.5471 3.2248 0.0738 N.2 1 UNCH -0.2272 + 2 N2 2.4104 2.5409 0.1434 N.2 1 UNCH -0.4180 + 3 N3 2.6851 1.3892 0.7723 N.3 1 UNCH 0.7086 + 4 C1 4.7752 0.2326 1.6466 C.2 1 UNCH -0.1500 + 5 C2 6.1446 0.4887 1.7828 C.2 1 UNCH -0.1500 + 6 C3 6.7068 1.6946 1.3517 C.2 1 UNCH -0.1500 + 7 C4 5.9149 2.6908 0.7640 C.2 1 UNCH -0.1500 + 8 C5 4.5419 2.4506 0.6180 C.2 1 UNCH 0.2272 + 9 C6 4.0107 1.2453 1.0610 C.2 1 UNCH -0.1516 + 10 O1 1.7069 0.4318 0.8821 O.3 1 UNCH -0.3227 + 11 S1 0.8284 0.5216 2.2412 S.1 1 UNCH 1.3785 + 12 O2 1.5803 1.1960 3.2786 O.2 1 UNCH -0.6500 + 13 O3 0.2418 -0.7826 2.4741 O.2 1 UNCH -0.6500 + 14 C7 -0.4546 1.6070 1.6538 C.3 1 UNCH 0.1052 + 15 H1 4.3351 -0.6983 1.9897 H 1 UNCH 0.1500 + 16 H2 6.7846 -0.2655 2.2385 H 1 UNCH 0.1500 + 17 H3 7.7748 1.8636 1.4739 H 1 UNCH 0.1500 + 18 H4 6.3499 3.6252 0.4258 H 1 UNCH 0.1500 + 19 H5 -1.2089 1.6887 2.4396 H 1 UNCH 0.0000 + 20 H6 -0.0333 2.5912 1.4472 H 1 UNCH 0.0000 + 21 H7 -0.8997 1.1737 0.7563 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 8 1 + 3 2 3 1 + 4 3 9 1 + 5 3 10 1 + 6 4 5 2 + 7 4 9 1 + 8 4 15 1 + 9 5 6 1 + 10 5 16 1 + 11 6 7 2 + 12 6 17 1 + 13 7 8 1 + 14 7 18 1 + 15 8 9 2 + 16 10 11 1 + 17 11 12 2 + 18 11 13 2 + 19 11 14 1 + 20 14 19 1 + 21 14 20 1 + 22 14 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-((METHYLSULFONYL)OXY)BENZOTRIAZOLE +@MOLECULE +FUPKOQ + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.8431 3.1512 3.7586 N.3 1 FUPK 0.5606 + 2 N2 4.9532 2.7379 2.8247 N.2 1 FUPK -0.7940 + 3 N3 4.1165 1.9559 3.4599 N.2 1 FUPK 1.0910 + 4 C1 4.4307 1.8248 4.7682 C.2 1 FUPK -0.0820 + 5 C2 5.5569 2.5936 4.9843 C.2 1 FUPK -0.1516 + 6 C3 6.1459 2.6741 6.2527 C.2 1 FUPK -0.1500 + 7 C4 5.5417 1.9411 7.2838 C.2 1 FUPK -0.1500 + 8 C5 4.4005 1.1638 7.0582 C.2 1 FUPK -0.1500 + 9 C6 3.8182 1.0894 5.7885 C.2 1 FUPK -0.1500 + 10 O1 3.1509 1.3985 2.8756 O.3 1 FUPK -0.6330 + 11 C7 6.8914 4.0171 3.4359 C.2 1 FUPK 0.5790 + 12 O2 7.7253 4.3753 4.2533 O.2 1 FUPK -0.5700 + 13 C8 6.8669 4.4639 2.0004 C.2 1 FUPK 0.5360 + 14 C9 6.0139 5.5856 1.6315 C.2 1 FUPK 0.1412 + 15 C10 5.8673 6.0929 0.3532 C.2 1 FUPK -0.1100 + 16 S1 4.7614 7.3994 0.3617 S.3 1 FUPK -0.0800 + 17 C11 4.5492 7.1988 2.0517 C.2 1 FUPK 0.4621 + 18 N4 5.2525 6.2390 2.5984 N.2 1 FUPK -0.5653 + 19 N5 3.7271 7.9946 2.7534 N.3 1 FUPK -0.8840 + 20 N6 7.5987 3.9030 1.0778 N.2 1 FUPK -0.5130 + 21 O3 8.3500 2.8406 1.6058 O.3 1 FUPK -0.2170 + 22 C12 9.1228 2.2694 0.5553 C.3 1 FUPK 0.2800 + 23 H1 7.0318 3.2750 6.4424 H 1 FUPK 0.1500 + 24 H2 5.9717 1.9791 8.2837 H 1 FUPK 0.1500 + 25 H3 3.9586 0.6083 7.8835 H 1 FUPK 0.1500 + 26 H4 2.9320 0.4872 5.6080 H 1 FUPK 0.1500 + 27 H5 6.3422 5.7607 -0.5596 H 1 FUPK 0.1500 + 28 H6 3.5049 8.8999 2.3570 H 1 FUPK 0.4000 + 29 H7 3.8879 8.0158 3.7540 H 1 FUPK 0.4000 + 30 H8 8.4660 1.8818 -0.2294 H 1 FUPK 0.0000 + 31 H9 9.7074 1.4426 0.9670 H 1 FUPK 0.0000 + 32 H10 9.8080 3.0153 0.1411 H 1 FUPK 0.0000 +@BOND + 1 1 11 am + 2 1 5 1 + 3 1 2 1 + 4 2 3 2 + 5 3 10 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 + 9 5 6 1 + 10 6 23 1 + 11 6 7 2 + 12 7 24 1 + 13 7 8 1 + 14 8 25 1 + 15 8 9 2 + 16 9 26 1 + 17 11 13 1 + 18 11 12 2 + 19 13 20 2 + 20 13 14 1 + 21 14 18 1 + 22 14 15 2 + 23 15 27 1 + 24 15 16 1 + 25 16 17 1 + 26 17 19 am + 27 17 18 2 + 28 19 29 1 + 29 19 28 1 + 30 20 21 1 + 31 21 22 1 + 32 22 32 1 + 33 22 31 1 + 34 22 30 1 +@SUBSTRUCTURE + 1 FUPK 1 +@COMMENT +COMMENT 1-((2-AMINO-4-THIAZOLYL)(METHOXYIMINO)ACETYL)-1H-BENZOTRIAZ +@MOLECULE +FUPTOZ + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.1640 9.8662 9.3292 O.3 1 UNCH -0.5600 + 2 S1 -0.7392 8.3505 7.0861 S.3 1 UNCH -0.3310 + 3 S2 0.8996 8.0828 9.5953 S.3 1 UNCH -0.3310 + 4 C1 0.5752 7.5604 7.9474 C.2 1 UNCH 0.2020 + 5 C2 1.3111 6.5848 7.3627 C.2 1 UNCH 0.2800 + 6 CL1 1.0343 6.0225 5.7353 CL 1 UNCH -0.1400 + 7 CL2 2.6276 5.7688 8.1641 CL 1 UNCH -0.1400 + 8 C3 0.2645 9.8074 9.5111 C.3 1 UNCH 0.5100 + 9 H1 0.7191 10.2757 8.6278 H 1 UNCH 0.0000 + 10 C4 0.6813 10.6876 10.7432 C.3 1 UNCH 0.8700 + 11 CL3 0.0917 12.3808 10.5149 CL 1 UNCH -0.2900 + 12 CL4 -0.0233 10.0689 12.2770 CL 1 UNCH -0.2900 + 13 CL5 2.4704 10.7815 10.9222 CL 1 UNCH -0.2900 + 14 C5 -1.7887 8.8594 8.5088 C.3 1 UNCH 0.5100 + 15 H2 -1.9273 7.9720 9.1409 H 1 UNCH 0.0000 + 16 C6 -3.2260 9.3320 8.0874 C.3 1 UNCH 0.8700 + 17 CL6 -4.2021 9.7145 9.5597 CL 1 UNCH -0.2900 + 18 CL7 -3.1723 10.8137 7.0708 CL 1 UNCH -0.2900 + 19 CL8 -4.1166 8.0469 7.1945 CL 1 UNCH -0.2900 +@BOND + 1 1 8 1 + 2 1 14 1 + 3 2 4 1 + 4 2 14 1 + 5 3 4 1 + 6 3 8 1 + 7 4 5 2 + 8 5 6 1 + 9 5 7 1 + 10 8 9 1 + 11 8 10 1 + 12 10 11 1 + 13 10 12 1 + 14 10 13 1 + 15 14 15 1 + 16 14 16 1 + 17 16 17 1 + 18 16 18 1 + 19 16 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,6-BIS(TRICHLOROMETHYL)-4-DICHLOROMETHYLENE-1-OXA-3,5-DITH +@MOLECULE +FUPZEV + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.2941 2.2349 -0.4846 O.3 1 UNCH -0.6579 + 2 O2 0.0234 0.6374 2.4003 O.3 1 UNCH -0.4079 + 3 O3 1.9045 1.5885 3.3177 O.2 1 UNCH -0.5700 + 4 C1 -1.5934 1.9432 0.9003 C.3 1 UNCH 0.3739 + 5 C2 -2.6074 0.8553 1.0553 C.2 1 UNCH -0.2542 + 6 C3 -3.7268 1.3340 1.6143 C.2 1 UNCH -0.2882 + 7 C4 -3.6402 2.7857 1.9672 C.3 1 UNCH 0.1382 + 8 C5 -2.1732 3.1487 1.7056 C.3 1 UNCH 0.0000 + 9 C6 -1.0703 2.9389 2.8046 C.3 1 UNCH 0.0000 + 10 C7 -0.3526 1.9248 1.8526 C.3 1 UNCH 0.2579 + 11 C8 1.1861 0.6226 3.1058 C.2 1 UNCH 0.6590 + 12 C9 1.4611 -0.7627 3.6041 C.3 1 UNCH 0.0610 + 13 C10 -2.3596 -0.5251 0.5633 C.3 1 UNCH 0.1382 + 14 C11 -0.2579 4.2191 3.0319 C.3 1 UNCH 0.0000 + 15 C12 -1.5303 2.3634 4.1462 C.3 1 UNCH 0.0000 + 16 H1 -2.1652 2.3464 -0.9025 H 1 UNCH 0.4000 + 17 H2 -4.6153 0.7445 1.8016 H 1 UNCH 0.1500 + 18 H3 -3.9360 2.9737 3.0023 H 1 UNCH 0.0000 + 19 H4 -4.3046 3.3576 1.3102 H 1 UNCH 0.0000 + 20 H5 -2.0908 4.1101 1.1807 H 1 UNCH 0.0000 + 21 H6 0.5083 2.3665 1.3276 H 1 UNCH 0.0000 + 22 H7 1.5383 -1.4522 2.7597 H 1 UNCH 0.0000 + 23 H8 2.4104 -0.7709 4.1472 H 1 UNCH 0.0000 + 24 H9 0.6657 -1.0753 4.2853 H 1 UNCH 0.0000 + 25 H10 -3.2558 -1.1475 0.6557 H 1 UNCH 0.0000 + 26 H11 -1.5602 -1.0072 1.1322 H 1 UNCH 0.0000 + 27 H12 -2.0719 -0.5108 -0.4925 H 1 UNCH 0.0000 + 28 H13 0.6134 4.0250 3.6660 H 1 UNCH 0.0000 + 29 H14 -0.8690 4.9841 3.5234 H 1 UNCH 0.0000 + 30 H15 0.1061 4.6404 2.0882 H 1 UNCH 0.0000 + 31 H16 -2.0740 1.4212 4.0286 H 1 UNCH 0.0000 + 32 H17 -0.6751 2.1658 4.8016 H 1 UNCH 0.0000 + 33 H18 -2.1863 3.0680 4.6687 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 16 1 + 3 2 10 1 + 4 2 11 1 + 5 3 11 2 + 6 4 5 1 + 7 4 8 1 + 8 4 10 1 + 9 5 6 2 + 10 5 13 1 + 11 6 7 1 + 12 6 17 1 + 13 7 8 1 + 14 7 18 1 + 15 7 19 1 + 16 8 9 1 + 17 8 20 1 + 18 9 10 1 + 19 9 14 1 + 20 9 15 1 + 21 10 21 1 + 22 11 12 1 + 23 12 22 1 + 24 12 23 1 + 25 12 24 1 + 26 13 25 1 + 27 13 26 1 + 28 13 27 1 + 29 14 28 1 + 30 14 29 1 + 31 14 30 1 + 32 15 31 1 + 33 15 32 1 + 34 15 33 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-HYDROXY-2,6,6-TRIMETHYL-ENDO-7-ACETOXYBICYCLO(3.2.0)HEPT- +@MOLECULE +FUSPEO + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O6 1.8447 3.2458 8.1201 O.2 1 FUSP -0.5700 + 2 C1 1.3609 3.4985 7.0203 C.2 1 FUSP 0.4956 + 3 C2 2.0345 3.1496 5.7563 C.2 1 FUSP -0.1356 + 4 C3 1.4722 3.4432 4.5708 C.2 1 FUSP -0.3000 + 5 O7 1.8805 3.2322 3.4011 O.3 1 FUSP -0.8500 + 6 H1 0.3869 4.0050 6.9226 H 1 FUSP 0.0600 + 7 H2 2.9926 2.6514 5.8239 H 1 FUSP 0.1500 + 8 H3 0.5055 3.9458 4.6432 H 1 FUSP 0.1500 +@BOND + 1 1 2 2 + 2 2 6 1 + 3 2 3 1 + 4 3 7 1 + 5 3 4 2 + 6 4 8 1 + 7 4 5 1 +@SUBSTRUCTURE + 1 FUSP 1 +@COMMENT +COMMENT SODIUM 2-PROPENAL-3-OLATE SESQUIHYDRATE (AT -150 DEG.C) +@MOLECULE +FUTCEC + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 7.3551 1.4123 6.6875 N.3 1 UNCH -0.1680 + 2 N2 8.3019 1.8702 5.7599 N.3 1 UNCH -0.5786 + 3 C1 7.7644 0.8564 4.8050 C.3 1 UNCH 0.2626 + 4 C2 6.7591 0.4924 5.9043 C.2 1 UNCH 0.5770 + 5 C3 8.7925 -0.2220 4.4904 C.3 1 UNCH 0.0000 + 6 C4 7.1626 1.4910 3.5587 C.3 1 UNCH 0.0000 + 7 C5 7.1487 1.8572 7.9916 C.2 1 UNCH 0.1170 + 8 C6 7.9784 2.8405 8.5464 C.2 1 UNCH -0.1500 + 9 C7 7.7705 3.2926 9.8524 C.2 1 UNCH -0.1500 + 10 C8 6.7320 2.7646 10.6160 C.2 1 UNCH -0.1500 + 11 C9 5.9039 1.7832 10.0761 C.2 1 UNCH -0.1500 + 12 C10 6.1121 1.3304 8.7702 C.2 1 UNCH -0.1500 + 13 O1 5.8318 -0.2720 6.0366 O.2 1 UNCH -0.5700 + 14 H1 8.0472 2.8341 5.5305 H 1 UNCH 0.3600 + 15 H2 8.3315 -1.0446 3.9327 H 1 UNCH 0.0000 + 16 H3 9.2309 -0.6473 5.4007 H 1 UNCH 0.0000 + 17 H4 9.6110 0.1780 3.8816 H 1 UNCH 0.0000 + 18 H5 6.6386 0.7400 2.9573 H 1 UNCH 0.0000 + 19 H6 7.9389 1.9415 2.9304 H 1 UNCH 0.0000 + 20 H7 6.4380 2.2747 3.8084 H 1 UNCH 0.0000 + 21 H8 8.8035 3.2568 7.9747 H 1 UNCH 0.1500 + 22 H9 8.4231 4.0529 10.2737 H 1 UNCH 0.1500 + 23 H10 6.5705 3.1140 11.6326 H 1 UNCH 0.1500 + 24 H11 5.0947 1.3656 10.6700 H 1 UNCH 0.1500 + 25 H12 5.4514 0.5622 8.3747 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 4 am + 3 1 7 1 + 4 2 3 1 + 5 2 14 1 + 6 3 4 1 + 7 3 5 1 + 8 3 6 1 + 9 4 13 2 + 10 5 15 1 + 11 5 16 1 + 12 5 17 1 + 13 6 18 1 + 14 6 19 1 + 15 6 20 1 + 16 7 8 2 + 17 7 12 1 + 18 8 9 1 + 19 8 21 1 + 20 9 10 2 + 21 9 22 1 + 22 10 11 1 + 23 10 23 1 + 24 11 12 2 + 25 11 24 1 + 26 12 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,4-DIMETHYL-2-PHENYL-1,2-DIAZETIDIN-3-ONE +@MOLECULE +FUTZEZ + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 5.3336 1.8903 1.2551 SI 1 UNCH 0.8974 + 2 O1 3.8504 1.8903 0.5030 O.3 1 UNCH -0.5774 + 3 C1 3.8161 1.8903 -0.9146 C.3 1 UNCH 0.2800 + 4 H1 5.1494 1.8903 2.7261 H 1 UNCH -0.2000 + 5 H2 6.0883 0.6829 0.8396 H 1 UNCH -0.2000 + 6 H3 2.7678 1.8903 -1.2296 H 1 UNCH 0.0000 + 7 H4 4.2905 0.9912 -1.3244 H 1 UNCH 0.0000 + 8 H2B 6.0883 3.0977 0.8396 H 1 UNCH -0.2000 + 9 H4B 4.2905 2.7894 -1.3244 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 1 8 1 + 5 2 3 1 + 6 3 6 1 + 7 3 7 1 + 8 3 9 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHOXYSILANE (AT 110 DEG.K) +@MOLECULE +FUVDOP + 36 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.5469 3.4606 9.7631 O.3 1 UNCH -0.4300 + 2 O2 1.7069 4.6301 8.0742 O.3 1 UNCH -0.4300 + 3 O3 2.7109 2.1268 7.4986 O.3 1 UNCH -0.4300 + 4 O4 3.5380 5.2146 11.2415 O.2 1 UNCH -0.5700 + 5 O5 0.3361 4.6745 6.2354 O.2 1 UNCH -0.5700 + 6 O6 3.9938 0.2740 7.9268 O.2 1 UNCH -0.5700 + 7 N1 0.0841 2.6790 10.6842 N.3 1 UNCH -0.2700 + 8 N2 -0.3188 1.9295 9.5073 N.3 1 UNCH -0.2700 + 9 N3 0.6471 1.3641 10.4328 N.3 1 UNCH -0.2700 + 10 C1 2.4032 2.9166 10.4264 C.3 1 UNCH 0.2800 + 11 C2 1.0870 3.6774 10.2479 C.3 1 UNCH 0.2700 + 12 C3 0.6946 3.9200 8.7918 C.3 1 UNCH 0.2800 + 13 C4 0.4399 2.4743 8.3581 C.3 1 UNCH 0.2700 + 14 C5 1.6881 1.5941 8.3437 C.3 1 UNCH 0.2800 + 15 C6 1.9908 1.5661 9.8439 C.3 1 UNCH 0.2700 + 16 C7 4.0211 4.6225 10.2886 C.2 1 UNCH 0.6590 + 17 C8 1.3857 4.9561 6.7930 C.2 1 UNCH 0.6590 + 18 C9 3.8189 1.3477 7.3713 C.2 1 UNCH 0.6590 + 19 C10 5.2168 5.0851 9.5152 C.3 1 UNCH 0.0610 + 20 C11 2.5179 5.6983 6.1532 C.3 1 UNCH 0.0610 + 21 C12 4.8084 2.0075 6.4616 C.3 1 UNCH 0.0610 + 22 H1 2.6375 2.7886 11.4940 H 1 UNCH 0.0000 + 23 H2 1.0554 4.6005 10.8334 H 1 UNCH 0.0000 + 24 H3 -0.2375 4.5045 8.7657 H 1 UNCH 0.0000 + 25 H4 -0.1087 2.4118 7.4142 H 1 UNCH 0.0000 + 26 H5 1.4139 0.5913 7.9828 H 1 UNCH 0.0000 + 27 H6 2.6993 0.7777 10.1125 H 1 UNCH 0.0000 + 28 H7 5.6229 5.9874 9.9810 H 1 UNCH 0.0000 + 29 H8 5.9889 4.3117 9.5276 H 1 UNCH 0.0000 + 30 H9 4.9246 5.3203 8.4888 H 1 UNCH 0.0000 + 31 H10 2.2266 6.0046 5.1445 H 1 UNCH 0.0000 + 32 H11 2.7493 6.5948 6.7338 H 1 UNCH 0.0000 + 33 H12 3.3936 5.0483 6.0841 H 1 UNCH 0.0000 + 34 H13 5.6687 1.3470 6.3216 H 1 UNCH 0.0000 + 35 H14 4.3508 2.1912 5.4862 H 1 UNCH 0.0000 + 36 H15 5.1528 2.9439 6.9072 H 1 UNCH 0.0000 +@BOND + 1 1 10 1 + 2 1 16 1 + 3 2 12 1 + 4 2 17 1 + 5 3 14 1 + 6 3 18 1 + 7 4 16 2 + 8 5 17 2 + 9 6 18 2 + 10 7 8 1 + 11 7 9 1 + 12 7 11 1 + 13 8 9 1 + 14 8 13 1 + 15 9 15 1 + 16 10 11 1 + 17 10 15 1 + 18 10 22 1 + 19 11 12 1 + 20 11 23 1 + 21 12 13 1 + 22 12 24 1 + 23 13 14 1 + 24 13 25 1 + 25 14 15 1 + 26 14 26 1 + 27 15 27 1 + 28 16 19 1 + 29 17 20 1 + 30 18 21 1 + 31 19 28 1 + 32 19 29 1 + 33 19 30 1 + 34 20 31 1 + 35 20 32 1 + 36 20 33 1 + 37 21 34 1 + 38 21 35 1 + 39 21 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6,8,9-TRIACETOXY-2,3,4-TRIAZATETRACYCLO(3.3.1.0-2,4-.0-3,7- +@MOLECULE +FUVMUE + 33 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C3 -3.7521 3.1834 11.6610 C.3 1 FUVM 0.3001 + 2 C4 -4.3791 0.9147 10.9467 C.3 1 FUVM 0.3001 + 3 N1 -3.3109 1.8840 11.1605 N.3 1 FUVM -0.6602 + 4 C5 -1.9907 1.5545 11.2431 C.2 1 FUVM 0.9490 + 5 O7 -1.2023 2.4673 11.6896 O.2 1 FUVM -0.4500 + 6 C6 -1.4311 0.2207 10.7857 C.3 1 FUVM 0.0610 + 7 C7 -1.3379 0.1183 9.2523 C.3 1 FUVM 0.0000 + 8 C8 -0.7962 -1.2463 8.7886 C.3 1 FUVM 0.0610 + 9 C9 -0.6778 -1.3386 7.2790 C.2 1 FUVM 0.9490 + 10 O8 -1.5641 -1.9758 6.5990 O.2 1 FUVM -0.4500 + 11 N2 0.3076 -0.7261 6.5633 N.3 1 FUVM -0.6602 + 12 C10 1.5332 -0.1997 7.1524 C.3 1 FUVM 0.3001 + 13 C11 0.3511 -0.9067 5.1145 C.3 1 FUVM 0.3001 + 14 H1 -0.2563 2.1997 11.7457 H 1 FUVM 0.5000 + 15 H2 -2.2591 -2.4145 7.1415 H 1 FUVM 0.5000 + 16 H3 -2.9340 3.9087 11.6649 H 1 FUVM 0.0000 + 17 H4 -4.5542 3.5626 11.0213 H 1 FUVM 0.0000 + 18 H5 -4.1211 3.0572 12.6832 H 1 FUVM 0.0000 + 19 H6 -4.0204 0.0140 10.4472 H 1 FUVM 0.0000 + 20 H7 -4.7955 0.6361 11.9193 H 1 FUVM 0.0000 + 21 H8 -5.1585 1.3694 10.3284 H 1 FUVM 0.0000 + 22 H9 -2.0538 -0.5882 11.1804 H 1 FUVM 0.0000 + 23 H10 -0.4318 0.1052 11.2195 H 1 FUVM 0.0000 + 24 H11 -0.7006 0.9276 8.8762 H 1 FUVM 0.0000 + 25 H12 -2.3227 0.2865 8.7999 H 1 FUVM 0.0000 + 26 H13 -1.4724 -2.0397 9.1251 H 1 FUVM 0.0000 + 27 H14 0.1819 -1.4371 9.2412 H 1 FUVM 0.0000 + 28 H15 1.8287 0.7071 6.6168 H 1 FUVM 0.0000 + 29 H16 1.4076 0.0452 8.2077 H 1 FUVM 0.0000 + 30 H17 2.3176 -0.9565 7.0573 H 1 FUVM 0.0000 + 31 H18 0.6884 0.0222 4.6456 H 1 FUVM 0.0000 + 32 H19 1.0521 -1.7144 4.8839 H 1 FUVM 0.0000 + 33 H20 -0.6331 -1.1645 4.7143 H 1 FUVM 0.0000 +@BOND + 1 1 18 1 + 2 1 17 1 + 3 1 16 1 + 4 1 3 1 + 5 2 21 1 + 6 2 20 1 + 7 2 19 1 + 8 2 3 1 + 9 3 4 am + 10 4 6 1 + 11 4 5 2 + 12 5 14 1 + 13 6 23 1 + 14 6 22 1 + 15 6 7 1 + 16 7 25 1 + 17 7 24 1 + 18 7 8 1 + 19 8 27 1 + 20 8 26 1 + 21 8 9 1 + 22 9 11 am + 23 9 10 2 + 24 10 15 1 + 25 11 13 1 + 26 11 12 1 + 27 12 30 1 + 28 12 29 1 + 29 12 28 1 + 30 13 33 1 + 31 13 32 1 + 32 13 31 1 +@SUBSTRUCTURE + 1 FUVM 1 +@COMMENT +COMMENT N,N,N',N'-TETRAMETHYLGLUTARAMIDE BIS(TRIFLUOROMETHANESULFON +@MOLECULE +FUVNEP + 40 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 3.2371 6.5274 10.9245 O.2 1 FUVN -0.5700 + 2 N1 0.5760 11.9162 8.6942 N.3 1 FUVN -0.8382 + 3 N2 2.6128 6.9653 17.2894 N.3 1 FUVN -0.8382 + 4 C7 1.0732 12.1963 7.3476 C.3 1 FUVN 0.3691 + 5 C8 -0.7950 12.3505 8.9599 C.3 1 FUVN 0.3691 + 6 C9 1.0820 10.8116 9.3902 C.2 1 FUVN 0.1000 + 7 C10 2.2340 10.1226 8.9672 C.2 1 FUVN -0.1500 + 8 C11 2.7560 9.0292 9.6735 C.2 1 FUVN -0.1500 + 9 C12 2.1491 8.6021 10.8517 C.2 1 FUVN 0.0862 + 10 C13 1.0024 9.2544 11.2988 C.2 1 FUVN -0.1500 + 11 C14 0.4911 10.3462 10.5805 C.2 1 FUVN -0.1500 + 12 C15 2.7238 7.4377 11.5704 C.2 1 FUVN 0.3976 + 13 C16 2.6928 7.3477 13.0515 C.2 1 FUVN 0.0862 + 14 C17 2.5510 6.0958 13.6444 C.2 1 FUVN -0.1500 + 15 C18 2.5241 5.9758 15.0414 C.2 1 FUVN -0.1500 + 16 C19 2.6615 7.0861 15.8953 C.2 1 FUVN 0.1000 + 17 C20 2.8114 8.3337 15.2601 C.2 1 FUVN -0.1500 + 18 C21 2.8389 8.4699 13.8637 C.2 1 FUVN -0.1500 + 19 C22 2.7074 5.6358 17.8913 C.3 1 FUVN 0.3691 + 20 C23 3.1196 8.0638 18.1113 C.3 1 FUVN 0.3691 + 21 H2 -1.5094 11.5438 8.7617 H 1 FUVN 0.0000 + 22 H3 -0.9076 12.6978 9.9925 H 1 FUVN 0.0000 + 23 H4 -1.0734 13.2003 8.3265 H 1 FUVN 0.0000 + 24 H5 2.1499 12.3969 7.3557 H 1 FUVN 0.0000 + 25 H6 0.6052 13.0956 6.9314 H 1 FUVN 0.0000 + 26 H7 0.8570 11.3653 6.6672 H 1 FUVN 0.0000 + 27 H8 2.6381 5.6894 18.9837 H 1 FUVN 0.0000 + 28 H9 1.8787 4.9952 17.5709 H 1 FUVN 0.0000 + 29 H10 3.6615 5.1580 17.6430 H 1 FUVN 0.0000 + 30 H11 3.0530 7.8259 19.1790 H 1 FUVN 0.0000 + 31 H12 4.1712 8.2726 17.8853 H 1 FUVN 0.0000 + 32 H13 2.5243 8.9721 17.9698 H 1 FUVN 0.0000 + 33 H14 2.7631 10.4146 8.0652 H 1 FUVN 0.1500 + 34 H15 3.6409 8.5199 9.2975 H 1 FUVN 0.1500 + 35 H16 0.4811 8.9270 12.1944 H 1 FUVN 0.1500 + 36 H17 -0.3950 10.8247 10.9869 H 1 FUVN 0.1500 + 37 H18 2.9874 9.4584 13.4371 H 1 FUVN 0.1500 + 38 H19 2.9134 9.2459 15.8406 H 1 FUVN 0.1500 + 39 H20 2.3952 4.9740 15.4398 H 1 FUVN 0.1500 + 40 H21 2.4555 5.2050 13.0269 H 1 FUVN 0.1500 +@BOND + 1 1 12 2 + 2 2 6 1 + 3 2 5 1 + 4 2 4 1 + 5 3 20 1 + 6 3 19 1 + 7 3 16 1 + 8 4 26 1 + 9 4 25 1 + 10 4 24 1 + 11 5 23 1 + 12 5 22 1 + 13 5 21 1 + 14 6 11 2 + 15 6 7 1 + 16 7 33 1 + 17 7 8 2 + 18 8 34 1 + 19 8 9 1 + 20 9 12 1 + 21 9 10 2 + 22 10 35 1 + 23 10 11 1 + 24 11 36 1 + 25 12 13 1 + 26 13 18 1 + 27 13 14 2 + 28 14 40 1 + 29 14 15 1 + 30 15 39 1 + 31 15 16 2 + 32 16 17 1 + 33 17 38 1 + 34 17 18 2 + 35 18 37 1 + 36 19 29 1 + 37 19 28 1 + 38 19 27 1 + 39 20 32 1 + 40 20 31 1 + 41 20 30 1 +@SUBSTRUCTURE + 1 FUVN 1 +@COMMENT +COMMENT 4,4'-BIS(DIMETHYLAMINO)BENZOPHENONE PENTAFLUOROPHENOL (AT - +@MOLECULE +FUVXOJ + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.4253 4.5071 3.1942 O.3 1 FUVX -0.3625 + 2 O2 6.4439 0.3833 3.3021 O.3 1 FUVX -0.2190 + 3 N1 7.1991 1.4260 3.7769 N.2 1 FUVX 0.0190 + 4 C1 0.2739 3.6903 3.3725 C.3 1 FUVX 0.2800 + 5 C2 2.6437 3.9276 3.4012 C.2 1 FUVX 0.0825 + 6 C3 2.8736 2.6043 3.7754 C.2 1 FUVX -0.1500 + 7 C4 4.1826 2.1360 3.9546 C.2 1 FUVX -0.1500 + 8 C5 5.2692 2.9922 3.7485 C.2 1 FUVX 0.0862 + 9 C6 5.0398 4.3248 3.3931 C.2 1 FUVX -0.1500 + 10 C7 3.7321 4.7823 3.2152 C.2 1 FUVX -0.1500 + 11 C8 6.6761 2.5900 3.9368 C.2 1 FUVX 0.2538 + 12 H1 0.1998 3.3351 4.4056 H 1 FUVX 0.0000 + 13 H2 0.2713 2.8539 2.6658 H 1 FUVX 0.0000 + 14 H3 -0.6076 4.3049 3.1663 H 1 FUVX 0.0000 + 15 H4 2.0521 1.9135 3.9439 H 1 FUVX 0.1500 + 16 H5 4.3080 1.1068 4.2782 H 1 FUVX 0.1500 + 17 H6 5.8567 5.0268 3.2396 H 1 FUVX 0.1500 + 18 H7 3.5537 5.8183 2.9301 H 1 FUVX 0.1500 + 19 H8 7.3872 3.3856 4.2222 H 1 FUVX 0.0600 + 20 H9 8.2022 1.2803 3.9403 H 1 FUVX 0.4000 + 21 H10 7.0843 -0.3499 3.2279 H 1 FUVX 0.4000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 2 21 1 + 4 2 3 1 + 5 3 20 1 + 6 3 11 2 + 7 4 14 1 + 8 4 13 1 + 9 4 12 1 + 10 5 10 2 + 11 5 6 1 + 12 6 15 1 + 13 6 7 2 + 14 7 16 1 + 15 7 8 1 + 16 8 11 1 + 17 8 9 2 + 18 9 17 1 + 19 9 10 1 + 20 10 18 1 + 21 11 19 1 +@SUBSTRUCTURE + 1 FUVX 1 +@COMMENT +COMMENT Z-4-METHOXYBENZALDOXIME HYDROCHLORIDE (AT 105 DEG.K) +@MOLECULE +FUWMOZ + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.3754 3.1226 -2.7612 O.3 1 UNCH -0.4300 + 2 C1 4.9159 2.1001 -1.9779 C.2 1 UNCH 0.9563 + 3 O2 5.5467 1.0856 -1.7326 O.2 1 UNCH -0.5700 + 4 N1 3.6379 2.4011 -1.5062 N.3 1 UNCH -0.7300 + 5 C2 3.3472 3.8082 -1.7377 C.3 1 UNCH 0.3557 + 6 C3 4.3197 4.0930 -2.8739 C.3 1 UNCH 0.2800 + 7 S1 3.0054 1.6941 -0.1539 S.1 1 UNCH 1.5760 + 8 O3 1.6189 2.0926 -0.0591 O.2 1 UNCH -0.6500 + 9 O4 3.9153 1.9611 0.9361 O.2 1 UNCH -0.6500 + 10 N2 3.1074 0.0558 -0.5097 N.3 1 UNCH -0.7570 + 11 C4 2.3706 -0.4537 -1.6236 C.2 1 UNCH 0.1990 + 12 C5 3.0662 -1.0152 -2.6972 C.2 1 UNCH -0.1500 + 13 C6 2.3696 -1.5193 -3.7974 C.2 1 UNCH -0.1500 + 14 C7 0.9766 -1.4714 -3.8222 C.2 1 UNCH -0.1500 + 15 C8 0.2800 -0.9255 -2.7451 C.2 1 UNCH -0.1500 + 16 C9 0.9763 -0.4211 -1.6447 C.2 1 UNCH -0.1500 + 17 H1 4.1520 -1.0652 -2.6918 H 1 UNCH 0.1500 + 18 H2 2.9140 -1.9533 -4.6323 H 1 UNCH 0.1500 + 19 H3 0.4331 -1.8671 -4.6766 H 1 UNCH 0.1500 + 20 H4 -0.8067 -0.8969 -2.7561 H 1 UNCH 0.1500 + 21 H5 0.4181 -0.0162 -0.8044 H 1 UNCH 0.1500 + 22 H6 4.0888 -0.2308 -0.4757 H 1 UNCH 0.4200 + 23 H7 2.3124 3.9964 -2.0319 H 1 UNCH 0.0000 + 24 H8 3.6056 4.4067 -0.8578 H 1 UNCH 0.0000 + 25 H9 3.8471 3.9666 -3.8541 H 1 UNCH 0.0000 + 26 H10 4.7362 5.1026 -2.8111 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 2 + 4 2 4 am + 5 4 5 1 + 6 4 7 1 + 7 5 6 1 + 8 5 23 1 + 9 5 24 1 + 10 6 25 1 + 11 6 26 1 + 12 7 8 2 + 13 7 9 2 + 14 7 10 1 + 15 10 11 1 + 16 10 22 1 + 17 11 12 2 + 18 11 16 1 + 19 12 13 1 + 20 12 17 1 + 21 13 14 2 + 22 13 18 1 + 23 14 15 1 + 24 14 19 1 + 25 15 16 2 + 26 15 20 1 + 27 16 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-OXO-3-OXAZOLIDINESULFONANILIDE N-(N'-PHENYLSULFAMOYL)OXAZ +@MOLECULE +FUWTUM + 20 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -2.4978 -1.9535 10.7595 S.3 1 UNCH -0.6773 + 2 S2 -3.8477 0.3909 8.5971 S.3 1 UNCH -0.3420 + 3 S3 -1.1583 -1.2452 7.6453 S.3 1 UNCH -0.3420 + 4 P1 -2.1645 -0.6026 9.3792 P 1 UNCH 1.1733 + 5 P2 -2.8341 1.7577 7.3748 P 1 UNCH -0.0729 + 6 P3 -0.9669 0.6218 6.7140 P 1 UNCH -0.0729 + 7 C1 -1.1065 0.7350 10.0694 C.3 1 UNCH 0.0000 + 8 C2 -1.9095 2.7224 8.6488 C.3 1 UNCH 0.1669 + 9 C3 0.1091 1.4944 7.9344 C.3 1 UNCH 0.1669 + 10 C4 -0.7015 1.9261 9.1663 C.3 1 UNCH 0.0000 + 11 C5 0.1743 2.8702 10.0183 C.3 1 UNCH 0.0000 + 12 H1 -0.1970 0.2449 10.4416 H 1 UNCH 0.0000 + 13 H2 -1.6360 1.1204 10.9509 H 1 UNCH 0.0000 + 14 H3 -2.5723 3.0237 9.4683 H 1 UNCH 0.0000 + 15 H4 -1.5708 3.6496 8.1686 H 1 UNCH 0.0000 + 16 H5 0.5219 2.3766 7.4280 H 1 UNCH 0.0000 + 17 H6 0.9659 0.8713 8.2161 H 1 UNCH 0.0000 + 18 H7 1.0730 2.3570 10.3788 H 1 UNCH 0.0000 + 19 H8 -0.3759 3.2384 10.8916 H 1 UNCH 0.0000 + 20 H9 0.5014 3.7431 9.4418 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 2 4 1 + 3 2 5 1 + 4 3 4 1 + 5 3 6 1 + 6 4 7 1 + 7 5 6 1 + 8 5 8 1 + 9 6 9 1 + 10 7 10 1 + 11 7 12 1 + 12 7 13 1 + 13 8 10 1 + 14 8 14 1 + 15 8 15 1 + 16 9 10 1 + 17 9 16 1 + 18 9 17 1 + 19 10 11 1 + 20 11 18 1 + 21 11 19 1 + 22 11 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-METHYL-2,8-DITHIA-1,3,7-TRIPHOSPHATRICYCLO(3.3.1.0-3,7-)N +@MOLECULE +FUXXAX + 27 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -1.7094 -2.2964 8.3982 S.3 1 UNCH -0.4780 + 2 P1 -2.4184 -0.7231 9.5475 P 1 UNCH 1.3480 + 3 O1 -2.9659 0.2592 8.5040 O.2 1 UNCH -1.0333 + 4 O2 -1.1709 0.0117 10.0472 O.3 1 UNCH -1.0333 + 5 O3 -3.3853 -1.1646 10.5874 O.3 1 UNCH -1.0333 + 6 C1 -0.1328 -1.6993 7.7208 C.3 1 UNCH 0.2300 + 7 C2 -0.1971 -0.3716 6.9441 C.3 1 UNCH 0.5030 + 8 N1 -0.6990 0.7333 7.7829 N.3 1 UNCH -0.9060 + 9 C3 -0.4301 2.1389 7.5120 C.3 1 UNCH 0.5030 + 10 C4 -0.5471 2.9944 8.7808 C.3 1 UNCH 0.0000 + 11 C5 -1.9487 3.2616 9.3392 C.3 1 UNCH 0.5030 + 12 N2 -2.5315 2.1142 10.0092 N.3 1 UNCH -0.8530 + 13 H1 -0.5288 0.4802 8.8005 H 1 UNCH 0.4500 + 14 H2 -1.7504 0.5921 7.8137 H 1 UNCH 0.4500 + 15 H3 -3.2334 2.2353 10.7423 H 1 UNCH 0.4500 + 16 H4 -1.8421 1.4022 10.3815 H 1 UNCH 0.4500 + 17 H5 -3.0136 1.4717 9.3154 H 1 UNCH 0.4500 + 18 H12 0.2548 -2.4777 7.0553 H 1 UNCH 0.0000 + 19 H13 0.5774 -1.6075 8.5499 H 1 UNCH 0.0000 + 20 H14 -0.8475 -0.4406 6.0659 H 1 UNCH 0.0000 + 21 H15 0.8109 -0.0984 6.6151 H 1 UNCH 0.0000 + 22 H16 0.5946 2.2040 7.1315 H 1 UNCH 0.0000 + 23 H17 -1.1191 2.4700 6.7288 H 1 UNCH 0.0000 + 24 H18 -0.1196 3.9750 8.5325 H 1 UNCH 0.0000 + 25 H19 0.0952 2.5821 9.5695 H 1 UNCH 0.0000 + 26 H20 -2.6455 3.5822 8.5588 H 1 UNCH 0.0000 + 27 H21 -1.8892 4.0519 10.0944 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 2 + 4 2 4 1 + 5 2 5 1 + 6 6 7 1 + 7 6 18 1 + 8 6 19 1 + 9 7 8 1 + 10 7 20 1 + 11 7 21 1 + 12 8 9 1 + 13 8 13 1 + 14 8 14 1 + 15 9 10 1 + 16 9 22 1 + 17 9 23 1 + 18 10 11 1 + 19 10 24 1 + 20 10 25 1 + 21 11 12 1 + 22 11 26 1 + 23 11 27 1 + 24 12 15 1 + 25 12 16 1 + 26 12 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT S-2-(3-AMINOPROPYLAMINO)ETHYLPHOSPHOROTHIOIC ACID TRIHYDRAT +@MOLECULE +FUXZED + 23 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.0303 7.6640 1.4069 S.1 1 UNCH 1.3340 + 2 O1 3.8367 7.6076 0.5774 O.2 1 UNCH -0.6500 + 3 O2 4.8584 7.7426 2.8492 O.2 1 UNCH -0.6500 + 4 O3 7.1454 11.0192 1.3962 O.3 1 UNCH -0.3567 + 5 O4 6.3523 4.2525 -0.1247 O.3 1 UNCH -0.3567 + 6 N1 6.5914 9.0078 -1.6380 N.1 1 UNCH -0.5571 + 7 N2 8.3051 6.2411 2.2817 N.1 1 UNCH -0.5571 + 8 C1 5.9924 9.0055 0.8638 C.2 1 UNCH 0.0480 + 9 C2 6.3867 9.9318 1.7482 C.2 1 UNCH -0.0733 + 10 C3 6.0387 6.2902 1.0658 C.2 1 UNCH 0.0480 + 11 C4 5.6149 5.3644 0.1947 C.2 1 UNCH -0.0733 + 12 C5 6.3174 9.0423 -0.5111 C.1 1 UNCH 0.4921 + 13 C6 7.7925 11.6246 2.5153 C.3 1 UNCH 0.2800 + 14 C7 7.2805 6.2277 1.7376 C.1 1 UNCH 0.4921 + 15 C8 5.9299 3.6435 -1.3446 C.3 1 UNCH 0.2800 + 16 H1 6.1209 9.9001 2.7998 H 1 UNCH 0.1500 + 17 H2 4.6537 5.4162 -0.3064 H 1 UNCH 0.1500 + 18 H3 8.4146 12.4444 2.1449 H 1 UNCH 0.0000 + 19 H4 8.4389 10.9033 3.0268 H 1 UNCH 0.0000 + 20 H5 7.0547 12.0384 3.2108 H 1 UNCH 0.0000 + 21 H6 6.5975 2.8026 -1.5530 H 1 UNCH 0.0000 + 22 H7 5.9969 4.3531 -2.1763 H 1 UNCH 0.0000 + 23 H8 4.9089 3.2584 -1.2509 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 8 1 + 4 1 10 1 + 5 4 9 1 + 6 4 13 1 + 7 5 11 1 + 8 5 15 1 + 9 6 12 3 + 10 7 14 3 + 11 8 9 2 + 12 8 12 1 + 13 9 16 1 + 14 10 11 2 + 15 10 14 1 + 16 11 17 1 + 17 13 18 1 + 18 13 19 1 + 19 13 20 1 + 20 15 21 1 + 21 15 22 1 + 22 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2'-BIS(METHOXYMETHYLENE)-2,2'-SULFONYLDIACETONITRILE +@MOLECULE +GADHEY + 35 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.9431 4.4733 4.9507 N.3 1 GADH -0.8382 + 2 N2 3.9823 4.7371 6.6153 N.3 1 GADH -0.8200 + 3 C1 1.2322 5.4792 5.7054 C.2 1 GADH 0.1000 + 4 C2 -0.0655 5.8785 5.3357 C.2 1 GADH -0.1500 + 5 C3 -0.7459 6.8463 6.0642 C.2 1 GADH -0.1500 + 6 C4 -0.1437 7.4314 7.1725 C.2 1 GADH -0.1500 + 7 C5 1.1471 7.0618 7.5737 C.2 1 GADH 0.0000 + 8 C6 1.8678 6.0758 6.8498 C.2 1 GADH 0.0000 + 9 C7 3.1767 5.7596 7.3277 C.2 1 GADH 0.3640 + 10 C8 3.7288 6.3862 8.4535 C.2 1 GADH -0.1500 + 11 C9 2.9961 7.3459 9.1376 C.2 1 GADH -0.1500 + 12 C10 1.7173 7.6785 8.6993 C.2 1 GADH -0.1500 + 13 C11 1.1963 3.1904 4.9926 C.3 1 GADH 0.3691 + 14 C12 2.1438 4.9387 3.5549 C.3 1 GADH 0.3691 + 15 C13 5.1854 5.3171 5.9614 C.3 1 GADH 0.5030 + 16 C14 4.2117 3.5204 7.4390 C.3 1 GADH 0.5030 + 17 H1 3.3416 4.4478 5.8412 H 1 GADH 0.4500 + 18 H2 -0.5657 5.4416 4.4749 H 1 GADH 0.1500 + 19 H3 -1.7492 7.1472 5.7690 H 1 GADH 0.1500 + 20 H4 -0.7013 8.1877 7.7248 H 1 GADH 0.1500 + 21 H5 4.7244 6.1409 8.8113 H 1 GADH 0.1500 + 22 H6 3.4136 7.8397 10.0133 H 1 GADH 0.1500 + 23 H7 1.1601 8.4356 9.2527 H 1 GADH 0.1500 + 24 H8 1.8104 2.4064 4.5362 H 1 GADH 0.0000 + 25 H9 1.0039 2.8896 6.0288 H 1 GADH 0.0000 + 26 H10 0.2473 3.2357 4.4471 H 1 GADH 0.0000 + 27 H11 2.6431 5.9143 3.5413 H 1 GADH 0.0000 + 28 H12 2.7996 4.2317 3.0351 H 1 GADH 0.0000 + 29 H13 1.2060 5.0047 2.9923 H 1 GADH 0.0000 + 30 H14 5.6130 4.5493 5.3103 H 1 GADH 0.0000 + 31 H15 4.8811 6.1782 5.3587 H 1 GADH 0.0000 + 32 H16 5.9117 5.6073 6.7257 H 1 GADH 0.0000 + 33 H17 3.2517 3.1715 7.8314 H 1 GADH 0.0000 + 34 H18 4.6396 2.7533 6.7874 H 1 GADH 0.0000 + 35 H19 4.9076 3.7545 8.2494 H 1 GADH 0.0000 +@BOND + 1 1 14 1 + 2 1 13 1 + 3 1 3 1 + 4 2 17 1 + 5 2 16 1 + 6 2 15 1 + 7 2 9 1 + 8 3 8 1 + 9 3 4 2 + 10 4 18 1 + 11 4 5 1 + 12 5 19 1 + 13 5 6 2 + 14 6 20 1 + 15 6 7 1 + 16 7 12 1 + 17 7 8 2 + 18 8 9 1 + 19 9 10 2 + 20 10 21 1 + 21 10 11 1 + 22 11 22 1 + 23 11 12 2 + 24 12 23 1 + 25 13 26 1 + 26 13 25 1 + 27 13 24 1 + 28 14 29 1 + 29 14 28 1 + 30 14 27 1 + 31 15 32 1 + 32 15 31 1 + 33 15 30 1 + 34 16 35 1 + 35 16 34 1 + 36 16 33 1 +@SUBSTRUCTURE + 1 GADH 1 +@COMMENT +COMMENT 1,8-BIS(DIMETHYLAMINO)NAPHTHALENE 2,4-DINITROIMIDAZOLATE +@MOLECULE +GAFNUW + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.2450 1.7175 0.2339 C.3 1 GAFN 0.1435 + 2 C2 4.2080 2.6507 -0.4411 C.3 1 GAFN 0.2800 + 3 C3 2.8483 1.9410 -0.1489 C.3 1 GAFN 0.0000 + 4 C4 3.2588 0.7087 0.6843 C.3 1 GAFN 0.1435 + 5 C5 3.8121 1.1969 2.0021 C.2 1 GAFN -0.1435 + 6 C6 3.3124 1.1420 3.2869 C.2 1 GAFN -0.0605 + 7 N1 4.0426 1.6978 4.3320 N.2 1 GAFN 0.5710 + 8 C7 5.2611 2.3023 4.0235 C.2 1 GAFN 0.2225 + 9 C8 5.7920 2.3842 2.7258 C.2 1 GAFN -0.1500 + 10 C9 5.0407 1.8131 1.7282 C.2 1 GAFN -0.1435 + 11 C10 4.5912 0.3366 0.0082 C.3 1 GAFN 0.0000 + 12 O1 4.4781 2.6974 -1.8502 O.3 1 GAFN -0.4300 + 13 C11 3.7973 3.6589 -2.5345 C.2 1 GAFN 0.6590 + 14 O2 2.9963 4.4414 -2.0449 O.2 1 GAFN -0.5700 + 15 C12 4.1673 3.6164 -3.9850 C.3 1 GAFN 0.0610 + 16 N2 5.9909 2.8683 5.1143 N.2 1 GAFN 0.9070 + 17 O3 5.8097 4.0716 5.3431 O.3 1 GAFN -0.5200 + 18 O4 6.8294 2.1405 5.6627 O.2 1 GAFN -0.5200 + 19 O5 3.5759 1.6357 5.5099 O.3 1 GAFN -0.7500 + 20 H1 6.2761 1.7915 -0.1151 H 1 GAFN 0.0000 + 21 H2 4.2481 3.6610 -0.0133 H 1 GAFN 0.0000 + 22 H3 2.3522 1.6327 -1.0760 H 1 GAFN 0.0000 + 23 H4 2.1733 2.5998 0.4086 H 1 GAFN 0.0000 + 24 H5 2.5235 -0.0934 0.7572 H 1 GAFN 0.0000 + 25 H6 2.3787 0.6971 3.5923 H 1 GAFN 0.1500 + 26 H7 6.7411 2.8712 2.5275 H 1 GAFN 0.1500 + 27 H8 5.1213 -0.4782 0.5189 H 1 GAFN 0.0000 + 28 H9 4.4785 0.0787 -1.0508 H 1 GAFN 0.0000 + 29 H10 5.2393 3.7958 -4.0996 H 1 GAFN 0.0000 + 30 H11 3.8911 2.6480 -4.4094 H 1 GAFN 0.0000 + 31 H12 3.6242 4.4003 -4.5206 H 1 GAFN 0.0000 +@BOND + 1 1 20 1 + 2 1 11 1 + 3 1 10 1 + 4 1 2 1 + 5 2 21 1 + 6 2 12 1 + 7 2 3 1 + 8 3 23 1 + 9 3 22 1 + 10 3 4 1 + 11 4 24 1 + 12 4 11 1 + 13 4 5 1 + 14 5 10 1 + 15 5 6 2 + 16 6 25 1 + 17 6 7 1 + 18 7 19 1 + 19 7 8 2 + 20 8 16 am + 21 8 9 1 + 22 9 26 1 + 23 9 10 2 + 24 11 28 1 + 25 11 27 1 + 26 12 13 1 + 27 13 15 1 + 28 13 14 2 + 29 15 31 1 + 30 15 30 1 + 31 15 29 1 + 32 16 18 2 + 33 16 17 1 +@SUBSTRUCTURE + 1 GAFN 1 +@COMMENT +COMMENT 3-NITRO-5,6,7,8-TETRAHYDRO-5,8-METHANOISOQUINOLIN-6-(EXO)-O +@MOLECULE +GAHPIO + 22 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -3.6927 2.2346 6.4690 O.2 1 UNCH -0.5700 + 2 O2 -3.9315 1.1824 8.4204 O.3 1 UNCH -0.6500 + 3 O3 -1.8274 4.3594 6.5385 O.3 1 UNCH -0.4355 + 4 O4 0.7822 2.4429 7.9358 O.2 1 UNCH -0.5700 + 5 N1 -1.2252 3.2638 7.1962 N.3 1 UNCH -0.3246 + 6 C1 -3.2785 2.0361 7.6032 C.2 1 UNCH 0.6590 + 7 C2 -2.0557 2.6724 8.2567 C.3 1 UNCH 0.3611 + 8 C3 -2.4769 3.6791 9.3354 C.3 1 UNCH 0.0000 + 9 C4 -1.3019 4.2394 10.1235 C.3 1 UNCH 0.0000 + 10 C5 0.1483 3.1933 7.1943 C.2 1 UNCH 0.5690 + 11 C6 0.8488 4.0855 6.2019 C.3 1 UNCH 0.0610 + 12 H1 0.7729 5.1277 6.5230 H 1 UNCH 0.0000 + 13 H2 1.9061 3.8094 6.1483 H 1 UNCH 0.0000 + 14 H3 0.4138 3.9642 5.2060 H 1 UNCH 0.0000 + 15 H4 -1.6643 4.8864 10.9288 H 1 UNCH 0.0000 + 16 H5 -0.7123 3.4353 10.5749 H 1 UNCH 0.0000 + 17 H6 -0.6434 4.8389 9.4879 H 1 UNCH 0.0000 + 18 H7 -1.4816 1.8567 8.7131 H 1 UNCH 0.0000 + 19 H8 -3.0384 4.5086 8.8882 H 1 UNCH 0.0000 + 20 H9 -3.1628 3.1926 10.0401 H 1 UNCH 0.0000 + 21 H10 -4.6791 0.8479 7.8809 H 1 UNCH 0.5000 + 22 H11 -2.3712 3.9039 5.8608 H 1 UNCH 0.4000 +@BOND + 1 1 6 2 + 2 2 6 1 + 3 2 21 1 + 4 3 5 1 + 5 3 22 1 + 6 4 10 2 + 7 5 7 1 + 8 5 10 am + 9 6 7 1 + 10 7 8 1 + 11 7 18 1 + 12 8 9 1 + 13 8 19 1 + 14 8 20 1 + 15 9 15 1 + 16 9 16 1 + 17 9 17 1 + 18 10 11 1 + 19 11 12 1 + 20 11 13 1 + 21 11 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DL-2-(N-ACETYL-N-HYDROXYAMINO)BUTYRIC ACID +@MOLECULE +GAJTEQ + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.2301 2.5956 1.2309 S.1 1 GAJT 1.8200 + 2 O1 0.8031 2.5712 1.5211 O.3 1 GAJT -0.8167 + 3 O2 2.6199 2.1710 -0.1066 O.2 1 GAJT -0.8167 + 4 O3 3.1142 2.1971 2.3157 O.2 1 GAJT -0.8167 + 5 N1 2.5684 4.3894 1.1675 N.2 1 GAJT -0.0920 + 6 C1 1.8385 5.2152 1.9331 C.2 1 GAJT 0.2110 + 7 C2 2.0887 6.5840 1.9171 C.2 1 GAJT -0.1500 + 8 C3 3.1064 7.0772 1.1071 C.2 1 GAJT -0.1500 + 9 C4 3.8549 6.1949 0.3348 C.2 1 GAJT -0.1500 + 10 C5 3.5647 4.8349 0.3866 C.2 1 GAJT 0.2110 + 11 H1 1.0662 4.7648 2.5483 H 1 GAJT 0.1500 + 12 H2 1.4957 7.2543 2.5335 H 1 GAJT 0.1500 + 13 H3 3.3184 8.1445 1.0813 H 1 GAJT 0.1500 + 14 H4 4.6588 6.5575 -0.3003 H 1 GAJT 0.1500 + 15 H5 4.1151 4.0931 -0.1832 H 1 GAJT 0.1500 +@BOND + 1 1 5 1 + 2 1 4 2 + 3 1 3 2 + 4 1 2 1 + 5 5 10 2 + 6 5 6 1 + 7 6 11 1 + 8 6 7 2 + 9 7 12 1 + 10 7 8 1 + 11 8 13 1 + 12 8 9 2 + 13 9 14 1 + 14 9 10 1 + 15 10 15 1 +@SUBSTRUCTURE + 1 GAJT 1 +@COMMENT +COMMENT PYRIDINE-1-SULFONATE +@MOLECULE +GAKGOO + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.6337 2.1553 5.4825 O.3 1 UNCH -0.2267 + 2 C2 2.7886 2.8613 5.7673 C.2 1 UNCH 0.7056 + 3 O2 3.8119 2.7976 5.1008 O.2 1 UNCH -0.5700 + 4 C3 2.6555 3.7113 6.9737 C.2 1 UNCH -0.1238 + 5 C31 3.7417 4.5659 7.4842 C.3 1 UNCH 0.1382 + 6 C32 1.4221 3.4813 7.3780 C.2 1 UNCH 0.1000 + 7 N4 0.4928 3.7981 8.3289 N.3 1 UNCH -0.5691 + 8 C5 0.5488 4.8395 9.3371 C.3 1 UNCH 0.3691 + 9 C6 -0.4613 4.5246 10.4470 C.3 1 UNCH 0.0000 + 10 C7 -1.8638 4.2179 9.8961 C.3 1 UNCH 0.1382 + 11 C8 -1.8403 3.3097 8.6975 C.2 1 UNCH -0.2882 + 12 C81 -0.7056 3.1441 8.0095 C.2 1 UNCH 0.1000 + 13 C9 -0.4622 2.3295 6.8162 C.2 1 UNCH -0.1382 + 14 C91 -1.4577 1.4609 6.1479 C.3 1 UNCH 0.1382 + 15 C92 0.8160 2.5643 6.4796 C.2 1 UNCH 0.0767 + 16 H311 3.4332 5.1311 8.3678 H 1 UNCH 0.0000 + 17 H312 4.0541 5.2860 6.7213 H 1 UNCH 0.0000 + 18 H313 4.6098 3.9592 7.7605 H 1 UNCH 0.0000 + 19 H51 1.5510 4.9063 9.7735 H 1 UNCH 0.0000 + 20 H52 0.3153 5.8087 8.8804 H 1 UNCH 0.0000 + 21 H61 -0.1070 3.6500 11.0094 H 1 UNCH 0.0000 + 22 H62 -0.5125 5.3575 11.1571 H 1 UNCH 0.0000 + 23 H71 -2.3658 5.1516 9.6163 H 1 UNCH 0.0000 + 24 H72 -2.4614 3.7548 10.6895 H 1 UNCH 0.0000 + 25 H8 -2.7593 2.8149 8.4041 H 1 UNCH 0.1500 + 26 H911 -1.0284 0.9614 5.2732 H 1 UNCH 0.0000 + 27 H912 -2.3175 2.0472 5.8082 H 1 UNCH 0.0000 + 28 H913 -1.8151 0.6851 6.8326 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 15 1 + 3 2 3 2 + 4 2 4 1 + 5 4 5 1 + 6 4 6 2 + 7 5 16 1 + 8 5 17 1 + 9 5 18 1 + 10 6 7 1 + 11 6 15 1 + 12 7 8 1 + 13 7 12 1 + 14 8 9 1 + 15 8 19 1 + 16 8 20 1 + 17 9 10 1 + 18 9 21 1 + 19 9 22 1 + 20 10 11 1 + 21 10 23 1 + 22 10 24 1 + 23 11 12 2 + 24 11 25 1 + 25 12 13 1 + 26 13 14 1 + 27 13 15 2 + 28 14 26 1 + 29 14 27 1 + 30 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,9-DIMETHYL-2,5,6,7-TETRAHYDROFURO(2,3-B)INDOLIZIN-2-ONE +@MOLECULE +GAKNEL + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.1110 0.3329 6.5730 CL 1 GAKN -0.1770 + 2 O11 -2.3756 0.6054 6.5842 O.3 1 GAKN 0.2418 + 3 O21 -2.7461 4.5815 8.3392 O.3 1 GAKN -0.5200 + 4 O31 -1.6470 4.4591 10.2409 O.2 1 GAKN -0.5200 + 5 N11 -2.5557 1.7276 7.3704 N.2 1 GAKN -0.4097 + 6 N21 -1.0374 0.3041 6.4190 N.2 1 GAKN -0.4097 + 7 N31 -1.8405 4.1458 9.0587 N.2 1 GAKN 0.9070 + 8 C11 -1.3300 2.1582 7.6951 C.2 1 GAKN 0.2888 + 9 C21 -0.8876 3.2467 8.4692 C.2 1 GAKN 0.1330 + 10 C31 0.5007 3.4091 8.6620 C.2 1 GAKN -0.1500 + 11 C41 1.4339 2.5187 8.0796 C.2 1 GAKN -0.1500 + 12 C51 1.0284 1.4289 7.2901 C.2 1 GAKN 0.1770 + 13 C61 -0.3581 1.2393 7.0965 C.2 1 GAKN 0.2888 + 14 H31 0.8707 4.2366 9.2693 H 1 GAKN 0.1500 + 15 H41 2.4980 2.6835 8.2512 H 1 GAKN 0.1500 +@BOND + 1 1 12 1 + 2 2 5 1 + 3 2 6 1 + 4 3 7 1 + 5 4 7 2 + 6 5 8 2 + 7 6 13 2 + 8 7 9 1 + 9 8 9 1 + 10 8 13 1 + 11 9 10 2 + 12 10 11 1 + 13 10 14 1 + 14 11 12 2 + 15 11 15 1 + 16 12 13 1 +@SUBSTRUCTURE + 1 GAKN 1 +@COMMENT +COMMENT 4-CHLORO-7-NITRO-2,1,3-BENZOXADIAZOLE +@MOLECULE +GAKNIP + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.6852 0.3735 7.5190 S.2 1 UNCH 0.2505 + 2 S2 6.6887 -1.7637 6.6839 S.2 1 UNCH 0.2505 + 3 O1 4.1630 0.9832 8.7885 O.2 1 UNCH -0.5000 + 4 O2 5.7260 -2.0374 5.5659 O.2 1 UNCH -0.5000 + 5 C1 5.7493 -0.9863 7.9774 C.2 1 UNCH 0.1120 + 6 C2 7.6581 -0.3014 6.2037 C.3 1 UNCH 0.1935 + 7 C3 6.7843 0.8648 5.7572 C.3 1 UNCH 0.0000 + 8 C4 5.9921 1.4762 6.9028 C.3 1 UNCH 0.1935 + 9 C5 5.7856 -1.4272 9.2451 C.2 1 UNCH -0.2882 + 10 C6 6.5775 -2.5615 9.8139 C.3 1 UNCH 0.1382 + 11 H21 8.3044 -0.0224 7.0427 H 1 UNCH 0.0000 + 12 H22 8.3038 -0.6146 5.3768 H 1 UNCH 0.0000 + 13 H31 6.1120 0.5588 4.9464 H 1 UNCH 0.0000 + 14 H32 7.4403 1.6412 5.3448 H 1 UNCH 0.0000 + 15 H41 5.4941 2.3896 6.5617 H 1 UNCH 0.0000 + 16 H42 6.6464 1.7467 7.7389 H 1 UNCH 0.0000 + 17 H51 5.1610 -0.9231 9.9839 H 1 UNCH 0.1500 + 18 H61 7.2134 -3.0666 9.0835 H 1 UNCH 0.0000 + 19 H62 7.2221 -2.1913 10.6173 H 1 UNCH 0.0000 + 20 H63 5.8981 -3.3066 10.2398 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 5 1 + 3 1 8 1 + 4 2 4 2 + 5 2 5 1 + 6 2 6 1 + 7 5 9 2 + 8 6 7 1 + 9 6 11 1 + 10 6 12 1 + 11 7 8 1 + 12 7 13 1 + 13 7 14 1 + 14 8 15 1 + 15 8 16 1 + 16 9 10 1 + 17 9 17 1 + 18 10 18 1 + 19 10 19 1 + 20 10 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-ETHYLIDENE-1,3-DITHIANE 1,3-DIOXIDE +@MOLECULE +GAKPEN + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.7610 6.5939 -3.1493 S.1 1 UNCH 1.3260 + 2 C2 8.8629 7.9439 -3.0129 C.2 1 UNCH -0.1552 + 3 C3 8.2187 9.1238 -3.0711 C.2 1 UNCH -0.1784 + 4 C31 6.7758 8.9719 -3.2321 C.2 1 UNCH 0.0284 + 5 C4 5.8219 9.9719 -3.3265 C.2 1 UNCH -0.1500 + 6 C5 4.4774 9.6055 -3.4790 C.2 1 UNCH -0.1500 + 7 C6 4.0966 8.2524 -3.5358 C.2 1 UNCH -0.1500 + 8 C7 5.0540 7.2437 -3.4411 C.2 1 UNCH -0.1500 + 9 C71 6.3701 7.6404 -3.2915 C.2 1 UNCH -0.0090 + 10 C21 10.3133 7.6903 -2.8555 C.3 1 UNCH 0.1382 + 11 O1 7.9458 5.9184 -4.4164 O.2 1 UNCH -0.6500 + 12 O2 7.6665 5.8907 -1.8873 O.2 1 UNCH -0.6500 + 13 H3 8.6901 10.0943 -3.0084 H 1 UNCH 0.1500 + 14 H4 6.0989 11.0211 -3.2844 H 1 UNCH 0.1500 + 15 H5 3.7149 10.3786 -3.5547 H 1 UNCH 0.1500 + 16 H6 3.0465 7.9933 -3.6546 H 1 UNCH 0.1500 + 17 H7 4.7812 6.1945 -3.4827 H 1 UNCH 0.1500 + 18 H211 10.8773 8.6258 -2.7830 H 1 UNCH 0.0000 + 19 H212 10.7004 7.1300 -3.7122 H 1 UNCH 0.0000 + 20 H213 10.5055 7.1107 -1.9473 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 1 11 2 + 4 1 12 2 + 5 2 3 2 + 6 2 10 1 + 7 3 4 1 + 8 3 13 1 + 9 4 5 2 + 10 4 9 1 + 11 5 6 1 + 12 5 14 1 + 13 6 7 2 + 14 6 15 1 + 15 7 8 1 + 16 7 16 1 + 17 8 9 2 + 18 8 17 1 + 19 10 18 1 + 20 10 19 1 + 21 10 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-METHYLBENZO(B)THIOPHENE 1,1-DIOXIDE +@MOLECULE +GAKTAN + 15 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.4101 2.4722 3.9520 S.3 1 UNCH -0.1380 + 2 S2 7.1327 -0.2631 0.9597 S.3 1 UNCH -0.0800 + 3 S3 2.1477 -0.2735 5.0567 S.3 1 UNCH -0.0800 + 4 C1 4.0627 1.2182 4.3391 C.2 1 UNCH 0.0940 + 5 C2 4.1594 0.0135 3.5661 C.2 1 UNCH -0.0130 + 6 C3 5.2800 0.0158 2.6451 C.2 1 UNCH -0.0130 + 7 C4 6.0541 1.2224 2.7025 C.2 1 UNCH 0.0940 + 8 C5 7.1034 1.2219 1.8386 C.2 1 UNCH -0.1220 + 9 C6 5.7317 -0.8951 1.7490 C.2 1 UNCH -0.1100 + 10 C7 3.1950 -0.9004 3.8338 C.2 1 UNCH -0.1100 + 11 C8 3.0119 1.2133 5.2012 C.2 1 UNCH -0.1220 + 12 H5 7.8335 2.0047 1.6883 H 1 UNCH 0.1500 + 13 H6 5.3488 -1.8747 1.5002 H 1 UNCH 0.1500 + 14 H7 3.0276 -1.8795 3.4080 H 1 UNCH 0.1500 + 15 H8 2.7210 1.9940 5.8900 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 7 1 + 3 2 8 1 + 4 2 9 1 + 5 3 10 1 + 6 3 11 1 + 7 4 5 1 + 8 4 11 2 + 9 5 6 1 + 10 5 10 2 + 11 6 7 1 + 12 6 9 2 + 13 7 8 2 + 14 8 12 1 + 15 9 13 1 + 16 10 14 1 + 17 11 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DITHIENO(3,4-B.3',4'-D)THIOPHENE +@MOLECULE +GANHUY + 9 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.7927 1.4765 8.0963 O.2 1 UNCH -0.5700 + 2 O2 -1.2630 0.8437 7.5970 O.2 1 UNCH -0.5700 + 3 O4 1.4278 4.3481 6.5521 O.3 1 UNCH -0.5270 + 4 C1 0.8910 2.0654 7.5583 C.2 1 UNCH 0.6410 + 5 C2 -0.5509 1.7732 7.3194 C.2 1 UNCH 0.6410 + 6 C3 -0.6340 3.0665 6.6457 C.2 1 UNCH -0.2210 + 7 C4 0.6804 3.3534 6.8531 C.2 1 UNCH 0.0060 + 8 H3 -1.4273 3.6225 6.1532 H 1 UNCH 0.1500 + 9 H40 2.3335 4.1792 6.8797 H 1 UNCH 0.4500 +@BOND + 1 1 4 2 + 2 2 5 2 + 3 3 7 1 + 4 3 9 1 + 5 4 5 1 + 6 4 7 1 + 7 5 6 1 + 8 6 7 2 + 9 6 8 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-HYDROXYCYCLOBUTENE-3,4-DIONE (AT 133 DEG.K, GROWTH REGULA +@MOLECULE +GAPMEP + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 0.4812 1.4219 7.7517 BR 1 GAPM -0.1100 + 2 S1 1.4048 2.2869 4.9400 S.1 1 GAPM 1.3260 + 3 O1 2.4640 3.1956 5.3300 O.2 1 GAPM -0.6500 + 4 O2 0.1296 2.7418 4.4236 O.2 1 GAPM -0.6500 + 5 C2 1.1974 1.0135 6.1115 C.2 1 GAPM 0.0930 + 6 C3 1.6057 -0.1811 5.6581 C.2 1 GAPM -0.1784 + 7 C31 2.1209 -0.1083 4.2950 C.2 1 GAPM 0.0284 + 8 C4 2.6224 -1.1415 3.5206 C.2 1 GAPM -0.1500 + 9 C5 3.0696 -0.8522 2.2240 C.2 1 GAPM -0.1500 + 10 C6 3.0138 0.4572 1.7123 C.2 1 GAPM -0.1500 + 11 C7 2.5098 1.4994 2.4886 C.2 1 GAPM -0.1500 + 12 C71 2.0774 1.1794 3.7624 C.2 1 GAPM -0.0090 + 13 H3 1.5692 -1.1059 6.2151 H 1 GAPM 0.1500 + 14 H7 2.4585 2.5157 2.1119 H 1 GAPM 0.1500 + 15 H6 3.3674 0.6557 0.7024 H 1 GAPM 0.1500 + 16 H5 3.4669 -1.6520 1.6014 H 1 GAPM 0.1500 + 17 H4 2.6732 -2.1584 3.8989 H 1 GAPM 0.1500 +@BOND + 1 1 5 1 + 2 2 3 2 + 3 2 4 2 + 4 2 5 1 + 5 2 12 1 + 6 5 6 2 + 7 6 7 1 + 8 6 13 1 + 9 7 8 2 + 10 7 12 1 + 11 8 9 1 + 12 8 17 1 + 13 9 10 2 + 14 9 16 1 + 15 10 11 1 + 16 10 15 1 + 17 11 12 2 + 18 11 14 1 +@SUBSTRUCTURE + 1 GAPM 1 +@COMMENT +COMMENT 2-BROMOBENZO(B)THIOPHENE 1,1-DIOXIDE +@MOLECULE +GAVKOD + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.1065 3.1347 0.4158 O.3 1 GAVK -0.1171 + 2 O2 4.3225 1.1958 1.3719 O.3 1 GAVK -0.6330 + 3 N1 6.2967 3.8653 0.4277 N.2 1 GAVK -0.4097 + 4 N2 5.2974 1.9730 1.2354 N.2 1 GAVK 0.9530 + 5 N3 7.0607 1.0824 2.5647 N.3 1 GAVK -0.8830 + 6 C1 7.1469 3.1923 1.2132 C.2 1 GAVK 0.1078 + 7 C2 6.5503 2.0258 1.7291 C.2 1 GAVK 0.0010 + 8 C3 8.5165 3.7062 1.4412 C.3 1 GAVK 0.1810 + 9 H1 6.4517 0.3595 2.9522 H 1 GAVK 0.4000 + 10 H2 7.9248 1.2126 3.0843 H 1 GAVK 0.4000 + 11 H31 8.6604 3.9498 2.4987 H 1 GAVK 0.0000 + 12 H32 8.7125 4.6108 0.8561 H 1 GAVK 0.0000 + 13 H33 9.2593 2.9540 1.1567 H 1 GAVK 0.0000 +@BOND + 1 1 4 1 + 2 1 3 1 + 3 2 4 1 + 4 3 6 2 + 5 4 7 2 + 6 5 10 1 + 7 5 9 1 + 8 5 7 am + 9 6 8 1 + 10 6 7 1 + 11 8 13 1 + 12 8 12 1 + 13 8 11 1 +@SUBSTRUCTURE + 1 GAVK 1 +@COMMENT +COMMENT 3-AMINO-4-METHYLFURAZAN N-OXIDE +@MOLECULE +GAVMEV + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.7087 -1.4086 1.0220 C.2 1 UNCH -0.0130 + 2 S2 1.8626 0.0214 0.5600 S.3 1 UNCH -0.0800 + 3 C3 2.8951 0.9582 1.5620 C.2 1 UNCH 0.1981 + 4 N4 3.8235 0.2884 2.2089 N.2 1 UNCH -0.5653 + 5 C5 3.7169 -1.0424 1.8965 C.2 1 UNCH 0.2892 + 6 O6 4.5637 -1.9272 2.4423 O.3 1 UNCH -0.5120 + 7 C7 2.7050 2.4314 1.6516 C.3 1 UNCH 0.1800 + 8 C8 2.3345 -2.7182 0.4730 C.2 1 UNCH 0.0530 + 9 C9 0.9911 -3.1086 0.3525 C.2 1 UNCH -0.1500 + 10 C10 0.6519 -4.3590 -0.1731 C.2 1 UNCH -0.1500 + 11 C11 1.6508 -5.2382 -0.5834 C.2 1 UNCH -0.1500 + 12 C12 2.9885 -4.8700 -0.4661 C.2 1 UNCH -0.1500 + 13 C13 3.3269 -3.6199 0.0597 C.2 1 UNCH -0.1500 + 14 H6 5.1429 -1.4079 3.0258 H 1 UNCH 0.4500 + 15 H72 2.8285 2.9004 0.6703 H 1 UNCH 0.0000 + 16 H9 0.1905 -2.4486 0.6780 H 1 UNCH 0.1500 + 17 H11 1.3874 -6.2108 -0.9906 H 1 UNCH 0.1500 + 18 H13 4.3789 -3.3538 0.1415 H 1 UNCH 0.1500 + 19 H71 3.4427 2.8714 2.3303 H 1 UNCH 0.0000 + 20 H73 1.7086 2.6728 2.0352 H 1 UNCH 0.0000 + 21 H10 -0.3931 -4.6457 -0.2575 H 1 UNCH 0.1500 + 22 H12 3.7719 -5.5542 -0.7813 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 2 + 3 1 8 1 + 4 2 3 1 + 5 3 4 2 + 6 3 7 1 + 7 4 5 1 + 8 5 6 1 + 9 6 14 1 + 10 7 15 1 + 11 7 19 1 + 12 7 20 1 + 13 8 9 2 + 14 8 13 1 + 15 9 10 1 + 16 9 16 1 + 17 10 11 2 + 18 10 21 1 + 19 11 12 1 + 20 11 17 1 + 21 12 13 2 + 22 12 22 1 + 23 13 18 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-METHYL-5-PHENYL-THIAZOLIN-4-ONE +@MOLECULE +GAWWOQ + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 3.4941 0.9322 -0.0010 P 1 UNCH 1.5103 + 2 O1 2.1593 1.7625 0.3231 O.3 1 UNCH -0.4212 + 3 O2 3.6008 0.5127 -1.4354 O.3 1 UNCH -0.7000 + 4 O3 4.6122 2.0571 0.3421 O.3 1 UNCH -0.5512 + 5 N1 3.7330 -0.2090 1.1577 N.3 1 UNCH -0.8079 + 6 O4 0.6507 0.1564 -0.2596 O.2 1 UNCH -0.5700 + 7 C1 3.8911 0.2545 2.5298 C.3 1 UNCH 0.2700 + 8 C2 4.9942 1.3096 2.6096 C.3 1 UNCH 0.0000 + 9 C3 4.7134 2.4864 1.6876 C.3 1 UNCH 0.2800 + 10 C4 0.9289 1.2860 0.1022 C.2 1 UNCH 0.6338 + 11 C5 -0.0918 2.3231 0.4083 C.2 1 UNCH 0.0862 + 12 C6 -1.4411 1.9434 0.4039 C.2 1 UNCH -0.1500 + 13 C7 -2.4372 2.8796 0.6879 C.2 1 UNCH -0.1500 + 14 C8 -2.0918 4.1994 0.9746 C.2 1 UNCH -0.1500 + 15 C9 -0.7523 4.5871 0.9757 C.2 1 UNCH -0.1500 + 16 C10 0.2480 3.6537 0.6926 C.2 1 UNCH -0.1500 + 17 C11 2.9249 -1.4174 1.1011 C.3 1 UNCH 0.2700 + 18 H11 2.9481 0.6725 2.9024 H 1 UNCH 0.0000 + 19 H12 4.1690 -0.5750 3.1912 H 1 UNCH 0.0000 + 20 H21 5.9492 0.8481 2.3278 H 1 UNCH 0.0000 + 21 H22 5.0912 1.6635 3.6419 H 1 UNCH 0.0000 + 22 H31 5.5329 3.2093 1.7482 H 1 UNCH 0.0000 + 23 H32 3.7936 3.0064 1.9758 H 1 UNCH 0.0000 + 24 H111 2.8467 -1.7820 0.0718 H 1 UNCH 0.0000 + 25 H112 1.9148 -1.2493 1.4864 H 1 UNCH 0.0000 + 26 H113 3.3853 -2.2219 1.6850 H 1 UNCH 0.0000 + 27 H6 -1.7228 0.9166 0.1765 H 1 UNCH 0.1500 + 28 H7 -3.4823 2.5791 0.6813 H 1 UNCH 0.1500 + 29 H8 -2.8689 4.9286 1.1920 H 1 UNCH 0.1500 + 30 H9 -0.4873 5.6195 1.1918 H 1 UNCH 0.1500 + 31 H10 1.2836 3.9838 0.6884 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 10 1 + 6 4 9 1 + 7 5 7 1 + 8 5 17 1 + 9 6 10 2 + 10 7 8 1 + 11 7 18 1 + 12 7 19 1 + 13 8 9 1 + 14 8 20 1 + 15 8 21 1 + 16 9 22 1 + 17 9 23 1 + 18 10 11 1 + 19 11 12 2 + 20 11 16 1 + 21 12 13 1 + 22 12 27 1 + 23 13 14 2 + 24 13 28 1 + 25 14 15 1 + 26 14 29 1 + 27 15 16 2 + 28 15 30 1 + 29 16 31 1 + 30 17 24 1 + 31 17 25 1 + 32 17 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-BENZOYLOXY-N-METHYL-2-OXO-1,3,2-OXAZAPHOSPHORINANE +@MOLECULE +GEHBOK + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.4246 2.5895 1.2387 C.3 1 GEHB 0.0280 + 2 C2 2.5336 3.1825 2.6748 C.3 1 GEHB 0.0000 + 3 C3 1.5093 2.0980 3.1176 C.3 1 GEHB 0.4010 + 4 C4 0.9895 2.1204 1.6526 C.3 1 GEHB 0.0000 + 5 C5 3.4296 1.4976 0.9960 C.2 1 GEHB 0.8710 + 6 O6 3.0015 0.3025 1.1867 O.2 1 GEHB -0.9000 + 7 O7 4.6538 1.7854 0.8749 O.3 1 GEHB -0.9000 + 8 N8 2.1437 0.7784 3.4702 N.3 1 GEHB -0.8220 + 9 C9 0.4845 2.4683 4.1933 C.2 1 GEHB 0.8710 + 10 O10 0.0050 3.6365 4.2219 O.2 1 GEHB -0.9000 + 11 O11 0.2238 1.5068 4.9916 O.3 1 GEHB -0.9000 + 12 S12 2.5777 3.6584 -0.1509 S.1 1 GEHB 1.2100 + 13 O13 3.6155 4.6564 0.0647 O.2 1 GEHB -0.6500 + 14 O14 2.5482 2.9095 -1.3991 O.2 1 GEHB -0.6500 + 15 C15 1.0750 4.6564 -0.2346 C.2 1 GEHB -0.0090 + 16 C16 0.9670 5.8031 0.5568 C.2 1 GEHB -0.1500 + 17 C17 -0.1969 6.5688 0.4961 C.2 1 GEHB -0.1500 + 18 C18 -1.2343 6.1993 -0.3623 C.2 1 GEHB -0.1500 + 19 C19 -1.1110 5.0660 -1.1681 C.2 1 GEHB -0.1500 + 20 C20 0.0473 4.2913 -1.1107 C.2 1 GEHB -0.1500 + 21 H21 2.1775 4.2139 2.7715 H 1 GEHB 0.0000 + 22 H22 3.5192 3.1275 3.1488 H 1 GEHB 0.0000 + 23 H23 0.6402 1.1677 1.2418 H 1 GEHB 0.0000 + 24 H24 0.1846 2.8468 1.4966 H 1 GEHB 0.0000 + 25 H25 2.9875 0.8922 4.0298 H 1 GEHB 0.4500 + 26 H26 1.4461 0.2828 4.0562 H 1 GEHB 0.4500 + 27 H27 2.3963 0.2169 2.6184 H 1 GEHB 0.4500 + 28 H28 1.7739 6.1009 1.2219 H 1 GEHB 0.1500 + 29 H29 -0.2966 7.4506 1.1238 H 1 GEHB 0.1500 + 30 H30 -2.1413 6.7967 -0.4012 H 1 GEHB 0.1500 + 31 H31 -1.9186 4.7847 -1.8385 H 1 GEHB 0.1500 + 32 H32 0.1396 3.4111 -1.7424 H 1 GEHB 0.1500 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 1 5 1 + 4 1 12 1 + 5 2 3 1 + 6 2 21 1 + 7 2 22 1 + 8 3 4 1 + 9 3 8 1 + 10 3 9 1 + 11 4 23 1 + 12 4 24 1 + 13 5 6 2 + 14 5 7 1 + 15 8 25 1 + 16 8 26 1 + 17 8 27 1 + 18 9 10 2 + 19 9 11 1 + 20 12 13 2 + 21 12 14 2 + 22 12 15 1 + 23 15 16 2 + 24 15 20 1 + 25 16 17 1 + 26 16 28 1 + 27 17 18 2 + 28 17 29 1 + 29 18 19 1 + 30 18 30 1 + 31 19 20 2 + 32 19 31 1 + 33 20 32 1 +@SUBSTRUCTURE + 1 GEHB 1 +@COMMENT +COMMENT TRANS-2,4-METHANOGLUTAMIC ACID-2-PHENYLSULFONE DIHYDRATE (T +@MOLECULE +GEHPUE + 21 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.1431 7.1405 11.9129 S.3 1 UNCH 0.0080 + 2 S2 0.8998 8.7309 11.5236 S.3 1 UNCH 0.0000 + 3 S3 1.3702 9.3603 9.6248 S.3 1 UNCH 0.0080 + 4 O1 1.5079 5.8019 9.2175 O.2 1 UNCH -0.5700 + 5 O2 -0.1086 3.4487 11.1995 O.2 1 UNCH -0.5700 + 6 O3 -1.1420 9.6580 7.8674 O.2 1 UNCH -0.5700 + 7 O4 -0.8202 6.2197 7.4187 O.2 1 UNCH -0.5700 + 8 N1 1.2249 5.7768 11.5338 N.3 1 UNCH -0.4380 + 9 N2 -0.4180 3.8337 8.9620 N.3 1 UNCH -0.8000 + 10 N3 0.5782 8.2646 8.6186 N.3 1 UNCH -0.4380 + 11 N4 -2.1366 7.6931 6.2711 N.3 1 UNCH -0.8000 + 12 C1 1.0573 5.3183 10.2481 C.2 1 UNCH 0.6300 + 13 C2 0.1318 4.0891 10.1866 C.2 1 UNCH 0.6300 + 14 C3 -0.5725 8.5762 7.9376 C.2 1 UNCH 0.6300 + 15 C4 -1.1746 7.3667 7.1879 C.2 1 UNCH 0.6300 + 16 H1 0.8058 5.2285 12.2810 H 1 UNCH 0.3700 + 17 H2 -0.3531 4.5411 8.2263 H 1 UNCH 0.3700 + 18 H3 -1.1459 3.1383 8.8889 H 1 UNCH 0.3700 + 19 H4 0.9305 7.3045 8.5769 H 1 UNCH 0.3700 + 20 H5 -2.4514 8.6563 6.2046 H 1 UNCH 0.3700 + 21 H6 -2.6404 6.9656 5.7855 H 1 UNCH 0.3700 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 2 3 1 + 4 3 10 1 + 5 4 12 2 + 6 5 13 2 + 7 6 14 2 + 8 7 15 2 + 9 8 12 am + 10 8 16 1 + 11 9 13 am + 12 9 17 1 + 13 9 18 1 + 14 10 14 am + 15 10 19 1 + 16 11 15 am + 17 11 20 1 + 18 11 21 1 + 19 12 13 1 + 20 14 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(OXAMIDO)TRISULFANE +@MOLECULE +GEHXEW + 38 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 3.4972 0.4406 9.0499 CL 1 UNCH -0.0400 + 2 N3 3.0146 -0.4659 10.4345 N.3 1 UNCH -0.3791 + 3 C4 3.1891 0.0941 11.6733 C.2 1 UNCH 0.6500 + 4 O1 4.2681 0.8941 11.8399 O.3 1 UNCH -0.4300 + 5 N1 2.3389 -0.1686 12.6280 N.2 1 UNCH -0.6960 + 6 C7 1.3751 -1.1176 11.9656 C.3 1 UNCH 0.6151 + 7 C8 4.4139 1.5038 13.1303 C.3 1 UNCH 0.2800 + 8 C9 5.6511 2.3798 13.0999 C.3 1 UNCH 0.0000 + 9 C1 1.6591 -0.9921 10.4013 C.3 1 UNCH 0.6151 + 10 N2 0.5864 -0.0791 9.8685 N.2 1 UNCH -0.6960 + 11 N4 -0.0324 -0.7528 11.9944 N.3 1 UNCH -0.3791 + 12 CL2 -0.6059 -0.1083 13.4869 CL 1 UNCH -0.0400 + 13 O4 -1.4467 0.6335 10.7802 O.3 1 UNCH -0.4300 + 14 C15 -1.6727 1.3944 9.5851 C.3 1 UNCH 0.2800 + 15 C16 -3.0029 2.1082 9.7262 C.3 1 UNCH 0.0000 + 16 C10 -0.2808 -0.0512 10.8434 C.2 1 UNCH 0.6500 + 17 C11 1.6148 -2.5042 12.5856 C.3 1 UNCH 0.0000 + 18 C12 1.2866 -3.6664 11.6617 C.3 1 UNCH 0.0000 + 19 C13 2.0453 -3.5308 10.3511 C.3 1 UNCH 0.0000 + 20 C14 1.5770 -2.2982 9.5938 C.3 1 UNCH 0.0000 + 21 H81 3.5332 2.1165 13.3526 H 1 UNCH 0.0000 + 22 H82 4.5301 0.7271 13.8942 H 1 UNCH 0.0000 + 23 H91 5.5604 3.1479 12.3247 H 1 UNCH 0.0000 + 24 H92 6.5383 1.7856 12.8570 H 1 UNCH 0.0000 + 25 H93 5.8068 2.8689 14.0655 H 1 UNCH 0.0000 + 26 H111 1.0492 -2.6126 13.5193 H 1 UNCH 0.0000 + 27 H112 2.6717 -2.6000 12.8715 H 1 UNCH 0.0000 + 28 H121 1.5655 -4.6072 12.1500 H 1 UNCH 0.0000 + 29 H122 0.2069 -3.7101 11.4756 H 1 UNCH 0.0000 + 30 H131 3.1242 -3.4741 10.5381 H 1 UNCH 0.0000 + 31 H132 1.8736 -4.4211 9.7353 H 1 UNCH 0.0000 + 32 H141 0.5361 -2.4756 9.2890 H 1 UNCH 0.0000 + 33 H142 2.1438 -2.2103 8.6588 H 1 UNCH 0.0000 + 34 H151 -1.7042 0.7223 8.7204 H 1 UNCH 0.0000 + 35 H152 -0.8709 2.1300 9.4567 H 1 UNCH 0.0000 + 36 H161 -3.2222 2.7045 8.8361 H 1 UNCH 0.0000 + 37 H162 -3.8131 1.3873 9.8776 H 1 UNCH 0.0000 + 38 H163 -2.9957 2.7672 10.6008 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 2 3 am + 3 2 9 1 + 4 3 4 1 + 5 3 5 2 + 6 4 7 1 + 7 5 6 1 + 8 6 9 1 + 9 6 11 1 + 10 6 17 1 + 11 7 8 1 + 12 7 21 1 + 13 7 22 1 + 14 8 23 1 + 15 8 24 1 + 16 8 25 1 + 17 9 10 1 + 18 9 20 1 + 19 10 16 2 + 20 11 12 1 + 21 11 16 am + 22 13 14 1 + 23 13 16 1 + 24 14 15 1 + 25 14 34 1 + 26 14 35 1 + 27 15 36 1 + 28 15 37 1 + 29 15 38 1 + 30 17 18 1 + 31 17 26 1 + 32 17 27 1 + 33 18 19 1 + 34 18 28 1 + 35 18 29 1 + 36 19 20 1 + 37 19 30 1 + 38 19 31 1 + 39 20 32 1 + 40 20 33 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,5-DIETHOXY-3A,6A-TETRAMETHYLENE-1,4-DICHLORO-1,4-DIHYDRO- +@MOLECULE +GEJYOJ + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.1495 2.3642 2.6035 P 1 GEJY -0.5024 + 2 F1 1.4214 0.6938 0.9870 F 1 GEJY -0.2220 + 3 F2 -0.9812 0.5650 4.2519 F 1 GEJY -0.3400 + 4 F3 -0.8016 -0.1496 2.2161 F 1 GEJY -0.3400 + 5 F4 0.9500 -0.0667 3.5050 F 1 GEJY -0.3400 + 6 N1 1.7427 2.8626 0.4089 N.3 1 GEJY -0.7882 + 7 C1 -0.1747 0.6165 3.1517 C.3 1 GEJY 1.2750 + 8 C2 1.1456 1.9706 1.2803 C.2 1 GEJY 0.5194 + 9 C3 1.8127 4.2964 0.6744 C.3 1 GEJY 0.3691 + 10 C4 2.7178 2.3607 -0.5549 C.3 1 GEJY 0.3691 + 11 H31 0.8190 4.7132 0.8677 H 1 GEJY 0.0000 + 12 H32 2.2168 4.8444 -0.1839 H 1 GEJY 0.0000 + 13 H33 2.4609 4.4955 1.5343 H 1 GEJY 0.0000 + 14 H41 2.8971 3.0842 -1.3573 H 1 GEJY 0.0000 + 15 H42 3.6698 2.1525 -0.0559 H 1 GEJY 0.0000 + 16 H43 2.3622 1.4411 -1.0319 H 1 GEJY 0.0000 +@BOND + 1 1 8 2 + 2 1 7 1 + 3 2 8 1 + 4 3 7 1 + 5 4 7 1 + 6 5 7 1 + 7 6 10 1 + 8 6 9 1 + 9 6 8 1 + 10 9 13 1 + 11 9 12 1 + 12 9 11 1 + 13 10 16 1 + 14 10 15 1 + 15 10 14 1 +@SUBSTRUCTURE + 1 GEJY 1 +@COMMENT +COMMENT (Z)-1-DIMETHYLAMINO-1,3,3,3-TETRAFLUORO-2-PHOSPHA-1-PROPENE +@MOLECULE +GEKXEZ + 18 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.3964 2.3499 1.3617 C.3 1 GEKX 0.2700 + 2 C2 -1.6992 1.5594 1.1518 C.3 1 GEKX 0.0000 + 3 C3 0.7815 1.6301 0.6828 C.3 1 GEKX 0.0000 + 4 C4 -0.5617 3.7351 0.7062 C.3 1 GEKX 0.0000 + 5 N1 -0.1286 2.6054 2.7954 N.3 1 GEKX -0.6300 + 6 N2 -0.0519 1.4139 3.6001 N.3 1 GEKX -0.7200 + 7 H1 0.7199 3.1736 2.8928 H 1 GEKX 0.3600 + 8 H2 0.5582 0.6932 3.2106 H 1 GEKX 0.3600 + 9 H3 -0.9725 0.9874 3.7308 H 1 GEKX 0.3600 + 10 H21 -1.9465 1.4892 0.0861 H 1 GEKX 0.0000 + 11 H22 -1.6227 0.5349 1.5324 H 1 GEKX 0.0000 + 12 H23 -2.5445 2.0441 1.6542 H 1 GEKX 0.0000 + 13 H31 1.7232 2.1683 0.8418 H 1 GEKX 0.0000 + 14 H32 0.6234 1.5583 -0.3997 H 1 GEKX 0.0000 + 15 H33 0.9103 0.6092 1.0577 H 1 GEKX 0.0000 + 16 H41 -0.7714 3.6423 -0.3659 H 1 GEKX 0.0000 + 17 H42 -1.3907 4.2944 1.1563 H 1 GEKX 0.0000 + 18 H43 0.3462 4.3412 0.8112 H 1 GEKX 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 10 1 + 6 2 11 1 + 7 2 12 1 + 8 3 13 1 + 9 3 14 1 + 10 3 15 1 + 11 4 16 1 + 12 4 17 1 + 13 4 18 1 + 14 5 6 1 + 15 5 7 1 + 16 6 8 1 + 17 6 9 1 +@SUBSTRUCTURE + 1 GEKX 1 +@COMMENT +COMMENT T-BUTYLHYDRAZINE HYDROCHLORIDE +@MOLECULE +GEMCEG + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.3764 1.3766 5.5410 C.3 1 UNCH 0.0100 + 2 C2 2.8030 1.3620 4.9641 C.3 1 UNCH 0.0100 + 3 C3 1.8446 0.2234 4.6754 C.3 1 UNCH -0.2000 + 4 C4 1.1942 1.1154 6.9525 C.1 1 UNCH 0.4521 + 5 C5 0.3395 2.3124 4.9720 C.3 1 UNCH 0.0950 + 6 C6 3.1692 2.2836 3.8278 C.3 1 UNCH 0.0950 + 7 C7 3.9104 1.0877 5.8542 C.1 1 UNCH 0.4521 + 8 N1 1.0249 0.9071 8.0802 N.1 1 UNCH -0.5571 + 9 N2 4.8122 0.8685 6.5488 N.1 1 UNCH -0.5571 + 10 H1 2.0247 -0.7406 5.1452 H 1 UNCH 0.1000 + 11 H2 1.4386 0.1260 3.6737 H 1 UNCH 0.1000 + 12 H3 0.5173 3.3352 5.3215 H 1 UNCH 0.0000 + 13 H4 0.3369 2.3237 3.8777 H 1 UNCH 0.0000 + 14 H5 -0.6669 2.0136 5.2873 H 1 UNCH 0.0000 + 15 H6 4.1065 1.9649 3.3571 H 1 UNCH 0.0000 + 16 H7 2.4107 2.3026 3.0391 H 1 UNCH 0.0000 + 17 H8 3.3022 3.3068 4.1954 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 2 3 1 + 6 2 6 1 + 7 2 7 1 + 8 3 10 1 + 9 3 11 1 + 10 4 8 3 + 11 5 12 1 + 12 5 13 1 + 13 5 14 1 + 14 6 15 1 + 15 6 16 1 + 16 6 17 1 + 17 7 9 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CIS-1,2-DICYANO-1,2-DIMETHYLCYCLOPROPANE +@MOLECULE +GEMCOQ + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.9926 5.0093 1.0665 C.3 1 UNCH 0.2530 + 2 C2 5.1885 5.8313 0.6164 C.3 1 UNCH 0.2530 + 3 C3 4.9484 4.4664 0.0299 C.3 1 UNCH -0.2000 + 4 C4 3.9635 4.3592 2.3520 C.1 1 UNCH 0.4521 + 5 C5 2.0338 6.4141 1.2009 C.3 1 UNCH 0.2800 + 6 C6 5.8779 7.2177 -1.2421 C.3 1 UNCH 0.2800 + 7 C7 6.2794 6.0423 1.5329 C.1 1 UNCH 0.4521 + 8 N1 3.9418 3.8372 3.3880 N.1 1 UNCH -0.5571 + 9 N2 7.1745 6.2081 2.2520 N.1 1 UNCH -0.5571 + 10 O1 2.6847 5.3435 0.5229 O.3 1 UNCH -0.4280 + 11 O2 4.8907 6.9644 -0.2474 O.3 1 UNCH -0.4280 + 12 H1 4.5877 4.3988 -0.9900 H 1 UNCH 0.1000 + 13 H2 5.6138 3.6564 0.3085 H 1 UNCH 0.1000 + 14 H3 2.6908 7.2842 1.2868 H 1 UNCH 0.0000 + 15 H4 1.7089 6.0906 2.1939 H 1 UNCH 0.0000 + 16 H5 1.1511 6.6986 0.6221 H 1 UNCH 0.0000 + 17 H6 5.5084 8.0131 -1.8949 H 1 UNCH 0.0000 + 18 H7 6.0570 6.3248 -1.8480 H 1 UNCH 0.0000 + 19 H8 6.8104 7.5534 -0.7797 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 10 1 + 5 2 3 1 + 6 2 7 1 + 7 2 11 1 + 8 3 12 1 + 9 3 13 1 + 10 4 8 3 + 11 5 10 1 + 12 5 14 1 + 13 5 15 1 + 14 5 16 1 + 15 6 11 1 + 16 6 17 1 + 17 6 18 1 + 18 6 19 1 + 19 7 9 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CIS-1,2-DICYANO-1,2-DIMETHOXYCYCLOPROPANE +@MOLECULE +GEMDAD + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.9196 2.6325 4.1977 C.3 1 UNCH 0.2630 + 2 C2 4.2322 2.8852 4.9970 C.3 1 UNCH 0.2630 + 3 C3 4.2752 2.4818 3.5364 C.3 1 UNCH -0.2000 + 4 C4 2.2098 1.3873 4.4716 C.1 1 UNCH 0.4521 + 5 N1 1.6090 0.4129 4.6679 N.1 1 UNCH -0.5571 + 6 N2 2.0903 3.8144 3.7491 N.3 1 UNCH -0.6980 + 7 C5 1.4277 3.5883 2.4626 C.3 1 UNCH 0.2700 + 8 C6 1.1151 4.2362 4.7584 C.3 1 UNCH 0.2700 + 9 C7 4.5765 4.2752 5.2776 C.1 1 UNCH 0.4521 + 10 N3 4.8809 5.3670 5.5311 N.1 1 UNCH -0.5571 + 11 N4 4.7048 1.8446 5.9868 N.3 1 UNCH -0.6980 + 12 C8 4.1339 2.0352 7.3230 C.3 1 UNCH 0.2700 + 13 C9 6.1646 1.7549 6.0638 C.3 1 UNCH 0.2700 + 14 H1 4.5757 3.2241 2.8041 H 1 UNCH 0.1000 + 15 H2 4.6210 1.4836 3.2884 H 1 UNCH 0.1000 + 16 H3 0.9384 4.5061 2.1180 H 1 UNCH 0.0000 + 17 H4 0.6732 2.7957 2.5154 H 1 UNCH 0.0000 + 18 H5 2.1589 3.3149 1.6942 H 1 UNCH 0.0000 + 19 H6 1.6066 4.4269 5.7184 H 1 UNCH 0.0000 + 20 H7 0.3319 3.4871 4.9195 H 1 UNCH 0.0000 + 21 H8 0.6363 5.1746 4.4574 H 1 UNCH 0.0000 + 22 H9 4.4944 2.9517 7.8031 H 1 UNCH 0.0000 + 23 H10 4.3850 1.1871 7.9695 H 1 UNCH 0.0000 + 24 H11 3.0408 2.0829 7.2757 H 1 UNCH 0.0000 + 25 H12 6.4631 0.9127 6.6980 H 1 UNCH 0.0000 + 26 H13 6.5931 1.5690 5.0730 H 1 UNCH 0.0000 + 27 H14 6.6181 2.6668 6.4678 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 6 1 + 5 2 3 1 + 6 2 9 1 + 7 2 11 1 + 8 3 14 1 + 9 3 15 1 + 10 4 5 3 + 11 6 7 1 + 12 6 8 1 + 13 7 16 1 + 14 7 17 1 + 15 7 18 1 + 16 8 19 1 + 17 8 20 1 + 18 8 21 1 + 19 9 10 3 + 20 11 12 1 + 21 11 13 1 + 22 12 22 1 + 23 12 23 1 + 24 12 24 1 + 25 13 25 1 + 26 13 26 1 + 27 13 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TRANS-1,2-DICYANO-1,2-BIS(DIMETHYLAMINO)-CYCLOPROPANE +@MOLECULE +GERCUB + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.2101 2.3125 0.4720 S.1 1 GERC 1.4760 + 2 C1 0.7905 1.4217 1.9025 C.2 1 GERC 0.7740 + 3 C2 1.5319 -0.1902 3.2309 C.2 1 GERC 0.3090 + 4 C3 1.4124 0.9910 3.9869 C.2 1 GERC 0.3090 + 5 C4 1.7293 1.0460 5.3379 C.2 1 GERC -0.1090 + 6 C5 2.1788 -0.1561 5.9063 C.2 1 GERC -0.1500 + 7 C6 2.2988 -1.3414 5.1481 C.2 1 GERC -0.1500 + 8 C7 1.9755 -1.3851 3.7828 C.2 1 GERC -0.1090 + 9 N1 1.1383 0.1257 1.9570 N.3 1 GERC -0.7000 + 10 N2 0.9542 1.9501 3.1269 N.2 1 GERC -0.7000 + 11 O1 -1.0037 1.5963 0.0831 O.3 1 GERC -0.8167 + 12 O2 1.3100 2.1933 -0.4839 O.2 1 GERC -0.8167 + 13 O3 -0.0098 3.6627 0.9961 O.2 1 GERC -0.8167 + 14 H1 1.6326 1.9618 5.9074 H 1 GERC 0.1500 + 15 H2 2.4432 -0.1764 6.9641 H 1 GERC 0.1500 + 16 H3 2.6531 -2.2487 5.6387 H 1 GERC 0.1500 + 17 H4 2.0631 -2.2872 3.1904 H 1 GERC 0.1500 + 18 H5 1.0846 -0.4559 1.1256 H 1 GERC 0.4500 + 19 H6 0.7364 2.9346 3.2748 H 1 GERC 0.4500 +@BOND + 1 1 13 2 + 2 1 12 2 + 3 1 11 1 + 4 1 2 1 + 5 2 10 2 + 6 2 9 am + 7 3 9 1 + 8 3 8 1 + 9 3 4 2 + 10 4 10 1 + 11 4 5 1 + 12 5 14 1 + 13 5 6 2 + 14 6 15 1 + 15 6 7 1 + 16 7 16 1 + 17 7 8 2 + 18 8 17 1 + 19 9 18 1 + 20 10 19 1 +@SUBSTRUCTURE + 1 GERC 1 +@COMMENT +COMMENT 2-BENZIMIDAZOLESULFONIC ACID MONOHYDRATE +@MOLECULE +GESCIQ + 35 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.2158 1.2600 2.7015 S.3 1 GESC -0.0800 + 2 C1 1.1890 0.5110 3.3165 C.2 1 GESC 0.2240 + 3 N1 1.3253 -0.7217 2.8548 N.2 1 GESC -0.1810 + 4 C2 0.2924 -1.1452 2.0173 C.2 1 GESC 0.1520 + 5 C3 0.3013 -2.5188 1.4511 C.3 1 GESC 0.1810 + 6 C4 -0.6541 -0.1519 1.8290 C.2 1 GESC -0.1400 + 7 C5 -1.9272 -0.1842 1.0265 C.3 1 GESC 0.1800 + 8 C6 -3.1058 -0.7049 1.8500 C.3 1 GESC 0.2800 + 9 O1 -2.8541 -2.0461 2.2629 O.3 1 GESC -0.6800 + 10 C7 2.4655 -1.5540 3.2764 C.3 1 GESC 0.6575 + 11 N2 5.0116 -0.5866 0.6728 N.2 1 GESC -0.6200 + 12 C8 5.2659 -1.7952 0.1472 C.2 1 GESC 0.4765 + 13 C9 6.2607 -1.8835 -0.9675 C.3 1 GESC 0.1435 + 14 N3 4.7158 -2.9373 0.5945 N.2 1 GESC -0.6200 + 15 C10 3.8561 -2.8526 1.6133 C.2 1 GESC 0.4100 + 16 N4 3.3404 -4.0721 2.0498 N.3 1 GESC -0.9000 + 17 C11 3.4904 -1.6547 2.1947 C.2 1 GESC -0.1435 + 18 C12 4.1294 -0.5431 1.6825 C.2 1 GESC 0.1600 + 19 H1 1.8741 1.0058 3.9945 H 1 GESC 0.1500 + 20 H2 -0.6357 -2.7502 0.9364 H 1 GESC 0.0000 + 21 H3 0.4268 -3.2708 2.2347 H 1 GESC 0.0000 + 22 H4 1.0998 -2.6236 0.7123 H 1 GESC 0.0000 + 23 H5 -2.1626 0.8163 0.6445 H 1 GESC 0.0000 + 24 H6 -1.7774 -0.8289 0.1520 H 1 GESC 0.0000 + 25 H7 -4.0155 -0.6969 1.2411 H 1 GESC 0.0000 + 26 H8 -3.2734 -0.0943 2.7432 H 1 GESC 0.0000 + 27 H9 -3.6878 -2.3832 2.6425 H 1 GESC 0.4000 + 28 H10 6.2508 -0.9671 -1.5654 H 1 GESC 0.0000 + 29 H11 6.0264 -2.7252 -1.6263 H 1 GESC 0.0000 + 30 H12 7.2638 -2.0258 -0.5555 H 1 GESC 0.0000 + 31 H13 3.7225 -4.7750 1.4085 H 1 GESC 0.4000 + 32 H14 3.6676 -4.3104 2.9829 H 1 GESC 0.4000 + 33 H15 3.9543 0.4592 2.0638 H 1 GESC 0.1500 + 34 H16 2.9335 -1.1120 4.1661 H 1 GESC 0.0000 + 35 H17 2.0805 -2.5250 3.6041 H 1 GESC 0.0000 +@BOND + 1 1 6 1 + 2 1 2 1 + 3 2 19 1 + 4 2 3 2 + 5 3 10 1 + 6 3 4 1 + 7 4 6 2 + 8 4 5 1 + 9 5 22 1 + 10 5 21 1 + 11 5 20 1 + 12 6 7 1 + 13 7 24 1 + 14 7 23 1 + 15 7 8 1 + 16 8 26 1 + 17 8 25 1 + 18 8 9 1 + 19 9 27 1 + 20 10 35 1 + 21 10 34 1 + 22 10 17 1 + 23 11 18 1 + 24 11 12 2 + 25 12 14 am + 26 12 13 1 + 27 13 30 1 + 28 13 29 1 + 29 13 28 1 + 30 14 15 2 + 31 15 17 1 + 32 15 16 am + 33 16 32 1 + 34 16 31 1 + 35 17 18 2 + 36 18 33 1 +@SUBSTRUCTURE + 1 GESC 1 +@COMMENT +COMMENT THIAMINE PICRATE (METABOLIC CATALYZING ACTIVITY) +@MOLECULE +GESNIB + 13 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.8342 0.0964 6.3504 C.2 1 UNCH -0.0320 + 2 C2 2.9161 0.8771 6.4815 C.2 1 UNCH -0.1500 + 3 C3 2.8722 1.7396 7.5848 C.2 1 UNCH -0.1500 + 4 C4 1.7536 1.7516 8.4651 C.2 1 UNCH -0.1500 + 5 C5 0.6596 0.9012 8.2571 C.2 1 UNCH -0.1500 + 6 C6 0.7763 0.1077 7.1829 C.2 1 UNCH -0.0320 + 7 C7 0.7462 -0.8098 6.0686 C.3 1 UNCH -0.1360 + 8 H2 3.7540 0.8500 5.7996 H 1 UNCH 0.1500 + 9 H3 3.7051 2.4131 7.7755 H 1 UNCH 0.1500 + 10 H4 1.7520 2.4339 9.3124 H 1 UNCH 0.1500 + 11 H5 -0.2004 0.8922 8.9113 H 1 UNCH 0.1500 + 12 H71 0.0884 -0.6116 5.2299 H 1 UNCH 0.1000 + 13 H7 0.8746 -1.8716 6.2461 H 1 UNCH 0.1000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 8 1 + 6 3 4 2 + 7 3 9 1 + 8 4 5 1 + 9 4 10 1 + 10 5 6 2 + 11 5 11 1 + 12 6 7 1 + 13 7 12 1 + 14 7 13 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1H-CYCLOPROPABENZENE (AT 120 DEG.K) +@MOLECULE +GESSUS + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.7074 3.5913 3.6406 S.1 1 UNCH 1.4470 + 2 O1 2.2676 2.2450 3.3387 O.2 1 UNCH -0.6500 + 3 O2 4.0445 4.0317 3.3009 O.2 1 UNCH -0.6500 + 4 N1 1.5961 4.6820 2.9512 N.3 1 UNCH -0.8494 + 5 C1 2.4906 3.8440 5.3907 C.2 1 UNCH -0.0090 + 6 C2 1.5745 3.0583 6.0947 C.2 1 UNCH -0.1500 + 7 C3 1.4240 3.2422 7.4702 C.2 1 UNCH -0.1500 + 8 C4 2.1877 4.2036 8.1463 C.2 1 UNCH -0.1435 + 9 C5 3.1302 4.9579 7.4338 C.2 1 UNCH -0.1500 + 10 C6 3.2859 4.7791 6.0583 C.2 1 UNCH -0.1500 + 11 C7 2.0514 4.3707 9.6318 C.3 1 UNCH 0.1435 + 12 C8 0.1666 4.3732 3.1241 C.3 1 UNCH 0.3557 + 13 C9 1.9003 6.1164 3.0872 C.3 1 UNCH 0.3557 + 14 H2 0.9851 2.2992 5.5851 H 1 UNCH 0.1500 + 15 H3 0.7133 2.6238 8.0152 H 1 UNCH 0.1500 + 16 H5 3.7560 5.6832 7.9503 H 1 UNCH 0.1500 + 17 H6 4.0306 5.3614 5.5202 H 1 UNCH 0.1500 + 18 H71 2.7407 3.6961 10.1489 H 1 UNCH 0.0000 + 19 H72 2.2724 5.4008 9.9305 H 1 UNCH 0.0000 + 20 H73 1.0291 4.1508 9.9570 H 1 UNCH 0.0000 + 21 H81 -0.0382 3.3173 2.9280 H 1 UNCH 0.0000 + 22 H82 -0.1735 4.6307 4.1310 H 1 UNCH 0.0000 + 23 H83 -0.4227 4.9488 2.4026 H 1 UNCH 0.0000 + 24 H91 1.6622 6.4765 4.0919 H 1 UNCH 0.0000 + 25 H92 2.9506 6.3226 2.8644 H 1 UNCH 0.0000 + 26 H93 1.3062 6.6872 2.3658 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 4 1 + 4 1 5 1 + 5 4 12 1 + 6 4 13 1 + 7 5 6 2 + 8 5 10 1 + 9 6 7 1 + 10 6 14 1 + 11 7 8 2 + 12 7 15 1 + 13 8 9 1 + 14 8 11 1 + 15 9 10 2 + 16 9 16 1 + 17 10 17 1 + 18 11 18 1 + 19 11 19 1 + 20 11 20 1 + 21 12 21 1 + 22 12 22 1 + 23 12 23 1 + 24 13 24 1 + 25 13 25 1 + 26 13 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N-DIMETHYLTOLUENE-P-SULFONAMIDE +@MOLECULE +GETFIU + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0456 4.1189 12.8475 C.2 1 GETF 0.5556 + 2 C2 -0.7647 4.7645 11.7089 C.2 1 GETF -0.0010 + 3 C3 -2.0793 5.4088 11.8733 C.2 1 GETF -0.1356 + 4 C4 -2.6378 5.3480 13.0957 C.2 1 GETF 0.2044 + 5 C5 -2.0127 4.6737 14.2239 C.2 1 GETF -0.1500 + 6 C6 -0.8099 4.0909 14.0991 C.2 1 GETF 0.2188 + 7 N1 -0.1670 4.7381 10.5377 N.1 1 GETF 0.3566 + 8 N2 0.3154 4.7348 9.5050 N.2 1 GETF -0.3700 + 9 N3 -3.9548 5.9883 13.2594 N.2 1 GETF 0.8356 + 10 N4 -0.2534 3.4346 15.2430 N.2 1 GETF 0.8356 + 11 O1 1.0903 3.7145 12.6923 O.2 1 GETF -0.5700 + 12 O2 -4.4278 6.6092 12.2992 O.3 1 GETF -0.5200 + 13 O3 -4.5057 5.8597 14.3594 O.2 1 GETF -0.5200 + 14 O4 -0.1602 4.1018 16.2813 O.3 1 GETF -0.5200 + 15 O5 0.0346 2.2398 15.1209 O.2 1 GETF -0.5200 + 16 H1 -2.5299 5.8935 11.0111 H 1 GETF 0.1500 + 17 H2 -2.5505 4.6458 15.1712 H 1 GETF 0.1500 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 11 2 + 4 2 3 1 + 5 2 7 2 + 6 3 4 2 + 7 3 16 1 + 8 4 5 1 + 9 4 9 1 + 10 5 6 2 + 11 5 17 1 + 12 6 10 1 + 13 7 8 2 + 14 9 12 1 + 15 9 13 2 + 16 10 14 1 + 17 10 15 2 +@SUBSTRUCTURE + 1 GETF 1 +@COMMENT +COMMENT 2-DIAZO-4,6-DINITROPHENOL +@MOLECULE +GETFOA + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.5243 0.8668 2.5977 C.2 1 GETF -0.1710 + 2 C2 3.7762 2.0925 3.2234 C.2 1 GETF 0.1380 + 3 C3 3.0211 3.2466 2.9971 C.2 1 GETF -0.1500 + 4 C4 1.9537 3.1695 2.0919 C.2 1 GETF 0.1330 + 5 C5 1.6288 1.9970 1.4104 C.2 1 GETF 0.1770 + 6 C6 2.4234 0.8683 1.6827 C.2 1 GETF 0.1330 + 7 N1 4.8541 2.1203 4.1178 N.1 1 GETF 1.3540 + 8 N2 5.6615 2.2783 4.8355 N.1 1 GETF -0.4920 + 9 N3 1.1909 4.3790 1.8807 N.2 1 GETF 0.9070 + 10 N4 2.0935 -0.3646 0.9762 N.2 1 GETF 0.9070 + 11 O1 4.2686 -0.1218 2.8770 O.3 1 GETF -0.8290 + 12 O2 1.7778 5.3017 1.3036 O.3 1 GETF -0.5200 + 13 O3 0.0604 4.4229 2.3755 O.2 1 GETF -0.5200 + 14 O4 2.6185 -0.5289 -0.1350 O.3 1 GETF -0.5200 + 15 O5 1.2405 -1.0966 1.4994 O.2 1 GETF -0.5200 + 16 CL1 0.3314 1.9597 0.2635 CL 1 GETF -0.1770 + 17 H1 3.2494 4.1829 3.5036 H 1 GETF 0.1500 +@BOND + 1 1 11 1 + 2 1 6 1 + 3 1 2 2 + 4 2 7 1 + 5 2 3 1 + 6 3 17 1 + 7 3 4 2 + 8 4 9 1 + 9 4 5 1 + 10 5 16 1 + 11 5 6 2 + 12 6 10 1 + 13 7 8 3 + 14 9 13 2 + 15 9 12 1 + 16 10 15 2 + 17 10 14 1 +@SUBSTRUCTURE + 1 GETF 1 +@COMMENT +COMMENT 2-DIAZO-5-CHLORO-4,6-DINITROPHENOL +@MOLECULE +GETJOE + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.3271 0.1831 11.7164 S.3 1 GETJ -0.4960 + 2 P1 4.0174 0.1617 9.6332 P 1 GETJ 1.4213 + 3 S2 5.0241 -1.2011 8.6536 S.3 1 GETJ -0.6773 + 4 S3 4.3422 2.1167 8.8649 S.3 1 GETJ -0.3495 + 5 C1 3.3377 3.1322 9.9075 C.2 1 GETJ 0.1015 + 6 C2 2.0261 3.4420 9.5350 C.2 1 GETJ -0.1500 + 7 C3 1.2570 4.3049 10.3178 C.2 1 GETJ -0.1500 + 8 C4 1.8009 4.8755 11.4668 C.2 1 GETJ -0.1500 + 9 C5 3.1155 4.5905 11.8302 C.2 1 GETJ -0.1500 + 10 C6 3.8853 3.7277 11.0479 C.2 1 GETJ -0.1500 + 11 H1 1.5898 3.0308 8.6272 H 1 GETJ 0.1500 + 12 H2 0.2340 4.5354 10.0309 H 1 GETJ 0.1500 + 13 H3 1.1995 5.5426 12.0798 H 1 GETJ 0.1500 + 14 H4 3.5412 5.0437 12.7222 H 1 GETJ 0.1500 + 15 H5 4.9179 3.5423 11.3355 H 1 GETJ 0.1500 + 16 P1B 2.2544 -0.1617 11.8608 P 1 GETJ 1.4213 + 17 S1B 1.9447 -0.1831 9.7776 S.3 1 GETJ -0.4960 + 18 S2B 1.2478 1.2011 12.8404 S.3 1 GETJ -0.6773 + 19 S3B 1.9296 -2.1167 12.6291 S.3 1 GETJ -0.3495 + 20 C1B 2.9341 -3.1322 11.5865 C.2 1 GETJ 0.1015 + 21 C2B 4.2457 -3.4420 11.9591 C.2 1 GETJ -0.1500 + 22 C6B 2.3865 -3.7277 10.4461 C.2 1 GETJ -0.1500 + 23 C3B 5.0148 -4.3049 11.1762 C.2 1 GETJ -0.1500 + 24 H1B 4.6820 -3.0308 12.8668 H 1 GETJ 0.1500 + 25 C5B 3.1563 -4.5905 9.6638 C.2 1 GETJ -0.1500 + 26 H5B 1.3539 -3.5423 10.1585 H 1 GETJ 0.1500 + 27 C4B 4.4709 -4.8755 10.0272 C.2 1 GETJ -0.1500 + 28 H2B 6.0378 -4.5354 11.4632 H 1 GETJ 0.1500 + 29 H4B 2.7306 -5.0437 8.7718 H 1 GETJ 0.1500 + 30 H3B 5.0722 -5.5426 9.4143 H 1 GETJ 0.1500 +@BOND + 1 1 2 1 + 2 1 16 1 + 3 2 3 1 + 4 2 4 1 + 5 2 17 1 + 6 4 5 1 + 7 5 6 2 + 8 5 10 1 + 9 6 7 1 + 10 6 11 1 + 11 7 8 2 + 12 7 12 1 + 13 8 9 1 + 14 8 13 1 + 15 9 10 2 + 16 9 14 1 + 17 10 15 1 + 18 16 17 1 + 19 16 18 1 + 20 16 19 1 + 21 19 20 1 + 22 20 21 2 + 23 20 22 1 + 24 21 23 1 + 25 21 24 1 + 26 22 25 2 + 27 22 26 1 + 28 23 27 2 + 29 23 28 1 + 30 25 27 1 + 31 25 29 1 + 32 27 30 1 +@SUBSTRUCTURE + 1 GETJ 1 +@COMMENT +COMMENT 2,4-BIS(PHENYLTHIO)-1,3-DITHIA-2LAMBDA-5-,4LAMBDA-5--DIPHOS +@MOLECULE +GEWTAD + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.0050 0.8715 1.6893 N.3 1 GEWT -0.5691 + 2 C1 1.3425 1.4173 1.9756 C.3 1 GEWT 0.4301 + 3 C2 1.1494 2.8559 1.5211 C.2 1 GEWT 0.4946 + 4 O1 1.9867 3.7455 1.5511 O.2 1 GEWT -0.5700 + 5 C3 -0.2254 3.0591 1.0187 C.2 1 GEWT -0.1356 + 6 C4 -0.8007 1.8598 1.1582 C.2 1 GEWT -0.0500 + 7 C5 -0.3085 -0.4687 1.9523 C.2 1 GEWT 0.1000 + 8 C6 -1.5812 -1.0020 1.6837 C.2 1 GEWT -0.1500 + 9 C7 -1.8956 -2.3419 1.9463 C.2 1 GEWT -0.1500 + 10 C8 -0.9388 -3.1902 2.4884 C.2 1 GEWT -0.1500 + 11 C9 0.3292 -2.6968 2.7664 C.2 1 GEWT -0.1500 + 12 C10 0.6361 -1.3559 2.5011 C.2 1 GEWT -0.1500 + 13 H1 1.5717 1.3999 3.0451 H 1 GEWT 0.0000 + 14 H2 2.1175 0.9428 1.3665 H 1 GEWT 0.0000 + 15 H3 -0.6207 3.9813 0.6390 H 1 GEWT 0.1500 + 16 H4 -1.8248 1.6464 0.8833 H 1 GEWT 0.1500 + 17 H5 -2.3670 -0.3850 1.2602 H 1 GEWT 0.1500 + 18 H6 -1.1803 -4.2295 2.6929 H 1 GEWT 0.1500 + 19 H7 1.0861 -3.3514 3.1908 H 1 GEWT 0.1500 + 20 H8 1.6431 -1.0254 2.7385 H 1 GEWT 0.1500 + 21 H9 -2.8916 -2.7162 1.7244 H 1 GEWT 0.1500 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 1 + 4 2 14 1 + 5 2 13 1 + 6 2 3 1 + 7 3 5 1 + 8 3 4 2 + 9 5 15 1 + 10 5 6 2 + 11 6 16 1 + 12 7 12 1 + 13 7 8 2 + 14 8 17 1 + 15 8 9 1 + 16 9 21 1 + 17 9 10 2 + 18 10 18 1 + 19 10 11 1 + 20 11 19 1 + 21 11 12 2 + 22 12 20 1 +@SUBSTRUCTURE + 1 GEWT 1 +@COMMENT +COMMENT 1-PHENYL-1H-PYRROL-3(2H)-ONE +@MOLECULE +GEXGIZ + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -5.6158 0.8601 2.0445 O.2 1 GEXG -0.5700 + 2 O2 -3.6932 1.4738 1.0958 O.3 1 GEXG -0.6500 + 3 O3 0.2521 4.4087 2.9853 O.3 1 GEXG -0.6500 + 4 O4 1.3199 6.1442 2.0791 O.2 1 GEXG -0.5700 + 5 N1 -3.6355 3.8304 2.5457 N.2 1 GEXG -0.7640 + 6 N2 -2.0863 5.0450 1.6489 N.3 1 GEXG -0.7640 + 7 C1 -2.3789 3.8052 2.0733 C.2 1 GEXG 0.6500 + 8 C2 -3.1742 5.8763 1.8562 C.2 1 GEXG 0.2000 + 9 C3 -4.1546 5.1079 2.4184 C.2 1 GEXG 0.2000 + 10 C4 -4.3357 2.6530 3.1007 C.3 1 GEXG 0.5750 + 11 C5 -4.6444 1.5972 2.0494 C.2 1 GEXG 0.6590 + 12 C6 -0.7862 5.4352 1.0640 C.3 1 GEXG 0.5750 + 13 C7 0.3513 5.4033 2.0741 C.2 1 GEXG 0.6590 + 14 H1 -4.0310 0.7488 0.5187 H 1 GEXG 0.5000 + 15 H2 -1.7215 2.9425 2.0406 H 1 GEXG 0.1500 + 16 H3 -3.1129 6.9138 1.5741 H 1 GEXG 0.1500 + 17 H4 -5.1600 5.3093 2.7475 H 1 GEXG 0.1500 + 18 H5 -3.7050 2.2098 3.8772 H 1 GEXG 0.0000 + 19 H6 -5.2775 2.9876 3.5474 H 1 GEXG 0.0000 + 20 H7 -0.5554 4.7478 0.2447 H 1 GEXG 0.0000 + 21 H8 -0.8744 6.4521 0.6686 H 1 GEXG 0.0000 + 22 H9 1.0614 4.5150 3.5389 H 1 GEXG 0.5000 +@BOND + 1 1 11 2 + 2 2 14 1 + 3 2 11 1 + 4 3 22 1 + 5 3 13 1 + 6 4 13 2 + 7 5 10 1 + 8 5 9 1 + 9 5 7 2 + 10 6 12 1 + 11 6 8 1 + 12 6 7 am + 13 7 15 1 + 14 8 16 1 + 15 8 9 2 + 16 9 17 1 + 17 10 19 1 + 18 10 18 1 + 19 10 11 1 + 20 12 21 1 + 21 12 20 1 + 22 12 13 1 +@SUBSTRUCTURE + 1 GEXG 1 +@COMMENT +COMMENT 1,3-BIS(CARBOXYMETHYL)IMIDAZOLE +@MOLECULE +GEYWOW + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.9546 4.6445 3.9490 O.3 1 GEYW -0.7500 + 2 O2 0.6576 0.2302 5.9997 O.3 1 GEYW -0.7500 + 3 O3 2.2594 1.7015 1.4082 O.2 1 GEYW -0.5700 + 4 O4 6.5183 4.0204 1.1500 O.3 1 GEYW -0.6800 + 5 N1 2.4126 3.5762 4.4166 N.2 1 GEYW 0.5710 + 6 N2 1.2118 1.2672 5.5015 N.2 1 GEYW 0.5710 + 7 N3 3.7454 3.3484 1.9362 N.3 1 GEYW -0.7301 + 8 C1 2.2766 2.4161 3.6535 C.2 1 GEYW 0.1757 + 9 C2 1.6962 1.2504 4.1973 C.2 1 GEYW -0.0540 + 10 C3 1.3315 2.4336 6.2867 C.2 1 GEYW 0.0895 + 11 C4 1.9374 3.5871 5.7467 C.2 1 GEYW 0.0895 + 12 C5 2.0496 4.7408 6.5581 C.2 1 GEYW -0.1500 + 13 C6 1.5743 4.7554 7.8696 C.2 1 GEYW -0.1500 + 14 C7 0.9761 3.6195 8.3997 C.2 1 GEYW -0.1500 + 15 C8 0.8555 2.4709 7.6177 C.2 1 GEYW -0.1500 + 16 C9 2.7502 2.4538 2.2427 C.2 1 GEYW 0.5438 + 17 C10 4.2097 3.5395 0.5745 C.3 1 GEYW 0.3001 + 18 C11 5.3646 4.5359 0.4908 C.3 1 GEYW 0.2800 + 19 C12 1.5598 -0.0357 3.4334 C.3 1 GEYW 0.1435 + 20 H1 7.2036 4.7083 1.1034 H 1 GEYW 0.4000 + 21 H2 3.8726 4.1175 2.6041 H 1 GEYW 0.3700 + 22 H3 2.5147 5.6415 6.1558 H 1 GEYW 0.1500 + 23 H4 1.6716 5.6548 8.4740 H 1 GEYW 0.1500 + 24 H5 0.6023 3.6231 9.4215 H 1 GEYW 0.1500 + 25 H6 0.3847 1.5849 8.0458 H 1 GEYW 0.1500 + 26 H7 4.5154 2.5604 0.1893 H 1 GEYW 0.0000 + 27 H8 3.3605 3.8949 -0.0190 H 1 GEYW 0.0000 + 28 H9 5.0934 5.4866 0.9615 H 1 GEYW 0.0000 + 29 H10 5.6249 4.7193 -0.5562 H 1 GEYW 0.0000 + 30 H11 2.5009 -0.2861 2.9327 H 1 GEYW 0.0000 + 31 H12 0.7590 0.0505 2.6925 H 1 GEYW 0.0000 + 32 H13 1.3278 -0.8937 4.0708 H 1 GEYW 0.0000 +@BOND + 1 1 5 1 + 2 2 6 1 + 3 3 16 2 + 4 4 20 1 + 5 4 18 1 + 6 5 11 1 + 7 5 8 2 + 8 6 10 1 + 9 6 9 2 + 10 7 21 1 + 11 7 17 1 + 12 7 16 am + 13 8 16 1 + 14 8 9 1 + 15 9 19 1 + 16 10 15 2 + 17 10 11 1 + 18 11 12 2 + 19 12 22 1 + 20 12 13 1 + 21 13 23 1 + 22 13 14 2 + 23 14 24 1 + 24 14 15 1 + 25 15 25 1 + 26 17 27 1 + 27 17 26 1 + 28 17 18 1 + 29 18 29 1 + 30 18 28 1 + 31 19 32 1 + 32 19 31 1 + 33 19 30 1 +@SUBSTRUCTURE + 1 GEYW 1 +@COMMENT +COMMENT 2-(N-(2-HYDROXYETHYL)CARBOXAMIDE)-3-METHYLQUINOXALINE 1,4-D +@MOLECULE +GICTIV01 + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.6836 1.1208 7.6608 C.2 1 UNCH 0.0365 + 2 C2 6.2457 1.6643 5.7006 C.2 1 UNCH 0.6410 + 3 N1 5.5852 0.5174 5.5035 N.2 1 UNCH -0.7068 + 4 N2 5.2372 0.1918 6.7708 N.3 1 UNCH 0.7256 + 5 N3 6.3266 2.0672 7.0158 N.2 1 UNCH -0.5653 + 6 N4 6.7807 2.3356 4.5932 N.2 1 UNCH -0.1250 + 7 N5 4.4893 -1.0031 7.0579 N.2 1 UNCH 0.8840 + 8 O1 4.2522 -1.1560 8.2603 O.3 1 UNCH -0.5200 + 9 O2 4.1962 -1.6932 6.0794 O.2 1 UNCH -0.5200 + 10 H1 5.5177 1.0597 8.7278 H 1 UNCH 0.1500 + 11 N4B 7.3705 3.3884 4.9101 N.2 1 UNCH -0.1250 + 12 C2B 7.9055 4.0597 3.8027 C.2 1 UNCH 0.6410 + 13 N1B 8.5660 5.2066 3.9998 N.2 1 UNCH -0.7068 + 14 N3B 7.8246 3.6568 2.4875 N.2 1 UNCH -0.5653 + 15 N2B 8.9140 5.5322 2.7325 N.3 1 UNCH 0.7256 + 16 C1B 8.4676 4.6032 1.8425 C.2 1 UNCH 0.0365 + 17 N5B 9.6619 6.7271 2.4454 N.2 1 UNCH 0.8840 + 18 H1B 8.6335 4.6643 0.7755 H 1 UNCH 0.1500 + 19 O1B 9.8990 6.8800 1.2430 O.3 1 UNCH -0.5200 + 20 O2B 9.9550 7.4172 3.4239 O.2 1 UNCH -0.5200 +@BOND + 1 1 4 am + 2 1 5 2 + 3 1 10 1 + 4 2 3 2 + 5 2 5 am + 6 2 6 am + 7 3 4 1 + 8 4 7 1 + 9 6 11 2 + 10 7 8 1 + 11 7 9 2 + 12 11 12 am + 13 12 13 2 + 14 12 14 am + 15 13 15 1 + 16 14 16 2 + 17 15 16 am + 18 15 17 1 + 19 16 18 1 + 20 17 19 1 + 21 17 20 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,1'-DINITRO-3,3'-AZO-1,2,4-TRIAZOLE (YELLOW POLYMORPH) +@MOLECULE +GIDJUY + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 1.5232 2.1109 11.3103 BR 1 GIDJ -0.2300 + 2 C1 4.6228 4.7176 10.8565 C.3 1 GIDJ 0.1220 + 3 C2 4.8024 3.2391 10.4455 C.3 1 GIDJ 0.0000 + 4 C3 3.6839 2.7189 9.5188 C.3 1 GIDJ 0.0000 + 5 C4 2.2830 3.2580 9.8774 C.3 1 GIDJ 0.4300 + 6 C5 2.3502 4.7192 10.3876 C.3 1 GIDJ 0.2800 + 7 O1 3.0009 5.5483 9.3939 O.3 1 GIDJ -0.4300 + 8 C6 4.3609 5.5318 9.6191 C.2 1 GIDJ 0.6590 + 9 O2 5.1828 6.0317 8.8737 O.2 1 GIDJ -0.5700 + 10 C7 3.2914 4.8952 11.5664 C.3 1 GIDJ 0.0000 + 11 O3 6.5933 4.4969 12.2331 O.2 1 GIDJ -0.5700 + 12 C8 5.7712 5.2248 11.6908 C.2 1 GIDJ 0.6590 + 13 O4 5.7344 6.5785 11.8209 O.3 1 GIDJ -0.4300 + 14 C9 6.8076 7.1263 12.5900 C.3 1 GIDJ 0.2800 + 15 C10 1.3734 3.1594 8.7185 C.1 1 GIDJ 0.3571 + 16 N1 0.6569 3.0783 7.8087 N.1 1 GIDJ -0.5571 + 17 H1 4.8338 2.6131 11.3471 H 1 GIDJ 0.0000 + 18 H2 5.7680 3.0979 9.9428 H 1 GIDJ 0.0000 + 19 H3 3.9388 3.0310 8.4954 H 1 GIDJ 0.0000 + 20 H4 3.7069 1.6218 9.4955 H 1 GIDJ 0.0000 + 21 H5 1.3593 5.1342 10.6037 H 1 GIDJ 0.0000 + 22 H6 3.1929 5.9106 11.9736 H 1 GIDJ 0.0000 + 23 H7 3.1402 4.2005 12.3962 H 1 GIDJ 0.0000 + 24 H8 6.7013 8.2145 12.5919 H 1 GIDJ 0.0000 + 25 H9 6.7555 6.7701 13.6234 H 1 GIDJ 0.0000 + 26 H10 7.7721 6.8727 12.1391 H 1 GIDJ 0.0000 +@BOND + 1 1 5 1 + 2 2 3 1 + 3 2 8 1 + 4 2 10 1 + 5 2 12 1 + 6 3 4 1 + 7 3 17 1 + 8 3 18 1 + 9 4 5 1 + 10 4 19 1 + 11 4 20 1 + 12 5 6 1 + 13 5 15 1 + 14 6 7 1 + 15 6 10 1 + 16 6 21 1 + 17 7 8 1 + 18 8 9 2 + 19 10 22 1 + 20 10 23 1 + 21 11 12 2 + 22 12 13 1 + 23 13 14 1 + 24 14 24 1 + 25 14 25 1 + 26 14 26 1 + 27 15 16 3 +@SUBSTRUCTURE + 1 GIDJ 1 +@COMMENT +COMMENT METHYL C-4-BROMO-T-4-CYANO-6-OXABICYCLO(3.2.1)OCTAN-7-ONE-R +@MOLECULE +GIDMEL + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.8084 2.2134 10.1827 N.2 1 GIDM -0.1790 + 2 C1 5.8397 3.0319 10.0028 C.2 1 GIDM 0.7710 + 3 N2 6.7237 3.2060 11.0483 N.3 1 GIDM -0.9000 + 4 N3 6.0542 3.7178 8.8758 N.2 1 GIDM -0.6200 + 5 C2 5.1734 3.5414 7.8784 C.2 1 GIDM 0.4100 + 6 N4 5.4054 4.2994 6.7386 N.3 1 GIDM -0.9000 + 7 C3 4.0529 2.7015 7.9922 C.2 1 GIDM 0.0000 + 8 C4 3.0771 2.5064 6.9867 C.2 1 GIDM -0.1500 + 9 C5 1.9838 1.6580 7.1922 C.2 1 GIDM 0.1790 + 10 N5 1.0561 1.4456 6.1682 N.2 1 GIDM -0.4969 + 11 N6 0.0640 2.1988 6.2530 N.1 1 GIDM 0.6879 + 12 N7 -0.8373 2.8904 6.3427 N.2 1 GIDM -0.3700 + 13 C6 1.8677 0.9790 8.4085 C.2 1 GIDM -0.1500 + 14 C7 2.8133 1.1640 9.4214 C.2 1 GIDM -0.1500 + 15 C8 3.9013 2.0224 9.2166 C.2 1 GIDM 0.3610 + 16 H1 4.7119 1.7833 11.0938 H 1 GIDM 0.4570 + 17 H2 7.1122 2.3641 11.4572 H 1 GIDM 0.4000 + 18 H3 7.4631 3.8432 10.7463 H 1 GIDM 0.4000 + 19 H4 6.2646 4.8375 6.8356 H 1 GIDM 0.4000 + 20 H5 5.3989 3.7750 5.8691 H 1 GIDM 0.4000 + 21 H6 3.1610 3.0238 6.0311 H 1 GIDM 0.1500 + 22 H7 1.0316 0.2971 8.5644 H 1 GIDM 0.1500 + 23 H8 2.6820 0.6247 10.3570 H 1 GIDM 0.1500 +@BOND + 1 1 16 1 + 2 1 15 1 + 3 1 2 2 + 4 2 4 am + 5 2 3 am + 6 3 18 1 + 7 3 17 1 + 8 4 5 2 + 9 5 7 1 + 10 5 6 am + 11 6 20 1 + 12 6 19 1 + 13 7 15 2 + 14 7 8 1 + 15 8 21 1 + 16 8 9 2 + 17 9 13 1 + 18 9 10 1 + 19 10 11 2 + 20 11 12 2 + 21 13 22 1 + 22 13 14 2 + 23 14 23 1 + 24 14 15 1 +@SUBSTRUCTURE + 1 GIDM 1 +@COMMENT +COMMENT 2,4-DIAMINO-6-AZIDOQUINAZOLINE HYDROCHLORIDE (DIHYDROFOLATE +@MOLECULE +GIDTIW + 37 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.9475 8.5654 -0.2556 O.2 1 GIDP -0.5700 + 2 O2 -2.4642 12.6508 3.1262 O.2 1 GIDP -0.5700 + 3 O3 1.4659 11.7523 3.7080 O.2 1 GIDP -0.5700 + 4 O4 -1.4925 3.7326 -1.5638 O.3 1 GIDP -0.6800 + 5 O5 -1.5591 7.0099 -3.0823 O.3 1 GIDP -0.5600 + 6 O6 -4.3040 5.8929 -2.7154 O.3 1 GIDP -0.6800 + 7 N1 -1.1675 8.2676 -1.0880 N.3 1 GIDP -0.4691 + 8 N2 -0.6873 9.8499 0.6320 N.2 1 GIDP -0.6610 + 9 N3 -2.4386 11.1007 1.4969 N.3 1 GIDP -0.4900 + 10 N4 -0.4255 11.8062 2.4553 N.3 1 GIDP -0.4900 + 11 N5 -0.0491 13.3529 4.1353 N.3 1 GIDP -0.8000 + 12 C1 -0.2390 8.8811 -0.2386 C.2 1 GIDP 0.8410 + 13 C2 -1.9405 10.1364 0.6411 C.2 1 GIDP 0.4956 + 14 C3 -2.9709 9.5121 -0.1991 C.2 1 GIDP -0.1356 + 15 C4 -2.5082 8.5861 -1.0382 C.2 1 GIDP -0.0410 + 16 C5 -1.7918 11.8928 2.4259 C.2 1 GIDP 0.6900 + 17 C6 0.3885 12.2742 3.4446 C.2 1 GIDP 0.6900 + 18 C7 -0.6502 7.2341 -1.9820 C.3 1 GIDP 0.5801 + 19 C8 -0.4412 5.8917 -1.2861 C.3 1 GIDP 0.0000 + 20 C9 -1.6926 5.1325 -1.6570 C.3 1 GIDP 0.2800 + 21 C10 -1.9032 5.6100 -3.0875 C.3 1 GIDP 0.2800 + 22 C11 -3.3188 5.4014 -3.6244 C.3 1 GIDP 0.2800 + 23 H1 -2.3720 3.3160 -1.5363 H 1 GIDP 0.4000 + 24 H2 -5.1590 5.8430 -3.1792 H 1 GIDP 0.4000 + 25 H3 -3.4342 11.2727 1.5077 H 1 GIDP 0.3700 + 26 H4 -0.0334 11.0087 1.9624 H 1 GIDP 0.3700 + 27 H5 0.4825 13.5853 4.9624 H 1 GIDP 0.3700 + 28 H6 -1.0530 13.5043 4.1777 H 1 GIDP 0.3700 + 29 H7 -4.0141 9.7850 -0.1419 H 1 GIDP 0.1500 + 30 H8 -3.1806 8.0619 -1.7103 H 1 GIDP 0.1500 + 31 H9 0.2958 7.5888 -2.4078 H 1 GIDP 0.0000 + 32 H10 -0.2888 5.9578 -0.2043 H 1 GIDP 0.0000 + 33 H11 0.4393 5.3836 -1.7004 H 1 GIDP 0.0000 + 34 H12 -2.5079 5.4274 -0.9866 H 1 GIDP 0.0000 + 35 H13 -1.2049 5.1076 -3.7696 H 1 GIDP 0.0000 + 36 H14 -3.5133 4.3362 -3.7835 H 1 GIDP 0.0000 + 37 H15 -3.4438 5.9363 -4.5715 H 1 GIDP 0.0000 +@BOND + 1 1 12 2 + 2 2 16 2 + 3 3 17 2 + 4 4 20 1 + 5 4 23 1 + 6 5 18 1 + 7 5 21 1 + 8 6 22 1 + 9 6 24 1 + 10 7 12 am + 11 7 15 1 + 12 7 18 1 + 13 8 12 am + 14 8 13 2 + 15 9 13 am + 16 9 16 am + 17 9 25 1 + 18 10 16 am + 19 10 17 am + 20 10 26 1 + 21 11 17 am + 22 11 27 1 + 23 11 28 1 + 24 13 14 1 + 25 14 15 2 + 26 14 29 1 + 27 15 30 1 + 28 18 19 1 + 29 18 31 1 + 30 19 20 1 + 31 19 32 1 + 32 19 33 1 + 33 20 21 1 + 34 20 34 1 + 35 21 22 1 + 36 21 35 1 + 37 22 36 1 + 38 22 37 1 +@SUBSTRUCTURE + 1 GIDP 1 +@COMMENT +COMMENT N-4--(UREIDOCARBONYL)-2'DEOXYCYTIDINE +@MOLECULE +GIFRAO + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N3 10.4241 0.2002 -1.2780 N.3 1 GIFR -0.9000 + 2 C14 10.4759 1.0696 -0.1745 C.2 1 GIFR 0.1000 + 3 C15 9.4547 2.0050 0.0316 C.2 1 GIFR -0.1500 + 4 C16 9.4462 2.8089 1.1740 C.2 1 GIFR -0.1500 + 5 C17 10.4388 2.6363 2.1388 C.2 1 GIFR -0.0090 + 6 C18 11.4303 1.6705 1.9779 C.2 1 GIFR -0.1500 + 7 C19 11.4283 0.8713 0.8321 C.2 1 GIFR -0.1500 + 8 S1 10.4396 3.7196 3.5989 S.1 1 GIFR 0.8491 + 9 O1 11.7923 3.5615 4.1382 O.2 1 GIFR -0.6500 + 10 O2 10.2300 5.0264 2.9654 O.2 1 GIFR -0.6500 + 11 N4 9.2413 3.2791 4.5427 N.3 1 GIFR -0.2881 + 12 C20 9.1098 2.0509 5.0622 C.2 1 GIFR 0.3680 + 13 N5 8.0064 1.8689 5.8151 N.2 1 GIFR -0.6200 + 14 C21 7.8146 0.6483 6.3516 C.2 1 GIFR 0.1665 + 15 C22 8.6931 -0.3960 6.1507 C.2 1 GIFR -0.1500 + 16 C23 9.7932 -0.1257 5.3650 C.2 1 GIFR 0.1665 + 17 N6 10.0086 1.0848 4.8196 N.2 1 GIFR -0.6200 + 18 C24 6.5892 0.4567 7.1895 C.3 1 GIFR 0.1435 + 19 C25 10.8060 -1.1894 5.0786 C.3 1 GIFR 0.1435 + 20 H12 9.9560 0.6179 -2.0751 H 1 GIFR 0.4000 + 21 H13 11.3367 -0.1741 -1.5149 H 1 GIFR 0.4000 + 22 H14 8.6608 2.1257 -0.6983 H 1 GIFR 0.1500 + 23 H15 8.6746 3.5587 1.3218 H 1 GIFR 0.1500 + 24 H16 12.1782 1.5305 2.7529 H 1 GIFR 0.1500 + 25 H17 12.1834 0.0983 0.7349 H 1 GIFR 0.1500 + 26 H18 8.5289 -1.3718 6.5838 H 1 GIFR 0.1500 + 27 H19 6.8678 0.1666 8.2073 H 1 GIFR 0.0000 + 28 H20 6.0060 1.3815 7.2474 H 1 GIFR 0.0000 + 29 H21 5.9518 -0.3204 6.7561 H 1 GIFR 0.0000 + 30 H22 11.2413 -1.5596 6.0120 H 1 GIFR 0.0000 + 31 H23 10.3386 -2.0226 4.5447 H 1 GIFR 0.0000 + 32 H24 11.6183 -0.7998 4.4564 H 1 GIFR 0.0000 +@BOND + 1 1 2 1 + 2 1 20 1 + 3 1 21 1 + 4 2 3 2 + 5 2 7 1 + 6 3 4 1 + 7 3 22 1 + 8 4 5 2 + 9 4 23 1 + 10 5 6 1 + 11 5 8 1 + 12 6 7 2 + 13 6 24 1 + 14 7 25 1 + 15 8 9 2 + 16 8 10 2 + 17 8 11 1 + 18 11 12 am + 19 12 13 am + 20 12 17 2 + 21 13 14 2 + 22 14 15 1 + 23 14 18 1 + 24 15 16 2 + 25 15 26 1 + 26 16 17 1 + 27 16 19 1 + 28 18 27 1 + 29 18 28 1 + 30 18 29 1 + 31 19 30 1 + 32 19 31 1 + 33 19 32 1 +@SUBSTRUCTURE + 1 GIFR 1 +@COMMENT +COMMENT 9-AMINOACRIDINIUM N-1--(4,6-DIMETHYL-2-PYRIMIDINYL)SULFANIL +@MOLECULE +GIGCEE + 26 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.2590 7.9378 6.7152 C.2 1 GIGC -0.3016 + 2 C2 6.6206 7.9426 7.9387 C.2 1 GIGC -0.1500 + 3 C3 6.4184 6.5972 8.3100 C.2 1 GIGC -0.1500 + 4 C4 7.1090 4.4055 7.2066 C.2 1 GIGC 0.4750 + 5 N1 7.6777 3.8596 6.1805 N.2 1 GIGC -0.6290 + 6 C5 8.7494 4.0716 4.0604 C.2 1 GIGC -0.1500 + 7 C6 9.1711 4.8158 2.9617 C.2 1 GIGC -0.1500 + 8 N2 9.3076 6.7619 1.7129 N.2 1 GIGC -0.6200 + 9 C7 8.9963 8.0560 1.5157 C.2 1 GIGC 0.1600 + 10 C8 8.2630 8.7986 2.4096 C.2 1 GIGC -0.1500 + 11 C9 7.8583 8.1799 3.5894 C.2 1 GIGC -0.1500 + 12 N3 7.3616 6.6395 6.2695 N.3 1 GIGC 0.3262 + 13 C10 6.9447 5.8214 7.2999 C.2 1 GIGC -0.2366 + 14 C11 8.0961 4.6905 5.1182 C.2 1 GIGC 0.1790 + 15 C12 8.9034 6.1684 2.8481 C.2 1 GIGC 0.3100 + 16 C13 8.2076 6.8368 3.8864 C.2 1 GIGC 0.0000 + 17 C14 7.8834 6.0884 5.0661 C.2 1 GIGC -0.0230 + 18 H1 7.6747 8.7722 6.1754 H 1 GIGC 0.1500 + 19 H2 6.3845 8.8228 8.5237 H 1 GIGC 0.1500 + 20 H3 5.9894 6.2363 9.2363 H 1 GIGC 0.1500 + 21 H4 6.7639 3.7684 8.0373 H 1 GIGC 0.0600 + 22 H5 8.9387 3.0017 4.0942 H 1 GIGC 0.1500 + 23 H6 9.6939 4.3123 2.1510 H 1 GIGC 0.1500 + 24 H7 9.3461 8.4816 0.5798 H 1 GIGC 0.1500 + 25 H8 7.9957 9.8265 2.1932 H 1 GIGC 0.1500 + 26 H9 7.2123 8.7570 4.2393 H 1 GIGC 0.1500 +@BOND + 1 1 18 1 + 2 1 12 1 + 3 1 2 2 + 4 2 19 1 + 5 2 3 1 + 6 3 20 1 + 7 3 13 2 + 8 4 21 1 + 9 4 13 1 + 10 4 5 2 + 11 5 14 1 + 12 6 22 1 + 13 6 14 1 + 14 6 7 2 + 15 7 23 1 + 16 7 15 1 + 17 8 15 1 + 18 8 9 2 + 19 9 24 1 + 20 9 10 1 + 21 10 25 1 + 22 10 11 2 + 23 11 26 1 + 24 11 16 1 + 25 12 17 1 + 26 12 13 1 + 27 14 17 2 + 28 15 16 2 + 29 16 17 1 +@SUBSTRUCTURE + 1 GIGC 1 +@COMMENT +COMMENT PYRIDO(2,3-H)PYRROLO(1,2-A)QUINOXALINE 7,7,8,8-TETRACYANO-P +@MOLECULE +GIGMUE + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.2269 4.3601 4.8825 S.3 1 GIGM -0.0800 + 2 S2 7.6522 2.9723 8.1004 S.3 1 GIGM -0.4600 + 3 S3 4.4776 0.5403 6.1703 S.3 1 GIGM -0.4600 + 4 S4 4.8927 2.4261 2.1418 S.3 1 GIGM -0.4600 + 5 C1 8.4521 3.2917 5.4218 C.2 1 GIGM -0.1400 + 6 C2 8.9095 2.5016 4.3837 C.2 1 GIGM -0.1500 + 7 C3 8.1356 2.6619 3.1994 C.2 1 GIGM -0.1500 + 8 C4 7.0970 3.5550 3.3761 C.2 1 GIGM -0.1400 + 9 C5 8.9348 3.3042 6.8400 C.3 1 GIGM 0.4100 + 10 C6 6.8003 1.5104 7.3933 C.3 1 GIGM 0.2300 + 11 C7 5.3412 1.8625 7.0942 C.3 1 GIGM 0.2300 + 12 C8 5.0431 0.9061 4.4665 C.3 1 GIGM 0.2300 + 13 C9 4.2890 2.0807 3.8396 C.3 1 GIGM 0.2300 + 14 C10 5.9698 3.8755 2.4478 C.3 1 GIGM 0.4100 + 15 H1 9.7269 1.7966 4.4833 H 1 GIGM 0.1500 + 16 H2 8.2833 2.0904 2.2899 H 1 GIGM 0.1500 + 17 H3 9.3833 4.2780 7.0666 H 1 GIGM 0.0000 + 18 H4 9.7241 2.5560 6.9743 H 1 GIGM 0.0000 + 19 H5 7.3306 1.1384 6.5142 H 1 GIGM 0.0000 + 20 H6 6.8398 0.7168 8.1477 H 1 GIGM 0.0000 + 21 H7 4.7988 1.9928 8.0378 H 1 GIGM 0.0000 + 22 H8 5.2403 2.7989 6.5416 H 1 GIGM 0.0000 + 23 H9 6.1225 1.0608 4.4853 H 1 GIGM 0.0000 + 24 H10 4.8612 -0.0005 3.8781 H 1 GIGM 0.0000 + 25 H11 4.3453 2.9908 4.4424 H 1 GIGM 0.0000 + 26 H12 3.2276 1.8241 3.7472 H 1 GIGM 0.0000 + 27 H13 5.3459 4.6971 2.8152 H 1 GIGM 0.0000 + 28 H14 6.3783 4.1929 1.4821 H 1 GIGM 0.0000 +@BOND + 1 1 5 1 + 2 1 8 1 + 3 2 9 1 + 4 2 10 1 + 5 3 11 1 + 6 3 12 1 + 7 4 13 1 + 8 4 14 1 + 9 5 6 2 + 10 5 9 1 + 11 6 7 1 + 12 6 15 1 + 13 7 8 2 + 14 7 16 1 + 15 8 14 1 + 16 9 17 1 + 17 9 18 1 + 18 10 11 1 + 19 10 19 1 + 20 10 20 1 + 21 11 21 1 + 22 11 22 1 + 23 12 13 1 + 24 12 23 1 + 25 12 24 1 + 26 13 25 1 + 27 13 26 1 + 28 14 27 1 + 29 14 28 1 +@SUBSTRUCTURE + 1 GIGM 1 +@COMMENT +COMMENT 2,5,8-TRITHIA(9)(2,5)THIOPHENOPHANE +@MOLECULE +GIHZEC + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.7695 1.3304 10.0203 O.2 1 UNCH -0.5700 + 2 O2 0.9093 0.9370 5.5856 O.2 1 UNCH -0.5700 + 3 O3 -0.7187 1.1408 7.1986 O.3 1 UNCH -0.4300 + 4 O4 0.9047 -2.2083 7.2005 O.2 1 UNCH -0.5700 + 5 O5 -0.4390 -1.5548 8.9499 O.3 1 UNCH -0.4300 + 6 C1 1.4989 0.8745 7.8429 C.3 1 UNCH 0.0000 + 7 C2 1.5627 -0.4456 8.5862 C.3 1 UNCH 0.0000 + 8 C3 2.7923 0.1746 8.0379 C.3 1 UNCH -0.1000 + 9 C4 1.4291 0.8338 9.3234 C.3 1 UNCH -0.1000 + 10 C5 2.8937 0.8964 9.3088 C.2 1 UNCH 0.5700 + 11 C6 0.5537 0.9767 6.7522 C.2 1 UNCH 0.7200 + 12 C7 -1.6859 1.2421 6.1527 C.3 1 UNCH 0.2800 + 13 C8 0.6606 -1.4908 8.1569 C.2 1 UNCH 0.7200 + 14 C9 -1.3684 -2.5686 8.5659 C.3 1 UNCH 0.2800 + 15 H1 3.4816 -0.1891 7.3159 H 1 UNCH 0.1000 + 16 H2 0.6668 1.1665 9.9838 H 1 UNCH 0.1000 + 17 H3 -2.6708 1.3603 6.6128 H 1 UNCH 0.0000 + 18 H4 -1.4865 2.1196 5.5297 H 1 UNCH 0.0000 + 19 H5 -1.6936 0.3295 5.5483 H 1 UNCH 0.0000 + 20 H6 -0.9057 -3.5583 8.6324 H 1 UNCH 0.0000 + 21 H7 -2.2133 -2.5338 9.2591 H 1 UNCH 0.0000 + 22 H8 -1.7425 -2.3816 7.5543 H 1 UNCH 0.0000 +@BOND + 1 1 10 2 + 2 2 11 2 + 3 3 11 1 + 4 3 12 1 + 5 4 13 2 + 6 5 13 1 + 7 5 14 1 + 8 6 7 1 + 9 6 8 1 + 10 6 9 1 + 11 6 11 1 + 12 7 8 1 + 13 7 9 1 + 14 7 13 1 + 15 8 10 1 + 16 8 15 1 + 17 9 10 1 + 18 9 16 1 + 19 12 17 1 + 20 12 18 1 + 21 12 19 1 + 22 14 20 1 + 23 14 21 1 + 24 14 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DIMETHYL 3-OXOTRICYCLO(2.1.0.0-2,5-)PENTANE-1,5-DICARBOXYLA +@MOLECULE +GIJMOB01 + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.1583 0.6547 1.7257 S.1 1 GIJM 0.8491 + 2 O1 6.8527 1.3616 0.4872 O.2 1 GIJM -0.6500 + 3 N1 6.8858 -0.9268 1.7257 N.3 1 GIJM -0.3201 + 4 C1 8.0495 -1.6000 1.7257 C.2 1 GIJM 0.2638 + 5 O2 8.2236 -2.8174 1.7257 O.2 1 GIJM -0.5700 + 6 C2 9.2420 -0.7336 1.7257 C.2 1 GIJM 0.0862 + 7 C3 10.5714 -1.1086 1.7257 C.2 1 GIJM 0.0825 + 8 O3 10.9459 -2.4208 1.7257 O.3 1 GIJM -0.5325 + 9 C4 11.5472 -0.1116 1.7257 C.2 1 GIJM -0.1500 + 10 C5 11.1732 1.2496 1.7257 C.2 1 GIJM -0.1500 + 11 C6 9.8244 1.6200 1.7257 C.2 1 GIJM -0.1500 + 12 C7 8.9017 0.5963 1.7257 C.2 1 GIJM -0.0090 + 13 O1G 6.8527 1.3616 2.9642 O.2 1 GIJM -0.6500 + 14 H1 10.0988 -2.9290 1.7257 H 1 GIJM 0.4500 + 15 H2 12.5973 -0.3878 1.7257 H 1 GIJM 0.1500 + 16 H3 11.9417 2.0178 1.7257 H 1 GIJM 0.1500 + 17 H4 9.5018 2.6543 1.7257 H 1 GIJM 0.1500 +@BOND + 1 1 13 2 + 2 1 12 1 + 3 1 3 1 + 4 1 2 2 + 5 3 4 am + 6 4 6 1 + 7 4 5 2 + 8 6 12 1 + 9 6 7 2 + 10 7 9 1 + 11 7 8 1 + 12 8 14 1 + 13 9 15 1 + 14 9 10 2 + 15 10 16 1 + 16 10 11 1 + 17 11 17 1 + 18 11 12 2 +@SUBSTRUCTURE + 1 GIJM 1 +@COMMENT +COMMENT SODIUM 4-HYDROXY-1,2-BENZISOTHIAZOL-3(2H)-ONE 1,1-DIOXIDE M +@MOLECULE +GIKJIT + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.0239 2.1875 2.0026 C.2 1 GIJY -0.1050 + 2 C2 2.4482 1.4075 0.9882 C.2 1 GIJY -0.1356 + 3 C3 3.6905 2.0071 0.4463 C.2 1 GIJY 0.5646 + 4 O1 4.4219 1.6654 -0.4577 O.2 1 GIJY -0.5700 + 5 N1 3.8773 3.1252 1.2305 N.3 1 GIJY 0.2942 + 6 C4 4.7853 4.1382 1.3186 C.2 1 GIJY -0.3016 + 7 C5 4.3510 4.9367 2.3570 C.2 1 GIJY 0.0570 + 8 BR1 5.1736 6.5007 2.9810 BR 1 GIJY -0.0570 + 9 C6 3.1570 4.3967 2.9083 C.2 1 GIJY -0.1500 + 10 C7 2.9036 3.2702 2.1732 C.2 1 GIJY -0.1966 + 11 H1 1.1401 2.0151 2.6022 H 1 GIJY 0.1500 + 12 H2 2.0068 0.5065 0.6013 H 1 GIJY 0.1500 + 13 H3 5.6351 4.1977 0.6526 H 1 GIJY 0.1500 + 14 H4 2.5716 4.7869 3.7302 H 1 GIJY 0.1500 +@BOND + 1 1 2 2 + 2 1 10 1 + 3 1 11 1 + 4 2 3 1 + 5 2 12 1 + 6 3 4 2 + 7 3 5 am + 8 5 6 1 + 9 5 10 1 + 10 6 7 2 + 11 6 13 1 + 12 7 8 1 + 13 7 9 1 + 14 9 10 2 + 15 9 14 1 +@SUBSTRUCTURE + 1 GIJY 1 +@COMMENT +COMMENT 6-BROMOPYRROLIZIN-3-ONE +@MOLECULE +GIKNOD + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.2575 0.2398 7.3294 S.3 1 UNCH -0.3315 + 2 C1 0.5210 1.6838 8.4368 C.3 1 UNCH 0.1240 + 3 C2 0.3810 1.3417 9.9339 C.3 1 UNCH 0.5030 + 4 N1 0.8851 2.4757 10.7757 N.3 1 UNCH -0.8530 + 5 C3 1.0937 0.0758 10.4195 C.3 1 UNCH 0.0000 + 6 C4 1.9164 2.2586 8.1035 C.2 1 UNCH 0.9060 + 7 O1 2.6301 2.4744 9.1421 O.2 1 UNCH -0.9000 + 8 O2 2.1358 2.6031 6.9184 O.3 1 UNCH -0.9000 + 9 C5 -1.5042 0.0428 7.5063 C.2 1 UNCH 0.1015 + 10 C6 -2.0135 -1.1257 8.0798 C.2 1 UNCH -0.1500 + 11 C7 -3.3912 -1.2891 8.2387 C.2 1 UNCH -0.1500 + 12 C8 -4.2657 -0.2893 7.8153 C.2 1 UNCH -0.1500 + 13 C9 -3.7646 0.8697 7.2246 C.2 1 UNCH -0.1500 + 14 C10 -2.3871 1.0335 7.0663 C.2 1 UNCH -0.1500 + 15 H1 -0.1932 2.4758 8.1803 H 1 UNCH 0.0000 + 16 H2 -0.6815 1.2570 10.1900 H 1 UNCH 0.0000 + 17 H3 0.4125 3.3635 10.5934 H 1 UNCH 0.4500 + 18 H4 0.9643 2.2837 11.7740 H 1 UNCH 0.4500 + 19 H5 1.8719 2.6342 10.4150 H 1 UNCH 0.4500 + 20 H6 1.0120 -0.0228 11.5082 H 1 UNCH 0.0000 + 21 H7 2.1587 0.0796 10.1670 H 1 UNCH 0.0000 + 22 H8 0.6472 -0.8263 9.9912 H 1 UNCH 0.0000 + 23 H9 -1.3440 -1.9220 8.3968 H 1 UNCH 0.1500 + 24 H10 -3.7825 -2.2028 8.6791 H 1 UNCH 0.1500 + 25 H11 -5.3390 -0.4218 7.9275 H 1 UNCH 0.1500 + 26 H12 -4.4462 1.6394 6.8709 H 1 UNCH 0.1500 + 27 H13 -2.0105 1.9298 6.5771 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 2 3 1 + 4 2 6 1 + 5 2 15 1 + 6 3 4 1 + 7 3 5 1 + 8 3 16 1 + 9 4 17 1 + 10 4 18 1 + 11 4 19 1 + 12 5 20 1 + 13 5 21 1 + 14 5 22 1 + 15 6 7 2 + 16 6 8 1 + 17 9 10 2 + 18 9 14 1 + 19 10 11 1 + 20 10 23 1 + 21 11 12 2 + 22 11 24 1 + 23 12 13 1 + 24 12 25 1 + 25 13 14 2 + 26 13 26 1 + 27 14 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (2S,3R)-3-AMINO-2-PHENYLTHIOBUTANOIC ACID +@MOLECULE +GIKTUP + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2188 1.7878 5.9046 C.3 1 UNCH 0.6982 + 2 C2 0.8664 1.5195 5.8635 C.2 1 UNCH -0.0733 + 3 C3 0.8992 1.6037 4.5286 C.2 1 UNCH -0.1238 + 4 C4 2.2085 1.6968 3.8152 C.3 1 UNCH 0.6982 + 5 C5 3.1078 3.7842 4.4796 C.2 1 UNCH -0.0733 + 6 C6 3.4385 3.2449 5.6586 C.2 1 UNCH -0.1238 + 7 C7 -0.3445 1.5458 3.7485 C.2 1 UNCH 0.4956 + 8 C8 4.0740 4.0641 6.6996 C.2 1 UNCH 0.4956 + 9 O1 1.9976 1.5718 6.6478 O.3 1 UNCH -0.3567 + 10 O2 2.5067 3.0682 3.4680 O.3 1 UNCH -0.3567 + 11 O3 3.2219 1.1060 4.6419 O.3 1 UNCH -0.5600 + 12 O4 -0.3534 1.5587 2.5245 O.2 1 UNCH -0.5700 + 13 O5 4.4465 3.5961 7.7677 O.2 1 UNCH -0.5700 + 14 H1 4.0383 1.3607 6.4916 H 1 UNCH 0.0000 + 15 H2 -0.0207 1.4119 6.4736 H 1 UNCH 0.1500 + 16 H3 2.1904 1.1207 2.8844 H 1 UNCH 0.0000 + 17 H4 3.2577 4.8147 4.1858 H 1 UNCH 0.1500 + 18 H5 -1.2788 1.4832 4.3316 H 1 UNCH 0.0600 + 19 H6 4.2043 5.1333 6.4615 H 1 UNCH 0.0600 +@BOND + 1 1 6 1 + 2 1 9 1 + 3 1 11 1 + 4 1 14 1 + 5 2 3 2 + 6 2 9 1 + 7 2 15 1 + 8 3 4 1 + 9 3 7 1 + 10 4 10 1 + 11 4 11 1 + 12 4 16 1 + 13 5 6 2 + 14 5 10 1 + 15 5 17 1 + 16 6 8 1 + 17 7 12 2 + 18 7 18 1 + 19 8 13 2 + 20 8 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,6,9-TRIOXABICYCLO(3.3.1)NONA-3,7-DIENE-4,8-DICARBALDEHYDE +@MOLECULE +GIMJIV + 27 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 3.3424 10.2951 9.5582 CL 1 GILY -0.2900 + 2 CL3 1.6724 12.5083 5.1010 CL 1 GILY -0.2090 + 3 CL4 4.7247 13.6586 5.4436 CL 1 GILY -0.2900 + 4 CL11 3.4715 13.6273 8.6356 CL 1 GILY -0.2900 + 5 N1 2.3525 11.0703 7.1896 N.2 1 GILY -0.6960 + 6 C1 3.6297 10.8955 7.9391 C.3 1 GILY 0.5360 + 7 C3 2.7421 11.9124 6.2705 C.2 1 GILY 0.5980 + 8 C4 4.2057 12.2367 6.3078 C.3 1 GILY 0.3510 + 9 C5 5.0271 10.9658 5.9784 C.3 1 GILY 0.0000 + 10 C6 4.7505 10.1047 4.7248 C.3 1 GILY 0.0000 + 11 C7 5.8587 9.0245 4.6706 C.3 1 GILY 0.0000 + 12 C8 5.4771 8.0784 5.8321 C.3 1 GILY 0.0000 + 13 C9 4.1933 8.7288 6.4033 C.3 1 GILY 0.0000 + 14 C10 4.6278 10.0140 7.1404 C.3 1 GILY 0.0000 + 15 C11 4.3210 12.2769 7.8394 C.3 1 GILY 0.2900 + 16 C12 3.5616 9.2129 5.0970 C.3 1 GILY 0.0000 + 17 H5 6.0973 11.2073 6.0440 H 1 GILY 0.0000 + 18 H6 4.6493 10.6727 3.7984 H 1 GILY 0.0000 + 19 H71 5.8275 8.4817 3.7188 H 1 GILY 0.0000 + 20 H72 6.8647 9.4387 4.7911 H 1 GILY 0.0000 + 21 H81 5.2667 7.0748 5.4448 H 1 GILY 0.0000 + 22 H82 6.2779 7.9943 6.5737 H 1 GILY 0.0000 + 23 H9 3.5874 8.0467 7.0020 H 1 GILY 0.0000 + 24 H10 5.5056 9.8103 7.7700 H 1 GILY 0.0000 + 25 H11 5.3550 12.2749 8.2039 H 1 GILY 0.0000 + 26 H121 2.6070 9.7169 5.2055 H 1 GILY 0.0000 + 27 H122 3.4048 8.3991 4.3774 H 1 GILY 0.0000 +@BOND + 1 1 6 1 + 2 2 7 1 + 3 3 8 1 + 4 4 15 1 + 5 5 6 1 + 6 5 7 2 + 7 6 14 1 + 8 6 15 1 + 9 7 8 1 + 10 8 9 1 + 11 8 15 1 + 12 9 10 1 + 13 9 14 1 + 14 9 17 1 + 15 10 11 1 + 16 10 16 1 + 17 10 18 1 + 18 11 12 1 + 19 11 19 1 + 20 11 20 1 + 21 12 13 1 + 22 12 21 1 + 23 12 22 1 + 24 13 14 1 + 25 13 16 1 + 26 13 23 1 + 27 14 24 1 + 28 15 25 1 + 29 16 26 1 + 30 16 27 1 +@SUBSTRUCTURE + 1 GILY 1 +@COMMENT +COMMENT 2,4,5,11-TETRACHLORO-2,5,7,10-DIMETHANO-3-AZABICYCLO(4.4.0) +@MOLECULE +GINMUL + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.4438 3.5337 5.4708 S.3 1 UNCH -0.2420 + 2 O1 4.5352 3.7409 8.2995 O.2 1 UNCH -0.5700 + 3 O2 1.6355 8.4382 7.3275 O.2 1 UNCH -0.5700 + 4 O3 2.7423 9.9471 6.0002 O.3 1 UNCH -0.4300 + 5 N1 2.6413 3.5888 7.0158 N.2 1 UNCH -0.6610 + 6 N2 2.0470 5.5603 5.7626 N.3 1 UNCH -0.2500 + 7 C1 3.1345 6.2800 6.2449 C.2 1 UNCH -0.0382 + 8 C2 3.9741 5.6648 7.0993 C.2 1 UNCH -0.1356 + 9 C3 3.7347 4.2511 7.5232 C.2 1 UNCH 0.7666 + 10 C4 1.8933 4.2513 6.2059 C.2 1 UNCH 0.6410 + 11 C5 0.1113 5.0301 4.6274 C.2 1 UNCH -0.0490 + 12 C6 1.0409 5.9593 4.8967 C.2 1 UNCH -0.0500 + 13 C7 3.3965 7.6980 5.7986 C.3 1 UNCH 0.1992 + 14 C8 2.4795 8.6971 6.4822 C.2 1 UNCH 0.6590 + 15 C9 1.9409 10.9764 6.5843 C.3 1 UNCH 0.2800 + 16 H1 4.8517 6.1344 7.5253 H 1 UNCH 0.1500 + 17 H2 -0.7478 5.1589 3.9839 H 1 UNCH 0.1500 + 18 H3 1.0385 6.9640 4.4979 H 1 UNCH 0.1500 + 19 H4 4.4283 7.9864 6.0350 H 1 UNCH 0.0000 + 20 H5 3.2729 7.7795 4.7130 H 1 UNCH 0.0000 + 21 H6 0.8815 10.8040 6.3701 H 1 UNCH 0.0000 + 22 H7 2.1158 11.0322 7.6632 H 1 UNCH 0.0000 + 23 H8 2.2346 11.9294 6.1358 H 1 UNCH 0.0000 +@BOND + 1 1 10 1 + 2 1 11 1 + 3 2 9 2 + 4 3 14 2 + 5 4 14 1 + 6 4 15 1 + 7 5 9 am + 8 5 10 2 + 9 6 7 1 + 10 6 10 am + 11 6 12 1 + 12 7 8 2 + 13 7 13 1 + 14 8 9 1 + 15 8 16 1 + 16 11 12 2 + 17 11 17 1 + 18 12 18 1 + 19 13 14 1 + 20 13 19 1 + 21 13 20 1 + 22 15 21 1 + 23 15 22 1 + 24 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 7-OXO-7H-1,4-THIAZOLO(3,2-A)PYRIMIDIN-5-YL ACETATE +@MOLECULE +GIPHES + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.2676 2.3320 0.6690 O.2 1 GIPH -0.9000 + 2 O2 1.6586 2.7789 2.8135 O.3 1 GIPH -0.9000 + 3 O3 4.8791 0.0982 1.1144 O.2 1 GIPH -0.5700 + 4 O4 5.0916 1.8347 2.4738 O.3 1 GIPH -0.6500 + 5 C1 2.2325 2.1022 1.9130 C.2 1 GIPH 0.9060 + 6 C2 2.9196 0.8192 2.3559 C.3 1 GIPH -0.0450 + 7 C3 4.3417 0.8720 1.8977 C.2 1 GIPH 0.6590 + 8 C4 2.8223 0.5694 3.8603 C.3 1 GIPH 0.1435 + 9 C5 3.3439 -0.7892 4.2831 C.2 1 GIPH -0.1435 + 10 C6 4.5941 -0.9101 4.9033 C.2 1 GIPH -0.1500 + 11 C7 5.0764 -2.1632 5.2845 C.2 1 GIPH -0.1500 + 12 C8 4.3144 -3.3063 5.0477 C.2 1 GIPH -0.1500 + 13 C9 3.0705 -3.1970 4.4282 C.2 1 GIPH -0.1500 + 14 C10 2.5874 -1.9445 4.0468 C.2 1 GIPH -0.1500 + 15 H1 2.4296 -0.0013 1.8146 H 1 GIPH 0.0000 + 16 H2 1.7766 0.6356 4.1904 H 1 GIPH 0.0000 + 17 H3 3.3524 1.3507 4.4215 H 1 GIPH 0.0000 + 18 H4 5.1981 -0.0237 5.0840 H 1 GIPH 0.1500 + 19 H5 6.0491 -2.2448 5.7603 H 1 GIPH 0.1500 + 20 H6 4.6921 -4.2815 5.3395 H 1 GIPH 0.1500 + 21 H7 2.4765 -4.0854 4.2348 H 1 GIPH 0.1500 + 22 H8 1.6187 -1.8668 3.5576 H 1 GIPH 0.1500 + 23 H9 5.9304 1.7656 1.9785 H 1 GIPH 0.5000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 3 7 2 + 4 4 7 1 + 5 4 23 1 + 6 5 6 1 + 7 6 7 1 + 8 6 8 1 + 9 6 15 1 + 10 8 9 1 + 11 8 16 1 + 12 8 17 1 + 13 9 10 2 + 14 9 14 1 + 15 10 11 1 + 16 10 18 1 + 17 11 12 2 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 13 14 2 + 22 13 21 1 + 23 14 22 1 +@SUBSTRUCTURE + 1 GIPH 1 +@COMMENT +COMMENT N-METHYLGUANIDINIUM BENZYLHYDROGENMALONATE +@MOLECULE +GIRDOA01 + 34 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 3.6285 6.3379 0.9575 P 1 UNCH -0.4129 + 2 N1 1.7729 4.9320 2.3323 N.3 1 UNCH -0.7496 + 3 C1 3.0343 5.6567 2.6597 C.3 1 UNCH 0.4556 + 4 C2 1.0310 5.6171 1.2721 C.3 1 UNCH 0.2700 + 5 C3 2.0177 5.9360 0.1582 C.3 1 UNCH 0.1669 + 6 C4 4.0317 4.6898 3.3113 C.3 1 UNCH 0.0000 + 7 C5 0.9311 4.6427 3.4883 C.3 1 UNCH 0.2700 + 8 H1 0.2353 4.9736 0.8777 H 1 UNCH 0.0000 + 9 H2 0.5428 6.5283 1.6372 H 1 UNCH 0.0000 + 10 H3 2.1694 5.0448 -0.4621 H 1 UNCH 0.0000 + 11 H4 1.6528 6.7314 -0.4971 H 1 UNCH 0.0000 + 12 H5 5.0466 5.0973 3.3478 H 1 UNCH 0.0000 + 13 H6 4.0918 3.7457 2.7557 H 1 UNCH 0.0000 + 14 H7 3.7438 4.4504 4.3410 H 1 UNCH 0.0000 + 15 H8 1.4815 4.0981 4.2618 H 1 UNCH 0.0000 + 16 H9 0.1024 3.9904 3.1891 H 1 UNCH 0.0000 + 17 H10 0.4953 5.5392 3.9411 H 1 UNCH 0.0000 + 18 C1B 3.3644 8.0263 1.7332 C.3 1 UNCH 0.4556 + 19 P1B 2.7701 7.3451 3.4354 P 1 UNCH -0.4129 + 20 N1B 4.6257 8.7511 2.0606 N.3 1 UNCH -0.7496 + 21 C4B 2.3670 8.9932 1.0816 C.3 1 UNCH 0.0000 + 22 C3B 4.3809 7.7470 4.2347 C.3 1 UNCH 0.1669 + 23 C2B 5.3676 8.0660 3.1208 C.3 1 UNCH 0.2700 + 24 C5B 5.4675 9.0403 0.9046 C.3 1 UNCH 0.2700 + 25 H5B 1.3520 8.5857 1.0451 H 1 UNCH 0.0000 + 26 H6B 2.3068 9.9373 1.6372 H 1 UNCH 0.0000 + 27 H7B 2.6548 9.2326 0.0519 H 1 UNCH 0.0000 + 28 H3B 4.2292 8.6382 4.8550 H 1 UNCH 0.0000 + 29 H4B 4.7458 6.9516 4.8899 H 1 UNCH 0.0000 + 30 H1B 6.1633 8.7094 3.5152 H 1 UNCH 0.0000 + 31 H2B 5.8558 7.1547 2.7557 H 1 UNCH 0.0000 + 32 H8B 4.9171 9.5849 0.1311 H 1 UNCH 0.0000 + 33 H9B 6.2962 9.6926 1.2038 H 1 UNCH 0.0000 + 34 H10B 5.9033 8.1438 0.4518 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 1 18 1 + 4 2 3 1 + 5 2 4 1 + 6 2 7 1 + 7 3 6 1 + 8 3 19 1 + 9 4 5 1 + 10 4 8 1 + 11 4 9 1 + 12 5 10 1 + 13 5 11 1 + 14 6 12 1 + 15 6 13 1 + 16 6 14 1 + 17 7 15 1 + 18 7 16 1 + 19 7 17 1 + 20 18 19 1 + 21 18 20 1 + 22 18 21 1 + 23 19 22 1 + 24 20 23 1 + 25 20 24 1 + 26 21 25 1 + 27 21 26 1 + 28 21 27 1 + 29 22 23 1 + 30 22 28 1 + 31 22 29 1 + 32 23 30 1 + 33 23 31 1 + 34 24 32 1 + 35 24 33 1 + 36 24 34 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3,7,8-TETRAMETHYL-3,8-DIAZA-1,6-DIPHOSPHATRICYCLO(5.3.0.0 +@MOLECULE +GOHVUU + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.0068 6.3954 9.3915 N.3 1 UNCH -0.1200 + 2 C1 2.4388 6.3617 8.0605 C.2 1 UNCH 0.6900 + 3 N2 1.8599 5.2750 7.4605 N.3 1 UNCH -0.4900 + 4 C2 1.2266 4.5033 8.3982 C.2 1 UNCH 0.6900 + 5 N3 1.2329 5.2088 9.6072 N.3 1 UNCH -0.1200 + 6 C3 1.6932 4.6351 10.7981 C.2 1 UNCH 0.6900 + 7 N4 2.6150 5.4883 11.3442 N.3 1 UNCH -0.4900 + 8 C4 2.9054 6.4935 10.4604 C.2 1 UNCH 0.6900 + 9 O1 3.1649 7.1530 7.4828 O.2 1 UNCH -0.5700 + 10 O2 0.7274 3.4160 8.1620 O.2 1 UNCH -0.5700 + 11 O3 1.3409 3.5893 11.3171 O.2 1 UNCH -0.5700 + 12 O4 3.7783 7.3263 10.6379 O.2 1 UNCH -0.5700 + 13 H1 2.0439 4.9831 6.5149 H 1 UNCH 0.3700 + 14 H2 3.1449 5.2941 12.1777 H 1 UNCH 0.3700 +@BOND + 1 1 2 am + 2 1 5 1 + 3 1 8 am + 4 2 3 am + 5 2 9 2 + 6 3 4 am + 7 3 13 1 + 8 4 5 am + 9 4 10 2 + 10 5 6 am + 11 6 7 am + 12 6 11 2 + 13 7 8 am + 14 7 14 1 + 15 8 12 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1,2,4)TRIAZOLO(1,2-A)(1,2,4)TRIAZOLE-1,3,5,7(2H,6H)-TETRON +@MOLECULE +GOJCIR + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.1084 23.5070 -1.1324 O.3 1 GOJB -0.5600 + 2 C1 2.3485 22.7231 0.0485 C.3 1 GOJB 0.5100 + 3 H1 1.5422 21.9832 0.1224 H 1 GOJB 0.0000 + 4 S1 2.3055 23.7623 1.5603 S.3 1 GOJB -0.4600 + 5 C2 0.4686 24.0670 1.6580 C.3 1 GOJB 0.7500 + 6 S2 -0.3031 24.1161 -0.0448 S.3 1 GOJB -0.4600 + 7 C3 1.1593 24.5828 -1.0526 C.3 1 GOJB 0.5100 + 8 H2 1.6559 25.4269 -0.5611 H 1 GOJB 0.0000 + 9 C4 3.6766 21.8957 -0.1205 C.3 1 GOJB 0.8700 + 10 CL1 5.1084 22.9656 -0.3072 CL 1 GOJB -0.2900 + 11 CL2 3.5689 20.8591 -1.5943 CL 1 GOJB -0.2900 + 12 CL3 3.9508 20.7965 1.2771 CL 1 GOJB -0.2900 + 13 CL4 -0.2173 22.5504 2.4299 CL 1 GOJB -0.2900 + 14 C5 0.1043 25.3389 2.5396 C.3 1 GOJB 0.8700 + 15 CL5 0.7714 25.2435 4.2212 CL 1 GOJB -0.2900 + 16 CL6 -1.6837 25.5819 2.7111 CL 1 GOJB -0.2900 + 17 CL7 0.7582 26.8676 1.8102 CL 1 GOJB -0.2900 + 18 C6 0.7992 25.0842 -2.5016 C.3 1 GOJB 0.8700 + 19 CL8 0.0102 23.8008 -3.4785 CL 1 GOJB -0.2900 + 20 CL9 2.3021 25.5897 -3.3638 CL 1 GOJB -0.2900 + 21 CL10 -0.2821 26.5220 -2.4448 CL 1 GOJB -0.2900 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 2 3 1 + 4 2 4 1 + 5 2 9 1 + 6 4 5 1 + 7 5 6 1 + 8 5 13 1 + 9 5 14 1 + 10 6 7 1 + 11 7 8 1 + 12 7 18 1 + 13 9 10 1 + 14 9 11 1 + 15 9 12 1 + 16 14 15 1 + 17 14 16 1 + 18 14 17 1 + 19 18 19 1 + 20 18 20 1 + 21 18 21 1 +@SUBSTRUCTURE + 1 GOJB 1 +@COMMENT +COMMENT TRANS-4-CHLORO-2,4,6-TRIS(TRICHLOROMETHYL)-1-OXA-3,5-DITHIA +@MOLECULE +GOJKIZ + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.1260 0.6673 12.4257 C.2 1 UNCH 0.4115 + 2 N1 2.7732 -0.6012 12.7844 N.2 1 UNCH -0.6200 + 3 C2 3.7273 -1.4244 13.2765 C.2 1 UNCH 0.1600 + 4 C3 5.0527 -1.0602 13.4308 C.2 1 UNCH -0.1500 + 5 C4 5.4248 0.2224 13.0488 C.2 1 UNCH -0.1500 + 6 C5 4.4486 1.0875 12.5336 C.2 1 UNCH 0.1330 + 7 S1 1.7548 1.6386 11.8412 S.3 1 UNCH -0.1565 + 8 C6 1.6329 2.8618 13.0746 C.2 1 UNCH 0.5710 + 9 N2 0.6827 3.8019 13.0364 N.2 1 UNCH -0.7068 + 10 N3 0.9802 4.5330 14.1206 N.3 1 UNCH 0.2996 + 11 C7 2.0666 4.0342 14.7651 C.2 1 UNCH 0.0365 + 12 N4 2.5041 2.9743 14.1273 N.2 1 UNCH -0.5653 + 13 N5 4.8733 2.3994 12.1006 N.2 1 UNCH 0.9070 + 14 O1 5.5919 3.0462 12.8769 O.3 1 UNCH -0.5200 + 15 O2 4.5609 2.7582 10.9578 O.2 1 UNCH -0.5200 + 16 H1 3.3816 -2.4173 13.5533 H 1 UNCH 0.1500 + 17 H2 5.7771 -1.7602 13.8338 H 1 UNCH 0.1500 + 18 H3 6.4605 0.5398 13.1472 H 1 UNCH 0.1500 + 19 H4 0.4117 5.3412 14.3484 H 1 UNCH 0.2700 + 20 H5 2.4818 4.4716 15.6619 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 3 4 2 + 6 3 16 1 + 7 4 5 1 + 8 4 17 1 + 9 5 6 2 + 10 5 18 1 + 11 6 13 1 + 12 7 8 1 + 13 8 9 2 + 14 8 12 am + 15 9 10 1 + 16 10 11 am + 17 10 19 1 + 18 11 12 2 + 19 11 20 1 + 20 13 14 1 + 21 13 15 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (3-NITRO-2-PYRIDYL)-3-THIO-1H-1,2,4-TRIAZOLE (ANTITHYROID D +@MOLECULE +GUANCH01 + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.7020 5.5248 17.7081 O.2 1 GUAN -0.5700 + 2 N1 2.0991 7.2604 17.2051 N.3 1 GUAN -0.4900 + 3 N2 3.1349 8.7117 18.7681 N.2 1 GUAN -0.5880 + 4 N3 1.1753 6.4576 20.6548 N.2 1 GUAN -0.7000 + 5 N4 2.4718 8.1248 21.0298 N.3 1 GUAN -0.7000 + 6 N5 3.5373 8.9421 16.5137 N.3 1 GUAN -0.8500 + 7 C1 2.9256 8.3149 17.5440 C.2 1 GUAN 0.5600 + 8 C2 2.4605 7.9670 19.6665 C.2 1 GUAN 0.4880 + 9 C3 1.6320 6.9022 19.4239 C.2 1 GUAN 0.2770 + 10 C4 1.3966 6.4584 18.0943 C.2 1 GUAN 0.7030 + 11 C5 1.6992 7.2133 21.6240 C.2 1 GUAN 0.6500 + 12 H3 2.0224 6.9906 16.2332 H 1 GUAN 0.3700 + 13 H4 0.5416 5.6697 20.7822 H 1 GUAN 0.4500 + 14 H5 1.5295 7.1062 22.6892 H 1 GUAN 0.1500 + 15 H6 3.0128 8.8460 21.4976 H 1 GUAN 0.4500 + 16 H7 3.1004 8.9592 15.5994 H 1 GUAN 0.4000 + 17 H8 3.9936 9.8201 16.7506 H 1 GUAN 0.4000 +@BOND + 1 1 10 2 + 2 2 12 1 + 3 2 10 am + 4 2 7 am + 5 3 8 1 + 6 3 7 2 + 7 4 13 1 + 8 4 11 2 + 9 4 9 1 + 10 5 15 1 + 11 5 11 am + 12 5 8 1 + 13 6 17 1 + 14 6 16 1 + 15 6 7 am + 16 8 9 2 + 17 9 10 1 + 18 11 14 1 +@SUBSTRUCTURE + 1 GUAN 1 +@COMMENT +COMMENT GUANINE HYDROCHLORIDE MONOHYDRATE +@MOLECULE +HYTPRD01 + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.6171 7.2158 1.5281 S.2 1 HQOX -0.3800 + 2 C1 3.6893 7.1786 0.1135 C.2 1 HQOX 0.3538 + 3 C2 2.5855 6.1843 0.0402 C.2 1 HQOX 0.0862 + 4 C3 2.7915 4.8989 -0.4741 C.2 1 HQOX 0.0825 + 5 O1 4.0204 4.5387 -0.9495 O.3 1 HQOX -0.5325 + 6 C4 1.7357 3.9886 -0.5159 C.2 1 HQOX -0.1500 + 7 C5 0.4751 4.3649 -0.0435 C.2 1 HQOX -0.1500 + 8 C6 0.2669 5.6465 0.4697 C.2 1 HQOX -0.1500 + 9 C7 1.3206 6.5594 0.5135 C.2 1 HQOX -0.1500 + 10 N1 3.8413 8.0545 -0.9808 N.3 1 HQOX -0.6602 + 11 C8 4.9440 9.0217 -1.0829 C.3 1 HQOX 0.3001 + 12 C9 5.9527 8.5567 -2.1326 C.3 1 HQOX 0.0000 + 13 C10 5.2702 8.3219 -3.4818 C.3 1 HQOX 0.0000 + 14 C11 4.0574 7.3998 -3.3414 C.3 1 HQOX 0.0000 + 15 C12 3.1119 7.8942 -2.2467 C.3 1 HQOX 0.3001 + 16 H1 4.0309 3.5818 -1.1134 H 1 HQOX 0.4500 + 17 H4 1.8723 2.9879 -0.9146 H 1 HQOX 0.1500 + 18 H5 -0.3487 3.6553 -0.0740 H 1 HQOX 0.1500 + 19 H6 -0.7148 5.9324 0.8398 H 1 HQOX 0.1500 + 20 H7 1.1618 7.5556 0.9184 H 1 HQOX 0.1500 + 21 H81 5.4506 9.1833 -0.1299 H 1 HQOX 0.0000 + 22 H82 4.5089 9.9853 -1.3753 H 1 HQOX 0.0000 + 23 H91 6.4248 7.6237 -1.8008 H 1 HQOX 0.0000 + 24 H92 6.7469 9.3029 -2.2441 H 1 HQOX 0.0000 + 25 H101 5.9854 7.8914 -4.1913 H 1 HQOX 0.0000 + 26 H102 4.9466 9.2847 -3.8961 H 1 HQOX 0.0000 + 27 H111 4.4036 6.3879 -3.0995 H 1 HQOX 0.0000 + 28 H112 3.5240 7.3409 -4.2964 H 1 HQOX 0.0000 + 29 H121 2.2640 7.2129 -2.1596 H 1 HQOX 0.0000 + 30 H122 2.7017 8.8755 -2.5147 H 1 HQOX 0.0000 +@BOND + 1 1 2 2 + 2 2 3 1 + 3 2 10 1 + 4 3 4 1 + 5 3 9 2 + 6 4 5 1 + 7 4 6 2 + 8 5 16 1 + 9 6 7 1 + 10 6 17 1 + 11 7 8 2 + 12 7 18 1 + 13 8 9 1 + 14 8 19 1 + 15 9 20 1 + 16 10 11 1 + 17 10 15 1 + 18 11 12 1 + 19 11 21 1 + 20 11 22 1 + 21 12 13 1 + 22 12 23 1 + 23 12 24 1 + 24 13 14 1 + 25 13 25 1 + 26 13 26 1 + 27 14 15 1 + 28 14 27 1 + 29 14 28 1 + 30 15 29 1 + 31 15 30 1 +@SUBSTRUCTURE + 1 HQOX 1 +@COMMENT +COMMENT 1-(2'-HYDROXYTHIOBENZOYL)-PIPERIDINE (NEUTRON STUDY, AT 20 +@MOLECULE +ISTZCN10 + 12 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.6611 4.2955 -2.0894 S.3 1 UNCH -0.0550 + 2 S2 6.3051 4.7144 -0.9305 S.3 1 UNCH 0.0000 + 3 S3 7.1469 2.8829 -0.5575 S.3 1 UNCH 0.0000 + 4 S4 5.9657 2.0524 0.8975 S.3 1 UNCH 0.0000 + 5 S5 4.2937 1.4096 -0.1081 S.3 1 UNCH -0.0550 + 6 S6 1.4084 4.4724 0.4312 S.3 1 UNCH 0.1807 + 7 N1 2.4830 4.9631 -0.7261 N.2 1 UNCH -0.5095 + 8 N2 1.2159 1.2674 2.4515 N.1 1 UNCH -0.5571 + 9 C1 3.3992 4.0095 -0.8904 C.2 1 UNCH 0.3438 + 10 C2 3.2488 2.8323 -0.0806 C.2 1 UNCH 0.0550 + 11 C3 2.1362 2.9587 0.7305 C.2 1 UNCH 0.0600 + 12 C4 1.6297 2.0265 1.6778 C.1 1 UNCH 0.5371 +@BOND + 1 1 2 1 + 2 1 9 1 + 3 2 3 1 + 4 3 4 1 + 5 4 5 1 + 6 5 10 1 + 7 6 7 1 + 8 6 11 1 + 9 7 9 2 + 10 8 12 3 + 11 9 10 1 + 12 10 11 2 + 13 11 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 8-CYANOISOTHIAZOLOPENTATHIEPIN +@MOLECULE +JABGAU + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.4676 2.0705 1.5274 S.3 1 JABC -0.2420 + 2 S2 8.5769 -0.3702 0.1326 S.2 1 JABC -0.3800 + 3 C1 8.7852 0.9336 1.1548 C.2 1 JABC 0.5810 + 4 N1 9.9380 1.3782 1.8295 N.3 1 JABC -0.2860 + 5 C2 9.7654 2.5696 2.5382 C.2 1 JABC -0.0292 + 6 C3 8.5187 3.0570 2.4830 C.2 1 JABC -0.0490 + 7 C4 11.1836 0.7032 1.7206 C.2 1 JABC 0.1170 + 8 C5 11.4439 -0.4945 2.4232 C.2 1 JABC -0.1435 + 9 C6 12.6909 -1.1367 2.2328 C.2 1 JABC -0.1435 + 10 C7 13.6573 -0.5481 1.4003 C.2 1 JABC -0.1500 + 11 C8 13.3985 0.6495 0.7396 C.2 1 JABC -0.1500 + 12 C9 12.1653 1.2722 0.8969 C.2 1 JABC -0.1500 + 13 C10 13.0279 -2.4308 2.9256 C.3 1 JABC 0.1435 + 14 C11 10.4223 -1.1016 3.3522 C.3 1 JABC 0.1435 + 15 C12 10.8775 3.1910 3.3198 C.3 1 JABC 0.1382 + 16 H1 14.6240 -1.0277 1.2578 H 1 JABC 0.1500 + 17 H2 14.1531 1.0890 0.0929 H 1 JABC 0.1500 + 18 H3 11.9620 2.1943 0.3581 H 1 JABC 0.1500 + 19 H4 8.1747 3.9565 2.9756 H 1 JABC 0.1500 + 20 H5 9.6457 -0.3899 3.6460 H 1 JABC 0.0000 + 21 H6 10.8947 -1.4285 4.2844 H 1 JABC 0.0000 + 22 H7 9.9425 -1.9610 2.8742 H 1 JABC 0.0000 + 23 H8 11.3037 2.4753 4.0303 H 1 JABC 0.0000 + 24 H9 10.5245 4.0518 3.8986 H 1 JABC 0.0000 + 25 H10 11.6711 3.5486 2.6568 H 1 JABC 0.0000 + 26 H11 12.2283 -3.1647 2.7829 H 1 JABC 0.0000 + 27 H12 13.1803 -2.2572 3.9953 H 1 JABC 0.0000 + 28 H13 13.9446 -2.8744 2.5222 H 1 JABC 0.0000 +@BOND + 1 1 3 1 + 2 1 6 1 + 3 2 3 2 + 4 3 4 1 + 5 4 5 1 + 6 4 7 1 + 7 5 6 2 + 8 5 15 1 + 9 6 19 1 + 10 7 8 2 + 11 7 12 1 + 12 8 9 1 + 13 8 14 1 + 14 9 10 2 + 15 9 13 1 + 16 10 11 1 + 17 10 16 1 + 18 11 12 2 + 19 11 17 1 + 20 12 18 1 + 21 13 26 1 + 22 13 27 1 + 23 13 28 1 + 24 14 20 1 + 25 14 21 1 + 26 14 22 1 + 27 15 23 1 + 28 15 24 1 + 29 15 25 1 +@SUBSTRUCTURE + 1 JABC 1 +@COMMENT +COMMENT 3-(2',3'-DIMETHYLPHENYL)-4-METHYL-(CDELTA-4--THIAZOLINE-2-T +@MOLECULE +JADLIJ + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 6.7195 5.7264 -0.5453 CL 1 JADL -0.1770 + 2 S1 2.5995 2.9110 1.6858 S.3 1 JADL -0.1015 + 3 S2 2.6789 0.9089 2.0732 S.3 1 JADL -0.1410 + 4 S3 4.9934 -0.9181 1.5330 S.2 1 JADL -0.3800 + 5 C1 4.3215 0.6165 1.4797 C.2 1 JADL 0.4348 + 6 C2 4.9865 1.8411 0.9584 C.2 1 JADL 0.0862 + 7 C3 6.2851 1.8721 0.4344 C.2 1 JADL -0.1500 + 8 C4 6.8167 3.0793 -0.0301 C.2 1 JADL -0.1500 + 9 C5 6.0553 4.2474 0.0289 C.2 1 JADL 0.1770 + 10 C6 4.7627 4.2263 0.5485 C.2 1 JADL -0.1500 + 11 C7 4.2331 3.0214 1.0117 C.2 1 JADL 0.1015 + 12 H1 6.8986 0.9762 0.3774 H 1 JADL 0.1500 + 13 H2 7.8257 3.1016 -0.4369 H 1 JADL 0.1500 + 14 H3 4.1759 5.1405 0.5910 H 1 JADL 0.1500 +@BOND + 1 1 9 1 + 2 2 11 1 + 3 2 3 1 + 4 3 5 1 + 5 4 5 2 + 6 5 6 1 + 7 6 11 2 + 8 6 7 1 + 9 7 12 1 + 10 7 8 2 + 11 8 13 1 + 12 8 9 1 + 13 9 10 2 + 14 10 14 1 + 15 10 11 1 +@SUBSTRUCTURE + 1 JADL 1 +@COMMENT +COMMENT 6-CHLORO-1,2-BENZODITHIOLE-3-THIONE +@MOLECULE +JADXER + 39 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.4058 -0.2380 2.8100 O.3 1 JADX -0.2960 + 2 O2 0.0361 1.0850 1.7326 O.3 1 JADX -0.5200 + 3 O3 1.6273 1.7523 0.3571 O.2 1 JADX -0.5200 + 4 O4 3.5726 -2.4947 1.4904 O.3 1 JADX -0.5600 + 5 O5 5.4831 -2.6273 0.1434 O.3 1 JADX -0.5600 + 6 O6 6.0972 0.9799 0.6462 O.3 1 JADX -0.5600 + 7 O7 6.6336 0.6458 -1.6085 O.3 1 JADX -0.5600 + 8 N1 1.1327 0.9661 1.1749 N.2 1 JADX 0.8750 + 9 C1 1.8965 -0.2454 1.4630 C.3 1 JADX 0.2130 + 10 C2 3.3697 -0.1103 1.7500 C.3 1 JADX -0.0470 + 11 C3 4.3084 -1.2654 1.6121 C.3 1 JADX 0.3750 + 12 C4 5.1430 -1.2469 0.3385 C.3 1 JADX 0.2800 + 13 C5 6.4159 -0.4009 0.4400 C.3 1 JADX 0.2800 + 14 C6 7.2184 -0.4073 -0.8433 C.3 1 JADX 0.2800 + 15 C7 4.4032 -3.3694 0.7194 C.3 1 JADX 0.5600 + 16 C8 4.9825 -4.4443 1.6294 C.3 1 JADX 0.0000 + 17 C9 3.5622 -3.9792 -0.3944 C.3 1 JADX 0.0000 + 18 C10 6.2256 1.6158 -0.6373 C.3 1 JADX 0.5600 + 19 C11 4.8799 2.1923 -1.0545 C.3 1 JADX 0.0000 + 20 C12 7.2796 2.7138 -0.5320 C.3 1 JADX 0.0000 + 21 H1 1.4607 -1.1516 1.0757 H 1 JADX 0.1000 + 22 H2 3.8545 0.8524 1.6665 H 1 JADX 0.1000 + 23 H3 4.9412 -1.3491 2.5040 H 1 JADX 0.0000 + 24 H4 4.5267 -0.9306 -0.5129 H 1 JADX 0.0000 + 25 H7 8.2664 -0.1473 -0.6561 H 1 JADX 0.0000 + 26 H8 5.5879 -3.9904 2.4225 H 1 JADX 0.0000 + 27 H9 4.1905 -5.0216 2.1176 H 1 JADX 0.0000 + 28 H11 4.1628 -4.6357 -1.0326 H 1 JADX 0.0000 + 29 H12 3.1480 -3.1935 -1.0368 H 1 JADX 0.0000 + 30 H13 2.7159 -4.5444 0.0099 H 1 JADX 0.0000 + 31 H14 4.1333 1.3969 -1.1516 H 1 JADX 0.0000 + 32 H15 4.5030 2.9023 -0.3111 H 1 JADX 0.0000 + 33 H16 4.9450 2.6898 -2.0279 H 1 JADX 0.0000 + 34 H17 7.4431 3.2008 -1.4990 H 1 JADX 0.0000 + 35 H18 6.9927 3.4687 0.2077 H 1 JADX 0.0000 + 36 H19 8.2424 2.3007 -0.2108 H 1 JADX 0.0000 + 37 H5 7.0329 -0.7654 1.2691 H 1 JADX 0.0000 + 38 H6 7.1878 -1.3479 -1.3992 H 1 JADX 0.0000 + 39 H10 5.6361 -5.1256 1.0747 H 1 JADX 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 2 8 1 + 4 3 8 2 + 5 4 15 1 + 6 4 11 1 + 7 5 15 1 + 8 5 12 1 + 9 6 18 1 + 10 6 13 1 + 11 7 18 1 + 12 7 14 1 + 13 8 9 1 + 14 9 21 1 + 15 9 10 1 + 16 10 22 1 + 17 10 11 1 + 18 11 23 1 + 19 11 12 1 + 20 12 24 1 + 21 12 13 1 + 22 13 37 1 + 23 13 14 1 + 24 14 38 1 + 25 14 25 1 + 26 15 17 1 + 27 15 16 1 + 28 16 39 1 + 29 16 27 1 + 30 16 26 1 + 31 17 30 1 + 32 17 29 1 + 33 17 28 1 + 34 18 20 1 + 35 18 19 1 + 36 19 33 1 + 37 19 32 1 + 38 19 31 1 + 39 20 36 1 + 40 20 35 1 + 41 20 34 1 +@SUBSTRUCTURE + 1 JADX 1 +@COMMENT +COMMENT 1,2-ANHYDRO-3,4.5,6-DI-O-ISOPROPYLIDENE-1-C-NITRO-D-MANNITO +@MOLECULE +JAHKOS + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 9.0185 0.4479 0.7283 S.1 1 JAGT 1.1718 + 2 O1 7.6513 0.5824 1.1951 O.2 1 JAGT -0.6500 + 3 O2 9.4230 1.0391 -0.5331 O.2 1 JAGT -0.6500 + 4 O3 10.7860 -1.5558 0.5838 O.3 1 JAGT -0.2960 + 5 C1 9.3784 -1.3142 0.6724 C.3 1 JAGT 0.0760 + 6 C2 10.0032 -1.8201 -0.6045 C.3 1 JAGT 0.0800 + 7 C3 8.6630 -2.1335 1.6757 C.3 1 JAGT 0.0950 + 8 C4 10.0868 1.0802 1.9934 C.3 1 JAGT 0.1052 + 9 C5 9.8225 -3.2554 -1.0278 C.2 1 JAGT -0.0320 + 10 C6 10.8608 -4.1948 -0.9142 C.2 1 JAGT -0.1500 + 11 C7 10.6877 -5.5227 -1.3126 C.2 1 JAGT -0.1500 + 12 C8 9.4683 -5.9375 -1.8398 C.2 1 JAGT -0.1500 + 13 C9 8.4255 -5.0250 -1.9706 C.2 1 JAGT -0.1500 + 14 C10 8.6041 -3.6983 -1.5705 C.2 1 JAGT -0.1500 + 15 H1 10.1443 -1.1215 -1.4246 H 1 JAGT 0.1000 + 16 H2 7.6003 -2.2084 1.4240 H 1 JAGT 0.0000 + 17 H3 8.7478 -1.6980 2.6765 H 1 JAGT 0.0000 + 18 H4 9.0617 -3.1517 1.7345 H 1 JAGT 0.0000 + 19 H5 11.1251 0.9278 1.6941 H 1 JAGT 0.0000 + 20 H6 9.8733 0.5646 2.9310 H 1 JAGT 0.0000 + 21 H7 9.8868 2.1483 2.1034 H 1 JAGT 0.0000 + 22 H8 11.8214 -3.8859 -0.5059 H 1 JAGT 0.1500 + 23 H9 11.5067 -6.2302 -1.2122 H 1 JAGT 0.1500 + 24 H10 9.3321 -6.9696 -2.1519 H 1 JAGT 0.1500 + 25 H11 7.4730 -5.3431 -2.3869 H 1 JAGT 0.1500 + 26 H12 7.7785 -2.9982 -1.6864 H 1 JAGT 0.1500 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 5 1 + 4 1 8 1 + 5 4 5 1 + 6 4 6 1 + 7 5 6 1 + 8 5 7 1 + 9 6 9 1 + 10 6 15 1 + 11 7 16 1 + 12 7 17 1 + 13 7 18 1 + 14 8 19 1 + 15 8 20 1 + 16 8 21 1 + 17 9 10 2 + 18 9 14 1 + 19 10 11 1 + 20 10 22 1 + 21 11 12 2 + 22 11 23 1 + 23 12 13 1 + 24 12 24 1 + 25 13 14 2 + 26 13 25 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 JAGT 1 +@COMMENT +COMMENT E-1,2-EPOXY-2-METHYLSULFONYL-1-PHENYLPROPANE +@MOLECULE +JAHTOB + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 6.5034 15.5914 -3.0087 C.2 1 UNCH 0.0367 + 2 C2 5.8485 16.2751 -2.1109 C.2 1 UNCH -0.0684 + 3 C3 7.3193 16.4213 -2.1807 C.3 1 UNCH -0.1100 + 4 C4 7.8801 17.6858 -2.7636 C.3 1 UNCH 0.0950 + 5 C5 8.1487 15.7727 -1.1107 C.3 1 UNCH 0.0950 + 6 C6 5.2623 14.2449 -4.3656 C.3 1 UNCH 0.2800 + 7 C7 4.6943 16.7201 -1.4083 C.2 1 UNCH 0.0284 + 8 C8 4.8257 17.6422 -0.3623 C.2 1 UNCH -0.1500 + 9 C9 3.7015 18.0896 0.3382 C.2 1 UNCH -0.1500 + 10 C10 2.4389 17.6145 -0.0065 C.2 1 UNCH 0.1770 + 11 C11 2.2925 16.6974 -1.0443 C.2 1 UNCH -0.1500 + 12 C12 3.4193 16.2521 -1.7429 C.2 1 UNCH -0.1500 + 13 O1 6.5446 14.7377 -4.0035 O.3 1 UNCH -0.3567 + 14 CL1 1.0536 18.1628 0.8532 CL 1 UNCH -0.1770 + 15 H1 8.0140 18.4393 -1.9796 H 1 UNCH 0.0000 + 16 H2 7.2340 18.1210 -3.5354 H 1 UNCH 0.0000 + 17 H3 8.8581 17.4938 -3.2185 H 1 UNCH 0.0000 + 18 H4 9.1368 15.5085 -1.5033 H 1 UNCH 0.0000 + 19 H5 8.2916 16.4612 -0.2706 H 1 UNCH 0.0000 + 20 H6 7.6922 14.8572 -0.7157 H 1 UNCH 0.0000 + 21 H7 4.6103 15.0577 -4.7041 H 1 UNCH 0.0000 + 22 H8 5.3899 13.5448 -5.1967 H 1 UNCH 0.0000 + 23 H9 4.8005 13.7024 -3.5332 H 1 UNCH 0.0000 + 24 H10 5.8064 18.0216 -0.0825 H 1 UNCH 0.1500 + 25 H11 3.8199 18.8051 1.1472 H 1 UNCH 0.1500 + 26 H12 1.3083 16.3250 -1.3154 H 1 UNCH 0.1500 + 27 H13 3.2864 15.5365 -2.5495 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 13 1 + 4 2 3 1 + 5 2 7 1 + 6 3 4 1 + 7 3 5 1 + 8 4 15 1 + 9 4 16 1 + 10 4 17 1 + 11 5 18 1 + 12 5 19 1 + 13 5 20 1 + 14 6 13 1 + 15 6 21 1 + 16 6 22 1 + 17 6 23 1 + 18 7 8 2 + 19 7 12 1 + 20 8 9 1 + 21 8 24 1 + 22 9 10 2 + 23 9 25 1 + 24 10 11 1 + 25 10 14 1 + 26 11 12 2 + 27 11 26 1 + 28 12 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-P-CHLOROPHENYL-3,3-DIMETHYL-1-METHOXYCYCLOPROPENE (AT 120 +@MOLECULE +JAHYEW + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.3097 7.6805 3.1825 CL 1 JAHT -0.2900 + 2 CL2 2.7939 11.0409 3.1267 CL 1 JAHT -0.2900 + 3 CL3 5.1725 9.4937 3.3977 CL 1 JAHT -0.2900 + 4 N1 4.4014 10.5228 1.0501 N.3 1 JAHT -0.8100 + 5 C1 3.3448 10.9785 0.1251 C.3 1 JAHT 0.2700 + 6 C2 2.3027 9.9300 -0.2813 C.3 1 JAHT 0.0000 + 7 C3 1.8896 8.9833 0.8481 C.3 1 JAHT 0.0000 + 8 C4 3.0504 8.5754 1.7900 C.3 1 JAHT 0.2900 + 9 C5 4.0252 7.5942 1.0914 C.3 1 JAHT 0.0000 + 10 C6 4.8997 8.2407 0.0146 C.3 1 JAHT 0.0000 + 11 C7 5.3759 9.6573 0.3565 C.3 1 JAHT 0.2700 + 12 C8 3.8270 9.8479 2.2392 C.3 1 JAHT 0.8500 + 13 H1 2.8223 11.8342 0.5694 H 1 JAHT 0.0000 + 14 H2 3.8004 11.3990 -0.7811 H 1 JAHT 0.0000 + 15 H3 1.4091 10.4430 -0.6589 H 1 JAHT 0.0000 + 16 H4 2.6684 9.3495 -1.1327 H 1 JAHT 0.0000 + 17 H5 1.1001 9.4817 1.4265 H 1 JAHT 0.0000 + 18 H6 1.4161 8.0938 0.4126 H 1 JAHT 0.0000 + 19 H7 4.6949 7.1434 1.8360 H 1 JAHT 0.0000 + 20 H8 3.4744 6.7550 0.6471 H 1 JAHT 0.0000 + 21 H9 5.7753 7.6029 -0.1614 H 1 JAHT 0.0000 + 22 H10 4.3654 8.2457 -0.9394 H 1 JAHT 0.0000 + 23 H11 6.2858 9.5814 0.9640 H 1 JAHT 0.0000 + 24 H12 5.7217 10.1493 -0.5622 H 1 JAHT 0.0000 +@BOND + 1 1 8 1 + 2 2 12 1 + 3 3 12 1 + 4 4 5 1 + 5 4 11 1 + 6 4 12 1 + 7 5 6 1 + 8 5 13 1 + 9 5 14 1 + 10 6 7 1 + 11 6 15 1 + 12 6 16 1 + 13 7 8 1 + 14 7 17 1 + 15 7 18 1 + 16 8 9 1 + 17 8 12 1 + 18 9 10 1 + 19 9 19 1 + 20 9 20 1 + 21 10 11 1 + 22 10 21 1 + 23 10 22 1 + 24 11 23 1 + 25 11 24 1 +@SUBSTRUCTURE + 1 JAHT 1 +@COMMENT +COMMENT 5,9,9-TRICHLORO-1-AZABICYCLO(3.3.1)NONANE +@MOLECULE +JAKGUX + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 4.2971 1.7644 7.7176 P 1 UNCH -0.3488 + 2 P2 1.0849 1.3896 8.1658 P 1 UNCH -0.3488 + 3 C1 3.4597 2.5557 9.1386 C.2 1 UNCH 0.0150 + 4 C2 2.0616 2.4505 9.2915 C.2 1 UNCH 0.0150 + 5 C3 1.4292 3.1130 10.3498 C.2 1 UNCH -0.1500 + 6 C4 2.1767 3.8761 11.2482 C.2 1 UNCH -0.1500 + 7 C5 3.5587 3.9785 11.0982 C.2 1 UNCH -0.1500 + 8 C6 4.1995 3.3227 10.0458 C.2 1 UNCH -0.1500 + 9 C7 3.6093 0.0467 7.8095 C.3 1 UNCH 0.1669 + 10 C8 2.1725 -0.1119 8.3085 C.3 1 UNCH 0.1669 + 11 C9 3.1460 2.4210 6.4131 C.3 1 UNCH 0.1669 + 12 C10 1.6875 1.9727 6.5138 C.3 1 UNCH 0.1669 + 13 H1 0.3535 3.0338 10.4881 H 1 UNCH 0.1500 + 14 H2 1.6797 4.3874 12.0686 H 1 UNCH 0.1500 + 15 H3 4.1389 4.5734 11.7988 H 1 UNCH 0.1500 + 16 H4 5.2768 3.4227 9.9360 H 1 UNCH 0.1500 + 17 H5 4.2694 -0.5596 8.4413 H 1 UNCH 0.0000 + 18 H6 3.6885 -0.3850 6.8037 H 1 UNCH 0.0000 + 19 H7 1.6976 -0.9413 7.7713 H 1 UNCH 0.0000 + 20 H8 2.1852 -0.4105 9.3646 H 1 UNCH 0.0000 + 21 H9 3.5376 2.1428 5.4276 H 1 UNCH 0.0000 + 22 H10 3.1933 3.5167 6.4532 H 1 UNCH 0.0000 + 23 H11 1.0436 2.7944 6.1783 H 1 UNCH 0.0000 + 24 H12 1.5143 1.1553 5.8023 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 9 1 + 3 1 11 1 + 4 2 4 1 + 5 2 10 1 + 6 2 12 1 + 7 3 4 2 + 8 3 8 1 + 9 4 5 1 + 10 5 6 2 + 11 5 13 1 + 12 6 7 1 + 13 6 14 1 + 14 7 8 2 + 15 7 15 1 + 16 8 16 1 + 17 9 10 1 + 18 9 17 1 + 19 9 18 1 + 20 10 19 1 + 21 10 20 1 + 22 11 12 1 + 23 11 21 1 + 24 11 22 1 + 25 12 23 1 + 26 12 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,8-DIPHOSPHATRICYLO(6.2.2.0-2,7-)DODECA-2(7),3,5-TRIENE +@MOLECULE +JAKJOU + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.4082 2.6692 6.1667 C.2 1 JAKJ 0.1000 + 2 C2 5.1499 1.4203 5.5313 C.2 1 JAKJ 0.3020 + 3 C3 3.9162 0.7718 5.7193 C.2 1 JAKJ -0.1500 + 4 C4 2.9201 1.3290 6.5285 C.2 1 JAKJ -0.1435 + 5 C5 3.1535 2.5721 7.1177 C.2 1 JAKJ -0.1500 + 6 C6 4.3732 3.2340 6.9314 C.2 1 JAKJ -0.1500 + 7 N1 6.6056 3.3822 5.9150 N.3 1 JAKJ -0.8691 + 8 C7 7.0978 4.2984 6.9293 C.3 1 JAKJ 0.3691 + 9 N2 6.0669 0.8049 4.6954 N.2 1 JAKJ -0.1402 + 10 O1 7.1248 0.5286 5.2758 O.2 1 JAKJ -0.1618 + 11 C8 1.5991 0.6392 6.6958 C.3 1 JAKJ 0.1435 + 12 H1 8.1023 4.6332 6.6508 H 1 JAKJ 0.0000 + 13 H2 7.1670 3.8131 7.9085 H 1 JAKJ 0.0000 + 14 H3 6.4701 5.1919 7.0016 H 1 JAKJ 0.0000 + 15 H4 1.7194 -0.4485 6.6567 H 1 JAKJ 0.0000 + 16 H5 1.1521 0.8815 7.6657 H 1 JAKJ 0.0000 + 17 H6 0.9120 0.9486 5.9023 H 1 JAKJ 0.0000 + 18 H7 7.3335 2.7371 5.5989 H 1 JAKJ 0.4000 + 19 H8 3.7359 -0.1811 5.2245 H 1 JAKJ 0.1500 + 20 H9 2.3817 3.0481 7.7198 H 1 JAKJ 0.1500 + 21 H10 4.4890 4.2135 7.3860 H 1 JAKJ 0.1500 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 2 + 4 2 9 1 + 5 2 3 1 + 6 3 19 1 + 7 3 4 2 + 8 4 11 1 + 9 4 5 1 + 10 5 20 1 + 11 5 6 2 + 12 6 21 1 + 13 7 18 1 + 14 7 8 1 + 15 8 14 1 + 16 8 13 1 + 17 8 12 1 + 18 9 10 2 + 19 11 17 1 + 20 11 16 1 + 21 11 15 1 +@SUBSTRUCTURE + 1 JAKJ 1 +@COMMENT +COMMENT 4,N-DIMETHYL-2-NITROSOANILINE +@MOLECULE +JALSOE + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.4462 3.1964 11.5966 S.1 1 JALS 0.2123 + 2 S2 3.1577 2.0399 10.5115 S.2 1 JALS -0.7000 + 3 O1 4.3589 4.6772 11.3112 O.2 1 JALS -0.6000 + 4 C1 3.7921 3.0944 13.3341 C.3 1 JALS 0.0877 + 5 C2 4.7486 3.9412 14.2143 C.3 1 JALS 0.0000 + 6 C3 4.2948 3.8953 15.6847 C.3 1 JALS 0.0000 + 7 C4 4.3130 2.4384 16.1729 C.3 1 JALS 0.0000 + 8 C5 3.3714 1.5845 15.3092 C.3 1 JALS 0.0000 + 9 C6 3.8376 1.6381 13.8409 C.3 1 JALS 0.0000 + 10 C7 2.3678 3.6672 13.4511 C.3 1 JALS 0.0000 + 11 C8 1.9096 3.6085 14.9226 C.3 1 JALS 0.0000 + 12 C9 2.8639 4.4490 15.7873 C.3 1 JALS 0.0000 + 13 C10 1.9420 2.1477 15.4076 C.3 1 JALS 0.0000 + 14 H4 5.7800 3.5704 14.1401 H 1 JALS 0.0000 + 15 H5 4.7698 4.9883 13.8844 H 1 JALS 0.0000 + 16 H7 4.9706 4.4999 16.2998 H 1 JALS 0.0000 + 17 H8 4.0037 2.3912 17.2242 H 1 JALS 0.0000 + 18 H9 5.3332 2.0387 16.1228 H 1 JALS 0.0000 + 19 H10 3.3853 0.5474 15.6628 H 1 JALS 0.0000 + 20 H11 4.8522 1.2257 13.7613 H 1 JALS 0.0000 + 21 H12 3.1865 0.9814 13.2531 H 1 JALS 0.0000 + 22 H13 2.3270 4.7060 13.0993 H 1 JALS 0.0000 + 23 H14 1.6515 3.1030 12.8433 H 1 JALS 0.0000 + 24 H15 0.8909 4.0034 15.0067 H 1 JALS 0.0000 + 25 H16 2.8425 5.4957 15.4597 H 1 JALS 0.0000 + 26 H17 2.5316 4.4358 16.8326 H 1 JALS 0.0000 + 27 H18 1.5898 2.0915 16.4450 H 1 JALS 0.0000 + 28 H19 1.2570 1.5382 14.8056 H 1 JALS 0.0000 +@BOND + 1 1 4 1 + 2 1 3 2 + 3 1 2 2 + 4 4 10 1 + 5 4 9 1 + 6 4 5 1 + 7 5 15 1 + 8 5 14 1 + 9 5 6 1 + 10 6 16 1 + 11 6 12 1 + 12 6 7 1 + 13 7 18 1 + 14 7 17 1 + 15 7 8 1 + 16 8 19 1 + 17 8 13 1 + 18 8 9 1 + 19 9 21 1 + 20 9 20 1 + 21 10 23 1 + 22 10 22 1 + 23 10 11 1 + 24 11 24 1 + 25 11 13 1 + 26 11 12 1 + 27 12 26 1 + 28 12 25 1 + 29 13 28 1 + 30 13 27 1 +@SUBSTRUCTURE + 1 JALS 1 +@COMMENT +COMMENT S-BENZYLTHIURONIUM ADAMANTANETHIOSULFINATE +@MOLECULE +JAMREU + 52 53 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 12.7887 13.7509 2.4169 N.2 1 JAMR -0.9667 + 2 N2 10.9294 13.4017 1.1209 N.3 1 JAMR -0.9667 + 3 C1 11.5768 14.1542 2.0155 C.2 1 JAMR 1.2000 + 4 N3 11.0927 15.3159 2.4895 N.3 1 JAMR -0.8277 + 5 C2 9.7343 15.7356 2.4733 C.2 1 JAMR 0.3110 + 6 C3 9.4865 17.1071 2.5596 C.2 1 JAMR -0.1500 + 7 C4 8.1739 17.5922 2.5718 C.2 1 JAMR -0.1500 + 8 C5 7.0883 16.7084 2.5201 C.2 1 JAMR 0.0862 + 9 C6 7.3389 15.3308 2.4663 C.2 1 JAMR -0.1500 + 10 C7 8.6557 14.8487 2.4511 C.2 1 JAMR -0.1500 + 11 C8 5.7128 17.2844 2.5389 C.2 1 JAMR 0.6338 + 12 O1 5.5059 18.4868 2.5726 O.2 1 JAMR -0.5700 + 13 O2 4.7856 16.2621 2.5138 O.3 1 JAMR -0.2325 + 14 C9 3.4395 16.6500 2.5185 C.2 1 JAMR 0.0825 + 15 C10 2.6369 16.1560 3.5435 C.2 1 JAMR -0.1500 + 16 C11 1.2765 16.4626 3.5550 C.2 1 JAMR -0.1500 + 17 C12 0.7159 17.2513 2.5368 C.2 1 JAMR -0.1435 + 18 C13 1.5381 17.7218 1.5021 C.2 1 JAMR -0.1500 + 19 C14 2.8999 17.4159 1.4870 C.2 1 JAMR -0.1500 + 20 C15 -0.7596 17.5762 2.5595 C.3 1 JAMR 0.2045 + 21 C16 -1.6464 16.3835 2.2755 C.2 1 JAMR 0.6590 + 22 O3 -1.3443 15.4057 1.6038 O.2 1 JAMR -0.5700 + 23 O4 -2.8687 16.5778 2.8534 O.3 1 JAMR -0.4300 + 24 C17 -3.7104 15.4230 2.8265 C.3 1 JAMR 0.3410 + 25 C18 -3.2613 14.3481 3.8308 C.2 1 JAMR 0.5690 + 26 O5 -2.3355 14.5684 4.6173 O.2 1 JAMR -0.5700 + 27 N4 -3.9597 13.1405 3.8256 N.3 1 JAMR -0.6602 + 28 C19 -4.9160 12.7662 2.7954 C.3 1 JAMR 0.3001 + 29 C20 -3.4651 12.0589 4.6618 C.3 1 JAMR 0.3001 + 30 H1 13.3077 14.2580 3.1231 H 1 JAMR 0.4500 + 31 H2 13.2062 12.8978 2.0676 H 1 JAMR 0.4500 + 32 H3 11.3052 12.5236 0.7886 H 1 JAMR 0.4500 + 33 H4 10.1009 13.7522 0.6560 H 1 JAMR 0.4500 + 34 H5 11.7692 15.9754 2.8578 H 1 JAMR 0.4500 + 35 H6 10.3034 17.8235 2.6020 H 1 JAMR 0.1500 + 36 H7 8.0005 18.6677 2.6265 H 1 JAMR 0.1500 + 37 H8 6.5183 14.6145 2.4544 H 1 JAMR 0.1500 + 38 H9 8.7985 13.7723 2.4761 H 1 JAMR 0.1500 + 39 H10 3.0574 15.5348 4.3278 H 1 JAMR 0.1500 + 40 H11 0.6492 16.0730 4.3562 H 1 JAMR 0.1500 + 41 H12 1.1225 18.3254 0.6982 H 1 JAMR 0.1500 + 42 H13 3.5243 17.7796 0.6770 H 1 JAMR 0.1500 + 43 H14 -0.9979 18.3536 1.8247 H 1 JAMR 0.0000 + 44 H15 -1.0006 17.9784 3.5514 H 1 JAMR 0.0000 + 45 H16 -3.7590 15.0168 1.8105 H 1 JAMR 0.0000 + 46 H17 -4.7131 15.7551 3.1146 H 1 JAMR 0.0000 + 47 H18 -5.4607 13.6339 2.4186 H 1 JAMR 0.0000 + 48 H19 -5.6417 12.0604 3.2100 H 1 JAMR 0.0000 + 49 H20 -4.3729 12.2955 1.9707 H 1 JAMR 0.0000 + 50 H21 -4.3139 11.5047 5.0728 H 1 JAMR 0.0000 + 51 H22 -2.8576 12.4303 5.4913 H 1 JAMR 0.0000 + 52 H23 -2.8542 11.3925 4.0454 H 1 JAMR 0.0000 +@BOND + 1 1 31 1 + 2 1 30 1 + 3 1 3 2 + 4 2 33 1 + 5 2 32 1 + 6 2 3 am + 7 3 4 am + 8 4 34 1 + 9 4 5 1 + 10 5 10 1 + 11 5 6 2 + 12 6 35 1 + 13 6 7 1 + 14 7 36 1 + 15 7 8 2 + 16 8 11 1 + 17 8 9 1 + 18 9 37 1 + 19 9 10 2 + 20 10 38 1 + 21 11 13 1 + 22 11 12 2 + 23 13 14 1 + 24 14 19 1 + 25 14 15 2 + 26 15 39 1 + 27 15 16 1 + 28 16 40 1 + 29 16 17 2 + 30 17 20 1 + 31 17 18 1 + 32 18 41 1 + 33 18 19 2 + 34 19 42 1 + 35 20 44 1 + 36 20 43 1 + 37 20 21 1 + 38 21 23 1 + 39 21 22 2 + 40 23 24 1 + 41 24 46 1 + 42 24 45 1 + 43 24 25 1 + 44 25 27 am + 45 25 26 2 + 46 27 29 1 + 47 27 28 1 + 48 28 49 1 + 49 28 48 1 + 50 28 47 1 + 51 29 52 1 + 52 29 51 1 + 53 29 50 1 +@SUBSTRUCTURE + 1 JAMR 1 +@COMMENT +COMMENT N,N-DIMETHYLCARBAMOYLMETHYL-P-(P-GUANIDINOBENZOYLOXY)PHENYL +@MOLECULE +JANDOR + 53 56 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.3349 11.6677 3.5535 C.3 1 JAND 0.4182 + 2 C2 -0.5086 11.1681 2.3949 C.2 1 JAND -0.0372 + 3 C3 0.7569 11.6133 2.4757 C.2 1 JAND 0.1234 + 4 N1 0.9736 12.3879 3.6045 N.3 1 JAND -0.3940 + 5 C4 -0.3087 12.4733 4.3632 C.3 1 JAND 0.2250 + 6 C5 -0.1713 14.0238 4.2704 C.3 1 JAND 0.0530 + 7 C6 1.1152 13.7467 3.4871 C.2 1 JAND 0.5770 + 8 C7 -0.0113 14.8295 5.5486 C.3 1 JAND 0.2800 + 9 C8 -1.3623 15.0124 6.2256 C.3 1 JAND 0.0000 + 10 O1 0.8592 14.1548 6.4526 O.3 1 JAND -0.6800 + 11 O2 -2.3738 12.5402 3.1133 O.3 1 JAND -0.5600 + 12 C9 -3.6704 11.9895 3.3041 C.3 1 JAND 0.2800 + 13 S1 -1.1802 10.1291 1.1947 S.3 1 JAND -0.2025 + 14 C10 -1.3723 8.6289 2.1339 C.2 1 JAND 0.7215 + 15 N2 -2.2577 7.7344 1.6626 N.2 1 JAND -0.6200 + 16 C11 -2.3895 6.5922 2.3610 C.2 1 JAND 0.1600 + 17 C12 -1.6832 6.3182 3.5068 C.2 1 JAND -0.1500 + 18 C13 -0.8137 7.3007 3.9137 C.2 1 JAND 0.1600 + 19 N3 -0.6440 8.4630 3.2562 N.2 1 JAND -0.6200 + 20 C14 1.8667 11.3411 1.5136 C.2 1 JAND 0.7056 + 21 O3 1.7293 10.8844 0.3891 O.2 1 JAND -0.5700 + 22 O4 3.0571 11.6454 2.0942 O.3 1 JAND -0.4300 + 23 C15 4.2078 11.4562 1.2648 C.3 1 JAND 0.4235 + 24 C16 4.4512 12.6624 0.3893 C.2 1 JAND -0.1435 + 25 C17 4.5074 12.5296 -1.0059 C.2 1 JAND -0.1500 + 26 C18 4.7283 13.6455 -1.8173 C.2 1 JAND -0.1500 + 27 C19 4.8925 14.9055 -1.2282 C.2 1 JAND 0.1330 + 28 C20 4.8366 15.0541 0.1621 C.2 1 JAND -0.1500 + 29 C21 4.6175 13.9318 0.9638 C.2 1 JAND -0.1500 + 30 N4 5.1226 16.0806 -2.0768 N.2 1 JAND 0.9070 + 31 O5 5.1396 15.9121 -3.3051 O.3 1 JAND -0.5200 + 32 O6 5.2952 17.1739 -1.5182 O.2 1 JAND -0.5200 + 33 O7 1.9113 14.4298 2.8827 O.2 1 JAND -0.5700 + 34 H1 -1.7203 10.8425 4.1650 H 1 JAND 0.0000 + 35 H2 -0.1843 12.0633 5.3742 H 1 JAND 0.0000 + 36 H3 -0.9088 14.5025 3.6107 H 1 JAND 0.0000 + 37 H4 0.4225 15.8097 5.3206 H 1 JAND 0.0000 + 38 H5 -1.2535 15.5854 7.1526 H 1 JAND 0.0000 + 39 H6 -1.7990 14.0455 6.5000 H 1 JAND 0.0000 + 40 H7 -2.0683 15.5336 5.5717 H 1 JAND 0.0000 + 41 H8 -3.1024 5.8802 1.9546 H 1 JAND 0.1500 + 42 H9 -1.8019 5.3907 4.0492 H 1 JAND 0.1500 + 43 H10 -0.2068 7.1786 4.8066 H 1 JAND 0.1500 + 44 H11 4.1265 10.5301 0.6821 H 1 JAND 0.0000 + 45 H12 5.0712 11.3244 1.9273 H 1 JAND 0.0000 + 46 H13 4.3602 11.5556 -1.4703 H 1 JAND 0.1500 + 47 H14 4.7597 13.5164 -2.8969 H 1 JAND 0.1500 + 48 H15 4.9467 16.0270 0.6359 H 1 JAND 0.1500 + 49 H16 4.5491 14.0543 2.0446 H 1 JAND 0.1500 + 50 H17 1.0783 14.7792 7.1678 H 1 JAND 0.4000 + 51 H18 -3.7799 11.0468 2.7608 H 1 JAND 0.0000 + 52 H19 -3.8622 11.8344 4.3703 H 1 JAND 0.0000 + 53 H20 -4.4054 12.7013 2.9191 H 1 JAND 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 11 1 + 4 1 34 1 + 5 2 3 2 + 6 2 13 1 + 7 3 4 1 + 8 3 20 1 + 9 4 5 1 + 10 4 7 am + 11 5 6 1 + 12 5 35 1 + 13 6 7 1 + 14 6 8 1 + 15 6 36 1 + 16 7 33 2 + 17 8 9 1 + 18 8 10 1 + 19 8 37 1 + 20 9 38 1 + 21 9 39 1 + 22 9 40 1 + 23 10 50 1 + 24 11 12 1 + 25 12 51 1 + 26 12 52 1 + 27 12 53 1 + 28 13 14 1 + 29 14 15 2 + 30 14 19 am + 31 15 16 1 + 32 16 17 2 + 33 16 41 1 + 34 17 18 1 + 35 17 42 1 + 36 18 19 2 + 37 18 43 1 + 38 20 21 2 + 39 20 22 1 + 40 22 23 1 + 41 23 24 1 + 42 23 44 1 + 43 23 45 1 + 44 24 25 2 + 45 24 29 1 + 46 25 26 1 + 47 25 46 1 + 48 26 27 2 + 49 26 47 1 + 50 27 28 1 + 51 27 30 1 + 52 28 29 2 + 53 28 48 1 + 54 29 49 1 + 55 30 31 1 + 56 30 32 2 +@SUBSTRUCTURE + 1 JAND 1 +@COMMENT +COMMENT P-NITROBENZYL 1BETA-METHOXYCARBAPENEM ESTER +@MOLECULE +JANMAM + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.9782 18.6146 8.0182 P 1 JANM 1.2782 + 2 O1 0.6541 17.1074 7.4705 O.3 1 JANM -0.5512 + 3 O2 0.7957 18.5912 9.5252 O.2 1 JANM -0.9500 + 4 O3 2.3188 19.0282 7.4358 O.3 1 JANM -0.9500 + 5 O4 -2.3717 19.8254 6.2478 O.3 1 JANM -0.3370 + 6 N1 -1.3226 19.0275 6.7152 N.2 1 JANM -0.5130 + 7 C1 1.0340 16.8286 6.1412 C.3 1 JANM 0.2800 + 8 C2 -0.3571 19.7112 7.2745 C.2 1 JANM 0.2568 + 9 C3 -0.2369 21.1889 7.3783 C.2 1 JANM 0.0862 + 10 C4 -0.5435 22.0206 6.2957 C.2 1 JANM -0.1500 + 11 C5 -0.3996 23.4051 6.4115 C.2 1 JANM -0.1500 + 12 C6 0.0611 23.9608 7.6050 C.2 1 JANM -0.1500 + 13 C7 0.3841 23.1331 8.6803 C.2 1 JANM -0.1500 + 14 C8 0.2400 21.7486 8.5666 C.2 1 JANM -0.1500 + 15 H1 -0.8767 21.5896 5.3563 H 1 JANM 0.1500 + 16 H2 -0.6371 24.0448 5.5670 H 1 JANM 0.1500 + 17 H3 0.1809 25.0364 7.6947 H 1 JANM 0.1500 + 18 H4 0.7587 23.5565 9.6079 H 1 JANM 0.1500 + 19 H5 0.5047 21.1112 9.4093 H 1 JANM 0.1500 + 20 H7 0.7678 17.6487 5.4689 H 1 JANM 0.0000 + 21 H8 2.1115 16.6491 6.0951 H 1 JANM 0.0000 + 22 H9 0.5154 15.9246 5.8116 H 1 JANM 0.0000 + 23 H6 -3.0358 19.1537 6.0125 H 1 JANM 0.4000 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 1 + 4 1 8 1 + 5 2 7 1 + 6 5 23 1 + 7 5 6 1 + 8 6 8 2 + 9 7 20 1 + 10 7 21 1 + 11 7 22 1 + 12 8 9 1 + 13 9 10 2 + 14 9 14 1 + 15 10 11 1 + 16 10 15 1 + 17 11 12 2 + 18 11 16 1 + 19 12 13 1 + 20 12 17 1 + 21 13 14 2 + 22 13 18 1 + 23 14 19 1 +@SUBSTRUCTURE + 1 JANM 1 +@COMMENT +COMMENT SODIUM METHYL (ALPHA(HYDROXYIMINO)BENZYL)PHOSPHONATE +@MOLECULE +JAPFAH + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.7456 4.7092 1.8759 S.3 1 UNCH -0.3710 + 2 C1 0.3305 4.9919 4.5064 C.3 1 UNCH 0.3001 + 3 C2 -0.3825 4.4039 3.2923 C.3 1 UNCH 0.2300 + 4 C3 1.5606 5.9704 2.7146 C.2 1 UNCH 0.6510 + 5 N1 2.4360 6.8251 2.3078 N.2 1 UNCH -0.6210 + 6 N2 1.1883 6.0272 4.0048 N.3 1 UNCH -0.4201 + 7 C4 1.9210 6.9834 4.6128 C.2 1 UNCH 0.6156 + 8 O1 1.9636 7.3042 5.7830 O.2 1 UNCH -0.5700 + 9 C5 2.7195 7.5357 3.4634 C.2 1 UNCH 0.1854 + 10 C6 3.5583 8.5675 3.6191 C.2 1 UNCH -0.1784 + 11 C7 4.3762 9.1829 2.5641 C.2 1 UNCH 0.0284 + 12 C8 5.0266 8.4274 1.5798 C.2 1 UNCH -0.1500 + 13 C9 5.8169 9.0684 0.6153 C.2 1 UNCH 0.1330 + 14 N3 6.4935 8.2722 -0.4145 N.2 1 UNCH 0.9070 + 15 O2 7.0089 8.8799 -1.3645 O.3 1 UNCH -0.5200 + 16 O3 6.5201 7.0416 -0.2716 O.2 1 UNCH -0.5200 + 17 C10 5.9771 10.4595 0.6273 C.2 1 UNCH -0.1500 + 18 C11 5.3458 11.2101 1.6172 C.2 1 UNCH -0.1500 + 19 C12 4.5572 10.5747 2.5810 C.2 1 UNCH -0.1500 + 20 H1 0.9614 4.2424 4.9983 H 1 UNCH 0.0000 + 21 H2 -0.3594 5.3957 5.2534 H 1 UNCH 0.0000 + 22 H3 -1.3163 4.9414 3.0986 H 1 UNCH 0.0000 + 23 H4 -0.6025 3.3400 3.4129 H 1 UNCH 0.0000 + 24 H5 3.6455 9.0255 4.6030 H 1 UNCH 0.1500 + 25 H6 4.9150 7.3447 1.5642 H 1 UNCH 0.1500 + 26 H7 6.5887 10.9658 -0.1165 H 1 UNCH 0.1500 + 27 H8 5.4658 12.2909 1.6412 H 1 UNCH 0.1500 + 28 H9 4.0730 11.1826 3.3439 H 1 UNCH 0.1500 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 2 3 1 + 4 2 6 1 + 5 2 20 1 + 6 2 21 1 + 7 3 22 1 + 8 3 23 1 + 9 4 5 2 + 10 4 6 am + 11 5 9 1 + 12 6 7 am + 13 7 8 2 + 14 7 9 1 + 15 9 10 2 + 16 10 11 1 + 17 10 24 1 + 18 11 12 1 + 19 11 19 2 + 20 12 13 2 + 21 12 25 1 + 22 13 14 1 + 23 13 17 1 + 24 14 15 1 + 25 14 16 2 + 26 17 18 2 + 27 17 26 1 + 28 18 19 1 + 29 18 27 1 + 30 19 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3-DIHYDRO-6-(3-NITROBENZYLIDENE)IMADAZO(2,1-B)THIAZOL-5(6 +@MOLECULE +JATBIP + 24 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.5094 0.0778 4.5172 N.2 1 UNCH -0.4500 + 2 C1 1.2317 1.1373 4.7000 C.2 1 UNCH 0.7500 + 3 O1 1.0277 2.0219 5.7151 O.3 1 UNCH -0.4300 + 4 C2 1.8954 3.1545 5.8083 C.3 1 UNCH 0.2800 + 5 O2 2.2731 1.4757 3.8920 O.3 1 UNCH -0.4300 + 6 C3 2.5269 0.5764 2.8103 C.3 1 UNCH 0.2800 + 7 H1 1.5843 3.7461 6.6739 H 1 UNCH 0.0000 + 8 H2 1.8075 3.7797 4.9146 H 1 UNCH 0.0000 + 9 H3 2.9297 2.8335 5.9647 H 1 UNCH 0.0000 + 10 H4 3.3804 0.9621 2.2457 H 1 UNCH 0.0000 + 11 H5 1.6639 0.5284 2.1388 H 1 UNCH 0.0000 + 12 H6 2.7858 -0.4175 3.1885 H 1 UNCH 0.0000 + 13 N1B -0.5094 -0.0778 5.4658 N.2 1 UNCH -0.4500 + 14 C1B -1.2317 -1.1373 5.2830 C.2 1 UNCH 0.7500 + 15 O1B -1.0277 -2.0219 4.2679 O.3 1 UNCH -0.4300 + 16 O2B -2.2731 -1.4757 6.0910 O.3 1 UNCH -0.4300 + 17 C2B -1.8954 -3.1545 4.1747 C.3 1 UNCH 0.2800 + 18 C3B -2.5269 -0.5764 7.1727 C.3 1 UNCH 0.2800 + 19 H1B -1.5843 -3.7461 3.3091 H 1 UNCH 0.0000 + 20 H2B -1.8075 -3.7797 5.0684 H 1 UNCH 0.0000 + 21 H3B -2.9297 -2.8335 4.0183 H 1 UNCH 0.0000 + 22 H4B -3.3804 -0.9621 7.7373 H 1 UNCH 0.0000 + 23 H5B -1.6639 -0.5284 7.8442 H 1 UNCH 0.0000 + 24 H6B -2.7858 0.4175 6.7945 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 13 1 + 3 2 3 1 + 4 2 5 1 + 5 3 4 1 + 6 4 7 1 + 7 4 8 1 + 8 4 9 1 + 9 5 6 1 + 10 6 10 1 + 11 6 11 1 + 12 6 12 1 + 13 13 14 2 + 14 14 15 1 + 15 14 16 1 + 16 15 17 1 + 17 16 18 1 + 18 17 19 1 + 19 17 20 1 + 20 17 21 1 + 21 18 22 1 + 22 18 23 1 + 23 18 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TETRAMETHOXYFORMALDAZINE +@MOLECULE +JATCOW + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 15.4231 5.1345 4.3797 S.3 1 JATC -0.0800 + 2 C1 16.2688 4.8652 5.8258 C.2 1 JATC 0.5021 + 3 N1 15.6497 5.0934 6.9535 N.2 1 JATC -0.5653 + 4 N2 13.5051 5.8494 7.6431 N.2 1 JATC -0.5660 + 5 C2 12.3170 6.2556 7.1929 C.2 1 JATC 0.4700 + 6 N3 11.9207 6.3693 5.9140 N.2 1 JATC -0.6200 + 7 C3 12.7922 6.0587 4.9397 C.2 1 JATC 0.4100 + 8 C4 14.0593 5.6227 5.3075 C.2 1 JATC 0.0400 + 9 C5 14.3759 5.5335 6.6617 C.2 1 JATC 0.4832 + 10 CL1 17.8896 4.3021 5.7690 CL 1 JATC -0.1240 + 11 N4 12.3647 6.1879 3.6293 N.3 1 JATC -0.9000 + 12 H1 11.5828 6.5243 7.9467 H 1 JATC 0.1500 + 13 H2 12.8305 5.6122 2.9413 H 1 JATC 0.4000 + 14 H3 11.3556 6.2589 3.5634 H 1 JATC 0.4000 +@BOND + 1 1 8 1 + 2 1 2 1 + 3 2 10 1 + 4 2 3 2 + 5 3 9 1 + 6 4 9 1 + 7 4 5 2 + 8 5 12 1 + 9 5 6 am + 10 6 7 2 + 11 7 11 am + 12 7 8 1 + 13 8 9 2 + 14 11 14 1 + 15 11 13 1 +@SUBSTRUCTURE + 1 JATC 1 +@COMMENT +COMMENT 7-AMINO-2-CHLORO(1,3)THIAZOLO(4,5-D)PYRIMIDINE +@MOLECULE +JATLOF + 36 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.6173 1.6947 0.2386 S.3 1 JATL -0.0800 + 2 C1 4.4623 0.5379 0.7468 C.2 1 JATL 0.6361 + 3 N1 3.2068 0.9056 0.6394 N.2 1 JATL -0.5653 + 4 C2 3.1246 2.2059 0.1466 C.2 1 JATL 0.0462 + 5 C3 4.3495 2.7837 -0.1368 C.2 1 JATL -0.1100 + 6 N2 4.9591 -0.6585 1.2179 N.2 1 JATL -0.7747 + 7 C4 4.1490 -1.6280 1.6767 C.2 1 JATL 1.2000 + 8 N3 4.6849 -2.7790 2.1135 N.3 1 JATL -0.9667 + 9 N4 2.8189 -1.5006 1.7234 N.3 1 JATL -0.9667 + 10 C5 1.7807 2.8442 -0.0260 C.3 1 JATL 0.4110 + 11 S2 0.8935 3.0652 1.5572 S.3 1 JATL -0.4600 + 12 C6 2.0962 4.0711 2.4959 C.3 1 JATL 0.2300 + 13 C7 2.3006 5.4658 1.9141 C.3 1 JATL 0.0610 + 14 C8 3.5804 6.0708 2.4803 C.2 1 JATL 0.4390 + 15 N5 3.4320 7.1183 3.3515 N.3 1 JATL -0.8500 + 16 N6 4.6710 5.5194 2.0680 N.2 1 JATL -0.6380 + 17 S3 6.1298 5.9847 2.5469 S.1 1 JATL 1.6260 + 18 N7 6.4663 5.1708 3.9732 N.3 1 JATL -0.9780 + 19 O1 7.1090 5.4748 1.6150 O.2 1 JATL -0.6500 + 20 O2 6.1192 7.3815 2.9247 O.2 1 JATL -0.6500 + 21 H1 4.5596 3.7744 -0.5196 H 1 JATL 0.1500 + 22 H2 5.9576 -0.8030 1.2256 H 1 JATL 0.4500 + 23 H3 5.6824 -2.9476 2.1051 H 1 JATL 0.4500 + 24 H4 4.0969 -3.5246 2.4648 H 1 JATL 0.4500 + 25 H5 2.1973 -2.2164 2.0687 H 1 JATL 0.4500 + 26 H6 2.3986 -0.6252 1.3979 H 1 JATL 0.4500 + 27 H7 1.8565 3.8038 -0.5456 H 1 JATL 0.0000 + 28 H8 1.1640 2.1949 -0.6570 H 1 JATL 0.0000 + 29 H9 1.7099 4.1670 3.5173 H 1 JATL 0.0000 + 30 H10 3.0319 3.5109 2.5866 H 1 JATL 0.0000 + 31 H11 2.4181 5.4500 0.8258 H 1 JATL 0.0000 + 32 H12 1.4418 6.1066 2.1429 H 1 JATL 0.0000 + 33 H13 4.2520 7.7251 3.4466 H 1 JATL 0.4000 + 34 H14 2.5742 7.6607 3.2976 H 1 JATL 0.4000 + 35 H15 6.4422 5.8442 4.7401 H 1 JATL 0.4200 + 36 H16 7.3917 4.7510 3.8771 H 1 JATL 0.4200 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 6 am + 4 2 3 2 + 5 3 4 1 + 6 4 10 1 + 7 4 5 2 + 8 5 21 1 + 9 6 22 1 + 10 6 7 2 + 11 7 9 am + 12 7 8 am + 13 8 24 1 + 14 8 23 1 + 15 9 26 1 + 16 9 25 1 + 17 10 28 1 + 18 10 27 1 + 19 10 11 1 + 20 11 12 1 + 21 12 30 1 + 22 12 29 1 + 23 12 13 1 + 24 13 32 1 + 25 13 31 1 + 26 13 14 1 + 27 14 16 2 + 28 14 15 am + 29 15 34 1 + 30 15 33 1 + 31 16 17 1 + 32 17 20 2 + 33 17 19 2 + 34 17 18 1 + 35 18 36 1 + 36 18 35 1 +@SUBSTRUCTURE + 1 JATL 1 +@COMMENT +COMMENT 3-(2-(DIAMINOMETHYLENEAMINO)-4-THIAZOLYLMETHYLTHIO)-N'-SULF +@MOLECULE +JATMEW + 38 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.6555 -3.0519 3.4049 S.3 1 UNCH -0.0800 + 2 C1 4.3017 -3.7699 2.6017 C.2 1 UNCH 0.4621 + 3 N1 3.1600 -3.1487 2.8140 N.2 1 UNCH -0.5653 + 4 C2 3.3312 -2.0514 3.6472 C.2 1 UNCH 0.0462 + 5 C3 4.6296 -1.8635 4.0805 C.2 1 UNCH -0.1100 + 6 N2 4.3738 -4.8562 1.7790 N.3 1 UNCH -0.4950 + 7 N3 5.3002 -5.8544 2.1834 N.3 1 UNCH -0.5290 + 8 C4 5.9165 -6.4164 0.9797 C.3 1 UNCH 0.2700 + 9 C5 4.6043 -6.8977 2.9441 C.3 1 UNCH 0.2700 + 10 C6 2.1461 -1.2157 4.0061 C.3 1 UNCH 0.4110 + 11 S2 1.5750 -0.1256 2.6551 S.3 1 UNCH -0.4600 + 12 C7 3.0985 0.8094 2.2864 C.3 1 UNCH 0.2300 + 13 C8 3.4843 1.7604 3.4124 C.3 1 UNCH 0.0610 + 14 C9 4.8493 2.3653 3.1103 C.2 1 UNCH 0.4390 + 15 N4 4.8514 3.6010 2.5141 N.3 1 UNCH -0.8500 + 16 N5 5.8600 1.6378 3.4458 N.2 1 UNCH -0.6380 + 17 S3 7.3665 2.0929 3.1384 S.1 1 UNCH 1.6260 + 18 N6 8.3402 1.3116 4.2544 N.3 1 UNCH -0.9780 + 19 O1 7.7856 1.5497 1.8675 O.2 1 UNCH -0.6500 + 20 O2 7.5329 3.5022 3.4269 O.2 1 UNCH -0.6500 + 21 H1 5.0212 -1.0929 4.7291 H 1 UNCH 0.1500 + 22 H2 3.4592 -5.1725 1.4595 H 1 UNCH 0.4000 + 23 H3 5.1792 -6.8731 0.3088 H 1 UNCH 0.0000 + 24 H4 6.4503 -5.6371 0.4236 H 1 UNCH 0.0000 + 25 H5 6.6575 -7.1772 1.2489 H 1 UNCH 0.0000 + 26 H6 4.1540 -6.4803 3.8519 H 1 UNCH 0.0000 + 27 H7 3.8126 -7.3805 2.3591 H 1 UNCH 0.0000 + 28 H8 5.3125 -7.6680 3.2687 H 1 UNCH 0.0000 + 29 H9 1.3118 -1.8780 4.2626 H 1 UNCH 0.0000 + 30 H10 2.3454 -0.6119 4.8970 H 1 UNCH 0.0000 + 31 H11 3.9085 0.1199 2.0300 H 1 UNCH 0.0000 + 32 H12 2.9052 1.3911 1.3775 H 1 UNCH 0.0000 + 33 H13 2.7409 2.5586 3.5196 H 1 UNCH 0.0000 + 34 H14 3.5582 1.2456 4.3762 H 1 UNCH 0.0000 + 35 H15 4.0190 4.1742 2.6080 H 1 UNCH 0.4000 + 36 H16 5.7080 4.1474 2.6274 H 1 UNCH 0.4000 + 37 H17 8.7495 0.4956 3.7990 H 1 UNCH 0.4200 + 38 H18 9.0476 1.9671 4.5833 H 1 UNCH 0.4200 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 6 am + 5 3 4 1 + 6 4 5 2 + 7 4 10 1 + 8 5 21 1 + 9 6 7 1 + 10 6 22 1 + 11 7 8 1 + 12 7 9 1 + 13 8 23 1 + 14 8 24 1 + 15 8 25 1 + 16 9 26 1 + 17 9 27 1 + 18 9 28 1 + 19 10 11 1 + 20 10 29 1 + 21 10 30 1 + 22 11 12 1 + 23 12 13 1 + 24 12 31 1 + 25 12 32 1 + 26 13 14 1 + 27 13 33 1 + 28 13 34 1 + 29 14 15 am + 30 14 16 2 + 31 15 35 1 + 32 15 36 1 + 33 16 17 1 + 34 17 18 1 + 35 17 19 2 + 36 17 20 2 + 37 18 37 1 + 38 18 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-(2-N',N'-(DIMETHYLHYDRAZINO)-4-THIAZOLYLMETHYLTHIO)-N''-S +@MOLECULE +JAVGAO + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.1791 0.6231 1.2604 S.3 1 JATV -0.0845 + 2 O1 2.2659 3.3478 3.4050 O.3 1 JATV -0.5200 + 3 O2 2.7715 1.7063 4.7895 O.2 1 JATV -0.5200 + 4 N1 2.0038 1.3812 -0.2216 N.3 1 JATV -0.5570 + 5 N2 2.9307 2.3618 3.7511 N.2 1 JATV 0.9070 + 6 C1 3.7952 1.2190 1.7438 C.2 1 JATV 0.1015 + 7 C2 4.0290 1.9755 2.8971 C.2 1 JATV 0.1330 + 8 C3 5.3122 2.3993 3.2715 C.2 1 JATV -0.1500 + 9 C4 6.3974 2.0589 2.4677 C.2 1 JATV -0.1500 + 10 C5 6.1941 1.3059 1.3108 C.2 1 JATV -0.1500 + 11 C6 4.9060 0.8877 0.9539 C.2 1 JATV -0.1500 + 12 C7 1.4899 2.7579 -0.2388 C.3 1 JATV 0.2700 + 13 H1 5.4660 2.9859 4.1743 H 1 JATV 0.1500 + 14 H2 7.4011 2.3782 2.7396 H 1 JATV 0.1500 + 15 H3 7.0407 1.0387 0.6815 H 1 JATV 0.1500 + 16 H4 4.7756 0.2980 0.0479 H 1 JATV 0.1500 + 17 H5 0.4334 2.7970 0.0504 H 1 JATV 0.0000 + 18 H6 2.0566 3.3986 0.4463 H 1 JATV 0.0000 + 19 H7 1.5960 3.2052 -1.2338 H 1 JATV 0.0000 + 20 C7C 1.3661 0.6217 -1.3034 C.3 1 JATV 0.2700 + 21 H5C 0.2950 0.4783 -1.1199 H 1 JATV 0.0000 + 22 H6C 1.8303 -0.3656 -1.4119 H 1 JATV 0.0000 + 23 H7C 1.4906 1.1279 -2.2675 H 1 JATV 0.0000 +@BOND + 1 1 4 1 + 2 1 6 1 + 3 2 5 1 + 4 3 5 2 + 5 4 12 1 + 6 4 20 1 + 7 5 7 1 + 8 6 7 2 + 9 6 11 1 + 10 7 8 1 + 11 8 9 2 + 12 8 13 1 + 13 9 10 1 + 14 9 14 1 + 15 10 11 2 + 16 10 15 1 + 17 11 16 1 + 18 12 17 1 + 19 12 18 1 + 20 12 19 1 + 21 20 21 1 + 22 20 22 1 + 23 20 23 1 +@SUBSTRUCTURE + 1 JATV 1 +@COMMENT +COMMENT N,N-DIMETHYL-O-NITROBENZENESULFENAMIDE +@MOLECULE +JAWJIA + 37 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.1716 2.0417 10.7477 N.3 1 UNCH -0.4900 + 2 C1 1.9337 1.7930 9.4212 C.2 1 UNCH 0.5600 + 3 N2 1.9446 2.7184 8.5078 N.2 1 UNCH -0.6210 + 4 C2 2.2196 3.9748 8.9547 C.2 1 UNCH 0.2800 + 5 C3 2.4617 4.3303 10.2200 C.2 1 UNCH 0.1234 + 6 C4 2.4271 3.2966 11.2528 C.2 1 UNCH 0.6156 + 7 N3 2.7318 5.6704 10.2971 N.3 1 UNCH -0.4691 + 8 C5 2.6701 6.1993 8.9870 C.2 1 UNCH 0.6900 + 9 N4 2.3233 5.0961 8.1677 N.3 1 UNCH -0.4691 + 10 N5 1.6839 0.5069 9.0747 N.3 1 UNCH -0.8500 + 11 O1 2.6078 3.5120 12.4443 O.2 1 UNCH -0.5700 + 12 C6 3.0656 6.4060 11.4835 C.3 1 UNCH 0.3001 + 13 O2 2.8733 7.3513 8.6443 O.2 1 UNCH -0.5700 + 14 C7 2.2223 5.1844 6.7384 C.3 1 UNCH 0.5801 + 15 C8 3.3310 4.4454 5.9785 C.3 1 UNCH 0.2800 + 16 C9 2.6553 4.2182 4.6359 C.3 1 UNCH 0.2800 + 17 C10 1.1854 4.0041 5.0078 C.3 1 UNCH 0.2800 + 18 C11 0.7753 2.5312 5.0957 C.3 1 UNCH 0.2800 + 19 O3 4.5365 5.1964 5.8371 O.3 1 UNCH -0.6800 + 20 O4 2.8068 5.4278 3.8635 O.3 1 UNCH -0.6800 + 21 O5 0.9723 4.6186 6.2996 O.3 1 UNCH -0.5600 + 22 O6 1.6214 1.7901 5.9682 O.3 1 UNCH -0.6800 + 23 H1 2.1014 1.2985 11.4240 H 1 UNCH 0.3700 + 24 H2 1.7302 0.3536 8.0681 H 1 UNCH 0.4000 + 25 H3 2.1774 -0.2105 9.5900 H 1 UNCH 0.4000 + 26 H4 3.9827 5.9962 11.9162 H 1 UNCH 0.0000 + 27 H5 3.2258 7.4607 11.2434 H 1 UNCH 0.0000 + 28 H6 2.2459 6.3240 12.2029 H 1 UNCH 0.0000 + 29 H7 2.2190 6.2449 6.4573 H 1 UNCH 0.0000 + 30 H8 3.5796 3.4898 6.4488 H 1 UNCH 0.0000 + 31 H9 3.1040 3.4059 4.0568 H 1 UNCH 0.0000 + 32 H10 0.5217 4.5128 4.2996 H 1 UNCH 0.0000 + 33 H11 -0.2483 2.4389 5.4733 H 1 UNCH 0.0000 + 34 H12 0.8241 2.0632 4.1079 H 1 UNCH 0.0000 + 35 H13 4.3481 5.8532 5.1348 H 1 UNCH 0.4000 + 36 H14 2.4141 5.2651 2.9867 H 1 UNCH 0.4000 + 37 H15 1.5576 2.2403 6.8435 H 1 UNCH 0.4000 +@BOND + 1 1 2 am + 2 1 6 am + 3 1 23 1 + 4 2 3 2 + 5 2 10 am + 6 3 4 1 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 7 1 + 11 6 11 2 + 12 7 8 am + 13 7 12 1 + 14 8 9 am + 15 8 13 2 + 16 9 14 1 + 17 10 24 1 + 18 10 25 1 + 19 12 26 1 + 20 12 27 1 + 21 12 28 1 + 22 14 15 1 + 23 14 21 1 + 24 14 29 1 + 25 15 16 1 + 26 15 19 1 + 27 15 30 1 + 28 16 17 1 + 29 16 20 1 + 30 16 31 1 + 31 17 18 1 + 32 17 21 1 + 33 17 32 1 + 34 18 22 1 + 35 18 33 1 + 36 18 34 1 + 37 19 35 1 + 38 20 36 1 + 39 22 37 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 7-METHYL-8-OXO-7,8-DIHYDROGUANOSINE MONOHYDRATE +@MOLECULE +JAWMAV + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.4997 -0.6430 2.0602 O.3 1 UNCH -0.6579 + 2 N1 3.8576 2.4510 2.0603 N.3 1 UNCH -0.7792 + 3 C1 3.5396 0.3595 2.0602 C.3 1 UNCH 0.2579 + 4 C2 3.4242 1.4978 3.1011 C.3 1 UNCH 0.2096 + 5 H1 4.5274 -0.1185 2.0601 H 1 UNCH 0.0000 + 6 H2 2.4067 1.6758 3.4681 H 1 UNCH 0.0000 + 7 H3 4.1014 1.4225 3.9563 H 1 UNCH 0.0000 + 8 H4 3.3692 3.3452 2.0604 H 1 UNCH 0.3600 + 9 H5 1.6638 -0.1467 2.0603 H 1 UNCH 0.4000 + 10 C2G 3.4240 1.4979 1.0194 C.3 1 UNCH 0.2096 + 11 H2G 2.4064 1.6760 0.6527 H 1 UNCH 0.0000 + 12 H3G 4.1011 1.4227 0.1641 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 9 1 + 3 2 4 1 + 4 2 8 1 + 5 2 10 1 + 6 3 4 1 + 7 3 5 1 + 8 3 10 1 + 9 4 6 1 + 10 4 7 1 + 11 10 11 1 + 12 10 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-AZETIDINOL (AT 110 DEG.K) +@MOLECULE +JAWVEI + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 4.8885 -0.9639 5.9838 O.3 1 UNCH -0.6800 + 2 O2 3.6598 0.9700 8.8200 O.3 1 UNCH -0.2960 + 3 O3 6.2895 1.5865 6.4253 O.3 1 UNCH -0.6800 + 4 C1 5.8404 -0.8853 8.1590 C.2 1 UNCH -0.2114 + 5 C2 4.5429 -0.8845 7.3694 C.3 1 UNCH 0.5132 + 6 C3 3.6583 0.3180 7.5392 C.3 1 UNCH -0.0470 + 7 C4 4.3278 1.6432 7.7420 C.3 1 UNCH -0.0470 + 8 C5 5.8243 1.6526 7.7786 C.3 1 UNCH 0.3750 + 9 C6 6.4016 0.4660 8.5717 C.3 1 UNCH 0.1382 + 10 C7 6.4354 -1.9961 8.5079 C.1 1 UNCH -0.1300 + 11 C8 7.0267 -3.1026 8.8522 C.2 1 UNCH -0.0850 + 12 C9 7.2915 -3.4806 10.2295 C.2 1 UNCH -0.1382 + 13 C10 7.9131 -4.6396 10.5032 C.2 1 UNCH -0.3000 + 14 C11 6.8550 -2.5551 11.3347 C.3 1 UNCH 0.1382 + 15 H1 5.4209 -0.1655 5.7929 H 1 UNCH 0.4000 + 16 H2 7.2580 1.6908 6.4534 H 1 UNCH 0.4000 + 17 H3 3.9585 -1.7797 7.6113 H 1 UNCH 0.0000 + 18 H4 2.7323 0.2649 6.9855 H 1 UNCH 0.1000 + 19 H5 3.8830 2.5314 7.3182 H 1 UNCH 0.1000 + 20 H6 6.1753 2.5966 8.2091 H 1 UNCH 0.0000 + 21 H7 7.4921 0.4507 8.4483 H 1 UNCH 0.0000 + 22 H8 6.1929 0.6105 9.6396 H 1 UNCH 0.0000 + 23 H9 7.3356 -3.7842 8.0644 H 1 UNCH 0.1500 + 24 H10 8.2338 -5.3218 9.7215 H 1 UNCH 0.1500 + 25 H11 8.1190 -4.9427 11.5253 H 1 UNCH 0.1500 + 26 H12 7.3490 -1.5816 11.2443 H 1 UNCH 0.0000 + 27 H13 5.7702 -2.4043 11.3104 H 1 UNCH 0.0000 + 28 H14 7.1048 -2.9551 12.3238 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 15 1 + 3 2 6 1 + 4 2 7 1 + 5 3 8 1 + 6 3 16 1 + 7 4 5 1 + 8 4 9 1 + 9 4 10 2 + 10 5 6 1 + 11 5 17 1 + 12 6 7 1 + 13 6 18 1 + 14 7 8 1 + 15 7 19 1 + 16 8 9 1 + 17 8 20 1 + 18 9 21 1 + 19 9 22 1 + 20 10 11 2 + 21 11 12 1 + 22 11 23 1 + 23 12 13 2 + 24 12 14 1 + 25 13 24 1 + 26 13 25 1 + 27 14 26 1 + 28 14 27 1 + 29 14 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-(3-METHYLBUTA-1,3-DIENYLIDENE)-2,3-EPOXYCYCLOHEXANE-1,4-D +@MOLECULE +JAWZEM + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -2.8584 1.5244 7.6687 P 1 JAWZ 1.2840 + 2 O1 -2.7770 2.1463 6.2845 O.3 1 JAWZ -0.9500 + 3 O2 -4.1747 0.9922 8.2108 O.2 1 JAWZ -0.9500 + 4 N1 -2.8774 2.9770 10.1132 N.3 1 JAWZ 0.0332 + 5 N2 -1.1367 3.4116 8.8174 N.2 1 JAWZ -0.5653 + 6 N3 -0.7414 -0.0808 6.6551 N.3 1 JAWZ 0.0332 + 7 N4 -1.3595 -0.5971 8.7165 N.2 1 JAWZ -0.5653 + 8 C1 -2.2549 2.6964 8.9128 C.2 1 JAWZ -0.0055 + 9 C2 -2.1343 3.8973 10.7901 C.2 1 JAWZ -0.3016 + 10 C3 -1.0636 4.1512 9.9688 C.2 1 JAWZ 0.0772 + 11 C4 -1.6030 0.2172 7.6925 C.2 1 JAWZ -0.0055 + 12 C5 -0.3382 -1.4162 8.3115 C.2 1 JAWZ 0.0772 + 13 C6 0.0631 -1.1137 7.0337 C.2 1 JAWZ -0.3016 + 14 H1 -0.2390 4.8280 10.1433 H 1 JAWZ 0.1500 + 15 H2 -2.4226 4.2735 11.7592 H 1 JAWZ 0.1500 + 16 H3 -3.7442 2.5266 10.3785 H 1 JAWZ 0.2700 + 17 H4 0.0537 -2.1815 8.9667 H 1 JAWZ 0.1500 + 18 H5 0.8210 -1.5241 6.3849 H 1 JAWZ 0.1500 + 19 H6 -0.7629 0.4342 5.7840 H 1 JAWZ 0.2700 +@BOND + 1 1 11 1 + 2 1 8 1 + 3 1 3 2 + 4 1 2 1 + 5 4 16 1 + 6 4 9 1 + 7 4 8 am + 8 5 10 1 + 9 5 8 2 + 10 6 19 1 + 11 6 13 1 + 12 6 11 am + 13 7 12 1 + 14 7 11 2 + 15 9 15 1 + 16 9 10 2 + 17 10 14 1 + 18 12 17 1 + 19 12 13 2 + 20 13 18 1 +@SUBSTRUCTURE + 1 JAWZ 1 +@COMMENT +COMMENT BIS(IMIDAZOL-2-YL)PHOSPHINIC ACID HEMIHYDRATE +@MOLECULE +JAZGOG + 30 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.1118 1.8927 26.0938 S.1 1 UNCH 1.3328 + 2 O1 2.9757 1.8500 24.6547 O.2 1 UNCH -0.6500 + 3 O2 3.4333 0.7157 26.8708 O.2 1 UNCH -0.6500 + 4 O3 3.6681 4.3434 25.9553 O.3 1 UNCH -0.0650 + 5 O4 5.4007 5.3998 27.9398 O.2 1 UNCH -0.5700 + 6 O5 3.7855 5.1284 29.5146 O.3 1 UNCH -0.4300 + 7 N1 4.1919 3.1461 26.5394 N.3 1 UNCH -0.4520 + 8 C1 4.3169 4.9353 28.2647 C.2 1 UNCH 0.7200 + 9 C2 3.4657 4.1266 27.3588 C.3 1 UNCH 0.2840 + 10 C3 2.0780 3.6885 27.7618 C.3 1 UNCH 0.0950 + 11 C4 1.1744 4.9468 27.7273 C.3 1 UNCH 0.0000 + 12 C5 1.4668 5.6746 29.0509 C.3 1 UNCH 0.0000 + 13 C6 2.4182 4.7372 29.8133 C.3 1 UNCH 0.2800 + 14 C7 2.0969 3.3232 29.2783 C.3 1 UNCH 0.0000 + 15 C8 0.7335 2.8296 29.8160 C.3 1 UNCH 0.0000 + 16 C9 3.1432 2.2817 29.7094 C.3 1 UNCH 0.0000 + 17 C10 1.6279 2.6151 26.7802 C.3 1 UNCH 0.1052 + 18 H1 1.3864 5.5965 26.8705 H 1 UNCH 0.0000 + 19 H2 0.1128 4.6793 27.6720 H 1 UNCH 0.0000 + 20 H3 1.9123 6.6584 28.8696 H 1 UNCH 0.0000 + 21 H4 0.5318 5.8193 29.6030 H 1 UNCH 0.0000 + 22 H5 2.2885 4.8237 30.8967 H 1 UNCH 0.0000 + 23 H6 0.4923 1.8333 29.4304 H 1 UNCH 0.0000 + 24 H7 -0.1026 3.4859 29.5614 H 1 UNCH 0.0000 + 25 H8 0.7581 2.7573 30.9098 H 1 UNCH 0.0000 + 26 H9 3.2034 2.2334 30.8032 H 1 UNCH 0.0000 + 27 H10 2.8689 1.2823 29.3574 H 1 UNCH 0.0000 + 28 H11 4.1527 2.4913 29.3482 H 1 UNCH 0.0000 + 29 H12 1.0806 3.0535 25.9384 H 1 UNCH 0.0000 + 30 H13 1.0205 1.8243 27.2229 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 7 1 + 4 1 17 1 + 5 4 7 1 + 6 4 9 1 + 7 5 8 2 + 8 6 8 1 + 9 6 13 1 + 10 7 9 1 + 11 8 9 1 + 12 9 10 1 + 13 10 11 1 + 14 10 14 1 + 15 10 17 1 + 16 11 12 1 + 17 11 18 1 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 12 21 1 + 22 13 14 1 + 23 13 22 1 + 24 14 15 1 + 25 14 16 1 + 26 15 23 1 + 27 15 24 1 + 28 15 25 1 + 29 16 26 1 + 30 16 27 1 + 31 16 28 1 + 32 17 29 1 + 33 17 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (4AS,9AR)-10,10-DIMETHYL-6,7-DIHYDRO-4H-4A,7-METHANO-OXAZIR +@MOLECULE +JAZVIP10 + 34 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 6.1208 5.3377 11.3403 N.3 1 UNCH 0.3140 + 2 N2 4.9841 5.3564 10.6003 N.2 1 UNCH -0.7068 + 3 C1 4.8382 4.0509 10.2831 C.2 1 UNCH 0.4300 + 4 N3 5.8444 3.2435 10.7947 N.2 1 UNCH -0.5653 + 5 C2 6.6125 4.0753 11.4531 C.2 1 UNCH 0.0365 + 6 C3 3.7593 3.4642 9.4800 C.2 1 UNCH 0.5260 + 7 S1 2.5229 4.3783 8.8552 S.2 1 UNCH -0.3800 + 8 N4 3.8234 2.1112 9.2747 N.3 1 UNCH -0.8000 + 9 C4 6.7380 6.5415 11.8700 C.3 1 UNCH 0.5356 + 10 C5 7.1584 7.5341 10.7902 C.3 1 UNCH 0.2800 + 11 C6 7.1882 8.8190 11.6038 C.3 1 UNCH 0.2800 + 12 C7 6.0242 8.6491 12.5843 C.3 1 UNCH 0.2800 + 13 C8 4.7178 9.2889 12.1106 C.3 1 UNCH 0.2800 + 14 O1 8.4475 7.2678 10.2296 O.3 1 UNCH -0.6800 + 15 O2 8.4251 8.8697 12.3344 O.3 1 UNCH -0.6800 + 16 O3 5.8079 7.2207 12.7349 O.3 1 UNCH -0.5600 + 17 O4 4.4717 8.9260 10.7610 O.3 1 UNCH -0.4637 + 18 S2 2.9492 8.6321 10.2952 S.1 1 UNCH 1.6217 + 19 O5 2.0759 9.5990 10.9164 O.2 1 UNCH -0.6500 + 20 O6 2.9584 8.4249 8.8675 O.2 1 UNCH -0.6500 + 21 N5 2.6301 7.1445 10.9827 N.3 1 UNCH -0.9780 + 22 H1 7.5095 3.8256 12.0040 H 1 UNCH 0.1500 + 23 H2 4.5846 1.5780 9.6836 H 1 UNCH 0.3700 + 24 H3 3.1089 1.6356 8.7412 H 1 UNCH 0.3700 + 25 H4 7.5967 6.2257 12.4758 H 1 UNCH 0.0000 + 26 H5 6.4280 7.6089 9.9779 H 1 UNCH 0.0000 + 27 H6 7.1366 9.7270 10.9964 H 1 UNCH 0.0000 + 28 H7 6.2747 9.0369 13.5779 H 1 UNCH 0.0000 + 29 H8 3.8986 8.9618 12.7613 H 1 UNCH 0.0000 + 30 H9 4.7910 10.3802 12.1577 H 1 UNCH 0.0000 + 31 H10 8.3076 6.7251 9.4298 H 1 UNCH 0.4000 + 32 H11 9.1191 8.6307 11.6847 H 1 UNCH 0.4000 + 33 H12 3.4353 6.5161 10.8366 H 1 UNCH 0.4200 + 34 H13 1.8199 6.7331 10.5153 H 1 UNCH 0.4200 +@BOND + 1 1 2 1 + 2 1 5 am + 3 1 9 1 + 4 2 3 2 + 5 3 4 am + 6 3 6 1 + 7 4 5 2 + 8 5 22 1 + 9 6 7 2 + 10 6 8 1 + 11 8 23 1 + 12 8 24 1 + 13 9 10 1 + 14 9 16 1 + 15 9 25 1 + 16 10 11 1 + 17 10 14 1 + 18 10 26 1 + 19 11 12 1 + 20 11 15 1 + 21 11 27 1 + 22 12 13 1 + 23 12 16 1 + 24 12 28 1 + 25 13 17 1 + 26 13 29 1 + 27 13 30 1 + 28 14 31 1 + 29 15 32 1 + 30 17 18 1 + 31 18 19 2 + 32 18 20 2 + 33 18 21 1 + 34 21 33 1 + 35 21 34 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(5-O-SULFAMOYL-BETA-D-RIBOFURANOSYL)-1H-1,2,4-TRIAZOLE-3- +@MOLECULE +JAZZOZ10 + 37 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.0426 12.3370 3.0348 N.2 1 JAZZ -0.6200 + 2 C1 1.3827 12.4262 4.1953 C.2 1 JAZZ 0.7200 + 3 N2 0.9337 11.4050 4.9403 N.2 1 JAZZ -0.5670 + 4 C2 1.1902 10.2033 4.3975 C.2 1 JAZZ 0.1054 + 5 C3 1.8535 9.9529 3.2073 C.2 1 JAZZ 0.2272 + 6 C4 2.2690 11.0829 2.5320 C.2 1 JAZZ 0.3010 + 7 N3 1.9520 8.6024 2.9836 N.2 1 JAZZ -0.5653 + 8 C5 1.3496 8.0385 4.0093 C.2 1 JAZZ 0.0365 + 9 N4 0.8682 8.9684 4.8934 N.3 1 JAZZ 0.0476 + 10 N5 1.1658 13.6897 4.6927 N.3 1 JAZZ -0.9000 + 11 S1 3.1290 11.0398 1.0011 S.1 1 JAZZ 1.4470 + 12 O1 4.4845 10.5958 1.2418 O.2 1 JAZZ -0.6500 + 13 O2 2.2725 10.4738 -0.0147 O.2 1 JAZZ -0.6500 + 14 N6 3.2907 12.6957 0.6255 N.3 1 JAZZ -0.9780 + 15 C6 0.1679 8.6623 6.1240 C.3 1 JAZZ 0.5356 + 16 C7 0.9270 9.0515 7.3919 C.3 1 JAZZ 0.2800 + 17 C8 -0.2223 9.1618 8.3800 C.3 1 JAZZ 0.2800 + 18 C9 -1.3689 9.7196 7.5328 C.3 1 JAZZ 0.2800 + 19 C10 -1.5187 11.2391 7.6395 C.3 1 JAZZ 0.2800 + 20 O3 1.8684 8.0616 7.8120 O.3 1 JAZZ -0.6800 + 21 O4 -0.5710 7.8450 8.8411 O.3 1 JAZZ -0.6800 + 22 O5 -1.0825 9.3776 6.1510 O.3 1 JAZZ -0.5600 + 23 O6 -0.2927 11.9066 7.3522 O.3 1 JAZZ -0.6800 + 24 H1 1.2360 6.9713 4.1594 H 1 JAZZ 0.1500 + 25 H2 1.0077 13.6870 5.6925 H 1 JAZZ 0.4000 + 26 H3 1.8239 14.3646 4.3324 H 1 JAZZ 0.4000 + 27 H4 2.7531 13.2421 1.3065 H 1 JAZZ 0.4200 + 28 H5 4.2835 12.9292 0.6635 H 1 JAZZ 0.4200 + 29 H6 -0.0590 7.5886 6.1129 H 1 JAZZ 0.0000 + 30 H7 1.4477 10.0077 7.2796 H 1 JAZZ 0.0000 + 31 H8 0.0172 9.7576 9.2651 H 1 JAZZ 0.0000 + 32 H9 -2.3233 9.2465 7.7893 H 1 JAZZ 0.0000 + 33 H10 -2.2709 11.6066 6.9338 H 1 JAZZ 0.0000 + 34 H11 -1.8231 11.5220 8.6517 H 1 JAZZ 0.0000 + 35 H12 2.4709 8.4895 8.4493 H 1 JAZZ 0.4000 + 36 H13 0.2689 7.3510 8.9322 H 1 JAZZ 0.4000 + 37 H14 -0.1166 11.7416 6.3986 H 1 JAZZ 0.4000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 10 am + 4 2 3 2 + 5 3 4 1 + 6 4 9 1 + 7 4 5 2 + 8 5 7 1 + 9 5 6 1 + 10 6 11 1 + 11 7 8 2 + 12 8 24 1 + 13 8 9 am + 14 9 15 1 + 15 10 26 1 + 16 10 25 1 + 17 11 14 1 + 18 11 13 2 + 19 11 12 2 + 20 14 28 1 + 21 14 27 1 + 22 15 29 1 + 23 15 22 1 + 24 15 16 1 + 25 16 30 1 + 26 16 20 1 + 27 16 17 1 + 28 17 31 1 + 29 17 21 1 + 30 17 18 1 + 31 18 32 1 + 32 18 22 1 + 33 18 19 1 + 34 19 34 1 + 35 19 33 1 + 36 19 23 1 + 37 20 35 1 + 38 21 36 1 + 39 23 37 1 +@SUBSTRUCTURE + 1 JAZZ 1 +@COMMENT +COMMENT 2-AMINO-9-(BETA-D-RIBOFURANOSYL)-9H-PURINE-6-SULFONAMIDE (A +@MOLECULE +JEBFEB01 + 27 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 8.1501 1.8946 8.0437 P 1 UNCH 1.3910 + 2 O1 9.4761 1.8946 8.7656 O.2 1 UNCH -0.7000 + 3 N1 7.0942 3.1162 8.5327 N.3 1 UNCH -0.7760 + 4 C1 8.3290 1.8946 6.2618 C.2 1 UNCH -0.1390 + 5 C2 9.5988 1.8946 5.6684 C.2 1 UNCH -0.1500 + 6 C3 9.7309 1.8946 4.2791 C.2 1 UNCH -0.1500 + 7 C4 8.5950 1.8946 3.4708 C.2 1 UNCH -0.1500 + 8 C5 7.3266 1.8946 4.0490 C.2 1 UNCH -0.1500 + 9 C6 7.1940 1.8946 5.4379 C.2 1 UNCH -0.1500 + 10 C7 6.0782 2.5931 9.3528 C.2 1 UNCH 0.1000 + 11 C8 5.1109 3.3091 10.0311 C.2 1 UNCH -0.1500 + 12 C9 4.1411 2.5969 10.7420 C.2 1 UNCH -0.1500 + 13 H1 7.5373 3.9266 8.9421 H 1 UNCH 0.4000 + 14 H2 10.4891 1.8947 6.2951 H 1 UNCH 0.1500 + 15 H3 10.7198 1.8947 3.8277 H 1 UNCH 0.1500 + 16 H4 8.6985 1.8946 2.3887 H 1 UNCH 0.1500 + 17 H5 6.4408 1.8945 3.4190 H 1 UNCH 0.1500 + 18 H6 6.2024 1.8945 5.8875 H 1 UNCH 0.1500 + 19 H7 5.0939 4.3930 10.0086 H 1 UNCH 0.1500 + 20 H8 3.3697 3.1344 11.2888 H 1 UNCH 0.1500 + 21 N1B 7.0943 0.6730 8.5327 N.3 1 UNCH -0.7760 + 22 C7B 6.0783 1.1960 9.3528 C.2 1 UNCH 0.1000 + 23 C9B 4.1411 1.1921 10.7420 C.2 1 UNCH -0.1500 + 24 H1B 7.5374 -0.1374 8.9421 H 1 UNCH 0.4000 + 25 C8B 5.1110 0.4799 10.0312 C.2 1 UNCH -0.1500 + 26 H8B 3.3698 0.6545 11.2888 H 1 UNCH 0.1500 + 27 H7B 5.0940 -0.6039 10.0086 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 4 1 + 4 1 21 1 + 5 3 10 1 + 6 3 13 1 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 14 1 + 11 6 7 2 + 12 6 15 1 + 13 7 8 1 + 14 7 16 1 + 15 8 9 2 + 16 8 17 1 + 17 9 18 1 + 18 10 11 2 + 19 10 22 1 + 20 11 12 1 + 21 11 19 1 + 22 12 20 1 + 23 12 23 2 + 24 21 22 1 + 25 21 24 1 + 26 22 25 2 + 27 23 25 1 + 28 23 26 1 + 29 25 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,3-DIHYDRIDO-2-PHENYL-1,3,2-DIAZAPHOSPHOLE (POLYMORPH 1) +@MOLECULE +JECVES + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.1594 2.2744 8.0811 N.3 1 UNCH 0.0476 + 2 C1 3.1586 2.2839 9.0179 C.2 1 UNCH 0.2665 + 3 N2 2.7498 2.7624 10.1780 N.2 1 UNCH -0.5653 + 4 C2 1.4282 3.0694 9.9886 C.2 1 UNCH 0.0772 + 5 C3 1.0379 2.7764 8.7025 C.2 1 UNCH -0.3016 + 6 N3 4.5047 1.8453 8.7823 N.2 1 UNCH 0.9600 + 7 O1 4.9639 2.0287 7.6467 O.3 1 UNCH -0.5200 + 8 O2 5.1068 1.3209 9.7270 O.2 1 UNCH -0.5200 + 9 C4 2.1752 1.7598 6.7192 C.3 1 UNCH 0.2556 + 10 C5 2.5445 2.8276 5.6775 C.3 1 UNCH 0.2800 + 11 O3 1.5417 3.8571 5.6501 O.3 1 UNCH -0.6800 + 12 C6 2.6262 2.2270 4.2601 C.3 1 UNCH 0.2700 + 13 N4 3.6070 1.1398 4.1801 N.3 1 UNCH -0.5860 + 14 C7 4.0211 0.8366 2.8117 C.3 1 UNCH -0.0420 + 15 C8 4.9347 1.5778 3.7599 C.3 1 UNCH -0.0370 + 16 C9 6.1327 0.8979 4.3280 C.3 1 UNCH 0.0950 + 17 H1 0.8248 3.4805 10.7890 H 1 UNCH 0.1500 + 18 H2 0.0863 2.8701 8.1948 H 1 UNCH 0.1500 + 19 H3 2.8526 0.9005 6.7036 H 1 UNCH 0.0000 + 20 H4 1.1651 1.3777 6.5232 H 1 UNCH 0.0000 + 21 H5 3.4961 3.3120 5.9230 H 1 UNCH 0.0000 + 22 H6 1.6900 4.4350 6.4205 H 1 UNCH 0.4000 + 23 H7 2.8187 3.0388 3.5439 H 1 UNCH 0.0000 + 24 H8 1.6397 1.8313 3.9842 H 1 UNCH 0.0000 + 25 H9 3.5664 1.3858 1.9960 H 1 UNCH 0.1000 + 26 H10 4.2247 -0.2070 2.6028 H 1 UNCH 0.1000 + 27 H11 5.1101 2.6330 3.5840 H 1 UNCH 0.1000 + 28 H12 6.4513 1.3992 5.2470 H 1 UNCH 0.0000 + 29 H13 5.9419 -0.1547 4.5629 H 1 UNCH 0.0000 + 30 H14 6.9616 0.9419 3.6145 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 5 1 + 3 1 9 1 + 4 2 3 2 + 5 2 6 am + 6 3 4 1 + 7 4 5 2 + 8 4 17 1 + 9 5 18 1 + 10 6 7 1 + 11 6 8 2 + 12 9 10 1 + 13 9 19 1 + 14 9 20 1 + 15 10 11 1 + 16 10 12 1 + 17 10 21 1 + 18 11 22 1 + 19 12 13 1 + 20 12 23 1 + 21 12 24 1 + 22 13 14 1 + 23 13 15 1 + 24 14 15 1 + 25 14 25 1 + 26 14 26 1 + 27 15 16 1 + 28 15 27 1 + 29 16 28 1 + 30 16 29 1 + 31 16 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(2-METHYL-1-AZIRIDINYL)-3-(2-NITRO-1-IMIDAZOLYL)-2-PROPAN +@MOLECULE +JECVUI + 24 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.4404 1.1176 9.5211 C.3 1 UNCH 0.0610 + 2 C2 4.5837 1.2861 8.2903 C.2 1 UNCH 0.5690 + 3 O1 3.5576 0.6141 8.1497 O.2 1 UNCH -0.5700 + 4 N1 4.9914 2.2575 7.3925 N.3 1 UNCH -0.0845 + 5 O2 6.1981 2.9416 7.6820 O.3 1 UNCH -0.1855 + 6 C3 5.9601 4.1747 8.2193 C.2 1 UNCH 0.7800 + 7 O3 4.8655 4.5754 8.5891 O.2 1 UNCH -0.5700 + 8 N2 7.1275 4.8800 8.2978 N.3 1 UNCH -0.7301 + 9 C4 7.1332 6.2724 8.6573 C.3 1 UNCH 0.3001 + 10 C5 4.5892 2.4453 6.0673 C.2 1 UNCH 0.6900 + 11 O4 5.1905 3.1766 5.2788 O.2 1 UNCH -0.5700 + 12 N3 3.4867 1.7146 5.6874 N.3 1 UNCH -0.7301 + 13 C6 2.8714 1.8802 4.3978 C.3 1 UNCH 0.3001 + 14 H1 5.0930 0.2479 10.0871 H 1 UNCH 0.0000 + 15 H2 6.4828 0.9424 9.2416 H 1 UNCH 0.0000 + 16 H3 5.3605 2.0022 10.1577 H 1 UNCH 0.0000 + 17 H4 7.9006 4.5030 7.7662 H 1 UNCH 0.3700 + 18 H5 8.1512 6.5567 8.9329 H 1 UNCH 0.0000 + 19 H6 6.8053 6.8587 7.7948 H 1 UNCH 0.0000 + 20 H7 6.4548 6.4507 9.4960 H 1 UNCH 0.0000 + 21 H8 2.9610 1.2559 6.4296 H 1 UNCH 0.3700 + 22 H9 2.2279 1.0187 4.2060 H 1 UNCH 0.0000 + 23 H10 2.2723 2.7945 4.4110 H 1 UNCH 0.0000 + 24 H11 3.6347 1.9570 3.6189 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 1 15 1 + 4 1 16 1 + 5 2 3 2 + 6 2 4 am + 7 4 5 1 + 8 4 10 am + 9 5 6 1 + 10 6 7 2 + 11 6 8 am + 12 8 9 1 + 13 8 17 1 + 14 9 18 1 + 15 9 19 1 + 16 9 20 1 + 17 10 11 2 + 18 10 12 am + 19 12 13 1 + 20 12 21 1 + 21 13 22 1 + 22 13 23 1 + 23 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-ACETYL-N,O-DI(METHYLCARBAMOYL)HYDROXYLAMINE (AT 105 DEG.K +@MOLECULE +JECYIZ + 40 41 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 2.5304 5.0624 5.4752 P 1 JECY 1.2358 + 2 O1 1.5314 4.1130 4.8834 O.2 1 JECY -0.7000 + 3 N1 2.1715 6.6905 5.2907 N.3 1 JECY -0.8079 + 4 N2 2.6197 5.0551 7.1377 N.3 1 JECY -0.8079 + 5 N3 4.6888 3.4726 5.0506 N.2 1 JECY -0.5639 + 6 N4 4.0396 2.5251 4.5640 N.1 1 JECY 0.6879 + 7 N5 3.4858 1.6373 4.1148 N.2 1 JECY -0.3700 + 8 C1 1.8332 7.2218 6.6266 C.3 1 JECY 0.2700 + 9 C2 2.0266 8.7241 6.8243 C.3 1 JECY 0.0000 + 10 C3 1.7146 9.1028 8.2764 C.3 1 JECY 0.0000 + 11 C4 2.5039 8.2684 9.2891 C.3 1 JECY 0.0000 + 12 C5 2.3872 6.7607 9.0368 C.3 1 JECY 0.0000 + 13 C6 2.7682 6.4442 7.5912 C.3 1 JECY 0.2700 + 14 C7 3.4595 4.1094 7.8414 C.3 1 JECY 0.2700 + 15 C8 1.1532 7.0276 4.3039 C.3 1 JECY 0.2700 + 16 C9 4.2077 4.8472 4.7670 C.3 1 JECY 0.2460 + 17 C10 4.2819 5.1593 3.2678 C.3 1 JECY 0.0000 + 18 C11 5.6967 5.0747 2.7140 C.3 1 JECY 0.0000 + 19 H1 0.7899 6.9595 6.8616 H 1 JECY 0.0000 + 20 H2 3.0576 9.0119 6.5831 H 1 JECY 0.0000 + 21 H3 1.3694 9.2935 6.1581 H 1 JECY 0.0000 + 22 H4 1.9275 10.1665 8.4322 H 1 JECY 0.0000 + 23 H5 0.6417 8.9643 8.4599 H 1 JECY 0.0000 + 24 H6 3.5612 8.5582 9.2421 H 1 JECY 0.0000 + 25 H7 2.1577 8.4985 10.3031 H 1 JECY 0.0000 + 26 H8 3.0432 6.2329 9.7376 H 1 JECY 0.0000 + 27 H9 1.3612 6.4315 9.2435 H 1 JECY 0.0000 + 28 H10 3.8087 6.7592 7.4209 H 1 JECY 0.0000 + 29 H11 3.2294 4.0880 8.9110 H 1 JECY 0.0000 + 30 H12 3.2783 3.0960 7.4699 H 1 JECY 0.0000 + 31 H13 4.5229 4.3376 7.7199 H 1 JECY 0.0000 + 32 H14 0.1723 6.6234 4.5756 H 1 JECY 0.0000 + 33 H15 1.0653 8.1105 4.1751 H 1 JECY 0.0000 + 34 H16 1.4270 6.6149 3.3275 H 1 JECY 0.0000 + 35 H17 4.8680 5.5402 5.3018 H 1 JECY 0.0000 + 36 H18 3.6267 4.4864 2.7030 H 1 JECY 0.0000 + 37 H19 3.9036 6.1726 3.0934 H 1 JECY 0.0000 + 38 H20 6.3692 5.7497 3.2528 H 1 JECY 0.0000 + 39 H21 5.7046 5.3615 1.6576 H 1 JECY 0.0000 + 40 H22 6.0962 4.0587 2.7871 H 1 JECY 0.0000 +@BOND + 1 1 16 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 2 + 5 3 15 1 + 6 3 8 1 + 7 4 14 1 + 8 4 13 1 + 9 5 16 1 + 10 5 6 2 + 11 6 7 2 + 12 8 19 1 + 13 8 13 1 + 14 8 9 1 + 15 9 21 1 + 16 9 20 1 + 17 9 10 1 + 18 10 23 1 + 19 10 22 1 + 20 10 11 1 + 21 11 25 1 + 22 11 24 1 + 23 11 12 1 + 24 12 27 1 + 25 12 26 1 + 26 12 13 1 + 27 13 28 1 + 28 14 31 1 + 29 14 30 1 + 30 14 29 1 + 31 15 34 1 + 32 15 33 1 + 33 15 32 1 + 34 16 35 1 + 35 16 17 1 + 36 17 37 1 + 37 17 36 1 + 38 17 18 1 + 39 18 40 1 + 40 18 39 1 + 41 18 38 1 +@SUBSTRUCTURE + 1 JECY 1 +@COMMENT +COMMENT 2-((R)-1-AZIDOPROPYL)-2,3,3A,4,5,6,7A-OCTAHYDRO-1,3-DIMETHY +@MOLECULE +JEFRAN + 36 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.9681 2.4397 6.3137 S.3 1 JEDY -0.2820 + 2 S2 -3.8134 3.0001 7.7617 S.2 1 JEDY -0.3800 + 3 N1 -0.7712 0.7366 5.2184 N.2 1 JEDY -0.6610 + 4 N2 -1.4071 3.0321 5.2482 N.2 1 JEDY -0.6610 + 5 N3 -2.8103 1.3238 5.9365 N.2 1 JEDY -0.6610 + 6 N4 -4.6903 2.5285 5.2096 N.3 1 JEDY -0.6602 + 7 N5 1.4411 -0.0240 5.3044 N.3 1 JEDY -0.7882 + 8 N6 0.0974 4.8175 5.3724 N.3 1 JEDY -0.7882 + 9 C1 0.4639 0.9429 5.5433 C.2 1 JEDY 0.6410 + 10 C2 -0.2362 3.4798 5.5698 C.2 1 JEDY 0.6410 + 11 C3 -1.6628 1.7213 5.4956 C.2 1 JEDY 0.8720 + 12 C4 -3.7505 2.2777 6.2265 C.2 1 JEDY 0.6510 + 13 C5 -5.6008 3.6680 5.2437 C.3 1 JEDY 0.3001 + 14 C6 -4.5455 1.8964 3.9040 C.3 1 JEDY 0.3001 + 15 C7 1.0096 -1.3306 4.8067 C.3 1 JEDY 0.3691 + 16 C8 2.7321 -0.0290 5.9843 C.3 1 JEDY 0.3691 + 17 C9 -0.8704 5.6964 4.7213 C.3 1 JEDY 0.3691 + 18 C10 1.4645 5.3191 5.4219 C.3 1 JEDY 0.3691 + 19 H1 -5.9022 3.9359 6.2575 H 1 JEDY 0.0000 + 20 H2 -5.1003 4.5239 4.7806 H 1 JEDY 0.0000 + 21 H3 -6.5070 3.4266 4.6798 H 1 JEDY 0.0000 + 22 H4 -4.0922 0.9047 3.9768 H 1 JEDY 0.0000 + 23 H5 -3.9189 2.5352 3.2743 H 1 JEDY 0.0000 + 24 H6 -5.5309 1.7807 3.4428 H 1 JEDY 0.0000 + 25 H7 1.8573 -1.9138 4.4311 H 1 JEDY 0.0000 + 26 H8 0.5252 -1.9014 5.6059 H 1 JEDY 0.0000 + 27 H9 0.3102 -1.2252 3.9702 H 1 JEDY 0.0000 + 28 H10 3.2928 0.8881 5.7769 H 1 JEDY 0.0000 + 29 H11 3.3642 -0.8570 5.6446 H 1 JEDY 0.0000 + 30 H12 2.5975 -0.1364 7.0658 H 1 JEDY 0.0000 + 31 H13 -0.8925 5.5028 3.6439 H 1 JEDY 0.0000 + 32 H14 -0.6229 6.7520 4.8768 H 1 JEDY 0.0000 + 33 H15 -1.8772 5.5505 5.1280 H 1 JEDY 0.0000 + 34 H16 2.0856 4.8177 4.6720 H 1 JEDY 0.0000 + 35 H17 1.9021 5.1696 6.4142 H 1 JEDY 0.0000 + 36 H18 1.5129 6.3948 5.2200 H 1 JEDY 0.0000 +@BOND + 1 1 9 1 + 2 1 10 1 + 3 2 12 2 + 4 3 9 2 + 5 3 11 am + 6 4 10 2 + 7 4 11 am + 8 5 11 2 + 9 5 12 1 + 10 6 12 1 + 11 6 13 1 + 12 6 14 1 + 13 7 9 am + 14 7 15 1 + 15 7 16 1 + 16 8 10 am + 17 8 17 1 + 18 8 18 1 + 19 13 19 1 + 20 13 20 1 + 21 13 21 1 + 22 14 22 1 + 23 14 23 1 + 24 14 24 1 + 25 15 25 1 + 26 15 26 1 + 27 15 27 1 + 28 16 28 1 + 29 16 29 1 + 30 16 30 1 + 31 17 31 1 + 32 17 32 1 + 33 17 33 1 + 34 18 34 1 + 35 18 35 1 + 36 18 36 1 +@SUBSTRUCTURE + 1 JEDY 1 +@COMMENT +COMMENT 2,6-BIS(DIMETHYLAMINO)-4-DIMETHYLAMINOTHIOCARBAMOYLIMINO-1, +@MOLECULE +JEHCUU01 + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.3963 0.6104 8.0335 N.2 1 JEHC -0.6200 + 2 C1 3.5209 0.5261 8.7625 C.2 1 JEHC 0.7200 + 3 N2 4.7764 0.7217 8.3338 N.2 1 JEHC -0.5670 + 4 C2 4.8194 1.0627 7.0370 C.2 1 JEHC 0.1054 + 5 C3 3.7499 1.2028 6.1689 C.2 1 JEHC 0.2272 + 6 C4 2.4920 0.9602 6.7231 C.2 1 JEHC 0.3925 + 7 N3 4.1914 1.5608 4.9106 N.2 1 JEHC -0.5653 + 8 C5 5.5014 1.6401 5.0183 C.2 1 JEHC 0.0365 + 9 N4 5.9235 1.3476 6.2848 N.3 1 JEHC 0.0476 + 10 N5 3.3679 0.1548 10.0839 N.3 1 JEHC -0.9000 + 11 O1 1.3551 1.0623 5.9442 O.3 1 JEHC -0.3625 + 12 C6 0.1543 0.8681 6.6805 C.3 1 JEHC 0.2800 + 13 C7 7.2827 1.3420 6.7554 C.3 1 JEHC 0.2556 + 14 H1 4.2121 -0.2861 10.4198 H 1 JEHC 0.4000 + 15 H2 2.5010 -0.3513 10.1988 H 1 JEHC 0.4000 + 16 H4 0.0482 1.6164 7.4737 H 1 JEHC 0.0000 + 17 H5 0.0989 -0.1472 7.0881 H 1 JEHC 0.0000 + 18 H6 6.1806 1.9030 4.2170 H 1 JEHC 0.1500 + 19 H7 7.9551 1.6112 5.9368 H 1 JEHC 0.0000 + 20 H8 7.3745 2.0716 7.5641 H 1 JEHC 0.0000 + 21 H9 7.5224 0.3383 7.1155 H 1 JEHC 0.0000 + 22 H3 -0.6851 0.9949 5.9899 H 1 JEHC 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 10 am + 4 2 3 2 + 5 3 4 1 + 6 4 9 1 + 7 4 5 2 + 8 5 7 1 + 9 5 6 1 + 10 6 11 1 + 11 7 8 2 + 12 8 18 1 + 13 8 9 am + 14 9 13 1 + 15 10 15 1 + 16 10 14 1 + 17 11 12 1 + 18 12 22 1 + 19 12 17 1 + 20 12 16 1 + 21 13 21 1 + 22 13 20 1 + 23 13 19 1 +@SUBSTRUCTURE + 1 JEHC 1 +@COMMENT +COMMENT O-6-,9-DIMETHYLGUANINE +@MOLECULE +JEHXOJ + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S2 2.4046 9.0021 11.8987 S.1 1 JEHX 1.4470 + 2 O4 3.2114 8.2944 12.8631 O.2 1 JEHX -0.6500 + 3 O5 1.0744 8.5617 11.5273 O.2 1 JEHX -0.6500 + 4 N1 3.3008 8.8760 10.4071 N.3 1 JEHX -0.3930 + 5 N2 2.7926 7.8614 9.5690 N.3 1 JEHX -0.5150 + 6 C7 2.4311 10.7350 12.1928 C.2 1 JEHX -0.0090 + 7 C8 3.4349 11.2817 12.9982 C.2 1 JEHX -0.1500 + 8 C9 3.4486 12.6560 13.2351 C.2 1 JEHX -0.1500 + 9 C10 2.4611 13.4711 12.6802 C.2 1 JEHX -0.1500 + 10 C11 1.4503 12.9168 11.8936 C.2 1 JEHX -0.1500 + 11 C12 1.4276 11.5437 11.6505 C.2 1 JEHX -0.1500 + 12 H1 4.2957 8.7446 10.6608 H 1 JEHX 0.4200 + 13 H2 3.0352 6.9194 9.9221 H 1 JEHX 0.4500 + 14 H3 1.7496 7.9113 9.5887 H 1 JEHX 0.4500 + 15 H4 3.1064 7.9751 8.5938 H 1 JEHX 0.4500 + 16 H10 4.1993 10.6589 13.4587 H 1 JEHX 0.1500 + 17 H11 4.2203 13.0965 13.8642 H 1 JEHX 0.1500 + 18 H12 2.4701 14.5423 12.8754 H 1 JEHX 0.1500 + 19 H13 0.6739 13.5600 11.4828 H 1 JEHX 0.1500 + 20 H14 0.6200 11.1262 11.0533 H 1 JEHX 0.1500 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 4 1 + 4 1 6 1 + 5 4 5 1 + 6 4 12 1 + 7 5 13 1 + 8 5 14 1 + 9 5 15 1 + 10 6 7 2 + 11 6 11 1 + 12 7 8 1 + 13 7 16 1 + 14 8 9 2 + 15 8 17 1 + 16 9 10 1 + 17 9 18 1 + 18 10 11 2 + 19 10 19 1 + 20 11 20 1 +@SUBSTRUCTURE + 1 JEHX 1 +@COMMENT +COMMENT BENZENESULFONYLHYDRAZINIUM PHENYLSULFONATE +@MOLECULE +JELKUG + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -0.6270 2.6130 5.6867 CL 1 UNCH -0.3160 + 2 CL2 -2.0911 -0.1650 5.4027 CL 1 UNCH -0.3160 + 3 P1 -0.7564 0.8080 6.5458 P 1 UNCH 1.3320 + 4 O1 0.5668 0.0971 6.5631 O.3 1 UNCH -0.7000 + 5 O2 -2.8545 1.6092 7.9869 O.3 1 UNCH -0.6800 + 6 C1 -1.5558 1.0078 8.1808 C.3 1 UNCH 0.2800 + 7 C2 -1.7466 -0.3549 8.8722 C.3 1 UNCH 0.0000 + 8 C3 -2.3190 -0.2300 10.2831 C.3 1 UNCH 0.0000 + 9 C4 -1.4771 0.7000 11.1483 C.3 1 UNCH 0.0000 + 10 C5 -1.3066 2.0659 10.4945 C.3 1 UNCH 0.0000 + 11 C6 -0.7368 1.9480 9.0814 C.3 1 UNCH 0.0000 + 12 H1 -3.4172 0.9857 7.4900 H 1 UNCH 0.4000 + 13 H2 -0.7841 -0.8792 8.9163 H 1 UNCH 0.0000 + 14 H3 -2.4224 -0.9852 8.2828 H 1 UNCH 0.0000 + 15 H4 -3.3482 0.1458 10.2334 H 1 UNCH 0.0000 + 16 H5 -2.3663 -1.2213 10.7481 H 1 UNCH 0.0000 + 17 H6 -0.4911 0.2498 11.3168 H 1 UNCH 0.0000 + 18 H7 -1.9471 0.8168 12.1313 H 1 UNCH 0.0000 + 19 H8 -0.6416 2.6856 11.1067 H 1 UNCH 0.0000 + 20 H9 -2.2752 2.5795 10.4610 H 1 UNCH 0.0000 + 21 H10 -0.7039 2.9523 8.6437 H 1 UNCH 0.0000 + 22 H11 0.2989 1.5907 9.1353 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 3 4 1 + 4 3 6 1 + 5 5 6 1 + 6 5 12 1 + 7 6 7 1 + 8 6 11 1 + 9 7 8 1 + 10 7 13 1 + 11 7 14 1 + 12 8 9 1 + 13 8 15 1 + 14 8 16 1 + 15 9 10 1 + 16 9 17 1 + 17 9 18 1 + 18 10 11 1 + 19 10 19 1 + 20 10 20 1 + 21 11 21 1 + 22 11 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ALPHA-HYDROXYCYCLOHEXYLPHOSPHONIC ACID DICHLOROANHYDRIDE (A +@MOLECULE +JELREX + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.0878 1.8267 14.5933 O.3 1 JELR -0.6330 + 2 N1 3.1560 1.3639 14.0898 N.2 1 JELR 0.6570 + 3 C1 3.3060 0.8330 12.9077 C.2 1 JELR -0.0822 + 4 C2 4.7442 0.4795 12.7176 C.2 1 JELR 0.4838 + 5 O2 5.2248 -0.0702 11.7577 O.2 1 JELR -0.5700 + 6 C3 6.7351 0.8111 14.3346 C.2 1 JELR -0.1500 + 7 C4 7.0418 1.2987 15.6089 C.2 1 JELR -0.1500 + 8 C5 6.0367 1.8382 16.4418 C.2 1 JELR -0.1500 + 9 C6 4.7050 1.9006 16.0179 C.2 1 JELR -0.1500 + 10 C7 4.4277 1.4123 14.7567 C.2 1 JELR -0.0280 + 11 C8 5.4167 0.8868 13.9419 C.2 1 JELR 0.0862 + 12 N2 2.4977 1.1058 10.7166 N.2 1 JELR -0.6200 + 13 C9 2.2670 0.6385 11.9526 C.2 1 JELR 0.7062 + 14 N3 1.1738 -0.0197 12.3658 N.2 1 JELR -0.6200 + 15 C10 0.2219 -0.1996 11.4325 C.2 1 JELR 0.1600 + 16 C11 0.3409 0.2365 10.1323 C.2 1 JELR -0.1500 + 17 C12 1.5140 0.8879 9.8251 C.2 1 JELR 0.1600 + 18 H1 7.4958 0.3926 13.6844 H 1 JELR 0.1500 + 19 H2 8.0694 1.2627 15.9667 H 1 JELR 0.1500 + 20 H3 6.3045 2.2109 17.4293 H 1 JELR 0.1500 + 21 H4 3.9259 2.3139 16.6511 H 1 JELR 0.1500 + 22 H5 -0.6677 -0.7231 11.7712 H 1 JELR 0.1500 + 23 H6 -0.4370 0.0764 9.3988 H 1 JELR 0.1500 + 24 H7 1.7026 1.2646 8.8238 H 1 JELR 0.1500 +@BOND + 1 1 2 1 + 2 2 10 1 + 3 2 3 2 + 4 3 13 1 + 5 3 4 1 + 6 4 11 1 + 7 4 5 2 + 8 6 18 1 + 9 6 11 1 + 10 6 7 2 + 11 7 19 1 + 12 7 8 1 + 13 8 20 1 + 14 8 9 2 + 15 9 21 1 + 16 9 10 1 + 17 10 11 2 + 18 12 17 1 + 19 12 13 2 + 20 13 14 am + 21 14 15 2 + 22 15 22 1 + 23 15 16 1 + 24 16 23 1 + 25 16 17 2 + 26 17 24 1 +@SUBSTRUCTURE + 1 JELR 1 +@COMMENT +COMMENT 2-(PYRIMIDIN-2-YL)ISATOGEN +@MOLECULE +JELRIB + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.0598 6.0885 11.9040 N.2 1 JELR 0.6570 + 2 O1 3.7802 5.0927 12.2131 O.3 1 JELR -0.6330 + 3 C1 1.7645 6.1755 12.0209 C.2 1 JELR 0.0040 + 4 C2 1.3274 7.5059 11.5239 C.2 1 JELR 0.4838 + 5 O2 0.1831 7.8835 11.4811 O.2 1 JELR -0.5700 + 6 C3 2.7462 9.4490 10.5742 C.2 1 JELR -0.1500 + 7 C4 4.0692 9.7949 10.2817 C.2 1 JELR -0.1500 + 8 C5 5.1285 8.8928 10.5267 C.2 1 JELR -0.1500 + 9 C6 4.8876 7.6260 11.0691 C.2 1 JELR -0.1500 + 10 C7 3.5743 7.3085 11.3492 C.2 1 JELR -0.0280 + 11 C8 2.5379 8.1967 11.1080 C.2 1 JELR 0.0862 + 12 C9 1.0010 5.0635 12.5751 C.2 1 JELR 0.7200 + 13 O3 0.7656 4.9852 13.7636 O.2 1 JELR -0.5700 + 14 O4 0.6300 4.2543 11.5695 O.3 1 JELR -0.4300 + 15 C10 -0.1345 3.1290 12.0015 C.3 1 JELR 0.2800 + 16 H1 1.9238 10.1323 10.3905 H 1 JELR 0.1500 + 17 H2 4.2895 10.7740 9.8588 H 1 JELR 0.1500 + 18 H3 6.1488 9.1908 10.2890 H 1 JELR 0.1500 + 19 H4 5.6969 6.9276 11.2605 H 1 JELR 0.1500 + 20 H5 -1.0696 3.4569 12.4666 H 1 JELR 0.0000 + 21 H6 0.4471 2.5124 12.6943 H 1 JELR 0.0000 + 22 H7 -0.3777 2.5262 11.1222 H 1 JELR 0.0000 +@BOND + 1 1 10 1 + 2 1 3 2 + 3 1 2 1 + 4 3 12 1 + 5 3 4 1 + 6 4 11 1 + 7 4 5 2 + 8 6 16 1 + 9 6 11 1 + 10 6 7 2 + 11 7 17 1 + 12 7 8 1 + 13 8 18 1 + 14 8 9 2 + 15 9 19 1 + 16 9 10 1 + 17 10 11 2 + 18 12 14 1 + 19 12 13 2 + 20 14 15 1 + 21 15 22 1 + 22 15 21 1 + 23 15 20 1 +@SUBSTRUCTURE + 1 JELR 1 +@COMMENT +COMMENT 2-METHOXYCARBONYLISATOGEN +@MOLECULE +JEMHIS + 15 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -2.0047 0.4667 5.9190 P 1 UNCH 1.1712 + 2 O1 -0.5192 -0.0906 5.5751 O.3 1 UNCH -0.7712 + 3 O2 -2.4731 -0.4177 7.0484 O.2 1 UNCH -0.9500 + 4 O3 -2.7155 0.5139 4.5967 O.3 1 UNCH -0.9500 + 5 F1 -2.7904 2.7760 6.6928 F 1 UNCH -0.3400 + 6 C1 -1.6314 2.0766 6.5916 C.3 1 UNCH 0.6800 + 7 F2 -0.8244 2.7381 5.7249 F 1 UNCH -0.3400 + 8 N1 -0.7010 3.3804 8.4618 N.3 1 UNCH -0.8530 + 9 C2 -0.9774 1.9861 7.9454 C.3 1 UNCH 0.5030 + 10 H1 -0.6692 -0.9402 5.1138 H 1 UNCH 0.5000 + 11 H2 -0.2594 3.3628 9.3854 H 1 UNCH 0.4500 + 12 H3 -1.5899 3.8984 8.5131 H 1 UNCH 0.4500 + 13 H4 -0.0961 3.8766 7.7926 H 1 UNCH 0.4500 + 14 H5 -0.0100 1.4790 7.9070 H 1 UNCH 0.0000 + 15 H6 -1.6224 1.5154 8.6915 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 1 + 4 1 6 1 + 5 2 10 1 + 6 5 6 1 + 7 6 7 1 + 8 6 9 1 + 9 8 9 1 + 10 8 11 1 + 11 8 12 1 + 12 8 13 1 + 13 9 14 1 + 14 9 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-AMINO-1,1-DIFLUOROPHOSPHONIC ACID +@MOLECULE +JEMWUT + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.6286 0.8663 -4.4815 O.3 1 JEMW -0.5600 + 2 C1 1.9416 2.1108 -3.8685 C.3 1 JEMW 0.2800 + 3 C2 1.0806 2.4151 -2.6485 C.3 1 JEMW 0.2800 + 4 O2 -0.2901 2.0921 -2.9042 O.3 1 JEMW -0.3567 + 5 C3 -0.6523 0.7622 -2.7092 C.2 1 JEMW -0.0615 + 6 C4 0.1836 -0.2872 -2.9338 C.2 1 JEMW -0.2764 + 7 C5 1.5191 -0.2191 -3.5765 C.3 1 JEMW 1.0982 + 8 C6 -2.1226 0.6350 -2.2831 C.3 1 JEMW 0.8182 + 9 C7 -2.3522 0.9594 -0.7945 C.3 1 JEMW 1.0200 + 10 C8 -0.0931 -1.7037 -2.5856 C.3 1 JEMW 1.1582 + 11 F1 -2.6000 -0.6077 -2.5855 F 1 JEMW -0.3400 + 12 F2 -2.8811 1.4792 -3.0519 F 1 JEMW -0.3400 + 13 F3 -3.6530 0.8259 -0.4381 F 1 JEMW -0.3400 + 14 F4 -1.6310 0.1470 0.0189 F 1 JEMW -0.3400 + 15 F5 -1.9872 2.2306 -0.4866 F 1 JEMW -0.3400 + 16 F6 -0.9382 -1.8037 -1.5275 F 1 JEMW -0.3400 + 17 F7 1.0199 -2.3810 -2.2094 F 1 JEMW -0.3400 + 18 F8 -0.6555 -2.3811 -3.6115 F 1 JEMW -0.3400 + 19 F9 1.7884 -1.3230 -4.3159 F 1 JEMW -0.3400 + 20 F10 2.5123 -0.1162 -2.6577 F 1 JEMW -0.3400 + 21 H1 3.0063 2.1428 -3.6127 H 1 JEMW 0.0000 + 22 H2 1.7687 2.8767 -4.6321 H 1 JEMW 0.0000 + 23 H3 1.4331 1.8948 -1.7491 H 1 JEMW 0.0000 + 24 H4 1.1365 3.4859 -2.4239 H 1 JEMW 0.0000 +@BOND + 1 1 7 1 + 2 1 2 1 + 3 2 22 1 + 4 2 21 1 + 5 2 3 1 + 6 3 24 1 + 7 3 23 1 + 8 3 4 1 + 9 4 5 1 + 10 5 8 1 + 11 5 6 2 + 12 6 10 1 + 13 6 7 1 + 14 7 20 1 + 15 7 19 1 + 16 8 12 1 + 17 8 11 1 + 18 8 9 1 + 19 9 15 1 + 20 9 14 1 + 21 9 13 1 + 22 10 18 1 + 23 10 17 1 + 24 10 16 1 +@SUBSTRUCTURE + 1 JEMW 1 +@COMMENT +COMMENT 6-TRIFLUOROMETHYL-5-PERFLUOROETHYL-7,7-DIFLUORO-2,3-DIHYDRO +@MOLECULE +JESFES + 25 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 0.0000 2.3253 6.2968 SI 1 UNCH 1.3880 + 2 N1 1.1521 3.0367 5.3653 N.3 1 UNCH -0.9770 + 3 H1 0.7330 3.8813 4.9911 H 1 UNCH 0.3600 + 4 C1 1.9693 2.4160 4.3427 C.3 1 UNCH 0.2700 + 5 H2 2.5429 1.5707 4.7390 H 1 UNCH 0.0000 + 6 H3 2.6911 3.1435 3.9568 H 1 UNCH 0.0000 + 7 H4 1.3663 2.0653 3.4979 H 1 UNCH 0.0000 + 8 N1K 0.7114 1.1733 7.2284 N.3 1 UNCH -0.9770 + 9 N1E -1.1518 1.6139 5.3651 N.3 1 UNCH -0.9770 + 10 N1N -0.7115 3.4772 7.2283 N.3 1 UNCH -0.9770 + 11 H1K 1.5559 1.5924 7.6027 H 1 UNCH 0.3600 + 12 C1K 0.0905 0.3561 8.2510 C.3 1 UNCH 0.2700 + 13 H1E -0.7327 0.7693 4.9908 H 1 UNCH 0.3600 + 14 C1E -1.9689 2.2347 4.3423 C.3 1 UNCH 0.2700 + 15 H1N -1.5561 3.0581 7.6025 H 1 UNCH 0.3600 + 16 C1N -0.0908 4.2943 8.2511 C.3 1 UNCH 0.2700 + 17 H2K -0.7547 -0.2175 7.8545 H 1 UNCH 0.0000 + 18 H3K 0.8179 -0.3657 8.6370 H 1 UNCH 0.0000 + 19 H4K -0.2603 0.9591 9.0957 H 1 UNCH 0.0000 + 20 H2E -2.5426 3.0800 4.7386 H 1 UNCH 0.0000 + 21 H3E -2.6906 1.5072 3.9562 H 1 UNCH 0.0000 + 22 H4E -1.3657 2.5855 3.4977 H 1 UNCH 0.0000 + 23 H2N 0.7545 4.8679 7.8549 H 1 UNCH 0.0000 + 24 H3N -0.8183 5.0160 8.6371 H 1 UNCH 0.0000 + 25 H4N 0.2599 3.6912 9.0958 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 9 1 + 4 1 10 1 + 5 2 3 1 + 6 2 4 1 + 7 4 5 1 + 8 4 6 1 + 9 4 7 1 + 10 8 11 1 + 11 8 12 1 + 12 9 13 1 + 13 9 14 1 + 14 10 15 1 + 15 10 16 1 + 16 12 17 1 + 17 12 18 1 + 18 12 19 1 + 19 14 20 1 + 20 14 21 1 + 21 14 22 1 + 22 16 23 1 + 23 16 24 1 + 24 16 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT TETRAKIS(METHYLAMINO)SILANE +@MOLECULE +JETJUN + 18 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 6.9504 4.2128 3.8606 P 1 JETJ 1.2424 + 2 P2 6.9550 3.9861 6.9058 P 1 JETJ 1.1712 + 3 C1 7.9778 3.9168 5.3394 C.3 1 JETJ 0.2800 + 4 C2 9.1992 4.8205 5.3975 C.3 1 JETJ 0.0000 + 5 O1 8.4760 2.5399 5.3204 O.3 1 JETJ -0.6800 + 6 O2 5.5641 3.4164 4.0605 O.3 1 JETJ -0.7712 + 7 O3 6.7645 5.6293 3.4051 O.2 1 JETJ -0.7000 + 8 O4 7.6002 3.3251 2.6771 O.3 1 JETJ -0.7712 + 9 O5 5.5184 3.7010 6.5400 O.3 1 JETJ -0.9500 + 10 O6 7.0430 5.5246 7.3682 O.3 1 JETJ -0.7712 + 11 O7 7.6721 3.1623 7.9438 O.2 1 JETJ -0.9500 + 12 H1 9.8055 4.6027 6.2827 H 1 JETJ 0.0000 + 13 H2 9.8340 4.6666 4.5187 H 1 JETJ 0.0000 + 14 H3 8.9074 5.8740 5.4274 H 1 JETJ 0.0000 + 15 H4 7.0857 3.4599 1.8635 H 1 JETJ 0.5000 + 16 H5 5.3053 3.4100 5.0377 H 1 JETJ 0.5000 + 17 H6 6.5485 5.5967 8.2039 H 1 JETJ 0.5000 + 18 H9 8.4147 2.2641 6.2669 H 1 JETJ 0.4000 +@BOND + 1 1 8 1 + 2 1 7 2 + 3 1 6 1 + 4 1 3 1 + 5 2 11 2 + 6 2 10 1 + 7 2 9 1 + 8 2 3 1 + 9 3 5 1 + 10 3 4 1 + 11 4 14 1 + 12 4 13 1 + 13 4 12 1 + 14 5 18 1 + 15 6 16 1 + 16 8 15 1 + 17 10 17 1 +@SUBSTRUCTURE + 1 JETJ 1 +@COMMENT +COMMENT SODIUM TRIHYDROGEN-1-HYDROXY-1,1-DIPHOSPHONATOETHANE MONOHY +@MOLECULE +JEVXIR + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.0876 0.4374 6.0087 O.3 1 JEVX -0.3790 + 2 O2 -2.4231 3.1210 3.9625 O.2 1 JEVX -0.5700 + 3 O3 0.0501 -0.5982 2.3420 O.2 1 JEVX -0.5700 + 4 N1 0.8121 0.6136 4.6581 N.3 1 JEVX -0.5210 + 5 C1 -1.0718 1.2991 3.2403 C.2 1 JEVX 0.0288 + 6 C2 -2.1890 2.2737 3.1018 C.2 1 JEVX 0.4946 + 7 C3 -3.0772 2.1602 1.8819 C.3 1 JEVX 0.0610 + 8 C4 -2.3633 1.5869 0.6476 C.3 1 JEVX 0.0000 + 9 C5 -1.7355 0.2278 0.9942 C.3 1 JEVX 0.0610 + 10 C6 -0.8265 0.2573 2.2039 C.2 1 JEVX 0.4946 + 11 C7 -0.2847 1.3796 4.3272 C.2 1 JEVX -0.0500 + 12 C8 -3.4050 1.3768 -0.4689 C.3 1 JEVX 0.0000 + 13 C9 -1.2968 2.5679 0.1216 C.3 1 JEVX 0.0000 + 14 H1 -3.4648 3.1610 1.6539 H 1 JEVX 0.0000 + 15 H2 -1.1488 -0.1375 0.1421 H 1 JEVX 0.0000 + 16 H3 -0.4793 2.1321 5.0908 H 1 JEVX 0.1500 + 17 H4 -2.9410 0.9595 -1.3698 H 1 JEVX 0.0000 + 18 H5 -0.8091 2.1718 -0.7765 H 1 JEVX 0.0000 + 19 H6 -1.7475 3.5308 -0.1450 H 1 JEVX 0.0000 + 20 H7 1.9699 0.8427 6.1086 H 1 JEVX 0.4000 + 21 H8 -3.9304 1.5310 2.1649 H 1 JEVX 0.0000 + 22 H9 -2.5155 -0.5153 1.2030 H 1 JEVX 0.0000 + 23 H10 -3.8835 2.3228 -0.7470 H 1 JEVX 0.0000 + 24 H11 -4.1946 0.6862 -0.1518 H 1 JEVX 0.0000 + 25 H12 -0.5119 2.7672 0.8577 H 1 JEVX 0.0000 + 26 H13 0.8904 -0.2456 4.0910 H 1 JEVX 0.4000 +@BOND + 1 1 20 1 + 2 1 4 1 + 3 2 6 2 + 4 3 10 2 + 5 4 26 1 + 6 4 11 1 + 7 5 11 2 + 8 5 10 1 + 9 5 6 1 + 10 6 7 1 + 11 7 21 1 + 12 7 14 1 + 13 7 8 1 + 14 8 13 1 + 15 8 12 1 + 16 8 9 1 + 17 9 22 1 + 18 9 15 1 + 19 9 10 1 + 20 11 16 1 + 21 12 24 1 + 22 12 23 1 + 23 12 17 1 + 24 13 25 1 + 25 13 19 1 + 26 13 18 1 +@SUBSTRUCTURE + 1 JEVX 1 +@COMMENT +COMMENT 5,5-DIMETHYL-2-(N-HYDROXY)AMINOMETHYLENE-M-BENZOQUINONE 2-( +@MOLECULE +JEWFAS + 38 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -2.0483 0.9538 7.2302 P 1 UNCH 1.5070 + 2 CL1 -0.5645 -2.9566 9.8238 CL 1 UNCH -0.2900 + 3 CL2 -2.0215 -1.3879 2.9716 CL 1 UNCH -0.2900 + 4 O1 -0.4526 1.0791 7.4239 O.3 1 UNCH -0.5512 + 5 O2 -2.5399 1.8961 6.1770 O.2 1 UNCH -0.7000 + 6 N1 -2.6357 1.2912 8.7171 N.3 1 UNCH -0.8979 + 7 N2 -2.3582 -0.6382 6.9813 N.3 1 UNCH -0.8079 + 8 N3 -3.8230 4.3049 12.2011 N.2 1 UNCH -0.6200 + 9 C1 -2.1463 2.5468 9.2858 C.3 1 UNCH 0.4135 + 10 C2 -0.6065 2.5502 9.3336 C.3 1 UNCH 0.0000 + 11 C3 -0.0027 2.3168 7.9524 C.3 1 UNCH 0.2800 + 12 C4 -1.5110 -1.6623 7.6184 C.3 1 UNCH 0.2700 + 13 C5 -1.4741 -1.5786 9.1478 C.3 1 UNCH 0.2900 + 14 C6 -2.6773 -1.0193 5.5909 C.3 1 UNCH 0.2700 + 15 C7 -1.5156 -0.8731 4.6011 C.3 1 UNCH 0.2900 + 16 C8 -3.2999 4.0063 10.9904 C.2 1 UNCH 0.1600 + 17 C9 -2.7230 2.7809 10.6636 C.2 1 UNCH -0.1435 + 18 C10 -2.6868 1.8084 11.6704 C.2 1 UNCH -0.1500 + 19 C11 -3.2194 2.0869 12.9259 C.2 1 UNCH -0.1500 + 20 C12 -3.7718 3.3375 13.1407 C.2 1 UNCH 0.1600 + 21 H1 -3.6499 1.3261 8.6889 H 1 UNCH 0.3600 + 22 H2 -2.4741 3.3625 8.6276 H 1 UNCH 0.0000 + 23 H3 -0.2416 3.5041 9.7333 H 1 UNCH 0.0000 + 24 H4 -0.2523 1.7616 10.0107 H 1 UNCH 0.0000 + 25 H5 1.0886 2.2775 8.0227 H 1 UNCH 0.0000 + 26 H6 -0.2642 3.1251 7.2610 H 1 UNCH 0.0000 + 27 H7 -0.4882 -1.5982 7.2282 H 1 UNCH 0.0000 + 28 H8 -1.8915 -2.6578 7.3549 H 1 UNCH 0.0000 + 29 H9 -2.4818 -1.6125 9.5725 H 1 UNCH 0.0000 + 30 H10 -0.9680 -0.6757 9.4946 H 1 UNCH 0.0000 + 31 H11 -3.0598 -2.0482 5.5711 H 1 UNCH 0.0000 + 32 H12 -3.5189 -0.4011 5.2530 H 1 UNCH 0.0000 + 33 H13 -1.1742 0.1628 4.5259 H 1 UNCH 0.0000 + 34 H14 -0.6654 -1.4996 4.8842 H 1 UNCH 0.0000 + 35 H15 -3.3622 4.8154 10.2666 H 1 UNCH 0.1500 + 36 H16 -2.2465 0.8326 11.4812 H 1 UNCH 0.1500 + 37 H17 -3.2032 1.3462 13.7175 H 1 UNCH 0.1500 + 38 H18 -4.2000 3.6030 14.1031 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 5 2 + 3 1 6 1 + 4 1 7 1 + 5 2 13 1 + 6 3 15 1 + 7 4 11 1 + 8 6 9 1 + 9 6 21 1 + 10 7 12 1 + 11 7 14 1 + 12 8 16 2 + 13 8 20 1 + 14 9 10 1 + 15 9 17 1 + 16 9 22 1 + 17 10 11 1 + 18 10 23 1 + 19 10 24 1 + 20 11 25 1 + 21 11 26 1 + 22 12 13 1 + 23 12 27 1 + 24 12 28 1 + 25 13 29 1 + 26 13 30 1 + 27 14 15 1 + 28 14 31 1 + 29 14 32 1 + 30 15 33 1 + 31 15 34 1 + 32 16 17 1 + 33 16 35 1 + 34 17 18 2 + 35 18 19 1 + 36 18 36 1 + 37 19 20 2 + 38 19 37 1 + 39 20 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-(3'-PYRIDYL)CYCLOPHOSPHAMIDE +@MOLECULE +JEWPIK + 19 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.8473 8.9061 0.2478 N.3 1 JEWP -0.1000 + 2 C1 4.9599 8.3287 0.8782 C.2 1 JEWP 0.6156 + 3 C2 4.6711 8.3431 2.3492 C.2 1 JEWP 0.1544 + 4 C3 3.4203 8.8043 2.4788 C.2 1 JEWP -0.0382 + 5 N2 2.9062 9.1868 1.2512 N.3 1 JEWP -0.2200 + 6 C4 1.6478 8.8065 0.8158 C.2 1 JEWP -0.0382 + 7 C5 1.6969 8.3468 -0.4412 C.2 1 JEWP 0.1544 + 8 C6 3.1465 8.3309 -0.8231 C.2 1 JEWP 0.6156 + 9 O1 5.9999 7.9369 0.3773 O.2 1 JEWP -0.5700 + 10 O2 3.5796 7.9398 -1.8934 O.2 1 JEWP -0.5700 + 11 CL1 5.7097 7.7094 3.5162 CL 1 JEWP -0.1400 + 12 CL2 0.4653 7.7158 -1.4042 CL 1 JEWP -0.1400 + 13 C7 2.5416 8.8591 3.6869 C.3 1 JEWP 0.3682 + 14 C8 0.4982 8.8616 1.7698 C.3 1 JEWP 0.3682 + 15 S1 0.9477 8.0179 3.3371 S.3 1 JEWP -0.4600 + 16 H1 2.9994 8.3669 4.5497 H 1 JEWP 0.0000 + 17 H2 2.3372 9.8984 3.9641 H 1 JEWP 0.0000 + 18 H3 0.2360 9.9010 1.9927 H 1 JEWP 0.0000 + 19 H4 -0.3926 8.3711 1.3672 H 1 JEWP 0.0000 +@BOND + 1 1 8 am + 2 1 5 1 + 3 1 2 am + 4 2 9 2 + 5 2 3 1 + 6 3 11 1 + 7 3 4 2 + 8 4 13 1 + 9 4 5 1 + 10 5 6 1 + 11 6 14 1 + 12 6 7 2 + 13 7 12 1 + 14 7 8 1 + 15 8 10 2 + 16 13 17 1 + 17 13 16 1 + 18 13 15 1 + 19 14 19 1 + 20 14 18 1 + 21 14 15 1 +@SUBSTRUCTURE + 1 JEWP 1 +@COMMENT +COMMENT SYN-3,7-DICHLORO-4,6-(2-THIA-1,3-TRIMETHYLENE)-1,5-DIAZABIC +@MOLECULE +JEXREJ + 34 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 13.7021 1.0491 2.9003 S.1 1 UNCH 1.3328 + 2 S2 13.2007 3.6859 1.7897 S.1 1 UNCH 1.3328 + 3 O1 15.0950 1.4295 2.7799 O.2 1 UNCH -0.6500 + 4 O2 13.2917 0.2715 4.0545 O.2 1 UNCH -0.6500 + 5 O3 13.6230 3.1487 0.5124 O.2 1 UNCH -0.6500 + 6 O4 12.1725 4.7108 1.8247 O.2 1 UNCH -0.6500 + 7 N1 7.2199 1.5233 3.8272 N.3 1 UNCH -0.8382 + 8 N2 12.7485 2.4237 2.7930 N.3 1 UNCH -0.4750 + 9 C1 8.5731 1.7738 3.5726 C.2 1 UNCH 0.1000 + 10 C2 9.5281 1.8671 4.6000 C.2 1 UNCH -0.1500 + 11 C3 10.8868 2.1035 4.3427 C.2 1 UNCH -0.1500 + 12 C4 11.3424 2.2538 3.0363 C.2 1 UNCH 0.1990 + 13 C5 10.4273 2.1281 1.9923 C.2 1 UNCH -0.1500 + 14 C6 9.0704 1.8973 2.2630 C.2 1 UNCH -0.1500 + 15 C7 6.2389 1.8974 2.8075 C.3 1 UNCH 0.3691 + 16 C8 6.7331 1.5578 5.2056 C.3 1 UNCH 0.3691 + 17 C9 13.2716 0.1094 1.4454 C.3 1 UNCH 0.1052 + 18 C10 14.6107 4.3903 2.6229 C.3 1 UNCH 0.1052 + 19 H1 9.2431 1.7563 5.6420 H 1 UNCH 0.1500 + 20 H2 11.5785 2.1574 5.1804 H 1 UNCH 0.1500 + 21 H3 10.7407 2.2129 0.9545 H 1 UNCH 0.1500 + 22 H4 8.4094 1.8056 1.4060 H 1 UNCH 0.1500 + 23 H5 6.3205 2.9599 2.5524 H 1 UNCH 0.0000 + 24 H6 6.3566 1.2911 1.9032 H 1 UNCH 0.0000 + 25 H7 5.2149 1.7209 3.1559 H 1 UNCH 0.0000 + 26 H8 6.8450 2.5582 5.6379 H 1 UNCH 0.0000 + 27 H9 7.2553 0.8248 5.8300 H 1 UNCH 0.0000 + 28 H10 5.6715 1.2901 5.2556 H 1 UNCH 0.0000 + 29 H11 13.5156 0.6709 0.5456 H 1 UNCH 0.0000 + 30 H12 12.2126 -0.1487 1.4787 H 1 UNCH 0.0000 + 31 H13 13.8636 -0.8092 1.4645 H 1 UNCH 0.0000 + 32 H14 15.4909 3.7659 2.4856 H 1 UNCH 0.0000 + 33 H15 14.8016 5.3685 2.1738 H 1 UNCH 0.0000 + 34 H16 14.3698 4.5198 3.6796 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 4 2 + 3 1 8 1 + 4 1 17 1 + 5 2 5 2 + 6 2 6 2 + 7 2 8 1 + 8 2 18 1 + 9 7 9 1 + 10 7 15 1 + 11 7 16 1 + 12 8 12 1 + 13 9 10 1 + 14 9 14 2 + 15 10 11 2 + 16 10 19 1 + 17 11 12 1 + 18 11 20 1 + 19 12 13 2 + 20 13 14 1 + 21 13 21 1 + 22 14 22 1 + 23 15 23 1 + 24 15 24 1 + 25 15 25 1 + 26 16 26 1 + 27 16 27 1 + 28 16 28 1 + 29 17 29 1 + 30 17 30 1 + 31 17 31 1 + 32 18 32 1 + 33 18 33 1 + 34 18 34 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-(N,N-DIMETHYLAMINO)-N,N-DIMETHANESULFONANILIDE +@MOLECULE +JEYBUK + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 5.5522 5.1676 15.9119 N.3 1 JEYB 0.0332 + 2 C1 4.8380 4.1926 15.2696 C.2 1 JEYB -0.3016 + 3 C2 4.0842 3.5143 16.2090 C.2 1 JEYB -0.1810 + 4 C3 3.9078 3.8909 18.7957 C.2 1 JEYB -0.1500 + 5 C4 4.3917 4.7017 19.8255 C.2 1 JEYB 0.0825 + 6 O1 3.9882 4.5130 21.1170 O.3 1 JEYB -0.5325 + 7 C5 5.2970 5.7253 19.5810 C.2 1 JEYB -0.1500 + 8 C6 5.7587 5.9722 18.2857 C.2 1 JEYB -0.1500 + 9 C7 5.2717 5.1554 17.2577 C.2 1 JEYB -0.1516 + 10 C8 4.3573 4.1241 17.4779 C.2 1 JEYB 0.0000 + 11 C9 3.1478 2.3783 15.9430 C.3 1 JEYB 0.2420 + 12 C10 3.7107 1.0324 16.3346 C.2 1 JEYB 0.6590 + 13 O2 4.8062 0.7636 16.7965 O.2 1 JEYB -0.5700 + 14 O3 2.8203 0.0378 16.1133 O.3 1 JEYB -0.6500 + 15 H1 6.1935 5.8098 15.4676 H 1 JEYB 0.2700 + 16 H2 4.9306 4.0608 14.1996 H 1 JEYB 0.1500 + 17 H3 3.2030 3.0919 18.9929 H 1 JEYB 0.1500 + 18 H4 3.4030 3.7388 21.1444 H 1 JEYB 0.4500 + 19 H5 5.6530 6.3366 20.4062 H 1 JEYB 0.1500 + 20 H6 6.4702 6.7680 18.0927 H 1 JEYB 0.1500 + 21 H7 2.9038 2.3440 14.8747 H 1 JEYB 0.0000 + 22 H8 2.2186 2.5383 16.5019 H 1 JEYB 0.0000 + 23 H9 3.3050 -0.7676 16.3934 H 1 JEYB 0.5000 +@BOND + 1 1 15 1 + 2 1 9 1 + 3 1 2 1 + 4 2 16 1 + 5 2 3 2 + 6 3 11 1 + 7 3 10 1 + 8 4 17 1 + 9 4 10 1 + 10 4 5 2 + 11 5 7 1 + 12 5 6 1 + 13 6 18 1 + 14 7 19 1 + 15 7 8 2 + 16 8 20 1 + 17 8 9 1 + 18 9 10 2 + 19 11 22 1 + 20 11 21 1 + 21 11 12 1 + 22 12 14 1 + 23 12 13 2 + 24 14 23 1 +@SUBSTRUCTURE + 1 JEYB 1 +@COMMENT +COMMENT 5-HYDROXYINDOLE-3-ACETIC ACID +@MOLECULE +JIDHIN + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.1469 6.8120 -2.6986 S.1 1 UNCH 1.4470 + 2 C1 4.9967 8.0918 0.3527 C.2 1 UNCH -0.1435 + 3 C2 4.9668 6.7996 -0.1902 C.2 1 UNCH -0.1500 + 4 C3 5.9289 6.3990 -1.1194 C.2 1 UNCH -0.1500 + 5 C4 6.9200 7.3002 -1.5136 C.2 1 UNCH -0.0090 + 6 C5 6.9516 8.5975 -0.9956 C.2 1 UNCH -0.1500 + 7 C6 5.9876 8.9904 -0.0659 C.2 1 UNCH -0.1500 + 8 C7 3.9417 8.5283 1.3269 C.3 1 UNCH 0.1435 + 9 C8 10.7925 6.4237 -2.4232 C.3 1 UNCH 0.0360 + 10 C9 10.5901 7.9058 -2.2243 C.3 1 UNCH 0.0360 + 11 C10 11.6712 5.5709 -1.5759 C.3 1 UNCH 0.3750 + 12 C11 11.2796 8.7051 -1.1729 C.3 1 UNCH 0.3750 + 13 N1 9.5761 6.9397 -1.7673 N.3 1 UNCH -0.6000 + 14 O1 7.9600 5.4046 -2.9915 O.2 1 UNCH -0.6500 + 15 O2 8.1555 7.8035 -3.7549 O.2 1 UNCH -0.6500 + 16 O3 11.1875 4.2341 -1.5968 O.3 1 UNCH -0.6800 + 17 O4 10.5305 9.8859 -0.9030 O.3 1 UNCH -0.6800 + 18 H1 4.1920 6.0966 0.1092 H 1 UNCH 0.1500 + 19 H2 5.8937 5.3919 -1.5285 H 1 UNCH 0.1500 + 20 H3 7.7197 9.3016 -1.3061 H 1 UNCH 0.1500 + 21 H4 6.0154 10.0025 0.3327 H 1 UNCH 0.1500 + 22 H5 3.5926 7.6830 1.9291 H 1 UNCH 0.0000 + 23 H6 4.3365 9.2790 2.0196 H 1 UNCH 0.0000 + 24 H7 3.0900 8.9558 0.7889 H 1 UNCH 0.0000 + 25 H8 10.6538 6.0202 -3.4205 H 1 UNCH 0.1000 + 26 H9 10.3487 8.4922 -3.1021 H 1 UNCH 0.1000 + 27 H10 11.7116 5.8990 -0.5330 H 1 UNCH 0.0000 + 28 H11 12.6906 5.5694 -1.9728 H 1 UNCH 0.0000 + 29 H12 11.3808 8.1590 -0.2305 H 1 UNCH 0.0000 + 30 H13 12.2804 8.9974 -1.5058 H 1 UNCH 0.0000 + 31 H14 10.2344 4.2753 -1.3909 H 1 UNCH 0.4000 + 32 H15 10.5610 10.4446 -1.6983 H 1 UNCH 0.4000 +@BOND + 1 1 5 1 + 2 1 13 1 + 3 1 14 2 + 4 1 15 2 + 5 2 3 2 + 6 2 7 1 + 7 2 8 1 + 8 3 4 1 + 9 3 18 1 + 10 4 5 2 + 11 4 19 1 + 12 5 6 1 + 13 6 7 2 + 14 6 20 1 + 15 7 21 1 + 16 8 22 1 + 17 8 23 1 + 18 8 24 1 + 19 9 10 1 + 20 9 11 1 + 21 9 13 1 + 22 9 25 1 + 23 10 12 1 + 24 10 13 1 + 25 10 26 1 + 26 11 16 1 + 27 11 27 1 + 28 11 28 1 + 29 12 17 1 + 30 12 29 1 + 31 12 30 1 + 32 16 31 1 + 33 17 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,3-DI(HYDROXYMETHYL)-N-P-TOSYLAZIRIDINE +@MOLECULE +JIFYUS + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.0454 1.7840 -1.1061 S.1 1 JIFY 1.6670 + 2 O1 7.3971 3.0413 -1.7268 O.2 1 JIFY -0.6500 + 3 N1 7.5877 1.7840 0.3951 N.3 1 JIFY -0.6624 + 4 N2 8.9773 1.7840 2.7920 N.3 1 JIFY -0.9900 + 5 N3 5.4965 1.7840 1.4615 N.2 1 JIFY -0.6534 + 6 C1 6.8195 1.7840 1.4533 C.2 1 JIFY 0.6038 + 7 C2 3.3637 1.7840 0.4228 C.2 1 JIFY -0.1500 + 8 C3 2.5544 1.7840 -0.7193 C.2 1 JIFY -0.1500 + 9 C4 3.1312 1.7840 -1.9873 C.2 1 JIFY -0.1500 + 10 C5 4.5164 1.7840 -2.1139 C.2 1 JIFY -0.1500 + 11 C6 4.7606 1.7840 0.3164 C.2 1 JIFY 0.3490 + 12 C7 5.3068 1.7840 -0.9579 C.2 1 JIFY -0.0090 + 13 C8 7.5215 1.7840 2.7923 C.3 1 JIFY 0.3750 + 14 H1 2.8751 1.7840 1.3953 H 1 JIFY 0.1500 + 15 H2 1.4690 1.7840 -0.6206 H 1 JIFY 0.1500 + 16 H3 2.4986 1.7840 -2.8746 H 1 JIFY 0.1500 + 17 H4 4.9686 1.7840 -3.1053 H 1 JIFY 0.1500 + 18 H5 7.1816 0.9052 3.3529 H 1 JIFY 0.0000 + 19 H6 5.0146 1.7840 2.3599 H 1 JIFY 0.4500 + 20 H7 9.4281 2.6348 2.4656 H 1 JIFY 0.3600 + 21 H8 8.5858 1.7840 0.5256 H 1 JIFY 0.4500 + 22 O1B 7.3971 0.5267 -1.7268 O.2 1 JIFY -0.6500 + 23 H5B 7.1816 2.6628 3.3529 H 1 JIFY 0.0000 + 24 H7B 9.4281 0.9332 2.4656 H 1 JIFY 0.3600 +@BOND + 1 1 22 2 + 2 1 12 1 + 3 1 3 1 + 4 1 2 2 + 5 3 21 1 + 6 3 6 am + 7 4 24 1 + 8 4 20 1 + 9 4 13 1 + 10 5 19 1 + 11 5 11 1 + 12 5 6 2 + 13 6 13 1 + 14 7 14 1 + 15 7 11 1 + 16 7 8 2 + 17 8 15 1 + 18 8 9 1 + 19 9 16 1 + 20 9 10 2 + 21 10 17 1 + 22 10 12 1 + 23 11 12 2 + 24 13 23 1 + 25 13 18 1 +@SUBSTRUCTURE + 1 JIFY 1 +@COMMENT +COMMENT 3-AMINOMETHYL-1,2,4-BENZOTHIADIAZINE-1,1-DIOXIDE +@MOLECULE +JIGCIL + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.9007 0.9603 0.1566 S.3 1 UNCH 0.1807 + 2 O1 5.0485 -2.3937 1.8114 O.3 1 UNCH -0.0481 + 3 N1 5.7757 -0.3387 0.8246 N.2 1 UNCH -0.5277 + 4 N2 3.7575 -2.9357 2.0287 N.2 1 UNCH -0.4097 + 5 N3 2.1518 0.9049 0.0547 N.3 1 UNCH -0.8840 + 6 C1 3.2963 0.2853 0.4134 C.2 1 UNCH 0.1240 + 7 C2 4.8578 -1.1794 1.2042 C.2 1 UNCH 0.4890 + 8 C3 3.5164 -0.9068 1.0144 C.2 1 UNCH -0.0130 + 9 C4 2.8615 -2.0340 1.5511 C.2 1 UNCH 0.1078 + 10 C5 1.4099 -2.3026 1.6363 C.3 1 UNCH 0.1810 + 11 H1 1.2828 0.3840 -0.0207 H 1 UNCH 0.4000 + 12 H2 2.1976 1.7020 -0.5758 H 1 UNCH 0.4000 + 13 H3 0.9048 -1.5027 2.1870 H 1 UNCH 0.0000 + 14 H4 0.9735 -2.3594 0.6340 H 1 UNCH 0.0000 + 15 H5 1.2030 -3.2475 2.1492 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 6 1 + 3 2 4 1 + 4 2 7 1 + 5 3 7 2 + 6 4 9 2 + 7 5 6 1 + 8 5 11 1 + 9 5 12 1 + 10 6 8 2 + 11 7 8 1 + 12 8 9 1 + 13 9 10 1 + 14 10 13 1 + 15 10 14 1 + 16 10 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-AMINOISOTHIAZOLO(4,3-D)ISOXAZOLE +@MOLECULE +JIGRAS + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 7.8109 15.6345 2.0126 CL 1 JIGR -0.1400 + 2 CL2 6.0498 20.1515 6.0748 CL 1 JIGR -0.1400 + 3 CL3 3.2109 11.1671 6.0809 CL 1 JIGR -0.1400 + 4 O1 8.6272 18.4865 2.1190 O.2 1 JIGR -0.5700 + 5 O2 7.9587 20.4869 3.7759 O.3 1 JIGR -0.5267 + 6 O3 5.1974 17.3213 6.0234 O.2 1 JIGR -0.5700 + 7 C1 7.2748 16.8112 3.1695 C.2 1 JIGR 0.1544 + 8 C2 7.8344 18.1730 3.0037 C.2 1 JIGR 0.5412 + 9 C3 7.4147 19.2233 3.9612 C.2 1 JIGR 0.0911 + 10 C4 6.5546 18.9431 4.9452 C.2 1 JIGR 0.1544 + 11 C5 5.9878 17.5805 5.1199 C.2 1 JIGR 0.5412 + 12 C6 6.4115 16.5220 4.1539 C.2 1 JIGR 0.0794 + 13 C7 5.8682 15.2105 4.3190 C.1 1 JIGR -0.0650 + 14 C8 5.4046 14.1127 4.4686 C.1 1 JIGR -0.0650 + 15 C9 4.8499 12.8076 4.6509 C.2 1 JIGR -0.0732 + 16 C10 3.9957 12.6339 5.6702 C.2 1 JIGR -0.0100 + 17 C11 5.2693 11.7343 3.6845 C.3 1 JIGR 0.1382 + 18 H1 8.5497 20.4170 2.9942 H 1 JIGR 0.4500 + 19 H2 3.7112 13.4280 6.3523 H 1 JIGR 0.1500 + 20 H3 4.8072 10.7637 3.8833 H 1 JIGR 0.0000 + 21 H4 4.9998 12.0211 2.6620 H 1 JIGR 0.0000 + 22 H5 6.3551 11.5936 3.7250 H 1 JIGR 0.0000 +@BOND + 1 1 7 1 + 2 2 10 1 + 3 3 16 1 + 4 4 8 2 + 5 5 9 1 + 6 5 18 1 + 7 6 11 2 + 8 7 8 1 + 9 7 12 2 + 10 8 9 1 + 11 9 10 2 + 12 10 11 1 + 13 11 12 1 + 14 12 13 1 + 15 13 14 3 + 16 14 15 1 + 17 15 16 2 + 18 15 17 1 + 19 16 19 1 + 20 17 20 1 + 21 17 21 1 + 22 17 22 1 +@SUBSTRUCTURE + 1 JIGR 1 +@COMMENT +COMMENT MYCENON (INHIBITOR OF ISOCITRATE LYASE) +@MOLECULE +JIHVEB + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.6048 -0.5338 -4.7869 O.3 1 UNCH -0.5200 + 2 N1 -0.6340 -0.7046 -6.0146 N.2 1 UNCH 0.8750 + 3 O2 -1.4545 -1.4055 -6.6263 O.2 1 UNCH -0.5200 + 4 C1 0.4014 -0.0617 -6.8328 C.2 1 UNCH 0.5540 + 5 N2 0.7763 1.0767 -6.3324 N.2 1 UNCH -0.5130 + 6 C2 0.8027 -0.7386 -8.0976 C.3 1 UNCH 0.0610 + 7 O3 1.7259 1.6946 -7.1574 O.3 1 UNCH -0.3370 + 8 H1 0.7341 -1.8256 -7.9996 H 1 UNCH 0.0000 + 9 H2 1.8344 -0.4879 -8.3573 H 1 UNCH 0.0000 + 10 H3 0.1451 -0.4082 -8.9065 H 1 UNCH 0.0000 + 11 H4 1.9310 2.5163 -6.6687 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 2 3 2 + 3 2 4 am + 4 4 5 2 + 5 4 6 1 + 6 5 7 1 + 7 6 8 1 + 8 6 9 1 + 9 6 10 1 + 10 7 11 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-ACETONITROLIC ACID (AT 185 DEG.K) +@MOLECULE +JIKHUG + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.7740 -1.0594 3.1673 N.3 1 JIKH -0.4691 + 2 C1 0.5635 -2.3383 2.6712 C.2 1 JIKH 0.6900 + 3 O1 1.1123 -2.7947 1.6720 O.2 1 JIKH -0.5700 + 4 N2 -0.3336 -3.1024 3.3691 N.3 1 JIKH -0.4900 + 5 C2 -1.0756 -2.7068 4.4491 C.2 1 JIKH 0.6156 + 6 O2 -1.8865 -3.4671 4.9685 O.2 1 JIKH -0.5700 + 7 C3 -0.8373 -1.3152 4.9201 C.2 1 JIKH 0.1044 + 8 I1 -1.8764 -0.5860 6.5215 I 1 JIKH -0.0900 + 9 C4 0.0618 -0.5790 4.2545 C.2 1 JIKH -0.0410 + 10 C5 1.7108 -0.1948 2.4395 C.3 1 JIKH 0.5801 + 11 C6 0.9956 0.5716 1.3181 C.3 1 JIKH 0.0000 + 12 C7 1.9513 1.5377 0.6303 C.3 1 JIKH 0.2800 + 13 O3 2.8938 0.7907 -0.1448 O.3 1 JIKH -0.6800 + 14 C8 2.6973 2.4084 1.6490 C.3 1 JIKH 0.2800 + 15 O4 3.7204 3.1484 0.9801 O.3 1 JIKH -0.6800 + 16 C9 3.3095 1.5294 2.7398 C.3 1 JIKH 0.2800 + 17 O5 2.3064 0.7281 3.3646 O.3 1 JIKH -0.5600 + 18 H1 -0.4967 -4.0346 3.0213 H 1 JIKH 0.3700 + 19 H2 0.2726 0.4448 4.5524 H 1 JIKH 0.1500 + 20 H3 2.5077 -0.8248 2.0236 H 1 JIKH 0.0000 + 21 H4 0.1628 1.1477 1.7409 H 1 JIKH 0.0000 + 22 H5 0.5768 -0.1351 0.5923 H 1 JIKH 0.0000 + 23 H6 1.4076 2.1733 -0.0771 H 1 JIKH 0.0000 + 24 H7 3.6475 1.3901 -0.3178 H 1 JIKH 0.4000 + 25 H8 1.9944 3.1124 2.1110 H 1 JIKH 0.0000 + 26 H9 3.2840 3.8536 0.4685 H 1 JIKH 0.4000 + 27 H10 4.1145 0.8935 2.3509 H 1 JIKH 0.0000 + 28 H11 3.7657 2.1622 3.5090 H 1 JIKH 0.0000 +@BOND + 1 1 2 am + 2 1 9 1 + 3 1 10 1 + 4 2 3 2 + 5 2 4 am + 6 4 5 am + 7 4 18 1 + 8 5 6 2 + 9 5 7 1 + 10 7 8 1 + 11 7 9 2 + 12 9 19 1 + 13 10 11 1 + 14 10 17 1 + 15 10 20 1 + 16 11 12 1 + 17 11 21 1 + 18 11 22 1 + 19 12 13 1 + 20 12 14 1 + 21 12 23 1 + 22 13 24 1 + 23 14 15 1 + 24 14 16 1 + 25 14 25 1 + 26 15 26 1 + 27 16 17 1 + 28 16 27 1 + 29 16 28 1 +@SUBSTRUCTURE + 1 JIKH 1 +@COMMENT +COMMENT 1-(2-DEOXY-BETA-D-RIBOPYRANOSYL)-5-IODO-URACIL +@MOLECULE +JILWUW + 18 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 7.5009 1.5209 2.9574 N.3 1 JILW -0.7750 + 2 N2 8.0398 1.5881 4.1949 N.2 1 JILW -0.7750 + 3 C1 7.0104 1.5997 5.0784 C.2 1 JILW 0.3670 + 4 C2 4.4624 1.5443 4.8824 C.2 1 JILW -0.1090 + 5 C3 3.4902 1.4840 3.8701 C.2 1 JILW 0.1330 + 6 C4 3.8325 1.4328 2.5022 C.2 1 JILW -0.1500 + 7 C5 5.1707 1.4412 2.0969 C.2 1 JILW -0.1090 + 8 C6 6.1603 1.5014 3.0910 C.2 1 JILW 0.2340 + 9 C7 5.7857 1.5491 4.4396 C.2 1 JILW -0.0410 + 10 N3 7.2716 1.6302 6.4790 N.2 1 JILW 0.9480 + 11 O1 8.2813 2.2234 6.8928 O.3 1 JILW -0.5200 + 12 O2 6.4173 1.0887 7.2060 O.2 1 JILW -0.5200 + 13 N4 2.0722 1.4766 4.2506 N.2 1 JILW 0.9070 + 14 O3 1.7912 1.6105 5.4506 O.3 1 JILW -0.5200 + 15 O4 1.2304 1.3398 3.3497 O.2 1 JILW -0.5200 + 16 H1 4.2233 1.5831 5.9384 H 1 JILW 0.1500 + 17 H2 3.0647 1.3868 1.7329 H 1 JILW 0.1500 + 18 H3 5.4765 1.4038 1.0596 H 1 JILW 0.1500 +@BOND + 1 1 8 1 + 2 1 2 1 + 3 2 3 2 + 4 3 10 am + 5 3 9 1 + 6 4 16 1 + 7 4 9 1 + 8 4 5 2 + 9 5 13 1 + 10 5 6 1 + 11 6 17 1 + 12 6 7 2 + 13 7 18 1 + 14 7 8 1 + 15 8 9 2 + 16 10 12 2 + 17 10 11 1 + 18 13 15 2 + 19 13 14 1 +@SUBSTRUCTURE + 1 JILW 1 +@COMMENT +COMMENT THIOMORPHOLINIUM 3,5-DINITROINDAZOLE +@MOLECULE +JINDAL + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.5944 1.9423 10.0748 S.1 1 UNCH 1.3328 + 2 O1 3.3401 4.3458 9.2268 O.3 1 UNCH -0.3170 + 3 O2 2.9785 0.9689 10.9524 O.2 1 UNCH -0.6500 + 4 O3 4.9593 2.3857 10.3025 O.2 1 UNCH -0.6500 + 5 N1 2.6367 3.3636 10.0198 N.3 1 UNCH -0.4200 + 6 C1 -1.4046 2.8425 8.8455 C.2 1 UNCH -0.1500 + 7 C2 -0.5072 3.4409 7.9629 C.2 1 UNCH -0.1500 + 8 C3 0.8239 3.6334 8.3420 C.2 1 UNCH -0.1500 + 9 C4 1.2631 3.2372 9.6110 C.2 1 UNCH 0.1990 + 10 C5 0.3567 2.6302 10.4857 C.2 1 UNCH -0.1500 + 11 C6 -0.9733 2.4362 10.1067 C.2 1 UNCH -0.1500 + 12 C7 3.4970 1.3344 8.4000 C.3 1 UNCH 0.1052 + 13 H1 -2.4407 2.6933 8.5513 H 1 UNCH 0.1500 + 14 H2 -0.8432 3.7592 6.9792 H 1 UNCH 0.1500 + 15 H3 1.5067 4.0998 7.6375 H 1 UNCH 0.1500 + 16 H4 0.6810 2.3059 11.4725 H 1 UNCH 0.1500 + 17 H5 -1.6699 1.9669 10.7970 H 1 UNCH 0.1500 + 18 H6 4.1913 4.4641 9.7011 H 1 UNCH 0.4000 + 19 H7 2.4742 1.0227 8.1844 H 1 UNCH 0.0000 + 20 H8 4.1624 0.4711 8.3240 H 1 UNCH 0.0000 + 21 H9 3.8310 2.1129 7.7123 H 1 UNCH 0.0000 +@BOND + 1 1 3 2 + 2 1 4 2 + 3 1 5 1 + 4 1 12 1 + 5 2 5 1 + 6 2 18 1 + 7 5 9 1 + 8 6 7 2 + 9 6 11 1 + 10 6 13 1 + 11 7 8 1 + 12 7 14 1 + 13 8 9 2 + 14 8 15 1 + 15 9 10 1 + 16 10 11 2 + 17 10 16 1 + 18 11 17 1 + 19 12 19 1 + 20 12 20 1 + 21 12 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-METHANESULFONYL-N-PHENYLHYDROXYLAMINE +@MOLECULE +JINDOZ + 33 35 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.1445 0.7246 3.0597 S.1 1 JIND 1.6337 + 2 O1 6.2054 2.0372 2.0725 O.3 1 JIND -0.2662 + 3 O2 7.2765 -0.0812 2.6264 O.3 1 JIND -0.8167 + 4 O3 4.8283 0.1328 2.8193 O.2 1 JIND -0.8167 + 5 O4 6.2672 1.3344 4.3814 O.2 1 JIND -0.8167 + 6 N1 2.5351 2.1975 -2.0020 N.3 1 JIND 0.0332 + 7 N2 3.5255 3.5010 2.3619 N.3 1 JIND -0.8730 + 8 C1 1.5211 2.9108 -1.3965 C.2 1 JIND -0.3016 + 9 C2 1.9429 3.2311 -0.1287 C.2 1 JIND -0.1810 + 10 C3 3.2400 2.6992 0.0357 C.2 1 JIND 0.0000 + 11 C4 4.0953 2.7525 1.1502 C.2 1 JIND 0.3640 + 12 C5 5.3262 2.0952 1.0290 C.2 1 JIND 0.0825 + 13 C6 5.6999 1.4707 -0.1706 C.2 1 JIND -0.1500 + 14 C7 4.8457 1.4426 -1.2833 C.2 1 JIND -0.1500 + 15 C8 3.6045 2.0658 -1.1413 C.2 1 JIND -0.1516 + 16 C9 1.3338 3.9716 0.9988 C.3 1 JIND 0.1810 + 17 C10 2.4601 4.5464 1.8956 C.3 1 JIND 0.5030 + 18 C11 2.9035 2.4719 3.2991 C.3 1 JIND 0.5030 + 19 C12 4.6312 4.2588 3.0805 C.3 1 JIND 0.5030 + 20 H1 2.5018 1.8166 -2.9389 H 1 JIND 0.2700 + 21 H2 0.6001 3.1121 -1.9286 H 1 JIND 0.1500 + 22 H3 6.6632 0.9622 -0.2250 H 1 JIND 0.1500 + 23 H4 5.1367 0.9323 -2.1962 H 1 JIND 0.1500 + 24 H5 0.6911 3.3019 1.5810 H 1 JIND 0.0000 + 25 H6 0.7102 4.7928 0.6292 H 1 JIND 0.0000 + 26 H7 3.0125 5.3267 1.3544 H 1 JIND 0.0000 + 27 H8 2.0323 4.9947 2.8000 H 1 JIND 0.0000 + 28 H9 2.3141 1.7540 2.7214 H 1 JIND 0.0000 + 29 H10 2.2520 3.0083 3.9965 H 1 JIND 0.0000 + 30 H11 3.6830 1.9798 3.8769 H 1 JIND 0.0000 + 31 H12 5.2766 3.5738 3.6269 H 1 JIND 0.0000 + 32 H13 4.1598 4.9308 3.8056 H 1 JIND 0.0000 + 33 H14 5.1954 4.8445 2.3480 H 1 JIND 0.0000 +@BOND + 1 1 5 2 + 2 1 4 2 + 3 1 3 1 + 4 1 2 1 + 5 2 12 1 + 6 6 20 1 + 7 6 15 1 + 8 6 8 1 + 9 7 19 1 + 10 7 18 1 + 11 7 17 1 + 12 7 11 1 + 13 8 21 1 + 14 8 9 2 + 15 9 16 1 + 16 9 10 1 + 17 10 15 2 + 18 10 11 1 + 19 11 12 2 + 20 12 13 1 + 21 13 22 1 + 22 13 14 2 + 23 14 23 1 + 24 14 15 1 + 25 16 25 1 + 26 16 24 1 + 27 16 17 1 + 28 17 27 1 + 29 17 26 1 + 30 18 30 1 + 31 18 29 1 + 32 18 28 1 + 33 19 33 1 + 34 19 32 1 + 35 19 31 1 +@SUBSTRUCTURE + 1 JIND 1 +@COMMENT +COMMENT (1,3,4,5-TETRAHYDRO-5,5-DIMETHYLPYRROLO(4,3,2-DE)QUINOLINIO +@MOLECULE +JIRJID + 13 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8895 1.9994 1.8109 S.1 1 UNCH 1.2118 + 2 O1 1.8178 1.4462 0.8449 O.2 1 UNCH -0.6500 + 3 O2 0.9062 3.4141 2.1262 O.2 1 UNCH -0.6500 + 4 C1 1.1006 1.1078 3.3304 C.3 1 UNCH 0.1052 + 5 C2 -0.7160 1.5684 1.3306 C.2 1 UNCH -0.1670 + 6 C3 -1.1820 2.0951 0.1900 C.2 1 UNCH -0.0850 + 7 C4 -2.4856 1.7992 -0.2829 C.1 1 UNCH 0.4921 + 8 N1 -3.5547 1.5429 -0.6499 N.1 1 UNCH -0.5571 + 9 H1 2.1010 1.3223 3.7128 H 1 UNCH 0.0000 + 10 H2 1.0008 0.0385 3.1342 H 1 UNCH 0.0000 + 11 H3 0.3500 1.4433 4.0488 H 1 UNCH 0.0000 + 12 H4 -1.2907 0.8967 1.9533 H 1 UNCH 0.1500 + 13 H5 -0.5782 2.7674 -0.4129 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 4 1 + 4 1 5 1 + 5 4 9 1 + 6 4 10 1 + 7 4 11 1 + 8 5 6 2 + 9 5 12 1 + 10 6 7 1 + 11 6 13 1 + 12 7 8 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-1-METHYLSULFONYL-2-CYANOETHENE (FOR STEREOISOMER SEE JI +@MOLECULE +JISZAM + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.6435 1.7886 11.3778 O.3 1 JISZ -0.3625 + 2 O2 -4.0902 0.9720 9.4927 O.3 1 JISZ -0.6800 + 3 N1 -2.9808 -0.7478 8.1291 N.3 1 JISZ -1.0120 + 4 C1 -1.7389 1.0376 9.1788 C.2 1 JISZ -0.1435 + 5 C2 -1.1000 1.8210 10.1282 C.2 1 JISZ 0.0825 + 6 C3 0.0087 2.5606 9.7170 C.2 1 JISZ -0.1500 + 7 C4 0.4452 2.5131 8.3800 C.2 1 JISZ -0.1500 + 8 C5 -0.2175 1.7301 7.4323 C.2 1 JISZ -0.1500 + 9 C6 -1.3096 0.9885 7.8472 C.2 1 JISZ -0.1435 + 10 C7 -2.2313 0.1020 7.0603 C.3 1 JISZ 0.6465 + 11 C8 -2.9406 0.1645 9.3712 C.3 1 JISZ 0.9265 + 12 C9 -0.9979 2.5793 12.3753 C.3 1 JISZ 0.2800 + 13 C10 -1.5647 -0.7468 5.9851 C.3 1 JISZ 0.0000 + 14 C11 -4.4037 -1.0340 7.7133 C.3 1 JISZ 0.5030 + 15 C12 -2.2777 -2.0491 8.4723 C.3 1 JISZ 0.5030 + 16 H1 -3.8737 1.6492 10.1625 H 1 JISZ 0.4000 + 17 H2 0.5608 3.1967 10.4043 H 1 JISZ 0.1500 + 18 H3 1.3087 3.1066 8.0804 H 1 JISZ 0.1500 + 19 H4 0.1266 1.7239 6.4013 H 1 JISZ 0.1500 + 20 H5 -2.9885 0.7459 6.5931 H 1 JISZ 0.0000 + 21 H6 -2.8519 -0.4698 10.2605 H 1 JISZ 0.0000 + 22 H7 -1.5433 2.4409 13.3137 H 1 JISZ 0.0000 + 23 H8 0.0329 2.2462 12.5345 H 1 JISZ 0.0000 + 24 H9 -1.0369 3.6430 12.1188 H 1 JISZ 0.0000 + 25 H10 -2.2796 -1.4312 5.5174 H 1 JISZ 0.0000 + 26 H11 -1.1619 -0.1071 5.1915 H 1 JISZ 0.0000 + 27 H12 -0.7239 -1.3295 6.3760 H 1 JISZ 0.0000 + 28 H13 -4.9000 -0.1010 7.4306 H 1 JISZ 0.0000 + 29 H14 -4.3802 -1.7103 6.8537 H 1 JISZ 0.0000 + 30 H15 -4.9228 -1.5080 8.5519 H 1 JISZ 0.0000 + 31 H16 -1.2412 -1.8378 8.7509 H 1 JISZ 0.0000 + 32 H17 -2.8061 -2.5184 9.3085 H 1 JISZ 0.0000 + 33 H18 -2.3179 -2.7137 7.6049 H 1 JISZ 0.0000 +@BOND + 1 1 5 1 + 2 1 12 1 + 3 2 11 1 + 4 2 16 1 + 5 3 10 1 + 6 3 11 1 + 7 3 14 1 + 8 3 15 1 + 9 4 5 2 + 10 4 9 1 + 11 4 11 1 + 12 5 6 1 + 13 6 7 2 + 14 6 17 1 + 15 7 8 1 + 16 7 18 1 + 17 8 9 2 + 18 8 19 1 + 19 9 10 1 + 20 10 13 1 + 21 10 20 1 + 22 11 21 1 + 23 12 22 1 + 24 12 23 1 + 25 12 24 1 + 26 13 25 1 + 27 13 26 1 + 28 13 27 1 + 29 14 28 1 + 30 14 29 1 + 31 14 30 1 + 32 15 31 1 + 33 15 32 1 + 34 15 33 1 +@SUBSTRUCTURE + 1 JISZ 1 +@COMMENT +COMMENT RAC-1H-1-HYDROXY-2,3-DIHYDRO-2,2,3-TRIMETHYL-7-METHOXYISOIN +@MOLECULE +JITMII + 32 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.0668 11.2037 2.3014 S.1 1 JITM 1.5007 + 2 O1 1.4248 10.9041 1.4684 O.3 1 JITM -0.4637 + 3 C1 1.2280 9.9395 0.4011 C.3 1 JITM 0.4182 + 4 C2 -0.2957 9.9673 0.1040 C.2 1 JITM -0.0382 + 5 C3 -0.9718 10.6050 1.0772 C.2 1 JITM -0.1670 + 6 O2 0.0359 10.3306 3.4523 O.2 1 JITM -0.6500 + 7 O3 -0.0892 12.6367 2.4150 O.2 1 JITM -0.6500 + 8 C4 1.7563 8.5797 0.9150 C.3 1 JITM 1.0200 + 9 F1 0.9635 8.0580 1.8778 F 1 JITM -0.3400 + 10 F2 1.8569 7.6509 -0.0627 F 1 JITM -0.3400 + 11 F3 2.9983 8.7093 1.4450 F 1 JITM -0.3400 + 12 C5 2.0827 10.4836 -0.7477 C.3 1 JITM 0.0000 + 13 N1 -0.8887 9.4658 -1.0764 N.3 1 JITM -0.8382 + 14 C6 -2.3312 9.6472 -1.3761 C.3 1 JITM 0.3691 + 15 C7 -3.1015 8.4088 -0.9171 C.3 1 JITM 0.0000 + 16 C8 -2.5500 7.1442 -1.5794 C.3 1 JITM 0.0000 + 17 C9 -1.0301 7.0466 -1.4288 C.3 1 JITM 0.0000 + 18 C10 -0.3513 8.3433 -1.8722 C.3 1 JITM 0.3691 + 19 H1 -2.0280 10.7919 1.1405 H 1 JITM 0.1500 + 20 H2 3.1140 10.6506 -0.4143 H 1 JITM 0.0000 + 21 H3 1.7093 11.4584 -1.0839 H 1 JITM 0.0000 + 22 H4 2.1186 9.8180 -1.6122 H 1 JITM 0.0000 + 23 H5 -2.7385 10.5524 -0.9146 H 1 JITM 0.0000 + 24 H6 -2.4591 9.7863 -2.4575 H 1 JITM 0.0000 + 25 H7 -4.1639 8.5194 -1.1603 H 1 JITM 0.0000 + 26 H8 -3.0271 8.3070 0.1724 H 1 JITM 0.0000 + 27 H9 -3.0264 6.2575 -1.1468 H 1 JITM 0.0000 + 28 H10 -2.8055 7.1565 -2.6463 H 1 JITM 0.0000 + 29 H11 -0.7835 6.8387 -0.3804 H 1 JITM 0.0000 + 30 H12 -0.6542 6.2070 -2.0237 H 1 JITM 0.0000 + 31 H13 -0.5551 8.5245 -2.9356 H 1 JITM 0.0000 + 32 H14 0.7291 8.2496 -1.7984 H 1 JITM 0.0000 +@BOND + 1 1 7 2 + 2 1 6 2 + 3 1 5 1 + 4 1 2 1 + 5 2 3 1 + 6 3 12 1 + 7 3 8 1 + 8 3 4 1 + 9 4 13 1 + 10 4 5 2 + 11 5 19 1 + 12 8 11 1 + 13 8 10 1 + 14 8 9 1 + 15 12 22 1 + 16 12 21 1 + 17 12 20 1 + 18 13 18 1 + 19 13 14 1 + 20 14 24 1 + 21 14 23 1 + 22 14 15 1 + 23 15 26 1 + 24 15 25 1 + 25 15 16 1 + 26 16 28 1 + 27 16 27 1 + 28 16 17 1 + 29 17 30 1 + 30 17 29 1 + 31 17 18 1 + 32 18 32 1 + 33 18 31 1 +@SUBSTRUCTURE + 1 JITM 1 +@COMMENT +COMMENT 5-METHYL-4-(1-PIPERIDYL)-5-TRIFLUOROMETHYL-1,2-OXATHIOLE +@MOLECULE +JIWKOP + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.8641 -1.5209 6.8512 N.2 1 JIWK 0.5710 + 2 O1 4.3190 -2.2872 7.7680 O.3 1 JIWK -0.7500 + 3 C1 4.6701 -0.6160 6.1628 C.2 1 JIWK 0.0895 + 4 C2 4.0916 0.2123 5.1943 C.2 1 JIWK 0.0825 + 5 O2 4.8602 1.1138 4.5023 O.3 1 JIWK -0.5325 + 6 C3 2.7309 0.1355 4.9085 C.2 1 JIWK 0.0825 + 7 O3 2.2379 0.9729 3.9471 O.3 1 JIWK -0.5325 + 8 C4 1.9213 -0.7625 5.5792 C.2 1 JIWK -0.1500 + 9 C5 2.5043 -1.5792 6.5459 C.2 1 JIWK -0.0605 + 10 H1 4.2463 1.5422 3.8721 H 1 JIWK 0.4500 + 11 H2 1.2905 0.7865 3.8227 H 1 JIWK 0.4500 + 12 H3 0.8594 -0.8460 5.3765 H 1 JIWK 0.1500 + 13 H4 1.9738 -2.3135 7.1343 H 1 JIWK 0.1500 + 14 C1B 6.0867 -0.6160 6.4757 C.2 1 JIWK 0.0895 + 15 N1B 6.8927 -1.5209 5.7874 N.2 1 JIWK 0.5710 + 16 C2B 6.6652 0.2124 7.4442 C.2 1 JIWK 0.0825 + 17 O1B 6.4378 -2.2872 4.8706 O.3 1 JIWK -0.7500 + 18 C5B 8.2526 -1.5792 6.0926 C.2 1 JIWK -0.0605 + 19 O2B 5.8966 1.1139 8.1362 O.3 1 JIWK -0.5325 + 20 C3B 8.0259 0.1356 7.7300 C.2 1 JIWK 0.0825 + 21 C4B 8.8356 -0.7624 7.0593 C.2 1 JIWK -0.1500 + 22 H4B 8.7831 -2.3135 5.5043 H 1 JIWK 0.1500 + 23 H1B 6.5105 1.5423 8.7664 H 1 JIWK 0.4500 + 24 O3B 8.5190 0.9730 8.6914 O.3 1 JIWK -0.5325 + 25 H3B 9.8975 -0.8459 7.2620 H 1 JIWK 0.1500 + 26 H2B 9.4663 0.7867 8.8158 H 1 JIWK 0.4500 +@BOND + 1 1 9 2 + 2 1 3 1 + 3 1 2 1 + 4 3 14 1 + 5 3 4 2 + 6 4 6 1 + 7 4 5 1 + 8 5 10 1 + 9 6 8 2 + 10 6 7 1 + 11 7 11 1 + 12 8 12 1 + 13 8 9 1 + 14 9 13 1 + 15 14 16 2 + 16 14 15 1 + 17 15 18 2 + 18 15 17 1 + 19 16 20 1 + 20 16 19 1 + 21 18 22 1 + 22 18 21 1 + 23 19 23 1 + 24 20 24 1 + 25 20 21 2 + 26 21 25 1 + 27 24 26 1 +@SUBSTRUCTURE + 1 JIWK 1 +@COMMENT +COMMENT ORELLANINE MONOHYDRATE 3,3',4,4'-TETRAHYDROXY-2,2'-BIPYRIDI +@MOLECULE +JIXBAT + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.4713 0.6008 1.0585 C.2 1 UNCH 0.2360 + 2 C2 2.2282 -0.2816 -0.0536 C.2 1 UNCH 0.3038 + 3 C3 2.8967 -1.0806 -1.1007 C.2 1 UNCH 0.0862 + 4 C4 2.1519 -1.7823 -2.0536 C.2 1 UNCH -0.1500 + 5 C5 2.8095 -2.5276 -3.0331 C.2 1 UNCH -0.1500 + 6 C6 4.1999 -2.5672 -3.0525 C.2 1 UNCH 0.0825 + 7 C7 4.9500 -1.8728 -2.1068 C.2 1 UNCH -0.1500 + 8 C8 4.2950 -1.1249 -1.1247 C.2 1 UNCH -0.1500 + 9 C9 -0.0837 1.8115 0.8055 C.2 1 UNCH 0.1767 + 10 C10 0.5296 0.1023 2.4057 C.1 1 UNCH 0.4921 + 11 C11 -0.0294 3.8590 1.9102 C.3 1 UNCH 0.2800 + 12 N1 0.9366 -0.1825 0.0111 N.2 1 UNCH -0.6210 + 13 N2 -0.2220 2.3313 -0.4729 N.3 1 UNCH -0.9000 + 14 N3 0.6243 -0.3124 3.4874 N.1 1 UNCH -0.5571 + 15 O1 -0.6274 2.5658 1.8274 O.3 1 UNCH -0.3567 + 16 O2 4.7978 -3.3085 -4.0275 O.3 1 UNCH -0.5325 + 17 H1 2.8926 0.2325 0.6680 H 1 UNCH 0.0600 + 18 H2 1.0652 -1.7569 -2.0385 H 1 UNCH 0.1500 + 19 H3 2.2391 -3.0773 -3.7770 H 1 UNCH 0.1500 + 20 H4 6.0352 -1.9023 -2.1185 H 1 UNCH 0.1500 + 21 H5 4.8832 -0.5846 -0.3874 H 1 UNCH 0.1500 + 22 H6 -0.3369 4.4893 1.0695 H 1 UNCH 0.0000 + 23 H7 1.0630 3.7880 1.9578 H 1 UNCH 0.0000 + 24 H8 -0.3803 4.3321 2.8321 H 1 UNCH 0.0000 + 25 H9 5.7612 -3.2590 -3.9152 H 1 UNCH 0.4500 + 26 H10 -1.1388 2.7593 -0.5767 H 1 UNCH 0.4000 + 27 H11 -0.0848 1.5851 -1.1587 H 1 UNCH 0.4000 +@BOND + 1 1 9 2 + 2 1 10 1 + 3 1 12 1 + 4 2 3 1 + 5 2 12 2 + 6 2 17 1 + 7 3 4 1 + 8 3 8 2 + 9 4 5 2 + 10 4 18 1 + 11 5 6 1 + 12 5 19 1 + 13 6 7 2 + 14 6 16 1 + 15 7 8 1 + 16 7 20 1 + 17 8 21 1 + 18 9 13 1 + 19 9 15 1 + 20 10 14 3 + 21 11 15 1 + 22 11 22 1 + 23 11 23 1 + 24 11 24 1 + 25 13 26 1 + 26 13 27 1 + 27 16 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E,E)-4-AMINO-3-CYANO-1-(4-HYDROXYPHENYL)-4-METHOXY-2-AZA-1 +@MOLECULE +JIYJAC + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 7.5240 0.7865 8.1681 O.3 1 UNCH -0.2267 + 2 O2 9.4234 1.3728 7.0132 O.2 1 UNCH -0.5700 + 3 O3 5.0777 0.4865 9.3821 O.3 1 UNCH -0.3567 + 4 F1 9.9271 -2.7965 9.8860 F 1 UNCH -0.1495 + 5 F2 8.2401 -3.9591 11.4384 F 1 UNCH -0.1495 + 6 F3 5.8315 -3.2910 11.9677 F 1 UNCH -0.1495 + 7 F4 4.4441 -1.3753 11.0511 F 1 UNCH -0.1495 + 8 C1 8.4703 -1.0624 9.1927 C.2 1 UNCH 0.0000 + 9 C2 7.2860 -0.2707 9.0476 C.2 1 UNCH 0.0767 + 10 C3 6.0846 -0.4421 9.6225 C.2 1 UNCH 0.0767 + 11 C4 5.7174 -1.4636 10.5879 C.2 1 UNCH 0.1495 + 12 C5 6.4487 -2.4775 11.0745 C.2 1 UNCH 0.1495 + 13 C6 7.8112 -2.8490 10.7890 C.2 1 UNCH 0.1495 + 14 C7 8.6924 -2.2458 9.9815 C.2 1 UNCH 0.1495 + 15 C8 9.4196 -0.5185 8.4333 C.2 1 UNCH -0.1356 + 16 C9 8.8258 0.6457 7.7874 C.2 1 UNCH 0.7056 + 17 C10 4.2278 0.0668 8.3137 C.3 1 UNCH 0.2800 + 18 H1 3.4689 0.8402 8.1640 H 1 UNCH 0.0000 + 19 H2 3.7171 -0.8703 8.5588 H 1 UNCH 0.0000 + 20 H3 4.7932 -0.0425 7.3821 H 1 UNCH 0.0000 + 21 H4 10.4387 -0.8265 8.2791 H 1 UNCH 0.1500 +@BOND + 1 1 9 1 + 2 1 16 1 + 3 2 16 2 + 4 3 10 1 + 5 3 17 1 + 6 4 14 1 + 7 5 13 1 + 8 6 12 1 + 9 7 11 1 + 10 8 9 1 + 11 8 14 1 + 12 8 15 2 + 13 9 10 2 + 14 10 11 1 + 15 11 12 2 + 16 12 13 1 + 17 13 14 2 + 18 15 16 1 + 19 15 21 1 + 20 17 18 1 + 21 17 19 1 + 22 17 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,5,6,7-TETRAFLUORO-8-METHOXY-2H-CYCLOHEPTA(B)FURAN-2-ONE +@MOLECULE +JIYREO + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.4217 0.4265 7.0114 N.3 1 JIYR -0.7640 + 2 C1 3.3340 0.5457 7.9918 C.2 1 JIYR 0.6500 + 3 N2 2.8733 1.4360 8.8736 N.2 1 JIYR -0.7000 + 4 C2 1.6474 1.9188 8.4764 C.2 1 JIYR 0.2000 + 5 C3 1.3342 1.3007 7.2909 C.2 1 JIYR 0.4420 + 6 C4 2.5912 -0.4861 5.8685 C.3 1 JIYR 0.5140 + 7 C5 3.2170 0.2202 4.6812 C.3 1 JIYR 0.0000 + 8 N3 0.1828 1.4788 6.4973 N.2 1 JIYR 0.9480 + 9 O1 -0.6698 2.2369 6.9693 O.3 1 JIYR -0.5200 + 10 O2 0.1354 0.8782 5.4218 O.2 1 JIYR -0.5200 + 11 H1 4.2768 0.0135 8.0598 H 1 JIYR 0.1500 + 12 H2 3.3710 1.7122 9.7201 H 1 JIYR 0.4500 + 13 H3 1.1509 2.6505 9.0918 H 1 JIYR 0.1500 + 14 H4 3.2509 -1.3003 6.1925 H 1 JIYR 0.0000 + 15 H5 1.6367 -0.9535 5.6141 H 1 JIYR 0.0000 + 16 H6 4.1970 0.6287 4.9485 H 1 JIYR 0.0000 + 17 H7 2.5969 1.0531 4.3377 H 1 JIYR 0.0000 + 18 H8 3.3509 -0.4767 3.8486 H 1 JIYR 0.0000 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 2 am + 4 2 11 1 + 5 2 3 2 + 6 3 12 1 + 7 3 4 1 + 8 4 13 1 + 9 4 5 2 + 10 5 8 1 + 11 6 15 1 + 12 6 14 1 + 13 6 7 1 + 14 7 18 1 + 15 7 17 1 + 16 7 16 1 + 17 8 10 2 + 18 8 9 1 +@SUBSTRUCTURE + 1 JIYR 1 +@COMMENT +COMMENT 1-ETHYL-5-NITROIMIDAZOLE HYDROCHLORIDE MONOHYDRATE (AT 100 +@MOLECULE +JIYTOA + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.1603 1.9543 10.5809 N.2 1 JIYT -0.6200 + 2 C1 3.4845 0.8193 10.2778 C.2 1 JIYT 0.1390 + 3 O1 3.4501 0.4653 9.0582 O.3 1 JIYT -0.8290 + 4 C2 2.8672 0.1044 11.3088 C.2 1 JIYT -0.1500 + 5 C3 2.9360 0.5385 12.6340 C.2 1 JIYT -0.1500 + 6 C4 3.6301 1.6989 12.9240 C.2 1 JIYT -0.1500 + 7 C5 4.2197 2.3640 11.8673 C.2 1 JIYT 0.1600 + 8 H1 2.3264 -0.8048 11.0625 H 1 JIYT 0.1500 + 9 H2 2.4495 -0.0327 13.4150 H 1 JIYT 0.1500 + 10 H3 3.7109 2.0742 13.9341 H 1 JIYT 0.1500 + 11 H4 4.7792 3.2794 12.0197 H 1 JIYT 0.1500 +@BOND + 1 1 7 1 + 2 1 2 2 + 3 2 4 1 + 4 2 3 1 + 5 4 8 1 + 6 4 5 2 + 7 5 9 1 + 8 5 6 1 + 9 6 10 1 + 10 6 7 2 + 11 7 11 1 +@SUBSTRUCTURE + 1 JIYT 1 +@COMMENT +COMMENT POTASSIUM 2-PYRIDONIDE MONOHYDRATE (AT 120 DEG.K) +@MOLECULE +JIZWUK + 37 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H1 1.8065 -0.5164 6.8299 H 1 UNCH 0.0000 + 2 H2 2.8251 -1.7272 6.1087 H 1 UNCH 0.0000 + 3 H3 1.0905 -1.7936 5.8168 H 1 UNCH 0.0000 + 4 H4 1.9736 -1.9891 3.3549 H 1 UNCH 0.0000 + 5 H5 3.0057 -0.6967 2.6842 H 1 UNCH 0.0000 + 6 H6 3.5938 -1.7070 3.9791 H 1 UNCH 0.0000 + 7 H7 4.1434 0.3233 5.3058 H 1 UNCH 0.0000 + 8 H8 3.4769 1.4263 4.1092 H 1 UNCH 0.0000 + 9 H9 2.9264 1.4975 5.7878 H 1 UNCH 0.0000 + 10 S1 -0.0001 1.4249 5.4013 S.3 1 UNCH 0.0340 + 11 N1 0.8118 0.4468 4.2546 N.3 1 UNCH -0.6340 + 12 SI1 0.5033 0.9201 2.5682 SI 1 UNCH 1.4573 + 13 CL1 2.0010 2.0328 1.7392 CL 1 UNCH -0.3701 + 14 CL2 0.2338 -0.6989 1.3452 CL 1 UNCH -0.3701 + 15 CL3 -1.1971 2.0301 2.2725 CL 1 UNCH -0.3701 + 16 C1 2.1207 -0.2235 4.6651 C.3 1 UNCH 0.2700 + 17 C2 1.9375 -1.1088 5.9245 C.3 1 UNCH 0.0000 + 18 C3 2.6946 -1.2024 3.6028 C.3 1 UNCH 0.0000 + 19 C4 3.2205 0.8189 4.9807 C.3 1 UNCH 0.0000 + 20 N1F -0.8117 0.4465 6.5480 N.3 1 UNCH -0.6340 + 21 SI1F -0.5033 0.9199 8.2344 SI 1 UNCH 1.4573 + 22 C1F -2.1205 -0.2241 6.1375 C.3 1 UNCH 0.2700 + 23 CL1F -2.0013 2.0322 9.0635 CL 1 UNCH -0.3701 + 24 CL2F -0.2335 -0.6991 9.4574 CL 1 UNCH -0.3701 + 25 CL3F 1.1968 2.0303 8.5302 CL 1 UNCH -0.3701 + 26 C2F -1.9370 -1.1092 4.8781 C.3 1 UNCH 0.0000 + 27 C3F -2.6942 -1.2031 7.1998 C.3 1 UNCH 0.0000 + 28 C4F -3.2205 0.8181 5.8219 C.3 1 UNCH 0.0000 + 29 H1F -1.8062 -0.5168 3.9727 H 1 UNCH 0.0000 + 30 H2F -2.8245 -1.7279 4.6939 H 1 UNCH 0.0000 + 31 H3F -1.0900 -1.7938 4.9857 H 1 UNCH 0.0000 + 32 H4F -1.9729 -1.9897 7.4477 H 1 UNCH 0.0000 + 33 H5F -3.0054 -0.6975 8.1184 H 1 UNCH 0.0000 + 34 H6F -3.5932 -1.7079 6.8234 H 1 UNCH 0.0000 + 35 H7F -4.1434 0.3223 5.4968 H 1 UNCH 0.0000 + 36 H8F -3.4771 1.4254 6.6934 H 1 UNCH 0.0000 + 37 H9F -2.9266 1.4969 5.0149 H 1 UNCH 0.0000 +@BOND + 1 1 17 1 + 2 2 17 1 + 3 3 17 1 + 4 4 18 1 + 5 5 18 1 + 6 6 18 1 + 7 7 19 1 + 8 8 19 1 + 9 9 19 1 + 10 10 11 1 + 11 10 20 1 + 12 11 12 1 + 13 11 16 1 + 14 12 13 1 + 15 12 14 1 + 16 12 15 1 + 17 16 17 1 + 18 16 18 1 + 19 16 19 1 + 20 20 21 1 + 21 20 22 1 + 22 21 23 1 + 23 21 24 1 + 24 21 25 1 + 25 22 26 1 + 26 22 27 1 + 27 22 28 1 + 28 26 29 1 + 29 26 30 1 + 30 26 31 1 + 31 27 32 1 + 32 27 33 1 + 33 27 34 1 + 34 28 35 1 + 35 28 36 1 + 36 28 37 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(T-BUTYL(TRICHLOROSILYL)AMINO)SULFANE (AT 213 DEG.K) +@MOLECULE +JOFDUD + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -1.0979 3.1305 3.3028 SI 1 UNCH 0.6415 + 2 CL1 0.3065 0.5352 3.0348 CL 1 UNCH -0.2900 + 3 C1 0.0238 1.9152 4.1213 C.3 1 UNCH 0.2095 + 4 C2 -0.3567 3.8971 1.7888 C.3 1 UNCH -0.0805 + 5 C3 -2.7928 2.4553 2.9863 C.3 1 UNCH -0.0805 + 6 N1 -1.3216 4.4423 4.4272 N.2 1 UNCH -0.7000 + 7 C4 -1.6976 5.4537 4.8801 C.1 1 UNCH 0.7870 + 8 O1 -2.0758 6.4690 5.3330 O.2 1 UNCH -0.4870 + 9 H1 -0.4060 1.5221 5.0469 H 1 UNCH 0.0000 + 10 H2 0.9979 2.3530 4.3568 H 1 UNCH 0.0000 + 11 H3 0.6154 4.3487 2.0096 H 1 UNCH 0.0000 + 12 H4 -0.2069 3.1521 1.0014 H 1 UNCH 0.0000 + 13 H5 -1.0049 4.6809 1.3845 H 1 UNCH 0.0000 + 14 H6 -2.7635 1.6389 2.2581 H 1 UNCH 0.0000 + 15 H7 -3.2415 2.0659 3.9054 H 1 UNCH 0.0000 + 16 H8 -3.4591 3.2283 2.5909 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 5 1 + 4 1 6 1 + 5 2 3 1 + 6 3 9 1 + 7 3 10 1 + 8 4 11 1 + 9 4 12 1 + 10 4 13 1 + 11 5 14 1 + 12 5 15 1 + 13 5 16 1 + 14 6 7 2 + 15 7 8 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT CHLOROMETHYL-DIMETHYLSILYL-ISOCYANATE (AT -90 DEG.C) +@MOLECULE +KAFXIY + 25 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.1265 1.2811 3.6103 CL 1 UNCH -0.2900 + 2 CL2 1.0284 0.0138 1.1585 CL 1 UNCH -0.2900 + 3 O1 1.6819 -2.1503 3.9311 O.2 1 UNCH -0.5700 + 4 C1 4.4154 -2.9939 2.7767 C.3 1 UNCH -0.2000 + 5 C2 3.5425 -3.1521 1.5582 C.3 1 UNCH -0.2000 + 6 C3 3.4769 -1.8986 2.3753 C.3 1 UNCH -0.0760 + 7 C4 2.3117 -1.4917 3.1359 C.2 1 UNCH 0.5170 + 8 C5 2.3321 -0.0848 2.4345 C.3 1 UNCH 0.6330 + 9 C6 3.8319 -0.4830 1.9687 C.3 1 UNCH 0.1520 + 10 C7 4.1462 -0.2714 0.4713 C.3 1 UNCH -0.1760 + 11 C8 4.5514 1.0512 -0.1241 C.3 1 UNCH -0.2000 + 12 C9 5.5151 -0.1039 -0.1316 C.3 1 UNCH -0.2000 + 13 C10 4.9285 0.1005 2.8932 C.3 1 UNCH 0.0000 + 14 H1 5.4789 -2.8630 2.6144 H 1 UNCH 0.1000 + 15 H2 4.1707 -3.5865 3.6525 H 1 UNCH 0.1000 + 16 H3 4.0340 -3.1380 0.5925 H 1 UNCH 0.1000 + 17 H4 2.7167 -3.8539 1.6215 H 1 UNCH 0.1000 + 18 H5 3.4418 -0.8555 -0.1179 H 1 UNCH 0.1000 + 19 H6 4.1004 1.3421 -1.0674 H 1 UNCH 0.1000 + 20 H7 4.7681 1.8883 0.5289 H 1 UNCH 0.1000 + 21 H8 5.7132 -0.5902 -1.0815 H 1 UNCH 0.1000 + 22 H9 6.3883 -0.0340 0.5049 H 1 UNCH 0.1000 + 23 H10 4.7056 -0.0783 3.9515 H 1 UNCH 0.0000 + 24 H11 5.9002 -0.3639 2.6958 H 1 UNCH 0.0000 + 25 H12 5.0338 1.1809 2.7540 H 1 UNCH 0.0000 +@BOND + 1 1 8 1 + 2 2 8 1 + 3 3 7 2 + 4 4 5 1 + 5 4 6 1 + 6 4 14 1 + 7 4 15 1 + 8 5 6 1 + 9 5 16 1 + 10 5 17 1 + 11 6 7 1 + 12 6 9 1 + 13 7 8 1 + 14 8 9 1 + 15 9 10 1 + 16 9 13 1 + 17 10 11 1 + 18 10 12 1 + 19 10 18 1 + 20 11 12 1 + 21 11 19 1 + 22 11 20 1 + 23 12 21 1 + 24 12 22 1 + 25 13 23 1 + 26 13 24 1 + 27 13 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,5-DICHLORO-6-METHYL-6-CYCLOPROPYLSPIRO(2.3)HEXAN-4-ONE (A +@MOLECULE +KAGBOJ + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.1810 0.6051 1.8291 O.3 1 KAGB -0.1592 + 2 C1 6.4470 1.8678 1.3307 C.2 1 KAGB 0.0483 + 3 C2 7.6469 2.4648 1.3422 C.2 1 KAGB -0.1356 + 4 C3 8.7893 1.7485 1.9286 C.2 1 KAGB 0.4694 + 5 C4 9.5381 -0.3557 3.0413 C.2 1 KAGB -0.1500 + 6 C5 9.2518 -1.6272 3.5405 C.2 1 KAGB -0.1500 + 7 C6 7.9523 -2.1328 3.4617 C.2 1 KAGB -0.1500 + 8 C7 6.9358 -1.3687 2.8839 C.2 1 KAGB -0.1500 + 9 C8 7.2202 -0.0977 2.3847 C.2 1 KAGB 0.0825 + 10 C9 8.5170 0.4051 2.4639 C.2 1 KAGB 0.0862 + 11 O2 9.9041 2.2539 1.9631 O.2 1 KAGB -0.5700 + 12 C10 5.2742 2.5464 0.7478 C.2 1 KAGB 0.0284 + 13 C11 4.5752 3.5223 1.4937 C.2 1 KAGB 0.0825 + 14 C12 3.4666 4.1565 0.9264 C.2 1 KAGB -0.1500 + 15 C13 3.0530 3.8293 -0.3651 C.2 1 KAGB -0.1500 + 16 C14 3.7405 2.8675 -1.1058 C.2 1 KAGB -0.1500 + 17 C15 4.8522 2.2195 -0.5607 C.2 1 KAGB 0.0825 + 18 O3 5.0518 3.7818 2.7552 O.3 1 KAGB -0.3625 + 19 C16 4.3515 4.7335 3.5447 C.3 1 KAGB 0.2800 + 20 O4 5.5942 1.2712 -1.2210 O.3 1 KAGB -0.3625 + 21 C17 5.1648 0.8802 -2.5178 C.3 1 KAGB 0.2800 + 22 H1 7.8286 3.4534 0.9433 H 1 KAGB 0.1500 + 23 H2 10.5495 0.0399 3.1014 H 1 KAGB 0.1500 + 24 H3 10.0419 -2.2235 3.9907 H 1 KAGB 0.1500 + 25 H4 7.7308 -3.1237 3.8510 H 1 KAGB 0.1500 + 26 H5 5.9249 -1.7628 2.8227 H 1 KAGB 0.1500 + 27 H6 5.8481 0.1042 -2.8761 H 1 KAGB 0.0000 + 28 H7 4.1587 0.4492 -2.4885 H 1 KAGB 0.0000 + 29 H8 5.2174 1.7189 -3.2196 H 1 KAGB 0.0000 + 30 H9 3.3837 2.6503 -2.1071 H 1 KAGB 0.1500 + 31 H10 2.1894 4.3288 -0.7983 H 1 KAGB 0.1500 + 32 H11 2.9012 4.9118 1.4621 H 1 KAGB 0.1500 + 33 H12 4.8564 4.8003 4.5132 H 1 KAGB 0.0000 + 34 H13 4.3826 5.7266 3.0847 H 1 KAGB 0.0000 + 35 H14 3.3208 4.4129 3.7286 H 1 KAGB 0.0000 +@BOND + 1 1 9 1 + 2 1 2 1 + 3 2 12 1 + 4 2 3 2 + 5 3 22 1 + 6 3 4 1 + 7 4 11 2 + 8 4 10 1 + 9 5 23 1 + 10 5 10 1 + 11 5 6 2 + 12 6 24 1 + 13 6 7 1 + 14 7 25 1 + 15 7 8 2 + 16 8 26 1 + 17 8 9 1 + 18 9 10 2 + 19 12 17 1 + 20 12 13 2 + 21 13 18 1 + 22 13 14 1 + 23 14 32 1 + 24 14 15 2 + 25 15 31 1 + 26 15 16 1 + 27 16 30 1 + 28 16 17 2 + 29 17 20 1 + 30 18 19 1 + 31 19 35 1 + 32 19 34 1 + 33 19 33 1 + 34 20 21 1 + 35 21 29 1 + 36 21 28 1 + 37 21 27 1 +@SUBSTRUCTURE + 1 KAGB 1 +@COMMENT +COMMENT 2-(2,6-DIMETHOXYPHENYL)-4H-1-BENZOPYRAN-4-ONE ACETIC ACID S +@MOLECULE +KAKGOS + 28 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.9555 5.6920 0.1288 S.3 1 UNCH -0.3185 + 2 N1 3.6109 7.8033 -0.0630 N.3 1 UNCH -0.4020 + 3 O1 3.2297 9.9580 0.8117 O.2 1 UNCH -0.5700 + 4 C1 1.9655 6.7069 -1.3306 C.2 1 UNCH 0.1015 + 5 C2 1.1526 6.5525 -2.4430 C.2 1 UNCH -0.1500 + 6 C3 1.2443 7.4908 -3.4757 C.2 1 UNCH -0.1500 + 7 C4 2.1325 8.5729 -3.3805 C.2 1 UNCH -0.1500 + 8 C5 2.9456 8.7251 -2.2557 C.2 1 UNCH -0.1500 + 9 C6 2.8570 7.7767 -1.2478 C.2 1 UNCH 0.1170 + 10 C7 3.3147 8.7523 0.8826 C.2 1 UNCH 0.5770 + 11 C8 3.0526 7.6845 1.9877 C.3 1 UNCH 0.0530 + 12 C9 3.3890 6.6502 0.8495 C.3 1 UNCH 0.4420 + 13 C10 4.6286 5.7732 0.9248 C.3 1 UNCH 0.0000 + 14 C11 1.6272 7.7462 2.5452 C.3 1 UNCH 0.0000 + 15 C12 4.0631 7.7650 3.1372 C.3 1 UNCH 0.0000 + 16 H1 0.4490 5.7286 -2.5105 H 1 UNCH 0.1500 + 17 H2 0.6130 7.3886 -4.3557 H 1 UNCH 0.1500 + 18 H3 2.1840 9.3021 -4.1860 H 1 UNCH 0.1500 + 19 H4 3.6273 9.5660 -2.1723 H 1 UNCH 0.1500 + 20 H5 4.8196 5.2538 -0.0218 H 1 UNCH 0.0000 + 21 H6 5.5289 6.3551 1.1490 H 1 UNCH 0.0000 + 22 H7 4.5214 5.0148 1.7081 H 1 UNCH 0.0000 + 23 H8 1.5060 8.6083 3.2109 H 1 UNCH 0.0000 + 24 H9 0.8775 7.8537 1.7546 H 1 UNCH 0.0000 + 25 H10 1.3951 6.8439 3.1208 H 1 UNCH 0.0000 + 26 H11 3.8570 8.6279 3.7804 H 1 UNCH 0.0000 + 27 H12 4.0171 6.8633 3.7570 H 1 UNCH 0.0000 + 28 H13 5.0898 7.8777 2.7747 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 12 1 + 3 2 9 1 + 4 2 10 am + 5 2 12 1 + 6 3 10 2 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 16 1 + 11 6 7 2 + 12 6 17 1 + 13 7 8 1 + 14 7 18 1 + 15 8 9 2 + 16 8 19 1 + 17 10 11 1 + 18 11 12 1 + 19 11 14 1 + 20 11 15 1 + 21 12 13 1 + 22 13 20 1 + 23 13 21 1 + 24 13 22 1 + 25 14 23 1 + 26 14 24 1 + 27 14 25 1 + 28 15 26 1 + 29 15 27 1 + 30 15 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,6,6-TRIMETHYL-2,3-BENZO-4-THIA-1-AZABICYCLO(3.2.0)HEPTAN- +@MOLECULE +KAMCUW + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 3.2723 3.0814 10.2464 BR 1 KAMB -0.1430 + 2 BR2 0.4975 2.1925 8.9922 BR 1 KAMB -0.1430 + 3 C1 1.4501 3.5559 9.9342 C.3 1 KAMB 0.2860 + 4 C2 0.7321 4.2676 11.0491 C.3 1 KAMB -0.2000 + 5 C3 1.0040 4.9893 9.7536 C.3 1 KAMB -0.0600 + 6 C4 2.1635 7.0251 10.6231 C.2 1 KAMB -0.0410 + 7 C5 1.9924 6.0846 9.6794 C.2 1 KAMB -0.0256 + 8 C6 2.8358 6.2398 8.4533 C.2 1 KAMB 0.6156 + 9 O1 2.6686 5.5196 7.4730 O.2 1 KAMB -0.5700 + 10 N1 3.7724 7.2290 8.4649 N.3 1 KAMB -0.4900 + 11 C7 3.8881 8.2059 9.4134 C.2 1 KAMB 0.6900 + 12 O2 4.6487 9.1546 9.2346 O.2 1 KAMB -0.5700 + 13 N2 3.0856 8.0498 10.5307 N.3 1 KAMB -0.4691 + 14 C8 0.6640 9.1473 13.9026 C.3 1 KAMB 0.2800 + 15 O3 -0.1511 8.9938 12.7414 O.3 1 KAMB -0.6800 + 16 C9 2.0752 9.6282 13.5470 C.3 1 KAMB 0.2800 + 17 O4 2.7583 8.5658 12.8397 O.3 1 KAMB -0.5600 + 18 C10 2.0898 10.8616 12.6406 C.3 1 KAMB 0.2800 + 19 O5 3.2074 11.6895 12.9792 O.3 1 KAMB -0.6800 + 20 C11 2.3030 10.2882 11.2626 C.3 1 KAMB 0.0000 + 21 C12 3.1743 9.0774 11.5626 C.3 1 KAMB 0.5801 + 22 H1 1.2957 4.5292 11.9377 H 1 KAMB 0.1000 + 23 H2 -0.2943 3.9923 11.2653 H 1 KAMB 0.1000 + 24 H3 0.1500 5.1586 9.1027 H 1 KAMB 0.1000 + 25 H4 4.3155 7.3512 7.6250 H 1 KAMB 0.3700 + 26 H5 4.2225 9.3846 11.6715 H 1 KAMB 0.0000 + 27 H6 1.5553 7.0101 11.5237 H 1 KAMB 0.1500 + 28 H7 2.6335 9.8046 14.4733 H 1 KAMB 0.0000 + 29 H8 1.1897 11.4771 12.7278 H 1 KAMB 0.0000 + 30 H9 3.2182 12.4405 12.3591 H 1 KAMB 0.4000 + 31 H10 2.7887 10.9741 10.5616 H 1 KAMB 0.0000 + 32 H11 1.3452 9.9796 10.8288 H 1 KAMB 0.0000 + 33 H12 0.1745 9.8683 14.5648 H 1 KAMB 0.0000 + 34 H13 0.7129 8.1748 14.4033 H 1 KAMB 0.0000 + 35 H14 -1.0052 8.6374 13.0439 H 1 KAMB 0.4000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 3 4 1 + 4 3 5 1 + 5 4 5 1 + 6 4 22 1 + 7 4 23 1 + 8 5 7 1 + 9 5 24 1 + 10 6 7 2 + 11 6 13 1 + 12 6 27 1 + 13 7 8 1 + 14 8 9 2 + 15 8 10 am + 16 10 11 am + 17 10 25 1 + 18 11 12 2 + 19 11 13 am + 20 13 21 1 + 21 14 15 1 + 22 14 16 1 + 23 14 33 1 + 24 14 34 1 + 25 15 35 1 + 26 16 17 1 + 27 16 18 1 + 28 16 28 1 + 29 17 21 1 + 30 18 19 1 + 31 18 20 1 + 32 18 29 1 + 33 19 30 1 + 34 20 21 1 + 35 20 31 1 + 36 20 32 1 + 37 21 26 1 +@SUBSTRUCTURE + 1 KAMB 1 +@COMMENT +COMMENT 1-(2-DEOXY-BETA-D-RIBOFURANOSYL)-5-((1S)-2,2-DIBROMOCYCLOPR +@MOLECULE +KAMJAJ + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 4.0276 1.5203 1.3119 CL 1 KAMJ -0.1770 + 2 C1 3.0345 1.7770 -0.0688 C.2 1 KAMJ 0.1770 + 3 C2 1.7786 1.1733 -0.1406 C.2 1 KAMJ -0.1500 + 4 C3 0.9713 1.3793 -1.2609 C.2 1 KAMJ -0.1500 + 5 C4 1.4360 2.1862 -2.2996 C.2 1 KAMJ 0.0862 + 6 C5 2.6884 2.8006 -2.2299 C.2 1 KAMJ -0.1500 + 7 C6 3.4915 2.5899 -1.1075 C.2 1 KAMJ -0.1500 + 8 C7 0.5913 2.4150 -3.4737 C.2 1 KAMJ -0.1432 + 9 C8 -0.5638 3.3792 -3.3845 C.3 1 KAMJ 0.3166 + 10 C9 -2.7689 2.4937 -4.2454 C.2 1 KAMJ 0.0365 + 11 C10 -3.4670 1.7359 -2.4203 C.2 1 KAMJ 0.3660 + 12 C11 1.8591 0.8089 -4.8396 C.3 1 KAMJ 0.0990 + 13 N1 0.7958 1.8106 -4.6253 N.2 1 KAMJ 0.5300 + 14 N2 -1.8401 2.6993 -3.2737 N.3 1 KAMJ 0.3140 + 15 N3 -3.8147 1.8869 -3.7313 N.2 1 KAMJ -0.5653 + 16 N4 -2.2636 2.2127 -2.0890 N.2 1 KAMJ -0.7068 + 17 O1 0.0618 2.0952 -5.6298 O.3 1 KAMJ -0.6330 + 18 H1 1.4207 0.5466 0.6726 H 1 KAMJ 0.1500 + 19 H2 -0.0096 0.9110 -1.3072 H 1 KAMJ 0.1500 + 20 H3 3.0453 3.4431 -3.0310 H 1 KAMJ 0.1500 + 21 H4 4.4682 3.0634 -1.0440 H 1 KAMJ 0.1500 + 22 H5 -0.5957 4.0454 -4.2531 H 1 KAMJ 0.0000 + 23 H6 -0.4601 4.0136 -2.4965 H 1 KAMJ 0.0000 + 24 H7 -2.6327 2.7916 -5.2764 H 1 KAMJ 0.1500 + 25 H8 -4.1093 1.2650 -1.6873 H 1 KAMJ 0.1500 + 26 H9 1.7242 0.3530 -5.8245 H 1 KAMJ 0.0000 + 27 H10 1.7818 0.0344 -4.0732 H 1 KAMJ 0.0000 + 28 H11 2.8273 1.3126 -4.8015 H 1 KAMJ 0.0000 +@BOND + 1 1 2 1 + 2 2 7 1 + 3 2 3 2 + 4 3 18 1 + 5 3 4 1 + 6 4 19 1 + 7 4 5 2 + 8 5 8 1 + 9 5 6 1 + 10 6 20 1 + 11 6 7 2 + 12 7 21 1 + 13 8 13 2 + 14 8 9 1 + 15 9 23 1 + 16 9 22 1 + 17 9 14 1 + 18 10 24 1 + 19 10 15 2 + 20 10 14 am + 21 11 25 1 + 22 11 16 2 + 23 11 15 am + 24 12 28 1 + 25 12 27 1 + 26 12 26 1 + 27 12 13 1 + 28 13 17 1 + 29 14 16 1 +@SUBSTRUCTURE + 1 KAMJ 1 +@COMMENT +COMMENT N-(1-(4-CHLOROPHENYL)-2-(1H-1,2,4-TRIAZOL-1-YL)ETHYLIDENE)M +@MOLECULE +KANWEB + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.5006 2.5985 5.2856 S.3 1 UNCH 0.4414 + 2 N1 6.3385 3.3333 3.8018 N.2 1 UNCH -0.5095 + 3 N2 4.9688 2.8412 5.8876 N.2 1 UNCH -0.5095 + 4 N3 7.6563 4.1806 0.9791 N.1 1 UNCH -0.5571 + 5 N4 2.8526 2.4546 8.2947 N.1 1 UNCH -0.5571 + 6 N5 4.0280 6.0709 -0.4657 N.1 1 UNCH -0.5571 + 7 N6 -0.3414 4.5009 6.1884 N.1 1 UNCH -0.5571 + 8 C1 5.0829 3.7857 3.7421 C.2 1 UNCH 0.2428 + 9 C2 4.2945 3.5024 4.9428 C.2 1 UNCH 0.2428 + 10 C3 4.5102 4.5007 2.6048 C.2 1 UNCH 0.0460 + 11 C4 2.9004 3.9223 5.0563 C.2 1 UNCH 0.0460 + 12 C5 3.0978 4.9012 2.7743 C.2 1 UNCH -0.1500 + 13 C6 2.3735 4.6409 3.8774 C.2 1 UNCH -0.1500 + 14 C7 5.1896 4.7947 1.4613 C.2 1 UNCH 0.1300 + 15 C8 2.1144 3.6898 6.1443 C.2 1 UNCH 0.1300 + 16 C9 6.5529 4.4392 1.2300 C.1 1 UNCH 0.4921 + 17 C10 2.5568 3.0034 7.3155 C.1 1 UNCH 0.4921 + 18 C11 4.5687 5.4976 0.3860 C.1 1 UNCH 0.4921 + 19 C12 0.7574 4.1282 6.1901 C.1 1 UNCH 0.4921 + 20 H1 2.5936 5.4395 1.9719 H 1 UNCH 0.1500 + 21 H2 1.3408 4.9894 3.8798 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 2 8 2 + 4 3 9 2 + 5 4 16 3 + 6 5 17 3 + 7 6 18 3 + 8 7 19 3 + 9 8 9 1 + 10 8 10 1 + 11 9 11 1 + 12 10 12 1 + 13 10 14 2 + 14 11 13 1 + 15 11 15 2 + 16 12 13 2 + 17 12 20 1 + 18 13 21 1 + 19 14 16 1 + 20 14 18 1 + 21 15 17 1 + 22 15 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,7-BIS(DICYANOMETHYLENE)-4,7-DIHYDRO-2,1,3-BENZOTHIADIAZOL +@MOLECULE +KANZOO + 40 43 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 0.7223 9.5045 4.5190 CL 1 UNCH -0.1770 + 2 CL2 2.7366 7.5498 8.8187 CL 1 UNCH -0.1770 + 3 CL3 4.6508 2.8111 7.0632 CL 1 UNCH -0.1770 + 4 N1 1.8548 7.1759 4.5328 N.2 1 UNCH -0.6200 + 5 C1 1.5215 8.2167 5.2958 C.2 1 UNCH 0.7970 + 6 N2 1.7744 8.3574 6.5885 N.2 1 UNCH -0.6200 + 7 C2 2.4282 7.3123 7.1349 C.2 1 UNCH 0.4870 + 8 N3 3.5080 5.1362 7.0964 N.2 1 UNCH -0.6200 + 9 C3 3.8233 4.1011 6.3196 C.2 1 UNCH 0.7970 + 10 N4 3.5506 3.9729 5.0249 N.2 1 UNCH -0.6200 + 11 C4 2.9082 5.0060 4.4462 C.2 1 UNCH 0.4100 + 12 C5 2.5031 6.1528 5.1452 C.2 1 UNCH 0.3100 + 13 C6 2.8448 6.1514 6.4921 C.2 1 UNCH 0.3100 + 14 N5 2.5128 4.8889 3.0930 N.3 1 UNCH -0.8691 + 15 C7 3.3948 4.0882 2.2552 C.3 1 UNCH 0.6491 + 16 C8 2.7395 3.8474 0.8791 C.3 1 UNCH 0.2800 + 17 C9 3.7863 4.2876 -0.0983 C.3 1 UNCH 0.2800 + 18 C10 4.6530 5.2645 0.6715 C.3 1 UNCH 0.2800 + 19 C11 4.1757 6.7197 0.5808 C.3 1 UNCH 0.2800 + 20 C12 3.6052 2.0155 -0.1842 C.3 1 UNCH 0.5600 + 21 C13 4.3209 0.8959 0.5586 C.3 1 UNCH 0.0000 + 22 C14 3.0872 1.5330 -1.5350 C.3 1 UNCH 0.0000 + 23 O1 2.4929 2.4673 0.5924 O.3 1 UNCH -0.5600 + 24 O2 4.5230 3.0923 -0.3921 O.3 1 UNCH -0.5600 + 25 O3 4.6027 4.8400 2.0485 O.3 1 UNCH -0.5600 + 26 O4 2.8046 6.8478 0.9565 O.3 1 UNCH -0.6800 + 27 H1 2.4453 5.8278 2.6863 H 1 UNCH 0.4000 + 28 H2 3.6464 3.1308 2.7247 H 1 UNCH 0.0000 + 29 H3 1.7979 4.3960 0.7724 H 1 UNCH 0.0000 + 30 H4 3.3908 4.6817 -1.0394 H 1 UNCH 0.0000 + 31 H5 5.7002 5.2103 0.3549 H 1 UNCH 0.0000 + 32 H6 4.2861 7.0941 -0.4416 H 1 UNCH 0.0000 + 33 H7 4.7614 7.3476 1.2599 H 1 UNCH 0.0000 + 34 H8 3.6434 0.0624 0.7716 H 1 UNCH 0.0000 + 35 H9 5.1798 0.5259 -0.0112 H 1 UNCH 0.0000 + 36 H10 4.7047 1.2549 1.5200 H 1 UNCH 0.0000 + 37 H11 2.3716 0.7125 -1.4162 H 1 UNCH 0.0000 + 38 H12 2.5656 2.3415 -2.0600 H 1 UNCH 0.0000 + 39 H13 3.9079 1.2048 -2.1814 H 1 UNCH 0.0000 + 40 H14 2.5874 7.7981 0.9137 H 1 UNCH 0.4000 +@BOND + 1 1 5 1 + 2 2 7 1 + 3 3 9 1 + 4 4 5 2 + 5 4 12 1 + 6 5 6 am + 7 6 7 2 + 8 7 13 1 + 9 8 9 2 + 10 8 13 1 + 11 9 10 am + 12 10 11 2 + 13 11 12 1 + 14 11 14 am + 15 12 13 2 + 16 14 15 1 + 17 14 27 1 + 18 15 16 1 + 19 15 25 1 + 20 15 28 1 + 21 16 17 1 + 22 16 23 1 + 23 16 29 1 + 24 17 18 1 + 25 17 24 1 + 26 17 30 1 + 27 18 19 1 + 28 18 25 1 + 29 18 31 1 + 30 19 26 1 + 31 19 32 1 + 32 19 33 1 + 33 20 21 1 + 34 20 22 1 + 35 20 23 1 + 36 20 24 1 + 37 21 34 1 + 38 21 35 1 + 39 21 36 1 + 40 22 37 1 + 41 22 38 1 + 42 22 39 1 + 43 26 40 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4,6-TRICHLORO-8-(2,3-O-ISOPROPYLIDENE-BETA-D-RIBOFURANOSY +@MOLECULE +KAPCUZ + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.8261 2.5294 9.6157 S.2 1 KAPC -0.7500 + 2 S2 2.5771 1.4689 12.3782 S.3 1 KAPC -0.7500 + 3 N1 5.2566 2.6491 10.2937 N.3 1 KAPC -0.7640 + 4 N2 4.3887 4.3008 11.4081 N.2 1 KAPC -0.7640 + 5 C1 2.8185 2.3465 10.9625 C.2 1 KAPC 0.6960 + 6 C2 6.2417 3.6033 10.4353 C.2 1 KAPC 0.2000 + 7 C3 5.6981 4.6385 11.1387 C.2 1 KAPC 0.2000 + 8 C4 4.1107 3.0741 10.8906 C.2 1 KAPC 0.6040 + 9 C5 5.3801 1.3691 9.6056 C.3 1 KAPC 0.5140 + 10 C6 3.4185 5.1040 12.1434 C.3 1 KAPC 0.5140 + 11 H1 7.2132 3.4187 10.0131 H 1 KAPC 0.1500 + 12 H2 6.0765 5.5832 11.4857 H 1 KAPC 0.1500 + 13 H3 6.4300 1.1764 9.3671 H 1 KAPC 0.0000 + 14 H4 4.8051 1.4023 8.6770 H 1 KAPC 0.0000 + 15 H5 5.0154 0.5655 10.2495 H 1 KAPC 0.0000 + 16 H6 3.8150 6.1111 12.3014 H 1 KAPC 0.0000 + 17 H7 3.2291 4.6405 13.1145 H 1 KAPC 0.0000 + 18 H8 2.4908 5.1800 11.5714 H 1 KAPC 0.0000 +@BOND + 1 1 5 2 + 2 2 5 1 + 3 3 9 1 + 4 3 8 am + 5 3 6 1 + 6 4 10 1 + 7 4 8 2 + 8 4 7 1 + 9 5 8 1 + 10 6 11 1 + 11 6 7 2 + 12 7 12 1 + 13 9 15 1 + 14 9 14 1 + 15 9 13 1 + 16 10 18 1 + 17 10 17 1 + 18 10 16 1 +@SUBSTRUCTURE + 1 KAPC 1 +@COMMENT +COMMENT 1,3-DIMETHYLIMIDAZOLIUM-2-DITHIOCARBOXYLATE (AT 130 DEG.K) +@MOLECULE +KARYAD + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.1395 4.5334 5.5392 S.1 1 KARY 1.0896 + 2 O1 4.3218 4.7500 6.3500 O.2 1 KARY -0.6500 + 3 O2 1.8397 4.9647 6.0136 O.2 1 KARY -0.6500 + 4 N1 1.1829 1.5534 6.3080 N.1 1 KARY -0.5571 + 5 C1 3.0765 2.8200 5.0199 C.3 1 KARY 0.3052 + 6 C2 3.4156 5.2454 3.8811 C.3 1 KARY 0.1052 + 7 C3 3.7363 4.0167 2.9968 C.3 1 KARY 0.0000 + 8 C4 5.1488 3.3908 3.1191 C.3 1 KARY 0.0000 + 9 C5 4.8678 1.9752 3.6523 C.3 1 KARY 0.0000 + 10 C6 4.4271 2.0775 5.1235 C.3 1 KARY 0.0000 + 11 C7 2.8319 2.8557 3.4882 C.3 1 KARY 0.0000 + 12 C8 3.5556 1.6214 2.9625 C.3 1 KARY 0.0000 + 13 C9 2.0124 2.1560 5.7637 C.1 1 KARY 0.3571 + 14 C10 4.5199 6.3057 3.9007 C.3 1 KARY 0.0000 + 15 C11 2.1206 5.9158 3.3788 C.3 1 KARY 0.0000 + 16 H1 3.5470 4.2404 1.9391 H 1 KARY 0.0000 + 17 H2 5.8375 3.9330 3.7697 H 1 KARY 0.0000 + 18 H3 5.6071 3.3316 2.1246 H 1 KARY 0.0000 + 19 H4 5.6865 1.2716 3.4892 H 1 KARY 0.0000 + 20 H5 4.2990 1.0659 5.5301 H 1 KARY 0.0000 + 21 H6 5.1822 2.5792 5.7342 H 1 KARY 0.0000 + 22 H7 1.7861 2.9407 3.1819 H 1 KARY 0.0000 + 23 H8 3.6342 1.6024 1.8706 H 1 KARY 0.0000 + 24 H9 3.1201 0.6818 3.3169 H 1 KARY 0.0000 + 25 H10 4.2192 7.1677 4.5077 H 1 KARY 0.0000 + 26 H11 4.7334 6.6661 2.8884 H 1 KARY 0.0000 + 27 H12 5.4569 5.9402 4.3289 H 1 KARY 0.0000 + 28 H13 2.2464 6.2930 2.3576 H 1 KARY 0.0000 + 29 H14 1.2713 5.2248 3.3745 H 1 KARY 0.0000 + 30 H15 1.8435 6.7655 4.0133 H 1 KARY 0.0000 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 5 1 + 4 1 6 1 + 5 4 13 3 + 6 5 10 1 + 7 5 11 1 + 8 5 13 1 + 9 6 7 1 + 10 6 14 1 + 11 6 15 1 + 12 7 8 1 + 13 7 11 1 + 14 7 16 1 + 15 8 9 1 + 16 8 17 1 + 17 8 18 1 + 18 9 10 1 + 19 9 12 1 + 20 9 19 1 + 21 10 20 1 + 22 10 21 1 + 23 11 12 1 + 24 11 22 1 + 25 12 23 1 + 26 12 24 1 + 27 14 25 1 + 28 14 26 1 + 29 14 27 1 + 30 15 28 1 + 31 15 29 1 + 32 15 30 1 +@SUBSTRUCTURE + 1 KARY 1 +@COMMENT +COMMENT 1-CYANO-3,3-DIMETHYL-2-THIATRICYCLO(3.2.1.1-6,8-)NONANE 2,2 +@MOLECULE +KASBAH + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -3.6165 2.0841 5.7943 C.2 1 UNCH -0.1435 + 2 C2 -4.2785 1.0821 5.0686 C.2 1 UNCH -0.1500 + 3 C3 -5.5522 0.6585 5.4498 C.2 1 UNCH -0.1500 + 4 C4 -6.1733 1.2267 6.5602 C.2 1 UNCH -0.1500 + 5 C5 -5.5218 2.2173 7.2923 C.2 1 UNCH -0.1500 + 6 C6 -4.2481 2.6444 6.9140 C.2 1 UNCH -0.1500 + 7 C7 -2.2262 2.5246 5.3897 C.3 1 UNCH 0.4992 + 8 N1 -1.1685 1.5635 5.7770 N.3 1 UNCH -0.5477 + 9 N2 0.0620 1.6512 5.1328 N.2 1 UNCH 1.1060 + 10 C8 -1.0975 1.0024 6.9888 C.1 1 UNCH 0.6831 + 11 N3 -1.0697 0.5528 8.0566 N.1 1 UNCH -0.5571 + 12 O1 0.9265 0.8378 5.4615 O.3 1 UNCH -0.5200 + 13 O2 0.1488 2.5287 4.2719 O.2 1 UNCH -0.5200 + 14 H1 -3.8063 0.6222 4.2027 H 1 UNCH 0.1500 + 15 H2 -6.0597 -0.1186 4.8835 H 1 UNCH 0.1500 + 16 H3 -7.1640 0.8931 6.8589 H 1 UNCH 0.1500 + 17 H4 -6.0052 2.6535 8.1632 H 1 UNCH 0.1500 + 18 H5 -3.7544 3.4124 7.5060 H 1 UNCH 0.1500 + 19 H6 -2.0019 3.5048 5.8308 H 1 UNCH 0.0000 + 20 H7 -2.2455 2.6694 4.3016 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 14 1 + 6 3 4 2 + 7 3 15 1 + 8 4 5 1 + 9 4 16 1 + 10 5 6 2 + 11 5 17 1 + 12 6 18 1 + 13 7 8 1 + 14 7 19 1 + 15 7 20 1 + 16 8 9 1 + 17 8 10 1 + 18 9 12 1 + 19 9 13 2 + 20 10 11 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-CYANO-N-NITROTOLYLAMINE (AT 225 DEG.K) +@MOLECULE +KASBOV + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.2076 2.3178 -0.6358 C.2 1 KASB 0.0730 + 2 C2 0.5755 3.4738 -0.5783 C.2 1 KASB -0.1500 + 3 C3 0.9277 4.0268 0.6589 C.2 1 KASB 0.0825 + 4 C4 0.4878 3.4108 1.8497 C.2 1 KASB 0.0825 + 5 C5 -0.2958 2.2537 1.7799 C.2 1 KASB -0.1500 + 6 C6 -0.6420 1.7095 0.5404 C.2 1 KASB -0.1500 + 7 C7 -0.5642 1.7575 -1.9027 C.1 1 KASB -0.0730 + 8 C8 -0.8639 1.2866 -2.9667 C.1 1 KASB -0.1050 + 9 C9 -1.2225 0.7233 -4.2352 C.2 1 KASB 0.8250 + 10 C10 2.1547 5.8079 -0.3614 C.3 1 KASB 0.2800 + 11 C11 0.4522 3.4236 4.2396 C.3 1 KASB 0.2800 + 12 O1 -0.7423 1.4024 -5.2924 O.3 1 KASB -0.6500 + 13 O2 -1.9016 -0.2812 -4.3580 O.2 1 KASB -0.5700 + 14 O3 1.6919 5.1578 0.8134 O.3 1 KASB -0.3625 + 15 O4 0.8759 4.0149 3.0200 O.3 1 KASB -0.3625 + 16 H1 0.8986 3.9247 -1.5107 H 1 KASB 0.1500 + 17 H2 -0.6539 1.7500 2.6713 H 1 KASB 0.1500 + 18 H3 -1.2518 0.8095 0.5030 H 1 KASB 0.1500 + 19 H4 -1.0731 0.8938 -6.0602 H 1 KASB 0.5000 + 20 H5 2.8139 5.1538 -0.9415 H 1 KASB 0.0000 + 21 H6 1.3182 6.1683 -0.9692 H 1 KASB 0.0000 + 22 H7 2.7401 6.6794 -0.0528 H 1 KASB 0.0000 + 23 H8 -0.6396 3.4263 4.3219 H 1 KASB 0.0000 + 24 H9 0.8560 2.4118 4.3496 H 1 KASB 0.0000 + 25 H10 0.8481 4.0296 5.0603 H 1 KASB 0.0000 +@BOND + 1 1 7 1 + 2 1 6 2 + 3 1 2 1 + 4 2 16 1 + 5 2 3 2 + 6 3 14 1 + 7 3 4 1 + 8 4 15 1 + 9 4 5 2 + 10 5 17 1 + 11 5 6 1 + 12 6 18 1 + 13 7 8 3 + 14 8 9 1 + 15 9 13 2 + 16 9 12 1 + 17 10 22 1 + 18 10 21 1 + 19 10 20 1 + 20 10 14 1 + 21 11 25 1 + 22 11 24 1 + 23 11 23 1 + 24 11 15 1 + 25 12 19 1 +@SUBSTRUCTURE + 1 KASB 1 +@COMMENT +COMMENT (3,4-DIMETHOXYPHENYL)PROPIOLIC ACID +@MOLECULE +KATNAU + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.2097 2.9281 0.0253 S.1 1 UNCH 1.4650 + 2 O1 0.5053 4.1778 0.2446 O.2 1 UNCH -0.6500 + 3 O2 0.7286 1.6927 0.6151 O.2 1 UNCH -0.6500 + 4 N1 1.3901 2.7055 -1.5667 N.2 1 UNCH -0.6380 + 5 N2 3.9357 3.2968 0.0376 N.2 1 UNCH -0.6210 + 6 N3 4.1941 3.1482 -3.5594 N.3 1 UNCH -0.5000 + 7 N4 2.8863 2.7173 -3.4305 N.3 1 UNCH -0.4191 + 8 C1 2.8492 3.1884 0.7603 C.2 1 UNCH 0.3868 + 9 C2 3.8061 3.2014 -1.3070 C.2 1 UNCH 0.1854 + 10 C3 2.5619 2.8486 -2.0769 C.2 1 UNCH 0.4856 + 11 C4 4.7300 3.3347 -2.2790 C.2 1 UNCH -0.0382 + 12 C5 1.9306 3.0556 -4.4694 C.3 1 UNCH 0.3691 + 13 C6 6.1804 3.6192 -2.0982 C.3 1 UNCH 0.1382 + 14 C7 2.9835 3.2918 2.2558 C.2 1 UNCH 0.0862 + 15 C8 4.2724 3.3337 2.8153 C.2 1 UNCH -0.1500 + 16 C9 4.4498 3.4315 4.1976 C.2 1 UNCH -0.1500 + 17 C10 3.3424 3.4908 5.0382 C.2 1 UNCH -0.1500 + 18 C11 2.0594 3.4538 4.4977 C.2 1 UNCH -0.1500 + 19 C12 1.8780 3.3560 3.1139 C.2 1 UNCH -0.1500 + 20 H3 4.7989 2.5971 -4.1724 H 1 UNCH 0.4000 + 21 H4 2.3359 2.8063 -5.4556 H 1 UNCH 0.0000 + 22 H5 1.6972 4.1252 -4.4494 H 1 UNCH 0.0000 + 23 H6 1.0021 2.4907 -4.3386 H 1 UNCH 0.0000 + 24 H7 6.4486 3.7291 -1.0426 H 1 UNCH 0.0000 + 25 H8 6.4521 4.5472 -2.6114 H 1 UNCH 0.0000 + 26 H9 6.7832 2.8056 -2.5143 H 1 UNCH 0.0000 + 27 H10 5.1555 3.2887 2.1808 H 1 UNCH 0.1500 + 28 H11 5.4531 3.4615 4.6154 H 1 UNCH 0.1500 + 29 H12 3.4778 3.5669 6.1143 H 1 UNCH 0.1500 + 30 H13 1.1930 3.5021 5.1538 H 1 UNCH 0.1500 + 31 H14 0.8552 3.3372 2.7468 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 4 1 + 4 1 8 1 + 5 4 10 2 + 6 5 8 2 + 7 5 9 1 + 8 6 7 1 + 9 6 11 1 + 10 6 20 1 + 11 7 10 am + 12 7 12 1 + 13 8 14 1 + 14 9 10 1 + 15 9 11 2 + 16 11 13 1 + 17 12 21 1 + 18 12 22 1 + 19 12 23 1 + 20 13 24 1 + 21 13 25 1 + 22 13 26 1 + 23 14 15 1 + 24 14 19 2 + 25 15 16 2 + 26 15 27 1 + 27 16 17 1 + 28 16 28 1 + 29 17 18 2 + 30 17 29 1 + 31 18 19 1 + 32 18 30 1 + 33 19 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-PHENYL-5,7-DIMETHYL-6H-PYRAZOLO(3,4-C)(1,2,4)THIADIAZINE +@MOLECULE +KAVFUI + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -3.4414 10.6904 3.6492 N.3 1 UNCH 0.4592 + 2 N2 -4.6202 10.9655 2.8835 N.2 1 UNCH 0.8840 + 3 O1 -4.6665 12.1068 2.4234 O.3 1 UNCH -0.5200 + 4 O2 -5.4008 10.0161 2.8071 O.2 1 UNCH -0.5200 + 5 C1 -2.4181 11.5743 3.8867 C.2 1 UNCH 0.0365 + 6 H1 -2.4178 12.5875 3.5013 H 1 UNCH 0.1500 + 7 N3 -1.4679 11.0367 4.6241 N.2 1 UNCH -0.5653 + 8 C2 -1.8993 9.7476 4.8727 C.2 1 UNCH 0.3062 + 9 N4 -1.1118 8.8264 5.6647 N.2 1 UNCH 0.9610 + 10 O3 -1.5899 7.6946 5.8273 O.3 1 UNCH -0.5200 + 11 O4 -0.0334 9.2300 6.1158 O.2 1 UNCH -0.5200 + 12 C3 -3.1214 9.5085 4.2784 C.2 1 UNCH -0.3016 + 13 H2 -3.7624 8.6371 4.2505 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 am + 3 1 12 1 + 4 2 3 1 + 5 2 4 2 + 6 5 6 1 + 7 5 7 2 + 8 7 8 1 + 9 8 9 1 + 10 8 12 2 + 11 9 10 1 + 12 9 11 2 + 13 12 13 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,4-DINITROIMIDAZOLE (AT 173 DEG.K) +@MOLECULE +KAVTEG + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.5031 6.2062 11.3556 N.3 1 UNCH -0.6400 + 2 C1 3.6735 5.0625 11.7149 C.3 1 UNCH 0.5500 + 3 O1 3.2097 4.3093 10.6007 O.3 1 UNCH -0.5600 + 4 C2 2.3905 5.1091 9.7397 C.3 1 UNCH 0.2800 + 5 C3 3.2817 6.1899 9.1463 C.3 1 UNCH 0.0000 + 6 C4 3.9446 7.0054 10.2697 C.3 1 UNCH 0.2700 + 7 C5 5.1861 7.7160 9.7678 C.3 1 UNCH 0.0610 + 8 C6 6.2121 6.6333 9.9014 C.2 1 UNCH 0.6590 + 9 O2 7.2915 6.5981 9.3314 O.2 1 UNCH -0.5700 + 10 O3 5.7417 5.6819 10.7722 O.3 1 UNCH -0.0500 + 11 C7 1.8086 4.2095 8.6408 C.3 1 UNCH 0.2800 + 12 O4 0.8425 3.2853 9.1785 O.3 1 UNCH -0.4300 + 13 C8 -0.3889 3.8067 9.4238 C.2 1 UNCH 0.6590 + 14 O5 -0.7137 4.9710 9.2365 O.2 1 UNCH -0.5700 + 15 C9 -1.2974 2.7483 9.9688 C.3 1 UNCH 0.0610 + 16 H1 2.8117 5.3981 12.3050 H 1 UNCH 0.0000 + 17 H2 4.2397 4.3849 12.3637 H 1 UNCH 0.0000 + 18 H3 1.5814 5.5503 10.3339 H 1 UNCH 0.0000 + 19 H4 2.7027 6.8562 8.4959 H 1 UNCH 0.0000 + 20 H5 4.0477 5.7157 8.5182 H 1 UNCH 0.0000 + 21 H6 3.2187 7.7254 10.6650 H 1 UNCH 0.0000 + 22 H7 5.4722 8.5549 10.4101 H 1 UNCH 0.0000 + 23 H8 5.0945 8.0399 8.7279 H 1 UNCH 0.0000 + 24 H9 2.5996 3.5962 8.1950 H 1 UNCH 0.0000 + 25 H10 1.3514 4.7953 7.8342 H 1 UNCH 0.0000 + 26 H11 -2.2881 3.1769 10.1451 H 1 UNCH 0.0000 + 27 H12 -0.9042 2.3755 10.9179 H 1 UNCH 0.0000 + 28 H13 -1.3947 1.9346 9.2457 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 10 1 + 4 2 3 1 + 5 2 16 1 + 6 2 17 1 + 7 3 4 1 + 8 4 5 1 + 9 4 11 1 + 10 4 18 1 + 11 5 6 1 + 12 5 19 1 + 13 5 20 1 + 14 6 7 1 + 15 6 21 1 + 16 7 8 1 + 17 7 22 1 + 18 7 23 1 + 19 8 9 2 + 20 8 10 1 + 21 11 12 1 + 22 11 24 1 + 23 11 25 1 + 24 12 13 1 + 25 13 14 2 + 26 13 15 1 + 27 15 26 1 + 28 15 27 1 + 29 15 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (4S*,6R*)-(8-OXO-3,9-DIOXA-1-AZA-4-BICYCLO(4.3.0)NONANYL)ME +@MOLECULE +KECSIU + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.2663 6.7777 5.1475 S.3 1 UNCH -0.2020 + 2 S2 -1.2330 8.2626 2.8906 S.2 1 UNCH -0.3800 + 3 F1 2.0540 10.1709 1.9493 F 1 UNCH -0.3400 + 4 F2 0.3829 9.5740 0.6989 F 1 UNCH -0.3400 + 5 F3 2.6628 8.1206 0.2178 F 1 UNCH -0.3400 + 6 F4 2.7884 7.5097 2.2971 F 1 UNCH -0.3400 + 7 F5 0.2367 4.3174 6.5874 F 1 UNCH -0.3400 + 8 F6 1.4155 4.5058 8.3904 F 1 UNCH -0.3400 + 9 F7 2.6108 3.8942 5.0973 F 1 UNCH -0.3400 + 10 F8 3.7778 4.1624 6.9164 F 1 UNCH -0.3400 + 11 C1 1.3675 8.5105 5.2926 C.2 1 UNCH 0.1010 + 12 C2 1.9765 9.1187 6.4650 C.2 1 UNCH -0.1500 + 13 C3 2.3368 8.4614 7.5780 C.2 1 UNCH -0.1382 + 14 C4 2.1178 7.0392 7.7219 C.2 1 UNCH -0.1500 + 15 C5 1.6696 6.2178 6.7541 C.2 1 UNCH -0.0372 + 16 C6 2.9635 9.1608 8.7516 C.3 1 UNCH 0.1382 + 17 C7 0.9526 9.3194 4.2977 C.2 1 UNCH -0.1356 + 18 C8 0.3333 8.8973 2.9990 C.2 1 UNCH 0.3046 + 19 C9 1.1629 9.1523 1.7411 C.3 1 UNCH 0.7410 + 20 C10 1.9122 7.8893 1.3301 C.3 1 UNCH 0.6800 + 21 C11 1.4615 4.7342 7.0353 C.3 1 UNCH 0.8182 + 22 C12 2.5451 3.8199 6.4514 C.3 1 UNCH 0.6800 + 23 H1 2.1451 10.1938 6.4257 H 1 UNCH 0.1500 + 24 H2 2.3411 6.6263 8.7058 H 1 UNCH 0.1500 + 25 H3 3.0935 10.2331 8.5695 H 1 UNCH 0.0000 + 26 H4 3.9523 8.7407 8.9656 H 1 UNCH 0.0000 + 27 H5 2.3382 9.0512 9.6444 H 1 UNCH 0.0000 + 28 H6 1.0843 10.3976 4.3676 H 1 UNCH 0.1500 + 29 H7 1.2425 7.0522 1.1148 H 1 UNCH 0.0000 + 30 H8 2.3593 2.7773 6.7243 H 1 UNCH 0.0000 +@BOND + 1 1 11 1 + 2 1 15 1 + 3 2 18 2 + 4 3 19 1 + 5 4 19 1 + 6 5 20 1 + 7 6 20 1 + 8 7 21 1 + 9 8 21 1 + 10 9 22 1 + 11 10 22 1 + 12 11 12 1 + 13 11 17 2 + 14 12 13 2 + 15 12 23 1 + 16 13 14 1 + 17 13 16 1 + 18 14 15 2 + 19 14 24 1 + 20 15 21 1 + 21 16 25 1 + 22 16 26 1 + 23 16 27 1 + 24 17 18 1 + 25 17 28 1 + 26 18 19 1 + 27 19 20 1 + 28 20 29 1 + 29 21 22 1 + 30 22 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT Z-4-METHYL-6-TETRAFLUOROETHYL-2-(TETRAFLUOROTHIOACYLMETHYLE +@MOLECULE +KECSUG + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.7688 6.0085 5.7119 N.3 1 UNCH 0.3140 + 2 N2 3.9721 4.9463 4.8893 N.2 1 UNCH -0.7068 + 3 C1 4.8191 4.1591 5.5891 C.2 1 UNCH 0.3350 + 4 N3 5.1499 4.6927 6.8165 N.2 1 UNCH -0.5653 + 5 C2 4.4912 5.8205 6.8572 C.2 1 UNCH 0.3105 + 6 C3 2.8904 7.1234 5.3248 C.3 1 UNCH 0.8356 + 7 C4 2.2289 6.9638 3.8998 C.3 1 UNCH 0.8700 + 8 C5 5.3510 2.8241 5.0749 C.3 1 UNCH 1.0510 + 9 CL1 1.1473 8.3921 3.4861 CL 1 UNCH -0.2900 + 10 CL2 1.1394 5.5164 3.7567 CL 1 UNCH -0.2900 + 11 CL3 3.4307 6.8986 2.5383 CL 1 UNCH -0.2900 + 12 CL4 1.5652 7.3120 6.5856 CL 1 UNCH -0.2900 + 13 CL5 3.8509 8.6908 5.3701 CL 1 UNCH -0.2900 + 14 CL6 3.9743 1.7220 4.7661 CL 1 UNCH -0.2900 + 15 CL7 6.4460 2.0536 6.2600 CL 1 UNCH -0.2900 + 16 CL8 6.2544 3.0974 3.5536 CL 1 UNCH -0.2900 + 17 CL9 4.5285 6.9076 8.1604 CL 1 UNCH -0.1240 +@BOND + 1 1 2 1 + 2 1 5 am + 3 1 6 1 + 4 2 3 2 + 5 3 4 am + 6 3 8 1 + 7 4 5 2 + 8 5 17 1 + 9 6 7 1 + 10 6 12 1 + 11 6 13 1 + 12 7 9 1 + 13 7 10 1 + 14 7 11 1 + 15 8 14 1 + 16 8 15 1 + 17 8 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-PERCHLOROETHYL-3-TRICHLOROMETHYL-5-CHLORO-1,2,4-TRIAZOLE +@MOLECULE +KEDYAT + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.8834 4.2089 5.0058 S.3 1 UNCH -0.0800 + 2 C1 2.2750 2.7167 4.2689 C.2 1 UNCH -0.1100 + 3 C2 1.3340 1.7490 4.5340 C.2 1 UNCH 0.0620 + 4 C3 0.2821 2.2503 5.3538 C.2 1 UNCH -0.1500 + 5 C4 0.4367 3.5832 5.6984 C.2 1 UNCH 0.0400 + 6 O1 1.3368 0.4601 4.1062 O.3 1 UNCH -0.3420 + 7 C5 2.4418 0.0842 3.2948 C.3 1 UNCH 0.2800 + 8 H1 2.4675 0.6649 2.3665 H 1 UNCH 0.0000 + 9 H2 2.3159 -0.9688 3.0250 H 1 UNCH 0.0000 + 10 H3 3.3855 0.1767 3.8431 H 1 UNCH 0.0000 + 11 H4 3.1796 2.6466 3.6833 H 1 UNCH 0.1500 + 12 H5 -0.5532 1.6385 5.6708 H 1 UNCH 0.1500 + 13 C4A -0.4367 4.4064 6.5136 C.2 1 UNCH 0.0400 + 14 S1A -1.8834 3.7808 7.2062 S.3 1 UNCH -0.0800 + 15 C3A -0.2821 5.7394 6.8582 C.2 1 UNCH -0.1500 + 16 C1A -2.2750 5.2730 7.9430 C.2 1 UNCH -0.1100 + 17 C2A -1.3340 6.2407 7.6779 C.2 1 UNCH 0.0620 + 18 H5A 0.5532 6.3512 6.5411 H 1 UNCH 0.1500 + 19 H4A -3.1796 5.3430 8.5286 H 1 UNCH 0.1500 + 20 O1A -1.3368 7.5295 8.1058 O.3 1 UNCH -0.3420 + 21 C5A -2.4418 7.9054 8.9171 C.3 1 UNCH 0.2800 + 22 H1A -2.4675 7.3247 9.8455 H 1 UNCH 0.0000 + 23 H2A -2.3159 8.9585 9.1869 H 1 UNCH 0.0000 + 24 H3A -3.3856 7.8129 8.3688 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 11 1 + 5 3 4 1 + 6 3 6 1 + 7 4 5 2 + 8 4 12 1 + 9 5 13 1 + 10 6 7 1 + 11 7 8 1 + 12 7 9 1 + 13 7 10 1 + 14 13 14 1 + 15 13 15 2 + 16 14 16 1 + 17 15 17 1 + 18 15 18 1 + 19 16 17 2 + 20 16 19 1 + 21 17 20 1 + 22 20 21 1 + 23 21 22 1 + 24 21 23 1 + 25 21 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,4'-DIMETHOXY-2,2'-BITHIENYL +@MOLECULE +KEFJEK + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 4.6547 0.4264 0.6571 O.3 1 UNCH -0.3430 + 2 O2 6.3883 -0.7518 -0.1599 O.3 1 UNCH -0.2800 + 3 N1 8.3245 -1.6190 -0.9813 N.3 1 UNCH -0.5840 + 4 N2 8.0623 0.7286 -0.4180 N.2 1 UNCH -0.5653 + 5 N3 6.9305 3.8964 0.6016 N.1 1 UNCH -0.5571 + 6 C1 4.0883 1.6532 1.0946 C.3 1 UNCH 0.2800 + 7 C2 5.9186 0.4670 0.2439 C.2 1 UNCH 0.2030 + 8 C3 7.6817 -0.5246 -0.5451 C.2 1 UNCH 0.5621 + 9 C4 9.6440 -1.7483 -1.4475 C.2 1 UNCH 0.1000 + 10 C5 10.0882 -3.0190 -1.8532 C.2 1 UNCH -0.1500 + 11 C6 11.3882 -3.2202 -2.3275 C.2 1 UNCH -0.1500 + 12 C7 12.2724 -2.1499 -2.4054 C.2 1 UNCH -0.1500 + 13 C8 11.8544 -0.8834 -2.0092 C.2 1 UNCH -0.1500 + 14 C9 10.5522 -0.6866 -1.5351 C.2 1 UNCH -0.1500 + 15 C10 6.9499 1.3644 0.0819 C.2 1 UNCH 0.2462 + 16 C11 6.9632 2.7606 0.3604 C.1 1 UNCH 0.5381 + 17 H1 3.0557 1.4584 1.3995 H 1 UNCH 0.0000 + 18 H2 4.0660 2.3868 0.2823 H 1 UNCH 0.0000 + 19 H3 4.6266 2.0461 1.9633 H 1 UNCH 0.0000 + 20 H4 7.7895 -2.4773 -0.9769 H 1 UNCH 0.4000 + 21 H5 9.4204 -3.8757 -1.8042 H 1 UNCH 0.1500 + 22 H6 11.7070 -4.2127 -2.6350 H 1 UNCH 0.1500 + 23 H7 13.2837 -2.3005 -2.7731 H 1 UNCH 0.1500 + 24 H8 12.5391 -0.0410 -2.0668 H 1 UNCH 0.1500 + 25 H9 10.2711 0.3192 -1.2375 H 1 UNCH 0.1500 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 7 1 + 4 2 8 1 + 5 3 8 am + 6 3 9 1 + 7 3 20 1 + 8 4 8 2 + 9 4 15 1 + 10 5 16 3 + 11 6 17 1 + 12 6 18 1 + 13 6 19 1 + 14 7 15 2 + 15 9 10 1 + 16 9 14 2 + 17 10 11 2 + 18 10 21 1 + 19 11 12 1 + 20 11 22 1 + 21 12 13 2 + 22 12 23 1 + 23 13 14 1 + 24 13 24 1 + 25 14 25 1 + 26 15 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-ANILINO-5-METHOXY-4-CYANO-OXAZOLE +@MOLECULE +KEJFOU + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 1.5735 0.7163 4.5885 P 1 KEJF 1.3182 + 2 O1 0.3260 -0.0379 4.1848 O.3 1 KEJF -0.9500 + 3 O2 1.9372 0.8049 6.0544 O.2 1 KEJF -0.9500 + 4 O3 1.3746 2.2575 4.0631 O.3 1 KEJF -0.5512 + 5 O4 4.1777 2.2322 0.7150 O.2 1 KEJF -0.5700 + 6 N1 5.3533 0.7995 1.9921 N.3 1 KEJF -0.8000 + 7 C1 2.9623 0.4034 3.5355 C.2 1 KEJF -0.2970 + 8 C2 3.1584 1.4438 2.7122 C.2 1 KEJF -0.1238 + 9 C3 2.1461 2.5543 2.8816 C.3 1 KEJF 0.4182 + 10 C4 4.2345 1.5222 1.7104 C.2 1 KEJF 0.6156 + 11 C5 2.8054 3.9115 3.1357 C.3 1 KEJF 0.0000 + 12 C6 1.1611 2.6329 1.7137 C.3 1 KEJF 0.0000 + 13 H1 3.4893 3.8612 3.9914 H 1 KEJF 0.0000 + 14 H2 2.0520 4.6667 3.3892 H 1 KEJF 0.0000 + 15 H3 3.3665 4.2702 2.2671 H 1 KEJF 0.0000 + 16 H4 0.3637 3.3541 1.9283 H 1 KEJF 0.0000 + 17 H5 1.6474 2.9312 0.7799 H 1 KEJF 0.0000 + 18 H6 0.6658 1.6685 1.5504 H 1 KEJF 0.0000 + 19 H7 6.1458 0.9123 1.3781 H 1 KEJF 0.3700 + 20 H8 5.4875 0.3555 2.8895 H 1 KEJF 0.3700 + 21 H9 3.5212 -0.5131 3.5860 H 1 KEJF 0.1500 +@BOND + 1 1 7 1 + 2 1 4 1 + 3 1 3 2 + 4 1 2 1 + 5 4 9 1 + 6 5 10 2 + 7 6 20 1 + 8 6 19 1 + 9 6 10 am + 10 7 21 1 + 11 7 8 2 + 12 8 10 1 + 13 8 9 1 + 14 9 12 1 + 15 9 11 1 + 16 11 15 1 + 17 11 14 1 + 18 11 13 1 + 19 12 18 1 + 20 12 17 1 + 21 12 16 1 +@SUBSTRUCTURE + 1 KEJF 1 +@COMMENT +COMMENT SODIUM 4-CARBAMOYL-5,5-DIMETHYL-5H-1,2-OXAPHOSPHOLE 2,2-DIO +@MOLECULE +KEMFAJ + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.0273 5.5840 4.9495 S.3 1 KEMF -0.0800 + 2 S2 2.9655 2.4303 6.2652 S.1 1 KEMF 0.8491 + 3 O3 2.7378 3.4297 7.3120 O.2 1 KEMF -0.6500 + 4 O4 3.5532 1.1895 6.7792 O.2 1 KEMF -0.6500 + 5 N1 1.9364 5.6972 3.4824 N.2 1 KEMF -0.3381 + 6 N2 2.1562 4.3545 3.7225 N.2 1 KEMF -0.3381 + 7 N3 3.6551 2.9392 4.9140 N.3 1 KEMF -0.2351 + 8 N4 -2.6311 0.6344 4.9924 N.3 1 KEMF -0.9000 + 9 C1 2.8313 6.4541 4.0803 C.2 1 KEMF 0.1981 + 10 C2 3.1796 4.1441 4.5282 C.2 1 KEMF 0.0731 + 11 C3 1.2782 1.8944 5.8549 C.2 1 KEMF -0.0090 + 12 C4 0.2279 2.8081 5.9277 C.2 1 KEMF -0.1500 + 13 C5 -1.0729 2.3806 5.6502 C.2 1 KEMF -0.1500 + 14 C6 -1.3363 1.0369 5.3603 C.2 1 KEMF 0.1000 + 15 C7 -0.2629 0.1468 5.2385 C.2 1 KEMF -0.1500 + 16 C8 1.0430 0.5640 5.5084 C.2 1 KEMF -0.1500 + 17 C9 2.8510 7.9427 4.0236 C.3 1 KEMF 0.1800 + 18 C10 1.9623 8.5533 5.0959 C.3 1 KEMF 0.0000 + 19 H1 0.4292 3.8476 6.1716 H 1 KEMF 0.1500 + 20 H2 -1.8754 3.1109 5.6679 H 1 KEMF 0.1500 + 21 H3 -0.4321 -0.8828 4.9400 H 1 KEMF 0.1500 + 22 H4 1.8701 -0.1364 5.4437 H 1 KEMF 0.1500 + 23 H9 -3.3504 1.2134 5.4123 H 1 KEMF 0.4000 + 24 H10 -2.7879 -0.3562 5.1416 H 1 KEMF 0.4000 + 25 H11 3.8726 8.3256 4.1308 H 1 KEMF 0.0000 + 26 H12 2.4981 8.2662 3.0371 H 1 KEMF 0.0000 + 27 H13 0.9251 8.2174 4.9895 H 1 KEMF 0.0000 + 28 H14 1.9749 9.6453 5.0221 H 1 KEMF 0.0000 + 29 H15 2.3029 8.2770 6.0996 H 1 KEMF 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 2 11 1 + 4 2 7 1 + 5 2 4 2 + 6 2 3 2 + 7 5 9 2 + 8 5 6 1 + 9 6 10 2 + 10 7 10 am + 11 8 24 1 + 12 8 23 1 + 13 8 14 1 + 14 9 17 1 + 15 11 16 1 + 16 11 12 2 + 17 12 19 1 + 18 12 13 1 + 19 13 20 1 + 20 13 14 2 + 21 14 15 1 + 22 15 21 1 + 23 15 16 2 + 24 16 22 1 + 25 17 26 1 + 26 17 25 1 + 27 17 18 1 + 28 18 29 1 + 29 18 28 1 + 30 18 27 1 +@SUBSTRUCTURE + 1 KEMF 1 +@COMMENT +COMMENT SODIUM 2-(P-AMINOPHENYLSULFONAMIDO)-5-ETHYL-1,3,4-THIADIAZO +@MOLECULE +KENHOA + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.0829 2.3066 0.8465 S.1 1 UNCH 1.6740 + 2 CL1 1.9237 3.8437 2.1951 CL 1 UNCH -0.1860 + 3 N1 2.9813 2.9195 -0.3418 N.2 1 UNCH -0.6380 + 4 O1 2.8540 1.3034 1.5523 O.2 1 UNCH -0.6500 + 5 C1 2.7600 5.1954 -3.2541 C.3 1 UNCH -0.1950 + 6 O2 0.7318 2.0282 0.4055 O.2 1 UNCH -0.6500 + 7 C2 3.4022 4.4041 -2.1468 C.3 1 UNCH -0.1000 + 8 C3 2.5353 3.8989 -1.0418 C.2 1 UNCH 0.6000 + 9 O3 1.3207 4.4908 -0.8518 O.3 1 UNCH -0.4300 + 10 C4 1.0113 5.6982 -1.5905 C.3 1 UNCH 0.4182 + 11 C5 1.8622 6.8027 -1.0149 C.2 1 UNCH -0.2882 + 12 C6 3.1536 6.8626 -1.3840 C.2 1 UNCH -0.1900 + 13 C7 3.7327 5.8787 -2.3148 C.3 1 UNCH -0.0600 + 14 C8 1.2910 5.4706 -3.0887 C.3 1 UNCH 0.0950 + 15 H1 3.0586 5.0080 -4.2760 H 1 UNCH 0.1000 + 16 H2 4.1810 3.7068 -2.4457 H 1 UNCH 0.1000 + 17 H3 -0.0500 5.9205 -1.4405 H 1 UNCH 0.0000 + 18 H4 1.4339 7.4989 -0.3033 H 1 UNCH 0.1500 + 19 H5 3.8022 7.6359 -0.9799 H 1 UNCH 0.1500 + 20 H6 4.7150 6.1291 -2.7021 H 1 UNCH 0.1000 + 21 H7 1.0063 6.3490 -3.6783 H 1 UNCH 0.0000 + 22 H8 0.7234 4.6071 -3.4536 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 2 + 4 1 6 2 + 5 3 8 2 + 6 5 7 1 + 7 5 13 1 + 8 5 14 1 + 9 5 15 1 + 10 7 8 1 + 11 7 13 1 + 12 7 16 1 + 13 8 9 1 + 14 9 10 1 + 15 10 11 1 + 16 10 14 1 + 17 10 17 1 + 18 11 12 2 + 19 11 18 1 + 20 12 13 1 + 21 12 19 1 + 22 13 20 1 + 23 14 21 1 + 24 14 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-CHLOROSULFONYLIMINO-4-OXATRICYCLO(3.3.1.0-2,8-)NON-6-ENE +@MOLECULE +KEPKIZ + 15 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.7064 8.4079 2.0514 C.2 1 KEPK 0.2118 + 2 C2 2.2305 8.0610 3.3009 C.2 1 KEPK -0.1280 + 3 C3 1.5701 8.4633 4.5036 C.2 1 KEPK -0.1040 + 4 C4 0.4276 9.1863 4.4370 C.2 1 KEPK -0.1050 + 5 C5 -0.1286 9.5538 3.1673 C.2 1 KEPK 0.1415 + 6 N1 2.4097 7.9763 1.0124 N.2 1 KEPK -0.4097 + 7 N2 3.3394 7.3631 3.0513 N.2 1 KEPK 0.9530 + 8 N3 0.5194 9.1588 1.9979 N.3 1 KEPK 0.6466 + 9 N4 -0.1705 9.6082 0.9380 N.2 1 KEPK -0.4180 + 10 N5 -1.2108 10.2594 1.4455 N.2 1 KEPK 0.0000 + 11 N6 -1.1997 10.2351 2.8237 N.2 1 KEPK -0.3381 + 12 O1 3.4936 7.2838 1.6091 O.3 1 KEPK -0.1171 + 13 O2 4.2088 6.8048 3.7538 O.3 1 KEPK -0.6330 + 14 H1 1.9945 8.1830 5.4658 H 1 KEPK 0.1500 + 15 H2 -0.0925 9.5038 5.3360 H 1 KEPK 0.1500 +@BOND + 1 1 8 am + 2 1 6 2 + 3 1 2 1 + 4 2 7 2 + 5 2 3 1 + 6 3 14 1 + 7 3 4 2 + 8 4 15 1 + 9 4 5 1 + 10 5 11 2 + 11 5 8 am + 12 6 12 1 + 13 7 13 1 + 14 7 12 1 + 15 8 9 1 + 16 9 10 2 + 17 10 11 1 +@SUBSTRUCTURE + 1 KEPK 1 +@COMMENT +COMMENT TETRAZOLO(1,5-F)FURAZANO(4,5-B)PYRIDINE 1-OXIDE +@MOLECULE +KESNEB + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 9.6589 4.7019 16.0626 O.3 1 KESN -0.5200 + 2 O2 9.0686 6.5485 15.0216 O.2 1 KESN -0.5200 + 3 O3 13.3508 9.2605 14.9378 O.3 1 KESN -0.5200 + 4 O4 14.0148 9.9866 16.9000 O.2 1 KESN -0.5200 + 5 O5 11.1621 4.8026 20.1961 O.3 1 KESN -0.6330 + 6 N1 9.7154 5.9230 15.8715 N.2 1 KESN 0.9070 + 7 N2 13.3218 9.2600 16.1758 N.2 1 KESN 0.9070 + 8 N3 9.9573 4.8599 19.7751 N.2 1 KESN 0.5300 + 9 C1 10.6264 6.5464 18.0990 C.2 1 KESN 0.0862 + 10 C2 10.6228 6.6962 16.7038 C.2 1 KESN 0.1330 + 11 C3 11.4987 7.5816 16.0561 C.2 1 KESN -0.1500 + 12 C4 12.3920 8.3303 16.8308 C.2 1 KESN 0.1330 + 13 C5 12.4046 8.2035 18.2265 C.2 1 KESN -0.1500 + 14 C6 11.5184 7.3197 18.8546 C.2 1 KESN -0.1500 + 15 C7 9.6536 5.6729 18.7804 C.2 1 KESN -0.1422 + 16 C8 8.9205 3.9672 20.4220 C.3 1 KESN 0.0990 + 17 C9 7.8200 4.8622 20.9964 C.3 1 KESN 0.0000 + 18 C10 9.5795 3.1692 21.5563 C.3 1 KESN 0.0000 + 19 C11 8.3955 3.0073 19.3522 C.3 1 KESN 0.0000 + 20 H1 11.4797 7.6773 14.9710 H 1 KESN 0.1500 + 21 H2 13.0940 8.7816 18.8412 H 1 KESN 0.1500 + 22 H3 11.5381 7.2471 19.9417 H 1 KESN 0.1500 + 23 H4 8.6155 5.6601 18.4165 H 1 KESN 0.0600 + 24 H5 7.2764 5.4051 20.2163 H 1 KESN 0.0000 + 25 H6 7.0826 4.2675 21.5473 H 1 KESN 0.0000 + 26 H7 8.2345 5.6063 21.6862 H 1 KESN 0.0000 + 27 H8 8.8494 2.5164 22.0484 H 1 KESN 0.0000 + 28 H9 10.3897 2.5312 21.1844 H 1 KESN 0.0000 + 29 H10 9.9985 3.8298 22.3242 H 1 KESN 0.0000 + 30 H11 9.2142 2.4455 18.8879 H 1 KESN 0.0000 + 31 H12 7.6962 2.2843 19.7872 H 1 KESN 0.0000 + 32 H13 7.8616 3.5299 18.5517 H 1 KESN 0.0000 +@BOND + 1 1 6 1 + 2 2 6 2 + 3 3 7 1 + 4 4 7 2 + 5 5 8 1 + 6 6 10 1 + 7 7 12 1 + 8 8 16 1 + 9 8 15 2 + 10 9 15 1 + 11 9 14 1 + 12 9 10 2 + 13 10 11 1 + 14 11 20 1 + 15 11 12 2 + 16 12 13 1 + 17 13 21 1 + 18 13 14 2 + 19 14 22 1 + 20 15 23 1 + 21 16 19 1 + 22 16 18 1 + 23 16 17 1 + 24 17 26 1 + 25 17 25 1 + 26 17 24 1 + 27 18 29 1 + 28 18 28 1 + 29 18 27 1 + 30 19 32 1 + 31 19 31 1 + 32 19 30 1 +@SUBSTRUCTURE + 1 KESN 1 +@COMMENT +COMMENT 2,4-DINITROPHENYL-T-BUTYL NITRONE +@MOLECULE +KEWJIF + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 7.9802 2.9133 0.2508 S.3 1 KEWJ 0.4414 + 2 N1 8.1875 1.4573 -0.5488 N.2 1 KEWJ -0.5095 + 3 C1 7.5820 0.5479 0.2147 C.2 1 KEWJ 0.3718 + 4 C2 6.9855 1.0920 1.4195 C.2 1 KEWJ 0.4138 + 5 N2 7.1268 2.4058 1.6008 N.2 1 KEWJ -0.5095 + 6 N3 7.5403 -0.7659 -0.1102 N.3 1 KEWJ -0.8830 + 7 N4 6.3347 0.2687 2.3540 N.2 1 KEWJ -0.4429 + 8 N5 5.5919 0.8788 3.1423 N.1 1 KEWJ 0.6879 + 9 N6 4.8956 1.4012 3.8802 N.2 1 KEWJ -0.3700 + 10 H1 8.1965 -1.0884 -0.8135 H 1 KEWJ 0.4000 + 11 H2 7.3464 -1.4477 0.6166 H 1 KEWJ 0.4000 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 3 2 + 4 3 6 am + 5 3 4 1 + 6 4 7 am + 7 4 5 2 + 8 6 11 1 + 9 6 10 1 + 10 7 8 2 + 11 8 9 2 +@SUBSTRUCTURE + 1 KEWJ 1 +@COMMENT +COMMENT 3-AMINO-4-AZIDO-1,2,5-THIADIAZOLE +@MOLECULE +KHDFRM11 + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O3 5.0901 0.4079 0.1391 O.3 1 KHDF -0.6500 + 2 O4 7.1051 0.9327 1.0371 O.2 1 KHDF -0.5700 + 3 C2 5.8887 0.9522 1.0764 C.2 1 KHDF 0.6600 + 4 H2 5.2971 1.4160 1.8810 H 1 KHDF 0.0600 + 5 H3 4.1447 0.5277 0.3507 H 1 KHDF 0.5000 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 2 3 2 + 4 3 4 1 +@SUBSTRUCTURE + 1 KHDF 1 +@COMMENT +COMMENT POTASSIUM HYDROGEN DIFORMATE (NEUTRON STUDY) +@MOLECULE +KIBDII + 28 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 8.8205 10.5802 -2.2844 N.2 1 KIBD -0.4960 + 2 C1 9.6063 11.2335 -1.4981 C.2 1 KIBD 0.7110 + 3 N2 10.9241 11.2369 -1.8472 N.2 1 KIBD -0.6610 + 4 C2 11.6835 10.2094 -1.5927 C.2 1 KIBD 0.6410 + 5 S1 11.1121 8.7903 -0.7043 S.3 1 KIBD -0.3710 + 6 C3 11.5204 9.3496 0.9626 C.3 1 KIBD 0.2300 + 7 N3 9.3061 11.9926 -0.4005 N.3 1 KIBD -0.8500 + 8 N4 13.0027 10.1960 -2.0011 N.3 1 KIBD -0.7882 + 9 C4 13.9171 9.0599 -1.9445 C.3 1 KIBD 0.3691 + 10 C5 15.2369 9.6181 -2.4658 C.3 1 KIBD 0.0000 + 11 C6 14.7835 10.6338 -3.4963 C.3 1 KIBD 0.0000 + 12 C7 13.5539 11.2575 -2.8444 C.3 1 KIBD 0.3691 + 13 N5 7.5247 10.5798 -1.9624 N.2 1 KIBD 1.0860 + 14 O1 6.9358 9.4917 -1.9254 O.3 1 KIBD -0.5200 + 15 O2 6.9460 11.6583 -1.7388 O.2 1 KIBD -0.5200 + 16 H1 11.2492 8.5712 1.6807 H 1 KIBD 0.0000 + 17 H2 10.9696 10.2591 1.2136 H 1 KIBD 0.0000 + 18 H3 12.5925 9.5448 1.0510 H 1 KIBD 0.0000 + 19 H4 8.3755 12.4061 -0.4307 H 1 KIBD 0.4000 + 20 H5 10.0208 12.6916 -0.2315 H 1 KIBD 0.4000 + 21 H6 14.0464 8.6727 -0.9291 H 1 KIBD 0.0000 + 22 H7 13.5601 8.2554 -2.5977 H 1 KIBD 0.0000 + 23 H8 15.8835 8.8428 -2.8858 H 1 KIBD 0.0000 + 24 H9 15.7810 10.1210 -1.6571 H 1 KIBD 0.0000 + 25 H10 15.5524 11.3739 -3.7346 H 1 KIBD 0.0000 + 26 H11 14.4989 10.1236 -4.4245 H 1 KIBD 0.0000 + 27 H12 12.8496 11.5971 -3.6114 H 1 KIBD 0.0000 + 28 H13 13.8362 12.1108 -2.2180 H 1 KIBD 0.0000 +@BOND + 1 1 13 1 + 2 1 2 2 + 3 2 7 am + 4 2 3 am + 5 3 4 2 + 6 4 8 am + 7 4 5 1 + 8 5 6 1 + 9 6 18 1 + 10 6 17 1 + 11 6 16 1 + 12 7 20 1 + 13 7 19 1 + 14 8 12 1 + 15 8 9 1 + 16 9 22 1 + 17 9 21 1 + 18 9 10 1 + 19 10 24 1 + 20 10 23 1 + 21 10 11 1 + 22 11 26 1 + 23 11 25 1 + 24 11 12 1 + 25 12 28 1 + 26 12 27 1 + 27 13 15 2 + 28 13 14 1 +@SUBSTRUCTURE + 1 KIBD 1 +@COMMENT +COMMENT 2-METHYL-3-(2-NITROAMIDINO)-1,1-TETRAMETHYLENEISOTHIOUREA +@MOLECULE +KIBFAC + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 7.3873 0.1366 1.4653 N.2 1 KIBF -0.6480 + 2 N2 8.2023 1.1301 1.8023 N.2 1 KIBF 1.4260 + 3 N3 7.9404 2.4351 1.7189 N.2 1 KIBF -0.6480 + 4 C1 6.7363 2.7645 1.2432 C.2 1 KIBF 0.1665 + 5 C2 5.8156 1.8119 0.8676 C.2 1 KIBF -0.1500 + 6 C3 6.1799 0.4859 1.0019 C.2 1 KIBF 0.3100 + 7 C4 6.4144 4.2235 1.1224 C.3 1 KIBF 0.1435 + 8 C5 5.2862 -0.6340 0.6357 C.2 1 KIBF 0.0000 + 9 C6 3.8850 -0.5413 0.7383 C.2 1 KIBF -0.1500 + 10 C7 3.0558 -1.6106 0.3815 C.2 1 KIBF -0.1500 + 11 C8 3.6094 -2.7998 -0.0823 C.2 1 KIBF -0.1500 + 12 C9 4.9909 -2.9234 -0.1840 C.2 1 KIBF -0.1500 + 13 C10 5.8173 -1.8538 0.1736 C.2 1 KIBF -0.1500 + 14 O1 9.3359 0.8091 2.2356 O.3 1 KIBF -0.7500 + 15 H1 4.8517 2.1041 0.4668 H 1 KIBF 0.1500 + 16 H2 5.5366 4.4688 1.7282 H 1 KIBF 0.0000 + 17 H3 6.2142 4.4813 0.0777 H 1 KIBF 0.0000 + 18 H4 7.2510 4.8379 1.4708 H 1 KIBF 0.0000 + 19 H5 3.4114 0.3606 1.1189 H 1 KIBF 0.1500 + 20 H6 1.9766 -1.5158 0.4739 H 1 KIBF 0.1500 + 21 H7 2.9663 -3.6321 -0.3563 H 1 KIBF 0.1500 + 22 H8 5.4314 -3.8525 -0.5373 H 1 KIBF 0.1500 + 23 H9 6.8962 -1.9813 0.0878 H 1 KIBF 0.1500 +@BOND + 1 1 6 1 + 2 1 2 2 + 3 2 14 1 + 4 2 3 1 + 5 3 4 2 + 6 4 7 1 + 7 4 5 1 + 8 5 15 1 + 9 5 6 2 + 10 6 8 1 + 11 7 18 1 + 12 7 17 1 + 13 7 16 1 + 14 8 13 1 + 15 8 9 2 + 16 9 19 1 + 17 9 10 1 + 18 10 20 1 + 19 10 11 2 + 20 11 21 1 + 21 11 12 1 + 22 12 22 1 + 23 12 13 2 + 24 13 23 1 +@SUBSTRUCTURE + 1 KIBF 1 +@COMMENT +COMMENT 4-METHYL-6-PHENYL-1,2,3-TRIAZINE 2-OXIDE +@MOLECULE +KICCUU + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 4.8446 1.7403 -0.2876 P 1 UNCH 0.4510 + 2 F1 4.7247 0.6023 0.7937 F 1 UNCH -0.1750 + 3 F2 4.9762 2.9104 0.7580 F 1 UNCH -0.1750 + 4 O1 3.2903 1.9102 -0.7215 O.3 1 UNCH -0.3810 + 5 C1 2.3116 1.9383 0.3179 C.3 1 UNCH 0.2800 + 6 H1 2.3275 1.0020 0.8909 H 1 UNCH 0.0000 + 7 H2 2.5218 2.7741 0.9974 H 1 UNCH 0.0000 + 8 C2 0.9369 2.1601 -0.3030 C.3 1 UNCH 0.2000 + 9 H3 0.9745 2.9885 -1.0192 H 1 UNCH 0.0000 + 10 H4 0.2234 2.4285 0.4840 H 1 UNCH 0.0000 + 11 C3 0.4630 0.9481 -0.9829 C.1 1 UNCH 0.3571 + 12 N1 0.0707 -0.0091 -1.5088 N.1 1 UNCH -0.5571 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 4 5 1 + 5 5 6 1 + 6 5 7 1 + 7 5 8 1 + 8 8 9 1 + 9 8 10 1 + 10 8 11 1 + 11 11 12 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5,5-DIFLUORO-4-OXA-5-PHOSPHAPENTANENITRILE (AT 173 DEG.K) +@MOLECULE +KICGAE + 22 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.8968 -1.0362 6.0103 C.3 1 UNCH 0.0000 + 2 C2 -0.1341 -1.5085 4.9239 C.3 1 UNCH 0.0000 + 3 C3 0.6566 -1.9524 3.6995 C.3 1 UNCH 0.0000 + 4 C4 1.7133 -0.8387 3.7897 C.3 1 UNCH 0.0000 + 5 C5 0.8131 0.4517 3.7421 C.3 1 UNCH 0.4282 + 6 C6 1.3459 1.6140 4.5412 C.2 1 UNCH 0.0018 + 7 C7 0.9701 1.5624 5.8294 C.2 1 UNCH 0.0240 + 8 C8 0.1110 0.3447 6.0632 C.3 1 UNCH 0.4060 + 9 C9 -0.4077 -0.0153 4.6275 C.3 1 UNCH 0.2900 + 10 C10 2.2295 -1.0175 5.2389 C.3 1 UNCH 0.2900 + 11 CL1 0.3788 0.8624 2.0736 CL 1 UNCH -0.2900 + 12 CL2 2.4580 2.7182 3.8651 CL 1 UNCH -0.1400 + 13 CL3 1.5166 2.6184 7.0589 CL 1 UNCH -0.1400 + 14 CL4 -1.0824 0.4960 7.3865 CL 1 UNCH -0.2900 + 15 CL5 -2.0381 0.4674 4.1353 CL 1 UNCH -0.2900 + 16 CL6 3.1323 -2.5321 5.4797 CL 1 UNCH -0.2900 + 17 H1 0.9083 -1.5941 6.9516 H 1 UNCH 0.0000 + 18 H2 -0.9746 -2.1090 5.2767 H 1 UNCH 0.0000 + 19 H3 1.0573 -2.9637 3.8061 H 1 UNCH 0.0000 + 20 H4 0.0605 -1.9223 2.7818 H 1 UNCH 0.0000 + 21 H5 2.4987 -0.8775 3.0307 H 1 UNCH 0.0000 + 22 H6 2.9033 -0.2227 5.5671 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 10 1 + 4 1 17 1 + 5 2 3 1 + 6 2 9 1 + 7 2 18 1 + 8 3 4 1 + 9 3 19 1 + 10 3 20 1 + 11 4 5 1 + 12 4 10 1 + 13 4 21 1 + 14 5 6 1 + 15 5 9 1 + 16 5 11 1 + 17 6 7 2 + 18 6 12 1 + 19 7 8 1 + 20 7 13 1 + 21 8 9 1 + 22 8 14 1 + 23 9 15 1 + 24 10 16 1 + 25 10 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3A,4,5,5A,5B,EXO-6-HEXACHLORO-1A,2,3,3A,5A,5B-HEXAHYDRO-1,3 +@MOLECULE +KICLAJ + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -1.7570 0.7222 11.5972 P 1 KICJ 1.2786 + 2 O1 -1.2372 -0.1061 12.7383 O.2 1 KICJ -0.7000 + 3 O2 -2.1962 -0.2227 10.3515 O.3 1 KICJ -0.5512 + 4 O3 -3.2002 2.4622 9.9951 O.3 1 KICJ -0.6800 + 5 O4 -0.5740 1.5967 10.9179 O.3 1 KICJ -0.5512 + 6 O5 0.0292 0.1987 8.4881 O.3 1 KICJ -0.5600 + 7 O6 -1.5905 0.2488 6.7728 O.3 1 KICJ -0.5600 + 8 C1 -1.2923 -0.1885 8.1017 C.3 1 KICJ 0.5600 + 9 C2 -2.3610 0.3739 9.0624 C.3 1 KICJ 0.2800 + 10 C3 -2.2177 1.8959 9.1167 C.3 1 KICJ 0.2800 + 11 C4 -0.8125 2.1960 9.6425 C.3 1 KICJ 0.2800 + 12 C5 0.2051 1.6092 8.6619 C.3 1 KICJ 0.2800 + 13 C6 -0.8190 -0.4532 5.8042 C.3 1 KICJ 0.2800 + 14 H1 -1.3300 -1.2840 8.1444 H 1 KICJ 0.0000 + 15 H2 -3.3665 0.1151 8.7128 H 1 KICJ 0.0000 + 16 H3 -2.3615 2.3526 8.1308 H 1 KICJ 0.0000 + 17 H4 -4.0658 2.3928 9.5499 H 1 KICJ 0.4000 + 18 H5 -2.8270 1.6273 11.7459 H 1 KICJ -0.0362 + 19 H6 -0.6660 3.2745 9.7591 H 1 KICJ 0.0000 + 20 H7 0.1445 2.1011 7.6846 H 1 KICJ 0.0000 + 21 H8 1.2206 1.7515 9.0461 H 1 KICJ 0.0000 + 22 H9 -1.1023 -0.0877 4.8134 H 1 KICJ 0.0000 + 23 H10 0.2496 -0.2682 5.9477 H 1 KICJ 0.0000 + 24 H11 -1.0276 -1.5264 5.8503 H 1 KICJ 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 5 1 + 4 1 18 1 + 5 3 9 1 + 6 4 10 1 + 7 4 17 1 + 8 5 11 1 + 9 6 8 1 + 10 6 12 1 + 11 7 8 1 + 12 7 13 1 + 13 8 9 1 + 14 8 14 1 + 15 9 10 1 + 16 9 15 1 + 17 10 11 1 + 18 10 16 1 + 19 11 12 1 + 20 11 19 1 + 21 12 20 1 + 22 12 21 1 + 23 13 22 1 + 24 13 23 1 + 25 13 24 1 +@SUBSTRUCTURE + 1 KICJ 1 +@COMMENT +COMMENT BETA-D-RIBOPYRANOSYL 2,3,4-BICYCLOPHOSPHITE +@MOLECULE +KIGKIU + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.5448 4.0353 1.8143 S.3 1 UNCH -0.1955 + 2 P1 3.9559 6.1167 1.9741 P 1 UNCH 0.4272 + 3 CL1 2.5868 6.6329 3.4794 CL 1 UNCH -0.2112 + 4 N1 3.1211 6.4695 0.5895 N.3 1 UNCH -0.6220 + 5 C1 2.2867 5.5101 -0.0111 C.2 1 UNCH 0.1000 + 6 C2 1.4639 5.7764 -1.1014 C.2 1 UNCH -0.1500 + 7 C3 0.7214 4.7376 -1.6695 C.2 1 UNCH -0.1500 + 8 C4 0.8207 3.4380 -1.1617 C.2 1 UNCH -0.1500 + 9 C5 1.6700 3.1669 -0.0877 C.2 1 UNCH -0.1500 + 10 C6 2.4033 4.2074 0.4723 C.2 1 UNCH 0.1015 + 11 H1 2.7712 7.4148 0.4716 H 1 UNCH 0.4000 + 12 H2 1.3934 6.7776 -1.5147 H 1 UNCH 0.1500 + 13 H3 0.0681 4.9386 -2.5154 H 1 UNCH 0.1500 + 14 H4 0.2416 2.6345 -1.6107 H 1 UNCH 0.1500 + 15 H5 1.7578 2.1560 0.2986 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 2 3 1 + 4 2 4 1 + 5 4 5 1 + 6 4 11 1 + 7 5 6 2 + 8 5 10 1 + 9 6 7 1 + 10 6 12 1 + 11 7 8 2 + 12 7 13 1 + 13 8 9 1 + 14 8 14 1 + 15 9 10 2 + 16 9 15 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-CHLORO-1,3,2-BENZATHIAPHOSPHOLE +@MOLECULE +KIKVUV + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.2020 3.6553 7.2592 C.2 1 UNCH -0.0280 + 2 C2 0.9950 4.2999 7.4576 C.2 1 UNCH 0.1900 + 3 C3 0.6237 5.2700 6.5406 C.2 1 UNCH 0.5000 + 4 N1 1.3709 5.6175 5.4667 N.2 1 UNCH -0.6200 + 5 C4 2.5451 4.9619 5.3125 C.2 1 UNCH 0.5000 + 6 C5 2.9990 3.9785 6.1766 C.2 1 UNCH 0.1900 + 7 N2 2.6199 2.6363 8.1686 N.2 1 UNCH 0.6610 + 8 O1 2.3005 1.4133 7.9759 O.3 1 UNCH -0.6330 + 9 F1 0.2206 3.9962 8.5064 F 1 UNCH -0.1900 + 10 F2 -0.5415 5.9097 6.7115 F 1 UNCH -0.1900 + 11 F3 3.3000 5.2937 4.2560 F 1 UNCH -0.1900 + 12 F4 4.1714 3.3626 5.9811 F 1 UNCH -0.1900 + 13 N2B 3.3374 3.0167 9.1957 N.2 1 UNCH 0.6610 + 14 C1B 3.7553 1.9977 10.1051 C.2 1 UNCH -0.0280 + 15 O1B 3.6567 4.2397 9.3884 O.3 1 UNCH -0.6330 + 16 C2B 4.9622 1.3531 9.9067 C.2 1 UNCH 0.1900 + 17 C5B 2.9582 1.6745 11.1877 C.2 1 UNCH 0.1900 + 18 C3B 5.3335 0.3830 10.8237 C.2 1 UNCH 0.5000 + 19 F1B 5.7367 1.6568 8.8579 F 1 UNCH -0.1900 + 20 C4B 3.4122 0.6911 12.0518 C.2 1 UNCH 0.5000 + 21 F4B 1.7859 2.2904 11.3832 F 1 UNCH -0.1900 + 22 N1B 4.5863 0.0355 11.8976 N.2 1 UNCH -0.6200 + 23 F2B 6.4987 -0.2567 10.6528 F 1 UNCH -0.1900 + 24 F3B 2.6572 0.3593 13.1083 F 1 UNCH -0.1900 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 2 + 4 2 9 1 + 5 2 3 1 + 6 3 10 1 + 7 3 4 2 + 8 4 5 1 + 9 5 11 1 + 10 5 6 2 + 11 6 12 1 + 12 7 13 2 + 13 7 8 1 + 14 13 15 1 + 15 13 14 1 + 16 14 17 1 + 17 14 16 2 + 18 16 19 1 + 19 16 18 1 + 20 17 21 1 + 21 17 20 2 + 22 18 23 1 + 23 18 22 2 + 24 20 24 1 + 25 20 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-1,2-BIS(2,3,5,6-TETRAFLUORO-4-PYRIDYL)DIAZENE 1,2-DIOXI +@MOLECULE +KIMLEX01 + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.5128 1.5204 0.6219 C.3 1 KIML 0.9474 + 2 O1 2.5782 2.2614 0.7558 O.3 1 KIML -0.9274 + 3 F1 0.3787 2.2491 0.7584 F 1 KIML -0.3400 + 4 F2 1.4719 0.5342 1.5501 F 1 KIML -0.3400 + 5 F3 1.4671 0.9289 -0.5963 F 1 KIML -0.3400 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 +@SUBSTRUCTURE + 1 KIML 1 +@COMMENT +COMMENT CESIUM TRIFLUORORTHOCARBONATE (AT -100 DEG.C, MONOCLINIC FO +@MOLECULE +KINKUN + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.5563 3.0245 8.0957 O.3 1 UNCH -0.2590 + 2 N1 4.9063 3.0098 7.6953 N.3 1 UNCH -0.4901 + 3 C1 5.7405 3.8594 8.5633 C.3 1 UNCH 0.5073 + 4 C2 5.4473 3.5325 10.0027 C.2 1 UNCH -0.2882 + 5 C3 4.3998 2.7678 10.3523 C.2 1 UNCH -0.2882 + 6 C4 3.4439 2.2585 9.3095 C.3 1 UNCH 0.4182 + 7 C5 5.1967 2.7953 6.3545 C.2 1 UNCH -0.0500 + 8 C6 4.5460 2.1750 5.3485 C.2 1 UNCH 0.1660 + 9 C7 5.2031 2.0992 4.0782 C.1 1 UNCH 0.4921 + 10 N2 5.7504 2.0601 3.0545 N.1 1 UNCH -0.5571 + 11 S1 3.0230 1.3508 5.5587 S.3 1 UNCH -0.3310 + 12 C8 1.7965 2.4739 4.7579 C.3 1 UNCH 0.2300 + 13 C9 1.9320 2.4294 3.2305 C.3 1 UNCH 0.0000 + 14 C10 1.9122 3.9183 5.2610 C.3 1 UNCH 0.0000 + 15 C11 0.4109 1.9264 5.1449 C.3 1 UNCH 0.0000 + 16 H1 5.5408 4.9184 8.3670 H 1 UNCH 0.0000 + 17 H2 6.8009 3.6623 8.3690 H 1 UNCH 0.0000 + 18 H3 6.1278 3.9134 10.7566 H 1 UNCH 0.1500 + 19 H4 4.2185 2.5045 11.3883 H 1 UNCH 0.1500 + 20 H5 2.4164 2.3773 9.6667 H 1 UNCH 0.0000 + 21 H6 3.6151 1.1970 9.0995 H 1 UNCH 0.0000 + 22 H7 6.1779 3.2139 6.1276 H 1 UNCH 0.1500 + 23 H8 1.9055 1.4026 2.8479 H 1 UNCH 0.0000 + 24 H9 1.1068 2.9726 2.7541 H 1 UNCH 0.0000 + 25 H10 2.8548 2.9031 2.8836 H 1 UNCH 0.0000 + 26 H11 1.1289 4.5441 4.8162 H 1 UNCH 0.0000 + 27 H12 2.8694 4.3764 4.9917 H 1 UNCH 0.0000 + 28 H13 1.7909 3.9817 6.3474 H 1 UNCH 0.0000 + 29 H14 0.2583 1.9356 6.2310 H 1 UNCH 0.0000 + 30 H15 0.2629 0.9000 4.7881 H 1 UNCH 0.0000 + 31 H16 -0.3861 2.5373 4.7038 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 1 + 4 2 7 1 + 5 3 4 1 + 6 3 16 1 + 7 3 17 1 + 8 4 5 2 + 9 4 18 1 + 10 5 6 1 + 11 5 19 1 + 12 6 20 1 + 13 6 21 1 + 14 7 8 2 + 15 7 22 1 + 16 8 9 1 + 17 8 11 1 + 18 9 10 3 + 19 11 12 1 + 20 12 13 1 + 21 12 14 1 + 22 12 15 1 + 23 13 23 1 + 24 13 24 1 + 25 13 25 1 + 26 14 26 1 + 27 14 27 1 + 28 14 28 1 + 29 15 29 1 + 30 15 30 1 + 31 15 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(T-BUTYLTHIO)-3-(3,6-DIHYDRO-2H-1,2-OXAZIN-2-YL)ACRYLONIT +@MOLECULE +KINTUW + 34 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.5382 2.0403 1.7063 N.3 1 KINT -0.8100 + 2 N2 -1.0340 2.4688 2.0117 N.1 1 KINT 0.1043 + 3 C1 1.8807 3.2373 2.2790 C.3 1 KINT 0.2700 + 4 C2 0.8455 3.8803 1.3424 C.3 1 KINT 0.0000 + 5 C3 -0.2597 2.9277 0.8967 C.3 1 KINT 0.2657 + 6 C4 -1.6726 2.0850 2.9164 C.1 1 KINT -0.3700 + 7 H1 2.6306 3.9876 2.5630 H 1 KINT 0.0000 + 8 H2 1.3554 2.9810 3.2049 H 1 KINT 0.0000 + 9 H3 0.3928 4.7300 1.8692 H 1 KINT 0.0000 + 10 H4 1.3349 4.2975 0.4561 H 1 KINT 0.0000 + 11 H5 0.1461 2.0609 0.3663 H 1 KINT 0.0000 + 12 H6 -0.9322 3.4477 0.2050 H 1 KINT 0.0000 + 13 C1A 3.1542 1.2316 2.7830 C.3 1 KINT 0.2700 + 14 C1B 3.5658 2.4450 0.7197 C.3 1 KINT 0.2700 + 15 C2A 2.1426 0.3943 3.5816 C.3 1 KINT 0.0000 + 16 H1A 3.7181 1.8754 3.4712 H 1 KINT 0.0000 + 17 H2A 3.8871 0.5324 2.3670 H 1 KINT 0.0000 + 18 C2B 3.9713 1.3198 -0.2456 C.3 1 KINT 0.0000 + 19 H1B 4.4598 2.8256 1.2316 H 1 KINT 0.0000 + 20 H2B 3.2026 3.2752 0.1051 H 1 KINT 0.0000 + 21 C3A 1.3120 -0.5546 2.7230 C.3 1 KINT 0.2657 + 22 H3A 2.6985 -0.1916 4.3247 H 1 KINT 0.0000 + 23 H4A 1.4680 1.0439 4.1490 H 1 KINT 0.0000 + 24 C3B 2.8035 0.7263 -1.0275 C.3 1 KINT 0.2657 + 25 H3B 4.7038 1.7278 -0.9538 H 1 KINT 0.0000 + 26 H4B 4.4840 0.5162 0.2934 H 1 KINT 0.0000 + 27 N2A 2.1380 -1.5293 2.0741 N.1 1 KINT 0.1043 + 28 H5A 0.7397 -0.0131 1.9637 H 1 KINT 0.0000 + 29 H6A 0.5925 -1.0848 3.3572 H 1 KINT 0.0000 + 30 N2B 2.1889 1.7073 -1.8721 N.1 1 KINT 0.1043 + 31 H5B 2.0442 0.3074 -0.3603 H 1 KINT 0.0000 + 32 H6B 3.1669 -0.0904 -1.6616 H 1 KINT 0.0000 + 33 C4A 2.8041 -2.3297 1.5363 C.1 1 KINT -0.3700 + 34 C4B 1.6767 2.5020 -2.5648 C.1 1 KINT -0.3700 +@BOND + 1 1 14 1 + 2 1 13 1 + 3 1 3 1 + 4 2 6 3 + 5 2 5 1 + 6 3 8 1 + 7 3 7 1 + 8 3 4 1 + 9 4 10 1 + 10 4 9 1 + 11 4 5 1 + 12 5 12 1 + 13 5 11 1 + 14 13 17 1 + 15 13 16 1 + 16 13 15 1 + 17 14 20 1 + 18 14 19 1 + 19 14 18 1 + 20 15 23 1 + 21 15 22 1 + 22 15 21 1 + 23 18 26 1 + 24 18 25 1 + 25 18 24 1 + 26 21 29 1 + 27 21 28 1 + 28 21 27 1 + 29 24 32 1 + 30 24 31 1 + 31 24 30 1 + 32 27 33 3 + 33 30 34 3 +@SUBSTRUCTURE + 1 KINT 1 +@COMMENT +COMMENT 3,3',3''-NITRILOTRIPROPYLISOCYANIDE (AT -105DEG.C) TALC +@MOLECULE +KINWEJ + 39 43 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.1746 7.6207 2.9594 C.3 1 KINW 0.0000 + 2 C2 5.5829 7.2140 3.4320 C.3 1 KINW 0.1080 + 3 C3 6.5434 6.4513 2.5761 C.2 1 KINW -0.1080 + 4 C4 6.8847 5.1976 2.1271 C.2 1 KINW -0.1500 + 5 C5 8.0150 5.0955 1.3123 C.2 1 KINW -0.1500 + 6 C6 8.7757 6.2365 0.9907 C.2 1 KINW -0.1500 + 7 C7 8.4177 7.4941 1.4820 C.2 1 KINW -0.1500 + 8 C8 7.2907 7.5664 2.2666 C.2 1 KINW -0.1080 + 9 C9 6.4400 8.4861 3.0866 C.3 1 KINW 0.1080 + 10 C10 5.3934 9.4402 2.4760 C.3 1 KINW 0.0000 + 11 C11 4.8346 9.0088 1.1042 C.3 1 KINW 0.0610 + 12 C12 5.8260 8.8683 -0.0185 C.2 1 KINW 0.5690 + 13 O1 6.6452 9.7498 -0.2751 O.2 1 KINW -0.5700 + 14 N1 5.7160 7.7460 -0.7988 N.3 1 KINW -0.3680 + 15 N2 5.0248 6.6086 -0.5012 N.2 1 KINW -0.5120 + 16 C13 4.2728 6.6012 0.5511 C.2 1 KINW 0.5390 + 17 C14 3.9996 7.7754 1.4344 C.3 1 KINW 0.0610 + 18 C15 4.1826 9.1083 3.3735 C.3 1 KINW 0.0000 + 19 O2 3.5669 5.5095 0.9439 O.3 1 KINW -0.4300 + 20 C16 3.7137 4.3323 0.1350 C.3 1 KINW 0.2800 + 21 C17 2.9289 3.2127 0.7901 C.3 1 KINW 0.0000 + 22 H1 3.3850 7.0288 3.4294 H 1 KINW 0.0000 + 23 H2 5.5971 6.9574 4.4999 H 1 KINW 0.0000 + 24 H3 6.3017 4.3238 2.3931 H 1 KINW 0.1500 + 25 H4 8.3162 4.1250 0.9257 H 1 KINW 0.1500 + 26 H5 9.6550 6.1353 0.3592 H 1 KINW 0.1500 + 27 H6 9.0007 8.3786 1.2498 H 1 KINW 0.1500 + 28 H7 6.9333 8.9286 3.9624 H 1 KINW 0.0000 + 29 H8 5.7061 10.4869 2.5092 H 1 KINW 0.0000 + 30 H9 4.1418 9.7936 0.7632 H 1 KINW 0.0000 + 31 H10 6.3981 7.6579 -1.5458 H 1 KINW 0.3700 + 32 H11 2.9446 8.0291 1.2468 H 1 KINW 0.0000 + 33 H12 4.3854 9.2562 4.4402 H 1 KINW 0.0000 + 34 H13 3.2700 9.6462 3.0953 H 1 KINW 0.0000 + 35 H14 3.3164 4.5263 -0.8673 H 1 KINW 0.0000 + 36 H15 4.7699 4.0500 0.0681 H 1 KINW 0.0000 + 37 H16 3.0054 2.2901 0.2080 H 1 KINW 0.0000 + 38 H17 1.8726 3.4856 0.8839 H 1 KINW 0.0000 + 39 H18 3.3003 3.0240 1.8029 H 1 KINW 0.0000 +@BOND + 1 1 22 1 + 2 1 18 1 + 3 1 17 1 + 4 1 2 1 + 5 2 23 1 + 6 2 9 1 + 7 2 3 1 + 8 3 8 1 + 9 3 4 2 + 10 4 24 1 + 11 4 5 1 + 12 5 25 1 + 13 5 6 2 + 14 6 26 1 + 15 6 7 1 + 16 7 27 1 + 17 7 8 2 + 18 8 9 1 + 19 9 28 1 + 20 9 10 1 + 21 10 29 1 + 22 10 18 1 + 23 10 11 1 + 24 11 30 1 + 25 11 17 1 + 26 11 12 1 + 27 12 14 am + 28 12 13 2 + 29 14 31 1 + 30 14 15 1 + 31 15 16 2 + 32 16 19 1 + 33 16 17 1 + 34 17 32 1 + 35 18 34 1 + 36 18 33 1 + 37 19 20 1 + 38 20 36 1 + 39 20 35 1 + 40 20 21 1 + 41 21 39 1 + 42 21 38 1 + 43 21 37 1 +@SUBSTRUCTURE + 1 KINW 1 +@COMMENT +COMMENT 3-ETHOXY-BENZO(J)-4,5-DIAZATETRACYCLO(6.4.1.0.0-9,12-)TRIDE +@MOLECULE +KINWIN + 19 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.7839 -1.2623 9.1457 C.2 1 UNCH 0.6590 + 2 O1 -0.8078 -1.5805 10.3271 O.2 1 UNCH -0.5700 + 3 O2 -0.9291 -2.1834 8.1789 O.3 1 UNCH -0.6500 + 4 C2 -0.5315 0.1607 8.6419 C.3 1 UNCH 0.5640 + 5 N1 -0.3882 1.0745 9.8219 N.3 1 UNCH -0.8530 + 6 C3 -1.6583 0.6265 7.7046 C.3 1 UNCH 0.0000 + 7 C4 -1.3185 1.8874 6.9138 C.3 1 UNCH 0.2340 + 8 F1 -0.0995 1.6973 6.3274 F 1 UNCH -0.3400 + 9 C5 -1.2493 3.0504 7.9123 C.2 1 UNCH 0.9060 + 10 O3 -0.1751 3.1034 8.5973 O.2 1 UNCH -0.9000 + 11 O4 -2.3292 3.6584 8.1199 O.3 1 UNCH -0.9000 + 12 H1 -1.0589 -3.0433 8.6361 H 1 UNCH 0.5000 + 13 H2 0.4451 0.1596 8.1460 H 1 UNCH 0.0000 + 14 H3 -1.2818 1.3307 10.2531 H 1 UNCH 0.4500 + 15 H4 0.2471 0.7208 10.5394 H 1 UNCH 0.4500 + 16 H5 -0.0018 2.0019 9.4873 H 1 UNCH 0.4500 + 17 H6 -2.5909 0.7594 8.2679 H 1 UNCH 0.0000 + 18 H7 -1.8544 -0.1650 6.9707 H 1 UNCH 0.0000 + 19 H8 -2.0534 2.0853 6.1280 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 4 1 + 4 3 12 1 + 5 4 5 1 + 6 4 6 1 + 7 4 13 1 + 8 5 14 1 + 9 5 15 1 + 10 5 16 1 + 11 6 7 1 + 12 6 17 1 + 13 6 18 1 + 14 7 8 1 + 15 7 9 1 + 16 7 19 1 + 17 9 10 2 + 18 9 11 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT D-ERYTHRO-4-FLUOROGLUTAMIC ACID (FOR STEREOISOMER SEE KINWO +@MOLECULE +KIRCAP + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.4495 1.7184 9.3581 O.3 1 UNCH -0.5200 + 2 O2 2.6495 3.0245 8.0627 O.2 1 UNCH -0.5200 + 3 O3 0.9960 -2.9334 8.1345 O.3 1 UNCH -0.5200 + 4 O4 0.6253 -3.3831 6.0208 O.2 1 UNCH -0.5200 + 5 O5 0.5766 -3.2101 2.5822 O.3 1 UNCH -0.5200 + 6 O6 -0.1930 -1.6003 3.8454 O.2 1 UNCH -0.5200 + 7 O7 3.5068 -3.4110 5.4078 O.3 1 UNCH -0.5200 + 8 O8 2.8464 -4.3074 3.5274 O.2 1 UNCH -0.5200 + 9 O9 5.9912 -0.1571 5.1949 O.2 1 UNCH -0.5700 + 10 O10 5.6184 1.9294 4.3146 O.3 1 UNCH -0.4300 + 11 O11 2.3219 -0.1488 2.6609 O.3 1 UNCH -0.1800 + 12 O12 4.2876 -1.2912 3.2834 O.3 1 UNCH -0.1800 + 13 N1 2.0483 1.9691 8.3053 N.2 1 UNCH 0.9070 + 14 N2 1.0265 -2.6524 6.9317 N.2 1 UNCH 0.9070 + 15 N3 0.7328 -2.3399 3.4527 N.2 1 UNCH 0.7998 + 16 N4 2.8593 -3.3728 4.3429 N.2 1 UNCH 0.7998 + 17 N5 2.8864 -1.4990 2.8458 N.3 1 UNCH -0.4700 + 18 C1 2.1247 -2.0682 4.0385 C.3 1 UNCH 0.8939 + 19 C2 2.0684 -1.0649 5.2356 C.2 1 UNCH -0.1435 + 20 C3 1.5753 -1.3397 6.5424 C.2 1 UNCH 0.1330 + 21 C4 1.5709 -0.3452 7.5435 C.2 1 UNCH -0.1500 + 22 C5 2.0458 0.9383 7.2573 C.2 1 UNCH 0.1330 + 23 C6 2.5182 1.2554 5.9804 C.2 1 UNCH -0.1500 + 24 C7 2.5296 0.2749 4.9751 C.2 1 UNCH -0.1435 + 25 C8 3.0770 0.6397 3.5906 C.3 1 UNCH 0.4235 + 26 C9 4.4734 0.1284 3.3181 C.3 1 UNCH 0.3410 + 27 C10 5.4514 0.5769 4.3804 C.2 1 UNCH 0.6590 + 28 C11 6.5332 2.4523 5.2835 C.3 1 UNCH 0.2800 + 29 H1 1.1943 -0.5714 8.5427 H 1 UNCH 0.1500 + 30 H2 2.8782 2.2619 5.7626 H 1 UNCH 0.1500 + 31 H3 2.9416 1.7021 3.3658 H 1 UNCH 0.0000 + 32 H4 4.8460 0.4272 2.3313 H 1 UNCH 0.0000 + 33 H5 7.5264 2.0130 5.1487 H 1 UNCH 0.0000 + 34 H6 6.6069 3.5324 5.1299 H 1 UNCH 0.0000 + 35 H7 6.1599 2.2696 6.2960 H 1 UNCH 0.0000 +@BOND + 1 1 13 1 + 2 2 13 2 + 3 3 14 1 + 4 4 14 2 + 5 5 15 1 + 6 6 15 2 + 7 7 16 1 + 8 8 16 2 + 9 9 27 2 + 10 10 27 1 + 11 10 28 1 + 12 11 17 1 + 13 11 25 1 + 14 12 17 1 + 15 12 26 1 + 16 13 22 1 + 17 14 20 1 + 18 15 18 1 + 19 16 18 1 + 20 17 18 1 + 21 18 19 1 + 22 19 20 1 + 23 19 24 2 + 24 20 21 2 + 25 21 22 1 + 26 21 29 1 + 27 22 23 2 + 28 23 24 1 + 29 23 30 1 + 30 24 25 1 + 31 25 26 1 + 32 25 31 1 + 33 26 27 1 + 34 26 32 1 + 35 28 33 1 + 36 28 34 1 + 37 28 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 1,1,7,9-TETRANITRO-2,5-EPOXY-1,2,4,5-TETRAHYDRO-3,2- +@MOLECULE +KIRCOD + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 5.0771 4.3358 13.1726 CL 1 UNCH -0.0510 + 2 N1 5.0096 5.7939 12.1941 N.3 1 UNCH -0.2650 + 3 C1 3.7493 6.4708 12.4430 C.3 1 UNCH -0.0420 + 4 C2 3.9975 5.7803 11.1083 C.3 1 UNCH 0.1580 + 5 C3 4.3713 6.6476 9.9626 C.2 1 UNCH 0.7200 + 6 O1 3.8068 7.7078 9.7270 O.2 1 UNCH -0.5700 + 7 O2 5.4004 6.1205 9.2375 O.3 1 UNCH -0.4300 + 8 C4 5.7996 6.9312 8.1319 C.3 1 UNCH 0.2800 + 9 C5 3.2504 4.5259 10.8183 C.2 1 UNCH 0.6300 + 10 O3 2.0602 4.4318 11.0953 O.2 1 UNCH -0.5700 + 11 N2 3.9839 3.5196 10.2231 N.3 1 UNCH -0.7301 + 12 C6 3.4204 2.2113 10.0135 C.3 1 UNCH 0.3001 + 13 H1 3.0205 6.0335 13.1166 H 1 UNCH 0.1000 + 14 H2 3.7883 7.5533 12.4765 H 1 UNCH 0.1000 + 15 H3 6.6247 6.4261 7.6222 H 1 UNCH 0.0000 + 16 H4 6.1528 7.9070 8.4795 H 1 UNCH 0.0000 + 17 H5 4.9735 7.0465 7.4232 H 1 UNCH 0.0000 + 18 H6 4.9912 3.6284 10.1797 H 1 UNCH 0.3700 + 19 H7 4.0260 1.6867 9.2711 H 1 UNCH 0.0000 + 20 H8 2.3878 2.2929 9.6638 H 1 UNCH 0.0000 + 21 H9 3.4416 1.6664 10.9610 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 2 4 1 + 4 3 4 1 + 5 3 13 1 + 6 3 14 1 + 7 4 5 1 + 8 4 9 1 + 9 5 6 2 + 10 5 7 1 + 11 7 8 1 + 12 8 15 1 + 13 8 16 1 + 14 8 17 1 + 15 9 10 2 + 16 9 11 am + 17 11 12 1 + 18 11 18 1 + 19 12 19 1 + 20 12 20 1 + 21 12 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (-)-(1R,2R)-(E)-1-CHLORO-2-METHOXYCARBONYL-2-METHYLCARBAMOY +@MOLECULE +KITREK + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.2756 0.9316 2.7573 N.2 1 KITR -0.1790 + 2 C1 -0.2132 1.0009 4.0865 C.2 1 KITR 0.5210 + 3 N2 -0.1779 2.1324 4.8075 N.2 1 KITR -0.5670 + 4 C2 -0.0722 3.1729 3.9662 C.2 1 KITR 0.1054 + 5 C3 -0.3088 3.1942 2.5996 C.2 1 KITR 0.2272 + 6 C4 -0.4751 1.9666 1.9399 C.2 1 KITR 0.4610 + 7 N3 -0.5448 1.7956 0.5548 N.3 1 KITR -0.9000 + 8 N4 -0.1566 4.4763 2.1089 N.2 1 KITR -0.5653 + 9 C5 0.4381 5.1322 3.0872 C.2 1 KITR 0.0365 + 10 N5 0.6536 4.3180 4.1696 N.3 1 KITR 0.0476 + 11 C6 1.8346 4.3506 5.0256 C.3 1 KITR 0.2556 + 12 C7 2.9827 3.4948 4.4355 C.3 1 KITR 0.2800 + 13 O1 2.6790 2.0950 4.5226 O.3 1 KITR -0.5600 + 14 C8 3.6523 1.2549 3.8701 C.3 1 KITR 0.2800 + 15 P1 3.0215 0.6251 2.2597 P 1 KITR 1.1712 + 16 O2 1.6854 -0.0977 2.3545 O.3 1 KITR -0.9500 + 17 O3 4.1334 0.0427 1.4420 O.2 1 KITR -0.9500 + 18 O4 2.6909 2.0078 1.4889 O.3 1 KITR -0.7712 + 19 H1 0.2447 0.1221 2.3607 H 1 KITR 0.4570 + 20 H2 -0.0053 0.0710 4.6059 H 1 KITR 0.1500 + 21 H3 0.0266 1.0217 0.2212 H 1 KITR 0.4000 + 22 H4 -0.3306 2.6730 0.0789 H 1 KITR 0.4000 + 23 H5 0.8108 6.1476 3.0311 H 1 KITR 0.1500 + 24 H6 2.1422 5.3979 5.1129 H 1 KITR 0.0000 + 25 H7 1.5283 3.9847 6.0114 H 1 KITR 0.0000 + 26 H8 3.8934 3.6810 5.0156 H 1 KITR 0.0000 + 27 H9 3.1686 3.7715 3.3919 H 1 KITR 0.0000 + 28 H10 4.6021 1.7802 3.7238 H 1 KITR 0.0000 + 29 H11 3.8260 0.3876 4.5133 H 1 KITR 0.0000 + 30 H12 2.8960 1.8190 0.5514 H 1 KITR 0.5000 +@BOND + 1 1 19 1 + 2 1 6 2 + 3 1 2 am + 4 2 20 1 + 5 2 3 2 + 6 3 4 1 + 7 4 10 1 + 8 4 5 2 + 9 5 8 1 + 10 5 6 1 + 11 6 7 am + 12 7 22 1 + 13 7 21 1 + 14 8 9 2 + 15 9 23 1 + 16 9 10 am + 17 10 11 1 + 18 11 25 1 + 19 11 24 1 + 20 11 12 1 + 21 12 27 1 + 22 12 26 1 + 23 12 13 1 + 24 13 14 1 + 25 14 29 1 + 26 14 28 1 + 27 14 15 1 + 28 15 18 1 + 29 15 17 2 + 30 15 16 1 + 31 18 30 1 +@SUBSTRUCTURE + 1 KITR 1 +@COMMENT +COMMENT 9-(2'-PHOSPHONOMETHOXYETHYL)ADENINE (IN VIVO ANTIRETROVIRUS +@MOLECULE +KIYGAA + 20 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.0529 3.8871 1.9794 C.3 1 UNCH 0.2300 + 2 C2 0.7806 3.1732 1.6032 C.3 1 UNCH 1.0200 + 3 F1 0.9733 2.3128 0.5790 F 1 UNCH -0.3400 + 4 F2 0.3255 2.4251 2.6395 F 1 UNCH -0.3400 + 5 F3 -0.2141 4.0128 1.2512 F 1 UNCH -0.3400 + 6 C3 2.4806 4.6630 0.7647 C.3 1 UNCH 1.0200 + 7 F4 2.6660 3.8601 -0.3053 F 1 UNCH -0.3400 + 8 F5 3.6648 5.2804 0.9825 F 1 UNCH -0.3400 + 9 F6 1.5920 5.6153 0.4151 F 1 UNCH -0.3400 + 10 S1 1.7748 4.9509 3.4785 S.3 1 UNCH -0.2300 + 11 S2 3.6720 5.2692 4.2219 S.3 1 UNCH -0.1410 + 12 C4 4.1298 6.7905 3.5357 C.2 1 UNCH 0.5910 + 13 N1 3.3560 7.6914 3.0380 N.2 1 UNCH -0.8500 + 14 C5 5.6018 6.9604 3.7529 C.2 1 UNCH 0.4400 + 15 N2 5.9804 7.7548 4.8049 N.3 1 UNCH -0.8000 + 16 S3 6.6844 6.2831 2.6921 S.2 1 UNCH -0.3800 + 17 H1 2.8092 3.1379 2.2362 H 1 UNCH 0.0000 + 18 H2 2.3943 7.3338 3.0640 H 1 UNCH 0.4000 + 19 H3 6.9541 8.0238 4.8846 H 1 UNCH 0.3700 + 20 H4 5.2971 8.3207 5.2963 H 1 UNCH 0.3700 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 10 1 + 4 1 17 1 + 5 2 3 1 + 6 2 4 1 + 7 2 5 1 + 8 6 7 1 + 9 6 8 1 + 10 6 9 1 + 11 10 11 1 + 12 11 12 1 + 13 12 13 2 + 14 12 14 1 + 15 13 18 1 + 16 14 15 1 + 17 14 16 2 + 18 15 19 1 + 19 15 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6,6,6-TRIFLUORO-5-TRIFLUOROMETHYL-2-IMINO-1-THIO-3,4-DITHIA +@MOLECULE +KOBXOO + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.4692 0.4342 5.0406 O.2 1 KOBX -0.5700 + 2 O2 0.1941 2.5331 3.8066 O.3 1 KOBX -0.5200 + 3 O3 1.8965 3.0073 5.1035 O.2 1 KOBX -0.5200 + 4 N1 -1.5069 0.9922 7.2971 N.3 1 KOBX -0.4100 + 5 N2 -0.5693 1.6236 8.1329 N.3 1 KOBX -0.5200 + 6 N3 1.2133 3.2062 7.8540 N.3 1 KOBX -0.9000 + 7 N4 0.7569 2.5529 4.9070 N.2 1 KOBX 0.8356 + 8 C1 0.3034 2.3359 7.3118 C.2 1 KOBX 0.2000 + 9 C2 0.0528 2.0381 6.0225 C.2 1 KOBX 0.2188 + 10 C3 -1.0516 1.0812 5.9813 C.2 1 KOBX 0.6156 + 11 H1 -1.9710 0.1414 7.6019 H 1 KOBX 0.3700 + 12 H2 -0.9813 2.2420 8.8381 H 1 KOBX 0.4000 + 13 H3 1.6028 2.8569 8.7274 H 1 KOBX 0.4000 + 14 H4 1.9579 3.4620 7.1962 H 1 KOBX 0.4000 +@BOND + 1 1 10 2 + 2 2 7 1 + 3 3 7 2 + 4 4 11 1 + 5 4 10 am + 6 4 5 1 + 7 5 12 1 + 8 5 8 1 + 9 6 14 1 + 10 6 13 1 + 11 6 8 1 + 12 7 9 1 + 13 8 9 2 + 14 9 10 1 +@SUBSTRUCTURE + 1 KOBX 1 +@COMMENT +COMMENT 3-AMINO-4-NITRO-1,2-DIHYDRO-5-PYRAZOLONE +@MOLECULE +KOBYOP + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.7352 -0.1370 1.4817 N.3 1 UNCH 0.2996 + 2 N2 4.2983 0.7634 2.3833 N.2 1 UNCH -0.7068 + 3 C1 3.6547 -0.0350 3.2419 C.2 1 UNCH 0.4390 + 4 N3 3.6593 -1.3677 2.9398 N.2 1 UNCH -0.5653 + 5 C2 4.3500 -1.3989 1.8222 C.2 1 UNCH 0.0365 + 6 N4 2.2425 1.8374 5.9269 N.2 1 UNCH -0.3381 + 7 N5 1.8599 0.5574 6.2593 N.2 1 UNCH -0.3381 + 8 C3 2.3265 -0.2479 5.3309 C.2 1 UNCH 0.0365 + 9 N6 3.0113 0.4674 4.3877 N.3 1 UNCH 0.3802 + 10 C4 2.9287 1.7665 4.8077 C.2 1 UNCH 0.0365 + 11 H1 5.2756 0.1751 0.6816 H 1 UNCH 0.2700 + 12 H2 4.5955 -2.2724 1.2343 H 1 UNCH 0.1500 + 13 H3 2.2057 -1.3207 5.2881 H 1 UNCH 0.1500 + 14 H4 3.3748 2.5923 4.2728 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 am + 3 1 11 1 + 4 2 3 2 + 5 3 4 am + 6 3 9 am + 7 4 5 2 + 8 5 12 1 + 9 6 7 1 + 10 6 10 2 + 11 7 8 2 + 12 8 9 am + 13 8 13 1 + 14 9 10 am + 15 10 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,4'-BI(1,2,4-TRIAZOLYL) +@MOLECULE +KOBZEG + 39 42 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 0.7671 8.8067 7.6481 CL 1 UNCH -0.1400 + 2 CL2 1.5934 6.7698 5.2934 CL 1 UNCH -0.1400 + 3 C1 1.1963 7.1536 7.9387 C.2 1 UNCH 0.1544 + 4 C2 1.5407 6.3126 6.9628 C.2 1 UNCH 0.1544 + 5 C3 1.9045 4.9121 7.2662 C.2 1 UNCH 0.5412 + 6 O1 2.3270 4.1487 6.3977 O.2 1 UNCH -0.5700 + 7 C4 1.7290 4.3945 8.6739 C.2 1 UNCH 0.1144 + 8 C5 1.4021 5.2718 9.6413 C.2 1 UNCH 0.0794 + 9 C6 1.1700 6.7098 9.3523 C.2 1 UNCH 0.5412 + 10 O2 0.9515 7.5050 10.2614 O.2 1 UNCH -0.5700 + 11 N1 1.9715 3.0184 8.7545 N.3 1 UNCH -0.6600 + 12 C7 1.2717 4.8904 11.0064 C.1 1 UNCH 0.4921 + 13 N2 1.1471 4.5663 12.1137 N.1 1 UNCH -0.5571 + 14 N3 1.2495 2.1624 9.5948 N.3 1 UNCH 0.4632 + 15 N4 0.7680 0.7412 11.2034 N.2 1 UNCH -0.3381 + 16 N5 -0.3280 0.8554 10.3993 N.2 1 UNCH -0.3381 + 17 C8 1.7288 1.5168 10.7281 C.2 1 UNCH 0.1335 + 18 C9 3.0588 1.6660 11.3257 C.2 1 UNCH 0.3630 + 19 N6 3.9616 2.4263 10.6580 N.2 1 UNCH -0.6200 + 20 C10 5.1889 2.5609 11.2089 C.2 1 UNCH 0.1600 + 21 C11 5.5690 1.9741 12.4032 C.2 1 UNCH -0.1500 + 22 C12 4.6350 1.1993 13.0774 C.2 1 UNCH -0.1500 + 23 C13 3.3629 1.0405 12.5334 C.2 1 UNCH -0.1500 + 24 C14 -0.0498 1.6973 9.4188 C.2 1 UNCH 0.1335 + 25 C15 -0.9758 2.0431 8.3373 C.2 1 UNCH 0.3630 + 26 N7 -0.5323 2.9062 7.3901 N.2 1 UNCH -0.6200 + 27 C16 -1.3688 3.1871 6.3633 C.2 1 UNCH 0.1600 + 28 C17 -2.6480 2.6733 6.2470 C.2 1 UNCH -0.1500 + 29 C18 -3.0977 1.8092 7.2360 C.2 1 UNCH -0.1500 + 30 C19 -2.2515 1.4845 8.2936 C.2 1 UNCH -0.1500 + 31 H1 5.8849 3.1747 10.6442 H 1 UNCH 0.1500 + 32 H2 6.5677 2.1184 12.7999 H 1 UNCH 0.1500 + 33 H3 4.8893 0.7236 14.0203 H 1 UNCH 0.1500 + 34 H4 2.6186 0.4419 13.0510 H 1 UNCH 0.1500 + 35 H5 -0.9682 3.8555 5.6053 H 1 UNCH 0.1500 + 36 H6 -3.2775 2.9341 5.4030 H 1 UNCH 0.1500 + 37 H7 -4.0949 1.3804 7.1826 H 1 UNCH 0.1500 + 38 H8 -2.5850 0.7979 9.0673 H 1 UNCH 0.1500 + 39 H12 2.0555 2.6089 7.8162 H 1 UNCH 0.4000 +@BOND + 1 1 3 1 + 2 2 4 1 + 3 3 4 2 + 4 3 9 1 + 5 4 5 1 + 6 5 6 2 + 7 5 7 1 + 8 7 8 2 + 9 7 11 1 + 10 8 9 1 + 11 8 12 1 + 12 9 10 2 + 13 11 14 1 + 14 11 39 1 + 15 12 13 3 + 16 14 17 am + 17 14 24 am + 18 15 16 1 + 19 15 17 2 + 20 16 24 2 + 21 17 18 1 + 22 18 19 2 + 23 18 23 1 + 24 19 20 1 + 25 20 21 2 + 26 20 31 1 + 27 21 22 1 + 28 21 32 1 + 29 22 23 2 + 30 22 33 1 + 31 23 34 1 + 32 24 25 1 + 33 25 26 2 + 34 25 30 1 + 35 26 27 1 + 36 27 28 2 + 37 27 35 1 + 38 28 29 1 + 39 28 36 1 + 40 29 30 2 + 41 29 37 1 + 42 30 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-((3,5-BIS(2-PYRIDYL)-1,2,4-TRIAZOL-4-YL)AMINO)-5,6-DICHLO +@MOLECULE +KOCWUU + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.1700 -1.2244 9.3138 S.3 1 KOCW -0.0800 + 2 C1 5.1364 -0.3412 8.2198 C.2 1 KOCW -0.0360 + 3 C2 6.1609 0.3364 8.8506 C.2 1 KOCW 0.0190 + 4 C3 6.0821 0.1883 10.2730 C.2 1 KOCW -0.1500 + 5 C4 5.0369 -0.6226 10.6587 C.2 1 KOCW -0.1100 + 6 N1 4.8235 -0.4134 6.8500 N.3 1 KOCW 0.3792 + 7 C5 4.9374 0.5837 5.8794 C.2 1 KOCW -0.2366 + 8 C6 4.7652 -0.0045 4.6350 C.2 1 KOCW -0.1500 + 9 C7 4.3836 -1.3427 4.8362 C.2 1 KOCW -0.1500 + 10 C8 4.3673 -1.5516 6.1943 C.2 1 KOCW -0.3016 + 11 C9 7.2347 1.0238 8.1937 C.1 1 KOCW 0.5381 + 12 N2 8.1187 1.5419 7.6477 N.1 1 KOCW -0.5571 + 13 O1 4.9228 2.5622 7.1939 O.2 1 KOCW -0.5700 + 14 C10 5.1048 1.9998 6.1181 C.2 1 KOCW 0.5950 + 15 H1 6.7733 0.6367 10.9780 H 1 KOCW 0.1500 + 16 H2 4.7536 -0.9079 11.6632 H 1 KOCW 0.1500 + 17 H3 5.3790 2.5966 5.2304 H 1 KOCW 0.0600 + 18 H4 4.8259 0.5060 3.6810 H 1 KOCW 0.1500 + 19 H5 4.1272 -2.0739 4.0796 H 1 KOCW 0.1500 + 20 H6 4.1402 -2.4543 6.7461 H 1 KOCW 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 6 1 + 5 3 4 1 + 6 3 11 1 + 7 4 5 2 + 8 4 15 1 + 9 5 16 1 + 10 6 7 1 + 11 6 10 1 + 12 7 8 2 + 13 7 14 1 + 14 8 9 1 + 15 8 18 1 + 16 9 10 2 + 17 9 19 1 + 18 10 20 1 + 19 11 12 3 + 20 13 14 2 + 21 14 17 1 +@SUBSTRUCTURE + 1 KOCW 1 +@COMMENT +COMMENT 2-(2-FORMYL-1-PYRROLYL)-3-THIOPHENECARBONITRILE +@MOLECULE +KODFUE + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.4560 3.3287 0.9413 N.3 1 KOCW -0.6602 + 2 C1 3.0797 3.7859 0.7107 C.3 1 KOCW 0.3001 + 3 C2 3.0890 4.2574 -0.7480 C.3 1 KOCW 0.0000 + 4 C3 4.5128 4.7650 -0.9405 C.3 1 KOCW 0.0000 + 5 C4 5.3493 3.7647 -0.1387 C.3 1 KOCW 0.3001 + 6 C5 2.6826 4.9283 1.6463 C.3 1 KOCW 0.0000 + 7 C6 5.8009 2.5935 -1.0146 C.3 1 KOCW 0.0000 + 8 C7 4.9557 2.5873 1.9993 C.2 1 KOCW 0.5690 + 9 O1 6.1611 2.3292 2.0766 O.2 1 KOCW -0.5700 + 10 C8 3.9769 2.0551 3.0522 C.3 1 KOCW 0.2510 + 11 C9 4.1342 0.5311 3.1668 C.3 1 KOCW 0.0000 + 12 C10 2.9783 -0.1359 3.9021 C.3 1 KOCW 0.0000 + 13 I1 4.4781 3.0398 4.9166 I 1 KOCW -0.1900 + 14 H1 2.3846 2.9490 0.8318 H 1 KOCW 0.0000 + 15 H2 2.3356 5.0195 -0.9683 H 1 KOCW 0.0000 + 16 H3 2.9083 3.4060 -1.4155 H 1 KOCW 0.0000 + 17 H4 4.6098 5.7666 -0.5045 H 1 KOCW 0.0000 + 18 H5 4.7986 4.8312 -1.9945 H 1 KOCW 0.0000 + 19 H6 6.2312 4.2527 0.2921 H 1 KOCW 0.0000 + 20 H7 2.6255 4.5963 2.6850 H 1 KOCW 0.0000 + 21 H8 3.4022 5.7531 1.6091 H 1 KOCW 0.0000 + 22 H9 1.6972 5.3226 1.3765 H 1 KOCW 0.0000 + 23 H10 6.4080 1.8813 -0.4474 H 1 KOCW 0.0000 + 24 H11 4.9478 2.0398 -1.4212 H 1 KOCW 0.0000 + 25 H12 6.4074 2.9510 -1.8533 H 1 KOCW 0.0000 + 26 H13 2.9429 2.2903 2.7976 H 1 KOCW 0.0000 + 27 H14 5.0787 0.2642 3.6568 H 1 KOCW 0.0000 + 28 H15 4.1803 0.0994 2.1583 H 1 KOCW 0.0000 + 29 H16 3.1107 -1.2227 3.8996 H 1 KOCW 0.0000 + 30 H17 2.9178 0.1889 4.9445 H 1 KOCW 0.0000 + 31 H18 2.0236 0.0874 3.4152 H 1 KOCW 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 8 am + 4 2 3 1 + 5 2 6 1 + 6 2 14 1 + 7 3 4 1 + 8 3 15 1 + 9 3 16 1 + 10 4 5 1 + 11 4 17 1 + 12 4 18 1 + 13 5 7 1 + 14 5 19 1 + 15 6 20 1 + 16 6 21 1 + 17 6 22 1 + 18 7 23 1 + 19 7 24 1 + 20 7 25 1 + 21 8 9 2 + 22 8 10 1 + 23 10 11 1 + 24 10 13 1 + 25 10 26 1 + 26 11 12 1 + 27 11 27 1 + 28 11 28 1 + 29 12 29 1 + 30 12 30 1 + 31 12 31 1 +@SUBSTRUCTURE + 1 KOCW 1 +@COMMENT +COMMENT (2RS,5RS,2'SR)-TRANS-2,5-DIMETHYL-1-(1'-OXO-2'-IODOBUTYL)PY +@MOLECULE +KOFKIZ + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 8.9814 4.6849 8.3094 C.3 1 KOFK 0.5400 + 2 C2 10.0393 6.7639 7.6011 C.3 1 KOFK 0.5400 + 3 C3 11.0539 5.2045 6.0074 C.3 1 KOFK 0.2700 + 4 C4 10.9248 3.9512 6.8933 C.3 1 KOFK 0.2700 + 5 N1 9.5692 3.7266 7.3766 N.3 1 KOFK -0.5330 + 6 N2 9.8674 5.8049 8.7130 N.3 1 KOFK -0.3640 + 7 N3 11.1930 6.4547 6.7570 N.3 1 KOFK -0.5330 + 8 N4 8.6848 3.0600 6.5720 N.2 1 KOFK 1.0330 + 9 O1 9.1112 2.6567 5.4888 O.3 1 KOFK -0.5200 + 10 O2 7.5372 2.9355 7.0030 O.2 1 KOFK -0.5200 + 11 N5 9.4671 6.4075 9.8142 N.2 1 KOFK -0.0142 + 12 O3 9.6775 5.6963 10.8023 O.2 1 KOFK -0.1618 + 13 N6 12.4202 6.7083 7.3290 N.2 1 KOFK 1.0330 + 14 O4 13.3466 5.9572 7.0160 O.3 1 KOFK -0.5200 + 15 O5 12.4898 7.6919 8.0674 O.2 1 KOFK -0.5200 + 16 H1 8.0453 5.1149 7.9213 H 1 KOFK 0.0000 + 17 H2 8.6975 4.0985 9.1952 H 1 KOFK 0.0000 + 18 H3 10.1285 7.7971 7.9718 H 1 KOFK 0.0000 + 19 H4 9.1348 6.8121 6.9764 H 1 KOFK 0.0000 + 20 H5 10.1858 5.2858 5.3394 H 1 KOFK 0.0000 + 21 H6 11.8983 5.0725 5.3173 H 1 KOFK 0.0000 + 22 H7 11.6147 3.9981 7.7462 H 1 KOFK 0.0000 + 23 H8 11.2900 3.0826 6.3286 H 1 KOFK 0.0000 +@BOND + 1 1 17 1 + 2 1 16 1 + 3 1 6 1 + 4 1 5 1 + 5 2 19 1 + 6 2 18 1 + 7 2 7 1 + 8 2 6 1 + 9 3 21 1 + 10 3 20 1 + 11 3 7 1 + 12 3 4 1 + 13 4 23 1 + 14 4 22 1 + 15 4 5 1 + 16 5 8 1 + 17 6 11 1 + 18 7 13 1 + 19 8 10 2 + 20 8 9 1 + 21 11 12 2 + 22 13 15 2 + 23 13 14 1 +@SUBSTRUCTURE + 1 KOFK 1 +@COMMENT +COMMENT 1,5-DINITRO-3-NITROSO-1,3,5-TRIAZACYCLOHEPTANE +@MOLECULE +KOFMEX + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 10.5546 10.4458 2.7104 O.3 1 UNCH -0.2800 + 2 C1 11.6393 11.1078 3.1970 C.2 1 UNCH 0.5421 + 3 N1 11.4909 12.4115 3.2828 N.2 1 UNCH -0.5653 + 4 C2 10.2147 12.6218 2.8183 C.2 1 UNCH 0.0772 + 5 C3 9.6290 11.4257 2.4639 C.2 1 UNCH 0.0870 + 6 N2 12.7583 10.4252 3.5499 N.3 1 UNCH -0.4940 + 7 C4 12.8897 9.0782 3.4529 C.2 1 UNCH 0.7800 + 8 O2 12.0728 8.2634 3.0518 O.2 1 UNCH -0.5700 + 9 O3 14.1354 8.7434 3.8921 O.3 1 UNCH -0.4300 + 10 C5 14.4209 7.3392 3.8477 C.3 1 UNCH 0.2800 + 11 C6 15.8311 7.1272 4.3632 C.3 1 UNCH 0.0000 + 12 C7 8.3426 11.0054 1.9266 C.2 1 UNCH 0.0530 + 13 C8 7.3421 11.9488 1.6475 C.2 1 UNCH -0.1500 + 14 C9 8.0687 9.6521 1.6741 C.2 1 UNCH -0.1500 + 15 C10 6.1049 11.5503 1.1314 C.2 1 UNCH -0.1500 + 16 C11 6.8324 9.2534 1.1583 C.2 1 UNCH -0.1500 + 17 C12 5.8510 10.2030 0.8872 C.2 1 UNCH -0.1500 + 18 H1 9.7919 13.6149 2.7653 H 1 UNCH 0.1500 + 19 H2 13.5312 10.9621 3.9038 H 1 UNCH 0.3700 + 20 H3 13.7105 6.7969 4.4817 H 1 UNCH 0.0000 + 21 H4 14.3469 6.9790 2.8155 H 1 UNCH 0.0000 + 22 H5 16.0965 6.0664 4.3487 H 1 UNCH 0.0000 + 23 H6 16.5521 7.6807 3.7525 H 1 UNCH 0.0000 + 24 H7 15.9275 7.5020 5.3876 H 1 UNCH 0.0000 + 25 H8 7.5090 13.0079 1.8270 H 1 UNCH 0.1500 + 26 H9 8.8200 8.8900 1.8778 H 1 UNCH 0.1500 + 27 H10 5.3399 12.2933 0.9204 H 1 UNCH 0.1500 + 28 H11 6.6402 8.2002 0.9698 H 1 UNCH 0.1500 + 29 H12 4.8897 9.8927 0.4861 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 6 am + 5 3 4 1 + 6 4 5 2 + 7 4 18 1 + 8 5 12 1 + 9 6 7 am + 10 6 19 1 + 11 7 8 2 + 12 7 9 1 + 13 9 10 1 + 14 10 11 1 + 15 10 20 1 + 16 10 21 1 + 17 11 22 1 + 18 11 23 1 + 19 11 24 1 + 20 12 13 2 + 21 12 14 1 + 22 13 15 1 + 23 13 25 1 + 24 14 16 2 + 25 14 26 1 + 26 15 17 2 + 27 15 27 1 + 28 16 17 1 + 29 16 28 1 + 30 17 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ETHYL 5-PHENYL-2-OXAZOLECARBAMATE (TESTED FOR ALDOSE REDUCT +@MOLECULE +KOFNIC + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.5466 3.0665 1.8769 S.1 1 KOFN 1.0958 + 2 C1 5.9922 1.9979 2.1558 C.3 1 KOFN 0.1052 + 3 C2 6.4264 2.4954 3.5503 C.3 1 KOFN 0.3611 + 4 H1 6.9937 3.4328 3.4583 H 1 KOFN 0.0000 + 5 C3 3.9324 2.9972 3.5620 C.3 1 KOFN 0.3240 + 6 H2 3.2210 2.1859 3.7398 H 1 KOFN 0.0000 + 7 C4 3.7164 4.2835 4.3584 C.3 1 KOFN 0.0530 + 8 H3 2.9314 4.2351 5.1178 H 1 KOFN 0.0000 + 9 H4 3.6188 5.2035 3.7782 H 1 KOFN 0.0000 + 10 C5 5.1231 4.0328 4.9173 C.2 1 KOFN 0.5770 + 11 C6 7.3553 1.5269 4.2695 C.2 1 KOFN 0.6590 + 12 C7 5.5599 0.5209 2.1706 C.3 1 KOFN 0.0000 + 13 H5 4.8623 0.3104 2.9886 H 1 KOFN 0.0000 + 14 H6 6.4214 -0.1448 2.2889 H 1 KOFN 0.0000 + 15 H7 5.0486 0.2353 1.2457 H 1 KOFN 0.0000 + 16 C8 7.0781 2.2952 1.1099 C.3 1 KOFN 0.2556 + 17 H8 7.9947 1.7368 1.3356 H 1 KOFN 0.0000 + 18 H9 7.3581 3.3557 1.1092 H 1 KOFN 0.0000 + 19 C9 6.1136 1.9455 -2.3130 C.2 1 KOFN 0.0772 + 20 H10 5.7495 2.1762 -3.3036 H 1 KOFN 0.1500 + 21 C10 6.2417 2.7776 -1.2274 C.2 1 KOFN -0.3016 + 22 H11 6.0257 3.8255 -1.0773 H 1 KOFN 0.1500 + 23 N1 5.2065 2.8082 4.3068 N.3 1 KOFN -0.5851 + 24 N2 6.7225 1.9606 -0.2518 N.3 1 KOFN 0.3140 + 25 N3 6.9231 0.7144 -0.7094 N.2 1 KOFN -0.4180 + 26 N4 6.5358 0.6906 -1.9775 N.2 1 KOFN -0.2272 + 27 O1 3.6151 2.4095 0.9850 O.2 1 KOFN -0.6500 + 28 O2 5.0354 4.4001 1.5782 O.2 1 KOFN -0.6500 + 29 O3 5.9564 4.6621 5.5221 O.2 1 KOFN -0.5700 + 30 O4 8.4528 1.1859 3.8563 O.2 1 KOFN -0.5700 + 31 O5 6.8595 1.0027 5.4038 O.3 1 KOFN -0.6500 + 32 H12 7.5729 0.4310 5.7596 H 1 KOFN 0.5000 +@BOND + 1 1 28 2 + 2 1 27 2 + 3 1 5 1 + 4 1 2 1 + 5 2 16 1 + 6 2 12 1 + 7 2 3 1 + 8 3 23 1 + 9 3 11 1 + 10 3 4 1 + 11 5 23 1 + 12 5 7 1 + 13 5 6 1 + 14 7 10 1 + 15 7 9 1 + 16 7 8 1 + 17 10 29 2 + 18 10 23 am + 19 11 31 1 + 20 11 30 2 + 21 12 15 1 + 22 12 14 1 + 23 12 13 1 + 24 16 24 1 + 25 16 18 1 + 26 16 17 1 + 27 19 26 1 + 28 19 21 2 + 29 19 20 1 + 30 21 24 1 + 31 21 22 1 + 32 24 25 1 + 33 25 26 2 + 34 31 32 1 +@SUBSTRUCTURE + 1 KOFN 1 +@COMMENT +COMMENT TAZOBACTAM (EFFECTIVE INHIBITOR OF BACTERIAL BETA-LACTAMASE +@MOLECULE +KOHVEI + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.1711 1.0293 1.4702 S.1 1 UNCH 1.4927 + 2 O1 2.4292 -0.3031 0.8806 O.3 1 UNCH -0.2267 + 3 O2 4.4895 1.1471 0.8724 O.2 1 UNCH -0.6500 + 4 O3 3.0215 1.0273 2.9142 O.2 1 UNCH -0.6500 + 5 C1 2.3786 -0.8243 -3.0777 C.3 1 UNCH 0.2000 + 6 C2 2.3969 -0.6320 -1.6282 C.1 1 UNCH -0.2000 + 7 C3 2.4168 -0.4734 -0.4384 C.1 1 UNCH 0.0430 + 8 C4 -0.2497 5.6204 -0.5641 C.3 1 UNCH 0.1435 + 9 C5 2.1792 2.3833 0.8677 C.2 1 UNCH -0.0090 + 10 C6 0.8992 2.5713 1.3961 C.2 1 UNCH -0.1500 + 11 C7 0.1146 3.6277 0.9317 C.2 1 UNCH -0.1500 + 12 C8 0.6088 4.5037 -0.0450 C.2 1 UNCH -0.1435 + 13 C9 1.8929 4.2974 -0.5689 C.2 1 UNCH -0.1500 + 14 C10 2.6845 3.2436 -0.1096 C.2 1 UNCH -0.1500 + 15 H1 2.3344 0.1378 -3.5969 H 1 UNCH 0.0000 + 16 H2 3.2783 -1.3495 -3.4121 H 1 UNCH 0.0000 + 17 H3 1.5084 -1.4142 -3.3812 H 1 UNCH 0.0000 + 18 H4 0.5105 1.9076 2.1655 H 1 UNCH 0.1500 + 19 H5 -0.8844 3.7691 1.3400 H 1 UNCH 0.1500 + 20 H6 2.2852 4.9621 -1.3362 H 1 UNCH 0.1500 + 21 H7 3.6824 3.1031 -0.5193 H 1 UNCH 0.1500 + 22 H8 0.3641 6.4707 -0.8795 H 1 UNCH 0.0000 + 23 H9 -0.8389 5.2726 -1.4181 H 1 UNCH 0.0000 + 24 H10 -0.9312 5.9827 0.2128 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 2 + 4 1 9 1 + 5 2 7 1 + 6 5 6 1 + 7 5 15 1 + 8 5 16 1 + 9 5 17 1 + 10 6 7 3 + 11 8 12 1 + 12 8 22 1 + 13 8 23 1 + 14 8 24 1 + 15 9 10 2 + 16 9 14 1 + 17 10 11 1 + 18 10 18 1 + 19 11 12 2 + 20 11 19 1 + 21 12 13 1 + 22 13 14 2 + 23 13 20 1 + 24 14 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT PROPYNYL TOSYLATE +@MOLECULE +KOHVIM + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.2522 1.1530 5.3636 O.3 1 UNCH -0.1930 + 2 O2 -0.1259 3.4314 5.4238 O.2 1 UNCH -0.5700 + 3 C1 1.6539 1.2617 7.4689 C.1 1 UNCH -0.1770 + 4 C2 0.9880 1.2185 6.4710 C.1 1 UNCH 0.0430 + 5 C3 -0.2652 2.3274 4.9170 C.2 1 UNCH 0.6338 + 6 C4 -1.0608 2.1002 3.6772 C.2 1 UNCH 0.0862 + 7 C5 -1.6717 3.2094 3.0743 C.2 1 UNCH -0.1500 + 8 C6 -2.4285 3.0535 1.9112 C.2 1 UNCH -0.1500 + 9 C7 -2.5801 1.7899 1.3429 C.2 1 UNCH -0.1500 + 10 C8 -1.9766 0.6809 1.9347 C.2 1 UNCH -0.1500 + 11 C9 -1.2183 0.8322 3.0988 C.2 1 UNCH -0.1500 + 12 H1 2.2428 1.3117 8.3545 H 1 UNCH 0.1770 + 13 H2 -1.5605 4.2015 3.5089 H 1 UNCH 0.1500 + 14 H3 -2.8990 3.9186 1.4500 H 1 UNCH 0.1500 + 15 H4 -3.1696 1.6693 0.4371 H 1 UNCH 0.1500 + 16 H5 -2.0968 -0.3038 1.4889 H 1 UNCH 0.1500 + 17 H6 -0.7595 -0.0501 3.5381 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 5 2 + 4 3 4 3 + 5 3 12 1 + 6 5 6 1 + 7 6 7 2 + 8 6 11 1 + 9 7 8 1 + 10 7 13 1 + 11 8 9 2 + 12 8 14 1 + 13 9 10 1 + 14 9 15 1 + 15 10 11 2 + 16 10 16 1 + 17 11 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ETHYNYL BENZOATE +@MOLECULE +KOJGOF + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 6.5611 3.7877 0.0000 S.2 1 KOJG -0.3800 + 2 N1 3.9537 3.3363 0.7577 N.3 1 KOJG 0.5606 + 3 N2 2.7343 3.3105 0.1375 N.2 1 KOJG -0.7068 + 4 C1 5.0831 2.9346 0.0000 C.2 1 KOJG 0.3980 + 5 C2 1.8820 3.8649 1.0004 C.2 1 KOJG 0.1078 + 6 C3 2.5305 4.2906 2.1712 C.2 1 KOJG -0.1500 + 7 C4 3.8570 3.9506 2.0059 C.2 1 KOJG -0.3316 + 8 C5 0.4435 3.9727 0.6595 C.3 1 KOJG 0.1810 + 9 C6 4.9795 4.1085 2.9650 C.3 1 KOJG 0.1800 + 10 H1 2.0890 4.7674 3.0359 H 1 KOJG 0.1500 + 11 H2 -0.1220 4.4352 1.4748 H 1 KOJG 0.0000 + 12 H3 0.3064 4.5849 -0.2376 H 1 KOJG 0.0000 + 13 H4 0.0176 2.9817 0.4720 H 1 KOJG 0.0000 + 14 H5 4.5955 4.2415 3.9826 H 1 KOJG 0.0000 + 15 H6 5.5775 4.9922 2.7243 H 1 KOJG 0.0000 + 16 H7 5.6235 3.2239 2.9794 H 1 KOJG 0.0000 + 17 N1C 4.8662 1.7556 -0.7577 N.3 1 KOJG 0.5606 + 18 N2C 4.2339 0.7126 -0.1376 N.2 1 KOJG -0.7068 + 19 C4C 5.3497 1.3647 -2.0060 C.2 1 KOJG -0.3316 + 20 C2C 4.2877 -0.3027 -1.0004 C.2 1 KOJG 0.1078 + 21 C3C 4.9807 0.0460 -2.1713 C.2 1 KOJG -0.1500 + 22 C6C 6.0479 2.2578 -2.9650 C.3 1 KOJG 0.1800 + 23 C5C 3.6616 -1.6023 -0.6596 C.3 1 KOJG 0.1810 + 24 H1C 5.1728 -0.5748 -3.0359 H 1 KOJG 0.1500 + 25 H5C 5.9710 1.8587 -3.9826 H 1 KOJG 0.0000 + 26 H6C 7.1122 2.3336 -2.7243 H 1 KOJG 0.0000 + 27 H7C 5.6040 3.2578 -2.9794 H 1 KOJG 0.0000 + 28 H2C 3.7793 -2.3233 -1.4749 H 1 KOJG 0.0000 + 29 H3C 4.1232 -2.0272 0.2375 H 1 KOJG 0.0000 + 30 H4C 2.5905 -1.4754 -0.4721 H 1 KOJG 0.0000 +@BOND + 1 1 4 2 + 2 2 7 1 + 3 2 4 1 + 4 2 3 1 + 5 3 5 2 + 6 4 17 1 + 7 5 8 1 + 8 5 6 1 + 9 6 10 1 + 10 6 7 2 + 11 7 9 1 + 12 8 13 1 + 13 8 12 1 + 14 8 11 1 + 15 9 16 1 + 16 9 15 1 + 17 9 14 1 + 18 17 19 1 + 19 17 18 1 + 20 18 20 2 + 21 19 22 1 + 22 19 21 2 + 23 20 23 1 + 24 20 21 1 + 25 21 24 1 + 26 22 27 1 + 27 22 26 1 + 28 22 25 1 + 29 23 30 1 + 30 23 29 1 + 31 23 28 1 +@SUBSTRUCTURE + 1 KOJG 1 +@COMMENT +COMMENT N,N'-THIOCARBONYL-BIS(3,5-DIMETHYLPYRAZOLE) +@MOLECULE +KOJKID + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.7253 0.6835 -0.0145 N.3 1 UNCH -0.8100 + 2 C1 4.2347 -0.5927 0.5337 C.3 1 UNCH 0.4700 + 3 C2 4.5299 -0.8045 1.9599 C.1 1 UNCH -0.2000 + 4 C3 4.9407 -0.8697 3.0886 C.1 1 UNCH -0.2000 + 5 C4 6.1912 0.8018 -0.0978 C.3 1 UNCH 0.4700 + 6 C5 4.0925 1.8476 0.5957 C.3 1 UNCH 0.2700 + 7 H1 4.6578 -1.4179 -0.0525 H 1 UNCH 0.0000 + 8 H2 3.1506 -0.6526 0.3767 H 1 UNCH 0.0000 + 9 H3 6.4421 1.6934 -0.6857 H 1 UNCH 0.0000 + 10 H4 6.5844 -0.0447 -0.6743 H 1 UNCH 0.0000 + 11 H5 4.3832 2.7625 0.0671 H 1 UNCH 0.0000 + 12 H6 3.0020 1.7780 0.5130 H 1 UNCH 0.0000 + 13 H7 4.3443 1.9737 1.6540 H 1 UNCH 0.0000 + 14 C4B 5.6280 -0.8020 4.3882 C.3 1 UNCH 0.4700 + 15 C3B 6.8786 0.8695 1.2018 C.1 1 UNCH -0.2000 + 16 N1B 7.0939 -0.6837 4.3049 N.3 1 UNCH -0.8100 + 17 H3B 5.3772 -1.6936 4.9761 H 1 UNCH 0.0000 + 18 H4B 5.2349 0.0445 4.9647 H 1 UNCH 0.0000 + 19 C2B 7.2893 0.8043 2.3305 C.1 1 UNCH -0.2000 + 20 C1B 7.5845 0.5925 3.7567 C.3 1 UNCH 0.4700 + 21 C5B 7.7267 -1.8478 3.6947 C.3 1 UNCH 0.2700 + 22 H1B 7.1615 1.4177 4.3429 H 1 UNCH 0.0000 + 23 H2B 8.6686 0.6524 3.9137 H 1 UNCH 0.0000 + 24 H5B 7.4360 -2.7627 4.2233 H 1 UNCH 0.0000 + 25 H6B 8.8173 -1.7782 3.7775 H 1 UNCH 0.0000 + 26 H7B 7.4750 -1.9739 2.6364 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 2 3 1 + 5 2 7 1 + 6 2 8 1 + 7 3 4 3 + 8 4 14 1 + 9 5 9 1 + 10 5 10 1 + 11 5 15 1 + 12 6 11 1 + 13 6 12 1 + 14 6 13 1 + 15 14 16 1 + 16 14 17 1 + 17 14 18 1 + 18 15 19 3 + 19 16 20 1 + 20 16 21 1 + 21 19 20 1 + 22 20 22 1 + 23 20 23 1 + 24 21 24 1 + 25 21 25 1 + 26 21 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N,N'-DIMETHYL-1,6-DIAZACYCLODECA-3,8-DIYNE +@MOLECULE +KOJZOY + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 9.7802 0.5608 1.5980 N.3 1 KOJZ -0.4691 + 2 C1 8.6607 1.5009 1.5484 C.3 1 KOJZ 0.3001 + 3 C2 11.0623 1.1064 1.6393 C.2 1 KOJZ 0.6900 + 4 O1 11.2606 2.3223 1.6622 O.2 1 KOJZ -0.5700 + 5 N2 12.1108 0.2024 1.6402 N.3 1 KOJZ -0.4201 + 6 C3 13.4603 0.7384 1.6410 C.3 1 KOJZ 0.3001 + 7 C4 11.9567 -1.1553 1.4273 C.2 1 KOJZ 0.6156 + 8 O2 12.9121 -1.8968 1.1875 O.2 1 KOJZ -0.5700 + 9 C5 10.5613 -1.6810 1.5057 C.2 1 KOJZ 0.3084 + 10 N3 10.4454 -3.0157 1.4544 N.2 1 KOJZ -0.1322 + 11 O3 9.7643 -3.5151 2.3596 O.2 1 KOJZ -0.1618 + 12 C6 9.5210 -0.8098 1.5768 C.2 1 KOJZ 0.2090 + 13 N4 8.1878 -1.2409 1.6135 N.3 1 KOJZ -0.9000 + 14 H1 8.9883 2.5323 1.3919 H 1 KOJZ 0.0000 + 15 H2 8.1185 1.4579 2.4985 H 1 KOJZ 0.0000 + 16 H3 14.1766 0.0031 2.0194 H 1 KOJZ 0.0000 + 17 H4 13.5211 1.6368 2.2627 H 1 KOJZ 0.0000 + 18 H5 8.1117 -2.2452 1.7925 H 1 KOJZ 0.4000 + 19 H6 7.6423 -0.7289 2.3012 H 1 KOJZ 0.4000 + 20 H2G 7.9932 1.2381 0.7211 H 1 KOJZ 0.0000 + 21 H4G 13.7281 1.0002 0.6124 H 1 KOJZ 0.0000 +@BOND + 1 1 12 1 + 2 1 3 am + 3 1 2 1 + 4 2 20 1 + 5 2 15 1 + 6 2 14 1 + 7 3 5 am + 8 3 4 2 + 9 5 7 am + 10 5 6 1 + 11 6 21 1 + 12 6 17 1 + 13 6 16 1 + 14 7 9 1 + 15 7 8 2 + 16 9 12 2 + 17 9 10 1 + 18 10 11 2 + 19 12 13 1 + 20 13 19 1 + 21 13 18 1 +@SUBSTRUCTURE + 1 KOJZ 1 +@COMMENT +COMMENT 6-AMINO-1,3-DIMETHYL-5-NITROSOURACIL MONOHYDRATE +@MOLECULE +KOKMIG + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -1.0486 0.0431 8.5819 P 1 UNCH 1.2472 + 2 O1 -0.1633 -1.1480 8.3614 O.2 1 UNCH -0.7000 + 3 O2 -0.2266 1.3942 8.9218 O.3 1 UNCH -0.5512 + 4 N1 -2.3227 0.0088 9.5960 N.3 1 UNCH -0.7260 + 5 N2 -4.5858 0.7503 9.8199 N.2 1 UNCH -0.5560 + 6 N3 -4.5941 0.0404 12.2104 N.1 1 UNCH -0.5571 + 7 N4 -3.3665 0.9160 7.8173 N.3 1 UNCH -0.7882 + 8 C1 -2.3992 -0.7732 6.2843 C.3 1 UNCH 0.0000 + 9 C2 -1.5299 1.5933 6.2764 C.3 1 UNCH 0.0000 + 10 C3 -2.1253 0.4757 7.1287 C.3 1 UNCH 0.3691 + 11 C4 -4.5382 1.2800 7.0362 C.3 1 UNCH 0.3691 + 12 C5 -3.4922 0.5616 9.1534 C.2 1 UNCH 0.5500 + 13 C6 -4.6150 0.3763 11.1012 C.1 1 UNCH 0.6631 + 14 C7 1.1392 1.4474 8.5425 C.3 1 UNCH 0.2800 + 15 C8 1.6283 2.8727 8.6924 C.3 1 UNCH 0.0000 + 16 H1 -2.2108 -0.1899 10.5775 H 1 UNCH 0.4000 + 17 H2 -1.4684 -1.1623 5.8582 H 1 UNCH 0.0000 + 18 H3 -3.0875 -0.5637 5.4589 H 1 UNCH 0.0000 + 19 H4 -2.8399 -1.5703 6.8932 H 1 UNCH 0.0000 + 20 H5 -1.4269 2.5195 6.8515 H 1 UNCH 0.0000 + 21 H6 -2.1478 1.8177 5.4012 H 1 UNCH 0.0000 + 22 H7 -0.5361 1.3125 5.9136 H 1 UNCH 0.0000 + 23 H8 -5.1147 2.0600 7.5448 H 1 UNCH 0.0000 + 24 H9 -5.1843 0.4080 6.8910 H 1 UNCH 0.0000 + 25 H10 -4.2722 1.6722 6.0510 H 1 UNCH 0.0000 + 26 H11 1.2543 1.1175 7.5056 H 1 UNCH 0.0000 + 27 H12 1.7143 0.7804 9.1922 H 1 UNCH 0.0000 + 28 H13 1.0434 3.5489 8.0601 H 1 UNCH 0.0000 + 29 H14 1.5054 3.2165 9.7248 H 1 UNCH 0.0000 + 30 H15 2.6831 2.9548 8.4160 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 4 1 + 4 1 10 1 + 5 3 14 1 + 6 4 12 am + 7 4 16 1 + 8 5 12 2 + 9 5 13 1 + 10 6 13 3 + 11 7 10 1 + 12 7 11 1 + 13 7 12 am + 14 8 10 1 + 15 8 17 1 + 16 8 18 1 + 17 8 19 1 + 18 9 10 1 + 19 9 20 1 + 20 9 21 1 + 21 9 22 1 + 22 11 23 1 + 23 11 24 1 + 24 11 25 1 + 25 14 15 1 + 26 14 26 1 + 27 14 27 1 + 28 15 28 1 + 29 15 29 1 + 30 15 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-CYANIMINO-2-ETHOXY-2-OXO-3,3,4-TRIMETHYL-1,4,2-DIAZAPHOSP +@MOLECULE +KOLCUJ + 29 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 3.3528 9.9787 3.3236 S.3 1 KOKS -0.1600 + 2 S2 5.0599 7.1510 3.3316 S.3 1 KOKS -0.2020 + 3 S3 2.6649 5.5285 3.5642 S.3 1 KOKS -0.2020 + 4 CL1 4.2457 11.9124 5.4350 CL 1 KOKS -0.2900 + 5 CL2 1.4700 12.0062 4.4937 CL 1 KOKS -0.2900 + 6 CL3 3.6367 12.8594 2.7607 CL 1 KOKS -0.2900 + 7 CL4 6.0245 5.1165 5.2887 CL 1 KOKS -0.2900 + 8 CL5 5.9449 7.9240 6.0967 CL 1 KOKS -0.2900 + 9 CL6 7.8702 7.0207 4.1440 CL 1 KOKS -0.2900 + 10 CL7 0.6471 4.7997 1.5702 CL 1 KOKS -0.2900 + 11 CL8 0.2971 7.2886 2.9877 CL 1 KOKS -0.2900 + 12 CL9 2.3853 7.0214 0.9575 CL 1 KOKS -0.2900 + 13 N1 2.8361 9.1886 4.6979 N.2 1 KOKS -0.5200 + 14 N2 3.5291 6.9169 4.0286 N.3 1 KOKS -0.1060 + 15 C1 2.9153 7.8953 4.8503 C.2 1 KOKS 0.4138 + 16 C2 3.1657 11.6721 4.0280 C.3 1 KOKS 1.1000 + 17 C3 6.1787 6.8073 4.7290 C.3 1 KOKS 1.1000 + 18 C4 1.5290 6.2034 2.2903 C.3 1 KOKS 1.1000 + 19 C5 2.2083 7.4230 6.1206 C.2 1 KOKS 0.0862 + 20 C6 1.0863 8.1309 6.5804 C.2 1 KOKS -0.1500 + 21 C7 0.4179 7.7279 7.7381 C.2 1 KOKS -0.1500 + 22 C8 0.8665 6.6186 8.4504 C.2 1 KOKS -0.1500 + 23 C9 1.9840 5.9135 8.0081 C.2 1 KOKS -0.1500 + 24 C10 2.6545 6.3142 6.8492 C.2 1 KOKS -0.1500 + 25 H1 0.7170 8.9988 6.0377 H 1 KOKS 0.1500 + 26 H2 -0.4513 8.2826 8.0832 H 1 KOKS 0.1500 + 27 H3 0.3478 6.3063 9.3536 H 1 KOKS 0.1500 + 28 H4 2.3375 5.0517 8.5696 H 1 KOKS 0.1500 + 29 H5 3.5258 5.7483 6.5432 H 1 KOKS 0.1500 +@BOND + 1 1 13 1 + 2 1 16 1 + 3 2 14 1 + 4 2 17 1 + 5 3 14 1 + 6 3 18 1 + 7 4 16 1 + 8 5 16 1 + 9 6 16 1 + 10 7 17 1 + 11 8 17 1 + 12 9 17 1 + 13 10 18 1 + 14 11 18 1 + 15 12 18 1 + 16 13 15 2 + 17 14 15 am + 18 15 19 1 + 19 19 20 2 + 20 19 24 1 + 21 20 21 1 + 22 20 25 1 + 23 21 22 2 + 24 21 26 1 + 25 22 23 1 + 26 22 27 1 + 27 23 24 2 + 28 23 28 1 + 29 24 29 1 +@SUBSTRUCTURE + 1 KOKS 1 +@COMMENT +COMMENT N,N-BIS(TRICHLOROMETHYLTHIO)-(ALPHA-((TRICHLOROMETHYL)THIOI +@MOLECULE +MAPMIP03 + 28 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N6 5.2307 7.4359 -4.7976 N.3 1 MAPM -0.8382 + 2 N7 1.3597 5.2833 1.0712 N.2 1 MAPM -0.0922 + 3 C1 4.3376 7.4913 -3.7373 C.2 1 MAPM -0.0500 + 4 C2 4.0033 6.5304 -2.8644 C.2 1 MAPM -0.1500 + 5 C3 3.0561 6.7397 -1.7908 C.2 1 MAPM -0.1500 + 6 C4 2.7382 5.7768 -0.9142 C.2 1 MAPM -0.1356 + 7 C5 1.7630 6.0946 0.1500 C.2 1 MAPM 0.3256 + 8 C8 5.3249 8.5473 -5.7506 C.3 1 MAPM 0.3691 + 9 C9 5.8215 6.1828 -5.2718 C.3 1 MAPM 0.3691 + 10 C10 0.3683 5.7321 2.0897 C.3 1 MAPM 0.3461 + 11 C11 1.8361 3.8777 1.1908 C.3 1 MAPM 0.3461 + 12 H1 3.8860 8.4790 -3.6449 H 1 MAPM 0.1500 + 13 H2 4.4618 5.5498 -2.9541 H 1 MAPM 0.1500 + 14 H3 2.6133 7.7333 -1.7301 H 1 MAPM 0.1500 + 15 H4 3.1846 4.7906 -0.9790 H 1 MAPM 0.1500 + 16 H5 1.3484 7.1181 0.1504 H 1 MAPM 0.0600 + 17 H81 6.3193 8.5901 -6.2076 H 1 MAPM 0.0000 + 18 H82 5.1574 9.5104 -5.2557 H 1 MAPM 0.0000 + 19 H83 4.5789 8.4279 -6.5430 H 1 MAPM 0.0000 + 20 H91 6.2869 5.6346 -4.4459 H 1 MAPM 0.0000 + 21 H92 5.0536 5.5510 -5.7304 H 1 MAPM 0.0000 + 22 H93 6.6047 6.3614 -6.0165 H 1 MAPM 0.0000 + 23 H101 -0.5126 5.0898 2.0103 H 1 MAPM 0.0000 + 24 H102 0.0867 6.7734 1.9107 H 1 MAPM 0.0000 + 25 H103 0.8295 5.6360 3.0761 H 1 MAPM 0.0000 + 26 H111 2.9184 3.8896 1.3445 H 1 MAPM 0.0000 + 27 H112 1.5693 3.3417 0.2762 H 1 MAPM 0.0000 + 28 H113 1.3498 3.4038 2.0481 H 1 MAPM 0.0000 +@BOND + 1 1 9 1 + 2 1 8 1 + 3 1 3 1 + 4 2 11 1 + 5 2 10 1 + 6 2 7 2 + 7 3 12 1 + 8 3 4 2 + 9 4 13 1 + 10 4 5 1 + 11 5 14 1 + 12 5 6 2 + 13 6 15 1 + 14 6 7 1 + 15 7 16 1 + 16 8 19 1 + 17 8 18 1 + 18 8 17 1 + 19 9 22 1 + 20 9 21 1 + 21 9 20 1 + 22 10 25 1 + 23 10 24 1 + 24 10 23 1 + 25 11 28 1 + 26 11 27 1 + 27 11 26 1 +@SUBSTRUCTURE + 1 MAPM 1 +@COMMENT +COMMENT (5-DIMETHYLAMINO-2,4-PENTADIENYLIDENE)-DIMETHYLAMMONIUM PER +@MOLECULE +MENBZS01 + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 9.2797 0.2795 8.5647 S.3 1 UNCH -0.0945 + 2 O1 6.5068 2.7451 9.7818 O.3 1 UNCH -0.5200 + 3 O2 8.1091 3.3772 8.4051 O.2 1 UNCH -0.5200 + 4 O3 10.8365 0.4299 7.9868 O.3 1 UNCH -0.2870 + 5 N1 7.6939 2.8486 9.4455 N.2 1 UNCH 0.9070 + 6 C1 9.4676 1.2405 10.0614 C.2 1 UNCH 0.1015 + 7 C2 8.6838 2.3563 10.3781 C.2 1 UNCH 0.1330 + 8 C3 8.8277 3.0535 11.5869 C.2 1 UNCH -0.1500 + 9 C4 9.7868 2.6300 12.5038 C.2 1 UNCH -0.1500 + 10 C5 10.5856 1.5247 12.2106 C.2 1 UNCH -0.1500 + 11 C6 10.4255 0.8349 11.0026 C.2 1 UNCH -0.1500 + 12 C7 10.9896 1.4327 6.9890 C.3 1 UNCH 0.2800 + 13 H1 8.2040 3.9157 11.8128 H 1 UNCH 0.1500 + 14 H2 9.9138 3.1584 13.4462 H 1 UNCH 0.1500 + 15 H3 11.3351 1.1917 12.9260 H 1 UNCH 0.1500 + 16 H4 11.0571 -0.0301 10.8036 H 1 UNCH 0.1500 + 17 H5 12.0302 1.4203 6.6524 H 1 UNCH 0.0000 + 18 H6 10.3477 1.2277 6.1256 H 1 UNCH 0.0000 + 19 H7 10.7744 2.4256 7.3971 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 6 1 + 3 2 5 1 + 4 3 5 2 + 5 4 12 1 + 6 5 7 1 + 7 6 7 2 + 8 6 11 1 + 9 7 8 1 + 10 8 9 2 + 11 8 13 1 + 12 9 10 1 + 13 9 14 1 + 14 10 11 2 + 15 10 15 1 + 16 11 16 1 + 17 12 17 1 + 18 12 18 1 + 19 12 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 2-NITROBENZENE-SULFENATE +@MOLECULE +METBZC10 + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.8370 4.7331 3.1901 S.2 1 UNCH 0.2425 + 2 O1 3.3001 4.5864 1.7690 O.2 1 UNCH -0.5000 + 3 O2 1.7242 5.4340 5.9208 O.2 1 UNCH -0.5700 + 4 O3 -0.0642 6.8319 5.5576 O.3 1 UNCH -0.4300 + 5 C1 1.0381 4.4998 3.1432 C.2 1 UNCH 0.0640 + 6 C2 0.1889 5.0245 4.1318 C.2 1 UNCH 0.0862 + 7 C3 -1.2015 4.8365 4.0326 C.2 1 UNCH -0.1500 + 8 C4 -1.7459 4.1400 2.9536 C.2 1 UNCH -0.1500 + 9 C5 -0.9092 3.6282 1.9665 C.2 1 UNCH -0.1500 + 10 C6 0.4721 3.8094 2.0587 C.2 1 UNCH -0.1500 + 11 C7 0.7237 5.7573 5.3040 C.2 1 UNCH 0.6338 + 12 C8 0.3797 7.6298 6.6562 C.3 1 UNCH 0.2800 + 13 C9 3.2393 3.1849 4.0425 C.3 1 UNCH 0.1935 + 14 H3 -1.8680 5.2299 4.7977 H 1 UNCH 0.1500 + 15 H4 -2.8221 4.0009 2.8810 H 1 UNCH 0.1500 + 16 H5 -1.3292 3.0926 1.1180 H 1 UNCH 0.1500 + 17 H6 1.1102 3.4146 1.2688 H 1 UNCH 0.1500 + 18 H81 -0.3149 8.4667 6.7695 H 1 UNCH 0.0000 + 19 H82 0.3723 7.0451 7.5814 H 1 UNCH 0.0000 + 20 H83 1.3783 8.0321 6.4590 H 1 UNCH 0.0000 + 21 H91 2.7851 3.1709 5.0352 H 1 UNCH 0.0000 + 22 H92 2.8832 2.3331 3.4577 H 1 UNCH 0.0000 + 23 H93 4.3254 3.1212 4.1441 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 5 1 + 3 1 13 1 + 4 3 11 2 + 5 4 11 1 + 6 4 12 1 + 7 5 6 1 + 8 5 10 2 + 9 6 7 2 + 10 6 11 1 + 11 7 8 1 + 12 7 14 1 + 13 8 9 2 + 14 8 15 1 + 15 9 10 1 + 16 9 16 1 + 17 10 17 1 + 18 12 18 1 + 19 12 19 1 + 20 12 20 1 + 21 13 21 1 + 22 13 22 1 + 23 13 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT METHYL 2-(METHYLSULFINYL)BENZOATE +@MOLECULE +NAESCB01 + 18 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.6821 12.1613 -0.2220 S.2 1 NAES -0.7500 + 2 S2 0.7005 10.0651 0.3119 S.3 1 NAES -0.7500 + 3 C1 2.3317 10.4914 -0.0195 C.2 1 NAES 0.7960 + 4 N1 3.3087 9.5428 -0.1178 N.3 1 NAES -0.8962 + 5 C2 3.0537 8.1213 0.1425 C.3 1 NAES 0.3001 + 6 C3 4.6892 9.8714 -0.4914 C.3 1 NAES 0.3001 + 7 C4 3.1709 7.7664 1.6183 C.3 1 NAES 0.0000 + 8 C5 4.8928 9.9148 -1.9995 C.3 1 NAES 0.0000 + 9 H1 2.0948 7.8029 -0.2775 H 1 NAES 0.0000 + 10 H2 3.7988 7.5354 -0.4115 H 1 NAES 0.0000 + 11 H3 5.0260 10.7939 -0.0088 H 1 NAES 0.0000 + 12 H4 5.3468 9.0953 -0.0786 H 1 NAES 0.0000 + 13 H5 3.0077 6.6939 1.7628 H 1 NAES 0.0000 + 14 H6 2.4424 8.3060 2.2298 H 1 NAES 0.0000 + 15 H7 4.1676 8.0124 1.9996 H 1 NAES 0.0000 + 16 H8 5.9405 10.1286 -2.2330 H 1 NAES 0.0000 + 17 H9 4.2757 10.6818 -2.4755 H 1 NAES 0.0000 + 18 H10 4.6329 8.9534 -2.4550 H 1 NAES 0.0000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 6 1 + 5 4 5 1 + 6 5 10 1 + 7 5 9 1 + 8 5 7 1 + 9 6 12 1 + 10 6 11 1 + 11 6 8 1 + 12 7 15 1 + 13 7 14 1 + 14 7 13 1 + 15 8 18 1 + 16 8 17 1 + 17 8 16 1 +@SUBSTRUCTURE + 1 NAES 1 +@COMMENT +COMMENT SODIUM N,N-DIETHYLDITHIOCARBAMATE TRIHYDRATE +@MOLECULE +NHOXAL06 + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.4454 0.4676 8.9712 C.2 1 CHGB 0.5730 + 2 C2 -0.6693 1.8061 8.9913 C.2 1 CHGB 0.9470 + 3 O1 -0.9720 -0.5853 9.3806 O.2 1 CHGB -0.5700 + 4 O2 -2.6992 0.5666 8.4585 O.3 1 CHGB -0.6500 + 5 O3 -1.2694 2.8366 8.5370 O.2 1 CHGB -0.9000 + 6 O4 0.5153 1.7769 9.4621 O.3 1 CHGB -0.9000 + 7 H1 -3.0318 -0.3459 8.5219 H 1 CHGB 0.5000 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 1 + 4 2 5 2 + 5 2 6 1 + 6 4 7 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM HYDROGEN OXALATE MONOHYDRATE (AT 120 DEG.K) +@MOLECULE +PHOSLA10 + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -2.9484 0.8757 9.5739 P 1 UNCH 1.3584 + 2 O1 -2.7557 2.0961 8.5021 O.3 1 UNCH -0.3479 + 3 O2 -4.1806 0.8757 10.4275 O.2 1 UNCH -0.7000 + 4 N1 -1.5800 0.8757 10.5522 N.3 1 UNCH 0.4536 + 5 N2 -0.3198 0.8757 10.0164 N.2 1 UNCH -0.7068 + 6 N3 -0.2190 0.8757 12.2945 N.2 1 UNCH -0.5653 + 7 C1 -2.5120 1.5463 7.2288 C.2 1 UNCH -0.0615 + 8 C2 -2.2940 2.5082 6.1189 C.3 1 UNCH 0.1382 + 9 C3 0.4471 0.8757 11.1073 C.2 1 UNCH 0.3660 + 10 C4 -1.4766 0.8757 11.9231 C.2 1 UNCH 0.0365 + 11 H11 -1.4322 3.1467 6.3374 H 1 UNCH 0.0000 + 12 H12 -2.1077 2.0087 5.1646 H 1 UNCH 0.0000 + 13 H13 -3.1733 3.1483 5.9966 H 1 UNCH 0.0000 + 14 H3 1.5280 0.8757 11.0351 H 1 UNCH 0.1500 + 15 H4 -2.3479 0.8757 12.5640 H 1 UNCH 0.1500 + 16 O1B -2.7557 -0.3447 8.5021 O.3 1 UNCH -0.3479 + 17 C1B -2.5120 0.2051 7.2288 C.2 1 UNCH -0.0615 + 18 C2B -2.2940 -0.7568 6.1189 C.3 1 UNCH 0.1382 + 19 H11B -1.4323 -1.3953 6.3374 H 1 UNCH 0.0000 + 20 H12B -2.1077 -0.2573 5.1646 H 1 UNCH 0.0000 + 21 H13B -3.1734 -1.3969 5.9967 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 1 + 4 1 16 1 + 5 2 7 1 + 6 4 5 1 + 7 4 10 am + 8 5 9 2 + 9 6 9 am + 10 6 10 2 + 11 7 8 1 + 12 7 17 2 + 13 8 11 1 + 14 8 12 1 + 15 8 13 1 + 16 9 14 1 + 17 10 15 1 + 18 16 17 1 + 19 17 18 1 + 20 18 19 1 + 21 18 20 1 + 22 18 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,5-DIMETHYL-2-(1,2,4-TRIAZOL-1-YL)-2-OXO-1,3,2-DIOXAPHOSPH +@MOLECULE +PHOSLB10 + 34 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 9.7278 4.6369 15.0017 P 1 PHOS 1.5604 + 2 O1 8.9147 4.2667 13.6141 O.3 1 PHOS -0.3479 + 3 O2 10.2034 6.1235 14.4671 O.3 1 PHOS -0.3479 + 4 O3 8.8091 4.7419 16.1878 O.2 1 PHOS -0.7000 + 5 N1 11.0273 3.7223 15.0768 N.2 1 PHOS -0.7680 + 6 N2 10.0978 1.6991 15.9462 N.3 1 PHOS -0.7882 + 7 N3 12.3565 1.8761 15.5295 N.3 1 PHOS -0.7882 + 8 C1 9.0216 5.3183 12.6917 C.2 1 PHOS -0.0615 + 9 C2 9.7343 6.3456 13.1636 C.2 1 PHOS -0.0615 + 10 C3 8.3484 5.1312 11.3829 C.3 1 PHOS 0.1382 + 11 C4 10.0908 7.6427 12.5376 C.3 1 PHOS 0.1382 + 12 C5 11.1182 2.5043 15.4896 C.2 1 PHOS 0.5500 + 13 C6 8.9126 1.4727 15.1288 C.3 1 PHOS 0.3691 + 14 C7 9.8256 1.7219 17.3843 C.3 1 PHOS 0.3691 + 15 C8 13.5248 2.5845 15.0118 C.3 1 PHOS 0.3691 + 16 C9 12.4722 0.4209 15.5149 C.3 1 PHOS 0.3691 + 17 H31 8.7539 4.2520 10.8724 H 1 PHOS 0.0000 + 18 H32 7.2746 4.9780 11.5293 H 1 PHOS 0.0000 + 19 H33 8.4770 5.9919 10.7213 H 1 PHOS 0.0000 + 20 H41 9.6891 7.7410 11.5256 H 1 PHOS 0.0000 + 21 H42 9.6990 8.4711 13.1361 H 1 PHOS 0.0000 + 22 H43 11.1788 7.7467 12.4782 H 1 PHOS 0.0000 + 23 H62 8.4810 0.4935 15.3619 H 1 PHOS 0.0000 + 24 H63 8.1458 2.2313 15.3095 H 1 PHOS 0.0000 + 25 H71 9.2395 2.6027 17.6613 H 1 PHOS 0.0000 + 26 H72 9.2676 0.8272 17.6801 H 1 PHOS 0.0000 + 27 H73 10.7573 1.7327 17.9603 H 1 PHOS 0.0000 + 28 H81 13.4945 2.6233 13.9179 H 1 PHOS 0.0000 + 29 H82 14.4549 2.0910 15.3139 H 1 PHOS 0.0000 + 30 H83 13.5735 3.6067 15.4026 H 1 PHOS 0.0000 + 31 H91 11.9391 -0.0326 16.3566 H 1 PHOS 0.0000 + 32 H92 13.5159 0.0993 15.6014 H 1 PHOS 0.0000 + 33 H93 12.0715 0.0161 14.5795 H 1 PHOS 0.0000 + 34 H2 9.1680 1.4702 14.0639 H 1 PHOS 0.0000 +@BOND + 1 1 5 1 + 2 1 4 2 + 3 1 3 1 + 4 1 2 1 + 5 2 8 1 + 6 3 9 1 + 7 5 12 2 + 8 6 14 1 + 9 6 13 1 + 10 6 12 am + 11 7 16 1 + 12 7 15 1 + 13 7 12 am + 14 8 10 1 + 15 8 9 2 + 16 9 11 1 + 17 10 19 1 + 18 10 18 1 + 19 10 17 1 + 20 11 22 1 + 21 11 21 1 + 22 11 20 1 + 23 13 34 1 + 24 13 24 1 + 25 13 23 1 + 26 14 27 1 + 27 14 26 1 + 28 14 25 1 + 29 15 30 1 + 30 15 29 1 + 31 15 28 1 + 32 16 33 1 + 33 16 32 1 + 34 16 31 1 +@SUBSTRUCTURE + 1 PHOS 1 +@COMMENT +COMMENT 4,5-DIMETHYL-2-(TETRAMETHYLGUANIDYL)-2-OXO-1,3,2-DIOXAPHOSP +@MOLECULE +PIMTAZ01 + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.9328 2.9057 5.7589 S.3 1 UNCH -0.3710 + 2 N1 6.0664 0.9887 7.4970 N.3 1 UNCH -0.7882 + 3 N2 6.7250 3.0300 8.3481 N.2 1 UNCH -0.6960 + 4 C1 5.3387 1.2459 5.2518 C.3 1 UNCH 0.2300 + 5 C2 5.0720 0.4954 6.5655 C.3 1 UNCH 0.3691 + 6 C3 5.9751 0.7697 8.9234 C.3 1 UNCH 0.3691 + 7 C4 6.7755 1.9992 9.4524 C.3 1 UNCH 0.3895 + 8 C5 6.3258 2.3196 7.3399 C.2 1 UNCH 0.6410 + 9 C6 6.2414 2.4847 10.7820 C.2 1 UNCH -0.1435 + 10 C7 6.5728 1.7927 11.9583 C.2 1 UNCH -0.1500 + 11 C8 6.0683 2.2046 13.1934 C.2 1 UNCH -0.1500 + 12 C9 5.2256 3.3113 13.2686 C.2 1 UNCH -0.1500 + 13 C10 4.8886 4.0076 12.1100 C.2 1 UNCH -0.1500 + 14 C11 5.3921 3.5965 10.8744 C.2 1 UNCH -0.1500 + 15 H1 4.4442 1.3135 4.6274 H 1 UNCH 0.0000 + 16 H2 6.1374 0.7572 4.6847 H 1 UNCH 0.0000 + 17 H3 5.1559 -0.5869 6.4265 H 1 UNCH 0.0000 + 18 H4 4.0602 0.7173 6.9273 H 1 UNCH 0.0000 + 19 H5 4.9307 0.7885 9.2578 H 1 UNCH 0.0000 + 20 H6 6.4338 -0.1764 9.2265 H 1 UNCH 0.0000 + 21 H7 7.8346 1.7318 9.5739 H 1 UNCH 0.0000 + 22 H8 7.2346 0.9301 11.9212 H 1 UNCH 0.1500 + 23 H9 6.3368 1.6651 14.0978 H 1 UNCH 0.1500 + 24 H10 4.8363 3.6357 14.2298 H 1 UNCH 0.1500 + 25 H11 4.2374 4.8760 12.1658 H 1 UNCH 0.1500 + 26 H12 5.1237 4.1569 9.9805 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 8 1 + 3 2 5 1 + 4 2 6 1 + 5 2 8 am + 6 3 7 1 + 7 3 8 2 + 8 4 5 1 + 9 4 15 1 + 10 4 16 1 + 11 5 17 1 + 12 5 18 1 + 13 6 7 1 + 14 6 19 1 + 15 6 20 1 + 16 7 9 1 + 17 7 21 1 + 18 9 10 2 + 19 9 14 1 + 20 10 11 1 + 21 10 22 1 + 22 11 12 2 + 23 11 23 1 + 24 12 13 1 + 25 12 24 1 + 26 13 14 2 + 27 13 25 1 + 28 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT RAC-6-PHENYL-2,3,5,6-TETRAHYDROIMIDAZO(2,1-B)THIAZOLE (FOR +@MOLECULE +QUICNA01 + 16 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -1.8005 1.5124 0.8734 C.2 1 QUIC 0.1820 + 2 C3 -2.5948 1.6221 2.0065 C.2 1 QUIC -0.1790 + 3 C4 -1.9655 1.6978 3.2643 C.2 1 QUIC -0.1500 + 4 C5 -0.5783 1.6969 3.3690 C.2 1 QUIC -0.1500 + 5 C6 0.1656 1.6313 2.2037 C.2 1 QUIC 0.2110 + 6 C7 -2.1453 1.3256 -0.5684 C.2 1 QUIC 0.9790 + 7 C8 -4.0722 1.7466 1.9420 C.2 1 QUIC 0.9790 + 8 H1 -2.5912 1.7751 4.1541 H 1 QUIC 0.1500 + 9 H2 -0.1004 1.7629 4.3399 H 1 QUIC 0.1500 + 10 H3 1.2463 1.6408 2.1751 H 1 QUIC 0.1500 + 11 H4 0.0089 1.4963 0.1095 H 1 QUIC 0.4570 + 12 N1 -0.4585 1.5464 1.0345 N.2 1 QUIC -0.1790 + 13 O1 -1.0749 1.4369 -1.2733 O.2 1 QUIC -0.9000 + 14 O2 -3.2858 0.9873 -0.9682 O.3 1 QUIC -0.9000 + 15 O3 -4.5051 2.8504 1.4995 O.2 1 QUIC -0.9000 + 16 O4 -4.7252 0.8131 2.4974 O.3 1 QUIC -0.9000 +@BOND + 1 1 12 1 + 2 1 6 1 + 3 1 2 2 + 4 2 7 1 + 5 2 3 1 + 6 3 8 1 + 7 3 4 2 + 8 4 9 1 + 9 4 5 1 + 10 5 12 2 + 11 5 10 1 + 12 6 14 1 + 13 6 13 2 + 14 7 16 1 + 15 7 15 2 + 16 11 12 1 +@SUBSTRUCTURE + 1 QUIC 1 +@COMMENT +COMMENT QUINOLINIC ACID (NEUTRON STUDY) PYRIDINE-2,3-DICARBOXYLIC A +@MOLECULE +SABNOY + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 15.0151 0.4670 -0.2791 N.3 1 UNCH -0.5390 + 2 C1 15.6679 0.1130 -1.4245 C.2 1 UNCH 0.6900 + 3 N2 14.9039 0.0981 -2.5521 N.3 1 UNCH -0.4900 + 4 C2 13.5749 0.4046 -2.6026 C.2 1 UNCH 0.6156 + 5 C3 12.8960 0.7904 -1.3107 C.2 1 UNCH 0.1144 + 6 C4 13.6860 0.7916 -0.2261 C.2 1 UNCH -0.0410 + 7 N3 11.5513 1.0887 -1.4297 N.3 1 UNCH -0.5500 + 8 C5 10.5773 1.4733 -0.5472 C.2 1 UNCH 0.6500 + 9 N4 9.3335 1.7286 -0.7757 N.2 1 UNCH -0.6610 + 10 C6 8.8546 1.6215 -2.0453 C.2 1 UNCH 0.9310 + 11 O1 7.5320 1.9341 -2.0519 O.3 1 UNCH -0.4300 + 12 C7 6.9207 1.8555 -3.3379 C.3 1 UNCH 0.2800 + 13 O2 9.4935 1.2972 -3.0383 O.2 1 UNCH -0.5700 + 14 C8 10.1029 1.9849 1.7476 C.3 1 UNCH 0.2800 + 15 C9 10.8453 2.0385 3.0687 C.3 1 UNCH 0.0000 + 16 O3 12.9390 0.3725 -3.6547 O.2 1 UNCH -0.5700 + 17 O4 16.8601 -0.1714 -1.4331 O.2 1 UNCH -0.5700 + 18 O5 11.0384 1.5860 0.7302 O.3 1 UNCH -0.4300 + 19 H1 15.5789 0.4798 0.5637 H 1 UNCH 0.3700 + 20 H2 15.3569 -0.1593 -3.4144 H 1 UNCH 0.3700 + 21 H3 13.3217 1.0497 0.7612 H 1 UNCH 0.1500 + 22 H4 11.2292 0.9961 -2.4016 H 1 UNCH 0.4000 + 23 H5 5.8663 2.1245 -3.2292 H 1 UNCH 0.0000 + 24 H6 7.3879 2.5634 -4.0298 H 1 UNCH 0.0000 + 25 H7 6.9778 0.8348 -3.7292 H 1 UNCH 0.0000 + 26 H8 9.2907 1.2525 1.8102 H 1 UNCH 0.0000 + 27 H9 9.6994 2.9754 1.5106 H 1 UNCH 0.0000 + 28 H10 11.2768 1.0609 3.3081 H 1 UNCH 0.0000 + 29 H11 11.6772 2.7485 3.0146 H 1 UNCH 0.0000 + 30 H12 10.1767 2.3383 3.8804 H 1 UNCH 0.0000 +@BOND + 1 1 2 am + 2 1 6 1 + 3 1 19 1 + 4 2 3 am + 5 2 17 2 + 6 3 4 am + 7 3 20 1 + 8 4 5 1 + 9 4 16 2 + 10 5 6 2 + 11 5 7 1 + 12 6 21 1 + 13 7 8 am + 14 7 22 1 + 15 8 9 2 + 16 8 18 1 + 17 9 10 am + 18 10 11 1 + 19 10 13 2 + 20 11 12 1 + 21 12 23 1 + 22 12 24 1 + 23 12 25 1 + 24 14 15 1 + 25 14 18 1 + 26 14 26 1 + 27 14 27 1 + 28 15 28 1 + 29 15 29 1 + 30 15 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-(1-(3-METHOXYCARBONYL-O-ETHYLPSEUDOUREIDO))URACIL +@MOLECULE +SACXAV + 35 36 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 10.1523 1.9196 4.9868 S.3 1 UNCH -0.3315 + 2 N1 9.6160 -0.0364 3.1665 N.2 1 UNCH -0.6200 + 3 N2 8.9848 -2.3216 3.6761 N.2 1 UNCH -0.5670 + 4 N3 9.4474 -0.7140 6.8320 N.2 1 UNCH -0.5653 + 5 N4 8.8837 -2.7190 6.0581 N.3 1 UNCH 0.0332 + 6 C1 9.2624 -1.2978 2.8457 C.2 1 UNCH 0.4700 + 7 C2 9.0963 -1.9417 4.9570 C.2 1 UNCH 0.1054 + 8 C3 9.4455 -0.6938 5.4491 C.2 1 UNCH 0.2272 + 9 C4 9.7151 0.2825 4.4837 C.2 1 UNCH 0.4115 + 10 C5 9.1053 -1.9414 7.1604 C.2 1 UNCH 0.0365 + 11 C6 11.1240 2.4778 3.5485 C.3 1 UNCH 0.2300 + 12 C7 12.4972 1.8084 3.4976 C.3 1 UNCH 0.0000 + 13 C8 13.3119 2.3243 2.3081 C.3 1 UNCH 0.0000 + 14 C9 14.6889 1.6611 2.2472 C.3 1 UNCH 0.0000 + 15 C10 15.5022 2.1759 1.0586 C.3 1 UNCH 0.0000 + 16 C11 16.8781 1.5130 0.9976 C.3 1 UNCH 0.0000 + 17 C12 17.6899 2.0220 -0.1828 C.3 1 UNCH 0.0000 + 18 H1 9.1929 -1.5148 1.7833 H 1 UNCH 0.1500 + 19 H2 9.0029 -2.3212 8.1688 H 1 UNCH 0.1500 + 20 H3 8.6114 -3.6901 6.0430 H 1 UNCH 0.2700 + 21 H4 10.5636 2.3147 2.6221 H 1 UNCH 0.0000 + 22 H5 11.2523 3.5609 3.6530 H 1 UNCH 0.0000 + 23 H6 12.3932 0.7204 3.4119 H 1 UNCH 0.0000 + 24 H7 13.0470 2.0112 4.4253 H 1 UNCH 0.0000 + 25 H8 13.4310 3.4117 2.3881 H 1 UNCH 0.0000 + 26 H9 12.7672 2.1257 1.3770 H 1 UNCH 0.0000 + 27 H10 15.2335 1.8592 3.1784 H 1 UNCH 0.0000 + 28 H11 14.5697 0.5737 2.1673 H 1 UNCH 0.0000 + 29 H12 14.9575 1.9782 0.1273 H 1 UNCH 0.0000 + 30 H13 15.6216 3.2633 1.1383 H 1 UNCH 0.0000 + 31 H14 16.7644 0.4259 0.9137 H 1 UNCH 0.0000 + 32 H15 17.4285 1.7111 1.9246 H 1 UNCH 0.0000 + 33 H16 18.6697 1.5349 -0.2072 H 1 UNCH 0.0000 + 34 H17 17.8494 3.1027 -0.1124 H 1 UNCH 0.0000 + 35 H18 17.1816 1.8103 -1.1290 H 1 UNCH 0.0000 +@BOND + 1 1 9 1 + 2 1 11 1 + 3 2 6 2 + 4 2 9 1 + 5 3 6 am + 6 3 7 2 + 7 4 8 1 + 8 4 10 2 + 9 5 7 am + 10 5 10 am + 11 5 20 1 + 12 6 18 1 + 13 7 8 1 + 14 8 9 2 + 15 10 19 1 + 16 11 12 1 + 17 11 21 1 + 18 11 22 1 + 19 12 13 1 + 20 12 23 1 + 21 12 24 1 + 22 13 14 1 + 23 13 25 1 + 24 13 26 1 + 25 14 15 1 + 26 14 27 1 + 27 14 28 1 + 28 15 16 1 + 29 15 29 1 + 30 15 30 1 + 31 16 17 1 + 32 16 31 1 + 33 16 32 1 + 34 17 33 1 + 35 17 34 1 + 36 17 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6-N-HEPTYLMERCAPTOPURINE (AT 123 DEG.K) +@MOLECULE +SADXAW + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.8116 3.9810 3.1008 O.2 1 UNCH -0.5700 + 2 O2 3.1700 -0.7097 0.0259 O.2 1 UNCH -0.5700 + 3 O3 5.1264 2.4706 2.6094 O.2 1 UNCH -0.5700 + 4 N1 2.8452 2.4909 2.3176 N.3 1 UNCH -0.2290 + 5 N2 1.8631 0.8705 0.9448 N.2 1 UNCH -0.6610 + 6 N3 4.2026 0.9688 1.1611 N.3 1 UNCH -0.4201 + 7 N4 0.5040 2.4145 1.9938 N.3 1 UNCH -0.4201 + 8 C1 1.7639 1.8879 1.7240 C.2 1 UNCH 0.5700 + 9 C2 1.4838 4.0781 3.4519 C.2 1 UNCH -0.1356 + 10 C3 4.1216 2.0082 2.0602 C.2 1 UNCH 0.6900 + 11 C4 0.2826 3.4930 2.8361 C.2 1 UNCH 0.6156 + 12 C5 5.5027 0.4016 0.8603 C.3 1 UNCH 0.3001 + 13 C6 3.0831 0.3283 0.6764 C.2 1 UNCH 0.8410 + 14 C7 2.6805 3.5647 3.1718 C.2 1 UNCH -0.0410 + 15 C8 -0.6557 1.7946 1.3691 C.3 1 UNCH 0.3001 + 16 H1 3.5788 3.9883 3.6158 H 1 UNCH 0.1500 + 17 H2 1.3436 4.9195 4.1182 H 1 UNCH 0.1500 + 18 H3 5.5160 -0.0279 -0.1460 H 1 UNCH 0.0000 + 19 H4 6.2887 1.1593 0.9287 H 1 UNCH 0.0000 + 20 H5 5.7091 -0.3910 1.5866 H 1 UNCH 0.0000 + 21 H6 -0.7155 0.7494 1.6901 H 1 UNCH 0.0000 + 22 H7 -0.5321 1.8194 0.2814 H 1 UNCH 0.0000 + 23 H8 -1.5904 2.2978 1.6291 H 1 UNCH 0.0000 +@BOND + 1 1 11 2 + 2 2 13 2 + 3 3 10 2 + 4 4 8 am + 5 4 10 am + 6 4 14 1 + 7 5 8 2 + 8 5 13 am + 9 6 10 am + 10 6 12 1 + 11 6 13 am + 12 7 8 am + 13 7 11 am + 14 7 15 1 + 15 9 11 1 + 16 9 14 2 + 17 9 17 1 + 18 12 18 1 + 19 12 19 1 + 20 12 20 1 + 21 14 16 1 + 22 15 21 1 + 23 15 22 1 + 24 15 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,9-DIMETHYL-2H-PYRIMIDO(1,2-A)(1,3,5)-TRIAZINE-2,4,8(3H,9H +@MOLECULE +SAFFOU + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.9857 0.5170 6.2920 S.3 1 SAFF -0.0800 + 2 N1 3.7587 1.9861 5.1193 N.2 1 SAFF -0.5653 + 3 C1 2.5158 2.5390 4.8480 C.2 1 SAFF 0.2272 + 4 C2 1.4387 1.8762 5.4017 C.2 1 SAFF -0.1100 + 5 C3 3.5998 0.9187 5.8709 C.2 1 SAFF 0.2281 + 6 C1B 2.4400 3.7490 4.0188 C.2 1 SAFF 0.2272 + 7 N1B 1.1971 4.3019 3.7475 N.2 1 SAFF -0.5653 + 8 C2B 3.5171 4.4118 3.4650 C.2 1 SAFF -0.1100 + 9 C3B 1.3560 5.3693 2.9959 C.2 1 SAFF 0.2281 + 10 S1B 2.9701 5.7710 2.5747 S.3 1 SAFF -0.0800 + 11 H1 0.3897 2.1244 5.3236 H 1 SAFF 0.1500 + 12 H2 4.4358 0.3207 6.2096 H 1 SAFF 0.1500 + 13 H3 4.5661 4.1635 3.5432 H 1 SAFF 0.1500 + 14 H4 0.5200 5.9673 2.6572 H 1 SAFF 0.1500 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 2 5 2 + 4 2 3 1 + 5 3 6 1 + 6 3 4 2 + 7 4 11 1 + 8 5 12 1 + 9 6 8 2 + 10 6 7 1 + 11 7 9 2 + 12 8 13 1 + 13 8 10 1 + 14 9 14 1 + 15 9 10 1 +@SUBSTRUCTURE + 1 SAFF 1 +@COMMENT +COMMENT 4,4'-BITHIAZOLE +@MOLECULE +SAFFUA + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.1548 4.2045 0.3619 S.3 1 UNCH -0.0800 + 2 S2 2.8268 6.3276 3.9639 S.3 1 UNCH -0.0800 + 3 N1 4.6654 4.0694 2.8828 N.2 1 UNCH -0.5653 + 4 N2 2.3161 6.4627 1.4430 N.2 1 UNCH -0.5653 + 5 C1 3.9427 4.7277 1.9929 C.2 1 UNCH 0.3781 + 6 C2 5.2820 3.0275 0.8883 C.2 1 UNCH -0.1100 + 7 C3 5.4265 3.1033 2.2551 C.2 1 UNCH 0.0772 + 8 C4 3.0388 5.8044 2.3329 C.2 1 UNCH 0.3781 + 9 C5 1.6996 7.5045 3.4376 C.2 1 UNCH -0.1100 + 10 C6 1.5551 7.4288 2.0707 C.2 1 UNCH 0.0772 + 11 H1 5.7692 2.3581 0.1943 H 1 UNCH 0.1500 + 12 H2 6.0778 2.4738 2.8495 H 1 UNCH 0.1500 + 13 H3 1.2124 8.1740 4.1315 H 1 UNCH 0.1500 + 14 H4 0.9037 8.0583 1.4763 H 1 UNCH 0.1500 +@BOND + 1 1 5 1 + 2 1 6 1 + 3 2 8 1 + 4 2 9 1 + 5 3 5 2 + 6 3 7 1 + 7 4 8 2 + 8 4 10 1 + 9 5 8 1 + 10 6 7 2 + 11 6 11 1 + 12 7 12 1 + 13 9 10 2 + 14 9 13 1 + 15 10 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2'-BITHIAZOLE +@MOLECULE +SAFKAL + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2160 2.3909 2.5230 C.2 1 SAFK 0.1784 + 2 C2 2.8675 1.3735 3.5158 C.2 1 SAFK 0.7200 + 3 N1 2.7814 2.5178 1.1767 N.2 1 SAFK 0.8750 + 4 N2 4.0319 3.3252 2.9432 N.1 1 SAFK 0.3566 + 5 N3 4.7470 4.1233 3.3379 N.2 1 SAFK -0.3700 + 6 O1 1.9985 1.6460 0.7864 O.3 1 SAFK -0.5200 + 7 O2 3.2091 3.4655 0.5089 O.2 1 SAFK -0.5200 + 8 O3 1.9756 1.5081 4.3238 O.2 1 SAFK -0.5700 + 9 O4 3.6701 0.3136 3.4349 O.3 1 SAFK -0.6500 + 10 H1 3.3553 -0.3129 4.1231 H 1 SAFK 0.5000 +@BOND + 1 1 4 2 + 2 1 3 am + 3 1 2 1 + 4 2 9 1 + 5 2 8 2 + 6 3 7 2 + 7 3 6 1 + 8 4 5 2 + 9 9 10 1 +@SUBSTRUCTURE + 1 SAFK 1 +@COMMENT +COMMENT NITRODIAZOACETIC ACID (AT -60 DEG.C) +@MOLECULE +SAHSOJ + 36 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.0709 9.3139 -0.2220 N.3 1 SAHS -0.3940 + 2 C1 0.6322 7.9927 -0.2012 C.2 1 SAHS -0.1410 + 3 C2 -0.3768 7.8023 0.6645 C.2 1 SAHS -0.0372 + 4 C3 -0.7911 9.1026 1.2903 C.3 1 SAHS 0.1382 + 5 C4 0.1939 10.0965 0.6861 C.3 1 SAHS 0.2250 + 6 C5 -0.1822 10.9672 -0.5429 C.3 1 SAHS 0.0530 + 7 C6 0.8401 10.1105 -1.3119 C.2 1 SAHS 0.5770 + 8 C7 0.1671 12.4397 -0.4357 C.3 1 SAHS 0.2800 + 9 C8 -0.1224 13.1639 -1.7432 C.3 1 SAHS 0.0000 + 10 C9 1.2450 6.9138 -1.1282 C.2 1 SAHS 1.0500 + 11 C10 0.0859 5.1256 1.1960 C.3 1 SAHS 0.2300 + 12 C11 -0.4086 3.8687 1.9192 C.3 1 SAHS 0.3691 + 13 C12 -1.3630 3.2493 4.1342 C.2 1 SAHS 0.4400 + 14 O1 1.2820 10.1338 -2.4383 O.2 1 SAHS -0.5700 + 15 O2 -0.6371 13.0188 0.5962 O.3 1 SAHS -0.6800 + 16 S1 -1.2502 6.3672 1.0483 S.3 1 SAHS -0.3310 + 17 O3 0.5084 6.5384 -2.0833 O.3 1 SAHS -0.9000 + 18 O4 2.3794 6.4887 -0.7591 O.2 1 SAHS -0.9000 + 19 N2 -0.8749 4.1757 3.2679 N.3 1 SAHS -0.8191 + 20 N3 -1.1772 1.9795 4.1303 N.2 1 SAHS -0.8500 + 21 H1 -1.8266 9.3636 1.0483 H 1 SAHS 0.0000 + 22 H2 -0.6789 9.0612 2.3795 H 1 SAHS 0.0000 + 23 H3 0.7903 10.6161 1.4481 H 1 SAHS 0.0000 + 24 H4 -1.2078 10.7985 -0.8977 H 1 SAHS 0.0000 + 25 H5 1.2175 12.5789 -0.1553 H 1 SAHS 0.0000 + 26 H6 0.0893 14.2340 -1.6450 H 1 SAHS 0.0000 + 27 H7 0.4774 12.7665 -2.5670 H 1 SAHS 0.0000 + 28 H8 -1.1804 13.0748 -2.0145 H 1 SAHS 0.0000 + 29 H9 0.9265 5.5607 1.7472 H 1 SAHS 0.0000 + 30 H10 0.4232 4.8300 0.2002 H 1 SAHS 0.0000 + 31 H11 -1.2172 3.3963 1.3484 H 1 SAHS 0.0000 + 32 H12 0.4190 3.1523 1.9739 H 1 SAHS 0.0000 + 33 H13 -1.9803 3.7007 4.9298 H 1 SAHS 0.0600 + 34 H14 -0.4134 13.9648 0.6368 H 1 SAHS 0.4000 + 35 H15 -1.3266 5.0887 3.3085 H 1 SAHS 0.4000 + 36 H16 -0.5656 1.7369 3.3483 H 1 SAHS 0.4000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 7 am + 4 2 3 2 + 5 2 10 1 + 6 3 4 1 + 7 3 16 1 + 8 4 5 1 + 9 4 21 1 + 10 4 22 1 + 11 5 6 1 + 12 5 23 1 + 13 6 7 1 + 14 6 8 1 + 15 6 24 1 + 16 7 14 2 + 17 8 9 1 + 18 8 15 1 + 19 8 25 1 + 20 9 26 1 + 21 9 27 1 + 22 9 28 1 + 23 10 17 1 + 24 10 18 2 + 25 11 12 1 + 26 11 16 1 + 27 11 29 1 + 28 11 30 1 + 29 12 19 1 + 30 12 31 1 + 31 12 32 1 + 32 13 19 am + 33 13 20 2 + 34 13 33 1 + 35 15 34 1 + 36 19 35 1 + 37 20 36 1 +@SUBSTRUCTURE + 1 SAHS 1 +@COMMENT +COMMENT 6-(1-HYDROXYETHYL)-3-(2-(IMINIOMETHYLAMINO)ETHYLTHIO)-7-OXO +@MOLECULE +SAHSUP + 27 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.5494 7.9857 3.8546 C.2 1 SAHS -0.1790 + 2 C2 6.9956 9.0591 3.1239 C.2 1 SAHS 0.1015 + 3 C3 6.6913 8.8797 1.7613 C.2 1 SAHS -0.1500 + 4 C4 6.9053 7.6554 1.1268 C.2 1 SAHS -0.1500 + 5 C5 7.4305 6.5897 1.8448 C.2 1 SAHS -0.1500 + 6 C6 7.7467 6.7544 3.1929 C.2 1 SAHS -0.1500 + 7 C7 7.8979 8.0492 5.3171 C.2 1 SAHS 0.9790 + 8 O1 8.2856 9.1570 5.8184 O.2 1 SAHS -0.9000 + 9 O2 7.6399 7.0208 6.0237 O.3 1 SAHS -0.9000 + 10 S1 6.6584 10.6981 3.7758 S.3 1 SAHS -0.3315 + 11 C8 4.9855 10.4733 4.4800 C.3 1 SAHS 0.2300 + 12 C9 4.8581 9.4672 5.6242 C.3 1 SAHS 0.4895 + 13 C10 6.1034 8.8992 7.6912 C.2 1 SAHS 0.5588 + 14 N1 5.9438 9.6047 6.5932 N.2 1 SAHS -0.7939 + 15 N2 5.2418 8.0597 8.2185 N.3 1 SAHS -0.7544 + 16 H1 6.2910 9.7041 1.1747 H 1 SAHS 0.1500 + 17 H2 6.6689 7.5393 0.0729 H 1 SAHS 0.1500 + 18 H3 7.6031 5.6320 1.3616 H 1 SAHS 0.1500 + 19 H4 8.1588 5.9132 3.7514 H 1 SAHS 0.1500 + 20 H5 4.2880 10.2145 3.6763 H 1 SAHS 0.0000 + 21 H6 4.6878 11.4594 4.8533 H 1 SAHS 0.0000 + 22 H7 4.8691 8.4440 5.2334 H 1 SAHS 0.0000 + 23 H8 3.9023 9.6141 6.1389 H 1 SAHS 0.0000 + 24 H9 7.0673 8.9888 8.1813 H 1 SAHS 0.1500 + 25 H10 6.8550 9.9883 6.2576 H 1 SAHS 0.4500 + 26 H11 5.5360 7.4996 9.0083 H 1 SAHS 0.4500 + 27 H12 4.3847 7.8273 7.7457 H 1 SAHS 0.4500 +@BOND + 1 1 7 1 + 2 1 6 2 + 3 1 2 1 + 4 2 10 1 + 5 2 3 2 + 6 3 16 1 + 7 3 4 1 + 8 4 17 1 + 9 4 5 2 + 10 5 18 1 + 11 5 6 1 + 12 6 19 1 + 13 7 9 1 + 14 7 8 2 + 15 10 11 1 + 16 11 21 1 + 17 11 20 1 + 18 11 12 1 + 19 12 23 1 + 20 12 22 1 + 21 12 14 1 + 22 13 24 1 + 23 13 15 am + 24 13 14 2 + 25 14 25 1 + 26 15 27 1 + 27 15 26 1 +@SUBSTRUCTURE + 1 SAHS 1 +@COMMENT +COMMENT 2-(2-(IMINIOMETHYLAMINO)ETHYLTHIO)BENZOATE +@MOLECULE +SAKGUG + 35 39 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 4.9050 12.6791 -0.7502 CL 1 UNCH -0.1400 + 2 CL2 5.2604 15.4684 -2.3851 CL 1 UNCH -0.1400 + 3 O1 6.0818 10.4890 -2.4639 O.2 1 UNCH -0.5700 + 4 O2 6.6313 14.8016 -4.9917 O.2 1 UNCH -0.5700 + 5 N1 10.2774 14.3512 -3.9127 N.1 1 UNCH -0.5571 + 6 N2 9.8438 10.9479 -1.9179 N.1 1 UNCH -0.5571 + 7 C1 7.9127 11.7788 -4.8679 C.3 1 UNCH 0.0640 + 8 C2 6.7076 11.4069 -5.7643 C.2 1 UNCH -0.0320 + 9 C3 5.3383 11.6462 -5.6538 C.2 1 UNCH -0.1500 + 10 C4 4.4644 11.1776 -6.6431 C.2 1 UNCH -0.1500 + 11 C5 4.9433 10.4690 -7.7480 C.2 1 UNCH -0.1500 + 12 C6 6.3055 10.2170 -7.8819 C.2 1 UNCH -0.1500 + 13 C7 7.1717 10.6829 -6.8987 C.2 1 UNCH 0.0000 + 14 C8 8.6208 10.5394 -6.8285 C.2 1 UNCH 0.0000 + 15 C9 9.4745 9.9053 -7.7247 C.2 1 UNCH -0.1500 + 16 C10 10.8405 9.8906 -7.4528 C.2 1 UNCH -0.1500 + 17 C11 11.3359 10.5039 -6.2987 C.2 1 UNCH -0.1500 + 18 C12 10.4748 11.1416 -5.3980 C.2 1 UNCH -0.1500 + 19 C13 9.1030 11.1692 -5.6492 C.2 1 UNCH -0.0320 + 20 C14 7.8434 11.7850 -3.3473 C.3 1 UNCH 0.1050 + 21 C15 6.5517 11.6031 -2.6402 C.2 1 UNCH 0.5556 + 22 C16 5.9020 12.8483 -2.1481 C.2 1 UNCH 0.1544 + 23 C17 6.0483 13.9968 -2.8213 C.2 1 UNCH 0.1544 + 24 C18 6.8618 14.0371 -4.0669 C.2 1 UNCH 0.5556 + 25 C19 8.0110 13.0997 -4.1179 C.3 1 UNCH 0.1050 + 26 C20 8.9513 11.2903 -2.5731 C.1 1 UNCH 0.4521 + 27 C21 9.2701 13.7925 -4.0396 C.1 1 UNCH 0.4521 + 28 H1 4.8976 12.1868 -4.8273 H 1 UNCH 0.1500 + 29 H2 3.3961 11.3667 -6.5528 H 1 UNCH 0.1500 + 30 H3 4.2486 10.1135 -8.5056 H 1 UNCH 0.1500 + 31 H4 6.6708 9.6660 -8.7426 H 1 UNCH 0.1500 + 32 H5 9.0982 9.4268 -8.6229 H 1 UNCH 0.1500 + 33 H6 11.5259 9.4004 -8.1403 H 1 UNCH 0.1500 + 34 H7 12.4055 10.4858 -6.0971 H 1 UNCH 0.1500 + 35 H8 10.9183 11.6002 -4.5192 H 1 UNCH 0.1500 +@BOND + 1 1 22 1 + 2 2 23 1 + 3 3 21 2 + 4 4 24 2 + 5 5 27 3 + 6 6 26 3 + 7 7 8 1 + 8 7 19 1 + 9 7 20 1 + 10 7 25 1 + 11 8 9 2 + 12 8 13 1 + 13 9 10 1 + 14 9 28 1 + 15 10 11 2 + 16 10 29 1 + 17 11 12 1 + 18 11 30 1 + 19 12 13 2 + 20 12 31 1 + 21 13 14 1 + 22 14 15 2 + 23 14 19 1 + 24 15 16 1 + 25 15 32 1 + 26 16 17 2 + 27 16 33 1 + 28 17 18 1 + 29 17 34 1 + 30 18 19 2 + 31 18 35 1 + 32 20 21 1 + 33 20 25 1 + 34 20 26 1 + 35 21 22 1 + 36 22 23 2 + 37 23 24 1 + 38 24 25 1 + 39 25 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3',4'-DICHLORO-1',6'-DICYANOSPIRO(FLUORENE-9,7'-(3')NORCARE +@MOLECULE +SALVEG + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.5829 1.5740 -0.1310 S.2 1 SALV 0.3685 + 2 O1 1.0851 2.7520 0.6489 O.2 1 SALV -0.5000 + 3 O2 2.4235 -2.8789 0.2265 O.2 1 SALV -0.5700 + 4 O3 -0.6690 -0.1875 -1.7699 O.2 1 SALV -0.5700 + 5 N1 2.9058 0.8892 0.6292 N.3 1 SALV -0.6920 + 6 N2 0.9231 -1.7005 -1.0593 N.3 1 SALV -0.4201 + 7 C1 1.6838 -1.9223 0.0525 C.2 1 SALV 0.5690 + 8 C2 1.3820 -0.8554 1.0797 C.3 1 SALV 0.0610 + 9 C3 2.5691 -0.0955 1.6639 C.3 1 SALV 0.2700 + 10 C4 0.5383 0.1460 0.2998 C.3 1 SALV 0.2545 + 11 C5 0.1625 -0.5722 -0.9611 C.2 1 SALV 0.5690 + 12 C6 0.8739 -2.6084 -2.1811 C.3 1 SALV 0.3001 + 13 C7 3.7814 -0.9278 2.1404 C.3 1 SALV 0.0000 + 14 C8 3.3712 -1.9327 3.2238 C.3 1 SALV 0.0000 + 15 C9 4.9028 -0.0391 2.6979 C.3 1 SALV 0.0000 + 16 H1 3.5523 1.5767 1.0181 H 1 SALV 0.3600 + 17 H2 0.7798 -1.3257 1.8668 H 1 SALV 0.0000 + 18 H3 2.1967 0.4679 2.5329 H 1 SALV 0.0000 + 19 H4 -0.3472 0.4722 0.8518 H 1 SALV 0.0000 + 20 H5 0.5079 -2.0969 -3.0752 H 1 SALV 0.0000 + 21 H6 0.1925 -3.4267 -1.9299 H 1 SALV 0.0000 + 22 H7 1.8682 -3.0240 -2.3678 H 1 SALV 0.0000 + 23 H8 4.2059 -1.4829 1.2955 H 1 SALV 0.0000 + 24 H9 4.2354 -2.5184 3.5560 H 1 SALV 0.0000 + 25 H10 2.6209 -2.6403 2.8606 H 1 SALV 0.0000 + 26 H11 2.9554 -1.4212 4.0988 H 1 SALV 0.0000 + 27 H12 5.7233 -0.6498 3.0904 H 1 SALV 0.0000 + 28 H13 4.5377 0.5980 3.5106 H 1 SALV 0.0000 + 29 H14 5.3262 0.6050 1.9210 H 1 SALV 0.0000 +@BOND + 1 1 2 2 + 2 1 5 1 + 3 1 10 1 + 4 3 7 2 + 5 4 11 2 + 6 5 9 1 + 7 5 16 1 + 8 6 7 am + 9 6 11 am + 10 6 12 1 + 11 7 8 1 + 12 8 9 1 + 13 8 10 1 + 14 8 17 1 + 15 9 13 1 + 16 9 18 1 + 17 10 11 1 + 18 10 19 1 + 19 12 20 1 + 20 12 21 1 + 21 12 22 1 + 22 13 14 1 + 23 13 15 1 + 24 13 23 1 + 25 14 24 1 + 26 14 25 1 + 27 14 26 1 + 28 15 27 1 + 29 15 28 1 + 30 15 29 1 +@SUBSTRUCTURE + 1 SALV 1 +@COMMENT +COMMENT 4-ISOPROPYL-7-METHYL-6,8-DIOXO-2-THIA-3,7-DIAZABICYCLO(3.3. +@MOLECULE +SAMFUH + 18 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 11.5071 2.9850 1.9858 S.2 1 SAMF -0.7500 + 2 S2 11.8567 0.5080 3.6302 S.3 1 SAMF -0.7500 + 3 S3 10.9607 3.6677 5.3954 S.1 1 SAMF 0.8491 + 4 C1 11.7733 2.2164 3.4896 C.2 1 SAMF 0.4270 + 5 N1 12.1148 2.9289 4.5780 N.3 1 SAMF -0.4671 + 6 O1 10.5135 4.9599 4.8663 O.2 1 SAMF -0.6500 + 7 O2 11.2295 3.7316 6.8391 O.2 1 SAMF -0.6500 + 8 C2 9.4305 2.6838 5.3682 C.2 1 SAMF -0.0090 + 9 C3 8.4362 2.9782 4.4341 C.2 1 SAMF -0.1500 + 10 C4 7.2478 2.2479 4.4448 C.2 1 SAMF -0.1500 + 11 C5 7.0551 1.2395 5.3929 C.2 1 SAMF -0.1500 + 12 C6 8.0511 0.9579 6.3319 C.2 1 SAMF -0.1500 + 13 C7 9.2420 1.6845 6.3249 C.2 1 SAMF -0.1500 + 14 H1 8.6109 3.7529 3.6921 H 1 SAMF 0.1500 + 15 H2 6.4875 2.4589 3.7007 H 1 SAMF 0.1500 + 16 H3 6.1370 0.6622 5.3881 H 1 SAMF 0.1500 + 17 H4 7.9140 0.1647 7.0585 H 1 SAMF 0.1500 + 18 H5 10.0344 1.4691 7.0352 H 1 SAMF 0.1500 +@BOND + 1 1 4 2 + 2 2 4 1 + 3 3 8 1 + 4 3 7 2 + 5 3 6 2 + 6 3 5 1 + 7 4 5 1 + 8 8 13 1 + 9 8 9 2 + 10 9 14 1 + 11 9 10 1 + 12 10 15 1 + 13 10 11 2 + 14 11 16 1 + 15 11 12 1 + 16 12 17 1 + 17 12 13 2 + 18 13 18 1 +@SUBSTRUCTURE + 1 SAMF 1 +@COMMENT +COMMENT DI-POTASSIUM N-PHENYLSULFONYL-DITHIOCARBIMATE DIHYDRATE +@MOLECULE +SAMXUZ + 33 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 5.7317 3.4201 0.7165 P 1 SAMX 1.3482 + 2 S1 7.2309 4.2311 1.6818 S.2 1 SAMX -0.6773 + 3 S2 4.5880 -0.5750 1.5608 S.2 1 SAMX -0.3800 + 4 N1 5.0303 2.0992 1.5664 N.3 1 SAMX -0.6161 + 5 N2 5.7411 1.0558 -0.3199 N.3 1 SAMX -0.4691 + 6 N3 4.4427 4.3718 0.3013 N.3 1 SAMX -0.8079 + 7 C1 5.1333 0.8777 0.9247 C.2 1 SAMX 0.5000 + 8 C2 6.1399 2.3450 -0.6311 C.2 1 SAMX -0.0380 + 9 C3 4.4898 2.2752 2.9038 C.3 1 SAMX 0.3001 + 10 C4 5.9950 -0.0366 -1.2644 C.3 1 SAMX 0.3001 + 11 C5 6.7547 2.7348 -1.7577 C.2 1 SAMX -0.3000 + 12 C6 3.2050 3.8429 -0.2640 C.3 1 SAMX 0.2700 + 13 C7 3.1330 4.0027 -1.7772 C.3 1 SAMX 0.0000 + 14 C8 4.4190 5.8170 0.4964 C.3 1 SAMX 0.2700 + 15 C9 3.9119 6.1951 1.8814 C.3 1 SAMX 0.0000 + 16 H1 4.4111 3.3389 3.1372 H 1 SAMX 0.0000 + 17 H2 5.1536 1.7908 3.6254 H 1 SAMX 0.0000 + 18 H3 3.4931 1.8295 2.9636 H 1 SAMX 0.0000 + 19 H4 5.6119 -0.9983 -0.9214 H 1 SAMX 0.0000 + 20 H5 7.0756 -0.1361 -1.4108 H 1 SAMX 0.0000 + 21 H6 5.5080 0.1943 -2.2176 H 1 SAMX 0.0000 + 22 H7 7.0346 3.7763 -1.8919 H 1 SAMX 0.1500 + 23 H8 7.0057 2.0580 -2.5649 H 1 SAMX 0.1500 + 24 H9 3.0932 2.7805 -0.0267 H 1 SAMX 0.0000 + 25 H10 2.3350 4.3291 0.1938 H 1 SAMX 0.0000 + 26 H11 2.1871 3.5947 -2.1486 H 1 SAMX 0.0000 + 27 H12 3.9425 3.4657 -2.2785 H 1 SAMX 0.0000 + 28 H13 3.1809 5.0531 -2.0796 H 1 SAMX 0.0000 + 29 H14 5.4180 6.2380 0.3418 H 1 SAMX 0.0000 + 30 H15 3.7894 6.3100 -0.2538 H 1 SAMX 0.0000 + 31 H16 3.9016 7.2846 1.9904 H 1 SAMX 0.0000 + 32 H17 4.5487 5.7887 2.6722 H 1 SAMX 0.0000 + 33 H18 2.8915 5.8341 2.0460 H 1 SAMX 0.0000 +@BOND + 1 1 8 1 + 2 1 6 1 + 3 1 4 1 + 4 1 2 2 + 5 3 7 2 + 6 4 9 1 + 7 4 7 1 + 8 5 10 1 + 9 5 8 1 + 10 5 7 1 + 11 6 14 1 + 12 6 12 1 + 13 8 11 2 + 14 9 18 1 + 15 9 17 1 + 16 9 16 1 + 17 10 21 1 + 18 10 20 1 + 19 10 19 1 + 20 11 23 1 + 21 11 22 1 + 22 12 25 1 + 23 12 24 1 + 24 12 13 1 + 25 13 28 1 + 26 13 27 1 + 27 13 26 1 + 28 14 30 1 + 29 14 29 1 + 30 14 15 1 + 31 15 33 1 + 32 15 32 1 + 33 15 31 1 +@SUBSTRUCTURE + 1 SAMX 1 +@COMMENT +COMMENT 2-DIETHYLAMINO-1,4-DIMETHYL-3-METHYLENE-2-THIOXO-1,4,2-DIAZ +@MOLECULE +SANKEX10 + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 8.9813 3.9244 -1.1152 N.3 1 UNCH 0.3140 + 2 N2 10.1262 4.6461 -1.2798 N.2 1 UNCH -0.7068 + 3 C1 9.7208 5.9222 -1.1970 C.2 1 UNCH 0.1388 + 4 C2 7.4416 7.1430 -0.7795 C.2 1 UNCH 0.6416 + 5 C3 6.0257 6.7236 -0.5030 C.2 1 UNCH -0.1356 + 6 C4 5.7062 5.4159 -0.4560 C.2 1 UNCH -0.0500 + 7 N3 6.6125 4.3920 -0.6629 N.3 1 UNCH -0.5840 + 8 C5 7.8987 4.7317 -0.9009 C.2 1 UNCH -0.0676 + 9 C6 8.3445 6.0302 -0.9616 C.2 1 UNCH -0.0860 + 10 O1 7.7685 8.3215 -0.8339 O.2 1 UNCH -0.5700 + 11 C7 9.0011 2.4667 -1.1575 C.3 1 UNCH 0.5356 + 12 C8 10.0890 1.8468 -2.0165 C.3 1 UNCH 0.0000 + 13 C9 11.2510 1.7378 -1.0570 C.3 1 UNCH 0.2800 + 14 C10 10.5529 1.4638 0.2733 C.3 1 UNCH 0.2800 + 15 C11 11.2576 2.1320 1.4529 C.3 1 UNCH 0.2800 + 16 O2 12.1093 0.6753 -1.4492 O.3 1 UNCH -0.6800 + 17 O3 9.2036 1.9820 0.1866 O.3 1 UNCH -0.5600 + 18 O4 10.5831 1.7998 2.6664 O.3 1 UNCH -0.6800 + 19 H1 10.4478 6.7174 -1.3052 H 1 UNCH 0.1500 + 20 H2 5.3071 7.5150 -0.3412 H 1 UNCH 0.1500 + 21 H3 4.6935 5.0836 -0.2461 H 1 UNCH 0.1500 + 22 H4 6.2844 3.4415 -0.5039 H 1 UNCH 0.4000 + 23 H5 8.0126 2.1447 -1.5017 H 1 UNCH 0.0000 + 24 H6 9.7833 0.8432 -2.3398 H 1 UNCH 0.0000 + 25 H7 10.3295 2.4135 -2.9215 H 1 UNCH 0.0000 + 26 H8 11.8352 2.6636 -1.0390 H 1 UNCH 0.0000 + 27 H9 10.4632 0.3878 0.4653 H 1 UNCH 0.0000 + 28 H10 11.2439 3.2228 1.3603 H 1 UNCH 0.0000 + 29 H11 12.2949 1.7952 1.5370 H 1 UNCH 0.0000 + 30 H12 12.9020 0.7069 -0.8848 H 1 UNCH 0.4000 + 31 H13 9.6411 2.0027 2.5089 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 11 1 + 4 2 3 2 + 5 3 9 1 + 6 3 19 1 + 7 4 5 1 + 8 4 9 1 + 9 4 10 2 + 10 5 6 2 + 11 5 20 1 + 12 6 7 1 + 13 6 21 1 + 14 7 8 1 + 15 7 22 1 + 16 8 9 2 + 17 11 12 1 + 18 11 17 1 + 19 11 23 1 + 20 12 13 1 + 21 12 24 1 + 22 12 25 1 + 23 13 14 1 + 24 13 16 1 + 25 13 26 1 + 26 14 15 1 + 27 14 17 1 + 28 14 27 1 + 29 15 18 1 + 30 15 28 1 + 31 15 29 1 + 32 16 30 1 + 33 18 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-(2-DEOXY-BETA-D-ERYTHRO-PENTOFURANOSYL)-1H-PYRAZOLO(3,4-B +@MOLECULE +SAVDOI + 40 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.7071 5.4803 4.8785 S.2 1 SAVD 0.6040 + 2 O1 2.8130 6.9758 4.8785 O.2 1 SAVD -0.5000 + 3 C1 5.7257 4.8180 4.8785 C.3 1 SAVD 0.0000 + 4 O2 3.6057 4.9272 3.6616 O.3 1 SAVD -0.3320 + 5 C2 4.9685 5.3728 3.6309 C.3 1 SAVD 0.2800 + 6 C3 5.5473 5.1070 2.1960 C.3 1 SAVD 0.0000 + 7 C4 5.8432 3.2956 4.8785 C.3 1 SAVD 0.0000 + 8 C5 4.9313 6.1640 1.2412 C.3 1 SAVD 0.0000 + 9 C6 5.1651 3.7325 1.6097 C.3 1 SAVD 0.0000 + 10 C7 7.0742 5.2819 2.1594 C.3 1 SAVD 0.0000 + 11 H1 6.7380 5.2378 4.8785 H 1 SAVD 0.0000 + 12 H2 4.9780 6.4687 3.7375 H 1 SAVD 0.0000 + 13 H3 6.4126 2.9416 5.7383 H 1 SAVD 0.0000 + 14 H4 4.8669 2.8025 4.8785 H 1 SAVD 0.0000 + 15 H5 7.3697 6.2548 2.5679 H 1 SAVD 0.0000 + 16 H6 7.4539 5.2263 1.1325 H 1 SAVD 0.0000 + 17 H7 7.5875 4.5044 2.7329 H 1 SAVD 0.0000 + 18 H8 5.5275 3.6376 0.5787 H 1 SAVD 0.0000 + 19 H9 5.5928 2.8974 2.1641 H 1 SAVD 0.0000 + 20 H10 4.0792 3.5916 1.5798 H 1 SAVD 0.0000 + 21 H11 5.1932 7.1816 1.5529 H 1 SAVD 0.0000 + 22 H12 3.8382 6.0920 1.2173 H 1 SAVD 0.0000 + 23 H13 5.2945 6.0335 0.2151 H 1 SAVD 0.0000 + 24 O2G 3.6057 4.9272 6.0954 O.3 1 SAVD -0.3320 + 25 C2G 4.9685 5.3728 6.1262 C.3 1 SAVD 0.2800 + 26 H3G 6.4126 2.9416 4.0186 H 1 SAVD 0.0000 + 27 C3G 5.5473 5.1069 7.5610 C.3 1 SAVD 0.0000 + 28 H2G 4.9780 6.4687 6.0195 H 1 SAVD 0.0000 + 29 C5G 4.9313 6.1639 8.5159 C.3 1 SAVD 0.0000 + 30 C6G 5.1651 3.7324 8.1473 C.3 1 SAVD 0.0000 + 31 C7G 7.0742 5.2819 7.5976 C.3 1 SAVD 0.0000 + 32 H11G 5.1932 7.1815 8.2041 H 1 SAVD 0.0000 + 33 H12G 3.8382 6.0920 8.5397 H 1 SAVD 0.0000 + 34 H13G 5.2945 6.0335 9.5419 H 1 SAVD 0.0000 + 35 H8G 5.5275 3.6375 9.1783 H 1 SAVD 0.0000 + 36 H9G 5.5928 2.8973 7.5929 H 1 SAVD 0.0000 + 37 H10G 4.0792 3.5915 8.1772 H 1 SAVD 0.0000 + 38 H5G 7.3697 6.2548 7.1892 H 1 SAVD 0.0000 + 39 H6G 7.4539 5.2262 8.6245 H 1 SAVD 0.0000 + 40 H7G 7.5875 4.5043 7.0241 H 1 SAVD 0.0000 +@BOND + 1 1 24 1 + 2 1 4 1 + 3 1 2 2 + 4 3 25 1 + 5 3 11 1 + 6 3 7 1 + 7 3 5 1 + 8 4 5 1 + 9 5 12 1 + 10 5 6 1 + 11 6 10 1 + 12 6 9 1 + 13 6 8 1 + 14 7 26 1 + 15 7 14 1 + 16 7 13 1 + 17 8 23 1 + 18 8 22 1 + 19 8 21 1 + 20 9 20 1 + 21 9 19 1 + 22 9 18 1 + 23 10 17 1 + 24 10 16 1 + 25 10 15 1 + 26 24 25 1 + 27 25 28 1 + 28 25 27 1 + 29 27 31 1 + 30 27 30 1 + 31 27 29 1 + 32 29 34 1 + 33 29 33 1 + 34 29 32 1 + 35 30 37 1 + 36 30 36 1 + 37 30 35 1 + 38 31 40 1 + 39 31 39 1 + 40 31 38 1 +@SUBSTRUCTURE + 1 SAVD 1 +@COMMENT +COMMENT TRANS,TRANS-4,6-DI-T-BUTYL-TRANS-5-METHYL-1,3,2-DIOXATHIANE +@MOLECULE +SAWKEG10 + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.4137 1.5396 0.3499 N.3 1 UNCH 0.7186 + 2 N2 0.8584 0.9704 1.4133 N.2 1 UNCH -0.7068 + 3 C1 0.9860 1.8764 2.4000 C.2 1 UNCH 0.2348 + 4 C2 1.6455 3.0391 1.9096 C.2 1 UNCH -0.1500 + 5 C3 1.9039 2.7814 0.5849 C.2 1 UNCH -0.3016 + 6 N3 1.4729 0.8960 -0.8821 N.3 1 UNCH -0.8690 + 7 C4 0.4857 1.6143 3.7566 C.2 1 UNCH 0.0540 + 8 C5 -0.1454 0.3968 4.0591 C.2 1 UNCH -0.1500 + 9 C6 -0.6257 0.1351 5.3454 C.2 1 UNCH -0.1500 + 10 C7 -0.4818 1.0885 6.3496 C.2 1 UNCH -0.1500 + 11 C8 0.1413 2.3018 6.0684 C.2 1 UNCH -0.1500 + 12 C9 0.6221 2.5637 4.7809 C.2 1 UNCH -0.1500 + 13 H1 1.8997 3.9427 2.4438 H 1 UNCH 0.1500 + 14 H2 2.3823 3.3605 -0.1906 H 1 UNCH 0.1500 + 15 H3 0.5251 0.6391 -1.1461 H 1 UNCH 0.3600 + 16 H4 1.9421 0.0041 -0.7462 H 1 UNCH 0.3600 + 17 H5 -0.2681 -0.3623 3.2887 H 1 UNCH 0.1500 + 18 H6 -1.1110 -0.8137 5.5585 H 1 UNCH 0.1500 + 19 H7 -0.8550 0.8858 7.3501 H 1 UNCH 0.1500 + 20 H8 0.2545 3.0474 6.8514 H 1 UNCH 0.1500 + 21 H9 1.1022 3.5208 4.5995 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 2 3 2 + 5 3 4 1 + 6 3 7 1 + 7 4 5 2 + 8 4 13 1 + 9 5 14 1 + 10 6 15 1 + 11 6 16 1 + 12 7 8 2 + 13 7 12 1 + 14 8 9 1 + 15 8 17 1 + 16 9 10 2 + 17 9 18 1 + 18 10 11 1 + 19 10 19 1 + 20 11 12 2 + 21 11 20 1 + 22 12 21 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-AMINO-3-PHENYLPYRAZOLE +@MOLECULE +SEBPEU01 + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.9462 0.2508 3.5846 N.3 1 SEBP -0.7939 + 2 C1 5.0163 0.3040 2.2681 C.2 1 SEBP 0.6038 + 3 N2 6.2137 0.0141 1.7951 N.2 1 SEBP -0.7939 + 4 C2 7.1340 -0.2888 2.9036 C.3 1 SEBP 0.4895 + 5 C3 6.2481 -0.1231 4.1511 C.3 1 SEBP 0.4895 + 6 C4 3.8797 0.6519 1.3798 C.3 1 SEBP 0.2485 + 7 C5 2.5892 0.9528 2.1021 C.2 1 SEBP -0.1435 + 8 C6 1.6890 -0.0790 2.4051 C.2 1 SEBP -0.1500 + 9 C7 0.5233 0.1921 3.1220 C.2 1 SEBP -0.1500 + 10 C8 0.2490 1.4911 3.5444 C.2 1 SEBP -0.1500 + 11 C9 1.1376 2.5227 3.2488 C.2 1 SEBP -0.1500 + 12 C10 2.3047 2.2569 2.5322 C.2 1 SEBP -0.1500 + 13 H1 4.0753 0.4540 4.0699 H 1 SEBP 0.4500 + 14 H2 6.4065 0.0175 0.7991 H 1 SEBP 0.4500 + 15 H3 7.5084 -1.3104 2.7987 H 1 SEBP 0.0000 + 16 H4 7.9649 0.4215 2.8929 H 1 SEBP 0.0000 + 17 H5 6.1499 -1.0565 4.7117 H 1 SEBP 0.0000 + 18 H6 6.6064 0.6755 4.8059 H 1 SEBP 0.0000 + 19 H7 4.1586 1.5179 0.7658 H 1 SEBP 0.0000 + 20 H8 3.7132 -0.1719 0.6739 H 1 SEBP 0.0000 + 21 H9 1.8761 -1.1010 2.0802 H 1 SEBP 0.1500 + 22 H10 -0.1806 -0.6074 3.3447 H 1 SEBP 0.1500 + 23 H11 -0.6658 1.7023 4.0946 H 1 SEBP 0.1500 + 24 H12 0.9120 3.5376 3.5702 H 1 SEBP 0.1500 + 25 H13 2.9786 3.0818 2.3077 H 1 SEBP 0.1500 +@BOND + 1 1 13 1 + 2 1 5 1 + 3 1 2 am + 4 2 6 1 + 5 2 3 2 + 6 3 14 1 + 7 3 4 1 + 8 4 16 1 + 9 4 15 1 + 10 4 5 1 + 11 5 18 1 + 12 5 17 1 + 13 6 20 1 + 14 6 19 1 + 15 6 7 1 + 16 7 12 1 + 17 7 8 2 + 18 8 21 1 + 19 8 9 1 + 20 9 22 1 + 21 9 10 2 + 22 10 23 1 + 23 10 11 1 + 24 11 24 1 + 25 11 12 2 + 26 12 25 1 +@SUBSTRUCTURE + 1 SEBP 1 +@COMMENT +COMMENT 2-BENZYL-2-IMIDAZOLINE CHLORIDE (PHARMACOLOGICAL ACTIVITITY +@MOLECULE +SECDAF + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.0532 -1.0753 9.6642 S.1 1 CHGB 1.4470 + 2 O1 3.1761 -1.6812 8.9657 O.2 1 CHGB -0.6500 + 3 O2 1.5620 -1.6639 10.8932 O.2 1 CHGB -0.6500 + 4 N1 0.8087 -0.8574 8.5533 N.3 1 CHGB -0.6847 + 5 C1 1.2015 -0.5387 7.1695 C.3 1 CHGB 0.3557 + 6 C2 -0.2711 -0.0495 9.0753 C.2 1 CHGB 0.2054 + 7 C3 -0.0076 1.1397 9.7061 C.2 1 CHGB -0.1784 + 8 C4 1.4531 1.5260 9.9040 C.2 1 CHGB 0.0284 + 9 O3 -0.8819 1.9548 10.1399 O.3 1 CHGB -0.8500 + 10 C5 1.8305 2.8735 10.0723 C.2 1 CHGB -0.1500 + 11 C6 3.1625 3.2477 10.2934 C.2 1 CHGB -0.1500 + 12 C7 4.1605 2.2792 10.3539 C.2 1 CHGB -0.1500 + 13 C8 3.8231 0.9395 10.1924 C.2 1 CHGB -0.1500 + 14 C9 2.4816 0.5881 9.9840 C.2 1 CHGB -0.0090 + 15 C10 -1.6667 -0.6018 8.7604 C.2 1 CHGB 0.6156 + 16 O4 -1.7868 -1.6007 8.0461 O.2 1 CHGB -0.5700 + 17 N2 -2.7061 0.0972 9.3174 N.3 1 CHGB -0.5470 + 18 C11 -4.0740 -0.1501 9.2540 C.2 1 CHGB 0.4270 + 19 N3 -4.8527 0.7652 9.8750 N.2 1 CHGB -0.6200 + 20 C12 -6.1894 0.5822 9.8550 C.2 1 CHGB 0.1600 + 21 C13 -6.8121 -0.4861 9.2381 C.2 1 CHGB -0.1500 + 22 C14 -6.0090 -1.4226 8.6050 C.2 1 CHGB -0.1500 + 23 C15 -4.6236 -1.2545 8.6128 C.2 1 CHGB -0.1500 + 24 H1 1.7979 -1.3546 6.7499 H 1 CHGB 0.0000 + 25 H2 1.7726 0.3926 7.1120 H 1 CHGB 0.0000 + 26 H3 0.3174 -0.4349 6.5312 H 1 CHGB 0.0000 + 27 H4 1.0638 3.6467 10.0389 H 1 CHGB 0.1500 + 28 H5 3.4059 4.2981 10.4231 H 1 CHGB 0.1500 + 29 H6 5.1930 2.5680 10.5241 H 1 CHGB 0.1500 + 30 H7 4.5926 0.1730 10.2235 H 1 CHGB 0.1500 + 31 H8 -2.4229 0.9443 9.8278 H 1 CHGB 0.3700 + 32 H9 -6.7620 1.3478 10.3690 H 1 CHGB 0.1500 + 33 H10 -7.8902 -0.5857 9.2528 H 1 CHGB 0.1500 + 34 H11 -6.4462 -2.2827 8.1080 H 1 CHGB 0.1500 + 35 H12 -4.0046 -1.9948 8.1219 H 1 CHGB 0.1500 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 4 1 + 4 1 14 1 + 5 4 5 1 + 6 4 6 1 + 7 5 24 1 + 8 5 25 1 + 9 5 26 1 + 10 6 7 2 + 11 6 15 1 + 12 7 8 1 + 13 7 9 1 + 14 8 10 2 + 15 8 14 1 + 16 10 11 1 + 17 10 27 1 + 18 11 12 2 + 19 11 28 1 + 20 12 13 1 + 21 12 29 1 + 22 13 14 2 + 23 13 30 1 + 24 15 16 2 + 25 15 17 am + 26 17 18 am + 27 17 31 1 + 28 18 19 2 + 29 18 23 1 + 30 19 20 1 + 31 20 21 2 + 32 20 32 1 + 33 21 22 1 + 34 21 33 1 + 35 22 23 2 + 36 22 34 1 + 37 23 35 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT 2-ETHANOLAMMONIUM N-(2-PYRIDYL)-2-METHYL-2H-1,2-BENZOTHIAZO +@MOLECULE +SEFRAW + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.2063 1.4611 2.5331 S.3 1 SEFR -0.0800 + 2 C1 -0.1470 0.7000 3.2430 C.2 1 SEFR 0.1660 + 3 N1 -0.5874 -0.5141 2.8151 N.2 1 SEFR -0.5760 + 4 C2 -1.6252 -0.9519 3.4494 C.2 1 SEFR 0.4500 + 5 N2 -2.2633 -0.2908 4.4700 N.3 1 SEFR -0.4900 + 6 C3 -1.8584 0.9399 4.9365 C.2 1 SEFR 0.7160 + 7 C4 -0.6924 1.4667 4.2556 C.2 1 SEFR -0.0860 + 8 C5 0.0158 2.6933 4.4575 C.2 1 SEFR -0.1810 + 9 C6 -0.3013 3.7686 5.4547 C.3 1 SEFR 0.1810 + 10 C7 0.8619 4.7612 5.6149 C.3 1 SEFR 0.0000 + 11 C8 1.4558 5.1687 4.2590 C.3 1 SEFR 0.0000 + 12 C9 2.0219 3.9585 3.4999 C.3 1 SEFR 0.1800 + 13 C10 1.0660 2.8080 3.5649 C.2 1 SEFR -0.1400 + 14 O1 -2.4522 1.5136 5.8436 O.2 1 SEFR -0.5700 + 15 H1 -2.0807 -1.9232 3.1993 H 1 SEFR 0.0600 + 16 H2 -3.0731 -0.6893 4.9200 H 1 SEFR 0.3700 + 17 H3 -1.1937 4.3076 5.1133 H 1 SEFR 0.0000 + 18 H4 -0.5335 3.3303 6.4315 H 1 SEFR 0.0000 + 19 H9 2.2272 4.2438 2.4619 H 1 SEFR 0.0000 + 20 H10 2.9727 3.6563 3.9560 H 1 SEFR 0.0000 + 21 H5 0.5121 5.6492 6.1533 H 1 SEFR 0.0000 + 22 H6 1.6504 4.3054 6.2278 H 1 SEFR 0.0000 + 23 H7 0.6744 5.6486 3.6557 H 1 SEFR 0.0000 + 24 H8 2.2484 5.9112 4.4050 H 1 SEFR 0.0000 +@BOND + 1 1 13 1 + 2 1 2 1 + 3 2 7 2 + 4 2 3 1 + 5 3 4 2 + 6 4 15 1 + 7 4 5 am + 8 5 16 1 + 9 5 6 am + 10 6 14 2 + 11 6 7 1 + 12 7 8 1 + 13 8 13 2 + 14 8 9 1 + 15 9 18 1 + 16 9 17 1 + 17 9 10 1 + 18 10 22 1 + 19 10 21 1 + 20 10 11 1 + 21 11 24 1 + 22 11 23 1 + 23 11 12 1 + 24 12 20 1 + 25 12 19 1 + 26 12 13 1 +@SUBSTRUCTURE + 1 SEFR 1 +@COMMENT +COMMENT 4-OXO-5,6,7,8-TETRAHYDRO-3H-BENZOTHIENO(2,3-D)PYRIMIDINE +@MOLECULE +SEFYIL + 32 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -1.1063 1.3545 1.3639 S.2 1 SEFY -0.6773 + 2 S2 1.3547 5.3162 4.3675 S.2 1 SEFY -0.3800 + 3 P1 0.6315 2.1731 1.6032 P 1 SEFY 1.4757 + 4 O1 1.1916 2.9654 0.3115 O.3 1 SEFY -0.5512 + 5 O2 1.8560 1.1658 1.9148 O.3 1 SEFY -0.5512 + 6 N1 0.6890 3.3138 2.8370 N.3 1 SEFY -0.6860 + 7 C1 1.6456 4.2252 3.1329 C.2 1 SEFY 0.3790 + 8 C2 2.9288 4.2661 2.3470 C.3 1 SEFY 0.0610 + 9 C3 1.5252 2.2374 -0.8644 C.3 1 SEFY 0.2800 + 10 C4 3.0266 2.3510 -1.0858 C.3 1 SEFY 0.0000 + 11 C5 0.7522 2.8388 -2.0287 C.3 1 SEFY 0.0000 + 12 C6 1.8174 0.3359 3.0692 C.3 1 SEFY 0.2800 + 13 C7 3.0454 0.6391 3.9159 C.3 1 SEFY 0.0000 + 14 C8 1.8170 -1.1160 2.6129 C.3 1 SEFY 0.0000 + 15 H1 -0.1638 3.3904 3.3738 H 1 SEFY 0.3700 + 16 H2 3.7380 4.7219 2.9265 H 1 SEFY 0.0000 + 17 H3 2.7767 4.8598 1.4402 H 1 SEFY 0.0000 + 18 H4 3.2537 3.2642 2.0624 H 1 SEFY 0.0000 + 19 H5 1.2559 1.1810 -0.7572 H 1 SEFY 0.0000 + 20 H6 3.3353 3.3996 -1.1603 H 1 SEFY 0.0000 + 21 H7 3.3352 1.8279 -1.9959 H 1 SEFY 0.0000 + 22 H8 3.5723 1.9234 -0.2380 H 1 SEFY 0.0000 + 23 H9 0.9830 3.9034 -2.1464 H 1 SEFY 0.0000 + 24 H10 0.9817 2.3242 -2.9667 H 1 SEFY 0.0000 + 25 H11 -0.3259 2.7702 -1.8490 H 1 SEFY 0.0000 + 26 H12 0.9175 0.5356 3.6610 H 1 SEFY 0.0000 + 27 H13 3.0852 -0.0008 4.8026 H 1 SEFY 0.0000 + 28 H14 3.9661 0.4995 3.3387 H 1 SEFY 0.0000 + 29 H15 3.0365 1.6833 4.2443 H 1 SEFY 0.0000 + 30 H16 1.8034 -1.8008 3.4662 H 1 SEFY 0.0000 + 31 H17 0.9429 -1.3236 1.9873 H 1 SEFY 0.0000 + 32 H18 2.6987 -1.3355 2.0005 H 1 SEFY 0.0000 +@BOND + 1 1 3 2 + 2 2 7 2 + 3 3 6 1 + 4 3 5 1 + 5 3 4 1 + 6 4 9 1 + 7 5 12 1 + 8 6 15 1 + 9 6 7 1 + 10 7 8 1 + 11 8 18 1 + 12 8 17 1 + 13 8 16 1 + 14 9 19 1 + 15 9 11 1 + 16 9 10 1 + 17 10 22 1 + 18 10 21 1 + 19 10 20 1 + 20 11 25 1 + 21 11 24 1 + 22 11 23 1 + 23 12 26 1 + 24 12 14 1 + 25 12 13 1 + 26 13 29 1 + 27 13 28 1 + 28 13 27 1 + 29 14 32 1 + 30 14 31 1 + 31 14 30 1 +@SUBSTRUCTURE + 1 SEFY 1 +@COMMENT +COMMENT N-(DI-ISOPROPOXYTHIOPHOSPHORYL)THIOACETAMIDE +@MOLECULE +SEGFIT + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.9264 2.3261 1.7449 S.2 1 SEGF -0.3800 + 2 O1 2.6482 -2.8412 -1.7960 O.3 1 SEGF -0.9000 + 3 O2 4.4051 -3.7069 -0.6428 O.2 1 SEGF -0.9000 + 4 N1 2.5195 -0.7631 -0.0586 N.2 1 SEGF -0.5120 + 5 N2 2.3200 0.2369 0.8533 N.3 1 SEGF -0.3680 + 6 N3 0.8009 1.1314 -0.6139 N.3 1 SEGF -0.8000 + 7 C1 1.3634 1.1869 0.6194 C.2 1 SEGF 0.5000 + 8 C2 3.4315 -1.6755 0.1719 C.2 1 SEGF 0.2168 + 9 C3 3.4983 -2.8391 -0.8503 C.2 1 SEGF 0.9470 + 10 C4 4.3735 -1.6452 1.3222 C.2 1 SEGF 0.0862 + 11 C5 5.2339 -0.5532 1.4836 C.2 1 SEGF -0.1500 + 12 C6 6.0921 -0.5040 2.5822 C.2 1 SEGF -0.1500 + 13 C7 6.0936 -1.5455 3.5119 C.2 1 SEGF -0.1500 + 14 C8 5.2424 -2.6396 3.3424 C.2 1 SEGF -0.1500 + 15 C9 4.3804 -2.6916 2.2463 C.2 1 SEGF -0.1500 + 16 H1 2.7431 0.1747 1.7718 H 1 SEGF 0.3700 + 17 H2 1.0194 0.2721 -1.1199 H 1 SEGF 0.3700 + 18 H3 -0.0402 1.6408 -0.8272 H 1 SEGF 0.3700 + 19 H4 5.2359 0.2479 0.7483 H 1 SEGF 0.1500 + 20 H5 6.7642 0.3402 2.7063 H 1 SEGF 0.1500 + 21 H6 6.7690 -1.5126 4.3623 H 1 SEGF 0.1500 + 22 H7 5.2570 -3.4604 4.0538 H 1 SEGF 0.1500 + 23 H8 3.7314 -3.5518 2.0988 H 1 SEGF 0.1500 +@BOND + 1 1 7 2 + 2 2 9 1 + 3 3 9 2 + 4 4 5 1 + 5 4 8 2 + 6 5 7 1 + 7 5 16 1 + 8 6 7 1 + 9 6 17 1 + 10 6 18 1 + 11 8 9 1 + 12 8 10 1 + 13 10 11 2 + 14 10 15 1 + 15 11 12 1 + 16 11 19 1 + 17 12 13 2 + 18 12 20 1 + 19 13 14 1 + 20 13 21 1 + 21 14 15 2 + 22 14 22 1 + 23 15 23 1 +@SUBSTRUCTURE + 1 SEGF 1 +@COMMENT +COMMENT BENZOYLFORMIC ACID THIOSEMICARBAZONE +@MOLECULE +SEGJAP + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 7.4841 0.8635 5.3462 SI 1 SEGJ 1.3350 + 2 CL1 9.3906 1.2679 4.7475 CL 1 SEGJ -0.3701 + 3 CL2 6.4039 2.5801 5.1457 CL 1 SEGJ -0.3701 + 4 O1 7.4951 0.3887 6.9352 O.3 1 SEGJ -0.3799 + 5 O2 6.8725 -0.2768 4.3312 O.3 1 SEGJ -0.3799 + 6 C1 7.5761 1.1162 8.0913 C.2 1 SEGJ 0.0825 + 7 C2 8.7013 1.9136 8.3372 C.2 1 SEGJ -0.1500 + 8 C3 8.7986 2.6540 9.5160 C.2 1 SEGJ -0.1500 + 9 C4 7.7798 2.5930 10.4611 C.2 1 SEGJ -0.1500 + 10 C5 6.6692 1.7815 10.2317 C.2 1 SEGJ -0.1500 + 11 C6 5.7328 -1.0295 4.2572 C.2 1 SEGJ 0.0825 + 12 H1 9.5237 1.9625 7.6290 H 1 SEGJ 0.1500 + 13 H2 9.6732 3.2742 9.6978 H 1 SEGJ 0.1500 + 14 H3 7.8524 3.1689 11.3804 H 1 SEGJ 0.1500 + 15 H4 5.8821 1.7315 10.9811 H 1 SEGJ 0.1500 + 16 C6B 6.5616 1.0295 9.0552 C.2 1 SEGJ 0.0825 + 17 C1B 4.7183 -1.1162 5.2210 C.2 1 SEGJ 0.0825 + 18 C5B 5.6252 -1.7815 3.0807 C.2 1 SEGJ -0.1500 + 19 O2B 5.4219 0.2768 8.9812 O.3 1 SEGJ -0.3799 + 20 O1B 4.7993 -0.3887 6.3772 O.3 1 SEGJ -0.3799 + 21 C2B 3.5931 -1.9135 4.9751 C.2 1 SEGJ -0.1500 + 22 C4B 4.5146 -2.5930 2.8512 C.2 1 SEGJ -0.1500 + 23 H4B 6.4123 -1.7315 2.3313 H 1 SEGJ 0.1500 + 24 SI1B 4.8103 -0.8635 7.9662 SI 1 SEGJ 1.3350 + 25 C3B 3.4958 -2.6540 3.7964 C.2 1 SEGJ -0.1500 + 26 H1B 2.7707 -1.9624 5.6834 H 1 SEGJ 0.1500 + 27 H3B 4.4419 -3.1688 1.9319 H 1 SEGJ 0.1500 + 28 CL1B 2.9038 -1.2679 8.5649 CL 1 SEGJ -0.3701 + 29 CL2B 5.8905 -2.5801 8.1667 CL 1 SEGJ -0.3701 + 30 H2B 2.6211 -3.2741 3.6146 H 1 SEGJ 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 + 5 4 6 1 + 6 5 11 1 + 7 6 7 2 + 8 6 16 1 + 9 7 8 1 + 10 7 12 1 + 11 8 9 2 + 12 8 13 1 + 13 9 10 1 + 14 9 14 1 + 15 10 15 1 + 16 10 16 2 + 17 11 17 2 + 18 11 18 1 + 19 16 19 1 + 20 17 20 1 + 21 17 21 1 + 22 18 22 2 + 23 18 23 1 + 24 19 24 1 + 25 20 24 1 + 26 21 25 2 + 27 21 26 1 + 28 22 25 1 + 29 22 27 1 + 30 24 28 1 + 31 24 29 1 + 32 25 30 1 +@SUBSTRUCTURE + 1 SEGJ 1 +@COMMENT +COMMENT 4,5.9,10-DIBENZO-2,2,7,7-TETRACHLORO-1,3,6,8-TETRAOXA-2,7-D +@MOLECULE +SEGLAR + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.1177 0.8001 3.7034 S.1 1 SEGL 1.4470 + 2 O1 1.5607 0.0291 4.8452 O.2 1 SEGL -0.6500 + 3 O2 0.4949 0.1753 2.5540 O.2 1 SEGL -0.6500 + 4 N1 0.0175 1.9864 4.3317 N.3 1 SEGL -0.6310 + 5 N2 -1.3287 1.5417 4.1549 N.3 1 SEGL -0.6470 + 6 C1 2.4442 1.8236 3.1353 C.2 1 SEGL -0.0090 + 7 C2 2.2440 2.6350 2.0143 C.2 1 SEGL -0.1500 + 8 C3 3.2875 3.4374 1.5538 C.2 1 SEGL -0.1500 + 9 C4 4.5209 3.4220 2.2078 C.2 1 SEGL -0.1500 + 10 C5 4.7174 2.6035 3.3220 C.2 1 SEGL -0.1500 + 11 C6 3.6788 1.7979 3.7896 C.2 1 SEGL -0.1500 + 12 H1 0.2287 2.1348 5.3280 H 1 SEGL 0.4200 + 13 H2 -1.4239 0.6103 4.5793 H 1 SEGL 0.3600 + 14 H4 1.2848 2.6451 1.5013 H 1 SEGL 0.1500 + 15 H5 3.1418 4.0733 0.6838 H 1 SEGL 0.1500 + 16 H6 5.3336 4.0473 1.8452 H 1 SEGL 0.1500 + 17 H7 5.6826 2.5920 3.8229 H 1 SEGL 0.1500 + 18 H8 3.8425 1.1579 4.6536 H 1 SEGL 0.1500 + 19 H3 -1.4552 1.3618 3.1482 H 1 SEGL 0.3600 +@BOND + 1 1 6 1 + 2 1 4 1 + 3 1 3 2 + 4 1 2 2 + 5 4 12 1 + 6 4 5 1 + 7 5 19 1 + 8 5 13 1 + 9 6 11 1 + 10 6 7 2 + 11 7 14 1 + 12 7 8 1 + 13 8 15 1 + 14 8 9 2 + 15 9 16 1 + 16 9 10 1 + 17 10 17 1 + 18 10 11 2 + 19 11 18 1 +@SUBSTRUCTURE + 1 SEGL 1 +@COMMENT +COMMENT BENZENESULFINOHYDRAZIDE +@MOLECULE +SEGNEX + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.3162 2.2109 6.7174 S.2 1 CHGB -0.3800 + 2 O1 -2.7118 2.8412 8.4744 O.2 1 CHGB -0.9000 + 3 O2 -4.3832 2.0472 9.8118 O.3 1 CHGB -0.9000 + 4 O3 -4.2688 -0.0210 11.0537 O.3 1 CHGB -0.6500 + 5 O4 -2.4120 -1.2903 10.9439 O.2 1 CHGB -0.5700 + 6 N1 -0.7007 1.3564 8.2539 N.3 1 CHGB -0.3680 + 7 N2 -1.2572 0.4626 9.1337 N.2 1 CHGB -0.5120 + 8 N3 1.1277 -0.0220 8.1060 N.3 1 CHGB -0.8000 + 9 C1 0.5457 1.1471 7.7322 C.2 1 CHGB 0.5000 + 10 C2 -2.4466 0.7367 9.6197 C.2 1 CHGB 0.3030 + 11 C3 -3.2352 1.9898 9.2592 C.2 1 CHGB 0.9470 + 12 C4 -3.0318 -0.2947 10.6020 C.2 1 CHGB 0.7200 + 13 H1 -1.2305 2.2174 8.0311 H 1 CHGB 0.3700 + 14 H2 0.6378 -0.5240 8.8400 H 1 CHGB 0.3700 + 15 H3 2.0936 -0.2130 7.8974 H 1 CHGB 0.3700 + 16 H4 -4.6061 0.8468 10.6722 H 1 CHGB 0.5000 +@BOND + 1 1 9 2 + 2 2 11 2 + 3 3 11 1 + 4 4 12 1 + 5 4 16 1 + 6 5 12 2 + 7 6 7 1 + 8 6 9 1 + 9 6 13 1 + 10 7 10 2 + 11 8 9 1 + 12 8 14 1 + 13 8 15 1 + 14 10 11 1 + 15 10 12 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT SODIUM 2-OXOPROPANE-1,3-DIOIC ACID THIOSEMICARBAZONE MONOHY +@MOLECULE +SEGWEG + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 -0.0457 0.0000 -0.0477 I 1 SEGW -0.1890 + 2 CL1 5.6405 0.0000 2.8481 CL 1 SEGW -0.2900 + 3 CL2 3.9502 1.4522 4.7108 CL 1 SEGW -0.2900 + 4 C1 2.9691 0.0000 2.6882 C.3 1 SEGW 0.0000 + 5 C2 1.4051 0.0000 2.9162 C.3 1 SEGW 0.0000 + 6 C3 1.5118 0.0000 1.3657 C.3 1 SEGW 0.1890 + 7 C4 2.6347 1.0564 1.5612 C.3 1 SEGW 0.0000 + 8 C5 4.0700 0.0000 3.6873 C.3 1 SEGW 0.8700 + 9 H1 0.9739 0.8908 3.3865 H 1 SEGW 0.0000 + 10 H2 2.3283 2.0544 1.8940 H 1 SEGW 0.0000 + 11 H3 3.3652 1.1636 0.7514 H 1 SEGW 0.0000 + 12 C4B 2.6347 -1.0564 1.5612 C.3 1 SEGW 0.0000 + 13 H1B 0.9739 -0.8908 3.3865 H 1 SEGW 0.0000 + 14 CL2B 3.9502 -1.4522 4.7108 CL 1 SEGW -0.2900 + 15 H2B 2.3283 -2.0544 1.8940 H 1 SEGW 0.0000 + 16 H3B 3.3652 -1.1636 0.7514 H 1 SEGW 0.0000 +@BOND + 1 1 6 1 + 2 2 8 1 + 3 3 8 1 + 4 4 5 1 + 5 4 7 1 + 6 4 8 1 + 7 4 12 1 + 8 5 6 1 + 9 5 9 1 + 10 5 13 1 + 11 6 7 1 + 12 6 12 1 + 13 7 10 1 + 14 7 11 1 + 15 8 14 1 + 16 12 15 1 + 17 12 16 1 +@SUBSTRUCTURE + 1 SEGW 1 +@COMMENT +COMMENT 3-IODO-1-TRICHLOROMETHYLBICYCLO(1.1.1)PENTANE +@MOLECULE +SEHBEM + 31 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.6848 0.2399 7.3460 O.3 1 UNCH -0.5325 + 2 O2 1.3133 0.6121 8.8107 O.3 1 UNCH -0.7500 + 3 N1 0.9778 1.6168 9.6909 N.3 1 UNCH -0.0180 + 4 C1 -1.7101 0.7791 8.0746 C.2 1 UNCH 0.0825 + 5 C2 -1.4920 1.8378 8.9665 C.2 1 UNCH -0.1435 + 6 C3 -2.5893 2.3371 9.6914 C.2 1 UNCH -0.1500 + 7 C4 -3.8695 1.7896 9.5390 C.2 1 UNCH -0.1435 + 8 C5 -4.0614 0.7505 8.6218 C.2 1 UNCH -0.1500 + 9 C6 -2.9876 0.2369 7.8831 C.2 1 UNCH -0.1435 + 10 C7 -0.1414 2.4910 9.1340 C.3 1 UNCH 0.3995 + 11 C8 2.1982 2.4749 9.8992 C.3 1 UNCH 0.2560 + 12 C9 0.5753 1.0165 11.0124 C.3 1 UNCH 0.2560 + 13 C10 -5.0352 2.3555 10.2955 C.3 1 UNCH 0.1435 + 14 C11 -3.2055 -0.8868 6.9103 C.3 1 UNCH 0.1435 + 15 H3 0.1592 0.3254 7.8662 H 1 UNCH 0.4500 + 16 H4 -2.4528 3.1696 10.3792 H 1 UNCH 0.1500 + 17 H5 -5.0575 0.3358 8.4796 H 1 UNCH 0.1500 + 18 H6 -0.2077 3.3503 9.8126 H 1 UNCH 0.0000 + 19 H7 0.2144 2.8552 8.1621 H 1 UNCH 0.0000 + 20 H8 2.4677 2.9056 8.9310 H 1 UNCH 0.0000 + 21 H9 2.9999 1.8278 10.2659 H 1 UNCH 0.0000 + 22 H10 1.9521 3.2518 10.6275 H 1 UNCH 0.0000 + 23 H11 -0.2460 0.3186 10.8344 H 1 UNCH 0.0000 + 24 H12 1.4416 0.4768 11.4051 H 1 UNCH 0.0000 + 25 H13 0.2789 1.8296 11.6797 H 1 UNCH 0.0000 + 26 H14 -5.7885 1.5841 10.4870 H 1 UNCH 0.0000 + 27 H15 -5.4955 3.1658 9.7220 H 1 UNCH 0.0000 + 28 H16 -4.7169 2.7460 11.2679 H 1 UNCH 0.0000 + 29 H17 -2.8964 -0.5843 5.9045 H 1 UNCH 0.0000 + 30 H18 -4.2609 -1.1743 6.8589 H 1 UNCH 0.0000 + 31 H19 -2.6344 -1.7691 7.2167 H 1 UNCH 0.0000 +@BOND + 1 1 4 1 + 2 1 15 1 + 3 2 3 1 + 4 3 10 1 + 5 3 11 1 + 6 3 12 1 + 7 4 5 1 + 8 4 9 2 + 9 5 6 2 + 10 5 10 1 + 11 6 7 1 + 12 6 16 1 + 13 7 8 2 + 14 7 13 1 + 15 8 9 1 + 16 8 17 1 + 17 9 14 1 + 18 10 18 1 + 19 10 19 1 + 20 11 20 1 + 21 11 21 1 + 22 11 22 1 + 23 12 23 1 + 24 12 24 1 + 25 12 25 1 + 26 13 26 1 + 27 13 27 1 + 28 13 28 1 + 29 14 29 1 + 30 14 30 1 + 31 14 31 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(N,N-DIMETHYLAMINO-N-OXYMETHYL)-4,6-DIMETHYLPHENOL MONOHY +@MOLECULE +SEJDAM + 27 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2943 1.4668 7.4347 C.2 1 SEJD -0.1730 + 2 C2 2.3937 0.5200 6.6912 C.3 1 SEJD 0.0710 + 3 C3 3.0004 0.9190 5.4352 C.2 1 SEJD 0.5700 + 4 C4 3.8938 1.8467 6.1094 C.3 1 SEJD 0.0710 + 5 C5 1.9752 -0.8701 7.0260 C.3 1 SEJD -0.2000 + 6 C6 0.9427 0.2222 6.8553 C.3 1 SEJD -0.2000 + 7 C7 4.2834 3.1738 5.5573 C.3 1 SEJD -0.2000 + 8 C8 5.3064 2.0654 5.6902 C.3 1 SEJD -0.2000 + 9 C9 3.4396 1.7767 8.7236 C.2 1 SEJD -0.0928 + 10 C10 4.4068 2.7901 9.1920 C.2 1 SEJD 0.7056 + 11 C11 2.7058 1.2719 9.9043 C.3 1 SEJD 0.1382 + 12 C12 2.8702 2.4355 10.8471 C.3 1 SEJD 0.2800 + 13 O1 2.8228 0.6007 4.2756 O.2 1 SEJD -0.5700 + 14 O2 5.3224 3.2971 8.5759 O.2 1 SEJD -0.5700 + 15 O3 4.1083 3.0570 10.4976 O.3 1 SEJD -0.4300 + 16 H1 2.1600 -1.2421 8.0259 H 1 SEJD 0.1000 + 17 H2 2.0438 -1.6250 6.2499 H 1 SEJD 0.1000 + 18 H3 0.4295 0.5811 7.7375 H 1 SEJD 0.1000 + 19 H4 0.3233 0.1930 5.9647 H 1 SEJD 0.1000 + 20 H5 3.9523 3.4346 4.5584 H 1 SEJD 0.1000 + 21 H6 4.3712 4.0174 6.2312 H 1 SEJD 0.1000 + 22 H7 5.6539 1.5912 4.7790 H 1 SEJD 0.1000 + 23 H8 6.0701 2.1718 6.4506 H 1 SEJD 0.1000 + 24 H10 2.9079 2.1083 11.8906 H 1 SEJD 0.0000 + 25 H11 1.6556 1.0312 9.7282 H 1 SEJD 0.0000 + 26 H12 3.2121 0.3832 10.2975 H 1 SEJD 0.0000 + 27 H9 2.0672 3.1744 10.7432 H 1 SEJD 0.0000 +@BOND + 1 1 9 2 + 2 1 4 1 + 3 1 2 1 + 4 2 6 1 + 5 2 5 1 + 6 2 3 1 + 7 3 13 2 + 8 3 4 1 + 9 4 8 1 + 10 4 7 1 + 11 5 17 1 + 12 5 16 1 + 13 5 6 1 + 14 6 19 1 + 15 6 18 1 + 16 7 21 1 + 17 7 20 1 + 18 7 8 1 + 19 8 23 1 + 20 8 22 1 + 21 9 11 1 + 22 9 10 1 + 23 10 15 1 + 24 10 14 2 + 25 11 26 1 + 26 11 25 1 + 27 11 12 1 + 28 12 27 1 + 29 12 24 1 + 30 12 15 1 +@SUBSTRUCTURE + 1 SEJD 1 +@COMMENT +COMMENT 3-(8-OXODISPIRO(2.1.2.1)OCTAN-4-YLIDENE)TETRAHYDROFURAN-2-O +@MOLECULE +SEKKIC + 30 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 5.6926 5.7915 11.6729 O.3 1 UNCH -0.3370 + 2 N1 6.5749 5.4571 10.6440 N.2 1 UNCH -0.5130 + 3 C1 6.1582 4.4411 9.9426 C.2 1 UNCH 0.3280 + 4 C2 7.0359 3.9150 8.7806 C.3 1 UNCH 0.1992 + 5 C3 6.1259 3.7428 7.5393 C.3 1 UNCH 0.0000 + 6 C4 4.8513 2.9412 7.8092 C.3 1 UNCH 0.0000 + 7 C5 4.0443 3.5625 8.9434 C.3 1 UNCH 0.0000 + 8 C6 4.8670 3.6763 10.2186 C.3 1 UNCH 0.0610 + 9 C7 8.1589 4.9064 8.4234 C.3 1 UNCH 0.0000 + 10 C8 7.6842 2.6357 9.2854 C.2 1 UNCH -0.2232 + 11 C9 7.9428 1.5709 8.5820 C.1 1 UNCH -0.1300 + 12 C10 8.2020 0.5087 7.8779 C.2 1 UNCH -0.2232 + 13 C11 8.6220 0.5159 6.4462 C.3 1 UNCH 0.1382 + 14 H1 6.1377 6.5512 12.0927 H 1 UNCH 0.4000 + 15 H2 5.8253 4.7352 7.1747 H 1 UNCH 0.0000 + 16 H3 6.6780 3.2733 6.7155 H 1 UNCH 0.0000 + 17 H4 5.0942 1.9008 8.0521 H 1 UNCH 0.0000 + 18 H5 4.2398 2.9170 6.8997 H 1 UNCH 0.0000 + 19 H6 3.6988 4.5585 8.6393 H 1 UNCH 0.0000 + 20 H7 3.1515 2.9563 9.1337 H 1 UNCH 0.0000 + 21 H8 4.2598 4.1563 10.9896 H 1 UNCH 0.0000 + 22 H9 5.1328 2.6809 10.5919 H 1 UNCH 0.0000 + 23 H10 8.8496 5.0608 9.2615 H 1 UNCH 0.0000 + 24 H11 7.7512 5.8879 8.1544 H 1 UNCH 0.0000 + 25 H12 8.7499 4.5472 7.5725 H 1 UNCH 0.0000 + 26 H13 8.0978 2.6748 10.2923 H 1 UNCH 0.1500 + 27 H14 8.1027 -0.4629 8.3533 H 1 UNCH 0.1500 + 28 H15 9.5828 0.0042 6.3360 H 1 UNCH 0.0000 + 29 H16 7.8806 -0.0094 5.8365 H 1 UNCH 0.0000 + 30 H17 8.7288 1.5336 6.0570 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 14 1 + 3 2 3 2 + 4 3 4 1 + 5 3 8 1 + 6 4 5 1 + 7 4 9 1 + 8 4 10 1 + 9 5 6 1 + 10 5 15 1 + 11 5 16 1 + 12 6 7 1 + 13 6 17 1 + 14 6 18 1 + 15 7 8 1 + 16 7 19 1 + 17 7 20 1 + 18 8 21 1 + 19 8 22 1 + 20 9 23 1 + 21 9 24 1 + 22 9 25 1 + 23 10 11 2 + 24 10 26 1 + 25 11 12 2 + 26 12 13 1 + 27 12 27 1 + 28 13 28 1 + 29 13 29 1 + 30 13 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(BUTA-1,2-DIENYL)-2-METHYLCYCLOHEXANONE OXIME +@MOLECULE +SEKPED + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.3186 3.4794 0.0674 N.2 1 SEKP -0.7068 + 2 N2 1.1515 3.3633 1.3858 N.3 1 SEKP 0.9850 + 3 N3 1.8660 2.4434 2.0360 N.2 1 SEKP -0.7068 + 4 C1 2.6579 1.9502 1.0738 C.2 1 SEKP 0.2888 + 5 C2 3.6617 0.9697 1.1547 C.2 1 SEKP -0.1500 + 6 C3 4.2964 0.6859 -0.0704 C.2 1 SEKP -0.1500 + 7 C4 3.9567 1.3289 -1.2923 C.2 1 SEKP -0.1500 + 8 C5 2.9526 2.3117 -1.3952 C.2 1 SEKP -0.1500 + 9 C6 2.3086 2.6113 -0.1824 C.2 1 SEKP 0.2888 + 10 N4 0.1701 4.0892 2.0407 N.3 1 SEKP -0.8690 + 11 H1 3.9219 0.4779 2.0823 H 1 SEKP 0.1500 + 12 H2 5.0878 -0.0645 -0.0831 H 1 SEKP 0.1500 + 13 H3 4.5007 1.0467 -2.1945 H 1 SEKP 0.1500 + 14 H4 2.6960 2.7982 -2.3265 H 1 SEKP 0.1500 + 15 H5 -0.1982 3.5089 2.7852 H 1 SEKP 0.3600 + 16 H6 -0.5873 4.2453 1.3859 H 1 SEKP 0.3600 +@BOND + 1 1 9 2 + 2 1 2 1 + 3 2 10 1 + 4 2 3 1 + 5 3 4 2 + 6 4 9 1 + 7 4 5 1 + 8 5 11 1 + 9 5 6 2 + 10 6 12 1 + 11 6 7 1 + 12 7 13 1 + 13 7 8 2 + 14 8 14 1 + 15 8 9 1 + 16 10 16 1 + 17 10 15 1 +@SUBSTRUCTURE + 1 SEKP 1 +@COMMENT +COMMENT 2-AMINOBENZOTRIAZOLE +@MOLECULE +SEKPIH + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.0581 0.3535 2.0970 N.3 1 UNCH 0.4522 + 2 C1 1.3066 -0.8071 1.4228 C.2 1 UNCH 0.0365 + 3 N2 2.0513 -1.6310 2.1285 N.2 1 UNCH -0.5653 + 4 C2 2.2896 -0.9657 3.3085 C.2 1 UNCH 0.2272 + 5 C3 3.0289 -1.3754 4.4283 C.2 1 UNCH -0.1500 + 6 C4 3.1287 -0.5101 5.5251 C.2 1 UNCH -0.1500 + 7 C5 2.5054 0.7396 5.5099 C.2 1 UNCH -0.1500 + 8 C6 1.7631 1.1683 4.4032 C.2 1 UNCH -0.1500 + 9 C7 1.6767 0.2869 3.3178 C.2 1 UNCH -0.1516 + 10 N3 0.2891 1.4425 1.6130 N.3 1 UNCH -0.8690 + 11 H1 0.9209 -0.9912 0.4300 H 1 UNCH 0.1500 + 12 H2 3.5106 -2.3470 4.4343 H 1 UNCH 0.1500 + 13 H3 3.6996 -0.8186 6.3980 H 1 UNCH 0.1500 + 14 H4 2.5989 1.3927 6.3756 H 1 UNCH 0.1500 + 15 H5 1.2801 2.1390 4.3938 H 1 UNCH 0.1500 + 16 H6 0.8473 2.2936 1.5911 H 1 UNCH 0.3600 + 17 H7 -0.4943 1.6324 2.2348 H 1 UNCH 0.3600 +@BOND + 1 1 2 am + 2 1 9 1 + 3 1 10 1 + 4 2 3 2 + 5 2 11 1 + 6 3 4 1 + 7 4 5 2 + 8 4 9 1 + 9 5 6 1 + 10 5 12 1 + 11 6 7 2 + 12 6 13 1 + 13 7 8 1 + 14 7 14 1 + 15 8 9 2 + 16 8 15 1 + 17 10 16 1 + 18 10 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-AMINOBENZIMIDAZOLE +@MOLECULE +SELFIY + 36 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 1.2629 5.2003 3.7512 SI 1 UNCH 0.9604 + 2 O1 2.0939 5.1024 5.1815 O.3 1 UNCH -0.6974 + 3 C1 -0.2403 4.1085 3.8362 C.2 1 UNCH -0.2210 + 4 C2 -0.8203 3.5457 2.6825 C.2 1 UNCH -0.1500 + 5 C3 -1.9502 2.7272 2.7679 C.2 1 UNCH -0.1500 + 6 C4 -2.5260 2.4569 4.0057 C.2 1 UNCH -0.1500 + 7 C5 -1.9744 3.0055 5.1596 C.2 1 UNCH -0.1500 + 8 C6 -0.8440 3.8235 5.0766 C.2 1 UNCH -0.1500 + 9 C7 2.3962 4.6151 2.3970 C.2 1 UNCH -0.2210 + 10 C8 3.0258 5.5160 1.5169 C.2 1 UNCH -0.1500 + 11 C9 3.8854 5.0637 0.5113 C.2 1 UNCH -0.1500 + 12 C10 4.1395 3.7034 0.3668 C.2 1 UNCH -0.1500 + 13 C11 3.5374 2.7929 1.2293 C.2 1 UNCH -0.1500 + 14 C12 2.6782 3.2428 2.2360 C.2 1 UNCH -0.1500 + 15 C13 0.7103 6.9429 3.4401 C.2 1 UNCH -0.2210 + 16 C14 1.1512 7.9957 4.2655 C.2 1 UNCH -0.1500 + 17 C15 0.7482 9.3141 4.0344 C.2 1 UNCH -0.1500 + 18 C16 -0.1041 9.6083 2.9745 C.2 1 UNCH -0.1500 + 19 C17 -0.5551 8.5854 2.1458 C.2 1 UNCH -0.1500 + 20 C18 -0.1529 7.2663 2.3752 C.2 1 UNCH -0.1500 + 21 H1 -0.3999 3.7358 1.6951 H 1 UNCH 0.1500 + 22 H2 -2.3811 2.3029 1.8647 H 1 UNCH 0.1500 + 23 H3 -3.4059 1.8230 4.0709 H 1 UNCH 0.1500 + 24 H4 -2.4249 2.8016 6.1275 H 1 UNCH 0.1500 + 25 H5 -0.4419 4.2428 5.9993 H 1 UNCH 0.1500 + 26 H6 2.8609 6.5905 1.5999 H 1 UNCH 0.1500 + 27 H7 4.3579 5.7788 -0.1575 H 1 UNCH 0.1500 + 28 H8 4.8080 3.3541 -0.4154 H 1 UNCH 0.1500 + 29 H9 3.7351 1.7296 1.1203 H 1 UNCH 0.1500 + 30 H10 2.2249 2.4979 2.8905 H 1 UNCH 0.1500 + 31 H11 1.8171 7.7995 5.1063 H 1 UNCH 0.1500 + 32 H12 1.1002 10.1093 4.6862 H 1 UNCH 0.1500 + 33 H13 -0.4189 10.6328 2.7967 H 1 UNCH 0.1500 + 34 H14 -1.2238 8.8112 1.3192 H 1 UNCH 0.1500 + 35 H15 -0.5279 6.4934 1.7055 H 1 UNCH 0.1500 + 36 H23 2.6925 4.3430 5.2510 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 9 1 + 4 1 15 1 + 5 2 36 1 + 6 3 4 2 + 7 3 8 1 + 8 4 5 1 + 9 4 21 1 + 10 5 6 2 + 11 5 22 1 + 12 6 7 1 + 13 6 23 1 + 14 7 8 2 + 15 7 24 1 + 16 8 25 1 + 17 9 10 2 + 18 9 14 1 + 19 10 11 1 + 20 10 26 1 + 21 11 12 2 + 22 11 27 1 + 23 12 13 1 + 24 12 28 1 + 25 13 14 2 + 26 13 29 1 + 27 14 30 1 + 28 15 16 2 + 29 15 20 1 + 30 16 17 1 + 31 16 31 1 + 32 17 18 2 + 33 17 32 1 + 34 18 19 1 + 35 18 33 1 + 36 19 20 2 + 37 19 34 1 + 38 20 35 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(TRIPHENYLSILANOL) 12-CROWN-4 +@MOLECULE +SEMDIX + 28 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.8497 6.5570 9.1635 S.1 1 SEMD 0.1123 + 2 F1 -1.6670 6.2080 9.8154 F 1 SEMD -0.3400 + 3 O1 1.0246 5.0706 8.9656 O.2 1 SEMD -0.6000 + 4 O2 1.4995 7.4084 8.0980 O.2 1 SEMD -0.6000 + 5 N1 -1.5325 8.1908 8.5575 N.3 1 SEMD -1.0120 + 6 C1 -0.9631 6.7618 8.7906 C.3 1 SEMD 0.9307 + 7 C2 -1.0031 8.6752 7.1863 C.3 1 SEMD 0.5030 + 8 C3 -1.7131 9.9192 6.6599 C.3 1 SEMD 0.0000 + 9 C4 -1.0109 9.1509 9.6394 C.3 1 SEMD 0.5030 + 10 C5 -1.3361 8.7553 11.0734 C.3 1 SEMD 0.0000 + 11 C6 -3.0573 8.0969 8.6094 C.3 1 SEMD 0.5030 + 12 C7 -3.6695 7.1965 7.5435 C.3 1 SEMD 0.0000 + 13 H1 -1.1630 6.1753 7.8879 H 1 SEMD 0.0000 + 14 H2 -1.1044 7.8541 6.4691 H 1 SEMD 0.0000 + 15 H3 0.0516 8.9292 7.2918 H 1 SEMD 0.0000 + 16 H4 -1.6419 10.7610 7.3535 H 1 SEMD 0.0000 + 17 H5 -1.2423 10.2331 5.7217 H 1 SEMD 0.0000 + 18 H6 -2.7680 9.7391 6.4390 H 1 SEMD 0.0000 + 19 H7 -1.4694 10.1259 9.4419 H 1 SEMD 0.0000 + 20 H8 0.0694 9.2712 9.5121 H 1 SEMD 0.0000 + 21 H9 -0.8940 7.7993 11.3612 H 1 SEMD 0.0000 + 22 H10 -0.9279 9.5106 11.7543 H 1 SEMD 0.0000 + 23 H11 -2.4125 8.7147 11.2584 H 1 SEMD 0.0000 + 24 H12 -3.3475 7.7212 9.5954 H 1 SEMD 0.0000 + 25 H13 -3.4525 9.1149 8.5237 H 1 SEMD 0.0000 + 26 H14 -3.3939 6.1480 7.6876 H 1 SEMD 0.0000 + 27 H15 -3.3930 7.4904 6.5284 H 1 SEMD 0.0000 + 28 H16 -4.7617 7.2494 7.6099 H 1 SEMD 0.0000 +@BOND + 1 1 6 1 + 2 1 4 2 + 3 1 3 2 + 4 2 6 1 + 5 5 11 1 + 6 5 9 1 + 7 5 7 1 + 8 5 6 1 + 9 6 13 1 + 10 7 15 1 + 11 7 14 1 + 12 7 8 1 + 13 8 18 1 + 14 8 17 1 + 15 8 16 1 + 16 9 20 1 + 17 9 19 1 + 18 9 10 1 + 19 10 23 1 + 20 10 22 1 + 21 10 21 1 + 22 11 25 1 + 23 11 24 1 + 24 11 12 1 + 25 12 28 1 + 26 12 27 1 + 27 12 26 1 +@SUBSTRUCTURE + 1 SEMD 1 +@COMMENT +COMMENT TRIETHYLAMMONIOFLUOROMETHANESULFINATE +@MOLECULE +SEMXOX + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.5444 2.6698 10.4181 O.3 1 SEMX -0.4300 + 2 O2 1.1547 0.9587 11.0401 O.2 1 SEMX -0.5700 + 3 N1 1.6272 -0.8758 7.3055 N.3 1 SEMX -0.1580 + 4 N2 0.7647 -1.9672 7.3841 N.2 1 SEMX -0.0420 + 5 N3 0.1419 -1.9134 8.4964 N.2 1 SEMX -0.0420 + 6 N4 0.4791 -0.7424 9.1034 N.3 1 SEMX -0.4580 + 7 N5 4.3377 1.8046 7.6859 N.1 1 SEMX -0.5571 + 8 C1 2.4775 -1.4129 5.0841 C.2 1 SEMX -0.1500 + 9 C2 2.8078 -1.0576 3.7739 C.2 1 SEMX -0.1500 + 10 C3 2.6076 0.2484 3.3372 C.2 1 SEMX -0.1500 + 11 C4 2.0699 1.1939 4.2064 C.2 1 SEMX -0.1500 + 12 C5 1.7397 0.8361 5.5176 C.2 1 SEMX -0.1500 + 13 C6 1.9525 -0.4699 5.9858 C.2 1 SEMX 0.1000 + 14 C7 1.5060 -0.1194 8.4497 C.2 1 SEMX 0.2000 + 15 C8 2.2525 0.9052 8.9106 C.2 1 SEMX 0.0794 + 16 C9 1.9116 1.4836 10.2327 C.2 1 SEMX 0.7056 + 17 C10 2.2727 3.2978 11.6735 C.3 1 SEMX 0.2800 + 18 C11 3.3955 1.3957 8.2272 C.1 1 SEMX 0.4921 + 19 H1 2.6443 -2.4377 5.4096 H 1 SEMX 0.1500 + 20 H2 3.2218 -1.8012 3.0980 H 1 SEMX 0.1500 + 21 H3 2.8650 0.5282 2.3190 H 1 SEMX 0.1500 + 22 H4 1.9015 2.2116 3.8632 H 1 SEMX 0.1500 + 23 H5 1.2872 1.5910 6.1537 H 1 SEMX 0.1500 + 24 H6 0.3702 -0.6219 10.1103 H 1 SEMX 0.4000 + 25 H7 1.2066 3.5286 11.7622 H 1 SEMX 0.0000 + 26 H8 2.6024 2.6599 12.4994 H 1 SEMX 0.0000 + 27 H9 2.8353 4.2346 11.7121 H 1 SEMX 0.0000 +@BOND + 1 1 16 1 + 2 1 17 1 + 3 2 16 2 + 4 3 4 1 + 5 3 13 1 + 6 3 14 1 + 7 4 5 2 + 8 5 6 1 + 9 6 14 1 + 10 6 24 1 + 11 7 18 3 + 12 8 9 2 + 13 8 13 1 + 14 8 19 1 + 15 9 10 1 + 16 9 20 1 + 17 10 11 2 + 18 10 21 1 + 19 11 12 1 + 20 11 22 1 + 21 12 13 2 + 22 12 23 1 + 23 14 15 2 + 24 15 16 1 + 25 15 18 1 + 26 17 25 1 + 27 17 26 1 + 28 17 27 1 +@SUBSTRUCTURE + 1 SEMX 1 +@COMMENT +COMMENT METHYL (E)-2-CYANO-2-(1-PHENYL-4,5-DIHYDRO-1H-TETRAZOL-5-YL +@MOLECULE +SETHAA + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -3.0983 7.4942 -2.3528 S.1 1 SETH 1.2118 + 2 S2 -1.2123 5.3719 -0.5861 S.1 1 SETH 1.2118 + 3 O1 -3.2947 7.7333 -3.7674 O.2 1 SETH -0.6500 + 4 O2 -3.8554 8.2402 -1.3677 O.2 1 SETH -0.6500 + 5 O3 -0.7840 4.3150 -1.4847 O.2 1 SETH -0.6500 + 6 O4 -0.8901 5.3147 0.8265 O.2 1 SETH -0.6500 + 7 C1 -3.4280 5.7823 -2.0630 C.3 1 SETH 0.1052 + 8 C2 -2.9771 5.3959 -0.6811 C.3 1 SETH 0.1052 + 9 C3 -0.7038 6.8810 -1.2479 C.2 1 SETH -0.0454 + 10 C4 -1.4314 7.7136 -1.9993 C.2 1 SETH -0.1670 + 11 C5 0.7110 7.1332 -0.9677 C.2 1 SETH 0.0284 + 12 C6 1.7127 6.5278 -1.7391 C.2 1 SETH -0.1500 + 13 C7 3.0582 6.8046 -1.4900 C.2 1 SETH -0.1500 + 14 C8 3.4124 7.6933 -0.4766 C.2 1 SETH -0.1500 + 15 C9 2.4232 8.3075 0.2892 C.2 1 SETH -0.1500 + 16 C10 1.0766 8.0330 0.0431 C.2 1 SETH -0.1500 + 17 H1 -0.9964 8.6208 -2.4017 H 1 SETH 0.1500 + 18 H2 -2.9356 5.2021 -2.8494 H 1 SETH 0.0000 + 19 H3 -4.5098 5.6496 -2.1656 H 1 SETH 0.0000 + 20 H4 -3.3182 4.3851 -0.4348 H 1 SETH 0.0000 + 21 H5 -3.3489 6.0768 0.0910 H 1 SETH 0.0000 + 22 H6 1.4589 5.8288 -2.5344 H 1 SETH 0.1500 + 23 H7 3.8307 6.3235 -2.0850 H 1 SETH 0.1500 + 24 H8 4.4609 7.9046 -0.2810 H 1 SETH 0.1500 + 25 H9 2.7010 8.9975 1.0823 H 1 SETH 0.1500 + 26 H10 0.3205 8.5189 0.6568 H 1 SETH 0.1500 +@BOND + 1 1 10 1 + 2 1 7 1 + 3 1 4 2 + 4 1 3 2 + 5 2 9 1 + 6 2 8 1 + 7 2 6 2 + 8 2 5 2 + 9 7 19 1 + 10 7 18 1 + 11 7 8 1 + 12 8 21 1 + 13 8 20 1 + 14 9 11 1 + 15 9 10 2 + 16 10 17 1 + 17 11 16 1 + 18 11 12 2 + 19 12 22 1 + 20 12 13 1 + 21 13 23 1 + 22 13 14 2 + 23 14 24 1 + 24 14 15 1 + 25 15 25 1 + 26 15 16 2 + 27 16 26 1 +@SUBSTRUCTURE + 1 SETH 1 +@COMMENT +COMMENT 2,3-DIHYDRO-5-PHENYL-1,4-DITHIIN 1,1,4,4-TETROXIDE (FUNGICI +@MOLECULE +SETLIM + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 9.5554 1.9863 1.3973 S.3 1 UNCH -0.2300 + 2 S2 8.3438 0.9454 2.6514 S.3 1 UNCH -0.1410 + 3 C1 7.4745 0.0947 1.3688 C.2 1 UNCH 0.6410 + 4 N1 6.6925 -0.9779 1.7037 N.3 1 UNCH -0.5500 + 5 N2 7.6245 0.4338 0.1253 N.2 1 UNCH -0.6960 + 6 C2 8.5083 1.6489 -0.0816 C.3 1 UNCH 0.4760 + 7 C3 7.6538 2.8779 -0.4095 C.3 1 UNCH 1.0200 + 8 F1 8.3859 3.9979 -0.6028 F 1 UNCH -0.3400 + 9 F2 6.7840 3.1515 0.6003 F 1 UNCH -0.3400 + 10 F3 6.8970 2.7014 -1.5178 F 1 UNCH -0.3400 + 11 C4 9.4049 1.4570 -1.3059 C.3 1 UNCH 1.0200 + 12 F4 10.1981 2.5249 -1.5523 F 1 UNCH -0.3400 + 13 F5 10.2304 0.3887 -1.1484 F 1 UNCH -0.3400 + 14 F6 8.6953 1.2237 -2.4351 F 1 UNCH -0.3400 + 15 C5 5.6760 -0.9615 2.6894 C.2 1 UNCH 0.1000 + 16 C6 5.2681 -2.1844 3.2403 C.2 1 UNCH -0.1500 + 17 C7 4.2332 -2.2388 4.1765 C.2 1 UNCH -0.1500 + 18 C8 3.5794 -1.0706 4.5589 C.2 1 UNCH -0.1500 + 19 C9 3.9552 0.1485 3.9997 C.2 1 UNCH -0.1500 + 20 C10 4.9914 0.2020 3.0632 C.2 1 UNCH -0.1500 + 21 H1 6.3228 -1.4231 0.8672 H 1 UNCH 0.4000 + 22 H2 5.7694 -3.1061 2.9534 H 1 UNCH 0.1500 + 23 H3 3.9385 -3.1929 4.6061 H 1 UNCH 0.1500 + 24 H4 2.7735 -1.1103 5.2874 H 1 UNCH 0.1500 + 25 H5 3.4371 1.0603 4.2871 H 1 UNCH 0.1500 + 26 H6 5.2388 1.1662 2.6262 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 2 3 1 + 4 3 4 am + 5 3 5 2 + 6 4 15 1 + 7 4 21 1 + 8 5 6 1 + 9 6 7 1 + 10 6 11 1 + 11 7 8 1 + 12 7 9 1 + 13 7 10 1 + 14 11 12 1 + 15 11 13 1 + 16 11 14 1 + 17 15 16 2 + 18 15 20 1 + 19 16 17 1 + 20 16 22 1 + 21 17 18 2 + 22 17 23 1 + 23 18 19 1 + 24 18 24 1 + 25 19 20 2 + 26 19 25 1 + 27 20 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-PHENYLAMINO-5,5-BIS(TRIFLUOROMETHYL)-1,2,4-DITHIAZOLINE +@MOLECULE +SEYVUN + 15 16 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 10.2553 -2.8173 3.1168 N.3 1 SEYV 0.2996 + 2 N2 10.8801 -3.9871 3.3067 N.2 1 SEYV -0.7068 + 3 C1 9.9543 -4.9053 3.0285 C.2 1 SEYV 0.1388 + 4 C2 8.7230 -4.3252 2.6564 C.2 1 SEYV 0.0000 + 5 C3 7.4581 -4.7890 2.2754 C.2 1 SEYV -0.1500 + 6 C4 6.4912 -3.8330 1.9826 C.2 1 SEYV 0.2110 + 7 N3 6.7697 -2.5232 2.0650 N.2 1 SEYV -0.1790 + 8 C5 7.9632 -2.0309 2.4244 C.2 1 SEYV 0.2110 + 9 C6 8.9483 -2.9544 2.7227 C.2 1 SEYV -0.1516 + 10 H1 10.7894 -1.9673 3.2768 H 1 SEYV 0.2700 + 11 H2 10.2161 -5.9542 3.1088 H 1 SEYV 0.1500 + 12 H3 7.2386 -5.8513 2.2105 H 1 SEYV 0.1500 + 13 H4 5.4830 -4.0982 1.6788 H 1 SEYV 0.1500 + 14 H5 6.0245 -1.8608 1.8394 H 1 SEYV 0.4570 + 15 H6 8.0865 -0.9542 2.4603 H 1 SEYV 0.1500 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 1 2 1 + 4 2 3 2 + 5 3 11 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 + 9 5 12 1 + 10 5 6 1 + 11 6 13 1 + 12 6 7 2 + 13 7 14 1 + 14 7 8 1 + 15 8 15 1 + 16 8 9 2 +@SUBSTRUCTURE + 1 SEYV 1 +@COMMENT +COMMENT 1H-PYRAZOLO(3,4-C)PYRIDINE HYDROCHLORIDE MONOHYDRATE +@MOLECULE +SEYWUO + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.6312 10.5857 6.5912 S.2 1 SEYW -0.3800 + 2 N1 2.1528 7.9082 6.9151 N.3 1 SEYW -0.1790 + 3 N2 1.2729 8.2259 7.9721 N.2 1 SEYW -0.8364 + 4 N3 -0.6629 8.6644 8.9451 N.3 1 SEYW -0.7301 + 5 N4 2.7747 8.2098 9.8729 N.3 1 SEYW -0.8334 + 6 O1 -0.6880 8.2676 6.6661 O.2 1 SEYW -0.5700 + 7 O2 2.4039 8.7788 4.7987 O.3 1 SEYW -0.4300 + 8 C1 1.9990 7.5174 4.2392 C.3 1 SEYW 0.2800 + 9 C2 2.3368 8.9920 6.1456 C.2 1 SEYW 0.3100 + 10 C3 -0.1263 8.3936 7.7340 C.2 1 SEYW 1.0110 + 11 C4 0.3233 8.9044 9.9810 C.3 1 SEYW 0.4051 + 12 C5 1.5862 8.4091 9.2645 C.2 1 SEYW 0.6038 + 13 C6 0.3654 10.4079 10.2597 C.3 1 SEYW 0.0000 + 14 C7 -0.0665 8.0829 11.2050 C.3 1 SEYW 0.0000 + 15 C8 3.0610 8.4840 11.2854 C.3 1 SEYW 0.4895 + 16 C9 3.9049 7.6417 9.1095 C.3 1 SEYW 0.4895 + 17 H1 -1.6249 8.9653 8.9732 H 1 SEYW 0.3700 + 18 H2 1.9826 7.6275 3.1513 H 1 SEYW 0.0000 + 19 H3 2.7247 6.7404 4.4966 H 1 SEYW 0.0000 + 20 H4 0.9921 7.2477 4.5711 H 1 SEYW 0.0000 + 21 H5 -0.6168 10.7697 10.5865 H 1 SEYW 0.0000 + 22 H6 1.0839 10.6761 11.0360 H 1 SEYW 0.0000 + 23 H7 0.6343 10.9725 9.3601 H 1 SEYW 0.0000 + 24 H8 -1.1055 8.2811 11.4945 H 1 SEYW 0.0000 + 25 H9 0.5521 8.3089 12.0764 H 1 SEYW 0.0000 + 26 H10 0.0180 7.0090 11.0031 H 1 SEYW 0.0000 + 27 H11 4.1275 8.6922 11.4217 H 1 SEYW 0.0000 + 28 H12 2.7959 7.6074 11.8824 H 1 SEYW 0.0000 + 29 H13 2.5278 9.3621 11.6415 H 1 SEYW 0.0000 + 30 H14 4.7176 7.3637 9.7897 H 1 SEYW 0.0000 + 31 H15 4.2991 8.3847 8.4132 H 1 SEYW 0.0000 + 32 H16 3.5978 6.7197 8.6088 H 1 SEYW 0.0000 +@BOND + 1 1 9 2 + 2 2 9 1 + 3 2 3 1 + 4 3 12 2 + 5 3 10 am + 6 4 17 1 + 7 4 11 1 + 8 4 10 am + 9 5 16 1 + 10 5 15 1 + 11 5 12 am + 12 6 10 2 + 13 7 9 1 + 14 7 8 1 + 15 8 20 1 + 16 8 19 1 + 17 8 18 1 + 18 11 14 1 + 19 11 13 1 + 20 11 12 1 + 21 13 23 1 + 22 13 22 1 + 23 13 21 1 + 24 14 26 1 + 25 14 25 1 + 26 14 24 1 + 27 15 29 1 + 28 15 28 1 + 29 15 27 1 + 30 16 32 1 + 31 16 31 1 + 32 16 30 1 +@SUBSTRUCTURE + 1 SEYW 1 +@COMMENT +COMMENT 5-(DIMETHYLAMINO)-3,4-DIHYDRO-4,4-DIMETHYL-2-OXO-2H-IMIDAZO +@MOLECULE +SEZMEP + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 6.8716 14.1992 -2.7019 CL 1 UNCH -0.2273 + 2 CL2 8.3660 14.0953 0.4334 CL 1 UNCH -0.2900 + 3 CL3 5.5611 13.3554 0.3050 CL 1 UNCH -0.2900 + 4 CL4 5.2130 10.1197 1.1449 CL 1 UNCH -0.2900 + 5 CL5 7.8948 9.0527 1.6001 CL 1 UNCH -0.2900 + 6 CL6 6.6569 7.7798 -1.0736 CL 1 UNCH -0.1400 + 7 CL7 7.5944 9.4539 -3.2287 CL 1 UNCH -0.1400 + 8 O1 8.5633 12.2542 -1.8583 O.3 1 UNCH -0.2960 + 9 O2 7.0174 12.0711 2.6451 O.3 1 UNCH -0.6800 + 10 C1 7.4393 11.8987 -1.0339 C.3 1 UNCH 0.0930 + 11 C2 7.2373 12.7264 0.2319 C.3 1 UNCH 0.6750 + 12 C3 7.5107 11.7023 1.3505 C.3 1 UNCH 0.2800 + 13 C4 7.2694 12.5278 -2.4072 C.3 1 UNCH 0.2753 + 14 C5 6.9514 10.3568 0.8035 C.3 1 UNCH 0.7182 + 15 C6 7.1716 10.4399 -0.7195 C.2 1 UNCH -0.1782 + 16 C7 7.1515 9.3749 -1.5546 C.2 1 UNCH 0.2800 + 17 H1 7.3216 12.9765 2.8455 H 1 UNCH 0.4000 + 18 H2 8.6014 11.6017 1.4602 H 1 UNCH 0.0000 + 19 H3 6.9205 11.9507 -3.2469 H 1 UNCH 0.1000 +@BOND + 1 1 13 1 + 2 2 11 1 + 3 3 11 1 + 4 4 14 1 + 5 5 14 1 + 6 6 16 1 + 7 7 16 1 + 8 8 10 1 + 9 8 13 1 + 10 9 12 1 + 11 9 17 1 + 12 10 11 1 + 13 10 13 1 + 14 10 15 1 + 15 11 12 1 + 16 12 14 1 + 17 12 18 1 + 18 13 19 1 + 19 14 15 1 + 20 15 16 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1R*,3S*)-2,2,4,4-TETRACHLORO-5-DICHLOROMETHYLENE-3-HYDROXY +@MOLECULE +SICNUN + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.1034 0.4837 7.7842 C.2 1 UNCH 0.1000 + 2 C2 -1.4549 0.8346 8.0099 C.2 1 UNCH 0.1330 + 3 C3 -2.5141 0.1828 7.3504 C.2 1 UNCH -0.1500 + 4 C4 -2.2252 -0.8514 6.4549 C.2 1 UNCH 0.1330 + 5 C5 -0.9014 -1.2389 6.2240 C.2 1 UNCH -0.1500 + 6 C6 0.1398 -0.5782 6.8864 C.2 1 UNCH -0.1500 + 7 N1 1.0303 1.0857 8.3575 N.3 1 UNCH -0.4731 + 8 N2 -1.8209 1.8572 8.9857 N.2 1 UNCH 0.9070 + 9 O1 -2.7579 2.6114 8.6973 O.3 1 UNCH -0.5200 + 10 O2 -1.1935 1.8696 10.0532 O.2 1 UNCH -0.5200 + 11 N3 -3.3193 -1.5472 5.7637 N.2 1 UNCH 0.9070 + 12 O3 -3.0148 -2.4090 4.9286 O.3 1 UNCH -0.5200 + 13 O4 -4.4778 -1.2347 6.0682 O.2 1 UNCH -0.5200 + 14 N4 1.2423 2.4238 8.1033 N.2 1 UNCH 1.0440 + 15 O5 0.6076 2.9307 7.1733 O.3 1 UNCH -0.5200 + 16 O6 2.0647 2.9966 8.8222 O.2 1 UNCH -0.5200 + 17 C7 1.5481 0.5344 9.6104 C.3 1 UNCH 0.4301 + 18 C8 3.0322 0.2417 9.4752 C.2 1 UNCH 0.6590 + 19 O7 3.6416 0.0829 10.6682 O.3 1 UNCH -0.6500 + 20 O8 3.6582 0.0943 8.4370 O.2 1 UNCH -0.5700 + 21 H1 -3.5454 0.4788 7.5434 H 1 UNCH 0.1500 + 22 H2 -0.6592 -2.0427 5.5294 H 1 UNCH 0.1500 + 23 H3 1.1673 -0.8815 6.6752 H 1 UNCH 0.1500 + 24 H4 1.0604 -0.4169 9.8579 H 1 UNCH 0.0000 + 25 H5 1.3862 1.2210 10.4499 H 1 UNCH 0.0000 + 26 H6 4.5844 -0.0762 10.4453 H 1 UNCH 0.5000 +@BOND + 1 1 2 1 + 2 1 6 2 + 3 1 7 1 + 4 2 3 2 + 5 2 8 1 + 6 3 4 1 + 7 3 21 1 + 8 4 5 2 + 9 4 11 1 + 10 5 6 1 + 11 5 22 1 + 12 6 23 1 + 13 7 14 1 + 14 7 17 1 + 15 8 9 1 + 16 8 10 2 + 17 11 12 1 + 18 11 13 2 + 19 14 15 1 + 20 14 16 2 + 21 17 18 1 + 22 17 24 1 + 23 17 25 1 + 24 18 19 1 + 25 18 20 2 + 26 19 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4-N-TRINITROANILINOACETIC ACID +@MOLECULE +SICPEZ + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.4886 2.1220 0.9463 S.3 1 UNCH -0.0800 + 2 O1 3.7085 -1.6430 3.8693 O.3 1 UNCH -0.5325 + 3 N1 5.6222 -0.1242 2.5764 N.2 1 UNCH -0.6290 + 4 C1 5.3581 0.7524 0.3748 C.2 1 UNCH -0.0450 + 5 C2 5.6128 0.8679 -0.9817 C.2 1 UNCH -0.1500 + 6 C3 5.0919 2.0711 -1.5431 C.2 1 UNCH -0.1500 + 7 C4 4.4549 2.8436 -0.6006 C.2 1 UNCH -0.1100 + 8 C5 5.7229 -0.3269 1.2926 C.2 1 UNCH 0.4740 + 9 C6 6.2372 -1.6166 0.6739 C.3 1 UNCH 0.0610 + 10 C7 6.0116 -1.1193 3.4869 C.2 1 UNCH 0.1790 + 11 C8 7.3526 -1.3355 3.8084 C.2 1 UNCH -0.1500 + 12 C9 7.7017 -2.3340 4.7225 C.2 1 UNCH -0.1500 + 13 C10 6.7100 -3.1102 5.3288 C.2 1 UNCH -0.1500 + 14 C11 5.3656 -2.8832 5.0349 C.2 1 UNCH -0.1500 + 15 C12 5.0309 -1.8849 4.1295 C.2 1 UNCH 0.0825 + 16 H1 3.7155 -0.8174 3.3426 H 1 UNCH 0.4500 + 17 H2 6.1558 0.1303 -1.5601 H 1 UNCH 0.1500 + 18 H3 5.1828 2.3556 -2.5844 H 1 UNCH 0.1500 + 19 H4 3.9718 3.8006 -0.7430 H 1 UNCH 0.1500 + 20 H5 6.0459 -2.4818 1.3123 H 1 UNCH 0.0000 + 21 H6 7.3146 -1.5266 0.5063 H 1 UNCH 0.0000 + 22 H7 5.7431 -1.8136 -0.2817 H 1 UNCH 0.0000 + 23 H8 8.1251 -0.7248 3.3505 H 1 UNCH 0.1500 + 24 H9 8.7474 -2.5025 4.9678 H 1 UNCH 0.1500 + 25 H10 6.9846 -3.8836 6.0418 H 1 UNCH 0.1500 + 26 H11 4.5869 -3.4678 5.5146 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 7 1 + 3 2 15 1 + 4 2 16 1 + 5 3 8 2 + 6 3 10 1 + 7 4 5 2 + 8 4 8 1 + 9 5 6 1 + 10 5 17 1 + 11 6 7 2 + 12 6 18 1 + 13 7 19 1 + 14 8 9 1 + 15 9 20 1 + 16 9 21 1 + 17 9 22 1 + 18 10 11 1 + 19 10 15 2 + 20 11 12 2 + 21 11 23 1 + 22 12 13 1 + 23 12 24 1 + 24 13 14 2 + 25 13 25 1 + 26 14 15 1 + 27 14 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(1-(2-THIENYL)ETHYLIDENEAMINO)PHENOL +@MOLECULE +SICSEC + 22 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.5645 16.3955 2.4819 N.2 1 SICS -0.7068 + 2 N2 0.7046 15.2121 3.1395 N.3 1 SICS 0.8590 + 3 N3 1.9682 14.7393 3.3190 N.2 1 SICS -0.7068 + 4 C1 2.7005 15.6851 2.7353 C.2 1 SICS 0.5448 + 5 C2 1.8295 16.7129 2.2158 C.2 1 SICS 0.5448 + 6 N4 4.0592 15.7105 2.6274 N.2 1 SICS -0.5660 + 7 C3 4.4707 16.8281 1.9689 C.2 1 SICS 0.1600 + 8 C4 3.6253 17.8255 1.4648 C.2 1 SICS 0.1600 + 9 N5 2.2678 17.8241 1.5591 N.2 1 SICS -0.5660 + 10 C5 -0.4265 14.4966 3.6208 C.2 1 SICS -0.0230 + 11 C6 -1.7186 15.0059 3.4227 C.2 1 SICS -0.1500 + 12 C7 -2.8263 14.3001 3.8969 C.2 1 SICS -0.1500 + 13 C8 -2.6508 13.0898 4.5672 C.2 1 SICS -0.1500 + 14 C9 -1.3682 12.5797 4.7665 C.2 1 SICS -0.1500 + 15 C10 -0.2547 13.2787 4.2956 C.2 1 SICS -0.1500 + 16 H1 5.5477 16.9133 1.8467 H 1 SICS 0.1500 + 17 H2 4.0447 18.6866 0.9504 H 1 SICS 0.1500 + 18 H3 -1.8801 15.9484 2.9024 H 1 SICS 0.1500 + 19 H4 -3.8275 14.6955 3.7429 H 1 SICS 0.1500 + 20 H5 -3.5155 12.5429 4.9352 H 1 SICS 0.1500 + 21 H6 -1.2342 11.6358 5.2894 H 1 SICS 0.1500 + 22 H7 0.7366 12.8611 4.4628 H 1 SICS 0.1500 +@BOND + 1 1 5 2 + 2 1 2 1 + 3 2 10 1 + 4 2 3 1 + 5 3 4 2 + 6 4 6 am + 7 4 5 1 + 8 5 9 am + 9 6 7 2 + 10 7 16 1 + 11 7 8 1 + 12 8 17 1 + 13 8 9 2 + 14 10 15 1 + 15 10 11 2 + 16 11 18 1 + 17 11 12 1 + 18 12 19 1 + 19 12 13 2 + 20 13 20 1 + 21 13 14 1 + 22 14 21 1 + 23 14 15 2 + 24 15 22 1 +@SUBSTRUCTURE + 1 SICS 1 +@COMMENT +COMMENT 2-PHENYL-1,2,3-TRIAZOLO(4,5-B)PYRAZINE +@MOLECULE +SIDFIU + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 1.6089 -0.1845 4.0887 I 1 UNCH -0.0900 + 2 N1 4.8910 4.0839 7.0392 N.1 1 UNCH -0.5571 + 3 N2 1.0237 3.3074 5.1723 N.1 1 UNCH -0.5571 + 4 C1 3.3887 1.0020 6.4261 C.2 1 UNCH 0.0000 + 5 C2 2.4947 -0.1010 5.9715 C.2 1 UNCH 0.0900 + 6 C3 2.4194 -1.2049 6.7497 C.2 1 UNCH -0.1500 + 7 C4 3.1792 2.3288 6.2103 C.2 1 UNCH 0.1300 + 8 C5 4.1123 3.3101 6.6639 C.1 1 UNCH 0.4921 + 9 C6 1.9918 2.8536 5.6232 C.1 1 UNCH 0.4921 + 10 H1 1.8321 -2.0686 6.4430 H 1 UNCH 0.1500 + 11 C3B 4.5825 0.5514 7.1844 C.2 1 UNCH -0.1500 + 12 C1B 3.2168 -1.2886 7.9988 C.2 1 UNCH 0.0000 + 13 C2B 4.5175 -0.5620 7.9498 C.2 1 UNCH 0.0900 + 14 H1B 5.5189 1.0923 7.0590 H 1 UNCH 0.1500 + 15 C4B 2.7359 -1.9768 9.0694 C.2 1 UNCH 0.1300 + 16 I1B 6.3020 -1.3098 8.7201 I 1 UNCH -0.0900 + 17 C5B 1.4862 -2.6653 9.0077 C.1 1 UNCH 0.4921 + 18 C6B 3.3649 -1.9851 10.3478 C.1 1 UNCH 0.4921 + 19 N1B 0.4704 -3.2197 8.9259 N.1 1 UNCH -0.5571 + 20 N2B 3.8433 -1.9858 11.4049 N.1 1 UNCH -0.5571 +@BOND + 1 1 5 1 + 2 2 8 3 + 3 3 9 3 + 4 4 5 1 + 5 4 7 2 + 6 4 11 1 + 7 5 6 2 + 8 6 10 1 + 9 6 12 1 + 10 7 8 1 + 11 7 9 1 + 12 11 13 2 + 13 11 14 1 + 14 12 13 1 + 15 12 15 2 + 16 13 16 1 + 17 15 17 1 + 18 15 18 1 + 19 17 19 3 + 20 18 20 3 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,5-DI-IODO-7,7,8,8-TETRACYANO-P-QUINODIMETHANE (AT -70 DEG +@MOLECULE +SIDRUS + 38 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.5051 8.4925 7.7069 S.1 1 SIDR 0.7349 + 2 O1 2.0554 7.3689 6.9462 O.2 1 SIDR -0.6500 + 3 N1 3.3700 8.8389 4.2500 N.2 1 SIDR -0.4570 + 4 O2 2.5014 9.4695 8.1458 O.2 1 SIDR -0.6500 + 5 N2 4.6668 8.8809 4.6311 N.2 1 SIDR 0.0430 + 6 N3 4.8462 9.9533 5.2872 N.2 1 SIDR 0.0430 + 7 N4 3.6630 10.6143 5.3464 N.3 1 SIDR -0.4570 + 8 C1 2.7495 9.9771 4.5977 C.2 1 SIDR 0.6560 + 9 C2 1.3331 10.3852 4.2185 C.3 1 SIDR 0.3900 + 10 C3 1.1419 11.6419 3.3297 C.3 1 SIDR 0.0000 + 11 N5 0.5571 10.4645 5.4640 N.2 1 SIDR -0.2460 + 12 N6 0.2591 9.3113 5.8277 N.2 1 SIDR -0.4310 + 13 N7 0.1346 9.1236 7.1503 N.3 1 SIDR -0.1091 + 14 C4 2.8146 7.5793 3.8259 C.3 1 SIDR 0.5140 + 15 C5 0.9139 7.7582 9.2168 C.3 1 SIDR 0.1052 + 16 C6 3.5199 11.6261 6.3634 C.3 1 SIDR 0.5140 + 17 C7 -0.3447 11.7569 2.9287 C.3 1 SIDR 0.0000 + 18 C8 1.9747 11.4852 2.0415 C.3 1 SIDR 0.0000 + 19 C9 1.5551 12.9498 4.0179 C.3 1 SIDR 0.0000 + 20 H1 0.9785 9.5320 3.6219 H 1 SIDR 0.0000 + 21 H2 1.8113 7.4475 4.2357 H 1 SIDR 0.0000 + 22 H3 3.4428 6.7494 4.1623 H 1 SIDR 0.0000 + 23 H4 2.7614 7.5726 2.7340 H 1 SIDR 0.0000 + 24 H5 0.4918 8.5370 9.8558 H 1 SIDR 0.0000 + 25 H6 1.7612 7.2880 9.7219 H 1 SIDR 0.0000 + 26 H7 0.1624 7.0020 8.9791 H 1 SIDR 0.0000 + 27 H8 2.4723 11.7801 6.6221 H 1 SIDR 0.0000 + 28 H9 3.9419 12.5627 5.9898 H 1 SIDR 0.0000 + 29 H10 4.0709 11.3381 7.2633 H 1 SIDR 0.0000 + 30 H11 -0.9845 11.9252 3.8019 H 1 SIDR 0.0000 + 31 H12 -0.6920 10.8458 2.4284 H 1 SIDR 0.0000 + 32 H13 -0.5058 12.5931 2.2385 H 1 SIDR 0.0000 + 33 H14 3.0470 11.4356 2.2608 H 1 SIDR 0.0000 + 34 H15 1.8174 12.3315 1.3629 H 1 SIDR 0.0000 + 35 H16 1.7010 10.5720 1.5010 H 1 SIDR 0.0000 + 36 H17 1.0594 13.0749 4.9858 H 1 SIDR 0.0000 + 37 H18 1.2887 13.8174 3.4023 H 1 SIDR 0.0000 + 38 H19 2.6361 12.9970 4.1694 H 1 SIDR 0.0000 +@BOND + 1 1 15 1 + 2 1 13 1 + 3 1 4 2 + 4 1 2 2 + 5 3 14 1 + 6 3 8 2 + 7 3 5 1 + 8 5 6 2 + 9 6 7 1 + 10 7 16 1 + 11 7 8 am + 12 8 9 1 + 13 9 20 1 + 14 9 11 1 + 15 9 10 1 + 16 10 19 1 + 17 10 18 1 + 18 10 17 1 + 19 11 12 2 + 20 12 13 1 + 21 14 23 1 + 22 14 22 1 + 23 14 21 1 + 24 15 26 1 + 25 15 25 1 + 26 15 24 1 + 27 16 29 1 + 28 16 28 1 + 29 16 27 1 + 30 17 32 1 + 31 17 31 1 + 32 17 30 1 + 33 18 35 1 + 34 18 34 1 + 35 18 33 1 + 36 19 38 1 + 37 19 37 1 + 38 19 36 1 +@SUBSTRUCTURE + 1 SIDR 1 +@COMMENT +COMMENT 5-(6-METHYLSULFONYL-2,2-DIMETHYL-4,5,6-TRIAZAHEX-4-EN-3-YL) +@MOLECULE +SINMIL + 40 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.0543 0.5004 8.3368 P 1 SINM -0.4129 + 2 N1 -1.3752 -1.3672 9.9950 N.3 1 SINM -0.9280 + 3 N2 -1.3752 2.8084 7.3637 N.3 1 SINM -0.9280 + 4 C1 -1.3752 -0.8286 8.6131 C.3 1 SINM 0.7180 + 5 C2 -1.3752 1.3331 7.2779 C.3 1 SINM 0.7180 + 6 C3 0.9425 -0.2639 6.9689 C.3 1 SINM 0.1669 + 7 C4 2.0508 -1.1644 7.4816 C.3 1 SINM 0.0000 + 8 C5 -0.1427 -2.2005 10.2310 C.3 1 SINM 0.5030 + 9 C6 -2.6111 3.3614 6.6992 C.3 1 SINM 0.5030 + 10 H1 -1.3752 -0.5961 10.6754 H 1 SINM 0.4500 + 11 H2 -1.3752 3.1104 8.3468 H 1 SINM 0.4500 + 12 H3 -1.3752 -1.5741 7.8134 H 1 SINM 0.0000 + 13 H4 -1.3752 0.9309 6.2602 H 1 SINM 0.0000 + 14 H5 0.2992 -0.8264 6.2843 H 1 SINM 0.0000 + 15 H6 1.3926 0.5503 6.3902 H 1 SINM 0.0000 + 16 H7 2.6705 -1.5070 6.6462 H 1 SINM 0.0000 + 17 H8 1.6493 -2.0533 7.9760 H 1 SINM 0.0000 + 18 H9 2.7026 -0.6430 8.1908 H 1 SINM 0.0000 + 19 H10 -0.0851 -2.9772 9.4633 H 1 SINM 0.0000 + 20 H11 0.7356 -1.5524 10.2205 H 1 SINM 0.0000 + 21 H12 -0.2264 -2.6517 11.2242 H 1 SINM 0.0000 + 22 H13 -2.6643 2.9840 5.6739 H 1 SINM 0.0000 + 23 H14 -2.5343 4.4526 6.7028 H 1 SINM 0.0000 + 24 H15 -3.4904 3.0717 7.2783 H 1 SINM 0.0000 + 25 P1A -2.6961 0.5004 8.3368 P 1 SINM -0.4129 + 26 C5A -2.6078 -2.2005 10.2310 C.3 1 SINM 0.5030 + 27 C6A -0.1393 3.3614 6.6992 C.3 1 SINM 0.5030 + 28 C3A -3.6929 -0.2638 6.9689 C.3 1 SINM 0.1669 + 29 H10A -2.6653 -2.9772 9.4633 H 1 SINM 0.0000 + 30 H11A -3.4861 -1.5524 10.2205 H 1 SINM 0.0000 + 31 H12A -2.5241 -2.6517 11.2242 H 1 SINM 0.0000 + 32 H13A -0.0861 2.9840 5.6739 H 1 SINM 0.0000 + 33 H14A -0.2161 4.4526 6.7028 H 1 SINM 0.0000 + 34 H15A 0.7400 3.0717 7.2783 H 1 SINM 0.0000 + 35 C4A -4.8013 -1.1644 7.4816 C.3 1 SINM 0.0000 + 36 H5A -3.0496 -0.8264 6.2843 H 1 SINM 0.0000 + 37 H6A -4.1430 0.5504 6.3902 H 1 SINM 0.0000 + 38 H7A -5.4210 -1.5070 6.6462 H 1 SINM 0.0000 + 39 H8A -4.3998 -2.0533 7.9760 H 1 SINM 0.0000 + 40 H9A -5.4531 -0.6430 8.1908 H 1 SINM 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 1 6 1 + 4 2 4 1 + 5 2 8 1 + 6 2 10 1 + 7 2 26 1 + 8 3 5 1 + 9 3 9 1 + 10 3 11 1 + 11 3 27 1 + 12 4 12 1 + 13 4 25 1 + 14 5 13 1 + 15 5 25 1 + 16 6 7 1 + 17 6 14 1 + 18 6 15 1 + 19 7 16 1 + 20 7 17 1 + 21 7 18 1 + 22 8 19 1 + 23 8 20 1 + 24 8 21 1 + 25 9 22 1 + 26 9 23 1 + 27 9 24 1 + 28 25 28 1 + 29 26 29 1 + 30 26 30 1 + 31 26 31 1 + 32 27 32 1 + 33 27 33 1 + 34 27 34 1 + 35 28 35 1 + 36 28 36 1 + 37 28 37 1 + 38 35 38 1 + 39 35 39 1 + 40 35 40 1 +@SUBSTRUCTURE + 1 SINM 1 +@COMMENT +COMMENT 1,3-DIETHYL-2,4-BIS(DIMETHYLAMINO)-1LAMBDA-3-,3LAMBDA-3--DI +@MOLECULE +SIYLOB + 38 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.3159 5.5863 4.3256 S.3 1 UNCH -0.4600 + 2 P1 2.7268 1.6314 6.0127 P 1 UNCH 1.2424 + 3 O1 3.2286 1.9332 7.3957 O.2 1 UNCH -0.7000 + 4 O2 3.5609 0.4720 5.2553 O.3 1 UNCH -0.5512 + 5 O3 1.2291 1.0290 5.9814 O.3 1 UNCH -0.5512 + 6 N1 4.0324 3.6749 4.9577 N.3 1 UNCH -0.9000 + 7 C1 3.9869 4.8845 4.1307 C.3 1 UNCH 0.5000 + 8 C2 2.6837 3.0412 4.8763 C.3 1 UNCH 0.2700 + 9 C3 1.6316 4.1192 5.1851 C.3 1 UNCH 0.2300 + 10 C4 5.1113 5.8824 4.5018 C.3 1 UNCH 0.0000 + 11 C5 5.0957 7.1362 3.6162 C.3 1 UNCH 0.0000 + 12 C6 6.4961 5.2261 4.3907 C.3 1 UNCH 0.0000 + 13 C7 1.4894 4.4747 6.6685 C.3 1 UNCH 0.0000 + 14 C8 0.2648 3.7884 4.5837 C.3 1 UNCH 0.0000 + 15 C9 0.9588 -0.0454 6.8604 C.3 1 UNCH 0.2800 + 16 C10 4.9623 0.6217 5.1461 C.3 1 UNCH 0.2800 + 17 H1 4.1932 3.9528 5.9305 H 1 UNCH 0.3600 + 18 H2 4.0963 4.5932 3.0791 H 1 UNCH 0.0000 + 19 H3 2.5445 2.6358 3.8651 H 1 UNCH 0.0000 + 20 H4 4.9836 6.2051 5.5443 H 1 UNCH 0.0000 + 21 H5 5.9396 7.7919 3.8576 H 1 UNCH 0.0000 + 22 H6 5.1685 6.8717 2.5557 H 1 UNCH 0.0000 + 23 H7 4.1848 7.7246 3.7601 H 1 UNCH 0.0000 + 24 H8 7.2873 5.9455 4.6285 H 1 UNCH 0.0000 + 25 H9 6.6750 4.8499 3.3776 H 1 UNCH 0.0000 + 26 H10 6.6013 4.3896 5.0888 H 1 UNCH 0.0000 + 27 H11 2.4480 4.7229 7.1372 H 1 UNCH 0.0000 + 28 H12 1.0548 3.6407 7.2302 H 1 UNCH 0.0000 + 29 H13 0.8189 5.3308 6.8129 H 1 UNCH 0.0000 + 30 H14 -0.4355 4.6256 4.6897 H 1 UNCH 0.0000 + 31 H15 -0.1911 2.9288 5.0843 H 1 UNCH 0.0000 + 32 H16 0.3354 3.5446 3.5172 H 1 UNCH 0.0000 + 33 H17 -0.0583 -0.4004 6.6767 H 1 UNCH 0.0000 + 34 H18 1.0331 0.2923 7.8975 H 1 UNCH 0.0000 + 35 H19 1.6575 -0.8677 6.6849 H 1 UNCH 0.0000 + 36 H20 5.4091 -0.3692 5.0313 H 1 UNCH 0.0000 + 37 H21 5.3831 1.0923 6.0387 H 1 UNCH 0.0000 + 38 H22 5.2016 1.2150 4.2605 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 1 9 1 + 3 2 3 2 + 4 2 4 1 + 5 2 5 1 + 6 2 8 1 + 7 4 16 1 + 8 5 15 1 + 9 6 7 1 + 10 6 8 1 + 11 6 17 1 + 12 7 10 1 + 13 7 18 1 + 14 8 9 1 + 15 8 19 1 + 16 9 13 1 + 17 9 14 1 + 18 10 11 1 + 19 10 12 1 + 20 10 20 1 + 21 11 21 1 + 22 11 22 1 + 23 11 23 1 + 24 12 24 1 + 25 12 25 1 + 26 12 26 1 + 27 13 27 1 + 28 13 28 1 + 29 13 29 1 + 30 14 30 1 + 31 14 31 1 + 32 14 32 1 + 33 15 33 1 + 34 15 34 1 + 35 15 35 1 + 36 16 36 1 + 37 16 37 1 + 38 16 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (2RS,4RS)-CIS-3-ISOPROPYL-5,5-DIMETHYL-4-THIAZOLIDINYLPHOSP +@MOLECULE +SIZJIU + 38 40 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 2.3059 5.0164 2.7158 O.3 1 UNCH -0.2960 + 2 O2 0.2043 6.8965 3.9300 O.3 1 UNCH -0.6800 + 3 O3 1.1174 2.3786 3.9340 O.3 1 UNCH -0.5600 + 4 O4 3.2445 1.1548 5.3759 O.3 1 UNCH -0.6800 + 5 O5 3.6166 -1.6752 4.6051 O.3 1 UNCH -0.6800 + 6 O6 3.6633 -2.0633 1.8037 O.3 1 UNCH -0.6800 + 7 O7 1.4724 0.8960 2.1492 O.3 1 UNCH -0.5600 + 8 O8 0.4945 -1.2232 0.5305 O.3 1 UNCH -0.6800 + 9 N1 -1.4622 2.3726 1.5937 N.1 1 UNCH -0.5571 + 10 C1 0.4735 3.3522 3.1017 C.3 1 UNCH 0.5750 + 11 C2 1.3891 4.0703 2.1377 C.3 1 UNCH -0.0470 + 12 C3 1.0798 5.5249 2.1736 C.3 1 UNCH -0.0470 + 13 C4 -0.0388 5.7446 3.1444 C.3 1 UNCH 0.3750 + 14 C5 -0.0659 4.4773 4.0150 C.3 1 UNCH 0.0000 + 15 C6 -0.6122 2.7907 2.2670 C.1 1 UNCH 0.3571 + 16 C7 2.0624 1.5200 3.2819 C.3 1 UNCH 0.5600 + 17 C8 2.5192 0.4839 4.3315 C.3 1 UNCH 0.2800 + 18 C9 3.4001 -0.5908 3.6870 C.3 1 UNCH 0.2800 + 19 C10 2.7446 -1.1550 2.4205 C.3 1 UNCH 0.2800 + 20 C11 2.3720 -0.0007 1.4810 C.3 1 UNCH 0.2800 + 21 C12 1.6725 -0.4891 0.2076 C.3 1 UNCH 0.2800 + 22 H1 1.1247 6.8480 4.2477 H 1 UNCH 0.4000 + 23 H2 2.6031 1.7432 5.8147 H 1 UNCH 0.4000 + 24 H3 4.1436 -2.3320 4.1106 H 1 UNCH 0.4000 + 25 H4 3.1285 -2.6746 1.2610 H 1 UNCH 0.4000 + 26 H5 -0.1158 -0.5864 0.9537 H 1 UNCH 0.4000 + 27 H6 1.6504 3.5776 1.2142 H 1 UNCH 0.1000 + 28 H7 1.0881 6.1344 1.2854 H 1 UNCH 0.1000 + 29 H8 -0.9869 5.8711 2.6113 H 1 UNCH 0.0000 + 30 H9 -1.0702 4.2758 4.4054 H 1 UNCH 0.0000 + 31 H10 0.5816 4.6044 4.8935 H 1 UNCH 0.0000 + 32 H11 2.9219 2.1286 2.9732 H 1 UNCH 0.0000 + 33 H12 1.6509 0.0091 4.8057 H 1 UNCH 0.0000 + 34 H13 4.3938 -0.1829 3.4631 H 1 UNCH 0.0000 + 35 H14 1.8581 -1.7297 2.7182 H 1 UNCH 0.0000 + 36 H15 3.2700 0.5509 1.1730 H 1 UNCH 0.0000 + 37 H16 2.3278 -1.1364 -0.3825 H 1 UNCH 0.0000 + 38 H17 1.3722 0.3587 -0.4174 H 1 UNCH 0.0000 +@BOND + 1 1 11 1 + 2 1 12 1 + 3 2 13 1 + 4 2 22 1 + 5 3 10 1 + 6 3 16 1 + 7 4 17 1 + 8 4 23 1 + 9 5 18 1 + 10 5 24 1 + 11 6 19 1 + 12 6 25 1 + 13 7 16 1 + 14 7 20 1 + 15 8 21 1 + 16 8 26 1 + 17 9 15 3 + 18 10 11 1 + 19 10 14 1 + 20 10 15 1 + 21 11 12 1 + 22 11 27 1 + 23 12 13 1 + 24 12 28 1 + 25 13 14 1 + 26 13 29 1 + 27 14 30 1 + 28 14 31 1 + 29 16 17 1 + 30 16 32 1 + 31 17 18 1 + 32 17 33 1 + 33 18 19 1 + 34 18 34 1 + 35 19 20 1 + 36 19 35 1 + 37 20 21 1 + 38 20 36 1 + 39 21 37 1 + 40 21 38 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1R,2R,3R,4R)-1-(BETA-D-GLUCOPYRANOSYLOXY)-2,3-EPOXY-4-HYDR +@MOLECULE +SIZWUT + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.8274 0.4612 -0.1446 S.3 1 UNCH -0.0800 + 2 C1 5.1186 2.1492 -0.3608 C.2 1 UNCH 0.1981 + 3 N1 6.3898 2.5059 -0.3013 N.2 1 UNCH -0.5653 + 4 C2 7.1955 1.3883 -0.0530 C.2 1 UNCH 0.1412 + 5 C3 6.5043 0.1977 0.0588 C.2 1 UNCH -0.1100 + 6 C4 8.6483 1.5041 0.0730 C.2 1 UNCH 0.7160 + 7 N2 9.1126 2.7804 -0.0660 N.3 1 UNCH -0.8000 + 8 O1 9.4003 0.5602 0.2867 O.2 1 UNCH -0.5700 + 9 C5 3.9831 3.1096 -0.6219 C.3 1 UNCH 0.5982 + 10 C6 3.1954 2.9066 -1.8712 C.2 1 UNCH -0.2882 + 11 C7 1.8984 2.8012 -1.5857 C.2 1 UNCH -0.2882 + 12 C8 1.6913 2.9267 -0.1190 C.3 1 UNCH 0.4182 + 13 C9 0.9522 1.7427 0.5118 C.3 1 UNCH 0.2800 + 14 O2 3.0211 2.9927 0.4569 O.3 1 UNCH -0.5600 + 15 O3 0.8303 1.9372 1.9221 O.3 1 UNCH -0.6800 + 16 H1 6.9062 -0.7886 0.2471 H 1 UNCH 0.1500 + 17 H2 10.0969 2.9646 0.0515 H 1 UNCH 0.3700 + 18 H3 8.4527 3.5379 -0.1935 H 1 UNCH 0.3700 + 19 H4 4.3725 4.1345 -0.5991 H 1 UNCH 0.0000 + 20 H5 3.6294 2.8725 -2.8596 H 1 UNCH 0.1500 + 21 H6 1.1044 2.6704 -2.3066 H 1 UNCH 0.1500 + 22 H7 1.1852 3.8663 0.1289 H 1 UNCH 0.0000 + 23 H8 -0.0539 1.6363 0.0947 H 1 UNCH 0.0000 + 24 H9 1.4949 0.8039 0.3591 H 1 UNCH 0.0000 + 25 H10 1.7267 2.1706 2.2332 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 9 1 + 5 3 4 1 + 6 4 5 2 + 7 4 6 1 + 8 5 16 1 + 9 6 7 am + 10 6 8 2 + 11 7 17 1 + 12 7 18 1 + 13 9 10 1 + 14 9 14 1 + 15 9 19 1 + 16 10 11 2 + 17 10 20 1 + 18 11 12 1 + 19 11 21 1 + 20 12 13 1 + 21 12 14 1 + 22 12 22 1 + 23 13 15 1 + 24 13 23 1 + 25 13 24 1 + 26 15 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(2',3'-DIDEOXY-BETA-D-GLYCERO-PENT-2-ENOFURANOSYL)THIAZOL +@MOLECULE +SLFNMB04 + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.6868 2.4212 -7.0696 C.2 1 UNCH 0.1000 + 2 C2 9.1657 3.2196 -6.0461 C.2 1 UNCH -0.1500 + 3 C3 8.9162 2.6861 -4.7791 C.2 1 UNCH -0.1500 + 4 C4 9.2232 1.3475 -4.5257 C.2 1 UNCH -0.0090 + 5 C5 9.8105 0.5561 -5.5139 C.2 1 UNCH -0.1500 + 6 C6 10.0543 1.1038 -6.7762 C.2 1 UNCH -0.1500 + 7 N1 10.0445 2.9941 -8.2939 N.3 1 UNCH -0.9000 + 8 S1 8.9087 0.6764 -2.9105 S.1 1 UNCH 1.4470 + 9 O1 9.3893 1.6451 -1.9485 O.2 1 UNCH -0.6500 + 10 O2 9.3681 -0.6962 -2.8910 O.2 1 UNCH -0.6500 + 11 N2 7.2503 0.6950 -2.8251 N.3 1 UNCH -0.7030 + 12 C7 6.3900 -0.0502 -3.6075 C.2 1 UNCH 0.4338 + 13 C8 6.6682 -1.1452 -4.4491 C.2 1 UNCH -0.1500 + 14 C9 5.4472 -1.4914 -4.9734 C.2 1 UNCH -0.0400 + 15 O3 4.4964 -0.6573 -4.4759 O.3 1 UNCH -0.0191 + 16 N3 5.0879 0.2463 -3.6114 N.2 1 UNCH -0.4097 + 17 C10 4.9841 -2.5315 -5.9075 C.3 1 UNCH 0.1800 + 18 H1 8.9537 4.2705 -6.2281 H 1 UNCH 0.1500 + 19 H2 8.5042 3.3218 -3.9992 H 1 UNCH 0.1500 + 20 H3 10.0991 -0.4725 -5.3114 H 1 UNCH 0.1500 + 21 H4 10.5418 0.4926 -7.5320 H 1 UNCH 0.1500 + 22 H5 9.4995 3.8128 -8.5458 H 1 UNCH 0.4000 + 23 H6 10.1210 2.3312 -9.0588 H 1 UNCH 0.4000 + 24 H7 6.8413 1.4267 -2.2508 H 1 UNCH 0.4200 + 25 H8 7.6112 -1.6332 -4.6413 H 1 UNCH 0.1500 + 26 H9 4.2595 -3.1904 -5.4196 H 1 UNCH 0.0000 + 27 H10 5.8200 -3.1448 -6.2581 H 1 UNCH 0.0000 + 28 H11 4.5056 -2.0776 -6.7807 H 1 UNCH 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 7 1 + 4 2 3 1 + 5 2 18 1 + 6 3 4 2 + 7 3 19 1 + 8 4 5 1 + 9 4 8 1 + 10 5 6 2 + 11 5 20 1 + 12 6 21 1 + 13 7 22 1 + 14 7 23 1 + 15 8 9 2 + 16 8 10 2 + 17 8 11 1 + 18 11 12 am + 19 11 24 1 + 20 12 13 1 + 21 12 16 2 + 22 13 14 2 + 23 13 25 1 + 24 14 15 1 + 25 14 17 1 + 26 15 16 1 + 27 17 26 1 + 28 17 27 1 + 29 17 28 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(5-METHYL-3-ISOXAZOLYL)-SULFANILAMIDE (FORM II, DRUG) SUL +@MOLECULE +SOGVOZ + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 6.1946 0.6917 0.3111 O.2 1 UNCH -0.5700 + 2 O2 6.0493 3.5767 -0.6898 O.3 1 UNCH -0.5200 + 3 O3 6.8527 3.2231 -2.7184 O.2 1 UNCH -0.5200 + 4 N1 6.9208 3.1934 -1.4823 N.2 1 UNCH 0.9610 + 5 N2 9.3645 3.2319 -1.2666 N.2 1 UNCH -0.5653 + 6 N3 9.6441 1.6770 0.2881 N.3 1 UNCH 0.0476 + 7 N4 9.2204 0.4315 2.2544 N.3 1 UNCH -0.6390 + 8 N5 7.9492 0.0523 1.6894 N.3 1 UNCH -0.3511 + 9 C1 7.3608 0.8127 0.6631 C.2 1 UNCH 0.7150 + 10 C2 8.2897 1.7054 0.0373 C.2 1 UNCH -0.2366 + 11 C3 8.1399 2.6937 -0.9071 C.2 1 UNCH 0.3062 + 12 C4 10.2471 2.5808 -0.5391 C.2 1 UNCH 0.0365 + 13 C5 10.2617 0.7447 1.2351 C.3 1 UNCH 0.5256 + 14 C6 11.4468 1.3777 1.9820 C.3 1 UNCH 0.0000 + 15 C7 10.7158 -0.5382 0.5253 C.3 1 UNCH 0.0000 + 16 C8 7.1430 -0.8770 2.4594 C.3 1 UNCH 0.3001 + 17 H1 9.0538 1.2634 2.8287 H 1 UNCH 0.3600 + 18 H2 11.3189 2.7331 -0.5787 H 1 UNCH 0.1500 + 19 H3 12.2816 1.5883 1.3039 H 1 UNCH 0.0000 + 20 H4 11.8264 0.7090 2.7638 H 1 UNCH 0.0000 + 21 H5 11.1657 2.3250 2.4581 H 1 UNCH 0.0000 + 22 H6 11.1173 -1.2665 1.2392 H 1 UNCH 0.0000 + 23 H7 11.5023 -0.3221 -0.2075 H 1 UNCH 0.0000 + 24 H8 9.8961 -1.0208 -0.0196 H 1 UNCH 0.0000 + 25 H9 7.7804 -1.6674 2.8661 H 1 UNCH 0.0000 + 26 H10 6.3728 -1.3262 1.8260 H 1 UNCH 0.0000 + 27 H11 6.6586 -0.3299 3.2736 H 1 UNCH 0.0000 +@BOND + 1 1 9 2 + 2 2 4 1 + 3 3 4 2 + 4 4 11 1 + 5 5 11 1 + 6 5 12 2 + 7 6 10 1 + 8 6 12 am + 9 6 13 1 + 10 7 8 1 + 11 7 13 1 + 12 7 17 1 + 13 8 9 am + 14 8 16 1 + 15 9 10 1 + 16 10 11 2 + 17 12 18 1 + 18 13 14 1 + 19 13 15 1 + 20 14 19 1 + 21 14 20 1 + 22 14 21 1 + 23 15 22 1 + 24 15 23 1 + 25 15 24 1 + 26 16 25 1 + 27 16 26 1 + 28 16 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1,2,3,4-TETRAHYDRO-2,4,4-TRIMETHYL-8-NITROIMIDAZO(1,5-D)(1, +@MOLECULE +SOHXOC + 32 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 6.0774 5.6340 -2.3123 C.2 1 SOHX 1.2000 + 2 C2 4.3126 3.2819 -0.3313 C.2 1 SOHX 0.3746 + 3 C3 5.1424 2.0257 -0.4752 C.3 1 SOHX 0.0610 + 4 C4 3.1037 3.2329 0.5265 C.2 1 SOHX 0.0288 + 5 C5 2.1734 2.2790 0.7137 C.2 1 SOHX 0.1648 + 6 C6 2.0382 0.9695 0.0229 C.3 1 SOHX 0.1382 + 7 C7 2.6331 4.3386 1.3494 C.2 1 SOHX 0.3756 + 8 C8 0.1259 2.1990 2.2032 C.2 1 SOHX 1.2000 + 9 N1 7.1666 5.7116 -3.0847 N.3 1 SOHX -0.9667 + 10 N2 5.3181 6.7199 -2.1430 N.3 1 SOHX -0.9667 + 11 N3 5.7389 4.4550 -1.6995 N.2 1 SOHX -0.6487 + 12 N4 4.6237 4.4153 -0.9062 N.2 1 SOHX -0.3180 + 13 N5 1.5474 4.0726 1.9932 N.2 1 SOHX -0.3180 + 14 N6 1.2558 2.7817 1.6281 N.2 1 SOHX -0.5017 + 15 N7 -0.2297 0.9118 2.0590 N.3 1 SOHX -0.9667 + 16 N8 -0.6630 2.9714 2.9742 N.3 1 SOHX -0.9667 + 17 H1 6.3442 3.6575 -1.8765 H 1 SOHX 0.4500 + 18 H2 3.1839 5.2887 1.3884 H 1 SOHX 0.0600 + 19 H3 7.4214 6.5806 -3.5401 H 1 SOHX 0.4500 + 20 H4 7.7804 4.9232 -3.2449 H 1 SOHX 0.4500 + 21 H5 4.4940 6.6353 -1.5617 H 1 SOHX 0.4500 + 22 H6 5.5254 7.6111 -2.5720 H 1 SOHX 0.4500 + 23 H7 5.0645 1.6526 -1.5000 H 1 SOHX 0.0000 + 24 H8 4.8208 1.2457 0.2188 H 1 SOHX 0.0000 + 25 H9 6.1891 2.2480 -0.2470 H 1 SOHX 0.0000 + 26 H10 2.2835 0.1477 0.7015 H 1 SOHX 0.0000 + 27 H11 1.0202 0.8375 -0.3565 H 1 SOHX 0.0000 + 28 H12 2.6956 0.8935 -0.8475 H 1 SOHX 0.0000 + 29 H13 0.3423 0.2240 1.5989 H 1 SOHX 0.4500 + 30 H14 -1.0790 0.5671 2.4907 H 1 SOHX 0.4500 + 31 H15 -0.3826 3.9394 3.0998 H 1 SOHX 0.4500 + 32 H16 -1.4946 2.6411 3.4412 H 1 SOHX 0.4500 +@BOND + 1 1 11 2 + 2 1 10 am + 3 1 9 am + 4 2 12 2 + 5 2 4 1 + 6 2 3 1 + 7 3 25 1 + 8 3 24 1 + 9 3 23 1 + 10 4 7 1 + 11 4 5 2 + 12 5 14 1 + 13 5 6 1 + 14 6 28 1 + 15 6 27 1 + 16 6 26 1 + 17 7 18 1 + 18 7 13 2 + 19 8 16 am + 20 8 15 am + 21 8 14 2 + 22 9 20 1 + 23 9 19 1 + 24 10 22 1 + 25 10 21 1 + 26 11 17 1 + 27 11 12 1 + 28 13 14 1 + 29 15 30 1 + 30 15 29 1 + 31 16 32 1 + 32 16 31 1 +@SUBSTRUCTURE + 1 SOHX 1 +@COMMENT +COMMENT 4-((1-AMIDINIOHYDRAZONO)ETHYL)-5-METHYL-1-PYRAZOLECARBOXAMI +@MOLECULE +SOJNEK + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 8.4822 -0.5375 1.5450 S.3 1 UNCH -0.2820 + 2 C1 6.7368 -0.7139 1.7038 C.2 1 UNCH 0.6140 + 3 N1 6.1056 -1.2684 0.7049 N.2 1 UNCH -0.4920 + 4 N2 7.0270 -1.6019 -0.2596 N.3 1 UNCH -0.3771 + 5 C2 8.3434 -1.2348 -0.0658 C.2 1 UNCH 0.6410 + 6 S2 5.8580 -0.1670 3.1473 S.1 1 UNCH 1.4150 + 7 O1 6.3175 -0.9668 4.2622 O.2 1 UNCH -0.6500 + 8 N3 4.2175 -0.5498 2.9708 N.3 1 UNCH -0.9780 + 9 O2 5.9097 1.2787 3.1639 O.2 1 UNCH -0.6500 + 10 C3 6.5172 -2.0343 -1.5462 C.3 1 UNCH 0.3691 + 11 N4 9.3055 -1.3990 -0.9139 N.2 1 UNCH -0.6610 + 12 C4 10.5487 -0.9283 -0.5875 C.2 1 UNCH 0.7200 + 13 O3 10.8411 0.2614 -0.5433 O.2 1 UNCH -0.5700 + 14 C5 11.5721 -2.0092 -0.3661 C.3 1 UNCH 0.0610 + 15 H1 3.9245 -1.1444 3.7478 H 1 UNCH 0.4200 + 16 H2 3.6744 0.3133 2.9114 H 1 UNCH 0.4200 + 17 H3 11.8113 -2.4869 -1.3195 H 1 UNCH 0.0000 + 18 H4 11.1848 -2.7523 0.3362 H 1 UNCH 0.0000 + 19 H5 12.4811 -1.5728 0.0571 H 1 UNCH 0.0000 + 20 H6 7.1875 -2.7671 -2.0070 H 1 UNCH 0.0000 + 21 H7 5.5353 -2.5078 -1.4392 H 1 UNCH 0.0000 + 22 H8 6.4152 -1.1783 -2.2208 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 6 1 + 5 3 4 1 + 6 4 5 am + 7 4 10 1 + 8 5 11 2 + 9 6 7 2 + 10 6 8 1 + 11 6 9 2 + 12 8 15 1 + 13 8 16 1 + 14 10 20 1 + 15 10 21 1 + 16 10 22 1 + 17 11 12 am + 18 12 13 2 + 19 12 14 1 + 20 14 17 1 + 21 14 18 1 + 22 14 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT N-(3-METHYL-5-SULFAMOYL-1,3,4-THIADIAZOL-2(3H)-YLIDENE)ACET +@MOLECULE +SOMKIO + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.0494 8.0734 6.5518 S.2 1 SOMK 0.1345 + 2 BR1 1.2250 10.6781 8.5765 BR 1 SOMK -0.2190 + 3 BR2 1.4844 8.6250 11.0146 BR 1 SOMK -0.2190 + 4 N1 2.1268 7.1322 8.0173 N.3 1 SOMK -0.5851 + 5 N2 1.7162 4.0074 6.7141 N.1 1 SOMK -0.5571 + 6 O1 -1.0303 7.0421 6.4142 O.2 1 SOMK -0.5000 + 7 O2 3.9522 8.5507 8.2881 O.2 1 SOMK -0.5700 + 8 C1 1.5709 7.4158 5.6673 C.3 1 SOMK 0.1935 + 9 C2 2.3628 6.5665 6.6953 C.3 1 SOMK 0.5001 + 10 C3 0.7991 7.7264 8.2627 C.3 1 SOMK 0.3970 + 11 C4 1.5036 8.8351 9.0844 C.3 1 SOMK 0.4910 + 12 C5 2.8002 8.2331 8.4667 C.2 1 SOMK 0.5770 + 13 C6 1.9869 5.1361 6.7032 C.1 1 SOMK 0.3571 + 14 C7 2.3865 8.6397 5.2026 C.3 1 SOMK 0.0000 + 15 C8 1.1312 6.6537 4.4056 C.3 1 SOMK 0.0000 + 16 H1 3.4368 6.6302 6.4788 H 1 SOMK 0.0000 + 17 H2 0.1577 7.0561 8.8458 H 1 SOMK 0.0000 + 18 H3 2.6714 9.3000 6.0246 H 1 SOMK 0.0000 + 19 H4 1.8147 9.2519 4.4946 H 1 SOMK 0.0000 + 20 H5 3.3063 8.3236 4.6976 H 1 SOMK 0.0000 + 21 H6 0.4531 5.8234 4.6291 H 1 SOMK 0.0000 + 22 H7 1.9989 6.2461 3.8745 H 1 SOMK 0.0000 + 23 H8 0.5966 7.3123 3.7105 H 1 SOMK 0.0000 +@BOND + 1 1 10 1 + 2 1 8 1 + 3 1 6 2 + 4 2 11 1 + 5 3 11 1 + 6 4 12 am + 7 4 10 1 + 8 4 9 1 + 9 5 13 3 + 10 7 12 2 + 11 8 15 1 + 12 8 14 1 + 13 8 9 1 + 14 9 16 1 + 15 9 13 1 + 16 10 17 1 + 17 10 11 1 + 18 11 12 1 + 19 14 20 1 + 20 14 19 1 + 21 14 18 1 + 22 15 23 1 + 23 15 22 1 + 24 15 21 1 +@SUBSTRUCTURE + 1 SOMK 1 +@COMMENT +COMMENT (2S(2ALPHA,4ALPHA(R*),5ALPHA))-6,6-DIBROMO-2,2-DIMETHYL-7-O +@MOLECULE +SONZIE + 36 38 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.8112 5.3942 3.7332 S.3 1 UNCH -0.0800 + 2 N1 4.2114 4.5843 5.7409 N.2 1 UNCH -0.5653 + 3 N2 2.7797 6.3617 6.2325 N.3 1 UNCH -0.8840 + 4 N3 6.6840 0.8712 3.4858 N.3 1 UNCH -0.8100 + 5 C1 3.3101 5.4665 5.3815 C.2 1 UNCH 0.4621 + 6 C2 4.5460 3.8081 4.6540 C.2 1 UNCH 0.1812 + 7 C3 3.8983 4.1098 3.4794 C.2 1 UNCH -0.1400 + 8 C4 4.0953 3.4270 2.1771 C.3 1 UNCH 0.1800 + 9 C5 5.3873 2.5950 2.2222 C.3 1 UNCH 0.0000 + 10 C6 5.5001 1.7849 3.5485 C.3 1 UNCH 0.4082 + 11 C7 5.5276 2.7697 4.7367 C.2 1 UNCH -0.0922 + 12 C8 6.4240 2.6767 5.7336 C.2 1 UNCH -0.2882 + 13 C9 7.4338 1.5790 5.7688 C.3 1 UNCH 0.1382 + 14 C10 7.0540 0.4164 4.8443 C.3 1 UNCH 0.2700 + 15 C11 6.4156 -0.3016 2.6251 C.3 1 UNCH 0.2700 + 16 C12 7.7082 -0.9908 2.1667 C.3 1 UNCH 0.0000 + 17 C13 7.4136 -2.1272 1.1975 C.3 1 UNCH 0.0000 + 18 H2 4.5954 1.1692 3.6699 H 1 UNCH 0.0000 + 19 H3 6.4395 3.4118 6.5337 H 1 UNCH 0.1500 + 20 H4 1.8555 6.7115 6.0139 H 1 UNCH 0.4000 + 21 H5 2.9096 6.1354 7.2122 H 1 UNCH 0.4000 + 22 H6 4.1526 4.1479 1.3539 H 1 UNCH 0.0000 + 23 H7 3.2422 2.7658 1.9823 H 1 UNCH 0.0000 + 24 H8 6.2551 3.2639 2.1307 H 1 UNCH 0.0000 + 25 H9 5.3988 1.9537 1.3359 H 1 UNCH 0.0000 + 26 H10 7.5226 1.2016 6.7940 H 1 UNCH 0.0000 + 27 H11 8.4111 1.9870 5.4850 H 1 UNCH 0.0000 + 28 H12 6.2268 -0.1509 5.2937 H 1 UNCH 0.0000 + 29 H13 7.9175 -0.2561 4.8087 H 1 UNCH 0.0000 + 30 H14 5.8805 -0.0035 1.7184 H 1 UNCH 0.0000 + 31 H15 5.7613 -1.0200 3.1367 H 1 UNCH 0.0000 + 32 H16 8.2603 -1.4016 3.0180 H 1 UNCH 0.0000 + 33 H17 8.3633 -0.2627 1.6734 H 1 UNCH 0.0000 + 34 H18 8.3453 -2.6077 0.8829 H 1 UNCH 0.0000 + 35 H19 6.9036 -1.7580 0.3020 H 1 UNCH 0.0000 + 36 H20 6.7802 -2.8872 1.6661 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 7 1 + 3 2 5 2 + 4 2 6 1 + 5 3 5 am + 6 3 20 1 + 7 3 21 1 + 8 4 10 1 + 9 4 14 1 + 10 4 15 1 + 11 6 7 2 + 12 6 11 1 + 13 7 8 1 + 14 8 9 1 + 15 8 22 1 + 16 8 23 1 + 17 9 10 1 + 18 9 24 1 + 19 9 25 1 + 20 10 11 1 + 21 10 18 1 + 22 11 12 2 + 23 12 13 1 + 24 12 19 1 + 25 13 14 1 + 26 13 26 1 + 27 13 27 1 + 28 14 28 1 + 29 14 29 1 + 30 15 16 1 + 31 15 30 1 + 32 15 31 1 + 33 16 17 1 + 34 16 32 1 + 35 16 33 1 + 36 17 34 1 + 37 17 35 1 + 38 17 36 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (+-)-4,5,5A,6,7,8-HEXAHYDRO-6-N-PROPYLTHIAZOLO(4,5-F)QUINOL +@MOLECULE +SOPZEC + 17 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.4379 5.5868 10.4263 S.3 1 UNCH -0.1400 + 2 S2 3.3550 7.1249 9.4129 S.3 1 UNCH -0.1400 + 3 O1 5.2136 7.9325 11.6936 O.2 1 UNCH -0.5700 + 4 N1 -0.6638 4.6087 7.2245 N.1 1 UNCH -0.5571 + 5 N2 2.4746 7.1328 5.5369 N.1 1 UNCH -0.5571 + 6 C1 2.8423 6.4899 10.9473 C.2 1 UNCH 0.1090 + 7 C2 1.9645 6.2158 8.8863 C.2 1 UNCH 0.1090 + 8 C3 1.4458 6.0478 7.6503 C.2 1 UNCH 0.1610 + 9 C4 0.2822 5.2546 7.4108 C.1 1 UNCH 0.4921 + 10 C5 2.0168 6.6481 6.4867 C.1 1 UNCH 0.4921 + 11 C6 3.2997 6.5976 12.2008 C.2 1 UNCH -0.1046 + 12 C7 4.5079 7.3903 12.5375 C.2 1 UNCH 0.4946 + 13 C8 4.8644 7.4717 14.0000 C.3 1 UNCH 0.0610 + 14 H1 2.7883 6.0970 13.0136 H 1 UNCH 0.1500 + 15 H2 3.9821 7.3279 14.6298 H 1 UNCH 0.0000 + 16 H3 5.6098 6.7077 14.2344 H 1 UNCH 0.0000 + 17 H4 5.2695 8.4644 14.2166 H 1 UNCH 0.0000 +@BOND + 1 1 6 1 + 2 1 7 1 + 3 2 6 1 + 4 2 7 1 + 5 3 12 2 + 6 4 9 3 + 7 5 10 3 + 8 6 11 2 + 9 7 8 2 + 10 8 9 1 + 11 8 10 1 + 12 11 12 1 + 13 11 14 1 + 14 12 13 1 + 15 13 15 1 + 16 13 16 1 + 17 13 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-ACETONYLIDENE-4-DICYANOMETHYLENE-1,3-DITHIETANE +@MOLECULE +SORBIK + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -1.8322 0.2952 -1.1619 CL 1 SORB -0.1240 + 2 CL2 2.6654 -2.4634 -1.7076 CL 1 SORB -0.1230 + 3 O1 -6.9038 -4.7808 -0.5186 O.3 1 SORB -0.5200 + 4 O2 -5.6888 -6.5252 0.0260 O.2 1 SORB -0.5200 + 5 N1 -5.8170 -5.3464 -0.3330 N.2 1 SORB 0.9070 + 6 N2 -1.0376 -2.3320 -1.1762 N.3 1 SORB 0.5926 + 7 N3 0.1354 -3.0270 -1.2282 N.2 1 SORB -0.7068 + 8 N4 0.5361 -0.8129 -1.5890 N.2 1 SORB -0.5653 + 9 C1 -4.5950 -4.5628 -0.5537 C.2 1 SORB 0.1330 + 10 C2 -4.6873 -3.2250 -0.9542 C.2 1 SORB -0.1500 + 11 C3 -3.5222 -2.4727 -1.1668 C.2 1 SORB -0.1500 + 12 C4 -2.2591 -3.0470 -0.9728 C.2 1 SORB -0.0230 + 13 C5 -2.1856 -4.4017 -0.5863 C.2 1 SORB -0.1500 + 14 C6 -3.3441 -5.1570 -0.3719 C.2 1 SORB -0.1500 + 15 C7 -0.7400 -0.9937 -1.3571 C.2 1 SORB 0.3105 + 16 C8 1.0283 -2.0764 -1.5049 C.2 1 SORB 0.6390 + 17 H1 -5.6558 -2.7529 -1.1153 H 1 SORB 0.1500 + 18 H2 -3.6654 -1.4575 -1.5186 H 1 SORB 0.1500 + 19 H3 -1.2234 -4.8929 -0.4350 H 1 SORB 0.1500 + 20 H4 -3.2486 -6.1979 -0.0674 H 1 SORB 0.1500 +@BOND + 1 1 15 1 + 2 2 16 1 + 3 3 5 1 + 4 4 5 2 + 5 5 9 1 + 6 6 7 1 + 7 6 12 1 + 8 6 15 am + 9 7 16 2 + 10 8 15 2 + 11 8 16 am + 12 9 10 2 + 13 9 14 1 + 14 10 11 1 + 15 10 17 1 + 16 11 12 2 + 17 11 18 1 + 18 12 13 1 + 19 13 14 2 + 20 13 19 1 + 21 14 20 1 +@SUBSTRUCTURE + 1 SORB 1 +@COMMENT +COMMENT 3,5-DICHLORO-1-(4-NITROPHENYL)-1,2,4-TRIAZOLE (ABSOLUTE CON +@MOLECULE +SURDOX02 + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.9022 2.5288 1.4835 S 1 SURD 1.2770 + 2 C1 6.5479 2.5279 2.1508 C.2 1 SURD 0.1430 + 3 N1 7.1781 3.6960 2.3858 N.3 1 SURD -0.8000 + 4 O1 4.3537 1.2552 1.9185 O.2 1 SURD -0.6500 + 5 H1 7.9904 3.7319 2.9887 H 1 SURD 0.3700 + 6 H2 6.6186 4.5496 2.3672 H 1 SURD 0.3700 + 7 O1B 4.3401 3.7831 1.9554 O.2 1 SURD -0.6500 + 8 N1B 7.1907 1.3603 2.3517 N.3 1 SURD -0.8000 + 9 H1B 8.0034 1.3156 2.9534 H 1 SURD 0.3700 + 10 H2B 6.6404 0.5016 2.3081 H 1 SURD 0.3700 +@BOND + 1 1 7 2 + 2 1 4 2 + 3 1 2 2 + 4 2 8 1 + 5 2 3 1 + 6 3 6 1 + 7 3 5 1 + 8 8 10 1 + 9 8 9 1 +@SUBSTRUCTURE + 1 SURD 1 +@COMMENT +COMMENT THIOUREA S,S,-DIOXIDE (AT 110 DEG.K, FULL DATA REFINEMENT) +@MOLECULE +TACGIN + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.2040 2.5856 1.5688 N.3 1 UNCH 0.3140 + 2 N2 3.7527 1.3960 1.2290 N.2 1 UNCH -0.7068 + 3 C1 4.9968 1.7141 0.8513 C.2 1 UNCH 0.1388 + 4 C2 5.2401 3.0959 0.9351 C.2 1 UNCH 0.0790 + 5 C3 4.0591 3.6400 1.3973 C.2 1 UNCH -0.3016 + 6 N3 6.4457 3.7914 0.6116 N.2 1 UNCH 0.9610 + 7 O1 6.4402 5.0213 0.7438 O.3 1 UNCH -0.5200 + 8 O2 7.3968 3.1035 0.2214 O.2 1 UNCH -0.5200 + 9 N4 1.7521 2.7163 3.4701 N.3 1 UNCH 0.3140 + 10 N5 1.5532 3.9097 4.0768 N.2 1 UNCH -0.7068 + 11 C4 1.5218 3.6045 5.3797 C.2 1 UNCH 0.1388 + 12 C5 1.6857 2.2271 5.6065 C.2 1 UNCH 0.0790 + 13 C6 1.8268 1.6719 4.3510 C.2 1 UNCH -0.3016 + 14 N6 1.7015 1.5448 6.8618 N.2 1 UNCH 0.9610 + 15 O3 1.5671 2.2414 7.8750 O.3 1 UNCH -0.5200 + 16 O4 1.8442 0.3163 6.8343 O.2 1 UNCH -0.5200 + 17 C7 1.8273 2.6440 2.0230 C.3 1 UNCH 0.5112 + 18 H1 5.6692 0.9272 0.5300 H 1 UNCH 0.1500 + 19 H2 3.7699 4.6589 1.6230 H 1 UNCH 0.1500 + 20 H3 1.3789 4.3972 6.1049 H 1 UNCH 0.1500 + 21 H4 1.9819 0.6515 4.0230 H 1 UNCH 0.1500 + 22 H5 1.3524 3.5305 1.5909 H 1 UNCH 0.0000 + 23 H6 1.2972 1.7466 1.6883 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 17 1 + 4 2 3 2 + 5 3 4 1 + 6 3 18 1 + 7 4 5 2 + 8 4 6 1 + 9 5 19 1 + 10 6 7 1 + 11 6 8 2 + 12 9 10 1 + 13 9 13 1 + 14 9 17 1 + 15 10 11 2 + 16 11 12 1 + 17 11 20 1 + 18 12 13 2 + 19 12 14 1 + 20 13 21 1 + 21 14 15 1 + 22 14 16 2 + 23 17 22 1 + 24 17 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(4-NITROPYRAZOL-1-YL)METHANE +@MOLECULE +TACLEO + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.1335 0.7036 10.3644 C.3 1 UNCH 0.4010 + 2 C2 -2.9502 1.6632 7.6042 C.2 1 UNCH -0.1500 + 3 C3 -1.1001 0.7316 11.9101 C.3 1 UNCH 0.0000 + 4 C4 -1.9872 -0.5161 11.8657 C.3 1 UNCH 0.4720 + 5 C5 0.0503 -0.0367 9.7407 C.2 1 UNCH 0.8710 + 6 C6 -1.4545 2.0245 9.6511 C.3 1 UNCH 0.4235 + 7 C7 -1.6794 1.8652 8.1595 C.2 1 UNCH -0.1435 + 8 C8 -0.5890 1.9179 7.2819 C.2 1 UNCH -0.1500 + 9 C9 -0.8095 1.7687 5.9212 C.2 1 UNCH 0.1600 + 10 C10 -3.0716 1.5379 6.2275 C.2 1 UNCH 0.1600 + 11 N1 -2.3471 -0.2186 10.4856 N.3 1 UNCH -0.8440 + 12 N2 -2.0305 1.5918 5.3747 N.2 1 UNCH -0.6200 + 13 O1 1.1707 0.5414 9.7210 O.2 1 UNCH -0.9000 + 14 O2 -0.2430 -1.2065 9.3365 O.3 1 UNCH -0.9000 + 15 O3 -2.6691 2.5585 10.2254 O.3 1 UNCH -0.6800 + 16 H1 -2.7576 3.4587 9.8550 H 1 UNCH 0.4000 + 17 H2 -3.8441 1.6160 8.2161 H 1 UNCH 0.1500 + 18 H3 -3.2097 0.2973 10.3063 H 1 UNCH 0.4500 + 19 H4 -2.1492 -0.9936 9.8145 H 1 UNCH 0.4500 + 20 H5 -0.1223 0.5861 12.3788 H 1 UNCH 0.0000 + 21 H6 -1.5806 1.5993 12.3752 H 1 UNCH 0.0000 + 22 H7 -1.4525 -1.4665 11.9655 H 1 UNCH 0.0000 + 23 H8 -2.8399 -0.5071 12.5493 H 1 UNCH 0.0000 + 24 H11 -0.6646 2.7624 9.8372 H 1 UNCH 0.0000 + 25 H12 0.4292 2.0513 7.6423 H 1 UNCH 0.1500 + 26 H13 0.0185 1.7866 5.2177 H 1 UNCH 0.1500 + 27 H14 -4.0410 1.3875 5.7607 H 1 UNCH 0.1500 +@BOND + 1 1 3 1 + 2 1 5 1 + 3 1 6 1 + 4 1 11 1 + 5 2 7 2 + 6 2 10 1 + 7 2 17 1 + 8 3 4 1 + 9 3 20 1 + 10 3 21 1 + 11 4 11 1 + 12 4 22 1 + 13 4 23 1 + 14 5 13 2 + 15 5 14 1 + 16 6 7 1 + 17 6 15 1 + 18 6 24 1 + 19 7 8 1 + 20 8 9 2 + 21 8 25 1 + 22 9 12 1 + 23 9 26 1 + 24 10 12 2 + 25 10 27 1 + 26 11 18 1 + 27 11 19 1 + 28 15 16 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (R)-2-((R)-HYDROXY(4-PYRIDYL)METHYL)-2-AZETIDINECARBOXYLIC +@MOLECULE +TAFKIU + 17 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.3584 4.8162 11.5824 C.2 1 TAFK 0.3718 + 2 C2 -0.5798 3.9611 12.2407 C.2 1 TAFK 0.3718 + 3 C3 1.7183 4.8166 13.5795 C.3 1 TAFK 0.3691 + 4 C4 0.4308 4.5291 14.3606 C.3 1 TAFK 0.3691 + 5 N1 1.4246 5.3765 12.2471 N.3 1 TAFK -0.2871 + 6 N2 -0.4898 3.6780 13.5840 N.3 1 TAFK -0.2871 + 7 N3 -1.4761 3.5341 11.3458 N.2 1 TAFK -0.4097 + 8 N4 0.0013 4.9426 10.3006 N.2 1 TAFK -0.4097 + 9 N5 2.2689 6.1441 11.5206 N.2 1 TAFK -0.0032 + 10 N6 -1.4487 2.8829 14.1115 N.2 1 TAFK -0.0032 + 11 O1 -1.1240 4.1456 10.1518 O.3 1 TAFK 0.2418 + 12 O2 3.2730 6.4983 12.1470 O.2 1 TAFK -0.1618 + 13 O3 -1.3840 2.7851 15.3413 O.2 1 TAFK -0.1618 + 14 H1 2.2986 3.8926 13.4577 H 1 TAFK 0.0000 + 15 H2 2.3273 5.5115 14.1703 H 1 TAFK 0.0000 + 16 H3 -0.0772 5.4704 14.6078 H 1 TAFK 0.0000 + 17 H4 0.7064 4.0464 15.3060 H 1 TAFK 0.0000 +@BOND + 1 1 8 2 + 2 1 5 am + 3 1 2 1 + 4 2 7 2 + 5 2 6 am + 6 3 15 1 + 7 3 14 1 + 8 3 5 1 + 9 3 4 1 + 10 4 17 1 + 11 4 16 1 + 12 4 6 1 + 13 5 9 1 + 14 6 10 1 + 15 7 11 1 + 16 8 11 1 + 17 9 12 2 + 18 10 13 2 +@SUBSTRUCTURE + 1 TAFK 1 +@COMMENT +COMMENT 4,7-DINITROSO-4,5,6,7-TETRAHYDRO-1,2,5-OXADIAZOLO(3,4-B) PY +@MOLECULE +TAFXIH + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.8591 8.3254 -0.9620 C.3 1 TAFX 0.4600 + 2 C2 1.4649 9.0282 -0.8131 C.3 1 TAFX 0.1435 + 3 C3 3.2876 8.3218 -2.4604 C.3 1 TAFX 0.2300 + 4 C4 2.1169 8.8117 -3.3608 C.3 1 TAFX 0.1435 + 5 C5 0.3895 8.1974 -1.5835 C.3 1 TAFX 0.2300 + 6 C6 0.8318 7.9970 -3.0525 C.3 1 TAFX 0.2300 + 7 C7 1.8739 10.2438 -2.9136 C.2 1 TAFX -0.1435 + 8 C8 1.9716 11.3688 -3.7207 C.2 1 TAFX -0.1500 + 9 C9 1.5471 10.3648 -1.5489 C.2 1 TAFX -0.1435 + 10 C10 1.3167 11.6124 -0.9838 C.2 1 TAFX -0.1500 + 11 C11 1.7393 12.6223 -3.1532 C.2 1 TAFX -0.1500 + 12 C12 1.4156 12.7432 -1.7950 C.2 1 TAFX -0.1500 + 13 BR1 4.2112 9.3715 0.0797 BR 1 TAFX -0.2300 + 14 BR2 -1.3850 8.9713 -1.2652 BR 1 TAFX -0.2300 + 15 BR3 -0.4980 8.3188 -4.4446 BR 1 TAFX -0.2300 + 16 BR4 2.7629 6.5572 -0.0789 BR 1 TAFX -0.2300 + 17 BR5 4.0182 6.6606 -3.1855 BR 1 TAFX -0.2300 + 18 H1 1.1855 9.1744 0.2375 H 1 TAFX 0.0000 + 19 H2 4.1310 9.0078 -2.6176 H 1 TAFX 0.0000 + 20 H3 2.3868 8.7751 -4.4229 H 1 TAFX 0.0000 + 21 H4 0.2629 7.2119 -1.1245 H 1 TAFX 0.0000 + 22 H5 1.0475 6.9319 -3.1970 H 1 TAFX 0.0000 + 23 H6 2.2195 11.2871 -4.7753 H 1 TAFX 0.1500 + 24 H7 1.0574 11.7172 0.0660 H 1 TAFX 0.1500 + 25 H8 1.8068 13.5155 -3.7703 H 1 TAFX 0.1500 + 26 H9 1.2346 13.7288 -1.3717 H 1 TAFX 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 13 1 + 4 1 16 1 + 5 2 5 1 + 6 2 9 1 + 7 2 18 1 + 8 3 4 1 + 9 3 17 1 + 10 3 19 1 + 11 4 6 1 + 12 4 7 1 + 13 4 20 1 + 14 5 6 1 + 15 5 14 1 + 16 5 21 1 + 17 6 15 1 + 18 6 22 1 + 19 7 8 2 + 20 7 9 1 + 21 8 11 1 + 22 8 23 1 + 23 9 10 2 + 24 10 12 1 + 25 10 24 1 + 26 11 12 2 + 27 11 25 1 + 28 12 26 1 +@SUBSTRUCTURE + 1 TAFX 1 +@COMMENT +COMMENT EXO,ENDO,ENDO-9,9,10,11,12-PENTABROMO-TRICYCLO (6.2.2.0-2,7 +@MOLECULE +TAFZIJ + 15 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 5.6228 -0.0544 12.6781 CL 1 TAFZ -0.0680 + 2 S1 5.2646 1.7560 11.8255 S.3 1 TAFZ -0.0335 + 3 O1 6.5402 1.6438 8.8105 O.3 1 TAFZ -0.5200 + 4 O2 6.3646 -0.5531 8.7817 O.2 1 TAFZ -0.5200 + 5 N1 5.9135 0.5865 8.9572 N.2 1 TAFZ 0.9070 + 6 C1 4.1304 1.2128 10.5572 C.2 1 TAFZ 0.1015 + 7 C2 4.5149 0.6890 9.3160 C.2 1 TAFZ 0.1330 + 8 C3 3.5776 0.2465 8.3705 C.2 1 TAFZ -0.1500 + 9 C4 2.2195 0.3416 8.6642 C.2 1 TAFZ -0.1500 + 10 C5 1.8102 0.8714 9.8878 C.2 1 TAFZ -0.1500 + 11 C6 2.7561 1.3026 10.8259 C.2 1 TAFZ -0.1500 + 12 H1 3.8982 -0.1659 7.4159 H 1 TAFZ 0.1500 + 13 H2 1.4789 0.0041 7.9421 H 1 TAFZ 0.1500 + 14 H3 0.7489 0.9460 10.1178 H 1 TAFZ 0.1500 + 15 H4 2.4041 1.7032 11.7756 H 1 TAFZ 0.1500 +@BOND + 1 1 2 1 + 2 2 6 1 + 3 3 5 1 + 4 4 5 2 + 5 5 7 1 + 6 6 7 1 + 7 6 11 2 + 8 7 8 2 + 9 8 9 1 + 10 8 12 1 + 11 9 10 2 + 12 9 13 1 + 13 10 11 1 + 14 10 14 1 + 15 11 15 1 +@SUBSTRUCTURE + 1 TAFZ 1 +@COMMENT +COMMENT 2-NITROBENZENESULFENYL CHLORIDE +@MOLECULE +TAGVIG + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.9577 0.2901 7.1962 N.3 1 CHGB -0.5390 + 2 C1 -1.2845 1.5891 6.9238 C.2 1 CHGB 0.6900 + 3 N2 -1.5767 2.3641 8.0096 N.3 1 CHGB -0.4900 + 4 C2 -1.7143 1.9088 9.3004 C.2 1 CHGB 0.6156 + 5 C3 -1.2802 0.5226 9.5192 C.2 1 CHGB -0.2356 + 6 C4 -0.9377 -0.2245 8.4637 C.2 1 CHGB -0.0410 + 7 C5 -1.2051 -0.0953 10.8965 C.2 1 CHGB 1.0500 + 8 O1 -1.3219 2.0240 5.7753 O.2 1 CHGB -0.5700 + 9 O2 -2.2198 2.6305 10.1530 O.2 1 CHGB -0.5700 + 10 O3 -1.8467 -1.1800 11.0306 O.2 1 CHGB -0.9000 + 11 O4 -0.4351 0.4798 11.7150 O.3 1 CHGB -0.9000 + 12 H1 -0.7228 -0.2963 6.4071 H 1 CHGB 0.3700 + 13 H2 -1.8952 3.3012 7.8363 H 1 CHGB 0.3700 + 14 H3 -0.6342 -1.2623 8.5726 H 1 CHGB 0.1500 +@BOND + 1 1 2 am + 2 1 6 1 + 3 1 12 1 + 4 2 3 am + 5 2 8 2 + 6 3 4 am + 7 3 13 1 + 8 4 5 1 + 9 4 9 2 + 10 5 6 2 + 11 5 7 1 + 12 6 14 1 + 13 7 10 2 + 14 7 11 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT AMMONIUM (1,2,3,4-TETRAHYDRO)-2,4-DIOXO-5-PYRIMIDINECARBOXY +@MOLECULE +TAHMOE + 18 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.2125 5.3795 2.7638 C.2 1 UNCH 0.8410 + 2 C2 0.2049 2.5035 3.3057 C.3 1 UNCH 0.4460 + 3 C3 0.6254 2.1463 4.6789 C.1 1 UNCH 0.3571 + 4 C4 0.7939 1.5309 2.2800 C.3 1 UNCH 0.0000 + 5 C5 -1.3249 2.4862 3.2174 C.3 1 UNCH 0.0000 + 6 N1 1.8731 4.0795 3.0625 N.2 1 UNCH -0.2110 + 7 N2 0.6363 3.8890 3.0088 N.2 1 UNCH -0.2460 + 8 N3 0.9569 1.8510 5.7527 N.1 1 UNCH -0.5571 + 9 N4 3.4627 5.7056 3.1920 N.3 1 UNCH -0.8000 + 10 O1 1.5263 6.2139 2.1820 O.2 1 UNCH -0.5700 + 11 H1 3.9516 5.0833 3.8169 H 1 UNCH 0.3700 + 12 H2 3.7341 6.6756 3.1302 H 1 UNCH 0.3700 + 13 H3 0.4303 0.5100 2.4457 H 1 UNCH 0.0000 + 14 H4 1.8885 1.4963 2.3344 H 1 UNCH 0.0000 + 15 H5 0.5261 1.8247 1.2586 H 1 UNCH 0.0000 + 16 H6 -1.7287 1.4915 3.4395 H 1 UNCH 0.0000 + 17 H7 -1.6662 2.7750 2.2166 H 1 UNCH 0.0000 + 18 H8 -1.7728 3.1906 3.9291 H 1 UNCH 0.0000 +@BOND + 1 1 6 am + 2 1 9 am + 3 1 10 2 + 4 2 3 1 + 5 2 4 1 + 6 2 5 1 + 7 2 7 1 + 8 3 8 3 + 9 4 13 1 + 10 4 14 1 + 11 4 15 1 + 12 5 16 1 + 13 5 17 1 + 14 5 18 1 + 15 6 7 2 + 16 9 11 1 + 17 9 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1-CYANO-1-METHYLETHYLAZO)FORMAMIDE +@MOLECULE +TAJPUP + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.1134 -0.2865 3.6607 O.3 1 TAJP 0.1625 + 2 O2 -3.6698 -4.2828 0.3849 O.3 1 TAJP -0.5200 + 3 O3 -1.6540 -4.8514 -0.2780 O.2 1 TAJP -0.5200 + 4 N1 1.2787 -0.2589 3.5766 N.2 1 TAJP 0.0330 + 5 N2 0.1160 -2.0348 2.0883 N.2 1 TAJP -0.6200 + 6 N3 5.3901 0.0718 3.5497 N.3 1 TAJP -0.9000 + 7 N4 -2.4384 -4.1676 0.3912 N.2 1 TAJP 0.9070 + 8 C1 1.8467 0.5783 2.6952 C.2 1 TAJP 0.2110 + 9 C2 3.2335 0.6731 2.6441 C.2 1 TAJP -0.1500 + 10 C3 4.0130 -0.1165 3.4898 C.2 1 TAJP 0.1000 + 11 C4 3.3733 -0.9191 4.4347 C.2 1 TAJP -0.1500 + 12 C5 1.9841 -0.9870 4.4556 C.2 1 TAJP 0.2110 + 13 C6 -0.6938 -1.2552 2.8446 C.2 1 TAJP 0.3925 + 14 C7 -2.0784 -1.3603 2.8593 C.2 1 TAJP -0.1500 + 15 C8 -2.6771 -2.3260 2.0473 C.2 1 TAJP -0.1500 + 16 C9 -1.8650 -3.1444 1.2562 C.2 1 TAJP 0.1330 + 17 C10 -0.4889 -2.9697 1.3042 C.2 1 TAJP 0.1600 + 18 H1 1.1906 1.1587 2.0573 H 1 TAJP 0.1500 + 19 H2 3.7001 1.3673 1.9492 H 1 TAJP 0.1500 + 20 H3 3.9507 -1.4876 5.1599 H 1 TAJP 0.1500 + 21 H4 1.4328 -1.5994 5.1592 H 1 TAJP 0.1500 + 22 H5 -2.6908 -0.7139 3.4818 H 1 TAJP 0.1500 + 23 H6 -3.7617 -2.4295 2.0399 H 1 TAJP 0.1500 + 24 H7 0.1939 -3.5766 0.7112 H 1 TAJP 0.1500 + 25 H8 5.9345 -0.6823 3.9630 H 1 TAJP 0.4000 + 26 H9 5.8366 0.4325 2.7093 H 1 TAJP 0.4000 +@BOND + 1 1 13 1 + 2 1 4 1 + 3 2 7 1 + 4 3 7 2 + 5 4 12 2 + 6 4 8 1 + 7 5 17 1 + 8 5 13 2 + 9 6 26 1 + 10 6 25 1 + 11 6 10 1 + 12 7 16 1 + 13 8 18 1 + 14 8 9 2 + 15 9 19 1 + 16 9 10 1 + 17 10 11 2 + 18 11 20 1 + 19 11 12 1 + 20 12 21 1 + 21 13 14 1 + 22 14 22 1 + 23 14 15 2 + 24 15 23 1 + 25 15 16 1 + 26 16 17 2 + 27 17 24 1 +@SUBSTRUCTURE + 1 TAJP 1 +@COMMENT +COMMENT 4-AMINO-1-(5-NITRO-2-PYRIDYLOXY)PYRIDINIUM CHLORIDE +@MOLECULE +TAJSUS + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.0967 -0.8361 5.0834 C.2 1 TAJS 0.9060 + 2 C2 -0.3529 -0.6252 4.5960 C.3 1 TAJS 0.4080 + 3 C3 -2.5134 1.7485 5.9216 C.2 1 TAJS 0.5030 + 4 C4 -1.3475 0.1495 6.7863 C.2 1 TAJS 0.6500 + 5 C5 -3.0807 0.3837 9.0338 C.2 1 TAJS 0.2500 + 6 C6 -3.5441 0.7317 10.4729 C.3 1 TAJS 0.2045 + 7 C7 -2.4292 1.2566 11.3567 C.2 1 TAJS -0.1435 + 8 C8 -2.5350 2.5103 11.9742 C.2 1 TAJS -0.1500 + 9 C9 -1.5118 2.9822 12.7993 C.2 1 TAJS -0.1500 + 10 C10 -0.3754 2.2048 13.0174 C.2 1 TAJS -0.1500 + 11 C11 -0.2621 0.9544 12.4126 C.2 1 TAJS -0.1500 + 12 C12 -1.2853 0.4810 11.5904 C.2 1 TAJS -0.1500 + 13 N1 -1.1969 0.2122 5.4466 N.2 1 TAJS -0.4570 + 14 N2 -1.9361 1.2352 4.8950 N.2 1 TAJS -0.2600 + 15 N3 -2.2340 1.1124 7.0910 N.3 1 TAJS -0.4580 + 16 N4 -2.7065 1.4497 8.3644 N.2 1 TAJS -0.2420 + 17 O1 1.3088 -0.5886 6.3059 O.2 1 TAJS -0.9000 + 18 O2 1.9019 -1.2447 4.1975 O.3 1 TAJS -0.9000 + 19 O3 -3.1522 -0.8223 8.6964 O.3 1 TAJS -0.8610 + 20 H1 -0.8380 -1.6052 4.5251 H 1 TAJS 0.0000 + 21 H2 -0.3270 -0.1867 3.5915 H 1 TAJS 0.0000 + 22 H3 -3.1920 2.5838 5.9529 H 1 TAJS 0.1500 + 23 H4 -0.8523 -0.5303 7.4676 H 1 TAJS 0.1500 + 24 H5 -4.3401 1.4835 10.3847 H 1 TAJS 0.0000 + 25 H6 -3.9941 -0.1414 10.9640 H 1 TAJS 0.0000 + 26 H7 -3.4135 3.1275 11.8067 H 1 TAJS 0.1500 + 27 H8 -1.6002 3.9587 13.2659 H 1 TAJS 0.1500 + 28 H9 0.4248 2.5739 13.6518 H 1 TAJS 0.1500 + 29 H10 0.6245 0.3467 12.5698 H 1 TAJS 0.1500 + 30 H11 -1.1875 -0.4941 11.1147 H 1 TAJS 0.1500 +@BOND + 1 1 18 1 + 2 1 17 2 + 3 1 2 1 + 4 2 21 1 + 5 2 20 1 + 6 2 13 1 + 7 3 22 1 + 8 3 15 am + 9 3 14 2 + 10 4 23 1 + 11 4 15 am + 12 4 13 2 + 13 5 19 1 + 14 5 16 2 + 15 5 6 1 + 16 6 25 1 + 17 6 24 1 + 18 6 7 1 + 19 7 12 1 + 20 7 8 2 + 21 8 26 1 + 22 8 9 1 + 23 9 27 1 + 24 9 10 2 + 25 10 28 1 + 26 10 11 1 + 27 11 29 1 + 28 11 12 2 + 29 12 30 1 + 30 13 14 1 + 31 15 16 1 +@SUBSTRUCTURE + 1 TAJS 1 +@COMMENT +COMMENT SODIUM N-(1-CARBOXYMETHYL-4-(1,2,4-TRIAZOLIO))-PHENYLACETAM +@MOLECULE +TAJVUV + 6 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 5.2402 12.9647 -2.9071 S.3 1 TAJV 0.1807 + 2 S2 3.8509 10.5167 -1.7517 S.3 1 TAJV -0.9000 + 3 N1 4.7893 14.4919 -2.3735 N.2 1 TAJV -0.2207 + 4 N2 3.8279 14.4038 -1.4643 N.2 1 TAJV 0.0000 + 5 N3 3.4205 13.1069 -1.1651 N.2 1 TAJV -0.3381 + 6 C1 4.0860 12.2010 -1.8605 C.2 1 TAJV 0.2781 +@BOND + 1 1 6 1 + 2 1 3 1 + 3 2 6 1 + 4 3 4 2 + 5 4 5 1 + 6 5 6 2 +@SUBSTRUCTURE + 1 TAJV 1 +@COMMENT +COMMENT SODIUM 1,2,3,4-THIATRIAZOLE-5-THIOLATE DIHYDRATE (AT 173 DE +@MOLECULE +TAJWAC + 19 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.3881 4.0712 -0.2896 S.3 1 UNCH 0.1807 + 2 S2 3.7494 1.3798 -0.8523 S.3 1 UNCH -0.1970 + 3 O1 1.5568 1.1826 -2.2275 O.2 1 UNCH -0.5700 + 4 N1 1.6860 4.3186 1.2177 N.2 1 UNCH -0.2207 + 5 N2 1.8267 3.2435 1.9847 N.2 1 UNCH 0.0000 + 6 N3 2.5069 2.1850 1.3894 N.2 1 UNCH -0.3381 + 7 C1 2.8676 2.4843 0.1582 C.2 1 UNCH 0.4341 + 8 C2 2.3250 0.5760 -1.4904 C.2 1 UNCH 0.6248 + 9 C3 2.0978 -0.8605 -1.1548 C.2 1 UNCH 0.0862 + 10 C4 2.7774 -1.5359 -0.1305 C.2 1 UNCH -0.1500 + 11 C5 2.5047 -2.8830 0.1274 C.2 1 UNCH -0.1500 + 12 C6 1.5526 -3.5640 -0.6288 C.2 1 UNCH -0.1500 + 13 C7 0.8656 -2.9012 -1.6428 C.2 1 UNCH -0.1500 + 14 C8 1.1343 -1.5558 -1.9032 C.2 1 UNCH -0.1500 + 15 H1 3.5143 -1.0402 0.4954 H 1 UNCH 0.1500 + 16 H2 3.0330 -3.4004 0.9253 H 1 UNCH 0.1500 + 17 H3 1.3418 -4.6109 -0.4234 H 1 UNCH 0.1500 + 18 H4 0.1181 -3.4294 -2.2300 H 1 UNCH 0.1500 + 19 H5 0.5849 -1.0525 -2.6976 H 1 UNCH 0.1500 +@BOND + 1 1 4 1 + 2 1 7 1 + 3 2 7 1 + 4 2 8 1 + 5 3 8 2 + 6 4 5 2 + 7 5 6 1 + 8 6 7 2 + 9 8 9 1 + 10 9 10 2 + 11 9 14 1 + 12 10 11 1 + 13 10 15 1 + 14 11 12 2 + 15 11 16 1 + 16 12 13 1 + 17 12 17 1 + 18 13 14 2 + 19 13 18 1 + 20 14 19 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-BENZOYLTHIO-1,2,3,4-THIATRIAZOLE (AT 173 DEG.K) +@MOLECULE +TAKHES + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 3.6742 3.9519 6.8242 CL 1 UNCH -0.1400 + 2 CL2 5.0594 6.0173 8.3370 CL 1 UNCH -0.1400 + 3 CL3 4.6962 0.9303 7.9637 CL 1 UNCH -0.2900 + 4 CL4 2.5923 1.6711 9.9360 CL 1 UNCH -0.2900 + 5 C1 4.4743 4.3873 8.3052 C.2 1 UNCH 0.3110 + 6 C2 4.6528 3.5057 9.3038 C.2 1 UNCH -0.1690 + 7 C3 4.3462 1.9929 9.4118 C.3 1 UNCH 0.7180 + 8 C2B 5.1794 3.5057 10.6482 C.2 1 UNCH -0.1690 + 9 C3B 5.4859 1.9929 10.5402 C.3 1 UNCH 0.7180 + 10 C1B 5.3580 4.3873 11.6468 C.2 1 UNCH 0.3110 + 11 CL3B 5.1359 0.9303 11.9883 CL 1 UNCH -0.2900 + 12 CL4B 7.2399 1.6710 10.0160 CL 1 UNCH -0.2900 + 13 CL1B 6.1581 3.9519 13.1278 CL 1 UNCH -0.1400 + 14 CL2B 4.7729 6.0173 11.6149 CL 1 UNCH -0.1400 +@BOND + 1 1 5 1 + 2 2 5 1 + 3 3 7 1 + 4 4 7 1 + 5 5 6 2 + 6 6 7 1 + 7 6 8 1 + 8 7 9 1 + 9 8 9 1 + 10 8 10 2 + 11 9 11 1 + 12 9 12 1 + 13 10 13 1 + 14 10 14 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT OCTACHLORO-1,2-BIS(METHYLENE)CYCLOBUTANE (AT -95 DEG.C) +@MOLECULE +TAMMAV + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.3745 1.9917 0.7382 S.1 1 TAMM 0.8491 + 2 S2 1.5591 4.0318 -2.1963 S.2 1 TAMM -0.3800 + 3 O1 -1.6874 1.3971 0.5119 O.2 1 TAMM -0.6500 + 4 O2 0.3072 1.5995 1.9669 O.2 1 TAMM -0.6500 + 5 N1 0.5503 2.1862 -0.5566 N.3 1 TAMM -0.3201 + 6 C1 -0.7429 3.6769 1.0087 C.2 1 TAMM -0.0090 + 7 C2 -1.5228 4.2361 2.0001 C.2 1 TAMM -0.1500 + 8 C3 -1.6544 5.6239 1.9874 C.2 1 TAMM -0.1500 + 9 C4 -1.0105 6.3914 0.9979 C.2 1 TAMM -0.1500 + 10 C5 -0.2262 5.7798 0.0079 C.2 1 TAMM -0.1500 + 11 C6 -0.0984 4.3983 0.0249 C.2 1 TAMM 0.0862 + 12 C7 0.6564 3.4907 -0.8836 C.2 1 TAMM 0.0738 + 13 H2 -2.0009 3.6088 2.7428 H 1 TAMM 0.1500 + 14 H3 -2.2577 6.1143 2.7461 H 1 TAMM 0.1500 + 15 H4 -1.1218 7.4725 1.0001 H 1 TAMM 0.1500 + 16 H5 0.2659 6.3786 -0.7501 H 1 TAMM 0.1500 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 4 2 + 4 1 3 2 + 5 2 12 2 + 6 5 12 1 + 7 6 11 1 + 8 6 7 2 + 9 7 13 1 + 10 7 8 1 + 11 8 14 1 + 12 8 9 2 + 13 9 15 1 + 14 9 10 1 + 15 10 16 1 + 16 10 11 2 + 17 11 12 1 +@SUBSTRUCTURE + 1 TAMM 1 +@COMMENT +COMMENT POTASSIUM 1,2-BENZISOTHIAZOL-3(2H)-THIONE 1,1-DIOXIDE MONOH +@MOLECULE +TANHAR + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 9.4230 1.4699 16.2076 C.3 1 UNCH 0.3500 + 2 C2 8.4392 1.1418 15.1939 C.2 1 UNCH -0.0684 + 3 C3 8.0980 2.0492 16.0608 C.2 1 UNCH -0.1900 + 4 C4 10.6565 2.1623 15.9785 C.1 1 UNCH 0.4521 + 5 C5 8.1455 0.3460 14.0531 C.2 1 UNCH 0.0284 + 6 C6 9.0687 -0.5929 13.5803 C.2 1 UNCH -0.1500 + 7 C7 8.7750 -1.3695 12.4566 C.2 1 UNCH -0.1500 + 8 C8 7.5577 -1.2129 11.7974 C.2 1 UNCH -0.1500 + 9 C9 6.6322 -0.2809 12.2612 C.2 1 UNCH -0.1500 + 10 C10 6.9248 0.4955 13.3851 C.2 1 UNCH -0.1500 + 11 N1 11.6445 2.7388 15.7780 N.1 1 UNCH -0.5571 + 12 N2 9.6115 0.4960 17.3010 N.2 1 UNCH 0.8750 + 13 O1 10.0645 -0.6158 16.9957 O.3 1 UNCH -0.5200 + 14 O2 9.3118 0.8682 18.4443 O.2 1 UNCH -0.5200 + 15 H1 7.3923 2.7421 16.4435 H 1 UNCH 0.1500 + 16 H2 10.0252 -0.7421 14.0775 H 1 UNCH 0.1500 + 17 H3 9.4971 -2.0990 12.0976 H 1 UNCH 0.1500 + 18 H4 7.3303 -1.8184 10.9235 H 1 UNCH 0.1500 + 19 H5 5.6814 -0.1584 11.7483 H 1 UNCH 0.1500 + 20 H6 6.1871 1.2172 13.7297 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 12 1 + 5 2 3 2 + 6 2 5 1 + 7 3 15 1 + 8 4 11 3 + 9 5 6 2 + 10 5 10 1 + 11 6 7 1 + 12 6 16 1 + 13 7 8 2 + 14 7 17 1 + 15 8 9 1 + 16 8 18 1 + 17 9 10 2 + 18 9 19 1 + 19 10 20 1 + 20 12 13 1 + 21 12 14 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1-NITRO-2-PHENYLCYCLOPROP-2-ENE-CARBONITRILE +@MOLECULE +TAPJUP + 23 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.5839 6.2924 1.0994 C.2 1 TAPJ -0.1500 + 2 C2 -2.2546 5.1046 1.3892 C.2 1 TAPJ -0.1500 + 3 C3 -1.6344 4.0925 2.1549 C.2 1 TAPJ -0.1500 + 4 C4 -0.3308 4.2440 2.6524 C.2 1 TAPJ -0.1500 + 5 C5 0.3411 5.4228 2.3769 C.2 1 TAPJ -0.1435 + 6 C6 1.7505 5.8553 2.7792 C.3 1 TAPJ 0.6045 + 7 C7 1.7657 7.1848 2.1300 C.2 1 TAPJ 0.1520 + 8 C8 2.5649 8.2810 1.9137 C.2 1 TAPJ -0.0840 + 9 O1 3.6874 8.6164 2.2142 O.3 1 TAPJ -0.7760 + 10 O2 1.7490 9.1518 1.1281 O.3 1 TAPJ -0.0191 + 11 N1 0.4819 8.5548 0.8806 N.2 1 TAPJ -0.0819 + 12 N2 0.6096 7.4395 1.4967 N.2 1 TAPJ 0.2410 + 13 C9 -0.3113 6.3947 1.6077 C.2 1 TAPJ 0.3870 + 14 O3 2.6772 4.9467 2.1978 O.3 1 TAPJ -0.6800 + 15 C10 1.9411 5.9048 4.2882 C.3 1 TAPJ 0.0000 + 16 H1 -2.0404 7.0774 0.5093 H 1 TAPJ 0.1500 + 17 H2 -3.2668 4.9469 1.0184 H 1 TAPJ 0.1500 + 18 H3 -2.1789 3.1700 2.3579 H 1 TAPJ 0.1500 + 19 H4 0.1385 3.4488 3.2266 H 1 TAPJ 0.1500 + 20 H5 1.8498 4.9059 4.7304 H 1 TAPJ 0.0000 + 21 H6 1.2119 6.5617 4.7758 H 1 TAPJ 0.0000 + 22 H7 2.9448 6.2658 4.5416 H 1 TAPJ 0.0000 + 23 H8 3.5426 5.4064 2.2073 H 1 TAPJ 0.4000 +@BOND + 1 1 16 1 + 2 1 13 1 + 3 1 2 2 + 4 2 17 1 + 5 2 3 1 + 6 3 18 1 + 7 3 4 2 + 8 4 19 1 + 9 4 5 1 + 10 5 13 2 + 11 5 6 1 + 12 6 15 1 + 13 6 14 1 + 14 6 7 1 + 15 7 12 1 + 16 7 8 2 + 17 8 10 1 + 18 8 9 1 + 19 10 11 1 + 20 11 12 2 + 21 12 13 1 + 22 14 23 1 + 23 15 22 1 + 24 15 21 1 + 25 15 20 1 +@SUBSTRUCTURE + 1 TAPJ 1 +@COMMENT +COMMENT 5-HYDROXY-5-METHYLSYDNO(3,4-A)INDOLE +@MOLECULE +TAPSAE + 19 19 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 11.8917 2.4159 3.9552 N.1 1 TAPS -0.5571 + 2 N2 9.3497 4.9649 6.4463 N.1 1 TAPS -0.5571 + 3 N3 5.2686 -0.3822 4.0194 N.3 1 TAPS -0.9000 + 4 C1 10.8396 2.8873 4.0991 C.1 1 TAPS 0.3571 + 5 C2 9.5054 3.4957 4.2622 C.3 1 TAPS 0.5435 + 6 C3 9.4186 4.3096 5.4894 C.1 1 TAPS 0.3571 + 7 C4 8.3983 2.4499 4.1952 C.2 1 TAPS -0.1435 + 8 C5 8.2978 1.4258 5.1520 C.2 1 TAPS -0.1500 + 9 C6 7.2742 0.4758 5.0738 C.2 1 TAPS -0.1500 + 10 C7 6.3566 0.4957 4.0230 C.2 1 TAPS 0.1000 + 11 C8 6.4178 1.5452 3.1055 C.2 1 TAPS -0.1500 + 12 C9 7.4366 2.5016 3.1739 C.2 1 TAPS -0.1500 + 13 H1 9.3691 4.1849 3.4170 H 1 TAPS 0.0000 + 14 H2 9.0031 1.3571 5.9796 H 1 TAPS 0.1500 + 15 H3 7.2014 -0.2856 5.8469 H 1 TAPS 0.1500 + 16 H4 5.6668 1.6278 2.3235 H 1 TAPS 0.1500 + 17 H5 7.4543 3.2906 2.4242 H 1 TAPS 0.1500 + 18 H6 5.4453 -1.2621 4.4944 H 1 TAPS 0.4000 + 19 H7 4.8463 -0.5168 3.1062 H 1 TAPS 0.4000 +@BOND + 1 1 4 3 + 2 2 6 3 + 3 3 10 1 + 4 3 18 1 + 5 3 19 1 + 6 4 5 1 + 7 5 6 1 + 8 5 7 1 + 9 5 13 1 + 10 7 8 2 + 11 7 12 1 + 12 8 9 1 + 13 8 14 1 + 14 9 10 2 + 15 9 15 1 + 16 10 11 1 + 17 11 12 2 + 18 11 16 1 + 19 12 17 1 +@SUBSTRUCTURE + 1 TAPS 1 +@COMMENT +COMMENT 2-(4-AMINOPHENYL)-1,3-PROPANEDINITRILE +@MOLECULE +TCYMPH02 + 16 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.0001 -0.0001 -0.0334 P 1 TCYM -0.5007 + 2 C1 1.1333 1.1886 0.8273 C.3 1 TCYM 0.3669 + 3 C2 0.7310 2.5725 0.5425 C.1 1 TCYM 0.3571 + 4 N1 0.3773 3.6610 0.3504 N.1 1 TCYM -0.5571 + 5 H1 2.1599 1.0252 0.4842 H 1 TCYM 0.0000 + 6 H2 1.1137 1.0128 1.9081 H 1 TCYM 0.0000 + 7 C1C -1.5961 0.3870 0.8271 C.3 1 TCYM 0.3669 + 8 C1D 0.4628 -1.5759 0.8273 C.3 1 TCYM 0.3669 + 9 C2C -2.5934 -0.6534 0.5423 C.1 1 TCYM 0.3571 + 10 H1C -1.9678 1.3577 0.4839 H 1 TCYM 0.0000 + 11 H2C -1.4341 0.4580 1.9079 H 1 TCYM 0.0000 + 12 C2D 1.8625 -1.9194 0.5426 C.1 1 TCYM 0.3571 + 13 H1D -0.1919 -2.3832 0.4841 H 1 TCYM 0.0000 + 14 H2D 0.3202 -1.4710 1.9081 H 1 TCYM 0.0000 + 15 N1C -3.3591 -1.5039 0.3502 N.1 1 TCYM -0.5571 + 16 N1D 2.9820 -2.1573 0.3507 N.1 1 TCYM -0.5571 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 8 1 + 4 2 3 1 + 5 2 5 1 + 6 2 6 1 + 7 3 4 3 + 8 7 9 1 + 9 7 10 1 + 10 7 11 1 + 11 8 12 1 + 12 8 13 1 + 13 8 14 1 + 14 9 15 3 + 15 12 16 3 +@SUBSTRUCTURE + 1 TCYM 1 +@COMMENT +COMMENT 2',2'',2'''-PHOSPHINETRIYL-TRIACETONITRILE (AT 95 DEG.K, NE +@MOLECULE +TMTCHD01 + 24 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 4.2865 0.8872 1.9739 O.2 1 TMTC -0.5700 + 2 C1 3.6514 0.4423 1.0464 C.2 1 TMTC 0.5700 + 3 C2 3.9143 0.6277 -0.4197 C.3 1 TMTC -0.0950 + 4 C3 3.4491 -0.6125 -1.1856 C.3 1 TMTC -0.0950 + 5 C4 5.0704 1.4423 -0.8947 C.3 1 TMTC 0.0950 + 6 C5 3.8718 -1.2226 -2.4588 C.3 1 TMTC 0.0950 + 7 H1 5.1247 1.4998 -1.9856 H 1 TMTC 0.0000 + 8 H2 6.0099 1.0106 -0.5350 H 1 TMTC 0.0000 + 9 H3 4.9956 2.4646 -0.5103 H 1 TMTC 0.0000 + 10 H4 3.0268 -1.4310 -3.1219 H 1 TMTC 0.0000 + 11 H5 4.3706 -2.1756 -2.2565 H 1 TMTC 0.0000 + 12 H6 4.5819 -0.5904 -2.9997 H 1 TMTC 0.0000 + 13 C1C 2.3907 -0.4423 1.0464 C.2 1 TMTC 0.5700 + 14 C3C 2.5929 0.6125 -1.1856 C.3 1 TMTC -0.0950 + 15 C2C 2.1277 -0.6277 -0.4197 C.3 1 TMTC -0.0950 + 16 O1C 1.7555 -0.8872 1.9739 O.2 1 TMTC -0.5700 + 17 C5C 2.1702 1.2226 -2.4588 C.3 1 TMTC 0.0950 + 18 C4C 0.9716 -1.4423 -0.8947 C.3 1 TMTC 0.0950 + 19 H4C 3.0152 1.4310 -3.1219 H 1 TMTC 0.0000 + 20 H5C 1.6714 2.1756 -2.2565 H 1 TMTC 0.0000 + 21 H6C 1.4601 0.5904 -2.9997 H 1 TMTC 0.0000 + 22 H1C 0.9173 -1.4998 -1.9856 H 1 TMTC 0.0000 + 23 H2C 0.0321 -1.0106 -0.5350 H 1 TMTC 0.0000 + 24 H3C 1.0464 -2.4646 -0.5103 H 1 TMTC 0.0000 +@BOND + 1 1 2 2 + 2 2 3 1 + 3 2 13 1 + 4 3 4 1 + 5 3 5 1 + 6 3 14 1 + 7 4 6 1 + 8 4 14 1 + 9 4 15 1 + 10 5 7 1 + 11 5 8 1 + 12 5 9 1 + 13 6 10 1 + 14 6 11 1 + 15 6 12 1 + 16 13 15 1 + 17 13 16 2 + 18 14 15 1 + 19 14 17 1 + 20 15 18 1 + 21 17 19 1 + 22 17 20 1 + 23 17 21 1 + 24 18 22 1 + 25 18 23 1 + 26 18 24 1 +@SUBSTRUCTURE + 1 TMTC 1 +@COMMENT +COMMENT 1,2,5,6-TETRAMETHYLTRICYCLO(3.1.0.0-2,6-)HEXANE-3,4-DIONE ( +@MOLECULE +VABLIT + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.1157 1.5167 9.0697 N.2 1 VABL -0.6200 + 2 C1 3.0528 2.2422 8.6590 C.2 1 VABL 0.1600 + 3 C2 1.9728 2.5384 9.4604 C.2 1 VABL -0.1500 + 4 C3 1.9988 2.0615 10.7609 C.2 1 VABL -0.1500 + 5 C4 3.1082 1.3063 11.2134 C.2 1 VABL 0.0000 + 6 C5 4.1494 1.0473 10.3192 C.2 1 VABL 0.6200 + 7 N2 5.2083 0.3286 10.6611 N.2 1 VABL -0.6200 + 8 C6 5.2469 -0.1604 11.9006 C.2 1 VABL 0.4700 + 9 N3 4.3244 0.0165 12.8467 N.2 1 VABL -0.6200 + 10 C7 3.2629 0.7719 12.5025 C.2 1 VABL 0.4100 + 11 N4 2.2433 0.9853 13.4833 N.3 1 VABL -0.5110 + 12 N5 2.4850 0.4323 14.7740 N.3 1 VABL -0.6190 + 13 C8 1.4275 -0.5359 15.0532 C.3 1 VABL 0.2700 + 14 H1 3.1001 2.5841 7.6285 H 1 VABL 0.1500 + 15 H2 1.1372 3.1171 9.0836 H 1 VABL 0.1500 + 16 H3 1.1548 2.2627 11.4151 H 1 VABL 0.1500 + 17 H4 6.1132 -0.7581 12.1632 H 1 VABL 0.1500 + 18 H5 2.0404 1.9861 13.5275 H 1 VABL 0.4000 + 19 H6 3.3826 -0.0730 14.7454 H 1 VABL 0.3600 + 20 H7 0.4457 -0.0510 15.0751 H 1 VABL 0.0000 + 21 H8 1.5970 -0.9860 16.0361 H 1 VABL 0.0000 + 22 H9 1.4116 -1.3412 14.3107 H 1 VABL 0.0000 +@BOND + 1 1 6 1 + 2 1 2 2 + 3 2 14 1 + 4 2 3 1 + 5 3 15 1 + 6 3 4 2 + 7 4 16 1 + 8 4 5 1 + 9 5 10 1 + 10 5 6 2 + 11 6 7 1 + 12 7 8 2 + 13 8 17 1 + 14 8 9 am + 15 9 10 2 + 16 10 11 am + 17 11 18 1 + 18 11 12 1 + 19 12 19 1 + 20 12 13 1 + 21 13 22 1 + 22 13 21 1 + 23 13 20 1 +@SUBSTRUCTURE + 1 VABL 1 +@COMMENT +COMMENT 4-(BETA-METHYLHYDRAZINO)PYRIDO(2,3-D)PYRIMIDINE +@MOLECULE +VABROF + 28 29 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.6976 3.5841 6.3311 C.3 1 VABR 0.5600 + 2 C2 2.4418 3.5305 5.0074 C.3 1 VABR 0.2800 + 3 C3 3.5857 2.6016 5.2949 C.3 1 VABR 0.2800 + 4 C4 3.0677 1.7201 6.4282 C.3 1 VABR 0.3410 + 5 C5 4.0050 1.6695 7.6198 C.2 1 VABR 0.4490 + 6 C6 1.5654 4.7659 8.3668 C.3 1 VABR 0.2800 + 7 C7 2.6328 2.0634 3.2810 C.3 1 VABR 0.5600 + 8 C8 3.0465 2.7891 2.0046 C.3 1 VABR 0.0000 + 9 C9 2.0008 0.7155 2.9642 C.3 1 VABR 0.0000 + 10 O1 2.3157 4.5482 7.1792 O.3 1 VABR -0.5600 + 11 O2 1.8244 2.2722 6.9001 O.3 1 VABR -0.5600 + 12 O3 3.7964 1.8602 4.0891 O.3 1 VABR -0.5600 + 13 O4 1.6837 2.8608 3.9932 O.3 1 VABR -0.5600 + 14 O5 5.1874 1.9990 7.6057 O.2 1 VABR -0.5700 + 15 H1 0.6353 3.8120 6.1880 H 1 VABR 0.0000 + 16 H2 2.7579 4.5097 4.6336 H 1 VABR 0.0000 + 17 H3 4.5047 3.1377 5.5490 H 1 VABR 0.0000 + 18 H4 2.8849 0.6870 6.1155 H 1 VABR 0.0000 + 19 H5 3.5634 1.2391 8.5355 H 1 VABR 0.0600 + 20 H6 2.0834 5.5203 8.9651 H 1 VABR 0.0000 + 21 H7 0.5655 5.1400 8.1267 H 1 VABR 0.0000 + 22 H8 1.4938 3.8468 8.9559 H 1 VABR 0.0000 + 23 H9 3.7804 2.2071 1.4373 H 1 VABR 0.0000 + 24 H10 2.1805 2.9965 1.3674 H 1 VABR 0.0000 + 25 H11 3.5131 3.7525 2.2399 H 1 VABR 0.0000 + 26 H12 1.1001 0.8319 2.3524 H 1 VABR 0.0000 + 27 H13 2.7056 0.0563 2.4468 H 1 VABR 0.0000 + 28 H14 1.6995 0.2066 3.8869 H 1 VABR 0.0000 +@BOND + 1 1 2 1 + 2 1 10 1 + 3 1 11 1 + 4 1 15 1 + 5 2 3 1 + 6 2 13 1 + 7 2 16 1 + 8 3 4 1 + 9 3 12 1 + 10 3 17 1 + 11 4 5 1 + 12 4 11 1 + 13 4 18 1 + 14 5 14 2 + 15 5 19 1 + 16 6 10 1 + 17 6 20 1 + 18 6 21 1 + 19 6 22 1 + 20 7 8 1 + 21 7 9 1 + 22 7 12 1 + 23 7 13 1 + 24 8 23 1 + 25 8 24 1 + 26 8 25 1 + 27 9 26 1 + 28 9 27 1 + 29 9 28 1 +@SUBSTRUCTURE + 1 VABR 1 +@COMMENT +COMMENT 2-FORMYL-3,4-(O,O-ISOPROPYLIDENEDIOXY)-5-METHOXY-TETRAHYDRO +@MOLECULE +VACRUM + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.0975 12.3838 2.3854 N.3 1 VACR 0.3140 + 2 N2 0.8841 12.7475 3.6715 N.2 1 VACR -0.7068 + 3 C1 1.2277 14.0449 3.6189 C.2 1 VACR 0.5950 + 4 N3 1.6771 14.5008 2.4060 N.2 1 VACR -0.5653 + 5 C2 1.5955 13.4307 1.6404 C.2 1 VACR 0.2705 + 6 N4 1.1401 14.8982 4.7951 N.2 1 VACR 0.9610 + 7 O1 0.6763 14.4071 5.8375 O.3 1 VACR -0.5200 + 8 O2 1.5377 16.0679 4.6764 O.2 1 VACR -0.5200 + 9 N5 1.9238 13.2494 0.3320 N.3 1 VACR -0.4220 + 10 C3 3.0061 14.1144 -0.1629 C.3 1 VACR -0.0310 + 11 C4 1.5897 14.3855 -0.5423 C.3 1 VACR -0.0310 + 12 C5 0.8512 11.0210 1.9528 C.3 1 VACR 0.2556 + 13 C6 -0.3311 10.3511 2.6468 C.3 1 VACR 0.0610 + 14 C7 -1.6300 11.0659 2.3428 C.2 1 VACR 0.4480 + 15 O3 -1.7757 11.7422 1.3249 O.2 1 VACR -0.5700 + 16 C8 -2.7583 10.8632 3.3183 C.3 1 VACR 0.0610 + 17 H1 3.6482 13.6209 -0.8788 H 1 VACR 0.1000 + 18 H2 3.4880 14.7552 0.5642 H 1 VACR 0.1000 + 19 H3 1.2430 14.0766 -1.5186 H 1 VACR 0.1000 + 20 H4 1.0682 15.2141 -0.0805 H 1 VACR 0.1000 + 21 H6 1.7711 10.4639 2.1633 H 1 VACR 0.0000 + 22 H7 -0.4308 9.3165 2.3015 H 1 VACR 0.0000 + 23 H8 -0.1817 10.3306 3.7319 H 1 VACR 0.0000 + 24 H9 -3.0139 9.8019 3.3664 H 1 VACR 0.0000 + 25 H10 -3.6361 11.4259 2.9888 H 1 VACR 0.0000 + 26 H11 -2.4590 11.2253 4.3049 H 1 VACR 0.0000 + 27 H5 0.6997 11.0275 0.8681 H 1 VACR 0.0000 +@BOND + 1 1 12 1 + 2 1 5 am + 3 1 2 1 + 4 2 3 2 + 5 3 6 am + 6 3 4 am + 7 4 5 2 + 8 5 9 am + 9 6 8 2 + 10 6 7 1 + 11 9 11 1 + 12 9 10 1 + 13 10 18 1 + 14 10 17 1 + 15 10 11 1 + 16 11 20 1 + 17 11 19 1 + 18 12 27 1 + 19 12 21 1 + 20 12 13 1 + 21 13 23 1 + 22 13 22 1 + 23 13 14 1 + 24 14 16 1 + 25 14 15 2 + 26 16 26 1 + 27 16 25 1 + 28 16 24 1 +@SUBSTRUCTURE + 1 VACR 1 +@COMMENT +COMMENT 5-(1-AZIRIDINYL)-3-NITRO-1-(3-OXO-BUTYL)-1,2,4-TRIAZOLE (PO +@MOLECULE +VAJFAN + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.0462 -1.2230 10.4355 C.1 1 VAJF 0.4921 + 2 C2 2.8150 -0.6614 9.1511 C.2 1 VAJF 0.1660 + 3 C3 2.7919 -1.3704 8.0221 C.2 1 VAJF 0.1660 + 4 C4 2.9957 -2.7753 7.9637 C.1 1 VAJF 0.4921 + 5 C5 -0.4719 -0.4310 8.2862 C.2 1 VAJF -0.0090 + 6 C6 -0.6901 -0.3335 9.6636 C.2 1 VAJF -0.1500 + 7 C7 -1.0981 -1.4617 10.3753 C.2 1 VAJF -0.1500 + 8 C8 -1.3033 -2.6813 9.7164 C.2 1 VAJF -0.1435 + 9 C9 -1.1400 -2.7485 8.3263 C.2 1 VAJF -0.1500 + 10 C10 -0.7321 -1.6249 7.6072 C.2 1 VAJF -0.1500 + 11 C11 -1.7708 -3.8855 10.4822 C.3 1 VAJF 0.1435 + 12 N1 1.8239 0.8678 7.4237 N.3 1 VAJF -0.3180 + 13 N2 3.2311 -1.6817 11.4842 N.1 1 VAJF -0.5571 + 14 N3 3.1582 -3.9223 7.9163 N.1 1 VAJF -0.5571 + 15 S1 2.5548 1.0390 8.9621 S.3 1 VAJF -0.0110 + 16 S2 2.5061 -0.4566 6.5805 S.3 1 VAJF -0.0110 + 17 S3 0.1087 0.9957 7.3784 S.1 1 VAJF 1.4470 + 18 O1 -0.3395 0.8288 6.0086 O.2 1 VAJF -0.6500 + 19 O2 -0.2961 2.1649 8.1362 O.2 1 VAJF -0.6500 + 20 H1 -0.5469 0.6081 10.1907 H 1 VAJF 0.1500 + 21 H2 -1.2627 -1.3854 11.4492 H 1 VAJF 0.1500 + 22 H3 -1.3374 -3.6793 7.7965 H 1 VAJF 0.1500 + 23 H4 -0.6218 -1.6931 6.5264 H 1 VAJF 0.1500 + 24 H5 -1.3832 -3.8709 11.5063 H 1 VAJF 0.0000 + 25 H6 -1.4138 -4.8085 10.0133 H 1 VAJF 0.0000 + 26 H7 -2.8644 -3.9053 10.5170 H 1 VAJF 0.0000 +@BOND + 1 1 2 1 + 2 1 13 3 + 3 2 3 2 + 4 2 15 1 + 5 3 4 1 + 6 3 16 1 + 7 4 14 3 + 8 5 6 2 + 9 5 10 1 + 10 5 17 1 + 11 6 7 1 + 12 6 20 1 + 13 7 8 2 + 14 7 21 1 + 15 8 9 1 + 16 8 11 1 + 17 9 10 2 + 18 9 22 1 + 19 10 23 1 + 20 11 24 1 + 21 11 25 1 + 22 11 26 1 + 23 12 15 1 + 24 12 16 1 + 25 12 17 1 + 26 17 18 2 + 27 17 19 2 +@SUBSTRUCTURE + 1 VAJF 1 +@COMMENT +COMMENT 2-(P-TOLYLSULFONYL)-4,5-DICYANO-1,3,2-DITHIAZOLE +@MOLECULE +VALTEH + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S3 -0.4682 -3.1153 2.8072 S.2 1 VALT -0.7500 + 2 S4 -2.6744 -4.1834 1.0019 S.3 1 VALT -0.7500 + 3 C3 -1.2091 -3.4275 1.3307 C.2 1 VALT 0.7950 + 4 O2 -0.4880 -3.0818 0.2449 O.3 1 VALT -0.5750 + 5 C4 -0.7513 -1.7602 -0.2153 C.3 1 VALT 0.2800 + 6 H4 -0.1221 -1.5785 -1.0917 H 1 VALT 0.0000 + 7 H5 -0.4962 -1.0136 0.5436 H 1 VALT 0.0000 + 8 H6 -1.7961 -1.6430 -0.5201 H 1 VALT 0.0000 +@BOND + 1 1 3 2 + 2 2 3 1 + 3 3 4 1 + 4 4 5 1 + 5 5 8 1 + 6 5 7 1 + 7 5 6 1 +@SUBSTRUCTURE + 1 VALT 1 +@COMMENT +COMMENT POTASSIUM O-METHYLDITHIOCARBONATE POTASSIUM METHYLXANTHATE +@MOLECULE +VALWOU + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -3.2041 0.1999 8.6171 S.3 1 VALW -0.4600 + 2 S2 -3.0262 2.5287 6.7298 S.1 1 VALW 0.1123 + 3 O1 -3.2872 3.2134 8.0550 O.2 1 VALW -0.6000 + 4 O2 -1.5541 2.3398 6.4435 O.2 1 VALW -0.6000 + 5 C1 -3.6498 0.7930 6.9989 C.3 1 VALW 0.9977 + 6 F1 -5.0072 0.8218 6.8941 F 1 VALW -0.3400 + 7 F2 -3.2190 -0.0349 6.0148 F 1 VALW -0.3400 + 8 C2 -1.5176 -0.2065 8.2909 C.3 1 VALW 1.4130 + 9 F3 -1.0555 -0.0076 7.0443 F 1 VALW -0.3400 + 10 F4 -1.4197 -1.5634 8.4557 F 1 VALW -0.3400 + 11 N1 -0.5217 0.3612 9.3001 N.3 1 VALW -1.0120 + 12 C3 -0.8475 -0.1028 10.7071 C.3 1 VALW 0.5030 + 13 C4 0.2631 0.3441 11.6625 C.3 1 VALW 0.0000 + 14 C5 -0.4851 1.8901 9.2453 C.3 1 VALW 0.5030 + 15 C6 0.5153 2.3997 10.2936 C.3 1 VALW 0.0000 + 16 C7 0.8513 -0.1557 8.8803 C.3 1 VALW 0.5030 + 17 C8 1.9200 0.4078 9.8214 C.3 1 VALW 0.0000 + 18 C9 1.2739 1.2343 10.9352 C.3 1 VALW 0.0000 + 19 H1 -0.9413 -1.1944 10.7077 H 1 VALW 0.0000 + 20 H2 -1.7996 0.3412 11.0154 H 1 VALW 0.0000 + 21 H3 0.7656 -0.5355 12.0831 H 1 VALW 0.0000 + 22 H4 -0.1774 0.8803 12.5118 H 1 VALW 0.0000 + 23 H5 -1.4770 2.2803 9.4712 H 1 VALW 0.0000 + 24 H6 -0.1454 2.1848 8.2527 H 1 VALW 0.0000 + 25 H7 1.2153 3.0993 9.8208 H 1 VALW 0.0000 + 26 H8 -0.0165 2.9732 11.0629 H 1 VALW 0.0000 + 27 H9 1.0505 0.1556 7.8484 H 1 VALW 0.0000 + 28 H10 0.8360 -1.2507 8.9270 H 1 VALW 0.0000 + 29 H11 2.5068 -0.4158 10.2459 H 1 VALW 0.0000 + 30 H12 2.6256 1.0251 9.2518 H 1 VALW 0.0000 + 31 H13 2.0330 1.6041 11.6322 H 1 VALW 0.0000 +@BOND + 1 1 8 1 + 2 1 5 1 + 3 2 5 1 + 4 2 4 2 + 5 2 3 2 + 6 5 7 1 + 7 5 6 1 + 8 8 11 1 + 9 8 10 1 + 10 8 9 1 + 11 11 16 1 + 12 11 14 1 + 13 11 12 1 + 14 12 20 1 + 15 12 19 1 + 16 12 13 1 + 17 13 22 1 + 18 13 21 1 + 19 13 18 1 + 20 14 24 1 + 21 14 23 1 + 22 14 15 1 + 23 15 26 1 + 24 15 25 1 + 25 15 18 1 + 26 16 28 1 + 27 16 27 1 + 28 16 17 1 + 29 17 30 1 + 30 17 29 1 + 31 17 18 1 + 32 18 31 1 +@SUBSTRUCTURE + 1 VALW 1 +@COMMENT +COMMENT (QUINUCLIDINO-DIFLUOROMETHYLTHIO)-DIFLUOROMETHANESULFINATE +@MOLECULE +VAPZOB10 + 32 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.0579 5.7957 13.0513 N.2 1 UNCH -0.3381 + 2 N2 4.1786 4.6964 13.8693 N.2 1 UNCH -0.3381 + 3 C1 4.8067 3.7500 13.1938 C.2 1 UNCH 0.0065 + 4 N3 5.0998 4.2077 11.9322 N.3 1 UNCH 0.5052 + 5 N4 5.7210 3.5239 10.9256 N.2 1 UNCH -0.6520 + 6 C2 5.8407 4.2347 9.8499 C.2 1 UNCH 0.3756 + 7 C3 5.3748 5.6287 9.6613 C.2 1 UNCH -0.1356 + 8 C4 4.7779 6.2490 10.6924 C.2 1 UNCH 0.1450 + 9 C5 4.6193 5.5010 11.8958 C.2 1 UNCH 0.1415 + 10 N5 4.3251 7.5547 10.6118 N.3 1 UNCH -0.9000 + 11 C6 5.1932 2.4006 13.6739 C.3 1 UNCH 0.4600 + 12 C7 6.3599 2.4522 14.6662 C.3 1 UNCH 0.2800 + 13 C8 5.9547 1.4041 15.6921 C.3 1 UNCH 0.2800 + 14 C9 4.4425 1.5577 15.7429 C.3 1 UNCH 0.2800 + 15 C10 3.9763 2.6892 16.6640 C.3 1 UNCH 0.2800 + 16 O1 7.6151 2.1341 14.0667 O.3 1 UNCH -0.6800 + 17 O2 6.3302 0.1096 15.1792 O.3 1 UNCH -0.6800 + 18 O3 4.0502 1.8493 14.3785 O.3 1 UNCH -0.5600 + 19 O4 2.5557 2.7936 16.6072 O.3 1 UNCH -0.6800 + 20 H1 6.3322 3.7856 8.9703 H 1 UNCH 0.0600 + 21 H2 5.5556 6.1016 8.7058 H 1 UNCH 0.1500 + 22 H3 3.9992 7.8324 9.6912 H 1 UNCH 0.4000 + 23 H4 3.6482 7.7646 11.3485 H 1 UNCH 0.4000 + 24 H5 5.4089 1.7248 12.8391 H 1 UNCH 0.0000 + 25 H6 6.4499 3.4372 15.1384 H 1 UNCH 0.0000 + 26 H7 6.4543 1.5279 16.6566 H 1 UNCH 0.0000 + 27 H8 3.9390 0.6246 16.0185 H 1 UNCH 0.0000 + 28 H9 4.3890 3.6609 16.3802 H 1 UNCH 0.0000 + 29 H10 4.2598 2.4834 17.7006 H 1 UNCH 0.0000 + 30 H11 7.7344 1.1689 14.1903 H 1 UNCH 0.4000 + 31 H12 5.5830 -0.2374 14.6543 H 1 UNCH 0.4000 + 32 H13 2.3449 2.9923 15.6729 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 9 2 + 3 2 3 2 + 4 3 4 am + 5 3 11 1 + 6 4 5 1 + 7 4 9 am + 8 5 6 2 + 9 6 7 1 + 10 6 20 1 + 11 7 8 2 + 12 7 21 1 + 13 8 9 1 + 14 8 10 1 + 15 10 22 1 + 16 10 23 1 + 17 11 12 1 + 18 11 18 1 + 19 11 24 1 + 20 12 13 1 + 21 12 16 1 + 22 12 25 1 + 23 13 14 1 + 24 13 17 1 + 25 13 26 1 + 26 14 15 1 + 27 14 18 1 + 28 14 27 1 + 29 15 19 1 + 30 15 28 1 + 31 15 29 1 + 32 16 30 1 + 33 17 31 1 + 34 19 32 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 8-AMINO-3-BETA-D-RIBOFURANOSYL-1,2,4-TRIAZOLO(4,3-B)PYRIDAZ +@MOLECULE +VASDOI + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.4044 2.0158 11.3041 C.2 1 VASD -0.1050 + 2 C2 1.6080 1.1513 12.3134 C.2 1 VASD -0.1238 + 3 C3 1.8895 -0.3027 12.0468 C.2 1 VASD 0.7056 + 4 O1 1.9356 -0.7367 10.7435 O.3 1 VASD -0.2120 + 5 C4 1.7276 0.1535 9.7551 C.2 1 VASD 0.0620 + 6 C5 1.7244 -0.0463 8.3661 C.2 1 VASD -0.1500 + 7 C6 1.4599 1.1967 7.8264 C.2 1 VASD -0.0400 + 8 O2 1.3054 2.1261 8.8179 O.3 1 VASD -0.2800 + 9 C7 1.4713 1.4790 10.0091 C.2 1 VASD 0.0950 + 10 C8 1.5710 1.5606 13.7524 C.3 1 VASD 0.1382 + 11 O3 2.0733 -1.0796 12.9800 O.2 1 VASD -0.5700 + 12 C9 1.3181 1.6932 6.4433 C.3 1 VASD 0.1800 + 13 H1 1.1990 3.0691 11.4489 H 1 VASD 0.1500 + 14 H2 1.8908 -0.9655 7.8236 H 1 VASD 0.1500 + 15 H3 1.3614 2.6297 13.8661 H 1 VASD 0.0000 + 16 H4 0.7897 1.0116 14.2882 H 1 VASD 0.0000 + 17 H5 2.5334 1.3591 14.2342 H 1 VASD 0.0000 + 18 H6 0.3224 2.1206 6.2905 H 1 VASD 0.0000 + 19 H7 2.0631 2.4675 6.2365 H 1 VASD 0.0000 + 20 H8 1.4569 0.8842 5.7196 H 1 VASD 0.0000 +@BOND + 1 1 2 2 + 2 1 9 1 + 3 1 13 1 + 4 2 3 1 + 5 2 10 1 + 6 3 4 1 + 7 3 11 2 + 8 4 5 1 + 9 5 6 1 + 10 5 9 2 + 11 6 7 2 + 12 6 14 1 + 13 7 8 1 + 14 7 12 1 + 15 8 9 1 + 16 10 15 1 + 17 10 16 1 + 18 10 17 1 + 19 12 18 1 + 20 12 19 1 + 21 12 20 1 +@SUBSTRUCTURE + 1 VASD 1 +@COMMENT +COMMENT 2,6-DIMETHYL-5H-FURO(3,2-B)PYRAN-5-ONE +@MOLECULE +VATKAC + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.6837 4.8763 1.4585 CL 1 VATK -0.1400 + 2 S1 0.2528 2.6150 -5.7387 S.3 1 VATK -0.2860 + 3 O1 2.5543 1.8881 1.4123 O.2 1 VATK -0.5700 + 4 O2 1.8449 0.2548 -0.7285 O.2 1 VATK -0.5700 + 5 N1 1.0362 1.7153 -3.2628 N.3 1 VATK 0.0476 + 6 N2 1.7959 5.7786 -1.3787 N.3 1 VATK -0.8691 + 7 C1 1.4731 3.5479 -2.1194 C.2 1 VATK -0.0460 + 8 C2 1.8472 4.4185 -1.0582 C.2 1 VATK 0.1460 + 9 C3 2.2075 3.8808 0.1263 C.2 1 VATK 0.1544 + 10 C4 2.2274 2.3902 0.3421 C.2 1 VATK 0.5556 + 11 C5 1.8287 1.4720 -0.8392 C.2 1 VATK 0.6550 + 12 C6 1.4615 2.1857 -2.0322 C.2 1 VATK -0.2366 + 13 C7 0.8057 2.7962 -4.1007 C.2 1 VATK -0.0956 + 14 C8 1.0604 3.9554 -3.3965 C.2 1 VATK -0.1810 + 15 C9 0.9463 5.4077 -3.7245 C.3 1 VATK 0.1810 + 16 C10 1.8466 6.2471 -2.7789 C.3 1 VATK 0.3691 + 17 C11 0.8695 0.3060 -3.5586 C.3 1 VATK 0.2556 + 18 C12 1.8103 2.8439 -6.6279 C.3 1 VATK 0.2300 + 19 H1 2.2672 6.3766 -0.7016 H 1 VATK 0.4000 + 20 H2 1.2213 5.6065 -4.7654 H 1 VATK 0.0000 + 21 H3 -0.0989 5.7124 -3.5904 H 1 VATK 0.0000 + 22 H4 1.5466 7.2994 -2.8205 H 1 VATK 0.0000 + 23 H5 2.8878 6.1893 -3.1200 H 1 VATK 0.0000 + 24 H6 0.1541 -0.1115 -2.8451 H 1 VATK 0.0000 + 25 H7 0.4926 0.1540 -4.5698 H 1 VATK 0.0000 + 26 H8 1.8437 -0.1802 -3.4606 H 1 VATK 0.0000 + 27 H9 2.2187 3.8407 -6.4411 H 1 VATK 0.0000 + 28 H10 2.5408 2.0909 -6.3191 H 1 VATK 0.0000 + 29 H11 1.6322 2.7367 -7.7011 H 1 VATK 0.0000 +@BOND + 1 1 9 1 + 2 2 13 1 + 3 2 18 1 + 4 3 10 2 + 5 4 11 2 + 6 5 12 1 + 7 5 13 1 + 8 5 17 1 + 9 6 8 1 + 10 6 16 1 + 11 6 19 1 + 12 7 8 1 + 13 7 12 2 + 14 7 14 1 + 15 8 9 2 + 16 9 10 1 + 17 10 11 1 + 18 11 12 1 + 19 13 14 2 + 20 14 15 1 + 21 15 16 1 + 22 15 20 1 + 23 15 21 1 + 24 16 22 1 + 25 16 23 1 + 26 17 24 1 + 27 17 25 1 + 28 17 26 1 + 29 18 27 1 + 30 18 28 1 + 31 18 29 1 +@SUBSTRUCTURE + 1 VATK 1 +@COMMENT +COMMENT BATZELLINE A METHANOL SOLVATE +@MOLECULE +VAWDUS + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 0.3643 4.8512 8.4631 P 1 VAWD 1.0782 + 2 O1 1.1212 3.4577 8.7540 O.3 1 VAWD -0.5512 + 3 O2 1.0179 6.0770 9.0241 O.2 1 VAWD -0.7000 + 4 O3 -1.4239 4.3441 10.8995 O.3 1 VAWD -0.6330 + 5 O4 -0.8952 4.5522 4.1952 O.3 1 VAWD -0.5200 + 6 O5 -2.5064 5.9084 4.8215 O.2 1 VAWD -0.5200 + 7 N1 -2.0610 4.4823 9.8095 N.2 1 VAWD 0.3370 + 8 N2 -1.5639 5.1421 5.0507 N.2 1 VAWD 0.8356 + 9 C1 -1.3883 4.6830 8.7024 C.2 1 VAWD -0.1174 + 10 C2 -2.0966 4.8194 7.3970 C.2 1 VAWD -0.1238 + 11 C3 -1.1803 4.9353 6.4267 C.2 1 VAWD 0.0662 + 12 C4 0.2747 4.8897 6.6775 C.3 1 VAWD 0.1382 + 13 C5 -3.5886 4.7710 7.3198 C.3 1 VAWD 0.1382 + 14 C6 1.4062 3.1373 10.1038 C.3 1 VAWD 0.2800 + 15 H1 -3.9630 4.6200 6.3043 H 1 VAWD 0.0000 + 16 H2 -3.9769 3.9326 7.9076 H 1 VAWD 0.0000 + 17 H3 -4.0187 5.6975 7.7125 H 1 VAWD 0.0000 + 18 H4 0.7357 3.9979 6.2416 H 1 VAWD 0.0000 + 19 H5 0.7831 5.7792 6.2923 H 1 VAWD 0.0000 + 20 H6 1.5918 4.0365 10.6973 H 1 VAWD 0.0000 + 21 H7 0.5709 2.5749 10.5272 H 1 VAWD 0.0000 + 22 H8 2.3000 2.5088 10.1302 H 1 VAWD 0.0000 + 23 H9 -3.0783 4.4173 9.8793 H 1 VAWD 0.2920 +@BOND + 1 1 12 1 + 2 1 9 1 + 3 1 3 2 + 4 1 2 1 + 5 2 14 1 + 6 4 7 1 + 7 5 8 1 + 8 6 8 2 + 9 7 23 1 + 10 7 9 2 + 11 8 11 1 + 12 9 10 1 + 13 10 13 1 + 14 10 11 2 + 15 11 12 1 + 16 12 19 1 + 17 12 18 1 + 18 13 17 1 + 19 13 16 1 + 20 13 15 1 + 21 14 22 1 + 22 14 21 1 + 23 14 20 1 +@SUBSTRUCTURE + 1 VAWD 1 +@COMMENT +COMMENT 1-METHOXY-2-OXIMINO-3-METHYL-4-NITRO-3-PHOSPHOLENE-1-OXIDE +@MOLECULE +VAWMOV + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.2657 7.8503 1.9758 N.3 1 UNCH 0.3140 + 2 C1 1.7247 6.2191 0.7815 C.2 1 UNCH 0.4530 + 3 C2 3.2985 7.5830 1.1289 C.2 1 UNCH 0.0365 + 4 O1 1.5998 3.7014 0.2723 O.2 1 UNCH -0.6500 + 5 N2 -0.5822 4.6749 1.0576 N.3 1 UNCH -0.9780 + 6 C3 0.8426 9.1841 3.5744 C.3 1 UNCH 0.2800 + 7 C4 2.3465 8.5016 5.2587 C.3 1 UNCH 0.2800 + 8 O2 3.1160 8.5536 4.0356 O.3 1 UNCH -0.5600 + 9 O3 -0.0321 8.7588 5.8112 O.3 1 UNCH -0.6800 + 10 N3 1.2441 6.9807 1.7941 N.2 1 UNCH -0.7068 + 11 N4 2.9872 6.5742 0.3515 N.2 1 UNCH -0.5653 + 12 S1 0.7924 4.8850 0.0799 S.1 1 UNCH 1.5010 + 13 O4 0.3501 5.3621 -1.2099 O.2 1 UNCH -0.6500 + 14 C5 2.2234 8.9192 2.9608 C.3 1 UNCH 0.5356 + 15 C6 0.8954 8.3246 4.8269 C.3 1 UNCH 0.2800 + 16 C7 2.8334 7.3617 6.1524 C.3 1 UNCH 0.2800 + 17 O5 0.6962 10.5608 3.9864 O.3 1 UNCH -0.6800 + 18 O6 4.1288 7.6687 6.6662 O.3 1 UNCH -0.6800 + 19 H1 4.2268 8.1395 1.1256 H 1 UNCH 0.1500 + 20 H2 -0.7660 5.5389 1.5719 H 1 UNCH 0.4200 + 21 H3 -0.4198 3.8798 1.6758 H 1 UNCH 0.4200 + 22 H4 2.6233 9.8169 2.4759 H 1 UNCH 0.0000 + 23 H5 -0.0135 8.9537 2.9338 H 1 UNCH 0.0000 + 24 H6 0.6866 7.2768 4.5829 H 1 UNCH 0.0000 + 25 H7 2.4970 9.4563 5.7787 H 1 UNCH 0.0000 + 26 H8 2.9141 6.4300 5.5829 H 1 UNCH 0.0000 + 27 H9 2.1599 7.2145 7.0021 H 1 UNCH 0.0000 + 28 H10 0.5096 11.0911 3.1896 H 1 UNCH 0.4000 + 29 H11 -0.0497 9.7368 5.7448 H 1 UNCH 0.4000 + 30 H12 4.4271 6.8937 7.1725 H 1 UNCH 0.4000 +@BOND + 1 1 3 am + 2 1 10 1 + 3 1 14 1 + 4 2 10 2 + 5 2 11 am + 6 2 12 1 + 7 3 11 2 + 8 3 19 1 + 9 4 12 2 + 10 5 12 1 + 11 5 20 1 + 12 5 21 1 + 13 6 14 1 + 14 6 15 1 + 15 6 17 1 + 16 6 23 1 + 17 7 8 1 + 18 7 15 1 + 19 7 16 1 + 20 7 25 1 + 21 8 14 1 + 22 9 15 1 + 23 9 29 1 + 24 12 13 2 + 25 14 22 1 + 26 15 24 1 + 27 16 18 1 + 28 16 26 1 + 29 16 27 1 + 30 17 28 1 + 31 18 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 1BETA-D-RIBOFURANOSYL-1,2,4-TRIAZOLE-3-SULFONAMIDE +@MOLECULE +VAWWAR + 33 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 4.1017 2.8927 11.4672 BR 1 VAWW -0.2300 + 2 O1 5.0147 0.1570 9.4157 O.3 1 VAWW -0.5200 + 3 O2 5.3171 -1.0440 7.6136 O.2 1 VAWW -0.5200 + 4 O3 8.4001 -1.4158 8.0880 O.3 1 VAWW -0.5200 + 5 O4 8.1328 -0.0828 6.3540 O.2 1 VAWW -0.5200 + 6 N1 5.6995 -0.2118 8.4483 N.2 1 VAWW 0.8356 + 7 N2 7.8908 -0.4421 7.5156 N.2 1 VAWW 0.8356 + 8 N3 6.5047 2.4419 9.4950 N.3 1 VAWW -0.8691 + 9 C1 7.0022 0.3692 8.2823 C.2 1 VAWW 0.4088 + 10 C2 7.3714 1.5821 8.7777 C.2 1 VAWW -0.0382 + 11 C3 8.7893 2.0771 8.5323 C.3 1 VAWW 0.1382 + 12 C4 6.6931 3.6903 10.2820 C.3 1 VAWW 0.3691 + 13 C5 5.2488 4.3009 10.6020 C.3 1 VAWW 0.2300 + 14 C6 5.2500 5.4744 11.5967 C.3 1 VAWW 0.0000 + 15 C7 4.4836 4.7158 9.3313 C.3 1 VAWW 0.0000 + 16 C8 7.5078 4.7281 9.4809 C.3 1 VAWW 0.0000 + 17 C9 7.4586 3.3475 11.5778 C.3 1 VAWW 0.0000 + 18 H1 9.4675 1.3232 8.1236 H 1 VAWW 0.0000 + 19 H2 9.2626 2.3945 9.4633 H 1 VAWW 0.0000 + 20 H3 8.7793 2.9093 7.8218 H 1 VAWW 0.0000 + 21 H4 4.2314 5.8388 11.7802 H 1 VAWW 0.0000 + 22 H5 5.8253 6.3259 11.2225 H 1 VAWW 0.0000 + 23 H6 5.6585 5.1912 12.5721 H 1 VAWW 0.0000 + 24 H7 4.4062 3.8926 8.6127 H 1 VAWW 0.0000 + 25 H8 3.4605 5.0351 9.5644 H 1 VAWW 0.0000 + 26 H9 4.9716 5.5572 8.8286 H 1 VAWW 0.0000 + 27 H10 7.1741 4.7885 8.4394 H 1 VAWW 0.0000 + 28 H11 7.4358 5.7294 9.9152 H 1 VAWW 0.0000 + 29 H12 8.5767 4.4990 9.4720 H 1 VAWW 0.0000 + 30 H13 8.4331 2.8968 11.3693 H 1 VAWW 0.0000 + 31 H14 6.9180 2.6273 12.1993 H 1 VAWW 0.0000 + 32 H15 7.6531 4.2410 12.1796 H 1 VAWW 0.0000 + 33 H16 5.6422 1.9587 9.8016 H 1 VAWW 0.4000 +@BOND + 1 1 13 1 + 2 2 6 1 + 3 3 6 2 + 4 4 7 1 + 5 5 7 2 + 6 6 9 1 + 7 7 9 1 + 8 8 33 1 + 9 8 12 1 + 10 8 10 1 + 11 9 10 2 + 12 10 11 1 + 13 11 20 1 + 14 11 19 1 + 15 11 18 1 + 16 12 17 1 + 17 12 16 1 + 18 12 13 1 + 19 13 15 1 + 20 13 14 1 + 21 14 23 1 + 22 14 22 1 + 23 14 21 1 + 24 15 26 1 + 25 15 25 1 + 26 15 24 1 + 27 16 29 1 + 28 16 28 1 + 29 16 27 1 + 30 17 32 1 + 31 17 31 1 + 32 17 30 1 +@SUBSTRUCTURE + 1 VAWW 1 +@COMMENT +COMMENT N-(2,2-DINITRO-1-METHYLETHENYL)-2-BROMO-1,1,2-TRIMETHYLPROP +@MOLECULE +VAYKUB + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N4 6.2138 10.9567 0.8083 N.2 1 VAYK -0.1790 + 2 C9 6.1986 11.1174 2.1368 C.2 1 VAYK 0.5275 + 3 N5 5.1997 11.7521 2.7882 N.2 1 VAYK -0.6200 + 4 C10 4.1829 12.2231 2.0494 C.2 1 VAYK 0.4100 + 5 C11 4.1379 12.0900 0.6673 C.2 1 VAYK -0.1435 + 6 C12 5.2070 11.4322 0.0661 C.2 1 VAYK 0.2110 + 7 C13 7.3521 10.5898 2.9277 C.3 1 VAYK 0.1435 + 8 N6 3.2081 12.9108 2.7527 N.3 1 VAYK -0.9000 + 9 C14 3.0224 12.6796 -0.1504 C.3 1 VAYK 0.4235 + 10 O2 3.1527 12.2487 -1.5061 O.3 1 VAYK -0.5600 + 11 C15 2.1197 12.7950 -2.3310 C.3 1 VAYK 0.2800 + 12 C16 2.3261 12.2946 -3.7466 C.3 1 VAYK 0.0000 + 13 H14 6.9962 10.4798 0.3654 H 1 VAYK 0.4570 + 14 H15 2.2602 12.5822 2.5983 H 1 VAYK 0.4000 + 15 H16 3.4305 12.8965 3.7476 H 1 VAYK 0.4000 + 16 H17 5.2913 11.2788 -1.0052 H 1 VAYK 0.1500 + 17 H18 8.2525 11.1673 2.6994 H 1 VAYK 0.0000 + 18 H19 7.1550 10.6597 4.0017 H 1 VAYK 0.0000 + 19 H20 7.5302 9.5400 2.6768 H 1 VAYK 0.0000 + 20 H21 2.0560 12.3373 0.2368 H 1 VAYK 0.0000 + 21 H22 3.0793 13.7734 -0.1091 H 1 VAYK 0.0000 + 22 H23 1.1413 12.4719 -1.9593 H 1 VAYK 0.0000 + 23 H24 2.1712 13.8890 -2.3103 H 1 VAYK 0.0000 + 24 H25 1.5563 12.6884 -4.4160 H 1 VAYK 0.0000 + 25 H26 2.2952 11.2004 -3.7769 H 1 VAYK 0.0000 + 26 H27 3.3096 12.5958 -4.1223 H 1 VAYK 0.0000 +@BOND + 1 1 13 1 + 2 1 6 2 + 3 1 2 am + 4 2 7 1 + 5 2 3 2 + 6 3 4 1 + 7 4 8 1 + 8 4 5 2 + 9 5 9 1 + 10 5 6 1 + 11 6 16 1 + 12 7 19 1 + 13 7 18 1 + 14 7 17 1 + 15 8 15 1 + 16 8 14 1 + 17 9 21 1 + 18 9 20 1 + 19 9 10 1 + 20 10 11 1 + 21 11 23 1 + 22 11 22 1 + 23 11 12 1 + 24 12 26 1 + 25 12 25 1 + 26 12 24 1 +@SUBSTRUCTURE + 1 VAYK 1 +@COMMENT +COMMENT 2-METHYL-4-AMINO-5-ETHOXYMETHYLPYRIMIDINE MONOHYDROGEN BROM +@MOLECULE +VAZHUZ + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.1432 5.5827 4.4315 C.2 1 UNCH 0.0862 + 2 C2 2.8458 5.7960 3.2285 C.2 1 UNCH -0.1500 + 3 C3 2.3173 6.6246 2.2386 C.2 1 UNCH 0.0825 + 4 C4 1.0769 7.2319 2.4605 C.2 1 UNCH 0.0825 + 5 C5 0.3639 7.0242 3.6335 C.2 1 UNCH -0.1500 + 6 C6 0.8954 6.1929 4.6203 C.2 1 UNCH -0.1500 + 7 C7 2.7541 4.6641 5.4396 C.2 1 UNCH 0.5688 + 8 C8 4.1511 6.3000 0.7593 C.3 1 UNCH 0.2800 + 9 O1 3.5362 3.8042 5.0278 O.2 1 UNCH -0.5700 + 10 O2 2.8979 6.9181 1.0316 O.3 1 UNCH -0.3625 + 11 O3 0.5307 8.0500 1.5096 O.3 1 UNCH -0.5325 + 12 C9 2.4520 4.7852 6.8532 C.2 1 UNCH 0.1015 + 13 C10 2.4829 4.3020 9.0214 C.2 1 UNCH -0.3016 + 14 C11 1.7524 5.4390 8.7787 C.2 1 UNCH 0.0772 + 15 N1 2.9270 3.9003 7.7942 N.3 1 UNCH 0.0332 + 16 N2 1.7418 5.7323 7.4388 N.2 1 UNCH -0.5653 + 17 H1 3.8040 5.3028 3.0945 H 1 UNCH 0.1500 + 18 H2 -0.6002 7.5034 3.7777 H 1 UNCH 0.1500 + 19 H3 0.3142 6.0284 5.5240 H 1 UNCH 0.1500 + 20 H4 4.4738 6.6244 -0.2347 H 1 UNCH 0.0000 + 21 H5 4.0571 5.2092 0.7396 H 1 UNCH 0.0000 + 22 H6 4.9127 6.6201 1.4778 H 1 UNCH 0.0000 + 23 H7 1.1808 8.0604 0.7802 H 1 UNCH 0.4500 + 24 H8 2.7213 3.7655 9.9286 H 1 UNCH 0.1500 + 25 H9 1.2357 6.0638 9.4963 H 1 UNCH 0.1500 + 26 H10 3.5092 3.1008 7.5796 H 1 UNCH 0.2700 +@BOND + 1 1 2 1 + 2 1 6 2 + 3 1 7 1 + 4 2 3 2 + 5 2 17 1 + 6 3 4 1 + 7 3 10 1 + 8 4 5 2 + 9 4 11 1 + 10 5 6 1 + 11 5 18 1 + 12 6 19 1 + 13 7 9 2 + 14 7 12 1 + 15 8 10 1 + 16 8 20 1 + 17 8 21 1 + 18 8 22 1 + 19 11 23 1 + 20 12 15 am + 21 12 16 2 + 22 13 14 2 + 23 13 15 1 + 24 13 24 1 + 25 14 16 1 + 26 14 25 1 + 27 15 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-VANILLOYL-IMIDAZOLE (AT 173 DEG.K) +@MOLECULE +VECSAX + 26 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.2011 0.1191 9.8980 S.3 1 UNCH -0.2870 + 2 S2 0.0777 -0.3014 13.0108 S.3 1 UNCH -0.3000 + 3 S3 2.6379 -3.6751 11.8182 S.2 1 UNCH -0.3800 + 4 S4 3.9125 -1.0565 12.6670 S.3 1 UNCH -0.3710 + 5 S5 3.1346 0.1756 8.9630 S.3 1 UNCH -0.4470 + 6 S6 1.4282 -2.2818 8.3295 S.3 1 UNCH -0.4470 + 7 C1 0.7461 -0.5122 11.4168 C.2 1 UNCH 0.1400 + 8 C2 1.7826 -1.2405 10.9741 C.2 1 UNCH -0.2090 + 9 C3 1.6904 -0.8852 9.5102 C.3 1 UNCH 0.7890 + 10 C4 -0.0440 1.5020 13.0261 C.3 1 UNCH 0.2300 + 11 H1 -0.3488 1.8293 14.0239 H 1 UNCH 0.0000 + 12 H2 -0.7939 1.8496 12.3103 H 1 UNCH 0.0000 + 13 H3 0.9224 1.9592 12.7951 H 1 UNCH 0.0000 + 14 C5 2.7430 -2.0111 11.7743 C.2 1 UNCH 0.5920 + 15 C6 5.4389 -1.5951 11.8647 C.3 1 UNCH 0.2300 + 16 H4 6.2648 -0.9675 12.2104 H 1 UNCH 0.0000 + 17 H5 5.3634 -1.4988 10.7786 H 1 UNCH 0.0000 + 18 H6 5.6680 -2.6326 12.1213 H 1 UNCH 0.0000 + 19 C7 2.4720 0.8001 7.4020 C.3 1 UNCH 0.2300 + 20 H7 3.1990 1.4932 6.9688 H 1 UNCH 0.0000 + 21 H8 1.5384 1.3469 7.5511 H 1 UNCH 0.0000 + 22 H9 2.3128 -0.0061 6.6826 H 1 UNCH 0.0000 + 23 C8 -0.1022 -3.0048 8.9554 C.3 1 UNCH 0.2300 + 24 H10 -0.2750 -3.9533 8.4386 H 1 UNCH 0.0000 + 25 H11 -0.9555 -2.3551 8.7454 H 1 UNCH 0.0000 + 26 H12 -0.0551 -3.2125 10.0258 H 1 UNCH 0.0000 +@BOND + 1 1 7 1 + 2 1 9 1 + 3 2 7 1 + 4 2 10 1 + 5 3 14 2 + 6 4 14 1 + 7 4 15 1 + 8 5 9 1 + 9 5 19 1 + 10 6 9 1 + 11 6 23 1 + 12 7 8 2 + 13 8 9 1 + 14 8 14 1 + 15 10 11 1 + 16 10 12 1 + 17 10 13 1 + 18 15 16 1 + 19 15 17 1 + 20 15 18 1 + 21 19 20 1 + 22 19 21 1 + 23 19 22 1 + 24 23 24 1 + 25 23 25 1 + 26 23 26 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,4,4-TRIS(METHYLTHIO)-3-(METHYLTHIO(THIO)CARBONYL)-2-THIET +@MOLECULE +VEDTED + 23 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.6994 1.2861 5.6234 S.1 1 UNCH 1.6260 + 2 N1 0.8960 1.3582 4.0103 N.2 1 UNCH -0.6380 + 3 C1 2.0789 1.4689 3.4884 C.2 1 UNCH 0.5850 + 4 N2 4.5868 1.4699 3.9968 N.3 1 UNCH 0.0476 + 5 C2 5.2953 1.6785 5.1493 C.2 1 UNCH 0.0365 + 6 N3 4.5010 1.8839 6.1758 N.2 1 UNCH -0.5653 + 7 N4 2.0703 1.9138 6.3918 N.3 1 UNCH -0.6387 + 8 C3 3.2389 1.7909 5.6645 C.2 1 UNCH 0.3722 + 9 C4 3.2548 1.5734 4.3070 C.2 1 UNCH -0.2366 + 10 O1 0.6213 -0.1141 5.9949 O.2 1 UNCH -0.6500 + 11 O2 -0.3989 2.1681 5.9691 O.2 1 UNCH -0.6500 + 12 N5 2.1259 1.5107 2.1167 N.3 1 UNCH -0.8500 + 13 C5 5.1681 1.1368 2.7208 C.3 1 UNCH 0.2556 + 14 C6 2.0935 1.8564 7.8534 C.3 1 UNCH 0.3557 + 15 H1 6.3776 1.6615 5.1881 H 1 UNCH 0.1500 + 16 H2 2.7116 2.2473 1.7412 H 1 UNCH 0.4000 + 17 H3 1.1850 1.5781 1.7342 H 1 UNCH 0.4000 + 18 H4 6.2323 0.9214 2.8496 H 1 UNCH 0.0000 + 19 H5 5.0445 1.9911 2.0511 H 1 UNCH 0.0000 + 20 H6 4.6667 0.2511 2.3233 H 1 UNCH 0.0000 + 21 H7 2.4165 0.8694 8.1985 H 1 UNCH 0.0000 + 22 H8 1.1061 2.0736 8.2721 H 1 UNCH 0.0000 + 23 H9 2.7800 2.6115 8.2505 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 10 2 + 4 1 11 2 + 5 2 3 2 + 6 3 9 1 + 7 3 12 am + 8 4 5 am + 9 4 9 1 + 10 4 13 1 + 11 5 6 2 + 12 5 15 1 + 13 6 8 1 + 14 7 8 1 + 15 7 14 1 + 16 8 9 2 + 17 12 16 1 + 18 12 17 1 + 19 13 18 1 + 20 13 19 1 + 21 13 20 1 + 22 14 21 1 + 23 14 22 1 + 24 14 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-AMINO-1,5-DIMETHYLIMIDAZO(4,5-C)-1,2,6-THIADIAZINE 2,2-DI +@MOLECULE +VEHCOA + 23 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.1704 1.0340 7.2321 N.3 1 UNCH 0.2996 + 2 N2 -0.9432 1.3509 6.1852 N.2 1 UNCH -0.7068 + 3 C1 -1.4559 2.5348 6.5151 C.2 1 UNCH 0.1388 + 4 C2 -1.0111 2.9778 7.7760 C.2 1 UNCH 0.0790 + 5 N3 -1.4003 4.2207 8.3888 N.2 1 UNCH 0.9610 + 6 O1 -0.9359 4.4898 9.5018 O.3 1 UNCH -0.5200 + 7 O2 -2.1808 4.9345 7.7457 O.2 1 UNCH -0.5200 + 8 C3 -0.1544 1.9732 8.2492 C.2 1 UNCH -0.4256 + 9 SI1 0.8769 1.7134 9.8183 SI 1 UNCH 0.5155 + 10 C4 2.1056 3.0930 9.8839 C.3 1 UNCH -0.0805 + 11 C5 1.7263 0.0695 9.6055 C.3 1 UNCH -0.0805 + 12 C6 -0.3091 1.6704 11.2355 C.3 1 UNCH -0.0805 + 13 H1 0.3294 0.1499 7.1946 H 1 UNCH 0.2700 + 14 H2 -2.1317 3.0268 5.8256 H 1 UNCH 0.1500 + 15 H3 1.6278 4.0670 10.0177 H 1 UNCH 0.0000 + 16 H4 2.7009 3.1379 8.9664 H 1 UNCH 0.0000 + 17 H5 2.7995 2.9539 10.7190 H 1 UNCH 0.0000 + 18 H6 2.3478 -0.1569 10.4775 H 1 UNCH 0.0000 + 19 H7 2.3763 0.0683 8.7250 H 1 UNCH 0.0000 + 20 H8 1.0005 -0.7421 9.4951 H 1 UNCH 0.0000 + 21 H9 0.2107 1.4288 12.1681 H 1 UNCH 0.0000 + 22 H10 -1.0814 0.9097 11.0835 H 1 UNCH 0.0000 + 23 H11 -0.8124 2.6295 11.3836 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 8 1 + 3 1 13 1 + 4 2 3 2 + 5 3 4 1 + 6 3 14 1 + 7 4 5 1 + 8 4 8 2 + 9 5 6 1 + 10 5 7 2 + 11 8 9 1 + 12 9 10 1 + 13 9 11 1 + 14 9 12 1 + 15 10 15 1 + 16 10 16 1 + 17 10 17 1 + 18 11 18 1 + 19 11 19 1 + 20 11 20 1 + 21 12 21 1 + 22 12 22 1 + 23 12 23 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4-NITRO-5-(TRIMETHYLSILYL)PYRAZOLE +@MOLECULE +VEHZOX + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.8671 1.8425 10.1011 CL 1 UNCH -0.2900 + 2 S1 1.6282 3.2140 5.6574 S.1 1 UNCH 1.5050 + 3 O1 4.3790 2.8500 6.5027 O.3 1 UNCH -0.2267 + 4 O2 6.5208 4.1546 2.6669 O.3 1 UNCH -0.5600 + 5 O3 0.4169 2.5135 5.2822 O.2 1 UNCH -0.6500 + 6 O4 1.6580 4.6633 5.6681 O.2 1 UNCH -0.6500 + 7 N1 2.8347 2.6830 4.7408 N.2 1 UNCH -0.6380 + 8 N2 5.1380 2.3470 4.4033 N.3 1 UNCH -0.7882 + 9 C1 4.0388 2.6418 5.1935 C.2 1 UNCH 0.6500 + 10 C2 2.1003 2.6563 7.2070 C.2 1 UNCH -0.1670 + 11 C3 3.4049 2.5975 7.4912 C.2 1 UNCH -0.0615 + 12 C4 4.0213 2.2520 8.8179 C.3 1 UNCH 0.4282 + 13 C5 4.9685 2.2748 2.9359 C.3 1 UNCH 0.3691 + 14 C6 5.2098 3.6644 2.3267 C.3 1 UNCH 0.2800 + 15 C7 6.6895 4.2271 4.0936 C.3 1 UNCH 0.2800 + 16 C8 6.4828 2.8501 4.7453 C.3 1 UNCH 0.3691 + 17 H1 1.3070 2.4583 7.9106 H 1 UNCH 0.1500 + 18 H2 4.6879 1.3917 8.7007 H 1 UNCH 0.0000 + 19 H3 4.6180 3.0964 9.1770 H 1 UNCH 0.0000 + 20 H4 3.9825 1.8903 2.6543 H 1 UNCH 0.0000 + 21 H5 5.7103 1.5700 2.5407 H 1 UNCH 0.0000 + 22 H6 5.1516 3.6088 1.2353 H 1 UNCH 0.0000 + 23 H7 4.4611 4.3883 2.6691 H 1 UNCH 0.0000 + 24 H8 5.9893 4.9681 4.4969 H 1 UNCH 0.0000 + 25 H9 7.7061 4.5823 4.2880 H 1 UNCH 0.0000 + 26 H10 7.2231 2.1450 4.3477 H 1 UNCH 0.0000 + 27 H11 6.6468 2.9065 5.8259 H 1 UNCH 0.0000 +@BOND + 1 1 12 1 + 2 2 5 2 + 3 2 6 2 + 4 2 7 1 + 5 2 10 1 + 6 3 9 1 + 7 3 11 1 + 8 4 14 1 + 9 4 15 1 + 10 7 9 2 + 11 8 9 am + 12 8 13 1 + 13 8 16 1 + 14 10 11 2 + 15 10 17 1 + 16 11 12 1 + 17 12 18 1 + 18 12 19 1 + 19 13 14 1 + 20 13 20 1 + 21 13 21 1 + 22 14 22 1 + 23 14 23 1 + 24 15 16 1 + 25 15 24 1 + 26 15 25 1 + 27 16 26 1 + 28 16 27 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 6-(CHLOROMETHYL)-2-(4-MORPHOLINYL)-1,4,3-OXATHIAZIN-4,4-DIO +@MOLECULE +VEJWOW + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.4593 2.7451 8.1613 S.3 1 UNCH -0.0800 + 2 C1 0.5389 2.3504 6.5227 C.2 1 UNCH 0.1640 + 3 C2 1.7134 1.7434 6.1640 C.2 1 UNCH 0.1230 + 4 C3 2.5822 1.6027 7.2955 C.2 1 UNCH 0.1230 + 5 C4 2.0356 2.1104 8.4736 C.2 1 UNCH -0.1400 + 6 C5 2.6493 2.1479 9.8790 C.3 1 UNCH 0.5920 + 7 C6 3.0942 0.7605 10.3522 C.2 1 UNCH 0.6590 + 8 O1 2.3048 -0.2341 9.8369 O.3 1 UNCH -0.4300 + 9 C7 2.6598 -1.5513 10.2644 C.3 1 UNCH 0.2800 + 10 O2 4.0033 0.5458 11.1485 O.2 1 UNCH -0.5700 + 11 C8 1.7218 2.7846 10.9184 C.2 1 UNCH 0.6590 + 12 O3 0.9517 1.8432 11.5477 O.3 1 UNCH -0.4300 + 13 C9 0.0365 2.3743 12.5100 C.3 1 UNCH 0.2800 + 14 O4 1.6103 3.9881 11.1331 O.2 1 UNCH -0.5700 + 15 CL1 4.1309 3.2024 9.7916 CL 1 UNCH -0.2900 + 16 CL2 -0.8068 2.7287 5.5184 CL 1 UNCH -0.1240 + 17 CL3 2.1049 1.2119 4.5796 CL 1 UNCH -0.1230 + 18 CL4 4.1347 0.8655 7.1748 CL 1 UNCH -0.1230 + 19 H1 1.9850 -2.2585 9.7744 H 1 UNCH 0.0000 + 20 H2 3.6858 -1.7878 9.9659 H 1 UNCH 0.0000 + 21 H3 2.5363 -1.6468 11.3475 H 1 UNCH 0.0000 + 22 H4 0.5765 2.9036 13.3011 H 1 UNCH 0.0000 + 23 H5 -0.6882 3.0341 12.0232 H 1 UNCH 0.0000 + 24 H6 -0.5040 1.5369 12.9596 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 16 1 + 5 3 4 1 + 6 3 17 1 + 7 4 5 2 + 8 4 18 1 + 9 5 6 1 + 10 6 7 1 + 11 6 11 1 + 12 6 15 1 + 13 7 8 1 + 14 7 10 2 + 15 8 9 1 + 16 9 19 1 + 17 9 20 1 + 18 9 21 1 + 19 11 12 1 + 20 11 14 2 + 21 12 13 1 + 22 13 22 1 + 23 13 23 1 + 24 13 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT DIMETHYL 2-CHLORO-2-(3,4,5-TRICHLOROTHIEN-2-YL)MALONATE +@MOLECULE +VEKMON + 25 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 5.0445 6.6458 8.4340 C.2 1 VEKM 0.2110 + 2 C2 5.5398 5.7568 7.4813 C.2 1 VEKM -0.1500 + 3 C3 6.4725 6.1551 6.5233 C.2 1 VEKM 0.1000 + 4 C4 6.8539 7.4964 6.5867 C.2 1 VEKM -0.1500 + 5 C5 6.3392 8.3631 7.5523 C.2 1 VEKM 0.2110 + 6 C6 4.8792 8.8037 9.4920 C.2 1 VEKM 0.9020 + 7 C7 5.3266 10.2326 9.5111 C.3 1 VEKM 0.0610 + 8 C8 8.1083 5.6653 4.7244 C.3 1 VEKM 0.3691 + 9 C9 6.6830 3.8519 5.6281 C.3 1 VEKM 0.3691 + 10 N1 5.4411 7.9428 8.4725 N.2 1 VEKM -0.1150 + 11 N2 6.9558 5.2912 5.5505 N.3 1 VEKM -0.8382 + 12 O1 4.0763 8.3225 10.2781 O.2 1 VEKM -0.5700 + 13 H1 4.3177 6.3109 9.1722 H 1 VEKM 0.1500 + 14 H2 5.1651 4.7366 7.5133 H 1 VEKM 0.1500 + 15 H3 7.5641 7.9096 5.8743 H 1 VEKM 0.1500 + 16 H4 6.6636 9.3989 7.5641 H 1 VEKM 0.1500 + 17 H5 4.8191 10.7529 10.3293 H 1 VEKM 0.0000 + 18 H6 6.4030 10.2915 9.6895 H 1 VEKM 0.0000 + 19 H7 5.0551 10.7284 8.5760 H 1 VEKM 0.0000 + 20 H8 7.8944 6.5646 4.1370 H 1 VEKM 0.0000 + 21 H9 8.9930 5.8361 5.3474 H 1 VEKM 0.0000 + 22 H10 8.3594 4.8819 4.0008 H 1 VEKM 0.0000 + 23 H11 7.1271 3.4214 6.5322 H 1 VEKM 0.0000 + 24 H12 5.6055 3.6551 5.6188 H 1 VEKM 0.0000 + 25 H13 7.0966 3.3156 4.7670 H 1 VEKM 0.0000 +@BOND + 1 1 13 1 + 2 1 10 1 + 3 1 2 2 + 4 2 14 1 + 5 2 3 1 + 6 3 11 1 + 7 3 4 2 + 8 4 15 1 + 9 4 5 1 + 10 5 16 1 + 11 5 10 2 + 12 6 12 2 + 13 6 10 am + 14 6 7 1 + 15 7 19 1 + 16 7 18 1 + 17 7 17 1 + 18 8 22 1 + 19 8 21 1 + 20 8 20 1 + 21 8 11 1 + 22 9 25 1 + 23 9 24 1 + 24 9 23 1 + 25 9 11 1 +@SUBSTRUCTURE + 1 VEKM 1 +@COMMENT +COMMENT 1-ACETYL-4-DIMETHYLAMINOPYRIDINIUM DIMESYLAMIDE (AT -90 DEG +@MOLECULE +VENYUI + 24 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.7129 3.2790 6.9845 C.3 1 UNCH -0.0600 + 2 C2 5.2772 1.9647 6.4769 C.3 1 UNCH -0.0600 + 3 C3 4.1488 1.9646 7.4920 C.3 1 UNCH -0.0600 + 4 C4 5.5539 4.0798 7.9193 C.2 1 UNCH -0.0800 + 5 C5 5.5538 5.4243 7.9193 C.2 1 UNCH -0.3000 + 6 C6 6.6337 1.5643 6.9479 C.2 1 UNCH -0.0800 + 7 C7 7.4994 0.8921 6.1691 C.2 1 UNCH -0.3000 + 8 H1 4.0952 3.8482 6.2978 H 1 UNCH 0.1000 + 9 H2 5.0258 1.6801 5.4606 H 1 UNCH 0.1000 + 10 H3 3.1647 1.6800 7.1350 H 1 UNCH 0.1000 + 11 H4 4.9341 5.9880 7.2305 H 1 UNCH 0.1500 + 12 H5 7.2426 0.6103 5.1537 H 1 UNCH 0.1500 + 13 H6 8.4820 0.6103 6.5315 H 1 UNCH 0.1500 + 14 C6F 4.4743 1.5642 8.8906 C.2 1 UNCH -0.0800 + 15 C1F 6.3949 3.2791 8.8541 C.3 1 UNCH -0.0600 + 16 H4F 6.1736 5.9880 8.6082 H 1 UNCH 0.1500 + 17 C3F 6.9592 1.9647 8.3465 C.3 1 UNCH -0.0600 + 18 C2F 5.8308 1.9646 9.3616 C.3 1 UNCH -0.0600 + 19 C7F 3.6087 0.8919 9.6693 C.2 1 UNCH -0.3000 + 20 H1F 7.0127 3.8482 9.5407 H 1 UNCH 0.1000 + 21 H3F 7.9433 1.6801 8.7035 H 1 UNCH 0.1000 + 22 H2F 6.0821 1.6800 10.3779 H 1 UNCH 0.1000 + 23 H5F 3.8655 0.6100 10.6847 H 1 UNCH 0.1500 + 24 H6F 2.6261 0.6100 9.3070 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 8 1 + 5 2 3 1 + 6 2 6 1 + 7 2 9 1 + 8 3 10 1 + 9 3 14 1 + 10 4 5 2 + 11 4 15 1 + 12 5 11 1 + 13 5 16 1 + 14 6 7 2 + 15 6 17 1 + 16 7 12 1 + 17 7 13 1 + 18 14 18 1 + 19 14 19 2 + 20 15 17 1 + 21 15 18 1 + 22 15 20 1 + 23 17 18 1 + 24 17 21 1 + 25 18 22 1 + 26 19 23 1 + 27 19 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3,7,9-TRIMETHYLENE-TETRACYCLO(3.3.1.0-2,8-.0-4,6-)NONANE TR +@MOLECULE +VETWAS + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.6598 3.6820 0.0948 C.2 1 UNCH 0.1865 + 2 C2 3.7471 2.4466 1.5573 C.2 1 UNCH -0.0716 + 3 C3 2.6505 1.7793 1.0899 C.2 1 UNCH 0.3062 + 4 N1 3.7683 3.6483 0.9061 N.3 1 UNCH 0.0332 + 5 N2 1.9610 2.5656 0.1736 N.2 1 UNCH -0.5653 + 6 N3 4.7128 2.1183 2.5273 N.2 1 UNCH 0.9600 + 7 N4 2.2150 0.4452 1.3852 N.2 1 UNCH 0.9610 + 8 O1 4.4063 1.2584 3.3534 O.3 1 UNCH -0.5200 + 9 O2 5.7611 2.7705 2.4878 O.2 1 UNCH -0.5200 + 10 O3 1.0093 0.2889 1.6103 O.3 1 UNCH -0.5200 + 11 O4 3.0811 -0.4370 1.3543 O.2 1 UNCH -0.5200 + 12 H1 4.4549 4.3890 1.0068 H 1 UNCH 0.2700 + 13 C1B 2.3318 4.7960 -0.7236 C.2 1 UNCH 0.1865 + 14 N1B 1.2233 4.8297 -1.5349 N.3 1 UNCH 0.0332 + 15 N2B 3.0306 5.9124 -0.8024 N.2 1 UNCH -0.5653 + 16 C2B 1.2444 6.0314 -2.1861 C.2 1 UNCH -0.0716 + 17 H1B 0.5367 4.0890 -1.6356 H 1 UNCH 0.2700 + 18 C3B 2.3411 6.6987 -1.7187 C.2 1 UNCH 0.3062 + 19 N3B 0.2788 6.3597 -3.1561 N.2 1 UNCH 0.9600 + 20 N4B 2.7765 8.0328 -2.0140 N.2 1 UNCH 0.9610 + 21 O1B 0.5853 7.2196 -3.9822 O.3 1 UNCH -0.5200 + 22 O2B -0.7695 5.7076 -3.1166 O.2 1 UNCH -0.5200 + 23 O3B 3.9823 8.1891 -2.2391 O.3 1 UNCH -0.5200 + 24 O4B 1.9104 8.9150 -1.9831 O.2 1 UNCH -0.5200 +@BOND + 1 1 4 am + 2 1 5 2 + 3 1 13 1 + 4 2 3 2 + 5 2 4 1 + 6 2 6 1 + 7 3 5 1 + 8 3 7 1 + 9 4 12 1 + 10 6 8 1 + 11 6 9 2 + 12 7 10 1 + 13 7 11 2 + 14 13 14 am + 15 13 15 2 + 16 14 16 1 + 17 14 17 1 + 18 15 18 1 + 19 16 18 2 + 20 16 19 1 + 21 18 20 1 + 22 19 21 1 + 23 19 22 2 + 24 20 23 1 + 25 20 24 2 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,4',5,5'-TETRANITRO-2,2'-BI-IMIDAZOLE DIHYDRATE +@MOLECULE +VEVDIJ + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -0.2197 2.9275 7.0232 CL 1 VEVD -0.2273 + 2 CL2 1.7192 1.5484 5.3414 CL 1 VEVD -0.2273 + 3 O1 -1.5632 -1.7791 8.9984 O.2 1 VEVD -0.7000 + 4 C1 0.6596 0.2947 7.6709 C.3 1 VEVD -0.1900 + 5 C2 0.0081 0.4409 9.0373 C.3 1 VEVD 0.0950 + 6 P1 -1.6397 -0.2830 8.8037 P 1 VEVD 0.8390 + 7 C3 -1.7852 0.0895 7.0357 C.3 1 VEVD 0.0950 + 8 C4 -0.3623 0.1392 6.5576 C.3 1 VEVD -0.1950 + 9 C5 0.5012 1.3776 6.6095 C.3 1 VEVD 0.4546 + 10 C6 1.8570 -0.6201 7.6615 C.3 1 VEVD 0.0950 + 11 C7 -2.8573 0.5711 9.7476 C.2 1 VEVD -0.1390 + 12 C8 -3.6773 -0.1525 10.6249 C.2 1 VEVD -0.1500 + 13 C9 -4.6522 0.4901 11.3889 C.2 1 VEVD -0.1500 + 14 C10 -4.8197 1.8683 11.2848 C.2 1 VEVD -0.1500 + 15 C11 -4.0131 2.6016 10.4178 C.2 1 VEVD -0.1500 + 16 C12 -3.0379 1.9566 9.6539 C.2 1 VEVD -0.1500 + 17 H1 -0.0487 1.4843 9.3558 H 1 VEVD 0.0000 + 18 H2 0.5419 -0.1110 9.8176 H 1 VEVD 0.0000 + 19 H3 -2.3433 -0.7082 6.5361 H 1 VEVD 0.0000 + 20 H4 -2.3102 1.0307 6.8567 H 1 VEVD 0.0000 + 21 H5 -0.1725 -0.5898 5.7784 H 1 VEVD 0.1000 + 22 H6 1.6359 -1.5448 8.2059 H 1 VEVD 0.0000 + 23 H7 2.1618 -0.9119 6.6517 H 1 VEVD 0.0000 + 24 H8 2.7063 -0.1309 8.1491 H 1 VEVD 0.0000 + 25 H9 -3.5533 -1.2317 10.7128 H 1 VEVD 0.1500 + 26 H10 -5.2794 -0.0864 12.0642 H 1 VEVD 0.1500 + 27 H11 -5.5787 2.3704 11.8792 H 1 VEVD 0.1500 + 28 H12 -4.1440 3.6780 10.3364 H 1 VEVD 0.1500 + 29 H13 -2.4229 2.5526 8.9858 H 1 VEVD 0.1500 +@BOND + 1 1 9 1 + 2 2 9 1 + 3 3 6 2 + 4 4 5 1 + 5 4 8 1 + 6 4 9 1 + 7 4 10 1 + 8 5 6 1 + 9 5 17 1 + 10 5 18 1 + 11 6 7 1 + 12 6 11 1 + 13 7 8 1 + 14 7 19 1 + 15 7 20 1 + 16 8 9 1 + 17 8 21 1 + 18 10 22 1 + 19 10 23 1 + 20 10 24 1 + 21 11 12 2 + 22 11 16 1 + 23 12 13 1 + 24 12 25 1 + 25 13 14 2 + 26 13 26 1 + 27 14 15 1 + 28 14 27 1 + 29 15 16 2 + 30 15 28 1 + 31 16 29 1 +@SUBSTRUCTURE + 1 VEVD 1 +@COMMENT +COMMENT 6,6-DICHLORO-5-METHYL-3-PHENYL-3-PHOSPHALAMBDA-5--BICYCLO(3 +@MOLECULE +VEWZOM + 31 33 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 7.8913 3.8932 10.8662 C.2 1 VEWZ 0.0365 + 2 N1 7.2108 3.5204 11.9331 N.2 1 VEWZ -0.3381 + 3 N2 5.8661 3.6528 11.6577 N.2 1 VEWZ -0.3381 + 4 C2 5.7839 4.1021 10.4303 C.2 1 VEWZ 0.1115 + 5 C3 4.5971 4.4042 9.6792 C.2 1 VEWZ 0.7838 + 6 N3 3.4471 4.2037 10.3021 N.3 1 VEWZ -0.7939 + 7 C4 2.0941 4.4208 9.7721 C.3 1 VEWZ 0.4895 + 8 C5 1.7121 5.8745 10.0044 C.3 1 VEWZ 0.0000 + 9 C6 1.1428 3.4706 10.4851 C.3 1 VEWZ 0.0000 + 10 N4 4.7475 4.8562 8.4359 N.2 1 VEWZ -0.6534 + 11 C7 5.9942 5.0299 7.8803 C.2 1 VEWZ 0.3490 + 12 C8 6.1019 5.5073 6.5709 C.2 1 VEWZ -0.1500 + 13 C9 7.3618 5.6903 5.9888 C.2 1 VEWZ -0.1500 + 14 C10 8.5153 5.3972 6.7130 C.2 1 VEWZ 0.1900 + 15 F1 9.7116 5.5772 6.1434 F 1 VEWZ -0.1900 + 16 C11 8.4473 4.9212 8.0167 C.2 1 VEWZ -0.1500 + 17 C12 7.1864 4.7428 8.5860 C.2 1 VEWZ -0.0230 + 18 N5 7.0203 4.2702 9.8897 N.3 1 VEWZ 0.3262 + 19 H1 8.9692 3.9003 10.7766 H 1 VEWZ 0.1500 + 20 H2 3.5487 3.8617 11.2621 H 1 VEWZ 0.4500 + 21 H3 2.0882 4.1949 8.7004 H 1 VEWZ 0.0000 + 22 H4 1.7448 6.1273 11.0699 H 1 VEWZ 0.0000 + 23 H5 0.7026 6.0781 9.6334 H 1 VEWZ 0.0000 + 24 H6 2.4062 6.5454 9.4874 H 1 VEWZ 0.0000 + 25 H7 0.1207 3.5864 10.1109 H 1 VEWZ 0.0000 + 26 H8 1.1353 3.6510 11.5656 H 1 VEWZ 0.0000 + 27 H9 1.4490 2.4309 10.3279 H 1 VEWZ 0.0000 + 28 H10 3.9267 5.0801 7.8902 H 1 VEWZ 0.4500 + 29 H11 5.2188 5.7442 5.9823 H 1 VEWZ 0.1500 + 30 H12 7.4557 6.0614 4.9701 H 1 VEWZ 0.1500 + 31 H13 9.3755 4.7078 8.5386 H 1 VEWZ 0.1500 +@BOND + 1 1 19 1 + 2 1 18 am + 3 1 2 2 + 4 2 3 1 + 5 3 4 2 + 6 4 18 am + 7 4 5 1 + 8 5 10 2 + 9 5 6 am + 10 6 20 1 + 11 6 7 1 + 12 7 21 1 + 13 7 9 1 + 14 7 8 1 + 15 8 24 1 + 16 8 23 1 + 17 8 22 1 + 18 9 27 1 + 19 9 26 1 + 20 9 25 1 + 21 10 28 1 + 22 10 11 1 + 23 11 17 1 + 24 11 12 2 + 25 12 29 1 + 26 12 13 1 + 27 13 30 1 + 28 13 14 2 + 29 14 16 1 + 30 14 15 1 + 31 16 31 1 + 32 16 17 2 + 33 17 18 1 +@SUBSTRUCTURE + 1 VEWZ 1 +@COMMENT +COMMENT 8-FLUORO-4-ISOPROPYLAMINO(1,2,4)TRIAZOLO(4,3-A)QUINOXALINE +@MOLECULE +VEXKOY + 21 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 11.9739 2.4492 -1.2540 N.2 1 VEXK -0.5660 + 2 C1 10.9216 2.6872 -0.4271 C.2 1 VEXK 0.2560 + 3 C2 11.0596 2.8569 0.9453 C.2 1 VEXK 0.1400 + 4 C3 12.2889 2.7971 1.5867 C.2 1 VEXK -0.1500 + 5 C4 13.3786 2.5531 0.7489 C.2 1 VEXK -0.1500 + 6 C5 13.1757 2.3910 -0.6251 C.2 1 VEXK 0.3830 + 7 C6 14.3013 2.1397 -1.4854 C.1 1 VEXK 0.4841 + 8 N2 15.2372 1.9384 -2.1445 N.1 1 VEXK -0.5571 + 9 O1 9.8503 3.0801 1.5248 O.3 1 VEXK -0.2800 + 10 C7 9.5366 2.8146 -0.7077 C.2 1 VEXK 0.0000 + 11 C8 8.7305 2.7547 -1.8595 C.2 1 VEXK -0.1500 + 12 C9 7.3473 2.9383 -1.7242 C.2 1 VEXK -0.1500 + 13 C10 6.7720 3.1769 -0.4730 C.2 1 VEXK -0.1500 + 14 C11 7.5550 3.2404 0.6848 C.2 1 VEXK -0.1500 + 15 C12 8.9262 3.0543 0.5210 C.2 1 VEXK 0.1400 + 16 H1 12.3856 2.9307 2.6566 H 1 VEXK 0.1500 + 17 H2 14.3790 2.4908 1.1706 H 1 VEXK 0.1500 + 18 H3 9.1739 2.5695 -2.8340 H 1 VEXK 0.1500 + 19 H4 6.7138 2.8941 -2.6081 H 1 VEXK 0.1500 + 20 H5 5.6952 3.3159 -0.3966 H 1 VEXK 0.1500 + 21 H6 7.1227 3.4245 1.6610 H 1 VEXK 0.1500 +@BOND + 1 1 6 1 + 2 1 2 2 + 3 2 10 1 + 4 2 3 1 + 5 3 9 1 + 6 3 4 2 + 7 4 16 1 + 8 4 5 1 + 9 5 17 1 + 10 5 6 2 + 11 6 7 1 + 12 7 8 3 + 13 9 15 1 + 14 10 15 1 + 15 10 11 2 + 16 11 18 1 + 17 11 12 1 + 18 12 19 1 + 19 12 13 2 + 20 13 20 1 + 21 13 14 1 + 22 14 21 1 + 23 14 15 2 +@SUBSTRUCTURE + 1 VEXK 1 +@COMMENT +COMMENT 3-CYANO-4-AZADIBENZOFURAN +@MOLECULE +VEXMOA + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 7.6664 3.1350 4.2429 N.2 1 UNCH -0.5130 + 2 C1 8.0451 2.2151 5.0884 C.2 1 UNCH 0.2776 + 3 C2 7.0078 1.5247 5.9296 C.2 1 UNCH 0.3962 + 4 C3 7.1884 0.2202 6.3835 C.2 1 UNCH -0.1500 + 5 C4 6.1856 -0.3594 7.1579 C.2 1 UNCH -0.1500 + 6 C5 5.0406 0.3723 7.4505 C.2 1 UNCH -0.1500 + 7 C6 4.9412 1.6611 6.9540 C.2 1 UNCH 0.1600 + 8 N2 5.8948 2.2520 6.2048 N.2 1 UNCH -0.6200 + 9 C7 9.4619 1.7995 5.2753 C.2 1 UNCH 0.0862 + 10 C8 10.0866 2.0056 6.5097 C.2 1 UNCH -0.1500 + 11 C9 11.4029 1.5815 6.6931 C.2 1 UNCH -0.1500 + 12 C10 12.0879 0.9573 5.6484 C.2 1 UNCH -0.1500 + 13 C11 11.4628 0.7589 4.4156 C.2 1 UNCH -0.1500 + 14 C12 10.1471 1.1803 4.2254 C.2 1 UNCH -0.1500 + 15 O1 8.7401 3.7190 3.5612 O.3 1 UNCH -0.3370 + 16 H1 8.0758 -0.3522 6.1381 H 1 UNCH 0.1500 + 17 H2 6.2953 -1.3763 7.5244 H 1 UNCH 0.1500 + 18 H3 4.2411 -0.0525 8.0476 H 1 UNCH 0.1500 + 19 H4 4.0647 2.2722 7.1506 H 1 UNCH 0.1500 + 20 H5 9.5599 2.5039 7.3196 H 1 UNCH 0.1500 + 21 H6 11.8985 1.7444 7.6469 H 1 UNCH 0.1500 + 22 H7 13.1161 0.6336 5.7921 H 1 UNCH 0.1500 + 23 H8 12.0036 0.2835 3.6013 H 1 UNCH 0.1500 + 24 H9 9.6599 1.0376 3.2642 H 1 UNCH 0.1500 + 25 H10 8.2955 4.4161 3.0449 H 1 UNCH 0.4000 +@BOND + 1 1 2 2 + 2 1 15 1 + 3 2 3 1 + 4 2 9 1 + 5 3 4 2 + 6 3 8 1 + 7 4 5 1 + 8 4 16 1 + 9 5 6 2 + 10 5 17 1 + 11 6 7 1 + 12 6 18 1 + 13 7 8 2 + 14 7 19 1 + 15 9 10 2 + 16 9 14 1 + 17 10 11 1 + 18 10 20 1 + 19 11 12 2 + 20 11 21 1 + 21 12 13 1 + 22 12 22 1 + 23 13 14 2 + 24 13 23 1 + 25 14 24 1 + 26 15 25 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-PHENYL 2-PYRIDYL KETONE OXIME +@MOLECULE +VEYBIK + 24 24 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 10.1554 4.0578 2.7697 SI 1 UNCH 0.7558 + 2 SI2 12.5008 4.6607 4.6252 SI 1 UNCH 0.7558 + 3 O1 10.8904 4.6990 4.1406 O.3 1 UNCH -0.5948 + 4 O2 8.7178 3.3772 3.2562 O.3 1 UNCH -0.6974 + 5 O3 13.1557 6.1377 4.2235 O.3 1 UNCH -0.6974 + 6 C1 11.3537 2.7330 2.0737 C.3 1 UNCH -0.0805 + 7 C2 12.8443 3.1091 2.1809 C.3 1 UNCH 0.0000 + 8 C3 13.3423 3.2520 3.6321 C.3 1 UNCH -0.0805 + 9 C4 9.8859 5.3792 1.4802 C.3 1 UNCH -0.0805 + 10 C5 12.6602 4.3189 6.4489 C.3 1 UNCH -0.0805 + 11 H1 8.2151 3.8953 3.9045 H 1 UNCH 0.4000 + 12 H2 12.6525 6.9107 4.5249 H 1 UNCH 0.4000 + 13 H3 11.1742 1.7964 2.6144 H 1 UNCH 0.0000 + 14 H4 11.0939 2.5580 1.0238 H 1 UNCH 0.0000 + 15 H9 13.0392 4.0353 1.6245 H 1 UNCH 0.0000 + 16 H10 13.4319 2.3209 1.6939 H 1 UNCH 0.0000 + 17 H11 13.1732 2.3111 4.1687 H 1 UNCH 0.0000 + 18 H12 14.4221 3.4378 3.6323 H 1 UNCH 0.0000 + 19 H13 9.2358 6.1705 1.8653 H 1 UNCH 0.0000 + 20 H14 9.4167 4.9597 0.5854 H 1 UNCH 0.0000 + 21 H15 10.8354 5.8349 1.1838 H 1 UNCH 0.0000 + 22 H16 12.2051 3.3581 6.7073 H 1 UNCH 0.0000 + 23 H17 12.1633 5.0971 7.0360 H 1 UNCH 0.0000 + 24 H18 13.7116 4.2875 6.7497 H 1 UNCH 0.0000 +@BOND + 1 1 3 1 + 2 1 4 1 + 3 1 6 1 + 4 1 9 1 + 5 2 3 1 + 6 2 5 1 + 7 2 8 1 + 8 2 10 1 + 9 4 11 1 + 10 5 12 1 + 11 6 7 1 + 12 6 13 1 + 13 6 14 1 + 14 7 8 1 + 15 7 15 1 + 16 7 16 1 + 17 8 17 1 + 18 8 18 1 + 19 9 19 1 + 20 9 20 1 + 21 9 21 1 + 22 10 22 1 + 23 10 23 1 + 24 10 24 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,6-DIHYDROXY-2,6-DIMETHYL-2,6-DISILA-1-OXACYCLOHEXANE +@MOLECULE +VEYWAX + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 3.6818 1.1947 3.8865 CL 1 VEYW -0.2090 + 2 O1 1.4242 -1.6791 2.6722 O.3 1 VEYW -0.3370 + 3 O2 2.6002 -1.7720 7.0134 O.3 1 VEYW -0.3370 + 4 N1 2.1227 -0.4642 2.6279 N.2 1 VEYW -0.5130 + 5 N2 2.5329 -0.7032 6.1109 N.2 1 VEYW -0.5130 + 6 C1 2.7503 -0.2309 3.7401 C.2 1 VEYW 0.6590 + 7 C2 2.7552 -1.1513 4.9174 C.2 1 VEYW 0.3900 + 8 H1 0.9718 -1.6948 1.8057 H 1 VEYW 0.4000 + 9 H2 2.4133 -1.3396 7.8688 H 1 VEYW 0.4000 + 10 H3 2.9576 -2.2102 4.6874 H 1 VEYW 0.0600 +@BOND + 1 1 6 1 + 2 2 8 1 + 3 2 4 1 + 4 3 9 1 + 5 3 5 1 + 6 4 6 2 + 7 5 7 2 + 8 6 7 1 + 9 7 10 1 +@SUBSTRUCTURE + 1 VEYW 1 +@COMMENT +COMMENT AMPHI-CHLOROGLYOXIME MONOHYDRATE +@MOLECULE +VEZBUX + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 0.8143 1.1643 7.9447 CL 1 UNCH -0.2900 + 2 P1 -1.9695 1.6848 7.0697 P 1 UNCH 0.8390 + 3 O1 -2.0072 2.8503 9.4121 O.3 1 UNCH -0.3625 + 4 O2 -2.8863 1.8150 5.8794 O.2 1 UNCH -0.7000 + 5 C1 -1.8585 3.2109 8.0112 C.3 1 UNCH 0.2800 + 6 C2 -0.3047 1.2821 6.5803 C.3 1 UNCH 0.2900 + 7 C3 -2.5211 0.7525 8.4112 C.2 1 UNCH -0.1390 + 8 C4 -2.4599 1.5577 9.5462 C.2 1 UNCH 0.0825 + 9 C5 -2.8227 1.0592 10.7851 C.2 1 UNCH -0.1500 + 10 C6 -3.2691 -0.2618 10.8715 C.2 1 UNCH -0.1500 + 11 C7 -3.3446 -1.0642 9.7237 C.2 1 UNCH -0.1500 + 12 C8 -2.9683 -0.5562 8.4796 C.2 1 UNCH -0.1500 + 13 H1 -0.9072 3.7328 7.8803 H 1 UNCH 0.0000 + 14 H2 -2.6778 3.8907 7.7578 H 1 UNCH 0.0000 + 15 H3 -0.2912 0.3203 6.0602 H 1 UNCH 0.0000 + 16 H4 0.0831 2.0424 5.8967 H 1 UNCH 0.0000 + 17 H5 -2.7644 1.6837 11.6708 H 1 UNCH 0.1500 + 18 H6 -3.5631 -0.6700 11.8356 H 1 UNCH 0.1500 + 19 H7 -3.7006 -2.0888 9.8058 H 1 UNCH 0.1500 + 20 H8 -3.0309 -1.1712 7.5870 H 1 UNCH 0.1500 +@BOND + 1 1 6 1 + 2 2 4 2 + 3 2 5 1 + 4 2 6 1 + 5 2 7 1 + 6 3 5 1 + 7 3 8 1 + 8 5 13 1 + 9 5 14 1 + 10 6 15 1 + 11 6 16 1 + 12 7 8 2 + 13 7 12 1 + 14 8 9 1 + 15 9 10 2 + 16 9 17 1 + 17 10 11 1 + 18 10 18 1 + 19 11 12 2 + 20 11 19 1 + 21 12 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 3-OXO-3-CHLOROMETHYL-2,3-DIHYDRO-1,3-BENZOXAPHOSPHOLE +@MOLECULE +VICGAP + 31 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 4.3725 3.7900 5.8399 N.3 1 UNCH -0.4391 + 2 C1 6.6381 3.6570 5.6891 C.2 1 UNCH 0.8410 + 3 C2 4.9473 2.9094 6.7231 C.2 1 UNCH 0.5500 + 4 O1 7.7718 3.7264 5.2363 O.2 1 UNCH -0.5700 + 5 C3 3.3471 4.7343 6.3164 C.3 1 UNCH 0.6491 + 6 C4 2.9096 6.7874 7.3932 C.3 1 UNCH 0.2800 + 7 C5 3.8028 7.9249 5.2851 C.3 1 UNCH 0.2800 + 8 O2 1.6202 6.4979 7.9641 O.3 1 UNCH -0.6800 + 9 O3 5.1192 7.6234 5.7368 O.3 1 UNCH -0.6800 + 10 H1 5.3535 3.7083 3.2457 H 1 UNCH 0.0000 + 11 H2 3.3357 1.8434 7.1705 H 1 UNCH 0.4000 + 12 H3 2.4528 4.1518 6.5722 H 1 UNCH 0.0000 + 13 H4 3.2967 7.6682 7.9134 H 1 UNCH 0.0000 + 14 H5 3.7979 7.8531 4.1926 H 1 UNCH 0.0000 + 15 H6 3.9990 4.0639 8.7703 H 1 UNCH 0.4000 + 16 H7 5.7330 8.1930 5.2393 H 1 UNCH 0.4000 + 17 N2 5.5268 4.3599 5.2125 N.3 1 UNCH -0.3401 + 18 N3 6.2397 2.8095 6.7022 N.2 1 UNCH -0.6610 + 19 C6 5.4584 4.6463 3.8002 C.3 1 UNCH 0.3001 + 20 N4 4.1600 2.2492 7.6051 N.3 1 UNCH -0.8500 + 21 C7 3.7924 5.5620 7.5336 C.3 1 UNCH 0.2800 + 22 C8 2.7724 6.9614 5.8838 C.3 1 UNCH 0.2800 + 23 O4 3.5445 4.9313 8.8003 O.3 1 UNCH -0.6800 + 24 O5 2.9474 5.6539 5.2841 O.3 1 UNCH -0.5600 + 25 H8 4.6229 5.3088 3.5734 H 1 UNCH 0.0000 + 26 H9 6.3875 5.1310 3.4847 H 1 UNCH 0.0000 + 27 H10 4.6947 1.5179 8.0719 H 1 UNCH 0.4000 + 28 H11 4.8517 5.8320 7.4834 H 1 UNCH 0.0000 + 29 H12 1.7680 7.3009 5.6074 H 1 UNCH 0.0000 + 30 H13 3.5746 8.9539 5.5795 H 1 UNCH 0.0000 + 31 H14 1.8216 6.0324 8.8040 H 1 UNCH 0.4000 +@BOND + 1 1 3 am + 2 1 5 1 + 3 1 17 1 + 4 2 4 2 + 5 2 17 am + 6 2 18 am + 7 3 18 2 + 8 3 20 am + 9 5 12 1 + 10 5 21 1 + 11 5 24 1 + 12 6 8 1 + 13 6 13 1 + 14 6 21 1 + 15 6 22 1 + 16 7 9 1 + 17 7 14 1 + 18 7 22 1 + 19 7 30 1 + 20 8 31 1 + 21 9 16 1 + 22 10 19 1 + 23 11 20 1 + 24 15 23 1 + 25 17 19 1 + 26 19 25 1 + 27 19 26 1 + 28 20 27 1 + 29 21 23 1 + 30 21 28 1 + 31 22 24 1 + 32 22 29 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 5-AMINO-2-METHYL-1-(BETA-D-RIBOFURANOSYL)-1,2,4-TRIAZOLIN-3 +@MOLECULE +VICGET + 35 37 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 3.0787 8.7638 6.3636 N.2 1 VICG -0.6200 + 2 C1 2.1193 8.7039 5.4304 C.2 1 VICG 0.7200 + 3 N2 2.1202 7.9459 4.3233 N.2 1 VICG -0.5670 + 4 C2 3.2438 7.2218 4.1967 C.2 1 VICG 0.1054 + 5 C3 4.3157 7.1792 5.0709 C.2 1 VICG 0.2272 + 6 C4 4.1865 7.9871 6.1899 C.2 1 VICG 0.3740 + 7 N3 5.2878 6.3237 4.6061 N.2 1 VICG -0.5653 + 8 C5 4.8088 5.8466 3.4743 C.2 1 VICG 0.0365 + 9 N4 3.5757 6.3636 3.1823 N.3 1 VICG 0.0476 + 10 N5 1.0002 9.4795 5.6516 N.3 1 VICG -0.9000 + 11 S1 5.4380 8.0692 7.4644 S.2 1 VICG 0.4980 + 12 O1 4.9950 7.1112 8.5300 O.2 1 VICG -0.5000 + 13 N6 5.1004 9.6432 7.9276 N.3 1 VICG -0.7820 + 14 C6 2.7401 6.0909 2.0255 C.3 1 VICG 0.5356 + 15 C7 1.6288 5.0861 2.2926 C.3 1 VICG 0.0000 + 16 C8 2.2277 3.7848 1.8199 C.3 1 VICG 0.2800 + 17 C9 3.1846 4.2019 0.7025 C.3 1 VICG 0.2800 + 18 C10 2.5648 4.1134 -0.6946 C.3 1 VICG 0.2800 + 19 O2 2.9782 3.2089 2.8911 O.3 1 VICG -0.6800 + 20 O3 3.5525 5.5804 0.9496 O.3 1 VICG -0.5600 + 21 O4 1.4410 4.9817 -0.8196 O.3 1 VICG -0.6800 + 22 H1 5.3074 5.1286 2.8345 H 1 VICG 0.1500 + 23 H2 0.2033 9.0962 5.1629 H 1 VICG 0.4000 + 24 H3 0.8882 9.6594 6.6399 H 1 VICG 0.4000 + 25 H4 4.9816 9.7328 8.9340 H 1 VICG 0.3600 + 26 H5 4.2252 9.9997 7.5360 H 1 VICG 0.3600 + 27 H6 2.3320 7.0552 1.7017 H 1 VICG 0.0000 + 28 H7 0.7620 5.3367 1.6709 H 1 VICG 0.0000 + 29 H8 1.3022 5.0683 3.3372 H 1 VICG 0.0000 + 30 H9 1.4854 3.0468 1.5022 H 1 VICG 0.0000 + 31 H10 4.1038 3.6058 0.7238 H 1 VICG 0.0000 + 32 H12 3.2938 4.4071 -1.4574 H 1 VICG 0.0000 + 33 H13 2.3500 2.9056 3.5715 H 1 VICG 0.4000 + 34 H14 1.8062 5.8851 -0.8685 H 1 VICG 0.4000 + 35 H11 2.2352 3.0923 -0.9088 H 1 VICG 0.0000 +@BOND + 1 1 6 2 + 2 1 2 am + 3 2 10 am + 4 2 3 2 + 5 3 4 1 + 6 4 9 1 + 7 4 5 2 + 8 5 7 1 + 9 5 6 1 + 10 6 11 1 + 11 7 8 2 + 12 8 22 1 + 13 8 9 am + 14 9 14 1 + 15 10 24 1 + 16 10 23 1 + 17 11 13 1 + 18 11 12 2 + 19 13 26 1 + 20 13 25 1 + 21 14 27 1 + 22 14 20 1 + 23 14 15 1 + 24 15 29 1 + 25 15 28 1 + 26 15 16 1 + 27 16 30 1 + 28 16 19 1 + 29 16 17 1 + 30 17 31 1 + 31 17 20 1 + 32 17 18 1 + 33 18 35 1 + 34 18 32 1 + 35 18 21 1 + 36 19 33 1 + 37 21 34 1 +@SUBSTRUCTURE + 1 VICG 1 +@COMMENT +COMMENT (S)-2-AMINO-9-(2-DEOXY-ALPHA-D-ERYTHRO-PENTOFURANOSYL)PURIN +@MOLECULE +VICKIB + 27 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.4350 2.8580 2.4039 CL 1 VICK -0.2090 + 2 S1 5.1559 2.3110 1.6325 S.1 1 VICK 0.1810 + 3 O1 4.9748 3.4877 0.7374 O.2 1 VICK -0.5000 + 4 O2 1.9139 -0.3173 2.5741 O.2 1 VICK -0.5700 + 5 C1 3.8557 1.9073 2.5473 C.2 1 VICK 0.4670 + 6 C2 3.8848 0.7666 3.5376 C.3 1 VICK 0.1220 + 7 C3 2.6561 -0.1379 3.5264 C.2 1 VICK 0.4480 + 8 C4 2.5372 -0.8506 4.8584 C.3 1 VICK 0.0610 + 9 C5 3.8430 -0.3354 5.5092 C.3 1 VICK 0.0000 + 10 C6 5.0187 -1.0080 4.7666 C.3 1 VICK 0.0000 + 11 C7 5.0354 -0.2778 3.4063 C.3 1 VICK 0.0000 + 12 C8 3.9331 1.1486 5.0516 C.3 1 VICK 0.0000 + 13 C9 2.7640 2.0031 5.5832 C.3 1 VICK 0.0000 + 14 C10 5.2293 1.8567 5.4936 C.3 1 VICK 0.0000 + 15 H1 2.5320 -1.9349 4.7254 H 1 VICK 0.0000 + 16 H2 1.6426 -0.5212 5.3908 H 1 VICK 0.0000 + 17 H3 3.8721 -0.4957 6.5898 H 1 VICK 0.0000 + 18 H4 4.8774 -2.0872 4.6455 H 1 VICK 0.0000 + 19 H5 5.9642 -0.8598 5.2989 H 1 VICK 0.0000 + 20 H6 4.8609 -0.9823 2.5837 H 1 VICK 0.0000 + 21 H7 6.0204 0.1710 3.2444 H 1 VICK 0.0000 + 22 H8 1.7852 1.7035 5.1989 H 1 VICK 0.0000 + 23 H9 2.7170 1.9436 6.6768 H 1 VICK 0.0000 + 24 H10 2.8966 3.0589 5.3223 H 1 VICK 0.0000 + 25 H11 6.1473 1.3670 5.1616 H 1 VICK 0.0000 + 26 H12 5.2628 2.8798 5.1019 H 1 VICK 0.0000 + 27 H13 5.2767 1.9171 6.5870 H 1 VICK 0.0000 +@BOND + 1 1 5 1 + 2 2 3 2 + 3 2 5 2 + 4 4 7 2 + 5 5 6 1 + 6 6 7 1 + 7 6 11 1 + 8 6 12 1 + 9 7 8 1 + 10 8 9 1 + 11 8 15 1 + 12 8 16 1 + 13 9 10 1 + 14 9 12 1 + 15 9 17 1 + 16 10 11 1 + 17 10 18 1 + 18 10 19 1 + 19 11 20 1 + 20 11 21 1 + 21 12 13 1 + 22 12 14 1 + 23 13 22 1 + 24 13 23 1 + 25 13 24 1 + 26 14 25 1 + 27 14 26 1 + 28 14 27 1 +@SUBSTRUCTURE + 1 VICK 1 +@COMMENT +COMMENT 10-CHLORO-10-SULFINYLCAMPHOR (ABSOLUTE CONFIGURATION) +@MOLECULE +VICPOM + 26 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 0.7338 6.6848 2.1236 O.3 1 VICP -0.2800 + 2 N1 -1.8185 3.5593 2.0505 N.2 1 VICP -0.6200 + 3 N2 -1.3184 1.7352 0.6175 N.2 1 VICP -0.1250 + 4 N3 -0.2145 4.4652 3.5790 N.3 1 VICP -0.8691 + 5 N4 1.5991 2.2490 2.4155 N.3 1 VICP 0.0332 + 6 N5 0.9472 0.8321 0.8257 N.2 1 VICP -0.5653 + 7 C1 -2.1341 2.6603 1.0973 C.2 1 VICP 0.5210 + 8 C2 -0.0604 1.6892 1.1395 C.2 1 VICP 0.5342 + 9 C3 0.3035 2.5944 2.1176 C.2 1 VICP -0.1516 + 10 C4 -0.5727 3.5655 2.5889 C.2 1 VICP 0.4100 + 11 C5 1.9406 1.1904 1.6127 C.2 1 VICP 0.0365 + 12 C6 -0.9549 5.7318 3.5988 C.3 1 VICP 0.5491 + 13 C7 -0.5774 6.6863 2.5142 C.2 1 VICP -0.0400 + 14 C8 -1.2839 7.6205 1.7857 C.2 1 VICP -0.1500 + 15 C9 -0.3544 8.2279 0.9074 C.2 1 VICP -0.1500 + 16 C10 0.8578 7.6276 1.1538 C.2 1 VICP -0.0100 + 17 H1 -1.5937 1.0743 -0.0992 H 1 VICP 0.4570 + 18 H2 0.7822 4.6565 3.6091 H 1 VICP 0.4000 + 19 H3 2.1946 2.6847 3.1097 H 1 VICP 0.2700 + 20 H4 -3.1401 2.6969 0.6913 H 1 VICP 0.1500 + 21 H5 2.9214 0.7286 1.6532 H 1 VICP 0.1500 + 22 H6 -2.0380 5.5575 3.5999 H 1 VICP 0.0000 + 23 H7 -0.7338 6.2199 4.5560 H 1 VICP 0.0000 + 24 H8 -2.3374 7.8456 1.8838 H 1 VICP 0.1500 + 25 H9 -0.5407 9.0159 0.1902 H 1 VICP 0.1500 + 26 H10 1.8519 7.7577 0.7478 H 1 VICP 0.1500 +@BOND + 1 1 16 1 + 2 1 13 1 + 3 2 10 2 + 4 2 7 am + 5 3 17 1 + 6 3 8 1 + 7 3 7 2 + 8 4 18 1 + 9 4 12 1 + 10 4 10 am + 11 5 19 1 + 12 5 11 am + 13 5 9 1 + 14 6 11 2 + 15 6 8 1 + 16 7 20 1 + 17 8 9 2 + 18 9 10 1 + 19 11 21 1 + 20 12 23 1 + 21 12 22 1 + 22 12 13 1 + 23 13 14 2 + 24 14 24 1 + 25 14 15 1 + 26 15 25 1 + 27 15 16 2 + 28 16 26 1 +@SUBSTRUCTURE + 1 VICP 1 +@COMMENT +COMMENT 6-FURFURYLPURINE PICRATE KINETIN PICRATE +@MOLECULE +VIDKUO + 21 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.5054 0.0930 10.0847 N.3 1 CHGB -0.5880 + 2 N2 -0.7340 1.4471 10.5769 N.2 1 CHGB -0.2650 + 3 C1 -1.7161 1.9323 9.8798 C.2 1 CHGB 0.3280 + 4 C2 -2.3130 1.0153 8.8555 C.3 1 CHGB 0.0610 + 5 C3 -1.2675 -0.0981 8.7939 C.3 1 CHGB 0.5030 + 6 C4 -2.2665 3.3027 10.0985 C.3 1 CHGB 0.0610 + 7 C5 -1.8813 -1.4930 8.7842 C.3 1 CHGB 0.0000 + 8 C6 -0.2906 0.0930 7.6322 C.3 1 CHGB 0.0000 + 9 H1 0.5118 -0.0537 9.9697 H 1 CHGB 0.4500 + 10 H2 -0.8013 -0.5717 10.8199 H 1 CHGB 0.4500 + 11 H3 -3.2838 0.6702 9.2258 H 1 CHGB 0.0000 + 12 H4 -2.4528 1.5329 7.9026 H 1 CHGB 0.0000 + 13 H5 -3.3048 3.2257 10.4313 H 1 CHGB 0.0000 + 14 H6 -2.2307 3.8619 9.1600 H 1 CHGB 0.0000 + 15 H7 -1.6834 3.8328 10.8558 H 1 CHGB 0.0000 + 16 H8 -2.4698 -1.6519 7.8740 H 1 CHGB 0.0000 + 17 H9 -2.5476 -1.6456 9.6409 H 1 CHGB 0.0000 + 18 H10 -1.1076 -2.2680 8.8234 H 1 CHGB 0.0000 + 19 H11 -0.8088 0.0027 6.6711 H 1 CHGB 0.0000 + 20 H12 0.5047 -0.6607 7.6535 H 1 CHGB 0.0000 + 21 H13 0.1853 1.0798 7.6614 H 1 CHGB 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 9 1 + 4 1 10 1 + 5 2 3 2 + 6 3 4 1 + 7 3 6 1 + 8 4 5 1 + 9 4 11 1 + 10 4 12 1 + 11 5 7 1 + 12 5 8 1 + 13 6 13 1 + 14 6 14 1 + 15 6 15 1 + 16 7 16 1 + 17 7 17 1 + 18 7 18 1 + 19 8 19 1 + 20 8 20 1 + 21 8 21 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT 4,5-DIHYDRO-3,5,5-TRIMETHYLPYRAZOLIUM CHLORIDE +@MOLECULE +VIFFEV + 25 28 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.6391 9.1295 0.9915 S.3 1 VIFF -0.1090 + 2 N5 1.2628 7.3958 0.8794 N.3 1 VIFF -0.0544 + 3 C7 3.4086 7.9414 0.7464 C.2 1 VIFF 0.0820 + 4 C8 3.2769 6.5996 0.2742 C.2 1 VIFF -0.0130 + 5 C9 4.1697 5.6315 -0.2200 C.2 1 VIFF -0.1500 + 6 C10 3.6691 4.3821 -0.6010 C.2 1 VIFF -0.1500 + 7 C11 2.3088 4.0984 -0.4939 C.2 1 VIFF -0.1500 + 8 C12 1.4074 5.0500 -0.0044 C.2 1 VIFF -0.1500 + 9 C13 1.9176 6.2978 0.3745 C.2 1 VIFF -0.1516 + 10 C14 2.1773 8.3960 1.1046 C.2 1 VIFF -0.0510 + 11 C15 2.1618 9.7343 1.5985 C.2 1 VIFF -0.0130 + 12 C16 1.1008 10.5464 2.0615 C.2 1 VIFF -0.1500 + 13 C17 1.3584 11.8484 2.4996 C.2 1 VIFF -0.1500 + 14 C18 2.6523 12.3517 2.4834 C.2 1 VIFF -0.1500 + 15 C19 3.7160 11.5671 2.0300 C.2 1 VIFF -0.1500 + 16 C20 3.4609 10.2528 1.5871 C.2 1 VIFF 0.0400 + 17 H1 0.2735 7.4879 1.0669 H 1 VIFF 0.2700 + 18 H2 5.2302 5.8490 -0.3049 H 1 VIFF 0.1500 + 19 H3 4.3501 3.6262 -0.9844 H 1 VIFF 0.1500 + 20 H4 1.9403 3.1204 -0.7958 H 1 VIFF 0.1500 + 21 H5 0.3496 4.8210 0.0758 H 1 VIFF 0.1500 + 22 H6 0.0839 10.1645 2.0792 H 1 VIFF 0.1500 + 23 H7 0.5397 12.4697 2.8549 H 1 VIFF 0.1500 + 24 H8 2.8432 13.3660 2.8262 H 1 VIFF 0.1500 + 25 H9 4.7266 11.9662 2.0196 H 1 VIFF 0.1500 +@BOND + 1 1 16 1 + 2 1 3 1 + 3 2 17 1 + 4 2 10 1 + 5 2 9 1 + 6 3 10 2 + 7 3 4 1 + 8 4 9 2 + 9 4 5 1 + 10 5 18 1 + 11 5 6 2 + 12 6 19 1 + 13 6 7 1 + 14 7 20 1 + 15 7 8 2 + 16 8 21 1 + 17 8 9 1 + 18 10 11 1 + 19 11 16 1 + 20 11 12 2 + 21 12 22 1 + 22 12 13 1 + 23 13 23 1 + 24 13 14 2 + 25 14 24 1 + 26 14 15 1 + 27 15 25 1 + 28 15 16 2 +@SUBSTRUCTURE + 1 VIFF 1 +@COMMENT +COMMENT 10H-(1)BENZOTHIENO(3,2-B)INDOLE TETRACYANOETHYLENE +@MOLECULE +VIGPEG + 33 34 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 9.1481 0.7814 6.1946 N.2 1 UNCH -0.7068 + 2 N2 9.3174 1.4310 7.3769 N.3 1 UNCH 0.3140 + 3 C1 8.1733 2.0813 7.7883 C.2 1 UNCH -0.3016 + 4 C2 5.8668 2.2148 6.6606 C.2 1 UNCH 0.7160 + 5 N3 5.3317 1.7166 5.4955 N.3 1 UNCH -0.4900 + 6 C3 6.0429 0.9336 4.6115 C.2 1 UNCH 0.4500 + 7 N4 7.2764 0.5588 4.7249 N.2 1 UNCH -0.5750 + 8 C4 7.8848 1.0369 5.8841 C.2 1 UNCH 0.4138 + 9 C5 7.2308 1.8282 6.8224 C.2 1 UNCH -0.0860 + 10 C6 10.6286 1.3902 8.0762 C.3 1 UNCH 0.2556 + 11 C7 10.3755 0.9486 9.5411 C.3 1 UNCH 0.0000 + 12 C8 11.5326 0.2925 7.4499 C.3 1 UNCH 0.0000 + 13 C9 11.3293 2.8120 8.0111 C.3 1 UNCH 0.2800 + 14 C10 11.3661 3.3989 6.5887 C.3 1 UNCH 0.0000 + 15 C11 12.7735 2.8035 8.5498 C.3 1 UNCH 0.0000 + 16 O1 5.2265 2.8993 7.4490 O.2 1 UNCH -0.5700 + 17 O2 10.6044 3.7668 8.8118 O.3 1 UNCH -0.6800 + 18 H1 8.1359 2.6664 8.6964 H 1 UNCH 0.1500 + 19 H2 4.3671 1.9523 5.3167 H 1 UNCH 0.3700 + 20 H3 5.4463 0.6250 3.7376 H 1 UNCH 0.0600 + 21 H4 9.7784 1.6757 10.1011 H 1 UNCH 0.0000 + 22 H5 9.8315 -0.0036 9.5736 H 1 UNCH 0.0000 + 23 H6 11.3131 0.8048 10.0878 H 1 UNCH 0.0000 + 24 H7 12.4583 0.1564 8.0192 H 1 UNCH 0.0000 + 25 H8 11.8092 0.5255 6.4164 H 1 UNCH 0.0000 + 26 H9 11.0262 -0.6809 7.4413 H 1 UNCH 0.0000 + 27 H10 10.3597 3.5850 6.1997 H 1 UNCH 0.0000 + 28 H11 11.8622 4.3773 6.5894 H 1 UNCH 0.0000 + 29 H12 11.9010 2.7518 5.8878 H 1 UNCH 0.0000 + 30 H13 13.4477 2.2158 7.9196 H 1 UNCH 0.0000 + 31 H14 12.8207 2.4153 9.5720 H 1 UNCH 0.0000 + 32 H15 13.1707 3.8248 8.6007 H 1 UNCH 0.0000 + 33 H16 10.8828 3.6801 9.7398 H 1 UNCH 0.4000 +@BOND + 1 1 2 1 + 2 1 8 2 + 3 2 3 1 + 4 2 10 1 + 5 3 9 2 + 6 3 18 1 + 7 4 5 am + 8 4 9 1 + 9 4 16 2 + 10 5 6 am + 11 5 19 1 + 12 6 7 2 + 13 6 20 1 + 14 7 8 am + 15 8 9 1 + 16 10 11 1 + 17 10 12 1 + 18 10 13 1 + 19 11 21 1 + 20 11 22 1 + 21 11 23 1 + 22 12 24 1 + 23 12 25 1 + 24 12 26 1 + 25 13 14 1 + 26 13 15 1 + 27 13 17 1 + 28 14 27 1 + 29 14 28 1 + 30 14 29 1 + 31 15 30 1 + 32 15 31 1 + 33 15 32 1 + 34 17 33 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-(3'-HYDROXY-2',3'-DIMETHYLBUTAN-2'-YL)PYRAZOLO(3,4-D)PYRI +@MOLECULE +VIGTUA + 22 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.2487 8.4379 0.5263 N.2 1 VIGT -0.6200 + 2 N2 2.3601 7.1922 -0.9922 N.2 1 VIGT -0.6200 + 3 C1 1.5649 8.8905 -2.7954 C.3 1 VIGT -0.0680 + 4 C2 0.1326 9.3274 -3.1029 C.3 1 VIGT -0.1000 + 5 C3 -0.0101 9.8196 -1.6627 C.3 1 VIGT -0.0680 + 6 C4 0.5632 8.7840 -0.7273 C.2 1 VIGT 0.2780 + 7 C5 1.0122 7.4430 1.0292 C.2 1 VIGT 0.3100 + 8 C6 0.7716 7.0044 2.3241 C.2 1 VIGT -0.1500 + 9 C7 1.5263 5.9806 2.8994 C.2 1 VIGT -0.1500 + 10 C8 2.5434 5.3805 2.1679 C.2 1 VIGT -0.1500 + 11 C9 2.8019 5.8066 0.8640 C.2 1 VIGT -0.1500 + 12 C10 2.0634 6.8229 0.2732 C.2 1 VIGT 0.3100 + 13 C11 1.5897 8.1785 -1.4655 C.2 1 VIGT 0.2780 + 14 C12 1.0979 10.3306 -2.5838 C.3 1 VIGT -0.1000 + 15 H1 2.2480 8.6461 -3.5931 H 1 VIGT 0.1000 + 16 H2 -0.3191 9.6709 -4.0128 H 1 VIGT 0.1000 + 17 H3 -0.8292 10.4615 -1.3801 H 1 VIGT 0.1000 + 18 H4 -0.0241 7.4726 2.8988 H 1 VIGT 0.1500 + 19 H5 1.3167 5.6563 3.9158 H 1 VIGT 0.1500 + 20 H6 3.1371 4.5823 2.6066 H 1 VIGT 0.1500 + 21 H7 3.5987 5.3352 0.2934 H 1 VIGT 0.1500 + 22 H8 1.1391 11.1865 -3.2285 H 1 VIGT 0.1000 +@BOND + 1 1 7 1 + 2 1 6 2 + 3 2 13 2 + 4 2 12 1 + 5 3 15 1 + 6 3 14 1 + 7 3 13 1 + 8 3 4 1 + 9 4 16 1 + 10 4 14 1 + 11 4 5 1 + 12 5 17 1 + 13 5 14 1 + 14 5 6 1 + 15 6 13 1 + 16 7 12 2 + 17 7 8 1 + 18 8 18 1 + 19 8 9 2 + 20 9 19 1 + 21 9 10 1 + 22 10 20 1 + 23 10 11 2 + 24 11 21 1 + 25 11 12 1 + 26 14 22 1 +@SUBSTRUCTURE + 1 VIGT 1 +@COMMENT +COMMENT 1,2,3-METHYLIDYNE-2,3-DIHYDRO-1H-CYCLOPENTA(B)QUINOXALINE +@MOLECULE +VIHHID + 26 27 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 4.3600 1.2171 3.5783 S.3 1 VIHH -0.2820 + 2 S2 3.1491 3.9334 3.5783 S.1 1 VIHH 0.1810 + 3 O1 4.5462 4.4516 3.5783 O.2 1 VIHH -0.5000 + 4 N1 1.9906 0.1231 3.5783 N.2 1 VIHH -0.6960 + 5 C1 3.0113 2.3060 3.5783 C.2 1 VIHH 0.3990 + 6 C2 1.6898 1.5743 3.5783 C.3 1 VIHH 0.3070 + 7 C3 3.2585 -0.1341 3.5783 C.2 1 VIHH 0.5048 + 8 C4 3.7798 -1.5295 3.5783 C.2 1 VIHH 0.0862 + 9 C5 2.8510 -2.5827 3.5783 C.2 1 VIHH -0.1500 + 10 C6 3.2793 -3.9124 3.5783 C.2 1 VIHH -0.1500 + 11 C7 4.6405 -4.2050 3.5783 C.2 1 VIHH -0.1500 + 12 C8 5.5734 -3.1703 3.5783 C.2 1 VIHH -0.1500 + 13 C9 5.1479 -1.8379 3.5783 C.2 1 VIHH -0.1500 + 14 C10 0.8773 1.8707 2.3163 C.3 1 VIHH 0.0000 + 15 H1 1.4679 1.6797 1.4125 H 1 VIHH 0.0000 + 16 H2 -0.0151 1.2365 2.2638 H 1 VIHH 0.0000 + 17 H3 0.5483 2.9148 2.2812 H 1 VIHH 0.0000 + 18 H4 1.7821 -2.3767 3.5783 H 1 VIHH 0.1500 + 19 H5 2.5488 -4.7178 3.5783 H 1 VIHH 0.1500 + 20 H6 4.9750 -5.2397 3.5783 H 1 VIHH 0.1500 + 21 H7 6.6367 -3.3993 3.5783 H 1 VIHH 0.1500 + 22 H8 5.9101 -1.0637 3.5783 H 1 VIHH 0.1500 + 23 C10G 0.8773 1.8707 4.8403 C.3 1 VIHH 0.0000 + 24 H1G 1.4679 1.6797 5.7441 H 1 VIHH 0.0000 + 25 H2G -0.0151 1.2365 4.8928 H 1 VIHH 0.0000 + 26 H3G 0.5483 2.9148 4.8753 H 1 VIHH 0.0000 +@BOND + 1 1 5 1 + 2 1 7 1 + 3 2 3 2 + 4 2 5 2 + 5 4 6 1 + 6 4 7 2 + 7 5 6 1 + 8 6 14 1 + 9 6 23 1 + 10 7 8 1 + 11 8 9 2 + 12 8 13 1 + 13 9 10 1 + 14 9 18 1 + 15 10 11 2 + 16 10 19 1 + 17 11 12 1 + 18 11 20 1 + 19 12 13 2 + 20 12 21 1 + 21 13 22 1 + 22 14 15 1 + 23 14 16 1 + 24 14 17 1 + 25 23 24 1 + 26 23 25 1 + 27 23 26 1 +@SUBSTRUCTURE + 1 VIHH 1 +@COMMENT +COMMENT 4,4-DIMETHYL-2-PHENYL-1,3-THIAZOLE-5(4H)-THIONOXIDE (AT -60 +@MOLECULE +VIKVIU + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.8627 0.4527 7.4499 C.3 1 VIKV 0.1650 + 2 C2 1.8140 -0.5546 8.5934 C.3 1 VIKV -0.1950 + 3 C3 3.0914 -0.3798 7.8039 C.3 1 VIKV -0.1950 + 4 C4 1.0022 -1.8034 8.5255 C.3 1 VIKV 0.0950 + 5 C5 3.6187 -1.4271 6.8823 C.3 1 VIKV 0.0950 + 6 C6 1.1392 0.3075 6.1841 C.2 1 VIKV 0.7200 + 7 N1 1.8979 1.8757 7.8082 N.2 1 VIKV 0.8750 + 8 O1 1.6436 0.4304 5.0791 O.2 1 VIKV -0.5700 + 9 O2 -0.1686 -0.0040 6.3183 O.3 1 VIKV -0.6500 + 10 O3 0.9444 2.3102 8.4662 O.3 1 VIKV -0.5200 + 11 O4 2.8858 2.5261 7.4455 O.2 1 VIKV -0.5200 + 12 H1 1.8077 -0.1612 9.6069 H 1 VIKV 0.1000 + 13 H2 3.9132 0.1203 8.3102 H 1 VIKV 0.1000 + 14 H3 0.9385 -2.2248 7.5186 H 1 VIKV 0.0000 + 15 H4 1.4352 -2.5649 9.1819 H 1 VIKV 0.0000 + 16 H5 -0.0175 -1.6034 8.8701 H 1 VIKV 0.0000 + 17 H6 2.8383 -1.9220 6.2978 H 1 VIKV 0.0000 + 18 H7 4.3281 -0.9792 6.1789 H 1 VIKV 0.0000 + 19 H8 4.1503 -2.1940 7.4544 H 1 VIKV 0.0000 + 20 H9 -0.5072 -0.0537 5.3989 H 1 VIKV 0.5000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 6 1 + 4 1 7 1 + 5 2 3 1 + 6 2 4 1 + 7 2 12 1 + 8 3 5 1 + 9 3 13 1 + 10 4 14 1 + 11 4 15 1 + 12 4 16 1 + 13 5 17 1 + 14 5 18 1 + 15 5 19 1 + 16 6 8 2 + 17 6 9 1 + 18 7 10 1 + 19 7 11 2 + 20 9 20 1 +@SUBSTRUCTURE + 1 VIKV 1 +@COMMENT +COMMENT CIS,CIS-2,3-DIMETHYL-1-NITROCYCLOPROPANECARBOXYLIC ACID (FO +@MOLECULE +VIKYAP + 26 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.7024 4.4360 3.4520 C.3 1 VIKY 0.4702 + 2 C2 1.2272 3.4406 2.4079 C.3 1 VIKY 0.0000 + 3 C3 0.0853 2.8136 1.5173 C.3 1 VIKY 0.0530 + 4 C4 -1.3454 3.3513 1.9149 C.2 1 VIKY 0.4560 + 5 C5 -1.4654 2.9479 3.3708 C.3 1 VIKY 0.0610 + 6 C6 -0.3022 3.5737 4.2441 C.3 1 VIKY 0.0000 + 7 C7 0.5549 2.3078 4.5528 C.3 1 VIKY 0.0000 + 8 C8 1.2980 2.1106 3.2074 C.3 1 VIKY 0.0000 + 9 C9 0.2115 1.4940 2.3183 C.3 1 VIKY 0.0000 + 10 C10 -1.0288 1.4550 3.2596 C.3 1 VIKY 0.0000 + 11 C11 -0.4267 1.1542 4.6143 C.3 1 VIKY 0.0000 + 12 BR1 2.1699 5.0917 4.5720 BR 1 VIKY -0.2300 + 13 N1 0.1024 5.6952 2.8762 N.2 1 VIKY 0.7998 + 14 O1 0.5507 6.0912 1.7916 O.3 1 VIKY -0.5200 + 15 O2 -0.7890 6.2519 3.5315 O.2 1 VIKY -0.5200 + 16 O3 -2.1817 3.9664 1.2816 O.2 1 VIKY -0.5700 + 17 H1 2.1301 3.7086 1.8513 H 1 VIKY 0.0000 + 18 H2 0.2933 2.7422 0.4487 H 1 VIKY 0.0000 + 19 H3 -2.4609 3.0879 3.7950 H 1 VIKY 0.0000 + 20 H4 -0.6977 4.0344 5.1551 H 1 VIKY 0.0000 + 21 H5 1.2186 2.3969 5.4153 H 1 VIKY 0.0000 + 22 H6 2.2544 1.5846 3.2313 H 1 VIKY 0.0000 + 23 H7 0.4746 0.5847 1.7758 H 1 VIKY 0.0000 + 24 H8 -1.8149 0.7797 2.9138 H 1 VIKY 0.0000 + 25 H9 -1.1433 1.2419 5.4360 H 1 VIKY 0.0000 + 26 H10 0.0726 0.1807 4.6460 H 1 VIKY 0.0000 +@BOND + 1 1 2 1 + 2 1 6 1 + 3 1 12 1 + 4 1 13 1 + 5 2 3 1 + 6 2 8 1 + 7 2 17 1 + 8 3 4 1 + 9 3 9 1 + 10 3 18 1 + 11 4 5 1 + 12 4 16 2 + 13 5 6 1 + 14 5 10 1 + 15 5 19 1 + 16 6 7 1 + 17 6 20 1 + 18 7 8 1 + 19 7 11 1 + 20 7 21 1 + 21 8 9 1 + 22 8 22 1 + 23 9 10 1 + 24 9 23 1 + 25 10 11 1 + 26 10 24 1 + 27 11 25 1 + 28 11 26 1 + 29 13 14 1 + 30 13 15 2 +@SUBSTRUCTURE + 1 VIKY 1 +@COMMENT +COMMENT 11-BROMO-11-NITROPENTACYCLO(5.4.0.0-2,6-.0-3,10-.0-5,9-)UND +@MOLECULE +VIMHII + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 -1.3049 0.9545 8.7165 CL 1 VIMH 1.3000 + 2 O1 -0.4556 1.7327 7.8358 O.3 1 VIMH -0.5750 + 3 O2 -0.4937 0.3326 9.7450 O.3 1 VIMH -0.5750 + 4 O3 -1.9841 -0.0721 7.9501 O.3 1 VIMH -0.5750 + 5 O4 -2.2861 1.8246 9.3350 O.3 1 VIMH -0.5750 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 + 4 1 5 1 +@SUBSTRUCTURE + 1 VIMH 1 +@COMMENT +COMMENT PROPY-1,3-DIAMMONIUM PERCHLORATE +@MOLECULE +VIPXAT + 24 25 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 2.1157 7.6373 2.1786 N.2 1 VIPX -0.6510 + 2 C1 2.8702 8.5072 1.6134 C.2 1 VIPX 0.5856 + 3 O1 2.5428 9.7990 1.6718 O.3 1 VIPX -0.6000 + 4 C2 4.1036 8.2467 0.8777 C.2 1 VIPX -0.1238 + 5 C3 4.8968 9.3475 0.2627 C.3 1 VIPX 0.1382 + 6 C4 4.4072 6.9426 0.8355 C.2 1 VIPX 0.1910 + 7 N2 3.6084 5.9746 1.4392 N.3 1 VIPX -0.5764 + 8 C5 4.0132 4.6059 1.3414 C.2 1 VIPX 0.9366 + 9 O2 5.0300 4.2931 0.7459 O.2 1 VIPX -0.5700 + 10 C6 3.1198 3.6379 2.0037 C.2 1 VIPX -0.1238 + 11 C7 3.4948 2.1943 1.9327 C.3 1 VIPX 0.1382 + 12 C8 2.0361 4.1109 2.6227 C.2 1 VIPX 0.1910 + 13 N3 1.7452 5.4462 2.6536 N.2 1 VIPX -0.6454 + 14 C9 2.5093 6.3488 2.0788 C.2 1 VIPX 0.9098 + 15 H1 1.7161 9.9140 2.1716 H 1 VIPX 0.4500 + 16 H2 5.2298 10.0562 1.0278 H 1 VIPX 0.0000 + 17 H3 4.2969 9.8878 -0.4767 H 1 VIPX 0.0000 + 18 H4 5.7879 8.9665 -0.2472 H 1 VIPX 0.0000 + 19 H5 5.3072 6.6136 0.3143 H 1 VIPX 0.1500 + 20 H6 2.7693 1.5605 2.4535 H 1 VIPX 0.0000 + 21 H7 4.4734 2.0287 2.3951 H 1 VIPX 0.0000 + 22 H8 3.5407 1.8603 0.8910 H 1 VIPX 0.0000 + 23 H9 1.3379 3.4466 3.1300 H 1 VIPX 0.1500 + 24 H10 0.9218 5.8101 3.1235 H 1 VIPX 0.4500 +@BOND + 1 1 14 am + 2 1 2 2 + 3 2 4 1 + 4 2 3 1 + 5 3 15 1 + 6 4 6 2 + 7 4 5 1 + 8 5 18 1 + 9 5 17 1 + 10 5 16 1 + 11 6 19 1 + 12 6 7 1 + 13 7 14 am + 14 7 8 am + 15 8 10 1 + 16 8 9 2 + 17 10 12 2 + 18 10 11 1 + 19 11 22 1 + 20 11 21 1 + 21 11 20 1 + 22 12 23 1 + 23 12 13 1 + 24 13 24 1 + 25 13 14 2 +@SUBSTRUCTURE + 1 VIPX 1 +@COMMENT +COMMENT 3,7-DIMETHYL-1H-PYRIMIDO(1,2-A)PYRIMIDINE-2,6-DIONE HYDROGE +@MOLECULE +VIRBON + 29 30 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 7.8686 2.2224 -0.1160 O.2 1 VIRB -0.5700 + 2 O2 4.3794 2.4889 2.7874 O.2 1 VIRB -0.5700 + 3 N1 5.1849 4.4659 0.8540 N.1 1 VIRB 0.3566 + 4 N2 5.4407 5.5650 1.0155 N.2 1 VIRB -0.3700 + 5 C1 7.5376 2.0007 1.0284 C.2 1 VIRB 0.4640 + 6 C2 8.1311 2.3356 2.4137 C.3 1 VIRB 0.0530 + 7 C3 9.6365 2.2950 2.6125 C.3 1 VIRB 0.0000 + 8 C4 10.1824 0.8761 2.6805 C.3 1 VIRB 0.0000 + 9 C5 9.3902 0.0331 3.6787 C.3 1 VIRB 0.0000 + 10 C6 7.9768 -0.1878 3.1560 C.3 1 VIRB 0.0000 + 11 C7 7.2549 1.1499 2.9623 C.3 1 VIRB 0.0000 + 12 C8 6.3040 1.3012 1.6816 C.3 1 VIRB 0.1060 + 13 C9 5.8299 0.0351 0.9791 C.3 1 VIRB 0.0000 + 14 C10 5.1435 2.3390 1.8427 C.2 1 VIRB 0.5170 + 15 C11 4.9097 3.1988 0.6594 C.2 1 VIRB -0.0466 + 16 H1 7.7587 3.3181 2.7431 H 1 VIRB 0.0000 + 17 H2 10.1441 2.8593 1.8220 H 1 VIRB 0.0000 + 18 H3 9.8790 2.7998 3.5566 H 1 VIRB 0.0000 + 19 H4 10.1474 0.4117 1.6875 H 1 VIRB 0.0000 + 20 H5 11.2358 0.9090 2.9813 H 1 VIRB 0.0000 + 21 H6 9.8835 -0.9367 3.8090 H 1 VIRB 0.0000 + 22 H7 9.3666 0.5241 4.6587 H 1 VIRB 0.0000 + 23 H8 8.0588 -0.7433 2.2174 H 1 VIRB 0.0000 + 24 H9 7.4095 -0.8199 3.8484 H 1 VIRB 0.0000 + 25 H10 6.7620 1.4265 3.9049 H 1 VIRB 0.0000 + 26 H11 5.1939 -0.5596 1.6429 H 1 VIRB 0.0000 + 27 H12 5.2449 0.2778 0.0850 H 1 VIRB 0.0000 + 28 H13 6.6598 -0.5932 0.6439 H 1 VIRB 0.0000 + 29 H14 4.5475 2.7513 -0.2716 H 1 VIRB 0.0600 +@BOND + 1 1 5 2 + 2 2 14 2 + 3 3 15 2 + 4 3 4 2 + 5 5 12 1 + 6 5 6 1 + 7 6 16 1 + 8 6 11 1 + 9 6 7 1 + 10 7 18 1 + 11 7 17 1 + 12 7 8 1 + 13 8 20 1 + 14 8 19 1 + 15 8 9 1 + 16 9 22 1 + 17 9 21 1 + 18 9 10 1 + 19 10 24 1 + 20 10 23 1 + 21 10 11 1 + 22 11 25 1 + 23 11 12 1 + 24 12 14 1 + 25 12 13 1 + 26 13 28 1 + 27 13 27 1 + 28 13 26 1 + 29 14 15 1 + 30 15 29 1 +@SUBSTRUCTURE + 1 VIRB 1 +@COMMENT +COMMENT 8-DIAZOACETYL-8-METHYLBICYCLO(4.2.0)OCTAN-7-ONE (AT -125 DE +@MOLECULE +VIWCOT + 20 21 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 2.0585 8.7243 1.8204 C.2 1 UNCH 0.7910 + 2 C2 1.0804 9.0285 0.7974 C.2 1 UNCH -0.2400 + 3 C3 0.5216 10.0231 1.7715 C.3 1 UNCH 0.3959 + 4 C4 0.8662 8.5890 -0.4440 C.2 1 UNCH -0.1474 + 5 C5 -0.1820 9.0247 -1.3751 C.2 1 UNCH 0.0284 + 6 C6 -1.4686 9.3753 -0.9474 C.2 1 UNCH -0.1500 + 7 C7 -2.4408 9.7724 -1.8699 C.2 1 UNCH -0.1500 + 8 C8 -2.1386 9.8159 -3.2291 C.2 1 UNCH -0.1500 + 9 C9 -0.8669 9.4563 -3.6682 C.2 1 UNCH -0.1500 + 10 C10 0.1046 9.0583 -2.7464 C.2 1 UNCH -0.1500 + 11 O1 1.5601 9.6207 2.6971 O.3 1 UNCH -0.4079 + 12 O2 3.0012 7.9682 1.9274 O.2 1 UNCH -0.5700 + 13 H1 -0.4740 9.8223 2.1787 H 1 UNCH 0.0000 + 14 H2 0.6059 11.0815 1.5064 H 1 UNCH 0.0000 + 15 H3 1.5498 7.8343 -0.8308 H 1 UNCH 0.1500 + 16 H4 -1.7423 9.3250 0.1023 H 1 UNCH 0.1500 + 17 H5 -3.4371 10.0403 -1.5272 H 1 UNCH 0.1500 + 18 H6 -2.8956 10.1232 -3.9461 H 1 UNCH 0.1500 + 19 H7 -0.6296 9.4839 -4.7287 H 1 UNCH 0.1500 + 20 H8 1.0919 8.7829 -3.1115 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 11 1 + 3 1 12 2 + 4 2 3 1 + 5 2 4 2 + 6 3 11 1 + 7 3 13 1 + 8 3 14 1 + 9 4 5 1 + 10 4 15 1 + 11 5 6 2 + 12 5 10 1 + 13 6 7 1 + 14 6 16 1 + 15 7 8 2 + 16 7 17 1 + 17 8 9 1 + 18 8 18 1 + 19 9 10 2 + 20 9 19 1 + 21 10 20 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (E)-3-PHENYLMETHYLENE-2-OXETANONE +@MOLECULE +VIXRID + 16 17 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.4822 2.7197 2.8962 N.3 1 VIXR 0.0476 + 2 N2 1.3767 1.8279 4.7190 N.2 1 VIXR -0.5653 + 3 N3 4.5382 1.4589 2.2835 N.2 1 VIXR -0.5200 + 4 S1 3.9096 1.2038 3.8157 S.3 1 VIXR 0.0150 + 5 O1 1.9932 2.9925 0.2991 O.2 1 VIXR -0.5700 + 6 C1 0.2956 2.3758 4.2064 C.2 1 VIXR 0.0365 + 7 C2 3.8696 2.0027 1.3126 C.2 1 VIXR 0.3900 + 8 C3 2.4496 2.5072 1.3259 C.2 1 VIXR 0.6550 + 9 C4 2.2874 1.8213 3.6995 C.2 1 VIXR 0.2822 + 10 C5 1.7614 2.3669 2.5599 C.2 1 VIXR -0.2366 + 11 C6 -0.4965 3.3394 2.0375 C.3 1 VIXR 0.2556 + 12 H1 -0.6345 2.5432 4.7354 H 1 VIXR 0.1500 + 13 H2 4.3705 2.1285 0.3390 H 1 VIXR 0.0600 + 14 H3 -1.4235 3.4967 2.5950 H 1 VIXR 0.0000 + 15 H4 -0.1028 4.3010 1.6990 H 1 VIXR 0.0000 + 16 H5 -0.6848 2.6762 1.1897 H 1 VIXR 0.0000 +@BOND + 1 1 11 1 + 2 1 10 1 + 3 1 6 am + 4 2 9 1 + 5 2 6 2 + 6 3 7 2 + 7 3 4 1 + 8 4 9 1 + 9 5 8 2 + 10 6 12 1 + 11 7 13 1 + 12 7 8 1 + 13 8 10 1 + 14 9 10 2 + 15 11 16 1 + 16 11 15 1 + 17 11 14 1 +@SUBSTRUCTURE + 1 VIXR 1 +@COMMENT +COMMENT 5-METHYLIMIDAZO(4,5-E)-1,2-THIAZON-4-ONE (CYTOTOXIC ACTIVIT +@MOLECULE +VIXXOP + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.3140 4.4977 2.8849 S.2 1 UNCH 0.3900 + 2 S2 0.4677 4.3426 0.1966 S.2 1 UNCH 0.3900 + 3 F1 2.4629 3.3198 1.7227 F 1 UNCH -0.2980 + 4 F2 2.4240 5.5248 1.5933 F 1 UNCH -0.2980 + 5 C1 1.6755 4.4037 1.6151 C.3 1 UNCH 0.9400 + 6 N1 -0.5087 4.0131 1.5128 N.3 1 UNCH -0.3940 + 7 O1 0.5132 3.3900 3.8761 O.2 1 UNCH -0.5000 + 8 O2 0.7710 3.1300 -0.6320 O.2 1 UNCH -0.5000 + 9 C2 -1.9446 4.2101 1.4193 C.3 1 UNCH 0.2700 + 10 H1 -2.3533 3.6949 0.5429 H 1 UNCH 0.0000 + 11 H2 -2.4536 3.7961 2.2969 H 1 UNCH 0.0000 + 12 H3 -2.2011 5.2727 1.3434 H 1 UNCH 0.0000 +@BOND + 1 1 5 1 + 2 1 6 1 + 3 1 7 2 + 4 2 5 1 + 5 2 6 1 + 6 2 8 2 + 7 3 5 1 + 8 4 5 1 + 9 6 9 1 + 10 9 10 1 + 11 9 11 1 + 12 9 12 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 4,4-DIFLUORO-2-METHYL-1LAMBDA-3-,3LAMBDA-3--DITHIA-2-AZACYC +@MOLECULE +VIYPAU + 30 32 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 -0.6071 -2.2339 -1.3284 BR 1 VIYP -0.2190 + 2 O1 -2.7153 -1.2350 -5.9079 O.3 1 VIYP -0.5600 + 3 O2 -1.7171 0.8997 -5.8494 O.3 1 VIYP -0.5600 + 4 O3 -0.8899 -1.6012 -4.4702 O.3 1 VIYP -0.5379 + 5 O4 -1.0317 0.4401 -2.2355 O.3 1 VIYP -0.5158 + 6 O5 2.4794 -0.7230 -1.8026 O.2 1 VIYP -0.5700 + 7 O6 1.2723 0.9291 -0.7949 O.3 1 VIYP -0.4300 + 8 C1 -1.2056 -0.5820 -7.6736 C.3 1 VIYP 0.0000 + 9 C2 -3.4806 0.4542 -7.4245 C.3 1 VIYP 0.0000 + 10 C3 -2.2754 -0.1218 -6.6906 C.3 1 VIYP 0.5600 + 11 C4 -2.1955 -1.0201 -4.6091 C.3 1 VIYP 0.5600 + 12 C5 -2.0024 0.4822 -4.5065 C.3 1 VIYP 0.2800 + 13 C6 -0.0325 -0.6482 -3.7834 C.3 1 VIYP 0.2579 + 14 C7 -0.7750 0.6839 -3.6443 C.3 1 VIYP 0.2579 + 15 C8 0.0038 -0.6095 -2.2307 C.3 1 VIYP 0.5299 + 16 C9 1.3951 -0.1739 -1.6024 C.2 1 VIYP 0.6670 + 17 C10 2.4898 1.3587 -0.1830 C.3 1 VIYP 0.2800 + 18 H1 -0.8503 0.2489 -8.2921 H 1 VIYP 0.0000 + 19 H2 -1.5792 -1.3807 -8.3228 H 1 VIYP 0.0000 + 20 H3 -3.9473 -0.2944 -8.0733 H 1 VIYP 0.0000 + 21 H5 -4.2435 0.7824 -6.7090 H 1 VIYP 0.0000 + 22 H6 -2.8526 -1.4366 -3.8401 H 1 VIYP 0.0000 + 23 H7 -2.8912 1.0182 -4.1608 H 1 VIYP 0.0000 + 24 H8 0.9418 -0.5782 -4.2764 H 1 VIYP 0.0000 + 25 H9 -0.1985 1.6011 -3.7952 H 1 VIYP 0.0000 + 26 H10 2.2654 2.2252 0.4451 H 1 VIYP 0.0000 + 27 H11 3.2143 1.6615 -0.9452 H 1 VIYP 0.0000 + 28 H12 2.8999 0.5675 0.4522 H 1 VIYP 0.0000 + 29 H4 -0.3349 -0.9795 -7.1403 H 1 VIYP 0.0000 + 30 H13 -3.2025 1.3277 -8.0234 H 1 VIYP 0.0000 +@BOND + 1 1 15 1 + 2 2 11 1 + 3 2 10 1 + 4 3 12 1 + 5 3 10 1 + 6 4 13 1 + 7 4 11 1 + 8 5 15 1 + 9 5 14 1 + 10 6 16 2 + 11 7 17 1 + 12 7 16 1 + 13 8 29 1 + 14 8 19 1 + 15 8 18 1 + 16 8 10 1 + 17 9 30 1 + 18 9 21 1 + 19 9 20 1 + 20 9 10 1 + 21 11 22 1 + 22 11 12 1 + 23 12 23 1 + 24 12 14 1 + 25 13 24 1 + 26 13 15 1 + 27 13 14 1 + 28 14 25 1 + 29 15 16 1 + 30 17 28 1 + 31 17 27 1 + 32 17 26 1 +@SUBSTRUCTURE + 1 VIYP 1 +@COMMENT +COMMENT METHYL 3,5-ANHYDRO-5-BROMO-1,2-O-ISOPROPYLIDENE-ALPHA-D-GLU +@MOLECULE +VOBLAZ + 29 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 4.4252 8.5273 -1.4182 C.2 1 UNCH 0.2705 + 2 C2 4.9576 10.7174 -0.5295 C.3 1 UNCH 0.3691 + 3 C3 3.4566 11.0295 -0.6142 C.3 1 UNCH 0.0610 + 4 C4 2.7598 10.2962 -1.7321 C.2 1 UNCH 0.5180 + 5 C5 2.8138 8.0610 -2.8719 C.2 1 UNCH -0.1516 + 6 C6 1.7149 7.9937 -3.7402 C.2 1 UNCH -0.1500 + 7 C7 1.5545 6.8177 -4.4816 C.2 1 UNCH -0.1500 + 8 C8 2.4523 5.7568 -4.3589 C.2 1 UNCH -0.1500 + 9 C9 3.5439 5.8417 -3.4869 C.2 1 UNCH -0.1500 + 10 C10 3.7226 7.0133 -2.7353 C.2 1 UNCH 0.2272 + 11 C11 5.7374 11.3599 -1.6880 C.3 1 UNCH 0.0000 + 12 C12 5.5125 11.2491 0.8005 C.3 1 UNCH 0.0000 + 13 N1 5.1426 9.2703 -0.5483 N.3 1 UNCH -0.8531 + 14 N2 3.2776 9.0300 -1.9992 N.3 1 UNCH 0.2942 + 15 N3 4.7093 7.3212 -1.8343 N.2 1 UNCH -0.5653 + 16 O1 1.7721 10.7088 -2.3278 O.2 1 UNCH -0.5700 + 17 H1 6.0829 8.9270 -0.3568 H 1 UNCH 0.4000 + 18 H2 3.2969 12.1052 -0.7538 H 1 UNCH 0.0000 + 19 H3 2.9471 10.7381 0.3139 H 1 UNCH 0.0000 + 20 H4 1.0109 8.8151 -3.8383 H 1 UNCH 0.1500 + 21 H5 0.7120 6.7308 -5.1651 H 1 UNCH 0.1500 + 22 H6 2.3048 4.8533 -4.9459 H 1 UNCH 0.1500 + 23 H7 4.2459 5.0209 -3.3875 H 1 UNCH 0.1500 + 24 H8 6.8049 11.1180 -1.6251 H 1 UNCH 0.0000 + 25 H9 5.6389 12.4510 -1.6712 H 1 UNCH 0.0000 + 26 H10 5.3868 11.0105 -2.6653 H 1 UNCH 0.0000 + 27 H11 5.0091 10.7832 1.6558 H 1 UNCH 0.0000 + 28 H12 6.5827 11.0325 0.8992 H 1 UNCH 0.0000 + 29 H13 5.3792 12.3336 0.8806 H 1 UNCH 0.0000 +@BOND + 1 1 13 am + 2 1 14 am + 3 1 15 2 + 4 2 3 1 + 5 2 11 1 + 6 2 12 1 + 7 2 13 1 + 8 3 4 1 + 9 3 18 1 + 10 3 19 1 + 11 4 14 am + 12 4 16 2 + 13 5 6 2 + 14 5 10 1 + 15 5 14 1 + 16 6 7 1 + 17 6 20 1 + 18 7 8 2 + 19 7 21 1 + 20 8 9 1 + 21 8 22 1 + 22 9 10 2 + 23 9 23 1 + 24 10 15 1 + 25 11 24 1 + 26 11 25 1 + 27 11 26 1 + 28 12 27 1 + 29 12 28 1 + 30 12 29 1 + 31 13 17 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2,2-DIMETHYL-1,2,3,4-TETRAHYDROBENZIMIDAZO(3,2-A)PYRIMID-4- +@MOLECULE +VOBWOY + 21 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.2035 4.9959 0.7675 C.3 1 VOBW 0.2487 + 2 S1 4.2593 6.0835 -0.1759 S.1 1 VOBW 1.3328 + 3 O1 5.1624 5.2679 -0.9591 O.2 1 VOBW -0.6500 + 4 O2 4.7477 7.1444 0.6769 O.2 1 VOBW -0.6500 + 5 N1 3.1745 6.7495 -1.2666 N.3 1 VOBW -0.9137 + 6 C2 2.0851 7.5005 -0.6499 C.3 1 VOBW 0.4992 + 7 C3 0.0548 7.2098 0.7747 C.2 1 VOBW -0.1500 + 8 C4 -0.6911 6.5806 1.7699 C.2 1 VOBW -0.1500 + 9 C5 -0.1732 5.4695 2.4226 C.2 1 VOBW -0.1500 + 10 C6 1.0916 4.9921 2.0824 C.2 1 VOBW -0.1500 + 11 C7 1.8651 5.6199 1.0862 C.2 1 VOBW -0.1435 + 12 C8 1.3288 6.7347 0.4100 C.2 1 VOBW -0.1435 + 13 H1 3.7513 4.7461 1.6818 H 1 VOBW 0.0000 + 14 H2 3.0515 4.0908 0.1705 H 1 VOBW 0.0000 + 15 H3 2.9029 6.0945 -1.9981 H 1 VOBW 0.4200 + 16 H4 2.4785 8.4279 -0.2179 H 1 VOBW 0.0000 + 17 H5 1.3925 7.7800 -1.4531 H 1 VOBW 0.0000 + 18 H6 -0.3656 8.0855 0.2822 H 1 VOBW 0.1500 + 19 H7 -1.6738 6.9608 2.0375 H 1 VOBW 0.1500 + 20 H8 -0.7515 4.9751 3.1991 H 1 VOBW 0.1500 + 21 H9 1.4764 4.1185 2.6071 H 1 VOBW 0.1500 +@BOND + 1 1 2 1 + 2 1 11 1 + 3 1 13 1 + 4 1 14 1 + 5 2 3 2 + 6 2 4 2 + 7 2 5 1 + 8 5 6 1 + 9 5 15 1 + 10 6 12 1 + 11 6 16 1 + 12 6 17 1 + 13 7 8 2 + 14 7 12 1 + 15 7 18 1 + 16 8 9 1 + 17 8 19 1 + 18 9 10 2 + 19 9 20 1 + 20 10 11 1 + 21 10 21 1 + 22 11 12 2 +@SUBSTRUCTURE + 1 VOBW 1 +@COMMENT +COMMENT 1H-3,4-DIHYDRO-2,3-BENZOTHIAZINE 2,2-DIOXIDE +@MOLECULE +VOFBOH + 25 26 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 5.6313 2.1569 2.2160 BR 1 VOFB -0.1430 + 2 BR2 2.9034 3.5840 2.8743 BR 1 VOFB -0.1430 + 3 O1 8.5545 6.7906 1.3630 O.3 1 VOFB -0.6500 + 4 O2 6.8097 6.8208 -0.0236 O.2 1 VOFB -0.5700 + 5 C1 4.6192 3.7695 2.0332 C.3 1 VOFB 0.2860 + 6 C2 5.3115 5.1326 1.8842 C.3 1 VOFB -0.0630 + 7 C3 4.6265 4.4621 0.7028 C.3 1 VOFB -0.2000 + 8 C4 6.8362 5.2199 1.8281 C.3 1 VOFB 0.1560 + 9 C5 7.3430 6.3500 0.9676 C.2 1 VOFB 0.6590 + 10 C6 4.6640 6.3588 2.5393 C.2 1 VOFB -0.0320 + 11 C7 4.1097 7.4026 1.7779 C.2 1 VOFB -0.1500 + 12 C8 3.5394 8.5259 2.3826 C.2 1 VOFB -0.1500 + 13 C9 3.5166 8.6341 3.7694 C.2 1 VOFB -0.1500 + 14 C10 4.0684 7.6230 4.5493 C.2 1 VOFB -0.1500 + 15 C11 4.6388 6.5029 3.9391 C.2 1 VOFB -0.1500 + 16 H1 3.6977 4.8800 0.3291 H 1 VOFB 0.1000 + 17 H2 5.2445 4.0601 -0.0932 H 1 VOFB 0.1000 + 18 H3 7.2877 4.3116 1.4169 H 1 VOFB 0.0000 + 19 H4 7.2195 5.3479 2.8476 H 1 VOFB 0.0000 + 20 H5 4.1305 7.3484 0.6906 H 1 VOFB 0.1500 + 21 H6 3.1171 9.3159 1.7671 H 1 VOFB 0.1500 + 22 H7 3.0720 9.5063 4.2411 H 1 VOFB 0.1500 + 23 H8 4.0556 7.7030 5.6331 H 1 VOFB 0.1500 + 24 H9 5.0656 5.7247 4.5691 H 1 VOFB 0.1500 + 25 H10 8.7682 7.5031 0.7243 H 1 VOFB 0.5000 +@BOND + 1 1 5 1 + 2 2 5 1 + 3 3 9 1 + 4 3 25 1 + 5 4 9 2 + 6 5 6 1 + 7 5 7 1 + 8 6 7 1 + 9 6 8 1 + 10 6 10 1 + 11 7 16 1 + 12 7 17 1 + 13 8 9 1 + 14 8 18 1 + 15 8 19 1 + 16 10 11 2 + 17 10 15 1 + 18 11 12 1 + 19 11 20 1 + 20 12 13 2 + 21 12 21 1 + 22 13 14 1 + 23 13 22 1 + 24 14 15 2 + 25 14 23 1 + 26 15 24 1 +@SUBSTRUCTURE + 1 VOFB 1 +@COMMENT +COMMENT 2-(2,2-DIBROMO-1-PHENYLCYCLOPROPYL)ETHANOIC ACID (AT -140 D +@MOLECULE +VOFCAU + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 BR1 4.7291 1.3233 5.1382 BR 1 UNCH -0.2300 + 2 CL1 7.3513 -2.5636 6.6476 CL 1 UNCH -0.2273 + 3 CL2 5.6887 -2.7830 9.0412 CL 1 UNCH -0.2273 + 4 C1 6.1099 -1.7946 7.6369 C.3 1 UNCH 0.4546 + 5 C2 5.0943 -0.8315 7.0034 C.3 1 UNCH -0.0630 + 6 C3 6.2278 -0.3196 7.8808 C.3 1 UNCH -0.2000 + 7 C4 5.1872 -0.5391 5.5191 C.3 1 UNCH 0.3250 + 8 C5 3.6605 -0.8338 7.5505 C.2 1 UNCH -0.0320 + 9 C6 2.8050 -1.9306 7.3337 C.2 1 UNCH -0.1500 + 10 C7 1.4933 -1.9420 7.8149 C.2 1 UNCH -0.1500 + 11 C8 1.0019 -0.8489 8.5209 C.2 1 UNCH -0.1500 + 12 C9 1.8207 0.2535 8.7430 C.2 1 UNCH -0.1500 + 13 C10 3.1325 0.2592 8.2612 C.2 1 UNCH -0.1500 + 14 H1 7.0479 0.2140 7.4129 H 1 UNCH 0.1000 + 15 H2 6.0005 0.0519 8.8738 H 1 UNCH 0.1000 + 16 H3 6.1946 -0.6496 5.1109 H 1 UNCH 0.0000 + 17 H4 4.5015 -1.1594 4.9343 H 1 UNCH 0.0000 + 18 H5 3.1660 -2.7990 6.7857 H 1 UNCH 0.1500 + 19 H6 0.8576 -2.8058 7.6382 H 1 UNCH 0.1500 + 20 H7 -0.0181 -0.8551 8.8958 H 1 UNCH 0.1500 + 21 H8 1.4399 1.1129 9.2888 H 1 UNCH 0.1500 + 22 H9 3.7476 1.1392 8.4386 H 1 UNCH 0.1500 +@BOND + 1 1 7 1 + 2 2 4 1 + 3 3 4 1 + 4 4 5 1 + 5 4 6 1 + 6 5 6 1 + 7 5 7 1 + 8 5 8 1 + 9 6 14 1 + 10 6 15 1 + 11 7 16 1 + 12 7 17 1 + 13 8 9 2 + 14 8 13 1 + 15 9 10 1 + 16 9 18 1 + 17 10 11 2 + 18 10 19 1 + 19 11 12 1 + 20 11 20 1 + 21 12 13 2 + 22 12 21 1 + 23 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT 2-BROMOMETHYL-1,1-DICHLORO-2-PHENYLCYCLOPROPANE (AT -135 DE +@MOLECULE +VOJGEG + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O3 -2.2179 0.6733 10.0279 O.3 1 VOJG -0.6500 + 2 O4 -1.8950 2.1831 8.3635 O.2 1 VOJG -0.4500 + 3 C3 -1.1678 -0.0813 7.9875 C.3 1 VOJG 0.0610 + 4 C4 -1.7829 0.9887 8.8089 C.2 1 VOJG 1.0390 + 5 H2 -2.0840 -0.2703 10.2722 H 1 VOJG 0.5000 + 6 H3 -2.3265 2.7399 9.0550 H 1 VOJG 0.5000 + 7 H10 -0.8625 0.3265 7.0211 H 1 VOJG 0.0000 + 8 H11 -0.2933 -0.4827 8.5057 H 1 VOJG 0.0000 + 9 H12 -1.8924 -0.8842 7.8312 H 1 VOJG 0.0000 +@BOND + 1 1 4 1 + 2 1 5 1 + 3 2 4 2 + 4 2 6 1 + 5 3 4 1 + 6 3 7 1 + 7 3 8 1 + 8 3 9 1 +@SUBSTRUCTURE + 1 VOJG 1 +@COMMENT +COMMENT ACETACIDINIUM ACETIC ACID TRIFLUOROMETHANESULFONATE (AT -13 +@MOLECULE +VOJJIN + 20 20 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.0879 2.7860 9.9440 P 1 VOJJ 0.9362 + 2 O1 1.1740 3.6081 10.0725 O.2 1 VOJJ -0.9500 + 3 N1 -1.0556 1.0329 8.0986 N.2 1 VOJJ -0.2100 + 4 O2 -1.4198 3.4775 9.7162 O.3 1 VOJJ -0.9500 + 5 N2 -0.2468 -0.9157 9.2910 N.3 1 VOJJ -0.9000 + 6 C1 -1.2144 -0.2351 8.5435 C.2 1 VOJJ 0.4610 + 7 C2 -2.3733 -0.9361 8.1697 C.2 1 VOJJ -0.1500 + 8 C3 -3.3795 -0.3107 7.4434 C.2 1 VOJJ -0.1500 + 9 C4 -3.2235 1.0184 7.0932 C.2 1 VOJJ -0.1500 + 10 C5 -2.0517 1.6745 7.4408 C.2 1 VOJJ 0.2110 + 11 C6 0.1567 1.8192 8.4014 C.3 1 VOJJ 0.4880 + 12 H1 -0.1786 1.7954 10.9447 H 1 VOJJ -0.0362 + 13 H3 -2.4988 -1.9755 8.4643 H 1 VOJJ 0.1500 + 14 H4 -4.2857 -0.8498 7.1772 H 1 VOJJ 0.1500 + 15 H5 -4.0092 1.5521 6.5650 H 1 VOJJ 0.1500 + 16 H6 -1.9022 2.7289 7.2164 H 1 VOJJ 0.1500 + 17 H7 0.5505 -0.3993 9.6404 H 1 VOJJ 0.4000 + 18 H8 -0.6511 -1.4898 10.0289 H 1 VOJJ 0.4000 + 19 H13 0.3335 2.5054 7.5651 H 1 VOJJ 0.0000 + 20 H14 1.0281 1.1647 8.4699 H 1 VOJJ 0.0000 +@BOND + 1 1 2 2 + 2 1 4 1 + 3 1 11 1 + 4 1 12 1 + 5 3 6 2 + 6 3 10 1 + 7 3 11 1 + 8 5 6 am + 9 5 17 1 + 10 5 18 1 + 11 6 7 1 + 12 7 8 2 + 13 7 13 1 + 14 8 9 1 + 15 8 14 1 + 16 9 10 2 + 17 9 15 1 + 18 10 16 1 + 19 11 19 1 + 20 11 20 1 +@SUBSTRUCTURE + 1 VOJJ 1 +@COMMENT +COMMENT (1-(2-AMINOPYRIDINIO))METHYLPHOSPHONITE MONOHYDRATE (AT -15 +@MOLECULE +VUWXUG + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -1.1326 2.7484 -0.7778 O.3 1 CHGB -0.7120 + 2 C1 -0.1903 0.7437 0.1965 C.2 1 CHGB 0.6300 + 3 N1 -0.4738 1.5328 -0.9252 N.3 1 CHGB -0.7180 + 4 O2 -0.1968 1.0800 1.3793 O.2 1 CHGB -0.5700 + 5 H1 -0.5916 1.0431 -1.8066 H 1 CHGB 0.3700 + 6 C1A 0.1903 -0.7437 -0.1965 C.2 1 CHGB 0.6300 + 7 N1A 0.4738 -1.5328 0.9252 N.3 1 CHGB -0.7180 + 8 O2A 0.1968 -1.0800 -1.3793 O.2 1 CHGB -0.5700 + 9 O1A 1.1326 -2.7484 0.7778 O.3 1 CHGB -0.7120 + 10 H1A 0.5916 -1.0431 1.8066 H 1 CHGB 0.3700 +@BOND + 1 1 3 1 + 2 2 6 1 + 3 2 4 2 + 4 2 3 am + 5 3 5 1 + 6 6 8 2 + 7 6 7 am + 8 7 10 1 + 9 7 9 1 +@SUBSTRUCTURE + 1 CHGB 1 +@COMMENT +COMMENT AMMONIUM OXALOHYDROXAMATE (changed by TAH to the dianion) +@MOLECULE +VUXGOK + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 3.3878 1.4496 8.9814 O.3 1 VUXG -0.2800 + 2 O2 0.6720 2.9214 7.1889 O.2 1 VUXG -0.5700 + 3 C1 2.2641 2.2094 8.7807 C.2 1 VUXG 0.0550 + 4 C2 1.8586 2.7537 9.9851 C.2 1 VUXG 0.0830 + 5 C3 2.7684 2.3105 10.9796 C.2 1 VUXG 0.0000 + 6 C4 3.6875 1.5125 10.3081 C.2 1 VUXG 0.1400 + 7 C5 4.7623 0.8718 10.9212 C.2 1 VUXG -0.1500 + 8 C6 4.9004 1.0631 12.2999 C.2 1 VUXG -0.1500 + 9 C7 3.9999 1.8592 13.0124 C.2 1 VUXG -0.1500 + 10 C8 2.9274 2.4915 12.3666 C.2 1 VUXG -0.1500 + 11 C9 1.7112 2.3097 7.4479 C.2 1 VUXG 0.5940 + 12 C10 2.4705 1.6080 6.3484 C.3 1 VUXG 0.0610 + 13 N1 0.7953 3.5600 10.1755 N.3 1 VUXG -0.8830 + 14 H1 5.4525 0.2592 10.3543 H 1 VUXG 0.1500 + 15 H2 5.7245 0.5843 12.8250 H 1 VUXG 0.1500 + 16 H3 4.1322 1.9932 14.0841 H 1 VUXG 0.1500 + 17 H4 2.2355 3.1114 12.9279 H 1 VUXG 0.1500 + 18 H5 1.9694 1.7793 5.3909 H 1 VUXG 0.0000 + 19 H6 3.4871 2.0054 6.2819 H 1 VUXG 0.0000 + 20 H7 2.4962 0.5317 6.5392 H 1 VUXG 0.0000 + 21 H8 0.4271 3.7608 11.0993 H 1 VUXG 0.4000 + 22 H9 0.1235 3.7108 9.4208 H 1 VUXG 0.4000 +@BOND + 1 1 6 1 + 2 1 3 1 + 3 2 11 2 + 4 3 11 1 + 5 3 4 2 + 6 4 13 1 + 7 4 5 1 + 8 5 10 1 + 9 5 6 2 + 10 6 7 1 + 11 7 14 1 + 12 7 8 2 + 13 8 15 1 + 14 8 9 1 + 15 9 16 1 + 16 9 10 2 + 17 10 17 1 + 18 11 12 1 + 19 12 20 1 + 20 12 19 1 + 21 12 18 1 + 22 13 22 1 + 23 13 21 1 +@SUBSTRUCTURE + 1 VUXG 1 +@COMMENT +COMMENT 2-ACETYL-3-AMINOBENZOFURAN +@MOLECULE +VUXPUZ + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 2.5552 4.3911 3.0667 S.1 1 UNCH 1.3328 + 2 O1 1.5642 5.0530 3.8817 O.2 1 UNCH -0.6500 + 3 O2 2.2213 3.2971 2.1826 O.2 1 UNCH -0.6500 + 4 O3 1.9556 8.2077 0.4116 O.3 1 UNCH -0.0191 + 5 N1 3.6279 3.7142 4.1762 N.3 1 UNCH -0.9780 + 6 N2 2.6841 7.7193 1.4827 N.2 1 UNCH -0.4097 + 7 C1 3.6007 5.5808 2.2207 C.3 1 UNCH 0.2862 + 8 C2 2.8332 6.4047 1.2571 C.2 1 UNCH 0.1078 + 9 C3 2.2364 6.0211 0.0258 C.2 1 UNCH 0.0000 + 10 C4 1.6932 7.1984 -0.4587 C.2 1 UNCH 0.1400 + 11 C5 0.9944 7.3101 -1.6577 C.2 1 UNCH -0.1500 + 12 C6 0.8514 6.1345 -2.4015 C.2 1 UNCH -0.1500 + 13 C7 1.3881 4.9250 -1.9506 C.2 1 UNCH -0.1500 + 14 C8 2.0876 4.8492 -0.7364 C.2 1 UNCH -0.1500 + 15 H1 3.3212 3.9393 5.1260 H 1 UNCH 0.4200 + 16 H2 3.7048 2.7081 4.0112 H 1 UNCH 0.4200 + 17 H3 4.3857 5.0175 1.7064 H 1 UNCH 0.0000 + 18 H4 4.0602 6.2050 2.9946 H 1 UNCH 0.0000 + 19 H5 0.5866 8.2568 -1.9903 H 1 UNCH 0.1500 + 20 H6 0.3114 6.1624 -3.3461 H 1 UNCH 0.1500 + 21 H7 1.2577 4.0242 -2.5478 H 1 UNCH 0.1500 + 22 H8 2.4898 3.8970 -0.4014 H 1 UNCH 0.1500 +@BOND + 1 1 2 2 + 2 1 3 2 + 3 1 5 1 + 4 1 7 1 + 5 4 6 1 + 6 4 10 1 + 7 5 15 1 + 8 5 16 1 + 9 6 8 2 + 10 7 8 1 + 11 7 17 1 + 12 7 18 1 + 13 8 9 1 + 14 9 10 2 + 15 9 14 1 + 16 10 11 1 + 17 11 12 2 + 18 11 19 1 + 19 12 13 1 + 20 12 20 1 + 21 13 14 2 + 22 13 21 1 + 23 14 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT (1,2-BENZISOXAZOL-3-YL)-METHANESULFONAMIDE (ANTIEPILEPTIC D +@MOLECULE +VUXREL + 22 23 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 1.0321 6.7575 10.8502 O.3 1 UNCH -0.3090 + 2 C1 0.2029 7.7633 11.2574 C.2 1 UNCH -0.0100 + 3 C2 -0.9725 7.8177 10.5409 C.2 1 UNCH -0.1630 + 4 C3 -0.8292 6.7527 9.6297 C.2 1 UNCH -0.0510 + 5 C4 0.3585 6.1525 9.8393 C.2 1 UNCH 0.1820 + 6 C5 0.5521 5.0813 8.9553 C.2 1 UNCH -0.1630 + 7 C6 -0.6071 5.0629 8.1805 C.2 1 UNCH -0.2366 + 8 N1 -1.4425 6.0899 8.6037 N.3 1 UNCH -0.0544 + 9 C7 -0.9880 4.1811 7.0997 C.2 1 UNCH 0.8050 + 10 O2 -2.0427 4.2579 6.4831 O.2 1 UNCH -0.5700 + 11 O3 -0.0093 3.2635 6.8734 O.3 1 UNCH -0.4300 + 12 C8 -0.3006 2.3442 5.8158 C.3 1 UNCH 0.2800 + 13 C9 0.8709 1.3909 5.6817 C.3 1 UNCH 0.0000 + 14 H1 0.5918 8.3584 12.0730 H 1 UNCH 0.1500 + 15 H2 -1.7874 8.5144 10.6658 H 1 UNCH 0.1500 + 16 H3 1.4015 4.4170 8.8834 H 1 UNCH 0.1500 + 17 H4 -2.3540 6.3209 8.2261 H 1 UNCH 0.2700 + 18 H5 -0.4407 2.8918 4.8771 H 1 UNCH 0.0000 + 19 H6 -1.2098 1.7811 6.0544 H 1 UNCH 0.0000 + 20 H7 1.0372 0.8503 6.6194 H 1 UNCH 0.0000 + 21 H8 0.6944 0.6658 4.8824 H 1 UNCH 0.0000 + 22 H9 1.7923 1.9408 5.4636 H 1 UNCH 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 2 3 2 + 4 2 14 1 + 5 3 4 1 + 6 3 15 1 + 7 4 5 2 + 8 4 8 1 + 9 5 6 1 + 10 6 7 2 + 11 6 16 1 + 12 7 8 1 + 13 7 9 1 + 14 8 17 1 + 15 9 10 2 + 16 9 11 1 + 17 11 12 1 + 18 12 13 1 + 19 12 18 1 + 20 12 19 1 + 21 13 20 1 + 22 13 21 1 + 23 13 22 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT ETHYL 4H-FURO(3,2-B)PYRROLE-5-CARBOXYLATE +@MOLECULE +ZZZIZA01 + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 3.9227 0.0000 0.4349 C.2 1 ZZZI 0.1380 + 2 C2 4.3175 1.2197 -0.1192 C.2 1 ZZZI -0.1500 + 3 N7 3.1171 0.0000 1.5655 N.1 1 ZZZI 0.2320 + 4 C9 2.4372 0.0000 2.5198 C.1 1 ZZZI -0.3700 + 5 H2 3.9990 2.1580 0.3279 H 1 ZZZI 0.1500 + 6 C2F 4.3175 -1.2197 -0.1192 C.2 1 ZZZI -0.1500 + 7 C2B 5.1270 1.2197 -1.2553 C.2 1 ZZZI -0.1500 + 8 C2D 5.1270 -1.2197 -1.2553 C.2 1 ZZZI -0.1500 + 9 H2F 3.9990 -2.1580 0.3279 H 1 ZZZI 0.1500 + 10 C1D 5.5218 0.0000 -1.8093 C.2 1 ZZZI 0.1380 + 11 H2B 5.4455 2.1580 -1.7024 H 1 ZZZI 0.1500 + 12 H2D 5.4455 -2.1580 -1.7024 H 1 ZZZI 0.1500 + 13 N7D 6.3274 0.0000 -2.9400 N.1 1 ZZZI 0.2320 + 14 C9D 7.0073 0.0000 -3.8943 C.1 1 ZZZI -0.3700 +@BOND + 1 1 6 1 + 2 1 3 1 + 3 1 2 2 + 4 2 7 1 + 5 2 5 1 + 6 3 4 3 + 7 6 9 1 + 8 6 8 2 + 9 7 11 1 + 10 7 10 2 + 11 8 12 1 + 12 8 10 1 + 13 10 13 1 + 14 13 14 3 +@SUBSTRUCTURE + 1 ZZZI 1 +@COMMENT +COMMENT P-DI-ISOCYANOBENZENE (CONVENTIONAL REFINEMENT) +@MOLECULE +ZZZMVU10 + 30 31 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.9957 2.2135 9.6142 S.1 1 UNCH 1.4270 + 2 S2 3.1102 3.7064 8.6308 S.3 1 UNCH -0.1180 + 3 S3 4.7595 2.6635 7.9643 S.3 1 UNCH -0.1180 + 4 S4 3.9263 1.5870 6.3679 S.1 1 UNCH 1.4270 + 5 O1 1.3916 2.8329 10.7791 O.2 1 UNCH -0.6500 + 6 O2 2.8219 1.0310 9.7565 O.2 1 UNCH -0.6500 + 7 O3 2.9176 2.4150 5.7342 O.2 1 UNCH -0.6500 + 8 O4 3.6076 0.2502 6.8260 O.2 1 UNCH -0.6500 + 9 C1 0.6688 1.8462 8.4921 C.2 1 UNCH -0.0090 + 10 C2 0.5635 0.5755 7.9213 C.2 1 UNCH -0.1500 + 11 C3 -0.4907 0.3000 7.0506 C.2 1 UNCH -0.1500 + 12 C4 -1.4395 1.2834 6.7667 C.2 1 UNCH -0.1500 + 13 C5 -1.3430 2.5448 7.3562 C.2 1 UNCH -0.1500 + 14 C6 -0.2907 2.8298 8.2260 C.2 1 UNCH -0.1500 + 15 C7 5.2940 1.4506 5.2406 C.2 1 UNCH -0.0090 + 16 C8 6.1740 0.3694 5.3534 C.2 1 UNCH -0.1500 + 17 C9 7.2383 0.2569 4.4593 C.2 1 UNCH -0.1500 + 18 C10 7.4132 1.2127 3.4569 C.2 1 UNCH -0.1500 + 19 C11 6.5230 2.2818 3.3397 C.2 1 UNCH -0.1500 + 20 C12 5.4556 2.4029 4.2292 C.2 1 UNCH -0.1500 + 21 H1 1.2930 -0.2024 8.1390 H 1 UNCH 0.1500 + 22 H2 -0.5722 -0.6831 6.5928 H 1 UNCH 0.1500 + 23 H3 -2.2596 1.0636 6.0872 H 1 UNCH 0.1500 + 24 H4 -2.0914 3.3031 7.1389 H 1 UNCH 0.1500 + 25 H5 -0.2329 3.8101 8.6934 H 1 UNCH 0.1500 + 26 H6 6.0387 -0.3859 6.1252 H 1 UNCH 0.1500 + 27 H7 7.9299 -0.5789 4.5387 H 1 UNCH 0.1500 + 28 H8 8.2428 1.1198 2.7593 H 1 UNCH 0.1500 + 29 H9 6.6599 3.0170 2.5499 H 1 UNCH 0.1500 + 30 H10 4.7608 3.2334 4.1233 H 1 UNCH 0.1500 +@BOND + 1 1 2 1 + 2 1 5 2 + 3 1 6 2 + 4 1 9 1 + 5 2 3 1 + 6 3 4 1 + 7 4 7 2 + 8 4 8 2 + 9 4 15 1 + 10 9 10 2 + 11 9 14 1 + 12 10 11 1 + 13 10 21 1 + 14 11 12 2 + 15 11 22 1 + 16 12 13 1 + 17 12 23 1 + 18 13 14 2 + 19 13 24 1 + 20 14 25 1 + 21 15 16 2 + 22 15 20 1 + 23 16 17 1 + 24 16 26 1 + 25 17 18 2 + 26 17 27 1 + 27 18 19 1 + 28 18 28 1 + 29 19 20 2 + 30 19 29 1 + 31 20 30 1 +@SUBSTRUCTURE + 1 UNCH 1 +@COMMENT +COMMENT BIS(PHENYLSULFONYL)-DISULFANE +@MOLECULE +ZZZVCQ01 + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 I1 1.2558 -0.8409 7.6954 I 1 ZZZV 0.0360 + 2 O1 3.9626 -0.5382 5.7373 O.2 1 ZZZV -0.5700 + 3 O2 0.2026 2.0409 6.3397 O.2 1 ZZZV -0.5700 + 4 N1 1.9533 0.5023 6.2977 N.3 1 ZZZV -0.1560 + 5 C1 3.1423 0.3633 5.6295 C.2 1 ZZZV 0.5690 + 6 C2 3.3212 1.5222 4.6961 C.3 1 ZZZV 0.0610 + 7 C3 2.0847 2.3703 4.8942 C.3 1 ZZZV 0.0610 + 8 C4 1.2823 1.6392 5.9275 C.2 1 ZZZV 0.5690 + 9 H1 4.2294 2.0728 4.9581 H 1 ZZZV 0.0000 + 10 H2 3.3970 1.1609 3.6664 H 1 ZZZV 0.0000 + 11 H3 1.5074 2.4570 3.9691 H 1 ZZZV 0.0000 + 12 H4 2.3398 3.3689 5.2608 H 1 ZZZV 0.0000 +@BOND + 1 1 4 1 + 2 2 5 2 + 3 3 8 2 + 4 4 5 am + 5 4 8 am + 6 5 6 1 + 7 6 7 1 + 8 6 9 1 + 9 6 10 1 + 10 7 8 1 + 11 7 11 1 + 12 7 12 1 +@SUBSTRUCTURE + 1 ZZZV 1 +@COMMENT +COMMENT N-IODOSUCCINIMIDE (ABSOLUTE CONFIGURATION) +@MOLECULE +AR14A + 8 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.0021 0.0000 -0.0072 O.3 1 OXAZ -0.2800 + 2 C2 0.0006 0.0000 1.3546 C.2 1 OXAZ 0.3281 + 3 N3 1.1919 0.0000 1.9096 N.2 1 OXAZ -0.5653 + 4 C4 2.0435 0.0000 0.8341 C.2 1 OXAZ 0.0772 + 5 C5 1.3209 0.0000 -0.3327 C.2 1 OXAZ -0.0100 + 6 H6 -0.9644 0.0000 1.8413 H 1 OXAZ 0.1500 + 7 H7 3.1174 0.0000 0.9569 H 1 OXAZ 0.1500 + 8 H8 1.5613 0.0000 -1.3853 H 1 OXAZ 0.1500 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 6 1 + 4 2 3 2 + 5 3 4 1 + 6 4 7 1 + 7 4 5 2 + 8 5 8 1 +@SUBSTRUCTURE + 1 OXAZ 1 +@COMMENT +COMMENT OXAZOLE +@MOLECULE +CA04A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O1 -0.0176 0.0036 0.0008 O.2 1 CA04 -0.5700 + 2 C2 -0.0131 -0.0003 1.2209 C.2 1 CA04 0.5100 + 3 C3 1.2674 0.0002 2.0507 C.2 1 CA04 0.7200 + 4 O4 1.2589 -0.0037 3.2665 O.2 1 CA04 -0.5700 + 5 O5 2.3882 0.0053 1.3273 O.3 1 CA04 -0.6500 + 6 H6 3.1210 0.0050 1.9752 H 1 CA04 0.5000 + 7 H7 -0.9284 -0.0045 1.8327 H 1 CA04 0.0600 +@BOND + 1 1 2 2 + 2 2 7 1 + 3 2 3 1 + 4 3 5 1 + 5 3 4 2 + 6 5 6 1 +@SUBSTRUCTURE + 1 CA04 1 +@COMMENT +COMMENT GLYOXYLIC ACID +@MOLECULE +CE05A + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0206 0.0000 -0.0060 C.2 1 CE05 -0.3000 + 2 C2 0.0319 0.0000 1.3272 C.2 1 CE05 -0.0733 + 3 O3 1.2500 0.0000 2.0057 O.3 1 CE05 -0.2267 + 4 C4 1.1701 0.0000 3.3701 C.2 1 CE05 0.6600 + 5 O5 0.1679 0.0000 4.0687 O.2 1 CE05 -0.5700 + 6 H6 -0.9739 0.0000 -0.5235 H 1 CE05 0.1500 + 7 H7 0.8846 0.0000 -0.6038 H 1 CE05 0.1500 + 8 H8 -0.8518 0.0000 1.9534 H 1 CE05 0.1500 + 9 H9 2.1963 0.0000 3.7706 H 1 CE05 0.0600 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 2 2 + 4 2 8 1 + 5 2 3 1 + 6 3 4 1 + 7 4 9 1 + 8 4 5 2 +@SUBSTRUCTURE + 1 CE05 1 +@COMMENT +COMMENT VINYL FORMATE +@MOLECULE +CO01A + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0000 0.0000 -0.0023 C.2 1 FORM 0.4500 + 2 O2 0.0000 0.0001 1.2224 O.2 1 FORM -0.5700 + 3 H3 0.9319 0.0000 -0.5899 H 1 FORM 0.0600 + 4 H4 -0.9319 -0.0002 -0.5899 H 1 FORM 0.0600 +@BOND + 1 1 4 1 + 2 1 3 1 + 3 1 2 2 +@SUBSTRUCTURE + 1 FORM 1 +@COMMENT +COMMENT FORMALDEHYDE +@MOLECULE +CO08A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0119 0.0038 0.0073 C.2 1 CO08 -0.2882 + 2 C2 -0.0117 0.0137 1.5062 C.3 1 CO08 0.1992 + 3 C3 1.3899 -0.0278 2.0871 C.2 1 CO08 0.4490 + 4 O4 2.4272 0.1702 1.4617 O.2 1 CO08 -0.5700 + 5 H5 0.5597 0.7887 -0.4868 H 1 CO08 0.1500 + 6 C4 -0.6487 -0.9042 -0.7438 C.2 1 CO08 -0.3000 + 7 H8 -0.5556 -0.8495 1.9054 H 1 CO08 0.0000 + 8 H9 -0.4987 0.9222 1.8745 H 1 CO08 0.0000 + 9 H10 1.4283 -0.2134 3.1746 H 1 CO08 0.0600 + 10 H2 -0.5978 -0.8569 -1.8278 H 1 CO08 0.1500 + 11 H3 -1.2261 -1.7121 -0.3059 H 1 CO08 0.1500 +@BOND + 1 1 6 2 + 2 1 5 1 + 3 1 2 1 + 4 2 8 1 + 5 2 7 1 + 6 2 3 1 + 7 3 9 1 + 8 3 4 2 + 9 6 11 1 + 10 6 10 1 +@SUBSTRUCTURE + 1 CO08 1 +@COMMENT +COMMENT BUT-3-ENEAL C-C-C-C ANTI +@MOLECULE +HL08A + 12 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 Cl1 -0.0363 0.0484 -0.0021 CL 1 HL08 -0.2900 + 2 C3 -0.0160 0.0214 1.7802 C.3 1 HL08 0.2900 + 3 C2 1.3487 -0.0258 2.5099 C.3 1 HL08 0.0000 + 4 C4 -0.3507 -1.3025 2.5099 C.3 1 HL08 0.0000 + 5 C5 0.6435 -0.8565 3.6035 C.3 1 HL08 0.0000 + 6 H6 2.1297 -0.5820 1.9779 H 1 HL08 0.0000 + 7 H7 1.7523 0.9384 2.8290 H 1 HL08 0.0000 + 8 H8 -0.6422 0.8549 2.1248 H 1 HL08 0.0000 + 9 H9 -1.3891 -1.4217 2.8289 H 1 HL08 0.0000 + 10 H10 -0.0339 -2.2075 1.9779 H 1 HL08 0.0000 + 11 H11 0.1885 -0.2508 4.3956 H 1 HL08 0.0000 + 12 H12 1.2403 -1.6509 4.0580 H 1 HL08 0.0000 +@BOND + 1 1 2 1 + 2 3 2 1 + 3 3 5 1 + 4 3 6 1 + 5 3 7 1 + 6 2 4 1 + 7 2 8 1 + 8 4 5 1 + 9 4 9 1 + 10 4 10 1 + 11 5 11 1 + 12 5 12 1 +@SUBSTRUCTURE + 1 HL08 1 +@COMMENT +COMMENT CHLOROCYCLOBUTANE +@MOLECULE +IM02A + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0036 -0.0001 0.0016 C.2 1 IM02 0.3300 + 2 N2 -0.0130 0.0001 1.2844 N.2 1 IM02 -0.6960 + 3 C3 1.3010 0.0000 1.9196 C.3 1 IM02 0.2460 + 4 H4 1.3974 -0.8855 2.5553 H 1 IM02 0.0000 + 5 H5 1.3976 0.8857 2.5551 H 1 IM02 0.0000 + 6 H6 2.1376 -0.0001 1.2122 H 1 IM02 0.0000 + 7 H7 0.9244 -0.0003 -0.6061 H 1 IM02 0.0600 + 8 H8 -0.9472 -0.0001 -0.5549 H 1 IM02 0.0600 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 2 2 + 4 2 3 1 + 5 3 6 1 + 6 3 5 1 + 7 3 4 1 +@SUBSTRUCTURE + 1 IM02 1 +@COMMENT +COMMENT N-METHYLFORMALDEHYDEIMINE +@MOLECULE +NC10A + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0009 0.0000 0.0015 C.2 1 NC10 0.2800 + 2 N2 -0.0001 0.0000 1.2845 N.2 1 NC10 -0.1461 + 3 C3 1.1917 0.0000 2.1487 C.3 1 NC10 0.3461 + 4 H4 0.9514 0.0000 -0.5523 H 1 NC10 0.0600 + 5 H5 -0.9590 0.0000 -0.5351 H 1 NC10 0.0600 + 6 H6 -0.9078 0.0000 1.7623 H 1 NC10 0.4000 + 7 H7 2.0946 0.0000 1.5328 H 1 NC10 0.0000 + 8 H8 1.1536 0.8970 2.7705 H 1 NC10 0.0000 + 9 H9 1.1536 -0.8970 2.7705 H 1 NC10 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 2 2 + 4 2 6 1 + 5 2 3 1 + 6 3 9 1 + 7 3 8 1 + 8 3 7 1 +@SUBSTRUCTURE + 1 NC10 1 +@COMMENT +COMMENT N-METHYLFORMALDEHYDEIMINE CATION +@MOLECULE +NC13A + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 0.0000 0.0000 -0.0014 N.2 1 NC13 -0.2000 + 2 C2 0.0000 0.0000 1.2784 C.2 1 NC13 0.2800 + 3 H3 0.8689 0.0000 -0.5388 H 1 NC13 0.4000 + 4 H4 0.9573 0.0000 1.8193 H 1 NC13 0.0600 + 5 H5 -0.9573 0.0000 1.8193 H 1 NC13 0.0600 + 6 H6 -0.8689 0.0000 -0.5388 H 1 NC13 0.4000 +@BOND + 1 1 2 2 + 2 1 3 1 + 3 1 6 1 + 4 2 4 1 + 5 2 5 1 +@SUBSTRUCTURE + 1 NC13 1 +@COMMENT +COMMENT FORMALDEHYDEIMINE CATION +@MOLECULE +NH10A + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.0014 0.0021 -0.0010 N.3 1 NH3 -1.0800 + 2 H2 0.0018 -0.0027 1.0179 H 1 NH3 0.3600 + 3 H3 0.9772 -0.0028 -0.2850 H 1 NH3 0.3600 + 4 H4 -0.3808 -0.9000 -0.2850 H 1 NH3 0.3600 +@BOND + 1 1 4 1 + 2 1 3 1 + 3 1 2 1 +@SUBSTRUCTURE + 1 NH3 1 +@COMMENT +COMMENT AMMONIA +@MOLECULE +NH20A + 14 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0060 -0.0315 -0.0137 C.3 1 NH20 0.2560 + 2 N1 -0.0194 0.0258 1.4765 N.3 1 NH20 -0.1220 + 3 C3 1.3744 0.0497 2.0383 C.3 1 NH20 0.2560 + 4 C4 1.3635 -0.0729 3.5496 C.3 1 NH20 0.0000 + 5 O1 -0.7496 1.0962 1.8928 O.3 1 NH20 -0.7500 + 6 H2 -0.4485 -0.8660 1.7912 H 1 NH20 0.3600 + 7 H1 0.5514 -0.9340 -0.2971 H 1 NH20 0.0000 + 8 H3 -1.0347 -0.0887 -0.3411 H 1 NH20 0.0000 + 9 H4 0.4919 0.8773 -0.3756 H 1 NH20 0.0000 + 10 H5 1.8964 -0.8019 1.5909 H 1 NH20 0.0000 + 11 H6 1.8300 0.9893 1.7098 H 1 NH20 0.0000 + 12 H7 2.3867 -0.1072 3.9357 H 1 NH20 0.0000 + 13 H8 0.8530 0.7770 4.0134 H 1 NH20 0.0000 + 14 H9 0.8450 -0.9844 3.8639 H 1 NH20 0.0000 +@BOND + 1 1 2 1 + 2 1 7 1 + 3 1 8 1 + 4 1 9 1 + 5 2 3 1 + 6 2 5 1 + 7 2 6 1 + 8 3 4 1 + 9 3 10 1 + 10 3 11 1 + 11 4 12 1 + 12 4 13 1 + 13 4 14 1 +@SUBSTRUCTURE + 1 NH20 1 +@COMMENT +COMMENT METHYLETHYLAMINE OXIDE, CNCC ANTI +@MOLECULE +NH22A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H1 0.0318 -0.0865 -0.0149 H 1 NH22 0.3600 + 2 N1 -0.0044 -0.0092 1.0196 N.3 1 NH22 -0.2260 + 3 C3 1.4076 0.0228 1.4990 C.3 1 NH22 0.2560 + 4 C4 1.4874 -0.0767 3.0072 C.3 1 NH22 0.0000 + 5 O1 -0.7207 1.0687 1.4115 O.3 1 NH22 -0.7500 + 6 H2 -0.4226 -0.9061 1.3350 H 1 NH22 0.3600 + 7 H5 1.8859 -0.8351 1.0178 H 1 NH22 0.0000 + 8 H6 1.8376 0.9528 1.1160 H 1 NH22 0.0000 + 9 H7 2.5316 -0.1033 3.3327 H 1 NH22 0.0000 + 10 H8 1.0022 0.7791 3.4871 H 1 NH22 0.0000 + 11 H9 0.9906 -0.9839 3.3661 H 1 NH22 0.0000 +@BOND + 1 1 2 1 + 2 2 6 1 + 3 2 5 1 + 4 2 3 1 + 5 3 8 1 + 6 3 7 1 + 7 3 4 1 + 8 4 11 1 + 9 4 10 1 + 10 4 9 1 +@SUBSTRUCTURE + 1 NH22 1 +@COMMENT +COMMENT ETHYLAMINE N-OXIDE ONCC GAUCHE +@MOLECULE +NH23A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H1 0.0055 -0.0607 -0.0219 H 1 NH23 0.3600 + 2 N1 0.0059 -0.0144 1.0008 N.3 1 NH23 -0.7300 + 3 C3 1.3944 0.0115 1.4688 C.3 1 NH23 0.2700 + 4 C4 1.4803 0.0435 2.9876 C.3 1 NH23 0.0000 + 5 O1 -0.5115 -1.3260 1.3613 O.3 1 NH23 -0.3000 + 6 H4 1.9478 -0.8499 1.0771 H 1 NH23 0.0000 + 7 H5 1.8747 0.9113 1.0691 H 1 NH23 0.0000 + 8 H6 2.5260 0.1214 3.3025 H 1 NH23 0.0000 + 9 H7 0.9416 0.9057 3.3949 H 1 NH23 0.0000 + 10 H8 1.0634 -0.8645 3.4353 H 1 NH23 0.0000 + 11 H9 -1.3094 -1.0902 1.8740 H 1 NH23 0.4000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 2 5 1 + 4 3 4 1 + 5 3 6 1 + 6 3 7 1 + 7 4 8 1 + 8 4 9 1 + 9 4 10 1 + 10 5 11 1 +@SUBSTRUCTURE + 1 NH23 1 +@COMMENT +COMMENT ETHYLHYDROXYLAMINE, ONCC GAUCHE +@MOLECULE +OH10A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0005 0.0000 0.0024 C.2 1 VINL -0.3000 + 2 C2 0.0007 -0.0001 1.3338 C.2 1 VINL -0.0733 + 3 O3 1.1621 0.0002 2.0505 O.3 1 VINL -0.5267 + 4 H4 -0.9287 -0.0003 -0.5573 H 1 VINL 0.1500 + 5 H5 0.9321 0.0004 -0.5522 H 1 VINL 0.1500 + 6 H6 -0.8984 -0.0005 1.9363 H 1 VINL 0.1500 + 7 H7 0.9356 0.0001 2.9972 H 1 VINL 0.4500 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 2 2 + 4 2 6 1 + 5 2 3 1 + 6 3 7 1 +@SUBSTRUCTURE + 1 VINL 1 +@COMMENT +COMMENT trans-VINYL ALCOHOL +@MOLECULE +SR01A + 3 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.0007 0.0000 -0.0007 S.3 1 RS01 -0.3600 + 2 H2 -0.0007 0.0000 1.3403 H 1 RS01 0.1800 + 3 H3 1.3380 0.0000 -0.0796 H 1 RS01 0.1800 +@BOND + 1 1 2 1 + 2 1 3 1 +@SUBSTRUCTURE + 1 RS01 1 +@COMMENT +COMMENT HYDROGEN SULFIDE +@MOLECULE +SR05A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.0189 -0.0067 -0.0009 S.3 1 RS02 -0.1800 + 2 S2 0.0008 0.0577 2.0519 S.3 1 RS02 -0.2300 + 3 C3 1.7679 0.0031 2.4382 C.3 1 RS02 0.2300 + 4 H4 0.0205 -1.3362 -0.1825 H 1 RS02 0.1800 + 5 H5 1.8960 0.0315 3.5238 H 1 RS02 0.0000 + 6 H6 2.2826 0.8671 2.0093 H 1 RS02 0.0000 + 7 H7 2.2153 -0.9216 2.0639 H 1 RS02 0.0000 +@BOND + 1 1 2 1 + 2 1 4 1 + 3 2 3 1 + 4 3 5 1 + 5 3 6 1 + 6 3 7 1 +@SUBSTRUCTURE + 1 RS02 1 +@COMMENT +COMMENT METHYL HYDROGEN DISULFIDE +@MOLECULE +SR07A + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 0.0031 -0.0361 -0.0065 C.2 1 SR07 0.1015 + 2 C2 -0.0020 -0.0149 1.3912 C.2 1 SR07 -0.1500 + 3 C3 1.2218 -0.0224 -0.6905 C.2 1 SR07 -0.1500 + 4 S1 -1.5224 -0.1024 -0.9198 S.3 1 SR07 -0.2815 + 5 C5 1.2021 0.0305 2.0978 C.2 1 SR07 -0.1500 + 6 H6 -0.9378 -0.0388 1.9435 H 1 SR07 0.1500 + 7 C7 2.4252 0.0232 0.0167 C.2 1 SR07 -0.1500 + 8 H8 1.2443 -0.0467 -1.7774 H 1 SR07 0.1500 + 9 H9 -2.2278 0.6903 -0.1003 H 1 SR07 0.1800 + 10 C10 2.4147 0.0509 1.4104 C.2 1 SR07 -0.1500 + 11 H11 1.1935 0.0466 3.1847 H 1 SR07 0.1500 + 12 H12 3.3699 0.0352 -0.5209 H 1 SR07 0.1500 + 13 H13 3.3517 0.0849 1.9605 H 1 SR07 0.1500 +@BOND + 1 1 2 1 + 2 1 3 2 + 3 1 4 1 + 4 2 5 2 + 5 2 6 1 + 6 3 7 1 + 7 3 8 1 + 8 4 9 1 + 9 5 10 1 + 10 5 11 1 + 11 7 10 2 + 12 7 12 1 + 13 10 13 1 +@SUBSTRUCTURE + 1 SR07 1 +@COMMENT +COMMENT THIOPHENOL, NONPLANAR +@MOLECULE +AN05A + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.3904 -0.3499 0.0002 C.3 1 OA01 -0.0726 + 2 O1 2.7143 -0.3937 0.0002 O.3 1 OA01 -0.9274 + 3 H1 0.9014 0.1571 0.8493 H 1 OA01 0.0000 + 4 H2 0.9014 0.1567 -0.8492 H 1 OA01 0.0000 + 5 H3 0.8528 -1.3133 0.0004 H 1 OA01 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 +@SUBSTRUCTURE + 1 OA01 1 +@COMMENT +COMMENT METHOXIDE ANION +@MOLECULE +AN06A + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 1.3097 -0.3471 0.0002 C.3 1 OA01 0.0500 + 2 S1 3.1352 -0.4075 0.0002 S.3 1 OA01 -1.0500 + 3 H1 0.9024 0.1722 0.8754 H 1 OA01 0.0000 + 4 H2 0.9024 0.1718 -0.8752 H 1 OA01 0.0000 + 5 H3 0.8523 -1.3432 0.0004 H 1 OA01 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 +@SUBSTRUCTURE + 1 OA01 1 +@COMMENT +COMMENT METHYLSULFIDE ANION +@MOLECULE +AN08A + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 1.1297 1.2438 0.0000 S.3 1 AN07 -0.9500 + 2 C2 0.1656 -0.1794 0.0000 C.2 1 AN07 -0.2000 + 3 C3 -1.1687 -0.2886 0.0000 C.2 1 AN07 -0.3000 + 4 H1 0.7219 -1.1153 0.0000 H 1 AN07 0.1500 + 5 H2 -1.7931 0.5981 0.0000 H 1 AN07 0.1500 + 6 H3 -1.6471 -1.2590 0.0000 H 1 AN07 0.1500 +@BOND + 1 1 2 1 + 2 2 4 1 + 3 2 3 2 + 4 3 6 1 + 5 3 5 1 +@SUBSTRUCTURE + 1 AN07 1 +@COMMENT +COMMENT VINYL SULFIDE ANION +@MOLECULE +AN11A + 6 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -2.3322 1.9196 -0.0002 N.3 1 AN11 -0.2500 + 2 N2 -1.0067 2.2029 -0.0001 N.2 1 AN11 -0.5875 + 3 C3 -0.4223 0.9903 0.0001 C.2 1 AN11 0.5250 + 4 N4 -1.2953 -0.0344 0.0001 N.2 1 AN11 -0.5875 + 5 N3 -2.5055 0.5760 -0.0001 N.2 1 AN11 -0.2500 + 6 H1 0.6477 0.8523 0.0003 H 1 AN11 0.1500 +@BOND + 1 1 5 1 + 2 1 2 1 + 3 2 3 2 + 4 3 6 1 + 5 3 4 am + 6 4 5 2 +@SUBSTRUCTURE + 1 AN11 1 +@COMMENT +COMMENT TETRAZOLE ANION +@MOLECULE +AN12A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -1.5750 0.5810 0.0001 C.2 1 AN12 -0.3500 + 2 C2 -2.9139 0.5574 -0.0001 C.2 1 AN12 -0.3000 + 3 N1 -0.7297 -0.4647 0.0002 N.3 1 AN12 -0.9500 + 4 H1 0.2197 -0.0740 0.0004 H 1 AN12 0.1500 + 5 H2 -1.1544 1.5900 0.0002 H 1 AN12 0.1500 + 6 H3 -3.4349 -0.3932 -0.0002 H 1 AN12 0.1500 + 7 H4 -3.4919 1.4714 -0.0001 H 1 AN12 0.1500 +@BOND + 1 1 5 1 + 2 1 3 1 + 3 1 2 2 + 4 2 7 1 + 5 2 6 1 + 6 3 4 1 +@SUBSTRUCTURE + 1 AN12 1 +@COMMENT +COMMENT DEPROTONATED VINYLAMINE ANION +@MOLECULE +HL11A + 9 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 0.0393 0.0087 0.6979 F 1 HL17 -0.2317 + 2 C2 -0.9321 0.1111 -0.2794 C.3 1 HL17 0.1317 + 3 C3 -2.0857 1.0213 -0.0041 C.3 1 HL17 -0.2000 + 4 C4 -2.2744 -0.4715 0.0271 C.3 1 HL17 -0.2000 + 5 H1 -0.5102 0.0371 -1.2696 H 1 HL17 0.1000 + 6 H2 -2.0846 1.5550 0.9384 H 1 HL17 0.1000 + 7 H3 -2.5052 1.5717 -0.8366 H 1 HL17 0.1000 + 8 H4 -2.4011 -0.9495 0.9908 H 1 HL17 0.1000 + 9 H5 -2.8219 -0.9341 -0.7842 H 1 HL17 0.1000 +@BOND + 1 1 2 1 + 2 2 5 1 + 3 2 4 1 + 4 2 3 1 + 5 3 7 1 + 6 3 6 1 + 7 3 4 1 + 8 4 9 1 + 9 4 8 1 +@SUBSTRUCTURE + 1 HL17 1 +@COMMENT +COMMENT CYCLOPROPYL FLUORIDE +@MOLECULE +HL13A + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 F1 -1.6503 -1.1206 0.0002 F 1 HL13 -0.1495 + 2 C2 -0.3926 -0.6449 0.0001 C.2 1 HL13 -0.0005 + 3 C3 0.6570 -1.4623 0.0000 C.2 1 HL13 -0.3000 + 4 H1 -0.3765 0.4353 0.0000 H 1 HL13 0.1500 + 5 H2 0.5150 -2.5373 0.0001 H 1 HL13 0.1500 + 6 H3 1.6685 -1.0737 -0.0001 H 1 HL13 0.1500 +@BOND + 1 1 2 1 + 2 2 4 1 + 3 2 3 2 + 4 3 6 1 + 5 3 5 1 +@SUBSTRUCTURE + 1 HL13 1 +@COMMENT +COMMENT VINYL FLUORIDE +@MOLECULE +NO03A + 6 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.3486 -0.5026 0.1850 C.3 1 NO01 0.3332 + 2 N1 -0.8698 -0.5122 0.1009 N.2 1 NO01 -0.1714 + 3 O1 -0.3912 0.6249 0.1762 O.2 1 NO01 -0.1618 + 4 H1 -2.6368 -1.1077 1.0468 H 1 NO01 0.0000 + 5 H2 -2.7238 0.5174 0.2977 H 1 NO01 0.0000 + 6 H3 -2.7369 -0.9478 -0.7332 H 1 NO01 0.0000 +@BOND + 1 1 6 1 + 2 1 5 1 + 3 1 4 1 + 4 1 2 1 + 5 2 3 2 +@SUBSTRUCTURE + 1 NO01 1 +@COMMENT +COMMENT NITROSOMETHANE +@MOLECULE +NX02A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -3.2273 1.9098 -0.0002 C.3 1 NX02 0.0610 + 2 C2 -2.4844 0.6163 0.0001 C.2 1 NX02 -0.1086 + 3 N2 -1.1653 0.6307 0.0001 N.1 1 NX02 0.3566 + 4 N1 -0.0252 0.6432 0.0002 N.2 1 NX02 -0.3700 + 5 C5 -3.1988 -0.6932 0.0002 C.3 1 NX02 0.0610 + 6 H1 -3.8608 1.9616 0.8894 H 1 NX02 0.0000 + 7 H2 -2.5407 2.7607 -0.0003 H 1 NX02 0.0000 + 8 H3 -3.8607 1.9613 -0.8899 H 1 NX02 0.0000 + 9 H4 -3.8309 -0.7589 -0.8895 H 1 NX02 0.0000 + 10 H5 -2.4937 -1.5288 0.0004 H 1 NX02 0.0000 + 11 H6 -3.8310 -0.7586 0.8899 H 1 NX02 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 5 1 + 6 2 3 2 + 7 3 4 2 + 8 5 11 1 + 9 5 10 1 + 10 5 9 1 +@SUBSTRUCTURE + 1 NX02 1 +@COMMENT +COMMENT DIMETHYLDIAZOMETHANE +@MOLECULE +OC02A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.7182 2.4471 0.3061 C.3 1 OC02 0.0610 + 2 C2 -1.9212 1.1982 0.4956 C.2 1 OC02 0.8280 + 3 O1 -0.7339 1.2450 0.9980 O.2 1 OC02 -0.4500 + 4 C4 -2.4779 -0.1311 0.1091 C.3 1 OC02 0.0610 + 5 H1 -0.4361 2.1582 1.2281 H 1 OC02 0.5000 + 6 H2 -3.6477 2.3706 0.8760 H 1 OC02 0.0000 + 7 H3 -2.1530 3.3182 0.6432 H 1 OC02 0.0000 + 8 H4 -2.9659 2.5585 -0.7526 H 1 OC02 0.0000 + 9 H5 -2.7139 -0.1283 -0.9580 H 1 OC02 0.0000 + 10 H6 -1.7493 -0.9159 0.3235 H 1 OC02 0.0000 + 11 H7 -3.3962 -0.3165 0.6719 H 1 OC02 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 4 1 + 6 2 3 2 + 7 3 5 1 + 8 4 11 1 + 9 4 10 1 + 10 4 9 1 +@SUBSTRUCTURE + 1 OC02 1 +@COMMENT +COMMENT PROTONATED ACETONE +@MOLECULE +PO02A + 5 4 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.0819 -0.2172 -0.0001 P 1 PO01 0.8086 + 2 O1 -0.0657 1.2929 0.0000 O.2 1 PO01 -0.7000 + 3 H1 -0.7143 -0.8636 1.0830 H 1 PO01 -0.0362 + 4 H2 -0.7143 -0.8634 -1.0833 H 1 PO01 -0.0362 + 5 H3 1.1617 -0.8837 -0.0002 H 1 PO01 -0.0362 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 2 +@SUBSTRUCTURE + 1 PO01 1 +@COMMENT +COMMENT PHOSPHINE OXIDE +@MOLECULE +PO05A + 13 12 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C4 0.0120 0.0057 -0.0026 C.3 1 PHNS 0.3557 + 2 N1 0.0175 -0.0406 1.4481 N.3 1 PHNS -1.1137 + 3 P1 1.5455 -0.0089 2.2629 P 1 PHNS 1.2380 + 4 O1 2.3723 1.0873 1.6528 O.2 1 PHNS -0.9500 + 5 O2 1.2028 -0.0935 3.7246 O.3 1 PHNS -0.9500 + 6 C11 2.2490 -1.6026 1.7745 C.3 1 PHNS 0.0000 + 7 H1 -0.6171 -0.6828 1.9155 H 1 PHNS 0.4200 + 8 HC8 0.6806 0.7846 -0.3758 H 1 PHNS 0.0000 + 9 HC9 0.3149 -0.9601 -0.4141 H 1 PHNS 0.0000 + 10 HC10 -1.0009 0.2222 -0.3527 H 1 PHNS 0.0000 + 11 HC11 1.5752 -2.4181 2.0514 H 1 PHNS 0.0000 + 12 HC12 2.4209 -1.6368 0.6955 H 1 PHNS 0.0000 + 13 HC13 3.2061 -1.7516 2.2820 H 1 PHNS 0.0000 +@BOND + 1 1 10 1 + 2 1 9 1 + 3 1 8 1 + 4 1 2 1 + 5 2 3 1 + 6 2 7 1 + 7 3 4 2 + 8 3 5 1 + 9 3 6 1 + 10 6 13 1 + 11 6 12 1 + 12 6 11 1 +@SUBSTRUCTURE + 1 PHNS 1 +@COMMENT +COMMENT METHYL-NHPO2-METHYL ANION, CPNH GAUCHE +@MOLECULE +PR01A + 4 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.0003 -0.0003 -0.0003 P 1 PR01 -0.2880 + 2 H2 0.0020 0.0022 1.4147 H 1 PR01 0.0960 + 3 H3 1.4102 0.0022 -0.1129 H 1 PR01 0.0960 + 4 H4 -0.1225 1.4049 -0.1129 H 1 PR01 0.0960 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 1 4 1 +@SUBSTRUCTURE + 1 PR01 1 +@COMMENT +COMMENT PHOSPHINE +@MOLECULE +PR02A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.5373 0.3664 0.0169 C.3 1 PR02 0.1669 + 2 P1 -0.7617 0.5374 0.4447 P 1 PR02 -0.3589 + 3 H1 -0.4352 1.5216 -0.5181 H 1 PR02 0.0960 + 4 H2 -0.2844 -0.5586 -0.3125 H 1 PR02 0.0960 + 5 H3 -2.6632 0.2505 -1.0632 H 1 PR02 0.0000 + 6 H4 -2.9672 -0.5095 0.5104 H 1 PR02 0.0000 + 7 H5 -3.0949 1.2511 0.3364 H 1 PR02 0.0000 +@BOND + 1 1 2 1 + 2 1 5 1 + 3 1 6 1 + 4 1 7 1 + 5 2 3 1 + 6 2 4 1 +@SUBSTRUCTURE + 1 PR02 1 +@COMMENT +COMMENT METHYLPHOSPHINE +@MOLECULE +PR03A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.5744 0.3212 0.0331 C.3 1 PR02 0.1669 + 2 P1 -0.8167 0.3610 0.5598 P 1 PR02 -0.0517 + 3 CL1 -0.1344 1.9820 -0.5888 CL 1 PR02 -0.2112 + 4 H2 -0.3475 -0.6703 -0.2878 H 1 PR02 0.0960 + 5 H3 -2.6620 0.3166 -1.0573 H 1 PR02 0.0000 + 6 H4 -3.0608 -0.5807 0.4156 H 1 PR02 0.0000 + 7 H5 -3.1141 1.1898 0.4210 H 1 PR02 0.0000 +@BOND + 1 1 7 1 + 2 1 6 1 + 3 1 5 1 + 4 1 2 1 + 5 2 4 1 + 6 2 3 1 +@SUBSTRUCTURE + 1 PR02 1 +@COMMENT +COMMENT METHYLCHLOROPHOSPHINE +@MOLECULE +PR04A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.6544 2.3975 0.3126 C.3 1 PR04 0.0610 + 2 C2 -1.8499 1.1289 0.5496 C.2 1 PR04 0.1254 + 3 P1 -0.2598 1.1239 1.2898 P 1 PR04 -0.3432 + 4 C4 -2.5328 -0.1517 0.0926 C.3 1 PR04 0.0610 + 5 H1 -0.1645 2.5299 1.4868 H 1 PR04 0.0958 + 6 H2 -3.6053 2.3240 0.8483 H 1 PR04 0.0000 + 7 H3 -2.1221 3.2875 0.6571 H 1 PR04 0.0000 + 8 H4 -2.8572 2.4983 -0.7576 H 1 PR04 0.0000 + 9 H5 -2.7335 -0.0878 -0.9809 H 1 PR04 0.0000 + 10 H6 -1.9126 -1.0309 0.2860 H 1 PR04 0.0000 + 11 H7 -3.4817 -0.2622 0.6254 H 1 PR04 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 4 1 + 6 2 3 2 + 7 3 5 1 + 8 4 11 1 + 9 4 10 1 + 10 4 9 1 +@SUBSTRUCTURE + 1 PR04 1 +@COMMENT +COMMENT (CH3)2C=PH +@MOLECULE +SI02A + 8 7 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -0.5924 0.4082 0.0003 SI 1 SI01 0.6805 + 2 C1 -0.5929 2.2526 0.0003 C.3 1 SI01 -0.0805 + 3 H2 0.1037 -0.1082 -1.2054 H 1 SI01 -0.2000 + 4 H3 0.1039 -0.1082 1.2059 H 1 SI01 -0.2000 + 5 H4 -1.9844 -0.1087 0.0004 H 1 SI01 -0.2000 + 6 H1 -1.1032 2.6481 -0.8833 H 1 SI01 0.0000 + 7 H5 -1.1031 2.6481 0.8839 H 1 SI01 0.0000 + 8 H6 0.4272 2.6485 0.0002 H 1 SI01 0.0000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 2 8 1 + 6 2 7 1 + 7 2 6 1 +@SUBSTRUCTURE + 1 SI01 1 +@COMMENT +COMMENT METHYLSILANE +@MOLECULE +SI03A + 9 8 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 SI1 -0.6158 0.4454 0.0281 SI 1 SI01 0.7779 + 2 C1 -0.6148 2.2915 0.0378 C.3 1 SI01 -0.0805 + 3 O1 0.1525 -0.1941 -1.2967 O.3 1 SI01 -0.6974 + 4 H3 0.0381 -0.0740 1.2506 H 1 SI01 -0.2000 + 5 H4 -2.0128 -0.0440 -0.0047 H 1 SI01 -0.2000 + 6 H1 -1.1072 2.6919 -0.8537 H 1 SI01 0.0000 + 7 H5 -1.1425 2.6819 0.9133 H 1 SI01 0.0000 + 8 H6 0.4055 2.6863 0.0605 H 1 SI01 0.0000 + 9 H2 -0.3284 -0.1377 -2.1369 H 1 SI01 0.4000 +@BOND + 1 1 5 1 + 2 1 4 1 + 3 1 3 1 + 4 1 2 1 + 5 2 8 1 + 6 2 7 1 + 7 2 6 1 + 8 3 9 1 +@SUBSTRUCTURE + 1 SI01 1 +@COMMENT +COMMENT METHYL HYDROXYL SILANE +@MOLECULE +SO07A + 22 22 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0024 0.0850 0.0247 C.2 1 SO07 -0.1500 + 2 C2 0.0171 -0.0497 1.4118 C.2 1 SO07 -0.1500 + 3 C3 1.2360 -0.1090 2.0897 C.2 1 SO07 -0.1500 + 4 C4 2.4442 -0.0286 1.3824 C.2 1 SO07 0.0862 + 5 C5 2.4172 0.0961 -0.0140 C.2 1 SO07 -0.1500 + 6 C6 1.1943 0.1537 -0.6879 C.2 1 SO07 -0.1500 + 7 C7 3.7149 -0.0741 2.1582 C.2 1 SO07 0.7201 + 8 N1 4.8276 0.4973 1.5296 N.3 1 SO07 -0.7943 + 9 S1 6.3811 0.4296 2.1022 S.1 1 SO07 1.3328 + 10 O1 7.1379 1.2724 1.1983 O.2 1 SO07 -0.6500 + 11 O2 6.7497 -0.9518 2.3067 O.2 1 SO07 -0.6500 + 12 C13 6.2892 1.2718 3.6706 C.3 1 SO07 0.1052 + 13 H1 4.7365 1.0966 0.7162 H 1 SO07 0.4200 + 14 O3 3.7518 -0.5345 3.2878 O.2 1 SO07 -0.5700 + 15 H2 -0.9526 0.1260 -0.5032 H 1 SO07 0.1500 + 16 H3 -0.9166 -0.1127 1.9660 H 1 SO07 0.1500 + 17 H4 1.2385 -0.2182 3.1731 H 1 SO07 0.1500 + 18 H5 3.3305 0.1140 -0.6020 H 1 SO07 0.1500 + 19 H6 1.1735 0.2411 -1.7721 H 1 SO07 0.1500 + 20 H7 5.7158 0.6724 4.3776 H 1 SO07 0.0000 + 21 H8 7.3097 1.3940 4.0411 H 1 SO07 0.0000 + 22 H9 5.8337 2.2522 3.5196 H 1 SO07 0.0000 +@BOND + 1 1 2 2 + 2 1 6 1 + 3 1 15 1 + 4 2 3 1 + 5 2 16 1 + 6 3 4 2 + 7 3 17 1 + 8 4 5 1 + 9 4 7 1 + 10 5 6 2 + 11 5 18 1 + 12 6 19 1 + 13 7 8 am + 14 7 14 2 + 15 8 9 1 + 16 8 13 1 + 17 9 10 2 + 18 9 11 2 + 19 9 12 1 + 20 12 20 1 + 21 12 21 1 + 22 12 22 1 +@SUBSTRUCTURE + 1 SO07 1 +@COMMENT +COMMENT PHENYL-C(=O)-NHSO2-METHYL, CSNC G +@MOLECULE +SO12A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 0.0034 0.0000 0.0027 S.1 1 SULF 1.6674 + 2 O2 0.0100 0.0074 1.6069 O.3 1 SULF -0.6837 + 3 O3 1.5762 -0.0073 -0.3127 O.3 1 SULF -0.6837 + 4 O4 -0.5074 -1.2711 -0.4434 O.2 1 SULF -0.6500 + 5 O5 -0.5363 1.2710 -0.4082 O.2 1 SULF -0.6500 + 6 H6 0.0787 0.9424 1.8912 H 1 SULF 0.5000 + 7 H7 1.8686 -0.9423 -0.3023 H 1 SULF 0.5000 +@BOND + 1 1 5 2 + 2 1 4 2 + 3 1 3 1 + 4 1 2 1 + 5 2 6 1 + 6 3 7 1 +@SUBSTRUCTURE + 1 SULF 1 +@COMMENT +COMMENT SULFURIC ACID, C2 +@MOLECULE +SO15A + 12 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C2 -2.7851 -0.6573 0.7335 C.3 1 SO14 0.1052 + 2 S1 -1.5409 -0.6186 2.0068 S.1 1 SO14 0.7349 + 3 O2 -0.4923 -1.4902 1.4840 O.2 1 SO14 -0.6500 + 4 O1 -2.2449 -1.1169 3.1852 O.2 1 SO14 -0.6500 + 5 N1 -1.2136 0.9410 2.0018 N.3 1 SO14 -0.4901 + 6 C1 -0.1910 1.2925 2.9782 C.3 1 SO14 -0.0500 + 7 H2 -3.1202 -1.6907 0.6150 H 1 SO14 0.0000 + 8 H3 -3.6288 -0.0311 1.0327 H 1 SO14 0.0000 + 9 H4 -2.3534 -0.3027 -0.2053 H 1 SO14 0.0000 + 10 H1 0.7670 0.7937 2.7891 H 1 SO14 0.0000 + 11 H5 0.0127 2.3692 2.9518 H 1 SO14 0.0000 + 12 H6 -0.4885 1.0611 4.0078 H 1 SO14 0.0000 +@BOND + 1 1 9 1 + 2 1 8 1 + 3 1 7 1 + 4 1 2 1 + 5 2 5 1 + 6 2 4 2 + 7 2 3 2 + 8 5 6 1 + 9 6 12 1 + 10 6 11 1 + 11 6 10 1 +@SUBSTRUCTURE + 1 SO14 1 +@COMMENT +COMMENT METHYL-SO2-NH(-)-METHYL ANION +@MOLECULE +SO16A + 11 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -2.5543 1.1987 -0.0673 C.3 1 SO16 0.0610 + 2 C2 -1.6194 0.0284 -0.1580 C.2 1 SO16 0.1970 + 3 S1 -0.0087 0.2364 -0.3895 S.1 1 SO16 0.1810 + 4 O1 0.4159 1.6599 -0.4968 O.2 1 SO16 -0.5000 + 5 C5 -2.1749 -1.3600 -0.0336 C.3 1 SO16 0.0610 + 6 H1 -3.0618 1.1738 0.9016 H 1 SO16 0.0000 + 7 H2 -2.0458 2.1598 -0.1707 H 1 SO16 0.0000 + 8 H3 -3.3068 1.1144 -0.8569 H 1 SO16 0.0000 + 9 H4 -2.9151 -1.5210 -0.8229 H 1 SO16 0.0000 + 10 H5 -1.3998 -2.1269 -0.1157 H 1 SO16 0.0000 + 11 H6 -2.6699 -1.4615 0.9366 H 1 SO16 0.0000 +@BOND + 1 1 8 1 + 2 1 7 1 + 3 1 6 1 + 4 1 2 1 + 5 2 5 1 + 6 2 3 2 + 7 3 4 2 + 8 5 11 1 + 9 5 10 1 + 10 5 9 1 +@SUBSTRUCTURE + 1 SO16 1 +@COMMENT +COMMENT (CH3)2C=S=O +@MOLECULE +SO18A + 7 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 H2 -2.3136 0.8190 -0.0157 H 1 SO16 0.0000 + 2 C2 -1.5827 0.0283 -0.2042 C.3 1 SO16 0.0877 + 3 S1 -0.0797 0.4009 0.7813 S.1 1 SO16 0.2123 + 4 O1 0.3257 1.7274 0.1836 O.2 1 SO16 -0.6000 + 5 H1 -2.0042 -0.9282 0.1154 H 1 SO16 0.0000 + 6 S2 1.0637 -1.1910 0.2121 S.2 1 SO16 -0.7000 + 7 H7 -1.3421 0.0060 -1.2704 H 1 SO16 0.0000 +@BOND + 1 1 2 1 + 2 2 7 1 + 3 2 3 1 + 4 2 5 1 + 5 3 4 2 + 6 3 6 2 +@SUBSTRUCTURE + 1 SO16 1 +@COMMENT +COMMENT METHYLTHIOSULFINATE ANION +@MOLECULE +BRMW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -2.4840 1.0537 4.4872 O.3 1 NAPW -0.8600 + 2 H3 -2.2908 1.7885 3.8669 H 1 NAPW 0.4300 + 3 H4 -1.6618 0.5568 4.2896 H 1 NAPW 0.4300 + 4 BR1 0.0690 1.6518 2.4310 BR 1 NAPW -1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT OH2 ... BR- DIMER +@MOLECULE +CA2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9504 -0.6883 4.1275 O.3 1 NAPW -0.8600 + 2 H3 -2.5306 -1.0551 3.4072 H 1 NAPW 0.4300 + 3 H4 -2.5616 -0.9449 4.8694 H 1 NAPW 0.4300 + 4 O3 0.4887 2.1549 5.5051 O.3 1 NAPW -0.8600 + 5 H6 1.2864 2.4282 6.0333 H 1 NAPW 0.4300 + 6 H5 -0.0770 2.9175 5.8026 H 1 NAPW 0.4300 + 7 O4 1.7351 -0.3269 2.6384 O.3 1 NAPW -0.8600 + 8 H8 2.3990 0.1645 2.0836 H 1 NAPW 0.4300 + 9 H7 2.0307 -1.2308 2.3459 H 1 NAPW 0.4300 + 10 CA1 0.0911 0.3799 4.0903 CA 1 NAPW 2.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 5 1 + 4 4 6 1 + 5 7 8 1 + 6 7 9 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT CALCIUM +2 CATION PLUS 3 WATERS +@MOLECULE +CLMW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -2.4761 1.0479 4.4860 O.3 1 NAPW -0.8600 + 2 H3 -2.4125 1.8377 3.9121 H 1 NAPW 0.4300 + 3 H4 -1.6170 0.6691 4.1852 H 1 NAPW 0.4300 + 4 CL1 -0.0428 1.6251 2.5211 CL 1 NAPW -1.0000 +@BOND + 1 1 2 1 + 2 1 3 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT OH2 ... CL- +@MOLECULE +CU1PW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9861 -0.7088 4.1281 O.3 1 NAPW -0.8600 + 2 H3 -2.5426 -1.0556 3.3951 H 1 NAPW 0.4300 + 3 H4 -2.5672 -0.9578 4.8815 H 1 NAPW 0.4300 + 4 CU1 -0.0086 0.3270 4.0927 CU 1 NAPW 1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT CU+ ... WATER DIMER +@MOLECULE +CU2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.6936 -0.5554 4.1229 O.3 1 NAPW -0.8600 + 2 H3 -2.2901 -0.9132 3.4039 H 1 NAPW 0.4300 + 3 H4 -2.3072 -0.8312 4.8633 H 1 NAPW 0.4300 + 4 O3 0.4383 1.9311 5.3290 O.3 1 NAPW -0.8600 + 5 H6 1.2301 2.2050 5.8756 H 1 NAPW 0.4300 + 6 H5 -0.1183 2.7092 5.6214 H 1 NAPW 0.4300 + 7 O4 1.5296 -0.2382 2.8219 O.3 1 NAPW -0.8600 + 8 H8 2.1903 0.2483 2.2495 H 1 NAPW 0.4300 + 9 H7 1.8439 -1.1432 2.5338 H 1 NAPW 0.4300 + 10 CU1 0.0914 0.3792 4.0912 CU 1 NAPW 2.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 5 1 + 4 4 6 1 + 5 7 8 1 + 6 7 9 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT COPPER +2 CATION PLUS 3 WATERS +@MOLECULE +FE2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.7308 -0.5750 4.1235 O.3 1 NAPW -0.8600 + 2 H3 -2.3247 -0.9341 3.4043 H 1 NAPW 0.4300 + 3 H4 -2.3440 -0.8479 4.8641 H 1 NAPW 0.4300 + 4 O3 0.4455 1.9635 5.3548 O.3 1 NAPW -0.8600 + 5 H6 1.2381 2.2374 5.8987 H 1 NAPW 0.4300 + 6 H5 -0.1125 2.7392 5.6479 H 1 NAPW 0.4300 + 7 O4 1.5597 -0.2511 2.7954 O.3 1 NAPW -0.8600 + 8 H8 2.2208 0.2362 2.2257 H 1 NAPW 0.4300 + 9 H7 1.8712 -1.1559 2.5067 H 1 NAPW 0.4300 + 10 FE1 0.0915 0.3791 4.0912 FE 1 NAPW 2.0000 +@BOND + 1 1 3 1 + 2 1 2 1 + 3 4 6 1 + 4 4 5 1 + 5 7 9 1 + 6 7 8 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT IRON+2 CATION PLUS 3 WATERS +@MOLECULE +FE3PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.6268 -0.5207 4.1217 O.3 1 NAPW -0.8600 + 2 H3 -2.2645 -0.8978 3.4169 H 1 NAPW 0.4300 + 3 H4 -2.2801 -0.8196 4.8493 H 1 NAPW 0.4300 + 4 O3 0.4253 1.8728 5.2830 O.3 1 NAPW -0.8600 + 5 H6 1.2119 2.1860 5.8564 H 1 NAPW 0.4300 + 6 H5 -0.1106 2.6821 5.6049 H 1 NAPW 0.4300 + 7 O4 1.4759 -0.2151 2.8694 O.3 1 NAPW -0.8600 + 8 H8 2.1651 0.2446 2.2700 H 1 NAPW 0.4300 + 9 H7 1.8269 -1.1211 2.5507 H 1 NAPW 0.4300 + 10 FE1 0.0915 0.3790 4.0914 FE 1 NAPW 3.0000 +@BOND + 1 1 3 1 + 2 1 2 1 + 3 4 6 1 + 4 4 5 1 + 5 7 9 1 + 6 7 8 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT IRON +3 CATION PLUS 3 WATERS +@MOLECULE +FMW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -2.4567 1.0512 4.4711 O.3 1 NAPW -0.8600 + 2 H3 -2.3017 1.8010 3.8662 H 1 NAPW 0.4300 + 3 H4 -1.5916 0.6231 4.1995 H 1 NAPW 0.4300 + 4 F1 -0.1828 0.8786 3.1161 F 1 NAPW -1.0000 +@BOND + 1 1 2 1 + 2 1 3 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT OH2 ... F- DIMER +@MOLECULE +H3OPW1 + 7 5 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.8222 -0.6848 4.2326 O.3 1 NAPW -0.8600 + 2 H3 -2.1840 -0.8919 3.3382 H 1 NAPW 0.4300 + 3 H4 -2.5431 -1.0883 4.7700 H 1 NAPW 0.4300 + 4 O1 0.2986 0.5107 4.7579 O.3 1 NAPW -0.7019 + 5 H1 -0.5458 0.0343 4.4561 H 1 NAPW 0.5673 + 6 H2 0.0210 1.2911 5.2954 H 1 NAPW 0.5673 + 7 H5 0.8197 -0.1284 5.3010 H 1 NAPW 0.5673 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 7 1 + 4 4 6 1 + 5 4 5 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT H3O+ ... WATER DIMER +@MOLECULE +KPW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9896 -0.7106 4.1282 O.3 1 NAPW -0.8600 + 2 H3 -2.5391 -1.0540 3.3925 H 1 NAPW 0.4300 + 3 H4 -2.5638 -0.9559 4.8840 H 1 NAPW 0.4300 + 4 K1 0.3233 0.5010 4.0868 K 1 NAPW 1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT K+ ... WATER DIMER +@MOLECULE +LIPW1 + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9065 -0.6669 4.1267 O.3 1 NAPW -0.8600 + 2 H3 -2.4730 -1.0186 3.3969 H 1 NAPW 0.4300 + 3 H4 -2.4976 -0.9212 4.8771 H 1 NAPW 0.4300 + 4 LI1 -0.2880 0.1804 4.0978 LI 1 NAPW 1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT LI+ ... WATER DIMER +@MOLECULE +MG2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.5939 -0.5034 4.1212 O.3 1 NAPW -0.8600 + 2 H3 -2.1976 -0.8577 3.4028 H 1 NAPW 0.4300 + 3 H4 -2.2087 -0.7872 4.8611 H 1 NAPW 0.4300 + 4 O3 0.4189 1.8443 5.2601 O.3 1 NAPW -0.8600 + 5 H6 1.2084 2.1189 5.8144 H 1 NAPW 0.4300 + 6 H5 -0.1339 2.6292 5.5507 H 1 NAPW 0.4300 + 7 O4 1.4494 -0.2037 2.8928 O.3 1 NAPW -0.8600 + 8 H8 2.1090 0.2806 2.3127 H 1 NAPW 0.4300 + 9 H7 1.7716 -1.1093 2.6063 H 1 NAPW 0.4300 + 10 MG1 0.0915 0.3791 4.0913 MG 1 NAPW 2.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 5 1 + 4 4 6 1 + 5 7 8 1 + 6 7 9 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT MAGNESIUM +2 CATION PLUS 3 WATERS +@MOLECULE +NAPW + 4 2 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.9111 -0.6693 4.1268 O.3 1 NAPW -0.8600 + 2 H3 -2.4681 -1.0162 3.3939 H 1 NAPW 0.4300 + 3 H4 -2.4927 -0.9184 4.8800 H 1 NAPW 0.4300 + 4 NA1 0.0487 0.3567 4.0917 NA 1 NAPW 1.0000 +@BOND + 1 1 3 1 + 2 1 2 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT NA+ ... WATER DIMER +@MOLECULE +OHMW1 + 5 3 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.6663 0.7572 2.5211 O.3 1 NAPW -0.8600 + 2 H3 -0.9618 1.2378 3.0556 H 1 NAPW 0.4300 + 3 H4 -0.9938 0.4643 1.8776 H 1 NAPW 0.4300 + 4 O1 0.7612 1.5971 3.1101 O.3 1 NAPW -1.1130 + 5 H1 1.6247 1.9513 3.4048 H 1 NAPW 0.1130 +@BOND + 1 1 3 1 + 2 1 2 1 + 3 4 5 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT OH2 ... OH- +@MOLECULE +ZN2PW3 + 10 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 O2 -1.7163 -0.5675 4.1233 O.3 1 NAPW -0.8600 + 2 H3 -2.3112 -0.9260 3.4041 H 1 NAPW 0.4300 + 3 H4 -2.3297 -0.8415 4.8638 H 1 NAPW 0.4300 + 4 O3 0.4427 1.9508 5.3449 O.3 1 NAPW -0.8600 + 5 H6 1.2349 2.2247 5.8899 H 1 NAPW 0.4300 + 6 H5 -0.1148 2.7274 5.6378 H 1 NAPW 0.4300 + 7 O4 1.5481 -0.2461 2.8058 O.3 1 NAPW -0.8600 + 8 H8 2.2090 0.2409 2.2351 H 1 NAPW 0.4300 + 9 H7 1.8607 -1.1509 2.5173 H 1 NAPW 0.4300 + 10 ZN1 0.0915 0.3791 4.0913 ZN 1 NAPW 2.0000 +@BOND + 1 1 2 1 + 2 1 3 1 + 3 4 5 1 + 4 4 6 1 + 5 7 8 1 + 6 7 9 1 +@SUBSTRUCTURE + 1 NAPW 1 +@COMMENT +COMMENT ZINC +2 CATION PLUS 3 WATERS +@MOLECULE +ERULE_01 + 14 14 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 S1 -0.7620 1.0442 0.8595 S.3 1 ER01 -0.2130 + 2 N2 0.7445 1.6830 0.4925 N.3 1 ER01 -0.6470 + 3 N4 1.3456 -0.5534 0.7395 N.3 1 ER01 -0.9000 + 4 C3 1.6616 0.6614 0.0007 C.3 1 ER01 0.5400 + 5 C5 -0.1187 -0.6717 0.7670 C.3 1 ER01 0.5000 + 6 C8 -0.5723 -1.4942 1.9606 C.3 1 ER01 0.0000 + 7 H3 2.7026 0.9580 0.1625 H 1 ER01 0.0000 + 8 H4 -0.4787 -1.1197 -0.1661 H 1 ER01 0.0000 + 9 H8 1.1520 2.0375 1.3577 H 1 ER01 0.3600 + 10 H9 1.7454 -1.3591 0.2673 H 1 ER01 0.3600 + 11 H1 -1.6647 -1.5711 1.9936 H 1 ER01 0.0000 + 12 H2 -0.1741 -2.5134 1.8991 H 1 ER01 0.0000 + 13 H5 -0.2327 -1.0642 2.9102 H 1 ER01 0.0000 + 14 H6 1.5191 0.5103 -1.0764 H 1 ER01 0.0000 +@BOND + 1 1 2 1 + 2 2 4 1 + 3 3 4 1 + 4 5 1 1 + 5 6 5 1 + 6 3 5 1 + 7 4 7 1 + 8 5 8 1 + 9 2 9 1 + 10 3 10 1 + 11 6 11 1 + 12 6 12 1 + 13 6 13 1 + 14 4 14 1 +@SUBSTRUCTURE + 1 ER01 1 +@COMMENT +@MOLECULE +ERULE_02 + 11 11 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C14 -0.0013 -1.2611 0.1723 C.3 1 ER02 0.2300 + 2 C15 -0.6874 -1.2595 1.5269 C.3 1 ER02 0.2700 + 3 N3 0.2587 -0.6650 2.4820 N.3 1 ER02 -0.6300 + 4 N4 1.5031 -1.3490 2.2430 N.3 1 ER02 -0.3770 + 5 S1 1.7496 -1.4452 0.6095 S.3 1 ER02 -0.2130 + 6 H23 0.3652 0.3270 2.2558 H 1 ER02 0.3600 + 7 H24 2.2933 -0.9254 2.7391 H 1 ER02 0.3600 + 8 H1 -0.1383 -0.3084 -0.3482 H 1 ER02 0.0000 + 9 H2 -0.3427 -2.0815 -0.4641 H 1 ER02 0.0000 + 10 H3 -0.9441 -2.2805 1.8391 H 1 ER02 0.0000 + 11 H4 -1.6219 -0.6896 1.4967 H 1 ER02 0.0000 +@BOND + 1 1 2 1 + 2 3 2 1 + 3 4 3 1 + 4 5 1 1 + 5 4 5 1 + 6 3 6 1 + 7 4 7 1 + 8 1 8 1 + 9 1 9 1 + 10 2 10 1 + 11 2 11 1 +@SUBSTRUCTURE + 1 ER02 1 +@COMMENT +@MOLECULE +ERULE_03 + 19 18 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P1 -0.1064 -1.0239 -0.0614 P 1 ER03 -0.4989 + 2 SI1 0.1434 -0.9550 2.1661 SI 1 ER03 0.4775 + 3 C1 -0.5728 -2.5325 2.8456 C.3 1 ER03 -0.0805 + 4 C2 1.9556 -0.8342 2.5576 C.3 1 ER03 -0.0805 + 5 C3 -0.7836 0.5245 2.8015 C.3 1 ER03 -0.0805 + 6 C4 0.7778 0.4989 -0.5693 C.3 1 ER03 0.1669 + 7 H2 0.9150 -1.9560 -0.3595 H 1 ER03 0.0960 + 8 H1 -0.0518 -3.4081 2.4462 H 1 ER03 0.0000 + 9 H3 -0.4843 -2.5598 3.9361 H 1 ER03 0.0000 + 10 H4 -1.6338 -2.6264 2.5942 H 1 ER03 0.0000 + 11 H5 2.3828 0.1047 2.1929 H 1 ER03 0.0000 + 12 H6 2.1207 -0.8738 3.6389 H 1 ER03 0.0000 + 13 H7 2.5154 -1.6587 2.1052 H 1 ER03 0.0000 + 14 H8 -1.8438 0.4732 2.5350 H 1 ER03 0.0000 + 15 H9 -0.7170 0.5847 3.8923 H 1 ER03 0.0000 + 16 H10 -0.3776 1.4546 2.3921 H 1 ER03 0.0000 + 17 H11 1.8014 0.5295 -0.1857 H 1 ER03 0.0000 + 18 H12 0.8361 0.5415 -1.6613 H 1 ER03 0.0000 + 19 H13 0.2505 1.3955 -0.2304 H 1 ER03 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 4 2 1 + 4 5 2 1 + 5 6 1 1 + 6 1 7 1 + 7 3 8 1 + 8 3 9 1 + 9 3 10 1 + 10 4 11 1 + 11 4 12 1 + 12 4 13 1 + 13 5 14 1 + 14 5 15 1 + 15 5 16 1 + 16 6 17 1 + 17 6 18 1 + 18 6 19 1 +@SUBSTRUCTURE + 1 ER03 1 +@COMMENT +@MOLECULE +ERULE_04 + 10 10 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 CL1 2.0797 0.7207 0.7247 CL 1 ER04 -0.2900 + 2 C1 0.7975 -0.1234 1.6137 C.3 1 ER04 0.5600 + 3 N1 1.3196 -1.4530 1.9201 N.3 1 ER04 -0.6470 + 4 S1 0.2145 -2.6741 2.1528 S.3 1 ER04 0.0170 + 5 S2 -1.4082 -1.5635 1.5751 S.3 1 ER04 -0.2300 + 6 C2 -0.4658 -0.2488 0.7699 C.3 1 ER04 0.2300 + 7 H1 0.6066 0.4338 2.5383 H 1 ER04 0.0000 + 8 H2 -1.0395 0.6826 0.7552 H 1 ER04 0.0000 + 9 H9 1.9662 -1.7082 1.1742 H 1 ER04 0.3600 + 10 H3 -0.2564 -0.5468 -0.2635 H 1 ER04 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 3 4 1 + 4 4 5 1 + 5 5 6 1 + 6 6 2 1 + 7 2 7 1 + 8 6 8 1 + 9 3 9 1 + 10 6 10 1 +@SUBSTRUCTURE + 1 ER04 1 +@COMMENT +@MOLECULE +ERULE_05 + 6 6 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 P2 1.1394 -1.5231 0.1456 P 1 ER05 -0.0960 + 2 P3 -0.6320 -0.5721 1.2220 P 1 ER05 -0.0960 + 3 P4 0.4189 -2.3830 2.1312 P 1 ER05 -0.0960 + 4 H1 0.4020 -2.3792 -0.7071 H 1 ER05 0.0960 + 5 H2 0.0803 0.4295 1.9239 H 1 ER05 0.0960 + 6 H3 1.3035 -1.6783 2.9821 H 1 ER05 0.0960 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 3 1 1 + 4 1 4 1 + 5 2 5 1 + 6 3 6 1 +@SUBSTRUCTURE + 1 ER05 1 +@COMMENT +@MOLECULE +ERULE_06 + 10 9 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 C1 -0.0397 -1.9490 1.8739 C.3 1 ER06 0.2700 + 2 C8 -0.0918 -0.2055 0.2263 C.3 1 ER06 0.2700 + 3 F1 1.8506 -0.6592 1.4319 F 1 ER06 -0.0640 + 4 N1 0.4724 -0.6376 1.4983 N.3 1 ER06 -0.4760 + 5 H1 0.1838 -0.8855 -0.5864 H 1 ER06 0.0000 + 6 H2 -1.1831 -0.1352 0.2800 H 1 ER06 0.0000 + 7 H3 0.2892 0.7897 -0.0233 H 1 ER06 0.0000 + 8 H14 0.2384 -2.7132 1.1408 H 1 ER06 0.0000 + 9 H4 -1.1294 -1.9338 1.9796 H 1 ER06 0.0000 + 10 H5 0.3797 -2.2418 2.8415 H 1 ER06 0.0000 +@BOND + 1 3 4 1 + 2 4 1 1 + 3 2 4 1 + 4 2 5 1 + 5 2 6 1 + 6 2 7 1 + 7 1 8 1 + 8 1 9 1 + 9 1 10 1 +@SUBSTRUCTURE + 1 ER06 1 +@COMMENT +@MOLECULE +ERULE_07 + 14 15 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 1.8013 -0.9902 1.1526 N.3 1 ER07 -0.5860 + 2 N2 -0.2942 -2.0078 0.5913 N.3 1 ER07 -0.9000 + 3 C1 1.1658 -2.1740 0.5670 C.3 1 ER07 0.5400 + 4 C2 -0.5672 -1.0537 1.6714 C.3 1 ER07 0.3650 + 5 C3 0.6956 -0.2665 1.7721 C.3 1 ER07 -0.0370 + 6 C4 1.4042 0.2841 0.5561 C.3 1 ER07 -0.0420 + 7 H1 0.9190 0.2702 -0.4112 H 1 ER07 0.1000 + 8 H2 2.0975 1.1036 0.7035 H 1 ER07 0.1000 + 9 H5 1.4341 -3.0526 1.1642 H 1 ER07 0.0000 + 10 H6 -0.7636 -1.5908 2.6053 H 1 ER07 0.0000 + 11 H7 0.8730 0.1817 2.7392 H 1 ER07 0.1000 + 12 H11 -0.5495 -1.5613 -0.2865 H 1 ER07 0.3600 + 13 H8 1.5185 -2.3507 -0.4552 H 1 ER07 0.0000 + 14 H10 -1.4292 -0.4219 1.4381 H 1 ER07 0.0000 +@BOND + 1 1 3 1 + 2 2 3 1 + 3 4 2 1 + 4 5 1 1 + 5 6 1 1 + 6 4 5 1 + 7 5 6 1 + 8 6 7 1 + 9 6 8 1 + 10 3 9 1 + 11 4 10 1 + 12 5 11 1 + 13 2 12 1 + 14 3 13 1 + 15 4 14 1 +@SUBSTRUCTURE + 1 ER07 1 +@COMMENT +@MOLECULE +ERULE_08 + 13 13 1 0 0 +SMALL +USER_CHARGES +@ATOM + 1 N1 -0.1208 -0.3892 1.2878 N.3 1 ER08 -0.4796 + 2 N2 1.2957 -0.2590 1.0257 N.3 1 ER08 -0.5696 + 3 C1 1.2571 -1.4088 0.0997 C.3 1 ER08 0.2096 + 4 C2 -0.1376 -1.7445 0.6911 C.3 1 ER08 0.2096 + 5 C5 -0.3273 -0.4735 2.7355 C.3 1 ER08 0.2700 + 6 H1 1.4895 0.6338 0.5651 H 1 ER08 0.3600 + 7 H2 -0.1732 0.5102 3.1931 H 1 ER08 0.0000 + 8 H3 -1.3604 -0.7701 2.9473 H 1 ER08 0.0000 + 9 H4 0.3411 -1.1876 3.2332 H 1 ER08 0.0000 + 10 H5 2.0318 -2.1612 0.2693 H 1 ER08 0.0000 + 11 H6 1.2447 -1.1252 -0.9583 H 1 ER08 0.0000 + 12 H7 -0.1330 -2.5873 1.3928 H 1 ER08 0.0000 + 13 H8 -0.9234 -1.9038 -0.0535 H 1 ER08 0.0000 +@BOND + 1 1 2 1 + 2 2 3 1 + 3 3 4 1 + 4 4 1 1 + 5 5 1 1 + 6 6 2 1 + 7 5 7 1 + 8 5 8 1 + 9 5 9 1 + 10 3 10 1 + 11 3 11 1 + 12 4 12 1 + 13 4 13 1 +@SUBSTRUCTURE + 1 ER08 1 +@COMMENT + diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/checkmm.spt b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/checkmm.spt new file mode 100755 index 000000000000..dc58fb93816a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/checkmm.spt @@ -0,0 +1,235 @@ +set forcefield "MMFF" +print "checkmm.spt reading mmff-validation.dat..." +vdat = load("mmff-validation.dat").split("model ") +tdat = {} +mmdat = {} +print "...validation data for " + (vdat.length - 1) + " models read" + +function setAtomInfo() { + print "...creating reference data set" + for (var i = 2; i <= vdat.length; i++) { + var dat = vdat[i].split(" # ") + var model = ((dat[1])[1][10]).split(" ")[1] + var m = {} + mmdat[model] = m + m["index"] = i - 1 + m["atomInfo"] = {} + var mm = m["atomInfo"] + for (var t = 2; t <= dat.length; t++) { + var line = dat[t] + var ttype = line[1] +// m[ttype] = line + var tokens = line.split(" ") + for (var j = 2; j < tokens.length; j+= 3) { + var a = tokens[j] + if(!mm[a]) { + mm[a] = {} + } + var mmm = mm[a] + mmm[ttype] = tokens[j+2] + } + } + } + print "reading mmff-validation-energy.dat" + var dat = load("mmff-validation-energy.dat").lines + for (var i = 1; i <= dat.length; i++) { + var tokens = dat[i].split("\t") + var model = tokens[1] + var m = mmdat[model] + m["energy"] = 0.0 + tokens[2] + } + print "reading MMFF94SYMB.PAR" + var dat = load("MMFF94SYMB.PAR").split("SYMBOL").lines[3][0] + for (var i = 1; i <=dat.length; i++) { + var code = (dat[i])[3][9].trim() + var mmtype = (dat[i])[10][11].trim() + var def = (dat[i])[12][0].trim() + tdat[code] = "" + mmtype + " " + def + } + print "..." + tdat.keys.length + " atom type symbols read" + +} +setAtomInfo +print "use checkAll() to check atom types; checkAllCharges() to check partial charges; checkAllEnergies to check MMFF94 energies" + +function labelmm(color) { + label %a %4.2[partialcharge] %[formalcharge] %[atomtype] + background label @color +} + +function checkpc(name) { + if (name != "") { + print name + load @{":" + name} + } + select * + wireframe only + A = {*}.partialcharge.all + calculate partialCharge {*} + {*}.partialcharge = A.sub({*}.partialcharge.all) + select partialcharge > 0.01 or partialcharge < -0.01 + labelMM "pink" +} + +function loadmm(name) { + if (name == "") { + load mmff94_dative.mol2 filter "CENTER" + mdat = getProperty("modelinfo.models.name") + } else { + load mmff94_dative.mol2 filter @{"name=" + name} + } + set echo top center + echo @name +} + +function showmm(name) { + print mmdat[name] +} + +function findatom(n) { + var m = {atomindex=n}.modelIndex + model @{m+1} + checkatoms(_modelName) + +} + +function findmm(name) { + model @{(mmdat[name])["index"]} + showmm(name) +} + +function findfc(fc) { + fc = "" + fc + for (var i = 1; i <= vdat.length; i++) { + if (vdat[i].find(fc) && vdat[i].find(fc) > vdat[i].find("fchar")) { + print mmdat[i-1] + model @{i-1} + showmm(mmdat[i-1]) + delay 4 + } + } +} + +function checkatoms(name) { + labels off + select none + var m = mmdat[name]["atomInfo"] + var b = {visible} + for (var a in b) { + var aname = a.atomName + var atype = a.atomType.split(":")[1] + var mmtype = "" + m[aname]["t"] + var mmcode = "" + m[aname]["s"] + if (atype != mmtype) { + select add @a + print name + "\t" + a + "\t" + aname + "\t" + atype + "\t" + mmcode + "\t" + tdat[mmcode] + } + } + label %a %3.2[partialcharge] %[atomtype] +} + + +function checkAll(n) { + if (!n) { + n = 10000 + } + select * + print "checking atom types for " + {*}.length + " atoms..." + calculate partialCharge {*} + var nbad = 0 + for (var a in {*}) { + m = a.modelIndex + if(m==n){quit} + model @{m+1} + aname = a.atomName + atype = a.atomType + mmtype = "" + mmdat[_modelName]["atomInfo"][aname]["t"] + if (atype != mmtype) { + print "" + (++nbad) + "\t" + (m + 1) + "\t" + _modelName + "\t" + a + "\t" + aname + "\t" + mmtype + "\t_" + mmdat[_modelName]["atomInfo"][aname]["s"] + "\t" + atype + } + } + if (nbad == 0) { + print "...all types match mmff94" + checkAllEnergies() + } +} + +function checkAllEnergies() { + var last = {*}[0].modelIndex + print "checking calculated energies for " + (last + 1) + " models" + set forcefield "MMFF" + set useMinimizationThread false + set minimizationSilent + var nBad = 0; + var a = []; + var max = 0.1; + a[last + 1] = 0; + var eu = energyUnits; + energyUnits = "kcal" + for (var m = 0; m <= last; m++) { + model @{m+1} + select {modelindex=m} + minimize energy + var ref = mmdat[_modelName]["energy"] + var diff = abs(_minimizationEnergy - ref) + a[m + 1] = diff + if (diff > max) { + print "" + (++nBad) + "\t" + _modelName + "\t E= \t" + _minimizationEnergy + "\t Eref=\t" + ref + "\t diff= \t" + diff + } + } + print "for " + (last+1) + " models, " + nBad + " have energy differences outside the range " + (-max) + " to " + max + " with a standard deviation of " + a.stddev + energyUnits = eu; +} + + +function checkAllCharges(n) { + if (!n) { + n = 10000 + } + var max = 0.001001 + select * + var A = {*}.partialcharge.all + calculate partialCharge {*} + {*}.partialcharge = A.sub({*}.partialcharge.all) + select partialcharge > max or partialcharge < -max + selectionhalos on + print "for " + {*}.size + " atoms, " + {selected}.size + " have charge differences outside the range " + (-max) + " to " + max + " with a standard deviation of " + {*}.partialcharge.all.stddev + var nbad = 0 + for (var a in {selected}) { + m = a.modelIndex + if(m>n){quit} + model @{m+1} + aname = a.atomName + atype = a.atomType + mmtype = "" + mmdat[_modelName]["atomInfo"][aname]["t"] + print "" + (++nbad) + "\t" + (m + 1) + "\t" + _modelName + "\t" + a + "\t" + aname + "\t" + a.partialCharge + "\t" + mmtype + "\t_" + mmdat[_modelName]["atomInfo"][aname]["s"] + "\t" + atype + } + +} + +function checkmm(name, dodif) { + loadmm(name) + select * + wireframe only + A = {*}.partialcharge.all + calculate partialCharge {*} + if (dodif) { + {*}.partialcharge = A.sub({*}.partialcharge.all) + select partialcharge > 0.01 or partialcharge < -0.01 +print {selected} + } + labelMM(dodif ? "pink" : "none") + print {*}.partialcharge.all.stddev +// showmm @name +// checkatoms name +} + +function findsm(smartsString) { + var x = {within(smarts,@smartsString)} + print x + findAtom(x[1].atomIndex) + +} + +loadmm +//checkmm "AMPTRB" true diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/jmol-validation.txt b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/jmol-validation.txt new file mode 100755 index 000000000000..2d090700c248 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/jmol-validation.txt @@ -0,0 +1,40 @@ +version=12.3.26_dev + +# code: adding empirical rules to MMFF94 calculation +# +# checkmm.spt;checkAllEnergies +# +# checking calculated energies for 761 models +# 1 COMKAQ E= -7.3250003 Eref= -7.6177 diff= 0.2926998 +# 2 DUVHUX10 E= 64.759995 Eref= 64.082855 diff= 0.6771393 +# 3 FORJIF E= 35.978 Eref= 35.833878 diff= 0.14412308 +# 4 JADLIJ E= 25.104 Eref= 24.7038 diff= 0.4001999 +# 5 PHOSLA10 E= 111.232994 Eref= 112.07078 diff= 0.8377838 +# 6 PHOSLB10 E= -93.479004 Eref= -92.64081 diff= 0.8381958 +# +# for 761 atoms, 6 have energy differences outside the range -0.1 to 0.1 +# with a standard deviation of 0.05309403 +# +# a comment about empirical bond parameter calculation: +# +# // Well, guess what? As far as I can tell, in Eqn 18 on page 625, +# // the reduction term and delta are zero. +# +# // -- at least in the program run that is at the validation site: +# // OPTIMOL: Molecular and Macromolecular Optimization Package 17-Nov-98 16:01:23 +# // SGI double-precision version ... Updated 5/6/98 +# // +# // This calculation is run only for the following three structures. In each case the +# // reported validation values and values from Jmol 12.3.26_dev are shown. Clearly +# // the r0 calculated and final energies are very good. subtracting off 0.008 from +# // r0 would certainly not give the reported values. Something is odd there. +# // +# // bond red* r0(here/valid) kb(here/valid) Etotal(here/valid) +# // --------------------------------------------------------------------------------------- +# // OHWM1 H1-O1 0.03 0.978/0.978 7.510/7.51 -21.727/-21.72690 +# // ERULE_03 Si1-P1 0.0 2.223/2.224 1.614/1.609 -2.983/ -2.93518 +# // ERULE_06 N1-F1 0.0 1.381/1.379 5.372/5.438 1.582/ 1.58172 +# // +# // *reduction and delta terms not used in Jmol's calculation +# +# diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/mmff-validation-energy.dat b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/mmff-validation-energy.dat new file mode 100755 index 000000000000..1b3c5b5ba723 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/mmff-validation-energy.dat @@ -0,0 +1,761 @@ +AGLYSL01 26.87431 +AMHTAR01 66.18011 +AMPTRB10 -18.73262 +ARGIND11 -207.43598 +BAOXLM01 278.92570 +BBSPRT10 -13.55387 +BEVJER10 18.75343 +BEWCUB 52.60970 +BEWKUJ04 -4.78796 +BIHKEI01 -42.47323 +BIPDEJ02 -70.08179 +BIPJUF10 33.27498 +BIPYCL01 148.41423 +BITNAT10 65.11954 +BIYBIU10 51.30021 +BODKOU 23.36915 +BSALAP01 6.84068 +BUPSLB10 56.93022 +BUPSLD10 -16.46525 +BUYTIY10 122.43528 +BUYTOE10 144.89777 +BUYXEY10 -2.24767 +BYITOT02 27.10908 +CABWEH10 64.52122 +CAFORM07 0.01281 +CAGREH10 -259.51340 +CALXES20 -35.97705 +CAMALD03 36.83909 +CEFMEN 33.08425 +CETROI01 126.08934 +CEWCUC10 113.91582 +CEWVIJ10 -123.17150 +CEWYIM30 66.77530 +CIHWUL10 15.14485 +CIJXOI10 27.48125 +CIKSEU10 -38.93481 +CILBII -46.87953 +CILDOQ -33.26989 +CILWUP11 0.68501 +CIMRUL10 39.87555 +CINVIE 38.90984 +CIPVOM -2.84100 +CIPYAB10 34.87235 +CISMOG 32.82537 +CISPOJ 69.57227 +CITDIS 32.12371 +CITNOI10 32.01892 +CITPEA10 34.82777 +CITSED10 28.49078 +CIVCEP02 -182.12144 +CIVLAU02 16.12615 +CIXWAH -15.95417 +CIYNUT 68.95129 +CIZFIA -18.99671 +CIZJAW 7.48409 +CIZWUD 30.42557 +CIZYEP 47.66782 +CIZZUG -49.57596 +COBKIN01 9.80521 +COCXUN 24.42247 +COGDEH 106.99152 +COGYAY 39.56560 +COHKOZ 58.62058 +COJFIQ 74.97484 +COKDEL 11.80918 +COKROJ 46.31871 +COLZUY 43.67995 +COMDIR 46.29230 +COMKAQ -7.61770 +COMWOQ 31.05100 +COMWUW 23.74581 +CONBAI -127.16493 +CONFAM -44.68386 +CONLIA 40.26758 +CORDOC 57.69573 +CORWUB10 -84.01803 +COSFAR 0.08159 +COSSEI -73.95317 +COSWIQ 27.25872 +COTMON 23.49300 +COTPEG 43.95150 +COTRIM 46.34354 +COVHUQ -34.84357 +COVMAB 54.88679 +COVXIU -136.04527 +COWTIR -71.22739 +COXBAS -5.38669 +COXZEU -142.02636 +COYMOS 2.84235 +COYNAF 78.55952 +COYVIV -76.17420 +CUBTUO 62.99488 +CUCDAF 62.58536 +CUCHOX 12.51668 +CUCHUD 107.86578 +CUDJAM 64.03198 +CUDNEU 46.57412 +CUDPAS 122.63660 +CUDPOG 39.36271 +CUDREY -26.29199 +CUFFAK 48.34575 +CUGBEL -6.31517 +CUGGOA 90.33658 +CUGLOF 25.29487 +CUJYUB10 77.34274 +CULGEV10 6.39875 +CULHIA10 22.96006 +CULVEK -28.97125 +CUNVAI 124.07957 +CUNVEM 34.52853 +CURZIY 39.43648 +CUVFOO -43.92628 +CUVGAB 78.85250 +CUVJOS 97.11218 +CUYRAP 43.42514 +CYANAM01 -36.48459 +CYGUAN01 -254.74397 +DABHAP -61.26979 +DABLIB -0.78636 +DACSAB -81.87365 +DACYIP 7.01608 +DADDAN -14.11976 +DADLAV 31.84138 +DADLEZ 39.20451 +DAFKIE 18.68792 +DAFPUV 31.94967 +DAGTUA 65.93412 +DAHBAP 41.42849 +DAHNAB 1.89669 +DAJXER -80.97047 +DAKBAS 20.14939 +DAKCEX 6.83065 +DAKDOI 52.07023 +DANCUQ -32.45004 +DAPSUO03 65.72509 +DARDEF -16.98389 +DARPOB10 -56.15408 +DARXID 66.08694 +DARZEB -2.51092 +DAVWEC -44.65652 +DAVXED -64.35191 +DAWXII 42.33212 +DAWYUV 20.92222 +DAYWEF -244.65194 +DAZVEF 69.37451 +DEBMOM01 -62.78120 +DECJAW 5.45573 +DECKUR -59.58237 +DECRIM -36.93866 +DEDCIY 42.76261 +DEDSIO 1.32068 +DEFGIE 30.40441 +DEFLEF -296.27657 +DEFPUZ -103.20611 +DEFTUD -19.28221 +DEFVAL 13.92912 +DEFYUI 17.23114 +DEGLUW -57.99964 +DEGRIQ -13.92177 +DEKRUG -50.14814 +DEMBIG 23.79651 +DEPKEO 96.11090 +DERZUV 72.73796 +DESWUT 41.10067 +DESYOP 26.36673 +DEWHOC 87.84014 +DEWJEU 45.49318 +DEXCIS -6.20874 +DEXGIW -60.11998 +DEZDUH 50.63786 +DEZNIF 85.50222 +DEZXEL 15.13713 +DHOADS01 37.43734 +DICKIJ 69.01570 +DICPUA 39.00857 +DICRAI 22.87059 +DICYIX -1.45480 +DICYOD 14.86818 +DIDYOE 60.09139 +DIFSIU 83.35147 +DIGCOL 34.17032 +DIGCUR -17.62974 +DIGLEK 87.73651 +DIHTET 9.87683 +DIKGAF -14.94346 +DIKGEJ -4.20762 +DIKWID 145.34404 +DIKYUR 37.45468 +DILCOQ -52.82481 +DIMYIH10 61.29056 +DIPDAH10 7.20477 +DIPDIP10 -35.68081 +DIRMIA 2.70519 +DISHES 13.80187 +DISJOE 76.64152 +DITRAZ 25.28388 +DITYAG10 46.54242 +DIVJUN 86.58284 +DIVTUX 23.87164 +DIVVEJ -315.34316 +DIVWEK 47.22938 +DIWCOB 179.17218 +DIXJEZ 25.43315 +DIYDIY 42.18619 +DIYPOQ -48.43392 +DIYPUW 22.27500 +DIZPUX 9.74056 +DMEOXA01 53.54773 +DOCCIH 99.11440 +DOCFIK 132.94633 +DOCWUN 83.14102 +DODNOZ -309.76326 +DODNUF -196.30290 +DOJPAT 23.11220 +DONFOB -154.02320 +DOSNOO -156.15561 +DOTNIJ 40.54214 +DOTVEN -218.60040 +DOTWOY -2.76358 +DOWDEY -104.77712 +DOXXAP -15.64479 +DOXZOF 65.56067 +DOZFON 167.54961 +DOZNIP -239.04493 +DUBNET -20.67230 +DUDMUK 52.64434 +DUGMUN 83.65885 +DUGWIL01 -157.51276 +DUJHEV 4.35715 +DUJMEA 143.61644 +DUKVAG -37.53122 +DUKWUB -0.47215 +DULTIN 79.77418 +DUMHIC 42.98219 +DUMPAC -47.19370 +DUPHEB 31.37985 +DUPTAJ 113.43678 +DURDID 71.65295 +DUTHIJ 136.91955 +DUVHUX10 64.08285 +DUVXIB -72.46526 +DUWGAD -12.37378 +DUWKUB 56.68430 +DUWRIW 81.67334 +DUXTIZ 97.25524 +DUXWUO 54.56841 +DUXXAV 76.64426 +DUYNOA 66.17564 +DUYPES 30.51992 +DUYRAQ 65.03902 +FACMIF 76.52254 +FACREG 113.76824 +FACYAJ 41.11543 +FADMIG 58.93381 +FADVEL -106.77293 +FADVUB -32.54552 +FAGBUK 187.30066 +FAGCOF -87.57240 +FAGLII 21.99812 +FAGVEO 90.19710 +FAGZOC 214.30851 +FAHPUZ -47.69082 +FAHSUC -58.35213 +FAHYUI 65.43368 +FAHZET -142.34477 +FAJWIW -217.77066 +FAMHAC -20.44858 +FAMYUN -21.88548 +FAPLUD -389.23990 +FARMAM 15.32885 +FARSOG -39.74204 +FARWEA -61.01925 +FASGUB 81.36854 +FASJIS 41.65550 +FATLIV -56.35494 +FAXFUF10 -104.90436 +FAXVAB -172.35653 +FAXVEF 42.51885 +FAXVIJ 67.72316 +FAZBAJ 13.14753 +FAZKUM 35.83595 +FBATNB 112.60951 +FECXEQ 89.73554 +FEGSEP -82.52081 +FEHDAX -17.65295 +FEJJEJ 3.65242 +FEJKIO 198.60780 +FELYIE 17.32218 +FELYUQ 68.22311 +FEMGEJ 19.89068 +FENCOQ 41.71703 +FENHAH 35.23240 +FENJIR -21.19718 +FENJOX 2.49167 +FENJUD -13.90365 +FENNUH -44.53683 +FENYIG 12.36498 +FEPWAY -136.46417 +FEPWOM -15.19947 +FESCAH -66.59850 +FESMIZ 70.03626 +FETRUR -433.93729 +FETWOQ -16.43906 +FEVNUP -29.92782 +FEYLUQ -73.24187 +FEZPOP 1.20616 +FEZRUX 39.90989 +FIBLIL 86.78845 +FICDOK 87.69205 +FIFGUW 41.81489 +FIGYID -4.04373 +FIHXID -36.90498 +FIKJAK 42.79221 +FIKZOO10 11.54801 +FILGEM 17.37940 +FILNOD 57.68163 +FINBIN 74.95031 +FINPEX 1.60801 +FITGIY 3.76800 +FITSEG -18.54718 +FITTIL -72.20689 +FIVNUT 10.99905 +FIVRAD -71.32750 +FIXPIL 19.19788 +FIYBIY -78.13514 +FIZGEA 63.61449 +FIZGOK -86.77461 +FIZJED 57.67889 +FOBJUB01 -5.71683 +FODTUN 7.86517 +FOGBIM 24.03593 +FOGVIG01 -287.57893 +FOHXEF -155.90357 +FOHYAC 49.52196 +FOJBEL 12.83602 +FOJPAV 10.54302 +FONCOA 47.11940 +FORGOI 30.14956 +FORHEZ 19.85843 +FORJIF 35.83388 +FORJUR 44.65007 +FORTAH 87.87463 +FOSDIA 44.94385 +FOVHUT -294.74544 +FOVJIJ 22.56614 +FOVRAJ 104.46793 +FOVRUD 96.48010 +FOWBEY 27.87889 +FOWPOW 60.55950 +FOWVES -7.43616 +FOWZAS 41.93185 +FOYMAH -4.87726 +FOYNUC 53.98090 +FUCMIZ -25.93021 +FUCMUL 18.31930 +FUCTIG01 6.41462 +FUCWIJ 71.19690 +FUCWOP -33.35464 +FUDPOJ 99.29055 +FUDXUX 14.66699 +FUFDIT -61.71479 +FUGWIN -8.81522 +FUHFAP 15.71718 +FUHSEG 22.72121 +FULRAF 98.97744 +FUNSIQ -67.11554 +FUNXOB 54.89022 +FUPJUV 81.27769 +FUPKIK -38.02337 +FUPKOQ 67.68032 +FUPTOZ 111.63852 +FUPZEV 24.61971 +FUSPEO 1.30439 +FUTCEC 63.33738 +FUTZEZ -8.61144 +FUVDOP 28.54770 +FUVMUE 55.78149 +FUVNEP 72.90969 +FUVXOJ 75.49849 +FUWMOZ -206.64659 +FUWTUM 32.55406 +FUXXAX -360.41364 +FUXZED -11.21303 +GADHEY 43.51385 +GAFNUW 48.79520 +GAHPIO 26.65978 +GAJTEQ -56.77015 +GAKGOO 2.67700 +GAKNEL 42.83176 +GAKNIP 12.55811 +GAKPEN 37.10128 +GAKTAN 75.15214 +GANHUY 60.73197 +GAPMEP 58.68366 +GAVKOD 89.18747 +GAVMEV 4.85701 +GAWWOQ -109.87689 +GEHBOK -51.42718 +GEHPUE 12.98179 +GEHXEW -19.02522 +GEJYOJ -54.17030 +GEKXEZ 47.02326 +GEMCEG 19.14746 +GEMCOQ 37.25987 +GEMDAD 67.23109 +GERCUB 108.97947 +GESCIQ -29.47462 +GESNIB 67.12883 +GESSUS -18.73026 +GETFIU 26.71721 +GETFOA 35.62475 +GETJOE -70.29989 +GEWTAD 51.09590 +GEXGIZ 68.34325 +GEYWOW 11.93576 +GICTIV01 115.40014 +GIDJUY 3.48286 +GIDMEL -81.78540 +GIDTIW -196.65519 +GIFRAO 14.02576 +GIGCEE 42.32187 +GIGMUE 44.82306 +GIHZEC 18.85082 +GIJMOB01 24.15189 +GIKJIT 37.86562 +GIKNOD -25.31661 +GIKTUP -36.16502 +GIMJIV 85.50402 +GINMUL -6.11131 +GIPHES -25.55737 +GIRDOA01 -12.93127 +GOHVUU -157.88177 +GOJCIR 130.47050 +GOJKIZ 19.84592 +GUANCH01 -102.11644 +HYTPRD01 41.66664 +ISTZCN10 -33.40207 +JABGAU 58.72261 +JADLIJ 24.70380 +JADXER 60.29233 +JAHKOS 38.38559 +JAHTOB 61.73877 +JAHYEW 36.60584 +JAKGUX 50.86397 +JAKJOU 53.34609 +JALSOE 36.00393 +JAMREU -90.81299 +JANDOR 68.91078 +JANMAM 97.69500 +JAPFAH 30.49033 +JATBIP -4.42045 +JATCOW -65.81452 +JATLOF -377.45704 +JATMEW -130.46676 +JAVGAO 52.27513 +JAWJIA -79.23239 +JAWMAV 33.08004 +JAWVEI 26.97104 +JAWZEM 99.41011 +JAZGOG 28.41242 +JAZVIP10 -26.12245 +JAZZOZ10 -32.67302 +JEBFEB01 -30.89478 +JECVES 99.89048 +JECVUI -82.36050 +JECYIZ -10.09203 +JEFRAN -210.24982 +JEHCUU01 -57.90105 +JEHXOJ 88.72617 +JELKUG 73.20361 +JELREX -14.54886 +JELRIB -26.11275 +JEMHIS -8.33007 +JEMWUT 27.84541 +JESFES -342.47108 +JETJUN -122.48312 +JEVXIR 42.45553 +JEWFAS -165.02652 +JEWPIK 59.51936 +JEXREJ -92.70123 +JEYBUK 2.50214 +JIDHIN 47.98424 +JIFYUS -80.05364 +JIGCIL 52.17531 +JIGRAS 46.95941 +JIHVEB 83.07172 +JIKHUG -40.26738 +JILWUW 116.51674 +JINDAL 48.34693 +JINDOZ 3.59888 +JIRJID -13.19969 +JISZAM -32.18179 +JITMII 36.88547 +JIWKOP 13.05414 +JIXBAT 58.99277 +JIYJAC 32.58200 +JIYREO 64.27237 +JIYTOA -14.13829 +JIZWUK -4.13028 +JOFDUD -11.44908 +KAFXIY 100.47867 +KAGBOJ 78.37129 +KAKGOS 27.94946 +KAMCUW -45.49517 +KAMJAJ 28.53248 +KANWEB 1.60201 +KANZOO 15.28037 +KAPCUZ 68.97469 +KARYAD 31.61636 +KASBAH -77.62909 +KASBOV 7.17020 +KATNAU 157.86556 +KAVFUI 93.83083 +KAVTEG -0.39200 +KECSIU 141.51878 +KECSUG 146.47715 +KEDYAT 14.65953 +KEFJEK 7.25573 +KEJFOU -99.02540 +KEMFAJ 45.98424 +KENHOA -29.17778 +KEPKIZ 61.81628 +KESNEB 85.44380 +KEWJIF -24.71146 +KHDFRM11 -20.67992 +KIBDII -145.90465 +KIBFAC -21.88719 +KICCUU -8.77274 +KICGAE 52.12669 +KICLAJ 3.16372 +KIGKIU 8.18255 +KIKVUV 45.65486 +KIMLEX01 0.26622 +KINKUN 85.26987 +KINTUW -11.88791 +KINWEJ 78.78392 +KINWIN -50.54032 +KIRCAP 255.83493 +KIRCOD -4.49523 +KITREK -81.64657 +KIYGAA 26.60510 +KOBXOO 33.68958 +KOBYOP 23.88117 +KOBZEG 95.02469 +KOCWUU 30.67330 +KODFUE 18.59940 +KOFKIZ -99.88830 +KOFMEX -65.48715 +KOFNIC -60.92107 +KOHVEI 47.44503 +KOHVIM 40.77334 +KOJGOF 90.29853 +KOJKID 2.90851 +KOJZOY -31.79265 +KOKMIG -92.24143 +KOLCUJ 117.98880 +MAPMIP03 34.02492 +MENBZS01 44.15542 +METBZC10 29.12095 +NAESCB01 -36.35711 +NHOXAL06 118.48950 +PHOSLA10 112.07078 +PHOSLB10 -92.64081 +PIMTAZ01 22.57669 +QUICNA01 -8.50687 +SABNOY -164.85434 +SACXAV 15.28467 +SADXAW -177.99006 +SAFFOU 16.71277 +SAFFUA 39.61979 +SAFKAL -73.74664 +SAHSOJ 29.28905 +SAHSUP -49.72910 +SAKGUG 26.03383 +SALVEG -65.30963 +SAMFUH 76.00269 +SAMXUZ -64.19365 +SANKEX10 98.14771 +SAVDOI 22.57240 +SAWKEG10 -41.22035 +SEBPEU01 60.07828 +SECDAF -6.53837 +SEFRAW -45.24984 +SEFYIL -131.25092 +SEGFIT 80.75242 +SEGJAP 35.61354 +SEGLAR 85.70341 +SEGNEX 29.82309 +SEGWEG 37.46823 +SEHBEM 28.74491 +SEJDAM 61.79333 +SEKKIC 38.05399 +SEKPED -67.45408 +SEKPIH 9.55143 +SELFIY 77.47071 +SEMDIX -30.86340 +SEMXOX 30.67184 +SETHAA -4.49051 +SETLIM 74.07649 +SEYVUN 43.93074 +SEYWUO -39.99911 +SEZMEP 66.22117 +SICNUN 55.76478 +SICPEZ 38.87320 +SICSEC 73.44743 +SIDFIU 33.96223 +SIDRUS 17.24568 +SINMIL -32.59558 +SIYLOB 35.54398 +SIZJIU 132.88205 +SIZWUT 57.15654 +SLFNMB04 -75.26360 +SOGVOZ 107.39049 +SOHXOC -153.83106 +SOJNEK -2.22516 +SOMKIO 25.04375 +SONZIE -18.83751 +SOPZEC -13.45857 +SORBIK 77.59603 +SURDOX02 93.02783 +TACGIN 79.70690 +TACLEO 21.61532 +TAFKIU 12.68068 +TAFXIH 80.02713 +TAFZIJ 44.29657 +TAGVIG -103.49420 +TAHMOE -11.22592 +TAJPUP 80.83233 +TAJSUS 91.68004 +TAJVUV 14.55410 +TAJWAC 28.09963 +TAKHES 31.54540 +TAMMAV 46.27017 +TANHAR 51.35225 +TAPJUP 19.89126 +TAPSAE 34.83021 +TCYMPH02 26.38037 +TMTCHD01 89.46568 +VABLIT 13.61554 +VABROF 53.81788 +VACRUM 107.76910 +VAJFAN 50.90003 +VALTEH -16.71883 +VALWOU -156.37291 +VAPZOB10 105.60153 +VASDOI 13.85039 +VATKAC 88.96469 +VAWDUS -19.81119 +VAWMOV 159.94275 +VAWWAR 108.23634 +VAYKUB -45.36228 +VAZHUZ 53.65497 +VECSAX -44.65044 +VEDTED -201.69887 +VEHCOA 26.73428 +VEHZOX -34.32136 +VEJWOW 53.96769 +VEKMON 28.23453 +VENYUI 29.55129 +VETWAS 30.41711 +VEVDIJ 60.52869 +VEWZOM -9.37968 +VEXKOY 67.06387 +VEXMOA 101.95271 +VEYBIK -63.59484 +VEYWAX 73.03787 +VEZBUX 62.20201 +VICGAP 5.33694 +VICGET -12.61650 +VICKIB 40.26154 +VICPOM -66.75993 +VIDKUO 51.29373 +VIFFEV 34.35377 +VIGPEG -35.74854 +VIGTUA 124.75411 +VIHHID 55.16481 +VIKVIU 2.63326 +VIKYAP 87.86543 +VIMHII 0.00000 +VIPXAT -162.40026 +VIRBON -9.52358 +VIWCOT 16.54360 +VIXRID 37.57932 +VIXXOP 52.43194 +VIYPAU 81.46682 +VOBLAZ 11.51405 +VOBWOY -25.40316 +VOFBOH 7.85016 +VOFCAU 22.37171 +VOJGEG -18.40802 +VOJJIN -8.99563 +VUWXUG 201.69806 +VUXGOK 40.70548 +VUXPUZ -50.22075 +VUXREL -4.36876 +ZZZIZA01 35.42935 +ZZZMVU10 66.05382 +ZZZVCQ01 -24.07079 +AR14A 5.70457 +CA04A 21.28839 +CE05A 15.67142 +CO01A 0.05416 +CO08A 22.31754 +HL08A 9.72664 +IM02A 7.42929 +NC10A 9.82297 +NC13A 9.89880 +NH10A 0.00000 +NH20A 3.64241 +NH22A -1.24400 +NH23A 17.23512 +OH10A 1.51461 +SR01A 0.00000 +SR05A -3.28926 +SR07A 12.91164 +AN05A 5.28439 +AN06A 0.68272 +AN08A -14.52414 +AN11A -5.70233 +AN12A -15.08050 +HL11A 4.68132 +HL13A 0.88660 +NO03A -0.17493 +NX02A 1.89613 +OC02A 14.28224 +PO02A 0.00211 +PO05A -109.74485 +PR01A 0.00000 +PR02A 0.18897 +PR03A 0.37672 +PR04A 6.98708 +SI02A -0.02915 +SI03A -15.26744 +SO07A -80.21965 +SO12A -142.92206 +SO15A 14.98726 +SO16A 0.62880 +SO18A 2.10304 +BRMW1 -13.13210 +CA2PW3 -129.29119 +CLMW1 -14.30054 +CU1PW1 -23.88920 +CU2PW3 -162.18769 +FE2PW3 -156.84605 +FE3PW3 -262.64650 +FMW1 -20.44875 +H3OPW1 -28.28397 +KPW1 -18.26556 +LIPW1 -32.35420 +MG2PW3 -177.29756 +NAPW -24.09511 +OHMW1 -21.72690 +ZN2PW3 -158.88980 +ERULE_01 -21.51511 +ERULE_02 29.79957 +ERULE_03 -2.93518 +ERULE_04 -2.31007 +ERULE_05 4.88443 +ERULE_06 1.58172 +ERULE_07 3.16775 +ERULE_08 34.41382 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/mmff-validation.dat b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/mmff-validation.dat new file mode 100755 index 000000000000..df85e254e3f8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/FF/mmff/validate/mmff-validation.dat @@ -0,0 +1,3805 @@ +model AGLYSL01 + # ty C1 #1 1 C2 #2 3 H1 #3 23 H3 #4 23 H5 #5 5 H6 #6 5 H7 #7 24 N1 #8 8 O5 #9 6 O6 #10 7 + # symb C1 #1 CR C2 #2 COO H1 #3 HNR H3 #4 HNR H5 #5 HC H6 #6 HC H7 #7 HOCO N1 #8 NR O5 #9 OC=O O6 #10 O=CO + # char C1 #1 0.331 C2 #2 0.659 H1 #3 0.360 H3 #4 0.360 H5 #5 0.000 H6 #6 0.000 H7 #7 0.500 N1 #8 -0.990 O5 #9 -0.650 O6 #10 -0.570 + # fchar C1 #1 0.000 C2 #2 0.000 H1 #3 0.000 H3 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 N1 #8 0.000 O5 #9 0.000 O6 #10 0.000 +model AMHTAR01 + # ty O1 #1 6 O2 #2 7 O3 #3 6 O4 #4 6 O5 #5 32 O6 #6 32 C1 #7 3 C2 #8 1 C3 #9 1 C4 #10 41 H1 #11 5 H2 #12 5 H3 #13 21 H4 #14 21 H5 #15 24 + # symb O1 #1 OC=O O2 #2 O=CO O3 #3 OR O4 #4 OR O5 #5 O2CM O6 #6 O2CM C1 #7 COO C2 #8 CR C3 #9 CR C4 #10 CO2M H1 #11 HC H2 #12 HC H3 #13 HOR H4 #14 HOR H5 #15 HOCO + # char O1 #1 -0.650 O2 #2 -0.570 O3 #3 -0.680 O4 #4 -0.680 O5 #5 -0.900 O6 #6 -0.900 C1 #7 0.659 C2 #8 0.341 C3 #9 0.174 C4 #10 0.906 H1 #11 0.000 H2 #12 0.000 H3 #13 0.400 H4 #14 0.400 H5 #15 0.500 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 -0.500 O6 #6 -0.500 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 +model AMPTRB10 RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 7 5 EXOCYCLIC MULT BOND 14 1 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty N1 #1 58 C2 #2 37 N2 #3 40 N3 #4 38 C4 #5 37 N4 #6 40 C41 #7 37 N5 #8 38 C6 #9 37 C61 #10 1 C7 #11 37 C71 #12 1 N8 #13 38 C81 #14 37 H1 #15 36 H21 #16 28 H22 #17 28 H41 #18 28 H42 #19 28 H61 #20 5 H62 #21 5 H63 #22 5 H71 #23 5 H72 #24 5 H73 #25 5 + # symb N1 #1 NPD+ C2 #2 CB N2 #3 NC=N N3 #4 NPYD C4 #5 CB N4 #6 NC=C C41 #7 CB N5 #8 NPYD C6 #9 CB C61 #10 CR C7 #11 CB C71 #12 CR N8 #13 NPYD C81 #14 CB H1 #15 HPD+ H21 #16 HNCN H22 #17 HNCN H41 #18 HNCC H42 #19 HNCC H61 #20 HC H62 #21 HC H63 #22 HC H71 #23 HC H72 #24 HC H73 #25 HC + # char N1 #1 -0.179 C2 #2 0.771 N2 #3 -0.900 N3 #4 -0.620 C4 #5 0.410 N4 #6 -0.900 C41 #7 0.310 N5 #8 -0.620 C6 #9 0.167 C61 #10 0.143 C7 #11 0.167 C71 #12 0.143 N8 #13 -0.620 C81 #14 0.671 H1 #15 0.457 H21 #16 0.400 H22 #17 0.400 H41 #18 0.400 H42 #19 0.400 H61 #20 0.000 H62 #21 0.000 H63 #22 0.000 H71 #23 0.000 H72 #24 0.000 H73 #25 0.000 + # fchar N1 #1 1.000 C2 #2 0.000 N2 #3 0.000 N3 #4 0.000 C4 #5 0.000 N4 #6 0.000 C41 #7 0.000 N5 #8 0.000 C6 #9 0.000 C61 #10 0.000 C7 #11 0.000 C71 #12 0.000 N8 #13 0.000 C81 #14 0.000 H1 #15 0.000 H21 #16 0.000 H22 #17 0.000 H41 #18 0.000 H42 #19 0.000 H61 #20 0.000 H62 #21 0.000 H63 #22 0.000 H71 #23 0.000 H72 #24 0.000 H73 #25 0.000 +model ARGIND11 + # ty C1 #1 41 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 57 H1 #7 23 H3 #8 5 H4 #9 23 H6 #10 5 H7 #11 5 H9 #12 5 H10 #13 5 H12 #14 5 H13 #15 5 H14 #16 36 H15 #17 36 H16 #18 36 H17 #19 36 H18 #20 36 N1 #21 8 N2 #22 56 N3 #23 56 N4 #24 56 O1 #25 32 O3 #26 32 + # symb C1 #1 CO2M C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 CGD+ H1 #7 HNR H3 #8 HC H4 #9 HNR H6 #10 HC H7 #11 HC H9 #12 HC H10 #13 HC H12 #14 HC H13 #15 HC H14 #16 HGD+ H15 #17 HGD+ H16 #18 HGD+ H17 #19 HGD+ H18 #20 HGD+ N1 #21 NR N2 #22 NGD+ N3 #23 NGD+ N4 #24 NGD+ O1 #25 O2CM O3 #26 O2CM + # char C1 #1 0.906 C2 #2 0.164 C3 #3 0.000 C4 #4 0.000 C5 #5 0.328 C6 #6 1.200 H1 #7 0.360 H3 #8 0.000 H4 #9 0.360 H6 #10 0.000 H7 #11 0.000 H9 #12 0.000 H10 #13 0.000 H12 #14 0.000 H13 #15 0.000 H14 #16 0.450 H15 #17 0.450 H16 #18 0.450 H17 #19 0.450 H18 #20 0.450 N1 #21 -0.990 N2 #22 -0.967 N3 #23 -0.844 N4 #24 -0.967 O1 #25 -0.900 O3 #26 -0.900 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 H1 #7 0.000 H3 #8 0.000 H4 #9 0.000 H6 #10 0.000 H7 #11 0.000 H9 #12 0.000 H10 #13 0.000 H12 #14 0.000 H13 #15 0.000 H14 #16 0.000 H15 #17 0.000 H16 #18 0.000 H17 #19 0.000 H18 #20 0.000 N1 #21 0.000 N2 #22 0.333 N3 #23 0.333 N4 #24 0.333 O1 #25 -0.500 O3 #26 -0.500 +model BAOXLM01 + # ty O1 #1 32 O2 #2 32 C1 #3 41 C1F #4 41 O1F #5 32 O2F #6 32 + # symb O1 #1 O2CM O2 #2 O2CM C1 #3 CO2M C1F #4 CO2M O1F #5 O2CM O2F #6 O2CM + # char O1 #1 -0.900 O2 #2 -0.900 C1 #3 0.800 C1F #4 0.800 O1F #5 -0.900 O2F #6 -0.900 + # fchar O1 #1 -0.500 O2 #2 -0.500 C1 #3 0.000 C1F #4 0.000 O1F #5 -0.500 O2F #6 -0.500 +model BBSPRT10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty BR1 #1 13 S1 #2 15 S2 #3 18 O1 #4 7 O2 #5 32 O3 #6 32 N1 #7 43 C1 #8 3 C2 #9 20 C3 #10 20 C4 #11 37 C5 #12 37 C6 #13 37 C7 #14 37 C8 #15 37 C9 #16 37 H1 #17 28 H2 #18 5 H31 #19 5 H32 #20 5 H5 #21 5 H6 #22 5 H8 #23 5 H9 #24 5 + # symb BR1 #1 BR S1 #2 S S2 #3 SO2N O1 #4 O=C O2 #5 O2S O3 #6 O2S N1 #7 NSO2 C1 #8 C=OS C2 #9 CR4R C3 #10 CR4R C4 #11 CB C5 #12 CB C6 #13 CB C7 #14 CB C8 #15 CB C9 #16 CB H1 #17 HNSO H2 #18 HC H31 #19 HC H32 #20 HC H5 #21 HC H6 #22 HC H8 #23 HC H9 #24 HC + # char BR1 #1 -0.111 S1 #2 -0.358 S2 #3 1.447 O1 #4 -0.570 O2 #5 -0.650 O3 #6 -0.650 N1 #7 -0.865 C1 #8 0.658 C2 #9 0.360 C3 #10 0.217 C4 #11 -0.009 C5 #12 -0.150 C6 #13 -0.150 C7 #14 0.111 C8 #15 -0.150 C9 #16 -0.150 H1 #17 0.420 H2 #18 0.000 H31 #19 0.000 H32 #20 0.000 H5 #21 0.150 H6 #22 0.150 H8 #23 0.150 H9 #24 0.150 + # fchar BR1 #1 0.000 S1 #2 0.000 S2 #3 0.000 O1 #4 0.000 O2 #5 0.000 O3 #6 0.000 N1 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 H1 #17 0.000 H2 #18 0.000 H31 #19 0.000 H32 #20 0.000 H5 #21 0.000 H6 #22 0.000 H8 #23 0.000 H9 #24 0.000 +model BEVJER10 RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty C1 #1 30 C2 #2 30 C3 #3 2 C4 #4 4 N5 #5 42 C6 #6 4 N7 #7 42 C8 #8 2 C9 #9 4 N10 #10 42 C11 #11 4 N12 #12 42 C1B #13 30 C2B #14 30 C3B #15 2 C8B #16 2 C4B #17 4 C6B #18 4 C9B #19 4 C11B #20 4 N5B #21 42 N7B #22 42 N10B #23 42 N12B #24 42 + # symb C1 #1 CE4R C2 #2 CE4R C3 #3 C=C C4 #4 CSP N5 #5 NSP C6 #6 CSP N7 #7 NSP C8 #8 C=C C9 #9 CSP N10 #10 NSP C11 #11 CSP N12 #12 NSP C1B #13 CE4R C2B #14 CE4R C3B #15 C=C C8B #16 C=C C4B #17 CSP C6B #18 CSP C9B #19 CSP C11B #20 CSP N5B #21 NSP N7B #22 NSP N10B #23 NSP N12B #24 NSP + # char C1 #1 -0.031 C2 #2 -0.031 C3 #3 0.161 C4 #4 0.492 N5 #5 -0.557 C6 #6 0.492 N7 #7 -0.557 C8 #8 0.161 C9 #9 0.492 N10 #10 -0.557 C11 #11 0.492 N12 #12 -0.557 C1B #13 -0.031 C2B #14 -0.031 C3B #15 0.161 C8B #16 0.161 C4B #17 0.492 C6B #18 0.492 C9B #19 0.492 C11B #20 0.492 N5B #21 -0.557 N7B #22 -0.557 N10B #23 -0.557 N12B #24 -0.557 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N5 #5 0.000 C6 #6 0.000 N7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N10 #10 0.000 C11 #11 0.000 N12 #12 0.000 C1B #13 0.000 C2B #14 0.000 C3B #15 0.000 C8B #16 0.000 C4B #17 0.000 C6B #18 0.000 C9B #19 0.000 C11B #20 0.000 N5B #21 0.000 N7B #22 0.000 N10B #23 0.000 N12B #24 0.000 +model BEWCUB RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 1 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 10 C2 #2 2 C3 #3 2 C4 #4 1 C5 #5 20 C6 #6 30 C7 #7 3 C8 #8 2 S9 #9 17 C10 #10 2 C11 #11 2 N12 #12 10 C13 #13 3 O14 #14 7 C15 #15 1 O16 #16 7 C17 #17 1 C18 #18 1 O19 #19 6 C20 #20 3 O21 #21 7 C22 #22 1 O23 #23 7 C24 #24 3 O25 #25 7 O26 #26 6 C27 #27 1 C28 #28 37 C29 #29 37 C30 #30 37 C31 #31 37 C32 #32 37 C33 #33 37 N34 #34 45 O35 #35 32 O36 #36 32 H1 #37 5 H2 #38 5 H3 #39 5 H4 #40 5 H5 #41 5 H6 #42 28 H7 #43 5 H8 #44 5 H9 #45 5 H10 #46 5 H11 #47 5 H12 #48 5 H13 #49 5 H14 #50 5 H15 #51 5 H16 #52 5 H17 #53 5 H18 #54 5 H19 #55 5 H20 #56 5 H21 #57 5 H22 #58 5 H23 #59 5 + # symb N1 #1 NC=O C2 #2 C=C C3 #3 C=C C4 #4 CR C5 #5 CR4R C6 #6 CE4R C7 #7 C=ON C8 #8 C=C S9 #9 S=O C10 #10 C=C C11 #11 C=C N12 #12 NC=O C13 #13 C=ON O14 #14 O=CN C15 #15 CR O16 #16 O=S C17 #17 CR C18 #18 CR O19 #19 OC=O C20 #20 COO O21 #21 O=CO C22 #22 CR O23 #23 O=CN C24 #24 COO O25 #25 O=CO O26 #26 OC=O C27 #27 CR C28 #28 CB C29 #29 CB C30 #30 CB C31 #31 CB C32 #32 CB C33 #33 CB N34 #34 NO2 O35 #35 O2N O36 #36 O2N H1 #37 HC H2 #38 HC H3 #39 HC H4 #40 HC H5 #41 HC H6 #42 HNCO H7 #43 HC H8 #44 HC H9 #45 HC H10 #46 HC H11 #47 HC H12 #48 HC H13 #49 HC H14 #50 HC H15 #51 HC H16 #52 HC H17 #53 HC H18 #54 HC H19 #55 HC H20 #56 HC H21 #57 HC H22 #58 HC H23 #59 HC + # char N1 #1 -0.394 C2 #2 0.123 C3 #3 -0.082 C4 #4 0.138 C5 #5 0.363 C6 #6 -0.240 C7 #7 0.701 C8 #8 -0.245 S9 #9 0.388 C10 #10 -0.094 C11 #11 -0.041 N12 #12 -0.539 C13 #13 0.569 O14 #14 -0.570 C15 #15 0.061 O16 #16 -0.500 C17 #17 0.138 C18 #18 0.418 O19 #19 -0.430 C20 #20 0.659 O21 #21 -0.570 C22 #22 0.061 O23 #23 -0.570 C24 #24 0.706 O25 #25 -0.570 O26 #26 -0.430 C27 #27 0.423 C28 #28 -0.143 C29 #29 -0.150 C30 #30 -0.150 C31 #31 0.133 C32 #32 -0.150 C33 #33 -0.150 N34 #34 0.907 O35 #35 -0.520 O36 #36 -0.520 H1 #37 0.000 H2 #38 0.000 H3 #39 0.000 H4 #40 0.150 H5 #41 0.150 H6 #42 0.370 H7 #43 0.000 H8 #44 0.000 H9 #45 0.000 H10 #46 0.000 H11 #47 0.000 H12 #48 0.000 H13 #49 0.000 H14 #50 0.000 H15 #51 0.000 H16 #52 0.000 H17 #53 0.000 H18 #54 0.000 H19 #55 0.000 H20 #56 0.150 H21 #57 0.150 H22 #58 0.150 H23 #59 0.150 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 S9 #9 0.000 C10 #10 0.000 C11 #11 0.000 N12 #12 0.000 C13 #13 0.000 O14 #14 0.000 C15 #15 0.000 O16 #16 0.000 C17 #17 0.000 C18 #18 0.000 O19 #19 0.000 C20 #20 0.000 O21 #21 0.000 C22 #22 0.000 O23 #23 0.000 C24 #24 0.000 O25 #25 0.000 O26 #26 0.000 C27 #27 0.000 C28 #28 0.000 C29 #29 0.000 C30 #30 0.000 C31 #31 0.000 C32 #32 0.000 C33 #33 0.000 N34 #34 0.000 O35 #35 0.000 O36 #36 0.000 H1 #37 0.000 H2 #38 0.000 H3 #39 0.000 H4 #40 0.000 H5 #41 0.000 H6 #42 0.000 H7 #43 0.000 H8 #44 0.000 H9 #45 0.000 H10 #46 0.000 H11 #47 0.000 H12 #48 0.000 H13 #49 0.000 H14 #50 0.000 H15 #51 0.000 H16 #52 0.000 H17 #53 0.000 H18 #54 0.000 H19 #55 0.000 H20 #56 0.000 H21 #57 0.000 H22 #58 0.000 H23 #59 0.000 +model BEWKUJ04 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 62 N2 #5 40 N3 #6 58 C1 #7 37 C2 #8 37 C3 #9 37 C4 #10 37 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 C9 #15 37 C10 #16 37 C11 #17 37 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 28 H6 #23 28 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 36 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S N1 #4 NM N2 #5 NC=C N3 #6 NPD+ C1 #7 CB C2 #8 CB C3 #9 CB C4 #10 CB C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB C9 #15 CB C10 #16 CB C11 #17 CB H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HNCC H6 #23 HNCC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HPD+ + # char S1 #1 0.849 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.288 N2 #5 -0.900 N3 #6 -0.179 C1 #7 -0.009 C2 #8 -0.150 C3 #9 -0.150 C4 #10 0.100 C5 #11 -0.150 C6 #12 -0.150 C7 #13 0.109 C8 #14 -0.150 C9 #15 -0.150 C10 #16 -0.150 C11 #17 0.211 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.400 H6 #23 0.400 H7 #24 0.150 H8 #25 0.150 H9 #26 0.150 H10 #27 0.150 H11 #28 0.457 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 -1.000 N2 #5 0.000 N3 #6 1.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 C11 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 +model BIHKEI01 RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 9 8 EXOCYCLIC MULT BOND 12 5 + # ty O1 #1 35 O2 #2 6 O3 #3 6 N1 #4 58 C1 #5 37 C2 #6 37 C3 #7 1 C4 #8 37 C5 #9 37 C6 #10 1 C7 #11 1 C8 #12 37 H23 #13 21 H3 #14 36 H131 #15 5 H132 #16 5 H133 #17 5 H14 #18 5 H161 #19 5 H162 #20 5 H17 #21 5 + # symb O1 #1 OM2 O2 #2 OR O3 #3 OR N1 #4 NPD+ C1 #5 CB C2 #6 CB C3 #7 CR C4 #8 CB C5 #9 CB C6 #10 CR C7 #11 CR C8 #12 CB H23 #13 HOR H3 #14 HPD+ H131 #15 HC H132 #16 HC H133 #17 HC H14 #18 HC H161 #19 HC H162 #20 HC H17 #21 HC + # char O1 #1 -0.829 O2 #2 -0.560 O3 #3 -0.680 N1 #4 -0.179 C1 #5 -0.171 C2 #6 0.217 C3 #7 0.143 C4 #8 0.211 C5 #9 -0.143 C6 #10 0.423 C7 #11 0.704 C8 #12 -0.143 H23 #13 0.400 H3 #14 0.457 H131 #15 0.000 H132 #16 0.000 H133 #17 0.000 H14 #18 0.150 H161 #19 0.000 H162 #20 0.000 H17 #21 0.000 + # fchar O1 #1 -1.000 O2 #2 0.000 O3 #3 0.000 N1 #4 1.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 H23 #13 0.000 H3 #14 0.000 H131 #15 0.000 H132 #16 0.000 H133 #17 0.000 H14 #18 0.000 H161 #19 0.000 H162 #20 0.000 H17 #21 0.000 +model BIPDEJ02 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 14 SUBRING 1 has 2 PI electrons + # ty N1 #1 10 C1 #2 3 O1 #3 7 N2 #4 10 C2 #5 3 O2 #6 7 C3 #7 2 F1 #8 11 C4 #9 2 C5 #10 1 C6 #11 1 C7 #12 1 C8 #13 1 O3 #14 6 H2 #15 28 H4 #16 5 H5 #17 5 H61 #18 5 H62 #19 5 H71 #20 5 H72 #21 5 H81 #22 5 H82 #23 5 + # symb N1 #1 NC=O C1 #2 CONN O1 #3 O=CN N2 #4 NC=O C2 #5 C=ON O2 #6 O=CN C3 #7 C=C F1 #8 F C4 #9 C=C C5 #10 CR C6 #11 CR C7 #12 CR C8 #13 CR O3 #14 OR H2 #15 HNCO H4 #16 HC H5 #17 HC H61 #18 HC H62 #19 HC H71 #20 HC H72 #21 HC H81 #22 HC H82 #23 HC + # char N1 #1 -0.469 C1 #2 0.690 O1 #3 -0.570 N2 #4 -0.490 C2 #5 0.616 O2 #6 -0.570 C3 #7 0.164 F1 #8 -0.149 C4 #9 -0.041 C5 #10 0.580 C6 #11 0.000 C7 #12 0.000 C8 #13 0.280 O3 #14 -0.560 H2 #15 0.370 H4 #16 0.150 H5 #17 0.000 H61 #18 0.000 H62 #19 0.000 H71 #20 0.000 H72 #21 0.000 H81 #22 0.000 H82 #23 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 O1 #3 0.000 N2 #4 0.000 C2 #5 0.000 O2 #6 0.000 C3 #7 0.000 F1 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 O3 #14 0.000 H2 #15 0.000 H4 #16 0.000 H5 #17 0.000 H61 #18 0.000 H62 #19 0.000 H71 #20 0.000 H72 #21 0.000 H81 #22 0.000 H82 #23 0.000 +model BIPJUF10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 3 O1 #8 6 O2 #9 7 N1 #10 45 O3 #11 32 O4 #12 32 N2 #13 45 O5 #14 32 O6 #15 32 H1 #16 24 H31 #17 5 H51 #18 5 H61 #19 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 COO O1 #8 OC=O O2 #9 O=CO N1 #10 NO2 O3 #11 O2N O4 #12 O2N N2 #13 NO2 O5 #14 O2N O6 #15 O2N H1 #16 HOCO H31 #17 HC H51 #18 HC H61 #19 HC + # char C1 #1 0.086 C2 #2 0.133 C3 #3 -0.150 C4 #4 0.133 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.634 O1 #8 -0.650 O2 #9 -0.570 N1 #10 0.907 O3 #11 -0.520 O4 #12 -0.520 N2 #13 0.907 O5 #14 -0.520 O6 #15 -0.520 H1 #16 0.500 H31 #17 0.150 H51 #18 0.150 H61 #19 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 O1 #8 0.000 O2 #9 0.000 N1 #10 0.000 O3 #11 0.000 O4 #12 0.000 N2 #13 0.000 O5 #14 0.000 O6 #15 0.000 H1 #16 0.000 H31 #17 0.000 H51 #18 0.000 H61 #19 0.000 +model BIPYCL01 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 58 C1 #2 37 C2 #3 37 C3 #4 37 C4 #5 37 C5 #6 37 N2 #7 58 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 H1 #13 36 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 36 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 + # symb N1 #1 NPD+ C1 #2 CB C2 #3 CB C3 #4 CB C4 #5 CB C5 #6 CB N2 #7 NPD+ C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB H1 #13 HPD+ H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HPD+ H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC + # char N1 #1 -0.179 C1 #2 0.361 C2 #3 -0.150 C3 #4 -0.150 C4 #5 -0.150 C5 #6 0.211 N2 #7 -0.179 C6 #8 0.361 C7 #9 -0.150 C8 #10 -0.150 C9 #11 -0.150 C10 #12 0.211 H1 #13 0.457 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.457 H7 #19 0.150 H8 #20 0.150 H9 #21 0.150 H10 #22 0.150 + # fchar N1 #1 1.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 N2 #7 1.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 +model BITNAT10 RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 9 SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 1 2 EXOCYCLIC MULT BOND 6 5 SUBRING 2 ALSO RECOGNIZED AS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 10 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 63 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 64 N1 #7 66 C7 #8 63 S1 #9 44 N2 #10 39 C8 #11 63 C9 #12 64 C10 #13 64 N3 #14 65 C11 #15 1 C12 #16 1 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 + # symb C1 #1 C5A C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 C5B N1 #7 N5B C7 #8 C5A S1 #9 STHI N2 #10 NPYL C8 #11 C5A C9 #12 C5B C10 #13 C5B N3 #14 N5A C11 #15 CR C12 #16 CR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC + # char C1 #1 0.040 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 0.227 N1 #7 -0.565 C7 #8 0.302 S1 #9 -0.080 N2 #10 0.646 C8 #11 -0.332 C9 #12 -0.150 C10 #13 0.108 N3 #14 -0.707 C11 #15 0.181 C12 #16 0.180 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.150 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 0.000 C7 #8 0.000 S1 #9 0.000 N2 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 N3 #14 0.000 C11 #15 0.000 C12 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 +model BIYBIU10 RING 1 HAS 3 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 12 PI PAIR ON SP2-N 11 SUBRING 2 has 8 PI electrons SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty C23 #1 37 C24 #2 37 C25 #3 37 C26 #4 37 C27 #5 37 C28 #6 37 C29 #7 37 C30 #8 37 C31 #9 37 C32 #10 37 N1 #11 40 S1 #12 15 C21 #13 37 C22 #14 37 H25 #15 5 H26 #16 5 H27 #17 5 H29 #18 5 H30 #19 5 H31 #20 5 H10 #21 28 H1 #22 5 H2 #23 5 + # symb C23 #1 CB C24 #2 CB C25 #3 CB C26 #4 CB C27 #5 CB C28 #6 CB C29 #7 CB C30 #8 CB C31 #9 CB C32 #10 CB N1 #11 NC=C S1 #12 S C21 #13 CB C22 #14 CB H25 #15 HC H26 #16 HC H27 #17 HC H29 #18 HC H30 #19 HC H31 #20 HC H10 #21 HNCC H1 #22 HC H2 #23 HC + # char C23 #1 0.100 C24 #2 0.102 C25 #3 -0.150 C26 #4 -0.150 C27 #5 -0.150 C28 #6 -0.150 C29 #7 -0.150 C30 #8 -0.150 C31 #9 -0.150 C32 #10 -0.150 N1 #11 -0.600 S1 #12 -0.203 C21 #13 0.102 C22 #14 0.100 H25 #15 0.150 H26 #16 0.150 H27 #17 0.150 H29 #18 0.150 H30 #19 0.150 H31 #20 0.150 H10 #21 0.400 H1 #22 0.150 H2 #23 0.150 + # fchar C23 #1 0.000 C24 #2 0.000 C25 #3 0.000 C26 #4 0.000 C27 #5 0.000 C28 #6 0.000 C29 #7 0.000 C30 #8 0.000 C31 #9 0.000 C32 #10 0.000 N1 #11 0.000 S1 #12 0.000 C21 #13 0.000 C22 #14 0.000 H25 #15 0.000 H26 #16 0.000 H27 #17 0.000 H29 #18 0.000 H30 #19 0.000 H31 #20 0.000 H10 #21 0.000 H1 #22 0.000 H2 #23 0.000 +model BODKOU 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 16 DOMAIN 2 contains atoms 17 to 37 RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 4 PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 19 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C10 #1 1 S11 #2 15 C12 #3 3 S13 #4 15 C14 #5 1 N15 #6 8 N16 #7 9 C17 #8 1 H8 #9 5 H9 #10 5 H10 #11 5 H13 #12 5 H14 #13 5 H15 #14 5 H1 #15 5 H2 #16 23 N26 #17 66 C27 #18 63 S28 #19 44 C29 #20 63 N30 #21 40 N18 #22 10 C19 #23 3 O20 #24 7 C21 #25 3 N22 #26 9 O23 #27 6 H16 #28 28 H17 #29 28 H18 #30 5 H19 #31 5 H20 #32 5 H24 #33 28 H25 #34 28 C24 #35 1 C25 #36 64 H3 #37 5 + # symb C10 #1 CR S11 #2 S C12 #3 C=N S13 #4 S C14 #5 CR N15 #6 NR N16 #7 N=C C17 #8 CR H8 #9 HC H9 #10 HC H10 #11 HC H13 #12 HC H14 #13 HC H15 #14 HC H1 #15 HC H2 #16 HNR N26 #17 N5B C27 #18 C5A S28 #19 STHI C29 #20 C5A N30 #21 NC=N N18 #22 NC=O C19 #23 C=ON O20 #24 O=CN C21 #25 C=N N22 #26 N=C O23 #27 OR H16 #28 HNCO H17 #29 HNCO H18 #30 HC H19 #31 HC H20 #32 HC H24 #33 HNCN H25 #34 HNCN C24 #35 CR C25 #36 C5B H3 #37 HC + # char C10 #1 0.230 S11 #2 -0.371 C12 #3 0.732 S13 #4 -0.371 C14 #5 0.500 N15 #6 -0.577 N16 #7 -0.503 C17 #8 0.000 H8 #9 0.000 H9 #10 0.000 H10 #11 0.000 H13 #12 0.000 H14 #13 0.000 H15 #14 0.000 H1 #15 0.000 H2 #16 0.360 N26 #17 -0.565 C27 #18 0.462 S28 #19 -0.080 C29 #20 -0.110 N30 #21 -0.884 N18 #22 -0.800 C19 #23 0.630 O20 #24 -0.570 C21 #25 0.536 N22 #26 -0.513 O23 #27 -0.217 H16 #28 0.370 H17 #29 0.370 H18 #30 0.000 H19 #31 0.000 H20 #32 0.000 H24 #33 0.400 H25 #34 0.400 C24 #35 0.280 C25 #36 0.141 H3 #37 0.150 + # fchar C10 #1 0.000 S11 #2 0.000 C12 #3 0.000 S13 #4 0.000 C14 #5 0.000 N15 #6 0.000 N16 #7 0.000 C17 #8 0.000 H8 #9 0.000 H9 #10 0.000 H10 #11 0.000 H13 #12 0.000 H14 #13 0.000 H15 #14 0.000 H1 #15 0.000 H2 #16 0.000 N26 #17 0.000 C27 #18 0.000 S28 #19 0.000 C29 #20 0.000 N30 #21 0.000 N18 #22 0.000 C19 #23 0.000 O20 #24 0.000 C21 #25 0.000 N22 #26 0.000 O23 #27 0.000 H16 #28 0.000 H17 #29 0.000 H18 #30 0.000 H19 #31 0.000 H20 #32 0.000 H24 #33 0.000 H25 #34 0.000 C24 #35 0.000 C25 #36 0.000 H3 #37 0.000 +model BSALAP01 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty BR1 #1 13 O1 #2 6 N1 #3 9 N2 #4 38 C1 #5 37 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 3 C8 #12 37 C9 #13 37 C10 #14 37 C11 #15 37 C12 #16 37 H1 #17 29 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 + # symb BR1 #1 BR O1 #2 OC=C N1 #3 N=C N2 #4 NPYD C1 #5 CB C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 C=N C8 #12 CB C9 #13 CB C10 #14 CB C11 #15 CB C12 #16 CB H1 #17 HOCC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC + # char BR1 #1 -0.111 O1 #2 -0.532 N1 #3 -0.629 N2 #4 -0.620 C1 #5 -0.150 C2 #6 0.111 C3 #7 -0.150 C4 #8 -0.150 C5 #9 0.083 C6 #10 0.086 C7 #11 0.304 C8 #12 0.489 C9 #13 -0.150 C10 #14 -0.150 C11 #15 -0.150 C12 #16 0.160 H1 #17 0.450 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.060 H6 #22 0.150 H7 #23 0.150 H8 #24 0.150 H9 #25 0.150 + # fchar BR1 #1 0.000 O1 #2 0.000 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 C12 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 +model BUPSLB10 + # ty P1 #1 25 S1 #2 72 C1 #3 1 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 1 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 5 H5 #12 5 H6 #13 5 H7 #14 5 H8 #15 5 H9 #16 5 H10 #17 5 H11 #18 5 H12 #19 5 P1A #20 25 S1A #21 72 C1A #22 1 C5A #23 1 C2A #24 1 C3A #25 1 C4A #26 1 H10A #27 5 H11A #28 5 H12A #29 5 H1A #30 5 H2A #31 5 H3A #32 5 H4A #33 5 H5A #34 5 H6A #35 5 H7A #36 5 H8A #37 5 H9A #38 5 + # symb P1 #1 PTET S1 #2 S-P C1 #3 CR C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 CR H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HC H5 #12 HC H6 #13 HC H7 #14 HC H8 #15 HC H9 #16 HC H10 #17 HC H11 #18 HC H12 #19 HC P1A #20 PTET S1A #21 S-P C1A #22 CR C5A #23 CR C2A #24 CR C3A #25 CR C4A #26 CR H10A #27 HC H11A #28 HC H12A #29 HC H1A #30 HC H2A #31 HC H3A #32 HC H4A #33 HC H5A #34 HC H6A #35 HC H7A #36 HC H8A #37 HC H9A #38 HC + # char P1 #1 0.677 S1 #2 -0.677 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 H8 #15 0.000 H9 #16 0.000 H10 #17 0.000 H11 #18 0.000 H12 #19 0.000 P1A #20 0.677 S1A #21 -0.677 C1A #22 0.000 C5A #23 0.000 C2A #24 0.000 C3A #25 0.000 C4A #26 0.000 H10A #27 0.000 H11A #28 0.000 H12A #29 0.000 H1A #30 0.000 H2A #31 0.000 H3A #32 0.000 H4A #33 0.000 H5A #34 0.000 H6A #35 0.000 H7A #36 0.000 H8A #37 0.000 H9A #38 0.000 + # fchar P1 #1 0.000 S1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 H8 #15 0.000 H9 #16 0.000 H10 #17 0.000 H11 #18 0.000 H12 #19 0.000 P1A #20 0.000 S1A #21 0.000 C1A #22 0.000 C5A #23 0.000 C2A #24 0.000 C3A #25 0.000 C4A #26 0.000 H10A #27 0.000 H11A #28 0.000 H12A #29 0.000 H1A #30 0.000 H2A #31 0.000 H3A #32 0.000 H4A #33 0.000 H5A #34 0.000 H6A #35 0.000 H7A #36 0.000 H8A #37 0.000 H9A #38 0.000 +model BUPSLD10 + # ty P1 #1 25 P2 #2 25 S1 #3 72 S2 #4 72 S3 #5 15 C11 #6 1 C12 #7 1 C13 #8 1 C14 #9 1 C15 #10 1 C21 #11 1 C22 #12 1 C23 #13 1 C24 #14 1 C25 #15 1 H121 #16 5 H122 #17 5 H123 #18 5 H131 #19 5 H132 #20 5 H133 #21 5 H141 #22 5 H142 #23 5 H143 #24 5 H151 #25 5 H152 #26 5 H153 #27 5 H221 #28 5 H222 #29 5 H223 #30 5 H231 #31 5 H232 #32 5 H233 #33 5 H241 #34 5 H242 #35 5 H243 #36 5 H251 #37 5 H252 #38 5 H253 #39 5 + # symb P1 #1 PTET P2 #2 PTET S1 #3 S-P S2 #4 S-P S3 #5 S C11 #6 CR C12 #7 CR C13 #8 CR C14 #9 CR C15 #10 CR C21 #11 CR C22 #12 CR C23 #13 CR C24 #14 CR C25 #15 CR H121 #16 HC H122 #17 HC H123 #18 HC H131 #19 HC H132 #20 HC H133 #21 HC H141 #22 HC H142 #23 HC H143 #24 HC H151 #25 HC H152 #26 HC H153 #27 HC H221 #28 HC H222 #29 HC H223 #30 HC H231 #31 HC H232 #32 HC H233 #33 HC H241 #34 HC H242 #35 HC H243 #36 HC H251 #37 HC H252 #38 HC H253 #39 HC + # char P1 #1 0.925 P2 #2 0.925 S1 #3 -0.677 S2 #4 -0.677 S3 #5 -0.496 C11 #6 0.000 C12 #7 0.000 C13 #8 0.000 C14 #9 0.000 C15 #10 0.000 C21 #11 0.000 C22 #12 0.000 C23 #13 0.000 C24 #14 0.000 C25 #15 0.000 H121 #16 0.000 H122 #17 0.000 H123 #18 0.000 H131 #19 0.000 H132 #20 0.000 H133 #21 0.000 H141 #22 0.000 H142 #23 0.000 H143 #24 0.000 H151 #25 0.000 H152 #26 0.000 H153 #27 0.000 H221 #28 0.000 H222 #29 0.000 H223 #30 0.000 H231 #31 0.000 H232 #32 0.000 H233 #33 0.000 H241 #34 0.000 H242 #35 0.000 H243 #36 0.000 H251 #37 0.000 H252 #38 0.000 H253 #39 0.000 + # fchar P1 #1 0.000 P2 #2 0.000 S1 #3 0.000 S2 #4 0.000 S3 #5 0.000 C11 #6 0.000 C12 #7 0.000 C13 #8 0.000 C14 #9 0.000 C15 #10 0.000 C21 #11 0.000 C22 #12 0.000 C23 #13 0.000 C24 #14 0.000 C25 #15 0.000 H121 #16 0.000 H122 #17 0.000 H123 #18 0.000 H131 #19 0.000 H132 #20 0.000 H133 #21 0.000 H141 #22 0.000 H142 #23 0.000 H143 #24 0.000 H151 #25 0.000 H152 #26 0.000 H153 #27 0.000 H221 #28 0.000 H222 #29 0.000 H223 #30 0.000 H231 #31 0.000 H232 #32 0.000 H233 #33 0.000 H241 #34 0.000 H242 #35 0.000 H243 #36 0.000 H251 #37 0.000 H252 #38 0.000 H253 #39 0.000 +model BUYTIY10 RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 19 SUBRING 1 has 2 PI electrons + # ty N1 #1 66 C2 #2 64 C3 #3 63 N4 #4 39 N5 #5 40 C6 #6 2 C7 #7 2 C8 #8 63 C9 #9 4 N9 #10 42 C1_ #11 1 C2_ #12 1 O2_ #13 6 C3_ #14 1 O3_ #15 6 C4_ #16 1 C5_ #17 1 O5_ #18 6 O1_ #19 6 H2 #20 5 H3 #21 5 H6 #22 5 H1_ #23 5 H2_ #24 5 H21 #25 21 H3_ #26 5 H31 #27 21 H4_ #28 5 H51_ #29 5 H52_ #30 5 H5_ #31 21 + # symb N1 #1 N5B C2 #2 C5B C3 #3 C5A N4 #4 NPYL N5 #5 NC=C C6 #6 C=C C7 #7 C=C C8 #8 C5A C9 #9 CSP N9 #10 NSP C1_ #11 CR C2_ #12 CR O2_ #13 OR C3_ #14 CR O3_ #15 OR C4_ #16 CR C5_ #17 CR O5_ #18 OR O1_ #19 OR H2 #20 HC H3 #21 HC H6 #22 HC H1_ #23 HC H2_ #24 HC H21 #25 HOR H3_ #26 HC H31 #27 HOR H4_ #28 HC H51_ #29 HC H52_ #30 HC H5_ #31 HOR + # char N1 #1 -0.565 C2 #2 0.077 C3 #3 -0.302 N4 #4 0.463 N5 #5 -0.629 C6 #6 -0.050 C7 #7 0.110 C8 #8 0.142 C9 #9 0.492 N9 #10 -0.557 C1_ #11 0.649 C2_ #12 0.280 O2_ #13 -0.680 C3_ #14 0.280 O3_ #15 -0.680 C4_ #16 0.280 C5_ #17 0.280 O5_ #18 -0.680 O1_ #19 -0.560 H2 #20 0.150 H3 #21 0.150 H6 #22 0.150 H1_ #23 0.000 H2_ #24 0.000 H21 #25 0.400 H3_ #26 0.000 H31 #27 0.400 H4_ #28 0.000 H51_ #29 0.000 H52_ #30 0.000 H5_ #31 0.400 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N4 #4 0.000 N5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N9 #10 0.000 C1_ #11 0.000 C2_ #12 0.000 O2_ #13 0.000 C3_ #14 0.000 O3_ #15 0.000 C4_ #16 0.000 C5_ #17 0.000 O5_ #18 0.000 O1_ #19 0.000 H2 #20 0.000 H3 #21 0.000 H6 #22 0.000 H1_ #23 0.000 H2_ #24 0.000 H21 #25 0.000 H3_ #26 0.000 H31 #27 0.000 H4_ #28 0.000 H51_ #29 0.000 H52_ #30 0.000 H5_ #31 0.000 +model BUYTOE10 RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 19 SUBRING 1 has 2 PI electrons + # ty N1 #1 40 C2 #2 2 C3 #3 2 N4 #4 39 N5 #5 65 C6 #6 64 C7 #7 64 C8 #8 63 C9 #9 4 N9 #10 42 C1_ #11 1 C2_ #12 1 O2_ #13 6 C3_ #14 1 O3_ #15 6 C4_ #16 1 C5_ #17 1 O5_ #18 6 O1_ #19 6 H2 #20 5 H3 #21 5 H6 #22 5 H1_ #23 5 H2_ #24 5 H21 #25 21 H3_ #26 5 H31 #27 21 H4_ #28 5 H51_ #29 5 H52_ #30 5 H5_ #31 21 + # symb N1 #1 NC=C C2 #2 C=C C3 #3 C=C N4 #4 NPYL N5 #5 N5A C6 #6 C5B C7 #7 C5B C8 #8 C5A C9 #9 CSP N9 #10 NSP C1_ #11 CR C2_ #12 CR O2_ #13 OR C3_ #14 CR O3_ #15 OR C4_ #16 CR C5_ #17 CR O5_ #18 OR O1_ #19 OR H2 #20 HC H3 #21 HC H6 #22 HC H1_ #23 HC H2_ #24 HC H21 #25 HOR H3_ #26 HC H31 #27 HOR H4_ #28 HC H51_ #29 HC H52_ #30 HC H5_ #31 HOR + # char N1 #1 -0.553 C2 #2 -0.050 C3 #3 -0.181 N4 #4 0.601 N5 #5 -0.707 C6 #6 0.139 C7 #7 0.019 C8 #8 -0.068 C9 #9 0.538 N9 #10 -0.557 C1_ #11 0.649 C2_ #12 0.280 O2_ #13 -0.680 C3_ #14 0.280 O3_ #15 -0.680 C4_ #16 0.280 C5_ #17 0.280 O5_ #18 -0.680 O1_ #19 -0.560 H2 #20 0.150 H3 #21 0.150 H6 #22 0.150 H1_ #23 0.000 H2_ #24 0.000 H21 #25 0.400 H3_ #26 0.000 H31 #27 0.400 H4_ #28 0.000 H51_ #29 0.000 H52_ #30 0.000 H5_ #31 0.400 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N4 #4 0.000 N5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N9 #10 0.000 C1_ #11 0.000 C2_ #12 0.000 O2_ #13 0.000 C3_ #14 0.000 O3_ #15 0.000 C4_ #16 0.000 C5_ #17 0.000 O5_ #18 0.000 O1_ #19 0.000 H2 #20 0.000 H3 #21 0.000 H6 #22 0.000 H1_ #23 0.000 H2_ #24 0.000 H21 #25 0.000 H3_ #26 0.000 H31 #27 0.000 H4_ #28 0.000 H51_ #29 0.000 H52_ #30 0.000 H5_ #31 0.000 +model BUYXEY10 + # ty O1 #1 7 C1 #2 3 N1 #3 10 C2 #4 1 C3 #5 3 O2 #6 7 C4 #7 1 C5 #8 1 S1 #9 15 C6 #10 1 N2 #11 10 C7 #12 1 C8 #13 1 C9 #14 1 C10 #15 1 C11 #16 3 O3 #17 6 O4 #18 7 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 24 H5 #23 5 H6 #24 5 H7 #25 28 H8 #26 5 H9 #27 5 H10 #28 28 H11 #29 5 H12 #30 5 H13 #31 5 H14 #32 5 H15 #33 5 H16 #34 5 H17 #35 5 H18 #36 5 H19 #37 5 H20 #38 5 + # symb O1 #1 O=CN C1 #2 C=ON N1 #3 NC=O C2 #4 CR C3 #5 C=ON O2 #6 O=CN C4 #7 CR C5 #8 CR S1 #9 S C6 #10 CR N2 #11 NC=O C7 #12 CR C8 #13 CR C9 #14 CR C10 #15 CR C11 #16 COO O3 #17 OC=O O4 #18 O=CO H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HOCO H5 #23 HC H6 #24 HC H7 #25 HNCO H8 #26 HC H9 #27 HC H10 #28 HNCO H11 #29 HC H12 #30 HC H13 #31 HC H14 #32 HC H15 #33 HC H16 #34 HC H17 #35 HC H18 #36 HC H19 #37 HC H20 #38 HC + # char O1 #1 -0.570 C1 #2 0.570 N1 #3 -0.730 C2 #4 0.361 C3 #5 0.569 O2 #6 -0.570 C4 #7 0.000 C5 #8 0.230 S1 #9 -0.460 C6 #10 0.230 N2 #11 -0.730 C7 #12 0.361 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.659 O3 #17 -0.650 O4 #18 -0.570 H1 #19 0.000 H2 #20 0.000 H3 #21 0.060 H4 #22 0.500 H5 #23 0.000 H6 #24 0.000 H7 #25 0.370 H8 #26 0.000 H9 #27 0.000 H10 #28 0.370 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 H19 #37 0.000 H20 #38 0.000 + # fchar O1 #1 0.000 C1 #2 0.000 N1 #3 0.000 C2 #4 0.000 C3 #5 0.000 O2 #6 0.000 C4 #7 0.000 C5 #8 0.000 S1 #9 0.000 C6 #10 0.000 N2 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 O3 #17 0.000 O4 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 H19 #37 0.000 H20 #38 0.000 +model BYITOT02 RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON O OR S 2 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 S2 #2 15 C3 #3 3 N4 #4 40 C5 #5 1 C6 #6 1 N7 #7 9 C8 #8 3 O9 #9 7 C10 #10 37 C11 #11 37 C12 #12 37 C13 #13 37 C14 #14 37 C15 #15 37 C16 #16 1 H51 #17 5 H52 #18 5 H61 #19 5 H62 #20 5 H11 #21 5 H12 #22 5 H13 #23 5 H14 #24 5 H15 #25 5 H161 #26 5 H162 #27 5 H163 #28 5 + # symb O1 #1 -OS S2 #2 S C3 #3 C=N N4 #4 NC=N C5 #5 CR C6 #6 CR N7 #7 N=C C8 #8 C=ON O9 #9 O=CN C10 #10 CB C11 #11 CB C12 #12 CB C13 #13 CB C14 #14 CB C15 #15 CB C16 #16 CR H51 #17 HC H52 #18 HC H61 #19 HC H62 #20 HC H11 #21 HC H12 #22 HC H13 #23 HC H14 #24 HC H15 #25 HC H161 #26 HC H162 #27 HC H163 #28 HC + # char O1 #1 -0.287 S2 #2 -0.134 C3 #3 0.641 N4 #4 -0.788 C5 #5 0.369 C6 #6 0.280 N7 #7 -0.661 C8 #8 0.695 O9 #9 -0.570 C10 #10 0.086 C11 #11 -0.150 C12 #12 -0.150 C13 #13 -0.150 C14 #14 -0.150 C15 #15 -0.150 C16 #16 0.369 H51 #17 0.000 H52 #18 0.000 H61 #19 0.000 H62 #20 0.000 H11 #21 0.150 H12 #22 0.150 H13 #23 0.150 H14 #24 0.150 H15 #25 0.150 H161 #26 0.000 H162 #27 0.000 H163 #28 0.000 + # fchar O1 #1 0.000 S2 #2 0.000 C3 #3 0.000 N4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N7 #7 0.000 C8 #8 0.000 O9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 C15 #15 0.000 C16 #16 0.000 H51 #17 0.000 H52 #18 0.000 H61 #19 0.000 H62 #20 0.000 H11 #21 0.000 H12 #22 0.000 H13 #23 0.000 H14 #24 0.000 H15 #25 0.000 H161 #26 0.000 H162 #27 0.000 H163 #28 0.000 +model CABWEH10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 C10 #2 37 O1 #3 32 O2 #4 32 C1 #5 1 C2 #6 2 C3 #7 2 C4 #8 1 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 H11 #14 5 H12 #15 5 H3 #16 5 H41 #17 5 H42 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 + # symb S1 #1 SO2 C10 #2 CB O1 #3 O2S O2 #4 O2S C1 #5 CR C2 #6 C=C C3 #7 C=C C4 #8 CR C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB H11 #14 HC H12 #15 HC H3 #16 HC H41 #17 HC H42 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC + # char S1 #1 1.090 C10 #2 -0.150 O1 #3 -0.650 O2 #4 -0.650 C1 #5 0.243 C2 #6 -0.167 C3 #7 -0.288 C4 #8 0.243 C5 #9 0.028 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 H11 #14 0.000 H12 #15 0.000 H3 #16 0.150 H41 #17 0.000 H42 #18 0.000 H6 #19 0.150 H7 #20 0.150 H8 #21 0.150 H9 #22 0.150 H10 #23 0.150 + # fchar S1 #1 0.000 C10 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 H11 #14 0.000 H12 #15 0.000 H3 #16 0.000 H41 #17 0.000 H42 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 +model CAFORM07 + # ty C2 #1 41 O3 #2 32 O4 #3 32 H2 #4 5 + # symb C2 #1 CO2M O3 #2 O2CM O4 #3 O2CM H2 #4 HC + # char C2 #1 1.020 O3 #2 -0.900 O4 #3 -0.900 H2 #4 -0.220 + # fchar C2 #1 0.000 O3 #2 -0.500 O4 #3 -0.500 H2 #4 0.000 +model CAGREH10 RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 3 PI PAIR ON O OR S 4 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 S2 #2 18 O1 #3 6 O2 #4 6 O3 #5 32 O4 #6 32 O5 #7 32 O6 #8 32 N1 #9 9 C1 #10 3 C2 #11 37 C3 #12 37 C4 #13 37 C5 #14 37 C6 #15 37 C7 #16 37 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 + # symb S1 #1 SO4 S2 #2 SO3 O1 #3 OSO3 O2 #4 OSO3 O3 #5 O2S O4 #6 O2S O5 #7 O2S O6 #8 O2S N1 #9 N=C C1 #10 C=N C2 #11 CB C3 #12 CB C4 #13 CB C5 #14 CB C6 #15 CB C7 #16 CB H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC + # char S1 #1 1.667 S2 #2 1.672 O1 #3 -0.334 O2 #4 -0.367 O3 #5 -0.650 O4 #6 -0.650 O5 #7 -0.650 O6 #8 -0.650 N1 #9 -0.638 C1 #10 0.514 C2 #11 0.086 C3 #12 -0.150 C4 #13 -0.150 C5 #14 -0.150 C6 #15 -0.150 C7 #16 -0.150 H3 #17 0.150 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 O4 #6 0.000 O5 #7 0.000 O6 #8 0.000 N1 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 +model CALXES20 + # ty N1 #1 34 C1 #2 1 C2 #3 1 C3 #4 3 O1 #5 7 N2 #6 10 C4 #7 1 C5 #8 3 O2 #9 7 N3 #10 10 C6 #11 1 C7 #12 41 O3 #13 32 O4 #14 32 H1 #15 36 H2 #16 36 H3 #17 36 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 28 H9 #23 5 H10 #24 5 H11 #25 28 H12 #26 5 H13 #27 5 + # symb N1 #1 NR+ C1 #2 CR C2 #3 CR C3 #4 C=ON O1 #5 O=CN N2 #6 NC=O C4 #7 CR C5 #8 C=ON O2 #9 O=CN N3 #10 NC=O C6 #11 CR C7 #12 CO2M O3 #13 O2CM O4 #14 O2CM H1 #15 HNR+ H2 #16 HNR+ H3 #17 HNR+ H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HNCO H9 #23 HC H10 #24 HC H11 #25 HNCO H12 #26 HC H13 #27 HC + # char N1 #1 -0.853 C1 #2 0.564 C2 #3 0.000 C3 #4 0.569 O1 #5 -0.570 N2 #6 -0.730 C4 #7 0.361 C5 #8 0.569 O2 #9 -0.570 N3 #10 -0.730 C6 #11 0.194 C7 #12 0.906 O3 #13 -0.900 O4 #14 -0.900 H1 #15 0.450 H2 #16 0.450 H3 #17 0.450 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.370 H9 #23 0.000 H10 #24 0.000 H11 #25 0.370 H12 #26 0.000 H13 #27 0.000 + # fchar N1 #1 1.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 O1 #5 0.000 N2 #6 0.000 C4 #7 0.000 C5 #8 0.000 O2 #9 0.000 N3 #10 0.000 C6 #11 0.000 C7 #12 0.000 O3 #13 -0.500 O4 #14 -0.500 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 +model CAMALD03 + # ty C1 #1 41 C2 #2 1 C3 #3 41 O1 #4 32 O2 #5 32 O3 #6 32 O4 #7 32 H21 #8 5 H22 #9 5 + # symb C1 #1 CO2M C2 #2 CR C3 #3 CO2M O1 #4 O2CM O2 #5 O2CM O3 #6 O2CM O4 #7 O2CM H21 #8 HC H22 #9 HC + # char C1 #1 0.906 C2 #2 -0.212 C3 #3 0.906 O1 #4 -0.900 O2 #5 -0.900 O3 #6 -0.900 O4 #7 -0.900 H21 #8 0.000 H22 #9 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 O1 #4 -0.500 O2 #5 -0.500 O3 #6 -0.500 O4 #7 -0.500 H21 #8 0.000 H22 #9 0.000 +model CEFMEN RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON O OR S 1 PI PAIR ON SP2-N 9 SUBRING 1 has 6 PI electrons RING 3 HAS 1 SUBRINGS PI PAIR ON SP2-N 14 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 S2 #2 44 S3 #3 15 O1 #4 7 O2 #5 7 O3 #6 6 O4 #7 7 O5 #8 6 N1 #9 10 N2 #10 10 N3 #11 9 N4 #12 66 N5 #13 40 N6 #14 39 N7 #15 65 N8 #16 66 N9 #17 66 C1 #18 1 C2 #19 2 C3 #20 2 C4 #21 20 C5 #22 20 C6 #23 3 C7 #24 3 C8 #25 3 C9 #26 3 C10 #27 1 C11 #28 64 C12 #29 63 C13 #30 63 C14 #31 1 C15 #32 63 C16 #33 1 H11 #34 5 H12 #35 5 H31 #36 24 H41 #37 5 H51 #38 5 H21 #39 28 H103 #40 5 H121 #41 5 H510 #42 28 H520 #43 28 H141 #44 5 H142 #45 5 H1 #46 5 H2 #47 5 H4 #48 5 H5 #49 5 H6 #50 5 + # symb S1 #1 S S2 #2 STHI S3 #3 S O1 #4 O=CN O2 #5 O=CO O3 #6 OC=O O4 #7 O=CN O5 #8 OR N1 #9 NC=O N2 #10 NC=O N3 #11 N=C N4 #12 N5B N5 #13 NC=N N6 #14 NPYL N7 #15 N5A N8 #16 N5B N9 #17 N5B C1 #18 CR C2 #19 C=C C3 #20 C=C C4 #21 CR4R C5 #22 CR4R C6 #23 C=ON C7 #24 COO C8 #25 C=ON C9 #26 C=N C10 #27 CR C11 #28 C5B C12 #29 C5A C13 #30 C5A C14 #31 CR C15 #32 C5A C16 #33 CR H11 #34 HC H12 #35 HC H31 #36 HOCO H41 #37 HC H51 #38 HC H21 #39 HNCO H103 #40 HC H121 #41 HC H510 #42 HNCN H520 #43 HNCN H141 #44 HC H142 #45 HC H1 #46 HC H2 #47 HC H4 #48 HC H5 #49 HC H6 #50 HC + # char S1 #1 -0.447 S2 #2 -0.080 S3 #3 -0.286 O1 #4 -0.570 O2 #5 -0.570 O3 #6 -0.650 O4 #7 -0.570 O5 #8 -0.217 N1 #9 -0.394 N2 #10 -0.655 N3 #11 -0.513 N4 #12 -0.565 N5 #13 -0.884 N6 #14 0.314 N7 #15 -0.418 N8 #16 0.000 N9 #17 -0.338 C1 #18 0.368 C2 #19 -0.276 C3 #20 0.123 C4 #21 0.442 C5 #22 0.278 C6 #23 0.577 C7 #24 0.706 C8 #25 0.630 C9 #26 0.536 C10 #27 0.280 C11 #28 0.141 C12 #29 -0.110 C13 #30 0.462 C14 #31 0.368 C15 #32 0.242 C16 #33 0.256 H11 #34 0.000 H12 #35 0.000 H31 #36 0.500 H41 #37 0.000 H51 #38 0.000 H21 #39 0.370 H103 #40 0.000 H121 #41 0.150 H510 #42 0.400 H520 #43 0.400 H141 #44 0.000 H142 #45 0.000 H1 #46 0.000 H2 #47 0.000 H4 #48 0.000 H5 #49 0.000 H6 #50 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 O1 #4 0.000 O2 #5 0.000 O3 #6 0.000 O4 #7 0.000 O5 #8 0.000 N1 #9 0.000 N2 #10 0.000 N3 #11 0.000 N4 #12 0.000 N5 #13 0.000 N6 #14 0.000 N7 #15 0.000 N8 #16 0.000 N9 #17 0.000 C1 #18 0.000 C2 #19 0.000 C3 #20 0.000 C4 #21 0.000 C5 #22 0.000 C6 #23 0.000 C7 #24 0.000 C8 #25 0.000 C9 #26 0.000 C10 #27 0.000 C11 #28 0.000 C12 #29 0.000 C13 #30 0.000 C14 #31 0.000 C15 #32 0.000 C16 #33 0.000 H11 #34 0.000 H12 #35 0.000 H31 #36 0.000 H41 #37 0.000 H51 #38 0.000 H21 #39 0.000 H103 #40 0.000 H121 #41 0.000 H510 #42 0.000 H520 #43 0.000 H141 #44 0.000 H142 #45 0.000 H1 #46 0.000 H2 #47 0.000 H4 #48 0.000 H5 #49 0.000 H6 #50 0.000 +model CETROI01 RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON O OR S 4 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 9 SUBRING 2 has 2 PI electrons + # ty S1 #1 15 C1 #2 1 C2 #3 1 O1 #4 6 C3 #5 1 C4 #6 1 C5 #7 1 C6 #8 1 O2 #9 6 C7 #10 1 C8 #11 4 N1 #12 42 C9 #13 1 O3 #14 6 O4 #15 6 C10 #16 1 O5 #17 6 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 21 H14 #31 21 H15 #32 21 + # symb S1 #1 S C1 #2 CR C2 #3 CR O1 #4 OR C3 #5 CR C4 #6 CR C5 #7 CR C6 #8 CR O2 #9 OR C7 #10 CR C8 #11 CSP N1 #12 NSP C9 #13 CR O3 #14 OR O4 #15 OR C10 #16 CR O5 #17 OR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HOR H14 #31 HOR H15 #32 HOR + # char S1 #1 -0.460 C1 #2 0.430 C2 #3 0.280 O1 #4 -0.560 C3 #5 0.280 C4 #6 0.280 C5 #7 0.280 C6 #8 0.280 O2 #9 -0.560 C7 #10 0.510 C8 #11 0.357 N1 #12 -0.557 C9 #13 0.000 O3 #14 -0.680 O4 #15 -0.680 C10 #16 0.280 O5 #17 -0.680 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.400 H14 #31 0.400 H15 #32 0.400 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O1 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 O2 #9 0.000 C7 #10 0.000 C8 #11 0.000 N1 #12 0.000 C9 #13 0.000 O3 #14 0.000 O4 #15 0.000 C10 #16 0.000 O5 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 +model CEWCUC10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 3 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 25 O1 #2 32 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 C11 #13 37 C12 #14 37 C13 #15 37 C14 #16 37 C15 #17 37 C16 #18 37 C17 #19 37 C18 #20 37 H10 #21 5 H11 #22 5 H12 #23 5 H13 #24 5 H14 #25 5 H15 #26 5 H16 #27 5 H17 #28 5 H18 #29 5 H19 #30 5 H20 #31 5 H21 #32 5 H22 #33 5 H23 #34 5 H24 #35 5 + # symb P1 #1 PO O1 #2 OP C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB C11 #13 CB C12 #14 CB C13 #15 CB C14 #16 CB C15 #17 CB C16 #18 CB C17 #19 CB C18 #20 CB H10 #21 HC H11 #22 HC H12 #23 HC H13 #24 HC H14 #25 HC H15 #26 HC H16 #27 HC H17 #28 HC H18 #29 HC H19 #30 HC H20 #31 HC H21 #32 HC H22 #33 HC H23 #34 HC H24 #35 HC + # char P1 #1 1.117 O1 #2 -0.700 C1 #3 -0.139 C2 #4 -0.150 C3 #5 -0.150 C4 #6 -0.150 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.139 C8 #10 -0.150 C9 #11 -0.150 C10 #12 -0.150 C11 #13 -0.150 C12 #14 -0.150 C13 #15 -0.139 C14 #16 -0.150 C15 #17 -0.150 C16 #18 -0.150 C17 #19 -0.150 C18 #20 -0.150 H10 #21 0.150 H11 #22 0.150 H12 #23 0.150 H13 #24 0.150 H14 #25 0.150 H15 #26 0.150 H16 #27 0.150 H17 #28 0.150 H18 #29 0.150 H19 #30 0.150 H20 #31 0.150 H21 #32 0.150 H22 #33 0.150 H23 #34 0.150 H24 #35 0.150 + # fchar P1 #1 0.000 O1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 C13 #15 0.000 C14 #16 0.000 C15 #17 0.000 C16 #18 0.000 C17 #19 0.000 C18 #20 0.000 H10 #21 0.000 H11 #22 0.000 H12 #23 0.000 H13 #24 0.000 H14 #25 0.000 H15 #26 0.000 H16 #27 0.000 H17 #28 0.000 H18 #29 0.000 H19 #30 0.000 H20 #31 0.000 H21 #32 0.000 H22 #33 0.000 H23 #34 0.000 H24 #35 0.000 +model CEWVIJ10 RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty O1 #1 7 O2 #2 7 N1 #3 10 N2 #4 10 N3 #5 39 N4 #6 66 C1 #7 3 C2 #8 64 C3 #9 63 C4 #10 3 C5 #11 63 C6 #12 1 C7 #13 1 C8 #14 1 C9 #15 1 C10 #16 1 H1 #17 23 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 H14 #30 5 + # symb O1 #1 O=CN O2 #2 O=CN N1 #3 NC=O N2 #4 NC=O N3 #5 NPYL N4 #6 N5B C1 #7 CONN C2 #8 C5B C3 #9 C5A C4 #10 C=ON C5 #11 C5A C6 #12 CR C7 #13 CR C8 #14 CR C9 #15 CR C10 #16 CR H1 #17 HPYL H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC H14 #30 HC + # char O1 #1 -0.570 O2 #2 -0.570 N1 #3 -0.420 N2 #4 -0.423 N3 #5 0.033 N4 #6 -0.565 C1 #7 0.690 C2 #8 0.290 C3 #9 -0.237 C4 #10 0.715 C5 #11 0.037 C6 #12 0.300 C7 #13 0.300 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 H1 #17 0.270 H2 #18 0.150 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 N4 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 +model CEWYIM30 RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 1 has 6 PI electrons SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty O1 #1 6 O2 #2 6 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 C11 #13 37 C12 #14 37 H1 #15 29 H2 #16 29 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 + # symb O1 #1 OC=C O2 #2 OC=C C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB C11 #13 CB C12 #14 CB H1 #15 HOCC H2 #16 HOCC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC + # char O1 #1 -0.532 O2 #2 -0.532 C1 #3 0.000 C2 #4 0.083 C3 #5 -0.150 C4 #6 -0.150 C5 #7 -0.150 C6 #8 0.000 C7 #9 0.000 C8 #10 0.083 C9 #11 -0.150 C10 #12 -0.150 C11 #13 -0.150 C12 #14 0.000 H1 #15 0.450 H2 #16 0.450 H3 #17 0.150 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 H8 #22 0.150 + # fchar O1 #1 0.000 O2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 +model CIHWUL10 RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 3 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 6 O2 #2 6 O3 #3 6 C1 #4 22 C2 #5 22 C3 #6 22 C4 #7 22 C5 #8 22 C6 #9 22 H1 #10 5 H2 #11 5 H3 #12 5 H4 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 H8 #17 5 + # symb O1 #1 OR O2 #2 OR O3 #3 OR C1 #4 CR3R C2 #5 CR3R C3 #6 CR3R C4 #7 CR3R C5 #8 CR3R C6 #9 CR3R H1 #10 HC H2 #11 HC H3 #12 HC H4 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC H8 #17 HC + # char O1 #1 -0.296 O2 #2 -0.296 O3 #3 -0.296 C1 #4 -0.052 C2 #5 0.048 C3 #6 0.048 C4 #7 0.048 C5 #8 0.048 C6 #9 -0.052 H1 #10 0.100 H2 #11 0.100 H3 #12 0.100 H4 #13 0.100 H5 #14 0.100 H6 #15 0.100 H7 #16 0.100 H8 #17 0.100 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 +model CIJXOI10 RING 1 HAS 2 SUBRINGS SUBRING 1 has 2 PI electrons SUBRING 2 has 2 PI electrons + # ty C7 #1 1 C8 #2 1 C9 #3 1 C10 #4 1 C11 #5 3 C12 #6 3 C13 #7 1 C14 #8 1 C15 #9 1 N7 #10 54 O12 #11 7 H1 #12 36 H7 #13 5 H81 #14 5 H82 #15 5 H9 #16 5 H10 #17 5 H131 #18 5 H132 #19 5 H141 #20 5 H142 #21 5 H143 #22 5 H151 #23 5 H152 #24 5 H153 #25 5 + # symb C7 #1 CR C8 #2 CR C9 #3 CR C10 #4 CR C11 #5 C=N C12 #6 C=OR C13 #7 CR C14 #8 CR C15 #9 CR N7 #10 N+=C O12 #11 O=CR H1 #12 HNC+ H7 #13 HC H81 #14 HC H82 #15 HC H9 #16 HC H10 #17 HC H131 #18 HC H132 #19 HC H141 #20 HC H142 #21 HC H143 #22 HC H151 #23 HC H152 #24 HC H153 #25 HC + # char C7 #1 0.346 C8 #2 0.000 C9 #3 0.000 C10 #4 0.122 C11 #5 0.278 C12 #6 0.448 C13 #7 0.061 C14 #8 0.000 C15 #9 0.061 N7 #10 -0.146 O12 #11 -0.570 H1 #12 0.400 H7 #13 0.000 H81 #14 0.000 H82 #15 0.000 H9 #16 0.000 H10 #17 0.000 H131 #18 0.000 H132 #19 0.000 H141 #20 0.000 H142 #21 0.000 H143 #22 0.000 H151 #23 0.000 H152 #24 0.000 H153 #25 0.000 + # fchar C7 #1 0.000 C8 #2 0.000 C9 #3 0.000 C10 #4 0.000 C11 #5 0.000 C12 #6 0.000 C13 #7 0.000 C14 #8 0.000 C15 #9 0.000 N7 #10 1.000 O12 #11 0.000 H1 #12 0.000 H7 #13 0.000 H81 #14 0.000 H82 #15 0.000 H9 #16 0.000 H10 #17 0.000 H131 #18 0.000 H132 #19 0.000 H141 #20 0.000 H142 #21 0.000 H143 #22 0.000 H151 #23 0.000 H152 #24 0.000 H153 #25 0.000 +model CIKSEU10 RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 13 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 13 SUBRING 2 has 6 PI electrons PI PAIR ON SP2-N 13 SUBRING 3 has 6 PI electrons + # ty N1 #1 9 C2 #2 3 N3 #3 9 C3 #4 3 C4 #5 2 C5 #6 2 N6 #7 9 C6 #8 3 C7 #9 2 C8 #10 2 C9 #11 2 C91 #12 2 N9 #13 40 C10 #14 4 N11 #15 42 H8 #16 5 H6 #17 5 H5 #18 5 H4 #19 5 H2 #20 5 + # symb N1 #1 N=C C2 #2 C=N N3 #3 N=C C3 #4 C=N C4 #5 C=C C5 #6 C=C N6 #7 N=C C6 #8 C=N C7 #9 C=C C8 #10 C=C C9 #11 C=C C91 #12 C=C N9 #13 NC=N C10 #14 CSP N11 #15 NSP H8 #16 HC H6 #17 HC H5 #18 HC H4 #19 HC H2 #20 HC + # char N1 #1 -0.621 C2 #2 0.601 N3 #3 -0.661 C3 #4 0.486 C4 #5 0.079 C5 #6 0.021 N6 #7 -0.621 C6 #8 0.486 C7 #9 -0.136 C8 #10 -0.150 C9 #11 -0.150 C91 #12 0.271 N9 #13 -0.200 C10 #14 0.492 N11 #15 -0.557 H8 #16 0.150 H6 #17 0.150 H5 #18 0.150 H4 #19 0.150 H2 #20 0.060 + # fchar N1 #1 0.000 C2 #2 0.000 N3 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 N6 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C91 #12 0.000 N9 #13 0.000 C10 #14 0.000 N11 #15 0.000 H8 #16 0.000 H6 #17 0.000 H5 #18 0.000 H4 #19 0.000 H2 #20 0.000 +model CILBII RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 18 SUBRING 1 has 2 PI electrons + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 1 C7 #7 1 O1 #8 6 O2 #9 6 O21 #10 32 O22 #11 32 O3 #12 6 O31 #13 32 O32 #14 32 O4 #15 6 O41 #16 32 O42 #17 32 O5 #18 6 O6 #19 6 O61 #20 32 O62 #21 32 N2 #22 45 N3 #23 45 N4 #24 45 N6 #25 45 H1 #26 5 H2 #27 5 H3 #28 5 H4 #29 5 H5 #30 5 H61 #31 5 H62 #32 5 H71 #33 5 H72 #34 5 H73 #35 5 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 CR C7 #7 CR O1 #8 OR O2 #9 ONO2 O21 #10 O2NO O22 #11 O2NO O3 #12 ONO2 O31 #13 O2NO O32 #14 O2NO O4 #15 ONO2 O41 #16 O2NO O42 #17 O2NO O5 #18 OR O6 #19 ONO2 O61 #20 O2NO O62 #21 O2NO N2 #22 NO3 N3 #23 NO3 N4 #24 NO3 N6 #25 NO3 H1 #26 HC H2 #27 HC H3 #28 HC H4 #29 HC H5 #30 HC H61 #31 HC H62 #32 HC H71 #33 HC H72 #34 HC H73 #35 HC + # char C1 #1 0.560 C2 #2 0.280 C3 #3 0.280 C4 #4 0.280 C5 #5 0.280 C6 #6 0.280 C7 #7 0.280 O1 #8 -0.560 O2 #9 -0.271 O21 #10 -0.520 O22 #11 -0.520 O3 #12 -0.271 O31 #13 -0.520 O32 #14 -0.520 O4 #15 -0.271 O41 #16 -0.520 O42 #17 -0.520 O5 #18 -0.560 O6 #19 -0.271 O61 #20 -0.520 O62 #21 -0.520 N2 #22 1.031 N3 #23 1.031 N4 #24 1.031 N6 #25 1.031 H1 #26 0.000 H2 #27 0.000 H3 #28 0.000 H4 #29 0.000 H5 #30 0.000 H61 #31 0.000 H62 #32 0.000 H71 #33 0.000 H72 #34 0.000 H73 #35 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 O1 #8 0.000 O2 #9 0.000 O21 #10 0.000 O22 #11 0.000 O3 #12 0.000 O31 #13 0.000 O32 #14 0.000 O4 #15 0.000 O41 #16 0.000 O42 #17 0.000 O5 #18 0.000 O6 #19 0.000 O61 #20 0.000 O62 #21 0.000 N2 #22 0.000 N3 #23 0.000 N4 #24 0.000 N6 #25 0.000 H1 #26 0.000 H2 #27 0.000 H3 #28 0.000 H4 #29 0.000 H5 #30 0.000 H61 #31 0.000 H62 #32 0.000 H71 #33 0.000 H72 #34 0.000 H73 #35 0.000 +model CILDOQ + # ty S1 #1 16 O1 #2 6 O2 #3 7 O3 #4 6 O4 #5 7 N1 #6 10 N2 #7 9 N3 #8 10 C1 #9 3 C2 #10 3 C3 #11 3 C4 #12 1 C5 #13 1 C6 #14 3 H1 #15 28 H2 #16 28 H3 #17 28 H4 #18 24 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 24 + # symb S1 #1 S=C O1 #2 OC=O O2 #3 O=CO O3 #4 OC=O O4 #5 O=CO N1 #6 NC=S N2 #7 N=C N3 #8 NC=S C1 #9 C=SN C2 #10 C=N C3 #11 COO C4 #12 CR C5 #13 CR C6 #14 COO H1 #15 HNCS H2 #16 HNCS H3 #17 HNCS H4 #18 HOCO H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HOCO + # char S1 #1 -0.380 O1 #2 -0.650 O2 #3 -0.570 O3 #4 -0.650 O4 #5 -0.570 N1 #6 -0.368 N2 #7 -0.512 N3 #8 -0.800 C1 #9 0.500 C2 #10 0.389 C3 #11 0.720 C4 #12 0.061 C5 #13 0.061 C6 #14 0.659 H1 #15 0.370 H2 #16 0.370 H3 #17 0.370 H4 #18 0.500 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.500 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 +model CILWUP11 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 38 N2 #2 38 N3 #3 38 C2 #4 37 C3 #5 37 C1 #6 37 H1 #7 5 H2 #8 5 H3 #9 5 + # symb N1 #1 NPYD N2 #2 NPYD N3 #3 NPYD C2 #4 CB C3 #5 CB C1 #6 CB H1 #7 HC H2 #8 HC H3 #9 HC + # char N1 #1 -0.310 N2 #2 0.000 N3 #3 -0.310 C2 #4 -0.150 C3 #5 0.160 C1 #6 0.160 H1 #7 0.150 H2 #8 0.150 H3 #9 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C2 #4 0.000 C3 #5 0.000 C1 #6 0.000 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 +model CIMRUL10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty CL1 #1 12 O1 #2 7 O2 #3 7 O3 #4 6 N1 #5 10 C1 #6 22 C2 #7 22 C3 #8 22 C4 #9 3 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 37 C9 #14 37 C10 #15 37 C11 #16 3 C12 #17 1 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 28 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 + # symb CL1 #1 CL O1 #2 O=CN O2 #3 O=CO O3 #4 OC=O N1 #5 NC=O C1 #6 CR3R C2 #7 CR3R C3 #8 CR3R C4 #9 C=ON C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CB C9 #14 CB C10 #15 CB C11 #16 COO C12 #17 CR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HNCO H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC + # char CL1 #1 -0.227 O1 #2 -0.570 O2 #3 -0.570 O3 #4 -0.430 N1 #5 -0.579 C1 #6 0.149 C2 #7 0.127 C3 #8 -0.200 C4 #9 0.544 C5 #10 0.086 C6 #11 -0.150 C7 #12 -0.150 C8 #13 -0.150 C9 #14 -0.150 C10 #15 -0.150 C11 #16 0.720 C12 #17 0.280 H1 #18 0.100 H2 #19 0.100 H3 #20 0.100 H4 #21 0.370 H5 #22 0.150 H6 #23 0.150 H7 #24 0.150 H8 #25 0.150 H9 #26 0.150 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 + # fchar CL1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 +model CINVIE RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 7 O2 #2 6 O3 #3 32 O4 #4 32 O5 #5 32 O6 #6 32 O7 #7 32 O8 #8 32 N1 #9 45 N2 #10 45 N3 #11 45 C1 #12 3 C2 #13 1 C3 #14 1 C4 #15 1 C5 #16 2 C6 #17 2 C7 #18 22 C8 #19 22 C9 #20 22 C10 #21 1 H2 #22 21 H3 #23 5 H5 #24 5 H7 #25 5 H81 #26 5 H82 #27 5 H91 #28 5 H92 #29 5 H101 #30 5 H102 #31 5 H103 #32 5 + # symb O1 #1 O=CR O2 #2 OR O3 #3 O2N O4 #4 O2N O5 #5 O2N O6 #6 O2N O7 #7 O2N O8 #8 O2N N1 #9 NO2 N2 #10 NO2 N3 #11 NO2 C1 #12 C=OR C2 #13 CR C3 #14 CR C4 #15 CR C5 #16 C=C C6 #17 C=C C7 #18 CR3R C8 #19 CR3R C9 #20 CR3R C10 #21 CR H2 #22 HOR H3 #23 HC H5 #24 HC H7 #25 HC H81 #26 HC H82 #27 HC H91 #28 HC H92 #29 HC H101 #30 HC H102 #31 HC H103 #32 HC + # char O1 #1 -0.570 O2 #2 -0.680 O3 #3 -0.520 O4 #4 -0.520 O5 #5 -0.520 O6 #6 -0.520 O7 #7 -0.520 O8 #8 -0.520 N1 #9 0.800 N2 #10 0.800 N3 #11 0.836 C1 #12 0.495 C2 #13 0.341 C3 #14 0.240 C4 #15 0.473 C5 #16 -0.288 C6 #17 0.219 C7 #18 -0.195 C8 #19 -0.200 C9 #20 -0.200 C10 #21 0.000 H2 #22 0.400 H3 #23 0.000 H5 #24 0.150 H7 #25 0.100 H81 #26 0.100 H82 #27 0.100 H91 #28 0.100 H92 #29 0.100 H101 #30 0.000 H102 #31 0.000 H103 #32 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 O6 #6 0.000 O7 #7 0.000 O8 #8 0.000 N1 #9 0.000 N2 #10 0.000 N3 #11 0.000 C1 #12 0.000 C2 #13 0.000 C3 #14 0.000 C4 #15 0.000 C5 #16 0.000 C6 #17 0.000 C7 #18 0.000 C8 #19 0.000 C9 #20 0.000 C10 #21 0.000 H2 #22 0.000 H3 #23 0.000 H5 #24 0.000 H7 #25 0.000 H81 #26 0.000 H82 #27 0.000 H91 #28 0.000 H92 #29 0.000 H101 #30 0.000 H102 #31 0.000 H103 #32 0.000 +model CIPVOM RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty N11 #1 9 N21 #2 9 N31 #3 10 N41 #4 39 N51 #5 65 C61 #6 64 C71 #7 64 C711 #8 63 C311 #9 1 C611 #10 1 O721 #11 7 C731 #12 3 O741 #13 6 C751 #14 1 C761 #15 1 H311 #16 5 H321 #17 5 H331 #18 5 H611 #19 5 H621 #20 5 H631 #21 5 H751 #22 5 H752 #23 5 H761 #24 5 H762 #25 5 H763 #26 5 + # symb N11 #1 N=N N21 #2 N=N N31 #3 NN=N N41 #4 NPYL N51 #5 N5A C61 #6 C5B C71 #7 C5B C711 #8 C5A C311 #9 CR C611 #10 CR O721 #11 O=CO C731 #12 COO O741 #13 OC=O C751 #14 CR C761 #15 CR H311 #16 HC H321 #17 HC H331 #18 HC H611 #19 HC H621 #20 HC H631 #21 HC H751 #22 HC H752 #23 HC H761 #24 HC H762 #25 HC H763 #26 HC + # char N11 #1 -0.126 N21 #2 -0.062 N31 #3 -0.378 N41 #4 0.710 N51 #5 -0.707 C61 #6 0.108 C71 #7 -0.086 C711 #8 -0.026 C311 #9 0.300 C611 #10 0.181 O721 #11 -0.570 C731 #12 0.806 O741 #13 -0.430 C751 #14 0.280 C761 #15 0.000 H311 #16 0.000 H321 #17 0.000 H331 #18 0.000 H611 #19 0.000 H621 #20 0.000 H631 #21 0.000 H751 #22 0.000 H752 #23 0.000 H761 #24 0.000 H762 #25 0.000 H763 #26 0.000 + # fchar N11 #1 0.000 N21 #2 0.000 N31 #3 0.000 N41 #4 0.000 N51 #5 0.000 C61 #6 0.000 C71 #7 0.000 C711 #8 0.000 C311 #9 0.000 C611 #10 0.000 O721 #11 0.000 C731 #12 0.000 O741 #13 0.000 C751 #14 0.000 C761 #15 0.000 H311 #16 0.000 H321 #17 0.000 H331 #18 0.000 H611 #19 0.000 H621 #20 0.000 H631 #21 0.000 H751 #22 0.000 H752 #23 0.000 H761 #24 0.000 H762 #25 0.000 H763 #26 0.000 +model CIPYAB10 RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty C1 #1 2 C2 #2 2 C3 #3 2 C4 #4 2 C5 #5 2 C6 #6 2 C7 #7 4 C8 #8 4 C9 #9 4 C10 #10 4 C11 #11 4 C12 #12 4 N1 #13 42 N2 #14 42 N3 #15 42 N4 #16 42 N5 #17 42 N6 #18 42 + # symb C1 #1 C=C C2 #2 C=C C3 #3 C=C C4 #4 C=C C5 #5 C=C C6 #6 C=C C7 #7 CSP C8 #8 CSP C9 #9 CSP C10 #10 CSP C11 #11 CSP C12 #12 CSP N1 #13 NSP N2 #14 NSP N3 #15 NSP N4 #16 NSP N5 #17 NSP N6 #18 NSP + # char C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.130 C5 #5 0.130 C6 #6 0.130 C7 #7 0.492 C8 #8 0.492 C9 #9 0.492 C10 #10 0.492 C11 #11 0.492 C12 #12 0.492 N1 #13 -0.557 N2 #14 -0.557 N3 #15 -0.557 N4 #16 -0.557 N5 #17 -0.557 N6 #18 -0.557 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N1 #13 0.000 N2 #14 0.000 N3 #15 0.000 N4 #16 0.000 N5 #17 0.000 N6 #18 0.000 +model CISMOG RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 2 PI electrons PI PAIR ON O OR S 13 SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC EXOCYCLIC MULT BOND 4 2 EXOCYCLIC MULT BOND 5 3 EXOCYCLIC MULT BOND 11 14 EXOCYCLIC MULT BOND 8 10 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty S1 #1 44 N1 #2 65 N2 #3 65 C1 #4 64 C2 #5 64 C3 #6 37 H1 #7 5 C1B #8 64 C3B #9 37 N1B #10 65 C2B #11 64 H1B #12 5 S1B #13 44 N2B #14 65 + # symb S1 #1 STHI N1 #2 N5A N2 #3 N5A C1 #4 C5B C2 #5 C5B C3 #6 CB H1 #7 HC C1B #8 C5B C3B #9 CB N1B #10 N5A C2B #11 C5B H1B #12 HC S1B #13 STHI N2B #14 N5A + # char S1 #1 0.441 N1 #2 -0.510 N2 #3 -0.510 C1 #4 0.289 C2 #5 0.289 C3 #6 -0.150 H1 #7 0.150 C1B #8 0.289 C3B #9 -0.150 N1B #10 -0.510 C2B #11 0.289 H1B #12 0.150 S1B #13 0.441 N2B #14 -0.510 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 H1 #7 0.000 C1B #8 0.000 C3B #9 0.000 N1B #10 0.000 C2B #11 0.000 H1B #12 0.000 S1B #13 0.000 N2B #14 0.000 +model CISPOJ RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 13 SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 2 1 EXOCYCLIC MULT BOND 3 4 SUBRING 2 ALSO RECOGNIZED AS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 12 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 63 C3 #3 64 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 64 C8 #8 63 N1 #9 66 N2 #10 66 N3 #11 65 N4 #12 39 N5 #13 39 N6 #14 65 N7 #15 45 N8 #16 45 O1 #17 32 O2 #18 32 O3 #19 32 O4 #20 32 H1 #21 5 H5 #22 5 H7 #23 5 H4 #24 23 + # symb C1 #1 CB C2 #2 C5A C3 #3 C5B C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 C5B C8 #8 C5A N1 #9 N5B N2 #10 N5B N3 #11 N5A N4 #12 NPYL N5 #13 NPYL N6 #14 N5A N7 #15 NO2 N8 #16 NO2 O1 #17 O2N O2 #18 O2N O3 #19 O2N O4 #20 O2N H1 #21 HC H5 #22 HC H7 #23 HC H4 #24 HPYL + # char C1 #1 -0.150 C2 #2 -0.152 C3 #3 0.000 C4 #4 0.133 C5 #5 -0.150 C6 #6 0.133 C7 #7 0.139 C8 #8 0.111 N1 #9 -0.338 N2 #10 0.000 N3 #11 -0.418 N4 #12 0.300 N5 #13 0.646 N6 #14 -0.707 N7 #15 0.907 N8 #16 0.907 O1 #17 -0.520 O2 #18 -0.520 O3 #19 -0.520 O4 #20 -0.520 H1 #21 0.150 H5 #22 0.150 H7 #23 0.150 H4 #24 0.270 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 N1 #9 0.000 N2 #10 0.000 N3 #11 0.000 N4 #12 0.000 N5 #13 0.000 N6 #14 0.000 N7 #15 0.000 N8 #16 0.000 O1 #17 0.000 O2 #18 0.000 O3 #19 0.000 O4 #20 0.000 H1 #21 0.000 H5 #22 0.000 H7 #23 0.000 H4 #24 0.000 +model CITDIS RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 CL2 #3 12 C3 #4 37 CL3 #5 12 C4 #6 37 H4 #7 5 C5 #8 37 H5 #9 5 C6 #10 37 CL6 #11 12 O1 #12 6 C7 #13 3 O7 #14 7 C8 #15 1 H81 #16 5 H82 #17 5 H83 #18 5 + # symb C1 #1 CB C2 #2 CB CL2 #3 CL C3 #4 CB CL3 #5 CL C4 #6 CB H4 #7 HC C5 #8 CB H5 #9 HC C6 #10 CB CL6 #11 CL O1 #12 OC=O C7 #13 COO O7 #14 O=CO C8 #15 CR H81 #16 HC H82 #17 HC H83 #18 HC + # char C1 #1 0.083 C2 #2 0.177 CL2 #3 -0.177 C3 #4 0.177 CL3 #5 -0.177 C4 #6 -0.150 H4 #7 0.150 C5 #8 -0.150 H5 #9 0.150 C6 #10 0.177 CL6 #11 -0.177 O1 #12 -0.232 C7 #13 0.659 O7 #14 -0.570 C8 #15 0.061 H81 #16 0.000 H82 #17 0.000 H83 #18 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 CL2 #3 0.000 C3 #4 0.000 CL3 #5 0.000 C4 #6 0.000 H4 #7 0.000 C5 #8 0.000 H5 #9 0.000 C6 #10 0.000 CL6 #11 0.000 O1 #12 0.000 C7 #13 0.000 O7 #14 0.000 C8 #15 0.000 H81 #16 0.000 H82 #17 0.000 H83 #18 0.000 +model CITNOI10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 O1 #2 7 O2 #3 7 N1 #4 10 C1 #5 1 C2 #6 1 C3 #7 3 C4 #8 1 C5 #9 3 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 C11 #15 37 H1 #16 28 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 + # symb S1 #1 S O1 #2 O=C O2 #3 O=CN N1 #4 NC=O C1 #5 CR C2 #6 CR C3 #7 C=OS C4 #8 CR C5 #9 C=ON C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB C11 #15 CB H1 #16 HNCO H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC + # char S1 #1 -0.371 O1 #2 -0.570 O2 #3 -0.570 N1 #4 -0.730 C1 #5 0.000 C2 #6 0.230 C3 #7 0.650 C4 #8 0.361 C5 #9 0.544 C6 #10 0.086 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 C10 #14 -0.150 C11 #15 -0.150 H1 #16 0.370 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.150 H10 #25 0.150 H11 #26 0.150 H12 #27 0.150 H13 #28 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 +model CITPEA10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 S2 #2 16 O1 #3 7 N1 #4 10 C1 #5 1 C2 #6 1 C3 #7 3 C4 #8 1 C5 #9 1 C6 #10 3 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 C11 #15 37 C12 #16 37 H1 #17 28 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 H14 #30 5 H15 #31 5 + # symb S1 #1 S S2 #2 S=C O1 #3 O=CN N1 #4 NC=O C1 #5 CR C2 #6 CR C3 #7 CSS C4 #8 CR C5 #9 CR C6 #10 C=ON C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB C11 #15 CB C12 #16 CB H1 #17 HNCO H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC H14 #30 HC H15 #31 HC + # char S1 #1 -0.371 S2 #2 -0.380 O1 #3 -0.570 N1 #4 -0.730 C1 #5 0.000 C2 #6 0.230 C3 #7 0.460 C4 #8 0.361 C5 #9 0.000 C6 #10 0.544 C7 #11 0.086 C8 #12 -0.150 C9 #13 -0.150 C10 #14 -0.150 C11 #15 -0.150 C12 #16 -0.150 H1 #17 0.370 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.150 H12 #28 0.150 H13 #29 0.150 H14 #30 0.150 H15 #31 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 C12 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 +model CITSED10 + # ty N12 #1 55 C32 #2 57 N22 #3 55 O52 #4 6 H52 #5 21 H22 #6 36 H32 #7 5 H112 #8 36 H122 #9 36 + # symb N12 #1 NCN+ C32 #2 CNN+ N22 #3 NCN+ O52 #4 -O- H52 #5 HO H22 #6 HNN+ H32 #7 HC H112 #8 HNN+ H122 #9 HNN+ + # char N12 #1 -0.754 C32 #2 0.559 N22 #3 -0.537 O52 #4 -0.167 H52 #5 0.400 H22 #6 0.450 H32 #7 0.150 H112 #8 0.450 H122 #9 0.450 + # fchar N12 #1 0.500 C32 #2 0.000 N22 #3 0.500 O52 #4 0.000 H52 #5 0.000 H22 #6 0.000 H32 #7 0.000 H112 #8 0.000 H122 #9 0.000 +model CIVCEP02 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 13 PI PAIR ON SP2-N 18 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 3 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 4 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 7 O2 #2 6 N1 #3 10 C1 #4 3 C2 #5 1 C3 #6 22 C4 #7 22 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 5 H5 #12 5 N1A #13 10 C1B #14 3 C1A #15 3 C2A #16 1 O1B #17 7 N1B #18 10 O1A #19 7 C3A #20 22 H1A #21 5 H2A #22 5 C2B #23 1 O2A #24 6 C4A #25 22 H3A #26 5 C3B #27 22 H1B #28 5 H2B #29 5 H4A #30 5 H5A #31 5 O2B #32 6 C4B #33 22 H3B #34 5 H4B #35 5 H5B #36 5 + # symb O1 #1 O=CN O2 #2 OR N1 #3 NC=O C1 #4 CONN C2 #5 CR C3 #6 CR3R C4 #7 CR3R H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HC H5 #12 HC N1A #13 NC=O C1B #14 CONN C1A #15 CONN C2A #16 CR O1B #17 O=CN N1B #18 NC=O O1A #19 O=CN C3A #20 CR3R H1A #21 HC H2A #22 HC C2B #23 CR O2A #24 OR C4A #25 CR3R H3A #26 HC C3B #27 CR3R H1B #28 HC H2B #29 HC H4A #30 HC H5A #31 HC O2B #32 OR C4B #33 CR3R H3B #34 HC H4B #35 HC H5B #36 HC + # char O1 #1 -0.570 O2 #2 -0.296 N1 #3 -0.420 C1 #4 0.690 C2 #5 0.395 C3 #6 -0.047 C4 #7 -0.052 H1 #8 0.000 H2 #9 0.000 H3 #10 0.100 H4 #11 0.100 H5 #12 0.100 N1A #13 -0.420 C1B #14 0.690 C1A #15 0.690 C2A #16 0.395 O1B #17 -0.570 N1B #18 -0.420 O1A #19 -0.570 C3A #20 -0.047 H1A #21 0.000 H2A #22 0.000 C2B #23 0.395 O2A #24 -0.296 C4A #25 -0.052 H3A #26 0.100 C3B #27 -0.047 H1B #28 0.000 H2B #29 0.000 H4A #30 0.100 H5A #31 0.100 O2B #32 -0.296 C4B #33 -0.052 H3B #34 0.100 H4B #35 0.100 H5B #36 0.100 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 N1A #13 0.000 C1B #14 0.000 C1A #15 0.000 C2A #16 0.000 O1B #17 0.000 N1B #18 0.000 O1A #19 0.000 C3A #20 0.000 H1A #21 0.000 H2A #22 0.000 C2B #23 0.000 O2A #24 0.000 C4A #25 0.000 H3A #26 0.000 C3B #27 0.000 H1B #28 0.000 H2B #29 0.000 H4A #30 0.000 H5A #31 0.000 O2B #32 0.000 C4B #33 0.000 H3B #34 0.000 H4B #35 0.000 H5B #36 0.000 +model CIVLAU02 RING 1 HAS 3 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON O OR S 6 PI PAIR ON O OR S 9 SUBRING 3 has 4 PI electrons + # ty C1 #1 20 C2 #2 20 C3 #3 20 C4 #4 20 C5 #5 20 O1 #6 6 C6 #7 1 C7 #8 1 O2 #9 6 C8 #10 3 O3 #11 7 O4 #12 6 C9 #13 1 C10 #14 3 O5 #15 7 O6 #16 6 C11 #17 1 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 + # symb C1 #1 CR4R C2 #2 CR4R C3 #3 CR4R C4 #4 CR4R C5 #5 CR4R O1 #6 OR C6 #7 CR C7 #8 CR O2 #9 OR C8 #10 COO O3 #11 O=CO O4 #12 OC=O C9 #13 CR C10 #14 COO O5 #15 O=CO O6 #16 OC=O C11 #17 CR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC + # char C1 #1 0.000 C2 #2 0.053 C3 #3 0.000 C4 #4 0.053 C5 #5 0.516 O1 #6 -0.538 C6 #7 0.280 C7 #8 0.280 O2 #9 -0.538 C8 #10 0.667 O3 #11 -0.570 O4 #12 -0.430 C9 #13 0.280 C10 #14 0.667 O5 #15 -0.570 O6 #16 -0.430 C11 #17 0.280 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 O1 #6 0.000 C6 #7 0.000 C7 #8 0.000 O2 #9 0.000 C8 #10 0.000 O3 #11 0.000 O4 #12 0.000 C9 #13 0.000 C10 #14 0.000 O5 #15 0.000 O6 #16 0.000 C11 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 +model CIXWAH RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON O OR S 4 SUBRING 1 has 4 PI electrons SUBRING 2 has 0 PI electrons + # ty O1 #1 6 O2 #2 6 O3 #3 7 O4 #4 6 C1 #5 1 C2 #6 1 C3 #7 1 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 3 H1 #12 21 H11 #13 5 H12 #14 5 H2 #15 5 H31 #16 5 H32 #17 5 H4 #18 5 H51 #19 5 H52 #20 5 H6 #21 5 + # symb O1 #1 OR O2 #2 OC=O O3 #3 O=CO O4 #4 OC=O C1 #5 CR C2 #6 CR C3 #7 CR C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 COOO H1 #12 HOR H11 #13 HC H12 #14 HC H2 #15 HC H31 #16 HC H32 #17 HC H4 #18 HC H51 #19 HC H52 #20 HC H6 #21 HC + # char O1 #1 -0.680 O2 #2 -0.430 O3 #3 -0.570 O4 #4 -0.430 C1 #5 0.000 C2 #6 0.280 C3 #7 0.000 C4 #8 0.280 C5 #9 0.000 C6 #10 0.280 C7 #11 0.870 H1 #12 0.400 H11 #13 0.000 H12 #14 0.000 H2 #15 0.000 H31 #16 0.000 H32 #17 0.000 H4 #18 0.000 H51 #19 0.000 H52 #20 0.000 H6 #21 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 H1 #12 0.000 H11 #13 0.000 H12 #14 0.000 H2 #15 0.000 H31 #16 0.000 H32 #17 0.000 H4 #18 0.000 H51 #19 0.000 H52 #20 0.000 H6 #21 0.000 +model CIYNUT RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 0 PI electrons PI PAIR ON O OR S 14 SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty S1 #1 44 O1 #2 7 N1 #3 65 N2 #4 65 C1 #5 64 C2 #6 64 C3 #7 3 C3B #8 3 C2B #9 64 O1B #10 7 C1B #11 64 N1B #12 65 N2B #13 65 S1B #14 44 + # symb S1 #1 STHI O1 #2 O=CR N1 #3 N5A N2 #4 N5A C1 #5 C5B C2 #6 C5B C3 #7 C=OR C3B #8 C=OR C2B #9 C5B O1B #10 O=CR C1B #11 C5B N1B #12 N5A N2B #13 N5A S1B #14 STHI + # char S1 #1 0.441 O1 #2 -0.570 N1 #3 -0.510 N2 #4 -0.510 C1 #5 0.203 C2 #6 0.203 C3 #7 0.742 C3B #8 0.742 C2B #9 0.203 O1B #10 -0.570 C1B #11 0.203 N1B #12 -0.510 N2B #13 -0.510 S1B #14 0.441 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C3B #8 0.000 C2B #9 0.000 O1B #10 0.000 C1B #11 0.000 N1B #12 0.000 N2B #13 0.000 S1B #14 0.000 +model CIZFIA RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 2 PI PAIR ON SP2-N 5 SUBRING 2 has 4 PI electrons + # ty S1 #1 17 O8 #2 6 O12 #3 7 O13 #4 7 N6 #5 10 C2 #6 1 C3 #7 2 C4 #8 2 C5 #9 1 C7 #10 3 C9 #11 1 C10 #12 1 C11 #13 1 C14 #14 1 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H9 #19 5 H101 #20 5 H102 #21 5 H111 #22 5 H112 #23 5 H113 #24 5 H141 #25 5 H142 #26 5 H143 #27 5 + # symb S1 #1 S=O O8 #2 OC=O O12 #3 O=S O13 #4 O=CN N6 #5 NC=O C2 #6 CR C3 #7 C=C C4 #8 C=C C5 #9 CR C7 #10 C=ON C9 #11 CR C10 #12 CR C11 #13 CR C14 #14 CR H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H9 #19 HC H101 #20 HC H102 #21 HC H111 #22 HC H112 #23 HC H113 #24 HC H141 #25 HC H142 #26 HC H143 #27 HC + # char S1 #1 0.360 O8 #2 -0.430 O12 #3 -0.500 O13 #4 -0.570 N6 #5 -0.413 C2 #6 0.332 C3 #7 -0.288 C4 #8 -0.288 C5 #9 0.438 C7 #10 0.780 C9 #11 0.280 C10 #12 0.000 C11 #13 0.000 C14 #14 0.000 H2 #15 0.000 H3 #16 0.150 H4 #17 0.150 H5 #18 0.000 H9 #19 0.000 H101 #20 0.000 H102 #21 0.000 H111 #22 0.000 H112 #23 0.000 H113 #24 0.000 H141 #25 0.000 H142 #26 0.000 H143 #27 0.000 + # fchar S1 #1 0.000 O8 #2 0.000 O12 #3 0.000 O13 #4 0.000 N6 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C7 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C14 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H9 #19 0.000 H101 #20 0.000 H102 #21 0.000 H111 #22 0.000 H112 #23 0.000 H113 #24 0.000 H141 #25 0.000 H142 #26 0.000 H143 #27 0.000 +model CIZJAW RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty SI1 #1 19 SI3 #2 19 SI20 #3 19 SI40 #4 19 CL2 #5 12 CL4 #6 12 C2 #7 20 C4 #8 20 C11 #9 1 C12 #10 1 C21 #11 1 C22 #12 1 C23 #13 1 C31 #14 1 C32 #15 1 C41 #16 1 C42 #17 1 C43 #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 5 H13 #31 5 H14 #32 5 H15 #33 5 H16 #34 5 H17 #35 5 H18 #36 5 H19 #37 5 H20 #38 5 H21 #39 5 H22 #40 5 H23 #41 5 H24 #42 5 H25 #43 5 H26 #44 5 H27 #45 5 H28 #46 5 H29 #47 5 H30 #48 5 + # symb SI1 #1 SI SI3 #2 SI SI20 #3 SI SI40 #4 SI CL2 #5 CL CL4 #6 CL C2 #7 CR4R C4 #8 CR4R C11 #9 CR C12 #10 CR C21 #11 CR C22 #12 CR C23 #13 CR C31 #14 CR C32 #15 CR C41 #16 CR C42 #17 CR C43 #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HC H13 #31 HC H14 #32 HC H15 #33 HC H16 #34 HC H17 #35 HC H18 #36 HC H19 #37 HC H20 #38 HC H21 #39 HC H22 #40 HC H23 #41 HC H24 #42 HC H25 #43 HC H26 #44 HC H27 #45 HC H28 #46 HC H29 #47 HC H30 #48 HC + # char SI1 #1 0.387 SI3 #2 0.387 SI20 #3 0.354 SI40 #4 0.354 CL2 #5 -0.290 CL4 #6 -0.290 C2 #7 -0.049 C4 #8 -0.049 C11 #9 -0.081 C12 #10 -0.081 C21 #11 -0.081 C22 #12 -0.081 C23 #13 -0.081 C31 #14 -0.081 C32 #15 -0.081 C41 #16 -0.081 C42 #17 -0.081 C43 #18 -0.081 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 H19 #37 0.000 H20 #38 0.000 H21 #39 0.000 H22 #40 0.000 H23 #41 0.000 H24 #42 0.000 H25 #43 0.000 H26 #44 0.000 H27 #45 0.000 H28 #46 0.000 H29 #47 0.000 H30 #48 0.000 + # fchar SI1 #1 0.000 SI3 #2 0.000 SI20 #3 0.000 SI40 #4 0.000 CL2 #5 0.000 CL4 #6 0.000 C2 #7 0.000 C4 #8 0.000 C11 #9 0.000 C12 #10 0.000 C21 #11 0.000 C22 #12 0.000 C23 #13 0.000 C31 #14 0.000 C32 #15 0.000 C41 #16 0.000 C42 #17 0.000 C43 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 H19 #37 0.000 H20 #38 0.000 H21 #39 0.000 H22 #40 0.000 H23 #41 0.000 H24 #42 0.000 H25 #43 0.000 H26 #44 0.000 H27 #45 0.000 H28 #46 0.000 H29 #47 0.000 H30 #48 0.000 +model CIZWUD RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C2 #1 37 C3 #2 37 C4 #3 37 C5 #4 37 C6 #5 37 C7 #6 4 N1 #7 38 N2 #8 67 N3 #9 9 N4 #10 42 O1 #11 32 H3 #12 5 H4 #13 5 H5 #14 5 H6 #15 5 + # symb C2 #1 CB C3 #2 CB C4 #3 CB C5 #4 CB C6 #5 CB C7 #6 CSP N1 #7 NPYD N2 #8 N2OX N3 #9 N=N N4 #10 NSP O1 #11 OXN H3 #12 HC H4 #13 HC H5 #14 HC H6 #15 HC + # char C2 #1 0.282 C3 #2 -0.150 C4 #3 -0.150 C5 #4 -0.150 C6 #5 0.160 C7 #6 0.663 N1 #7 -0.620 N2 #8 0.868 N3 #9 -0.313 N4 #10 -0.557 O1 #11 -0.633 H3 #12 0.150 H4 #13 0.150 H5 #14 0.150 H6 #15 0.150 + # fchar C2 #1 0.000 C3 #2 0.000 C4 #3 0.000 C5 #4 0.000 C6 #5 0.000 C7 #6 0.000 N1 #7 0.000 N2 #8 0.000 N3 #9 0.000 N4 #10 0.000 O1 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 +model CIZYEP RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 C1 #2 4 C2 #3 2 C3 #4 2 C7 #5 37 C8 #6 37 C9 #7 37 C10 #8 37 C11 #9 37 C12 #10 37 C4 #11 1 C5 #12 1 C6 #13 1 N2 #14 40 N1 #15 42 H8 #16 5 H9 #17 5 H10 #18 5 H11 #19 5 H12 #20 5 H41 #21 5 H42 #22 5 H43 #23 5 H51 #24 5 H52 #25 5 H53 #26 5 H61 #27 5 H62 #28 5 H63 #29 5 + # symb S1 #1 S C1 #2 CSP C2 #3 C=C C3 #4 C=C C7 #5 CB C8 #6 CB C9 #7 CB C10 #8 CB C11 #9 CB C12 #10 CB C4 #11 CR C5 #12 CR C6 #13 CR N2 #14 NC=C N1 #15 NSP H8 #16 HC H9 #17 HC H10 #18 HC H11 #19 HC H12 #20 HC H41 #21 HC H42 #22 HC H43 #23 HC H51 #24 HC H52 #25 HC H53 #26 HC H61 #27 HC H62 #28 HC H63 #29 HC + # char S1 #1 -0.331 C1 #2 0.492 C2 #3 0.037 C3 #4 0.201 C7 #5 0.028 C8 #6 -0.150 C9 #7 -0.150 C10 #8 -0.150 C11 #9 -0.150 C12 #10 -0.150 C4 #11 0.230 C5 #12 0.369 C6 #13 0.369 N2 #14 -0.838 N1 #15 -0.557 H8 #16 0.150 H9 #17 0.150 H10 #18 0.150 H11 #19 0.150 H12 #20 0.150 H41 #21 0.000 H42 #22 0.000 H43 #23 0.000 H51 #24 0.000 H52 #25 0.000 H53 #26 0.000 H61 #27 0.000 H62 #28 0.000 H63 #29 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C7 #5 0.000 C8 #6 0.000 C9 #7 0.000 C10 #8 0.000 C11 #9 0.000 C12 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 N2 #14 0.000 N1 #15 0.000 H8 #16 0.000 H9 #17 0.000 H10 #18 0.000 H11 #19 0.000 H12 #20 0.000 H41 #21 0.000 H42 #22 0.000 H43 #23 0.000 H51 #24 0.000 H52 #25 0.000 H53 #26 0.000 H61 #27 0.000 H62 #28 0.000 H63 #29 0.000 +model CIZZUG RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 9 PI PAIR ON SP2-N 11 SUBRING 1 has 4 PI electrons + # ty S1 #1 44 C2 #2 63 N3 #3 66 C4 #4 64 C5 #5 63 N6 #6 45 O7 #7 32 O8 #8 32 N9 #9 10 C10 #10 3 N11 #11 10 C12 #12 1 C13 #13 1 O14 #14 7 H4 #15 5 H11 #16 28 H121 #17 5 H122 #18 5 H131 #19 5 H132 #20 5 + # symb S1 #1 STHI C2 #2 C5A N3 #3 N5B C4 #4 C5B C5 #5 C5A N6 #6 NO2 O7 #7 O2N O8 #8 O2N N9 #9 NC=O C10 #10 CONN N11 #11 NC=O C12 #12 CR C13 #13 CR O14 #14 O=CN H4 #15 HC H11 #16 HNCO H121 #17 HC H122 #18 HC H131 #19 HC H132 #20 HC + # char S1 #1 -0.080 C2 #2 0.442 N3 #3 -0.565 C4 #4 0.077 C5 #5 0.120 N6 #6 0.960 O7 #7 -0.520 O8 #8 -0.520 N9 #9 -0.424 C10 #10 0.690 N11 #11 -0.730 C12 #12 0.300 C13 #13 0.300 O14 #14 -0.570 H4 #15 0.150 H11 #16 0.370 H121 #17 0.000 H122 #18 0.000 H131 #19 0.000 H132 #20 0.000 + # fchar S1 #1 0.000 C2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C5 #5 0.000 N6 #6 0.000 O7 #7 0.000 O8 #8 0.000 N9 #9 0.000 C10 #10 0.000 N11 #11 0.000 C12 #12 0.000 C13 #13 0.000 O14 #14 0.000 H4 #15 0.000 H11 #16 0.000 H121 #17 0.000 H122 #18 0.000 H131 #19 0.000 H132 #20 0.000 +model COBKIN01 RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 6 O2 #2 7 O3 #3 6 O4 #4 7 N1 #5 8 N2 #6 10 C1 #7 22 C2 #8 22 C3 #9 3 C4 #10 3 C5 #11 1 C6 #12 1 C7 #13 1 H1 #14 28 H2 #15 28 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 + # symb O1 #1 OR O2 #2 O=CN O3 #3 OC=O O4 #4 O=CO N1 #5 NR N2 #6 NC=O C1 #7 CR3R C2 #8 CR3R C3 #9 C=ON C4 #10 COO C5 #11 CR C6 #12 CR C7 #13 CR H1 #14 HNCO H2 #15 HNCO H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC + # char O1 #1 -0.180 O2 #2 -0.570 O3 #3 -0.430 O4 #4 -0.570 N1 #5 -0.416 N2 #6 -0.800 C1 #7 0.158 C2 #8 -0.042 C3 #9 0.630 C4 #10 0.720 C5 #11 0.280 C6 #12 0.000 C7 #13 0.280 H1 #14 0.370 H2 #15 0.370 H3 #16 0.100 H4 #17 0.100 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 N1 #5 0.000 N2 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 +model COCXUN RING 1 HAS 2 SUBRINGS SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty C1 #1 3 C2 #2 2 C3 #3 2 C4 #4 3 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 4 C12 #12 4 N1 #13 42 N2 #14 9 N3 #15 42 N4 #16 9 H2 #17 5 H3 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 + # symb C1 #1 C=N C2 #2 C=C C3 #3 C=C C4 #4 C=N C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CSP C12 #12 CSP N1 #13 NSP N2 #14 N=C N3 #15 NSP N4 #16 N=C H2 #17 HC H3 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC + # char C1 #1 0.349 C2 #2 -0.136 C3 #3 -0.136 C4 #4 0.349 C5 #5 -0.150 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.150 C9 #9 0.086 C10 #10 0.086 C11 #11 0.663 C12 #12 0.663 N1 #13 -0.557 N2 #14 -0.556 N3 #15 -0.557 N4 #16 -0.556 H2 #17 0.150 H3 #18 0.150 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 H8 #22 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N1 #13 0.000 N2 #14 0.000 N3 #15 0.000 N4 #16 0.000 H2 #17 0.000 H3 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 +model COGDEH RING 1 HAS 4 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 6 PI electrons SUBRING 3 has 4 PI electrons SUBRING 4 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 4 IS AROMATIC + # ty N1 #1 66 N2 #2 66 N3 #3 65 N4 #4 39 N5 #5 9 N6 #6 9 C1 #7 63 C2 #8 3 C3 #9 3 C4 #10 2 C5 #11 2 C6 #12 37 C7 #13 37 C8 #14 37 C9 #15 37 C10 #16 37 C11 #17 37 H4 #18 5 H5 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 + # symb N1 #1 N5B N2 #2 N5B N3 #3 N5A N4 #4 NPYL N5 #5 N=C N6 #6 N=C C1 #7 C5A C2 #8 C=N C3 #9 C=N C4 #10 C=C C5 #11 C=C C6 #12 CB C7 #13 CB C8 #14 CB C9 #15 CB C10 #16 CB C11 #17 CB H4 #18 HC H5 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC + # char N1 #1 -0.338 N2 #2 0.000 N3 #3 -0.418 N4 #4 0.772 N5 #5 -0.652 N6 #6 -0.576 C1 #7 0.312 C2 #8 0.436 C3 #9 0.364 C4 #10 -0.136 C5 #11 -0.178 C6 #12 0.028 C7 #13 0.086 C8 #14 -0.150 C9 #15 -0.150 C10 #16 -0.150 C11 #17 -0.150 H4 #18 0.150 H5 #19 0.150 H8 #20 0.150 H9 #21 0.150 H10 #22 0.150 H11 #23 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 N4 #4 0.000 N5 #5 0.000 N6 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 C11 #17 0.000 H4 #18 0.000 H5 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 +model COGYAY RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 N1 #2 65 N2 #3 39 N3 #4 65 C4 #5 64 C5 #6 64 C6 #7 37 C7 #8 37 C8 #9 37 C9 #10 37 C10 #11 37 C11 #12 37 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 + # symb CL1 #1 CL N1 #2 N5A N2 #3 NPYL N3 #4 N5A C4 #5 C5B C5 #6 C5B C6 #7 CB C7 #8 CB C8 #9 CB C9 #10 CB C10 #11 CB C11 #12 CB H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC + # char CL1 #1 -0.123 N1 #2 -0.707 N2 #3 0.859 N3 #4 -0.707 C4 #5 0.412 C5 #6 0.139 C6 #7 -0.023 C7 #8 -0.150 C8 #9 -0.150 C9 #10 -0.150 C10 #11 -0.150 C11 #12 -0.150 H1 #13 0.150 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.150 + # fchar CL1 #1 0.000 N1 #2 0.000 N2 #3 0.000 N3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 C11 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 +model COHKOZ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 O9 #2 6 N2 #3 65 N4 #4 66 N7 #5 42 N11 #6 9 C3 #7 64 C5 #8 63 C6 #9 4 C8 #10 3 C10 #11 1 H11 #12 27 H101 #13 5 H102 #14 5 H103 #15 5 + # symb S1 #1 STHI O9 #2 OC=N N2 #3 N5A N4 #4 N5B N7 #5 NSP N11 #6 N=C C3 #7 C5B C5 #8 C5A C6 #9 CSP C8 #10 C=N C10 #11 CR H11 #12 HN=C H101 #13 HC H102 #14 HC H103 #15 HC + # char S1 #1 0.181 O9 #2 -0.430 N2 #3 -0.510 N4 #4 -0.565 N7 #5 -0.557 N11 #6 -0.850 C3 #7 0.535 C5 #8 0.293 C6 #9 0.538 C8 #10 0.685 C10 #11 0.280 H11 #12 0.400 H101 #13 0.000 H102 #14 0.000 H103 #15 0.000 + # fchar S1 #1 0.000 O9 #2 0.000 N2 #3 0.000 N4 #4 0.000 N7 #5 0.000 N11 #6 0.000 C3 #7 0.000 C5 #8 0.000 C6 #9 0.000 C8 #10 0.000 C10 #11 0.000 H11 #12 0.000 H101 #13 0.000 H102 #14 0.000 H103 #15 0.000 +model COJFIQ RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 10 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 10 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 58 C2 #2 37 N3 #3 38 C4 #4 78 C5 #5 78 C6 #6 37 N6 #7 40 N7 #8 81 C8 #9 80 N9 #10 81 C10 #11 1 C11 #12 1 H1 #13 36 H7 #14 36 H8 #15 5 H9 #16 36 H10 #17 5 H11 #18 5 H12 #19 5 H13 #20 5 H14 #21 5 H15 #22 5 H2 #23 5 + # symb N1 #1 NPD+ C2 #2 CB N3 #3 NPYD C4 #4 C5 C5 #5 C5 C6 #6 CB N6 #7 NC=N N7 #8 NIM+ C8 #9 CIM+ N9 #10 NIM+ C10 #11 CR C11 #12 CR H1 #13 HPD+ H7 #14 HIM+ H8 #15 HC H9 #16 HIM+ H10 #17 HC H11 #18 HC H12 #19 HC H13 #20 HC H14 #21 HC H15 #22 HC H2 #23 HC + # char N1 #1 -0.179 C2 #2 0.521 N3 #3 -0.579 C4 #4 0.619 C5 #5 0.309 C6 #6 0.502 N6 #7 -0.838 N7 #8 -0.700 C8 #9 0.650 N9 #10 -0.700 C10 #11 0.369 C11 #12 0.369 H1 #13 0.457 H7 #14 0.450 H8 #15 0.150 H9 #16 0.450 H10 #17 0.000 H11 #18 0.000 H12 #19 0.000 H13 #20 0.000 H14 #21 0.000 H15 #22 0.000 H2 #23 0.150 + # fchar N1 #1 1.000 C2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N6 #7 0.000 N7 #8 0.500 C8 #9 0.000 N9 #10 0.500 C10 #11 0.000 C11 #12 0.000 H1 #13 0.000 H7 #14 0.000 H8 #15 0.000 H9 #16 0.000 H10 #17 0.000 H11 #18 0.000 H12 #19 0.000 H13 #20 0.000 H14 #21 0.000 H15 #22 0.000 H2 #23 0.000 +model COKDEL + # ty S1 #1 17 O1 #2 7 O2 #3 6 C1 #4 1 C2 #5 1 C3 #6 4 C4 #7 4 C5 #8 1 C6 #9 1 C7 #10 1 C8 #11 1 H2 #12 5 H4 #13 5 H11 #14 5 H12 #15 5 H13 #16 5 H61 #17 5 H62 #18 5 H63 #19 5 H71 #20 5 H72 #21 5 H73 #22 5 H81 #23 5 H82 #24 5 H83 #25 5 + # symb S1 #1 S=O O1 #2 O=S O2 #3 OS=O C1 #4 CR C2 #5 CR C3 #6 CSP C4 #7 CSP C5 #8 CR C6 #9 CR C7 #10 CR C8 #11 CR H2 #12 HC H4 #13 HC H11 #14 HC H12 #15 HC H13 #16 HC H61 #17 HC H62 #18 HC H63 #19 HC H71 #20 HC H72 #21 HC H73 #22 HC H81 #23 HC H82 #24 HC H83 #25 HC + # char S1 #1 0.359 O1 #2 -0.500 O2 #3 -0.332 C1 #4 0.194 C2 #5 0.480 C3 #6 -0.200 C4 #7 -0.177 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H2 #12 0.000 H4 #13 0.177 H11 #14 0.000 H12 #15 0.000 H13 #16 0.000 H61 #17 0.000 H62 #18 0.000 H63 #19 0.000 H71 #20 0.000 H72 #21 0.000 H73 #22 0.000 H81 #23 0.000 H82 #24 0.000 H83 #25 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H2 #12 0.000 H4 #13 0.000 H11 #14 0.000 H12 #15 0.000 H13 #16 0.000 H61 #17 0.000 H62 #18 0.000 H63 #19 0.000 H71 #20 0.000 H72 #21 0.000 H73 #22 0.000 H81 #23 0.000 H82 #24 0.000 H83 #25 0.000 +model COKROJ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 11 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty H1 #1 5 H2 #2 5 H3 #3 5 H4 #4 5 H5 #5 5 H6 #6 5 H7 #7 5 H8 #8 5 H9 #9 28 H10 #10 28 O1 #11 59 N1 #12 65 C1 #13 64 C2 #14 64 C3 #15 63 C4 #16 1 N2 #17 62 C5 #18 37 C6 #19 37 C7 #20 37 C8 #21 37 C9 #22 37 C10 #23 37 N3 #24 40 O2 #25 32 O3 #26 32 S1 #27 18 + # symb H1 #1 HC H2 #2 HC H3 #3 HC H4 #4 HC H5 #5 HC H6 #6 HC H7 #7 HC H8 #8 HC H9 #9 HNCC H10 #10 HNCC O1 #11 OFUR N1 #12 N5A C1 #13 C5B C2 #14 C5B C3 #15 C5A C4 #16 CR N2 #17 NM C5 #18 CB C6 #19 CB C7 #20 CB C8 #21 CB C9 #22 CB C10 #23 CB N3 #24 NC=C O2 #25 O2S O3 #26 O2S S1 #27 SO2N + # char H1 #1 0.150 H2 #2 0.000 H3 #3 0.000 H4 #4 0.000 H5 #5 0.150 H6 #6 0.150 H7 #7 0.150 H8 #8 0.150 H9 #9 0.400 H10 #10 0.400 O1 #11 -0.019 N1 #12 -0.410 C1 #13 -0.017 C2 #14 -0.150 C3 #15 -0.040 C4 #16 0.180 N2 #17 -0.234 C5 #18 -0.009 C6 #19 -0.150 C7 #20 -0.150 C8 #21 0.100 C9 #22 -0.150 C10 #23 -0.150 N3 #24 -0.900 O2 #25 -0.650 O3 #26 -0.650 S1 #27 0.849 + # fchar H1 #1 0.000 H2 #2 0.000 H3 #3 0.000 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 H9 #9 0.000 H10 #10 0.000 O1 #11 0.000 N1 #12 0.000 C1 #13 0.000 C2 #14 0.000 C3 #15 0.000 C4 #16 0.000 N2 #17 -1.000 C5 #18 0.000 C6 #19 0.000 C7 #20 0.000 C8 #21 0.000 C9 #22 0.000 C10 #23 0.000 N3 #24 0.000 O2 #25 0.000 O3 #26 0.000 S1 #27 0.000 +model COLZUY RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 7 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 10 PI PAIR ON SP2-N 15 SUBRING 3 has 4 PI electrons + # ty P1 #1 26 C1 #2 1 C2 #3 1 N1 #4 8 C3 #5 1 C4 #6 1 N2 #7 8 C5 #8 1 C6 #9 1 N2B #10 8 C4B #11 1 P1B #12 26 C5B #13 1 C3B #14 1 N1B #15 8 C6B #16 1 C1B #17 1 C2B #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 5 H13 #31 5 H14 #32 5 H15 #33 5 H16 #34 5 H17 #35 5 H18 #36 5 H19 #37 5 H20 #38 5 H21 #39 5 H22 #40 5 H23 #41 5 H24 #42 5 H25 #43 5 H26 #44 5 + # symb P1 #1 P C1 #2 CR C2 #3 CR N1 #4 NR C3 #5 CR C4 #6 CR N2 #7 NR C5 #8 CR C6 #9 CR N2B #10 NR C4B #11 CR P1B #12 P C5B #13 CR C3B #14 CR N1B #15 NR C6B #16 CR C1B #17 CR C2B #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HC H13 #31 HC H14 #32 HC H15 #33 HC H16 #34 HC H17 #35 HC H18 #36 HC H19 #37 HC H20 #38 HC H21 #39 HC H22 #40 HC H23 #41 HC H24 #42 HC H25 #43 HC H26 #44 HC + # char P1 #1 0.055 C1 #2 0.000 C2 #3 0.270 N1 #4 -0.651 C3 #5 0.270 C4 #6 0.270 N2 #7 -0.651 C5 #8 0.270 C6 #9 0.167 N2B #10 -0.651 C4B #11 0.270 P1B #12 0.055 C5B #13 0.270 C3B #14 0.270 N1B #15 -0.651 C6B #16 0.167 C1B #17 0.000 C2B #18 0.270 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 H19 #37 0.000 H20 #38 0.000 H21 #39 0.000 H22 #40 0.000 H23 #41 0.000 H24 #42 0.000 H25 #43 0.000 H26 #44 0.000 + # fchar P1 #1 0.000 C1 #2 0.000 C2 #3 0.000 N1 #4 0.000 C3 #5 0.000 C4 #6 0.000 N2 #7 0.000 C5 #8 0.000 C6 #9 0.000 N2B #10 0.000 C4B #11 0.000 P1B #12 0.000 C5B #13 0.000 C3B #14 0.000 N1B #15 0.000 C6B #16 0.000 C1B #17 0.000 C2B #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 H19 #37 0.000 H20 #38 0.000 H21 #39 0.000 H22 #40 0.000 H23 #41 0.000 H24 #42 0.000 H25 #43 0.000 H26 #44 0.000 +model COMDIR RING 1 HAS 3 SUBRINGS SUBRING 1 has 2 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 2 PI electrons + # ty BR1 #1 13 BR2 #2 13 O1 #3 7 O2 #4 7 C1 #5 3 C2 #6 2 C3 #7 2 C4 #8 3 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 2 C9 #13 2 C10 #14 1 C11 #15 1 H2 #16 5 H7 #17 5 H10 #18 5 H5 #19 5 H8 #20 5 H9 #21 5 H11 #22 5 H11_ #23 5 + # symb BR1 #1 BR BR2 #2 BR O1 #3 O=CR O2 #4 O=CR C1 #5 C=OR C2 #6 C=C C3 #7 C=C C4 #8 C=OR C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 C=C C9 #13 C=C C10 #14 CR C11 #15 CR H2 #16 HC H7 #17 HC H10 #18 HC H5 #19 HC H8 #20 HC H9 #21 HC H11 #22 HC H11_ #23 HC + # char BR1 #1 -0.110 BR2 #2 -0.230 O1 #3 -0.570 O2 #4 -0.570 C1 #5 0.495 C2 #6 -0.136 C3 #7 0.124 C4 #8 0.495 C5 #9 0.061 C6 #10 0.291 C7 #11 0.138 C8 #12 -0.288 C9 #13 -0.288 C10 #14 0.138 C11 #15 0.000 H2 #16 0.150 H7 #17 0.000 H10 #18 0.000 H5 #19 0.000 H8 #20 0.150 H9 #21 0.150 H11 #22 0.000 H11_ #23 0.000 + # fchar BR1 #1 0.000 BR2 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 H2 #16 0.000 H7 #17 0.000 H10 #18 0.000 H5 #19 0.000 H8 #20 0.000 H9 #21 0.000 H11 #22 0.000 H11_ #23 0.000 +model COMKAQ RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON O OR S 3 SUBRING 1 has 2 PI electrons + # ty C1 #1 3 O1 #2 7 O2 #3 6 C2 #4 1 C3 #5 20 C4 #6 20 C5 #7 20 C6 #8 20 C7 #9 4 N1 #10 42 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 + # symb C1 #1 COO O1 #2 O=CO O2 #3 OC=O C2 #4 CR C3 #5 CR4R C4 #6 CR4R C5 #7 CR4R C6 #8 CR4R C7 #9 CSP N1 #10 NSP H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC + # char C1 #1 0.667 O1 #2 -0.570 O2 #3 -0.430 C2 #4 0.280 C3 #5 0.000 C4 #6 0.000 C5 #7 0.181 C6 #8 0.053 C7 #9 0.376 N1 #10 -0.557 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 + # fchar C1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 N1 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 +model COMWOQ RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 39 C2 #2 63 C3 #3 64 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 63 C9 #9 64 C10 #10 3 O11 #11 7 H12 #12 23 H13 #13 5 H14 #14 5 H15 #15 5 H16 #16 5 H17 #17 5 H18 #18 5 + # symb N1 #1 NPYL C2 #2 C5A C3 #3 C5B C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 C5A C9 #9 C5B C10 #10 C=OR O11 #11 O=CR H12 #12 HPYL H13 #13 HC H14 #14 HC H15 #15 HC H16 #16 HC H17 #17 HC H18 #18 HC + # char N1 #1 0.033 C2 #2 -0.302 C3 #3 -0.086 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.152 C9 #9 0.000 C10 #10 0.596 O11 #11 -0.570 H12 #12 0.270 H13 #13 0.150 H14 #14 0.150 H15 #15 0.150 H16 #16 0.150 H17 #17 0.150 H18 #18 0.060 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 O11 #11 0.000 H12 #12 0.000 H13 #13 0.000 H14 #14 0.000 H15 #15 0.000 H16 #16 0.000 H17 #17 0.000 H18 #18 0.000 +model COMWUW RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 39 N11 #2 8 C2 #3 63 C3 #4 64 C4 #5 37 C5 #6 37 C6 #7 37 C7 #8 37 C8 #9 63 C9 #10 64 C10 #11 1 C12 #12 1 C13 #13 1 H14 #14 23 H15 #15 5 H16 #16 5 H17 #17 5 H18 #18 5 H19 #19 5 H20 #20 5 H21 #21 5 H22 #22 5 H23 #23 5 H24 #24 5 H25 #25 5 H26 #26 5 H27 #27 5 + # symb N1 #1 NPYL N11 #2 NR C2 #3 C5A C3 #4 C5B C4 #5 CB C5 #6 CB C6 #7 CB C7 #8 CB C8 #9 C5A C9 #10 C5B C10 #11 CR C12 #12 CR C13 #13 CR H14 #14 HPYL H15 #15 HC H16 #16 HC H17 #17 HC H18 #18 HC H19 #19 HC H20 #20 HC H21 #21 HC H22 #22 HC H23 #23 HC H24 #24 HC H25 #25 HC H26 #26 HC H27 #27 HC + # char N1 #1 0.033 N11 #2 -0.810 C2 #3 -0.302 C3 #4 -0.181 C4 #5 -0.150 C5 #6 -0.150 C6 #7 -0.150 C7 #8 -0.150 C8 #9 -0.152 C9 #10 0.000 C10 #11 0.451 C12 #12 0.270 C13 #13 0.270 H14 #14 0.270 H15 #15 0.150 H16 #16 0.150 H17 #17 0.150 H18 #18 0.150 H19 #19 0.150 H20 #20 0.000 H21 #21 0.000 H22 #22 0.000 H23 #23 0.000 H24 #24 0.000 H25 #25 0.000 H26 #26 0.000 H27 #27 0.000 + # fchar N1 #1 0.000 N11 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 C12 #12 0.000 C13 #13 0.000 H14 #14 0.000 H15 #15 0.000 H16 #16 0.000 H17 #17 0.000 H18 #18 0.000 H19 #19 0.000 H20 #20 0.000 H21 #21 0.000 H22 #22 0.000 H23 #23 0.000 H24 #24 0.000 H25 #25 0.000 H26 #26 0.000 H27 #27 0.000 +model CONBAI RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 12 PI PAIR ON SP2-N 16 SUBRING 3 has 4 PI electrons + # ty N1 #1 10 C1 #2 1 C2 #3 3 O2 #4 7 N3 #5 10 C3 #6 1 C4 #7 3 O4 #8 7 C5 #9 20 F5 #10 11 C6 #11 20 N1_ #12 10 C1_ #13 1 C2_ #14 3 O2_ #15 7 N3_ #16 10 C3_ #17 1 C4_ #18 3 O4_ #19 7 C5_ #20 20 F5_ #21 11 C6_ #22 20 H11 #23 5 H12 #24 5 H13 #25 5 H31 #26 5 H32 #27 5 H33 #28 5 H6 #29 5 H14 #30 5 H15 #31 5 H16 #32 5 H34 #33 5 H35 #34 5 H36 #35 5 H6_ #36 5 + # symb N1 #1 NC=O C1 #2 CR C2 #3 CONN O2 #4 O=CN N3 #5 NC=O C3 #6 CR C4 #7 C=ON O4 #8 O=CN C5 #9 CR4R F5 #10 F C6 #11 CR4R N1_ #12 NC=O C1_ #13 CR C2_ #14 CONN O2_ #15 O=CN N3_ #16 NC=O C3_ #17 CR C4_ #18 C=ON O4_ #19 O=CN C5_ #20 CR4R F5_ #21 F C6_ #22 CR4R H11 #23 HC H12 #24 HC H13 #25 HC H31 #26 HC H32 #27 HC H33 #28 HC H6 #29 HC H14 #30 HC H15 #31 HC H16 #32 HC H34 #33 HC H35 #34 HC H36 #35 HC H6_ #36 HC + # char N1 #1 -0.585 C1 #2 0.300 C2 #3 0.690 O2 #4 -0.570 N3 #5 -0.420 C3 #6 0.300 C4 #7 0.577 O4 #8 -0.570 C5 #9 0.351 F5 #10 -0.298 C6 #11 0.225 N1_ #12 -0.585 C1_ #13 0.300 C2_ #14 0.690 O2_ #15 -0.570 N3_ #16 -0.420 C3_ #17 0.300 C4_ #18 0.577 O4_ #19 -0.570 C5_ #20 0.351 F5_ #21 -0.298 C6_ #22 0.225 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 H31 #26 0.000 H32 #27 0.000 H33 #28 0.000 H6 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H34 #33 0.000 H35 #34 0.000 H36 #35 0.000 H6_ #36 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O2 #4 0.000 N3 #5 0.000 C3 #6 0.000 C4 #7 0.000 O4 #8 0.000 C5 #9 0.000 F5 #10 0.000 C6 #11 0.000 N1_ #12 0.000 C1_ #13 0.000 C2_ #14 0.000 O2_ #15 0.000 N3_ #16 0.000 C3_ #17 0.000 C4_ #18 0.000 O4_ #19 0.000 C5_ #20 0.000 F5_ #21 0.000 C6_ #22 0.000 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 H31 #26 0.000 H32 #27 0.000 H33 #28 0.000 H6 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H34 #33 0.000 H35 #34 0.000 H36 #35 0.000 H6_ #36 0.000 +model CONFAM + # ty S1 #1 16 C1 #2 3 C2 #3 1 O1 #4 6 N1 #5 10 H1 #6 5 H2 #7 5 H3 #8 5 H4 #9 28 H5 #10 28 + # symb S1 #1 S=C C1 #2 C=SN C2 #3 CR O1 #4 OC=S N1 #5 NC=S H1 #6 HC H2 #7 HC H3 #8 HC H4 #9 HNCS H5 #10 HNCS + # char S1 #1 -0.380 C1 #2 0.590 C2 #3 0.280 O1 #4 -0.430 N1 #5 -0.800 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 H4 #9 0.370 H5 #10 0.370 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O1 #4 0.000 N1 #5 0.000 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 +model CONLIA RING 1 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons + # ty N1 #1 34 N2 #2 34 C1 #3 1 C2 #4 1 C3 #5 1 C5 #6 1 C6 #7 1 C7 #8 1 C8 #9 1 H1 #10 5 H2 #11 5 H3 #12 5 H4 #13 5 H5 #14 5 H6 #15 5 H9 #16 5 H10 #17 5 H11 #18 5 H12 #19 5 H13 #20 5 H14 #21 5 H15 #22 5 H16 #23 5 H17 #24 5 H18 #25 5 H19 #26 5 H20 #27 5 + # symb N1 #1 NR+ N2 #2 NR+ C1 #3 CR C2 #4 CR C3 #5 CR C5 #6 CR C6 #7 CR C7 #8 CR C8 #9 CR H1 #10 HC H2 #11 HC H3 #12 HC H4 #13 HC H5 #14 HC H6 #15 HC H9 #16 HC H10 #17 HC H11 #18 HC H12 #19 HC H13 #20 HC H14 #21 HC H15 #22 HC H16 #23 HC H17 #24 HC H18 #25 HC H19 #26 HC H20 #27 HC + # char N1 #1 -1.012 N2 #2 -1.012 C1 #3 0.503 C2 #4 0.503 C3 #5 1.006 C5 #6 0.503 C6 #7 0.503 C7 #8 0.503 C8 #9 0.503 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H9 #16 0.000 H10 #17 0.000 H11 #18 0.000 H12 #19 0.000 H13 #20 0.000 H14 #21 0.000 H15 #22 0.000 H16 #23 0.000 H17 #24 0.000 H18 #25 0.000 H19 #26 0.000 H20 #27 0.000 + # fchar N1 #1 1.000 N2 #2 1.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H9 #16 0.000 H10 #17 0.000 H11 #18 0.000 H12 #19 0.000 H13 #20 0.000 H14 #21 0.000 H15 #22 0.000 H16 #23 0.000 H17 #24 0.000 H18 #25 0.000 H19 #26 0.000 H20 #27 0.000 +model CORDOC RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 CL1 #2 12 C1 #3 1 C2 #4 1 C3 #5 3 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 O1 #12 32 O2 #13 32 O3 #14 7 H11 #15 5 H12 #16 5 H13 #17 5 H21 #18 5 H51 #19 5 H61 #20 5 H71 #21 5 H81 #22 5 H91 #23 5 + # symb S1 #1 SO2 CL1 #2 CL C1 #3 CR C2 #4 CR C3 #5 C=OR C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB O1 #12 O2S O2 #13 O2S O3 #14 O=CR H11 #15 HC H12 #16 HC H13 #17 HC H21 #18 HC H51 #19 HC H61 #20 HC H71 #21 HC H81 #22 HC H91 #23 HC + # char S1 #1 1.090 CL1 #2 -0.290 C1 #3 0.105 C2 #4 0.456 C3 #5 0.423 C4 #6 0.086 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.150 C9 #11 -0.150 O1 #12 -0.650 O2 #13 -0.650 O3 #14 -0.570 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H21 #18 0.000 H51 #19 0.150 H61 #20 0.150 H71 #21 0.150 H81 #22 0.150 H91 #23 0.150 + # fchar S1 #1 0.000 CL1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 O1 #12 0.000 O2 #13 0.000 O3 #14 0.000 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H21 #18 0.000 H51 #19 0.000 H61 #20 0.000 H71 #21 0.000 H81 #22 0.000 H91 #23 0.000 +model CORWUB10 + # ty S13 #1 72 S23 #2 72 C13 #3 41 N13 #4 10 C23 #5 3 O13 #6 7 H13 #7 28 H23 #8 5 + # symb S13 #1 S2CM S23 #2 S2CM C13 #3 CS2M N13 #4 NC=O C23 #5 C=ON O13 #6 O=CN H13 #7 HNCO H23 #8 HC + # char S13 #1 -0.750 S23 #2 -0.750 C13 #3 0.796 N13 #4 -0.726 C23 #5 0.570 O13 #6 -0.570 H13 #7 0.370 H23 #8 0.060 + # fchar S13 #1 -0.500 S23 #2 -0.500 C13 #3 0.000 N13 #4 0.000 C23 #5 0.000 O13 #6 0.000 H13 #7 0.000 H23 #8 0.000 +model COSFAR RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 15 O1 #2 7 N1 #3 10 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 3 C8 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H11 #16 5 H22 #17 5 H33 #18 5 + # symb S1 #1 S O1 #2 O=CN N1 #3 NC=O C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 C=ON C8 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H11 #16 HC H22 #17 HC H33 #18 HC + # char S1 #1 -0.242 O1 #2 -0.570 N1 #3 -0.477 C1 #4 -0.150 C2 #5 -0.150 C3 #6 -0.150 C4 #7 -0.150 C5 #8 0.117 C6 #9 0.102 C7 #10 0.771 C8 #11 0.300 H1 #12 0.150 H2 #13 0.150 H3 #14 0.150 H4 #15 0.150 H11 #16 0.000 H22 #17 0.000 H33 #18 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H11 #16 0.000 H22 #17 0.000 H33 #18 0.000 +model COSSEI + # ty S1 #1 72 S2 #2 72 C1 #3 41 N1 #4 10 C2 #5 1 H1 #6 28 H21 #7 5 H22 #8 5 C2A #9 1 N1A #10 10 H21A #11 5 H22A #12 5 C1A #13 41 H1A #14 28 S1A #15 72 S2A #16 72 + # symb S1 #1 S2CM S2 #2 S2CM C1 #3 CS2M N1 #4 NC=S C2 #5 CR H1 #6 HNCS H21 #7 HC H22 #8 HC C2A #9 CR N1A #10 NC=S H21A #11 HC H22A #12 HC C1A #13 CS2M H1A #14 HNCS S1A #15 S2CM S2A #16 S2CM + # char S1 #1 -0.750 S2 #2 -0.750 C1 #3 0.796 N1 #4 -0.966 C2 #5 0.300 H1 #6 0.370 H21 #7 0.000 H22 #8 0.000 C2A #9 0.300 N1A #10 -0.966 H21A #11 0.000 H22A #12 0.000 C1A #13 0.796 H1A #14 0.370 S1A #15 -0.750 S2A #16 -0.750 + # fchar S1 #1 -0.500 S2 #2 -0.500 C1 #3 0.000 N1 #4 0.000 C2 #5 0.000 H1 #6 0.000 H21 #7 0.000 H22 #8 0.000 C2A #9 0.000 N1A #10 0.000 H21A #11 0.000 H22A #12 0.000 C1A #13 0.000 H1A #14 0.000 S1A #15 -0.500 S2A #16 -0.500 +model COSWIQ RING 1 HAS 1 SUBRINGS + # ty N1 #1 9 C2 #2 3 C3 #3 2 C4 #4 2 C5 #5 2 C6 #6 2 C7 #7 2 C8 #8 2 O9 #9 6 C10 #10 1 C11 #11 4 N12 #12 42 C13 #13 2 C14 #14 2 H3 #15 5 H4 #16 5 H6 #17 5 H7 #18 5 H101 #19 5 H102 #20 5 H103 #21 5 H13 #22 5 H1 #23 5 H2 #24 5 + # symb N1 #1 N=C C2 #2 C=N C3 #3 C=C C4 #4 C=C C5 #5 C=C C6 #6 C=C C7 #7 C=C C8 #8 C=C O9 #9 OC=N C10 #10 CR C11 #11 CSP N12 #12 NSP C13 #13 C=C C14 #14 C=C H3 #15 HC H4 #16 HC H6 #17 HC H7 #18 HC H101 #19 HC H102 #20 HC H103 #21 HC H13 #22 HC H1 #23 HC H2 #24 HC + # char N1 #1 -0.621 C2 #2 0.586 C3 #3 -0.136 C4 #4 -0.150 C5 #5 0.065 C6 #6 -0.150 C7 #7 -0.150 C8 #8 0.171 O9 #9 -0.430 C10 #10 0.280 C11 #11 0.492 N12 #12 -0.557 C13 #13 -0.150 C14 #14 -0.300 H3 #15 0.150 H4 #16 0.150 H6 #17 0.150 H7 #18 0.150 H101 #19 0.000 H102 #20 0.000 H103 #21 0.000 H13 #22 0.150 H1 #23 0.150 H2 #24 0.150 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 O9 #9 0.000 C10 #10 0.000 C11 #11 0.000 N12 #12 0.000 C13 #13 0.000 C14 #14 0.000 H3 #15 0.000 H4 #16 0.000 H6 #17 0.000 H7 #18 0.000 H101 #19 0.000 H102 #20 0.000 H103 #21 0.000 H13 #22 0.000 H1 #23 0.000 H2 #24 0.000 +model COTMON RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 8 N2 #2 10 C3 #3 3 N4 #4 10 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 CL1 #11 12 S1 #12 16 H11 #13 23 H21 #14 23 H2 #15 28 H4 #16 28 H6 #17 5 H7 #18 5 H9 #19 5 H10 #20 5 + # symb N1 #1 NR N2 #2 NC=S C3 #3 C=SN N4 #4 NC=S C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB CL1 #11 CL S1 #12 S=C H11 #13 HNR H21 #14 HNR H2 #15 HNCS H4 #16 HNCS H6 #17 HC H7 #18 HC H9 #19 HC H10 #20 HC + # char N1 #1 -0.729 N2 #2 -0.421 C3 #3 0.500 N4 #4 -0.547 C5 #5 0.117 C6 #6 -0.150 C7 #7 -0.150 C8 #8 0.177 C9 #9 -0.150 C10 #10 -0.150 CL1 #11 -0.177 S1 #12 -0.380 H11 #13 0.360 H21 #14 0.360 H2 #15 0.370 H4 #16 0.370 H6 #17 0.150 H7 #18 0.150 H9 #19 0.150 H10 #20 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 C3 #3 0.000 N4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 CL1 #11 0.000 S1 #12 0.000 H11 #13 0.000 H21 #14 0.000 H2 #15 0.000 H4 #16 0.000 H6 #17 0.000 H7 #18 0.000 H9 #19 0.000 H10 #20 0.000 +model COTPEG + # ty O1 #1 32 O2 #2 32 O3 #3 7 O4 #4 7 O5 #5 6 C1 #6 41 C2 #7 3 C3 #8 1 C4 #9 1 C5 #10 3 H5 #11 24 H31 #12 5 H32 #13 5 H41 #14 5 H42 #15 5 + # symb O1 #1 O2CM O2 #2 O2CM O3 #3 O=CR O4 #4 O=CO O5 #5 OC=O C1 #6 CO2M C2 #7 C=OR C3 #8 CR C4 #9 CR C5 #10 COO H5 #11 HOCO H31 #12 HC H32 #13 HC H41 #14 HC H42 #15 HC + # char O1 #1 -0.900 O2 #2 -0.900 O3 #3 -0.570 O4 #4 -0.570 O5 #5 -0.650 C1 #6 0.947 C2 #7 0.362 C3 #8 0.061 C4 #9 0.061 C5 #10 0.659 H5 #11 0.500 H31 #12 0.000 H32 #13 0.000 H41 #14 0.000 H42 #15 0.000 + # fchar O1 #1 -0.500 O2 #2 -0.500 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 H5 #11 0.000 H31 #12 0.000 H32 #13 0.000 H41 #14 0.000 H42 #15 0.000 +model COTRIM RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O11 #1 32 O21 #2 32 N11 #3 69 N21 #4 67 N31 #5 9 C21 #6 37 C31 #7 37 C41 #8 37 C51 #9 37 C61 #10 37 C71 #11 37 C81 #12 37 C91 #13 37 C101 #14 37 C111 #15 37 C121 #16 37 H21 #17 5 H31 #18 5 H51 #19 5 H61 #20 5 H81 #21 5 H91 #22 5 H101 #23 5 H111 #24 5 H121 #25 5 + # symb O11 #1 OXN O21 #2 OXN N11 #3 NPOX N21 #4 N2OX N31 #5 N=N C21 #6 CB C31 #7 CB C41 #8 CB C51 #9 CB C61 #10 CB C71 #11 CB C81 #12 CB C91 #13 CB C101 #14 CB C111 #15 CB C121 #16 CB H21 #17 HC H31 #18 HC H51 #19 HC H61 #20 HC H81 #21 HC H91 #22 HC H101 #23 HC H111 #24 HC H121 #25 HC + # char O11 #1 -0.750 O21 #2 -0.633 N11 #3 0.571 N21 #4 0.868 N31 #5 -0.386 C21 #6 -0.060 C31 #7 -0.150 C41 #8 -0.028 C51 #9 -0.150 C61 #10 -0.060 C71 #11 0.179 C81 #12 -0.150 C91 #13 -0.150 C101 #14 -0.150 C111 #15 -0.150 C121 #16 -0.150 H21 #17 0.150 H31 #18 0.150 H51 #19 0.150 H61 #20 0.150 H81 #21 0.150 H91 #22 0.150 H101 #23 0.150 H111 #24 0.150 H121 #25 0.150 + # fchar O11 #1 0.000 O21 #2 0.000 N11 #3 0.000 N21 #4 0.000 N31 #5 0.000 C21 #6 0.000 C31 #7 0.000 C41 #8 0.000 C51 #9 0.000 C61 #10 0.000 C71 #11 0.000 C81 #12 0.000 C91 #13 0.000 C101 #14 0.000 C111 #15 0.000 C121 #16 0.000 H21 #17 0.000 H31 #18 0.000 H51 #19 0.000 H61 #20 0.000 H81 #21 0.000 H91 #22 0.000 H101 #23 0.000 H111 #24 0.000 H121 #25 0.000 +model COVHUQ + # ty C1 #1 1 C3 #2 3 O3 #3 7 S2 #4 15 S4 #5 15 S5 #6 15 H11 #7 5 H12 #8 5 H13 #9 5 S4B #10 15 C3B #11 3 O3B #12 7 S2B #13 15 C1B #14 1 H11B #15 5 H12B #16 5 H13B #17 5 + # symb C1 #1 CR C3 #2 C=OS O3 #3 O=C S2 #4 S S4 #5 S S5 #6 S H11 #7 HC H12 #8 HC H13 #9 HC S4B #10 S C3B #11 C=OS O3B #12 O=C S2B #13 S C1B #14 CR H11B #15 HC H12B #16 HC H13B #17 HC + # char C1 #1 0.230 C3 #2 0.852 O3 #3 -0.570 S2 #4 -0.371 S4 #5 -0.141 S5 #6 0.000 H11 #7 0.000 H12 #8 0.000 H13 #9 0.000 S4B #10 -0.141 C3B #11 0.852 O3B #12 -0.570 S2B #13 -0.371 C1B #14 0.230 H11B #15 0.000 H12B #16 0.000 H13B #17 0.000 + # fchar C1 #1 0.000 C3 #2 0.000 O3 #3 0.000 S2 #4 0.000 S4 #5 0.000 S5 #6 0.000 H11 #7 0.000 H12 #8 0.000 H13 #9 0.000 S4B #10 0.000 C3B #11 0.000 O3B #12 0.000 S2B #13 0.000 C1B #14 0.000 H11B #15 0.000 H12B #16 0.000 H13B #17 0.000 +model COVMAB + # ty N2 #1 9 C1 #2 3 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 1 H11 #7 5 H41 #8 5 H42 #9 5 H43 #10 5 H51 #11 5 H52 #12 5 H53 #13 5 H61 #14 5 H62 #15 5 H63 #16 5 C1B #17 3 N2B #18 9 H11B #19 5 C3B #20 1 C4B #21 1 C5B #22 1 C6B #23 1 H41B #24 5 H42B #25 5 H43B #26 5 H51B #27 5 H52B #28 5 H53B #29 5 H61B #30 5 H62B #31 5 H63B #32 5 + # symb N2 #1 N=C C1 #2 C=N C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 CR H11 #7 HC H41 #8 HC H42 #9 HC H43 #10 HC H51 #11 HC H52 #12 HC H53 #13 HC H61 #14 HC H62 #15 HC H63 #16 HC C1B #17 C=N N2B #18 N=C H11B #19 HC C3B #20 CR C4B #21 CR C5B #22 CR C6B #23 CR H41B #24 HC H42B #25 HC H43B #26 HC H51B #27 HC H52B #28 HC H53B #29 HC H61B #30 HC H62B #31 HC H63B #32 HC + # char N2 #1 -0.696 C1 #2 0.390 C3 #3 0.246 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 H11 #7 0.060 H41 #8 0.000 H42 #9 0.000 H43 #10 0.000 H51 #11 0.000 H52 #12 0.000 H53 #13 0.000 H61 #14 0.000 H62 #15 0.000 H63 #16 0.000 C1B #17 0.390 N2B #18 -0.696 H11B #19 0.060 C3B #20 0.246 C4B #21 0.000 C5B #22 0.000 C6B #23 0.000 H41B #24 0.000 H42B #25 0.000 H43B #26 0.000 H51B #27 0.000 H52B #28 0.000 H53B #29 0.000 H61B #30 0.000 H62B #31 0.000 H63B #32 0.000 + # fchar N2 #1 0.000 C1 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 H11 #7 0.000 H41 #8 0.000 H42 #9 0.000 H43 #10 0.000 H51 #11 0.000 H52 #12 0.000 H53 #13 0.000 H61 #14 0.000 H62 #15 0.000 H63 #16 0.000 C1B #17 0.000 N2B #18 0.000 H11B #19 0.000 C3B #20 0.000 C4B #21 0.000 C5B #22 0.000 C6B #23 0.000 H41B #24 0.000 H42B #25 0.000 H43B #26 0.000 H51B #27 0.000 H52B #28 0.000 H53B #29 0.000 H61B #30 0.000 H62B #31 0.000 H63B #32 0.000 +model COVXIU RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 N7 #7 40 S8 #8 18 O9 #9 32 O10 #10 32 N11 #11 43 C12 #12 37 N13 #13 38 C14 #14 37 C15 #15 37 C16 #16 37 N17 #17 38 C18 #18 1 C19 #19 1 H2 #20 5 H3 #21 5 H5 #22 5 H6 #23 5 H71 #24 28 H72 #25 28 H11 #26 28 H15 #27 5 H181 #28 5 H182 #29 5 H183 #30 5 H191 #31 5 H192 #32 5 H193 #33 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB N7 #7 NC=C S8 #8 SO2N O9 #9 O2S O10 #10 O2S N11 #11 NSO2 C12 #12 CB N13 #13 NPYD C14 #14 CB C15 #15 CB C16 #16 CB N17 #17 NPYD C18 #18 CR C19 #19 CR H2 #20 HC H3 #21 HC H5 #22 HC H6 #23 HC H71 #24 HNCC H72 #25 HNCC H11 #26 HNSO H15 #27 HC H181 #28 HC H182 #29 HC H183 #30 HC H191 #31 HC H192 #32 HC H193 #33 HC + # char C1 #1 0.100 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.009 C5 #5 -0.150 C6 #6 -0.150 N7 #7 -0.900 S8 #8 1.447 O9 #9 -0.650 O10 #10 -0.650 N11 #11 -0.757 C12 #12 0.819 N13 #13 -0.620 C14 #14 0.167 C15 #15 -0.150 C16 #16 0.167 N17 #17 -0.620 C18 #18 0.143 C19 #19 0.143 H2 #20 0.150 H3 #21 0.150 H5 #22 0.150 H6 #23 0.150 H71 #24 0.400 H72 #25 0.400 H11 #26 0.420 H15 #27 0.150 H181 #28 0.000 H182 #29 0.000 H183 #30 0.000 H191 #31 0.000 H192 #32 0.000 H193 #33 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N7 #7 0.000 S8 #8 0.000 O9 #9 0.000 O10 #10 0.000 N11 #11 0.000 C12 #12 0.000 N13 #13 0.000 C14 #14 0.000 C15 #15 0.000 C16 #16 0.000 N17 #17 0.000 C18 #18 0.000 C19 #19 0.000 H2 #20 0.000 H3 #21 0.000 H5 #22 0.000 H6 #23 0.000 H71 #24 0.000 H72 #25 0.000 H11 #26 0.000 H15 #27 0.000 H181 #28 0.000 H182 #29 0.000 H183 #30 0.000 H191 #31 0.000 H192 #32 0.000 H193 #33 0.000 +model COWTIR RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 25 O1 #2 6 O2 #3 32 O3 #4 32 O12 #5 6 N1 #6 34 C1 #7 1 C2 #8 1 C3 #9 1 C4 #10 1 C11 #11 37 C12 #12 37 C13 #13 37 C14 #14 37 C15 #15 37 C16 #16 37 H1 #17 24 H2 #18 5 H3 #19 36 H4 #20 36 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 29 H13 #29 5 H14 #30 5 H15 #31 5 H16 #32 5 + # symb P1 #1 PO3 O1 #2 OPO2 O2 #3 O2P O3 #4 O2P O12 #5 OC=C N1 #6 NR+ C1 #7 CR C2 #8 CR C3 #9 CR C4 #10 CR C11 #11 CB C12 #12 CB C13 #13 CB C14 #14 CB C15 #15 CB C16 #16 CB H1 #17 HOP H2 #18 HC H3 #19 HNR+ H4 #20 HNR+ H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HOCC H13 #29 HC H14 #30 HC H15 #31 HC H16 #32 HC + # char P1 #1 1.171 O1 #2 -0.771 O2 #3 -0.950 O3 #4 -0.950 O12 #5 -0.532 N1 #6 -0.906 C1 #7 0.646 C2 #8 0.503 C3 #9 0.000 C4 #10 0.000 C11 #11 -0.143 C12 #12 0.083 C13 #13 -0.150 C14 #14 -0.150 C15 #15 -0.150 C16 #16 -0.150 H1 #17 0.500 H2 #18 0.000 H3 #19 0.450 H4 #20 0.450 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.450 H13 #29 0.150 H14 #30 0.150 H15 #31 0.150 H16 #32 0.150 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 -0.500 O3 #4 -0.500 O12 #5 0.000 N1 #6 1.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 C15 #15 0.000 C16 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 +model COXBAS RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON O OR S 4 PI PAIR ON O OR S 3 SUBRING 1 has 6 PI electrons + # ty P1 #1 25 S1 #2 15 S2 #3 15 S3 #4 15 O1 #5 32 O2 #6 6 O3 #7 6 C1 #8 1 C2 #9 1 C3 #10 1 C4 #11 1 C5 #12 1 H1 #13 5 H21 #14 5 H22 #15 5 H32 #16 5 H41 #17 5 H42 #18 5 H43 #19 5 H51 #20 5 H52 #21 5 H53 #22 5 H2 #23 5 + # symb P1 #1 PO3 S1 #2 S S2 #3 S S3 #4 S O1 #5 OP O2 #6 OPO2 O3 #7 OPO2 C1 #8 CR C2 #9 CR C3 #10 CR C4 #11 CR C5 #12 CR H1 #13 HC H21 #14 HC H22 #15 HC H32 #16 HC H41 #17 HC H42 #18 HC H43 #19 HC H51 #20 HC H52 #21 HC H53 #22 HC H2 #23 HC + # char P1 #1 1.242 S1 #2 -0.460 S2 #3 -0.460 S3 #4 -0.460 O1 #5 -0.700 O2 #6 -0.551 O3 #7 -0.551 C1 #8 0.460 C2 #9 0.460 C3 #10 0.460 C4 #11 0.280 C5 #12 0.280 H1 #13 0.000 H21 #14 0.000 H22 #15 0.000 H32 #16 0.000 H41 #17 0.000 H42 #18 0.000 H43 #19 0.000 H51 #20 0.000 H52 #21 0.000 H53 #22 0.000 H2 #23 0.000 + # fchar P1 #1 0.000 S1 #2 0.000 S2 #3 0.000 S3 #4 0.000 O1 #5 0.000 O2 #6 0.000 O3 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 H1 #13 0.000 H21 #14 0.000 H22 #15 0.000 H32 #16 0.000 H41 #17 0.000 H42 #18 0.000 H43 #19 0.000 H51 #20 0.000 H52 #21 0.000 H53 #22 0.000 H2 #23 0.000 +model COXZEU + # ty S1 #1 15 S2 #2 16 N1 #3 9 N2 #4 40 N3 #5 40 C1 #6 3 C2 #7 3 C3 #8 1 H1 #9 5 H2 #10 5 H3 #11 5 H4 #12 28 H5 #13 28 H6 #14 28 H7 #15 28 + # symb S1 #1 S S2 #2 S=C N1 #3 N=C N2 #4 NC=N N3 #5 NC=N C1 #6 CGD C2 #7 CSS C3 #8 CR H1 #9 HC H2 #10 HC H3 #11 HC H4 #12 HNCN H5 #13 HNCN H6 #14 HNCN H7 #15 HNCN + # char S1 #1 -0.371 S2 #2 -0.380 N1 #3 -0.661 N2 #4 -0.850 N3 #5 -0.850 C1 #6 0.550 C2 #7 0.732 C3 #8 0.230 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.400 H5 #13 0.400 H6 #14 0.400 H7 #15 0.400 + # fchar S1 #1 0.000 S2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 +model COYMOS RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 7 O2 #2 7 N1 #3 10 N2 #4 10 N3 #5 40 C1 #6 3 C2 #7 3 C3 #8 22 C4 #9 22 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 37 C9 #14 37 C10 #15 37 H11 #16 28 H21 #17 28 H12 #18 28 H22 #19 28 H13 #20 5 H23 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 + # symb O1 #1 O=CN O2 #2 O=CN N1 #3 NC=O N2 #4 NC=O N3 #5 NC=C C1 #6 C=ON C2 #7 C=ON C3 #8 CR3R C4 #9 CR3R C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CB C9 #14 CB C10 #15 CB H11 #16 HNCO H21 #17 HNCO H12 #18 HNCO H22 #19 HNCO H13 #20 HC H23 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC + # char O1 #1 -0.570 O2 #2 -0.570 N1 #3 -0.800 N2 #4 -0.800 N3 #5 -0.438 C1 #6 0.630 C2 #7 0.630 C3 #8 -0.031 C4 #9 0.169 C5 #10 0.100 C6 #11 -0.150 C7 #12 -0.150 C8 #13 -0.150 C9 #14 -0.150 C10 #15 -0.150 H11 #16 0.370 H21 #17 0.370 H12 #18 0.370 H22 #19 0.370 H13 #20 0.100 H23 #21 0.100 H6 #22 0.150 H7 #23 0.150 H8 #24 0.150 H9 #25 0.150 H10 #26 0.150 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 H11 #16 0.000 H21 #17 0.000 H12 #18 0.000 H22 #19 0.000 H13 #20 0.000 H23 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model COYNAF RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 6 7 EXOCYCLIC MULT BOND 11 10 + # ty N2 #1 8 N1 #2 10 O1 #3 7 O2 #4 7 C1 #5 3 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 3 H5 #13 23 H6 #14 23 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 + # symb N2 #1 NR N1 #2 NC=O O1 #3 O=CN O2 #4 O=CN C1 #5 C=ON C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 C=ON H5 #13 HNR H6 #14 HNR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC + # char N2 #1 -0.729 N1 #2 -0.111 O1 #3 -0.570 O2 #4 -0.570 C1 #5 0.544 C2 #6 0.086 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 -0.150 C7 #11 0.086 C8 #12 0.544 H5 #13 0.360 H6 #14 0.360 H1 #15 0.150 H2 #16 0.150 H3 #17 0.150 H4 #18 0.150 + # fchar N2 #1 0.000 N1 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 H5 #13 0.000 H6 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 +model COYVIV RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S11 #1 44 C21 #2 63 N31 #3 66 N41 #4 66 C51 #5 63 C61 #6 37 C71 #7 37 C81 #8 37 C91 #9 37 C101 #10 37 C111 #11 37 N121 #12 40 S131 #13 18 O141 #14 32 O151 #15 32 N161 #16 43 C171 #17 1 H1 #18 28 H2 #19 28 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 28 H8 #25 5 H9 #26 5 H10 #27 5 + # symb S11 #1 STHI C21 #2 C5A N31 #3 N5B N41 #4 N5B C51 #5 C5A C61 #6 CB C71 #7 CB C81 #8 CB C91 #9 CB C101 #10 CB C111 #11 CB N121 #12 NC=N S131 #13 SO2N O141 #14 O2S O151 #15 O2S N161 #16 NSO2 C171 #17 CR H1 #18 HNCN H2 #19 HNCN H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HNSO H8 #25 HC H9 #26 HC H10 #27 HC + # char S11 #1 -0.080 C21 #2 0.462 N31 #3 -0.338 N41 #4 -0.338 C51 #5 0.325 C61 #6 0.053 C71 #7 -0.150 C81 #8 -0.150 C91 #9 -0.150 C101 #10 -0.150 C111 #11 -0.009 N121 #12 -0.884 S131 #13 1.447 O141 #14 -0.650 O151 #15 -0.650 N161 #16 -0.914 C171 #17 0.356 H1 #18 0.400 H2 #19 0.400 H3 #20 0.150 H4 #21 0.150 H5 #22 0.150 H6 #23 0.150 H7 #24 0.420 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 + # fchar S11 #1 0.000 C21 #2 0.000 N31 #3 0.000 N41 #4 0.000 C51 #5 0.000 C61 #6 0.000 C71 #7 0.000 C81 #8 0.000 C91 #9 0.000 C101 #10 0.000 C111 #11 0.000 N121 #12 0.000 S131 #13 0.000 O141 #14 0.000 O151 #15 0.000 N161 #16 0.000 C171 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 +model CUBTUO RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 81 N2 #2 81 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 1 C8 #10 78 C9 #11 80 C10 #12 78 C11 #13 1 C12 #14 1 H1 #15 5 H2 #16 5 H3 #17 36 H4 #18 5 H5 #19 36 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 5 H15 #29 5 + # symb N1 #1 NIM+ N2 #2 NIM+ C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CR C8 #10 C5 C9 #11 CIM+ C10 #12 C5 C11 #13 CR C12 #14 CR H1 #15 HC H2 #16 HC H3 #17 HIM+ H4 #18 HC H5 #19 HIM+ H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HC H15 #29 HC + # char N1 #1 -0.700 N2 #2 -0.700 C1 #3 -0.143 C2 #4 -0.143 C3 #5 -0.143 C4 #6 -0.150 C5 #7 -0.150 C6 #8 -0.150 C7 #9 0.311 C8 #10 0.182 C9 #11 0.650 C10 #12 0.200 C11 #13 0.143 C12 #14 0.143 H1 #15 0.150 H2 #16 0.150 H3 #17 0.450 H4 #18 0.150 H5 #19 0.450 H6 #20 0.150 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.150 + # fchar N1 #1 0.500 N2 #2 0.500 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 +model CUCDAF RING 1 HAS 3 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 2 PI electrons SUBRING 3 has 6 PI electrons SUBRING 3 IS AROMATIC + # ty O1 #1 6 O2 #2 6 O3 #3 7 C1 #4 1 C2 #5 22 C3 #6 22 C4 #7 3 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 C10 #13 37 C11 #14 1 C12 #15 1 H2 #16 5 H3 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H101 #21 21 H111 #22 5 H112 #23 5 H113 #24 5 H121 #25 5 H122 #26 5 H123 #27 5 + # symb O1 #1 OR O2 #2 OR O3 #3 O=CR C1 #4 CR C2 #5 CR3R C3 #6 CR3R C4 #7 C=OR C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB C10 #13 CB C11 #14 CR C12 #15 CR H2 #16 HC H3 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H101 #21 HOR H111 #22 HC H112 #23 HC H113 #24 HC H121 #25 HC H122 #26 HC H123 #27 HC + # char O1 #1 -0.680 O2 #2 -0.296 O3 #3 -0.570 C1 #4 0.518 C2 #5 -0.047 C3 #6 0.048 C4 #7 0.484 C5 #8 -0.150 C6 #9 -0.150 C7 #10 -0.150 C8 #11 -0.143 C9 #12 -0.143 C10 #13 0.086 C11 #14 0.000 C12 #15 0.143 H2 #16 0.100 H3 #17 0.100 H5 #18 0.150 H6 #19 0.150 H7 #20 0.150 H101 #21 0.400 H111 #22 0.000 H112 #23 0.000 H113 #24 0.000 H121 #25 0.000 H122 #26 0.000 H123 #27 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H2 #16 0.000 H3 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H101 #21 0.000 H111 #22 0.000 H112 #23 0.000 H113 #24 0.000 H121 #25 0.000 H122 #26 0.000 H123 #27 0.000 +model CUCHOX RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 0 PI electrons + # ty O2 #1 6 C10 #2 1 O3 #3 7 C2 #4 3 O4 #5 7 C1 #6 22 C3 #7 1 C7 #8 3 C4 #9 1 C5 #10 22 C9 #11 3 C6 #12 22 C11 #13 1 O1 #14 7 C8 #15 1 H2 #16 21 H61 #17 5 H62 #18 5 H31 #19 5 H32 #20 5 H111 #21 5 H112 #22 5 H113 #23 5 H101 #24 5 H102 #25 5 H103 #26 5 H81 #27 5 H82 #28 5 H83 #29 5 + # symb O2 #1 OR C10 #2 CR O3 #3 O=CR C2 #4 C=OR O4 #5 O=CR C1 #6 CR3R C3 #7 CR C7 #8 C=OR C4 #9 CR C5 #10 CR3R C9 #11 C=OR C6 #12 CR3R C11 #13 CR O1 #14 O=CR C8 #15 CR H2 #16 HOR H61 #17 HC H62 #18 HC H31 #19 HC H32 #20 HC H111 #21 HC H112 #22 HC H113 #23 HC H101 #24 HC H102 #25 HC H103 #26 HC H81 #27 HC H82 #28 HC H83 #29 HC + # char O2 #1 -0.680 C10 #2 0.061 O3 #3 -0.570 C2 #4 0.509 O4 #5 -0.570 C1 #6 0.000 C3 #7 0.061 C7 #8 0.509 C4 #9 0.375 C5 #10 -0.095 C9 #11 0.509 C6 #12 -0.200 C11 #13 0.000 O1 #14 -0.570 C8 #15 0.061 H2 #16 0.400 H61 #17 0.100 H62 #18 0.100 H31 #19 0.000 H32 #20 0.000 H111 #21 0.000 H112 #22 0.000 H113 #23 0.000 H101 #24 0.000 H102 #25 0.000 H103 #26 0.000 H81 #27 0.000 H82 #28 0.000 H83 #29 0.000 + # fchar O2 #1 0.000 C10 #2 0.000 O3 #3 0.000 C2 #4 0.000 O4 #5 0.000 C1 #6 0.000 C3 #7 0.000 C7 #8 0.000 C4 #9 0.000 C5 #10 0.000 C9 #11 0.000 C6 #12 0.000 C11 #13 0.000 O1 #14 0.000 C8 #15 0.000 H2 #16 0.000 H61 #17 0.000 H62 #18 0.000 H31 #19 0.000 H32 #20 0.000 H111 #21 0.000 H112 #22 0.000 H113 #23 0.000 H101 #24 0.000 H102 #25 0.000 H103 #26 0.000 H81 #27 0.000 H82 #28 0.000 H83 #29 0.000 +model CUCHUD RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 C2 #2 63 C3 #3 64 N4 #4 66 C5 #5 63 N6 #6 39 C7 #7 37 N8 #8 38 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 37 N13 #13 45 O14 #14 32 O15 #15 32 C16 #16 1 O17 #17 6 H5 #18 5 H9 #19 5 H10 #20 5 H11 #21 5 H161 #22 5 H162 #23 5 H163 #24 5 H17 #25 29 + # symb S1 #1 S C2 #2 C5A C3 #3 C5B N4 #4 N5B C5 #5 C5A N6 #6 NPYL C7 #7 CB N8 #8 NPYD C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 CB N13 #13 NO2 O14 #14 O2N O15 #15 O2N C16 #16 CR O17 #17 OC=C H5 #18 HC H9 #19 HC H10 #20 HC H11 #21 HC H161 #22 HC H162 #23 HC H163 #24 HC H17 #25 HOCC + # char S1 #1 -0.158 C2 #2 -0.096 C3 #3 0.306 N4 #4 -0.565 C5 #5 0.037 N6 #6 0.048 C7 #7 0.411 N8 #8 -0.620 C9 #9 0.160 C10 #10 -0.150 C11 #11 -0.150 C12 #12 0.083 N13 #13 0.961 O14 #14 -0.520 O15 #15 -0.520 C16 #16 0.256 O17 #17 -0.532 H5 #18 0.150 H9 #19 0.150 H10 #20 0.150 H11 #21 0.150 H161 #22 0.000 H162 #23 0.000 H163 #24 0.000 H17 #25 0.450 + # fchar S1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N4 #4 0.000 C5 #5 0.000 N6 #6 0.000 C7 #7 0.000 N8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N13 #13 0.000 O14 #14 0.000 O15 #15 0.000 C16 #16 0.000 O17 #17 0.000 H5 #18 0.000 H9 #19 0.000 H10 #20 0.000 H11 #21 0.000 H161 #22 0.000 H162 #23 0.000 H163 #24 0.000 H17 #25 0.000 +model CUDJAM RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 7 O2 #2 6 O3 #3 6 N1 #4 40 N2 #5 9 N3 #6 9 N4 #7 10 C1 #8 3 C2 #9 3 C3 #10 22 C4 #11 22 C5 #12 1 C6 #13 3 H2 #14 21 H3 #15 21 H14 #16 28 H24 #17 28 H13 #18 5 H23 #19 5 H4 #20 5 H15 #21 5 H25 #22 5 H35 #23 5 + # symb O1 #1 O=CN O2 #2 -O- O3 #3 -O- N1 #4 NC=N N2 #5 N=C N3 #6 N=C N4 #7 NC=O C1 #8 C=N C2 #9 C=N C3 #10 CR3R C4 #11 CR3R C5 #12 CR C6 #13 C=ON H2 #14 HO H3 #15 HO H14 #16 HNCO H24 #17 HNCO H13 #18 HC H23 #19 HC H4 #20 HC H15 #21 HC H25 #22 HC H35 #23 HC + # char O1 #1 -0.570 O2 #2 -0.337 O3 #3 -0.337 N1 #4 -0.388 N2 #5 -0.513 N3 #6 -0.513 N4 #7 -0.800 C1 #8 0.389 C2 #9 0.500 C3 #10 -0.031 C4 #11 0.069 C5 #12 0.061 C6 #13 0.630 H2 #14 0.400 H3 #15 0.400 H14 #16 0.370 H24 #17 0.370 H13 #18 0.100 H23 #19 0.100 H4 #20 0.100 H15 #21 0.000 H25 #22 0.000 H35 #23 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 H2 #14 0.000 H3 #15 0.000 H14 #16 0.000 H24 #17 0.000 H13 #18 0.000 H23 #19 0.000 H4 #20 0.000 H15 #21 0.000 H25 #22 0.000 H35 #23 0.000 +model CUDNEU RING 1 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons + # ty SI1 #1 19 O1 #2 6 O2 #3 6 C1 #4 1 C2 #5 1 C3 #6 1 C4 #7 1 C5 #8 1 C6 #9 1 C7 #10 1 C8 #11 1 C9 #12 1 C10 #13 1 H1 #14 21 H11 #15 5 H12 #16 5 H13 #17 5 H21 #18 5 H22 #19 5 H23 #20 5 H31 #21 5 H32 #22 5 H33 #23 5 H51 #24 5 H52 #25 5 H61 #26 5 H62 #27 5 H71 #28 5 H72 #29 5 H81 #30 5 H82 #31 5 H91 #32 5 H101 #33 5 H102 #34 5 H103 #35 5 + # symb SI1 #1 SI O1 #2 OR O2 #3 OR C1 #4 CR C2 #5 CR C3 #6 CR C4 #7 CR C5 #8 CR C6 #9 CR C7 #10 CR C8 #11 CR C9 #12 CR C10 #13 CR H1 #14 HOR H11 #15 HC H12 #16 HC H13 #17 HC H21 #18 HC H22 #19 HC H23 #20 HC H31 #21 HC H32 #22 HC H33 #23 HC H51 #24 HC H52 #25 HC H61 #26 HC H62 #27 HC H71 #28 HC H72 #29 HC H81 #30 HC H82 #31 HC H91 #32 HC H101 #33 HC H102 #34 HC H103 #35 HC + # char SI1 #1 0.322 O1 #2 -0.560 O2 #3 -0.680 C1 #4 -0.081 C2 #5 -0.081 C3 #6 -0.081 C4 #7 0.200 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.280 C10 #13 0.280 H1 #14 0.400 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H21 #18 0.000 H22 #19 0.000 H23 #20 0.000 H31 #21 0.000 H32 #22 0.000 H33 #23 0.000 H51 #24 0.000 H52 #25 0.000 H61 #26 0.000 H62 #27 0.000 H71 #28 0.000 H72 #29 0.000 H81 #30 0.000 H82 #31 0.000 H91 #32 0.000 H101 #33 0.000 H102 #34 0.000 H103 #35 0.000 + # fchar SI1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 H1 #14 0.000 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H21 #18 0.000 H22 #19 0.000 H23 #20 0.000 H31 #21 0.000 H32 #22 0.000 H33 #23 0.000 H51 #24 0.000 H52 #25 0.000 H61 #26 0.000 H62 #27 0.000 H71 #28 0.000 H72 #29 0.000 H81 #30 0.000 H82 #31 0.000 H91 #32 0.000 H101 #33 0.000 H102 #34 0.000 H103 #35 0.000 +model CUDPAS RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 38 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 O7 #7 6 C8 #8 3 N9 #9 9 O10 #10 35 N11 #11 45 O12 #12 32 O13 #13 32 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 29 + # symb N1 #1 NPYD C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB O7 #7 OC=C C8 #8 C=N N9 #9 N=C O10 #10 OM2 N11 #11 NO2 O12 #12 O2N O13 #13 O2N H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HOCC + # char N1 #1 -0.620 C2 #2 0.160 C3 #3 -0.150 C4 #4 0.086 C5 #5 0.083 C6 #6 0.160 O7 #7 -0.532 C8 #8 0.529 N9 #9 -0.800 O10 #10 -0.650 N11 #11 0.875 O12 #12 -0.520 O13 #13 -0.520 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.450 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 O7 #7 0.000 C8 #8 0.000 N9 #9 0.000 O10 #10 -1.000 N11 #11 0.000 O12 #12 0.000 O13 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 +model CUDPOG RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 16 N1 #2 10 N3 #3 9 N4 #4 9 C2 #5 3 C5 #6 1 C6 #7 1 C7 #8 1 C8 #9 37 C9 #10 37 C10 #11 37 C11 #12 37 C12 #13 37 C13 #14 37 H9 #15 5 H10 #16 5 H11 #17 5 H12 #18 5 H13 #19 5 H61 #20 5 H62 #21 5 H63 #22 5 H71 #23 5 H72 #24 5 H73 #25 5 + # symb S1 #1 S=C N1 #2 NC=S N3 #3 N=N N4 #4 N=N C2 #5 C=SN C5 #6 CR C6 #7 CR C7 #8 CR C8 #9 CB C9 #10 CB C10 #11 CB C11 #12 CB C12 #13 CB C13 #14 CB H9 #15 HC H10 #16 HC H11 #17 HC H12 #18 HC H13 #19 HC H61 #20 HC H62 #21 HC H63 #22 HC H71 #23 HC H72 #24 HC H73 #25 HC + # char S1 #1 -0.380 N1 #2 -0.477 N3 #3 -0.211 N4 #4 -0.246 C2 #5 0.651 C5 #6 0.546 C6 #7 0.000 C7 #8 0.000 C8 #9 0.117 C9 #10 -0.150 C10 #11 -0.150 C11 #12 -0.150 C12 #13 -0.150 C13 #14 -0.150 H9 #15 0.150 H10 #16 0.150 H11 #17 0.150 H12 #18 0.150 H13 #19 0.150 H61 #20 0.000 H62 #21 0.000 H63 #22 0.000 H71 #23 0.000 H72 #24 0.000 H73 #25 0.000 + # fchar S1 #1 0.000 N1 #2 0.000 N3 #3 0.000 N4 #4 0.000 C2 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 C11 #12 0.000 C12 #13 0.000 C13 #14 0.000 H9 #15 0.000 H10 #16 0.000 H11 #17 0.000 H12 #18 0.000 H13 #19 0.000 H61 #20 0.000 H62 #21 0.000 H63 #22 0.000 H71 #23 0.000 H72 #24 0.000 H73 #25 0.000 +model CUDREY RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 N1 #2 81 N2 #3 55 C1 #4 80 C2 #5 64 C3 #6 63 H1 #7 36 H2 #8 5 H3 #9 5 H4 #10 36 H5 #11 36 + # symb S1 #1 STHI N1 #2 NIM+ N2 #3 NCN+ C1 #4 CIM+ C2 #5 C5B C3 #6 C5A H1 #7 HIM+ H2 #8 HC H3 #9 HC H4 #10 HNN+ H5 #11 HNN+ + # char S1 #1 -0.133 N1 #2 -0.683 N2 #3 -0.732 C1 #4 0.825 C2 #5 0.183 C3 #6 -0.110 H1 #7 0.450 H2 #8 0.150 H3 #9 0.150 H4 #10 0.450 H5 #11 0.450 + # fchar S1 #1 0.000 N1 #2 0.500 N2 #3 0.500 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 +model CUFFAK RING 1 HAS 5 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 5 SUBRING 2 has 2 PI electrons PI PAIR ON O OR S 7 SUBRING 3 has 2 PI electrons SUBRING 4 has 6 PI electrons SUBRING 5 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 4 IS AROMATIC SUBRING 5 IS AROMATIC EXOCYCLIC MULT BOND 36 37 EXOCYCLIC MULT BOND 35 6 + # ty O1 #1 6 C17 #2 37 O2 #3 6 C18 #4 37 O3 #5 6 C19 #6 37 O4 #7 6 C20 #8 3 O5 #9 7 H1 #10 29 C1 #11 37 H2 #12 29 C2 #13 37 H3 #14 5 C3 #15 37 H4 #16 5 C4 #17 37 H5 #18 5 C5 #19 37 H6 #20 5 C6 #21 37 H7 #22 5 C7 #23 1 H8 #24 5 C8 #25 37 H9 #26 5 C9 #27 37 H10 #28 5 C10 #29 37 H11 #30 5 C11 #31 37 H12 #32 5 C12 #33 37 C13 #34 37 C14 #35 37 C15 #36 37 C16 #37 37 + # symb O1 #1 OC=C C17 #2 CB O2 #3 OC=C C18 #4 CB O3 #5 OC=C C19 #6 CB O4 #7 OC=O C20 #8 COO O5 #9 O=CO H1 #10 HOCC C1 #11 CB H2 #12 HOCC C2 #13 CB H3 #14 HC C3 #15 CB H4 #16 HC C4 #17 CB H5 #18 HC C5 #19 CB H6 #20 HC C6 #21 CB H7 #22 HC C7 #23 CR H8 #24 HC C8 #25 CB H9 #26 HC C9 #27 CB H10 #28 HC C10 #29 CB H11 #30 HC C11 #31 CB H12 #32 HC C12 #33 CB C13 #34 CB C14 #35 CB C15 #36 CB C16 #37 CB + # char O1 #1 -0.532 C17 #2 -0.150 O2 #3 -0.532 C18 #4 -0.150 O3 #5 -0.165 C19 #6 -0.150 O4 #7 -0.430 C20 #8 0.634 O5 #9 -0.570 H1 #10 0.450 C1 #11 0.083 H2 #12 0.450 C2 #13 -0.150 H3 #14 0.150 C3 #15 0.083 H4 #16 0.150 C4 #17 -0.150 H5 #18 0.150 C5 #19 -0.150 H6 #20 0.150 C6 #21 -0.143 H7 #22 0.150 C7 #23 0.710 H8 #24 0.150 C8 #25 -0.143 H9 #26 0.150 C9 #27 -0.150 H10 #28 0.150 C10 #29 -0.150 H11 #30 0.150 C11 #31 0.083 H12 #32 0.150 C12 #33 -0.150 C13 #34 0.083 C14 #35 -0.143 C15 #36 0.086 C16 #37 -0.150 + # fchar O1 #1 0.000 C17 #2 0.000 O2 #3 0.000 C18 #4 0.000 O3 #5 0.000 C19 #6 0.000 O4 #7 0.000 C20 #8 0.000 O5 #9 0.000 H1 #10 0.000 C1 #11 0.000 H2 #12 0.000 C2 #13 0.000 H3 #14 0.000 C3 #15 0.000 H4 #16 0.000 C4 #17 0.000 H5 #18 0.000 C5 #19 0.000 H6 #20 0.000 C6 #21 0.000 H7 #22 0.000 C7 #23 0.000 H8 #24 0.000 C8 #25 0.000 H9 #26 0.000 C9 #27 0.000 H10 #28 0.000 C10 #29 0.000 H11 #30 0.000 C11 #31 0.000 H12 #32 0.000 C12 #33 0.000 C13 #34 0.000 C14 #35 0.000 C15 #36 0.000 C16 #37 0.000 +model CUGBEL RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 10 SUBRING 1 has 6 PI electrons SUBRING 2 has 2 PI electrons + # ty C1 #1 2 C2 #2 2 C3 #3 2 C4 #4 1 C5 #5 1 C6 #6 1 C7 #7 1 C8 #8 2 C9 #9 3 N10 #10 10 O11 #11 6 C12 #12 1 C13 #13 1 C14 #14 4 N15 #15 42 O16 #16 7 H4 #17 5 H41 #18 5 H5 #19 5 H51 #20 5 H6 #21 5 H61 #22 5 H7 #23 5 H71 #24 5 H10 #25 28 H12 #26 5 H121 #27 5 H13 #28 5 H131 #29 5 H132 #30 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 C=C C4 #4 CR C5 #5 CR C6 #6 CR C7 #7 CR C8 #8 C=C C9 #9 C=ON N10 #10 NC=O O11 #11 OC=C C12 #12 CR C13 #13 CR C14 #14 CSP N15 #15 NSP O16 #16 O=CN H4 #17 HC H41 #18 HC H5 #19 HC H51 #20 HC H6 #21 HC H61 #22 HC H7 #23 HC H71 #24 HC H10 #25 HNCO H12 #26 HC H121 #27 HC H13 #28 HC H131 #29 HC H132 #30 HC + # char C1 #1 0.186 C2 #2 0.065 C3 #3 -0.138 C4 #4 0.138 C5 #5 0.000 C6 #6 0.000 C7 #7 0.138 C8 #8 -0.124 C9 #9 0.616 N10 #10 -0.539 O11 #11 -0.357 C12 #12 0.280 C13 #13 0.000 C14 #14 0.492 N15 #15 -0.557 O16 #16 -0.570 H4 #17 0.000 H41 #18 0.000 H5 #19 0.000 H51 #20 0.000 H6 #21 0.000 H61 #22 0.000 H7 #23 0.000 H71 #24 0.000 H10 #25 0.370 H12 #26 0.000 H121 #27 0.000 H13 #28 0.000 H131 #29 0.000 H132 #30 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N10 #10 0.000 O11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 N15 #15 0.000 O16 #16 0.000 H4 #17 0.000 H41 #18 0.000 H5 #19 0.000 H51 #20 0.000 H6 #21 0.000 H61 #22 0.000 H7 #23 0.000 H71 #24 0.000 H10 #25 0.000 H12 #26 0.000 H121 #27 0.000 H13 #28 0.000 H131 #29 0.000 H132 #30 0.000 +model CUGGOA + # ty CL2 #1 12 CL4 #2 12 CL5 #3 12 CL61 #4 12 CL62 #5 12 O11 #6 7 O12 #7 6 O61 #8 32 O62 #9 32 N6 #10 45 C1 #11 3 C2 #12 1 C3 #13 2 C4 #14 2 C5 #15 1 C6 #16 1 C7 #17 1 H1 #18 24 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 + # symb CL2 #1 CL CL4 #2 CL CL5 #3 CL CL61 #4 CL CL62 #5 CL O11 #6 O=CO O12 #7 OC=O O61 #8 O2N O62 #9 O2N N6 #10 NO2 C1 #11 COO C2 #12 CR C3 #13 C=C C4 #14 C=C C5 #15 CR C6 #16 CR C7 #17 CR H1 #18 HOCO H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC + # char CL2 #1 -0.290 CL4 #2 -0.140 CL5 #3 -0.290 CL61 #4 -0.290 CL62 #5 -0.290 O11 #6 -0.570 O12 #7 -0.650 O61 #8 -0.520 O62 #9 -0.520 N6 #10 0.800 C1 #11 0.659 C2 #12 0.489 C3 #13 -0.288 C4 #14 0.002 C5 #15 0.428 C6 #16 0.820 C7 #17 0.000 H1 #18 0.500 H2 #19 0.150 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 + # fchar CL2 #1 0.000 CL4 #2 0.000 CL5 #3 0.000 CL61 #4 0.000 CL62 #5 0.000 O11 #6 0.000 O12 #7 0.000 O61 #8 0.000 O62 #9 0.000 N6 #10 0.000 C1 #11 0.000 C2 #12 0.000 C3 #13 0.000 C4 #14 0.000 C5 #15 0.000 C6 #16 0.000 C7 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 +model CUGLOF RING 1 HAS 5 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 5 IS A 4-MEMBERED RING SUBRING 1 has 0 PI electrons SUBRING 3 has 0 PI electrons SUBRING 4 has 0 PI electrons + # ty C1 #1 20 C2 #2 1 C3 #3 1 C4 #4 20 C5 #5 20 C6 #6 20 C7 #7 20 C8 #8 20 C9 #9 1 C10 #10 1 N1 #11 45 N2 #12 45 N3 #13 45 O1 #14 32 O2 #15 32 O3 #16 32 O4 #17 32 O5 #18 32 O6 #19 32 H1 #20 5 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 + # symb C1 #1 CR4R C2 #2 CR C3 #3 CR C4 #4 CR4R C5 #5 CR4R C6 #6 CR4R C7 #7 CR4R C8 #8 CR4R C9 #9 CR C10 #10 CR N1 #11 NO2 N2 #12 NO2 N3 #13 NO2 O1 #14 O2N O2 #15 O2N O3 #16 O2N O4 #17 O2N O5 #18 O2N O6 #19 O2N H1 #20 HC H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC + # char C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.241 C8 #8 0.000 C9 #9 0.480 C10 #10 0.000 N1 #11 0.800 N2 #12 0.800 N3 #13 0.799 O1 #14 -0.520 O2 #15 -0.520 O3 #16 -0.520 O4 #17 -0.520 O5 #18 -0.520 O6 #19 -0.520 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 N1 #11 0.000 N2 #12 0.000 N3 #13 0.000 O1 #14 0.000 O2 #15 0.000 O3 #16 0.000 O4 #17 0.000 O5 #18 0.000 O6 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 +model CUJYUB10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 O1 #2 6 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 1 C6 #8 37 C7 #9 3 C8 #10 1 N1 #11 58 N2 #12 9 H1 #13 21 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 + # symb S1 #1 S O1 #2 -O- C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CR C6 #8 CB C7 #9 C=N C8 #10 CR N1 #11 NPD+ N2 #12 N=C H1 #13 HO H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC + # char S1 #1 -0.371 O1 #2 -0.337 C1 #3 -0.150 C2 #4 -0.150 C3 #5 -0.150 C4 #6 0.211 C5 #7 0.488 C6 #8 0.447 C7 #9 0.505 C8 #10 0.230 N1 #11 -0.210 N2 #12 -0.513 H1 #13 0.400 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 N1 #11 1.000 N2 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 +model CULGEV10 RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 N1 #2 43 O1 #3 32 O2 #4 32 O3 #5 6 C1 #6 22 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 + # symb S1 #1 SO2N N1 #2 NSO2 O1 #3 O2S O2 #4 O2S O3 #5 OR C1 #6 CR3R C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC + # char S1 #1 1.333 N1 #2 -0.452 O1 #3 -0.650 O2 #4 -0.650 O3 #5 -0.065 C1 #6 0.311 C2 #7 -0.032 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 -0.150 C7 #12 -0.150 C8 #13 0.105 H1 #14 0.100 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.150 H6 #19 0.150 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 + # fchar S1 #1 0.000 N1 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 +model CULHIA10 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 2 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 1 N1 #6 8 C6 #7 1 C7 #8 1 N2 #9 68 C8 #10 1 C9 #11 1 C10 #12 1 C11 #13 1 C12 #14 1 O1 #15 32 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 H15 #30 5 H16 #31 5 H17 #32 5 H18 #33 5 H19 #34 5 H20 #35 5 H21 #36 5 H22 #37 5 H23 #38 5 H24 #39 5 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 CR N1 #6 NR C6 #7 CR C7 #8 CR N2 #9 N3OX C8 #10 CR C9 #11 CR C10 #12 CR C11 #13 CR C12 #14 CR O1 #15 OXN H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC H15 #30 HC H16 #31 HC H17 #32 HC H18 #33 HC H19 #34 HC H20 #35 HC H21 #36 HC H22 #37 HC H23 #38 HC H24 #39 HC + # char C1 #1 0.270 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.270 N1 #6 -0.810 C6 #7 0.270 C7 #8 0.256 N2 #9 -0.018 C8 #10 0.256 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.256 O1 #15 -0.750 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H17 #32 0.000 H18 #33 0.000 H19 #34 0.000 H20 #35 0.000 H21 #36 0.000 H22 #37 0.000 H23 #38 0.000 H24 #39 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 N1 #6 0.000 C6 #7 0.000 C7 #8 0.000 N2 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 O1 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H17 #32 0.000 H18 #33 0.000 H19 #34 0.000 H20 #35 0.000 H21 #36 0.000 H22 #37 0.000 H23 #38 0.000 H24 #39 0.000 +model CULVEK RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 3 PI PAIR ON O OR S 5 SUBRING 1 has 4 PI electrons + # ty P1 #1 25 CL1 #2 12 O1 #3 6 O2 #4 32 O3 #5 6 C1 #6 1 C2 #7 1 C3 #8 1 C4 #9 1 C5 #10 1 C6 #11 1 C7 #12 1 C8 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 H13 #26 5 H14 #27 5 H15 #28 5 H16 #29 5 + # symb P1 #1 PO3 CL1 #2 CL O1 #3 OPO2 O2 #4 OP O3 #5 OPO2 C1 #6 CR C2 #7 CR C3 #8 CR C4 #9 CR C5 #10 CR C6 #11 CR C7 #12 CR C8 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC H13 #26 HC H14 #27 HC H15 #28 HC H16 #29 HC + # char P1 #1 1.558 CL1 #2 -0.316 O1 #3 -0.551 O2 #4 -0.700 O3 #5 -0.551 C1 #6 0.280 C2 #7 0.000 C3 #8 0.280 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 H15 #28 0.000 H16 #29 0.000 + # fchar P1 #1 0.000 CL1 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 H15 #28 0.000 H16 #29 0.000 +model CUNVAI RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C9 #7 3 C20 #8 3 O21 #9 7 N2 #10 45 N1 #11 45 N7 #12 40 N8 #13 9 O3 #14 32 O4 #15 32 O2 #16 32 O1 #17 32 C10 #18 1 C22 #19 1 H2 #20 5 H5 #21 5 H6 #22 5 H7 #23 28 H101 #24 5 H102 #25 5 H103 #26 5 H221 #27 5 H222 #28 5 H223 #29 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C9 #7 C=N C20 #8 C=OR O21 #9 O=CR N2 #10 NO2 N1 #11 NO2 N7 #12 NC=C N8 #13 N=C O3 #14 O2N O4 #15 O2N O2 #16 O2N O1 #17 O2N C10 #18 CR C22 #19 CR H2 #20 HC H5 #21 HC H6 #22 HC H7 #23 HNCC H101 #24 HC H102 #25 HC H103 #26 HC H221 #27 HC H222 #28 HC H223 #29 HC + # char C1 #1 0.133 C2 #2 -0.150 C3 #3 0.133 C4 #4 0.100 C5 #5 -0.150 C6 #6 -0.150 C9 #7 0.389 C20 #8 0.509 O21 #9 -0.570 N2 #10 0.907 N1 #11 0.907 N7 #12 -0.458 N8 #13 -0.492 O3 #14 -0.520 O4 #15 -0.520 O2 #16 -0.520 O1 #17 -0.520 C10 #18 0.061 C22 #19 0.061 H2 #20 0.150 H5 #21 0.150 H6 #22 0.150 H7 #23 0.400 H101 #24 0.000 H102 #25 0.000 H103 #26 0.000 H221 #27 0.000 H222 #28 0.000 H223 #29 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C9 #7 0.000 C20 #8 0.000 O21 #9 0.000 N2 #10 0.000 N1 #11 0.000 N7 #12 0.000 N8 #13 0.000 O3 #14 0.000 O4 #15 0.000 O2 #16 0.000 O1 #17 0.000 C10 #18 0.000 C22 #19 0.000 H2 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H101 #24 0.000 H102 #25 0.000 H103 #26 0.000 H221 #27 0.000 H222 #28 0.000 H223 #29 0.000 +model CUNVEM RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty CL1 #1 12 S1 #2 15 O2 #3 6 O1 #4 7 N1 #5 42 C1 #6 22 C2 #7 22 C3 #8 22 C4 #9 4 C5 #10 3 C6 #11 1 C7 #12 1 C8 #13 1 C9 #14 1 C10 #15 1 H61 #16 5 H62 #17 5 H63 #18 5 H81 #19 5 H82 #20 5 H83 #21 5 H91 #22 5 H92 #23 5 H93 #24 5 H101 #25 5 H102 #26 5 H103 #27 5 H31 #28 5 H32 #29 5 + # symb CL1 #1 CL S1 #2 S O2 #3 OC=O O1 #4 O=CO N1 #5 NSP C1 #6 CR3R C2 #7 CR3R C3 #8 CR3R C4 #9 CSP C5 #10 COO C6 #11 CR C7 #12 CR C8 #13 CR C9 #14 CR C10 #15 CR H61 #16 HC H62 #17 HC H63 #18 HC H81 #19 HC H82 #20 HC H83 #21 HC H91 #22 HC H92 #23 HC H93 #24 HC H101 #25 HC H102 #26 HC H103 #27 HC H31 #28 HC H32 #29 HC + # char CL1 #1 -0.227 S1 #2 -0.371 O2 #3 -0.430 O1 #4 -0.570 N1 #5 -0.557 C1 #6 0.227 C2 #7 0.246 C3 #8 -0.200 C4 #9 0.452 C5 #10 0.720 C6 #11 0.280 C7 #12 0.230 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 H61 #16 0.000 H62 #17 0.000 H63 #18 0.000 H81 #19 0.000 H82 #20 0.000 H83 #21 0.000 H91 #22 0.000 H92 #23 0.000 H93 #24 0.000 H101 #25 0.000 H102 #26 0.000 H103 #27 0.000 H31 #28 0.100 H32 #29 0.100 + # fchar CL1 #1 0.000 S1 #2 0.000 O2 #3 0.000 O1 #4 0.000 N1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 H61 #16 0.000 H62 #17 0.000 H63 #18 0.000 H81 #19 0.000 H82 #20 0.000 H83 #21 0.000 H91 #22 0.000 H92 #23 0.000 H93 #24 0.000 H101 #25 0.000 H102 #26 0.000 H103 #27 0.000 H31 #28 0.000 H32 #29 0.000 +model CURZIY RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 3-MEMBERED RING SUBRING 1 has 0 PI electrons SUBRING 3 has 0 PI electrons + # ty S1 #1 18 O1 #2 6 O2 #3 32 O3 #4 32 C1 #5 1 C3 #6 1 C4 #7 1 C5 #8 22 C6 #9 22 C7 #10 1 C9 #11 1 C8 #12 1 H1 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H71 #18 5 H72 #19 5 H91 #20 5 H912 #21 5 H93 #22 5 H81 #23 5 H82 #24 5 + # symb S1 #1 SO2 O1 #2 OR O2 #3 O2S O3 #4 O2S C1 #5 CR C3 #6 CR C4 #7 CR C5 #8 CR3R C6 #9 CR3R C7 #10 CR C9 #11 CR C8 #12 CR H1 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H71 #18 HC H72 #19 HC H91 #20 HC H912 #21 HC H93 #22 HC H81 #23 HC H82 #24 HC + # char S1 #1 1.090 O1 #2 -0.296 O2 #3 -0.650 O3 #4 -0.650 C1 #5 0.200 C3 #6 0.105 C4 #7 0.095 C5 #8 -0.047 C6 #9 -0.047 C7 #10 0.000 C9 #11 0.000 C8 #12 0.000 H1 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.100 H6 #17 0.100 H71 #18 0.000 H72 #19 0.000 H91 #20 0.000 H912 #21 0.000 H93 #22 0.000 H81 #23 0.000 H82 #24 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 C1 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C9 #11 0.000 C8 #12 0.000 H1 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H71 #18 0.000 H72 #19 0.000 H91 #20 0.000 H912 #21 0.000 H93 #22 0.000 H81 #23 0.000 H82 #24 0.000 +model CUVFOO + # ty O1 #1 32 O2 #2 32 C1 #3 41 C2 #4 1 N1 #5 34 C3 #6 1 S1 #7 15 S2 #8 15 C4 #9 1 C5 #10 1 C6 #11 3 O3 #12 7 O4 #13 6 H1 #14 5 H2 #15 36 H3 #16 36 H4 #17 36 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 24 + # symb O1 #1 O2CM O2 #2 O2CM C1 #3 CO2M C2 #4 CR N1 #5 NR+ C3 #6 CR S1 #7 S S2 #8 S C4 #9 CR C5 #10 CR C6 #11 COO O3 #12 O=CO O4 #13 OC=O H1 #14 HC H2 #15 HNR+ H3 #16 HNR+ H4 #17 HNR+ H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HOCO + # char O1 #1 -0.900 O2 #2 -0.900 C1 #3 0.906 C2 #4 0.397 N1 #5 -0.853 C3 #6 0.230 S1 #7 -0.230 S2 #8 -0.230 C4 #9 0.230 C5 #10 0.061 C6 #11 0.659 O3 #12 -0.570 O4 #13 -0.650 H1 #14 0.000 H2 #15 0.450 H3 #16 0.450 H4 #17 0.450 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.500 + # fchar O1 #1 -0.500 O2 #2 -0.500 C1 #3 0.000 C2 #4 0.000 N1 #5 1.000 C3 #6 0.000 S1 #7 0.000 S2 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 O3 #12 0.000 O4 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 +model CUVGAB RING 1 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons + # ty P1 #1 25 O1 #2 6 O2 #3 32 O3 #4 6 O4 #5 6 C1 #6 1 C2 #7 1 C3 #8 1 C4 #9 1 C5 #10 1 C6 #11 1 H1 #12 24 H3 #13 21 H4 #14 21 H21 #15 5 H22 #16 5 H31 #17 5 H32 #18 5 H51 #19 5 H52 #20 5 H53 #21 5 H61 #22 5 H62 #23 5 H63 #24 5 + # symb P1 #1 PO2 O1 #2 OPO O2 #3 OP O3 #4 OR O4 #5 OR C1 #6 CR C2 #7 CR C3 #8 CR C4 #9 CR C5 #10 CR C6 #11 CR H1 #12 HOP H3 #13 HOR H4 #14 HOR H21 #15 HC H22 #16 HC H31 #17 HC H32 #18 HC H51 #19 HC H52 #20 HC H53 #21 HC H61 #22 HC H62 #23 HC H63 #24 HC + # char P1 #1 0.971 O1 #2 -0.771 O2 #3 -0.700 O3 #4 -0.680 O4 #5 -0.680 C1 #6 0.280 C2 #7 0.000 C3 #8 0.000 C4 #9 0.280 C5 #10 0.000 C6 #11 0.000 H1 #12 0.500 H3 #13 0.400 H4 #14 0.400 H21 #15 0.000 H22 #16 0.000 H31 #17 0.000 H32 #18 0.000 H51 #19 0.000 H52 #20 0.000 H53 #21 0.000 H61 #22 0.000 H62 #23 0.000 H63 #24 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H3 #13 0.000 H4 #14 0.000 H21 #15 0.000 H22 #16 0.000 H31 #17 0.000 H32 #18 0.000 H51 #19 0.000 H52 #20 0.000 H53 #21 0.000 H61 #22 0.000 H62 #23 0.000 H63 #24 0.000 +model CUVJOS + # ty N1 #1 8 N2 #2 34 C3 #3 1 H11 #4 23 H21 #5 23 H12 #6 36 H22 #7 36 H13 #8 5 H23 #9 5 H33 #10 5 + # symb N1 #1 NR N2 #2 NR+ C3 #3 CR H11 #4 HNR H21 #5 HNR H12 #6 HNR+ H22 #7 HNR+ H13 #8 HC H23 #9 HC H33 #10 HC + # char N1 #1 -0.482 N2 #2 -0.641 C3 #3 0.503 H11 #4 0.360 H21 #5 0.360 H12 #6 0.450 H22 #7 0.450 H13 #8 0.000 H23 #9 0.000 H33 #10 0.000 + # fchar N1 #1 0.000 N2 #2 1.000 C3 #3 0.000 H11 #4 0.000 H21 #5 0.000 H12 #6 0.000 H22 #7 0.000 H13 #8 0.000 H23 #9 0.000 H33 #10 0.000 +model CUYRAP RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty O1 #1 59 O2 #2 7 O3 #3 6 O4 #4 6 C2 #5 63 C3 #6 64 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 63 C9 #12 64 C10 #13 3 C11 #14 1 C12 #15 1 C13 #16 1 H3 #17 5 H5 #18 5 H7 #19 5 H111 #20 5 H112 #21 5 H121 #22 5 H122 #23 5 H131 #24 5 H132 #25 5 H114 #26 5 H124 #27 5 H134 #28 5 + # symb O1 #1 OFUR O2 #2 O=CR O3 #3 OC=C O4 #4 OC=C C2 #5 C5A C3 #6 C5B C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 C5A C9 #12 C5B C10 #13 C=OR C11 #14 CR C12 #15 CR C13 #16 CR H3 #17 HC H5 #18 HC H7 #19 HC H111 #20 HC H112 #21 HC H121 #22 HC H122 #23 HC H131 #24 HC H132 #25 HC H114 #26 HC H124 #27 HC H134 #28 HC + # char O1 #1 -0.280 O2 #2 -0.570 O3 #3 -0.363 O4 #4 -0.363 C2 #5 0.055 C3 #6 -0.150 C4 #7 0.083 C5 #8 -0.150 C6 #9 0.083 C7 #10 -0.150 C8 #11 0.140 C9 #12 0.000 C10 #13 0.594 C11 #14 0.061 C12 #15 0.280 C13 #16 0.280 H3 #17 0.150 H5 #18 0.150 H7 #19 0.150 H111 #20 0.000 H112 #21 0.000 H121 #22 0.000 H122 #23 0.000 H131 #24 0.000 H132 #25 0.000 H114 #26 0.000 H124 #27 0.000 H134 #28 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 C13 #16 0.000 H3 #17 0.000 H5 #18 0.000 H7 #19 0.000 H111 #20 0.000 H112 #21 0.000 H121 #22 0.000 H122 #23 0.000 H131 #24 0.000 H132 #25 0.000 H114 #26 0.000 H124 #27 0.000 H134 #28 0.000 +model CYANAM01 + # ty N1 #1 43 N2 #2 42 C1 #3 4 H1 #4 28 H2 #5 28 + # symb N1 #1 NC%N N2 #2 NSP C1 #3 CSP H1 #4 HNC% H2 #5 HNC% + # char N1 #1 -0.966 N2 #2 -0.557 C1 #3 0.683 H1 #4 0.420 H2 #5 0.420 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 H1 #4 0.000 H2 #5 0.000 +model CYGUAN01 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons + # ty CL1 #1 12 N1 #2 55 C1 #3 1 N2 #4 40 C2 #5 3 N3 #6 9 C3 #7 57 C4 #8 1 C5 #9 1 N4 #10 40 N5 #11 55 C6 #12 37 C7 #13 37 C8 #14 37 C9 #15 37 C10 #16 37 C11 #17 37 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 28 H8 #25 28 H9 #26 28 H10 #27 36 H11 #28 36 H12 #29 5 H13 #30 5 H14 #31 5 H15 #32 5 + # symb CL1 #1 CL N1 #2 NCN+ C1 #3 CR N2 #4 NC=N C2 #5 CGD N3 #6 N=C C3 #7 CNN+ C4 #8 CR C5 #9 CR N4 #10 NC=N N5 #11 NCN+ C6 #12 CB C7 #13 CB C8 #14 CB C9 #15 CB C10 #16 CB C11 #17 CB H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HNCN H8 #25 HNCN H9 #26 HNCN H10 #27 HNN+ H11 #28 HNN+ H12 #29 HC H13 #30 HC H14 #31 HC H15 #32 HC + # char CL1 #1 -0.177 N1 #2 -0.693 C1 #3 0.859 N2 #4 -0.819 C2 #5 0.550 N3 #6 -0.651 C3 #7 0.910 C4 #8 0.000 C5 #9 0.000 N4 #10 -0.850 N5 #11 -0.754 C6 #12 0.349 C7 #13 -0.150 C8 #14 -0.150 C9 #15 0.177 C10 #16 -0.150 C11 #17 -0.150 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.400 H8 #25 0.400 H9 #26 0.400 H10 #27 0.450 H11 #28 0.450 H12 #29 0.150 H13 #30 0.150 H14 #31 0.150 H15 #32 0.150 + # fchar CL1 #1 0.000 N1 #2 0.500 C1 #3 0.000 N2 #4 0.000 C2 #5 0.000 N3 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 N4 #10 0.000 N5 #11 0.500 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 C11 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 +model DABHAP RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 17 SUBRING 1 has 6 PI electrons + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 N7 #7 40 S8 #8 18 O9 #9 32 O10 #10 32 N11 #11 9 C12 #12 3 C13 #13 2 C14 #14 2 N15 #15 9 C16 #16 3 N17 #17 40 O18 #18 6 C19 #19 1 C20 #20 1 H2 #21 5 H3 #22 5 H5 #23 5 H6 #24 5 H7 #25 28 H71 #26 28 H13 #27 5 H17 #28 28 H19 #29 5 H191 #30 5 H192 #31 5 H20 #32 5 H201 #33 5 H202 #34 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB N7 #7 NC=C S8 #8 SO2N O9 #9 O2S O10 #10 O2S N11 #11 N=C C12 #12 C=N C13 #13 C=C C14 #14 C=C N15 #15 N=C C16 #16 C=N N17 #17 NC=N O18 #18 OC=C C19 #19 CR C20 #20 CR H2 #21 HC H3 #22 HC H5 #23 HC H6 #24 HC H7 #25 HNCC H71 #26 HNCC H13 #27 HC H17 #28 HNCN H19 #29 HC H191 #30 HC H192 #31 HC H20 #32 HC H201 #33 HC H202 #34 HC + # char C1 #1 0.100 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.009 C5 #5 -0.150 C6 #6 -0.150 N7 #7 -0.900 S8 #8 1.497 O9 #9 -0.650 O10 #10 -0.650 N11 #11 -0.638 C12 #12 0.486 C13 #13 -0.136 C14 #14 0.248 N15 #15 -0.621 C16 #16 0.439 N17 #17 -0.500 O18 #18 -0.357 C19 #19 0.280 C20 #20 0.061 H2 #21 0.150 H3 #22 0.150 H5 #23 0.150 H6 #24 0.150 H7 #25 0.400 H71 #26 0.400 H13 #27 0.150 H17 #28 0.400 H19 #29 0.000 H191 #30 0.000 H192 #31 0.000 H20 #32 0.000 H201 #33 0.000 H202 #34 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N7 #7 0.000 S8 #8 0.000 O9 #9 0.000 O10 #10 0.000 N11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 N15 #15 0.000 C16 #16 0.000 N17 #17 0.000 O18 #18 0.000 C19 #19 0.000 C20 #20 0.000 H2 #21 0.000 H3 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H71 #26 0.000 H13 #27 0.000 H17 #28 0.000 H19 #29 0.000 H191 #30 0.000 H192 #31 0.000 H20 #32 0.000 H201 #33 0.000 H202 #34 0.000 +model DABLIB RING 1 HAS 3 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 3 IS A 3-MEMBERED RING SUBRING 2 has 0 PI electrons + # ty C1 #1 22 C2 #2 1 C3 #3 22 F1 #4 11 F2 #5 11 H1 #6 5 H2 #7 5 C1B #8 22 C1J #9 22 H2J #10 5 C2H #11 1 H1B #12 5 C1H #13 22 C3H #14 22 H1J #15 5 H2H #16 5 H2B #17 5 H1H #18 5 F1H #19 11 F2H #20 11 + # symb C1 #1 CR3R C2 #2 CR C3 #3 CR3R F1 #4 F F2 #5 F H1 #6 HC H2 #7 HC C1B #8 CR3R C1J #9 CR3R H2J #10 HC C2H #11 CR H1B #12 HC C1H #13 CR3R C3H #14 CR3R H1J #15 HC H2H #16 HC H2B #17 HC H1H #18 HC F1H #19 F F2H #20 F + # char C1 #1 -0.195 C2 #2 0.190 C3 #3 0.463 F1 #4 -0.232 F2 #5 -0.232 H1 #6 0.100 H2 #7 0.000 C1B #8 -0.195 C1J #9 -0.195 H2J #10 0.000 C2H #11 0.190 H1B #12 0.100 C1H #13 -0.195 C3H #14 0.463 H1J #15 0.100 H2H #16 0.000 H2B #17 0.000 H1H #18 0.100 F1H #19 -0.232 F2H #20 -0.232 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 F1 #4 0.000 F2 #5 0.000 H1 #6 0.000 H2 #7 0.000 C1B #8 0.000 C1J #9 0.000 H2J #10 0.000 C2H #11 0.000 H1B #12 0.000 C1H #13 0.000 C3H #14 0.000 H1J #15 0.000 H2H #16 0.000 H2B #17 0.000 H1H #18 0.000 F1H #19 0.000 F2H #20 0.000 +model DACSAB RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 3 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty F1 #1 11 O11 #2 32 O1 #3 6 P2 #4 25 N3 #5 8 C4 #6 1 C5 #7 1 C6 #8 1 C7 #9 1 C8 #10 1 C9 #11 37 C10 #12 37 C11 #13 37 C12 #14 37 C13 #15 37 C14 #16 37 H31 #17 5 H32 #18 5 H41 #19 5 H42 #20 5 H51 #21 5 H52 #22 5 H7 #23 5 H81 #24 5 H82 #25 5 H83 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 + # symb F1 #1 F O11 #2 OP O1 #3 OPO P2 #4 PO2 N3 #5 NR C4 #6 CR C5 #7 CR C6 #8 CR C7 #9 CR C8 #10 CR C9 #11 CB C10 #12 CB C11 #13 CB C12 #14 CB C13 #15 CB C14 #16 CB H31 #17 HC H32 #18 HC H41 #19 HC H42 #20 HC H51 #21 HC H52 #22 HC H7 #23 HC H81 #24 HC H82 #25 HC H83 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC + # char F1 #1 -0.329 O11 #2 -0.700 O1 #3 -0.551 P2 #4 1.568 N3 #5 -0.808 C4 #6 0.270 C5 #7 0.000 C6 #8 0.280 C7 #9 0.413 C8 #10 0.000 C9 #11 -0.143 C10 #12 -0.150 C11 #13 -0.150 C12 #14 -0.150 C13 #15 -0.150 C14 #16 -0.150 H31 #17 0.000 H32 #18 0.000 H41 #19 0.000 H42 #20 0.000 H51 #21 0.000 H52 #22 0.000 H7 #23 0.000 H81 #24 0.000 H82 #25 0.000 H83 #26 0.000 H10 #27 0.150 H11 #28 0.150 H12 #29 0.150 H13 #30 0.150 H14 #31 0.150 + # fchar F1 #1 0.000 O11 #2 0.000 O1 #3 0.000 P2 #4 0.000 N3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 C13 #15 0.000 C14 #16 0.000 H31 #17 0.000 H32 #18 0.000 H41 #19 0.000 H42 #20 0.000 H51 #21 0.000 H52 #22 0.000 H7 #23 0.000 H81 #24 0.000 H82 #25 0.000 H83 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 +model DACYIP RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty S9 #1 72 P1 #2 25 N7 #3 8 C2 #4 20 C3 #5 20 C4 #6 1 C5 #7 1 C6 #8 1 C8 #9 1 H31 #10 5 H41 #11 5 H42 #12 5 H43 #13 5 H51 #14 5 H52 #15 5 H53 #16 5 H61 #17 5 H62 #18 5 H81 #19 5 H82 #20 5 H83 #21 5 C2G #22 20 C8G #23 1 H62G #24 5 C4G #25 1 C5G #26 1 H81G #27 5 H82G #28 5 H83G #29 5 H41G #30 5 H42G #31 5 H43G #32 5 H51G #33 5 H52G #34 5 H53G #35 5 + # symb S9 #1 S-P P1 #2 PTET N7 #3 NR C2 #4 CR4R C3 #5 CR4R C4 #6 CR C5 #7 CR C6 #8 CR C8 #9 CR H31 #10 HC H41 #11 HC H42 #12 HC H43 #13 HC H51 #14 HC H52 #15 HC H53 #16 HC H61 #17 HC H62 #18 HC H81 #19 HC H82 #20 HC H83 #21 HC C2G #22 CR4R C8G #23 CR H62G #24 HC C4G #25 CR C5G #26 CR H81G #27 HC H82G #28 HC H83G #29 HC H41G #30 HC H42G #31 HC H43G #32 HC H51G #33 HC H52G #34 HC H53G #35 HC + # char S9 #1 -0.677 P1 #2 1.007 N7 #3 -0.808 C2 #4 -0.031 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C8 #9 0.270 H31 #10 0.000 H41 #11 0.000 H42 #12 0.000 H43 #13 0.000 H51 #14 0.000 H52 #15 0.000 H53 #16 0.000 H61 #17 0.000 H62 #18 0.000 H81 #19 0.000 H82 #20 0.000 H83 #21 0.000 C2G #22 -0.031 C8G #23 0.270 H62G #24 0.000 C4G #25 0.000 C5G #26 0.000 H81G #27 0.000 H82G #28 0.000 H83G #29 0.000 H41G #30 0.000 H42G #31 0.000 H43G #32 0.000 H51G #33 0.000 H52G #34 0.000 H53G #35 0.000 + # fchar S9 #1 0.000 P1 #2 0.000 N7 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C8 #9 0.000 H31 #10 0.000 H41 #11 0.000 H42 #12 0.000 H43 #13 0.000 H51 #14 0.000 H52 #15 0.000 H53 #16 0.000 H61 #17 0.000 H62 #18 0.000 H81 #19 0.000 H82 #20 0.000 H83 #21 0.000 C2G #22 0.000 C8G #23 0.000 H62G #24 0.000 C4G #25 0.000 C5G #26 0.000 H81G #27 0.000 H82G #28 0.000 H83G #29 0.000 H41G #30 0.000 H42G #31 0.000 H43G #32 0.000 H51G #33 0.000 H52G #34 0.000 H53G #35 0.000 +model DADDAN RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 5 SUBRING 3 has 2 PI electrons + # ty O10 #1 6 O11 #2 7 O14 #3 7 O15 #4 6 N4 #5 8 C1 #6 2 C2 #7 2 C3 #8 1 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 1 C9 #13 1 C11 #14 3 C12 #15 1 C13 #16 1 C14 #17 3 H2 #18 5 H7 #19 5 H8 #20 5 H31 #21 5 H32 #22 5 H51 #23 5 H52 #24 5 H61 #25 5 H62 #26 5 H91 #27 5 H92 #28 5 H121 #29 5 H122 #30 5 H131 #31 5 H132 #32 5 + # symb O10 #1 OC=O O11 #2 O=CO O14 #3 O=CO O15 #4 OC=O N4 #5 NR C1 #6 C=C C2 #7 C=C C3 #8 CR C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 CR C9 #13 CR C11 #14 COO C12 #15 CR C13 #16 CR C14 #17 COO H2 #18 HC H7 #19 HC H8 #20 HC H31 #21 HC H32 #22 HC H51 #23 HC H52 #24 HC H61 #25 HC H62 #26 HC H91 #27 HC H92 #28 HC H121 #29 HC H122 #30 HC H131 #31 HC H132 #32 HC + # char O10 #1 -0.430 O11 #2 -0.570 O14 #3 -0.570 O15 #4 -0.430 N4 #5 -0.810 C1 #6 -0.276 C2 #7 -0.288 C3 #8 0.408 C5 #9 0.270 C6 #10 0.000 C7 #11 0.280 C8 #12 0.408 C9 #13 0.418 C11 #14 0.659 C12 #15 0.061 C13 #16 0.061 C14 #17 0.659 H2 #18 0.150 H7 #19 0.000 H8 #20 0.000 H31 #21 0.000 H32 #22 0.000 H51 #23 0.000 H52 #24 0.000 H61 #25 0.000 H62 #26 0.000 H91 #27 0.000 H92 #28 0.000 H121 #29 0.000 H122 #30 0.000 H131 #31 0.000 H132 #32 0.000 + # fchar O10 #1 0.000 O11 #2 0.000 O14 #3 0.000 O15 #4 0.000 N4 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C11 #14 0.000 C12 #15 0.000 C13 #16 0.000 C14 #17 0.000 H2 #18 0.000 H7 #19 0.000 H8 #20 0.000 H31 #21 0.000 H32 #22 0.000 H51 #23 0.000 H52 #24 0.000 H61 #25 0.000 H62 #26 0.000 H91 #27 0.000 H92 #28 0.000 H121 #29 0.000 H122 #30 0.000 H131 #31 0.000 H132 #32 0.000 +model DADLAV RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 4 PI electrons + # ty O1 #1 7 O2 #2 7 N1 #3 10 N2 #4 40 C1 #5 3 C2 #6 2 C3 #7 2 C4 #8 2 C5 #9 3 C6 #10 1 C7 #11 2 H1 #12 28 H2 #13 28 H3 #14 28 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 + # symb O1 #1 O=CN O2 #2 O=CR N1 #3 NC=O N2 #4 NC=C C1 #5 C=ON C2 #6 C=C C3 #7 C=C C4 #8 C=C C5 #9 C=OR C6 #10 CR C7 #11 C=C H1 #12 HNCO H2 #13 HNCC H3 #14 HNCC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC + # char O1 #1 -0.570 O2 #2 -0.570 N1 #3 -0.539 N2 #4 -0.900 C1 #5 0.616 C2 #6 0.114 C3 #7 0.014 C4 #8 0.109 C5 #9 0.495 C6 #10 0.061 C7 #11 -0.300 H1 #12 0.370 H2 #13 0.400 H3 #14 0.400 H4 #15 0.150 H5 #16 0.150 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 +model DADLEZ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons + # ty O1 #1 6 C1 #2 3 C2 #3 2 C3 #4 2 C4 #5 2 N1 #6 9 N2 #7 40 C5 #8 3 O2 #9 7 C6 #10 2 C7 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 28 H5 #16 28 H6 #17 5 H7 #18 5 H8 #19 27 + # symb O1 #1 OC=C C1 #2 C=N C2 #3 C=C C3 #4 C=C C4 #5 C=C N1 #6 N=C N2 #7 NC=C C5 #8 C=OR O2 #9 O=CR C6 #10 C=C C7 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HNCC H5 #16 HNCC H6 #17 HC H7 #18 HC H8 #19 HN=C + # char O1 #1 -0.227 C1 #2 0.586 C2 #3 0.114 C3 #4 0.014 C4 #5 0.077 N1 #6 -0.850 N2 #7 -0.900 C5 #8 0.495 O2 #9 -0.570 C6 #10 -0.300 C7 #11 0.061 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.400 H5 #16 0.400 H6 #17 0.150 H7 #18 0.150 H8 #19 0.400 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 N1 #6 0.000 N2 #7 0.000 C5 #8 0.000 O2 #9 0.000 C6 #10 0.000 C7 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 +model DAFKIE RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 1 C8 #8 1 N1 #9 9 N2 #10 9 N3 #11 10 H2 #12 5 H3 #13 5 H5 #14 5 H6 #15 5 H71 #16 5 H72 #17 5 H73 #18 5 H81 #19 5 H82 #20 5 H83 #21 5 H31 #22 28 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CR C8 #8 CR N1 #9 N=N N2 #10 N=N N3 #11 NN=N H2 #12 HC H3 #13 HC H5 #14 HC H6 #15 HC H71 #16 HC H72 #17 HC H73 #18 HC H81 #19 HC H82 #20 HC H83 #21 HC H31 #22 HNNN + # char C1 #1 0.179 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.143 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.143 C8 #8 0.300 N1 #9 -0.179 N2 #10 -0.062 N3 #11 -0.608 H2 #12 0.150 H3 #13 0.150 H5 #14 0.150 H6 #15 0.150 H71 #16 0.000 H72 #17 0.000 H73 #18 0.000 H81 #19 0.000 H82 #20 0.000 H83 #21 0.000 H31 #22 0.370 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 N1 #9 0.000 N2 #10 0.000 N3 #11 0.000 H2 #12 0.000 H3 #13 0.000 H5 #14 0.000 H6 #15 0.000 H71 #16 0.000 H72 #17 0.000 H73 #18 0.000 H81 #19 0.000 H82 #20 0.000 H83 #21 0.000 H31 #22 0.000 +model DAFPUV RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 59 O2 #2 32 O3 #3 32 N1 #4 65 N2 #5 65 N3 #6 45 N4 #7 40 C1 #8 64 C2 #9 64 H1 #10 28 H2 #11 28 + # symb O1 #1 OFUR O2 #2 O2N O3 #3 O2N N1 #4 N5A N2 #5 N5A N3 #6 NO2 N4 #7 NC=N C1 #8 C5B C2 #9 C5B H1 #10 HNCN H2 #11 HNCN + # char O1 #1 0.242 O2 #2 -0.520 O3 #3 -0.520 N1 #4 -0.410 N2 #5 -0.410 N3 #6 0.961 N4 #7 -0.883 C1 #8 0.368 C2 #9 0.372 H1 #10 0.400 H2 #11 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C1 #8 0.000 C2 #9 0.000 H1 #10 0.000 H2 #11 0.000 +model DAGTUA + # ty S1 #1 18 S2 #2 18 O1 #3 6 O2 #4 32 O3 #5 6 O4 #6 32 O5 #7 32 O6 #8 32 N1 #9 43 N2 #10 43 C1 #11 1 C2 #12 1 C3 #13 1 C4 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 + # symb S1 #1 SO2N S2 #2 SO2N O1 #3 OR O2 #4 O2S O3 #5 OR O4 #6 O2S O5 #7 O2S O6 #8 O2S N1 #9 NSO2 N2 #10 NSO2 C1 #11 CR C2 #12 CR C3 #13 CR C4 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC + # char S1 #1 1.333 S2 #2 1.333 O1 #3 -0.197 O2 #4 -0.650 O3 #5 -0.197 O4 #6 -0.650 O5 #7 -0.650 O6 #8 -0.650 N1 #9 -0.221 N2 #10 -0.221 C1 #11 0.105 C2 #12 0.105 C3 #13 0.280 C4 #14 0.280 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 O4 #6 0.000 O5 #7 0.000 O6 #8 0.000 N1 #9 0.000 N2 #10 0.000 C1 #11 0.000 C2 #12 0.000 C3 #13 0.000 C4 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 +model DAHBAP RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons + # ty O1 #1 6 O2 #2 7 O3 #3 7 N1 #4 10 N2 #5 10 C6 #6 2 C5 #7 2 C4 #8 2 C3 #9 2 C2 #10 3 C7 #11 3 C8 #12 1 C9 #13 1 H3 #14 5 H4 #15 5 H5 #16 5 H1 #17 21 H81 #18 5 H82 #19 5 H83 #20 5 H91 #21 5 H92 #22 5 H93 #23 5 + # symb O1 #1 -O- O2 #2 O=CN O3 #3 O=CN N1 #4 NC=O N2 #5 NC=O C6 #6 C=C C5 #7 C=C C4 #8 C=C C3 #9 C=C C2 #10 C=ON C7 #11 C=ON C8 #12 CR C9 #13 CR H3 #14 HC H4 #15 HC H5 #16 HC H1 #17 HO H81 #18 HC H82 #19 HC H83 #20 HC H91 #21 HC H92 #22 HC H93 #23 HC + # char O1 #1 -0.435 O2 #2 -0.570 O3 #3 -0.570 N1 #4 -0.134 N2 #5 -0.660 C6 #6 0.123 C5 #7 -0.150 C4 #8 -0.150 C3 #9 -0.136 C2 #10 0.616 C7 #11 0.616 C8 #12 0.300 C9 #13 0.300 H3 #14 0.150 H4 #15 0.150 H5 #16 0.150 H1 #17 0.400 H81 #18 0.000 H82 #19 0.000 H83 #20 0.000 H91 #21 0.000 H92 #22 0.000 H93 #23 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N2 #5 0.000 C6 #6 0.000 C5 #7 0.000 C4 #8 0.000 C3 #9 0.000 C2 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H1 #17 0.000 H81 #18 0.000 H82 #19 0.000 H83 #20 0.000 H91 #21 0.000 H92 #22 0.000 H93 #23 0.000 +model DAHNAB + # ty SI1 #1 19 CL1 #2 12 C1 #3 1 C2 #4 1 C3 #5 1 H11 #6 5 H12 #7 5 H13 #8 5 H21 #9 5 H22 #10 5 H31 #11 5 H32 #12 5 H33 #13 5 C2A #14 1 SI1A #15 19 H21A #16 5 H22A #17 5 CL1A #18 12 C1A #19 1 C3A #20 1 H11A #21 5 H12A #22 5 H13A #23 5 H31A #24 5 H32A #25 5 H33A #26 5 + # symb SI1 #1 SI CL1 #2 CL C1 #3 CR C2 #4 CR C3 #5 CR H11 #6 HC H12 #7 HC H13 #8 HC H21 #9 HC H22 #10 HC H31 #11 HC H32 #12 HC H33 #13 HC C2A #14 CR SI1A #15 SI H21A #16 HC H22A #17 HC CL1A #18 CL C1A #19 CR C3A #20 CR H11A #21 HC H12A #22 HC H13A #23 HC H31A #24 HC H32A #25 HC H33A #26 HC + # char SI1 #1 0.612 CL1 #2 -0.370 C1 #3 -0.081 C2 #4 -0.081 C3 #5 -0.081 H11 #6 0.000 H12 #7 0.000 H13 #8 0.000 H21 #9 0.000 H22 #10 0.000 H31 #11 0.000 H32 #12 0.000 H33 #13 0.000 C2A #14 -0.081 SI1A #15 0.612 H21A #16 0.000 H22A #17 0.000 CL1A #18 -0.370 C1A #19 -0.081 C3A #20 -0.081 H11A #21 0.000 H12A #22 0.000 H13A #23 0.000 H31A #24 0.000 H32A #25 0.000 H33A #26 0.000 + # fchar SI1 #1 0.000 CL1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 H11 #6 0.000 H12 #7 0.000 H13 #8 0.000 H21 #9 0.000 H22 #10 0.000 H31 #11 0.000 H32 #12 0.000 H33 #13 0.000 C2A #14 0.000 SI1A #15 0.000 H21A #16 0.000 H22A #17 0.000 CL1A #18 0.000 C1A #19 0.000 C3A #20 0.000 H11A #21 0.000 H12A #22 0.000 H13A #23 0.000 H31A #24 0.000 H32A #25 0.000 H33A #26 0.000 +model DAJXER RING 1 HAS 4 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 10 SUBRING 4 has 4 PI electrons + # ty N1 #1 10 C2 #2 3 O1 #3 7 N3 #4 10 C4 #5 3 O2 #6 7 C5 #7 20 C6 #8 20 C7 #9 1 N11 #10 40 C21 #11 3 N31 #12 9 C41 #13 20 C51 #14 20 C8 #15 1 C9 #16 1 C10 #17 1 H3 #18 28 H6 #19 5 H21 #20 5 H41 #21 5 H51 #22 5 H71 #23 5 H72 #24 5 H73 #25 5 H81 #26 5 H82 #27 5 H91 #28 5 H92 #29 5 H101 #30 5 H102 #31 5 + # symb N1 #1 NC=O C2 #2 CONN O1 #3 O=CN N3 #4 NC=O C4 #5 C=ON O2 #6 O=CN C5 #7 CR4R C6 #8 CR4R C7 #9 CR N11 #10 NC=N C21 #11 C=N N31 #12 N=C C41 #13 CR4R C51 #14 CR4R C8 #15 CR C9 #16 CR C10 #17 CR H3 #18 HNCO H6 #19 HC H21 #20 HC H41 #21 HC H51 #22 HC H71 #23 HC H72 #24 HC H73 #25 HC H81 #26 HC H82 #27 HC H91 #28 HC H92 #29 HC H101 #30 HC H102 #31 HC + # char N1 #1 -0.585 C2 #2 0.690 O1 #3 -0.570 N3 #4 -0.490 C4 #5 0.577 O2 #6 -0.570 C5 #7 0.053 C6 #8 0.225 C7 #9 0.000 N11 #10 -0.664 C21 #11 0.440 N31 #12 -0.737 C41 #13 0.287 C51 #14 0.245 C8 #15 0.300 C9 #16 0.000 C10 #17 0.369 H3 #18 0.370 H6 #19 0.000 H21 #20 0.060 H41 #21 0.000 H51 #22 0.000 H71 #23 0.000 H72 #24 0.000 H73 #25 0.000 H81 #26 0.000 H82 #27 0.000 H91 #28 0.000 H92 #29 0.000 H101 #30 0.000 H102 #31 0.000 + # fchar N1 #1 0.000 C2 #2 0.000 O1 #3 0.000 N3 #4 0.000 C4 #5 0.000 O2 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 N11 #10 0.000 C21 #11 0.000 N31 #12 0.000 C41 #13 0.000 C51 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 H3 #18 0.000 H6 #19 0.000 H21 #20 0.000 H41 #21 0.000 H51 #22 0.000 H71 #23 0.000 H72 #24 0.000 H73 #25 0.000 H81 #26 0.000 H82 #27 0.000 H91 #28 0.000 H92 #29 0.000 H101 #30 0.000 H102 #31 0.000 +model DAKBAS RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 72 O1 #2 7 O2 #3 32 O3 #4 32 N1 #5 40 N2 #6 42 N3 #7 45 C1 #8 2 C2 #9 2 C3 #10 2 C4 #11 1 C5 #12 2 C6 #13 4 C7 #14 1 C8 #15 37 C9 #16 37 C10 #17 37 C11 #18 37 C12 #19 37 C13 #20 37 C14 #21 3 C15 #22 1 H1 #23 28 H4 #24 5 H17 #25 5 H27 #26 5 H37 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 5 H115 #32 5 H215 #33 5 H315 #34 5 + # symb S1 #1 SM O1 #2 O=CR O2 #3 O2N O3 #4 O2N N1 #5 NC=C N2 #6 NSP N3 #7 NO2 C1 #8 C=C C2 #9 C=C C3 #10 C=C C4 #11 CR C5 #12 C=C C6 #13 CSP C7 #14 CR C8 #15 CB C9 #16 CB C10 #17 CB C11 #18 CB C12 #19 CB C13 #20 CB C14 #21 C=OR C15 #22 CR H1 #23 HNCC H4 #24 HC H17 #25 HC H27 #26 HC H37 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HC H115 #32 HC H215 #33 HC H315 #34 HC + # char S1 #1 -0.950 O1 #2 -0.570 O2 #3 -0.520 O3 #4 -0.520 N1 #5 -0.600 N2 #6 -0.557 N3 #7 0.907 C1 #8 0.050 C2 #9 -0.038 C3 #10 -0.124 C4 #11 0.420 C5 #12 -0.073 C6 #13 0.492 C7 #14 0.138 C8 #15 -0.143 C9 #16 -0.150 C10 #17 -0.150 C11 #18 -0.150 C12 #19 -0.150 C13 #20 0.133 C14 #21 0.495 C15 #22 0.061 H1 #23 0.400 H4 #24 0.000 H17 #25 0.000 H27 #26 0.000 H37 #27 0.000 H9 #28 0.150 H10 #29 0.150 H11 #30 0.150 H12 #31 0.150 H115 #32 0.000 H215 #33 0.000 H315 #34 0.000 + # fchar S1 #1 -1.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 C12 #19 0.000 C13 #20 0.000 C14 #21 0.000 C15 #22 0.000 H1 #23 0.000 H4 #24 0.000 H17 #25 0.000 H27 #26 0.000 H37 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H115 #32 0.000 H215 #33 0.000 H315 #34 0.000 +model DAKCEX RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 4 PI electrons SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty N1 #1 66 N2 #2 66 N3 #3 65 N4 #4 39 N5 #5 9 C6 #6 3 C7 #7 37 C8 #8 37 C9 #9 63 C10 #10 37 C11 #11 37 C12 #12 37 C13 #13 37 N14 #14 9 N15 #15 53 N16 #16 47 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 + # symb N1 #1 N5B N2 #2 N5B N3 #3 N5A N4 #4 NPYL N5 #5 N=C C6 #6 C=N C7 #7 CB C8 #8 CB C9 #9 C5A C10 #10 CB C11 #11 CB C12 #12 CB C13 #13 CB N14 #14 N=N N15 #15 =N= N16 #16 NAZT H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC + # char N1 #1 -0.338 N2 #2 0.000 N3 #3 -0.418 N4 #4 0.772 N5 #5 -0.652 C6 #6 0.575 C7 #7 0.086 C8 #8 0.053 C9 #9 0.134 C10 #10 -0.150 C11 #11 -0.150 C12 #12 -0.150 C13 #13 -0.150 N14 #14 -0.529 N15 #15 0.688 N16 #16 -0.370 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 N4 #4 0.000 N5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 N14 #14 0.000 N15 #15 0.000 N16 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 +model DAKDOI RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 19 PI PAIR ON SP2-N 18 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC RING 2 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 25 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty C1 #1 3 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 1 C9 #9 1 C10 #10 3 C11 #11 37 C12 #12 37 C13 #13 37 C14 #14 63 C15 #15 64 C16 #16 37 CL1 #17 12 N1 #18 10 N2 #19 40 N3 #20 66 N4 #21 65 O1 #22 7 O2 #23 7 O3 #24 6 S1 #25 44 H3 #26 5 H4 #27 5 H6 #28 5 H8 #29 5 H91 #30 5 H92 #31 5 H12 #32 5 H13 #33 5 H16 #34 5 H10 #35 28 H30 #36 24 + # symb C1 #1 C=ON C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CR C9 #9 CR C10 #10 COO C11 #11 CB C12 #12 CB C13 #13 CB C14 #14 C5A C15 #15 C5B C16 #16 CB CL1 #17 CL N1 #18 NC=O N2 #19 NC=C N3 #20 N5B N4 #21 N5A O1 #22 O=CN O2 #23 O=CO O3 #24 OC=O S1 #25 STHI H3 #26 HC H4 #27 HC H6 #28 HC H8 #29 HC H91 #30 HC H92 #31 HC H12 #32 HC H13 #33 HC H16 #34 HC H10 #35 HNCO H30 #36 HOCO + # char C1 #1 0.544 C2 #2 0.086 C3 #3 -0.150 C4 #4 -0.150 C5 #5 0.177 C6 #6 -0.150 C7 #7 -0.143 C8 #8 0.513 C9 #9 0.061 C10 #10 0.659 C11 #11 0.100 C12 #12 -0.150 C13 #13 -0.150 C14 #14 0.040 C15 #15 0.227 C16 #16 -0.150 CL1 #17 -0.177 N1 #18 -0.410 N2 #19 -0.489 N3 #20 -0.227 N4 #21 -0.221 O1 #22 -0.570 O2 #23 -0.570 O3 #24 -0.650 S1 #25 0.181 H3 #26 0.150 H4 #27 0.150 H6 #28 0.150 H8 #29 0.000 H91 #30 0.000 H92 #31 0.000 H12 #32 0.150 H13 #33 0.150 H16 #34 0.150 H10 #35 0.370 H30 #36 0.500 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 C15 #15 0.000 C16 #16 0.000 CL1 #17 0.000 N1 #18 0.000 N2 #19 0.000 N3 #20 0.000 N4 #21 0.000 O1 #22 0.000 O2 #23 0.000 O3 #24 0.000 S1 #25 0.000 H3 #26 0.000 H4 #27 0.000 H6 #28 0.000 H8 #29 0.000 H91 #30 0.000 H92 #31 0.000 H12 #32 0.000 H13 #33 0.000 H16 #34 0.000 H10 #35 0.000 H30 #36 0.000 +model DANCUQ RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON O OR S 10 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 3 PI PAIR ON O OR S 11 SUBRING 2 has 4 PI electrons + # ty SI1 #1 19 S1 #2 15 S2 #3 15 C1 #4 1 C2 #5 1 H11 #6 5 H12 #7 5 H21 #8 5 H22 #9 5 S1B #10 15 S2B #11 15 C1B #12 1 C2B #13 1 H11B #14 5 H12B #15 5 H21B #16 5 H22B #17 5 + # symb SI1 #1 SI S1 #2 S S2 #3 S C1 #4 CR C2 #5 CR H11 #6 HC H12 #7 HC H21 #8 HC H22 #9 HC S1B #10 S S2B #11 S C1B #12 CR C2B #13 CR H11B #14 HC H12B #15 HC H21B #16 HC H22B #17 HC + # char SI1 #1 1.320 S1 #2 -0.560 S2 #3 -0.560 C1 #4 0.230 C2 #5 0.230 H11 #6 0.000 H12 #7 0.000 H21 #8 0.000 H22 #9 0.000 S1B #10 -0.560 S2B #11 -0.560 C1B #12 0.230 C2B #13 0.230 H11B #14 0.000 H12B #15 0.000 H21B #16 0.000 H22B #17 0.000 + # fchar SI1 #1 0.000 S1 #2 0.000 S2 #3 0.000 C1 #4 0.000 C2 #5 0.000 H11 #6 0.000 H12 #7 0.000 H21 #8 0.000 H22 #9 0.000 S1B #10 0.000 S2B #11 0.000 C1B #12 0.000 C2B #13 0.000 H11B #14 0.000 H12B #15 0.000 H21B #16 0.000 H22B #17 0.000 +model DAPSUO03 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 40 N2 #5 40 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 37 C9 #14 37 C10 #15 37 C11 #16 37 C12 #17 37 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 28 H10 #27 28 H11 #28 28 H12 #29 28 + # symb S1 #1 SO2 O1 #2 O2S O2 #3 O2S N1 #4 NC=C N2 #5 NC=C C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CB C9 #14 CB C10 #15 CB C11 #16 CB C12 #17 CB H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HNCC H10 #27 HNCC H11 #28 HNCC H12 #29 HNCC + # char S1 #1 1.318 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.900 N2 #5 -0.900 C1 #6 -0.009 C2 #7 -0.150 C3 #8 -0.150 C4 #9 0.100 C5 #10 -0.150 C6 #11 -0.150 C7 #12 -0.009 C8 #13 -0.150 C9 #14 -0.150 C10 #15 0.100 C11 #16 -0.150 C12 #17 -0.150 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.150 H6 #23 0.150 H7 #24 0.150 H8 #25 0.150 H9 #26 0.400 H10 #27 0.400 H11 #28 0.400 H12 #29 0.400 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 N2 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 +model DARDEF RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 4 PI PAIR ON O OR S 6 SUBRING 2 has 4 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 13 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 1 S2 #2 15 C3 #3 3 N4 #4 40 C5 #5 1 S6 #6 15 C7 #7 1 C8 #8 1 N9 #9 9 C10 #10 1 C11 #11 64 C12 #12 63 N13 #13 39 C14 #14 63 N15 #15 66 C16 #16 1 H11 #17 5 H12 #18 5 H5 #19 5 H71 #20 5 H72 #21 5 H8 #22 5 H101 #23 5 H102 #24 5 H103 #25 5 H13 #26 23 H14 #27 5 H161 #28 5 H162 #29 5 H163 #30 5 + # symb C1 #1 CR S2 #2 S C3 #3 C=N N4 #4 NC=N C5 #5 CR S6 #6 S C7 #7 CR C8 #8 CR N9 #9 N=C C10 #10 CR C11 #11 C5B C12 #12 C5A N13 #13 NPYL C14 #14 C5A N15 #15 N5B C16 #16 CR H11 #17 HC H12 #18 HC H5 #19 HC H71 #20 HC H72 #21 HC H8 #22 HC H101 #23 HC H102 #24 HC H103 #25 HC H13 #26 HPYL H14 #27 HC H161 #28 HC H162 #29 HC H163 #30 HC + # char C1 #1 0.230 S2 #2 -0.371 C3 #3 0.641 N4 #4 -0.788 C5 #5 0.780 S6 #6 -0.460 C7 #7 0.230 C8 #8 0.369 N9 #9 -0.696 C10 #10 0.246 C11 #11 0.046 C12 #12 -0.332 N13 #13 0.033 C14 #14 0.037 N15 #15 -0.565 C16 #16 0.180 H11 #17 0.000 H12 #18 0.000 H5 #19 0.000 H71 #20 0.000 H72 #21 0.000 H8 #22 0.000 H101 #23 0.000 H102 #24 0.000 H103 #25 0.000 H13 #26 0.270 H14 #27 0.150 H161 #28 0.000 H162 #29 0.000 H163 #30 0.000 + # fchar C1 #1 0.000 S2 #2 0.000 C3 #3 0.000 N4 #4 0.000 C5 #5 0.000 S6 #6 0.000 C7 #7 0.000 C8 #8 0.000 N9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N13 #13 0.000 C14 #14 0.000 N15 #15 0.000 C16 #16 0.000 H11 #17 0.000 H12 #18 0.000 H5 #19 0.000 H71 #20 0.000 H72 #21 0.000 H8 #22 0.000 H101 #23 0.000 H102 #24 0.000 H103 #25 0.000 H13 #26 0.000 H14 #27 0.000 H161 #28 0.000 H162 #29 0.000 H163 #30 0.000 +model DARPOB10 + # ty P1 #1 75 SI1 #2 19 N1 #3 40 N2 #4 40 C1 #5 1 C2 #6 1 C3 #7 1 C4 #8 3 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 1 C9 #13 1 C10 #14 1 H11 #15 5 H12 #16 5 H13 #17 5 H21 #18 5 H22 #19 5 H23 #20 5 H31 #21 5 H32 #22 5 H33 #23 5 H51 #24 5 H52 #25 5 H53 #26 5 H61 #27 5 H63 #28 5 H71 #29 5 H72 #30 5 H81 #31 5 H82 #32 5 H83 #33 5 H91 #34 5 H92 #35 5 H101 #36 5 H102 #37 5 H103 #38 5 H1 #39 5 + # symb P1 #1 -P=C SI1 #2 SI N1 #3 NC=P N2 #4 NC=P C1 #5 CR C2 #6 CR C3 #7 CR C4 #8 C=P C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 CR C9 #13 CR C10 #14 CR H11 #15 HC H12 #16 HC H13 #17 HC H21 #18 HC H22 #19 HC H23 #20 HC H31 #21 HC H32 #22 HC H33 #23 HC H51 #24 HC H52 #25 HC H53 #26 HC H61 #27 HC H63 #28 HC H71 #29 HC H72 #30 HC H81 #31 HC H82 #32 HC H83 #33 HC H91 #34 HC H92 #35 HC H101 #36 HC H102 #37 HC H103 #38 HC H1 #39 HC + # char P1 #1 -0.596 SI1 #2 0.591 N1 #3 -0.788 N2 #4 -0.788 C1 #5 -0.081 C2 #6 -0.081 C3 #7 -0.081 C4 #8 0.347 C5 #9 0.369 C6 #10 0.369 C7 #11 0.369 C8 #12 0.000 C9 #13 0.369 C10 #14 0.000 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H21 #18 0.000 H22 #19 0.000 H23 #20 0.000 H31 #21 0.000 H32 #22 0.000 H33 #23 0.000 H51 #24 0.000 H52 #25 0.000 H53 #26 0.000 H61 #27 0.000 H63 #28 0.000 H71 #29 0.000 H72 #30 0.000 H81 #31 0.000 H82 #32 0.000 H83 #33 0.000 H91 #34 0.000 H92 #35 0.000 H101 #36 0.000 H102 #37 0.000 H103 #38 0.000 H1 #39 0.000 + # fchar P1 #1 0.000 SI1 #2 0.000 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H21 #18 0.000 H22 #19 0.000 H23 #20 0.000 H31 #21 0.000 H32 #22 0.000 H33 #23 0.000 H51 #24 0.000 H52 #25 0.000 H53 #26 0.000 H61 #27 0.000 H63 #28 0.000 H71 #29 0.000 H72 #30 0.000 H81 #31 0.000 H82 #32 0.000 H83 #33 0.000 H91 #34 0.000 H92 #35 0.000 H101 #36 0.000 H102 #37 0.000 H103 #38 0.000 H1 #39 0.000 +model DARXID RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 16 N1 #2 10 N2 #3 40 C1 #4 3 C2 #5 2 C3 #6 2 C4 #7 1 C5 #8 1 C11 #9 37 C21 #10 37 C31 #11 37 C41 #12 37 C51 #13 37 C61 #14 37 H2 #15 5 H14 #16 5 H24 #17 5 H34 #18 5 H15 #19 5 H25 #20 5 H35 #21 5 H21 #22 5 H31 #23 5 H41 #24 5 H51 #25 5 H61 #26 5 + # symb S1 #1 S=C N1 #2 NC=S N2 #3 NC=C C1 #4 C=SN C2 #5 C=C C3 #6 C=C C4 #7 CR C5 #8 CR C11 #9 CB C21 #10 CB C31 #11 CB C41 #12 CB C51 #13 CB C61 #14 CB H2 #15 HC H14 #16 HC H24 #17 HC H34 #18 HC H15 #19 HC H25 #20 HC H35 #21 HC H21 #22 HC H31 #23 HC H41 #24 HC H51 #25 HC H61 #26 HC + # char S1 #1 -0.380 N1 #2 -0.157 N2 #3 -0.489 C1 #4 0.426 C2 #5 -0.136 C3 #6 -0.038 C4 #7 0.138 C5 #8 0.369 C11 #9 0.117 C21 #10 -0.150 C31 #11 -0.150 C41 #12 -0.150 C51 #13 -0.150 C61 #14 -0.150 H2 #15 0.150 H14 #16 0.000 H24 #17 0.000 H34 #18 0.000 H15 #19 0.000 H25 #20 0.000 H35 #21 0.000 H21 #22 0.150 H31 #23 0.150 H41 #24 0.150 H51 #25 0.150 H61 #26 0.150 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C11 #9 0.000 C21 #10 0.000 C31 #11 0.000 C41 #12 0.000 C51 #13 0.000 C61 #14 0.000 H2 #15 0.000 H14 #16 0.000 H24 #17 0.000 H34 #18 0.000 H15 #19 0.000 H25 #20 0.000 H35 #21 0.000 H21 #22 0.000 H31 #23 0.000 H41 #24 0.000 H51 #25 0.000 H61 #26 0.000 +model DARZEB RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty N1 #1 9 N2 #2 9 N3 #3 10 C4 #4 1 C41 #5 37 C5 #6 37 C6 #7 37 C7 #8 37 C8 #9 37 C81 #10 37 C31 #11 1 C32 #12 1 O4 #13 6 H31 #14 5 H32 #15 5 H33 #16 5 H34 #17 5 H35 #18 5 H41 #19 5 H42 #20 21 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 + # symb N1 #1 N=N N2 #2 N=N N3 #3 NN=N C4 #4 CR C41 #5 CB C5 #6 CB C6 #7 CB C7 #8 CB C8 #9 CB C81 #10 CB C31 #11 CR C32 #12 CR O4 #13 OR H31 #14 HC H32 #15 HC H33 #16 HC H34 #17 HC H35 #18 HC H41 #19 HC H42 #20 HOR H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC + # char N1 #1 -0.179 N2 #2 -0.062 N3 #3 -0.538 C4 #4 0.724 C41 #5 -0.143 C5 #6 -0.150 C6 #7 -0.150 C7 #8 -0.150 C8 #9 -0.150 C81 #10 0.179 C31 #11 0.300 C32 #12 0.000 O4 #13 -0.680 H31 #14 0.000 H32 #15 0.000 H33 #16 0.000 H34 #17 0.000 H35 #18 0.000 H41 #19 0.000 H42 #20 0.400 H5 #21 0.150 H6 #22 0.150 H7 #23 0.150 H8 #24 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C41 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C81 #10 0.000 C31 #11 0.000 C32 #12 0.000 O4 #13 0.000 H31 #14 0.000 H32 #15 0.000 H33 #16 0.000 H34 #17 0.000 H35 #18 0.000 H41 #19 0.000 H42 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 +model DAVWEC RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons + # ty BR1 #1 13 BR2 #2 13 C1 #3 3 C2 #4 1 C3 #5 2 C4 #6 2 C5 #7 1 C6 #8 1 C7 #9 1 C8 #10 1 C9 #11 1 N1 #12 45 N2 #13 45 N3 #14 45 O1 #15 7 O2 #16 32 O3 #17 32 O4 #18 32 O5 #19 32 O6 #20 32 O7 #21 32 H1 #22 5 H2 #23 5 H3 #24 5 H4 #25 5 H5 #26 5 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 5 + # symb BR1 #1 BR BR2 #2 BR C1 #3 C=OR C2 #4 CR C3 #5 C=C C4 #6 C=C C5 #7 CR C6 #8 CR C7 #9 CR C8 #10 CR C9 #11 CR N1 #12 NO2 N2 #13 NO2 N3 #14 NO2 O1 #15 O=CR O2 #16 O2N O3 #17 O2N O4 #18 O2N O5 #19 O2N O6 #20 O2N O7 #21 O2N H1 #22 HC H2 #23 HC H3 #24 HC H4 #25 HC H5 #26 HC H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HC + # char BR1 #1 -0.110 BR2 #2 -0.110 C1 #3 0.448 C2 #4 0.439 C3 #5 -0.028 C4 #6 -0.028 C5 #7 0.378 C6 #8 0.301 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 N1 #12 0.800 N2 #13 0.800 N3 #14 0.800 O1 #15 -0.570 O2 #16 -0.520 O3 #17 -0.520 O4 #18 -0.520 O5 #19 -0.520 O6 #20 -0.520 O7 #21 -0.520 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 + # fchar BR1 #1 0.000 BR2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 N1 #12 0.000 N2 #13 0.000 N3 #14 0.000 O1 #15 0.000 O2 #16 0.000 O3 #17 0.000 O4 #18 0.000 O5 #19 0.000 O6 #20 0.000 O7 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 +model DAVXED RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons + # ty C1 #1 3 C2 #2 1 C3 #3 2 C4 #4 2 C5 #5 1 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 1 C10 #10 1 N1 #11 45 N2 #12 45 N3 #13 45 N4 #14 45 O1 #15 7 O2 #16 32 O3 #17 32 O4 #18 32 O5 #19 32 O6 #20 32 O7 #21 32 O8 #22 32 O9 #23 32 H1 #24 5 H2 #25 5 H3 #26 5 H4 #27 5 H5 #28 5 H6 #29 5 H7 #30 5 H8 #31 5 H9 #32 5 H10 #33 5 H11 #34 5 H12 #35 5 + # symb C1 #1 C=OR C2 #2 CR C3 #3 C=C C4 #4 C=C C5 #5 CR C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 CR C10 #10 CR N1 #11 NO2 N2 #12 NO2 N3 #13 NO2 N4 #14 NO2 O1 #15 O=CR O2 #16 O2N O3 #17 O2N O4 #18 O2N O5 #19 O2N O6 #20 O2N O7 #21 O2N O8 #22 O2N O9 #23 O2N H1 #24 HC H2 #25 HC H3 #26 HC H4 #27 HC H5 #28 HC H6 #29 HC H7 #30 HC H8 #31 HC H9 #32 HC H10 #33 HC H11 #34 HC H12 #35 HC + # char C1 #1 0.448 C2 #2 0.439 C3 #3 -0.276 C4 #4 0.066 C5 #5 0.378 C6 #6 0.301 C7 #7 0.000 C8 #8 0.138 C9 #9 0.000 C10 #10 0.000 N1 #11 0.800 N2 #12 0.836 N3 #13 0.800 N4 #14 0.800 O1 #15 -0.570 O2 #16 -0.520 O3 #17 -0.520 O4 #18 -0.520 O5 #19 -0.520 O6 #20 -0.520 O7 #21 -0.520 O8 #22 -0.520 O9 #23 -0.520 H1 #24 0.000 H2 #25 0.000 H3 #26 0.000 H4 #27 0.000 H5 #28 0.000 H6 #29 0.000 H7 #30 0.000 H8 #31 0.000 H9 #32 0.000 H10 #33 0.000 H11 #34 0.000 H12 #35 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 N1 #11 0.000 N2 #12 0.000 N3 #13 0.000 N4 #14 0.000 O1 #15 0.000 O2 #16 0.000 O3 #17 0.000 O4 #18 0.000 O5 #19 0.000 O6 #20 0.000 O7 #21 0.000 O8 #22 0.000 O9 #23 0.000 H1 #24 0.000 H2 #25 0.000 H3 #26 0.000 H4 #27 0.000 H5 #28 0.000 H6 #29 0.000 H7 #30 0.000 H8 #31 0.000 H9 #32 0.000 H10 #33 0.000 H11 #34 0.000 H12 #35 0.000 +model DAWXII RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty C1 #1 30 C2 #2 30 C3 #3 20 C4 #4 20 N5 #5 40 C6 #6 1 N7 #7 67 N8 #8 9 C9 #9 1 O10 #10 32 F11 #11 11 F12 #12 11 F13 #13 11 F14 #14 11 H5 #15 28 H61 #16 5 H62 #17 5 H63 #18 5 H91 #19 5 H92 #20 5 H93 #21 5 + # symb C1 #1 CE4R C2 #2 CE4R C3 #3 CR4R C4 #4 CR4R N5 #5 NC=C C6 #6 CR N7 #7 N2OX N8 #8 N=N C9 #9 CR O10 #10 OXN F11 #11 F F12 #12 F F13 #13 F F14 #14 F H5 #15 HNCC H61 #16 HC H62 #17 HC H63 #18 HC H91 #19 HC H92 #20 HC H93 #21 HC + # char C1 #1 -0.040 C2 #2 -0.205 C3 #3 0.734 C4 #4 0.734 N5 #5 -0.867 C6 #6 0.369 N7 #7 0.907 N8 #8 -0.453 C9 #9 0.246 O10 #10 -0.633 F11 #11 -0.298 F12 #12 -0.298 F13 #13 -0.298 F14 #14 -0.298 H5 #15 0.400 H61 #16 0.000 H62 #17 0.000 H63 #18 0.000 H91 #19 0.000 H92 #20 0.000 H93 #21 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N5 #5 0.000 C6 #6 0.000 N7 #7 0.000 N8 #8 0.000 C9 #9 0.000 O10 #10 0.000 F11 #11 0.000 F12 #12 0.000 F13 #13 0.000 F14 #14 0.000 H5 #15 0.000 H61 #16 0.000 H62 #17 0.000 H63 #18 0.000 H91 #19 0.000 H92 #20 0.000 H93 #21 0.000 +model DAWYUV RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty CL1 #1 12 O1 #2 6 C2 #3 3 C3 #4 2 C4 #5 2 C5 #6 37 C6 #7 37 C7 #8 37 C8 #9 37 C9 #10 37 C10 #11 37 O11 #12 7 H3 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 H8 #17 5 + # symb CL1 #1 CL O1 #2 OC=O C2 #3 COO C3 #4 C=C C4 #5 C=C C5 #6 CB C6 #7 CB C7 #8 CB C8 #9 CB C9 #10 CB C10 #11 CB O11 #12 O=CO H3 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC H8 #17 HC + # char CL1 #1 -0.140 O1 #2 -0.232 C2 #3 0.706 C3 #4 -0.136 C4 #5 0.112 C5 #6 -0.150 C6 #7 -0.150 C7 #8 -0.150 C8 #9 -0.150 C9 #10 0.083 C10 #11 0.028 O11 #12 -0.570 H3 #13 0.150 H5 #14 0.150 H6 #15 0.150 H7 #16 0.150 H8 #17 0.150 + # fchar CL1 #1 0.000 O1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 O11 #12 0.000 H3 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 +model DAYWEF RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 10 PI PAIR ON O OR S 11 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 4 PI PAIR ON O OR S 5 SUBRING 1 has 4 PI electrons + # ty P1 #1 25 P2 #2 25 O2 #3 6 O11 #4 6 O13 #5 6 O14 #6 32 C14 #7 1 C15 #8 1 C16 #9 1 O21 #10 6 O23 #11 6 O24 #12 32 C24 #13 1 C25 #14 1 C26 #15 1 H141 #16 5 H142 #17 5 H151 #18 5 H152 #19 5 H161 #20 5 H162 #21 5 H241 #22 5 H242 #23 5 H251 #24 5 H252 #25 5 H261 #26 5 H262 #27 5 + # symb P1 #1 PO4 P2 #2 PO4 O2 #3 OPO3 O11 #4 OPO3 O13 #5 OPO3 O14 #6 OP C14 #7 CR C15 #8 CR C16 #9 CR O21 #10 OPO3 O23 #11 OPO3 O24 #12 OP C24 #13 CR C25 #14 CR C26 #15 CR H141 #16 HC H142 #17 HC H151 #18 HC H152 #19 HC H161 #20 HC H162 #21 HC H241 #22 HC H242 #23 HC H251 #24 HC H252 #25 HC H261 #26 HC H262 #27 HC + # char P1 #1 1.514 P2 #2 1.514 O2 #3 -0.542 O11 #4 -0.551 O13 #5 -0.551 O14 #6 -0.700 C14 #7 0.280 C15 #8 0.000 C16 #9 0.280 O21 #10 -0.551 O23 #11 -0.551 O24 #12 -0.700 C24 #13 0.280 C25 #14 0.000 C26 #15 0.280 H141 #16 0.000 H142 #17 0.000 H151 #18 0.000 H152 #19 0.000 H161 #20 0.000 H162 #21 0.000 H241 #22 0.000 H242 #23 0.000 H251 #24 0.000 H252 #25 0.000 H261 #26 0.000 H262 #27 0.000 + # fchar P1 #1 0.000 P2 #2 0.000 O2 #3 0.000 O11 #4 0.000 O13 #5 0.000 O14 #6 0.000 C14 #7 0.000 C15 #8 0.000 C16 #9 0.000 O21 #10 0.000 O23 #11 0.000 O24 #12 0.000 C24 #13 0.000 C25 #14 0.000 C26 #15 0.000 H141 #16 0.000 H142 #17 0.000 H151 #18 0.000 H152 #19 0.000 H161 #20 0.000 H162 #21 0.000 H241 #22 0.000 H242 #23 0.000 H251 #24 0.000 H252 #25 0.000 H261 #26 0.000 H262 #27 0.000 +model DAZVEF RING 1 HAS 4 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 IS A 3-MEMBERED RING SUBRING 4 IS A 3-MEMBERED RING SUBRING 3 has 0 PI electrons + # ty C1 #1 3 O1 #2 7 C2 #3 22 C3 #4 22 C4 #5 22 C5 #6 3 O2 #7 7 C6 #8 22 C7 #9 22 C8 #10 22 C9 #11 3 O3 #12 7 C10 #13 22 C11 #14 22 C12 #15 22 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 + # symb C1 #1 C=OR O1 #2 O=CR C2 #3 CR3R C3 #4 CR3R C4 #5 CR3R C5 #6 C=OR O2 #7 O=CR C6 #8 CR3R C7 #9 CR3R C8 #10 CR3R C9 #11 C=OR O3 #12 O=CR C10 #13 CR3R C11 #14 CR3R C12 #15 CR3R H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC + # char C1 #1 0.570 O1 #2 -0.570 C2 #3 0.000 C3 #4 -0.200 C4 #5 -0.200 C5 #6 0.570 O2 #7 -0.570 C6 #8 0.000 C7 #9 -0.200 C8 #10 -0.200 C9 #11 0.570 O3 #12 -0.570 C10 #13 0.000 C11 #14 -0.200 C12 #15 -0.200 H1 #16 0.100 H2 #17 0.100 H3 #18 0.100 H4 #19 0.100 H5 #20 0.100 H6 #21 0.100 H7 #22 0.100 H8 #23 0.100 H9 #24 0.100 H10 #25 0.100 H11 #26 0.100 H12 #27 0.100 + # fchar C1 #1 0.000 O1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 O2 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 O3 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 +model DEBMOM01 + # ty O1 #1 7 O2 #2 6 O3 #3 32 O4 #4 32 C1 #5 3 C2 #6 2 C3 #7 2 C4 #8 41 H1 #9 24 H2 #10 5 H3 #11 5 + # symb O1 #1 O=CO O2 #2 OC=O O3 #3 O2CM O4 #4 O2CM C1 #5 COO C2 #6 C=C C3 #7 C=C C4 #8 CO2M H1 #9 HOCO H2 #10 HC H3 #11 HC + # char O1 #1 -0.570 O2 #2 -0.650 O3 #3 -0.900 O4 #4 -0.900 C1 #5 0.706 C2 #6 -0.136 C3 #7 -0.400 C4 #8 1.050 H1 #9 0.500 H2 #10 0.150 H3 #11 0.150 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 -0.500 O4 #4 -0.500 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 +model DECJAW RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 2 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 59 N2 #2 65 C3 #3 64 C31 #4 64 C4 #5 1 C5 #6 1 N6 #7 34 C7 #8 1 C71 #9 63 C8 #10 41 O81 #11 32 O82 #12 32 O3 #13 6 H41 #14 5 H45 #15 5 H51 #16 5 H55 #17 5 H61 #18 36 H65 #19 36 H71 #20 5 H3 #21 29 + # symb O1 #1 OFUR N2 #2 N5A C3 #3 C5B C31 #4 C5B C4 #5 CR C5 #6 CR N6 #7 NR+ C7 #8 CR C71 #9 C5A C8 #10 CO2M O81 #11 O2CM O82 #12 O2CM O3 #13 OC=N H41 #14 HC H45 #15 HC H51 #16 HC H55 #17 HC H61 #18 HNR+ H65 #19 HNR+ H71 #20 HC H3 #21 HOCN + # char O1 #1 -0.019 N2 #2 -0.410 C3 #3 0.351 C31 #4 -0.181 C4 #5 0.181 C5 #6 0.503 N6 #7 -0.906 C7 #8 0.577 C71 #9 -0.040 C8 #10 0.906 O81 #11 -0.900 O82 #12 -0.900 O3 #13 -0.512 H41 #14 0.000 H45 #15 0.000 H51 #16 0.000 H55 #17 0.000 H61 #18 0.450 H65 #19 0.450 H71 #20 0.000 H3 #21 0.450 + # fchar O1 #1 0.000 N2 #2 0.000 C3 #3 0.000 C31 #4 0.000 C4 #5 0.000 C5 #6 0.000 N6 #7 1.000 C7 #8 0.000 C71 #9 0.000 C8 #10 0.000 O81 #11 -0.500 O82 #12 -0.500 O3 #13 0.000 H41 #14 0.000 H45 #15 0.000 H51 #16 0.000 H55 #17 0.000 H61 #18 0.000 H65 #19 0.000 H71 #20 0.000 H3 #21 0.000 +model DECKUR RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 2 PI electrons + # ty N1 #1 40 C2 #2 2 C3 #3 2 C4 #4 3 N5 #5 10 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 1 C9_ #10 1 C11 #11 3 O12 #12 7 N13 #13 10 O17 #14 7 C18 #15 1 H2 #16 5 H61 #17 5 H62 #18 5 H71 #19 5 H72 #20 5 H81 #21 5 H82 #22 5 H91 #23 5 H92 #24 5 H92_ #25 5 H131 #26 28 H132 #27 28 H181 #28 5 H182 #29 5 H183 #30 5 + # symb N1 #1 NC=C C2 #2 C=C C3 #3 C=C C4 #4 C=ON N5 #5 NC=O C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 CR C9_ #10 CR C11 #11 C=ON O12 #12 O=CN N13 #13 NC=O O17 #14 O=CN C18 #15 CR H2 #16 HC H61 #17 HC H62 #18 HC H71 #19 HC H72 #20 HC H81 #21 HC H82 #22 HC H91 #23 HC H92 #24 HC H92_ #25 HC H131 #26 HNCO H132 #27 HNCO H181 #28 HC H182 #29 HC H183 #30 HC + # char N1 #1 -0.838 C2 #2 -0.050 C3 #3 0.029 C4 #4 0.616 N5 #5 -0.660 C6 #6 0.300 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C9_ #10 0.669 C11 #11 0.616 O12 #12 -0.570 N13 #13 -0.800 O17 #14 -0.570 C18 #15 0.369 H2 #16 0.150 H61 #17 0.000 H62 #18 0.000 H71 #19 0.000 H72 #20 0.000 H81 #21 0.000 H82 #22 0.000 H91 #23 0.000 H92 #24 0.000 H92_ #25 0.000 H131 #26 0.370 H132 #27 0.370 H181 #28 0.000 H182 #29 0.000 H183 #30 0.000 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C9_ #10 0.000 C11 #11 0.000 O12 #12 0.000 N13 #13 0.000 O17 #14 0.000 C18 #15 0.000 H2 #16 0.000 H61 #17 0.000 H62 #18 0.000 H71 #19 0.000 H72 #20 0.000 H81 #21 0.000 H82 #22 0.000 H91 #23 0.000 H92 #24 0.000 H92_ #25 0.000 H131 #26 0.000 H132 #27 0.000 H181 #28 0.000 H182 #29 0.000 H183 #30 0.000 +model DECRIM RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 10 9 EXOCYCLIC MULT BOND 5 6 SUBRING 1 ALSO RECOGNIZED AS AROMATIC + # ty O1 #1 59 N1 #2 81 N3 #3 55 C1 #4 80 C2 #5 63 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 64 C8 #11 1 C10 #12 1 C11 #13 1 H3 #14 5 H4 #15 5 H5 #16 5 H101 #17 5 H102 #18 5 H112 #19 5 H1 #20 5 H2 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 + # symb O1 #1 OFUR N1 #2 NIM+ N3 #3 NCN+ C1 #4 CIM+ C2 #5 C5A C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 C5B C8 #11 CR C10 #12 CR C11 #13 CR H3 #14 HC H4 #15 HC H5 #16 HC H101 #17 HC H102 #18 HC H112 #19 HC H1 #20 HC H2 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC + # char O1 #1 -0.333 N1 #2 -0.747 N3 #3 -0.811 C1 #4 0.925 C2 #5 0.140 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.150 C7 #10 0.333 C8 #11 0.514 C10 #12 0.489 C11 #13 0.489 H3 #14 0.150 H4 #15 0.150 H5 #16 0.150 H101 #17 0.000 H102 #18 0.000 H112 #19 0.000 H1 #20 0.150 H2 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 + # fchar O1 #1 0.000 N1 #2 0.500 N3 #3 0.500 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C10 #12 0.000 C11 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H101 #17 0.000 H102 #18 0.000 H112 #19 0.000 H1 #20 0.000 H2 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model DEDCIY RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 9 8 EXOCYCLIC MULT BOND 10 11 + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 O1 #4 7 N1 #5 10 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 3 C8 #13 1 C9 #14 1 H2 #15 5 H6 #16 5 H1 #17 28 H91 #18 5 H92 #19 5 H93 #20 5 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL O1 #4 O=CN N1 #5 NC=O C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 C=ON C8 #13 CR C9 #14 CR H2 #15 HC H6 #16 HC H1 #17 HNCO H91 #18 HC H92 #19 HC H93 #20 HC + # char CL1 #1 -0.177 CL2 #2 -0.177 CL3 #3 -0.290 O1 #4 -0.570 N1 #5 -0.547 C1 #6 0.177 C2 #7 -0.150 C3 #8 0.177 C4 #9 0.117 C5 #10 -0.143 C6 #11 -0.150 C7 #12 0.569 C8 #13 0.494 C9 #14 0.000 H2 #15 0.150 H6 #16 0.150 H1 #17 0.370 H91 #18 0.000 H92 #19 0.000 H93 #20 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 O1 #4 0.000 N1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 H2 #15 0.000 H6 #16 0.000 H1 #17 0.000 H91 #18 0.000 H92 #19 0.000 H93 #20 0.000 +model DEDSIO RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty I1 #1 14 N1 #2 10 O1 #3 7 C1 #4 3 C2 #5 20 C3 #6 20 C4 #7 1 C5 #8 4 C6 #9 4 C7 #10 3 O2 #11 7 O3 #12 6 C8 #13 1 C9 #14 1 C10 #15 1 C11 #16 1 H21 #17 5 H22 #18 5 H3 #19 5 H41 #20 5 H42 #21 5 H91 #22 5 H92 #23 5 H93 #24 5 H101 #25 5 H102 #26 5 H103 #27 5 H111 #28 5 H112 #29 5 H113 #30 5 + # symb I1 #1 I N1 #2 NC=O O1 #3 O=CN C1 #4 C=ON C2 #5 CR4R C3 #6 CR4R C4 #7 CR C5 #8 CSP C6 #9 CSP C7 #10 COO O2 #11 O=CO O3 #12 OC=O C8 #13 CR C9 #14 CR C10 #15 CR C11 #16 CR H21 #17 HC H22 #18 HC H3 #19 HC H41 #20 HC H42 #21 HC H91 #22 HC H92 #23 HC H93 #24 HC H101 #25 HC H102 #26 HC H103 #27 HC H111 #28 HC H112 #29 HC H113 #30 HC + # char I1 #1 -0.190 N1 #2 -0.329 O1 #3 -0.570 C1 #4 0.577 C2 #5 0.053 C3 #6 0.225 C4 #7 0.190 C5 #8 0.044 C6 #9 -0.105 C7 #10 0.825 O2 #11 -0.570 O3 #12 -0.430 C8 #13 0.280 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 H21 #17 0.000 H22 #18 0.000 H3 #19 0.000 H41 #20 0.000 H42 #21 0.000 H91 #22 0.000 H92 #23 0.000 H93 #24 0.000 H101 #25 0.000 H102 #26 0.000 H103 #27 0.000 H111 #28 0.000 H112 #29 0.000 H113 #30 0.000 + # fchar I1 #1 0.000 N1 #2 0.000 O1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 O2 #11 0.000 O3 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 H21 #17 0.000 H22 #18 0.000 H3 #19 0.000 H41 #20 0.000 H42 #21 0.000 H91 #22 0.000 H92 #23 0.000 H93 #24 0.000 H101 #25 0.000 H102 #26 0.000 H103 #27 0.000 H111 #28 0.000 H112 #29 0.000 H113 #30 0.000 +model DEFGIE RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 32 O2 #2 7 N1 #3 40 N2 #4 9 N3 #5 67 N4 #6 10 C1 #7 37 C2 #8 37 C3 #9 37 C4 #10 37 C5 #11 37 C6 #12 37 C7 #13 1 C8 #14 3 H1 #15 28 H2 #16 5 H3 #17 5 H41 #18 28 H42 #19 28 H5 #20 5 H6 #21 5 H71 #22 5 H72 #23 5 H73 #24 5 + # symb O1 #1 OXN O2 #2 O=CN N1 #3 NC=C N2 #4 N=N N3 #5 N2OX N4 #6 NC=O C1 #7 CB C2 #8 CB C3 #9 CB C4 #10 CB C5 #11 CB C6 #12 CB C7 #13 CR C8 #14 C=ON H1 #15 HNCC H2 #16 HC H3 #17 HC H41 #18 HNCO H42 #19 HNCO H5 #20 HC H6 #21 HC H71 #22 HC H72 #23 HC H73 #24 HC + # char O1 #1 -0.633 O2 #2 -0.570 N1 #3 -0.458 N2 #4 -0.249 N3 #5 0.741 N4 #6 -0.800 C1 #7 0.100 C2 #8 -0.150 C3 #9 -0.150 C4 #10 0.086 C5 #11 -0.150 C6 #12 -0.150 C7 #13 0.099 C8 #14 0.544 H1 #15 0.400 H2 #16 0.150 H3 #17 0.150 H41 #18 0.370 H42 #19 0.370 H5 #20 0.150 H6 #21 0.150 H71 #22 0.000 H72 #23 0.000 H73 #24 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 N4 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H41 #18 0.000 H42 #19 0.000 H5 #20 0.000 H6 #21 0.000 H71 #22 0.000 H72 #23 0.000 H73 #24 0.000 +model DEFLEF RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 2 PI PAIR ON SP2-N 8 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 13 PI PAIR ON SP2-N 19 SUBRING 2 has 4 PI electrons + # ty C7 #1 1 N1 #2 10 N11 #3 45 O12 #4 32 O13 #5 32 C2 #6 3 O21 #7 7 N3 #8 10 C31 #9 3 C33 #10 1 O32 #11 7 C8 #12 1 N4 #13 10 N41 #14 45 O43 #15 32 O42 #16 32 C5 #17 3 O51 #18 7 N6 #19 10 C61 #20 3 C62 #21 1 O63 #22 7 H1 #23 5 H2 #24 5 H3 #25 5 H4 #26 5 H5 #27 5 H6 #28 5 H7 #29 5 H8 #30 5 + # symb C7 #1 CR N1 #2 NC=O N11 #3 NO2 O12 #4 O2N O13 #5 O2N C2 #6 CONN O21 #7 O=CN N3 #8 NC=O C31 #9 C=ON C33 #10 CR O32 #11 O=CN C8 #12 CR N4 #13 NC=O N41 #14 NO2 O43 #15 O2N O42 #16 O2N C5 #17 CONN O51 #18 O=CN N6 #19 NC=O C61 #20 C=ON C62 #21 CR O63 #22 O=CN H1 #23 HC H2 #24 HC H3 #25 HC H4 #26 HC H5 #27 HC H6 #28 HC H7 #29 HC H8 #30 HC + # char C7 #1 0.600 N1 #2 -0.344 N11 #3 1.024 O12 #4 -0.520 O13 #5 -0.520 C2 #6 0.690 O21 #7 -0.570 N3 #8 -0.420 C31 #9 0.569 C33 #10 0.061 O32 #11 -0.570 C8 #12 0.600 N4 #13 -0.344 N41 #14 1.024 O43 #15 -0.520 O42 #16 -0.520 C5 #17 0.690 O51 #18 -0.570 N6 #19 -0.420 C61 #20 0.569 C62 #21 0.061 O63 #22 -0.570 H1 #23 0.000 H2 #24 0.000 H3 #25 0.000 H4 #26 0.000 H5 #27 0.000 H6 #28 0.000 H7 #29 0.000 H8 #30 0.000 + # fchar C7 #1 0.000 N1 #2 0.000 N11 #3 0.000 O12 #4 0.000 O13 #5 0.000 C2 #6 0.000 O21 #7 0.000 N3 #8 0.000 C31 #9 0.000 C33 #10 0.000 O32 #11 0.000 C8 #12 0.000 N4 #13 0.000 N41 #14 0.000 O43 #15 0.000 O42 #16 0.000 C5 #17 0.000 O51 #18 0.000 N6 #19 0.000 C61 #20 0.000 C62 #21 0.000 O63 #22 0.000 H1 #23 0.000 H2 #24 0.000 H3 #25 0.000 H4 #26 0.000 H5 #27 0.000 H6 #28 0.000 H7 #29 0.000 H8 #30 0.000 +model DEFPUZ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 N1 #2 65 N2 #3 81 N3 #4 40 N4 #5 55 C1 #6 64 C2 #7 80 C3 #8 1 C4 #9 1 H3 #10 28 H410 #11 36 H420 #12 36 H31 #13 5 H32 #14 5 H33 #15 5 H41 #16 5 H42 #17 5 H43 #18 5 + # symb S1 #1 STHI N1 #2 N5A N2 #3 NIM+ N3 #4 NC=N N4 #5 NCN+ C1 #6 C5B C2 #7 CIM+ C3 #8 CR C4 #9 CR H3 #10 HNCN H410 #11 HNN+ H420 #12 HNN+ H31 #13 HC H32 #14 HC H33 #15 HC H41 #16 HC H42 #17 HC H43 #18 HC + # char S1 #1 0.128 N1 #2 -0.510 N2 #3 -0.747 N3 #4 -0.852 N4 #5 -0.732 C1 #6 0.705 C2 #7 0.825 C3 #8 0.514 C4 #9 0.369 H3 #10 0.400 H410 #11 0.450 H420 #12 0.450 H31 #13 0.000 H32 #14 0.000 H33 #15 0.000 H41 #16 0.000 H42 #17 0.000 H43 #18 0.000 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.500 N3 #4 0.000 N4 #5 0.500 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 H3 #10 0.000 H410 #11 0.000 H420 #12 0.000 H31 #13 0.000 H32 #14 0.000 H33 #15 0.000 H41 #16 0.000 H42 #17 0.000 H43 #18 0.000 +model DEFTUD RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons + # ty N1 #1 10 N2 #2 9 N3 #3 9 C4 #4 3 N41 #5 40 C42 #6 1 C43 #7 1 N5 #8 9 C6 #9 3 O61 #10 7 C11 #11 37 C12 #12 37 C13 #13 37 C14 #14 37 C15 #15 37 C16 #16 37 H12 #17 5 H13 #18 5 H14 #19 5 H15 #20 5 H16 #21 5 H421 #22 5 H422 #23 5 H423 #24 5 H431 #25 5 H432 #26 5 H433 #27 5 + # symb N1 #1 NC=O N2 #2 N=N N3 #3 N=N C4 #4 C=N N41 #5 NC=N C42 #6 CR C43 #7 CR N5 #8 N=C C6 #9 CONN O61 #10 O=CN C11 #11 CB C12 #12 CB C13 #13 CB C14 #14 CB C15 #15 CB C16 #16 CB H12 #17 HC H13 #18 HC H14 #19 HC H15 #20 HC H16 #21 HC H421 #22 HC H422 #23 HC H423 #24 HC H431 #25 HC H432 #26 HC H433 #27 HC + # char N1 #1 -0.115 N2 #2 -0.062 N3 #3 -0.211 C4 #4 0.711 N41 #5 -0.788 C42 #6 0.369 C43 #7 0.369 N5 #8 -0.661 C6 #9 0.841 O61 #10 -0.570 C11 #11 0.117 C12 #12 -0.150 C13 #13 -0.150 C14 #14 -0.150 C15 #15 -0.150 C16 #16 -0.150 H12 #17 0.150 H13 #18 0.150 H14 #19 0.150 H15 #20 0.150 H16 #21 0.150 H421 #22 0.000 H422 #23 0.000 H423 #24 0.000 H431 #25 0.000 H432 #26 0.000 H433 #27 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C4 #4 0.000 N41 #5 0.000 C42 #6 0.000 C43 #7 0.000 N5 #8 0.000 C6 #9 0.000 O61 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 C15 #15 0.000 C16 #16 0.000 H12 #17 0.000 H13 #18 0.000 H14 #19 0.000 H15 #20 0.000 H16 #21 0.000 H421 #22 0.000 H422 #23 0.000 H423 #24 0.000 H431 #25 0.000 H432 #26 0.000 H433 #27 0.000 +model DEFVAL RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 9 N2 #2 54 C3 #3 3 O31 #4 7 N4 #5 9 C5 #6 3 N51 #7 40 C52 #8 1 C53 #9 1 N21 #10 40 C22 #11 37 C23 #12 37 C24 #13 37 C25 #14 37 C26 #15 37 C27 #16 37 C28 #17 1 H23 #18 5 H24 #19 5 H26 #20 5 H27 #21 5 H281 #22 5 H282 #23 5 H283 #24 5 H521 #25 5 H522 #26 5 H523 #27 5 H531 #28 5 H532 #29 5 H533 #30 5 H1 #31 28 + # symb N1 #1 N=N N2 #2 N+=N C3 #3 CONN O31 #4 O=CN N4 #5 N=C C5 #6 C=N N51 #7 NC=N C52 #8 CR C53 #9 CR N21 #10 NC=C C22 #11 CB C23 #12 CB C24 #13 CB C25 #14 CB C26 #15 CB C27 #16 CB C28 #17 CR H23 #18 HC H24 #19 HC H26 #20 HC H27 #21 HC H281 #22 HC H282 #23 HC H283 #24 HC H521 #25 HC H522 #26 HC H523 #27 HC H531 #28 HC H532 #29 HC H533 #30 HC H1 #31 HNCC + # char N1 #1 -0.093 N2 #2 0.393 C3 #3 1.110 O31 #4 -0.570 N4 #5 -0.661 C5 #6 0.711 N51 #7 -0.788 C52 #8 0.369 C53 #9 0.369 N21 #10 -0.340 C22 #11 0.100 C23 #12 -0.150 C24 #13 -0.150 C25 #14 -0.143 C26 #15 -0.150 C27 #16 -0.150 C28 #17 0.143 H23 #18 0.150 H24 #19 0.150 H26 #20 0.150 H27 #21 0.150 H281 #22 0.000 H282 #23 0.000 H283 #24 0.000 H521 #25 0.000 H522 #26 0.000 H523 #27 0.000 H531 #28 0.000 H532 #29 0.000 H533 #30 0.000 H1 #31 0.400 + # fchar N1 #1 0.000 N2 #2 1.000 C3 #3 0.000 O31 #4 0.000 N4 #5 0.000 C5 #6 0.000 N51 #7 0.000 C52 #8 0.000 C53 #9 0.000 N21 #10 0.000 C22 #11 0.000 C23 #12 0.000 C24 #13 0.000 C25 #14 0.000 C26 #15 0.000 C27 #16 0.000 C28 #17 0.000 H23 #18 0.000 H24 #19 0.000 H26 #20 0.000 H27 #21 0.000 H281 #22 0.000 H282 #23 0.000 H283 #24 0.000 H521 #25 0.000 H522 #26 0.000 H523 #27 0.000 H531 #28 0.000 H532 #29 0.000 H533 #30 0.000 H1 #31 0.000 +model DEFYUI RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons + # ty S1 #1 16 S2 #2 15 N1 #3 40 C1 #4 3 C2 #5 2 C3 #6 2 C4 #7 1 C5 #8 1 C6 #9 1 H3 #10 71 H1 #11 28 H2 #12 28 H41 #13 5 H42 #14 5 H51 #15 5 H52 #16 5 H61 #17 5 H62 #18 5 + # symb S1 #1 S=C S2 #2 S N1 #3 NC=C C1 #4 CSS C2 #5 C=C C3 #6 C=C C4 #7 CR C5 #8 CR C6 #9 CR H3 #10 HS H1 #11 HNCC H2 #12 HNCC H41 #13 HC H42 #14 HC H51 #15 HC H52 #16 HC H61 #17 HC H62 #18 HC + # char S1 #1 -0.380 S2 #2 -0.321 N1 #3 -0.900 C1 #4 0.507 C2 #5 -0.124 C3 #6 -0.038 C4 #7 0.138 C5 #8 0.000 C6 #9 0.138 H3 #10 0.180 H1 #11 0.400 H2 #12 0.400 H41 #13 0.000 H42 #14 0.000 H51 #15 0.000 H52 #16 0.000 H61 #17 0.000 H62 #18 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 N1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 H3 #10 0.000 H1 #11 0.000 H2 #12 0.000 H41 #13 0.000 H42 #14 0.000 H51 #15 0.000 H52 #16 0.000 H61 #17 0.000 H62 #18 0.000 +model DEGLUW + # ty CL1 #1 12 N1 #2 55 N2 #3 55 C1 #4 57 C2 #5 1 C3 #6 1 H3 #7 36 H4 #8 36 H21 #9 5 H22 #10 5 H23 #11 5 H31 #12 5 H32 #13 5 H33 #14 5 + # symb CL1 #1 CL N1 #2 NCN+ N2 #3 NCN+ C1 #4 CNN+ C2 #5 CR C3 #6 CR H3 #7 HNN+ H4 #8 HNN+ H21 #9 HC H22 #10 HC H23 #11 HC H31 #12 HC H32 #13 HC H33 #14 HC + # char CL1 #1 -0.199 N1 #2 -0.754 N2 #3 -0.833 C1 #4 0.908 C2 #5 0.489 C3 #6 0.489 H3 #7 0.450 H4 #8 0.450 H21 #9 0.000 H22 #10 0.000 H23 #11 0.000 H31 #12 0.000 H32 #13 0.000 H33 #14 0.000 + # fchar CL1 #1 0.000 N1 #2 0.500 N2 #3 0.500 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 H3 #7 0.000 H4 #8 0.000 H21 #9 0.000 H22 #10 0.000 H23 #11 0.000 H31 #12 0.000 H32 #13 0.000 H33 #14 0.000 +model DEGRIQ RING 1 HAS 4 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 19 PI PAIR ON SP2-N 18 SUBRING 2 has 6 PI electrons PI PAIR ON SP2-N 19 PI PAIR ON SP2-N 18 SUBRING 3 has 4 PI electrons SUBRING 4 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 4 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 1 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 37 C13 #13 1 C14 #14 37 C15 #15 1 C16 #16 1 C17 #17 1 N1 #18 40 N2 #19 40 H1 #20 5 H3 #21 5 H4 #22 5 H61 #23 5 H62 #24 5 H8 #25 5 H10 #26 5 H11 #27 5 H131 #28 5 H132 #29 5 H151 #30 5 H152 #31 5 H161 #32 5 H162 #33 5 H163 #34 5 H171 #35 5 H172 #36 5 H173 #37 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CR C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 CB C13 #13 CR C14 #14 CB C15 #15 CR C16 #16 CR C17 #17 CR N1 #18 NC=C N2 #19 NC=C H1 #20 HC H3 #21 HC H4 #22 HC H61 #23 HC H62 #24 HC H8 #25 HC H10 #26 HC H11 #27 HC H131 #28 HC H132 #29 HC H151 #30 HC H152 #31 HC H161 #32 HC H162 #33 HC H163 #34 HC H171 #35 HC H172 #36 HC H173 #37 HC + # char C1 #1 -0.150 C2 #2 -0.143 C3 #3 -0.150 C4 #4 -0.150 C5 #5 0.100 C6 #6 0.513 C7 #7 -0.143 C8 #8 -0.150 C9 #9 -0.143 C10 #10 -0.150 C11 #11 -0.150 C12 #12 0.100 C13 #13 0.513 C14 #14 -0.143 C15 #15 0.738 C16 #16 0.143 C17 #17 0.143 N1 #18 -0.838 N2 #19 -0.838 H1 #20 0.150 H3 #21 0.150 H4 #22 0.150 H61 #23 0.000 H62 #24 0.000 H8 #25 0.150 H10 #26 0.150 H11 #27 0.150 H131 #28 0.000 H132 #29 0.000 H151 #30 0.000 H152 #31 0.000 H161 #32 0.000 H162 #33 0.000 H163 #34 0.000 H171 #35 0.000 H172 #36 0.000 H173 #37 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 C15 #15 0.000 C16 #16 0.000 C17 #17 0.000 N1 #18 0.000 N2 #19 0.000 H1 #20 0.000 H3 #21 0.000 H4 #22 0.000 H61 #23 0.000 H62 #24 0.000 H8 #25 0.000 H10 #26 0.000 H11 #27 0.000 H131 #28 0.000 H132 #29 0.000 H151 #30 0.000 H152 #31 0.000 H161 #32 0.000 H162 #33 0.000 H163 #34 0.000 H171 #35 0.000 H172 #36 0.000 H173 #37 0.000 +model DEKRUG RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 14 PI PAIR ON DICOORD N 11 SUBRING 2 has 4 PI electrons + # ty N1 #1 10 C1 #2 1 C2 #3 3 O2 #4 7 N3 #5 10 C4 #6 3 O4 #7 7 C5 #8 1 C6 #9 3 O6 #10 7 N7 #11 62 C8 #12 3 O8 #13 7 O9 #14 6 H11 #15 5 H12 #16 5 H13 #17 5 H3 #18 28 + # symb N1 #1 NC=O C1 #2 CR C2 #3 CONN O2 #4 O=CN N3 #5 NC=O C4 #6 C=ON O4 #7 O=CN C5 #8 CR C6 #9 C=ON O6 #10 O=CN N7 #11 NM C8 #12 C=ON O8 #13 O=CN O9 #14 OC=O H11 #15 HC H12 #16 HC H13 #17 HC H3 #18 HNCO + # char N1 #1 -0.660 C1 #2 0.300 C2 #3 0.690 O2 #4 -0.570 N3 #5 -0.490 C4 #6 0.569 O4 #7 -0.570 C5 #8 0.702 C6 #9 0.289 O6 #10 -0.570 N7 #11 -0.560 C8 #12 0.500 O8 #13 -0.570 O9 #14 -0.430 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H3 #18 0.370 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O2 #4 0.000 N3 #5 0.000 C4 #6 0.000 O4 #7 0.000 C5 #8 0.000 C6 #9 0.000 O6 #10 0.000 N7 #11 -1.000 C8 #12 0.000 O8 #13 0.000 O9 #14 0.000 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H3 #18 0.000 +model DEMBIG RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty N1 #1 9 N2 #2 9 N3 #3 10 C4 #4 3 N5 #5 39 C6 #6 63 N7 #7 66 C8 #8 64 C810 #9 63 C31 #10 1 C32 #11 1 CL1 #12 12 O4 #13 7 C81 #14 3 N82 #15 10 O82 #16 7 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 28 H7 #23 28 + # symb N1 #1 N=N N2 #2 N=N N3 #3 NC=O C4 #4 CONN N5 #5 NPYL C6 #6 C5A N7 #7 N5B C8 #8 C5B C810 #9 C5A C31 #10 CR C32 #11 CR CL1 #12 CL O4 #13 O=CN C81 #14 C=ON N82 #15 NC=O O82 #16 O=CN H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HNCO H7 #23 HNCO + # char N1 #1 -0.126 N2 #2 -0.062 N3 #3 -0.298 C4 #4 0.639 N5 #5 0.294 C6 #6 0.037 N7 #7 -0.565 C8 #8 0.141 C810 #9 -0.026 C31 #10 0.300 C32 #11 0.290 CL1 #12 -0.290 O4 #13 -0.570 C81 #14 0.716 N82 #15 -0.800 O82 #16 -0.570 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.150 H6 #22 0.370 H7 #23 0.370 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C4 #4 0.000 N5 #5 0.000 C6 #6 0.000 N7 #7 0.000 C8 #8 0.000 C810 #9 0.000 C31 #10 0.000 C32 #11 0.000 CL1 #12 0.000 O4 #13 0.000 C81 #14 0.000 N82 #15 0.000 O82 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 +model DEPKEO RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON O OR S 8 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 3 has 6 PI electrons SUBRING 2 IS AROMATIC SUBRING 3 IS AROMATIC + # ty S10 #1 15 C101 #2 37 N1 #3 38 C2 #4 37 C3 #5 37 N4 #6 38 C41 #7 37 O5 #8 6 C51 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 N9 #13 38 C91 #14 37 H2 #15 5 H3 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 + # symb S10 #1 S C101 #2 CB N1 #3 NPYD C2 #4 CB C3 #5 CB N4 #6 NPYD C41 #7 CB O5 #8 OC=C C51 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB N9 #13 NPYD C91 #14 CB H2 #15 HC H3 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC + # char S10 #1 -0.203 C101 #2 0.411 N1 #3 -0.620 C2 #4 0.160 C3 #5 0.160 N4 #6 -0.620 C41 #7 0.393 O5 #8 -0.165 C51 #9 0.083 C6 #10 -0.150 C7 #11 -0.150 C8 #12 0.160 N9 #13 -0.620 C91 #14 0.411 H2 #15 0.150 H3 #16 0.150 H6 #17 0.150 H7 #18 0.150 H8 #19 0.150 + # fchar S10 #1 0.000 C101 #2 0.000 N1 #3 0.000 C2 #4 0.000 C3 #5 0.000 N4 #6 0.000 C41 #7 0.000 O5 #8 0.000 C51 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 N9 #13 0.000 C91 #14 0.000 H2 #15 0.000 H3 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 +model DERZUV RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons + # ty N1 #1 55 C2 #2 3 O2 #3 7 N3 #4 10 C4 #5 1 C5 #6 57 N6 #7 9 C7 #8 3 O7 #9 35 C8 #10 1 F81 #11 11 F82 #12 11 F83 #13 11 C9 #14 1 C10 #15 1 N11 #16 55 C12 #17 1 C13 #18 1 H3 #19 28 H91 #20 5 H92 #21 5 H93 #22 5 H101 #23 5 H102 #24 5 H103 #25 5 H121 #26 5 H122 #27 5 H123 #28 5 H131 #29 5 H132 #30 5 H133 #31 5 + # symb N1 #1 NCN+ C2 #2 CONN O2 #3 O=CN N3 #4 NC=O C4 #5 CR C5 #6 CNN+ N6 #7 N=C C7 #8 C=N O7 #9 OM2 C8 #10 CR F81 #11 F F82 #12 F F83 #13 F C9 #14 CR C10 #15 CR N11 #16 NCN+ C12 #17 CR C13 #18 CR H3 #19 HNCO H91 #20 HC H92 #21 HC H93 #22 HC H101 #23 HC H102 #24 HC H103 #25 HC H121 #26 HC H122 #27 HC H123 #28 HC H131 #29 HC H132 #30 HC H133 #31 HC + # char N1 #1 -0.405 C2 #2 1.011 O2 #3 -0.570 N3 #4 -0.730 C4 #5 0.405 C5 #6 0.604 N6 #7 -0.280 C7 #8 0.250 O7 #9 -0.861 C8 #10 1.081 F81 #11 -0.340 F82 #12 -0.340 F83 #13 -0.340 C9 #14 0.000 C10 #15 0.000 N11 #16 -0.833 C12 #17 0.489 C13 #18 0.489 H3 #19 0.370 H91 #20 0.000 H92 #21 0.000 H93 #22 0.000 H101 #23 0.000 H102 #24 0.000 H103 #25 0.000 H121 #26 0.000 H122 #27 0.000 H123 #28 0.000 H131 #29 0.000 H132 #30 0.000 H133 #31 0.000 + # fchar N1 #1 0.500 C2 #2 0.000 O2 #3 0.000 N3 #4 0.000 C4 #5 0.000 C5 #6 0.000 N6 #7 0.000 C7 #8 0.000 O7 #9 -1.000 C8 #10 0.000 F81 #11 0.000 F82 #12 0.000 F83 #13 0.000 C9 #14 0.000 C10 #15 0.000 N11 #16 0.500 C12 #17 0.000 C13 #18 0.000 H3 #19 0.000 H91 #20 0.000 H92 #21 0.000 H93 #22 0.000 H101 #23 0.000 H102 #24 0.000 H103 #25 0.000 H121 #26 0.000 H122 #27 0.000 H123 #28 0.000 H131 #29 0.000 H132 #30 0.000 H133 #31 0.000 +model DESWUT RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C2 #2 63 N3 #3 66 C4 #4 64 C5 #5 63 N6 #6 40 C7 #7 3 O8 #8 7 O9 #9 6 C10 #10 1 C11 #11 1 H61 #12 28 H62 #13 28 H101 #14 5 H102 #15 5 H111 #16 5 H112 #17 5 H113 #18 5 H2 #19 5 + # symb S1 #1 STHI C2 #2 C5A N3 #3 N5B C4 #4 C5B C5 #5 C5A N6 #6 NC=C C7 #7 COO O8 #8 O=CO O9 #9 OC=O C10 #10 CR C11 #11 CR H61 #12 HNCC H62 #13 HNCC H101 #14 HC H102 #15 HC H111 #16 HC H112 #17 HC H113 #18 HC H2 #19 HC + # char S1 #1 -0.080 C2 #2 0.228 N3 #3 -0.565 C4 #4 0.141 C5 #5 0.124 N6 #6 -0.884 C7 #7 0.806 O8 #8 -0.570 O9 #9 -0.430 C10 #10 0.280 C11 #11 0.000 H61 #12 0.400 H62 #13 0.400 H101 #14 0.000 H102 #15 0.000 H111 #16 0.000 H112 #17 0.000 H113 #18 0.000 H2 #19 0.150 + # fchar S1 #1 0.000 C2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C5 #5 0.000 N6 #6 0.000 C7 #7 0.000 O8 #8 0.000 O9 #9 0.000 C10 #10 0.000 C11 #11 0.000 H61 #12 0.000 H62 #13 0.000 H101 #14 0.000 H102 #15 0.000 H111 #16 0.000 H112 #17 0.000 H113 #18 0.000 H2 #19 0.000 +model DESYOP + # ty N11 #1 42 N21 #2 40 C11 #3 4 C21 #4 2 C31 #5 2 H211 #6 28 H221 #7 28 H311 #8 5 H321 #9 5 + # symb N11 #1 NSP N21 #2 NC=C C11 #3 CSP C21 #4 C=C C31 #5 C=C H211 #6 HNCC H221 #7 HNCC H311 #8 HC H321 #9 HC + # char N11 #1 -0.557 N21 #2 -0.900 C11 #3 0.492 C21 #4 0.165 C31 #5 -0.300 H211 #6 0.400 H221 #7 0.400 H311 #8 0.150 H321 #9 0.150 + # fchar N11 #1 0.000 N21 #2 0.000 C11 #3 0.000 C21 #4 0.000 C31 #5 0.000 H211 #6 0.000 H221 #7 0.000 H311 #8 0.000 H321 #9 0.000 +model DEWHOC RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 6 PI PAIR ON O OR S 7 SUBRING 2 has 4 PI electrons SUBRING 3 has 6 PI electrons SUBRING 3 IS AROMATIC + # ty N1 #1 40 N2 #2 9 O1 #3 6 O2 #4 7 O3 #5 7 O4 #6 6 O5 #7 6 C1 #8 3 C2 #9 3 C3 #10 3 C4 #11 37 C5 #12 37 C6 #13 37 C7 #14 1 C8 #15 37 C9 #16 37 C10 #17 37 C11 #18 1 C12 #19 1 H1 #20 24 H5 #21 5 H71 #22 5 H72 #23 5 H9 #24 5 H111 #25 5 H112 #26 5 H121 #27 5 H122 #28 5 H123 #29 5 + # symb N1 #1 NC=C N2 #2 N=C O1 #3 OC=O O2 #4 O=CO O3 #5 O=CR O4 #6 OC=C O5 #7 OC=C C1 #8 COO C2 #9 C=N C3 #10 C=OR C4 #11 CB C5 #12 CB C6 #13 CB C7 #14 CR C8 #15 CB C9 #16 CB C10 #17 CB C11 #18 CR C12 #19 CR H1 #20 HOCO H5 #21 HC H71 #22 HC H72 #23 HC H9 #24 HC H111 #25 HC H112 #26 HC H121 #27 HC H122 #28 HC H123 #29 HC + # char N1 #1 -0.427 N2 #2 -0.492 O1 #3 -0.650 O2 #4 -0.570 O3 #5 -0.570 O4 #6 -0.363 O5 #7 -0.363 C1 #8 0.720 C2 #9 0.450 C3 #10 0.484 C4 #11 0.086 C5 #12 -0.150 C6 #13 0.083 C7 #14 0.560 C8 #15 0.083 C9 #16 -0.150 C10 #17 0.100 C11 #18 0.369 C12 #19 0.000 H1 #20 0.500 H5 #21 0.150 H71 #22 0.000 H72 #23 0.000 H9 #24 0.150 H111 #25 0.000 H112 #26 0.000 H121 #27 0.000 H122 #28 0.000 H123 #29 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 O4 #6 0.000 O5 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 C12 #19 0.000 H1 #20 0.000 H5 #21 0.000 H71 #22 0.000 H72 #23 0.000 H9 #24 0.000 H111 #25 0.000 H112 #26 0.000 H121 #27 0.000 H122 #28 0.000 H123 #29 0.000 +model DEWJEU RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 PI PAIR ON SP2-N 21 SUBRING 1 has 8 PI electrons + # ty SI1 #1 19 N1 #2 40 C1 #3 2 C2 #4 2 C3 #5 1 C4 #6 1 C5 #7 1 H1 #8 5 H2 #9 5 H31 #10 5 H32 #11 5 H33 #12 5 H41 #13 5 H42 #14 5 H43 #15 5 H51 #16 5 H52 #17 5 H53 #18 5 C2B #19 2 C1B #20 2 N1B #21 40 H2B #22 5 H1B #23 5 SI1B #24 19 C3B #25 1 C4B #26 1 C5B #27 1 H31B #28 5 H32B #29 5 H33B #30 5 H41B #31 5 H42B #32 5 H43B #33 5 H51B #34 5 H52B #35 5 H53B #36 5 + # symb SI1 #1 SI N1 #2 NC=C C1 #3 C=C C2 #4 C=C C3 #5 CR C4 #6 CR C5 #7 CR H1 #8 HC H2 #9 HC H31 #10 HC H32 #11 HC H33 #12 HC H41 #13 HC H42 #14 HC H43 #15 HC H51 #16 HC H52 #17 HC H53 #18 HC C2B #19 C=C C1B #20 C=C N1B #21 NC=C H2B #22 HC H1B #23 HC SI1B #24 SI C3B #25 CR C4B #26 CR C5B #27 CR H31B #28 HC H32B #29 HC H33B #30 HC H41B #31 HC H42B #32 HC H43B #33 HC H51B #34 HC H52B #35 HC H53B #36 HC + # char SI1 #1 0.600 N1 #2 -0.558 C1 #3 -0.050 C2 #4 -0.050 C3 #5 -0.081 C4 #6 -0.081 C5 #7 -0.081 H1 #8 0.150 H2 #9 0.150 H31 #10 0.000 H32 #11 0.000 H33 #12 0.000 H41 #13 0.000 H42 #14 0.000 H43 #15 0.000 H51 #16 0.000 H52 #17 0.000 H53 #18 0.000 C2B #19 -0.050 C1B #20 -0.050 N1B #21 -0.558 H2B #22 0.150 H1B #23 0.150 SI1B #24 0.600 C3B #25 -0.081 C4B #26 -0.081 C5B #27 -0.081 H31B #28 0.000 H32B #29 0.000 H33B #30 0.000 H41B #31 0.000 H42B #32 0.000 H43B #33 0.000 H51B #34 0.000 H52B #35 0.000 H53B #36 0.000 + # fchar SI1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 H1 #8 0.000 H2 #9 0.000 H31 #10 0.000 H32 #11 0.000 H33 #12 0.000 H41 #13 0.000 H42 #14 0.000 H43 #15 0.000 H51 #16 0.000 H52 #17 0.000 H53 #18 0.000 C2B #19 0.000 C1B #20 0.000 N1B #21 0.000 H2B #22 0.000 H1B #23 0.000 SI1B #24 0.000 C3B #25 0.000 C4B #26 0.000 C5B #27 0.000 H31B #28 0.000 H32B #29 0.000 H33B #30 0.000 H41B #31 0.000 H42B #32 0.000 H43B #33 0.000 H51B #34 0.000 H52B #35 0.000 H53B #36 0.000 +model DEXCIS RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 7 C1 #2 3 C2 #3 20 C3 #4 20 N1 #5 10 C4 #6 1 C5 #7 1 O2 #8 6 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 C10 #13 37 C11 #14 37 H2 #15 5 H3 #16 5 H1 #17 28 H4 #18 5 H15 #19 5 H25 #20 5 H35 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H5 #27 21 + # symb O1 #1 O=CN C1 #2 C=ON C2 #3 CR4R C3 #4 CR4R N1 #5 NC=O C4 #6 CR C5 #7 CR O2 #8 OR C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB C10 #13 CB C11 #14 CB H2 #15 HC H3 #16 HC H1 #17 HNCO H4 #18 HC H15 #19 HC H25 #20 HC H35 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H5 #27 HOR + # char O1 #1 -0.570 C1 #2 0.577 C2 #3 0.053 C3 #4 0.333 N1 #5 -0.655 C4 #6 0.280 C5 #7 0.000 O2 #8 -0.680 C6 #9 -0.108 C7 #10 -0.150 C8 #11 -0.150 C9 #12 -0.150 C10 #13 -0.150 C11 #14 -0.150 H2 #15 0.000 H3 #16 0.000 H1 #17 0.370 H4 #18 0.000 H15 #19 0.000 H25 #20 0.000 H35 #21 0.000 H7 #22 0.150 H8 #23 0.150 H9 #24 0.150 H10 #25 0.150 H11 #26 0.150 H5 #27 0.400 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 N1 #5 0.000 C4 #6 0.000 C5 #7 0.000 O2 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 H2 #15 0.000 H3 #16 0.000 H1 #17 0.000 H4 #18 0.000 H15 #19 0.000 H25 #20 0.000 H35 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H5 #27 0.000 +model DEXGIW RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 6 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 6 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty N1 #1 10 C2 #2 3 O2 #3 7 C3 #4 1 C4 #5 1 N5 #6 39 C6 #7 63 C7 #8 64 C8 #9 64 C9 #10 63 C10 #11 3 O10 #12 7 N11 #13 10 C12 #14 3 O13 #15 7 H1 #16 28 H31 #17 5 H32 #18 5 H41 #19 5 H42 #20 5 H6 #21 5 H7 #22 5 H11 #23 28 H12 #24 5 + # symb N1 #1 NC=O C2 #2 C=ON O2 #3 O=CN C3 #4 CR C4 #5 CR N5 #6 NPYL C6 #7 C5A C7 #8 C5B C8 #9 C5B C9 #10 C5A C10 #11 C=ON O10 #12 O=CN N11 #13 NC=O C12 #14 C=ON O13 #15 O=CN H1 #16 HNCO H31 #17 HC H32 #18 HC H41 #19 HC H42 #20 HC H6 #21 HC H7 #22 HC H11 #23 HNCO H12 #24 HC + # char N1 #1 -0.494 C2 #2 0.569 O2 #3 -0.570 C3 #4 0.061 C4 #5 0.256 N5 #6 0.048 C6 #7 -0.302 C7 #8 -0.150 C8 #9 -0.086 C9 #10 -0.088 C10 #11 0.716 O10 #12 -0.570 N11 #13 -0.490 C12 #14 0.570 O13 #15 -0.570 H1 #16 0.370 H31 #17 0.000 H32 #18 0.000 H41 #19 0.000 H42 #20 0.000 H6 #21 0.150 H7 #22 0.150 H11 #23 0.370 H12 #24 0.060 + # fchar N1 #1 0.000 C2 #2 0.000 O2 #3 0.000 C3 #4 0.000 C4 #5 0.000 N5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 O10 #12 0.000 N11 #13 0.000 C12 #14 0.000 O13 #15 0.000 H1 #16 0.000 H31 #17 0.000 H32 #18 0.000 H41 #19 0.000 H42 #20 0.000 H6 #21 0.000 H7 #22 0.000 H11 #23 0.000 H12 #24 0.000 +model DEZDUH RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 1 has 0 PI electrons SUBRING 3 has 0 PI electrons + # ty F1 #1 11 F2 #2 11 F3 #3 11 F4 #4 11 F5 #5 11 F6 #6 11 C1 #7 20 C2 #8 20 C3 #9 1 C4 #10 1 C5 #11 20 C6 #12 20 C7 #13 1 C8 #14 1 H4 #15 5 H4_ #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H7_ #20 5 + # symb F1 #1 F F2 #2 F F3 #3 F F4 #4 F F5 #5 F F6 #6 F C1 #7 CR4R C2 #8 CR4R C3 #9 CR C4 #10 CR C5 #11 CR4R C6 #12 CR4R C7 #13 CR C8 #14 CR H4 #15 HC H4_ #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H7_ #20 HC + # char F1 #1 -0.298 F2 #2 -0.298 F3 #3 -0.340 F4 #4 -0.340 F5 #5 -0.340 F6 #6 -0.340 C1 #7 0.298 C2 #8 0.298 C3 #9 0.680 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.680 H4 #15 0.000 H4_ #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H7_ #20 0.000 + # fchar F1 #1 0.000 F2 #2 0.000 F3 #3 0.000 F4 #4 0.000 F5 #5 0.000 F6 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 H4 #15 0.000 H4_ #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H7_ #20 0.000 +model DEZNIF RING 1 HAS 2 SUBRINGS + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 9 C2 #5 3 C3 #6 1 C4 #7 2 C5 #8 2 C6 #9 2 C7 #10 2 C8 #11 1 C9 #12 2 C10 #13 2 C11 #14 1 C12 #15 1 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H9 #20 5 H10 #21 5 H111 #22 5 H112 #23 5 H121 #24 5 H122 #25 5 H123 #26 5 H1 #27 5 H2 #28 5 + # symb S1 #1 SO2 O1 #2 O2S O2 #3 O2S N1 #4 N=C C2 #5 C=N C3 #6 CR C4 #7 C=C C5 #8 C=C C6 #9 C=C C7 #10 C=C C8 #11 CR C9 #12 C=C C10 #13 C=C C11 #14 CR C12 #15 CR H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H9 #20 HC H10 #21 HC H111 #22 HC H112 #23 HC H121 #24 HC H122 #25 HC H123 #26 HC H1 #27 HC H2 #28 HC + # char S1 #1 1.172 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.621 C2 #5 0.412 C3 #6 0.199 C4 #7 -0.288 C5 #8 -0.150 C6 #9 -0.150 C7 #10 -0.288 C8 #11 0.276 C9 #12 -0.288 C10 #13 0.021 C11 #14 0.000 C12 #15 0.105 H4 #16 0.150 H5 #17 0.150 H6 #18 0.150 H7 #19 0.150 H9 #20 0.150 H10 #21 0.150 H111 #22 0.000 H112 #23 0.000 H121 #24 0.000 H122 #25 0.000 H123 #26 0.000 H1 #27 0.000 H2 #28 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H9 #20 0.000 H10 #21 0.000 H111 #22 0.000 H112 #23 0.000 H121 #24 0.000 H122 #25 0.000 H123 #26 0.000 H1 #27 0.000 H2 #28 0.000 +model DEZXEL RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON O OR S 9 SUBRING 1 has 4 PI electrons + # ty N1 #1 10 C2 #2 2 C3 #3 2 C4 #4 2 C5 #5 2 C6 #6 2 C7 #7 2 C8 #8 1 O9 #9 6 C10 #10 3 O11 #11 7 CL12 #12 12 CL13 #13 12 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 + # symb N1 #1 NC=O C2 #2 C=C C3 #3 C=C C4 #4 C=C C5 #5 C=C C6 #6 C=C C7 #7 C=C C8 #8 CR O9 #9 OC=O C10 #10 C=ON O11 #11 O=CN CL12 #12 CL CL13 #13 CL H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC + # char N1 #1 -0.278 C2 #2 0.249 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 0.140 C7 #7 -0.029 C8 #8 0.418 O9 #9 -0.430 C10 #10 0.780 O11 #11 -0.570 CL12 #12 -0.140 CL13 #13 -0.140 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.000 H5 #18 0.000 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 O9 #9 0.000 C10 #10 0.000 O11 #11 0.000 CL12 #12 0.000 CL13 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 +model DHOADS01 RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 15 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 16 SUBRING 1 has 4 PI electrons + # ty C1 #1 37 C2 #2 63 C3 #3 64 C4 #4 37 C5 #5 63 C6 #6 1 C7 #7 2 C8 #8 2 C9 #9 1 C10 #10 1 N1 #11 38 N2 #12 38 N3 #13 40 N4 #14 66 N5 #15 39 O1 #16 6 O2 #17 6 H1 #18 5 H2 #19 28 H3 #20 28 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 21 + # symb C1 #1 CB C2 #2 C5A C3 #3 C5B C4 #4 CB C5 #5 C5A C6 #6 CR C7 #7 C=C C8 #8 C=C C9 #9 CR C10 #10 CR N1 #11 NPYD N2 #12 NPYD N3 #13 NC=N N4 #14 N5B N5 #15 NPYL O1 #16 OR O2 #17 OR H1 #18 HC H2 #19 HNCN H3 #20 HNCN H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HOR + # char C1 #1 0.470 C2 #2 0.105 C3 #3 0.227 C4 #4 0.410 C5 #5 0.037 C6 #6 0.674 C7 #7 -0.288 C8 #8 -0.288 C9 #9 0.418 C10 #10 0.280 N1 #11 -0.620 N2 #12 -0.567 N3 #13 -0.900 N4 #14 -0.565 N5 #15 0.048 O1 #16 -0.560 O2 #17 -0.680 H1 #18 0.150 H2 #19 0.400 H3 #20 0.400 H4 #21 0.150 H5 #22 0.000 H6 #23 0.150 H7 #24 0.150 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.400 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 N1 #11 0.000 N2 #12 0.000 N3 #13 0.000 N4 #14 0.000 N5 #15 0.000 O1 #16 0.000 O2 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 +model DICKIJ RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC SUBRING 3 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 15 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C2 #2 63 C3 #3 64 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 64 C13 #13 63 C14 #14 1 N15 #15 81 C16 #16 80 N17 #17 81 C18 #18 78 C19 #19 78 H2 #20 5 H3 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H141 #27 5 H142 #28 5 H16 #29 5 H17 #30 36 H18 #31 5 H19 #32 5 + # symb S1 #1 STHI C2 #2 C5A C3 #3 C5B C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 C5B C13 #13 C5A C14 #14 CR N15 #15 NIM+ C16 #16 CIM+ N17 #17 NIM+ C18 #18 C5 C19 #19 C5 H2 #20 HC H3 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H141 #27 HC H142 #28 HC H16 #29 HC H17 #30 HIM+ H18 #31 HC H19 #32 HC + # char S1 #1 -0.080 C2 #2 -0.110 C3 #3 -0.150 C4 #4 -0.143 C5 #5 -0.150 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.150 C9 #9 -0.150 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.040 C14 #14 0.657 N15 #15 -0.764 C16 #16 0.650 N17 #17 -0.700 C18 #18 0.200 C19 #19 0.200 H2 #20 0.150 H3 #21 0.150 H5 #22 0.150 H6 #23 0.150 H7 #24 0.150 H8 #25 0.150 H9 #26 0.150 H141 #27 0.000 H142 #28 0.000 H16 #29 0.150 H17 #30 0.450 H18 #31 0.150 H19 #32 0.150 + # fchar S1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 N15 #15 0.500 C16 #16 0.000 N17 #17 0.500 C18 #18 0.000 C19 #19 0.000 H2 #20 0.000 H3 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H141 #27 0.000 H142 #28 0.000 H16 #29 0.000 H17 #30 0.000 H18 #31 0.000 H19 #32 0.000 +model DICPUA RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 11 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 64 C2 #2 64 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 N1 #9 82 N2 #10 65 O1 #11 59 O2 #12 32 H2 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 + # symb C1 #1 C5B C2 #2 C5B C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB N1 #9 N5AX N2 #10 N5A O1 #11 OFUR O2 #12 OXN H2 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC + # char C1 #1 -0.136 C2 #2 0.139 C3 #3 0.054 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.150 N1 #9 0.953 N2 #10 -0.410 O1 #11 -0.117 O2 #12 -0.633 H2 #13 0.150 H4 #14 0.150 H5 #15 0.150 H6 #16 0.150 H7 #17 0.150 H8 #18 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 N1 #9 0.000 N2 #10 0.000 O1 #11 0.000 O2 #12 0.000 H2 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 +model DICRAI RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 11 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 64 C2 #2 64 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 N1 #9 65 N2 #10 82 O1 #11 59 O2 #12 32 H2 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 + # symb C1 #1 C5B C2 #2 C5B C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB N1 #9 N5A N2 #10 N5AX O1 #11 OFUR O2 #12 OXN H2 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC + # char C1 #1 0.235 C2 #2 -0.232 C3 #3 0.054 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.150 N1 #9 -0.410 N2 #10 0.953 O1 #11 -0.117 O2 #12 -0.633 H2 #13 0.150 H4 #14 0.150 H5 #15 0.150 H6 #16 0.150 H7 #17 0.150 H8 #18 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 N1 #9 0.000 N2 #10 0.000 O1 #11 0.000 O2 #12 0.000 H2 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 +model DICYIX + # ty SI1 #1 19 N1 #2 8 C1 #3 1 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 1 H11 #8 5 H12 #9 5 H13 #10 5 H21 #11 5 H22 #12 5 H23 #13 5 H31 #14 5 H32 #15 5 H33 #16 5 H41 #17 5 H42 #18 5 H43 #19 5 H51 #20 5 H52 #21 5 H53 #22 5 + # symb SI1 #1 SI N1 #2 NR C1 #3 CR C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 CR H11 #8 HC H12 #9 HC H13 #10 HC H21 #11 HC H22 #12 HC H23 #13 HC H31 #14 HC H32 #15 HC H33 #16 HC H41 #17 HC H42 #18 HC H43 #19 HC H51 #20 HC H52 #21 HC H53 #22 HC + # char SI1 #1 0.589 N1 #2 -0.887 C1 #3 -0.081 C2 #4 -0.081 C3 #5 -0.081 C4 #6 0.270 C5 #7 0.270 H11 #8 0.000 H12 #9 0.000 H13 #10 0.000 H21 #11 0.000 H22 #12 0.000 H23 #13 0.000 H31 #14 0.000 H32 #15 0.000 H33 #16 0.000 H41 #17 0.000 H42 #18 0.000 H43 #19 0.000 H51 #20 0.000 H52 #21 0.000 H53 #22 0.000 + # fchar SI1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 H11 #8 0.000 H12 #9 0.000 H13 #10 0.000 H21 #11 0.000 H22 #12 0.000 H23 #13 0.000 H31 #14 0.000 H32 #15 0.000 H33 #16 0.000 H41 #17 0.000 H42 #18 0.000 H43 #19 0.000 H51 #20 0.000 H52 #21 0.000 H53 #22 0.000 +model DICYOD + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 CL4 #4 12 O1 #5 7 O2 #6 7 N1 #7 9 N2 #8 40 C1 #9 3 C2 #10 1 C3 #11 3 C4 #12 3 C5 #13 1 C6 #14 1 C7 #15 1 C8 #16 1 H51 #17 5 H52 #18 5 H61 #19 5 H62 #20 5 H63 #21 5 H71 #22 5 H72 #23 5 H81 #24 5 H82 #25 5 H83 #26 5 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL CL4 #4 CL O1 #5 O=C O2 #6 O=CN N1 #7 N=C N2 #8 NC=N C1 #9 C=O C2 #10 CR C3 #11 C=ON C4 #12 C=N C5 #13 CR C6 #14 CR C7 #15 CR C8 #16 CR H51 #17 HC H52 #18 HC H61 #19 HC H62 #20 HC H63 #21 HC H71 #22 HC H72 #23 HC H81 #24 HC H82 #25 HC H83 #26 HC + # char CL1 #1 -0.209 CL2 #2 -0.290 CL3 #3 -0.290 CL4 #4 -0.209 O1 #5 -0.570 O2 #6 -0.570 N1 #7 -0.661 N2 #8 -0.788 C1 #9 0.718 C2 #10 0.702 C3 #11 0.720 C4 #12 0.709 C5 #13 0.369 C6 #14 0.000 C7 #15 0.369 C8 #16 0.000 H51 #17 0.000 H52 #18 0.000 H61 #19 0.000 H62 #20 0.000 H63 #21 0.000 H71 #22 0.000 H72 #23 0.000 H81 #24 0.000 H82 #25 0.000 H83 #26 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 CL4 #4 0.000 O1 #5 0.000 O2 #6 0.000 N1 #7 0.000 N2 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 H51 #17 0.000 H52 #18 0.000 H61 #19 0.000 H62 #20 0.000 H63 #21 0.000 H71 #22 0.000 H72 #23 0.000 H81 #24 0.000 H82 #25 0.000 H83 #26 0.000 +model DIDYOE RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons + # ty O1 #1 6 O2 #2 6 O3 #3 6 O4 #4 7 O5 #5 6 N2 #6 9 C3 #7 3 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 3 C9 #13 1 H2 #14 21 H3 #15 21 H31 #16 5 H41 #17 5 H42 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H91 #22 5 H92 #23 5 H93 #24 5 + # symb O1 #1 OR O2 #2 OR O3 #3 OR O4 #4 O=CO O5 #5 OC=O N2 #6 N=C C3 #7 C=N C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 COO C9 #13 CR H2 #14 HOR H3 #15 HOR H31 #16 HC H41 #17 HC H42 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H91 #22 HC H92 #23 HC H93 #24 HC + # char O1 #1 -0.217 O2 #2 -0.680 O3 #3 -0.680 O4 #4 -0.570 O5 #5 -0.430 N2 #6 -0.513 C3 #7 0.329 C4 #8 0.061 C5 #9 0.280 C6 #10 0.280 C7 #11 0.341 C8 #12 0.659 C9 #13 0.280 H2 #14 0.400 H3 #15 0.400 H31 #16 0.060 H41 #17 0.000 H42 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H91 #22 0.000 H92 #23 0.000 H93 #24 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 N2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 H2 #14 0.000 H3 #15 0.000 H31 #16 0.000 H41 #17 0.000 H42 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H91 #22 0.000 H92 #23 0.000 H93 #24 0.000 +model DIFSIU RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 17 O1 #2 7 O2 #3 32 O3 #4 32 O4 #5 32 O5 #6 32 N1 #7 45 N2 #8 45 C1 #9 37 C2 #10 37 C3 #11 37 C4 #12 37 C5 #13 37 C6 #14 37 C7 #15 37 C8 #16 37 C9 #17 37 C10 #18 37 C11 #19 37 C12 #20 37 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 + # symb S1 #1 S=O O1 #2 O=S O2 #3 O2N O3 #4 O2N O4 #5 O2N O5 #6 O2N N1 #7 NO2 N2 #8 NO2 C1 #9 CB C2 #10 CB C3 #11 CB C4 #12 CB C5 #13 CB C6 #14 CB C7 #15 CB C8 #16 CB C9 #17 CB C10 #18 CB C11 #19 CB C12 #20 CB H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC + # char S1 #1 0.372 O1 #2 -0.500 O2 #3 -0.520 O3 #4 -0.520 O4 #5 -0.520 O5 #6 -0.520 N1 #7 0.907 N2 #8 0.907 C1 #9 0.064 C2 #10 0.133 C3 #11 -0.150 C4 #12 -0.150 C5 #13 -0.150 C6 #14 -0.150 C7 #15 0.064 C8 #16 0.133 C9 #17 -0.150 C10 #18 -0.150 C11 #19 -0.150 C12 #20 -0.150 H3 #21 0.150 H4 #22 0.150 H5 #23 0.150 H6 #24 0.150 H9 #25 0.150 H10 #26 0.150 H11 #27 0.150 H12 #28 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 O5 #6 0.000 N1 #7 0.000 N2 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 C12 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 +model DIGCOL + # ty S1 #1 72 S2 #2 72 N1 #3 10 C1 #4 41 H1 #5 28 N1E #6 10 C1E #7 41 H1E #8 28 S1E #9 72 S2E #10 72 + # symb S1 #1 S2CM S2 #2 S2CM N1 #3 NC=S C1 #4 CS2M H1 #5 HNCS N1E #6 NC=S C1E #7 CS2M H1E #8 HNCS S1E #9 S2CM S2E #10 S2CM + # char S1 #1 -0.750 S2 #2 -0.750 N1 #3 -0.666 C1 #4 0.796 H1 #5 0.370 N1E #6 -0.666 C1E #7 0.796 H1E #8 0.370 S1E #9 -0.750 S2E #10 -0.750 + # fchar S1 #1 -0.500 S2 #2 -0.500 N1 #3 0.000 C1 #4 0.000 H1 #5 0.000 N1E #6 0.000 C1E #7 0.000 H1E #8 0.000 S1E #9 -0.500 S2E #10 -0.500 +model DIGCUR + # ty S11 #1 16 S21 #2 15 S31 #3 15 C11 #4 1 C21 #5 3 C31 #6 1 H11 #7 5 H21 #8 5 H31 #9 5 H41 #10 5 H51 #11 5 C31A #12 1 S31A #13 15 H41A #14 5 H51A #15 5 C21A #16 3 S11A #17 16 S21A #18 15 C11A #19 1 H11A #20 5 H21A #21 5 H31A #22 5 + # symb S11 #1 S=C S21 #2 S S31 #3 S C11 #4 CR C21 #5 CSS C31 #6 CR H11 #7 HC H21 #8 HC H31 #9 HC H41 #10 HC H51 #11 HC C31A #12 CR S31A #13 S H41A #14 HC H51A #15 HC C21A #16 CSS S11A #17 S=C S21A #18 S C11A #19 CR H11A #20 HC H21A #21 HC H31A #22 HC + # char S11 #1 -0.380 S21 #2 -0.371 S31 #3 -0.371 C11 #4 0.230 C21 #5 0.662 C31 #6 0.230 H11 #7 0.000 H21 #8 0.000 H31 #9 0.000 H41 #10 0.000 H51 #11 0.000 C31A #12 0.230 S31A #13 -0.371 H41A #14 0.000 H51A #15 0.000 C21A #16 0.662 S11A #17 -0.380 S21A #18 -0.371 C11A #19 0.230 H11A #20 0.000 H21A #21 0.000 H31A #22 0.000 + # fchar S11 #1 0.000 S21 #2 0.000 S31 #3 0.000 C11 #4 0.000 C21 #5 0.000 C31 #6 0.000 H11 #7 0.000 H21 #8 0.000 H31 #9 0.000 H41 #10 0.000 H51 #11 0.000 C31A #12 0.000 S31A #13 0.000 H41A #14 0.000 H51A #15 0.000 C21A #16 0.000 S11A #17 0.000 S21A #18 0.000 C11A #19 0.000 H11A #20 0.000 H21A #21 0.000 H31A #22 0.000 +model DIGLEK RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 3 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 7 O2 #2 6 O11 #3 7 O13 #4 6 O14 #5 6 O15 #6 32 O16 #7 32 N1 #8 10 N2 #9 45 C1 #10 3 C2 #11 20 C3 #12 20 C4 #13 1 C5 #14 37 C6 #15 37 C7 #16 37 C8 #17 37 C9 #18 37 C10 #19 37 C11 #20 3 C12 #21 37 C13 #22 37 C14 #23 37 C15 #24 37 C16 #25 37 C17 #26 37 H2 #27 5 H3 #28 5 H41 #29 5 H42 #30 5 H6 #31 5 H7 #32 5 H9 #33 5 H10 #34 5 H15 #35 5 H16 #36 5 H17 #37 5 H1 #38 28 H14 #39 29 H13 #40 29 + # symb O1 #1 O=CO O2 #2 OC=O O11 #3 O=CN O13 #4 OC=C O14 #5 OC=C O15 #6 O2N O16 #7 O2N N1 #8 NC=O N2 #9 NO2 C1 #10 COO C2 #11 CR4R C3 #12 CR4R C4 #13 CR C5 #14 CB C6 #15 CB C7 #16 CB C8 #17 CB C9 #18 CB C10 #19 CB C11 #20 C=ON C12 #21 CB C13 #22 CB C14 #23 CB C15 #24 CB C16 #25 CB C17 #26 CB H2 #27 HC H3 #28 HC H41 #29 HC H42 #30 HC H6 #31 HC H7 #32 HC H9 #33 HC H10 #34 HC H15 #35 HC H16 #36 HC H17 #37 HC H1 #38 HNCO H14 #39 HOCC H13 #40 HOCC + # char O1 #1 -0.570 O2 #2 -0.408 O11 #3 -0.570 O13 #4 -0.532 O14 #5 -0.532 O15 #6 -0.520 O16 #7 -0.520 N1 #8 -0.655 N2 #9 0.907 C1 #10 0.667 C2 #11 0.278 C3 #12 0.258 C4 #13 0.143 C5 #14 -0.143 C6 #15 -0.150 C7 #16 -0.150 C8 #17 0.133 C9 #18 -0.150 C10 #19 -0.150 C11 #20 0.544 C12 #21 0.086 C13 #22 0.083 C14 #23 0.083 C15 #24 -0.150 C16 #25 -0.150 C17 #26 -0.150 H2 #27 0.000 H3 #28 0.000 H41 #29 0.000 H42 #30 0.000 H6 #31 0.150 H7 #32 0.150 H9 #33 0.150 H10 #34 0.150 H15 #35 0.150 H16 #36 0.150 H17 #37 0.150 H1 #38 0.370 H14 #39 0.450 H13 #40 0.450 + # fchar O1 #1 0.000 O2 #2 0.000 O11 #3 0.000 O13 #4 0.000 O14 #5 0.000 O15 #6 0.000 O16 #7 0.000 N1 #8 0.000 N2 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 C8 #17 0.000 C9 #18 0.000 C10 #19 0.000 C11 #20 0.000 C12 #21 0.000 C13 #22 0.000 C14 #23 0.000 C15 #24 0.000 C16 #25 0.000 C17 #26 0.000 H2 #27 0.000 H3 #28 0.000 H41 #29 0.000 H42 #30 0.000 H6 #31 0.000 H7 #32 0.000 H9 #33 0.000 H10 #34 0.000 H15 #35 0.000 H16 #36 0.000 H17 #37 0.000 H1 #38 0.000 H14 #39 0.000 H13 #40 0.000 +model DIHTET RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC + # ty O4 #1 7 O7 #2 7 N1 #3 39 N2 #4 65 C3 #5 64 C4 #6 3 C5 #7 2 C6 #8 2 C7 #9 3 C8 #10 63 C9 #11 64 C10 #12 1 C11 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 + # symb O4 #1 O=CR O7 #2 O=CR N1 #3 NPYL N2 #4 N5A C3 #5 C5B C4 #6 C=OR C5 #7 C=C C6 #8 C=C C7 #9 C=OR C8 #10 C5A C9 #11 C5B C10 #12 CR C11 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC + # char O4 #1 -0.570 O7 #2 -0.570 N1 #3 0.314 N2 #4 -0.707 C3 #5 0.139 C4 #6 0.642 C5 #7 -0.136 C6 #8 -0.124 C7 #9 0.641 C8 #10 -0.237 C9 #11 -0.086 C10 #12 0.256 C11 #13 0.138 H1 #14 0.150 H2 #15 0.150 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 + # fchar O4 #1 0.000 O7 #2 0.000 N1 #3 0.000 N2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 +model DIKGAF RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 S1 #4 18 O1 #5 7 O2 #6 32 O3 #7 32 N1 #8 43 C1 #9 20 C2 #10 20 C3 #11 1 C4 #12 1 C5 #13 1 C6 #14 3 C7 #15 1 H1 #16 5 H2 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H3 #24 5 H10 #25 5 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL S1 #4 SO2N O1 #5 O=CN O2 #6 O2S O3 #7 O2S N1 #8 NSO2 C1 #9 CR4R C2 #10 CR4R C3 #11 CR C4 #12 CR C5 #13 CR C6 #14 C=ON C7 #15 CR H1 #16 HC H2 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H3 #24 HC H10 #25 HC + # char CL1 #1 -0.290 CL2 #2 -0.290 CL3 #3 -0.290 S1 #4 1.339 O1 #5 -0.570 O2 #6 -0.650 O3 #7 -0.650 N1 #8 -0.681 C1 #9 0.099 C2 #10 0.307 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.745 C7 #15 0.931 H1 #16 0.000 H2 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H3 #24 0.000 H10 #25 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 S1 #4 0.000 O1 #5 0.000 O2 #6 0.000 O3 #7 0.000 N1 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 H1 #16 0.000 H2 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H3 #24 0.000 H10 #25 0.000 +model DIKGEJ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 5 SUBRING 1 has 4 PI electrons + # ty S1 #1 18 CL1 #2 12 CL2 #3 12 CL3 #4 12 O1 #5 6 O2 #6 32 O3 #7 32 N1 #8 9 C1 #9 1 C2 #10 3 C3 #11 1 C4 #12 1 C5 #13 1 C6 #14 1 C7 #15 1 H71 #16 5 H51 #17 5 H61 #18 5 H52 #19 5 H53 #20 5 H62 #21 5 H72 #22 5 H63 #23 5 H73 #24 5 H4 #25 5 + # symb S1 #1 SO2N CL1 #2 CL CL2 #3 CL CL3 #4 CL O1 #5 OC=N O2 #6 O2S O3 #7 O2S N1 #8 N=C C1 #9 CR C2 #10 C=N C3 #11 CR C4 #12 CR C5 #13 CR C6 #14 CR C7 #15 CR H71 #16 HC H51 #17 HC H61 #18 HC H52 #19 HC H53 #20 HC H62 #21 HC H72 #22 HC H63 #23 HC H73 #24 HC H4 #25 HC + # char S1 #1 1.383 CL1 #2 -0.290 CL2 #3 -0.290 CL3 #4 -0.290 O1 #5 -0.430 O2 #6 -0.650 O3 #7 -0.650 N1 #8 -0.638 C1 #9 0.931 C2 #10 0.539 C3 #11 0.280 C4 #12 0.105 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 H71 #16 0.000 H51 #17 0.000 H61 #18 0.000 H52 #19 0.000 H53 #20 0.000 H62 #21 0.000 H72 #22 0.000 H63 #23 0.000 H73 #24 0.000 H4 #25 0.000 + # fchar S1 #1 0.000 CL1 #2 0.000 CL2 #3 0.000 CL3 #4 0.000 O1 #5 0.000 O2 #6 0.000 O3 #7 0.000 N1 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 H71 #16 0.000 H51 #17 0.000 H61 #18 0.000 H52 #19 0.000 H53 #20 0.000 H62 #21 0.000 H72 #22 0.000 H63 #23 0.000 H73 #24 0.000 H4 #25 0.000 +model DIKWID RING 1 HAS 4 SUBRINGS SUBRING 1 has 0 PI electrons PI PAIR ON SP2-N 14 PI PAIR ON SP2-N 13 SUBRING 2 has 4 PI electrons PI PAIR ON SP2-N 14 PI PAIR ON SP2-N 15 PI PAIR ON O OR S 16 SUBRING 3 has 6 PI electrons SUBRING 4 has 0 PI electrons + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 1 C10 #10 1 C11 #11 1 C12 #12 1 N1 #13 8 N2 #14 8 N3 #15 8 O1 #16 6 O2 #17 6 H12 #18 5 H22 #19 5 H13 #20 5 H23 #21 5 H14 #22 5 H24 #23 5 H15 #24 5 H25 #25 5 H6 #26 5 H7 #27 5 H18 #28 5 H28 #29 5 H19 #30 5 H29 #31 5 H110 #32 5 H210 #33 5 H111 #34 5 H211 #35 5 H1 #36 23 H3 #37 23 H2 #38 21 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 CR C10 #10 CR C11 #11 CR C12 #12 CR N1 #13 NR N2 #14 NR N3 #15 NR O1 #16 OR O2 #17 -O- H12 #18 HC H22 #19 HC H13 #20 HC H23 #21 HC H14 #22 HC H24 #23 HC H15 #24 HC H25 #25 HC H6 #26 HC H7 #27 HC H18 #28 HC H28 #29 HC H19 #30 HC H29 #31 HC H110 #32 HC H210 #33 HC H111 #34 HC H211 #35 HC H1 #36 HNR H3 #37 HNR H2 #38 HO + # char C1 #1 0.550 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.270 C7 #7 0.270 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.540 N1 #13 -0.900 N2 #14 -0.640 N3 #15 -0.730 O1 #16 -0.180 O2 #17 -0.300 H12 #18 0.000 H22 #19 0.000 H13 #20 0.000 H23 #21 0.000 H14 #22 0.000 H24 #23 0.000 H15 #24 0.000 H25 #25 0.000 H6 #26 0.000 H7 #27 0.000 H18 #28 0.000 H28 #29 0.000 H19 #30 0.000 H29 #31 0.000 H110 #32 0.000 H210 #33 0.000 H111 #34 0.000 H211 #35 0.000 H1 #36 0.360 H3 #37 0.360 H2 #38 0.400 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N1 #13 0.000 N2 #14 0.000 N3 #15 0.000 O1 #16 0.000 O2 #17 0.000 H12 #18 0.000 H22 #19 0.000 H13 #20 0.000 H23 #21 0.000 H14 #22 0.000 H24 #23 0.000 H15 #24 0.000 H25 #25 0.000 H6 #26 0.000 H7 #27 0.000 H18 #28 0.000 H28 #29 0.000 H19 #30 0.000 H29 #31 0.000 H110 #32 0.000 H210 #33 0.000 H111 #34 0.000 H211 #35 0.000 H1 #36 0.000 H3 #37 0.000 H2 #38 0.000 +model DIKYUR RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING SUBRING 2 has 2 PI electrons + # ty CL1 #1 12 CL2 #2 12 O1 #3 7 O2 #4 7 C1 #5 20 C2 #6 3 C3 #7 20 C4 #8 2 C5 #9 2 C6 #10 1 C7 #11 20 C8 #12 3 H3 #13 5 H5 #14 5 H61 #15 5 H62 #16 5 H7 #17 5 H8 #18 5 + # symb CL1 #1 CL CL2 #2 CL O1 #3 O=CR O2 #4 O=CR C1 #5 CR4R C2 #6 C=OR C3 #7 CR4R C4 #8 C=C C5 #9 C=C C6 #10 CR C7 #11 CR4R C8 #12 C=OR H3 #13 HC H5 #14 HC H61 #15 HC H62 #16 HC H7 #17 HC H8 #18 HC + # char CL1 #1 -0.290 CL2 #2 -0.290 O1 #3 -0.570 O2 #4 -0.570 C1 #5 0.633 C2 #6 0.464 C3 #7 0.169 C4 #8 -0.102 C5 #9 -0.288 C6 #10 0.138 C7 #11 0.000 C8 #12 0.496 H3 #13 0.000 H5 #14 0.150 H61 #15 0.000 H62 #16 0.000 H7 #17 0.000 H8 #18 0.060 + # fchar CL1 #1 0.000 CL2 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 H3 #13 0.000 H5 #14 0.000 H61 #15 0.000 H62 #16 0.000 H7 #17 0.000 H8 #18 0.000 +model DILCOQ RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty N1 #1 10 C2 #2 3 O2 #3 7 C3 #4 30 C4 #5 20 O4 #6 6 C5 #7 3 O5 #8 7 C6 #9 1 C7 #10 1 C8 #11 1 C9 #12 1 C10 #13 2 C11 #14 1 C12 #15 1 H1 #16 28 H4 #17 5 H71 #18 5 H72 #19 5 H73 #20 5 H81 #21 5 H82 #22 5 H83 #23 5 H91 #24 5 H92 #25 5 H93 #26 5 H111 #27 5 H112 #28 5 H113 #29 5 H121 #30 5 H122 #31 5 H123 #32 5 + # symb N1 #1 NC=O C2 #2 C=ON O2 #3 O=CN C3 #4 CE4R C4 #5 CR4R O4 #6 OC=O C5 #7 COO O5 #8 O=CO C6 #9 CR C7 #10 CR C8 #11 CR C9 #12 CR C10 #13 C=C C11 #14 CR C12 #15 CR H1 #16 HNCO H4 #17 HC H71 #18 HC H72 #19 HC H73 #20 HC H81 #21 HC H82 #22 HC H83 #23 HC H91 #24 HC H92 #25 HC H93 #26 HC H111 #27 HC H112 #28 HC H113 #29 HC H121 #30 HC H122 #31 HC H123 #32 HC + # char N1 #1 -0.655 C2 #2 0.701 O2 #3 -0.570 C3 #4 -0.240 C4 #5 0.621 O4 #6 -0.408 C5 #7 0.659 O5 #8 -0.570 C6 #9 0.061 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 -0.245 C11 #14 0.138 C12 #15 0.138 H1 #16 0.370 H4 #17 0.000 H71 #18 0.000 H72 #19 0.000 H73 #20 0.000 H81 #21 0.000 H82 #22 0.000 H83 #23 0.000 H91 #24 0.000 H92 #25 0.000 H93 #26 0.000 H111 #27 0.000 H112 #28 0.000 H113 #29 0.000 H121 #30 0.000 H122 #31 0.000 H123 #32 0.000 + # fchar N1 #1 0.000 C2 #2 0.000 O2 #3 0.000 C3 #4 0.000 C4 #5 0.000 O4 #6 0.000 C5 #7 0.000 O5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H4 #17 0.000 H71 #18 0.000 H72 #19 0.000 H73 #20 0.000 H81 #21 0.000 H82 #22 0.000 H83 #23 0.000 H91 #24 0.000 H92 #25 0.000 H93 #26 0.000 H111 #27 0.000 H112 #28 0.000 H113 #29 0.000 H121 #30 0.000 H122 #31 0.000 H123 #32 0.000 +model DIMYIH10 RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 19 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C2 #1 63 C3 #2 64 C4 #3 64 C5 #4 63 C6 #5 37 C7 #6 37 C8 #7 37 C9 #8 37 C10 #9 37 C11 #10 37 N1 #11 45 N2 #12 45 O1 #13 32 O2 #14 32 O3 #15 32 O4 #16 32 O5 #17 32 O6 #18 32 S1 #19 44 S2 #20 18 H4 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 + # symb C2 #1 C5A C3 #2 C5B C4 #3 C5B C5 #4 C5A C6 #5 CB C7 #6 CB C8 #7 CB C9 #8 CB C10 #9 CB C11 #10 CB N1 #11 NO2 N2 #12 NO2 O1 #13 O2N O2 #14 O2N O3 #15 O2N O4 #16 O2N O5 #17 O2S O6 #18 O2S S1 #19 STHI S2 #20 SO2 H4 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC + # char C2 #1 -0.022 C3 #2 0.079 C4 #3 -0.150 C5 #4 0.120 C6 #5 -0.009 C7 #6 -0.150 C8 #7 -0.150 C9 #8 -0.150 C10 #9 -0.150 C11 #10 -0.150 N1 #11 0.961 N2 #12 0.960 O1 #13 -0.520 O2 #14 -0.520 O3 #15 -0.520 O4 #16 -0.520 O5 #17 -0.650 O6 #18 -0.650 S1 #19 -0.080 S2 #20 1.371 H4 #21 0.150 H7 #22 0.150 H8 #23 0.150 H9 #24 0.150 H10 #25 0.150 H11 #26 0.150 + # fchar C2 #1 0.000 C3 #2 0.000 C4 #3 0.000 C5 #4 0.000 C6 #5 0.000 C7 #6 0.000 C8 #7 0.000 C9 #8 0.000 C10 #9 0.000 C11 #10 0.000 N1 #11 0.000 N2 #12 0.000 O1 #13 0.000 O2 #14 0.000 O3 #15 0.000 O4 #16 0.000 O5 #17 0.000 O6 #18 0.000 S1 #19 0.000 S2 #20 0.000 H4 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 +model DIPDAH10 RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON SP2-N 6 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 3 SUBRING 2 has 2 PI electrons PI PAIR ON SP2-N 6 SUBRING 3 has 6 PI electrons + # ty O41 #1 7 O21 #2 6 O11 #3 6 O31 #4 6 O51 #5 6 N11 #6 40 N31 #7 9 C11 #8 1 C21 #9 3 C41 #10 3 C51 #11 2 C61 #12 2 C12 #13 1 C22 #14 1 C32 #15 1 C42 #16 1 C52 #17 1 H11 #18 5 H21 #19 5 H31 #20 5 H51 #21 5 H12 #22 5 H22 #23 5 H32 #24 5 H42 #25 5 H52 #26 5 H520 #27 5 H322 #28 21 H522 #29 21 + # symb O41 #1 O=CN O21 #2 OC=N O11 #3 OR O31 #4 OR O51 #5 OR N11 #6 NC=N N31 #7 N=C C11 #8 CR C21 #9 C=N C41 #10 C=ON C51 #11 C=C C61 #12 C=C C12 #13 CR C22 #14 CR C32 #15 CR C42 #16 CR C52 #17 CR H11 #18 HC H21 #19 HC H31 #20 HC H51 #21 HC H12 #22 HC H22 #23 HC H32 #24 HC H42 #25 HC H52 #26 HC H520 #27 HC H322 #28 HOR H522 #29 HOR + # char O41 #1 -0.570 O21 #2 -0.430 O11 #3 -0.560 O31 #4 -0.680 O51 #5 -0.680 N11 #6 -0.519 N31 #7 -0.661 C11 #8 0.138 C21 #9 0.650 C41 #10 0.767 C51 #11 -0.136 C61 #12 -0.038 C12 #13 0.649 C22 #14 0.280 C32 #15 0.280 C42 #16 0.280 C52 #17 0.280 H11 #18 0.000 H21 #19 0.000 H31 #20 0.000 H51 #21 0.150 H12 #22 0.000 H22 #23 0.000 H32 #24 0.000 H42 #25 0.000 H52 #26 0.000 H520 #27 0.000 H322 #28 0.400 H522 #29 0.400 + # fchar O41 #1 0.000 O21 #2 0.000 O11 #3 0.000 O31 #4 0.000 O51 #5 0.000 N11 #6 0.000 N31 #7 0.000 C11 #8 0.000 C21 #9 0.000 C41 #10 0.000 C51 #11 0.000 C61 #12 0.000 C12 #13 0.000 C22 #14 0.000 C32 #15 0.000 C42 #16 0.000 C52 #17 0.000 H11 #18 0.000 H21 #19 0.000 H31 #20 0.000 H51 #21 0.000 H12 #22 0.000 H22 #23 0.000 H32 #24 0.000 H42 #25 0.000 H52 #26 0.000 H520 #27 0.000 H322 #28 0.000 H522 #29 0.000 +model DIPDIP10 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N7 #1 81 N8 #2 81 N9 #3 56 N10 #4 34 C13 #5 80 C14 #6 78 C15 #7 78 C16 #8 1 C17 #9 1 H5 #10 36 H6 #11 36 H7 #12 36 H8 #13 36 H9 #14 5 H10 #15 5 H11 #16 5 H14 #17 36 H15 #18 36 H16 #19 36 H17 #20 5 H18 #21 5 + # symb N7 #1 NIM+ N8 #2 NIM+ N9 #3 NGD+ N10 #4 NR+ C13 #5 CIM+ C14 #6 C5 C15 #7 C5 C16 #8 CR C17 #9 CR H5 #10 HIM+ H6 #11 HIM+ H7 #12 HGD+ H8 #13 HGD+ H9 #14 HC H10 #15 HC H11 #16 HC H14 #17 HNR+ H15 #18 HNR+ H16 #19 HNR+ H17 #20 HC H18 #21 HC + # char N7 #1 -0.867 N8 #2 -0.867 N9 #3 -0.837 N10 #4 -0.853 C13 #5 1.070 C14 #6 0.200 C15 #7 0.182 C16 #8 0.168 C17 #9 0.503 H5 #10 0.450 H6 #11 0.450 H7 #12 0.450 H8 #13 0.450 H9 #14 0.150 H10 #15 0.000 H11 #16 0.000 H14 #17 0.450 H15 #18 0.450 H16 #19 0.450 H17 #20 0.000 H18 #21 0.000 + # fchar N7 #1 0.333 N8 #2 0.333 N9 #3 0.333 N10 #4 1.000 C13 #5 0.000 C14 #6 0.000 C15 #7 0.000 C16 #8 0.000 C17 #9 0.000 H5 #10 0.000 H6 #11 0.000 H7 #12 0.000 H8 #13 0.000 H9 #14 0.000 H10 #15 0.000 H11 #16 0.000 H14 #17 0.000 H15 #18 0.000 H16 #19 0.000 H17 #20 0.000 H18 #21 0.000 +model DIRMIA + # ty S1 #1 18 O1 #2 32 O2 #3 32 O3 #4 6 N1 #5 43 C1 #6 1 H1 #7 28 H2 #8 5 H3 #9 5 H4 #10 5 H5 #11 21 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S O3 #4 -O- N1 #5 NSO2 C1 #6 CR H1 #7 HNSO H2 #8 HC H3 #9 HC H4 #10 HC H5 #11 HO + # char S1 #1 1.333 O1 #2 -0.650 O2 #3 -0.650 O3 #4 -0.317 N1 #5 -0.641 C1 #6 0.105 H1 #7 0.420 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.400 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 C1 #6 0.000 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 +model DISHES RING 1 HAS 2 SUBRINGS SUBRING 1 has 4 PI electrons SUBRING 2 has 4 PI electrons + # ty O1 #1 7 N1 #2 9 C1 #3 3 C2 #4 2 C3 #5 2 C4 #6 3 C5 #7 2 C6 #8 2 C7 #9 2 C8 #10 2 C9 #11 1 C10 #12 1 C11 #13 1 C12 #14 1 H2 #15 5 H3 #16 5 H5 #17 5 H8 #18 5 H111 #19 5 H211 #20 5 H311 #21 5 H110 #22 5 H210 #23 5 H310 #24 5 H112 #25 5 H212 #26 5 H312 #27 5 + # symb O1 #1 O=CR N1 #2 N=C C1 #3 C=N C2 #4 C=C C3 #5 C=C C4 #6 C=OR C5 #7 C=C C6 #8 C=C C7 #9 C=C C8 #10 C=C C9 #11 CR C10 #12 CR C11 #13 CR C12 #14 CR H2 #15 HC H3 #16 HC H5 #17 HC H8 #18 HC H111 #19 HC H211 #20 HC H311 #21 HC H110 #22 HC H210 #23 HC H310 #24 HC H112 #25 HC H212 #26 HC H312 #27 HC + # char O1 #1 -0.570 N1 #2 -0.696 C1 #3 0.421 C2 #4 -0.136 C3 #5 -0.136 C4 #6 0.541 C5 #7 -0.136 C6 #8 0.014 C7 #9 -0.138 C8 #10 -0.288 C9 #11 0.384 C10 #12 0.138 C11 #13 0.000 C12 #14 0.000 H2 #15 0.150 H3 #16 0.150 H5 #17 0.150 H8 #18 0.150 H111 #19 0.000 H211 #20 0.000 H311 #21 0.000 H110 #22 0.000 H210 #23 0.000 H310 #24 0.000 H112 #25 0.000 H212 #26 0.000 H312 #27 0.000 + # fchar O1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 H2 #15 0.000 H3 #16 0.000 H5 #17 0.000 H8 #18 0.000 H111 #19 0.000 H211 #20 0.000 H311 #21 0.000 H110 #22 0.000 H210 #23 0.000 H310 #24 0.000 H112 #25 0.000 H212 #26 0.000 H312 #27 0.000 +model DISJOE + # ty CL1 #1 12 O1 #2 32 O2 #3 32 O3 #4 35 O4 #5 6 N1 #6 45 C1 #7 2 C2 #8 2 C3 #9 1 C4 #10 1 H3 #11 5 H4 #12 5 H5 #13 5 H3F #14 5 H4F #15 5 + # symb CL1 #1 CL O1 #2 O2N O2 #3 O2N O3 #4 OM2 O4 #5 OC=C N1 #6 NO2 C1 #7 C=C C2 #8 C=C C3 #9 CR C4 #10 CR H3 #11 HC H4 #12 HC H5 #13 HC H3F #14 HC H4F #15 HC + # char CL1 #1 -0.140 O1 #2 -0.520 O2 #3 -0.520 O3 #4 -0.850 O4 #5 -0.357 N1 #6 0.836 C1 #7 0.344 C2 #8 -0.073 C3 #9 0.280 C4 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H3F #14 0.000 H4F #15 0.000 + # fchar CL1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 -1.000 O4 #5 0.000 N1 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H3F #14 0.000 H4F #15 0.000 +model DITRAZ + # ty S1 #1 15 C1 #2 57 N1 #3 55 N2 #4 55 N3 #5 8 C2 #6 1 H1 #7 36 H2 #8 36 H33 #9 36 H4 #10 23 H5 #11 23 H6 #12 5 H7 #13 5 H8 #14 5 + # symb S1 #1 S C1 #2 CNN+ N1 #3 NCN+ N2 #4 NCN+ N3 #5 NR C2 #6 CR H1 #7 HNN+ H2 #8 HNN+ H33 #9 HNN+ H4 #10 HNR H5 #11 HNR H6 #12 HC H7 #13 HC H8 #14 HC + # char S1 #1 -0.361 C1 #2 0.840 N1 #3 -0.754 N2 #4 -0.527 N3 #5 -0.497 C2 #6 0.230 H1 #7 0.450 H2 #8 0.450 H33 #9 0.450 H4 #10 0.360 H5 #11 0.360 H6 #12 0.000 H7 #13 0.000 H8 #14 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 0.500 N2 #4 0.500 N3 #5 0.000 C2 #6 0.000 H1 #7 0.000 H2 #8 0.000 H33 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 H7 #13 0.000 H8 #14 0.000 +model DITYAG10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty CL1 #1 12 O1 #2 7 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 3 C8 #10 1 C9 #11 20 C10 #12 20 C11 #13 20 C12 #14 20 H2 #15 5 H3 #16 5 H5 #17 5 H6 #18 5 H81 #19 5 H82 #20 5 H9 #21 5 H101 #22 5 H102 #23 5 H111 #24 5 H112 #25 5 H121 #26 5 H122 #27 5 + # symb CL1 #1 CL O1 #2 O=CR C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 C=OR C8 #10 CR C9 #11 CR4R C10 #12 CR4R C11 #13 CR4R C12 #14 CR4R H2 #15 HC H3 #16 HC H5 #17 HC H6 #18 HC H81 #19 HC H82 #20 HC H9 #21 HC H101 #22 HC H102 #23 HC H111 #24 HC H112 #25 HC H121 #26 HC H122 #27 HC + # char CL1 #1 -0.177 O1 #2 -0.570 C1 #3 0.086 C2 #4 -0.150 C3 #5 -0.150 C4 #6 0.177 C5 #7 -0.150 C6 #8 -0.150 C7 #9 0.423 C8 #10 0.061 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 H2 #15 0.150 H3 #16 0.150 H5 #17 0.150 H6 #18 0.150 H81 #19 0.000 H82 #20 0.000 H9 #21 0.000 H101 #22 0.000 H102 #23 0.000 H111 #24 0.000 H112 #25 0.000 H121 #26 0.000 H122 #27 0.000 + # fchar CL1 #1 0.000 O1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 H2 #15 0.000 H3 #16 0.000 H5 #17 0.000 H6 #18 0.000 H81 #19 0.000 H82 #20 0.000 H9 #21 0.000 H101 #22 0.000 H102 #23 0.000 H111 #24 0.000 H112 #25 0.000 H121 #26 0.000 H122 #27 0.000 +model DIVJUN RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 10 SUBRING 1 has 4 PI electrons + # ty C2 #1 3 C3 #2 57 C5 #3 1 C6 #4 1 C10 #5 1 N4 #6 55 N7 #7 9 N9 #8 55 O8 #9 6 S1 #10 15 H4 #11 36 H8 #12 21 H9 #13 36 H31 #14 5 H52 #15 5 H61 #16 5 H62 #17 5 H101 #18 5 H102 #19 5 H103 #20 5 + # symb C2 #1 C=N C3 #2 CNN+ C5 #3 CR C6 #4 CR C10 #5 CR N4 #6 NCN+ N7 #7 N=C N9 #8 NCN+ O8 #9 -O- S1 #10 S H4 #11 HNN+ H8 #12 HO H9 #13 HNN+ H31 #14 HC H52 #15 HC H61 #16 HC H62 #17 HC H101 #18 HC H102 #19 HC H103 #20 HC + # char C2 #1 0.601 C3 #2 0.699 C5 #3 0.489 C6 #4 0.230 C10 #5 0.489 N4 #6 -0.794 N7 #7 -0.513 N9 #8 -0.794 O8 #9 -0.337 S1 #10 -0.371 H4 #11 0.450 H8 #12 0.400 H9 #13 0.450 H31 #14 0.000 H52 #15 0.000 H61 #16 0.000 H62 #17 0.000 H101 #18 0.000 H102 #19 0.000 H103 #20 0.000 + # fchar C2 #1 0.000 C3 #2 0.000 C5 #3 0.000 C6 #4 0.000 C10 #5 0.000 N4 #6 0.500 N7 #7 0.000 N9 #8 0.500 O8 #9 0.000 S1 #10 0.000 H4 #11 0.000 H8 #12 0.000 H9 #13 0.000 H31 #14 0.000 H52 #15 0.000 H61 #16 0.000 H62 #17 0.000 H101 #18 0.000 H102 #19 0.000 H103 #20 0.000 +model DIVTUX RING 1 HAS 3 SUBRINGS SUBRING 3 IS A 4-MEMBERED RING PI PAIR ON O OR S 2 SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty O1 #1 6 O2 #2 6 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 1 C8 #10 20 C9 #11 20 C10 #12 20 C11 #13 20 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H7 #18 5 H8 #19 5 H91 #20 5 H92 #21 5 H101 #22 5 H102 #23 5 H11 #24 5 H1 #25 21 + # symb O1 #1 OR O2 #2 OC=C C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CR C8 #10 CR4R C9 #11 CR4R C10 #12 CR4R C11 #13 CR4R H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H7 #18 HC H8 #19 HC H91 #20 HC H92 #21 HC H101 #22 HC H102 #23 HC H11 #24 HC H1 #25 HOR + # char O1 #1 -0.680 O2 #2 -0.340 C1 #3 0.083 C2 #4 -0.150 C3 #5 -0.150 C4 #6 -0.150 C5 #7 -0.150 C6 #8 -0.143 C7 #9 0.423 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.258 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H7 #18 0.000 H8 #19 0.000 H91 #20 0.000 H92 #21 0.000 H101 #22 0.000 H102 #23 0.000 H11 #24 0.000 H1 #25 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H7 #18 0.000 H8 #19 0.000 H91 #20 0.000 H92 #21 0.000 H101 #22 0.000 H102 #23 0.000 H11 #24 0.000 H1 #25 0.000 +model DIVVEJ + # ty O1 #1 7 C1 #2 3 C2 #3 57 N1 #4 10 N2 #5 56 N3 #6 56 N4 #7 56 H1 #8 28 H2 #9 28 H3 #10 36 H4 #11 36 H5 #12 36 H7 #13 36 H8 #14 36 + # symb O1 #1 O=CN C1 #2 CONN C2 #3 CGD+ N1 #4 NC=O N2 #5 NGD+ N3 #6 NGD+ N4 #7 NGD+ H1 #8 HNCO H2 #9 HNCO H3 #10 HGD+ H4 #11 HGD+ H5 #12 HGD+ H7 #13 HGD+ H8 #14 HGD+ + # char O1 #1 -0.570 C1 #2 0.973 C2 #3 1.200 N1 #4 -0.800 N2 #5 -0.860 N3 #6 -0.967 N4 #7 -0.967 H1 #8 0.370 H2 #9 0.370 H3 #10 0.450 H4 #11 0.450 H5 #12 0.450 H7 #13 0.450 H8 #14 0.450 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 N1 #4 0.000 N2 #5 0.333 N3 #6 0.333 N4 #7 0.333 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H7 #13 0.000 H8 #14 0.000 +model DIVWEK RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 3 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 C2 #2 2 C3 #3 3 C4 #4 2 C5 #5 2 C20 #6 2 C21 #7 37 C22 #8 37 C23 #9 37 C24 #10 37 C25 #11 37 C26 #12 37 O30 #13 7 C41 #14 37 C42 #15 37 C43 #16 37 C44 #17 37 C45 #18 37 C46 #19 37 C50 #20 3 O51 #21 7 O52 #22 6 H52 #23 24 H23 #24 5 H25 #25 5 H42 #26 5 H26 #27 5 H20 #28 5 H22 #29 5 H46 #30 5 H44 #31 5 H24 #32 5 H45 #33 5 H43 #34 5 + # symb O1 #1 OC=C C2 #2 C=C C3 #3 C=OR C4 #4 C=C C5 #5 C=C C20 #6 C=C C21 #7 CB C22 #8 CB C23 #9 CB C24 #10 CB C25 #11 CB C26 #12 CB O30 #13 O=CR C41 #14 CB C42 #15 CB C43 #16 CB C44 #17 CB C45 #18 CB C46 #19 CB C50 #20 COO O51 #21 O=CO O52 #22 OC=O H52 #23 HOCO H23 #24 HC H25 #25 HC H42 #26 HC H26 #27 HC H20 #28 HC H22 #29 HC H46 #30 HC H44 #31 HC H24 #32 HC H45 #33 HC H43 #34 HC + # char O1 #1 -0.153 C2 #2 0.091 C3 #3 0.541 C4 #4 -0.014 C5 #5 0.091 C20 #6 -0.178 C21 #7 0.028 C22 #8 -0.150 C23 #9 -0.150 C24 #10 -0.150 C25 #11 -0.150 C26 #12 -0.150 O30 #13 -0.570 C41 #14 0.028 C42 #15 -0.150 C43 #16 -0.150 C44 #17 -0.150 C45 #18 -0.150 C46 #19 -0.150 C50 #20 0.706 O51 #21 -0.570 O52 #22 -0.650 H52 #23 0.500 H23 #24 0.150 H25 #25 0.150 H42 #26 0.150 H26 #27 0.150 H20 #28 0.150 H22 #29 0.150 H46 #30 0.150 H44 #31 0.150 H24 #32 0.150 H45 #33 0.150 H43 #34 0.150 + # fchar O1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C20 #6 0.000 C21 #7 0.000 C22 #8 0.000 C23 #9 0.000 C24 #10 0.000 C25 #11 0.000 C26 #12 0.000 O30 #13 0.000 C41 #14 0.000 C42 #15 0.000 C43 #16 0.000 C44 #17 0.000 C45 #18 0.000 C46 #19 0.000 C50 #20 0.000 O51 #21 0.000 O52 #22 0.000 H52 #23 0.000 H23 #24 0.000 H25 #25 0.000 H42 #26 0.000 H26 #27 0.000 H20 #28 0.000 H22 #29 0.000 H46 #30 0.000 H44 #31 0.000 H24 #32 0.000 H45 #33 0.000 H43 #34 0.000 +model DIWCOB + # ty C1 #1 57 N1 #2 56 N2 #3 8 N3 #4 56 N4 #5 8 N5 #6 56 N6 #7 8 H2 #8 36 H3 #9 23 H4 #10 23 H5 #11 36 H6 #12 23 H7 #13 23 H8 #14 36 H9 #15 23 H10 #16 23 + # symb C1 #1 CGD+ N1 #2 NGD+ N2 #3 NR N3 #4 NGD+ N4 #5 NR N5 #6 NGD+ N6 #7 NR H2 #8 HGD+ H3 #9 HNR H4 #10 HNR H5 #11 HGD+ H6 #12 HNR H7 #13 HNR H8 #14 HGD+ H9 #15 HNR H10 #16 HNR + # char C1 #1 1.200 N1 #2 -0.702 N2 #3 -0.535 N3 #4 -0.702 N4 #5 -0.535 N5 #6 -0.702 N6 #7 -0.535 H2 #8 0.450 H3 #9 0.360 H4 #10 0.360 H5 #11 0.450 H6 #12 0.360 H7 #13 0.360 H8 #14 0.450 H9 #15 0.360 H10 #16 0.360 + # fchar C1 #1 0.000 N1 #2 0.333 N2 #3 0.000 N3 #4 0.333 N4 #5 0.000 N5 #6 0.333 N6 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 H7 #13 0.000 H8 #14 0.000 H9 #15 0.000 H10 #16 0.000 +model DIXJEZ RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 10 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 38 C2 #2 37 N3 #3 58 C4 #4 63 C5 #5 64 C6 #6 37 N6 #7 40 N7 #8 66 C8 #9 63 N9 #10 39 C10 #11 1 C11 #12 1 H2 #13 5 H3 #14 36 H8 #15 5 H9 #16 23 H101 #17 5 H102 #18 5 H103 #19 5 H111 #20 5 H112 #21 5 H113 #22 5 + # symb N1 #1 NPYD C2 #2 CB N3 #3 NPD+ C4 #4 C5A C5 #5 C5B C6 #6 CB N6 #7 NC=N N7 #8 N5B C8 #9 C5A N9 #10 NPYL C10 #11 CR C11 #12 CR H2 #13 HC H3 #14 HPD+ H8 #15 HC H9 #16 HPYL H101 #17 HC H102 #18 HC H103 #19 HC H111 #20 HC H112 #21 HC H113 #22 HC + # char N1 #1 -0.620 C2 #2 0.521 N3 #3 -0.126 C4 #4 0.156 C5 #5 0.227 C6 #6 0.410 N6 #7 -0.838 N7 #8 -0.565 C8 #9 0.037 N9 #10 0.033 C10 #11 0.369 C11 #12 0.369 H2 #13 0.150 H3 #14 0.457 H8 #15 0.150 H9 #16 0.270 H101 #17 0.000 H102 #18 0.000 H103 #19 0.000 H111 #20 0.000 H112 #21 0.000 H113 #22 0.000 + # fchar N1 #1 0.000 C2 #2 0.000 N3 #3 1.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N6 #7 0.000 N7 #8 0.000 C8 #9 0.000 N9 #10 0.000 C10 #11 0.000 C11 #12 0.000 H2 #13 0.000 H3 #14 0.000 H8 #15 0.000 H9 #16 0.000 H101 #17 0.000 H102 #18 0.000 H103 #19 0.000 H111 #20 0.000 H112 #21 0.000 H113 #22 0.000 +model DIYDIY RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 O7 #7 6 C8 #8 1 C9 #9 3 O10 #10 7 O11 #11 6 C21 #12 3 O21 #13 7 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H81 #18 5 H82 #19 5 H21 #20 5 H11 #21 24 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB O7 #7 OC=C C8 #8 CR C9 #9 COO O10 #10 O=CO O11 #11 OC=O C21 #12 C=OR O21 #13 O=CR H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H81 #18 HC H82 #19 HC H21 #20 HC H11 #21 HOCO + # char C1 #1 0.083 C2 #2 0.086 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.150 O7 #7 -0.363 C8 #8 0.341 C9 #9 0.659 O10 #10 -0.570 O11 #11 -0.650 C21 #12 0.424 O21 #13 -0.570 H3 #14 0.150 H4 #15 0.150 H5 #16 0.150 H6 #17 0.150 H81 #18 0.000 H82 #19 0.000 H21 #20 0.060 H11 #21 0.500 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 O7 #7 0.000 C8 #8 0.000 C9 #9 0.000 O10 #10 0.000 O11 #11 0.000 C21 #12 0.000 O21 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H81 #18 0.000 H82 #19 0.000 H21 #20 0.000 H11 #21 0.000 +model DIYPOQ RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 8 SUBRING 2 has 4 PI electrons + # ty N1 #1 56 C2 #2 57 N3 #3 56 C4 #4 3 N5 #5 34 C6 #6 1 C7 #7 1 N8 #8 40 C9 #9 2 C10 #10 2 N11 #11 56 O12 #12 7 C13 #13 1 O14 #14 6 C15 #15 1 O16 #16 6 C17 #17 1 H1 #18 36 H3 #19 36 H51 #20 36 H52 #21 36 H6 #22 5 H71 #23 5 H72 #24 5 H8 #25 28 H111 #26 36 H112 #27 36 H13 #28 5 H14 #29 21 H15 #30 5 H16 #31 21 H171 #32 5 H172 #33 5 H173 #34 5 + # symb N1 #1 NGD+ C2 #2 CGD+ N3 #3 NGD+ C4 #4 C=ON N5 #5 NR+ C6 #6 CR C7 #7 CR N8 #8 NC=C C9 #9 C=C C10 #10 C=C N11 #11 NGD+ O12 #12 O=CN C13 #13 CR O14 #14 OR C15 #15 CR O16 #16 OR C17 #17 CR H1 #18 HGD+ H3 #19 HGD+ H51 #20 HNR+ H52 #21 HNR+ H6 #22 HC H71 #23 HC H72 #24 HC H8 #25 HNCC H111 #26 HGD+ H112 #27 HGD+ H13 #28 HC H14 #29 HOR H15 #30 HC H16 #31 HOR H171 #32 HC H172 #33 HC H173 #34 HC + # char N1 #1 -0.820 C2 #2 1.200 N3 #3 -0.860 C4 #4 0.899 N5 #5 -0.759 C6 #6 0.503 C7 #7 0.369 N8 #8 -0.869 C9 #9 0.370 C10 #10 0.403 N11 #11 -0.967 O12 #12 -0.570 C13 #13 0.280 O14 #14 -0.680 C15 #15 0.280 O16 #16 -0.680 C17 #17 0.000 H1 #18 0.450 H3 #19 0.450 H51 #20 0.450 H52 #21 0.450 H6 #22 0.000 H71 #23 0.000 H72 #24 0.000 H8 #25 0.400 H111 #26 0.450 H112 #27 0.450 H13 #28 0.000 H14 #29 0.400 H15 #30 0.000 H16 #31 0.400 H171 #32 0.000 H172 #33 0.000 H173 #34 0.000 + # fchar N1 #1 0.333 C2 #2 0.000 N3 #3 0.333 C4 #4 0.000 N5 #5 1.000 C6 #6 0.000 C7 #7 0.000 N8 #8 0.000 C9 #9 0.000 C10 #10 0.000 N11 #11 0.333 O12 #12 0.000 C13 #13 0.000 O14 #14 0.000 C15 #15 0.000 O16 #16 0.000 C17 #17 0.000 H1 #18 0.000 H3 #19 0.000 H51 #20 0.000 H52 #21 0.000 H6 #22 0.000 H71 #23 0.000 H72 #24 0.000 H8 #25 0.000 H111 #26 0.000 H112 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H171 #32 0.000 H172 #33 0.000 H173 #34 0.000 +model DIYPUW RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 7 C1 #2 3 N1 #3 10 C2 #4 22 C3 #5 22 H21 #6 5 H22 #7 5 H31 #8 5 H32 #9 5 N1B #10 10 C2B #11 22 C3B #12 22 H21B #13 5 H22B #14 5 H31B #15 5 H32B #16 5 + # symb O1 #1 O=CN C1 #2 CONN N1 #3 NC=O C2 #4 CR3R C3 #5 CR3R H21 #6 HC H22 #7 HC H31 #8 HC H32 #9 HC N1B #10 NC=O C2B #11 CR3R C3B #12 CR3R H21B #13 HC H22B #14 HC H31B #15 HC H32B #16 HC + # char O1 #1 -0.570 C1 #2 0.690 N1 #3 -0.358 C2 #4 -0.051 C3 #5 -0.051 H21 #6 0.100 H22 #7 0.100 H31 #8 0.100 H32 #9 0.100 N1B #10 -0.358 C2B #11 -0.051 C3B #12 -0.051 H21B #13 0.100 H22B #14 0.100 H31B #15 0.100 H32B #16 0.100 + # fchar O1 #1 0.000 C1 #2 0.000 N1 #3 0.000 C2 #4 0.000 C3 #5 0.000 H21 #6 0.000 H22 #7 0.000 H31 #8 0.000 H32 #9 0.000 N1B #10 0.000 C2B #11 0.000 C3B #12 0.000 H21B #13 0.000 H22B #14 0.000 H31B #15 0.000 H32B #16 0.000 +model DIZPUX RING 1 HAS 2 SUBRINGS SUBRING 1 has 0 PI electrons + # ty O1 #1 7 N1 #2 34 C1 #3 1 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 1 C6 #8 1 C7 #9 2 C8 #10 2 C9 #11 3 C10 #12 1 H11 #13 36 H12 #14 36 H1 #15 5 H21 #16 5 H22 #17 5 H31 #18 5 H32 #19 5 H4 #20 5 H51 #21 5 H52 #22 5 H61 #23 5 H62 #24 5 H7 #25 5 H101 #26 5 H102 #27 5 H103 #28 5 + # symb O1 #1 O=CR N1 #2 NR+ C1 #3 CR C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 CR C6 #8 CR C7 #9 C=C C8 #10 C=C C9 #11 C=OR C10 #12 CR H11 #13 HNR+ H12 #14 HNR+ H1 #15 HC H21 #16 HC H22 #17 HC H31 #18 HC H32 #19 HC H4 #20 HC H51 #21 HC H52 #22 HC H61 #23 HC H62 #24 HC H7 #25 HC H101 #26 HC H102 #27 HC H103 #28 HC + # char O1 #1 -0.570 N1 #2 -0.906 C1 #3 0.641 C2 #4 0.000 C3 #5 0.000 C4 #6 0.503 C5 #7 0.000 C6 #8 0.138 C7 #9 -0.288 C8 #10 -0.124 C9 #11 0.495 C10 #12 0.061 H11 #13 0.450 H12 #14 0.450 H1 #15 0.000 H21 #16 0.000 H22 #17 0.000 H31 #18 0.000 H32 #19 0.000 H4 #20 0.000 H51 #21 0.000 H52 #22 0.000 H61 #23 0.000 H62 #24 0.000 H7 #25 0.150 H101 #26 0.000 H102 #27 0.000 H103 #28 0.000 + # fchar O1 #1 0.000 N1 #2 1.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 H11 #13 0.000 H12 #14 0.000 H1 #15 0.000 H21 #16 0.000 H22 #17 0.000 H31 #18 0.000 H32 #19 0.000 H4 #20 0.000 H51 #21 0.000 H52 #22 0.000 H61 #23 0.000 H62 #24 0.000 H7 #25 0.000 H101 #26 0.000 H102 #27 0.000 H103 #28 0.000 +model DMEOXA01 + # ty C1 #1 3 C2 #2 1 O1 #3 7 O2 #4 6 H1 #5 5 H2 #6 5 H3 #7 5 C1B #8 3 O1B #9 7 O2B #10 6 C2B #11 1 H1B #12 5 H2B #13 5 H3B #14 5 + # symb C1 #1 COO C2 #2 CR O1 #3 O=CO O2 #4 OC=O H1 #5 HC H2 #6 HC H3 #7 HC C1B #8 COO O1B #9 O=CO O2B #10 OC=O C2B #11 CR H1B #12 HC H2B #13 HC H3B #14 HC + # char C1 #1 0.720 C2 #2 0.280 O1 #3 -0.570 O2 #4 -0.430 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 C1B #8 0.720 O1B #9 -0.570 O2B #10 -0.430 C2B #11 0.280 H1B #12 0.000 H2B #13 0.000 H3B #14 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 O1 #3 0.000 O2 #4 0.000 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 C1B #8 0.000 O1B #9 0.000 O2B #10 0.000 C2B #11 0.000 H1B #12 0.000 H2B #13 0.000 H3B #14 0.000 +model DOCCIH RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 72 S2 #2 72 C1 #3 41 C2 #4 37 C3 #5 37 C4 #6 37 H1 #7 5 H2 #8 5 C4B #9 37 C3B #10 37 C2B #11 37 H2B #12 5 H1B #13 5 C1B #14 41 S1B #15 72 S2B #16 72 + # symb S1 #1 S2CM S2 #2 S2CM C1 #3 CS2M C2 #4 CB C3 #5 CB C4 #6 CB H1 #7 HC H2 #8 HC C4B #9 CB C3B #10 CB C2B #11 CB H2B #12 HC H1B #13 HC C1B #14 CS2M S1B #15 S2CM S2B #16 S2CM + # char S1 #1 -0.750 S2 #2 -0.750 C1 #3 0.679 C2 #4 -0.179 C3 #5 -0.150 C4 #6 -0.150 H1 #7 0.150 H2 #8 0.150 C4B #9 -0.150 C3B #10 -0.150 C2B #11 -0.179 H2B #12 0.150 H1B #13 0.150 C1B #14 0.679 S1B #15 -0.750 S2B #16 -0.750 + # fchar S1 #1 -0.500 S2 #2 -0.500 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 H1 #7 0.000 H2 #8 0.000 C4B #9 0.000 C3B #10 0.000 C2B #11 0.000 H2B #12 0.000 H1B #13 0.000 C1B #14 0.000 S1B #15 -0.500 S2B #16 -0.500 +model DOCFIK RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 5 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 15 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S10 #1 15 N1 #2 9 C1 #3 3 CL1 #4 12 S1 #5 44 N2 #6 65 C3 #7 64 N4 #8 66 C5 #9 63 C6 #10 4 N7 #11 42 N1_ #12 9 C1_ #13 3 CL1_ #14 12 S1_ #15 44 N2_ #16 65 C3_ #17 64 N4_ #18 66 C5_ #19 63 C6_ #20 4 N7_ #21 42 + # symb S10 #1 S N1 #2 N=C C1 #3 C=N CL1 #4 CL S1 #5 STHI N2 #6 N5A C3 #7 C5B N4 #8 N5B C5 #9 C5A C6 #10 CSP N7 #11 NSP N1_ #12 N=C C1_ #13 C=N CL1_ #14 CL S1_ #15 STHI N2_ #16 N5A C3_ #17 C5B N4_ #18 N5B C5_ #19 C5A C6_ #20 CSP N7_ #21 NSP + # char S10 #1 0.140 N1 #2 -0.520 C1 #3 0.744 CL1 #4 -0.209 S1 #5 0.181 N2 #6 -0.510 C3 #7 0.535 N4 #8 -0.565 C5 #9 0.293 C6 #10 0.538 N7 #11 -0.557 N1_ #12 -0.520 C1_ #13 0.744 CL1_ #14 -0.209 S1_ #15 0.181 N2_ #16 -0.510 C3_ #17 0.535 N4_ #18 -0.565 C5_ #19 0.293 C6_ #20 0.538 N7_ #21 -0.557 + # fchar S10 #1 0.000 N1 #2 0.000 C1 #3 0.000 CL1 #4 0.000 S1 #5 0.000 N2 #6 0.000 C3 #7 0.000 N4 #8 0.000 C5 #9 0.000 C6 #10 0.000 N7 #11 0.000 N1_ #12 0.000 C1_ #13 0.000 CL1_ #14 0.000 S1_ #15 0.000 N2_ #16 0.000 C3_ #17 0.000 N4_ #18 0.000 C5_ #19 0.000 C6_ #20 0.000 N7_ #21 0.000 +model DOCWUN RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons + # ty O1 #1 7 O2 #2 6 O3 #3 6 N1 #4 10 N2 #5 9 N3 #6 9 C1 #7 1 C2 #8 3 C3 #9 2 C4 #10 2 C5 #11 2 C6 #12 2 C7 #13 3 C8 #14 3 C9 #15 1 H1 #16 21 H2 #17 21 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 + # symb O1 #1 O=CN O2 #2 -O- O3 #3 -O- N1 #4 NC=O N2 #5 N=C N3 #6 N=C C1 #7 CR C2 #8 C=ON C3 #9 C=C C4 #10 C=C C5 #11 C=C C6 #12 C=C C7 #13 C=N C8 #14 C=N C9 #15 CR H1 #16 HO H2 #17 HO H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC + # char O1 #1 -0.570 O2 #2 -0.337 O3 #3 -0.337 N1 #4 -0.229 N2 #5 -0.513 N3 #6 -0.513 C1 #7 0.138 C2 #8 0.616 C3 #9 -0.124 C4 #10 -0.150 C5 #11 -0.150 C6 #12 -0.041 C7 #13 0.510 C8 #14 0.389 C9 #15 0.061 H1 #16 0.400 H2 #17 0.400 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.150 H7 #22 0.150 H8 #23 0.150 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 +model DODNOZ + # ty N1 #1 43 S1 #2 18 O1 #3 32 O2 #4 32 C1 #5 1 C2 #6 1 S2 #7 18 O3 #8 32 O4 #9 32 C3 #10 1 C4 #11 1 S3 #12 18 O5 #13 32 O6 #14 32 C7 #15 1 C8 #16 1 H11 #17 5 H12 #18 5 H21 #19 5 H22 #20 5 H23 #21 5 H31 #22 5 H32 #23 5 H41 #24 5 H42 #25 5 H43 #26 5 H71 #27 5 H72 #28 5 H81 #29 5 H82 #30 5 H83 #31 5 + # symb N1 #1 NSO2 S1 #2 SO2N O1 #3 O2S O2 #4 O2S C1 #5 CR C2 #6 CR S2 #7 SO2N O3 #8 O2S O4 #9 O2S C3 #10 CR C4 #11 CR S3 #12 SO2N O5 #13 O2S O6 #14 O2S C7 #15 CR C8 #16 CR H11 #17 HC H12 #18 HC H21 #19 HC H22 #20 HC H23 #21 HC H31 #22 HC H32 #23 HC H41 #24 HC H42 #25 HC H43 #26 HC H71 #27 HC H72 #28 HC H81 #29 HC H82 #30 HC H83 #31 HC + # char N1 #1 -0.414 S1 #2 1.333 O1 #3 -0.650 O2 #4 -0.650 C1 #5 0.105 C2 #6 0.000 S2 #7 1.333 O3 #8 -0.650 O4 #9 -0.650 C3 #10 0.105 C4 #11 0.000 S3 #12 1.333 O5 #13 -0.650 O6 #14 -0.650 C7 #15 0.105 C8 #16 0.000 H11 #17 0.000 H12 #18 0.000 H21 #19 0.000 H22 #20 0.000 H23 #21 0.000 H31 #22 0.000 H32 #23 0.000 H41 #24 0.000 H42 #25 0.000 H43 #26 0.000 H71 #27 0.000 H72 #28 0.000 H81 #29 0.000 H82 #30 0.000 H83 #31 0.000 + # fchar N1 #1 0.000 S1 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 S2 #7 0.000 O3 #8 0.000 O4 #9 0.000 C3 #10 0.000 C4 #11 0.000 S3 #12 0.000 O5 #13 0.000 O6 #14 0.000 C7 #15 0.000 C8 #16 0.000 H11 #17 0.000 H12 #18 0.000 H21 #19 0.000 H22 #20 0.000 H23 #21 0.000 H31 #22 0.000 H32 #23 0.000 H41 #24 0.000 H42 #25 0.000 H43 #26 0.000 H71 #27 0.000 H72 #28 0.000 H81 #29 0.000 H82 #30 0.000 H83 #31 0.000 +model DODNUF + # ty N1 #1 43 S1 #2 18 O11 #3 32 O12 #4 32 C11 #5 1 C12 #6 1 S2 #7 18 O21 #8 32 O22 #9 32 C21 #10 1 C22 #11 1 H1 #12 28 H111 #13 5 H112 #14 5 H121 #15 5 H122 #16 5 H123 #17 5 H211 #18 5 H212 #19 5 H221 #20 5 H222 #21 5 H223 #22 5 + # symb N1 #1 NSO2 S1 #2 SO2N O11 #3 O2S O12 #4 O2S C11 #5 CR C12 #6 CR S2 #7 SO2N O21 #8 O2S O22 #9 O2S C21 #10 CR C22 #11 CR H1 #12 HNSO H111 #13 HC H112 #14 HC H121 #15 HC H122 #16 HC H123 #17 HC H211 #18 HC H212 #19 HC H221 #20 HC H222 #21 HC H223 #22 HC + # char N1 #1 -0.696 S1 #2 1.333 O11 #3 -0.650 O12 #4 -0.650 C11 #5 0.105 C12 #6 0.000 S2 #7 1.333 O21 #8 -0.650 O22 #9 -0.650 C21 #10 0.105 C22 #11 0.000 H1 #12 0.420 H111 #13 0.000 H112 #14 0.000 H121 #15 0.000 H122 #16 0.000 H123 #17 0.000 H211 #18 0.000 H212 #19 0.000 H221 #20 0.000 H222 #21 0.000 H223 #22 0.000 + # fchar N1 #1 0.000 S1 #2 0.000 O11 #3 0.000 O12 #4 0.000 C11 #5 0.000 C12 #6 0.000 S2 #7 0.000 O21 #8 0.000 O22 #9 0.000 C21 #10 0.000 C22 #11 0.000 H1 #12 0.000 H111 #13 0.000 H112 #14 0.000 H121 #15 0.000 H122 #16 0.000 H123 #17 0.000 H211 #18 0.000 H212 #19 0.000 H221 #20 0.000 H222 #21 0.000 H223 #22 0.000 +model DOJPAT RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 3 IS A 4-MEMBERED RING SUBRING 1 has 0 PI electrons + # ty S1 #1 18 O1 #2 32 O2 #3 32 C1 #4 1 C2 #5 20 C3 #6 20 C4 #7 30 C5 #8 30 C6 #9 20 C7 #10 20 C8 #11 1 H11 #12 5 H12 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H81 #20 5 H82 #21 5 + # symb S1 #1 SO2 O1 #2 O2S O2 #3 O2S C1 #4 CR C2 #5 CR4R C3 #6 CR4R C4 #7 CE4R C5 #8 CE4R C6 #9 CR4R C7 #10 CR4R C8 #11 CR H11 #12 HC H12 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H81 #20 HC H82 #21 HC + # char S1 #1 1.090 O1 #2 -0.650 O2 #3 -0.650 C1 #4 0.105 C2 #5 0.000 C3 #6 0.138 C4 #7 -0.288 C5 #8 -0.288 C6 #9 0.138 C7 #10 0.000 C8 #11 0.105 H11 #12 0.000 H12 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.150 H5 #17 0.150 H6 #18 0.000 H7 #19 0.000 H81 #20 0.000 H82 #21 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H11 #12 0.000 H12 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H81 #20 0.000 H82 #21 0.000 +model DONFOB + # ty S1 #1 18 S2 #2 18 S3 #3 15 S4 #4 15 N1 #5 34 O1 #6 32 O2 #7 32 O3 #8 32 O4 #9 32 O5 #10 32 O6 #11 32 C1 #12 1 C2 #13 1 C3 #14 1 C4 #15 1 C5 #16 1 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 36 + # symb S1 #1 SO3 S2 #2 SO3 S3 #3 S S4 #4 S N1 #5 NR+ O1 #6 O3S O2 #7 O3S O3 #8 O3S O4 #9 O3S O5 #10 O3S O6 #11 O3S C1 #12 CR C2 #13 CR C3 #14 CR C4 #15 CR C5 #16 CR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HNR+ + # char S1 #1 1.568 S2 #2 1.568 S3 #3 -0.348 S4 #4 -0.348 N1 #5 -0.959 O1 #6 -0.817 O2 #7 -0.817 O3 #8 -0.817 O4 #9 -0.817 O5 #10 -0.817 O6 #11 -0.817 C1 #12 0.503 C2 #13 0.503 C3 #14 0.503 C4 #15 0.230 C5 #16 0.230 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.450 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 S4 #4 0.000 N1 #5 1.000 O1 #6 -0.333 O2 #7 -0.333 O3 #8 -0.333 O4 #9 -0.333 O5 #10 -0.333 O6 #11 -0.333 C1 #12 0.000 C2 #13 0.000 C3 #14 0.000 C4 #15 0.000 C5 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 +model DOSNOO RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty N1 #1 43 S2 #2 18 C3 #3 20 H31 #4 5 H32 #5 5 C4 #6 20 H41 #7 5 H42 #8 5 C5 #9 3 O6 #10 7 N7 #11 10 H71 #12 28 H72 #13 28 O8 #14 32 O9 #15 32 + # symb N1 #1 NSO2 S2 #2 SO2N C3 #3 CR4R H31 #4 HC H32 #5 HC C4 #6 CR4R H41 #7 HC H42 #8 HC C5 #9 CONN O6 #10 O=CN N7 #11 NC=O H71 #12 HNCO H72 #13 HNCO O8 #14 O2S O9 #15 O2S + # char N1 #1 -0.681 S2 #2 1.339 C3 #3 0.099 H31 #4 0.000 H32 #5 0.000 C4 #6 0.307 H41 #7 0.000 H42 #8 0.000 C5 #9 0.866 O6 #10 -0.570 N7 #11 -0.800 H71 #12 0.370 H72 #13 0.370 O8 #14 -0.650 O9 #15 -0.650 + # fchar N1 #1 0.000 S2 #2 0.000 C3 #3 0.000 H31 #4 0.000 H32 #5 0.000 C4 #6 0.000 H41 #7 0.000 H42 #8 0.000 C5 #9 0.000 O6 #10 0.000 N7 #11 0.000 H71 #12 0.000 H72 #13 0.000 O8 #14 0.000 O9 #15 0.000 +model DOTNIJ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 16 N1 #2 10 C1 #3 3 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 H1 #8 5 H3 #9 5 H4 #10 5 H5 #11 5 C1C #12 3 C3C #13 37 C4C #14 37 S1C #15 16 H1C #16 5 H3C #17 5 H4C #18 5 + # symb S1 #1 S=C N1 #2 NC=S C1 #3 C=SN C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB H1 #8 HC H3 #9 HC H4 #10 HC H5 #11 HC C1C #12 C=SN C3C #13 CB C4C #14 CB S1C #15 S=C H1C #16 HC H3C #17 HC H4C #18 HC + # char S1 #1 -0.380 N1 #2 -0.237 C1 #3 0.380 C2 #4 0.117 C3 #5 -0.150 C4 #6 -0.150 C5 #7 -0.150 H1 #8 0.060 H3 #9 0.150 H4 #10 0.150 H5 #11 0.150 C1C #12 0.380 C3C #13 -0.150 C4C #14 -0.150 S1C #15 -0.380 H1C #16 0.060 H3C #17 0.150 H4C #18 0.150 + # fchar S1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 H1 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 C1C #12 0.000 C3C #13 0.000 C4C #14 0.000 S1C #15 0.000 H1C #16 0.000 H3C #17 0.000 H4C #18 0.000 +model DOTVEN RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 4 PI electrons + # ty S1 #1 18 N2 #2 43 C3 #3 3 C4 #4 1 C5 #5 3 N6 #6 9 O11 #7 32 O12 #8 32 O7 #9 7 N8 #10 40 H1 #11 28 H3 #12 5 H4 #13 28 H5 #14 28 H2 #15 5 + # symb S1 #1 SO2N N2 #2 NSO2 C3 #3 C=ON C4 #4 CR C5 #5 C=N N6 #6 N=C O11 #7 O2S O12 #8 O2S O7 #9 O=CN N8 #10 NC=N H1 #11 HNCN H3 #12 HC H4 #13 HNSO H5 #14 HNCN H2 #15 HC + # char S1 #1 1.626 N2 #2 -0.794 C3 #3 0.745 C4 #4 0.122 C5 #5 0.439 N6 #6 -0.638 O11 #7 -0.650 O12 #8 -0.650 O7 #9 -0.570 N8 #10 -0.850 H1 #11 0.400 H3 #12 0.000 H4 #13 0.420 H5 #14 0.400 H2 #15 0.000 + # fchar S1 #1 0.000 N2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 N6 #6 0.000 O11 #7 0.000 O12 #8 0.000 O7 #9 0.000 N8 #10 0.000 H1 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H2 #15 0.000 +model DOTWOY RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 CL2 #2 12 C1 #3 22 C2 #4 22 C3 #5 22 C4 #6 3 C1_ #7 37 C2_ #8 37 C3_ #9 37 C4_ #10 37 C5_ #11 37 C6_ #12 37 C7_ #13 1 C8_ #14 1 O1 #15 7 O2 #16 6 O4_ #17 6 H2 #18 24 H31 #19 5 H32 #20 5 H2_ #21 5 H3_ #22 5 H5_ #23 5 H6_ #24 5 H71 #25 5 H72 #26 5 H81 #27 5 H82 #28 5 H83 #29 5 + # symb CL1 #1 CL CL2 #2 CL C1 #3 CR3R C2 #4 CR3R C3 #5 CR3R C4 #6 COO C1_ #7 CB C2_ #8 CB C3_ #9 CB C4_ #10 CB C5_ #11 CB C6_ #12 CB C7_ #13 CR C8_ #14 CR O1 #15 O=CO O2 #16 OC=O O4_ #17 OC=C H2 #18 HOCO H31 #19 HC H32 #20 HC H2_ #21 HC H3_ #22 HC H5_ #23 HC H6_ #24 HC H71 #25 HC H72 #26 HC H81 #27 HC H82 #28 HC H83 #29 HC + # char CL1 #1 -0.227 CL2 #2 -0.227 C1 #3 0.032 C2 #4 0.455 C3 #5 -0.200 C4 #6 0.720 C1_ #7 -0.032 C2_ #8 -0.150 C3_ #9 -0.150 C4_ #10 0.083 C5_ #11 -0.150 C6_ #12 -0.150 C7_ #13 0.280 C8_ #14 0.000 O1 #15 -0.570 O2 #16 -0.650 O4_ #17 -0.363 H2 #18 0.500 H31 #19 0.100 H32 #20 0.100 H2_ #21 0.150 H3_ #22 0.150 H5_ #23 0.150 H6_ #24 0.150 H71 #25 0.000 H72 #26 0.000 H81 #27 0.000 H82 #28 0.000 H83 #29 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C1_ #7 0.000 C2_ #8 0.000 C3_ #9 0.000 C4_ #10 0.000 C5_ #11 0.000 C6_ #12 0.000 C7_ #13 0.000 C8_ #14 0.000 O1 #15 0.000 O2 #16 0.000 O4_ #17 0.000 H2 #18 0.000 H31 #19 0.000 H32 #20 0.000 H2_ #21 0.000 H3_ #22 0.000 H5_ #23 0.000 H6_ #24 0.000 H71 #25 0.000 H72 #26 0.000 H81 #27 0.000 H82 #28 0.000 H83 #29 0.000 +model DOWDEY RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons + # ty O1 #1 6 C1 #2 3 N1 #3 9 C2 #4 2 C3 #5 2 C4 #6 3 N2 #7 40 S1 #8 15 C5 #9 1 C6 #10 4 N3 #11 42 O2 #12 7 H1 #13 28 H2 #14 28 H3 #15 5 H4 #16 5 H5 #17 5 + # symb O1 #1 OC=O C1 #2 C=N N1 #3 N=C C2 #4 C=C C3 #5 C=C C4 #6 COO N2 #7 NC=N S1 #8 S C5 #9 CR C6 #10 CSP N3 #11 NSP O2 #12 O=CO H1 #13 HNCN H2 #14 HNCN H3 #15 HC H4 #16 HC H5 #17 HC + # char O1 #1 -0.300 C1 #2 0.650 N1 #3 -0.621 C2 #4 0.272 C3 #5 0.079 C4 #6 0.706 N2 #7 -0.850 S1 #8 -0.331 C5 #9 0.230 C6 #10 0.492 N3 #11 -0.557 O2 #12 -0.570 H1 #13 0.400 H2 #14 0.400 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 + # fchar O1 #1 0.000 C1 #2 0.000 N1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N2 #7 0.000 S1 #8 0.000 C5 #9 0.000 C6 #10 0.000 N3 #11 0.000 O2 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 +model DOXXAP + # ty C1 #1 41 C2 #2 1 C3 #3 1 N1 #4 34 N2 #5 67 N3 #6 9 O1 #7 32 O2 #8 32 O3 #9 32 O4 #10 6 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 36 H5 #15 36 H6 #16 36 H7 #17 21 + # symb C1 #1 CO2M C2 #2 CR C3 #3 CR N1 #4 NR+ N2 #5 N2OX N3 #6 N=N O1 #7 O2CM O2 #8 O2CM O3 #9 OXN O4 #10 -O- H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HNR+ H5 #15 HNR+ H6 #16 HNR+ H7 #17 HO + # char C1 #1 0.906 C2 #2 0.397 C3 #3 0.099 N1 #4 -0.853 N2 #5 0.741 N3 #6 -0.270 O1 #7 -0.900 O2 #8 -0.900 O3 #9 -0.633 O4 #10 -0.337 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.450 H5 #15 0.450 H6 #16 0.450 H7 #17 0.400 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N1 #4 1.000 N2 #5 0.000 N3 #6 0.000 O1 #7 -0.500 O2 #8 -0.500 O3 #9 0.000 O4 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 +model DOXZOF RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty O1 #1 6 N1 #2 9 C1 #3 3 C2 #4 20 C21 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C61 #10 37 H1 #11 21 H2 #12 5 H2_ #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 + # symb O1 #1 -O- N1 #2 N=C C1 #3 C=N C2 #4 CR4R C21 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C61 #10 CB H1 #11 HO H2 #12 HC H2_ #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC + # char O1 #1 -0.337 N1 #2 -0.513 C1 #3 0.311 C2 #4 0.161 C21 #5 -0.108 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.150 C61 #10 0.086 H1 #11 0.400 H2 #12 0.000 H2_ #13 0.000 H3 #14 0.150 H4 #15 0.150 H5 #16 0.150 H6 #17 0.150 + # fchar O1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C21 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C61 #10 0.000 H1 #11 0.000 H2 #12 0.000 H2_ #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 +model DOZFON + # ty F1 #1 11 F2 #2 11 O1 #3 7 O2 #4 32 O3 #5 32 N1 #6 10 N2 #7 34 N3 #8 45 C1 #9 3 C2 #10 1 C3 #11 1 C4 #12 1 H2 #13 36 H31 #14 5 H32 #15 5 H33 #16 5 H41 #17 5 H42 #18 5 H43 #19 5 H1 #20 28 + # symb F1 #1 F F2 #2 F O1 #3 O=CN O2 #4 O2N O3 #5 O2N N1 #6 NC=O N2 #7 NR+ N3 #8 NO2 C1 #9 C=ON C2 #10 CR C3 #11 CR C4 #12 CR H2 #13 HNR+ H31 #14 HC H32 #15 HC H33 #16 HC H41 #17 HC H42 #18 HC H43 #19 HC H1 #20 HNCO + # char F1 #1 -0.340 F2 #2 -0.340 O1 #3 -0.570 O2 #4 -0.520 O3 #5 -0.520 N1 #6 -0.183 N2 #7 -0.703 N3 #8 0.800 C1 #9 0.569 C2 #10 0.981 C3 #11 0.503 C4 #12 0.503 H2 #13 0.450 H31 #14 0.000 H32 #15 0.000 H33 #16 0.000 H41 #17 0.000 H42 #18 0.000 H43 #19 0.000 H1 #20 0.370 + # fchar F1 #1 0.000 F2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 N1 #6 0.000 N2 #7 1.000 N3 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 H2 #13 0.000 H31 #14 0.000 H32 #15 0.000 H33 #16 0.000 H41 #17 0.000 H42 #18 0.000 H43 #19 0.000 H1 #20 0.000 +model DOZNIP RING 1 HAS 1 SUBRINGS PI PAIR ON DICOORD N 9 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 32 O2 #2 32 O3 #3 32 O4 #4 32 N1 #5 45 N2 #6 40 N3 #7 76 N4 #8 76 N5 #9 76 N6 #10 40 N7 #11 45 C1 #12 78 C2 #13 78 H1 #14 28 H2 #15 28 + # symb O1 #1 O2N O2 #2 O2N O3 #3 O2N O4 #4 O2N N1 #5 NO2 N2 #6 NC=N N3 #7 N5M N4 #8 N5M N5 #9 N5M N6 #10 NC=N N7 #11 NO2 C1 #12 C5 C2 #13 C5 H1 #14 HNCN H2 #15 HNCN + # char O1 #1 -0.520 O2 #2 -0.520 O3 #3 -0.520 O4 #4 -0.520 N1 #5 1.044 N2 #6 -0.500 N3 #7 -0.650 N4 #8 -0.650 N5 #9 -0.967 N6 #10 -0.500 N7 #11 1.044 C1 #12 0.729 C2 #13 0.729 H1 #14 0.400 H2 #15 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 -0.333 N4 #8 -0.333 N5 #9 -0.333 N6 #10 0.000 N7 #11 0.000 C1 #12 0.000 C2 #13 0.000 H1 #14 0.000 H2 #15 0.000 +model DUBNET RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 5 SUBRING 2 has 4 PI electrons SUBRING 3 has 2 PI electrons + # ty O1 #1 7 O2 #2 7 N1 #3 10 N2 #4 10 N3 #5 10 C1 #6 1 C2 #7 2 C3 #8 2 C4 #9 1 C5 #10 1 C6 #11 3 C7 #12 3 C8 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H51 #18 5 H52 #19 5 H81 #20 5 H82 #21 5 H83 #22 5 + # symb O1 #1 O=CN O2 #2 O=CN N1 #3 NC=O N2 #4 NC=O N3 #5 NC=O C1 #6 CR C2 #7 C=C C3 #8 C=C C4 #9 CR C5 #10 CR C6 #11 CONN C7 #12 CONN C8 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H51 #18 HC H52 #19 HC H81 #20 HC H82 #21 HC H83 #22 HC + # char O1 #1 -0.570 O2 #2 -0.570 N1 #3 -0.360 N2 #4 -0.420 N3 #5 -0.360 C1 #6 0.438 C2 #7 -0.288 C3 #8 -0.288 C4 #9 0.438 C5 #10 0.000 C6 #11 0.690 C7 #12 0.690 C8 #13 0.300 H1 #14 0.000 H2 #15 0.150 H3 #16 0.150 H4 #17 0.000 H51 #18 0.000 H52 #19 0.000 H81 #20 0.000 H82 #21 0.000 H83 #22 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H51 #18 0.000 H52 #19 0.000 H81 #20 0.000 H82 #21 0.000 H83 #22 0.000 +model DUDMUK RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons + # ty N1 #1 8 N2 #2 9 C3 #3 3 N4 #4 9 N5 #5 9 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 1 O10 #10 6 H71 #11 5 H72 #12 5 H81 #13 5 H82 #14 5 H83 #15 5 H91 #16 5 H92 #17 5 H93 #18 5 H10 #19 21 H1 #20 5 + # symb N1 #1 NR N2 #2 N=C C3 #3 C=N N4 #4 N=N N5 #5 N=N C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 CR O10 #10 OR H71 #11 HC H72 #12 HC H81 #13 HC H82 #14 HC H83 #15 HC H91 #16 HC H92 #17 HC H93 #18 HC H10 #19 HOR H1 #20 HC + # char N1 #1 -0.487 N2 #2 -0.503 C3 #3 0.600 N4 #4 -0.211 N5 #5 -0.246 C6 #6 0.516 C7 #7 0.550 C8 #8 0.061 C9 #9 0.000 O10 #10 -0.680 H71 #11 0.000 H72 #12 0.000 H81 #13 0.000 H82 #14 0.000 H83 #15 0.000 H91 #16 0.000 H92 #17 0.000 H93 #18 0.000 H10 #19 0.400 H1 #20 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 C3 #3 0.000 N4 #4 0.000 N5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 O10 #10 0.000 H71 #11 0.000 H72 #12 0.000 H81 #13 0.000 H82 #14 0.000 H83 #15 0.000 H91 #16 0.000 H92 #17 0.000 H93 #18 0.000 H10 #19 0.000 H1 #20 0.000 +model DUGMUN RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 N1 #2 9 N2 #3 42 C1 #4 3 C2 #5 4 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 H1 #12 21 H4 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 H8 #17 5 + # symb O1 #1 -O- N1 #2 N=C N2 #3 NSP C1 #4 C=N C2 #5 CSP C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB H1 #12 HO H4 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC H8 #17 HC + # char O1 #1 -0.337 N1 #2 -0.513 N2 #3 -0.557 C1 #4 0.469 C2 #5 0.452 C3 #6 0.086 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.150 C7 #10 -0.150 C8 #11 -0.150 H1 #12 0.400 H4 #13 0.150 H5 #14 0.150 H6 #15 0.150 H7 #16 0.150 H8 #17 0.150 + # fchar O1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H1 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 +model DUGWIL01 + # ty S1 #1 18 S2 #2 18 O1 #3 32 O2 #4 32 O3 #5 32 O4 #6 32 N1 #7 43 C1 #8 1 C2 #9 1 C3 #10 1 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 H9 #19 5 + # symb S1 #1 SO2N S2 #2 SO2N O1 #3 O2S O2 #4 O2S O3 #5 O2S O4 #6 O2S N1 #7 NSO2 C1 #8 CR C2 #9 CR C3 #10 CR H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC H9 #19 HC + # char S1 #1 1.333 S2 #2 1.333 O1 #3 -0.650 O2 #4 -0.650 O3 #5 -0.650 O4 #6 -0.650 N1 #7 -0.632 C1 #8 0.105 C2 #9 0.105 C3 #10 0.356 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 H9 #19 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 O4 #6 0.000 N1 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 H9 #19 0.000 +model DUJHEV RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 8 SUBRING 1 has 6 PI electrons + # ty S1 #1 18 O1 #2 32 O2 #3 32 C1 #4 2 C2 #5 2 C3 #6 2 C4 #7 2 N1 #8 10 C5 #9 3 C6 #10 1 O3 #11 7 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H61 #16 5 H62 #17 5 H63 #18 5 + # symb S1 #1 SO2 O1 #2 O2S O2 #3 O2S C1 #4 C=C C2 #5 C=C C3 #6 C=C C4 #7 C=C N1 #8 NC=O C5 #9 C=ON C6 #10 CR O3 #11 O=CN H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H61 #16 HC H62 #17 HC H63 #18 HC + # char S1 #1 1.334 O1 #2 -0.650 O2 #3 -0.650 C1 #4 -0.041 C2 #5 -0.167 C3 #6 -0.167 C4 #7 -0.041 N1 #8 -0.278 C5 #9 0.569 C6 #10 0.061 O3 #11 -0.570 H1 #12 0.150 H2 #13 0.150 H3 #14 0.150 H4 #15 0.150 H61 #16 0.000 H62 #17 0.000 H63 #18 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 N1 #8 0.000 C5 #9 0.000 C6 #10 0.000 O3 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H61 #16 0.000 H62 #17 0.000 H63 #18 0.000 +model DUJMEA RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 8 PI PAIR ON SP2-N 11 SUBRING 2 has 4 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 15 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 1 O1 #2 6 C2 #3 1 C3 #4 1 N1 #5 8 C100 #6 1 C4 #7 1 O2 #8 6 C5 #9 1 C6 #10 1 N2 #11 8 C200 #12 1 C7 #13 63 C8 #14 64 O3 #15 59 C9 #16 63 C10 #17 64 H4 #18 5 H8 #19 5 H9 #20 5 H10 #21 5 H21 #22 5 H22 #23 5 H31 #24 5 H32 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H51 #29 5 H52 #30 5 H61 #31 5 H62 #32 5 H21_ #33 5 H22_ #34 5 H23_ #35 5 + # symb C1 #1 CR O1 #2 OR C2 #3 CR C3 #4 CR N1 #5 NR C100 #6 CR C4 #7 CR O2 #8 OR C5 #9 CR C6 #10 CR N2 #11 NR C200 #12 CR C7 #13 C5A C8 #14 C5B O3 #15 OFUR C9 #16 C5A C10 #17 C5B H4 #18 HC H8 #19 HC H9 #20 HC H10 #21 HC H21 #22 HC H22 #23 HC H31 #24 HC H32 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H51 #29 HC H52 #30 HC H61 #31 HC H62 #32 HC H21_ #33 HC H22_ #34 HC H23_ #35 HC + # char C1 #1 0.730 O1 #2 -0.560 C2 #3 0.280 C3 #4 0.270 N1 #5 -0.810 C100 #6 0.270 C4 #7 0.550 O2 #8 -0.560 C5 #9 0.280 C6 #10 0.270 N2 #11 -0.810 C200 #12 0.270 C7 #13 -0.040 C8 #14 -0.150 O3 #15 -0.280 C9 #16 -0.010 C10 #17 -0.150 H4 #18 0.000 H8 #19 0.150 H9 #20 0.150 H10 #21 0.150 H21 #22 0.000 H22 #23 0.000 H31 #24 0.000 H32 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H51 #29 0.000 H52 #30 0.000 H61 #31 0.000 H62 #32 0.000 H21_ #33 0.000 H22_ #34 0.000 H23_ #35 0.000 + # fchar C1 #1 0.000 O1 #2 0.000 C2 #3 0.000 C3 #4 0.000 N1 #5 0.000 C100 #6 0.000 C4 #7 0.000 O2 #8 0.000 C5 #9 0.000 C6 #10 0.000 N2 #11 0.000 C200 #12 0.000 C7 #13 0.000 C8 #14 0.000 O3 #15 0.000 C9 #16 0.000 C10 #17 0.000 H4 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 H21 #22 0.000 H22 #23 0.000 H31 #24 0.000 H32 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H51 #29 0.000 H52 #30 0.000 H61 #31 0.000 H62 #32 0.000 H21_ #33 0.000 H22_ #34 0.000 H23_ #35 0.000 +model DUKVAG RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 N1 #2 81 N2 #3 66 N3 #4 55 N4 #5 40 C1 #6 80 C2 #7 63 H1 #8 36 H31 #9 36 H32 #10 36 H41 #11 28 H42 #12 28 + # symb S1 #1 STHI N1 #2 NIM+ N2 #3 N5B N3 #4 NCN+ N4 #5 NC=N C1 #6 CIM+ C2 #7 C5A H1 #8 HIM+ H31 #9 HNN+ H32 #10 HNN+ H41 #11 HNCN H42 #12 HNCN + # char S1 #1 -0.133 N1 #2 -0.397 N2 #3 -0.291 N3 #4 -0.732 N4 #5 -0.884 C1 #6 0.825 C2 #7 0.462 H1 #8 0.450 H31 #9 0.450 H32 #10 0.450 H41 #11 0.400 H42 #12 0.400 + # fchar S1 #1 0.000 N1 #2 0.500 N2 #3 0.000 N3 #4 0.500 N4 #5 0.000 C1 #6 0.000 C2 #7 0.000 H1 #8 0.000 H31 #9 0.000 H32 #10 0.000 H41 #11 0.000 H42 #12 0.000 +model DUKWUB RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 3 SUBRING 1 has 2 PI electrons + # ty S1 #1 18 O51 #2 6 O1 #3 6 O11 #4 32 O12 #5 6 O13 #6 32 O21 #7 6 O31 #8 6 N1 #9 8 C1 #10 1 C2 #11 1 C3 #12 1 C4 #13 1 C5 #14 1 C11 #15 1 H11 #16 23 H12 #17 23 H112 #18 5 H111 #19 5 H1 #20 5 H4 #21 5 H2 #22 5 H3 #23 5 H5 #24 5 H21 #25 21 H31 #26 21 H51 #27 21 H120 #28 33 + # symb S1 #1 SO3 O51 #2 OR O1 #3 OR O11 #4 O2S O12 #5 OSO2 O13 #6 O2S O21 #7 OR O31 #8 OR N1 #9 NR C1 #10 CR C2 #11 CR C3 #12 CR C4 #13 CR C5 #14 CR C11 #15 CR H11 #16 HNR H12 #17 HNR H112 #18 HC H111 #19 HC H1 #20 HC H4 #21 HC H2 #22 HC H3 #23 HC H5 #24 HC H21 #25 HOR H31 #26 HOR H51 #27 HOR H120 #28 HOS + # char S1 #1 1.379 O51 #2 -0.680 O1 #3 -0.560 O11 #4 -0.650 O12 #5 -0.684 O13 #6 -0.650 O21 #7 -0.680 O31 #8 -0.680 N1 #9 -0.990 C1 #10 0.280 C2 #11 0.280 C3 #12 0.280 C4 #13 0.270 C5 #14 0.560 C11 #15 0.105 H11 #16 0.360 H12 #17 0.360 H112 #18 0.000 H111 #19 0.000 H1 #20 0.000 H4 #21 0.000 H2 #22 0.000 H3 #23 0.000 H5 #24 0.000 H21 #25 0.400 H31 #26 0.400 H51 #27 0.400 H120 #28 0.500 + # fchar S1 #1 0.000 O51 #2 0.000 O1 #3 0.000 O11 #4 0.000 O12 #5 0.000 O13 #6 0.000 O21 #7 0.000 O31 #8 0.000 N1 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C11 #15 0.000 H11 #16 0.000 H12 #17 0.000 H112 #18 0.000 H111 #19 0.000 H1 #20 0.000 H4 #21 0.000 H2 #22 0.000 H3 #23 0.000 H5 #24 0.000 H21 #25 0.000 H31 #26 0.000 H51 #27 0.000 H120 #28 0.000 +model DULTIN RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 5 SUBRING 1 has 2 PI electrons PI PAIR ON SP2-N 5 SUBRING 3 has 2 PI electrons + # ty BR1 #1 13 C1 #2 20 C2 #3 1 C3 #4 1 N1 #5 8 C5 #6 1 C6 #7 1 C7 #8 20 C8 #9 20 C9 #10 1 O1 #11 6 O2 #12 6 H2 #13 5 H3 #14 5 H31 #15 5 H5 #16 5 H51 #17 5 H6 #18 5 H61 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H91 #23 5 H21 #24 21 + # symb BR1 #1 BR C1 #2 CR4R C2 #3 CR C3 #4 CR N1 #5 NR C5 #6 CR C6 #7 CR C7 #8 CR4R C8 #9 CR4R C9 #10 CR O1 #11 OR O2 #12 OR H2 #13 HC H3 #14 HC H31 #15 HC H5 #16 HC H51 #17 HC H6 #18 HC H61 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H91 #23 HC H21 #24 HOR + # char BR1 #1 -0.230 C1 #2 0.258 C2 #3 0.230 C3 #4 0.270 N1 #5 -0.750 C5 #6 0.270 C6 #7 0.000 C7 #8 0.258 C8 #9 0.210 C9 #10 0.280 O1 #11 -0.516 O2 #12 -0.680 H2 #13 0.000 H3 #14 0.000 H31 #15 0.000 H5 #16 0.000 H51 #17 0.000 H6 #18 0.000 H61 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H91 #23 0.000 H21 #24 0.400 + # fchar BR1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 N1 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 O1 #11 0.000 O2 #12 0.000 H2 #13 0.000 H3 #14 0.000 H31 #15 0.000 H5 #16 0.000 H51 #17 0.000 H6 #18 0.000 H61 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H91 #23 0.000 H21 #24 0.000 +model DUMHIC RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 2 PI electrons PI PAIR ON O OR S 4 PI PAIR ON O OR S 8 SUBRING 2 has 4 PI electrons + # ty O1 #1 6 C2 #2 1 C3 #3 1 O3 #4 6 C34 #5 3 S1 #6 16 C4 #7 1 O4 #8 6 C5 #9 1 O5 #10 6 C51 #11 1 C6 #12 1 O6 #13 6 C61 #14 1 H21 #15 5 H22 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H511 #20 5 H512 #21 5 H513 #22 5 H6 #23 5 H611 #24 5 H612 #25 5 H613 #26 5 + # symb O1 #1 OR C2 #2 CR C3 #3 CR O3 #4 OC=S C34 #5 C=S S1 #6 S=C C4 #7 CR O4 #8 OC=S C5 #9 CR O5 #10 OR C51 #11 CR C6 #12 CR O6 #13 OR C61 #14 CR H21 #15 HC H22 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H511 #20 HC H512 #21 HC H513 #22 HC H6 #23 HC H611 #24 HC H612 #25 HC H613 #26 HC + # char O1 #1 -0.560 C2 #2 0.280 C3 #3 0.280 O3 #4 -0.430 C34 #5 0.680 S1 #6 -0.380 C4 #7 0.280 O4 #8 -0.430 C5 #9 0.280 O5 #10 -0.560 C51 #11 0.280 C6 #12 0.560 O6 #13 -0.560 C61 #14 0.280 H21 #15 0.000 H22 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H511 #20 0.000 H512 #21 0.000 H513 #22 0.000 H6 #23 0.000 H611 #24 0.000 H612 #25 0.000 H613 #26 0.000 + # fchar O1 #1 0.000 C2 #2 0.000 C3 #3 0.000 O3 #4 0.000 C34 #5 0.000 S1 #6 0.000 C4 #7 0.000 O4 #8 0.000 C5 #9 0.000 O5 #10 0.000 C51 #11 0.000 C6 #12 0.000 O6 #13 0.000 C61 #14 0.000 H21 #15 0.000 H22 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H511 #20 0.000 H512 #21 0.000 H513 #22 0.000 H6 #23 0.000 H611 #24 0.000 H612 #25 0.000 H613 #26 0.000 +model DUMPAC RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty O1 #1 6 C2 #2 20 C3 #3 20 C4 #4 20 C5 #5 1 C6 #6 1 N7 #7 8 C8 #8 1 N9 #9 45 O10 #10 32 O11 #11 32 N12 #12 8 C13 #13 1 N14 #14 45 O15 #15 32 O16 #16 32 H21 #17 5 H22 #18 5 H41 #19 5 H42 #20 5 H51 #21 5 H52 #22 5 H61 #23 5 H62 #24 5 H81 #25 5 H82 #26 5 H83 #27 5 H131 #28 5 H132 #29 5 H133 #30 5 + # symb O1 #1 OR C2 #2 CR4R C3 #3 CR4R C4 #4 CR4R C5 #5 CR C6 #6 CR N7 #7 NR C8 #8 CR N9 #9 NO2 O10 #10 O2N O11 #11 O2N N12 #12 NR C13 #13 CR N14 #14 NO2 O15 #15 O2N O16 #16 O2N H21 #17 HC H22 #18 HC H41 #19 HC H42 #20 HC H51 #21 HC H52 #22 HC H61 #23 HC H62 #24 HC H81 #25 HC H82 #26 HC H83 #27 HC H131 #28 HC H132 #29 HC H133 #30 HC + # char O1 #1 -0.516 C2 #2 0.258 C3 #3 0.000 C4 #4 0.258 C5 #5 0.270 C6 #6 0.270 N7 #7 -0.533 C8 #8 0.270 N9 #9 1.033 O10 #10 -0.520 O11 #11 -0.520 N12 #12 -0.533 C13 #13 0.270 N14 #14 1.033 O15 #15 -0.520 O16 #16 -0.520 H21 #17 0.000 H22 #18 0.000 H41 #19 0.000 H42 #20 0.000 H51 #21 0.000 H52 #22 0.000 H61 #23 0.000 H62 #24 0.000 H81 #25 0.000 H82 #26 0.000 H83 #27 0.000 H131 #28 0.000 H132 #29 0.000 H133 #30 0.000 + # fchar O1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N7 #7 0.000 C8 #8 0.000 N9 #9 0.000 O10 #10 0.000 O11 #11 0.000 N12 #12 0.000 C13 #13 0.000 N14 #14 0.000 O15 #15 0.000 O16 #16 0.000 H21 #17 0.000 H22 #18 0.000 H41 #19 0.000 H42 #20 0.000 H51 #21 0.000 H52 #22 0.000 H61 #23 0.000 H62 #24 0.000 H81 #25 0.000 H82 #26 0.000 H83 #27 0.000 H131 #28 0.000 H132 #29 0.000 H133 #30 0.000 +model DUPHEB RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 CL1 #2 12 C1 #3 2 C2 #4 2 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 1 N1 #12 45 N2 #13 40 O1 #14 32 O2 #15 32 H1 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H19 #21 5 H29 #22 5 H39 #23 5 H2 #24 28 + # symb S1 #1 S CL1 #2 CL C1 #3 C=C C2 #4 C=C C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CR N1 #12 NO2 N2 #13 NC=C O1 #14 O2N O2 #15 O2N H1 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H19 #21 HC H29 #22 HC H39 #23 HC H2 #24 HNCC + # char S1 #1 -0.331 CL1 #2 -0.177 C1 #3 0.054 C2 #4 0.201 C3 #5 0.100 C4 #6 0.177 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.150 C9 #11 0.230 N1 #12 0.836 N2 #13 -0.600 O1 #14 -0.520 O2 #15 -0.520 H1 #16 0.150 H5 #17 0.150 H6 #18 0.150 H7 #19 0.150 H8 #20 0.150 H19 #21 0.000 H29 #22 0.000 H39 #23 0.000 H2 #24 0.400 + # fchar S1 #1 0.000 CL1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 N1 #12 0.000 N2 #13 0.000 O1 #14 0.000 O2 #15 0.000 H1 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H19 #21 0.000 H29 #22 0.000 H39 #23 0.000 H2 #24 0.000 +model DUPTAJ RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 C2 #2 63 C3 #3 64 C4 #4 64 C5 #5 63 S6 #6 18 O7 #7 32 O8 #8 32 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 37 C13 #13 37 C14 #14 37 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H10 #19 5 H11 #20 5 H12 #21 5 H13 #22 5 H14 #23 5 + # symb N1 #1 NPYL C2 #2 C5A C3 #3 C5B C4 #4 C5B C5 #5 C5A S6 #6 SO2N O7 #7 O2S O8 #8 O2S C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 CB C13 #13 CB C14 #14 CB H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H10 #19 HC H11 #20 HC H12 #21 HC H13 #22 HC H14 #23 HC + # char N1 #1 0.317 C2 #2 -0.302 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.302 S6 #6 1.295 O7 #7 -0.650 O8 #8 -0.650 C9 #9 -0.009 C10 #10 -0.150 C11 #11 -0.150 C12 #12 -0.150 C13 #13 -0.150 C14 #14 -0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.150 H10 #19 0.150 H11 #20 0.150 H12 #21 0.150 H13 #22 0.150 H14 #23 0.150 + # fchar N1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 S6 #6 0.000 O7 #7 0.000 O8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H10 #19 0.000 H11 #20 0.000 H12 #21 0.000 H13 #22 0.000 H14 #23 0.000 +model DURDID RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons + # ty C1 #1 2 C2 #2 2 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 1 N1 #7 67 N2 #8 67 O1 #9 32 O2 #10 32 H21 #11 5 H41 #12 5 H42 #13 5 H43 #14 5 H51 #15 5 H52 #16 5 H53 #17 5 H61 #18 5 H62 #19 5 H63 #20 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 CR N1 #7 N2OX N2 #8 N2OX O1 #9 OXN O2 #10 OXN H21 #11 HC H41 #12 HC H42 #13 HC H43 #14 HC H51 #15 HC H52 #16 HC H53 #17 HC H61 #18 HC H62 #19 HC H63 #20 HC + # char C1 #1 -0.174 C2 #2 -0.288 C3 #3 0.237 C4 #4 0.138 C5 #5 0.000 C6 #6 0.000 N1 #7 0.534 N2 #8 0.669 O1 #9 -0.633 O2 #10 -0.633 H21 #11 0.150 H41 #12 0.000 H42 #13 0.000 H43 #14 0.000 H51 #15 0.000 H52 #16 0.000 H53 #17 0.000 H61 #18 0.000 H62 #19 0.000 H63 #20 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 0.000 N2 #8 0.000 O1 #9 0.000 O2 #10 0.000 H21 #11 0.000 H41 #12 0.000 H42 #13 0.000 H43 #14 0.000 H51 #15 0.000 H52 #16 0.000 H53 #17 0.000 H61 #18 0.000 H62 #19 0.000 H63 #20 0.000 +model DUTHIJ RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 14 PI PAIR ON O OR S 13 SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 16 SUBRING 1 has 4 PI electrons + # ty C2 #1 37 C3 #2 37 C4 #3 37 C5 #4 37 C6 #5 37 C7 #6 37 C9 #7 1 C10 #8 1 C11 #9 57 C13 #10 1 C14 #11 1 C17 #12 1 O1 #13 6 O8 #14 6 O16 #15 6 N12 #16 55 N15 #17 55 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H91 #22 5 H92 #23 5 H12 #24 36 H131 #25 5 H132 #26 5 H141 #27 5 H142 #28 5 H15 #29 36 H171 #30 5 H172 #31 5 H173 #32 5 + # symb C2 #1 CB C3 #2 CB C4 #3 CB C5 #4 CB C6 #5 CB C7 #6 CB C9 #7 CR C10 #8 CR C11 #9 CNN+ C13 #10 CR C14 #11 CR C17 #12 CR O1 #13 OC=C O8 #14 OC=C O16 #15 OR N12 #16 NCN+ N15 #17 NCN+ H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H91 #22 HC H92 #23 HC H12 #24 HNN+ H131 #25 HC H132 #26 HC H141 #27 HC H142 #28 HC H15 #29 HNN+ H171 #30 HC H172 #31 HC H173 #32 HC + # char C2 #1 0.083 C3 #2 -0.150 C4 #3 -0.150 C5 #4 -0.150 C6 #5 -0.150 C7 #6 0.083 C9 #7 0.280 C10 #8 0.665 C11 #9 0.604 C13 #10 0.489 C14 #11 0.489 C17 #12 0.280 O1 #13 -0.363 O8 #14 -0.363 O16 #15 -0.560 N12 #16 -0.794 N15 #17 -0.794 H3 #18 0.150 H4 #19 0.150 H5 #20 0.150 H6 #21 0.150 H91 #22 0.000 H92 #23 0.000 H12 #24 0.450 H131 #25 0.000 H132 #26 0.000 H141 #27 0.000 H142 #28 0.000 H15 #29 0.450 H171 #30 0.000 H172 #31 0.000 H173 #32 0.000 + # fchar C2 #1 0.000 C3 #2 0.000 C4 #3 0.000 C5 #4 0.000 C6 #5 0.000 C7 #6 0.000 C9 #7 0.000 C10 #8 0.000 C11 #9 0.000 C13 #10 0.000 C14 #11 0.000 C17 #12 0.000 O1 #13 0.000 O8 #14 0.000 O16 #15 0.000 N12 #16 0.500 N15 #17 0.500 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H91 #22 0.000 H92 #23 0.000 H12 #24 0.000 H131 #25 0.000 H132 #26 0.000 H141 #27 0.000 H142 #28 0.000 H15 #29 0.000 H171 #30 0.000 H172 #31 0.000 H173 #32 0.000 +model DUVHUX10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons + # ty S1 #1 15 S2 #2 15 S3 #3 16 N1 #4 38 N2 #5 38 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 2 C6 #11 2 C7 #12 3 C8 #13 2 C9 #14 2 C10 #15 1 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H101 #21 5 H102 #22 5 H103 #23 5 + # symb S1 #1 S S2 #2 S S3 #3 S=C N1 #4 NPYD N2 #5 NPYD C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 C=C C6 #11 C=C C7 #12 CSS C8 #13 C=C C9 #14 C=C C10 #15 CR H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H101 #21 HC H102 #22 HC H103 #23 HC + # char S1 #1 -0.101 S2 #2 -0.141 S3 #3 -0.380 N1 #4 -0.620 N2 #5 -0.620 C1 #6 0.338 C2 #7 0.160 C3 #8 0.160 C4 #9 0.160 C5 #10 -0.178 C6 #11 -0.150 C7 #12 0.507 C8 #13 -0.124 C9 #14 0.101 C10 #15 0.138 H2 #16 0.150 H3 #17 0.150 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 H101 #21 0.000 H102 #22 0.000 H103 #23 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 N1 #4 0.000 N2 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H101 #21 0.000 H102 #22 0.000 H103 #23 0.000 +model DUVXIB RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 3 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 8 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty N1 #1 10 C2 #2 3 N3 #3 10 C4 #4 64 C5 #5 64 C6 #6 3 N7 #7 65 N8 #8 39 N9 #9 65 O2 #10 7 C3 #11 1 O6 #12 7 H1 #13 28 H13 #14 5 H23 #15 5 H33 #16 5 H8 #17 23 + # symb N1 #1 NC=O C2 #2 CONN N3 #3 NC=O C4 #4 C5B C5 #5 C5B C6 #6 C=ON N7 #7 N5A N8 #8 NPYL N9 #9 N5A O2 #10 O=CN C3 #11 CR O6 #12 O=CN H1 #13 HNCO H13 #14 HC H23 #15 HC H33 #16 HC H8 #17 HPYL + # char N1 #1 -0.490 C2 #2 0.690 N3 #3 -0.423 C4 #4 0.352 C5 #5 0.203 C6 #6 0.716 N7 #7 -0.707 N8 #8 0.566 N9 #9 -0.707 O2 #10 -0.570 C3 #11 0.300 O6 #12 -0.570 H1 #13 0.370 H13 #14 0.000 H23 #15 0.000 H33 #16 0.000 H8 #17 0.270 + # fchar N1 #1 0.000 C2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N7 #7 0.000 N8 #8 0.000 N9 #9 0.000 O2 #10 0.000 C3 #11 0.000 O6 #12 0.000 H1 #13 0.000 H13 #14 0.000 H23 #15 0.000 H33 #16 0.000 H8 #17 0.000 +model DUWGAD RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 2 PI electrons + # ty P1 #1 26 CL1 #2 12 N1 #3 8 C11 #4 1 C2 #5 1 C3 #6 1 N4 #7 34 C41 #8 1 C42 #9 1 H111 #10 5 H112 #11 5 H113 #12 5 H21 #13 5 H22 #14 5 H31 #15 5 H32 #16 5 H411 #17 5 H412 #18 5 H413 #19 5 H421 #20 5 H422 #21 5 H423 #22 5 + # symb P1 #1 P CL1 #2 CL N1 #3 NR C11 #4 CR C2 #5 CR C3 #6 CR N4 #7 NR+ C41 #8 CR C42 #9 CR H111 #10 HC H112 #11 HC H113 #12 HC H21 #13 HC H22 #14 HC H31 #15 HC H32 #16 HC H411 #17 HC H412 #18 HC H413 #19 HC H421 #20 HC H422 #21 HC H423 #22 HC + # char P1 #1 0.671 CL1 #2 -0.211 N1 #3 -0.651 C11 #4 0.270 C2 #5 0.270 C3 #6 0.503 N4 #7 -0.858 C41 #8 0.503 C42 #9 0.503 H111 #10 0.000 H112 #11 0.000 H113 #12 0.000 H21 #13 0.000 H22 #14 0.000 H31 #15 0.000 H32 #16 0.000 H411 #17 0.000 H412 #18 0.000 H413 #19 0.000 H421 #20 0.000 H422 #21 0.000 H423 #22 0.000 + # fchar P1 #1 0.000 CL1 #2 0.000 N1 #3 0.000 C11 #4 0.000 C2 #5 0.000 C3 #6 0.000 N4 #7 1.000 C41 #8 0.000 C42 #9 0.000 H111 #10 0.000 H112 #11 0.000 H113 #12 0.000 H21 #13 0.000 H22 #14 0.000 H31 #15 0.000 H32 #16 0.000 H411 #17 0.000 H412 #18 0.000 H413 #19 0.000 H421 #20 0.000 H422 #21 0.000 H423 #22 0.000 +model DUWKUB RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 4 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 O1 #4 59 C4 #5 64 O9 #6 6 N6 #7 40 N5 #8 65 N2 #9 65 C3 #10 64 C7 #11 3 N8 #12 9 C11 #13 1 N12 #14 40 C10 #15 1 H101 #16 5 H102 #17 5 H103 #18 5 H122 #19 28 H121 #20 28 H6 #21 28 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL O1 #4 OFUR C4 #5 C5B O9 #6 OR N6 #7 NC=N N5 #8 N5A N2 #9 N5A C3 #10 C5B C7 #11 C=N N8 #12 N=C C11 #13 CR N12 #14 NC=N C10 #15 CR H101 #16 HC H102 #17 HC H103 #18 HC H122 #19 HNCN H121 #20 HNCN H6 #21 HNCN + # char CL1 #1 -0.290 CL2 #2 -0.290 CL3 #3 -0.290 O1 #4 0.242 C4 #5 0.372 O9 #6 -0.217 N6 #7 -0.533 N5 #8 -0.410 N2 #9 -0.410 C3 #10 0.372 C7 #11 0.439 N8 #12 -0.513 C11 #13 0.931 N12 #14 -0.883 C10 #15 0.280 H101 #16 0.000 H102 #17 0.000 H103 #18 0.000 H122 #19 0.400 H121 #20 0.400 H6 #21 0.400 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 O1 #4 0.000 C4 #5 0.000 O9 #6 0.000 N6 #7 0.000 N5 #8 0.000 N2 #9 0.000 C3 #10 0.000 C7 #11 0.000 N8 #12 0.000 C11 #13 0.000 N12 #14 0.000 C10 #15 0.000 H101 #16 0.000 H102 #17 0.000 H103 #18 0.000 H122 #19 0.000 H121 #20 0.000 H6 #21 0.000 +model DUWRIW RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 11 SUBRING 1 has 4 PI electrons + # ty C1 #1 2 N1 #2 45 O1 #3 32 O2 #4 32 C2 #5 2 C3 #6 1 O3 #7 6 C4 #8 1 O4 #9 6 C5 #10 1 O5 #11 6 C6 #12 1 O6 #13 6 H2 #14 5 H3 #15 5 H30 #16 21 H4 #17 5 H40 #18 21 H5 #19 5 H61 #20 5 H62 #21 5 H60 #22 21 + # symb C1 #1 C=C N1 #2 NO2 O1 #3 O2N O2 #4 O2N C2 #5 C=C C3 #6 CR O3 #7 OR C4 #8 CR O4 #9 OR C5 #10 CR O5 #11 OC=C C6 #12 CR O6 #13 OR H2 #14 HC H3 #15 HC H30 #16 HOR H4 #17 HC H40 #18 HOR H5 #19 HC H61 #20 HC H62 #21 HC H60 #22 HOR + # char C1 #1 0.281 N1 #2 0.836 O1 #3 -0.520 O2 #4 -0.520 C2 #5 -0.288 C3 #6 0.418 O3 #7 -0.680 C4 #8 0.280 O4 #9 -0.680 C5 #10 0.280 O5 #11 -0.357 C6 #12 0.280 O6 #13 -0.680 H2 #14 0.150 H3 #15 0.000 H30 #16 0.400 H4 #17 0.000 H40 #18 0.400 H5 #19 0.000 H61 #20 0.000 H62 #21 0.000 H60 #22 0.400 + # fchar C1 #1 0.000 N1 #2 0.000 O1 #3 0.000 O2 #4 0.000 C2 #5 0.000 C3 #6 0.000 O3 #7 0.000 C4 #8 0.000 O4 #9 0.000 C5 #10 0.000 O5 #11 0.000 C6 #12 0.000 O6 #13 0.000 H2 #14 0.000 H3 #15 0.000 H30 #16 0.000 H4 #17 0.000 H40 #18 0.000 H5 #19 0.000 H61 #20 0.000 H62 #21 0.000 H60 #22 0.000 +model DUXTIZ + # ty C1 #1 3 N1 #2 10 O1 #3 6 O2 #4 7 H1 #5 28 H2 #6 21 C1B #7 3 N1B #8 10 O2B #9 7 O1B #10 6 H1B #11 28 H2B #12 21 + # symb C1 #1 C=ON N1 #2 NC=O O1 #3 -O- O2 #4 O=CN H1 #5 HNCO H2 #6 HO C1B #7 C=ON N1B #8 NC=O O2B #9 O=CN O1B #10 -O- H1B #11 HNCO H2B #12 HO + # char C1 #1 0.630 N1 #2 -0.395 O1 #3 -0.435 O2 #4 -0.570 H1 #5 0.370 H2 #6 0.400 C1B #7 0.630 N1B #8 -0.395 O2B #9 -0.570 O1B #10 -0.435 H1B #11 0.370 H2B #12 0.400 + # fchar C1 #1 0.000 N1 #2 0.000 O1 #3 0.000 O2 #4 0.000 H1 #5 0.000 H2 #6 0.000 C1B #7 0.000 N1B #8 0.000 O2B #9 0.000 O1B #10 0.000 H1B #11 0.000 H2B #12 0.000 +model DUXWUO RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 C2 #2 1 N3 #3 10 N4 #4 9 C5 #5 3 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 3 C13 #13 1 O14 #14 7 S15 #15 17 O16 #16 7 C17 #17 1 H2 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 H131 #24 5 H132 #25 5 H133 #26 5 H171 #27 5 H172 #28 5 H173 #29 5 + # symb S1 #1 S C2 #2 CR N3 #3 NC=O N4 #4 N=C C5 #5 C=N C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 C=ON C13 #13 CR O14 #14 O=CN S15 #15 S=O O16 #16 O=S C17 #17 CR H2 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC H131 #24 HC H132 #25 HC H133 #26 HC H171 #27 HC H172 #28 HC H173 #29 HC + # char S1 #1 -0.371 C2 #2 0.674 N3 #3 -0.298 N4 #4 -0.512 C5 #5 0.687 C6 #6 -0.143 C7 #7 -0.150 C8 #8 -0.150 C9 #9 -0.150 C10 #10 -0.150 C11 #11 -0.150 C12 #12 0.569 C13 #13 0.061 O14 #14 -0.570 S15 #15 0.211 O16 #16 -0.500 C17 #17 0.194 H2 #18 0.000 H7 #19 0.150 H8 #20 0.150 H9 #21 0.150 H10 #22 0.150 H11 #23 0.150 H131 #24 0.000 H132 #25 0.000 H133 #26 0.000 H171 #27 0.000 H172 #28 0.000 H173 #29 0.000 + # fchar S1 #1 0.000 C2 #2 0.000 N3 #3 0.000 N4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 O14 #14 0.000 S15 #15 0.000 O16 #16 0.000 C17 #17 0.000 H2 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H131 #24 0.000 H132 #25 0.000 H133 #26 0.000 H171 #27 0.000 H172 #28 0.000 H173 #29 0.000 +model DUXXAV RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 17 C2 #2 1 N3 #3 10 N4 #4 9 C5 #5 3 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 3 C13 #13 1 O14 #14 7 S15 #15 17 O16 #16 7 C17 #17 1 O18 #18 7 H2 #19 5 H11 #20 5 H10 #21 5 H9 #22 5 H8 #23 5 H7 #24 5 H131 #25 5 H132 #26 5 H133 #27 5 H171 #28 5 H172 #29 5 H173 #30 5 + # symb S1 #1 S=O C2 #2 CR N3 #3 NC=O N4 #4 N=C C5 #5 C=N C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 C=ON C13 #13 CR O14 #14 O=CN S15 #15 S=O O16 #16 O=S C17 #17 CR O18 #18 O=S H2 #19 HC H11 #20 HC H10 #21 HC H9 #22 HC H8 #23 HC H7 #24 HC H131 #25 HC H132 #26 HC H133 #27 HC H171 #28 HC H172 #29 HC H173 #30 HC + # char S1 #1 0.211 C2 #2 0.637 N3 #3 -0.298 N4 #4 -0.512 C5 #5 0.642 C6 #6 -0.143 C7 #7 -0.150 C8 #8 -0.150 C9 #9 -0.150 C10 #10 -0.150 C11 #11 -0.150 C12 #12 0.569 C13 #13 0.061 O14 #14 -0.570 S15 #15 0.211 O16 #16 -0.500 C17 #17 0.194 O18 #18 -0.500 H2 #19 0.000 H11 #20 0.150 H10 #21 0.150 H9 #22 0.150 H8 #23 0.150 H7 #24 0.150 H131 #25 0.000 H132 #26 0.000 H133 #27 0.000 H171 #28 0.000 H172 #29 0.000 H173 #30 0.000 + # fchar S1 #1 0.000 C2 #2 0.000 N3 #3 0.000 N4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 O14 #14 0.000 S15 #15 0.000 O16 #16 0.000 C17 #17 0.000 O18 #18 0.000 H2 #19 0.000 H11 #20 0.000 H10 #21 0.000 H9 #22 0.000 H8 #23 0.000 H7 #24 0.000 H131 #25 0.000 H132 #26 0.000 H133 #27 0.000 H171 #28 0.000 H172 #29 0.000 H173 #30 0.000 +model DUYNOA RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON SP2-N 9 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 9 SUBRING 2 has 2 PI electrons PI PAIR ON SP2-N 4 SUBRING 3 has 2 PI electrons + # ty C1 #1 1 O2 #2 6 C3 #3 1 N4 #4 8 C5 #5 1 C6 #6 1 C7 #7 1 C8 #8 1 N9 #9 8 C10 #10 1 C11 #11 1 C31 #12 1 N41 #13 8 C51 #14 1 C71 #15 1 N91 #16 8 H411 #17 23 H412 #18 23 H911 #19 23 H912 #20 23 H61 #21 5 H62 #22 5 H81 #23 5 H82 #24 5 H101 #25 5 H102 #26 5 H111 #27 5 H112 #28 5 H113 #29 5 H311 #30 5 H312 #31 5 H313 #32 5 H711 #33 5 H712 #34 5 H713 #35 5 H511 #36 5 H512 #37 5 H513 #38 5 + # symb C1 #1 CR O2 #2 OR C3 #3 CR N4 #4 NR C5 #5 CR C6 #6 CR C7 #7 CR C8 #8 CR N9 #9 NR C10 #10 CR C11 #11 CR C31 #12 CR N41 #13 NR C51 #14 CR C71 #15 CR N91 #16 NR H411 #17 HNR H412 #18 HNR H911 #19 HNR H912 #20 HNR H61 #21 HC H62 #22 HC H81 #23 HC H82 #24 HC H101 #25 HC H102 #26 HC H111 #27 HC H112 #28 HC H113 #29 HC H311 #30 HC H312 #31 HC H313 #32 HC H711 #33 HC H712 #34 HC H713 #35 HC H511 #36 HC H512 #37 HC H513 #38 HC + # char C1 #1 0.550 O2 #2 -0.560 C3 #3 0.550 N4 #4 -0.540 C5 #5 0.540 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 N9 #9 -0.540 C10 #10 0.000 C11 #11 0.000 C31 #12 0.000 N41 #13 -0.720 C51 #14 0.000 C71 #15 0.000 N91 #16 -0.720 H411 #17 0.360 H412 #18 0.360 H911 #19 0.360 H912 #20 0.360 H61 #21 0.000 H62 #22 0.000 H81 #23 0.000 H82 #24 0.000 H101 #25 0.000 H102 #26 0.000 H111 #27 0.000 H112 #28 0.000 H113 #29 0.000 H311 #30 0.000 H312 #31 0.000 H313 #32 0.000 H711 #33 0.000 H712 #34 0.000 H713 #35 0.000 H511 #36 0.000 H512 #37 0.000 H513 #38 0.000 + # fchar C1 #1 0.000 O2 #2 0.000 C3 #3 0.000 N4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 N9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C31 #12 0.000 N41 #13 0.000 C51 #14 0.000 C71 #15 0.000 N91 #16 0.000 H411 #17 0.000 H412 #18 0.000 H911 #19 0.000 H912 #20 0.000 H61 #21 0.000 H62 #22 0.000 H81 #23 0.000 H82 #24 0.000 H101 #25 0.000 H102 #26 0.000 H111 #27 0.000 H112 #28 0.000 H113 #29 0.000 H311 #30 0.000 H312 #31 0.000 H313 #32 0.000 H711 #33 0.000 H712 #34 0.000 H713 #35 0.000 H511 #36 0.000 H512 #37 0.000 H513 #38 0.000 +model DUYPES RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O4 #1 6 O5 #2 7 N1 #3 55 N2 #4 55 C2 #5 1 C3 #6 1 C4 #7 1 C5 #8 1 C6 #9 57 C7 #10 2 C8 #11 2 C9 #12 3 C10 #13 37 C11 #14 37 C12 #15 37 C13 #16 37 C14 #17 37 C15 #18 37 C16 #19 37 C17 #20 37 C18 #21 37 C19 #22 37 C20 #23 37 C21 #24 37 H22 #25 5 H23 #26 5 H24 #27 5 H31 #28 5 H32 #29 5 H33 #30 5 H41 #31 5 H42 #32 5 H43 #33 5 H51 #34 5 H52 #35 5 H53 #36 5 H8 #37 5 H11 #38 5 H12 #39 5 H13 #40 5 H14 #41 5 H15 #42 5 H17 #43 5 H18 #44 5 H19 #45 5 H20 #46 5 H21 #47 5 + # symb O4 #1 OC=C O5 #2 O=CR N1 #3 NCN+ N2 #4 NCN+ C2 #5 CR C3 #6 CR C4 #7 CR C5 #8 CR C6 #9 CNN+ C7 #10 C=C C8 #11 C=C C9 #12 C=OR C10 #13 CB C11 #14 CB C12 #15 CB C13 #16 CB C14 #17 CB C15 #18 CB C16 #19 CB C17 #20 CB C18 #21 CB C19 #22 CB C20 #23 CB C21 #24 CB H22 #25 HC H23 #26 HC H24 #27 HC H31 #28 HC H32 #29 HC H33 #30 HC H41 #31 HC H42 #32 HC H43 #33 HC H51 #34 HC H52 #35 HC H53 #36 HC H8 #37 HC H11 #38 HC H12 #39 HC H13 #40 HC H14 #41 HC H15 #42 HC H17 #43 HC H18 #44 HC H19 #45 HC H20 #46 HC H21 #47 HC + # char O4 #1 -0.215 O5 #2 -0.570 N1 #3 -0.833 N2 #4 -0.833 C2 #5 0.489 C3 #6 0.489 C4 #7 0.489 C5 #8 0.489 C6 #9 0.847 C7 #10 0.048 C8 #11 -0.136 C9 #12 0.469 C10 #13 0.028 C11 #14 -0.150 C12 #15 -0.150 C13 #16 -0.150 C14 #17 -0.150 C15 #18 -0.150 C16 #19 0.086 C17 #20 -0.150 C18 #21 -0.150 C19 #22 -0.150 C20 #23 -0.150 C21 #24 -0.150 H22 #25 0.000 H23 #26 0.000 H24 #27 0.000 H31 #28 0.000 H32 #29 0.000 H33 #30 0.000 H41 #31 0.000 H42 #32 0.000 H43 #33 0.000 H51 #34 0.000 H52 #35 0.000 H53 #36 0.000 H8 #37 0.150 H11 #38 0.150 H12 #39 0.150 H13 #40 0.150 H14 #41 0.150 H15 #42 0.150 H17 #43 0.150 H18 #44 0.150 H19 #45 0.150 H20 #46 0.150 H21 #47 0.150 + # fchar O4 #1 0.000 O5 #2 0.000 N1 #3 0.500 N2 #4 0.500 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 C13 #16 0.000 C14 #17 0.000 C15 #18 0.000 C16 #19 0.000 C17 #20 0.000 C18 #21 0.000 C19 #22 0.000 C20 #23 0.000 C21 #24 0.000 H22 #25 0.000 H23 #26 0.000 H24 #27 0.000 H31 #28 0.000 H32 #29 0.000 H33 #30 0.000 H41 #31 0.000 H42 #32 0.000 H43 #33 0.000 H51 #34 0.000 H52 #35 0.000 H53 #36 0.000 H8 #37 0.000 H11 #38 0.000 H12 #39 0.000 H13 #40 0.000 H14 #41 0.000 H15 #42 0.000 H17 #43 0.000 H18 #44 0.000 H19 #45 0.000 H20 #46 0.000 H21 #47 0.000 +model DUYRAQ RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons + # ty P1 #1 26 P2 #2 26 N1 #3 8 H1 #4 23 N2 #5 8 H2 #6 23 C1 #7 1 C2 #8 1 C3 #9 1 C4 #10 1 C5 #11 1 C6 #12 1 C7 #13 1 C8 #14 1 C9 #15 1 H11 #16 5 H12 #17 5 H31 #18 5 H32 #19 5 H33 #20 5 H41 #21 5 H42 #22 5 H43 #23 5 H51 #24 5 H52 #25 5 H53 #26 5 H71 #27 5 H72 #28 5 H73 #29 5 H81 #30 5 H82 #31 5 H83 #32 5 H91 #33 5 H92 #34 5 H93 #35 5 + # symb P1 #1 P P2 #2 P N1 #3 NR H1 #4 HNR N2 #5 NR H2 #6 HNR C1 #7 CR C2 #8 CR C3 #9 CR C4 #10 CR C5 #11 CR C6 #12 CR C7 #13 CR C8 #14 CR C9 #15 CR H11 #16 HC H12 #17 HC H31 #18 HC H32 #19 HC H33 #20 HC H41 #21 HC H42 #22 HC H43 #23 HC H51 #24 HC H52 #25 HC H53 #26 HC H71 #27 HC H72 #28 HC H73 #29 HC H81 #30 HC H82 #31 HC H83 #32 HC H91 #33 HC H92 #34 HC H93 #35 HC + # char P1 #1 -0.223 P2 #2 -0.223 N1 #3 -0.471 H1 #4 0.360 N2 #5 -0.471 H2 #6 0.360 C1 #7 0.334 C2 #8 0.167 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.167 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 H11 #16 0.000 H12 #17 0.000 H31 #18 0.000 H32 #19 0.000 H33 #20 0.000 H41 #21 0.000 H42 #22 0.000 H43 #23 0.000 H51 #24 0.000 H52 #25 0.000 H53 #26 0.000 H71 #27 0.000 H72 #28 0.000 H73 #29 0.000 H81 #30 0.000 H82 #31 0.000 H83 #32 0.000 H91 #33 0.000 H92 #34 0.000 H93 #35 0.000 + # fchar P1 #1 0.000 P2 #2 0.000 N1 #3 0.000 H1 #4 0.000 N2 #5 0.000 H2 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 H11 #16 0.000 H12 #17 0.000 H31 #18 0.000 H32 #19 0.000 H33 #20 0.000 H41 #21 0.000 H42 #22 0.000 H43 #23 0.000 H51 #24 0.000 H52 #25 0.000 H53 #26 0.000 H71 #27 0.000 H72 #28 0.000 H73 #29 0.000 H81 #30 0.000 H82 #31 0.000 H83 #32 0.000 H91 #33 0.000 H92 #34 0.000 H93 #35 0.000 +model FACMIF RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 4 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 2 PI electrons + # ty P1 #1 26 O1 #2 7 N1 #3 10 N2 #4 9 C1 #5 3 C2 #6 1 C3 #7 3 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 1 C9 #13 2 C10 #14 2 H21 #15 5 H22 #16 5 H23 #17 5 H41 #18 5 H42 #19 5 H43 #20 5 H5 #21 5 H6 #22 5 H71 #23 5 H72 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 + # symb P1 #1 P O1 #2 O=CN N1 #3 NC=O N2 #4 N=C C1 #5 C=ON C2 #6 CR C3 #7 C=N C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 CR C9 #13 C=C C10 #14 C=C H21 #15 HC H22 #16 HC H23 #17 HC H41 #18 HC H42 #19 HC H43 #20 HC H5 #21 HC H6 #22 HC H71 #23 HC H72 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC + # char P1 #1 -0.232 O1 #2 -0.570 N1 #3 -0.100 N2 #4 -0.512 C1 #5 0.569 C2 #6 0.061 C3 #7 0.328 C4 #8 0.061 C5 #9 0.228 C6 #10 0.138 C7 #11 0.000 C8 #12 0.305 C9 #13 -0.288 C10 #14 -0.288 H21 #15 0.000 H22 #16 0.000 H23 #17 0.000 H41 #18 0.000 H42 #19 0.000 H43 #20 0.000 H5 #21 0.000 H6 #22 0.000 H71 #23 0.000 H72 #24 0.000 H8 #25 0.000 H9 #26 0.150 H10 #27 0.150 + # fchar P1 #1 0.000 O1 #2 0.000 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H21 #15 0.000 H22 #16 0.000 H23 #17 0.000 H41 #18 0.000 H42 #19 0.000 H43 #20 0.000 H5 #21 0.000 H6 #22 0.000 H71 #23 0.000 H72 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 +model FACREG RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 10 SUBRING 1 has 2 PI electrons + # ty C1 #1 1 N1 #2 45 O10 #3 32 O20 #4 32 C2 #5 1 O2 #6 6 C3 #7 1 O3 #8 6 C4 #9 1 O4 #10 6 C5 #11 1 H1 #12 5 H2 #13 5 H20 #14 21 H3 #15 5 H30 #16 21 H4 #17 5 H51 #18 5 H52 #19 5 H50 #20 21 O5 #21 6 + # symb C1 #1 CR N1 #2 NO2 O10 #3 O2N O20 #4 O2N C2 #5 CR O2 #6 OR C3 #7 CR O3 #8 OR C4 #9 CR O4 #10 OR C5 #11 CR H1 #12 HC H2 #13 HC H20 #14 HOR H3 #15 HC H30 #16 HOR H4 #17 HC H51 #18 HC H52 #19 HC H50 #20 HOR O5 #21 OR + # char C1 #1 0.520 N1 #2 0.800 O10 #3 -0.520 O20 #4 -0.520 C2 #5 0.280 O2 #6 -0.680 C3 #7 0.280 O3 #8 -0.680 C4 #9 0.280 O4 #10 -0.560 C5 #11 0.280 H1 #12 0.000 H2 #13 0.000 H20 #14 0.400 H3 #15 0.000 H30 #16 0.400 H4 #17 0.000 H51 #18 0.000 H52 #19 0.000 H50 #20 0.400 O5 #21 -0.680 + # fchar C1 #1 0.000 N1 #2 0.000 O10 #3 0.000 O20 #4 0.000 C2 #5 0.000 O2 #6 0.000 C3 #7 0.000 O3 #8 0.000 C4 #9 0.000 O4 #10 0.000 C5 #11 0.000 H1 #12 0.000 H2 #13 0.000 H20 #14 0.000 H3 #15 0.000 H30 #16 0.000 H4 #17 0.000 H51 #18 0.000 H52 #19 0.000 H50 #20 0.000 O5 #21 0.000 +model FACYAJ RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons SUBRING 2 has 4 PI electrons PI PAIR ON O OR S 13 PI PAIR ON O OR S 12 SUBRING 3 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 4 3 EXOCYCLIC MULT BOND 9 1 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty C11 #1 63 O21 #2 59 C31 #3 63 C311 #4 64 C41 #5 37 C51 #6 37 C61 #7 37 C71 #8 37 C711 #9 64 C81 #10 4 N91 #11 42 O101 #12 6 O111 #13 6 C121 #14 1 H31 #15 5 H41 #16 5 H71 #17 5 H211 #18 5 H221 #19 5 + # symb C11 #1 C5A O21 #2 OFUR C31 #3 C5A C311 #4 C5B C41 #5 CB C51 #6 CB C61 #7 CB C71 #8 CB C711 #9 C5B C81 #10 CSP N91 #11 NSP O101 #12 OC=C O111 #13 OC=C C121 #14 CR H31 #15 HC H41 #16 HC H71 #17 HC H211 #18 HC H221 #19 HC + # char C11 #1 0.160 O21 #2 -0.280 C31 #3 -0.010 C311 #4 0.000 C41 #5 -0.150 C51 #6 0.083 C61 #7 0.083 C71 #8 -0.150 C711 #9 0.000 C81 #10 0.537 N91 #11 -0.557 O101 #12 -0.363 O111 #13 -0.363 C121 #14 0.560 H31 #15 0.150 H41 #16 0.150 H71 #17 0.150 H211 #18 0.000 H221 #19 0.000 + # fchar C11 #1 0.000 O21 #2 0.000 C31 #3 0.000 C311 #4 0.000 C41 #5 0.000 C51 #6 0.000 C61 #7 0.000 C71 #8 0.000 C711 #9 0.000 C81 #10 0.000 N91 #11 0.000 O101 #12 0.000 O111 #13 0.000 C121 #14 0.000 H31 #15 0.000 H41 #16 0.000 H71 #17 0.000 H211 #18 0.000 H221 #19 0.000 +model FADMIG RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty N1 #1 40 N2 #2 10 C3 #3 3 C31 #4 37 C4 #5 37 C5 #6 37 C6 #7 37 C7 #8 37 C71 #9 37 O9 #10 7 H1 #11 28 H2 #12 28 H4 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 + # symb N1 #1 NC=C N2 #2 NC=O C3 #3 C=ON C31 #4 CB C4 #5 CB C5 #6 CB C6 #7 CB C7 #8 CB C71 #9 CB O9 #10 O=CN H1 #11 HNCC H2 #12 HNCO H4 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC + # char N1 #1 -0.520 N2 #2 -0.410 C3 #3 0.544 C31 #4 0.086 C4 #5 -0.150 C5 #6 -0.150 C6 #7 -0.150 C7 #8 -0.150 C71 #9 0.100 O9 #10 -0.570 H1 #11 0.400 H2 #12 0.370 H4 #13 0.150 H5 #14 0.150 H6 #15 0.150 H7 #16 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 C3 #3 0.000 C31 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C71 #9 0.000 O9 #10 0.000 H1 #11 0.000 H2 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 +model FADVEL + # ty S1 #1 18 S2 #2 18 S3 #3 18 O1 #4 32 O2 #5 32 O3 #6 6 O4 #7 32 O5 #8 32 O6 #9 32 O7 #10 32 N1 #11 43 C1 #12 1 C2 #13 1 C3 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 + # symb S1 #1 SO2N S2 #2 SO3 S3 #3 SO2N O1 #4 O2S O2 #5 O2S O3 #6 OSO2 O4 #7 O2S O5 #8 O2S O6 #9 O2S O7 #10 O2S N1 #11 NSO2 C1 #12 CR C2 #13 CR C3 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC + # char S1 #1 1.333 S2 #2 1.379 S3 #3 1.333 O1 #4 -0.650 O2 #5 -0.650 O3 #6 -0.101 O4 #7 -0.650 O5 #8 -0.650 O6 #9 -0.650 O7 #10 -0.650 N1 #11 -0.359 C1 #12 0.105 C2 #13 0.105 C3 #14 0.105 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 O1 #4 0.000 O2 #5 0.000 O3 #6 0.000 O4 #7 0.000 O5 #8 0.000 O6 #9 0.000 O7 #10 0.000 N1 #11 0.000 C1 #12 0.000 C2 #13 0.000 C3 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 +model FADVUB + # ty S1 #1 18 O1 #2 32 N1 #3 48 C1 #4 1 C2 #5 1 C3 #6 1 C4 #7 1 N2 #8 34 C5 #9 41 O2 #10 32 O3 #11 32 H1 #12 28 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 H9 #20 5 H10 #21 36 H11 #22 36 H12 #23 36 + # symb S1 #1 SNO O1 #2 O-S N1 #3 NSO C1 #4 CR C2 #5 CR C3 #6 CR C4 #7 CR N2 #8 NR+ C5 #9 CO2M O2 #10 O2CM O3 #11 O2CM H1 #12 HNSO H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC H9 #20 HC H10 #21 HNR+ H11 #22 HNR+ H12 #23 HNR+ + # char S1 #1 1.029 O1 #2 -0.650 N1 #3 -0.990 C1 #4 0.105 C2 #5 0.105 C3 #6 0.000 C4 #7 0.397 N2 #8 -0.853 C5 #9 0.906 O2 #10 -0.900 O3 #11 -0.900 H1 #12 0.400 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.450 H11 #22 0.450 H12 #23 0.450 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 N2 #8 1.000 C5 #9 0.000 O2 #10 -0.500 O3 #11 -0.500 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 H11 #22 0.000 H12 #23 0.000 +model FAGBUK + # ty P1 #1 25 O1 #2 32 N1 #3 55 N2 #4 55 C1 #5 57 C2 #6 1 C3 #7 1 C4 #8 1 C5 #9 1 H21 #10 5 H22 #11 5 H23 #12 5 H31 #13 5 H32 #14 5 H33 #15 5 H41 #16 5 H42 #17 5 H43 #18 5 H51 #19 5 H52 #20 5 H53 #21 5 O1A #22 32 C1A #23 57 N1A #24 55 N2A #25 55 C2A #26 1 C3A #27 1 C4A #28 1 C5A #29 1 H21A #30 5 H22A #31 5 H23A #32 5 H31A #33 5 H32A #34 5 H33A #35 5 H41A #36 5 H42A #37 5 H43A #38 5 H51A #39 5 H52A #40 5 H53A #41 5 + # symb P1 #1 PO2 O1 #2 O2P N1 #3 NCN+ N2 #4 NCN+ C1 #5 CNN+ C2 #6 CR C3 #7 CR C4 #8 CR C5 #9 CR H21 #10 HC H22 #11 HC H23 #12 HC H31 #13 HC H32 #14 HC H33 #15 HC H41 #16 HC H42 #17 HC H43 #18 HC H51 #19 HC H52 #20 HC H53 #21 HC O1A #22 O2P C1A #23 CNN+ N1A #24 NCN+ N2A #25 NCN+ C2A #26 CR C3A #27 CR C4A #28 CR C5A #29 CR H21A #30 HC H22A #31 HC H23A #32 HC H31A #33 HC H32A #34 HC H33A #35 HC H41A #36 HC H42A #37 HC H43A #38 HC H51A #39 HC H52A #40 HC H53A #41 HC + # char P1 #1 1.134 O1 #2 -0.950 N1 #3 -0.833 N2 #4 -0.833 C1 #5 0.592 C2 #6 0.489 C3 #7 0.489 C4 #8 0.489 C5 #9 0.489 H21 #10 0.000 H22 #11 0.000 H23 #12 0.000 H31 #13 0.000 H32 #14 0.000 H33 #15 0.000 H41 #16 0.000 H42 #17 0.000 H43 #18 0.000 H51 #19 0.000 H52 #20 0.000 H53 #21 0.000 O1A #22 -0.950 C1A #23 0.592 N1A #24 -0.833 N2A #25 -0.833 C2A #26 0.489 C3A #27 0.489 C4A #28 0.489 C5A #29 0.489 H21A #30 0.000 H22A #31 0.000 H23A #32 0.000 H31A #33 0.000 H32A #34 0.000 H33A #35 0.000 H41A #36 0.000 H42A #37 0.000 H43A #38 0.000 H51A #39 0.000 H52A #40 0.000 H53A #41 0.000 + # fchar P1 #1 0.000 O1 #2 -0.500 N1 #3 0.500 N2 #4 0.500 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 H21 #10 0.000 H22 #11 0.000 H23 #12 0.000 H31 #13 0.000 H32 #14 0.000 H33 #15 0.000 H41 #16 0.000 H42 #17 0.000 H43 #18 0.000 H51 #19 0.000 H52 #20 0.000 H53 #21 0.000 O1A #22 -0.500 C1A #23 0.000 N1A #24 0.500 N2A #25 0.500 C2A #26 0.000 C3A #27 0.000 C4A #28 0.000 C5A #29 0.000 H21A #30 0.000 H22A #31 0.000 H23A #32 0.000 H31A #33 0.000 H32A #34 0.000 H33A #35 0.000 H41A #36 0.000 H42A #37 0.000 H43A #38 0.000 H51A #39 0.000 H52A #40 0.000 H53A #41 0.000 +model FAGCOF RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 7 O2 #3 32 O3 #4 32 N1 #5 43 C2 #6 3 C3 #7 20 C4 #8 20 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 C12 #15 1 H31 #16 5 H32 #17 5 H4 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H121 #24 5 H122 #25 5 H123 #26 5 + # symb S1 #1 SO2N O1 #2 O=CN O2 #3 O2S O3 #4 O2S N1 #5 NSO2 C2 #6 C=ON C3 #7 CR4R C4 #8 CR4R C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB C12 #15 CR H31 #16 HC H32 #17 HC H4 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H121 #24 HC H122 #25 HC H123 #26 HC + # char S1 #1 1.333 O1 #2 -0.570 O2 #3 -0.650 O3 #4 -0.650 N1 #5 -0.681 C2 #6 0.753 C3 #7 0.053 C4 #8 0.415 C5 #9 -0.108 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 C10 #14 -0.150 C12 #15 0.105 H31 #16 0.000 H32 #17 0.000 H4 #18 0.000 H6 #19 0.150 H7 #20 0.150 H8 #21 0.150 H9 #22 0.150 H10 #23 0.150 H121 #24 0.000 H122 #25 0.000 H123 #26 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C12 #15 0.000 H31 #16 0.000 H32 #17 0.000 H4 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H121 #24 0.000 H122 #25 0.000 H123 #26 0.000 +model FAGLII RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 3 PI PAIR ON O OR S 4 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty CL1 #1 12 P1 #2 26 O1 #3 6 O2 #4 6 C1 #5 37 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 H2 #11 5 H3 #12 5 H4 #13 5 H5 #14 5 + # symb CL1 #1 CL P1 #2 P O1 #3 OPO O2 #4 OPO C1 #5 CB C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB H2 #11 HC H3 #12 HC H4 #13 HC H5 #14 HC + # char CL1 #1 -0.211 P1 #2 0.413 O1 #3 -0.183 O2 #4 -0.183 C1 #5 0.083 C2 #6 -0.150 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 0.083 H2 #11 0.150 H3 #12 0.150 H4 #13 0.150 H5 #14 0.150 + # fchar CL1 #1 0.000 P1 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 +model FAGVEO RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty O1 #1 7 O2 #2 7 O3 #3 7 O4 #4 7 C1 #5 3 C2 #6 3 C3 #7 3 C4 #8 3 + # symb O1 #1 O=CR O2 #2 O=CR O3 #3 O=CR O4 #4 O=CR C1 #5 C=OR C2 #6 C=OR C3 #7 C=OR C4 #8 C=OR + # char O1 #1 -0.570 O2 #2 -0.570 O3 #3 -0.570 O4 #4 -0.570 C1 #5 0.570 C2 #6 0.570 C3 #7 0.570 C4 #8 0.570 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 +model FAGZOC RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons + # ty BR1 #1 13 O1 #2 35 O2 #3 7 C1 #4 2 C2 #5 3 C3 #6 2 C2M #7 3 C1M #8 2 O2M #9 7 C3M #10 2 O1M #11 35 BR1M #12 13 + # symb BR1 #1 BR O1 #2 OM2 O2 #3 O=CR C1 #4 C=C C2 #5 C=OR C3 #6 C=C C2M #7 C=OR C1M #8 C=C O2M #9 O=CR C3M #10 C=C O1M #11 OM2 BR1M #12 BR + # char BR1 #1 -0.110 O1 #2 -0.850 O2 #3 -0.570 C1 #4 -0.136 C2 #5 0.541 C3 #6 0.124 C2M #7 0.541 C1M #8 -0.136 O2M #9 -0.570 C3M #10 0.124 O1M #11 -0.850 BR1M #12 -0.110 + # fchar BR1 #1 0.000 O1 #2 -1.000 O2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C2M #7 0.000 C1M #8 0.000 O2M #9 0.000 C3M #10 0.000 O1M #11 -1.000 BR1M #12 0.000 +model FAHPUZ RING 1 HAS 4 SUBRINGS PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 16 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 2 PI electrons SUBRING 3 has 6 PI electrons PI PAIR ON SP2-N 16 SUBRING 4 has 4 PI electrons SUBRING 3 IS AROMATIC EXOCYCLIC MULT BOND 5 6 EXOCYCLIC MULT BOND 10 9 + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 43 C1 #5 37 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 1 C8 #12 1 C9 #13 2 C10 #14 2 C11 #15 1 N2 #16 8 C12 #17 1 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H121 #27 5 H122 #28 5 H13 #29 23 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S N1 #4 NSO2 C1 #5 CB C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CR C8 #12 CR C9 #13 C=C C10 #14 C=C C11 #15 CR N2 #16 NR C12 #17 CR H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H121 #27 HC H122 #28 HC H13 #29 HNR + # char S1 #1 1.333 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.693 C1 #5 0.199 C2 #6 -0.150 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 -0.143 C7 #11 0.282 C8 #12 0.626 C9 #13 -0.288 C10 #14 -0.288 C11 #15 0.408 N2 #16 -0.900 C12 #17 0.105 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.150 H7 #22 0.000 H8 #23 0.000 H9 #24 0.150 H10 #25 0.150 H11 #26 0.000 H121 #27 0.000 H122 #28 0.000 H13 #29 0.360 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 N2 #16 0.000 C12 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H121 #27 0.000 H122 #28 0.000 H13 #29 0.000 +model FAHSUC RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 7 PI PAIR ON SP2-N 9 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 38 C2 #2 37 N3 #3 58 C4 #4 37 C5 #5 37 C6 #6 37 N7 #7 10 C8 #8 3 N9 #9 10 O10 #10 7 C11 #11 1 C12 #12 1 N13 #13 40 C14 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 28 H7 #21 5 H8 #22 5 H9 #23 28 H5L #24 5 H1L #25 5 H4L #26 5 + # symb N1 #1 NPYD C2 #2 CB N3 #3 NPD+ C4 #4 CB C5 #5 CB C6 #6 CB N7 #7 NC=O C8 #8 CONN N9 #9 NC=O O10 #10 O=CN C11 #11 CR C12 #12 CR N13 #13 NC=N C14 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HNCO H7 #21 HC H8 #22 HC H9 #23 HNCN H5L #24 HC H1L #25 HC H4L #26 HC + # char N1 #1 -0.620 C2 #2 0.521 N3 #3 -0.210 C4 #4 0.478 C5 #5 0.117 C6 #6 0.410 N7 #7 -0.547 C8 #8 0.690 N9 #9 -0.477 O10 #10 -0.570 C11 #11 0.300 C12 #12 0.488 N13 #13 -0.869 C14 #14 0.369 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.370 H7 #21 0.150 H8 #22 0.000 H9 #23 0.400 H5L #24 0.000 H1L #25 0.000 H4L #26 0.000 + # fchar N1 #1 0.000 C2 #2 0.000 N3 #3 1.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N7 #7 0.000 C8 #8 0.000 N9 #9 0.000 O10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N13 #13 0.000 C14 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H5L #24 0.000 H1L #25 0.000 H4L #26 0.000 +model FAHYUI RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 O1 #2 32 N1 #3 67 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 3 C8 #11 1 C9 #12 1 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H81 #18 5 H82 #19 5 H83 #20 5 H91 #21 5 H92 #22 5 H93 #23 5 + # symb S1 #1 S O1 #2 OXN N1 #3 N2OX C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 C=N C8 #11 CR C9 #12 CR H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H81 #18 HC H82 #19 HC H83 #20 HC H91 #21 HC H92 #22 HC H93 #23 HC + # char S1 #1 -0.371 O1 #2 -0.633 N1 #3 0.530 C1 #4 0.086 C2 #5 -0.150 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.150 C7 #10 0.059 C8 #11 0.230 C9 #12 0.099 H2 #13 0.150 H3 #14 0.150 H4 #15 0.150 H5 #16 0.150 H6 #17 0.150 H81 #18 0.000 H82 #19 0.000 H83 #20 0.000 H91 #21 0.000 H92 #22 0.000 H93 #23 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H81 #18 0.000 H82 #19 0.000 H83 #20 0.000 H91 #21 0.000 H92 #22 0.000 H93 #23 0.000 +model FAHZET RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 6 O2 #3 7 O3 #4 32 O4 #5 32 N1 #6 43 C1 #7 2 C2 #8 2 C3 #9 3 C4 #10 1 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 C9 #15 37 C10 #16 37 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 28 H7 #23 5 H8 #24 5 H9 #25 5 + # symb S1 #1 SO3 O1 #2 OSO2 O2 #3 O=CN O3 #4 O2S O4 #5 O2S N1 #6 NSO3 C1 #7 C=C C2 #8 C=C C3 #9 C=ON C4 #10 CR C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB C9 #15 CB C10 #16 CB H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HNSO H7 #23 HC H8 #24 HC H9 #25 HC + # char S1 #1 1.622 O1 #2 -0.260 O2 #3 -0.570 O3 #4 -0.650 O4 #5 -0.650 N1 #6 -0.794 C1 #7 0.048 C2 #8 -0.124 C3 #9 0.792 C4 #10 0.138 C5 #11 0.028 C6 #12 -0.150 C7 #13 -0.150 C8 #14 -0.150 C9 #15 -0.150 C10 #16 -0.150 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.150 H6 #22 0.420 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 N1 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 +model FAJWIW RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons + # ty O1 #1 6 O2 #2 7 O3 #3 6 N1 #4 10 N3 #5 9 N5 #6 9 C1 #7 1 C2 #8 3 C3 #9 1 C4 #10 3 C6 #11 3 H1 #12 28 H11 #13 5 H12 #14 5 H13 #15 5 H31 #16 5 H32 #17 5 H33 #18 5 + # symb O1 #1 OC=N O2 #2 O=CN O3 #3 OC=N N1 #4 NC=O N3 #5 N=C N5 #6 N=C C1 #7 CR C2 #8 CONN C3 #9 CR C4 #10 C=N C6 #11 C=N H1 #12 HNCO H11 #13 HC H12 #14 HC H13 #15 HC H31 #16 HC H32 #17 HC H33 #18 HC + # char O1 #1 -0.430 O2 #2 -0.570 O3 #3 -0.430 N1 #4 -0.490 N3 #5 -0.661 N5 #6 -0.661 C1 #7 0.280 C2 #8 0.841 C3 #9 0.280 C4 #10 0.811 C6 #11 0.660 H1 #12 0.370 H11 #13 0.000 H12 #14 0.000 H13 #15 0.000 H31 #16 0.000 H32 #17 0.000 H33 #18 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N3 #5 0.000 N5 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C6 #11 0.000 H1 #12 0.000 H11 #13 0.000 H12 #14 0.000 H13 #15 0.000 H31 #16 0.000 H32 #17 0.000 H33 #18 0.000 +model FAMHAC RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 3 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 72 P1 #2 25 O1 #3 6 N1 #4 8 C1 #5 1 C2 #6 1 C3 #7 1 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 1 H11 #15 5 H12 #16 5 H13 #17 5 H21 #18 5 H22 #19 5 H23 #20 5 H3 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H101 #26 5 H102 #27 5 H103 #28 5 + # symb S1 #1 S-P P1 #2 PO O1 #3 -OP N1 #4 NR C1 #5 CR C2 #6 CR C3 #7 CR C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CR H11 #15 HC H12 #16 HC H13 #17 HC H21 #18 HC H22 #19 HC H23 #20 HC H3 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H101 #26 HC H102 #27 HC H103 #28 HC + # char S1 #1 -0.677 P1 #2 1.355 O1 #3 -0.551 N1 #4 -0.808 C1 #5 0.270 C2 #6 0.270 C3 #7 0.423 C4 #8 -0.143 C5 #9 -0.139 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 C10 #14 0.000 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H21 #18 0.000 H22 #19 0.000 H23 #20 0.000 H3 #21 0.000 H6 #22 0.150 H7 #23 0.150 H8 #24 0.150 H9 #25 0.150 H101 #26 0.000 H102 #27 0.000 H103 #28 0.000 + # fchar S1 #1 0.000 P1 #2 0.000 O1 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H11 #15 0.000 H12 #16 0.000 H13 #17 0.000 H21 #18 0.000 H22 #19 0.000 H23 #20 0.000 H3 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H101 #26 0.000 H102 #27 0.000 H103 #28 0.000 +model FAMYUN RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 2 PI electrons + # ty BR1 #1 13 N1 #2 10 C2 #3 3 O2 #4 7 C3 #5 1 C4 #6 1 C5 #7 3 O5 #8 7 H31 #9 5 H32 #10 5 H41 #11 5 H42 #12 5 + # symb BR1 #1 BR N1 #2 NC=O C2 #3 C=ON O2 #4 O=CN C3 #5 CR C4 #6 CR C5 #7 C=ON O5 #8 O=CN H31 #9 HC H32 #10 HC H41 #11 HC H42 #12 HC + # char BR1 #1 0.006 N1 #2 -0.126 C2 #3 0.569 O2 #4 -0.570 C3 #5 0.061 C4 #6 0.061 C5 #7 0.569 O5 #8 -0.570 H31 #9 0.000 H32 #10 0.000 H41 #11 0.000 H42 #12 0.000 + # fchar BR1 #1 0.000 N1 #2 0.000 C2 #3 0.000 O2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 O5 #8 0.000 H31 #9 0.000 H32 #10 0.000 H41 #11 0.000 H42 #12 0.000 +model FAPLUD RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons + # ty P1 #1 25 N1 #2 10 N2 #3 10 N3 #4 10 C1 #5 3 C2 #6 3 S1 #7 72 O1 #8 32 O2 #9 7 O3 #10 7 H1 #11 28 H2 #12 28 H3 #13 28 + # symb P1 #1 PO2 N1 #2 NC=O N2 #3 NC=O N3 #4 NC=O C1 #5 CONN C2 #6 CONN S1 #7 SM O1 #8 O2P O2 #9 O=CN O3 #10 O=CN H1 #11 HNCO H2 #12 HNCO H3 #13 HNCO + # char P1 #1 1.389 N1 #2 -0.686 N2 #3 -0.686 N3 #4 -0.490 C1 #5 0.690 C2 #6 0.690 S1 #7 -0.927 O1 #8 -0.950 O2 #9 -0.570 O3 #10 -0.570 H1 #11 0.370 H2 #12 0.370 H3 #13 0.370 + # fchar P1 #1 0.000 N1 #2 0.000 N2 #3 0.000 N3 #4 0.000 C1 #5 0.000 C2 #6 0.000 S1 #7 -0.500 O1 #8 -0.500 O2 #9 0.000 O3 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 +model FARMAM RING 1 HAS 4 SUBRINGS PI PAIR ON SP2-N 16 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 16 SUBRING 2 has 6 PI electrons PI PAIR ON SP2-N 14 SUBRING 3 has 6 PI electrons PI PAIR ON SP2-N 14 SUBRING 4 has 6 PI electrons SUBRING 2 IS AROMATIC SUBRING 3 IS AROMATIC + # ty C1 #1 2 C2 #2 2 C3 #3 2 C4 #4 2 C41 #5 63 N5 #6 66 C51 #7 64 N6 #8 66 C61 #9 63 C7 #10 2 C8 #11 2 C9 #12 2 C10 #13 2 N11 #14 39 C111 #15 63 N12 #16 39 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 C=C C4 #4 C=C C41 #5 C5A N5 #6 N5B C51 #7 C5B N6 #8 N5B C61 #9 C5A C7 #10 C=C C8 #11 C=C C9 #12 C=C C10 #13 C=C N11 #14 NPYL C111 #15 C5A N12 #16 NPYL H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC + # char C1 #1 -0.181 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.105 C41 #5 0.142 N5 #6 -0.565 C51 #7 0.454 N6 #8 -0.565 C61 #9 0.142 C7 #10 -0.105 C8 #11 -0.150 C9 #12 -0.150 C10 #13 -0.181 N11 #14 0.334 C111 #15 -0.303 N12 #16 0.334 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H7 #21 0.150 H8 #22 0.150 H9 #23 0.150 H10 #24 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C41 #5 0.000 N5 #6 0.000 C51 #7 0.000 N6 #8 0.000 C61 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 N11 #14 0.000 C111 #15 0.000 N12 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 +model FARSOG RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 0 PI electrons PI PAIR ON O OR S 22 SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty S1 #1 44 N1 #2 65 C1 #3 64 C2 #4 64 N2 #5 65 C3 #6 2 C4 #7 2 C5 #8 2 C6 #9 2 C7 #10 4 C8 #11 4 N3 #12 42 N4 #13 42 C1B #14 64 C2B #15 64 C7B #16 4 C8B #17 4 N1B #18 65 N2B #19 65 N3B #20 42 N4B #21 42 S1B #22 44 + # symb S1 #1 STHI N1 #2 N5A C1 #3 C5B C2 #4 C5B N2 #5 N5A C3 #6 C=C C4 #7 C=C C5 #8 C=C C6 #9 C=C C7 #10 CSP C8 #11 CSP N3 #12 NSP N4 #13 NSP C1B #14 C5B C2B #15 C5B C7B #16 CSP C8B #17 CSP N1B #18 N5A N2B #19 N5A N3B #20 NSP N4B #21 NSP S1B #22 STHI + # char S1 #1 0.441 N1 #2 -0.510 C1 #3 0.243 C2 #4 0.243 N2 #5 -0.510 C3 #6 0.092 C4 #7 0.092 C5 #8 0.130 C6 #9 0.130 C7 #10 0.492 C8 #11 0.492 N3 #12 -0.557 N4 #13 -0.557 C1B #14 0.243 C2B #15 0.243 C7B #16 0.492 C8B #17 0.492 N1B #18 -0.510 N2B #19 -0.510 N3B #20 -0.557 N4B #21 -0.557 S1B #22 0.441 + # fchar S1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 N2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 N3 #12 0.000 N4 #13 0.000 C1B #14 0.000 C2B #15 0.000 C7B #16 0.000 C8B #17 0.000 N1B #18 0.000 N2B #19 0.000 N3B #20 0.000 N4B #21 0.000 S1B #22 0.000 +model FARWEA + # ty S1 #1 72 S2 #2 72 N1 #3 9 N2 #4 40 C1 #5 41 C2 #6 3 C3 #7 1 H1 #8 28 H2 #9 28 H3 #10 5 H4 #11 5 H5 #12 5 + # symb S1 #1 S2CM S2 #2 S2CM N1 #3 N=C N2 #4 NC=N C1 #5 CS2M C2 #6 C=N C3 #7 CR H1 #8 HNCN H2 #9 HNCN H3 #10 HC H4 #11 HC H5 #12 HC + # char S1 #1 -0.750 S2 #2 -0.750 N1 #3 -0.808 N2 #4 -0.850 C1 #5 0.858 C2 #6 0.439 C3 #7 0.061 H1 #8 0.400 H2 #9 0.400 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 + # fchar S1 #1 -0.500 S2 #2 -0.500 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 +model FASGUB + # ty C1 #1 3 N1 #2 9 N2 #3 8 N3 #4 40 N4 #5 8 N5 #6 40 N6 #7 8 H1 #8 23 H2 #9 23 H3 #10 28 H4 #11 23 H5 #12 23 H6 #13 28 H7 #14 23 H8 #15 23 + # symb C1 #1 CGD N1 #2 N=C N2 #3 NR N3 #4 NC=N N4 #5 NR N5 #6 NC=N N6 #7 NR H1 #8 HNR H2 #9 HNR H3 #10 HNCN H4 #11 HNR H5 #12 HNR H6 #13 HNCN H7 #14 HNR H8 #15 HNR + # char C1 #1 0.550 N1 #2 -0.503 N2 #3 -0.667 N3 #4 -0.461 N4 #5 -0.709 N5 #6 -0.461 N6 #7 -0.709 H1 #8 0.360 H2 #9 0.360 H3 #10 0.400 H4 #11 0.360 H5 #12 0.360 H6 #13 0.400 H7 #14 0.360 H8 #15 0.360 + # fchar C1 #1 0.000 N1 #2 0.000 N2 #3 0.000 N3 #4 0.000 N4 #5 0.000 N5 #6 0.000 N6 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 H8 #15 0.000 +model FASJIS RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 6 PI PAIR ON SP2-N 7 PI PAIR ON SP2-N 8 PI PAIR ON SP2-N 9 SUBRING 1 has 8 PI electrons + # ty P1 #1 25 P2 #2 25 S1 #3 72 O1 #4 6 O2 #5 32 N1 #6 8 N2 #7 8 N3 #8 8 N4 #9 8 N5 #10 8 C1 #11 37 C2 #12 37 C3 #13 37 C4 #14 37 C5 #15 37 C6 #16 37 C7 #17 1 C8 #18 1 C9 #19 1 C10 #20 1 H1 #21 23 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 H7 #27 23 H8 #28 5 H9 #29 5 H10 #30 5 H11 #31 5 H12 #32 5 H13 #33 5 H14 #34 5 H15 #35 5 H16 #36 5 H17 #37 5 H18 #38 5 H19 #39 5 + # symb P1 #1 PO P2 #2 PO S1 #3 S-P O1 #4 -OP O2 #5 OP N1 #6 NR N2 #7 NR N3 #8 NR N4 #9 NR N5 #10 NR C1 #11 CB C2 #12 CB C3 #13 CB C4 #14 CB C5 #15 CB C6 #16 CB C7 #17 CR C8 #18 CR C9 #19 CR C10 #20 CR H1 #21 HNR H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC H7 #27 HNR H8 #28 HC H9 #29 HC H10 #30 HC H11 #31 HC H12 #32 HC H13 #33 HC H14 #34 HC H15 #35 HC H16 #36 HC H17 #37 HC H18 #38 HC H19 #39 HC + # char P1 #1 1.484 P2 #2 1.504 S1 #3 -0.677 O1 #4 -0.354 O2 #5 -0.700 N1 #6 -0.538 N2 #7 -0.628 N3 #8 -0.628 N4 #9 -0.538 N5 #10 -0.808 C1 #11 0.083 C2 #12 -0.150 C3 #13 -0.150 C4 #14 -0.150 C5 #15 -0.150 C6 #16 -0.150 C7 #17 0.270 C8 #18 0.270 C9 #19 0.270 C10 #20 0.270 H1 #21 0.360 H2 #22 0.150 H3 #23 0.150 H4 #24 0.150 H5 #25 0.150 H6 #26 0.150 H7 #27 0.360 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H16 #36 0.000 H17 #37 0.000 H18 #38 0.000 H19 #39 0.000 + # fchar P1 #1 0.000 P2 #2 0.000 S1 #3 0.000 O1 #4 0.000 O2 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 N4 #9 0.000 N5 #10 0.000 C1 #11 0.000 C2 #12 0.000 C3 #13 0.000 C4 #14 0.000 C5 #15 0.000 C6 #16 0.000 C7 #17 0.000 C8 #18 0.000 C9 #19 0.000 C10 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H16 #36 0.000 H17 #37 0.000 H18 #38 0.000 H19 #39 0.000 +model FATLIV RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 3 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 25 O1 #2 32 O2 #3 7 O3 #4 6 N1 #5 10 N2 #6 8 N3 #7 8 C1 #8 3 C2 #9 37 C3 #10 37 C4 #11 37 C5 #12 37 C6 #13 37 C7 #14 37 C8 #15 22 C9 #16 22 C10 #17 22 C11 #18 22 C12 #19 1 H1 #20 28 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 5 H13 #32 5 H14 #33 5 H15 #34 5 H16 #35 5 + # symb P1 #1 PO O1 #2 OP O2 #3 O=CN O3 #4 OC=C N1 #5 NC=O N2 #6 NR N3 #7 NR C1 #8 C=ON C2 #9 CB C3 #10 CB C4 #11 CB C5 #12 CB C6 #13 CB C7 #14 CB C8 #15 CR3R C9 #16 CR3R C10 #17 CR3R C11 #18 CR3R C12 #19 CR H1 #20 HNCO H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HC H13 #32 HC H14 #33 HC H15 #34 HC H16 #35 HC + # char P1 #1 1.492 O1 #2 -0.700 O2 #3 -0.570 O3 #4 -0.363 N1 #5 -0.686 N2 #6 -0.584 N3 #7 -0.584 C1 #8 0.544 C2 #9 0.086 C3 #10 -0.150 C4 #11 -0.150 C5 #12 -0.150 C6 #13 0.083 C7 #14 -0.150 C8 #15 -0.042 C9 #16 -0.042 C10 #17 -0.042 C11 #18 -0.042 C12 #19 0.280 H1 #20 0.370 H2 #21 0.150 H3 #22 0.150 H4 #23 0.150 H5 #24 0.150 H6 #25 0.100 H7 #26 0.100 H8 #27 0.100 H9 #28 0.100 H10 #29 0.100 H11 #30 0.100 H12 #31 0.100 H13 #32 0.100 H14 #33 0.000 H15 #34 0.000 H16 #35 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 C12 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 H14 #33 0.000 H15 #34 0.000 H16 #35 0.000 +model FAXFUF10 RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty O6 #1 7 N1 #2 55 N3 #3 55 N8 #4 39 N9 #5 65 C2 #6 57 C4 #7 64 C5 #8 64 C6 #9 3 C7 #10 63 H1 #11 36 H2 #12 5 H3 #13 36 H7 #14 5 H8 #15 23 + # symb O6 #1 O=CN N1 #2 NCN+ N3 #3 NCN+ N8 #4 NPYL N9 #5 N5A C2 #6 CNN+ C4 #7 C5B C5 #8 C5B C6 #9 C=ON C7 #10 C5A H1 #11 HNN+ H2 #12 HC H3 #13 HNN+ H7 #14 HC H8 #15 HPYL + # char O6 #1 -0.570 N1 #2 -0.685 N3 #3 -0.599 N8 #4 0.300 N9 #5 -0.707 C2 #6 0.559 C4 #7 0.584 C5 #8 -0.086 C6 #9 1.037 C7 #10 -0.302 H1 #11 0.450 H2 #12 0.150 H3 #13 0.450 H7 #14 0.150 H8 #15 0.270 + # fchar O6 #1 0.000 N1 #2 0.500 N3 #3 0.500 N8 #4 0.000 N9 #5 0.000 C2 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H7 #14 0.000 H8 #15 0.000 +model FAXVAB RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 5 PI PAIR ON SP2-N 6 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 O3 #4 7 N1 #5 43 N2 #6 43 C1 #7 37 C2 #8 37 C3 #9 37 C4 #10 37 C5 #11 37 C6 #12 37 C7 #13 3 C8 #14 1 H1 #15 28 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S O3 #4 O=CN N1 #5 NSO2 N2 #6 NSO2 C1 #7 CB C2 #8 CB C3 #9 CB C4 #10 CB C5 #11 CB C6 #12 CB C7 #13 C=ON C8 #14 CR H1 #15 HNSO H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC + # char S1 #1 1.576 O1 #2 -0.650 O2 #3 -0.650 O3 #4 -0.570 N1 #5 -0.757 N2 #6 -0.730 C1 #7 0.199 C2 #8 -0.150 C3 #9 -0.150 C4 #10 -0.150 C5 #11 -0.150 C6 #12 0.086 C7 #13 0.720 C8 #14 0.356 H1 #15 0.420 H2 #16 0.150 H3 #17 0.150 H4 #18 0.150 H5 #19 0.150 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 N2 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 +model FAXVEF RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 58 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 1 C8 #8 1 C9 #9 1 C10 #10 1 H2 #11 5 H3 #12 5 H4 #13 5 H5 #14 5 H6 #15 5 H71 #16 5 H72 #17 5 H81 #18 5 H82 #19 5 H91 #20 5 H92 #21 5 H101 #22 5 H102 #23 5 H103 #24 5 + # symb N1 #1 NPD+ C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CR C8 #8 CR C9 #9 CR C10 #10 CR H2 #11 HC H3 #12 HC H4 #13 HC H5 #14 HC H6 #15 HC H71 #16 HC H72 #17 HC H81 #18 HC H82 #19 HC H91 #20 HC H92 #21 HC H101 #22 HC H102 #23 HC H103 #24 HC + # char N1 #1 -0.210 C2 #2 0.211 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 0.211 C7 #7 0.488 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 H2 #11 0.150 H3 #12 0.150 H4 #13 0.150 H5 #14 0.150 H6 #15 0.150 H71 #16 0.000 H72 #17 0.000 H81 #18 0.000 H82 #19 0.000 H91 #20 0.000 H92 #21 0.000 H101 #22 0.000 H102 #23 0.000 H103 #24 0.000 + # fchar N1 #1 1.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H71 #16 0.000 H72 #17 0.000 H81 #18 0.000 H82 #19 0.000 H91 #20 0.000 H92 #21 0.000 H101 #22 0.000 H102 #23 0.000 H103 #24 0.000 +model FAXVIJ RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 20 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 20 SUBRING 2 has 6 PI electrons SUBRING 3 has 6 PI electrons SUBRING 2 IS AROMATIC SUBRING 3 IS AROMATIC + # ty C1 #1 2 C2 #2 2 C3 #3 2 C4 #4 2 C41 #5 63 N5 #6 66 C51 #7 64 C6 #8 37 C7 #9 37 C71 #10 1 F1 #11 11 F2 #12 11 F3 #13 11 C8 #14 37 C9 #15 37 N9 #16 45 O91 #17 32 O92 #18 32 C91 #19 63 N10 #20 39 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 H6 #25 5 H8 #26 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 C=C C4 #4 C=C C41 #5 C5A N5 #6 N5B C51 #7 C5B C6 #8 CB C7 #9 CB C71 #10 CR F1 #11 F F2 #12 F F3 #13 F C8 #14 CB C9 #15 CB N9 #16 NO2 O91 #17 O2N O92 #18 O2N C91 #19 C5A N10 #20 NPYL H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC H6 #25 HC H8 #26 HC + # char C1 #1 -0.181 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.105 C41 #5 0.142 N5 #6 -0.565 C51 #7 0.227 C6 #8 -0.150 C7 #9 -0.143 C71 #10 1.164 F1 #11 -0.340 F2 #12 -0.340 F3 #13 -0.340 C8 #14 -0.150 C9 #15 0.133 N9 #16 0.907 O91 #17 -0.520 O92 #18 -0.520 C91 #19 -0.152 N10 #20 0.334 H1 #21 0.150 H2 #22 0.150 H3 #23 0.150 H4 #24 0.150 H6 #25 0.150 H8 #26 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C41 #5 0.000 N5 #6 0.000 C51 #7 0.000 C6 #8 0.000 C7 #9 0.000 C71 #10 0.000 F1 #11 0.000 F2 #12 0.000 F3 #13 0.000 C8 #14 0.000 C9 #15 0.000 N9 #16 0.000 O91 #17 0.000 O92 #18 0.000 C91 #19 0.000 N10 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H6 #25 0.000 H8 #26 0.000 +model FAZBAJ + # ty S1 #1 15 O1 #2 35 C1 #3 2 C2 #4 2 C3 #5 4 C4 #6 4 N3 #7 42 N4 #8 42 C5 #9 1 H1 #10 5 H2 #11 5 H3 #12 5 + # symb S1 #1 S O1 #2 OM2 C1 #3 C=C C2 #4 C=C C3 #5 CSP C4 #6 CSP N3 #7 NSP N4 #8 NSP C5 #9 CR H1 #10 HC H2 #11 HC H3 #12 HC + # char S1 #1 -0.331 O1 #2 -0.850 C1 #3 -0.049 C2 #4 0.130 C3 #5 0.492 C4 #6 0.492 N3 #7 -0.557 N4 #8 -0.557 C5 #9 0.230 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 + # fchar S1 #1 0.000 O1 #2 -1.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 N4 #8 0.000 C5 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 +model FAZKUM + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 CL4 #4 12 SI1 #5 19 C1 #6 2 C1B #7 2 CL1B #8 12 SI1B #9 19 CL2B #10 12 CL3B #11 12 CL4B #12 12 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL CL4 #4 CL SI1 #5 SI C1 #6 C=C C1B #7 C=C CL1B #8 CL SI1B #9 SI CL2B #10 CL CL3B #11 CL CL4B #12 CL + # char CL1 #1 -0.140 CL2 #2 -0.370 CL3 #3 -0.370 CL4 #4 -0.370 SI1 #5 1.339 C1 #6 -0.089 C1B #7 -0.089 CL1B #8 -0.140 SI1B #9 1.339 CL2B #10 -0.370 CL3B #11 -0.370 CL4B #12 -0.370 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 CL4 #4 0.000 SI1 #5 0.000 C1 #6 0.000 C1B #7 0.000 CL1B #8 0.000 SI1B #9 0.000 CL2B #10 0.000 CL3B #11 0.000 CL4B #12 0.000 +model FBATNB RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 1 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 1 C9 #9 1 C10 #10 1 F1 #11 11 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 H9 #20 5 H10 #21 5 H11 #22 5 N1 #23 40 N2 #24 45 N3 #25 45 N4 #26 45 O1 #27 32 O2 #28 32 O3 #29 32 O4 #30 32 O5 #31 32 O6 #32 32 + # symb C1 #1 CB C2 #2 CR C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CR C9 #9 CR C10 #10 CR F1 #11 F H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC H9 #20 HC H10 #21 HC H11 #22 HC N1 #23 NC=C N2 #24 NO2 N3 #25 NO2 N4 #26 NO2 O1 #27 O2N O2 #28 O2N O3 #29 O2N O4 #30 O2N O5 #31 O2N O6 #32 O2N + # char C1 #1 0.100 C2 #2 0.000 C3 #3 0.133 C4 #4 -0.150 C5 #5 0.133 C6 #6 -0.150 C7 #7 0.133 C8 #8 0.369 C9 #9 0.000 C10 #10 0.000 F1 #11 -0.053 H1 #12 0.150 H2 #13 0.000 H3 #14 0.000 H4 #15 0.150 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 H11 #22 0.000 N1 #23 -0.416 N2 #24 0.907 N3 #25 0.907 N4 #26 0.907 O1 #27 -0.520 O2 #28 -0.520 O3 #29 -0.520 O4 #30 -0.520 O5 #31 -0.520 O6 #32 -0.520 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 F1 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 H11 #22 0.000 N1 #23 0.000 N2 #24 0.000 N3 #25 0.000 N4 #26 0.000 O1 #27 0.000 O2 #28 0.000 O3 #29 0.000 O4 #30 0.000 O5 #31 0.000 O6 #32 0.000 +model FECXEQ RING 1 HAS 1 SUBRINGS + # ty C1 #1 3 C2 #2 3 C3 #3 2 C4 #4 2 C5 #5 2 C6 #6 2 C7 #7 1 C8 #8 1 C9 #9 1 N1 #10 40 N2 #11 9 O1 #12 7 H1 #13 5 H4 #14 5 H5 #15 5 H71 #16 5 H72 #17 5 H73 #18 5 H81 #19 5 H82 #20 5 H83 #21 5 H91 #22 5 H92 #23 5 H93 #24 5 + # symb C1 #1 C=N C2 #2 C=OR C3 #3 C=C C4 #4 C=C C5 #5 C=C C6 #6 C=C C7 #7 CR C8 #8 CR C9 #9 CR N1 #10 NC=C N2 #11 N=C O1 #12 O=CR H1 #13 HC H4 #14 HC H5 #15 HC H71 #16 HC H72 #17 HC H73 #18 HC H81 #19 HC H82 #20 HC H83 #21 HC H91 #22 HC H92 #23 HC H93 #24 HC + # char C1 #1 0.390 C2 #2 0.556 C3 #3 0.014 C4 #4 -0.150 C5 #5 -0.050 C6 #6 -0.276 C7 #7 0.138 C8 #8 0.138 C9 #9 0.369 N1 #10 -0.427 N2 #11 -0.492 O1 #12 -0.570 H1 #13 0.060 H4 #14 0.150 H5 #15 0.150 H71 #16 0.000 H72 #17 0.000 H73 #18 0.000 H81 #19 0.000 H82 #20 0.000 H83 #21 0.000 H91 #22 0.000 H92 #23 0.000 H93 #24 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N1 #10 0.000 N2 #11 0.000 O1 #12 0.000 H1 #13 0.000 H4 #14 0.000 H5 #15 0.000 H71 #16 0.000 H72 #17 0.000 H73 #18 0.000 H81 #19 0.000 H82 #20 0.000 H83 #21 0.000 H91 #22 0.000 H92 #23 0.000 H93 #24 0.000 +model FEGSEP RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 2 PI electrons + # ty P1 #1 25 O1 #2 6 O2 #3 6 O3 #4 32 O4 #5 7 N1 #6 10 C1 #7 1 C2 #8 1 C3 #9 1 C4 #10 3 H1 #11 24 H2 #12 24 H3 #13 5 H4 #14 28 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 + # symb P1 #1 PO3 O1 #2 OPO2 O2 #3 OPO2 O3 #4 OP O4 #5 O=CN N1 #6 NC=O C1 #7 CR C2 #8 CR C3 #9 CR C4 #10 C=ON H1 #11 HOP H2 #12 HOP H3 #13 HC H4 #14 HNCO H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC + # char P1 #1 1.242 O1 #2 -0.771 O2 #3 -0.771 O3 #4 -0.700 O4 #5 -0.570 N1 #6 -0.730 C1 #7 0.300 C2 #8 0.000 C3 #9 0.061 C4 #10 0.569 H1 #11 0.500 H2 #12 0.500 H3 #13 0.000 H4 #14 0.370 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 N1 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 +model FEHDAX RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty C1 #1 2 C2 #2 22 C3 #3 22 C4 #4 2 C5 #5 3 O1 #6 7 N1 #7 10 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 5 H5 #12 5 H6 #13 28 H7 #14 28 + # symb C1 #1 C=C C2 #2 CR3R C3 #3 CR3R C4 #4 C=C C5 #5 C=ON O1 #6 O=CN N1 #7 NC=O H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HC H5 #12 HC H6 #13 HNCO H7 #14 HNCO + # char C1 #1 -0.080 C2 #2 -0.060 C3 #3 -0.160 C4 #4 -0.300 C5 #5 0.630 O1 #6 -0.570 N1 #7 -0.800 H1 #8 0.100 H2 #9 0.100 H3 #10 0.100 H4 #11 0.150 H5 #12 0.150 H6 #13 0.370 H7 #14 0.370 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 O1 #6 0.000 N1 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 +model FEJJEJ RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 7 C1 #2 3 C2 #3 30 C3 #4 20 N1 #5 10 C4 #6 4 C5 #7 2 C6 #8 1 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 C11 #13 37 C12 #14 37 H1 #15 28 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 + # symb O1 #1 O=CN C1 #2 C=ON C2 #3 CE4R C3 #4 CR4R N1 #5 NC=O C4 #6 =C= C5 #7 C=C C6 #8 CR C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB C11 #13 CB C12 #14 CB H1 #15 HNCO H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC + # char O1 #1 -0.570 C1 #2 0.701 C2 #3 -0.175 C3 #4 0.363 N1 #5 -0.655 C4 #6 -0.099 C5 #7 -0.235 C6 #8 0.143 C7 #9 -0.143 C8 #10 -0.150 C9 #11 -0.150 C10 #12 -0.150 C11 #13 -0.150 C12 #14 -0.150 H1 #15 0.370 H2 #16 0.000 H3 #17 0.150 H4 #18 0.150 H5 #19 0.000 H6 #20 0.000 H7 #21 0.150 H8 #22 0.150 H9 #23 0.150 H10 #24 0.150 H11 #25 0.150 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 N1 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 +model FEJKIO RING 1 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 3 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty N1 #1 34 C1 #2 1 C2 #3 1 C3 #4 1 C4 #5 22 C5 #6 22 C6 #7 22 H1 #8 36 H2 #9 5 H3 #10 5 H4 #11 5 H5 #12 5 H6 #13 5 H7 #14 5 H8 #15 5 H9 #16 5 H10 #17 5 H11 #18 5 H12 #19 5 C2B #20 1 C1B #21 1 N1B #22 34 H4B #23 5 H5B #24 5 H2B #25 5 H3B #26 5 C3B #27 1 H1B #28 36 C4B #29 22 H6B #30 5 H7B #31 5 C5B #32 22 C6B #33 22 H8B #34 5 H9B #35 5 H10B #36 5 H11B #37 5 H12B #38 5 + # symb N1 #1 NR+ C1 #2 CR C2 #3 CR C3 #4 CR C4 #5 CR3R C5 #6 CR3R C6 #7 CR3R H1 #8 HNR+ H2 #9 HC H3 #10 HC H4 #11 HC H5 #12 HC H6 #13 HC H7 #14 HC H8 #15 HC H9 #16 HC H10 #17 HC H11 #18 HC H12 #19 HC C2B #20 CR C1B #21 CR N1B #22 NR+ H4B #23 HC H5B #24 HC H2B #25 HC H3B #26 HC C3B #27 CR H1B #28 HNR+ C4B #29 CR3R H6B #30 HC H7B #31 HC C5B #32 CR3R C6B #33 CR3R H8B #34 HC H9B #35 HC H10B #36 HC H11B #37 HC H12B #38 HC + # char N1 #1 -0.959 C1 #2 0.503 C2 #3 0.503 C3 #4 0.598 C4 #5 -0.195 C5 #6 -0.200 C6 #7 -0.200 H1 #8 0.450 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 H8 #15 0.100 H9 #16 0.100 H10 #17 0.100 H11 #18 0.100 H12 #19 0.100 C2B #20 0.503 C1B #21 0.503 N1B #22 -0.959 H4B #23 0.000 H5B #24 0.000 H2B #25 0.000 H3B #26 0.000 C3B #27 0.598 H1B #28 0.450 C4B #29 -0.195 H6B #30 0.000 H7B #31 0.000 C5B #32 -0.200 C6B #33 -0.200 H8B #34 0.100 H9B #35 0.100 H10B #36 0.100 H11B #37 0.100 H12B #38 0.100 + # fchar N1 #1 1.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 H8 #15 0.000 H9 #16 0.000 H10 #17 0.000 H11 #18 0.000 H12 #19 0.000 C2B #20 0.000 C1B #21 0.000 N1B #22 1.000 H4B #23 0.000 H5B #24 0.000 H2B #25 0.000 H3B #26 0.000 C3B #27 0.000 H1B #28 0.000 C4B #29 0.000 H6B #30 0.000 H7B #31 0.000 C5B #32 0.000 C6B #33 0.000 H8B #34 0.000 H9B #35 0.000 H10B #36 0.000 H11B #37 0.000 H12B #38 0.000 +model FELYIE RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 16 O1 #2 59 O2 #3 6 N1 #4 10 C1 #5 3 C2 #6 63 C3 #7 64 C4 #8 64 C5 #9 63 C6 #10 1 C7 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 28 H5 #16 21 H6 #17 5 H7 #18 5 H8 #19 5 H9 #20 5 + # symb S1 #1 S=C O1 #2 OFUR O2 #3 OR N1 #4 NC=S C1 #5 C=SN C2 #6 C5A C3 #7 C5B C4 #8 C5B C5 #9 C5A C6 #10 CR C7 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HNCS H5 #16 HOR H6 #17 HC H7 #18 HC H8 #19 HC H9 #20 HC + # char S1 #1 -0.380 O1 #2 -0.280 O2 #3 -0.680 N1 #4 -0.730 C1 #5 0.525 C2 #6 0.055 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.010 C6 #10 0.300 C7 #11 0.280 H1 #12 0.150 H2 #13 0.150 H3 #14 0.150 H4 #15 0.370 H5 #16 0.400 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 +model FELYUQ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 3 O1 #8 7 C8 #9 1 N1 #10 10 O2 #11 6 C9 #12 3 O3 #13 7 C10 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 21 H9 #23 5 H10 #24 5 H11 #25 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 C=OR O1 #8 O=CR C8 #9 CR N1 #10 NC=O O2 #11 -O- C9 #12 C=ON O3 #13 O=CN C10 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HO H9 #23 HC H10 #24 HC H11 #25 HC + # char C1 #1 0.117 C2 #2 -0.150 C3 #3 -0.150 C4 #4 0.086 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.423 O1 #8 -0.570 C8 #9 0.061 N1 #10 -0.141 O2 #11 -0.435 C9 #12 0.569 O3 #13 -0.570 C10 #14 0.061 H1 #15 0.150 H2 #16 0.150 H3 #17 0.150 H4 #18 0.150 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.400 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 O1 #8 0.000 C8 #9 0.000 N1 #10 0.000 O2 #11 0.000 C9 #12 0.000 O3 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 +model FEMGEJ RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 32 O2 #2 32 C1 #3 22 C2 #4 2 C3 #5 2 C4 #6 1 C5 #7 1 C6 #8 1 C7 #9 1 C8 #10 22 C9 #11 22 C10 #12 41 H4 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 H8 #17 5 H9 #18 5 H10 #19 5 H11 #20 5 H12 #21 5 H13 #22 5 H14 #23 5 H15 #24 5 H16 #25 5 + # symb O1 #1 O2CM O2 #2 O2CM C1 #3 CR3R C2 #4 C=C C3 #5 C=C C4 #6 CR C5 #7 CR C6 #8 CR C7 #9 CR C8 #10 CR3R C9 #11 CR3R C10 #12 CO2M H4 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC H8 #17 HC H9 #18 HC H10 #19 HC H11 #20 HC H12 #21 HC H13 #22 HC H14 #23 HC H15 #24 HC H16 #25 HC + # char O1 #1 -0.900 O2 #2 -0.900 C1 #3 -0.060 C2 #4 -0.190 C3 #5 -0.288 C4 #6 0.138 C5 #7 0.000 C6 #8 0.000 C7 #9 0.095 C8 #10 -0.195 C9 #11 -0.247 C10 #12 0.947 H4 #13 0.100 H5 #14 0.150 H6 #15 0.150 H7 #16 0.000 H8 #17 0.000 H9 #18 0.000 H10 #19 0.000 H11 #20 0.000 H12 #21 0.000 H13 #22 0.000 H14 #23 0.000 H15 #24 0.100 H16 #25 0.100 + # fchar O1 #1 -0.500 O2 #2 -0.500 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 H9 #18 0.000 H10 #19 0.000 H11 #20 0.000 H12 #21 0.000 H13 #22 0.000 H14 #23 0.000 H15 #24 0.000 H16 #25 0.000 +model FENCOQ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 59 O2 #2 32 O3 #3 6 N1 #4 82 N2 #5 65 N3 #6 9 C1 #7 64 C2 #8 64 C3 #9 1 C4 #10 3 C5 #11 1 H1 #12 21 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H3A #17 5 H5A #18 5 + # symb O1 #1 OFUR O2 #2 OXN O3 #3 -O- N1 #4 N5AX N2 #5 N5A N3 #6 N=C C1 #7 C5B C2 #8 C5B C3 #9 CR C4 #10 C=N C5 #11 CR H1 #12 HO H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H3A #17 HC H5A #18 HC + # char O1 #1 -0.117 O2 #2 -0.633 O3 #3 -0.337 N1 #4 0.953 N2 #5 -0.410 N3 #6 -0.513 C1 #7 -0.263 C2 #8 0.203 C3 #9 0.181 C4 #10 0.475 C5 #11 0.061 H1 #12 0.400 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H3A #17 0.000 H5A #18 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H3A #17 0.000 H5A #18 0.000 +model FENHAH RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 4 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 64 N2 #2 66 C3 #3 63 O4 #4 59 N5 #5 65 C6 #6 3 O7 #7 7 N8 #8 10 C9 #9 1 C10 #10 1 H8 #11 28 H91 #12 5 H92 #13 5 H93 #14 5 H101 #15 5 H102 #16 5 H103 #17 5 + # symb C1 #1 C5B N2 #2 N5B C3 #3 C5A O4 #4 OFUR N5 #5 N5A C6 #6 C=ON O7 #7 O=CN N8 #8 NC=O C9 #9 CR C10 #10 CR H8 #11 HNCO H91 #12 HC H92 #13 HC H93 #14 HC H101 #15 HC H102 #16 HC H103 #17 HC + # char C1 #1 0.430 N2 #2 -0.565 C3 #3 0.298 O4 #4 -0.019 N5 #5 -0.410 C6 #6 0.716 O7 #7 -0.570 N8 #8 -0.730 C9 #9 0.300 C10 #10 0.180 H8 #11 0.370 H91 #12 0.000 H92 #13 0.000 H93 #14 0.000 H101 #15 0.000 H102 #16 0.000 H103 #17 0.000 + # fchar C1 #1 0.000 N2 #2 0.000 C3 #3 0.000 O4 #4 0.000 N5 #5 0.000 C6 #6 0.000 O7 #7 0.000 N8 #8 0.000 C9 #9 0.000 C10 #10 0.000 H8 #11 0.000 H91 #12 0.000 H92 #13 0.000 H93 #14 0.000 H101 #15 0.000 H102 #16 0.000 H103 #17 0.000 +model FENJIR RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 7 SUBRING 2 has 4 PI electrons + # ty S1 #1 15 C2 #2 1 C3 #3 1 N4 #4 10 C5 #5 3 S5 #6 16 N6 #7 10 C7 #8 1 C71 #9 1 N71 #10 8 C8 #11 1 C9 #12 1 C10 #13 1 C11 #14 1 H21 #15 5 H22 #16 5 H31 #17 5 H32 #18 5 H6 #19 28 H81 #20 5 H82 #21 5 H83 #22 5 H91 #23 5 H92 #24 5 H93 #25 5 H101 #26 5 H102 #27 5 H103 #28 5 H111 #29 5 H112 #30 5 H113 #31 5 + # symb S1 #1 S C2 #2 CR C3 #3 CR N4 #4 NC=S C5 #5 C=SN S5 #6 S=C N6 #7 NC=S C7 #8 CR C71 #9 CR N71 #10 NR C8 #11 CR C9 #12 CR C10 #13 CR C11 #14 CR H21 #15 HC H22 #16 HC H31 #17 HC H32 #18 HC H6 #19 HNCS H81 #20 HC H82 #21 HC H83 #22 HC H91 #23 HC H92 #24 HC H93 #25 HC H101 #26 HC H102 #27 HC H103 #28 HC H111 #29 HC H112 #30 HC H113 #31 HC + # char S1 #1 -0.460 C2 #2 0.230 C3 #3 0.300 N4 #4 -0.660 C5 #5 0.500 S5 #6 -0.380 N6 #7 -0.730 C7 #8 0.300 C71 #9 0.800 N71 #10 -0.810 C8 #11 0.000 C9 #12 0.000 C10 #13 0.270 C11 #14 0.270 H21 #15 0.000 H22 #16 0.000 H31 #17 0.000 H32 #18 0.000 H6 #19 0.370 H81 #20 0.000 H82 #21 0.000 H83 #22 0.000 H91 #23 0.000 H92 #24 0.000 H93 #25 0.000 H101 #26 0.000 H102 #27 0.000 H103 #28 0.000 H111 #29 0.000 H112 #30 0.000 H113 #31 0.000 + # fchar S1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N4 #4 0.000 C5 #5 0.000 S5 #6 0.000 N6 #7 0.000 C7 #8 0.000 C71 #9 0.000 N71 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 H21 #15 0.000 H22 #16 0.000 H31 #17 0.000 H32 #18 0.000 H6 #19 0.000 H81 #20 0.000 H82 #21 0.000 H83 #22 0.000 H91 #23 0.000 H92 #24 0.000 H93 #25 0.000 H101 #26 0.000 H102 #27 0.000 H103 #28 0.000 H111 #29 0.000 H112 #30 0.000 H113 #31 0.000 +model FENJOX RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons + # ty S1 #1 15 C2 #2 3 N3 #3 9 C4 #4 1 C5 #5 1 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 1 N10 #10 10 C11 #11 3 S11 #12 16 N12 #13 10 C13 #14 1 C14 #15 1 H41 #16 5 H51 #17 5 H52 #18 5 H71 #19 5 H72 #20 5 H81 #21 5 H82 #22 5 H83 #23 5 H91 #24 5 H92 #25 5 H93 #26 5 H10 #27 28 H131 #28 5 H132 #29 5 H133 #30 5 H141 #31 5 H142 #32 5 H143 #33 5 H1 #34 5 + # symb S1 #1 S C2 #2 C=N N3 #3 N=C C4 #4 CR C5 #5 CR C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 CR N10 #10 NC=S C11 #11 C=SN S11 #12 S=C N12 #13 NC=S C13 #14 CR C14 #15 CR H41 #16 HC H51 #17 HC H52 #18 HC H71 #19 HC H72 #20 HC H81 #21 HC H82 #22 HC H83 #23 HC H91 #24 HC H92 #25 HC H93 #26 HC H10 #27 HNCS H131 #28 HC H132 #29 HC H133 #30 HC H141 #31 HC H142 #32 HC H143 #33 HC H1 #34 HC + # char S1 #1 -0.371 C2 #2 0.530 N3 #3 -0.696 C4 #4 0.246 C5 #5 0.230 C6 #6 0.361 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N10 #10 -0.730 C11 #11 0.500 S11 #12 -0.380 N12 #13 -0.660 C13 #14 0.300 C14 #15 0.300 H41 #16 0.000 H51 #17 0.000 H52 #18 0.000 H71 #19 0.000 H72 #20 0.000 H81 #21 0.000 H82 #22 0.000 H83 #23 0.000 H91 #24 0.000 H92 #25 0.000 H93 #26 0.000 H10 #27 0.370 H131 #28 0.000 H132 #29 0.000 H133 #30 0.000 H141 #31 0.000 H142 #32 0.000 H143 #33 0.000 H1 #34 0.000 + # fchar S1 #1 0.000 C2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N10 #10 0.000 C11 #11 0.000 S11 #12 0.000 N12 #13 0.000 C13 #14 0.000 C14 #15 0.000 H41 #16 0.000 H51 #17 0.000 H52 #18 0.000 H71 #19 0.000 H72 #20 0.000 H81 #21 0.000 H82 #22 0.000 H83 #23 0.000 H91 #24 0.000 H92 #25 0.000 H93 #26 0.000 H10 #27 0.000 H131 #28 0.000 H132 #29 0.000 H133 #30 0.000 H141 #31 0.000 H142 #32 0.000 H143 #33 0.000 H1 #34 0.000 +model FENJUD RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons SUBRING 2 has 0 PI electrons + # ty N1 #1 10 C2 #2 3 S2 #3 16 N3 #4 10 C4 #5 3 O4 #6 7 C5 #7 1 C6 #8 1 C7 #9 1 C8 #10 1 C9 #11 1 C10 #12 1 C11 #13 1 S11 #14 15 H1 #15 28 H61 #16 5 H62 #17 5 H71 #18 5 H72 #19 5 H81 #20 5 H82 #21 5 H91 #22 5 H92 #23 5 H101 #24 5 H102 #25 5 H111 #26 5 H112 #27 5 H113 #28 71 + # symb N1 #1 NC=S C2 #2 C=SN S2 #3 S=C N3 #4 NC=O C4 #5 C=ON O4 #6 O=CN C5 #7 CR C6 #8 CR C7 #9 CR C8 #10 CR C9 #11 CR C10 #12 CR C11 #13 CR S11 #14 S H1 #15 HNCS H61 #16 HC H62 #17 HC H71 #18 HC H72 #19 HC H81 #20 HC H82 #21 HC H91 #22 HC H92 #23 HC H101 #24 HC H102 #25 HC H111 #26 HC H112 #27 HC H113 #28 HS + # char N1 #1 -0.730 C2 #2 0.500 S2 #3 -0.380 N3 #4 -0.420 C4 #5 0.569 O4 #6 -0.570 C5 #7 0.361 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.300 C11 #13 0.230 S11 #14 -0.410 H1 #15 0.370 H61 #16 0.000 H62 #17 0.000 H71 #18 0.000 H72 #19 0.000 H81 #20 0.000 H82 #21 0.000 H91 #22 0.000 H92 #23 0.000 H101 #24 0.000 H102 #25 0.000 H111 #26 0.000 H112 #27 0.000 H113 #28 0.180 + # fchar N1 #1 0.000 C2 #2 0.000 S2 #3 0.000 N3 #4 0.000 C4 #5 0.000 O4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 S11 #14 0.000 H1 #15 0.000 H61 #16 0.000 H62 #17 0.000 H71 #18 0.000 H72 #19 0.000 H81 #20 0.000 H82 #21 0.000 H91 #22 0.000 H92 #23 0.000 H101 #24 0.000 H102 #25 0.000 H111 #26 0.000 H112 #27 0.000 H113 #28 0.000 +model FENNUH + # ty P1 #1 75 N1 #2 40 N2 #3 40 C1 #4 3 C2 #5 1 C3 #6 1 C4 #7 1 C5 #8 1 H1 #9 71 H21 #10 5 H22 #11 5 H23 #12 5 H31 #13 5 H32 #14 5 H33 #15 5 H41 #16 5 H42 #17 5 H43 #18 5 H51 #19 5 H52 #20 5 H53 #21 5 + # symb P1 #1 -P=C N1 #2 NC=P N2 #3 NC=P C1 #4 C=P C2 #5 CR C3 #6 CR C4 #7 CR C5 #8 CR H1 #9 HP H21 #10 HC H22 #11 HC H23 #12 HC H31 #13 HC H32 #14 HC H33 #15 HC H41 #16 HC H42 #17 HC H43 #18 HC H51 #19 HC H52 #20 HC H53 #21 HC + # char P1 #1 -0.343 N1 #2 -0.788 N2 #3 -0.788 C1 #4 0.347 C2 #5 0.369 C3 #6 0.369 C4 #7 0.369 C5 #8 0.369 H1 #9 0.096 H21 #10 0.000 H22 #11 0.000 H23 #12 0.000 H31 #13 0.000 H32 #14 0.000 H33 #15 0.000 H41 #16 0.000 H42 #17 0.000 H43 #18 0.000 H51 #19 0.000 H52 #20 0.000 H53 #21 0.000 + # fchar P1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 H1 #9 0.000 H21 #10 0.000 H22 #11 0.000 H23 #12 0.000 H31 #13 0.000 H32 #14 0.000 H33 #15 0.000 H41 #16 0.000 H42 #17 0.000 H43 #18 0.000 H51 #19 0.000 H52 #20 0.000 H53 #21 0.000 +model FENYIG RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 6 PI PAIR ON SP2-N 11 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 6 PI PAIR ON SP2-N 11 SUBRING 2 has 4 PI electrons + # ty C1 #1 3 O1 #2 7 C2 #3 3 C3 #4 3 O2 #5 7 N1 #6 10 C4 #7 1 C5 #8 1 C6 #9 1 C7 #10 1 N2 #11 10 N3 #12 53 N4 #13 47 C8 #14 3 O3 #15 7 O4 #16 6 C9 #17 1 C10 #18 1 C11 #19 1 C12 #20 1 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 H7 #27 5 H8 #28 5 H9 #29 5 H10 #30 5 H11 #31 5 H12 #32 5 H13 #33 5 H14 #34 5 H15 #35 5 H16 #36 5 + # symb C1 #1 C=ON O1 #2 O=CN C2 #3 C=N C3 #4 C=ON O2 #5 O=CN N1 #6 NC=O C4 #7 CR C5 #8 CR C6 #9 CR C7 #10 CR N2 #11 NC=O N3 #12 =N= N4 #13 NAZT C8 #14 COO O3 #15 O=CO O4 #16 OC=O C9 #17 CR C10 #18 CR C11 #19 CR C12 #20 CR H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC H7 #27 HC H8 #28 HC H9 #29 HC H10 #30 HC H11 #31 HC H12 #32 HC H13 #33 HC H14 #34 HC H15 #35 HC H16 #36 HC + # char C1 #1 0.630 O1 #2 -0.570 C2 #3 0.013 C3 #4 0.630 O2 #5 -0.570 N1 #6 -0.360 C4 #7 0.361 C5 #8 0.000 C6 #9 0.000 C7 #10 0.300 N2 #11 -0.360 N3 #12 0.357 N4 #13 -0.370 C8 #14 0.659 O3 #15 -0.570 O4 #16 -0.430 C9 #17 0.280 C10 #18 0.000 C11 #19 0.000 C12 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H16 #36 0.000 + # fchar C1 #1 0.000 O1 #2 0.000 C2 #3 0.000 C3 #4 0.000 O2 #5 0.000 N1 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 N2 #11 0.000 N3 #12 0.000 N4 #13 0.000 C8 #14 0.000 O3 #15 0.000 O4 #16 0.000 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 C12 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H16 #36 0.000 +model FEPWAY + # ty S1 #1 72 S2 #2 72 N1 #3 55 N2 #4 55 C1 #5 41 C2 #6 57 C3 #7 1 H1 #8 36 H2 #9 36 H3 #10 36 H4 #11 5 H5 #12 5 H6 #13 5 + # symb S1 #1 S2CM S2 #2 S2CM N1 #3 NCN+ N2 #4 NCN+ C1 #5 CS2M C2 #6 CNN+ C3 #7 CR H1 #8 HNN+ H2 #9 HNN+ H3 #10 HNN+ H4 #11 HC H5 #12 HC H6 #13 HC + # char S1 #1 -0.750 S2 #2 -0.750 N1 #3 -0.832 N2 #4 -0.754 C1 #5 1.028 C2 #6 0.604 C3 #7 0.105 H1 #8 0.450 H2 #9 0.450 H3 #10 0.450 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 + # fchar S1 #1 -0.500 S2 #2 -0.500 N1 #3 0.500 N2 #4 0.500 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 +model FEPWOM + # ty S1 #1 15 F1 #2 11 F2 #3 11 N1 #4 42 C1 #5 1 C2 #6 4 C1B #7 1 S1B #8 15 F1B #9 11 F2B #10 11 C2B #11 4 N1B #12 42 + # symb S1 #1 S F1 #2 F F2 #3 F N1 #4 NSP C1 #5 CR C2 #6 CSP C1B #7 CR S1B #8 S F1B #9 F F2B #10 F C2B #11 CSP N1B #12 NSP + # char S1 #1 -0.266 F1 #2 -0.340 F2 #3 -0.340 N1 #4 -0.557 C1 #5 0.910 C2 #6 0.593 C1B #7 0.910 S1B #8 -0.266 F1B #9 -0.340 F2B #10 -0.340 C2B #11 0.593 N1B #12 -0.557 + # fchar S1 #1 0.000 F1 #2 0.000 F2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C1B #7 0.000 S1B #8 0.000 F1B #9 0.000 F2B #10 0.000 C2B #11 0.000 N1B #12 0.000 +model FESCAH + # ty N1 #1 10 C1 #2 3 O1 #3 7 H1 #4 5 C1A #5 3 C1B #6 3 O1A #7 7 H1A #8 5 O1B #9 7 H1B #10 5 + # symb N1 #1 NC=O C1 #2 C=ON O1 #3 O=CN H1 #4 HC C1A #5 C=ON C1B #6 C=ON O1A #7 O=CN H1A #8 HC O1B #9 O=CN H1B #10 HC + # char N1 #1 -0.180 C1 #2 0.570 O1 #3 -0.570 H1 #4 0.060 C1A #5 0.570 C1B #6 0.570 O1A #7 -0.570 H1A #8 0.060 O1B #9 -0.570 H1B #10 0.060 + # fchar N1 #1 0.000 C1 #2 0.000 O1 #3 0.000 H1 #4 0.000 C1A #5 0.000 C1B #6 0.000 O1A #7 0.000 H1A #8 0.000 O1B #9 0.000 H1B #10 0.000 +model FESMIZ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 C1 #4 1 C2 #5 1 C3 #6 3 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 N1 #13 9 N2 #14 40 O1 #15 6 O2 #16 6 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 28 H8 #24 28 H9 #25 21 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL C1 #4 CR C2 #5 CR C3 #6 C=N C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB N1 #13 N=C N2 #14 NC=N O1 #15 OR O2 #16 OR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HNCN H8 #24 HNCN H9 #25 HOR + # char CL1 #1 -0.290 CL2 #2 -0.290 CL3 #3 -0.290 C1 #4 0.870 C2 #5 0.560 C3 #6 0.414 C4 #7 0.086 C5 #8 -0.150 C6 #9 -0.150 C7 #10 -0.150 C8 #11 -0.150 C9 #12 -0.150 N1 #13 -0.513 N2 #14 -0.850 O1 #15 -0.680 O2 #16 -0.217 H1 #17 0.000 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.150 H6 #22 0.150 H7 #23 0.400 H8 #24 0.400 H9 #25 0.400 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 N1 #13 0.000 N2 #14 0.000 O1 #15 0.000 O2 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 +model FETRUR RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 13 PI PAIR ON SP2-N 3 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 14 PI PAIR ON SP2-N 13 SUBRING 2 has 4 PI electrons PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 13 PI PAIR ON SP2-N 14 SUBRING 3 has 6 PI electrons + # ty N1 #1 34 C1 #2 1 N2 #3 8 C2 #4 1 H1 #5 36 H2 #6 5 H3 #7 5 H4 #8 5 C1C #9 1 C1D #10 1 H2L #11 5 C2C #12 1 N2D #13 8 N2C #14 8 H2C #15 5 H2I #16 5 H2D #17 5 H2M #18 5 H3C #19 5 H4C #20 5 C2D #21 1 H3D #22 5 H4D #23 5 + # symb N1 #1 NR+ C1 #2 CR N2 #3 NR C2 #4 CR H1 #5 HNR+ H2 #6 HC H3 #7 HC H4 #8 HC C1C #9 CR C1D #10 CR H2L #11 HC C2C #12 CR N2D #13 NR N2C #14 NR H2C #15 HC H2I #16 HC H2D #17 HC H2M #18 HC H3C #19 HC H4C #20 HC C2D #21 CR H3D #22 HC H4D #23 HC + # char N1 #1 -0.959 C1 #2 0.773 N2 #3 -0.810 C2 #4 0.540 H1 #5 0.450 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 C1C #9 0.773 C1D #10 0.773 H2L #11 0.000 C2C #12 0.540 N2D #13 -0.810 N2C #14 -0.810 H2C #15 0.000 H2I #16 0.000 H2D #17 0.000 H2M #18 0.000 H3C #19 0.000 H4C #20 0.000 C2D #21 0.540 H3D #22 0.000 H4D #23 0.000 + # fchar N1 #1 1.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 C1C #9 0.000 C1D #10 0.000 H2L #11 0.000 C2C #12 0.000 N2D #13 0.000 N2C #14 0.000 H2C #15 0.000 H2I #16 0.000 H2D #17 0.000 H2M #18 0.000 H3C #19 0.000 H4C #20 0.000 C2D #21 0.000 H3D #22 0.000 H4D #23 0.000 +model FETWOQ RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 1 has 0 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 12 SUBRING 1 has 2 PI electrons + # ty C1 #1 20 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 20 C6 #6 20 C7 #7 3 C8 #8 3 C9 #9 1 C10 #10 1 C11 #11 3 N1 #12 10 O1 #13 6 O2 #14 6 O3 #15 7 O4 #16 7 O5 #17 7 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 21 H13 #30 21 + # symb C1 #1 CR4R C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 CR4R C6 #6 CR4R C7 #7 C=OR C8 #8 C=ON C9 #9 CR C10 #10 CR C11 #11 C=ON N1 #12 NC=O O1 #13 OR O2 #14 OR O3 #15 O=CR O4 #16 O=CN O5 #17 O=CN H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HOR H13 #30 HOR + # char C1 #1 0.053 C2 #2 0.000 C3 #3 0.280 C4 #4 0.280 C5 #5 0.000 C6 #6 0.278 C7 #7 0.464 C8 #8 0.569 C9 #9 0.061 C10 #10 0.061 C11 #11 0.569 N1 #12 -0.345 O1 #13 -0.680 O2 #14 -0.680 O3 #15 -0.570 O4 #16 -0.570 O5 #17 -0.570 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.400 H13 #30 0.400 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 N1 #12 0.000 O1 #13 0.000 O2 #14 0.000 O3 #15 0.000 O4 #16 0.000 O5 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 +model FEVNUP RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 8 SUBRING 1 has 4 PI electrons + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 N1 #4 10 C1 #5 1 C2 #6 3 O1 #7 7 N2 #8 10 C3 #9 3 N3 #10 9 C4 #11 1 C5 #12 1 O2 #13 6 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 28 H5 #18 5 H6 #19 21 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL N1 #4 NC=O C1 #5 CR C2 #6 CONN O1 #7 O=CN N2 #8 NC=O C3 #9 C=N N3 #10 N=C C4 #11 CR C5 #12 CR O2 #13 OR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HNCO H5 #18 HC H6 #19 HOR + # char CL1 #1 0.002 CL2 #2 -0.290 CL3 #3 -0.290 N1 #4 -0.660 C1 #5 0.300 C2 #6 0.690 O1 #7 -0.570 N2 #8 -0.490 C3 #9 0.449 N3 #10 -0.452 C4 #11 0.641 C5 #12 0.580 O2 #13 -0.680 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.370 H5 #18 0.000 H6 #19 0.400 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 O1 #7 0.000 N2 #8 0.000 C3 #9 0.000 N3 #10 0.000 C4 #11 0.000 C5 #12 0.000 O2 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 +model FEYLUQ RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 8 PI PAIR ON SP2-N 9 SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 59 O2 #2 32 O3 #3 32 O4 #4 32 O5 #5 32 N1 #6 65 N2 #7 65 N3 #8 40 N4 #9 40 N5 #10 45 N6 #11 45 C1 #12 1 C2 #13 1 C3 #14 64 C4 #15 64 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 + # symb O1 #1 OFUR O2 #2 O2N O3 #3 O2N O4 #4 O2N O5 #5 O2N N1 #6 N5A N2 #7 N5A N3 #8 NC=N N4 #9 NC=N N5 #10 NO2 N6 #11 NO2 C1 #12 CR C2 #13 CR C3 #14 C5B C4 #15 C5B H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC + # char O1 #1 0.242 O2 #2 -0.520 O3 #3 -0.520 O4 #4 -0.520 O5 #5 -0.520 N1 #6 -0.410 N2 #7 -0.410 N3 #8 -0.456 N4 #9 -0.456 N5 #10 1.044 N6 #11 1.044 C1 #12 0.369 C2 #13 0.369 C3 #14 0.372 C4 #15 0.372 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 N4 #9 0.000 N5 #10 0.000 N6 #11 0.000 C1 #12 0.000 C2 #13 0.000 C3 #14 0.000 C4 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 +model FEZPOP + # ty S1 #1 16 O1 #2 35 N1 #3 10 C1 #4 3 H1 #5 28 N1B #6 10 C1B #7 3 H1B #8 28 S1B #9 16 O1B #10 35 + # symb S1 #1 S=C O1 #2 OM2 N1 #3 NC=S C1 #4 C=SN H1 #5 HNCS N1B #6 NC=S C1B #7 C=SN H1B #8 HNCS S1B #9 S=C O1B #10 OM2 + # char S1 #1 -0.380 O1 #2 -0.861 N1 #3 -0.430 C1 #4 0.301 H1 #5 0.370 N1B #6 -0.430 C1B #7 0.301 H1B #8 0.370 S1B #9 -0.380 O1B #10 -0.861 + # fchar S1 #1 0.000 O1 #2 -1.000 N1 #3 0.000 C1 #4 0.000 H1 #5 0.000 N1B #6 0.000 C1B #7 0.000 H1B #8 0.000 S1B #9 0.000 O1B #10 -1.000 +model FEZRUX RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 2 PI PAIR ON SP2-N 5 SUBRING 1 has 8 PI electrons PI PAIR ON SP2-N 2 SUBRING 2 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 7 N1 #2 10 N2 #3 40 N3 #4 9 N4 #5 40 N5 #6 9 C1 #7 1 C2 #8 3 C3 #9 3 C4 #10 3 C5 #11 2 C6 #12 2 C7 #13 37 C8 #14 37 C9 #15 37 C10 #16 37 C11 #17 37 C12 #18 37 H1 #19 28 H2 #20 28 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 + # symb O1 #1 O=CN N1 #2 NC=O N2 #3 NC=N N3 #4 N=C N4 #5 NC=N N5 #6 N=C C1 #7 CR C2 #8 C=N C3 #9 CGD C4 #10 C=ON C5 #11 C=C C6 #12 C=C C7 #13 CB C8 #14 CB C9 #15 CB C10 #16 CB C11 #17 CB C12 #18 CB H1 #19 HNCN H2 #20 HNCN H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC + # char O1 #1 -0.570 N1 #2 -0.100 N2 #3 -0.470 N3 #4 -0.492 N4 #5 -0.408 N5 #6 -0.621 C1 #7 0.061 C2 #8 0.439 C3 #9 0.560 C4 #10 0.616 C5 #11 -0.136 C6 #12 0.143 C7 #13 0.028 C8 #14 -0.150 C9 #15 -0.150 C10 #16 -0.150 C11 #17 -0.150 C12 #18 -0.150 H1 #19 0.400 H2 #20 0.400 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.150 H7 #25 0.150 H8 #26 0.150 H9 #27 0.150 H10 #28 0.150 H11 #29 0.150 + # fchar O1 #1 0.000 N1 #2 0.000 N2 #3 0.000 N3 #4 0.000 N4 #5 0.000 N5 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 C11 #17 0.000 C12 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 +model FIBLIL RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON O OR S 2 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 10 O1 #2 6 C1 #3 1 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 3 O2 #8 7 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 C10 #13 37 C11 #14 37 N2 #15 45 O3 #16 32 O4 #17 32 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 + # symb N1 #1 NC=O O1 #2 OR C1 #3 CR C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 C=ON O2 #8 O=CN C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB C10 #13 CB C11 #14 CB N2 #15 NO2 O3 #16 O2N O4 #17 O2N H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC + # char N1 #1 -0.325 O1 #2 -0.316 C1 #3 0.280 C2 #4 0.000 C3 #5 0.000 C4 #6 0.300 C5 #7 0.544 O2 #8 -0.570 C6 #9 0.086 C7 #10 -0.150 C8 #11 -0.150 C9 #12 0.133 C10 #13 -0.150 C11 #14 -0.150 N2 #15 0.907 O3 #16 -0.520 O4 #17 -0.520 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 + # fchar N1 #1 0.000 O1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 O2 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 N2 #15 0.000 O3 #16 0.000 O4 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 +model FICDOK RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 C1 #2 1 C2 #3 63 N2 #4 66 C3 #5 64 N3 #6 45 O1 #7 32 O2 #8 32 C4 #9 63 O3 #10 6 C5 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 + # symb N1 #1 NPYL C1 #2 CR C2 #3 C5A N2 #4 N5B C3 #5 C5B N3 #6 NO2 O1 #7 O2N O2 #8 O2N C4 #9 C5A O3 #10 OC=C C5 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC + # char N1 #1 0.048 C1 #2 0.256 C2 #3 0.037 N2 #4 -0.565 C3 #5 0.306 N3 #6 0.961 O1 #7 -0.520 O2 #8 -0.520 C4 #9 -0.089 O3 #10 -0.343 C5 #11 0.280 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.150 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 N2 #4 0.000 C3 #5 0.000 N3 #6 0.000 O1 #7 0.000 O2 #8 0.000 C4 #9 0.000 O3 #10 0.000 C5 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 +model FIFGUW RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 0 PI electrons + # ty S1 #1 17 O1 #2 7 O2 #3 6 C1 #4 22 C2 #5 22 C3 #6 1 C4 #7 1 C5 #8 1 C6 #9 1 C7 #10 1 C8 #11 1 C9 #12 1 C10 #13 1 C11 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 5 H15 #29 5 H16 #30 5 H17 #31 5 H18 #32 5 H19 #33 5 H20 #34 5 + # symb S1 #1 S=O O1 #2 O=S O2 #3 OR C1 #4 CR3R C2 #5 CR3R C3 #6 CR C4 #7 CR C5 #8 CR C6 #9 CR C7 #10 CR C8 #11 CR C9 #12 CR C10 #13 CR C11 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HC H15 #29 HC H16 #30 HC H17 #31 HC H18 #32 HC H19 #33 HC H20 #34 HC + # char S1 #1 0.211 O1 #2 -0.500 O2 #3 -0.296 C1 #4 0.149 C2 #5 -0.047 C3 #6 0.095 C4 #7 0.000 C5 #8 0.000 C6 #9 0.095 C7 #10 0.000 C8 #11 0.194 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 H1 #15 0.100 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 H16 #30 0.000 H17 #31 0.000 H18 #32 0.000 H19 #33 0.000 H20 #34 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 H16 #30 0.000 H17 #31 0.000 H18 #32 0.000 H19 #33 0.000 H20 #34 0.000 +model FIGYID RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty C1 #1 22 C2 #2 22 C3 #3 22 N1 #4 8 H1 #5 5 H2 #6 5 H3 #7 5 H4 #8 5 H5 #9 5 H6 #10 23 H7 #11 23 + # symb C1 #1 CR3R C2 #2 CR3R C3 #3 CR3R N1 #4 NR H1 #5 HC H2 #6 HC H3 #7 HC H4 #8 HC H5 #9 HC H6 #10 HNR H7 #11 HNR + # char C1 #1 0.058 C2 #2 -0.200 C3 #3 -0.200 N1 #4 -0.878 H1 #5 0.100 H2 #6 0.100 H3 #7 0.100 H4 #8 0.100 H5 #9 0.100 H6 #10 0.360 H7 #11 0.360 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N1 #4 0.000 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 H5 #9 0.000 H6 #10 0.000 H7 #11 0.000 +model FIHXID RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 2 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 7 PI PAIR ON SP2-N 8 SUBRING 1 has 6 PI electrons + # ty BR1 #1 13 O1 #2 6 O2 #3 7 O3 #4 6 O4 #5 7 O5 #6 6 N1 #7 10 N2 #8 10 C1 #9 1 C2 #10 3 C3 #11 1 C4 #12 1 C5 #13 3 C6 #14 1 C7 #15 2 C8 #16 1 C9 #17 2 C10 #18 2 C11 #19 2 H1 #20 5 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 28 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 21 H13 #32 21 + # symb BR1 #1 BR O1 #2 OR O2 #3 O=CN O3 #4 OR O4 #5 O=CN O5 #6 OR N1 #7 NC=O N2 #8 NC=O C1 #9 CR C2 #10 CONN C3 #11 CR C4 #12 CR C5 #13 C=ON C6 #14 CR C7 #15 C=C C8 #16 CR C9 #17 C=C C10 #18 C=C C11 #19 C=C H1 #20 HC H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HNCO H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HOR H13 #32 HOR + # char BR1 #1 -0.110 O1 #2 -0.560 O2 #3 -0.570 O3 #4 -0.680 O4 #5 -0.570 O5 #6 -0.680 N1 #7 -0.469 N2 #8 -0.490 C1 #9 0.580 C2 #10 0.690 C3 #11 0.000 C4 #12 0.280 C5 #13 0.616 C6 #14 0.280 C7 #15 0.014 C8 #16 0.280 C9 #17 -0.041 C10 #18 -0.150 C11 #19 -0.040 H1 #20 0.150 H2 #21 0.150 H3 #22 0.150 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.370 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.400 H13 #32 0.400 + # fchar BR1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 O5 #6 0.000 N1 #7 0.000 N2 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 +model FIKJAK RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons + # ty C1 #1 2 C2 #2 2 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 1 C7 #7 4 C8 #8 4 C9 #9 4 C10 #10 4 C11 #11 4 N1 #12 40 N2 #13 42 N3 #14 42 N4 #15 42 N5 #16 42 N6 #17 42 H1 #18 28 H2 #19 28 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 CR C7 #7 CSP C8 #8 CSP C9 #9 CSP C10 #10 CSP C11 #11 CSP N1 #12 NC=C N2 #13 NSP N3 #14 NSP N4 #15 NSP N5 #16 NSP N6 #17 NSP H1 #18 HNCC H2 #19 HNCC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC + # char C1 #1 -0.038 C2 #2 -0.073 C3 #3 0.138 C4 #4 0.400 C5 #5 0.000 C6 #6 0.538 C7 #7 0.492 C8 #8 0.357 C9 #9 0.357 C10 #10 0.357 C11 #11 0.357 N1 #12 -0.900 N2 #13 -0.557 N3 #14 -0.557 N4 #15 -0.557 N5 #16 -0.557 N6 #17 -0.557 H1 #18 0.400 H2 #19 0.400 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 N1 #12 0.000 N2 #13 0.000 N3 #14 0.000 N4 #15 0.000 N5 #16 0.000 N6 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 +model FIKZOO10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 11 PI PAIR ON SP2-N 10 SUBRING 1 has 6 PI electrons + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 2 C8 #8 2 C9 #9 3 N1 #10 10 S1 #11 15 S2 #12 16 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 28 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 C=C C8 #8 C=C C9 #9 C=SN N1 #10 NC=S S1 #11 S S2 #12 S=C H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HNCS + # char C1 #1 0.028 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.081 C8 #8 -0.049 C9 #9 0.581 N1 #10 -0.539 S1 #11 -0.242 S2 #12 -0.380 H1 #13 0.150 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.150 H7 #19 0.370 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N1 #10 0.000 S1 #11 0.000 S2 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 +model FILGEM RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 13 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 2 C2 #2 2 C3 #3 3 C4 #4 2 C5 #5 2 C6 #6 1 C7 #7 4 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 37 N1 #13 10 N2 #14 42 N3 #15 38 O1 #16 7 H1 #17 28 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 C=ON C4 #4 C=C C5 #5 C=C C6 #6 CR C7 #7 CSP C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 CB N1 #13 NC=O N2 #14 NSP N3 #15 NPYD O1 #16 O=CN H1 #17 HNCO H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC + # char C1 #1 -0.028 C2 #2 -0.029 C3 #3 0.616 C4 #4 0.079 C5 #5 -0.150 C6 #6 0.138 C7 #7 0.492 C8 #8 0.028 C9 #9 -0.150 C10 #10 0.160 C11 #11 0.160 C12 #12 -0.150 N1 #13 -0.539 N2 #14 -0.557 N3 #15 -0.620 O1 #16 -0.570 H1 #17 0.370 H2 #18 0.150 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.150 H7 #23 0.150 H8 #24 0.150 H9 #25 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N1 #13 0.000 N2 #14 0.000 N3 #15 0.000 O1 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 +model FILNOD RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 6 7 EXOCYCLIC MULT BOND 11 10 + # ty S1 #1 17 O1 #2 7 O2 #3 6 N1 #4 8 C1 #5 1 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 1 C9 #13 1 H1 #14 21 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 + # symb S1 #1 S=O O1 #2 O=S O2 #3 -O- N1 #4 NR C1 #5 CR C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CR C9 #13 CR H1 #14 HO H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC + # char S1 #1 0.498 O1 #2 -0.500 O2 #3 -0.300 N1 #4 -0.432 C1 #5 0.413 C2 #6 -0.143 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 -0.150 C7 #11 0.064 C8 #12 0.000 C9 #13 0.000 H1 #14 0.400 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.150 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 +model FINBIN RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 12 PI PAIR ON O OR S 13 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 13 PI PAIR ON O OR S 14 SUBRING 2 has 4 PI electrons + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 CL4 #4 12 CL5 #5 12 CL6 #6 12 CL7 #7 12 CL8 #8 12 CL9 #9 12 P1 #10 26 P2 #11 26 O1 #12 6 O2 #13 6 O3 #14 6 C1 #15 1 C2 #16 1 C3 #17 1 C4 #18 1 C5 #19 1 C6 #20 1 H1 #21 5 H2 #22 5 H3 #23 5 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL CL4 #4 CL CL5 #5 CL CL6 #6 CL CL7 #7 CL CL8 #8 CL CL9 #9 CL P1 #10 P P2 #11 P O1 #12 OPO2 O2 #13 OPO2 O3 #14 OPO2 C1 #15 CR C2 #16 CR C3 #17 CR C4 #18 CR C5 #19 CR C6 #20 CR H1 #21 HC H2 #22 HC H3 #23 HC + # char CL1 #1 -0.290 CL2 #2 -0.290 CL3 #3 -0.290 CL4 #4 -0.290 CL5 #5 -0.290 CL6 #6 -0.290 CL7 #7 -0.290 CL8 #8 -0.290 CL9 #9 -0.290 P1 #10 0.303 P2 #11 -0.501 O1 #12 -0.381 O2 #13 -0.381 O3 #14 -0.381 C1 #15 0.447 C2 #16 0.447 C3 #17 0.447 C4 #18 0.870 C5 #19 0.870 C6 #20 0.870 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 CL4 #4 0.000 CL5 #5 0.000 CL6 #6 0.000 CL7 #7 0.000 CL8 #8 0.000 CL9 #9 0.000 P1 #10 0.000 P2 #11 0.000 O1 #12 0.000 O2 #13 0.000 O3 #14 0.000 C1 #15 0.000 C2 #16 0.000 C3 #17 0.000 C4 #18 0.000 C5 #19 0.000 C6 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 +model FINPEX RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty O1 #1 6 O2 #2 7 O3 #3 6 N1 #4 34 C1 #5 20 C2 #6 20 C3 #7 20 C4 #8 20 C5 #9 3 C6 #10 1 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 21 H9 #19 36 H10 #20 36 H11 #21 36 H12 #22 24 + # symb O1 #1 OC=O O2 #2 O=CO O3 #3 OR N1 #4 NR+ C1 #5 CR4R C2 #6 CR4R C3 #7 CR4R C4 #8 CR4R C5 #9 COO C6 #10 CR H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HOR H9 #19 HNR+ H10 #20 HNR+ H11 #21 HNR+ H12 #22 HOCO + # char O1 #1 -0.650 O2 #2 -0.570 O3 #3 -0.680 N1 #4 -0.822 C1 #5 0.525 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.667 C6 #10 0.280 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.400 H9 #19 0.450 H10 #20 0.450 H11 #21 0.450 H12 #22 0.500 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 1.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 H9 #19 0.000 H10 #20 0.000 H11 #21 0.000 H12 #22 0.000 +model FITGIY RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons + # ty N1 #1 9 C1 #2 3 C2 #3 1 C3 #4 2 C4 #5 3 O1 #6 7 O2 #7 6 C5 #8 1 C6 #9 1 C7 #10 2 N2 #11 40 C8 #12 1 C9 #13 1 O3 #14 6 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 28 H10 #24 28 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 21 + # symb N1 #1 N=C C1 #2 C=N C2 #3 CR C3 #4 C=C C4 #5 COO O1 #6 O=CO O2 #7 OC=O C5 #8 CR C6 #9 CR C7 #10 C=C N2 #11 NC=C C8 #12 CR C9 #13 CR O3 #14 OR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HNCC H10 #24 HNCC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HOR + # char N1 #1 -0.696 C1 #2 0.375 C2 #3 0.061 C3 #4 0.029 C4 #5 0.706 O1 #6 -0.570 O2 #7 -0.430 C5 #8 0.280 C6 #9 0.000 C7 #10 -0.038 N2 #11 -0.900 C8 #12 0.664 C9 #13 0.000 O3 #14 -0.680 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.400 H10 #24 0.400 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.400 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 O1 #6 0.000 O2 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 N2 #11 0.000 C8 #12 0.000 C9 #13 0.000 O3 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 +model FITSEG RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty C1 #1 22 C2 #2 4 N1 #3 42 C3 #4 22 C4 #5 4 N2 #6 42 H1 #7 5 H2 #8 5 C3B #9 22 C4B #10 4 H2B #11 5 N2B #12 42 + # symb C1 #1 CR3R C2 #2 CSP N1 #3 NSP C3 #4 CR3R C4 #5 CSP N2 #6 NSP H1 #7 HC H2 #8 HC C3B #9 CR3R C4B #10 CSP H2B #11 HC N2B #12 NSP + # char C1 #1 0.005 C2 #2 0.452 N1 #3 -0.557 C3 #4 0.005 C4 #5 0.452 N2 #6 -0.557 H1 #7 0.100 H2 #8 0.100 C3B #9 0.005 C4B #10 0.452 H2B #11 0.100 N2B #12 -0.557 + # fchar C1 #1 0.000 C2 #2 0.000 N1 #3 0.000 C3 #4 0.000 C4 #5 0.000 N2 #6 0.000 H1 #7 0.000 H2 #8 0.000 C3B #9 0.000 C4B #10 0.000 H2B #11 0.000 N2B #12 0.000 +model FITTIL RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 7 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 38 C1 #2 37 N2 #3 58 C2 #4 64 C3 #5 63 C4 #6 37 N3 #7 39 C5 #8 63 N4 #9 66 N5 #10 40 C6 #11 1 H1 #12 5 H2 #13 23 H3 #14 28 H4 #15 28 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 + # symb N1 #1 NPYD C1 #2 CB N2 #3 NPD+ C2 #4 C5B C3 #5 C5A C4 #6 CB N3 #7 NPYL C5 #8 C5A N4 #9 N5B N5 #10 NC=N C6 #11 CR H1 #12 HC H2 #13 HPYL H3 #14 HNCN H4 #15 HNCN H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC + # char N1 #1 -0.620 C1 #2 0.521 N2 #3 -0.156 C2 #4 0.534 C3 #5 -0.152 C4 #6 0.410 N3 #7 0.033 C5 #8 0.037 N4 #9 -0.565 N5 #10 -0.900 C6 #11 0.488 H1 #12 0.150 H2 #13 0.270 H3 #14 0.400 H4 #15 0.400 H5 #16 0.150 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 1.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 C5 #8 0.000 N4 #9 0.000 N5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 +model FIVNUT RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons + # ty S1 #1 16 O1 #2 7 N1 #3 40 N2 #4 10 N3 #5 42 C1 #6 2 C2 #7 2 C3 #8 3 C4 #9 2 C5 #10 2 C6 #11 1 C7 #12 1 C8 #13 1 C9 #14 1 C10 #15 3 C11 #16 4 C12 #17 1 H1 #18 28 H2 #19 28 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 H15 #32 5 + # symb S1 #1 S=C O1 #2 O=CR N1 #3 NC=C N2 #4 NC=S N3 #5 NSP C1 #6 C=C C2 #7 C=C C3 #8 C=OR C4 #9 C=C C5 #10 C=C C6 #11 CR C7 #12 CR C8 #13 CR C9 #14 CR C10 #15 C=SN C11 #16 CSP C12 #17 CR H1 #18 HNCS H2 #19 HNCS H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC H15 #32 HC + # char S1 #1 -0.380 O1 #2 -0.570 N1 #3 -0.569 N2 #4 -0.800 N3 #5 -0.557 C1 #6 -0.050 C2 #7 -0.124 C3 #8 0.541 C4 #9 -0.124 C5 #10 -0.050 C6 #11 0.369 C7 #12 0.138 C8 #13 0.261 C9 #14 0.000 C10 #15 0.379 C11 #16 0.357 C12 #17 0.138 H1 #18 0.370 H2 #19 0.370 H3 #20 0.150 H4 #21 0.150 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 +model FIVRAD RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty S1 #1 44 O1 #2 7 N1 #3 65 N2 #4 10 N3 #5 10 C1 #6 64 C2 #7 64 C3 #8 63 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 3 C9 #14 1 C10 #15 1 C11 #16 1 C12 #17 1 H1 #18 28 H2 #19 28 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 H15 #32 5 + # symb S1 #1 STHI O1 #2 O=CN N1 #3 N5A N2 #4 NC=O N3 #5 NC=O C1 #6 C5B C2 #7 C5B C3 #8 C5A C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CONN C9 #14 CR C10 #15 CR C11 #16 CR C12 #17 CR H1 #18 HNCO H2 #19 HNCO H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC H15 #32 HC + # char S1 #1 0.181 O1 #2 -0.570 N1 #3 -0.510 N2 #4 -0.493 N3 #5 -0.730 C1 #6 0.352 C2 #7 0.000 C3 #8 0.040 C4 #9 -0.150 C5 #10 -0.150 C6 #11 -0.150 C7 #12 -0.150 C8 #13 0.690 C9 #14 0.300 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.370 H2 #19 0.370 H3 #20 0.150 H4 #21 0.150 H5 #22 0.150 H6 #23 0.150 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 +model FIXPIL RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 14 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 64 C8 #8 63 C9 #9 3 C10 #10 1 C11 #11 1 N1 #12 81 N2 #13 65 O1 #14 59 O2 #15 35 O3 #16 7 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 C5B C8 #8 C5A C9 #9 C=OR C10 #10 CR C11 #11 CR N1 #12 N5B+ N2 #13 N5A O1 #14 OFUR O2 #15 OM2 O3 #16 O=CR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC + # char C1 #1 0.387 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.143 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.247 C8 #8 -0.084 C9 #9 0.595 C10 #10 0.143 C11 #11 0.061 N1 #12 0.241 N2 #13 -0.082 O1 #14 -0.019 O2 #15 -0.776 O3 #16 -0.570 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 N1 #12 1.000 N2 #13 0.000 O1 #14 0.000 O2 #15 -1.000 O3 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model FIYBIY RING 1 HAS 1 SUBRINGS PI PAIR ON DICOORD N 5 PI PAIR ON O OR S 4 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 7 O3 #4 6 N1 #5 48 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 3 C8 #13 1 C9 #14 1 C10 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 + # symb S1 #1 SNO O1 #2 O-S O2 #3 O=CN O3 #4 OC=O N1 #5 NSO C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 C=ON C8 #13 CR C9 #14 CR C10 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC + # char S1 #1 1.143 O1 #2 -0.650 O2 #3 -0.570 O3 #4 -0.430 N1 #5 -1.020 C1 #6 -0.009 C2 #7 -0.150 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 -0.150 C7 #12 1.150 C8 #13 0.280 C9 #14 0.105 C10 #15 0.000 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.150 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 +model FIZGEA RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 17 C1 #2 2 C2 #3 2 C3 #4 2 C4 #5 2 CL1 #6 12 CL2 #7 12 CL3 #8 12 CL4 #9 12 N1 #10 43 S2 #11 18 O1 #12 32 O2 #13 32 C5 #14 37 C6 #15 37 C7 #16 37 C8 #17 37 C9 #18 37 C10 #19 37 C11 #20 1 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 H7 #27 5 + # symb S1 #1 >S=N C1 #2 C=C C2 #3 C=C C3 #4 C=C C4 #5 C=C CL1 #6 CL CL2 #7 CL CL3 #8 CL CL4 #9 CL N1 #10 NSO2 S2 #11 SO2N O1 #12 O2S O2 #13 O2S C5 #14 CB C6 #15 CB C7 #16 CB C8 #17 CB C9 #18 CB C10 #19 CB C11 #20 CR H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC H7 #27 HC + # char S1 #1 0.023 C1 #2 0.196 C2 #3 0.140 C3 #4 0.140 C4 #5 0.196 CL1 #6 -0.140 CL2 #7 -0.140 CL3 #8 -0.140 CL4 #9 -0.140 N1 #10 -0.273 S2 #11 1.447 O1 #12 -0.650 O2 #13 -0.650 C5 #14 -0.009 C6 #15 -0.150 C7 #16 -0.150 C8 #17 -0.143 C9 #18 -0.150 C10 #19 -0.150 C11 #20 0.143 H1 #21 0.150 H2 #22 0.150 H3 #23 0.150 H4 #24 0.150 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 CL1 #6 0.000 CL2 #7 0.000 CL3 #8 0.000 CL4 #9 0.000 N1 #10 0.000 S2 #11 0.000 O1 #12 0.000 O2 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 C8 #17 0.000 C9 #18 0.000 C10 #19 0.000 C11 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 +model FIZGOK RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons + # ty S1 #1 18 C1 #2 2 C2 #3 2 C3 #4 2 C4 #5 2 CL1 #6 12 CL2 #7 12 CL3 #8 12 CL4 #9 12 N1 #10 48 C5 #11 3 O1 #12 7 O2 #13 6 C6 #14 1 C7 #15 1 O3 #16 32 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 + # symb S1 #1 SNO C1 #2 C=C C2 #3 C=C C3 #4 C=C C4 #5 C=C CL1 #6 CL CL2 #7 CL CL3 #8 CL CL4 #9 CL N1 #10 NSO C5 #11 C=ON O1 #12 O=CN O2 #13 OC=O C6 #14 CR C7 #15 CR O3 #16 O-S H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC + # char S1 #1 1.274 C1 #2 0.123 C2 #3 0.140 C3 #4 0.140 C4 #5 0.123 CL1 #6 -0.140 CL2 #7 -0.140 CL3 #8 -0.140 CL4 #9 -0.140 N1 #10 -1.020 C5 #11 1.150 O1 #12 -0.570 O2 #13 -0.430 C6 #14 0.280 C7 #15 0.000 O3 #16 -0.650 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 CL1 #6 0.000 CL2 #7 0.000 CL3 #8 0.000 CL4 #9 0.000 N1 #10 0.000 C5 #11 0.000 O1 #12 0.000 O2 #13 0.000 C6 #14 0.000 C7 #15 0.000 O3 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 +model FIZJED RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 38 N2 #2 38 C1 #3 37 O1 #4 6 C2 #5 1 H1 #6 5 H2 #7 5 H3 #8 5 C1D #9 37 N2D #10 38 N1D #11 38 O1D #12 6 C2D #13 1 H1D #14 5 H2D #15 5 H3D #16 5 + # symb N1 #1 NPYD N2 #2 NPYD C1 #3 CB O1 #4 OC=N C2 #5 CR H1 #6 HC H2 #7 HC H3 #8 HC C1D #9 CB N2D #10 NPYD N1D #11 NPYD O1D #12 OC=N C2D #13 CR H1D #14 HC H2D #15 HC H3D #16 HC + # char N1 #1 -0.310 N2 #2 -0.310 C1 #3 0.703 O1 #4 -0.363 C2 #5 0.280 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 C1D #9 0.703 N2D #10 -0.310 N1D #11 -0.310 O1D #12 -0.363 C2D #13 0.280 H1D #14 0.000 H2D #15 0.000 H3D #16 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 O1 #4 0.000 C2 #5 0.000 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 C1D #9 0.000 N2D #10 0.000 N1D #11 0.000 O1D #12 0.000 C2D #13 0.000 H1D #14 0.000 H2D #15 0.000 H3D #16 0.000 +model FOBJUB01 RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 32 O2 #2 32 N1 #3 34 C1 #4 41 C2 #5 22 C3 #6 22 C4 #7 22 H1 #8 36 H2 #9 36 H3 #10 36 H4 #11 5 H5 #12 5 H6 #13 5 H7 #14 5 + # symb O1 #1 O2CM O2 #2 O2CM N1 #3 NR+ C1 #4 CO2M C2 #5 CR3R C3 #6 CR3R C4 #7 CR3R H1 #8 HNR+ H2 #9 HNR+ H3 #10 HNR+ H4 #11 HC H5 #12 HC H6 #13 HC H7 #14 HC + # char O1 #1 -0.900 O2 #2 -0.900 N1 #3 -0.746 C1 #4 0.947 C2 #5 0.249 C3 #6 -0.200 C4 #7 -0.200 H1 #8 0.450 H2 #9 0.450 H3 #10 0.450 H4 #11 0.100 H5 #12 0.100 H6 #13 0.100 H7 #14 0.100 + # fchar O1 #1 -0.500 O2 #2 -0.500 N1 #3 1.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 +model FODTUN RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 4 SUBRING 1 has 2 PI electrons + # ty C1 #1 1 C2 #2 3 O1 #3 7 N1 #4 10 C3 #5 20 C4 #6 20 C5 #7 20 C6 #8 20 C7 #9 1 C8 #10 3 O2 #11 7 N2 #12 10 C9 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 28 H12 #25 5 H13 #26 5 H14 #27 5 + # symb C1 #1 CR C2 #2 C=ON O1 #3 O=CN N1 #4 NC=O C3 #5 CR4R C4 #6 CR4R C5 #7 CR4R C6 #8 CR4R C7 #9 CR C8 #10 C=ON O2 #11 O=CN N2 #12 NC=O C9 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HNCO H12 #25 HC H13 #26 HC H14 #27 HC + # char C1 #1 0.061 C2 #2 0.569 O1 #3 -0.570 N1 #4 -0.585 C3 #5 0.278 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.300 C8 #10 0.577 O2 #11 -0.570 N2 #12 -0.730 C9 #13 0.300 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.370 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 O1 #3 0.000 N1 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 O2 #11 0.000 N2 #12 0.000 C9 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 +model FOGBIM RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 4 PI electrons SUBRING 2 has 2 PI electrons + # ty SI1 #1 19 O1 #2 6 N1 #3 54 C1 #4 1 C2 #5 1 C3 #6 1 C4 #7 1 C5 #8 1 C6 #9 1 C7 #10 1 C8 #11 3 H11 #12 5 H12 #13 5 H13 #14 5 H21 #15 5 H22 #16 5 H23 #17 5 H31 #18 5 H32 #19 5 H41 #20 5 H42 #21 5 H51 #22 5 H52 #23 5 H61 #24 5 H62 #25 5 H71 #26 5 H72 #27 5 + # symb SI1 #1 SI O1 #2 OC=N N1 #3 N+=C C1 #4 CR C2 #5 CR C3 #6 CR C4 #7 CR C5 #8 CR C6 #9 CR C7 #10 CR C8 #11 C=N H11 #12 HC H12 #13 HC H13 #14 HC H21 #15 HC H22 #16 HC H23 #17 HC H31 #18 HC H32 #19 HC H41 #20 HC H42 #21 HC H51 #22 HC H52 #23 HC H61 #24 HC H62 #25 HC H71 #26 HC H72 #27 HC + # char SI1 #1 0.539 O1 #2 -0.447 N1 #3 -0.092 C1 #4 -0.081 C2 #5 -0.081 C3 #6 0.266 C4 #7 0.346 C5 #8 0.000 C6 #9 0.000 C7 #10 0.061 C8 #11 0.489 H11 #12 0.000 H12 #13 0.000 H13 #14 0.000 H21 #15 0.000 H22 #16 0.000 H23 #17 0.000 H31 #18 0.000 H32 #19 0.000 H41 #20 0.000 H42 #21 0.000 H51 #22 0.000 H52 #23 0.000 H61 #24 0.000 H62 #25 0.000 H71 #26 0.000 H72 #27 0.000 + # fchar SI1 #1 0.000 O1 #2 0.000 N1 #3 1.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H11 #12 0.000 H12 #13 0.000 H13 #14 0.000 H21 #15 0.000 H22 #16 0.000 H23 #17 0.000 H31 #18 0.000 H32 #19 0.000 H41 #20 0.000 H42 #21 0.000 H51 #22 0.000 H52 #23 0.000 H61 #24 0.000 H62 #25 0.000 H71 #26 0.000 H72 #27 0.000 +model FOGVIG01 RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 9 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 40 N2 #2 40 C1 #3 3 N3 #4 9 C2 #5 63 N4 #6 66 C3 #7 64 C4 #8 63 S1 #9 44 C5 #10 1 S2 #11 15 C6 #12 1 C7 #13 1 C8 #14 3 N5 #15 9 S3 #16 18 O1 #17 32 O2 #18 32 N6 #19 43 N7 #20 40 H1 #21 28 H2 #22 28 H3 #23 28 H4 #24 28 H5 #25 5 H6 #26 5 H7 #27 5 H8 #28 5 H9 #29 5 H10 #30 5 H11 #31 5 H12 #32 28 H13 #33 28 H14 #34 28 H15 #35 28 + # symb N1 #1 NC=N N2 #2 NC=N C1 #3 CGD N3 #4 N=C C2 #5 C5A N4 #6 N5B C3 #7 C5B C4 #8 C5A S1 #9 STHI C5 #10 CR S2 #11 S C6 #12 CR C7 #13 CR C8 #14 C=N N5 #15 N=C S3 #16 SO2N O1 #17 O2S O2 #18 O2S N6 #19 NSO2 N7 #20 NC=N H1 #21 HNCN H2 #22 HNCN H3 #23 HNCN H4 #24 HNCN H5 #25 HC H6 #26 HC H7 #27 HC H8 #28 HC H9 #29 HC H10 #30 HC H11 #31 HC H12 #32 HNSO H13 #33 HNSO H14 #34 HNCN H15 #35 HNCN + # char N1 #1 -0.850 N2 #2 -0.850 C1 #3 0.550 N3 #4 -0.576 C2 #5 0.504 N4 #6 -0.565 C3 #7 0.046 C4 #8 -0.110 S1 #9 -0.080 C5 #10 0.411 S2 #11 -0.460 C6 #12 0.230 C7 #13 0.061 C8 #14 0.439 N5 #15 -0.638 S3 #16 1.626 O1 #17 -0.650 O2 #18 -0.650 N6 #19 -0.978 N7 #20 -0.850 H1 #21 0.400 H2 #22 0.400 H3 #23 0.400 H4 #24 0.400 H5 #25 0.150 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.420 H13 #33 0.420 H14 #34 0.400 H15 #35 0.400 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 N3 #4 0.000 C2 #5 0.000 N4 #6 0.000 C3 #7 0.000 C4 #8 0.000 S1 #9 0.000 C5 #10 0.000 S2 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 N5 #15 0.000 S3 #16 0.000 O1 #17 0.000 O2 #18 0.000 N6 #19 0.000 N7 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 +model FOHXEF RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 9 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 9 SUBRING 2 has 6 PI electrons + # ty S1 #1 16 S2 #2 15 N8 #3 40 C81 #4 3 N1 #5 9 C2 #6 3 N3 #7 9 C4 #8 3 N5 #9 10 C6 #10 1 C7 #11 1 C9 #12 1 C10 #13 1 C11 #14 1 H8 #15 28 H61 #16 5 H62 #17 5 H71 #18 5 H72 #19 5 H91 #20 5 H92 #21 5 H101 #22 5 H102 #23 5 H111 #24 5 H112 #25 5 H113 #26 5 + # symb S1 #1 S=C S2 #2 S N8 #3 NC=N C81 #4 CGD N1 #5 N=C C2 #6 C=N N3 #7 N=C C4 #8 C=SN N5 #9 NC=S C6 #10 CR C7 #11 CR C9 #12 CR C10 #13 CR C11 #14 CR H8 #15 HNCN H61 #16 HC H62 #17 HC H71 #18 HC H72 #19 HC H91 #20 HC H92 #21 HC H101 #22 HC H102 #23 HC H111 #24 HC H112 #25 HC H113 #26 HC + # char S1 #1 -0.380 S2 #2 -0.371 N8 #3 -0.819 C81 #4 0.560 N1 #5 -0.661 C2 #6 0.802 N3 #7 -0.661 C4 #8 0.651 N5 #9 -0.420 C6 #10 0.300 C7 #11 0.369 C9 #12 0.230 C10 #13 0.000 C11 #14 0.000 H8 #15 0.400 H61 #16 0.000 H62 #17 0.000 H71 #18 0.000 H72 #19 0.000 H91 #20 0.000 H92 #21 0.000 H101 #22 0.000 H102 #23 0.000 H111 #24 0.000 H112 #25 0.000 H113 #26 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 N8 #3 0.000 C81 #4 0.000 N1 #5 0.000 C2 #6 0.000 N3 #7 0.000 C4 #8 0.000 N5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 H8 #15 0.000 H61 #16 0.000 H62 #17 0.000 H71 #18 0.000 H72 #19 0.000 H91 #20 0.000 H92 #21 0.000 H101 #22 0.000 H102 #23 0.000 H111 #24 0.000 H112 #25 0.000 H113 #26 0.000 +model FOHYAC RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 CL1 #2 12 O1 #3 32 O2 #4 32 C1 #5 37 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 1 H2 #12 5 H3 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 H8 #17 5 H9 #18 5 + # symb S1 #1 SO2 CL1 #2 CL O1 #3 O2S O2 #4 O2S C1 #5 CB C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CR H2 #12 HC H3 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC H8 #17 HC H9 #18 HC + # char S1 #1 1.495 CL1 #2 -0.186 O1 #3 -0.650 O2 #4 -0.650 C1 #5 -0.009 C2 #6 -0.150 C3 #7 -0.150 C4 #8 -0.143 C5 #9 -0.150 C6 #10 -0.150 C7 #11 0.143 H2 #12 0.150 H3 #13 0.150 H5 #14 0.150 H6 #15 0.150 H7 #16 0.000 H8 #17 0.000 H9 #18 0.000 + # fchar S1 #1 0.000 CL1 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 H2 #12 0.000 H3 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 H9 #18 0.000 +model FOJBEL RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 2 PI electrons + # ty S3 #1 17 O1 #2 6 O11 #3 7 C2 #4 1 C4 #5 1 C5 #6 1 C6 #7 1 C7 #8 1 C8 #9 1 C9 #10 1 C10 #11 1 H101 #12 5 H102 #13 5 H103 #14 5 H81 #15 5 H82 #16 5 H61 #17 5 H62 #18 5 H31 #19 5 H71 #20 5 H91 #21 5 H92 #22 5 H51 #23 5 H52 #24 5 H111 #25 5 H112 #26 5 H113 #27 5 + # symb S3 #1 S=O O1 #2 OR O11 #3 O=S C2 #4 CR C4 #5 CR C5 #6 CR C6 #7 CR C7 #8 CR C8 #9 CR C9 #10 CR C10 #11 CR H101 #12 HC H102 #13 HC H103 #14 HC H81 #15 HC H82 #16 HC H61 #17 HC H62 #18 HC H31 #19 HC H71 #20 HC H91 #21 HC H92 #22 HC H51 #23 HC H52 #24 HC H111 #25 HC H112 #26 HC H113 #27 HC + # char S3 #1 0.113 O1 #2 -0.560 O11 #3 -0.500 C2 #4 0.474 C4 #5 0.194 C5 #6 0.000 C6 #7 0.280 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 H101 #12 0.000 H102 #13 0.000 H103 #14 0.000 H81 #15 0.000 H82 #16 0.000 H61 #17 0.000 H62 #18 0.000 H31 #19 0.000 H71 #20 0.000 H91 #21 0.000 H92 #22 0.000 H51 #23 0.000 H52 #24 0.000 H111 #25 0.000 H112 #26 0.000 H113 #27 0.000 + # fchar S3 #1 0.000 O1 #2 0.000 O11 #3 0.000 C2 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 H101 #12 0.000 H102 #13 0.000 H103 #14 0.000 H81 #15 0.000 H82 #16 0.000 H61 #17 0.000 H62 #18 0.000 H31 #19 0.000 H71 #20 0.000 H91 #21 0.000 H92 #22 0.000 H51 #23 0.000 H52 #24 0.000 H111 #25 0.000 H112 #26 0.000 H113 #27 0.000 +model FOJPAV RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 5 PI PAIR ON O OR S 8 SUBRING 2 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 C2 #2 1 C3 #3 3 O3 #4 7 N4 #5 10 C5 #6 3 O5 #7 7 S6 #8 15 C7 #9 2 C71 #10 2 C8 #11 37 C9 #12 37 C10 #13 37 C11 #14 37 C12 #15 37 C13 #16 37 C14 #17 1 H21 #18 5 H11 #19 5 H9 #20 5 H10 #21 5 H12 #22 5 H13 #23 5 H141 #24 5 H142 #25 5 H143 #26 5 + # symb S1 #1 S C2 #2 CR C3 #3 C=ON O3 #4 O=CN N4 #5 NC=O C5 #6 C=ON O5 #7 O=CN S6 #8 S C7 #9 C=C C71 #10 C=C C8 #11 CB C9 #12 CB C10 #13 CB C11 #14 CB C12 #15 CB C13 #16 CB C14 #17 CR H21 #18 HC H11 #19 HC H9 #20 HC H10 #21 HC H12 #22 HC H13 #23 HC H141 #24 HC H142 #25 HC H143 #26 HC + # char S1 #1 -0.331 C2 #2 0.291 C3 #3 0.569 O3 #4 -0.570 N4 #5 -0.229 C5 #6 0.771 O5 #7 -0.570 S6 #8 -0.242 C7 #9 0.073 C71 #10 0.210 C8 #11 0.028 C9 #12 -0.150 C10 #13 -0.150 C11 #14 -0.143 C12 #15 -0.150 C13 #16 -0.150 C14 #17 0.143 H21 #18 0.000 H11 #19 0.000 H9 #20 0.150 H10 #21 0.150 H12 #22 0.150 H13 #23 0.150 H141 #24 0.000 H142 #25 0.000 H143 #26 0.000 + # fchar S1 #1 0.000 C2 #2 0.000 C3 #3 0.000 O3 #4 0.000 N4 #5 0.000 C5 #6 0.000 O5 #7 0.000 S6 #8 0.000 C7 #9 0.000 C71 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 C13 #16 0.000 C14 #17 0.000 H21 #18 0.000 H11 #19 0.000 H9 #20 0.000 H10 #21 0.000 H12 #22 0.000 H13 #23 0.000 H141 #24 0.000 H142 #25 0.000 H143 #26 0.000 +model FONCOA RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 11 PI PAIR ON SP2-N 7 SUBRING 1 has 4 PI electrons + # ty C1 #1 1 C2 #2 1 C3 #3 3 C4 #4 1 O1 #5 7 C5 #6 3 N1 #7 10 C6 #8 1 C7 #9 20 O2 #10 7 N2 #11 10 C8 #12 20 C9 #13 20 C10 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 28 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 5 H15 #29 5 H16 #30 5 + # symb C1 #1 CR C2 #2 CR C3 #3 C=ON C4 #4 CR O1 #5 O=CN C5 #6 C=ON N1 #7 NC=O C6 #8 CR C7 #9 CR4R O2 #10 O=CN N2 #11 NC=O C8 #12 CR4R C9 #13 CR4R C10 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HNCO H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HC H15 #29 HC H16 #30 HC + # char C1 #1 0.000 C2 #2 0.000 C3 #3 0.569 C4 #4 0.361 O1 #5 -0.570 C5 #6 0.577 N1 #7 -0.510 C6 #8 0.000 C7 #9 0.278 O2 #10 -0.570 N2 #11 -0.730 C8 #12 0.000 C9 #13 0.225 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.370 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 H16 #30 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 O1 #5 0.000 C5 #6 0.000 N1 #7 0.000 C6 #8 0.000 C7 #9 0.000 O2 #10 0.000 N2 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 H16 #30 0.000 +model FORGOI RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty I1 #1 14 O1 #2 7 O2 #3 6 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 3 C8 #11 1 H2 #12 5 H3 #13 5 H5 #14 5 H6 #15 5 H81 #16 5 H82 #17 5 H83 #18 5 + # symb I1 #1 I O1 #2 O=CO O2 #3 OC=O C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 COO C8 #11 CR H2 #12 HC H3 #13 HC H5 #14 HC H6 #15 HC H81 #16 HC H82 #17 HC H83 #18 HC + # char I1 #1 -0.081 O1 #2 -0.570 O2 #3 -0.430 C1 #4 0.086 C2 #5 -0.150 C3 #6 -0.150 C4 #7 0.081 C5 #8 -0.150 C6 #9 -0.150 C7 #10 0.634 C8 #11 0.280 H2 #12 0.150 H3 #13 0.150 H5 #14 0.150 H6 #15 0.150 H81 #16 0.000 H82 #17 0.000 H83 #18 0.000 + # fchar I1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H2 #12 0.000 H3 #13 0.000 H5 #14 0.000 H6 #15 0.000 H81 #16 0.000 H82 #17 0.000 H83 #18 0.000 +model FORHEZ + # ty C1 #1 1 C2 #2 2 C3 #3 2 C4 #4 1 C5 #5 4 N1 #6 42 N2 #7 45 O1 #8 32 O2 #9 32 S1 #10 15 H11 #11 5 H12 #12 5 H13 #13 5 H41 #14 5 H42 #15 5 H43 #16 5 + # symb C1 #1 CR C2 #2 C=C C3 #3 C=C C4 #4 CR C5 #5 CSP N1 #6 NSP N2 #7 NO2 O1 #8 O2N O2 #9 O2N S1 #10 S H11 #11 HC H12 #12 HC H13 #13 HC H41 #14 HC H42 #15 HC H43 #16 HC + # char C1 #1 0.138 C2 #2 -0.037 C3 #3 0.066 C4 #4 0.138 C5 #5 0.593 N1 #6 -0.557 N2 #7 0.836 O1 #8 -0.520 O2 #9 -0.520 S1 #10 -0.137 H11 #11 0.000 H12 #12 0.000 H13 #13 0.000 H41 #14 0.000 H42 #15 0.000 H43 #16 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 N1 #6 0.000 N2 #7 0.000 O1 #8 0.000 O2 #9 0.000 S1 #10 0.000 H11 #11 0.000 H12 #12 0.000 H13 #13 0.000 H41 #14 0.000 H42 #15 0.000 H43 #16 0.000 +model FORJIF RING 1 HAS 5 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 5 IS A 4-MEMBERED RING SUBRING 1 has 0 PI electrons SUBRING 3 has 0 PI electrons SUBRING 4 has 0 PI electrons + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 CL4 #4 12 CL5 #5 12 C1 #6 20 C2 #7 20 C3 #8 20 C4 #9 20 C5 #10 1 H1 #11 5 C3A #12 20 C2A #13 20 C5A #14 1 C4A #15 20 CL2A #16 12 C1A #17 20 H1A #18 5 CL4A #19 12 CL5A #20 12 CL3A #21 12 CL1A #22 12 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL CL4 #4 CL CL5 #5 CL C1 #6 CR4R C2 #7 CR4R C3 #8 CR4R C4 #9 CR4R C5 #10 CR H1 #11 HC C3A #12 CR4R C2A #13 CR4R C5A #14 CR C4A #15 CR4R CL2A #16 CL C1A #17 CR4R H1A #18 HC CL4A #19 CL CL5A #20 CL CL3A #21 CL CL1A #22 CL + # char CL1 #1 -0.290 CL2 #2 -0.290 CL3 #3 -0.290 CL4 #4 -0.290 CL5 #5 -0.290 C1 #6 0.290 C2 #7 0.000 C3 #8 0.290 C4 #9 0.290 C5 #10 0.580 H1 #11 0.000 C3A #12 0.290 C2A #13 0.000 C5A #14 0.580 C4A #15 0.290 CL2A #16 -0.290 C1A #17 0.290 H1A #18 0.000 CL4A #19 -0.290 CL5A #20 -0.290 CL3A #21 -0.290 CL1A #22 -0.290 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 CL4 #4 0.000 CL5 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 H1 #11 0.000 C3A #12 0.000 C2A #13 0.000 C5A #14 0.000 C4A #15 0.000 CL2A #16 0.000 C1A #17 0.000 H1A #18 0.000 CL4A #19 0.000 CL5A #20 0.000 CL3A #21 0.000 CL1A #22 0.000 +model FORJUR RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 N1 #2 39 N2 #3 65 C3 #4 64 N4 #5 66 C5 #6 63 N6 #7 40 C7 #8 37 C8 #9 37 C9 #10 37 C10 #11 37 C11 #12 37 C12 #13 37 C13 #14 1 C14 #15 1 C15 #16 1 H9 #17 5 H10 #18 5 H11 #19 5 H131 #20 5 H132 #21 5 H133 #22 5 H141 #23 5 H142 #24 5 H143 #25 5 H151 #26 5 H152 #27 5 H153 #28 5 H61 #29 28 H62 #30 28 + # symb S1 #1 S N1 #2 NPYL N2 #3 N5A C3 #4 C5B N4 #5 N5B C5 #6 C5A N6 #7 NC=N C7 #8 CB C8 #9 CB C9 #10 CB C10 #11 CB C11 #12 CB C12 #13 CB C13 #14 CR C14 #15 CR C15 #16 CR H9 #17 HC H10 #18 HC H11 #19 HC H131 #20 HC H132 #21 HC H133 #22 HC H141 #23 HC H142 #24 HC H143 #25 HC H151 #26 HC H152 #27 HC H153 #28 HC H61 #29 HNCN H62 #30 HNCN + # char S1 #1 -0.285 N1 #2 0.593 N2 #3 -0.707 C3 #4 0.571 N4 #5 -0.565 C5 #6 0.271 N6 #7 -0.884 C7 #8 -0.023 C8 #9 -0.143 C9 #10 -0.150 C10 #11 -0.150 C11 #12 -0.150 C12 #13 -0.143 C13 #14 0.143 C14 #15 0.143 C15 #16 0.230 H9 #17 0.150 H10 #18 0.150 H11 #19 0.150 H131 #20 0.000 H132 #21 0.000 H133 #22 0.000 H141 #23 0.000 H142 #24 0.000 H143 #25 0.000 H151 #26 0.000 H152 #27 0.000 H153 #28 0.000 H61 #29 0.400 H62 #30 0.400 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C3 #4 0.000 N4 #5 0.000 C5 #6 0.000 N6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 C11 #12 0.000 C12 #13 0.000 C13 #14 0.000 C14 #15 0.000 C15 #16 0.000 H9 #17 0.000 H10 #18 0.000 H11 #19 0.000 H131 #20 0.000 H132 #21 0.000 H133 #22 0.000 H141 #23 0.000 H142 #24 0.000 H143 #25 0.000 H151 #26 0.000 H152 #27 0.000 H153 #28 0.000 H61 #29 0.000 H62 #30 0.000 +model FORTAH + # ty S1 #1 72 S2 #2 72 C2 #3 41 C1 #4 1 N1 #5 8 C3 #6 1 C4 #7 1 N2 #8 8 C5 #9 1 C6 #10 1 H31 #11 5 H32 #12 5 H33 #13 5 H41 #14 5 H42 #15 5 H43 #16 5 H51 #17 5 H52 #18 5 H53 #19 5 H61 #20 5 H62 #21 5 H63 #22 5 H2 #23 5 + # symb S1 #1 S2CM S2 #2 S2CM C2 #3 CS2M C1 #4 CR N1 #5 NR C3 #6 CR C4 #7 CR N2 #8 NR C5 #9 CR C6 #10 CR H31 #11 HC H32 #12 HC H33 #13 HC H41 #14 HC H42 #15 HC H43 #16 HC H51 #17 HC H52 #18 HC H53 #19 HC H61 #20 HC H62 #21 HC H63 #22 HC H2 #23 HC + # char S1 #1 -0.750 S2 #2 -0.750 C2 #3 0.606 C1 #4 0.434 N1 #5 -0.810 C3 #6 0.270 C4 #7 0.270 N2 #8 -0.810 C5 #9 0.270 C6 #10 0.270 H31 #11 0.000 H32 #12 0.000 H33 #13 0.000 H41 #14 0.000 H42 #15 0.000 H43 #16 0.000 H51 #17 0.000 H52 #18 0.000 H53 #19 0.000 H61 #20 0.000 H62 #21 0.000 H63 #22 0.000 H2 #23 0.000 + # fchar S1 #1 -0.500 S2 #2 -0.500 C2 #3 0.000 C1 #4 0.000 N1 #5 0.000 C3 #6 0.000 C4 #7 0.000 N2 #8 0.000 C5 #9 0.000 C6 #10 0.000 H31 #11 0.000 H32 #12 0.000 H33 #13 0.000 H41 #14 0.000 H42 #15 0.000 H43 #16 0.000 H51 #17 0.000 H52 #18 0.000 H53 #19 0.000 H61 #20 0.000 H62 #21 0.000 H63 #22 0.000 H2 #23 0.000 +model FOSDIA RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 3 HAS 1 SUBRINGS PI PAIR ON SP2-N 8 SUBRING 1 has 4 PI electrons + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 S1 #4 72 P1 #5 25 N1 #6 8 N2 #7 8 N3 #8 40 N4 #9 9 C1 #10 22 C2 #11 22 C3 #12 22 C4 #13 22 C5 #14 3 C6 #15 1 C7 #16 1 C8 #17 1 H11 #18 5 H12 #19 5 H21 #20 5 H22 #21 5 H31 #22 5 H32 #23 5 H41 #24 5 H42 #25 5 H61 #26 5 H62 #27 5 H71 #28 5 H72 #29 5 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL S1 #4 S-P P1 #5 PTET N1 #6 NR N2 #7 NR N3 #8 NC=N N4 #9 N=C C1 #10 CR3R C2 #11 CR3R C3 #12 CR3R C4 #13 CR3R C5 #14 C=N C6 #15 CR C7 #16 CR C8 #17 CR H11 #18 HC H12 #19 HC H21 #20 HC H22 #21 HC H31 #22 HC H32 #23 HC H41 #24 HC H42 #25 HC H61 #26 HC H62 #27 HC H71 #28 HC H72 #29 HC + # char CL1 #1 -0.290 CL2 #2 -0.290 CL3 #3 -0.290 S1 #4 -0.677 P1 #5 1.489 N1 #6 -0.584 N2 #7 -0.584 N3 #8 -0.695 N4 #9 -0.696 C1 #10 -0.042 C2 #11 -0.042 C3 #12 -0.042 C4 #13 -0.042 C5 #14 0.439 C6 #15 0.246 C7 #16 0.369 C8 #17 0.931 H11 #18 0.100 H12 #19 0.100 H21 #20 0.100 H22 #21 0.100 H31 #22 0.100 H32 #23 0.100 H41 #24 0.100 H42 #25 0.100 H61 #26 0.000 H62 #27 0.000 H71 #28 0.000 H72 #29 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 S1 #4 0.000 P1 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 N4 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 C8 #17 0.000 H11 #18 0.000 H12 #19 0.000 H21 #20 0.000 H22 #21 0.000 H31 #22 0.000 H32 #23 0.000 H41 #24 0.000 H42 #25 0.000 H61 #26 0.000 H62 #27 0.000 H71 #28 0.000 H72 #29 0.000 +model FOVHUT RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 11 SUBRING 1 has 6 PI electrons + # ty N11 #1 9 C21 #2 3 N21 #3 40 H121 #4 28 H221 #5 28 N31 #6 9 C41 #7 1 N41 #8 8 H414 #9 23 H241 #10 23 N51 #11 40 C61 #12 3 C11_ #13 1 H1 #14 5 H2 #15 28 H3 #16 5 H4 #17 5 H5 #18 5 + # symb N11 #1 N=C C21 #2 C=N N21 #3 NC=N H121 #4 HNCN H221 #5 HNCN N31 #6 N=C C41 #7 CR N41 #8 NR H414 #9 HNR H241 #10 HNR N51 #11 NC=N C61 #12 C=N C11_ #13 CR H1 #14 HC H2 #15 HNCN H3 #16 HC H4 #17 HC H5 #18 HC + # char N11 #1 -0.661 C21 #2 0.711 N21 #3 -0.850 H121 #4 0.400 H221 #5 0.400 N31 #6 -0.696 C41 #7 0.885 N41 #8 -0.990 H414 #9 0.360 H241 #10 0.360 N51 #11 -0.819 C61 #12 0.439 C11_ #13 0.061 H1 #14 0.000 H2 #15 0.400 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 + # fchar N11 #1 0.000 C21 #2 0.000 N21 #3 0.000 H121 #4 0.000 H221 #5 0.000 N31 #6 0.000 C41 #7 0.000 N41 #8 0.000 H414 #9 0.000 H241 #10 0.000 N51 #11 0.000 C61 #12 0.000 C11_ #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 +model FOVJIJ RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 2 PI electrons + # ty O1 #1 7 O2 #2 6 O3 #3 7 C1 #4 22 C2 #5 3 C3 #6 2 C4 #7 2 C5 #8 22 C6 #9 1 C7 #10 22 C8 #11 1 C9 #12 3 C10 #13 1 H1 #14 5 H4 #15 5 H5 #16 5 H61 #17 5 H62 #18 5 H63 #19 5 H81 #20 5 H82 #21 5 H83 #22 5 H101 #23 5 H102 #24 5 H103 #25 5 + # symb O1 #1 O=CR O2 #2 OC=O O3 #3 O=CO C1 #4 CR3R C2 #5 C=OR C3 #6 C=C C4 #7 C=C C5 #8 CR3R C6 #9 CR C7 #10 CR3R C8 #11 CR C9 #12 COO C10 #13 CR H1 #14 HC H4 #15 HC H5 #16 HC H61 #17 HC H62 #18 HC H63 #19 HC H81 #20 HC H82 #21 HC H83 #22 HC H101 #23 HC H102 #24 HC H103 #25 HC + # char O1 #1 -0.570 O2 #2 -0.298 O3 #3 -0.570 C1 #4 -0.100 C2 #5 0.556 C3 #6 -0.124 C4 #7 -0.190 C5 #8 -0.060 C6 #9 0.138 C7 #10 0.053 C8 #11 0.095 C9 #12 0.659 C10 #13 0.061 H1 #14 0.100 H4 #15 0.150 H5 #16 0.100 H61 #17 0.000 H62 #18 0.000 H63 #19 0.000 H81 #20 0.000 H82 #21 0.000 H83 #22 0.000 H101 #23 0.000 H102 #24 0.000 H103 #25 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 H1 #14 0.000 H4 #15 0.000 H5 #16 0.000 H61 #17 0.000 H62 #18 0.000 H63 #19 0.000 H81 #20 0.000 H82 #21 0.000 H83 #22 0.000 H101 #23 0.000 H102 #24 0.000 H103 #25 0.000 +model FOVRAJ RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 81 C2 #2 78 C3 #3 78 N4 #4 81 C5 #5 2 C6 #6 2 N7 #7 9 C8 #8 3 C81 #9 80 C9 #10 1 N10 #11 40 O11 #12 6 C12 #13 1 C13 #14 37 C14 #15 37 C15 #16 37 C16 #17 37 C17 #18 37 C18 #19 37 H1 #20 36 H5 #21 5 H6 #22 5 H91 #23 5 H92 #24 5 H93 #25 5 H101 #26 28 H102 #27 28 H121 #28 5 H122 #29 5 H14 #30 5 H15 #31 5 H16 #32 5 H17 #33 5 H18 #34 5 + # symb N1 #1 NIM+ C2 #2 C5 C3 #3 C5 N4 #4 NIM+ C5 #5 C=C C6 #6 C=C N7 #7 N=C C8 #8 C=N C81 #9 CIM+ C9 #10 CR N10 #11 NC=C O11 #12 OC=N C12 #13 CR C13 #14 CB C14 #15 CB C15 #16 CB C16 #17 CB C17 #18 CB C18 #19 CB H1 #20 HIM+ H5 #21 HC H6 #22 HC H91 #23 HC H92 #24 HC H93 #25 HC H101 #26 HNCC H102 #27 HNCC H121 #28 HC H122 #29 HC H14 #30 HC H15 #31 HC H16 #32 HC H17 #33 HC H18 #34 HC + # char N1 #1 -0.700 C2 #2 0.182 C3 #3 0.446 N4 #4 -0.629 C5 #5 0.229 C6 #6 0.021 N7 #7 -0.621 C8 #8 0.649 C81 #9 0.751 C9 #10 0.168 N10 #11 -0.896 O11 #12 -0.430 C12 #13 0.423 C13 #14 -0.143 C14 #15 -0.150 C15 #16 -0.150 C16 #17 -0.150 C17 #18 -0.150 C18 #19 -0.150 H1 #20 0.450 H5 #21 0.150 H6 #22 0.150 H91 #23 0.000 H92 #24 0.000 H93 #25 0.000 H101 #26 0.400 H102 #27 0.400 H121 #28 0.000 H122 #29 0.000 H14 #30 0.150 H15 #31 0.150 H16 #32 0.150 H17 #33 0.150 H18 #34 0.150 + # fchar N1 #1 0.500 C2 #2 0.000 C3 #3 0.000 N4 #4 0.500 C5 #5 0.000 C6 #6 0.000 N7 #7 0.000 C8 #8 0.000 C81 #9 0.000 C9 #10 0.000 N10 #11 0.000 O11 #12 0.000 C12 #13 0.000 C13 #14 0.000 C14 #15 0.000 C15 #16 0.000 C16 #17 0.000 C17 #18 0.000 C18 #19 0.000 H1 #20 0.000 H5 #21 0.000 H6 #22 0.000 H91 #23 0.000 H92 #24 0.000 H93 #25 0.000 H101 #26 0.000 H102 #27 0.000 H121 #28 0.000 H122 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H17 #33 0.000 H18 #34 0.000 +model FOVRUD RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 3 HAS 1 SUBRINGS PI PAIR ON SP2-N 15 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 9 N2 #2 10 C3 #3 3 C4 #4 1 C5 #5 1 C6 #6 3 O7 #7 7 C8 #8 1 C11 #9 37 C21 #10 37 C31 #11 37 C41 #12 37 C51 #13 37 C61 #14 37 N12 #15 81 C22 #16 80 N32 #17 81 C42 #18 78 C52 #19 78 H2 #20 28 H41 #21 5 H42 #22 5 H5 #23 5 H81 #24 5 H82 #25 5 H83 #26 5 H21 #27 5 H31 #28 5 H51 #29 5 H61 #30 5 H22 #31 5 H32 #32 36 H421 #33 5 H52 #34 5 + # symb N1 #1 N=C N2 #2 NC=O C3 #3 C=ON C4 #4 CR C5 #5 CR C6 #6 C=N O7 #7 O=CN C8 #8 CR C11 #9 CB C21 #10 CB C31 #11 CB C41 #12 CB C51 #13 CB C61 #14 CB N12 #15 NIM+ C22 #16 CIM+ N32 #17 NIM+ C42 #18 C5 C52 #19 C5 H2 #20 HNCO H41 #21 HC H42 #22 HC H5 #23 HC H81 #24 HC H82 #25 HC H83 #26 HC H21 #27 HC H31 #28 HC H51 #29 HC H61 #30 HC H22 #31 HC H32 #32 HIM+ H421 #33 HC H52 #34 HC + # char N1 #1 -0.512 N2 #2 -0.368 C3 #3 0.569 C4 #4 0.061 C5 #5 0.061 C6 #6 0.303 O7 #7 -0.570 C8 #8 0.000 C11 #9 0.086 C21 #10 -0.150 C31 #11 -0.150 C41 #12 0.387 C51 #13 -0.150 C61 #14 -0.150 N12 #15 -0.637 C22 #16 0.650 N32 #17 -0.700 C42 #18 0.200 C52 #19 0.200 H2 #20 0.370 H41 #21 0.000 H42 #22 0.000 H5 #23 0.000 H81 #24 0.000 H82 #25 0.000 H83 #26 0.000 H21 #27 0.150 H31 #28 0.150 H51 #29 0.150 H61 #30 0.150 H22 #31 0.150 H32 #32 0.450 H421 #33 0.150 H52 #34 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 O7 #7 0.000 C8 #8 0.000 C11 #9 0.000 C21 #10 0.000 C31 #11 0.000 C41 #12 0.000 C51 #13 0.000 C61 #14 0.000 N12 #15 0.500 C22 #16 0.000 N32 #17 0.500 C42 #18 0.000 C52 #19 0.000 H2 #20 0.000 H41 #21 0.000 H42 #22 0.000 H5 #23 0.000 H81 #24 0.000 H82 #25 0.000 H83 #26 0.000 H21 #27 0.000 H31 #28 0.000 H51 #29 0.000 H61 #30 0.000 H22 #31 0.000 H32 #32 0.000 H421 #33 0.000 H52 #34 0.000 +model FOWBEY RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons SUBRING 3 has 4 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 N1 #2 66 C2 #3 64 C3 #4 63 N4 #5 39 N5 #6 9 C6 #7 3 C61 #8 2 N7 #9 9 N8 #10 9 C9 #11 1 C91 #12 2 C92 #13 63 C10 #14 1 C11 #15 1 H2 #16 5 H3 #17 5 H101 #18 5 H102 #19 5 H103 #20 5 H111 #21 5 H112 #22 5 H113 #23 5 + # symb CL1 #1 CL N1 #2 N5B C2 #3 C5B C3 #4 C5A N4 #5 NPYL N5 #6 N=C C6 #7 C=N C61 #8 C=C N7 #9 N=N N8 #10 N=N C9 #11 CR C91 #12 C=C C92 #13 C5A C10 #14 CR C11 #15 CR H2 #16 HC H3 #17 HC H101 #18 HC H102 #19 HC H103 #20 HC H111 #21 HC H112 #22 HC H113 #23 HC + # char CL1 #1 -0.209 N1 #2 -0.565 C2 #3 0.077 C3 #4 -0.302 N4 #5 0.505 N5 #6 -0.652 C6 #7 0.645 C61 #8 0.185 N7 #9 -0.171 N8 #10 -0.246 C9 #11 0.384 C91 #12 -0.093 C92 #13 0.142 C10 #14 0.000 C11 #15 0.000 H2 #16 0.150 H3 #17 0.150 H101 #18 0.000 H102 #19 0.000 H103 #20 0.000 H111 #21 0.000 H112 #22 0.000 H113 #23 0.000 + # fchar CL1 #1 0.000 N1 #2 0.000 C2 #3 0.000 C3 #4 0.000 N4 #5 0.000 N5 #6 0.000 C6 #7 0.000 C61 #8 0.000 N7 #9 0.000 N8 #10 0.000 C9 #11 0.000 C91 #12 0.000 C92 #13 0.000 C10 #14 0.000 C11 #15 0.000 H2 #16 0.000 H3 #17 0.000 H101 #18 0.000 H102 #19 0.000 H103 #20 0.000 H111 #21 0.000 H112 #22 0.000 H113 #23 0.000 +model FOWPOW RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 6 PI PAIR ON SP2-N 8 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 7 O2 #2 6 N1 #3 66 N2 #4 66 N3 #5 65 N4 #6 39 N5 #7 9 N6 #8 10 N7 #9 40 C1 #10 63 C2 #11 3 C3 #12 3 C4 #13 37 C5 #14 37 C6 #15 37 C7 #16 37 C8 #17 37 C9 #18 37 C10 #19 1 H60 #20 28 H7 #21 28 H5 #22 5 H6 #23 5 H8 #24 5 H9 #25 5 H110 #26 5 H210 #27 5 H310 #28 5 + # symb O1 #1 O=CN O2 #2 OC=C N1 #3 N5B N2 #4 N5B N3 #5 N5A N4 #6 NPYL N5 #7 N=C N6 #8 NC=O N7 #9 NC=N C1 #10 C5A C2 #11 C=N C3 #12 C=ON C4 #13 CB C5 #14 CB C6 #15 CB C7 #16 CB C8 #17 CB C9 #18 CB C10 #19 CR H60 #20 HNCO H7 #21 HNCN H5 #22 HC H6 #23 HC H8 #24 HC H9 #25 HC H110 #26 HC H210 #27 HC H310 #28 HC + # char O1 #1 -0.570 O2 #2 -0.363 N1 #3 -0.338 N2 #4 0.000 N3 #5 -0.418 N4 #6 0.772 N5 #7 -0.652 N6 #8 -0.494 N7 #9 -0.550 C1 #10 0.251 C2 #11 0.500 C3 #12 0.630 C4 #13 0.100 C5 #14 -0.150 C6 #15 -0.150 C7 #16 0.083 C8 #17 -0.150 C9 #18 -0.150 C10 #19 0.280 H60 #20 0.370 H7 #21 0.400 H5 #22 0.150 H6 #23 0.150 H8 #24 0.150 H9 #25 0.150 H110 #26 0.000 H210 #27 0.000 H310 #28 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 N4 #6 0.000 N5 #7 0.000 N6 #8 0.000 N7 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 C8 #17 0.000 C9 #18 0.000 C10 #19 0.000 H60 #20 0.000 H7 #21 0.000 H5 #22 0.000 H6 #23 0.000 H8 #24 0.000 H9 #25 0.000 H110 #26 0.000 H210 #27 0.000 H310 #28 0.000 +model FOWVES RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON O OR S 13 SUBRING 1 has 8 PI electrons PI PAIR ON O OR S 2 SUBRING 2 has 4 PI electrons PI PAIR ON O OR S 12 SUBRING 3 has 4 PI electrons + # ty S1 #1 15 S2 #2 15 O1 #3 7 O2 #4 7 C1 #5 2 C2 #6 2 C3 #7 3 C4 #8 3 C2B #9 2 C1B #10 2 C4B #11 3 S2B #12 15 S1B #13 15 C3B #14 3 O2B #15 7 O1B #16 7 + # symb S1 #1 S S2 #2 S O1 #3 O=C O2 #4 O=C C1 #5 C=C C2 #6 C=C C3 #7 C=OS C4 #8 C=OS C2B #9 C=C C1B #10 C=C C4B #11 C=OS S2B #12 S S1B #13 S C3B #14 C=OS O2B #15 O=C O1B #16 O=C + # char S1 #1 -0.202 S2 #2 -0.282 O1 #3 -0.570 O2 #4 -0.570 C1 #5 0.115 C2 #6 0.115 C3 #7 0.697 C4 #8 0.697 C2B #9 0.115 C1B #10 0.115 C4B #11 0.697 S2B #12 -0.282 S1B #13 -0.202 C3B #14 0.697 O2B #15 -0.570 O1B #16 -0.570 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C2B #9 0.000 C1B #10 0.000 C4B #11 0.000 S2B #12 0.000 S1B #13 0.000 C3B #14 0.000 O2B #15 0.000 O1B #16 0.000 +model FOWZAS RING 1 HAS 4 SUBRINGS SUBRING 1 has 0 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 0 PI electrons SUBRING 4 has 0 PI electrons + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 1 C10 #10 3 C11 #11 1 C12 #12 3 O1 #13 7 O2 #14 6 O3 #15 7 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 CR C10 #10 C=OR C11 #11 CR C12 #12 COO O1 #13 O=CR O2 #14 OC=O O3 #15 O=CO H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC + # char C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.280 C7 #7 0.000 C8 #8 0.061 C9 #9 0.000 C10 #10 0.448 C11 #11 0.061 C12 #12 0.660 O1 #13 -0.570 O2 #14 -0.430 O3 #15 -0.570 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.060 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 O1 #13 0.000 O2 #14 0.000 O3 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 +model FOYMAH RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 55 N2 #2 55 C4 #3 57 C5 #4 37 C6 #5 37 C7 #6 37 C8 #7 37 C9 #8 37 C10 #9 37 H6 #10 5 H7 #11 5 H8 #12 5 H9 #13 5 H10 #14 5 H11 #15 36 H21 #16 36 H12 #17 36 H22 #18 36 + # symb N1 #1 NCN+ N2 #2 NCN+ C4 #3 CNN+ C5 #4 CB C6 #5 CB C7 #6 CB C8 #7 CB C9 #8 CB C10 #9 CB H6 #10 HC H7 #11 HC H8 #12 HC H9 #13 HC H10 #14 HC H11 #15 HNN+ H21 #16 HNN+ H12 #17 HNN+ H22 #18 HNN+ + # char N1 #1 -0.754 N2 #2 -0.754 C4 #3 0.731 C5 #4 -0.022 C6 #5 -0.150 C7 #6 -0.150 C8 #7 -0.150 C9 #8 -0.150 C10 #9 -0.150 H6 #10 0.150 H7 #11 0.150 H8 #12 0.150 H9 #13 0.150 H10 #14 0.150 H11 #15 0.450 H21 #16 0.450 H12 #17 0.450 H22 #18 0.450 + # fchar N1 #1 0.500 N2 #2 0.500 C4 #3 0.000 C5 #4 0.000 C6 #5 0.000 C7 #6 0.000 C8 #7 0.000 C9 #8 0.000 C10 #9 0.000 H6 #10 0.000 H7 #11 0.000 H8 #12 0.000 H9 #13 0.000 H10 #14 0.000 H11 #15 0.000 H21 #16 0.000 H12 #17 0.000 H22 #18 0.000 +model FOYNUC RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 3 has 2 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty O1 #1 59 C2 #2 63 C3 #3 64 C4 #4 37 C5 #5 37 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 1 C10 #10 37 C11 #11 37 C12 #12 64 C13 #13 63 N21 #14 45 O22 #15 32 O23 #16 32 H13 #17 5 H14 #18 5 H15 #19 5 H16 #20 5 H26 #21 5 H17 #22 5 H27 #23 5 H18 #24 5 H28 #25 5 H19 #26 5 H29 #27 5 + # symb O1 #1 OFUR C2 #2 C5A C3 #3 C5B C4 #4 CB C5 #5 CB C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 CR C10 #10 CB C11 #11 CB C12 #12 C5B C13 #13 C5A N21 #14 NO2 O22 #15 O2N O23 #16 O2N H13 #17 HC H14 #18 HC H15 #19 HC H16 #20 HC H26 #21 HC H17 #22 HC H27 #23 HC H18 #24 HC H28 #25 HC H19 #26 HC H29 #27 HC + # char O1 #1 -0.280 C2 #2 0.220 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 0.143 C7 #7 0.000 C8 #8 0.000 C9 #9 0.143 C10 #10 -0.143 C11 #11 -0.143 C12 #12 0.000 C13 #13 0.140 N21 #14 0.960 O22 #15 -0.520 O23 #16 -0.520 H13 #17 0.150 H14 #18 0.150 H15 #19 0.150 H16 #20 0.000 H26 #21 0.000 H17 #22 0.000 H27 #23 0.000 H18 #24 0.000 H28 #25 0.000 H19 #26 0.000 H29 #27 0.000 + # fchar O1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 N21 #14 0.000 O22 #15 0.000 O23 #16 0.000 H13 #17 0.000 H14 #18 0.000 H15 #19 0.000 H16 #20 0.000 H26 #21 0.000 H17 #22 0.000 H27 #23 0.000 H18 #24 0.000 H28 #25 0.000 H19 #26 0.000 H29 #27 0.000 +model FUCMIZ + # ty CL1 #1 12 CL2 #2 12 SI1 #3 19 N1 #4 8 C1 #5 1 C2 #6 1 H11 #7 5 H12 #8 5 H21 #9 5 H22 #10 5 H23 #11 5 H1 #12 5 H2 #13 5 + # symb CL1 #1 CL CL2 #2 CL SI1 #3 SI N1 #4 NR C1 #5 CR C2 #6 CR H11 #7 HC H12 #8 HC H21 #9 HC H22 #10 HC H23 #11 HC H1 #12 HSI H2 #13 HC + # char CL1 #1 -0.370 CL2 #2 -0.370 SI1 #3 1.287 N1 #4 -0.887 C1 #5 0.270 C2 #6 0.270 H11 #7 0.000 H12 #8 0.000 H21 #9 0.000 H22 #10 0.000 H23 #11 0.000 H1 #12 -0.200 H2 #13 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 SI1 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 H11 #7 0.000 H12 #8 0.000 H21 #9 0.000 H22 #10 0.000 H23 #11 0.000 H1 #12 0.000 H2 #13 0.000 +model FUCMUL RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 9 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty S1 #1 44 N1 #2 66 C1 #3 78 C2 #4 63 H2 #5 5 C1B #6 78 C2B #7 63 N1B #8 66 S1B #9 44 H2B #10 5 + # symb S1 #1 STHI N1 #2 N5B C1 #3 C5 C2 #4 C5A H2 #5 HC C1B #6 C5 C2B #7 C5A N1B #8 N5B S1B #9 STHI H2B #10 HC + # char S1 #1 -0.109 N1 #2 -0.637 C1 #3 0.368 C2 #4 0.228 H2 #5 0.150 C1B #6 0.368 C2B #7 0.228 N1B #8 -0.637 S1B #9 -0.109 H2B #10 0.150 + # fchar S1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 H2 #5 0.000 C1B #6 0.000 C2B #7 0.000 N1B #8 0.000 S1B #9 0.000 H2B #10 0.000 +model FUCTIG01 + # ty O1 #1 32 O2 #2 32 O3 #3 32 N1 #4 45 + # symb O1 #1 O3N O2 #2 O3N O3 #3 O3N N1 #4 NO3 + # char O1 #1 -0.687 O2 #2 -0.687 O3 #3 -0.687 N1 #4 1.060 + # fchar O1 #1 -0.333 O2 #2 -0.333 O3 #3 -0.333 N1 #4 0.000 +model FUCWIJ RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 9 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 17 SUBRING 1 has 2 PI electrons + # ty N1 #1 40 C2 #2 3 N3 #3 9 C4 #4 63 C5 #5 64 C6 #6 3 N7 #7 66 C8 #8 63 N9 #9 39 C1 #10 1 N6 #11 9 C1_ #12 1 C2_ #13 1 C3_ #14 1 C4_ #15 1 C5_ #16 1 O4_ #17 6 O2_ #18 6 O3_ #19 6 O5_ #20 6 H21 #21 5 H81 #22 5 H61 #23 27 H1_ #24 5 H2_ #25 5 H3_ #26 5 H4_ #27 5 H5_ #28 5 H51_ #29 5 H1 #30 5 H2 #31 5 H3 #32 5 H22 #33 21 H32 #34 21 H52 #35 21 + # symb N1 #1 NC=N C2 #2 C=N N3 #3 N=C C4 #4 C5A C5 #5 C5B C6 #6 C=N N7 #7 N5B C8 #8 C5A N9 #9 NPYL C1 #10 CR N6 #11 N=C C1_ #12 CR C2_ #13 CR C3_ #14 CR C4_ #15 CR C5_ #16 CR O4_ #17 OR O2_ #18 OR O3_ #19 OR O5_ #20 OR H21 #21 HC H81 #22 HC H61 #23 HN=C H1_ #24 HC H2_ #25 HC H3_ #26 HC H4_ #27 HC H5_ #28 HC H51_ #29 HC H1 #30 HC H2 #31 HC H3 #32 HC H22 #33 HOR H32 #34 HOR H52 #35 HOR + # char N1 #1 -0.469 C2 #2 0.440 N3 #3 -0.576 C4 #4 -0.026 C5 #5 0.141 C6 #6 0.586 N7 #7 -0.565 C8 #8 0.037 N9 #9 0.048 C1 #10 0.369 N6 #11 -0.850 C1_ #12 0.536 C2_ #13 0.280 C3_ #14 0.280 C4_ #15 0.280 C5_ #16 0.280 O4_ #17 -0.560 O2_ #18 -0.680 O3_ #19 -0.680 O5_ #20 -0.680 H21 #21 0.060 H81 #22 0.150 H61 #23 0.400 H1_ #24 0.000 H2_ #25 0.000 H3_ #26 0.000 H4_ #27 0.000 H5_ #28 0.000 H51_ #29 0.000 H1 #30 0.000 H2 #31 0.000 H3 #32 0.000 H22 #33 0.400 H32 #34 0.400 H52 #35 0.400 + # fchar N1 #1 0.000 C2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N7 #7 0.000 C8 #8 0.000 N9 #9 0.000 C1 #10 0.000 N6 #11 0.000 C1_ #12 0.000 C2_ #13 0.000 C3_ #14 0.000 C4_ #15 0.000 C5_ #16 0.000 O4_ #17 0.000 O2_ #18 0.000 O3_ #19 0.000 O5_ #20 0.000 H21 #21 0.000 H81 #22 0.000 H61 #23 0.000 H1_ #24 0.000 H2_ #25 0.000 H3_ #26 0.000 H4_ #27 0.000 H5_ #28 0.000 H51_ #29 0.000 H1 #30 0.000 H2 #31 0.000 H3 #32 0.000 H22 #33 0.000 H32 #34 0.000 H52 #35 0.000 +model FUCWOP RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 10 SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 5 4 EXOCYCLIC MULT BOND 6 7 SUBRING 2 ALSO RECOGNIZED AS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 38 C2 #2 37 N2 #3 40 N3 #4 38 C4 #5 63 C5 #6 64 C6 #7 37 N7 #8 66 C8 #9 63 N9 #10 39 N11 #11 58 C12 #12 37 C13 #13 37 C14 #14 37 C15 #15 37 C16 #16 37 H21 #17 28 H22 #18 28 H8 #19 5 H9 #20 23 H12 #21 5 H13 #22 5 H14 #23 5 H15 #24 5 H16 #25 5 + # symb N1 #1 NPYD C2 #2 CB N2 #3 NC=N N3 #4 NPYD C4 #5 C5A C5 #6 C5B C6 #7 CB N7 #8 N5B C8 #9 C5A N9 #10 NPYL N11 #11 NPD+ C12 #12 CB C13 #13 CB C14 #14 CB C15 #15 CB C16 #16 CB H21 #17 HNCN H22 #18 HNCN H8 #19 HC H9 #20 HPYL H12 #21 HC H13 #22 HC H14 #23 HC H15 #24 HC H16 #25 HC + # char N1 #1 -0.620 C2 #2 0.720 N2 #3 -0.900 N3 #4 -0.567 C4 #5 0.105 C5 #6 0.227 C6 #7 0.671 N7 #8 -0.565 C8 #9 0.037 N9 #10 0.033 N11 #11 -0.083 C12 #12 0.211 C13 #13 -0.150 C14 #14 -0.150 C15 #15 -0.150 C16 #16 0.211 H21 #17 0.400 H22 #18 0.400 H8 #19 0.150 H9 #20 0.270 H12 #21 0.150 H13 #22 0.150 H14 #23 0.150 H15 #24 0.150 H16 #25 0.150 + # fchar N1 #1 0.000 C2 #2 0.000 N2 #3 0.000 N3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 N7 #8 0.000 C8 #9 0.000 N9 #10 0.000 N11 #11 1.000 C12 #12 0.000 C13 #13 0.000 C14 #14 0.000 C15 #15 0.000 C16 #16 0.000 H21 #17 0.000 H22 #18 0.000 H8 #19 0.000 H9 #20 0.000 H12 #21 0.000 H13 #22 0.000 H14 #23 0.000 H15 #24 0.000 H16 #25 0.000 +model FUDPOJ RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty O1 #1 7 O2 #2 6 C1 #3 3 C2 #4 2 H2 #5 29 C2G #6 2 O2G #7 6 H2G #8 29 + # symb O1 #1 O=CR O2 #2 OC=C C1 #3 C=OR C2 #4 C=C H2 #5 HOCC C2G #6 C=C O2G #7 OC=C H2G #8 HOCC + # char O1 #1 -0.570 O2 #2 -0.527 C1 #3 0.541 C2 #4 0.091 H2 #5 0.450 C2G #6 0.091 O2G #7 -0.527 H2G #8 0.450 + # fchar O1 #1 0.000 O2 #2 0.000 C1 #3 0.000 C2 #4 0.000 H2 #5 0.000 C2G #6 0.000 O2G #7 0.000 H2G #8 0.000 +model FUDXUX + # ty N1 #1 42 N2 #2 34 C1 #3 4 C2 #4 1 C3 #5 1 H28 #6 36 H29 #7 36 H21 #8 5 H22 #9 5 H31 #10 5 H32 #11 5 H33 #12 5 + # symb N1 #1 NSP N2 #2 NR+ C1 #3 CSP C2 #4 CR C3 #5 CR H28 #6 HNR+ H29 #7 HNR+ H21 #8 HC H22 #9 HC H31 #10 HC H32 #11 HC H33 #12 HC + # char N1 #1 -0.557 N2 #2 -0.906 C1 #3 0.357 C2 #4 0.703 C3 #5 0.503 H28 #6 0.450 H29 #7 0.450 H21 #8 0.000 H22 #9 0.000 H31 #10 0.000 H32 #11 0.000 H33 #12 0.000 + # fchar N1 #1 0.000 N2 #2 1.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 H28 #6 0.000 H29 #7 0.000 H21 #8 0.000 H22 #9 0.000 H31 #10 0.000 H32 #11 0.000 H33 #12 0.000 +model FUFDIT RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 3 SUBRING 1 has 4 PI electrons + # ty N1 #1 10 C2 #2 3 N3 #3 10 C4 #4 3 C5 #5 1 C6 #6 1 O2 #7 7 C7 #8 1 O4 #9 7 O5 #10 6 O6 #11 6 O8 #12 6 H1 #13 28 H3 #14 28 H6 #15 5 H71 #16 5 H72 #17 5 H73 #18 5 H5 #19 21 H8 #20 21 + # symb N1 #1 NC=O C2 #2 CONN N3 #3 NC=O C4 #4 C=ON C5 #5 CR C6 #6 CR O2 #7 O=CN C7 #8 CR O4 #9 O=CN O5 #10 OR O6 #11 OR O8 #12 -O- H1 #13 HNCO H3 #14 HNCO H6 #15 HC H71 #16 HC H72 #17 HC H73 #18 HC H5 #19 HOR H8 #20 HO + # char N1 #1 -0.730 C2 #2 0.690 N3 #3 -0.490 C4 #4 0.569 C5 #5 0.341 C6 #6 0.580 O2 #7 -0.570 C7 #8 0.000 O4 #9 -0.570 O5 #10 -0.680 O6 #11 -0.280 O8 #12 -0.400 H1 #13 0.370 H3 #14 0.370 H6 #15 0.000 H71 #16 0.000 H72 #17 0.000 H73 #18 0.000 H5 #19 0.400 H8 #20 0.400 + # fchar N1 #1 0.000 C2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 O2 #7 0.000 C7 #8 0.000 O4 #9 0.000 O5 #10 0.000 O6 #11 0.000 O8 #12 0.000 H1 #13 0.000 H3 #14 0.000 H6 #15 0.000 H71 #16 0.000 H72 #17 0.000 H73 #18 0.000 H5 #19 0.000 H8 #20 0.000 +model FUGWIN RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 7 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 10 14 EXOCYCLIC MULT BOND 11 6 SUBRING 1 ALSO RECOGNIZED AS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 2 PI electrons + # ty O1 #1 6 O2 #2 6 N1 #3 65 O3 #4 6 N2 #5 38 N3 #6 58 N4 #7 39 N5 #8 40 C1 #9 37 C2 #10 63 C3 #11 64 C4 #12 1 C5 #13 1 C6 #14 37 C7 #15 64 C8 #16 1 C9 #17 1 C10 #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 28 H10 #28 28 H11 #29 36 H12 #30 23 H13 #31 21 H14 #32 21 + # symb O1 #1 OR O2 #2 OR N1 #3 N5A O3 #4 OR N2 #5 NPYD N3 #6 NPD+ N4 #7 NPYL N5 #8 NC=C C1 #9 CB C2 #10 C5A C3 #11 C5B C4 #12 CR C5 #13 CR C6 #14 CB C7 #15 C5B C8 #16 CR C9 #17 CR C10 #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HNCC H10 #28 HNCC H11 #29 HPD+ H12 #30 HPYL H13 #31 HOR H14 #32 HOR + # char O1 #1 -0.560 O2 #2 -0.680 N1 #3 -0.707 O3 #4 -0.680 N2 #5 -0.620 N3 #6 -0.125 N4 #7 0.300 N5 #8 -0.900 C1 #9 0.521 C2 #10 -0.152 C3 #11 0.307 C4 #12 0.280 C5 #13 0.280 C6 #14 0.410 C7 #15 0.108 C8 #16 0.461 C9 #17 0.280 C10 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.150 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.400 H10 #28 0.400 H11 #29 0.457 H12 #30 0.270 H13 #31 0.400 H14 #32 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 O3 #4 0.000 N2 #5 0.000 N3 #6 1.000 N4 #7 0.000 N5 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 +model FUHFAP + # ty N1 #1 8 O1 #2 6 C1 #3 1 H1 #4 5 H2 #5 5 H3 #6 5 O1B #7 6 C1B #8 1 H1B #9 5 H2B #10 5 H3B #11 5 H4 #12 23 + # symb N1 #1 NR O1 #2 OR C1 #3 CR H1 #4 HC H2 #5 HC H3 #6 HC O1B #7 OR C1B #8 CR H1B #9 HC H2B #10 HC H3B #11 HC H4 #12 HNR + # char N1 #1 -0.560 O1 #2 -0.180 C1 #3 0.280 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 O1B #7 -0.180 C1B #8 0.280 H1B #9 0.000 H2B #10 0.000 H3B #11 0.000 H4 #12 0.360 + # fchar N1 #1 0.000 O1 #2 0.000 C1 #3 0.000 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 O1B #7 0.000 C1B #8 0.000 H1B #9 0.000 H2B #10 0.000 H3B #11 0.000 H4 #12 0.000 +model FUHSEG RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 32 O2 #2 32 N1 #3 42 N2 #4 45 C1 #5 4 C2 #6 2 C3 #7 2 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 H3 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 H9 #19 5 + # symb O1 #1 O2N O2 #2 O2N N1 #3 NSP N2 #4 NO2 C1 #5 CSP C2 #6 C=C C3 #7 C=C C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB H3 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC H9 #19 HC + # char O1 #1 -0.520 O2 #2 -0.520 N1 #3 -0.557 N2 #4 0.836 C1 #5 0.492 C2 #6 0.269 C3 #7 -0.178 C4 #8 0.028 C5 #9 -0.150 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 H3 #14 0.150 H5 #15 0.150 H6 #16 0.150 H7 #17 0.150 H8 #18 0.150 H9 #19 0.150 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 H3 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 H9 #19 0.000 +model FULRAF RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 15 SUBRING 1 has 2 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 65 C3 #3 64 N4 #4 66 C5 #5 63 C6 #6 57 N7 #7 55 N8 #8 55 N9 #9 40 C1_ #10 1 C2_ #11 1 C3_ #12 1 C4_ #13 1 C5_ #14 1 O1_ #15 6 O2_ #16 6 O3_ #17 6 O5_ #18 6 H71 #19 36 H72 #20 36 H81 #21 36 H82 #22 36 H91 #23 28 H92 #24 28 H1_ #25 5 H2_ #26 5 H3_ #27 5 H4_ #28 5 H51_ #29 5 H52_ #30 5 H21_ #31 21 H31_ #32 21 H50 #33 21 + # symb N1 #1 NPYL N2 #2 N5A C3 #3 C5B N4 #4 N5B C5 #5 C5A C6 #6 CNN+ N7 #7 NCN+ N8 #8 NCN+ N9 #9 NC=N C1_ #10 CR C2_ #11 CR C3_ #12 CR C4_ #13 CR C5_ #14 CR O1_ #15 OR O2_ #16 OR O3_ #17 OR O5_ #18 OR H71 #19 HNN+ H72 #20 HNN+ H81 #21 HNN+ H82 #22 HNN+ H91 #23 HNCN H92 #24 HNCN H1_ #25 HC H2_ #26 HC H3_ #27 HC H4_ #28 HC H51_ #29 HC H52_ #30 HC H21_ #31 HOR H31_ #32 HOR H50 #33 HOR + # char N1 #1 0.314 N2 #2 -0.707 C3 #3 0.440 N4 #4 -0.565 C5 #5 0.271 C6 #6 0.785 N7 #7 -0.754 N8 #8 -0.754 N9 #9 -0.884 C1_ #10 0.536 C2_ #11 0.280 C3_ #12 0.280 C4_ #13 0.280 C5_ #14 0.280 O1_ #15 -0.560 O2_ #16 -0.680 O3_ #17 -0.680 O5_ #18 -0.680 H71 #19 0.450 H72 #20 0.450 H81 #21 0.450 H82 #22 0.450 H91 #23 0.400 H92 #24 0.400 H1_ #25 0.000 H2_ #26 0.000 H3_ #27 0.000 H4_ #28 0.000 H51_ #29 0.000 H52_ #30 0.000 H21_ #31 0.400 H31_ #32 0.400 H50 #33 0.400 + # fchar N1 #1 0.000 N2 #2 0.000 C3 #3 0.000 N4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N7 #7 0.500 N8 #8 0.500 N9 #9 0.000 C1_ #10 0.000 C2_ #11 0.000 C3_ #12 0.000 C4_ #13 0.000 C5_ #14 0.000 O1_ #15 0.000 O2_ #16 0.000 O3_ #17 0.000 O5_ #18 0.000 H71 #19 0.000 H72 #20 0.000 H81 #21 0.000 H82 #22 0.000 H91 #23 0.000 H92 #24 0.000 H1_ #25 0.000 H2_ #26 0.000 H3_ #27 0.000 H4_ #28 0.000 H51_ #29 0.000 H52_ #30 0.000 H21_ #31 0.000 H31_ #32 0.000 H50 #33 0.000 +model FUNSIQ + # ty S1 #1 18 O1 #2 7 O2 #3 6 O3 #4 32 O4 #5 32 O5 #6 32 O6 #7 32 O7 #8 32 N1 #9 45 C1 #10 3 C2 #11 1 C3 #12 1 C4 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 + # symb S1 #1 SO3 O1 #2 O=CO O2 #3 OC=O O3 #4 O2N O4 #5 O2N O5 #6 O3S O6 #7 O3S O7 #8 O3S N1 #9 NO2 C1 #10 COO C2 #11 CR C3 #12 CR C4 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC + # char S1 #1 1.345 O1 #2 -0.570 O2 #3 -0.430 O3 #4 -0.520 O4 #5 -0.520 O5 #6 -0.817 O6 #7 -0.817 O7 #8 -0.817 N1 #9 0.800 C1 #10 0.659 C2 #11 0.406 C3 #12 0.280 C4 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 O5 #6 -0.333 O6 #7 -0.333 O7 #8 -0.333 N1 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 +model FUNXOB RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 59 C1 #2 63 C2 #3 64 C3 #4 64 C4 #5 63 C5 #6 3 O2 #7 7 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 C11 #13 37 O3 #14 6 C12 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 + # symb O1 #1 OFUR C1 #2 C5A C2 #3 C5B C3 #4 C5B C4 #5 C5A C5 #6 C=OR O2 #7 O=CR C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB C11 #13 CB O3 #14 OC=C C12 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC + # char O1 #1 -0.280 C1 #2 -0.010 C2 #3 -0.086 C3 #4 -0.150 C4 #5 -0.010 C5 #6 0.570 O2 #7 -0.570 C6 #8 0.086 C7 #9 -0.150 C8 #10 -0.150 C9 #11 0.083 C10 #12 -0.150 C11 #13 -0.150 O3 #14 -0.363 C12 #15 0.280 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.150 H6 #21 0.150 H7 #22 0.150 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 O2 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 O3 #14 0.000 C12 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 +model FUPJUV RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 5 6 EXOCYCLIC MULT BOND 10 9 SUBRING 1 ALSO RECOGNIZED AS AROMATIC + # ty N1 #1 82 O1 #2 32 N2 #3 65 N3 #4 39 C1 #5 63 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 64 C7 #11 3 O2 #12 7 O3 #13 6 C8 #14 1 C9 #15 1 C10 #16 1 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 C10C #26 1 H8C #27 5 H5C #28 5 H6C #29 5 H7C #30 5 + # symb N1 #1 N5BX O1 #2 OXN N2 #3 N5A N3 #4 NPYL C1 #5 C5A C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 C5B C7 #11 C=ON O2 #12 O=CN O3 #13 OC=O C8 #14 CR C9 #15 CR C10 #16 CR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC C10C #26 CR H8C #27 HC H5C #28 HC H6C #29 HC H7C #30 HC + # char N1 #1 1.091 O1 #2 -0.633 N2 #3 -0.794 N3 #4 0.561 C1 #5 -0.152 C2 #6 -0.150 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 -0.082 C7 #11 0.729 O2 #12 -0.570 O3 #13 -0.430 C8 #14 0.280 C9 #15 0.000 C10 #16 0.000 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 C10C #26 0.000 H8C #27 0.000 H5C #28 0.000 H6C #29 0.000 H7C #30 0.000 + # fchar N1 #1 0.000 O1 #2 0.000 N2 #3 0.000 N3 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 O2 #12 0.000 O3 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 C10C #26 0.000 H8C #27 0.000 H5C #28 0.000 H6C #29 0.000 H7C #30 0.000 +model FUPKIK RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 66 N2 #2 65 N3 #3 39 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 64 C6 #9 63 O1 #10 6 S1 #11 18 O2 #12 32 O3 #13 32 C7 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 + # symb N1 #1 N5B N2 #2 N5A N3 #3 NPYL C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 C5B C6 #9 C5A O1 #10 OSO2 S1 #11 SO3 O2 #12 O2S O3 #13 O2S C7 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC + # char N1 #1 -0.227 N2 #2 -0.418 N3 #3 0.709 C1 #4 -0.150 C2 #5 -0.150 C3 #6 -0.150 C4 #7 -0.150 C5 #8 0.227 C6 #9 -0.152 O1 #10 -0.323 S1 #11 1.379 O2 #12 -0.650 O3 #13 -0.650 C7 #14 0.105 H1 #15 0.150 H2 #16 0.150 H3 #17 0.150 H4 #18 0.150 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 O1 #10 0.000 S1 #11 0.000 O2 #12 0.000 O3 #13 0.000 C7 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 +model FUPKOQ RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 16 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 65 N3 #3 82 C1 #4 64 C2 #5 63 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 O1 #10 32 C7 #11 3 O2 #12 7 C8 #13 3 C9 #14 64 C10 #15 63 S1 #16 44 C11 #17 63 N4 #18 66 N5 #19 40 N6 #20 9 O3 #21 6 C12 #22 1 H1 #23 5 H2 #24 5 H3 #25 5 H4 #26 5 H5 #27 5 H6 #28 28 H7 #29 28 H8 #30 5 H9 #31 5 H10 #32 5 + # symb N1 #1 NPYL N2 #2 N5A N3 #3 N5BX C1 #4 C5B C2 #5 C5A C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB O1 #10 OXN C7 #11 C=ON O2 #12 O=CN C8 #13 C=N C9 #14 C5B C10 #15 C5A S1 #16 STHI C11 #17 C5A N4 #18 N5B N5 #19 NC=N N6 #20 N=C O3 #21 OR C12 #22 CR H1 #23 HC H2 #24 HC H3 #25 HC H4 #26 HC H5 #27 HC H6 #28 HNCN H7 #29 HNCN H8 #30 HC H9 #31 HC H10 #32 HC + # char N1 #1 0.561 N2 #2 -0.794 N3 #3 1.091 C1 #4 -0.082 C2 #5 -0.152 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.150 O1 #10 -0.633 C7 #11 0.579 O2 #12 -0.570 C8 #13 0.536 C9 #14 0.141 C10 #15 -0.110 S1 #16 -0.080 C11 #17 0.462 N4 #18 -0.565 N5 #19 -0.884 N6 #20 -0.513 O3 #21 -0.217 C12 #22 0.280 H1 #23 0.150 H2 #24 0.150 H3 #25 0.150 H4 #26 0.150 H5 #27 0.150 H6 #28 0.400 H7 #29 0.400 H8 #30 0.000 H9 #31 0.000 H10 #32 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 O1 #10 0.000 C7 #11 0.000 O2 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 S1 #16 0.000 C11 #17 0.000 N4 #18 0.000 N5 #19 0.000 N6 #20 0.000 O3 #21 0.000 C12 #22 0.000 H1 #23 0.000 H2 #24 0.000 H3 #25 0.000 H4 #26 0.000 H5 #27 0.000 H6 #28 0.000 H7 #29 0.000 H8 #30 0.000 H9 #31 0.000 H10 #32 0.000 +model FUPTOZ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON O OR S 3 PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons + # ty O1 #1 6 S1 #2 15 S2 #3 15 C1 #4 2 C2 #5 2 CL1 #6 12 CL2 #7 12 C3 #8 1 H1 #9 5 C4 #10 1 CL3 #11 12 CL4 #12 12 CL5 #13 12 C5 #14 1 H2 #15 5 C6 #16 1 CL6 #17 12 CL7 #18 12 CL8 #19 12 + # symb O1 #1 OR S1 #2 S S2 #3 S C1 #4 C=C C2 #5 C=C CL1 #6 CL CL2 #7 CL C3 #8 CR H1 #9 HC C4 #10 CR CL3 #11 CL CL4 #12 CL CL5 #13 CL C5 #14 CR H2 #15 HC C6 #16 CR CL6 #17 CL CL7 #18 CL CL8 #19 CL + # char O1 #1 -0.560 S1 #2 -0.331 S2 #3 -0.331 C1 #4 0.202 C2 #5 0.280 CL1 #6 -0.140 CL2 #7 -0.140 C3 #8 0.510 H1 #9 0.000 C4 #10 0.870 CL3 #11 -0.290 CL4 #12 -0.290 CL5 #13 -0.290 C5 #14 0.510 H2 #15 0.000 C6 #16 0.870 CL6 #17 -0.290 CL7 #18 -0.290 CL8 #19 -0.290 + # fchar O1 #1 0.000 S1 #2 0.000 S2 #3 0.000 C1 #4 0.000 C2 #5 0.000 CL1 #6 0.000 CL2 #7 0.000 C3 #8 0.000 H1 #9 0.000 C4 #10 0.000 CL3 #11 0.000 CL4 #12 0.000 CL5 #13 0.000 C5 #14 0.000 H2 #15 0.000 C6 #16 0.000 CL6 #17 0.000 CL7 #18 0.000 CL8 #19 0.000 +model FUPZEV RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 1 has 2 PI electrons + # ty O1 #1 6 O2 #2 6 O3 #3 7 C1 #4 20 C2 #5 2 C3 #6 2 C4 #7 1 C5 #8 20 C6 #9 20 C7 #10 20 C8 #11 3 C9 #12 1 C10 #13 1 C11 #14 1 C12 #15 1 H1 #16 21 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 H15 #30 5 H16 #31 5 H17 #32 5 H18 #33 5 + # symb O1 #1 OR O2 #2 OC=O O3 #3 O=CO C1 #4 CR4R C2 #5 C=C C3 #6 C=C C4 #7 CR C5 #8 CR4R C6 #9 CR4R C7 #10 CR4R C8 #11 COO C9 #12 CR C10 #13 CR C11 #14 CR C12 #15 CR H1 #16 HOR H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC H15 #30 HC H16 #31 HC H17 #32 HC H18 #33 HC + # char O1 #1 -0.658 O2 #2 -0.408 O3 #3 -0.570 C1 #4 0.374 C2 #5 -0.254 C3 #6 -0.288 C4 #7 0.138 C5 #8 0.000 C6 #9 0.000 C7 #10 0.258 C8 #11 0.659 C9 #12 0.061 C10 #13 0.138 C11 #14 0.000 C12 #15 0.000 H1 #16 0.400 H2 #17 0.150 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H17 #32 0.000 H18 #33 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H17 #32 0.000 H18 #33 0.000 +model FUSPEO + # ty O6 #1 7 C1 #2 3 C2 #3 2 C3 #4 2 O7 #5 35 H1 #6 5 H2 #7 5 H3 #8 5 + # symb O6 #1 O=CR C1 #2 C=OR C2 #3 C=C C3 #4 C=C O7 #5 OM2 H1 #6 HC H2 #7 HC H3 #8 HC + # char O6 #1 -0.570 C1 #2 0.496 C2 #3 -0.136 C3 #4 -0.300 O7 #5 -0.850 H1 #6 0.060 H2 #7 0.150 H3 #8 0.150 + # fchar O6 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 O7 #5 -1.000 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 +model FUTCEC RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 10 N2 #2 8 C1 #3 20 C2 #4 3 C3 #5 1 C4 #6 1 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 O1 #13 7 H1 #14 23 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 + # symb N1 #1 NC=O N2 #2 NR C1 #3 CR4R C2 #4 C=ON C3 #5 CR C4 #6 CR C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB O1 #13 O=CN H1 #14 HNR H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC + # char N1 #1 -0.168 N2 #2 -0.579 C1 #3 0.263 C2 #4 0.577 C3 #5 0.000 C4 #6 0.000 C5 #7 0.117 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.150 C9 #11 -0.150 C10 #12 -0.150 O1 #13 -0.570 H1 #14 0.360 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.150 H9 #22 0.150 H10 #23 0.150 H11 #24 0.150 H12 #25 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 O1 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 +model FUTZEZ + # ty SI1 #1 19 O1 #2 6 C1 #3 1 H1 #4 5 H2 #5 5 H3 #6 5 H4 #7 5 H2B #8 5 H4B #9 5 + # symb SI1 #1 SI O1 #2 OR C1 #3 CR H1 #4 HSI H2 #5 HSI H3 #6 HC H4 #7 HC H2B #8 HSI H4B #9 HC + # char SI1 #1 0.897 O1 #2 -0.577 C1 #3 0.280 H1 #4 -0.200 H2 #5 -0.200 H3 #6 0.000 H4 #7 0.000 H2B #8 -0.200 H4B #9 0.000 + # fchar SI1 #1 0.000 O1 #2 0.000 C1 #3 0.000 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 H4 #7 0.000 H2B #8 0.000 H4B #9 0.000 +model FUVDOP RING 1 HAS 4 SUBRINGS SUBRING 3 IS A 3-MEMBERED RING PI PAIR ON SP2-N 7 PI PAIR ON SP2-N 9 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 8 PI PAIR ON SP2-N 7 SUBRING 2 has 4 PI electrons PI PAIR ON SP2-N 8 PI PAIR ON SP2-N 9 SUBRING 4 has 4 PI electrons + # ty O1 #1 6 O2 #2 6 O3 #3 6 O4 #4 7 O5 #5 7 O6 #6 7 N1 #7 8 N2 #8 8 N3 #9 8 C1 #10 1 C2 #11 1 C3 #12 1 C4 #13 1 C5 #14 1 C6 #15 1 C7 #16 3 C8 #17 3 C9 #18 3 C10 #19 1 C11 #20 1 C12 #21 1 H1 #22 5 H2 #23 5 H3 #24 5 H4 #25 5 H5 #26 5 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 5 H10 #31 5 H11 #32 5 H12 #33 5 H13 #34 5 H14 #35 5 H15 #36 5 + # symb O1 #1 OC=O O2 #2 OC=O O3 #3 OC=O O4 #4 O=CO O5 #5 O=CO O6 #6 O=CO N1 #7 NR N2 #8 NR N3 #9 NR C1 #10 CR C2 #11 CR C3 #12 CR C4 #13 CR C5 #14 CR C6 #15 CR C7 #16 COO C8 #17 COO C9 #18 COO C10 #19 CR C11 #20 CR C12 #21 CR H1 #22 HC H2 #23 HC H3 #24 HC H4 #25 HC H5 #26 HC H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HC H10 #31 HC H11 #32 HC H12 #33 HC H13 #34 HC H14 #35 HC H15 #36 HC + # char O1 #1 -0.430 O2 #2 -0.430 O3 #3 -0.430 O4 #4 -0.570 O5 #5 -0.570 O6 #6 -0.570 N1 #7 -0.270 N2 #8 -0.270 N3 #9 -0.270 C1 #10 0.280 C2 #11 0.270 C3 #12 0.280 C4 #13 0.270 C5 #14 0.280 C6 #15 0.270 C7 #16 0.659 C8 #17 0.659 C9 #18 0.659 C10 #19 0.061 C11 #20 0.061 C12 #21 0.061 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 H15 #36 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 O6 #6 0.000 N1 #7 0.000 N2 #8 0.000 N3 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 C8 #17 0.000 C9 #18 0.000 C10 #19 0.000 C11 #20 0.000 C12 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 H15 #36 0.000 +model FUVMUE + # ty C3 #1 1 C4 #2 1 N1 #3 10 C5 #4 3 O7 #5 51 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 3 O8 #10 51 N2 #11 10 C10 #12 1 C11 #13 1 H1 #14 52 H2 #15 52 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 H13 #26 5 H14 #27 5 H15 #28 5 H16 #29 5 H17 #30 5 H18 #31 5 H19 #32 5 H20 #33 5 + # symb C3 #1 CR C4 #2 CR N1 #3 NC=O C5 #4 C=ON O7 #5 O=+ C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 C=ON O8 #10 O=+ N2 #11 NC=O C10 #12 CR C11 #13 CR H1 #14 HO=+ H2 #15 HO=+ H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC H13 #26 HC H14 #27 HC H15 #28 HC H16 #29 HC H17 #30 HC H18 #31 HC H19 #32 HC H20 #33 HC + # char C3 #1 0.300 C4 #2 0.300 N1 #3 -0.660 C5 #4 0.949 O7 #5 -0.450 C6 #6 0.061 C7 #7 0.000 C8 #8 0.061 C9 #9 0.949 O8 #10 -0.450 N2 #11 -0.660 C10 #12 0.300 C11 #13 0.300 H1 #14 0.500 H2 #15 0.500 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 H15 #28 0.000 H16 #29 0.000 H17 #30 0.000 H18 #31 0.000 H19 #32 0.000 H20 #33 0.000 + # fchar C3 #1 0.000 C4 #2 0.000 N1 #3 0.000 C5 #4 0.000 O7 #5 1.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 O8 #10 1.000 N2 #11 0.000 C10 #12 0.000 C11 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 H15 #28 0.000 H16 #29 0.000 H17 #30 0.000 H18 #31 0.000 H19 #32 0.000 H20 #33 0.000 +model FUVNEP RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O2 #1 7 N1 #2 40 N2 #3 40 C7 #4 1 C8 #5 1 C9 #6 37 C10 #7 37 C11 #8 37 C12 #9 37 C13 #10 37 C14 #11 37 C15 #12 3 C16 #13 37 C17 #14 37 C18 #15 37 C19 #16 37 C20 #17 37 C21 #18 37 C22 #19 1 C23 #20 1 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 5 H13 #32 5 H14 #33 5 H15 #34 5 H16 #35 5 H17 #36 5 H18 #37 5 H19 #38 5 H20 #39 5 H21 #40 5 + # symb O2 #1 O=CR N1 #2 NC=C N2 #3 NC=C C7 #4 CR C8 #5 CR C9 #6 CB C10 #7 CB C11 #8 CB C12 #9 CB C13 #10 CB C14 #11 CB C15 #12 C=OR C16 #13 CB C17 #14 CB C18 #15 CB C19 #16 CB C20 #17 CB C21 #18 CB C22 #19 CR C23 #20 CR H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HC H13 #32 HC H14 #33 HC H15 #34 HC H16 #35 HC H17 #36 HC H18 #37 HC H19 #38 HC H20 #39 HC H21 #40 HC + # char O2 #1 -0.570 N1 #2 -0.838 N2 #3 -0.838 C7 #4 0.369 C8 #5 0.369 C9 #6 0.100 C10 #7 -0.150 C11 #8 -0.150 C12 #9 0.086 C13 #10 -0.150 C14 #11 -0.150 C15 #12 0.398 C16 #13 0.086 C17 #14 -0.150 C18 #15 -0.150 C19 #16 0.100 C20 #17 -0.150 C21 #18 -0.150 C22 #19 0.369 C23 #20 0.369 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 H14 #33 0.150 H15 #34 0.150 H16 #35 0.150 H17 #36 0.150 H18 #37 0.150 H19 #38 0.150 H20 #39 0.150 H21 #40 0.150 + # fchar O2 #1 0.000 N1 #2 0.000 N2 #3 0.000 C7 #4 0.000 C8 #5 0.000 C9 #6 0.000 C10 #7 0.000 C11 #8 0.000 C12 #9 0.000 C13 #10 0.000 C14 #11 0.000 C15 #12 0.000 C16 #13 0.000 C17 #14 0.000 C18 #15 0.000 C19 #16 0.000 C20 #17 0.000 C21 #18 0.000 C22 #19 0.000 C23 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 H14 #33 0.000 H15 #34 0.000 H16 #35 0.000 H17 #36 0.000 H18 #37 0.000 H19 #38 0.000 H20 #39 0.000 H21 #40 0.000 +model FUVXOJ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 O2 #2 6 N1 #3 54 C1 #4 1 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 3 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 H9 #20 36 H10 #21 21 + # symb O1 #1 OC=C O2 #2 -O- N1 #3 N+=C C1 #4 CR C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 C=N H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC H9 #20 HNC+ H10 #21 HO + # char O1 #1 -0.363 O2 #2 -0.219 N1 #3 0.019 C1 #4 0.280 C2 #5 0.083 C3 #6 -0.150 C4 #7 -0.150 C5 #8 0.086 C6 #9 -0.150 C7 #10 -0.150 C8 #11 0.254 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.150 H5 #16 0.150 H6 #17 0.150 H7 #18 0.150 H8 #19 0.060 H9 #20 0.400 H10 #21 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 1.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 +model FUWMOZ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 C1 #2 3 O2 #3 7 N1 #4 43 C2 #5 1 C3 #6 1 S1 #7 18 O3 #8 32 O4 #9 32 N2 #10 43 C4 #11 37 C5 #12 37 C6 #13 37 C7 #14 37 C8 #15 37 C9 #16 37 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 28 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 + # symb O1 #1 OC=O C1 #2 C=ON O2 #3 O=CN N1 #4 NSO2 C2 #5 CR C3 #6 CR S1 #7 SO2N O3 #8 O2S O4 #9 O2S N2 #10 NSO2 C4 #11 CB C5 #12 CB C6 #13 CB C7 #14 CB C8 #15 CB C9 #16 CB H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HNSO H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC + # char O1 #1 -0.430 C1 #2 0.956 O2 #3 -0.570 N1 #4 -0.730 C2 #5 0.356 C3 #6 0.280 S1 #7 1.576 O3 #8 -0.650 O4 #9 -0.650 N2 #10 -0.757 C4 #11 0.199 C5 #12 -0.150 C6 #13 -0.150 C7 #14 -0.150 C8 #15 -0.150 C9 #16 -0.150 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.150 H6 #22 0.420 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 + # fchar O1 #1 0.000 C1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C2 #5 0.000 C3 #6 0.000 S1 #7 0.000 O3 #8 0.000 O4 #9 0.000 N2 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model FUWTUM RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON O OR S 3 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 3 SUBRING 2 has 2 PI electrons SUBRING 3 has 0 PI electrons + # ty S1 #1 72 S2 #2 15 S3 #3 15 P1 #4 25 P2 #5 26 P3 #6 26 C1 #7 1 C2 #8 1 C3 #9 1 C4 #10 1 C5 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 H9 #20 5 + # symb S1 #1 S-P S2 #2 S S3 #3 S P1 #4 PTET P2 #5 P P3 #6 P C1 #7 CR C2 #8 CR C3 #9 CR C4 #10 CR C5 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC H9 #20 HC + # char S1 #1 -0.677 S2 #2 -0.342 S3 #3 -0.342 P1 #4 1.173 P2 #5 -0.073 P3 #6 -0.073 C1 #7 0.000 C2 #8 0.167 C3 #9 0.167 C4 #10 0.000 C5 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 P1 #4 0.000 P2 #5 0.000 P3 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 +model FUXXAX + # ty S1 #1 15 P1 #2 25 O1 #3 32 O2 #4 32 O3 #5 32 C1 #6 1 C2 #7 1 N1 #8 34 C3 #9 1 C4 #10 1 C5 #11 1 N2 #12 34 H1 #13 36 H2 #14 36 H3 #15 36 H4 #16 36 H5 #17 36 H12 #18 5 H13 #19 5 H14 #20 5 H15 #21 5 H16 #22 5 H17 #23 5 H18 #24 5 H19 #25 5 H20 #26 5 H21 #27 5 + # symb S1 #1 S P1 #2 PO3 O1 #3 O3P O2 #4 O3P O3 #5 O3P C1 #6 CR C2 #7 CR N1 #8 NR+ C3 #9 CR C4 #10 CR C5 #11 CR N2 #12 NR+ H1 #13 HNR+ H2 #14 HNR+ H3 #15 HNR+ H4 #16 HNR+ H5 #17 HNR+ H12 #18 HC H13 #19 HC H14 #20 HC H15 #21 HC H16 #22 HC H17 #23 HC H18 #24 HC H19 #25 HC H20 #26 HC H21 #27 HC + # char S1 #1 -0.478 P1 #2 1.348 O1 #3 -1.033 O2 #4 -1.033 O3 #5 -1.033 C1 #6 0.230 C2 #7 0.503 N1 #8 -0.906 C3 #9 0.503 C4 #10 0.000 C5 #11 0.503 N2 #12 -0.853 H1 #13 0.450 H2 #14 0.450 H3 #15 0.450 H4 #16 0.450 H5 #17 0.450 H12 #18 0.000 H13 #19 0.000 H14 #20 0.000 H15 #21 0.000 H16 #22 0.000 H17 #23 0.000 H18 #24 0.000 H19 #25 0.000 H20 #26 0.000 H21 #27 0.000 + # fchar S1 #1 0.000 P1 #2 0.000 O1 #3 -0.667 O2 #4 -0.667 O3 #5 -0.667 C1 #6 0.000 C2 #7 0.000 N1 #8 1.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 N2 #12 1.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H12 #18 0.000 H13 #19 0.000 H14 #20 0.000 H15 #21 0.000 H16 #22 0.000 H17 #23 0.000 H18 #24 0.000 H19 #25 0.000 H20 #26 0.000 H21 #27 0.000 +model FUXZED + # ty S1 #1 18 O1 #2 32 O2 #3 32 O3 #4 6 O4 #5 6 N1 #6 42 N2 #7 42 C1 #8 2 C2 #9 2 C3 #10 2 C4 #11 2 C5 #12 4 C6 #13 1 C7 #14 4 C8 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 + # symb S1 #1 SO2 O1 #2 O2S O2 #3 O2S O3 #4 OC=C O4 #5 OC=C N1 #6 NSP N2 #7 NSP C1 #8 C=C C2 #9 C=C C3 #10 C=C C4 #11 C=C C5 #12 CSP C6 #13 CR C7 #14 CSP C8 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC + # char S1 #1 1.334 O1 #2 -0.650 O2 #3 -0.650 O3 #4 -0.357 O4 #5 -0.357 N1 #6 -0.557 N2 #7 -0.557 C1 #8 0.048 C2 #9 -0.073 C3 #10 0.048 C4 #11 -0.073 C5 #12 0.492 C6 #13 0.280 C7 #14 0.492 C8 #15 0.280 H1 #16 0.150 H2 #17 0.150 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 N1 #6 0.000 N2 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 +model GADHEY RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 40 N2 #2 34 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 C11 #13 1 C12 #14 1 C13 #15 1 C14 #16 1 H1 #17 36 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 H14 #30 5 H15 #31 5 H16 #32 5 H17 #33 5 H18 #34 5 H19 #35 5 + # symb N1 #1 NC=C N2 #2 NR+ C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB C11 #13 CR C12 #14 CR C13 #15 CR C14 #16 CR H1 #17 HNR+ H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC H14 #30 HC H15 #31 HC H16 #32 HC H17 #33 HC H18 #34 HC H19 #35 HC + # char N1 #1 -0.838 N2 #2 -0.820 C1 #3 0.100 C2 #4 -0.150 C3 #5 -0.150 C4 #6 -0.150 C5 #7 0.000 C6 #8 0.000 C7 #9 0.364 C8 #10 -0.150 C9 #11 -0.150 C10 #12 -0.150 C11 #13 0.369 C12 #14 0.369 C13 #15 0.503 C14 #16 0.503 H1 #17 0.450 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.150 H6 #22 0.150 H7 #23 0.150 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H17 #33 0.000 H18 #34 0.000 H19 #35 0.000 + # fchar N1 #1 0.000 N2 #2 1.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 C13 #15 0.000 C14 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H17 #33 0.000 H18 #34 0.000 H19 #35 0.000 +model GAFNUW RING 1 HAS 3 SUBRINGS SUBRING 1 has 0 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 6 PI electrons SUBRING 3 IS AROMATIC + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 37 C6 #6 37 N1 #7 69 C7 #8 37 C8 #9 37 C9 #10 37 C10 #11 1 O1 #12 6 C11 #13 3 O2 #14 7 C12 #15 1 N2 #16 45 O3 #17 32 O4 #18 32 O5 #19 32 H1 #20 5 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 5 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 CB C6 #6 CB N1 #7 NPOX C7 #8 CB C8 #9 CB C9 #10 CB C10 #11 CR O1 #12 OC=O C11 #13 COO O2 #14 O=CO C12 #15 CR N2 #16 NO2 O3 #17 O2N O4 #18 O2N O5 #19 OXN H1 #20 HC H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HC + # char C1 #1 0.143 C2 #2 0.280 C3 #3 0.000 C4 #4 0.143 C5 #5 -0.143 C6 #6 -0.060 N1 #7 0.571 C7 #8 0.223 C8 #9 -0.150 C9 #10 -0.143 C10 #11 0.000 O1 #12 -0.430 C11 #13 0.659 O2 #14 -0.570 C12 #15 0.061 N2 #16 0.907 O3 #17 -0.520 O4 #18 -0.520 O5 #19 -0.750 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.150 H7 #26 0.150 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 O1 #12 0.000 C11 #13 0.000 O2 #14 0.000 C12 #15 0.000 N2 #16 0.000 O3 #17 0.000 O4 #18 0.000 O5 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 +model GAHPIO + # ty O1 #1 7 O2 #2 6 O3 #3 6 O4 #4 7 N1 #5 10 C1 #6 3 C2 #7 1 C3 #8 1 C4 #9 1 C5 #10 3 C6 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 H9 #20 5 H10 #21 24 H11 #22 21 + # symb O1 #1 O=CO O2 #2 OC=O O3 #3 -O- O4 #4 O=CN N1 #5 NC=O C1 #6 COO C2 #7 CR C3 #8 CR C4 #9 CR C5 #10 C=ON C6 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC H9 #20 HC H10 #21 HOCO H11 #22 HO + # char O1 #1 -0.570 O2 #2 -0.650 O3 #3 -0.435 O4 #4 -0.570 N1 #5 -0.325 C1 #6 0.659 C2 #7 0.361 C3 #8 0.000 C4 #9 0.000 C5 #10 0.569 C6 #11 0.061 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.500 H11 #22 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 N1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 H11 #22 0.000 +model GAJTEQ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 O3 #4 32 N1 #5 58 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 + # symb S1 #1 SO3 O1 #2 O3S O2 #3 O3S O3 #4 O3S N1 #5 NPD+ C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC + # char S1 #1 1.820 O1 #2 -0.817 O2 #3 -0.817 O3 #4 -0.817 N1 #5 -0.092 C1 #6 0.211 C2 #7 -0.150 C3 #8 -0.150 C4 #9 -0.150 C5 #10 0.211 H1 #11 0.150 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 H5 #15 0.150 + # fchar S1 #1 0.000 O1 #2 -0.333 O2 #3 -0.333 O3 #4 -0.333 N1 #5 1.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 +model GAKGOO RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 7 SUBRING 2 has 4 PI electrons PI PAIR ON SP2-N 7 SUBRING 3 has 4 PI electrons + # ty O1 #1 6 C2 #2 3 O2 #3 7 C3 #4 2 C31 #5 1 C32 #6 2 N4 #7 40 C5 #8 1 C6 #9 1 C7 #10 1 C8 #11 2 C81 #12 2 C9 #13 2 C91 #14 1 C92 #15 2 H311 #16 5 H312 #17 5 H313 #18 5 H51 #19 5 H52 #20 5 H61 #21 5 H62 #22 5 H71 #23 5 H72 #24 5 H8 #25 5 H911 #26 5 H912 #27 5 H913 #28 5 + # symb O1 #1 OC=O C2 #2 COO O2 #3 O=CO C3 #4 C=C C31 #5 CR C32 #6 C=C N4 #7 NC=C C5 #8 CR C6 #9 CR C7 #10 CR C8 #11 C=C C81 #12 C=C C9 #13 C=C C91 #14 CR C92 #15 C=C H311 #16 HC H312 #17 HC H313 #18 HC H51 #19 HC H52 #20 HC H61 #21 HC H62 #22 HC H71 #23 HC H72 #24 HC H8 #25 HC H911 #26 HC H912 #27 HC H913 #28 HC + # char O1 #1 -0.227 C2 #2 0.706 O2 #3 -0.570 C3 #4 -0.124 C31 #5 0.138 C32 #6 0.100 N4 #7 -0.569 C5 #8 0.369 C6 #9 0.000 C7 #10 0.138 C8 #11 -0.288 C81 #12 0.100 C9 #13 -0.138 C91 #14 0.138 C92 #15 0.077 H311 #16 0.000 H312 #17 0.000 H313 #18 0.000 H51 #19 0.000 H52 #20 0.000 H61 #21 0.000 H62 #22 0.000 H71 #23 0.000 H72 #24 0.000 H8 #25 0.150 H911 #26 0.000 H912 #27 0.000 H913 #28 0.000 + # fchar O1 #1 0.000 C2 #2 0.000 O2 #3 0.000 C3 #4 0.000 C31 #5 0.000 C32 #6 0.000 N4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C81 #12 0.000 C9 #13 0.000 C91 #14 0.000 C92 #15 0.000 H311 #16 0.000 H312 #17 0.000 H313 #18 0.000 H51 #19 0.000 H52 #20 0.000 H61 #21 0.000 H62 #22 0.000 H71 #23 0.000 H72 #24 0.000 H8 #25 0.000 H911 #26 0.000 H912 #27 0.000 H913 #28 0.000 +model GAKNEL RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 8 5 EXOCYCLIC MULT BOND 13 6 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty CL1 #1 12 O11 #2 59 O21 #3 32 O31 #4 32 N11 #5 65 N21 #6 65 N31 #7 45 C11 #8 64 C21 #9 37 C31 #10 37 C41 #11 37 C51 #12 37 C61 #13 64 H31 #14 5 H41 #15 5 + # symb CL1 #1 CL O11 #2 OFUR O21 #3 O2N O31 #4 O2N N11 #5 N5A N21 #6 N5A N31 #7 NO2 C11 #8 C5B C21 #9 CB C31 #10 CB C41 #11 CB C51 #12 CB C61 #13 C5B H31 #14 HC H41 #15 HC + # char CL1 #1 -0.177 O11 #2 0.242 O21 #3 -0.520 O31 #4 -0.520 N11 #5 -0.410 N21 #6 -0.410 N31 #7 0.907 C11 #8 0.289 C21 #9 0.133 C31 #10 -0.150 C41 #11 -0.150 C51 #12 0.177 C61 #13 0.289 H31 #14 0.150 H41 #15 0.150 + # fchar CL1 #1 0.000 O11 #2 0.000 O21 #3 0.000 O31 #4 0.000 N11 #5 0.000 N21 #6 0.000 N31 #7 0.000 C11 #8 0.000 C21 #9 0.000 C31 #10 0.000 C41 #11 0.000 C51 #12 0.000 C61 #13 0.000 H31 #14 0.000 H41 #15 0.000 +model GAKNIP RING 1 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons + # ty S1 #1 17 S2 #2 17 O1 #3 7 O2 #4 7 C1 #5 2 C2 #6 1 C3 #7 1 C4 #8 1 C5 #9 2 C6 #10 1 H21 #11 5 H22 #12 5 H31 #13 5 H32 #14 5 H41 #15 5 H42 #16 5 H51 #17 5 H61 #18 5 H62 #19 5 H63 #20 5 + # symb S1 #1 S=O S2 #2 S=O O1 #3 O=S O2 #4 O=S C1 #5 C=C C2 #6 CR C3 #7 CR C4 #8 CR C5 #9 C=C C6 #10 CR H21 #11 HC H22 #12 HC H31 #13 HC H32 #14 HC H41 #15 HC H42 #16 HC H51 #17 HC H61 #18 HC H62 #19 HC H63 #20 HC + # char S1 #1 0.251 S2 #2 0.251 O1 #3 -0.500 O2 #4 -0.500 C1 #5 0.112 C2 #6 0.194 C3 #7 0.000 C4 #8 0.194 C5 #9 -0.288 C6 #10 0.138 H21 #11 0.000 H22 #12 0.000 H31 #13 0.000 H32 #14 0.000 H41 #15 0.000 H42 #16 0.000 H51 #17 0.150 H61 #18 0.000 H62 #19 0.000 H63 #20 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 H21 #11 0.000 H22 #12 0.000 H31 #13 0.000 H32 #14 0.000 H41 #15 0.000 H42 #16 0.000 H51 #17 0.000 H61 #18 0.000 H62 #19 0.000 H63 #20 0.000 +model GAKPEN RING 1 HAS 2 SUBRINGS SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 18 C2 #2 2 C3 #3 2 C31 #4 37 C4 #5 37 C5 #6 37 C6 #7 37 C7 #8 37 C71 #9 37 C21 #10 1 O1 #11 32 O2 #12 32 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H211 #18 5 H212 #19 5 H213 #20 5 + # symb S1 #1 SO2 C2 #2 C=C C3 #3 C=C C31 #4 CB C4 #5 CB C5 #6 CB C6 #7 CB C7 #8 CB C71 #9 CB C21 #10 CR O1 #11 O2S O2 #12 O2S H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H211 #18 HC H212 #19 HC H213 #20 HC + # char S1 #1 1.326 C2 #2 -0.155 C3 #3 -0.178 C31 #4 0.028 C4 #5 -0.150 C5 #6 -0.150 C6 #7 -0.150 C7 #8 -0.150 C71 #9 -0.009 C21 #10 0.138 O1 #11 -0.650 O2 #12 -0.650 H3 #13 0.150 H4 #14 0.150 H5 #15 0.150 H6 #16 0.150 H7 #17 0.150 H211 #18 0.000 H212 #19 0.000 H213 #20 0.000 + # fchar S1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C31 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C71 #9 0.000 C21 #10 0.000 O1 #11 0.000 O2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H211 #18 0.000 H212 #19 0.000 H213 #20 0.000 +model GAKTAN RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 2 PI electrons PI PAIR ON O OR S 2 SUBRING 2 has 6 PI electrons PI PAIR ON O OR S 3 SUBRING 3 has 6 PI electrons SUBRING 2 IS AROMATIC SUBRING 3 IS AROMATIC EXOCYCLIC MULT BOND 6 9 EXOCYCLIC MULT BOND 7 8 EXOCYCLIC MULT BOND 4 11 EXOCYCLIC MULT BOND 5 10 SUBRING 1 ALSO RECOGNIZED AS AROMATIC + # ty S1 #1 44 S2 #2 44 S3 #3 44 C1 #4 78 C2 #5 64 C3 #6 64 C4 #7 78 C5 #8 63 C6 #9 63 C7 #10 63 C8 #11 63 H5 #12 5 H6 #13 5 H7 #14 5 H8 #15 5 + # symb S1 #1 STHI S2 #2 STHI S3 #3 STHI C1 #4 C5 C2 #5 C5B C3 #6 C5B C4 #7 C5 C5 #8 C5A C6 #9 C5A C7 #10 C5A C8 #11 C5A H5 #12 HC H6 #13 HC H7 #14 HC H8 #15 HC + # char S1 #1 -0.138 S2 #2 -0.080 S3 #3 -0.080 C1 #4 0.094 C2 #5 -0.013 C3 #6 -0.013 C4 #7 0.094 C5 #8 -0.122 C6 #9 -0.110 C7 #10 -0.110 C8 #11 -0.122 H5 #12 0.150 H6 #13 0.150 H7 #14 0.150 H8 #15 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 H8 #15 0.000 +model GANHUY RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty O1 #1 7 O2 #2 7 O4 #3 6 C1 #4 3 C2 #5 3 C3 #6 30 C4 #7 30 H3 #8 5 H40 #9 29 + # symb O1 #1 O=CR O2 #2 O=CR O4 #3 OC=C C1 #4 C=OR C2 #5 C=OR C3 #6 CE4R C4 #7 CE4R H3 #8 HC H40 #9 HOCC + # char O1 #1 -0.570 O2 #2 -0.570 O4 #3 -0.527 C1 #4 0.641 C2 #5 0.641 C3 #6 -0.221 C4 #7 0.006 H3 #8 0.150 H40 #9 0.450 + # fchar O1 #1 0.000 O2 #2 0.000 O4 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 H3 #8 0.000 H40 #9 0.000 +model GAPMEP RING 1 HAS 2 SUBRINGS SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty BR1 #1 13 S1 #2 18 O1 #3 32 O2 #4 32 C2 #5 2 C3 #6 2 C31 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 C71 #12 37 H3 #13 5 H7 #14 5 H6 #15 5 H5 #16 5 H4 #17 5 + # symb BR1 #1 BR S1 #2 SO2 O1 #3 O2S O2 #4 O2S C2 #5 C=C C3 #6 C=C C31 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB C71 #12 CB H3 #13 HC H7 #14 HC H6 #15 HC H5 #16 HC H4 #17 HC + # char BR1 #1 -0.110 S1 #2 1.326 O1 #3 -0.650 O2 #4 -0.650 C2 #5 0.093 C3 #6 -0.178 C31 #7 0.028 C4 #8 -0.150 C5 #9 -0.150 C6 #10 -0.150 C7 #11 -0.150 C71 #12 -0.009 H3 #13 0.150 H7 #14 0.150 H6 #15 0.150 H5 #16 0.150 H4 #17 0.150 + # fchar BR1 #1 0.000 S1 #2 0.000 O1 #3 0.000 O2 #4 0.000 C2 #5 0.000 C3 #6 0.000 C31 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C71 #12 0.000 H3 #13 0.000 H7 #14 0.000 H6 #15 0.000 H5 #16 0.000 H4 #17 0.000 +model GAVKOD RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 59 O2 #2 32 N1 #3 65 N2 #4 82 N3 #5 40 C1 #6 64 C2 #7 64 C3 #8 1 H1 #9 28 H2 #10 28 H31 #11 5 H32 #12 5 H33 #13 5 + # symb O1 #1 OFUR O2 #2 OXN N1 #3 N5A N2 #4 N5AX N3 #5 NC=N C1 #6 C5B C2 #7 C5B C3 #8 CR H1 #9 HNCN H2 #10 HNCN H31 #11 HC H32 #12 HC H33 #13 HC + # char O1 #1 -0.117 O2 #2 -0.633 N1 #3 -0.410 N2 #4 0.953 N3 #5 -0.883 C1 #6 0.108 C2 #7 0.001 C3 #8 0.181 H1 #9 0.400 H2 #10 0.400 H31 #11 0.000 H32 #12 0.000 H33 #13 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 H1 #9 0.000 H2 #10 0.000 H31 #11 0.000 H32 #12 0.000 H33 #13 0.000 +model GAVMEV RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 63 S2 #2 44 C3 #3 63 N4 #4 66 C5 #5 64 O6 #6 6 C7 #7 1 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 37 C13 #13 37 H6 #14 29 H72 #15 5 H9 #16 5 H11 #17 5 H13 #18 5 H71 #19 5 H73 #20 5 H10 #21 5 H12 #22 5 + # symb C1 #1 C5A S2 #2 STHI C3 #3 C5A N4 #4 N5B C5 #5 C5B O6 #6 OC=C C7 #7 CR C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 CB C13 #13 CB H6 #14 HOCC H72 #15 HC H9 #16 HC H11 #17 HC H13 #18 HC H71 #19 HC H73 #20 HC H10 #21 HC H12 #22 HC + # char C1 #1 -0.013 S2 #2 -0.080 C3 #3 0.198 N4 #4 -0.565 C5 #5 0.289 O6 #6 -0.512 C7 #7 0.180 C8 #8 0.053 C9 #9 -0.150 C10 #10 -0.150 C11 #11 -0.150 C12 #12 -0.150 C13 #13 -0.150 H6 #14 0.450 H72 #15 0.000 H9 #16 0.150 H11 #17 0.150 H13 #18 0.150 H71 #19 0.000 H73 #20 0.000 H10 #21 0.150 H12 #22 0.150 + # fchar C1 #1 0.000 S2 #2 0.000 C3 #3 0.000 N4 #4 0.000 C5 #5 0.000 O6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 C13 #13 0.000 H6 #14 0.000 H72 #15 0.000 H9 #16 0.000 H11 #17 0.000 H13 #18 0.000 H71 #19 0.000 H73 #20 0.000 H10 #21 0.000 H12 #22 0.000 +model GAWWOQ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 4 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons + # ty P1 #1 25 O1 #2 6 O2 #3 32 O3 #4 6 N1 #5 8 O4 #6 7 C1 #7 1 C2 #8 1 C3 #9 1 C4 #10 3 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 C9 #15 37 C10 #16 37 C11 #17 1 H11 #18 5 H12 #19 5 H21 #20 5 H22 #21 5 H31 #22 5 H32 #23 5 H111 #24 5 H112 #25 5 H113 #26 5 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 5 H10 #31 5 + # symb P1 #1 PO3 O1 #2 OPO2 O2 #3 OP O3 #4 OPO2 N1 #5 NR O4 #6 O=CO C1 #7 CR C2 #8 CR C3 #9 CR C4 #10 COO C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB C9 #15 CB C10 #16 CB C11 #17 CR H11 #18 HC H12 #19 HC H21 #20 HC H22 #21 HC H31 #22 HC H32 #23 HC H111 #24 HC H112 #25 HC H113 #26 HC H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HC H10 #31 HC + # char P1 #1 1.510 O1 #2 -0.421 O2 #3 -0.700 O3 #4 -0.551 N1 #5 -0.808 O4 #6 -0.570 C1 #7 0.270 C2 #8 0.000 C3 #9 0.280 C4 #10 0.634 C5 #11 0.086 C6 #12 -0.150 C7 #13 -0.150 C8 #14 -0.150 C9 #15 -0.150 C10 #16 -0.150 C11 #17 0.270 H11 #18 0.000 H12 #19 0.000 H21 #20 0.000 H22 #21 0.000 H31 #22 0.000 H32 #23 0.000 H111 #24 0.000 H112 #25 0.000 H113 #26 0.000 H6 #27 0.150 H7 #28 0.150 H8 #29 0.150 H9 #30 0.150 H10 #31 0.150 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 O4 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 C11 #17 0.000 H11 #18 0.000 H12 #19 0.000 H21 #20 0.000 H22 #21 0.000 H31 #22 0.000 H32 #23 0.000 H111 #24 0.000 H112 #25 0.000 H113 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 +model GEHBOK RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 20 C2 #2 20 C3 #3 20 C4 #4 20 C5 #5 41 O6 #6 32 O7 #7 32 N8 #8 34 C9 #9 41 O10 #10 32 O11 #11 32 S12 #12 18 O13 #13 32 O14 #14 32 C15 #15 37 C16 #16 37 C17 #17 37 C18 #18 37 C19 #19 37 C20 #20 37 H21 #21 5 H22 #22 5 H23 #23 5 H24 #24 5 H25 #25 36 H26 #26 36 H27 #27 36 H28 #28 5 H29 #29 5 H30 #30 5 H31 #31 5 H32 #32 5 + # symb C1 #1 CR4R C2 #2 CR4R C3 #3 CR4R C4 #4 CR4R C5 #5 CO2M O6 #6 O2CM O7 #7 O2CM N8 #8 NR+ C9 #9 CO2M O10 #10 O2CM O11 #11 O2CM S12 #12 SO2 O13 #13 O2S O14 #14 O2S C15 #15 CB C16 #16 CB C17 #17 CB C18 #18 CB C19 #19 CB C20 #20 CB H21 #21 HC H22 #22 HC H23 #23 HC H24 #24 HC H25 #25 HNR+ H26 #26 HNR+ H27 #27 HNR+ H28 #28 HC H29 #29 HC H30 #30 HC H31 #31 HC H32 #32 HC + # char C1 #1 0.028 C2 #2 0.000 C3 #3 0.401 C4 #4 0.000 C5 #5 0.871 O6 #6 -0.900 O7 #7 -0.900 N8 #8 -0.822 C9 #9 0.871 O10 #10 -0.900 O11 #11 -0.900 S12 #12 1.210 O13 #13 -0.650 O14 #14 -0.650 C15 #15 -0.009 C16 #16 -0.150 C17 #17 -0.150 C18 #18 -0.150 C19 #19 -0.150 C20 #20 -0.150 H21 #21 0.000 H22 #22 0.000 H23 #23 0.000 H24 #24 0.000 H25 #25 0.450 H26 #26 0.450 H27 #27 0.450 H28 #28 0.150 H29 #29 0.150 H30 #30 0.150 H31 #31 0.150 H32 #32 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 O6 #6 -0.500 O7 #7 -0.500 N8 #8 1.000 C9 #9 0.000 O10 #10 -0.500 O11 #11 -0.500 S12 #12 0.000 O13 #13 0.000 O14 #14 0.000 C15 #15 0.000 C16 #16 0.000 C17 #17 0.000 C18 #18 0.000 C19 #19 0.000 C20 #20 0.000 H21 #21 0.000 H22 #22 0.000 H23 #23 0.000 H24 #24 0.000 H25 #25 0.000 H26 #26 0.000 H27 #27 0.000 H28 #28 0.000 H29 #29 0.000 H30 #30 0.000 H31 #31 0.000 H32 #32 0.000 +model GEHPUE + # ty S1 #1 15 S2 #2 15 S3 #3 15 O1 #4 7 O2 #5 7 O3 #6 7 O4 #7 7 N1 #8 10 N2 #9 10 N3 #10 10 N4 #11 10 C1 #12 3 C2 #13 3 C3 #14 3 C4 #15 3 H1 #16 28 H2 #17 28 H3 #18 28 H4 #19 28 H5 #20 28 H6 #21 28 + # symb S1 #1 S S2 #2 S S3 #3 S O1 #4 O=CN O2 #5 O=CN O3 #6 O=CN O4 #7 O=CN N1 #8 NC=O N2 #9 NC=O N3 #10 NC=O N4 #11 NC=O C1 #12 C=ON C2 #13 C=ON C3 #14 C=ON C4 #15 C=ON H1 #16 HNCO H2 #17 HNCO H3 #18 HNCO H4 #19 HNCO H5 #20 HNCO H6 #21 HNCO + # char S1 #1 0.008 S2 #2 0.000 S3 #3 0.008 O1 #4 -0.570 O2 #5 -0.570 O3 #6 -0.570 O4 #7 -0.570 N1 #8 -0.438 N2 #9 -0.800 N3 #10 -0.438 N4 #11 -0.800 C1 #12 0.630 C2 #13 0.630 C3 #14 0.630 C4 #15 0.630 H1 #16 0.370 H2 #17 0.370 H3 #18 0.370 H4 #19 0.370 H5 #20 0.370 H6 #21 0.370 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 O1 #4 0.000 O2 #5 0.000 O3 #6 0.000 O4 #7 0.000 N1 #8 0.000 N2 #9 0.000 N3 #10 0.000 N4 #11 0.000 C1 #12 0.000 C2 #13 0.000 C3 #14 0.000 C4 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 +model GEHXEW RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 11 SUBRING 2 has 4 PI electrons SUBRING 3 has 0 PI electrons + # ty CL1 #1 12 N3 #2 40 C4 #3 3 O1 #4 6 N1 #5 9 C7 #6 1 C8 #7 1 C9 #8 1 C1 #9 1 N2 #10 9 N4 #11 40 CL2 #12 12 O4 #13 6 C15 #14 1 C16 #15 1 C10 #16 3 C11 #17 1 C12 #18 1 C13 #19 1 C14 #20 1 H81 #21 5 H82 #22 5 H91 #23 5 H92 #24 5 H93 #25 5 H111 #26 5 H112 #27 5 H121 #28 5 H122 #29 5 H131 #30 5 H132 #31 5 H141 #32 5 H142 #33 5 H151 #34 5 H152 #35 5 H161 #36 5 H162 #37 5 H163 #38 5 + # symb CL1 #1 CL N3 #2 NC=N C4 #3 C=N O1 #4 OC=N N1 #5 N=C C7 #6 CR C8 #7 CR C9 #8 CR C1 #9 CR N2 #10 N=C N4 #11 NC=N CL2 #12 CL O4 #13 OC=N C15 #14 CR C16 #15 CR C10 #16 C=N C11 #17 CR C12 #18 CR C13 #19 CR C14 #20 CR H81 #21 HC H82 #22 HC H91 #23 HC H92 #24 HC H93 #25 HC H111 #26 HC H112 #27 HC H121 #28 HC H122 #29 HC H131 #30 HC H132 #31 HC H141 #32 HC H142 #33 HC H151 #34 HC H152 #35 HC H161 #36 HC H162 #37 HC H163 #38 HC + # char CL1 #1 -0.040 N3 #2 -0.379 C4 #3 0.650 O1 #4 -0.430 N1 #5 -0.696 C7 #6 0.615 C8 #7 0.280 C9 #8 0.000 C1 #9 0.615 N2 #10 -0.696 N4 #11 -0.379 CL2 #12 -0.040 O4 #13 -0.430 C15 #14 0.280 C16 #15 0.000 C10 #16 0.650 C11 #17 0.000 C12 #18 0.000 C13 #19 0.000 C14 #20 0.000 H81 #21 0.000 H82 #22 0.000 H91 #23 0.000 H92 #24 0.000 H93 #25 0.000 H111 #26 0.000 H112 #27 0.000 H121 #28 0.000 H122 #29 0.000 H131 #30 0.000 H132 #31 0.000 H141 #32 0.000 H142 #33 0.000 H151 #34 0.000 H152 #35 0.000 H161 #36 0.000 H162 #37 0.000 H163 #38 0.000 + # fchar CL1 #1 0.000 N3 #2 0.000 C4 #3 0.000 O1 #4 0.000 N1 #5 0.000 C7 #6 0.000 C8 #7 0.000 C9 #8 0.000 C1 #9 0.000 N2 #10 0.000 N4 #11 0.000 CL2 #12 0.000 O4 #13 0.000 C15 #14 0.000 C16 #15 0.000 C10 #16 0.000 C11 #17 0.000 C12 #18 0.000 C13 #19 0.000 C14 #20 0.000 H81 #21 0.000 H82 #22 0.000 H91 #23 0.000 H92 #24 0.000 H93 #25 0.000 H111 #26 0.000 H112 #27 0.000 H121 #28 0.000 H122 #29 0.000 H131 #30 0.000 H132 #31 0.000 H141 #32 0.000 H142 #33 0.000 H151 #34 0.000 H152 #35 0.000 H161 #36 0.000 H162 #37 0.000 H163 #38 0.000 +model GEJYOJ + # ty P1 #1 75 F1 #2 11 F2 #3 11 F3 #4 11 F4 #5 11 N1 #6 40 C1 #7 1 C2 #8 3 C3 #9 1 C4 #10 1 H31 #11 5 H32 #12 5 H33 #13 5 H41 #14 5 H42 #15 5 H43 #16 5 + # symb P1 #1 -P=C F1 #2 F F2 #3 F F3 #4 F F4 #5 F N1 #6 NC=P C1 #7 CR C2 #8 C=P C3 #9 CR C4 #10 CR H31 #11 HC H32 #12 HC H33 #13 HC H41 #14 HC H42 #15 HC H43 #16 HC + # char P1 #1 -0.502 F1 #2 -0.222 F2 #3 -0.340 F3 #4 -0.340 F4 #5 -0.340 N1 #6 -0.788 C1 #7 1.275 C2 #8 0.519 C3 #9 0.369 C4 #10 0.369 H31 #11 0.000 H32 #12 0.000 H33 #13 0.000 H41 #14 0.000 H42 #15 0.000 H43 #16 0.000 + # fchar P1 #1 0.000 F1 #2 0.000 F2 #3 0.000 F3 #4 0.000 F4 #5 0.000 N1 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 H31 #11 0.000 H32 #12 0.000 H33 #13 0.000 H41 #14 0.000 H42 #15 0.000 H43 #16 0.000 +model GEKXEZ + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 N1 #5 8 N2 #6 8 H1 #7 23 H2 #8 23 H3 #9 23 H21 #10 5 H22 #11 5 H23 #12 5 H31 #13 5 H32 #14 5 H33 #15 5 H41 #16 5 H42 #17 5 H43 #18 5 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR N1 #5 NR N2 #6 NR H1 #7 HNR H2 #8 HNR H3 #9 HNR H21 #10 HC H22 #11 HC H23 #12 HC H31 #13 HC H32 #14 HC H33 #15 HC H41 #16 HC H42 #17 HC H43 #18 HC + # char C1 #1 0.270 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N1 #5 -0.630 N2 #6 -0.720 H1 #7 0.360 H2 #8 0.360 H3 #9 0.360 H21 #10 0.000 H22 #11 0.000 H23 #12 0.000 H31 #13 0.000 H32 #14 0.000 H33 #15 0.000 H41 #16 0.000 H42 #17 0.000 H43 #18 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N1 #5 0.000 N2 #6 0.000 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H21 #10 0.000 H22 #11 0.000 H23 #12 0.000 H31 #13 0.000 H32 #14 0.000 H33 #15 0.000 H41 #16 0.000 H42 #17 0.000 H43 #18 0.000 +model GEMCEG RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty C1 #1 22 C2 #2 22 C3 #3 22 C4 #4 4 C5 #5 1 C6 #6 1 C7 #7 4 N1 #8 42 N2 #9 42 H1 #10 5 H2 #11 5 H3 #12 5 H4 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 H8 #17 5 + # symb C1 #1 CR3R C2 #2 CR3R C3 #3 CR3R C4 #4 CSP C5 #5 CR C6 #6 CR C7 #7 CSP N1 #8 NSP N2 #9 NSP H1 #10 HC H2 #11 HC H3 #12 HC H4 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC H8 #17 HC + # char C1 #1 0.010 C2 #2 0.010 C3 #3 -0.200 C4 #4 0.452 C5 #5 0.095 C6 #6 0.095 C7 #7 0.452 N1 #8 -0.557 N2 #9 -0.557 H1 #10 0.100 H2 #11 0.100 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 N1 #8 0.000 N2 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 +model GEMCOQ RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty C1 #1 22 C2 #2 22 C3 #3 22 C4 #4 4 C5 #5 1 C6 #6 1 C7 #7 4 N1 #8 42 N2 #9 42 O1 #10 6 O2 #11 6 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 + # symb C1 #1 CR3R C2 #2 CR3R C3 #3 CR3R C4 #4 CSP C5 #5 CR C6 #6 CR C7 #7 CSP N1 #8 NSP N2 #9 NSP O1 #10 OR O2 #11 OR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC + # char C1 #1 0.253 C2 #2 0.253 C3 #3 -0.200 C4 #4 0.452 C5 #5 0.280 C6 #6 0.280 C7 #7 0.452 N1 #8 -0.557 N2 #9 -0.557 O1 #10 -0.428 O2 #11 -0.428 H1 #12 0.100 H2 #13 0.100 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 N1 #8 0.000 N2 #9 0.000 O1 #10 0.000 O2 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 +model GEMDAD RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty C1 #1 22 C2 #2 22 C3 #3 22 C4 #4 4 N1 #5 42 N2 #6 8 C5 #7 1 C6 #8 1 C7 #9 4 N3 #10 42 N4 #11 8 C8 #12 1 C9 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 H13 #26 5 H14 #27 5 + # symb C1 #1 CR3R C2 #2 CR3R C3 #3 CR3R C4 #4 CSP N1 #5 NSP N2 #6 NR C5 #7 CR C6 #8 CR C7 #9 CSP N3 #10 NSP N4 #11 NR C8 #12 CR C9 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC H13 #26 HC H14 #27 HC + # char C1 #1 0.263 C2 #2 0.263 C3 #3 -0.200 C4 #4 0.452 N1 #5 -0.557 N2 #6 -0.698 C5 #7 0.270 C6 #8 0.270 C7 #9 0.452 N3 #10 -0.557 N4 #11 -0.698 C8 #12 0.270 C9 #13 0.270 H1 #14 0.100 H2 #15 0.100 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N1 #5 0.000 N2 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 N3 #10 0.000 N4 #11 0.000 C8 #12 0.000 C9 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 +model GERCUB RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 9 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty S1 #1 18 C1 #2 80 C2 #3 78 C3 #4 78 C4 #5 37 C5 #6 37 C6 #7 37 C7 #8 37 N1 #9 81 N2 #10 81 O1 #11 32 O2 #12 32 O3 #13 32 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 36 H6 #19 36 + # symb S1 #1 SO3 C1 #2 CIM+ C2 #3 C5 C3 #4 C5 C4 #5 CB C5 #6 CB C6 #7 CB C7 #8 CB N1 #9 NIM+ N2 #10 NIM+ O1 #11 O3S O2 #12 O3S O3 #13 O3S H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HIM+ H6 #19 HIM+ + # char S1 #1 1.476 C1 #2 0.774 C2 #3 0.309 C3 #4 0.309 C4 #5 -0.109 C5 #6 -0.150 C6 #7 -0.150 C7 #8 -0.109 N1 #9 -0.700 N2 #10 -0.700 O1 #11 -0.817 O2 #12 -0.817 O3 #13 -0.817 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.450 H6 #19 0.450 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 N1 #9 0.500 N2 #10 0.500 O1 #11 -0.333 O2 #12 -0.333 O3 #13 -0.333 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 +model GESCIQ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C1 #2 63 N1 #3 81 C2 #4 64 C3 #5 1 C4 #6 63 C5 #7 1 C6 #8 1 O1 #9 6 C7 #10 1 N2 #11 38 C8 #12 37 C9 #13 1 N3 #14 38 C10 #15 37 N4 #16 40 C11 #17 37 C12 #18 37 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 21 H10 #28 5 H11 #29 5 H12 #30 5 H13 #31 28 H14 #32 28 H15 #33 5 H16 #34 5 H17 #35 5 + # symb S1 #1 STHI C1 #2 C5A N1 #3 N5B+ C2 #4 C5B C3 #5 CR C4 #6 C5A C5 #7 CR C6 #8 CR O1 #9 OR C7 #10 CR N2 #11 NPYD C8 #12 CB C9 #13 CR N3 #14 NPYD C10 #15 CB N4 #16 NC=N C11 #17 CB C12 #18 CB H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HOR H10 #28 HC H11 #29 HC H12 #30 HC H13 #31 HNCN H14 #32 HNCN H15 #33 HC H16 #34 HC H17 #35 HC + # char S1 #1 -0.080 C1 #2 0.224 N1 #3 -0.181 C2 #4 0.152 C3 #5 0.181 C4 #6 -0.140 C5 #7 0.180 C6 #8 0.280 O1 #9 -0.680 C7 #10 0.657 N2 #11 -0.620 C8 #12 0.477 C9 #13 0.143 N3 #14 -0.620 C10 #15 0.410 N4 #16 -0.900 C11 #17 -0.143 C12 #18 0.160 H1 #19 0.150 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.400 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.400 H14 #32 0.400 H15 #33 0.150 H16 #34 0.000 H17 #35 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 1.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 O1 #9 0.000 C7 #10 0.000 N2 #11 0.000 C8 #12 0.000 C9 #13 0.000 N3 #14 0.000 C10 #15 0.000 N4 #16 0.000 C11 #17 0.000 C12 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 +model GESNIB RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 22 H2 #8 5 H3 #9 5 H4 #10 5 H5 #11 5 H71 #12 5 H7 #13 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CR3R H2 #8 HC H3 #9 HC H4 #10 HC H5 #11 HC H71 #12 HC H7 #13 HC + # char C1 #1 -0.032 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.032 C7 #7 -0.136 H2 #8 0.150 H3 #9 0.150 H4 #10 0.150 H5 #11 0.150 H71 #12 0.100 H7 #13 0.100 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H71 #12 0.000 H7 #13 0.000 +model GESSUS RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 43 C1 #5 37 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 1 C8 #12 1 C9 #13 1 H2 #14 5 H3 #15 5 H5 #16 5 H6 #17 5 H71 #18 5 H72 #19 5 H73 #20 5 H81 #21 5 H82 #22 5 H83 #23 5 H91 #24 5 H92 #25 5 H93 #26 5 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S N1 #4 NSO2 C1 #5 CB C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CR C8 #12 CR C9 #13 CR H2 #14 HC H3 #15 HC H5 #16 HC H6 #17 HC H71 #18 HC H72 #19 HC H73 #20 HC H81 #21 HC H82 #22 HC H83 #23 HC H91 #24 HC H92 #25 HC H93 #26 HC + # char S1 #1 1.447 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.849 C1 #5 -0.009 C2 #6 -0.150 C3 #7 -0.150 C4 #8 -0.143 C5 #9 -0.150 C6 #10 -0.150 C7 #11 0.143 C8 #12 0.356 C9 #13 0.356 H2 #14 0.150 H3 #15 0.150 H5 #16 0.150 H6 #17 0.150 H71 #18 0.000 H72 #19 0.000 H73 #20 0.000 H81 #21 0.000 H82 #22 0.000 H83 #23 0.000 H91 #24 0.000 H92 #25 0.000 H93 #26 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 H2 #14 0.000 H3 #15 0.000 H5 #16 0.000 H6 #17 0.000 H71 #18 0.000 H72 #19 0.000 H73 #20 0.000 H81 #21 0.000 H82 #22 0.000 H83 #23 0.000 H91 #24 0.000 H92 #25 0.000 H93 #26 0.000 +model GETFIU RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons + # ty C1 #1 3 C2 #2 3 C3 #3 2 C4 #4 2 C5 #5 2 C6 #6 2 N1 #7 53 N2 #8 47 N3 #9 45 N4 #10 45 O1 #11 7 O2 #12 32 O3 #13 32 O4 #14 32 O5 #15 32 H1 #16 5 H2 #17 5 + # symb C1 #1 C=OR C2 #2 C=N C3 #3 C=C C4 #4 C=C C5 #5 C=C C6 #6 C=C N1 #7 =N= N2 #8 NAZT N3 #9 NO2 N4 #10 NO2 O1 #11 O=CR O2 #12 O2N O3 #13 O2N O4 #14 O2N O5 #15 O2N H1 #16 HC H2 #17 HC + # char C1 #1 0.556 C2 #2 -0.001 C3 #3 -0.136 C4 #4 0.204 C5 #5 -0.150 C6 #6 0.219 N1 #7 0.357 N2 #8 -0.370 N3 #9 0.836 N4 #10 0.836 O1 #11 -0.570 O2 #12 -0.520 O3 #13 -0.520 O4 #14 -0.520 O5 #15 -0.520 H1 #16 0.150 H2 #17 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 0.000 N2 #8 0.000 N3 #9 0.000 N4 #10 0.000 O1 #11 0.000 O2 #12 0.000 O3 #13 0.000 O4 #14 0.000 O5 #15 0.000 H1 #16 0.000 H2 #17 0.000 +model GETFOA RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 N1 #7 61 N2 #8 42 N3 #9 45 N4 #10 45 O1 #11 35 O2 #12 32 O3 #13 32 O4 #14 32 O5 #15 32 CL1 #16 12 H1 #17 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB N1 #7 NR% N2 #8 NSP N3 #9 NO2 N4 #10 NO2 O1 #11 OM2 O2 #12 O2N O3 #13 O2N O4 #14 O2N O5 #15 O2N CL1 #16 CL H1 #17 HC + # char C1 #1 -0.171 C2 #2 0.138 C3 #3 -0.150 C4 #4 0.133 C5 #5 0.177 C6 #6 0.133 N1 #7 1.354 N2 #8 -0.492 N3 #9 0.907 N4 #10 0.907 O1 #11 -0.829 O2 #12 -0.520 O3 #13 -0.520 O4 #14 -0.520 O5 #15 -0.520 CL1 #16 -0.177 H1 #17 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 1.000 N2 #8 0.000 N3 #9 0.000 N4 #10 0.000 O1 #11 -1.000 O2 #12 0.000 O3 #13 0.000 O4 #14 0.000 O5 #15 0.000 CL1 #16 0.000 H1 #17 0.000 +model GETJOE RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 3 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 P1 #2 25 S2 #3 72 S3 #4 15 C1 #5 37 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 P1B #16 25 S1B #17 15 S2B #18 72 S3B #19 15 C1B #20 37 C2B #21 37 C6B #22 37 C3B #23 37 H1B #24 5 C5B #25 37 H5B #26 5 C4B #27 37 H2B #28 5 H4B #29 5 H3B #30 5 + # symb S1 #1 S P1 #2 PTET S2 #3 S-P S3 #4 S C1 #5 CB C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC P1B #16 PTET S1B #17 S S2B #18 S-P S3B #19 S C1B #20 CB C2B #21 CB C6B #22 CB C3B #23 CB H1B #24 HC C5B #25 CB H5B #26 HC C4B #27 CB H2B #28 HC H4B #29 HC H3B #30 HC + # char S1 #1 -0.496 P1 #2 1.421 S2 #3 -0.677 S3 #4 -0.350 C1 #5 0.102 C2 #6 -0.150 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 -0.150 H1 #11 0.150 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 H5 #15 0.150 P1B #16 1.421 S1B #17 -0.496 S2B #18 -0.677 S3B #19 -0.350 C1B #20 0.102 C2B #21 -0.150 C6B #22 -0.150 C3B #23 -0.150 H1B #24 0.150 C5B #25 -0.150 H5B #26 0.150 C4B #27 -0.150 H2B #28 0.150 H4B #29 0.150 H3B #30 0.150 + # fchar S1 #1 0.000 P1 #2 0.000 S2 #3 0.000 S3 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 P1B #16 0.000 S1B #17 0.000 S2B #18 0.000 S3B #19 0.000 C1B #20 0.000 C2B #21 0.000 C6B #22 0.000 C3B #23 0.000 H1B #24 0.000 C5B #25 0.000 H5B #26 0.000 C4B #27 0.000 H2B #28 0.000 H4B #29 0.000 H3B #30 0.000 +model GEWTAD RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 4 PI electrons + # ty N1 #1 40 C1 #2 1 C2 #3 3 O1 #4 7 C3 #5 2 C4 #6 2 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 + # symb N1 #1 NC=C C1 #2 CR C2 #3 C=OR O1 #4 O=CR C3 #5 C=C C4 #6 C=C C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC + # char N1 #1 -0.569 C1 #2 0.430 C2 #3 0.495 O1 #4 -0.570 C3 #5 -0.136 C4 #6 -0.050 C5 #7 0.100 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.150 C9 #11 -0.150 C10 #12 -0.150 H1 #13 0.000 H2 #14 0.000 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.150 H7 #19 0.150 H8 #20 0.150 H9 #21 0.150 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O1 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 +model GEXGIZ RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 7 O2 #2 6 O3 #3 6 O4 #4 7 N1 #5 81 N2 #6 81 C1 #7 80 C2 #8 78 C3 #9 78 C4 #10 1 C5 #11 3 C6 #12 1 C7 #13 3 H1 #14 24 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 24 + # symb O1 #1 O=CO O2 #2 OC=O O3 #3 OC=O O4 #4 O=CO N1 #5 NIM+ N2 #6 NIM+ C1 #7 CIM+ C2 #8 C5 C3 #9 C5 C4 #10 CR C5 #11 COO C6 #12 CR C7 #13 COO H1 #14 HOCO H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HOCO + # char O1 #1 -0.570 O2 #2 -0.650 O3 #3 -0.650 O4 #4 -0.570 N1 #5 -0.764 N2 #6 -0.764 C1 #7 0.650 C2 #8 0.200 C3 #9 0.200 C4 #10 0.575 C5 #11 0.659 C6 #12 0.575 C7 #13 0.659 H1 #14 0.500 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.500 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 N1 #5 0.500 N2 #6 0.500 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 +model GEYWOW RING 1 HAS 2 SUBRINGS SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 10 15 EXOCYCLIC MULT BOND 11 12 SUBRING 1 ALSO RECOGNIZED AS AROMATIC + # ty O1 #1 32 O2 #2 32 O3 #3 7 O4 #4 6 N1 #5 69 N2 #6 69 N3 #7 10 C1 #8 37 C2 #9 37 C3 #10 37 C4 #11 37 C5 #12 37 C6 #13 37 C7 #14 37 C8 #15 37 C9 #16 3 C10 #17 1 C11 #18 1 C12 #19 1 H1 #20 21 H2 #21 28 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 5 H13 #32 5 + # symb O1 #1 OXN O2 #2 OXN O3 #3 O=CN O4 #4 OR N1 #5 NPOX N2 #6 NPOX N3 #7 NC=O C1 #8 CB C2 #9 CB C3 #10 CB C4 #11 CB C5 #12 CB C6 #13 CB C7 #14 CB C8 #15 CB C9 #16 C=ON C10 #17 CR C11 #18 CR C12 #19 CR H1 #20 HOR H2 #21 HNCO H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HC H13 #32 HC + # char O1 #1 -0.750 O2 #2 -0.750 O3 #3 -0.570 O4 #4 -0.680 N1 #5 0.571 N2 #6 0.571 N3 #7 -0.730 C1 #8 0.176 C2 #9 -0.054 C3 #10 0.089 C4 #11 0.089 C5 #12 -0.150 C6 #13 -0.150 C7 #14 -0.150 C8 #15 -0.150 C9 #16 0.544 C10 #17 0.300 C11 #18 0.280 C12 #19 0.143 H1 #20 0.400 H2 #21 0.370 H3 #22 0.150 H4 #23 0.150 H5 #24 0.150 H6 #25 0.150 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 C12 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 +model GICTIV01 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 15 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 63 C2 #2 64 N1 #3 65 N2 #4 39 N3 #5 66 N4 #6 9 N5 #7 45 O1 #8 32 O2 #9 32 H1 #10 5 N4B #11 9 C2B #12 64 N1B #13 65 N3B #14 66 N2B #15 39 C1B #16 63 N5B #17 45 H1B #18 5 O1B #19 32 O2B #20 32 + # symb C1 #1 C5A C2 #2 C5B N1 #3 N5A N2 #4 NPYL N3 #5 N5B N4 #6 N=N N5 #7 NO2 O1 #8 O2N O2 #9 O2N H1 #10 HC N4B #11 N=N C2B #12 C5B N1B #13 N5A N3B #14 N5B N2B #15 NPYL C1B #16 C5A N5B #17 NO2 H1B #18 HC O1B #19 O2N O2B #20 O2N + # char C1 #1 0.037 C2 #2 0.641 N1 #3 -0.707 N2 #4 0.726 N3 #5 -0.565 N4 #6 -0.125 N5 #7 0.884 O1 #8 -0.520 O2 #9 -0.520 H1 #10 0.150 N4B #11 -0.125 C2B #12 0.641 N1B #13 -0.707 N3B #14 -0.565 N2B #15 0.726 C1B #16 0.037 N5B #17 0.884 H1B #18 0.150 O1B #19 -0.520 O2B #20 -0.520 + # fchar C1 #1 0.000 C2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 N4 #6 0.000 N5 #7 0.000 O1 #8 0.000 O2 #9 0.000 H1 #10 0.000 N4B #11 0.000 C2B #12 0.000 N1B #13 0.000 N3B #14 0.000 N2B #15 0.000 C1B #16 0.000 N5B #17 0.000 H1B #18 0.000 O1B #19 0.000 O2B #20 0.000 +model GIDJUY RING 1 HAS 2 SUBRINGS SUBRING 1 has 0 PI electrons PI PAIR ON O OR S 7 SUBRING 2 has 2 PI electrons + # ty BR1 #1 13 C1 #2 1 C2 #3 1 C3 #4 1 C4 #5 1 C5 #6 1 O1 #7 6 C6 #8 3 O2 #9 7 C7 #10 1 O3 #11 7 C8 #12 3 O4 #13 6 C9 #14 1 C10 #15 4 N1 #16 42 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 + # symb BR1 #1 BR C1 #2 CR C2 #3 CR C3 #4 CR C4 #5 CR C5 #6 CR O1 #7 OC=O C6 #8 COO O2 #9 O=CO C7 #10 CR O3 #11 O=CO C8 #12 COO O4 #13 OC=O C9 #14 CR C10 #15 CSP N1 #16 NSP H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC + # char BR1 #1 -0.230 C1 #2 0.122 C2 #3 0.000 C3 #4 0.000 C4 #5 0.430 C5 #6 0.280 O1 #7 -0.430 C6 #8 0.659 O2 #9 -0.570 C7 #10 0.000 O3 #11 -0.570 C8 #12 0.659 O4 #13 -0.430 C9 #14 0.280 C10 #15 0.357 N1 #16 -0.557 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 + # fchar BR1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 O1 #7 0.000 C6 #8 0.000 O2 #9 0.000 C7 #10 0.000 O3 #11 0.000 C8 #12 0.000 O4 #13 0.000 C9 #14 0.000 C10 #15 0.000 N1 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model GIDMEL RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 58 C1 #2 37 N2 #3 40 N3 #4 38 C2 #5 37 N4 #6 40 C3 #7 37 C4 #8 37 C5 #9 37 N5 #10 9 N6 #11 53 N7 #12 47 C6 #13 37 C7 #14 37 C8 #15 37 H1 #16 36 H2 #17 28 H3 #18 28 H4 #19 28 H5 #20 28 H6 #21 5 H7 #22 5 H8 #23 5 + # symb N1 #1 NPD+ C1 #2 CB N2 #3 NC=N N3 #4 NPYD C2 #5 CB N4 #6 NC=N C3 #7 CB C4 #8 CB C5 #9 CB N5 #10 N=N N6 #11 =N= N7 #12 NAZT C6 #13 CB C7 #14 CB C8 #15 CB H1 #16 HPD+ H2 #17 HNCN H3 #18 HNCN H4 #19 HNCN H5 #20 HNCN H6 #21 HC H7 #22 HC H8 #23 HC + # char N1 #1 -0.179 C1 #2 0.771 N2 #3 -0.900 N3 #4 -0.620 C2 #5 0.410 N4 #6 -0.900 C3 #7 0.000 C4 #8 -0.150 C5 #9 0.179 N5 #10 -0.497 N6 #11 0.688 N7 #12 -0.370 C6 #13 -0.150 C7 #14 -0.150 C8 #15 0.361 H1 #16 0.457 H2 #17 0.400 H3 #18 0.400 H4 #19 0.400 H5 #20 0.400 H6 #21 0.150 H7 #22 0.150 H8 #23 0.150 + # fchar N1 #1 1.000 C1 #2 0.000 N2 #3 0.000 N3 #4 0.000 C2 #5 0.000 N4 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 N5 #10 0.000 N6 #11 0.000 N7 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 +model GIDTIW RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 7 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 5 SUBRING 1 has 2 PI electrons + # ty O1 #1 7 O2 #2 7 O3 #3 7 O4 #4 6 O5 #5 6 O6 #6 6 N1 #7 10 N2 #8 9 N3 #9 10 N4 #10 10 N5 #11 10 C1 #12 3 C2 #13 3 C3 #14 2 C4 #15 2 C5 #16 3 C6 #17 3 C7 #18 1 C8 #19 1 C9 #20 1 C10 #21 1 C11 #22 1 H1 #23 21 H2 #24 21 H3 #25 28 H4 #26 28 H5 #27 28 H6 #28 28 H7 #29 5 H8 #30 5 H9 #31 5 H10 #32 5 H11 #33 5 H12 #34 5 H13 #35 5 H14 #36 5 H15 #37 5 + # symb O1 #1 O=CN O2 #2 O=CN O3 #3 O=CN O4 #4 OR O5 #5 OR O6 #6 OR N1 #7 NC=O N2 #8 N=C N3 #9 NC=O N4 #10 NC=O N5 #11 NC=O C1 #12 CONN C2 #13 C=N C3 #14 C=C C4 #15 C=C C5 #16 CONN C6 #17 CONN C7 #18 CR C8 #19 CR C9 #20 CR C10 #21 CR C11 #22 CR H1 #23 HOR H2 #24 HOR H3 #25 HNCO H4 #26 HNCO H5 #27 HNCO H6 #28 HNCO H7 #29 HC H8 #30 HC H9 #31 HC H10 #32 HC H11 #33 HC H12 #34 HC H13 #35 HC H14 #36 HC H15 #37 HC + # char O1 #1 -0.570 O2 #2 -0.570 O3 #3 -0.570 O4 #4 -0.680 O5 #5 -0.560 O6 #6 -0.680 N1 #7 -0.469 N2 #8 -0.661 N3 #9 -0.490 N4 #10 -0.490 N5 #11 -0.800 C1 #12 0.841 C2 #13 0.496 C3 #14 -0.136 C4 #15 -0.041 C5 #16 0.690 C6 #17 0.690 C7 #18 0.580 C8 #19 0.000 C9 #20 0.280 C10 #21 0.280 C11 #22 0.280 H1 #23 0.400 H2 #24 0.400 H3 #25 0.370 H4 #26 0.370 H5 #27 0.370 H6 #28 0.370 H7 #29 0.150 H8 #30 0.150 H9 #31 0.000 H10 #32 0.000 H11 #33 0.000 H12 #34 0.000 H13 #35 0.000 H14 #36 0.000 H15 #37 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 O6 #6 0.000 N1 #7 0.000 N2 #8 0.000 N3 #9 0.000 N4 #10 0.000 N5 #11 0.000 C1 #12 0.000 C2 #13 0.000 C3 #14 0.000 C4 #15 0.000 C5 #16 0.000 C6 #17 0.000 C7 #18 0.000 C8 #19 0.000 C9 #20 0.000 C10 #21 0.000 C11 #22 0.000 H1 #23 0.000 H2 #24 0.000 H3 #25 0.000 H4 #26 0.000 H5 #27 0.000 H6 #28 0.000 H7 #29 0.000 H8 #30 0.000 H9 #31 0.000 H10 #32 0.000 H11 #33 0.000 H12 #34 0.000 H13 #35 0.000 H14 #36 0.000 H15 #37 0.000 +model GIFRAO RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N3 #1 40 C14 #2 37 C15 #3 37 C16 #4 37 C17 #5 37 C18 #6 37 C19 #7 37 S1 #8 18 O1 #9 32 O2 #10 32 N4 #11 62 C20 #12 37 N5 #13 38 C21 #14 37 C22 #15 37 C23 #16 37 N6 #17 38 C24 #18 1 C25 #19 1 H12 #20 28 H13 #21 28 H14 #22 5 H15 #23 5 H16 #24 5 H17 #25 5 H18 #26 5 H19 #27 5 H20 #28 5 H21 #29 5 H22 #30 5 H23 #31 5 H24 #32 5 + # symb N3 #1 NC=C C14 #2 CB C15 #3 CB C16 #4 CB C17 #5 CB C18 #6 CB C19 #7 CB S1 #8 SO2N O1 #9 O2S O2 #10 O2S N4 #11 NM C20 #12 CB N5 #13 NPYD C21 #14 CB C22 #15 CB C23 #16 CB N6 #17 NPYD C24 #18 CR C25 #19 CR H12 #20 HNCC H13 #21 HNCC H14 #22 HC H15 #23 HC H16 #24 HC H17 #25 HC H18 #26 HC H19 #27 HC H20 #28 HC H21 #29 HC H22 #30 HC H23 #31 HC H24 #32 HC + # char N3 #1 -0.900 C14 #2 0.100 C15 #3 -0.150 C16 #4 -0.150 C17 #5 -0.009 C18 #6 -0.150 C19 #7 -0.150 S1 #8 0.849 O1 #9 -0.650 O2 #10 -0.650 N4 #11 -0.288 C20 #12 0.368 N5 #13 -0.620 C21 #14 0.167 C22 #15 -0.150 C23 #16 0.167 N6 #17 -0.620 C24 #18 0.143 C25 #19 0.143 H12 #20 0.400 H13 #21 0.400 H14 #22 0.150 H15 #23 0.150 H16 #24 0.150 H17 #25 0.150 H18 #26 0.150 H19 #27 0.000 H20 #28 0.000 H21 #29 0.000 H22 #30 0.000 H23 #31 0.000 H24 #32 0.000 + # fchar N3 #1 0.000 C14 #2 0.000 C15 #3 0.000 C16 #4 0.000 C17 #5 0.000 C18 #6 0.000 C19 #7 0.000 S1 #8 0.000 O1 #9 0.000 O2 #10 0.000 N4 #11 -1.000 C20 #12 0.000 N5 #13 0.000 C21 #14 0.000 C22 #15 0.000 C23 #16 0.000 N6 #17 0.000 C24 #18 0.000 C25 #19 0.000 H12 #20 0.000 H13 #21 0.000 H14 #22 0.000 H15 #23 0.000 H16 #24 0.000 H17 #25 0.000 H18 #26 0.000 H19 #27 0.000 H20 #28 0.000 H21 #29 0.000 H22 #30 0.000 H23 #31 0.000 H24 #32 0.000 +model GIGCEE RING 1 HAS 4 SUBRINGS PI PAIR ON SP2-N 12 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 12 SUBRING 2 has 6 PI electrons SUBRING 3 has 6 PI electrons SUBRING 4 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC SUBRING 4 IS AROMATIC + # ty C1 #1 63 C2 #2 64 C3 #3 64 C4 #4 3 N1 #5 9 C5 #6 37 C6 #7 37 N2 #8 38 C7 #9 37 C8 #10 37 C9 #11 37 N3 #12 39 C10 #13 63 C11 #14 37 C12 #15 37 C13 #16 37 C14 #17 37 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 + # symb C1 #1 C5A C2 #2 C5B C3 #3 C5B C4 #4 C=N N1 #5 N=C C5 #6 CB C6 #7 CB N2 #8 NPYD C7 #9 CB C8 #10 CB C9 #11 CB N3 #12 NPYL C10 #13 C5A C11 #14 CB C12 #15 CB C13 #16 CB C14 #17 CB H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC + # char C1 #1 -0.302 C2 #2 -0.150 C3 #3 -0.150 C4 #4 0.475 N1 #5 -0.629 C5 #6 -0.150 C6 #7 -0.150 N2 #8 -0.620 C7 #9 0.160 C8 #10 -0.150 C9 #11 -0.150 N3 #12 0.326 C10 #13 -0.237 C11 #14 0.179 C12 #15 0.310 C13 #16 0.000 C14 #17 -0.023 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.060 H5 #22 0.150 H6 #23 0.150 H7 #24 0.150 H8 #25 0.150 H9 #26 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N1 #5 0.000 C5 #6 0.000 C6 #7 0.000 N2 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 N3 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 C13 #16 0.000 C14 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 +model GIGMUE RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 S2 #2 15 S3 #3 15 S4 #4 15 C1 #5 63 C2 #6 64 C3 #7 64 C4 #8 63 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 1 C9 #13 1 C10 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 5 + # symb S1 #1 STHI S2 #2 S S3 #3 S S4 #4 S C1 #5 C5A C2 #6 C5B C3 #7 C5B C4 #8 C5A C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 CR C9 #13 CR C10 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HC + # char S1 #1 -0.080 S2 #2 -0.460 S3 #3 -0.460 S4 #4 -0.460 C1 #5 -0.140 C2 #6 -0.150 C3 #7 -0.150 C4 #8 -0.140 C5 #9 0.410 C6 #10 0.230 C7 #11 0.230 C8 #12 0.230 C9 #13 0.230 C10 #14 0.410 H1 #15 0.150 H2 #16 0.150 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 S4 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 +model GIHZEC RING 1 HAS 3 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING SUBRING 2 IS A 3-MEMBERED RING SUBRING 3 IS A 3-MEMBERED RING + # ty O1 #1 7 O2 #2 7 O3 #3 6 O4 #4 7 O5 #5 6 C1 #6 22 C2 #7 22 C3 #8 22 C4 #9 22 C5 #10 3 C6 #11 3 C7 #12 1 C8 #13 3 C9 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 + # symb O1 #1 O=CR O2 #2 O=CO O3 #3 OC=O O4 #4 O=CO O5 #5 OC=O C1 #6 CR3R C2 #7 CR3R C3 #8 CR3R C4 #9 CR3R C5 #10 C=OR C6 #11 COO C7 #12 CR C8 #13 COO C9 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC + # char O1 #1 -0.570 O2 #2 -0.570 O3 #3 -0.430 O4 #4 -0.570 O5 #5 -0.430 C1 #6 0.000 C2 #7 0.000 C3 #8 -0.100 C4 #9 -0.100 C5 #10 0.570 C6 #11 0.720 C7 #12 0.280 C8 #13 0.720 C9 #14 0.280 H1 #15 0.100 H2 #16 0.100 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 +model GIJMOB01 RING 1 HAS 2 SUBRINGS PI PAIR ON DICOORD N 3 SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 6 7 EXOCYCLIC MULT BOND 12 11 + # ty S1 #1 18 O1 #2 32 N1 #3 62 C1 #4 3 O2 #5 7 C2 #6 37 C3 #7 37 O3 #8 6 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 37 O1G #13 32 H1 #14 29 H2 #15 5 H3 #16 5 H4 #17 5 + # symb S1 #1 SO2N O1 #2 O2S N1 #3 NM C1 #4 C=ON O2 #5 O=CN C2 #6 CB C3 #7 CB O3 #8 OC=C C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CB O1G #13 O2S H1 #14 HOCC H2 #15 HC H3 #16 HC H4 #17 HC + # char S1 #1 0.849 O1 #2 -0.650 N1 #3 -0.320 C1 #4 0.264 O2 #5 -0.570 C2 #6 0.086 C3 #7 0.083 O3 #8 -0.532 C4 #9 -0.150 C5 #10 -0.150 C6 #11 -0.150 C7 #12 -0.009 O1G #13 -0.650 H1 #14 0.450 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 -1.000 C1 #4 0.000 O2 #5 0.000 C2 #6 0.000 C3 #7 0.000 O3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 O1G #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 +model GIKJIT RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 10 9 + # ty C1 #1 2 C2 #2 2 C3 #3 3 O1 #4 7 N1 #5 39 C4 #6 63 C5 #7 64 BR1 #8 13 C6 #9 64 C7 #10 63 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 C=ON O1 #4 O=CN N1 #5 NPYL C4 #6 C5A C5 #7 C5B BR1 #8 BR C6 #9 C5B C7 #10 C5A H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC + # char C1 #1 -0.105 C2 #2 -0.136 C3 #3 0.565 O1 #4 -0.570 N1 #5 0.294 C4 #6 -0.302 C5 #7 0.057 BR1 #8 -0.057 C6 #9 -0.150 C7 #10 -0.197 H1 #11 0.150 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 O1 #4 0.000 N1 #5 0.000 C4 #6 0.000 C5 #7 0.000 BR1 #8 0.000 C6 #9 0.000 C7 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 +model GIKNOD RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 C1 #2 1 C2 #3 1 N1 #4 34 C3 #5 1 C4 #6 41 O1 #7 32 O2 #8 32 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 H1 #15 5 H2 #16 5 H3 #17 36 H4 #18 36 H5 #19 36 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 + # symb S1 #1 S C1 #2 CR C2 #3 CR N1 #4 NR+ C3 #5 CR C4 #6 CO2M O1 #7 O2CM O2 #8 O2CM C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB H1 #15 HC H2 #16 HC H3 #17 HNR+ H4 #18 HNR+ H5 #19 HNR+ H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC + # char S1 #1 -0.332 C1 #2 0.124 C2 #3 0.503 N1 #4 -0.853 C3 #5 0.000 C4 #6 0.906 O1 #7 -0.900 O2 #8 -0.900 C5 #9 0.102 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 C10 #14 -0.150 H1 #15 0.000 H2 #16 0.000 H3 #17 0.450 H4 #18 0.450 H5 #19 0.450 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.150 H10 #24 0.150 H11 #25 0.150 H12 #26 0.150 H13 #27 0.150 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 N1 #4 1.000 C3 #5 0.000 C4 #6 0.000 O1 #7 -0.500 O2 #8 -0.500 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 +model GIKTUP RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 11 PI PAIR ON O OR S 9 SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 10 PI PAIR ON O OR S 11 SUBRING 2 has 6 PI electrons + # ty C1 #1 1 C2 #2 2 C3 #3 2 C4 #4 1 C5 #5 2 C6 #6 2 C7 #7 3 C8 #8 3 O1 #9 6 O2 #10 6 O3 #11 6 O4 #12 7 O5 #13 7 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 + # symb C1 #1 CR C2 #2 C=C C3 #3 C=C C4 #4 CR C5 #5 C=C C6 #6 C=C C7 #7 C=OR C8 #8 C=OR O1 #9 OC=C O2 #10 OC=C O3 #11 OR O4 #12 O=CR O5 #13 O=CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC + # char C1 #1 0.698 C2 #2 -0.073 C3 #3 -0.124 C4 #4 0.698 C5 #5 -0.073 C6 #6 -0.124 C7 #7 0.496 C8 #8 0.496 O1 #9 -0.357 O2 #10 -0.357 O3 #11 -0.560 O4 #12 -0.570 O5 #13 -0.570 H1 #14 0.000 H2 #15 0.150 H3 #16 0.000 H4 #17 0.150 H5 #18 0.060 H6 #19 0.060 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 O1 #9 0.000 O2 #10 0.000 O3 #11 0.000 O4 #12 0.000 O5 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 +model GIMJIV RING 1 HAS 4 SUBRINGS SUBRING 1 has 2 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 0 PI electrons SUBRING 4 has 0 PI electrons + # ty CL1 #1 12 CL3 #2 12 CL4 #3 12 CL11 #4 12 N1 #5 9 C1 #6 1 C3 #7 3 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 1 C9 #13 1 C10 #14 1 C11 #15 1 C12 #16 1 H5 #17 5 H6 #18 5 H71 #19 5 H72 #20 5 H81 #21 5 H82 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H121 #26 5 H122 #27 5 + # symb CL1 #1 CL CL3 #2 CL CL4 #3 CL CL11 #4 CL N1 #5 N=C C1 #6 CR C3 #7 C=N C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 CR C9 #13 CR C10 #14 CR C11 #15 CR C12 #16 CR H5 #17 HC H6 #18 HC H71 #19 HC H72 #20 HC H81 #21 HC H82 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H121 #26 HC H122 #27 HC + # char CL1 #1 -0.290 CL3 #2 -0.209 CL4 #3 -0.290 CL11 #4 -0.290 N1 #5 -0.696 C1 #6 0.536 C3 #7 0.598 C4 #8 0.351 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.290 C12 #16 0.000 H5 #17 0.000 H6 #18 0.000 H71 #19 0.000 H72 #20 0.000 H81 #21 0.000 H82 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H121 #26 0.000 H122 #27 0.000 + # fchar CL1 #1 0.000 CL3 #2 0.000 CL4 #3 0.000 CL11 #4 0.000 N1 #5 0.000 C1 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 C12 #16 0.000 H5 #17 0.000 H6 #18 0.000 H71 #19 0.000 H72 #20 0.000 H81 #21 0.000 H82 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H121 #26 0.000 H122 #27 0.000 +model GINMUL RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 6 SUBRING 2 has 6 PI electrons + # ty S1 #1 15 O1 #2 7 O2 #3 7 O3 #4 6 N1 #5 9 N2 #6 40 C1 #7 2 C2 #8 2 C3 #9 3 C4 #10 3 C5 #11 2 C6 #12 2 C7 #13 1 C8 #14 3 C9 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 + # symb S1 #1 S O1 #2 O=CN O2 #3 O=CO O3 #4 OC=O N1 #5 N=C N2 #6 NC=N C1 #7 C=C C2 #8 C=C C3 #9 C=ON C4 #10 C=N C5 #11 C=C C6 #12 C=C C7 #13 CR C8 #14 COO C9 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC + # char S1 #1 -0.242 O1 #2 -0.570 O2 #3 -0.570 O3 #4 -0.430 N1 #5 -0.661 N2 #6 -0.250 C1 #7 -0.038 C2 #8 -0.136 C3 #9 0.767 C4 #10 0.641 C5 #11 -0.049 C6 #12 -0.050 C7 #13 0.199 C8 #14 0.659 C9 #15 0.280 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 N2 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 +model GIPHES RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 32 O2 #2 32 O3 #3 7 O4 #4 6 C1 #5 41 C2 #6 1 C3 #7 3 C4 #8 1 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 24 + # symb O1 #1 O2CM O2 #2 O2CM O3 #3 O=CO O4 #4 OC=O C1 #5 CO2M C2 #6 CR C3 #7 COO C4 #8 CR C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HOCO + # char O1 #1 -0.900 O2 #2 -0.900 O3 #3 -0.570 O4 #4 -0.650 C1 #5 0.906 C2 #6 -0.045 C3 #7 0.659 C4 #8 0.143 C5 #9 -0.143 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 C10 #14 -0.150 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 H8 #22 0.150 H9 #23 0.500 + # fchar O1 #1 -0.500 O2 #2 -0.500 O3 #3 0.000 O4 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 +model GIRDOA01 RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 2 SUBRING 1 has 2 PI electrons PI PAIR ON SP2-N 20 SUBRING 3 has 2 PI electrons + # ty P1 #1 26 N1 #2 8 C1 #3 20 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 1 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 5 H5 #12 5 H6 #13 5 H7 #14 5 H8 #15 5 H9 #16 5 H10 #17 5 C1B #18 20 P1B #19 26 N1B #20 8 C4B #21 1 C3B #22 1 C2B #23 1 C5B #24 1 H5B #25 5 H6B #26 5 H7B #27 5 H3B #28 5 H4B #29 5 H1B #30 5 H2B #31 5 H8B #32 5 H9B #33 5 H10B #34 5 + # symb P1 #1 P N1 #2 NR C1 #3 CR4R C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 CR H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HC H5 #12 HC H6 #13 HC H7 #14 HC H8 #15 HC H9 #16 HC H10 #17 HC C1B #18 CR4R P1B #19 P N1B #20 NR C4B #21 CR C3B #22 CR C2B #23 CR C5B #24 CR H5B #25 HC H6B #26 HC H7B #27 HC H3B #28 HC H4B #29 HC H1B #30 HC H2B #31 HC H8B #32 HC H9B #33 HC H10B #34 HC + # char P1 #1 -0.413 N1 #2 -0.750 C1 #3 0.456 C2 #4 0.270 C3 #5 0.167 C4 #6 0.000 C5 #7 0.270 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 H8 #15 0.000 H9 #16 0.000 H10 #17 0.000 C1B #18 0.456 P1B #19 -0.413 N1B #20 -0.750 C4B #21 0.000 C3B #22 0.167 C2B #23 0.270 C5B #24 0.270 H5B #25 0.000 H6B #26 0.000 H7B #27 0.000 H3B #28 0.000 H4B #29 0.000 H1B #30 0.000 H2B #31 0.000 H8B #32 0.000 H9B #33 0.000 H10B #34 0.000 + # fchar P1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 H7 #14 0.000 H8 #15 0.000 H9 #16 0.000 H10 #17 0.000 C1B #18 0.000 P1B #19 0.000 N1B #20 0.000 C4B #21 0.000 C3B #22 0.000 C2B #23 0.000 C5B #24 0.000 H5B #25 0.000 H6B #26 0.000 H7B #27 0.000 H3B #28 0.000 H4B #29 0.000 H1B #30 0.000 H2B #31 0.000 H8B #32 0.000 H9B #33 0.000 H10B #34 0.000 +model GOHVUU RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 5 PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 5 PI PAIR ON SP2-N 7 SUBRING 2 has 6 PI electrons + # ty N1 #1 10 C1 #2 3 N2 #3 10 C2 #4 3 N3 #5 10 C3 #6 3 N4 #7 10 C4 #8 3 O1 #9 7 O2 #10 7 O3 #11 7 O4 #12 7 H1 #13 28 H2 #14 28 + # symb N1 #1 NC=O C1 #2 CONN N2 #3 NC=O C2 #4 CONN N3 #5 NC=O C3 #6 CONN N4 #7 NC=O C4 #8 CONN O1 #9 O=CN O2 #10 O=CN O3 #11 O=CN O4 #12 O=CN H1 #13 HNCO H2 #14 HNCO + # char N1 #1 -0.120 C1 #2 0.690 N2 #3 -0.490 C2 #4 0.690 N3 #5 -0.120 C3 #6 0.690 N4 #7 -0.490 C4 #8 0.690 O1 #9 -0.570 O2 #10 -0.570 O3 #11 -0.570 O4 #12 -0.570 H1 #13 0.370 H2 #14 0.370 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 N3 #5 0.000 C3 #6 0.000 N4 #7 0.000 C4 #8 0.000 O1 #9 0.000 O2 #10 0.000 O3 #11 0.000 O4 #12 0.000 H1 #13 0.000 H2 #14 0.000 +model GOJCIR RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON O OR S 4 PI PAIR ON O OR S 6 SUBRING 1 has 6 PI electrons + # ty O1 #1 6 C1 #2 1 H1 #3 5 S1 #4 15 C2 #5 1 S2 #6 15 C3 #7 1 H2 #8 5 C4 #9 1 CL1 #10 12 CL2 #11 12 CL3 #12 12 CL4 #13 12 C5 #14 1 CL5 #15 12 CL6 #16 12 CL7 #17 12 C6 #18 1 CL8 #19 12 CL9 #20 12 CL10 #21 12 + # symb O1 #1 OR C1 #2 CR H1 #3 HC S1 #4 S C2 #5 CR S2 #6 S C3 #7 CR H2 #8 HC C4 #9 CR CL1 #10 CL CL2 #11 CL CL3 #12 CL CL4 #13 CL C5 #14 CR CL5 #15 CL CL6 #16 CL CL7 #17 CL C6 #18 CR CL8 #19 CL CL9 #20 CL CL10 #21 CL + # char O1 #1 -0.560 C1 #2 0.510 H1 #3 0.000 S1 #4 -0.460 C2 #5 0.750 S2 #6 -0.460 C3 #7 0.510 H2 #8 0.000 C4 #9 0.870 CL1 #10 -0.290 CL2 #11 -0.290 CL3 #12 -0.290 CL4 #13 -0.290 C5 #14 0.870 CL5 #15 -0.290 CL6 #16 -0.290 CL7 #17 -0.290 C6 #18 0.870 CL8 #19 -0.290 CL9 #20 -0.290 CL10 #21 -0.290 + # fchar O1 #1 0.000 C1 #2 0.000 H1 #3 0.000 S1 #4 0.000 C2 #5 0.000 S2 #6 0.000 C3 #7 0.000 H2 #8 0.000 C4 #9 0.000 CL1 #10 0.000 CL2 #11 0.000 CL3 #12 0.000 CL4 #13 0.000 C5 #14 0.000 CL5 #15 0.000 CL6 #16 0.000 CL7 #17 0.000 C6 #18 0.000 CL8 #19 0.000 CL9 #20 0.000 CL10 #21 0.000 +model GOJKIZ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 10 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 N1 #2 38 C2 #3 37 C3 #4 37 C4 #5 37 C5 #6 37 S1 #7 15 C6 #8 64 N2 #9 65 N3 #10 39 C7 #11 63 N4 #12 66 N5 #13 45 O1 #14 32 O2 #15 32 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 23 H5 #20 5 + # symb C1 #1 CB N1 #2 NPYD C2 #3 CB C3 #4 CB C4 #5 CB C5 #6 CB S1 #7 S C6 #8 C5B N2 #9 N5A N3 #10 NPYL C7 #11 C5A N4 #12 N5B N5 #13 NO2 O1 #14 O2N O2 #15 O2N H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HPYL H5 #20 HC + # char C1 #1 0.411 N1 #2 -0.620 C2 #3 0.160 C3 #4 -0.150 C4 #5 -0.150 C5 #6 0.133 S1 #7 -0.157 C6 #8 0.571 N2 #9 -0.707 N3 #10 0.300 C7 #11 0.037 N4 #12 -0.565 N5 #13 0.907 O1 #14 -0.520 O2 #15 -0.520 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.270 H5 #20 0.150 + # fchar C1 #1 0.000 N1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 S1 #7 0.000 C6 #8 0.000 N2 #9 0.000 N3 #10 0.000 C7 #11 0.000 N4 #12 0.000 N5 #13 0.000 O1 #14 0.000 O2 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 +model GUANCH01 RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty O1 #1 7 N1 #2 10 N2 #3 9 N3 #4 81 N4 #5 81 N5 #6 40 C1 #7 3 C2 #8 78 C3 #9 78 C4 #10 3 C5 #11 80 H3 #12 28 H4 #13 36 H5 #14 5 H6 #15 36 H7 #16 28 H8 #17 28 + # symb O1 #1 O=CN N1 #2 NC=O N2 #3 N=C N3 #4 NIM+ N4 #5 NIM+ N5 #6 NC=N C1 #7 CGD C2 #8 C5 C3 #9 C5 C4 #10 C=ON C5 #11 CIM+ H3 #12 HNCO H4 #13 HIM+ H5 #14 HC H6 #15 HIM+ H7 #16 HNCN H8 #17 HNCN + # char O1 #1 -0.570 N1 #2 -0.490 N2 #3 -0.588 N3 #4 -0.700 N4 #5 -0.700 N5 #6 -0.850 C1 #7 0.560 C2 #8 0.488 C3 #9 0.277 C4 #10 0.703 C5 #11 0.650 H3 #12 0.370 H4 #13 0.450 H5 #14 0.150 H6 #15 0.450 H7 #16 0.400 H8 #17 0.400 + # fchar O1 #1 0.000 N1 #2 0.000 N2 #3 0.000 N3 #4 0.500 N4 #5 0.500 N5 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 +model HYTPRD01 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 10 SUBRING 1 has 2 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 16 C1 #2 3 C2 #3 37 C3 #4 37 O1 #5 6 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 N1 #10 10 C8 #11 1 C9 #12 1 C10 #13 1 C11 #14 1 C12 #15 1 H1 #16 29 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H81 #21 5 H82 #22 5 H91 #23 5 H92 #24 5 H101 #25 5 H102 #26 5 H111 #27 5 H112 #28 5 H121 #29 5 H122 #30 5 + # symb S1 #1 S=C C1 #2 C=SN C2 #3 CB C3 #4 CB O1 #5 OC=C C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB N1 #10 NC=S C8 #11 CR C9 #12 CR C10 #13 CR C11 #14 CR C12 #15 CR H1 #16 HOCC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H81 #21 HC H82 #22 HC H91 #23 HC H92 #24 HC H101 #25 HC H102 #26 HC H111 #27 HC H112 #28 HC H121 #29 HC H122 #30 HC + # char S1 #1 -0.380 C1 #2 0.354 C2 #3 0.086 C3 #4 0.083 O1 #5 -0.532 C4 #6 -0.150 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.150 N1 #10 -0.660 C8 #11 0.300 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.300 H1 #16 0.450 H4 #17 0.150 H5 #18 0.150 H6 #19 0.150 H7 #20 0.150 H81 #21 0.000 H82 #22 0.000 H91 #23 0.000 H92 #24 0.000 H101 #25 0.000 H102 #26 0.000 H111 #27 0.000 H112 #28 0.000 H121 #29 0.000 H122 #30 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 O1 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 N1 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H81 #21 0.000 H82 #22 0.000 H91 #23 0.000 H92 #24 0.000 H101 #25 0.000 H102 #26 0.000 H111 #27 0.000 H112 #28 0.000 H121 #29 0.000 H122 #30 0.000 +model ISTZCN10 RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 6 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 15 S2 #2 15 S3 #3 15 S4 #4 15 S5 #5 15 S6 #6 44 N1 #7 65 N2 #8 42 C1 #9 64 C2 #10 64 C3 #11 63 C4 #12 4 + # symb S1 #1 S S2 #2 S S3 #3 S S4 #4 S S5 #5 S S6 #6 STHI N1 #7 N5A N2 #8 NSP C1 #9 C5B C2 #10 C5B C3 #11 C5A C4 #12 CSP + # char S1 #1 -0.055 S2 #2 0.000 S3 #3 0.000 S4 #4 0.000 S5 #5 -0.055 S6 #6 0.181 N1 #7 -0.510 N2 #8 -0.557 C1 #9 0.344 C2 #10 0.055 C3 #11 0.060 C4 #12 0.537 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 S4 #4 0.000 S5 #5 0.000 S6 #6 0.000 N1 #7 0.000 N2 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 +model JABGAU RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 S2 #2 16 C1 #3 3 N1 #4 10 C2 #5 2 C3 #6 2 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 C10 #13 1 C11 #14 1 C12 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 + # symb S1 #1 S S2 #2 S=C C1 #3 C=SN N1 #4 NC=S C2 #5 C=C C3 #6 C=C C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB C10 #13 CR C11 #14 CR C12 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC + # char S1 #1 -0.242 S2 #2 -0.380 C1 #3 0.581 N1 #4 -0.286 C2 #5 -0.029 C3 #6 -0.049 C4 #7 0.117 C5 #8 -0.143 C6 #9 -0.143 C7 #10 -0.150 C8 #11 -0.150 C9 #12 -0.150 C10 #13 0.143 C11 #14 0.143 C12 #15 0.138 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 C1 #3 0.000 N1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 +model JADLIJ RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON O OR S 3 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty CL1 #1 12 S1 #2 15 S2 #3 15 S3 #4 16 C1 #5 3 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 H1 #12 5 H2 #13 5 H3 #14 5 + # symb CL1 #1 CL S1 #2 S S2 #3 S S3 #4 S=C C1 #5 CSS C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB H1 #12 HC H2 #13 HC H3 #14 HC + # char CL1 #1 -0.177 S1 #2 -0.102 S2 #3 -0.141 S3 #4 -0.380 C1 #5 0.435 C2 #6 0.086 C3 #7 -0.150 C4 #8 -0.150 C5 #9 0.177 C6 #10 -0.150 C7 #11 0.102 H1 #12 0.150 H2 #13 0.150 H3 #14 0.150 + # fchar CL1 #1 0.000 S1 #2 0.000 S2 #3 0.000 S3 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 +model JADXER RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 4 PI PAIR ON O OR S 5 SUBRING 1 has 4 PI electrons RING 3 HAS 1 SUBRINGS PI PAIR ON O OR S 6 PI PAIR ON O OR S 7 SUBRING 1 has 4 PI electrons + # ty O1 #1 6 O2 #2 32 O3 #3 32 O4 #4 6 O5 #5 6 O6 #6 6 O7 #7 6 N1 #8 45 C1 #9 22 C2 #10 22 C3 #11 1 C4 #12 1 C5 #13 1 C6 #14 1 C7 #15 1 C8 #16 1 C9 #17 1 C10 #18 1 C11 #19 1 C12 #20 1 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 H15 #32 5 H16 #33 5 H17 #34 5 H18 #35 5 H19 #36 5 H5 #37 5 H6 #38 5 H10 #39 5 + # symb O1 #1 OR O2 #2 O2N O3 #3 O2N O4 #4 OR O5 #5 OR O6 #6 OR O7 #7 OR N1 #8 NO2 C1 #9 CR3R C2 #10 CR3R C3 #11 CR C4 #12 CR C5 #13 CR C6 #14 CR C7 #15 CR C8 #16 CR C9 #17 CR C10 #18 CR C11 #19 CR C12 #20 CR H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC H15 #32 HC H16 #33 HC H17 #34 HC H18 #35 HC H19 #36 HC H5 #37 HC H6 #38 HC H10 #39 HC + # char O1 #1 -0.296 O2 #2 -0.520 O3 #3 -0.520 O4 #4 -0.560 O5 #5 -0.560 O6 #6 -0.560 O7 #7 -0.560 N1 #8 0.875 C1 #9 0.213 C2 #10 -0.047 C3 #11 0.375 C4 #12 0.280 C5 #13 0.280 C6 #14 0.280 C7 #15 0.560 C8 #16 0.000 C9 #17 0.000 C10 #18 0.560 C11 #19 0.000 C12 #20 0.000 H1 #21 0.100 H2 #22 0.100 H3 #23 0.000 H4 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 H16 #33 0.000 H17 #34 0.000 H18 #35 0.000 H19 #36 0.000 H5 #37 0.000 H6 #38 0.000 H10 #39 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 O6 #6 0.000 O7 #7 0.000 N1 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 C12 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 H16 #33 0.000 H17 #34 0.000 H18 #35 0.000 H19 #36 0.000 H5 #37 0.000 H6 #38 0.000 H10 #39 0.000 +model JAHKOS RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 O3 #4 6 C1 #5 22 C2 #6 22 C3 #7 1 C4 #8 1 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 + # symb S1 #1 SO2 O1 #2 O2S O2 #3 O2S O3 #4 OR C1 #5 CR3R C2 #6 CR3R C3 #7 CR C4 #8 CR C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC + # char S1 #1 1.172 O1 #2 -0.650 O2 #3 -0.650 O3 #4 -0.296 C1 #5 0.076 C2 #6 0.080 C3 #7 0.095 C4 #8 0.105 C5 #9 -0.032 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 C10 #14 -0.150 H1 #15 0.100 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.150 H9 #23 0.150 H10 #24 0.150 H11 #25 0.150 H12 #26 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 +model JAHTOB RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 2 C2 #2 2 C3 #3 22 C4 #4 1 C5 #5 1 C6 #6 1 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 37 O1 #13 6 CL1 #14 12 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 CR3R C4 #4 CR C5 #5 CR C6 #6 CR C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 CB O1 #13 OC=C CL1 #14 CL H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC + # char C1 #1 0.037 C2 #2 -0.068 C3 #3 -0.110 C4 #4 0.095 C5 #5 0.095 C6 #6 0.280 C7 #7 0.028 C8 #8 -0.150 C9 #9 -0.150 C10 #10 0.177 C11 #11 -0.150 C12 #12 -0.150 O1 #13 -0.357 CL1 #14 -0.177 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.150 H11 #25 0.150 H12 #26 0.150 H13 #27 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 O1 #13 0.000 CL1 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 +model JAHYEW RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 2 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 2 PI electrons + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 N1 #4 8 C1 #5 1 C2 #6 1 C3 #7 1 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 H12 #24 5 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL N1 #4 NR C1 #5 CR C2 #6 CR C3 #7 CR C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC H12 #24 HC + # char CL1 #1 -0.290 CL2 #2 -0.290 CL3 #3 -0.290 N1 #4 -0.810 C1 #5 0.270 C2 #6 0.000 C3 #7 0.000 C4 #8 0.290 C5 #9 0.000 C6 #10 0.000 C7 #11 0.270 C8 #12 0.850 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 +model JAKGUX RING 1 HAS 3 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 2 has 2 PI electrons SUBRING 3 has 0 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 26 P2 #2 26 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 1 C8 #10 1 C9 #11 1 C10 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 H12 #24 5 + # symb P1 #1 P P2 #2 P C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CR C8 #10 CR C9 #11 CR C10 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC H12 #24 HC + # char P1 #1 -0.349 P2 #2 -0.349 C1 #3 0.015 C2 #4 0.015 C3 #5 -0.150 C4 #6 -0.150 C5 #7 -0.150 C6 #8 -0.150 C7 #9 0.167 C8 #10 0.167 C9 #11 0.167 C10 #12 0.167 H1 #13 0.150 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 + # fchar P1 #1 0.000 P2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 +model JAKJOU RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 N1 #7 40 C7 #8 1 N2 #9 46 O1 #10 7 C8 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 28 H8 #19 5 H9 #20 5 H10 #21 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB N1 #7 NC=C C7 #8 CR N2 #9 N=O O1 #10 O=N C8 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HNCC H8 #19 HC H9 #20 HC H10 #21 HC + # char C1 #1 0.100 C2 #2 0.302 C3 #3 -0.150 C4 #4 -0.143 C5 #5 -0.150 C6 #6 -0.150 N1 #7 -0.869 C7 #8 0.369 N2 #9 -0.140 O1 #10 -0.162 C8 #11 0.143 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.400 H8 #19 0.150 H9 #20 0.150 H10 #21 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 0.000 C7 #8 0.000 N2 #9 0.000 O1 #10 0.000 C8 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 +model JALSOE RING 1 HAS 3 SUBRINGS SUBRING 1 has 0 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 0 PI electrons + # ty S1 #1 73 S2 #2 72 O1 #3 32 C1 #4 1 C2 #5 1 C3 #6 1 C4 #7 1 C5 #8 1 C6 #9 1 C7 #10 1 C8 #11 1 C9 #12 1 C10 #13 1 H4 #14 5 H5 #15 5 H7 #16 5 H8 #17 5 H9 #18 5 H10 #19 5 H11 #20 5 H12 #21 5 H13 #22 5 H14 #23 5 H15 #24 5 H16 #25 5 H17 #26 5 H18 #27 5 H19 #28 5 + # symb S1 #1 SSOM S2 #2 SSMO O1 #3 OSMS C1 #4 CR C2 #5 CR C3 #6 CR C4 #7 CR C5 #8 CR C6 #9 CR C7 #10 CR C8 #11 CR C9 #12 CR C10 #13 CR H4 #14 HC H5 #15 HC H7 #16 HC H8 #17 HC H9 #18 HC H10 #19 HC H11 #20 HC H12 #21 HC H13 #22 HC H14 #23 HC H15 #24 HC H16 #25 HC H17 #26 HC H18 #27 HC H19 #28 HC + # char S1 #1 0.212 S2 #2 -0.700 O1 #3 -0.600 C1 #4 0.088 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 H4 #14 0.000 H5 #15 0.000 H7 #16 0.000 H8 #17 0.000 H9 #18 0.000 H10 #19 0.000 H11 #20 0.000 H12 #21 0.000 H13 #22 0.000 H14 #23 0.000 H15 #24 0.000 H16 #25 0.000 H17 #26 0.000 H18 #27 0.000 H19 #28 0.000 + # fchar S1 #1 0.000 S2 #2 -0.500 O1 #3 -0.500 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 H4 #14 0.000 H5 #15 0.000 H7 #16 0.000 H8 #17 0.000 H9 #18 0.000 H10 #19 0.000 H11 #20 0.000 H12 #21 0.000 H13 #22 0.000 H14 #23 0.000 H15 #24 0.000 H16 #25 0.000 H17 #26 0.000 H18 #27 0.000 H19 #28 0.000 +model JAMREU RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 56 N2 #2 56 C1 #3 57 N3 #4 56 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 3 O1 #12 7 O2 #13 6 C9 #14 37 C10 #15 37 C11 #16 37 C12 #17 37 C13 #18 37 C14 #19 37 C15 #20 1 C16 #21 3 O3 #22 7 O4 #23 6 C17 #24 1 C18 #25 3 O5 #26 7 N4 #27 10 C19 #28 1 C20 #29 1 H1 #30 36 H2 #31 36 H3 #32 36 H4 #33 36 H5 #34 36 H6 #35 5 H7 #36 5 H8 #37 5 H9 #38 5 H10 #39 5 H11 #40 5 H12 #41 5 H13 #42 5 H14 #43 5 H15 #44 5 H16 #45 5 H17 #46 5 H18 #47 5 H19 #48 5 H20 #49 5 H21 #50 5 H22 #51 5 H23 #52 5 + # symb N1 #1 NGD+ N2 #2 NGD+ C1 #3 CGD+ N3 #4 NGD+ C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 COO O1 #12 O=CO O2 #13 OC=O C9 #14 CB C10 #15 CB C11 #16 CB C12 #17 CB C13 #18 CB C14 #19 CB C15 #20 CR C16 #21 COO O3 #22 O=CO O4 #23 OC=O C17 #24 CR C18 #25 C=ON O5 #26 O=CN N4 #27 NC=O C19 #28 CR C20 #29 CR H1 #30 HGD+ H2 #31 HGD+ H3 #32 HGD+ H4 #33 HGD+ H5 #34 HGD+ H6 #35 HC H7 #36 HC H8 #37 HC H9 #38 HC H10 #39 HC H11 #40 HC H12 #41 HC H13 #42 HC H14 #43 HC H15 #44 HC H16 #45 HC H17 #46 HC H18 #47 HC H19 #48 HC H20 #49 HC H21 #50 HC H22 #51 HC H23 #52 HC + # char N1 #1 -0.967 N2 #2 -0.967 C1 #3 1.200 N3 #4 -0.828 C2 #5 0.311 C3 #6 -0.150 C4 #7 -0.150 C5 #8 0.086 C6 #9 -0.150 C7 #10 -0.150 C8 #11 0.634 O1 #12 -0.570 O2 #13 -0.232 C9 #14 0.083 C10 #15 -0.150 C11 #16 -0.150 C12 #17 -0.143 C13 #18 -0.150 C14 #19 -0.150 C15 #20 0.204 C16 #21 0.659 O3 #22 -0.570 O4 #23 -0.430 C17 #24 0.341 C18 #25 0.569 O5 #26 -0.570 N4 #27 -0.660 C19 #28 0.300 C20 #29 0.300 H1 #30 0.450 H2 #31 0.450 H3 #32 0.450 H4 #33 0.450 H5 #34 0.450 H6 #35 0.150 H7 #36 0.150 H8 #37 0.150 H9 #38 0.150 H10 #39 0.150 H11 #40 0.150 H12 #41 0.150 H13 #42 0.150 H14 #43 0.000 H15 #44 0.000 H16 #45 0.000 H17 #46 0.000 H18 #47 0.000 H19 #48 0.000 H20 #49 0.000 H21 #50 0.000 H22 #51 0.000 H23 #52 0.000 + # fchar N1 #1 0.333 N2 #2 0.333 C1 #3 0.000 N3 #4 0.333 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 O1 #12 0.000 O2 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 C13 #18 0.000 C14 #19 0.000 C15 #20 0.000 C16 #21 0.000 O3 #22 0.000 O4 #23 0.000 C17 #24 0.000 C18 #25 0.000 O5 #26 0.000 N4 #27 0.000 C19 #28 0.000 C20 #29 0.000 H1 #30 0.000 H2 #31 0.000 H3 #32 0.000 H4 #33 0.000 H5 #34 0.000 H6 #35 0.000 H7 #36 0.000 H8 #37 0.000 H9 #38 0.000 H10 #39 0.000 H11 #40 0.000 H12 #41 0.000 H13 #42 0.000 H14 #43 0.000 H15 #44 0.000 H16 #45 0.000 H17 #46 0.000 H18 #47 0.000 H19 #48 0.000 H20 #49 0.000 H21 #50 0.000 H22 #51 0.000 H23 #52 0.000 +model JANDOR RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 3 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 1 C2 #2 2 C3 #3 2 N1 #4 10 C4 #5 20 C5 #6 20 C6 #7 3 C7 #8 1 C8 #9 1 O1 #10 6 O2 #11 6 C9 #12 1 S1 #13 15 C10 #14 37 N2 #15 38 C11 #16 37 C12 #17 37 C13 #18 37 N3 #19 38 C14 #20 3 O3 #21 7 O4 #22 6 C15 #23 1 C16 #24 37 C17 #25 37 C18 #26 37 C19 #27 37 C20 #28 37 C21 #29 37 N4 #30 45 O5 #31 32 O6 #32 32 O7 #33 7 H1 #34 5 H2 #35 5 H3 #36 5 H4 #37 5 H5 #38 5 H6 #39 5 H7 #40 5 H8 #41 5 H9 #42 5 H10 #43 5 H11 #44 5 H12 #45 5 H13 #46 5 H14 #47 5 H15 #48 5 H16 #49 5 H17 #50 21 H18 #51 5 H19 #52 5 H20 #53 5 + # symb C1 #1 CR C2 #2 C=C C3 #3 C=C N1 #4 NC=O C4 #5 CR4R C5 #6 CR4R C6 #7 C=ON C7 #8 CR C8 #9 CR O1 #10 OR O2 #11 OR C9 #12 CR S1 #13 S C10 #14 CB N2 #15 NPYD C11 #16 CB C12 #17 CB C13 #18 CB N3 #19 NPYD C14 #20 COO O3 #21 O=CO O4 #22 OC=O C15 #23 CR C16 #24 CB C17 #25 CB C18 #26 CB C19 #27 CB C20 #28 CB C21 #29 CB N4 #30 NO2 O5 #31 O2N O6 #32 O2N O7 #33 O=CN H1 #34 HC H2 #35 HC H3 #36 HC H4 #37 HC H5 #38 HC H6 #39 HC H7 #40 HC H8 #41 HC H9 #42 HC H10 #43 HC H11 #44 HC H12 #45 HC H13 #46 HC H14 #47 HC H15 #48 HC H16 #49 HC H17 #50 HOR H18 #51 HC H19 #52 HC H20 #53 HC + # char C1 #1 0.418 C2 #2 -0.037 C3 #3 0.123 N1 #4 -0.394 C4 #5 0.225 C5 #6 0.053 C6 #7 0.577 C7 #8 0.280 C8 #9 0.000 O1 #10 -0.680 O2 #11 -0.560 C9 #12 0.280 S1 #13 -0.203 C10 #14 0.722 N2 #15 -0.620 C11 #16 0.160 C12 #17 -0.150 C13 #18 0.160 N3 #19 -0.620 C14 #20 0.706 O3 #21 -0.570 O4 #22 -0.430 C15 #23 0.423 C16 #24 -0.143 C17 #25 -0.150 C18 #26 -0.150 C19 #27 0.133 C20 #28 -0.150 C21 #29 -0.150 N4 #30 0.907 O5 #31 -0.520 O6 #32 -0.520 O7 #33 -0.570 H1 #34 0.000 H2 #35 0.000 H3 #36 0.000 H4 #37 0.000 H5 #38 0.000 H6 #39 0.000 H7 #40 0.000 H8 #41 0.150 H9 #42 0.150 H10 #43 0.150 H11 #44 0.000 H12 #45 0.000 H13 #46 0.150 H14 #47 0.150 H15 #48 0.150 H16 #49 0.150 H17 #50 0.400 H18 #51 0.000 H19 #52 0.000 H20 #53 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N1 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 O1 #10 0.000 O2 #11 0.000 C9 #12 0.000 S1 #13 0.000 C10 #14 0.000 N2 #15 0.000 C11 #16 0.000 C12 #17 0.000 C13 #18 0.000 N3 #19 0.000 C14 #20 0.000 O3 #21 0.000 O4 #22 0.000 C15 #23 0.000 C16 #24 0.000 C17 #25 0.000 C18 #26 0.000 C19 #27 0.000 C20 #28 0.000 C21 #29 0.000 N4 #30 0.000 O5 #31 0.000 O6 #32 0.000 O7 #33 0.000 H1 #34 0.000 H2 #35 0.000 H3 #36 0.000 H4 #37 0.000 H5 #38 0.000 H6 #39 0.000 H7 #40 0.000 H8 #41 0.000 H9 #42 0.000 H10 #43 0.000 H11 #44 0.000 H12 #45 0.000 H13 #46 0.000 H14 #47 0.000 H15 #48 0.000 H16 #49 0.000 H17 #50 0.000 H18 #51 0.000 H19 #52 0.000 H20 #53 0.000 +model JANMAM RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 25 O1 #2 6 O2 #3 32 O3 #4 32 O4 #5 6 N1 #6 9 C1 #7 1 C2 #8 3 C3 #9 37 C4 #10 37 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H6 #23 21 + # symb P1 #1 PO3 O1 #2 OPO2 O2 #3 O2P O3 #4 O2P O4 #5 -O- N1 #6 N=C C1 #7 CR C2 #8 C=N C3 #9 CB C4 #10 CB C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H6 #23 HO + # char P1 #1 1.278 O1 #2 -0.551 O2 #3 -0.950 O3 #4 -0.950 O4 #5 -0.337 N1 #6 -0.513 C1 #7 0.280 C2 #8 0.257 C3 #9 0.086 C4 #10 -0.150 C5 #11 -0.150 C6 #12 -0.150 C7 #13 -0.150 C8 #14 -0.150 H1 #15 0.150 H2 #16 0.150 H3 #17 0.150 H4 #18 0.150 H5 #19 0.150 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H6 #23 0.400 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 -0.500 O3 #4 -0.500 O4 #5 0.000 N1 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H6 #23 0.000 +model JAPFAH RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 6 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 6 SUBRING 2 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 C1 #2 1 C2 #3 1 C3 #4 3 N1 #5 9 N2 #6 10 C4 #7 3 O1 #8 7 C5 #9 2 C6 #10 2 C7 #11 37 C8 #12 37 C9 #13 37 N3 #14 45 O2 #15 32 O3 #16 32 C10 #17 37 C11 #18 37 C12 #19 37 H1 #20 5 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 + # symb S1 #1 S C1 #2 CR C2 #3 CR C3 #4 C=N N1 #5 N=C N2 #6 NC=O C4 #7 C=ON O1 #8 O=CN C5 #9 C=C C6 #10 C=C C7 #11 CB C8 #12 CB C9 #13 CB N3 #14 NO2 O2 #15 O2N O3 #16 O2N C10 #17 CB C11 #18 CB C12 #19 CB H1 #20 HC H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC + # char S1 #1 -0.371 C1 #2 0.300 C2 #3 0.230 C3 #4 0.651 N1 #5 -0.621 N2 #6 -0.420 C4 #7 0.616 O1 #8 -0.570 C5 #9 0.185 C6 #10 -0.178 C7 #11 0.028 C8 #12 -0.150 C9 #13 0.133 N3 #14 0.907 O2 #15 -0.520 O3 #16 -0.520 C10 #17 -0.150 C11 #18 -0.150 C12 #19 -0.150 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.150 H6 #25 0.150 H7 #26 0.150 H8 #27 0.150 H9 #28 0.150 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 N1 #5 0.000 N2 #6 0.000 C4 #7 0.000 O1 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 N3 #14 0.000 O2 #15 0.000 O3 #16 0.000 C10 #17 0.000 C11 #18 0.000 C12 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 +model JATBIP + # ty N1 #1 9 C1 #2 3 O1 #3 6 C2 #4 1 O2 #5 6 C3 #6 1 H1 #7 5 H2 #8 5 H3 #9 5 H4 #10 5 H5 #11 5 H6 #12 5 N1B #13 9 C1B #14 3 O1B #15 6 O2B #16 6 C2B #17 1 C3B #18 1 H1B #19 5 H2B #20 5 H3B #21 5 H4B #22 5 H5B #23 5 H6B #24 5 + # symb N1 #1 N=C C1 #2 C=N O1 #3 OC=N C2 #4 CR O2 #5 OC=N C3 #6 CR H1 #7 HC H2 #8 HC H3 #9 HC H4 #10 HC H5 #11 HC H6 #12 HC N1B #13 N=C C1B #14 C=N O1B #15 OC=N O2B #16 OC=N C2B #17 CR C3B #18 CR H1B #19 HC H2B #20 HC H3B #21 HC H4B #22 HC H5B #23 HC H6B #24 HC + # char N1 #1 -0.450 C1 #2 0.750 O1 #3 -0.430 C2 #4 0.280 O2 #5 -0.430 C3 #6 0.280 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 N1B #13 -0.450 C1B #14 0.750 O1B #15 -0.430 O2B #16 -0.430 C2B #17 0.280 C3B #18 0.280 H1B #19 0.000 H2B #20 0.000 H3B #21 0.000 H4B #22 0.000 H5B #23 0.000 H6B #24 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 O1 #3 0.000 C2 #4 0.000 O2 #5 0.000 C3 #6 0.000 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 N1B #13 0.000 C1B #14 0.000 O1B #15 0.000 O2B #16 0.000 C2B #17 0.000 C3B #18 0.000 H1B #19 0.000 H2B #20 0.000 H3B #21 0.000 H4B #22 0.000 H5B #23 0.000 H6B #24 0.000 +model JATCOW RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty S1 #1 44 C1 #2 63 N1 #3 66 N2 #4 38 C2 #5 37 N3 #6 38 C3 #7 37 C4 #8 63 C5 #9 64 CL1 #10 12 N4 #11 40 H1 #12 5 H2 #13 28 H3 #14 28 + # symb S1 #1 STHI C1 #2 C5A N1 #3 N5B N2 #4 NPYD C2 #5 CB N3 #6 NPYD C3 #7 CB C4 #8 C5A C5 #9 C5B CL1 #10 CL N4 #11 NC=N H1 #12 HC H2 #13 HNCN H3 #14 HNCN + # char S1 #1 -0.080 C1 #2 0.502 N1 #3 -0.565 N2 #4 -0.566 C2 #5 0.470 N3 #6 -0.620 C3 #7 0.410 C4 #8 0.040 C5 #9 0.483 CL1 #10 -0.124 N4 #11 -0.900 H1 #12 0.150 H2 #13 0.400 H3 #14 0.400 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 0.000 N2 #4 0.000 C2 #5 0.000 N3 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 CL1 #10 0.000 N4 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 +model JATLOF RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C1 #2 63 N1 #3 66 C2 #4 64 C3 #5 63 N2 #6 56 C4 #7 57 N3 #8 56 N4 #9 56 C5 #10 1 S2 #11 15 C6 #12 1 C7 #13 1 C8 #14 3 N5 #15 40 N6 #16 9 S3 #17 18 N7 #18 43 O1 #19 32 O2 #20 32 H1 #21 5 H2 #22 36 H3 #23 36 H4 #24 36 H5 #25 36 H6 #26 36 H7 #27 5 H8 #28 5 H9 #29 5 H10 #30 5 H11 #31 5 H12 #32 5 H13 #33 28 H14 #34 28 H15 #35 28 H16 #36 28 + # symb S1 #1 STHI C1 #2 C5A N1 #3 N5B C2 #4 C5B C3 #5 C5A N2 #6 NGD+ C4 #7 CGD+ N3 #8 NGD+ N4 #9 NGD+ C5 #10 CR S2 #11 S C6 #12 CR C7 #13 CR C8 #14 C=N N5 #15 NC=N N6 #16 N=C S3 #17 SO2N N7 #18 NSO2 O1 #19 O2S O2 #20 O2S H1 #21 HC H2 #22 HGD+ H3 #23 HGD+ H4 #24 HGD+ H5 #25 HGD+ H6 #26 HGD+ H7 #27 HC H8 #28 HC H9 #29 HC H10 #30 HC H11 #31 HC H12 #32 HC H13 #33 HNCN H14 #34 HNCN H15 #35 HNSO H16 #36 HNSO + # char S1 #1 -0.080 C1 #2 0.636 N1 #3 -0.565 C2 #4 0.046 C3 #5 -0.110 N2 #6 -0.775 C4 #7 1.200 N3 #8 -0.967 N4 #9 -0.967 C5 #10 0.411 S2 #11 -0.460 C6 #12 0.230 C7 #13 0.061 C8 #14 0.439 N5 #15 -0.850 N6 #16 -0.638 S3 #17 1.626 N7 #18 -0.978 O1 #19 -0.650 O2 #20 -0.650 H1 #21 0.150 H2 #22 0.450 H3 #23 0.450 H4 #24 0.450 H5 #25 0.450 H6 #26 0.450 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.400 H14 #34 0.400 H15 #35 0.420 H16 #36 0.420 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 0.000 C2 #4 0.000 C3 #5 0.000 N2 #6 0.333 C4 #7 0.000 N3 #8 0.333 N4 #9 0.333 C5 #10 0.000 S2 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 N5 #15 0.000 N6 #16 0.000 S3 #17 0.000 N7 #18 0.000 O1 #19 0.000 O2 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H16 #36 0.000 +model JATMEW RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C1 #2 63 N1 #3 66 C2 #4 64 C3 #5 63 N2 #6 40 N3 #7 8 C4 #8 1 C5 #9 1 C6 #10 1 S2 #11 15 C7 #12 1 C8 #13 1 C9 #14 3 N4 #15 40 N5 #16 9 S3 #17 18 N6 #18 43 O1 #19 32 O2 #20 32 H1 #21 5 H2 #22 28 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 H7 #27 5 H8 #28 5 H9 #29 5 H10 #30 5 H11 #31 5 H12 #32 5 H13 #33 5 H14 #34 5 H15 #35 28 H16 #36 28 H17 #37 28 H18 #38 28 + # symb S1 #1 STHI C1 #2 C5A N1 #3 N5B C2 #4 C5B C3 #5 C5A N2 #6 NC=N N3 #7 NR C4 #8 CR C5 #9 CR C6 #10 CR S2 #11 S C7 #12 CR C8 #13 CR C9 #14 C=N N4 #15 NC=N N5 #16 N=C S3 #17 SO2N N6 #18 NSO2 O1 #19 O2S O2 #20 O2S H1 #21 HC H2 #22 HNCN H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC H7 #27 HC H8 #28 HC H9 #29 HC H10 #30 HC H11 #31 HC H12 #32 HC H13 #33 HC H14 #34 HC H15 #35 HNCN H16 #36 HNCN H17 #37 HNSO H18 #38 HNSO + # char S1 #1 -0.080 C1 #2 0.462 N1 #3 -0.565 C2 #4 0.046 C3 #5 -0.110 N2 #6 -0.495 N3 #7 -0.529 C4 #8 0.270 C5 #9 0.270 C6 #10 0.411 S2 #11 -0.460 C7 #12 0.230 C8 #13 0.061 C9 #14 0.439 N4 #15 -0.850 N5 #16 -0.638 S3 #17 1.626 N6 #18 -0.978 O1 #19 -0.650 O2 #20 -0.650 H1 #21 0.150 H2 #22 0.400 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.400 H16 #36 0.400 H17 #37 0.420 H18 #38 0.420 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 0.000 C2 #4 0.000 C3 #5 0.000 N2 #6 0.000 N3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 S2 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 N4 #15 0.000 N5 #16 0.000 S3 #17 0.000 N6 #18 0.000 O1 #19 0.000 O2 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H16 #36 0.000 H17 #37 0.000 H18 #38 0.000 +model JAVGAO RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 O1 #2 32 O2 #3 32 N1 #4 8 N2 #5 45 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 C7C #20 1 H5C #21 5 H6C #22 5 H7C #23 5 + # symb S1 #1 S O1 #2 O2N O2 #3 O2N N1 #4 NR N2 #5 NO2 C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC C7C #20 CR H5C #21 HC H6C #22 HC H7C #23 HC + # char S1 #1 -0.085 O1 #2 -0.520 O2 #3 -0.520 N1 #4 -0.557 N2 #5 0.907 C1 #6 0.102 C2 #7 0.133 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 -0.150 C7 #12 0.270 H1 #13 0.150 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 C7C #20 0.270 H5C #21 0.000 H6C #22 0.000 H7C #23 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 N2 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 C7C #20 0.000 H5C #21 0.000 H6C #22 0.000 H7C #23 0.000 +model JAWJIA RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 7 PI PAIR ON SP2-N 9 SUBRING 2 has 6 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 21 SUBRING 1 has 2 PI electrons + # ty N1 #1 10 C1 #2 3 N2 #3 9 C2 #4 2 C3 #5 2 C4 #6 3 N3 #7 10 C5 #8 3 N4 #9 10 N5 #10 40 O1 #11 7 C6 #12 1 O2 #13 7 C7 #14 1 C8 #15 1 C9 #16 1 C10 #17 1 C11 #18 1 O3 #19 6 O4 #20 6 O5 #21 6 O6 #22 6 H1 #23 28 H2 #24 28 H3 #25 28 H4 #26 5 H5 #27 5 H6 #28 5 H7 #29 5 H8 #30 5 H9 #31 5 H10 #32 5 H11 #33 5 H12 #34 5 H13 #35 21 H14 #36 21 H15 #37 21 + # symb N1 #1 NC=O C1 #2 CGD N2 #3 N=C C2 #4 C=C C3 #5 C=C C4 #6 C=ON N3 #7 NC=O C5 #8 CONN N4 #9 NC=O N5 #10 NC=N O1 #11 O=CN C6 #12 CR O2 #13 O=CN C7 #14 CR C8 #15 CR C9 #16 CR C10 #17 CR C11 #18 CR O3 #19 OR O4 #20 OR O5 #21 OR O6 #22 OR H1 #23 HNCO H2 #24 HNCN H3 #25 HNCN H4 #26 HC H5 #27 HC H6 #28 HC H7 #29 HC H8 #30 HC H9 #31 HC H10 #32 HC H11 #33 HC H12 #34 HC H13 #35 HOR H14 #36 HOR H15 #37 HOR + # char N1 #1 -0.490 C1 #2 0.560 N2 #3 -0.621 C2 #4 0.280 C3 #5 0.123 C4 #6 0.616 N3 #7 -0.469 C5 #8 0.690 N4 #9 -0.469 N5 #10 -0.850 O1 #11 -0.570 C6 #12 0.300 O2 #13 -0.570 C7 #14 0.580 C8 #15 0.280 C9 #16 0.280 C10 #17 0.280 C11 #18 0.280 O3 #19 -0.680 O4 #20 -0.680 O5 #21 -0.560 O6 #22 -0.680 H1 #23 0.370 H2 #24 0.400 H3 #25 0.400 H4 #26 0.000 H5 #27 0.000 H6 #28 0.000 H7 #29 0.000 H8 #30 0.000 H9 #31 0.000 H10 #32 0.000 H11 #33 0.000 H12 #34 0.000 H13 #35 0.400 H14 #36 0.400 H15 #37 0.400 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 C5 #8 0.000 N4 #9 0.000 N5 #10 0.000 O1 #11 0.000 C6 #12 0.000 O2 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 O3 #19 0.000 O4 #20 0.000 O5 #21 0.000 O6 #22 0.000 H1 #23 0.000 H2 #24 0.000 H3 #25 0.000 H4 #26 0.000 H5 #27 0.000 H6 #28 0.000 H7 #29 0.000 H8 #30 0.000 H9 #31 0.000 H10 #32 0.000 H11 #33 0.000 H12 #34 0.000 H13 #35 0.000 H14 #36 0.000 H15 #37 0.000 +model JAWMAV RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty O1 #1 6 N1 #2 8 C1 #3 20 C2 #4 20 H1 #5 5 H2 #6 5 H3 #7 5 H4 #8 23 H5 #9 21 C2G #10 20 H2G #11 5 H3G #12 5 + # symb O1 #1 OR N1 #2 NR C1 #3 CR4R C2 #4 CR4R H1 #5 HC H2 #6 HC H3 #7 HC H4 #8 HNR H5 #9 HOR C2G #10 CR4R H2G #11 HC H3G #12 HC + # char O1 #1 -0.658 N1 #2 -0.779 C1 #3 0.258 C2 #4 0.210 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H4 #8 0.360 H5 #9 0.400 C2G #10 0.210 H2G #11 0.000 H3G #12 0.000 + # fchar O1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 H5 #9 0.000 C2G #10 0.000 H2G #11 0.000 H3G #12 0.000 +model JAWVEI RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 0 PI electrons + # ty O1 #1 6 O2 #2 6 O3 #3 6 C1 #4 2 C2 #5 1 C3 #6 22 C4 #7 22 C5 #8 1 C6 #9 1 C7 #10 4 C8 #11 2 C9 #12 2 C10 #13 2 C11 #14 1 H1 #15 21 H2 #16 21 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 5 + # symb O1 #1 OR O2 #2 OR O3 #3 OR C1 #4 C=C C2 #5 CR C3 #6 CR3R C4 #7 CR3R C5 #8 CR C6 #9 CR C7 #10 =C= C8 #11 C=C C9 #12 C=C C10 #13 C=C C11 #14 CR H1 #15 HOR H2 #16 HOR H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HC + # char O1 #1 -0.680 O2 #2 -0.296 O3 #3 -0.680 C1 #4 -0.211 C2 #5 0.513 C3 #6 -0.047 C4 #7 -0.047 C5 #8 0.375 C6 #9 0.138 C7 #10 -0.130 C8 #11 -0.085 C9 #12 -0.138 C10 #13 -0.300 C11 #14 0.138 H1 #15 0.400 H2 #16 0.400 H3 #17 0.000 H4 #18 0.100 H5 #19 0.100 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.150 H10 #24 0.150 H11 #25 0.150 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 +model JAWZEM RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 25 O1 #2 32 O2 #3 32 N1 #4 39 N2 #5 66 N3 #6 39 N4 #7 66 C1 #8 63 C2 #9 63 C3 #10 64 C4 #11 63 C5 #12 64 C6 #13 63 H1 #14 5 H2 #15 5 H3 #16 23 H4 #17 5 H5 #18 5 H6 #19 23 + # symb P1 #1 PO2 O1 #2 O2P O2 #3 O2P N1 #4 NPYL N2 #5 N5B N3 #6 NPYL N4 #7 N5B C1 #8 C5A C2 #9 C5A C3 #10 C5B C4 #11 C5A C5 #12 C5B C6 #13 C5A H1 #14 HC H2 #15 HC H3 #16 HPYL H4 #17 HC H5 #18 HC H6 #19 HPYL + # char P1 #1 1.284 O1 #2 -0.950 O2 #3 -0.950 N1 #4 0.033 N2 #5 -0.565 N3 #6 0.033 N4 #7 -0.565 C1 #8 -0.006 C2 #9 -0.302 C3 #10 0.077 C4 #11 -0.006 C5 #12 0.077 C6 #13 -0.302 H1 #14 0.150 H2 #15 0.150 H3 #16 0.270 H4 #17 0.150 H5 #18 0.150 H6 #19 0.270 + # fchar P1 #1 0.000 O1 #2 -0.500 O2 #3 -0.500 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 +model JAZGOG RING 1 HAS 4 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING PI PAIR ON SP2-N 7 SUBRING 2 has 2 PI electrons PI PAIR ON O OR S 6 SUBRING 3 has 2 PI electrons SUBRING 4 has 0 PI electrons + # ty S1 #1 18 O1 #2 32 O2 #3 32 O3 #4 6 O4 #5 7 O5 #6 6 N1 #7 43 C1 #8 3 C2 #9 22 C3 #10 1 C4 #11 1 C5 #12 1 C6 #13 1 C7 #14 1 C8 #15 1 C9 #16 1 C10 #17 1 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S O3 #4 OR O4 #5 O=CO O5 #6 OC=O N1 #7 NSO2 C1 #8 COO C2 #9 CR3R C3 #10 CR C4 #11 CR C5 #12 CR C6 #13 CR C7 #14 CR C8 #15 CR C9 #16 CR C10 #17 CR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC + # char S1 #1 1.333 O1 #2 -0.650 O2 #3 -0.650 O3 #4 -0.065 O4 #5 -0.570 O5 #6 -0.430 N1 #7 -0.452 C1 #8 0.720 C2 #9 0.284 C3 #10 0.095 C4 #11 0.000 C5 #12 0.000 C6 #13 0.280 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.105 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 O5 #6 0.000 N1 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 +model JAZVIP10 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 16 SUBRING 1 has 2 PI electrons + # ty N1 #1 39 N2 #2 65 C1 #3 64 N3 #4 66 C2 #5 63 C3 #6 3 S1 #7 16 N4 #8 10 C4 #9 1 C5 #10 1 C6 #11 1 C7 #12 1 C8 #13 1 O1 #14 6 O2 #15 6 O3 #16 6 O4 #17 6 S2 #18 18 O5 #19 32 O6 #20 32 N5 #21 43 H1 #22 5 H2 #23 28 H3 #24 28 H4 #25 5 H5 #26 5 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 5 H10 #31 21 H11 #32 21 H12 #33 28 H13 #34 28 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B N3 #4 N5B C2 #5 C5A C3 #6 C=SN S1 #7 S=C N4 #8 NC=S C4 #9 CR C5 #10 CR C6 #11 CR C7 #12 CR C8 #13 CR O1 #14 OR O2 #15 OR O3 #16 OR O4 #17 OSO2 S2 #18 SO3 O5 #19 O2S O6 #20 O2S N5 #21 NSO3 H1 #22 HC H2 #23 HNCS H3 #24 HNCS H4 #25 HC H5 #26 HC H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HC H10 #31 HOR H11 #32 HOR H12 #33 HNSO H13 #34 HNSO + # char N1 #1 0.314 N2 #2 -0.707 C1 #3 0.430 N3 #4 -0.565 C2 #5 0.037 C3 #6 0.526 S1 #7 -0.380 N4 #8 -0.800 C4 #9 0.536 C5 #10 0.280 C6 #11 0.280 C7 #12 0.280 C8 #13 0.280 O1 #14 -0.680 O2 #15 -0.680 O3 #16 -0.560 O4 #17 -0.464 S2 #18 1.622 O5 #19 -0.650 O6 #20 -0.650 N5 #21 -0.978 H1 #22 0.150 H2 #23 0.370 H3 #24 0.370 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.400 H11 #32 0.400 H12 #33 0.420 H13 #34 0.420 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 N3 #4 0.000 C2 #5 0.000 C3 #6 0.000 S1 #7 0.000 N4 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 O1 #14 0.000 O2 #15 0.000 O3 #16 0.000 O4 #17 0.000 S2 #18 0.000 O5 #19 0.000 O6 #20 0.000 N5 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 +model JAZZOZ10 RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 9 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 22 SUBRING 1 has 2 PI electrons + # ty N1 #1 38 C1 #2 37 N2 #3 38 C2 #4 63 C3 #5 64 C4 #6 37 N3 #7 66 C5 #8 63 N4 #9 39 N5 #10 40 S1 #11 18 O1 #12 32 O2 #13 32 N6 #14 43 C6 #15 1 C7 #16 1 C8 #17 1 C9 #18 1 C10 #19 1 O3 #20 6 O4 #21 6 O5 #22 6 O6 #23 6 H1 #24 5 H2 #25 28 H3 #26 28 H4 #27 28 H5 #28 28 H6 #29 5 H7 #30 5 H8 #31 5 H9 #32 5 H10 #33 5 H11 #34 5 H12 #35 21 H13 #36 21 H14 #37 21 + # symb N1 #1 NPYD C1 #2 CB N2 #3 NPYD C2 #4 C5A C3 #5 C5B C4 #6 CB N3 #7 N5B C5 #8 C5A N4 #9 NPYL N5 #10 NC=N S1 #11 SO2N O1 #12 O2S O2 #13 O2S N6 #14 NSO2 C6 #15 CR C7 #16 CR C8 #17 CR C9 #18 CR C10 #19 CR O3 #20 OR O4 #21 OR O5 #22 OR O6 #23 OR H1 #24 HC H2 #25 HNCN H3 #26 HNCN H4 #27 HNSO H5 #28 HNSO H6 #29 HC H7 #30 HC H8 #31 HC H9 #32 HC H10 #33 HC H11 #34 HC H12 #35 HOR H13 #36 HOR H14 #37 HOR + # char N1 #1 -0.620 C1 #2 0.720 N2 #3 -0.567 C2 #4 0.105 C3 #5 0.227 C4 #6 0.301 N3 #7 -0.565 C5 #8 0.037 N4 #9 0.048 N5 #10 -0.900 S1 #11 1.447 O1 #12 -0.650 O2 #13 -0.650 N6 #14 -0.978 C6 #15 0.536 C7 #16 0.280 C8 #17 0.280 C9 #18 0.280 C10 #19 0.280 O3 #20 -0.680 O4 #21 -0.680 O5 #22 -0.560 O6 #23 -0.680 H1 #24 0.150 H2 #25 0.400 H3 #26 0.400 H4 #27 0.420 H5 #28 0.420 H6 #29 0.000 H7 #30 0.000 H8 #31 0.000 H9 #32 0.000 H10 #33 0.000 H11 #34 0.000 H12 #35 0.400 H13 #36 0.400 H14 #37 0.400 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 C5 #8 0.000 N4 #9 0.000 N5 #10 0.000 S1 #11 0.000 O1 #12 0.000 O2 #13 0.000 N6 #14 0.000 C6 #15 0.000 C7 #16 0.000 C8 #17 0.000 C9 #18 0.000 C10 #19 0.000 O3 #20 0.000 O4 #21 0.000 O5 #22 0.000 O6 #23 0.000 H1 #24 0.000 H2 #25 0.000 H3 #26 0.000 H4 #27 0.000 H5 #28 0.000 H6 #29 0.000 H7 #30 0.000 H8 #31 0.000 H9 #32 0.000 H10 #33 0.000 H11 #34 0.000 H12 #35 0.000 H13 #36 0.000 H14 #37 0.000 +model JEBFEB01 RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 21 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 25 O1 #2 32 N1 #3 40 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 H1 #13 28 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 N1B #21 40 C7B #22 37 C9B #23 37 H1B #24 28 C8B #25 37 H8B #26 5 H7B #27 5 + # symb P1 #1 PO O1 #2 OP N1 #3 NC=C C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB H1 #13 HNCC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC N1B #21 NC=C C7B #22 CB C9B #23 CB H1B #24 HNCC C8B #25 CB H8B #26 HC H7B #27 HC + # char P1 #1 1.391 O1 #2 -0.700 N1 #3 -0.776 C1 #4 -0.139 C2 #5 -0.150 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.150 C7 #10 0.100 C8 #11 -0.150 C9 #12 -0.150 H1 #13 0.400 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.150 H7 #19 0.150 H8 #20 0.150 N1B #21 -0.776 C7B #22 0.100 C9B #23 -0.150 H1B #24 0.400 C8B #25 -0.150 H8B #26 0.150 H7B #27 0.150 + # fchar P1 #1 0.000 O1 #2 0.000 N1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 N1B #21 0.000 C7B #22 0.000 C9B #23 0.000 H1B #24 0.000 C8B #25 0.000 H8B #26 0.000 H7B #27 0.000 +model JECVES RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty N1 #1 39 C1 #2 63 N2 #3 66 C2 #4 64 C3 #5 63 N3 #6 45 O1 #7 32 O2 #8 32 C4 #9 1 C5 #10 1 O3 #11 6 C6 #12 1 N4 #13 8 C7 #14 22 C8 #15 22 C9 #16 1 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 21 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 H14 #30 5 + # symb N1 #1 NPYL C1 #2 C5A N2 #3 N5B C2 #4 C5B C3 #5 C5A N3 #6 NO2 O1 #7 O2N O2 #8 O2N C4 #9 CR C5 #10 CR O3 #11 OR C6 #12 CR N4 #13 NR C7 #14 CR3R C8 #15 CR3R C9 #16 CR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HOR H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC H14 #30 HC + # char N1 #1 0.048 C1 #2 0.267 N2 #3 -0.565 C2 #4 0.077 C3 #5 -0.302 N3 #6 0.960 O1 #7 -0.520 O2 #8 -0.520 C4 #9 0.256 C5 #10 0.280 O3 #11 -0.680 C6 #12 0.270 N4 #13 -0.586 C7 #14 -0.042 C8 #15 -0.037 C9 #16 0.095 H1 #17 0.150 H2 #18 0.150 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.400 H7 #23 0.000 H8 #24 0.000 H9 #25 0.100 H10 #26 0.100 H11 #27 0.100 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 N3 #6 0.000 O1 #7 0.000 O2 #8 0.000 C4 #9 0.000 C5 #10 0.000 O3 #11 0.000 C6 #12 0.000 N4 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 +model JECVUI + # ty C1 #1 1 C2 #2 3 O1 #3 7 N1 #4 10 O2 #5 6 C3 #6 3 O3 #7 7 N2 #8 10 C4 #9 1 C5 #10 3 O4 #11 7 N3 #12 10 C6 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 28 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 28 H9 #22 5 H10 #23 5 H11 #24 5 + # symb C1 #1 CR C2 #2 C=ON O1 #3 O=CN N1 #4 NC=O O2 #5 OC=O C3 #6 C=ON O3 #7 O=CN N2 #8 NC=O C4 #9 CR C5 #10 CONN O4 #11 O=CN N3 #12 NC=O C6 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HNCO H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HNCO H9 #22 HC H10 #23 HC H11 #24 HC + # char C1 #1 0.061 C2 #2 0.569 O1 #3 -0.570 N1 #4 -0.084 O2 #5 -0.185 C3 #6 0.780 O3 #7 -0.570 N2 #8 -0.730 C4 #9 0.300 C5 #10 0.690 O4 #11 -0.570 N3 #12 -0.730 C6 #13 0.300 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.370 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.370 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 O1 #3 0.000 N1 #4 0.000 O2 #5 0.000 C3 #6 0.000 O3 #7 0.000 N2 #8 0.000 C4 #9 0.000 C5 #10 0.000 O4 #11 0.000 N3 #12 0.000 C6 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 +model JECYIZ RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons SUBRING 2 has 0 PI electrons + # ty P1 #1 25 O1 #2 32 N1 #3 8 N2 #4 8 N3 #5 9 N4 #6 53 N5 #7 47 C1 #8 1 C2 #9 1 C3 #10 1 C4 #11 1 C5 #12 1 C6 #13 1 C7 #14 1 C8 #15 1 C9 #16 1 C10 #17 1 C11 #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 5 H13 #31 5 H14 #32 5 H15 #33 5 H16 #34 5 H17 #35 5 H18 #36 5 H19 #37 5 H20 #38 5 H21 #39 5 H22 #40 5 + # symb P1 #1 PO O1 #2 OP N1 #3 NR N2 #4 NR N3 #5 N=N N4 #6 =N= N5 #7 NAZT C1 #8 CR C2 #9 CR C3 #10 CR C4 #11 CR C5 #12 CR C6 #13 CR C7 #14 CR C8 #15 CR C9 #16 CR C10 #17 CR C11 #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HC H13 #31 HC H14 #32 HC H15 #33 HC H16 #34 HC H17 #35 HC H18 #36 HC H19 #37 HC H20 #38 HC H21 #39 HC H22 #40 HC + # char P1 #1 1.236 O1 #2 -0.700 N1 #3 -0.808 N2 #4 -0.808 N3 #5 -0.564 N4 #6 0.688 N5 #7 -0.370 C1 #8 0.270 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.270 C7 #14 0.270 C8 #15 0.270 C9 #16 0.246 C10 #17 0.000 C11 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 H19 #37 0.000 H20 #38 0.000 H21 #39 0.000 H22 #40 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 N4 #6 0.000 N5 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 H19 #37 0.000 H20 #38 0.000 H21 #39 0.000 H22 #40 0.000 +model JEFRAN RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons + # ty S1 #1 15 S2 #2 16 N1 #3 9 N2 #4 9 N3 #5 9 N4 #6 10 N5 #7 40 N6 #8 40 C1 #9 3 C2 #10 3 C3 #11 3 C4 #12 3 C5 #13 1 C6 #14 1 C7 #15 1 C8 #16 1 C9 #17 1 C10 #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 5 H13 #31 5 H14 #32 5 H15 #33 5 H16 #34 5 H17 #35 5 H18 #36 5 + # symb S1 #1 S S2 #2 S=C N1 #3 N=C N2 #4 N=C N3 #5 N=C N4 #6 NC=S N5 #7 NC=N N6 #8 NC=N C1 #9 C=N C2 #10 C=N C3 #11 C=N C4 #12 C=SN C5 #13 CR C6 #14 CR C7 #15 CR C8 #16 CR C9 #17 CR C10 #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HC H13 #31 HC H14 #32 HC H15 #33 HC H16 #34 HC H17 #35 HC H18 #36 HC + # char S1 #1 -0.282 S2 #2 -0.380 N1 #3 -0.661 N2 #4 -0.661 N3 #5 -0.661 N4 #6 -0.660 N5 #7 -0.788 N6 #8 -0.788 C1 #9 0.641 C2 #10 0.641 C3 #11 0.872 C4 #12 0.651 C5 #13 0.300 C6 #14 0.300 C7 #15 0.369 C8 #16 0.369 C9 #17 0.369 C10 #18 0.369 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 N4 #6 0.000 N5 #7 0.000 N6 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 H17 #35 0.000 H18 #36 0.000 +model JEHCUU01 RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 9 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 38 C1 #2 37 N2 #3 38 C2 #4 63 C3 #5 64 C4 #6 37 N3 #7 66 C5 #8 63 N4 #9 39 N5 #10 40 O1 #11 6 C6 #12 1 C7 #13 1 H1 #14 28 H2 #15 28 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H3 #22 5 + # symb N1 #1 NPYD C1 #2 CB N2 #3 NPYD C2 #4 C5A C3 #5 C5B C4 #6 CB N3 #7 N5B C5 #8 C5A N4 #9 NPYL N5 #10 NC=N O1 #11 OC=N C6 #12 CR C7 #13 CR H1 #14 HNCN H2 #15 HNCN H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H3 #22 HC + # char N1 #1 -0.620 C1 #2 0.720 N2 #3 -0.567 C2 #4 0.105 C3 #5 0.227 C4 #6 0.393 N3 #7 -0.565 C5 #8 0.037 N4 #9 0.048 N5 #10 -0.900 O1 #11 -0.363 C6 #12 0.280 C7 #13 0.256 H1 #14 0.400 H2 #15 0.400 H4 #16 0.000 H5 #17 0.000 H6 #18 0.150 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H3 #22 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 C5 #8 0.000 N4 #9 0.000 N5 #10 0.000 O1 #11 0.000 C6 #12 0.000 C7 #13 0.000 H1 #14 0.000 H2 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H3 #22 0.000 +model JEHXOJ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S2 #1 18 O4 #2 32 O5 #3 32 N1 #4 43 N2 #5 34 C7 #6 37 C8 #7 37 C9 #8 37 C10 #9 37 C11 #10 37 C12 #11 37 H1 #12 28 H2 #13 36 H3 #14 36 H4 #15 36 H10 #16 5 H11 #17 5 H12 #18 5 H13 #19 5 H14 #20 5 + # symb S2 #1 SO2N O4 #2 O2S O5 #3 O2S N1 #4 NSO2 N2 #5 NR+ C7 #6 CB C8 #7 CB C9 #8 CB C10 #9 CB C11 #10 CB C12 #11 CB H1 #12 HNSO H2 #13 HNR+ H3 #14 HNR+ H4 #15 HNR+ H10 #16 HC H11 #17 HC H12 #18 HC H13 #19 HC H14 #20 HC + # char S2 #1 1.447 O4 #2 -0.650 O5 #3 -0.650 N1 #4 -0.393 N2 #5 -0.515 C7 #6 -0.009 C8 #7 -0.150 C9 #8 -0.150 C10 #9 -0.150 C11 #10 -0.150 C12 #11 -0.150 H1 #12 0.420 H2 #13 0.450 H3 #14 0.450 H4 #15 0.450 H10 #16 0.150 H11 #17 0.150 H12 #18 0.150 H13 #19 0.150 H14 #20 0.150 + # fchar S2 #1 0.000 O4 #2 0.000 O5 #3 0.000 N1 #4 0.000 N2 #5 1.000 C7 #6 0.000 C8 #7 0.000 C9 #8 0.000 C10 #9 0.000 C11 #10 0.000 C12 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H10 #16 0.000 H11 #17 0.000 H12 #18 0.000 H13 #19 0.000 H14 #20 0.000 +model JELKUG RING 1 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons + # ty CL1 #1 12 CL2 #2 12 P1 #3 25 O1 #4 32 O2 #5 6 C1 #6 1 C2 #7 1 C3 #8 1 C4 #9 1 C5 #10 1 C6 #11 1 H1 #12 21 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 H9 #20 5 H10 #21 5 H11 #22 5 + # symb CL1 #1 CL CL2 #2 CL P1 #3 PO O1 #4 OP O2 #5 OR C1 #6 CR C2 #7 CR C3 #8 CR C4 #9 CR C5 #10 CR C6 #11 CR H1 #12 HOR H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC H9 #20 HC H10 #21 HC H11 #22 HC + # char CL1 #1 -0.316 CL2 #2 -0.316 P1 #3 1.332 O1 #4 -0.700 O2 #5 -0.680 C1 #6 0.280 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.400 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 H11 #22 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 P1 #3 0.000 O1 #4 0.000 O2 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 H10 #21 0.000 H11 #22 0.000 +model JELREX RING 1 HAS 2 SUBRINGS SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 32 N1 #2 67 C1 #3 3 C2 #4 3 O2 #5 7 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 N2 #12 38 C9 #13 37 N3 #14 38 C10 #15 37 C11 #16 37 C12 #17 37 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 + # symb O1 #1 OXN N1 #2 N2OX C1 #3 C=N C2 #4 C=OR O2 #5 O=CR C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB N2 #12 NPYD C9 #13 CB N3 #14 NPYD C10 #15 CB C11 #16 CB C12 #17 CB H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC + # char O1 #1 -0.633 N1 #2 0.657 C1 #3 -0.082 C2 #4 0.484 O2 #5 -0.570 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.150 C7 #10 -0.028 C8 #11 0.086 N2 #12 -0.620 C9 #13 0.706 N3 #14 -0.620 C10 #15 0.160 C11 #16 -0.150 C12 #17 0.160 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.150 H6 #23 0.150 H7 #24 0.150 + # fchar O1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 O2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 N2 #12 0.000 C9 #13 0.000 N3 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 +model JELRIB RING 1 HAS 2 SUBRINGS SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty N1 #1 67 O1 #2 32 C1 #3 3 C2 #4 3 O2 #5 7 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 3 O3 #13 7 O4 #14 6 C10 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 + # symb N1 #1 N2OX O1 #2 OXN C1 #3 C=N C2 #4 C=OR O2 #5 O=CR C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 COO O3 #13 O=CO O4 #14 OC=O C10 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC + # char N1 #1 0.657 O1 #2 -0.633 C1 #3 0.004 C2 #4 0.484 O2 #5 -0.570 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.150 C7 #10 -0.028 C8 #11 0.086 C9 #12 0.720 O3 #13 -0.570 O4 #14 -0.430 C10 #15 0.280 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 + # fchar N1 #1 0.000 O1 #2 0.000 C1 #3 0.000 C2 #4 0.000 O2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 O3 #13 0.000 O4 #14 0.000 C10 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 +model JEMHIS + # ty P1 #1 25 O1 #2 6 O2 #3 32 O3 #4 32 F1 #5 11 C1 #6 1 F2 #7 11 N1 #8 34 C2 #9 1 H1 #10 24 H2 #11 36 H3 #12 36 H4 #13 36 H5 #14 5 H6 #15 5 + # symb P1 #1 PO3 O1 #2 OPO2 O2 #3 O2P O3 #4 O2P F1 #5 F C1 #6 CR F2 #7 F N1 #8 NR+ C2 #9 CR H1 #10 HOP H2 #11 HNR+ H3 #12 HNR+ H4 #13 HNR+ H5 #14 HC H6 #15 HC + # char P1 #1 1.171 O1 #2 -0.771 O2 #3 -0.950 O3 #4 -0.950 F1 #5 -0.340 C1 #6 0.680 F2 #7 -0.340 N1 #8 -0.853 C2 #9 0.503 H1 #10 0.500 H2 #11 0.450 H3 #12 0.450 H4 #13 0.450 H5 #14 0.000 H6 #15 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 -0.500 O3 #4 -0.500 F1 #5 0.000 C1 #6 0.000 F2 #7 0.000 N1 #8 1.000 C2 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 +model JEMWUT RING 1 HAS 1 SUBRINGS + # ty O1 #1 6 C1 #2 1 C2 #3 1 O2 #4 6 C3 #5 2 C4 #6 2 C5 #7 1 C6 #8 1 C7 #9 1 C8 #10 1 F1 #11 11 F2 #12 11 F3 #13 11 F4 #14 11 F5 #15 11 F6 #16 11 F7 #17 11 F8 #18 11 F9 #19 11 F10 #20 11 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 + # symb O1 #1 OR C1 #2 CR C2 #3 CR O2 #4 OC=C C3 #5 C=C C4 #6 C=C C5 #7 CR C6 #8 CR C7 #9 CR C8 #10 CR F1 #11 F F2 #12 F F3 #13 F F4 #14 F F5 #15 F F6 #16 F F7 #17 F F8 #18 F F9 #19 F F10 #20 F H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC + # char O1 #1 -0.560 C1 #2 0.280 C2 #3 0.280 O2 #4 -0.357 C3 #5 -0.061 C4 #6 -0.276 C5 #7 1.098 C6 #8 0.818 C7 #9 1.020 C8 #10 1.158 F1 #11 -0.340 F2 #12 -0.340 F3 #13 -0.340 F4 #14 -0.340 F5 #15 -0.340 F6 #16 -0.340 F7 #17 -0.340 F8 #18 -0.340 F9 #19 -0.340 F10 #20 -0.340 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 F1 #11 0.000 F2 #12 0.000 F3 #13 0.000 F4 #14 0.000 F5 #15 0.000 F6 #16 0.000 F7 #17 0.000 F8 #18 0.000 F9 #19 0.000 F10 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 +model JESFES + # ty SI1 #1 19 N1 #2 8 H1 #3 23 C1 #4 1 H2 #5 5 H3 #6 5 H4 #7 5 N1K #8 8 N1E #9 8 N1N #10 8 H1K #11 23 C1K #12 1 H1E #13 23 C1E #14 1 H1N #15 23 C1N #16 1 H2K #17 5 H3K #18 5 H4K #19 5 H2E #20 5 H3E #21 5 H4E #22 5 H2N #23 5 H3N #24 5 H4N #25 5 + # symb SI1 #1 SI N1 #2 NR H1 #3 HNR C1 #4 CR H2 #5 HC H3 #6 HC H4 #7 HC N1K #8 NR N1E #9 NR N1N #10 NR H1K #11 HNR C1K #12 CR H1E #13 HNR C1E #14 CR H1N #15 HNR C1N #16 CR H2K #17 HC H3K #18 HC H4K #19 HC H2E #20 HC H3E #21 HC H4E #22 HC H2N #23 HC H3N #24 HC H4N #25 HC + # char SI1 #1 1.388 N1 #2 -0.977 H1 #3 0.360 C1 #4 0.270 H2 #5 0.000 H3 #6 0.000 H4 #7 0.000 N1K #8 -0.977 N1E #9 -0.977 N1N #10 -0.977 H1K #11 0.360 C1K #12 0.270 H1E #13 0.360 C1E #14 0.270 H1N #15 0.360 C1N #16 0.270 H2K #17 0.000 H3K #18 0.000 H4K #19 0.000 H2E #20 0.000 H3E #21 0.000 H4E #22 0.000 H2N #23 0.000 H3N #24 0.000 H4N #25 0.000 + # fchar SI1 #1 0.000 N1 #2 0.000 H1 #3 0.000 C1 #4 0.000 H2 #5 0.000 H3 #6 0.000 H4 #7 0.000 N1K #8 0.000 N1E #9 0.000 N1N #10 0.000 H1K #11 0.000 C1K #12 0.000 H1E #13 0.000 C1E #14 0.000 H1N #15 0.000 C1N #16 0.000 H2K #17 0.000 H3K #18 0.000 H4K #19 0.000 H2E #20 0.000 H3E #21 0.000 H4E #22 0.000 H2N #23 0.000 H3N #24 0.000 H4N #25 0.000 +model JETJUN + # ty P1 #1 25 P2 #2 25 C1 #3 1 C2 #4 1 O1 #5 6 O2 #6 6 O3 #7 32 O4 #8 6 O5 #9 32 O6 #10 6 O7 #11 32 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 24 H5 #16 24 H6 #17 24 H9 #18 21 + # symb P1 #1 PO3 P2 #2 PO3 C1 #3 CR C2 #4 CR O1 #5 OR O2 #6 OPO2 O3 #7 OP O4 #8 OPO2 O5 #9 O2P O6 #10 OPO2 O7 #11 O2P H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HOP H5 #16 HOP H6 #17 HOP H9 #18 HOR + # char P1 #1 1.242 P2 #2 1.171 C1 #3 0.280 C2 #4 0.000 O1 #5 -0.680 O2 #6 -0.771 O3 #7 -0.700 O4 #8 -0.771 O5 #9 -0.950 O6 #10 -0.771 O7 #11 -0.950 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.500 H5 #16 0.500 H6 #17 0.500 H9 #18 0.400 + # fchar P1 #1 0.000 P2 #2 0.000 C1 #3 0.000 C2 #4 0.000 O1 #5 0.000 O2 #6 0.000 O3 #7 0.000 O4 #8 0.000 O5 #9 -0.500 O6 #10 0.000 O7 #11 -0.500 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H9 #18 0.000 +model JEVXIR RING 1 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons + # ty O1 #1 6 O2 #2 7 O3 #3 7 N1 #4 40 C1 #5 2 C2 #6 3 C3 #7 1 C4 #8 1 C5 #9 1 C6 #10 3 C7 #11 2 C8 #12 1 C9 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 21 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 H13 #26 28 + # symb O1 #1 -O- O2 #2 O=CR O3 #3 O=CR N1 #4 NC=C C1 #5 C=C C2 #6 C=OR C3 #7 CR C4 #8 CR C5 #9 CR C6 #10 C=OR C7 #11 C=C C8 #12 CR C9 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HO H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC H13 #26 HNCC + # char O1 #1 -0.379 O2 #2 -0.570 O3 #3 -0.570 N1 #4 -0.521 C1 #5 0.029 C2 #6 0.495 C3 #7 0.061 C4 #8 0.000 C5 #9 0.061 C6 #10 0.495 C7 #11 -0.050 C8 #12 0.000 C9 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.150 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.400 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 +model JEWFAS RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 4 PI PAIR ON SP2-N 6 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 25 CL1 #2 12 CL2 #3 12 O1 #4 6 O2 #5 32 N1 #6 8 N2 #7 8 N3 #8 38 C1 #9 1 C2 #10 1 C3 #11 1 C4 #12 1 C5 #13 1 C6 #14 1 C7 #15 1 C8 #16 37 C9 #17 37 C10 #18 37 C11 #19 37 C12 #20 37 H1 #21 23 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 H7 #27 5 H8 #28 5 H9 #29 5 H10 #30 5 H11 #31 5 H12 #32 5 H13 #33 5 H14 #34 5 H15 #35 5 H16 #36 5 H17 #37 5 H18 #38 5 + # symb P1 #1 PO2 CL1 #2 CL CL2 #3 CL O1 #4 OPO O2 #5 OP N1 #6 NR N2 #7 NR N3 #8 NPYD C1 #9 CR C2 #10 CR C3 #11 CR C4 #12 CR C5 #13 CR C6 #14 CR C7 #15 CR C8 #16 CB C9 #17 CB C10 #18 CB C11 #19 CB C12 #20 CB H1 #21 HNR H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC H7 #27 HC H8 #28 HC H9 #29 HC H10 #30 HC H11 #31 HC H12 #32 HC H13 #33 HC H14 #34 HC H15 #35 HC H16 #36 HC H17 #37 HC H18 #38 HC + # char P1 #1 1.507 CL1 #2 -0.290 CL2 #3 -0.290 O1 #4 -0.551 O2 #5 -0.700 N1 #6 -0.898 N2 #7 -0.808 N3 #8 -0.620 C1 #9 0.413 C2 #10 0.000 C3 #11 0.280 C4 #12 0.270 C5 #13 0.290 C6 #14 0.270 C7 #15 0.290 C8 #16 0.160 C9 #17 -0.143 C10 #18 -0.150 C11 #19 -0.150 C12 #20 0.160 H1 #21 0.360 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.150 H16 #36 0.150 H17 #37 0.150 H18 #38 0.150 + # fchar P1 #1 0.000 CL1 #2 0.000 CL2 #3 0.000 O1 #4 0.000 O2 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 C12 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H16 #36 0.000 H17 #37 0.000 H18 #38 0.000 +model JEWPIK RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons PI PAIR ON SP2-N 5 PI PAIR ON O OR S 15 SUBRING 3 has 4 PI electrons + # ty N1 #1 10 C1 #2 3 C2 #3 2 C3 #4 2 N2 #5 40 C4 #6 2 C5 #7 2 C6 #8 3 O1 #9 7 O2 #10 7 CL1 #11 12 CL2 #12 12 C7 #13 1 C8 #14 1 S1 #15 15 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 + # symb N1 #1 NC=O C1 #2 C=ON C2 #3 C=C C3 #4 C=C N2 #5 NC=C C4 #6 C=C C5 #7 C=C C6 #8 C=ON O1 #9 O=CN O2 #10 O=CN CL1 #11 CL CL2 #12 CL C7 #13 CR C8 #14 CR S1 #15 S H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC + # char N1 #1 -0.100 C1 #2 0.616 C2 #3 0.154 C3 #4 -0.038 N2 #5 -0.220 C4 #6 -0.038 C5 #7 0.154 C6 #8 0.616 O1 #9 -0.570 O2 #10 -0.570 CL1 #11 -0.140 CL2 #12 -0.140 C7 #13 0.368 C8 #14 0.368 S1 #15 -0.460 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 N2 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 O1 #9 0.000 O2 #10 0.000 CL1 #11 0.000 CL2 #12 0.000 C7 #13 0.000 C8 #14 0.000 S1 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 +model JEXREJ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 S2 #2 18 O1 #3 32 O2 #4 32 O3 #5 32 O4 #6 32 N1 #7 40 N2 #8 43 C1 #9 37 C2 #10 37 C3 #11 37 C4 #12 37 C5 #13 37 C6 #14 37 C7 #15 1 C8 #16 1 C9 #17 1 C10 #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 5 H13 #31 5 H14 #32 5 H15 #33 5 H16 #34 5 + # symb S1 #1 SO2N S2 #2 SO2N O1 #3 O2S O2 #4 O2S O3 #5 O2S O4 #6 O2S N1 #7 NC=C N2 #8 NSO2 C1 #9 CB C2 #10 CB C3 #11 CB C4 #12 CB C5 #13 CB C6 #14 CB C7 #15 CR C8 #16 CR C9 #17 CR C10 #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HC H13 #31 HC H14 #32 HC H15 #33 HC H16 #34 HC + # char S1 #1 1.333 S2 #2 1.333 O1 #3 -0.650 O2 #4 -0.650 O3 #5 -0.650 O4 #6 -0.650 N1 #7 -0.838 N2 #8 -0.475 C1 #9 0.100 C2 #10 -0.150 C3 #11 -0.150 C4 #12 0.199 C5 #13 -0.150 C6 #14 -0.150 C7 #15 0.369 C8 #16 0.369 C9 #17 0.105 C10 #18 0.105 H1 #19 0.150 H2 #20 0.150 H3 #21 0.150 H4 #22 0.150 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 O4 #6 0.000 N1 #7 0.000 N2 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 H15 #33 0.000 H16 #34 0.000 +model JEYBUK RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 39 C1 #2 63 C2 #3 64 C3 #4 37 C4 #5 37 O1 #6 6 C5 #7 37 C6 #8 37 C7 #9 63 C8 #10 64 C9 #11 1 C10 #12 3 O2 #13 7 O3 #14 6 H1 #15 23 H2 #16 5 H3 #17 5 H4 #18 29 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 24 + # symb N1 #1 NPYL C1 #2 C5A C2 #3 C5B C3 #4 CB C4 #5 CB O1 #6 OC=C C5 #7 CB C6 #8 CB C7 #9 C5A C8 #10 C5B C9 #11 CR C10 #12 COO O2 #13 O=CO O3 #14 OC=O H1 #15 HPYL H2 #16 HC H3 #17 HC H4 #18 HOCC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HOCO + # char N1 #1 0.033 C1 #2 -0.302 C2 #3 -0.181 C3 #4 -0.150 C4 #5 0.083 O1 #6 -0.532 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.152 C8 #10 0.000 C9 #11 0.242 C10 #12 0.659 O2 #13 -0.570 O3 #14 -0.650 H1 #15 0.270 H2 #16 0.150 H3 #17 0.150 H4 #18 0.450 H5 #19 0.150 H6 #20 0.150 H7 #21 0.000 H8 #22 0.000 H9 #23 0.500 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 O1 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 O2 #13 0.000 O3 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 +model JIDHIN RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 C1 #2 37 C2 #3 37 C3 #4 37 C4 #5 37 C5 #6 37 C6 #7 37 C7 #8 1 C8 #9 22 C9 #10 22 C10 #11 1 C11 #12 1 N1 #13 43 O1 #14 32 O2 #15 32 O3 #16 6 O4 #17 6 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 21 H15 #32 21 + # symb S1 #1 SO2N C1 #2 CB C2 #3 CB C3 #4 CB C4 #5 CB C5 #6 CB C6 #7 CB C7 #8 CR C8 #9 CR3R C9 #10 CR3R C10 #11 CR C11 #12 CR N1 #13 NSO2 O1 #14 O2S O2 #15 O2S O3 #16 OR O4 #17 OR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HOR H15 #32 HOR + # char S1 #1 1.447 C1 #2 -0.143 C2 #3 -0.150 C3 #4 -0.150 C4 #5 -0.009 C5 #6 -0.150 C6 #7 -0.150 C7 #8 0.143 C8 #9 0.036 C9 #10 0.036 C10 #11 0.375 C11 #12 0.375 N1 #13 -0.600 O1 #14 -0.650 O2 #15 -0.650 O3 #16 -0.680 O4 #17 -0.680 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.100 H9 #26 0.100 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.400 H15 #32 0.400 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 C11 #12 0.000 N1 #13 0.000 O1 #14 0.000 O2 #15 0.000 O3 #16 0.000 O4 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 +model JIFYUS RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 18 O1 #2 32 N1 #3 55 N2 #4 8 N3 #5 55 C1 #6 57 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 36 H7 #20 23 H8 #21 36 O1B #22 32 H5B #23 5 H7B #24 23 + # symb S1 #1 SO2N O1 #2 O2S N1 #3 NCN+ N2 #4 NR N3 #5 NCN+ C1 #6 CNN+ C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HNN+ H7 #20 HNR H8 #21 HNN+ O1B #22 O2S H5B #23 HC H7B #24 HNR + # char S1 #1 1.667 O1 #2 -0.650 N1 #3 -0.662 N2 #4 -0.990 N3 #5 -0.653 C1 #6 0.604 C2 #7 -0.150 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 0.349 C7 #12 -0.009 C8 #13 0.375 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.000 H6 #19 0.450 H7 #20 0.360 H8 #21 0.450 O1B #22 -0.650 H5B #23 0.000 H7B #24 0.360 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.500 N2 #4 0.000 N3 #5 0.500 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 O1B #22 0.000 H5B #23 0.000 H7B #24 0.000 +model JIGCIL RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 2 SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 8 6 EXOCYCLIC MULT BOND 7 3 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty S1 #1 44 O1 #2 59 N1 #3 65 N2 #4 65 N3 #5 40 C1 #6 63 C2 #7 78 C3 #8 64 C4 #9 64 C5 #10 1 H1 #11 28 H2 #12 28 H3 #13 5 H4 #14 5 H5 #15 5 + # symb S1 #1 STHI O1 #2 OFUR N1 #3 N5A N2 #4 N5A N3 #5 NC=C C1 #6 C5A C2 #7 C5 C3 #8 C5B C4 #9 C5B C5 #10 CR H1 #11 HNCC H2 #12 HNCC H3 #13 HC H4 #14 HC H5 #15 HC + # char S1 #1 0.181 O1 #2 -0.048 N1 #3 -0.528 N2 #4 -0.410 N3 #5 -0.884 C1 #6 0.124 C2 #7 0.489 C3 #8 -0.013 C4 #9 0.108 C5 #10 0.181 H1 #11 0.400 H2 #12 0.400 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 +model JIGRAS RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 O1 #4 7 O2 #5 6 O3 #6 7 C1 #7 2 C2 #8 3 C3 #9 2 C4 #10 2 C5 #11 3 C6 #12 2 C7 #13 4 C8 #14 4 C9 #15 2 C10 #16 2 C11 #17 1 H1 #18 29 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL O1 #4 O=CR O2 #5 OC=C O3 #6 O=CR C1 #7 C=C C2 #8 C=OR C3 #9 C=C C4 #10 C=C C5 #11 C=OR C6 #12 C=C C7 #13 CSP C8 #14 CSP C9 #15 C=C C10 #16 C=C C11 #17 CR H1 #18 HOCC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC + # char CL1 #1 -0.140 CL2 #2 -0.140 CL3 #3 -0.140 O1 #4 -0.570 O2 #5 -0.527 O3 #6 -0.570 C1 #7 0.154 C2 #8 0.541 C3 #9 0.091 C4 #10 0.154 C5 #11 0.541 C6 #12 0.079 C7 #13 -0.065 C8 #14 -0.065 C9 #15 -0.073 C10 #16 -0.010 C11 #17 0.138 H1 #18 0.450 H2 #19 0.150 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 O1 #4 0.000 O2 #5 0.000 O3 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 C11 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 +model JIHVEB + # ty O1 #1 32 N1 #2 45 O2 #3 32 C1 #4 3 N2 #5 9 C2 #6 1 O3 #7 6 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 21 + # symb O1 #1 O2N N1 #2 NO2 O2 #3 O2N C1 #4 C=N N2 #5 N=C C2 #6 CR O3 #7 -O- H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HO + # char O1 #1 -0.520 N1 #2 0.875 O2 #3 -0.520 C1 #4 0.554 N2 #5 -0.513 C2 #6 0.061 O3 #7 -0.337 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.400 + # fchar O1 #1 0.000 N1 #2 0.000 O2 #3 0.000 C1 #4 0.000 N2 #5 0.000 C2 #6 0.000 O3 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 +model JIKHUG RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 17 SUBRING 1 has 2 PI electrons + # ty N1 #1 10 C1 #2 3 O1 #3 7 N2 #4 10 C2 #5 3 O2 #6 7 C3 #7 2 I1 #8 14 C4 #9 2 C5 #10 1 C6 #11 1 C7 #12 1 O3 #13 6 C8 #14 1 O4 #15 6 C9 #16 1 O5 #17 6 H1 #18 28 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 21 H8 #25 5 H9 #26 21 H10 #27 5 H11 #28 5 + # symb N1 #1 NC=O C1 #2 CONN O1 #3 O=CN N2 #4 NC=O C2 #5 C=ON O2 #6 O=CN C3 #7 C=C I1 #8 I C4 #9 C=C C5 #10 CR C6 #11 CR C7 #12 CR O3 #13 OR C8 #14 CR O4 #15 OR C9 #16 CR O5 #17 OR H1 #18 HNCO H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HOR H8 #25 HC H9 #26 HOR H10 #27 HC H11 #28 HC + # char N1 #1 -0.469 C1 #2 0.690 O1 #3 -0.570 N2 #4 -0.490 C2 #5 0.616 O2 #6 -0.570 C3 #7 0.104 I1 #8 -0.090 C4 #9 -0.041 C5 #10 0.580 C6 #11 0.000 C7 #12 0.280 O3 #13 -0.680 C8 #14 0.280 O4 #15 -0.680 C9 #16 0.280 O5 #17 -0.560 H1 #18 0.370 H2 #19 0.150 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.400 H8 #25 0.000 H9 #26 0.400 H10 #27 0.000 H11 #28 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 O1 #3 0.000 N2 #4 0.000 C2 #5 0.000 O2 #6 0.000 C3 #7 0.000 I1 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 O3 #13 0.000 C8 #14 0.000 O4 #15 0.000 C9 #16 0.000 O5 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 +model JILWUW RING 1 HAS 2 SUBRINGS PI PAIR ON DICOORD N 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 76 N2 #2 76 C1 #3 78 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 78 C7 #9 78 N3 #10 45 O1 #11 32 O2 #12 32 N4 #13 45 O3 #14 32 O4 #15 32 H1 #16 5 H2 #17 5 H3 #18 5 + # symb N1 #1 N5M N2 #2 N5M C1 #3 C5 C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 C5 C7 #9 C5 N3 #10 NO2 O1 #11 O2N O2 #12 O2N N4 #13 NO2 O3 #14 O2N O4 #15 O2N H1 #16 HC H2 #17 HC H3 #18 HC + # char N1 #1 -0.775 N2 #2 -0.775 C1 #3 0.367 C2 #4 -0.109 C3 #5 0.133 C4 #6 -0.150 C5 #7 -0.109 C6 #8 0.234 C7 #9 -0.041 N3 #10 0.948 O1 #11 -0.520 O2 #12 -0.520 N4 #13 0.907 O3 #14 -0.520 O4 #15 -0.520 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 + # fchar N1 #1 -0.500 N2 #2 -0.500 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 N3 #10 0.000 O1 #11 0.000 O2 #12 0.000 N4 #13 0.000 O3 #14 0.000 O4 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 +model JINDAL RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 6 O2 #3 32 O3 #4 32 N1 #5 43 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 21 H7 #19 5 H8 #20 5 H9 #21 5 + # symb S1 #1 SO2N O1 #2 -O- O2 #3 O2S O3 #4 O2S N1 #5 NSO2 C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HO H7 #19 HC H8 #20 HC H9 #21 HC + # char S1 #1 1.333 O1 #2 -0.317 O2 #3 -0.650 O3 #4 -0.650 N1 #5 -0.420 C1 #6 -0.150 C2 #7 -0.150 C3 #8 -0.150 C4 #9 0.199 C5 #10 -0.150 C6 #11 -0.150 C7 #12 0.105 H1 #13 0.150 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.400 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 +model JINDOZ RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty S1 #1 18 O1 #2 6 O2 #3 32 O3 #4 32 O4 #5 32 N1 #6 39 N2 #7 34 C1 #8 63 C2 #9 64 C3 #10 64 C4 #11 37 C5 #12 37 C6 #13 37 C7 #14 37 C8 #15 63 C9 #16 1 C10 #17 1 C11 #18 1 C12 #19 1 H1 #20 23 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 5 H13 #32 5 H14 #33 5 + # symb S1 #1 SO4 O1 #2 OSO3 O2 #3 O3S O3 #4 O3S O4 #5 O3S N1 #6 NPYL N2 #7 NR+ C1 #8 C5A C2 #9 C5B C3 #10 C5B C4 #11 CB C5 #12 CB C6 #13 CB C7 #14 CB C8 #15 C5A C9 #16 CR C10 #17 CR C11 #18 CR C12 #19 CR H1 #20 HPYL H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HC H13 #32 HC H14 #33 HC + # char S1 #1 1.634 O1 #2 -0.266 O2 #3 -0.817 O3 #4 -0.817 O4 #5 -0.817 N1 #6 0.033 N2 #7 -0.873 C1 #8 -0.302 C2 #9 -0.181 C3 #10 0.000 C4 #11 0.364 C5 #12 0.083 C6 #13 -0.150 C7 #14 -0.150 C8 #15 -0.152 C9 #16 0.181 C10 #17 0.503 C11 #18 0.503 C12 #19 0.503 H1 #20 0.270 H2 #21 0.150 H3 #22 0.150 H4 #23 0.150 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 H14 #33 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 -0.333 O3 #4 -0.333 O4 #5 -0.333 N1 #6 0.000 N2 #7 1.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 C12 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 H14 #33 0.000 +model JIRJID + # ty S1 #1 18 O1 #2 32 O2 #3 32 C1 #4 1 C2 #5 2 C3 #6 2 C4 #7 4 N1 #8 42 H1 #9 5 H2 #10 5 H3 #11 5 H4 #12 5 H5 #13 5 + # symb S1 #1 SO2 O1 #2 O2S O2 #3 O2S C1 #4 CR C2 #5 C=C C3 #6 C=C C4 #7 CSP N1 #8 NSP H1 #9 HC H2 #10 HC H3 #11 HC H4 #12 HC H5 #13 HC + # char S1 #1 1.212 O1 #2 -0.650 O2 #3 -0.650 C1 #4 0.105 C2 #5 -0.167 C3 #6 -0.085 C4 #7 0.492 N1 #8 -0.557 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.150 H5 #13 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 N1 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 +model JISZAM RING 1 HAS 2 SUBRINGS SUBRING 1 has 0 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty O1 #1 6 O2 #2 6 N1 #3 34 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 1 C8 #11 1 C9 #12 1 C10 #13 1 C11 #14 1 C12 #15 1 H1 #16 21 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 H15 #30 5 H16 #31 5 H17 #32 5 H18 #33 5 + # symb O1 #1 OC=C O2 #2 OR N1 #3 NR+ C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CR C8 #11 CR C9 #12 CR C10 #13 CR C11 #14 CR C12 #15 CR H1 #16 HOR H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC H15 #30 HC H16 #31 HC H17 #32 HC H18 #33 HC + # char O1 #1 -0.363 O2 #2 -0.680 N1 #3 -1.012 C1 #4 -0.143 C2 #5 0.083 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 -0.143 C7 #10 0.646 C8 #11 0.926 C9 #12 0.280 C10 #13 0.000 C11 #14 0.503 C12 #15 0.503 H1 #16 0.400 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H17 #32 0.000 H18 #33 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 1.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H17 #32 0.000 H18 #33 0.000 +model JITMII RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 13 SUBRING 1 has 2 PI electrons + # ty S1 #1 18 O1 #2 6 C1 #3 1 C2 #4 2 C3 #5 2 O2 #6 32 O3 #7 32 C4 #8 1 F1 #9 11 F2 #10 11 F3 #11 11 C5 #12 1 N1 #13 40 C6 #14 1 C7 #15 1 C8 #16 1 C9 #17 1 C10 #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 5 H13 #31 5 H14 #32 5 + # symb S1 #1 SO3 O1 #2 OSO2 C1 #3 CR C2 #4 C=C C3 #5 C=C O2 #6 O2S O3 #7 O2S C4 #8 CR F1 #9 F F2 #10 F F3 #11 F C5 #12 CR N1 #13 NC=C C6 #14 CR C7 #15 CR C8 #16 CR C9 #17 CR C10 #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HC H13 #31 HC H14 #32 HC + # char S1 #1 1.501 O1 #2 -0.464 C1 #3 0.418 C2 #4 -0.038 C3 #5 -0.167 O2 #6 -0.650 O3 #7 -0.650 C4 #8 1.020 F1 #9 -0.340 F2 #10 -0.340 F3 #11 -0.340 C5 #12 0.000 N1 #13 -0.838 C6 #14 0.369 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.369 H1 #19 0.150 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 O2 #6 0.000 O3 #7 0.000 C4 #8 0.000 F1 #9 0.000 F2 #10 0.000 F3 #11 0.000 C5 #12 0.000 N1 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 H14 #32 0.000 +model JIWKOP RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 69 O1 #2 32 C1 #3 37 C2 #4 37 O2 #5 6 C3 #6 37 O3 #7 6 C4 #8 37 C5 #9 37 H1 #10 29 H2 #11 29 H3 #12 5 H4 #13 5 C1B #14 37 N1B #15 69 C2B #16 37 O1B #17 32 C5B #18 37 O2B #19 6 C3B #20 37 C4B #21 37 H4B #22 5 H1B #23 29 O3B #24 6 H3B #25 5 H2B #26 29 + # symb N1 #1 NPOX O1 #2 OXN C1 #3 CB C2 #4 CB O2 #5 OC=C C3 #6 CB O3 #7 OC=C C4 #8 CB C5 #9 CB H1 #10 HOCC H2 #11 HOCC H3 #12 HC H4 #13 HC C1B #14 CB N1B #15 NPOX C2B #16 CB O1B #17 OXN C5B #18 CB O2B #19 OC=C C3B #20 CB C4B #21 CB H4B #22 HC H1B #23 HOCC O3B #24 OC=C H3B #25 HC H2B #26 HOCC + # char N1 #1 0.571 O1 #2 -0.750 C1 #3 0.089 C2 #4 0.083 O2 #5 -0.532 C3 #6 0.083 O3 #7 -0.532 C4 #8 -0.150 C5 #9 -0.060 H1 #10 0.450 H2 #11 0.450 H3 #12 0.150 H4 #13 0.150 C1B #14 0.089 N1B #15 0.571 C2B #16 0.083 O1B #17 -0.750 C5B #18 -0.060 O2B #19 -0.532 C3B #20 0.083 C4B #21 -0.150 H4B #22 0.150 H1B #23 0.450 O3B #24 -0.532 H3B #25 0.150 H2B #26 0.450 + # fchar N1 #1 0.000 O1 #2 0.000 C1 #3 0.000 C2 #4 0.000 O2 #5 0.000 C3 #6 0.000 O3 #7 0.000 C4 #8 0.000 C5 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 C1B #14 0.000 N1B #15 0.000 C2B #16 0.000 O1B #17 0.000 C5B #18 0.000 O2B #19 0.000 C3B #20 0.000 C4B #21 0.000 H4B #22 0.000 H1B #23 0.000 O3B #24 0.000 H3B #25 0.000 H2B #26 0.000 +model JIXBAT RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 2 C2 #2 3 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 2 C10 #10 4 C11 #11 1 N1 #12 9 N2 #13 40 N3 #14 42 O1 #15 6 O2 #16 6 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 29 H10 #26 28 H11 #27 28 + # symb C1 #1 C=C C2 #2 C=N C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 C=C C10 #10 CSP C11 #11 CR N1 #12 N=C N2 #13 NC=C N3 #14 NSP O1 #15 OC=C O2 #16 OC=C H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HOCC H10 #26 HNCC H11 #27 HNCC + # char C1 #1 0.236 C2 #2 0.304 C3 #3 0.086 C4 #4 -0.150 C5 #5 -0.150 C6 #6 0.083 C7 #7 -0.150 C8 #8 -0.150 C9 #9 0.177 C10 #10 0.492 C11 #11 0.280 N1 #12 -0.621 N2 #13 -0.900 N3 #14 -0.557 O1 #15 -0.357 O2 #16 -0.532 H1 #17 0.060 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.150 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.450 H10 #26 0.400 H11 #27 0.400 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 N1 #12 0.000 N2 #13 0.000 N3 #14 0.000 O1 #15 0.000 O2 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 +model JIYJAC RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons + # ty O1 #1 6 O2 #2 7 O3 #3 6 F1 #4 11 F2 #5 11 F3 #6 11 F4 #7 11 C1 #8 2 C2 #9 2 C3 #10 2 C4 #11 2 C5 #12 2 C6 #13 2 C7 #14 2 C8 #15 2 C9 #16 3 C10 #17 1 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 + # symb O1 #1 OC=O O2 #2 O=CO O3 #3 OC=C F1 #4 F F2 #5 F F3 #6 F F4 #7 F C1 #8 C=C C2 #9 C=C C3 #10 C=C C4 #11 C=C C5 #12 C=C C6 #13 C=C C7 #14 C=C C8 #15 C=C C9 #16 COO C10 #17 CR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC + # char O1 #1 -0.227 O2 #2 -0.570 O3 #3 -0.357 F1 #4 -0.149 F2 #5 -0.149 F3 #6 -0.149 F4 #7 -0.149 C1 #8 0.000 C2 #9 0.077 C3 #10 0.077 C4 #11 0.149 C5 #12 0.149 C6 #13 0.149 C7 #14 0.149 C8 #15 -0.136 C9 #16 0.706 C10 #17 0.280 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.150 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 F1 #4 0.000 F2 #5 0.000 F3 #6 0.000 F4 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 +model JIYREO RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 81 C1 #2 80 N2 #3 81 C2 #4 78 C3 #5 78 C4 #6 1 C5 #7 1 N3 #8 45 O1 #9 32 O2 #10 32 H1 #11 5 H2 #12 36 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 + # symb N1 #1 NIM+ C1 #2 CIM+ N2 #3 NIM+ C2 #4 C5 C3 #5 C5 C4 #6 CR C5 #7 CR N3 #8 NO2 O1 #9 O2N O2 #10 O2N H1 #11 HC H2 #12 HIM+ H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC + # char N1 #1 -0.764 C1 #2 0.650 N2 #3 -0.700 C2 #4 0.200 C3 #5 0.442 C4 #6 0.514 C5 #7 0.000 N3 #8 0.948 O1 #9 -0.520 O2 #10 -0.520 H1 #11 0.150 H2 #12 0.450 H3 #13 0.150 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 + # fchar N1 #1 0.500 C1 #2 0.000 N2 #3 0.500 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 N3 #8 0.000 O1 #9 0.000 O2 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 +model JIYTOA RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 38 C1 #2 37 O1 #3 35 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 5 + # symb N1 #1 NPYD C1 #2 CB O1 #3 OM2 C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HC + # char N1 #1 -0.620 C1 #2 0.139 O1 #3 -0.829 C2 #4 -0.150 C3 #5 -0.150 C4 #6 -0.150 C5 #7 0.160 H1 #8 0.150 H2 #9 0.150 H3 #10 0.150 H4 #11 0.150 + # fchar N1 #1 0.000 C1 #2 0.000 O1 #3 -1.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 +model JIZWUK + # ty H1 #1 5 H2 #2 5 H3 #3 5 H4 #4 5 H5 #5 5 H6 #6 5 H7 #7 5 H8 #8 5 H9 #9 5 S1 #10 15 N1 #11 8 SI1 #12 19 CL1 #13 12 CL2 #14 12 CL3 #15 12 C1 #16 1 C2 #17 1 C3 #18 1 C4 #19 1 N1F #20 8 SI1F #21 19 C1F #22 1 CL1F #23 12 CL2F #24 12 CL3F #25 12 C2F #26 1 C3F #27 1 C4F #28 1 H1F #29 5 H2F #30 5 H3F #31 5 H4F #32 5 H5F #33 5 H6F #34 5 H7F #35 5 H8F #36 5 H9F #37 5 + # symb H1 #1 HC H2 #2 HC H3 #3 HC H4 #4 HC H5 #5 HC H6 #6 HC H7 #7 HC H8 #8 HC H9 #9 HC S1 #10 S N1 #11 NR SI1 #12 SI CL1 #13 CL CL2 #14 CL CL3 #15 CL C1 #16 CR C2 #17 CR C3 #18 CR C4 #19 CR N1F #20 NR SI1F #21 SI C1F #22 CR CL1F #23 CL CL2F #24 CL CL3F #25 CL C2F #26 CR C3F #27 CR C4F #28 CR H1F #29 HC H2F #30 HC H3F #31 HC H4F #32 HC H5F #33 HC H6F #34 HC H7F #35 HC H8F #36 HC H9F #37 HC + # char H1 #1 0.000 H2 #2 0.000 H3 #3 0.000 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 H9 #9 0.000 S1 #10 0.034 N1 #11 -0.634 SI1 #12 1.457 CL1 #13 -0.370 CL2 #14 -0.370 CL3 #15 -0.370 C1 #16 0.270 C2 #17 0.000 C3 #18 0.000 C4 #19 0.000 N1F #20 -0.634 SI1F #21 1.457 C1F #22 0.270 CL1F #23 -0.370 CL2F #24 -0.370 CL3F #25 -0.370 C2F #26 0.000 C3F #27 0.000 C4F #28 0.000 H1F #29 0.000 H2F #30 0.000 H3F #31 0.000 H4F #32 0.000 H5F #33 0.000 H6F #34 0.000 H7F #35 0.000 H8F #36 0.000 H9F #37 0.000 + # fchar H1 #1 0.000 H2 #2 0.000 H3 #3 0.000 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 H9 #9 0.000 S1 #10 0.000 N1 #11 0.000 SI1 #12 0.000 CL1 #13 0.000 CL2 #14 0.000 CL3 #15 0.000 C1 #16 0.000 C2 #17 0.000 C3 #18 0.000 C4 #19 0.000 N1F #20 0.000 SI1F #21 0.000 C1F #22 0.000 CL1F #23 0.000 CL2F #24 0.000 CL3F #25 0.000 C2F #26 0.000 C3F #27 0.000 C4F #28 0.000 H1F #29 0.000 H2F #30 0.000 H3F #31 0.000 H4F #32 0.000 H5F #33 0.000 H6F #34 0.000 H7F #35 0.000 H8F #36 0.000 H9F #37 0.000 +model JOFDUD + # ty SI1 #1 19 CL1 #2 12 C1 #3 1 C2 #4 1 C3 #5 1 N1 #6 9 C4 #7 4 O1 #8 7 H1 #9 5 H2 #10 5 H3 #11 5 H4 #12 5 H5 #13 5 H6 #14 5 H7 #15 5 H8 #16 5 + # symb SI1 #1 SI CL1 #2 CL C1 #3 CR C2 #4 CR C3 #5 CR N1 #6 N=C C4 #7 =C= O1 #8 O=C H1 #9 HC H2 #10 HC H3 #11 HC H4 #12 HC H5 #13 HC H6 #14 HC H7 #15 HC H8 #16 HC + # char SI1 #1 0.641 CL1 #2 -0.290 C1 #3 0.209 C2 #4 -0.081 C3 #5 -0.081 N1 #6 -0.700 C4 #7 0.787 O1 #8 -0.487 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 H8 #16 0.000 + # fchar SI1 #1 0.000 CL1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 N1 #6 0.000 C4 #7 0.000 O1 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 H8 #16 0.000 +model KAFXIY RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 IS A 4-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty CL1 #1 12 CL2 #2 12 O1 #3 7 C1 #4 22 C2 #5 22 C3 #6 22 C4 #7 3 C5 #8 20 C6 #9 20 C7 #10 22 C8 #11 22 C9 #12 22 C10 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 + # symb CL1 #1 CL CL2 #2 CL O1 #3 O=CR C1 #4 CR3R C2 #5 CR3R C3 #6 CR3R C4 #7 C=OR C5 #8 CR4R C6 #9 CR4R C7 #10 CR3R C8 #11 CR3R C9 #12 CR3R C10 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC + # char CL1 #1 -0.290 CL2 #2 -0.290 O1 #3 -0.570 C1 #4 -0.200 C2 #5 -0.200 C3 #6 -0.076 C4 #7 0.517 C5 #8 0.633 C6 #9 0.152 C7 #10 -0.176 C8 #11 -0.200 C9 #12 -0.200 C10 #13 0.000 H1 #14 0.100 H2 #15 0.100 H3 #16 0.100 H4 #17 0.100 H5 #18 0.100 H6 #19 0.100 H7 #20 0.100 H8 #21 0.100 H9 #22 0.100 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 + # fchar CL1 #1 0.000 CL2 #2 0.000 O1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 +model KAGBOJ RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 C1 #2 2 C2 #3 2 C3 #4 3 C4 #5 37 C5 #6 37 C6 #7 37 C7 #8 37 C8 #9 37 C9 #10 37 O2 #11 7 C10 #12 37 C11 #13 37 C12 #14 37 C13 #15 37 C14 #16 37 C15 #17 37 O3 #18 6 C16 #19 1 O4 #20 6 C17 #21 1 H1 #22 5 H2 #23 5 H3 #24 5 H4 #25 5 H5 #26 5 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 5 H10 #31 5 H11 #32 5 H12 #33 5 H13 #34 5 H14 #35 5 + # symb O1 #1 OC=C C1 #2 C=C C2 #3 C=C C3 #4 C=OR C4 #5 CB C5 #6 CB C6 #7 CB C7 #8 CB C8 #9 CB C9 #10 CB O2 #11 O=CR C10 #12 CB C11 #13 CB C12 #14 CB C13 #15 CB C14 #16 CB C15 #17 CB O3 #18 OC=C C16 #19 CR O4 #20 OC=C C17 #21 CR H1 #22 HC H2 #23 HC H3 #24 HC H4 #25 HC H5 #26 HC H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HC H10 #31 HC H11 #32 HC H12 #33 HC H13 #34 HC H14 #35 HC + # char O1 #1 -0.159 C1 #2 0.048 C2 #3 -0.136 C3 #4 0.469 C4 #5 -0.150 C5 #6 -0.150 C6 #7 -0.150 C7 #8 -0.150 C8 #9 0.083 C9 #10 0.086 O2 #11 -0.570 C10 #12 0.028 C11 #13 0.083 C12 #14 -0.150 C13 #15 -0.150 C14 #16 -0.150 C15 #17 0.083 O3 #18 -0.363 C16 #19 0.280 O4 #20 -0.363 C17 #21 0.280 H1 #22 0.150 H2 #23 0.150 H3 #24 0.150 H4 #25 0.150 H5 #26 0.150 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.150 H10 #31 0.150 H11 #32 0.150 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 O2 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 C13 #15 0.000 C14 #16 0.000 C15 #17 0.000 O3 #18 0.000 C16 #19 0.000 O4 #20 0.000 C17 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 +model KAKGOS RING 1 HAS 3 SUBRINGS SUBRING 3 IS A 4-MEMBERED RING PI PAIR ON O OR S 1 PI PAIR ON SP2-N 2 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 15 N1 #2 10 O1 #3 7 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 3 C8 #11 20 C9 #12 20 C10 #13 1 C11 #14 1 C12 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 + # symb S1 #1 S N1 #2 NC=O O1 #3 O=CN C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 C=ON C8 #11 CR4R C9 #12 CR4R C10 #13 CR C11 #14 CR C12 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC + # char S1 #1 -0.319 N1 #2 -0.402 O1 #3 -0.570 C1 #4 0.102 C2 #5 -0.150 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 0.117 C7 #10 0.577 C8 #11 0.053 C9 #12 0.442 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 + # fchar S1 #1 0.000 N1 #2 0.000 O1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 +model KAMCUW RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 10 PI PAIR ON SP2-N 13 SUBRING 1 has 6 PI electrons RING 3 HAS 1 SUBRINGS PI PAIR ON O OR S 17 SUBRING 1 has 2 PI electrons + # ty BR1 #1 13 BR2 #2 13 C1 #3 22 C2 #4 22 C3 #5 22 C4 #6 2 C5 #7 2 C6 #8 3 O1 #9 7 N1 #10 10 C7 #11 3 O2 #12 7 N2 #13 10 C8 #14 1 O3 #15 6 C9 #16 1 O4 #17 6 C10 #18 1 O5 #19 6 C11 #20 1 C12 #21 1 H1 #22 5 H2 #23 5 H3 #24 5 H4 #25 28 H5 #26 5 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 21 H10 #31 5 H11 #32 5 H12 #33 5 H13 #34 5 H14 #35 21 + # symb BR1 #1 BR BR2 #2 BR C1 #3 CR3R C2 #4 CR3R C3 #5 CR3R C4 #6 C=C C5 #7 C=C C6 #8 C=ON O1 #9 O=CN N1 #10 NC=O C7 #11 CONN O2 #12 O=CN N2 #13 NC=O C8 #14 CR O3 #15 OR C9 #16 CR O4 #17 OR C10 #18 CR O5 #19 OR C11 #20 CR C12 #21 CR H1 #22 HC H2 #23 HC H3 #24 HC H4 #25 HNCO H5 #26 HC H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HOR H10 #31 HC H11 #32 HC H12 #33 HC H13 #34 HC H14 #35 HOR + # char BR1 #1 -0.143 BR2 #2 -0.143 C1 #3 0.286 C2 #4 -0.200 C3 #5 -0.060 C4 #6 -0.041 C5 #7 -0.026 C6 #8 0.616 O1 #9 -0.570 N1 #10 -0.490 C7 #11 0.690 O2 #12 -0.570 N2 #13 -0.469 C8 #14 0.280 O3 #15 -0.680 C9 #16 0.280 O4 #17 -0.560 C10 #18 0.280 O5 #19 -0.680 C11 #20 0.000 C12 #21 0.580 H1 #22 0.100 H2 #23 0.100 H3 #24 0.100 H4 #25 0.370 H5 #26 0.000 H6 #27 0.150 H7 #28 0.000 H8 #29 0.000 H9 #30 0.400 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.400 + # fchar BR1 #1 0.000 BR2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 O1 #9 0.000 N1 #10 0.000 C7 #11 0.000 O2 #12 0.000 N2 #13 0.000 C8 #14 0.000 O3 #15 0.000 C9 #16 0.000 O4 #17 0.000 C10 #18 0.000 O5 #19 0.000 C11 #20 0.000 C12 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 +model KAMJAJ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 14 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 C1 #2 37 C2 #3 37 C3 #4 37 C4 #5 37 C5 #6 37 C6 #7 37 C7 #8 3 C8 #9 1 C9 #10 63 C10 #11 64 C11 #12 1 N1 #13 67 N2 #14 39 N3 #15 66 N4 #16 65 O1 #17 32 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 + # symb CL1 #1 CL C1 #2 CB C2 #3 CB C3 #4 CB C4 #5 CB C5 #6 CB C6 #7 CB C7 #8 C=N C8 #9 CR C9 #10 C5A C10 #11 C5B C11 #12 CR N1 #13 N2OX N2 #14 NPYL N3 #15 N5B N4 #16 N5A O1 #17 OXN H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC + # char CL1 #1 -0.177 C1 #2 0.177 C2 #3 -0.150 C3 #4 -0.150 C4 #5 0.086 C5 #6 -0.150 C6 #7 -0.150 C7 #8 -0.143 C8 #9 0.317 C9 #10 0.037 C10 #11 0.366 C11 #12 0.099 N1 #13 0.530 N2 #14 0.314 N3 #15 -0.565 N4 #16 -0.707 O1 #17 -0.633 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.000 H6 #23 0.000 H7 #24 0.150 H8 #25 0.150 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 + # fchar CL1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 C11 #12 0.000 N1 #13 0.000 N2 #14 0.000 N3 #15 0.000 N4 #16 0.000 O1 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 +model KANWEB RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 2 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 8 2 EXOCYCLIC MULT BOND 9 3 + # ty S1 #1 44 N1 #2 65 N2 #3 65 N3 #4 42 N4 #5 42 N5 #6 42 N6 #7 42 C1 #8 64 C2 #9 64 C3 #10 2 C4 #11 2 C5 #12 2 C6 #13 2 C7 #14 2 C8 #15 2 C9 #16 4 C10 #17 4 C11 #18 4 C12 #19 4 H1 #20 5 H2 #21 5 + # symb S1 #1 STHI N1 #2 N5A N2 #3 N5A N3 #4 NSP N4 #5 NSP N5 #6 NSP N6 #7 NSP C1 #8 C5B C2 #9 C5B C3 #10 C=C C4 #11 C=C C5 #12 C=C C6 #13 C=C C7 #14 C=C C8 #15 C=C C9 #16 CSP C10 #17 CSP C11 #18 CSP C12 #19 CSP H1 #20 HC H2 #21 HC + # char S1 #1 0.441 N1 #2 -0.510 N2 #3 -0.510 N3 #4 -0.557 N4 #5 -0.557 N5 #6 -0.557 N6 #7 -0.557 C1 #8 0.243 C2 #9 0.243 C3 #10 0.046 C4 #11 0.046 C5 #12 -0.150 C6 #13 -0.150 C7 #14 0.130 C8 #15 0.130 C9 #16 0.492 C10 #17 0.492 C11 #18 0.492 C12 #19 0.492 H1 #20 0.150 H2 #21 0.150 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.000 N3 #4 0.000 N4 #5 0.000 N5 #6 0.000 N6 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 C12 #19 0.000 H1 #20 0.000 H2 #21 0.000 +model KANZOO RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC RING 2 HAS 2 SUBRINGS PI PAIR ON O OR S 25 SUBRING 1 has 2 PI electrons PI PAIR ON O OR S 24 PI PAIR ON O OR S 23 SUBRING 2 has 4 PI electrons + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 N1 #4 38 C1 #5 37 N2 #6 38 C2 #7 37 N3 #8 38 C3 #9 37 N4 #10 38 C4 #11 37 C5 #12 37 C6 #13 37 N5 #14 40 C7 #15 1 C8 #16 1 C9 #17 1 C10 #18 1 C11 #19 1 C12 #20 1 C13 #21 1 C14 #22 1 O1 #23 6 O2 #24 6 O3 #25 6 O4 #26 6 H1 #27 28 H2 #28 5 H3 #29 5 H4 #30 5 H5 #31 5 H6 #32 5 H7 #33 5 H8 #34 5 H9 #35 5 H10 #36 5 H11 #37 5 H12 #38 5 H13 #39 5 H14 #40 21 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL N1 #4 NPYD C1 #5 CB N2 #6 NPYD C2 #7 CB N3 #8 NPYD C3 #9 CB N4 #10 NPYD C4 #11 CB C5 #12 CB C6 #13 CB N5 #14 NC=N C7 #15 CR C8 #16 CR C9 #17 CR C10 #18 CR C11 #19 CR C12 #20 CR C13 #21 CR C14 #22 CR O1 #23 OR O2 #24 OR O3 #25 OR O4 #26 OR H1 #27 HNCN H2 #28 HC H3 #29 HC H4 #30 HC H5 #31 HC H6 #32 HC H7 #33 HC H8 #34 HC H9 #35 HC H10 #36 HC H11 #37 HC H12 #38 HC H13 #39 HC H14 #40 HOR + # char CL1 #1 -0.177 CL2 #2 -0.177 CL3 #3 -0.177 N1 #4 -0.620 C1 #5 0.797 N2 #6 -0.620 C2 #7 0.487 N3 #8 -0.620 C3 #9 0.797 N4 #10 -0.620 C4 #11 0.410 C5 #12 0.310 C6 #13 0.310 N5 #14 -0.869 C7 #15 0.649 C8 #16 0.280 C9 #17 0.280 C10 #18 0.280 C11 #19 0.280 C12 #20 0.560 C13 #21 0.000 C14 #22 0.000 O1 #23 -0.560 O2 #24 -0.560 O3 #25 -0.560 O4 #26 -0.680 H1 #27 0.400 H2 #28 0.000 H3 #29 0.000 H4 #30 0.000 H5 #31 0.000 H6 #32 0.000 H7 #33 0.000 H8 #34 0.000 H9 #35 0.000 H10 #36 0.000 H11 #37 0.000 H12 #38 0.000 H13 #39 0.000 H14 #40 0.400 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 N1 #4 0.000 C1 #5 0.000 N2 #6 0.000 C2 #7 0.000 N3 #8 0.000 C3 #9 0.000 N4 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 N5 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 C12 #20 0.000 C13 #21 0.000 C14 #22 0.000 O1 #23 0.000 O2 #24 0.000 O3 #25 0.000 O4 #26 0.000 H1 #27 0.000 H2 #28 0.000 H3 #29 0.000 H4 #30 0.000 H5 #31 0.000 H6 #32 0.000 H7 #33 0.000 H8 #34 0.000 H9 #35 0.000 H10 #36 0.000 H11 #37 0.000 H12 #38 0.000 H13 #39 0.000 H14 #40 0.000 +model KAPCUZ RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 72 S2 #2 72 N1 #3 81 N2 #4 81 C1 #5 41 C2 #6 78 C3 #7 78 C4 #8 80 C5 #9 1 C6 #10 1 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 + # symb S1 #1 S2CM S2 #2 S2CM N1 #3 NIM+ N2 #4 NIM+ C1 #5 CS2M C2 #6 C5 C3 #7 C5 C4 #8 CIM+ C5 #9 CR C6 #10 CR H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC + # char S1 #1 -0.750 S2 #2 -0.750 N1 #3 -0.764 N2 #4 -0.764 C1 #5 0.696 C2 #6 0.200 C3 #7 0.200 C4 #8 0.604 C5 #9 0.514 C6 #10 0.514 H1 #11 0.150 H2 #12 0.150 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 + # fchar S1 #1 -0.500 S2 #2 -0.500 N1 #3 0.500 N2 #4 0.500 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 +model KARYAD RING 1 HAS 3 SUBRINGS SUBRING 1 has 0 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 0 PI electrons + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 42 C1 #5 1 C2 #6 1 C3 #7 1 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 1 C9 #13 4 C10 #14 1 C11 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 H15 #30 5 + # symb S1 #1 SO2 O1 #2 O2S O2 #3 O2S N1 #4 NSP C1 #5 CR C2 #6 CR C3 #7 CR C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 CR C9 #13 CSP C10 #14 CR C11 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC H15 #30 HC + # char S1 #1 1.090 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.557 C1 #5 0.305 C2 #6 0.105 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.357 C10 #14 0.000 C11 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 +model KASBAH RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 1 N1 #8 43 N2 #9 45 C8 #10 4 N3 #11 42 O1 #12 32 O2 #13 32 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CR N1 #8 NC%N N2 #9 NO2 C8 #10 CSP N3 #11 NSP O1 #12 O2N O2 #13 O2N H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC + # char C1 #1 -0.143 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.499 N1 #8 -0.548 N2 #9 1.106 C8 #10 0.683 N3 #11 -0.557 O1 #12 -0.520 O2 #13 -0.520 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.150 H6 #19 0.000 H7 #20 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 N1 #8 0.000 N2 #9 0.000 C8 #10 0.000 N3 #11 0.000 O1 #12 0.000 O2 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 +model KASBOV RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 4 C8 #8 4 C9 #9 3 C10 #10 1 C11 #11 1 O1 #12 6 O2 #13 7 O3 #14 6 O4 #15 6 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 24 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CSP C8 #8 CSP C9 #9 COO C10 #10 CR C11 #11 CR O1 #12 OC=O O2 #13 O=CO O3 #14 OC=C O4 #15 OC=C H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HOCO H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC + # char C1 #1 0.073 C2 #2 -0.150 C3 #3 0.083 C4 #4 0.083 C5 #5 -0.150 C6 #6 -0.150 C7 #7 -0.073 C8 #8 -0.105 C9 #9 0.825 C10 #10 0.280 C11 #11 0.280 O1 #12 -0.650 O2 #13 -0.570 O3 #14 -0.363 O4 #15 -0.363 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.500 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 O1 #12 0.000 O2 #13 0.000 O3 #14 0.000 O4 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 +model KATNAU RING 1 HAS 2 SUBRINGS SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 6 PI PAIR ON SP2-N 7 SUBRING 2 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 9 N2 #5 9 N3 #6 40 N4 #7 40 C1 #8 3 C2 #9 2 C3 #10 3 C4 #11 2 C5 #12 1 C6 #13 1 C7 #14 37 C8 #15 37 C9 #16 37 C10 #17 37 C11 #18 37 C12 #19 37 H3 #20 28 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S N1 #4 N=C N2 #5 N=C N3 #6 NC=C N4 #7 NC=N C1 #8 C=N C2 #9 C=C C3 #10 C=N C4 #11 C=C C5 #12 CR C6 #13 CR C7 #14 CB C8 #15 CB C9 #16 CB C10 #17 CB C11 #18 CB C12 #19 CB H3 #20 HNCC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC + # char S1 #1 1.465 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.638 N2 #5 -0.621 N3 #6 -0.500 N4 #7 -0.419 C1 #8 0.387 C2 #9 0.185 C3 #10 0.486 C4 #11 -0.038 C5 #12 0.369 C6 #13 0.138 C7 #14 0.086 C8 #15 -0.150 C9 #16 -0.150 C10 #17 -0.150 C11 #18 -0.150 C12 #19 -0.150 H3 #20 0.400 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.150 H11 #28 0.150 H12 #29 0.150 H13 #30 0.150 H14 #31 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 C12 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 +model KAVFUI RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 45 O1 #3 32 O2 #4 32 C1 #5 63 H1 #6 5 N3 #7 66 C2 #8 64 N4 #9 45 O3 #10 32 O4 #11 32 C3 #12 63 H2 #13 5 + # symb N1 #1 NPYL N2 #2 NO2 O1 #3 O2N O2 #4 O2N C1 #5 C5A H1 #6 HC N3 #7 N5B C2 #8 C5B N4 #9 NO2 O3 #10 O2N O4 #11 O2N C3 #12 C5A H2 #13 HC + # char N1 #1 0.459 N2 #2 0.884 O1 #3 -0.520 O2 #4 -0.520 C1 #5 0.037 H1 #6 0.150 N3 #7 -0.565 C2 #8 0.306 N4 #9 0.961 O3 #10 -0.520 O4 #11 -0.520 C3 #12 -0.302 H2 #13 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 H1 #6 0.000 N3 #7 0.000 C2 #8 0.000 N4 #9 0.000 O3 #10 0.000 O4 #11 0.000 C3 #12 0.000 H2 #13 0.000 +model KAVTEG RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON O OR S 3 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 1 PI PAIR ON O OR S 10 SUBRING 2 has 4 PI electrons + # ty N1 #1 8 C1 #2 1 O1 #3 6 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 1 C6 #8 3 O2 #9 7 O3 #10 6 C7 #11 1 O4 #12 6 C8 #13 3 O5 #14 7 C9 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 + # symb N1 #1 NR C1 #2 CR O1 #3 OR C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 CR C6 #8 COO O2 #9 O=CO O3 #10 OC=O C7 #11 CR O4 #12 OC=O C8 #13 COO O5 #14 O=CO C9 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC + # char N1 #1 -0.640 C1 #2 0.550 O1 #3 -0.560 C2 #4 0.280 C3 #5 0.000 C4 #6 0.270 C5 #7 0.061 C6 #8 0.659 O2 #9 -0.570 O3 #10 -0.050 C7 #11 0.280 O4 #12 -0.430 C8 #13 0.659 O5 #14 -0.570 C9 #15 0.061 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 O1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 O2 #9 0.000 O3 #10 0.000 C7 #11 0.000 O4 #12 0.000 C8 #13 0.000 O5 #14 0.000 C9 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 +model KECSIU RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons + # ty S1 #1 15 S2 #2 16 F1 #3 11 F2 #4 11 F3 #5 11 F4 #6 11 F5 #7 11 F6 #8 11 F7 #9 11 F8 #10 11 C1 #11 2 C2 #12 2 C3 #13 2 C4 #14 2 C5 #15 2 C6 #16 1 C7 #17 2 C8 #18 3 C9 #19 1 C10 #20 1 C11 #21 1 C12 #22 1 H1 #23 5 H2 #24 5 H3 #25 5 H4 #26 5 H5 #27 5 H6 #28 5 H7 #29 5 H8 #30 5 + # symb S1 #1 S S2 #2 S=C F1 #3 F F2 #4 F F3 #5 F F4 #6 F F5 #7 F F6 #8 F F7 #9 F F8 #10 F C1 #11 C=C C2 #12 C=C C3 #13 C=C C4 #14 C=C C5 #15 C=C C6 #16 CR C7 #17 C=C C8 #18 C=S C9 #19 CR C10 #20 CR C11 #21 CR C12 #22 CR H1 #23 HC H2 #24 HC H3 #25 HC H4 #26 HC H5 #27 HC H6 #28 HC H7 #29 HC H8 #30 HC + # char S1 #1 -0.202 S2 #2 -0.380 F1 #3 -0.340 F2 #4 -0.340 F3 #5 -0.340 F4 #6 -0.340 F5 #7 -0.340 F6 #8 -0.340 F7 #9 -0.340 F8 #10 -0.340 C1 #11 0.101 C2 #12 -0.150 C3 #13 -0.138 C4 #14 -0.150 C5 #15 -0.037 C6 #16 0.138 C7 #17 -0.136 C8 #18 0.305 C9 #19 0.741 C10 #20 0.680 C11 #21 0.818 C12 #22 0.680 H1 #23 0.150 H2 #24 0.150 H3 #25 0.000 H4 #26 0.000 H5 #27 0.000 H6 #28 0.150 H7 #29 0.000 H8 #30 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 F1 #3 0.000 F2 #4 0.000 F3 #5 0.000 F4 #6 0.000 F5 #7 0.000 F6 #8 0.000 F7 #9 0.000 F8 #10 0.000 C1 #11 0.000 C2 #12 0.000 C3 #13 0.000 C4 #14 0.000 C5 #15 0.000 C6 #16 0.000 C7 #17 0.000 C8 #18 0.000 C9 #19 0.000 C10 #20 0.000 C11 #21 0.000 C12 #22 0.000 H1 #23 0.000 H2 #24 0.000 H3 #25 0.000 H4 #26 0.000 H5 #27 0.000 H6 #28 0.000 H7 #29 0.000 H8 #30 0.000 +model KECSUG RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 65 C1 #3 64 N3 #4 66 C2 #5 63 C3 #6 1 C4 #7 1 C5 #8 1 CL1 #9 12 CL2 #10 12 CL3 #11 12 CL4 #12 12 CL5 #13 12 CL6 #14 12 CL7 #15 12 CL8 #16 12 CL9 #17 12 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B N3 #4 N5B C2 #5 C5A C3 #6 CR C4 #7 CR C5 #8 CR CL1 #9 CL CL2 #10 CL CL3 #11 CL CL4 #12 CL CL5 #13 CL CL6 #14 CL CL7 #15 CL CL8 #16 CL CL9 #17 CL + # char N1 #1 0.314 N2 #2 -0.707 C1 #3 0.335 N3 #4 -0.565 C2 #5 0.310 C3 #6 0.836 C4 #7 0.870 C5 #8 1.051 CL1 #9 -0.290 CL2 #10 -0.290 CL3 #11 -0.290 CL4 #12 -0.290 CL5 #13 -0.290 CL6 #14 -0.290 CL7 #15 -0.290 CL8 #16 -0.290 CL9 #17 -0.124 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 N3 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 CL1 #9 0.000 CL2 #10 0.000 CL3 #11 0.000 CL4 #12 0.000 CL5 #13 0.000 CL6 #14 0.000 CL7 #15 0.000 CL8 #16 0.000 CL9 #17 0.000 +model KEDYAT RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 14 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C1 #2 63 C2 #3 64 C3 #4 64 C4 #5 63 O1 #6 6 C5 #7 1 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 5 H5 #12 5 C4A #13 63 S1A #14 44 C3A #15 64 C1A #16 63 C2A #17 64 H5A #18 5 H4A #19 5 O1A #20 6 C5A #21 1 H1A #22 5 H2A #23 5 H3A #24 5 + # symb S1 #1 STHI C1 #2 C5A C2 #3 C5B C3 #4 C5B C4 #5 C5A O1 #6 OC=C C5 #7 CR H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HC H5 #12 HC C4A #13 C5A S1A #14 STHI C3A #15 C5B C1A #16 C5A C2A #17 C5B H5A #18 HC H4A #19 HC O1A #20 OC=C C5A #21 CR H1A #22 HC H2A #23 HC H3A #24 HC + # char S1 #1 -0.080 C1 #2 -0.110 C2 #3 0.062 C3 #4 -0.150 C4 #5 0.040 O1 #6 -0.342 C5 #7 0.280 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.150 H5 #12 0.150 C4A #13 0.040 S1A #14 -0.080 C3A #15 -0.150 C1A #16 -0.110 C2A #17 0.062 H5A #18 0.150 H4A #19 0.150 O1A #20 -0.342 C5A #21 0.280 H1A #22 0.000 H2A #23 0.000 H3A #24 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 O1 #6 0.000 C5 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 C4A #13 0.000 S1A #14 0.000 C3A #15 0.000 C1A #16 0.000 C2A #17 0.000 H5A #18 0.000 H4A #19 0.000 O1A #20 0.000 C5A #21 0.000 H1A #22 0.000 H2A #23 0.000 H3A #24 0.000 +model KEFJEK RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 O2 #2 59 N1 #3 40 N2 #4 66 N3 #5 42 C1 #6 1 C2 #7 63 C3 #8 63 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 37 C9 #14 37 C10 #15 64 C11 #16 4 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 28 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 + # symb O1 #1 OC=C O2 #2 OFUR N1 #3 NC=N N2 #4 N5B N3 #5 NSP C1 #6 CR C2 #7 C5A C3 #8 C5A C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CB C9 #14 CB C10 #15 C5B C11 #16 CSP H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HNCN H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC + # char O1 #1 -0.343 O2 #2 -0.280 N1 #3 -0.584 N2 #4 -0.565 N3 #5 -0.557 C1 #6 0.280 C2 #7 0.203 C3 #8 0.562 C4 #9 0.100 C5 #10 -0.150 C6 #11 -0.150 C7 #12 -0.150 C8 #13 -0.150 C9 #14 -0.150 C10 #15 0.246 C11 #16 0.538 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.400 H5 #21 0.150 H6 #22 0.150 H7 #23 0.150 H8 #24 0.150 H9 #25 0.150 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 +model KEJFOU RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 4 SUBRING 1 has 4 PI electrons + # ty P1 #1 25 O1 #2 32 O2 #3 32 O3 #4 6 O4 #5 7 N1 #6 10 C1 #7 2 C2 #8 2 C3 #9 1 C4 #10 3 C5 #11 1 C6 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 28 H8 #20 28 H9 #21 5 + # symb P1 #1 PO3 O1 #2 O2P O2 #3 O2P O3 #4 OPO2 O4 #5 O=CN N1 #6 NC=O C1 #7 C=C C2 #8 C=C C3 #9 CR C4 #10 C=ON C5 #11 CR C6 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HNCO H8 #20 HNCO H9 #21 HC + # char P1 #1 1.318 O1 #2 -0.950 O2 #3 -0.950 O3 #4 -0.551 O4 #5 -0.570 N1 #6 -0.800 C1 #7 -0.297 C2 #8 -0.124 C3 #9 0.418 C4 #10 0.616 C5 #11 0.000 C6 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.370 H8 #20 0.370 H9 #21 0.150 + # fchar P1 #1 0.000 O1 #2 -0.500 O2 #3 -0.500 O3 #4 0.000 O4 #5 0.000 N1 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 +model KEMFAJ RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 S2 #2 18 O3 #3 32 O4 #4 32 N1 #5 66 N2 #6 66 N3 #7 62 N4 #8 40 C1 #9 63 C2 #10 63 C3 #11 37 C4 #12 37 C5 #13 37 C6 #14 37 C7 #15 37 C8 #16 37 C9 #17 1 C10 #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H9 #23 28 H10 #24 28 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 5 H15 #29 5 + # symb S1 #1 STHI S2 #2 SO2N O3 #3 O2S O4 #4 O2S N1 #5 N5B N2 #6 N5B N3 #7 NM N4 #8 NC=C C1 #9 C5A C2 #10 C5A C3 #11 CB C4 #12 CB C5 #13 CB C6 #14 CB C7 #15 CB C8 #16 CB C9 #17 CR C10 #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H9 #23 HNCC H10 #24 HNCC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HC H15 #29 HC + # char S1 #1 -0.080 S2 #2 0.849 O3 #3 -0.650 O4 #4 -0.650 N1 #5 -0.338 N2 #6 -0.338 N3 #7 -0.235 N4 #8 -0.900 C1 #9 0.198 C2 #10 0.073 C3 #11 -0.009 C4 #12 -0.150 C5 #13 -0.150 C6 #14 0.100 C7 #15 -0.150 C8 #16 -0.150 C9 #17 0.180 C10 #18 0.000 H1 #19 0.150 H2 #20 0.150 H3 #21 0.150 H4 #22 0.150 H9 #23 0.400 H10 #24 0.400 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 O3 #3 0.000 O4 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 -1.000 N4 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 +model KENHOA RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 3-MEMBERED RING PI PAIR ON O OR S 9 SUBRING 1 has 2 PI electrons SUBRING 3 has 2 PI electrons + # ty S1 #1 18 CL1 #2 12 N1 #3 9 O1 #4 32 C1 #5 22 O2 #6 32 C2 #7 22 C3 #8 3 O3 #9 6 C4 #10 1 C5 #11 2 C6 #12 2 C7 #13 22 C8 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 + # symb S1 #1 SO2N CL1 #2 CL N1 #3 N=C O1 #4 O2S C1 #5 CR3R O2 #6 O2S C2 #7 CR3R C3 #8 C=N O3 #9 OC=N C4 #10 CR C5 #11 C=C C6 #12 C=C C7 #13 CR3R C8 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC + # char S1 #1 1.674 CL1 #2 -0.186 N1 #3 -0.638 O1 #4 -0.650 C1 #5 -0.195 O2 #6 -0.650 C2 #7 -0.100 C3 #8 0.600 O3 #9 -0.430 C4 #10 0.418 C5 #11 -0.288 C6 #12 -0.190 C7 #13 -0.060 C8 #14 0.095 H1 #15 0.100 H2 #16 0.100 H3 #17 0.000 H4 #18 0.150 H5 #19 0.150 H6 #20 0.100 H7 #21 0.000 H8 #22 0.000 + # fchar S1 #1 0.000 CL1 #2 0.000 N1 #3 0.000 O1 #4 0.000 C1 #5 0.000 O2 #6 0.000 C2 #7 0.000 C3 #8 0.000 O3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 +model KEPKIZ RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 8 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 12 SUBRING 2 has 6 PI electrons PI PAIR ON SP2-N 8 SUBRING 3 has 6 PI electrons SUBRING 2 IS AROMATIC SUBRING 3 IS AROMATIC + # ty C1 #1 64 C2 #2 64 C3 #3 2 C4 #4 2 C5 #5 63 N1 #6 65 N2 #7 82 N3 #8 39 N4 #9 65 N5 #10 66 N6 #11 66 O1 #12 59 O2 #13 32 H1 #14 5 H2 #15 5 + # symb C1 #1 C5B C2 #2 C5B C3 #3 C=C C4 #4 C=C C5 #5 C5A N1 #6 N5A N2 #7 N5AX N3 #8 NPYL N4 #9 N5A N5 #10 N5B N6 #11 N5B O1 #12 OFUR O2 #13 OXN H1 #14 HC H2 #15 HC + # char C1 #1 0.212 C2 #2 -0.128 C3 #3 -0.104 C4 #4 -0.105 C5 #5 0.142 N1 #6 -0.410 N2 #7 0.953 N3 #8 0.647 N4 #9 -0.418 N5 #10 0.000 N6 #11 -0.338 O1 #12 -0.117 O2 #13 -0.633 H1 #14 0.150 H2 #15 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 N4 #9 0.000 N5 #10 0.000 N6 #11 0.000 O1 #12 0.000 O2 #13 0.000 H1 #14 0.000 H2 #15 0.000 +model KESNEB RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 32 O2 #2 32 O3 #3 32 O4 #4 32 O5 #5 32 N1 #6 45 N2 #7 45 N3 #8 67 C1 #9 37 C2 #10 37 C3 #11 37 C4 #12 37 C5 #13 37 C6 #14 37 C7 #15 3 C8 #16 1 C9 #17 1 C10 #18 1 C11 #19 1 H1 #20 5 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 5 H13 #32 5 + # symb O1 #1 O2N O2 #2 O2N O3 #3 O2N O4 #4 O2N O5 #5 OXN N1 #6 NO2 N2 #7 NO2 N3 #8 N2OX C1 #9 CB C2 #10 CB C3 #11 CB C4 #12 CB C5 #13 CB C6 #14 CB C7 #15 C=N C8 #16 CR C9 #17 CR C10 #18 CR C11 #19 CR H1 #20 HC H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HC H13 #32 HC + # char O1 #1 -0.520 O2 #2 -0.520 O3 #3 -0.520 O4 #4 -0.520 O5 #5 -0.633 N1 #6 0.907 N2 #7 0.907 N3 #8 0.530 C1 #9 0.086 C2 #10 0.133 C3 #11 -0.150 C4 #12 0.133 C5 #13 -0.150 C6 #14 -0.150 C7 #15 -0.142 C8 #16 0.099 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 H1 #20 0.150 H2 #21 0.150 H3 #22 0.150 H4 #23 0.060 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 +model KEWJIF RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 N1 #2 65 C1 #3 64 C2 #4 64 N2 #5 65 N3 #6 40 N4 #7 9 N5 #8 53 N6 #9 47 H1 #10 28 H2 #11 28 + # symb S1 #1 STHI N1 #2 N5A C1 #3 C5B C2 #4 C5B N2 #5 N5A N3 #6 NC=N N4 #7 N=N N5 #8 =N= N6 #9 NAZT H1 #10 HNCN H2 #11 HNCN + # char S1 #1 0.441 N1 #2 -0.510 C1 #3 0.372 C2 #4 0.414 N2 #5 -0.510 N3 #6 -0.883 N4 #7 -0.443 N5 #8 0.688 N6 #9 -0.370 H1 #10 0.400 H2 #11 0.400 + # fchar S1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 N5 #8 0.000 N6 #9 0.000 H1 #10 0.000 H2 #11 0.000 +model KHDFRM11 + # ty O3 #1 6 O4 #2 7 C2 #3 3 H2 #4 5 H3 #5 24 + # symb O3 #1 OC=O O4 #2 O=CO C2 #3 COO H2 #4 HC H3 #5 HOCO + # char O3 #1 -0.650 O4 #2 -0.570 C2 #3 0.660 H2 #4 0.060 H3 #5 0.500 + # fchar O3 #1 0.000 O4 #2 0.000 C2 #3 0.000 H2 #4 0.000 H3 #5 0.000 +model KIBDII RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 8 SUBRING 1 has 2 PI electrons + # ty N1 #1 9 C1 #2 3 N2 #3 9 C2 #4 3 S1 #5 15 C3 #6 1 N3 #7 40 N4 #8 40 C4 #9 1 C5 #10 1 C6 #11 1 C7 #12 1 N5 #13 45 O1 #14 32 O2 #15 32 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 28 H5 #20 28 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 + # symb N1 #1 N=C C1 #2 C=N N2 #3 N=C C2 #4 C=N S1 #5 S C3 #6 CR N3 #7 NC=N N4 #8 NC=N C4 #9 CR C5 #10 CR C6 #11 CR C7 #12 CR N5 #13 NO2 O1 #14 O2N O2 #15 O2N H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HNCN H5 #20 HNCN H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC + # char N1 #1 -0.496 C1 #2 0.711 N2 #3 -0.661 C2 #4 0.641 S1 #5 -0.371 C3 #6 0.230 N3 #7 -0.850 N4 #8 -0.788 C4 #9 0.369 C5 #10 0.000 C6 #11 0.000 C7 #12 0.369 N5 #13 1.086 O1 #14 -0.520 O2 #15 -0.520 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.400 H5 #20 0.400 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 S1 #5 0.000 C3 #6 0.000 N3 #7 0.000 N4 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 N5 #13 0.000 O1 #14 0.000 O2 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 +model KIBFAC RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 38 N2 #2 69 N3 #3 38 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 1 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 C10 #13 37 O1 #14 32 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 + # symb N1 #1 NPYD N2 #2 NPOX N3 #3 NPYD C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CR C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB C10 #13 CB O1 #14 OXN H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC + # char N1 #1 -0.648 N2 #2 1.426 N3 #3 -0.648 C1 #4 0.167 C2 #5 -0.150 C3 #6 0.310 C4 #7 0.143 C5 #8 0.000 C6 #9 -0.150 C7 #10 -0.150 C8 #11 -0.150 C9 #12 -0.150 C10 #13 -0.150 O1 #14 -0.750 H1 #15 0.150 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 H8 #22 0.150 H9 #23 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 O1 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 +model KICCUU + # ty P1 #1 26 F1 #2 11 F2 #3 11 O1 #4 6 C1 #5 1 H1 #6 5 H2 #7 5 C2 #8 1 H3 #9 5 H4 #10 5 C3 #11 4 N1 #12 42 + # symb P1 #1 P F1 #2 F F2 #3 F O1 #4 -OP C1 #5 CR H1 #6 HC H2 #7 HC C2 #8 CR H3 #9 HC H4 #10 HC C3 #11 CSP N1 #12 NSP + # char P1 #1 0.451 F1 #2 -0.175 F2 #3 -0.175 O1 #4 -0.381 C1 #5 0.280 H1 #6 0.000 H2 #7 0.000 C2 #8 0.200 H3 #9 0.000 H4 #10 0.000 C3 #11 0.357 N1 #12 -0.557 + # fchar P1 #1 0.000 F1 #2 0.000 F2 #3 0.000 O1 #4 0.000 C1 #5 0.000 H1 #6 0.000 H2 #7 0.000 C2 #8 0.000 H3 #9 0.000 H4 #10 0.000 C3 #11 0.000 N1 #12 0.000 +model KICGAE RING 1 HAS 4 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 1 has 0 PI electrons SUBRING 3 has 0 PI electrons SUBRING 4 has 2 PI electrons + # ty C1 #1 20 C2 #2 20 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 2 C7 #7 2 C8 #8 20 C9 #9 20 C10 #10 1 CL1 #11 12 CL2 #12 12 CL3 #13 12 CL4 #14 12 CL5 #15 12 CL6 #16 12 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 + # symb C1 #1 CR4R C2 #2 CR4R C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 C=C C7 #7 C=C C8 #8 CR4R C9 #9 CR4R C10 #10 CR CL1 #11 CL CL2 #12 CL CL3 #13 CL CL4 #14 CL CL5 #15 CL CL6 #16 CL H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC + # char C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.428 C6 #6 0.002 C7 #7 0.024 C8 #8 0.406 C9 #9 0.290 C10 #10 0.290 CL1 #11 -0.290 CL2 #12 -0.140 CL3 #13 -0.140 CL4 #14 -0.290 CL5 #15 -0.290 CL6 #16 -0.290 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 CL1 #11 0.000 CL2 #12 0.000 CL3 #13 0.000 CL4 #14 0.000 CL5 #15 0.000 CL6 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 +model KICLAJ RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 3 PI PAIR ON O OR S 5 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 6 SUBRING 2 has 2 PI electrons + # ty P1 #1 25 O1 #2 32 O2 #3 6 O3 #4 6 O4 #5 6 O5 #6 6 O6 #7 6 C1 #8 1 C2 #9 1 C3 #10 1 C4 #11 1 C5 #12 1 C6 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 21 H5 #18 71 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 + # symb P1 #1 PO3 O1 #2 OP O2 #3 OPO2 O3 #4 OR O4 #5 OPO2 O5 #6 OR O6 #7 OR C1 #8 CR C2 #9 CR C3 #10 CR C4 #11 CR C5 #12 CR C6 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HOR H5 #18 HP H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC + # char P1 #1 1.279 O1 #2 -0.700 O2 #3 -0.551 O3 #4 -0.680 O4 #5 -0.551 O5 #6 -0.560 O6 #7 -0.560 C1 #8 0.560 C2 #9 0.280 C3 #10 0.280 C4 #11 0.280 C5 #12 0.280 C6 #13 0.280 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.400 H5 #18 -0.036 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 O5 #6 0.000 O6 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 +model KIGKIU RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 15 P1 #2 26 CL1 #3 12 N1 #4 40 C1 #5 37 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 H1 #11 28 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 + # symb S1 #1 S P1 #2 P CL1 #3 CL N1 #4 NC=C C1 #5 CB C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB H1 #11 HNCC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC + # char S1 #1 -0.196 P1 #2 0.427 CL1 #3 -0.211 N1 #4 -0.622 C1 #5 0.100 C2 #6 -0.150 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 0.102 H1 #11 0.400 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 H5 #15 0.150 + # fchar S1 #1 0.000 P1 #2 0.000 CL1 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 +model KIKVUV RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 N1 #4 38 C4 #5 37 C5 #6 37 N2 #7 67 O1 #8 32 F1 #9 11 F2 #10 11 F3 #11 11 F4 #12 11 N2B #13 67 C1B #14 37 O1B #15 32 C2B #16 37 C5B #17 37 C3B #18 37 F1B #19 11 C4B #20 37 F4B #21 11 N1B #22 38 F2B #23 11 F3B #24 11 + # symb C1 #1 CB C2 #2 CB C3 #3 CB N1 #4 NPYD C4 #5 CB C5 #6 CB N2 #7 N2OX O1 #8 OXN F1 #9 F F2 #10 F F3 #11 F F4 #12 F N2B #13 N2OX C1B #14 CB O1B #15 OXN C2B #16 CB C5B #17 CB C3B #18 CB F1B #19 F C4B #20 CB F4B #21 F N1B #22 NPYD F2B #23 F F3B #24 F + # char C1 #1 -0.028 C2 #2 0.190 C3 #3 0.500 N1 #4 -0.620 C4 #5 0.500 C5 #6 0.190 N2 #7 0.661 O1 #8 -0.633 F1 #9 -0.190 F2 #10 -0.190 F3 #11 -0.190 F4 #12 -0.190 N2B #13 0.661 C1B #14 -0.028 O1B #15 -0.633 C2B #16 0.190 C5B #17 0.190 C3B #18 0.500 F1B #19 -0.190 C4B #20 0.500 F4B #21 -0.190 N1B #22 -0.620 F2B #23 -0.190 F3B #24 -0.190 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N1 #4 0.000 C4 #5 0.000 C5 #6 0.000 N2 #7 0.000 O1 #8 0.000 F1 #9 0.000 F2 #10 0.000 F3 #11 0.000 F4 #12 0.000 N2B #13 0.000 C1B #14 0.000 O1B #15 0.000 C2B #16 0.000 C5B #17 0.000 C3B #18 0.000 F1B #19 0.000 C4B #20 0.000 F4B #21 0.000 N1B #22 0.000 F2B #23 0.000 F3B #24 0.000 +model KIMLEX01 + # ty C1 #1 1 O1 #2 35 F1 #3 11 F2 #4 11 F3 #5 11 + # symb C1 #1 CR O1 #2 OM F1 #3 F F2 #4 F F3 #5 F + # char C1 #1 0.947 O1 #2 -0.927 F1 #3 -0.340 F2 #4 -0.340 F3 #5 -0.340 + # fchar C1 #1 0.000 O1 #2 -1.000 F1 #3 0.000 F2 #4 0.000 F3 #5 0.000 +model KINKUN RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons + # ty O1 #1 6 N1 #2 40 C1 #3 1 C2 #4 2 C3 #5 2 C4 #6 1 C5 #7 2 C6 #8 2 C7 #9 4 N2 #10 42 S1 #11 15 C8 #12 1 C9 #13 1 C10 #14 1 C11 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 H15 #30 5 H16 #31 5 + # symb O1 #1 OR N1 #2 NC=C C1 #3 CR C2 #4 C=C C3 #5 C=C C4 #6 CR C5 #7 C=C C6 #8 C=C C7 #9 CSP N2 #10 NSP S1 #11 S C8 #12 CR C9 #13 CR C10 #14 CR C11 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC H15 #30 HC H16 #31 HC + # char O1 #1 -0.259 N1 #2 -0.490 C1 #3 0.507 C2 #4 -0.288 C3 #5 -0.288 C4 #6 0.418 C5 #7 -0.050 C6 #8 0.166 C7 #9 0.492 N2 #10 -0.557 S1 #11 -0.331 C8 #12 0.230 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.150 H4 #19 0.150 H5 #20 0.000 H6 #21 0.000 H7 #22 0.150 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 + # fchar O1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 N2 #10 0.000 S1 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 +model KINTUW + # ty N1 #1 8 N2 #2 61 C1 #3 1 C2 #4 1 C3 #5 1 C4 #6 60 H1 #7 5 H2 #8 5 H3 #9 5 H4 #10 5 H5 #11 5 H6 #12 5 C1A #13 1 C1B #14 1 C2A #15 1 H1A #16 5 H2A #17 5 C2B #18 1 H1B #19 5 H2B #20 5 C3A #21 1 H3A #22 5 H4A #23 5 C3B #24 1 H3B #25 5 H4B #26 5 N2A #27 61 H5A #28 5 H6A #29 5 N2B #30 61 H5B #31 5 H6B #32 5 C4A #33 60 C4B #34 60 + # symb N1 #1 NR N2 #2 NR% C1 #3 CR C2 #4 CR C3 #5 CR C4 #6 C% H1 #7 HC H2 #8 HC H3 #9 HC H4 #10 HC H5 #11 HC H6 #12 HC C1A #13 CR C1B #14 CR C2A #15 CR H1A #16 HC H2A #17 HC C2B #18 CR H1B #19 HC H2B #20 HC C3A #21 CR H3A #22 HC H4A #23 HC C3B #24 CR H3B #25 HC H4B #26 HC N2A #27 NR% H5A #28 HC H6A #29 HC N2B #30 NR% H5B #31 HC H6B #32 HC C4A #33 C% C4B #34 C% + # char N1 #1 -0.810 N2 #2 0.104 C1 #3 0.270 C2 #4 0.000 C3 #5 0.266 C4 #6 -0.370 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 C1A #13 0.270 C1B #14 0.270 C2A #15 0.000 H1A #16 0.000 H2A #17 0.000 C2B #18 0.000 H1B #19 0.000 H2B #20 0.000 C3A #21 0.266 H3A #22 0.000 H4A #23 0.000 C3B #24 0.266 H3B #25 0.000 H4B #26 0.000 N2A #27 0.104 H5A #28 0.000 H6A #29 0.000 N2B #30 0.104 H5B #31 0.000 H6B #32 0.000 C4A #33 -0.370 C4B #34 -0.370 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 C1A #13 0.000 C1B #14 0.000 C2A #15 0.000 H1A #16 0.000 H2A #17 0.000 C2B #18 0.000 H1B #19 0.000 H2B #20 0.000 C3A #21 0.000 H3A #22 0.000 H4A #23 0.000 C3B #24 0.000 H3B #25 0.000 H4B #26 0.000 N2A #27 0.000 H5A #28 0.000 H6A #29 0.000 N2B #30 0.000 H5B #31 0.000 H6B #32 0.000 C4A #33 0.000 C4B #34 0.000 +model KINWEJ RING 1 HAS 5 SUBRINGS SUBRING 3 IS A 4-MEMBERED RING SUBRING 1 has 0 PI electrons SUBRING 2 has 6 PI electrons SUBRING 4 has 0 PI electrons PI PAIR ON SP2-N 14 SUBRING 5 has 4 PI electrons SUBRING 2 IS AROMATIC + # ty C1 #1 1 C2 #2 20 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 20 C10 #10 1 C11 #11 1 C12 #12 3 O1 #13 7 N1 #14 10 N2 #15 9 C13 #16 3 C14 #17 1 C15 #18 1 O2 #19 6 C16 #20 1 C17 #21 1 H1 #22 5 H2 #23 5 H3 #24 5 H4 #25 5 H5 #26 5 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 5 H10 #31 28 H11 #32 5 H12 #33 5 H13 #34 5 H14 #35 5 H15 #36 5 H16 #37 5 H17 #38 5 H18 #39 5 + # symb C1 #1 CR C2 #2 CR4R C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CR4R C10 #10 CR C11 #11 CR C12 #12 C=ON O1 #13 O=CN N1 #14 NC=O N2 #15 N=C C13 #16 C=N C14 #17 CR C15 #18 CR O2 #19 OC=N C16 #20 CR C17 #21 CR H1 #22 HC H2 #23 HC H3 #24 HC H4 #25 HC H5 #26 HC H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HC H10 #31 HNCO H11 #32 HC H12 #33 HC H13 #34 HC H14 #35 HC H15 #36 HC H16 #37 HC H17 #38 HC H18 #39 HC + # char C1 #1 0.000 C2 #2 0.108 C3 #3 -0.108 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.108 C9 #9 0.108 C10 #10 0.000 C11 #11 0.061 C12 #12 0.569 O1 #13 -0.570 N1 #14 -0.368 N2 #15 -0.512 C13 #16 0.539 C14 #17 0.061 C15 #18 0.000 O2 #19 -0.430 C16 #20 0.280 C17 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.150 H4 #25 0.150 H5 #26 0.150 H6 #27 0.150 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.370 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 H15 #36 0.000 H16 #37 0.000 H17 #38 0.000 H18 #39 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 O1 #13 0.000 N1 #14 0.000 N2 #15 0.000 C13 #16 0.000 C14 #17 0.000 C15 #18 0.000 O2 #19 0.000 C16 #20 0.000 C17 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 H15 #36 0.000 H16 #37 0.000 H17 #38 0.000 H18 #39 0.000 +model KINWIN + # ty C1 #1 3 O1 #2 7 O2 #3 6 C2 #4 1 N1 #5 34 C3 #6 1 C4 #7 1 F1 #8 11 C5 #9 41 O3 #10 32 O4 #11 32 H1 #12 24 H2 #13 5 H3 #14 36 H4 #15 36 H5 #16 36 H6 #17 5 H7 #18 5 H8 #19 5 + # symb C1 #1 COO O1 #2 O=CO O2 #3 OC=O C2 #4 CR N1 #5 NR+ C3 #6 CR C4 #7 CR F1 #8 F C5 #9 CO2M O3 #10 O2CM O4 #11 O2CM H1 #12 HOCO H2 #13 HC H3 #14 HNR+ H4 #15 HNR+ H5 #16 HNR+ H6 #17 HC H7 #18 HC H8 #19 HC + # char C1 #1 0.659 O1 #2 -0.570 O2 #3 -0.650 C2 #4 0.564 N1 #5 -0.853 C3 #6 0.000 C4 #7 0.234 F1 #8 -0.340 C5 #9 0.906 O3 #10 -0.900 O4 #11 -0.900 H1 #12 0.500 H2 #13 0.000 H3 #14 0.450 H4 #15 0.450 H5 #16 0.450 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 + # fchar C1 #1 0.000 O1 #2 0.000 O2 #3 0.000 C2 #4 0.000 N1 #5 1.000 C3 #6 0.000 C4 #7 0.000 F1 #8 0.000 C5 #9 0.000 O3 #10 -0.500 O4 #11 -0.500 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 +model KIRCAP RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 11 PI PAIR ON SP2-N 17 PI PAIR ON O OR S 12 SUBRING 1 has 6 PI electrons SUBRING 3 has 6 PI electrons SUBRING 3 IS AROMATIC + # ty O1 #1 32 O2 #2 32 O3 #3 32 O4 #4 32 O5 #5 32 O6 #6 32 O7 #7 32 O8 #8 32 O9 #9 7 O10 #10 6 O11 #11 6 O12 #12 6 N1 #13 45 N2 #14 45 N3 #15 45 N4 #16 45 N5 #17 8 C1 #18 1 C2 #19 37 C3 #20 37 C4 #21 37 C5 #22 37 C6 #23 37 C7 #24 37 C8 #25 1 C9 #26 1 C10 #27 3 C11 #28 1 H1 #29 5 H2 #30 5 H3 #31 5 H4 #32 5 H5 #33 5 H6 #34 5 H7 #35 5 + # symb O1 #1 O2N O2 #2 O2N O3 #3 O2N O4 #4 O2N O5 #5 O2N O6 #6 O2N O7 #7 O2N O8 #8 O2N O9 #9 O=CO O10 #10 OC=O O11 #11 OR O12 #12 OR N1 #13 NO2 N2 #14 NO2 N3 #15 NO2 N4 #16 NO2 N5 #17 NR C1 #18 CR C2 #19 CB C3 #20 CB C4 #21 CB C5 #22 CB C6 #23 CB C7 #24 CB C8 #25 CR C9 #26 CR C10 #27 COO C11 #28 CR H1 #29 HC H2 #30 HC H3 #31 HC H4 #32 HC H5 #33 HC H6 #34 HC H7 #35 HC + # char O1 #1 -0.520 O2 #2 -0.520 O3 #3 -0.520 O4 #4 -0.520 O5 #5 -0.520 O6 #6 -0.520 O7 #7 -0.520 O8 #8 -0.520 O9 #9 -0.570 O10 #10 -0.430 O11 #11 -0.180 O12 #12 -0.180 N1 #13 0.907 N2 #14 0.907 N3 #15 0.800 N4 #16 0.800 N5 #17 -0.470 C1 #18 0.894 C2 #19 -0.143 C3 #20 0.133 C4 #21 -0.150 C5 #22 0.133 C6 #23 -0.150 C7 #24 -0.143 C8 #25 0.423 C9 #26 0.341 C10 #27 0.659 C11 #28 0.280 H1 #29 0.150 H2 #30 0.150 H3 #31 0.000 H4 #32 0.000 H5 #33 0.000 H6 #34 0.000 H7 #35 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 O6 #6 0.000 O7 #7 0.000 O8 #8 0.000 O9 #9 0.000 O10 #10 0.000 O11 #11 0.000 O12 #12 0.000 N1 #13 0.000 N2 #14 0.000 N3 #15 0.000 N4 #16 0.000 N5 #17 0.000 C1 #18 0.000 C2 #19 0.000 C3 #20 0.000 C4 #21 0.000 C5 #22 0.000 C6 #23 0.000 C7 #24 0.000 C8 #25 0.000 C9 #26 0.000 C10 #27 0.000 C11 #28 0.000 H1 #29 0.000 H2 #30 0.000 H3 #31 0.000 H4 #32 0.000 H5 #33 0.000 H6 #34 0.000 H7 #35 0.000 +model KIRCOD RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty CL1 #1 12 N1 #2 8 C1 #3 22 C2 #4 22 C3 #5 3 O1 #6 7 O2 #7 6 C4 #8 1 C5 #9 3 O3 #10 7 N2 #11 10 C6 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 28 H7 #19 5 H8 #20 5 H9 #21 5 + # symb CL1 #1 CL N1 #2 NR C1 #3 CR3R C2 #4 CR3R C3 #5 COO O1 #6 O=CO O2 #7 OC=O C4 #8 CR C5 #9 C=ON O3 #10 O=CN N2 #11 NC=O C6 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HNCO H7 #19 HC H8 #20 HC H9 #21 HC + # char CL1 #1 -0.051 N1 #2 -0.265 C1 #3 -0.042 C2 #4 0.158 C3 #5 0.720 O1 #6 -0.570 O2 #7 -0.430 C4 #8 0.280 C5 #9 0.630 O3 #10 -0.570 N2 #11 -0.730 C6 #12 0.300 H1 #13 0.100 H2 #14 0.100 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.370 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 + # fchar CL1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 O1 #6 0.000 O2 #7 0.000 C4 #8 0.000 C5 #9 0.000 O3 #10 0.000 N2 #11 0.000 C6 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 +model KITREK RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 10 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 10 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 58 C1 #2 37 N2 #3 38 C2 #4 63 C3 #5 64 C4 #6 37 N3 #7 40 N4 #8 66 C5 #9 63 N5 #10 39 C6 #11 1 C7 #12 1 O1 #13 6 C8 #14 1 P1 #15 25 O2 #16 32 O3 #17 32 O4 #18 6 H1 #19 36 H2 #20 5 H3 #21 28 H4 #22 28 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 24 + # symb N1 #1 NPD+ C1 #2 CB N2 #3 NPYD C2 #4 C5A C3 #5 C5B C4 #6 CB N3 #7 NC=N N4 #8 N5B C5 #9 C5A N5 #10 NPYL C6 #11 CR C7 #12 CR O1 #13 OR C8 #14 CR P1 #15 PO3 O2 #16 O2P O3 #17 O2P O4 #18 OPO2 H1 #19 HPD+ H2 #20 HC H3 #21 HNCN H4 #22 HNCN H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HOP + # char N1 #1 -0.179 C1 #2 0.521 N2 #3 -0.567 C2 #4 0.105 C3 #5 0.227 C4 #6 0.461 N3 #7 -0.900 N4 #8 -0.565 C5 #9 0.037 N5 #10 0.048 C6 #11 0.256 C7 #12 0.280 O1 #13 -0.560 C8 #14 0.280 P1 #15 1.171 O2 #16 -0.950 O3 #17 -0.950 O4 #18 -0.771 H1 #19 0.457 H2 #20 0.150 H3 #21 0.400 H4 #22 0.400 H5 #23 0.150 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.500 + # fchar N1 #1 1.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 N4 #8 0.000 C5 #9 0.000 N5 #10 0.000 C6 #11 0.000 C7 #12 0.000 O1 #13 0.000 C8 #14 0.000 P1 #15 0.000 O2 #16 -0.500 O3 #17 -0.500 O4 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 +model KIYGAA + # ty C1 #1 1 C2 #2 1 F1 #3 11 F2 #4 11 F3 #5 11 C3 #6 1 F4 #7 11 F5 #8 11 F6 #9 11 S1 #10 15 S2 #11 15 C4 #12 3 N1 #13 9 C5 #14 3 N2 #15 10 S3 #16 16 H1 #17 5 H2 #18 27 H3 #19 28 H4 #20 28 + # symb C1 #1 CR C2 #2 CR F1 #3 F F2 #4 F F3 #5 F C3 #6 CR F4 #7 F F5 #8 F F6 #9 F S1 #10 S S2 #11 S C4 #12 C=N N1 #13 N=C C5 #14 C=SN N2 #15 NC=S S3 #16 S=C H1 #17 HC H2 #18 HN=C H3 #19 HNCS H4 #20 HNCS + # char C1 #1 0.230 C2 #2 1.020 F1 #3 -0.340 F2 #4 -0.340 F3 #5 -0.340 C3 #6 1.020 F4 #7 -0.340 F5 #8 -0.340 F6 #9 -0.340 S1 #10 -0.230 S2 #11 -0.141 C4 #12 0.591 N1 #13 -0.850 C5 #14 0.440 N2 #15 -0.800 S3 #16 -0.380 H1 #17 0.000 H2 #18 0.400 H3 #19 0.370 H4 #20 0.370 + # fchar C1 #1 0.000 C2 #2 0.000 F1 #3 0.000 F2 #4 0.000 F3 #5 0.000 C3 #6 0.000 F4 #7 0.000 F5 #8 0.000 F6 #9 0.000 S1 #10 0.000 S2 #11 0.000 C4 #12 0.000 N1 #13 0.000 C5 #14 0.000 N2 #15 0.000 S3 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 +model KOBXOO RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons + # ty O1 #1 7 O2 #2 32 O3 #3 32 N1 #4 10 N2 #5 40 N3 #6 40 N4 #7 45 C1 #8 2 C2 #9 2 C3 #10 3 H1 #11 28 H2 #12 28 H3 #13 28 H4 #14 28 + # symb O1 #1 O=CN O2 #2 O2N O3 #3 O2N N1 #4 NC=O N2 #5 NC=C N3 #6 NC=C N4 #7 NO2 C1 #8 C=C C2 #9 C=C C3 #10 C=ON H1 #11 HNCO H2 #12 HNCC H3 #13 HNCC H4 #14 HNCC + # char O1 #1 -0.570 O2 #2 -0.520 O3 #3 -0.520 N1 #4 -0.410 N2 #5 -0.520 N3 #6 -0.900 N4 #7 0.836 C1 #8 0.200 C2 #9 0.219 C3 #10 0.616 H1 #11 0.370 H2 #12 0.400 H3 #13 0.400 H4 #14 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 +model KOBYOP RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 9 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 65 C1 #3 64 N3 #4 66 C2 #5 63 N4 #6 66 N5 #7 66 C3 #8 63 N6 #9 39 C4 #10 63 H1 #11 23 H2 #12 5 H3 #13 5 H4 #14 5 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B N3 #4 N5B C2 #5 C5A N4 #6 N5B N5 #7 N5B C3 #8 C5A N6 #9 NPYL C4 #10 C5A H1 #11 HPYL H2 #12 HC H3 #13 HC H4 #14 HC + # char N1 #1 0.300 N2 #2 -0.707 C1 #3 0.439 N3 #4 -0.565 C2 #5 0.037 N4 #6 -0.338 N5 #7 -0.338 C3 #8 0.037 N6 #9 0.380 C4 #10 0.037 H1 #11 0.270 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 N3 #4 0.000 C2 #5 0.000 N4 #6 0.000 N5 #7 0.000 C3 #8 0.000 N6 #9 0.000 C4 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 +model KOBZEG RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 14 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 3 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 4 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 CL2 #2 12 C1 #3 2 C2 #4 2 C3 #5 3 O1 #6 7 C4 #7 2 C5 #8 2 C6 #9 3 O2 #10 7 N1 #11 40 C7 #12 4 N2 #13 42 N3 #14 39 N4 #15 66 N5 #16 66 C8 #17 63 C9 #18 37 N6 #19 38 C10 #20 37 C11 #21 37 C12 #22 37 C13 #23 37 C14 #24 63 C15 #25 37 N7 #26 38 C16 #27 37 C17 #28 37 C18 #29 37 C19 #30 37 H1 #31 5 H2 #32 5 H3 #33 5 H4 #34 5 H5 #35 5 H6 #36 5 H7 #37 5 H8 #38 5 H12 #39 28 + # symb CL1 #1 CL CL2 #2 CL C1 #3 C=C C2 #4 C=C C3 #5 C=OR O1 #6 O=CR C4 #7 C=C C5 #8 C=C C6 #9 C=OR O2 #10 O=CR N1 #11 NC=C C7 #12 CSP N2 #13 NSP N3 #14 NPYL N4 #15 N5B N5 #16 N5B C8 #17 C5A C9 #18 CB N6 #19 NPYD C10 #20 CB C11 #21 CB C12 #22 CB C13 #23 CB C14 #24 C5A C15 #25 CB N7 #26 NPYD C16 #27 CB C17 #28 CB C18 #29 CB C19 #30 CB H1 #31 HC H2 #32 HC H3 #33 HC H4 #34 HC H5 #35 HC H6 #36 HC H7 #37 HC H8 #38 HC H12 #39 HNCC + # char CL1 #1 -0.140 CL2 #2 -0.140 C1 #3 0.154 C2 #4 0.154 C3 #5 0.541 O1 #6 -0.570 C4 #7 0.114 C5 #8 0.079 C6 #9 0.541 O2 #10 -0.570 N1 #11 -0.660 C7 #12 0.492 N2 #13 -0.557 N3 #14 0.463 N4 #15 -0.338 N5 #16 -0.338 C8 #17 0.134 C9 #18 0.363 N6 #19 -0.620 C10 #20 0.160 C11 #21 -0.150 C12 #22 -0.150 C13 #23 -0.150 C14 #24 0.134 C15 #25 0.363 N7 #26 -0.620 C16 #27 0.160 C17 #28 -0.150 C18 #29 -0.150 C19 #30 -0.150 H1 #31 0.150 H2 #32 0.150 H3 #33 0.150 H4 #34 0.150 H5 #35 0.150 H6 #36 0.150 H7 #37 0.150 H8 #38 0.150 H12 #39 0.400 + # fchar CL1 #1 0.000 CL2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 O1 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 O2 #10 0.000 N1 #11 0.000 C7 #12 0.000 N2 #13 0.000 N3 #14 0.000 N4 #15 0.000 N5 #16 0.000 C8 #17 0.000 C9 #18 0.000 N6 #19 0.000 C10 #20 0.000 C11 #21 0.000 C12 #22 0.000 C13 #23 0.000 C14 #24 0.000 C15 #25 0.000 N7 #26 0.000 C16 #27 0.000 C17 #28 0.000 C18 #29 0.000 C19 #30 0.000 H1 #31 0.000 H2 #32 0.000 H3 #33 0.000 H4 #34 0.000 H5 #35 0.000 H6 #36 0.000 H7 #37 0.000 H8 #38 0.000 H12 #39 0.000 +model KOCWUU RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C1 #2 63 C2 #3 64 C3 #4 64 C4 #5 63 N1 #6 39 C5 #7 63 C6 #8 64 C7 #9 64 C8 #10 63 C9 #11 4 N2 #12 42 O1 #13 7 C10 #14 3 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 + # symb S1 #1 STHI C1 #2 C5A C2 #3 C5B C3 #4 C5B C4 #5 C5A N1 #6 NPYL C5 #7 C5A C6 #8 C5B C7 #9 C5B C8 #10 C5A C9 #11 CSP N2 #12 NSP O1 #13 O=CR C10 #14 C=OR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC + # char S1 #1 -0.080 C1 #2 -0.036 C2 #3 0.019 C3 #4 -0.150 C4 #5 -0.110 N1 #6 0.379 C5 #7 -0.237 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.302 C9 #11 0.538 N2 #12 -0.557 O1 #13 -0.570 C10 #14 0.595 H1 #15 0.150 H2 #16 0.150 H3 #17 0.060 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 N1 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 N2 #12 0.000 O1 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 +model KODFUE RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 2 PI electrons + # ty N1 #1 10 C1 #2 1 C2 #3 1 C3 #4 1 C4 #5 1 C5 #6 1 C6 #7 1 C7 #8 3 O1 #9 7 C8 #10 1 C9 #11 1 C10 #12 1 I1 #13 14 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 H13 #26 5 H14 #27 5 H15 #28 5 H16 #29 5 H17 #30 5 H18 #31 5 + # symb N1 #1 NC=O C1 #2 CR C2 #3 CR C3 #4 CR C4 #5 CR C5 #6 CR C6 #7 CR C7 #8 C=ON O1 #9 O=CN C8 #10 CR C9 #11 CR C10 #12 CR I1 #13 I H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC H13 #26 HC H14 #27 HC H15 #28 HC H16 #29 HC H17 #30 HC H18 #31 HC + # char N1 #1 -0.660 C1 #2 0.300 C2 #3 0.000 C3 #4 0.000 C4 #5 0.300 C5 #6 0.000 C6 #7 0.000 C7 #8 0.569 O1 #9 -0.570 C8 #10 0.251 C9 #11 0.000 C10 #12 0.000 I1 #13 -0.190 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 H15 #28 0.000 H16 #29 0.000 H17 #30 0.000 H18 #31 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 O1 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 I1 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 H15 #28 0.000 H16 #29 0.000 H17 #30 0.000 H18 #31 0.000 +model KOFKIZ RING 1 HAS 1 SUBRINGS + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 N1 #5 8 N2 #6 8 N3 #7 8 N4 #8 45 O1 #9 32 O2 #10 32 N5 #11 46 O3 #12 7 N6 #13 45 O4 #14 32 O5 #15 32 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR N1 #5 NR N2 #6 NR N3 #7 NR N4 #8 NO2 O1 #9 O2N O2 #10 O2N N5 #11 N=O O3 #12 O=N N6 #13 NO2 O4 #14 O2N O5 #15 O2N H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC + # char C1 #1 0.540 C2 #2 0.540 C3 #3 0.270 C4 #4 0.270 N1 #5 -0.533 N2 #6 -0.364 N3 #7 -0.533 N4 #8 1.033 O1 #9 -0.520 O2 #10 -0.520 N5 #11 -0.014 O3 #12 -0.162 N6 #13 1.033 O4 #14 -0.520 O5 #15 -0.520 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 0.000 N4 #8 0.000 O1 #9 0.000 O2 #10 0.000 N5 #11 0.000 O3 #12 0.000 N6 #13 0.000 O4 #14 0.000 O5 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 +model KOFMEX RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 59 C1 #2 63 N1 #3 66 C2 #4 64 C3 #5 63 N2 #6 10 C4 #7 3 O2 #8 7 O3 #9 6 C5 #10 1 C6 #11 1 C7 #12 37 C8 #13 37 C9 #14 37 C10 #15 37 C11 #16 37 C12 #17 37 H1 #18 5 H2 #19 28 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 + # symb O1 #1 OFUR C1 #2 C5A N1 #3 N5B C2 #4 C5B C3 #5 C5A N2 #6 NC=O C4 #7 C=ON O2 #8 O=CN O3 #9 OC=O C5 #10 CR C6 #11 CR C7 #12 CB C8 #13 CB C9 #14 CB C10 #15 CB C11 #16 CB C12 #17 CB H1 #18 HC H2 #19 HNCO H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC + # char O1 #1 -0.280 C1 #2 0.542 N1 #3 -0.565 C2 #4 0.077 C3 #5 0.087 N2 #6 -0.494 C4 #7 0.780 O2 #8 -0.570 O3 #9 -0.430 C5 #10 0.280 C6 #11 0.000 C7 #12 0.053 C8 #13 -0.150 C9 #14 -0.150 C10 #15 -0.150 C11 #16 -0.150 C12 #17 -0.150 H1 #18 0.150 H2 #19 0.370 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.150 H9 #26 0.150 H10 #27 0.150 H11 #28 0.150 H12 #29 0.150 + # fchar O1 #1 0.000 C1 #2 0.000 N1 #3 0.000 C2 #4 0.000 C3 #5 0.000 N2 #6 0.000 C4 #7 0.000 O2 #8 0.000 O3 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 +model KOFNIC RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 23 SUBRING 1 has 2 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 24 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 C1 #2 1 C2 #3 1 H1 #4 5 C3 #5 20 H2 #6 5 C4 #7 20 H3 #8 5 H4 #9 5 C5 #10 3 C6 #11 3 C7 #12 1 H5 #13 5 H6 #14 5 H7 #15 5 C8 #16 1 H8 #17 5 H9 #18 5 C9 #19 64 H10 #20 5 C10 #21 63 H11 #22 5 N1 #23 10 N2 #24 39 N3 #25 65 N4 #26 66 O1 #27 32 O2 #28 32 O3 #29 7 O4 #30 7 O5 #31 6 H12 #32 24 + # symb S1 #1 SO2 C1 #2 CR C2 #3 CR H1 #4 HC C3 #5 CR4R H2 #6 HC C4 #7 CR4R H3 #8 HC H4 #9 HC C5 #10 C=ON C6 #11 COO C7 #12 CR H5 #13 HC H6 #14 HC H7 #15 HC C8 #16 CR H8 #17 HC H9 #18 HC C9 #19 C5B H10 #20 HC C10 #21 C5A H11 #22 HC N1 #23 NC=O N2 #24 NPYL N3 #25 N5A N4 #26 N5B O1 #27 O2S O2 #28 O2S O3 #29 O=CN O4 #30 O=CO O5 #31 OC=O H12 #32 HOCO + # char S1 #1 1.096 C1 #2 0.105 C2 #3 0.361 H1 #4 0.000 C3 #5 0.324 H2 #6 0.000 C4 #7 0.053 H3 #8 0.000 H4 #9 0.000 C5 #10 0.577 C6 #11 0.659 C7 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 C8 #16 0.256 H8 #17 0.000 H9 #18 0.000 C9 #19 0.077 H10 #20 0.150 C10 #21 -0.302 H11 #22 0.150 N1 #23 -0.585 N2 #24 0.314 N3 #25 -0.418 N4 #26 -0.227 O1 #27 -0.650 O2 #28 -0.650 O3 #29 -0.570 O4 #30 -0.570 O5 #31 -0.650 H12 #32 0.500 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 H1 #4 0.000 C3 #5 0.000 H2 #6 0.000 C4 #7 0.000 H3 #8 0.000 H4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 C8 #16 0.000 H8 #17 0.000 H9 #18 0.000 C9 #19 0.000 H10 #20 0.000 C10 #21 0.000 H11 #22 0.000 N1 #23 0.000 N2 #24 0.000 N3 #25 0.000 N4 #26 0.000 O1 #27 0.000 O2 #28 0.000 O3 #29 0.000 O4 #30 0.000 O5 #31 0.000 H12 #32 0.000 +model KOHVEI RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 6 O2 #3 32 O3 #4 32 C1 #5 1 C2 #6 4 C3 #7 4 C4 #8 1 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 + # symb S1 #1 SO3 O1 #2 OSO2 O2 #3 O2S O3 #4 O2S C1 #5 CR C2 #6 CSP C3 #7 CSP C4 #8 CR C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC + # char S1 #1 1.493 O1 #2 -0.227 O2 #3 -0.650 O3 #4 -0.650 C1 #5 0.200 C2 #6 -0.200 C3 #7 0.043 C4 #8 0.143 C5 #9 -0.009 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.143 C9 #13 -0.150 C10 #14 -0.150 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 +model KOHVIM RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 O2 #2 7 C1 #3 4 C2 #4 4 C3 #5 3 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 + # symb O1 #1 OC=O O2 #2 O=CO C1 #3 CSP C2 #4 CSP C3 #5 COO C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC + # char O1 #1 -0.193 O2 #2 -0.570 C1 #3 -0.177 C2 #4 0.043 C3 #5 0.634 C4 #6 0.086 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.150 C9 #11 -0.150 H1 #12 0.177 H2 #13 0.150 H3 #14 0.150 H4 #15 0.150 H5 #16 0.150 H6 #17 0.150 + # fchar O1 #1 0.000 O2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 +model KOJGOF RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 17 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 16 N1 #2 39 N2 #3 65 C1 #4 3 C2 #5 64 C3 #6 64 C4 #7 63 C5 #8 1 C6 #9 1 H1 #10 5 H2 #11 5 H3 #12 5 H4 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 N1C #17 39 N2C #18 65 C4C #19 63 C2C #20 64 C3C #21 64 C6C #22 1 C5C #23 1 H1C #24 5 H5C #25 5 H6C #26 5 H7C #27 5 H2C #28 5 H3C #29 5 H4C #30 5 + # symb S1 #1 S=C N1 #2 NPYL N2 #3 N5A C1 #4 C=SN C2 #5 C5B C3 #6 C5B C4 #7 C5A C5 #8 CR C6 #9 CR H1 #10 HC H2 #11 HC H3 #12 HC H4 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC N1C #17 NPYL N2C #18 N5A C4C #19 C5A C2C #20 C5B C3C #21 C5B C6C #22 CR C5C #23 CR H1C #24 HC H5C #25 HC H6C #26 HC H7C #27 HC H2C #28 HC H3C #29 HC H4C #30 HC + # char S1 #1 -0.380 N1 #2 0.561 N2 #3 -0.707 C1 #4 0.398 C2 #5 0.108 C3 #6 -0.150 C4 #7 -0.332 C5 #8 0.181 C6 #9 0.180 H1 #10 0.150 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 N1C #17 0.561 N2C #18 -0.707 C4C #19 -0.332 C2C #20 0.108 C3C #21 -0.150 C6C #22 0.180 C5C #23 0.181 H1C #24 0.150 H5C #25 0.000 H6C #26 0.000 H7C #27 0.000 H2C #28 0.000 H3C #29 0.000 H4C #30 0.000 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 N1C #17 0.000 N2C #18 0.000 C4C #19 0.000 C2C #20 0.000 C3C #21 0.000 C6C #22 0.000 C5C #23 0.000 H1C #24 0.000 H5C #25 0.000 H6C #26 0.000 H7C #27 0.000 H2C #28 0.000 H3C #29 0.000 H4C #30 0.000 +model KOJKID RING 1 HAS 1 SUBRINGS + # ty N1 #1 8 C1 #2 1 C2 #3 4 C3 #4 4 C4 #5 1 C5 #6 1 H1 #7 5 H2 #8 5 H3 #9 5 H4 #10 5 H5 #11 5 H6 #12 5 H7 #13 5 C4B #14 1 C3B #15 4 N1B #16 8 H3B #17 5 H4B #18 5 C2B #19 4 C1B #20 1 C5B #21 1 H1B #22 5 H2B #23 5 H5B #24 5 H6B #25 5 H7B #26 5 + # symb N1 #1 NR C1 #2 CR C2 #3 CSP C3 #4 CSP C4 #5 CR C5 #6 CR H1 #7 HC H2 #8 HC H3 #9 HC H4 #10 HC H5 #11 HC H6 #12 HC H7 #13 HC C4B #14 CR C3B #15 CSP N1B #16 NR H3B #17 HC H4B #18 HC C2B #19 CSP C1B #20 CR C5B #21 CR H1B #22 HC H2B #23 HC H5B #24 HC H6B #25 HC H7B #26 HC + # char N1 #1 -0.810 C1 #2 0.470 C2 #3 -0.200 C3 #4 -0.200 C4 #5 0.470 C5 #6 0.270 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 H7 #13 0.000 C4B #14 0.470 C3B #15 -0.200 N1B #16 -0.810 H3B #17 0.000 H4B #18 0.000 C2B #19 -0.200 C1B #20 0.470 C5B #21 0.270 H1B #22 0.000 H2B #23 0.000 H5B #24 0.000 H6B #25 0.000 H7B #26 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 H7 #13 0.000 C4B #14 0.000 C3B #15 0.000 N1B #16 0.000 H3B #17 0.000 H4B #18 0.000 C2B #19 0.000 C1B #20 0.000 C5B #21 0.000 H1B #22 0.000 H2B #23 0.000 H5B #24 0.000 H6B #25 0.000 H7B #26 0.000 +model KOJZOY RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons + # ty N1 #1 10 C1 #2 1 C2 #3 3 O1 #4 7 N2 #5 10 C3 #6 1 C4 #7 3 O2 #8 7 C5 #9 2 N3 #10 46 O3 #11 7 C6 #12 2 N4 #13 40 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 28 H6 #19 28 H2G #20 5 H4G #21 5 + # symb N1 #1 NC=O C1 #2 CR C2 #3 CONN O1 #4 O=CN N2 #5 NC=O C3 #6 CR C4 #7 C=ON O2 #8 O=CN C5 #9 C=C N3 #10 N=O O3 #11 O=N C6 #12 C=C N4 #13 NC=C H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HNCC H6 #19 HNCC H2G #20 HC H4G #21 HC + # char N1 #1 -0.469 C1 #2 0.300 C2 #3 0.690 O1 #4 -0.570 N2 #5 -0.420 C3 #6 0.300 C4 #7 0.616 O2 #8 -0.570 C5 #9 0.308 N3 #10 -0.132 O3 #11 -0.162 C6 #12 0.209 N4 #13 -0.900 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.400 H6 #19 0.400 H2G #20 0.000 H4G #21 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O1 #4 0.000 N2 #5 0.000 C3 #6 0.000 C4 #7 0.000 O2 #8 0.000 C5 #9 0.000 N3 #10 0.000 O3 #11 0.000 C6 #12 0.000 N4 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H2G #20 0.000 H4G #21 0.000 +model KOKMIG RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 7 SUBRING 1 has 4 PI electrons + # ty P1 #1 25 O1 #2 32 O2 #3 6 N1 #4 40 N2 #5 9 N3 #6 42 N4 #7 40 C1 #8 1 C2 #9 1 C3 #10 1 C4 #11 1 C5 #12 3 C6 #13 4 C7 #14 1 C8 #15 1 H1 #16 28 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 H15 #30 5 + # symb P1 #1 PO2 O1 #2 OP O2 #3 OPO N1 #4 NC=N N2 #5 N=C N3 #6 NSP N4 #7 NC=N C1 #8 CR C2 #9 CR C3 #10 CR C4 #11 CR C5 #12 CGD C6 #13 CSP C7 #14 CR C8 #15 CR H1 #16 HNCN H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC H15 #30 HC + # char P1 #1 1.247 O1 #2 -0.700 O2 #3 -0.551 N1 #4 -0.726 N2 #5 -0.556 N3 #6 -0.557 N4 #7 -0.788 C1 #8 0.000 C2 #9 0.000 C3 #10 0.369 C4 #11 0.369 C5 #12 0.550 C6 #13 0.663 C7 #14 0.280 C8 #15 0.000 H1 #16 0.400 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 +model KOLCUJ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 S2 #2 15 S3 #3 15 CL1 #4 12 CL2 #5 12 CL3 #6 12 CL4 #7 12 CL5 #8 12 CL6 #9 12 CL7 #10 12 CL8 #11 12 CL9 #12 12 N1 #13 9 N2 #14 40 C1 #15 3 C2 #16 1 C3 #17 1 C4 #18 1 C5 #19 37 C6 #20 37 C7 #21 37 C8 #22 37 C9 #23 37 C10 #24 37 H1 #25 5 H2 #26 5 H3 #27 5 H4 #28 5 H5 #29 5 + # symb S1 #1 S S2 #2 S S3 #3 S CL1 #4 CL CL2 #5 CL CL3 #6 CL CL4 #7 CL CL5 #8 CL CL6 #9 CL CL7 #10 CL CL8 #11 CL CL9 #12 CL N1 #13 N=C N2 #14 NC=N C1 #15 C=N C2 #16 CR C3 #17 CR C4 #18 CR C5 #19 CB C6 #20 CB C7 #21 CB C8 #22 CB C9 #23 CB C10 #24 CB H1 #25 HC H2 #26 HC H3 #27 HC H4 #28 HC H5 #29 HC + # char S1 #1 -0.160 S2 #2 -0.202 S3 #3 -0.202 CL1 #4 -0.290 CL2 #5 -0.290 CL3 #6 -0.290 CL4 #7 -0.290 CL5 #8 -0.290 CL6 #9 -0.290 CL7 #10 -0.290 CL8 #11 -0.290 CL9 #12 -0.290 N1 #13 -0.520 N2 #14 -0.106 C1 #15 0.414 C2 #16 1.100 C3 #17 1.100 C4 #18 1.100 C5 #19 0.086 C6 #20 -0.150 C7 #21 -0.150 C8 #22 -0.150 C9 #23 -0.150 C10 #24 -0.150 H1 #25 0.150 H2 #26 0.150 H3 #27 0.150 H4 #28 0.150 H5 #29 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 CL1 #4 0.000 CL2 #5 0.000 CL3 #6 0.000 CL4 #7 0.000 CL5 #8 0.000 CL6 #9 0.000 CL7 #10 0.000 CL8 #11 0.000 CL9 #12 0.000 N1 #13 0.000 N2 #14 0.000 C1 #15 0.000 C2 #16 0.000 C3 #17 0.000 C4 #18 0.000 C5 #19 0.000 C6 #20 0.000 C7 #21 0.000 C8 #22 0.000 C9 #23 0.000 C10 #24 0.000 H1 #25 0.000 H2 #26 0.000 H3 #27 0.000 H4 #28 0.000 H5 #29 0.000 +model MAPMIP03 + # ty N6 #1 40 N7 #2 54 C1 #3 2 C2 #4 2 C3 #5 2 C4 #6 2 C5 #7 3 C8 #8 1 C9 #9 1 C10 #10 1 C11 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H81 #17 5 H82 #18 5 H83 #19 5 H91 #20 5 H92 #21 5 H93 #22 5 H101 #23 5 H102 #24 5 H103 #25 5 H111 #26 5 H112 #27 5 H113 #28 5 + # symb N6 #1 NC=C N7 #2 N+=C C1 #3 C=C C2 #4 C=C C3 #5 C=C C4 #6 C=C C5 #7 C=N C8 #8 CR C9 #9 CR C10 #10 CR C11 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H81 #17 HC H82 #18 HC H83 #19 HC H91 #20 HC H92 #21 HC H93 #22 HC H101 #23 HC H102 #24 HC H103 #25 HC H111 #26 HC H112 #27 HC H113 #28 HC + # char N6 #1 -0.838 N7 #2 -0.092 C1 #3 -0.050 C2 #4 -0.150 C3 #5 -0.150 C4 #6 -0.136 C5 #7 0.326 C8 #8 0.369 C9 #9 0.369 C10 #10 0.346 C11 #11 0.346 H1 #12 0.150 H2 #13 0.150 H3 #14 0.150 H4 #15 0.150 H5 #16 0.060 H81 #17 0.000 H82 #18 0.000 H83 #19 0.000 H91 #20 0.000 H92 #21 0.000 H93 #22 0.000 H101 #23 0.000 H102 #24 0.000 H103 #25 0.000 H111 #26 0.000 H112 #27 0.000 H113 #28 0.000 + # fchar N6 #1 0.000 N7 #2 1.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H81 #17 0.000 H82 #18 0.000 H83 #19 0.000 H91 #20 0.000 H92 #21 0.000 H93 #22 0.000 H101 #23 0.000 H102 #24 0.000 H103 #25 0.000 H111 #26 0.000 H112 #27 0.000 H113 #28 0.000 +model MENBZS01 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 O1 #2 32 O2 #3 32 O3 #4 6 N1 #5 45 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 + # symb S1 #1 S O1 #2 O2N O2 #3 O2N O3 #4 -OS N1 #5 NO2 C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC + # char S1 #1 -0.095 O1 #2 -0.520 O2 #3 -0.520 O3 #4 -0.287 N1 #5 0.907 C1 #6 0.102 C2 #7 0.133 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 -0.150 C7 #12 0.280 H1 #13 0.150 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 +model METBZC10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 17 O1 #2 7 O2 #3 7 O3 #4 6 C1 #5 37 C2 #6 37 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 3 C8 #12 1 C9 #13 1 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H81 #18 5 H82 #19 5 H83 #20 5 H91 #21 5 H92 #22 5 H93 #23 5 + # symb S1 #1 S=O O1 #2 O=S O2 #3 O=CO O3 #4 OC=O C1 #5 CB C2 #6 CB C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 COO C8 #12 CR C9 #13 CR H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H81 #18 HC H82 #19 HC H83 #20 HC H91 #21 HC H92 #22 HC H93 #23 HC + # char S1 #1 0.242 O1 #2 -0.500 O2 #3 -0.570 O3 #4 -0.430 C1 #5 0.064 C2 #6 0.086 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 -0.150 C7 #11 0.634 C8 #12 0.280 C9 #13 0.194 H3 #14 0.150 H4 #15 0.150 H5 #16 0.150 H6 #17 0.150 H81 #18 0.000 H82 #19 0.000 H83 #20 0.000 H91 #21 0.000 H92 #22 0.000 H93 #23 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H81 #18 0.000 H82 #19 0.000 H83 #20 0.000 H91 #21 0.000 H92 #22 0.000 H93 #23 0.000 +model NAESCB01 + # ty S1 #1 72 S2 #2 72 C1 #3 41 N1 #4 10 C2 #5 1 C3 #6 1 C4 #7 1 C5 #8 1 H1 #9 5 H2 #10 5 H3 #11 5 H4 #12 5 H5 #13 5 H6 #14 5 H7 #15 5 H8 #16 5 H9 #17 5 H10 #18 5 + # symb S1 #1 S2CM S2 #2 S2CM C1 #3 CS2M N1 #4 NC=S C2 #5 CR C3 #6 CR C4 #7 CR C5 #8 CR H1 #9 HC H2 #10 HC H3 #11 HC H4 #12 HC H5 #13 HC H6 #14 HC H7 #15 HC H8 #16 HC H9 #17 HC H10 #18 HC + # char S1 #1 -0.750 S2 #2 -0.750 C1 #3 0.796 N1 #4 -0.896 C2 #5 0.300 C3 #6 0.300 C4 #7 0.000 C5 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 H8 #16 0.000 H9 #17 0.000 H10 #18 0.000 + # fchar S1 #1 -0.500 S2 #2 -0.500 C1 #3 0.000 N1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 H8 #16 0.000 H9 #17 0.000 H10 #18 0.000 +model NHOXAL06 + # ty C1 #1 3 C2 #2 41 O1 #3 7 O2 #4 6 O3 #5 32 O4 #6 32 H1 #7 24 + # symb C1 #1 COO C2 #2 CO2M O1 #3 O=CO O2 #4 OC=O O3 #5 O2CM O4 #6 O2CM H1 #7 HOCO + # char C1 #1 0.573 C2 #2 0.947 O1 #3 -0.570 O2 #4 -0.650 O3 #5 -0.900 O4 #6 -0.900 H1 #7 0.500 + # fchar C1 #1 0.000 C2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 -0.500 O4 #6 -0.500 H1 #7 0.000 +model PHOSLA10 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON O OR S 16 SUBRING 1 has 6 PI electrons + # ty P1 #1 25 O1 #2 6 O2 #3 32 N1 #4 39 N2 #5 65 N3 #6 66 C1 #7 2 C2 #8 1 C3 #9 64 C4 #10 63 H11 #11 5 H12 #12 5 H13 #13 5 H3 #14 5 H4 #15 5 O1B #16 6 C1B #17 2 C2B #18 1 H11B #19 5 H12B #20 5 H13B #21 5 + # symb P1 #1 PO3 O1 #2 OPO2 O2 #3 OP N1 #4 NPYL N2 #5 N5A N3 #6 N5B C1 #7 C=C C2 #8 CR C3 #9 C5B C4 #10 C5A H11 #11 HC H12 #12 HC H13 #13 HC H3 #14 HC H4 #15 HC O1B #16 OPO2 C1B #17 C=C C2B #18 CR H11B #19 HC H12B #20 HC H13B #21 HC + # char P1 #1 1.358 O1 #2 -0.348 O2 #3 -0.700 N1 #4 0.454 N2 #5 -0.707 N3 #6 -0.565 C1 #7 -0.061 C2 #8 0.138 C3 #9 0.366 C4 #10 0.037 H11 #11 0.000 H12 #12 0.000 H13 #13 0.000 H3 #14 0.150 H4 #15 0.150 O1B #16 -0.348 C1B #17 -0.061 C2B #18 0.138 H11B #19 0.000 H12B #20 0.000 H13B #21 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 H11 #11 0.000 H12 #12 0.000 H13 #13 0.000 H3 #14 0.000 H4 #15 0.000 O1B #16 0.000 C1B #17 0.000 C2B #18 0.000 H11B #19 0.000 H12B #20 0.000 H13B #21 0.000 +model PHOSLB10 RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 2 PI PAIR ON O OR S 3 SUBRING 1 has 6 PI electrons + # ty P1 #1 25 O1 #2 6 O2 #3 6 O3 #4 32 N1 #5 9 N2 #6 40 N3 #7 40 C1 #8 2 C2 #9 2 C3 #10 1 C4 #11 1 C5 #12 3 C6 #13 1 C7 #14 1 C8 #15 1 C9 #16 1 H31 #17 5 H32 #18 5 H33 #19 5 H41 #20 5 H42 #21 5 H43 #22 5 H62 #23 5 H63 #24 5 H71 #25 5 H72 #26 5 H73 #27 5 H81 #28 5 H82 #29 5 H83 #30 5 H91 #31 5 H92 #32 5 H93 #33 5 H2 #34 5 + # symb P1 #1 PO3 O1 #2 OPO2 O2 #3 OPO2 O3 #4 OP N1 #5 N=C N2 #6 NC=N N3 #7 NC=N C1 #8 C=C C2 #9 C=C C3 #10 CR C4 #11 CR C5 #12 CGD C6 #13 CR C7 #14 CR C8 #15 CR C9 #16 CR H31 #17 HC H32 #18 HC H33 #19 HC H41 #20 HC H42 #21 HC H43 #22 HC H62 #23 HC H63 #24 HC H71 #25 HC H72 #26 HC H73 #27 HC H81 #28 HC H82 #29 HC H83 #30 HC H91 #31 HC H92 #32 HC H93 #33 HC H2 #34 HC + # char P1 #1 1.560 O1 #2 -0.348 O2 #3 -0.348 O3 #4 -0.700 N1 #5 -0.768 N2 #6 -0.788 N3 #7 -0.788 C1 #8 -0.061 C2 #9 -0.061 C3 #10 0.138 C4 #11 0.138 C5 #12 0.550 C6 #13 0.369 C7 #14 0.369 C8 #15 0.369 C9 #16 0.369 H31 #17 0.000 H32 #18 0.000 H33 #19 0.000 H41 #20 0.000 H42 #21 0.000 H43 #22 0.000 H62 #23 0.000 H63 #24 0.000 H71 #25 0.000 H72 #26 0.000 H73 #27 0.000 H81 #28 0.000 H82 #29 0.000 H83 #30 0.000 H91 #31 0.000 H92 #32 0.000 H93 #33 0.000 H2 #34 0.000 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 H31 #17 0.000 H32 #18 0.000 H33 #19 0.000 H41 #20 0.000 H42 #21 0.000 H43 #22 0.000 H62 #23 0.000 H63 #24 0.000 H71 #25 0.000 H72 #26 0.000 H73 #27 0.000 H81 #28 0.000 H82 #29 0.000 H83 #30 0.000 H91 #31 0.000 H92 #32 0.000 H93 #33 0.000 H2 #34 0.000 +model PIMTAZ01 RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 2 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 2 SUBRING 2 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 N1 #2 40 N2 #3 9 C1 #4 1 C2 #5 1 C3 #6 1 C4 #7 1 C5 #8 3 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 C10 #13 37 C11 #14 37 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 + # symb S1 #1 S N1 #2 NC=N N2 #3 N=C C1 #4 CR C2 #5 CR C3 #6 CR C4 #7 CR C5 #8 C=N C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB C10 #13 CB C11 #14 CB H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC + # char S1 #1 -0.371 N1 #2 -0.788 N2 #3 -0.696 C1 #4 0.230 C2 #5 0.369 C3 #6 0.369 C4 #7 0.389 C5 #8 0.641 C6 #9 -0.143 C7 #10 -0.150 C8 #11 -0.150 C9 #12 -0.150 C10 #13 -0.150 C11 #14 -0.150 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.150 H9 #23 0.150 H10 #24 0.150 H11 #25 0.150 H12 #26 0.150 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 +model QUICNA01 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C2 #1 37 C3 #2 37 C4 #3 37 C5 #4 37 C6 #5 37 C7 #6 41 C8 #7 41 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 36 N1 #12 58 O1 #13 32 O2 #14 32 O3 #15 32 O4 #16 32 + # symb C2 #1 CB C3 #2 CB C4 #3 CB C5 #4 CB C6 #5 CB C7 #6 CO2M C8 #7 CO2M H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HPD+ N1 #12 NPD+ O1 #13 O2CM O2 #14 O2CM O3 #15 O2CM O4 #16 O2CM + # char C2 #1 0.182 C3 #2 -0.179 C4 #3 -0.150 C5 #4 -0.150 C6 #5 0.211 C7 #6 0.979 C8 #7 0.979 H1 #8 0.150 H2 #9 0.150 H3 #10 0.150 H4 #11 0.457 N1 #12 -0.179 O1 #13 -0.900 O2 #14 -0.900 O3 #15 -0.900 O4 #16 -0.900 + # fchar C2 #1 0.000 C3 #2 0.000 C4 #3 0.000 C5 #4 0.000 C6 #5 0.000 C7 #6 0.000 C8 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 N1 #12 1.000 O1 #13 -0.500 O2 #14 -0.500 O3 #15 -0.500 O4 #16 -0.500 +model SABNOY RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons + # ty N1 #1 10 C1 #2 3 N2 #3 10 C2 #4 3 C3 #5 2 C4 #6 2 N3 #7 40 C5 #8 3 N4 #9 9 C6 #10 3 O1 #11 6 C7 #12 1 O2 #13 7 C8 #14 1 C9 #15 1 O3 #16 7 O4 #17 7 O5 #18 6 H1 #19 28 H2 #20 28 H3 #21 5 H4 #22 28 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 5 + # symb N1 #1 NC=O C1 #2 CONN N2 #3 NC=O C2 #4 C=ON C3 #5 C=C C4 #6 C=C N3 #7 NC=N C5 #8 C=N N4 #9 N=C C6 #10 C=ON O1 #11 OC=O C7 #12 CR O2 #13 O=CN C8 #14 CR C9 #15 CR O3 #16 O=CN O4 #17 O=CN O5 #18 OC=N H1 #19 HNCO H2 #20 HNCO H3 #21 HC H4 #22 HNCN H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HC + # char N1 #1 -0.539 C1 #2 0.690 N2 #3 -0.490 C2 #4 0.616 C3 #5 0.114 C4 #6 -0.041 N3 #7 -0.550 C5 #8 0.650 N4 #9 -0.661 C6 #10 0.931 O1 #11 -0.430 C7 #12 0.280 O2 #13 -0.570 C8 #14 0.280 C9 #15 0.000 O3 #16 -0.570 O4 #17 -0.570 O5 #18 -0.430 H1 #19 0.370 H2 #20 0.370 H3 #21 0.150 H4 #22 0.400 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 C5 #8 0.000 N4 #9 0.000 C6 #10 0.000 O1 #11 0.000 C7 #12 0.000 O2 #13 0.000 C8 #14 0.000 C9 #15 0.000 O3 #16 0.000 O4 #17 0.000 O5 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 +model SACXAV RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 8 9 EXOCYCLIC MULT BOND 7 3 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty S1 #1 15 N1 #2 38 N2 #3 38 N3 #4 66 N4 #5 39 C1 #6 37 C2 #7 63 C3 #8 64 C4 #9 37 C5 #10 63 C6 #11 1 C7 #12 1 C8 #13 1 C9 #14 1 C10 #15 1 C11 #16 1 C12 #17 1 H1 #18 5 H2 #19 5 H3 #20 23 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 H15 #32 5 H16 #33 5 H17 #34 5 H18 #35 5 + # symb S1 #1 S N1 #2 NPYD N2 #3 NPYD N3 #4 N5B N4 #5 NPYL C1 #6 CB C2 #7 C5A C3 #8 C5B C4 #9 CB C5 #10 C5A C6 #11 CR C7 #12 CR C8 #13 CR C9 #14 CR C10 #15 CR C11 #16 CR C12 #17 CR H1 #18 HC H2 #19 HC H3 #20 HPYL H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC H15 #32 HC H16 #33 HC H17 #34 HC H18 #35 HC + # char S1 #1 -0.332 N1 #2 -0.620 N2 #3 -0.567 N3 #4 -0.565 N4 #5 0.033 C1 #6 0.470 C2 #7 0.105 C3 #8 0.227 C4 #9 0.411 C5 #10 0.037 C6 #11 0.230 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.150 H2 #19 0.150 H3 #20 0.270 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 H16 #33 0.000 H17 #34 0.000 H18 #35 0.000 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.000 N3 #4 0.000 N4 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 C11 #16 0.000 C12 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 H16 #33 0.000 H17 #34 0.000 H18 #35 0.000 +model SADXAW RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 7 SUBRING 2 has 6 PI electrons + # ty O1 #1 7 O2 #2 7 O3 #3 7 N1 #4 10 N2 #5 9 N3 #6 10 N4 #7 10 C1 #8 3 C2 #9 2 C3 #10 3 C4 #11 3 C5 #12 1 C6 #13 3 C7 #14 2 C8 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 + # symb O1 #1 O=CN O2 #2 O=CN O3 #3 O=CN N1 #4 NC=O N2 #5 N=C N3 #6 NC=O N4 #7 NC=O C1 #8 CGD C2 #9 C=C C3 #10 CONN C4 #11 C=ON C5 #12 CR C6 #13 CONN C7 #14 C=C C8 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC + # char O1 #1 -0.570 O2 #2 -0.570 O3 #3 -0.570 N1 #4 -0.229 N2 #5 -0.661 N3 #6 -0.420 N4 #7 -0.420 C1 #8 0.570 C2 #9 -0.136 C3 #10 0.690 C4 #11 0.616 C5 #12 0.300 C6 #13 0.841 C7 #14 -0.041 C8 #15 0.300 H1 #16 0.150 H2 #17 0.150 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 +model SAFFOU RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 10 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 N1 #2 66 C1 #3 64 C2 #4 63 C3 #5 63 C1B #6 64 N1B #7 66 C2B #8 63 C3B #9 63 S1B #10 44 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 + # symb S1 #1 STHI N1 #2 N5B C1 #3 C5B C2 #4 C5A C3 #5 C5A C1B #6 C5B N1B #7 N5B C2B #8 C5A C3B #9 C5A S1B #10 STHI H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC + # char S1 #1 -0.080 N1 #2 -0.565 C1 #3 0.227 C2 #4 -0.110 C3 #5 0.228 C1B #6 0.227 N1B #7 -0.565 C2B #8 -0.110 C3B #9 0.228 S1B #10 -0.080 H1 #11 0.150 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 + # fchar S1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C1B #6 0.000 N1B #7 0.000 C2B #8 0.000 C3B #9 0.000 S1B #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 +model SAFFUA RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 S2 #2 44 N1 #3 66 N2 #4 66 C1 #5 63 C2 #6 63 C3 #7 64 C4 #8 63 C5 #9 63 C6 #10 64 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 + # symb S1 #1 STHI S2 #2 STHI N1 #3 N5B N2 #4 N5B C1 #5 C5A C2 #6 C5A C3 #7 C5B C4 #8 C5A C5 #9 C5A C6 #10 C5B H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC + # char S1 #1 -0.080 S2 #2 -0.080 N1 #3 -0.565 N2 #4 -0.565 C1 #5 0.378 C2 #6 -0.110 C3 #7 0.077 C4 #8 0.378 C5 #9 -0.110 C6 #10 0.077 H1 #11 0.150 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 +model SAFKAL + # ty C1 #1 3 C2 #2 3 N1 #3 45 N2 #4 53 N3 #5 47 O1 #6 32 O2 #7 32 O3 #8 7 O4 #9 6 H1 #10 24 + # symb C1 #1 C=N C2 #2 COO N1 #3 NO2 N2 #4 =N= N3 #5 NAZT O1 #6 O2N O2 #7 O2N O3 #8 O=CO O4 #9 OC=O H1 #10 HOCO + # char C1 #1 0.178 C2 #2 0.720 N1 #3 0.875 N2 #4 0.357 N3 #5 -0.370 O1 #6 -0.520 O2 #7 -0.520 O3 #8 -0.570 O4 #9 -0.650 H1 #10 0.500 + # fchar C1 #1 0.000 C2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 O1 #6 0.000 O2 #7 0.000 O3 #8 0.000 O4 #9 0.000 H1 #10 0.000 +model SAHSOJ RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 1 SUBRING 1 has 4 PI electrons + # ty N1 #1 10 C1 #2 2 C2 #3 2 C3 #4 1 C4 #5 20 C5 #6 20 C6 #7 3 C7 #8 1 C8 #9 1 C9 #10 41 C10 #11 1 C11 #12 1 C12 #13 3 O1 #14 7 O2 #15 6 S1 #16 15 O3 #17 32 O4 #18 32 N2 #19 40 N3 #20 9 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 H7 #27 5 H8 #28 5 H9 #29 5 H10 #30 5 H11 #31 5 H12 #32 5 H13 #33 5 H14 #34 21 H15 #35 28 H16 #36 27 + # symb N1 #1 NC=O C1 #2 C=C C2 #3 C=C C3 #4 CR C4 #5 CR4R C5 #6 CR4R C6 #7 C=ON C7 #8 CR C8 #9 CR C9 #10 CO2M C10 #11 CR C11 #12 CR C12 #13 C=N O1 #14 O=CN O2 #15 OR S1 #16 S O3 #17 O2CM O4 #18 O2CM N2 #19 NC=N N3 #20 N=C H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC H7 #27 HC H8 #28 HC H9 #29 HC H10 #30 HC H11 #31 HC H12 #32 HC H13 #33 HC H14 #34 HOR H15 #35 HNCN H16 #36 HN=C + # char N1 #1 -0.394 C1 #2 -0.141 C2 #3 -0.037 C3 #4 0.138 C4 #5 0.225 C5 #6 0.053 C6 #7 0.577 C7 #8 0.280 C8 #9 0.000 C9 #10 1.050 C10 #11 0.230 C11 #12 0.369 C12 #13 0.440 O1 #14 -0.570 O2 #15 -0.680 S1 #16 -0.331 O3 #17 -0.900 O4 #18 -0.900 N2 #19 -0.819 N3 #20 -0.850 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.060 H14 #34 0.400 H15 #35 0.400 H16 #36 0.400 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 C7 #8 0.000 C8 #9 0.000 C9 #10 0.000 C10 #11 0.000 C11 #12 0.000 C12 #13 0.000 O1 #14 0.000 O2 #15 0.000 S1 #16 0.000 O3 #17 -0.500 O4 #18 -0.500 N2 #19 0.000 N3 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H16 #36 0.000 +model SAHSUP RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 41 O1 #8 32 O2 #9 32 S1 #10 15 C8 #11 1 C9 #12 1 C10 #13 57 N1 #14 55 N2 #15 55 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 36 H11 #26 36 H12 #27 36 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 CO2M O1 #8 O2CM O2 #9 O2CM S1 #10 S C8 #11 CR C9 #12 CR C10 #13 CNN+ N1 #14 NCN+ N2 #15 NCN+ H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HNN+ H11 #26 HNN+ H12 #27 HNN+ + # char C1 #1 -0.179 C2 #2 0.102 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.979 O1 #8 -0.900 O2 #9 -0.900 S1 #10 -0.332 C8 #11 0.230 C9 #12 0.489 C10 #13 0.559 N1 #14 -0.794 N2 #15 -0.754 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.150 H10 #25 0.450 H11 #26 0.450 H12 #27 0.450 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 O1 #8 -0.500 O2 #9 -0.500 S1 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 N1 #14 0.500 N2 #15 0.500 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 +model SAKGUG RING 1 HAS 5 SUBRINGS SUBRING 3 IS A 3-MEMBERED RING SUBRING 1 has 6 PI electrons SUBRING 2 has 2 PI electrons SUBRING 4 has 0 PI electrons SUBRING 5 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 5 IS AROMATIC + # ty CL1 #1 12 CL2 #2 12 O1 #3 7 O2 #4 7 N1 #5 42 N2 #6 42 C1 #7 22 C2 #8 37 C3 #9 37 C4 #10 37 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 C9 #15 37 C10 #16 37 C11 #17 37 C12 #18 37 C13 #19 37 C14 #20 22 C15 #21 3 C16 #22 2 C17 #23 2 C18 #24 3 C19 #25 22 C20 #26 4 C21 #27 4 H1 #28 5 H2 #29 5 H3 #30 5 H4 #31 5 H5 #32 5 H6 #33 5 H7 #34 5 H8 #35 5 + # symb CL1 #1 CL CL2 #2 CL O1 #3 O=CR O2 #4 O=CR N1 #5 NSP N2 #6 NSP C1 #7 CR3R C2 #8 CB C3 #9 CB C4 #10 CB C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB C9 #15 CB C10 #16 CB C11 #17 CB C12 #18 CB C13 #19 CB C14 #20 CR3R C15 #21 C=OR C16 #22 C=C C17 #23 C=C C18 #24 C=OR C19 #25 CR3R C20 #26 CSP C21 #27 CSP H1 #28 HC H2 #29 HC H3 #30 HC H4 #31 HC H5 #32 HC H6 #33 HC H7 #34 HC H8 #35 HC + # char CL1 #1 -0.140 CL2 #2 -0.140 O1 #3 -0.570 O2 #4 -0.570 N1 #5 -0.557 N2 #6 -0.557 C1 #7 0.064 C2 #8 -0.032 C3 #9 -0.150 C4 #10 -0.150 C5 #11 -0.150 C6 #12 -0.150 C7 #13 0.000 C8 #14 0.000 C9 #15 -0.150 C10 #16 -0.150 C11 #17 -0.150 C12 #18 -0.150 C13 #19 -0.032 C14 #20 0.105 C15 #21 0.556 C16 #22 0.154 C17 #23 0.154 C18 #24 0.556 C19 #25 0.105 C20 #26 0.452 C21 #27 0.452 H1 #28 0.150 H2 #29 0.150 H3 #30 0.150 H4 #31 0.150 H5 #32 0.150 H6 #33 0.150 H7 #34 0.150 H8 #35 0.150 + # fchar CL1 #1 0.000 CL2 #2 0.000 O1 #3 0.000 O2 #4 0.000 N1 #5 0.000 N2 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 C11 #17 0.000 C12 #18 0.000 C13 #19 0.000 C14 #20 0.000 C15 #21 0.000 C16 #22 0.000 C17 #23 0.000 C18 #24 0.000 C19 #25 0.000 C20 #26 0.000 C21 #27 0.000 H1 #28 0.000 H2 #29 0.000 H3 #30 0.000 H4 #31 0.000 H5 #32 0.000 H6 #33 0.000 H7 #34 0.000 H8 #35 0.000 +model SALVEG RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 2 PI electrons PI PAIR ON SP2-N 6 SUBRING 2 has 2 PI electrons + # ty S1 #1 17 O1 #2 7 O2 #3 7 O3 #4 7 N1 #5 8 N2 #6 10 C1 #7 3 C2 #8 1 C3 #9 1 C4 #10 1 C5 #11 3 C6 #12 1 C7 #13 1 C8 #14 1 C9 #15 1 H1 #16 23 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 + # symb S1 #1 S=O O1 #2 O=S O2 #3 O=CN O3 #4 O=CN N1 #5 NR N2 #6 NC=O C1 #7 C=ON C2 #8 CR C3 #9 CR C4 #10 CR C5 #11 C=ON C6 #12 CR C7 #13 CR C8 #14 CR C9 #15 CR H1 #16 HNR H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC + # char S1 #1 0.369 O1 #2 -0.500 O2 #3 -0.570 O3 #4 -0.570 N1 #5 -0.692 N2 #6 -0.420 C1 #7 0.569 C2 #8 0.061 C3 #9 0.270 C4 #10 0.255 C5 #11 0.569 C6 #12 0.300 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 H1 #16 0.360 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 N2 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 +model SAMFUH RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 72 S2 #2 72 S3 #3 18 C1 #4 41 N1 #5 62 O1 #6 32 O2 #7 32 C2 #8 37 C3 #9 37 C4 #10 37 C5 #11 37 C6 #12 37 C7 #13 37 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 + # symb S1 #1 S2CM S2 #2 S2CM S3 #3 SO2N C1 #4 CS2M N1 #5 NM O1 #6 O2S O2 #7 O2S C2 #8 CB C3 #9 CB C4 #10 CB C5 #11 CB C6 #12 CB C7 #13 CB H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC + # char S1 #1 -0.750 S2 #2 -0.750 S3 #3 0.849 C1 #4 0.427 N1 #5 -0.467 O1 #6 -0.650 O2 #7 -0.650 C2 #8 -0.009 C3 #9 -0.150 C4 #10 -0.150 C5 #11 -0.150 C6 #12 -0.150 C7 #13 -0.150 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.150 + # fchar S1 #1 -0.500 S2 #2 -0.500 S3 #3 0.000 C1 #4 0.000 N1 #5 -1.000 O1 #6 0.000 O2 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 +model SAMXUZ RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons + # ty P1 #1 25 S1 #2 72 S2 #3 16 N1 #4 10 N2 #5 10 N3 #6 8 C1 #7 3 C2 #8 2 C3 #9 1 C4 #10 1 C5 #11 2 C6 #12 1 C7 #13 1 C8 #14 1 C9 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 H15 #30 5 H16 #31 5 H17 #32 5 H18 #33 5 + # symb P1 #1 PTET S1 #2 S-P S2 #3 S=C N1 #4 NC=S N2 #5 NC=S N3 #6 NR C1 #7 C=SN C2 #8 C=C C3 #9 CR C4 #10 CR C5 #11 C=C C6 #12 CR C7 #13 CR C8 #14 CR C9 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC H15 #30 HC H16 #31 HC H17 #32 HC H18 #33 HC + # char P1 #1 1.348 S1 #2 -0.677 S2 #3 -0.380 N1 #4 -0.616 N2 #5 -0.469 N3 #6 -0.808 C1 #7 0.500 C2 #8 -0.038 C3 #9 0.300 C4 #10 0.300 C5 #11 -0.300 C6 #12 0.270 C7 #13 0.000 C8 #14 0.270 C9 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.150 H8 #23 0.150 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H17 #32 0.000 H18 #33 0.000 + # fchar P1 #1 0.000 S1 #2 0.000 S2 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 H15 #30 0.000 H16 #31 0.000 H17 #32 0.000 H18 #33 0.000 +model SANKEX10 RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 7 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 17 SUBRING 1 has 2 PI electrons + # ty N1 #1 39 N2 #2 65 C1 #3 64 C2 #4 3 C3 #5 2 C4 #6 2 N3 #7 40 C5 #8 63 C6 #9 64 O1 #10 7 C7 #11 1 C8 #12 1 C9 #13 1 C10 #14 1 C11 #15 1 O2 #16 6 O3 #17 6 O4 #18 6 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 28 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 21 H13 #31 21 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B C2 #4 C=OR C3 #5 C=C C4 #6 C=C N3 #7 NC=C C5 #8 C5A C6 #9 C5B O1 #10 O=CR C7 #11 CR C8 #12 CR C9 #13 CR C10 #14 CR C11 #15 CR O2 #16 OR O3 #17 OR O4 #18 OR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HNCC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HOR H13 #31 HOR + # char N1 #1 0.314 N2 #2 -0.707 C1 #3 0.139 C2 #4 0.642 C3 #5 -0.136 C4 #6 -0.050 N3 #7 -0.584 C5 #8 -0.068 C6 #9 -0.086 O1 #10 -0.570 C7 #11 0.536 C8 #12 0.000 C9 #13 0.280 C10 #14 0.280 C11 #15 0.280 O2 #16 -0.680 O3 #17 -0.560 O4 #18 -0.680 H1 #19 0.150 H2 #20 0.150 H3 #21 0.150 H4 #22 0.400 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.400 H13 #31 0.400 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 C5 #8 0.000 C6 #9 0.000 O1 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 O2 #16 0.000 O3 #17 0.000 O4 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 +model SAVDOI RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 4 PI PAIR ON O OR S 24 SUBRING 1 has 4 PI electrons + # ty S1 #1 17 O1 #2 7 C1 #3 1 O2 #4 6 C2 #5 1 C3 #6 1 C4 #7 1 C5 #8 1 C6 #9 1 C7 #10 1 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 H9 #19 5 H10 #20 5 H11 #21 5 H12 #22 5 H13 #23 5 O2G #24 6 C2G #25 1 H3G #26 5 C3G #27 1 H2G #28 5 C5G #29 1 C6G #30 1 C7G #31 1 H11G #32 5 H12G #33 5 H13G #34 5 H8G #35 5 H9G #36 5 H10G #37 5 H5G #38 5 H6G #39 5 H7G #40 5 + # symb S1 #1 S=O O1 #2 O=S C1 #3 CR O2 #4 OS=O C2 #5 CR C3 #6 CR C4 #7 CR C5 #8 CR C6 #9 CR C7 #10 CR H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC H9 #19 HC H10 #20 HC H11 #21 HC H12 #22 HC H13 #23 HC O2G #24 OS=O C2G #25 CR H3G #26 HC C3G #27 CR H2G #28 HC C5G #29 CR C6G #30 CR C7G #31 CR H11G #32 HC H12G #33 HC H13G #34 HC H8G #35 HC H9G #36 HC H10G #37 HC H5G #38 HC H6G #39 HC H7G #40 HC + # char S1 #1 0.604 O1 #2 -0.500 C1 #3 0.000 O2 #4 -0.332 C2 #5 0.280 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 H9 #19 0.000 H10 #20 0.000 H11 #21 0.000 H12 #22 0.000 H13 #23 0.000 O2G #24 -0.332 C2G #25 0.280 H3G #26 0.000 C3G #27 0.000 H2G #28 0.000 C5G #29 0.000 C6G #30 0.000 C7G #31 0.000 H11G #32 0.000 H12G #33 0.000 H13G #34 0.000 H8G #35 0.000 H9G #36 0.000 H10G #37 0.000 H5G #38 0.000 H6G #39 0.000 H7G #40 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 C1 #3 0.000 O2 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 H9 #19 0.000 H10 #20 0.000 H11 #21 0.000 H12 #22 0.000 H13 #23 0.000 O2G #24 0.000 C2G #25 0.000 H3G #26 0.000 C3G #27 0.000 H2G #28 0.000 C5G #29 0.000 C6G #30 0.000 C7G #31 0.000 H11G #32 0.000 H12G #33 0.000 H13G #34 0.000 H8G #35 0.000 H9G #36 0.000 H10G #37 0.000 H5G #38 0.000 H6G #39 0.000 H7G #40 0.000 +model SAWKEG10 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 65 C1 #3 64 C2 #4 64 C3 #5 63 N3 #6 8 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 H1 #13 5 H2 #14 5 H3 #15 23 H4 #16 23 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B C2 #4 C5B C3 #5 C5A N3 #6 NR C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB H1 #13 HC H2 #14 HC H3 #15 HNR H4 #16 HNR H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC + # char N1 #1 0.719 N2 #2 -0.707 C1 #3 0.235 C2 #4 -0.150 C3 #5 -0.302 N3 #6 -0.869 C4 #7 0.054 C5 #8 -0.150 C6 #9 -0.150 C7 #10 -0.150 C8 #11 -0.150 C9 #12 -0.150 H1 #13 0.150 H2 #14 0.150 H3 #15 0.360 H4 #16 0.360 H5 #17 0.150 H6 #18 0.150 H7 #19 0.150 H8 #20 0.150 H9 #21 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 N3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 +model SEBPEU01 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 55 C1 #2 57 N2 #3 55 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 H1 #13 36 H2 #14 36 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 H12 #24 5 H13 #25 5 + # symb N1 #1 NCN+ C1 #2 CNN+ N2 #3 NCN+ C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB H1 #13 HNN+ H2 #14 HNN+ H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC H12 #24 HC H13 #25 HC + # char N1 #1 -0.794 C1 #2 0.604 N2 #3 -0.794 C2 #4 0.489 C3 #5 0.489 C4 #6 0.248 C5 #7 -0.143 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.150 C9 #11 -0.150 C10 #12 -0.150 H1 #13 0.450 H2 #14 0.450 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.150 H10 #22 0.150 H11 #23 0.150 H12 #24 0.150 H13 #25 0.150 + # fchar N1 #1 0.500 C1 #2 0.000 N2 #3 0.500 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 +model SECDAF RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 43 C1 #5 1 C2 #6 2 C3 #7 2 C4 #8 37 O3 #9 35 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 37 C9 #14 37 C10 #15 3 O4 #16 7 N2 #17 10 C11 #18 37 N3 #19 38 C12 #20 37 C13 #21 37 C14 #22 37 C15 #23 37 H1 #24 5 H2 #25 5 H3 #26 5 H4 #27 5 H5 #28 5 H6 #29 5 H7 #30 5 H8 #31 28 H9 #32 5 H10 #33 5 H11 #34 5 H12 #35 5 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S N1 #4 NSO2 C1 #5 CR C2 #6 C=C C3 #7 C=C C4 #8 CB O3 #9 OM2 C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CB C9 #14 CB C10 #15 C=ON O4 #16 O=CN N2 #17 NC=O C11 #18 CB N3 #19 NPYD C12 #20 CB C13 #21 CB C14 #22 CB C15 #23 CB H1 #24 HC H2 #25 HC H3 #26 HC H4 #27 HC H5 #28 HC H6 #29 HC H7 #30 HC H8 #31 HNCO H9 #32 HC H10 #33 HC H11 #34 HC H12 #35 HC + # char S1 #1 1.447 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.685 C1 #5 0.356 C2 #6 0.205 C3 #7 -0.178 C4 #8 0.028 O3 #9 -0.850 C5 #10 -0.150 C6 #11 -0.150 C7 #12 -0.150 C8 #13 -0.150 C9 #14 -0.009 C10 #15 0.616 O4 #16 -0.570 N2 #17 -0.547 C11 #18 0.427 N3 #19 -0.620 C12 #20 0.160 C13 #21 -0.150 C14 #22 -0.150 C15 #23 -0.150 H1 #24 0.000 H2 #25 0.000 H3 #26 0.000 H4 #27 0.150 H5 #28 0.150 H6 #29 0.150 H7 #30 0.150 H8 #31 0.370 H9 #32 0.150 H10 #33 0.150 H11 #34 0.150 H12 #35 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 O3 #9 -1.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 O4 #16 0.000 N2 #17 0.000 C11 #18 0.000 N3 #19 0.000 C12 #20 0.000 C13 #21 0.000 C14 #22 0.000 C15 #23 0.000 H1 #24 0.000 H2 #25 0.000 H3 #26 0.000 H4 #27 0.000 H5 #28 0.000 H6 #29 0.000 H7 #30 0.000 H8 #31 0.000 H9 #32 0.000 H10 #33 0.000 H11 #34 0.000 H12 #35 0.000 +model SEFRAW RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons SUBRING 3 has 2 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C1 #2 63 N1 #3 9 C2 #4 3 N2 #5 10 C3 #6 3 C4 #7 64 C5 #8 64 C6 #9 1 C7 #10 1 C8 #11 1 C9 #12 1 C10 #13 63 O1 #14 7 H1 #15 5 H2 #16 28 H3 #17 5 H4 #18 5 H9 #19 5 H10 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 + # symb S1 #1 STHI C1 #2 C5A N1 #3 N=C C2 #4 C=N N2 #5 NC=O C3 #6 C=ON C4 #7 C5B C5 #8 C5B C6 #9 CR C7 #10 CR C8 #11 CR C9 #12 CR C10 #13 C5A O1 #14 O=CN H1 #15 HC H2 #16 HNCO H3 #17 HC H4 #18 HC H9 #19 HC H10 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC + # char S1 #1 -0.080 C1 #2 0.166 N1 #3 -0.576 C2 #4 0.450 N2 #5 -0.490 C3 #6 0.716 C4 #7 -0.086 C5 #8 -0.181 C6 #9 0.181 C7 #10 0.000 C8 #11 0.000 C9 #12 0.180 C10 #13 -0.140 O1 #14 -0.570 H1 #15 0.060 H2 #16 0.370 H3 #17 0.000 H4 #18 0.000 H9 #19 0.000 H10 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 0.000 C2 #4 0.000 N2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 O1 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H9 #19 0.000 H10 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 +model SEFYIL + # ty S1 #1 72 S2 #2 16 P1 #3 25 O1 #4 6 O2 #5 6 N1 #6 10 C1 #7 3 C2 #8 1 C3 #9 1 C4 #10 1 C5 #11 1 C6 #12 1 C7 #13 1 C8 #14 1 H1 #15 28 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 5 H15 #29 5 H16 #30 5 H17 #31 5 H18 #32 5 + # symb S1 #1 S-P S2 #2 S=C P1 #3 PO2 O1 #4 OPO O2 #5 OPO N1 #6 NC=S C1 #7 C=SN C2 #8 CR C3 #9 CR C4 #10 CR C5 #11 CR C6 #12 CR C7 #13 CR C8 #14 CR H1 #15 HNCS H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HC H15 #29 HC H16 #30 HC H17 #31 HC H18 #32 HC + # char S1 #1 -0.677 S2 #2 -0.380 P1 #3 1.476 O1 #4 -0.551 O2 #5 -0.551 N1 #6 -0.686 C1 #7 0.379 C2 #8 0.061 C3 #9 0.280 C4 #10 0.000 C5 #11 0.000 C6 #12 0.280 C7 #13 0.000 C8 #14 0.000 H1 #15 0.370 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 H16 #30 0.000 H17 #31 0.000 H18 #32 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 P1 #3 0.000 O1 #4 0.000 O2 #5 0.000 N1 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 H15 #29 0.000 H16 #30 0.000 H17 #31 0.000 H18 #32 0.000 +model SEGFIT RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 16 O1 #2 32 O2 #3 32 N1 #4 9 N2 #5 10 N3 #6 10 C1 #7 3 C2 #8 3 C3 #9 41 C4 #10 37 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 C9 #15 37 H1 #16 28 H2 #17 28 H3 #18 28 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 + # symb S1 #1 S=C O1 #2 O2CM O2 #3 O2CM N1 #4 N=C N2 #5 NC=S N3 #6 NC=S C1 #7 C=SN C2 #8 C=N C3 #9 CO2M C4 #10 CB C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB C9 #15 CB H1 #16 HNCS H2 #17 HNCS H3 #18 HNCS H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC + # char S1 #1 -0.380 O1 #2 -0.900 O2 #3 -0.900 N1 #4 -0.512 N2 #5 -0.368 N3 #6 -0.800 C1 #7 0.500 C2 #8 0.217 C3 #9 0.947 C4 #10 0.086 C5 #11 -0.150 C6 #12 -0.150 C7 #13 -0.150 C8 #14 -0.150 C9 #15 -0.150 H1 #16 0.370 H2 #17 0.370 H3 #18 0.370 H4 #19 0.150 H5 #20 0.150 H6 #21 0.150 H7 #22 0.150 H8 #23 0.150 + # fchar S1 #1 0.000 O1 #2 -0.500 O2 #3 -0.500 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 +model SEGJAP RING 1 HAS 3 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty SI1 #1 19 CL1 #2 12 CL2 #3 12 O1 #4 6 O2 #5 6 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 C6B #16 37 C1B #17 37 C5B #18 37 O2B #19 6 O1B #20 6 C2B #21 37 C4B #22 37 H4B #23 5 SI1B #24 19 C3B #25 37 H1B #26 5 H3B #27 5 CL1B #28 12 CL2B #29 12 H2B #30 5 + # symb SI1 #1 SI CL1 #2 CL CL2 #3 CL O1 #4 OC=C O2 #5 OC=C C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC C6B #16 CB C1B #17 CB C5B #18 CB O2B #19 OC=C O1B #20 OC=C C2B #21 CB C4B #22 CB H4B #23 HC SI1B #24 SI C3B #25 CB H1B #26 HC H3B #27 HC CL1B #28 CL CL2B #29 CL H2B #30 HC + # char SI1 #1 1.335 CL1 #2 -0.370 CL2 #3 -0.370 O1 #4 -0.380 O2 #5 -0.380 C1 #6 0.083 C2 #7 -0.150 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 0.083 H1 #12 0.150 H2 #13 0.150 H3 #14 0.150 H4 #15 0.150 C6B #16 0.083 C1B #17 0.083 C5B #18 -0.150 O2B #19 -0.380 O1B #20 -0.380 C2B #21 -0.150 C4B #22 -0.150 H4B #23 0.150 SI1B #24 1.335 C3B #25 -0.150 H1B #26 0.150 H3B #27 0.150 CL1B #28 -0.370 CL2B #29 -0.370 H2B #30 0.150 + # fchar SI1 #1 0.000 CL1 #2 0.000 CL2 #3 0.000 O1 #4 0.000 O2 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 C6B #16 0.000 C1B #17 0.000 C5B #18 0.000 O2B #19 0.000 O1B #20 0.000 C2B #21 0.000 C4B #22 0.000 H4B #23 0.000 SI1B #24 0.000 C3B #25 0.000 H1B #26 0.000 H3B #27 0.000 CL1B #28 0.000 CL2B #29 0.000 H2B #30 0.000 +model SEGLAR RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 N1 #4 43 N2 #5 8 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 H1 #12 28 H2 #13 23 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 H3 #19 23 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S N1 #4 NSO2 N2 #5 NR C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB H1 #12 HNSO H2 #13 HNR H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC H3 #19 HNR + # char S1 #1 1.447 O1 #2 -0.650 O2 #3 -0.650 N1 #4 -0.631 N2 #5 -0.647 C1 #6 -0.009 C2 #7 -0.150 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 -0.150 H1 #12 0.420 H2 #13 0.360 H4 #14 0.150 H5 #15 0.150 H6 #16 0.150 H7 #17 0.150 H8 #18 0.150 H3 #19 0.360 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 N2 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H2 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 H3 #19 0.000 +model SEGNEX + # ty S1 #1 16 O1 #2 32 O2 #3 32 O3 #4 6 O4 #5 7 N1 #6 10 N2 #7 9 N3 #8 10 C1 #9 3 C2 #10 3 C3 #11 41 C4 #12 3 H1 #13 28 H2 #14 28 H3 #15 28 H4 #16 24 + # symb S1 #1 S=C O1 #2 O2CM O2 #3 O2CM O3 #4 OC=O O4 #5 O=CO N1 #6 NC=S N2 #7 N=C N3 #8 NC=S C1 #9 C=SN C2 #10 C=N C3 #11 CO2M C4 #12 COO H1 #13 HNCS H2 #14 HNCS H3 #15 HNCS H4 #16 HOCO + # char S1 #1 -0.380 O1 #2 -0.900 O2 #3 -0.900 O3 #4 -0.650 O4 #5 -0.570 N1 #6 -0.368 N2 #7 -0.512 N3 #8 -0.800 C1 #9 0.500 C2 #10 0.303 C3 #11 0.947 C4 #12 0.720 H1 #13 0.370 H2 #14 0.370 H3 #15 0.370 H4 #16 0.500 + # fchar S1 #1 0.000 O1 #2 -0.500 O2 #3 -0.500 O3 #4 0.000 O4 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 +model SEGWEG RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING SUBRING 2 IS A 4-MEMBERED RING + # ty I1 #1 14 CL1 #2 12 CL2 #3 12 C1 #4 20 C2 #5 20 C3 #6 20 C4 #7 20 C5 #8 1 H1 #9 5 H2 #10 5 H3 #11 5 C4B #12 20 H1B #13 5 CL2B #14 12 H2B #15 5 H3B #16 5 + # symb I1 #1 I CL1 #2 CL CL2 #3 CL C1 #4 CR4R C2 #5 CR4R C3 #6 CR4R C4 #7 CR4R C5 #8 CR H1 #9 HC H2 #10 HC H3 #11 HC C4B #12 CR4R H1B #13 HC CL2B #14 CL H2B #15 HC H3B #16 HC + # char I1 #1 -0.189 CL1 #2 -0.290 CL2 #3 -0.290 C1 #4 0.000 C2 #5 0.000 C3 #6 0.189 C4 #7 0.000 C5 #8 0.870 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 C4B #12 0.000 H1B #13 0.000 CL2B #14 -0.290 H2B #15 0.000 H3B #16 0.000 + # fchar I1 #1 0.000 CL1 #2 0.000 CL2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 C4B #12 0.000 H1B #13 0.000 CL2B #14 0.000 H2B #15 0.000 H3B #16 0.000 +model SEHBEM RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 O2 #2 32 N1 #3 68 C1 #4 37 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 1 C8 #11 1 C9 #12 1 C10 #13 1 C11 #14 1 H3 #15 29 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 H12 #24 5 H13 #25 5 H14 #26 5 H15 #27 5 H16 #28 5 H17 #29 5 H18 #30 5 H19 #31 5 + # symb O1 #1 OC=C O2 #2 OXN N1 #3 N3OX C1 #4 CB C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CR C8 #11 CR C9 #12 CR C10 #13 CR C11 #14 CR H3 #15 HOCC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC H12 #24 HC H13 #25 HC H14 #26 HC H15 #27 HC H16 #28 HC H17 #29 HC H18 #30 HC H19 #31 HC + # char O1 #1 -0.532 O2 #2 -0.750 N1 #3 -0.018 C1 #4 0.083 C2 #5 -0.143 C3 #6 -0.150 C4 #7 -0.143 C5 #8 -0.150 C6 #9 -0.143 C7 #10 0.399 C8 #11 0.256 C9 #12 0.256 C10 #13 0.143 C11 #14 0.143 H3 #15 0.450 H4 #16 0.150 H5 #17 0.150 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 H14 #26 0.000 H15 #27 0.000 H16 #28 0.000 H17 #29 0.000 H18 #30 0.000 H19 #31 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 H14 #26 0.000 H15 #27 0.000 H16 #28 0.000 H17 #29 0.000 H18 #30 0.000 H19 #31 0.000 +model SEJDAM RING 1 HAS 3 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING SUBRING 2 IS A 3-MEMBERED RING SUBRING 3 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 15 SUBRING 1 has 2 PI electrons + # ty C1 #1 30 C2 #2 22 C3 #3 3 C4 #4 22 C5 #5 22 C6 #6 22 C7 #7 22 C8 #8 22 C9 #9 2 C10 #10 3 C11 #11 1 C12 #12 1 O1 #13 7 O2 #14 7 O3 #15 6 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H9 #27 5 + # symb C1 #1 CE4R C2 #2 CR3R C3 #3 C=OR C4 #4 CR3R C5 #5 CR3R C6 #6 CR3R C7 #7 CR3R C8 #8 CR3R C9 #9 C=C C10 #10 COO C11 #11 CR C12 #12 CR O1 #13 O=CR O2 #14 O=CO O3 #15 OC=O H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H9 #27 HC + # char C1 #1 -0.173 C2 #2 0.071 C3 #3 0.570 C4 #4 0.071 C5 #5 -0.200 C6 #6 -0.200 C7 #7 -0.200 C8 #8 -0.200 C9 #9 -0.093 C10 #10 0.706 C11 #11 0.138 C12 #12 0.280 O1 #13 -0.570 O2 #14 -0.570 O3 #15 -0.430 H1 #16 0.100 H2 #17 0.100 H3 #18 0.100 H4 #19 0.100 H5 #20 0.100 H6 #21 0.100 H7 #22 0.100 H8 #23 0.100 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H9 #27 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 O1 #13 0.000 O2 #14 0.000 O3 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H9 #27 0.000 +model SEKKIC RING 1 HAS 1 SUBRINGS SUBRING 1 has 0 PI electrons + # ty O1 #1 6 N1 #2 9 C1 #3 3 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 1 C6 #8 1 C7 #9 1 C8 #10 2 C9 #11 4 C10 #12 2 C11 #13 1 H1 #14 21 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 H10 #23 5 H11 #24 5 H12 #25 5 H13 #26 5 H14 #27 5 H15 #28 5 H16 #29 5 H17 #30 5 + # symb O1 #1 -O- N1 #2 N=C C1 #3 C=N C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 CR C6 #8 CR C7 #9 CR C8 #10 C=C C9 #11 =C= C10 #12 C=C C11 #13 CR H1 #14 HO H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC H10 #23 HC H11 #24 HC H12 #25 HC H13 #26 HC H14 #27 HC H15 #28 HC H16 #29 HC H17 #30 HC + # char O1 #1 -0.337 N1 #2 -0.513 C1 #3 0.328 C2 #4 0.199 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.061 C7 #9 0.000 C8 #10 -0.223 C9 #11 -0.130 C10 #12 -0.223 C11 #13 0.138 H1 #14 0.400 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.150 H14 #27 0.150 H15 #28 0.000 H16 #29 0.000 H17 #30 0.000 + # fchar O1 #1 0.000 N1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 H10 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 H15 #28 0.000 H16 #29 0.000 H17 #30 0.000 +model SEKPED RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 4 3 EXOCYCLIC MULT BOND 9 1 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty N1 #1 65 N2 #2 39 N3 #3 65 C1 #4 64 C2 #5 37 C3 #6 37 C4 #7 37 C5 #8 37 C6 #9 64 N4 #10 8 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 23 H6 #16 23 + # symb N1 #1 N5A N2 #2 NPYL N3 #3 N5A C1 #4 C5B C2 #5 CB C3 #6 CB C4 #7 CB C5 #8 CB C6 #9 C5B N4 #10 NR H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HNR H6 #16 HNR + # char N1 #1 -0.707 N2 #2 0.985 N3 #3 -0.707 C1 #4 0.289 C2 #5 -0.150 C3 #6 -0.150 C4 #7 -0.150 C5 #8 -0.150 C6 #9 0.289 N4 #10 -0.869 H1 #11 0.150 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 H5 #15 0.360 H6 #16 0.360 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 N4 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 +model SEKPIH RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 4 5 EXOCYCLIC MULT BOND 9 8 SUBRING 1 ALSO RECOGNIZED AS AROMATIC + # ty N1 #1 39 C1 #2 63 N2 #3 66 C2 #4 64 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 63 N3 #10 8 H1 #11 5 H2 #12 5 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 23 H7 #17 23 + # symb N1 #1 NPYL C1 #2 C5A N2 #3 N5B C2 #4 C5B C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 C5A N3 #10 NR H1 #11 HC H2 #12 HC H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HNR H7 #17 HNR + # char N1 #1 0.452 C1 #2 0.037 N2 #3 -0.565 C2 #4 0.227 C3 #5 -0.150 C4 #6 -0.150 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.152 N3 #10 -0.869 H1 #11 0.150 H2 #12 0.150 H3 #13 0.150 H4 #14 0.150 H5 #15 0.150 H6 #16 0.360 H7 #17 0.360 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 N3 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 +model SELFIY RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 3 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty SI1 #1 19 O1 #2 6 C1 #3 37 C2 #4 37 C3 #5 37 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 C11 #13 37 C12 #14 37 C13 #15 37 C14 #16 37 C15 #17 37 C16 #18 37 C17 #19 37 C18 #20 37 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 H7 #27 5 H8 #28 5 H9 #29 5 H10 #30 5 H11 #31 5 H12 #32 5 H13 #33 5 H14 #34 5 H15 #35 5 H23 #36 21 + # symb SI1 #1 SI O1 #2 -O- C1 #3 CB C2 #4 CB C3 #5 CB C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB C11 #13 CB C12 #14 CB C13 #15 CB C14 #16 CB C15 #17 CB C16 #18 CB C17 #19 CB C18 #20 CB H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC H7 #27 HC H8 #28 HC H9 #29 HC H10 #30 HC H11 #31 HC H12 #32 HC H13 #33 HC H14 #34 HC H15 #35 HC H23 #36 HO + # char SI1 #1 0.960 O1 #2 -0.697 C1 #3 -0.221 C2 #4 -0.150 C3 #5 -0.150 C4 #6 -0.150 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.221 C8 #10 -0.150 C9 #11 -0.150 C10 #12 -0.150 C11 #13 -0.150 C12 #14 -0.150 C13 #15 -0.221 C14 #16 -0.150 C15 #17 -0.150 C16 #18 -0.150 C17 #19 -0.150 C18 #20 -0.150 H1 #21 0.150 H2 #22 0.150 H3 #23 0.150 H4 #24 0.150 H5 #25 0.150 H6 #26 0.150 H7 #27 0.150 H8 #28 0.150 H9 #29 0.150 H10 #30 0.150 H11 #31 0.150 H12 #32 0.150 H13 #33 0.150 H14 #34 0.150 H15 #35 0.150 H23 #36 0.400 + # fchar SI1 #1 0.000 O1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 C13 #15 0.000 C14 #16 0.000 C15 #17 0.000 C16 #18 0.000 C17 #19 0.000 C18 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 H11 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H15 #35 0.000 H23 #36 0.000 +model SEMDIX + # ty S1 #1 73 F1 #2 11 O1 #3 32 O2 #4 32 N1 #5 34 C1 #6 1 C2 #7 1 C3 #8 1 C4 #9 1 C5 #10 1 C6 #11 1 C7 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 H12 #24 5 H13 #25 5 H14 #26 5 H15 #27 5 H16 #28 5 + # symb S1 #1 SO2M F1 #2 F O1 #3 O2S O2 #4 O2S N1 #5 NR+ C1 #6 CR C2 #7 CR C3 #8 CR C4 #9 CR C5 #10 CR C6 #11 CR C7 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC H12 #24 HC H13 #25 HC H14 #26 HC H15 #27 HC H16 #28 HC + # char S1 #1 0.112 F1 #2 -0.340 O1 #3 -0.600 O2 #4 -0.600 N1 #5 -1.012 C1 #6 0.931 C2 #7 0.503 C3 #8 0.000 C4 #9 0.503 C5 #10 0.000 C6 #11 0.503 C7 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 H14 #26 0.000 H15 #27 0.000 H16 #28 0.000 + # fchar S1 #1 0.000 F1 #2 0.000 O1 #3 -0.500 O2 #4 -0.500 N1 #5 1.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 H14 #26 0.000 H15 #27 0.000 H16 #28 0.000 +model SEMXOX RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 O2 #2 7 N1 #3 40 N2 #4 9 N3 #5 9 N4 #6 40 N5 #7 42 C1 #8 37 C2 #9 37 C3 #10 37 C4 #11 37 C5 #12 37 C6 #13 37 C7 #14 2 C8 #15 2 C9 #16 3 C10 #17 1 C11 #18 4 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 28 H7 #25 5 H8 #26 5 H9 #27 5 + # symb O1 #1 OC=O O2 #2 O=CO N1 #3 NC=C N2 #4 N=N N3 #5 N=N N4 #6 NC=C N5 #7 NSP C1 #8 CB C2 #9 CB C3 #10 CB C4 #11 CB C5 #12 CB C6 #13 CB C7 #14 C=C C8 #15 C=C C9 #16 COO C10 #17 CR C11 #18 CSP H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HNCC H7 #25 HC H8 #26 HC H9 #27 HC + # char O1 #1 -0.430 O2 #2 -0.570 N1 #3 -0.158 N2 #4 -0.042 N3 #5 -0.042 N4 #6 -0.458 N5 #7 -0.557 C1 #8 -0.150 C2 #9 -0.150 C3 #10 -0.150 C4 #11 -0.150 C5 #12 -0.150 C6 #13 0.100 C7 #14 0.200 C8 #15 0.079 C9 #16 0.706 C10 #17 0.280 C11 #18 0.492 H1 #19 0.150 H2 #20 0.150 H3 #21 0.150 H4 #22 0.150 H5 #23 0.150 H6 #24 0.400 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 N4 #6 0.000 N5 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 C11 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 +model SETHAA RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 S2 #2 18 O1 #3 32 O2 #4 32 O3 #5 32 O4 #6 32 C1 #7 1 C2 #8 1 C3 #9 2 C4 #10 2 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 C9 #15 37 C10 #16 37 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 + # symb S1 #1 SO2 S2 #2 SO2 O1 #3 O2S O2 #4 O2S O3 #5 O2S O4 #6 O2S C1 #7 CR C2 #8 CR C3 #9 C=C C4 #10 C=C C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB C9 #15 CB C10 #16 CB H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC + # char S1 #1 1.212 S2 #2 1.212 O1 #3 -0.650 O2 #4 -0.650 O3 #5 -0.650 O4 #6 -0.650 C1 #7 0.105 C2 #8 0.105 C3 #9 -0.045 C4 #10 -0.167 C5 #11 0.028 C6 #12 -0.150 C7 #13 -0.150 C8 #14 -0.150 C9 #15 -0.150 C10 #16 -0.150 H1 #17 0.150 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.150 H7 #23 0.150 H8 #24 0.150 H9 #25 0.150 H10 #26 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 O4 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model SETLIM RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON O OR S 2 SUBRING 1 has 6 PI electrons + # ty S1 #1 15 S2 #2 15 C1 #3 3 N1 #4 40 N2 #5 9 C2 #6 1 C3 #7 1 F1 #8 11 F2 #9 11 F3 #10 11 C4 #11 1 F4 #12 11 F5 #13 11 F6 #14 11 C5 #15 37 C6 #16 37 C7 #17 37 C8 #18 37 C9 #19 37 C10 #20 37 H1 #21 28 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 + # symb S1 #1 S S2 #2 S C1 #3 C=N N1 #4 NC=N N2 #5 N=C C2 #6 CR C3 #7 CR F1 #8 F F2 #9 F F3 #10 F C4 #11 CR F4 #12 F F5 #13 F F6 #14 F C5 #15 CB C6 #16 CB C7 #17 CB C8 #18 CB C9 #19 CB C10 #20 CB H1 #21 HNCN H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC + # char S1 #1 -0.230 S2 #2 -0.141 C1 #3 0.641 N1 #4 -0.550 N2 #5 -0.696 C2 #6 0.476 C3 #7 1.020 F1 #8 -0.340 F2 #9 -0.340 F3 #10 -0.340 C4 #11 1.020 F4 #12 -0.340 F5 #13 -0.340 F6 #14 -0.340 C5 #15 0.100 C6 #16 -0.150 C7 #17 -0.150 C8 #18 -0.150 C9 #19 -0.150 C10 #20 -0.150 H1 #21 0.400 H2 #22 0.150 H3 #23 0.150 H4 #24 0.150 H5 #25 0.150 H6 #26 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 C1 #3 0.000 N1 #4 0.000 N2 #5 0.000 C2 #6 0.000 C3 #7 0.000 F1 #8 0.000 F2 #9 0.000 F3 #10 0.000 C4 #11 0.000 F4 #12 0.000 F5 #13 0.000 F6 #14 0.000 C5 #15 0.000 C6 #16 0.000 C7 #17 0.000 C8 #18 0.000 C9 #19 0.000 C10 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 +model SEYVUN RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 4 5 EXOCYCLIC MULT BOND 9 8 SUBRING 1 ALSO RECOGNIZED AS AROMATIC + # ty N1 #1 39 N2 #2 65 C1 #3 64 C2 #4 64 C3 #5 37 C4 #6 37 N3 #7 58 C5 #8 37 C6 #9 63 H1 #10 23 H2 #11 5 H3 #12 5 H4 #13 5 H5 #14 36 H6 #15 5 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B C2 #4 C5B C3 #5 CB C4 #6 CB N3 #7 NPD+ C5 #8 CB C6 #9 C5A H1 #10 HPYL H2 #11 HC H3 #12 HC H4 #13 HC H5 #14 HPD+ H6 #15 HC + # char N1 #1 0.300 N2 #2 -0.707 C1 #3 0.139 C2 #4 0.000 C3 #5 -0.150 C4 #6 0.211 N3 #7 -0.179 C5 #8 0.211 C6 #9 -0.152 H1 #10 0.270 H2 #11 0.150 H3 #12 0.150 H4 #13 0.150 H5 #14 0.457 H6 #15 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 1.000 C5 #8 0.000 C6 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 +model SEYWUO RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 4 PI electrons + # ty S1 #1 16 N1 #2 62 N2 #3 55 N3 #4 10 N4 #5 55 O1 #6 7 O2 #7 6 C1 #8 1 C2 #9 3 C3 #10 3 C4 #11 1 C5 #12 57 C6 #13 1 C7 #14 1 C8 #15 1 C9 #16 1 H1 #17 28 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 H14 #30 5 H15 #31 5 H16 #32 5 + # symb S1 #1 S=C N1 #2 NM N2 #3 NCN+ N3 #4 NC=O N4 #5 NCN+ O1 #6 O=CN O2 #7 OC=S C1 #8 CR C2 #9 C=S C3 #10 CONN C4 #11 CR C5 #12 CNN+ C6 #13 CR C7 #14 CR C8 #15 CR C9 #16 CR H1 #17 HNCO H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC H14 #30 HC H15 #31 HC H16 #32 HC + # char S1 #1 -0.380 N1 #2 -0.179 N2 #3 -0.836 N3 #4 -0.730 N4 #5 -0.833 O1 #6 -0.570 O2 #7 -0.430 C1 #8 0.280 C2 #9 0.310 C3 #10 1.011 C4 #11 0.405 C5 #12 0.604 C6 #13 0.000 C7 #14 0.000 C8 #15 0.489 C9 #16 0.489 H1 #17 0.370 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 + # fchar S1 #1 0.000 N1 #2 -1.000 N2 #3 0.500 N3 #4 0.000 N4 #5 0.500 O1 #6 0.000 O2 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 +model SEZMEP RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 0 PI electrons + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 CL4 #4 12 CL5 #5 12 CL6 #6 12 CL7 #7 12 O1 #8 6 O2 #9 6 C1 #10 22 C2 #11 1 C3 #12 1 C4 #13 22 C5 #14 1 C6 #15 2 C7 #16 2 H1 #17 21 H2 #18 5 H3 #19 5 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL CL4 #4 CL CL5 #5 CL CL6 #6 CL CL7 #7 CL O1 #8 OR O2 #9 OR C1 #10 CR3R C2 #11 CR C3 #12 CR C4 #13 CR3R C5 #14 CR C6 #15 C=C C7 #16 C=C H1 #17 HOR H2 #18 HC H3 #19 HC + # char CL1 #1 -0.227 CL2 #2 -0.290 CL3 #3 -0.290 CL4 #4 -0.290 CL5 #5 -0.290 CL6 #6 -0.140 CL7 #7 -0.140 O1 #8 -0.296 O2 #9 -0.680 C1 #10 0.093 C2 #11 0.675 C3 #12 0.280 C4 #13 0.275 C5 #14 0.718 C6 #15 -0.178 C7 #16 0.280 H1 #17 0.400 H2 #18 0.000 H3 #19 0.100 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 CL4 #4 0.000 CL5 #5 0.000 CL6 #6 0.000 CL7 #7 0.000 O1 #8 0.000 O2 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 +model SICNUN RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 N1 #7 40 N2 #8 45 O1 #9 32 O2 #10 32 N3 #11 45 O3 #12 32 O4 #13 32 N4 #14 45 O5 #15 32 O6 #16 32 C7 #17 1 C8 #18 3 O7 #19 6 O8 #20 7 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 24 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB N1 #7 NC=C N2 #8 NO2 O1 #9 O2N O2 #10 O2N N3 #11 NO2 O3 #12 O2N O4 #13 O2N N4 #14 NO2 O5 #15 O2N O6 #16 O2N C7 #17 CR C8 #18 COO O7 #19 OC=O O8 #20 O=CO H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HOCO + # char C1 #1 0.100 C2 #2 0.133 C3 #3 -0.150 C4 #4 0.133 C5 #5 -0.150 C6 #6 -0.150 N1 #7 -0.473 N2 #8 0.907 O1 #9 -0.520 O2 #10 -0.520 N3 #11 0.907 O3 #12 -0.520 O4 #13 -0.520 N4 #14 1.044 O5 #15 -0.520 O6 #16 -0.520 C7 #17 0.430 C8 #18 0.659 O7 #19 -0.650 O8 #20 -0.570 H1 #21 0.150 H2 #22 0.150 H3 #23 0.150 H4 #24 0.000 H5 #25 0.000 H6 #26 0.500 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 0.000 N2 #8 0.000 O1 #9 0.000 O2 #10 0.000 N3 #11 0.000 O3 #12 0.000 O4 #13 0.000 N4 #14 0.000 O5 #15 0.000 O6 #16 0.000 C7 #17 0.000 C8 #18 0.000 O7 #19 0.000 O8 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 +model SICPEZ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 O1 #2 6 N1 #3 9 C1 #4 63 C2 #5 64 C3 #6 64 C4 #7 63 C5 #8 3 C6 #9 1 C7 #10 37 C8 #11 37 C9 #12 37 C10 #13 37 C11 #14 37 C12 #15 37 H1 #16 29 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 + # symb S1 #1 STHI O1 #2 OC=C N1 #3 N=C C1 #4 C5A C2 #5 C5B C3 #6 C5B C4 #7 C5A C5 #8 C=N C6 #9 CR C7 #10 CB C8 #11 CB C9 #12 CB C10 #13 CB C11 #14 CB C12 #15 CB H1 #16 HOCC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC + # char S1 #1 -0.080 O1 #2 -0.532 N1 #3 -0.629 C1 #4 -0.045 C2 #5 -0.150 C3 #6 -0.150 C4 #7 -0.110 C5 #8 0.474 C6 #9 0.061 C7 #10 0.179 C8 #11 -0.150 C9 #12 -0.150 C10 #13 -0.150 C11 #14 -0.150 C12 #15 0.083 H1 #16 0.450 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.150 H9 #24 0.150 H10 #25 0.150 H11 #26 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 +model SICSEC RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC EXOCYCLIC MULT BOND 4 3 EXOCYCLIC MULT BOND 5 1 SUBRING 2 ALSO RECOGNIZED AS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 65 N2 #2 39 N3 #3 65 C1 #4 64 C2 #5 64 N4 #6 38 C3 #7 37 C4 #8 37 N5 #9 38 C5 #10 37 C6 #11 37 C7 #12 37 C8 #13 37 C9 #14 37 C10 #15 37 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 + # symb N1 #1 N5A N2 #2 NPYL N3 #3 N5A C1 #4 C5B C2 #5 C5B N4 #6 NPYD C3 #7 CB C4 #8 CB N5 #9 NPYD C5 #10 CB C6 #11 CB C7 #12 CB C8 #13 CB C9 #14 CB C10 #15 CB H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC + # char N1 #1 -0.707 N2 #2 0.859 N3 #3 -0.707 C1 #4 0.545 C2 #5 0.545 N4 #6 -0.566 C3 #7 0.160 C4 #8 0.160 N5 #9 -0.566 C5 #10 -0.023 C6 #11 -0.150 C7 #12 -0.150 C8 #13 -0.150 C9 #14 -0.150 C10 #15 -0.150 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.150 H6 #21 0.150 H7 #22 0.150 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C1 #4 0.000 C2 #5 0.000 N4 #6 0.000 C3 #7 0.000 C4 #8 0.000 N5 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 +model SIDFIU RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons + # ty I1 #1 14 N1 #2 42 N2 #3 42 C1 #4 2 C2 #5 2 C3 #6 2 C4 #7 2 C5 #8 4 C6 #9 4 H1 #10 5 C3B #11 2 C1B #12 2 C2B #13 2 H1B #14 5 C4B #15 2 I1B #16 14 C5B #17 4 C6B #18 4 N1B #19 42 N2B #20 42 + # symb I1 #1 I N1 #2 NSP N2 #3 NSP C1 #4 C=C C2 #5 C=C C3 #6 C=C C4 #7 C=C C5 #8 CSP C6 #9 CSP H1 #10 HC C3B #11 C=C C1B #12 C=C C2B #13 C=C H1B #14 HC C4B #15 C=C I1B #16 I C5B #17 CSP C6B #18 CSP N1B #19 NSP N2B #20 NSP + # char I1 #1 -0.090 N1 #2 -0.557 N2 #3 -0.557 C1 #4 0.000 C2 #5 0.090 C3 #6 -0.150 C4 #7 0.130 C5 #8 0.492 C6 #9 0.492 H1 #10 0.150 C3B #11 -0.150 C1B #12 0.000 C2B #13 0.090 H1B #14 0.150 C4B #15 0.130 I1B #16 -0.090 C5B #17 0.492 C6B #18 0.492 N1B #19 -0.557 N2B #20 -0.557 + # fchar I1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 H1 #10 0.000 C3B #11 0.000 C1B #12 0.000 C2B #13 0.000 H1B #14 0.000 C4B #15 0.000 I1B #16 0.000 C5B #17 0.000 C6B #18 0.000 N1B #19 0.000 N2B #20 0.000 +model SIDRUS RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 7 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 O1 #2 32 N1 #3 81 O2 #4 32 N2 #5 79 N3 #6 79 N4 #7 81 C1 #8 80 C2 #9 1 C3 #10 1 N5 #11 9 N6 #12 9 N7 #13 62 C4 #14 1 C5 #15 1 C6 #16 1 C7 #17 1 C8 #18 1 C9 #19 1 H1 #20 5 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 H12 #31 5 H13 #32 5 H14 #33 5 H15 #34 5 H16 #35 5 H17 #36 5 H18 #37 5 H19 #38 5 + # symb S1 #1 SO2N O1 #2 O2S N1 #3 NIM+ O2 #4 O2S N2 #5 N5 N3 #6 N5 N4 #7 NIM+ C1 #8 CIM+ C2 #9 CR C3 #10 CR N5 #11 N=N N6 #12 N=N N7 #13 NM C4 #14 CR C5 #15 CR C6 #16 CR C7 #17 CR C8 #18 CR C9 #19 CR H1 #20 HC H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC H12 #31 HC H13 #32 HC H14 #33 HC H15 #34 HC H16 #35 HC H17 #36 HC H18 #37 HC H19 #38 HC + # char S1 #1 0.735 O1 #2 -0.650 N1 #3 -0.457 O2 #4 -0.650 N2 #5 0.043 N3 #6 0.043 N4 #7 -0.457 C1 #8 0.656 C2 #9 0.390 C3 #10 0.000 N5 #11 -0.246 N6 #12 -0.431 N7 #13 -0.109 C4 #14 0.514 C5 #15 0.105 C6 #16 0.514 C7 #17 0.000 C8 #18 0.000 C9 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 H14 #33 0.000 H15 #34 0.000 H16 #35 0.000 H17 #36 0.000 H18 #37 0.000 H19 #38 0.000 + # fchar S1 #1 0.000 O1 #2 0.000 N1 #3 0.500 O2 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.500 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 N5 #11 0.000 N6 #12 0.000 N7 #13 -1.000 C4 #14 0.000 C5 #15 0.000 C6 #16 0.000 C7 #17 0.000 C8 #18 0.000 C9 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 H14 #33 0.000 H15 #34 0.000 H16 #35 0.000 H17 #36 0.000 H18 #37 0.000 H19 #38 0.000 +model SINMIL RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty P1 #1 26 N1 #2 34 N2 #3 34 C1 #4 20 C2 #5 20 C3 #6 1 C4 #7 1 C5 #8 1 C6 #9 1 H1 #10 36 H2 #11 36 H3 #12 5 H4 #13 5 H5 #14 5 H6 #15 5 H7 #16 5 H8 #17 5 H9 #18 5 H10 #19 5 H11 #20 5 H12 #21 5 H13 #22 5 H14 #23 5 H15 #24 5 P1A #25 26 C5A #26 1 C6A #27 1 C3A #28 1 H10A #29 5 H11A #30 5 H12A #31 5 H13A #32 5 H14A #33 5 H15A #34 5 C4A #35 1 H5A #36 5 H6A #37 5 H7A #38 5 H8A #39 5 H9A #40 5 + # symb P1 #1 P N1 #2 NR+ N2 #3 NR+ C1 #4 CR4R C2 #5 CR4R C3 #6 CR C4 #7 CR C5 #8 CR C6 #9 CR H1 #10 HNR+ H2 #11 HNR+ H3 #12 HC H4 #13 HC H5 #14 HC H6 #15 HC H7 #16 HC H8 #17 HC H9 #18 HC H10 #19 HC H11 #20 HC H12 #21 HC H13 #22 HC H14 #23 HC H15 #24 HC P1A #25 P C5A #26 CR C6A #27 CR C3A #28 CR H10A #29 HC H11A #30 HC H12A #31 HC H13A #32 HC H14A #33 HC H15A #34 HC C4A #35 CR H5A #36 HC H6A #37 HC H7A #38 HC H8A #39 HC H9A #40 HC + # char P1 #1 -0.413 N1 #2 -0.928 N2 #3 -0.928 C1 #4 0.718 C2 #5 0.718 C3 #6 0.167 C4 #7 0.000 C5 #8 0.503 C6 #9 0.503 H1 #10 0.450 H2 #11 0.450 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 H9 #18 0.000 H10 #19 0.000 H11 #20 0.000 H12 #21 0.000 H13 #22 0.000 H14 #23 0.000 H15 #24 0.000 P1A #25 -0.413 C5A #26 0.503 C6A #27 0.503 C3A #28 0.167 H10A #29 0.000 H11A #30 0.000 H12A #31 0.000 H13A #32 0.000 H14A #33 0.000 H15A #34 0.000 C4A #35 0.000 H5A #36 0.000 H6A #37 0.000 H7A #38 0.000 H8A #39 0.000 H9A #40 0.000 + # fchar P1 #1 0.000 N1 #2 1.000 N2 #3 1.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 H8 #17 0.000 H9 #18 0.000 H10 #19 0.000 H11 #20 0.000 H12 #21 0.000 H13 #22 0.000 H14 #23 0.000 H15 #24 0.000 P1A #25 0.000 C5A #26 0.000 C6A #27 0.000 C3A #28 0.000 H10A #29 0.000 H11A #30 0.000 H12A #31 0.000 H13A #32 0.000 H14A #33 0.000 H15A #34 0.000 C4A #35 0.000 H5A #36 0.000 H6A #37 0.000 H7A #38 0.000 H8A #39 0.000 H9A #40 0.000 +model SIYLOB RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 6 SUBRING 1 has 4 PI electrons + # ty S1 #1 15 P1 #2 25 O1 #3 32 O2 #4 6 O3 #5 6 N1 #6 8 C1 #7 1 C2 #8 1 C3 #9 1 C4 #10 1 C5 #11 1 C6 #12 1 C7 #13 1 C8 #14 1 C9 #15 1 C10 #16 1 H1 #17 23 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 H14 #30 5 H15 #31 5 H16 #32 5 H17 #33 5 H18 #34 5 H19 #35 5 H20 #36 5 H21 #37 5 H22 #38 5 + # symb S1 #1 S P1 #2 PO3 O1 #3 OP O2 #4 OPO2 O3 #5 OPO2 N1 #6 NR C1 #7 CR C2 #8 CR C3 #9 CR C4 #10 CR C5 #11 CR C6 #12 CR C7 #13 CR C8 #14 CR C9 #15 CR C10 #16 CR H1 #17 HNR H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC H14 #30 HC H15 #31 HC H16 #32 HC H17 #33 HC H18 #34 HC H19 #35 HC H20 #36 HC H21 #37 HC H22 #38 HC + # char S1 #1 -0.460 P1 #2 1.242 O1 #3 -0.700 O2 #4 -0.551 O3 #5 -0.551 N1 #6 -0.900 C1 #7 0.500 C2 #8 0.270 C3 #9 0.230 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.280 C10 #16 0.280 H1 #17 0.360 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H17 #33 0.000 H18 #34 0.000 H19 #35 0.000 H20 #36 0.000 H21 #37 0.000 H22 #38 0.000 + # fchar S1 #1 0.000 P1 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 N1 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H17 #33 0.000 H18 #34 0.000 H19 #35 0.000 H20 #36 0.000 H21 #37 0.000 H22 #38 0.000 +model SIZJIU RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 7 SUBRING 1 has 2 PI electrons RING 2 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 0 PI electrons + # ty O1 #1 6 O2 #2 6 O3 #3 6 O4 #4 6 O5 #5 6 O6 #6 6 O7 #7 6 O8 #8 6 N1 #9 42 C1 #10 1 C2 #11 22 C3 #12 22 C4 #13 1 C5 #14 1 C6 #15 4 C7 #16 1 C8 #17 1 C9 #18 1 C10 #19 1 C11 #20 1 C12 #21 1 H1 #22 21 H2 #23 21 H3 #24 21 H4 #25 21 H5 #26 21 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 5 H10 #31 5 H11 #32 5 H12 #33 5 H13 #34 5 H14 #35 5 H15 #36 5 H16 #37 5 H17 #38 5 + # symb O1 #1 OR O2 #2 OR O3 #3 OR O4 #4 OR O5 #5 OR O6 #6 OR O7 #7 OR O8 #8 OR N1 #9 NSP C1 #10 CR C2 #11 CR3R C3 #12 CR3R C4 #13 CR C5 #14 CR C6 #15 CSP C7 #16 CR C8 #17 CR C9 #18 CR C10 #19 CR C11 #20 CR C12 #21 CR H1 #22 HOR H2 #23 HOR H3 #24 HOR H4 #25 HOR H5 #26 HOR H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HC H10 #31 HC H11 #32 HC H12 #33 HC H13 #34 HC H14 #35 HC H15 #36 HC H16 #37 HC H17 #38 HC + # char O1 #1 -0.296 O2 #2 -0.680 O3 #3 -0.560 O4 #4 -0.680 O5 #5 -0.680 O6 #6 -0.680 O7 #7 -0.560 O8 #8 -0.680 N1 #9 -0.557 C1 #10 0.575 C2 #11 -0.047 C3 #12 -0.047 C4 #13 0.375 C5 #14 0.000 C6 #15 0.357 C7 #16 0.560 C8 #17 0.280 C9 #18 0.280 C10 #19 0.280 C11 #20 0.280 C12 #21 0.280 H1 #22 0.400 H2 #23 0.400 H3 #24 0.400 H4 #25 0.400 H5 #26 0.400 H6 #27 0.100 H7 #28 0.100 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 H15 #36 0.000 H16 #37 0.000 H17 #38 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 O6 #6 0.000 O7 #7 0.000 O8 #8 0.000 N1 #9 0.000 C1 #10 0.000 C2 #11 0.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 C8 #17 0.000 C9 #18 0.000 C10 #19 0.000 C11 #20 0.000 C12 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H11 #32 0.000 H12 #33 0.000 H13 #34 0.000 H14 #35 0.000 H15 #36 0.000 H16 #37 0.000 H17 #38 0.000 +model SIZWUT RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 14 SUBRING 1 has 4 PI electrons + # ty S1 #1 44 C1 #2 63 N1 #3 66 C2 #4 64 C3 #5 63 C4 #6 3 N2 #7 10 O1 #8 7 C5 #9 1 C6 #10 2 C7 #11 2 C8 #12 1 C9 #13 1 O2 #14 6 O3 #15 6 H1 #16 5 H2 #17 28 H3 #18 28 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 21 + # symb S1 #1 STHI C1 #2 C5A N1 #3 N5B C2 #4 C5B C3 #5 C5A C4 #6 C=ON N2 #7 NC=O O1 #8 O=CN C5 #9 CR C6 #10 C=C C7 #11 C=C C8 #12 CR C9 #13 CR O2 #14 OR O3 #15 OR H1 #16 HC H2 #17 HNCO H3 #18 HNCO H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HOR + # char S1 #1 -0.080 C1 #2 0.198 N1 #3 -0.565 C2 #4 0.141 C3 #5 -0.110 C4 #6 0.716 N2 #7 -0.800 O1 #8 -0.570 C5 #9 0.598 C6 #10 -0.288 C7 #11 -0.288 C8 #12 0.418 C9 #13 0.280 O2 #14 -0.560 O3 #15 -0.680 H1 #16 0.150 H2 #17 0.370 H3 #18 0.370 H4 #19 0.000 H5 #20 0.150 H6 #21 0.150 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.400 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N2 #7 0.000 O1 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 O2 #14 0.000 O3 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 +model SLFNMB04 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 15 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 N1 #7 40 S1 #8 18 O1 #9 32 O2 #10 32 N2 #11 43 C7 #12 64 C8 #13 64 C9 #14 63 O3 #15 59 N3 #16 65 C10 #17 1 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 28 H6 #23 28 H7 #24 28 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB N1 #7 NC=C S1 #8 SO2N O1 #9 O2S O2 #10 O2S N2 #11 NSO2 C7 #12 C5B C8 #13 C5B C9 #14 C5A O3 #15 OFUR N3 #16 N5A C10 #17 CR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HNCC H6 #23 HNCC H7 #24 HNSO H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC + # char C1 #1 0.100 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.009 C5 #5 -0.150 C6 #6 -0.150 N1 #7 -0.900 S1 #8 1.447 O1 #9 -0.650 O2 #10 -0.650 N2 #11 -0.703 C7 #12 0.434 C8 #13 -0.150 C9 #14 -0.040 O3 #15 -0.019 N3 #16 -0.410 C10 #17 0.180 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.400 H6 #23 0.400 H7 #24 0.420 H8 #25 0.150 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 0.000 S1 #8 0.000 O1 #9 0.000 O2 #10 0.000 N2 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 O3 #15 0.000 N3 #16 0.000 C10 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 +model SOGVOZ RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 6 PI PAIR ON SP2-N 8 PI PAIR ON SP2-N 7 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 7 O2 #2 32 O3 #3 32 N1 #4 45 N2 #5 66 N3 #6 39 N4 #7 8 N5 #8 10 C1 #9 3 C2 #10 63 C3 #11 64 C4 #12 63 C5 #13 1 C6 #14 1 C7 #15 1 C8 #16 1 H1 #17 23 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 + # symb O1 #1 O=CN O2 #2 O2N O3 #3 O2N N1 #4 NO2 N2 #5 N5B N3 #6 NPYL N4 #7 NR N5 #8 NC=O C1 #9 C=ON C2 #10 C5A C3 #11 C5B C4 #12 C5A C5 #13 CR C6 #14 CR C7 #15 CR C8 #16 CR H1 #17 HNR H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC + # char O1 #1 -0.570 O2 #2 -0.520 O3 #3 -0.520 N1 #4 0.961 N2 #5 -0.565 N3 #6 0.048 N4 #7 -0.639 N5 #8 -0.351 C1 #9 0.715 C2 #10 -0.237 C3 #11 0.306 C4 #12 0.037 C5 #13 0.526 C6 #14 0.000 C7 #15 0.000 C8 #16 0.300 H1 #17 0.360 H2 #18 0.150 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 N5 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 +model SOHXOC RING 1 HAS 1 SUBRINGS SUBRING 1 has 4 PI electrons + # ty C1 #1 57 C2 #2 3 C3 #3 1 C4 #4 2 C5 #5 2 C6 #6 1 C7 #7 3 C8 #8 57 N1 #9 56 N2 #10 56 N3 #11 56 N4 #12 9 N5 #13 9 N6 #14 56 N7 #15 56 N8 #16 56 H1 #17 36 H2 #18 5 H3 #19 36 H4 #20 36 H5 #21 36 H6 #22 36 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 36 H14 #30 36 H15 #31 36 H16 #32 36 + # symb C1 #1 CGD+ C2 #2 C=N C3 #3 CR C4 #4 C=C C5 #5 C=C C6 #6 CR C7 #7 C=N C8 #8 CGD+ N1 #9 NGD+ N2 #10 NGD+ N3 #11 NGD+ N4 #12 N=C N5 #13 N=C N6 #14 NGD+ N7 #15 NGD+ N8 #16 NGD+ H1 #17 HGD+ H2 #18 HC H3 #19 HGD+ H4 #20 HGD+ H5 #21 HGD+ H6 #22 HGD+ H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HGD+ H14 #30 HGD+ H15 #31 HGD+ H16 #32 HGD+ + # char C1 #1 1.200 C2 #2 0.375 C3 #3 0.061 C4 #4 0.029 C5 #5 0.165 C6 #6 0.138 C7 #7 0.376 C8 #8 1.200 N1 #9 -0.967 N2 #10 -0.967 N3 #11 -0.649 N4 #12 -0.318 N5 #13 -0.318 N6 #14 -0.502 N7 #15 -0.967 N8 #16 -0.967 H1 #17 0.450 H2 #18 0.060 H3 #19 0.450 H4 #20 0.450 H5 #21 0.450 H6 #22 0.450 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.450 H14 #30 0.450 H15 #31 0.450 H16 #32 0.450 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 N1 #9 0.333 N2 #10 0.333 N3 #11 0.333 N4 #12 0.000 N5 #13 0.000 N6 #14 0.333 N7 #15 0.333 N8 #16 0.333 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 +model SOJNEK RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons + # ty S1 #1 15 C1 #2 3 N1 #3 9 N2 #4 40 C2 #5 3 S2 #6 18 O1 #7 32 N3 #8 43 O2 #9 32 C3 #10 1 N4 #11 9 C4 #12 3 O3 #13 7 C5 #14 1 H1 #15 28 H2 #16 28 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 + # symb S1 #1 S C1 #2 C=N N1 #3 N=C N2 #4 NC=N C2 #5 C=N S2 #6 SO2N O1 #7 O2S N3 #8 NSO2 O2 #9 O2S C3 #10 CR N4 #11 N=C C4 #12 C=ON O3 #13 O=CN C5 #14 CR H1 #15 HNSO H2 #16 HNSO H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC + # char S1 #1 -0.282 C1 #2 0.614 N1 #3 -0.492 N2 #4 -0.377 C2 #5 0.641 S2 #6 1.415 O1 #7 -0.650 N3 #8 -0.978 O2 #9 -0.650 C3 #10 0.369 N4 #11 -0.661 C4 #12 0.720 O3 #13 -0.570 C5 #14 0.061 H1 #15 0.420 H2 #16 0.420 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 0.000 N2 #4 0.000 C2 #5 0.000 S2 #6 0.000 O1 #7 0.000 N3 #8 0.000 O2 #9 0.000 C3 #10 0.000 N4 #11 0.000 C4 #12 0.000 O3 #13 0.000 C5 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 +model SOMKIO RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING PI PAIR ON SP2-N 4 SUBRING 1 has 2 PI electrons + # ty S1 #1 17 BR1 #2 13 BR2 #3 13 N1 #4 10 N2 #5 42 O1 #6 7 O2 #7 7 C1 #8 1 C2 #9 1 C3 #10 20 C4 #11 20 C5 #12 3 C6 #13 4 C7 #14 1 C8 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 + # symb S1 #1 S=O BR1 #2 BR BR2 #3 BR N1 #4 NC=O N2 #5 NSP O1 #6 O=S O2 #7 O=CN C1 #8 CR C2 #9 CR C3 #10 CR4R C4 #11 CR4R C5 #12 C=ON C6 #13 CSP C7 #14 CR C8 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC + # char S1 #1 0.135 BR1 #2 -0.219 BR2 #3 -0.219 N1 #4 -0.585 N2 #5 -0.557 O1 #6 -0.500 O2 #7 -0.570 C1 #8 0.194 C2 #9 0.500 C3 #10 0.397 C4 #11 0.491 C5 #12 0.577 C6 #13 0.357 C7 #14 0.000 C8 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 + # fchar S1 #1 0.000 BR1 #2 0.000 BR2 #3 0.000 N1 #4 0.000 N2 #5 0.000 O1 #6 0.000 O2 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 +model SONZIE RING 1 HAS 3 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 4 PI electrons SUBRING 3 has 2 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 N1 #2 66 N2 #3 40 N3 #4 8 C1 #5 63 C2 #6 64 C3 #7 63 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 2 C8 #12 2 C9 #13 1 C10 #14 1 C11 #15 1 C12 #16 1 C13 #17 1 H2 #18 5 H3 #19 5 H4 #20 28 H5 #21 28 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 H14 #30 5 H15 #31 5 H16 #32 5 H17 #33 5 H18 #34 5 H19 #35 5 H20 #36 5 + # symb S1 #1 STHI N1 #2 N5B N2 #3 NC=N N3 #4 NR C1 #5 C5A C2 #6 C5B C3 #7 C5A C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 C=C C8 #12 C=C C9 #13 CR C10 #14 CR C11 #15 CR C12 #16 CR C13 #17 CR H2 #18 HC H3 #19 HC H4 #20 HNCN H5 #21 HNCN H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC H14 #30 HC H15 #31 HC H16 #32 HC H17 #33 HC H18 #34 HC H19 #35 HC H20 #36 HC + # char S1 #1 -0.080 N1 #2 -0.565 N2 #3 -0.884 N3 #4 -0.810 C1 #5 0.462 C2 #6 0.181 C3 #7 -0.140 C4 #8 0.180 C5 #9 0.000 C6 #10 0.408 C7 #11 -0.092 C8 #12 -0.288 C9 #13 0.138 C10 #14 0.270 C11 #15 0.270 C12 #16 0.000 C13 #17 0.000 H2 #18 0.000 H3 #19 0.150 H4 #20 0.400 H5 #21 0.400 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H17 #33 0.000 H18 #34 0.000 H19 #35 0.000 H20 #36 0.000 + # fchar S1 #1 0.000 N1 #2 0.000 N2 #3 0.000 N3 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 C12 #16 0.000 C13 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 H14 #30 0.000 H15 #31 0.000 H16 #32 0.000 H17 #33 0.000 H18 #34 0.000 H19 #35 0.000 H20 #36 0.000 +model SOPZEC RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty S1 #1 15 S2 #2 15 O1 #3 7 N1 #4 42 N2 #5 42 C1 #6 30 C2 #7 30 C3 #8 2 C4 #9 4 C5 #10 4 C6 #11 2 C7 #12 3 C8 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 + # symb S1 #1 S S2 #2 S O1 #3 O=CR N1 #4 NSP N2 #5 NSP C1 #6 CE4R C2 #7 CE4R C3 #8 C=C C4 #9 CSP C5 #10 CSP C6 #11 C=C C7 #12 C=OR C8 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC + # char S1 #1 -0.140 S2 #2 -0.140 O1 #3 -0.570 N1 #4 -0.557 N2 #5 -0.557 C1 #6 0.109 C2 #7 0.109 C3 #8 0.161 C4 #9 0.492 C5 #10 0.492 C6 #11 -0.105 C7 #12 0.495 C8 #13 0.061 H1 #14 0.150 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 N1 #4 0.000 N2 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 +model SORBIK RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 6 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 CL2 #2 12 O1 #3 32 O2 #4 32 N1 #5 45 N2 #6 39 N3 #7 65 N4 #8 66 C1 #9 37 C2 #10 37 C3 #11 37 C4 #12 37 C5 #13 37 C6 #14 37 C7 #15 63 C8 #16 64 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 + # symb CL1 #1 CL CL2 #2 CL O1 #3 O2N O2 #4 O2N N1 #5 NO2 N2 #6 NPYL N3 #7 N5A N4 #8 N5B C1 #9 CB C2 #10 CB C3 #11 CB C4 #12 CB C5 #13 CB C6 #14 CB C7 #15 C5A C8 #16 C5B H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC + # char CL1 #1 -0.124 CL2 #2 -0.123 O1 #3 -0.520 O2 #4 -0.520 N1 #5 0.907 N2 #6 0.593 N3 #7 -0.707 N4 #8 -0.565 C1 #9 0.133 C2 #10 -0.150 C3 #11 -0.150 C4 #12 -0.023 C5 #13 -0.150 C6 #14 -0.150 C7 #15 0.310 C8 #16 0.639 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 + # fchar CL1 #1 0.000 CL2 #2 0.000 O1 #3 0.000 O2 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 0.000 N4 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 +model SURDOX02 + # ty S1 #1 18 C1 #2 3 N1 #3 10 O1 #4 32 H1 #5 28 H2 #6 28 O1B #7 32 N1B #8 10 H1B #9 28 H2B #10 28 + # symb S1 #1 =SO2 C1 #2 CSO2 N1 #3 NC=S O1 #4 O2S H1 #5 HNCS H2 #6 HNCS O1B #7 O2S N1B #8 NC=S H1B #9 HNCS H2B #10 HNCS + # char S1 #1 1.277 C1 #2 0.143 N1 #3 -0.800 O1 #4 -0.650 H1 #5 0.370 H2 #6 0.370 O1B #7 -0.650 N1B #8 -0.800 H1B #9 0.370 H2B #10 0.370 + # fchar S1 #1 0.000 C1 #2 0.000 N1 #3 0.000 O1 #4 0.000 H1 #5 0.000 H2 #6 0.000 O1B #7 0.000 N1B #8 0.000 H1B #9 0.000 H2B #10 0.000 +model TACGIN RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 9 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 65 C1 #3 64 C2 #4 64 C3 #5 63 N3 #6 45 O1 #7 32 O2 #8 32 N4 #9 39 N5 #10 65 C4 #11 64 C5 #12 64 C6 #13 63 N6 #14 45 O3 #15 32 O4 #16 32 C7 #17 1 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B C2 #4 C5B C3 #5 C5A N3 #6 NO2 O1 #7 O2N O2 #8 O2N N4 #9 NPYL N5 #10 N5A C4 #11 C5B C5 #12 C5B C6 #13 C5A N6 #14 NO2 O3 #15 O2N O4 #16 O2N C7 #17 CR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC + # char N1 #1 0.314 N2 #2 -0.707 C1 #3 0.139 C2 #4 0.079 C3 #5 -0.302 N3 #6 0.961 O1 #7 -0.520 O2 #8 -0.520 N4 #9 0.314 N5 #10 -0.707 C4 #11 0.139 C5 #12 0.079 C6 #13 -0.302 N6 #14 0.961 O3 #15 -0.520 O4 #16 -0.520 C7 #17 0.511 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.000 H6 #23 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 N3 #6 0.000 O1 #7 0.000 O2 #8 0.000 N4 #9 0.000 N5 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 N6 #14 0.000 O3 #15 0.000 O4 #16 0.000 C7 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 +model TACLEO RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 20 C2 #2 37 C3 #3 20 C4 #4 20 C5 #5 41 C6 #6 1 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 N1 #11 34 N2 #12 38 O1 #13 32 O2 #14 32 O3 #15 6 H1 #16 21 H2 #17 5 H3 #18 36 H4 #19 36 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H11 #24 5 H12 #25 5 H13 #26 5 H14 #27 5 + # symb C1 #1 CR4R C2 #2 CB C3 #3 CR4R C4 #4 CR4R C5 #5 CO2M C6 #6 CR C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB N1 #11 NR+ N2 #12 NPYD O1 #13 O2CM O2 #14 O2CM O3 #15 OR H1 #16 HOR H2 #17 HC H3 #18 HNR+ H4 #19 HNR+ H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H11 #24 HC H12 #25 HC H13 #26 HC H14 #27 HC + # char C1 #1 0.401 C2 #2 -0.150 C3 #3 0.000 C4 #4 0.472 C5 #5 0.871 C6 #6 0.423 C7 #7 -0.143 C8 #8 -0.150 C9 #9 0.160 C10 #10 0.160 N1 #11 -0.844 N2 #12 -0.620 O1 #13 -0.900 O2 #14 -0.900 O3 #15 -0.680 H1 #16 0.400 H2 #17 0.150 H3 #18 0.450 H4 #19 0.450 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H11 #24 0.000 H12 #25 0.150 H13 #26 0.150 H14 #27 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 N1 #11 1.000 N2 #12 0.000 O1 #13 -0.500 O2 #14 -0.500 O3 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H11 #24 0.000 H12 #25 0.000 H13 #26 0.000 H14 #27 0.000 +model TAFKIU RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 6 PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 11 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty C1 #1 64 C2 #2 64 C3 #3 1 C4 #4 1 N1 #5 40 N2 #6 40 N3 #7 65 N4 #8 65 N5 #9 46 N6 #10 46 O1 #11 59 O2 #12 7 O3 #13 7 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 + # symb C1 #1 C5B C2 #2 C5B C3 #3 CR C4 #4 CR N1 #5 NC=N N2 #6 NC=N N3 #7 N5A N4 #8 N5A N5 #9 N=O N6 #10 N=O O1 #11 OFUR O2 #12 O=N O3 #13 O=N H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC + # char C1 #1 0.372 C2 #2 0.372 C3 #3 0.369 C4 #4 0.369 N1 #5 -0.287 N2 #6 -0.287 N3 #7 -0.410 N4 #8 -0.410 N5 #9 -0.003 N6 #10 -0.003 O1 #11 0.242 O2 #12 -0.162 O3 #13 -0.162 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 N1 #5 0.000 N2 #6 0.000 N3 #7 0.000 N4 #8 0.000 N5 #9 0.000 N6 #10 0.000 O1 #11 0.000 O2 #12 0.000 O3 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 +model TAFXIH RING 1 HAS 3 SUBRINGS SUBRING 1 has 0 PI electrons SUBRING 2 has 0 PI electrons SUBRING 3 has 6 PI electrons SUBRING 3 IS AROMATIC + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 1 C6 #6 1 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 37 BR1 #13 13 BR2 #14 13 BR3 #15 13 BR4 #16 13 BR5 #17 13 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 CR C6 #6 CR C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 CB BR1 #13 BR BR2 #14 BR BR3 #15 BR BR4 #16 BR BR5 #17 BR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC + # char C1 #1 0.460 C2 #2 0.143 C3 #3 0.230 C4 #4 0.143 C5 #5 0.230 C6 #6 0.230 C7 #7 -0.143 C8 #8 -0.150 C9 #9 -0.143 C10 #10 -0.150 C11 #11 -0.150 C12 #12 -0.150 BR1 #13 -0.230 BR2 #14 -0.230 BR3 #15 -0.230 BR4 #16 -0.230 BR5 #17 -0.230 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.150 H7 #24 0.150 H8 #25 0.150 H9 #26 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 BR1 #13 0.000 BR2 #14 0.000 BR3 #15 0.000 BR4 #16 0.000 BR5 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 +model TAFZIJ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 S1 #2 15 O1 #3 32 O2 #4 32 N1 #5 45 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 + # symb CL1 #1 CL S1 #2 S O1 #3 O2N O2 #4 O2N N1 #5 NO2 C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC + # char CL1 #1 -0.068 S1 #2 -0.034 O1 #3 -0.520 O2 #4 -0.520 N1 #5 0.907 C1 #6 0.102 C2 #7 0.133 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 -0.150 H1 #12 0.150 H2 #13 0.150 H3 #14 0.150 H4 #15 0.150 + # fchar CL1 #1 0.000 S1 #2 0.000 O1 #3 0.000 O2 #4 0.000 N1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 +model TAGVIG RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons + # ty N1 #1 10 C1 #2 3 N2 #3 10 C2 #4 3 C3 #5 2 C4 #6 2 C5 #7 41 O1 #8 7 O2 #9 7 O3 #10 32 O4 #11 32 H1 #12 28 H2 #13 28 H3 #14 5 + # symb N1 #1 NC=O C1 #2 CONN N2 #3 NC=O C2 #4 C=ON C3 #5 C=C C4 #6 C=C C5 #7 CO2M O1 #8 O=CN O2 #9 O=CN O3 #10 O2CM O4 #11 O2CM H1 #12 HNCO H2 #13 HNCO H3 #14 HC + # char N1 #1 -0.539 C1 #2 0.690 N2 #3 -0.490 C2 #4 0.616 C3 #5 -0.236 C4 #6 -0.041 C5 #7 1.050 O1 #8 -0.570 O2 #9 -0.570 O3 #10 -0.900 O4 #11 -0.900 H1 #12 0.370 H2 #13 0.370 H3 #14 0.150 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 O1 #8 0.000 O2 #9 0.000 O3 #10 -0.500 O4 #11 -0.500 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 +model TAHMOE + # ty C1 #1 3 C2 #2 1 C3 #3 4 C4 #4 1 C5 #5 1 N1 #6 9 N2 #7 9 N3 #8 42 N4 #9 10 O1 #10 7 H1 #11 28 H2 #12 28 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 5 H8 #18 5 + # symb C1 #1 CONN C2 #2 CR C3 #3 CSP C4 #4 CR C5 #5 CR N1 #6 N=N N2 #7 N=N N3 #8 NSP N4 #9 NC=O O1 #10 O=CN H1 #11 HNCO H2 #12 HNCO H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HC H8 #18 HC + # char C1 #1 0.841 C2 #2 0.446 C3 #3 0.357 C4 #4 0.000 C5 #5 0.000 N1 #6 -0.211 N2 #7 -0.246 N3 #8 -0.557 N4 #9 -0.800 O1 #10 -0.570 H1 #11 0.370 H2 #12 0.370 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 N4 #9 0.000 O1 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 +model TAJPUP RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 6 O2 #2 32 O3 #3 32 N1 #4 58 N2 #5 38 N3 #6 40 N4 #7 45 C1 #8 37 C2 #9 37 C3 #10 37 C4 #11 37 C5 #12 37 C6 #13 37 C7 #14 37 C8 #15 37 C9 #16 37 C10 #17 37 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 28 H9 #26 28 + # symb O1 #1 OC=N O2 #2 O2N O3 #3 O2N N1 #4 NPD+ N2 #5 NPYD N3 #6 NC=C N4 #7 NO2 C1 #8 CB C2 #9 CB C3 #10 CB C4 #11 CB C5 #12 CB C6 #13 CB C7 #14 CB C8 #15 CB C9 #16 CB C10 #17 CB H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HNCC H9 #26 HNCC + # char O1 #1 0.162 O2 #2 -0.520 O3 #3 -0.520 N1 #4 0.033 N2 #5 -0.620 N3 #6 -0.900 N4 #7 0.907 C1 #8 0.211 C2 #9 -0.150 C3 #10 0.100 C4 #11 -0.150 C5 #12 0.211 C6 #13 0.393 C7 #14 -0.150 C8 #15 -0.150 C9 #16 0.133 C10 #17 0.160 H1 #18 0.150 H2 #19 0.150 H3 #20 0.150 H4 #21 0.150 H5 #22 0.150 H6 #23 0.150 H7 #24 0.150 H8 #25 0.400 H9 #26 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 O3 #3 0.000 N1 #4 1.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 +model TAJSUS RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 15 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 41 C2 #2 1 C3 #3 78 C4 #4 80 C5 #5 3 C6 #6 1 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 37 C12 #12 37 N1 #13 81 N2 #14 79 N3 #15 81 N4 #16 9 O1 #17 32 O2 #18 32 O3 #19 35 H1 #20 5 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 5 + # symb C1 #1 CO2M C2 #2 CR C3 #3 C5 C4 #4 CIM+ C5 #5 C=N C6 #6 CR C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CB C12 #12 CB N1 #13 NIM+ N2 #14 N5 N3 #15 NIM+ N4 #16 N=C O1 #17 O2CM O2 #18 O2CM O3 #19 OM2 H1 #20 HC H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HC + # char C1 #1 0.906 C2 #2 0.408 C3 #3 0.503 C4 #4 0.650 C5 #5 0.250 C6 #6 0.204 C7 #7 -0.143 C8 #8 -0.150 C9 #9 -0.150 C10 #10 -0.150 C11 #11 -0.150 C12 #12 -0.150 N1 #13 -0.457 N2 #14 -0.260 N3 #15 -0.458 N4 #16 -0.242 O1 #17 -0.900 O2 #18 -0.900 O3 #19 -0.861 H1 #20 0.000 H2 #21 0.000 H3 #22 0.150 H4 #23 0.150 H5 #24 0.000 H6 #25 0.000 H7 #26 0.150 H8 #27 0.150 H9 #28 0.150 H10 #29 0.150 H11 #30 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N1 #13 0.500 N2 #14 0.000 N3 #15 0.500 N4 #16 0.000 O1 #17 -0.500 O2 #18 -0.500 O3 #19 -1.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 +model TAJVUV RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 S2 #2 72 N1 #3 65 N2 #4 66 N3 #5 66 C1 #6 63 + # symb S1 #1 STHI S2 #2 SM N1 #3 N5A N2 #4 N5B N3 #5 N5B C1 #6 C5A + # char S1 #1 0.181 S2 #2 -0.900 N1 #3 -0.221 N2 #4 0.000 N3 #5 -0.338 C1 #6 0.278 + # fchar S1 #1 0.000 S2 #2 -1.000 N1 #3 0.000 N2 #4 0.000 N3 #5 0.000 C1 #6 0.000 +model TAJWAC RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 S2 #2 15 O1 #3 7 N1 #4 65 N2 #5 66 N3 #6 66 C1 #7 63 C2 #8 3 C3 #9 37 C4 #10 37 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 + # symb S1 #1 STHI S2 #2 S O1 #3 O=C N1 #4 N5A N2 #5 N5B N3 #6 N5B C1 #7 C5A C2 #8 C=OS C3 #9 CB C4 #10 CB C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC + # char S1 #1 0.181 S2 #2 -0.197 O1 #3 -0.570 N1 #4 -0.221 N2 #5 0.000 N3 #6 -0.338 C1 #7 0.434 C2 #8 0.625 C3 #9 0.086 C4 #10 -0.150 C5 #11 -0.150 C6 #12 -0.150 C7 #13 -0.150 C8 #14 -0.150 H1 #15 0.150 H2 #16 0.150 H3 #17 0.150 H4 #18 0.150 H5 #19 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 +model TAKHES RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty CL1 #1 12 CL2 #2 12 CL3 #3 12 CL4 #4 12 C1 #5 2 C2 #6 30 C3 #7 20 C2B #8 30 C3B #9 20 C1B #10 2 CL3B #11 12 CL4B #12 12 CL1B #13 12 CL2B #14 12 + # symb CL1 #1 CL CL2 #2 CL CL3 #3 CL CL4 #4 CL C1 #5 C=C C2 #6 CE4R C3 #7 CR4R C2B #8 CE4R C3B #9 CR4R C1B #10 C=C CL3B #11 CL CL4B #12 CL CL1B #13 CL CL2B #14 CL + # char CL1 #1 -0.140 CL2 #2 -0.140 CL3 #3 -0.290 CL4 #4 -0.290 C1 #5 0.311 C2 #6 -0.169 C3 #7 0.718 C2B #8 -0.169 C3B #9 0.718 C1B #10 0.311 CL3B #11 -0.290 CL4B #12 -0.290 CL1B #13 -0.140 CL2B #14 -0.140 + # fchar CL1 #1 0.000 CL2 #2 0.000 CL3 #3 0.000 CL4 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C2B #8 0.000 C3B #9 0.000 C1B #10 0.000 CL3B #11 0.000 CL4B #12 0.000 CL1B #13 0.000 CL2B #14 0.000 +model TAMMAV RING 1 HAS 2 SUBRINGS PI PAIR ON DICOORD N 5 SUBRING 1 has 2 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC EXOCYCLIC MULT BOND 11 10 EXOCYCLIC MULT BOND 6 7 + # ty S1 #1 18 S2 #2 16 O1 #3 32 O2 #4 32 N1 #5 62 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 37 C7 #12 3 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 + # symb S1 #1 SO2N S2 #2 S=C O1 #3 O2S O2 #4 O2S N1 #5 NM C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CB C7 #12 C=S H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC + # char S1 #1 0.849 S2 #2 -0.380 O1 #3 -0.650 O2 #4 -0.650 N1 #5 -0.320 C1 #6 -0.009 C2 #7 -0.150 C3 #8 -0.150 C4 #9 -0.150 C5 #10 -0.150 C6 #11 0.086 C7 #12 0.074 H2 #13 0.150 H3 #14 0.150 H4 #15 0.150 H5 #16 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 O2 #4 0.000 N1 #5 -1.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 C7 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 +model TANHAR RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 22 C2 #2 2 C3 #3 2 C4 #4 4 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 N1 #11 42 N2 #12 45 O1 #13 32 O2 #14 32 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 + # symb C1 #1 CR3R C2 #2 C=C C3 #3 C=C C4 #4 CSP C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB N1 #11 NSP N2 #12 NO2 O1 #13 O2N O2 #14 O2N H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC + # char C1 #1 0.350 C2 #2 -0.068 C3 #3 -0.190 C4 #4 0.452 C5 #5 0.028 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.150 C9 #9 -0.150 C10 #10 -0.150 N1 #11 -0.557 N2 #12 0.875 O1 #13 -0.520 O2 #14 -0.520 H1 #15 0.150 H2 #16 0.150 H3 #17 0.150 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 N1 #11 0.000 N2 #12 0.000 O1 #13 0.000 O2 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 +model TAPJUP RING 1 HAS 3 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 2 has 2 PI electrons PI PAIR ON O OR S 10 SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 1 C7 #7 64 C8 #8 63 O1 #9 35 O2 #10 59 N1 #11 65 N2 #12 81 C9 #13 37 O3 #14 6 C10 #15 1 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 21 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CR C7 #7 C5B C8 #8 C5A O1 #9 OM2 O2 #10 OFUR N1 #11 N5A N2 #12 N5B+ C9 #13 CB O3 #14 OR C10 #15 CR H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HOR + # char C1 #1 -0.150 C2 #2 -0.150 C3 #3 -0.150 C4 #4 -0.150 C5 #5 -0.143 C6 #6 0.605 C7 #7 0.152 C8 #8 -0.084 O1 #9 -0.776 O2 #10 -0.019 N1 #11 -0.082 N2 #12 0.241 C9 #13 0.387 O3 #14 -0.680 C10 #15 0.000 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.400 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 O1 #9 -1.000 O2 #10 0.000 N1 #11 0.000 N2 #12 1.000 C9 #13 0.000 O3 #14 0.000 C10 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 +model TAPSAE RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 42 N2 #2 42 N3 #3 40 C1 #4 4 C2 #5 1 C3 #6 4 C4 #7 37 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 28 H7 #19 28 + # symb N1 #1 NSP N2 #2 NSP N3 #3 NC=C C1 #4 CSP C2 #5 CR C3 #6 CSP C4 #7 CB C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HNCC H7 #19 HNCC + # char N1 #1 -0.557 N2 #2 -0.557 N3 #3 -0.900 C1 #4 0.357 C2 #5 0.543 C3 #6 0.357 C4 #7 -0.143 C5 #8 -0.150 C6 #9 -0.150 C7 #10 0.100 C8 #11 -0.150 C9 #12 -0.150 H1 #13 0.000 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.400 H7 #19 0.400 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 +model TCYMPH02 + # ty P1 #1 26 C1 #2 1 C2 #3 4 N1 #4 42 H1 #5 5 H2 #6 5 C1C #7 1 C1D #8 1 C2C #9 4 H1C #10 5 H2C #11 5 C2D #12 4 H1D #13 5 H2D #14 5 N1C #15 42 N1D #16 42 + # symb P1 #1 P C1 #2 CR C2 #3 CSP N1 #4 NSP H1 #5 HC H2 #6 HC C1C #7 CR C1D #8 CR C2C #9 CSP H1C #10 HC H2C #11 HC C2D #12 CSP H1D #13 HC H2D #14 HC N1C #15 NSP N1D #16 NSP + # char P1 #1 -0.501 C1 #2 0.367 C2 #3 0.357 N1 #4 -0.557 H1 #5 0.000 H2 #6 0.000 C1C #7 0.367 C1D #8 0.367 C2C #9 0.357 H1C #10 0.000 H2C #11 0.000 C2D #12 0.357 H1D #13 0.000 H2D #14 0.000 N1C #15 -0.557 N1D #16 -0.557 + # fchar P1 #1 0.000 C1 #2 0.000 C2 #3 0.000 N1 #4 0.000 H1 #5 0.000 H2 #6 0.000 C1C #7 0.000 C1D #8 0.000 C2C #9 0.000 H1C #10 0.000 H2C #11 0.000 C2D #12 0.000 H1D #13 0.000 H2D #14 0.000 N1C #15 0.000 N1D #16 0.000 +model TMTCHD01 RING 1 HAS 3 SUBRINGS SUBRING 2 IS A 3-MEMBERED RING SUBRING 3 IS A 3-MEMBERED RING SUBRING 1 has 0 PI electrons + # ty O1 #1 7 C1 #2 3 C2 #3 22 C3 #4 22 C4 #5 1 C5 #6 1 H1 #7 5 H2 #8 5 H3 #9 5 H4 #10 5 H5 #11 5 H6 #12 5 C1C #13 3 C3C #14 22 C2C #15 22 O1C #16 7 C5C #17 1 C4C #18 1 H4C #19 5 H5C #20 5 H6C #21 5 H1C #22 5 H2C #23 5 H3C #24 5 + # symb O1 #1 O=CR C1 #2 C=OR C2 #3 CR3R C3 #4 CR3R C4 #5 CR C5 #6 CR H1 #7 HC H2 #8 HC H3 #9 HC H4 #10 HC H5 #11 HC H6 #12 HC C1C #13 C=OR C3C #14 CR3R C2C #15 CR3R O1C #16 O=CR C5C #17 CR C4C #18 CR H4C #19 HC H5C #20 HC H6C #21 HC H1C #22 HC H2C #23 HC H3C #24 HC + # char O1 #1 -0.570 C1 #2 0.570 C2 #3 -0.095 C3 #4 -0.095 C4 #5 0.095 C5 #6 0.095 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 C1C #13 0.570 C3C #14 -0.095 C2C #15 -0.095 O1C #16 -0.570 C5C #17 0.095 C4C #18 0.095 H4C #19 0.000 H5C #20 0.000 H6C #21 0.000 H1C #22 0.000 H2C #23 0.000 H3C #24 0.000 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 H1 #7 0.000 H2 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 C1C #13 0.000 C3C #14 0.000 C2C #15 0.000 O1C #16 0.000 C5C #17 0.000 C4C #18 0.000 H4C #19 0.000 H5C #20 0.000 H6C #21 0.000 H1C #22 0.000 H2C #23 0.000 H3C #24 0.000 +model VABLIT RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty N1 #1 38 C1 #2 37 C2 #3 37 C3 #4 37 C4 #5 37 C5 #6 37 N2 #7 38 C6 #8 37 N3 #9 38 C7 #10 37 N4 #11 40 N5 #12 8 C8 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 28 H6 #19 23 H7 #20 5 H8 #21 5 H9 #22 5 + # symb N1 #1 NPYD C1 #2 CB C2 #3 CB C3 #4 CB C4 #5 CB C5 #6 CB N2 #7 NPYD C6 #8 CB N3 #9 NPYD C7 #10 CB N4 #11 NC=N N5 #12 NR C8 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HNCN H6 #19 HNR H7 #20 HC H8 #21 HC H9 #22 HC + # char N1 #1 -0.620 C1 #2 0.160 C2 #3 -0.150 C3 #4 -0.150 C4 #5 0.000 C5 #6 0.620 N2 #7 -0.620 C6 #8 0.470 N3 #9 -0.620 C7 #10 0.410 N4 #11 -0.511 N5 #12 -0.619 C8 #13 0.270 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.400 H6 #19 0.360 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 N2 #7 0.000 C6 #8 0.000 N3 #9 0.000 C7 #10 0.000 N4 #11 0.000 N5 #12 0.000 C8 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 +model VABROF RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 11 SUBRING 1 has 2 PI electrons PI PAIR ON O OR S 12 PI PAIR ON O OR S 13 SUBRING 2 has 4 PI electrons + # ty C1 #1 1 C2 #2 1 C3 #3 1 C4 #4 1 C5 #5 3 C6 #6 1 C7 #7 1 C8 #8 1 C9 #9 1 O1 #10 6 O2 #11 6 O3 #12 6 O4 #13 6 O5 #14 7 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 H14 #28 5 + # symb C1 #1 CR C2 #2 CR C3 #3 CR C4 #4 CR C5 #5 C=OR C6 #6 CR C7 #7 CR C8 #8 CR C9 #9 CR O1 #10 OR O2 #11 OR O3 #12 OR O4 #13 OR O5 #14 O=CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC H14 #28 HC + # char C1 #1 0.560 C2 #2 0.280 C3 #3 0.280 C4 #4 0.341 C5 #5 0.449 C6 #6 0.280 C7 #7 0.560 C8 #8 0.000 C9 #9 0.000 O1 #10 -0.560 O2 #11 -0.560 O3 #12 -0.560 O4 #13 -0.560 O5 #14 -0.570 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.060 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 O1 #10 0.000 O2 #11 0.000 O3 #12 0.000 O4 #13 0.000 O5 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 H14 #28 0.000 +model VACRUM RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty N1 #1 39 N2 #2 65 C1 #3 64 N3 #4 66 C2 #5 63 N4 #6 45 O1 #7 32 O2 #8 32 N5 #9 40 C3 #10 22 C4 #11 22 C5 #12 1 C6 #13 1 C7 #14 3 O3 #15 7 C8 #16 1 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H5 #27 5 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B N3 #4 N5B C2 #5 C5A N4 #6 NO2 O1 #7 O2N O2 #8 O2N N5 #9 NC=N C3 #10 CR3R C4 #11 CR3R C5 #12 CR C6 #13 CR C7 #14 C=OR O3 #15 O=CR C8 #16 CR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H5 #27 HC + # char N1 #1 0.314 N2 #2 -0.707 C1 #3 0.595 N3 #4 -0.565 C2 #5 0.271 N4 #6 0.961 O1 #7 -0.520 O2 #8 -0.520 N5 #9 -0.422 C3 #10 -0.031 C4 #11 -0.031 C5 #12 0.256 C6 #13 0.061 C7 #14 0.448 O3 #15 -0.570 C8 #16 0.061 H1 #17 0.100 H2 #18 0.100 H3 #19 0.100 H4 #20 0.100 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H5 #27 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 N3 #4 0.000 C2 #5 0.000 N4 #6 0.000 O1 #7 0.000 O2 #8 0.000 N5 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 O3 #15 0.000 C8 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H5 #27 0.000 +model VAJFAN RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 16 PI PAIR ON SP2-N 12 PI PAIR ON O OR S 15 SUBRING 1 has 8 PI electrons + # ty C1 #1 4 C2 #2 2 C3 #3 2 C4 #4 4 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 C11 #11 1 N1 #12 43 N2 #13 42 N3 #14 42 S1 #15 15 S2 #16 15 S3 #17 18 O1 #18 32 O2 #19 32 H1 #20 5 H2 #21 5 H3 #22 5 H4 #23 5 H5 #24 5 H6 #25 5 H7 #26 5 + # symb C1 #1 CSP C2 #2 C=C C3 #3 C=C C4 #4 CSP C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB C11 #11 CR N1 #12 NSO2 N2 #13 NSP N3 #14 NSP S1 #15 S S2 #16 S S3 #17 SO2N O1 #18 O2S O2 #19 O2S H1 #20 HC H2 #21 HC H3 #22 HC H4 #23 HC H5 #24 HC H6 #25 HC H7 #26 HC + # char C1 #1 0.492 C2 #2 0.166 C3 #3 0.166 C4 #4 0.492 C5 #5 -0.009 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.143 C9 #9 -0.150 C10 #10 -0.150 C11 #11 0.143 N1 #12 -0.318 N2 #13 -0.557 N3 #14 -0.557 S1 #15 -0.011 S2 #16 -0.011 S3 #17 1.447 O1 #18 -0.650 O2 #19 -0.650 H1 #20 0.150 H2 #21 0.150 H3 #22 0.150 H4 #23 0.150 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 N1 #12 0.000 N2 #13 0.000 N3 #14 0.000 S1 #15 0.000 S2 #16 0.000 S3 #17 0.000 O1 #18 0.000 O2 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 +model VALTEH + # ty S3 #1 72 S4 #2 72 C3 #3 41 O2 #4 6 C4 #5 1 H4 #6 5 H5 #7 5 H6 #8 5 + # symb S3 #1 S2CM S4 #2 S2CM C3 #3 CS2M O2 #4 OC=S C4 #5 CR H4 #6 HC H5 #7 HC H6 #8 HC + # char S3 #1 -0.750 S4 #2 -0.750 C3 #3 0.795 O2 #4 -0.575 C4 #5 0.280 H4 #6 0.000 H5 #7 0.000 H6 #8 0.000 + # fchar S3 #1 -0.500 S4 #2 -0.500 C3 #3 0.000 O2 #4 0.000 C4 #5 0.000 H4 #6 0.000 H5 #7 0.000 H6 #8 0.000 +model VALWOU RING 1 HAS 2 SUBRINGS SUBRING 1 has 0 PI electrons SUBRING 2 has 0 PI electrons + # ty S1 #1 15 S2 #2 73 O1 #3 32 O2 #4 32 C1 #5 1 F1 #6 11 F2 #7 11 C2 #8 1 F3 #9 11 F4 #10 11 N1 #11 34 C3 #12 1 C4 #13 1 C5 #14 1 C6 #15 1 C7 #16 1 C8 #17 1 C9 #18 1 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 H12 #30 5 H13 #31 5 + # symb S1 #1 S S2 #2 SO2M O1 #3 O2S O2 #4 O2S C1 #5 CR F1 #6 F F2 #7 F C2 #8 CR F3 #9 F F4 #10 F N1 #11 NR+ C3 #12 CR C4 #13 CR C5 #14 CR C6 #15 CR C7 #16 CR C8 #17 CR C9 #18 CR H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC H12 #30 HC H13 #31 HC + # char S1 #1 -0.460 S2 #2 0.112 O1 #3 -0.600 O2 #4 -0.600 C1 #5 0.998 F1 #6 -0.340 F2 #7 -0.340 C2 #8 1.413 F3 #9 -0.340 F4 #10 -0.340 N1 #11 -1.012 C3 #12 0.503 C4 #13 0.000 C5 #14 0.503 C6 #15 0.000 C7 #16 0.503 C8 #17 0.000 C9 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 -0.500 O2 #4 -0.500 C1 #5 0.000 F1 #6 0.000 F2 #7 0.000 C2 #8 0.000 F3 #9 0.000 F4 #10 0.000 N1 #11 1.000 C3 #12 0.000 C4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 C8 #17 0.000 C9 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 +model VAPZOB10 RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 18 SUBRING 1 has 2 PI electrons + # ty N1 #1 66 N2 #2 66 C1 #3 63 N3 #4 39 N4 #5 9 C2 #6 3 C3 #7 2 C4 #8 2 C5 #9 63 N5 #10 40 C6 #11 1 C7 #12 1 C8 #13 1 C9 #14 1 C10 #15 1 O1 #16 6 O2 #17 6 O3 #18 6 O4 #19 6 H1 #20 5 H2 #21 5 H3 #22 28 H4 #23 28 H5 #24 5 H6 #25 5 H7 #26 5 H8 #27 5 H9 #28 5 H10 #29 5 H11 #30 21 H12 #31 21 H13 #32 21 + # symb N1 #1 N5B N2 #2 N5B C1 #3 C5A N3 #4 NPYL N4 #5 N=C C2 #6 C=N C3 #7 C=C C4 #8 C=C C5 #9 C5A N5 #10 NC=C C6 #11 CR C7 #12 CR C8 #13 CR C9 #14 CR C10 #15 CR O1 #16 OR O2 #17 OR O3 #18 OR O4 #19 OR H1 #20 HC H2 #21 HC H3 #22 HNCC H4 #23 HNCC H5 #24 HC H6 #25 HC H7 #26 HC H8 #27 HC H9 #28 HC H10 #29 HC H11 #30 HOR H12 #31 HOR H13 #32 HOR + # char N1 #1 -0.338 N2 #2 -0.338 C1 #3 0.007 N3 #4 0.505 N4 #5 -0.652 C2 #6 0.376 C3 #7 -0.136 C4 #8 0.145 C5 #9 0.142 N5 #10 -0.900 C6 #11 0.460 C7 #12 0.280 C8 #13 0.280 C9 #14 0.280 C10 #15 0.280 O1 #16 -0.680 O2 #17 -0.680 O3 #18 -0.560 O4 #19 -0.680 H1 #20 0.060 H2 #21 0.150 H3 #22 0.400 H4 #23 0.400 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.400 H12 #31 0.400 H13 #32 0.400 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 N3 #4 0.000 N4 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 N5 #10 0.000 C6 #11 0.000 C7 #12 0.000 C8 #13 0.000 C9 #14 0.000 C10 #15 0.000 O1 #16 0.000 O2 #17 0.000 O3 #18 0.000 O4 #19 0.000 H1 #20 0.000 H2 #21 0.000 H3 #22 0.000 H4 #23 0.000 H5 #24 0.000 H6 #25 0.000 H7 #26 0.000 H8 #27 0.000 H9 #28 0.000 H10 #29 0.000 H11 #30 0.000 H12 #31 0.000 H13 #32 0.000 +model VASDOI RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 4 SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 8 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty C1 #1 2 C2 #2 2 C3 #3 3 O1 #4 6 C4 #5 64 C5 #6 64 C6 #7 63 O2 #8 59 C7 #9 63 C8 #10 1 O3 #11 7 C9 #12 1 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 + # symb C1 #1 C=C C2 #2 C=C C3 #3 COO O1 #4 OC=O C4 #5 C5B C5 #6 C5B C6 #7 C5A O2 #8 OFUR C7 #9 C5A C8 #10 CR O3 #11 O=CO C9 #12 CR H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC + # char C1 #1 -0.105 C2 #2 -0.124 C3 #3 0.706 O1 #4 -0.212 C4 #5 0.062 C5 #6 -0.150 C6 #7 -0.040 O2 #8 -0.280 C7 #9 0.095 C8 #10 0.138 O3 #11 -0.570 C9 #12 0.180 H1 #13 0.150 H2 #14 0.150 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 O1 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 O2 #8 0.000 C7 #9 0.000 C8 #10 0.000 O3 #11 0.000 C9 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 +model VATKAC RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 6 SUBRING 2 has 2 PI electrons SUBRING 3 has 4 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 S1 #2 15 O1 #3 7 O2 #4 7 N1 #5 39 N2 #6 40 C1 #7 64 C2 #8 2 C3 #9 2 C4 #10 3 C5 #11 3 C6 #12 63 C7 #13 63 C8 #14 64 C9 #15 1 C10 #16 1 C11 #17 1 C12 #18 1 H1 #19 28 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 5 H11 #29 5 + # symb CL1 #1 CL S1 #2 S O1 #3 O=CR O2 #4 O=CR N1 #5 NPYL N2 #6 NC=C C1 #7 C5B C2 #8 C=C C3 #9 C=C C4 #10 C=OR C5 #11 C=OR C6 #12 C5A C7 #13 C5A C8 #14 C5B C9 #15 CR C10 #16 CR C11 #17 CR C12 #18 CR H1 #19 HNCC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HC H11 #29 HC + # char CL1 #1 -0.140 S1 #2 -0.286 O1 #3 -0.570 O2 #4 -0.570 N1 #5 0.048 N2 #6 -0.869 C1 #7 -0.046 C2 #8 0.146 C3 #9 0.154 C4 #10 0.556 C5 #11 0.655 C6 #12 -0.237 C7 #13 -0.096 C8 #14 -0.181 C9 #15 0.181 C10 #16 0.369 C11 #17 0.256 C12 #18 0.230 H1 #19 0.400 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 + # fchar CL1 #1 0.000 S1 #2 0.000 O1 #3 0.000 O2 #4 0.000 N1 #5 0.000 N2 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 C11 #17 0.000 C12 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 +model VAWDUS RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons + # ty P1 #1 25 O1 #2 6 O2 #3 32 O3 #4 32 O4 #5 32 O5 #6 32 N1 #7 67 N2 #8 45 C1 #9 3 C2 #10 2 C3 #11 2 C4 #12 1 C5 #13 1 C6 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 23 + # symb P1 #1 PO2 O1 #2 OPO O2 #3 OP O3 #4 OXN O4 #5 O2N O5 #6 O2N N1 #7 N2OX N2 #8 NO2 C1 #9 C=N C2 #10 C=C C3 #11 C=C C4 #12 CR C5 #13 CR C6 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HNOX + # char P1 #1 1.078 O1 #2 -0.551 O2 #3 -0.700 O3 #4 -0.633 O4 #5 -0.520 O5 #6 -0.520 N1 #7 0.337 N2 #8 0.836 C1 #9 -0.117 C2 #10 -0.124 C3 #11 0.066 C4 #12 0.138 C5 #13 0.138 C6 #14 0.280 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.292 + # fchar P1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 O5 #6 0.000 N1 #7 0.000 N2 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 +model VAWMOV RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 8 SUBRING 1 has 2 PI electrons + # ty N1 #1 39 C1 #2 64 C2 #3 63 O1 #4 32 N2 #5 43 C3 #6 1 C4 #7 1 O2 #8 6 O3 #9 6 N3 #10 65 N4 #11 66 S1 #12 18 O4 #13 32 C5 #14 1 C6 #15 1 C7 #16 1 O5 #17 6 O6 #18 6 H1 #19 5 H2 #20 28 H3 #21 28 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 21 H11 #29 21 H12 #30 21 + # symb N1 #1 NPYL C1 #2 C5B C2 #3 C5A O1 #4 O2S N2 #5 NSO2 C3 #6 CR C4 #7 CR O2 #8 OR O3 #9 OR N3 #10 N5A N4 #11 N5B S1 #12 SO2N O4 #13 O2S C5 #14 CR C6 #15 CR C7 #16 CR O5 #17 OR O6 #18 OR H1 #19 HC H2 #20 HNSO H3 #21 HNSO H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HOR H11 #29 HOR H12 #30 HOR + # char N1 #1 0.314 C1 #2 0.453 C2 #3 0.037 O1 #4 -0.650 N2 #5 -0.978 C3 #6 0.280 C4 #7 0.280 O2 #8 -0.560 O3 #9 -0.680 N3 #10 -0.707 N4 #11 -0.565 S1 #12 1.501 O4 #13 -0.650 C5 #14 0.536 C6 #15 0.280 C7 #16 0.280 O5 #17 -0.680 O6 #18 -0.680 H1 #19 0.150 H2 #20 0.420 H3 #21 0.420 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.400 H11 #29 0.400 H12 #30 0.400 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O1 #4 0.000 N2 #5 0.000 C3 #6 0.000 C4 #7 0.000 O2 #8 0.000 O3 #9 0.000 N3 #10 0.000 N4 #11 0.000 S1 #12 0.000 O4 #13 0.000 C5 #14 0.000 C6 #15 0.000 C7 #16 0.000 O5 #17 0.000 O6 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 +model VAWWAR + # ty BR1 #1 13 O1 #2 32 O2 #3 32 O3 #4 32 O4 #5 32 N1 #6 45 N2 #7 45 N3 #8 40 C1 #9 2 C2 #10 2 C3 #11 1 C4 #12 1 C5 #13 1 C6 #14 1 C7 #15 1 C8 #16 1 C9 #17 1 H1 #18 5 H2 #19 5 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 H15 #32 5 H16 #33 28 + # symb BR1 #1 BR O1 #2 O2N O2 #3 O2N O3 #4 O2N O4 #5 O2N N1 #6 NO2 N2 #7 NO2 N3 #8 NC=C C1 #9 C=C C2 #10 C=C C3 #11 CR C4 #12 CR C5 #13 CR C6 #14 CR C7 #15 CR C8 #16 CR C9 #17 CR H1 #18 HC H2 #19 HC H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC H15 #32 HC H16 #33 HNCC + # char BR1 #1 -0.230 O1 #2 -0.520 O2 #3 -0.520 O3 #4 -0.520 O4 #5 -0.520 N1 #6 0.836 N2 #7 0.836 N3 #8 -0.869 C1 #9 0.409 C2 #10 -0.038 C3 #11 0.138 C4 #12 0.369 C5 #13 0.230 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 H16 #33 0.400 + # fchar BR1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 N1 #6 0.000 N2 #7 0.000 N3 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 H16 #33 0.000 +model VAYKUB RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N4 #1 58 C9 #2 37 N5 #3 38 C10 #4 37 C11 #5 37 C12 #6 37 C13 #7 1 N6 #8 40 C14 #9 1 O2 #10 6 C15 #11 1 C16 #12 1 H14 #13 36 H15 #14 28 H16 #15 28 H17 #16 5 H18 #17 5 H19 #18 5 H20 #19 5 H21 #20 5 H22 #21 5 H23 #22 5 H24 #23 5 H25 #24 5 H26 #25 5 H27 #26 5 + # symb N4 #1 NPD+ C9 #2 CB N5 #3 NPYD C10 #4 CB C11 #5 CB C12 #6 CB C13 #7 CR N6 #8 NC=C C14 #9 CR O2 #10 OR C15 #11 CR C16 #12 CR H14 #13 HPD+ H15 #14 HNCC H16 #15 HNCC H17 #16 HC H18 #17 HC H19 #18 HC H20 #19 HC H21 #20 HC H22 #21 HC H23 #22 HC H24 #23 HC H25 #24 HC H26 #25 HC H27 #26 HC + # char N4 #1 -0.179 C9 #2 0.527 N5 #3 -0.620 C10 #4 0.410 C11 #5 -0.143 C12 #6 0.211 C13 #7 0.143 N6 #8 -0.900 C14 #9 0.423 O2 #10 -0.560 C15 #11 0.280 C16 #12 0.000 H14 #13 0.457 H15 #14 0.400 H16 #15 0.400 H17 #16 0.150 H18 #17 0.000 H19 #18 0.000 H20 #19 0.000 H21 #20 0.000 H22 #21 0.000 H23 #22 0.000 H24 #23 0.000 H25 #24 0.000 H26 #25 0.000 H27 #26 0.000 + # fchar N4 #1 1.000 C9 #2 0.000 N5 #3 0.000 C10 #4 0.000 C11 #5 0.000 C12 #6 0.000 C13 #7 0.000 N6 #8 0.000 C14 #9 0.000 O2 #10 0.000 C15 #11 0.000 C16 #12 0.000 H14 #13 0.000 H15 #14 0.000 H16 #15 0.000 H17 #16 0.000 H18 #17 0.000 H19 #18 0.000 H20 #19 0.000 H21 #20 0.000 H22 #21 0.000 H23 #22 0.000 H24 #23 0.000 H25 #24 0.000 H26 #25 0.000 H27 #26 0.000 +model VAZHUZ RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 15 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 3 C8 #8 1 O1 #9 7 O2 #10 6 O3 #11 6 C9 #12 63 C10 #13 63 C11 #14 64 N1 #15 39 N2 #16 66 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 29 H8 #24 5 H9 #25 5 H10 #26 23 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 C=OR C8 #8 CR O1 #9 O=CR O2 #10 OC=C O3 #11 OC=C C9 #12 C5A C10 #13 C5A C11 #14 C5B N1 #15 NPYL N2 #16 N5B H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HOCC H8 #24 HC H9 #25 HC H10 #26 HPYL + # char C1 #1 0.086 C2 #2 -0.150 C3 #3 0.083 C4 #4 0.083 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.569 C8 #8 0.280 O1 #9 -0.570 O2 #10 -0.363 O3 #11 -0.532 C9 #12 0.101 C10 #13 -0.302 C11 #14 0.077 N1 #15 0.033 N2 #16 -0.565 H1 #17 0.150 H2 #18 0.150 H3 #19 0.150 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.450 H8 #24 0.150 H9 #25 0.150 H10 #26 0.270 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 O1 #9 0.000 O2 #10 0.000 O3 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 N1 #15 0.000 N2 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model VECSAX RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty S1 #1 15 S2 #2 15 S3 #3 16 S4 #4 15 S5 #5 15 S6 #6 15 C1 #7 30 C2 #8 30 C3 #9 20 C4 #10 1 H1 #11 5 H2 #12 5 H3 #13 5 C5 #14 3 C6 #15 1 H4 #16 5 H5 #17 5 H6 #18 5 C7 #19 1 H7 #20 5 H8 #21 5 H9 #22 5 C8 #23 1 H10 #24 5 H11 #25 5 H12 #26 5 + # symb S1 #1 S S2 #2 S S3 #3 S=C S4 #4 S S5 #5 S S6 #6 S C1 #7 CE4R C2 #8 CE4R C3 #9 CR4R C4 #10 CR H1 #11 HC H2 #12 HC H3 #13 HC C5 #14 CSS C6 #15 CR H4 #16 HC H5 #17 HC H6 #18 HC C7 #19 CR H7 #20 HC H8 #21 HC H9 #22 HC C8 #23 CR H10 #24 HC H11 #25 HC H12 #26 HC + # char S1 #1 -0.287 S2 #2 -0.300 S3 #3 -0.380 S4 #4 -0.371 S5 #5 -0.447 S6 #6 -0.447 C1 #7 0.140 C2 #8 -0.209 C3 #9 0.789 C4 #10 0.230 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 C5 #14 0.592 C6 #15 0.230 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 C7 #19 0.230 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 C8 #23 0.230 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 S4 #4 0.000 S5 #5 0.000 S6 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 C5 #14 0.000 C6 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 C7 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 C8 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 +model VEDTED RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 7 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 4 SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty S1 #1 18 N1 #2 9 C1 #3 3 N2 #4 39 C2 #5 63 N3 #6 66 N4 #7 43 C3 #8 64 C4 #9 63 O1 #10 32 O2 #11 32 N5 #12 40 C5 #13 1 C6 #14 1 H1 #15 5 H2 #16 28 H3 #17 28 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 + # symb S1 #1 SO2N N1 #2 N=C C1 #3 C=N N2 #4 NPYL C2 #5 C5A N3 #6 N5B N4 #7 NSO2 C3 #8 C5B C4 #9 C5A O1 #10 O2S O2 #11 O2S N5 #12 NC=N C5 #13 CR C6 #14 CR H1 #15 HC H2 #16 HNCN H3 #17 HNCN H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC + # char S1 #1 1.626 N1 #2 -0.638 C1 #3 0.585 N2 #4 0.048 C2 #5 0.037 N3 #6 -0.565 N4 #7 -0.639 C3 #8 0.372 C4 #9 -0.237 O1 #10 -0.650 O2 #11 -0.650 N5 #12 -0.850 C5 #13 0.256 C6 #14 0.356 H1 #15 0.150 H2 #16 0.400 H3 #17 0.400 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 + # fchar S1 #1 0.000 N1 #2 0.000 C1 #3 0.000 N2 #4 0.000 C2 #5 0.000 N3 #6 0.000 N4 #7 0.000 C3 #8 0.000 C4 #9 0.000 O1 #10 0.000 O2 #11 0.000 N5 #12 0.000 C5 #13 0.000 C6 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 +model VEHCOA RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 65 C1 #3 64 C2 #4 64 N3 #5 45 O1 #6 32 O2 #7 32 C3 #8 63 SI1 #9 19 C4 #10 1 C5 #11 1 C6 #12 1 H1 #13 23 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 + # symb N1 #1 NPYL N2 #2 N5A C1 #3 C5B C2 #4 C5B N3 #5 NO2 O1 #6 O2N O2 #7 O2N C3 #8 C5A SI1 #9 SI C4 #10 CR C5 #11 CR C6 #12 CR H1 #13 HPYL H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC + # char N1 #1 0.300 N2 #2 -0.707 C1 #3 0.139 C2 #4 0.079 N3 #5 0.961 O1 #6 -0.520 O2 #7 -0.520 C3 #8 -0.426 SI1 #9 0.516 C4 #10 -0.081 C5 #11 -0.081 C6 #12 -0.081 H1 #13 0.270 H2 #14 0.150 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 N3 #5 0.000 O1 #6 0.000 O2 #7 0.000 C3 #8 0.000 SI1 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 +model VEHZOX RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 3 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 4 PI PAIR ON SP2-N 8 SUBRING 1 has 4 PI electrons + # ty CL1 #1 12 S1 #2 18 O1 #3 6 O2 #4 6 O3 #5 32 O4 #6 32 N1 #7 9 N2 #8 40 C1 #9 3 C2 #10 2 C3 #11 2 C4 #12 1 C5 #13 1 C6 #14 1 C7 #15 1 C8 #16 1 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 + # symb CL1 #1 CL S1 #2 SO2N O1 #3 OC=C O2 #4 OR O3 #5 O2S O4 #6 O2S N1 #7 N=C N2 #8 NC=N C1 #9 C=N C2 #10 C=C C3 #11 C=C C4 #12 CR C5 #13 CR C6 #14 CR C7 #15 CR C8 #16 CR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC + # char CL1 #1 -0.290 S1 #2 1.505 O1 #3 -0.227 O2 #4 -0.560 O3 #5 -0.650 O4 #6 -0.650 N1 #7 -0.638 N2 #8 -0.788 C1 #9 0.650 C2 #10 -0.167 C3 #11 -0.061 C4 #12 0.428 C5 #13 0.369 C6 #14 0.280 C7 #15 0.280 C8 #16 0.369 H1 #17 0.150 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 + # fchar CL1 #1 0.000 S1 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 O4 #6 0.000 N1 #7 0.000 N2 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 +model VEJWOW RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 44 C1 #2 63 C2 #3 64 C3 #4 64 C4 #5 63 C5 #6 1 C6 #7 3 O1 #8 6 C7 #9 1 O2 #10 7 C8 #11 3 O3 #12 6 C9 #13 1 O4 #14 7 CL1 #15 12 CL2 #16 12 CL3 #17 12 CL4 #18 12 H1 #19 5 H2 #20 5 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 + # symb S1 #1 STHI C1 #2 C5A C2 #3 C5B C3 #4 C5B C4 #5 C5A C5 #6 CR C6 #7 COO O1 #8 OC=O C7 #9 CR O2 #10 O=CO C8 #11 COO O3 #12 OC=O C9 #13 CR O4 #14 O=CO CL1 #15 CL CL2 #16 CL CL3 #17 CL CL4 #18 CL H1 #19 HC H2 #20 HC H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC + # char S1 #1 -0.080 C1 #2 0.164 C2 #3 0.123 C3 #4 0.123 C4 #5 -0.140 C5 #6 0.592 C6 #7 0.659 O1 #8 -0.430 C7 #9 0.280 O2 #10 -0.570 C8 #11 0.659 O3 #12 -0.430 C9 #13 0.280 O4 #14 -0.570 CL1 #15 -0.290 CL2 #16 -0.124 CL3 #17 -0.123 CL4 #18 -0.123 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 + # fchar S1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 O1 #8 0.000 C7 #9 0.000 O2 #10 0.000 C8 #11 0.000 O3 #12 0.000 C9 #13 0.000 O4 #14 0.000 CL1 #15 0.000 CL2 #16 0.000 CL3 #17 0.000 CL4 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 +model VEKMON RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 3 C7 #7 1 C8 #8 1 C9 #9 1 N1 #10 58 N2 #11 40 O1 #12 7 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 H10 #22 5 H11 #23 5 H12 #24 5 H13 #25 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 C=ON C7 #7 CR C8 #8 CR C9 #9 CR N1 #10 NPD+ N2 #11 NC=C O1 #12 O=CN H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC H10 #22 HC H11 #23 HC H12 #24 HC H13 #25 HC + # char C1 #1 0.211 C2 #2 -0.150 C3 #3 0.100 C4 #4 -0.150 C5 #5 0.211 C6 #6 0.902 C7 #7 0.061 C8 #8 0.369 C9 #9 0.369 N1 #10 -0.115 N2 #11 -0.838 O1 #12 -0.570 H1 #13 0.150 H2 #14 0.150 H3 #15 0.150 H4 #16 0.150 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 N1 #10 1.000 N2 #11 0.000 O1 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 H10 #22 0.000 H11 #23 0.000 H12 #24 0.000 H13 #25 0.000 +model VENYUI RING 1 HAS 4 SUBRINGS SUBRING 2 IS A 3-MEMBERED RING SUBRING 4 IS A 3-MEMBERED RING SUBRING 1 has 0 PI electrons SUBRING 3 has 0 PI electrons + # ty C1 #1 22 C2 #2 22 C3 #3 22 C4 #4 2 C5 #5 2 C6 #6 2 C7 #7 2 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 5 H5 #12 5 H6 #13 5 C6F #14 2 C1F #15 22 H4F #16 5 C3F #17 22 C2F #18 22 C7F #19 2 H1F #20 5 H3F #21 5 H2F #22 5 H5F #23 5 H6F #24 5 + # symb C1 #1 CR3R C2 #2 CR3R C3 #3 CR3R C4 #4 C=C C5 #5 C=C C6 #6 C=C C7 #7 C=C H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HC H5 #12 HC H6 #13 HC C6F #14 C=C C1F #15 CR3R H4F #16 HC C3F #17 CR3R C2F #18 CR3R C7F #19 C=C H1F #20 HC H3F #21 HC H2F #22 HC H5F #23 HC H6F #24 HC + # char C1 #1 -0.060 C2 #2 -0.060 C3 #3 -0.060 C4 #4 -0.080 C5 #5 -0.300 C6 #6 -0.080 C7 #7 -0.300 H1 #8 0.100 H2 #9 0.100 H3 #10 0.100 H4 #11 0.150 H5 #12 0.150 H6 #13 0.150 C6F #14 -0.080 C1F #15 -0.060 H4F #16 0.150 C3F #17 -0.060 C2F #18 -0.060 C7F #19 -0.300 H1F #20 0.100 H3F #21 0.100 H2F #22 0.100 H5F #23 0.150 H6F #24 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 H5 #12 0.000 H6 #13 0.000 C6F #14 0.000 C1F #15 0.000 H4F #16 0.000 C3F #17 0.000 C2F #18 0.000 C7F #19 0.000 H1F #20 0.000 H3F #21 0.000 H2F #22 0.000 H5F #23 0.000 H6F #24 0.000 +model VETWAS RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON SP2-N 14 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 63 C2 #2 63 C3 #3 64 N1 #4 39 N2 #5 66 N3 #6 45 N4 #7 45 O1 #8 32 O2 #9 32 O3 #10 32 O4 #11 32 H1 #12 23 C1B #13 63 N1B #14 39 N2B #15 66 C2B #16 63 H1B #17 23 C3B #18 64 N3B #19 45 N4B #20 45 O1B #21 32 O2B #22 32 O3B #23 32 O4B #24 32 + # symb C1 #1 C5A C2 #2 C5A C3 #3 C5B N1 #4 NPYL N2 #5 N5B N3 #6 NO2 N4 #7 NO2 O1 #8 O2N O2 #9 O2N O3 #10 O2N O4 #11 O2N H1 #12 HPYL C1B #13 C5A N1B #14 NPYL N2B #15 N5B C2B #16 C5A H1B #17 HPYL C3B #18 C5B N3B #19 NO2 N4B #20 NO2 O1B #21 O2N O2B #22 O2N O3B #23 O2N O4B #24 O2N + # char C1 #1 0.186 C2 #2 -0.072 C3 #3 0.306 N1 #4 0.033 N2 #5 -0.565 N3 #6 0.960 N4 #7 0.961 O1 #8 -0.520 O2 #9 -0.520 O3 #10 -0.520 O4 #11 -0.520 H1 #12 0.270 C1B #13 0.186 N1B #14 0.033 N2B #15 -0.565 C2B #16 -0.072 H1B #17 0.270 C3B #18 0.306 N3B #19 0.960 N4B #20 0.961 O1B #21 -0.520 O2B #22 -0.520 O3B #23 -0.520 O4B #24 -0.520 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 N1 #4 0.000 N2 #5 0.000 N3 #6 0.000 N4 #7 0.000 O1 #8 0.000 O2 #9 0.000 O3 #10 0.000 O4 #11 0.000 H1 #12 0.000 C1B #13 0.000 N1B #14 0.000 N2B #15 0.000 C2B #16 0.000 H1B #17 0.000 C3B #18 0.000 N3B #19 0.000 N4B #20 0.000 O1B #21 0.000 O2B #22 0.000 O3B #23 0.000 O4B #24 0.000 +model VEVDIJ RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING SUBRING 2 has 0 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty CL1 #1 12 CL2 #2 12 O1 #3 32 C1 #4 22 C2 #5 1 P1 #6 25 C3 #7 1 C4 #8 22 C5 #9 22 C6 #10 1 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 C11 #15 37 C12 #16 37 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 + # symb CL1 #1 CL CL2 #2 CL O1 #3 OP C1 #4 CR3R C2 #5 CR P1 #6 PO C3 #7 CR C4 #8 CR3R C5 #9 CR3R C6 #10 CR C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB C11 #15 CB C12 #16 CB H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC + # char CL1 #1 -0.227 CL2 #2 -0.227 O1 #3 -0.700 C1 #4 -0.190 C2 #5 0.095 P1 #6 0.839 C3 #7 0.095 C4 #8 -0.195 C5 #9 0.455 C6 #10 0.095 C7 #11 -0.139 C8 #12 -0.150 C9 #13 -0.150 C10 #14 -0.150 C11 #15 -0.150 C12 #16 -0.150 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.100 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.150 H10 #26 0.150 H11 #27 0.150 H12 #28 0.150 H13 #29 0.150 + # fchar CL1 #1 0.000 CL2 #2 0.000 O1 #3 0.000 C1 #4 0.000 C2 #5 0.000 P1 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 C12 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 +model VEWZOM RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 18 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 18 SUBRING 2 has 4 PI electrons SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC + # ty C1 #1 63 N1 #2 66 N2 #3 66 C2 #4 63 C3 #5 57 N3 #6 55 C4 #7 1 C5 #8 1 C6 #9 1 N4 #10 55 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 F1 #15 11 C11 #16 37 C12 #17 37 N5 #18 39 H1 #19 5 H2 #20 36 H3 #21 5 H4 #22 5 H5 #23 5 H6 #24 5 H7 #25 5 H8 #26 5 H9 #27 5 H10 #28 36 H11 #29 5 H12 #30 5 H13 #31 5 + # symb C1 #1 C5A N1 #2 N5B N2 #3 N5B C2 #4 C5A C3 #5 CNN+ N3 #6 NCN+ C4 #7 CR C5 #8 CR C6 #9 CR N4 #10 NCN+ C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB F1 #15 F C11 #16 CB C12 #17 CB N5 #18 NPYL H1 #19 HC H2 #20 HNN+ H3 #21 HC H4 #22 HC H5 #23 HC H6 #24 HC H7 #25 HC H8 #26 HC H9 #27 HC H10 #28 HNN+ H11 #29 HC H12 #30 HC H13 #31 HC + # char C1 #1 0.037 N1 #2 -0.338 N2 #3 -0.338 C2 #4 0.112 C3 #5 0.784 N3 #6 -0.794 C4 #7 0.489 C5 #8 0.000 C6 #9 0.000 N4 #10 -0.653 C7 #11 0.349 C8 #12 -0.150 C9 #13 -0.150 C10 #14 0.190 F1 #15 -0.190 C11 #16 -0.150 C12 #17 -0.023 N5 #18 0.326 H1 #19 0.150 H2 #20 0.450 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.450 H11 #29 0.150 H12 #30 0.150 H13 #31 0.150 + # fchar C1 #1 0.000 N1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 N3 #6 0.500 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 N4 #10 0.500 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 F1 #15 0.000 C11 #16 0.000 C12 #17 0.000 N5 #18 0.000 H1 #19 0.000 H2 #20 0.000 H3 #21 0.000 H4 #22 0.000 H5 #23 0.000 H6 #24 0.000 H7 #25 0.000 H8 #26 0.000 H9 #27 0.000 H10 #28 0.000 H11 #29 0.000 H12 #30 0.000 H13 #31 0.000 +model VEXKOY RING 1 HAS 3 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 9 SUBRING 2 has 2 PI electrons SUBRING 3 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 3 IS AROMATIC EXOCYCLIC MULT BOND 2 1 EXOCYCLIC MULT BOND 3 4 EXOCYCLIC MULT BOND 15 14 EXOCYCLIC MULT BOND 10 11 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty N1 #1 38 C1 #2 64 C2 #3 63 C3 #4 37 C4 #5 37 C5 #6 37 C6 #7 4 N2 #8 42 O1 #9 59 C7 #10 64 C8 #11 37 C9 #12 37 C10 #13 37 C11 #14 37 C12 #15 63 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 + # symb N1 #1 NPYD C1 #2 C5B C2 #3 C5A C3 #4 CB C4 #5 CB C5 #6 CB C6 #7 CSP N2 #8 NSP O1 #9 OFUR C7 #10 C5B C8 #11 CB C9 #12 CB C10 #13 CB C11 #14 CB C12 #15 C5A H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC + # char N1 #1 -0.566 C1 #2 0.256 C2 #3 0.140 C3 #4 -0.150 C4 #5 -0.150 C5 #6 0.383 C6 #7 0.484 N2 #8 -0.557 O1 #9 -0.280 C7 #10 0.000 C8 #11 -0.150 C9 #12 -0.150 C10 #13 -0.150 C11 #14 -0.150 C12 #15 0.140 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.150 H6 #21 0.150 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 N2 #8 0.000 O1 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 C11 #14 0.000 C12 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 +model VEXMOA RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 9 C1 #2 3 C2 #3 37 C3 #4 37 C4 #5 37 C5 #6 37 C6 #7 37 N2 #8 38 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 C11 #13 37 C12 #14 37 O1 #15 6 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 21 + # symb N1 #1 N=C C1 #2 C=N C2 #3 CB C3 #4 CB C4 #5 CB C5 #6 CB C6 #7 CB N2 #8 NPYD C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB C11 #13 CB C12 #14 CB O1 #15 -O- H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HO + # char N1 #1 -0.513 C1 #2 0.278 C2 #3 0.396 C3 #4 -0.150 C4 #5 -0.150 C5 #6 -0.150 C6 #7 0.160 N2 #8 -0.620 C7 #9 0.086 C8 #10 -0.150 C9 #11 -0.150 C10 #12 -0.150 C11 #13 -0.150 C12 #14 -0.150 O1 #15 -0.337 H1 #16 0.150 H2 #17 0.150 H3 #18 0.150 H4 #19 0.150 H5 #20 0.150 H6 #21 0.150 H7 #22 0.150 H8 #23 0.150 H9 #24 0.150 H10 #25 0.400 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 N2 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 O1 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 +model VEYBIK RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 3 SUBRING 1 has 2 PI electrons + # ty SI1 #1 19 SI2 #2 19 O1 #3 6 O2 #4 6 O3 #5 6 C1 #6 1 C2 #7 1 C3 #8 1 C4 #9 1 C5 #10 1 H1 #11 21 H2 #12 21 H3 #13 5 H4 #14 5 H9 #15 5 H10 #16 5 H11 #17 5 H12 #18 5 H13 #19 5 H14 #20 5 H15 #21 5 H16 #22 5 H17 #23 5 H18 #24 5 + # symb SI1 #1 SI SI2 #2 SI O1 #3 -O- O2 #4 -O- O3 #5 -O- C1 #6 CR C2 #7 CR C3 #8 CR C4 #9 CR C5 #10 CR H1 #11 HO H2 #12 HO H3 #13 HC H4 #14 HC H9 #15 HC H10 #16 HC H11 #17 HC H12 #18 HC H13 #19 HC H14 #20 HC H15 #21 HC H16 #22 HC H17 #23 HC H18 #24 HC + # char SI1 #1 0.756 SI2 #2 0.756 O1 #3 -0.595 O2 #4 -0.697 O3 #5 -0.697 C1 #6 -0.081 C2 #7 0.000 C3 #8 -0.081 C4 #9 -0.081 C5 #10 -0.081 H1 #11 0.400 H2 #12 0.400 H3 #13 0.000 H4 #14 0.000 H9 #15 0.000 H10 #16 0.000 H11 #17 0.000 H12 #18 0.000 H13 #19 0.000 H14 #20 0.000 H15 #21 0.000 H16 #22 0.000 H17 #23 0.000 H18 #24 0.000 + # fchar SI1 #1 0.000 SI2 #2 0.000 O1 #3 0.000 O2 #4 0.000 O3 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 H1 #11 0.000 H2 #12 0.000 H3 #13 0.000 H4 #14 0.000 H9 #15 0.000 H10 #16 0.000 H11 #17 0.000 H12 #18 0.000 H13 #19 0.000 H14 #20 0.000 H15 #21 0.000 H16 #22 0.000 H17 #23 0.000 H18 #24 0.000 +model VEYWAX + # ty CL1 #1 12 O1 #2 6 O2 #3 6 N1 #4 9 N2 #5 9 C1 #6 3 C2 #7 3 H1 #8 21 H2 #9 21 H3 #10 5 + # symb CL1 #1 CL O1 #2 -O- O2 #3 -O- N1 #4 N=C N2 #5 N=C C1 #6 C=N C2 #7 C=N H1 #8 HO H2 #9 HO H3 #10 HC + # char CL1 #1 -0.209 O1 #2 -0.337 O2 #3 -0.337 N1 #4 -0.513 N2 #5 -0.513 C1 #6 0.659 C2 #7 0.390 H1 #8 0.400 H2 #9 0.400 H3 #10 0.060 + # fchar CL1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 N2 #5 0.000 C1 #6 0.000 C2 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 +model VEZBUX RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 3 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty CL1 #1 12 P1 #2 25 O1 #3 6 O2 #4 32 C1 #5 1 C2 #6 1 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 + # symb CL1 #1 CL P1 #2 PO O1 #3 OC=C O2 #4 OP C1 #5 CR C2 #6 CR C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC + # char CL1 #1 -0.290 P1 #2 0.839 O1 #3 -0.363 O2 #4 -0.700 C1 #5 0.280 C2 #6 0.290 C3 #7 -0.139 C4 #8 0.083 C5 #9 -0.150 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.150 H6 #18 0.150 H7 #19 0.150 H8 #20 0.150 + # fchar CL1 #1 0.000 P1 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 +model VICGAP RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 1 PI PAIR ON SP2-N 17 SUBRING 1 has 6 PI electrons RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 24 SUBRING 1 has 2 PI electrons + # ty N1 #1 40 C1 #2 3 C2 #3 3 O1 #4 7 C3 #5 1 C4 #6 1 C5 #7 1 O2 #8 6 O3 #9 6 H1 #10 5 H2 #11 28 H3 #12 5 H4 #13 5 H5 #14 5 H6 #15 21 H7 #16 21 N2 #17 10 N3 #18 9 C6 #19 1 N4 #20 40 C7 #21 1 C8 #22 1 O4 #23 6 O5 #24 6 H8 #25 5 H9 #26 5 H10 #27 28 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 21 + # symb N1 #1 NC=N C1 #2 CONN C2 #3 CGD O1 #4 O=CN C3 #5 CR C4 #6 CR C5 #7 CR O2 #8 OR O3 #9 OR H1 #10 HC H2 #11 HNCN H3 #12 HC H4 #13 HC H5 #14 HC H6 #15 HOR H7 #16 HOR N2 #17 NC=O N3 #18 N=C C6 #19 CR N4 #20 NC=N C7 #21 CR C8 #22 CR O4 #23 OR O5 #24 OR H8 #25 HC H9 #26 HC H10 #27 HNCN H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HOR + # char N1 #1 -0.439 C1 #2 0.841 C2 #3 0.550 O1 #4 -0.570 C3 #5 0.649 C4 #6 0.280 C5 #7 0.280 O2 #8 -0.680 O3 #9 -0.680 H1 #10 0.000 H2 #11 0.400 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.400 H7 #16 0.400 N2 #17 -0.340 N3 #18 -0.661 C6 #19 0.300 N4 #20 -0.850 C7 #21 0.280 C8 #22 0.280 O4 #23 -0.680 O5 #24 -0.560 H8 #25 0.000 H9 #26 0.000 H10 #27 0.400 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.400 + # fchar N1 #1 0.000 C1 #2 0.000 C2 #3 0.000 O1 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 O2 #8 0.000 O3 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 H4 #13 0.000 H5 #14 0.000 H6 #15 0.000 H7 #16 0.000 N2 #17 0.000 N3 #18 0.000 C6 #19 0.000 N4 #20 0.000 C7 #21 0.000 C8 #22 0.000 O4 #23 0.000 O5 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 +model VICGET RING 1 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 9 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC RING 2 HAS 1 SUBRINGS PI PAIR ON O OR S 20 SUBRING 1 has 2 PI electrons + # ty N1 #1 38 C1 #2 37 N2 #3 38 C2 #4 63 C3 #5 64 C4 #6 37 N3 #7 66 C5 #8 63 N4 #9 39 N5 #10 40 S1 #11 17 O1 #12 7 N6 #13 8 C6 #14 1 C7 #15 1 C8 #16 1 C9 #17 1 C10 #18 1 O2 #19 6 O3 #20 6 O4 #21 6 H1 #22 5 H2 #23 28 H3 #24 28 H4 #25 23 H5 #26 23 H6 #27 5 H7 #28 5 H8 #29 5 H9 #30 5 H10 #31 5 H12 #32 5 H13 #33 21 H14 #34 21 H11 #35 5 + # symb N1 #1 NPYD C1 #2 CB N2 #3 NPYD C2 #4 C5A C3 #5 C5B C4 #6 CB N3 #7 N5B C5 #8 C5A N4 #9 NPYL N5 #10 NC=N S1 #11 S=O O1 #12 O=S N6 #13 NR C6 #14 CR C7 #15 CR C8 #16 CR C9 #17 CR C10 #18 CR O2 #19 OR O3 #20 OR O4 #21 OR H1 #22 HC H2 #23 HNCN H3 #24 HNCN H4 #25 HNR H5 #26 HNR H6 #27 HC H7 #28 HC H8 #29 HC H9 #30 HC H10 #31 HC H12 #32 HC H13 #33 HOR H14 #34 HOR H11 #35 HC + # char N1 #1 -0.620 C1 #2 0.720 N2 #3 -0.567 C2 #4 0.105 C3 #5 0.227 C4 #6 0.374 N3 #7 -0.565 C5 #8 0.037 N4 #9 0.048 N5 #10 -0.900 S1 #11 0.498 O1 #12 -0.500 N6 #13 -0.782 C6 #14 0.536 C7 #15 0.000 C8 #16 0.280 C9 #17 0.280 C10 #18 0.280 O2 #19 -0.680 O3 #20 -0.560 O4 #21 -0.680 H1 #22 0.150 H2 #23 0.400 H3 #24 0.400 H4 #25 0.360 H5 #26 0.360 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H12 #32 0.000 H13 #33 0.400 H14 #34 0.400 H11 #35 0.000 + # fchar N1 #1 0.000 C1 #2 0.000 N2 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N3 #7 0.000 C5 #8 0.000 N4 #9 0.000 N5 #10 0.000 S1 #11 0.000 O1 #12 0.000 N6 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 O2 #19 0.000 O3 #20 0.000 O4 #21 0.000 H1 #22 0.000 H2 #23 0.000 H3 #24 0.000 H4 #25 0.000 H5 #26 0.000 H6 #27 0.000 H7 #28 0.000 H8 #29 0.000 H9 #30 0.000 H10 #31 0.000 H12 #32 0.000 H13 #33 0.000 H14 #34 0.000 H11 #35 0.000 +model VICKIB RING 1 HAS 2 SUBRINGS SUBRING 1 has 0 PI electrons SUBRING 2 has 0 PI electrons + # ty CL1 #1 12 S1 #2 74 O1 #3 7 O2 #4 7 C1 #5 3 C2 #6 1 C3 #7 3 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 1 C8 #12 1 C9 #13 1 C10 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 5 H11 #25 5 H12 #26 5 H13 #27 5 + # symb CL1 #1 CL S1 #2 =S=O O1 #3 O=S= O2 #4 O=CR C1 #5 CS=O C2 #6 CR C3 #7 C=OR C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 CR C8 #12 CR C9 #13 CR C10 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HC H11 #25 HC H12 #26 HC H13 #27 HC + # char CL1 #1 -0.209 S1 #2 0.181 O1 #3 -0.500 O2 #4 -0.570 C1 #5 0.467 C2 #6 0.122 C3 #7 0.448 C4 #8 0.061 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 + # fchar CL1 #1 0.000 S1 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 H11 #25 0.000 H12 #26 0.000 H13 #27 0.000 +model VICPOM RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 2 SUBRINGS SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty O1 #1 59 N1 #2 38 N2 #3 58 N3 #4 40 N4 #5 39 N5 #6 66 C1 #7 37 C2 #8 64 C3 #9 63 C4 #10 37 C5 #11 63 C6 #12 1 C7 #13 63 C8 #14 64 C9 #15 64 C10 #16 63 H1 #17 36 H2 #18 28 H3 #19 23 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 + # symb O1 #1 OFUR N1 #2 NPYD N2 #3 NPD+ N3 #4 NC=N N4 #5 NPYL N5 #6 N5B C1 #7 CB C2 #8 C5B C3 #9 C5A C4 #10 CB C5 #11 C5A C6 #12 CR C7 #13 C5A C8 #14 C5B C9 #15 C5B C10 #16 C5A H1 #17 HPD+ H2 #18 HNCN H3 #19 HPYL H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC + # char O1 #1 -0.280 N1 #2 -0.620 N2 #3 -0.125 N3 #4 -0.869 N4 #5 0.033 N5 #6 -0.565 C1 #7 0.521 C2 #8 0.534 C3 #9 -0.152 C4 #10 0.410 C5 #11 0.037 C6 #12 0.549 C7 #13 -0.040 C8 #14 -0.150 C9 #15 -0.150 C10 #16 -0.010 H1 #17 0.457 H2 #18 0.400 H3 #19 0.270 H4 #20 0.150 H5 #21 0.150 H6 #22 0.000 H7 #23 0.000 H8 #24 0.150 H9 #25 0.150 H10 #26 0.150 + # fchar O1 #1 0.000 N1 #2 0.000 N2 #3 1.000 N3 #4 0.000 N4 #5 0.000 N5 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 C9 #15 0.000 C10 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model VIDKUO RING 1 HAS 1 SUBRINGS SUBRING 1 has 2 PI electrons + # ty N1 #1 34 N2 #2 9 C1 #3 3 C2 #4 1 C3 #5 1 C4 #6 1 C5 #7 1 C6 #8 1 H1 #9 36 H2 #10 36 H3 #11 5 H4 #12 5 H5 #13 5 H6 #14 5 H7 #15 5 H8 #16 5 H9 #17 5 H10 #18 5 H11 #19 5 H12 #20 5 H13 #21 5 + # symb N1 #1 NR+ N2 #2 N=C C1 #3 C=N C2 #4 CR C3 #5 CR C4 #6 CR C5 #7 CR C6 #8 CR H1 #9 HNR+ H2 #10 HNR+ H3 #11 HC H4 #12 HC H5 #13 HC H6 #14 HC H7 #15 HC H8 #16 HC H9 #17 HC H10 #18 HC H11 #19 HC H12 #20 HC H13 #21 HC + # char N1 #1 -0.588 N2 #2 -0.265 C1 #3 0.328 C2 #4 0.061 C3 #5 0.503 C4 #6 0.061 C5 #7 0.000 C6 #8 0.000 H1 #9 0.450 H2 #10 0.450 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 H8 #16 0.000 H9 #17 0.000 H10 #18 0.000 H11 #19 0.000 H12 #20 0.000 H13 #21 0.000 + # fchar N1 #1 1.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 H5 #13 0.000 H6 #14 0.000 H7 #15 0.000 H8 #16 0.000 H9 #17 0.000 H10 #18 0.000 H11 #19 0.000 H12 #20 0.000 H13 #21 0.000 +model VIFFEV RING 1 HAS 4 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 2 SUBRING 2 has 6 PI electrons SUBRING 3 has 6 PI electrons SUBRING 4 has 6 PI electrons SUBRING 2 IS AROMATIC SUBRING 3 IS AROMATIC SUBRING 4 IS AROMATIC EXOCYCLIC MULT BOND 11 12 EXOCYCLIC MULT BOND 16 15 SUBRING 1 ALSO RECOGNIZED AS AROMATIC + # ty S1 #1 44 N5 #2 39 C7 #3 78 C8 #4 64 C9 #5 37 C10 #6 37 C11 #7 37 C12 #8 37 C13 #9 63 C14 #10 78 C15 #11 64 C16 #12 37 C17 #13 37 C18 #14 37 C19 #15 37 C20 #16 63 H1 #17 23 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 + # symb S1 #1 STHI N5 #2 NPYL C7 #3 C5 C8 #4 C5B C9 #5 CB C10 #6 CB C11 #7 CB C12 #8 CB C13 #9 C5A C14 #10 C5 C15 #11 C5B C16 #12 CB C17 #13 CB C18 #14 CB C19 #15 CB C20 #16 C5A H1 #17 HPYL H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC + # char S1 #1 -0.109 N5 #2 -0.054 C7 #3 0.082 C8 #4 -0.013 C9 #5 -0.150 C10 #6 -0.150 C11 #7 -0.150 C12 #8 -0.150 C13 #9 -0.152 C14 #10 -0.051 C15 #11 -0.013 C16 #12 -0.150 C17 #13 -0.150 C18 #14 -0.150 C19 #15 -0.150 C20 #16 0.040 H1 #17 0.270 H2 #18 0.150 H3 #19 0.150 H4 #20 0.150 H5 #21 0.150 H6 #22 0.150 H7 #23 0.150 H8 #24 0.150 H9 #25 0.150 + # fchar S1 #1 0.000 N5 #2 0.000 C7 #3 0.000 C8 #4 0.000 C9 #5 0.000 C10 #6 0.000 C11 #7 0.000 C12 #8 0.000 C13 #9 0.000 C14 #10 0.000 C15 #11 0.000 C16 #12 0.000 C17 #13 0.000 C18 #14 0.000 C19 #15 0.000 C20 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 +model VIGPEG RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 2 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 5 SUBRING 2 has 4 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 65 N2 #2 39 C1 #3 63 C2 #4 3 N3 #5 10 C3 #6 3 N4 #7 9 C4 #8 64 C5 #9 64 C6 #10 1 C7 #11 1 C8 #12 1 C9 #13 1 C10 #14 1 C11 #15 1 O1 #16 7 O2 #17 6 H1 #18 5 H2 #19 28 H3 #20 5 H4 #21 5 H5 #22 5 H6 #23 5 H7 #24 5 H8 #25 5 H9 #26 5 H10 #27 5 H11 #28 5 H12 #29 5 H13 #30 5 H14 #31 5 H15 #32 5 H16 #33 21 + # symb N1 #1 N5A N2 #2 NPYL C1 #3 C5A C2 #4 C=ON N3 #5 NC=O C3 #6 C=N N4 #7 N=C C4 #8 C5B C5 #9 C5B C6 #10 CR C7 #11 CR C8 #12 CR C9 #13 CR C10 #14 CR C11 #15 CR O1 #16 O=CN O2 #17 OR H1 #18 HC H2 #19 HNCO H3 #20 HC H4 #21 HC H5 #22 HC H6 #23 HC H7 #24 HC H8 #25 HC H9 #26 HC H10 #27 HC H11 #28 HC H12 #29 HC H13 #30 HC H14 #31 HC H15 #32 HC H16 #33 HOR + # char N1 #1 -0.707 N2 #2 0.314 C1 #3 -0.302 C2 #4 0.716 N3 #5 -0.490 C3 #6 0.450 N4 #7 -0.575 C4 #8 0.414 C5 #9 -0.086 C6 #10 0.256 C7 #11 0.000 C8 #12 0.000 C9 #13 0.280 C10 #14 0.000 C11 #15 0.000 O1 #16 -0.570 O2 #17 -0.680 H1 #18 0.150 H2 #19 0.370 H3 #20 0.060 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 H16 #33 0.400 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 N3 #5 0.000 C3 #6 0.000 N4 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 O1 #16 0.000 O2 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H4 #21 0.000 H5 #22 0.000 H6 #23 0.000 H7 #24 0.000 H8 #25 0.000 H9 #26 0.000 H10 #27 0.000 H11 #28 0.000 H12 #29 0.000 H13 #30 0.000 H14 #31 0.000 H15 #32 0.000 H16 #33 0.000 +model VIGTUA RING 1 HAS 5 SUBRINGS SUBRING 3 IS A 3-MEMBERED RING SUBRING 4 IS A 3-MEMBERED RING SUBRING 1 has 6 PI electrons SUBRING 2 has 0 PI electrons SUBRING 5 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 5 IS AROMATIC + # ty N1 #1 38 N2 #2 38 C1 #3 22 C2 #4 22 C3 #5 22 C4 #6 37 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 37 C10 #12 37 C11 #13 37 C12 #14 22 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 + # symb N1 #1 NPYD N2 #2 NPYD C1 #3 CR3R C2 #4 CR3R C3 #5 CR3R C4 #6 CB C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 CB C10 #12 CB C11 #13 CB C12 #14 CR3R H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC + # char N1 #1 -0.620 N2 #2 -0.620 C1 #3 -0.068 C2 #4 -0.100 C3 #5 -0.068 C4 #6 0.278 C5 #7 0.310 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.150 C9 #11 -0.150 C10 #12 0.310 C11 #13 0.278 C12 #14 -0.100 H1 #15 0.100 H2 #16 0.100 H3 #17 0.100 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 H8 #22 0.100 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 C11 #13 0.000 C12 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 +model VIHHID RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 4 PI electrons RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 15 S2 #2 74 O1 #3 7 N1 #4 9 C1 #5 3 C2 #6 1 C3 #7 3 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 1 H1 #15 5 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 C10G #23 1 H1G #24 5 H2G #25 5 H3G #26 5 + # symb S1 #1 S S2 #2 =S=O O1 #3 O=S= N1 #4 N=C C1 #5 CS=O C2 #6 CR C3 #7 C=N C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CR H1 #15 HC H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC C10G #23 CR H1G #24 HC H2G #25 HC H3G #26 HC + # char S1 #1 -0.282 S2 #2 0.181 O1 #3 -0.500 N1 #4 -0.696 C1 #5 0.399 C2 #6 0.307 C3 #7 0.505 C4 #8 0.086 C5 #9 -0.150 C6 #10 -0.150 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.150 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 H8 #22 0.150 C10G #23 0.000 H1G #24 0.000 H2G #25 0.000 H3G #26 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 O1 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 C10G #23 0.000 H1G #24 0.000 H2G #25 0.000 H3G #26 0.000 +model VIKVIU RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty C1 #1 22 C2 #2 22 C3 #3 22 C4 #4 1 C5 #5 1 C6 #6 3 N1 #7 45 O1 #8 7 O2 #9 6 O3 #10 32 O4 #11 32 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 H6 #17 5 H7 #18 5 H8 #19 5 H9 #20 24 + # symb C1 #1 CR3R C2 #2 CR3R C3 #3 CR3R C4 #4 CR C5 #5 CR C6 #6 COO N1 #7 NO2 O1 #8 O=CO O2 #9 OC=O O3 #10 O2N O4 #11 O2N H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC H6 #17 HC H7 #18 HC H8 #19 HC H9 #20 HOCO + # char C1 #1 0.165 C2 #2 -0.195 C3 #3 -0.195 C4 #4 0.095 C5 #5 0.095 C6 #6 0.720 N1 #7 0.875 O1 #8 -0.570 O2 #9 -0.650 O3 #10 -0.520 O4 #11 -0.520 H1 #12 0.100 H2 #13 0.100 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.500 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 N1 #7 0.000 O1 #8 0.000 O2 #9 0.000 O3 #10 0.000 O4 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 H6 #17 0.000 H7 #18 0.000 H8 #19 0.000 H9 #20 0.000 +model VIKYAP RING 1 HAS 5 SUBRINGS SUBRING 2 IS A 4-MEMBERED RING SUBRING 1 has 0 PI electrons SUBRING 3 has 0 PI electrons SUBRING 4 has 0 PI electrons SUBRING 5 has 0 PI electrons + # ty C1 #1 1 C2 #2 20 C3 #3 20 C4 #4 3 C5 #5 1 C6 #6 1 C7 #7 1 C8 #8 20 C9 #9 20 C10 #10 1 C11 #11 1 BR1 #12 13 N1 #13 45 O1 #14 32 O2 #15 32 O3 #16 7 H1 #17 5 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 + # symb C1 #1 CR C2 #2 CR4R C3 #3 CR4R C4 #4 C=OR C5 #5 CR C6 #6 CR C7 #7 CR C8 #8 CR4R C9 #9 CR4R C10 #10 CR C11 #11 CR BR1 #12 BR N1 #13 NO2 O1 #14 O2N O2 #15 O2N O3 #16 O=CR H1 #17 HC H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC + # char C1 #1 0.470 C2 #2 0.000 C3 #3 0.053 C4 #4 0.456 C5 #5 0.061 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 BR1 #12 -0.230 N1 #13 0.800 O1 #14 -0.520 O2 #15 -0.520 O3 #16 -0.570 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 BR1 #12 0.000 N1 #13 0.000 O1 #14 0.000 O2 #15 0.000 O3 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 +model VIMHII + # ty CL1 #1 77 O1 #2 32 O2 #3 32 O3 #4 32 O4 #5 32 + # symb CL1 #1 CLO4 O1 #2 O4CL O2 #3 O4CL O3 #4 O4CL O4 #5 O4CL + # char CL1 #1 1.300 O1 #2 -0.575 O2 #3 -0.575 O3 #4 -0.575 O4 #5 -0.575 + # fchar CL1 #1 0.000 O1 #2 -0.250 O2 #3 -0.250 O3 #4 -0.250 O4 #5 -0.250 +model VIPXAT RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 7 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 7 SUBRING 2 has 6 PI electrons + # ty N1 #1 9 C1 #2 3 O1 #3 6 C2 #4 2 C3 #5 1 C4 #6 2 N2 #7 55 C5 #8 3 O2 #9 7 C6 #10 2 C7 #11 1 C8 #12 2 N3 #13 55 C9 #14 57 H1 #15 29 H2 #16 5 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 H9 #23 5 H10 #24 36 + # symb N1 #1 N=C C1 #2 C=N O1 #3 OC=N C2 #4 C=C C3 #5 CR C4 #6 C=C N2 #7 NCN+ C5 #8 C=ON O2 #9 O=CN C6 #10 C=C C7 #11 CR C8 #12 C=C N3 #13 NCN+ C9 #14 CNN+ H1 #15 HOCN H2 #16 HC H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC H9 #23 HC H10 #24 HNN+ + # char N1 #1 -0.651 C1 #2 0.586 O1 #3 -0.600 C2 #4 -0.124 C3 #5 0.138 C4 #6 0.191 N2 #7 -0.576 C5 #8 0.937 O2 #9 -0.570 C6 #10 -0.124 C7 #11 0.138 C8 #12 0.191 N3 #13 -0.645 C9 #14 0.910 H1 #15 0.450 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.150 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.150 H10 #24 0.450 + # fchar N1 #1 0.000 C1 #2 0.000 O1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 N2 #7 0.500 C5 #8 0.000 O2 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 N3 #13 0.500 C9 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 H9 #23 0.000 H10 #24 0.000 +model VIRBON RING 1 HAS 2 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING SUBRING 2 has 0 PI electrons + # ty O1 #1 7 O2 #2 7 N1 #3 53 N2 #4 47 C1 #5 3 C2 #6 20 C3 #7 1 C4 #8 1 C5 #9 1 C6 #10 1 C7 #11 20 C8 #12 20 C9 #13 1 C10 #14 3 C11 #15 3 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 5 H11 #26 5 H12 #27 5 H13 #28 5 H14 #29 5 + # symb O1 #1 O=CR O2 #2 O=CR N1 #3 =N= N2 #4 NAZT C1 #5 C=OR C2 #6 CR4R C3 #7 CR C4 #8 CR C5 #9 CR C6 #10 CR C7 #11 CR4R C8 #12 CR4R C9 #13 CR C10 #14 C=OR C11 #15 C=N H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HC H11 #26 HC H12 #27 HC H13 #28 HC H14 #29 HC + # char O1 #1 -0.570 O2 #2 -0.570 N1 #3 0.357 N2 #4 -0.370 C1 #5 0.464 C2 #6 0.053 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.106 C9 #13 0.000 C10 #14 0.517 C11 #15 -0.047 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.060 + # fchar O1 #1 0.000 O2 #2 0.000 N1 #3 0.000 N2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 H11 #26 0.000 H12 #27 0.000 H13 #28 0.000 H14 #29 0.000 +model VIWCOT RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 3 C2 #2 30 C3 #3 20 C4 #4 2 C5 #5 37 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 37 O1 #11 6 O2 #12 7 H1 #13 5 H2 #14 5 H3 #15 5 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 + # symb C1 #1 COO C2 #2 CE4R C3 #3 CR4R C4 #4 C=C C5 #5 CB C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 CB O1 #11 OC=O O2 #12 O=CO H1 #13 HC H2 #14 HC H3 #15 HC H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC + # char C1 #1 0.791 C2 #2 -0.240 C3 #3 0.396 C4 #4 -0.147 C5 #5 0.028 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.150 C9 #9 -0.150 C10 #10 -0.150 O1 #11 -0.408 O2 #12 -0.570 H1 #13 0.000 H2 #14 0.000 H3 #15 0.150 H4 #16 0.150 H5 #17 0.150 H6 #18 0.150 H7 #19 0.150 H8 #20 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 O1 #11 0.000 O2 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 +model VIXRID RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 1 SUBRING 1 has 6 PI electrons PI PAIR ON O OR S 4 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 39 N2 #2 66 N3 #3 9 S1 #4 15 O1 #5 7 C1 #6 63 C2 #7 3 C3 #8 3 C4 #9 64 C5 #10 63 C6 #11 1 H1 #12 5 H2 #13 5 H3 #14 5 H4 #15 5 H5 #16 5 + # symb N1 #1 NPYL N2 #2 N5B N3 #3 N=C S1 #4 S O1 #5 O=CR C1 #6 C5A C2 #7 C=N C3 #8 C=OR C4 #9 C5B C5 #10 C5A C6 #11 CR H1 #12 HC H2 #13 HC H3 #14 HC H4 #15 HC H5 #16 HC + # char N1 #1 0.048 N2 #2 -0.565 N3 #3 -0.520 S1 #4 0.015 O1 #5 -0.570 C1 #6 0.037 C2 #7 0.390 C3 #8 0.655 C4 #9 0.282 C5 #10 -0.237 C6 #11 0.256 H1 #12 0.150 H2 #13 0.060 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 N3 #3 0.000 S1 #4 0.000 O1 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H2 #13 0.000 H3 #14 0.000 H4 #15 0.000 H5 #16 0.000 +model VIXXOP RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty S1 #1 17 S2 #2 17 F1 #3 11 F2 #4 11 C1 #5 20 N1 #6 8 O1 #7 7 O2 #8 7 C2 #9 1 H1 #10 5 H2 #11 5 H3 #12 5 + # symb S1 #1 S=O S2 #2 S=O F1 #3 F F2 #4 F C1 #5 CR4R N1 #6 NR O1 #7 O=S O2 #8 O=S C2 #9 CR H1 #10 HC H2 #11 HC H3 #12 HC + # char S1 #1 0.390 S2 #2 0.390 F1 #3 -0.298 F2 #4 -0.298 C1 #5 0.940 N1 #6 -0.394 O1 #7 -0.500 O2 #8 -0.500 C2 #9 0.270 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 F1 #3 0.000 F2 #4 0.000 C1 #5 0.000 N1 #6 0.000 O1 #7 0.000 O2 #8 0.000 C2 #9 0.000 H1 #10 0.000 H2 #11 0.000 H3 #12 0.000 +model VIYPAU RING 1 HAS 3 SUBRINGS SUBRING 3 IS A 4-MEMBERED RING PI PAIR ON O OR S 2 PI PAIR ON O OR S 3 SUBRING 1 has 4 PI electrons PI PAIR ON O OR S 4 SUBRING 2 has 2 PI electrons + # ty BR1 #1 13 O1 #2 6 O2 #3 6 O3 #4 6 O4 #5 6 O5 #6 7 O6 #7 6 C1 #8 1 C2 #9 1 C3 #10 1 C4 #11 1 C5 #12 1 C6 #13 20 C7 #14 20 C8 #15 20 C9 #16 3 C10 #17 1 H1 #18 5 H2 #19 5 H3 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H4 #29 5 H13 #30 5 + # symb BR1 #1 BR O1 #2 OR O2 #3 OR O3 #4 OR O4 #5 OR O5 #6 O=CO O6 #7 OC=O C1 #8 CR C2 #9 CR C3 #10 CR C4 #11 CR C5 #12 CR C6 #13 CR4R C7 #14 CR4R C8 #15 CR4R C9 #16 COO C10 #17 CR H1 #18 HC H2 #19 HC H3 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H4 #29 HC H13 #30 HC + # char BR1 #1 -0.219 O1 #2 -0.560 O2 #3 -0.560 O3 #4 -0.538 O4 #5 -0.516 O5 #6 -0.570 O6 #7 -0.430 C1 #8 0.000 C2 #9 0.000 C3 #10 0.560 C4 #11 0.560 C5 #12 0.280 C6 #13 0.258 C7 #14 0.258 C8 #15 0.530 C9 #16 0.667 C10 #17 0.280 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H4 #29 0.000 H13 #30 0.000 + # fchar BR1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 O4 #5 0.000 O5 #6 0.000 O6 #7 0.000 C1 #8 0.000 C2 #9 0.000 C3 #10 0.000 C4 #11 0.000 C5 #12 0.000 C6 #13 0.000 C7 #14 0.000 C8 #15 0.000 C9 #16 0.000 C10 #17 0.000 H1 #18 0.000 H2 #19 0.000 H3 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H4 #29 0.000 H13 #30 0.000 +model VOBLAZ RING 1 HAS 3 SUBRINGS PI PAIR ON SP2-N 14 PI PAIR ON SP2-N 13 SUBRING 1 has 4 PI electrons PI PAIR ON SP2-N 14 SUBRING 2 has 4 PI electrons SUBRING 3 has 6 PI electrons SUBRING 3 IS AROMATIC EXOCYCLIC MULT BOND 5 6 EXOCYCLIC MULT BOND 10 9 SUBRING 2 ALSO RECOGNIZED AS AROMATIC + # ty C1 #1 63 C2 #2 1 C3 #3 1 C4 #4 3 C5 #5 63 C6 #6 37 C7 #7 37 C8 #8 37 C9 #9 37 C10 #10 64 C11 #11 1 C12 #12 1 N1 #13 40 N2 #14 39 N3 #15 66 O1 #16 7 H1 #17 28 H2 #18 5 H3 #19 5 H4 #20 5 H5 #21 5 H6 #22 5 H7 #23 5 H8 #24 5 H9 #25 5 H10 #26 5 H11 #27 5 H12 #28 5 H13 #29 5 + # symb C1 #1 C5A C2 #2 CR C3 #3 CR C4 #4 C=ON C5 #5 C5A C6 #6 CB C7 #7 CB C8 #8 CB C9 #9 CB C10 #10 C5B C11 #11 CR C12 #12 CR N1 #13 NC=N N2 #14 NPYL N3 #15 N5B O1 #16 O=CN H1 #17 HNCN H2 #18 HC H3 #19 HC H4 #20 HC H5 #21 HC H6 #22 HC H7 #23 HC H8 #24 HC H9 #25 HC H10 #26 HC H11 #27 HC H12 #28 HC H13 #29 HC + # char C1 #1 0.271 C2 #2 0.369 C3 #3 0.061 C4 #4 0.518 C5 #5 -0.152 C6 #6 -0.150 C7 #7 -0.150 C8 #8 -0.150 C9 #9 -0.150 C10 #10 0.227 C11 #11 0.000 C12 #12 0.000 N1 #13 -0.853 N2 #14 0.294 N3 #15 -0.565 O1 #16 -0.570 H1 #17 0.400 H2 #18 0.000 H3 #19 0.000 H4 #20 0.150 H5 #21 0.150 H6 #22 0.150 H7 #23 0.150 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 C8 #8 0.000 C9 #9 0.000 C10 #10 0.000 C11 #11 0.000 C12 #12 0.000 N1 #13 0.000 N2 #14 0.000 N3 #15 0.000 O1 #16 0.000 H1 #17 0.000 H2 #18 0.000 H3 #19 0.000 H4 #20 0.000 H5 #21 0.000 H6 #22 0.000 H7 #23 0.000 H8 #24 0.000 H9 #25 0.000 H10 #26 0.000 H11 #27 0.000 H12 #28 0.000 H13 #29 0.000 +model VOBWOY RING 1 HAS 2 SUBRINGS PI PAIR ON SP2-N 5 SUBRING 1 has 4 PI electrons SUBRING 2 has 6 PI electrons SUBRING 2 IS AROMATIC + # ty C1 #1 1 S1 #2 18 O1 #3 32 O2 #4 32 N1 #5 43 C2 #6 1 C3 #7 37 C4 #8 37 C5 #9 37 C6 #10 37 C7 #11 37 C8 #12 37 H1 #13 5 H2 #14 5 H3 #15 28 H4 #16 5 H5 #17 5 H6 #18 5 H7 #19 5 H8 #20 5 H9 #21 5 + # symb C1 #1 CR S1 #2 SO2N O1 #3 O2S O2 #4 O2S N1 #5 NSO2 C2 #6 CR C3 #7 CB C4 #8 CB C5 #9 CB C6 #10 CB C7 #11 CB C8 #12 CB H1 #13 HC H2 #14 HC H3 #15 HNSO H4 #16 HC H5 #17 HC H6 #18 HC H7 #19 HC H8 #20 HC H9 #21 HC + # char C1 #1 0.249 S1 #2 1.333 O1 #3 -0.650 O2 #4 -0.650 N1 #5 -0.914 C2 #6 0.499 C3 #7 -0.150 C4 #8 -0.150 C5 #9 -0.150 C6 #10 -0.150 C7 #11 -0.143 C8 #12 -0.143 H1 #13 0.000 H2 #14 0.000 H3 #15 0.420 H4 #16 0.000 H5 #17 0.000 H6 #18 0.150 H7 #19 0.150 H8 #20 0.150 H9 #21 0.150 + # fchar C1 #1 0.000 S1 #2 0.000 O1 #3 0.000 O2 #4 0.000 N1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 H1 #13 0.000 H2 #14 0.000 H3 #15 0.000 H4 #16 0.000 H5 #17 0.000 H6 #18 0.000 H7 #19 0.000 H8 #20 0.000 H9 #21 0.000 +model VOFBOH RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty BR1 #1 13 BR2 #2 13 O1 #3 6 O2 #4 7 C1 #5 22 C2 #6 22 C3 #7 22 C4 #8 1 C5 #9 3 C6 #10 37 C7 #11 37 C8 #12 37 C9 #13 37 C10 #14 37 C11 #15 37 H1 #16 5 H2 #17 5 H3 #18 5 H4 #19 5 H5 #20 5 H6 #21 5 H7 #22 5 H8 #23 5 H9 #24 5 H10 #25 24 + # symb BR1 #1 BR BR2 #2 BR O1 #3 OC=O O2 #4 O=CO C1 #5 CR3R C2 #6 CR3R C3 #7 CR3R C4 #8 CR C5 #9 COO C6 #10 CB C7 #11 CB C8 #12 CB C9 #13 CB C10 #14 CB C11 #15 CB H1 #16 HC H2 #17 HC H3 #18 HC H4 #19 HC H5 #20 HC H6 #21 HC H7 #22 HC H8 #23 HC H9 #24 HC H10 #25 HOCO + # char BR1 #1 -0.143 BR2 #2 -0.143 O1 #3 -0.650 O2 #4 -0.570 C1 #5 0.286 C2 #6 -0.063 C3 #7 -0.200 C4 #8 0.156 C5 #9 0.659 C6 #10 -0.032 C7 #11 -0.150 C8 #12 -0.150 C9 #13 -0.150 C10 #14 -0.150 C11 #15 -0.150 H1 #16 0.100 H2 #17 0.100 H3 #18 0.000 H4 #19 0.000 H5 #20 0.150 H6 #21 0.150 H7 #22 0.150 H8 #23 0.150 H9 #24 0.150 H10 #25 0.500 + # fchar BR1 #1 0.000 BR2 #2 0.000 O1 #3 0.000 O2 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 C5 #9 0.000 C6 #10 0.000 C7 #11 0.000 C8 #12 0.000 C9 #13 0.000 C10 #14 0.000 C11 #15 0.000 H1 #16 0.000 H2 #17 0.000 H3 #18 0.000 H4 #19 0.000 H5 #20 0.000 H6 #21 0.000 H7 #22 0.000 H8 #23 0.000 H9 #24 0.000 H10 #25 0.000 +model VOFCAU RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty BR1 #1 13 CL1 #2 12 CL2 #3 12 C1 #4 22 C2 #5 22 C3 #6 22 C4 #7 1 C5 #8 37 C6 #9 37 C7 #10 37 C8 #11 37 C9 #12 37 C10 #13 37 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 + # symb BR1 #1 BR CL1 #2 CL CL2 #3 CL C1 #4 CR3R C2 #5 CR3R C3 #6 CR3R C4 #7 CR C5 #8 CB C6 #9 CB C7 #10 CB C8 #11 CB C9 #12 CB C10 #13 CB H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC + # char BR1 #1 -0.230 CL1 #2 -0.227 CL2 #3 -0.227 C1 #4 0.455 C2 #5 -0.063 C3 #6 -0.200 C4 #7 0.325 C5 #8 -0.032 C6 #9 -0.150 C7 #10 -0.150 C8 #11 -0.150 C9 #12 -0.150 C10 #13 -0.150 H1 #14 0.100 H2 #15 0.100 H3 #16 0.000 H4 #17 0.000 H5 #18 0.150 H6 #19 0.150 H7 #20 0.150 H8 #21 0.150 H9 #22 0.150 + # fchar BR1 #1 0.000 CL1 #2 0.000 CL2 #3 0.000 C1 #4 0.000 C2 #5 0.000 C3 #6 0.000 C4 #7 0.000 C5 #8 0.000 C6 #9 0.000 C7 #10 0.000 C8 #11 0.000 C9 #12 0.000 C10 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 +model VOJGEG + # ty O3 #1 6 O4 #2 51 C3 #3 1 C4 #4 3 H2 #5 24 H3 #6 52 H10 #7 5 H11 #8 5 H12 #9 5 + # symb O3 #1 OC=O O4 #2 O=+ C3 #3 CR C4 #4 C=O H2 #5 HOCO H3 #6 HO=+ H10 #7 HC H11 #8 HC H12 #9 HC + # char O3 #1 -0.650 O4 #2 -0.450 C3 #3 0.061 C4 #4 1.039 H2 #5 0.500 H3 #6 0.500 H10 #7 0.000 H11 #8 0.000 H12 #9 0.000 + # fchar O3 #1 0.000 O4 #2 1.000 C3 #3 0.000 C4 #4 0.000 H2 #5 0.000 H3 #6 0.000 H10 #7 0.000 H11 #8 0.000 H12 #9 0.000 +model VOJJIN RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty P1 #1 25 O1 #2 32 N1 #3 58 O2 #4 32 N2 #5 40 C1 #6 37 C2 #7 37 C3 #8 37 C4 #9 37 C5 #10 37 C6 #11 1 H1 #12 71 H3 #13 5 H4 #14 5 H5 #15 5 H6 #16 5 H7 #17 28 H8 #18 28 H13 #19 5 H14 #20 5 + # symb P1 #1 PO2 O1 #2 O2P N1 #3 NPD+ O2 #4 O2P N2 #5 NC=N C1 #6 CB C2 #7 CB C3 #8 CB C4 #9 CB C5 #10 CB C6 #11 CR H1 #12 HP H3 #13 HC H4 #14 HC H5 #15 HC H6 #16 HC H7 #17 HNCN H8 #18 HNCN H13 #19 HC H14 #20 HC + # char P1 #1 0.936 O1 #2 -0.950 N1 #3 -0.210 O2 #4 -0.950 N2 #5 -0.900 C1 #6 0.461 C2 #7 -0.150 C3 #8 -0.150 C4 #9 -0.150 C5 #10 0.211 C6 #11 0.488 H1 #12 -0.036 H3 #13 0.150 H4 #14 0.150 H5 #15 0.150 H6 #16 0.150 H7 #17 0.400 H8 #18 0.400 H13 #19 0.000 H14 #20 0.000 + # fchar P1 #1 0.000 O1 #2 -0.500 N1 #3 1.000 O2 #4 -0.500 N2 #5 0.000 C1 #6 0.000 C2 #7 0.000 C3 #8 0.000 C4 #9 0.000 C5 #10 0.000 C6 #11 0.000 H1 #12 0.000 H3 #13 0.000 H4 #14 0.000 H5 #15 0.000 H6 #16 0.000 H7 #17 0.000 H8 #18 0.000 H13 #19 0.000 H14 #20 0.000 +model VUWXUG + # ty O1 #1 35 C1 #2 3 N1 #3 10 O2 #4 7 H1 #5 28 C1A #6 3 N1A #7 10 O2A #8 7 O1A #9 35 H1A #10 28 + # symb O1 #1 OM C1 #2 C=ON N1 #3 NC=O O2 #4 O=CN H1 #5 HNCO C1A #6 C=ON N1A #7 NC=O O2A #8 O=CN O1A #9 OM H1A #10 HNCO + # char O1 #1 -0.712 C1 #2 0.630 N1 #3 -0.718 O2 #4 -0.570 H1 #5 0.370 C1A #6 0.630 N1A #7 -0.718 O2A #8 -0.570 O1A #9 -0.712 H1A #10 0.370 + # fchar O1 #1 -1.000 C1 #2 0.000 N1 #3 0.000 O2 #4 0.000 H1 #5 0.000 C1A #6 0.000 N1A #7 0.000 O2A #8 0.000 O1A #9 -1.000 H1A #10 0.000 +model VUXGOK RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty O1 #1 59 O2 #2 7 C1 #3 63 C2 #4 64 C3 #5 64 C4 #6 63 C5 #7 37 C6 #8 37 C7 #9 37 C8 #10 37 C9 #11 3 C10 #12 1 N1 #13 40 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 28 H9 #22 28 + # symb O1 #1 OFUR O2 #2 O=CR C1 #3 C5A C2 #4 C5B C3 #5 C5B C4 #6 C5A C5 #7 CB C6 #8 CB C7 #9 CB C8 #10 CB C9 #11 C=OR C10 #12 CR N1 #13 NC=C H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HNCC H9 #22 HNCC + # char O1 #1 -0.280 O2 #2 -0.570 C1 #3 0.055 C2 #4 0.083 C3 #5 0.000 C4 #6 0.140 C5 #7 -0.150 C6 #8 -0.150 C7 #9 -0.150 C8 #10 -0.150 C9 #11 0.594 C10 #12 0.061 N1 #13 -0.883 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.400 H9 #22 0.400 + # fchar O1 #1 0.000 O2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 C5 #7 0.000 C6 #8 0.000 C7 #9 0.000 C8 #10 0.000 C9 #11 0.000 C10 #12 0.000 N1 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 +model VUXPUZ RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 4 SUBRING 1 has 6 PI electrons SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty S1 #1 18 O1 #2 32 O2 #3 32 O3 #4 59 N1 #5 43 N2 #6 65 C1 #7 1 C2 #8 64 C3 #9 64 C4 #10 63 C5 #11 37 C6 #12 37 C7 #13 37 C8 #14 37 H1 #15 28 H2 #16 28 H3 #17 5 H4 #18 5 H5 #19 5 H6 #20 5 H7 #21 5 H8 #22 5 + # symb S1 #1 SO2N O1 #2 O2S O2 #3 O2S O3 #4 OFUR N1 #5 NSO2 N2 #6 N5A C1 #7 CR C2 #8 C5B C3 #9 C5B C4 #10 C5A C5 #11 CB C6 #12 CB C7 #13 CB C8 #14 CB H1 #15 HNSO H2 #16 HNSO H3 #17 HC H4 #18 HC H5 #19 HC H6 #20 HC H7 #21 HC H8 #22 HC + # char S1 #1 1.333 O1 #2 -0.650 O2 #3 -0.650 O3 #4 -0.019 N1 #5 -0.978 N2 #6 -0.410 C1 #7 0.286 C2 #8 0.108 C3 #9 0.000 C4 #10 0.140 C5 #11 -0.150 C6 #12 -0.150 C7 #13 -0.150 C8 #14 -0.150 H1 #15 0.420 H2 #16 0.420 H3 #17 0.000 H4 #18 0.000 H5 #19 0.150 H6 #20 0.150 H7 #21 0.150 H8 #22 0.150 + # fchar S1 #1 0.000 O1 #2 0.000 O2 #3 0.000 O3 #4 0.000 N1 #5 0.000 N2 #6 0.000 C1 #7 0.000 C2 #8 0.000 C3 #9 0.000 C4 #10 0.000 C5 #11 0.000 C6 #12 0.000 C7 #13 0.000 C8 #14 0.000 H1 #15 0.000 H2 #16 0.000 H3 #17 0.000 H4 #18 0.000 H5 #19 0.000 H6 #20 0.000 H7 #21 0.000 H8 #22 0.000 +model VUXREL RING 1 HAS 2 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons PI PAIR ON SP2-N 8 SUBRING 2 has 6 PI electrons SUBRING 1 IS AROMATIC SUBRING 2 IS AROMATIC + # ty O1 #1 59 C1 #2 63 C2 #3 64 C3 #4 78 C4 #5 78 C5 #6 64 C6 #7 63 N1 #8 39 C7 #9 3 O2 #10 7 O3 #11 6 C8 #12 1 C9 #13 1 H1 #14 5 H2 #15 5 H3 #16 5 H4 #17 23 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 + # symb O1 #1 OFUR C1 #2 C5A C2 #3 C5B C3 #4 C5 C4 #5 C5 C5 #6 C5B C6 #7 C5A N1 #8 NPYL C7 #9 COO O2 #10 O=CO O3 #11 OC=O C8 #12 CR C9 #13 CR H1 #14 HC H2 #15 HC H3 #16 HC H4 #17 HPYL H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC + # char O1 #1 -0.309 C1 #2 -0.010 C2 #3 -0.163 C3 #4 -0.051 C4 #5 0.182 C5 #6 -0.163 C6 #7 -0.237 N1 #8 -0.054 C7 #9 0.805 O2 #10 -0.570 O3 #11 -0.430 C8 #12 0.280 C9 #13 0.000 H1 #14 0.150 H2 #15 0.150 H3 #16 0.150 H4 #17 0.270 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 + # fchar O1 #1 0.000 C1 #2 0.000 C2 #3 0.000 C3 #4 0.000 C4 #5 0.000 C5 #6 0.000 C6 #7 0.000 N1 #8 0.000 C7 #9 0.000 O2 #10 0.000 O3 #11 0.000 C8 #12 0.000 C9 #13 0.000 H1 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 +model ZZZIZA01 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 N7 #3 61 C9 #4 60 H2 #5 5 C2F #6 37 C2B #7 37 C2D #8 37 H2F #9 5 C1D #10 37 H2B #11 5 H2D #12 5 N7D #13 61 C9D #14 60 + # symb C1 #1 CB C2 #2 CB N7 #3 NR% C9 #4 C% H2 #5 HC C2F #6 CB C2B #7 CB C2D #8 CB H2F #9 HC C1D #10 CB H2B #11 HC H2D #12 HC N7D #13 NR% C9D #14 C% + # char C1 #1 0.138 C2 #2 -0.150 N7 #3 0.232 C9 #4 -0.370 H2 #5 0.150 C2F #6 -0.150 C2B #7 -0.150 C2D #8 -0.150 H2F #9 0.150 C1D #10 0.138 H2B #11 0.150 H2D #12 0.150 N7D #13 0.232 C9D #14 -0.370 + # fchar C1 #1 0.000 C2 #2 0.000 N7 #3 0.000 C9 #4 0.000 H2 #5 0.000 C2F #6 0.000 C2B #7 0.000 C2D #8 0.000 H2F #9 0.000 C1D #10 0.000 H2B #11 0.000 H2D #12 0.000 N7D #13 0.000 C9D #14 0.000 +model ZZZMVU10 RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC RING 2 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty S1 #1 18 S2 #2 15 S3 #3 15 S4 #4 18 O1 #5 32 O2 #6 32 O3 #7 32 O4 #8 32 C1 #9 37 C2 #10 37 C3 #11 37 C4 #12 37 C5 #13 37 C6 #14 37 C7 #15 37 C8 #16 37 C9 #17 37 C10 #18 37 C11 #19 37 C12 #20 37 H1 #21 5 H2 #22 5 H3 #23 5 H4 #24 5 H5 #25 5 H6 #26 5 H7 #27 5 H8 #28 5 H9 #29 5 H10 #30 5 + # symb S1 #1 SO2 S2 #2 S S3 #3 S S4 #4 SO2 O1 #5 O2S O2 #6 O2S O3 #7 O2S O4 #8 O2S C1 #9 CB C2 #10 CB C3 #11 CB C4 #12 CB C5 #13 CB C6 #14 CB C7 #15 CB C8 #16 CB C9 #17 CB C10 #18 CB C11 #19 CB C12 #20 CB H1 #21 HC H2 #22 HC H3 #23 HC H4 #24 HC H5 #25 HC H6 #26 HC H7 #27 HC H8 #28 HC H9 #29 HC H10 #30 HC + # char S1 #1 1.427 S2 #2 -0.118 S3 #3 -0.118 S4 #4 1.427 O1 #5 -0.650 O2 #6 -0.650 O3 #7 -0.650 O4 #8 -0.650 C1 #9 -0.009 C2 #10 -0.150 C3 #11 -0.150 C4 #12 -0.150 C5 #13 -0.150 C6 #14 -0.150 C7 #15 -0.009 C8 #16 -0.150 C9 #17 -0.150 C10 #18 -0.150 C11 #19 -0.150 C12 #20 -0.150 H1 #21 0.150 H2 #22 0.150 H3 #23 0.150 H4 #24 0.150 H5 #25 0.150 H6 #26 0.150 H7 #27 0.150 H8 #28 0.150 H9 #29 0.150 H10 #30 0.150 + # fchar S1 #1 0.000 S2 #2 0.000 S3 #3 0.000 S4 #4 0.000 O1 #5 0.000 O2 #6 0.000 O3 #7 0.000 O4 #8 0.000 C1 #9 0.000 C2 #10 0.000 C3 #11 0.000 C4 #12 0.000 C5 #13 0.000 C6 #14 0.000 C7 #15 0.000 C8 #16 0.000 C9 #17 0.000 C10 #18 0.000 C11 #19 0.000 C12 #20 0.000 H1 #21 0.000 H2 #22 0.000 H3 #23 0.000 H4 #24 0.000 H5 #25 0.000 H6 #26 0.000 H7 #27 0.000 H8 #28 0.000 H9 #29 0.000 H10 #30 0.000 +model ZZZVCQ01 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 4 SUBRING 1 has 2 PI electrons + # ty I1 #1 14 O1 #2 7 O2 #3 7 N1 #4 10 C1 #5 3 C2 #6 1 C3 #7 1 C4 #8 3 H1 #9 5 H2 #10 5 H3 #11 5 H4 #12 5 + # symb I1 #1 I O1 #2 O=CN O2 #3 O=CN N1 #4 NC=O C1 #5 C=ON C2 #6 CR C3 #7 CR C4 #8 C=ON H1 #9 HC H2 #10 HC H3 #11 HC H4 #12 HC + # char I1 #1 0.036 O1 #2 -0.570 O2 #3 -0.570 N1 #4 -0.156 C1 #5 0.569 C2 #6 0.061 C3 #7 0.061 C4 #8 0.569 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 + # fchar I1 #1 0.000 O1 #2 0.000 O2 #3 0.000 N1 #4 0.000 C1 #5 0.000 C2 #6 0.000 C3 #7 0.000 C4 #8 0.000 H1 #9 0.000 H2 #10 0.000 H3 #11 0.000 H4 #12 0.000 +model AR14A RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty O1 #1 59 C2 #2 63 N3 #3 66 C4 #4 64 C5 #5 63 H6 #6 5 H7 #7 5 H8 #8 5 + # symb O1 #1 OFUR C2 #2 C5A N3 #3 N5B C4 #4 C5B C5 #5 C5A H6 #6 HC H7 #7 HC H8 #8 HC + # char O1 #1 -0.280 C2 #2 0.328 N3 #3 -0.565 C4 #4 0.077 C5 #5 -0.010 H6 #6 0.150 H7 #7 0.150 H8 #8 0.150 + # fchar O1 #1 0.000 C2 #2 0.000 N3 #3 0.000 C4 #4 0.000 C5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 +model CA04A + # ty O1 #1 7 C2 #2 3 C3 #3 3 O4 #4 7 O5 #5 6 H6 #6 24 H7 #7 5 + # symb O1 #1 O=CR C2 #2 C=OR C3 #3 COO O4 #4 O=CO O5 #5 OC=O H6 #6 HOCO H7 #7 HC + # char O1 #1 -0.570 C2 #2 0.510 C3 #3 0.720 O4 #4 -0.570 O5 #5 -0.650 H6 #6 0.500 H7 #7 0.060 + # fchar O1 #1 0.000 C2 #2 0.000 C3 #3 0.000 O4 #4 0.000 O5 #5 0.000 H6 #6 0.000 H7 #7 0.000 +model CE05A + # ty C1 #1 2 C2 #2 2 O3 #3 6 C4 #4 3 O5 #5 7 H6 #6 5 H7 #7 5 H8 #8 5 H9 #9 5 + # symb C1 #1 C=C C2 #2 C=C O3 #3 OC=O C4 #4 COO O5 #5 O=CO H6 #6 HC H7 #7 HC H8 #8 HC H9 #9 HC + # char C1 #1 -0.300 C2 #2 -0.073 O3 #3 -0.227 C4 #4 0.660 O5 #5 -0.570 H6 #6 0.150 H7 #7 0.150 H8 #8 0.150 H9 #9 0.060 + # fchar C1 #1 0.000 C2 #2 0.000 O3 #3 0.000 C4 #4 0.000 O5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 H9 #9 0.000 +model CO01A + # ty C1 #1 3 O2 #2 7 H3 #3 5 H4 #4 5 + # symb C1 #1 C=OR O2 #2 O=CR H3 #3 HC H4 #4 HC + # char C1 #1 0.450 O2 #2 -0.570 H3 #3 0.060 H4 #4 0.060 + # fchar C1 #1 0.000 O2 #2 0.000 H3 #3 0.000 H4 #4 0.000 +model CO08A + # ty C1 #1 2 C2 #2 1 C3 #3 3 O4 #4 7 H5 #5 5 C4 #6 2 H8 #7 5 H9 #8 5 H10 #9 5 H2 #10 5 H3 #11 5 + # symb C1 #1 C=C C2 #2 CR C3 #3 C=OR O4 #4 O=CR H5 #5 HC C4 #6 C=C H8 #7 HC H9 #8 HC H10 #9 HC H2 #10 HC H3 #11 HC + # char C1 #1 -0.288 C2 #2 0.199 C3 #3 0.449 O4 #4 -0.570 H5 #5 0.150 C4 #6 -0.300 H8 #7 0.000 H9 #8 0.000 H10 #9 0.060 H2 #10 0.150 H3 #11 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 O4 #4 0.000 H5 #5 0.000 C4 #6 0.000 H8 #7 0.000 H9 #8 0.000 H10 #9 0.000 H2 #10 0.000 H3 #11 0.000 +model HL08A RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty Cl1 #1 12 C3 #2 20 C2 #3 20 C4 #4 20 C5 #5 20 H6 #6 5 H7 #7 5 H8 #8 5 H9 #9 5 H10 #10 5 H11 #11 5 H12 #12 5 + # symb Cl1 #1 CL C3 #2 CR4R C2 #3 CR4R C4 #4 CR4R C5 #5 CR4R H6 #6 HC H7 #7 HC H8 #8 HC H9 #9 HC H10 #10 HC H11 #11 HC H12 #12 HC + # char Cl1 #1 -0.290 C3 #2 0.290 C2 #3 0.000 C4 #4 0.000 C5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 H9 #9 0.000 H10 #10 0.000 H11 #11 0.000 H12 #12 0.000 + # fchar Cl1 #1 0.000 C3 #2 0.000 C2 #3 0.000 C4 #4 0.000 C5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 H9 #9 0.000 H10 #10 0.000 H11 #11 0.000 H12 #12 0.000 +model IM02A + # ty C1 #1 3 N2 #2 9 C3 #3 1 H4 #4 5 H5 #5 5 H6 #6 5 H7 #7 5 H8 #8 5 + # symb C1 #1 C=N N2 #2 N=C C3 #3 CR H4 #4 HC H5 #5 HC H6 #6 HC H7 #7 HC H8 #8 HC + # char C1 #1 0.330 N2 #2 -0.696 C3 #3 0.246 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.060 H8 #8 0.060 + # fchar C1 #1 0.000 N2 #2 0.000 C3 #3 0.000 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 +model NC10A + # ty C1 #1 3 N2 #2 54 C3 #3 1 H4 #4 5 H5 #5 5 H6 #6 36 H7 #7 5 H8 #8 5 H9 #9 5 + # symb C1 #1 C=N N2 #2 N+=C C3 #3 CR H4 #4 HC H5 #5 HC H6 #6 HNC+ H7 #7 HC H8 #8 HC H9 #9 HC + # char C1 #1 0.280 N2 #2 -0.146 C3 #3 0.346 H4 #4 0.060 H5 #5 0.060 H6 #6 0.400 H7 #7 0.000 H8 #8 0.000 H9 #9 0.000 + # fchar C1 #1 0.000 N2 #2 1.000 C3 #3 0.000 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 H8 #8 0.000 H9 #9 0.000 +model NC13A + # ty N1 #1 54 C2 #2 3 H3 #3 36 H4 #4 5 H5 #5 5 H6 #6 36 + # symb N1 #1 N+=C C2 #2 C=N H3 #3 HNC+ H4 #4 HC H5 #5 HC H6 #6 HNC+ + # char N1 #1 -0.200 C2 #2 0.280 H3 #3 0.400 H4 #4 0.060 H5 #5 0.060 H6 #6 0.400 + # fchar N1 #1 1.000 C2 #2 0.000 H3 #3 0.000 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 +model NH10A + # ty N1 #1 8 H2 #2 23 H3 #3 23 H4 #4 23 + # symb N1 #1 NR H2 #2 HNR H3 #3 HNR H4 #4 HNR + # char N1 #1 -1.080 H2 #2 0.360 H3 #3 0.360 H4 #4 0.360 + # fchar N1 #1 0.000 H2 #2 0.000 H3 #3 0.000 H4 #4 0.000 +model NH20A + # ty C1 #1 1 N1 #2 68 C3 #3 1 C4 #4 1 O1 #5 32 H2 #6 23 H1 #7 5 H3 #8 5 H4 #9 5 H5 #10 5 H6 #11 5 H7 #12 5 H8 #13 5 H9 #14 5 + # symb C1 #1 CR N1 #2 N3OX C3 #3 CR C4 #4 CR O1 #5 OXN H2 #6 HNOX H1 #7 HC H3 #8 HC H4 #9 HC H5 #10 HC H6 #11 HC H7 #12 HC H8 #13 HC H9 #14 HC + # char C1 #1 0.256 N1 #2 -0.122 C3 #3 0.256 C4 #4 0.000 O1 #5 -0.750 H2 #6 0.360 H1 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 H6 #11 0.000 H7 #12 0.000 H8 #13 0.000 H9 #14 0.000 + # fchar C1 #1 0.000 N1 #2 0.000 C3 #3 0.000 C4 #4 0.000 O1 #5 0.000 H2 #6 0.000 H1 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 H6 #11 0.000 H7 #12 0.000 H8 #13 0.000 H9 #14 0.000 +model NH22A + # ty H1 #1 23 N1 #2 68 C3 #3 1 C4 #4 1 O1 #5 32 H2 #6 23 H5 #7 5 H6 #8 5 H7 #9 5 H8 #10 5 H9 #11 5 + # symb H1 #1 HNOX N1 #2 N3OX C3 #3 CR C4 #4 CR O1 #5 OXN H2 #6 HNOX H5 #7 HC H6 #8 HC H7 #9 HC H8 #10 HC H9 #11 HC + # char H1 #1 0.360 N1 #2 -0.226 C3 #3 0.256 C4 #4 0.000 O1 #5 -0.750 H2 #6 0.360 H5 #7 0.000 H6 #8 0.000 H7 #9 0.000 H8 #10 0.000 H9 #11 0.000 + # fchar H1 #1 0.000 N1 #2 0.000 C3 #3 0.000 C4 #4 0.000 O1 #5 0.000 H2 #6 0.000 H5 #7 0.000 H6 #8 0.000 H7 #9 0.000 H8 #10 0.000 H9 #11 0.000 +model NH23A + # ty H1 #1 23 N1 #2 8 C3 #3 1 C4 #4 1 O1 #5 6 H4 #6 5 H5 #7 5 H6 #8 5 H7 #9 5 H8 #10 5 H9 #11 21 + # symb H1 #1 HNR N1 #2 NR C3 #3 CR C4 #4 CR O1 #5 -O- H4 #6 HC H5 #7 HC H6 #8 HC H7 #9 HC H8 #10 HC H9 #11 HO + # char H1 #1 0.360 N1 #2 -0.730 C3 #3 0.270 C4 #4 0.000 O1 #5 -0.300 H4 #6 0.000 H5 #7 0.000 H6 #8 0.000 H7 #9 0.000 H8 #10 0.000 H9 #11 0.400 + # fchar H1 #1 0.000 N1 #2 0.000 C3 #3 0.000 C4 #4 0.000 O1 #5 0.000 H4 #6 0.000 H5 #7 0.000 H6 #8 0.000 H7 #9 0.000 H8 #10 0.000 H9 #11 0.000 +model OH10A + # ty C1 #1 2 C2 #2 2 O3 #3 6 H4 #4 5 H5 #5 5 H6 #6 5 H7 #7 29 + # symb C1 #1 C=C C2 #2 C=C O3 #3 OC=C H4 #4 HC H5 #5 HC H6 #6 HC H7 #7 HOCC + # char C1 #1 -0.300 C2 #2 -0.073 O3 #3 -0.527 H4 #4 0.150 H5 #5 0.150 H6 #6 0.150 H7 #7 0.450 + # fchar C1 #1 0.000 C2 #2 0.000 O3 #3 0.000 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 +model SR01A + # ty S1 #1 15 H2 #2 71 H3 #3 71 + # symb S1 #1 S H2 #2 HS H3 #3 HS + # char S1 #1 -0.360 H2 #2 0.180 H3 #3 0.180 + # fchar S1 #1 0.000 H2 #2 0.000 H3 #3 0.000 +model SR05A + # ty S1 #1 15 S2 #2 15 C3 #3 1 H4 #4 71 H5 #5 5 H6 #6 5 H7 #7 5 + # symb S1 #1 S S2 #2 S C3 #3 CR H4 #4 HS H5 #5 HC H6 #6 HC H7 #7 HC + # char S1 #1 -0.180 S2 #2 -0.230 C3 #3 0.230 H4 #4 0.180 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 + # fchar S1 #1 0.000 S2 #2 0.000 C3 #3 0.000 H4 #4 0.000 H5 #5 0.000 H6 #6 0.000 H7 #7 0.000 +model SR07A RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 S1 #4 15 C5 #5 37 H6 #6 5 C7 #7 37 H8 #8 5 H9 #9 71 C10 #10 37 H11 #11 5 H12 #12 5 H13 #13 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB S1 #4 S C5 #5 CB H6 #6 HC C7 #7 CB H8 #8 HC H9 #9 HS C10 #10 CB H11 #11 HC H12 #12 HC H13 #13 HC + # char C1 #1 0.102 C2 #2 -0.150 C3 #3 -0.150 S1 #4 -0.281 C5 #5 -0.150 H6 #6 0.150 C7 #7 -0.150 H8 #8 0.150 H9 #9 0.180 C10 #10 -0.150 H11 #11 0.150 H12 #12 0.150 H13 #13 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 S1 #4 0.000 C5 #5 0.000 H6 #6 0.000 C7 #7 0.000 H8 #8 0.000 H9 #9 0.000 C10 #10 0.000 H11 #11 0.000 H12 #12 0.000 H13 #13 0.000 +model AN05A + # ty C1 #1 1 O1 #2 35 H1 #3 5 H2 #4 5 H3 #5 5 + # symb C1 #1 CR O1 #2 OM H1 #3 HC H2 #4 HC H3 #5 HC + # char C1 #1 -0.073 O1 #2 -0.927 H1 #3 0.000 H2 #4 0.000 H3 #5 0.000 + # fchar C1 #1 0.000 O1 #2 -1.000 H1 #3 0.000 H2 #4 0.000 H3 #5 0.000 +model AN06A + # ty C1 #1 1 S1 #2 72 H1 #3 5 H2 #4 5 H3 #5 5 + # symb C1 #1 CR S1 #2 SM H1 #3 HC H2 #4 HC H3 #5 HC + # char C1 #1 0.050 S1 #2 -1.050 H1 #3 0.000 H2 #4 0.000 H3 #5 0.000 + # fchar C1 #1 0.000 S1 #2 -1.000 H1 #3 0.000 H2 #4 0.000 H3 #5 0.000 +model AN08A + # ty S1 #1 72 C2 #2 2 C3 #3 2 H1 #4 5 H2 #5 5 H3 #6 5 + # symb S1 #1 SM C2 #2 C=C C3 #3 C=C H1 #4 HC H2 #5 HC H3 #6 HC + # char S1 #1 -0.950 C2 #2 -0.200 C3 #3 -0.300 H1 #4 0.150 H2 #5 0.150 H3 #6 0.150 + # fchar S1 #1 -1.000 C2 #2 0.000 C3 #3 0.000 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 +model AN11A RING 1 HAS 1 SUBRINGS PI PAIR ON DICOORD N 1 SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty N1 #1 76 N2 #2 76 C3 #3 78 N4 #4 76 N3 #5 76 H1 #6 5 + # symb N1 #1 N5M N2 #2 N5M C3 #3 C5 N4 #4 N5M N3 #5 N5M H1 #6 HC + # char N1 #1 -0.250 N2 #2 -0.588 C3 #3 0.525 N4 #4 -0.588 N3 #5 -0.250 H1 #6 0.150 + # fchar N1 #1 -0.250 N2 #2 -0.250 C3 #3 0.000 N4 #4 -0.250 N3 #5 -0.250 H1 #6 0.000 +model AN12A + # ty C1 #1 2 C2 #2 2 N1 #3 62 H1 #4 23 H2 #5 5 H3 #6 5 H4 #7 5 + # symb C1 #1 C=C C2 #2 C=C N1 #3 NM H1 #4 HNM H2 #5 HC H3 #6 HC H4 #7 HC + # char C1 #1 -0.350 C2 #2 -0.300 N1 #3 -0.950 H1 #4 0.150 H2 #5 0.150 H3 #6 0.150 H4 #7 0.150 + # fchar C1 #1 0.000 C2 #2 0.000 N1 #3 -1.000 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 H4 #7 0.000 +model HL11A RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty F1 #1 11 C2 #2 22 C3 #3 22 C4 #4 22 H1 #5 5 H2 #6 5 H3 #7 5 H4 #8 5 H5 #9 5 + # symb F1 #1 F C2 #2 CR3R C3 #3 CR3R C4 #4 CR3R H1 #5 HC H2 #6 HC H3 #7 HC H4 #8 HC H5 #9 HC + # char F1 #1 -0.232 C2 #2 0.132 C3 #3 -0.200 C4 #4 -0.200 H1 #5 0.100 H2 #6 0.100 H3 #7 0.100 H4 #8 0.100 H5 #9 0.100 + # fchar F1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 H5 #9 0.000 +model HL13A + # ty F1 #1 11 C2 #2 2 C3 #3 2 H1 #4 5 H2 #5 5 H3 #6 5 + # symb F1 #1 F C2 #2 C=C C3 #3 C=C H1 #4 HC H2 #5 HC H3 #6 HC + # char F1 #1 -0.149 C2 #2 -0.001 C3 #3 -0.300 H1 #4 0.150 H2 #5 0.150 H3 #6 0.150 + # fchar F1 #1 0.000 C2 #2 0.000 C3 #3 0.000 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 +model NO03A + # ty C1 #1 1 N1 #2 46 O1 #3 7 H1 #4 5 H2 #5 5 H3 #6 5 + # symb C1 #1 CR N1 #2 N=O O1 #3 O=N H1 #4 HC H2 #5 HC H3 #6 HC + # char C1 #1 0.333 N1 #2 -0.171 O1 #3 -0.162 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 + # fchar C1 #1 0.000 N1 #2 0.000 O1 #3 0.000 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 +model NX02A + # ty C1 #1 1 C2 #2 3 N2 #3 53 N1 #4 47 C5 #5 1 H1 #6 5 H2 #7 5 H3 #8 5 H4 #9 5 H5 #10 5 H6 #11 5 + # symb C1 #1 CR C2 #2 C=N N2 #3 =N= N1 #4 NAZT C5 #5 CR H1 #6 HC H2 #7 HC H3 #8 HC H4 #9 HC H5 #10 HC H6 #11 HC + # char C1 #1 0.061 C2 #2 -0.109 N2 #3 0.357 N1 #4 -0.370 C5 #5 0.061 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 H6 #11 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 N2 #3 0.000 N1 #4 0.000 C5 #5 0.000 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 H6 #11 0.000 +model OC02A + # ty C1 #1 1 C2 #2 3 O1 #3 51 C4 #4 1 H1 #5 52 H2 #6 5 H3 #7 5 H4 #8 5 H5 #9 5 H6 #10 5 H7 #11 5 + # symb C1 #1 CR C2 #2 C=OR O1 #3 O=+ C4 #4 CR H1 #5 HO=+ H2 #6 HC H3 #7 HC H4 #8 HC H5 #9 HC H6 #10 HC H7 #11 HC + # char C1 #1 0.061 C2 #2 0.828 O1 #3 -0.450 C4 #4 0.061 H1 #5 0.500 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 H5 #9 0.000 H6 #10 0.000 H7 #11 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 O1 #3 1.000 C4 #4 0.000 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 H5 #9 0.000 H6 #10 0.000 H7 #11 0.000 +model PO02A + # ty P1 #1 25 O1 #2 32 H1 #3 71 H2 #4 71 H3 #5 71 + # symb P1 #1 PO O1 #2 OP H1 #3 HP H2 #4 HP H3 #5 HP + # char P1 #1 0.809 O1 #2 -0.700 H1 #3 -0.036 H2 #4 -0.036 H3 #5 -0.036 + # fchar P1 #1 0.000 O1 #2 0.000 H1 #3 0.000 H2 #4 0.000 H3 #5 0.000 +model PO05A + # ty C4 #1 1 N1 #2 43 P1 #3 25 O1 #4 32 O2 #5 32 C11 #6 1 H1 #7 28 HC8 #8 5 HC9 #9 5 HC10 #10 5 HC11 #11 5 HC12 #12 5 HC13 #13 5 + # symb C4 #1 CR N1 #2 NPO2 P1 #3 PO2 O1 #4 O2P O2 #5 O2P C11 #6 CR H1 #7 HNPO HC8 #8 HC HC9 #9 HC HC10 #10 HC HC11 #11 HC HC12 #12 HC HC13 #13 HC + # char C4 #1 0.356 N1 #2 -1.114 P1 #3 1.238 O1 #4 -0.950 O2 #5 -0.950 C11 #6 0.000 H1 #7 0.420 HC8 #8 0.000 HC9 #9 0.000 HC10 #10 0.000 HC11 #11 0.000 HC12 #12 0.000 HC13 #13 0.000 + # fchar C4 #1 0.000 N1 #2 0.000 P1 #3 0.000 O1 #4 -0.500 O2 #5 -0.500 C11 #6 0.000 H1 #7 0.000 HC8 #8 0.000 HC9 #9 0.000 HC10 #10 0.000 HC11 #11 0.000 HC12 #12 0.000 HC13 #13 0.000 +model PR01A + # ty P1 #1 26 H2 #2 71 H3 #3 71 H4 #4 71 + # symb P1 #1 P H2 #2 HP H3 #3 HP H4 #4 HP + # char P1 #1 -0.288 H2 #2 0.096 H3 #3 0.096 H4 #4 0.096 + # fchar P1 #1 0.000 H2 #2 0.000 H3 #3 0.000 H4 #4 0.000 +model PR02A + # ty C1 #1 1 P1 #2 26 H1 #3 71 H2 #4 71 H3 #5 5 H4 #6 5 H5 #7 5 + # symb C1 #1 CR P1 #2 P H1 #3 HP H2 #4 HP H3 #5 HC H4 #6 HC H5 #7 HC + # char C1 #1 0.167 P1 #2 -0.359 H1 #3 0.096 H2 #4 0.096 H3 #5 0.000 H4 #6 0.000 H5 #7 0.000 + # fchar C1 #1 0.000 P1 #2 0.000 H1 #3 0.000 H2 #4 0.000 H3 #5 0.000 H4 #6 0.000 H5 #7 0.000 +model PR03A + # ty C1 #1 1 P1 #2 26 CL1 #3 12 H2 #4 71 H3 #5 5 H4 #6 5 H5 #7 5 + # symb C1 #1 CR P1 #2 P CL1 #3 CL H2 #4 HP H3 #5 HC H4 #6 HC H5 #7 HC + # char C1 #1 0.167 P1 #2 -0.052 CL1 #3 -0.211 H2 #4 0.096 H3 #5 0.000 H4 #6 0.000 H5 #7 0.000 + # fchar C1 #1 0.000 P1 #2 0.000 CL1 #3 0.000 H2 #4 0.000 H3 #5 0.000 H4 #6 0.000 H5 #7 0.000 +model PR04A + # ty C1 #1 1 C2 #2 3 P1 #3 75 C4 #4 1 H1 #5 71 H2 #6 5 H3 #7 5 H4 #8 5 H5 #9 5 H6 #10 5 H7 #11 5 + # symb C1 #1 CR C2 #2 C=P P1 #3 -P=C C4 #4 CR H1 #5 HP H2 #6 HC H3 #7 HC H4 #8 HC H5 #9 HC H6 #10 HC H7 #11 HC + # char C1 #1 0.061 C2 #2 0.125 P1 #3 -0.343 C4 #4 0.061 H1 #5 0.096 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 H5 #9 0.000 H6 #10 0.000 H7 #11 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 P1 #3 0.000 C4 #4 0.000 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H4 #8 0.000 H5 #9 0.000 H6 #10 0.000 H7 #11 0.000 +model SI02A + # ty SI1 #1 19 C1 #2 1 H2 #3 5 H3 #4 5 H4 #5 5 H1 #6 5 H5 #7 5 H6 #8 5 + # symb SI1 #1 SI C1 #2 CR H2 #3 HSI H3 #4 HSI H4 #5 HSI H1 #6 HC H5 #7 HC H6 #8 HC + # char SI1 #1 0.681 C1 #2 -0.081 H2 #3 -0.200 H3 #4 -0.200 H4 #5 -0.200 H1 #6 0.000 H5 #7 0.000 H6 #8 0.000 + # fchar SI1 #1 0.000 C1 #2 0.000 H2 #3 0.000 H3 #4 0.000 H4 #5 0.000 H1 #6 0.000 H5 #7 0.000 H6 #8 0.000 +model SI03A + # ty SI1 #1 19 C1 #2 1 O1 #3 6 H3 #4 5 H4 #5 5 H1 #6 5 H5 #7 5 H6 #8 5 H2 #9 21 + # symb SI1 #1 SI C1 #2 CR O1 #3 -O- H3 #4 HSI H4 #5 HSI H1 #6 HC H5 #7 HC H6 #8 HC H2 #9 HO + # char SI1 #1 0.778 C1 #2 -0.081 O1 #3 -0.697 H3 #4 -0.200 H4 #5 -0.200 H1 #6 0.000 H5 #7 0.000 H6 #8 0.000 H2 #9 0.400 + # fchar SI1 #1 0.000 C1 #2 0.000 O1 #3 0.000 H3 #4 0.000 H4 #5 0.000 H1 #6 0.000 H5 #7 0.000 H6 #8 0.000 H2 #9 0.000 +model SO07A RING 1 HAS 1 SUBRINGS SUBRING 1 has 6 PI electrons SUBRING 1 IS AROMATIC + # ty C1 #1 37 C2 #2 37 C3 #3 37 C4 #4 37 C5 #5 37 C6 #6 37 C7 #7 3 N1 #8 43 S1 #9 18 O1 #10 32 O2 #11 32 C13 #12 1 H1 #13 28 O3 #14 7 H2 #15 5 H3 #16 5 H4 #17 5 H5 #18 5 H6 #19 5 H7 #20 5 H8 #21 5 H9 #22 5 + # symb C1 #1 CB C2 #2 CB C3 #3 CB C4 #4 CB C5 #5 CB C6 #6 CB C7 #7 C=ON N1 #8 NSO2 S1 #9 SO2N O1 #10 O2S O2 #11 O2S C13 #12 CR H1 #13 HNSO O3 #14 O=CN H2 #15 HC H3 #16 HC H4 #17 HC H5 #18 HC H6 #19 HC H7 #20 HC H8 #21 HC H9 #22 HC + # char C1 #1 -0.150 C2 #2 -0.150 C3 #3 -0.150 C4 #4 0.086 C5 #5 -0.150 C6 #6 -0.150 C7 #7 0.720 N1 #8 -0.794 S1 #9 1.333 O1 #10 -0.650 O2 #11 -0.650 C13 #12 0.105 H1 #13 0.420 O3 #14 -0.570 H2 #15 0.150 H3 #16 0.150 H4 #17 0.150 H5 #18 0.150 H6 #19 0.150 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 C3 #3 0.000 C4 #4 0.000 C5 #5 0.000 C6 #6 0.000 C7 #7 0.000 N1 #8 0.000 S1 #9 0.000 O1 #10 0.000 O2 #11 0.000 C13 #12 0.000 H1 #13 0.000 O3 #14 0.000 H2 #15 0.000 H3 #16 0.000 H4 #17 0.000 H5 #18 0.000 H6 #19 0.000 H7 #20 0.000 H8 #21 0.000 H9 #22 0.000 +model SO12A + # ty S1 #1 18 O2 #2 6 O3 #3 6 O4 #4 32 O5 #5 32 H6 #6 33 H7 #7 33 + # symb S1 #1 SO4 O2 #2 OSO3 O3 #3 OSO3 O4 #4 O2S O5 #5 O2S H6 #6 HOS H7 #7 HOS + # char S1 #1 1.667 O2 #2 -0.684 O3 #3 -0.684 O4 #4 -0.650 O5 #5 -0.650 H6 #6 0.500 H7 #7 0.500 + # fchar S1 #1 0.000 O2 #2 0.000 O3 #3 0.000 O4 #4 0.000 O5 #5 0.000 H6 #6 0.000 H7 #7 0.000 +model SO15A + # ty C2 #1 1 S1 #2 18 O2 #3 32 O1 #4 32 N1 #5 62 C1 #6 1 H2 #7 5 H3 #8 5 H4 #9 5 H1 #10 5 H5 #11 5 H6 #12 5 + # symb C2 #1 CR S1 #2 SO2N O2 #3 O2S O1 #4 O2S N1 #5 NM C1 #6 CR H2 #7 HC H3 #8 HC H4 #9 HC H1 #10 HC H5 #11 HC H6 #12 HC + # char C2 #1 0.105 S1 #2 0.735 O2 #3 -0.650 O1 #4 -0.650 N1 #5 -0.490 C1 #6 -0.050 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H1 #10 0.000 H5 #11 0.000 H6 #12 0.000 + # fchar C2 #1 0.000 S1 #2 0.000 O2 #3 0.000 O1 #4 0.000 N1 #5 -1.000 C1 #6 0.000 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H1 #10 0.000 H5 #11 0.000 H6 #12 0.000 +model SO16A + # ty C1 #1 1 C2 #2 3 S1 #3 74 O1 #4 7 C5 #5 1 H1 #6 5 H2 #7 5 H3 #8 5 H4 #9 5 H5 #10 5 H6 #11 5 + # symb C1 #1 CR C2 #2 CS=O S1 #3 =S=O O1 #4 O=S= C5 #5 CR H1 #6 HC H2 #7 HC H3 #8 HC H4 #9 HC H5 #10 HC H6 #11 HC + # char C1 #1 0.061 C2 #2 0.197 S1 #3 0.181 O1 #4 -0.500 C5 #5 0.061 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 H6 #11 0.000 + # fchar C1 #1 0.000 C2 #2 0.000 S1 #3 0.000 O1 #4 0.000 C5 #5 0.000 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 H6 #11 0.000 +model SO18A + # ty H2 #1 5 C2 #2 1 S1 #3 73 O1 #4 32 H1 #5 5 S2 #6 72 H7 #7 5 + # symb H2 #1 HC C2 #2 CR S1 #3 SSOM O1 #4 OSMS H1 #5 HC S2 #6 SSMO H7 #7 HC + # char H2 #1 0.000 C2 #2 0.088 S1 #3 0.212 O1 #4 -0.600 H1 #5 0.000 S2 #6 -0.700 H7 #7 0.000 + # fchar H2 #1 0.000 C2 #2 0.000 S1 #3 0.000 O1 #4 -0.500 H1 #5 0.000 S2 #6 -0.500 H7 #7 0.000 +model BRMW1 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 4 + # ty O2 #1 70 H3 #2 31 H4 #3 31 BR1 #4 91 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH BR1 #4 BR- + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 BR1 #4 -1.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 BR1 #4 -1.000 +model CA2PW3 4 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 6 DOMAIN 3 contains atoms 7 to 9 DOMAIN 4 contains atoms 10 to 10 + # ty O2 #1 70 H3 #2 31 H4 #3 31 O3 #4 70 H6 #5 31 H5 #6 31 O4 #7 70 H8 #8 31 H7 #9 31 CA1 #10 96 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH O3 #4 OH2 H6 #5 HOH H5 #6 HOH O4 #7 OH2 H8 #8 HOH H7 #9 HOH CA1 #10 CA+2 + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 O3 #4 -0.860 H6 #5 0.430 H5 #6 0.430 O4 #7 -0.860 H8 #8 0.430 H7 #9 0.430 CA1 #10 2.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 O3 #4 0.000 H6 #5 0.000 H5 #6 0.000 O4 #7 0.000 H8 #8 0.000 H7 #9 0.000 CA1 #10 2.000 +model CLMW1 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 4 + # ty O2 #1 70 H3 #2 31 H4 #3 31 CL1 #4 90 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH CL1 #4 CL- + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 CL1 #4 -1.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 CL1 #4 -1.000 +model CU1PW1 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 4 + # ty O2 #1 70 H3 #2 31 H4 #3 31 CU1 #4 97 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH CU1 #4 CU+1 + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 CU1 #4 1.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 CU1 #4 1.000 +model CU2PW3 4 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 6 DOMAIN 3 contains atoms 7 to 9 DOMAIN 4 contains atoms 10 to 10 + # ty O2 #1 70 H3 #2 31 H4 #3 31 O3 #4 70 H6 #5 31 H5 #6 31 O4 #7 70 H8 #8 31 H7 #9 31 CU1 #10 98 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH O3 #4 OH2 H6 #5 HOH H5 #6 HOH O4 #7 OH2 H8 #8 HOH H7 #9 HOH CU1 #10 CU+2 + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 O3 #4 -0.860 H6 #5 0.430 H5 #6 0.430 O4 #7 -0.860 H8 #8 0.430 H7 #9 0.430 CU1 #10 2.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 O3 #4 0.000 H6 #5 0.000 H5 #6 0.000 O4 #7 0.000 H8 #8 0.000 H7 #9 0.000 CU1 #10 2.000 +model FE2PW3 4 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 6 DOMAIN 3 contains atoms 7 to 9 DOMAIN 4 contains atoms 10 to 10 + # ty O2 #1 70 H3 #2 31 H4 #3 31 O3 #4 70 H6 #5 31 H5 #6 31 O4 #7 70 H8 #8 31 H7 #9 31 FE1 #10 87 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH O3 #4 OH2 H6 #5 HOH H5 #6 HOH O4 #7 OH2 H8 #8 HOH H7 #9 HOH FE1 #10 FE+2 + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 O3 #4 -0.860 H6 #5 0.430 H5 #6 0.430 O4 #7 -0.860 H8 #8 0.430 H7 #9 0.430 FE1 #10 2.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 O3 #4 0.000 H6 #5 0.000 H5 #6 0.000 O4 #7 0.000 H8 #8 0.000 H7 #9 0.000 FE1 #10 2.000 +model FE3PW3 4 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 6 DOMAIN 3 contains atoms 7 to 9 DOMAIN 4 contains atoms 10 to 10 + # ty O2 #1 70 H3 #2 31 H4 #3 31 O3 #4 70 H6 #5 31 H5 #6 31 O4 #7 70 H8 #8 31 H7 #9 31 FE1 #10 88 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH O3 #4 OH2 H6 #5 HOH H5 #6 HOH O4 #7 OH2 H8 #8 HOH H7 #9 HOH FE1 #10 FE+3 + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 O3 #4 -0.860 H6 #5 0.430 H5 #6 0.430 O4 #7 -0.860 H8 #8 0.430 H7 #9 0.430 FE1 #10 3.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 O3 #4 0.000 H6 #5 0.000 H5 #6 0.000 O4 #7 0.000 H8 #8 0.000 H7 #9 0.000 FE1 #10 3.000 +model FMW1 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 4 + # ty O2 #1 70 H3 #2 31 H4 #3 31 F1 #4 89 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH F1 #4 F- + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 F1 #4 -1.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 F1 #4 -1.000 +model H3OPW1 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 7 + # ty O2 #1 70 H3 #2 31 H4 #3 31 O1 #4 49 H1 #5 50 H2 #6 50 H5 #7 50 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH O1 #4 O+ H1 #5 HO+ H2 #6 HO+ H5 #7 HO+ + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 O1 #4 -0.702 H1 #5 0.567 H2 #6 0.567 H5 #7 0.567 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 O1 #4 1.000 H1 #5 0.000 H2 #6 0.000 H5 #7 0.000 +model KPW1 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 4 + # ty O2 #1 70 H3 #2 31 H4 #3 31 K1 #4 94 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH K1 #4 K+ + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 K1 #4 1.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 K1 #4 1.000 +model LIPW1 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 4 + # ty O2 #1 70 H3 #2 31 H4 #3 31 LI1 #4 92 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH LI1 #4 LI+ + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 LI1 #4 1.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 LI1 #4 1.000 +model MG2PW3 4 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 6 DOMAIN 3 contains atoms 7 to 9 DOMAIN 4 contains atoms 10 to 10 + # ty O2 #1 70 H3 #2 31 H4 #3 31 O3 #4 70 H6 #5 31 H5 #6 31 O4 #7 70 H8 #8 31 H7 #9 31 MG1 #10 99 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH O3 #4 OH2 H6 #5 HOH H5 #6 HOH O4 #7 OH2 H8 #8 HOH H7 #9 HOH MG1 #10 MG+2 + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 O3 #4 -0.860 H6 #5 0.430 H5 #6 0.430 O4 #7 -0.860 H8 #8 0.430 H7 #9 0.430 MG1 #10 2.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 O3 #4 0.000 H6 #5 0.000 H5 #6 0.000 O4 #7 0.000 H8 #8 0.000 H7 #9 0.000 MG1 #10 2.000 +model NAPW 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 4 + # ty O2 #1 70 H3 #2 31 H4 #3 31 NA1 #4 93 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH NA1 #4 NA+ + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 NA1 #4 1.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 NA1 #4 1.000 +model OHMW1 2 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 5 + # ty O2 #1 70 H3 #2 31 H4 #3 31 O1 #4 35 H1 #5 21 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH O1 #4 OM H1 #5 HOM + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 O1 #4 -1.113 H1 #5 0.113 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 O1 #4 -1.000 H1 #5 0.000 +model ZN2PW3 4 Subject-molecule DOMAINS found DOMAIN 1 contains atoms 1 to 3 DOMAIN 2 contains atoms 4 to 6 DOMAIN 3 contains atoms 7 to 9 DOMAIN 4 contains atoms 10 to 10 + # ty O2 #1 70 H3 #2 31 H4 #3 31 O3 #4 70 H6 #5 31 H5 #6 31 O4 #7 70 H8 #8 31 H7 #9 31 ZN1 #10 95 + # symb O2 #1 OH2 H3 #2 HOH H4 #3 HOH O3 #4 OH2 H6 #5 HOH H5 #6 HOH O4 #7 OH2 H8 #8 HOH H7 #9 HOH ZN1 #10 ZN+2 + # char O2 #1 -0.860 H3 #2 0.430 H4 #3 0.430 O3 #4 -0.860 H6 #5 0.430 H5 #6 0.430 O4 #7 -0.860 H8 #8 0.430 H7 #9 0.430 ZN1 #10 2.000 + # fchar O2 #1 0.000 H3 #2 0.000 H4 #3 0.000 O3 #4 0.000 H6 #5 0.000 H5 #6 0.000 O4 #7 0.000 H8 #8 0.000 H7 #9 0.000 ZN1 #10 2.000 +model ERULE_01 RING 1 HAS 1 SUBRINGS PI PAIR ON O OR S 1 PI PAIR ON SP2-N 2 PI PAIR ON SP2-N 3 SUBRING 1 has 6 PI electrons + # ty S1 #1 15 N2 #2 8 N4 #3 8 C3 #4 1 C5 #5 1 C8 #6 1 H3 #7 5 H4 #8 5 H8 #9 23 H9 #10 23 H1 #11 5 H2 #12 5 H5 #13 5 H6 #14 5 + # symb S1 #1 S N2 #2 NR N4 #3 NR C3 #4 CR C5 #5 CR C8 #6 CR H3 #7 HC H4 #8 HC H8 #9 HNR H9 #10 HNR H1 #11 HC H2 #12 HC H5 #13 HC H6 #14 HC + # char S1 #1 -0.213 N2 #2 -0.647 N4 #3 -0.900 C3 #4 0.540 C5 #5 0.500 C8 #6 0.000 H3 #7 0.000 H4 #8 0.000 H8 #9 0.360 H9 #10 0.360 H1 #11 0.000 H2 #12 0.000 H5 #13 0.000 H6 #14 0.000 + # fchar S1 #1 0.000 N2 #2 0.000 N4 #3 0.000 C3 #4 0.000 C5 #5 0.000 C8 #6 0.000 H3 #7 0.000 H4 #8 0.000 H8 #9 0.000 H9 #10 0.000 H1 #11 0.000 H2 #12 0.000 H5 #13 0.000 H6 #14 0.000 +model ERULE_02 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON SP2-N 4 PI PAIR ON O OR S 5 SUBRING 1 has 6 PI electrons + # ty C14 #1 1 C15 #2 1 N3 #3 8 N4 #4 8 S1 #5 15 H23 #6 23 H24 #7 23 H1 #8 5 H2 #9 5 H3 #10 5 H4 #11 5 + # symb C14 #1 CR C15 #2 CR N3 #3 NR N4 #4 NR S1 #5 S H23 #6 HNR H24 #7 HNR H1 #8 HC H2 #9 HC H3 #10 HC H4 #11 HC + # char C14 #1 0.230 C15 #2 0.270 N3 #3 -0.630 N4 #4 -0.377 S1 #5 -0.213 H23 #6 0.360 H24 #7 0.360 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 + # fchar C14 #1 0.000 C15 #2 0.000 N3 #3 0.000 N4 #4 0.000 S1 #5 0.000 H23 #6 0.000 H24 #7 0.000 H1 #8 0.000 H2 #9 0.000 H3 #10 0.000 H4 #11 0.000 +model ERULE_03 + # ty P1 #1 26 SI1 #2 19 C1 #3 1 C2 #4 1 C3 #5 1 C4 #6 1 H2 #7 71 H1 #8 5 H3 #9 5 H4 #10 5 H5 #11 5 H6 #12 5 H7 #13 5 H8 #14 5 H9 #15 5 H10 #16 5 H11 #17 5 H12 #18 5 H13 #19 5 + # symb P1 #1 P SI1 #2 SI C1 #3 CR C2 #4 CR C3 #5 CR C4 #6 CR H2 #7 HP H1 #8 HC H3 #9 HC H4 #10 HC H5 #11 HC H6 #12 HC H7 #13 HC H8 #14 HC H9 #15 HC H10 #16 HC H11 #17 HC H12 #18 HC H13 #19 HC + # char P1 #1 -0.499 SI1 #2 0.478 C1 #3 -0.081 C2 #4 -0.081 C3 #5 -0.081 C4 #6 0.167 H2 #7 0.096 H1 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 H7 #13 0.000 H8 #14 0.000 H9 #15 0.000 H10 #16 0.000 H11 #17 0.000 H12 #18 0.000 H13 #19 0.000 + # fchar P1 #1 0.000 SI1 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 H2 #7 0.000 H1 #8 0.000 H3 #9 0.000 H4 #10 0.000 H5 #11 0.000 H6 #12 0.000 H7 #13 0.000 H8 #14 0.000 H9 #15 0.000 H10 #16 0.000 H11 #17 0.000 H12 #18 0.000 H13 #19 0.000 +model ERULE_04 RING 1 HAS 1 SUBRINGS PI PAIR ON SP2-N 3 PI PAIR ON O OR S 4 PI PAIR ON O OR S 5 SUBRING 1 has 6 PI electrons + # ty CL1 #1 12 C1 #2 1 N1 #3 8 S1 #4 15 S2 #5 15 C2 #6 1 H1 #7 5 H2 #8 5 H9 #9 23 H3 #10 5 + # symb CL1 #1 CL C1 #2 CR N1 #3 NR S1 #4 S S2 #5 S C2 #6 CR H1 #7 HC H2 #8 HC H9 #9 HNR H3 #10 HC + # char CL1 #1 -0.290 C1 #2 0.560 N1 #3 -0.647 S1 #4 0.017 S2 #5 -0.230 C2 #6 0.230 H1 #7 0.000 H2 #8 0.000 H9 #9 0.360 H3 #10 0.000 + # fchar CL1 #1 0.000 C1 #2 0.000 N1 #3 0.000 S1 #4 0.000 S2 #5 0.000 C2 #6 0.000 H1 #7 0.000 H2 #8 0.000 H9 #9 0.000 H3 #10 0.000 +model ERULE_05 RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 3-MEMBERED RING + # ty P2 #1 26 P3 #2 26 P4 #3 26 H1 #4 71 H2 #5 71 H3 #6 71 + # symb P2 #1 P P3 #2 P P4 #3 P H1 #4 HP H2 #5 HP H3 #6 HP + # char P2 #1 -0.096 P3 #2 -0.096 P4 #3 -0.096 H1 #4 0.096 H2 #5 0.096 H3 #6 0.096 + # fchar P2 #1 0.000 P3 #2 0.000 P4 #3 0.000 H1 #4 0.000 H2 #5 0.000 H3 #6 0.000 +model ERULE_06 + # ty C1 #1 1 C8 #2 1 F1 #3 11 N1 #4 8 H1 #5 5 H2 #6 5 H3 #7 5 H14 #8 5 H4 #9 5 H5 #10 5 + # symb C1 #1 CR C8 #2 CR F1 #3 F N1 #4 NR H1 #5 HC H2 #6 HC H3 #7 HC H14 #8 HC H4 #9 HC H5 #10 HC + # char C1 #1 0.270 C8 #2 0.270 F1 #3 -0.064 N1 #4 -0.476 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H14 #8 0.000 H4 #9 0.000 H5 #10 0.000 + # fchar C1 #1 0.000 C8 #2 0.000 F1 #3 0.000 N1 #4 0.000 H1 #5 0.000 H2 #6 0.000 H3 #7 0.000 H14 #8 0.000 H4 #9 0.000 H5 #10 0.000 +model ERULE_07 RING 1 HAS 2 SUBRINGS SUBRING 2 IS A 3-MEMBERED RING PI PAIR ON SP2-N 2 PI PAIR ON SP2-N 1 SUBRING 1 has 4 PI electrons + # ty N1 #1 8 N2 #2 8 C1 #3 1 C2 #4 1 C3 #5 22 C4 #6 22 H1 #7 5 H2 #8 5 H5 #9 5 H6 #10 5 H7 #11 5 H11 #12 23 H8 #13 5 H10 #14 5 + # symb N1 #1 NR N2 #2 NR C1 #3 CR C2 #4 CR C3 #5 CR3R C4 #6 CR3R H1 #7 HC H2 #8 HC H5 #9 HC H6 #10 HC H7 #11 HC H11 #12 HNR H8 #13 HC H10 #14 HC + # char N1 #1 -0.586 N2 #2 -0.900 C1 #3 0.540 C2 #4 0.365 C3 #5 -0.037 C4 #6 -0.042 H1 #7 0.100 H2 #8 0.100 H5 #9 0.000 H6 #10 0.000 H7 #11 0.100 H11 #12 0.360 H8 #13 0.000 H10 #14 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C3 #5 0.000 C4 #6 0.000 H1 #7 0.000 H2 #8 0.000 H5 #9 0.000 H6 #10 0.000 H7 #11 0.000 H11 #12 0.000 H8 #13 0.000 H10 #14 0.000 +model ERULE_08 RING 1 HAS 1 SUBRINGS SUBRING 1 IS A 4-MEMBERED RING + # ty N1 #1 8 N2 #2 8 C1 #3 20 C2 #4 20 C5 #5 1 H1 #6 23 H2 #7 5 H3 #8 5 H4 #9 5 H5 #10 5 H6 #11 5 H7 #12 5 H8 #13 5 + # symb N1 #1 NR N2 #2 NR C1 #3 CR4R C2 #4 CR4R C5 #5 CR H1 #6 HNR H2 #7 HC H3 #8 HC H4 #9 HC H5 #10 HC H6 #11 HC H7 #12 HC H8 #13 HC + # char N1 #1 -0.480 N2 #2 -0.570 C1 #3 0.210 C2 #4 0.210 C5 #5 0.270 H1 #6 0.360 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 H6 #11 0.000 H7 #12 0.000 H8 #13 0.000 + # fchar N1 #1 0.000 N2 #2 0.000 C1 #3 0.000 C2 #4 0.000 C5 #5 0.000 H1 #6 0.000 H2 #7 0.000 H3 #8 0.000 H4 #9 0.000 H5 #10 0.000 H6 #11 0.000 H7 #12 0.000 H8 #13 0.000 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Group.js b/config/plugins/visualizations/jmol/static/j2s/JM/Group.js new file mode 100755 index 000000000000..8fc806323146 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Group.js @@ -0,0 +1,335 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Structure", "java.lang.Short", "JV.JC"], "JM.Group", ["java.util.Hashtable", "JU.BS", "$.Quat", "J.c.STR", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.chain = null; +this.groupIndex = 0; +this.group1 = '\0'; +this.firstAtomIndex = -1; +this.leadAtomIndex = -1; +this.lastAtomIndex = 0; +this.bsAdded = null; +this.seqcode = 0; +this.groupID = 0; +this.selectedIndex = 0; +this.shapeVisibilityFlags = 0; +this.dssrNT = null; +Clazz.instantialize(this, arguments);}, JM, "Group", null, JM.Structure); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "setGroup", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex){ +this.chain = chain; +this.seqcode = seqcode; +this.firstAtomIndex = firstAtomIndex; +this.lastAtomIndex = lastAtomIndex; +if (group3 != null && group3.length > 0) this.setGroupID(group3); +return this; +}, "JM.Chain,~S,~N,~N,~N"); +Clazz.defineMethod(c$, "setGroupID", +function(group3){ +}, "~S"); +Clazz.defineMethod(c$, "isAdded", +function(atomIndex){ +return this.bsAdded != null && this.bsAdded.get(atomIndex); +}, "~N"); +Clazz.defineMethod(c$, "addAtoms", +function(atomIndex){ +if (this.bsAdded == null) this.bsAdded = new JU.BS(); +this.bsAdded.set(atomIndex); +}, "~N"); +Clazz.overrideMethod(c$, "setAtomBits", +function(bs){ +bs.setBits(this.firstAtomIndex, this.lastAtomIndex + 1); +if (this.bsAdded != null) bs.or(this.bsAdded); +}, "JU.BS"); +Clazz.overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +bs.setBits(this.firstAtomIndex, this.lastAtomIndex + 1); +bsOut.clearBits(this.firstAtomIndex, this.lastAtomIndex + 1); +if (this.bsAdded != null) { +bs.or(this.bsAdded); +bsOut.andNot(this.bsAdded); +}}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "isSelected", +function(bs){ +var pt = bs.nextSetBit(this.firstAtomIndex); +return (pt >= 0 && pt <= this.lastAtomIndex || this.bsAdded != null && this.bsAdded.intersects(bs)); +}, "JU.BS"); +Clazz.defineMethod(c$, "setShapeVisibility", +function(visFlag, isVisible){ +if (isVisible) { +this.shapeVisibilityFlags |= visFlag; +} else { +this.shapeVisibilityFlags &= ~visFlag; +}}, "~N,~B"); +Clazz.defineMethod(c$, "getGroup3", +function(){ +return (this.groupID < 1 ? "" : JM.Group.group3Names[this.groupID]); +}); +Clazz.defineMethod(c$, "getGroup1", +function(){ +return (this.group1 == '\0' ? '?' : this.group1); +}); +Clazz.defineMethod(c$, "getBioPolymerLength", +function(){ +return 0; +}); +Clazz.defineMethod(c$, "getMonomerIndex", +function(){ +return -1; +}); +Clazz.defineMethod(c$, "getStructure", +function(){ +return null; +}); +Clazz.defineMethod(c$, "getStrucNo", +function(){ +return 0; +}); +Clazz.defineMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.NOT; +}); +Clazz.defineMethod(c$, "getProteinStructureSubType", +function(){ +return this.getProteinStructureType(); +}); +Clazz.defineMethod(c$, "setProteinStructureType", +function(type, monomerIndexCurrent){ +return -1; +}, "J.c.STR,~N"); +Clazz.defineMethod(c$, "isProtein", +function(){ +return (this.groupID >= 1 && this.groupID < 24); +}); +Clazz.defineMethod(c$, "isNucleic", +function(){ +return (this.groupID >= 24 && this.groupID < 42); +}); +Clazz.defineMethod(c$, "isDna", +function(){ +return this.isDnaByID(); +}); +Clazz.defineMethod(c$, "isRna", +function(){ +return this.isRnaByID(); +}); +Clazz.defineMethod(c$, "isPurine", +function(){ +return this.isPurineByID(); +}); +Clazz.defineMethod(c$, "isPurineByID", +function(){ +return (this.isNucleic() && ((153957 & (1 << (this.groupID - 24))) != 0) || "AGag".indexOf(this.getGroup1()) >= 0); +}); +Clazz.defineMethod(c$, "isPyrimidine", +function(){ +return this.isPyrimidineByID(); +}); +Clazz.defineMethod(c$, "isPyrimidineByID", +function(){ +return (this.isNucleic() && (108186 & (1 << (this.groupID - 24))) != 0); +}); +Clazz.defineMethod(c$, "isRnaByID", +function(){ +return (this.isNucleic() && (196663 & (1 << (this.groupID - 24))) != 0); +}); +Clazz.defineMethod(c$, "isDnaByID", +function(){ +return (this.isNucleic() && (65480 & (1 << (this.groupID - 24))) != 0); +}); +Clazz.defineMethod(c$, "isCarbohydrate", +function(){ +return false; +}); +Clazz.defineMethod(c$, "getResno", +function(){ +return (this.seqcode == -2147483648 ? 0 : this.seqcode >> 8); +}); +Clazz.defineMethod(c$, "setResno", +function(i){ +this.seqcode = JM.Group.getSeqcodeFor(i, this.getInsertionCode()); +}, "~N"); +c$.getSeqNumberFor = Clazz.defineMethod(c$, "getSeqNumberFor", +function(seqcode){ +return (JM.Group.haveSequenceNumber(seqcode) ? seqcode >> 8 : 2147483647); +}, "~N"); +c$.haveSequenceNumber = Clazz.defineMethod(c$, "haveSequenceNumber", +function(seqcode){ +return ((seqcode & 128) != 0); +}, "~N"); +Clazz.defineMethod(c$, "getSeqcodeString", +function(){ +return JM.Group.getSeqcodeStringFor(this.seqcode); +}); +c$.getSeqcodeFor = Clazz.defineMethod(c$, "getSeqcodeFor", +function(seqNo, insCode){ +if (seqNo == -2147483648) return seqNo; +if (!((insCode >= 'A' && insCode <= 'Z') || (insCode >= 'a' && insCode <= 'z') || (insCode >= '0' && insCode <= '9') || insCode == '?' || insCode == '*')) { +if (insCode != ' ' && insCode != '\0') JU.Logger.warn("unrecognized insertionCode:" + insCode); +insCode = '\0'; +}return ((seqNo == 2147483647 ? 0 : (seqNo << 8) | 128)) + insCode.charCodeAt(0); +}, "~N,~S"); +c$.getSeqcodeStringFor = Clazz.defineMethod(c$, "getSeqcodeStringFor", +function(seqcode){ +if (seqcode == -2147483648) return null; +var s = "" + (seqcode >> 8); +if ((seqcode & 127) != 0) s += "^" + String.fromCharCode(seqcode & 127); +return s; +}, "~N"); +Clazz.defineMethod(c$, "getInsertionCode", +function(){ +return (this.seqcode == -2147483648 ? '\0' : String.fromCharCode(this.seqcode & 127)); +}); +Clazz.defineMethod(c$, "getInsCode", +function(){ +return (this.seqcode & 127); +}); +c$.getInsertionCodeFor = Clazz.defineMethod(c$, "getInsertionCodeFor", +function(seqcode){ +return (seqcode & 127); +}, "~N"); +c$.getInsertionCodeChar = Clazz.defineMethod(c$, "getInsertionCodeChar", +function(seqcode){ +return (seqcode == -2147483648 ? '\0' : String.fromCharCode(seqcode & 127)); +}, "~N"); +Clazz.defineMethod(c$, "scaleToScreen", +function(Z, mar){ +return this.chain.model.ms.vwr.tm.scaleToScreen(Z, mar); +}, "~N,~N"); +Clazz.defineMethod(c$, "isCursorOnTopOf", +function(atom, x, y, radius, champ){ +return this.chain.model.ms.isCursorOnTopOf(atom, x, y, radius, champ); +}, "JM.Atom,~N,~N,~N,JM.Atom"); +Clazz.defineMethod(c$, "getModel", +function(){ +return this.chain.model; +}); +Clazz.defineMethod(c$, "getSelectedMonomerCount", +function(){ +return 0; +}); +Clazz.defineMethod(c$, "getSelectedMonomerIndex", +function(){ +return -1; +}); +Clazz.defineMethod(c$, "isLeadAtom", +function(atomIndex){ +return false; +}, "~N"); +Clazz.defineMethod(c$, "getLeadAtomOr", +function(atom){ +var a = this.getLeadAtom(); +return (a == null ? atom : a); +}, "JM.Atom"); +Clazz.defineMethod(c$, "getLeadAtom", +function(){ +return null; +}); +Clazz.defineMethod(c$, "getQuaternion", +function(qType){ +return null; +}, "~S"); +Clazz.defineMethod(c$, "getQuaternionFrame", +function(atoms){ +if (this.lastAtomIndex - this.firstAtomIndex < 3) return null; +var pt = this.firstAtomIndex; +return JU.Quat.getQuaternionFrame(atoms[pt], atoms[++pt], atoms[++pt]); +}, "~A"); +Clazz.defineMethod(c$, "setStrucNo", +function(i){ +}, "~N"); +Clazz.defineMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return JU.Escape.escapeHelical(null, tokType, null, null, null); +}, "~N,~S,~N"); +Clazz.defineMethod(c$, "isWithinStructure", +function(type){ +return false; +}, "J.c.STR"); +Clazz.defineMethod(c$, "getProteinStructureTag", +function(){ +return null; +}); +Clazz.defineMethod(c$, "getStructureId", +function(){ +return ""; +}); +Clazz.defineMethod(c$, "getBioPolymerIndexInModel", +function(){ +return -1; +}); +Clazz.defineMethod(c$, "isCrossLinked", +function(g){ +return false; +}, "JM.Group"); +Clazz.defineMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +return false; +}, "JU.Lst,~B,~B"); +Clazz.defineMethod(c$, "getNitrogenAtom", +function(){ +return null; +}); +Clazz.defineMethod(c$, "getCarbonylOxygenAtom", +function(){ +return null; +}); +Clazz.defineMethod(c$, "fixIndices", +function(atomsDeleted, bsDeleted){ +this.firstAtomIndex -= atomsDeleted; +this.leadAtomIndex -= atomsDeleted; +this.lastAtomIndex -= atomsDeleted; +if (this.bsAdded != null) JU.BSUtil.deleteBits(this.bsAdded, bsDeleted); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getGroupInfo", +function(igroup, ptTemp){ +var infoGroup = new java.util.Hashtable(); +infoGroup.put("groupIndex", Integer.$valueOf(igroup)); +infoGroup.put("groupID", Short.$valueOf(this.groupID)); +var s = this.getSeqcodeString(); +if (s != null) infoGroup.put("seqCode", s); +infoGroup.put("_apt1", Integer.$valueOf(this.firstAtomIndex)); +infoGroup.put("_apt2", Integer.$valueOf(this.lastAtomIndex)); +if (this.bsAdded != null) infoGroup.put("addedAtoms", this.bsAdded); +infoGroup.put("atomInfo1", this.chain.model.ms.getAtomInfo(this.firstAtomIndex, null, ptTemp)); +infoGroup.put("atomInfo2", this.chain.model.ms.getAtomInfo(this.lastAtomIndex, null, ptTemp)); +infoGroup.put("visibilityFlags", Integer.$valueOf(this.shapeVisibilityFlags)); +return infoGroup; +}, "~N,JU.P3"); +Clazz.defineMethod(c$, "getMinZ", +function(atoms, minZ){ +minZ[0] = 2147483647; +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) this.checkMinZ(atoms[i], minZ); + +if (this.bsAdded != null) for (var i = this.bsAdded.nextSetBit(0); i >= 0; i = this.bsAdded.nextSetBit(i + 1)) this.checkMinZ(atoms[i], minZ); + +}, "~A,~A"); +Clazz.defineMethod(c$, "checkMinZ", +function(atom, minZ){ +var z = atom.sZ - Clazz.doubleToInt(atom.sD / 2) - 2; +if (z < minZ[0]) minZ[0] = Math.max(1, z); +}, "JM.Atom,~A"); +Clazz.defineMethod(c$, "getGroupParameter", +function(tok){ +return NaN; +}, "~N"); +Clazz.defineMethod(c$, "getAtomIndex", +function(name, offset){ +return -1; +}, "~S,~N"); +Clazz.defineMethod(c$, "getBSSideChain", +function(){ +return new JU.BS(); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[" + this.getGroup3() + "-" + this.getSeqcodeString() + "]"; +}); +Clazz.defineMethod(c$, "isNucleicMonomer", +function(){ +return false; +}); +c$.standardGroupList = null; +c$.group3Names = new Array(128); +c$.specialAtomNames = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/HBond.js b/config/plugins/visualizations/jmol/static/j2s/JM/HBond.js new file mode 100755 index 000000000000..a51450d9db83 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/HBond.js @@ -0,0 +1,22 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Bond"], "JM.HBond", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.energy = 0; +Clazz.instantialize(this, arguments);}, JM, "HBond", JM.Bond); +Clazz.makeConstructor(c$, +function(atom1, atom2, order, mad, colix, energy){ +Clazz.superConstructor(this, JM.HBond, [atom1, atom2, order, mad, colix]); +this.energy = energy; +if (JU.Logger.debugging) JU.Logger.debug("HBond energy = " + energy + " #" + this.getIdentity()); +}, "JM.Atom,JM.Atom,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "getEnergy", +function(){ +return this.energy; +}); +c$.calcEnergy = Clazz.defineMethod(c$, "calcEnergy", +function(distAH, distCH, distCD, distAD){ +var energy = Math.round(-27888.0 / distAH - -27888.0 / distAD + -27888.0 / distCD - -27888.0 / distCH); +return energy; +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Helix.js b/config/plugins/visualizations/jmol/static/j2s/JM/Helix.js new file mode 100755 index 000000000000..049ff8f48554 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Helix.js @@ -0,0 +1,23 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.ProteinStructure"], "JM.Helix", ["JU.Measure", "$.P3", "$.V3", "J.c.STR"], function(){ +var c$ = Clazz.declareType(JM, "Helix", JM.ProteinStructure); +Clazz.makeConstructor(c$, +function(apolymer, monomerIndex, monomerCount, subtype){ +Clazz.superConstructor (this, JM.Helix, []); +this.setupPS(apolymer, J.c.STR.HELIX, monomerIndex, monomerCount); +this.subtype = subtype; +}, "JM.AlphaPolymer,~N,~N,J.c.STR"); +Clazz.overrideMethod(c$, "calcAxis", +function(){ +if (this.axisA != null) return; +var points = new Array(this.nRes + 1); +for (var i = 0; i <= this.nRes; i++) this.apolymer.getLeadMidPoint(this.monomerIndexFirst + i, points[i] = new JU.P3()); + +this.axisA = new JU.P3(); +this.axisUnitVector = new JU.V3(); +JU.Measure.calcBestAxisThroughPoints(points, points.length, this.axisA, this.axisUnitVector, this.vectorProjection, 4); +this.axisB = JU.P3.newP(points[this.nRes]); +JU.Measure.projectOntoAxis(this.axisB, this.axisA, this.axisUnitVector, this.vectorProjection); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/LabelToken.js b/config/plugins/visualizations/jmol/static/j2s/JM/LabelToken.js new file mode 100755 index 000000000000..ea6b38aa83a3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/LabelToken.js @@ -0,0 +1,392 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.LabelToken", ["java.util.Hashtable", "JU.AU", "$.PT", "$.SB", "JS.SV", "$.T", "JU.Edge", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.text = null; +this.key = null; +this.data = null; +this.tok = 0; +this.pt = -1; +this.ch1 = '\0'; +this.width = 0; +this.precision = 2147483647; +this.alignLeft = false; +this.zeroPad = false; +this.intAsFloat = false; +Clazz.instantialize(this, arguments);}, JM, "LabelToken", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(text, pt){ +this.text = text; +this.pt = pt; +return this; +}, "~S,~N"); +c$.isLabelPropertyTok = Clazz.defineMethod(c$, "isLabelPropertyTok", +function(tok){ +for (var i = JM.LabelToken.labelTokenIds.length; --i >= 0; ) if (JM.LabelToken.labelTokenIds[i] == tok) return true; + +return false; +}, "~N"); +c$.compile = Clazz.defineMethod(c$, "compile", +function(vwr, strFormat, chAtom, htValues){ +if (strFormat == null || strFormat.length == 0) return null; +if (strFormat.indexOf("%") < 0 || strFormat.length < 2) return Clazz.newArray(-1, [ new JM.LabelToken().set(strFormat, -1)]); +var n = 0; +var ich = -1; +var cch = strFormat.length; +while (++ich < cch && (ich = strFormat.indexOf('%', ich)) >= 0) n++; + +var tokens = new Array(n * 2 + 1); +var ichPercent; +var i = 0; +for (ich = 0; (ichPercent = strFormat.indexOf('%', ich)) >= 0; ) { +if (ich != ichPercent) tokens[i++] = new JM.LabelToken().set(strFormat.substring(ich, ichPercent), -1); +var lt = tokens[i++] = new JM.LabelToken().set(null, ichPercent); +vwr.autoCalculate(lt.tok, null); +ich = JM.LabelToken.setToken(vwr, strFormat, lt, cch, chAtom.charCodeAt(0), htValues); +} +if (ich < cch) tokens[i++] = new JM.LabelToken().set(strFormat.substring(ich), -1); +return tokens; +}, "JV.Viewer,~S,~S,java.util.Map"); +Clazz.defineMethod(c$, "formatLabel", +function(vwr, atom, strFormat, ptTemp){ +return (strFormat == null || strFormat.length == 0 ? null : JM.LabelToken.formatLabelAtomArray(vwr, atom, JM.LabelToken.compile(vwr, strFormat, '\0', null), '\0', null, ptTemp)); +}, "JV.Viewer,JM.Atom,~S,JU.P3"); +c$.formatLabelAtomArray = Clazz.defineMethod(c$, "formatLabelAtomArray", +function(vwr, atom, tokens, chAtom, indices, ptTemp){ +if (atom == null) return null; +var strLabel = (chAtom > '0' ? null : new JU.SB()); +if (tokens != null) for (var i = 0; i < tokens.length; i++) { +var t = tokens[i]; +if (t == null) break; +if (chAtom > '0' && t.ch1 != chAtom) continue; +if (t.tok <= 0 || t.key != null) { +if (strLabel != null) { +strLabel.append(t.text); +if (t.ch1 != '\0') strLabel.appendC(t.ch1); +}} else { +JM.LabelToken.appendAtomTokenValue(vwr, atom, t, strLabel, indices, ptTemp); +}} +return (strLabel == null ? null : strLabel.toString().intern()); +}, "JV.Viewer,JM.Atom,~A,~S,~A,JU.P3"); +c$.getBondLabelValues = Clazz.defineMethod(c$, "getBondLabelValues", +function(){ +var htValues = new java.util.Hashtable(); +htValues.put("#", ""); +htValues.put("ORDER", ""); +htValues.put("TYPE", ""); +htValues.put("LENGTH", Float.$valueOf(0)); +htValues.put("ENERGY", Float.$valueOf(0)); +return htValues; +}); +c$.formatLabelBond = Clazz.defineMethod(c$, "formatLabelBond", +function(vwr, bond, tokens, values, indices, ptTemp){ +values.put("#", "" + (bond.index + 1)); +values.put("ORDER", "" + JU.Edge.getBondOrderNumberFromOrder(bond.order)); +values.put("TYPE", JU.Edge.getBondOrderNameFromOrder(bond.order)); +values.put("LENGTH", Float.$valueOf(bond.atom1.distance(bond.atom2))); +values.put("ENERGY", Float.$valueOf(bond.getEnergy())); +JM.LabelToken.setValues(tokens, values); +JM.LabelToken.formatLabelAtomArray(vwr, bond.atom1, tokens, '1', indices, ptTemp); +JM.LabelToken.formatLabelAtomArray(vwr, bond.atom2, tokens, '2', indices, ptTemp); +return JM.LabelToken.getLabel(tokens); +}, "JV.Viewer,JM.Bond,~A,java.util.Map,~A,JU.P3"); +c$.formatLabelMeasure = Clazz.defineMethod(c$, "formatLabelMeasure", +function(vwr, m, label, value, units){ +var htValues = new java.util.Hashtable(); +htValues.put("#", "" + (m.index + 1)); +htValues.put("VALUE", Float.$valueOf(value)); +htValues.put("UNITS", units); +var tokens = JM.LabelToken.compile(vwr, label, '\1', htValues); +if (tokens == null) return ""; +JM.LabelToken.setValues(tokens, htValues); +var atoms = m.ms.at; +var indices = m.countPlusIndices; +for (var i = indices[0]; i >= 1; --i) if (indices[i] >= 0) JM.LabelToken.formatLabelAtomArray(vwr, atoms[indices[i]], tokens, String.fromCharCode(48 + i), null, null); + +label = JM.LabelToken.getLabel(tokens); +return (label == null ? "" : label); +}, "JV.Viewer,JM.Measurement,~S,~N,~S"); +c$.setValues = Clazz.defineMethod(c$, "setValues", +function(tokens, values){ +for (var i = 0; i < tokens.length; i++) { +var lt = tokens[i]; +if (lt == null) break; +if (lt.key == null) continue; +var value = values.get(lt.key); +lt.text = (Clazz.instanceOf(value, Float) ? lt.format((value).floatValue(), null, null) : lt.format(NaN, value, null)); +} +}, "~A,java.util.Map"); +c$.getLabel = Clazz.defineMethod(c$, "getLabel", +function(tokens){ +var sb = new JU.SB(); +for (var i = 0; i < tokens.length; i++) { +var lt = tokens[i]; +if (lt == null) break; +sb.append(lt.text); +} +return sb.toString(); +}, "~A"); +c$.setToken = Clazz.defineMethod(c$, "setToken", +function(vwr, strFormat, lt, cch, chAtom, htValues){ +var ich = lt.pt + 1; +if (ich >= cch) { +lt.text = "%"; +return ich; +}var ch; +if (strFormat.charAt(ich) == '-') { +lt.alignLeft = true; +++ich; +}if (ich < cch && strFormat.charAt(ich) == '0') { +lt.zeroPad = true; +++ich; +}while (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +lt.width = (10 * lt.width) + (ch.charCodeAt(0) - 48); +++ich; +} +lt.precision = 2147483647; +var isNegative = false; +if (ich < cch && strFormat.charAt(ich) == '.') { +++ich; +if (ich < cch && (ch = strFormat.charAt(ich)) == '-') { +isNegative = true; +++ich; +}if (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +++ich; +lt.precision = ch.charCodeAt(0) - 48; +if (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +++ich; +lt.precision = lt.precision * 10 + (ch.charCodeAt(0) - 48); +}if (isNegative) lt.precision = -1 - lt.precision; +}}if (ich < cch && htValues != null) for (var key, $key = htValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (strFormat.indexOf(key, ich) == ich) return ich + (lt.key = key).length; + +if (ich < cch) switch ((ch = strFormat.charAt(ich++)).charCodeAt(0)) { +case 37: +lt.text = "%"; +return ich; +case 91: +var ichClose = strFormat.indexOf(']', ich); +if (ichClose < ich) { +ich = cch; +break; +}var propertyName = strFormat.substring(ich, ichClose).toLowerCase(); +if (propertyName.startsWith("property_")) { +lt.tok = 134221834; +lt.data = vwr.getDataObj(propertyName, null, 1); +} else if (propertyName.startsWith("validation.")) { +lt.tok = 1073742189; +lt.data = vwr.getDataObj("property_" + propertyName.substring(11), null, 1); +} else if (propertyName.startsWith("unitid")) { +lt.tok = 1073741974; +lt.data = Integer.$valueOf(JV.JC.getUnitIDFlags(propertyName.substring(6))); +} else { +var token = JS.T.getTokenFromName(propertyName); +if (token != null && JM.LabelToken.isLabelPropertyTok(token.tok)) lt.tok = token.tok; +}ich = ichClose + 1; +break; +case 123: +var ichCloseBracket = strFormat.indexOf('}', ich); +if (ichCloseBracket < ich) { +ich = cch; +break; +}var s = strFormat.substring(ich, ichCloseBracket); +lt.data = vwr.getDataObj(s, null, 1); +if (lt.data == null) { +lt.data = vwr.getDataObj(s, null, -1); +if (lt.data != null) { +lt.data = (lt.data)[1]; +if ((typeof(lt.data)=='string')) lt.data = JU.PT.split(lt.data, "\n"); +if (!(JU.AU.isAS(lt.data))) lt.data = null; +}if (lt.data == null) { +lt.tok = 1715472409; +lt.data = s; +} else { +lt.tok = 1275068418; +}} else { +lt.tok = 134221834; +}ich = ichCloseBracket + 1; +break; +default: +var i; +var i1; +if (ich < cch && (i = "fuv".indexOf(ch)) >= 0 && (i1 = "xyz".indexOf(strFormat.charAt(ich))) >= 0) { +lt.tok = JM.LabelToken.twoCharLabelTokenIds[i * 3 + i1]; +ich++; +} else if ((i = "AaBbCcDEefGgIiLlMmNnOoPpQqRrSsTtUuVvWwXxxYyyZzz%%%gqW".indexOf(ch)) >= 0) { +lt.tok = JM.LabelToken.labelTokenIds[i]; +}} +lt.text = strFormat.substring(lt.pt, ich); +if (ich < cch && chAtom != 0 && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +ich++; +lt.ch1 = ch; +if (ch.charCodeAt(0) != chAtom && chAtom != 1) lt.tok = 0; +}return ich; +}, "JV.Viewer,~S,JM.LabelToken,~N,~N,java.util.Map"); +c$.appendAtomTokenValue = Clazz.defineMethod(c$, "appendAtomTokenValue", +function(vwr, atom, t, strLabel, indices, ptTemp){ +var strT = null; +var floatT = NaN; +var ptT = null; +try { +switch (t.tok) { +case 1153433601: +strT = atom.atomPropertyString(vwr, 1153433601); +break; +case 1094713347: +strT = "" + (indices == null ? atom.i : indices[atom.i]); +break; +case 1765808134: +ptT = atom.atomPropertyTuple(vwr, t.tok, ptTemp); +break; +case 1073741974: +strT = atom.getUnitID((t.data).intValue()); +break; +case 134221834: +case 1073742189: +if (t.data != null) { +floatT = (t.data)[atom.i]; +if (t.tok == 1073742189 && floatT != 1 && floatT != 0) { +var o = vwr.getAtomValidation(t.text.substring(13, t.text.length - 1), atom); +if (o == null) { +System.out.println("?? o is null ??"); +} else if (o.size() == 1) { +floatT = o.get(0).floatValue(); +} else { +floatT = NaN; +strT = ""; +for (var i = 0, n = o.size(); i < n; i++) { +strT += "," + o.get(i); +} +if (strT.length > 1) strT = strT.substring(1); +}}}break; +case 1715472409: +var data = vwr.ms.getInfo(atom.mi, t.data); +var iatom = atom.i - vwr.ms.am[atom.mi].firstAtomIndex; +var o = null; +if (iatom >= 0) if ((Clazz.instanceOf(data,Array))) { +var sdata = data; +o = (iatom < sdata.length ? sdata[iatom] : null); +} else if (Clazz.instanceOf(data,"JU.Lst")) { +var list = data; +o = (iatom < list.size() ? JS.SV.oValue(list.get(iatom)) : null); +}if (o == null) { +strT = ""; +} else if (Clazz.instanceOf(o, Float)) { +floatT = (o).floatValue(); +} else if (Clazz.instanceOf(o, Integer)) { +floatT = (o).intValue(); +} else if (Clazz.instanceOf(o,"JU.T3")) { +ptT = o; +} else { +strT = o.toString(); +}break; +case 1275068418: +if (t.data != null) { +var sdata = t.data; +strT = (atom.i < sdata.length ? sdata[atom.i] : ""); +}break; +case 1631586315: +var formalCharge = atom.getFormalCharge(); +strT = (formalCharge > 0 ? "" + formalCharge + "+" : formalCharge < 0 ? "" + -formalCharge + "-" : ""); +break; +case 1094717454: +strT = atom.getModelNumberForLabel(); +break; +case 1128269825: +strT = "" + atom.atomPropertyInt(t.tok); +break; +case 1665140738: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +break; +case 1086324749: +strT = atom.group.getStructureId(); +break; +case 1094713367: +var id = atom.group.getStrucNo(); +strT = (id <= 0 ? "" : "" + id); +break; +case 1111490574: +if (Float.isNaN(floatT = atom.group.getGroupParameter(1111490574))) strT = "null"; +break; +case 1111492626: +case 1111492627: +case 1111492628: +case 1111490583: +case 1111490584: +case 1111490585: +case 1111490586: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +if (Float.isNaN(floatT)) strT = ""; +break; +case 1073877011: +strT = vwr.getNBOAtomLabel(atom); +break; +case 1086324747: +case 1639976963: +case 1237320707: +strT = atom.atomPropertyString(vwr, t.tok); +break; +case 1140850705: +strT = atom.getIdentityXYZ(ptTemp, 1); +break; +case 1086324754: +strT = atom.getWyckoffPosition(false); +break; +case 1086324755: +strT = atom.getWyckoffPosition(true); +break; +case 79: +strT = atom.getSymmetryOperatorList(false); +break; +case 81: +floatT = atom.getOccupancy100() / 100; +break; +default: +switch (t.tok & 1136656384) { +case 1094713344: +if (t.intAsFloat) floatT = atom.atomPropertyInt(t.tok); + else strT = "" + atom.atomPropertyInt(t.tok); +break; +case 1111490560: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +break; +case 1086324736: +strT = atom.atomPropertyString(vwr, t.tok); +break; +case 1077936128: +ptT = atom.atomPropertyTuple(vwr, t.tok, ptTemp); +if (ptT == null) strT = ""; +break; +default: +if (t.tok == 1145045003) strT = atom.atomPropertyString(vwr, 1145045003); +} +} +} catch (ioobe) { +if (Clazz.exceptionOf(ioobe,"IndexOutOfBoundsException")){ +floatT = NaN; +strT = null; +ptT = null; +} else { +throw ioobe; +} +} +strT = t.format(floatT, strT, ptT); +if (strLabel == null) t.text = strT; + else strLabel.append(strT); +}, "JV.Viewer,JM.Atom,JM.LabelToken,JU.SB,~A,JU.P3"); +Clazz.defineMethod(c$, "format", +function(floatT, strT, ptT){ +if (!Float.isNaN(floatT)) { +return JU.PT.formatF(floatT, this.width, this.precision, this.alignLeft, this.zeroPad); +} else if (strT != null) { +return JU.PT.formatS(strT, this.width, this.precision, this.alignLeft, this.zeroPad); +} else if (ptT != null) { +if (this.width == 0 && this.precision == 2147483647) { +this.width = 6; +this.precision = 2; +}return JU.PT.formatF(ptT.x, this.width, this.precision, false, false) + JU.PT.formatF(ptT.y, this.width, this.precision, false, false) + JU.PT.formatF(ptT.z, this.width, this.precision, false, false); +} else { +return this.text; +}}, "~N,~S,JU.T3"); +c$.labelTokenIds = Clazz.newIntArray(-1, [1086324739, 1086326786, 1086326785, 1111492620, 1631586315, 1086326788, 1094713347, 1086324746, 1086326789, 1111490569, 1094713357, 1094713361, 1111492618, 1094715393, 1094713363, 1094715402, 1094717454, 1086324743, 1094713360, 1086324742, 79, 1088421903, 1111492619, 1111490570, 81, 1128269825, 1094715412, 1086324747, 1094713366, 1086326788, 1111490574, 1111492620, 1086324745, 1111490575, 1648363544, 1145047055, 1140850705, 1086324755, 1111492612, 1111492609, 1111492629, 1111492613, 1111492610, 1111492630, 1111492614, 1111492611, 1111492631, 1114249217, 1112152066, 1112150019, 1112150020, 1112150021, 1112152070, 1112152071, 1112152073, 1112152074, 1112152076, 1649022989, 1112152078, 1111490561, 1111490562, 1153433601, 1094713346, 1228931586, 1765808134, 1094713356, 1111490564, 1228935687, 1287653388, 1825200146, 1111490567, 1094713359, 1111490565, 1111490568, 1094713362, 1715472409, 1665140738, 1113589787, 1086324748, 1086324744, 1112152075, 1639976963, 1237320707, 1094713367, 1086324749, 1086326798, 1111490576, 1111490577, 1111490578, 1111490579, 1094715418, 1648361473, 1111492626, 1111492627, 1111492628, 1312817669, 1145045006, 1145047050, 1145047049, 1145047053, 1111492615, 1111492616, 1111492617, 1113589786, 1111490571, 1111490572, 1111490573, 1145047052, 1111490566, 1111490563, 1094713351, 1094713365, 1111490583, 1111490584, 1111490585, 1111490586, 1145045008, 1296041985, 1073877011, 1086324752, 1086324753, 1086324754, 1145045003]); +c$.twoCharLabelTokenIds = Clazz.newIntArray(-1, [1111492612, 1111492613, 1111492614, 1111490577, 1111490578, 1111490579, 1111492626, 1111492627, 1111492628]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MMConstraint.js b/config/plugins/visualizations/jmol/static/j2s/JM/MMConstraint.js new file mode 100755 index 000000000000..7e0a25f7f865 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MMConstraint.js @@ -0,0 +1,30 @@ +Clazz.declarePackage("JM"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.indexes = null; +this.value = 0; +this.type = 0; +this.minList = null; +this.nAtoms = 0; +Clazz.instantialize(this, arguments);}, JM, "MMConstraint", null); +Clazz.prepareFields (c$, function(){ +this.minList = Clazz.newIntArray (4, 0); +}); +Clazz.makeConstructor(c$, +function(indexes, value){ +this.value = value; +this.indexes = indexes; +}, "~A,~N"); +Clazz.defineMethod(c$, "set", +function(steps, bsAtoms, atomMap){ +this.nAtoms = Math.abs(this.indexes[0]); +this.type = this.nAtoms - 2; +for (var j = 1; j <= this.nAtoms; j++) { +if (steps <= 0 || !bsAtoms.get(this.indexes[j])) { +this.indexes[0] = -this.nAtoms; +break; +}this.minList[j - 1] = atomMap[this.indexes[j]]; +} +}, "~N,JU.BS,~A"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Measurement.js b/config/plugins/visualizations/jmol/static/j2s/JM/Measurement.js new file mode 100755 index 000000000000..c3b2b3b82b37 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Measurement.js @@ -0,0 +1,482 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.Measurement", ["JU.Measure", "$.PT", "$.SB", "J.atomdata.RadiusData", "J.c.VDW", "JM.LabelToken", "JU.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ms = null; +this.thisID = null; +this.index = 0; +this.isVisible = true; +this.isHidden = false; +this.isTrajectory = false; +this.$isValid = true; +this.colix = 0; +this.labelColix = -1; +this.mad = 0; +this.tickInfo = null; +this.traceX = -2147483648; +this.traceY = 0; +this.count = 0; +this.countPlusIndices = null; +this.pts = null; +this.value = 0; +this.property = null; +this.strFormat = null; +this.units = null; +this.text = null; +this.vwr = null; +this.strMeasurement = null; +this.type = null; +this.tainted = false; +this.renderAxis = null; +this.renderArc = null; +this.newUnits = null; +this.fixedValue = NaN; +this.isPending = false; +this.inFront = false; +this.useDefaultLabel = false; +Clazz.instantialize(this, arguments);}, JM, "Measurement", null); +Clazz.prepareFields (c$, function(){ +this.countPlusIndices = Clazz.newIntArray (5, 0); +}); +Clazz.defineMethod(c$, "isTainted", +function(){ +return (this.tainted && !(this.tainted = false)); +}); +Clazz.defineMethod(c$, "setM", +function(modelSet, m, value, colix, strFormat, index){ +this.ms = modelSet; +this.index = index; +this.vwr = modelSet.vwr; +this.colix = colix; +this.strFormat = strFormat; +if (m != null) { +this.tickInfo = m.tickInfo; +this.pts = m.pts; +this.mad = m.mad; +this.thisID = m.thisID; +this.text = m.text; +this.property = m.property; +this.units = m.units; +if (this.property == null && "+hz".equals(this.units)) { +this.property = "property_J"; +}if (this.thisID != null && this.text != null) this.labelColix = this.text.colix; +}if (this.pts == null) this.pts = new Array(4); +var indices = (m == null ? null : m.countPlusIndices); +this.count = (indices == null ? 0 : indices[0]); +if (this.count > 0) { +System.arraycopy(indices, 0, this.countPlusIndices, 0, this.count + 1); +this.isTrajectory = modelSet.isTrajectoryMeasurement(this.countPlusIndices); +}this.isPending = Float.isNaN(value); +this.value = (this.isPending || this.isTrajectory ? this.getMeasurement(null) : value); +this.formatMeasurement(null); +return this; +}, "JM.ModelSet,JM.Measurement,~N,~N,~S,~N"); +Clazz.defineMethod(c$, "setPoints", +function(modelSet, indices, points, tickInfo){ +this.ms = modelSet; +this.countPlusIndices = indices; +this.count = indices[0]; +this.pts = (points == null ? new Array(4) : points); +this.vwr = modelSet.vwr; +this.tickInfo = tickInfo; +return this; +}, "JM.ModelSet,~A,~A,JM.TickInfo"); +Clazz.defineMethod(c$, "setCount", +function(count){ +this.setCountM(count); +}, "~N"); +Clazz.defineMethod(c$, "setCountM", +function(count){ +this.count = this.countPlusIndices[0] = count; +}, "~N"); +Clazz.defineMethod(c$, "getAtomIndex", +function(n){ +return (n > 0 && n <= this.count ? this.countPlusIndices[n] : -1); +}, "~N"); +Clazz.defineMethod(c$, "getAtom", +function(n){ +var pt = this.countPlusIndices[n]; +return (pt < -1 ? this.pts[-2 - pt] : this.ms.at[pt]); +}, "~N"); +Clazz.defineMethod(c$, "getLastIndex", +function(){ +return (this.count > 0 ? this.countPlusIndices[this.count] : -1); +}); +Clazz.defineMethod(c$, "getString", +function(){ +return this.strMeasurement; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.getString(); +}); +Clazz.defineMethod(c$, "getStringUsing", +function(vwr, strFormat, units){ +this.vwr = vwr; +this.value = this.getMeasurement(null); +this.formatMeasurementAs(strFormat, units, true); +if (strFormat == null) return this.getInfoAsString(units); +return this.strMeasurement; +}, "JV.Viewer,~S,~S"); +Clazz.defineMethod(c$, "getStringDetail", +function(){ +return (this.count == 2 ? "Distance" : this.count == 3 ? "Angle" : "Torsion") + this.getMeasurementScript(" - ", false) + " : " + this.value; +}); +Clazz.defineMethod(c$, "refresh", +function(pts){ +this.value = this.getMeasurement(pts); +this.isTrajectory = this.ms.isTrajectoryMeasurement(this.countPlusIndices); +this.formatMeasurement(null); +}, "~A"); +Clazz.defineMethod(c$, "getMeasurementScript", +function(sep, withModelIndex){ +var sb = new JU.SB(); +var asBitSet = (sep.equals(" ")); +for (var i = 1; i <= this.count; i++) sb.append(i > 1 ? sep : " ").append(this.getLabel(i, asBitSet, withModelIndex)); + +return sb.toString(); +}, "~S,~B"); +Clazz.defineMethod(c$, "formatMeasurementAs", +function(strFormat, units, useDefault){ +if (strFormat != null && strFormat.length == 0) strFormat = null; +if (!useDefault && strFormat != null && strFormat.indexOf(this.countPlusIndices[0] + ":") != 0) return; +this.strFormat = strFormat; +this.formatMeasurement(units); +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "formatMeasurement", +function(units){ +this.tainted = true; +switch (Float.isNaN(this.value) ? 0 : this.count) { +default: +this.strMeasurement = null; +return; +case 2: +this.strMeasurement = this.formatDistance(units); +return; +case 3: +case 4: +this.strMeasurement = this.formatAngle(this.value); +return; +} +}, "~S"); +Clazz.defineMethod(c$, "reformatDistanceIfSelected", +function(isDefault){ +if (this.count == 2 && this.vwr.slm.isSelected(this.countPlusIndices[1]) && this.vwr.slm.isSelected(this.countPlusIndices[2])) { +var pt; +if (this.useDefaultLabel && this.strFormat != null && (pt = this.strFormat.indexOf("//")) >= 0) this.strFormat = this.strFormat.substring(0, pt); +if (isDefault) this.units = null; +this.formatMeasurement(null); +}}, "~B"); +Clazz.defineMethod(c$, "formatDistance", +function(units){ +var label = this.getLabelString(); +if (label == null) return ""; +var pt = this.strFormat.indexOf("//"); +if (units == null) { +units = this.units; +if (units == null) { +units = (pt >= 0 ? this.strFormat.substring(pt + 2) : this.property == null ? this.vwr.g.measureDistanceUnits : ""); +}}if (pt >= 0) { +this.strFormat = this.strFormat.substring(0, pt); +}this.strFormat += "//" + units; +units = JM.Measurement.fixUnits(units); +pt = label.indexOf("//"); +if (pt >= 0) { +label = label.substring(0, pt); +if (label.length == 0) label = "%VALUE"; +}var f = this.fixValue(units, (label.indexOf("%V") >= 0)); +return this.formatString(f, this.newUnits, label); +}, "~S"); +Clazz.defineMethod(c$, "fixValue", +function(units, andRound){ +this.checkJ(units); +if (units != null && units.startsWith("+")) { +if (!this.isPending) this.value = Math.abs(this.value); +units = units.substring(1); +}this.newUnits = units; +if (this.count != 2) return this.value; +var dist = this.value; +if (units == null && this.property != null) units = ""; +if (units != null) { +var isPercent = units.equals("%"); +if (this.property == null && (isPercent || units.endsWith("hz"))) { +var i1 = this.getAtomIndex(1); +var i2 = this.getAtomIndex(2); +if (i1 >= 0 && i2 >= 0) { +var a1 = this.getAtom(1); +var a2 = this.getAtom(2); +var itype = JM.Measurement.nmrType(units); +var isDC = (!isPercent && itype == 1); +this.type = (isPercent ? "percent" : isDC ? "dipoleCouplingConstant" : itype == 3 ? "NOE or 3JHH" : "J-CouplingConstant"); +if (itype == 3) { +var result = this.vwr.getNMRCalculation().getNOEorJHH( Clazz.newArray(-1, [a1, null, null, a2]), 11); +if (result == null) { +dist = NaN; +this.newUnits = units = ""; +} else { +dist = result[1]; +units = this.newUnits = (result.length == 2 ? "noe" : "hz"); +}} else { +dist = (isPercent ? dist / (a1.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO) + a2.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)) : isDC ? this.vwr.getNMRCalculation().getDipolarConstantHz(a1, a2) : this.vwr.getNMRCalculation().getIsoOrAnisoHz(true, a1, a2, units, null)); +}this.$isValid = !Float.isNaN(dist); +if (isPercent) units = "pm"; +}}return JM.Measurement.toUnits(dist, units, andRound); +}return (andRound ? Math.round(dist * 100) / 100 : dist); +}, "~S,~B"); +Clazz.defineMethod(c$, "checkJ", +function(units){ +if (this.property != null || units != null || this.units != null) return; +units = this.vwr.g.measureDistanceUnits; +if ("+hz".equals(units)) { +this.property = "property_J"; +this.units = units; +}}, "~S"); +c$.nmrType = Clazz.defineMethod(c$, "nmrType", +function(units){ +return (units.indexOf("hz") < 0 ? 0 : units.equals("noe_hz") ? 3 : units.startsWith("dc_") || units.equals("khz") ? 1 : 2); +}, "~S"); +Clazz.defineMethod(c$, "formatAngle", +function(angle){ +var label = this.getLabelString(); +if (label.indexOf("%V") >= 0) angle = Math.round(angle * 10) / 10; +return this.formatString(angle, "\u00B0", label); +}, "~N"); +Clazz.defineMethod(c$, "getLabelString", +function(){ +var atomCount = this.countPlusIndices[0]; +var s = atomCount + ":"; +var label = null; +if (this.strFormat != null) { +if (this.strFormat.length == 0) return null; +label = (this.strFormat.length > 2 && this.strFormat.indexOf(s) == 0 ? this.strFormat : null); +}this.useDefaultLabel = false; +if (label == null) { +this.strFormat = null; +label = this.vwr.getDefaultMeasurementLabel(this.countPlusIndices[0]); +this.useDefaultLabel = (this.units == null); +}if (label.indexOf(s) == 0) label = label.substring(2); +if (this.strFormat == null) this.strFormat = s + label; +return label; +}); +Clazz.defineMethod(c$, "formatString", +function(value, units, label){ +return JM.LabelToken.formatLabelMeasure(this.vwr, this, label, value, units); +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "sameAsPoints", +function(indices, points){ +if (this.count != indices[0]) return false; +var isSame = true; +for (var i = 1; i <= this.count && isSame; i++) isSame = (this.countPlusIndices[i] == indices[i]); + +if (isSame) for (var i = 0; i < this.count && isSame; i++) { +if (points[i] != null) isSame = (this.pts[i].distance(points[i]) < 0.01); +} +if (isSame) return true; +switch (this.count) { +default: +return true; +case 2: +return this.sameAsIJ(indices, points, 1, 2) && this.sameAsIJ(indices, points, 2, 1); +case 3: +return this.sameAsIJ(indices, points, 1, 3) && this.sameAsIJ(indices, points, 2, 2) && this.sameAsIJ(indices, points, 3, 1); +case 4: +return this.sameAsIJ(indices, points, 1, 4) && this.sameAsIJ(indices, points, 2, 3) && this.sameAsIJ(indices, points, 3, 2) && this.sameAsIJ(indices, points, 4, 1); +} +}, "~A,~A"); +Clazz.defineMethod(c$, "sameAsIJ", +function(atoms, points, i, j){ +var ipt = this.countPlusIndices[i]; +var jpt = atoms[j]; +return (ipt >= 0 || jpt >= 0 ? ipt == jpt : this.pts[-2 - ipt].distance(points[-2 - jpt]) < 0.01); +}, "~A,~A,~N,~N"); +Clazz.defineMethod(c$, "sameAs", +function(i, j){ +return this.sameAsIJ(this.countPlusIndices, this.pts, i, j); +}, "~N,~N"); +Clazz.defineMethod(c$, "getPropMeasurement", +function(pts){ +if (this.countPlusIndices == null || this.count != 2) return NaN; +for (var i = this.count; --i >= 0; ) if (this.countPlusIndices[i + 1] < 0) { +return NaN; +} +try { +var ptA = (pts == null ? this.getAtom(1) : pts[0]); +var ptB = (pts == null ? this.getAtom(2) : pts[1]); +var props = this.vwr.getDataObj(this.property, null, 2); +var ia = ptA.i; +var ib = ptB.i; +return (props == null || ib >= props.length || ia >= props.length ? NaN : props[ia][ib]); +} catch (t) { +return NaN; +} +}, "~A"); +Clazz.defineMethod(c$, "getMeasurement", +function(pts){ +this.checkJ(null); +if (!Float.isNaN(this.fixedValue)) return this.fixedValue; +if (this.property != null) return this.getPropMeasurement(pts); +if (this.countPlusIndices == null) return NaN; +if (this.count < 2) return NaN; +for (var i = this.count; --i >= 0; ) if (this.countPlusIndices[i + 1] == -1) { +return NaN; +} +var ptA = (pts == null ? this.getAtom(1) : pts[0]); +var ptB = (pts == null ? this.getAtom(2) : pts[1]); +var ptC; +switch (this.count) { +case 2: +return ptA.distance(ptB); +case 3: +ptC = (pts == null ? this.getAtom(3) : pts[2]); +return JU.Measure.computeAngleABC(ptA, ptB, ptC, true); +case 4: +ptC = (pts == null ? this.getAtom(3) : pts[2]); +var ptD = (pts == null ? this.getAtom(4) : pts[3]); +return JU.Measure.computeTorsion(ptA, ptB, ptC, ptD, true); +default: +return NaN; +} +}, "~A"); +Clazz.defineMethod(c$, "getLabel", +function(i, asBitSet, withModelIndex){ +var atomIndex = this.countPlusIndices[i]; +return (atomIndex < 0 ? (withModelIndex ? "modelIndex " + this.getAtom(i).mi + " " : "") + JU.Escape.eP(this.getAtom(i)) : asBitSet ? "({" + atomIndex + "})" : this.vwr.getAtomInfo(atomIndex)); +}, "~N,~B,~B"); +Clazz.defineMethod(c$, "setModelIndex", +function(modelIndex){ +if (this.pts == null) return; +for (var i = 0; i < this.count; i++) { +if (this.pts[i] != null) this.pts[i].mi = modelIndex; +} +}, "~N"); +Clazz.defineMethod(c$, "isValid", +function(){ +return !(this.sameAs(1, 2) || this.count > 2 && this.sameAs(1, 3) || this.count == 4 && this.sameAs(2, 4)); +}); +c$.find = Clazz.defineMethod(c$, "find", +function(measurements, m){ +var indices = m.countPlusIndices; +var points = m.pts; +for (var i = measurements.size(); --i >= 0; ) if (measurements.get(i).sameAsPoints(indices, points)) return i; + +return -1; +}, "JU.Lst,JM.Measurement"); +Clazz.defineMethod(c$, "isConnected", +function(atoms, count){ +var atomIndexLast = -1; +for (var i = 1; i <= count; i++) { +var atomIndex = this.getAtomIndex(i); +if (atomIndex < 0) continue; +if (atomIndexLast >= 0 && !atoms[atomIndex].isBonded(atoms[atomIndexLast])) return false; +atomIndexLast = atomIndex; +} +return true; +}, "~A,~N"); +Clazz.defineMethod(c$, "getInfoAsString", +function(units){ +var f = this.fixValue(units, true); +var sb = new JU.SB(); +sb.append(this.count == 2 ? (this.property != null ? this.property : this.type == null ? "distance" : this.type) : this.count == 3 ? "angle" : "dihedral"); +sb.append(" \t").appendF(f); +sb.append(" \t").append(JU.PT.esc(this.strMeasurement)); +for (var i = 1; i <= this.count; i++) sb.append(" \t").append(this.getLabel(i, false, false)); + +if (this.thisID != null) sb.append(" \t").append(this.thisID); +return sb.toString(); +}, "~S"); +Clazz.defineMethod(c$, "isInRange", +function(radiusData, value){ +if (radiusData.factorType === J.atomdata.RadiusData.EnumType.FACTOR) { +var atom1 = this.getAtom(1); +var atom2 = this.getAtom(2); +var d = (atom1.getVanderwaalsRadiusFloat(this.vwr, radiusData.vdwType) + atom2.getVanderwaalsRadiusFloat(this.vwr, radiusData.vdwType)) * radiusData.value; +return (value <= d); +}return (radiusData.values[0] == 3.4028235E38 || value >= radiusData.values[0] && value <= radiusData.values[1]); +}, "J.atomdata.RadiusData,~N"); +Clazz.defineMethod(c$, "isIntramolecular", +function(atoms, count){ +var molecule = -1; +for (var i = 1; i <= count; i++) { +var atomIndex = this.getAtomIndex(i); +if (atomIndex < 0) continue; +var m = atoms[atomIndex].getMoleculeNumber(false); +if (molecule < 0) molecule = m; + else if (m != molecule) return false; +} +return true; +}, "~A,~N"); +Clazz.defineMethod(c$, "isMin", +function(htMin){ +var a1 = this.getAtom(1); +var a2 = this.getAtom(2); +var d = Clazz.floatToInt(a2.distanceSquared(a1) * 100); +var n1 = a1.getAtomName(); +var n2 = a2.getAtomName(); +var key = (n1.compareTo(n2) < 0 ? n1 + n2 : n2 + n1); +var min = htMin.get(key); +return (min != null && d == min.intValue()); +}, "java.util.Map"); +c$.isUnits = Clazz.defineMethod(c$, "isUnits", +function(s){ +return (JU.PT.isOneOf((s.startsWith("+") ? s.substring(1) : s).toLowerCase(), ";nm;nanometers;pm;picometers;angstroms;angstroms;ang;\u00C5;au;vanderwaals;vdw;%;noe;") || s.indexOf(" ") < 0 && s.endsWith("hz")); +}, "~S"); +c$.toUnits = Clazz.defineMethod(c$, "toUnits", +function(dist, units, andRound){ +if (Float.isNaN(dist)) return NaN; +if (units.equals("hz")) return (andRound ? Math.round(dist * 10) / 10 : dist); +if (units.equals("nm")) return (andRound ? Math.round(dist * 100) / 1000 : dist / 10); +if (units.equals("pm")) return (andRound ? Math.round(dist * 1000) / 10 : dist * 100); +if (units.equals("au")) return (andRound ? Math.round(dist / 0.5291772 * 1000) / 1000 : dist / 0.5291772); +if (units.endsWith("khz")) return (andRound ? Math.round(dist / 10) / 100 : dist / 1000); +return (andRound ? Math.round(dist * 100) / 100 : dist); +}, "~N,~S,~B"); +c$.fromUnits = Clazz.defineMethod(c$, "fromUnits", +function(dist, units){ +if (units.equals("nm")) return dist * 10; +if (units.equals("pm")) return dist / 100; +if (units.equals("au")) return dist * 0.5291772; +if (units.equals("\u00C5")) return dist; +return 0; +}, "~N,~S"); +c$.fixUnits = Clazz.defineMethod(c$, "fixUnits", +function(u){ +var units = (u.endsWith("s") ? u.substring(0, u.length - 1) : u); +if (units.equals("nanometer")) return "nm"; + else if (units.equals("bohr") || units.equals("atomicunits") || units.equals("atomic")) return "au"; + else if (units.equals("picometer")) return "pm"; + else if (units.equals("\u00E5") || units.equals("angstrom") || units.equals("a") || units.equals("ang")) return "\u00C5"; + else if (units.equals("vanderwaal") || units.equals("vdw")) return "%"; +return u; +}, "~S"); +Clazz.defineMethod(c$, "getDistanceFormatForState", +function(){ +return (this.useDefaultLabel ? null : this.strFormat); +}); +Clazz.defineMethod(c$, "setFromMD", +function(md, andText){ +if (md.thisID != null) { +this.thisID = md.thisID; +this.mad = md.mad; +if (md.colix != 0) this.colix = md.colix; +this.strFormat = md.strFormat; +this.text = md.text; +}this.units = ("default".equals(md.units) ? null : md.units); +this.property = md.property; +this.fixedValue = md.fixedValue; +if (md.colix != 0) this.colix = md.colix; +if (md.mad != 0) this.mad = md.mad; +if (md.strFormat != null) { +this.strFormat = (this.strFormat == null ? md.strFormat : this.strFormat.substring(0, 2)) + md.strFormat.substring(2); +}if (md.text != null) { +if (this.text == null) { +this.text = md.text; +} else { +if (md.text.font != null) { +this.text.setFont(md.text.font, false); +this.text.fontScale = md.text.font.fontSize / md.text.font.fontSizeNominal; +}this.text.text = null; +if (md.text.align != 0) this.text.align = md.text.align; +if (md.colix != 0) this.labelColix = this.text.colix = md.text.colix; +}}this.formatMeasurement(null); +}, "JM.MeasurementData,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MeasurementData.js b/config/plugins/visualizations/jmol/static/j2s/JM/MeasurementData.js new file mode 100755 index 000000000000..8f26ebcdd468 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MeasurementData.js @@ -0,0 +1,157 @@ +Clazz.declarePackage("JM"); +Clazz.load(["J.api.JmolMeasurementClient"], "JM.MeasurementData", ["JU.Lst", "JM.Measurement"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.client = null; +this.bsSelected = null; +this.measurementStrings = null; +this.measurements = null; +this.points = null; +this.mustBeConnected = false; +this.mustNotBeConnected = false; +this.tickInfo = null; +this.tokAction = 12290; +this.radiusData = null; +this.strFormat = null; +this.property = null; +this.note = null; +this.isAll = false; +this.colix = 0; +this.intramolecular = null; +this.mad = 0; +this.thisID = null; +this.text = null; +this.units = null; +this.fixedValue = 0; +this.atoms = null; +this.minArray = null; +this.ms = null; +this.allowSelf = false; +this.vwr = null; +this.iFirstAtom = 0; +this.justOneModel = true; +this.htMin = null; +Clazz.instantialize(this, arguments);}, JM, "MeasurementData", null, J.api.JmolMeasurementClient); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "init", +function(id, vwr, points){ +this.vwr = vwr; +this.points = points; +this.thisID = id; +return this; +}, "~S,JV.Viewer,JU.Lst"); +Clazz.defineMethod(c$, "setModelSet", +function(m){ +this.ms = m; +return this; +}, "JM.ModelSet"); +Clazz.defineMethod(c$, "set", +function(tokAction, htMin, radiusData, property, strFormat, units, tickInfo, mustBeConnected, mustNotBeConnected, intramolecular, isAll, mad, colix, text, value, bsSelected){ +this.ms = this.vwr.ms; +this.tokAction = tokAction; +if (this.points.size() >= 2 && Clazz.instanceOf(this.points.get(0),"JU.BS") && Clazz.instanceOf(this.points.get(1),"JU.BS")) { +this.justOneModel = this.vwr.ms.getModelBS(this.points.get(0), false).equals(this.vwr.ms.getModelBS(this.points.get(1), false)); +}this.bsSelected = bsSelected; +this.htMin = htMin; +this.radiusData = radiusData; +this.property = property; +this.strFormat = strFormat; +this.units = units; +this.tickInfo = tickInfo; +this.mustBeConnected = mustBeConnected; +this.mustNotBeConnected = mustNotBeConnected; +this.intramolecular = intramolecular; +this.isAll = isAll; +this.mad = mad; +this.colix = colix; +this.text = text; +this.fixedValue = value; +return this; +}, "~N,java.util.Map,J.atomdata.RadiusData,~S,~S,~S,JM.TickInfo,~B,~B,Boolean,~B,~N,~N,JM.Text,~N,JU.BS"); +Clazz.defineMethod(c$, "processNextMeasure", +function(md, m){ +var value = m.getMeasurement(null); +if (this.htMin != null && !m.isMin(this.htMin) || this.radiusData != null && !m.isInRange(this.radiusData, value)) return; +if (this.measurementStrings == null && this.measurements == null) { +var f = this.minArray[this.iFirstAtom]; +m.value = value; +value = m.fixValue(this.units, false); +this.minArray[this.iFirstAtom] = (1 / f == -Infinity ? value : Math.min(f, value)); +return; +}if (this.measurementStrings != null) this.measurementStrings.addLast(m.getStringUsing(this.vwr, this.strFormat, this.units)); + else this.measurements.addLast(Float.$valueOf(m.getMeasurement(null))); +}, "JM.MeasurementData,JM.Measurement"); +Clazz.defineMethod(c$, "getMeasurements", +function(asFloatArray, asMinArray){ +if (asMinArray) { +this.minArray = Clazz.newFloatArray ((this.points.get(0)).cardinality(), 0); +for (var i = 0; i < this.minArray.length; i++) this.minArray[i] = -0.0; + +this.define(null, this.ms); +return this.minArray; +}if (asFloatArray) { +this.allowSelf = true; +this.measurements = new JU.Lst(); +this.define(null, this.ms); +return this.measurements; +}this.measurementStrings = new JU.Lst(); +this.define(null, this.ms); +return this.measurementStrings; +}, "~B,~B"); +Clazz.defineMethod(c$, "define", +function(client, modelSet){ +this.client = (client == null ? this : client); +this.atoms = modelSet.at; +var nPoints = this.points.size(); +if (nPoints < 2) return; +var modelIndex = -1; +var pts = new Array(4); +var indices = Clazz.newIntArray (5, 0); +var m = new JM.Measurement().setPoints(modelSet, indices, pts, null); +m.setCount(nPoints); +m.property = this.property; +m.strFormat = this.strFormat; +m.units = this.units; +m.fixedValue = this.fixedValue; +var ptLastAtom = -1; +for (var i = 0; i < nPoints; i++) { +var obj = this.points.get(i); +if (Clazz.instanceOf(obj,"JU.BS")) { +var bs = obj; +var nAtoms = bs.cardinality(); +if (nAtoms == 0) return; +if (nAtoms > 1) modelIndex = 0; +ptLastAtom = i; +if (i == 0) this.iFirstAtom = 0; +indices[i + 1] = bs.nextSetBit(0); +} else { +pts[i] = obj; +indices[i + 1] = -2 - i; +}} +this.nextMeasure(0, ptLastAtom, m, modelIndex); +}, "J.api.JmolMeasurementClient,JM.ModelSet"); +Clazz.defineMethod(c$, "nextMeasure", +function(thispt, ptLastAtom, m, thisModel){ +if (thispt > ptLastAtom) { +if ((this.allowSelf && !this.mustBeConnected && !this.mustNotBeConnected || m.isValid()) && (!this.mustBeConnected || m.isConnected(this.atoms, thispt)) && (!this.mustNotBeConnected || !m.isConnected(this.atoms, thispt)) && (this.intramolecular == null || m.isIntramolecular(this.atoms, thispt) == this.intramolecular.booleanValue())) this.client.processNextMeasure(this, m); +return; +}var bs = this.points.get(thispt); +var indices = m.countPlusIndices; +var thisAtomIndex = (thispt == 0 ? 2147483647 : indices[thispt]); +if (thisAtomIndex < 0) { +this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +return; +}var haveNext = false; +for (var i = bs.nextSetBit(0), pt = 0; i >= 0; i = bs.nextSetBit(i + 1), pt++) { +if (i == thisAtomIndex && !this.allowSelf) continue; +var modelIndex = this.atoms[i].mi; +if (thisModel >= 0 && this.justOneModel) { +if (thispt == 0) thisModel = modelIndex; + else if (thisModel != modelIndex) continue; +}indices[thispt + 1] = i; +if (thispt == 0) this.iFirstAtom = pt; +haveNext = true; +this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +} +if (!haveNext) this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +}, "~N,~N,JM.Measurement,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MeasurementPending.js b/config/plugins/visualizations/jmol/static/j2s/JM/MeasurementPending.js new file mode 100755 index 000000000000..635b826aefba --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MeasurementPending.js @@ -0,0 +1,59 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Measurement"], "JM.MeasurementPending", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveTarget = false; +this.haveModified = false; +this.numSet = 0; +this.lastIndex = -1; +Clazz.instantialize(this, arguments);}, JM, "MeasurementPending", JM.Measurement); +Clazz.defineMethod(c$, "set", +function(modelSet){ +return this.setM(modelSet, null, NaN, 0, null, 0); +}, "JM.ModelSet"); +Clazz.defineMethod(c$, "checkPoint", +function(ptClicked){ +for (var i = 1; i <= this.numSet; i++) if (this.countPlusIndices[i] == -1 - i && this.pts[i - 1].distance(ptClicked) < 0.01) return false; + +return true; +}, "JU.Point3fi"); +Clazz.defineMethod(c$, "getIndexOf", +function(atomIndex){ +for (var i = 1; i <= this.numSet; i++) if (this.countPlusIndices[i] == atomIndex) return i; + +return 0; +}, "~N"); +Clazz.overrideMethod(c$, "setCount", +function(count){ +this.setCountM(count); +this.numSet = count; +}, "~N"); +Clazz.defineMethod(c$, "addPoint", +function(atomIndex, ptClicked, doSet){ +this.haveModified = (atomIndex != this.lastIndex); +this.lastIndex = atomIndex; +if (ptClicked == null) { +if (this.getIndexOf(atomIndex) > 0) { +if (doSet) this.numSet = this.count; +return this.count; +}this.haveTarget = (atomIndex >= 0); +if (!this.haveTarget) return this.count = this.numSet; +this.count = this.numSet + 1; +this.countPlusIndices[this.count] = atomIndex; +} else { +if (!this.checkPoint(ptClicked)) { +if (doSet) this.numSet = this.count; +return this.count; +}var pt = this.numSet; +this.haveModified = this.haveTarget = true; +this.count = this.numSet + 1; +this.pts[pt] = ptClicked; +this.countPlusIndices[this.count] = -2 - pt; +}this.countPlusIndices[0] = this.count; +if (doSet) this.numSet = this.count; +this.value = this.getMeasurement(null); +this.strFormat = null; +this.formatMeasurement(null); +return this.count; +}, "~N,JU.Point3fi,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MinAngle.js b/config/plugins/visualizations/jmol/static/j2s/JM/MinAngle.js new file mode 100755 index 000000000000..0174517d9dd7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MinAngle.js @@ -0,0 +1,15 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.MinObject"], "JM.MinAngle", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sbType = 0; +this.sbKey = null; +this.ka = 0; +this.theta0 = NaN; +Clazz.instantialize(this, arguments);}, JM, "MinAngle", JM.MinObject); +Clazz.makeConstructor(c$, +function(data){ +Clazz.superConstructor (this, JM.MinAngle, []); +this.data = data; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MinAtom.js b/config/plugins/visualizations/jmol/static/j2s/JM/MinAtom.js new file mode 100755 index 000000000000..83be00a2ae8b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MinAtom.js @@ -0,0 +1,80 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JU.BS", "$.Lst"], "JM.MinAtom", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atom = null; +this.index = 0; +this.sType = null; +this.coord = null; +this.force = null; +this.bonds = null; +this.nBonds = 0; +this.bondedAtoms = null; +this.bsVdw = null; +this.hCount = -1; +this.partialCharge = 0; +this.ffAtomType = null; +this.ffType = 0; +this.vdwKey = null; +this.bs14 = null; +Clazz.instantialize(this, arguments);}, JM, "MinAtom", null); +Clazz.prepareFields (c$, function(){ +this.coord = Clazz.newDoubleArray (3, 0); +this.force = Clazz.newDoubleArray (3, 0); +this.bonds = new JU.Lst(); +this.bsVdw = new JU.BS(); +this.bs14 = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(index, atom, coord, ac){ +this.index = index; +this.atom = atom; +this.coord = coord; +this.bsVdw.setBits(index + 1, ac); +this.bsVdw.clear(index); +}, "~N,JM.Atom,~A,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "#" + this.index + "@" + this.atom.i + " " + this.sType + " " + this.coord[0] + "," + this.coord[1] + "," + this.coord[2]; +}); +Clazz.defineMethod(c$, "set", +function(){ +this.coord[0] = this.atom.x; +this.coord[1] = this.atom.y; +this.coord[2] = this.atom.z; +}); +Clazz.defineMethod(c$, "getBondTo", +function(iAtom){ +this.getBondedAtomIndexes(); +for (var i = 0; i < this.nBonds; i++) if (this.bondedAtoms[i] == iAtom) return this.bonds.get(i); + +return null; +}, "~N"); +Clazz.defineMethod(c$, "getBondedAtomIndexes", +function(){ +if (this.bondedAtoms == null) { +this.bondedAtoms = Clazz.newIntArray (this.nBonds, 0); +for (var i = this.nBonds; --i >= 0; ) this.bondedAtoms[i] = this.bonds.get(i).getOtherAtom(this.index); + +}return this.bondedAtoms; +}); +Clazz.defineMethod(c$, "getIdentity", +function(){ +return this.atom.getInfo(); +}); +Clazz.defineMethod(c$, "addBond", +function(bond, i){ +this.bonds.addLast(bond); +this.nBonds++; +this.bsVdw.clear(i); +}, "JM.MinBond,~N"); +Clazz.defineMethod(c$, "getBondIndex", +function(j){ +return this.bonds.get(j).index; +}, "~N"); +Clazz.defineMethod(c$, "getHCount", +function(){ +if (this.hCount < 0) this.hCount = this.atom.getCovalentHydrogenCount(); +return this.hCount; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MinBond.js b/config/plugins/visualizations/jmol/static/j2s/JM/MinBond.js new file mode 100755 index 000000000000..d4ddc5130212 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MinBond.js @@ -0,0 +1,25 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.MinObject"], "JM.MinBond", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.rawIndex = 0; +this.index = 0; +this.order = 0; +this.isAromatic = false; +this.isAmide = false; +Clazz.instantialize(this, arguments);}, JM, "MinBond", JM.MinObject); +Clazz.makeConstructor(c$, +function(rawIndex, index, atomIndex1, atomIndex2, order, type, key){ +Clazz.superConstructor (this, JM.MinBond, []); +this.rawIndex = rawIndex; +this.index = index; +this.type = type; +this.data = Clazz.newIntArray(-1, [atomIndex1, atomIndex2]); +this.order = order; +this.key = key; +}, "~N,~N,~N,~N,~N,~N,Integer"); +Clazz.defineMethod(c$, "getOtherAtom", +function(index){ +return this.data[this.data[0] == index ? 1 : 0]; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MinObject.js b/config/plugins/visualizations/jmol/static/j2s/JM/MinObject.js new file mode 100755 index 000000000000..aec4b33ddf92 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MinObject.js @@ -0,0 +1,33 @@ +Clazz.declarePackage("JM"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.data = null; +this.type = 0; +this.key = null; +this.ddata = null; +Clazz.instantialize(this, arguments);}, JM, "MinObject", null); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.type + " " + this.data[0] + "," + this.data[1] + (this.data.length > 2 ? "," + this.data[2] + "," + this.data[3] : "") + " " + JM.MinObject.decodeKey(this.key); +}); +c$.getKey = Clazz.defineMethod(c$, "getKey", +function(type, a1, a2, a3, a4){ +return Integer.$valueOf((((((((a4 << 7) + a3) << 7) + a2) << 7) + a1) << 4) + type); +}, "~N,~N,~N,~N,~N"); +c$.decodeKey = Clazz.defineMethod(c$, "decodeKey", +function(key){ +if (key == null) return null; +var i = key.intValue(); +var type = i & 0xF; +i >>= 4; +var a = i & 0x7F; +i >>= 7; +var b = i & 0x7F; +i >>= 7; +var c = i & 0x7F; +i >>= 7; +var d = i & 0x7F; +return (type < 0 ? type + ": " : "") + (a < 10 ? " " : " ") + a + (b < 10 ? " " : " ") + b + (c < 10 ? " " : " ") + c + (d > 120 ? "" : (d < 10 ? " " : " ") + d); +}, "Integer"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MinPosition.js b/config/plugins/visualizations/jmol/static/j2s/JM/MinPosition.js new file mode 100755 index 000000000000..5367011e6fc5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MinPosition.js @@ -0,0 +1,11 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.MinObject"], "JM.MinPosition", null, function(){ +var c$ = Clazz.declareType(JM, "MinPosition", JM.MinObject); +Clazz.makeConstructor(c$, +function(data, ddata){ +Clazz.superConstructor (this, JM.MinPosition, []); +this.data = data; +this.ddata = ddata; +}, "~A,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MinTorsion.js b/config/plugins/visualizations/jmol/static/j2s/JM/MinTorsion.js new file mode 100755 index 000000000000..7988a2fa9ef7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MinTorsion.js @@ -0,0 +1,10 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.MinObject"], "JM.MinTorsion", null, function(){ +var c$ = Clazz.declareType(JM, "MinTorsion", JM.MinObject); +Clazz.makeConstructor(c$, +function(data){ +Clazz.superConstructor (this, JM.MinTorsion, []); +this.data = data; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/MinimizationThread.js b/config/plugins/visualizations/jmol/static/j2s/JM/MinimizationThread.js new file mode 100755 index 000000000000..43262b347f13 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/MinimizationThread.js @@ -0,0 +1,52 @@ +Clazz.declarePackage("JM"); +Clazz.load(["J.thread.JmolThread"], "JM.MinimizationThread", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.minimizer = null; +Clazz.instantialize(this, arguments);}, JM, "MinimizationThread", J.thread.JmolThread); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JM.MinimizationThread, []); +}); +Clazz.overrideMethod(c$, "setManager", +function(manager, vwr, options){ +this.minimizer = manager; +this.setViewer(vwr, "MinimizationThread"); +return 0; +}, "~O,JV.Viewer,~O"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +this.lastRepaintTime = this.startTime; +this.haveReference = true; +if (!this.minimizer.startMinimization()) return; +this.vwr.startHoverWatcher(false); +mode = 0; +break; +case 0: +if (!this.minimizer.minimizationOn() || this.checkInterrupted(this.minimizer.getThread())) { +mode = -2; +break; +}this.currentTime = System.currentTimeMillis(); +var elapsed = (this.currentTime - this.lastRepaintTime); +var sleepTime = 33 - elapsed; +if (!this.runSleep(sleepTime, 1)) return; +mode = 1; +break; +case 1: +this.lastRepaintTime = this.currentTime = System.currentTimeMillis(); +mode = (this.minimizer.stepMinimization() ? 0 : -2); +break; +case -2: +this.minimizer.endMinimization(true); +this.vwr.startHoverWatcher(true); +return; +} + +}, "~N"); +Clazz.overrideMethod(c$, "oops", +function(e){ +if (this.minimizer.minimizationOn()) JU.Logger.error(e.toString()); +}, "Exception"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Minimizer.js b/config/plugins/visualizations/jmol/static/j2s/JM/Minimizer.js new file mode 100755 index 000000000000..256f042138a2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Minimizer.js @@ -0,0 +1,576 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JU.P3"], "JM.Minimizer", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "J.i18n.GT", "JM.MMConstraint", "$.MinAngle", "$.MinAtom", "$.MinBond", "$.MinTorsion", "$.MinimizationThread", "JM.FF.ForceFieldMMFF", "$.ForceFieldUFF", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.id = 0; +this.vwr = null; +this.atoms = null; +this.bonds = null; +this.rawBondCount = 0; +this.bsAtoms = null; +this.constraints = null; +this.minAtoms = null; +this.minBonds = null; +this.minAngles = null; +this.minTorsions = null; +this.bsMinFixed = null; +this.ac = 0; +this.bondCount = 0; +this.atomMap = null; +this.steps = 50; +this.crit = 1e-3; +this.units = "kJ/mol"; +this.pFF = null; +this.ff = "UFF"; +this.bsTaint = null; +this.bsSelected = null; +this.bsFixedDefault = null; +this.bsFixed = null; +this.modelkitMinimizing = false; +this.bsBasis = null; +this.isSilent = false; +this.constraintMap = null; +this.elemnoMax = 0; +this.isQuick = false; +this.minimizing = false; +this.minimizationThread = null; +this.trustRadius = 0.3; +this.coordSaved = null; +this.p = null; +Clazz.instantialize(this, arguments);}, JM, "Minimizer", null); +Clazz.prepareFields (c$, function(){ +this.p = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +this.id = (++JM.Minimizer.staticID) * 100; +}); +Clazz.defineMethod(c$, "setProperty", +function(propertyName, value){ +switch (("ff cancel clear constraintfixed stop vwr ").indexOf(propertyName)) { +case 0: +if (!this.ff.equals(value)) { +this.setProperty("clear", null); +this.ff = value; +}break; +case 10: +this.stopMinimization(false); +break; +case 20: +if (this.minAtoms != null) { +this.stopMinimization(false); +this.clear(); +}break; +case 30: +this.addConstraint(value); +break; +case 40: +this.bsFixedDefault = value; +if (this.bsFixedDefault != null && this.bsFixedDefault.cardinality() == 0) this.bsFixedDefault = null; +break; +case 50: +this.stopMinimization(true); +break; +case 60: +this.vwr = value; +break; +} +return this; +}, "~S,~O"); +Clazz.defineMethod(c$, "minimize", +function(steps, crit, bsSelected, bsFixed, bsBasis, flags, ff){ +this.id++; +this.isSilent = ((flags & 1) == 1); +this.isQuick = (ff.indexOf("2D") >= 0 || (flags & 8) == 8); +this.modelkitMinimizing = (bsBasis != null && this.vwr.getModelkitPropertySafely("minimizing") === Boolean.TRUE); +if (bsBasis != null) { +if (bsFixed == null) bsFixed = new JU.BS(); +this.vwr.getMotionFixedAtoms(null, bsFixed); +bsBasis.andNot(bsFixed); +bsFixed.or(bsSelected); +bsFixed.andNot(bsBasis); +if (bsBasis.isEmpty()) { +this.report(" symmetry-based minimization failed -- all atoms are fully constrained", false); +return false; +}var n = bsBasis.cardinality(); +this.report(" symmetry-based minimization for " + n + " atom" + (n == 1 ? "" : "s"), false); +}this.bsBasis = bsBasis; +this.trustRadius = (bsBasis == null ? 0.3 : 0.01); +var haveFixed = ((flags & 4) == 4); +var bsXx = ((flags & 128) == 128 ? new JU.BS() : null); +var val; +if (crit <= 0) { +val = this.vwr.getP("minimizationCriterion"); +if (val != null && Clazz.instanceOf(val, Float)) crit = (val).floatValue(); +}this.crit = Math.max(crit, 0.0001); +if (steps == 2147483647) { +val = this.vwr.getP("minimizationSteps"); +if (val != null && Clazz.instanceOf(val, Integer)) steps = (val).intValue(); +}this.steps = steps; +try { +this.setEnergyUnits(); +if (!haveFixed && this.bsFixedDefault != null) bsFixed.and(this.bsFixedDefault); +if (this.minimizing) return false; +var pFF0 = this.pFF; +this.getForceField(ff); +if (this.pFF == null) { +JU.Logger.error(J.i18n.GT.o(J.i18n.GT.$("Could not get class for force field {0}"), ff)); +return false; +}JU.Logger.info("minimize: " + this.id + " initializing " + this.pFF.name + " (steps = " + steps + " criterion = " + crit + ")" + " silent=" + this.isSilent + " quick=" + this.isQuick + " fixed=" + haveFixed + " bsSelected=" + bsSelected + " bsFixed=" + bsFixed + " bsFixedDefault=" + this.bsFixedDefault + " Xx=" + (bsXx != null) + " ..."); +if (bsSelected.nextSetBit(0) < 0) { +JU.Logger.error(J.i18n.GT.$("No atoms selected -- nothing to do!")); +return false; +}this.atoms = this.vwr.ms.at; +this.bsAtoms = JU.BSUtil.copy(bsSelected); +for (var i = this.bsAtoms.nextSetBit(0); i >= 0; i = this.bsAtoms.nextSetBit(i + 1)) { +if (this.atoms[i].getElementNumber() == 0) { +if (bsXx == null) { +this.bsAtoms.clear(i); +JU.Logger.info("minimize: " + this.id + " Ignoring Xx for atomIndex=" + i); +} else { +bsXx.set(i); +JU.Logger.info("minimize: " + this.id + " Setting Xx to fluorine for atomIndex=" + i); +this.atoms[i].setAtomicAndIsotopeNumber(9); +}}} +if (bsFixed != null) this.bsAtoms.or(bsFixed); +this.ac = this.bsAtoms.cardinality(); +var sameAtoms = JU.BSUtil.areEqual(bsSelected, this.bsSelected); +this.bsSelected = bsSelected; +if (pFF0 != null && this.pFF !== pFF0) sameAtoms = false; +if (!sameAtoms) this.pFF.clear(); +var isSame = (sameAtoms && JU.BSUtil.areEqual(bsFixed, this.bsFixed)); +if (!this.setupMinimization(bsFixed, isSame)) { +this.clear(); +return false; +}if (steps > 0) { +this.bsTaint = JU.BSUtil.copy(this.bsAtoms); +JU.BSUtil.andNot(this.bsTaint, bsFixed); +this.vwr.ms.setTaintedAtoms(this.bsTaint, 2); +}if (this.constraints != null) for (var i = this.constraints.size(); --i >= 0; ) this.constraints.get(i).set(steps, this.bsAtoms, this.atomMap); + +this.pFF.setConstraints(this); +if (steps <= 0) this.getEnergyOnly(); + else if (this.isSilent || !this.vwr.useMinimizationThread()) this.minimizeWithoutThread(); + else this.setMinimizationOn(true); +} finally { +if (bsXx != null && !bsXx.isEmpty()) { +for (var i = bsXx.nextSetBit(0); i >= 0; i = bsXx.nextSetBit(i + 1)) { +this.atoms[i].setAtomicAndIsotopeNumber(0); +} +}} +return true; +}, "~N,~N,JU.BS,JU.BS,JU.BS,~N,~S"); +Clazz.defineMethod(c$, "getProperty", +function(propertyName, param){ +if (propertyName.equals("log")) { +return (this.pFF == null ? "" : this.pFF.getLogData()); +}if (propertyName.equals("fixed")) { +return this.bsFixedDefault; +}return null; +}, "~S,~N"); +Clazz.defineMethod(c$, "addConstraint", +function(o){ +if (o == null) return; +var indexes = o[0]; +var nAtoms = indexes[0]; +if (nAtoms == 0) { +this.constraints = null; +return; +}var value = (o[1]).doubleValue(); +if (this.constraints == null) { +this.constraints = new JU.Lst(); +this.constraintMap = new java.util.Hashtable(); +}if (indexes[1] > indexes[nAtoms]) { +JU.AU.swapInt(indexes, 1, nAtoms); +if (nAtoms == 4) JU.AU.swapInt(indexes, 2, 3); +}var id = JU.Escape.eAI(indexes); +var c = this.constraintMap.get(id); +if (c == null) { +c = new JM.MMConstraint(indexes, value); +} else { +c.value = value; +return; +}this.constraintMap.put(id, c); +this.constraints.addLast(c); +}, "~A"); +Clazz.defineMethod(c$, "clear", +function(){ +this.setMinimizationOn(false); +this.ac = 0; +this.bondCount = 0; +this.atoms = null; +this.bonds = null; +this.rawBondCount = 0; +this.minAtoms = null; +this.minBonds = null; +this.minAngles = null; +this.minTorsions = null; +this.coordSaved = null; +this.atomMap = null; +this.bsTaint = null; +this.bsAtoms = null; +this.bsFixed = null; +this.bsFixedDefault = null; +this.bsMinFixed = null; +this.bsSelected = null; +this.constraints = null; +this.constraintMap = null; +this.pFF = null; +}); +Clazz.defineMethod(c$, "setEnergyUnits", +function(){ +var s = this.vwr.g.energyUnits; +this.units = (s.equalsIgnoreCase("kcal") ? "kcal" : "kJ"); +}); +Clazz.defineMethod(c$, "setupMinimization", +function(bsFixed, isSame){ +if (isSame) { +this.setAtomPositions(); +return true; +}this.coordSaved = null; +this.atomMap = Clazz.newIntArray (this.atoms.length, 0); +this.minAtoms = new Array(this.ac); +this.elemnoMax = 0; +var bsElements = new JU.BS(); +for (var i = this.bsAtoms.nextSetBit(0), pt = 0; i >= 0; i = this.bsAtoms.nextSetBit(i + 1), pt++) { +var atom = this.atoms[i]; +this.atomMap[i] = pt; +var atomicNo = this.atoms[i].getElementNumber(); +this.elemnoMax = Math.max(this.elemnoMax, atomicNo); +bsElements.set(atomicNo); +this.minAtoms[pt] = new JM.MinAtom(pt, atom, Clazz.newDoubleArray(-1, [atom.x, atom.y, atom.z]), this.ac); +this.minAtoms[pt].sType = atom.getAtomName(); +} +if (bsFixed != null) this.bsFixed = bsFixed; +JU.Logger.info(J.i18n.GT.i(J.i18n.GT.$("{0} atoms will be minimized."), this.ac)); +JU.Logger.info("minimize: " + this.id + " getting bonds..."); +this.bonds = this.vwr.ms.bo; +this.rawBondCount = this.vwr.ms.bondCount; +this.getBonds(); +JU.Logger.info("minimize: " + this.id + " getting angles..."); +this.getAngles(); +JU.Logger.info("minimize: " + this.id + " getting torsions..."); +this.getTorsions(this.ff.startsWith("MMFF")); +return this.setModel(bsElements); +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "setModel", +function(bsElements){ +if (!this.pFF.setModel(bsElements, this.elemnoMax)) { +JU.Logger.error(J.i18n.GT.o(J.i18n.GT.$("could not setup force field {0}"), this.ff)); +if (this.ff.startsWith("MMFF")) { +this.report(" MMFF not applicable", false); +this.getForceField("UFF"); +return this.setModel(bsElements); +}return false; +}return true; +}, "JU.BS"); +Clazz.defineMethod(c$, "setAtomPositions", +function(){ +for (var i = 0; i < this.ac; i++) this.minAtoms[i].set(); + +if (this.bsFixed == null || this.bsFixed.cardinality() == 0) { +this.bsMinFixed = null; +} else { +this.bsMinFixed = new JU.BS(); +for (var i = 0; i < this.ac; i++) { +if (this.bsFixed.get(this.minAtoms[i].atom.i)) this.bsMinFixed.set(i); +} +}}); +Clazz.defineMethod(c$, "getBonds", +function(){ +var bondInfo = new JU.Lst(); +this.bondCount = 0; +var i1; +var i2; +for (var i = 0; i < this.rawBondCount; i++) { +var bond = this.bonds[i]; +if (!this.bsAtoms.get(i1 = bond.atom1.i) || !this.bsAtoms.get(i2 = bond.atom2.i)) continue; +if (i2 < i1) { +var ii = i1; +i1 = i2; +i2 = ii; +}var bondOrder = (bond.isPartial() ? 0 : bond.getCovalentOrder()); +switch (bondOrder) { +case 0: +continue; +case 1: +case 2: +case 3: +break; +case 515: +bondOrder = 5; +break; +default: +bondOrder = 1; +} +bondInfo.addLast( new JM.MinBond(i, this.bondCount++, this.atomMap[i1], this.atomMap[i2], bondOrder, 0, null)); +} +this.minBonds = new Array(this.bondCount); +for (var i = 0; i < this.bondCount; i++) { +var bond = this.minBonds[i] = bondInfo.get(i); +var atom1 = bond.data[0]; +var atom2 = bond.data[1]; +this.minAtoms[atom1].addBond(bond, atom2); +this.minAtoms[atom2].addBond(bond, atom1); +} +for (var i = 0; i < this.ac; i++) this.minAtoms[i].getBondedAtomIndexes(); + +}); +Clazz.defineMethod(c$, "getAngles", +function(){ +var vAngles = new JU.Lst(); +var atomList; +var ic; +for (var i = 0; i < this.bondCount; i++) { +var bond = this.minBonds[i]; +var ia = bond.data[0]; +var ib = bond.data[1]; +if (this.minAtoms[ib].nBonds > 1) { +atomList = this.minAtoms[ib].getBondedAtomIndexes(); +for (var j = atomList.length; --j >= 0; ) if ((ic = atomList[j]) > ia) { +vAngles.addLast( new JM.MinAngle( Clazz.newIntArray(-1, [ia, ib, ic, i, this.minAtoms[ib].getBondIndex(j)]))); +this.minAtoms[ia].bsVdw.clear(ic); +} +}if (this.minAtoms[ia].nBonds > 1) { +atomList = this.minAtoms[ia].getBondedAtomIndexes(); +for (var j = atomList.length; --j >= 0; ) if ((ic = atomList[j]) < ib && ic > ia) { +vAngles.addLast( new JM.MinAngle( Clazz.newIntArray(-1, [ic, ia, ib, this.minAtoms[ia].getBondIndex(j), i]))); +this.minAtoms[ic].bsVdw.clear(ib); +} +}} +this.minAngles = vAngles.toArray( new Array(vAngles.size())); +JU.Logger.info(this.minAngles.length + " angles"); +}); +Clazz.defineMethod(c$, "getTorsions", +function(isMMFF){ +var vTorsions = new JU.Lst(); +var id; +for (var i = this.minAngles.length; --i >= 0; ) { +var angle = this.minAngles[i].data; +var ia = angle[0]; +var ib = angle[1]; +var ic = angle[2]; +var atomList; +if (ic > ib && this.minAtoms[ic].nBonds > 1) { +atomList = this.minAtoms[ic].getBondedAtomIndexes(); +for (var j = 0; j < atomList.length; j++) { +id = atomList[j]; +if (id != ia && id != ib) { +vTorsions.addLast( new JM.MinTorsion( Clazz.newIntArray(-1, [ia, ib, ic, id, angle[3], angle[4], this.minAtoms[ic].getBondIndex(j)]))); +if (isMMFF) this.minAtoms[Math.min(ia, id)].bs14.set(Math.max(ia, id)); +}} +}if (ia > ib && this.minAtoms[ia].nBonds != 1) { +atomList = this.minAtoms[ia].getBondedAtomIndexes(); +for (var j = 0; j < atomList.length; j++) { +id = atomList[j]; +if (id != ic && id != ib) { +vTorsions.addLast( new JM.MinTorsion( Clazz.newIntArray(-1, [ic, ib, ia, id, angle[4], angle[3], this.minAtoms[ia].getBondIndex(j)]))); +if (isMMFF) this.minAtoms[Math.min(ic, id)].bs14.set(Math.max(ic, id)); +}} +}} +this.minTorsions = vTorsions.toArray( new Array(vTorsions.size())); +JU.Logger.info(this.minTorsions.length + " torsions"); +}, "~B"); +Clazz.defineMethod(c$, "getForceField", +function(ff){ +if (ff.startsWith("MMFF")) ff = "MMFF"; +if (this.pFF == null || !ff.equals(this.ff) || (this.pFF.name.indexOf("2D") >= 0) != this.isQuick) { +if (ff.equals("MMFF")) { +this.pFF = new JM.FF.ForceFieldMMFF(this, this.isQuick); +} else { +this.pFF = new JM.FF.ForceFieldUFF(this, this.isQuick); +ff = "UFF"; +}this.ff = ff; +if (!this.isQuick) this.vwr.setStringProperty("_minimizationForceField", ff); +}this.report(" forcefield is " + ff, false); +this.pFF.setNth(this.vwr.getInt(553648150)); +return this.pFF; +}, "~S"); +Clazz.defineMethod(c$, "minimizationOn", +function(){ +return this.minimizing; +}); +Clazz.defineMethod(c$, "getThread", +function(){ +return this.minimizationThread; +}); +Clazz.defineMethod(c$, "setMinimizationOn", +function(minimizationOn){ +this.minimizing = minimizationOn; +if (!minimizationOn) { +if (this.minimizationThread != null) { +this.minimizationThread = null; +}return; +}if (this.minimizationThread == null) { +this.minimizationThread = new JM.MinimizationThread(); +this.minimizationThread.setManager(this, this.vwr, null); +this.minimizationThread.start(); +}}, "~B"); +Clazz.defineMethod(c$, "getEnergyOnly", +function(){ +if (this.pFF == null || this.vwr == null) return; +this.pFF.steepestDescentInitialize(this.steps, this.crit, this.trustRadius); +this.vwr.setFloatProperty("_minimizationEnergyDiff", 0); +this.reportEnergy(); +this.vwr.setStringProperty("_minimizationStatus", "calculate"); +this.vwr.notifyMinimizationStatus(); +if (this.bsBasis != null) { +this.vwr.getModelkit(false).minimizeEnd(null, true); +}}); +Clazz.defineMethod(c$, "reportEnergy", +function(){ +this.vwr.setFloatProperty("_minimizationEnergy", this.pFF.toUserUnits(this.pFF.getEnergy())); +}); +Clazz.defineMethod(c$, "startMinimization", +function(){ +try { +JU.Logger.info("minimize: " + this.id + " startMinimization"); +this.vwr.setIntProperty("_minimizationStep", 0); +this.vwr.setStringProperty("_minimizationStatus", "starting"); +this.vwr.setFloatProperty("_minimizationEnergy", 0); +this.vwr.setFloatProperty("_minimizationEnergyDiff", 0); +this.vwr.notifyMinimizationStatus(); +this.vwr.stm.saveCoordinates("minimize", this.bsTaint); +this.pFF.steepestDescentInitialize(this.steps, this.crit, this.trustRadius); +this.reportEnergy(); +this.saveCoordinates(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("minimization error vwr=" + this.vwr + " pFF = " + this.pFF); +return false; +} else { +throw e; +} +} +this.minimizing = true; +return true; +}); +Clazz.defineMethod(c$, "stepMinimization", +function(){ +if (!this.minimizing) return false; +var doRefresh = (!this.isSilent && this.vwr.getBooleanProperty("minimizationRefresh")); +this.vwr.setStringProperty("_minimizationStatus", "running"); +var going = this.pFF.steepestDescentTakeNSteps(1, this.bsBasis != null); +var currentStep = this.pFF.getCurrentStep(); +this.vwr.setIntProperty("_minimizationStep", currentStep); +if (doRefresh) { +this.vwr.refresh(3, "minimization step " + currentStep); +}this.reportEnergy(); +this.vwr.setFloatProperty("_minimizationEnergyDiff", this.pFF.toUserUnits(this.pFF.getEnergyDiff())); +this.vwr.notifyMinimizationStatus(); +if (doRefresh) { +if (!this.modelkitMinimizing) this.updateAtomXYZ(false); +this.vwr.refresh(3, "minimization step " + currentStep); +}return going; +}); +Clazz.defineMethod(c$, "endMinimization", +function(normalFinish){ +System.out.println("minimization: " + this.id + " end minimizing=" + this.minimizing + " normal=" + normalFinish); +if (!this.minimizing) return; +this.setMinimizationOn(false); +if (this.pFF == null) { +System.out.println("pFF was null"); +} else { +var failed = this.pFF.detectExplosion(); +if (failed) this.restoreCoordinates(); + else this.updateAtomXYZ(true); +this.vwr.setIntProperty("_minimizationStep", this.pFF.getCurrentStep()); +this.reportEnergy(); +this.vwr.setStringProperty("_minimizationStatus", (failed ? "failed" : normalFinish ? "done" : "stopped")); +this.vwr.notifyMinimizationStatus(); +this.vwr.refresh(3, "minimize:done" + (failed ? " EXPLODED" : "OK")); +}JU.Logger.info("minimize: " + this.id + " endMinimization complete"); +}, "~B"); +Clazz.defineMethod(c$, "saveCoordinates", +function(){ +if (this.coordSaved == null) this.coordSaved = Clazz.newDoubleArray (this.ac, 3, 0); +for (var i = 0; i < this.ac; i++) for (var j = 0; j < 3; j++) this.coordSaved[i][j] = this.minAtoms[i].coord[j]; + + +}); +Clazz.defineMethod(c$, "restoreCoordinates", +function(){ +if (this.coordSaved == null) return; +for (var i = 0; i < this.ac; i++) for (var j = 0; j < 3; j++) this.minAtoms[i].coord[j] = this.coordSaved[i][j]; + + +this.updateAtomXYZ(true); +}); +Clazz.defineMethod(c$, "stopMinimization", +function(coordAreOK){ +if (!this.minimizing) return; +if (coordAreOK) this.endMinimization(false); + else this.restoreCoordinates(); +this.setMinimizationOn(false); +}, "~B"); +Clazz.defineMethod(c$, "updateAtomXYZ", +function(isEnd){ +if (this.steps <= 0 || this.pFF != null && this.pFF.getCurrentStep() == 0) return; +if (!this.modelkitMinimizing) { +for (var i = 0; i < this.ac; i++) { +var minAtom = this.minAtoms[i]; +if (this.bsFixed == null || !this.bsFixed.get(minAtom.atom.i)) minAtom.atom.set(minAtom.coord[0], minAtom.coord[1], minAtom.coord[2]); +} +isEnd = true; +} else { +var a; +var doUpdateMinAtoms = false; +var minAtom = this.minAtoms[0]; +for (var i = 0; i < this.ac; i++) { +minAtom = this.minAtoms[i]; +if (this.bsMinFixed != null && this.bsMinFixed.get(i)) continue; +a = minAtom.atom; +this.p.set(minAtom.coord[0], minAtom.coord[1], minAtom.coord[2]); +if (this.vwr.getModelkit(false).moveMinConstrained(a.i, this.p, this.bsAtoms) > 0) { +doUpdateMinAtoms = true; +}} +if (doUpdateMinAtoms) { +for (var i = 0; i < this.ac; i++) { +minAtom = this.minAtoms[i]; +minAtom.coord[0] = (a = minAtom.atom).x; +minAtom.coord[1] = a.y; +minAtom.coord[2] = a.z; +} +}this.vwr.getModelkit(false).minimizeEnd(this.bsBasis, isEnd); +}if (isEnd) { +this.vwr.refreshMeasures(false); +}}, "~B"); +Clazz.defineMethod(c$, "minimizeWithoutThread", +function(){ +if (!this.startMinimization()) return; +while (this.stepMinimization()) { +} +this.endMinimization(true); +}); +Clazz.defineMethod(c$, "report", +function(msg, isEcho){ +if (this.isSilent) JU.Logger.info(msg); + else if (isEcho) this.vwr.showString(msg, false); + else this.vwr.scriptEcho(msg); +}, "~S,~B"); +Clazz.defineMethod(c$, "calculatePartialCharges", +function(ms, bsAtoms, bsReport){ +var ff = new JM.FF.ForceFieldMMFF(this, false); +ff.setArrays(ms.at, bsAtoms, ms.bo, ms.bondCount, true, true); +this.vwr.setAtomProperty(bsAtoms, 1086326785, 0, 0, null, null, ff.getAtomTypeDescriptions()); +this.vwr.setAtomProperty(bsReport == null ? bsAtoms : bsReport, 1111492619, 0, 0, null, ff.getPartialCharges(), null); +}, "JM.ModelSet,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getForceFieldUsed", +function(){ +return (this.pFF == null ? null : this.pFF.name); +}); +Clazz.defineMethod(c$, "isLoggable", +function(iData, n){ +if (this.bsBasis == null) return Boolean.TRUE; +if (iData == null) return this.bsBasis.get(this.minAtoms[n].atom.i) ? Boolean.TRUE : Boolean.FALSE; +for (var i = 0; i < n; i++) { +if (this.bsBasis.get(this.minAtoms[iData[i]].atom.i)) return Boolean.TRUE; +} +return Boolean.FALSE; +}, "~A,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[minimizer " + this.id + " step " + (this.pFF == null ? 0 : this.pFF.getCurrentStep()) + " atoms=" + this.ac + "]"; +}); +c$.staticID = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Model.js b/config/plugins/visualizations/jmol/static/j2s/JM/Model.js new file mode 100755 index 000000000000..1b0432345dcf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Model.js @@ -0,0 +1,189 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.Model", ["java.util.Hashtable", "JU.AU", "$.BS", "$.SB", "JU.BSUtil", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ms = null; +this.mat4 = null; +this.modelIndex = 0; +this.fileIndex = 0; +this.isBioModel = false; +this.isPdbWithMultipleBonds = false; +this.isModelKit = false; +this.chains = null; +this.simpleCage = null; +this.dssrCache = null; +this.orientation = null; +this.auxiliaryInfo = null; +this.properties = null; +this.biosymmetry = null; +this.dataFrames = null; +this.translation = null; +this.dataSourceFrame = -1; +this.loadState = ""; +this.loadScript = null; +this.hasRasmolHBonds = false; +this.structureTainted = false; +this.isJmolDataFrame = false; +this.isTrajectory = false; +this.trajectoryBaseIndex = 0; +this.altLocCount = 0; +this.insertionCount = 0; +this.act = 0; +this.bondCount = -1; +this.chainCount = 0; +this.groupCount = -1; +this.hydrogenCount = 0; +this.moleculeCount = 0; +this.biosymmetryCount = 0; +this.firstAtomIndex = 0; +this.firstMoleculeIndex = 0; +this.bsAtoms = null; +this.bsAtomsDeleted = null; +this.defaultRotationRadius = 0; +this.frameDelay = 0; +this.selectedTrajectory = -1; +this.jmolData = null; +this.jmolFrameType = null; +this.pdbID = null; +this.bsCheck = null; +this.hasChirality = false; +this.isOrderly = true; +this.bsAsymmetricUnit = null; +Clazz.instantialize(this, arguments);}, JM, "Model", null); +Clazz.makeConstructor(c$, +function(){ +this.setupArrays(); +}); +Clazz.defineMethod(c$, "setupArrays", +function(){ +this.chains = new Array(8); +this.loadScript = new JU.SB(); +this.bsAtoms = new JU.BS(); +this.bsAtomsDeleted = new JU.BS(); +}); +Clazz.defineMethod(c$, "set", +function(modelSet, modelIndex, trajectoryBaseIndex, jmolData, properties, auxiliaryInfo){ +this.ms = modelSet; +this.dataSourceFrame = this.modelIndex = modelIndex; +this.isTrajectory = (trajectoryBaseIndex >= 0); +this.trajectoryBaseIndex = (this.isTrajectory ? trajectoryBaseIndex : modelIndex); +if (auxiliaryInfo == null) { +auxiliaryInfo = new java.util.Hashtable(); +}this.auxiliaryInfo = auxiliaryInfo; +var bc = (auxiliaryInfo.get("biosymmetryCount")); +if (bc != null) { +this.biosymmetryCount = bc.intValue(); +this.biosymmetry = auxiliaryInfo.get("biosymmetry"); +}var fname = auxiliaryInfo.get("fileName"); +if (fname != null) auxiliaryInfo.put("fileName", JV.FileManager.stripTypePrefix(fname)); +this.properties = properties; +if (jmolData == null) { +this.jmolFrameType = "modelSet"; +} else { +this.jmolData = jmolData; +this.isJmolDataFrame = true; +auxiliaryInfo.put("jmolData", jmolData); +auxiliaryInfo.put("title", jmolData); +this.jmolFrameType = (jmolData.indexOf("ramachandran") >= 0 ? "ramachandran" : jmolData.indexOf("quaternion") >= 0 ? "quaternion" : "data"); +}return this; +}, "JM.ModelSet,~N,~N,~S,java.util.Properties,java.util.Map"); +Clazz.defineMethod(c$, "getTrueAtomCount", +function(){ +return JU.BSUtil.andNot(this.bsAtoms, this.bsAtomsDeleted).cardinality(); +}); +Clazz.defineMethod(c$, "isContainedIn", +function(bs){ +if (this.bsCheck == null) this.bsCheck = new JU.BS(); +this.bsCheck.clearAll(); +this.bsCheck.or(bs); +var bsa = JU.BSUtil.andNot(this.bsAtoms, this.bsAtomsDeleted); +this.bsCheck.and(bsa); +return this.bsCheck.equals(bsa); +}, "JU.BS"); +Clazz.defineMethod(c$, "resetBoundCount", +function(){ +this.bondCount = -1; +}); +Clazz.defineMethod(c$, "getBondCount", +function(){ +if (this.bondCount >= 0) return this.bondCount; +var bonds = this.ms.bo; +this.bondCount = 0; +for (var i = this.ms.bondCount; --i >= 0; ) if (bonds[i].atom1.mi == this.modelIndex) this.bondCount++; + +return this.bondCount; +}); +Clazz.defineMethod(c$, "getChainCount", +function(countWater){ +if (this.chainCount > 1 && !countWater) for (var i = 0; i < this.chainCount; i++) if (this.chains[i].chainID == 0) return this.chainCount - 1; + +return this.chainCount; +}, "~B"); +Clazz.defineMethod(c$, "calcSelectedGroupsCount", +function(bsSelected){ +for (var i = this.chainCount; --i >= 0; ) this.chains[i].calcSelectedGroupsCount(bsSelected); + +}, "JU.BS"); +Clazz.defineMethod(c$, "getGroupCount", +function(){ +if (this.groupCount < 0) { +this.groupCount = 0; +for (var i = this.chainCount; --i >= 0; ) this.groupCount += this.chains[i].groupCount; + +}return this.groupCount; +}); +Clazz.defineMethod(c$, "getChainAt", +function(i){ +return (i < this.chainCount ? this.chains[i] : null); +}, "~N"); +Clazz.defineMethod(c$, "getChain", +function(chainID){ +for (var i = this.chainCount; --i >= 0; ) { +var chain = this.chains[i]; +if (chain.chainID == chainID) return chain; +} +return null; +}, "~N"); +Clazz.defineMethod(c$, "resetDSSR", +function(totally){ +this.dssrCache = null; +if (totally) this.auxiliaryInfo.remove("dssr"); +}, "~B"); +Clazz.defineMethod(c$, "fixIndices", +function(modelIndex, nAtomsDeleted, bsDeleted){ +this.fixIndicesM(modelIndex, nAtomsDeleted, bsDeleted); +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "fixIndicesM", +function(modelIndex, nAtomsDeleted, bsDeleted){ +if (this.dataSourceFrame > modelIndex) this.dataSourceFrame--; +if (this.trajectoryBaseIndex > modelIndex) this.trajectoryBaseIndex--; +this.firstAtomIndex -= nAtomsDeleted; +for (var i = 0; i < this.chainCount; i++) this.chains[i].fixIndices(nAtomsDeleted, bsDeleted); + +JU.BSUtil.deleteBits(this.bsAtoms, bsDeleted); +JU.BSUtil.deleteBits(this.bsAtomsDeleted, bsDeleted); +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "freeze", +function(){ +this.freezeM(); +return false; +}); +Clazz.defineMethod(c$, "freezeM", +function(){ +for (var i = 0; i < this.chainCount; i++) if (this.chains[i].groupCount == 0) { +for (var j = i + 1; j < this.chainCount; j++) this.chains[j - 1] = this.chains[j]; + +this.chainCount--; +} +this.chains = JU.AU.arrayCopyObject(this.chains, this.chainCount); +this.groupCount = -1; +this.getGroupCount(); +for (var i = 0; i < this.chainCount; ++i) this.chains[i].groups = JU.AU.arrayCopyObject(this.chains[i].groups, this.chains[i].groupCount); + +}); +Clazz.defineMethod(c$, "setSimpleCage", +function(ucell){ +if ((this.simpleCage = ucell) != null) { +this.auxiliaryInfo.put("unitCellParams", ucell.getUnitCellParams()); +}}, "J.api.SymmetryInterface"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/ModelLoader.js b/config/plugins/visualizations/jmol/static/j2s/JM/ModelLoader.js new file mode 100755 index 000000000000..ef56c0fd031d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/ModelLoader.js @@ -0,0 +1,1055 @@ +Clazz.declarePackage("JM"); +Clazz.load(["java.util.Hashtable", "JU.BS"], "JM.ModelLoader", ["java.util.Arrays", "JU.AU", "$.Lst", "$.P3", "$.PT", "$.SB", "$.V3", "J.api.Interface", "JM.AtomCollection", "$.Chain", "$.Group", "$.Model", "$.ModelSet", "JS.T", "JU.BSUtil", "$.Elements", "$.JmolMolecule", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.ms = null; +this.modelSet0 = null; +this.merging = false; +this.appendNew = false; +this.jmolData = null; +this.group3Lists = null; +this.group3Counts = null; +this.specialAtomIndexes = null; +this.someModelsHaveUnitcells = false; +this.someModelsAreModulated = false; +this.is2D = false; +this.isMOL2D = false; +this.isMutate = false; +this.isTrajectory = false; +this.isPyMOLsession = false; +this.doMinimize = false; +this.doAddPDBHydrogens = false; +this.fileHeader = null; +this.jbr = null; +this.groups = null; +this.groupCount = 0; +this.modulationTUV = null; +this.noH = false; +this.htAtomMap = null; +this.chainOf = null; +this.group3Of = null; +this.seqcodes = null; +this.firstAtomIndexes = null; +this.iModel = 0; +this.model = null; +this.currentChainID = 0; +this.isNewChain = false; +this.currentChain = null; +this.currentGroupSequenceNumber = 0; +this.currentGroupInsertionCode = '\0'; +this.currentGroup3 = null; +this.nullGroup = null; +this.baseModelIndex = 0; +this.baseModelCount = 0; +this.baseAtomIndex = 0; +this.baseGroupIndex = 0; +this.baseTrajectoryCount = 0; +this.adapterModelCount = 0; +this.adapterTrajectoryCount = 0; +this.noAutoBond = false; +this.modulationOn = false; +this.htGroup1 = null; +this.appendToModelIndex = null; +this.$mergeGroups = null; +this.iChain = 0; +this.vStereo = null; +this.lastModel = -1; +this.structuresDefinedInFile = null; +this.stereodir = 1; +Clazz.instantialize(this, arguments);}, JM, "ModelLoader", null); +Clazz.prepareFields (c$, function(){ +this.htAtomMap = new java.util.Hashtable(); +this.structuresDefinedInFile = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(vwr, modelSetName, loadScript, asc, modelSet0, bsNew){ +this.vwr = vwr; +this.ms = new JM.ModelSet(vwr, modelSetName); +var adapter = vwr.getModelAdapter(); +this.modelSet0 = modelSet0; +this.merging = (modelSet0 != null && (modelSet0.ac > 0 || modelSet0.vwr.getOperativeSymmetry() != null)); +if (this.merging) { +this.ms.canSkipLoad = false; +} else { +vwr.resetShapes(false); +}this.ms.preserveState = vwr.getPreserveState(); +this.ms.showRebondTimes = vwr.getBoolean(603979934); +if (bsNew == null) { +this.initializeInfo(modelSetName, null); +this.createModelSet(null, null, null); +vwr.setStringProperty("_fileType", ""); +return; +}if (!this.ms.preserveState) this.ms.canSkipLoad = false; +var info = adapter.getAtomSetCollectionAuxiliaryInfo(asc); +info.put("loadScript", loadScript); +this.initializeInfo(adapter.getFileTypeName(asc).toLowerCase().intern(), info); +this.createModelSet(adapter, asc, bsNew); +if (info.get("lowPrecision") != null) { +vwr.setBooleanPropertyTok("doublePrecision", 603979831, false); +}if (this.jbr != null) this.jbr.setLoader(null); +this.jbr = null; +}, "JV.Viewer,~S,JU.SB,~O,JM.ModelSet,JU.BS"); +Clazz.defineMethod(c$, "initializeInfo", +function(name, info){ +this.ms.g3d = this.vwr.gdata; +this.ms.modelSetTypeName = name; +this.ms.isXYZ = (name === "xyz"); +this.ms.msInfo = info; +this.ms.modelSetProperties = this.ms.getInfoM("properties"); +this.ms.haveBioModels = this.ms.getMSInfoB(JV.JC.getBoolName(4)); +this.isMutate = this.ms.getMSInfoB("isMutate"); +if (this.ms.haveBioModels) this.jbr = this.vwr.getJBR().setLoader(this); +this.jmolData = (this.adapterModelCount == 0 ? this.ms.getInfoM("jmolData") : null); +this.fileHeader = this.ms.getInfoM("fileHeader"); +var steps = this.ms.getInfoM("trajectorySteps"); +this.isTrajectory = (steps != null); +if (this.isTrajectory) this.ms.trajectory = this.newTrajectory(this.ms, steps); +this.isPyMOLsession = this.ms.getMSInfoB("isPyMOL"); +this.doAddPDBHydrogens = (this.jbr != null && !this.isTrajectory && !this.isPyMOLsession && !this.ms.getMSInfoB("pdbNoHydrogens") && (this.ms.getMSInfoB("pdbAddHydrogens") || this.vwr.getBoolean(603979894))); +if (info != null) { +info.remove("pdbNoHydrogens"); +info.remove("pdbAddHydrogens"); +info.remove("trajectorySteps"); +if (this.isTrajectory) this.ms.vibrationSteps = info.remove("vibrationSteps"); +if (info.containsKey("highPrecision")) { +this.vwr.setBooleanProperty("legacyJavaFloat", true); +}}this.htGroup1 = this.ms.getInfoM("htGroup1"); +var mod = this.ms.getInfoM("modulationOn"); +if (mod != null) { +this.modulationOn = true; +this.modulationTUV = (mod === Boolean.TRUE ? null : mod); +}this.noAutoBond = this.ms.getMSInfoB("noAutoBond"); +this.noH = this.ms.getMSInfoB("noHydrogen"); +this.is2D = this.ms.getMSInfoB("is2D"); +this.doMinimize = (this.is2D && !this.noH || this.ms.getMSInfoB("minimize3D")) && this.ms.getMSInfoB("doMinimize"); +this.adapterTrajectoryCount = (this.isTrajectory ? this.ms.trajectory.steps.size() : 0); +this.ms.someModelsHaveSymmetry = this.ms.getMSInfoB(JV.JC.getBoolName(1)); +this.someModelsHaveUnitcells = this.ms.getMSInfoB(JV.JC.getBoolName(2)); +this.someModelsAreModulated = this.ms.getMSInfoB(JV.JC.getBoolName(9)); +this.ms.someModelsHaveFractionalCoordinates = this.ms.getMSInfoB(JV.JC.getBoolName(1)); +if (this.merging) { +this.ms.haveBioModels = new Boolean (this.ms.haveBioModels | this.modelSet0.haveBioModels).valueOf(); +this.ms.bioModelset = this.modelSet0.bioModelset; +if (this.ms.bioModelset != null) this.ms.bioModelset.set(this.vwr, this.ms); +this.ms.someModelsHaveSymmetry = new Boolean (this.ms.someModelsHaveSymmetry | this.modelSet0.getMSInfoB(JV.JC.getBoolName(1))).valueOf(); +this.someModelsHaveUnitcells = new Boolean (this.someModelsHaveUnitcells | this.modelSet0.getMSInfoB(JV.JC.getBoolName(2))).valueOf(); +this.ms.someModelsHaveFractionalCoordinates = new Boolean (this.ms.someModelsHaveFractionalCoordinates | this.modelSet0.getMSInfoB(JV.JC.getBoolName(0))).valueOf(); +this.ms.someModelsHaveAromaticBonds = new Boolean (this.ms.someModelsHaveAromaticBonds | this.modelSet0.someModelsHaveAromaticBonds).valueOf(); +this.ms.msInfo.put(JV.JC.getBoolName(1), Boolean.$valueOf(this.ms.someModelsHaveSymmetry)); +this.ms.msInfo.put(JV.JC.getBoolName(2), Boolean.$valueOf(this.someModelsHaveUnitcells)); +this.ms.msInfo.put(JV.JC.getBoolName(0), Boolean.$valueOf(this.ms.someModelsHaveFractionalCoordinates)); +this.ms.msInfo.put(JV.JC.getBoolName(8), Boolean.$valueOf(this.ms.someModelsHaveAromaticBonds)); +}}, "~S,java.util.Map"); +Clazz.defineMethod(c$, "newTrajectory", +function(ms, steps){ +return (J.api.Interface.getInterface("JM.Trajectory", this.vwr, "load")).set(this.vwr, ms, steps); +}, "JM.ModelSet,JU.Lst"); +Clazz.defineMethod(c$, "getGroup3", +function(iGroup){ +return (iGroup >= this.group3Of.length ? null : this.group3Of[iGroup]); +}, "~N"); +Clazz.defineMethod(c$, "getFirstAtomIndex", +function(iGroup){ +return this.firstAtomIndexes[iGroup]; +}, "~N"); +Clazz.defineMethod(c$, "getAtomCount", +function(){ +return this.ms.ac; +}); +Clazz.defineMethod(c$, "createModelSet", +function(adapter, asc, bs2D){ +var nAtoms = (adapter == null ? 0 : adapter.getAtomCount(asc, -1)); +if (nAtoms > 0) JU.Logger.info("reading " + nAtoms + " atoms"); +this.adapterModelCount = (adapter == null ? 1 : adapter.getAtomSetCount(asc)); +this.appendToModelIndex = (this.ms.msInfo == null ? null : (this.ms.msInfo.get("appendToModelIndex"))); +this.appendNew = !this.isMutate && (!this.merging || adapter == null || this.adapterModelCount > 1 || this.isTrajectory || this.vwr.getBoolean(603979792) && this.appendToModelIndex == null); +this.htAtomMap.clear(); +this.chainOf = new Array(32); +this.group3Of = new Array(32); +this.seqcodes = Clazz.newIntArray (32, 0); +this.firstAtomIndexes = Clazz.newIntArray (32, 0); +this.currentChainID = 2147483647; +this.currentChain = null; +this.currentGroupInsertionCode = '\uFFFF'; +this.currentGroup3 = "xxxxx"; +this.iModel = -1; +this.model = null; +if (this.merging) this.mergeTrajAndVib(this.modelSet0, this.ms); +this.initializeAtomBondModelCounts(nAtoms); +if (!this.noH && bs2D != null && (this.doMinimize || this.is2D)) { +bs2D.setBits(this.baseAtomIndex, this.baseAtomIndex + adapter.getAtomCount(asc, 0)); +}if (adapter == null) { +this.setModelNameNumberProperties(0, -1, "", 1, null, null, null); +} else { +if (this.adapterModelCount > 0) { +JU.Logger.info("ModelSet: haveSymmetry:" + this.ms.someModelsHaveSymmetry + " haveUnitcells:" + this.someModelsHaveUnitcells + " haveFractionalCoord:" + this.ms.someModelsHaveFractionalCoordinates); +JU.Logger.info(this.adapterModelCount + " model" + (this.ms.mc == 1 ? "" : "s") + " in this collection. Use getProperty \"modelInfo\" or" + " getProperty \"auxiliaryInfo\" to inspect them."); +}var q = this.ms.getInfoM("defaultOrientationQuaternion"); +if (q != null) { +JU.Logger.info("defaultOrientationQuaternion = " + q); +JU.Logger.info("Use \"set autoLoadOrientation TRUE\" before loading or \"restore orientation DEFAULT\" after loading to view this orientation."); +}this.iterateOverAllNewModels(adapter, asc); +var iterBond = adapter.getBondIterator(asc); +var haveBonds = (iterBond != null); +this.iterateOverAllNewAtoms(adapter, asc, haveBonds); +var mad = this.vwr.getMadBond(); +if (haveBonds) { +this.ms.defaultCovalentMad = (this.jmolData == null ? mad : 0); +this.iterateOverAllNewBonds(iterBond); +}this.ms.defaultCovalentMad = mad; +if (this.merging && !this.appendNew) { +var info = adapter.getAtomSetAuxiliaryInfo(asc, 0); +this.ms.setInfo(this.baseModelIndex, "initialAtomCount", info.get("initialAtomCount")); +this.ms.setInfo(this.baseModelIndex, "initialBondCount", info.get("initialBondCount")); +}this.initializeUnitCellAndSymmetry(); +this.initializeBonding(); +}this.finalizeGroupBuild(); +if (this.is2D && this.doMinimize) { +this.setupMinimization(); +}if (this.doAddPDBHydrogens) this.jbr.finalizeHydrogens(); +if (adapter != null) { +this.ms.calculatePolymers(this.groups, this.groupCount, this.baseGroupIndex, null); +if (this.jbr != null) this.jbr.iterateOverAllNewStructures(adapter, asc); +}this.setDefaultRendering(this.vwr.getInt(553648170)); +var rd = this.vwr.rd; +var ac = this.ms.ac; +var atoms = this.ms.at; +for (var i = this.baseAtomIndex; i < ac; i++) atoms[i].setMadAtom(this.vwr, rd); + +var models = this.ms.am; +for (var i = models[this.baseModelIndex].firstAtomIndex; i < ac; i++) if (atoms[i] != null) models[atoms[i].mi].bsAtoms.set(i); + +this.freeze(); +this.finalizeShapes(); +this.vwr.setModelSet(this.ms); +this.setAtomProperties(); +if (adapter != null) adapter.finish(asc); +if (this.modelSet0 != null) { +this.modelSet0.releaseModelSet(); +}this.modelSet0 = null; +}, "J.api.JmolAdapter,~O,JU.BS"); +Clazz.defineMethod(c$, "mergeTrajAndVib", +function(oldSet, newSet){ +this.baseModelCount = oldSet.mc; +this.baseTrajectoryCount = 0; +if (oldSet.trajectory == null) { +if (this.isTrajectory) this.newTrajectory(oldSet, new JU.Lst()); +}if (oldSet.trajectory == null || oldSet.mc == 0) return; +this.baseTrajectoryCount = oldSet.mc; +var n = oldSet.trajectory.steps.size(); +for (var i = n; i < this.baseTrajectoryCount; i++) oldSet.trajectory.steps.addLast(null); + +if (this.isTrajectory) { +if (oldSet.vibrationSteps == null) { +oldSet.vibrationSteps = new JU.Lst(); +for (var i = n; --i >= 0; ) oldSet.vibrationSteps.addLast(null); + +}n = newSet.trajectory.steps.size(); +for (var i = 0; i < n; i++) { +oldSet.trajectory.steps.addLast(newSet.trajectory.steps.get(i)); +oldSet.vibrationSteps.addLast(newSet.vibrationSteps == null ? null : newSet.vibrationSteps.get(i)); +} +} else { +newSet.trajectory = this.newTrajectory(newSet, null); +}newSet.vibrationSteps = oldSet.vibrationSteps; +newSet.trajectory.steps = oldSet.trajectory.steps; +oldSet.trajectory = null; +}, "JM.ModelSet,JM.ModelSet"); +Clazz.defineMethod(c$, "setDefaultRendering", +function(maxAtoms){ +if (this.isPyMOLsession) return; +var sb = new JU.SB(); +var modelCount = this.ms.mc; +var models = this.ms.am; +for (var i = this.baseModelIndex; i < modelCount; i++) if (models[i].isBioModel) (models[i]).getDefaultLargePDBRendering(sb, maxAtoms); + +if (sb.length() == 0) return; +sb.append("select *;"); +var script = this.ms.getInfoM("jmolscript"); +if (script == null) script = ""; +sb.append(script); +this.ms.msInfo.put("jmolscript", sb.toString()); +}, "~N"); +Clazz.defineMethod(c$, "setAtomProperties", +function(){ +var modelCount = this.ms.mc; +for (var i = this.baseModelIndex; i < modelCount; i++) { +var atomProperties = this.ms.getInfo(i, "atomProperties"); +if (this.jmolData != null) this.addJmolDataProperties(this.ms.am[i], this.ms.getInfo(i, "jmolDataProperties")); +var groupList = this.ms.getInfo(i, "groupPropertyList"); +if (this.ms.am[i].isBioModel && this.ms.getInfo(i, "dssr") != null) this.vwr.getAnnotationParser(true).setGroup1(this.ms, i); +if (atomProperties == null) continue; +for (var entry, $entry = atomProperties.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var value = entry.getValue(); +var bs = this.ms.getModelAtomBitSetIncludingDeleted(i, true); +if (this.doAddPDBHydrogens) { +var isGroup = (groupList != null && JU.PT.isOneOf(key, groupList)); +value = this.jbr.fixPropertyValue(bs, value, isGroup); +}key = "property_" + key.toLowerCase(); +JU.Logger.info("creating " + key + " for model " + this.ms.getModelName(i)); +this.vwr.setData(key, Clazz.newArray(-1, [key, value, bs, Integer.$valueOf(-1), Boolean.FALSE, entry]), this.ms.ac, 0, 0, 2147483647, 0); +} +this.ms.setInfo(i, "atomProperties", null); +} +}); +Clazz.defineMethod(c$, "initializeAtomBondModelCounts", +function(nAtoms){ +var trajectoryCount = this.adapterTrajectoryCount; +if (this.merging) { +if (this.appendNew) { +this.baseModelIndex = this.baseModelCount; +this.ms.mc = this.baseModelCount + this.adapterModelCount; +} else { +this.baseModelIndex = (this.appendToModelIndex == null ? this.vwr.am.cmi : this.appendToModelIndex.intValue()); +if (this.baseModelIndex < 0 || this.baseModelIndex >= this.baseModelCount) this.baseModelIndex = this.baseModelCount - 1; +this.ms.mc = this.baseModelCount; +}this.ms.ac = this.baseAtomIndex = this.modelSet0.ac; +this.ms.bondCount = this.modelSet0.bondCount; +this.$mergeGroups = this.modelSet0.getGroups(); +this.groupCount = this.baseGroupIndex = this.$mergeGroups.length; +this.ms.mergeModelArrays(this.modelSet0); +this.ms.growAtomArrays(this.ms.ac + nAtoms); +} else { +this.ms.mc = this.adapterModelCount; +this.ms.ac = 0; +this.ms.bondCount = 0; +this.ms.at = new Array(nAtoms); +this.ms.bo = new Array(250 + nAtoms); +}if (this.doAddPDBHydrogens) this.jbr.initializeHydrogenAddition(); +if (trajectoryCount > 1) this.ms.mc += trajectoryCount - 1; +this.ms.am = JU.AU.arrayCopyObject(this.ms.am, this.ms.mc); +this.ms.modelFileNumbers = JU.AU.arrayCopyI(this.ms.modelFileNumbers, this.ms.mc); +this.ms.modelNumbers = JU.AU.arrayCopyI(this.ms.modelNumbers, this.ms.mc); +this.ms.modelNumbersForAtomLabel = JU.AU.arrayCopyS(this.ms.modelNumbersForAtomLabel, this.ms.mc); +this.ms.modelNames = JU.AU.arrayCopyS(this.ms.modelNames, this.ms.mc); +this.ms.frameTitles = JU.AU.arrayCopyS(this.ms.frameTitles, this.ms.mc); +if (this.merging) for (var i = 0; i < this.modelSet0.mc; i++) (this.ms.am[i] = this.modelSet0.am[i]).ms = this.ms; + +}, "~N"); +Clazz.defineMethod(c$, "mergeGroups", +function(){ +var info = this.modelSet0.getModelSetAuxiliaryInfo(null); +var mergeGroup3Lists = info.get("group3Lists"); +var mergeGroup3Counts = info.get("group3Counts"); +var nLists = (mergeGroup3Lists == null ? 0 : mergeGroup3Lists.length); +if (mergeGroup3Lists != null) { +for (var i = 0; i < this.baseModelCount; i++) { +if (i < nLists) { +this.group3Lists[i + 1] = mergeGroup3Lists[i + 1]; +this.group3Counts[i + 1] = mergeGroup3Counts[i + 1]; +}this.structuresDefinedInFile.set(i); +} +this.group3Lists[0] = mergeGroup3Lists[0]; +this.group3Counts[0] = mergeGroup3Counts[0]; +}if (!this.appendNew && this.ms.haveBioModels) this.structuresDefinedInFile.clear(this.baseModelIndex); +}); +Clazz.defineMethod(c$, "iterateOverAllNewModels", +function(adapter, asc){ +this.group3Lists = new Array(this.ms.mc + 1); +this.group3Counts = JU.AU.newInt2(this.ms.mc + 1); +this.structuresDefinedInFile = new JU.BS(); +if (this.merging) this.mergeGroups(); +var iTrajectory = (this.isTrajectory ? this.baseTrajectoryCount : -1); +var ipt = this.baseModelIndex; +for (var i = 0; i < this.adapterModelCount; ++i, ++ipt) { +var modelNumber = adapter.getAtomSetNumber(asc, i); +var modelName = adapter.getAtomSetName(asc, i); +var modelAuxiliaryInfo = adapter.getAtomSetAuxiliaryInfo(asc, i); +if (modelAuxiliaryInfo.containsKey("modelID")) modelAuxiliaryInfo.put("modelID0", modelAuxiliaryInfo.get("modelID")); +var modelProperties = modelAuxiliaryInfo.get("modelProperties"); +if (!this.merging || this.appendNew) { +var ftype = modelAuxiliaryInfo.get("fileType"); +this.vwr.setStringProperty("_fileType", ftype); +this.vwr.fm.setFileType(ftype); +}if (modelName == null) modelName = (this.jmolData != null && this.jmolData.indexOf(";") > 2 ? this.jmolData.substring(this.jmolData.indexOf(":") + 2, this.jmolData.indexOf(";")) : this.appendNew ? "" + (modelNumber % 1000000) : ""); +this.setModelNameNumberProperties(ipt, iTrajectory, modelName, modelNumber, modelProperties, modelAuxiliaryInfo, this.jmolData); +} +var m = this.ms.am[this.appendToModelIndex == null ? this.baseModelIndex : this.ms.mc - 1]; +this.vwr.setSmilesString(this.ms.msInfo.get("smilesString")); +var loadState = this.ms.msInfo.remove("loadState"); +var loadScript = this.ms.msInfo.remove("loadScript"); +if (loadScript.indexOf("Viewer.AddHydrogens") < 0 || !m.isModelKit) { +var lines = JU.PT.split(loadState, "\n"); +var sb = new JU.SB(); +for (var i = 0; i < lines.length; i++) { +var pt = m.loadState.indexOf(lines[i]); +if (pt < 0 || pt != m.loadState.lastIndexOf(lines[i])) sb.append(lines[i]).appendC('\n'); +} +m.loadState += m.loadScript.toString() + sb.toString(); +m.loadScript = new JU.SB(); +if (loadScript.indexOf("load append ") >= 0 || loadScript.indexOf("data \"append ") >= 0) { +loadScript.insert(0, ";var anew = appendNew;"); +loadScript.append(";set appendNew anew"); +}m.loadScript.append(" ").appendSB(loadScript).append(";\n"); +}if (this.isTrajectory) { +var n = (this.ms.mc - ipt + 1); +JU.Logger.info(n + " trajectory steps read"); +this.ms.setInfo(this.baseModelCount, "trajectoryStepCount", Integer.$valueOf(n)); +for (var ia = this.adapterModelCount, i = ipt; i < this.ms.mc; i++, ia++) { +this.ms.am[i] = this.ms.am[this.baseModelCount]; +this.ms.modelNumbers[i] = adapter.getAtomSetNumber(asc, ia); +this.ms.modelNames[i] = adapter.getAtomSetName(asc, ia); +this.structuresDefinedInFile.set(i); +} +}this.finalizeModels(this.baseModelCount); +}, "J.api.JmolAdapter,~O"); +Clazz.defineMethod(c$, "setModelNameNumberProperties", +function(modelIndex, trajectoryBaseIndex, modelName, modelNumber, modelProperties, modelAuxiliaryInfo, jmolData){ +if (this.appendNew) { +var modelIsPDB = (modelAuxiliaryInfo != null && Boolean.TRUE === modelAuxiliaryInfo.get(JV.JC.getBoolName(4))); +this.ms.am[modelIndex] = (modelIsPDB ? this.jbr.getBioModel(modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo) : new JM.Model().set(this.ms, modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo)); +this.ms.modelNumbers[modelIndex] = modelNumber; +this.ms.modelNames[modelIndex] = modelName; +if (modelIsPDB) this.jbr.setGroupLists(modelIndex); +} else { +var atomInfo = modelAuxiliaryInfo.get("PDB_CONECT_firstAtom_count_max"); +if (atomInfo != null) this.ms.setInfo(modelIndex, "PDB_CONECT_firstAtom_count_max", atomInfo); +}var models = this.ms.am; +var atoms = this.ms.at; +models[modelIndex].bsAtoms.set(atoms.length + 1); +models[modelIndex].bsAtoms.clear(atoms.length + 1); +var codes = this.ms.getInfo(modelIndex, "altLocs"); +models[modelIndex].altLocCount = (codes == null ? 0 : codes.length); +if (codes != null) { +var altlocs = codes.toCharArray(); +java.util.Arrays.sort(altlocs); +codes = String.valueOf(altlocs); +this.ms.setInfo(modelIndex, "altLocs", codes); +}codes = this.ms.getInfo(modelIndex, "insertionCodes"); +models[modelIndex].insertionCount = (codes == null ? 0 : codes.length); +var isModelKit = (this.ms.modelSetName != null && this.ms.modelSetName.startsWith("Jmol Model Kit") || modelName.startsWith("Jmol Model Kit") || "Jme".equals(this.ms.getInfo(modelIndex, "fileType")) && this.is2D); +models[modelIndex].isModelKit = isModelKit; +}, "~N,~N,~S,~N,java.util.Properties,java.util.Map,~S"); +Clazz.defineMethod(c$, "finalizeModels", +function(baseModelCount){ +var modelCount = this.ms.mc; +if (modelCount == baseModelCount) return; +var sNum; +var modelnumber = 0; +var lastfilenumber = -1; +var modelNumbers = this.ms.modelNumbers; +var modelNames = this.ms.modelNames; +if (this.isTrajectory) for (var i = baseModelCount; ++i < this.ms.mc; ) modelNumbers[i] = modelNumbers[i - 1] + 1; + +if (baseModelCount > 0) { +if (modelNumbers[0] < 1000000) { +for (var i = 0; i < baseModelCount; i++) { +if (modelNames[i].length == 0) modelNames[i] = "" + modelNumbers[i]; +modelNumbers[i] += 1000000; +this.ms.modelNumbersForAtomLabel[i] = "1." + (i + 1); +} +}var filenumber = modelNumbers[baseModelCount - 1]; +filenumber -= filenumber % 1000000; +if (modelNumbers[baseModelCount] < 1000000) filenumber += 1000000; +for (var i = baseModelCount; i < modelCount; i++) modelNumbers[i] += filenumber; + +}var models = this.ms.am; +for (var i = baseModelCount; i < modelCount; ++i) { +this.ms.setInfo(i, "fileType", this.ms.modelSetTypeName); +if (this.fileHeader != null) this.ms.setInfo(i, "fileHeader", this.fileHeader); +var filenumber = Clazz.doubleToInt(modelNumbers[i] / 1000000); +if (filenumber != lastfilenumber) { +modelnumber = 0; +lastfilenumber = filenumber; +}modelnumber++; +if (filenumber == 0) { +sNum = "" + this.ms.getModelNumber(i); +filenumber = 1; +} else { +sNum = filenumber + "." + modelnumber; +}this.ms.modelNumbersForAtomLabel[i] = sNum; +models[i].fileIndex = filenumber - 1; +this.ms.modelFileNumbers[i] = filenumber * 1000000 + modelnumber; +if (modelNames[i] == null || modelNames[i].length == 0) modelNames[i] = sNum; +} +if (this.merging) for (var i = 0; i < baseModelCount; i++) models[i].ms = this.ms; + +for (var i = 0; i < modelCount; i++) { +this.ms.setInfo(i, "modelName", modelNames[i]); +this.ms.setInfo(i, "modelNumber", Integer.$valueOf(modelNumbers[i] % 1000000)); +this.ms.setInfo(i, "modelFileNumber", Integer.$valueOf(this.ms.modelFileNumbers[i])); +this.ms.setInfo(i, "modelNumberDotted", this.ms.getModelNumberDotted(i)); +var codes = this.ms.getInfo(i, "altLocs"); +if (codes != null) { +JU.Logger.info("model " + this.ms.getModelNumberDotted(i) + " alternative locations: " + codes); +}} +}, "~N"); +Clazz.defineMethod(c$, "iterateOverAllNewAtoms", +function(adapter, asc, haveBonds){ +var iLast = -1; +var siteBase = 0; +var isPdbThisModel = false; +var addH = false; +var isLegacyHAddition = false; +var iterAtom = adapter.getAtomIterator(asc); +var nAtoms = adapter.getAtomCount(asc, -1); +this.ms.setCapacity(adapter.getAtomCount(asc, -1)); +var nRead = 0; +var models = this.ms.am; +if (this.ms.mc > 0) this.nullGroup = new JM.Group().setGroup( new JM.Chain(this.ms.am[this.baseModelIndex], 32, 0), "", 0, -1, -1); +while (iterAtom.hasNext()) { +nRead++; +var modelIndex = iterAtom.getAtomSetIndex() + this.baseModelIndex; +if (modelIndex != iLast) { +this.iChain = 0; +this.iModel = modelIndex; +this.model = models[modelIndex]; +var mbs = this.model.bsAtoms; +if (this.merging && !this.appendNew && this.vwr.getOperativeSymmetry() != null) { +siteBase = this.getAtomSiteBase(mbs); +}this.currentChainID = 2147483647; +this.isNewChain = true; +mbs.set(this.ms.ac + nAtoms); +mbs.clearAll(); +this.model.isOrderly = (this.appendToModelIndex == null); +isPdbThisModel = this.model.isBioModel; +iLast = modelIndex; +addH = isPdbThisModel && this.doAddPDBHydrogens; +if (this.jbr != null) this.jbr.setHaveHsAlready(false); +}var group3 = iterAtom.getGroup3(); +var chainID = iterAtom.getChainID(); +this.checkNewGroup(adapter, chainID, group3, iterAtom.getSequenceNumber(), iterAtom.getInsertionCode(), addH, isLegacyHAddition); +var isotope = iterAtom.getElementNumber(); +if (addH && JU.Elements.getElementNumber(isotope) == 1) this.jbr.setHaveHsAlready(true); +var name = iterAtom.getAtomName(); +var charge = (addH ? this.getPdbCharge(group3, name) : iterAtom.getFormalCharge()); +var atom = this.addAtom(isPdbThisModel, iterAtom.getSymmetry(), iterAtom.getAtomSite() + siteBase, isotope, name, charge, iterAtom.getPartialCharge(), iterAtom.getTensors(), iterAtom.getOccupancy(), iterAtom.getBfactor(), iterAtom.getXYZ(), iterAtom.getIsHetero(), iterAtom.getSerial(), iterAtom.getSeqID(), group3, iterAtom.getVib(), iterAtom.getAltLoc(), iterAtom.getRadius(), iterAtom.getBondRadius()); +if (haveBonds) this.htAtomMap.put(iterAtom.getUniqueID(), atom); +} +if (this.groupCount > 0 && addH) { +this.jbr.addImplicitHydrogenAtoms(adapter, this.groupCount - 1, this.isNewChain && !isLegacyHAddition ? 1 : 0); +}iLast = -1; +var vdwtypeLast = null; +var atoms = this.ms.at; +models[0].firstAtomIndex = 0; +for (var i = 0; i < this.ms.ac; i++) { +if (atoms[i] != null && atoms[i].mi > iLast) { +iLast = atoms[i].mi; +var m = models[iLast]; +m.firstAtomIndex = i; +m.isOrderly = (m.act == m.bsAtoms.length() - i); +var vdwtype = this.ms.getDefaultVdwType(iLast); +if (vdwtype !== vdwtypeLast) { +JU.Logger.info("Default Van der Waals type for model" + " set to " + vdwtype.getVdwLabel()); +vdwtypeLast = vdwtype; +}}} +JU.Logger.info(nRead + " atoms created"); +}, "J.api.JmolAdapter,~O,~B"); +Clazz.defineMethod(c$, "getAtomSiteBase", +function(mbs){ +var base = 0; +for (var i = mbs.nextSetBit(0); i >= 0; i = mbs.nextSetBit(i + 1)) { +var a = this.ms.at[i]; +if (!JM.AtomCollection.isDeleted(a) && a.atomSite > base) { +base = a.atomSite; +}} +return base; +}, "JU.BS"); +Clazz.defineMethod(c$, "addJmolDataProperties", +function(m, jmolDataProperties){ +if (jmolDataProperties == null) return; +var bs = m.bsAtoms; +var nAtoms = bs.cardinality(); +for (var e, $e = jmolDataProperties.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +var data = e.getValue(); +if (data.length != nAtoms) return; +var tok = (key.startsWith("property_") ? 1715472409 : JS.T.getTokFromName(key)); +switch (tok) { +default: +if (JS.T.tokAttr(tok, 2048)) { +this.vwr.setAtomProperty(bs, tok, 0, 0, null, data, null); +break; +}case 1111492629: +case 1111492630: +case 1111492631: +key = "property_" + key; +tok = 1715472409; +case 1715472409: +this.vwr.setData(key, Clazz.newArray(-1, [key, data, bs, Integer.$valueOf(1)]), 0, 0, 0, 0, 0); +} +} +}, "JM.Model,java.util.Map"); +Clazz.defineMethod(c$, "getPdbCharge", +function(group3, name){ +return (group3.equals("ARG") && name.equals("NH1") || group3.equals("LYS") && name.equals("NZ") || group3.equals("HIS") && name.equals("ND1") ? 1 : 0); +}, "~S,~S"); +Clazz.defineMethod(c$, "addAtom", +function(isPDB, atomSymmetry, atomSite, atomicAndIsotopeNumber, atomName, formalCharge, partialCharge, tensors, occupancy, bfactor, xyz, isHetero, atomSerial, atomSeqID, group3, vib, alternateLocationID, radius, bondRadius){ +var specialAtomID = 0; +var atomType = null; +if (atomName != null) { +var i; +if ((i = atomName.indexOf('\0')) >= 0) { +atomType = atomName.substring(i + 1); +atomName = atomName.substring(0, i); +}if (isPDB) { +if (atomName.indexOf('*') >= 0) atomName = atomName.$replace('*', '\''); +specialAtomID = this.vwr.getJBR().lookupSpecialAtomID(atomName); +if (specialAtomID == 2 && "CA".equalsIgnoreCase(group3)) specialAtomID = 0; +}}var atom = this.ms.addAtom(this.iModel, this.nullGroup, atomicAndIsotopeNumber, atomName, atomType, atomSerial, atomSeqID, atomSite, xyz, radius, vib, formalCharge, partialCharge, occupancy, bfactor, tensors, isHetero, specialAtomID, atomSymmetry, bondRadius); +atom.altloc = alternateLocationID; +return atom; +}, "~B,JU.BS,~N,~N,~S,~N,~N,JU.Lst,~N,~N,JU.P3,~B,~N,~N,~S,JU.V3,~S,~N,~N"); +Clazz.defineMethod(c$, "checkNewGroup", +function(adapter, chainID, group3, groupSequenceNumber, groupInsertionCode, addH, isLegacyHAddition){ +if (chainID != this.currentChainID) { +this.currentChainID = chainID; +this.currentChain = this.getOrAllocateChain(this.model, chainID); +this.currentGroupInsertionCode = '\uFFFF'; +this.currentGroupSequenceNumber = -1; +this.currentGroup3 = "xxxx"; +this.isNewChain = true; +}var group3i = (group3 == null ? null : group3.intern()); +if (groupSequenceNumber != this.currentGroupSequenceNumber || groupInsertionCode != this.currentGroupInsertionCode || group3i !== this.currentGroup3) { +if (this.groupCount > 0 && addH) { +this.jbr.addImplicitHydrogenAtoms(adapter, this.groupCount - 1, this.isNewChain && !isLegacyHAddition ? 1 : 0); +this.jbr.setHaveHsAlready(false); +}this.currentGroupSequenceNumber = groupSequenceNumber; +this.currentGroupInsertionCode = groupInsertionCode; +this.currentGroup3 = group3i; +while (this.groupCount >= this.group3Of.length) { +this.chainOf = JU.AU.doubleLength(this.chainOf); +this.group3Of = JU.AU.doubleLengthS(this.group3Of); +this.seqcodes = JU.AU.doubleLengthI(this.seqcodes); +this.firstAtomIndexes = JU.AU.doubleLengthI(this.firstAtomIndexes); +} +this.firstAtomIndexes[this.groupCount] = this.ms.ac; +this.chainOf[this.groupCount] = this.currentChain; +this.group3Of[this.groupCount] = group3; +this.seqcodes[this.groupCount] = JM.Group.getSeqcodeFor(groupSequenceNumber, groupInsertionCode); +++this.groupCount; +}}, "J.api.JmolAdapter,~N,~S,~N,~S,~B,~B"); +Clazz.defineMethod(c$, "getOrAllocateChain", +function(model, chainID){ +var chain = model.getChain(chainID); +if (chain != null) return chain; +if (model.chainCount == model.chains.length) model.chains = (model.chainCount == 0 ? new Array(2) : JU.AU.doubleLength(model.chains)); +return model.chains[model.chainCount++] = new JM.Chain(model, chainID, (chainID == 0 || chainID == 32 ? 0 : ++this.iChain)); +}, "JM.Model,~N"); +Clazz.defineMethod(c$, "iterateOverAllNewBonds", +function(iterBond){ +var force1 = this.isMutate && !this.vwr.getBoolean(603979894); +var haveMultipleBonds = false; +while (iterBond.hasNext()) { +var iOrder = iterBond.getEncodedOrder(); +var order = (force1 ? 1 : iOrder); +var b = this.bondAtoms(iterBond.getAtomUniqueID1(), iterBond.getAtomUniqueID2(), order); +if (b != null) { +if (order > 1 && order != 1025 && order != 1041) haveMultipleBonds = true; +var radius = iterBond.getRadius(); +if (radius > 0) b.setMad(Clazz.floatToShort(radius * 2000)); +var colix = iterBond.getColix(); +if (colix >= 0) b.colix = colix; +b.order |= (iOrder & 98304); +}} +if (haveMultipleBonds && this.ms.someModelsHaveSymmetry && !this.vwr.getBoolean(603979794)) JU.Logger.info("ModelSet: use \"set appletSymmetryToBonds TRUE \" to apply the file-based multiple bonds to symmetry-generated atoms."); +}, "J.api.JmolAdapterBondIterator"); +Clazz.defineMethod(c$, "bondAtoms", +function(atomUid1, atomUid2, order){ +var atom1 = this.htAtomMap.get(atomUid1); +if (atom1 == null) { +JU.Logger.error("bondAtoms cannot find atomUid1?:" + atomUid1); +return null; +}var atom2 = this.htAtomMap.get(atomUid2); +if (atom2 == null) { +JU.Logger.error("bondAtoms cannot find atomUid2?:" + atomUid2); +return null; +}if (atom1.isBonded(atom2)) return null; +var isNear = (order == 1025); +var isFar = (order == 1041); +var bond; +if (isNear || isFar) { +var m = atom1.getModelIndex(); +if (m != this.lastModel) { +this.lastModel = m; +var info = this.ms.getModelAuxiliaryInfo(m); +this.isMOL2D = (this.is2D || info != null && "2D".equals(info.get("dimension"))); +}bond = this.ms.bondMutually(atom1, atom2, (this.isMOL2D ? order : 513), this.ms.getDefaultMadFromOrder(1), 0); +if (this.isMOL2D) { +if (this.vStereo == null) { +this.vStereo = new JU.Lst(); +}this.vStereo.addLast(bond); +}} else { +bond = this.ms.bondMutually(atom1, atom2, order, this.ms.getDefaultMadFromOrder(order), 0); +if (bond.isAromatic()) { +this.ms.someModelsHaveAromaticBonds = true; +}}if (this.ms.bondCount == this.ms.bo.length) { +this.ms.bo = JU.AU.arrayCopyObject(this.ms.bo, this.ms.bondCount + 250); +}this.ms.setBond(this.ms.bondCount++, bond); +return bond; +}, "~O,~O,~N"); +Clazz.defineMethod(c$, "initializeUnitCellAndSymmetry", +function(){ +if (this.someModelsAreModulated && this.ms.bsModulated == null) this.ms.bsModulated = new JU.BS(); +var haveMergeCells = (this.modelSet0 != null && this.modelSet0.unitCells != null); +if (this.someModelsHaveUnitcells || haveMergeCells) { +this.ms.unitCells = new Array(this.ms.mc); +this.ms.haveUnitCells = true; +for (var i = 0, pt = 0; i < this.ms.mc; i++) { +if (haveMergeCells && i < this.baseModelCount) { +this.ms.unitCells[i] = this.modelSet0.unitCells[i]; +} else if (this.ms.getModelAuxiliaryInfo(i).get("spaceGroupIndex") != null) { +this.ms.unitCells[i] = J.api.Interface.getSymmetry(this.vwr, "file"); +var notionalCell = null; +if (this.isTrajectory) { +var lst = this.ms.getInfoM("unitCells"); +if (lst != null) notionalCell = lst.get(pt++); +}(this.ms.unitCells[i]).setSymmetryInfoFromFile(this.ms, i, notionalCell); +}} +}if (this.appendNew && this.ms.someModelsHaveSymmetry) { +this.ms.getAtoms(1088421903, null); +var atoms = this.ms.at; +for (var iAtom = this.baseAtomIndex, iModel = -1, i0 = 0; iAtom < this.ms.ac; iAtom++) { +if (atoms[iAtom].mi != iModel) { +iModel = atoms[iAtom].mi; +i0 = this.baseAtomIndex + this.ms.getInfoI(iModel, "presymmetryAtomIndex"); +if (i0 < 0) break; +var n = this.ms.getInfoI(iModel, "presymmetryAtomCount"); +this.ms.am[iModel].auxiliaryInfo.put("presymmetryAtomIndex", Integer.$valueOf(i0)); +this.ms.setInfo(iModel, "asymmetricUnit", this.ms.am[iModel].bsAsymmetricUnit = JU.BSUtil.newBitSet2(i0, i0 + n)); +i0 += n; +}if (iAtom >= i0) this.ms.bsSymmetry.set(iAtom); +} +}if (this.appendNew && this.ms.someModelsHaveFractionalCoordinates) { +var atoms = this.ms.at; +var modelIndex = -1; +var c = null; +var isFractional = false; +for (var i = this.baseAtomIndex; i < this.ms.ac; i++) { +if (atoms[i].mi != modelIndex) { +modelIndex = atoms[i].mi; +c = this.ms.getUnitCell(modelIndex); +isFractional = (c != null && c.getCoordinatesAreFractional()); +}if (isFractional) { +var m = this.ms.getModulation(i); +var uca = (m == null ? c : atoms[i].getUnitCell()); +uca.toCartesian(uca.toSupercell(atoms[i]), false); +}} +for (var imodel = this.baseModelIndex; imodel < this.ms.mc; imodel++) if (this.ms.isTrajectory(imodel)) this.ms.trajectory.setUnitCell(imodel); + +}}); +Clazz.defineMethod(c$, "initializeBonding", +function(){ +var modelCount = this.ms.mc; +var models = this.ms.am; +var modelAtomCount = 0; +var bsExclude = this.ms.getInfoM("bsExcludeBonding"); +if (bsExclude == null) { +bsExclude = (this.ms.getInfoM(JV.JC.getBoolName(3)) == null ? null : new JU.BS()); +if (bsExclude != null) this.ms.setPdbConectBonding(this.baseAtomIndex, this.baseModelIndex, bsExclude); +}var symmetryAlreadyAppliedToBonds = this.vwr.getBoolean(603979794); +var doAutoBond = this.vwr.getBoolean(603979798); +var forceAutoBond = this.vwr.getBoolean(603979848); +var bs = null; +var autoBonding = false; +if (!this.noAutoBond) for (var i = this.baseModelIndex; i < modelCount; i++) { +modelAtomCount = models[i].bsAtoms.cardinality(); +var modelBondCount = this.ms.getInfoI(i, "initialBondCount"); +var modelIsPDB = models[i].isBioModel; +if (modelBondCount < 0) { +modelBondCount = this.ms.bondCount; +}var doBond = (forceAutoBond || doAutoBond && (modelBondCount == 0 || modelIsPDB && this.jmolData == null && (this.ms.getMSInfoB("havePDBHeaderName") || modelBondCount < Clazz.doubleToInt(modelAtomCount / 2)) || this.ms.getInfoB(i, "hasSymmetry") && !symmetryAlreadyAppliedToBonds && !this.ms.getInfoB(i, "hasBonds"))); +if (!doBond) continue; +autoBonding = true; +if (this.merging || modelCount > 1) { +if (bs == null) bs = JU.BS.newN(this.ms.ac); +if (i == this.baseModelIndex || !this.isTrajectory) bs.or(models[i].bsAtoms); +}} +if (this.modulationOn) this.ms.setModulation(null, true, this.modulationTUV, false); +if (autoBonding) { +this.ms.autoBondBs4(bs, bs, bsExclude, null, this.ms.defaultCovalentMad, this.vwr.getBoolean(603979872), null); +JU.Logger.info("ModelSet: autobonding; use autobond=false to not generate bonds automatically"); +} else { +JU.Logger.info("ModelSet: not autobonding; use forceAutobond=true to force automatic bond creation"); +}}); +Clazz.defineMethod(c$, "finalizeGroupBuild", +function(){ +this.groups = new Array(this.groupCount); +if (this.merging) for (var i = 0; i < this.$mergeGroups.length; i++) (this.groups[i] = this.$mergeGroups[i]).chain.model.ms = this.ms; + +for (var i = this.baseGroupIndex; i < this.groupCount; ++i) this.distinguishAndPropagateGroup(i, this.chainOf[i], this.group3Of[i], this.seqcodes[i], this.firstAtomIndexes[i], (i == this.groupCount - 1 ? this.ms.ac : this.firstAtomIndexes[i + 1]) - 1); + +if (this.group3Lists != null) { +this.ms.msInfo.put("group3Lists", this.group3Lists); +this.ms.msInfo.put("group3Counts", this.group3Counts); +for (var i = 0; i < this.group3Counts.length; i++) if (this.group3Counts[i] == null) this.group3Counts[i] = Clazz.newIntArray (0, 0); + +}}); +Clazz.defineMethod(c$, "distinguishAndPropagateGroup", +function(groupIndex, chain, group3, seqcode, firstAtomIndex, lastAtomIndex){ +if (lastAtomIndex < firstAtomIndex) throw new NullPointerException(); +var group = (group3 == null || this.jbr == null ? null : this.jbr.distinguishAndPropagateGroup(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, this.specialAtomIndexes, this.ms.at)); +var key; +if (group == null) { +group = new JM.Group().setGroup(chain, group3, seqcode, firstAtomIndex, lastAtomIndex); +if (this.jbr != null) group.groupID = this.jbr.getGroupID(group3); +key = "o>"; +} else { +key = (group.isProtein() ? "p>" : group.isNucleic() ? "n>" : group.isCarbohydrate() ? "c>" : "o>"); +}if (group3 != null) { +this.countGroup(this.ms.at[firstAtomIndex].mi, key, group3); +if (group.isNucleic()) { +var g1 = (this.htGroup1 == null ? null : this.htGroup1.get(group3)); +if (g1 != null) group.group1 = g1.charAt(0); +}}this.addGroup(chain, group); +this.groups[groupIndex] = group; +group.groupIndex = groupIndex; +for (var i = lastAtomIndex + 1; --i >= firstAtomIndex; ) this.ms.at[i].group = group; + +}, "~N,JM.Chain,~S,~N,~N,~N"); +Clazz.defineMethod(c$, "addGroup", +function(chain, group){ +if (chain.groupCount == chain.groups.length) chain.groups = JU.AU.doubleLength(chain.groups); +chain.groups[chain.groupCount++] = group; +}, "JM.Chain,JM.Group"); +Clazz.defineMethod(c$, "countGroup", +function(modelIndex, code, group3){ +var ptm = modelIndex + 1; +if (this.group3Lists == null || this.group3Lists[ptm] == null) return; +var g3code = (group3 + " ").substring(0, 3); +var pt = this.group3Lists[ptm].indexOf(g3code); +if (pt < 0) { +this.group3Lists[ptm] += ",[" + g3code + "]"; +pt = this.group3Lists[ptm].indexOf(g3code); +this.group3Counts[ptm] = JU.AU.arrayCopyI(this.group3Counts[ptm], this.group3Counts[ptm].length + 10); +}this.group3Counts[ptm][Clazz.doubleToInt(pt / 6)]++; +pt = this.group3Lists[ptm].indexOf(",[" + g3code); +if (pt >= 0) this.group3Lists[ptm] = this.group3Lists[ptm].substring(0, pt) + code + this.group3Lists[ptm].substring(pt + 2); +if (modelIndex >= 0) this.countGroup(-1, code, group3); +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "freeze", +function(){ +this.htAtomMap.clear(); +if (this.ms.ac < this.ms.at.length) this.ms.growAtomArrays(this.ms.ac); +if (this.ms.bondCount < this.ms.bo.length) this.ms.bo = JU.AU.arrayCopyObject(this.ms.bo, this.ms.bondCount); +for (var i = 5; --i > 0; ) { +this.ms.numCached[i] = 0; +var bondsCache = this.ms.freeBonds[i]; +for (var j = bondsCache.length; --j >= 0; ) bondsCache[j] = null; + +} +this.ms.setAtomNamesAndNumbers(0, this.baseAtomIndex, this.modelSet0, false); +this.findElementsPresent(); +this.ms.resetMolecules(); +this.model = null; +this.currentChain = null; +if (!this.ms.haveBioModels || this.isPyMOLsession || this.isMutate) { +this.ms.freezeModels(); +return; +}var asDSSP = this.vwr.getBoolean(603979826); +var ret = this.ms.calculateStructuresAllExcept(this.structuresDefinedInFile, asDSSP, false, true, true, asDSSP, JV.JC.versionInt >= 1405000 && this.ms.getInfoM("DSSP1") == null ? 2 : 1); +if (ret.length > 0) JU.Logger.info(ret); +}); +Clazz.defineMethod(c$, "findElementsPresent", +function(){ +this.ms.elementsPresent = new Array(this.ms.mc); +for (var i = 0; i < this.ms.mc; i++) this.ms.elementsPresent[i] = JU.BS.newN(64); + +for (var i = this.ms.ac; --i >= 0; ) { +var a = this.ms.at[i]; +if (a == null) continue; +var n = a.getAtomicAndIsotopeNumber(); +if (n >= JU.Elements.elementNumberMax) n = JU.Elements.elementNumberMax + JU.Elements.altElementIndexFromNumber(n); +this.ms.elementsPresent[a.mi].set(n); +} +}); +Clazz.defineMethod(c$, "setupMinimization", +function(){ +this.initialize2DMin(); +var v = new JU.V3(); +if (this.vStereo != null) { +out : for (var i = this.vStereo.size(); --i >= 0; ) { +var b = this.vStereo.get(i); +var a1 = b.atom1; +var bonds = a1.bonds; +for (var j = a1.getBondCount(); --j >= 0; ) { +var b2 = bonds[j]; +if (b2 === b) continue; +var a2 = b2.getOtherAtom(a1); +v.sub2(a2, a1); +if (Math.abs(v.x) < 0.1) { +if ((b.order == 1025) == (v.y < 0)) this.stereodir = -1; +break out; +}} +} +}this.set2dZ(v); +if (this.vStereo != null) { +var bsToTest = JU.BSUtil.newBitSet2(this.baseAtomIndex, this.vwr.ms.ac); +for (var i = this.vStereo.size(); --i >= 0; ) { +var b = this.vStereo.get(i); +var dz2 = (b.order == 1025 ? 3 : -3); +b.order = 1; +if (b.atom1.getBondCount() < 6 && b.atom2.z != b.atom1.z && (dz2 < 0) == (b.atom2.z < b.atom1.z)) dz2 /= 3; +var bs = JU.JmolMolecule.getBranchBitSet(this.ms.at, b.atom2.i, bsToTest, null, b.atom1.i, false, true); +bs.set(b.atom2.i); +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) this.ms.at[j].z += dz2; + +b.atom2.x = (b.atom1.x + b.atom2.x) / 2; +b.atom2.y = (b.atom1.y + b.atom2.y) / 2; +} +this.vStereo = null; +}this.is2D = false; +}); +Clazz.defineMethod(c$, "initialize2DMin", +function(){ +var scaling = 0; +var n = 0; +var lastModel = -1; +var i0 = this.baseAtomIndex; +var i1 = this.vwr.ms.ac; +for (var i = i0; i < i1; i++) { +var a = this.ms.at[i]; +var m = a.getModelIndex(); +if (m != lastModel) { +lastModel = m; +this.ms.setInfo(m, "dimension", "3D"); +}var bonds = a.bonds; +if (bonds == null) continue; +for (var j = bonds.length; --j >= 0; ) { +if (bonds[j] == null) continue; +var b = bonds[j].getOtherAtom(a); +if (b.getAtomNumber() != 1 && b.getIndex() > i) { +scaling += b.distance(a); +n++; +}} +} +if (n == 0) return; +scaling = 1.45 / (scaling / n); +for (var i = i0; i < i1; i++) { +this.ms.at[i].scale(scaling); +} +}); +Clazz.defineMethod(c$, "set2dZ", +function(v){ +var iatom1 = this.baseAtomIndex; +var iatom2 = this.vwr.ms.ac; +var atomlist = JU.BS.newN(iatom2); +var bsBranch = new JU.BS(); +var v0 = JU.V3.new3(0, 1, 0); +var v1 = new JU.V3(); +var bs0 = new JU.BS(); +bs0.setBits(iatom1, iatom2); +for (var i = iatom1; i < iatom2; i++) if (!atomlist.get(i) && !bsBranch.get(i)) { +bsBranch = this.getBranch2dZ(i, -1, bs0, bsBranch, v, v0, v1, this.stereodir); +atomlist.or(bsBranch); +} +}, "JU.V3"); +Clazz.defineMethod(c$, "getBranch2dZ", +function(atomIndex, atomIndexNot, bs0, bsBranch, v, v0, v1, dir){ +var bs = JU.BS.newN(this.ms.ac); +if (atomIndex < 0) return bs; +var bsToTest = JU.BSUtil.copy(bs0); +if (atomIndexNot >= 0) bsToTest.clear(atomIndexNot); +JM.ModelLoader.setBranch2dZ(this.ms.at[atomIndex], bs, bsToTest, v, v0, v1, dir); +return bs; +}, "~N,~N,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N"); +c$.setBranch2dZ = Clazz.defineMethod(c$, "setBranch2dZ", +function(atom, bs, bsToTest, v, v0, v1, dir){ +var atomIndex = atom.i; +if (!bsToTest.get(atomIndex)) return; +bsToTest.clear(atomIndex); +bs.set(atomIndex); +if (atom.bonds == null) return; +for (var i = atom.bonds.length; --i >= 0; ) { +var bond = atom.bonds[i]; +if (bond.isHydrogen()) continue; +var atom2 = bond.getOtherAtom(atom); +JM.ModelLoader.setAtom2dZ(atom, atom2, v, v0, v1, dir); +JM.ModelLoader.setBranch2dZ(atom2, bs, bsToTest, v, v0, v1, dir); +} +}, "JM.Atom,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N"); +c$.setAtom2dZ = Clazz.defineMethod(c$, "setAtom2dZ", +function(atomRef, atom2, v, v0, v1, dir){ +v.sub2(atom2, atomRef); +v.z = 0; +v.normalize(); +v1.cross(v0, v); +var theta = Math.acos(v.dot(v0)); +var f = (0.4 * -dir * Math.sin(4 * theta)); +atom2.z = atomRef.z + f; +}, "JM.Atom,JM.Atom,JU.V3,JU.V3,JU.V3,~N"); +Clazz.defineMethod(c$, "finalizeShapes", +function(){ +this.ms.sm = this.vwr.shm; +this.ms.sm.setModelSet(this.ms); +this.ms.setBsHidden(this.vwr.slm.getHiddenSet()); +if (!this.merging) this.ms.sm.resetShapes(false); +this.ms.sm.loadDefaultShapes(this.ms); +if (this.ms.someModelsHaveAromaticBonds && this.vwr.getBoolean(603979944)) this.ms.assignAromaticBondsBs(false, null); +if (this.merging && this.baseModelCount == 1) this.ms.sm.setShapePropertyBs(6, "clearModelIndex", null, null); +}); +Clazz.defineMethod(c$, "undeleteAtom", +function(iAtom){ +this.ms.at[iAtom].valence = 0; +}, "~N"); +c$.createAtomDataSet = Clazz.defineMethod(c$, "createAtomDataSet", +function(vwr, modelSet, tokType, asc, bsSelected){ +if (asc == null) return null; +var adapter = vwr.getModelAdapter(); +var pt = new JU.P3(); +var atoms = modelSet.at; +var tolerance = vwr.getFloat(570425363); +if (modelSet.unitCells != null) for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) if (atoms[i].atomSymmetry != null) { +tolerance = -tolerance; +break; +} +var i = -1; +var n = 0; +var loadAllData = (JU.BSUtil.cardinalityOf(bsSelected) == vwr.ms.ac); +for (var iterAtom = adapter.getAtomIterator(asc); iterAtom.hasNext(); ) { +var xyz = iterAtom.getXYZ(); +if (Float.isNaN(xyz.x + xyz.y + xyz.z)) continue; +if (tokType == 1145047049) { +i = bsSelected.nextSetBit(i + 1); +if (i < 0) break; +n++; +if (JU.Logger.debugging) JU.Logger.debug("atomIndex = " + i + ": " + atoms[i] + " --> (" + xyz.x + "," + xyz.y + "," + xyz.z); +modelSet.setAtomCoord(i, xyz.x, xyz.y, xyz.z); +continue; +}pt.setT(xyz); +var bs = JU.BS.newN(modelSet.ac); +modelSet.getAtomsWithin(tolerance, pt, bs, -1); +bs.and(bsSelected); +if (loadAllData) { +n = JU.BSUtil.cardinalityOf(bs); +if (n == 0) { +JU.Logger.warn("createAtomDataSet: no atom found at position " + pt); +continue; +} else if (n > 1 && JU.Logger.debugging) { +JU.Logger.debug("createAtomDataSet: " + n + " atoms found at position " + pt); +}}switch (tokType) { +case 1145047055: +var vib = iterAtom.getVib(); +if (vib == null) continue; +if (JU.Logger.debugging) JU.Logger.debug("xyz: " + pt + " vib: " + vib); +modelSet.setAtomCoords(bs, 1145047055, vib); +break; +case 1128269825: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getOccupancy(), null, null, null); +break; +case 1111492619: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getPartialCharge(), null, null, null); +break; +case 1111492620: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getBfactor(), null, null, null); +break; +} +} +switch (tokType) { +case 1145047055: +var vibName = adapter.getAtomSetName(asc, 0); +JU.Logger.info("_vibrationName = " + vibName); +vwr.setStringProperty("_vibrationName", vibName); +break; +case 1145047049: +JU.Logger.info(n + " atom positions read"); +modelSet.recalculateLeadMidpointsAndWingVectors(-1); +if (n == modelSet.ac) return "boundbox {*};reset"; +break; +} +return null; +}, "JV.Viewer,JM.ModelSet,~N,~O,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/ModelSet.js b/config/plugins/visualizations/jmol/static/j2s/JM/ModelSet.js new file mode 100755 index 000000000000..976727f83b24 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/ModelSet.js @@ -0,0 +1,3172 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.BondCollection"], "JM.ModelSet", ["java.util.Hashtable", "JU.A4", "$.AU", "$.BS", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.bspt.Bspf", "J.c.PAL", "$.VDW", "JM.Atom", "$.AtomIteratorWithinModel", "$.AtomIteratorWithinModelSet", "$.HBond", "$.Model", "$.StateScript", "JS.ScriptCompiler", "JU.BSUtil", "$.BoxInfo", "$.Edge", "$.Elements", "$.Escape", "$.JmolMolecule", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveBioModels = false; +this.bsSymmetry = null; +this.modelSetName = null; +this.am = null; +this.mc = 0; +this.unitCells = null; +this.haveUnitCells = false; +this.closest = null; +this.modelNumbers = null; +this.modelFileNumbers = null; +this.modelNumbersForAtomLabel = null; +this.modelNames = null; +this.frameTitles = null; +this.elementsPresent = null; +this.isXYZ = false; +this.modelSetProperties = null; +this.msInfo = null; +this.someModelsHaveSymmetry = false; +this.someModelsHaveAromaticBonds = false; +this.someModelsHaveFractionalCoordinates = false; +this.isBbcageDefault = false; +this.bboxModels = null; +this.bboxAtoms = null; +this.boxInfo = null; +this.stateScripts = null; +this.thisStateModel = 0; +this.vibrationSteps = null; +this.selectedMolecules = null; +this.showRebondTimes = true; +this.bsAll = null; +this.sm = null; +this.proteinStructureTainted = false; +this.htPeaks = null; +this.vOrientations = null; +this.ptTemp = null; +this.ptTemp1 = null; +this.ptTemp2 = null; +this.matTemp = null; +this.matInv = null; +this.mat4 = null; +this.mat4t = null; +this.vTemp = null; +this.defaultBBox = null; +this.haveJmolDataFrames = false; +this.echoShapeActive = false; +this.modelSetTypeName = null; +this.translations = null; +this.maxBondWarned = false; +Clazz.instantialize(this, arguments);}, JM, "ModelSet", JM.BondCollection); +Clazz.makeConstructor(c$, +function(vwr, name){ +Clazz.superConstructor (this, JM.ModelSet, []); +this.vwr = vwr; +this.modelSetName = name; +this.selectedMolecules = new JU.BS(); +this.stateScripts = new JU.Lst(); +this.boxInfo = new JU.BoxInfo(); +this.boxInfo.addBoundBoxPoint(JU.P3.new3(-10, -10, -10)); +this.boxInfo.addBoundBoxPoint(JU.P3.new3(10, 10, 10)); +this.am = new Array(1); +this.modelNumbers = Clazz.newIntArray (1, 0); +this.modelFileNumbers = Clazz.newIntArray (1, 0); +this.modelNumbersForAtomLabel = new Array(1); +this.modelNames = new Array(1); +this.frameTitles = new Array(1); +this.closest = new Array(1); +this.ptTemp = new JU.P3(); +this.ptTemp1 = new JU.P3(); +this.ptTemp2 = new JU.P3(); +this.matTemp = new JU.M3(); +this.matInv = new JU.M3(); +this.mat4 = new JU.M4(); +this.mat4t = new JU.M4(); +this.vTemp = new JU.V3(); +this.setupBC(); +}, "JV.Viewer,~S"); +Clazz.defineMethod(c$, "getBoxInfo", +function(){ +return this.boxInfo; +}); +Clazz.defineMethod(c$, "releaseModelSet", +function(){ +this.am = null; +this.mc = 0; +this.closest[0] = null; +this.am = null; +this.bsSymmetry = null; +this.bsAll = null; +this.unitCells = null; +this.releaseModelSetBC(); +}); +Clazz.defineMethod(c$, "getEchoStateActive", +function(){ +return this.echoShapeActive; +}); +Clazz.defineMethod(c$, "setEchoStateActive", +function(TF){ +this.echoShapeActive = TF; +}, "~B"); +Clazz.defineMethod(c$, "getModelSetTypeName", +function(){ +return this.modelSetTypeName; +}); +Clazz.defineMethod(c$, "getModelNumberIndex", +function(modelNumber, useModelNumber, doSetTrajectory){ +if (useModelNumber) { +for (var i = 0; i < this.mc; i++) if (this.modelNumbers[i] == modelNumber || modelNumber < 1000000 && this.modelNumbers[i] == 1000000 + modelNumber) return i; + +return -1; +}if (modelNumber < 1000000) return modelNumber; +for (var i = 0; i < this.mc; i++) if (this.modelFileNumbers[i] == modelNumber) { +if (doSetTrajectory && this.isTrajectory(i)) this.setTrajectory(i); +return i; +} +return -1; +}, "~N,~B,~B"); +Clazz.defineMethod(c$, "getModelDataBaseName", +function(bsAtoms){ +for (var i = 0; i < this.mc; i++) { +if (bsAtoms.equals(this.am[i].bsAtoms)) return this.getInfo(i, "dbName"); +} +return null; +}, "JU.BS"); +Clazz.defineMethod(c$, "setTrajectory", +function(modelIndex){ +if (modelIndex >= 0 && this.isTrajectory(modelIndex) && this.at[this.am[modelIndex].firstAtomIndex].mi != modelIndex) this.trajectory.setModel(modelIndex); +}, "~N"); +Clazz.defineMethod(c$, "getBitSetTrajectories", +function(){ +return (this.trajectory == null ? null : this.trajectory.getModelsSelected()); +}); +Clazz.defineMethod(c$, "setTrajectoryBs", +function(bsModels){ +if (this.trajectory != null) for (var i = 0; i < this.mc; i++) if (bsModels.get(i)) this.setTrajectory(i); + +}, "JU.BS"); +Clazz.defineMethod(c$, "morphTrajectories", +function(m1, m2, f){ +if (m1 >= 0 && m2 >= 0 && this.isTrajectory(m1) && this.isTrajectory(m2)) this.trajectory.morph(m1, m2, f); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getTranslation", +function(iModel){ +return (this.translations == null || iModel >= this.translations.length ? null : this.translations[iModel]); +}, "~N"); +Clazz.defineMethod(c$, "translateModel", +function(iModel, pt){ +if (pt == null) { +var t = this.getTranslation(iModel); +if (t == null) return; +pt = JU.P3.newP(t); +pt.scale(-1); +this.translateModel(iModel, pt); +this.translations[iModel] = null; +return; +}if (this.translations == null || this.translations.length <= iModel) this.translations = new Array(this.mc); +if (this.translations[iModel] == null) this.translations[iModel] = new JU.P3(); +this.translations[iModel].add(pt); +var bs = this.am[iModel].bsAtoms; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.at[i].add(pt); + +}, "~N,JU.T3"); +Clazz.defineMethod(c$, "getFrameOffsets", +function(bsAtoms, isFull){ +if (bsAtoms == null) { +if (isFull) for (var i = this.mc; --i >= 0; ) { +var m = this.am[i]; +if (!m.isJmolDataFrame && !m.isTrajectory) this.translateModel(m.modelIndex, null); +} +return null; +}var i0 = bsAtoms.nextSetBit(0); +if (i0 < 0) return null; +if (isFull) { +var bs = JU.BSUtil.copy(bsAtoms); +var pt = null; +var pdiff = new JU.P3(); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +if (!m.isJmolDataFrame && !m.isTrajectory) { +var j = bs.nextSetBit(0); +if (m.bsAtoms.get(j)) { +if (pt == null) { +pt = JU.P3.newP(this.at[j]); +} else { +pdiff.sub2(pt, this.at[j]); +this.translateModel(i, pdiff); +}}}bs.andNot(m.bsAtoms); +} +return null; +}var offsets = new Array(this.mc); +for (var i = this.mc; --i >= 0; ) offsets[i] = new JU.P3(); + +var lastModel = 0; +var n = 0; +var lastOffset = null; +var asTrajectory = (this.trajectory != null && this.trajectory.steps.size() == this.mc); +var m1 = (asTrajectory ? this.mc : 1); +for (var m = 0; m < m1; m++) { +if (asTrajectory) this.setTrajectory(m); +for (var i = 0; i <= this.ac; i++) { +if (i < this.ac && JM.AtomCollection.isDeleted(this.at[i])) continue; +if (i == this.ac || this.at[i].mi != lastModel) { +if (n > 0) { +lastOffset.scale(-1.0 / n); +if (lastModel != 0) lastOffset.sub(offsets[0]); +n = 0; +}if (i == this.ac) break; +lastModel = this.at[i].mi; +lastOffset = offsets[lastModel]; +}if (!bsAtoms.get(i)) continue; +lastOffset.add(this.at[i]); +n++; +} +} +offsets[0].set(0, 0, 0); +return offsets; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "getAtoms", +function(tokType, specInfo){ +switch (tokType) { +default: +return JU.BSUtil.andNot(this.getAtomBitsMaybeDeleted(tokType, specInfo), this.vwr.slm.bsDeleted); +case 1073742358: +var modelNumber = (specInfo).intValue(); +var modelIndex = this.getModelNumberIndex(modelNumber, true, true); +return (modelIndex < 0 && modelNumber > 0 ? new JU.BS() : this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +case 1275203608: +var data = Clazz.newArray(-1, [null, null, null]); +this.vwr.shm.getShapePropertyData(21, "getCenters", data); +return (data[1] == null ? new JU.BS() : data[1]); +} +}, "~N,~O"); +Clazz.defineMethod(c$, "findNearestAtomIndex", +function(x, y, bsNot, min){ +if (this.ac == 0) return -1; +this.closest[0] = null; +if (this.g3d.isAntialiased()) { +x <<= 1; +y <<= 1; +}this.findNearest2(x, y, this.closest, bsNot, min); +this.sm.findNearestShapeAtomIndex(x, y, this.closest, bsNot); +var closestIndex = (this.closest[0] == null ? -1 : this.closest[0].i); +this.closest[0] = null; +return closestIndex; +}, "~N,~N,JU.BS,~N"); +Clazz.defineMethod(c$, "calculatePointGroup", +function(bsAtoms){ +return this.calculatePointGroupForFirstModel(bsAtoms, false, false, null, 0, 0, null, null, null); +}, "JU.BS"); +Clazz.defineMethod(c$, "getPointGroupInfo", +function(bsAtoms){ +return this.calculatePointGroupForFirstModel(bsAtoms, false, true, null, 0, 0, null, null, null); +}, "JU.BS"); +Clazz.defineMethod(c$, "getPointGroupAsString", +function(bsAtoms, type, index, scale, pts, center, id){ +return this.calculatePointGroupForFirstModel(bsAtoms, true, false, type, index, scale, pts, center, id); +}, "JU.BS,~S,~N,~N,~A,JU.P3,~S"); +Clazz.defineMethod(c$, "calculatePointGroupForFirstModel", +function(bsAtoms, doAll, asInfo, type, index, scale, pts, center, id){ +var pointGroup = this.pointGroup; +var symmetry = J.api.Interface.getSymmetry(this.vwr, "ms"); +var bs = null; +var haveVibration = false; +var isPolyhedron = false; +var localEnvOnly = false; +var isPoints = (pts != null); +var modelIndex = this.vwr.am.cmi; +if (!isPoints) { +var iAtom = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +if (modelIndex < 0 && iAtom >= 0) modelIndex = this.at[iAtom].mi; +if (modelIndex < 0) { +modelIndex = this.vwr.getVisibleFramesBitSet().nextSetBit(0); +bsAtoms = null; +}bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +localEnvOnly = (bsAtoms != null && bs.cardinality() != bsAtoms.cardinality()); +if (bsAtoms != null) bs.and(bsAtoms); +iAtom = bs.nextSetBit(0); +if (iAtom < 0) { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +iAtom = bs.nextSetBit(0); +}var obj = this.vwr.shm.getShapePropertyIndex(18, "mad", iAtom); +haveVibration = (obj != null && (obj).intValue() != 0 || this.vwr.tm.vibrationOn); +isPolyhedron = (type != null && type.toUpperCase().indexOf(":POLY") >= 0); +if (isPolyhedron) { +var data = Clazz.newArray(-1, [Integer.$valueOf(iAtom), null]); +this.vwr.shm.getShapePropertyData(21, "points", data); +pts = data[1]; +if (pts == null) return null; +bs = null; +haveVibration = false; +pointGroup = null; +} else { +pts = this.at; +}}var tp; +if (type != null && (tp = type.indexOf(":")) >= 0) type = type.substring(0, tp); +if (type != null && (tp = type.indexOf(".")) >= 0) { +index = JU.PT.parseInt(type.substring(tp + 1)); +if (index < 0) index = 0; +type = type.substring(0, tp); +}pointGroup = symmetry.setPointGroup(this.vwr, pointGroup, center, pts, bs, haveVibration, (isPoints ? 0 : this.vwr.getFloat(570425382)), this.vwr.getFloat(570425384), (bs == null ? pts.length : bs.cardinality()), localEnvOnly); +if (!isPolyhedron && !isPoints) this.pointGroup = pointGroup; +if (!doAll && !asInfo) return pointGroup.getPointGroupName(); +var ret = pointGroup.getPointGroupInfo(modelIndex, id, asInfo, type, index, scale); +return (asInfo ? ret : (this.mc > 1 ? "frame " + this.getModelNumberDotted(modelIndex) + "; " : "") + ret); +}, "JU.BS,~B,~B,~S,~N,~N,~A,JU.P3,~S"); +Clazz.defineMethod(c$, "getDefaultStructure", +function(bsAtoms, bsModified){ +return (this.haveBioModels ? this.bioModelset.getAllDefaultStructures(bsAtoms, bsModified) : ""); +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "deleteModelBonds", +function(modelIndex){ +var bsAtoms = this.getModelAtomBitSetIncludingDeleted(modelIndex, false); +this.makeConnections(0, 3.4028235E38, 131071, 12291, bsAtoms, bsAtoms, null, false, false, 0); +}, "~N"); +Clazz.defineMethod(c$, "makeConnections", +function(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy){ +this.moleculeCount = 0; +var autoState = (connectOperation == 1073741852 && order != 2048 ? new JU.SB() : null); +var result = this.makeConnections2(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy, autoState); +if (autoState != null) { +this.addStateScript(autoState.toString(), null, null, null, null, false, true); +}return result; +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N"); +Clazz.defineMethod(c$, "setPdbConectBonding", +function(baseAtomIndex, baseModelIndex, bsExclude){ +var mad = this.vwr.getMadBond(); +for (var i = baseModelIndex; i < this.mc; i++) { +var vConnect = this.getInfo(i, "PDB_CONECT_bonds"); +if (vConnect == null) continue; +var nConnect = vConnect.size(); +this.setInfo(i, "initialBondCount", Integer.$valueOf(nConnect)); +var atomInfo = this.getInfo(i, "PDB_CONECT_firstAtom_count_max"); +var firstAtom = atomInfo[0] + baseAtomIndex; +var atomMax = firstAtom + atomInfo[1]; +if (atomMax > this.atomSerials.length) atomMax = this.atomSerials.length; +var max = atomInfo[2]; +var serialMap = Clazz.newIntArray (max + 1, 0); +var iSerial; +for (var iAtom = firstAtom; iAtom < atomMax; iAtom++) if ((iSerial = this.atomSerials[iAtom]) > 0) serialMap[iSerial] = iAtom + 1; + +for (var iConnect = 0; iConnect < nConnect; iConnect++) { +var pair = vConnect.get(iConnect); +var sourceSerial = pair[0]; +var targetSerial = pair[1]; +var order = pair[2]; +if (sourceSerial < 0 || targetSerial < 0 || sourceSerial > max || targetSerial > max) continue; +var sourceIndex = serialMap[sourceSerial] - 1; +var targetIndex = serialMap[targetSerial] - 1; +if (sourceIndex < 0 || targetIndex < 0) continue; +var atomA = this.at[sourceIndex]; +var atomB = this.at[targetIndex]; +if (bsExclude != null) { +if (atomA.isHetero()) bsExclude.set(sourceIndex); +if (atomB.isHetero()) bsExclude.set(targetIndex); +}if (atomA.altloc == atomB.altloc || atomA.altloc == '\0' || atomB.altloc == '\0') this.getOrAddBond(atomA, atomB, order, (order == 2048 ? 1 : mad), null, 0, false); +} +} +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "deleteAllBonds", +function(){ +this.moleculeCount = 0; +for (var i = this.stateScripts.size(); --i >= 0; ) { +if (this.stateScripts.get(i).isConnect()) { +this.stateScripts.removeItemAt(i); +}} +this.deleteAllBonds2(); +}); +Clazz.defineMethod(c$, "includeAllRelatedFrames", +function(bsModels){ +var baseModel = 0; +for (var i = 0; i < this.mc; i++) { +var isTraj = this.isTrajectory(i); +var isBase = (isTraj && bsModels.get(baseModel = this.am[i].trajectoryBaseIndex)); +if (bsModels.get(i)) { +if (isTraj && !isBase) { +bsModels.set(baseModel); +this.includeAllRelatedFrames(bsModels); +return; +}} else if (isTraj || this.isJmolDataFrameForModel(i) && bsModels.get(this.am[i].dataSourceFrame)) { +bsModels.set(i); +}} +}, "JU.BS"); +Clazz.defineMethod(c$, "deleteModels", +function(bsModels){ +this.includeAllRelatedFrames(bsModels); +var nModelsDeleted = bsModels.cardinality(); +if (nModelsDeleted == 0) return null; +this.moleculeCount = 0; +if (this.msInfo != null) this.msInfo.remove("models"); +var bsAtomsToDelete = new JU.BS(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +this.clearDataFrameReference(i); +bsAtomsToDelete.or(this.am[i].bsAtoms); +} +var bsDeleted; +if (nModelsDeleted == this.mc) { +bsDeleted = this.getModelAtomBitSetIncludingDeleted(-1, true); +this.vwr.zap(true, false, false); +return bsDeleted; +}this.validateBspf(false); +bsDeleted = new JU.BS(); +var allOrderly = true; +var isOneOfSeveral = false; +var files = new JU.BS(); +var firstAtom = bsAtomsToDelete.nextSetBit(0); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +if (i < this.mc - 1) allOrderly = new Boolean (allOrderly & (m.isOrderly || m.bsAtoms.length() <= firstAtom)).valueOf(); +if (bsModels.get(i)) { +if (m.fileIndex >= 0) files.set(m.fileIndex); +bsDeleted.or(this.getModelAtomBitSetIncludingDeleted(i, false)); +} else { +if (m.fileIndex >= 0 && files.get(m.fileIndex)) isOneOfSeveral = true; +}} +if (!allOrderly || isOneOfSeveral) { +this.vwr.deleteAtoms(bsDeleted, false); +return null; +}var newModels = new Array(this.mc - nModelsDeleted); +var oldModels = this.am; +for (var i = 0, mpt = 0; i < this.mc; i++) { +if (!bsModels.get(i)) { +var m = this.am[i]; +m.modelIndex = mpt; +newModels[mpt++] = m; +}} +this.am = newModels; +var oldModelCount = this.mc; +var bsBonds = this.getBondsForSelectedAtoms(bsDeleted, true); +this.deleteBonds(bsBonds, true); +for (var i = 0, mpt = 0; i < oldModelCount; i++) { +if (!bsModels.get(i)) { +mpt++; +continue; +}var old = oldModels[i]; +var nAtoms = old.act; +if (nAtoms == 0) continue; +var bsModelAtoms = old.bsAtoms; +var firstAtomIndex = old.firstAtomIndex; +JU.BSUtil.deleteBits(this.bsSymmetry, bsModelAtoms); +this.deleteModel(mpt, bsModelAtoms, bsBonds); +this.deleteModelAtoms(firstAtomIndex, nAtoms, bsModelAtoms); +this.vwr.deleteModelAtoms(mpt, firstAtomIndex, nAtoms, bsModelAtoms); +for (var j = oldModelCount; --j > i; ) oldModels[j].fixIndices(mpt, nAtoms, bsModelAtoms); + +this.vwr.shm.deleteShapeAtoms( Clazz.newArray(-1, [newModels, this.at, Clazz.newIntArray(-1, [mpt, firstAtomIndex, nAtoms])]), bsModelAtoms); +this.mc--; +} +this.haveBioModels = false; +for (var i = this.mc; --i >= 0; ) if (this.am[i].isBioModel) { +this.haveBioModels = true; +this.bioModelset.set(this.vwr, this); +} +this.validateBspf(false); +this.bsAll = null; +this.resetMolecules(); +this.isBbcageDefault = false; +this.calcBoundBoxDimensions(null, 1); +return bsDeleted; +}, "JU.BS"); +Clazz.defineMethod(c$, "resetMolecules", +function(){ +this.bsAll = null; +this.molecules = null; +this.moleculeCount = 0; +this.resetChirality(); +}); +Clazz.defineMethod(c$, "resetChirality", +function(){ +if (this.haveChirality) { +var modelIndex = -1; +for (var i = this.ac; --i >= 0; ) { +var a = this.at[i]; +if (a == null) continue; +a.setCIPChirality(0); +if (a.mi != modelIndex && a.mi < this.am.length) this.am[modelIndex = a.mi].hasChirality = false; +} +}}); +Clazz.defineMethod(c$, "deleteModel", +function(modelIndex, bsModelAtoms, bsBonds){ +if (modelIndex < 0) { +return; +}this.modelNumbers = JU.AU.deleteElements(this.modelNumbers, modelIndex, 1); +this.modelFileNumbers = JU.AU.deleteElements(this.modelFileNumbers, modelIndex, 1); +this.modelNumbersForAtomLabel = JU.AU.deleteElements(this.modelNumbersForAtomLabel, modelIndex, 1); +this.modelNames = JU.AU.deleteElements(this.modelNames, modelIndex, 1); +this.frameTitles = JU.AU.deleteElements(this.frameTitles, modelIndex, 1); +this.thisStateModel = -1; +var group3Lists = this.getInfoM("group3Lists"); +var group3Counts = this.getInfoM("group3Counts"); +var ptm = modelIndex + 1; +if (group3Lists != null && group3Lists[ptm] != null) { +for (var i = Clazz.doubleToInt(group3Lists[ptm].length / 6); --i >= 0; ) if (group3Counts[ptm][i] > 0) { +group3Counts[0][i] -= group3Counts[ptm][i]; +if (group3Counts[0][i] == 0) group3Lists[0] = group3Lists[0].substring(0, i * 6) + ",[" + group3Lists[0].substring(i * 6 + 2); +} +}if (group3Lists != null) { +this.msInfo.put("group3Lists", JU.AU.deleteElements(group3Lists, modelIndex, 1)); +this.msInfo.put("group3Counts", JU.AU.deleteElements(group3Counts, modelIndex, 1)); +}if (this.unitCells != null) { +this.unitCells = JU.AU.deleteElements(this.unitCells, modelIndex, 1); +}for (var i = this.stateScripts.size(); --i >= 0; ) { +if (!this.stateScripts.get(i).deleteAtoms(modelIndex, bsBonds, bsModelAtoms)) { +this.stateScripts.removeItemAt(i); +}} +}, "~N,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "setAtomProperty", +function(bs, tok, iValue, fValue, sValue, values, list){ +switch (tok) { +case 1114249217: +case 1112152066: +case 1112152071: +case 1112152073: +case 1112152074: +case 1649022989: +case 1112152078: +if (fValue > 4.0) fValue = 4.0; +if (values != null) { +var newValues = Clazz.newFloatArray (this.ac, 0); +try { +for (var i = bs.nextSetBit(0), ii = 0; i >= 0; i = bs.nextSetBit(i + 1)) newValues[i] = values[ii++]; + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return; +} else { +throw e; +} +} +values = newValues; +}case 1112152070: +case 1112152076: +var rd = null; +var mar = 0; +if (values == null) { +if (fValue > 16) fValue = 16.1; +if (fValue < 0) fValue = 0; +mar = Clazz.doubleToInt(Math.floor(fValue * 2000)); +} else { +rd = new J.atomdata.RadiusData(values, 0, null, null); +}this.sm.setShapeSizeBs(JV.JC.shapeTokenIndex(tok), mar, rd, bs); +return; +} +this.setAPm(bs, tok, iValue, fValue, sValue, values, list); +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz.defineMethod(c$, "getFileData", +function(modelIndex){ +if (modelIndex < 0) return ""; +var fileData = this.getInfo(modelIndex, "fileData"); +if (fileData != null) return fileData; +if (!this.getInfoB(modelIndex, "isCIF")) return this.getPDBHeader(modelIndex); +fileData = this.vwr.getCifData(modelIndex); +this.setInfo(modelIndex, "fileData", fileData); +return fileData; +}, "~N"); +Clazz.defineMethod(c$, "addHydrogens", +function(vConnections, pts){ +var modelIndex = vConnections.get(0).mi; +var bs = new JU.BS(); +if (this.isTrajectory(modelIndex) || this.am[modelIndex].getGroupCount() > 1) { +return bs; +}this.growAtomArrays(this.ac + pts.length); +var rd = this.vwr.rd; +var mad = this.getDefaultMadFromOrder(1); +this.am[modelIndex].resetDSSR(false); +for (var i = 0, n = this.am[modelIndex].act + 1; i < vConnections.size(); i++, n++) { +var atom1 = vConnections.get(i); +var atom2 = this.addAtom(modelIndex, atom1.group, 1, "H" + n, null, n, atom1.getSeqID(), n, pts[i], NaN, null, 0, 0, 100, NaN, null, false, 0, null, NaN); +atom2.setMadAtom(this.vwr, rd); +bs.set(atom2.i); +this.bondAtoms(atom1, atom2, 1, mad, null, 0, false, false); +} +this.sm.loadDefaultShapes(this); +return bs; +}, "JU.Lst,~A"); +Clazz.defineMethod(c$, "mergeModelArrays", +function(mergeModelSet){ +this.at = mergeModelSet.at; +this.bo = mergeModelSet.bo; +this.stateScripts = mergeModelSet.stateScripts; +this.proteinStructureTainted = mergeModelSet.proteinStructureTainted; +this.thisStateModel = -1; +this.bsSymmetry = mergeModelSet.bsSymmetry; +this.modelFileNumbers = mergeModelSet.modelFileNumbers; +this.modelNumbersForAtomLabel = mergeModelSet.modelNumbersForAtomLabel; +this.modelNames = mergeModelSet.modelNames; +this.modelNumbers = mergeModelSet.modelNumbers; +this.frameTitles = mergeModelSet.frameTitles; +this.haveChirality = mergeModelSet.haveChirality; +this.boxInfo.setBoundBox(mergeModelSet.boxInfo.bbCorner0, mergeModelSet.boxInfo.bbCorner1, true, 1); +if (this.msInfo != null) this.msInfo.remove("models"); +this.mergeAtomArrays(mergeModelSet); +}, "JM.ModelSet"); +Clazz.defineMethod(c$, "getUnitCell", +function(modelIndex){ +var returnCage = (modelIndex == -2147483648); +if (returnCage) modelIndex = this.vwr.am.cmi; +if (modelIndex < 0 || modelIndex >= this.mc) return null; +var ucSimple = this.am[modelIndex].simpleCage; +var uc = null; +if (this.unitCells != null && modelIndex < this.unitCells.length && this.unitCells[modelIndex] != null && this.unitCells[modelIndex].haveUnitCell()) uc = this.unitCells[modelIndex]; +if (uc != null && returnCage) { +return (ucSimple == null ? this.setModelCagePts(modelIndex, uc.getUnitCellVectors(), "cage") : ucSimple); +}if (uc == null || ucSimple != null && !uc.isSymmetryCell(ucSimple)) { +uc = ucSimple; +}return uc; +}, "~N"); +Clazz.defineMethod(c$, "setModelCagePts", +function(iModel, originABC, name){ +if (iModel < 0 && (iModel = this.vwr.am.cmi) < 0) return null; +var sym = this.vwr.getSymTemp(); +try { +return this.setModelCage(iModel, originABC == null ? null : sym.getUnitCell(originABC, false, name)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return null; +} else { +throw e; +} +} +}, "~N,~A,~S"); +Clazz.defineMethod(c$, "getModelName", +function(modelIndex){ +return this.mc < 1 ? "" : modelIndex >= 0 ? this.modelNames[modelIndex] : this.modelNumbersForAtomLabel[-1 - modelIndex]; +}, "~N"); +Clazz.defineMethod(c$, "getModelTitle", +function(modelIndex){ +return this.getInfo(modelIndex, "title"); +}, "~N"); +Clazz.defineMethod(c$, "getModelFileName", +function(modelIndex){ +return this.getInfo(modelIndex, "fileName"); +}, "~N"); +Clazz.defineMethod(c$, "getModelFileType", +function(modelIndex){ +return this.getInfo(modelIndex, "fileType"); +}, "~N"); +Clazz.defineMethod(c$, "setFrameTitle", +function(bsFrames, title){ +if ((typeof(title)=='string')) { +for (var i = bsFrames.nextSetBit(0); i >= 0; i = bsFrames.nextSetBit(i + 1)) this.frameTitles[i] = title; + +} else { +var list = title; +for (var i = bsFrames.nextSetBit(0), n = 0; i >= 0; i = bsFrames.nextSetBit(i + 1)) if (n < list.length) this.frameTitles[i] = list[n++]; + +}}, "JU.BS,~O"); +Clazz.defineMethod(c$, "getFrameTitle", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.frameTitles[modelIndex] : ""); +}, "~N"); +Clazz.defineMethod(c$, "getModelNumberForAtomLabel", +function(modelIndex){ +return this.modelNumbersForAtomLabel[modelIndex]; +}, "~N"); +Clazz.defineMethod(c$, "getGroups", +function(){ +var n = 0; +for (var i = 0; i < this.mc; i++) n += this.am[i].getGroupCount(); + +var groups = new Array(n); +for (var i = 0, iGroup = 0; i < this.mc; i++) for (var j = 0; j < this.am[i].chainCount; j++) for (var k = 0; k < this.am[i].chains[j].groupCount; k++) { +groups[iGroup] = this.am[i].chains[j].groups[k]; +groups[iGroup].groupIndex = iGroup; +iGroup++; +} + + +return groups; +}); +Clazz.defineMethod(c$, "setCrystallographicDefaults", +function(){ +return !this.haveBioModels && (this.someModelsHaveSymmetry && this.someModelsHaveFractionalCoordinates || this.getUnitCell(this.vwr.am.cmi) != null); +}); +Clazz.defineMethod(c$, "getBoundBoxCenter", +function(modelIndex){ +return (this.isJmolDataFrameForModel(modelIndex) ? new JU.P3() : (this.getDefaultBoundBox() == null ? this.boxInfo : this.defaultBBox).getBoundBoxCenter()); +}, "~N"); +Clazz.defineMethod(c$, "getBoundBoxCornerVector", +function(){ +return this.boxInfo.getBoundBoxCornerVector(); +}); +Clazz.defineMethod(c$, "getBBoxVertices", +function(){ +return this.boxInfo.getBoundBoxVertices(); +}); +Clazz.defineMethod(c$, "setBoundBox", +function(pt1, pt2, byCorner, scale){ +if (scale == 0 && this.msInfo != null) { +this.msInfo.remove("boundbox"); +this.defaultBBox = null; +this.isBbcageDefault = false; +this.calcBoundBoxDimensions(null, scale = 1); +}this.isBbcageDefault = false; +this.bboxModels = null; +this.bboxAtoms = null; +this.boxInfo.setBoundBox(pt1, pt2, byCorner, scale); +}, "JU.T3,JU.T3,~B,~N"); +Clazz.defineMethod(c$, "getBoundBoxCommand", +function(withOptions){ +if (!withOptions && this.bboxAtoms != null) return "boundbox " + JU.Escape.eBS(this.bboxAtoms); +this.ptTemp.setT(this.boxInfo.getBoundBoxCenter()); +var bbVector = this.boxInfo.getBoundBoxCornerVector(); +var s = (withOptions ? "boundbox " + JU.Escape.eP(this.ptTemp) + " " + JU.Escape.eP(bbVector) + "\n#or\n" : ""); +this.ptTemp.sub(bbVector); +s += "boundbox corners " + JU.Escape.eP(this.ptTemp) + " "; +this.ptTemp.scaleAdd2(2, bbVector, this.ptTemp); +var v = Math.abs(8 * bbVector.x * bbVector.y * bbVector.z); +s += JU.Escape.eP(this.ptTemp) + " # volume = " + v; +return s; +}, "~B"); +Clazz.defineMethod(c$, "findAtomsInRectangle", +function(rect){ +var bsModels = this.vwr.getVisibleFramesBitSet(); +var bs = new JU.BS(); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (!bsModels.get(atom.mi)) i = this.am[atom.mi].firstAtomIndex; + else if (atom.checkVisible() && rect.contains(atom.sX, atom.sY)) bs.set(i); +} +return bs; +}, "JU.Rectangle"); +Clazz.defineMethod(c$, "getDefaultVdwType", +function(modelIndex){ +return (!this.am[modelIndex].isBioModel ? J.c.VDW.AUTO_BABEL : this.am[modelIndex].hydrogenCount == 0 ? J.c.VDW.AUTO_JMOL : J.c.VDW.AUTO_BABEL); +}, "~N"); +Clazz.defineMethod(c$, "setRotationRadius", +function(modelIndex, angstroms){ +if (this.isJmolDataFrameForModel(modelIndex)) { +this.am[modelIndex].defaultRotationRadius = angstroms; +return false; +}return true; +}, "~N,~N"); +Clazz.defineMethod(c$, "calcRotationRadius", +function(modelIndex, center, useBoundBox){ +if (this.isJmolDataFrameForModel(modelIndex)) { +var r = this.am[modelIndex].defaultRotationRadius; +return (r == 0 ? 10 : r); +}if (useBoundBox && this.getDefaultBoundBox() != null) return this.defaultBBox.getMaxDim() / 2 * 1.2; +if (this.ac == 0) return 10; +modelIndex = -2; +var maxRadius = 0; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (this.isJmolDataFrameForAtom(atom)) { +modelIndex = atom.mi; +while (i >= 0 && this.at[i] != null && this.at[i].mi == modelIndex) i--; + +i++; +continue; +} else if (atom.mi != modelIndex) { +modelIndex = atom.mi; +var uc = (this.am[modelIndex].isBioModel ? null : this.getUnitCell(modelIndex)); +if (uc != null) { +var pts = uc.getUnitCellVerticesNoOffset(); +var off = uc.getCartesianOffset(); +for (var j = 0; j < 8; j++) { +this.ptTemp.setT(pts[j]); +this.ptTemp.add(off); +maxRadius = Math.max(maxRadius, center.distance(this.ptTemp)); +} +}}var d = center.distance(atom) + this.getRadiusVdwJmol(atom); +if (d > maxRadius) maxRadius = d; +} +return (maxRadius == 0 ? 10 : maxRadius); +}, "~N,JU.P3,~B"); +Clazz.defineMethod(c$, "calcBoundBoxDimensions", +function(bs, scale){ +if (bs != null && bs.nextSetBit(0) < 0) bs = null; +if (bs == null && this.isBbcageDefault || this.ac == 0) return; +if (this.getDefaultBoundBox() == null) { +this.bboxModels = this.getModelBS(this.bboxAtoms = JU.BSUtil.copy(bs), false); +if (this.calcAtomsMinMax(bs, this.boxInfo) == this.ac) this.isBbcageDefault = true; +if (bs == null) { +if (this.unitCells != null) this.calcUnitCellMinMax(); +}} else { +var vertices = this.defaultBBox.getBoundBoxVertices(); +this.boxInfo.reset(); +for (var j = 0; j < 8; j++) this.boxInfo.addBoundBoxPoint(vertices[j]); + +}this.boxInfo.setBbcage(scale); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "getDefaultBoundBox", +function(){ +var bbox = this.getInfoM("boundbox"); +if (bbox == null) this.defaultBBox = null; + else { +if (this.defaultBBox == null) this.defaultBBox = new JU.BoxInfo(); +this.defaultBBox.setBoundBoxFromOABC(bbox); +}return this.defaultBBox; +}); +Clazz.defineMethod(c$, "getBoxInfo", +function(bs, scale){ +if (bs == null) return this.boxInfo; +var bi = new JU.BoxInfo(); +this.calcAtomsMinMax(bs, bi); +bi.setBbcage(scale); +return bi; +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "calcAtomsMinMax", +function(bs, boxInfo){ +boxInfo.reset(); +var nAtoms = 0; +var isAll = (bs == null); +var i0 = (isAll ? this.ac - 1 : bs.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bs.nextSetBit(i + 1))) { +nAtoms++; +var a = this.at[i]; +if (a != null && !this.isJmolDataFrameForAtom(a)) boxInfo.addBoundBoxPoint(a); +} +return nAtoms; +}, "JU.BS,JU.BoxInfo"); +Clazz.defineMethod(c$, "calcUnitCellMinMax", +function(){ +var pt = new JU.P3(); +for (var i = 0; i < this.mc; i++) { +var uc = this.unitCells[i]; +if (uc == null || !uc.getCoordinatesAreFractional()) continue; +var vertices = uc.getUnitCellVerticesNoOffset(); +var offset = uc.getCartesianOffset(); +for (var j = 0; j < 8; j++) { +pt.add2(offset, vertices[j]); +this.boxInfo.addBoundBoxPoint(pt); +} +} +}); +Clazz.defineMethod(c$, "calcRotationRadiusBs", +function(bs){ +var center = this.getAtomSetCenter(bs); +var maxRadius = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var atom = this.at[i]; +var distAtom = center.distance(atom); +var outerVdw = distAtom + this.getRadiusVdwJmol(atom); +if (outerVdw > maxRadius) maxRadius = outerVdw; +} +return (maxRadius == 0 ? 10 : maxRadius); +}, "JU.BS"); +Clazz.defineMethod(c$, "getCenterAndPoints", +function(vAtomSets, addCenters){ +var bsAtoms1; +var bsAtoms2; +var n = (addCenters ? 1 : 0); +for (var ii = vAtomSets.size(); --ii >= 0; ) { +var bss = vAtomSets.get(ii); +bsAtoms1 = bss[0]; +if (Clazz.instanceOf(bss[1],"JU.BS")) { +bsAtoms2 = bss[1]; +n += Math.min(bsAtoms1.cardinality(), bsAtoms2.cardinality()); +} else { +n += Math.min(bsAtoms1.cardinality(), (bss[1]).length); +}} +var points = Clazz.newArray(2, n, null); +if (addCenters) { +points[0][0] = new JU.P3(); +points[1][0] = new JU.P3(); +}for (var ii = vAtomSets.size(); --ii >= 0; ) { +var bss = vAtomSets.get(ii); +bsAtoms1 = bss[0]; +if (Clazz.instanceOf(bss[1],"JU.BS")) { +bsAtoms2 = bss[1]; +for (var i = bsAtoms1.nextSetBit(0), j = bsAtoms2.nextSetBit(0); i >= 0 && j >= 0; i = bsAtoms1.nextSetBit(i + 1), j = bsAtoms2.nextSetBit(j + 1)) { +points[0][--n] = this.at[i]; +points[1][n] = this.at[j]; +if (addCenters) { +points[0][0].add(this.at[i]); +points[1][0].add(this.at[j]); +}} +} else { +var coords = bss[1]; +for (var i = bsAtoms1.nextSetBit(0), j = 0; i >= 0 && j < coords.length; i = bsAtoms1.nextSetBit(i + 1), j++) { +points[0][--n] = this.at[i]; +points[1][n] = coords[j]; +if (addCenters) { +points[0][0].add(this.at[i]); +points[1][0].add(coords[j]); +}} +}} +if (addCenters) { +points[0][0].scale(1 / (points[0].length - 1)); +points[1][0].scale(1 / (points[1].length - 1)); +}return points; +}, "JU.Lst,~B"); +Clazz.defineMethod(c$, "getAtomSetCenter", +function(bs){ +var ptCenter = new JU.P3(); +var nPoints = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (!this.isJmolDataFrameForAtom(this.at[i])) { +nPoints++; +ptCenter.add(this.at[i]); +}} +if (nPoints > 1) ptCenter.scale(1.0 / nPoints); +return ptCenter; +}, "JU.BS"); +Clazz.defineMethod(c$, "getAverageAtomPoint", +function(){ +return this.getAtomSetCenter(this.vwr.bsA()); +}); +Clazz.defineMethod(c$, "setAPm", +function(bs, tok, iValue, fValue, sValue, values, list){ +this.setAPa(bs, tok, iValue, fValue, sValue, values, list); +switch (tok) { +case 1094715418: +case 1631586315: +if (this.vwr.getBoolean(603979944)) this.assignAromaticBondsBs(true, null); +break; +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz.defineMethod(c$, "addStateScript", +function(script1, bsBonds, bsAtoms1, bsAtoms2, script2, addFrameNumber, postDefinitions){ +var iModel = this.vwr.am.cmi; +if (addFrameNumber) { +if (this.thisStateModel != iModel) script1 = "frame " + (iModel < 0 ? "all #" + iModel : this.getModelNumberDotted(iModel)) + ";\n " + script1; +this.thisStateModel = iModel; +} else { +this.thisStateModel = -1; +}var stateScript = new JM.StateScript(this.thisStateModel, script1, bsBonds, bsAtoms1, bsAtoms2, script2, postDefinitions); +if (stateScript.isValid()) { +this.stateScripts.addLast(stateScript); +}return stateScript; +}, "~S,JU.BS,JU.BS,JU.BS,~S,~B,~B"); +Clazz.defineMethod(c$, "freezeModels", +function(){ +this.haveBioModels = false; +for (var iModel = this.mc; --iModel >= 0; ) this.haveBioModels = new Boolean (this.haveBioModels | this.am[iModel].freeze()).valueOf(); + +}); +Clazz.defineMethod(c$, "getStructureList", +function(){ +return this.vwr.getStructureList(); +}); +Clazz.defineMethod(c$, "getInfoM", +function(keyName){ +return (this.msInfo == null ? null : this.msInfo.get(keyName)); +}, "~S"); +Clazz.defineMethod(c$, "getMSInfoB", +function(keyName){ +var val = this.getInfoM(keyName); +return (Clazz.instanceOf(val, Boolean) && (val).booleanValue()); +}, "~S"); +Clazz.defineMethod(c$, "isTrajectory", +function(modelIndex){ +return this.am[modelIndex].isTrajectory; +}, "~N"); +Clazz.defineMethod(c$, "isTrajectorySubFrame", +function(i){ +return (this.am[i].trajectoryBaseIndex != i); +}, "~N"); +Clazz.defineMethod(c$, "isTrajectoryMeasurement", +function(countPlusIndices){ +return (this.trajectory != null && this.trajectory.hasMeasure(countPlusIndices)); +}, "~A"); +Clazz.defineMethod(c$, "getModelBS", +function(atomList, allTrajectories){ +var bs = new JU.BS(); +var modelIndex = 0; +var isAll = (atomList == null); +allTrajectories = new Boolean (allTrajectories & (this.trajectory != null)).valueOf(); +var i0 = (isAll ? 0 : atomList.nextSetBit(0)); +for (var i = i0; i >= 0 && i < this.ac; i = (isAll ? i + 1 : atomList.nextSetBit(i + 1))) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +bs.set(modelIndex = this.at[i].mi); +if (allTrajectories) this.trajectory.getModelBS(modelIndex, bs); +var m = this.am[modelIndex]; +if (m.isOrderly) i = m.firstAtomIndex + m.act - 1; +} +return bs; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "getIterativeModels", +function(allowJmolData){ +var bs = new JU.BS(); +for (var i = 0; i < this.mc; i++) { +if (!allowJmolData && this.isJmolDataFrameForModel(i)) continue; +if (!this.isTrajectorySubFrame(i)) bs.set(i); +} +return bs; +}, "~B"); +Clazz.defineMethod(c$, "fillAtomData", +function(atomData, mode){ +if ((mode & 4) != 0) { +this.getMolecules(); +atomData.bsMolecules = new Array(this.molecules.length); +atomData.atomMolecule = Clazz.newIntArray (this.ac, 0); +var bs; +for (var i = 0; i < this.molecules.length; i++) { +bs = atomData.bsMolecules[i] = this.molecules[i].atomList; +for (var iAtom = bs.nextSetBit(0); iAtom >= 0; iAtom = bs.nextSetBit(iAtom + 1)) atomData.atomMolecule[iAtom] = i; + +} +}if ((mode & 8) != 0) { +var nH = Clazz.newIntArray (1, 0); +atomData.hAtomRadius = this.vwr.getVanderwaalsMar(1) / 1000; +atomData.hAtoms = this.calculateHydrogens(atomData.bsSelected, nH, null, 512); +atomData.hydrogenAtomCount = nH[0]; +return; +}if (atomData.modelIndex < 0) atomData.firstAtomIndex = (atomData.bsSelected == null ? 0 : Math.max(0, atomData.bsSelected.nextSetBit(0))); + else atomData.firstAtomIndex = this.am[atomData.modelIndex].firstAtomIndex; +atomData.lastModelIndex = atomData.firstModelIndex = (this.ac == 0 ? 0 : this.at[atomData.firstAtomIndex].mi); +atomData.modelName = this.getModelNumberDotted(atomData.firstModelIndex); +this.fillADa(atomData, mode); +}, "J.atomdata.AtomData,~N"); +Clazz.defineMethod(c$, "getModelNumberDotted", +function(modelIndex){ +return (this.mc < 1 || modelIndex >= this.mc || modelIndex < 0 ? "" : JU.Escape.escapeModelFileNumber(this.modelFileNumbers[modelIndex])); +}, "~N"); +Clazz.defineMethod(c$, "getModelNumber", +function(modelIndex){ +return this.modelNumbers[modelIndex == 2147483647 ? this.mc - 1 : modelIndex]; +}, "~N"); +Clazz.defineMethod(c$, "getModelProperty", +function(modelIndex, property){ +var props = this.am[modelIndex].properties; +return props == null ? null : props.getProperty(property); +}, "~N,~S"); +Clazz.defineMethod(c$, "getModelAuxiliaryInfo", +function(modelIndex){ +return (modelIndex < 0 ? null : this.am[modelIndex].auxiliaryInfo); +}, "~N"); +Clazz.defineMethod(c$, "setInfo", +function(modelIndex, key, value){ +if (modelIndex >= 0 && modelIndex < this.mc) { +if (value == null) this.am[modelIndex].auxiliaryInfo.remove(key); + else this.am[modelIndex].auxiliaryInfo.put(key, value); +}}, "~N,~O,~O"); +Clazz.defineMethod(c$, "getInfo", +function(modelIndex, key){ +return (modelIndex < 0 ? null : this.am[modelIndex].auxiliaryInfo.get(key)); +}, "~N,~S"); +Clazz.defineMethod(c$, "getInfoB", +function(modelIndex, keyName){ +var info = this.am[modelIndex].auxiliaryInfo; +return (info != null && info.containsKey(keyName) && (info.get(keyName)).booleanValue()); +}, "~N,~S"); +Clazz.defineMethod(c$, "getInfoI", +function(modelIndex, keyName){ +var info = this.am[modelIndex].auxiliaryInfo; +if (info != null && info.containsKey(keyName)) { +return (info.get(keyName)).intValue(); +}return -2147483648; +}, "~N,~S"); +Clazz.defineMethod(c$, "getInsertionCountInModel", +function(modelIndex){ +return this.am[modelIndex].insertionCount; +}, "~N"); +c$.modelFileNumberFromFloat = Clazz.defineMethod(c$, "modelFileNumberFromFloat", +function(fDotM){ +var file = Clazz.doubleToInt(Math.floor(fDotM)); +var model = Clazz.doubleToInt(Math.floor((fDotM - file + 0.00001) * 10000)); +while (model != 0 && model % 10 == 0) model /= 10; + +return file * 1000000 + model; +}, "~N"); +Clazz.defineMethod(c$, "getChainCountInModelWater", +function(modelIndex, countWater){ +if (modelIndex < 0) { +var chainCount = 0; +for (var i = this.mc; --i >= 0; ) chainCount += this.am[i].getChainCount(countWater); + +return chainCount; +}return this.am[modelIndex].getChainCount(countWater); +}, "~N,~B"); +Clazz.defineMethod(c$, "getGroupCountInModel", +function(modelIndex){ +if (modelIndex < 0) { +var groupCount = 0; +for (var i = this.mc; --i >= 0; ) groupCount += this.am[i].getGroupCount(); + +return groupCount; +}return this.am[modelIndex].getGroupCount(); +}, "~N"); +Clazz.defineMethod(c$, "calcSelectedGroupsCount", +function(){ +var bsSelected = this.vwr.bsA(); +for (var i = this.mc; --i >= 0; ) this.am[i].calcSelectedGroupsCount(bsSelected); + +}); +Clazz.defineMethod(c$, "isJmolDataFrameForModel", +function(modelIndex){ +return this.haveJmolDataFrames && (this.am != null && modelIndex >= 0 && modelIndex < this.mc && this.am[modelIndex].isJmolDataFrame); +}, "~N"); +Clazz.defineMethod(c$, "isJmolDataFrameForAtom", +function(atom){ +return this.haveJmolDataFrames && this.am[atom.mi].isJmolDataFrame; +}, "JM.Atom"); +Clazz.defineMethod(c$, "setJmolDataFrame", +function(type, modelIndex, modelDataIndex){ +this.haveJmolDataFrames = true; +var model = this.am[type == null ? this.am[modelDataIndex].dataSourceFrame : modelIndex]; +if (type == null) { +type = this.am[modelDataIndex].jmolFrameType; +}if (modelIndex >= 0) { +if (model.dataFrames == null) { +model.dataFrames = new java.util.Hashtable(); +}this.am[modelDataIndex].dataSourceFrame = modelIndex; +this.am[modelDataIndex].jmolFrameType = type; +model.dataFrames.put(type, Integer.$valueOf(modelDataIndex)); +}if (type.startsWith("quaternion") && type.indexOf("deriv") < 0) { +type = type.substring(0, type.indexOf(" ")); +model.dataFrames.put(type, Integer.$valueOf(modelDataIndex)); +}}, "~S,~N,~N"); +Clazz.defineMethod(c$, "getJmolDataFrameIndex", +function(modelIndex, type){ +if (this.am[modelIndex].dataFrames == null) { +return -1; +}var index = this.am[modelIndex].dataFrames.get(type); +return (index == null ? -1 : index.intValue()); +}, "~N,~S"); +Clazz.defineMethod(c$, "clearDataFrameReference", +function(modelIndex){ +for (var i = 0; i < this.mc; i++) { +var df = this.am[i].dataFrames; +if (df == null) { +continue; +}var e = df.values().iterator(); +while (e.hasNext()) { +if ((e.next()).intValue() == modelIndex) { +e.remove(); +}} +} +}, "~N"); +Clazz.defineMethod(c$, "getJmolFrameType", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.am[modelIndex].jmolFrameType : "modelSet"); +}, "~N"); +Clazz.defineMethod(c$, "getJmolDataSourceFrame", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.am[modelIndex].dataSourceFrame : -1); +}, "~N"); +Clazz.defineMethod(c$, "saveModelOrientation", +function(modelIndex, orientation){ +this.am[modelIndex].orientation = orientation; +}, "~N,JM.Orientation"); +Clazz.defineMethod(c$, "getModelOrientation", +function(modelIndex){ +return this.am[modelIndex].orientation; +}, "~N"); +Clazz.defineMethod(c$, "getPDBHeader", +function(modelIndex){ +return (this.am[modelIndex].isBioModel ? (this.am[modelIndex]).getFullPDBHeader() : this.getFileHeader(modelIndex)); +}, "~N"); +Clazz.defineMethod(c$, "getFileHeader", +function(modelIndex){ +if (modelIndex < 0) return ""; +if (this.am[modelIndex].isBioModel) return this.getPDBHeader(modelIndex); +var info = this.getInfo(modelIndex, "fileHeader"); +if (info == null) info = this.modelSetName; +if (info != null) return info; +return "no header information found"; +}, "~N"); +Clazz.defineMethod(c$, "getAltLocCountInModel", +function(modelIndex){ +return this.am[modelIndex].altLocCount; +}, "~N"); +Clazz.defineMethod(c$, "getAltLocIndexInModel", +function(modelIndex, alternateLocationID){ +if (alternateLocationID == '\0') { +return 0; +}var altLocList = this.getAltLocListInModel(modelIndex); +if (altLocList.length == 0) { +return 0; +}return altLocList.indexOf(alternateLocationID) + 1; +}, "~N,~S"); +Clazz.defineMethod(c$, "getInsertionCodeIndexInModel", +function(modelIndex, insertionCode){ +if (insertionCode == '\0') return 0; +var codeList = this.getInsertionListInModel(modelIndex); +if (codeList.length == 0) return 0; +return codeList.indexOf(insertionCode) + 1; +}, "~N,~S"); +Clazz.defineMethod(c$, "getAltLocListInModel", +function(modelIndex){ +var str = this.getInfo(modelIndex, "altLocs"); +return (str == null ? "" : str); +}, "~N"); +Clazz.defineMethod(c$, "getInsertionListInModel", +function(modelIndex){ +var str = this.getInfo(modelIndex, "insertionCodes"); +return (str == null ? "" : str); +}, "~N"); +Clazz.defineMethod(c$, "getModelSymmetryCount", +function(modelIndex){ +return (this.am[modelIndex].biosymmetryCount > 0 ? this.am[modelIndex].biosymmetryCount : this.unitCells == null || this.unitCells[modelIndex] == null ? 0 : this.unitCells[modelIndex].getSpaceGroupOperationCount()); +}, "~N"); +Clazz.defineMethod(c$, "getModelCellRange", +function(modelIndex){ +return (this.unitCells == null ? null : this.unitCells[modelIndex].getCellRange()); +}, "~N"); +Clazz.defineMethod(c$, "getLastVibrationVector", +function(modelIndex, tok){ +if (this.vibrations != null && modelIndex < this.vwr.ms.mc) { +var v; +var a1 = (modelIndex < 0 || this.isTrajectory(modelIndex) || modelIndex >= this.mc - 1 ? this.ac : this.am[modelIndex + 1].firstAtomIndex); +var a0 = (modelIndex <= 0 ? 0 : this.am[modelIndex].firstAtomIndex); +for (var i = a1; --i >= a0; ) { +if ((modelIndex < 0 || !JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].mi == modelIndex) && ((tok == 1275072532 || tok == 0) && (v = this.getModulation(i)) != null || (tok == 4166 || tok == 0) && (v = this.getVibration(i, false)) != null) && v.isNonzero()) return i; +} +}return -1; +}, "~N,~N"); +Clazz.defineMethod(c$, "getModulationList", +function(bs, type, t456){ +var list = new JU.Lst(); +if (this.vibrations != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (Clazz.instanceOf(this.vibrations[i],"J.api.JmolModulationSet")) list.addLast((this.vibrations[i]).getModulation(type, t456, false)); + else list.addLast(Float.$valueOf(type == 'O' ? NaN : -1)); + +return list; +}, "JU.BS,~S,JU.P3"); +Clazz.defineMethod(c$, "getElementsPresentBitSet", +function(modelIndex){ +if (modelIndex >= 0) return this.elementsPresent[modelIndex]; +var bs = new JU.BS(); +for (var i = 0; i < this.mc; i++) bs.or(this.elementsPresent[i]); + +return bs; +}, "~N"); +Clazz.defineMethod(c$, "getMoleculeIndex", +function(atomIndex, inModel){ +if (this.moleculeCount == 0) this.getMolecules(); +for (var i = 0; i < this.moleculeCount; i++) { +if (this.molecules[i].atomList.get(atomIndex)) return (inModel ? this.molecules[i].indexInModel : i); +} +return 0; +}, "~N,~B"); +Clazz.defineMethod(c$, "getMoleculeBitSet", +function(bs){ +if (this.moleculeCount == 0) this.getMolecules(); +var bsResult = JU.BSUtil.copy(bs); +var bsInitial = JU.BSUtil.copy(bs); +var i = 0; +var bsTemp = new JU.BS(); +while ((i = bsInitial.length() - 1) >= 0) { +bsTemp = this.getMoleculeBitSetForAtom(i); +if (bsTemp == null) { +bsInitial.clear(i); +bsResult.clear(i); +continue; +}bsInitial.andNot(bsTemp); +bsResult.or(bsTemp); +} +return bsResult; +}, "JU.BS"); +Clazz.defineMethod(c$, "getMoleculeBitSetForAtom", +function(atomIndex){ +if (this.moleculeCount == 0) this.getMolecules(); +for (var i = 0; i < this.moleculeCount; i++) if (this.molecules[i].atomList.get(atomIndex)) return this.molecules[i].atomList; + +return null; +}, "~N"); +Clazz.defineMethod(c$, "getModelDipole", +function(modelIndex){ +if (modelIndex < 0) return null; +var dipole = this.getInfo(modelIndex, "dipole"); +if (dipole == null) dipole = this.getInfo(modelIndex, "DIPOLE_VEC"); +return dipole; +}, "~N"); +Clazz.defineMethod(c$, "calculateMolecularDipole", +function(modelIndex, bsAtoms){ +if (bsAtoms != null) { +var ia = bsAtoms.nextSetBit(0); +if (ia < 0) return null; +modelIndex = this.at[ia].mi; +}if (modelIndex < 0) return null; +var nPos = 0; +var nNeg = 0; +var cPos = 0; +var cNeg = 0; +var pos = new JU.V3(); +var neg = new JU.V3(); +if (bsAtoms == null) bsAtoms = this.getModelAtomBitSetIncludingDeleted(-1, false); +this.vwr.getOrCalcPartialCharges(this.am[modelIndex].bsAtoms, null); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i]) || this.at[i].mi != modelIndex) { +continue; +}var c = this.partialCharges[i]; +if (c < 0) { +nNeg++; +cNeg += c; +neg.scaleAdd2(c, this.at[i], neg); +} else if (c > 0) { +nPos++; +cPos += c; +pos.scaleAdd2(c, this.at[i], pos); +}} +if (Math.abs(cPos + cNeg) > 0.015) { +JU.Logger.info("Dipole calculation requires balanced charges: " + cPos + " " + cNeg); +return null; +}if (nNeg == 0 || nPos == 0) return null; +pos.add(neg); +pos.scale(4.8); +return pos; +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getMoleculeCountInModel", +function(modelIndex){ +var n = 0; +if (this.moleculeCount == 0) this.getMolecules(); +if (modelIndex < 0) return this.moleculeCount; +for (var i = 0; i < this.mc; i++) { +if (modelIndex == i) n += this.am[i].moleculeCount; +} +return n; +}, "~N"); +Clazz.defineMethod(c$, "calcSelectedMoleculesCount", +function(){ +var bsSelected = this.vwr.bsA(); +if (this.moleculeCount == 0) this.getMolecules(); +this.selectedMolecules.xor(this.selectedMolecules); +var bsTemp = new JU.BS(); +for (var i = 0; i < this.moleculeCount; i++) { +JU.BSUtil.copy2(bsSelected, bsTemp); +bsTemp.and(this.molecules[i].atomList); +if (bsTemp.length() > 0) { +this.selectedMolecules.set(i); +}} +}); +Clazz.defineMethod(c$, "setCentroid", +function(bs, minmax){ +var bsDelete = this.getNotInCentroid(bs, minmax); +if (bsDelete != null && bsDelete.nextSetBit(0) >= 0) this.vwr.deleteAtoms(bsDelete, false); +}, "JU.BS,~A"); +Clazz.defineMethod(c$, "getNotInCentroid", +function(bs, minmax){ +var iAtom0 = bs.nextSetBit(0); +if (iAtom0 < 0) return null; +var uc = this.getUnitCell(this.at[iAtom0].mi); +return (uc == null ? null : uc.notInCentroid(this, bs, minmax)); +}, "JU.BS,~A"); +Clazz.defineMethod(c$, "getMolecules", +function(){ +if (this.moleculeCount > 0) return this.molecules; +if (this.molecules == null) this.molecules = new Array(4); +this.moleculeCount = 0; +var m = null; +var bsModelAtoms = new Array(this.mc); +var biobranches = null; +for (var i = 0; i < this.mc; i++) { +bsModelAtoms[i] = this.vwr.getModelUndeletedAtomsBitSet(i); +m = this.am[i]; +m.moleculeCount = 0; +biobranches = (m.isBioModel ? (m).getBioBranches(biobranches) : null); +} +this.molecules = JU.JmolMolecule.getMolecules(this.at, bsModelAtoms, biobranches, null); +this.moleculeCount = this.molecules.length; +for (var i = this.moleculeCount; --i >= 0; ) { +m = this.am[this.molecules[i].modelIndex]; +m.firstMoleculeIndex = i; +m.moleculeCount++; +} +return this.molecules; +}); +Clazz.defineMethod(c$, "initializeBspf", +function(){ +if (this.bspf != null && this.bspf.isValid) return; +if (this.showRebondTimes) JU.Logger.startTimer("build bspf"); +var bspf = new J.bspt.Bspf(3); +if (JU.Logger.debugging) JU.Logger.debug("sequential bspt order"); +var bsNew = JU.BS.newN(this.mc); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (!JM.AtomCollection.isDeleted(atom) && !this.isTrajectorySubFrame(atom.mi)) { +bspf.addTuple(this.am[atom.mi].trajectoryBaseIndex, atom); +bsNew.set(atom.mi); +}} +if (this.showRebondTimes) { +JU.Logger.checkTimer("build bspf", false); +bspf.stats(); +}for (var i = bsNew.nextSetBit(0); i >= 0; i = bsNew.nextSetBit(i + 1)) bspf.validateModel(i, true); + +bspf.isValid = true; +this.bspf = bspf; +}); +Clazz.defineMethod(c$, "initializeBspt", +function(modelIndex){ +this.initializeBspf(); +if (this.bspf.isInitializedIndex(modelIndex)) return; +this.bspf.initialize(modelIndex, this.at, this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +}, "~N"); +Clazz.defineMethod(c$, "setIteratorForPoint", +function(iterator, modelIndex, pt, distance){ +if (modelIndex < 0) { +iterator.setCenter(pt, distance); +return; +}this.initializeBspt(modelIndex); +iterator.setModel(this, modelIndex, this.am[modelIndex].firstAtomIndex, 2147483647, pt, distance, null); +}, "J.api.AtomIndexIterator,~N,JU.T3,~N"); +Clazz.defineMethod(c$, "setIteratorForAtom", +function(iterator, modelIndex, atomIndex, distance, rd){ +if (modelIndex < 0) modelIndex = this.at[atomIndex].mi; +modelIndex = this.am[modelIndex].trajectoryBaseIndex; +this.initializeBspt(modelIndex); +iterator.setModel(this, modelIndex, this.am[modelIndex].firstAtomIndex, atomIndex, this.at[atomIndex], distance, rd); +}, "J.api.AtomIndexIterator,~N,~N,~N,J.atomdata.RadiusData"); +Clazz.defineMethod(c$, "getSelectedAtomIterator", +function(bsSelected, isGreaterOnly, modelZeroBased, hemisphereOnly, isMultiModel){ +this.initializeBspf(); +var iter; +if (isMultiModel) { +var bsModels = this.getModelBS(bsSelected, false); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) this.initializeBspt(i); + +iter = new JM.AtomIteratorWithinModelSet(bsModels); +} else { +iter = new JM.AtomIteratorWithinModel(); +}iter.initialize(this.bspf, bsSelected, isGreaterOnly, modelZeroBased, hemisphereOnly, this.vwr.isParallel()); +return iter; +}, "JU.BS,~B,~B,~B,~B"); +Clazz.overrideMethod(c$, "getBondCountInModel", +function(modelIndex){ +return (modelIndex < 0 ? this.bondCount : this.am[modelIndex].getBondCount()); +}, "~N"); +Clazz.defineMethod(c$, "getAtomCountInModel", +function(modelIndex){ +return (modelIndex < 0 ? this.ac : this.am[modelIndex].act); +}, "~N"); +Clazz.defineMethod(c$, "getModelAtomBitSetIncludingDeletedBs", +function(bsModels){ +var bs = new JU.BS(); +if (bsModels == null && this.bsAll == null) this.bsAll = JU.BSUtil.setAll(this.ac); +if (bsModels == null) bs.or(this.bsAll); + else for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) bs.or(this.getModelAtomBitSetIncludingDeleted(i, false)); + +return bs; +}, "JU.BS"); +Clazz.defineMethod(c$, "getModelAtomBitSetIncludingDeleted", +function(modelIndex, asCopy){ +var bs = (modelIndex < 0 ? this.bsAll : this.am[modelIndex].bsAtoms); +if (bs == null) bs = this.bsAll = JU.BSUtil.setAll(this.ac); +return (asCopy ? JU.BSUtil.copy(bs) : bs); +}, "~N,~B"); +Clazz.defineMethod(c$, "getAtomBitsMaybeDeleted", +function(tokType, specInfo){ +var bs; +switch (tokType) { +default: +return this.getAtomBitsMDa(tokType, specInfo, bs = new JU.BS()); +case 1073741925: +case 1073742189: +case 1111490587: +case 1073742128: +case 1073741863: +case 1086324744: +bs = new JU.BS(); +return (this.haveBioModels ? this.bioModelset.getAtomBitsStr(tokType, specInfo, bs) : bs); +case 1677721602: +case 1073742331: +return this.getAtomBitsMDb(tokType, specInfo); +case 1812599299: +var boxInfo = this.getBoxInfo(specInfo, 1); +bs = this.getAtomsWithin(boxInfo.getBoundBoxCornerVector().length() + 0.0001, boxInfo.getBoundBoxCenter(), null, -1); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (!boxInfo.isWithin(this.at[i])) bs.clear(i); + +return bs; +case 1094713350: +bs = JU.BSUtil.newBitSet2(0, this.ac); +var pt1 = specInfo; +var minmax = Clazz.newIntArray(-1, [Clazz.floatToInt(pt1.x) - 1, Clazz.floatToInt(pt1.y) - 1, Clazz.floatToInt(pt1.z) - 1, Clazz.floatToInt(pt1.x), Clazz.floatToInt(pt1.y), Clazz.floatToInt(pt1.z), 0]); +for (var i = this.mc; --i >= 0; ) { +var uc1 = this.getUnitCell(i); +if (uc1 == null) { +JU.BSUtil.andNot(bs, this.am[i].bsAtoms); +continue; +}bs.andNot(uc1.notInCentroid(this, this.am[i].bsAtoms, minmax)); +} +return bs; +case 1094713360: +return this.getMoleculeBitSet(specInfo); +case 1073742363: +return this.getSelectCodeRange(specInfo); +case 2097196: +bs = JU.BS.newN(this.ac); +var modelIndex = -1; +var nOps = 0; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var bsSym = atom.atomSymmetry; +if (bsSym != null) { +if (atom.mi != modelIndex) { +modelIndex = atom.mi; +if (this.getModelCellRange(modelIndex) == null) continue; +nOps = this.getModelSymmetryCount(modelIndex); +}var n = 0; +for (var j = nOps; --j >= 0; ) if (bsSym.get(j)) if (++n > 1) { +bs.set(i); +break; +} +}} +return bs; +case 1088421903: +return JU.BSUtil.copy(this.bsSymmetry == null ? this.bsSymmetry = JU.BS.newN(this.ac) : this.bsSymmetry); +case 1814695966: +var isSelectUC = ("unitcell".equals(specInfo)); +if (isSelectUC) { +specInfo = JU.P3.new3(1, 1, 1); +} else { +bs = new JU.BS(); +var uc1 = (Clazz.instanceOf(specInfo,"J.api.SymmetryInterface") ? specInfo : this.vwr.getCurrentUnitCell()); +if (uc1 == null) return bs; +uc1 = uc1.getUnitCellMultiplied(); +for (var i = this.ac; --i >= 0; ) { +if (this.at[i] != null) { +this.ptTemp1.setT(this.at[i]); +uc1.toFractional(this.ptTemp1, false); +if (uc1.checkPeriodic(this.ptTemp1)) bs.set(i); +}} +return bs; +}case 1094713349: +bs = new JU.BS(); +var pt = specInfo; +var uc = this.vwr.getSymTemp(); +System.out.println("MS test within"); +for (var mi = -1, i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var mia = this.at[i].getModelIndex(); +if (mi != mia) { +mi = mia; +uc = this.getUnitCell(mi); +}if (uc == null) continue; +this.ptTemp.setT(this.at[i]); +uc.toFractional(this.ptTemp, false); +if (uc.isWithinUnitCell(this.ptTemp, pt.x, pt.y, pt.z)) bs.set(i); +} +System.out.println("MS test within" + bs); +return bs; +} +}, "~N,~O"); +Clazz.defineMethod(c$, "getSelectCodeRange", +function(info){ +var bs = new JU.BS(); +var seqcodeA = info[0]; +var seqcodeB = info[1]; +var chainID = info[2]; +var caseSensitive = this.vwr.getBoolean(603979822); +if (chainID >= 0 && chainID < 300 && !caseSensitive) chainID = this.chainToUpper(chainID); +for (var iModel = this.mc; --iModel >= 0; ) if (this.am[iModel].isBioModel) { +var m = this.am[iModel]; +var id; +for (var i = m.chainCount; --i >= 0; ) { +var chain = m.chains[i]; +if (chainID == -1 || chainID == (id = chain.chainID) || !caseSensitive && id > 0 && id < 300 && chainID == this.chainToUpper(id)) { +var groups = chain.groups; +var n = chain.groupCount; +for (var index = 0; index >= 0; ) { +index = JM.ModelSet.selectSeqcodeRange(groups, n, index, seqcodeA, seqcodeB, bs); +} +}} +} +return bs; +}, "~A"); +c$.selectSeqcodeRange = Clazz.defineMethod(c$, "selectSeqcodeRange", +function(groups, n, index, seqcodeA, seqcodeB, bs){ +var seqcode; +var indexA; +var indexB; +var minDiff; +var isInexact = false; +for (indexA = index; indexA < n && groups[indexA].seqcode != seqcodeA; indexA++) { +} +if (indexA == n) { +if (index > 0) return -1; +isInexact = true; +minDiff = 2147483647; +for (var i = n; --i >= 0; ) if ((seqcode = groups[i].seqcode) > seqcodeA && (seqcode - seqcodeA) < minDiff) { +indexA = i; +minDiff = seqcode - seqcodeA; +} +if (minDiff == 2147483647) return -1; +}if (seqcodeB == 2147483647) { +indexB = n - 1; +isInexact = true; +} else { +for (indexB = indexA; indexB < n && groups[indexB].seqcode != seqcodeB; indexB++) { +} +if (indexB == n) { +if (index > 0) return -1; +isInexact = true; +minDiff = 2147483647; +for (var i = indexA; i < n; i++) if ((seqcode = groups[i].seqcode) < seqcodeB && (seqcodeB - seqcode) < minDiff) { +indexB = i; +minDiff = seqcodeB - seqcode; +} +if (minDiff == 2147483647) return -1; +}}for (var i = indexA; i <= indexB; ++i) groups[i].setAtomBits(bs); + +return (isInexact ? -1 : indexB + 1); +}, "~A,~N,~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "getAtomsWithinRadius", +function(distance, bs, withinAllModels, rd, bsSubset){ +var bsResult = new JU.BS(); +bs = JU.BSUtil.andNot(bs, this.vwr.slm.bsDeleted); +var iter = this.getSelectedAtomIterator(bsSubset, false, false, false, false); +if (withinAllModels) { +var fixJavaFloat = !this.vwr.g.legacyJavaFloat; +var ptTemp = new JU.P3(); +var bsModels = (bsSubset == null ? JU.BSUtil.newBitSet2(0, this.mc) : this.getModelBS(bsSubset, false)); +bsModels.and(this.getIterativeModels(false)); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) for (var iModel = bsModels.nextSetBit(0); iModel >= 0; iModel = bsModels.nextSetBit(iModel + 1)) { +if (distance < 0) { +this.getAtomsWithin(distance, this.at[i].getFractionalUnitCoordPt(fixJavaFloat, true, ptTemp), bsResult, iModel); +} else { +this.setIteratorForAtom(iter, iModel, i, distance, rd); +iter.addAtoms(bsResult); +}} + +} else { +if (bsSubset == null) bsResult.or(bs); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (distance < 0) { +this.getAtomsWithin(distance, this.at[i], bsResult, this.at[i].mi); +} else { +this.setIteratorForAtom(iter, -1, i, distance, rd); +iter.addAtoms(bsResult); +}} +}iter.release(); +return bsResult; +}, "~N,JU.BS,~B,J.atomdata.RadiusData,JU.BS"); +Clazz.defineMethod(c$, "getAtomsWithin", +function(distance, coord, bsResult, modelIndex){ +if (bsResult == null) bsResult = new JU.BS(); +if (distance < 0) { +distance = -distance; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom) || modelIndex >= 0 && atom.mi != modelIndex) continue; +if (!bsResult.get(i) && atom.getFractionalUnitDistance(coord, this.ptTemp1, this.ptTemp2) <= distance) bsResult.set(atom.i); +} +return bsResult; +}var iter = this.getSelectedAtomIterator(null, false, false, false, false); +var bsCheck = (modelIndex >= 0 ? JU.BSUtil.newAndSetBit(modelIndex) : this.getIterativeModels(true)); +for (var m = bsCheck.nextSetBit(0); m >= 0; m = bsCheck.nextSetBit(m + 1)) { +var i = this.am[m].bsAtoms.nextSetBit(0); +if (i < 0) continue; +this.setIteratorForAtom(iter, modelIndex, i, -1, null); +iter.setCenter(coord, distance); +iter.addAtoms(bsResult); +} +iter.release(); +return bsResult; +}, "~N,JU.T3,JU.BS,~N"); +Clazz.defineMethod(c$, "deleteBonds", +function(bsBonds, isFullModel){ +if (!isFullModel) { +var bsA = new JU.BS(); +var bsB = new JU.BS(); +for (var i = bsBonds.nextSetBit(0); i >= 0; i = bsBonds.nextSetBit(i + 1)) { +var atom1 = this.bo[i].atom1; +if (this.am[atom1.mi].isModelKit) continue; +bsA.clearAll(); +bsB.clearAll(); +bsA.set(atom1.i); +bsB.set(this.bo[i].getAtomIndex2()); +this.addStateScript("connect ", null, bsA, bsB, "delete", false, true); +} +}this.dBb(bsBonds, isFullModel); +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "makeConnections2", +function(minD, maxD, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy, state){ +if (bsBonds == null) bsBonds = new JU.BS(); +var matchAny = (order == 65535); +var matchNull = (order == 131071); +var isAtrop = (order == 65537); +if (matchNull) order = 1; +var matchHbond = JU.Edge.isOrderH(order); +var identifyOnly = false; +var idOrModifyOnly = false; +var createOnly = false; +var autoAromatize = false; +switch (connectOperation) { +case 12291: +return this.deleteConnections(minD, maxD, order, bsA, bsB, isBonds, matchNull); +case 603979872: +case 1073741852: +if (order != 515) { +if (isBonds) { +var bs = bsA; +bsA = new JU.BS(); +bsB = new JU.BS(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +bsA.set(this.bo[i].atom1.i); +bsB.set(this.bo[i].atom2.i); +} +}return Clazz.newIntArray(-1, [matchHbond ? this.autoHbond(bsA, bsB, false) : this.autoBondBs4(bsA, bsB, null, bsBonds, this.vwr.getMadBond(), connectOperation == 603979872, state), 0]); +}idOrModifyOnly = autoAromatize = true; +break; +case 1086324745: +identifyOnly = idOrModifyOnly = true; +break; +case 1073742025: +idOrModifyOnly = true; +break; +case 1073741904: +createOnly = true; +break; +} +var anyOrNoId = matchAny; +var notAnyAndNoId = (!identifyOnly && !matchAny); +this.defaultCovalentMad = this.vwr.getMadBond(); +var minDIsFrac = (minD < 0); +var maxDIsFrac = (maxD < 0); +var isFractional = (minDIsFrac || maxDIsFrac); +var checkDistance = (!isBonds || minD != 0.1 || maxD != 1.0E8); +if (checkDistance) { +minD = this.fixD(minD, minDIsFrac); +maxD = this.fixD(maxD, maxDIsFrac); +}var mad = this.getDefaultMadFromOrder(order); +var nNew = 0; +var nModified = 0; +var bondAB = null; +var atomA = null; +var atomB = null; +var altloc = '\u0000'; +var newOrder = (order | 131072); +var isAromaticOnly = (order != 65535 && (order & 512) != 0); +try { +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +if (isBonds) { +bondAB = this.bo[i]; +atomA = bondAB.atom1; +atomB = bondAB.atom2; +} else { +atomA = this.at[i]; +if (atomA.isDeleted()) continue; +altloc = (this.isModulated(i) ? '\0' : atomA.altloc); +}for (var j = (isBonds ? 0 : bsB.nextSetBit(0)); j >= 0; j = bsB.nextSetBit(j + 1)) { +if (isBonds) { +j = 2147483646; +} else { +if (j == i) continue; +atomB = this.at[j]; +if (atomB == null || atomA.mi != atomB.mi || atomB.isDeleted()) continue; +if (altloc != '\0' && altloc != atomB.altloc && atomB.altloc != '\0') continue; +bondAB = atomA.getBond(atomB); +}if ((bondAB == null ? idOrModifyOnly : createOnly) || checkDistance && !this.isInRange(atomA, atomB, minD, maxD, minDIsFrac, maxDIsFrac, isFractional) || isAromaticOnly && (bondAB != null && !this.allowAromaticBond(bondAB))) continue; +if (bondAB == null) { +bsBonds.set(this.bondAtoms(atomA, atomB, order, mad, bsBonds, energy, addGroup, true).index); +nNew++; +} else { +if (notAnyAndNoId) { +bondAB.setOrder(order); +if (isAtrop) { +this.haveAtropicBonds = true; +bondAB.setAtropisomerOptions(); +}this.bsAromatic.clear(bondAB.index); +}if (anyOrNoId || order == bondAB.order || newOrder == bondAB.order || matchHbond && bondAB.isHydrogen()) { +bsBonds.set(bondAB.index); +nModified++; +}}} +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (autoAromatize) this.assignAromaticBondsBs(true, bsBonds); +if (!identifyOnly) this.sm.setShapeSizeBs(1, -2147483648, null, bsBonds); +return Clazz.newIntArray(-1, [nNew, nModified]); +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N,JU.SB"); +Clazz.defineMethod(c$, "autoBondBs4", +function(bsA, bsB, bsExclude, bsBonds, mad, preJmol11_9_24, state){ +if (preJmol11_9_24) return this.autoBond_Pre_11_9_24(bsA, bsB, bsExclude, bsBonds, mad); +if (this.ac == 0) return 0; +if (mad == 0) mad = 1; +if (this.maxBondingRadius == 1.4E-45) this.findMaxRadii(); +var bondTolerance = this.vwr.getFloat(570425348); +var minBondDistance = this.vwr.getFloat(570425364); +var minBondDistance2 = minBondDistance * minBondDistance; +var nNew = 0; +if (this.showRebondTimes) JU.Logger.startTimer("autobond"); +var lastModelIndex = -1; +var isAll = (bsA == null); +var bsCheck; +var i0; +if (isAll) { +i0 = 0; +bsCheck = null; +} else { +if (bsA.equals(bsB)) { +bsCheck = bsA; +} else { +bsCheck = JU.BSUtil.copy(bsA); +bsCheck.or(bsB); +}i0 = bsCheck.nextSetBit(0); +}var iter = this.getSelectedAtomIterator(null, false, false, true, false); +var useOccupation = false; +for (var i = i0; i >= 0 && i < this.ac; i = (isAll ? i + 1 : bsCheck.nextSetBit(i + 1))) { +var isAtomInSetA = (isAll || bsA.get(i)); +var isAtomInSetB = (isAll || bsB.get(i)); +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var modelIndex = atom.mi; +if (modelIndex != lastModelIndex) { +lastModelIndex = modelIndex; +if (this.isJmolDataFrameForModel(modelIndex)) { +i = this.am[modelIndex].firstAtomIndex + this.am[modelIndex].act - 1; +continue; +}useOccupation = this.getInfoB(modelIndex, "autoBondUsingOccupation"); +}var myBondingRadius = atom.getBondingRadius(); +if (myBondingRadius == 0) continue; +var myFormalCharge = atom.getFormalCharge(); +var useCharge = (myFormalCharge != 0); +if (useCharge) myFormalCharge = Math.signum(myFormalCharge); +var isFirstExcluded = (bsExclude != null && bsExclude.get(i)); +var searchRadius = myBondingRadius + this.maxBondingRadius + bondTolerance; +this.setIteratorForAtom(iter, -1, i, searchRadius, null); +while (iter.hasNext()) { +var atomNear = this.at[iter.next()]; +if (atomNear.isDeleted()) continue; +var j = atomNear.i; +var isNearInSetA = (isAll || bsA.get(j)); +var isNearInSetB = (isAll || bsB.get(j)); +if (!isNearInSetA && !isNearInSetB || !(isAtomInSetA && isNearInSetB || isAtomInSetB && isNearInSetA) || isFirstExcluded && bsExclude.get(j) || useOccupation && this.occupancies != null && (this.occupancies[i] < 50) != (this.occupancies[j] < 50) || useCharge && (Math.signum(atomNear.getFormalCharge()) == myFormalCharge)) continue; +var order = (this.isBondable(myBondingRadius, atomNear.getBondingRadius(), iter.foundDistance2(), minBondDistance2, bondTolerance) ? 1 : 0); +if (order > 0 && this.autoBondCheck(atom, atomNear, order, mad, bsBonds)) { +nNew++; +if (state != null) state.append("connect ({" + i + "}) ({" + j + "});"); +}} +iter.release(); +} +if (this.showRebondTimes) JU.Logger.checkTimer("autoBond", false); +return nNew; +}, "JU.BS,JU.BS,JU.BS,JU.BS,~N,~B,JU.SB"); +Clazz.defineMethod(c$, "isBondable", +function(bondingRadiusA, bondingRadiusB, distance2, minBondDistance2, bondTolerance){ +if (bondingRadiusA == 0 || bondingRadiusB == 0 || distance2 < minBondDistance2) return false; +var maxAcceptable = bondingRadiusA + bondingRadiusB + bondTolerance; +var maxAcceptable2 = maxAcceptable * maxAcceptable; +return (distance2 <= maxAcceptable2); +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "autoBondCheck", +function(atomA, atomB, order, mad, bsBonds){ +if (atomA.getCurrentBondCount() > 20 || atomB.getCurrentBondCount() > 20) { +if (!this.maxBondWarned) JU.Logger.warn("maximum auto bond count reached"); +this.maxBondWarned = true; +return false; +}var formalChargeA = atomA.getFormalCharge(); +if (formalChargeA != 0) { +var formalChargeB = atomB.getFormalCharge(); +if ((formalChargeA < 0 && formalChargeB < 0) || (formalChargeA > 0 && formalChargeB > 0)) return false; +}if (atomA.altloc != atomB.altloc && atomA.altloc != '\0' && atomB.altloc != '\0' && this.getModulation(atomA.i) == null) return false; +this.getOrAddBond(atomA, atomB, order, mad, bsBonds, 0, false); +return true; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "autoBond_Pre_11_9_24", +function(bsA, bsB, bsExclude, bsBonds, mad){ +if (this.ac == 0) return 0; +if (mad == 0) mad = 1; +if (this.maxBondingRadius == 1.4E-45) this.findMaxRadii(); +var bondTolerance = this.vwr.getFloat(570425348); +var minBondDistance = this.vwr.getFloat(570425364); +var minBondDistance2 = minBondDistance * minBondDistance; +var nNew = 0; +this.initializeBspf(); +var lastModelIndex = -1; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var isAtomInSetA = (bsA == null || bsA.get(i)); +var isAtomInSetB = (bsB == null || bsB.get(i)); +if (!isAtomInSetA && !isAtomInSetB) continue; +if (atom.isDeleted()) continue; +var modelIndex = atom.mi; +if (modelIndex != lastModelIndex) { +lastModelIndex = modelIndex; +if (this.isJmolDataFrameForModel(modelIndex)) { +for (; --i >= 0; ) if (JM.AtomCollection.isDeleted(this.at[i]) || this.at[i].mi != modelIndex) break; + +i++; +continue; +}}var myBondingRadius = atom.getBondingRadius(); +if (myBondingRadius == 0) continue; +var searchRadius = myBondingRadius + this.maxBondingRadius + bondTolerance; +this.initializeBspt(modelIndex); +var iter = this.bspf.getCubeIterator(modelIndex); +iter.initialize(atom, searchRadius, true); +while (iter.hasMoreElements()) { +var atomNear = iter.nextElement(); +if (atomNear === atom || atomNear.isDeleted()) continue; +var atomIndexNear = atomNear.i; +var isNearInSetA = (bsA == null || bsA.get(atomIndexNear)); +var isNearInSetB = (bsB == null || bsB.get(atomIndexNear)); +if (!isNearInSetA && !isNearInSetB || bsExclude != null && bsExclude.get(atomIndexNear) && bsExclude.get(i)) continue; +if (!(isAtomInSetA && isNearInSetB || isAtomInSetB && isNearInSetA)) continue; +var order = (this.isBondable(myBondingRadius, atomNear.getBondingRadius(), iter.foundDistance2(), minBondDistance2, bondTolerance) ? 1 : 0); +if (order > 0) { +if (this.autoBondCheck(atom, atomNear, order, mad, bsBonds)) nNew++; +}} +iter.release(); +} +return nNew; +}, "JU.BS,JU.BS,JU.BS,JU.BS,~N"); +Clazz.defineMethod(c$, "autoHbond", +function(bsA, bsB, onlyIfHaveCalculated){ +if (onlyIfHaveCalculated) { +var bsModels = this.getModelBS(bsA, false); +for (var i = bsModels.nextSetBit(0); i >= 0 && onlyIfHaveCalculated; i = bsModels.nextSetBit(i + 1)) onlyIfHaveCalculated = !this.am[i].hasRasmolHBonds; + +if (onlyIfHaveCalculated) return 0; +}var haveHAtoms = false; +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) if (this.at[i].getElementNumber() == 1) { +haveHAtoms = true; +break; +} +var bsHBonds = new JU.BS(); +var useRasMol = this.vwr.getBoolean(603979853); +if (bsB == null || useRasMol && !haveHAtoms) { +JU.Logger.info((bsB == null ? "DSSP/DSSR " : "RasMol") + " pseudo-hbond calculation"); +this.calcRasmolHydrogenBonds(bsA, bsB, null, false, 2147483647, false, bsHBonds); +return -bsHBonds.cardinality(); +}JU.Logger.info(haveHAtoms ? "Standard Hbond calculation" : "Jmol pseudo-hbond calculation"); +var bsCO = null; +if (!haveHAtoms) { +bsCO = new JU.BS(); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var atomID = this.at[i].atomID; +switch (atomID) { +case 64: +case 4: +case 14: +case 15: +case 16: +case 17: +bsCO.set(i); +break; +} +} +}var dmax; +var min2; +if (haveHAtoms) { +dmax = this.vwr.getFloat(570425361); +min2 = 1; +} else { +dmax = this.vwr.getFloat(570425360); +min2 = JM.ModelSet.hbondMinRasmol * JM.ModelSet.hbondMinRasmol; +}var max2 = dmax * dmax; +var minAttachedAngle = (this.vwr.getFloat(570425359) * 3.141592653589793 / 180); +var nNew = 0; +var d2 = 0; +if (this.showRebondTimes && JU.Logger.debugging) JU.Logger.startTimer("hbond"); +var C = null; +var D = null; +var iter = this.getSelectedAtomIterator(bsB, false, false, false, false); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var atom = this.at[i]; +var elementNumber = atom.getElementNumber(); +var isH = (elementNumber == 1); +if (isH ? !haveHAtoms : haveHAtoms || elementNumber != 7 && elementNumber != 8) continue; +var firstIsCO; +if (isH) { +firstIsCO = false; +var b = atom.bonds; +if (b == null) continue; +var isOK = false; +for (var j = 0; !isOK && j < b.length; j++) { +var a2 = b[j].getOtherAtom(atom); +var element = a2.getElementNumber(); +isOK = (element == 7 || element == 8); +} +if (!isOK) continue; +} else { +firstIsCO = bsCO.get(i); +}this.setIteratorForAtom(iter, -1, atom.i, dmax, null); +while (iter.hasNext()) { +var atomNear = this.at[iter.next()]; +var elementNumberNear = atomNear.getElementNumber(); +if (atomNear === atom || (isH ? elementNumberNear == 1 : elementNumberNear != 7 && elementNumberNear != 8) || (d2 = iter.foundDistance2()) < min2 || d2 > max2 || firstIsCO && bsCO.get(atomNear.i) || atom.isBonded(atomNear)) { +continue; +}this.v1.sub2(atom, atomNear); +if ((D = JM.ModelSet.checkMinAttachedAngle(atom, minAttachedAngle, this.v1, this.v2, haveHAtoms)) == null) continue; +this.v1.scale(-1); +if ((C = JM.ModelSet.checkMinAttachedAngle(atomNear, minAttachedAngle, this.v1, this.v2, haveHAtoms)) == null) continue; +var energy = 0; +var bo; +if (isH && !Float.isNaN(C.x) && !Float.isNaN(D.x)) { +bo = 4096; +energy = JM.HBond.calcEnergy(Math.sqrt(d2), C.distance(atom), C.distance(D), atomNear.distance(D)) / 1000; +} else { +bo = 2048; +}bsHBonds.set(this.addHBond(atom, atomNear, bo, energy)); +nNew++; +} +} +iter.release(); +this.sm.setShapeSizeBs(1, -2147483648, null, bsHBonds); +if (this.showRebondTimes) JU.Logger.checkTimer("hbond", false); +return (haveHAtoms ? nNew : -nNew); +}, "JU.BS,JU.BS,~B"); +c$.checkMinAttachedAngle = Clazz.defineMethod(c$, "checkMinAttachedAngle", +function(atom1, minAngle, v1, v2, haveHAtoms){ +var bonds = atom1.bonds; +var ignore = true; +var X = null; +if (bonds != null && bonds.length > 0) { +var dMin = 3.4028235E38; +for (var i = bonds.length; --i >= 0; ) if (bonds[i].isCovalent()) { +ignore = false; +var atomA = bonds[i].getOtherAtom(atom1); +if (!haveHAtoms && atomA.getElementNumber() == 1) continue; +v2.sub2(atom1, atomA); +var d = v2.angle(v1); +if (d < minAngle) return null; +if (d < dMin) { +X = atomA; +dMin = d; +}} +}return (ignore ? JU.P3.new3(NaN, 0, 0) : X); +}, "JM.Atom,~N,JU.V3,JU.V3,~B"); +Clazz.defineMethod(c$, "setStructureIndexes", +function(){ +var id; +var idnew = 0; +var lastid = -1; +var imodel = -1; +var lastmodel = -1; +for (var i = 0; i < this.ac; i++) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +if ((imodel = this.at[i].mi) != lastmodel) { +idnew = 0; +lastmodel = imodel; +lastid = -1; +}if ((id = this.at[i].group.getStrucNo()) != lastid && id != 0) { +this.at[i].group.setStrucNo(++idnew); +lastid = idnew; +}} +}); +Clazz.defineMethod(c$, "getModelInfoAsString", +function(){ +var sb = new JU.SB().append("\n"); +if (this.modelSetProperties != null) { +var e = this.modelSetProperties.propertyNames(); +while (e.hasMoreElements()) { +var propertyName = e.nextElement(); +sb.append("\n "); +} +sb.append("\n"); +}for (var i = 0; i < this.mc; ++i) { +sb.append("\n"); +} +sb.append("\n"); +return sb.toString(); +}); +Clazz.defineMethod(c$, "getSymmetryInfoAsString", +function(){ +var sb = new JU.SB().append("Symmetry Information:"); +for (var i = 0; i < this.mc; ++i) { +sb.append("\nmodel #").append(this.getModelNumberDotted(i)).append("; name=").append(this.getModelName(i)).append("\n"); +var unitCell = this.getUnitCell(i); +sb.append(unitCell == null ? "no symmetry information" : unitCell.getSymmetryInfoStr()); +} +return sb.toString(); +}); +Clazz.defineMethod(c$, "createModels", +function(n){ +var newModelCount = this.mc + n; +var newModels = JU.AU.arrayCopyObject(this.am, newModelCount); +this.validateBspf(false); +this.modelNumbers = JU.AU.arrayCopyI(this.modelNumbers, newModelCount); +this.modelFileNumbers = JU.AU.arrayCopyI(this.modelFileNumbers, newModelCount); +this.modelNumbersForAtomLabel = JU.AU.arrayCopyS(this.modelNumbersForAtomLabel, newModelCount); +this.modelNames = JU.AU.arrayCopyS(this.modelNames, newModelCount); +this.frameTitles = JU.AU.arrayCopyS(this.frameTitles, newModelCount); +var f = Clazz.doubleToInt(this.modelFileNumbers[this.mc - 1] / 1000000) + 1; +for (var i = this.mc, pt = 0; i < newModelCount; i++) { +this.modelNumbers[i] = i + this.mc; +this.modelFileNumbers[i] = f * 1000000 + (++pt); +this.modelNumbersForAtomLabel[i] = this.modelNames[i] = f + "." + pt; +} +this.thisStateModel = -1; +var group3Lists = this.getInfoM("group3Lists"); +if (group3Lists != null) { +var group3Counts = this.getInfoM("group3Counts"); +group3Lists = JU.AU.arrayCopyS(group3Lists, newModelCount); +group3Counts = JU.AU.arrayCopyII(group3Counts, newModelCount); +this.msInfo.put("group3Lists", group3Lists); +this.msInfo.put("group3Counts", group3Counts); +}this.unitCells = (this.unitCells == null ? new Array(newModelCount) : JU.AU.arrayCopyObject(this.unitCells, newModelCount)); +for (var i = this.mc; i < newModelCount; i++) { +newModels[i] = new JM.Model().set(this, i, -1, null, null, null); +newModels[i].loadState = " model create #" + i + ";"; +} +this.am = newModels; +this.mc = newModelCount; +this.vwr.setAnimationRange(-1, -1); +}, "~N"); +Clazz.defineMethod(c$, "deleteAtoms", +function(bs){ +if (bs == null) return; +var bsModels = this.getModelBS(bs, false); +var bsBonds = new JU.BS(); +var doNull = false; +for (var i = bs.nextSetBit(0); i >= 0 && i < this.ac; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +this.at[i].$delete(bsBonds); +if (doNull) this.at[i] = null; +} +var bsAtoms = JU.BSUtil.copy(bs); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +m.resetDSSR(false); +m.bsAtomsDeleted.or(bs); +m.bsAtomsDeleted.and(m.bsAtoms); +if (m.bsAsymmetricUnit != null) m.bsAsymmetricUnit.andNot(bs); +if (bsModels.get(m.modelIndex)) { +this.updateBasisFromSite(m.modelIndex); +}bs = JU.BSUtil.andNot(m.bsAtoms, m.bsAtomsDeleted); +m.firstAtomIndex = bs.nextSetBit(0); +m.act = bs.cardinality(); +m.isOrderly = (m.act == m.bsAtoms.length() - m.firstAtomIndex); +} +this.deleteBonds(bsBonds, false); +this.vwr.shm.notifyAtoms("atomsDeleted", Clazz.newArray(-1, [bsAtoms, bsModels])); +this.validateBspf(false); +}, "JU.BS"); +Clazz.defineMethod(c$, "clearDB", +function(atomIndex){ +this.getModelAuxiliaryInfo(this.at[atomIndex].mi).remove("dbName"); +}, "~N"); +Clazz.defineMethod(c$, "adjustAtomArrays", +function(map, i0, ac){ +this.ac = ac; +for (var i = i0; i < ac; i++) { +this.at[i] = this.at[map[i]]; +this.at[i].i = i; +var m = this.am[this.at[i].mi]; +if (m.firstAtomIndex == map[i]) m.firstAtomIndex = i; +m.bsAtoms.set(i); +} +if (this.vibrations != null) for (var i = i0; i < ac; i++) this.vibrations[i] = this.vibrations[map[i]]; + +if (this.atomTensorList != null) { +for (var i = i0; i < ac; i++) { +var list = this.atomTensorList[i] = this.atomTensorList[map[i]]; +if (list != null) for (var j = list.length; --j >= 0; ) { +var t = list[j]; +if (t != null) { +t.atomIndex1 = i; +}} +} +}if (this.atomNames != null) for (var i = i0; i < ac; i++) this.atomNames[i] = this.atomNames[map[i]]; + +if (this.atomTypes != null) for (var i = i0; i < ac; i++) this.atomTypes[i] = this.atomTypes[map[i]]; + +if (this.atomResnos != null) for (var i = i0; i < ac; i++) this.atomResnos[i] = this.atomResnos[map[i]]; + +if (this.atomSerials != null) for (var i = i0; i < ac; i++) this.atomSerials[i] = this.atomSerials[map[i]]; + +if (this.atomSeqIDs != null) for (var i = i0; i < ac; i++) this.atomSeqIDs[i] = this.atomSeqIDs[map[i]]; + +if (this.bfactor100s != null) for (var i = i0; i < ac; i++) this.bfactor100s[i] = this.bfactor100s[map[i]]; + +if (this.occupancies != null) for (var i = i0; i < ac; i++) this.occupancies[i] = this.occupancies[map[i]]; + +if (this.partialCharges != null) for (var i = i0; i < ac; i++) this.partialCharges[i] = this.partialCharges[map[i]]; + +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "growAtomArrays", +function(newLength){ +this.at = JU.AU.arrayCopyObject(this.at, newLength); +if (this.vibrations != null) this.vibrations = JU.AU.arrayCopyObject(this.vibrations, newLength); +if (this.occupancies != null) this.occupancies = JU.AU.arrayCopyF(this.occupancies, newLength); +if (this.bfactor100s != null) this.bfactor100s = JU.AU.arrayCopyShort(this.bfactor100s, newLength); +if (this.partialCharges != null) this.partialCharges = JU.AU.arrayCopyF(this.partialCharges, newLength); +if (this.atomTensorList != null) this.atomTensorList = JU.AU.arrayCopyObject(this.atomTensorList, newLength); +if (this.atomNames != null) this.atomNames = JU.AU.arrayCopyS(this.atomNames, newLength); +if (this.atomTypes != null) this.atomTypes = JU.AU.arrayCopyS(this.atomTypes, newLength); +if (this.atomResnos != null) this.atomResnos = JU.AU.arrayCopyI(this.atomResnos, newLength); +if (this.atomSerials != null) this.atomSerials = JU.AU.arrayCopyI(this.atomSerials, newLength); +if (this.atomSeqIDs != null) this.atomSeqIDs = JU.AU.arrayCopyI(this.atomSeqIDs, newLength); +}, "~N"); +Clazz.defineMethod(c$, "addAtom", +function(modelIndex, group, atomicAndIsotopeNumber, atomName, atomType, atomSerial, atomSeqID, atomSite, xyz, radius, vib, formalCharge, partialCharge, occupancy, bfactor, tensors, isHetero, specialAtomID, atomSymmetry, bondRadius){ +var atom = new JM.Atom().setAtom(modelIndex, this.ac, xyz, radius, atomSymmetry, atomSite, atomicAndIsotopeNumber, formalCharge, isHetero); +this.am[modelIndex].act++; +this.am[modelIndex].bsAtoms.set(this.ac); +if (JU.Elements.isElement(atomicAndIsotopeNumber, 1)) this.am[modelIndex].hydrogenCount++; +if (this.ac >= this.at.length) this.growAtomArrays(this.ac + 100); +this.at[this.ac] = atom; +this.setBFactor(this.ac, bfactor, false); +this.setOccupancy(this.ac, occupancy, false); +this.setPartialCharge(this.ac, partialCharge, false); +if (tensors != null) this.setAtomTensors(this.ac, tensors); +atom.group = group; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +if (atomName != null) { +if (atomType != null) { +if (this.atomTypes == null) this.atomTypes = new Array(this.at.length); +this.atomTypes[this.ac] = atomType; +}atom.atomID = specialAtomID; +if (specialAtomID == 0) { +if (this.atomNames == null) this.atomNames = new Array(this.at.length); +this.atomNames[this.ac] = atomName.intern(); +}}if (atomSerial != -2147483648) { +if (this.atomSerials == null) this.atomSerials = Clazz.newIntArray (this.at.length, 0); +this.atomSerials[this.ac] = atomSerial; +}if (atomSeqID != 0) { +if (this.atomSeqIDs == null) this.atomSeqIDs = Clazz.newIntArray (this.at.length, 0); +this.atomSeqIDs[this.ac] = atomSeqID; +}if (vib != null) this.setVibrationVector(this.ac, vib); +if (!Float.isNaN(bondRadius)) this.setBondingRadius(this.ac, bondRadius); +this.ac++; +return atom; +}, "~N,JM.Group,~N,~S,~S,~N,~N,~N,JU.P3,~N,JU.V3,~N,~N,~N,~N,JU.Lst,~B,~N,JU.BS,~N"); +Clazz.defineMethod(c$, "getInlineData", +function(modelIndex){ +var data = null; +if (modelIndex >= 0) data = this.am[modelIndex].loadScript; + else for (modelIndex = this.mc; --modelIndex >= 0; ) if ((data = this.am[modelIndex].loadScript).length() > 0) break; + +var pt = data.lastIndexOf("data \""); +if (pt < 0) { +var s = JU.PT.getQuotedStringAt(data.toString(), 0); +return JS.ScriptCompiler.unescapeString(s, 0, s.length); +}pt = data.indexOf2("\"", pt + 7); +var pt2 = data.lastIndexOf("end \""); +if (pt2 < pt || pt < 0) return null; +return data.substring2(pt + 2, pt2); +}, "~N"); +Clazz.defineMethod(c$, "isAtomPDB", +function(i){ +return i >= 0 && this.am[this.at[i].mi].isBioModel; +}, "~N"); +Clazz.defineMethod(c$, "setAtomNamesAndNumbers", +function(iFirst, baseAtomIndex, mergeSet, isModelKit){ +var mi0 = -1; +if (isModelKit) { +while (iFirst < this.ac && JM.AtomCollection.isDeleted(this.at[iFirst])) iFirst++; + +if (iFirst >= this.ac) return; +mi0 = this.at[iFirst].mi; +iFirst = this.am[mi0].firstAtomIndex; +}if (this.atomSerials == null) this.atomSerials = Clazz.newIntArray (this.ac, 0); +if (this.atomNames == null) this.atomNames = new Array(this.ac); +var isZeroBased = this.isXYZ && this.vwr.getBoolean(603979978); +var thisModelIndex = 2147483647; +var atomNo = 1; +for (var i = iFirst; i < this.ac; ++i) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (atom.mi != thisModelIndex) { +if (isModelKit && thisModelIndex != 2147483647 && atom.mi != mi0) continue; +thisModelIndex = atom.mi; +atomNo = (isZeroBased ? 0 : 1); +}var ano = this.atomSerials[i]; +if (i >= -baseAtomIndex) { +if (ano == 0 || isModelKit) this.atomSerials[i] = (i < baseAtomIndex ? mergeSet.atomSerials[i] : atomNo); +if (this.atomNames[i] == null || isModelKit) this.atomNames[i] = (atom.getElementSymbol() + this.atomSerials[i]).intern(); +} else { +if (ano > atomNo) { +atomNo = ano; +}if (isModelKit) { +this.atomNames[i] = (atom.getElementSymbol() + ano).intern(); +}}if (!this.am[thisModelIndex].isModelKit || atom.getElementNumber() > 0) atomNo++; +} +}, "~N,~N,JM.AtomCollection,~B"); +Clazz.defineMethod(c$, "connect", +function(connections){ +this.resetMolecules(); +var bsDelete = new JU.BS(); +for (var i = 0; i < connections.length; i++) { +var f = connections[i]; +if (f == null || f.length < 2) continue; +var index1 = Clazz.floatToInt(f[0]); +var addGroup = (index1 < 0); +if (addGroup) index1 = -1 - index1; +var index2 = Clazz.floatToInt(f[1]); +if (index2 < 0 || index1 >= this.ac || index2 >= this.ac) continue; +var order = (f.length > 2 ? Clazz.floatToInt(f[2]) : 1); +if (order < 0) order &= 0xFFFF; +var mad = (f.length > 3 ? Clazz.floatToShort(1000 * connections[i][3]) : this.getDefaultMadFromOrder(order)); +if (order == 0 || mad == 0 && order != 32768 && !JU.Edge.isOrderH(order)) { +var b = this.at[index1].getBond(this.at[index2]); +if (b != null) bsDelete.set(b.index); +continue; +}var energy = (f.length > 4 ? f[4] : 0); +this.bondAtoms(this.at[index1], this.at[index2], order, mad, null, energy, addGroup, true); +} +if (bsDelete.nextSetBit(0) >= 0) this.deleteBonds(bsDelete, false); +}, "~A"); +Clazz.defineMethod(c$, "setFrameDelayMs", +function(millis, bsModels){ +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) this.am[this.am[i].trajectoryBaseIndex].frameDelay = millis; + +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getFrameDelayMs", +function(i){ +return (i < this.am.length && i >= 0 ? this.am[this.am[i].trajectoryBaseIndex].frameDelay : 0); +}, "~N"); +Clazz.defineMethod(c$, "getModelIndexFromId", +function(id){ +var haveFile = (id.indexOf("#") >= 0); +var isBaseModel = id.toLowerCase().endsWith(".basemodel"); +if (isBaseModel) id = id.substring(0, id.length - 10); +var errCode = -1; +var fname = null; +for (var i = 0; i < this.mc; i++) { +var mid = this.getInfo(i, "modelID"); +var mnum = (id.startsWith("~") ? "~" + this.getModelNumberDotted(i) : null); +if (mnum == null && mid == null && (mid = this.getModelTitle(i)) == null) continue; +if (haveFile) { +fname = this.getModelFileName(i); +if (fname.endsWith("#molfile")) { +mid = fname; +} else { +fname += "#"; +mid = fname + mid; +}}if (id.equalsIgnoreCase(mid) || id.equalsIgnoreCase(mnum)) return (isBaseModel ? this.vwr.getJDXBaseModelIndex(i) : i); +if (fname != null && id.startsWith(fname)) errCode = -2; +} +return (fname == null && !haveFile ? -2 : errCode); +}, "~S"); +Clazz.defineMethod(c$, "getModelSetAuxiliaryInfo", +function(bsModels){ +var info = this.msInfo; +if (info == null) info = new java.util.Hashtable(); +if (bsModels != null || !info.containsKey("models")) { +var minfo = new JU.Lst(); +for (var i = 0; i < this.mc; ++i) if (bsModels == null || bsModels.get(i)) { +var m = this.getModelAuxiliaryInfo(i); +m.put("modelIndex", Integer.$valueOf(i)); +minfo.addLast(m); +} +info.put("models", minfo); +}return info; +}, "JU.BS"); +Clazz.defineMethod(c$, "getDihedralMap", +function(alist){ +var list = new JU.Lst(); +var n = alist.length; +var ai = null; +var aj = null; +var ak = null; +var al = null; +for (var i = n - 1; --i >= 0; ) for (var j = n; --j > i; ) { +ai = this.at[alist[i]]; +aj = this.at[alist[j]]; +if (ai.isBonded(aj)) { +for (var k = n; --k >= 0; ) if (k != i && k != j && (ak = this.at[alist[k]]).isBonded(ai)) for (var l = n; --l >= 0; ) if (l != i && l != j && l != k && (al = this.at[alist[l]]).isBonded(aj)) { +var a = Clazz.newIntArray (4, 0); +a[0] = ak.i; +a[1] = ai.i; +a[2] = aj.i; +a[3] = al.i; +list.addLast(a); +} + +}} + +n = list.size(); +var ilist = JU.AU.newInt2(n); +for (var i = n; --i >= 0; ) ilist[n - i - 1] = list.get(i); + +return ilist; +}, "~A"); +Clazz.defineMethod(c$, "setModulation", +function(bs, isOn, qtOffset, isQ){ +if (this.bsModulated == null) { +if (isOn) this.bsModulated = new JU.BS(); + else if (bs == null) return; +}if (bs == null) bs = this.getModelAtomBitSetIncludingDeleted(-1, false); +var scale = this.vwr.getFloat(1275072532); +var haveMods = false; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var ms = this.getModulation(i); +if (ms == null) continue; +ms.setModTQ(this.at[i], isOn, qtOffset, isQ, scale); +if (this.bsModulated != null) this.bsModulated.setBitTo(i, isOn); +haveMods = true; +} +if (!haveMods) this.bsModulated = null; +}, "JU.BS,~B,JU.P3,~B"); +Clazz.defineMethod(c$, "getBoundBoxOrientation", +function(type, bsAtoms, points){ +var dx = 0; +var dy = 0; +var dz = 0; +var q = null; +var qBest = null; +var j0 = bsAtoms.nextSetBit(0); +var vMin = 0; +if (j0 >= 0) { +if (this.vOrientations == null) { +var n = 0; +var p4 = new JU.P4(); +var av = new Array(3375); +for (var i = -7; i <= 7; i++) for (var j = -7; j <= 7; j++) for (var k = 0; k <= 14; k++, n++) if ((av[n] = JU.V3.new3(i / 7, j / 7, k / 14)).length() > 1) --n; + + + +this.vOrientations = new Array(n); +for (var i = n; --i >= 0; ) { +p4.set4(av[i].x, av[i].y, av[i].z, 0); +this.vOrientations[i] = JU.Quat.newP4(p4); +} +for (var i = n; --i >= 0; ) { +var cos = Math.sqrt(1 - av[i].lengthSquared()); +if (Float.isNaN(cos)) cos = 0; +p4.set4(av[i].x, av[i].y, av[i].z, cos); +this.vOrientations[i] = JU.Quat.newP4(p4); +} +}var pt = new JU.P3(); +vMin = 3.4028235E38; +var bBest = null; +var v; +var b = new JU.BoxInfo(); +b.setMargin(type == 1312817669 ? 0 : 0.1); +for (var i = this.vOrientations.length; --i >= 0; ) { +q = this.vOrientations[i]; +b.reset(); +if (points == null) { +for (var j = j0; j >= 0; j = bsAtoms.nextSetBit(j + 1)) { +var p = q.transform2(this.at[j], pt); +b.addBoundBoxPoint(p); +} +} else { +for (var j = points.length; --j >= 0; ) b.addBoundBoxPoint(q.transform2(points[j], pt)); + +}switch (type) { +default: +case 1312817669: +case 1073741864: +case 1814695966: +v = (b.bbCorner1.x - b.bbCorner0.x) * (b.bbCorner1.y - b.bbCorner0.y) * (b.bbCorner1.z - b.bbCorner0.z); +break; +case 1111492629: +v = b.bbCorner1.x - b.bbCorner0.x; +break; +case 1111492630: +v = b.bbCorner1.y - b.bbCorner0.y; +break; +case 1111492631: +v = b.bbCorner1.z - b.bbCorner0.z; +break; +} +if (v < vMin) { +qBest = q; +bBest = b; +b = new JU.BoxInfo(); +b.setMargin(0.1); +vMin = v; +}} +switch (type) { +default: +return qBest; +case 1814695966: +var pts = bBest.getBoundBoxVertices(); +pts = Clazz.newArray(-1, [pts[0], pts[4], pts[2], pts[1]]); +qBest = qBest.inv(); +for (var i = 0; i < 4; i++) { +qBest.transform2(pts[i], pts[i]); +if (i > 0) pts[i].sub(pts[0]); +} +return pts; +case 1312817669: +case 1073741864: +q = JU.Quat.newQ(qBest); +dx = bBest.bbCorner1.x - bBest.bbCorner0.x; +dy = bBest.bbCorner1.y - bBest.bbCorner0.y; +dz = bBest.bbCorner1.z - bBest.bbCorner0.z; +if (dx < dy) { +pt.set(0, 0, 1); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dx; +dx = dy; +dy = f; +}if (dy < dz) { +if (dz > dx) { +pt.set(0, 1, 0); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dx; +dx = dz; +dz = f; +}pt.set(1, 0, 0); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dy; +dy = dz; +dz = f; +}break; +} +}return (type == 1312817669 ? vMin + "\t{" + dx + " " + dy + " " + dz + "}\t" + bsAtoms : type == 1814695966 ? null : q == null || q.getTheta() == 0 ? new JU.Quat() : q); +}, "~N,JU.BS,~A"); +Clazz.defineMethod(c$, "getUnitCellForAtom", +function(index){ +if (index < 0 || index > this.ac || this.at[index] == null) return null; +if (this.bsModulated != null) { +var ms = this.getModulation(index); +var uc = (ms == null ? null : ms.getSubSystemUnitCell()); +if (uc != null) return uc; +}return this.getUnitCell(this.at[index].mi); +}, "~N"); +Clazz.defineMethod(c$, "clearCache", +function(){ +for (var i = this.mc; --i >= 0; ) this.am[i].resetDSSR(false); + +}); +Clazz.defineMethod(c$, "getSymMatrices", +function(modelIndex){ +var n = this.getModelSymmetryCount(modelIndex); +if (n == 0) return null; +var ops = new Array(n); +var unitcell = this.am[modelIndex].biosymmetry; +if (unitcell == null) unitcell = this.getUnitCell(modelIndex); +for (var i = n; --i >= 0; ) ops[i] = unitcell.getSpaceGroupOperation(i); + +return ops; +}, "~N"); +Clazz.defineMethod(c$, "getSymmetryInvariant", +function(iatom){ +var a = this.getBasisAtom(iatom, true); +if (a == null) return Clazz.newIntArray (0, 0); +return this.getUnitCellForAtom(a.i).getInvariantSymops(a, null); +}, "~N"); +Clazz.defineMethod(c$, "getBsBranches", +function(dihedralList){ +var n = Clazz.doubleToInt(dihedralList.length / 6); +var bsBranches = new Array(n); +var map = new java.util.Hashtable(); +for (var i = 0, pt = 0; i < n; i++, pt += 6) { +var dv = dihedralList[pt + 5] - dihedralList[pt + 4]; +if (Math.abs(dv) < 1) continue; +var i0 = Clazz.floatToInt(dihedralList[pt + 1]); +var i1 = Clazz.floatToInt(dihedralList[pt + 2]); +var s = "" + i0 + "_" + i1; +if (map.containsKey(s)) continue; +map.put(s, Boolean.TRUE); +var bs = this.vwr.getBranchBitSet(i1, i0, true); +var bonds = this.at[i0].bonds; +var a0 = this.at[i0]; +for (var j = 0; j < bonds.length; j++) { +var b = bonds[j]; +if (!b.isCovalent()) continue; +var i2 = b.getOtherAtom(a0).i; +if (i2 == i1) continue; +if (bs.get(i2)) { +bs = null; +break; +}} +bsBranches[i] = bs; +} +return bsBranches; +}, "~A"); +Clazz.defineMethod(c$, "recalculatePositionDependentQuantities", +function(bsAtoms, mat){ +if ((this.vwr.shm.getShape(21) != null)) this.vwr.shm.getShapePropertyData(21, "move", Clazz.newArray(-1, [bsAtoms, mat])); +if (this.haveStraightness) this.calculateStraightnessAll(); +this.recalculateLeadMidpointsAndWingVectors(-1); +var bsModels = this.getModelBS(bsAtoms, false); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +this.sm.notifyAtomPositionsChanged(i, bsAtoms, mat); +if (mat != null) { +var m = this.am[i]; +if (m.isContainedIn(bsAtoms)) { +if (m.mat4 == null) m.mat4 = JU.M4.newM4(null); +m.mat4.mul2(mat, m.mat4); +}}} +}, "JU.BS,JU.M4"); +Clazz.defineMethod(c$, "moveAtoms", +function(m4, mNew, rotation, translation, bs, center, isInternal, translationOnly){ +if (m4 != null) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +m4.rotTrans(this.at[i]); +this.taintAtom(i, 2); +} +this.mat4.setM4(m4); +translation = null; +} else if (translationOnly) { +if (!isInternal) { +this.matInv.setM3(rotation); +this.matInv.invert(); +this.matInv.rotate(translation); +}} else { +if (mNew == null) { +this.matTemp.setM3(rotation); +} else { +this.ptTemp.set(0, 0, 0); +this.matInv.setM3(rotation); +this.matInv.invert(); +this.matTemp.mul2(mNew, rotation); +this.matTemp.mul2(this.matInv, this.matTemp); +}if (isInternal) { +this.vTemp.setT(center); +this.mat4.setIdentity(); +this.mat4.setTranslation(this.vTemp); +this.mat4t.setToM3(this.matTemp); +this.mat4.mul(this.mat4t); +this.mat4t.setIdentity(); +this.vTemp.scale(-1); +this.mat4t.setTranslation(this.vTemp); +this.mat4.mul(this.mat4t); +} else { +this.mat4.setToM3(this.matTemp); +}for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (isInternal) { +this.mat4.rotTrans(this.at[i]); +} else { +this.ptTemp.add(this.at[i]); +this.mat4.rotTrans(this.at[i]); +this.ptTemp.sub(this.at[i]); +}this.taintAtom(i, 2); +} +if (!isInternal) { +this.ptTemp.scale(1 / bs.cardinality()); +if (translation == null) translation = new JU.V3(); +translation.add(this.ptTemp); +}}if (translation != null) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].add(translation); +this.taintAtom(i, 2); +} +if (!translationOnly) { +this.mat4t.setIdentity(); +this.mat4t.setTranslation(translation); +this.mat4.mul2(this.mat4t, this.mat4); +}}this.recalculatePositionDependentQuantities(bs, this.mat4); +}, "JU.M4,JU.M3,JU.M3,JU.V3,JU.BS,JU.P3,~B,~B"); +Clazz.defineMethod(c$, "setDihedrals", +function(dihedralList, bsBranches, f){ +var n = Clazz.doubleToInt(dihedralList.length / 6); +if (f > 1) f = 1; +for (var j = 0, pt = 0; j < n; j++, pt += 6) { +var bs = bsBranches[j]; +if (bs == null || bs.isEmpty()) continue; +var a1 = this.at[Clazz.floatToInt(dihedralList[pt + 1])]; +var v = JU.V3.newVsub(this.at[Clazz.floatToInt(dihedralList[pt + 2])], a1); +var angle = (dihedralList[pt + 5] - dihedralList[pt + 4]) * f; +var aa = JU.A4.newVA(v, (-angle / 57.29577951308232)); +this.matTemp.setAA(aa); +this.ptTemp.setT(a1); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].sub(this.ptTemp); +this.matTemp.rotate(this.at[i]); +this.at[i].add(this.ptTemp); +this.taintAtom(i, 2); +} +} +}, "~A,~A,~N"); +Clazz.defineMethod(c$, "setAtomCoordsRelative", +function(offset, bs){ +this.setAtomsCoordRelative(bs, offset.x, offset.y, offset.z); +this.mat4.setIdentity(); +this.vTemp.setT(offset); +this.mat4.setTranslation(this.vTemp); +this.recalculatePositionDependentQuantities(bs, this.mat4); +}, "JU.T3,JU.BS"); +Clazz.defineMethod(c$, "setAtomCoords", +function(bs, tokType, xyzValues){ +this.setAtomCoord2(bs, tokType, xyzValues); +switch (tokType) { +case 1111492626: +case 1111492627: +case 1111492628: +case 1145047055: +break; +default: +this.recalculatePositionDependentQuantities(bs, null); +} +}, "JU.BS,~N,~O"); +Clazz.defineMethod(c$, "invertSelected", +function(pt, plane, iAtom, bsAtoms){ +this.resetChirality(); +if (pt != null) { +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var x = (pt.x - this.at[i].x) * 2; +var y = (pt.y - this.at[i].y) * 2; +var z = (pt.z - this.at[i].z) * 2; +this.setAtomCoordRelative(i, x, y, z); +} +return; +}if (plane != null) { +var norm = JU.V3.new3(plane.x, plane.y, plane.z); +norm.normalize(); +var d = Math.sqrt(plane.x * plane.x + plane.y * plane.y + plane.z * plane.z); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var twoD = -JU.Measure.distanceToPlaneD(plane, d, this.at[i]) * 2; +var x = norm.x * twoD; +var y = norm.y * twoD; +var z = norm.z * twoD; +this.setAtomCoordRelative(i, x, y, z); +} +return; +}if (iAtom >= 0) { +var thisAtom = this.at[iAtom]; +var bonds = thisAtom.bonds; +if (bonds == null) return; +var bsToMove = new JU.BS(); +var vNot = new JU.Lst(); +var bsModel = this.vwr.getModelUndeletedAtomsBitSet(thisAtom.mi); +for (var i = 0; i < bonds.length; i++) { +var a = bonds[i].getOtherAtom(thisAtom); +if (bsAtoms.get(a.i)) { +bsToMove.or(JU.JmolMolecule.getBranchBitSet(this.at, a.i, bsModel, null, iAtom, true, true)); +} else { +vNot.addLast(a); +}} +if (vNot.size() == 0) return; +pt = JU.Measure.getCenterAndPoints(vNot)[0]; +var v = JU.V3.newVsub(thisAtom, pt); +var q = JU.Quat.newVA(v, 180); +this.moveAtoms(null, null, q.getMatrix(), null, bsToMove, thisAtom, true, false); +}}, "JU.P3,JU.P4,~N,JU.BS"); +Clazz.defineMethod(c$, "getCellWeights", +function(bsAtoms){ +var wts = null; +var i = bsAtoms.nextSetBit(0); +var iModel = -1; +var sym; +var a; +if (i >= 0 && (sym = this.getUnitCell(iModel = (a = this.at[i]).mi)) != null) { +sym = sym.getUnitCellMultiplied(); +var bs = this.getModelAtomBitSetIncludingDeleted(iModel, true); +bs.and(bsAtoms); +wts = Clazz.newFloatArray (bsAtoms.cardinality(), 0); +var pt = new JU.P3(); +for (var p = 0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +a = this.at[i]; +pt.setT(a); +sym.toFractional(pt, false); +sym.unitize(pt); +wts[p++] = sym.getCellWeight(pt); +} +}return wts; +}, "JU.BS"); +Clazz.defineMethod(c$, "getAtomGroupQuaternions", +function(bsAtoms, nMax, qtype){ +var n = 0; +var v = new JU.Lst(); +bsAtoms = JU.BSUtil.copy(bsAtoms); +var bsDone = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0 && n < nMax; i = bsAtoms.nextSetBit(i + 1)) { +var g = this.at[i].group; +g.setAtomBits(bsDone); +bsAtoms.andNot(bsDone); +var q = g.getQuaternion(qtype); +if (q == null) { +if (!this.am[this.at[i].mi].isBioModel) q = g.getQuaternionFrame(this.at); +if (q == null) continue; +}n++; +v.addLast(q); +} +return v.toArray( new Array(v.size())); +}, "JU.BS,~N,~S"); +Clazz.defineMethod(c$, "getConformation", +function(modelIndex, conformationIndex, doSet, bsSelected){ +var bs = new JU.BS(); +for (var i = this.mc; --i >= 0; ) { +if (modelIndex >= 0 && i != modelIndex) continue; +var m = this.am[i]; +var bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +if (bsSelected != null) bsAtoms.and(bsSelected); +if (bsAtoms.nextSetBit(0) < 0) continue; +if (conformationIndex > m.altLocCount) { +if (conformationIndex == 1) bs.or(bsAtoms); +continue; +}var c0; +if (this.am[i].isBioModel) { +if (conformationIndex < -1000) { +c0 = 1000 + conformationIndex; +var altLocs = this.getAltLocListInModel(i); +if (c0 != -32 && altLocs.indexOf(String.fromCharCode(-c0)) < 0) c0 = -2147483648; +} else if (conformationIndex < 0) { +var altLocs = this.getAltLocListInModel(i); +c0 = -1 - conformationIndex; +c0 = (c0 >= altLocs.length ? -2147483648 : -(altLocs.charAt(c0)).charCodeAt(0)); +} else { +c0 = conformationIndex; +}if (c0 == -2147483648) continue; +(this.am[i]).getConformation(c0, doSet, bsAtoms, bs); +} else { +var nAltLocs = this.getAltLocCountInModel(i); +var altLocs = this.getAltLocListInModel(i); +var bsTemp = new JU.BS(); +if (conformationIndex < -1000) { +var c = String.fromCharCode(-1000 - conformationIndex); +c0 = altLocs.indexOf(c); +} else { +c0 = Math.abs(conformationIndex) - 1; +}if (c0 < 0 || c0 >= nAltLocs) { +continue; +}for (var c = nAltLocs; --c >= 0; ) if (c != c0) bsAtoms.andNot(this.getAtomBitsMDa(1073742355, altLocs.substring(c, c + 1), bsTemp)); + +}bs.or(bsAtoms); +} +return bs; +}, "~N,~N,~B,JU.BS"); +Clazz.defineMethod(c$, "getSequenceBits", +function(specInfo, bsAtoms, bsResult){ +return (this.haveBioModels ? this.bioModelset.getAllSequenceBits(specInfo, bsAtoms, bsResult) : bsResult); +}, "~S,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getBioPolymerCountInModel", +function(modelIndex){ +return (this.haveBioModels ? this.bioModelset.getBioPolymerCountInModel(modelIndex) : 0); +}, "~N"); +Clazz.defineMethod(c$, "getPolymerPointsAndVectors", +function(bs, vList, isTraceAlpha, sheetSmoothing){ +if (this.haveBioModels) this.bioModelset.getAllPolymerPointsAndVectors(bs, vList, isTraceAlpha, sheetSmoothing); +}, "JU.BS,JU.Lst,~B,~N"); +Clazz.defineMethod(c$, "recalculateLeadMidpointsAndWingVectors", +function(modelIndex){ +if (this.haveBioModels) this.bioModelset.recalculatePoints(modelIndex); +}, "~N"); +Clazz.defineMethod(c$, "calcRasmolHydrogenBonds", +function(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds){ +if (this.haveBioModels) this.bioModelset.calcAllRasmolHydrogenBonds(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, 2); +}, "JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS"); +Clazz.defineMethod(c$, "calculateStraightnessAll", +function(){ +if (this.haveBioModels && !this.haveStraightness) this.bioModelset.calculateStraightnessAll(); +}); +Clazz.defineMethod(c$, "calculateStruts", +function(bs1, bs2){ +return (this.haveBioModels ? this.bioModelset.calculateStruts(bs1, bs2) : 0); +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getGroupsWithin", +function(nResidues, bs){ +return (this.haveBioModels ? this.bioModelset.getGroupsWithinAll(nResidues, bs) : new JU.BS()); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getProteinStructureState", +function(bsAtoms, mode){ +return (this.haveBioModels ? this.bioModelset.getFullProteinStructureState(bsAtoms, mode) : ""); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "calculateStructures", +function(bsAtoms, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, version){ +return (this.haveBioModels ? this.bioModelset.calculateAllStuctures(bsAtoms, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, version) : ""); +}, "JU.BS,~B,~B,~B,~B,~N"); +Clazz.defineMethod(c$, "calculateStructuresAllExcept", +function(alreadyDefined, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version){ +this.freezeModels(); +return (this.haveBioModels ? this.bioModelset.calculateAllStructuresExcept(alreadyDefined, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version) : ""); +}, "JU.BS,~B,~B,~B,~B,~B,~N"); +Clazz.defineMethod(c$, "recalculatePolymers", +function(bsModelsExcluded){ +this.bioModelset.recalculateAllPolymers(bsModelsExcluded, this.getGroups()); +}, "JU.BS"); +Clazz.defineMethod(c$, "calculatePolymers", +function(groups, groupCount, baseGroupIndex, modelsExcluded){ +if (this.bioModelset != null) this.bioModelset.calculateAllPolymers(groups, groupCount, baseGroupIndex, modelsExcluded); +}, "~A,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "calcSelectedMonomersCount", +function(){ +if (this.haveBioModels) this.bioModelset.calcSelectedMonomersCount(); +}); +Clazz.defineMethod(c$, "setProteinType", +function(bs, type){ +if (this.haveBioModels) this.bioModelset.setAllProteinType(bs, type); +}, "JU.BS,J.c.STR"); +Clazz.defineMethod(c$, "setStructureList", +function(structureList){ +if (this.haveBioModels) this.bioModelset.setAllStructureList(structureList); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setConformation", +function(bsAtoms){ +if (this.haveBioModels) this.bioModelset.setAllConformation(bsAtoms); +return JU.BSUtil.copy(bsAtoms); +}, "JU.BS"); +Clazz.defineMethod(c$, "getHeteroList", +function(modelIndex){ +var o = (this.haveBioModels ? this.bioModelset.getAllHeteroList(modelIndex) : null); +return (o == null ? this.getInfoM("hetNames") : o); +}, "~N"); +Clazz.defineMethod(c$, "getUnitCellPointsWithin", +function(distance, bs, pt, asMap){ +var lst = new JU.Lst(); +var map = null; +var lstI = null; +if (asMap) { +map = new java.util.Hashtable(); +lstI = new JU.Lst(); +map.put("atoms", lstI); +map.put("points", lst); +}var iAtom = (bs == null ? -1 : bs.nextSetBit(0)); +bs = this.vwr.getModelUndeletedAtomsBitSet(iAtom < 0 ? this.vwr.am.cmi : this.at[iAtom].mi); +if (iAtom < 0) iAtom = bs.nextSetBit(0); +if (iAtom >= 0) { +var unitCell = this.getUnitCellForAtom(iAtom); +if (unitCell != null) { +var iter = unitCell.getIterator(this.vwr, this.at[iAtom], bs, distance); +if (pt != null) iter.setCenter(pt, distance); +while (iter.hasNext()) { +iAtom = iter.next(); +pt = iter.getPosition(); +lst.addLast(pt); +if (asMap) { +lstI.addLast(Integer.$valueOf(iAtom)); +}} +}}return (asMap ? map : lst); +}, "~N,JU.BS,JU.P3,~B"); +Clazz.defineMethod(c$, "calculateDssrProperty", +function(dataType){ +if (dataType == null) return; +if (this.dssrData == null || this.dssrData.length < this.ac) this.dssrData = Clazz.newFloatArray (this.ac, 0); +for (var i = 0; i < this.ac; i++) this.dssrData[i] = NaN; + +for (var i = this.mc; --i >= 0; ) if (this.am[i].isBioModel) (this.am[i]).getAtomicDSSRData(this.dssrData, dataType); + +}, "~S"); +Clazz.defineMethod(c$, "getAtomicDSSRData", +function(i){ +return (this.dssrData == null || this.dssrData.length <= i ? NaN : this.dssrData[i]); +}, "~N"); +Clazz.defineMethod(c$, "getAtomCIPChiralityCode", +function(atom){ +this.haveChirality = true; +var m = this.am[atom.mi]; +if (!m.hasChirality) { +this.calculateChiralityForAtoms(m.bsAtoms, false); +m.hasChirality = true; +}return atom.getCIPChiralityCode(); +}, "JM.Atom"); +Clazz.defineMethod(c$, "calculateChiralityForAtoms", +function(bsAtoms, withReturn){ +this.haveChirality = true; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) this.at[i].setCIPChirality(0); + +J.api.Interface.getSymmetry(this.vwr, "ms").calculateCIPChiralityForAtoms(this.vwr, bsAtoms); +if (!withReturn) return null; +var s = ""; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) s += this.at[i].getCIPChirality(false); + +return s; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "getPointTransf", +function(i, a, q, pTemp){ +if (this.isTrajectory(i >= 0 ? i : a.mi)) this.trajectory.getFractional(a, pTemp); + else pTemp.setT(a); +if (q != null) q.transform2(pTemp, pTemp); +}, "~N,JM.Atom,JU.Quat,JU.P3"); +Clazz.defineMethod(c$, "getSymmetryEquivAtoms", +function(bsAtoms, sym, bsModelAtoms){ +bsAtoms = JU.BS.copy(bsAtoms); +var bsEquiv = JU.BS.copy(bsAtoms); +var iAtom = bsAtoms.nextSetBit(0); +if (sym == null) sym = this.getUnitCellForAtom(iAtom); +if (sym != null) { +if (bsModelAtoms == null) bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.at[iAtom].mi); +var bsRemaining = JU.BSUtil.copy(bsModelAtoms); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +this.getSymmetryEquivAtomsForAtom(i, bsAtoms, bsRemaining, bsEquiv); +} +}return bsEquiv; +}, "JU.BS,J.api.SymmetryInterface,JU.BS"); +Clazz.defineMethod(c$, "getSymmetryEquivAtomsForAtom", +function(i, bsAtoms, bsCheck, bsEquiv){ +var a = this.at[i]; +var site = a.getAtomSite(); +if (site > 0) { +for (var j = bsCheck.nextSetBit(0); j >= 0; j = bsCheck.nextSetBit(j + 1)) { +if (this.at[j].getAtomSite() == site) { +bsEquiv.set(j); +if (bsAtoms != null) { +bsAtoms.clear(j); +bsCheck.clear(j); +}}} +} else { +}}, "~N,JU.BS,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "setSpaceGroup", +function(mi, sg, basis){ +if (this.unitCells == null) this.unitCells = new Array(this.mc); +this.unitCells[mi] = sg; +this.haveUnitCells = true; +var isP1 = (sg.getSpaceGroupOperationCount() == 1); +var nops = sg.getFinalOperationCount(); +if (basis != null) { +var needBasis = basis.isEmpty(); +var bs = this.vwr.getModelUndeletedAtomsBitSet(mi); +if (needBasis) { +basis = JU.BSUtil.copy(bs); +} else { +this.setAsymmetricUnit(mi, bs, basis, !isP1); +}if (nops > 1) this.setModelCage(mi, null); +var nid = (this.atomSeqIDs == null ? 0 : this.atomSeqIDs.length); +if (nid > 0) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.atomSeqIDs[i] = 0; +} +}if (isP1) { +this.fixP1AtomSites(sg, bs); +} else { +var haveOccupancies = (this.occupancies != null); +var ops = sg.getSymmetryOperations(); +var a = new JU.P3(); +var b = new JU.P3(); +var t = new JU.P3(); +var site = 0; +for (var j = basis.nextSetBit(0); j >= 0; j = basis.nextSetBit(j + 1)) { +var bb = this.at[j]; +b.setT(bb); +sg.toFractional(b, false); +sg.unitize(b); +if (needBasis) this.setSite(bb, ++site, true); +site = bb.atomSite; +bs.clear(j); +var occj = (haveOccupancies ? this.occupancies[j] : 0); +out : for (var i = bs.nextSetBit(needBasis ? j + 1 : 0); i >= 0; i = bs.nextSetBit(i + 1)) { +var ba = this.at[i]; +var type = ba.atomNumberFlags; +if (ba.atomNumberFlags != type || haveOccupancies && occj != this.occupancies[i]) continue; +a.setT(ba); +sg.toFractional(a, false); +sg.unitize(a); +for (var k = 0; k < nops; k++) { +t.setT(b); +ops[k].rotTrans(t); +sg.unitize(t); +if (t.distanceSquared(a) < 1.96E-6) { +this.setSite(ba, site, true); +bs.clear(i); +basis.clear(i); +continue out; +}} +} +} +if (!bs.isEmpty()) { +System.err.println("Model basis atoms not found for " + bs); +}if (needBasis) { +this.setAsymmetricUnit(mi, null, basis, !isP1); +}}}this.setInfo(mi, "unitCellParams", sg.getUnitCellParams()); +this.setInfo(mi, "spaceGroupAssigned", Boolean.TRUE); +this.setInfo(mi, "spaceGroup", sg.getClegId()); +this.setInfo(mi, "spaceGroupInfo", null); +if (this.am[mi].simpleCage != null) { +sg.getUnitCell(this.am[mi].simpleCage.getUnitCellVectors(), false, null); +this.setInfo(mi, "unitCellParams", sg.getUnitCellParams()); +}this.setModelCage(mi, null); +}, "~N,J.api.SymmetryInterface,JU.BS"); +Clazz.defineMethod(c$, "setAsymmetricUnit", +function(mi, bsModelAtoms, basis, haveSymmetry){ +if (bsModelAtoms == null) bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(mi); +this.am[mi].bsAsymmetricUnit = basis; +if (this.bsSymmetry == null) this.bsSymmetry = JU.BS.newN(this.ac); +this.bsSymmetry.or(bsModelAtoms); +this.bsSymmetry.andNot(basis); +if (haveSymmetry) { +for (var p = 0, i = bsModelAtoms.nextSetBit(0); i >= 0; i = bsModelAtoms.nextSetBit(i + 1)) { +var isBasis = basis.get(i); +this.at[i].setSymop(isBasis ? 1 : 0, false); +if (isBasis) this.setSite(this.at[i], ++p, false); +} +bsModelAtoms.andNot(basis); +}}, "~N,JU.BS,JU.BS,~B"); +Clazz.defineMethod(c$, "setModelCage", +function(modelIndex, simpleCage){ +if (modelIndex >= 0 && modelIndex < this.mc) { +this.am[modelIndex].setSimpleCage(simpleCage); +this.haveUnitCells = true; +}return simpleCage; +}, "~N,J.api.SymmetryInterface"); +Clazz.defineMethod(c$, "fixP1AtomSites", +function(sym, bsAtoms){ +if (sym == null || sym.getSpaceGroupOperationCount() != 1) return; +var n = bsAtoms.cardinality(); +var baseAtoms = new Array(n); +var nbase = 0; +var slop2 = sym.getPrecision(); +slop2 *= slop2; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.at[i]; +var p = new JU.A4(); +p.setT(a); +sym.toFractional(p, false); +sym.unitize(p); +var found = false; +for (var ib = 0; ib < nbase; ib++) { +var b = baseAtoms[ib]; +if (a.atomNumberFlags == b.angle && b.distanceSquared(p) < slop2) { +found = true; +this.setSite(a, ib + 1, true); +break; +}} +if (!found) { +p.angle = a.atomNumberFlags; +baseAtoms[nbase] = p; +this.setSite(a, ++nbase, true); +}} +}, "J.api.SymmetryInterface,JU.BS"); +Clazz.defineMethod(c$, "getBasisAtom", +function(iatom, doCheck){ +var a = this.at[iatom]; +if (!doCheck || this.getUnitCellForAtom(iatom) != null) { +var site = a.atomSite; +if (site > 0) { +var au = this.am[a.mi].bsAsymmetricUnit; +if (au != null) { +for (var i = au.nextSetBit(0); i >= 0; i = au.nextSetBit(i + 1)) { +if (this.at[i].atomSite == site) return this.at[i]; +} +}}}return a; +}, "~N,~B"); +Clazz.defineMethod(c$, "updateBasisFromSite", +function(imodel){ +if (this.getUnitCell(imodel) == null) return; +var bsAU = this.am[imodel].bsAsymmetricUnit; +if (bsAU == null) return; +bsAU.clearAll(); +var bsSites = new JU.BS(); +var bs = this.am[imodel].bsAtoms; +var sites = Clazz.newIntArray (this.ac, 0); +for (var p = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var site = this.at[i].atomSite; +if (!bsSites.get(site)) { +bsSites.set(site); +if (site >= sites.length) continue; +sites[site] = ++p; +bsAU.set(i); +}this.setSite(this.at[i], -1, false); +this.setSite(this.at[i], sites[site], true); +} +if (this.bsSymmetry == null) this.bsSymmetry = JU.BS.newN(this.ac); +this.bsSymmetry.or(bs); +this.bsSymmetry.andNot(bsAU); +}, "~N"); +Clazz.defineMethod(c$, "getConnectingAtoms", +function(bsAtoms, bsFixed){ +var bs = new JU.BS(); +var bsAttached = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.at[i]; +var bonds = a.bonds; +for (var k = 0, j = a.getBondCount(); --j >= 0; ) { +if (bonds[j].isCovalent() && !bsAtoms.get(k = bonds[j].getOtherAtom(a).i)) { +bs.set(i); +bsAttached.set(k); +}} +} +bsAtoms.or(bsAttached); +bsFixed.or(bsAttached); +return bs; +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "saveAtomPositions", +function(){ +var pos = new Array(this.at.length); +for (var i = pos.length; --i >= 0; ) { +var a = this.at[i]; +if (!JM.AtomCollection.isDeleted(a)) pos[i] = JU.P3.newP(a); +} +return pos; +}); +Clazz.defineMethod(c$, "restoreAtomPositions", +function(apos0){ +for (var i = apos0.length; --i >= 0; ) { +var a = this.at[i]; +if (!JM.AtomCollection.isDeleted(a)) a.setT(apos0[i]); +} +}, "~A"); +Clazz.defineMethod(c$, "clearUnitCell", +function(modelIndex){ +if (this.unitCells == null) return; +if (modelIndex < 0) { +for (var i = 0; i < this.mc; i++) this.clearUnitCell(i); + +} else { +this.am[modelIndex].simpleCage = null; +if (modelIndex < this.unitCells.length) { +this.unitCells[modelIndex] = null; +var info = this.getModelAuxiliaryInfo(modelIndex); +var it = info.entrySet().iterator(); +while (it.hasNext()) { +if (JV.JC.isSpaceGroupInfoKey(it.next().getKey())) it.remove(); +} +if (this.mc > 1) return; +}}this.unitCells = null; +this.haveUnitCells = false; +}, "~N"); +c$.hbondMinRasmol = 2.5; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Monomer.js b/config/plugins/visualizations/jmol/static/j2s/JM/Monomer.js new file mode 100755 index 000000000000..92e36cea31fb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Monomer.js @@ -0,0 +1,363 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Group"], "JM.Monomer", ["JU.Measure", "$.P3", "$.Quat", "J.c.STR", "JM.BioResolver", "JU.Escape", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bioPolymer = null; +this.offsets = null; +this.monomerIndex = -1; +this.phi = NaN; +this.psi = NaN; +this.omega = NaN; +this.straightness = NaN; +this.mu = NaN; +this.theta = NaN; +this.backboneBlockVis = false; +Clazz.instantialize(this, arguments);}, JM, "Monomer", JM.Group); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JM.Monomer, []); +}); +c$.have = Clazz.defineMethod(c$, "have", +function(offsets, n){ +return (offsets[n] & 0xFF) != 0xFF; +}, "~A,~N"); +Clazz.defineMethod(c$, "set2", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, interestingAtomOffsets){ +this.setGroup(chain, group3, seqcode, firstAtomIndex, lastAtomIndex); +this.offsets = interestingAtomOffsets; +this.setLeadAtomIndex(); +return this; +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "setLeadAtomIndex", +function(){ +var offset = this.offsets[0] & 0xFF; +if (offset != 255) this.leadAtomIndex = this.firstAtomIndex + offset; +}); +Clazz.defineMethod(c$, "setBioPolymer", +function(polymer, index){ +this.bioPolymer = polymer; +this.monomerIndex = index; +}, "JM.BioPolymer,~N"); +Clazz.overrideMethod(c$, "getSelectedMonomerCount", +function(){ +return (this.bioPolymer == null ? 0 : this.bioPolymer.getSelectedMonomerCount()); +}); +Clazz.overrideMethod(c$, "getSelectedMonomerIndex", +function(){ +return (this.bioPolymer == null || !this.bioPolymer.isMonomerSelected(this.monomerIndex) ? -1 : this.monomerIndex); +}); +Clazz.overrideMethod(c$, "getBioPolymerLength", +function(){ +return (this.bioPolymer == null ? 0 : this.bioPolymer.monomerCount); +}); +Clazz.defineMethod(c$, "getMonomerIndex", +function(){ +return this.monomerIndex; +}); +Clazz.overrideMethod(c$, "getAtomIndex", +function(name, offset){ +if (this.bioPolymer != null) { +var groups = this.bioPolymer.monomers; +var ipt = this.monomerIndex + offset; +if (ipt >= 0 && ipt < groups.length) { +var m = groups[ipt]; +if (offset == 1 && !m.isConnectedPrevious()) return -1; +if ("\0".equals(name)) return m.leadAtomIndex; +var atoms = this.chain.model.ms.at; +for (var i = m.firstAtomIndex; i <= m.lastAtomIndex; i++) if (atoms[i] != null && (name == null || name.equalsIgnoreCase(atoms[i].getAtomName()))) return i; + +}}return -1; +}, "~S,~N"); +Clazz.defineMethod(c$, "getBioPolymerIndexInModel", +function(){ +return (this.bioPolymer == null ? -1 : this.bioPolymer.bioPolymerIndexInModel); +}); +c$.scanForOffsets = Clazz.defineMethod(c$, "scanForOffsets", +function(firstAtomIndex, specialAtomIndexes, interestingAtomIDs){ +var interestingCount = interestingAtomIDs.length; +var offsets = Clazz.newByteArray (interestingCount, 0); +for (var i = interestingCount; --i >= 0; ) { +var atomIndex; +var atomID = interestingAtomIDs[i]; +if (atomID < 0) { +atomIndex = specialAtomIndexes[~atomID]; +} else { +atomIndex = specialAtomIndexes[atomID]; +if (atomIndex < 0) return null; +}var offset; +if (atomIndex < 0) offset = 255; + else { +offset = atomIndex - firstAtomIndex; +if (offset < 0 || offset > 254) { +JU.Logger.warn("Monomer.scanForOffsets i=" + i + " atomID=" + atomID + " atomIndex:" + atomIndex + " firstAtomIndex:" + firstAtomIndex + " offset out of 0-254 range. Groups aren't organized correctly. Is this really a protein?: " + offset); +if (atomID < 0) { +offset = 255; +} else { +}}}offsets[i] = offset; +} +return offsets; +}, "~N,~A,~A"); +Clazz.overrideMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.NONE; +}); +Clazz.defineMethod(c$, "isHelix", +function(){ +return false; +}); +Clazz.defineMethod(c$, "isSheet", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "setStrucNo", +function(id){ +}, "~N"); +Clazz.defineMethod(c$, "getAtomFromOffsetIndex", +function(offsetIndex){ +if (offsetIndex > this.offsets.length) return null; +var offset = this.offsets[offsetIndex] & 0xFF; +return (offset == 255 ? null : this.chain.model.ms.at[this.firstAtomIndex + offset]); +}, "~N"); +Clazz.defineMethod(c$, "getSpecialAtom", +function(interestingIDs, specialAtomID){ +for (var i = interestingIDs.length; --i >= 0; ) { +var interestingID = interestingIDs[i]; +if (interestingID < 0) interestingID = -interestingID; +if (specialAtomID == interestingID) { +var offset = this.offsets[i] & 0xFF; +return (offset == 255 ? null : this.chain.model.ms.at[this.firstAtomIndex + offset]); +}} +return null; +}, "~A,~N"); +Clazz.defineMethod(c$, "getSpecialAtomPoint", +function(interestingIDs, specialAtomID){ +for (var i = interestingIDs.length; --i >= 0; ) { +var interestingID = interestingIDs[i]; +if (interestingID < 0) interestingID = -interestingID; +if (specialAtomID == interestingID) { +var offset = this.offsets[i] & 0xFF; +return (offset == 255 ? null : this.chain.model.ms.at[this.firstAtomIndex + offset]); +}} +return null; +}, "~A,~N"); +Clazz.overrideMethod(c$, "isLeadAtom", +function(atomIndex){ +return atomIndex == this.leadAtomIndex; +}, "~N"); +Clazz.overrideMethod(c$, "getLeadAtom", +function(){ +return this.getAtomFromOffsetIndex(0); +}); +Clazz.defineMethod(c$, "getWingAtom", +function(){ +return this.getAtomFromOffsetIndex(1); +}); +Clazz.defineMethod(c$, "getInitiatorAtom", +function(){ +return this.getLeadAtom(); +}); +Clazz.defineMethod(c$, "getTerminatorAtom", +function(){ +return this.getLeadAtom(); +}); +Clazz.defineMethod(c$, "findNearestAtomIndex", +function(x, y, closest, madBegin, madEnd){ +}, "~N,~N,~A,~N,~N"); +Clazz.defineMethod(c$, "getMyInfo", +function(ptTemp){ +var info = this.getGroupInfo(this.groupIndex, ptTemp); +info.put("chain", this.chain.getIDStr()); +var seqNum = this.getResno(); +if (seqNum > 0) info.put("sequenceNumber", Integer.$valueOf(seqNum)); +var insCode = this.getInsertionCode(); +if (insCode.charCodeAt(0) != 0) info.put("insertionCode", "" + insCode); +var f = this.getGroupParameter(1111490569); +if (!Float.isNaN(f)) info.put("phi", Float.$valueOf(f)); +f = this.getGroupParameter(1111490570); +if (!Float.isNaN(f)) info.put("psi", Float.$valueOf(f)); +f = this.getGroupParameter(1111490565); +if (!Float.isNaN(f)) info.put("mu", Float.$valueOf(f)); +f = this.getGroupParameter(1111490576); +if (!Float.isNaN(f)) info.put("theta", Float.$valueOf(f)); +var structure = this.getStructure(); +if (Clazz.instanceOf(structure,"JM.ProteinStructure")) { +info.put("structureId", Integer.$valueOf((structure).strucNo)); +info.put("structureType", (structure).type.getBioStructureTypeName(false)); +}info.put("shapeVisibilityFlags", Integer.$valueOf(this.shapeVisibilityFlags)); +return info; +}, "JU.P3"); +Clazz.overrideMethod(c$, "getStructureId", +function(){ +var structure = this.getStructure(); +return (Clazz.instanceOf(structure,"JM.ProteinStructure") ? (structure).type.getBioStructureTypeName(false) : ""); +}); +Clazz.defineMethod(c$, "updateOffsetsForAlternativeLocations", +function(atoms, bsSelected){ +var updated = false; +for (var offsetIndex = this.offsets.length; --offsetIndex >= 0; ) { +var offset = this.offsets[offsetIndex] & 0xFF; +if (offset == 255) continue; +var iThis = this.firstAtomIndex + offset; +var atom = atoms[iThis]; +var thisID = atom.atomID; +if (atom.altloc.charCodeAt(0) == 0) continue; +var nScan = this.lastAtomIndex - this.firstAtomIndex; +for (var i = 1; i <= nScan; i++) { +var iNew = iThis + i; +if (iNew > this.lastAtomIndex) iNew -= nScan + 1; +var offsetNew = iNew - this.firstAtomIndex; +if (offsetNew < 0 || offsetNew > 255 || iNew == iThis || !bsSelected.get(iNew)) continue; +var atomID = atoms[iNew].atomID; +if (atomID != thisID || atomID == 0 && !atoms[iNew].getAtomName().equals(atom.getAtomName())) continue; +this.offsets[offsetIndex] = offsetNew; +atoms[iNew].nBackbonesDisplayed = atom.nBackbonesDisplayed; +updated = true; +break; +} +} +this.setLeadAtomIndex(); +return updated; +}, "~A,JU.BS"); +Clazz.defineMethod(c$, "getMonomerSequenceAtoms", +function(bsInclude, bsResult){ +this.setAtomBits(bsResult); +bsResult.and(bsInclude); +}, "JU.BS,JU.BS"); +c$.checkOptional = Clazz.defineMethod(c$, "checkOptional", +function(offsets, atom, firstAtomIndex, index){ +if (JM.Monomer.have(offsets, atom)) return true; +if (index < 0) return false; +offsets[atom] = (index - firstAtomIndex); +return true; +}, "~A,~N,~N,~N"); +Clazz.defineMethod(c$, "getQuaternionFrameCenter", +function(qtype){ +return null; +}, "~S"); +Clazz.defineMethod(c$, "getHelixData2", +function(tokType, qType, mStep){ +if (this.monomerIndex < 0) return null; +var iPrev = this.monomerIndex - mStep; +var prev = (mStep < 1 || this.monomerIndex <= 0 ? null : this.bioPolymer.monomers[iPrev]); +var q2 = this.getQuaternion(qType); +var q1 = (mStep < 1 ? JU.Quat.getQuaternionFrameV(JV.JC.axisX, JV.JC.axisY, JV.JC.axisZ, false) : prev == null ? null : prev.getQuaternion(qType)); +if (q1 == null || q2 == null) return Clazz.superCall(this, JM.Monomer, "getHelixData", [tokType, qType, mStep]); +var a = (mStep < 1 ? JU.P3.new3(0, 0, 0) : prev.getQuaternionFrameCenter(qType)); +var b = this.getQuaternionFrameCenter(qType); +return (a == null || b == null ? this.getHelixData(tokType, qType, mStep) : JU.Escape.escapeHelical((tokType == 135176 ? "helixaxis" + this.getUniqueID() : null), tokType, a, b, JU.Measure.computeHelicalAxis(a, b, q2.div(q1)))); +}, "~N,~S,~N"); +Clazz.defineMethod(c$, "getUniqueID", +function(){ +var cid = this.chain.chainID; +var a = this.getLeadAtom(); +var id = (a == null ? "" : "_" + a.mi) + "_" + this.getResno() + (cid == 0 ? "" : "_" + cid); +var aid = (a == null ? '\0' : this.getLeadAtom().altloc); +if (aid != '\0') id += "_" + aid; +return id; +}); +Clazz.overrideMethod(c$, "isCrossLinked", +function(g){ +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) if (this.getCrossLinkGroup(i, null, g, true, true, false)) return true; + +return false; +}, "JM.Group"); +Clazz.overrideMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +var isNotCheck = (vReturn == null); +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) if (this.getCrossLinkGroup(i, vReturn, null, crosslinkCovalent, crosslinkHBond, isNotCheck) && isNotCheck) return true; + +return !isNotCheck && vReturn.size() > 0; +}, "JU.Lst,~B,~B"); +Clazz.defineMethod(c$, "getCrossLinkGroup", +function(i, vReturn, group, crosslinkCovalent, crosslinkHBond, isNotCheck){ +var atom = this.chain.model.ms.at[i]; +var bonds = atom.bonds; +var ibp = this.getBioPolymerIndexInModel(); +if (ibp < 0 || bonds == null) return false; +var haveCrossLink = false; +var checkPrevious = (!isNotCheck && vReturn == null && group == null); +for (var j = 0; j < bonds.length; j++) { +var b = bonds[j]; +if (b.isCovalent() ? !crosslinkCovalent : !crosslinkHBond) continue; +var a = b.getOtherAtom(atom); +var g = a.group; +if (group != null && g !== group) continue; +var iPolymer = g.getBioPolymerIndexInModel(); +var igroup = g.getMonomerIndex(); +if (checkPrevious) { +if (iPolymer == ibp && igroup == this.monomerIndex - 1) return true; +} else if (iPolymer >= 0 && igroup >= 0 && (iPolymer != ibp || igroup < this.monomerIndex - 1 || igroup > this.monomerIndex + 1)) { +haveCrossLink = true; +if (group != null || vReturn == null) break; +vReturn.addLast(Integer.$valueOf(i)); +vReturn.addLast(Integer.$valueOf(a.i)); +vReturn.addLast(Integer.$valueOf(g.leadAtomIndex)); +}} +return haveCrossLink; +}, "~N,JU.Lst,JM.Group,~B,~B,~B"); +Clazz.defineMethod(c$, "isConnectedPrevious", +function(){ +return true; +}); +Clazz.defineMethod(c$, "setGroupParameter", +function(tok, f){ +switch (tok) { +case 1111490569: +this.phi = f; +break; +case 1111490570: +this.psi = f; +break; +case 1111490568: +this.omega = f; +break; +case 1111490565: +this.mu = f; +break; +case 1111490576: +this.theta = f; +break; +case 1111490574: +this.straightness = f; +break; +} +}, "~N,~N"); +Clazz.overrideMethod(c$, "getGroupParameter", +function(tok){ +if (this.bioPolymer == null) return 0; +if (!this.bioPolymer.haveParameters) this.bioPolymer.calcParameters(); +switch (tok) { +case 1094713361: +return 1; +case 1111490568: +return this.omega; +case 1111490569: +return this.phi; +case 1111490570: +return this.psi; +case 1111490565: +return this.mu; +case 1111490576: +return this.theta; +case 1111490574: +return this.straightness; +} +return NaN; +}, "~N"); +Clazz.overrideMethod(c$, "getGroup1", +function(){ +return (this.groupID < JM.BioResolver.predefinedGroup1Names.length ? JM.BioResolver.predefinedGroup1Names[this.groupID] : this.group1.charCodeAt(0) > 1 ? this.group1 : this.group1.charCodeAt(0) == 1 ? '?' : (this.group1 = this.getGroup1b())); +}); +Clazz.defineMethod(c$, "getGroup1b", +function(){ +return '?'; +}); +Clazz.overrideMethod(c$, "setGroupID", +function(group3){ +this.groupID = JM.BioResolver.getGroupIdFor(group3); +}, "~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[" + this.getGroup3() + "-" + this.getSeqcodeString() + " " + this.getStructure() + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/NucleicMonomer.js b/config/plugins/visualizations/jmol/static/j2s/JM/NucleicMonomer.js new file mode 100755 index 000000000000..6ce08d4c4e65 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/NucleicMonomer.js @@ -0,0 +1,401 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.PhosphorusMonomer"], "JM.NucleicMonomer", ["JU.A4", "$.Lst", "$.M3", "$.P3", "$.Quat", "$.V3", "J.c.STR", "JM.Group", "JM.NucleicPolymer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$isPurine = false; +this.$isPyrimidine = false; +this.hasRnaO2Prime = false; +this.baseCenter = null; +this.bps = null; +this.dssrBox = null; +this.dssrBoxHeight = 0; +this.dssrFrame = null; +Clazz.instantialize(this, arguments);}, JM, "NucleicMonomer", JM.PhosphorusMonomer); +Clazz.overrideConstructor(c$, +function(){ +}); +c$.validateAndAllocate = Clazz.defineMethod(c$, "validateAndAllocate", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes){ +var offsets = JM.Monomer.scanForOffsets(firstAtomIndex, specialAtomIndexes, JM.NucleicMonomer.interestingNucleicAtomIDs); +if (offsets == null) return null; +if (!JM.Monomer.checkOptional(offsets, 19, firstAtomIndex, specialAtomIndexes[73])) return null; +JM.Monomer.checkOptional(offsets, 20, firstAtomIndex, specialAtomIndexes[89]); +JM.Monomer.checkOptional(offsets, 18, firstAtomIndex, specialAtomIndexes[90]); +JM.Monomer.checkOptional(offsets, 23, firstAtomIndex, specialAtomIndexes[75]); +JM.Monomer.checkOptional(offsets, 24, firstAtomIndex, specialAtomIndexes[77]); +return ( new JM.NucleicMonomer()).set4(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, offsets); +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "set4", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, offsets){ +this.set2(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, offsets); +if (!JM.Monomer.have(offsets, 15)) { +offsets[0] = offsets[19]; +this.setLeadAtomIndex(); +}this.hasRnaO2Prime = JM.Monomer.have(offsets, 2); +this.$isPyrimidine = JM.Monomer.have(offsets, 8); +this.$isPurine = JM.Monomer.have(offsets, 9) && JM.Monomer.have(offsets, 10) && JM.Monomer.have(offsets, 11); +return this; +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz.overrideMethod(c$, "isNucleicMonomer", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "isDna", +function(){ +return !this.hasRnaO2Prime; +}); +Clazz.overrideMethod(c$, "isRna", +function(){ +return this.hasRnaO2Prime; +}); +Clazz.overrideMethod(c$, "isPurine", +function(){ +return this.$isPurine || !this.$isPyrimidine && this.isPurineByID(); +}); +Clazz.overrideMethod(c$, "isPyrimidine", +function(){ +return this.$isPyrimidine || !this.$isPurine && this.isPyrimidineByID(); +}); +Clazz.defineMethod(c$, "isGuanine", +function(){ +return JM.Monomer.have(this.offsets, 17); +}); +Clazz.overrideMethod(c$, "getProteinStructureType", +function(){ +return (this.hasRnaO2Prime ? J.c.STR.RNA : J.c.STR.DNA); +}); +Clazz.defineMethod(c$, "getP", +function(){ +return this.getAtomFromOffsetIndex(0); +}); +Clazz.defineMethod(c$, "getC1P", +function(){ +return this.getAtomFromOffsetIndex(25); +}); +Clazz.defineMethod(c$, "getC2", +function(){ +return this.getAtomFromOffsetIndex(5); +}); +Clazz.defineMethod(c$, "getC5", +function(){ +return this.getAtomFromOffsetIndex(3); +}); +Clazz.defineMethod(c$, "getC6", +function(){ +return this.getAtomFromOffsetIndex(1); +}); +Clazz.defineMethod(c$, "getC8", +function(){ +return this.getAtomFromOffsetIndex(10); +}); +Clazz.defineMethod(c$, "getC4P", +function(){ +return this.getAtomFromOffsetIndex(27); +}); +Clazz.defineMethod(c$, "getN1", +function(){ +return this.getAtomFromOffsetIndex(4); +}); +Clazz.defineMethod(c$, "getN3", +function(){ +return this.getAtomFromOffsetIndex(6); +}); +Clazz.defineMethod(c$, "getN2", +function(){ +return this.getAtomFromOffsetIndex(17); +}); +Clazz.defineMethod(c$, "getN4", +function(){ +return this.getAtomFromOffsetIndex(14); +}); +Clazz.defineMethod(c$, "getN6", +function(){ +return this.getAtomFromOffsetIndex(16); +}); +Clazz.defineMethod(c$, "getO2", +function(){ +return this.getAtomFromOffsetIndex(8); +}); +Clazz.defineMethod(c$, "getO4", +function(){ +return this.getAtomFromOffsetIndex(12); +}); +Clazz.defineMethod(c$, "getO6", +function(){ +return this.getAtomFromOffsetIndex(13); +}); +Clazz.overrideMethod(c$, "getTerminatorAtom", +function(){ +return this.getAtomFromOffsetIndex(JM.Monomer.have(this.offsets, 20) ? 20 : 21); +}); +Clazz.defineMethod(c$, "getBaseRing6Points", +function(pts){ +this.getPoints(JM.NucleicMonomer.ring6OffsetIndexes, pts); +}, "~A"); +Clazz.defineMethod(c$, "getPoints", +function(a, pts){ +for (var i = a.length; --i >= 0; ) pts[i] = this.getAtomFromOffsetIndex(a[i]); + +}, "~A,~A"); +Clazz.defineMethod(c$, "maybeGetBaseRing5Points", +function(pts){ +if (this.$isPurine) this.getPoints(JM.NucleicMonomer.ring5OffsetIndexes, pts); +return this.$isPurine; +}, "~A"); +Clazz.defineMethod(c$, "getRiboseRing5Points", +function(pts){ +this.getPoints(JM.NucleicMonomer.riboseOffsetIndexes, pts); +}, "~A"); +Clazz.overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +var myPhosphorusAtom = this.getAtomFromOffsetIndex(15); +if (myPhosphorusAtom == null) return false; +return ((possiblyPreviousMonomer).getAtomFromOffsetIndex(21).isBonded(myPhosphorusAtom) || this.isCA2(possiblyPreviousMonomer)); +}, "JM.Monomer"); +Clazz.overrideMethod(c$, "findNearestAtomIndex", +function(x, y, closest, madBegin, madEnd){ +var competitor = closest[0]; +var lead = this.getLeadAtom(); +var o5prime = this.getAtomFromOffsetIndex(19); +var c3prime = this.getAtomFromOffsetIndex(22); +var mar = (Clazz.doubleToInt(madBegin / 2)); +if (mar < 1900) mar = 1900; +var radius = Clazz.floatToInt(this.scaleToScreen(lead.sZ, mar)); +if (radius < 4) radius = 4; +if (this.isCursorOnTopOf(lead, x, y, radius, competitor) || this.isCursorOnTopOf(o5prime, x, y, radius, competitor) || this.isCursorOnTopOf(c3prime, x, y, radius, competitor)) closest[0] = lead; +}, "~N,~N,~A,~N,~N"); +Clazz.defineMethod(c$, "setRingsVisible", +function(isVisible){ +for (var i = 6; --i >= 0; ) this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring6OffsetIndexes[i]).setShapeVisibility(32768, isVisible); + +if (this.$isPurine) for (var i = 4; --i >= 1; ) this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring5OffsetIndexes[i]).setShapeVisibility(32768, isVisible); + +}, "~B"); +Clazz.defineMethod(c$, "setRingsClickable", +function(){ +for (var i = 6; --i >= 0; ) this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring6OffsetIndexes[i]).setClickable(32768); + +if (this.$isPurine) for (var i = 4; --i >= 1; ) this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring5OffsetIndexes[i]).setClickable(32768); + +}); +Clazz.defineMethod(c$, "getN0", +function(){ +return (this.getAtomFromOffsetIndex(this.$isPurine ? 11 : 4)); +}); +Clazz.overrideMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return this.getHelixData2(tokType, qType, mStep); +}, "~N,~S,~N"); +Clazz.overrideMethod(c$, "getQuaternionFrameCenter", +function(qType){ +switch ((qType).charCodeAt(0)) { +case 120: +case 97: +case 98: +case 112: +return this.getP(); +case 99: +if (this.baseCenter == null) { +var n = 0; +this.baseCenter = new JU.P3(); +for (var i = 0; i < JM.NucleicMonomer.heavyAtomIndexes.length; i++) { +var a = this.getAtomFromOffsetIndex(JM.NucleicMonomer.heavyAtomIndexes[i]); +if (a == null) continue; +this.baseCenter.add(a); +n++; +} +this.baseCenter.scale(1 / n); +}return this.baseCenter; +case 110: +default: +return this.getN0(); +} +}, "~S"); +Clazz.overrideMethod(c$, "getQuaternion", +function(qType){ +if (this.bioPolymer == null) return null; +var ptA = null; +var ptB = null; +var ptNorP; +var yBased = false; +var reverseY = false; +switch ((qType).charCodeAt(0)) { +case 97: +ptNorP = this.getP(); +if (this.monomerIndex == 0 || ptNorP == null) return null; +yBased = true; +ptA = (this.bioPolymer.monomers[this.monomerIndex - 1]).getC4P(); +ptB = this.getC4P(); +break; +case 120: +ptNorP = this.getP(); +if (this.monomerIndex == this.bioPolymer.monomerCount - 1 || ptNorP == null) return null; +ptA = (this.bioPolymer.monomers[this.monomerIndex + 1]).getP(); +ptB = this.getC4P(); +break; +case 98: +return this.getQuaternionP(); +case 99: +case 110: +ptNorP = this.getN0(); +if (ptNorP == null) return null; +yBased = true; +reverseY = true; +ptA = this.getAtomFromOffsetIndex(5); +ptB = this.getAtomFromOffsetIndex(25); +break; +case 112: +ptNorP = this.getP(); +if (ptNorP == null) return null; +var p1 = this.getAtomFromOffsetIndex(23); +var p2 = this.getAtomFromOffsetIndex(24); +var bonds = ptNorP.bonds; +if (bonds == null) return null; +var g = ptNorP.group; +for (var i = 0; i < bonds.length; i++) { +var atom = bonds[i].getOtherAtom(ptNorP); +if (p1 != null && atom.i == p1.i) continue; +if (p2 != null && atom.i == p2.i) continue; +if (atom.group === g) ptB = atom; + else ptA = atom; +} +break; +case 113: +return null; +default: +ptNorP = this.getN0(); +if (ptNorP == null) return null; +if (this.$isPurine) { +ptA = this.getAtomFromOffsetIndex(5); +ptB = this.getAtomFromOffsetIndex(9); +} else { +ptA = this.getAtomFromOffsetIndex(6); +ptB = this.getAtomFromOffsetIndex(1); +}break; +} +if (ptA == null || ptB == null) return null; +var vA = JU.V3.newVsub(ptA, ptNorP); +var vB = JU.V3.newVsub(ptB, ptNorP); +if (reverseY) vB.scale(-1); +return JU.Quat.getQuaternionFrameV(vA, vB, null, yBased); +}, "~S"); +Clazz.overrideMethod(c$, "isCrossLinked", +function(g){ +if (!(Clazz.instanceOf(g,"JM.NucleicMonomer")) || this.$isPurine == g.isPurine()) return false; +var otherNucleotide = (this.$isPurine ? g : this); +var myNucleotide = (this.$isPurine ? this : g); +var myN1 = myNucleotide.getN1(); +var otherN3 = otherNucleotide.getN3(); +return (myN1.isBonded(otherN3)); +}, "JM.Group"); +Clazz.overrideMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +if (!crosslinkHBond) return false; +var N = (this.$isPurine ? this.getN1() : this.getN3()); +var bonds = N.bonds; +if (bonds == null) return false; +for (var i = 0; i < bonds.length; i++) { +if (bonds[i].isHydrogen()) { +var N2 = bonds[i].getOtherAtom(N); +var g = N2.group; +if (!(Clazz.instanceOf(g,"JM.NucleicMonomer"))) continue; +var m = g; +if ((this.$isPurine ? m.getN3() : m.getN1()) === N2) { +if (vReturn == null) return true; +vReturn.addLast(Integer.$valueOf(N.i)); +vReturn.addLast(Integer.$valueOf(N2.i)); +vReturn.addLast(Integer.$valueOf(m.leadAtomIndex)); +}}} +return vReturn != null && vReturn.size() > 0; +}, "JU.Lst,~B,~B"); +Clazz.defineMethod(c$, "getEdgePoints", +function(pts){ +pts[0] = this.getLeadAtom(); +pts[1] = this.getC4P(); +pts[2] = pts[5] = this.getC1P(); +switch ((this.getGroup1()).charCodeAt(0)) { +case 67: +pts[3] = this.getO2(); +pts[4] = this.getN4(); +return true; +case 65: +pts[3] = this.getC2(); +pts[4] = this.getN6(); +return true; +case 71: +case 73: +pts[3] = this.getC2(); +pts[4] = this.getO6(); +return true; +case 84: +case 85: +pts[3] = this.getO2(); +pts[4] = this.getO4(); +return true; +default: +return false; +} +}, "~A"); +Clazz.defineMethod(c$, "addBasePair", +function(bp){ +if (this.bps == null) this.bps = new JU.Lst(); +this.bps.addLast(bp); +}, "JM.BasePair"); +Clazz.defineMethod(c$, "setGroup1", +function(g){ +if (this.group1 == '\0') this.group1 = g; +}, "~S"); +Clazz.defineMethod(c$, "getBasePairs", +function(){ +if (this.bioPolymer != null && !(this.bioPolymer).isDssrSet) this.bioPolymer.model.ms.vwr.getAnnotationParser(true).getBasePairs(this.bioPolymer.model.ms.vwr, this.bioPolymer.model.modelIndex); +return this.bps; +}); +Clazz.overrideMethod(c$, "getGroup1b", +function(){ +var g3 = JM.Group.group3Names[this.groupID]; +var g1 = (JM.NucleicPolymer.htGroup1 == null ? null : JM.NucleicPolymer.htGroup1.get(g3)); +return (g1 == null ? Character.toLowerCase(g3.charAt(g3.length - 1)) : g1.charAt(0)); +}); +Clazz.defineMethod(c$, "getDSSRFrame", +function(vwr){ +if (this.dssrFrame != null) return this.dssrFrame; +if (this.dssrNT != null) return this.dssrFrame = vwr.getAnnotationParser(true).getDSSRFrame(this.dssrNT); +var oxyz = this.dssrFrame = new Array(4); +for (var i = 4; --i >= 0; ) oxyz[i] = new JU.P3(); + +if (this.isPurine()) { +var v85 = JU.P3.newP(this.getC5()); +v85.sub(this.getC8()); +v85.normalize(); +oxyz[2].setT(v85); +oxyz[2].scale(-1); +oxyz[0].scaleAdd2(4.9, v85, this.getC8()); +var v89 = JU.P3.newP(this.getN0()); +v89.sub(this.getC8()); +oxyz[3].cross(v89, v85); +oxyz[3].normalize(); +} else { +var v61 = JU.P3.newP(this.getN0()); +v61.sub(this.getC6()); +var v65 = JU.P3.newP(this.getC5()); +v65.sub(this.getC6()); +oxyz[3].cross(v61, v65); +oxyz[3].normalize(); +oxyz[2].setT(v61); +oxyz[2].normalize(); +var aa = JU.A4.new4(oxyz[3].x, oxyz[3].y, oxyz[3].z, (1.1623892818282233)); +var m3 = new JU.M3(); +m3.setAA(aa); +m3.rotate(oxyz[2]); +oxyz[0].scaleAdd2(5.1, oxyz[2], this.getC6()); +oxyz[2].scale(-1); +}oxyz[1].cross(oxyz[2], oxyz[3]); +return this.dssrFrame; +}, "JV.Viewer"); +c$.interestingNucleicAtomIDs = Clazz.newByteArray(-1, [-14, 37, -80, 36, 32, 33, 34, 35, -39, -40, -41, -42, -48, -47, -43, -14, -45, -44, -73, -7, -89, 10, 9, -75, -77, -13, -12, -9, -79, -8]); +c$.ring6OffsetIndexes = Clazz.newByteArray(-1, [3, 1, 4, 5, 6, 7]); +c$.ring5OffsetIndexes = Clazz.newByteArray(-1, [3, 9, 10, 11, 7]); +c$.riboseOffsetIndexes = Clazz.newByteArray(-1, [25, 26, 22, 27, 28, 21, 29, 19, 0]); +c$.heavyAtomIndexes = Clazz.newByteArray(-1, [3, 1, 4, 5, 6, 7, 11, 10, 9, 16, 14, 8, 12, 17, 13]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/NucleicPolymer.js b/config/plugins/visualizations/jmol/static/j2s/JM/NucleicPolymer.js new file mode 100755 index 000000000000..7717fb528f70 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/NucleicPolymer.js @@ -0,0 +1,88 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.PhosphorusPolymer"], "JM.NucleicPolymer", ["JU.Measure", "$.P4", "$.V3", "JM.HBond"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isDssrSet = false; +Clazz.instantialize(this, arguments);}, JM, "NucleicPolymer", JM.PhosphorusPolymer); +Clazz.makeConstructor(c$, +function(monomers){ +Clazz.superConstructor(this, JM.NucleicPolymer, [monomers]); +this.type = 2; +this.hasWingPoints = true; +}, "~A"); +Clazz.defineMethod(c$, "getNucleicPhosphorusAtom", +function(monomerIndex){ +return this.monomers[monomerIndex].getLeadAtom(); +}, "~N"); +Clazz.overrideMethod(c$, "calcEtaThetaAngles", +function(){ +var eta = NaN; +for (var i = 0; i < this.monomerCount - 2; ++i) { +var m1 = this.monomers[i]; +var m2 = this.monomers[i + 1]; +var p1 = m1.getP(); +var c41 = m1.getC4P(); +var p2 = m2.getP(); +var c42 = m2.getC4P(); +if (i > 0) { +var m0 = this.monomers[i - 1]; +var c40 = m0.getC4P(); +eta = JU.Measure.computeTorsion(c40, p1, c41, p2, true); +}var theta = JU.Measure.computeTorsion(p1, c41, p2, c42, true); +if (eta < 0) eta += 360; +if (theta < 0) theta += 360; +m1.setGroupParameter(1111490565, eta); +m1.setGroupParameter(1111490576, theta); +} +return true; +}); +Clazz.overrideMethod(c$, "calcRasmolHydrogenBonds", +function(polymer, bsA, bsB, vAtoms, nMaxPerResidue, min, checkDistances, dsspIgnoreHydrogens){ +var other = polymer; +var vNorm = new JU.V3(); +var vAB = new JU.V3(); +for (var i = this.monomerCount; --i >= 0; ) { +var myNucleotide = this.monomers[i]; +if (!myNucleotide.isPurine()) continue; +var myN3 = myNucleotide.getN3(); +var isInA = bsA.get(myN3.i); +if (!isInA && !bsB.get(myN3.i)) continue; +var myN1 = myNucleotide.getN1(); +var myN9 = myNucleotide.getN0(); +var plane = JU.Measure.getPlaneThroughPoints(myN3, myN1, myN9, vNorm, vAB, new JU.P4()); +var bestN3 = null; +var minDist2 = 25; +var bestNucleotide = null; +for (var j = other.monomerCount; --j >= 0; ) { +var otherNucleotide = other.monomers[j]; +if (!otherNucleotide.$isPyrimidine) continue; +var otherN3 = otherNucleotide.getN3(); +if (isInA ? !bsB.get(otherN3.i) : !bsA.get(otherN3.i)) continue; +var otherN1 = otherNucleotide.getN0(); +var dist2 = myN1.distanceSquared(otherN3); +if (dist2 < minDist2 && myN9.distanceSquared(otherN1) > 50 && Math.abs(JU.Measure.distanceToPlane(plane, otherN3)) < 1) { +bestNucleotide = otherNucleotide; +bestN3 = otherN3; +minDist2 = dist2; +}} +var n = 0; +if (bestN3 != null) { +n += JM.NucleicPolymer.addHydrogenBond(vAtoms, myN1, bestN3); +if (n >= nMaxPerResidue) continue; +if (myNucleotide.isGuanine()) { +n += JM.NucleicPolymer.addHydrogenBond(vAtoms, myNucleotide.getN2(), bestNucleotide.getO2()); +if (n >= nMaxPerResidue) continue; +n += JM.NucleicPolymer.addHydrogenBond(vAtoms, myNucleotide.getO6(), bestNucleotide.getN4()); +if (n >= nMaxPerResidue) continue; +} else { +n += JM.NucleicPolymer.addHydrogenBond(vAtoms, myNucleotide.getN6(), bestNucleotide.getO4()); +}}} +}, "JM.BioPolymer,JU.BS,JU.BS,JU.Lst,~N,~A,~B,~B"); +c$.addHydrogenBond = Clazz.defineMethod(c$, "addHydrogenBond", +function(vAtoms, atom1, atom2){ +if (atom1 == null || atom2 == null) return 0; +vAtoms.addLast( new JM.HBond(atom1, atom2, 18432, 1, 0, 0)); +return 1; +}, "JU.Lst,JM.Atom,JM.Atom"); +c$.htGroup1 = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Orientation.js b/config/plugins/visualizations/jmol/static/j2s/JM/Orientation.js new file mode 100755 index 000000000000..b63f96ada999 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Orientation.js @@ -0,0 +1,77 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JU.M3", "$.P3"], "JM.Orientation", ["JU.PT", "JU.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.saveName = null; +this.rotationMatrix = null; +this.xTrans = 0; +this.yTrans = 0; +this.zoom = 0; +this.rotationRadius = 0; +this.center = null; +this.navCenter = null; +this.xNav = NaN; +this.yNav = NaN; +this.navDepth = NaN; +this.cameraDepth = NaN; +this.cameraX = NaN; +this.cameraY = NaN; +this.windowCenteredFlag = false; +this.navigationMode = false; +this.moveToText = null; +this.pymolView = null; +this.vwr = null; +Clazz.instantialize(this, arguments);}, JM, "Orientation", null); +Clazz.prepareFields (c$, function(){ +this.rotationMatrix = new JU.M3(); +this.center = new JU.P3(); +this.navCenter = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(vwr, asDefault, pymolView){ +this.vwr = vwr; +if (pymolView != null) { +this.pymolView = pymolView; +this.moveToText = "moveTo -1.0 PyMOL " + JU.Escape.eAF(pymolView); +return; +}vwr.finalizeTransformParameters(); +if (asDefault) { +var rot = vwr.ms.getInfoM("defaultOrientationMatrix"); +if (rot == null) this.rotationMatrix.setScale(1); + else this.rotationMatrix.setM3(rot); +} else { +vwr.tm.getRotation(this.rotationMatrix); +}this.xTrans = vwr.tm.getTranslationXPercent(); +this.yTrans = vwr.tm.getTranslationYPercent(); +this.zoom = vwr.tm.getZoomSetting(); +this.center.setT(vwr.tm.fixedRotationCenter); +this.windowCenteredFlag = vwr.tm.isWindowCentered(); +this.rotationRadius = vwr.getFloat(570425388); +this.navigationMode = vwr.getBoolean(603979889); +this.moveToText = vwr.tm.getMoveToText(-1, false); +if (this.navigationMode) { +this.xNav = vwr.tm.getNavigationOffsetPercent('X'); +this.yNav = vwr.tm.getNavigationOffsetPercent('Y'); +this.navDepth = vwr.tm.navigationDepthPercent; +this.navCenter = JU.P3.newP(vwr.tm.navigationCenter); +}if (vwr.tm.camera.z != 0) { +this.cameraDepth = vwr.tm.getCameraDepth(); +this.cameraX = vwr.tm.camera.x; +this.cameraY = vwr.tm.camera.y; +}}, "JV.Viewer,~B,~A"); +Clazz.defineMethod(c$, "getMoveToText", +function(asCommand){ +return (asCommand ? " " + this.moveToText + "\n save orientation " + JU.PT.esc(this.saveName.substring(12)) + ";\n" : this.moveToText); +}, "~B"); +Clazz.defineMethod(c$, "restore", +function(timeSeconds, isAll){ +if (isAll) { +this.vwr.setBooleanProperty("windowCentered", this.windowCenteredFlag); +this.vwr.setBooleanProperty("navigationMode", this.navigationMode); +if (this.pymolView == null) this.vwr.moveTo(this.vwr.eval, timeSeconds, this.center, null, NaN, this.rotationMatrix, this.zoom, this.xTrans, this.yTrans, this.rotationRadius, this.navCenter, this.xNav, this.yNav, this.navDepth, this.cameraDepth, this.cameraX, this.cameraY); + else this.vwr.tm.moveToPyMOL(this.vwr.eval, timeSeconds, this.pymolView); +} else { +this.vwr.tm.setRotation(this.rotationMatrix); +}return true; +}, "~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/PhosphorusMonomer.js b/config/plugins/visualizations/jmol/static/j2s/JM/PhosphorusMonomer.js new file mode 100755 index 000000000000..f3efb9c9e7e9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/PhosphorusMonomer.js @@ -0,0 +1,80 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Monomer"], "JM.PhosphorusMonomer", ["JU.Quat", "$.V3", "J.c.STR"], function(){ +var c$ = Clazz.declareType(JM, "PhosphorusMonomer", JM.Monomer); +Clazz.overrideConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "isNucleic", +function(){ +return true; +}); +c$.validateAndAllocateP = Clazz.defineMethod(c$, "validateAndAllocateP", +function(chain, group3, seqcode, firstIndex, lastIndex, specialAtomIndexes){ +return (firstIndex != lastIndex || specialAtomIndexes[13] != firstIndex ? null : new JM.PhosphorusMonomer().set2(chain, group3, seqcode, firstIndex, lastIndex, JM.PhosphorusMonomer.phosphorusOffsets)); +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz.overrideMethod(c$, "isDna", +function(){ +return this.isDnaByID(); +}); +Clazz.overrideMethod(c$, "isRna", +function(){ +return this.isRnaByID(); +}); +Clazz.overrideMethod(c$, "isPurine", +function(){ +return this.isPurineByID(); +}); +Clazz.overrideMethod(c$, "isPyrimidine", +function(){ +return this.isPyrimidineByID(); +}); +Clazz.overrideMethod(c$, "getStructure", +function(){ +return this.chain; +}); +Clazz.overrideMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.NONE; +}); +Clazz.overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +return this.isCA2(possiblyPreviousMonomer); +}, "JM.Monomer"); +Clazz.defineMethod(c$, "isCA2", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +var distance = this.getLeadAtom().distance(possiblyPreviousMonomer.getLeadAtom()); +return distance <= JM.PhosphorusMonomer.MAX_ADJACENT_PHOSPHORUS_DISTANCE; +}, "JM.Monomer"); +Clazz.overrideMethod(c$, "getQuaternion", +function(qType){ +return this.getQuaternionP(); +}, "~S"); +Clazz.defineMethod(c$, "getQuaternionP", +function(){ +var i = this.monomerIndex; +if (i <= 0 || i >= this.bioPolymer.monomerCount - 1) return null; +var ptP = this.bioPolymer.monomers[i].getAtomFromOffsetIndex(0); +var ptA; +var ptB; +ptA = this.bioPolymer.monomers[i + 1].getAtomFromOffsetIndex(0); +ptB = this.bioPolymer.monomers[i - 1].getAtomFromOffsetIndex(0); +if (ptP == null || ptA == null || ptB == null) return null; +var vA = new JU.V3(); +var vB = new JU.V3(); +vA.sub2(ptA, ptP); +vB.sub2(ptB, ptP); +return JU.Quat.getQuaternionFrameV(vA, vB, null, false); +}); +Clazz.overrideMethod(c$, "getQuaternionFrameCenter", +function(qType){ +return this.getAtomFromOffsetIndex(0); +}, "~S"); +Clazz.overrideMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return this.getHelixData2(tokType, qType, mStep); +}, "~N,~S,~N"); +c$.phosphorusOffsets = Clazz.newByteArray(-1, [0]); +c$.MAX_ADJACENT_PHOSPHORUS_DISTANCE = 8.0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/PhosphorusPolymer.js b/config/plugins/visualizations/jmol/static/j2s/JM/PhosphorusPolymer.js new file mode 100755 index 000000000000..ccc99d718097 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/PhosphorusPolymer.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.BioPolymer"], "JM.PhosphorusPolymer", null, function(){ +var c$ = Clazz.declareType(JM, "PhosphorusPolymer", JM.BioPolymer); +Clazz.makeConstructor(c$, +function(monomers){ +Clazz.superConstructor(this, JM.PhosphorusPolymer, [monomers, true]); +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/ProteinStructure.js b/config/plugins/visualizations/jmol/static/j2s/JM/ProteinStructure.js new file mode 100755 index 000000000000..2f0290b1e478 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/ProteinStructure.js @@ -0,0 +1,157 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.Structure"], "JM.ProteinStructure", ["java.util.Hashtable", "JU.P3", "$.V3", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.type = null; +this.subtype = null; +this.structureID = null; +this.strucNo = 0; +this.serialID = null; +this.strandCount = 1; +this.id = 0; +this.nRes = 0; +this.apolymer = null; +this.monomerIndexFirst = 0; +this.monomerIndexLast = 0; +this.axisA = null; +this.axisB = null; +this.axisUnitVector = null; +this.vectorProjection = null; +this.segments = null; +this.resMap = null; +Clazz.instantialize(this, arguments);}, JM, "ProteinStructure", null, JM.Structure); +Clazz.makeConstructor(c$, +function(){ +this.incrementID(); +}); +Clazz.defineMethod(c$, "incrementID", +function(){ +this.id = ++JM.ProteinStructure.ids; +}); +Clazz.defineMethod(c$, "setupPS", +function(apolymer, type, monomerIndex, monomerCount){ +this.strucNo = ++JM.ProteinStructure.globalStrucNo; +this.apolymer = apolymer; +this.type = type; +this.vectorProjection = new JU.V3(); +this.monomerIndexFirst = monomerIndex; +this.addMonomer(monomerIndex + monomerCount - 1); +if (JU.Logger.debugging) JU.Logger.info("Creating ProteinStructure " + this.strucNo + " " + type.getBioStructureTypeName(false) + " from " + apolymer.monomers[this.monomerIndexFirst] + " through " + apolymer.monomers[this.monomerIndexLast] + " in polymer " + apolymer); +}, "JM.AlphaPolymer,J.c.STR,~N,~N"); +Clazz.defineMethod(c$, "addMonomer", +function(index){ +this.resMap = null; +this.resetAxes(); +this.monomerIndexFirst = Math.min(this.monomerIndexFirst, index); +this.monomerIndexLast = Math.max(this.monomerIndexLast, index); +this.nRes = this.monomerIndexLast - this.monomerIndexFirst + 1; +}, "~N"); +Clazz.defineMethod(c$, "removeMonomer", +function(index){ +this.resMap = null; +this.resetAxes(); +if (index > this.monomerIndexLast || index < this.monomerIndexFirst) return; +if (index == this.monomerIndexFirst) { +this.monomerIndexFirst++; +this.nRes--; +} else if (index == this.monomerIndexLast) { +this.monomerIndexLast--; +this.nRes--; +} else { +var n = this.monomerIndexLast - index; +this.monomerIndexLast = index - 1; +this.nRes = index - this.monomerIndexFirst; +var monomers = this.apolymer.monomers; +var type = monomers[++index].getProteinStructureType(); +var mLast = -1; +for (var i = 0, pt = index; i < n; i++, pt++) { +(monomers[pt]).setStructure(null); +mLast = monomers[pt].setProteinStructureType(type, mLast); +} +}}, "~N"); +Clazz.defineMethod(c$, "calcAxis", +function(){ +}); +Clazz.defineMethod(c$, "isWithin", +function(monomerIndex){ +return (monomerIndex > this.monomerIndexFirst && monomerIndex < this.monomerIndexLast); +}, "~N"); +Clazz.defineMethod(c$, "getIndex", +function(monomer){ +if (this.resMap == null) { +this.resMap = new java.util.Hashtable(); +for (var i = this.nRes; --i >= 0; ) this.resMap.put(this.apolymer.monomers[this.monomerIndexFirst + i], Integer.$valueOf(i)); + +}var ii = this.resMap.get(monomer); +return (ii == null ? -1 : ii.intValue()); +}, "JM.Monomer"); +Clazz.defineMethod(c$, "getSegments", +function(){ +if (this.segments == null) this.calcSegments(); +return this.segments; +}); +Clazz.defineMethod(c$, "getStructureMidPoint", +function(index){ +if (this.segments == null) this.calcSegments(); +return this.segments[index]; +}, "~N"); +Clazz.defineMethod(c$, "calcSegments", +function(){ +if (this.segments != null) return; +this.calcAxis(); +this.segments = new Array(this.nRes + 1); +this.segments[this.nRes] = this.axisB; +this.segments[0] = this.axisA; +var axis = JU.V3.newV(this.axisUnitVector); +axis.scale(this.axisB.distance(this.axisA) / this.nRes); +for (var i = 1; i < this.nRes; i++) { +var point = this.segments[i] = new JU.P3(); +point.add2(this.segments[i - 1], axis); +} +}); +Clazz.defineMethod(c$, "getAxisStartPoint", +function(){ +this.calcAxis(); +return this.axisA; +}); +Clazz.defineMethod(c$, "getAxisEndPoint", +function(){ +this.calcAxis(); +return this.axisB; +}); +Clazz.defineMethod(c$, "resetAxes", +function(){ +this.axisA = null; +this.segments = null; +}); +Clazz.overrideMethod(c$, "setAtomBits", +function(bs){ +var ms = this.apolymer.monomers; +for (var i = this.monomerIndexFirst; i <= this.monomerIndexLast; i++) ms[i].setAtomBits(bs); + +}, "JU.BS"); +Clazz.overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +var ms = this.apolymer.monomers; +for (var i = this.monomerIndexFirst; i <= this.monomerIndexLast; i++) ms[i].setAtomBitsAndClear(bs, bsOut); + +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "findMonomer", +function(bsAtoms, isFirst){ +var ms = this.apolymer.monomers; +if (this.monomerIndexFirst < 0) return null; +if (isFirst) { +for (var i = this.monomerIndexFirst; i <= this.monomerIndexLast; i++) if (bsAtoms == null || bsAtoms.get(ms[i].leadAtomIndex)) return ms[i]; + +} else { +for (var i = this.monomerIndexLast; i >= this.monomerIndexFirst; --i) if (bsAtoms == null || bsAtoms.get(ms[i].leadAtomIndex)) return ms[i]; + +}return null; +}, "JU.BS,~B"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[" + this.id + " " + this.type + (this.subtype == null ? "" : " " + this.subtype) + " (" + this.monomerIndexFirst + "-" + this.monomerIndexLast + ")]"; +}); +c$.ids = 0; +c$.globalStrucNo = 1000; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Sheet.js b/config/plugins/visualizations/jmol/static/j2s/JM/Sheet.js new file mode 100755 index 000000000000..deb48a1bc165 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Sheet.js @@ -0,0 +1,72 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.ProteinStructure"], "JM.Sheet", ["JU.Measure", "$.P3", "$.V3", "J.c.STR"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.widthUnitVector = null; +this.heightUnitVector = null; +Clazz.instantialize(this, arguments);}, JM, "Sheet", JM.ProteinStructure); +Clazz.makeConstructor(c$, +function(apolymer, monomerIndex, monomerCount, subtype){ +Clazz.superConstructor (this, JM.Sheet, []); +this.incrementID(); +this.setupPS(apolymer, J.c.STR.SHEET, monomerIndex, monomerCount); +this.subtype = subtype; +}, "JM.AlphaPolymer,~N,~N,J.c.STR"); +Clazz.overrideMethod(c$, "calcAxis", +function(){ +if (this.axisA != null) return; +if (this.nRes == 2) { +this.axisA = this.apolymer.getLeadPoint(this.monomerIndexFirst); +this.axisB = this.apolymer.getLeadPoint(this.monomerIndexFirst + 1); +} else { +this.axisA = new JU.P3(); +this.apolymer.getLeadMidPoint(this.monomerIndexFirst + 1, this.axisA); +this.axisB = new JU.P3(); +this.apolymer.getLeadMidPoint(this.monomerIndexFirst + this.nRes - 1, this.axisB); +}this.axisUnitVector = new JU.V3(); +this.axisUnitVector.sub2(this.axisB, this.axisA); +this.axisUnitVector.normalize(); +var tempA = new JU.P3(); +this.apolymer.getLeadMidPoint(this.monomerIndexFirst, tempA); +if (this.notHelixOrSheet(this.monomerIndexFirst - 1)) JU.Measure.projectOntoAxis(tempA, this.axisA, this.axisUnitVector, this.vectorProjection); +var tempB = new JU.P3(); +this.apolymer.getLeadMidPoint(this.monomerIndexFirst + this.nRes, tempB); +if (this.notHelixOrSheet(this.monomerIndexFirst + this.nRes)) JU.Measure.projectOntoAxis(tempB, this.axisA, this.axisUnitVector, this.vectorProjection); +this.axisA = tempA; +this.axisB = tempB; +}); +Clazz.defineMethod(c$, "notHelixOrSheet", +function(i){ +return (i < 0 || i >= this.apolymer.monomerCount || !this.apolymer.monomers[i].isHelix() && !this.apolymer.monomers[i].isSheet()); +}, "~N"); +Clazz.defineMethod(c$, "calcSheetUnitVectors", +function(){ +if (!(Clazz.instanceOf(this.apolymer,"JM.AminoPolymer"))) return; +if (this.widthUnitVector == null) { +var vectorCO = new JU.V3(); +var vectorCOSum = new JU.V3(); +var amino = this.apolymer.monomers[this.monomerIndexFirst]; +vectorCOSum.sub2(amino.getCarbonylOxygenAtom(), amino.getCarbonylCarbonAtom()); +for (var i = this.nRes; --i > this.monomerIndexFirst; ) { +amino = this.apolymer.monomers[i]; +vectorCO.sub2(amino.getCarbonylOxygenAtom(), amino.getCarbonylCarbonAtom()); +if (vectorCOSum.angle(vectorCO) < 1.5707964) vectorCOSum.add(vectorCO); + else vectorCOSum.sub(vectorCO); +} +this.heightUnitVector = vectorCO; +this.heightUnitVector.cross(this.axisUnitVector, vectorCOSum); +this.heightUnitVector.normalize(); +this.widthUnitVector = vectorCOSum; +this.widthUnitVector.cross(this.axisUnitVector, this.heightUnitVector); +}}); +Clazz.defineMethod(c$, "setBox", +function(w, h, pt, vW, vH, ptC, scale){ +if (this.heightUnitVector == null) this.calcSheetUnitVectors(); +vW.setT(this.widthUnitVector); +vW.scale(scale * w); +vH.setT(this.heightUnitVector); +vH.scale(scale * h); +ptC.ave(vW, vH); +ptC.sub2(pt, ptC); +}, "~N,~N,JU.P3,JU.V3,JU.V3,JU.P3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/StateScript.js b/config/plugins/visualizations/jmol/static/j2s/JM/StateScript.js new file mode 100755 index 000000000000..0fbd5ed8b933 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/StateScript.js @@ -0,0 +1,57 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.StateScript", ["JU.SB", "JU.BSUtil", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modelIndex = 0; +this.bsBonds = null; +this.bsAtoms1 = null; +this.bsAtoms2 = null; +this.script1 = null; +this.script2 = null; +this.inDefinedStateBlock = false; +Clazz.instantialize(this, arguments);}, JM, "StateScript", null); +Clazz.makeConstructor(c$, +function(modelIndex, script1, bsBonds, bsAtoms1, bsAtoms2, script2, inDefinedStateBlock){ +this.modelIndex = modelIndex; +this.script1 = script1; +this.bsBonds = JU.BSUtil.copy(bsBonds); +this.bsAtoms1 = JU.BSUtil.copy(bsAtoms1); +this.bsAtoms2 = JU.BSUtil.copy(bsAtoms2); +this.script2 = script2; +this.inDefinedStateBlock = inDefinedStateBlock; +}, "~N,~S,JU.BS,JU.BS,JU.BS,~S,~B"); +Clazz.defineMethod(c$, "isValid", +function(){ +return this.script1 != null && this.script1.length > 0 && (this.bsBonds == null || this.bsBonds.nextSetBit(0) >= 0) && (this.bsAtoms1 == null || this.bsAtoms1.nextSetBit(0) >= 0) && (this.bsAtoms2 == null || this.bsAtoms2.nextSetBit(0) >= 0); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +if (!this.isValid()) return ""; +var sb = JU.SB.newS(this.script1); +if (this.bsBonds != null) sb.append(" ").append(JU.Escape.eBond(this.bsBonds)); +if (this.bsAtoms1 != null) sb.append(" ").append(JU.Escape.eBS(this.bsAtoms1)); +if (this.bsAtoms2 != null) sb.append(" ").append(JU.Escape.eBS(this.bsAtoms2)); +if (this.script2 != null) sb.append(" ").append(this.script2); +var s = sb.toString(); +if (!s.endsWith(";")) s += ";"; +return s; +}); +Clazz.defineMethod(c$, "isConnect", +function(){ +return (this.script1.indexOf("connect") >= 0); +}); +Clazz.defineMethod(c$, "deleteAtoms", +function(modelIndex, bsBonds, bsAtoms){ +if (modelIndex == this.modelIndex) return false; +if (modelIndex > this.modelIndex) { +return true; +}JU.BSUtil.deleteBits(this.bsBonds, bsBonds); +JU.BSUtil.deleteBits(this.bsAtoms1, bsAtoms); +JU.BSUtil.deleteBits(this.bsAtoms2, bsAtoms); +return this.isValid(); +}, "~N,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "setModelIndex", +function(index){ +this.modelIndex = index; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Structure.js b/config/plugins/visualizations/jmol/static/j2s/JM/Structure.js new file mode 100755 index 000000000000..6159830ec3f0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Structure.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JM"); +Clazz.declareInterface(JM, "Structure"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Text.js b/config/plugins/visualizations/jmol/static/j2s/JM/Text.js new file mode 100755 index 000000000000..a0a452691545 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Text.js @@ -0,0 +1,520 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.Text", ["JU.PT", "J.shape.Shape", "JU.C", "$.Font", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.doFormatText = false; +this.font = null; +this.fid = 0; +this.ascent = 0; +this.descent = 0; +this.lineHeight = 0; +this.offsetX = 0; +this.offsetY = 0; +this.boxYoff2 = 0; +this.widths = null; +this.textWidth = 0; +this.textHeight = 0; +this.text = null; +this.textUnformatted = null; +this.lines = null; +this.image = null; +this.imageScale = 1; +this.barPixels = 0; +this.barDistance = 0; +this.xAdj = 0; +this.yAdj = 0; +this.y0 = 0; +this.pointerPt = null; +this.isMeasure = false; +this.isEcho = false; +this.xyz = null; +this.target = null; +this.script = null; +this.colix = 0; +this.bgcolix = 0; +this.pointer = 0; +this.fontScale = 0; +this.align = 0; +this.valign = 0; +this.atomX = 0; +this.atomY = 0; +this.atomZ = 2147483647; +this.movableX = 0; +this.movableY = 0; +this.movableZ = 0; +this.movableXPercent = 2147483647; +this.movableYPercent = 2147483647; +this.movableZPercent = 2147483647; +this.z = 1; +this.zSlab = -2147483648; +this.pymolOffset = null; +this.windowWidth = 0; +this.windowHeight = 0; +this.adjustForWindow = false; +this.boxWidth = 0; +this.boxHeight = 0; +this.boxX = 0; +this.boxY = 0; +this.modelIndex = -1; +this.thisModelOnly = false; +this.visible = true; +this.hidden = false; +this.boxXY = null; +this.scalePixelsPerMicron = 0; +this.barPixelsXYZ = 0; +Clazz.instantialize(this, arguments);}, JM, "Text", null); +Clazz.makeConstructor(c$, +function(){ +this.boxXY = Clazz.newFloatArray (5, 0); +}); +c$.newLabel = Clazz.defineMethod(c$, "newLabel", +function(vwr, font, text, colix, bgcolix, align, scalePixelsPerMicron){ +var t = new JM.Text(); +t.vwr = vwr; +t.set(font, colix, align, scalePixelsPerMicron); +t.setText(text); +t.bgcolix = bgcolix; +return t; +}, "JV.Viewer,JU.Font,~S,~N,~N,~N,~N"); +c$.newMeasure = Clazz.defineMethod(c$, "newMeasure", +function(vwr, font, colix){ +var t = new JM.Text(); +t.vwr = vwr; +t.set(font, colix, 0, 0); +t.isMeasure = true; +return t; +}, "JV.Viewer,JU.Font,~N"); +c$.newEcho = Clazz.defineMethod(c$, "newEcho", +function(vwr, font, target, colix, valign, align, scalePixelsPerMicron){ +var t = new JM.Text(); +t.isEcho = true; +t.vwr = vwr; +t.set(font, colix, align, scalePixelsPerMicron); +t.target = target; +t.valign = valign; +t.z = 2; +t.zSlab = -2147483648; +return t; +}, "JV.Viewer,JU.Font,~S,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "set", +function(font, colix, align, scalePixelsPerMicron){ +this.scalePixelsPerMicron = scalePixelsPerMicron; +this.colix = colix; +this.align = align; +this.setFont(font, !this.isEcho); +}, "JU.Font,~N,~N,~N"); +Clazz.defineMethod(c$, "setOffset", +function(offset){ +this.offsetX = JV.JC.getXOffset(offset); +this.offsetY = JV.JC.getYOffset(offset); +this.pymolOffset = null; +this.valign = 3; +}, "~N"); +Clazz.defineMethod(c$, "getFontMetrics", +function(){ +this.descent = this.font.getDescent(); +this.ascent = this.font.getAscent(); +this.lineHeight = this.ascent + this.descent; +}); +Clazz.defineMethod(c$, "setFontFromFid", +function(fid){ +if (this.fid == fid) return; +this.fontScale = 0; +this.setFont(JU.Font.getFont3D(fid), true); +}, "~N"); +Clazz.defineMethod(c$, "setText", +function(text){ +if (this.image != null) { +this.getFontMetrics(); +this.image = null; +}this.barPixels = 0; +if (text != null && text.length == 0) text = null; +if (this.text != null && this.text.equals(text)) return; +this.text = this.textUnformatted = text; +this.doFormatText = (this.isEcho && text != null && (text.indexOf("%{") >= 0 || text.indexOf("@{") >= 0)); +if (!this.doFormatText) this.recalc(); +}, "~S"); +Clazz.defineMethod(c$, "setImage", +function(image){ +this.image = image; +this.recalc(); +}, "~O"); +Clazz.defineMethod(c$, "setScale", +function(scale){ +this.imageScale = scale; +this.recalc(); +}, "~N"); +Clazz.defineMethod(c$, "setFont", +function(f3d, doAll){ +this.font = f3d; +if (this.font == null) return; +this.getFontMetrics(); +if (!doAll) return; +this.fid = this.font.fid; +this.recalc(); +}, "JU.Font,~B"); +Clazz.defineMethod(c$, "setFontScale", +function(scale){ +if (this.fontScale == scale) return; +this.fontScale = scale; +if (this.fontScale != 0 && this.font != null) this.setFont(this.vwr.gdata.getFont3DScaled(this.font, scale), true); +}, "~N"); +Clazz.defineMethod(c$, "recalc", +function(){ +if (this.image != null) { +this.textWidth = this.textHeight = 0; +this.boxWidth = this.vwr.apiPlatform.getImageWidth(this.image) * this.fontScale * this.imageScale; +this.boxHeight = this.vwr.apiPlatform.getImageHeight(this.image) * this.fontScale * this.imageScale; +this.ascent = 0; +return; +}if (this.text == null) { +this.text = null; +this.lines = null; +this.widths = null; +return; +}if (this.font == null) return; +this.lines = JU.PT.split(this.text, (this.text.indexOf("\n") >= 0 ? "\n" : "|")); +this.textWidth = 0; +this.widths = Clazz.newIntArray (this.lines.length, 0); +for (var i = this.lines.length; --i >= 0; ) this.textWidth = Math.max(this.textWidth, this.widths[i] = this.stringWidth(this.lines[i])); + +this.textHeight = this.lines.length * this.lineHeight; +this.boxWidth = this.textWidth + (this.fontScale >= 2 ? 16 : 8); +this.boxHeight = this.textHeight + (this.fontScale >= 2 ? 16 : 8); +}); +Clazz.defineMethod(c$, "setPosition", +function(scalePixelsPerMicron, imageFontScaling, isAbsolute, boxXY){ +if (boxXY == null) boxXY = this.boxXY; + else this.boxXY = boxXY; +this.setWindow(this.vwr.gdata.width, this.vwr.gdata.height, scalePixelsPerMicron); +if (scalePixelsPerMicron != 0 && this.scalePixelsPerMicron != 0) this.setFontScale(scalePixelsPerMicron / this.scalePixelsPerMicron); + else if (this.fontScale != imageFontScaling) this.setFontScale(imageFontScaling); +if (this.doFormatText) { +this.text = (this.isEcho ? this.vwr.formatText(this.textUnformatted) : this.textUnformatted); +this.recalc(); +} else { +if (this.textUnformatted != null && this.textUnformatted.startsWith("%SCALE")) { +var ret = Clazz.newFloatArray (2, 0); +this.text = this.vwr.getScaleText(this.textUnformatted.substring(6).trim(), this.vwr.antialiased, (this.xyz == null ? 15 : 8), ret); +this.barPixels = Clazz.floatToInt(ret[0] * (this.vwr.antialiased ? 2 : 1)); +this.barDistance = ret[1]; +this.recalc(); +}}var dx = this.offsetX * imageFontScaling; +var dy = this.offsetY * imageFontScaling; +this.xAdj = (this.fontScale >= 2 ? 8 : 4); +this.yAdj = this.ascent - this.lineHeight + this.xAdj; +if (!this.isEcho || this.pymolOffset != null) { +boxXY[0] = this.movableX; +boxXY[1] = this.movableY; +var isAng = !this.isPymolOffsetPixels(); +if (this.pymolOffset != null && isAng) { +var pixelsPerAngstrom = this.vwr.tm.scaleToScreen(this.z, 1000); +var pz = this.pymolOffset[3]; +var dz = (pz < 0 ? -1 : 1) * Math.max(pz == 0 ? 0.5 : 0, Math.abs(pz) - 1) * pixelsPerAngstrom; +this.z -= Clazz.floatToInt(dz); +pixelsPerAngstrom = this.vwr.tm.scaleToScreen(this.z, 1000); +dx = (this.xyz != null && this.barPixels > 0 ? 0 : this.getPymolXYOffset(this.pymolOffset[1], this.textWidth, pixelsPerAngstrom)); +var dh = this.ascent - this.descent; +dy = -this.getPymolXYOffset(-this.pymolOffset[2], dh, pixelsPerAngstrom) - Clazz.doubleToInt((this.textHeight + dh) / 2); +if (this.pymolOffset[0] == 1) { +dy -= this.descent; +}this.xAdj = (this.fontScale >= 2 ? 8 : 4); +this.yAdj = -this.descent; +boxXY[0] = this.movableX - this.xAdj; +boxXY[1] = this.movableY - this.yAdj; +isAbsolute = true; +this.boxYoff2 = -2; +} else { +this.boxYoff2 = 0; +}if (this.pymolOffset == null) switch (this.align) { +case 8: +dy = 0; +dx = 0; +break; +case 12: +boxXY[0] -= this.boxWidth; +case 4: +dy = 0; +break; +} +JM.Text.setBoxXY(this.boxWidth, this.boxHeight, dx, dy, boxXY, isAbsolute); +} else { +this.setPos(this.fontScale); +}this.boxX = boxXY[0]; +this.boxY = boxXY[1]; +if (this.adjustForWindow) this.setBoxOffsetsInWindow(0, this.isEcho ? 0 : 16 * this.fontScale + this.lineHeight, this.boxY - this.textHeight); +this.y0 = this.boxY + this.yAdj; +if (this.isMeasure && this.align != 8) this.y0 += this.ascent + (this.lines.length - 1) / 2 * this.lineHeight; +}, "~N,~N,~B,~A"); +Clazz.defineMethod(c$, "getPymolXYOffset", +function(x, width, ppa){ +var f = (x < -1 ? -1 : x > 1 ? 0 : (x - 1) / 2); +var offset = (x < -1 || x > 1 ? x + (x < 0 ? 1 : -1) : 0); +return f * width + offset * ppa; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setPos", +function(scale){ +var xLeft; +var xCenter; +var xRight; +var is3dEcho = (this.xyz != null); +if (this.valign == 3 || this.valign == 4) { +var x = (this.movableXPercent != 2147483647 ? Clazz.doubleToInt(this.movableXPercent * this.windowWidth / 100) : is3dEcho ? this.movableX : this.movableX * scale); +var offsetX = this.offsetX * scale; +xLeft = xRight = xCenter = x + offsetX + this.barPixels; +} else { +xLeft = 5 * scale; +xCenter = Clazz.doubleToInt((this.windowWidth + this.barPixels) / 2); +xRight = this.windowWidth - xLeft; +xLeft += this.barPixels; +}switch (this.align) { +case 8: +this.boxXY[0] = xCenter - this.boxWidth / 2; +break; +case 12: +this.boxXY[0] = xRight - this.boxWidth; +break; +default: +this.boxXY[0] = xLeft; +break; +} +this.boxXY[1] = 0; +switch (this.valign) { +case 0: +break; +case 2: +this.boxXY[1] = Clazz.doubleToInt(this.windowHeight / 2); +break; +case 1: +this.boxXY[1] = this.windowHeight; +break; +default: +var y = (this.movableYPercent != 2147483647 ? Clazz.doubleToInt(this.movableYPercent * this.windowHeight / 100) : is3dEcho ? this.movableY : this.movableY * scale); +this.boxXY[1] = (is3dEcho ? y : (this.windowHeight - y)) + this.offsetY * scale; +} +if (this.align == 8) this.boxXY[1] -= (this.image != null ? this.boxHeight : this.xyz != null ? this.boxHeight : this.ascent - this.boxHeight) / 2; + else if (this.image != null) this.boxXY[1] -= 0; + else if (this.xyz != null) this.boxXY[1] -= Clazz.doubleToInt(this.ascent / 2); +}, "~N"); +c$.setBoxXY = Clazz.defineMethod(c$, "setBoxXY", +function(boxWidth, boxHeight, xOffset, yOffset, boxXY, isAbsolute){ +var xBoxOffset; +var yBoxOffset; +if (xOffset > 0 || isAbsolute) { +xBoxOffset = xOffset; +} else { +xBoxOffset = -boxWidth; +if (xOffset == 0) xBoxOffset /= 2; + else xBoxOffset += xOffset; +}if (isAbsolute || yOffset > 0) { +yBoxOffset = -boxHeight - yOffset; +} else if (yOffset == 0) { +yBoxOffset = -boxHeight / 2; +} else { +yBoxOffset = -yOffset; +}boxXY[0] += xBoxOffset; +boxXY[1] += yBoxOffset; +boxXY[2] = boxWidth; +boxXY[3] = boxHeight; +}, "~N,~N,~N,~N,~A,~B"); +Clazz.defineMethod(c$, "stringWidth", +function(str){ +var w = 0; +var f = 1; +var subscale = 1; +if (str == null) return 0; +if (str.indexOf(""))) { +var i1 = str.indexOf(">", i); +if (i1 >= 0) { +i = i1; +continue; +}}if (i + 5 <= len && ((s = str.substring(i, i + 5)).equals("") || s.equals(""))) { +i += 4; +f = subscale; +continue; +}if (i + 6 <= len && ((s = str.substring(i, i + 6)).equals("") || s.equals(""))) { +i += 5; +f = 1; +continue; +}}w += this.font.stringWidth(str.substring(i, i + 1)) * f; +} +return w; +}, "~S"); +Clazz.defineMethod(c$, "setXYA", +function(xy, i){ +if (i == 0) { +xy[2] = this.boxX; +switch (this.align) { +case 8: +xy[2] += this.boxWidth / 2; +break; +case 12: +xy[2] += this.boxWidth - this.xAdj; +break; +default: +xy[2] += this.xAdj; +} +xy[0] = xy[2]; +xy[1] = this.y0; +}switch (this.align) { +case 8: +xy[0] = xy[2] - Clazz.doubleToInt(this.widths[i] / 2); +break; +case 12: +xy[0] = xy[2] - this.widths[i]; +} +xy[1] += this.lineHeight; +}, "~A,~N"); +Clazz.defineMethod(c$, "appendFontCmd", +function(s){ +s.append(" " + J.shape.Shape.getFontCommand("echo", this.font)); +if (this.scalePixelsPerMicron > 0) s.append(" " + (10000 / this.scalePixelsPerMicron)); +}, "JU.SB"); +Clazz.defineMethod(c$, "setScalePixelsPerMicron", +function(scalePixelsPerMicron){ +this.fontScale = 0; +this.scalePixelsPerMicron = scalePixelsPerMicron; +}, "~N"); +Clazz.defineMethod(c$, "setXYZ", +function(xyz, doAdjust){ +this.xyz = xyz; +if (xyz == null) { +this.zSlab = -2147483648; +this.pymolOffset = null; +}if (doAdjust) { +this.valign = (xyz == null ? 3 : 4); +this.adjustForWindow = (xyz == null); +}}, "JU.P3,~B"); +Clazz.defineMethod(c$, "setTranslucent", +function(level, isBackground){ +if (isBackground) { +if (this.bgcolix != 0) this.bgcolix = JU.C.getColixTranslucent3(this.bgcolix, !Float.isNaN(level), level); +} else { +this.colix = JU.C.getColixTranslucent3(this.colix, !Float.isNaN(level), level); +}}, "~N,~B"); +Clazz.defineMethod(c$, "setMovableX", +function(x){ +this.valign = (this.valign == 4 ? 4 : 3); +this.movableX = x; +this.movableXPercent = 2147483647; +}, "~N"); +Clazz.defineMethod(c$, "setMovableY", +function(y){ +this.valign = (this.valign == 4 ? 4 : 3); +this.movableY = y; +this.movableYPercent = 2147483647; +}, "~N"); +Clazz.defineMethod(c$, "setMovableXPercent", +function(x){ +this.valign = (this.valign == 4 ? 4 : 3); +this.movableX = 2147483647; +this.movableXPercent = x; +}, "~N"); +Clazz.defineMethod(c$, "setMovableYPercent", +function(y){ +this.valign = (this.valign == 4 ? 4 : 3); +this.movableY = 2147483647; +this.movableYPercent = y; +}, "~N"); +Clazz.defineMethod(c$, "setMovableZPercent", +function(z){ +if (this.valign != 4) this.valign = 3; +this.movableZ = 2147483647; +this.movableZPercent = z; +}, "~N"); +Clazz.defineMethod(c$, "setZs", +function(z, zSlab){ +this.z = z; +this.zSlab = zSlab; +}, "~N,~N"); +Clazz.defineMethod(c$, "setXYZs", +function(x, y, z, zSlab){ +this.setMovableX(x); +this.setMovableY(y); +this.setZs(z, zSlab); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setScript", +function(script){ +this.script = (script == null || script.length == 0 ? null : script); +}, "~S"); +Clazz.defineMethod(c$, "setAlignmentLCR", +function(align){ +if (align != null) { +if ("left".equals(align)) return this.setAlignment(4); +if ("center".equals(align)) return this.setAlignment(8); +if ("right".equals(align)) return this.setAlignment(12); +}return false; +}, "~S"); +Clazz.defineMethod(c$, "setAlignment", +function(align){ +if (this.align != align) { +this.align = align; +this.recalc(); +}return true; +}, "~N"); +Clazz.defineMethod(c$, "setBoxOffsetsInWindow", +function(margin, vMargin, vTop){ +var bw = this.boxWidth + margin; +var x = this.boxX; +if (x + bw > this.windowWidth) x = this.windowWidth - bw; +if (x < margin) x = margin; +this.boxX = x; +var bh = this.boxHeight; +var y = vTop; +if (y + bh > this.windowHeight) y = this.windowHeight - bh; +if (y < vMargin) y = vMargin; +this.boxY = y; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setWindow", +function(width, height, scalePixelsPerMicron){ +this.windowWidth = width; +this.windowHeight = height; +if (this.pymolOffset == null && this.scalePixelsPerMicron < 0 && scalePixelsPerMicron != 0) this.setScalePixelsPerMicron(scalePixelsPerMicron); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "checkObjectClicked", +function(isAntialiased, x, y, bsVisible){ +if (this.hidden || this.script == null || this.modelIndex >= 0 && !bsVisible.get(this.modelIndex)) return false; +if (isAntialiased) { +x <<= 1; +y <<= 1; +}return (x >= this.boxX && x <= this.boxX + this.boxWidth && y >= this.boxY && y <= this.boxY + this.boxHeight); +}, "~B,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "getPymolScreenOffset", +function(atomPt, screen, zSlab, pTemp, sppm){ +var isPixel = this.isPymolOffsetPixels(); +var isRelative = this.isPymolOffsetRelative(); +if (atomPt != null && isRelative) pTemp.setT(atomPt); + else pTemp.set(0, 0, 0); +pTemp.add3(this.pymolOffset[4], this.pymolOffset[5], this.pymolOffset[6]); +this.vwr.tm.transformPtScr(pTemp, screen); +if (isPixel) { +screen.x += this.pymolOffset[1]; +screen.y += this.pymolOffset[2]; +screen.z += this.pymolOffset[3]; +}this.setXYZs(screen.x, screen.y, screen.z, zSlab); +}, "JU.P3,JU.P3i,~N,JU.P3,~N"); +Clazz.defineMethod(c$, "isPymolOffsetRelative", +function(){ +var mode = (this.pymolOffset == null ? -1 : Clazz.floatToInt(this.pymolOffset[0])); +return ((mode & 1) == 1); +}); +Clazz.defineMethod(c$, "isPymolOffsetPixels", +function(){ +var mode = (this.pymolOffset == null ? -1 : Clazz.floatToInt(this.pymolOffset[0])); +return (mode != -1 && ((mode & 2) == 2)); +}); +Clazz.defineMethod(c$, "getStateText", +function(){ +return (this.doFormatText ? JU.PT.rep(this.text, "@{", "\\@{") : this.text); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.textUnformatted; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/TickInfo.js b/config/plugins/visualizations/jmol/static/j2s/JM/TickInfo.js new file mode 100755 index 000000000000..aac75a8991c3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/TickInfo.js @@ -0,0 +1,18 @@ +Clazz.declarePackage("JM"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.id = ""; +this.type = ' '; +this.ticks = null; +this.tickLabelFormats = null; +this.scale = null; +this.first = 0; +this.signFactor = 1; +this.reference = null; +Clazz.instantialize(this, arguments);}, JM, "TickInfo", null); +Clazz.makeConstructor(c$, +function(ticks){ +this.ticks = ticks; +}, "JU.P3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Trajectory.js b/config/plugins/visualizations/jmol/static/j2s/JM/Trajectory.js new file mode 100755 index 000000000000..a827000c61d6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Trajectory.js @@ -0,0 +1,150 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.Trajectory", ["JU.BS", "$.P3", "$.V3"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.ms = null; +this.steps = null; +this.isFractional = true; +Clazz.instantialize(this, arguments);}, JM, "Trajectory", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(vwr, ms, steps){ +this.vwr = vwr; +this.ms = ms; +this.steps = steps; +return this; +}, "JV.Viewer,JM.ModelSet,JU.Lst"); +Clazz.defineMethod(c$, "setUnitCell", +function(imodel){ +var c = this.ms.getUnitCell(imodel); +if (c != null && c.getCoordinatesAreFractional() && c.isSupercell()) { +var list = this.ms.trajectory.steps.get(imodel); +for (var i = list.length; --i >= 0; ) if (list[i] != null) c.toSupercell(list[i]); + +}}, "~N"); +Clazz.defineMethod(c$, "setModel", +function(modelIndex){ +var am = this.ms.am; +var baseModelIndex = am[modelIndex].trajectoryBaseIndex; +am[baseModelIndex].selectedTrajectory = modelIndex; +this.isFractional = !this.ms.getMSInfoB("ignoreUnitCell"); +this.setAtomPositions(baseModelIndex, modelIndex, this.steps.get(modelIndex), null, 0, (this.ms.vibrationSteps == null ? null : this.ms.vibrationSteps.get(modelIndex)), this.isFractional); +var currentModelIndex = this.vwr.am.cmi; +if (currentModelIndex >= 0 && currentModelIndex != modelIndex && am[currentModelIndex].fileIndex == am[modelIndex].fileIndex) this.vwr.setCurrentModelIndexClear(modelIndex, false); +}, "~N"); +Clazz.defineMethod(c$, "setAtomPositions", +function(baseModelIndex, modelIndex, t1, t2, f, vibs, isFractional){ +var bs = new JU.BS(); +var vib = new JU.V3(); +var am = this.ms.am; +var at = this.ms.at; +var iFirst = am[baseModelIndex].firstAtomIndex; +var iMax = iFirst + this.ms.getAtomCountInModel(baseModelIndex); +if (f == 0) { +for (var pt = 0, i = iFirst; i < iMax && pt < t1.length; i++, pt++) { +var a = at[i]; +if (a == null) continue; +a.mi = modelIndex; +if (t1[pt] == null) continue; +if (isFractional) a.setFractionalCoordTo(t1[pt], true); + else a.setT(t1[pt]); +if (this.ms.vibrationSteps != null) { +if (vibs != null && vibs[pt] != null) vib = vibs[pt]; +this.ms.setVibrationVector(i, vib); +}bs.set(i); +} +} else { +var p = new JU.P3(); +var n = Math.min(t1.length, t2.length); +for (var pt = 0, i = iFirst; i < iMax && pt < n; i++, pt++) { +var a = at[i]; +if (a == null) continue; +a.mi = modelIndex; +if (t1[pt] == null || t2[pt] == null) continue; +p.sub2(t2[pt], t1[pt]); +p.scaleAdd2(f, p, t1[pt]); +if (isFractional) a.setFractionalCoordTo(p, true); + else a.setT(p); +bs.set(i); +} +}this.ms.initializeBspf(); +this.ms.validateBspfForModel(baseModelIndex, false); +this.ms.recalculateLeadMidpointsAndWingVectors(baseModelIndex); +this.ms.sm.notifyAtomPositionsChanged(baseModelIndex, bs, null); +if (am[baseModelIndex].hasRasmolHBonds) (am[baseModelIndex]).resetRasmolBonds(bs, 2); +}, "~N,~N,~A,~A,~N,~A,~B"); +Clazz.defineMethod(c$, "getModelsSelected", +function(){ +var bsModels = new JU.BS(); +for (var i = this.ms.mc; --i >= 0; ) { +var t = this.ms.am[i].selectedTrajectory; +if (t >= 0) { +bsModels.set(t); +i = this.ms.am[i].trajectoryBaseIndex; +}} +return bsModels; +}); +Clazz.defineMethod(c$, "morph", +function(m1, m2, f){ +if (f == 0) { +this.ms.setTrajectory(m1); +return; +}if (f == 1) { +this.ms.setTrajectory(m2); +return; +}var baseModelIndex = this.ms.am[m1].trajectoryBaseIndex; +this.ms.am[baseModelIndex].selectedTrajectory = m1; +this.setAtomPositions(baseModelIndex, m1, this.steps.get(m1), this.steps.get(m2), f, (this.ms.vibrationSteps == null ? null : this.ms.vibrationSteps.get(m1)), true); +var m = this.vwr.am.cmi; +if (m >= 0 && m != m1 && this.ms.am[m].fileIndex == this.ms.am[m1].fileIndex) this.vwr.setCurrentModelIndexClear(m1, false); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "fixAtom", +function(a){ +var m = a.mi; +var isFrac = (this.ms.unitCells != null && this.ms.unitCells[m].getCoordinatesAreFractional()); +var pt = this.steps.get(m)[a.i - this.ms.am[m].firstAtomIndex]; +pt.set(a.x, a.y, a.z); +if (isFrac) this.ms.unitCells[m].toFractional(pt, true); +}, "JM.Atom"); +Clazz.defineMethod(c$, "getFractional", +function(a, ptTemp){ +a.setFractionalCoordPt(ptTemp, this.steps.get(a.mi)[a.i - this.ms.am[a.mi].firstAtomIndex], true); +}, "JM.Atom,JU.P3"); +Clazz.defineMethod(c$, "getState", +function(){ +var s = ""; +for (var i = this.ms.mc; --i >= 0; ) { +var t = this.ms.am[i].selectedTrajectory; +if (t >= 0) { +s = " or " + this.ms.getModelNumberDotted(t) + s; +i = this.ms.am[i].trajectoryBaseIndex; +}} +return (s.length > 0 ? s = "set trajectory {" + s.substring(4) + "}" : ""); +}); +Clazz.defineMethod(c$, "hasMeasure", +function(measure){ +if (measure != null) { +var atomIndex; +for (var i = 1, count = measure[0]; i <= count; i++) if ((atomIndex = measure[i]) >= 0 && this.ms.am[this.ms.at[atomIndex].mi].isTrajectory) return true; + +}return false; +}, "~A"); +Clazz.defineMethod(c$, "selectDisplayed", +function(bs){ +var a; +for (var i = this.ms.mc; --i >= 0; ) { +if (this.ms.am[i].isTrajectory && ((a = this.ms.at[this.ms.am[i].firstAtomIndex]) == null || a.mi != i)) bs.clear(i); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "getModelBS", +function(modelIndex, bs){ +var iBase = this.ms.am[modelIndex].trajectoryBaseIndex; +for (var i = this.ms.mc; --i >= iBase; ) if (this.ms.am[i].trajectoryBaseIndex == iBase) bs.set(i); + +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "setBaseModels", +function(bsModels){ +for (var i = this.ms.mc; --i >= 0; ) if (bsModels.get(i) && this.ms.am[i].isTrajectory) bsModels.set(this.ms.am[i].trajectoryBaseIndex); + +}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Turn.js b/config/plugins/visualizations/jmol/static/j2s/JM/Turn.js new file mode 100755 index 000000000000..63c24e17ccaa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Turn.js @@ -0,0 +1,11 @@ +Clazz.declarePackage("JM"); +Clazz.load(["JM.ProteinStructure"], "JM.Turn", ["J.c.STR"], function(){ +var c$ = Clazz.declareType(JM, "Turn", JM.ProteinStructure); +Clazz.makeConstructor(c$, +function(apolymer, monomerIndex, monomerCount){ +Clazz.superConstructor (this, JM.Turn, []); +this.setupPS(apolymer, J.c.STR.TURN, monomerIndex, monomerCount); +this.subtype = J.c.STR.TURN; +}, "JM.AlphaPolymer,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JM/Util.js b/config/plugins/visualizations/jmol/static/j2s/JM/Util.js new file mode 100755 index 000000000000..3b5fb860537f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JM/Util.js @@ -0,0 +1,270 @@ +Clazz.declarePackage("JM"); +Clazz.load(null, "JM.Util", ["java.util.Random"], function(){ +var c$ = Clazz.declareType(JM, "Util", null); +c$.sub = Clazz.defineMethod(c$, "sub", +function(a, b, result){ +result.set(a[0] - b[0], a[1] - b[1], a[2] - b[2]); +}, "~A,~A,JU.V3d"); +c$.putCoord = Clazz.defineMethod(c$, "putCoord", +function(v, c){ +c[0] = v.x; +c[1] = v.y; +c[2] = v.z; +}, "JU.V3d,~A"); +c$.distance2 = Clazz.defineMethod(c$, "distance2", +function(a, b){ +var dx = a[0] - b[0]; +var dy = a[1] - b[1]; +var dz = a[2] - b[2]; +return (dx * dx + dy * dy + dz * dz); +}, "~A,~A"); +c$.distance2V = Clazz.defineMethod(c$, "distance2V", +function(a, b){ +var dx = a.x - b.x; +var dy = a.y - b.y; +var dz = a.z - b.z; +return (dx * dx + dy * dy + dz * dz); +}, "JU.V3d,JU.V3d"); +c$.getAngleRadiansABC = Clazz.defineMethod(c$, "getAngleRadiansABC", +function(a, b, c){ +var ab2 = JM.Util.distance2(a, b); +var bc2 = JM.Util.distance2(b, c); +var ac2 = JM.Util.distance2(a, c); +return ((JM.Util.isNearZero2(ab2, 1e-3) || JM.Util.isNearZero2(bc2, 1e-3) ? 0 : Math.acos(Math.min(Math.max((ab2 + bc2 - ac2) / 2 / Math.sqrt(ab2 * bc2), -1), 1)))); +}, "~A,~A,~A"); +c$.isApprox = Clazz.defineMethod(c$, "isApprox", +function(a, b, precision){ +return (JM.Util.distance2V(a, b) <= precision * precision * Math.min(a.lengthSquared(), b.lengthSquared())); +}, "JU.V3d,JU.V3d,~N"); +c$.canBeSquared = Clazz.defineMethod(c$, "canBeSquared", +function(x){ +if (x == 0) return true; +return ((x = Math.abs(x)) < 1.0E150 && x > 1.0E-150); +}, "~N"); +c$.isNegligible = Clazz.defineMethod(c$, "isNegligible", +function(a, b){ +return JM.Util.isNegligible3(a, b, 1e-11); +}, "~N,~N"); +c$.isFinite = Clazz.defineMethod(c$, "isFinite", +function(a){ +return !Double.isInfinite(a) && !Double.isNaN(a); +}, "~N"); +c$.isNegligible3 = Clazz.defineMethod(c$, "isNegligible3", +function(a, b, precision){ +return (Math.abs(a) <= precision * Math.abs(b)); +}, "~N,~N,~N"); +c$.isNear = Clazz.defineMethod(c$, "isNear", +function(a, b){ +return JM.Util.isNear3(a, b, 2e-6); +}, "~N,~N"); +c$.isNear3 = Clazz.defineMethod(c$, "isNear3", +function(a, b, epsilon){ +return (Math.abs(a - b) < epsilon); +}, "~N,~N,~N"); +c$.isNearZero = Clazz.defineMethod(c$, "isNearZero", +function(a){ +return JM.Util.isNearZero2(a, 2e-6); +}, "~N"); +c$.isNearZero2 = Clazz.defineMethod(c$, "isNearZero2", +function(a, epsilon){ +return (Math.abs(a) < epsilon); +}, "~N,~N"); +c$.canBeNormalized = Clazz.defineMethod(c$, "canBeNormalized", +function(a){ +if (a.x == 0.0 && a.y == 0.0 && a.z == 0.0) return false; +return (JM.Util.canBeSquared(a.x) && JM.Util.canBeSquared(a.y) && JM.Util.canBeSquared(a.z)); +}, "JU.V3d"); +c$.pointPlaneAngleRadians = Clazz.defineMethod(c$, "pointPlaneAngleRadians", +function(a, b, c, d, v1, v2, norm, fixTheta){ +v1.sub2(b, c); +v2.sub2(b, d); +norm.cross(v1, v2); +v2.add(v1); +v1.sub2(b, a); +var angleA_CD = (fixTheta ? JM.Util.vectorAngleRadians(v2, v1) : 3.141592653589793); +var angleNorm = JM.Util.vectorAngleRadians(norm, v1); +if (angleNorm > 1.5707963267948966) angleNorm = 3.141592653589793 - angleNorm; +var val = 1.5707963267948966 + (angleA_CD > 1.5707963267948966 ? -angleNorm : angleNorm); +return val; +}, "JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,~B"); +c$.vectorAngleRadians = Clazz.defineMethod(c$, "vectorAngleRadians", +function(v1, v2){ +var l1 = v1.length(); +var l2 = v2.length(); +return (JM.Util.isNearZero(l1) || JM.Util.isNearZero(l2) ? 0 : Math.acos(v1.dot(v2) / (l1 * l2))); +}, "JU.V3d,JU.V3d"); +c$.getTorsionAngleRadians = Clazz.defineMethod(c$, "getTorsionAngleRadians", +function(a, b, c, d, r1, r2, r3){ +JM.Util.sub(b, a, r1); +JM.Util.sub(c, b, r2); +r2.normalize(); +r1.cross(r1, r2); +JM.Util.sub(d, c, r3); +r3.cross(r2, r3); +var p1dotp2 = r1.dot(r3); +r1.cross(r3, r1); +var theta = Math.atan2(-r2.dot(r1), p1dotp2); +return theta; +}, "~A,~A,~A,~A,JU.V3d,JU.V3d,JU.V3d"); +c$.restorativeForceAndDistance = Clazz.defineMethod(c$, "restorativeForceAndDistance", +function(a, b, vab){ +vab.sub2(a, b); +var rab = vab.length(); +if (rab < 0.1) { +JM.Util.randomizeUnitVector(vab); +rab = 0.1; +}vab.normalize(); +a.setT(vab); +a.scale(-1); +b.setT(vab); +return rab; +}, "JU.V3d,JU.V3d,JU.V3d"); +c$.randomizeUnitVector = Clazz.defineMethod(c$, "randomizeUnitVector", +function(v){ +var ptr = new java.util.Random(); +var l; +do { +v.set(ptr.nextFloat() - 0.5, ptr.nextFloat() - 0.5, ptr.nextFloat() - 0.5); +l = v.lengthSquared(); +} while ((l > 1.0) || (l < 1e-4)); +v.normalize(); +}, "JU.V3d"); +c$.restorativeForceAndAngleRadians = Clazz.defineMethod(c$, "restorativeForceAndAngleRadians", +function(i, j, k){ +i.sub(j); +k.sub(j); +var length1 = i.length(); +var length2 = k.length(); +if (JM.Util.isNearZero(length1) || JM.Util.isNearZero(length2)) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +return 0.0; +}var inverse_length_v1 = 1.0 / length1; +var inverse_length_v2 = 1.0 / length2; +i.scale(inverse_length_v1); +k.scale(inverse_length_v2); +j.cross(i, k); +var length = j.length(); +if (JM.Util.isNearZero(length)) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +return 0.0; +}j.scale(1 / length); +var costheta = i.dot(k); +var theta; +if (costheta > 1.0) { +theta = 0.0; +costheta = 1.0; +} else if (costheta < -1.0) { +theta = 3.141592653589793; +costheta = -1.0; +} else { +theta = Math.acos(costheta); +}i.cross(i, j); +i.normalize(); +j.cross(k, j); +j.normalize(); +i.scale(-inverse_length_v1); +j.scale(inverse_length_v2); +k.setT(j); +j.add(i); +j.scale(-1); +return theta; +}, "JU.V3d,JU.V3d,JU.V3d"); +c$.restorativeForceAndOutOfPlaneAngleRadians = Clazz.defineMethod(c$, "restorativeForceAndOutOfPlaneAngleRadians", +function(i, j, k, l, an, bn, cn){ +i.sub2(i, j); +k.sub2(k, j); +l.sub2(l, j); +var length_ji = i.length(); +var length_jk = k.length(); +var length_jl = l.length(); +if (JM.Util.isNearZero(length_ji) || JM.Util.isNearZero(length_jk) || JM.Util.isNearZero(length_jl)) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +l.set(0, 0, 0); +return 0.0; +}i.normalize(); +k.normalize(); +l.normalize(); +var cos_theta = i.dot(k); +var theta = Math.acos(cos_theta); +if (JM.Util.isNearZero(theta) || JM.Util.isNearZero(Math.abs(theta - 3.141592653589793))) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +l.set(0, 0, 0); +return 0.0; +}var csc_theta = 1 / Math.sin(theta); +an.cross(i, k); +bn.cross(k, l); +cn.cross(l, i); +var sin_dl = an.dot(l) * csc_theta; +var dl = Math.asin(sin_dl); +var cos_dl = Math.cos(dl); +if (cos_dl < 0.0001 || JM.Util.isNearZero(dl) || JM.Util.isNearZero(Math.abs(dl - 3.141592653589793))) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +l.set(0, 0, 0); +return dl; +}l.scaleAdd2(-sin_dl / csc_theta, l, an); +l.scale(csc_theta / length_jl); +j.setT(i); +i.scaleAdd2(-cos_theta, k, i); +i.scaleAdd2(-sin_dl * csc_theta, i, bn); +i.scale(csc_theta / length_ji); +k.scaleAdd2(-cos_theta, j, k); +k.scaleAdd2(-sin_dl * csc_theta, k, cn); +k.scale(csc_theta / length_jk); +j.setT(i); +j.add(k); +j.add(l); +j.scale(-1); +return dl; +}, "JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d"); +c$.restorativeForceAndTorsionAngleRadians = Clazz.defineMethod(c$, "restorativeForceAndTorsionAngleRadians", +function(i, j, k, l){ +i.sub2(j, i); +j.sub2(k, j); +k.sub2(l, k); +var len_ij = i.length(); +var len_jk = j.length(); +var len_kl = k.length(); +if (JM.Util.isNearZero(len_ij) || JM.Util.isNearZero(len_jk) || JM.Util.isNearZero(len_kl)) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +l.set(0, 0, 0); +return 0.0; +}var ang = JM.Util.vectorAngleRadians(i, j); +var sin_j = Math.sin(ang); +var cos_j = Math.cos(ang); +ang = JM.Util.vectorAngleRadians(j, k); +var sin_k = Math.sin(ang); +var cos_k = Math.cos(ang); +i.normalize(); +j.normalize(); +k.normalize(); +i.cross(i, j); +l.cross(j, k); +k.cross(i, l); +var theta = -Math.atan2(k.dot(j), i.dot(l)); +i.scale(1. / len_ij / sin_j / sin_j); +l.scale(-1.0 / len_kl / sin_k / sin_k); +j.setT(i); +j.scale(-len_ij / len_jk * cos_j - 1.); +k.setT(l); +k.scale(-len_kl / len_jk * cos_k); +j.sub(k); +k.setT(i); +k.add(j); +k.add(l); +k.scale(-1); +return theta; +}, "JU.V3d,JU.V3d,JU.V3d,JU.V3d"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/AbstractButton.js b/config/plugins/visualizations/jmol/static/j2s/JS/AbstractButton.js new file mode 100755 index 000000000000..634ac94a7acb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/AbstractButton.js @@ -0,0 +1,82 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.api.SC", "JS.JComponent"], "JS.AbstractButton", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.itemListener = null; +this.applet = null; +this.htmlName = null; +this.selected = false; +this.popupMenu = null; +this.icon = null; +Clazz.instantialize(this, arguments);}, JS, "AbstractButton", JS.JComponent, J.api.SC); +Clazz.makeConstructor(c$, +function(type){ +Clazz.superConstructor(this, JS.AbstractButton, [type]); +this.enabled = true; +}, "~S"); +Clazz.overrideMethod(c$, "setSelected", +function(selected){ +this.selected = selected; +{ +SwingController.setSelected(this); +}}, "~B"); +Clazz.overrideMethod(c$, "isSelected", +function(){ +return this.selected; +}); +Clazz.overrideMethod(c$, "addItemListener", +function(listener){ +this.itemListener = listener; +}, "~O"); +Clazz.overrideMethod(c$, "getIcon", +function(){ +return this.icon; +}); +Clazz.overrideMethod(c$, "setIcon", +function(icon){ +this.icon = icon; +}, "~O"); +Clazz.overrideMethod(c$, "init", +function(text, icon, actionCommand, popupMenu){ +this.text = text; +this.icon = icon; +this.actionCommand = actionCommand; +this.popupMenu = popupMenu; +{ +SwingController.initMenuItem(this); +}}, "~S,~O,~S,J.api.SC"); +Clazz.defineMethod(c$, "getTopPopupMenu", +function(){ +return this.popupMenu; +}); +Clazz.defineMethod(c$, "add", +function(item){ +this.addComponent(item); +}, "J.api.SC"); +Clazz.overrideMethod(c$, "insert", +function(subMenu, index){ +this.insertComponent(subMenu, index); +}, "J.api.SC,~N"); +Clazz.overrideMethod(c$, "getPopupMenu", +function(){ +return null; +}); +Clazz.defineMethod(c$, "getMenuHTML", +function(){ +var label = (this.icon != null ? this.icon : this.text != null ? this.text : null); +var s = (label == null ? "" : "
  • " + label + "" + this.htmlMenuOpener("ul")); +var n = this.getComponentCount(); +if (n > 0) for (var i = 0; i < n; i++) s += this.getComponent(i).toHTML(); + +if (label != null) s += "
"; +return s; +}); +Clazz.defineMethod(c$, "htmlMenuOpener", +function(type){ +return "<" + type + " id=\"" + this.id + "\"" + (this.enabled ? "" : this.getHtmlDisabled()) + ">"; +}, "~S"); +Clazz.defineMethod(c$, "getHtmlDisabled", +function(){ +return " disabled=\"disabled\""; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/AbstractTableModel.js b/config/plugins/visualizations/jmol/static/j2s/JS/AbstractTableModel.js new file mode 100755 index 000000000000..a9a0688c1699 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/AbstractTableModel.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "AbstractTableModel", JS.TableColumn); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/BorderLayout.js b/config/plugins/visualizations/jmol/static/j2s/JS/BorderLayout.js new file mode 100755 index 000000000000..f1114186edb7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/BorderLayout.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.LayoutManager"], "JS.BorderLayout", null, function(){ +var c$ = Clazz.declareType(JS, "BorderLayout", JS.LayoutManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ButtonGroup.js b/config/plugins/visualizations/jmol/static/j2s/JS/ButtonGroup.js new file mode 100755 index 000000000000..eda90ddc5278 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ButtonGroup.js @@ -0,0 +1,21 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.ButtonGroup", ["JS.Component"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.id = null; +this.count = 0; +Clazz.instantialize(this, arguments);}, JS, "ButtonGroup", null); +Clazz.makeConstructor(c$, +function(){ +this.id = JS.Component.newID("bg"); +}); +Clazz.defineMethod(c$, "add", +function(item){ +this.count++; +(item).htmlName = this.id; +}, "J.api.SC"); +Clazz.defineMethod(c$, "getButtonCount", +function(){ +return this.count; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/CIPChirality.js b/config/plugins/visualizations/jmol/static/j2s/JS/CIPChirality.js new file mode 100755 index 000000000000..8eba0894ade2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/CIPChirality.js @@ -0,0 +1,986 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.BS"], "JS.CIPChirality", ["java.util.Arrays", "$.Collections", "$.Hashtable", "JU.Lst", "$.PT", "JU.Elements", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.currentRule = 1; +this.root = null; +this.data = null; +this.doTrack = false; +this.isAux = false; +this.bsNeedRule = null; +this.havePseudoAuxiliary = false; +this.ptIDLogger = 0; +if (!Clazz.isClassDefined("JS.CIPChirality.CIPAtom")) { +JS.CIPChirality.$CIPChirality$CIPAtom$ (); +} +Clazz.instantialize(this, arguments);}, JS, "CIPChirality", null); +Clazz.prepareFields (c$, function(){ +this.bsNeedRule = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "getRuleName", +function(rule){ +return JS.CIPChirality.ruleNames[rule]; +}, "~N"); +Clazz.defineMethod(c$, "getChiralityForAtoms", +function(data){ +if (data.bsAtoms.isEmpty()) return; +this.data = data; +this.doTrack = data.isTracker(); +this.ptIDLogger = 0; +var bsToDo = data.bsMolecule.clone(); +var haveAlkenes = this.preFilterAtomList(data.atoms, bsToDo, data.bsEnes); +if (!data.bsEnes.isEmpty()) data.getEneKekule(); +this.logInfo("bsKekule:" + data.bsKekuleAmbiguous); +bsToDo = data.bsAtoms.clone(); +for (var i = bsToDo.nextSetBit(0); i >= 0; i = bsToDo.nextSetBit(i + 1)) { +var a = data.atoms[i]; +a.setCIPChirality(0); +this.ptIDLogger = 0; +var c = this.getAtomChiralityLimited(a, null, null); +a.setCIPChirality(c == 0 ? 3 : c | ((this.currentRule - 1) << 5)); +if (this.doTrack && c != 0) data.getRootTrackerResult(this.root); +} +if (haveAlkenes) { +var lstEZ = new JU.Lst(); +for (var i = bsToDo.nextSetBit(0); i >= 0; i = bsToDo.nextSetBit(i + 1)) this.getAtomBondChirality(data.atoms[i], lstEZ, bsToDo); + +if (data.lstSmallRings.length > 0 && lstEZ.size() > 0) this.clearSmallRingEZ(data.atoms, lstEZ); +this.setStereoFromSmiles(data.bsHelixM, 17, data.atoms); +this.setStereoFromSmiles(data.bsHelixP, 18, data.atoms); +}if (JU.Logger.debugging) { +this.logInfo("Kekule ambiguous = " + data.bsKekuleAmbiguous); +this.logInfo("small rings = " + JU.PT.toJSON(null, data.lstSmallRings)); +}}, "JS.CIPData"); +Clazz.defineMethod(c$, "setStereoFromSmiles", +function(bsHelix, stereo, atoms){ +if (bsHelix != null) for (var i = bsHelix.nextSetBit(0); i >= 0; i = bsHelix.nextSetBit(i + 1)) atoms[i].setCIPChirality(stereo); + +}, "JU.BS,~N,~A"); +Clazz.defineMethod(c$, "preFilterAtomList", +function(atoms, bsToDo, bsEnes){ +var haveAlkenes = false; +for (var i = bsToDo.nextSetBit(0); i >= 0; i = bsToDo.nextSetBit(i + 1)) { +if (!this.data.couldBeChiralAtom(atoms[i])) { +bsToDo.clear(i); +continue; +}switch (this.data.couldBeChiralAlkene(atoms[i], null)) { +case -1: +break; +case 13: +bsEnes.set(i); +case 17: +haveAlkenes = true; +break; +} +} +return haveAlkenes; +}, "~A,JU.BS,JU.BS"); +c$.isFirstRow = Clazz.defineMethod(c$, "isFirstRow", +function(a){ +var n = a.getElementNumber(); +return (n > 2 && n <= 10); +}, "JU.SimpleNode"); +Clazz.defineMethod(c$, "clearSmallRingEZ", +function(atoms, lstEZ){ +for (var j = this.data.lstSmallRings.length; --j >= 0; ) this.data.lstSmallRings[j].andNot(this.data.bsAtropisomeric); + +for (var i = lstEZ.size(); --i >= 0; ) { +var ab = lstEZ.get(i); +for (var j = this.data.lstSmallRings.length; --j >= 0; ) { +var ring = this.data.lstSmallRings[j]; +if (ring.get(ab[0]) && ring.get(ab[1])) { +atoms[ab[0]].setCIPChirality(3); +atoms[ab[1]].setCIPChirality(3); +}} +} +}, "~A,JU.Lst"); +Clazz.defineMethod(c$, "getAtomBondChirality", +function(atom, lstEZ, bsToDo){ +var index = atom.getIndex(); +var bonds = atom.getEdges(); +var c = 0; +var isAtropic = this.data.bsAtropisomeric.get(index); +for (var j = bonds.length; --j >= 0; ) { +var bond = bonds[j]; +var atom1; +var index1; +if (isAtropic) { +atom1 = bonds[j].getOtherNode(atom); +index1 = atom1.getIndex(); +if (!this.data.bsAtropisomeric.get(index1)) continue; +c = this.setBondChirality(atom, atom1, atom, atom1, true); +} else if (this.data.getBondOrder(bond) == 2) { +atom1 = this.getLastCumuleneAtom(bond, atom, null, null); +index1 = atom1.getIndex(); +if (index1 < index) continue; +c = this.getBondChiralityLimited(bond, atom); +} else { +continue; +}if (c != 0) { +if (!isAtropic) lstEZ.addLast( Clazz.newIntArray(-1, [index, index1])); +bsToDo.clear(index); +bsToDo.clear(index1); +}if (isAtropic) break; +} +}, "JU.SimpleNode,JU.Lst,JU.BS"); +Clazz.defineMethod(c$, "getLastCumuleneAtom", +function(bond, atom, nSP2, parents){ +var atom2 = bond.getOtherNode(atom); +if (parents != null) { +parents[0] = atom2; +parents[1] = atom; +}if (nSP2 != null) nSP2[0] = 2; +var ppt = 0; +while (true) { +if (atom2.getCovalentBondCount() != 2) return atom2; +var edges = atom2.getEdges(); +for (var i = edges.length; --i >= 0; ) { +var atom3 = (bond = edges[i]).getOtherNode(atom2); +if (atom3 === atom) continue; +if (this.data.getBondOrder(bond) != 2) return atom2; +if (parents != null) { +if (ppt == 0) { +parents[0] = atom2; +ppt = 1; +}parents[1] = atom2; +}if (nSP2 != null) nSP2[0]++; +atom = atom2; +atom2 = atom3; +break; +} +} +}, "JU.SimpleEdge,JU.SimpleNode,~A,~A"); +Clazz.defineMethod(c$, "getAtomChiralityLimited", +function(atom, cipAtom, parentAtom){ +var rs = 0; +this.bsNeedRule.clearAll(); +this.bsNeedRule.set(1); +try { +var isAlkeneEndCheck = (atom == null); +if (isAlkeneEndCheck) { +atom = (this.root = cipAtom).atom; +cipAtom.htPathPoints = (cipAtom.parent = Clazz.innerTypeInstance(JS.CIPChirality.CIPAtom, this, null).create(parentAtom, null, true, false, false)).htPathPoints; +} else { +if (!(this.root = cipAtom = (cipAtom == null ? Clazz.innerTypeInstance(JS.CIPChirality.CIPAtom, this, null).create(atom, null, false, false, false) : cipAtom)).isSP3) { +return 0; +}}if (cipAtom.setNode()) { +for (this.currentRule = 1; this.currentRule <= 9; this.currentRule++) { +var nPrioritiesPrev = cipAtom.nPriorities; +switch (this.currentRule) { +case 3: +if (cipAtom.rule6refIndex >= 0) this.bsNeedRule.set(3); +break; +case 4: +this.isAux = true; +this.doTrack = false; +this.havePseudoAuxiliary = false; +cipAtom.createAuxiliaryDescriptors(null, null); +this.doTrack = this.data.isTracker(); +this.isAux = false; +break; +case 5: +if (!this.bsNeedRule.get(5)) { +this.currentRule = 8; +continue; +}case 6: +case 7: +cipAtom.sortSubstituents(-2147483648); +this.bsNeedRule.set(this.currentRule); +break; +case 8: +if (this.havePseudoAuxiliary) cipAtom.clearRule4Lists(); +cipAtom.sortSubstituents(-2147483648); +this.bsNeedRule.set(this.currentRule); +break; +case 9: +this.bsNeedRule.setBitTo(9, (cipAtom.rule6refIndex < 0 && (rs = cipAtom.getRule6Descriptor(false)) != 0)); +break; +} +if (!this.bsNeedRule.get(this.currentRule)) continue; +if (rs == 0 && cipAtom.sortSubstituents(0)) { +if (JU.Logger.debuggingHigh && cipAtom.h1Count < 2) { +for (var i = 0; i < cipAtom.bondCount; i++) { +if (cipAtom.atoms[i] != null) this.logInfo(cipAtom.atoms[i] + " " + cipAtom.priorities[i]); +} +}if (isAlkeneEndCheck) return cipAtom.getEneTop(); +rs = this.data.checkHandedness(cipAtom); +if (this.currentRule == 8) { +if (cipAtom.nPriorities == 4 && nPrioritiesPrev == 2) cipAtom.isRule5Pseudo = !cipAtom.isRule5Pseudo; +if (cipAtom.isRule5Pseudo) rs |= 8; +}if (JU.Logger.debugging) this.logInfo(atom + " " + JV.JC.getCIPChiralityName(rs) + " by Rule " + this.getRuleName(this.currentRule) + "\n----------------------------------"); +return rs; +}} +}} catch (e) { +System.out.println(e + " in CIPChirality " + this.currentRule); +{ +alert(e); +}return 3; +} +return rs; +}, "JU.SimpleNode,JS.CIPChirality.CIPAtom,JU.SimpleNode"); +Clazz.defineMethod(c$, "getBondChiralityLimited", +function(bond, a){ +if (a == null) a = bond.getOtherNode(null); +if (this.data.couldBeChiralAlkene(a, bond) == -1) return 0; +var nSP2 = Clazz.newIntArray (1, 0); +var parents = new Array(2); +var b = this.getLastCumuleneAtom(bond, a, nSP2, parents); +var isAxial = nSP2[0] % 2 == 1; +if (!isAxial && this.data.bsAromatic.get(a.getIndex())) return -1; +var c = this.setBondChirality(a, parents[0], parents[1], b, isAxial); +if (JU.Logger.debugging) this.logInfo("get Bond Chirality " + JV.JC.getCIPChiralityName(c) + " " + bond); +return c; +}, "JU.SimpleEdge,JU.SimpleNode"); +Clazz.defineMethod(c$, "setBondChirality", +function(a, pa, pb, b, isAxial){ +var a1 = Clazz.innerTypeInstance(JS.CIPChirality.CIPAtom, this, null).create(a, null, true, false, false); +var b2 = Clazz.innerTypeInstance(JS.CIPChirality.CIPAtom, this, null).create(b, null, true, false, false); +var atop = this.getAtomChiralityLimited(null, a1, pa) - 1; +var ruleA = this.currentRule; +var btop = this.getAtomChiralityLimited(null, b2, pb) - 1; +var ruleB = this.currentRule; +if (isAxial && a1.nRootDuplicates > 3 && atop < 0 && btop < 0) { +ruleA = ruleB = this.currentRule = 9; +b2.rule6refIndex = a1.atoms[atop = a1.getEneTop() - 1].atomIndex; +if (b2.sortSubstituents(0)) btop = b2.getEneTop() - 1; +}var c = (atop >= 0 && btop >= 0 ? this.getEneChirality(b2.atoms[btop], b2, a1, a1.atoms[atop], isAxial, true) : 0); +if (c != 0 && (isAxial || !this.data.bsAtropisomeric.get(a.getIndex()) && !this.data.bsAtropisomeric.get(b.getIndex()))) { +if (isAxial == (ruleA == 8) == (ruleB == 8)) c &= -9; + else c |= 8; +a.setCIPChirality(c | ((ruleA - 1) << 5)); +b.setCIPChirality(c | ((ruleB - 1) << 5)); +if (JU.Logger.debugging) this.logInfo(a + "-" + b + " " + JV.JC.getCIPChiralityName(c)); +}return c; +}, "JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,~B"); +Clazz.defineMethod(c$, "getEneChirality", +function(winner1, end1, end2, winner2, isAxial, allowPseudo){ +return (winner1 == null || winner2 == null || winner1.atom == null || winner2.atom == null ? 0 : isAxial ? this.data.isPositiveTorsion(winner1, end1, end2, winner2) : this.data.isCis(winner1, end1, end2, winner2)); +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,~B,~B"); +Clazz.defineMethod(c$, "logInfo", +function(msg){ +JU.Logger.info(msg); +}, "~S"); +c$.$CIPChirality$CIPAtom$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.isRule5Pseudo = true; +this.id = 0; +this.sphere = 0; +this.rootDistance = 0; +this.isSet = false; +this.isDuplicate = true; +this.isTerminal = false; +this.isAlkene = false; +this.atom = null; +this.atomIndex = -1; +this.bondCount = 0; +this.elemNo = 0; +this.mass = -1; +this.parent = null; +this.rootSubstituent = null; +this.h1Count = 0; +this.atoms = null; +this.nAtoms = 0; +this.bsPath = null; +this.myPath = ""; +this.oldPriorities = null; +this.priorities = Clazz.newIntArray (4, 0); +this.oldNPriorities = 0; +this.nPriorities = 0; +this.priority = 0; +this.chiralPath = null; +this.nRootDuplicates = 0; +this.htPathPoints = null; +this.rule6refIndex = -1; +this.bsRule6Subs = null; +this.alkeneParent = null; +this.alkeneChild = null; +this.isAlkeneAtom2 = false; +this.isKekuleAmbiguous = false; +this.nextSP2 = null; +this.multipleBondDuplicate = false; +this.isEvenEne = true; +this.auxEZ = -1; +this.isSP3 = true; +this.auxChirality = '~'; +this.nextChiralBranch = null; +this.isChiralPath = false; +this.rule4Type = 0; +this.bsTemp = null; +this.rule4Ref = 0; +this.listRS = null; +Clazz.instantialize(this, arguments);}, JS.CIPChirality, "CIPAtom", null, [Comparable, Cloneable]); +Clazz.prepareFields (c$, function(){ +this.atoms = new Array(4); +this.bsTemp = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "create", +function(atom, parent, isAlkene, isDuplicate, isParentBond){ +this.id = ++this.b$["JS.CIPChirality"].ptIDLogger; +this.parent = parent; +if (atom == null) return this; +this.isAlkene = isAlkene; +this.atom = atom; +this.atomIndex = atom.getIndex(); +if (atom.getIsotopeNumber() > 0) this.b$["JS.CIPChirality"].bsNeedRule.set(3); +this.isDuplicate = this.multipleBondDuplicate = isDuplicate; +this.isKekuleAmbiguous = (this.b$["JS.CIPChirality"].data.bsKekuleAmbiguous != null && this.b$["JS.CIPChirality"].data.bsKekuleAmbiguous.get(this.atomIndex)); +this.elemNo = (isDuplicate && this.isKekuleAmbiguous ? parent.getKekuleElementNumber() : atom.getElementNumber()); +this.bondCount = atom.getCovalentBondCount(); +this.isSP3 = (this.bondCount == 4 || this.bondCount == 3 && !isAlkene && (this.elemNo > 10 || this.b$["JS.CIPChirality"].data.bsAzacyclic != null && this.b$["JS.CIPChirality"].data.bsAzacyclic.get(this.atomIndex))); +if (parent != null) this.sphere = parent.sphere + 1; +if (this.sphere == 1) { +this.rootSubstituent = this; +} else if (parent != null && parent.htPathPoints != null) { +this.rootSubstituent = parent.rootSubstituent; +this.htPathPoints = (parent.htPathPoints).clone(); +}if (this.htPathPoints == null) this.htPathPoints = new java.util.Hashtable(); +this.bsPath = (parent == null ? new JU.BS() : parent.bsPath.clone()); +if (isDuplicate) this.b$["JS.CIPChirality"].bsNeedRule.set(4); +this.rootDistance = this.sphere; +if (parent == null) { +this.bsPath.set(this.atomIndex); +} else if (this.multipleBondDuplicate) { +this.rootDistance--; +} else if (this.bsPath.get(this.atomIndex)) { +this.b$["JS.CIPChirality"].bsNeedRule.setBitTo(2, (this.isDuplicate = true)); +if ((this.rootDistance = (atom === this.b$["JS.CIPChirality"].root.atom ? 0 : isParentBond ? parent.sphere : this.htPathPoints.get(Integer.$valueOf(this.atomIndex)).intValue())) == 0) { +this.b$["JS.CIPChirality"].root.nRootDuplicates++; +}} else { +this.bsPath.set(this.atomIndex); +this.htPathPoints.put(Integer.$valueOf(this.atomIndex), Integer.$valueOf(this.rootDistance)); +}if (this.b$["JS.CIPChirality"].doTrack) { +if (this.sphere < 50) this.myPath = (parent != null ? parent.myPath + "-" : "") + this; +if (JU.Logger.debuggingHigh) this.b$["JS.CIPChirality"].logInfo("new CIPAtom " + this.myPath); +}return this; +}, "JU.SimpleNode,JS.CIPChirality.CIPAtom,~B,~B,~B"); +Clazz.defineMethod(c$, "getEneTop", +function(){ +return (this.atoms[0].isDuplicate ? 2 : 1); +}); +Clazz.defineMethod(c$, "getRule6Descriptor", +function(isAux){ +if (this.nPriorities > 2 || (isAux ? this.countAuxDuplicates(this.atomIndex) : this.nRootDuplicates) <= 2) return 0; +var i1 = (this.priorities[0] == this.priorities[1] ? 0 : 1); +var i2 = (this.priorities[2] != this.priorities[3] ? 3 : 4); +var istep = (this.priorities[2] == this.priorities[1] ? 1 : 2); +var rsRM = 0; +var rsSP = 0; +var bsSubs = new JU.BS(); +for (var i = i1; i < i2; i++) bsSubs.set(this.atoms[i].atomIndex); + +if (this.nPriorities == 1) i2 = 2; +var cipAtom = null; +var rs; +for (var i = i1; i < i2; i += istep) { +if (this.b$["JS.CIPChirality"].data.testRule6Full) { +cipAtom = Clazz.innerTypeInstance(JS.CIPChirality.CIPAtom, this, null).create(this.atom, null, false, false, false); +cipAtom.rule6refIndex = this.atoms[i].atomIndex; +cipAtom.setNode(); +for (var j = 0; j < 4; j++) { +cipAtom.atoms[j] = this.atoms[j].clone(); +cipAtom.priorities[j] = this.priorities[j]; +} +cipAtom.bsRule6Subs = bsSubs; +rs = this.b$["JS.CIPChirality"].getAtomChiralityLimited(this.atom, cipAtom, null); +this.b$["JS.CIPChirality"].currentRule = 9; +if (rs == 0) return 0; +} else { +this.b$["JS.CIPChirality"].root.bsRule6Subs = new JU.BS(); +this.b$["JS.CIPChirality"].root.rule6refIndex = this.atoms[i].atomIndex; +this.saveRestorePriorities(false); +this.sortSubstituents(-2147483648); +if (!this.sortSubstituents(0)) return 0; +rs = this.b$["JS.CIPChirality"].data.checkHandedness(this); +this.saveRestorePriorities(true); +}if ((rs & 8) == 0) { +if (rs == 1 || rs == 17) { +if (rsRM == 0) { +rsRM = rs; +continue; +}} else if (rsSP == 0) { +rsSP = rs; +continue; +}}return rs; +} +return 0; +}, "~B"); +Clazz.defineMethod(c$, "saveRestorePriorities", +function(isRestore){ +if (isRestore) { +this.priorities = this.oldPriorities; +this.nPriorities = this.oldNPriorities; +} else { +this.oldPriorities = Clazz.newIntArray(-1, [this.priorities[0], this.priorities[1], this.priorities[2], this.priorities[3]]); +this.oldNPriorities = this.nPriorities; +}for (var i = 0; i < this.nAtoms; i++) this.atoms[i].saveRestorePriorities(isRestore); + +}, "~B"); +Clazz.defineMethod(c$, "countAuxDuplicates", +function(index){ +var n = 0; +for (var i = 0; i < 4; i++) { +if (this.atoms[i] == null) continue; +if (this.atoms[i].isDuplicate) { +if (this.atoms[i].atomIndex == index) n++; +} else { +n += this.atoms[i].countAuxDuplicates(index); +}} +return n; +}, "~N"); +Clazz.defineMethod(c$, "getMass", +function(){ +if (this.isDuplicate) return 0; +if (this.mass == -1) { +if (this.isDuplicate || (this.mass = this.atom.getMass()) != Clazz.floatToInt(this.mass) || this.isType(";9Be;19F;23Na;27Al;31P;45Sc;55Mn;59Co;75As;89Y;93Nb;98Tc;103Rh;127I;133Cs;141Pr;145Pm;159Tb;165Ho;169Tm;197Au;209Bi;209Po;210At;222Rn;223Fr;226Ra;227Ac;231Pa;232Th;and all > U (atomno > 92)")) return (this.mass == -1 ? this.mass = JU.Elements.getAtomicMass(Clazz.floatToInt(this.elemNo)) : this.mass); +if (this.isType(";16O;52Cr;96Mo;175Lu;")) this.mass -= 0.1; +}return this.mass; +}); +Clazz.defineMethod(c$, "isType", +function(rule2Type){ +return JU.PT.isOneOf(Clazz.floatToInt(this.mass) + JU.Elements.elementSymbolFromNumber(Clazz.floatToInt(this.elemNo)), rule2Type); +}, "~S"); +Clazz.defineMethod(c$, "getKekuleElementNumber", +function(){ +var edges = this.atom.getEdges(); +var bond; +var ave = 0; +var n = 0; +for (var i = edges.length; --i >= 0; ) if ((bond = edges[i]).isCovalent()) { +var other = bond.getOtherNode(this.atom); +if (this.b$["JS.CIPChirality"].data.bsKekuleAmbiguous.get(other.getIndex())) { +n++; +ave += other.getElementNumber(); +}} +return ave / n; +}); +Clazz.defineMethod(c$, "setNode", +function(){ +if (this.isSet || (this.isSet = true) && this.isDuplicate) return true; +var index = this.atom.getIndex(); +var bonds = this.atom.getEdges(); +var nBonds = bonds.length; +if (JU.Logger.debuggingHigh) this.b$["JS.CIPChirality"].logInfo("set " + this); +var pt = 0; +for (var i = 0; i < nBonds; i++) { +var bond = bonds[i]; +if (!bond.isCovalent()) continue; +var other = bond.getOtherNode(this.atom); +var isParentBond = (this.parent != null && this.parent.atom === other); +var order = this.b$["JS.CIPChirality"].data.getBondOrder(bond); +if (order == 2) { +if (this.elemNo > 10 || !JS.CIPChirality.isFirstRow(other)) order = 1; + else { +this.isAlkene = true; +if (isParentBond) this.setEne(); +}}if (nBonds == 1 && order == 1 && isParentBond) return this.isTerminal = true; +switch (order) { +case 3: +if (this.addAtom(pt++, other, isParentBond, false, isParentBond) == null) return !(this.isTerminal = true); +case 2: +if (this.addAtom(pt++, other, order != 2 || isParentBond, order == 2, isParentBond) == null) return !(this.isTerminal = true); +case 1: +if (isParentBond || this.addAtom(pt++, other, order != 1 && this.elemNo <= 10, false, false) != null) break; +default: +return !(this.isTerminal = true); +} +} +this.nAtoms = pt; +switch (pt) { +case 2: +case 3: +if (this.elemNo == 6 && this.b$["JS.CIPChirality"].data.bsNegativeAromatic.get(index) || this.b$["JS.CIPChirality"].data.bsXAromatic.get(index)) { +this.nAtoms++; +this.addAtom(pt++, this.atom, true, false, false); +}break; +} +this.fillAtoms(pt); +try { +java.util.Arrays.sort(this.atoms); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +return true; +}); +Clazz.defineMethod(c$, "fillAtoms", +function(pt){ +if (pt < 4) for (; pt < this.atoms.length; pt++) if (this.atoms[pt] == null) this.atoms[pt] = Clazz.innerTypeInstance(JS.CIPChirality.CIPAtom, this, null).create(null, this, false, true, false); + +}, "~N"); +Clazz.defineMethod(c$, "setEne", +function(){ +this.parent.alkeneChild = null; +this.alkeneParent = (this.parent.alkeneParent == null ? this.parent : this.parent.alkeneParent); +this.alkeneParent.alkeneChild = this; +this.nextSP2 = this.parent; +if (this.parent.alkeneParent == null) this.parent.nextSP2 = this; +if (this.atom.getCovalentBondCount() == 2 && this.atom.getValence() == 4) { +this.parent.isAlkeneAtom2 = false; +this.alkeneParent.isEvenEne = !this.alkeneParent.isEvenEne; +} else { +this.isAlkeneAtom2 = true; +}}); +Clazz.defineMethod(c$, "addAtom", +function(i, other, isDuplicate, isAlkene, isParentBond){ +if (i >= this.atoms.length) { +if (JU.Logger.debugging) this.b$["JS.CIPChirality"].logInfo(" too many bonds on " + this.atom); +return null; +}if (other.getElementNumber() == 1 && other.getIsotopeNumber() == 0) { +if (++this.h1Count > 1) { +if (this.parent == null) { +if (JU.Logger.debuggingHigh) this.b$["JS.CIPChirality"].logInfo(" second H atom found on " + this.atom); +return null; +}}}return this.atoms[i] = Clazz.innerTypeInstance(JS.CIPChirality.CIPAtom, this, null).create(other, this, isAlkene, isDuplicate, isParentBond); +}, "~N,JU.SimpleNode,~B,~B,~B"); +Clazz.defineMethod(c$, "sortSubstituents", +function(sphere){ +if (this.nPriorities == (sphere < 1 ? 4 : 3)) return true; +var ignoreTies = (sphere == -2147483648); +if (ignoreTies) { +if (this.isTerminal) return false; +switch (this.b$["JS.CIPChirality"].currentRule) { +case 5: +case 7: +for (var i = 0; i < 4; i++) if (this.atoms[i] != null && (this.atoms[i].isChiralPath || this.atoms[i].nextChiralBranch != null)) this.atoms[i].sortSubstituents(-2147483648); + +if (this.isAlkene) return false; +break; +case 9: +for (var i = 0; i < 4; i++) if (this.atoms[i] != null && !this.atoms[i].isDuplicate && this.atoms[i].atom != null && this.atoms[i].setNode()) this.atoms[i].sortSubstituents(-2147483648); + +break; +} +}ignoreTies = new Boolean (ignoreTies | (this.b$["JS.CIPChirality"].currentRule == 6 || this.b$["JS.CIPChirality"].currentRule == 8)).valueOf(); +var indices = Clazz.newIntArray (4, 0); +var newPriorities = Clazz.newIntArray (4, 0); +if (JU.Logger.debuggingHigh && this.h1Count < 2) { +this.b$["JS.CIPChirality"].logInfo(this.b$["JS.CIPChirality"].root + "---sortSubstituents---" + this); +for (var i = 0; i < 4; i++) { +this.b$["JS.CIPChirality"].logInfo(this.b$["JS.CIPChirality"].getRuleName(this.b$["JS.CIPChirality"].currentRule) + ": " + this + "[" + i + "]=" + this.atoms[i].myPath + " " + Integer.toHexString(this.priorities[i])); +} +this.b$["JS.CIPChirality"].logInfo("---" + this.nPriorities); +}var loser; +for (var i = 0; i < 3; i++) { +var a = this.atoms[i]; +var aLoses = a.isDuplicate && this.b$["JS.CIPChirality"].currentRule > 2; +for (var j = i + 1; j < 4; j++) { +var b = this.atoms[loser = j]; +var score = 0; +switch (b.atom == null || this.priorities[i] < this.priorities[j] ? -1 : aLoses || a.atom == null || this.priorities[j] < this.priorities[i] ? 1 : (score = a.checkCurrentRule(b)) != 0 && score != -2147483648 || ignoreTies ? score : this.sign(a.breakTie(b, sphere + 1))) { +case 1: +loser = i; +case -1: +newPriorities[loser]++; +if (this.b$["JS.CIPChirality"].doTrack && score != 0 && (sphere == 0 || ignoreTies)) this.b$["JS.CIPChirality"].data.track(this.b$["JS.CIPChirality"], a, b, 1, score, false); +case -2147483648: +case 0: +indices[loser]++; +continue; +} +} +} +this.bsTemp.clearAll(); +var newAtoms = new Array(4); +for (var i = 0; i < 4; i++) { +var pt = indices[i]; +var a = newAtoms[pt] = this.atoms[i]; +var p = newPriorities[i]; +if (a.atom != null) this.bsTemp.set(p); +a.priority = this.priorities[pt] = p; +} +this.atoms = newAtoms; +this.nPriorities = this.bsTemp.cardinality(); +if (JU.Logger.debuggingHigh && this.atoms[2].atom != null && this.atoms[2].elemNo != 1) { +this.b$["JS.CIPChirality"].logInfo(this.dots() + this.atom + " nPriorities = " + this.nPriorities); +for (var i = 0; i < 4; i++) { +this.b$["JS.CIPChirality"].logInfo(this.dots() + this.myPath + "[" + i + "]=" + this.atoms[i] + " " + this.priorities[i] + " " + Integer.toHexString(this.priorities[i])); +} +this.b$["JS.CIPChirality"].logInfo(this.dots() + "-------" + this.nPriorities); +}return (this.nPriorities == this.bondCount); +}, "~N"); +Clazz.defineMethod(c$, "dots", +function(){ +return ".....................".substring(0, Math.min(20, this.sphere)); +}); +Clazz.defineMethod(c$, "breakTie", +function(b, sphere){ +var finalScore = 0; +while (true) { +if (this.isDuplicate && (this.b$["JS.CIPChirality"].currentRule > 2 || b.isDuplicate && this.atom === b.atom && this.rootDistance == b.rootDistance) || !this.setNode() || !b.setNode() || this.isTerminal && b.isTerminal || this.isDuplicate && b.isDuplicate) break; +if (this.isTerminal != b.isTerminal) { +finalScore = (this.isTerminal ? 1 : -1) * (sphere + (b.isDuplicate || this.isDuplicate ? 0 : 1)); +if (this.b$["JS.CIPChirality"].doTrack) this.b$["JS.CIPChirality"].data.track(this.b$["JS.CIPChirality"], this, b, sphere, finalScore, true); +break; +}var score = (this.b$["JS.CIPChirality"].currentRule > 2 ? 0 : this.unlikeDuplicates(b)); +if (score != 0) { +finalScore = score * (sphere + 1); +if (this.b$["JS.CIPChirality"].doTrack) this.b$["JS.CIPChirality"].data.track(this.b$["JS.CIPChirality"], this, b, sphere, finalScore, false); +break; +}for (var i = 0; i < this.nAtoms; i++) if ((score = this.atoms[i].checkCurrentRule(b.atoms[i])) != 0) { +finalScore = score * (sphere + 1); +if (this.b$["JS.CIPChirality"].doTrack) this.b$["JS.CIPChirality"].data.track(this.b$["JS.CIPChirality"], this.atoms[i], b.atoms[i], sphere, finalScore, false); +break; +} +if (finalScore != 0) { +break; +}this.sortSubstituents(sphere); +b.sortSubstituents(sphere); +for (var i = 0, abs, absScore = 2147483647; i < this.nAtoms; i++) { +if ((score = this.atoms[i].breakTie(b.atoms[i], sphere + 1)) != 0 && (abs = Math.abs(score)) < absScore) { +absScore = abs; +finalScore = score; +}} +break; +} +return finalScore; +}, "JS.CIPChirality.CIPAtom,~N"); +Clazz.overrideMethod(c$, "compareTo", +function(b){ +var score; +return (this.b$["JS.CIPChirality"].root.rule4Ref == 0 ? (b == null ? -1 : (this.atom == null) != (b.atom == null) ? (this.atom == null ? 1 : -1) : (score = this.compareRule1a(b)) != 0 ? score : (score = this.unlikeDuplicates(b)) != 0 ? score : this.isDuplicate ? this.compareRule1b(b) : this.compareRule2(b)) : this.sphere < b.sphere ? -1 : this.sphere > b.sphere ? 1 : this.chiralPath.compareTo(b.chiralPath)); +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "checkCurrentRule", +function(b){ +switch (this.b$["JS.CIPChirality"].currentRule) { +default: +case 1: +return this.compareRule1a(b); +case 2: +return this.compareRule1b(b); +case 3: +return this.compareRule2(b); +case 4: +return this.compareRule3(b); +case 5: +return this.compareRules4ac(b, " sr SR PM"); +case 6: +case 8: +return (this.isTerminal || b.isTerminal ? 0 : this.compareRule4b5(b)); +case 7: +return this.compareRules4ac(b, " s r p m"); +case 9: +return this.compareRule6(b); +} +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "unlikeDuplicates", +function(b){ +return b.isDuplicate == this.isDuplicate ? 0 : this.isDuplicate ? 1 : -1; +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "compareRule1a", +function(b){ +return b.atom == null ? -1 : this.atom == null ? 1 : b.elemNo < this.elemNo ? -1 : b.elemNo > this.elemNo ? 1 : 0; +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "compareRule1b", +function(b){ +return Integer.compare(this.rootDistance, b.rootDistance); +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "compareRule2", +function(b){ +return (this.atomIndex == b.atomIndex ? 0 : this.getMass() > b.getMass() ? -1 : this.mass < b.mass ? 1 : this.b$["JS.CIPChirality"].root.rule6refIndex < 0 ? 0 : !this.b$["JS.CIPChirality"].root.bsRule6Subs.get(this.atomIndex) || !this.b$["JS.CIPChirality"].root.bsRule6Subs.get(b.atomIndex) ? 0 : this.b$["JS.CIPChirality"].root.rule6refIndex == this.atomIndex ? -1 : this.b$["JS.CIPChirality"].root.rule6refIndex == b.atomIndex ? 1 : 0); +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "compareRule3", +function(b){ +return (this.isDuplicate || b.isDuplicate || !this.parent.isAlkeneAtom2 || !b.parent.isAlkeneAtom2 || !this.parent.alkeneParent.isEvenEne || !b.parent.alkeneParent.isEvenEne || this.parent === b.parent ? 0 : this.parent.auxEZ < b.parent.auxEZ ? -1 : 1); +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "compareRules4ac", +function(b, test){ +if (this.isTerminal || this.isDuplicate) return 0; +var isRa = test.indexOf(this.auxChirality); +var isRb = test.indexOf(b.auxChirality); +return (isRa > isRb + 1 ? -1 : isRb > isRa + 1 ? 1 : 0); +}, "JS.CIPChirality.CIPAtom,~S"); +Clazz.defineMethod(c$, "compareRule4b5", +function(b){ +var bsA = this.getBetter4bList(); +var bsB = b.getBetter4bList(); +var best = this.compareLikeUnlike(bsA, bsB); +var score = (best == null ? -2147483648 : best === bsA ? -1 : 1); +if (best != null) { +if (this.b$["JS.CIPChirality"].currentRule == 8) { +if ((this.compareLikeUnlike(this.listRS[2], b.listRS[2]) === this.listRS[2]) == (best === bsA)) this.parent.isRule5Pseudo = !this.parent.isRule5Pseudo; +}if (this.b$["JS.CIPChirality"].doTrack) this.b$["JS.CIPChirality"].data.track(this.b$["JS.CIPChirality"], this, b, 1, score, false); +}return score; +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "compareRule6", +function(b){ +return ((this.atomIndex == this.b$["JS.CIPChirality"].root.rule6refIndex) == (b.atomIndex == this.b$["JS.CIPChirality"].root.rule6refIndex) ? 0 : this.atomIndex == this.b$["JS.CIPChirality"].root.rule6refIndex ? -1 : 1); +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "clearRule4Lists", +function(){ +this.listRS = null; +for (var i = 0; i < 4 && this.atoms[i] != null; i++) this.atoms[i].clearRule4Lists(); + +}); +Clazz.defineMethod(c$, "getBetter4bList", +function(){ +if (this.listRS != null) return this.listRS[this.b$["JS.CIPChirality"].currentRule == 8 ? 1 : 0]; +var bs; +this.listRS = Clazz.newArray(-1, [null, bs = this.rank4bAndRead(null), this.rank4bAndRead(bs)]); +this.b$["JS.CIPChirality"].logInfo("getBest " + this.b$["JS.CIPChirality"].currentRule + " " + this + " " + this.listRS[1] + this.listRS[2] + " " + this.myPath); +bs = this.compareLikeUnlike(this.listRS[1], this.listRS[2]); +return this.listRS[0] = (this.b$["JS.CIPChirality"].currentRule == 8 || bs == null ? this.listRS[1] : bs); +}); +Clazz.defineMethod(c$, "rank4bAndRead", +function(bsR){ +var isS = (bsR != null); +var ref = (isS ? 2 : 1); +var list = new JU.BS(); +var chiralAtoms = new JU.Lst(); +this.b$["JS.CIPChirality"].root.rule4Ref = ref; +this.addChiralAtoms(chiralAtoms, ref); +java.util.Collections.sort(chiralAtoms); +this.b$["JS.CIPChirality"].root.rule4Ref = 0; +for (var i = 0, n = chiralAtoms.size(); i < n; i++) { +if (JU.Logger.debugging) this.b$["JS.CIPChirality"].logInfo("" + ref + " " + this + " " + chiralAtoms.get(i).chiralPath); +if (chiralAtoms.get(i).rule4Type == ref) list.set(i); +} +return list; +}, "JU.BS"); +Clazz.defineMethod(c$, "addChiralAtoms", +function(chiralAtoms, ref){ +if (this.atom == null || this.isTerminal || this.isDuplicate) return; +if (this.rule4Type != 0) { +var s = ""; +var a = this; +while (a != null) { +s = String.fromCharCode(64 + (a.priority << 2) + (a.rule4Type == 0 ? 0 : a.rule4Type == ref ? 1 : 2)) + s; +if ((a = a.parent) != null && a.chiralPath != null) { +s = a.chiralPath + s; +break; +}} +this.chiralPath = s; +chiralAtoms.addLast(this); +}for (var i = 0; i < 4; i++) if (this.atoms[i] != null) this.atoms[i].addChiralAtoms(chiralAtoms, ref); + +}, "JU.Lst,~N"); +Clazz.defineMethod(c$, "compareLikeUnlike", +function(bsA, bsB){ +var bsXOR = bsB.clone(); +bsXOR.xor(bsA); +var l = bsXOR.nextSetBit(0); +return (l < 0 ? null : bsA.get(l) ? bsA : bsB); +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "createAuxiliaryDescriptors", +function(node1, ret){ +var isChiralPath = false; +var c = '~'; +if (this.atom == null) return false; +this.setNode(); +var rs = -1; +var nRS = 0; +var ret1 = new Array(1); +var skipRules4And5 = false; +var prevIsChiral = true; +var allowTwoSame = (!this.isAlkene && this.nPriorities <= (node1 == null ? 2 : 1)); +for (var i = 0; i < 4; i++) { +var a = this.atoms[i]; +if (a != null && !a.isDuplicate && !a.isTerminal) { +ret1[0] = null; +var aIsChiralPath = a.createAuxiliaryDescriptors(node1 == null ? a : node1, ret1); +if (ret1[0] != null && ret != null) ret[0] = this.nextChiralBranch = a.nextChiralBranch; +if (a.nextChiralBranch != null || aIsChiralPath) { +nRS++; +isChiralPath = aIsChiralPath; +prevIsChiral = true; +} else { +if (!allowTwoSame && !prevIsChiral && this.priorities[i] == this.priorities[i - 1]) { +return false; +}prevIsChiral = false; +}}} +var isBranch = (nRS >= 2); +switch (nRS) { +case 0: +isChiralPath = false; +case 1: +skipRules4And5 = true; +break; +case 2: +case 3: +case 4: +isChiralPath = false; +if (ret != null) ret[0] = this.nextChiralBranch = this; +break; +} +if (this.isAlkene) { +if (this.alkeneChild != null) { +if (!this.isEvenEne || (this.auxEZ == 15 || this.auxEZ == -1) && !this.isKekuleAmbiguous && this.alkeneChild.bondCount >= 2) { +var rule2 = (this.isEvenEne ? Clazz.newIntArray (1, 0) : null); +rs = this.getAuxEneWinnerChirality(this, this.alkeneChild, !this.isEvenEne, rule2); +if (rs == 0) { +this.auxEZ = this.alkeneChild.auxEZ = 15; +} else { +isChiralPath = true; +if (rule2 != null && rule2[0] != 8) { +this.auxEZ = this.alkeneChild.auxEZ = rs; +if (JU.Logger.debuggingHigh) this.b$["JS.CIPChirality"].logInfo("alkene type " + this + " " + (this.auxEZ == 14 ? "E" : "Z")); +} else if (!isBranch) { +switch (rs) { +case 17: +case 13: +rs = 1; +c = 'R'; +isChiralPath = true; +break; +case 18: +case 14: +rs = 2; +c = 'S'; +isChiralPath = true; +break; +} +this.auxChirality = c; +this.rule4Type = rs; +}}}}} else if (this.isSP3 && ret != null) { +var atom1 = this.clone(); +if (atom1.setNode()) { +atom1.addReturnPath(null, this); +var rule = 1; +for (; rule <= 9; rule++) if ((!skipRules4And5 || rule < 5 || rule > 8) && atom1.auxSort(rule)) break; + +if (rule > 9) { +c = '~'; +} else { +rs = this.b$["JS.CIPChirality"].data.checkHandedness(atom1); +isChiralPath = new Boolean (isChiralPath | (rs != 0)).valueOf(); +c = (rs == 1 ? 'R' : rs == 2 ? 'S' : '~'); +if (rule == 8) { +c = (c == 'R' ? 'r' : c == 'S' ? 's' : '~'); +if (rs != 0) this.b$["JS.CIPChirality"].havePseudoAuxiliary = true; +} else { +this.rule4Type = rs; +}}}this.auxChirality = c; +}if (node1 == null) this.b$["JS.CIPChirality"].bsNeedRule.setBitTo(5, nRS > 0); +if (c != '~') { +this.b$["JS.CIPChirality"].logInfo("creating aux " + c + " for " + this + (this.myPath.length == 0 ? "" : " = " + this.myPath)); +}return (this.isChiralPath = isChiralPath); +}, "JS.CIPChirality.CIPAtom,~A"); +Clazz.defineMethod(c$, "auxSort", +function(rule){ +var current = this.b$["JS.CIPChirality"].currentRule; +this.b$["JS.CIPChirality"].currentRule = rule; +var rule6ref = this.b$["JS.CIPChirality"].root.rule6refIndex; +var nDup = this.b$["JS.CIPChirality"].root.nRootDuplicates; +var isChiral = (rule == 9 ? this.getRule6Descriptor(true) != 0 : this.sortSubstituents(0)); +this.b$["JS.CIPChirality"].root.nRootDuplicates = nDup; +this.b$["JS.CIPChirality"].root.rule6refIndex = rule6ref; +this.b$["JS.CIPChirality"].currentRule = current; +return isChiral; +}, "~N"); +Clazz.defineMethod(c$, "getAuxEneWinnerChirality", +function(end1, end2, isAxial, retRule2){ +if (isAxial && end1.nextSP2 === end2) return 0; +var winner1 = this.getAuxEneEndWinner(end1, end1.nextSP2, null); +var winner2 = (winner1 == null || winner1.atom == null ? null : this.getAuxEneEndWinner(end2, end2.nextSP2, retRule2)); +if (JU.Logger.debuggingHigh) this.b$["JS.CIPChirality"].logInfo(this + " alkene end winners " + winner1 + winner2); +return this.b$["JS.CIPChirality"].getEneChirality(winner1, end1, end2, winner2, isAxial, false); +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,~B,~A"); +Clazz.defineMethod(c$, "getAuxEneEndWinner", +function(end, prevSP2, retRule){ +var atom1 = end.clone(); +if (atom1.parent !== prevSP2) { +atom1.addReturnPath(prevSP2, end); +}var a; +for (var rule = 1; rule <= 9; rule++) { +if (atom1.auxSort(rule)) { +for (var i = 0; i < 4; i++) { +a = atom1.atoms[i]; +if (!a.multipleBondDuplicate) { +if (atom1.priorities[i] != atom1.priorities[i + 1]) { +if (retRule != null) retRule[0] = rule; +return (a.atom == null ? null : a); +}}} +}} +return null; +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,~A"); +Clazz.defineMethod(c$, "addReturnPath", +function(newParent, fromAtom){ +var path = new JU.Lst(); +var thisAtom = this; +var newSub; +var oldParent = fromAtom; +var oldSub = newParent; +while (oldParent.parent != null && oldParent.parent.atoms[0] != null) { +if (JU.Logger.debuggingHigh) this.b$["JS.CIPChirality"].logInfo("path:" + oldParent.parent + "->" + oldParent); +path.addLast(oldParent = oldParent.parent); +} +if (oldParent.parent != null && newParent != null) path.addLast(oldParent.parent); +path.addLast(null); +for (var i = 0, n = path.size(); i < n; i++) { +oldParent = path.get(i); +newSub = (oldParent == null ? Clazz.innerTypeInstance(JS.CIPChirality.CIPAtom, this, null).create(null, this, thisAtom.isAlkene, true, false) : oldParent.clone()); +newSub.nPriorities = 0; +newSub.sphere = thisAtom.sphere + 1; +if (thisAtom.atoms[0] == null) thisAtom.atoms[0] = oldSub; +thisAtom.replaceParentSubstituent(oldSub, newParent, newSub); +if (i > 0 && thisAtom.isAlkene && !thisAtom.isAlkeneAtom2) { +if (newParent.isAlkeneAtom2) { +if (newParent.alkeneChild == null || newParent.alkeneChild.atom === thisAtom.atom) { +newParent.isAlkeneAtom2 = false; +thisAtom.alkeneParent = newParent; +thisAtom.setEne(); +}}}newParent = thisAtom; +thisAtom = newSub; +oldSub = fromAtom; +fromAtom = oldParent; +} +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "replaceParentSubstituent", +function(oldSub, newParent, newSub){ +for (var i = 0; i < 4; i++) if (this.atoms[i] === oldSub || newParent == null && this.atoms[i].atom == null) { +if (JU.Logger.debuggingHigh) this.b$["JS.CIPChirality"].logInfo("reversed: " + newParent + "->" + this + "->" + newSub); +this.parent = newParent; +this.atoms[i] = newSub; +this.fillAtoms(++i); +java.util.Arrays.sort(this.atoms); +break; +} +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "sign", +function(score){ +return (score < 0 ? -1 : score > 0 ? 1 : 0); +}, "~N"); +Clazz.defineMethod(c$, "clone", +function(){ +var a = null; +try { +a = Clazz.superCall(this, JS.CIPChirality.CIPAtom, "clone", []); +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +} else { +throw e; +} +} +a.id = this.b$["JS.CIPChirality"].ptIDLogger++; +a.atoms = new Array(4); +for (var i = 0; i < 4; i++) a.atoms[i] = this.atoms[i]; + +a.priorities = Clazz.newIntArray (4, 0); +a.htPathPoints = this.htPathPoints; +a.alkeneParent = null; +a.auxEZ = -1; +a.rule4Type = 0; +a.listRS = null; +if (JU.Logger.debuggingHigh) a.myPath = a.toString(); +return a; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +if (this.atom == null) return ""; +if (JU.Logger.debuggingHigh) return ("[" + this.b$["JS.CIPChirality"].currentRule + "." + this.sphere + "," + this.id + "." + (this.isDuplicate ? this.parent.atom : this.atom).getAtomName() + (this.isDuplicate ? "*(" + this.rootDistance + ")" : "") + (this.auxChirality == '~' ? "" : "" + this.auxChirality) + " " + this.elemNo + "]"); +return (this.isDuplicate ? "(" + this.atom.getAtomName() + "." + this.rootDistance + ")" : this.atom.getAtomName()); +}); +/*eoif4*/})(); +}; +c$.ruleNames = Clazz.newArray(-1, ["", "1a", "1b", "2", "3", "4a", "4b", "4c", "5", "6"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/CIPData.js b/config/plugins/visualizations/jmol/static/j2s/JS/CIPData.js new file mode 100755 index 000000000000..af18250ce596 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/CIPData.js @@ -0,0 +1,303 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.BS", "$.V3"], "JS.CIPData", ["JU.Lst", "$.Measure", "$.P4", "JS.CIPChirality", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.testRule6Full = false; +this.vwr = null; +this.atoms = null; +this.bsAtoms = null; +this.bsMolecule = null; +this.bsAromatic = null; +this.bsXAromatic = null; +this.bsNegativeAromatic = null; +this.bsAzacyclic = null; +this.bsAtropisomeric = null; +this.bsHelixM = null; +this.bsHelixP = null; +this.lstSmallRings = null; +this.bsKekuleAmbiguous = null; +this.bsEnes = null; +this.vNorm = null; +this.vTemp = null; +Clazz.instantialize(this, arguments);}, JS, "CIPData", null); +Clazz.prepareFields (c$, function(){ +this.bsXAromatic = new JU.BS(); +this.bsNegativeAromatic = new JU.BS(); +this.bsAtropisomeric = new JU.BS(); +this.bsKekuleAmbiguous = new JU.BS(); +this.bsEnes = new JU.BS(); +this.vNorm = new JU.V3(); +this.vTemp = new JU.V3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "isTracker", +function(){ +return false; +}); +Clazz.defineMethod(c$, "isSmiles", +function(){ +return false; +}); +Clazz.defineMethod(c$, "set", +function(vwr, bsAtoms){ +this.vwr = vwr; +this.atoms = vwr.ms.at; +this.bsAtoms = bsAtoms; +this.bsMolecule = vwr.ms.getMoleculeBitSet(bsAtoms); +this.init(); +return this; +}, "JV.Viewer,JU.BS"); +Clazz.defineMethod(c$, "init", +function(){ +try { +var lstRing = this.match("[r]"); +if (lstRing.isEmpty()) { +this.lstSmallRings = new Array(0); +} else { +this.lstSmallRings = this.getList("*1**1||*1***1||*1****1||*1*****1||*1******1"); +}this.bsAromatic = this.match("a"); +if (!this.bsAromatic.isEmpty()) { +this.bsAtropisomeric = this.match("[!H](.t1:-20,20)a{a(.t2:-20,20)-a}a[!H]"); +this.bsHelixM = this.match("A{a}(.t:-10,-40)a(.t:-10,-40)aaa"); +this.bsHelixP = this.match("A{a}(.t:10,40)a(.t:10,40)aaa"); +this.bsXAromatic = this.match("[r5v3n+0,r5v2o+0]"); +this.bsNegativeAromatic = this.match("[a-]"); +if (!this.match("[n+1,o+1]").isEmpty() && !this.bsXAromatic.isEmpty()) { +this.bsKekuleAmbiguous.or(this.match("a1[n+,o+]a[n,o]a1")); +this.bsKekuleAmbiguous.or(this.match("a1[n+,o+][n,o]aa1")); +}if (!this.bsNegativeAromatic.isEmpty()) this.bsKekuleAmbiguous.or(this.match("a1=a[a-]a=a1")); +var lstR6a = this.getList("a1aaaaa1"); +for (var i = lstR6a.length; --i >= 0; ) { +this.bsKekuleAmbiguous.or(lstR6a[i]); +} +}this.getAzacyclic(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "getList", +function(smarts){ +var level = JU.Logger.getLogLevel(); +JU.Logger.setLogLevel(Math.min(level, 4)); +var list = this.vwr.getSubstructureSetArray(smarts, this.bsMolecule, 2); +JU.Logger.setLogLevel(level); +return list; +}, "~S"); +Clazz.defineMethod(c$, "match", +function(smarts){ +var level = JU.Logger.getLogLevel(); +JU.Logger.setLogLevel(Math.min(level, 4)); +var bs = this.vwr.getSmartsMatch(smarts, this.bsMolecule); +JU.Logger.setLogLevel(level); +return bs; +}, "~S"); +Clazz.defineMethod(c$, "getEneKekule", +function(){ +if (this.bsEnes.cardinality() < 8) return; +var bsAllEnes = this.bsEnes.clone(); +var bsPath = new JU.BS(); +this.bsEnes.andNot(this.bsKekuleAmbiguous); +var bsEneAtom1 = new JU.BS(); +for (var i = this.bsEnes.nextSetBit(0); i >= 0; i = this.bsEnes.nextSetBit(i + 1)) { +bsPath.clearAll(); +bsEneAtom1.clearAll(); +this.checkEne(bsAllEnes, bsPath, -1, i, 2, bsEneAtom1); +} +}); +Clazz.defineMethod(c$, "checkEne", +function(bsAllEnes, bsPath, iLast, iAtom, order, bsEneAtom1){ +if (bsPath.get(iAtom)) return (bsEneAtom1.get(iAtom) == (order == 2) ? iAtom : -1); +bsPath.set(iAtom); +var a = this.atoms[iAtom]; +var isLoop = -1; +var edges = a.getEdges(); +if (order == 2) bsEneAtom1.set(iAtom); +for (var ib = a.getBondCount(); --ib >= 0; ) { +if (this.getBondOrder(edges[ib]) != order) continue; +var b = edges[ib].getOtherNode(a); +var iNext = b.getIndex(); +if (iNext != iLast && bsAllEnes.get(iNext) && (isLoop = this.checkEne(bsAllEnes, bsPath, iAtom, iNext, 3 - order, bsEneAtom1)) >= 0) { +}} +if (isLoop >= 0) { +this.bsKekuleAmbiguous.set(iAtom); +this.bsEnes.clear(iAtom); +}return isLoop == iAtom ? -1 : isLoop; +}, "JU.BS,JU.BS,~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "getAzacyclic", +function(){ +out : for (var i = this.bsAtoms.nextSetBit(0); i >= 0; i = this.bsAtoms.nextSetBit(i + 1)) { +var atom = this.atoms[i]; +if (atom.getElementNumber() != 7 || atom.getCovalentBondCount() != 3 || this.bsKekuleAmbiguous.get(i)) continue; +var edges = atom.getEdges(); +for (var k = edges.length; --k >= 0; ) if (edges[k].getOtherNode(atom).getElementNumber() == 1) continue out; + +var nRings = new JU.Lst(); +for (var j = this.lstSmallRings.length; --j >= 0; ) { +var bsRing = this.lstSmallRings[j]; +if (!bsRing.get(i)) continue; +nRings.addLast(bsRing); +if (j == 0) { +this.addAzacyclicN(i); +continue out; +}} +var nr = nRings.size(); +if (nr < 2) continue; +var bsSubs = new JU.BS(); +var bonds = atom.getEdges(); +for (var b = bonds.length; --b >= 0; ) if (bonds[b].isCovalent()) bsSubs.set(bonds[b].getOtherNode(atom).getIndex()); + +var bsBoth = new JU.BS(); +var bsAll = new JU.BS(); +for (var j = 0; j < nr - 1; j++) { +var bs1 = nRings.get(j); +for (var k = j + 1; k < nr; k++) { +var bs2 = nRings.get(k); +JU.BSUtil.copy2(bs1, bsBoth); +bsBoth.and(bs2); +if (bsBoth.cardinality() > 2) { +JU.BSUtil.copy2(bs1, bsAll); +bsAll.or(bs2); +bsAll.and(bsSubs); +if (bsAll.cardinality() == 3) { +this.addAzacyclicN(i); +continue out; +}}} +} +} +}); +Clazz.defineMethod(c$, "addAzacyclicN", +function(i){ +if (this.bsAzacyclic == null) this.bsAzacyclic = new JU.BS(); +this.bsAzacyclic.set(i); +}, "~N"); +Clazz.defineMethod(c$, "couldBeChiralAtom", +function(a){ +var mustBePlanar = false; +switch (a.getCovalentBondCount()) { +default: +System.out.println("?? too many bonds! " + a); +return false; +case 0: +return false; +case 1: +return false; +case 2: +return a.getElementNumber() == 7; +case 3: +switch (a.getElementNumber()) { +case 7: +if (this.bsAzacyclic != null && this.bsAzacyclic.get(a.getIndex())) break; +return false; +case 6: +mustBePlanar = true; +break; +case 15: +case 16: +case 33: +case 34: +case 51: +case 52: +case 83: +case 84: +break; +case 4: +break; +default: +return false; +} +break; +case 4: +break; +} +var edges = a.getEdges(); +var nH = 0; +var haveDouble = false; +for (var j = edges.length; --j >= 0; ) { +if (mustBePlanar && edges[j].getCovalentOrder() == 2) haveDouble = true; +if (edges[j].getOtherNode(a).getIsotopeNumber() == 1) nH++; +} +return (nH < 2 && (haveDouble || this.isSmiles() || mustBePlanar == Math.abs(this.getTrigonality(a, this.vNorm)) < 0.2)); +}, "JU.SimpleNode"); +Clazz.defineMethod(c$, "couldBeChiralAlkene", +function(a, edge){ +var b = (edge == null ? null : edge.getOtherNode(a)); +switch (a.getCovalentBondCount()) { +default: +return -1; +case 2: +if (a.getElementNumber() != 7) return -1; +break; +case 3: +if (!JS.CIPChirality.isFirstRow(a)) return -1; +break; +} +var bonds = a.getEdges(); +var n = 0; +for (var i = bonds.length; --i >= 0; ) if (this.getBondOrder(bonds[i]) == 2) { +if (++n > 1) return 17; +var other = bonds[i].getOtherNode(a); +if (!JS.CIPChirality.isFirstRow(other)) return -1; +if (b != null && (other !== b || b.getCovalentBondCount() == 1)) { +return -1; +}} +return 13; +}, "JU.SimpleNode,JU.SimpleEdge"); +Clazz.defineMethod(c$, "getTrigonality", +function(a, vNorm){ +var pts = new Array(4); +var bonds = a.getEdges(); +for (var n = bonds.length, i = n, pt = 0; --i >= 0 && pt < 4; ) if (bonds[i].isCovalent()) pts[pt++] = bonds[i].getOtherNode(a).getXYZ(); + +var plane = JU.Measure.getPlaneThroughPoints(pts[0], pts[1], pts[2], vNorm, this.vTemp, new JU.P4()); +return JU.Measure.distanceToPlane(plane, (pts[3] == null ? a.getXYZ() : pts[3])); +}, "JU.SimpleNode,JU.V3"); +Clazz.defineMethod(c$, "isCis", +function(a, b, c, d){ +JU.Measure.getNormalThroughPoints(a.atom.getXYZ(), b.atom.getXYZ(), c.atom.getXYZ(), this.vNorm, this.vTemp); +var vNorm2 = new JU.V3(); +JU.Measure.getNormalThroughPoints(b.atom.getXYZ(), c.atom.getXYZ(), d.atom.getXYZ(), vNorm2, this.vTemp); +return (this.vNorm.dot(vNorm2) > 0 ? 13 : 14); +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "isPositiveTorsion", +function(a, b, c, d){ +var angle = JU.Measure.computeTorsion(a.atom.getXYZ(), b.atom.getXYZ(), c.atom.getXYZ(), d.atom.getXYZ(), true); +return (angle > 0 ? 18 : 17); +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "getBondOrder", +function(bond){ +return bond.getCovalentOrder(); +}, "JU.SimpleEdge"); +Clazz.defineMethod(c$, "setCoord", +function(atom1, atoms){ +return true; +}, "JU.SimpleNode,~A"); +Clazz.defineMethod(c$, "checkHandedness", +function(a){ +var atoms = a.atoms; +if (!this.setCoord(a.atom, atoms)) return 0; +var p0 = (atoms[3].atom == null ? a.atom : atoms[3].atom).getXYZ(); +var p1 = atoms[0].atom.getXYZ(); +var p2 = atoms[1].atom.getXYZ(); +var p3 = atoms[2].atom.getXYZ(); +JU.Measure.getNormalThroughPoints(p1, p2, p3, this.vNorm, this.vTemp); +this.vTemp.setT(p0); +this.vTemp.sub(p1); +return (this.vTemp.dot(this.vNorm) > 0 ? 1 : 2); +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "track", +function(cip, a, b, sphere, finalScore, trackTerminal){ +}, "JS.CIPChirality,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,~N,~N,~B"); +Clazz.defineMethod(c$, "getRootTrackerResult", +function(root){ +return null; +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "setRule6Full", +function(rrrr){ +this.testRule6Full = rrrr; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/CIPDataSmiles.js b/config/plugins/visualizations/jmol/static/j2s/JS/CIPDataSmiles.js new file mode 100755 index 000000000000..09dbd87bb3fe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/CIPDataSmiles.js @@ -0,0 +1,112 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.CIPData"], "JS.CIPDataSmiles", ["JU.Lst", "$.Measure", "JU.BSUtil"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.smiles = null; +this.nodes = null; +Clazz.instantialize(this, arguments);}, JS, "CIPDataSmiles", JS.CIPData); +Clazz.prepareFields (c$, function(){ +this.nodes = new Array(6); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.CIPDataSmiles, []); +}); +Clazz.overrideMethod(c$, "isSmiles", +function(){ +return true; +}); +Clazz.defineMethod(c$, "setAtomsForSmiles", +function(vwr, smiles){ +this.vwr = vwr; +this.smiles = smiles; +this.atoms = vwr.getSmilesAtoms(smiles); +this.bsAtoms = JU.BSUtil.newBitSet2(0, this.atoms.length); +this.bsMolecule = this.bsAtoms.clone(); +this.init(); +return this; +}, "JV.Viewer,~S"); +Clazz.overrideMethod(c$, "getList", +function(smarts){ +return this.vwr.getSubstructureSetArrayForNodes(smarts, this.atoms, 2); +}, "~S"); +Clazz.overrideMethod(c$, "match", +function(smarts){ +return this.vwr.getSmartsMatchForNodes(smarts, this.atoms); +}, "~S"); +Clazz.overrideMethod(c$, "getBondOrder", +function(bond){ +return (bond).getRealCovalentOrder(); +}, "JU.SimpleEdge"); +Clazz.overrideMethod(c$, "isCis", +function(a, b, c, d){ +var stereo1 = this.getStereoEdge(b.atom, a.atom); +var stereo2 = this.getStereoEdge(c.atom, d.atom); +return (stereo1 == 0 || stereo2 == 0 ? 0 : stereo1 != stereo2 ? 14 : 13); +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "getStereoEdge", +function(atom, winner){ +var edges = atom.getEdges(); +var order = 0; +for (var i = edges.length; --i >= 0; ) { +var edge = edges[i]; +switch (order = edge.getCovalentOrder()) { +case 1025: +return (edge.getOtherNode(atom) === winner) == (edge.getAtom1() === atom) ? 1041 : order; +case 1041: +return (edges[i].getOtherNode(atom) === winner) == (edge.getAtom1() === atom) ? 1025 : order; +} +} +return 0; +}, "JU.SimpleNode,JU.SimpleNode"); +Clazz.overrideMethod(c$, "isPositiveTorsion", +function(a, b, c, d){ +var center = this.findCumulativeCenter(b, c); +if (center == null) return 0; +var jn = center.stereo.getAlleneAtoms(false, null, center, b.atom); +if (jn == null) return 0; +center.stereo.setTopoCoordinates(center, null, null, jn, false); +var angle = JU.Measure.computeTorsion(jn[0].getXYZ(), jn[1].getXYZ(), jn[2].getXYZ(), jn[3].getXYZ(), true); +return ((angle > 0) == ((a.atom.getIndex() == jn[0].getIndex()) && (d.atom.getIndex() == jn[3].getIndex()) || (a.atom.getIndex() == jn[1].getIndex()) && (d.atom.getIndex() == jn[2].getIndex())) ? 18 : 17); +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "findCumulativeCenter", +function(a, a2){ +var center = a.atom; +var c = null; +var b = null; +while (center != null && center !== a2.atom) { +var edges = center.getEdges(); +for (var i = edges.length; --i >= 0; ) { +if (edges[i].getCovalentOrder() == 2 && (c = edges[i].getOtherNode(center)) !== b) { +var sa = c; +if (sa.stereo != null) { +return sa; +}}} +b = center; +center = c; +} +return null; +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); +Clazz.overrideMethod(c$, "setCoord", +function(atom, atoms){ +var a = atom; +if (a.stereo == null) return false; +var edges = a.getEdges(); +for (var i = edges.length; --i >= 0; ) this.nodes[i] = edges[i].getOtherNode(a); + +a.stereo.setTopoCoordinates(a, null, null, this.nodes, false); +return true; +}, "JU.SimpleNode,~A"); +Clazz.defineMethod(c$, "getSmilesChiralityArray", +function(){ +var chirality = new JU.Lst(); +for (var i = 0; i < this.atoms.length; i++) { +var a = this.atoms[i]; +var pt = a.getPatternIndex(); +if (pt >= 0) { +var c = a.getCIPChirality(false); +chirality.addLast(c); +}} +return chirality.toArray( new Array(chirality.size())); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/CIPDataTracker.js b/config/plugins/visualizations/jmol/static/j2s/JS/CIPDataTracker.js new file mode 100755 index 000000000000..f32a0ca2e95e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/CIPDataTracker.js @@ -0,0 +1,106 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.CIPData", "java.util.Hashtable"], "JS.CIPDataTracker", ["JU.BS", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.htTracker = null; +if (!Clazz.isClassDefined("JS.CIPDataTracker.CIPTracker")) { +JS.CIPDataTracker.$CIPDataTracker$CIPTracker$ (); +} +this.lastIndex = -1; +this.lastInfo = null; +Clazz.instantialize(this, arguments);}, JS, "CIPDataTracker", JS.CIPData); +Clazz.prepareFields (c$, function(){ +this.htTracker = new java.util.Hashtable(); +}); +Clazz.overrideMethod(c$, "isTracker", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "track", +function(cip, a, b, sphere, finalScore, trackTerminal){ +if (a == null || b == null || a.rootSubstituent === b.rootSubstituent) return; +var t; +var a1; +var b1; +if (finalScore > 0) { +a1 = b; +b1 = a; +} else { +a1 = a; +b1 = b; +}t = Clazz.innerTypeInstance(JS.CIPDataTracker.CIPTracker, this, null, cip.currentRule, a1, b1, sphere, Math.abs(finalScore), trackTerminal); +this.htTracker.put(JS.CIPDataTracker.getTrackerKey(cip.root, a1, b1), t); +}, "JS.CIPChirality,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,~N,~N,~B"); +Clazz.overrideMethod(c$, "getRootTrackerResult", +function(root){ +var s = ""; +for (var i = 0; i < 3; i++) { +s += "\t" + root.atoms[i] + "\t--------------\n"; +var t = this.htTracker.get(JS.CIPDataTracker.getTrackerKey(root, root.atoms[i], root.atoms[i + 1])); +if (t != null) { +var n = Math.max(t.bsa.length(), t.bsb.length()); +s += t.getTrackerLine(t.a, t.bsa, (t.rule == 8 ? t.a.listRS[2] : null), n); +s += "\t " + JV.JC.getCIPRuleName(t.rule) + "\n"; +s += t.getTrackerLine(t.b, t.bsb, (t.rule == 8 ? t.b.listRS[2] : null), n); +}} +s += "\t" + root.atoms[3] + "\t--------------\n"; +System.out.println(root + "\n\n" + s); +this.setCIPInfo(s, root.atom.getIndex(), root.atom.getAtomName()); +return s; +}, "JS.CIPChirality.CIPAtom"); +Clazz.defineMethod(c$, "setCIPInfo", +function(s, index, name){ +var modelInfo = this.getModelAuxiliaryInfoForAtom(index); +if (modelInfo != null) { +var cipInfo = modelInfo.get("CIPInfo"); +if (cipInfo == null) modelInfo.put("CIPInfo", cipInfo = new java.util.Hashtable()); +cipInfo.put(name, s); +}}, "~S,~N,~S"); +Clazz.defineMethod(c$, "getModelAuxiliaryInfoForAtom", +function(index){ +return (index == this.lastIndex ? this.lastInfo : (this.lastInfo = this.vwr.ms.getModelAuxiliaryInfo(this.vwr.ms.at[this.lastIndex = index].getModelIndex()))); +}, "~N"); +c$.getTrackerKey = Clazz.defineMethod(c$, "getTrackerKey", +function(root, a, b){ +return (b.rootSubstituent == null ? "" : root.atom.getAtomName() + "." + a.rootSubstituent.atom.getAtomName() + "-" + b.rootSubstituent.atom.getAtomName()); +}, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); +c$.$CIPDataTracker$CIPTracker$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.a = null; +this.b = null; +this.sphere = 0; +this.score = 0; +this.rule = 0; +this.bsa = null; +this.bsb = null; +this.trackTerminal = false; +Clazz.instantialize(this, arguments);}, JS.CIPDataTracker, "CIPTracker", null); +Clazz.makeConstructor(c$, +function(rule, a, b, sphere, score, trackTerminal){ +this.rule = rule; +this.a = a; +this.b = b; +this.sphere = sphere; +this.score = score; +this.trackTerminal = trackTerminal; +this.bsa = a.listRS == null ? new JU.BS() : a.listRS[0]; +this.bsb = b.listRS == null ? new JU.BS() : b.listRS[0]; +}, "~N,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,~N,~N,~B"); +Clazz.defineMethod(c$, "getTrackerLine", +function(b, bsb, bsS, n){ +return "\t\t" + b.myPath + (!this.trackTerminal ? "" : b.isTerminal ? "-o" : "-" + b.atoms[0].atom.getAtomName()) + (this.rule != 8 && bsb.length() == 0 ? "" : "\t" + this.getLikeUnlike(bsb, b.listRS, n) + (bsS == null ? "" : " " + this.getLikeUnlike(bsS, b.listRS, -n))) + "\n"; +}, "JS.CIPChirality.CIPAtom,JU.BS,JU.BS,~N"); +Clazz.defineMethod(c$, "getLikeUnlike", +function(bsa, listRS, n){ +if (this.rule != 8 && this.rule != 6) return ""; +var s = (n > 0 && (this.rule == 8 || bsa === listRS[1]) ? "(R)" : "(S)"); +n = Math.abs(n); +for (var i = 0; i < n; i++) s += (bsa.get(i) ? "l" : "u"); + +return s; +}, "JU.BS,~A,~N"); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Cell.js b/config/plugins/visualizations/jmol/static/j2s/JS/Cell.js new file mode 100755 index 000000000000..d43dca0987a6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Cell.js @@ -0,0 +1,23 @@ +Clazz.declarePackage("JS"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.component = null; +this.colspan = 0; +this.rowspan = 0; +this.textAlign = 0; +this.c = null; +Clazz.instantialize(this, arguments);}, JS, "Cell", null); +Clazz.makeConstructor(c$, +function(btn, c){ +this.component = btn; +this.colspan = c.gridwidth; +this.rowspan = c.gridheight; +this.c = c; +}, "JS.JComponent,JS.GridBagConstraints"); +Clazz.defineMethod(c$, "toHTML", +function(id){ +var style = this.c.getStyle(false); +return "" + this.component.toHTML() + ""; +}, "~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/CmdExt.js b/config/plugins/visualizations/jmol/static/j2s/JS/CmdExt.js new file mode 100755 index 000000000000..21a5281b787f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/CmdExt.js @@ -0,0 +1,4955 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.ScriptExt"], "JS.CmdExt", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Base64", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.c.STER", "$.VDW", "J.i18n.GT", "JM.AtomCollection", "$.LabelToken", "$.Measurement", "$.Text", "JS.SV", "$.ScriptCompiler", "$.ScriptError", "$.ScriptEval", "$.ScriptInterruption", "$.ScriptMathProcessor", "$.T", "JU.BSUtil", "$.BoxInfo", "$.C", "$.Edge", "$.Elements", "$.Escape", "$.Logger", "$.Parser", "$.Point3fi", "$.SimpleUnitCell", "JV.FileManager", "$.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz.declareType(JS, "CmdExt", JS.ScriptExt); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.CmdExt, []); +}); +Clazz.overrideMethod(c$, "dispatch", +function(iTok, flag, st){ +this.chk = this.e.chk; +this.slen = this.e.slen; +this.st = st; +switch (iTok) { +case 1073741866: +st[0].value = this.prepareBinaryOutput(st[0]); +return null; +case 4098: +this.assign(false); +break; +case 134221829: +this.cache(); +break; +case 4102: +this.calculate(); +break; +case 4103: +this.capture(); +break; +case 4105: +this.centerAt(); +break; +case 134221831: +this.compare(); +break; +case 528395: +this.console(); +break; +case 4106: +this.connect(1); +break; +case 1094717448: +this.configuration(); +break; +case 134221834: +this.data(); +break; +case 1613238294: +this.connect(0); +break; +case 4120: +this.image(); +break; +case 4122: +this.invertSelected(); +break; +case 4124: +this.macro(); +break; +case 4125: +this.mapProperty(); +break; +case 4126: +this.minimize(false); +break; +case 603983903: +this.modelkit(); +break; +case 1275072532: +this.modulation(); +break; +case 4130: +this.mutate(); +break; +case 4131: +this.navigate(); +break; +case 4133: +case 134221850: +case 4138: +this.plot(st); +break; +case 134222350: +this.show(); +break; +case 528443: +this.stereo(); +break; +case 1814695966: +this.unitcell(flag ? 2 : 1, false); +break; +case 134221856: +return this.write(flag ? st : null); +case 6: +this.measure(); +break; +case 21: +this.polyhedra(); +break; +case 20: +this.ellipsoid(); +break; +case 4: +this.struts(); +break; +} +return null; +}, "~N,~B,~A"); +Clazz.defineMethod(c$, "macro", +function(){ +if (this.chk) return; +var key = this.e.optParameterAsString(1); +if (key.length == 0) { +this.showString(this.vwr.getMacro(null)); +return; +}var macro = this.vwr.getMacro(key); +if (macro == null) { +this.showString("macro " + key + " could not be found. Current macros include:\n" + this.vwr.getMacro(null)); +return; +}this.showString("running " + macro); +this.e.cmdScript(4124, macro, null, null); +}); +Clazz.defineMethod(c$, "evalParallel", +function(context, shapeManager){ +this.chk = this.e.chk; +this.slen = this.e.slen; +var se = new JS.ScriptEval().setViewer(this.vwr); +se.historyDisabled = true; +se.compiler = new JS.ScriptCompiler(this.vwr); +se.sm = shapeManager; +try { +se.restoreScriptContext(context, true, false, false); +se.setAllowJSThreads(false); +se.dispatchCommands(false, false, false); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.vwr.setStringProperty("_errormessage", "" + ex); +if (se.thisContext == null) { +JU.Logger.error("Error evaluating context " + ex); +ex.printStackTrace(); +}return false; +} else { +throw ex; +} +} +return true; +}, "JS.ScriptContext,JV.ShapeManager"); +Clazz.defineMethod(c$, "getBitsetIdent", +function(bs, label, tokenValue, useAtomMap, index, isExplicitlyAll){ +return this.getBitsetIdentFull(bs, label, useAtomMap, index, isExplicitlyAll, null); +}, "JU.BS,~S,~O,~B,~N,~B"); +Clazz.defineMethod(c$, "getBitsetIdentFull", +function(bs, label, useAtomMap, index, isExplicitlyAll, sout){ +var isAtoms = !(Clazz.instanceOf(bs,"JM.BondSet")); +if (isAtoms) { +if (label == null) label = this.vwr.getStandardLabelFormat(0); + else if (label.length == 0) label = "%[label]"; +} else { +if (label != null && label.length == 0) { +label = "[%a1 #%i1] %4.3LENGTH [%a2 #%i2] #%#"; +} else if ("%U".equals(label)) { +label = ""; +}}var pt = (label == null ? -1 : label.indexOf("%")); +var haveIndex = (index != 2147483647); +if (bs == null || this.chk || isAtoms && pt < 0) { +if (label == null) label = ""; +return isExplicitlyAll ? Clazz.newArray(-1, [label]) : label; +}var modelSet = this.vwr.ms; +var n = 0; +if (JS.CmdExt.labeler == null) JS.CmdExt.labeler = modelSet.getLabeler(); +var indices = (isAtoms || !useAtomMap ? null : (bs).getAssociatedAtoms(modelSet)); +var asIdentity = (label == null || label.length == 0); +var htValues = (isAtoms || asIdentity ? null : JS.CmdExt.labeler.getBondLabelValues()); +var tokens = (asIdentity ? null : isAtoms ? JS.CmdExt.labeler.compile(this.vwr, label, '\0', null) : JS.CmdExt.labeler.compile(this.vwr, label, '\1', htValues)); +var nmax = (haveIndex ? 1 : bs.cardinality()); +var haveSout = (sout != null); +if (!haveSout) sout = new Array(nmax); +var ptTemp = new JU.P3(); +for (var j = (haveIndex ? index : bs.nextSetBit(0)); j >= 0; j = bs.nextSetBit(j + 1)) { +var str; +if (isAtoms) { +str = (asIdentity ? modelSet.at[j].getInfo() : JS.CmdExt.labeler.formatLabelAtomArray(this.vwr, modelSet.at[j], tokens, '\0', indices, ptTemp)); +} else { +var bond = modelSet.bo[j]; +str = (asIdentity ? bond.getIdentity() : JS.CmdExt.labeler.formatLabelBond(this.vwr, bond, tokens, htValues, indices, ptTemp)); +}str = JU.PT.formatStringI(str, "#", (n + 1)); +sout[haveSout ? j : n] = str; +n++; +if (haveIndex) break; +} +return nmax == 1 && !isExplicitlyAll ? sout[0] : sout; +}, "JU.BS,~S,~B,~N,~B,~A"); +Clazz.defineMethod(c$, "getLoadSymmetryParams", +function(i, sOptions, htParams){ +var eval = this.e; +this.chk = eval.chk; +this.slen = eval.slen; +var isEmptyLoad = false; +var lattice = null; +var tok = this.tokAt(i); +if (tok == 1073742332 || tok == 8) { +lattice = eval.getFractionalPoint(i); +tok = this.tokAt(i = eval.iToken + 1); +}switch (tok) { +case 134217764: +isEmptyLoad = (htParams.get("isEmptyLoad") === Boolean.TRUE); +case 1073741938: +case 1073742080: +case 1094713350: +case 1073742163: +case 1073742114: +case 1814695966: +if (lattice == null) lattice = JU.P3.new3(555, 555, -1); +eval.iToken = i - 1; +break; +} +var offset = null; +if (lattice != null) { +htParams.put("lattice", lattice); +i = eval.iToken + 1; +sOptions.append(" " + JU.SimpleUnitCell.escapeMultiplier(lattice)); +i = this.checkPacked(i, 0, htParams, sOptions); +if (this.tokAt(i) == 1094713350) { +htParams.put("centroid", Boolean.TRUE); +sOptions.append(" CENTROID"); +var ptok = 0; +if (this.isFloatParameter(i + 1)) { +--i; +ptok = 1073742080; +}i = this.checkPacked(++i, ptok, htParams, sOptions); +}if (this.tokAt(i) == 1073742163) { +var supercell; +sOptions.append(" SUPERCELL "); +if (eval.isPoint3f(++i)) { +var pt = this.getPoint3f(i, false); +if (pt.x != Clazz.floatToInt(pt.x) || pt.y != Clazz.floatToInt(pt.y) || pt.z != Clazz.floatToInt(pt.z) || pt.x < 1 || pt.y < 1 || pt.z < 1) { +eval.iToken = i; +this.invArg(); +}supercell = pt; +i = eval.iToken; +} else { +supercell = this.stringParameter(i); +}sOptions.append(JU.Escape.e(supercell)); +htParams.put("supercell", supercell); +i = this.checkPacked(++i, 0, htParams, sOptions); +}var distance = 0; +if (this.tokAt(i) == 1073742114) { +i++; +distance = this.floatParameter(i++); +sOptions.append(" range " + distance); +}htParams.put("symmetryRange", Float.$valueOf(distance)); +var spacegroup = null; +var sg; +var iGroup = -2147483648; +if (this.tokAt(i) == 134217764) { +++i; +spacegroup = JU.PT.rep(this.paramAsStr(i++), "''", "\""); +sOptions.append(" spacegroup " + JU.PT.esc(spacegroup)); +if (spacegroup.equalsIgnoreCase("ignoreOperators")) { +iGroup = -999; +} else { +if (spacegroup.length == 0) { +sg = this.vwr.getCurrentUnitCell(); +if (sg != null) spacegroup = sg.getSpaceGroupName(); +} else { +if (spacegroup.indexOf(",") >= 0) if ((lattice.x < 9 && lattice.y < 9 && lattice.z == 0)) spacegroup += "#doNormalize=0"; +}htParams.put("spaceGroupName", spacegroup); +iGroup = -2; +}}var fparams = null; +if (this.tokAt(i) == 1814695966) { +++i; +var s = eval.optParameterAsString(i); +if (s.length == 0) { +sg = this.vwr.getCurrentUnitCell(); +if (sg != null) { +fparams = sg.getUnitCellAsArray(true); +offset = sg.getCartesianOffset(); +}} else { +if (this.tokAt(i) == 4) { +fparams = Clazz.newFloatArray (6, 0); +JU.SimpleUnitCell.setAbc(s, fparams, null); +} else { +fparams = eval.floatParameterSet(i, 6, 9); +}}if (fparams == null || fparams.length != 6 && fparams.length != 9) this.invArg(); +sOptions.append(" unitcell ["); +for (var j = 0; j < fparams.length; j++) sOptions.append((j == 0 ? "" : " ") + fparams[j]); + +sOptions.append("]"); +htParams.put("unitcell", fparams); +if (iGroup == -2147483648) iGroup = -1; +i = eval.iToken + 1; +}if (iGroup != -2147483648) htParams.put("spaceGroupIndex", Integer.$valueOf(iGroup)); +if (isEmptyLoad && fparams == null && spacegroup != null && (iGroup = JU.PT.parseInt(spacegroup)) != -2147483648) { +}}var areFractional = false; +if (offset == null && this.tokAt(i) == 1073742066) { +offset = this.getPoint3f(++i, true); +areFractional = eval.coordinatesAreFractional; +}if (offset != null) { +if (areFractional) { +offset.setT(eval.fractionalPoint); +htParams.put("unitCellOffsetFractional", (areFractional ? Boolean.TRUE : Boolean.FALSE)); +sOptions.append(" offset {" + offset.x + " " + offset.y + " " + offset.z + "/1}"); +} else { +sOptions.append(" offset " + JU.Escape.eP(offset)); +}htParams.put("unitCellOffset", offset); +i = eval.iToken + 1; +}return i; +}, "~N,JU.SB,java.util.Map"); +Clazz.defineMethod(c$, "checkPacked", +function(i, tok, htParams, sOptions){ +if (tok == 0) tok = this.tokAt(i); +switch (tok) { +case 1073741938: +htParams.put("packed", Boolean.TRUE); +var oabc = null; +tok = this.tokAt(++i); +switch (tok) { +case 1812599299: +case 1814695966: +case 4: +break; +default: +if (this.e.isArrayParameter(i)) { +oabc = this.e.getPointArray(i, -1, false); +i = this.e.iToken; +} else if (this.isFloatParameter(i)) { +var d = this.floatParameter(i); +oabc = Clazz.newArray(-1, [ new JU.P3(), JU.P3.new3(d, d, d)]); +} else { +oabc = new Array(0); +--i; +}} +i++; +if (this.e.chk) return i; +switch (tok) { +case 4: +i--; +case 1814695966: +var type = this.e.optParameterAsString(i++).toLowerCase(); +if (JU.PT.isOneOf(type, ";conventional;primitive;rhombohedral;trigonal;") || type.indexOf(",") >= 0 && (type.indexOf("a") >= 0 && type.indexOf("b") >= 0 && type.indexOf("c") >= 0)) { +htParams.put("fillRange", type); +sOptions.append(" FILL UNITCELL \"" + type + "\""); +return i; +}var unitCell = this.vwr.getCurrentUnitCell(); +if (unitCell != null) { +oabc = JU.BoxInfo.toOABC(unitCell.getUnitCellVerticesNoOffset(), unitCell.getCartesianOffset()); +break; +}case 1812599299: +oabc = JU.BoxInfo.toOABC(this.vwr.ms.getBBoxVertices(), null); +break; +} +switch (oabc.length) { +case 2: +var a = oabc[1]; +oabc = Clazz.newArray(-1, [oabc[0], JU.P3.newP(oabc[0]), new JU.P3(), new JU.P3()]); +oabc[1].x = a.x; +oabc[2].y = a.y; +oabc[3].z = a.z; +break; +case 3: +oabc = Clazz.newArray(-1, [ new JU.P3(), oabc[0], oabc[1], oabc[2]]); +break; +case 4: +break; +default: +oabc = Clazz.newArray(-1, [ new JU.P3(), JU.P3.new3(10, 0, 0), JU.P3.new3(0, 10, 0), JU.P3.new3(0, 0, 10)]); +} +htParams.put("fillRange", oabc); +sOptions.append(" FILL [" + oabc[0] + oabc[1] + oabc[2] + oabc[3] + "]"); +break; +case 1073742080: +var f = NaN; +if (this.isFloatParameter(++i)) f = this.floatParameter(i++); +if (!this.e.chk) { +htParams.put("packed", Boolean.TRUE); +sOptions.append(" PACKED"); +if (!Float.isNaN(f)) { +htParams.put("packingRange", Float.$valueOf(f)); +sOptions.append(" " + f); +}}break; +} +return i; +}, "~N,~N,java.util.Map,JU.SB"); +Clazz.defineMethod(c$, "cache", +function(){ +var tok = this.tokAt(1); +var fileName = null; +var n = 2; +switch (tok) { +case 1275069441: +case 1073742119: +fileName = this.e.optParameterAsString(n++); +case 1073741882: +this.checkLength(n); +if (!this.chk) { +if ("all".equals(fileName)) fileName = null; +var nBytes = this.vwr.cacheFileByName(fileName, tok == 1275069441); +this.showString(nBytes < 0 ? "cache cleared" : nBytes + " bytes " + (tok == 1275069441 ? " cached" : " removed")); +}break; +default: +this.invArg(); +} +}); +Clazz.defineMethod(c$, "calculate", +function(){ +var isSurface = false; +var asDSSP = false; +var bs1 = null; +var bs2 = null; +var e = this.e; +var n = -2147483648; +var version = -1; +if ((e.iToken = e.slen) >= 2) { +e.clearDefinedVariableAtomSets(); +switch (this.getToken(1).tok) { +case 2: +if (this.intParameter(1) != 3 || !this.paramAsStr(2).equalsIgnoreCase("D")) { +break; +}if (this.vwr.am.cmi < 0) e.errorStr(30, "calculate 3D"); +var cmd = "load append $ filter '2D';select visible;center selected"; +if (e.optParameterAsString(3).equalsIgnoreCase("ZAP")) { +cmd += ";zap modelIndex=" + Math.max(this.vwr.am.cmi, 0); +}if (!this.chk) e.runScript(cmd); +return; +case 1073741824: +this.checkLength(2); +break; +case 134217764: +e.iToken = 1; +bs1 = (this.slen == 2 ? null : this.atomExpressionAt(2)); +e.checkLast(e.iToken); +if (!this.chk) e.showString("" + this.vwr.findSpaceGroup(null, bs1, null, null, null, null, 1)); +return; +case 1086324752: +e.iToken = 1; +bs1 = (this.slen == 2 ? null : this.atomExpressionAt(2)); +e.checkLast(e.iToken); +if (!this.chk) e.showString(this.vwr.calculateChirality(bs1)); +return; +case 1631586315: +this.checkLength(2); +if (this.chk) return; +n = this.vwr.calculateFormalCharges(null); +this.showString(J.i18n.GT.i(J.i18n.GT.$("{0} charges modified"), n)); +return; +case 1075838996: +this.checkLength(2); +if (!this.chk) this.vwr.ms.assignAromaticBondsBs(true, null); +return; +case 1613238294: +if (e.slen != 2) { +asDSSP = (this.tokAt(++e.iToken) == 1639976963); +if (asDSSP) bs1 = this.vwr.bsA(); + else bs1 = this.atomExpressionAt(e.iToken); +if (!asDSSP && !(asDSSP = (this.tokAt(++e.iToken) == 1639976963))) bs2 = this.atomExpressionAt(e.iToken); +}if (this.chk) return; +n = this.vwr.autoHbond(bs1, bs2, false); +if (n != -2147483648) e.report(J.i18n.GT.i(J.i18n.GT.$("{0} hydrogen bonds"), Math.abs(n)), false); +return; +case 1612709900: +var itok = this.tokAt(2); +var andBond = (itok == 1073742335); +if (andBond) { +e.iToken++; +} else if (itok == 528443) { +e.iToken++; +}bs1 = (this.slen == e.iToken + 1 ? null : this.atomExpressionAt(e.iToken + 1)); +if (bs1 == null && itok == 528443) { +bs1 = this.vwr.getAtomBitSet("_C & connected(3) & !connected(double)"); +}e.checkLast(e.iToken); +if (!this.chk) { +this.vwr.addHydrogens(bs1, 0); +if (andBond) { +if (bs1 == null) bs1 = this.vwr.bsA(); +this.vwr.makeConnections(0.1, 1e8, 515, 1073742025, bs1, bs1, null, false, false, 0); +this.vwr.ms.assignAromaticBondsBs(true, null); +}}return; +case 1111492619: +e.iToken = 1; +bs1 = (this.slen == 2 ? null : this.atomExpressionAt(2)); +e.checkLast(e.iToken); +if (!this.chk) e.getPartialCharges(bs1); +return; +case 1088421903: +case 1275068447: +if (!this.chk) { +if (this.tokAt(2) == 1275203608) { +var id = (this.tokAt(3) == 4 ? this.stringParameter(3) : null); +bs1 = (id != null || this.slen == 3 ? null : this.atomExpressionAt(3)); +var data = Clazz.newArray(-1, [id, null, bs1]); +this.showString(e.getShapePropertyData(21, "symmetry", data) ? data[1] : ""); +} else { +bs1 = (this.slen == 2 ? this.vwr.bsA() : this.atomExpressionAt(2)); +this.showString(this.vwr.ms.calculatePointGroup(bs1)); +}}return; +case 1111490574: +this.checkLength(2); +if (!this.chk) { +this.vwr.calculateStraightness(); +this.vwr.addStateScript("set quaternionFrame '" + this.vwr.getQuaternionFrame() + "'; calculate straightness", false, true); +}return; +case 1639976963: +bs1 = (this.slen < 4 || this.isFloatParameter(3) ? null : this.atomExpressionAt(2)); +switch (this.tokAt(++e.iToken)) { +case 4138: +break; +case 1111490587: +if (this.chk) return; +e.showString(this.vwr.getAnnotationParser(true).calculateDSSRStructure(this.vwr, bs1)); +return; +case 1073741915: +asDSSP = true; +version = (this.slen == e.iToken + 1 ? -1 : Clazz.floatToInt(this.floatParameter(++e.iToken))); +break; +case 0: +asDSSP = this.vwr.getBoolean(603979826); +break; +default: +this.invArg(); +} +if (!this.chk) this.showString(this.vwr.calculateStructures(bs1, asDSSP, true, version)); +return; +case 659482: +bs1 = (e.iToken + 1 < this.slen ? this.atomExpressionAt(++e.iToken) : null); +bs2 = (e.iToken + 1 < this.slen ? this.atomExpressionAt(++e.iToken) : null); +this.checkLength(++e.iToken); +if (!this.chk) { +n = this.vwr.calculateStruts(bs1, bs2); +if (n > 0) { +this.setShapeProperty(1, "type", Integer.$valueOf(32768)); +e.setShapePropertyBs(1, "color", Integer.$valueOf(0x0FFFFFF), null); +e.setShapeTranslucency(1, "", "translucent", 0.5, null); +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +}this.showString(J.i18n.GT.i(J.i18n.GT.$("{0} struts added"), n)); +}return; +case 2097180: +isSurface = true; +case 1111490575: +var isFrom = false; +switch (this.tokAt(2)) { +case 134217759: +e.iToken++; +break; +case 0: +isFrom = !isSurface; +break; +case 1073741952: +isFrom = true; +e.iToken++; +break; +default: +isFrom = true; +} +bs1 = (e.iToken + 1 < this.slen ? this.atomExpressionAt(++e.iToken) : this.vwr.bsA()); +this.checkLength(++e.iToken); +if (!this.chk) this.vwr.calculateSurface(bs1, (isFrom ? 3.4028235E38 : -1)); +return; +} +}e.errorStr2(53, "CALCULATE", "3D? aromatic? hbonds? hydrogen? formalCharge? partialCharge? pointgroup? straightness? structure? struts? surfaceDistance FROM? surfaceDistance WITHIN?"); +}); +Clazz.defineMethod(c$, "capture", +function(){ +if (!this.chk && !this.vwr.allowCapture()) { +this.showString("Cannot capture on this platform"); +return; +}var params = this.vwr.captureParams; +var type = (params == null ? "GIF" : params.get("type")); +var endTime = 0; +var mode = 0; +var slen = this.e.slen; +var fileName = ""; +var looping = (this.vwr.am.animationReplayMode != 1073742070); +var i = 1; +var tok = this.tokAt(i); +var isTransparent = (tok == 603979967); +if (isTransparent) tok = this.tokAt(++i); +var s = null; +switch (tok == 0 ? (tok = 102409) : tok) { +case 4: +fileName = this.e.optParameterAsString(i++); +if (fileName.length == 0) { +mode = 102409; +break; +}var lc = fileName.toLowerCase(); +if (lc.endsWith(".gift") || lc.endsWith(".pngt")) { +isTransparent = true; +fileName = fileName.substring(0, fileName.length - 1); +lc = fileName.toLowerCase(); +} else if (!lc.endsWith(".gif") && !lc.contains(".png")) { +fileName += ".gif"; +}if (lc.endsWith(".png")) { +if (!lc.endsWith("0.png")) fileName = fileName.substring(0, fileName.length - 4) + "0000.png"; +type = "PNG"; +} else { +type = "GIF"; +}if (isTransparent) type += "T"; +var pt = fileName.indexOf("0000."); +var streaming = (pt < 0 || pt != fileName.lastIndexOf(".") - 4); +var isRock = false; +if (this.tokAt(i) == 528411) { +looping = true; +tok = this.tokAt(++i); +}switch (this.tokAt(i)) { +case 134222850: +s = this.stringParameter(++i); +break; +case 1073742129: +isRock = true; +case 1611141175: +var axis = "y"; +looping = true; +i++; +if (isRock) { +if (i < slen && this.tokAt(i) != 2) axis = this.e.optParameterAsString(i++).toLowerCase(); +s = "rotate Y 10 10;rotate Y -10 -10;rotate Y -10 -10;rotate Y 10 10"; +var n = (i < slen ? this.intParameter(i++) : 5); +if (n < 0) { +s = JU.PT.rep(s, "10;", "" + (-n) + ";"); +} else { +s = JU.PT.rep(s, "10", "" + n); +}} else { +if (i < slen) axis = this.e.optParameterAsString(i++).toLowerCase(); +s = "rotate Y 360 30;"; +}if (this.chk) return; +this.vwr.setNavigationMode(false); +if (axis === "" || "xyz".indexOf(axis) < 0) axis = "y"; +s = JU.PT.rep(s, "Y", axis); +break; +case 3: +case 2: +endTime = this.floatParameter(i++); +break; +} +if (this.chk) return; +if (s != null) { +var wf = this.vwr.g.waitForMoveTo; +s = "set waitformoveto true;" + s + ";set waitformoveto " + wf; +s = "capture " + (isTransparent ? "transparent " : "") + JU.PT.esc(fileName) + (looping ? " LOOP;" : ";") + s + ";capture end;"; +this.e.cmdScript(0, null, s, null); +return; +}mode = 1073742031; +params = new java.util.Hashtable(); +var fps = this.vwr.getInt(553648132); +if (streaming) { +params.put("streaming", Boolean.TRUE); +if (!looping) this.showString(J.i18n.GT.o(J.i18n.GT.$("Note: Enable looping using the LOOP keyword just after the file name or {0}"), Clazz.newArray(-1, ["ANIMATION MODE LOOP"]))); +this.showString(J.i18n.GT.o(J.i18n.GT.$("Animation delay based on: {0}"), Clazz.newArray(-1, ["ANIMATION FPS " + fps]))); +}params.put("captureFps", Integer.$valueOf(fps)); +break; +case 102409: +case 1073741874: +if (params != null) params.put("captureSilent", Boolean.TRUE); +case 1073742335: +case 1073742334: +this.checkLength(-2); +mode = tok; +break; +default: +this.invArg(); +} +if (this.chk || params == null) return; +params.put("type", type); +var c = Integer.$valueOf(this.vwr.getBackgroundArgb()); +params.put("backgroundColor", c); +params.put("fileName", fileName); +params.put("quality", Integer.$valueOf(-1)); +params.put("endTime", Long.$valueOf(endTime <= 0 ? -1 : System.currentTimeMillis() + Clazz.floatToLong(endTime * 1000))); +params.put("captureMode", JS.T.nameOf(mode).toLowerCase()); +params.put("captureLooping", looping ? Boolean.TRUE : Boolean.FALSE); +var msg = this.vwr.processWriteOrCapture(params); +if (msg == null) msg = "canceled"; +JU.Logger.info(msg); +}); +Clazz.defineMethod(c$, "centerAt", +function(){ +var tok = this.getToken(1).tok; +switch (tok) { +case 1073741826: +case 96: +case 1812599299: +break; +default: +this.invArg(); +} +var pt = JU.P3.new3(0, 0, 0); +if (this.slen == 5) { +pt.x = this.floatParameter(2); +pt.y = this.floatParameter(3); +pt.z = this.floatParameter(4); +} else if (this.e.isCenterParameter(2)) { +pt = this.centerParameter(2); +this.e.checkLast(this.e.iToken); +} else { +this.checkLength(2); +}if (!this.chk && !this.vwr.isJmolDataFrame()) this.vwr.tm.setCenterAt(tok, pt); +}); +Clazz.defineMethod(c$, "compare", +function(){ +var eval = this.e; +var isQuaternion = false; +var doRotate = false; +var doTranslate = false; +var doAnimate = false; +var isFlexFit = false; +var data1 = null; +var data2 = null; +var bsAtoms1 = null; +var bsAtoms2 = null; +var vAtomSets = null; +var vQuatSets = null; +eval.iToken = 0; +var nSeconds = (this.isFloatParameter(1) ? this.floatParameter(++eval.iToken) : NaN); +var coordTo = null; +var bsFrom = null; +var bsTo = null; +var tok = 0; +if (this.tokAt(1) == 4115) { +bsFrom = this.vwr.bsA(); +} else { +bsFrom = this.atomExpressionAt(1); +if (eval.isArrayParameter(++eval.iToken)) { +coordTo = eval.getPointArray(eval.iToken, -1, false); +} else if ((tok = this.tokAt(eval.iToken)) != 1153433601 && tok != 4115) { +bsTo = this.atomExpressionAt(eval.iToken); +}}var bsSubset = null; +var isSmiles = false; +var isPolyhedral = false; +var strSmiles = null; +var bs = JU.BSUtil.copy(bsFrom); +if (bsTo != null) bs.or(bsTo); +var isToSubsetOfFrom = (coordTo == null && bsTo != null && bs.equals(bsFrom)); +var isFrames = isToSubsetOfFrom; +var isAtoms = (tok == 1153433601); +var isCoords = false; +for (var i = eval.iToken + 1; i < this.slen; ++i) { +switch (this.getToken(i).tok) { +case 4115: +isFrames = true; +if (bsTo == null) bsTo = JU.BSUtil.copy(bsFrom); +break; +case 134218757: +isSmiles = true; +tok = this.tokAt(i + 1); +if (tok != 4 && tok != 1275203608) { +strSmiles = "*"; +break; +}case 134218756: +isPolyhedral = (this.tokAt(++i) == 1275203608); +strSmiles = (isPolyhedral ? "polyhedra" : this.stringParameter(i)); +if (strSmiles.equalsIgnoreCase("polyhedra") || strSmiles.equalsIgnoreCase("polyhedron")) isPolyhedral = true; +break; +case 1677721602: +isFlexFit = true; +doRotate = true; +strSmiles = this.paramAsStr(++i); +if (strSmiles.equalsIgnoreCase("SMILES")) { +isSmiles = true; +if (this.e.tokAt(i + 1) == 1612709900) { +strSmiles = "H"; +i++; +} else { +strSmiles = "*"; +}}break; +case 3: +case 2: +nSeconds = Math.abs(this.floatParameter(i)); +if (nSeconds > 0) doAnimate = true; +break; +case 268436992: +break; +case 2109448: +bsSubset = this.atomExpressionAt(++i); +i = eval.iToken; +break; +case 10: +case 1073742325: +if (vQuatSets != null) this.invArg(); +bsAtoms1 = this.atomExpressionAt(eval.iToken); +tok = (isToSubsetOfFrom ? 0 : this.tokAt(eval.iToken + 1)); +bsAtoms2 = (coordTo == null && eval.isArrayParameter(eval.iToken + 1) ? null : (tok == 10 || tok == 1073742325 ? this.atomExpressionAt(++eval.iToken) : JU.BSUtil.copy(bsAtoms1))); +if (bsSubset != null) { +bsAtoms1.and(bsSubset); +if (bsAtoms2 != null) bsAtoms2.and(bsSubset); +}if (bsAtoms2 == null) { +var ipt = eval.iToken; +coordTo = eval.getPointArray(eval.iToken + 1, -1, false); +if (coordTo == null) eval.iToken = ipt; + else isCoords = true; +} else if (bsTo != null) { +bsAtoms2.and(bsTo); +}if (vAtomSets == null) vAtomSets = new JU.Lst(); +vAtomSets.addLast( Clazz.newArray(-1, [bsAtoms1, (bsAtoms2 == null ? coordTo : bsAtoms2)])); +if (isAtoms) coordTo = null; +i = eval.iToken; +break; +case 1275203608: +isSmiles = isPolyhedral = true; +break; +case 4125: +break; +case 7: +if (vAtomSets != null) this.invArg(); +isQuaternion = true; +data1 = eval.getQuaternionArray((eval.theToken).getList(), 1073742001); +this.getToken(++i); +data2 = eval.getQuaternionArray((eval.theToken).getList(), 1073742001); +if (vQuatSets == null) vQuatSets = new JU.Lst(); +vQuatSets.addLast( Clazz.newArray(-1, [data1, data2])); +break; +case 1073742077: +isQuaternion = true; +break; +case 1153433601: +isAtoms = true; +isQuaternion = false; +break; +case 134217751: +isQuaternion = false; +break; +case 528432: +doRotate = true; +break; +case 4160: +doTranslate = true; +break; +default: +this.invArg(); +} +} +if (this.chk) return; +if (isFrames) nSeconds = 0; +if (Float.isNaN(nSeconds) || nSeconds < 0) nSeconds = 1; + else if (!doRotate && !doTranslate) doRotate = doTranslate = true; +doAnimate = (nSeconds != 0); +isAtoms = (!isQuaternion && strSmiles == null && !isPolyhedral || coordTo != null); +if (isAtoms) J.api.Interface.getInterface("JU.Eigen", this.vwr, "script"); +if (vAtomSets == null && vQuatSets == null) { +if (isPolyhedral && bsSubset == null) { +bsSubset = this.vwr.getAtomBitSet("polyhedra"); +}if (bsSubset == null) { +bsAtoms1 = (isAtoms ? this.vwr.getAtomBitSet("spine") : new JU.BS()); +if (bsAtoms1.nextSetBit(0) < 0) { +bsAtoms1 = bsFrom; +bsAtoms2 = bsTo; +} else { +bsAtoms2 = JU.BSUtil.copy(bsAtoms1); +bsAtoms1.and(bsFrom); +bsAtoms2.and(bsTo); +}} else { +bsAtoms1 = JU.BSUtil.copy(bsFrom); +bsAtoms2 = JU.BSUtil.copy(bsTo); +bsAtoms1.and(bsSubset); +bsAtoms1.and(bsFrom); +if (bsAtoms2 != null) { +bsAtoms2.and(bsSubset); +bsAtoms2.and(bsTo); +}}vAtomSets = new JU.Lst(); +vAtomSets.addLast( Clazz.newArray(-1, [bsAtoms1, bsAtoms2])); +}var bsFrames; +var bsModels = null; +if (isFrames) { +bsModels = this.vwr.ms.getModelBS(bsFrom, false); +bsFrames = new Array(bsModels.cardinality()); +for (var i = 0, iModel = bsModels.nextSetBit(0); iModel >= 0; iModel = bsModels.nextSetBit(iModel + 1), i++) bsFrames[i] = this.vwr.getModelUndeletedAtomsBitSet(iModel); + +} else { +bsModels = JU.BSUtil.newAndSetBit(0); +bsFrames = Clazz.newArray(-1, [bsFrom]); +}for (var iFrame = 0, iModel = bsModels.nextSetBit(0); iFrame < bsFrames.length; iFrame++, iModel = bsModels.nextSetBit(iModel + 1)) { +bsFrom = bsFrames[iFrame]; +var retStddev = Clazz.newFloatArray (2, 0); +if (isFrames && isPolyhedral && iFrame == 0) { +bsTo = bsFrom; +continue; +}var q = null; +var vQ = new JU.Lst(); +var centerAndPoints = null; +var vAtomSets2 = (isFrames ? new JU.Lst() : vAtomSets); +if (!isCoords) { +for (var i = 0; i < vAtomSets.size(); ++i) { +var bss = vAtomSets.get(i); +if (isFrames) vAtomSets2.addLast(bss = Clazz.newArray(-1, [JU.BSUtil.copy(bss[0]), bss[1]])); +(bss[0]).and(bsFrom); +} +}var center = null; +var translation = null; +if (isAtoms) { +if (coordTo != null) { +vAtomSets2.clear(); +vAtomSets2.addLast( Clazz.newArray(-1, [bsAtoms1, coordTo])); +}try { +centerAndPoints = this.vwr.getCenterAndPoints(vAtomSets2, true); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.invArg(); +} else { +throw ex; +} +} +var n = centerAndPoints[0].length - 1; +for (var i = 1; i <= n; i++) { +var aij = centerAndPoints[0][i]; +var bij = centerAndPoints[1][i]; +if (!(Clazz.instanceOf(aij,"JM.Atom")) || !(Clazz.instanceOf(bij,"JM.Atom"))) break; +if (!isFrames) JU.Logger.info(" atom 1 " + (aij).getInfo() + "\tatom 2 " + (bij).getInfo()); +} +q = JU.Measure.calculateQuaternionRotation(centerAndPoints, retStddev); +var r0 = (Float.isNaN(retStddev[1]) ? NaN : Math.round(retStddev[0] * 100) / 100); +var r1 = (Float.isNaN(retStddev[1]) ? NaN : Math.round(retStddev[1] * 100) / 100); +this.showString("RMSD " + r0 + " --> " + r1 + " Angstroms"); +} else if (isQuaternion) { +if (vQuatSets == null) { +for (var i = 0; i < vAtomSets2.size(); i++) { +var bss = vAtomSets2.get(i); +data1 = this.vwr.getAtomGroupQuaternions(bss[0], 2147483647); +data2 = this.vwr.getAtomGroupQuaternions(bss[1], 2147483647); +for (var j = 0; j < data1.length && j < data2.length; j++) { +vQ.addLast(data2[j].div(data1[j])); +} +} +} else { +for (var j = 0; j < data1.length && j < data2.length; j++) { +vQ.addLast(data2[j].div(data1[j])); +} +}retStddev[0] = 0; +data1 = vQ.toArray( new Array(vQ.size())); +q = JU.Quat.sphereMean(data1, retStddev, 0.0001); +this.showString("RMSD = " + retStddev[0] + " degrees"); +} else { +var m4 = new JU.M4(); +center = new JU.P3(); +if (bsFrom != null && strSmiles != null && ("H".equals(strSmiles) || "*".equals(strSmiles) || "".equals(strSmiles))) try { +strSmiles = this.vwr.getSmilesOpt(bsAtoms1 == null ? bsFrom : bsAtoms1, -1, -1, 32768 | ("H".equals(strSmiles) ? 4096 : 0), null); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +eval.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +if (isFlexFit) { +var list; +if (bsFrom == null || bsTo == null || (list = eval.getSmilesExt().getFlexFitList(bsFrom, bsTo, strSmiles, !isSmiles)) == null) return; +this.vwr.setDihedrals(list, null, 1); +}var stddev; +if (isPolyhedral) { +var bs1 = JU.BS.copy(bsAtoms1); +bs1.and(bsFrom); +var bs2 = JU.BS.copy(bsAtoms2); +bs2.and(bsTo); +stddev = eval.getSmilesExt().mapPolyhedra(bs1.nextSetBit(0), bs2.nextSetBit(0), isSmiles, m4); +} else { +this.showString("COMPARE using " + (isSmiles ? "SMILES " : "SMARTS ") + strSmiles); +var ptsA = new JU.Lst(); +var ptsB = new JU.Lst(); +stddev = eval.getSmilesExt().getSmilesCorrelation(bsAtoms1 == null ? bsFrom : bsAtoms1, bsAtoms2 == null ? bsTo : bsAtoms2, strSmiles, ptsA, ptsB, m4, null, false, null, center, false, 32 | (isSmiles ? 1 : 2)); +}if (Float.isNaN(stddev)) { +this.showString("structures do not match from " + bsFrom + " to " + bsTo); +return; +}if (doTranslate) { +translation = new JU.V3(); +m4.getTranslation(translation); +}if (doRotate) { +var m3 = new JU.M3(); +m4.getRotationScale(m3); +q = JU.Quat.newM(m3); +}this.showString("RMSD = " + stddev + " Angstroms"); +if (isFrames) { +var oabc = this.vwr.getV0abc(iModel, Clazz.newArray(-1, [m4])); +if (oabc != null) this.vwr.ms.setModelCagePts(iModel, oabc, null); +}}if (centerAndPoints != null) center = centerAndPoints[0][0]; +if (center == null) { +centerAndPoints = this.vwr.getCenterAndPoints(vAtomSets2, true); +center = centerAndPoints[0][0]; +}var pt1 = new JU.P3(); +var endDegrees = NaN; +if (doTranslate) { +if (translation == null) translation = JU.V3.newVsub(centerAndPoints[1][0], center); +endDegrees = 1e10; +}if (doRotate) { +if (q == null) eval.evalError("option not implemented", null); +pt1.add2(center, q.getNormal()); +endDegrees = q.getTheta(); +if (endDegrees == 0 && doTranslate) { +if (translation.length() > 0.01) endDegrees = 1e10; + else if (isFrames) continue; + else doRotate = doTranslate = doAnimate = false; +}}if (Float.isNaN(endDegrees) || Float.isNaN(pt1.x)) continue; +var ptsB = null; +if (doRotate && doTranslate && nSeconds != 0) { +var ptsA = this.vwr.ms.getAtomPointVector(bsFrom); +var m4 = JS.ScriptMathProcessor.getMatrix4f(q.getMatrix(), translation); +ptsB = JU.Measure.transformPoints(ptsA, m4, center); +}if (!eval.useThreads()) doAnimate = false; +if (this.vwr.rotateAboutPointsInternal(eval, center, pt1, endDegrees / nSeconds, endDegrees, doAnimate, bsFrom, translation, ptsB, null, null, false) && doAnimate && eval.isJS) throw new JS.ScriptInterruption(eval, "compare", 1); +} +}); +Clazz.defineMethod(c$, "configuration", +function(){ +var bsAtoms = null; +var bsSelected = (this.chk ? null : this.vwr.bsA()); +if (this.slen == 1) { +if (this.chk) return; +bsAtoms = this.vwr.ms.setConformation(bsSelected); +this.vwr.ms.addStateScript("select", null, bsSelected, null, ";configuration", true, false); +} else { +var n = -2147483648; +var bs = null; +if (this.tokAt(1) == 4) { +n = -1000 - (this.stringParameter(this.e.checkLast(1)) + " ").codePointAt(0); +} else if (this.tokAt(1) == 2) { +n = this.intParameter(this.e.checkLast(1)); +} else { +bs = bsAtoms = this.atomExpressionAt(1); +if (this.tokAt(this.e.iToken) == 4) { +n = -1000 - (this.stringParameter(this.e.checkLast(this.e.iToken + 1)) + " ").codePointAt(0); +} else { +n = this.intParameter(this.e.checkLast(this.e.iToken + 1)); +}}if (this.chk) return; +this.vwr.addStateScript("configuration " + (bs == null ? "" : JU.Escape.eBS(bsAtoms) + " ") + n + ";", true, false); +bsAtoms = this.vwr.ms.getConformation(this.vwr.am.cmi, n, true, bs); +}this.setShapeProperty(1, "type", Integer.$valueOf(30720)); +this.e.setShapeSizeBs(1, 0, bsAtoms); +this.vwr.autoHbond(bsAtoms, bsAtoms, true); +this.vwr.selectStatus(bsAtoms, false, 0, !this.e.doReport(), false); +}); +Clazz.defineMethod(c$, "measure", +function(){ +var eval = this.e; +var id = null; +var pt = 1; +var colix = 0; +var offset = null; +if (this.slen == 2) switch (this.tokAt(1)) { +case 1073742334: +this.setShapeProperty(6, "hideAll", Boolean.TRUE); +return; +case 12291: +if (!this.chk) this.vwr.clearAllMeasurements(); +return; +case 1113589787: +if (!this.chk) this.showMeasureCount(true); +return; +} +this.vwr.shm.loadShape(6); +switch (this.tokAt(1)) { +case 134218756: +var smarts = this.stringParameter(this.slen == 3 ? 2 : 4); +if (this.chk) return; +var atoms = this.vwr.ms.at; +var ac = this.vwr.ms.ac; +var maps = null; +try { +maps = this.vwr.getSmilesMatcher().getCorrelationMaps(smarts, atoms, ac, this.vwr.bsA(), 2); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +eval.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +if (maps == null) return; +this.setShapeProperty(6, "maps", maps); +return; +} +switch (this.slen) { +case 2: +switch (this.getToken(pt).tok) { +case 0: +case 1073742335: +this.vwr.shm.loadShape(6); +this.setShapeProperty(6, "hideAll", Boolean.FALSE); +return; +case 1073742001: +if (!this.chk) eval.showStringPrint(this.vwr.getMeasurementInfoAsString(), false); +return; +case 4: +this.setShapeProperty(6, "setFormats", this.stringParameter(1)); +return; +} +eval.errorStr(24, "ON, OFF, DELETE"); +break; +case 3: +switch (this.getToken(1).tok) { +case 12291: +if (this.getToken(2).tok == 1073742327) { +if (!this.chk) this.vwr.clearAllMeasurements(); +} else { +var i = this.intParameter(2) - 1; +if (!this.chk) this.vwr.deleteMeasurement(i); +}return; +} +} +var nAtoms = 0; +var expressionCount = 0; +var modelIndex = -1; +var atomIndex = -1; +var ptFloat = -1; +var countPlusIndexes = Clazz.newIntArray (5, 0); +var rangeMinMax = Clazz.newFloatArray(-1, [3.4028235E38, 3.4028235E38]); +var isAll = false; +var isAllConnected = false; +var isNotConnected = false; +var isRange = true; +var isRefreshID = false; +var rd = null; +var intramolecular = null; +var tokAction = 268438018; +var strFormat = null; +var property = null; +var units = null; +var font = null; +var points = new JU.Lst(); +var bs = new JU.BS(); +var bsSelected = null; +var target = null; +var tickInfo = null; +var nBitSets = 0; +var mad = 0; +var value = NaN; +var alignment = null; +for (var i = 1; i < this.slen; ++i) { +switch (this.getToken(i).tok) { +default: +this.error(15); +break; +case 1073741974: +if (i != 1) this.invArg(); +id = eval.optParameterAsString(++i); +continue; +case 1073741824: +eval.errorStr(24, "ALL, ALLCONNECTED, DELETE"); +break; +case 1275082241: +tokAction = 1275082241; +if (this.tokAt(i + 1) == 1073742327 && this.slen == i + 2) { +if (!this.chk) { +this.vwr.setShapeProperty(6, "selectall", null); +this.showMeasureCount(true); +}return; +}break; +case 1113589787: +if (points.size() > 0 || nBitSets > 0 || id != null) this.invArg(); +tokAction = 1275082241; +if (this.chk) { +bsSelected = new JU.BS(); +} else { +bsSelected = this.vwr.getShapeProperty(6, "selected"); +if (bsSelected.cardinality() == 0) return; +}isAll = true; +break; +case 268439040: +if (this.tokAt(i + 1) != 134217736) this.invArg(); +i++; +isNotConnected = true; +break; +case 1073741832: +alignment = this.paramAsStr(++i).toLowerCase(); +break; +case 134217736: +case 1073741834: +case 1073742327: +isAllConnected = (eval.theTok == 1073741834); +atomIndex = -1; +isAll = true; +if (isAllConnected && isNotConnected) this.invArg(); +break; +case 1765808134: +colix = JU.C.getColix(eval.getArgbParam(++i)); +i = eval.iToken; +break; +case 1073742066: +if (eval.isPoint3f(++i)) { +var p = this.getPoint3f(i, false); +offset = Clazz.newFloatArray(-1, [1, p.x, p.y, p.z, 0, 0, 0]); +} else { +offset = eval.floatParameterSet(i, 7, 7); +}i = eval.iToken; +break; +case 1665140738: +case 1073741917: +mad = Clazz.floatToInt((eval.theTok == 1665140738 ? 2000 : 1000) * this.floatParameter(++i)); +if (id != null && mad <= 0) mad = -1; +break; +case 3: +if (rd != null) this.invArg(); +isAll = true; +isRange = true; +ptFloat = (ptFloat + 1) % 2; +rangeMinMax[ptFloat] = this.floatParameter(i); +break; +case 12291: +if (tokAction != 268438018 && tokAction != 1275082241) this.invArg(); +tokAction = 12291; +break; +case 4114: +var fontsize = this.floatParameter(++i); +var fontface = this.paramAsStr(++i); +var fontstyle = this.paramAsStr(++i); +if (!this.chk) font = this.vwr.getFont3D(fontface, fontstyle, fontsize); +break; +case 2: +var iParam = this.intParameter(i); +if (isAll) { +isRange = true; +ptFloat = (ptFloat + 1) % 2; +rangeMinMax[ptFloat] = iParam; +} else { +atomIndex = this.vwr.ms.getFirstAtomIndexFromAtomNumber(iParam, this.vwr.getVisibleFramesBitSet()); +if (!this.chk && atomIndex < 0) return; +if (target != null) this.invArg(); +if ((countPlusIndexes[0] = ++nAtoms) > 4) eval.bad(); +countPlusIndexes[nAtoms] = atomIndex; +}break; +case 1094713359: +modelIndex = this.intParameter(++i); +break; +case 1073742334: +if (tokAction != 268438018) this.invArg(); +tokAction = 1073742334; +break; +case 1073742335: +if (tokAction != 268438018) this.invArg(); +tokAction = 1073742335; +break; +case 1073742114: +isAll = true; +isRange = true; +atomIndex = -1; +break; +case 1073741989: +case 1073741990: +intramolecular = Boolean.$valueOf(eval.theTok == 1073741989); +isAll = true; +isNotConnected = (eval.theTok == 1073741990); +break; +case 1648363544: +if (ptFloat >= 0) this.invArg(); +rd = eval.encodeRadiusParameter(i, false, true); +if (rd == null) return; +rd.values = rangeMinMax; +i = eval.iToken; +isNotConnected = true; +isAll = true; +intramolecular = Boolean.$valueOf(false); +if (nBitSets == 1) { +nBitSets++; +nAtoms++; +var bs2 = JU.BSUtil.copy(bs); +JU.BSUtil.invertInPlace(bs2, this.vwr.ms.ac); +bs2.and(this.vwr.ms.getAtomsWithinRadius(5, bs, false, null, null)); +points.addLast(bs2); +}break; +case 12290: +case 10: +case 1073742325: +nBitSets++; +case 1073742332: +case 8: +case 1073742330: +if (atomIndex >= 0 || bsSelected != null) this.invArg(); +var ret = new Array(1); +target = eval.centerParameter(i, ret); +if (Clazz.instanceOf(ret[0],"JU.BS")) { +target = bs = ret[0]; +if (!this.chk && bs.length() == 0) return; +}if (Clazz.instanceOf(target,"JU.P3")) { +var v = new JU.Point3fi(); +v.setT(target); +v.mi = modelIndex; +target = v; +}if ((nAtoms = ++expressionCount) > 4) eval.bad(); +i = eval.iToken; +points.addLast(target); +break; +case 1715472409: +property = this.paramAsStr(i); +break; +case 1073742188: +value = this.floatParameter(++i); +break; +case 4: +var s = this.stringParameter(i); +if (JM.Measurement.isUnits(s) || s.equals("default")) { +units = s; +} else { +strFormat = s; +}break; +case 1073742164: +tickInfo = eval.tickParamAsStr(i, false, true, true); +i = eval.iToken; +tokAction = 12290; +break; +} +} +if (rd != null && (ptFloat >= 0 || nAtoms != 2) || tokAction != 1275082241 && bsSelected == null && nAtoms < 2 && id == null && (tickInfo == null || nAtoms == 1)) eval.bad(); +if (strFormat != null && strFormat.indexOf(nAtoms + ":") != 0) strFormat = nAtoms + ":" + strFormat; +if (isRange) { +if (rangeMinMax[1] < rangeMinMax[0]) { +rangeMinMax[1] = rangeMinMax[0]; +rangeMinMax[0] = (rangeMinMax[1] == 3.4028235E38 ? 3.4028235E38 : -200); +}}if (this.chk) return; +isRefreshID = (id != null && target == null && tokAction == 268438018); +if (target != null || bsSelected != null || tickInfo != null || isRefreshID) { +if (rd == null) rd = new J.atomdata.RadiusData(rangeMinMax, 0, null, null); +if (tickInfo != null) tickInfo.id = "default"; +if (isRefreshID) { +tokAction = 266284; +} else if (target != null && (property != null || strFormat != null) && tokAction == 268438018) { +tokAction = 12290; +}var text = null; +if (font != null || alignment != null || colix != 0 || strFormat != null && (isRefreshID || strFormat.indexOf('\n') >= 0)) text = JM.Text.newMeasure(this.vwr, font, colix); +if (text != null) { +text.pymolOffset = offset; +text.setAlignmentLCR(alignment); +}this.setShapeProperty(6, "measure", this.vwr.newMeasurementData(id, points).set(tokAction, null, rd, property, strFormat, units, tickInfo, isAllConnected, isNotConnected, intramolecular, isAll, mad, colix, text, value, bsSelected)); +if (tokAction == 1275082241) { +this.showMeasureCount(false); +}return; +}var propertyValue = (id == null ? countPlusIndexes : id); +switch (tokAction) { +case 12291: +this.setShapeProperty(6, "delete", propertyValue); +break; +case 1073742335: +this.setShapeProperty(6, "show", propertyValue); +break; +case 1073742334: +this.setShapeProperty(6, "hide", propertyValue); +break; +default: +this.setShapeProperty(6, (strFormat == null && units == null ? "toggle" : "toggleOn"), propertyValue); +if (strFormat != null) this.setShapeProperty(6, "setFormats", strFormat); +} +}); +Clazz.defineMethod(c$, "showMeasureCount", +function(isFull){ +var bs = this.vwr.getShapeProperty(6, "selected"); +var n = bs.cardinality(); +if (isFull) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.showString((this.vwr.shm.getShape(6)).getInfoAsString(i)); +} +}this.showString(n + (n == 1 ? " measure" : " measures") + " selected"); +}, "~B"); +Clazz.defineMethod(c$, "connect", +function(index){ +var eval = this.e; +var distances = Clazz.newFloatArray (2, 0); +var atomSets = new Array(2); +atomSets[0] = atomSets[1] = this.vwr.bsA(); +var radius = NaN; +var colorArgb = Clazz.newIntArray(-1, [-2147483648]); +var distanceCount = 0; +var bondOrder = 131071; +var bo; +var operation = 1073742026; +var isDelete = false; +var haveType = false; +var haveOperation = false; +var translucentLevel = 3.4028235E38; +var isColorOrRadius = false; +var nAtomSets = 0; +var nDistances = 0; +var bsBonds = new JU.BS(); +var isBonds = false; +var expression2 = 0; +var ptColor = 0; +var energy = 0; +var addGroup = false; +if (this.slen == 1) { +if (!this.chk) this.vwr.rebondState(eval.$isStateScript); +return; +}if (this.tokAt(1) == 1073877011) { +if (!this.chk) this.vwr.connectNBO(this.e.optParameterAsString(2)); +return; +}for (var i = index; i < this.slen; ++i) { +switch (this.getToken(i).tok) { +case 1073742335: +case 1073742334: +this.checkLength(2); +if (!this.chk) this.vwr.rebondState(eval.$isStateScript); +return; +case 2: +case 3: +if (nAtomSets > 0) { +if (haveType || isColorOrRadius) eval.error(23); +bo = JU.Edge.getBondOrderFromFloat(this.floatParameter(i)); +if (bo == 131071) this.invArg(); +bondOrder = bo; +haveType = true; +break; +}if (++nDistances > 2) eval.bad(); +var dist = this.floatParameter(i); +if (this.tokAt(i + 1) == 268441090) { +dist = -dist / 100; +i++; +}distances[distanceCount++] = dist; +break; +case 12290: +case 10: +case 1073742325: +if (nAtomSets > 2 || isBonds && nAtomSets > 0) eval.bad(); +if (haveType || isColorOrRadius) this.invArg(); +atomSets[nAtomSets++] = this.atomExpressionAt(i); +isBonds = eval.isBondSet; +if (nAtomSets == 2) { +var pt = eval.iToken; +for (var j = i; j < pt; j++) if (this.tokAt(j) == 1073741824 && this.paramAsStr(j).equals("_1")) { +expression2 = i; +break; +} +eval.iToken = pt; +}i = eval.iToken; +break; +case 1086324742: +addGroup = true; +break; +case 1765808134: +case 603979967: +case 1073742074: +isColorOrRadius = true; +translucentLevel = this.getColorTrans(eval, i, false, colorArgb); +i = eval.iToken; +break; +case 1073742086: +var isAuto = (this.tokAt(2) == 1073741852); +this.checkLength(isAuto ? 3 : 2); +if (this.chk) return; +this.vwr.clearModelDependentObjects(); +this.vwr.ms.deleteAllBonds(); +var bsExclude = new JU.BS(); +this.vwr.ms.setPdbConectBonding(0, 0, bsExclude); +if (isAuto) { +var isLegacy = eval.$isStateScript && this.vwr.getBoolean(603979872); +this.vwr.ms.autoBondBs4(null, null, bsExclude, null, this.vwr.getMadBond(), isLegacy, null); +this.vwr.addStateScript((isLegacy ? "set legacyAutoBonding TRUE;connect PDB AUTO;set legacyAutoBonding FALSE;" : "connect PDB auto;"), false, true); +return; +}this.vwr.addStateScript("connect PDB;", false, true); +return; +case 1073741852: +case 1073741904: +case 1073742025: +case 1073742026: +haveOperation = true; +if (++i != this.slen) this.invArg(); +operation = eval.theTok; +if (operation == 1073741852 && !(bondOrder == 131071 || bondOrder == 2048 || bondOrder == 515)) this.invArg(); +break; +case 659482: +if (!isColorOrRadius) { +colorArgb[0] = 0xFFFFFF; +translucentLevel = 0.5; +radius = this.vwr.getFloat(570425406); +isColorOrRadius = true; +}if (!haveOperation) { +operation = 1073742026; +haveOperation = true; +}case 1073741824: +if (eval.isColorParam(i)) { +ptColor = -i; +break; +}case 1075838996: +case 1613238294: +var cmd = this.paramAsStr(i); +if ((bo = JU.Edge.getBondOrderFromString(cmd)) == 131071) this.invArg(); +if (haveType) eval.error(18); +haveType = true; +switch (bo) { +case 33: +switch (this.tokAt(i + 1)) { +case 3: +bo = JU.Edge.getPartialBondOrderFromFloatEncodedInt(this.st[++i].intValue); +break; +case 2: +bo = this.intParameter(++i); +break; +} +break; +case 2048: +if (this.tokAt(i + 1) == 2) { +bo = (this.intParameter(++i) << 11); +energy = this.floatParameter(++i); +}break; +case 65537: +if (!haveOperation) { +operation = 1073742025; +haveOperation = true; +}break; +} +bondOrder = bo; +break; +case 1665140738: +radius = this.floatParameter(++i); +isColorOrRadius = true; +break; +case 1073742333: +if (++i != this.slen) this.invArg(); +case 12291: +operation = 12291; +isDelete = true; +isColorOrRadius = false; +break; +default: +ptColor = i; +break; +} +if (i > 0) { +if (ptColor == -i || ptColor == i && eval.isColorParam(i)) { +isColorOrRadius = true; +colorArgb[0] = eval.getArgbParam(i); +i = eval.iToken; +} else if (ptColor == i) { +this.invArg(); +}}} +if (this.chk) return; +if (distanceCount < 2) { +if (distanceCount == 0) distances[0] = 1.0E8; +distances[1] = distances[0]; +distances[0] = 0.1; +}if (isColorOrRadius) { +if (!haveType) bondOrder = 65535; +if (!haveOperation) operation = 1073742025; +}var nNew = 0; +var nModified = 0; +var result; +if (expression2 > 0) { +var bs = new JU.BS(); +this.vwr.definedAtomSets.put("_1", bs); +var bs0 = atomSets[0]; +for (var atom1 = bs0.nextSetBit(0); atom1 >= 0; atom1 = bs0.nextSetBit(atom1 + 1)) { +bs.set(atom1); +result = this.vwr.makeConnections(distances[0], distances[1], bondOrder, operation, bs, this.atomExpressionAt(expression2), bsBonds, isBonds, false, 0); +nNew += Math.abs(result[0]); +nModified += result[1]; +bs.clear(atom1); +} +} else { +result = this.vwr.makeConnections(distances[0], distances[1], bondOrder, operation, atomSets[0], atomSets[1], bsBonds, isBonds, addGroup, energy); +nNew += Math.abs(result[0]); +nModified += result[1]; +}var report = eval.doReport(); +if (isDelete) { +if (report) eval.report(J.i18n.GT.i(J.i18n.GT.$("{0} connections deleted"), nModified), false); +return; +}if (isColorOrRadius) { +this.vwr.selectBonds(bsBonds); +if (!Float.isNaN(radius)) eval.setShapeSizeBs(1, Math.round(radius * 2000), null); +this.finalizeObject(1, colorArgb[0], translucentLevel, 0, false, null, 0, bsBonds); +this.vwr.selectBonds(null); +}if (report) eval.report(J.i18n.GT.o(J.i18n.GT.$("{0} new bonds; {1} modified"), Clazz.newArray(-1, [Integer.$valueOf(nNew), Integer.$valueOf(nModified)])), false); +}, "~N"); +Clazz.defineMethod(c$, "console", +function(){ +switch (this.getToken(1).tok) { +case 1073742334: +if (!this.chk) this.vwr.showConsole(false); +break; +case 1073742335: +if (!this.chk) this.vwr.showConsole(true); +break; +case 1073741882: +if (!this.chk) this.vwr.sm.clearConsole(); +break; +case 134221856: +this.showString(this.stringParameter(2)); +break; +default: +this.invArg(); +} +}); +Clazz.defineMethod(c$, "data", +function(){ +var eval = this.e; +var dataString = null; +var dataLabel = null; +var isOneValue = false; +var i; +switch (eval.iToken = this.slen) { +case 5: +dataString = this.paramAsStr(2); +case 4: +case 2: +dataLabel = this.paramAsStr(1); +if (dataLabel.equalsIgnoreCase("clear")) { +if (!this.chk) this.vwr.setData(null, null, 0, 0, 0, 0, 0); +return; +}if ((i = dataLabel.indexOf("@")) >= 0) { +dataString = "" + eval.getParameter(dataLabel.substring(i + 1), 4, true); +dataLabel = dataLabel.substring(0, i).trim(); +} else if (dataString == null && (i = dataLabel.indexOf(" ")) >= 0) { +dataString = dataLabel.substring(i + 1).trim(); +dataLabel = dataLabel.substring(0, i).trim(); +isOneValue = true; +}break; +default: +eval.bad(); +} +var dataType = dataLabel.substring(0, (dataLabel + " ").indexOf(" ")).toLowerCase(); +if (dataType.equals("model") || dataType.equals("append")) { +eval.cmdLoad(); +return; +}if (this.chk) return; +var isDefault = (dataLabel.toLowerCase().indexOf("(default)") >= 0); +if (dataType.equals("connect_atoms")) { +this.vwr.ms.connect(this.parseDataArray(dataString, false)); +return; +}if (dataType.indexOf("ligand_") == 0) { +this.vwr.setLigandModel(dataLabel.substring(7).toUpperCase() + "_data", dataString.trim()); +return; +}if (dataType.indexOf("file_") == 0) { +this.vwr.setLigandModel(dataLabel.substring(5) + "_file", dataString.trim()); +return; +}var d = new Array(4); +if (dataType.equals("element_vdw")) { +d[0] = dataType; +d[1] = dataString.$replace(';', '\n'); +var n = JU.Elements.elementNumberMax; +var eArray = Clazz.newIntArray (n + 1, 0); +for (var ie = 1; ie <= n; ie++) eArray[ie] = ie; + +d[2] = eArray; +d[3] = Integer.$valueOf(0); +this.vwr.setData("element_vdw", d, n, 0, 0, 0, 0); +return; +}if (dataType.indexOf("data2d_") == 0) { +d[0] = dataLabel; +d[1] = this.parseDataArray(dataString, false); +d[3] = Integer.$valueOf(2); +this.vwr.setData(dataLabel, d, 0, 0, 0, 0, 0); +return; +}if (dataType.indexOf("data3d_") == 0) { +d[0] = dataLabel; +d[1] = this.parseDataArray(dataString, true); +d[3] = Integer.$valueOf(3); +this.vwr.setData(dataLabel, d, 0, 0, 0, 0, 0); +return; +}var tokens = JU.PT.getTokens(dataLabel); +if (dataType.indexOf("property_") == 0 && !(tokens.length == 2 && tokens[1].equals("set"))) { +var bs = this.vwr.bsA(); +d[0] = dataType; +var atomNumberField = (isOneValue ? 0 : (this.vwr.getP("propertyAtomNumberField")).intValue()); +var atomNumberFieldColumnCount = (isOneValue ? 0 : (this.vwr.getP("propertyAtomNumberColumnCount")).intValue()); +var propertyField = (isOneValue ? -2147483648 : (this.vwr.getP("propertyDataField")).intValue()); +var propertyFieldColumnCount = (isOneValue ? 0 : (this.vwr.getP("propertyDataColumnCount")).intValue()); +if (!isOneValue && dataLabel.indexOf(" ") >= 0) { +if (tokens.length == 3) { +dataLabel = tokens[0]; +atomNumberField = JU.PT.parseInt(tokens[1]); +propertyField = JU.PT.parseInt(tokens[2]); +}if (tokens.length == 5) { +dataLabel = tokens[0]; +atomNumberField = JU.PT.parseInt(tokens[1]); +atomNumberFieldColumnCount = JU.PT.parseInt(tokens[2]); +propertyField = JU.PT.parseInt(tokens[3]); +propertyFieldColumnCount = JU.PT.parseInt(tokens[4]); +}}if (atomNumberField < 0) atomNumberField = 0; +if (propertyField < 0) propertyField = 0; +var ac = this.vwr.ms.ac; +var atomMap = null; +var bsTemp = JU.BS.newN(ac); +if (atomNumberField > 0) { +atomMap = Clazz.newIntArray (ac + 2, 0); +for (var j = 0; j <= ac; j++) atomMap[j] = -1; + +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +var atomNo = this.vwr.ms.at[j].getAtomNumber(); +if (atomNo > ac + 1 || atomNo < 0 || bsTemp.get(atomNo)) continue; +bsTemp.set(atomNo); +atomMap[atomNo] = j; +} +d[2] = atomMap; +} else { +d[2] = JU.BSUtil.copy(bs); +}d[1] = dataString; +d[3] = Integer.$valueOf(0); +this.vwr.setData(dataType, d, ac, atomNumberField, atomNumberFieldColumnCount, propertyField, propertyFieldColumnCount); +return; +}if ("occupany".equals(dataType)) dataType = "occupancy"; +var userType = JM.AtomCollection.getUserSettableType(dataType); +if (userType > -1) { +this.vwr.setAtomData(userType, dataType, dataString, isDefault); +return; +}d[0] = dataLabel; +d[1] = dataString; +d[3] = Integer.$valueOf(0); +this.vwr.setData(dataType, d, 0, 0, 0, 0, 0); +}); +Clazz.defineMethod(c$, "ellipsoid", +function(){ +var eval = this.e; +var mad = 0; +var i = 1; +var translucentLevel = 3.4028235E38; +var checkMore = false; +var isSet = false; +this.setShapeProperty(20, "thisID", null); +switch (this.getToken(1).tok) { +case 1073742335: +mad = 2147483647; +break; +case 1073742334: +break; +case 2: +mad = this.intParameter(1); +break; +case 36867: +this.e.sm.loadShape(20); +this.setShapeProperty(20, "select", this.paramAsStr(2)); +i = eval.iToken; +checkMore = true; +isSet = true; +break; +case 1073741974: +case 268441089: +case 1073741824: +this.e.sm.loadShape(20); +if (eval.theTok == 1073741974) i++; +this.setShapeId(20, i, false); +i = eval.iToken; +checkMore = true; +break; +default: +this.invArg(); +} +if (!checkMore) { +eval.setShapeSizeBs(20, mad, null); +return; +}var colorArgb = Clazz.newIntArray(-1, [-2147483648]); +while (++i < this.slen) { +var key = this.paramAsStr(i); +var value = null; +this.getToken(i); +if (!isSet) switch (eval.theTok) { +case 1073742330: +key = "points"; +var data = new Array(3); +data[0] = eval.objectNameParameter(++i); +if (this.chk) continue; +eval.getShapePropertyData(24, "getVertices", data); +value = data; +break; +case 1825200146: +value = this.e.optParameterAsString(++i); +if ((value).length == 0) continue; +break; +case 1611272194: +var axes = new Array(3); +var l = null; +switch (this.getToken(i + 1).tok) { +case 11: +i++; +var m = eval.theToken.value; +for (var im = 3; --im >= 0; ) m.getColumnV(im, axes[im] = new JU.V3()); + +break; +case 1073742195: +i += 2; +case 268437504: +l = new JU.Lst(); +for (var i1 = 3; --i1 >= 0; ) { +switch (this.tokAt(++i)) { +case 268437504: +break; +default: +if (eval.isCenterParameter(i)) { +l.addLast(JS.SV.newV(8, this.centerParameter(i))); +} else if (this.tokAt(i) == 268437504) { +} else { +l.addLast(this.getToken(i)); +}} +i = eval.iToken; +} +if (this.getToken(++i).tok != 268437505) this.invArg(); +break; +case 7: +l = (eval.theToken).getList(); +switch (l.size()) { +case 1: +var l1 = new JU.Lst(); +for (var il = 3; --il >= 0; ) l1.addLast(this.getToken(++i)); + +l = l1; +break; +case 3: +break; +default: +this.invArg(); +break; +} +break; +default: +for (var j = 0; j < 3; j++) { +axes[j] = new JU.V3(); +axes[j].setT(this.centerParameter(++i)); +i = eval.iToken; +} +break; +} +if (l != null) { +for (var k = 3; --k >= 0; ) { +var v = l.get(k); +switch (v.tok) { +case 7: +axes[k] = JU.V3.new3(JS.SV.fValue(v.getList().get(0)), JS.SV.fValue(v.getList().get(1)), JS.SV.fValue(v.getList().get(2))); +break; +case 8: +axes[k] = JU.V3.newV(v.value); +break; +} +} +}i = eval.iToken; +value = axes; +break; +case 12289: +value = this.centerParameter(++i); +i = eval.iToken; +break; +case 1094713359: +value = Integer.$valueOf(this.intParameter(++i)); +break; +case 12291: +value = Boolean.TRUE; +this.checkLength(i + 1); +break; +} +if (value == null) switch (eval.theTok) { +case 1073742335: +key = "on"; +value = Boolean.TRUE; +break; +case 1073742334: +key = "on"; +value = Boolean.FALSE; +break; +case 536875059: +if (this.isFloatParameter(i + 1)) { +value = Float.$valueOf(this.floatParameter(++i)); +} else if (eval.isCenterParameter(i)) { +var p = this.centerParameter(i); +value = Clazz.newFloatArray(-1, [p.x, p.y, p.z]); +} else { +value = eval.floatParameterSet(++i, 3, 3); +}i = eval.iToken; +break; +case 12290: +case 10: +case 1073742325: +key = "atoms"; +value = this.atomExpressionAt(i); +i = eval.iToken; +break; +case 1765808134: +case 603979967: +case 1073742074: +translucentLevel = this.getColorTrans(eval, i, true, colorArgb); +i = eval.iToken; +continue; +case 1073742075: +value = this.paramAsStr(++i); +break; +} +if (value == null) this.invArg(); +this.setShapeProperty(20, key.toLowerCase(), value); +} +this.finalizeObject(20, colorArgb[0], translucentLevel, 0, false, null, 0, null); +this.setShapeProperty(20, "thisID", null); +}); +Clazz.defineMethod(c$, "image", +function(){ +if (!this.chk) this.vwr.getConsole(); +var pt = 1; +var id = null; +if (this.tokAt(1) == 1073741974) { +id = this.e.optParameterAsString(++pt); +pt++; +}var fileName = this.e.optParameterAsString(pt); +var isClose = this.e.optParameterAsString(this.slen - 1).equalsIgnoreCase("close"); +if (!isClose && (this.slen == pt || this.slen == pt + 2)) { +var width = (this.slen == pt + 2 ? this.intParameter(pt++) : -1); +var height = (width < 0 ? -1 : this.intParameter(pt)); +var params = new java.util.Hashtable(); +params.put("fileName", "\1\1" + id); +params.put("backgroundColor", Integer.$valueOf(this.vwr.getBackgroundArgb())); +params.put("type", "png"); +params.put("quality", Integer.$valueOf(-1)); +params.put("width", Integer.$valueOf(width)); +params.put("height", Integer.$valueOf(height)); +if (!this.chk) this.vwr.processWriteOrCapture(params); +return; +}pt++; +if (isClose) { +switch (this.slen) { +case 2: +fileName = "closeall"; +break; +case 3: +case 4: +break; +default: +this.checkLength(0); +} +}if (!this.chk) this.vwr.fm.loadImage(isClose ? "\1close" : fileName, "\1" + fileName + "\1" + ("".equals(id) || id == null ? null : id), false); +}); +Clazz.defineMethod(c$, "invertSelected", +function(){ +var e = this.e; +var pt = null; +var plane = null; +var bs = null; +var iAtom = -2147483648; +var ipt = 1; +switch (this.tokAt(1)) { +case 0: +if (this.chk) return; +bs = this.vwr.bsA(); +pt = this.vwr.ms.getAtomSetCenter(bs); +this.vwr.invertAtomCoord(pt, null, bs, -1, false); +return; +case 528443: +case 1153433601: +ipt++; +case 10: +case 1073742325: +case 12290: +bs = this.atomExpressionAt(ipt); +if (!e.isAtomExpression(e.iToken + 1)) { +e.checkLengthErrorPt(e.iToken + 1, e.iToken + 1); +if (!this.chk) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.vwr.invertAtomCoord(null, null, bs, i, false); +} +}return; +}iAtom = bs.nextSetBit(0); +bs = this.atomExpressionAt(e.iToken + 1); +break; +case 134217751: +pt = e.centerParameter(2, null); +break; +case 134217750: +plane = e.planeParameter(1, false); +break; +case 134219777: +plane = e.hklParameter(2, null, true); +break; +} +e.checkLengthErrorPt(e.iToken + 1, 1); +if (plane == null && pt == null && iAtom == -2147483648) this.invArg(); +if (this.chk) return; +if (iAtom == -1) return; +this.vwr.invertSelected(pt, plane, iAtom, bs); +}); +Clazz.defineMethod(c$, "mapProperty", +function(){ +var bsFrom; +var bsTo; +var property1; +var property2; +var mapKey; +var tokProp1 = 0; +var tokProp2 = 0; +var tokKey = 0; +var e = this.e; +while (true) { +if (this.tokAt(1) == 1113589787) { +bsFrom = this.vwr.bsA(); +bsTo = this.atomExpressionAt(2); +property1 = property2 = "selected"; +} else { +bsFrom = this.atomExpressionAt(1); +if (this.tokAt(++e.iToken) != 1073742336 || !JS.T.tokAttr(tokProp1 = this.tokAt(++e.iToken), 1077936128)) break; +property1 = this.paramAsStr(e.iToken); +bsTo = this.atomExpressionAt(++e.iToken); +if (this.tokAt(++e.iToken) != 1073742336 || !JS.T.tokAttr(tokProp2 = this.tokAt(++e.iToken), 2048)) break; +property2 = this.paramAsStr(e.iToken); +}if (JS.T.tokAttr(tokKey = this.tokAt(e.iToken + 1), 1077936128)) mapKey = this.paramAsStr(++e.iToken); + else mapKey = JS.T.nameOf(tokKey = 1094715393); +e.checkLast(e.iToken); +if (this.chk) return; +var bsOut = null; +this.showString("mapping " + property1.toUpperCase() + " for " + bsFrom.cardinality() + " atoms to " + property2.toUpperCase() + " for " + bsTo.cardinality() + " atoms using " + mapKey.toUpperCase()); +if (JS.T.tokAttrOr(tokProp1, 1094713344, 1111490560) && JS.T.tokAttrOr(tokProp2, 1094713344, 1111490560) && JS.T.tokAttrOr(tokKey, 1094713344, 1111490560)) { +var data1 = this.getBitsetPropertyFloat(bsFrom, tokProp1 | 224, null, NaN, NaN); +var data2 = this.getBitsetPropertyFloat(bsFrom, tokKey | 224, null, NaN, NaN); +var data3 = this.getBitsetPropertyFloat(bsTo, tokKey | 224, null, NaN, NaN); +var isProperty = (tokProp2 == 1715472409); +var dataOut = Clazz.newFloatArray (isProperty ? this.vwr.ms.ac : data3.length, 0); +bsOut = new JU.BS(); +if (data1.length == data2.length) { +var ht = new java.util.Hashtable(); +for (var i = 0; i < data1.length; i++) { +ht.put(Float.$valueOf(data2[i]), Float.$valueOf(data1[i])); +} +var pt = -1; +var nOut = 0; +for (var i = 0; i < data3.length; i++) { +pt = bsTo.nextSetBit(pt + 1); +var F = ht.get(Float.$valueOf(data3[i])); +if (F == null) continue; +bsOut.set(pt); +dataOut[(isProperty ? pt : nOut)] = F.floatValue(); +nOut++; +} +if (isProperty) this.vwr.setData(property2, Clazz.newArray(-1, [property2, dataOut, bsOut, Integer.$valueOf(1), Boolean.TRUE]), this.vwr.ms.ac, 0, 0, 2147483647, 0); + else if (!JS.T.tokAttr(tokProp2, 2048)) this.error(56); + else this.vwr.setAtomProperty(bsOut, tokProp2, 0, 0, null, dataOut, null); +}}if (bsOut == null) { +var format = "{" + mapKey + "=%[" + mapKey + "]}." + property2 + " = %[" + property1 + "]"; +var data = this.getBitsetIdent(bsFrom, format, null, false, 2147483647, false); +var sb = new JU.SB(); +for (var i = 0; i < data.length; i++) if (data[i].indexOf("null") < 0) sb.append(data[i]).appendC('\n'); + +if (JU.Logger.debugging) JU.Logger.debug(sb.toString()); +var bsSubset = JU.BSUtil.copy(this.vwr.slm.bsSubset); +this.vwr.slm.setSelectionSubset(bsTo); +try { +e.runScript(sb.toString()); +} catch (e$$) { +if (Clazz.exceptionOf(e$$, Exception)){ +var ex = e$$; +{ +this.vwr.slm.setSelectionSubset(bsSubset); +e.errorStr(-1, "Error: " + ex.getMessage()); +} +} else if (Clazz.exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.vwr.slm.setSelectionSubset(bsSubset); +e.errorStr(-1, "Error: " + er.toString()); +} +} else { +throw e$$; +} +} +this.vwr.slm.setSelectionSubset(bsSubset); +}this.showString("DONE"); +return; +} +this.invArg(); +}); +Clazz.defineMethod(c$, "minimize", +function(isModelkit){ +var bsSelected = null; +var steps = 2147483647; +var crit = 0; +var addHydrogen = false; +var isSilent = false; +var bsFixed = null; +var selectedOnly = false; +var groupOnly = false; +var minimizer = this.vwr.getMinimizer(false); +var range = 0; +for (var i = (isModelkit ? 2 : 1); i < this.slen; i++) { +switch (this.getToken(i).tok) { +case 1073741905: +crit = this.floatParameter(++i); +continue; +case 1073742114: +range = this.floatParameter(++i); +continue; +case 1073741935: +steps = 0; +continue; +case 1073741874: +case 1073742162: +this.checkLength(2); +if (this.chk || minimizer == null) return; +minimizer.setProperty(this.paramAsStr(i), null); +return; +case 1073741882: +this.checkLength(2); +if (this.chk || minimizer == null) return; +minimizer.setProperty("clear", null); +return; +case 1073741894: +if (i != 1) this.invArg(); +var n = 0; +var targetValue = 0; +var aList = Clazz.newIntArray (5, 0); +if (this.tokAt(++i) == 1073741882) { +this.checkLength(3); +} else { +while (n < 4 && !this.isFloatParameter(i)) { +aList[++n] = this.atomExpressionAt(i).nextSetBit(0); +i = this.e.iToken + 1; +} +aList[0] = n; +if (n == 1) this.invArg(); +targetValue = this.floatParameter(this.e.checkLast(i)); +}if (!this.chk) this.vwr.getMinimizer(true).setProperty("constraint", Clazz.newArray(-1, [aList, Float.$valueOf(targetValue)])); +return; +case 12293: +if (i != 1) this.invArg(); +if (this.slen == ++i) { +if (!this.chk) { +var bs = this.vwr.getMinimizer(true).getProperty("fixed", 0); +if (bs == null) { +this.e.showString("no atoms are fixed for minimization"); +} else { +n = bs.cardinality(); +this.e.showString(n + (n == 1 ? " atom is" : " atoms are") + " fixed for minimization: " + bs + "\nunfix them with MINIMIZE FIX NONE"); +}}return; +}bsFixed = this.atomExpressionAt(i); +if (bsFixed.nextSetBit(0) < 0) bsFixed = null; +i = this.e.iToken; +if (!this.chk) this.vwr.getMinimizer(true).setProperty("fixed", bsFixed); +if (i + 1 == this.slen) return; +continue; +case 1073741828: +addHydrogen = true; +continue; +case 1073742072: +case 1113589787: +selectedOnly = true; +break; +case 1086324742: +groupOnly = true; +break; +case 1073742148: +isSilent = true; +break; +case 266298: +steps = this.intParameter(++i); +continue; +case 10: +case 1073742325: +selectedOnly = true; +case 1275082241: +if (this.e.theTok == 1275082241) i++; +bsSelected = this.atomExpressionAt(i); +i = this.e.iToken; +if (this.tokAt(i + 1) == 1073742072) { +i++; +selectedOnly = true; +}continue; +default: +this.invArg(); +break; +} +} +if (isModelkit && (addHydrogen || selectedOnly || groupOnly)) this.invArg(); +if (!this.chk) try { +this.vwr.minimize(this.e, steps, crit, bsSelected, bsFixed, null, range, (addHydrogen ? 16 : 0) | (isModelkit ? 256 : 0) | (selectedOnly ? 32 : 0) | (groupOnly ? 64 : 0) | (isSilent ? 1 : 0)); +} catch (e1) { +if (Clazz.exceptionOf(e1, Exception)){ +throw new JS.ScriptInterruption(this.e, "minimize", 1); +} else { +throw e1; +} +} +}, "~B"); +Clazz.defineMethod(c$, "modulation", +function(){ +var qtOffset = null; +var eval = this.e; +var mod = true; +var isQ = false; +var bs = null; +var i = 1; +switch (this.getToken(i).tok) { +case 1073742334: +mod = false; +case 0: +case 1073742335: +break; +case 12290: +case 10: +case 1073742325: +bs = this.atomExpressionAt(1); +switch (this.tokAt(eval.iToken + 1)) { +case 0: +break; +case 1073742334: +mod = false; +case 1073742335: +eval.iToken++; +break; +} +eval.checkLast(eval.iToken); +break; +case 1073742332: +case 8: +qtOffset = eval.getPoint3f(1, false, true); +isQ = (this.tokAt(eval.iToken + 1) == 1073742335); +break; +default: +var s = eval.theToken.value.toString(); +i++; +if (s.equalsIgnoreCase("t")) { +eval.theTok = 3; +} else if (s.equalsIgnoreCase("m") || s.equalsIgnoreCase("q")) { +eval.theTok = 2; +} else { +this.invArg(); +}case 3: +case 2: +switch (eval.theTok) { +case 3: +if (this.isFloatParameter(i)) { +var t1 = this.floatParameter(i); +qtOffset = JU.P3.new3(t1, t1, t1); +} else { +qtOffset = eval.getPoint3f(i, false, true); +}break; +case 2: +if (this.tokAt(i) == 2) { +var t = this.intParameter(i); +qtOffset = JU.P3.new3(t, t, t); +} else { +qtOffset = eval.getPoint3f(i, false, true); +}isQ = true; +break; +} +break; +case 536875059: +var scale = this.floatParameter(2); +if (!this.chk) this.vwr.setFloatProperty("modulationScale", scale); +return; +} +if (!this.chk) { +this.vwr.tm.setVibrationPeriod(0); +this.vwr.setModulation(bs, mod, qtOffset, isQ); +}}); +Clazz.defineMethod(c$, "mutate", +function(){ +var i = this.e.iToken; +var bs; +var alphaType = null; +var sequence = null; +var phipsi = null; +var isCreate = false; +switch (this.tokAt(++i)) { +case 1073741904: +alphaType = "alpha"; +isCreate = true; +bs = null; +switch (this.tokAt(++i)) { +case 0: +this.invArg(); +break; +default: +sequence = this.e.paramAsStr(i); +i = this.e.iToken; +switch (this.tokAt(i + 1)) { +case 0: +break; +case 268437504: +case 1073742195: +case 7: +alphaType = null; +phipsi = this.e.floatParameterSet(++i, 2, 2147483647); +if (phipsi.length % 2 == 1) this.invArg(); +i = this.e.iToken; +break; +default: +alphaType = this.e.paramAsStr(++i); +i = this.e.iToken; +break; +} +break; +} +break; +case 2: +this.st[1] = JS.T.o(4, "" + this.st[1].value); +default: +bs = this.atomExpressionAt(i); +i = ++this.e.iToken; +break; +case 268441089: +bs = this.vwr.getFrameAtoms(); +i = ++this.e.iToken; +break; +} +if (!this.chk && bs != null) { +bs.and(this.vwr.getFrameAtoms()); +var iatom = bs.nextSetBit(0); +if (iatom < 0) this.invArg(); +var imodel = this.vwr.ms.at[iatom].mi; +if (this.vwr.ms.isTrajectory(imodel) || !this.vwr.ms.am[imodel].isBioModel) return; +}if (sequence == null) sequence = this.e.optParameterAsString(i); +this.e.checkLast(i); +if (this.chk) return; +var isOneLetter = sequence.startsWith("~"); +var isFile = (!isOneLetter && !isCreate && (sequence.indexOf(".") >= 0 || sequence.indexOf("-") < 0 && sequence.length > 3 && sequence.startsWith("=="))); +var list; +if (isFile) { +list = Clazz.newArray(-1, [sequence]); +sequence = null; +} else { +sequence = JU.PT.replaceAllCharacters(sequence, ",; \t\n", " ").trim().toUpperCase(); +if (!isOneLetter && sequence.indexOf("-") >= 0) { +list = JU.PT.split(sequence, "-"); +} else { +if (isOneLetter || sequence.length != 3 || !this.vwr.getJBR().isKnownPDBGroup(sequence, 20)) sequence = this.vwr.getJBR().toStdAmino3(isOneLetter ? sequence.substring(1) : sequence); +list = JU.PT.getTokens(sequence); +}}this.e.iToken = this.e.slen; +if (list.length > 0 && !this.vwr.getJBR().getBioModelSet(this.vwr.ms).mutate(bs, sequence, list, alphaType, phipsi)) this.invArg(); +}); +Clazz.defineMethod(c$, "navigate", +function(){ +var eval = this.e; +if (this.slen == 1) { +eval.setBooleanProperty("navigationMode", true); +return; +}var rotAxis = JU.V3.new3(0, 1, 0); +var list = new JU.Lst(); +var pt; +if (this.slen == 2) { +switch (this.getToken(1).tok) { +case 1073742335: +case 1073742334: +if (this.chk) return; +eval.setObjectMad10(34, "axes", 10); +this.setShapeProperty(34, "position", JU.P3.new3(50, 50, 3.4028235E38)); +eval.setBooleanProperty("navigationMode", true); +this.vwr.tm.setNavOn(eval.theTok == 1073742335); +return; +case 1073742162: +if (!this.chk) this.vwr.tm.setNavXYZ(0, 0, 0); +return; +case 8: +case 1112152078: +break; +default: +this.invArg(); +} +}if (!this.chk && !this.vwr.getBoolean(603979889)) eval.setBooleanProperty("navigationMode", true); +for (var i = 1; i < this.slen; i++) { +var timeSec = (this.isFloatParameter(i) ? this.floatParameter(i++) : 2); +if (timeSec < 0) this.invArg(); +if (!this.chk && timeSec > 0) eval.refresh(false); +switch (this.getToken(i).tok) { +case 8: +case 1073742332: +pt = this.getPoint3f(i, true); +eval.iToken++; +if (eval.iToken != this.slen) this.invArg(); +if (!this.chk) this.vwr.tm.setNavXYZ(pt.x, pt.y, pt.z); +return; +case 554176526: +var depth = this.floatParameter(++i); +if (!this.chk) list.addLast( Clazz.newArray(-1, [Integer.$valueOf(554176526), Float.$valueOf(timeSec), Float.$valueOf(depth)])); +continue; +case 12289: +pt = this.centerParameter(++i); +i = eval.iToken; +if (!this.chk) list.addLast( Clazz.newArray(-1, [Integer.$valueOf(134217751), Float.$valueOf(timeSec), pt])); +continue; +case 528432: +switch (this.getToken(++i).tok) { +case 1111492629: +rotAxis.set(1, 0, 0); +i++; +break; +case 1111492630: +rotAxis.set(0, 1, 0); +i++; +break; +case 1111492631: +rotAxis.set(0, 0, 1); +i++; +break; +case 8: +case 1073742332: +rotAxis.setT(this.getPoint3f(i, true)); +i = eval.iToken + 1; +break; +case 1073741824: +this.invArg(); +break; +} +var degrees = this.floatParameter(i); +if (!this.chk) list.addLast( Clazz.newArray(-1, [Integer.$valueOf(528432), Float.$valueOf(timeSec), rotAxis, Float.$valueOf(degrees)])); +continue; +case 4160: +var x = NaN; +var y = NaN; +if (this.isFloatParameter(++i)) { +x = this.floatParameter(i); +y = this.floatParameter(++i); +} else { +switch (this.tokAt(i)) { +case 1111492629: +x = this.floatParameter(++i); +break; +case 1111492630: +y = this.floatParameter(++i); +break; +default: +pt = this.centerParameter(i); +i = eval.iToken; +if (!this.chk) list.addLast( Clazz.newArray(-1, [Integer.$valueOf(4160), Float.$valueOf(timeSec), pt])); +continue; +} +}if (!this.chk) list.addLast( Clazz.newArray(-1, [Integer.$valueOf(268441090), Float.$valueOf(timeSec), Float.$valueOf(x), Float.$valueOf(y)])); +continue; +case 268441088: +continue; +case 1112152078: +var pathGuide; +var vp = new JU.Lst(); +var bs; +if (eval.isAtomExpression(i + 1)) { +bs = this.atomExpressionAt(++i); +i = eval.iToken; +} else { +bs = this.vwr.bsA(); +}if (this.chk) return; +this.vwr.getPolymerPointsAndVectors(bs, vp); +var n; +if ((n = vp.size()) > 0) { +pathGuide = new Array(n); +for (var j = 0; j < n; j++) { +pathGuide[j] = vp.get(j); +} +list.addLast( Clazz.newArray(-1, [Integer.$valueOf(1112152078), Float.$valueOf(timeSec), pathGuide])); +continue; +}break; +case 1073742084: +var path; +var theta = null; +if (this.getToken(i + 1).tok == 1073742330) { +i++; +var pathID = eval.objectNameParameter(++i); +if (this.chk) return; +this.setShapeProperty(22, "thisID", pathID); +path = this.getShapeProperty(22, "vertices"); +eval.refresh(false); +if (path == null) this.invArg(); +var indexStart = Clazz.floatToInt(this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 0); +var indexEnd = Clazz.floatToInt(this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 2147483647); +list.addLast( Clazz.newArray(-1, [Integer.$valueOf(1073742084), Float.$valueOf(timeSec), path, theta, Clazz.newIntArray(-1, [indexStart, indexEnd])])); +continue; +}var v = new JU.Lst(); +while (eval.isCenterParameter(i + 1)) { +v.addLast(this.centerParameter(++i)); +i = eval.iToken; +} +if (v.size() > 0) { +path = v.toArray( new Array(v.size())); +if (!this.chk) list.addLast( Clazz.newArray(-1, [Integer.$valueOf(1073742084), Float.$valueOf(timeSec), path, theta, Clazz.newIntArray(-1, [0, 2147483647])])); +continue; +}default: +this.invArg(); +} +} +if (!this.chk && !this.vwr.isJmolDataFrame()) this.vwr.tm.navigateList(eval, list); +}); +Clazz.defineMethod(c$, "plot", +function(args){ +var e = this.e; +var modelIndex = this.vwr.am.cmi; +if (modelIndex < 0) e.errorStr(30, "plot"); +modelIndex = this.vwr.ms.getJmolDataSourceFrame(modelIndex); +var pt = args.length - 1; +var isReturnOnly = (args !== this.st); +var pdbFormat = true; +var statementSave = this.st; +if (isReturnOnly) e.st = this.st = args; +var tokCmd = (isReturnOnly ? 134222350 : args[0].tok); +var pt0 = (isReturnOnly || tokCmd == 134221850 || tokCmd == 4138 ? 0 : 1); +var filename = null; +var makeNewFrame = true; +var isDraw = false; +switch (tokCmd) { +case 4133: +case 134221850: +case 4138: +break; +case 135176: +makeNewFrame = false; +isDraw = true; +break; +case 134222350: +makeNewFrame = false; +pdbFormat = false; +break; +case 134221856: +makeNewFrame = false; +if (JS.CmdExt.tokAtArray(pt, args) == 4) { +filename = this.stringParameter(pt--); +} else if (JS.CmdExt.tokAtArray(pt - 1, args) == 1073742336) { +filename = this.paramAsStr(pt - 2) + "." + this.paramAsStr(pt); +pt -= 3; +} else { +e.st = this.st = statementSave; +e.iToken = this.st.length; +this.error(13); +}e.slen = this.slen = pt + 1; +break; +} +var qFrame = ""; +var parameters = null; +var stateScript = ""; +var isQuaternion = false; +var isDerivative = false; +var isSecondDerivative = false; +var isRamachandranRelative = false; +var props = new Array(3); +var propToks = Clazz.newIntArray (3, 0); +var bs = JU.BSUtil.copy(this.vwr.bsA()); +var preSelected = "; select " + JU.Escape.eBS(bs) + ";\n "; +var type = e.optParameterAsString(pt).toLowerCase(); +var minXYZ = null; +var maxXYZ = null; +var format = null; +var tok = JS.CmdExt.tokAtArray(pt0, args); +if (tok == 4) tok = JS.T.getTokFromName(args[pt0].value); +switch (tok) { +default: +e.iToken = 1; +this.invArg(); +break; +case 134221834: +e.iToken = 1; +type = "data"; +preSelected = ""; +break; +case 1715472409: +e.iToken = pt0 + 1; +for (var i = 0; i < 3; i++) { +switch (this.tokAt(e.iToken)) { +case 4: +propToks[i] = JS.T.getTokFromName(e.getToken(e.iToken).value); +break; +default: +propToks[i] = this.tokAt(e.iToken); +break; +case 0: +if (i == 0) this.invArg(); +case 1287653388: +case 32: +case 64: +i = 2; +continue; +} +if (propToks[i] != 1715472409 && !JS.T.tokAttr(propToks[i], 1077936128)) this.invArg(); +props[i] = this.getToken(e.iToken).value.toString(); +e.iToken++; +} +if (this.tokAt(e.iToken) == 1287653388) { +format = this.stringParameter(++e.iToken); +pdbFormat = false; +e.iToken++; +}if (this.tokAt(e.iToken) == 32) { +minXYZ = this.getPoint3f(++e.iToken, false); +e.iToken++; +}if (this.tokAt(e.iToken) == 64) { +maxXYZ = this.getPoint3f(++e.iToken, false); +e.iToken++; +}type = "property " + props[0] + (props[1] == null ? "" : " " + props[1]) + (props[2] == null ? "" : " " + props[2]); +if (bs.nextSetBit(0) < 0) bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +stateScript = "select " + JU.Escape.eBS(bs) + ";\n "; +break; +case 4138: +if (type.equalsIgnoreCase("draw")) { +isDraw = true; +type = e.optParameterAsString(--pt).toLowerCase(); +}isRamachandranRelative = (pt > pt0 && type.startsWith("r")); +type = "ramachandran" + (isRamachandranRelative ? " r" : "") + (tokCmd == 135176 ? " draw" : ""); +break; +case 134221850: +case 136314895: +qFrame = " \"" + this.vwr.getQuaternionFrame() + "\""; +stateScript = "set quaternionFrame" + qFrame + ";\n "; +isQuaternion = true; +if (type.equalsIgnoreCase("draw")) { +isDraw = true; +type = e.optParameterAsString(--pt).toLowerCase(); +}isDerivative = (type.startsWith("deriv") || type.startsWith("diff")); +isSecondDerivative = (isDerivative && type.indexOf("2") > 0); +if (isDerivative) pt--; +if (type.equalsIgnoreCase("helix") || type.equalsIgnoreCase("axis")) { +isDraw = true; +isDerivative = true; +pt = -1; +}type = ((pt <= pt0 ? "" : e.optParameterAsString(pt)) + "w").substring(0, 1); +if (type.equals("a") || type.equals("r")) isDerivative = true; +if (!JU.PT.isOneOf(type, ";w;x;y;z;r;a;")) e.evalError("QUATERNION [w,x,y,z,a,r] [difference][2]", null); +type = "quaternion " + type + (isDerivative ? " difference" : "") + (isSecondDerivative ? "2" : "") + (isDraw ? " draw" : ""); +break; +} +this.st = statementSave; +if (this.chk) return ""; +if (makeNewFrame) { +stateScript += "plot " + type; +var ptDataFrame = this.vwr.ms.getJmolDataFrameIndex(modelIndex, stateScript); +if (ptDataFrame > 0 && tokCmd != 134221856 && tokCmd != 134222350) { +this.vwr.setCurrentModelIndexClear(ptDataFrame, true); +return ""; +}}var dataX = null; +var dataY = null; +var dataZ = null; +var propData = new Array(3); +if (tok == 1715472409) { +dataX = this.getBitsetPropertyFloat(bs, propToks[0] | 224, propToks[0] == 1715472409 ? props[0] : null, (minXYZ == null ? NaN : minXYZ.x), (maxXYZ == null ? NaN : maxXYZ.x)); +propData[0] = props[0] + " " + JU.Escape.eAF(dataX); +if (props[1] != null) { +dataY = this.getBitsetPropertyFloat(bs, propToks[1] | 224, propToks[1] == 1715472409 ? props[1] : null, (minXYZ == null ? NaN : minXYZ.y), (maxXYZ == null ? NaN : maxXYZ.y)); +propData[1] = props[1] + " " + JU.Escape.eAF(dataY); +}if (props[2] != null) { +dataZ = this.getBitsetPropertyFloat(bs, propToks[2] | 224, propToks[2] == 1715472409 ? props[2] : null, (minXYZ == null ? NaN : minXYZ.z), (maxXYZ == null ? NaN : maxXYZ.z)); +propData[2] = props[2] + " " + JU.Escape.eAF(dataZ); +}if (minXYZ == null) minXYZ = JU.P3.new3(this.getPlotMinMax(dataX, false, propToks[0]), this.getPlotMinMax(dataY, false, propToks[1]), this.getPlotMinMax(dataZ, false, propToks[2])); +if (maxXYZ == null) maxXYZ = JU.P3.new3(this.getPlotMinMax(dataX, true, propToks[0]), this.getPlotMinMax(dataY, true, propToks[1]), this.getPlotMinMax(dataZ, true, propToks[2])); +JU.Logger.info("plot min/max: " + minXYZ + " " + maxXYZ); +var center = null; +var factors = null; +if (pdbFormat) { +factors = JU.P3.new3(1, 1, 1); +center = new JU.P3(); +center.ave(maxXYZ, minXYZ); +factors.sub2(maxXYZ, minXYZ); +factors.set(factors.x / 200, factors.y / 200, factors.z / 200); +if (JS.T.tokAttr(propToks[0], 1094713344)) { +factors.x = 1; +center.x = 0; +} else if (factors.x > 0.1 && factors.x <= 10) { +factors.x = 1; +}if (JS.T.tokAttr(propToks[1], 1094713344)) { +factors.y = 1; +center.y = 0; +} else if (factors.y > 0.1 && factors.y <= 10) { +factors.y = 1; +}if (JS.T.tokAttr(propToks[2], 1094713344)) { +factors.z = 1; +center.z = 0; +} else if (factors.z > 0.1 && factors.z <= 10) { +factors.z = 1; +}if (props[2] == null || props[1] == null) center.z = minXYZ.z = maxXYZ.z = factors.z = 0; +for (var i = 0; i < dataX.length; i++) dataX[i] = (dataX[i] - center.x) / factors.x; + +if (props[1] != null) for (var i = 0; i < dataY.length; i++) dataY[i] = (dataY[i] - center.y) / factors.y; + +if (props[2] != null) for (var i = 0; i < dataZ.length; i++) dataZ[i] = (dataZ[i] - center.z) / factors.z; + +}parameters = Clazz.newArray(-1, [bs, dataX, dataY, dataZ, minXYZ, maxXYZ, factors, center, format, propData]); +}if (tokCmd == 134221856) return this.vwr.writeFileData(filename, "PLOT_" + type, modelIndex, parameters); +var data = (type.equals("data") ? "1 0 H 0 0 0 # Jmol PDB-encoded data" : this.vwr.getPdbData(modelIndex, type, null, parameters, null, true)); +if (tokCmd == 134222350) return data; +if (JU.Logger.debugging) JU.Logger.debug(data); +if (tokCmd == 135176) { +e.runScript(data); +return ""; +}var savedFileInfo = this.vwr.fm.getFileInfo(); +var oldAppendNew = this.vwr.getBoolean(603979792); +this.vwr.g.appendNew = true; +var isOK = (data != null && this.vwr.openStringInlineParamsAppend(data, null, true) == null); +this.vwr.g.appendNew = oldAppendNew; +this.vwr.fm.setFileInfo(savedFileInfo); +if (!isOK) return ""; +var modelCount = this.vwr.ms.mc; +this.vwr.ms.setJmolDataFrame(stateScript, modelIndex, modelCount - 1); +if (tok != 1715472409) stateScript += ";\n" + preSelected; +var ss = this.vwr.addStateScript(stateScript, true, false); +var radius = 150; +var script; +switch (tok) { +default: +script = "frame 0.0; frame last; reset;select visible;wireframe only;"; +radius = 10; +break; +case 1715472409: +this.vwr.setFrameTitle(modelCount - 1, type + " plot for model " + this.vwr.getModelNumberDotted(modelIndex)); +script = "frame 0.0; frame last; reset;select visible; spacefill 3.0; wireframe 0;draw plotAxisX" + modelCount + " {100 -100 -100} {-100 -100 -100} \"" + props[0] + "\";" + "draw plotAxisY" + modelCount + " {-100 100 -100} {-100 -100 -100} \"" + props[1] + "\";"; +if (props[2] != null) script += "draw plotAxisZ" + modelCount + " {-100 -100 100} {-100 -100 -100} \"" + props[2] + "\";"; +break; +case 4138: +this.vwr.setFrameTitle(modelCount - 1, "ramachandran plot for model " + this.vwr.getModelNumberDotted(modelIndex)); +script = "frame 0.0; frame last; reset;select visible; color structure; spacefill 3.0; wireframe 0;draw ramaAxisX" + modelCount + " {100 0 0} {-100 0 0} \"phi\";" + "draw ramaAxisY" + modelCount + " {0 100 0} {0 -100 0} \"psi\";"; +break; +case 134221850: +case 136314895: +this.vwr.setFrameTitle(modelCount - 1, type.$replace('w', ' ') + qFrame + " for model " + this.vwr.getModelNumberDotted(modelIndex)); +var color = (JU.C.getHexCode(this.vwr.cm.colixBackgroundContrast)); +script = "frame 0.0; frame last; reset;select visible; wireframe 0; spacefill 3.0; isosurface quatSphere" + modelCount + " color " + color + " sphere 100.0 mesh nofill frontonly translucent 0.8;" + "draw quatAxis" + modelCount + "X {100 0 0} {-100 0 0} color red \"x\";" + "draw quatAxis" + modelCount + "Y {0 100 0} {0 -100 0} color green \"y\";" + "draw quatAxis" + modelCount + "Z {0 0 100} {0 0 -100} color blue \"z\";" + "color structure;" + "draw quatCenter" + modelCount + "{0 0 0} scale 0.02;"; +break; +} +e.runScript(script + preSelected); +ss.setModelIndex(this.vwr.am.cmi); +this.vwr.setRotationRadius(radius, true); +e.sm.loadShape(31); +this.showString("frame " + this.vwr.getModelNumberDotted(modelCount - 1) + (type.length > 0 ? " created: " + type + (isQuaternion ? qFrame : "") : "")); +return ""; +}, "~A"); +Clazz.defineMethod(c$, "polyhedra", +function(){ +var eval = this.e; +var haveBonds = (this.slen == 1); +var haveCenter = false; +var needsGenerating = haveBonds; +var onOffDelete = false; +var typeSeen = false; +var edgeParameterSeen = false; +var scale = NaN; +var nAtomSets = 0; +eval.sm.loadShape(21); +this.setShapeProperty(21, "init", Boolean.TRUE); +var translucentLevel = 3.4028235E38; +var radius = -1; +var colorArgb = Clazz.newIntArray(-1, [-2147483648]); +var noToParam = -1; +var atomPt = -1; +var offset = null; +var foffset = 0; +var id = null; +var ok = false; +var modifyOnly = false; +var faces = null; +var points = null; +if (this.slen == 2 && this.tokAt(1) == 1073742001) { +if (!this.chk) eval.showStringPrint(this.getShapeProperty(21, "list"), false); +return; +}for (var i = 1; i < this.slen; ++i) { +var propertyName = null; +var propertyValue = null; +switch (this.getToken(i).tok) { +case 1073742197: +scale = NaN; +case 1073741872: +var index = (this.e.theTok == 1073742197 ? -1 : (this.tokAt(i + 1) == 2 ? this.intParameter(++i) : 1)); +if (!this.chk) (J.api.Interface.getInterface("JU.BZone", this.vwr, "script")).createBZ(this.vwr, index, null, false, id, scale, foffset, offset); +return; +case 6: +propertyName = "info"; +propertyValue = (this.e.theToken).getMap(); +needsGenerating = true; +break; +case 134217751: +propertyName = "points"; +propertyValue = Float.$valueOf(this.tokAt(++i) == 1073742334 ? 0 : this.e.floatParameter(i)); +ok = true; +break; +case 536875059: +scale = this.floatParameter(++i); +ok = true; +continue; +case 1814695966: +if (id != null) this.invArg(); +propertyName = "unitCell"; +propertyValue = Boolean.TRUE; +needsGenerating = true; +break; +case 1073742072: +this.e.restrictSelected(false, false); +eval.theTok = 1073742335; +case 1073742335: +case 12291: +case 1073742334: +if (i + 1 != this.slen || needsGenerating || nAtomSets > 1) this.error(18); +propertyName = (eval.theTok == 1073742334 ? "off" : eval.theTok == 1073742335 ? "on" : "delete"); +onOffDelete = true; +break; +case 7: +if (id == null || needsGenerating) this.invArg(); +needsGenerating = true; +faces = this.getIntArray2(i); +points = this.getAllPoints(eval.iToken + 1, 3); +i = eval.iToken; +if (Clazz.instanceOf(points[0],"JM.Atom")) this.setShapeProperty(21, "model", Integer.$valueOf((points[0]).getModelIndex())); +propertyName = "definedFaces"; +propertyValue = Clazz.newArray(-1, [faces, points]); +break; +case 1073741961: +propertyName = "full"; +break; +case 2: +if (id != null) this.invArg(); +propertyName = "nVertices"; +propertyValue = Integer.$valueOf(this.intParameter(i)); +needsGenerating = true; +if (this.tokAt(i + 1) == 268436992) i++; +break; +case 1677721602: +if (id != null) this.invArg(); +if (nAtomSets > 0) this.invPO(); +needsGenerating = true; +propertyName = "bonds"; +haveBonds = true; +break; +case 1073741852: +if (radius != -1) this.invArg(); +radius = 0; +i--; +case 1665140738: +i++; +case 3: +if (id != null) this.invArg(); +if (nAtomSets > 0) this.invPO(); +propertyName = (radius <= 0 ? "radius" : "radius1"); +propertyValue = Float.$valueOf(radius = (radius == 0 ? 0 : this.floatParameter(i))); +needsGenerating = true; +break; +case 1073742066: +if (this.isFloatParameter(i + 1)) { +foffset = this.floatParameter(++i); +} else { +offset = this.e.centerParameter(++i, null); +i = eval.iToken; +}ok = true; +continue; +case 1073741937: +this.setShapeProperty(21, "collapsed", null); +case 1073742099: +case 1073741924: +propertyName = JS.T.nameOf(eval.theTok); +switch (this.tokAt(i + 1)) { +case 268440324: +case 268436992: +i++; +break; +} +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1094717454: +if (id == null) this.invArg(); +propertyName = "model"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +break; +case 1073742170: +if (nAtomSets > 1 || id != null && !haveCenter || noToParam == i) this.invPO(); +nAtomSets = 3; +if (eval.isAtomExpression(++i)) { +propertyName = (needsGenerating || haveCenter ? "to" : "toBitSet"); +propertyValue = this.atomExpressionAt(i); +} else if (eval.isArrayParameter(i)) { +propertyName = "toVertices"; +propertyValue = eval.getPointArray(i, -1, false); +} else { +this.error(19); +}i = eval.iToken; +needsGenerating = true; +break; +case 12290: +case 10: +case 1073742325: +if (typeSeen) this.invPO(); +switch (++nAtomSets) { +case 1: +if (id != null) this.invArg(); +propertyName = "centers"; +break; +case 2: +propertyName = "to"; +needsGenerating = true; +break; +default: +eval.bad(); +} +propertyValue = this.atomExpressionAt(i); +atomPt = i = eval.iToken; +needsGenerating = new Boolean (needsGenerating | (i + 1 == this.slen)).valueOf(); +break; +case 1073741948: +case 1073741886: +needsGenerating = true; +modifyOnly = (i == 1); +if (typeSeen) this.error(18); +typeSeen = true; +propertyName = (this.e.theTok == 1073741886 ? "collapsed" : null); +if (this.isFloatParameter(i + 1)) this.setShapeProperty(21, "faceCenterOffset", Float.$valueOf(this.floatParameter(++i))); +break; +case 1765808134: +case 603979967: +case 1073742074: +if (atomPt == i - 1) needsGenerating = true; +translucentLevel = this.getColorTrans(eval, i, true, colorArgb); +ok = true; +i = eval.iToken; +continue; +case 1073742044: +case 1073741933: +case 1073741956: +case 1073741934: +if (atomPt == i - 1) needsGenerating = true; +if (edgeParameterSeen) this.error(18); +edgeParameterSeen = true; +ok = true; +propertyName = JS.T.nameOf(eval.theTok); +break; +case 1073742182: +case 1073742060: +case 1073741861: +case 1073741958: +case 1073741964: +continue; +case 1073741974: +case 268441089: +case 1073741824: +case 4: +if (!eval.isColorParam(i)) { +if (i != 1) this.invPO(); +id = (eval.theTok == 1073741974 ? this.stringParameter(++i) : eval.optParameterAsString(i)); +if (this.tokAt(i + 1) == 268441089) id += this.paramAsStr(++i); +this.setShapeProperty(21, "thisID", id); +this.setShapeProperty(21, "model", Integer.$valueOf(this.vwr.am.cmi)); +if (!eval.isCenterParameter(i + 1)) continue; +propertyName = "center"; +propertyValue = this.centerParameter(++i); +i = eval.iToken; +haveCenter = true; +break; +}default: +if (eval.isColorParam(i)) { +if (atomPt == i - 1) needsGenerating = true; +colorArgb[0] = eval.getArgbParam(i); +if (eval.isCenterParameter(i)) noToParam = eval.iToken + 1; +i = eval.iToken; +continue; +}this.invArg(); +} +if (propertyName != null) this.setShapeProperty(21, propertyName, propertyValue); +if (onOffDelete) return; +} +if (needsGenerating) { +if (!typeSeen && haveBonds) this.setShapeProperty(21, "bonds", null); +this.setShapeProperty(21, "generate", Boolean.$valueOf(modifyOnly)); +} else if (!ok) { +this.error(19); +}if (offset != null) this.setShapeProperty(21, "offset", offset); +if (!Float.isNaN(scale)) this.setShapeProperty(21, "scale", Float.$valueOf(scale)); +if (colorArgb[0] != -2147483648) this.setShapeProperty(21, "colorThis", Integer.$valueOf(colorArgb[0])); +if (translucentLevel != 3.4028235E38) eval.setShapeTranslucency(21, "", "translucentThis", translucentLevel, null); +this.setShapeProperty(21, "init", Boolean.FALSE); +}); +Clazz.defineMethod(c$, "write", +function(args){ +var eval = this.e; +var pt = 1; +var pt0 = 1; +var scripts = null; +var msg = null; +var localPath = null; +var remotePath = null; +var type = "SPT"; +var isCommand = true; +var showOnly = false; +var isContact = false; +if (args == null) { +args = this.st; +showOnly = (this.vwr.isApplet && !this.vwr.isSignedApplet || !this.vwr.haveAccess(JV.Viewer.ACCESS.ALL) || this.vwr.fm.getPathForAllFiles().length > 0); +} else { +pt = pt0 = 0; +isCommand = false; +showOnly = !isCommand; +}var tok = JS.CmdExt.tokAtArray(pt, args); +if (tok == 4 && !isCommand) { +var t0 = JS.T.getTokenFromName(JS.SV.sValue(args[0]).toLowerCase()); +if (t0 != null) tok = t0.tok; +}switch (tok) { +case 0: +break; +case 134221850: +case 4138: +case 1715472409: +msg = this.plot(args); +return (showOnly ? msg : this.writeMsg(msg)); +case 134222850: +if (eval.isArrayParameter(pt + 1)) { +scripts = eval.stringParameterSet(++pt); +localPath = "."; +remotePath = "."; +pt0 = pt = eval.iToken + 1; +tok = this.tokAt(pt); +}break; +default: +type = JS.SV.sValue(this.tokenAt(pt, args)).toUpperCase(); +} +var driverList = this.vwr.getExportDriverList(); +var data = null; +var argCount = (isCommand ? this.slen : args.length); +var type2 = ""; +var val = null; +var is2D = false; +var tVar = null; +var nVibes = 0; +var sceneType = null; +var isCoord = false; +var bsFrames = null; +var width = -1; +var height = -1; +var isExport = false; +var fileName = null; +var quality = -2147483648; +if (tok != 0 && isCommand && this.slen > 1 && this.tokAt(this.slen - 2) == 1073741848) { +type = this.paramAsStr(this.slen - 1).toUpperCase(); +pt0 = argCount; +argCount -= 2; +tok = 0; +}switch (tok) { +case 0: +break; +case 15: +case 6: +type = "VAR"; +tVar = this.tokenAt(pt++, args); +break; +case 1073741984: +type = "INLINE"; +data = JS.SV.sValue(this.tokenAt(++pt, args)); +pt++; +break; +case 1275068447: +type = "PGRP"; +pt++; +type2 = JS.SV.sValue(this.tokenAt(pt, args)).toLowerCase(); +if (type2.equals("draw")) pt++; +break; +case 1073742329: +pt++; +isCoord = true; +break; +case 1073742158: +case 134222850: +val = JS.SV.sValue(this.tokenAt(++pt, args)).toLowerCase(); +while (val.equals("localpath") || val.equals("remotepath")) { +if (val.equals("localpath")) localPath = JS.SV.sValue(this.tokenAt(++pt, args)); + else remotePath = JS.SV.sValue(this.tokenAt(++pt, args)); +val = JS.SV.sValue(this.tokenAt(++pt, args)).toLowerCase(); +} +type = "SPT"; +break; +case 1228935687: +case 134320141: +case 1610616855: +case 135180: +case 1073742015: +case 1073742018: +case 1073877011: +case 1073877010: +case 135188: +pt++; +break; +case 1073741991: +type = "ZIPALL"; +pt++; +break; +case 36868: +type = "VAR"; +pt += 2; +break; +case 1073741929: +case 4115: +case 4120: +case 1073742062: +case 1073742139: +case 4166: +case 1073741824: +case 4: +switch (tok) { +case 4115: +var bsAtoms; +if (pt + 1 < argCount && args[++pt].tok == 1073742325 || args[pt].tok == 10) { +bsAtoms = eval.atomExpression(args, pt, 0, true, false, null, true); +pt = eval.iToken + 1; +} else { +bsAtoms = this.vwr.getAllAtoms(); +}if (!this.chk) bsFrames = this.vwr.ms.getModelBS(bsAtoms, true); +break; +case 1073741929: +tok = 4120; +is2D = true; +case 4120: +type = "IMAGE"; +pt++; +break; +case 1073742139: +val = JS.SV.sValue(this.tokenAt(++pt, args)).toUpperCase(); +if (JU.PT.isOneOf(val, ";PNG;PNGJ;")) { +sceneType = val; +pt++; +} else { +sceneType = "PNG"; +}break; +case 4166: +nVibes = eval.intParameterRange(++pt, 1, 10); +if (nVibes == 2147483647) return ""; +if (!this.chk) { +this.vwr.tm.setVibrationPeriod(0); +if (!eval.isJS) eval.delayScript(100); +}pt++; +break; +default: +tok = 4120; +break; +} +if (tok == 4120 && pt < args.length) { +var t = JS.T.getTokenFromName(JS.SV.sValue(args[pt]).toLowerCase()); +if (t != null) type = JS.SV.sValue(t).toUpperCase(); +if (JU.PT.isOneOf(type, driverList.toUpperCase())) { +pt++; +type = type.substring(0, 1).toUpperCase() + type.substring(1).toLowerCase(); +isExport = true; +if (isCommand) fileName = "Jmol." + type.toLowerCase(); +break; +} else if (JU.PT.isOneOf(type, ";ZIP;ZIPALL;SPT;STATE;")) { +pt++; +break; +} else { +type = "IMAGE"; +}}if (JS.CmdExt.tokAtArray(pt, args) == 2) { +width = JS.SV.iValue(this.tokenAt(pt++, args)); +if (width <= 0) this.invArg(); +height = JS.SV.iValue(this.tokenAt(pt++, args)); +if (height <= 0) this.invArg(); +}break; +} +if (pt0 < argCount) { +val = JS.SV.sValue(this.tokenAt(pt, args)); +if (val.equalsIgnoreCase("clipboard")) { +if (this.chk) return ""; +} else if (JU.PT.isOneOf(val.toLowerCase(), ";jpg;jpeg;jpg64;jpeg64;gif;gift;pdf;ppm;png;pngj;pngt;")) { +if (JS.CmdExt.tokAtArray(pt + 1, args) == 2 && JS.CmdExt.tokAtArray(pt + 2, args) == 2) { +width = JS.SV.iValue(this.tokenAt(++pt, args)); +if (width <= 0) this.invArg(); +height = JS.SV.iValue(this.tokenAt(++pt, args)); +if (height <= 0) this.invArg(); +}if (JS.CmdExt.tokAtArray(pt + 1, args) == 2) quality = JS.SV.iValue(this.tokenAt(++pt, args)); +} else if (JU.PT.isOneOf(val.toLowerCase(), ";xyz;xyzrn;xyzvib;mol;mol67;sdf;v2000;v3000;json;pdb;pqr;cml;cif;cifp1;pwmat;pwslab;qcjson;xsf;")) { +type = val.toUpperCase(); +if (pt + 1 == argCount) pt++; +}if (type.equals("IMAGE") && JU.PT.isOneOf(val.toLowerCase(), ";jpg;jpeg;jpg64;jpeg64;gif;gift;pdf;ppm;png;pngj;pngt;scene;")) { +type = val.toUpperCase(); +quality = -2147483648; +pt++; +}}if (pt + 2 == argCount) { +JS.SV.sValue(this.tokenAt(++pt, args)); +}switch (JS.CmdExt.tokAtArray(pt, args)) { +case 0: +showOnly = true; +break; +case 1073741884: +break; +case 805307393: +fileName = (type.equals("IMAGE") ? "?jmol.png" : "?jmol." + type.toLowerCase()); +break; +case 1073741824: +case 4: +fileName = JS.SV.sValue(this.tokenAt(pt, args)); +if (fileName.equalsIgnoreCase("clipboard") || !this.vwr.haveAccess(JV.Viewer.ACCESS.ALL)) fileName = null; +break; +default: +this.invArg(); +} +if (type.equals("IMAGE") || type.equals("FRAME") || type.equals("VIBRATION")) { +type = (fileName != null && fileName.indexOf(".") >= 0 ? fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase() : "JPG"); +}if (type.equals("ISOSURFACE") || type.equals("CONTACT")) { +isContact = type.equals("CONTACT"); +type = (fileName != null && fileName.indexOf(".") >= 0 ? fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase() : "JVXL"); +if (type.equals("PMESH")) type = "ISOMESH"; + else if (type.equals("PMB")) type = "ISOMESHBIN"; +}var isImage = JU.PT.isOneOf(type.toLowerCase(), ";jpg;jpeg;jpg64;jpeg64;gif;gift;pdf;ppm;png;pngj;pngt;scene;"); +if (!isImage) { +if (type.equals("MNU")) { +type = "MENU"; +} else if (type.equals("WRL") || type.equals("VRML")) { +type = "Vrml"; +isExport = true; +} else if (type.equals("X3D")) { +type = "X3d"; +isExport = true; +} else if (type.equals("STL")) { +type = "Stl"; +isExport = true; +} else if (type.equals("IDTF")) { +type = "Idtf"; +isExport = true; +} else if (type.equals("MA")) { +type = "Maya"; +isExport = true; +} else if (type.equals("JS")) { +type = "Js"; +isExport = true; +} else if (type.equals("OBJ")) { +type = "Obj"; +isExport = true; +} else if (type.equals("JVXL")) { +type = "ISOSURFACE"; +} else if (type.equals("XJVXL")) { +type = "ISOSURFACE"; +} else if (type.equals("JMOL")) { +type = "ZIPALL"; +} else if (type.equals("HIS")) { +type = "HISTORY"; +}if (type.equals("COORD") || type.equals("COORDS")) type = (fileName != null && fileName.indexOf(".") >= 0 ? fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase() : "XYZ"); +}if (scripts != null) { +if (!JV.FileManager.isJmolType(type)) this.invArg(); +if (type.equals("PNG")) type = "PNGJ"; +}if (!isImage && !isExport && !JU.PT.isOneOf(type, ";SCENE;JMOL;ZIP;ZIPALL;SPT;HISTORY;MO;NBO;ISOSURFACE;MESH;PMESH;PMB;ISOMESHBIN;ISOMESH;VAR;FILE;FUNCTION;CFI;CIF;CIFP1;CML;JSON;XYZ;XYZRN;XYZVIB;MENU;MOL;MOL67;PDB;PGRP;PQR;PWMAT;PWSLAB;QUAT;RAMA;SDF;V2000;V3000;QCJSON;XSF;INLINE;")) eval.errorStr2(54, "COORDS|FILE|FUNCTIONS|HISTORY|IMAGE|INLINE|ISOSURFACE|JMOL|MENU|MO|NBO|POINTGROUP|QUATERNION [w,x,y,z] [derivative]|RAMACHANDRAN|SPT|STATE|VAR x|ZIP|ZIPALL|CLIPBOARD", "CIF|CIFP1|CML|CFI|GIF|GIFT|JPG|JPG64|JMOL|JVXL|MESH|MOL|PDB|PMESH|PNG|PNGJ|PNGT|PPM|PQR|PWMAT|PWSLAB|SDF|CD|JSON|QCJSON|V2000|V3000|SPT|XJVXL|XSF|XYZ|XYZRN|XYZVIB|ZIP" + driverList.toUpperCase().$replace(';', '|')); +if (this.chk) return ""; +var fullPath = new Array(1); +var params; +var timeMsg = this.vwr.getBoolean(603979934); +if (isExport) { +if (timeMsg) JU.Logger.startTimer("export"); +var eparams = new java.util.Hashtable(); +eparams.put("type", type); +if (fileName != null) eparams.put("fileName", fileName); +if (isCommand || fileName != null) eparams.put("fullPath", fullPath); +eparams.put("width", Integer.$valueOf(width)); +eparams.put("height", Integer.$valueOf(height)); +try { +data = this.vwr.generateOutputForExport(eparams); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +data = e.toString(); +return data; +} else { +throw e; +} +} +if (data == null || data.length == 0) return ""; +if (showOnly) return data; +if (!type.equals("Povray") && !type.equals("Idtf") || fullPath[0] == null) return this.writeMsg(data); +var ext = (type.equals("Idtf") ? ".tex" : ".ini"); +fileName = fullPath[0] + ext; +params = new java.util.Hashtable(); +params.put("fileName", fileName); +params.put("type", ext); +params.put("text", data); +params.put("fullPath", fullPath); +msg = this.vwr.processWriteOrCapture(params); +if (type.equals("Idtf")) data = data.substring(0, data.indexOf("\\begin{comment}")); +data = "Created " + fullPath[0] + ":\n\n" + data; +if (timeMsg) this.showString(JU.Logger.getTimerMsg("export", 0)); +if (msg != null) { +var isError = !msg.startsWith("OK"); +if (isError) eval.evalError(msg, null); +eval.report(data, isError); +}return ""; +}var bytes = null; +var writeFileData = false; +if (data == null) { +var len = 0; +data = type.intern(); +if (data === "MENU") { +data = this.vwr.getMenu(""); +} else if (data === "PGRP") { +data = this.vwr.ms.getPointGroupAsString(this.vwr.bsA(), null, 0, 1.0, null, null, type2.equals("draw") ? "" : null); +} else if (data === "PDB" || data === "PQR") { +if (showOnly) { +data = this.vwr.getPdbAtomData(null, null, (data === "PQR"), isCoord); +} else { +writeFileData = true; +type = "PDB_" + data + "-coord " + isCoord; +}} else if (data === "FILE") { +if ("?".equals(fileName)) fileName = "?Jmol." + this.vwr.getP("_fileType"); +if (showOnly) data = this.e.getCurrentModelFileAsString(null); + else writeFileData = true; +} else if (JU.PT.isOneOf(data, ";CIF;CIFP1;SDF;MOL;MOL67;V2000;V3000;CD;JSON;XYZ;XYZRN;XYZVIB;CML;QCJSON;PWMAT;PWSLAB;XSF;")) { +var selected = this.vwr.bsA(); +var bsModel; +this.vwr.setErrorMessage(null, " (" + selected.cardinality() + " atoms)"); +data = this.vwr.getModelExtract(selected, isCoord, false, data); +msg = this.vwr.getErrorMessageUn(); +this.vwr.setErrorMessage(null, null); +if (this.vwr.am.cmi >= 0 && !selected.equals(bsModel = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi))) msg += "\nNote! Selected atom set " + selected + " is not the same as the current model " + bsModel; +if (data.startsWith("ERROR:")) bytes = data; +} else if (data === "CFI") { +data = this.vwr.getModelFileData("selected", "cfi", false); +} else if (data === "FUNCTION") { +data = this.vwr.getFunctionCalls(null); +type = "TXT"; +} else if (data === "VAR") { +if (tVar == null) { +tVar = eval.getParameter(JS.SV.sValue(this.tokenAt(isCommand ? 2 : 1, args)), 1073742190, true); +}var v = null; +if (tVar.tok == 15) { +v = new JU.Lst(); +v.addLast((tVar.value).data); +} else if (tVar.tok == 6) { +v = (fileName == null ? new JU.Lst() : this.prepareBinaryOutput(tVar)); +}if (v == null) { +data = tVar.asString(); +type = "TXT"; +} else { +if (fileName != null) { +params = new java.util.Hashtable(); +params.put("data", v); +if ((bytes = data = this.vwr.createZip(fileName, v.size() == 1 || fileName.endsWith(".png") || fileName.endsWith(".pngj") ? "BINARY" : "ZIPDATA", params)) == null) eval.evalError("#CANCELED#", null); +}}} else if (data === "SPT") { +if (isCoord) { +var tainted = this.vwr.ms.getTaintedAtoms(2); +this.vwr.setAtomCoordsRelative(JU.P3.new3(0, 0, 0), null); +data = this.vwr.getStateInfo(); +this.vwr.ms.setTaintedAtoms(tainted, 2); +} else { +data = this.vwr.getStateInfo(); +if (localPath != null || remotePath != null) data = JV.FileManager.setScriptFileReferences(data, localPath, remotePath, null); +}} else if (data === "ZIP" || data === "ZIPALL") { +if (fileName != null) { +params = new java.util.Hashtable(); +if (scripts != null) params.put("data", scripts); +if ((bytes = data = this.vwr.createZip(fileName, type, params)) == null) eval.evalError("#CANCELED#", null); +}} else if (data === "HISTORY") { +data = this.vwr.getSetHistory(2147483647); +type = "SPT"; +} else if (data === "MO" || data === "NBO") { +data = this.getMoJvxl(2147483647, data === "NBO"); +type = "XJVXL"; +} else if (data === "PMESH" || data === "PMB") { +if ((data = this.getIsosurfaceJvxl(29, data)) == null) this.error(31); +type = "XJVXL"; +} else if (data === "ISOMESH") { +if ((data = this.getIsosurfaceJvxl(24, data)) == null) this.error(31); +type = "PMESH"; +} else if (data === "ISOMESHBIN") { +if ((bytes = this.getIsosurfaceJvxl(24, "ISOMESHBIN")) == null) this.error(31); +type = "PMB"; +} else if (data === "ISOSURFACE" || data === "MESH") { +if ((data = this.getIsosurfaceJvxl(isContact ? 25 : 24, data)) == null) this.error(31); +type = (data.indexOf("= 0 ? "XJVXL" : "JVXL"); +if (!showOnly) this.showString(this.getShapeProperty(isContact ? 25 : 24, "jvxlFileInfo")); +} else { +if (isCommand && showOnly && fileName == null) { +showOnly = false; +fileName = "\1"; +}len = -1; +if (sceneType == null && quality < 0) quality = -1; +}if (data == null) data = ""; +if (len == 0) len = (bytes == null ? data.length : (typeof(bytes)=='string') ? (bytes).length : (bytes).length); +}if (!isCommand) return data; +if (showOnly) { +eval.showStringPrint(data, true); +return ""; +}if (bytes != null && (typeof(bytes)=='string')) return this.writeMsg(bytes); +if (writeFileData) return this.writeMsg(this.vwr.writeFileData(fileName, type, 0, null)); +if (type.equals("SCENE")) bytes = sceneType; + else if (bytes == null && (!isImage || fileName != null)) bytes = data; +if (timeMsg) JU.Logger.startTimer("write"); +if (isImage) { +eval.refresh(false); +if (width < 0) width = (is2D ? 250 : this.vwr.getScreenWidth()); +if (height < 0) height = (is2D ? 250 : this.vwr.getScreenHeight()); +}params = new java.util.Hashtable(); +if (fileName != null) params.put("fileName", fileName); +params.put("backgroundColor", Integer.$valueOf(this.vwr.getBackgroundArgb())); +params.put("type", type); +if (is2D) { +params.put("is2D", Boolean.TRUE); +var smiles; +var ret = "smiles could not be generated"; +try { +smiles = this.vwr.getOpenSmiles(null); +if (smiles.length > 0) { +var fname = this.vwr.setLoadFormat(true, "_" + smiles, '2', false); +fname += "?width=" + width + "&height=" + height + "&format=" + type.toLowerCase(); +this.showString(fname); +ret = this.vwr.fm.getFileAsBytes(fname, null); +}} catch (e1) { +if (Clazz.exceptionOf(e1, Exception)){ +} else { +throw e1; +} +} +if ((typeof(ret)=='string')) { +this.showString(ret); +return null; +}bytes = ret; +}if ((typeof(bytes)=='string') && quality == -2147483648) params.put("text", bytes); + else if (Clazz.instanceOf(bytes,Array)) params.put("bytes", bytes); +if (scripts != null) params.put("scripts", scripts); +if (bsFrames != null) params.put("bsFrames", bsFrames); +params.put("fullPath", fullPath); +params.put("quality", Integer.$valueOf(quality)); +params.put("width", Integer.$valueOf(width)); +params.put("height", Integer.$valueOf(height)); +params.put("nVibes", Integer.$valueOf(nVibes)); +var ret = this.vwr.processWriteOrCapture(params); +if (ret == null) ret = "canceled"; +if (isImage && ret.startsWith("OK")) ret += "; width=" + width + "; height=" + height; +if (timeMsg) this.showString(JU.Logger.getTimerMsg("write", 0)); +return this.writeMsg(ret + (msg == null ? "" : msg)); +}, "~A"); +Clazz.defineMethod(c$, "prepareBinaryOutput", +function(tvar){ +var m = tvar.getMap(); +if (m == null || !m.containsKey("$_BINARY_$")) return null; +var v = new JU.Lst(); +for (var e, $e = m.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +if (key.equals("$_BINARY_$")) continue; +var o = e.getValue(); +var bytes = (o.tok == 15 ? (o.value).data : null); +if (bytes == null) { +var s = o.asString(); +bytes = (s.startsWith(";base64,") ? JU.Base64.decodeBase64(s) : s.getBytes()); +}if (key.equals("_DATA_")) { +v = new JU.Lst(); +v.addLast(bytes); +return v; +} else if (key.equals("_IMAGE_")) { +v.add(0, key); +v.add(1, null); +v.add(2, bytes); +} else { +v.addLast(key); +v.addLast(null); +v.addLast(bytes); +}} +return v; +}, "JS.SV"); +Clazz.defineMethod(c$, "writeMsg", +function(msg){ +if (this.chk || msg == null) return ""; +var isError = !msg.startsWith("OK"); +if (isError) { +this.e.evalError(msg, null); +{ +alert(msg); +}}this.e.report(msg, isError); +return msg; +}, "~S"); +Clazz.defineMethod(c$, "show", +function(){ +var eval = this.e; +var value = null; +var str = this.paramAsStr(1); +var filter = null; +var filterLen = 0; +if (this.slen > 3 && this.tokAt(this.slen - 3) == 268441088 && this.tokAt(this.slen - 2) == 268439040) { +filter = "!/" + this.paramAsStr(this.slen - 1); +this.slen -= 3; +filterLen = 3; +} else if (this.slen > 2 && this.tokAt(this.slen - 2) == 268441088) { +filter = "/" + this.paramAsStr(this.slen - 1); +this.slen -= 2; +filterLen = 2; +} else if ((filter = this.paramAsStr(this.slen - 1)).lastIndexOf("/") == 0) { +this.slen--; +filterLen = 1; +} else { +filter = null; +}var msg = null; +var name = null; +var len = 2; +var token = this.getToken(1); +var tok = (Clazz.instanceOf(token,"JS.SV") && token.tok != 1073741824 ? 0 : token.tok); +if (tok == 4) { +token = JS.T.getTokenFromName(str.toLowerCase()); +if (token != null) tok = token.tok; +}if (tok != 1296041985 && tok != 1073742158 && tok != 1715472409 && tok != 1228935687) this.checkLength(-3); +if (this.slen == 2 && str.indexOf("?") >= 0) { +msg = this.vwr.getAllSettings(str.substring(0, str.indexOf("?"))); +tok = -1; +}switch (tok) { +case -1: +break; +case 0: +if (!this.chk) msg = (eval.theToken).escape(); +break; +case 603984065: +if (!this.chk) msg = this.vwr.stm.getUndoInfo(); +break; +case 1073741925: +eval.checkLength23(); +len = this.st.length; +if (!this.chk) { +var d = this.vwr.getModelInfo("domains"); +if (Clazz.instanceOf(d,"JS.SV")) msg = this.vwr.getAnnotationInfo(d, eval.optParameterAsString(2), 1073741925); + else msg = "domain information has not been loaded"; +}break; +case 1715472409: +msg = this.plot(this.st); +len = this.st.length; +break; +case 1073742189: +eval.checkLength23(); +len = this.st.length; +if (!this.chk) { +var d = this.vwr.getModelInfo("validation"); +if (Clazz.instanceOf(d,"JS.SV")) msg = this.vwr.getAnnotationInfo(d, eval.optParameterAsString(2), 1073742189); + else msg = "validation information has not been loaded"; +}break; +case 134221829: +if (!this.chk) msg = JU.Escape.e(this.vwr.fm.cacheList()); +break; +case 1111490587: +eval.checkLength23(); +len = this.st.length; +if (!this.chk) { +var d = this.vwr.getModelInfo("dssr"); +msg = (d == null ? "no DSSR information has been read" : len > 2 ? JS.SV.getVariable(this.vwr.extractProperty(d, this.stringParameter(2), -1)).asString() : "" + JS.SV.getVariable(d).asString()); +}break; +case 1073741915: +var version = 2; +if (this.slen == 3) version = (Clazz.floatToInt(this.floatParameter((len = 3) - 1))); + else this.checkLength(2 + filterLen); +if (!this.chk) msg = this.vwr.calculateStructures(null, true, false, version); +break; +case 545259572: +this.checkLength(2 + filterLen); +if (!this.chk) msg = this.vwr.fm.getPathForAllFiles(); +break; +case 1275203608: +if (!this.chk) { +var info = new Array(2); +this.vwr.shm.getShapePropertyData(21, "allInfo", info); +msg = JS.SV.getVariable(info[1]).asString(); +}break; +case 1073742038: +if (!this.chk) this.vwr.getNMRPredict(eval.optParameterAsString(2)); +return; +case 603983903: +if (!this.chk && this.slen == 3) { +msg = "" + this.vwr.getModelkitPropertySafely(eval.stringParameter(2)); +len = 3; +}break; +case 1275068433: +case 1073741978: +case 1073741929: +case 1073741879: +case 134218757: +this.checkLength((tok == 1073741879 || tok == 134218757 && this.tokAt(2) == 1073742335 ? len = 3 : 2) + filterLen); +if (this.chk) return; +var param2 = eval.optParameterAsString(2); +if (tok == 1073741879) { +if ("mf".equals(param2)) param2 = "formula"; +if ("formula".equals(param2)) { +msg = this.vwr.getModelInfo("formula"); +if (msg != null) msg = JU.PT.rep(msg, " ", ""); +}}if (msg == null) { +try { +switch (tok) { +case 1275068433: +msg = this.vwr.getInchi(this.vwr.bsA(), null, null); +if (msg == null) msg = "?"; +break; +case 1073741978: +msg = this.vwr.getInchi(this.vwr.bsA(), null, "key"); +break; +case 134218757: +if (param2.equalsIgnoreCase("true")) { +msg = this.vwr.getBioSmiles(null); +filter = null; +} else if (filter != null) { +msg = this.vwr.getSmilesOpt(null, -1, -1, 1, filter + "///"); +filter = null; +}break; +default: +msg = this.vwr.ms.getModelDataBaseName(this.vwr.bsA()); +if (msg != null && (msg.startsWith("$") || msg.startsWith(":"))) { +msg = msg.substring(1); +} else { +msg = null; +}break; +} +if (msg == null) { +var level = JU.Logger.getLogLevel(); +JU.Logger.setLogLevel(4); +msg = (tok == 134218757 ? this.vwr.getSmiles(null) : this.vwr.getOpenSmiles(null)); +JU.Logger.setLogLevel(level); +}} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +msg = ex.getMessage(); +if (msg == null) { +msg = ""; +}ex.printStackTrace(); +} else { +throw ex; +} +} +switch (tok) { +case 134218757: +break; +case 1073741929: +if (msg.length > 0) { +this.vwr.fm.loadImage(this.vwr.setLoadFormat(false, "_" + msg, '2', false), "\1" + msg, false); +return; +}msg = "Could not show drawing -- Either insufficient atoms are selected or the model is a PDB file."; +break; +case 1073741879: +len = 3; +if (msg.length > 0) { +msg = this.vwr.getChemicalInfo(msg, param2, this.vwr.bsA()); +if (msg.indexOf("FileNotFound") >= 0) msg = "?"; +} else { +msg = "Could not show name -- Either insufficient atoms are selected or the model is a PDB file."; +}} +}break; +case 134217764: +var sdiag = eval.optParameterAsString(2); +var sym = this.vwr.getOperativeSymmetry(); +var isDiagram = sdiag.toLowerCase().startsWith("diagram"); +if (isDiagram || sdiag.toLowerCase().startsWith("table")) { +if (this.chk) break; +sdiag = JU.PT.trim(sdiag.substring(isDiagram ? 7 : 5).trim(), "\""); +if (sdiag.length == 0) { +if (sym == null) { +msg = "Include a space group name or number to view its diagram"; +break; +}sdiag = sym.getIntTableNumber(); +if (sdiag == null || sdiag.equals("0")) { +msg = "Can't display a table; don't have an ITA number."; +break; +}}var ita = JU.PT.parseInt(sdiag); +if (ita == -2147483648) { +if (sym == null) { +sym = this.vwr.getSymStatic(); +}var info = this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, JU.PT.rep(sdiag, "''", "\""), -1, true, null); +if (info == null) { +msg = "Could not find space group " + sdiag; +break; +}ita = ((info.get("spaceGroupInfo")).get("ita")).intValue(); +}var href = JV.JC.resolveDataBase(isDiagram ? "itadiagram" : "itatable", JU.PT.formatS("" + ita, 3, 0, false, true), null); +msg = href; +this.vwr.showUrl(href); +len = this.slen; +break; +}case 1296041985: +msg = ""; +var info = null; +if ((len = this.slen) == 2) { +if (this.chk) break; +info = this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, null, -1, false, null); +} else if (tok == 134217764) { +var sg = this.paramAsStr(2); +len = 3; +if (this.chk) break; +if (sg.startsWith("list/")) { +filter = sg.substring(4); +sg = "list"; +}info = this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, JU.PT.rep(sg, "''", "\""), -1, false, null); +}if (info != null) { +msg = (tok == 134217764 ? "" + info.get("spaceGroupInfo") + info.get("spaceGroupNote") : "") + (info.containsKey("symmetryInfo") ? info.get("symmetryInfo") : ""); +break; +}var iop = (this.tokAt(2) == 2 ? this.intParameter(2) : 0); +var xyz = (this.tokAt(2) == 4 || this.tokAt(2) == 12 ? this.paramAsStr(2) : null); +var pt1 = null; +var pt2 = null; +var nth = -1; +if (this.slen > 3 && this.tokAt(3) != 4) { +var ret = Clazz.newArray(-1, [null, this.vwr.getFrameAtoms()]); +pt1 = eval.centerParameter(2 + (iop == 0 ? 0 : 1), ret); +if (ret[0] != null && (ret[0]).isEmpty()) { +len = this.slen; +break; +}ret[0] = null; +pt2 = eval.centerParameter(++eval.iToken, ret); +if (ret[0] != null && (ret[0]).isEmpty()) { +len = this.slen; +break; +}if (iop == 0 && this.tokAt(eval.iToken + 1) == 2) nth = eval.getToken(++eval.iToken).intValue; +}var type = (eval.iToken > 1 && this.tokAt(eval.iToken + 1) == 4 ? this.stringParameter(++eval.iToken) : null); +this.checkLength((len = ++eval.iToken) + filterLen); +if (!this.chk) { +var o = this.vwr.getSymmetryInfo(this.vwr.getAllAtoms().nextSetBit(0), xyz, iop, null, pt1, pt2, 0, type, 0, nth, 0, null); +msg = (o == null ? "" : Clazz.instanceOf(o,"java.util.Map") ? JS.SV.getVariable(o).asString() : o.toString()); +}break; +case 1648363544: +var vdwType = null; +if (this.slen > 2) { +len = this.slen; +vdwType = J.c.VDW.getVdwType(this.paramAsStr(2)); +if (vdwType == null) this.invArg(); +}if (!this.chk) msg = this.vwr.getDefaultVdwNameOrData(0, vdwType, null); +break; +case 134320141: +eval.checkLength23(); +len = this.slen; +var s = eval.optParameterAsString(2); +var pt; +if (filter == null && (pt = s.indexOf('/')) >= 0) { +filter = s.substring(pt + 1); +s = s.substring(0, pt); +}if (!this.chk) msg = this.vwr.getFunctionCalls(s); +break; +case 36867: +this.checkLength(2 + filterLen); +if (!this.chk) msg = this.vwr.getAllSettings(null); +break; +case 1073742166: +msg = this.vwr.getFrameTitle(); +break; +case 1073742184: +if ((len = this.slen) == 2) { +if (!this.chk) this.vwr.showUrl(eval.getFullPathName(false)); +} else { +name = this.paramAsStr(2); +if (!this.chk) this.vwr.showUrl(name); +}return; +case 1765808134: +str = "defaultColorScheme"; +break; +case 1610612740: +str = "scaleAngstromsPerInch"; +break; +case 134221850: +case 4138: +if (this.chk) return; +var modelIndex = this.vwr.am.cmi; +if (modelIndex < 0) eval.errorStr(30, "show " + eval.theToken.value); +msg = this.plot(this.st); +len = this.slen; +break; +case 14: +case 1112152078: +if (!this.chk) msg = this.getContext(false); +break; +case 1073741888: +name = eval.optParameterAsString(2); +if (name.length > 0) len = 3; +if (!this.chk) value = this.vwr.cm.getColorSchemeList(name); +break; +case 1073742192: +if (!this.chk) msg = this.vwr.getAtomDefs(this.vwr.definedAtomSets) + this.vwr.g.getVariableList() + this.getContext(true); +break; +case 536870926: +if (!this.chk) msg = this.vwr.getTrajectoryState(); +break; +case 553648144: +value = "" + JS.ScriptEval.commandHistoryLevelMax; +break; +case 553648148: +value = "" + JU.Logger.getLogLevel(); +break; +case 603979825: +value = "" + this.vwr.getBoolean(603979825); +break; +case 553648178: +msg = "set strandCountForStrands " + this.vwr.getStrandCount(12) + "; set strandCountForMeshRibbon " + this.vwr.getStrandCount(13); +break; +case 536875070: +msg = this.vwr.showTimeout((len = this.slen) == 2 ? null : this.paramAsStr(2)); +break; +case 536870918: +value = JU.Escape.eP(this.vwr.getDefaultLattice()); +break; +case 4126: +if (!this.chk) msg = this.vwr.getMinimizationInfo(); +break; +case 1611272194: +switch (this.vwr.g.axesMode) { +case 603979808: +msg = "set axesUnitcell"; +break; +case 603979804: +msg = "set axesMolecular"; +break; +default: +msg = "set axesWindow"; +} +break; +case 1610612737: +msg = "set bondMode " + (this.vwr.getBoolean(603979812) ? "OR" : "AND"); +break; +case 1649022989: +if (!this.chk) msg = "set strandCountForStrands " + this.vwr.getStrandCount(12) + "; set strandCountForMeshRibbon " + this.vwr.getStrandCount(13); +break; +case 1613238294: +msg = "set hbondsBackbone " + this.vwr.getBoolean(603979852) + ";set hbondsSolid " + this.vwr.getBoolean(603979854); +break; +case 1611141175: +if (!this.chk) msg = this.vwr.getSpinState(); +break; +case 1611141176: +msg = "set ssbondsBackbone " + this.vwr.getBoolean(603979952); +break; +case 1610625028: +case 1611141172: +msg = "selectionHalos " + (this.vwr.getSelectionHalosEnabled() ? "ON" : "OFF"); +break; +case 1612709894: +msg = "set selectHetero " + this.vwr.getBoolean(1612709894); +break; +case 1073741828: +msg = JU.Escape.eAP(this.vwr.getAdditionalHydrogens(null, null, 768)); +break; +case 1612709900: +msg = "set selectHydrogens " + this.vwr.getBoolean(1612709900); +break; +case 553648130: +case 553648138: +case 536870924: +case 553648176: +case 553648172: +case 1073741995: +if (!this.chk) msg = this.vwr.getLightingState(); +break; +case 1073742136: +case 4146: +if (!this.chk) msg = this.vwr.stm.listSavedStates(); +break; +case 1814695966: +if (!this.chk) { +if ((len = this.slen) == 3) { +msg = this.vwr.stm.getSavedUnitCell(this.paramAsStr(2)); +} else { +msg = this.vwr.getUnitCellInfoText(); +}}break; +case 1073742329: +if ((len = this.slen) == 2) { +if (!this.chk) msg = this.vwr.getCoordinateState(this.vwr.bsA()); +break; +}var nameC = this.paramAsStr(2); +if (!this.chk) msg = this.vwr.stm.getSavedCoordinates(nameC); +break; +case 1073742158: +if (!this.chk && eval.outputBuffer == null && filter == null) this.vwr.sm.clearConsole(); +if ((len = this.slen) == 2) { +if (!this.chk) msg = this.vwr.getStateInfo(); +break; +}if (filter != null && this.slen == 3) { +if (!this.chk) msg = this.vwr.getStateInfo(); +break; +} else if (this.tokAt(2) == 1228935687 && (len = this.slen) == 4) { +if (!this.chk) msg = this.vwr.fm.getEmbeddedFileState(this.paramAsStr(3), true, "state.spt"); +break; +}len = 3; +name = this.paramAsStr(2); +if (!this.chk) msg = this.vwr.stm.getSavedState(name); +break; +case 1639976963: +if ((len = this.slen) == 2) { +if (!this.chk) msg = this.vwr.ms.getProteinStructureState(this.vwr.bsA(), 134222350); +break; +}var shape = this.paramAsStr(2); +if (!this.chk) msg = this.vwr.stm.getSavedStructure(shape); +break; +case 134221834: +var dtype = ((len = this.slen) == 3 ? this.paramAsStr(2) : null); +if (!this.chk) { +var data = this.vwr.getDataObj(dtype, null, -2); +var isType = (dtype != null && "types".equals(dtype.toLowerCase())); +var isAll = (isType || "*".equals(dtype)); +if (data == null) { +msg = "no data"; +} else if (Clazz.instanceOf(data,"JU.Lst")) { +var list = data; +data = list.toArray( new Array(list.size())); +} else if (!isAll) { +var odata = data; +msg = JU.Escape.encapsulateData(odata[0], odata[1], (odata[3]).intValue()); +}if (msg == null) { +var sdata = data; +if (isType) { +sdata[1] = sdata[1].$replace('\n', ','); +}msg = JU.Escape.e(sdata); +}}break; +case 1073742330: +len = 3; +msg = eval.setObjectProperty(); +break; +case 1812599299: +if (!this.chk) { +msg = this.vwr.ms.getBoundBoxCommand(true); +}break; +case 12289: +if (!this.chk) msg = "center " + JU.Escape.eP(this.vwr.tm.fixedRotationCenter); +break; +case 135176: +if (!this.chk) msg = this.getShapeProperty(22, "command"); +break; +case 1228935687: +if (this.slen == 2) { +if (!this.chk) { +if (filter == null) this.vwr.sm.clearConsole(); +msg = this.e.getCurrentModelFileAsString(null); +}if (msg == null) msg = ""; +break; +}len = 3; +value = this.paramAsStr(2); +if (!this.chk) { +if (filter == null) this.vwr.sm.clearConsole(); +msg = this.vwr.getFileAsString3(value, true, null); +}break; +case 4115: +if (this.tokAt(2) == 1073742327 && (len = 3) > 0) msg = this.vwr.getModelFileInfoAll(); + else msg = this.vwr.getModelFileInfo(); +break; +case 1610616855: +var n = ((len = this.slen) == 2 ? 2147483647 : this.intParameter(2)); +if (n < 1) this.invArg(); +if (!this.chk) { +this.vwr.sm.clearConsole(); +if (eval.scriptLevel == 0) this.vwr.removeCommand(); +msg = this.vwr.getSetHistory(n); +}break; +case 135180: +if (!this.chk) msg = this.getShapeProperty(24, "jvxlDataXml"); +break; +case 1073877011: +case 1073877010: +if (eval.optParameterAsString(2).equalsIgnoreCase("list")) { +this.e.sm.loadShape(27); +msg = (this.chk ? "" : this.getShapeProperty(27, "list -1")); +len = 3; +} else { +var ptMO = ((len = this.slen) == 2 ? -2147483648 : this.intParameter(2)); +if (!this.chk) msg = this.getMoJvxl(ptMO, tok == 1073877011); +}break; +case 1094717454: +if (!this.chk) msg = this.vwr.ms.getModelInfoAsString(); +break; +case 537006096: +if (!this.chk) msg = this.vwr.getMeasurementInfoAsString(); +break; +case 1073741864: +len = 3; +if (!this.chk && this.slen == len) { +msg = this.paramAsStr(2); +msg = this.vwr.getOrientation(JS.T.getTokFromName(msg.equals("box") ? "volume" : msg.equals("rotation") ? "best" : msg), "best", null, null).toString(); +}break; +case 1073742132: +tok = this.tokAt(2); +if (tok == 0) tok = 1073742132; + else len = 3; +case 1073742178: +case 4129: +if (!this.chk) msg = this.vwr.getOrientation(tok, null, null, null).toString(); +break; +case 1073742077: +len = 2; +if (this.slen > 3) break; +switch (tok = this.tokAt(2)) { +case 1073742178: +case 1073742132: +case 4129: +case 0: +if (!this.chk) msg = this.vwr.getOrientation(tok, null, null, null).toString(); +break; +default: +name = eval.optParameterAsString(2); +msg = this.vwr.getOrientation(1073742034, name, null, null).toString(); +} +len = this.slen; +break; +case 1073742088: +if (!this.chk) msg = this.vwr.ms.getPDBHeader(this.vwr.am.cmi); +break; +case 1275068447: +var typ = eval.optParameterAsString(2); +if (typ.length == 0) typ = null; +len = this.slen; +if (!this.chk) msg = this.vwr.ms.getPointGroupAsString(this.vwr.bsA(), "show:" + typ, 0, 0, null, null, null); +break; +case 1088421903: +if (!this.chk) msg = this.vwr.ms.getSymmetryInfoAsString(); +break; +case 1073742176: +if (!this.chk) msg = "transform:\n" + this.vwr.tm.matrixRotate.toString(); +break; +case 4168: +msg = "zoom " + (this.vwr.tm.zoomEnabled ? ("" + this.vwr.tm.getZoomSetting()) : "off"); +break; +case 1611272202: +msg = (this.vwr.getShowFrank() ? "frank ON" : "frank OFF"); +break; +case 1665140738: +str = "solventProbeRadius"; +break; +case 1086324744: +if ((len = this.slen) == 3 && this.tokAt(2) == 1073742334) tok = 1086324743; +case 1073741863: +case 1086326788: +case 1073742120: +case 1113589787: +case 1086324742: +case 1153433601: +case 1073741982: +if (!this.chk) msg = this.vwr.getChimeInfo(tok); +break; +case 537022465: +case 1610612738: +case 20482: +case 1612709912: +value = "?"; +break; +case 1073742030: +var qualifiers = ((len = this.slen) == 2 ? null : this.paramAsStr(2)); +if (!this.chk) msg = this.vwr.getBindingInfo(qualifiers); +break; +case 1073742015: +if (!this.chk) value = this.vwr.getMenu(""); +break; +case 1073741824: +if (str.equalsIgnoreCase("fileHeader")) { +if (!this.chk) msg = this.vwr.ms.getPDBHeader(this.vwr.am.cmi); +}break; +case 1073741992: +case 36868: +str = this.paramAsStr(len++); +var v = eval.getParameter(str, 1073742190, true); +if (!this.chk) if (tok == 1073741992) { +msg = v.toJSON(); +} else { +msg = v.escape(); +}break; +} +this.checkLength(len + filterLen); +if (this.chk) return; +if (msg != null) this.showString(this.filterShow(msg, filter)); + else if (value != null) this.showString(str + " = " + value); + else if (str != null) { +if (str.indexOf(" ") >= 0) this.showString(str); + else this.showString(str + " = " + (eval.getParameter(str, 1073742190, true)).escape()); +}}); +Clazz.defineMethod(c$, "filterShow", +function(msg, name){ +if (name == null) return msg; +var isNot = name.startsWith("!/"); +name = name.substring(isNot ? 2 : 1).toLowerCase(); +var info = JU.PT.split(msg, "\n"); +var sb = new JU.SB(); +for (var i = 0; i < info.length; i++) if ((info[i].toLowerCase().indexOf(name) < 0) == isNot) sb.append(info[i]).appendC('\n'); + +return sb.toString(); +}, "~S,~S"); +Clazz.defineMethod(c$, "stereo", +function(){ +var stereoMode = J.c.STER.DOUBLE; +var degrees = -5; +var degreesSeen = false; +var colors = null; +var colorpt = 0; +for (var i = 1; i < this.slen; ++i) { +if (this.e.isColorParam(i)) { +if (colorpt > 1) this.e.bad(); +if (colorpt == 0) colors = Clazz.newIntArray (2, 0); +if (!degreesSeen) degrees = 3; +colors[colorpt] = this.e.getArgbParam(i); +if (colorpt++ == 0) colors[1] = ~colors[0]; +i = this.e.iToken; +continue; +}switch (this.getToken(i).tok) { +case 1073742335: +this.e.checkLast(this.e.iToken = 1); +this.e.iToken = 1; +break; +case 1073742334: +this.e.checkLast(this.e.iToken = 1); +stereoMode = J.c.STER.NONE; +break; +case 2: +case 3: +degrees = this.floatParameter(i); +degreesSeen = true; +break; +case 1073741824: +if (!degreesSeen) degrees = 3; +stereoMode = J.c.STER.getStereoMode(this.paramAsStr(i)); +if (stereoMode != null) break; +default: +this.invArg(); +} +} +if (this.chk) return; +this.vwr.setStereoMode(colors, stereoMode, degrees); +}); +Clazz.defineMethod(c$, "struts", +function(){ +var eval = this.e; +var defOn = (this.tokAt(1) == 1073742072 || this.tokAt(1) == 1073742335 || this.slen == 1); +var mad = eval.getMadParameter(); +if (mad == 2147483647) return false; +if (defOn) mad = Math.round(this.vwr.getFloat(570425406) * 2000); +this.setShapeProperty(1, "type", Integer.$valueOf(32768)); +eval.setShapeSizeBs(1, mad, null); +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +return true; +}); +Clazz.defineMethod(c$, "unitcell", +function(i, isModelkit){ +var eval = this.e; +var icell = 2147483647; +var mad10 = 2147483647; +var pt = null; +var tickInfo = eval.tickParamAsStr(i, true, false, false); +i = eval.iToken; +var id = null; +var oabc = null; +var newUC = null; +var ucname = null; +var isOffset = false; +var isReset = false; +var sym = (this.chk ? null : this.vwr.getCurrentUnitCell()); +var tok = this.tokAt(++i); +switch (tok) { +case 1073742333: +if (!this.chk) this.vwr.ms.clearUnitCell(this.vwr.am.cmi); +return; +case 4142: +case 4141: +isReset = true; +pt = JU.P4.new4(0, 0, 0, -1); +eval.iToken++; +break; +case 2097180: +var plane = eval.hklParameter(i + 1, null, false); +var hkl = eval.getPointOrPlane(i + 1, 7); +i = eval.iToken; +var zscale = NaN; +if (this.isFloatParameter(i + 1)) { +zscale = this.floatParameter(++i); +if (this.tokAt(i + 1) == 268441090) { +zscale = -zscale / 100; +i++; +}}var zoffset = NaN; +var zoffPercent = false; +if (this.isFloatParameter(i + 1)) { +zoffset = this.floatParameter(++i); +if (this.tokAt(i + 1) == 268441090) { +zoffPercent = true; +i++; +}}var refTop = (this.tokAt(i + 1) == 1073742172); +if (refTop) i++; +eval.iToken = i; +if (this.chk) break; +if (Clazz.instanceOf(hkl,"JU.P3")) { +hkl = JU.P4.new4(hkl.x, hkl.y, hkl.z, 0); +} else if (Float.isNaN(zoffset)) { +zoffset = (hkl).w; +}oabc = this.getUVBoxFromHKL(sym, hkl, plane); +var p = new JU.P3(); +var vt = new JU.V3(); +JU.Measure.getPlaneProjection( new JU.P3(), plane, p, vt); +if (zscale > 0) { +oabc[3].normalize(); +oabc[3].scale(zscale); +} else if (zscale < 0) { +oabc[3].scale(-zscale); +}if (!Float.isNaN(zoffset) && zoffset != 0) { +if (zoffPercent) { +zoffset = zoffset / 100 * oabc[3].length(); +}oabc[0].scaleAdd2(zoffset, vt, oabc[0]); +}if (refTop) oabc[0].scaleAdd2(-oabc[3].length(), vt, oabc[0]); +ucname = "surface" + (Clazz.floatToInt(hkl.x)) + (Clazz.floatToInt(hkl.y)) + (Clazz.floatToInt(hkl.z)); +break; +case 536875059: +case 1073742163: +pt = (tok == 536875059 ? eval.getPointOrPlane(++i, 19) : eval.checkHKL(eval.getFractionalPoint(++i))); +i = eval.iToken; +if (this.chk) break; +oabc = sym.getUnitCellVectors(); +oabc[1].scale(Math.abs(pt.x)); +oabc[2].scale(Math.abs(pt.y)); +oabc[3].scale(Math.abs(pt.z)); +pt = null; +ucname = "supercell"; +break; +case 1073741938: +pt = eval.getFractionalPoint(++i); +i = eval.iToken; +if (this.chk) break; +pt = JU.SimpleUnitCell.ptToIJK(eval.checkHKL(pt), 1); +break; +case 135180: +case 1073742330: +id = eval.objectNameParameter(++i); +break; +case 1812599299: +eval.iToken = i; +if (this.chk) break; +var o = JU.P3.newP(this.vwr.getBoundBoxCenter()); +pt = this.vwr.getBoundBoxCornerVector(); +o.sub(pt); +oabc = Clazz.newArray(-1, [o, JU.P3.new3(pt.x * 2, 0, 0), JU.P3.new3(0, pt.y * 2, 0), JU.P3.new3(0, 0, pt.z * 2)]); +pt = null; +break; +case 1073742176: +if (this.tokAt(++i) != 12) this.invArg(); +if (this.chk) break; +newUC = Clazz.newArray(-1, [this.getToken(i).value]); +break; +case 11: +case 12: +newUC = this.getToken(i).value; +break; +case 12289: +switch (this.tokAt(++i)) { +case 12290: +case 10: +case 1073742325: +pt = this.vwr.ms.getAtomSetCenter(this.atomExpressionAt(i)); +i = eval.iToken; +if (this.chk) break; +this.vwr.toFractional(pt, true); +break; +default: +if (eval.isCenterParameter(i)) { +pt = this.centerParameter(i); +i = eval.iToken; +break; +}this.invArg(); +} +pt.x -= 0.5; +pt.y -= 0.5; +pt.z -= 0.5; +break; +case 12290: +case 10: +case 1073742325: +var iAtom = this.atomExpressionAt(i).nextSetBit(0); +i = eval.iToken; +if (!this.chk) this.vwr.am.setUnitCellAtomIndex(iAtom); +if (iAtom < 0) return; +break; +case 1073742066: +isOffset = true; +if (eval.isAtomExpression(i + 1)) { +pt = eval.centerParameter(++i, null); +i = eval.iToken; +if (this.chk) break; +this.vwr.toFractional(pt, false); +break; +}case 1073742114: +pt = eval.getFractionalPoint(++i); +if (Clazz.instanceOf(pt,"JU.P4")) { +if (isOffset) this.invArg(); +} else { +i = eval.iToken; +if (this.chk) break; +if (!isOffset && pt.x < 555) { +pt = JU.SimpleUnitCell.ptToIJK(eval.checkHKL(pt), 1); +} else { +pt = JU.P4.new4(pt.x, pt.y, pt.z, (isOffset ? 1 : 0)); +}}break; +case 3: +case 2: +var f = this.floatParameter(i); +if (f < 111) { +i--; +break; +}icell = this.intParameter(i); +break; +case 4: +case 1073741824: +var s = this.paramAsStr(i).toLowerCase(); +if (s.equals("rhombohedral") || s.equals("r")) { +if (sym != null && sym.getUnitCellInfoType(7) == 0) return; +s = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"; +} else if (s.equals("trigonal") || s.equals("hexagonal")) { +if (sym != null && sym.getUnitCellInfoType(8) == 0) return; +s = "a-b,b-c,a+b+c"; +}ucname = s; +if (s.indexOf(",") >= 0 || this.chk) { +newUC = s; +break; +}var stype = null; +this.vwr.ms.setModelCagePts(-1, null, null); +newUC = this.vwr.getModelInfo("unitcell_conventional"); +var modelIsPrimitive = this.vwr.getModelInfo("isprimitive") != null; +if (JU.PT.isOneOf(ucname, ";parent;standard;primitive;")) { +if (newUC == null && modelIsPrimitive) { +this.showString("Cannot convert unit cell when file data is primitive and have no lattice information"); +return; +}if (ucname.equals("primitive") && this.tokAt(i + 1) == 4) stype = this.paramAsStr(++i).toUpperCase(); +}if (Clazz.instanceOf(newUC,Array)) { +oabc = newUC; +}if (stype == null) stype = this.vwr.getModelInfo("latticeType"); +if (newUC != null) { +this.vwr.ms.setModelCagePts(-1, this.vwr.getV0abc(-1, newUC), "" + newUC); +newUC = null; +}if (!ucname.equals("conventional")) { +this.setShapeProperty(34, "labels", null); +s = this.vwr.getModelInfo("unitcell_" + ucname); +if (s == null) { +var isPrimitive = ucname.equals("primitive"); +if (isPrimitive || ucname.equals("reciprocal")) { +var scale = (this.slen == i + 1 ? 1 : this.tokAt(i + 1) == 2 ? this.intParameter(++i) * 3.141592653589793 : this.floatParameter(++i)); +ucname = (sym == null ? "" : sym.getSpaceGroupName() + " ") + ucname; +oabc = (sym == null ? Clazz.newArray(-1, [JU.P3.new3(0, 0, 0), JU.P3.new3(1, 0, 0), JU.P3.new3(0, 1, 0), JU.P3.new3(0, 0, 1)]) : sym.getUnitCellVectors()); +if (stype == null) stype = this.vwr.getSymmetryInfo(this.vwr.getFrameAtoms().nextSetBit(0), null, 0, null, null, null, 1073741994, null, 0, -1, 0, null); +if (sym == null) sym = this.vwr.getSymTemp(); +if (!modelIsPrimitive) sym.toFromPrimitive(true, stype.length == 0 ? 'P' : stype.charAt(0), oabc, this.vwr.getCurrentModelAuxInfo().get("primitiveToCrystal")); +if (!isPrimitive) { +JU.SimpleUnitCell.getReciprocal(oabc, oabc, scale); +}break; +}} else { +ucname = s; +if (s.indexOf(",") >= 0) newUC = s; +}}break; +default: +var ret = new Array(1); +if (this.getUnitCellParameter(i, ret)) { +oabc = ret[0]; +} else { +newUC = ret[0]; +}if (newUC == null && oabc == null) { +if (this.slen > i + 1) { +pt = eval.getFractionalPoint(i); +i = eval.iToken; +} else { +i--; +}} else if (newUC != null) { +if (!this.chk && isModelkit) { +if (sym == null) { +this.vwr.getModelkit(false).cmdAssignSpaceGroup(null, "P1", newUC, false, false, "unitcell"); +} else if (sym.fixUnitCell(newUC)) { +eval.invArgStr("Unit cell is incompatible with current space group"); +}}i = eval.iToken; +} else if (oabc != null) { +i = eval.iToken; +}break; +} +mad10 = eval.getSetAxesTypeMad10(++i); +eval.checkLast(eval.iToken); +if (this.chk || mad10 == 2147483647) return; +if (mad10 == 2147483647) this.vwr.am.setUnitCellAtomIndex(-1); +if (oabc == null && newUC != null) oabc = this.vwr.getV0abc(-1, newUC); +if (icell != 2147483647) { +if (sym != null) sym.setOffset(icell); +} else if (id != null) { +this.vwr.setCurrentCage(id); +} else if (isReset || oabc != null) { +isReset = (isModelkit || sym == null ? this.vwr.getModelkit(false).transformAtomsToUnitCell(sym, oabc, ucname) : true); +if (isReset) { +if (isModelkit && sym != null) { +this.vwr.ms.setSpaceGroup(this.vwr.am.cmi, sym.getUnitCell(oabc, false, null), null); +return; +}this.vwr.ms.setModelCagePts(-1, oabc, ucname); +if (sym == null) { +this.vwr.setNewRotationCenter(this.e.getUnitCellCenter()); +}}}eval.setObjectMad10(33, "unitCell", mad10); +if (pt != null) { +sym = this.vwr.ms.getUnitCell(-2147483648); +if (sym != null) sym.setOffsetPt(pt); +}if (tickInfo != null) this.setShapeProperty(33, "tickInfo", tickInfo); +if (ucname != null) this.showString(ucname + (oabc == null ? "" : " " + JU.Escape.e(oabc))); +}, "~N,~B"); +Clazz.defineMethod(c$, "getUVBoxFromHKL", +function(uc, hkl, plane){ +var h = Clazz.floatToInt(hkl.x); +var k = Clazz.floatToInt(hkl.y); +var l = Clazz.floatToInt(hkl.z); +if (h == 0 && k == 0 && l == 0 || h != hkl.x || k != hkl.y || l != hkl.z) this.invArg(); +while ((h % 2) == 0 && (k % 2) == 0 && (l % 2) == 0) { +h /= 2; +k /= 2; +l /= 2; +} +var oabc = uc.getUnitCellVectors(); +var dist0 = plane.w; +var p0 = JU.P4.new4(plane.x, plane.y, plane.z, 0); +var max = Math.max(Math.max(h, k), l); +var cpts = JU.Measure.getLatticePoints(uc.getLatticeCentering(), max, max, max); +for (var j = cpts.size(); --j >= 0; ) { +uc.toCartesian(cpts.get(j), true); +} +cpts = JU.Measure.getPointsOnPlane(cpts.toArray( new Array(cpts.size())), p0); +var zero = new JU.P3(); +var amin = -179; +var dmin = 3.4028235E38; +var dmin2 = 3.4028235E38; +var v = null; +var v1 = null; +var da = amin; +var damin = 3.4028235E38; +var d; +var okAng; +var isNew; +var isLinear; +for (var i = cpts.size(); --i >= 0; ) { +var pt = cpts.get(i); +d = pt.length(); +isNew = isLinear = false; +if (d < 0.01 || v != null && ((da = Math.abs(JU.Measure.computeTorsion(v, zero, plane, pt, true))) > -amin)) continue; +isLinear = (da < 1); +if (v == null) { +v = pt; +dmin = d; +continue; +}if (d < dmin - 0.01) { +isNew = true; +damin = 3.4028235E38; +da = 3.4028235E38; +} else if (d < dmin2 - 0.01) { +damin = 3.4028235E38; +} else if (d >= dmin2 + 0.01) { +} else { +continue; +}if (isNew || (okAng = (da > 89)) && d < dmin + 0.1 && (pt.x >= -0.01 && pt.y <= 0.01) && (damin == 3.4028235E38 || damin < 89)) { +if (isLinear) { +v1 = null; +dmin2 = 3.4028235E38; +} else { +v1 = v; +dmin2 = dmin; +}v = pt; +dmin = d; +if (!isNew && da < damin) damin = da; +} else if (okAng && d < dmin2 + 0.1) { +v1 = pt; +dmin2 = d; +if (da < damin) damin = da; +}} +if (v == null) this.invArg(); +var u = null; +if (v1 == null) { +for (var i = cpts.size(); --i >= 0; ) { +var pt = cpts.get(i); +da = JU.Measure.computeTorsion(v, zero, plane, pt, true); +if (da < -89.9 && da > amin + 0.01) { +amin = da; +u = pt; +}} +} else { +da = JU.Measure.computeTorsion(v, zero, plane, v1, true); +if (da > 1) { +u = v; +v = v1; +} else { +u = v1; +}}if (u == null) this.invArg(); +oabc[1] = u; +oabc[2] = v; +var doReverse = ((((h < 0 ? 1 : 0) + (k < 0 ? 1 : 0) + (l < 0 ? 1 : 0)) % 2) == 1); +var w = oabc[3]; +var a = JU.P3.newP(u); +var b = JU.P3.newP(v); +if (h == 0 && k == 0) { +b.scale(-1); +a.scale(-1); +oabc[1] = a; +oabc[2] = b; +} else if (h == 0 && l == 0) { +} else if (k == 0 && l == 0) { +a.scale(-1); +b.scale(-1); +oabc[1] = b; +oabc[2] = a; +}if (doReverse) { +a = oabc[1]; +oabc[1] = oabc[2]; +oabc[2] = a; +}w.cross(v, u); +w.normalize(); +w.scale(dist0); +return oabc; +}, "J.api.SymmetryInterface,JU.P4,JU.P4"); +Clazz.defineMethod(c$, "modelkit", +function(){ +var i = 0; +var tok = this.tokAt(1); +switch (tok) { +case 603984065: +case 4139: +if (this.chk) this.e.cmdUndoRedo(tok == 603984065 ? 4165 : 4140); +return; +case 1073742334: +if (this.e.$isStateScript) this.vwr.getModelkit(false).setProperty("updatekeysfromstate", null); +if (this.slen == 2 && this.vwr.getModelkitPropertySafely("exists") == null) return; +case 0: +case 1073742335: +if (!this.chk) this.vwr.setBooleanProperty("modelkitmode", tok != 1073742334); +if (this.tokAt(i + 1) == 0) return; +i = ++this.e.iToken; +break; +case 4126: +if (this.vwr.am.cmi < 0) this.e.errorStr(30, "MODELKIT MINIMIZE"); +this.minimize(true); +return; +case 528432: +case 4145: +this.e.cmdRotate(false, true); +return; +case 4098: +++this.e.iToken; +case 134217764: +case 4106: +case 12291: +case 1275069441: +case 4129: +case 1073742080: +case 12297: +case 135176: +this.assign(true); +return; +case 4130: +++this.e.iToken; +this.mutate(); +return; +} +var kit = this.vwr.getModelkit(false); +while ((tok = this.tokAt(++i)) != 0) { +var key = this.paramAsStr(i).toLowerCase(); +var value = null; +switch (tok) { +case 1073742335: +case 1073742334: +if (!this.chk) { +this.vwr.setBooleanProperty("modelkitmode", tok == 1073742335); +if (tok == 1073742334) this.vwr.setStringProperty("picking", "identify"); +}continue; +case 1610625028: +case 12294: +key = "hidden"; +value = Boolean.$valueOf(tok != 1610625028); +break; +case 12293: +key = "constraint"; +value = ""; +var type = this.tokAt(++i); +var v1 = null; +var v2 = null; +var plane = null; +switch (type) { +case 1073742334: +case 1073742333: +if (!this.chk) this.vwr.setBooleanProperty("dragPicking", false); +break; +case 135198: +v1 = this.e.getPoint3f(++i, true, true); +i = this.e.iToken; +v2 = this.e.getPoint3f(++i, true, true); +value = null; +break; +case 134219777: +plane = this.e.hklParameter(++i, null, true); +value = null; +break; +case 134217750: +plane = this.e.planeParameter(++i, false); +value = null; +break; +default: +this.invArg(); +} +if (value == null) { +if ((v1 == null || v2 == null) == (plane == null)) this.invArg(); +value = Clazz.newArray(-1, [v1, v2, plane]); +} else { +value = null; +}i = this.e.iToken; +break; +case 36867: +key = this.paramAsStr(++i); +value = (this.tokAt(++i) == 0 ? "true" : this.paramAsStr(i)); +break; +case 4166: +key = "vibration"; +switch (this.tokAt(++i)) { +case 1073742334: +value = "off"; +break; +case 1086324754: +value = "wyckoff"; +break; +default: +this.invArg(); +break; +} +break; +case 1296041985: +switch (this.tokAt(++i)) { +case 4: +case 1073742333: +value = this.paramAsStr(i); +break; +case 12: +value = this.getToken(i).value; +break; +case 2: +value = Integer.$valueOf(this.getToken(i).intValue); +break; +default: +if (this.e.isCenterParameter(i)) { +key = "center"; +value = this.e.centerParameter(i, null); +i = this.e.iToken; +} else { +this.invArg(); +}break; +} +break; +case 1073742066: +value = this.paramAsStr(i + 1); +if (value.equals("none")) { +++i; +break; +}case 134217751: +case 12289: +value = this.e.atomCenterOrCoordinateParameter(++i, null); +i = this.e.iToken; +break; +case 1073742024: +value = this.paramAsStr(++i).toLowerCase(); +if (!this.vwr.isModelKitOption('M', value)) this.invArg(); +break; +case 1814695966: +if (this.e.isArrayParameter(i + 1)) { +this.unitcell(2, true); +return; +}value = this.paramAsStr(++i).toLowerCase(); +if (!this.vwr.isModelKitOption('U', value)) { +this.unitcell(2, true); +return; +}break; +case 1088421903: +value = this.paramAsStr(++i).toLowerCase(); +if (!this.vwr.isModelKitOption('S', value)) this.invArg(); +break; +default: +if (this.vwr.isModelKitOption('B', key)) { +value = Boolean.$valueOf((tok = this.tokAt(++i)) == 0 || tok == 1073742335); +break; +}if (this.vwr.isModelKitOption('M', key)) { +value = key; +key = "mode"; +break; +}if (this.vwr.isModelKitOption('U', key)) { +value = key; +key = "unitcell"; +break; +}this.invArg(); +} +if (!this.chk && value != null && (value = kit.setProperty(key, value)) != null && key !== "hidden" && !kit.isHidden()) this.vwr.showString("modelkit SET " + key + " " + value.toString(), false); +} +}); +Clazz.defineMethod(c$, "assign", +function(isModelkit){ +if (this.vwr.am.cmi < 0) this.invArg(); +var bsModelAtoms = this.vwr.getThisModelAtoms(); +var i = ++this.e.iToken; +var doDraw = false; +var mode = this.tokAt(i); +if (mode == 135176) { +if (this.tokAt(2) != 134217764) this.invArg(); +doDraw = true; +mode = 12297; +}if (mode == 12297) { +if (!isModelkit) this.invArg(); +if (!this.e.chk) this.vwr.zap(false, false, false); +mode = this.tokAt(++i); +if (mode == 0) return; +}var isAtom = (mode == 1153433601); +var isBond = (mode == 1677721602); +var isAdd = (mode == 1275069441); +var isConnect = (mode == 4106); +var isDelete = (mode == 12291); +var isMove = (mode == 4129); +var isSpacegroup = (mode == 134217764); +var isPacked = (mode == 1073742080); +if ((isPacked || isSpacegroup) && !isModelkit) { +this.invArg(); +}if (isAtom || isBond || isConnect || isSpacegroup || isDelete || isMove || isAdd || isPacked) { +i++; +} else { +isAtom = true; +mode = 1153433601; +}var index = -1; +var index2 = -1; +var bs = null; +if (isBond) { +if (this.tokAt(i) == 2) { +index = this.e.intParameter(i); +} else if (Clazz.instanceOf(this.getToken(i).value,"JM.BondSet")) { +index = (this.getToken(i).value).nextSetBit(0); +} else { +bs = this.expFor(i, bsModelAtoms); +index = bs.nextSetBit(0); +switch (bs.cardinality()) { +case 1: +bs = this.expFor(i = ++this.e.iToken, bsModelAtoms); +index2 = bs.nextSetBit(0); +if (index2 < 0) this.invArg(); +bs.set(index); +case 2: +bs = this.vwr.ms.getBondsForSelectedAtoms(bs, false); +if (!bs.isEmpty()) { +index = bs.nextSetBit(0); +} else { +isConnect = true; +mode = 4106; +}break; +case 0: +default: +this.invArg(); +} +}i = ++this.e.iToken; +} else if (isPacked) { +bs = bsModelAtoms; +} else if (isAtom && this.tokAt(i) == 4 || mode == 1275069441) { +} else if (!isSpacegroup || this.e.isAtomExpression(i)) { +bs = this.expFor(i, bsModelAtoms); +index = bs.nextSetBit(0); +if (index < 0) { +return; +}i = ++this.e.iToken; +}var type = null; +var pt = null; +var wyckoff = null; +var paramsOrUC = null; +var pts = null; +if (isAdd) { +if (this.e.isAtomExpression(i)) { +bs = this.expFor(++this.e.iToken, bsModelAtoms); +i = this.e.iToken; +type = this.e.optParameterAsString(i + 1); +i = this.e.iToken; +if (type.toLowerCase().equals("packed")) { +isPacked = true; +type = ""; +}} else { +type = this.e.optParameterAsString(i); +}if (this.e.isPoint3f(this.e.iToken + 1)) { +pt = this.getPoint3f(++this.e.iToken, true); +} else if (this.e.isArrayParameter(this.e.iToken + 1)) { +pts = this.e.getPointArray(this.e.iToken + 1, -1, false); +}if (type.length == 0) type = null; +switch (this.tokAt(this.e.iToken + 1)) { +case 1073742080: +isPacked = true; +++this.e.iToken; +break; +case 1086324754: +++this.e.iToken; +wyckoff = this.paramAsStr(++this.e.iToken); +var w = (wyckoff.equalsIgnoreCase("general") ? 'G' : (wyckoff.length > 1 || wyckoff.length == 0 ? '\0' : wyckoff.charAt(0))); +if (w < 'a' && w != 'A' && w != 'G' || w > 'z') this.invArg(); +if ("packed".equals(this.e.optParameterAsString(this.e.iToken + 1))) { +isPacked = true; +++this.e.iToken; +}break; +} +} else if (isMove) { +if (this.e.isArrayParameter(i)) { +pts = this.e.getPointArray(i, -1, false); +} else { +pt = this.getPoint3f(i, true); +}i = this.e.iToken; +} else if (isSpacegroup) { +type = this.e.optParameterAsString(i); +var sym = this.vwr.getOperativeSymmetry(); +if (type.equalsIgnoreCase("packed")) { +if (sym == null) this.invArg(); +type = sym.getClegId(); +isPacked = true; +} else if (type.indexOf(":") < 0 && type.indexOf(">") < 0 && (type.indexOf(",") > 0 || "rh".indexOf(type) >= 0)) { +if (sym == null) this.invArg(); +var cleg = sym.getClegId(); +type = cleg.substring(0, cleg.indexOf(":") + 1) + type; +}if (this.tokAt(this.e.iToken + 1) == 1814695966) { +var ret = new Array(1); +this.getUnitCellParameter(this.e.iToken + 2, ret); +paramsOrUC = ret[0]; +if (paramsOrUC == null) this.invArg(); +}if (this.tokAt(this.e.iToken + 1) == 1073742080) { +isPacked = true; +++this.e.iToken; +}} else if (isConnect) { +if (index2 < 0) { +bs = this.expFor(i, bsModelAtoms); +index2 = bs.nextSetBit(0); +type = this.e.optParameterAsString(++this.e.iToken); +}} else { +type = this.e.optParameterAsString(i); +if (isAtom) pt = (++this.e.iToken < this.slen ? this.centerParameter(this.e.iToken) : null); +}if (this.chk) return; +this.vwr.pushState(); +switch (mode) { +case 1153433601: +this.e.clearDefinedVariableAtomSets(); +this.vwr.getModelkit(false).cmdAssignAtom(bs, pt, type, this.e.fullCommand); +break; +case 1677721602: +this.vwr.getModelkit(false).cmdAssignBond(index, (type + "-").charAt(0), this.e.fullCommand); +break; +case 4106: +this.vwr.getModelkit(false).cmdAssignConnect(index, index2, (type + "1").charAt(0), this.e.fullCommand); +break; +case 1073742080: +type = null; +case 1275069441: +case 1086324754: +if (pts == null) { +if (pt != null) { +pts = Clazz.newArray(-1, [pt]); +} else if (bs == null && wyckoff == null) { +if (type == null) this.invArg(); + else wyckoff = "G"; +}}var na = this.vwr.getModelkit(false).cmdAssignAddAtoms(type + (wyckoff != null ? ":" + wyckoff : ""), pts, bs, (isPacked ? "packed" : ""), this.e.fullCommand); +if (this.e.doReport()) this.e.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms added"), na), false); +break; +case 12291: +var nd = this.vwr.getModelkit(false).cmdAssignDeleteAtoms(bs); +if (this.e.doReport()) this.e.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms deleted"), nd), false); +break; +case 4129: +var nm = this.vwr.getModelkit(false).cmdAssignMoveAtoms(bs, index, JU.P3.newP(pt), pts, true, false); +if (nm > 0) this.vwr.checkCoordinatesChanged(bs); +if (this.e.doReport()) this.e.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms moved"), nm), false); +break; +case 134217764: +var s = this.vwr.getModelkit(false).cmdAssignSpaceGroup(bs, type, paramsOrUC, isPacked, doDraw, this.e.fullCommand); +var isError = s.endsWith("!"); +if (isError) this.e.invArgStr(s); +if (this.e.doReport()) this.e.showString(s); +break; +} +}, "~B"); +Clazz.defineMethod(c$, "getUnitCellParameter", +function(i, ret){ +ret[0] = null; +if (this.tokAt(i) == 8) return false; +var ei = this.e.iToken; +if (this.tokAt(i) == 4) { +var tr = this.paramAsStr(i); +var uc = this.vwr.getCurrentUnitCell(); +if (uc == null) this.invArg(); +if (!this.chk) ret[0] = uc.getV0abc(tr, null); +return true; +}if (this.e.isArrayParameter(i)) { +this.e.ignoreError = true; +if (this.tokAt(i + 2) != 1073742332) { +try { +ret[0] = this.e.floatParameterSet(i, 6, 6); +this.e.ignoreError = false; +return false; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}try { +ret[0] = this.e.getPointArray(i, 4, false); +} catch (ee) { +if (Clazz.exceptionOf(ee, Exception)){ +this.e.iToken = ei; +} else { +throw ee; +} +} +this.e.ignoreError = false; +}return true; +}, "~N,~A"); +Clazz.defineMethod(c$, "expFor", +function(i, bsAtoms){ +var bs = JU.BS.copy(this.atomExpressionAt(i)); +bs.and(bsAtoms); +return bs; +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getContext", +function(withVariables){ +var sb = new JU.SB(); +var context = this.e.thisContext; +while (context != null) { +if (withVariables) { +if (context.vars != null) { +sb.append(this.getScriptID(context)); +sb.append(JV.StateManager.getVariableList(context.vars, 80, true, false)); +}} else { +sb.append(JS.ScriptError.getErrorLineMessage(context.functionName, context.scriptFileName, this.e.getLinenumber(context), context.pc, JS.ScriptEval.statementAsString(this.vwr, context.statement, -9999, this.e.debugHigh))); +}context = context.parentContext; +} +if (withVariables) { +if (this.e.contextVariables != null) { +sb.append(this.getScriptID(null)); +sb.append(JV.StateManager.getVariableList(this.e.contextVariables, 80, true, false)); +}} else { +sb.append(this.e.getErrorLineMessage2()); +}return sb.toString(); +}, "~B"); +Clazz.defineMethod(c$, "getIsosurfaceJvxl", +function(iShape, type){ +type = (type === "PMESH" || type === "MESH" ? "jvxlMeshX" : type === "ISOMESH" ? "pmesh" : type === "ISOMESHBIN" || type === "PMB" ? "pmeshbin" : "jvxlDataXml"); +return (this.chk ? "" : this.getShapeProperty(iShape, type)); +}, "~N,~S"); +Clazz.defineMethod(c$, "getMoJvxl", +function(ptMO, isNBO){ +var iShape = (isNBO ? 28 : 27); +this.e.sm.loadShape(iShape); +var modelIndex = this.vwr.am.cmi; +if (modelIndex < 0) this.e.errorStr(30, "show/write MO/NBO"); +var moData = this.vwr.ms.getInfo(modelIndex, "moData"); +if (moData == null) this.error(27); +var n = this.getShapeProperty(iShape, "moNumber"); +if (n == null || n.intValue() == 0) this.setShapeProperty(iShape, "init", Integer.$valueOf(modelIndex)); +this.setShapeProperty(iShape, "moData", moData); +return this.e.sm.getShapePropertyIndex(iShape, "showMO", ptMO); +}, "~N,~B"); +Clazz.defineMethod(c$, "getScriptID", +function(context){ +var fuName = (context == null ? this.e.functionName : "function " + context.functionName); +var fiName = (context == null ? this.e.scriptFileName : context.scriptFileName); +return "\n# " + fuName + " (file " + fiName + (context == null ? "" : " context " + context.id) + ")\n"; +}, "JS.ScriptContext"); +Clazz.defineMethod(c$, "tokenAt", +function(i, args){ +return (i < args.length ? args[i] : null); +}, "~N,~A"); +c$.tokAtArray = Clazz.defineMethod(c$, "tokAtArray", +function(i, args){ +return (i < args.length && args[i] != null ? args[i].tok : 0); +}, "~N,~A"); +Clazz.defineMethod(c$, "getPlotMinMax", +function(data, isMax, tok){ +if (data == null) return 0; +switch (tok) { +case 1111490568: +case 1111490569: +case 1111490570: +return (isMax ? 180 : -180); +case 1111490565: +case 1111490576: +return (isMax ? 360 : 0); +case 1111490574: +return (isMax ? 1 : -1); +} +var fmax = (isMax ? -1.0E10 : 1E10); +for (var i = data.length; --i >= 0; ) { +var f = data[i]; +if (Float.isNaN(f)) continue; +if (isMax == (f > fmax)) fmax = f; +} +return fmax; +}, "~A,~B,~N"); +Clazz.defineMethod(c$, "parseDataArray", +function(str, is3D){ +str = JU.Parser.fixDataString(str); +var lines = JU.Parser.markLines(str, '\n'); +var nLines = lines.length; +if (!is3D) { +var data = JU.AU.newFloat2(nLines); +for (var iLine = 0, pt = 0; iLine < nLines; pt = lines[iLine++]) { +var tokens = JU.PT.getTokens(str.substring(pt, lines[iLine])); +JU.PT.parseFloatArrayData(tokens, data[iLine] = Clazz.newFloatArray (tokens.length, 0)); +} +return data; +}var tokens = JU.PT.getTokens(str.substring(0, lines[0])); +if (tokens.length != 3) return Clazz.newFloatArray (0, 0, 0, 0); +var nX = JU.PT.parseInt(tokens[0]); +var nY = JU.PT.parseInt(tokens[1]); +var nZ = JU.PT.parseInt(tokens[2]); +if (nX < 1 || nY < 1 || nZ < 1) return Clazz.newFloatArray (1, 1, 1, 0); +var data = JU.AU.newFloat3(nX, nY); +var iX = 0; +var iY = 0; +for (var iLine = 1, pt = lines[0]; iLine < nLines && iX < nX; pt = lines[iLine++]) { +tokens = JU.PT.getTokens(str.substring(pt, lines[iLine])); +if (tokens.length < nZ) continue; +JU.PT.parseFloatArrayData(tokens, data[iX][iY] = Clazz.newFloatArray (tokens.length, 0)); +if (++iY == nY) { +iX++; +iY = 0; +}} +if (iX != nX) { +System.out.println("Error reading 3D data -- nX = " + nX + ", but only " + iX + " blocks read"); +return Clazz.newFloatArray (1, 1, 1, 0); +}return data; +}, "~S,~B"); +Clazz.defineMethod(c$, "getBitsetPropertyFloat", +function(bs, tok, property, min, max){ +var odata = (property == null || tok == (1086325010) || tok == (1111490843) ? this.e.getBitsetProperty(bs, null, tok, null, null, property, null, false, 2147483647, false) : this.vwr.getDataObj(property, bs, 1)); +if (odata == null || !JU.AU.isAF(odata)) return (bs == null ? null : Clazz.newFloatArray (bs.cardinality(), 0)); +var data = odata; +if (!Float.isNaN(min)) for (var i = 0; i < data.length; i++) if (data[i] < min) data[i] = NaN; + +if (!Float.isNaN(max)) for (var i = 0; i < data.length; i++) if (data[i] > max) data[i] = NaN; + +return data; +}, "JU.BS,~N,~S,~N,~N"); +c$.labeler = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Color.js b/config/plugins/visualizations/jmol/static/j2s/JS/Color.js new file mode 100755 index 000000000000..053f36f6dfa0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Color.js @@ -0,0 +1,43 @@ +Clazz.declarePackage("JS"); +Clazz.load(["javajs.api.GenericColor"], "JS.Color", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.argb = 0; +Clazz.instantialize(this, arguments);}, JS, "Color", null, javajs.api.GenericColor); +Clazz.overrideMethod(c$, "getRGB", +function(){ +return this.argb & 0x00FFFFFF; +}); +Clazz.overrideMethod(c$, "getOpacity255", +function(){ +return ((this.argb >> 24) & 0xFF); +}); +Clazz.overrideMethod(c$, "setOpacity255", +function(a){ +this.argb = this.argb & 0xFFFFFF | ((a & 0xFF) << 24); +}, "~N"); +c$.get1 = Clazz.defineMethod(c$, "get1", +function(rgb){ +var c = new JS.Color(); +c.argb = rgb | 0xFF000000; +return c; +}, "~N"); +c$.get3 = Clazz.defineMethod(c$, "get3", +function(r, g, b){ +return new JS.Color().set4(r, g, b, 0xFF); +}, "~N,~N,~N"); +c$.get4 = Clazz.defineMethod(c$, "get4", +function(r, g, b, a){ +return new JS.Color().set4(r, g, b, a); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "set4", +function(r, g, b, a){ +this.argb = ((a << 24) | (r << 16) | (g << 8) | b) & 0xFFFFFFFF; +return this; +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +var s = ("00000000" + Integer.toHexString(this.argb)); +return "[0x" + s.substring(s.length - 8, s.length) + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ColumnSelectionModel.js b/config/plugins/visualizations/jmol/static/j2s/JS/ColumnSelectionModel.js new file mode 100755 index 000000000000..f6de90071a81 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ColumnSelectionModel.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "ColumnSelectionModel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/CommandWatcherThread.js b/config/plugins/visualizations/jmol/static/j2s/JS/CommandWatcherThread.js new file mode 100755 index 000000000000..78297a5d03d2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/CommandWatcherThread.js @@ -0,0 +1,49 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.thread.JmolThread"], "JS.CommandWatcherThread", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.scriptManager = null; +Clazz.instantialize(this, arguments);}, JS, "CommandWatcherThread", J.thread.JmolThread); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.CommandWatcherThread, []); +}); +Clazz.overrideMethod(c$, "setManager", +function(manager, vwr, params){ +this.scriptManager = manager; +this.setViewer(vwr, "CommmandWatcherThread"); +return 0; +}, "~O,JV.Viewer,~O"); +Clazz.overrideMethod(c$, "run", +function(){ +Thread.currentThread().setPriority(1); +while (!this.stopped) { +try { +Thread.sleep(50); +if (!this.stopped) { +this.scriptManager.runScriptNow(); +}} catch (e$$) { +if (Clazz.exceptionOf(e$$,"InterruptedException")){ +var ie = e$$; +{ +JU.Logger.warn("CommandWatcher InterruptedException! " + this); +break; +} +} else if (Clazz.exceptionOf(e$$, Exception)){ +var ie = e$$; +{ +var s = "script processing ERROR:\n\n" + ie.toString(); +{ +}JU.Logger.warn("CommandWatcher Exception! " + s); +break; +} +} else { +throw e$$; +} +} +} +}); +Clazz.overrideMethod(c$, "run1", +function(mode){ +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Component.js b/config/plugins/visualizations/jmol/static/j2s/JS/Component.js new file mode 100755 index 000000000000..aa776354b554 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Component.js @@ -0,0 +1,120 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.Component", ["JU.CU"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this._visible = false; +this.enabled = true; +this.text = null; +this.name = null; +this.width = 0; +this.height = 0; +this.id = null; +this.parent = null; +this.mouseListener = null; +this.bgcolor = null; +this.minWidth = 30; +this.minHeight = 30; +this.renderWidth = 0; +this.renderHeight = 0; +Clazz.instantialize(this, arguments);}, JS, "Component", null); +Clazz.makeConstructor(c$, +function(type){ +this.id = JS.Component.newID(type); +if (type == null) return; +{ +SwingController.register(this, type); +}}, "~S"); +Clazz.defineMethod(c$, "setParent", +function(p){ +this.parent = p; +}, "~O"); +c$.newID = Clazz.defineMethod(c$, "newID", +function(type){ +return type + ("" + Math.random()).substring(3, 10); +}, "~S"); +Clazz.defineMethod(c$, "setBackground", +function(color){ +this.bgcolor = color; +}, "javajs.api.GenericColor"); +Clazz.defineMethod(c$, "setText", +function(text){ +this.text = text; +{ +SwingController.setText(this); +}}, "~S"); +Clazz.defineMethod(c$, "setName", +function(name){ +this.name = name; +}, "~S"); +Clazz.defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz.defineMethod(c$, "getParent", +function(){ +return this.parent; +}); +Clazz.defineMethod(c$, "setPreferredSize", +function(dimension){ +this.width = dimension.width; +this.height = dimension.height; +}, "JS.Dimension"); +Clazz.defineMethod(c$, "addMouseListener", +function(listener){ +this.mouseListener = listener; +}, "~O"); +Clazz.defineMethod(c$, "getText", +function(){ +return this.text; +}); +Clazz.defineMethod(c$, "isEnabled", +function(){ +return this.enabled; +}); +Clazz.defineMethod(c$, "setEnabled", +function(enabled){ +this.enabled = enabled; +{ +SwingController.setEnabled(this); +}}, "~B"); +Clazz.defineMethod(c$, "isVisible", +function(){ +return this._visible; +}); +Clazz.defineMethod(c$, "setVisible", +function(visible){ +this._visible = visible; +{ +SwingController.setVisible(this); +}}, "~B"); +Clazz.defineMethod(c$, "getHeight", +function(){ +return this.height; +}); +Clazz.defineMethod(c$, "getWidth", +function(){ +return this.width; +}); +Clazz.defineMethod(c$, "setMinimumSize", +function(d){ +this.minWidth = d.width; +this.minHeight = d.height; +}, "JS.Dimension"); +Clazz.defineMethod(c$, "getSubcomponentWidth", +function(){ +return this.width; +}); +Clazz.defineMethod(c$, "getSubcomponentHeight", +function(){ +return this.height; +}); +Clazz.defineMethod(c$, "getCSSstyle", +function(defaultPercentW, defaultPercentH){ +var width = (this.renderWidth > 0 ? this.renderWidth : this.getSubcomponentWidth()); +var height = (this.renderHeight > 0 ? this.renderHeight : this.getSubcomponentHeight()); +return (width > 0 ? "width:" + width + "px;" : defaultPercentW > 0 ? "width:" + defaultPercentW + "%;" : "") + (height > 0 ? "height:" + height + "px;" : defaultPercentH > 0 ? "height:" + defaultPercentH + "%;" : "") + (this.bgcolor == null ? "" : "background-color:" + JU.CU.toCSSString(this.bgcolor) + ";"); +}, "~N,~N"); +Clazz.defineMethod(c$, "repaint", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Container.js b/config/plugins/visualizations/jmol/static/j2s/JS/Container.js new file mode 100755 index 000000000000..0a9982f0f12a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Container.js @@ -0,0 +1,65 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.Component"], "JS.Container", ["JU.Lst"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.list = null; +this.cList = null; +Clazz.instantialize(this, arguments);}, JS, "Container", JS.Component); +Clazz.defineMethod(c$, "getComponent", +function(i){ +return this.list.get(i); +}, "~N"); +Clazz.defineMethod(c$, "getComponentCount", +function(){ +return (this.list == null ? 0 : this.list.size()); +}); +Clazz.defineMethod(c$, "getComponents", +function(){ +if (this.cList == null) { +if (this.list == null) return new Array(0); +this.cList = this.list.toArray(); +}return this.cList; +}); +Clazz.defineMethod(c$, "add", +function(component){ +return this.addComponent(component); +}, "JS.Component"); +Clazz.defineMethod(c$, "addComponent", +function(component){ +if (this.list == null) this.list = new JU.Lst(); +this.list.addLast(component); +this.cList = null; +component.parent = this; +return component; +}, "JS.Component"); +Clazz.defineMethod(c$, "insertComponent", +function(component, index){ +if (this.list == null) return this.addComponent(component); +this.list.add(index, component); +this.cList = null; +component.parent = this; +return component; +}, "JS.Component,~N"); +Clazz.defineMethod(c$, "remove", +function(i){ +var c = this.list.removeItemAt(i); +c.parent = null; +this.cList = null; +}, "~N"); +Clazz.defineMethod(c$, "removeAll", +function(){ +if (this.list != null) { +for (var i = this.list.size(); --i >= 0; ) this.list.get(i).parent = null; + +this.list.clear(); +}this.cList = null; +}); +Clazz.defineMethod(c$, "getSubcomponentWidth", +function(){ +return (this.list != null && this.list.size() == 1 ? this.list.get(0).getSubcomponentWidth() : 0); +}); +Clazz.defineMethod(c$, "getSubcomponentHeight", +function(){ +return (this.list != null && this.list.size() == 1 ? this.list.get(0).getSubcomponentHeight() : 0); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ContextToken.js b/config/plugins/visualizations/jmol/static/j2s/JS/ContextToken.js new file mode 100755 index 000000000000..9aac744cb4c4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ContextToken.js @@ -0,0 +1,27 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.T"], "JS.ContextToken", ["java.util.Hashtable", "JS.SV"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.contextVariables = null; +this.forVars = null; +this.name0 = null; +Clazz.instantialize(this, arguments);}, JS, "ContextToken", JS.T); +c$.newContext = Clazz.defineMethod(c$, "newContext", +function(isOpen){ +var ct = (isOpen ? JS.ContextToken.newCmd(1275335685, "{") : JS.ContextToken.newCmd(1275334681, "}")); +ct.intValue = 0; +return ct; +}, "~B"); +c$.newCmd = Clazz.defineMethod(c$, "newCmd", +function(tok, value){ +var ct = new JS.ContextToken(); +ct.tok = tok; +ct.value = value; +return ct; +}, "~N,~O"); +Clazz.defineMethod(c$, "addName", +function(name){ +if (this.contextVariables == null) this.contextVariables = new java.util.Hashtable(); +this.contextVariables.put(name, JS.SV.newS("").setName(name)); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Dimension.js b/config/plugins/visualizations/jmol/static/j2s/JS/Dimension.js new file mode 100755 index 000000000000..1878889b20f1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Dimension.js @@ -0,0 +1,18 @@ +Clazz.declarePackage("JS"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.width = 0; +this.height = 0; +Clazz.instantialize(this, arguments);}, JS, "Dimension", null); +Clazz.makeConstructor(c$, +function(w, h){ +this.set(w, h); +}, "~N,~N"); +Clazz.defineMethod(c$, "set", +function(w, h){ +this.width = w; +this.height = h; +return this; +}, "~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Document.js b/config/plugins/visualizations/jmol/static/j2s/JS/Document.js new file mode 100755 index 000000000000..0902c9095b14 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Document.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "Document"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/FileLoadThread.js b/config/plugins/visualizations/jmol/static/j2s/JS/FileLoadThread.js new file mode 100755 index 000000000000..6120b55861ef --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/FileLoadThread.js @@ -0,0 +1,50 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.thread.JmolThread"], "JS.FileLoadThread", ["JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.fileName = null; +this.cacheName = null; +this.key = null; +Clazz.instantialize(this, arguments);}, JS, "FileLoadThread", J.thread.JmolThread); +Clazz.makeConstructor(c$, +function(eval, vwr, fileName, key, cacheName){ +this.setViewer(vwr, "FileLoadThread"); +this.fileName = fileName; +this.key = key; +this.cacheName = cacheName; +this.setEval(eval); +this.sc.pc--; +}, "J.api.JmolScriptEvaluator,JV.Viewer,~S,~S,~S"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +mode = 0; +break; +case 0: +if (this.stopped || !this.vwr.testAsync && this.eval.isStopped()) { +mode = -2; +break; +}if (JV.Viewer.jmolObject != null) JV.Viewer.jmolObject.loadFileAsynchronously(this, this.vwr.html5Applet, this.fileName, null); +{ +}return; +case 1: +var data = this.vwr.fm.getFileAsBytes(this.fileName, null); +this.setData(this.fileName, this.fileName, data, null); +return; +case -2: +this.resumeEval(); +return; +} + +}, "~N"); +Clazz.defineMethod(c$, "setData", +function(fileName, fileName0, data, myData){ +var isCanceled = fileName.equals("#CANCELED#"); +this.sc.parentContext.htFileCache.put(this.key, (isCanceled ? fileName : (this.cacheName = this.cacheName.substring(0, this.cacheName.lastIndexOf("_") + 1) + fileName))); +this.vwr.cachePut(this.cacheName, data); +if (fileName0 != null) { +this.vwr.cachePut(this.vwr.fm.getFilePath(fileName, true, false), data); +}this.run1(-2); +}, "~S,~S,~O,~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/FlowLayout.js b/config/plugins/visualizations/jmol/static/j2s/JS/FlowLayout.js new file mode 100755 index 000000000000..29fab7f9eeb7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/FlowLayout.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.LayoutManager"], "JS.FlowLayout", null, function(){ +var c$ = Clazz.declareType(JS, "FlowLayout", JS.LayoutManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Grid.js b/config/plugins/visualizations/jmol/static/j2s/JS/Grid.js new file mode 100755 index 000000000000..3e3c0aa015cc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Grid.js @@ -0,0 +1,46 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.Grid", ["JU.AU", "$.SB", "JS.Cell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nrows = 0; +this.ncols = 0; +this.grid = null; +this.renderer = null; +Clazz.instantialize(this, arguments);}, JS, "Grid", null); +Clazz.makeConstructor(c$, +function(rows, cols){ +this.grid = Clazz.newArray(0, 0, null); +}, "~N,~N"); +Clazz.defineMethod(c$, "add", +function(btn, c){ +if (c.gridx >= this.ncols) { +this.ncols = c.gridx + 1; +for (var i = 0; i < this.nrows; i++) { +this.grid[i] = JU.AU.ensureLength(this.grid[i], this.ncols * 2); +} +}if (c.gridy >= this.nrows) { +var g = new Array(c.gridy * 2 + 1); +for (var i = 0; i < this.nrows; i++) g[i] = this.grid[i]; + +for (var i = g.length; --i >= this.nrows; ) g[i] = new Array(this.ncols * 2 + 1); + +this.grid = g; +this.nrows = c.gridy + 1; +}this.grid[c.gridy][c.gridx] = new JS.Cell(btn, c); +}, "JS.JComponent,JS.GridBagConstraints"); +Clazz.defineMethod(c$, "toHTML", +function(id){ +var sb = new JU.SB(); +id += "_grid"; +sb.append("\n"); +for (var i = 0; i < this.nrows; i++) { +var rowid = id + "_" + i; +sb.append("\n"); +for (var j = 0; j < this.ncols; j++) if (this.grid[i][j] != null) sb.append(this.grid[i][j].toHTML(rowid + "_" + j)); + +sb.append(""); +} +sb.append("\n
\n"); +return sb.toString(); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/GridBagConstraints.js b/config/plugins/visualizations/jmol/static/j2s/JS/GridBagConstraints.js new file mode 100755 index 000000000000..5b04735239c6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/GridBagConstraints.js @@ -0,0 +1,36 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.GridBagConstraints", ["JS.Insets"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.gridx = 0; +this.gridy = 0; +this.gridwidth = 0; +this.gridheight = 0; +this.weightx = 0; +this.weighty = 0; +this.anchor = 0; +this.fill = 0; +this.insets = null; +this.ipadx = 0; +this.ipady = 0; +Clazz.instantialize(this, arguments);}, JS, "GridBagConstraints", null); +Clazz.makeConstructor(c$, +function(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, insets, ipadx, ipady){ +this.gridx = gridx; +this.gridy = gridy; +this.gridwidth = gridwidth; +this.gridheight = gridheight; +this.weightx = weightx; +this.weighty = weighty; +this.anchor = anchor; +this.fill = fill; +if (insets == null) insets = new JS.Insets(0, 0, 0, 0); +this.insets = insets; +this.ipadx = ipadx; +this.ipady = ipady; +}, "~N,~N,~N,~N,~N,~N,~N,~N,JS.Insets,~N,~N"); +Clazz.defineMethod(c$, "getStyle", +function(margins){ +return "style='" + (margins ? "margin:" + this.insets.top + "px " + (this.ipady + this.insets.right) + "px " + this.insets.bottom + "px " + (this.ipadx + this.insets.left) + "px;" : "text-align:" + (this.anchor == 13 ? "right" : this.anchor == 17 ? "left" : "center")) + "'"; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/GridBagLayout.js b/config/plugins/visualizations/jmol/static/j2s/JS/GridBagLayout.js new file mode 100755 index 000000000000..e2972f61ffba --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/GridBagLayout.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.LayoutManager"], "JS.GridBagLayout", null, function(){ +var c$ = Clazz.declareType(JS, "GridBagLayout", JS.LayoutManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/HTMLElement.js b/config/plugins/visualizations/jmol/static/j2s/JS/HTMLElement.js new file mode 100755 index 000000000000..dfc03fa422cd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/HTMLElement.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "HTMLElement"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/HTMLWindowEvent.js b/config/plugins/visualizations/jmol/static/j2s/JS/HTMLWindowEvent.js new file mode 100755 index 000000000000..7cd7066e4fff --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/HTMLWindowEvent.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "HTMLWindowEvent"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/HallInfo.js b/config/plugins/visualizations/jmol/static/j2s/JS/HallInfo.js new file mode 100755 index 000000000000..78be68f13d2a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/HallInfo.js @@ -0,0 +1,111 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.HallInfo", ["JU.P3i", "$.SB", "JS.HallRotationTerm", "$.HallTranslation", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.hallSymbol = null; +this.primitiveHallSymbol = null; +this.latticeCode = '\0'; +this.latticeExtension = null; +this.isCentrosymmetric = false; +this.nRotations = 0; +this.rotationTerms = null; +this.vector12ths = null; +this.vectorCode = null; +Clazz.instantialize(this, arguments);}, JS, "HallInfo", null); +Clazz.prepareFields (c$, function(){ +this.rotationTerms = new Array(16); +}); +Clazz.makeConstructor(c$, +function(hallSymbol){ +try { +if (hallSymbol.startsWith("Hall:")) hallSymbol = hallSymbol.substring(5).trim(); +var str = this.hallSymbol = hallSymbol.trim(); +str = this.extractLatticeInfo(str); +if (JS.HallTranslation.getLatticeIndex(this.latticeCode) == 0) return; +this.latticeExtension = JS.HallTranslation.getLatticeExtension(this.latticeCode, this.isCentrosymmetric); +str = this.extractVectorInfo(str) + this.latticeExtension; +if (JU.Logger.debugging) JU.Logger.debug("Hallinfo: " + hallSymbol + " " + str); +var prevOrder = 0; +var prevAxisType = '\u0000'; +this.primitiveHallSymbol = "P"; +while (str.length > 0 && this.nRotations < 16) { +str = this.extractRotationInfo(str, prevOrder, prevAxisType); +var r = this.rotationTerms[this.nRotations - 1]; +prevOrder = r.order; +prevAxisType = r.axisType; +this.primitiveHallSymbol += " " + r.primitiveCode; +} +this.primitiveHallSymbol += this.vectorCode; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Invalid Hall symbol " + e); +this.nRotations = 0; +} else { +throw e; +} +} +}, "~S"); +Clazz.defineMethod(c$, "dumpInfo", +function(){ +var sb = new JU.SB(); +sb.append("\nHall symbol: ").append(this.hallSymbol).append("\nprimitive Hall symbol: ").append(this.primitiveHallSymbol).append("\nlattice type: ").append(this.getLatticeDesignation()); +for (var i = 0; i < this.nRotations; i++) { +sb.append("\n\nrotation term ").appendI(i + 1).append(this.rotationTerms[i].dumpInfo(this.vectorCode)); +} +return sb.toString(); +}); +Clazz.defineMethod(c$, "getLatticeDesignation", +function(){ +return JS.HallTranslation.getLatticeDesignation2(this.latticeCode, this.isCentrosymmetric); +}); +Clazz.defineMethod(c$, "extractLatticeInfo", +function(name){ +var i = name.indexOf(" "); +if (i < 0) return ""; +var term = name.substring(0, i).toUpperCase(); +this.latticeCode = term.charAt(0); +if (this.latticeCode == '-') { +this.isCentrosymmetric = true; +this.latticeCode = term.charAt(1); +}return name.substring(i + 1).trim(); +}, "~S"); +Clazz.defineMethod(c$, "extractVectorInfo", +function(name){ +this.vector12ths = new JU.P3i(); +this.vectorCode = ""; +var i = name.indexOf("("); +var j = name.indexOf(")", i); +if (i > 0 && j > i) { +var term = name.substring(i + 1, j); +this.vectorCode = " (" + term + ")"; +name = name.substring(0, i).trim(); +i = term.indexOf(" "); +if (i >= 0) { +this.vector12ths.x = Integer.parseInt(term.substring(0, i)); +term = term.substring(i + 1).trim(); +i = term.indexOf(" "); +if (i >= 0) { +this.vector12ths.y = Integer.parseInt(term.substring(0, i)); +term = term.substring(i + 1).trim(); +}}this.vector12ths.z = Integer.parseInt(term); +}return name; +}, "~S"); +Clazz.defineMethod(c$, "extractRotationInfo", +function(name, prevOrder, prevAxisType){ +var i = name.indexOf(" "); +var code; +if (i >= 0) { +code = name.substring(0, i); +name = name.substring(i + 1).trim(); +} else { +code = name; +name = ""; +}this.rotationTerms[this.nRotations] = new JS.HallRotationTerm(this, code, prevOrder, prevAxisType); +this.nRotations++; +return name; +}, "~S,~N,~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.hallSymbol; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/HallRotation.js b/config/plugins/visualizations/jmol/static/j2s/JS/HallRotation.js new file mode 100755 index 000000000000..d9257fb7fbf3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/HallRotation.js @@ -0,0 +1,51 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.M4"], "JS.HallRotation", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.rotCode = null; +this.seitzMatrix = null; +this.seitzMatrixInv = null; +Clazz.instantialize(this, arguments);}, JS, "HallRotation", null); +Clazz.prepareFields (c$, function(){ +this.seitzMatrix = new JU.M4(); +this.seitzMatrixInv = new JU.M4(); +}); +Clazz.makeConstructor(c$, +function(code, matrixData){ +this.rotCode = code; +var data = Clazz.newFloatArray (16, 0); +var dataInv = Clazz.newFloatArray (16, 0); +data[15] = dataInv[15] = 1; +for (var i = 0, ipt = 0; ipt < 11; i++) { +var value = 0; +switch ((matrixData.charAt(i)).charCodeAt(0)) { +case 32: +ipt++; +continue; +case 43: +case 49: +value = 1; +break; +case 45: +value = -1; +break; +} +data[ipt] = value; +dataInv[ipt] = -value; +ipt++; +} +this.seitzMatrix.setA(data); +this.seitzMatrixInv.setA(dataInv); +}, "~S,~S"); +c$.lookup = Clazz.defineMethod(c$, "lookup", +function(code){ +for (var i = JS.HallRotation.getHallTerms().length; --i >= 0; ) if (JS.HallRotation.hallRotationTerms[i].rotCode.equals(code)) return JS.HallRotation.hallRotationTerms[i]; + +return null; +}, "~S"); +c$.getHallTerms = Clazz.defineMethod(c$, "getHallTerms", +function(){ +return (JS.HallRotation.hallRotationTerms == null ? JS.HallRotation.hallRotationTerms = Clazz.newArray(-1, [ new JS.HallRotation("1_", "+00 0+0 00+"), new JS.HallRotation("2x", "+00 0-0 00-"), new JS.HallRotation("2y", "-00 0+0 00-"), new JS.HallRotation("2z", "-00 0-0 00+"), new JS.HallRotation("2'", "0-0 -00 00-"), new JS.HallRotation("2\"", "0+0 +00 00-"), new JS.HallRotation("2x'", "-00 00- 0-0"), new JS.HallRotation("2x\"", "-00 00+ 0+0"), new JS.HallRotation("2y'", "00- 0-0 -00"), new JS.HallRotation("2y\"", "00+ 0-0 +00"), new JS.HallRotation("2z'", "0-0 -00 00-"), new JS.HallRotation("2z\"", "0+0 +00 00-"), new JS.HallRotation("3x", "+00 00- 0+-"), new JS.HallRotation("3y", "-0+ 0+0 -00"), new JS.HallRotation("3z", "0-0 +-0 00+"), new JS.HallRotation("3*", "00+ +00 0+0"), new JS.HallRotation("4x", "+00 00- 0+0"), new JS.HallRotation("4y", "00+ 0+0 -00"), new JS.HallRotation("4z", "0-0 +00 00+"), new JS.HallRotation("6x", "+00 0+- 0+0"), new JS.HallRotation("6y", "00+ 0+0 -0+"), new JS.HallRotation("6z", "+-0 +00 00+")]) : JS.HallRotation.hallRotationTerms); +}); +c$.hallRotationTerms = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/HallRotationTerm.js b/config/plugins/visualizations/jmol/static/j2s/JS/HallRotationTerm.js new file mode 100755 index 000000000000..4c5f78ace88a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/HallRotationTerm.js @@ -0,0 +1,134 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.M4"], "JS.HallRotationTerm", ["JU.SB", "JS.HallRotation", "$.HallTranslation", "$.SymmetryOperation", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.inputCode = null; +this.primitiveCode = null; +this.lookupCode = null; +this.translationString = null; +this.rotation = null; +this.translation = null; +this.seitzMatrix12ths = null; +this.isImproper = false; +this.order = 0; +this.axisType = '\0'; +this.diagonalReferenceAxis = '\0'; +this.allPositive = true; +Clazz.instantialize(this, arguments);}, JS, "HallRotationTerm", null); +Clazz.prepareFields (c$, function(){ +this.seitzMatrix12ths = new JU.M4(); +}); +Clazz.makeConstructor(c$, +function(hallInfo, code, prevOrder, prevAxisType){ +this.inputCode = code; +code += " "; +if (code.charAt(0) == '-') { +this.isImproper = true; +code = code.substring(1); +}this.primitiveCode = ""; +this.order = (code.charAt(0)).charCodeAt(0) - 48; +this.diagonalReferenceAxis = '\0'; +this.axisType = '\0'; +var ptr = 2; +var c; +switch ((c = code.charAt(1)).charCodeAt(0)) { +case 120: +case 121: +case 122: +switch ((code.charAt(2)).charCodeAt(0)) { +case 39: +case 34: +this.diagonalReferenceAxis = c; +c = code.charAt(2); +ptr++; +} +case 42: +this.axisType = c; +break; +case 39: +case 34: +this.axisType = c; +switch ((code.charAt(2)).charCodeAt(0)) { +case 120: +case 121: +case 122: +this.diagonalReferenceAxis = code.charAt(2); +ptr++; +break; +default: +this.diagonalReferenceAxis = prevAxisType; +} +break; +default: +this.axisType = (this.order == 1 ? '_' : hallInfo.nRotations == 0 ? 'z' : hallInfo.nRotations == 2 ? '*' : prevOrder == 2 || prevOrder == 4 ? 'x' : '\''); +code = code.substring(0, 1) + this.axisType + code.substring(1); +} +this.primitiveCode += (this.axisType == '_' ? "1" : code.substring(0, 2)); +if (this.diagonalReferenceAxis != '\0') { +code = code.substring(0, 1) + this.diagonalReferenceAxis + this.axisType + code.substring(ptr); +this.primitiveCode += this.diagonalReferenceAxis; +ptr = 3; +}this.lookupCode = code.substring(0, ptr); +this.rotation = JS.HallRotation.lookup(this.lookupCode); +if (this.rotation == null) { +JU.Logger.error("Rotation lookup could not find " + this.inputCode + " ? " + this.lookupCode); +return; +}this.translation = new JS.HallTranslation('\0', null); +this.translationString = ""; +var len = code.length; +for (var i = ptr; i < len; i++) { +var translationCode = code.charAt(i); +var t = JS.HallTranslation.getHallTranslation(translationCode, this.order); +if (t != null) { +this.translationString += "" + t.translationCode; +this.translation.rotationShift12ths += t.rotationShift12ths; +this.translation.vectorShift12ths.add(t.vectorShift12ths); +}} +this.primitiveCode = (this.isImproper ? "-" : "") + this.primitiveCode + this.translationString; +this.seitzMatrix12ths.setM4(this.isImproper ? this.rotation.seitzMatrixInv : this.rotation.seitzMatrix); +this.seitzMatrix12ths.m03 = this.translation.vectorShift12ths.x; +this.seitzMatrix12ths.m13 = this.translation.vectorShift12ths.y; +this.seitzMatrix12ths.m23 = this.translation.vectorShift12ths.z; +switch ((this.axisType).charCodeAt(0)) { +case 120: +this.seitzMatrix12ths.m03 += this.translation.rotationShift12ths; +break; +case 121: +this.seitzMatrix12ths.m13 += this.translation.rotationShift12ths; +break; +case 122: +this.seitzMatrix12ths.m23 += this.translation.rotationShift12ths; +break; +} +if (hallInfo.vectorCode.length > 0) { +var m1 = JU.M4.newM4(null); +var m2 = JU.M4.newM4(null); +var v = hallInfo.vector12ths; +m1.m03 = v.x; +m1.m13 = v.y; +m1.m23 = v.z; +m2.m03 = -v.x; +m2.m13 = -v.y; +m2.m23 = -v.z; +this.seitzMatrix12ths.mul2(m1, this.seitzMatrix12ths); +this.seitzMatrix12ths.mul(m2); +}if (JU.Logger.debugging) { +JU.Logger.debug("code = " + code + "; primitive code =" + this.primitiveCode + "\n Seitz Matrix(12ths):" + this.seitzMatrix12ths); +}}, "JS.HallInfo,~S,~N,~S"); +Clazz.defineMethod(c$, "dumpInfo", +function(vectorCode){ +var sb = new JU.SB(); +sb.append("\ninput code: ").append(this.inputCode).append("; primitive code: ").append(this.primitiveCode).append("\norder: ").appendI(this.order).append(this.isImproper ? " (improper axis)" : ""); +if (this.axisType != '_') { +sb.append("; axisType: ").appendC(this.axisType); +if (this.diagonalReferenceAxis != '\0') sb.appendC(this.diagonalReferenceAxis); +}if (this.translationString.length > 0) sb.append("; translation: ").append(this.translationString); +if (vectorCode.length > 0) sb.append("; vector offset: ").append(vectorCode); +if (this.rotation != null) sb.append("\noperator: ").append(this.getXYZ(this.allPositive)).append("\nSeitz matrix:\n").append(JS.SymmetryOperation.dumpSeitz(this.seitzMatrix12ths, false)); +return sb.toString(); +}, "~S"); +Clazz.defineMethod(c$, "getXYZ", +function(allPositive){ +return JS.SymmetryOperation.getXYZFromMatrix(this.seitzMatrix12ths, true, allPositive, true); +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/HallTranslation.js b/config/plugins/visualizations/jmol/static/j2s/JS/HallTranslation.js new file mode 100755 index 000000000000..c33a213dee24 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/HallTranslation.js @@ -0,0 +1,80 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.HallTranslation", ["JU.P3i"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.translationCode = '\0'; +this.rotationOrder = 0; +this.rotationShift12ths = 0; +this.vectorShift12ths = null; +Clazz.instantialize(this, arguments);}, JS, "HallTranslation", null); +Clazz.makeConstructor(c$, +function(translationCode, params){ +this.translationCode = translationCode; +if (params != null) { +if (params.z >= 0) { +this.vectorShift12ths = params; +return; +}this.rotationOrder = params.x; +this.rotationShift12ths = params.y; +}this.vectorShift12ths = new JU.P3i(); +}, "~S,JU.P3i"); +c$.getHallLatticeEquivalent = Clazz.defineMethod(c$, "getHallLatticeEquivalent", +function(latticeParameter){ +var latticeCode = JS.HallTranslation.getLatticeCode(latticeParameter); +var isCentrosymmetric = (latticeParameter > 0); +return (isCentrosymmetric ? "-" : "") + latticeCode + " 1"; +}, "~N"); +c$.getLatticeIndex = Clazz.defineMethod(c$, "getLatticeIndex", +function(latt){ +for (var i = 1, ipt = 3; i <= JS.HallTranslation.nLatticeTypes; i++, ipt += 3) if (JS.HallTranslation.latticeTranslationData[ipt].charAt(0) == latt) return i; + +return 0; +}, "~S"); +c$.getLatticeCode = Clazz.defineMethod(c$, "getLatticeCode", +function(latt){ +if (latt < 0) latt = -latt; +return (latt == 0 ? '\0' : latt > JS.HallTranslation.nLatticeTypes ? JS.HallTranslation.getLatticeCode(JS.HallTranslation.getLatticeIndex(String.fromCharCode(latt))) : JS.HallTranslation.latticeTranslationData[latt * 3].charAt(0)); +}, "~N"); +c$.getLatticeDesignation = Clazz.defineMethod(c$, "getLatticeDesignation", +function(latt){ +var isCentrosymmetric = (latt > 0); +var str = (isCentrosymmetric ? "-" : ""); +if (latt < 0) latt = -latt; +if (latt == 0 || latt > JS.HallTranslation.nLatticeTypes) return ""; +return str + JS.HallTranslation.getLatticeCode(latt) + ": " + (isCentrosymmetric ? "centrosymmetric " : "") + JS.HallTranslation.latticeTranslationData[latt * 3 + 1]; +}, "~N"); +c$.getLatticeDesignation2 = Clazz.defineMethod(c$, "getLatticeDesignation2", +function(latticeCode, isCentrosymmetric){ +var latt = JS.HallTranslation.getLatticeIndex(latticeCode); +if (!isCentrosymmetric) latt = -latt; +return JS.HallTranslation.getLatticeDesignation(latt); +}, "~S,~B"); +c$.getLatticeExtension = Clazz.defineMethod(c$, "getLatticeExtension", +function(latt, isCentrosymmetric){ +for (var i = 1, ipt = 3; i <= JS.HallTranslation.nLatticeTypes; i++, ipt += 3) if (JS.HallTranslation.latticeTranslationData[ipt].charAt(0) == latt) return JS.HallTranslation.latticeTranslationData[ipt + 2] + (isCentrosymmetric ? " -1" : ""); + +return ""; +}, "~S,~B"); +c$.getHallTerms = Clazz.defineMethod(c$, "getHallTerms", +function(){ +return (JS.HallTranslation.hallTranslationTerms == null ? JS.HallTranslation.hallTranslationTerms = Clazz.newArray(-1, [ new JS.HallTranslation('a', JU.P3i.new3(6, 0, 0)), new JS.HallTranslation('b', JU.P3i.new3(0, 6, 0)), new JS.HallTranslation('c', JU.P3i.new3(0, 0, 6)), new JS.HallTranslation('n', JU.P3i.new3(6, 6, 6)), new JS.HallTranslation('u', JU.P3i.new3(3, 0, 0)), new JS.HallTranslation('v', JU.P3i.new3(0, 3, 0)), new JS.HallTranslation('w', JU.P3i.new3(0, 0, 3)), new JS.HallTranslation('d', JU.P3i.new3(3, 3, 3)), new JS.HallTranslation('1', JU.P3i.new3(2, 6, -1)), new JS.HallTranslation('1', JU.P3i.new3(3, 4, -1)), new JS.HallTranslation('2', JU.P3i.new3(3, 8, -1)), new JS.HallTranslation('1', JU.P3i.new3(4, 3, -1)), new JS.HallTranslation('3', JU.P3i.new3(4, 9, -1)), new JS.HallTranslation('1', JU.P3i.new3(6, 2, -1)), new JS.HallTranslation('2', JU.P3i.new3(6, 4, -1)), new JS.HallTranslation('4', JU.P3i.new3(6, 8, -1)), new JS.HallTranslation('5', JU.P3i.new3(6, 10, -1)), new JS.HallTranslation('r', JU.P3i.new3(4, 8, 8)), new JS.HallTranslation('s', JU.P3i.new3(8, 8, 4)), new JS.HallTranslation('t', JU.P3i.new3(8, 4, 8))]) : JS.HallTranslation.hallTranslationTerms); +}); +c$.getHallTranslation = Clazz.defineMethod(c$, "getHallTranslation", +function(translationCode, order){ +var ht = null; +for (var i = JS.HallTranslation.getHallTerms().length; --i >= 0; ) { +var h = JS.HallTranslation.hallTranslationTerms[i]; +if (h.translationCode == translationCode) { +if (h.rotationOrder == 0 || h.rotationOrder == order) { +ht = new JS.HallTranslation(translationCode, null); +ht.translationCode = translationCode; +ht.rotationShift12ths = h.rotationShift12ths; +ht.vectorShift12ths = h.vectorShift12ths; +return ht; +}}} +return ht; +}, "~S,~N"); +c$.latticeTranslationData = Clazz.newArray(-1, ["\0", "unknown", "", "P", "primitive", "", "I", "body-centered", " 1n", "R", "rhombohedral", " 1r 1r", "F", "face-centered", " 1ab 1bc 1ac", "A", "A-centered", " 1bc", "B", "B-centered", " 1ac", "C", "C-centered", " 1ab", "S", "rhombohedral(S)", " 1s 1s", "T", "rhombohedral(T)", " 1t 1t"]); +c$.nLatticeTypes = Clazz.doubleToInt(JS.HallTranslation.latticeTranslationData.length / 3) - 1; +c$.hallTranslationTerms = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Insets.js b/config/plugins/visualizations/jmol/static/j2s/JS/Insets.js new file mode 100755 index 000000000000..45a18fa6b7a0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Insets.js @@ -0,0 +1,17 @@ +Clazz.declarePackage("JS"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.top = 0; +this.left = 0; +this.bottom = 0; +this.right = 0; +Clazz.instantialize(this, arguments);}, JS, "Insets", null); +Clazz.makeConstructor(c$, +function(top, left, bottom, right){ +this.top = top; +this.left = left; +this.bottom = bottom; +this.right = right; +}, "~N,~N,~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/InvalidSmilesException.js b/config/plugins/visualizations/jmol/static/j2s/JS/InvalidSmilesException.js new file mode 100755 index 000000000000..f7879f7f53de --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/InvalidSmilesException.js @@ -0,0 +1,23 @@ +Clazz.declarePackage("JS"); +Clazz.load(["java.lang.Exception"], "JS.InvalidSmilesException", null, function(){ +var c$ = Clazz.declareType(JS, "InvalidSmilesException", Exception); +Clazz.makeConstructor(c$, +function(message){ +Clazz.superConstructor(this, JS.InvalidSmilesException, [message]); +JS.InvalidSmilesException.lastError = (message.startsWith("Jmol SMILES") ? message : "Jmol SMILES Exception: " + message); +}, "~S"); +c$.getLastError = Clazz.defineMethod(c$, "getLastError", +function(){ +return JS.InvalidSmilesException.lastError; +}); +c$.clear = Clazz.defineMethod(c$, "clear", +function(){ +JS.InvalidSmilesException.lastError = null; +}); +Clazz.overrideMethod(c$, "getMessage", +function(){ +return JS.InvalidSmilesException.lastError; +}); +c$.lastError = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/IsoExt.js b/config/plugins/visualizations/jmol/static/j2s/JS/IsoExt.js new file mode 100755 index 000000000000..108430f04280 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/IsoExt.js @@ -0,0 +1,3337 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.ScriptExt"], "JS.IsoExt", ["JU.AU", "$.BS", "$.Lst", "$.M4", "$.Measure", "$.P3", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.c.VDW", "JS.SV", "$.ScriptEval", "$.ScriptInterruption", "$.T", "JU.BSUtil", "$.BoxInfo", "$.C", "$.Escape", "$.Logger", "$.Parser", "$.TempArray", "$.Triangulator", "JV.JC"], function(){ +var c$ = Clazz.declareType(JS, "IsoExt", JS.ScriptExt); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.IsoExt, []); +}); +Clazz.overrideMethod(c$, "dispatch", +function(iTok, b, st){ +this.chk = this.e.chk; +this.slen = this.e.slen; +this.st = st; +switch (iTok) { +case 23: +this.cgo(); +break; +case 25: +this.contact(); +break; +case 17: +this.dipole(); +break; +case 22: +this.draw(); +break; +case 24: +case 30: +case 29: +this.isosurface(iTok); +break; +case 26: +this.lcaoCartoon(); +break; +case 27: +case 28: +this.mo(b, iTok); +break; +} +return null; +}, "~N,~B,~A"); +Clazz.defineMethod(c$, "dipole", +function(){ +var eval = this.e; +var propertyName = null; +var propertyValue = null; +var iHaveAtoms = false; +var iHaveCoord = false; +var idSeen = false; +var getCharges = false; +var bsSelected = null; +eval.sm.loadShape(17); +if (this.tokAt(1) == 1073742001 && this.listIsosurface(17)) return; +this.setShapeProperty(17, "init", null); +if (this.slen == 1) { +this.setShapeProperty(17, "thisID", null); +return; +}for (var i = 1; i < this.slen; ++i) { +propertyName = null; +propertyValue = null; +switch (this.getToken(i).tok) { +case 1073742327: +propertyName = "all"; +getCharges = true; +break; +case 1073742335: +propertyName = "on"; +break; +case 1073742334: +propertyName = "off"; +break; +case 12291: +propertyName = "delete"; +break; +case 2: +case 3: +propertyName = "value"; +propertyValue = Float.$valueOf(this.floatParameter(i)); +break; +case 10: +if (this.tokAt(i + 1) == 10) { +this.setShapeProperty(17, "startSet", this.atomExpressionAt(i++)); +} else { +propertyName = "atomBitset"; +}case 1073742325: +if (propertyName == null) propertyName = (iHaveAtoms || iHaveCoord ? "endSet" : "startSet"); +propertyValue = bsSelected = this.atomExpressionAt(i); +i = eval.iToken; +if (this.tokAt(i + 1) == 0 && propertyName === "startSet") propertyName = "atomBitset"; +iHaveAtoms = true; +getCharges = true; +break; +case 1073742332: +case 8: +var pt = this.getPoint3f(i, true); +i = eval.iToken; +propertyName = (iHaveAtoms || iHaveCoord ? "endCoord" : "startCoord"); +propertyValue = pt; +iHaveCoord = true; +break; +case 1677721602: +propertyName = "bonds"; +getCharges = true; +break; +case 4102: +getCharges = true; +propertyName = "calculate"; +if (eval.isAtomExpression(i + 1)) { +propertyValue = bsSelected = this.atomExpressionAt(++i); +i = eval.iToken; +}break; +case 1073741974: +this.setShapeId(17, ++i, idSeen); +i = eval.iToken; +break; +case 1275069442: +propertyName = "cross"; +propertyValue = Boolean.TRUE; +break; +case 1073742040: +propertyName = "cross"; +propertyValue = Boolean.FALSE; +break; +case 1073742066: +if (this.isFloatParameter(i + 1)) { +var v = this.floatParameter(++i); +if (eval.theTok == 2) { +propertyName = "offsetPercent"; +propertyValue = Integer.$valueOf(Clazz.floatToInt(v)); +} else { +propertyName = "offset"; +propertyValue = Float.$valueOf(v); +}} else { +propertyName = "offsetPt"; +propertyValue = this.centerParameter(++i); +i = eval.iToken; +}break; +case 1073742068: +propertyName = "offsetSide"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1073742188: +propertyName = "value"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1073742196: +propertyName = "width"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +default: +if (eval.theTok == 268441089 || JS.T.tokAttr(eval.theTok, 1073741824)) { +this.setShapeId(17, i, idSeen); +i = eval.iToken; +break; +}this.invArg(); +} +idSeen = (eval.theTok != 12291 && eval.theTok != 4102); +if (getCharges) { +if (!this.chk) eval.getPartialCharges(bsSelected); +getCharges = false; +}if (propertyName != null) this.setShapeProperty(17, propertyName, propertyValue); +} +if (iHaveCoord || iHaveAtoms) this.setShapeProperty(17, "set", null); +}); +Clazz.defineMethod(c$, "draw", +function(){ +var eval = this.e; +eval.sm.loadShape(22); +switch (this.tokAt(1)) { +case 1073742001: +if (this.listIsosurface(22)) return; +break; +case 136314895: +case 134221850: +case 4138: +this.e.getCmdExt().dispatch(4133, false, this.st); +return; +} +var havePoints = false; +var isInitialized = false; +var isSavedState = false; +var isIntersect = false; +var isFrame = false; +var plane; +var pts = null; +var tokIntersectBox = 0; +var translucentLevel = 3.4028235E38; +var colorArgb = Clazz.newIntArray(-1, [-2147483648]); +var intScale = 0; +var swidth = ""; +var iptDisplayProperty = 0; +var center = null; +var thisId = this.initIsosurface(22); +var idSeen = (thisId != null); +var isWild = (idSeen && this.getShapeProperty(22, "ID") == null); +var connections = null; +var iConnect = 0; +var iArray = -1; +var iOn = -1; +var isBest = false; +var meshNoFill = false; +var tok = 0; +var lattice = null; +for (var i = eval.iToken; i < this.slen; ++i) { +var propertyName = null; +var propertyValue = null; +tok = this.getToken(i).tok; +switch (tok) { +case 134217763: +switch (tok = this.getToken(i + (this.tokAt(i + 1) == 1073741864 ? 2 : 1)).tok) { +case 1814695966: +case 1812599299: +tokIntersectBox = tok; +isIntersect = true; +continue; +case 1073742330: +++i; +propertyName = "intersect"; +propertyValue = eval.objectNameParameter(++i); +isIntersect = true; +havePoints = true; +break; +default: +this.invArg(); +} +break; +case 1073741864: +isBest = true; +if (iOn == i - 1) iOn++; +switch (this.tokAt(i + 1)) { +case 134217750: +case 1073741998: +case 1812599299: +continue; +default: +this.invArg(); +} +break; +case 1611272194: +if (!this.chk) this.vwr.getModelkit(false).drawAxes(thisId, swidth); +return; +case 1073741994: +case 1814695966: +case 1812599299: +lattice = null; +var uc = null; +var ucLattice = null; +var bs = null; +switch (tok) { +case 1812599299: +switch (this.tokAt(i + 1)) { +case 1073741864: +switch (this.tokAt(i + 2)) { +case 134217750: +case 1073741998: +break; +case 1073742330: +var data = Clazz.newArray(-1, [eval.objectNameParameter(i + 3), null]); +if (this.chk) return; +this.vwr.shm.getShapePropertyData(24, "points", data); +pts = data[1]; +if (pts == null) this.invArg(); +i += 2; +default: +isBest = true; +i++; +} +break; +case 10: +case 1073742325: +bs = eval.getAtomsStartingAt(i + 1); +i = eval.iToken; +} +break; +case 1814695966: +if (isBest) this.invArg(); +if (eval.isArrayParameter(i + 1)) { +uc = this.vwr.getSymTemp().getUnitCell(eval.getPointArray(i + 1, -1, false), false, null); +i = eval.iToken; +} else { +switch (this.tokAt(i + 1)) { +case 4: +var tr = this.stringParameter(i + 1); +if (tr.length > 0 && (uc = this.vwr.getCurrentUnitCell()) != null) { +uc = this.vwr.getSymTemp().getUnitCell(uc.getV0abc(tr, null), false, "draw"); +}i = eval.iToken; +break; +case 8: +case 1073742332: +ucLattice = eval.getFractionalPoint(i + 1); +i = eval.iToken; +break; +} +}if (this.tokAt(i + 1) == 1073741994) { +if (tokIntersectBox == 1814695966) tokIntersectBox = 1073741994; +++i; +lattice = eval.checkHKL(eval.getPointOrPlane(++i, 3)); +i = eval.iToken; +}if (this.tokAt(i + 1) == 1611272194) { +if (ucLattice == null) ucLattice = JU.P3.new3(555, 555, 1); +i++; +}break; +} +if (this.chk) break; +if (bs != null) { +if (isBest) { +uc = this.vwr.getSymTemp().getUnitCell(this.vwr.getOrientation(1814695966, "array", bs, null), false, null); +}} else if (isBest) { +uc = this.vwr.getSymTemp().getUnitCell(this.vwr.getOrientation(1814695966, "array", null, pts), false, null); +} else if (tok == 1814695966 && uc == null) { +if (ucLattice != null) { +this.vwr.getModelkit(false).drawUnitCell(thisId, ucLattice, swidth); +return; +}uc = this.vwr.getCurrentUnitCell(); +}if (lattice == null) { +pts = this.getBoxPoints(uc != null ? 1814695966 : tok, uc, bs, intScale / 100); +} else { +var cpts = JU.Measure.getLatticePoints(uc.getLatticeCentering(), Clazz.floatToInt(lattice.x), Clazz.floatToInt(lattice.y), Clazz.floatToInt(lattice.z)); +pts = new Array(cpts.size()); +for (var j = 0; j < cpts.size(); j++) { +pts[j] = cpts.get(j); +uc.toCartesian(pts[j], true); +} +}isBest = false; +if (!isIntersect) { +if (pts == null) this.invArg(); +propertyName = "polygon"; +var v = new JU.Lst(); +v.addLast(pts); +if (lattice == null) { +this.vwr.getTriangulator(); +v.addLast(JU.Triangulator.fullCubePolygon); +} else { +v.addLast(null); +}propertyValue = v; +havePoints = true; +intScale = 0; +meshNoFill = true; +break; +}if (this.tokAt(i + 1) == 1073742335) { +iOn = ++i; +}break; +case 1073741998: +case 134219777: +case 134217750: +var isProjection = (iOn == i - 1); +if (!havePoints && !isIntersect && tokIntersectBox == 0) { +if (eval.theTok == 134219777) { +havePoints = true; +this.setShapeProperty(22, "plane", null); +var list = new JU.Lst(); +plane = eval.hklParameter(++i, list, true); +i = eval.iToken; +propertyName = "coords"; +propertyValue = list; +break; +}if (!isBest) { +propertyName = (tok == 134217750 ? "plane" : "line"); +iArray = i + 1; +break; +}if (!this.chk && tok != 1073741998 && pts == null) { +uc = this.vwr.getCurrentUnitCell(); +tokIntersectBox = (uc == null ? 1812599299 : 1814695966); +pts = this.getBoxPoints(tokIntersectBox, uc, null, intScale / 100); +isIntersect = true; +}}plane = null; +var linePts = null; +var isAll = false; +switch (tok) { +case 134217750: +plane = eval.planeParameter(i, isBest); +break; +case 134219777: +plane = eval.hklParameter(++i, null, true); +if (this.tokAt(eval.iToken + 1) == 1073742327) { +isAll = true; +eval.iToken++; +}break; +case 1073741998: +if (tokIntersectBox == 1073741994) this.invArg(); +if (isBest) { +linePts = this.bsToArray(eval.getAtomsStartingAt(++i)); +} else if (eval.isCenterParameter(i + 1)) { +linePts = Clazz.newArray(-1, [this.centerParameter(++i), this.centerParameter(eval.iToken + 1)]); +} else { +linePts = eval.getPointArray(++i, 2, false); +}if (linePts.length < 2) this.invArg(); +break; +} +i = eval.iToken; +havePoints = true; +if (this.chk) break; +if (tok == 1073741998) { +linePts = JU.Measure.getBestLineThroughPoints(linePts, -1); +if (tokIntersectBox != 0) { +var v = JU.V3.newVsub(linePts[1], linePts[0]); +v.scale(1 / v.length()); +linePts = (isProjection ? JU.Measure.getProjectedLineSegment(pts, -1, linePts[0], v, null) : this.vwr.getTriangulator().intersectLine(pts, -1, linePts[0], v)); +if (linePts == null || linePts[1] == null) return; +}if (!isInitialized) { +this.setShapeProperty(22, "points", Integer.$valueOf(intScale)); +isInitialized = true; +}var l = new JU.Lst(); +l.addLast(linePts[0]); +l.addLast(linePts[1]); +this.setShapeProperty(22, "coords", l); +break; +}if (tokIntersectBox == 0) { +propertyValue = plane; +propertyName = "planedef"; +} else if (tokIntersectBox == 1073741994) { +propertyName = "polygon"; +var cpts = JU.Measure.getPointsOnPlane(pts, plane); +pts = cpts.toArray( new Array(cpts.size())); +var v = new JU.Lst(); +v.addLast(pts); +v.addLast(null); +propertyValue = v; +intScale = 0; +} else { +if (isAll && tokIntersectBox == 1814695966) { +(J.api.Interface.getInterface("JU.BZone", this.vwr, "script")).drawHKL(this.vwr, thisId, plane, pts); +}propertyName = "polygon"; +propertyValue = this.vwr.getTriangulator().intersectPlane(plane, pts, isProjection ? -1 : 0); +intScale = 0; +}break; +case 1275068447: +pts = (eval.isArrayParameter(++i) ? eval.getPointArray(i, -1, false) : null); +if (pts == null && eval.isAtomExpression(i)) { +bs = eval.atomExpressionAt(i); +pts = this.vwr.ms.getAtomPointVector(bs).toArray( new Array(bs.cardinality())); +}if (pts != null) { +i = eval.iToken + 1; +if (this.tokAt(i) == 12289) { +center = eval.centerParameter(++i, null); +i = eval.iToken + 1; +}}var type; +switch (this.tokAt(i)) { +case 536875059: +type = ""; +break; +case 1111490563: +type = "Cs"; +break; +case 1073742330: +var data = Clazz.newArray(-1, [eval.objectNameParameter(++i), null]); +if (this.chk) return; +this.vwr.shm.getShapePropertyData(21, "points", data); +pts = data[1]; +if (pts == null) this.invArg(); +type = ""; +break; +case 1275203608: +type = ":poly"; +break; +case 134217764: +if (center == null) center = new JU.P3(); +var crpts = this.vwr.ms.generateCrystalClass(this.vwr.bsA().nextSetBit(0), JU.P3.new3(NaN, NaN, NaN)); +if (pts != null) this.invArg(); +pts = new Array(crpts.size()); +for (var j = crpts.size(); --j >= 0; ) pts[j] = crpts.get(j); + +i++; +type = ""; +break; +default: +type = eval.optParameterAsString(i); +break; +} +var scale = (intScale == 0 ? 1 : intScale / 100); +var index = 0; +if (type.length > 0) { +if (this.isFloatParameter(++i)) index = this.intParameter(i++); +}if (this.tokAt(i) == 536875059) scale = this.floatParameter(++i); +if (!this.chk) eval.runScript(this.vwr.ms.getPointGroupAsString(this.vwr.bsA(), type, index, scale, pts, center, thisId == null ? "" : thisId)); +return; +case 4106: +connections = Clazz.newIntArray (4, 0); +iConnect = 4; +var farray = eval.floatParameterSet(++i, 4, 4); +i = eval.iToken; +for (var j = 0; j < 4; j++) connections[j] = Clazz.floatToInt(farray[j]); + +havePoints = true; +break; +case 1677721602: +case 1153433601: +if (connections == null || iConnect > (eval.theTok == 1228931586 ? 2 : 3)) { +iConnect = 0; +connections = Clazz.newIntArray(-1, [-1, -1, -1, -1]); +}connections[iConnect++] = this.atomExpressionAt(++i).nextSetBit(0); +i = eval.iToken; +connections[iConnect++] = (eval.theTok == 1677721602 ? this.atomExpressionAt(++i).nextSetBit(0) : -1); +i = eval.iToken; +havePoints = true; +break; +case 554176565: +switch (this.getToken(++i).tok) { +case 1073742330: +propertyName = "slab"; +propertyValue = eval.objectNameParameter(++i); +i = eval.iToken; +havePoints = true; +break; +default: +this.invArg(); +} +break; +case 1275203608: +case 134217751: +case 1073742106: +var isPoints = (tok == 134217751); +propertyName = "polygon"; +havePoints = true; +var v = new JU.Lst(); +var nVertices = 0; +var nTriangles = 0; +var points = null; +var vpolygons = null; +var polygons = null; +if (eval.isArrayParameter(++i)) { +points = eval.getPointArray(i, -1, true); +if (points.length > 0 && points[0] == null) { +var faces; +if (tok == 1275203608) { +faces = this.getIntArray2(i); +} else { +faces = JU.AU.newInt2(1); +faces[0] = eval.expandFloatArray(eval.floatParameterSet(i, -1, 2147483647), -1, false); +}points = this.getAllPoints(this.e.iToken + 1, 3); +try { +polygons = (J.api.Interface.getInterface("JU.MeshCapper", this.vwr, "script")).set(null).triangulateFaces(faces, points, null); +} catch (e) { +this.invArg(); +} +}nVertices = points.length; +}if (tok == 1275203608) { +nVertices = points.length; +}if (points == null) { +nVertices = Math.max(0, this.intParameter(i)); +points = new Array(nVertices); +for (var j = 0; j < nVertices; j++) points[j] = this.centerParameter(++eval.iToken); + +}i = eval.iToken; +switch (this.tokAt(i + 1)) { +case 11: +case 12: +vpolygons = JS.SV.newT(this.getToken(++i)).toArray().getList(); +nTriangles = vpolygons.size(); +break; +case 7: +vpolygons = (this.getToken(++i)).getList(); +nTriangles = vpolygons.size(); +break; +case 2: +nTriangles = this.intParameter(++i); +if (nTriangles < 0) isPoints = true; +break; +default: +if (polygons == null && !isPoints && !this.chk) polygons = (J.api.Interface.getInterface("JU.MeshCapper", this.vwr, "script")).set(null).triangulatePolygon(points, -1); +break; +} +if (polygons == null && !isPoints) { +polygons = JU.AU.newInt2(nTriangles); +for (var j = 0; j < nTriangles; j++) { +var f = (vpolygons == null ? eval.floatParameterSet(++eval.iToken, 3, 4) : JS.SV.flistValue(vpolygons.get(j), 0)); +if (f.length < 3 || f.length > 4) this.invArg(); +polygons[j] = Clazz.newIntArray(-1, [Clazz.floatToInt(f[0]), Clazz.floatToInt(f[1]), Clazz.floatToInt(f[2]), (f.length == 3 ? 7 : Clazz.floatToInt(f[3]))]); +} +}if (nVertices > 0) { +v.addLast(points); +v.addLast(polygons); +} else { +v = null; +}propertyValue = v; +i = eval.iToken; +break; +case 134217764: +case 1296041985: +var xyz = null; +var iSym = 2147483647; +plane = null; +var target = null; +var bsAtoms = null; +var options = 0; +var trans = null; +var opList = null; +var isSymop = (tok == 1296041985); +var nth = -1; +var ret = Clazz.newArray(-1, [null, this.vwr.getFrameAtoms()]); +if (isSymop) { +iSym = 0; +switch (this.tokAt(++i)) { +case 4: +xyz = this.stringParameter(i); +break; +case 12: +xyz = this.vwr.getSymStatic().convertTransform("xyz", this.getToken(i).value); +break; +case 2: +default: +if (!eval.isCenterParameter(i)) { +if (eval.isArrayParameter(i)) { +var params = eval.floatParameterSet(i, 1, 2147483647); +opList = Clazz.newIntArray (params.length, 0); +for (var j = opList.length; --j >= 0; ) opList[j] = Clazz.floatToInt(params[j]); + +i = eval.iToken + 1; +} else { +iSym = this.intParameter(i++); +if (eval.isArrayParameter(i)) { +trans = JU.P3.newA(eval.floatParameterSet(i, 3, 3)); +i = eval.iToken + 1; +}}}if (eval.isCenterParameter(i)) center = eval.centerParameter(i, ret); +if (opList == null && eval.isCenterParameter(eval.iToken + 1)) target = eval.centerParameter(++eval.iToken, ret); +if (this.chk) return; +i = eval.iToken; +if (center == null && i + 1 < this.slen) { +center = this.centerParameter(++i); +bsAtoms = (eval.isAtomExpression(i) ? this.atomExpressionAt(i) : null); +i = eval.iToken; +}nth = ((!isSymop || target != null) && this.tokAt(i + 1) == 2 ? eval.getToken(++i).intValue : -1); +if (nth < -1) this.invArg(); +if (this.tokAt(i + 1) == 1814695966) { +target = new JU.P3(); +options = 1073742066; +eval.iToken = ++i; +} else if (this.tokAt(i + 1) == 1073742066) { +i++; +target = this.getPoint3f(i + 1, false); +options = 1073742066; +i = eval.iToken; +}break; +} +} else if (this.tokAt(i + 1) == 1073742327) { +nth = -2; +eval.iToken = ++i; +}if (xyz != null) { +i++; +if (eval.isCenterParameter(i)) { +center = eval.centerParameter(i, ret); +i = eval.iToken; +}}eval.checkLast(eval.iToken); +if (this.chk) return; +var s = ""; +var iatom = (bsAtoms != null ? bsAtoms.nextSetBit(0) : -1); +if (bsAtoms == null && this.vwr.am.cmi >= 0) bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi); +if (bsAtoms != null) { +s = this.vwr.getModelkit(false).drawSymmetry(thisId, isSymop, iatom, xyz, iSym, trans, center, target, intScale, nth, options, opList, false); +if (s == null) return; +if (isSymop && Clazz.instanceOf(target,"JM.Atom") && Clazz.instanceOf(center,"JM.Atom")) { +if (eval.fullCommand.indexOf("#quiet") >= 0) s = JU.PT.rep(s, "print", "#print"); +s += "\nmodelkit set atomset " + JU.PT.esc(thisId + "|" + (center).i + "|" + (target).i + "|" + eval.fullCommand) + ";"; +}}eval.runBufferedSafely(s.length > 0 ? s : "draw ID \"" + thisId + "*\" delete", eval.outputBuffer); +return; +case 4115: +isFrame = true; +continue; +case 1073742332: +case 9: +case 8: +if (eval.theTok == 9 || !eval.isPoint3f(i)) { +propertyValue = eval.getPoint4f(i); +if (isFrame) { +eval.checkLast(eval.iToken); +if (!this.chk) eval.runScript(JU.Escape.drawQuat(JU.Quat.newP4(propertyValue), (thisId == null ? "frame" : thisId), " " + swidth, (center == null ? new JU.P3() : center), intScale / 100)); +return; +}propertyName = "planedef"; +} else { +propertyValue = center = this.getPoint3f(i, true); +propertyName = "coord"; +}i = eval.iToken; +havePoints = true; +break; +case 1073742000: +propertyName = "lineData"; +propertyValue = eval.floatParameterSet(++i, 0, 2147483647); +i = eval.iToken; +havePoints = true; +break; +case 12290: +case 10: +case 1073742325: +propertyName = "atomSet"; +propertyValue = this.atomExpressionAt(i); +if (isFrame) center = this.centerParameter(i); +i = eval.iToken; +havePoints = true; +break; +case 7: +havePoints = true; +propertyName = (iArray == i ? "coords" : "modelBasedPoints"); +propertyValue = eval.theToken.value; +break; +case 1073742195: +case 268436992: +break; +case 268437504: +propertyValue = eval.xypParameter(i); +if (propertyValue != null) { +i = eval.iToken; +propertyName = "coord"; +havePoints = true; +break; +}if (isSavedState) this.invArg(); +isSavedState = true; +break; +case 268437505: +if (!isSavedState) this.invArg(); +isSavedState = false; +break; +case 1140850693: +propertyName = "reverse"; +break; +case 1073742166: +if (this.tokAt(++i) == 1765808134) { +propertyValue = Integer.$valueOf(this.e.getArgbParamOrNone(++i, false)); +propertyName = "titlecolor"; +i = this.e.iToken; +break; +}if (this.tokAt(i) == 4114) { +--i; +continue; +}case 4: +propertyValue = this.stringParameter(i); +propertyName = "title"; +break; +case 545259562: +propertyValue = this.stringParameter(++i); +propertyName = "hoverlabel"; +break; +case 4114: +var fontSize = this.floatParameter(++i); +var fontFace = (this.tokAt(i + 1) == 1073741824 ? this.paramAsStr(++i) : null); +var fontStyle = (this.tokAt(i + 1) == 1073741824 ? this.paramAsStr(++i) : null); +if (this.tokAt(i + 1) != 4 && ++i != this.slen || fontSize <= 0 || fontSize > 0xFF) this.invArg(); +propertyName = "myfont"; +if (fontFace == null || fontStyle == null) { +var f = this.vwr.shm.getShapePropertyIndex(22, "font", -1); +if (fontFace == null) fontFace = f.fontFace; +if (fontStyle == null) fontStyle = f.fontStyle; +}propertyValue = this.vwr.getFont3D(fontFace, fontStyle, fontSize); +break; +case 135198: +propertyName = "vector"; +break; +case 1140850691: +propertyValue = Float.$valueOf(this.floatParameter(++i)); +propertyName = "length"; +break; +case 3: +propertyValue = Float.$valueOf(this.floatParameter(i)); +propertyName = "length"; +break; +case 1094713359: +propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +break; +case 2: +if (isSavedState) { +propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(this.intParameter(i)); +} else { +intScale = this.intParameter(i); +}break; +case 536875059: +intScale = Math.round(this.floatParameter(++i) * (this.getToken(i).tok == 2 ? 1 : 100)); +continue; +case 1073741974: +thisId = this.setShapeId(22, ++i, idSeen); +isWild = (this.getShapeProperty(22, "ID") == null); +i = eval.iToken; +break; +case 1073742027: +propertyName = "fixed"; +propertyValue = Boolean.FALSE; +break; +case 12293: +propertyName = "fixed"; +propertyValue = Boolean.TRUE; +break; +case 1073742066: +var pt = this.getPoint3f(++i, true); +i = eval.iToken; +propertyName = "offset"; +propertyValue = pt; +break; +case 1073741906: +propertyName = "crossed"; +break; +case 1073742196: +propertyValue = Float.$valueOf(this.floatParameter(++i)); +propertyName = "width"; +swidth = propertyName + " " + propertyValue; +break; +case 1073741908: +propertyName = "curve"; +iArray = i + 1; +break; +case 1073741840: +propertyName = "arc"; +iArray = i + 1; +break; +case 1073741846: +propertyName = "arrow"; +iArray = i + 1; +break; +case 1073742194: +propertyName = "vertices"; +iArray = i + 1; +break; +case 1073741880: +propertyName = "circle"; +break; +case 1073741912: +propertyName = "cylinder"; +break; +case 1073742048: +propertyName = "nohead"; +break; +case 1073741860: +propertyName = "isbarb"; +break; +case 1073742130: +propertyName = "rotate45"; +break; +case 1073742092: +propertyName = "perp"; +break; +case 1665140738: +case 1073741917: +var isRadius = (eval.theTok == 1665140738); +var f = this.floatParameter(++i); +if (isRadius) f *= 2; +propertyValue = Float.$valueOf(f); +propertyName = (isRadius || this.tokAt(i) == 3 ? "width" : "diameter"); +swidth = propertyName + (this.tokAt(i) == 3 ? " " + f : " " + (Clazz.floatToInt(f))); +break; +case 1073742330: +if ((this.tokAt(i + 2) == 268437504 || isFrame)) { +var pto = center = this.centerParameter(i); +i = eval.iToken; +propertyName = "coord"; +propertyValue = pto; +havePoints = true; +break; +}propertyValue = eval.objectNameParameter(++i); +propertyName = "identifier"; +havePoints = true; +break; +case 1765808134: +case 603979967: +case 1073742074: +idSeen = true; +translucentLevel = this.getColorTrans(eval, i, false, colorArgb); +i = eval.iToken; +continue; +default: +if (!eval.setMeshDisplayProperty(22, 0, eval.theTok)) { +if (eval.theTok == 268441089 || JS.T.tokAttr(eval.theTok, 1073741824)) { +thisId = this.setShapeId(22, i, idSeen); +i = eval.iToken; +break; +}this.invArg(); +}if (iptDisplayProperty == 0) iptDisplayProperty = i; +i = eval.iToken; +continue; +} +idSeen = (eval.theTok != 12291); +if (havePoints && !isInitialized && !isFrame) { +this.setShapeProperty(22, "points", Integer.$valueOf(intScale)); +isInitialized = true; +intScale = 0; +}if (havePoints && isWild) this.invArg(); +if (propertyName != null) { +this.setShapeProperty(22, propertyName, propertyValue); +}} +if (meshNoFill) { +iptDisplayProperty = -1 - iptDisplayProperty; +}this.finalizeObject(22, colorArgb[0], translucentLevel, intScale, havePoints, connections, iptDisplayProperty, null); +}); +Clazz.defineMethod(c$, "mo", +function(isInitOnly, iShape){ +var eval = this.e; +var offset = 2147483647; +var isNegOffset = false; +var nboType = null; +var bsModels = this.vwr.getVisibleFramesBitSet(); +var propertyList = new JU.Lst(); +var isBeta = false; +var isNBO = (this.tokAt(0) == 1073877011); +var i0 = 1; +if (isNBO) { +var isViewOnly = this.e.optParameterAsString(1).equals("view"); +if (this.e.slen == 1 || isViewOnly || this.e.optParameterAsString(1).equals("options")) { +if (!this.chk) { +var options = (isViewOnly ? "VIEW" : this.e.optParameterAsString(2)); +this.vwr.startNBO(options); +}return; +}}if (this.tokAt(1) == 1094717454 || this.tokAt(1) == 4115) { +i0 = eval.modelNumberParameter(2); +if (i0 < 0) this.invArg(); +bsModels.clearAll(); +bsModels.set(i0); +i0 = 3; +}eval.sm.loadShape(iShape); +for (var iModel = bsModels.nextSetBit(0); iModel >= 0; iModel = bsModels.nextSetBit(iModel + 1)) { +var i = i0; +if (this.tokAt(i) == 1073742001 && this.listIsosurface(iShape)) return; +this.setShapeProperty(iShape, "init", Integer.$valueOf(iModel)); +if (isInitOnly) return; +var title = null; +var moNumber = (this.getShapeProperty(iShape, "moNumber")).intValue(); +var linearCombination = this.getShapeProperty(iShape, "moLinearCombination"); +var squared = this.getShapeProperty(iShape, "moSquareData"); +var linearSquared = (linearCombination == null ? null : this.getShapeProperty(iShape, "moSquareLinear")); +if (moNumber == 0) moNumber = 2147483647; +var propertyName = null; +var propertyValue = null; +var ignoreSquared = false; +var nboName = null; +switch (this.getToken(i).tok) { +case 1140850696: +if (iShape == 1073877010) { +this.mo(isInitOnly, 28); +return; +}nboType = this.paramAsStr(++i).toUpperCase(); +if (eval.tokAt(i + 1) == 4) { +nboName = this.paramAsStr(++eval.iToken); +}break; +case 1073741875: +case 554176565: +propertyName = eval.theToken.value; +propertyValue = this.getCapSlabObject(i, false); +i = eval.iToken; +break; +case 1073741914: +linearSquared = Boolean.TRUE; +linearCombination = Clazz.newFloatArray(-1, [1]); +offset = moNumber = 0; +break; +case 2: +moNumber = this.intParameter(i); +if (this.tokAt(i + 1) == 1073741865) { +isBeta = true; +i++; +}linearCombination = this.moCombo(propertyList); +if (linearCombination == null && moNumber < 0) linearCombination = Clazz.newFloatArray(-1, [-100, -moNumber]); +ignoreSquared = true; +break; +case 268440576: +switch (this.tokAt(++i)) { +case 1073741973: +case 1073742008: +break; +default: +this.invArg(); +} +isNegOffset = true; +case 1073741973: +case 1073742008: +if ((offset = this.moOffset(i)) == 2147483647) this.invArg(); +moNumber = 0; +linearCombination = this.moCombo(propertyList); +ignoreSquared = true; +break; +case 1073742037: +moNumber = 1073742037; +isBeta = false; +linearCombination = this.moCombo(propertyList); +ignoreSquared = true; +break; +case 1073742108: +moNumber = 1073742108; +isBeta = false; +linearCombination = this.moCombo(propertyList); +ignoreSquared = true; +break; +case 1765808134: +this.setColorOptions(null, i + 1, iShape, 2); +break; +case 134217750: +propertyName = "plane"; +propertyValue = (this.tokAt(this.e.iToken = ++i) == 1073742333 ? null : eval.planeParameter(i, false)); +break; +case 134217751: +this.addShapeProperty(propertyList, "randomSeed", this.tokAt(i + 2) == 2 ? Integer.$valueOf(this.intParameter(i + 2)) : null); +propertyName = "monteCarloCount"; +propertyValue = Integer.$valueOf(this.intParameter(i + 1)); +break; +case 536875059: +propertyName = "scale"; +propertyValue = Float.$valueOf(this.floatParameter(i + 1)); +break; +case 1073741910: +if (this.tokAt(i + 1) == 268440577) { +propertyName = "cutoffPositive"; +propertyValue = Float.$valueOf(this.floatParameter(i + 2)); +} else { +propertyName = "cutoff"; +propertyValue = Float.$valueOf(this.floatParameter(i + 1)); +}break; +case 536870916: +propertyName = "debug"; +break; +case 1073742054: +propertyName = "plane"; +break; +case 1073742104: +case 1073742122: +propertyName = "resolution"; +propertyValue = Float.$valueOf(this.floatParameter(i + 1)); +break; +case 1073742156: +if (linearCombination == null) squared = Boolean.TRUE; + else linearSquared = Boolean.TRUE; +ignoreSquared = false; +break; +case 1073742168: +if (i + 1 < this.slen && this.tokAt(i + 1) == 4) { +propertyName = "titleFormat"; +propertyValue = this.paramAsStr(i + 1); +}break; +case 1073741824: +this.invArg(); +break; +case 4: +if (isNBO && i == 1) { +nboName = eval.stringParameter(i); +break; +}default: +if (isNBO && eval.tokAt(i) == 4) { +nboName = this.paramAsStr(i++); +}if (eval.isArrayParameter(i)) { +linearCombination = eval.floatParameterSet(i, 1, 2147483647); +if (this.tokAt(eval.iToken + 1) == 1073742156) { +ignoreSquared = false; +linearSquared = Boolean.TRUE; +eval.iToken++; +}break; +}var ipt = eval.iToken; +if (!eval.setMeshDisplayProperty(iShape, 0, eval.theTok)) this.invArg(); +this.setShapeProperty(iShape, "setProperties", propertyList); +eval.setMeshDisplayProperty(iShape, ipt, this.tokAt(ipt)); +return; +} +if (propertyName != null) this.addShapeProperty(propertyList, propertyName, propertyValue); +var haveMO = (moNumber != 2147483647 || linearCombination != null); +if (this.chk) return; +if (nboType != null || nboName != null || haveMO) { +if (haveMO && this.tokAt(eval.iToken + 1) == 4) { +title = this.paramAsStr(++eval.iToken); +}eval.setCursorWait(true); +if (nboType != null || nboName != null) nboType = nboType + ":" + nboName; +this.setMoData(propertyList, moNumber, linearCombination, offset, isNegOffset, iModel, title, nboType, isBeta); +if (haveMO) { +this.addShapeProperty(propertyList, "finalize", null); +}}if (!ignoreSquared) { +this.setShapeProperty(iShape, "squareLinear", linearSquared); +this.setShapeProperty(iShape, "squareData", squared); +}if (propertyList.size() > 0) this.setShapeProperty(iShape, "setProperties", propertyList); +if (haveMO && !eval.tQuiet) { +var moLabel = ""; +if (isNBO) { +moLabel = this.getShapeProperty(iShape, "moLabel"); +} else { +moNumber = (this.getShapeProperty(iShape, "moNumber")).intValue(); +moLabel = "" + moNumber; +}this.showString(JS.T.nameOf(this.tokAt(0)) + " " + moLabel + " " + (isBeta ? "beta " : "") + this.getShapeProperty(iShape, "message")); +}propertyList.clear(); +} +}, "~B,~N"); +Clazz.defineMethod(c$, "setNBOType", +function(moData, type){ +var nboNumber = -1; +var name = null; +var pt = type.indexOf(":"); +if (pt > 0) { +name = type.substring(pt + 1); +type = type.substring(0, pt); +if (type.equals("null")) type = null; +if (name.equals("null")) name = null; +}if ((type == null ? 0 : JV.JC.getNBOTypeFromName(type)) < 0) this.invArg(); +if (!moData.containsKey("nboLabels")) this.error(27); +if (this.chk) return -1; +if (type != null && !(J.api.Interface.getInterface("J.adapter.readers.quantum.GenNBOReader", this.vwr, "script")).readNBOCoefficients(moData, type, this.vwr)) this.error(27); +var auxFiles = moData.get("auxFiles"); +var auxFiles0 = this.vwr.getCurrentModelAuxInfo().get("auxFiles"); +if (auxFiles0 == null) { +this.vwr.getCurrentModelAuxInfo().put("auxFiles", auxFiles); +} else { +auxFiles0.addAll(auxFiles); +}if (name != null) { +pt = name.indexOf("."); +if (pt > 0) { +var ipt = JU.PT.parseInt(name.substring(pt + 1)); +name = name.substring(0, pt); +pt = ipt; +}var labels = moData.get("nboLabels"); +for (var i = 0, n = labels.length; i < n; i++) { +if (name.equals(labels[i])) { +if (pt < 0 || --pt == 0) { +nboNumber = i + 1; +break; +}}} +if (nboNumber < 0) this.error(27); +}return nboNumber; +}, "java.util.Map,~S"); +Clazz.defineMethod(c$, "moCombo", +function(propertyList){ +if (this.tokAt(this.e.iToken + 1) != 1073742156) return null; +this.addShapeProperty(propertyList, "squareLinear", Boolean.TRUE); +this.e.iToken++; +return Clazz.newFloatArray (0, 0); +}, "JU.Lst"); +Clazz.defineMethod(c$, "moOffset", +function(index){ +var isHomo = (this.getToken(index).tok == 1073741973); +var offset = (isHomo ? 0 : 1); +var tok = this.tokAt(++index); +if (tok == 2 && (this.e.st[index].value).charAt(0) == '-') offset += this.intParameter(index); + else if (tok == 268440577) offset += this.intParameter(++index); + else if (tok == 268440576) offset -= this.intParameter(++index); +return offset; +}, "~N"); +Clazz.defineMethod(c$, "setMoData", +function(propertyList, moNumber, lc, offset, isNegOffset, modelIndex, title, nboType, isBeta){ +var eval = this.e; +if (modelIndex < 0) { +modelIndex = this.vwr.am.cmi; +if (modelIndex < 0) eval.errorStr(30, "MO isosurfaces"); +}var moData = this.vwr.ms.getInfo(modelIndex, "moData"); +if (moData == null) this.error(27); +this.vwr.checkMenuUpdate(); +if (nboType != null) { +var nboNumber = this.setNBOType(moData, nboType); +var nOrbitals = (moData.get("nboLabels")).length; +eval.showString(nOrbitals + " orbitals of type " + nboType.substring(0, nboType.indexOf(":") + 1) + " modelIndex=" + this.vwr.getModelNumberDotted(modelIndex)); +if (nboNumber > 0) moNumber = nboNumber; +if (lc == null && moNumber == 2147483647) return; +}var mos = null; +var mo; +var nOrb = 0; +var f = null; +if (lc == null || lc.length < 2) { +if (lc != null && lc.length == 1) offset = 0; + else if (isBeta && moData.containsKey("firstBeta")) offset = (moData.get("firstBeta")).intValue(); +var lastMoNumber = (moData.containsKey("lastMoNumber") ? (moData.get("lastMoNumber")).intValue() : 0); +var lastMoCount = (moData.containsKey("lastMoCount") ? (moData.get("lastMoCount")).intValue() : 1); +if (moNumber == 1073742108) moNumber = lastMoNumber - 1; + else if (moNumber == 1073742037) moNumber = lastMoNumber + lastMoCount; +mos = (moData.get("mos")); +nOrb = (mos == null ? 0 : mos.size()); +if (nOrb == 0) this.error(25); +if (nOrb == 1 && moNumber > 1) this.error(29); +if (offset != 2147483647) { +if (isBeta) { +} else if (moData.containsKey("HOMO")) { +moNumber = (moData.get("HOMO")).intValue() + offset; +offset = 0; +} else { +moNumber = nOrb; +for (var i = 0; i < nOrb; i++) { +mo = mos.get(i); +if ((f = mo.get("occupancy")) != null) { +if (f.floatValue() < 0.5) { +moNumber = i; +break; +}continue; +} else if ((f = mo.get("energy")) != null) { +if (f.floatValue() > 0) { +moNumber = i; +break; +}continue; +}break; +} +if (f == null) this.error(28); +}moNumber += offset; +if (!this.chk) JU.Logger.info("MO " + moNumber); +}if (moNumber < 1 || moNumber > nOrb) eval.errorStr(26, "" + nOrb); +}moNumber = Math.abs(moNumber); +moData.put("lastMoNumber", Integer.$valueOf(moNumber)); +moData.put("lastMoCount", Integer.$valueOf(1)); +if (isNegOffset && lc == null) lc = Clazz.newFloatArray(-1, [-100, moNumber]); +if (lc != null && lc.length < 2) { +mo = mos.get(moNumber - 1); +if ((f = mo.get("energy")) == null) { +lc = Clazz.newFloatArray(-1, [100, moNumber]); +} else { +var energy = f.floatValue(); +var bs = JU.BS.newN(nOrb); +var n = 0; +var isAllElectrons = (lc.length == 1 && lc[0] == 1); +for (var i = 0; i < nOrb; i++) { +if ((f = mos.get(i).get("energy")) == null) continue; +var e = f.floatValue(); +if (isAllElectrons ? e <= energy : e == energy) { +bs.set(i + 1); +n += 2; +}} +lc = Clazz.newFloatArray (n, 0); +for (var i = 0, pt = 0; i < n; i += 2) { +lc[i] = 1; +lc[i + 1] = (pt = bs.nextSetBit(pt + 1)); +} +moData.put("lastMoNumber", Integer.$valueOf(bs.nextSetBit(0))); +moData.put("lastMoCount", Integer.$valueOf(Clazz.doubleToInt(n / 2))); +}this.addShapeProperty(propertyList, "squareLinear", Boolean.TRUE); +}this.addShapeProperty(propertyList, "moData", moData); +if (title != null) this.addShapeProperty(propertyList, "title", title); +this.addShapeProperty(propertyList, "molecularOrbital", lc != null ? lc : Integer.$valueOf(Math.abs(moNumber))); +this.addShapeProperty(propertyList, "clear", null); +}, "JU.Lst,~N,~A,~N,~B,~N,~S,~S,~B"); +Clazz.defineMethod(c$, "isosurface", +function(iShape){ +var eval = this.e; +eval.sm.loadShape(iShape); +if (this.tokAt(1) == 1073742001 && this.listIsosurface(iShape)) return; +var iptDisplayProperty = 0; +var isDisplay = false; +var isBest = false; +var isIsosurface = (iShape == 24); +var isPmesh = (iShape == 29); +var isPlot3d = (iShape == 30); +var isLcaoCartoon = (iShape == 26); +var isSilent = (isLcaoCartoon || this.tokAt(1) == 12291 || eval.$isStateScript); +var surfaceObjectSeen = false; +var planeSeen = false; +var isMapped = false; +var isBicolor = false; +var isPhased = false; +var doCalcArea = false; +var doCalcVolume = false; +var isBeta = false; +var isCavity = false; +var haveRadius = false; +var toCache = false; +var isFxy = false; +var haveSlab = false; +var haveIntersection = false; +var isFrontOnly = false; +var nbotype = null; +var data = null; +var cmd = null; +var thisSet = null; +var nFiles = 0; +var nX; +var nY; +var nZ; +var ptX; +var ptY; +var sigma = NaN; +var cutoff = NaN; +var ptWithin = 0; +var smoothing = null; +var smoothingPower = 2147483647; +var bs = null; +var bsSelect = null; +var bsIgnore = null; +var sbCommand = new JU.SB(); +var pt; +var plane = null; +var lattice = null; +var fixLattice = false; +var pts = null; +var color = 0; +var str = null; +var modelIndex = (this.chk ? 0 : -2147483648); +eval.setCursorWait(true); +var idSeen = (this.initIsosurface(iShape) != null); +var isWild = (idSeen && this.getShapeProperty(iShape, "ID") == null); +var isColorSchemeTranslucent = false; +var isInline = false; +var isSign = false; +var colorDensity = false; +var onlyOneModel = null; +var filesData = null; +var translucency = null; +var colorScheme = null; +var mepOrMlp = null; +var symops = null; +var discreteColixes = null; +var propertyList = new JU.Lst(); +var defaultMesh = false; +if (isPmesh || isPlot3d) this.addShapeProperty(propertyList, "fileType", "Pmesh"); +for (var i = eval.iToken; i < this.slen; ++i) { +var propertyName = null; +var propertyValue = null; +var tok = this.getToken(i).tok; +if (tok == 1073741824) { +str = this.paramAsStr(i); +if (str.equalsIgnoreCase("map")) tok = 4125; +}switch (tok) { +case 1073742148: +isSilent = true; +sbCommand.append(" silent"); +propertyName = "silent"; +break; +case 603979868: +smoothing = (this.getToken(++i).tok == 1073742335 ? Boolean.TRUE : eval.theTok == 1073742334 ? Boolean.FALSE : null); +if (smoothing == null) this.invArg(); +continue; +case 553648146: +smoothingPower = this.intParameter(++i); +continue; +case 4128: +propertyName = "moveIsosurface"; +if (this.tokAt(++i) != 12) this.invArg(); +propertyValue = this.getToken(i++).value; +break; +case 1296041985: +var ff = this.floatArraySet(i + 2, this.intParameter(i + 1), 16); +symops = new Array(ff.length); +for (var j = symops.length; --j >= 0; ) symops[j] = JU.M4.newA16(ff[j]); + +i = eval.iToken; +break; +case 1088421903: +if (modelIndex < 0) modelIndex = Math.min(this.vwr.am.cmi, 0); +var needIgnore = (bsIgnore == null); +if (bsSelect == null) bsSelect = JU.BSUtil.copy(this.vwr.bsA()); +bsSelect.and(this.vwr.ms.getAtoms(1296041985, Integer.$valueOf(1))); +if (!needIgnore) bsSelect.andNot(bsIgnore); +this.addShapeProperty(propertyList, "select", bsSelect); +if (needIgnore) { +bsIgnore = JU.BSUtil.copy(bsSelect); +JU.BSUtil.invertInPlace(bsIgnore, this.vwr.ms.ac); +isFrontOnly = true; +this.addShapeProperty(propertyList, "ignore", bsIgnore); +sbCommand.append(" ignore ").append(JU.Escape.eBS(bsIgnore)); +}sbCommand.append(" symmetry"); +if (color == 0) this.addShapeProperty(propertyList, "colorRGB", Integer.$valueOf(1296041985)); +symops = this.vwr.ms.getSymMatrices(modelIndex); +break; +case 1073742066: +propertyName = "offset"; +propertyValue = this.centerParameter(++i); +i = eval.iToken; +break; +case 528432: +propertyName = "rotate"; +propertyValue = (this.tokAt(eval.iToken = ++i) == 1073742333 ? null : eval.getPoint4f(i)); +i = eval.iToken; +break; +case 1610612740: +propertyName = "scale3d"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1073742090: +sbCommand.append(" periodic"); +propertyName = "periodic"; +break; +case 1073742078: +case 266298: +case 134217751: +propertyName = eval.theToken.value.toString(); +sbCommand.append(" ").appendO(eval.theToken.value); +propertyValue = this.centerParameter(++i); +sbCommand.append(" ").append(JU.Escape.eP(propertyValue)); +i = eval.iToken; +break; +case 1812599299: +if (eval.fullCommand.indexOf("# BBOX=") >= 0) { +var bbox = JU.PT.split(JU.PT.getQuotedAttribute(eval.fullCommand, "# BBOX"), ","); +pts = Clazz.newArray(-1, [JU.Escape.uP(bbox[0]), JU.Escape.uP(bbox[1])]); +} else if (eval.isCenterParameter(i + 1)) { +pts = Clazz.newArray(-1, [this.getPoint3f(i + 1, true), this.getPoint3f(eval.iToken + 1, true)]); +i = eval.iToken; +} else { +pts = this.vwr.ms.getBBoxVertices(); +}sbCommand.append(" boundBox " + JU.Escape.eP(pts[0]) + " " + JU.Escape.eP(pts[pts.length - 1])); +propertyName = "boundingBox"; +propertyValue = pts; +break; +case 135188: +isPmesh = true; +sbCommand.append(" pmesh"); +propertyName = "fileType"; +propertyValue = "Pmesh"; +break; +case 134217763: +bsSelect = this.atomExpressionAt(++i); +if (this.chk) { +bs = new JU.BS(); +} else if (this.tokAt(eval.iToken + 1) == 1073742325 || this.tokAt(eval.iToken + 1) == 10) { +bs = this.atomExpressionAt(++eval.iToken); +bs.and(this.vwr.ms.getAtomsWithinRadius(5.0, bsSelect, false, null, null)); +} else { +bs = this.vwr.ms.getAtomsWithinRadius(5.0, bsSelect, true, null, null); +bs.andNot(this.vwr.ms.getAtoms(1094713360, bsSelect)); +}bs.andNot(bsSelect); +sbCommand.append(" intersection ").append(JU.Escape.eBS(bsSelect)).append(" ").append(JU.Escape.eBS(bs)); +i = eval.iToken; +if (this.tokAt(i + 1) == 134320141) { +i++; +var f = this.getToken(++i).value; +sbCommand.append(" function ").append(JU.PT.esc(f)); +if (!this.chk) this.addShapeProperty(propertyList, "func", (f.equals("a+b") || f.equals("a-b") ? f : this.createFunction("__iso__", "a,b", f))); +} else { +haveIntersection = true; +}propertyName = "intersection"; +propertyValue = Clazz.newArray(-1, [bsSelect, bs]); +break; +case 1610625028: +case 134217759: +isDisplay = (tok == 1610625028); +if (isDisplay) { +sbCommand.append(" display"); +iptDisplayProperty = i; +tok = this.tokAt(i + 1); +if (tok == 0) continue; +i++; +this.addShapeProperty(propertyList, "token", Integer.$valueOf(1073742335)); +if (tok == 10 || tok == 1073742327) { +propertyName = "bsDisplay"; +if (tok == 1073742327) { +sbCommand.append(" all"); +} else { +propertyValue = this.st[i].value; +sbCommand.append(" ").append(JU.Escape.eBS(propertyValue)); +}eval.checkLast(i); +break; +} else if (tok != 134217759) { +eval.iToken = i; +this.invArg(); +}} else { +ptWithin = i; +}var distance; +var ptc = null; +bs = null; +var ret = new Array(1); +if (this.tokAt(i + 1) == 1073742325) { +distance = this.floatParameter(i + 3); +if (eval.isPoint3f(i + 4)) { +ptc = eval.centerParameter(i + 4, null); +eval.iToken += 2; +} else if (eval.isPoint3f(i + 5)) { +ptc = eval.centerParameter(i + 5, null); +eval.iToken += 2; +} else { +bs = eval.atomExpression(this.st, i + 5, this.slen, true, false, ret, true); +if (bs == null) this.invArg(); +}} else { +distance = this.floatParameter(++i); +ptc = eval.centerParameter(++i, ret); +bs = (Clazz.instanceOf(ret[0],"JU.BS") ? ret[0] : null); +}if (isDisplay) eval.checkLast(eval.iToken); +i = eval.iToken; +if (eval.fullCommand.indexOf("# WITHIN=") >= 0) bs = JU.BS.unescape(JU.PT.getQuotedAttribute(eval.fullCommand, "# WITHIN")); +if (!this.chk) { +if (bs != null && modelIndex >= 0) bs = this.vwr.restrictToModel(bs, modelIndex); +if (ptc == null) ptc = (bs == null ? new JU.P3() : this.vwr.ms.getAtomSetCenter(bs)); +pts = this.getWithinDistanceVector(propertyList, distance, ptc, bs, isDisplay); +sbCommand.append(" within ").appendF(distance).append(" ").append(bs == null ? JU.Escape.eP(ptc) : JU.Escape.eBS(bs)); +}continue; +case 1073742083: +propertyName = "parameters"; +var fparams = eval.floatParameterSet(++i, 1, 10); +i = eval.iToken; +propertyValue = fparams; +sbCommand.append(" parameters ").append(JU.Escape.eAF(fparams)); +break; +case 1715472409: +case 1073742190: +onlyOneModel = eval.theToken.value; +var isVariable = (tok == 1073742190); +var tokProperty = this.tokAt(i + 1); +if (mepOrMlp == null) { +if (!surfaceObjectSeen && !isMapped && !planeSeen) { +this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +sbCommand.append(" vdw"); +surfaceObjectSeen = true; +}propertyName = "property"; +if (smoothing == null) { +var allowSmoothing = JS.T.tokAttr(tokProperty, 1111490560); +smoothing = (allowSmoothing && this.vwr.getIsosurfacePropertySmoothing(false) == 1 ? Boolean.TRUE : Boolean.FALSE); +}this.addShapeProperty(propertyList, "propertySmoothing", smoothing); +sbCommand.append(" isosurfacePropertySmoothing " + smoothing); +if (smoothing === Boolean.TRUE) { +if (smoothingPower == 2147483647) smoothingPower = this.vwr.getIsosurfacePropertySmoothing(true); +this.addShapeProperty(propertyList, "propertySmoothingPower", Integer.$valueOf(smoothingPower)); +sbCommand.append(" isosurfacePropertySmoothingPower " + smoothingPower); +}if (this.vwr.g.rangeSelected) this.addShapeProperty(propertyList, "rangeSelected", Boolean.TRUE); +} else { +propertyName = mepOrMlp; +}str = this.paramAsStr(i); +sbCommand.append(" ").append(str); +if (str.toLowerCase().indexOf("property_") == 0) { +data = Clazz.newFloatArray (this.vwr.ms.ac, 0); +if (this.chk) continue; +data = this.vwr.getDataObj(str, null, 1); +if (data == null) this.invArg(); +this.addShapeProperty(propertyList, propertyName, data); +continue; +}var ac = this.vwr.ms.ac; +data = Clazz.newFloatArray (ac, 0); +if (isVariable) { +var vname = this.paramAsStr(++i); +if (vname.length == 0) { +data = eval.floatParameterSet(i, ac, ac); +} else { +data = Clazz.newFloatArray (ac, 0); +if (!this.chk) JU.Parser.parseStringInfestedFloatArray("" + eval.getParameter(vname, 4, true), null, data); +}if (!this.chk) sbCommand.append(" \"\" ").append(JU.Escape.eAF(data)); +} else { +this.getToken(++i); +if (!this.chk) { +sbCommand.append(" " + eval.theToken.value); +var atoms = this.vwr.ms.at; +this.vwr.autoCalculate(tokProperty, null); +if (tokProperty != 1765808134) { +pt = new JU.P3(); +for (var iAtom = ac; --iAtom >= 0; ) data[iAtom] = atoms[iAtom].atomPropertyFloat(this.vwr, tokProperty, pt); + +}}if (tokProperty == 1765808134) colorScheme = "inherit"; +if (this.tokAt(i + 1) == 134217759) { +var d = this.floatParameter(i = i + 2); +sbCommand.append(" within " + d); +this.addShapeProperty(propertyList, "propertyDistanceMax", Float.$valueOf(d)); +}}propertyValue = data; +break; +case 1094713359: +case 1094717454: +if (surfaceObjectSeen) this.invArg(); +modelIndex = (tok == 1094713359 ? this.intParameter(++i) : eval.modelNumberParameter(++i)); +sbCommand.append(" modelIndex " + modelIndex); +if (modelIndex < 0) { +propertyName = "fixed"; +propertyValue = Boolean.TRUE; +break; +}propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(modelIndex); +break; +case 1275082241: +propertyName = "select"; +var bs1 = this.atomExpressionAt(++i); +propertyValue = bs1; +i = eval.iToken; +var isOnly = (this.tokAt(i + 1) == 1073742072); +if (isOnly) { +i++; +bsIgnore = JU.BSUtil.copy(bs1); +JU.BSUtil.invertInPlace(bsIgnore, this.vwr.ms.ac); +this.addShapeProperty(propertyList, "ignore", bsIgnore); +sbCommand.append(" ignore ").append(JU.Escape.eBS(bsIgnore)); +isFrontOnly = true; +}if (surfaceObjectSeen || isMapped) { +sbCommand.append(" select " + JU.Escape.eBS(bs1)); +} else { +bsSelect = propertyValue; +if (modelIndex < 0 && bsSelect.nextSetBit(0) >= 0) modelIndex = this.vwr.ms.at[bsSelect.nextSetBit(0)].mi; +}break; +case 2109448: +if (eval.getToken(++i).tok == 10) { +thisSet = eval.theToken.value; +} else { +thisSet = eval.expandFloatArray(eval.floatParameterSet(i, 1, 2147483647), 1, true); +}i = eval.iToken; +break; +case 36867: +var ns = this.intParameter(++i); +if (ns > 0) thisSet = JU.BSUtil.newAndSetBit(ns - 1); + else thisSet = new JU.BS(); +break; +case 12289: +propertyName = "center"; +propertyValue = this.centerParameter(++i); +sbCommand.append(" center " + JU.Escape.eP(propertyValue)); +i = eval.iToken; +break; +case 1073742147: +case 1765808134: +idSeen = true; +if (tok == 1073742147) { +isSign = true; +sbCommand.append(" sign"); +this.addShapeProperty(propertyList, "sign", Boolean.TRUE); +} else { +if (this.tokAt(i + 1) == 1073741914) { +i++; +propertyName = "colorDensity"; +sbCommand.append(" color density"); +colorDensity = true; +if (this.isFloatParameter(i + 1)) { +var ptSize = this.floatParameter(++i); +sbCommand.append(" " + ptSize); +propertyValue = Float.$valueOf(ptSize); +}break; +}if (this.getToken(i + 1).tok == 4) { +colorScheme = this.paramAsStr(++i); +if (colorScheme.indexOf(" ") > 0) { +discreteColixes = JU.C.getColixArray(colorScheme); +if (discreteColixes == null) this.error(4); +}} else if (eval.theTok == 1073742018) { +i++; +sbCommand.append(" color mesh"); +color = eval.getArgbParam(++i); +this.addShapeProperty(propertyList, "meshcolor", Integer.$valueOf(color)); +sbCommand.append(" ").append(JU.Escape.escapeColor(color)); +i = eval.iToken; +continue; +}if ((eval.theTok = this.tokAt(i + 1)) == 603979967 || eval.theTok == 1073742074) { +sbCommand.append(" color"); +translucency = this.setColorOptions(sbCommand, i + 1, 24, -2); +i = eval.iToken; +continue; +}switch (this.tokAt(i + 1)) { +case 1073741826: +case 1073742114: +this.getToken(++i); +sbCommand.append(" color range"); +this.addShapeProperty(propertyList, "rangeAll", null); +if (this.tokAt(i + 1) == 1073742327) { +i++; +sbCommand.append(" all"); +continue; +}var min = this.floatParameter(++i); +var max = this.floatParameter(++i); +this.addShapeProperty(propertyList, "red", Float.$valueOf(min)); +this.addShapeProperty(propertyList, "blue", Float.$valueOf(max)); +sbCommand.append(" ").appendF(min).append(" ").appendF(max); +continue; +} +if (eval.isColorParam(i + 1)) { +color = eval.getArgbParam(i + 1); +if (this.tokAt(i + 2) == 1073742170) { +colorScheme = eval.getColorRange(i + 1); +i = eval.iToken; +break; +}}sbCommand.append(" color"); +}if (eval.isColorParam(i + 1)) { +color = eval.getArgbParam(++i); +sbCommand.append(" ").append(JU.Escape.escapeColor(color)); +i = eval.iToken; +this.addShapeProperty(propertyList, "colorRGB", Integer.$valueOf(color)); +idSeen = true; +if (eval.isColorParam(i + 1)) { +color = eval.getArgbParam(++i); +i = eval.iToken; +this.addShapeProperty(propertyList, "colorRGB", Integer.$valueOf(color)); +sbCommand.append(" ").append(JU.Escape.escapeColor(color)); +isBicolor = true; +} else if (isSign) { +this.invPO(); +}} else if (!isSign && discreteColixes == null && colorScheme == null) { +this.invPO(); +}continue; +case 134221829: +if (!isIsosurface) this.invArg(); +toCache = !this.chk; +continue; +case 1228935687: +if (this.tokAt(i + 1) != 4) this.invPO(); +continue; +case 1111492618: +case 1648363544: +sbCommand.append(" ").appendO(eval.theToken.value); +var rd = eval.encodeRadiusParameter(i, false, true); +if (rd == null) return; +sbCommand.append(" ").appendO(rd); +if (Float.isNaN(rd.value)) rd.value = 100; +propertyValue = rd; +propertyName = "radius"; +haveRadius = true; +if (isMapped) surfaceObjectSeen = false; +i = eval.iToken; +break; +case 1073741864: +isBest = true; +continue; +case 134217750: +planeSeen = true; +propertyName = "plane"; +propertyValue = eval.planeParameter(i, isBest); +i = eval.iToken; +sbCommand.append(" plane ").append(JU.Escape.eP4(propertyValue)); +break; +case 536875059: +propertyName = "scale"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" scale ").appendO(propertyValue); +break; +case 1073742327: +if (idSeen) this.invArg(); +propertyName = "thisID"; +break; +case 1112150020: +surfaceObjectSeen = true; +++i; +propertyValue = eval.getPoint4f(i); +propertyName = "ellipsoid"; +i = eval.iToken; +sbCommand.append(" ellipsoid ").append(JU.Escape.eP4(propertyValue)); +break; +case 134219777: +planeSeen = true; +propertyName = "plane"; +propertyValue = eval.hklParameter(++i, null, true); +i = eval.iToken; +sbCommand.append(" plane ").append(JU.Escape.eP4(propertyValue)); +break; +case 135182: +surfaceObjectSeen = true; +var lcaoType = this.paramAsStr(++i); +this.addShapeProperty(propertyList, "lcaoType", lcaoType); +sbCommand.append(" lcaocartoon ").append(JU.PT.esc(lcaoType)); +switch (this.getToken(++i).tok) { +case 12290: +case 10: +case 1073742325: +propertyName = "lcaoCartoon"; +bs = this.atomExpressionAt(i); +i = eval.iToken; +if (this.chk) continue; +var atomIndex = bs.nextSetBit(0); +if (atomIndex < 0) this.error(14); +sbCommand.append(" ({").appendI(atomIndex).append("})"); +modelIndex = this.vwr.ms.at[atomIndex].mi; +this.addShapeProperty(propertyList, "modelIndex", Integer.$valueOf(modelIndex)); +var axes = Clazz.newArray(-1, [ new JU.V3(), new JU.V3(), JU.V3.newV(this.vwr.ms.at[atomIndex]), new JU.V3()]); +if (!lcaoType.equalsIgnoreCase("s") && this.vwr.getHybridizationAndAxes(atomIndex, axes[0], axes[1], lcaoType) == null) return; +propertyValue = axes; +break; +default: +this.error(14); +} +break; +case 1073877011: +nbotype = this.paramAsStr(++i).toUpperCase(); +sbCommand.append(" nbo ").append(nbotype).append(" "); +case 1073877010: +if (nbotype == null) sbCommand.append(" mo "); +var moNumber = 2147483647; +var offset = 2147483647; +var isNegOffset = (this.tokAt(i + 1) == 268440576); +if (isNegOffset) i++; +var linearCombination = null; +switch (this.tokAt(++i)) { +case 0: +eval.bad(); +break; +case 1073741914: +sbCommand.append("[1] squared "); +this.addShapeProperty(propertyList, "squareLinear", Boolean.TRUE); +linearCombination = Clazz.newFloatArray(-1, [1]); +offset = moNumber = 0; +i++; +break; +case 1073741973: +case 1073742008: +offset = this.moOffset(i); +moNumber = 0; +i = eval.iToken; +sbCommand.append((isNegOffset ? "-" : "") + "HOMO "); +if (offset > 0) sbCommand.append("+"); +if (offset != 0) sbCommand.appendI(offset); +break; +case 2: +moNumber = this.intParameter(i); +sbCommand.appendI(moNumber); +if (this.tokAt(i + 1) == 1073741865) { +isBeta = true; +i++; +}break; +default: +if (eval.isArrayParameter(i)) { +linearCombination = eval.floatParameterSet(i, 1, 2147483647); +i = eval.iToken; +}} +var squared = (this.tokAt(i + 1) == 1073742156); +if (squared) { +this.addShapeProperty(propertyList, "squareLinear", Boolean.TRUE); +sbCommand.append(" squared"); +if (linearCombination == null) linearCombination = Clazz.newFloatArray (0, 0); +} else if (this.tokAt(i + 1) == 134217751) { +++i; +var monteCarloCount = this.intParameter(++i); +var seed = (this.tokAt(i + 1) == 2 ? this.intParameter(++i) : (-System.currentTimeMillis()) % 10000); +this.addShapeProperty(propertyList, "monteCarloCount", Integer.$valueOf(monteCarloCount)); +this.addShapeProperty(propertyList, "randomSeed", Integer.$valueOf(seed)); +sbCommand.append(" points ").appendI(monteCarloCount).appendC(' ').appendI(seed); +}this.setMoData(propertyList, moNumber, linearCombination, offset, isNegOffset, modelIndex, null, nbotype, isBeta); +surfaceObjectSeen = true; +continue; +case 1073742036: +propertyName = "nci"; +sbCommand.append(" " + propertyName); +tok = this.tokAt(i + 1); +var isPromolecular = (tok != 1228935687 && tok != 4 && tok != 1073742032); +propertyValue = Boolean.$valueOf(isPromolecular); +if (isPromolecular) surfaceObjectSeen = true; +break; +case 1073742016: +case 1073742022: +var isMep = (tok == 1073742016); +propertyName = (isMep ? "mep" : "mlp"); +sbCommand.append(" " + propertyName); +var fname = null; +var calcType = -1; +surfaceObjectSeen = true; +if (this.tokAt(i + 1) == 2) { +calcType = this.intParameter(++i); +sbCommand.append(" " + calcType); +this.addShapeProperty(propertyList, "mepCalcType", Integer.$valueOf(calcType)); +}if (this.tokAt(i + 1) == 4) { +fname = this.stringParameter(++i); +sbCommand.append(" /*file*/" + JU.PT.esc(fname)); +} else if (this.tokAt(i + 1) == 1715472409) { +mepOrMlp = propertyName; +continue; +}if (!this.chk) try { +data = (fname == null && isMep ? this.vwr.getOrCalcPartialCharges(bsSelect, bsIgnore) : this.getAtomicPotentials(bsSelect, bsIgnore, fname)); +} catch (e1) { +if (Clazz.exceptionOf(e1,"JV.JmolAsyncException")){ +throw new JS.ScriptInterruption(this.e, "partialcharge", 1); +} else { +throw e1; +} +} +if (!this.chk && data == null) this.error(32); +propertyValue = data; +break; +case 1312817669: +doCalcVolume = !this.chk; +sbCommand.append(" volume"); +break; +case 1073741974: +this.setShapeId(iShape, ++i, idSeen); +isWild = (this.getShapeProperty(iShape, "ID") == null); +i = eval.iToken; +break; +case 1073741888: +if (this.tokAt(i + 1) == 603979967) { +isColorSchemeTranslucent = true; +i++; +}colorScheme = this.paramAsStr(++i).toLowerCase(); +if (colorScheme.equals("sets")) { +sbCommand.append(" colorScheme \"sets\""); +} else if (eval.isColorParam(i)) { +colorScheme = eval.getColorRange(i); +i = eval.iToken; +}break; +case 1073741828: +propertyName = "addHydrogens"; +propertyValue = Boolean.TRUE; +sbCommand.append(" addHydrogens"); +break; +case 1073741836: +propertyName = "angstroms"; +sbCommand.append(" angstroms"); +break; +case 1073741837: +propertyName = "anisotropy"; +propertyValue = this.getPoint3f(++i, false); +sbCommand.append(" anisotropy").append(JU.Escape.eP(propertyValue)); +i = eval.iToken; +break; +case 1073741842: +doCalcArea = !this.chk; +sbCommand.append(" area"); +break; +case 1073741850: +case 1073742076: +surfaceObjectSeen = true; +if (isBicolor && !isPhased) { +sbCommand.append(" phase \"_orb\""); +this.addShapeProperty(propertyList, "phase", "_orb"); +}var nlmZprs = Clazz.newFloatArray (7, 0); +nlmZprs[0] = this.intParameter(++i); +nlmZprs[1] = this.intParameter(++i); +nlmZprs[2] = this.intParameter(++i); +nlmZprs[3] = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 6); +sbCommand.append(" atomicOrbital ").appendI(Clazz.floatToInt(nlmZprs[0])).append(" ").appendI(Clazz.floatToInt(nlmZprs[1])).append(" ").appendI(Clazz.floatToInt(nlmZprs[2])).append(" ").appendF(nlmZprs[3]); +if (this.tokAt(i + 1) == 134217751) { +i += 2; +nlmZprs[4] = this.intParameter(i); +nlmZprs[5] = (this.tokAt(i + 1) == 3 ? this.floatParameter(++i) : 0); +nlmZprs[6] = (this.tokAt(i + 1) == 2 ? this.intParameter(++i) : (-System.currentTimeMillis()) % 10000); +sbCommand.append(" points ").appendI(Clazz.floatToInt(nlmZprs[4])).appendC(' ').appendF(nlmZprs[5]).appendC(' ').appendI(Clazz.floatToInt(nlmZprs[6])); +}propertyName = "hydrogenOrbital"; +propertyValue = nlmZprs; +break; +case 1073741866: +sbCommand.append(" binary"); +continue; +case 1073741868: +sbCommand.append(" blockData"); +propertyName = "blockData"; +propertyValue = Boolean.TRUE; +break; +case 1073741875: +case 554176565: +haveSlab = true; +propertyName = eval.theToken.value; +propertyValue = this.getCapSlabObject(i, false); +i = eval.iToken; +break; +case 1073741876: +if (!isIsosurface) this.invArg(); +isCavity = true; +var cavityRadius = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 1.2); +var envelopeRadius = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 10); +if (this.chk) continue; +if (envelopeRadius > 50) { +eval.integerOutOfRange(0, 50); +return; +}sbCommand.append(" cavity ").appendF(cavityRadius).append(" ").appendF(envelopeRadius); +this.addShapeProperty(propertyList, "envelopeRadius", Float.$valueOf(envelopeRadius)); +this.addShapeProperty(propertyList, "cavityRadius", Float.$valueOf(cavityRadius)); +propertyName = "cavity"; +break; +case 1073741896: +case 1073741900: +propertyName = "contour"; +sbCommand.append(" contour"); +switch (this.tokAt(i + 1)) { +case 1073741920: +propertyValue = eval.floatParameterSet(i + 2, 1, 2147483647); +sbCommand.append(" discrete ").append(JU.Escape.eAF(propertyValue)); +i = eval.iToken; +break; +case 1073741981: +pt = this.getPoint3f(i + 2, false); +if (pt.z <= 0 || pt.y < pt.x) this.invArg(); +if (pt.z == Clazz.floatToInt(pt.z) && pt.z > (pt.y - pt.x)) pt.z = (pt.y - pt.x) / pt.z; +propertyValue = pt; +i = eval.iToken; +sbCommand.append(" increment ").append(JU.Escape.eP(pt)); +break; +default: +propertyValue = Integer.$valueOf(this.tokAt(i + 1) == 2 ? this.intParameter(++i) : 0); +sbCommand.append(" ").appendO(propertyValue); +if (this.tokAt(i + 1) == 2) { +this.addShapeProperty(propertyList, propertyName, propertyValue); +propertyValue = Integer.$valueOf(-Math.abs(this.intParameter(++i))); +sbCommand.append(" ").appendO(propertyValue); +}} +break; +case 1073741910: +sbCommand.append(" cutoff "); +if (this.tokAt(++i) == 268440577) { +propertyName = "cutoffPositive"; +propertyValue = Float.$valueOf(cutoff = this.floatParameter(++i)); +sbCommand.append("+").appendO(propertyValue); +} else if (this.isFloatParameter(i)) { +propertyName = "cutoff"; +propertyValue = Float.$valueOf(cutoff = this.floatParameter(i)); +sbCommand.appendO(propertyValue); +} else if (colorDensity) { +propertyName = "cutoffRange"; +propertyValue = eval.floatParameterSet(i, 2, 2); +this.addShapeProperty(propertyList, "cutoff", Float.$valueOf(0)); +sbCommand.append(JU.Escape.eAF(propertyValue)); +i = eval.iToken; +} else { +this.invArg(); +}break; +case 1073741928: +propertyName = "downsample"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +sbCommand.append(" downsample ").appendO(propertyValue); +break; +case 1073741931: +propertyName = "eccentricity"; +propertyValue = eval.getPoint4f(++i); +sbCommand.append(" eccentricity ").append(JU.Escape.eP4(propertyValue)); +i = eval.iToken; +break; +case 1073741932: +sbCommand.append(" ed"); +this.setMoData(propertyList, -1, null, 0, false, modelIndex, null, null, false); +surfaceObjectSeen = true; +continue; +case 536870916: +case 1073742041: +sbCommand.append(" ").appendO(eval.theToken.value); +propertyName = "debug"; +propertyValue = (tok == 536870916 ? Boolean.TRUE : Boolean.FALSE); +break; +case 12293: +sbCommand.append(" fixed"); +propertyName = "fixed"; +propertyValue = Boolean.TRUE; +break; +case 1073741962: +sbCommand.append(" fullPlane"); +propertyName = "fullPlane"; +propertyValue = Boolean.TRUE; +break; +case 1073741966: +case 1073741968: +var isFxyz = (tok == 1073741968); +propertyName = "" + eval.theToken.value; +var vxy = new JU.Lst(); +propertyValue = vxy; +isFxy = surfaceObjectSeen = true; +sbCommand.append(" ").append(propertyName); +var name = this.paramAsStr(++i); +if (name.equals("=")) { +sbCommand.append(" ="); +name = this.paramAsStr(++i); +sbCommand.append(" ").append(JU.PT.esc(name)); +vxy.addLast(name); +if (!this.chk) this.addShapeProperty(propertyList, "func", this.createFunction("__iso__", "x,y,z", name)); +break; +}var dName = JU.PT.getQuotedAttribute(eval.fullCommand, "# DATA" + (isFxy ? "2" : "")); +if (dName == null) dName = "inline"; + else name = dName; +var isXYZ = (name.indexOf("data2d_") == 0); +var isXYZV = (name.indexOf("data3d_") == 0); +isInline = name.equals("inline"); +sbCommand.append(" inline"); +vxy.addLast(name); +var pt3 = this.getPoint3f(++i, false); +sbCommand.append(" ").append(JU.Escape.eP(pt3)); +vxy.addLast(pt3); +var pt4; +ptX = ++eval.iToken; +vxy.addLast(pt4 = eval.getPoint4f(ptX)); +sbCommand.append(" ").append(JU.Escape.eP4(pt4)); +nX = Clazz.floatToInt(pt4.x); +ptY = ++eval.iToken; +vxy.addLast(pt4 = eval.getPoint4f(ptY)); +sbCommand.append(" ").append(JU.Escape.eP4(pt4)); +nY = Clazz.floatToInt(pt4.x); +vxy.addLast(pt4 = eval.getPoint4f(++eval.iToken)); +sbCommand.append(" ").append(JU.Escape.eP4(pt4)); +nZ = Clazz.floatToInt(pt4.x); +if (nX == 0 || nY == 0 || nZ == 0) this.invArg(); +if (!this.chk) { +var fdata = null; +var xyzdata = null; +if (isFxyz) { +if (isInline) { +nX = Math.abs(nX); +nY = Math.abs(nY); +nZ = Math.abs(nZ); +xyzdata = this.floatArraySetXYZ(++eval.iToken, nX, nY, nZ); +} else if (isXYZV) { +xyzdata = this.vwr.getDataObj(name, null, 3); +} else { +xyzdata = this.vwr.functionXYZ(name, nX, nY, nZ); +}nX = Math.abs(nX); +nY = Math.abs(nY); +nZ = Math.abs(nZ); +if (xyzdata == null) { +eval.iToken = ptX; +eval.errorStr(53, "xyzdata is null."); +}if (xyzdata.length != nX || xyzdata[0].length != nY || xyzdata[0][0].length != nZ) { +eval.iToken = ptX; +eval.errorStr(53, "xyzdata[" + xyzdata.length + "][" + xyzdata[0].length + "][" + xyzdata[0][0].length + "] is not of size [" + nX + "][" + nY + "][" + nZ + "]"); +}vxy.addLast(xyzdata); +sbCommand.append(" ").append(JU.Escape.e(xyzdata)); +} else { +if (isInline) { +nX = Math.abs(nX); +nY = Math.abs(nY); +fdata = this.floatArraySet(++eval.iToken, nX, nY); +} else if (isXYZ) { +fdata = this.vwr.getDataObj(name, null, 2); +nX = (fdata == null ? 0 : fdata.length); +nY = 3; +} else { +fdata = this.vwr.functionXY(name, nX, nY); +nX = Math.abs(nX); +nY = Math.abs(nY); +}if (fdata == null) { +eval.iToken = ptX; +eval.errorStr(53, "fdata is null."); +}if (fdata.length != nX && !isXYZ) { +eval.iToken = ptX; +eval.errorStr(53, "fdata length is not correct: " + fdata.length + " " + nX + "."); +}for (var j = 0; j < nX; j++) { +if (fdata[j] == null) { +eval.iToken = ptY; +eval.errorStr(53, "fdata[" + j + "] is null."); +}if (fdata[j].length != nY) { +eval.iToken = ptY; +eval.errorStr(53, "fdata[" + j + "] is not the right length: " + fdata[j].length + " " + nY + "."); +}} +vxy.addLast(fdata); +sbCommand.append(" ").append(JU.Escape.e(fdata)); +}}i = eval.iToken; +break; +case 1073742188: +var isBS = this.e.isAtomExpression(++i); +var probes = this.getAllPoints(i, 1); +sbCommand.append(" value " + (isBS ? this.e.atomExpressionAt(i).toString() : JU.Escape.eAP(probes))); +propertyName = "probes"; +propertyValue = probes; +i = this.e.iToken; +break; +case 1073741970: +propertyName = "gridPoints"; +sbCommand.append(" gridPoints"); +break; +case 1073741976: +propertyName = "ignore"; +propertyValue = bsIgnore = this.atomExpressionAt(++i); +sbCommand.append(" ignore ").append(JU.Escape.eBS(bsIgnore)); +i = eval.iToken; +break; +case 1073741985: +propertyName = "insideOut"; +sbCommand.append(" insideout"); +break; +case 1073741988: +case 1073741986: +case 1073742100: +sbCommand.append(" ").appendO(eval.theToken.value); +propertyName = "pocket"; +propertyValue = (tok == 1073742100 ? Boolean.TRUE : Boolean.FALSE); +break; +case 1073742002: +propertyName = "lobe"; +propertyValue = eval.getPoint4f(++i); +i = eval.iToken; +sbCommand.append(" lobe ").append(JU.Escape.eP4(propertyValue)); +surfaceObjectSeen = true; +break; +case 1073742004: +case 1073742006: +propertyName = "lp"; +propertyValue = eval.getPoint4f(++i); +i = eval.iToken; +sbCommand.append(" lp ").append(JU.Escape.eP4(propertyValue)); +surfaceObjectSeen = true; +break; +case 4125: +if (isMapped || this.slen == i + 1) this.invArg(); +isMapped = true; +if ((isCavity || haveRadius || haveIntersection) && !surfaceObjectSeen) { +surfaceObjectSeen = true; +this.addShapeProperty(propertyList, "bsSolvent", (haveRadius || haveIntersection ? new JU.BS() : eval.lookupIdentifierValue("solvent"))); +this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +}if (sbCommand.length() == 0) { +plane = this.getShapeProperty(24, "plane"); +if (plane == null) { +if (this.getShapeProperty(24, "contours") != null) { +this.addShapeProperty(propertyList, "nocontour", null); +}} else { +this.addShapeProperty(propertyList, "plane", plane); +sbCommand.append("plane ").append(JU.Escape.eP4(plane)); +planeSeen = true; +plane = null; +}} else if (!surfaceObjectSeen && !planeSeen) { +this.invArg(); +}sbCommand.append("; isosurface map"); +this.addShapeProperty(propertyList, "map", (surfaceObjectSeen ? Boolean.TRUE : Boolean.FALSE)); +break; +case 1073742014: +propertyName = "maxset"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +sbCommand.append(" maxSet ").appendO(propertyValue); +break; +case 1073742020: +propertyName = "minset"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +sbCommand.append(" minSet ").appendO(propertyValue); +break; +case 1073742112: +surfaceObjectSeen = true; +propertyName = "rad"; +propertyValue = eval.getPoint4f(++i); +i = eval.iToken; +sbCommand.append(" radical ").append(JU.Escape.eP4(propertyValue)); +break; +case 1073742027: +propertyName = "fixed"; +propertyValue = Boolean.FALSE; +sbCommand.append(" modelBased"); +break; +case 1073742028: +case 1073742135: +case 1612709912: +onlyOneModel = eval.theToken.value; +var radius; +if (tok == 1073742028) { +propertyName = "molecular"; +sbCommand.append(" molecular"); +radius = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 1.4); +} else { +this.addShapeProperty(propertyList, "bsSolvent", eval.lookupIdentifierValue("solvent")); +propertyName = (tok == 1073742135 ? "sasurface" : "solvent"); +sbCommand.append(" ").appendO(eval.theToken.value); +radius = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : this.vwr.getFloat(570425394)); +}sbCommand.append(" ").appendF(radius); +propertyValue = Float.$valueOf(radius); +if (this.tokAt(i + 1) == 1073741961) { +this.addShapeProperty(propertyList, "doFullMolecular", null); +sbCommand.append(" full"); +i++; +}surfaceObjectSeen = true; +break; +case 1073742032: +this.addShapeProperty(propertyList, "fileType", "Mrc"); +sbCommand.append(" mrc"); +continue; +case 1140850696: +var s = eval.stringParameter(++i); +this.addShapeProperty(propertyList, "fileType", s); +sbCommand.append(" type \"" + s + "\""); +continue; +case 1073742064: +case 1073742062: +this.addShapeProperty(propertyList, "fileType", "Obj"); +sbCommand.append(" obj"); +continue; +case 1073742033: +this.addShapeProperty(propertyList, "fileType", "Msms"); +sbCommand.append(" msms"); +continue; +case 1073742094: +if (surfaceObjectSeen) this.invArg(); +propertyName = "phase"; +isPhased = true; +propertyValue = (this.tokAt(i + 1) == 4 ? this.stringParameter(++i) : "_orb"); +sbCommand.append(" phase ").append(JU.PT.esc(propertyValue)); +break; +case 1073742104: +case 1073742122: +propertyName = "resolution"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" resolution ").appendO(propertyValue); +break; +case 1073742124: +propertyName = "reverseColor"; +propertyValue = Boolean.TRUE; +sbCommand.append(" reversecolor"); +break; +case 1073742127: +case 1073742146: +propertyName = "sigma"; +propertyValue = Float.$valueOf(sigma = this.floatParameter(++i)); +sbCommand.append(" sigma ").appendO(propertyValue); +break; +case 1112150021: +propertyName = "geodesic"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" geosurface ").appendO(propertyValue); +surfaceObjectSeen = true; +break; +case 1073742154: +propertyName = "sphere"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" sphere ").appendO(propertyValue); +surfaceObjectSeen = true; +break; +case 1073742156: +propertyName = "squareData"; +propertyValue = Boolean.TRUE; +sbCommand.append(" squared"); +break; +case 1073741984: +propertyName = (!surfaceObjectSeen && !planeSeen && !isMapped ? "readFile" : "mapColor"); +str = this.stringParameter(++i); +if (str == null) this.invArg(); +if (isPmesh) str = JU.PT.replaceWithCharacter(str, "{,}|", ' '); +if (eval.debugHigh) JU.Logger.debug("pmesh inline data:\n" + str); +propertyValue = (this.chk ? null : str); +this.addShapeProperty(propertyList, "fileName", ""); +sbCommand.append(" INLINE ").append(JU.PT.esc(str)); +surfaceObjectSeen = true; +break; +case 268437504: +case 1073742195: +case 7: +if (filesData != null || isWild) this.invArg(); +var list = eval.listParameter4(i, 2, 2147483647, true); +i = eval.iToken; +var n = Clazz.doubleToInt(list.size() / 2); +if (n == 0 || n * 2 != list.size()) this.invArg(); +var files = new Array(n); +var factors = Clazz.newFloatArray (n, 0); +sbCommand.append("["); +try { +for (var j = 0, ptf = 0; j < n; j++) { +factors[j] = (list.get(ptf++)).floatValue(); +files[j] = this.e.checkFileExists("ISOSURFACE_" + j + "_", false, list.get(ptf++), i, false); +sbCommand.appendF(factors[j]); +sbCommand.append(" /*file*/").append(JU.PT.esc(files[j])); +} +sbCommand.append("]"); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.invArg(); +} else { +throw e; +} +} +filesData = Clazz.newArray(-1, [files, factors]); +propertyName = (!surfaceObjectSeen && !planeSeen && !isMapped ? "readFile" : "mapColor"); +surfaceObjectSeen = true; +if (this.chk) break; +this.addShapeProperty(propertyList, "filesData", filesData); +break; +case 545259556: +case 545259557: +case 1073741914: +case 4: +var firstPass = (!surfaceObjectSeen && !planeSeen); +var filename = null; +propertyName = (firstPass && !isMapped ? "readFile" : "mapColor"); +if (tok == 4) { +filename = this.paramAsStr(i); +var ipt = filename.indexOf("::"); +if (ipt > 0) { +var ftype = filename.substring(0, ipt); +ftype = ftype.substring(0, 1).toUpperCase() + ftype.substring(1).toLowerCase(); +this.addShapeProperty(propertyList, "fileType", ftype); +filename = filename.substring(ipt + 2); +}} else if (tok == 1073741914) { +filename = "=density/"; +}if (filename == null || filename.length == 0 || filename.equals("*") || filename.equals("=")) { +var pdbID = this.vwr.getPdbID(); +if (pdbID == null) eval.errorStr(22, "no PDBID available"); +filename = "*" + (tok == 545259557 ? "*" : "") + pdbID; +}var checkWithin = false; +if (filename.startsWith("http://eds.bmc.uu.se/eds/dfs/cb/") && filename.endsWith(".omap")) { +filename = (filename.indexOf("_diff") >= 0 ? "*" : "") + "*" + filename.substring(32, 36); +}if (filename.startsWith("*") || filename.startsWith("=")) { +var haveCutoff = (!Float.isNaN(cutoff) || !Float.isNaN(sigma)); +var isFull = (filename.indexOf("/full") >= 0); +if (isFull) filename = JU.PT.rep(filename, "/full", ""); +if (filename.indexOf("/diff") >= 0) filename = "*" + filename.substring(0, filename.indexOf("/diff")); +if (filename.startsWith("**")) { +if (!haveCutoff) this.addShapeProperty(propertyList, "sigma", Float.$valueOf(sigma = 3)); +if (!isSign) { +isSign = true; +sbCommand.append(" sign"); +this.addShapeProperty(propertyList, "sign", Boolean.TRUE); +}}var fn = filename; +filename = this.vwr.setLoadFormat(false, filename, (this.chk ? '?' : isFull ? '_' : '-'), false); +if (filename == null) eval.errorStr(22, "error parsing filename: " + fn); +checkWithin = !isFull; +}if (checkWithin) { +if (pts == null && ptWithin == 0) { +onlyOneModel = filename; +if (modelIndex < 0) modelIndex = this.vwr.am.cmi; +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +if (bs.nextSetBit(0) >= 0) { +pts = this.getWithinDistanceVector(propertyList, 2.0, null, bs, false); +sbCommand.append(" within 2.0 ").append(JU.Escape.eBS(bs)); +}}if (pts != null && filename.indexOf("/0,0,0/0,0,0?") >= 0) { +filename = filename.$replace("0,0,0/0,0,0", pts[0].x + "," + pts[0].y + "," + pts[0].z + "/" + pts[pts.length - 1].x + "," + pts[pts.length - 1].y + "," + pts[pts.length - 1].z); +}if (firstPass) defaultMesh = true; +}var p = (filename == null ? -1 : filename.indexOf("#-")); +if (Float.isNaN(sigma) && Float.isNaN(cutoff)) { +if ((p = filename.indexOf("#-cutoff=")) >= 0) { +this.addShapeProperty(propertyList, "cutoff", Float.$valueOf(cutoff = Float.parseFloat(filename.substring(p + 9)))); +sbCommand.append(" cutoff " + cutoff); +} else if ((p = filename.indexOf("#-sigma=")) >= 0) { +this.addShapeProperty(propertyList, "sigma", Float.$valueOf(sigma = Float.parseFloat(filename.substring(p + 8)))); +sbCommand.append(" sigma " + sigma); +}}if (!Float.isNaN(sigma)) this.showString("using sigma = " + sigma); + else if (!Float.isNaN(cutoff)) this.showString("using cutoff = " + cutoff); +if (firstPass && this.vwr.getP("_fileType").equals("Pdb") && Float.isNaN(sigma) && Float.isNaN(cutoff)) { +this.addShapeProperty(propertyList, "sigma", Float.$valueOf(-1)); +sbCommand.append(" sigma -1.0"); +}if (filename.length == 0) { +if (modelIndex < 0) modelIndex = this.vwr.am.cmi; +filename = eval.getFullPathName(false); +propertyValue = this.vwr.ms.getInfo(modelIndex, "jmolSurfaceInfo"); +}var fileIndex = -1; +if (propertyValue == null && this.tokAt(i + 1) == 2) this.addShapeProperty(propertyList, "fileIndex", Integer.$valueOf(fileIndex = this.intParameter(++i))); +var stype = (this.tokAt(i + 1) == 4 ? this.stringParameter(++i) : null); +surfaceObjectSeen = true; +if (this.chk) { +break; +}var fullPathNameOrError; +var localName = null; +if (propertyValue == null) { +if (eval.fullCommand.indexOf("# FILE" + nFiles + "=") >= 0) { +filename = JU.PT.getQuotedAttribute(eval.fullCommand, "# FILE" + nFiles); +if (this.tokAt(i + 1) == 1073741848) i += 2; +} else if (this.tokAt(i + 1) == 1073741848) { +localName = this.vwr.fm.getFilePath(this.stringParameter(eval.iToken = (i = i + 2)), false, false); +fullPathNameOrError = this.vwr.getFullPathNameOrError(localName); +localName = fullPathNameOrError[0]; +if (this.vwr.fm.getPathForAllFiles() !== "") { +filename = localName; +localName = null; +} else { +this.addShapeProperty(propertyList, "localName", localName); +}}}if (stype == null) { +filename = this.e.checkFileExists("ISOSURFACE_" + (isMapped ? "MAP_" : ""), false, filename, i, false); +}this.showString("reading isosurface data from " + filename); +if (stype != null) { +propertyValue = this.vwr.fm.cacheGet(filename, false); +this.addShapeProperty(propertyList, "calculationType", stype); +}if (propertyValue == null) { +this.addShapeProperty(propertyList, "fileName", filename); +if (localName != null) filename = localName; +if (fileIndex >= 0) sbCommand.append(" ").appendI(fileIndex); +}sbCommand.append(" /*file*/").append(JU.PT.esc(filename)); +if (stype != null) sbCommand.append(" ").append(JU.PT.esc(stype)); +break; +case 4106: +propertyName = "connections"; +switch (this.tokAt(++i)) { +case 12290: +case 10: +case 1073742325: +propertyValue = Clazz.newIntArray(-1, [this.atomExpressionAt(i).nextSetBit(0)]); +break; +default: +propertyValue = Clazz.newIntArray(-1, [Clazz.floatToInt(eval.floatParameterSet(i, 1, 1)[0])]); +break; +} +i = eval.iToken; +break; +case 1094713347: +propertyName = "atomIndex"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +break; +case 1073741999: +propertyName = "link"; +sbCommand.append(" link"); +break; +case 1814695966: +if (iShape != 24) this.invArg(); +if (this.tokAt(i + 1) == 268440577) i++; +propertyName = "extendGrid"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" unitcell " + propertyValue); +break; +case 1073741994: +if (iShape != 24) this.invArg(); +pt = this.getPoint3f(++i, false); +i = eval.iToken; +if (pt.x <= 0 || pt.y <= 0 || pt.z <= 0) break; +pt.x = Clazz.floatToInt(pt.x); +pt.y = Clazz.floatToInt(pt.y); +pt.z = Clazz.floatToInt(pt.z); +sbCommand.append(" lattice ").append(JU.Escape.eP(pt)); +if (isMapped) { +propertyName = "mapLattice"; +propertyValue = pt; +} else { +lattice = pt; +if (this.tokAt(i + 1) == 12293) { +sbCommand.append(" fixed"); +fixLattice = true; +i++; +}}break; +default: +if (tok == 1073741824) { +propertyName = "thisID"; +propertyValue = str; +}if (!eval.setMeshDisplayProperty(iShape, 0, tok)) { +if (JS.T.tokAttr(tok, 1073741824) && !idSeen) { +this.setShapeId(iShape, i, idSeen); +i = eval.iToken; +break; +}this.invArg(); +}if (iptDisplayProperty == 0) iptDisplayProperty = i; +i = this.slen - 1; +break; +} +idSeen = (tok != 12291); +if (isWild && surfaceObjectSeen) this.invArg(); +if (propertyName != null) this.addShapeProperty(propertyList, propertyName, propertyValue); +} +if (!this.chk) { +if ((isCavity || haveRadius) && !surfaceObjectSeen) { +surfaceObjectSeen = true; +this.addShapeProperty(propertyList, "bsSolvent", (haveRadius ? new JU.BS() : eval.lookupIdentifierValue("solvent"))); +this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +}if (planeSeen && !surfaceObjectSeen && !isMapped) { +this.addShapeProperty(propertyList, "nomap", Float.$valueOf(0)); +surfaceObjectSeen = true; +}if (thisSet != null) this.addShapeProperty(propertyList, "getSurfaceSets", thisSet); +if (discreteColixes != null) { +this.addShapeProperty(propertyList, "colorDiscrete", discreteColixes); +} else if ("sets".equals(colorScheme)) { +this.addShapeProperty(propertyList, "setColorScheme", null); +} else if (colorScheme != null) { +var ce = this.vwr.cm.getColorEncoder(colorScheme); +if (ce != null) { +ce.isTranslucent = isColorSchemeTranslucent; +ce.hi = 3.4028235E38; +this.addShapeProperty(propertyList, "remapColor", ce); +}}if (surfaceObjectSeen && !isLcaoCartoon && sbCommand.indexOf(";") != 0) { +propertyList.add(0, Clazz.newArray(-1, ["newObject", null])); +var needSelect = (bsSelect == null); +if (needSelect) bsSelect = JU.BSUtil.copy(this.vwr.bsA()); +if (modelIndex < 0) modelIndex = this.vwr.am.cmi; +bsSelect.and(this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +if (onlyOneModel != null) { +var bsModels = this.vwr.ms.getModelBS(bsSelect, false); +if (bsModels.cardinality() > 1) eval.errorStr(30, "ISOSURFACE " + onlyOneModel); +if (needSelect) { +propertyList.add(0, Clazz.newArray(-1, ["select", bsSelect])); +if (sbCommand.indexOf("; isosurface map") == 0) { +sbCommand = new JU.SB().append("; isosurface map select ").append(JU.Escape.eBS(bsSelect)).append(sbCommand.substring(16)); +}}}}if (haveIntersection && !haveSlab) { +if (!surfaceObjectSeen) this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +if (!isMapped) { +this.addShapeProperty(propertyList, "map", Boolean.TRUE); +this.addShapeProperty(propertyList, "select", bs); +this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +}this.addShapeProperty(propertyList, "slab", this.getCapSlabObject(-100, false)); +}var timeMsg = (surfaceObjectSeen && this.vwr.getBoolean(603979934)); +if (timeMsg) JU.Logger.startTimer("isosurface"); +this.setShapeProperty(iShape, "setProperties", propertyList); +if (timeMsg) this.showString(JU.Logger.getTimerMsg("isosurface", 0)); +if (defaultMesh) { +this.setShapeProperty(iShape, "token", Integer.$valueOf(1073742018)); +this.setShapeProperty(iShape, "token", Integer.$valueOf(1073742046)); +isFrontOnly = true; +sbCommand.append(" mesh nofill frontOnly"); +}}if (lattice != null) { +this.setShapeProperty(iShape, "lattice", lattice); +if (fixLattice) this.setShapeProperty(iShape, "fixLattice", Boolean.TRUE); +}if (symops != null) this.setShapeProperty(iShape, "symops", symops); +if (isFrontOnly) this.setShapeProperty(iShape, "token", Integer.$valueOf(1073741960)); +if (iptDisplayProperty > 0) { +if (!eval.setMeshDisplayProperty(iShape, iptDisplayProperty, 0)) this.invArg(); +}if (this.chk) return; +var area = null; +var volume = null; +if (doCalcArea) { +area = this.getShapeProperty(iShape, "area"); +if (Clazz.instanceOf(area, Float)) this.vwr.setFloatProperty("isosurfaceArea", (area).floatValue()); + else this.vwr.g.setUserVariable("isosurfaceArea", JS.SV.getVariableAD(area)); +}if (doCalcVolume) { +volume = (doCalcVolume ? this.getShapeProperty(iShape, "volume") : null); +if (Clazz.instanceOf(volume, Float)) this.vwr.setFloatProperty("isosurfaceVolume", (volume).floatValue()); + else this.vwr.g.setUserVariable("isosurfaceVolume", JS.SV.getVariableAD(volume)); +}if (!isLcaoCartoon) { +var s = null; +if (isMapped && !surfaceObjectSeen) { +this.setShapeProperty(iShape, "finalize", sbCommand.toString()); +} else if (surfaceObjectSeen) { +cmd = sbCommand.toString(); +this.setShapeProperty(iShape, "finalize", (cmd.indexOf("; isosurface map") == 0 ? "" : " select " + JU.Escape.eBS(bsSelect) + " ") + cmd); +s = this.getShapeProperty(iShape, "ID"); +if (s != null && !eval.tQuiet && !isSilent) { +cutoff = (this.getShapeProperty(iShape, "cutoff")).floatValue(); +if (Float.isNaN(cutoff) && !Float.isNaN(sigma)) JU.Logger.error("sigma not supported"); +s += " created " + this.getShapeProperty(iShape, "message"); +}}var sarea; +var svol; +if (doCalcArea || doCalcVolume) { +sarea = (doCalcArea ? "isosurfaceArea = " + (Clazz.instanceOf(area, Float) ? "" + area : JU.Escape.eAD(area)) : null); +svol = (doCalcVolume ? "isosurfaceVolume = " + (Clazz.instanceOf(volume, Float) ? "" + volume : JU.Escape.eAD(volume)) : null); +if (s == null) { +if (doCalcArea) this.showString(sarea); +if (doCalcVolume) this.showString(svol); +} else { +if (doCalcArea) s += "\n" + sarea; +if (doCalcVolume) s += "\n" + svol; +}}if (s != null && !isSilent) this.showString(s); +if (surfaceObjectSeen) { +s = this.getShapeProperty(iShape, "output"); +if (s != null && !isSilent) this.showString(s); +}}if (translucency != null) this.setShapeProperty(iShape, "translucency", translucency); +this.setShapeProperty(iShape, "clear", null); +if (toCache) this.setShapeProperty(iShape, "cache", null); +if (!isSilent && !isDisplay && !haveSlab && eval.theTok != 12291) this.listIsosurface(iShape); +}, "~N"); +Clazz.defineMethod(c$, "lcaoCartoon", +function(){ +var eval = this.e; +eval.sm.loadShape(26); +if (eval.tokAt(1) == 1073742001 && this.listIsosurface(26)) return; +this.setShapeProperty(26, "init", eval.fullCommand); +if (this.slen == 1) { +this.setShapeProperty(26, "lcaoID", null); +return; +}var idSeen = false; +var translucency = null; +for (var i = 1; i < this.slen; i++) { +var propertyName = null; +var propertyValue = null; +switch (this.getToken(i).tok) { +case 1073741875: +case 554176565: +propertyName = eval.theToken.value; +if (this.tokAt(i + 1) == 1073742334) eval.iToken = i + 1; +propertyValue = this.getCapSlabObject(i, true); +i = eval.iToken; +break; +case 12289: +this.isosurface(26); +return; +case 528432: +var degx = 0; +var degy = 0; +var degz = 0; +switch (this.getToken(++i).tok) { +case 1111492629: +degx = (this.floatParameter(++i) * 0.017453292519943295); +break; +case 1111492630: +degy = (this.floatParameter(++i) * 0.017453292519943295); +break; +case 1111492631: +degz = (this.floatParameter(++i) * 0.017453292519943295); +break; +default: +this.invArg(); +} +propertyName = "rotationAxis"; +propertyValue = JU.V3.new3(degx, degy, degz); +break; +case 1073742335: +case 1610625028: +case 2097192: +propertyName = "on"; +break; +case 1073742334: +case 12294: +case 2097194: +propertyName = "off"; +break; +case 12291: +propertyName = "delete"; +break; +case 12290: +case 10: +case 1073742325: +propertyName = "select"; +propertyValue = this.atomExpressionAt(i); +i = eval.iToken; +break; +case 1140850693: +propertyName = "reversecolor"; +propertyValue = Boolean.TRUE; +if (this.tokAt(i + 1) == 1073742335) { +++i; +} else if (this.tokAt(i + 1) == 1073742334) { +propertyValue = Boolean.FALSE; +++i; +}break; +case 1765808134: +translucency = this.setColorOptions(null, i + 1, 26, -2); +if (translucency != null) this.setShapeProperty(26, "settranslucency", translucency); +i = eval.iToken; +idSeen = true; +continue; +case 603979967: +case 1073742074: +eval.setMeshDisplayProperty(26, i, eval.theTok); +i = eval.iToken; +idSeen = true; +continue; +case 1112152075: +case 4: +propertyValue = this.paramAsStr(i).toLowerCase(); +if (propertyValue.equals("spacefill")) propertyValue = "cpk"; +propertyName = "create"; +if (eval.optParameterAsString(i + 1).equalsIgnoreCase("molecular")) { +i++; +propertyName = "molecular"; +}break; +case 1275082241: +if (eval.isAtomExpression(i + 1)) { +propertyName = "select"; +propertyValue = this.atomExpressionAt(i + 1); +i = eval.iToken; +} else { +propertyName = "selectType"; +propertyValue = this.paramAsStr(++i); +if (propertyValue.equals("spacefill")) propertyValue = "cpk"; +}break; +case 536875059: +propertyName = "scale"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1073742004: +case 1073742006: +propertyName = "lonePair"; +break; +case 1073742112: +case 1073742111: +propertyName = "radical"; +break; +case 1073742028: +propertyName = "molecular"; +break; +case 1073741904: +propertyValue = this.paramAsStr(++i); +propertyName = "create"; +if (eval.optParameterAsString(i + 1).equalsIgnoreCase("molecular")) { +i++; +propertyName = "molecular"; +}break; +case 1073741974: +propertyValue = eval.setShapeNameParameter(++i); +i = eval.iToken; +if (idSeen) this.invArg(); +propertyName = "lcaoID"; +break; +default: +if (eval.theTok == 268441089 || JS.T.tokAttr(eval.theTok, 1073741824)) { +if (eval.theTok != 268441089) propertyValue = this.paramAsStr(i); +if (idSeen) this.invArg(); +propertyName = "lcaoID"; +break; +}break; +} +if (eval.theTok != 12291) idSeen = true; +if (propertyName == null) this.invArg(); +this.setShapeProperty(26, propertyName, propertyValue); +} +this.setShapeProperty(26, "clear", null); +}); +Clazz.defineMethod(c$, "contact", +function(){ +var eval = this.e; +eval.sm.loadShape(25); +if (this.tokAt(1) == 1073742001 && this.listIsosurface(25)) return false; +var iptDisplayProperty = 0; +eval.iToken = 1; +var thisId = this.initIsosurface(25); +var idSeen = (thisId != null); +var isWild = (idSeen && this.getShapeProperty(25, "ID") == null); +var bsA = null; +var bsB = null; +var bs = null; +var rd = null; +var params = null; +var colorDensity = false; +var sbCommand = new JU.SB(); +var minSet = 2147483647; +var displayType = 134217750; +var contactType = 0; +var distance = NaN; +var saProbeRadius = NaN; +var localOnly = true; +var intramolecular = null; +var userSlabObject = null; +var colorpt = 0; +var colorByType = false; +var tok; +var modelIndex = -2147483648; +var okNoAtoms = (eval.iToken > 1); +for (var i = eval.iToken; i < this.slen; ++i) { +switch (tok = this.getToken(i).tok) { +default: +okNoAtoms = true; +if (!eval.setMeshDisplayProperty(25, 0, eval.theTok)) { +if (eval.theTok != 268441089 && !JS.T.tokAttr(eval.theTok, 1073741824)) this.invArg(); +thisId = this.setShapeId(25, i, idSeen); +i = eval.iToken; +break; +}if (iptDisplayProperty == 0) iptDisplayProperty = i; +i = eval.iToken; +continue; +case 1073741974: +okNoAtoms = true; +this.setShapeId(25, ++i, idSeen); +isWild = (this.getShapeProperty(25, "ID") == null); +i = eval.iToken; +break; +case 1765808134: +switch (this.tokAt(i + 1)) { +case 1073741914: +tok = 0; +colorDensity = true; +sbCommand.append(" color density"); +i++; +break; +case 1140850696: +tok = 0; +colorByType = true; +sbCommand.append(" color type"); +i++; +break; +} +if (tok == 0) break; +case 603979967: +case 1073742074: +okNoAtoms = true; +if (colorpt == 0) colorpt = i; +eval.setMeshDisplayProperty(25, i, eval.theTok); +i = eval.iToken; +break; +case 554176565: +okNoAtoms = true; +userSlabObject = this.getCapSlabObject(i, false); +this.setShapeProperty(25, "slab", userSlabObject); +i = eval.iToken; +break; +case 1073741914: +colorDensity = true; +sbCommand.append(" density"); +if (this.isFloatParameter(i + 1)) { +if (params == null) params = Clazz.newFloatArray (1, 0); +params[0] = -Math.abs(this.floatParameter(++i)); +sbCommand.append(" " + -params[0]); +}break; +case 1073742122: +var resolution = this.floatParameter(++i); +if (resolution > 0) { +sbCommand.append(" resolution ").appendF(resolution); +this.setShapeProperty(25, "resolution", Float.$valueOf(resolution)); +}break; +case 1094717454: +case 1094713359: +modelIndex = (eval.theTok == 1094713359 ? this.intParameter(++i) : eval.modelNumberParameter(++i)); +sbCommand.append(" modelIndex " + modelIndex); +break; +case 134217759: +case 1275069443: +distance = this.floatParameter(++i); +sbCommand.append(" within ").appendF(distance); +break; +case 268440577: +case 2: +case 3: +rd = eval.encodeRadiusParameter(i, false, false); +if (rd == null) return false; +sbCommand.append(" ").appendO(rd); +i = eval.iToken; +break; +case 1073741990: +case 1073741989: +intramolecular = (tok == 1073741989 ? Boolean.TRUE : Boolean.FALSE); +sbCommand.append(" ").appendO(eval.theToken.value); +break; +case 1073742020: +minSet = this.intParameter(++i); +break; +case 1613238294: +case 1073741881: +case 1648363544: +contactType = tok; +sbCommand.append(" ").appendO(eval.theToken.value); +break; +case 1073742135: +if (this.isFloatParameter(i + 1)) saProbeRadius = this.floatParameter(++i); +case 1073741875: +case 1073742036: +case 2097180: +localOnly = false; +case 1275068932: +case 1073741961: +case 134217750: +case 4106: +displayType = tok; +sbCommand.append(" ").appendO(eval.theToken.value); +if (tok == 1073742135) sbCommand.append(" ").appendF(saProbeRadius); +break; +case 1073742083: +params = eval.floatParameterSet(++i, 1, 10); +i = eval.iToken; +break; +case 12290: +case 10: +case 1073742325: +if (isWild || bsB != null) this.invArg(); +bs = JU.BSUtil.copy(this.atomExpressionAt(i)); +i = eval.iToken; +if (bsA == null) bsA = bs; + else bsB = bs; +sbCommand.append(" ").append(JU.Escape.eBS(bs)); +break; +} +idSeen = (eval.theTok != 12291); +} +if (!okNoAtoms && bsA == null) this.error(13); +if (this.chk) return false; +if (bsA != null) { +if (contactType == 1648363544 && rd == null) rd = new J.atomdata.RadiusData(null, 0, J.atomdata.RadiusData.EnumType.OFFSET, J.c.VDW.AUTO); +var rd1 = (rd == null ? new J.atomdata.RadiusData(null, 0.26, J.atomdata.RadiusData.EnumType.OFFSET, J.c.VDW.AUTO) : rd); +if (displayType == 1073742036 && bsB == null && intramolecular != null && intramolecular.booleanValue()) bsB = bsA; + else bsB = eval.getMathExt().setContactBitSets(bsA, bsB, localOnly, distance, rd1, true); +switch (displayType) { +case 1073741875: +case 1073742135: +var bsSolvent = eval.lookupIdentifierValue("solvent"); +bsA.andNot(bsSolvent); +bsB.andNot(bsSolvent); +bsB.andNot(bsA); +break; +case 2097180: +bsB.andNot(bsA); +break; +case 1073742036: +if (minSet == 2147483647) minSet = 100; +this.setShapeProperty(25, "minset", Integer.$valueOf(minSet)); +sbCommand.append(" minSet ").appendI(minSet); +if (params == null) params = Clazz.newFloatArray(-1, [0.5, 2]); +} +if (intramolecular != null) { +params = (params == null ? Clazz.newFloatArray (2, 0) : JU.AU.ensureLengthA(params, 2)); +params[1] = (intramolecular.booleanValue() ? 1 : 2); +}if (params != null) sbCommand.append(" parameters ").append(JU.Escape.eAF(params)); +this.setShapeProperty(25, "set", Clazz.newArray(-1, [Integer.$valueOf(contactType), Integer.$valueOf(displayType), Boolean.$valueOf(colorDensity), Boolean.$valueOf(colorByType), bsA, bsB, rd, Float.$valueOf(saProbeRadius), params, Integer.$valueOf(modelIndex), sbCommand.toString()])); +if (colorpt > 0) eval.setMeshDisplayProperty(25, colorpt, 0); +}if (iptDisplayProperty > 0) { +if (!eval.setMeshDisplayProperty(25, iptDisplayProperty, 0)) this.invArg(); +}if (userSlabObject != null && bsA != null) this.setShapeProperty(25, "slab", userSlabObject); +if (bsA != null && (displayType == 1073742036 || localOnly)) { +var volume = this.getShapeProperty(25, "volume"); +var v; +var isFull = (displayType == 1073741961); +if (JU.AU.isAD(volume)) { +var vs = volume; +v = 0; +for (var i = 0; i < vs.length; i++) v += (isFull ? vs[i] : Math.abs(vs[i])); + +} else { +v = (volume).floatValue(); +}v = (Math.round(v * 1000) / 1000.); +if (colorDensity || displayType != 1275068932) { +var nsets = (this.getShapeProperty(25, "nSets")).intValue(); +var s = "Contacts: " + (nsets < 0 ? Clazz.doubleToInt(-nsets / 2) : nsets); +if (v != 0) s += ", with " + (isFull ? "approx " : "net ") + "volume " + v + " A^3"; +this.showString(s); +}}return true; +}); +Clazz.defineMethod(c$, "cgo", +function(){ +var eval = this.e; +eval.sm.loadShape(23); +if (this.tokAt(1) == 1073742001 && this.listIsosurface(23)) return false; +var iptDisplayProperty = 0; +var thisId = this.initIsosurface(23); +var idSeen = (thisId != null); +var isWild = (idSeen && this.getShapeProperty(23, "ID") == null); +var isInitialized = false; +var modelIndex = -1; +var data = null; +var translucentLevel = 3.4028235E38; +var colorArgb = Clazz.newIntArray(-1, [-2147483648]); +var intScale = 0; +for (var i = eval.iToken; i < this.slen; ++i) { +var propertyName = null; +var propertyValue = null; +var tok = this.getToken(i).tok; +switch (tok) { +case 268437504: +case 1073742195: +case 7: +if (data != null || isWild) this.invArg(); +data = new JU.Lst(); +var ai = Clazz.newIntArray(-1, [i, this.slen]); +if (!eval.getShapePropertyData(23, "data", Clazz.newArray(-1, [this.st, ai, data, this.vwr]))) this.invArg(); +i = ai[0]; +continue; +case 536875059: +if (++i >= this.slen) this.error(34); +switch (this.getToken(i).tok) { +case 2: +intScale = this.intParameter(i); +continue; +case 3: +intScale = Math.round(this.floatParameter(i) * 100); +continue; +} +this.error(34); +break; +case 12293: +propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(-1); +break; +case 1094713359: +case 1094717454: +modelIndex = (eval.theTok == 1094713359 ? this.intParameter(++i) : eval.modelNumberParameter(++i)); +propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(modelIndex); +break; +case 1765808134: +case 603979967: +case 1073742074: +translucentLevel = this.getColorTrans(eval, i, false, colorArgb); +i = eval.iToken; +idSeen = true; +continue; +case 1073741974: +thisId = this.setShapeId(23, ++i, idSeen); +isWild = (this.getShapeProperty(23, "ID") == null); +i = eval.iToken; +break; +default: +if (!eval.setMeshDisplayProperty(23, 0, eval.theTok)) { +if (eval.theTok == 268441089 || JS.T.tokAttr(eval.theTok, 1073741824)) { +thisId = this.setShapeId(23, i, idSeen); +i = eval.iToken; +break; +}this.invArg(); +}if (iptDisplayProperty == 0) iptDisplayProperty = i; +i = eval.iToken; +continue; +} +idSeen = (eval.theTok != 12291); +if (data != null && !isInitialized) { +propertyName = "points"; +propertyValue = Integer.$valueOf(intScale); +isInitialized = true; +intScale = 0; +}if (propertyName != null) this.setShapeProperty(23, propertyName, propertyValue); +} +this.finalizeObject(23, colorArgb[0], translucentLevel, intScale, data != null, data, iptDisplayProperty, null); +return true; +}); +Clazz.defineMethod(c$, "getAtomicPotentials", +function(bsSelected, bsIgnore, fileName){ +var potentials = Clazz.newFloatArray (this.vwr.ms.ac, 0); +var m = J.api.Interface.getOption("quantum.MlpCalculation", this.vwr, "script"); +m.set(this.vwr); +var data = (fileName == null ? null : this.vwr.getFileAsString3(fileName, false, null)); +try { +m.assignPotentials(this.vwr.ms.at, potentials, this.vwr.getSmartsMatch("a", bsSelected), this.vwr.getSmartsMatch("/noAromatic/[$(C=O),$(O=C),$(NC=O)]", bsSelected), bsIgnore, data); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return potentials; +}, "JU.BS,JU.BS,~S"); +Clazz.defineMethod(c$, "getCapSlabObject", +function(i, isLcaoCartoon){ +if (i < 0) { +return JU.TempArray.getSlabWithinRange(i, 0); +}var eval = this.e; +var data = null; +var tok0 = this.tokAt(i); +var isSlab = (tok0 == 554176565); +var tok = this.tokAt(i + 1); +var plane = null; +var pts = null; +var d; +var d2; +var bs = null; +var slabColix = null; +var slabMeshType = null; +if (tok == 603979967) { +var slabTranslucency = (this.isFloatParameter(++i + 1) ? this.floatParameter(++i) : 0.5); +if (eval.isColorParam(i + 1)) { +slabColix = Short.$valueOf(JU.C.getColixTranslucent3(JU.C.getColix(eval.getArgbParam(i + 1)), slabTranslucency != 0, slabTranslucency)); +i = eval.iToken; +} else { +slabColix = Short.$valueOf(JU.C.getColixTranslucent3(1, slabTranslucency != 0, slabTranslucency)); +}switch (tok = this.tokAt(i + 1)) { +case 1073742018: +case 1073741938: +slabMeshType = Integer.$valueOf(tok); +tok = this.tokAt(++i + 1); +break; +default: +slabMeshType = Integer.$valueOf(1073741938); +break; +} +}switch (tok) { +case 1073742334: +eval.iToken = i + 1; +return Integer.$valueOf(-2147483648); +case 1073742333: +eval.iToken = i + 1; +break; +case 1073742330: +i++; +data = Clazz.newArray(-1, [Float.$valueOf(1), this.paramAsStr(++i)]); +tok = 1073742018; +break; +case 134217759: +i++; +if (this.tokAt(++i) == 1073742114) { +d = this.floatParameter(++i); +d2 = this.floatParameter(++i); +data = Clazz.newArray(-1, [Float.$valueOf(d), Float.$valueOf(d2)]); +tok = 1073742114; +} else if (this.isFloatParameter(i)) { +d = this.floatParameter(i); +if (eval.isCenterParameter(++i)) { +var ret = new Array(1); +var pt = eval.centerParameter(i, ret); +if (this.chk || !(Clazz.instanceOf(ret[0],"JU.BS"))) { +pts = Clazz.newArray(-1, [pt]); +} else { +var atoms = this.vwr.ms.at; +bs = ret[0]; +pts = new Array(bs.cardinality()); +for (var k = 0, j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1), k++) pts[k] = atoms[j]; + +}} else { +pts = eval.getPointArray(i, -1, false); +}if (pts.length == 0) { +eval.iToken = i; +this.invArg(); +}data = Clazz.newArray(-1, [Float.$valueOf(d), pts, bs]); +} else { +data = eval.getPointArray(i, 4, false); +tok = 1812599299; +}break; +case 1812599299: +eval.iToken = i + 1; +data = JU.BoxInfo.toOABC(this.vwr.ms.getBBoxVertices(), null); +break; +case 1073741872: +case 1814695966: +eval.iToken = i + 1; +var unitCell = this.vwr.getCurrentUnitCell(); +if (unitCell == null) { +if (tok == 1814695966) this.invArg(); +} else { +pts = JU.BoxInfo.toOABC(unitCell.getUnitCellVerticesNoOffset(), unitCell.getCartesianOffset()); +var iType = Clazz.floatToInt(unitCell.getUnitCellInfoType(6)); +var v1 = null; +var v2 = null; +switch (iType) { +case 3: +break; +case 1: +v2 = JU.V3.newVsub(pts[2], pts[0]); +v2.scale(1000); +case 2: +v1 = JU.V3.newVsub(pts[1], pts[0]); +v1.scale(1000); +pts[0].sub(v1); +pts[1].scale(2000); +if (iType == 1) { +pts[0].sub(v2); +pts[2].scale(2000); +}break; +} +data = pts; +}break; +case 12290: +case 10: +case 1073742325: +data = this.atomExpressionAt(i + 1); +tok = 3; +if (!eval.isCenterParameter(++eval.iToken)) { +isSlab = true; +break; +}data = null; +default: +if (!isLcaoCartoon && isSlab && this.isFloatParameter(i + 1)) { +d = this.floatParameter(++i); +if (!this.isFloatParameter(i + 1)) return Integer.$valueOf(Clazz.floatToInt(d)); +d2 = this.floatParameter(++i); +data = Clazz.newArray(-1, [Float.$valueOf(d), Float.$valueOf(d2)]); +tok = 1073742114; +break; +}plane = eval.planeParameter(++i, false); +var off = (this.isFloatParameter(eval.iToken + 1) ? this.floatParameter(++eval.iToken) : NaN); +if (!Float.isNaN(off)) plane.w -= off; +data = plane; +tok = 134217750; +} +var colorData = (slabMeshType == null ? null : Clazz.newArray(-1, [slabMeshType, slabColix])); +return JU.TempArray.getSlabObjectType(tok, data, !isSlab, colorData); +}, "~N,~B"); +Clazz.defineMethod(c$, "setColorOptions", +function(sb, index, iShape, nAllowed){ +var eval = this.e; +this.getToken(index); +var translucency = "opaque"; +if (eval.theTok == 603979967) { +translucency = "translucent"; +if (nAllowed < 0) { +var value = (this.isFloatParameter(index + 1) ? this.floatParameter(++index) : 3.4028235E38); +eval.setShapeTranslucency(iShape, null, "translucent", value, null); +if (sb != null) { +sb.append(" translucent"); +if (value != 3.4028235E38) sb.append(" ").appendF(value); +}} else { +eval.setMeshDisplayProperty(iShape, index, eval.theTok); +}} else if (eval.theTok == 1073742074) { +if (nAllowed >= 0) eval.setMeshDisplayProperty(iShape, index, eval.theTok); +} else { +eval.iToken--; +}nAllowed = Math.abs(nAllowed); +for (var i = 0; i < nAllowed; i++) { +if (eval.isColorParam(eval.iToken + 1)) { +var color = eval.getArgbParam(++eval.iToken); +this.setShapeProperty(iShape, "colorRGB", Integer.$valueOf(color)); +if (sb != null) sb.append(" ").append(JU.Escape.escapeColor(color)); +} else if (eval.iToken < index) { +this.invArg(); +} else { +break; +}} +return translucency; +}, "JU.SB,~N,~N,~N"); +Clazz.defineMethod(c$, "createFunction", +function(fname, xyz, ret){ +var e = ( new JS.ScriptEval()).setViewer(this.vwr); +try { +e.compileScript(null, "function " + fname + "(" + xyz + ") { return " + ret + "}", false); +var params = new JU.Lst(); +for (var i = 0; i < xyz.length; i += 2) params.addLast(JS.SV.newF(0).setName(xyz.substring(i, i + 1))); + +return Clazz.newArray(-1, [e.aatoken[0][1].value, params]); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +return null; +} else { +throw ex; +} +} +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "getWithinDistanceVector", +function(propertyList, distance, ptc, bs, isShow){ +var v = new JU.Lst(); +var pts = new Array(2); +if (bs == null) { +var pt1 = JU.P3.new3(distance, distance, distance); +var pt0 = JU.P3.newP(ptc); +pt0.sub(pt1); +pt1.add(ptc); +pts[0] = pt0; +pts[1] = pt1; +v.addLast(ptc); +} else { +var bbox = this.vwr.ms.getBoxInfo(bs, -Math.abs(distance * 2)); +pts[0] = bbox.getBoundBoxVertices()[0]; +pts[1] = bbox.getBoundBoxVertices()[7]; +if (bs.cardinality() == 1) v.addLast(this.vwr.ms.at[bs.nextSetBit(0)]); +}if (v.size() == 1 && !isShow) { +this.addShapeProperty(propertyList, "withinDistance", Float.$valueOf(distance)); +this.addShapeProperty(propertyList, "withinPoint", v.get(0)); +}this.addShapeProperty(propertyList, (isShow ? "displayWithin" : "withinPoints"), Clazz.newArray(-1, [Float.$valueOf(distance), pts, bs, v])); +return pts; +}, "JU.Lst,~N,JU.P3,JU.BS,~B"); +Clazz.defineMethod(c$, "addShapeProperty", +function(propertyList, key, value){ +if (this.chk) return; +propertyList.addLast( Clazz.newArray(-1, [key, value])); +}, "JU.Lst,~S,~O"); +Clazz.defineMethod(c$, "floatArraySetXYZ", +function(i, nX, nY, nZ){ +var eval = this.e; +var tok = this.tokAt(i++); +if (tok == 1073742195) tok = this.tokAt(i++); +if (tok != 268437504 || nX <= 0) this.invArg(); +var fparams = JU.AU.newFloat3(nX, -1); +var n = 0; +while (tok != 268437505) { +tok = this.getToken(i).tok; +switch (tok) { +case 1073742195: +case 268437505: +continue; +case 268436992: +i++; +break; +case 268437504: +fparams[n++] = this.floatArraySet(i, nY, nZ); +i = ++eval.iToken; +tok = 0; +if (n == nX && this.tokAt(i) != 268437505) this.invArg(); +break; +default: +this.invArg(); +} +} +return fparams; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "floatArraySet", +function(i, nX, nY){ +var tok = this.tokAt(i++); +if (tok == 1073742195) tok = this.tokAt(i++); +if (tok != 268437504) this.invArg(); +var fparams = JU.AU.newFloat2(nX); +var n = 0; +while (tok != 268437505) { +tok = this.getToken(i).tok; +switch (tok) { +case 1073742195: +case 268437505: +continue; +case 268436992: +i++; +break; +case 268437504: +i++; +var f = Clazz.newFloatArray (nY, 0); +fparams[n++] = f; +for (var j = 0; j < nY; j++) { +f[j] = this.floatParameter(i++); +if (this.tokAt(i) == 268436992) i++; +} +if (this.tokAt(i++) != 268437505) this.invArg(); +tok = 0; +if (n == nX && this.tokAt(i) != 268437505) this.invArg(); +break; +default: +this.invArg(); +} +} +return fparams; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "initIsosurface", +function(iShape){ +var eval = this.e; +this.setShapeProperty(iShape, "init", eval.fullCommand); +eval.iToken = 0; +var tok1 = this.tokAt(1); +var tok2 = this.tokAt(2); +if (tok1 == 12291 || tok2 == 12291 && this.tokAt(++eval.iToken) == 1073742327) { +this.setShapeProperty(iShape, "delete", null); +eval.iToken += 2; +if (this.slen > eval.iToken) { +this.setShapeProperty(iShape, "init", eval.fullCommand); +this.setShapeProperty(iShape, "thisID", "+PREVIOUS_MESH+"); +}return null; +}eval.iToken = 1; +if (!eval.setMeshDisplayProperty(iShape, 0, tok1)) { +this.setShapeProperty(iShape, "thisID", "+PREVIOUS_MESH+"); +if (iShape != 22) this.setShapeProperty(iShape, "title", Clazz.newArray(-1, [eval.thisCommand])); +if (tok1 != 1073741974 && (tok2 == 268441089 || tok1 == 268441089 && eval.setMeshDisplayProperty(iShape, 0, tok2))) { +var id = this.setShapeId(iShape, 1, false); +eval.iToken++; +return id; +}}return null; +}, "~N"); +Clazz.defineMethod(c$, "listIsosurface", +function(iShape){ +var s = (this.slen > 3 ? "0" : this.tokAt(2) == 0 ? "" : " " + this.getToken(2).value); +if (!this.chk) this.showString(this.getShapeProperty(iShape, "list" + s)); +return true; +}, "~N"); +Clazz.defineMethod(c$, "getBoxPoints", +function(type, uc, bsAtoms, scale){ +switch (type) { +case 1814695966: +return (uc == null ? null : uc.getCanonicalCopy(scale, true)); +case 1812599299: +var box; +if (bsAtoms == null) { +box = this.vwr.ms.getBoxInfo(); +} else { +box = new JU.BoxInfo(); +this.vwr.calcAtomsMinMax(bsAtoms, box); +}return JU.BoxInfo.getCanonicalCopy(box.getBoundBoxVertices(), scale); +default: +return null; +} +}, "~N,J.api.SymmetryInterface,JU.BS,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JButton.js b/config/plugins/visualizations/jmol/static/j2s/JS/JButton.js new file mode 100755 index 000000000000..cdbe5a57effc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JButton.js @@ -0,0 +1,15 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.AbstractButton"], "JS.JButton", ["JU.SB"], function(){ +var c$ = Clazz.declareType(JS, "JButton", JS.AbstractButton); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JButton, ["btnJB"]); +}); +Clazz.overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JCheckBox.js b/config/plugins/visualizations/jmol/static/j2s/JS/JCheckBox.js new file mode 100755 index 000000000000..f45ed970a399 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JCheckBox.js @@ -0,0 +1,14 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.AbstractButton"], "JS.JCheckBox", null, function(){ +var c$ = Clazz.declareType(JS, "JCheckBox", JS.AbstractButton); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JCheckBox, ["chkJCB"]); +}); +Clazz.overrideMethod(c$, "toHTML", +function(){ +var s = ""; +return s; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JCheckBoxMenuItem.js b/config/plugins/visualizations/jmol/static/j2s/JS/JCheckBoxMenuItem.js new file mode 100755 index 000000000000..eceff905ee02 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JCheckBoxMenuItem.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JMenuItem"], "JS.JCheckBoxMenuItem", null, function(){ +var c$ = Clazz.declareType(JS, "JCheckBoxMenuItem", JS.JMenuItem); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JCheckBoxMenuItem, ["chk", 2]); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JComboBox.js b/config/plugins/visualizations/jmol/static/j2s/JS/JComboBox.js new file mode 100755 index 000000000000..50bb6bfedbf4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JComboBox.js @@ -0,0 +1,36 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.AbstractButton"], "JS.JComboBox", ["JU.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.info = null; +this.selectedIndex = 0; +Clazz.instantialize(this, arguments);}, JS, "JComboBox", JS.AbstractButton); +Clazz.makeConstructor(c$, +function(info){ +Clazz.superConstructor(this, JS.JComboBox, ["cmbJCB"]); +this.info = info; +}, "~A"); +Clazz.defineMethod(c$, "setSelectedIndex", +function(i){ +this.selectedIndex = i; +{ +SwingController.setSelectedIndex(this); +}}, "~N"); +Clazz.defineMethod(c$, "getSelectedIndex", +function(){ +return this.selectedIndex; +}); +Clazz.defineMethod(c$, "getSelectedItem", +function(){ +return (this.selectedIndex < 0 ? null : this.info[this.selectedIndex]); +}); +Clazz.overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append("\n\n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JComponent.js b/config/plugins/visualizations/jmol/static/j2s/JS/JComponent.js new file mode 100755 index 000000000000..6e86fe2e92d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JComponent.js @@ -0,0 +1,25 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.Container"], "JS.JComponent", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.autoScrolls = false; +this.actionCommand = null; +this.actionListener = null; +Clazz.instantialize(this, arguments);}, JS, "JComponent", JS.Container); +Clazz.defineMethod(c$, "setAutoscrolls", +function(b){ +this.autoScrolls = b; +}, "~B"); +Clazz.defineMethod(c$, "addActionListener", +function(listener){ +this.actionListener = listener; +}, "~O"); +Clazz.defineMethod(c$, "getActionCommand", +function(){ +return this.actionCommand; +}); +Clazz.defineMethod(c$, "setActionCommand", +function(actionCommand){ +this.actionCommand = actionCommand; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JComponentImp.js b/config/plugins/visualizations/jmol/static/j2s/JS/JComponentImp.js new file mode 100755 index 000000000000..193423045646 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JComponentImp.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JComponent"], "JS.JComponentImp", null, function(){ +var c$ = Clazz.declareType(JS, "JComponentImp", JS.JComponent); +Clazz.overrideMethod(c$, "toHTML", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JContentPane.js b/config/plugins/visualizations/jmol/static/j2s/JS/JContentPane.js new file mode 100755 index 000000000000..503dd8f5e09a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JContentPane.js @@ -0,0 +1,18 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JComponent"], "JS.JContentPane", ["JU.SB"], function(){ +var c$ = Clazz.declareType(JS, "JContentPane", JS.JComponent); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JContentPane, ["JCP"]); +}); +Clazz.defineMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append("\n
\n"); +if (this.list != null) for (var i = 0; i < this.list.size(); i++) sb.append(this.list.get(i).toHTML()); + +sb.append("\n
\n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JDialog.js b/config/plugins/visualizations/jmol/static/j2s/JS/JDialog.js new file mode 100755 index 000000000000..33665984aeb2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JDialog.js @@ -0,0 +1,86 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.Container"], "JS.JDialog", ["JU.SB", "JS.Color", "$.JContentPane"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.defaultWidth = 600; +this.defaultHeight = 300; +this.contentPane = null; +this.title = null; +this.html = null; +this.zIndex = 9000; +this.loc = null; +Clazz.instantialize(this, arguments);}, JS, "JDialog", JS.Container); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JDialog, ["JD"]); +this.add(this.contentPane = new JS.JContentPane()); +this.setBackground(JS.Color.get3(210, 210, 240)); +this.contentPane.setBackground(JS.Color.get3(230, 230, 230)); +}); +Clazz.defineMethod(c$, "setZIndex", +function(zIndex){ +this.zIndex = zIndex; +}, "~N"); +Clazz.defineMethod(c$, "setLocation", +function(loc){ +this.loc = loc; +}, "~A"); +Clazz.defineMethod(c$, "getContentPane", +function(){ +return this.contentPane; +}); +Clazz.defineMethod(c$, "setTitle", +function(title){ +this.title = title; +}, "~S"); +Clazz.defineMethod(c$, "pack", +function(){ +this.html = null; +}); +Clazz.defineMethod(c$, "validate", +function(){ +this.html = null; +}); +Clazz.defineMethod(c$, "setVisible", +function(tf){ +if (tf && this.html == null) this.setDialog(); +Clazz.superCall(this, JS.JDialog, "setVisible", [tf]); +if (tf) this.toFront(); +}, "~B"); +Clazz.defineMethod(c$, "dispose", +function(){ +{ +{ +SwingController.dispose(this); +}}}); +Clazz.overrideMethod(c$, "repaint", +function(){ +this.setDialog(); +}); +Clazz.defineMethod(c$, "setDialog", +function(){ +this.html = this.toHTML(); +{ +SwingController.setDialog(this); +}}); +Clazz.overrideMethod(c$, "toHTML", +function(){ +this.renderWidth = Math.max(this.width, this.getSubcomponentWidth()); +if (this.renderWidth == 0) this.renderWidth = this.defaultWidth; +this.renderHeight = Math.max(this.height, this.contentPane.getSubcomponentHeight()); +if (this.renderHeight == 0) this.renderHeight = this.defaultHeight; +var h = this.renderHeight - 25; +var sb = new JU.SB(); +sb.append("\n
\n"); +sb.append("\n
" + "" + this.title + "" + "
\n"); +sb.append("\n
\n"); +sb.append(this.contentPane.toHTML()); +sb.append("\n
\n"); +return sb.toString(); +}); +Clazz.defineMethod(c$, "toFront", +function(){ +{ +SwingController.setFront(this); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JEditorPane.js b/config/plugins/visualizations/jmol/static/j2s/JS/JEditorPane.js new file mode 100755 index 000000000000..c67d6ecc845c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JEditorPane.js @@ -0,0 +1,16 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JComponent"], "JS.JEditorPane", ["JU.SB"], function(){ +var c$ = Clazz.declareType(JS, "JEditorPane", JS.JComponent); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JEditorPane, ["txtJEP"]); +this.text = ""; +}); +Clazz.overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JLabel.js b/config/plugins/visualizations/jmol/static/j2s/JS/JLabel.js new file mode 100755 index 000000000000..96fe2dd6ea03 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JLabel.js @@ -0,0 +1,18 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JComponent"], "JS.JLabel", ["JU.SB"], function(){ +var c$ = Clazz.declareType(JS, "JLabel", JS.JComponent); +Clazz.makeConstructor(c$, +function(text){ +Clazz.superConstructor(this, JS.JLabel, ["lblJL"]); +this.text = text; +}, "~S"); +Clazz.overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +sb.append(this.text); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JMenu.js b/config/plugins/visualizations/jmol/static/j2s/JS/JMenu.js new file mode 100755 index 000000000000..5b7a70bad2b3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JMenu.js @@ -0,0 +1,213 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JMenuItem"], "JS.JMenu", null, function(){ +var c$ = Clazz.declareType(JS, "JMenu", JS.JMenuItem); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JMenu, ["mnu", 4]); +}); +Clazz.defineMethod(c$, "getItemCount", +function(){ +return this.getComponentCount(); +}); +Clazz.defineMethod(c$, "getItem", +function(i){ +return this.getComponent(i); +}, "~N"); +Clazz.overrideMethod(c$, "getPopupMenu", +function(){ +return this; +}); +Clazz.overrideMethod(c$, "toHTML", +function(){ +return this.getMenuHTML(); +}); +{ +{ +// JSmolMenu.js +// author: Bob Hanson, hansonr@stolaf.edu +// BH 10/17/2015 6:18:38 PM wraps with Jmol.__$ to use same version of jQuery as Jmol is using +// BH 5/27/2014 11:01:46 PM frank menu fix; better event handling +// BH 5/26/2014 allow for a user callback for customization of menu +// using Jmol._showMenuCallback(menu, x, y); +// BH 2/17/2014 7:52:18 AM Jmol.Menu folded into Jmol.Swing +// BH 1/16/2014 9:20:15 AM allowing second attempt to initiate this library to gracefully skip processing +//! jQuery UI - v1.9.2 - 2012-12-17 +// http://jqueryui.com +// Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.menu.js +// Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT +;(function(jQuery) { +if (!jQuery.ui) +try{ +(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}}) +})(jQuery); +}catch (e) { +System.out.println("coremenu failed to load jQuery.ui.mouse -- jQuery version conflict?"); +} +if (!jQuery.ui.position) +try{ +(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("
"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};lr(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)a&&(v<0||v0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery) +})(jQuery); +}catch (e) { +System.out.println("coremenu failed to load jQuery.ui.position -- jQuery version conflict?"); +} +//! jQuery UI - v1.9.2 - 2012-12-17 +//http://jqueryui.com +//Includes: jquery.ui.core.css, jquery.ui.menu.css +//To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +//Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT +if (!jQuery.ui.menu) +try{ +(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"
    ",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-+�G��G��+�G��G��\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})}, +_startOpening:function(e){ +if (e.hasClass("ui-state-disabled"))return // BH +clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()'+Swing.__getMenuStyle(menu.applet)+''); +Swing.__getStyle = null; // once only +menu.tainted = true; +menu.popupMenu = menu; +menu.id = "top"; +menu.id = Swing.getMenuID(menu); +menu.applet._menus || (menu.applet._menus = {}); +menu.applet._menus[menu.name] = menu; +Jmol.$after("body",''); +menu.setContainer(Jmol.$('#' + menu.id)); +} +Swing.showMenu = function(menu, x, y) { +// called by JS.JPopupMenu +// allow for a user callback for customization of menu +if (Jmol._showMenuCallback) +Jmol._showMenuCallback(menu, x, y); +if (menu.tainted) { +menu.container.html(menu.toHTML()); +menu.tainted = false; +Swing.bindMenuActionCommands(menu, true); +} +menu.setPosition(); +menu.container.hide().menu().menu('refresh').show(); +menu._visible = true; +menu.timestamp = System.currentTimeMillis(); +menu.dragBind(true); +menu.container.unbind('clickoutjsmol'); +if (!Jmol._persistentMenu) +menu.container.bind('clickoutjsmol mousemoveoutjsmol', function(evspecial, target, ev) { +if (System.currentTimeMillis() - menu.timestamp > 1000) +Swing.hideMenu(menu); +}); +menu.container.bind("contextmenu", function() {return false;}) +} +Swing.disposeMenu = function(menu) { +// called by JS.JPopupMenu +if (Jmol._persistentMenu) +return +Swing.hideMenu(menu); +Swing.bindMenuActionCommands(menu, false); +delete menu.applet._menus[menu.name]; +} +Swing.initMenuItem = function(item) { +// called by JS.AbstractButton +item.applet = item.popupMenu.applet; +item.id = Swing.getMenuID(item); +item.icon && (item.icon = '') +} +Swing.getMenuID = function(item) { +// called internally +var popup = item.popupMenu; +return popup.applet._id + '_' + popup.name + "_" + item.id + '_' + (++Swing.menuCounter); +} +Swing.hideMenu = function(menu) { +// called internally +if (!menu._visible)return; +//menu.container.unbind('clickoutjsmol'); +menu.dragBind(false); +menu.container.hide(); +menu._visible = menu.isDragging = false; +}; +var delayHide = function(menu, f) { +setTimeout(function(){Swing.hideMenus(menu.applet);f();},500); +} +Swing.bindMenuActionCommands = function(menu, isBind) { +// called internally +var n = menu.getComponentCount(); +for(var i = 0; i < n; i++) +Swing.bindMenuActionCommands(menu.getComponent(i), isBind); +Jmol.$documentOff('click mouseup mouseover mousedown touchstart touchend mouseenter mouseleave', menu.id); +if (isBind) { +Jmol.$documentOn('click', menu.id, function(event) { +var name= "" + menu.name; +var dohide = (name.indexOf("Persist") < 0 || name.indexOf("!Persist") >= 0); +if (menu.itemListener) { +menu.selected = (menu.btnType == 2 ? Jmol.$prop(menu.id + "-cb", "checked") : true); +if (dohide) +delayHide(menu, function() {menu.itemListener.itemStateChanged({getSource:function(){return menu}})}); +} else if (menu.actionListener) { +if (dohide) +delayHide(menu, function() {menu.actionListener.actionPerformed({getSource:function(){return menu},getActionCommand:function(){return menu.actionCommand}})}); +} +}); +Jmol.$documentOn('mouseup mouseover mousedown touchstart touchend mouseenter mouseleave', menu.id, function(event) { +if (menu.mouseListener && menu.mouseListener.handleEvent) { +menu.mouseListener.handleEvent({jqevent:event,getID:function(){return event.type},getSource:function(){return menu}}); +} +}); +} +} +})(Jmol.Swing); +})(Jmol.__$); +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JMenuItem.js b/config/plugins/visualizations/jmol/static/j2s/JS/JMenuItem.js new file mode 100755 index 000000000000..1c18f8a2d006 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JMenuItem.js @@ -0,0 +1,30 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.AbstractButton"], "JS.JMenuItem", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.btnType = 0; +Clazz.instantialize(this, arguments);}, JS, "JMenuItem", JS.AbstractButton); +Clazz.makeConstructor(c$, +function(text){ +Clazz.superConstructor(this, JS.JMenuItem, ["btn"]); +this.setText(text); +this.btnType = (text == null ? 0 : 1); +}, "~S"); +Clazz.makeConstructor(c$, +function(type, i){ +Clazz.superConstructor(this, JS.JMenuItem, [type]); +this.btnType = i; +}, "~S,~N"); +Clazz.overrideMethod(c$, "toHTML", +function(){ +return this.htmlMenuOpener("li") + (this.text == null ? "" : "" + this.htmlLabel() + "") + ""; +}); +Clazz.overrideMethod(c$, "getHtmlDisabled", +function(){ +return " class=\"ui-state-disabled\""; +}); +Clazz.defineMethod(c$, "htmlLabel", +function(){ +return (this.btnType == 1 ? this.text : ""); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JPanel.js b/config/plugins/visualizations/jmol/static/j2s/JS/JPanel.js new file mode 100755 index 000000000000..1ccc9fb232bb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JPanel.js @@ -0,0 +1,39 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JComponent"], "JS.JPanel", ["JU.SB", "JS.Grid", "$.GridBagConstraints"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.grid = null; +this.nElements = 0; +this.last = null; +Clazz.instantialize(this, arguments);}, JS, "JPanel", JS.JComponent); +Clazz.makeConstructor(c$, +function(manager){ +Clazz.superConstructor(this, JS.JPanel, ["JP"]); +this.grid = new JS.Grid(10, 10); +}, "JS.LayoutManager"); +Clazz.defineMethod(c$, "add", +function(btn, c){ +this.last = (++this.nElements == 1 ? btn : null); +if ((typeof(c)=='string')) { +if (c.equals("North")) c = new JS.GridBagConstraints(0, 0, 3, 1, 0, 0, 10, 0, null, 0, 0); + else if (c.equals("South")) c = new JS.GridBagConstraints(0, 2, 3, 1, 0, 0, 10, 0, null, 0, 0); + else if (c.equals("East")) c = new JS.GridBagConstraints(2, 1, 1, 1, 0, 0, 13, 0, null, 0, 0); + else if (c.equals("West")) c = new JS.GridBagConstraints(0, 1, 1, 1, 0, 0, 17, 0, null, 0, 0); + else c = new JS.GridBagConstraints(1, 1, 1, 1, 0, 0, 10, 0, null, 0, 0); +}this.grid.add(btn, c); +}, "JS.JComponent,~O"); +Clazz.overrideMethod(c$, "toHTML", +function(){ +if (this.last != null) { +this.grid = new JS.Grid(1, 1); +this.grid.add(this.last, new JS.GridBagConstraints(0, 0, 1, 1, 0, 0, 10, 0, null, 0, 0)); +this.last = null; +}var sb = new JU.SB(); +sb.append("\n
    \n"); +sb.append("\n"); +sb.append(this.grid.toHTML(this.id)); +sb.append(""); +sb.append("\n
    \n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JPopupMenu.js b/config/plugins/visualizations/jmol/static/j2s/JS/JPopupMenu.js new file mode 100755 index 000000000000..b27cece7d57b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JPopupMenu.js @@ -0,0 +1,36 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.AbstractButton"], "JS.JPopupMenu", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tainted = true; +Clazz.instantialize(this, arguments);}, JS, "JPopupMenu", JS.AbstractButton); +Clazz.makeConstructor(c$, +function(name){ +Clazz.superConstructor(this, JS.JPopupMenu, ["mnu"]); +this.name = name; +}, "~S"); +Clazz.defineMethod(c$, "setInvoker", +function(applet){ +this.applet = applet; +{ +SwingController.setMenu(this); +}}, "~O"); +Clazz.defineMethod(c$, "show", +function(applet, x, y){ +if (applet != null) this.tainted = true; +{ +SwingController.showMenu(this, x, y); +}}, "JS.Component,~N,~N"); +Clazz.defineMethod(c$, "disposeMenu", +function(){ +{ +SwingController.disposeMenu(this); +}}); +Clazz.overrideMethod(c$, "toHTML", +function(){ +return this.getMenuHTML(); +}); +{ +{ +SwingController.setDraggable(JS.JPopupMenu); +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JRadioButtonMenuItem.js b/config/plugins/visualizations/jmol/static/j2s/JS/JRadioButtonMenuItem.js new file mode 100755 index 000000000000..1249a10f1323 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JRadioButtonMenuItem.js @@ -0,0 +1,11 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JMenuItem"], "JS.JRadioButtonMenuItem", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isRadio = true; +Clazz.instantialize(this, arguments);}, JS, "JRadioButtonMenuItem", JS.JMenuItem); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JRadioButtonMenuItem, ["rad", 3]); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JScrollPane.js b/config/plugins/visualizations/jmol/static/j2s/JS/JScrollPane.js new file mode 100755 index 000000000000..908eca2c24dc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JScrollPane.js @@ -0,0 +1,23 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JComponent"], "JS.JScrollPane", ["JU.SB"], function(){ +var c$ = Clazz.declareType(JS, "JScrollPane", JS.JComponent); +Clazz.makeConstructor(c$, +function(component){ +Clazz.superConstructor(this, JS.JScrollPane, ["JScP"]); +this.add(component); +}, "JS.JComponent"); +Clazz.defineMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append("\n
    \n"); +if (this.list != null) { +var c = this.list.get(0); +sb.append(c.toHTML()); +}sb.append("\n
    \n"); +return sb.toString(); +}); +Clazz.overrideMethod(c$, "setMinimumSize", +function(dimension){ +}, "JS.Dimension"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JSplitPane.js b/config/plugins/visualizations/jmol/static/j2s/JS/JSplitPane.js new file mode 100755 index 000000000000..8c5a70531d8c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JSplitPane.js @@ -0,0 +1,65 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JComponent"], "JS.JSplitPane", ["JU.SB", "JS.JComponentImp"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isH = true; +this.split = 1; +this.right = null; +this.left = null; +Clazz.instantialize(this, arguments);}, JS, "JSplitPane", JS.JComponent); +Clazz.makeConstructor(c$, +function(split){ +Clazz.superConstructor(this, JS.JSplitPane, ["JSpP"]); +this.split = split; +this.isH = (split == 1); +}, "~N"); +Clazz.defineMethod(c$, "setRightComponent", +function(r){ +this.right = new JS.JComponentImp(null); +this.right.add(r); +}, "JS.JComponent"); +Clazz.defineMethod(c$, "setLeftComponent", +function(l){ +this.left = new JS.JComponentImp(null); +this.left.add(l); +}, "JS.JComponent"); +Clazz.defineMethod(c$, "getSubcomponentWidth", +function(){ +var w = this.width; +if (w == 0) { +var wleft = this.left.getSubcomponentWidth(); +var wright = this.right.getSubcomponentWidth(); +if (wleft > 0 && wright > 0) { +if (this.isH) w = wleft + wright; + else w = Math.max(wleft, wright); +}}return w; +}); +Clazz.defineMethod(c$, "getSubcomponentHeight", +function(){ +var h = this.height; +if (h == 0) { +var hleft = this.left.getSubcomponentHeight(); +var hright = this.right.getSubcomponentHeight(); +if (hleft > 0 && hright > 0) { +if (this.isH) h = Math.max(hleft, hright); + else h = hleft + hright; +}}return h; +}); +Clazz.defineMethod(c$, "toHTML", +function(){ +if (this.left == null || this.right == null) return ""; +var isH = (this.split == 1); +if (this.width == 0) this.width = this.getSubcomponentWidth(); +if (this.height == 0) this.height = this.getSubcomponentHeight(); +var sb = new JU.SB(); +sb.append("
    "); +if (isH) sb.append("
    "); + else sb.append("
    "); +sb.append(this.left.getComponents()[0].toHTML()); +if (isH) sb.append("
    "); + else sb.append("
    "); +sb.append(this.right.getComponents()[0].toHTML()); +sb.append("
    \n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JTable.js b/config/plugins/visualizations/jmol/static/j2s/JS/JTable.js new file mode 100755 index 000000000000..6b63a08d48c2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JTable.js @@ -0,0 +1,67 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.ColumnSelectionModel", "$.JComponent", "$.ListSelectionModel"], "JS.JTable", ["JU.BS", "$.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tableModel = null; +this.bsSelectedCells = null; +this.bsSelectedRows = null; +this.rowSelectionAllowed = false; +this.cellSelectionEnabled = false; +this.selectionListener = null; +Clazz.instantialize(this, arguments);}, JS, "JTable", JS.JComponent, [JS.ListSelectionModel, JS.ColumnSelectionModel]); +Clazz.makeConstructor(c$, +function(tableModel){ +Clazz.superConstructor(this, JS.JTable, ["JT"]); +this.tableModel = tableModel; +this.bsSelectedCells = new JU.BS(); +this.bsSelectedRows = new JU.BS(); +}, "JS.AbstractTableModel"); +Clazz.overrideMethod(c$, "getSelectionModel", +function(){ +return this; +}); +Clazz.defineMethod(c$, "getColumnModel", +function(){ +return this; +}); +Clazz.defineMethod(c$, "setPreferredScrollableViewportSize", +function(dimension){ +this.width = dimension.width; +this.height = dimension.height; +}, "JS.Dimension"); +Clazz.defineMethod(c$, "clearSelection", +function(){ +this.bsSelectedCells.clearAll(); +this.bsSelectedRows.clearAll(); +}); +Clazz.defineMethod(c$, "setRowSelectionAllowed", +function(b){ +this.rowSelectionAllowed = b; +}, "~B"); +Clazz.defineMethod(c$, "setRowSelectionInterval", +function(i, j){ +this.bsSelectedRows.clearAll(); +this.bsSelectedRows.setBits(i, j); +this.bsSelectedCells.clearAll(); +}, "~N,~N"); +Clazz.defineMethod(c$, "setCellSelectionEnabled", +function(enabled){ +this.cellSelectionEnabled = enabled; +}, "~B"); +Clazz.overrideMethod(c$, "addListSelectionListener", +function(listener){ +this.selectionListener = listener; +}, "~O"); +Clazz.overrideMethod(c$, "getColumn", +function(i){ +return this.tableModel.getColumn(i); +}, "~N"); +Clazz.overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append("\n"); +this.tableModel.toHTML(sb, this.id, this.bsSelectedRows); +sb.append("\n
    \n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JTextField.js b/config/plugins/visualizations/jmol/static/j2s/JS/JTextField.js new file mode 100755 index 000000000000..6f5a9e1d3da2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JTextField.js @@ -0,0 +1,16 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.JComponent"], "JS.JTextField", ["JU.SB"], function(){ +var c$ = Clazz.declareType(JS, "JTextField", JS.JComponent); +Clazz.makeConstructor(c$, +function(value){ +Clazz.superConstructor(this, JS.JTextField, ["txtJT"]); +this.text = value; +}, "~S"); +Clazz.overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/JTextPane.js b/config/plugins/visualizations/jmol/static/j2s/JS/JTextPane.js new file mode 100755 index 000000000000..ccca8314b9e5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/JTextPane.js @@ -0,0 +1,25 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.Document", "$.JComponent"], "JS.JTextPane", ["JU.SB"], function(){ +var c$ = Clazz.declareType(JS, "JTextPane", JS.JComponent, JS.Document); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JS.JTextPane, ["txtJTP"]); +this.text = ""; +}); +Clazz.defineMethod(c$, "getDocument", +function(){ +return this; +}); +Clazz.overrideMethod(c$, "insertString", +function(i, s, object){ +i = Math.min(i, this.text.length); +this.text = this.text.substring(0, i) + s + this.text.substring(i); +}, "~N,~S,~O"); +Clazz.overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/LayoutManager.js b/config/plugins/visualizations/jmol/static/j2s/JS/LayoutManager.js new file mode 100755 index 000000000000..78d6e629a5c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/LayoutManager.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JS"); +(function(){ +var c$ = Clazz.declareType(JS, "LayoutManager", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ListSelectionModel.js b/config/plugins/visualizations/jmol/static/j2s/JS/ListSelectionModel.js new file mode 100755 index 000000000000..1ecb0d723f27 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ListSelectionModel.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "ListSelectionModel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/MathExt.js b/config/plugins/visualizations/jmol/static/j2s/JS/MathExt.js new file mode 100755 index 000000000000..c0ce74cb55b7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/MathExt.js @@ -0,0 +1,3274 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.MathExt", ["java.util.Date", "$.Hashtable", "$.Random", "JU.AU", "$.BArray", "$.BS", "$.CU", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.OC", "$.P3", "$.P4", "$.PT", "$.Quat", "$.Rdr", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.bspt.PointIterator", "J.c.VDW", "J.i18n.GT", "JM.BondSet", "$.Measurement", "JS.SV", "$.T", "JU.BSUtil", "$.BoxInfo", "$.Edge", "$.Escape", "$.JmolMolecule", "$.Logger", "$.Parser", "$.Point3fi", "$.SimpleUnitCell", "JV.FileManager", "$.JC", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.e = null; +this.rand = null; +this.pm = null; +Clazz.instantialize(this, arguments);}, JS, "MathExt", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "init", +function(se){ +this.e = se; +this.vwr = this.e.vwr; +return this; +}, "~O"); +Clazz.defineMethod(c$, "evaluate", +function(mp, op, args, tok){ +switch (tok) { +case 134218760: +return (args.length >= 1 && args[0].tok == 4 ? mp.addXStr((args.length == 1 ? new java.util.Date().toString() : this.vwr.apiPlatform.getDateFormat(JS.SV.sValue(args[1]))) + "\t" + JS.SV.sValue(args[0]).trim()) : mp.addXInt(((System.currentTimeMillis() - JS.MathExt.t0)) - (args.length == 0 ? 0 : args[0].asInt()))); +case 134218250: +return (args.length == 1 && args[0].tok == 2 ? mp.addXInt(args[0].intValue) : mp.addXFloat(Math.abs(args[0].asFloat()))); +case 134218241: +case 134218245: +case 134218244: +case 134218246: +return (args.length == 1 && this.evaluateMath(mp, args, tok)); +case 1275069441: +case 1275068928: +case 1275068929: +case 1275068930: +case 1275068931: +case 1275335685: +case 1275334681: +return this.evaluateList(mp, op.intValue, args); +case 268437504: +if (args.length == 0) mp.wasX = false; +case 1275068418: +return this.evaluateArray(mp, args, tok == 1275068418 && op.tok == 268442113); +case 134217766: +return this.evaluateMatrix(mp, args); +case 134217765: +return this.evaluateCallbackParam(mp, args); +case 134217731: +case 134221850: +return this.evaluateQuaternion(mp, args, tok); +case 1275068420: +return this.evaluateBin(mp, args); +case 134221829: +return this.evaluateCache(mp, args); +case 1275068934: +case 1275068935: +return this.evaluateRowCol(mp, args, tok); +case 1765808134: +return this.evaluateColor(mp, args); +case 134221831: +return this.evaluateCompare(mp, args); +case 1228931586: +case 134217736: +case 1275203608: +return this.evaluateConnected(mp, args, tok, op.intValue); +case 1812599299: +case 1814695966: +return this.evaluateUnitCell(mp, args, op.tok == 268442113, op.tok == 268442113 ? op.intValue : op.tok); +case 134353926: +return this.evaluateContact(mp, args); +case 134221834: +return this.evaluateData(mp, args); +case 1275069444: +case 1275069442: +return this.evaluateDotDist(mp, args, tok, op.intValue); +case 1275069443: +if (op.tok == 268442113) return this.evaluateDotDist(mp, args, tok, op.intValue); +case 134217729: +case 1745489939: +return this.evaluateMeasure(mp, args, op.tok); +case 1228935687: +case 134223363: +return this.evaluateLoad(mp, args, tok == 1228935687); +case 1275068427: +return this.evaluateFind(mp, args); +case 1275068433: +return this.evaluateInChI(mp, args); +case 1287653388: +case 1825200146: +return this.evaluateFormat(mp, op.intValue, args, tok == 1825200146); +case 134320141: +return this.evaluateUserFunction(mp, op.value, args, op.intValue, op.tok == 268442113); +case 1275068437: +tok = 1275068725; +case 1275068446: +case 1275068725: +case 1275082241: +case 1275072526: +return this.evaluateGetProperty(mp, args, tok, op.tok == 268442113); +case 136314895: +return this.evaluateHelix(mp, args); +case 134219777: +case 134217750: +case 134217763: +return this.evaluatePlane(mp, args, tok); +case 134218759: +case 134238732: +case 134222850: +case 134222350: +return this.evaluateScript(mp, args, tok); +case 1275069446: +case 1275069447: +case 1275068932: +return this.evaluateString(mp, op.intValue, args); +case 134217751: +return this.evaluatePoint(mp, args); +case 1275068447: +return this.evaluatePointGroup(mp, args, op.tok == 268442113); +case 134256129: +return this.evaluatePrompt(mp, args); +case 134219266: +return this.evaluateRandom(mp, args); +case 1275068432: +return this.evaluateIn(mp, args); +case 1275072532: +return this.evaluateModulation(mp, args); +case 1275068443: +return this.evaluateReplace(mp, args); +case 134218753: +case 134218756: +case 134218757: +case 1237320707: +return this.evaluateSubstructure(mp, args, tok, op.tok == 268442113); +case 1275068444: +case 1275068425: +return this.evaluateSort(mp, args, tok); +case 134217764: +return this.evaluateSpacegroup(mp, args); +case 1296041985: +return this.evaluateSymop(mp, args, op.tok == 268442113); +case 1275068445: +return this.evaluateTensor(mp, args); +case 134217759: +return this.evaluateWithin(mp, args, op.tok == 268442113); +case 134221856: +return this.evaluateWrite(mp, args); +} +return false; +}, "JS.ScriptMathProcessor,JS.T,~A,~N"); +Clazz.defineMethod(c$, "evaluateMatrix", +function(mp, args){ +var n = args.length; +var m4 = null; +var retType = (n > 0 && args[n - 1].tok == 4 ? args[n - 1].value : null); +var asABC = "abc".equalsIgnoreCase(retType); +var asXYZ = "xyz".equalsIgnoreCase(retType); +var a = null; +if (asABC || asXYZ) n--; +switch (n) { +case 0: +m4 = new JU.M4(); +m4.setIdentity(); +break; +case 1: +switch (args[0].tok) { +case 12: +m4 = args[0].value; +break; +case 4: +m4 = this.vwr.getSymTemp().convertTransform(args[0].value, null); +break; +case 7: +a = JS.SV.flistValue(args[0], 0); +break; +} +break; +case 3: +case 4: +if (args[0].tok == 7) { +a = Clazz.newFloatArray (n == 3 ? 9 : 16, 0); +for (var p = 0, i = 0; i < n; i++) { +var row = JS.SV.flistValue(args[i], 0); +for (var j = 0; j < n; j++) a[p++] = row[j]; + +} +break; +}} +if (a != null) { +switch (a.length) { +case 9: +return mp.addXObj(JU.M3.newA9(a)); +case 16: +m4 = JU.M4.newA16(a); +break; +default: +return false; +} +}if (m4 != null) { +if (asABC) { +return mp.addXStr(this.vwr.getSymStatic().staticGetTransformABC(m4, false)); +}if (asXYZ) { +return mp.addXStr(this.vwr.getSymStatic().staticConvertOperation("", m4)); +}return mp.addXM4(m4); +}return false; +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateCallbackParam", +function(mp, args){ +return mp.addX(this.e.getCallbackParameter(args.length == 0 ? -2147483648 : args[0].asInt())); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateSpacegroup", +function(mp, args){ +var unitCellParams = null; +var n = args.length; +if (n == 0) return mp.addXObj(this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, null, this.vwr.am.cmi, true, null)); +var isSubgroups = (n > 1); +for (var i = n; isSubgroups && --i >= 0; ) { +if (args[i].tok != 2) { +isSubgroups = false; +}} +var xyzList = args[0].asString(); +var mode = (args[args.length - 1].tok == 4 ? args[args.length - 1].value : null); +if (isSubgroups || "subgroups".equals(mode)) { +var sym; +var itaFrom = -2147483648; +var itaTo = -2147483648; +var index1 = -2147483648; +var index2 = -2147483648; +switch (isSubgroups ? n + 1 : n) { +case 5: +index2 = args[3].intValue; +if (index2 < 0) return false; +case 4: +index1 = args[2].intValue; +if (index1 < 0) return false; +case 3: +itaTo = args[1].intValue; +if (itaTo < 0) return false; +case 2: +itaFrom = args[0].intValue; +if (itaFrom < 0) return false; +case 1: +default: +if (itaFrom == -2147483648) { +sym = this.vwr.getCurrentUnitCell(); +itaFrom = JU.PT.parseInt(sym.getIntTableNumber()); +if (itaFrom < 1) return false; +} else { +sym = this.vwr.getSymTemp(); +}break; +} +return mp.addXObj(sym.getSubgroupJSON(this.vwr, itaFrom, itaTo, index1, index2)); +}switch (n) { +default: +return false; +case 2: +if (args[1].tok == 4) { +mode = args[1].value; +} else { +unitCellParams = JS.SV.flistValue(args[1], 0); +if (unitCellParams == null || unitCellParams.length != 6) return false; +unitCellParams = JU.SimpleUnitCell.newParams(unitCellParams, NaN); +}case 1: +var itaNo = (args[0].tok == 2 ? args[0].intValue : n == 1 ? -2147483648 : 0); +if ("settings".equalsIgnoreCase(mode)) { +if (itaNo == 0) return false; +return mp.addXObj((itaNo == -2147483648 ? this.vwr.getCurrentUnitCell() : this.vwr.getSymTemp()).getSpaceGroupJSON(this.vwr, mode.toLowerCase(), null, itaNo)); +}if (itaNo > 0 || args[0].tok == 4) { +if (xyzList.toUpperCase().startsWith("AFLOW/")) { +return mp.addXObj(this.vwr.getSymTemp().getSpaceGroupJSON(this.vwr, "AFLOW", xyzList.substring(6), 0)); +}if (xyzList.startsWith("Hall:") || xyzList.indexOf("x") >= 0 || unitCellParams != null) { +return mp.addXObj(this.vwr.findSpaceGroup(null, null, xyzList, unitCellParams, null, null, 1)); +}if (itaNo > 0 || !xyzList.endsWith(":") && !Double.isNaN(JU.PT.parseFloat(xyzList))) xyzList = "ITA/" + xyzList; +if ("setting".equalsIgnoreCase(xyzList)) { +var sym = this.vwr.getOperativeSymmetry(); +return mp.addXObj(sym == null ? null : sym.getSpaceGroupJSON(this.vwr, "settings", null, -2147483648)); +}if (xyzList.toUpperCase().startsWith("ITA/")) { +return mp.addXObj(this.vwr.getSymTemp().getSpaceGroupJSON(this.vwr, "ITA", xyzList.substring(4), 0)); +}} else { +var atoms = JS.SV.getBitSet(args[0], true); +if (atoms != null) { +return mp.addXObj(this.vwr.findSpaceGroup(null, atoms, null, unitCellParams, null, null, 1)); +}}break; +} +return mp.addXObj(this.vwr.getSymTemp().getSpaceGroupInfoObj(xyzList, unitCellParams, true, false)); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluatePointGroup", +function(mp, args, isAtomProperty){ +var pts = null; +var center = null; +var distanceTolerance = -1; +var linearTolerance = -1; +var bsAtoms = null; +var isSpaceGroup = false; +switch (args.length) { +case 4: +linearTolerance = args[3].asFloat(); +case 3: +distanceTolerance = args[2].asFloat(); +case 2: +switch (args[1].tok) { +case 8: +center = JS.SV.ptValue(args[1]); +break; +case 10: +bsAtoms = JS.SV.getBitSet(args[1], false); +if (args[0].asString().equalsIgnoreCase("spaceGroup")) { +isSpaceGroup = true; +if (args.length == 2) distanceTolerance = 0; +}break; +} +if (isSpaceGroup) break; +case 1: +switch (args[0].tok) { +case 7: +var points = args[0].getList(); +pts = new Array(points.size()); +for (var i = pts.length; --i >= 0; ) pts[i] = JS.SV.ptValue(points.get(i)); + +break; +case 10: +bsAtoms = JS.SV.getBitSet(args[0], false); +pts = this.vwr.ms.at; +break; +case 4: +if (isAtomProperty) { +bsAtoms = JS.SV.getBitSet(mp.getX(), true); +if (bsAtoms == null || bsAtoms.isEmpty()) return false; +var s = args[0].asString(); +if ("spacegroup".equals(s)) { +isSpaceGroup = true; +break; +}}default: +return false; +} +break; +case 0: +if (!isAtomProperty) { +return mp.addXObj(this.vwr.ms.getPointGroupInfo(null)); +}bsAtoms = JS.SV.getBitSet(mp.getX(), false); +break; +default: +return false; +} +if (bsAtoms != null) { +var iatom = bsAtoms.nextSetBit(0); +if (iatom < 0 || iatom >= this.vwr.ms.ac || isSpaceGroup && bsAtoms.cardinality() != 1) return false; +if (isSpaceGroup) { +var lst = this.vwr.ms.generateCrystalClass(iatom, JU.P3.new3(NaN, NaN, NaN)); +pts = new Array(lst.size()); +for (var i = pts.length; --i >= 0; ) pts[i] = lst.get(i); + +center = new JU.P3(); +}}var pointGroup = this.vwr.getSymTemp().setPointGroup(this.vwr, null, center, (pts == null ? this.vwr.ms.at : pts), bsAtoms, false, distanceTolerance < 0 ? this.vwr.getFloat(570425382) : distanceTolerance, linearTolerance < 0 ? this.vwr.getFloat(570425384) : linearTolerance, (bsAtoms == null ? pts.length : bsAtoms.cardinality()), true); +return mp.addXMap(pointGroup.getPointGroupInfo(-1, null, true, null, 0, 1)); +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz.defineMethod(c$, "evaluateUnitCell", +function(mp, args, isSelector, tok){ +var x1 = (isSelector ? JS.SV.getBitSet(mp.getX(), true) : tok == 1812599299 ? this.vwr.getAllAtoms() : null); +var iatom = ((x1 == null ? this.vwr.getAllAtoms() : x1).nextSetBit(0)); +var lastParam = args.length - 1; +var scale = 1; +switch (lastParam < 0 ? 0 : args[lastParam].tok) { +case 2: +case 3: +scale = args[lastParam].asFloat(); +lastParam--; +break; +} +var normalize = false; +var tok0 = (lastParam < 0 ? 0 : args[0].tok); +var ucnew = null; +var uc = null; +var arg0 = null; +switch (tok0) { +case 7: +uc = args[0].getList(); +break; +case 12: +switch (lastParam > 1 ? 1073741936 : lastParam < 1 ? 0 : args[1].tok) { +default: +case 1073741936: +return false; +case 0: +case 1073742334: +break; +case 1073742335: +normalize = true; +break; +} +return mp.addXStr(this.vwr.getSymStatic().staticGetTransformABC(args[0].value, normalize)); +case 4: +arg0 = args[0].asString(); +if (tok == 1814695966) { +if (arg0.indexOf("a=") == 0) { +ucnew = new Array(4); +for (var i = 0; i < 4; i++) ucnew[i] = new JU.P3(); + +JU.SimpleUnitCell.setAbc(arg0, null, ucnew); +} else if (arg0.indexOf(",") >= 0 || arg0.equals("r")) { +var asMatrix = (args.length == 2 && JS.SV.bValue(args[1])); +var ret; +if (asMatrix) { +ret = this.vwr.getSymTemp().convertTransform(arg0, null); +} else { +ret = this.vwr.getV0abc(-1, arg0); +}return mp.addXObj(ret); +}}break; +} +if (tok == 1812599299) { +var b = this.vwr.ms.getBoxInfo(x1, 1); +return mp.addXObj(b.getInfo(arg0)); +}var u = null; +var haveUC = (uc != null); +if (ucnew == null && haveUC && uc.size() < 4) return false; +var ptParam = (haveUC ? 1 : 0); +if (ucnew == null && !haveUC && tok0 != 8) { +u = (iatom < 0 ? this.vwr.getCurrentUnitCell() : this.vwr.ms.getUnitCell(this.vwr.ms.at[iatom].mi)); +ucnew = (u == null ? Clazz.newArray(-1, [JU.P3.new3(0, 0, 0), JU.P3.new3(1, 0, 0), JU.P3.new3(0, 1, 0), JU.P3.new3(0, 0, 1)]) : u.getUnitCellVectors()); +}if (ucnew == null) { +ucnew = new Array(4); +if (haveUC) { +switch (uc.size()) { +case 3: +ucnew[0] = new JU.P3(); +for (var i = 0; i < 3; i++) ucnew[i + 1] = JU.P3.newP(JS.SV.ptValue(uc.get(i))); + +break; +case 4: +for (var i = 0; i < 4; i++) ucnew[i] = JU.P3.newP(JS.SV.ptValue(uc.get(i))); + +break; +case 6: +var params = Clazz.newFloatArray (6, 0); +for (var i = 0; i < 6; i++) params[i] = uc.get(i).asFloat(); + +JU.SimpleUnitCell.setAbc(null, params, ucnew); +break; +default: +return false; +} +} else { +ucnew[0] = JU.P3.newP(JS.SV.ptValue(args[0])); +switch (lastParam) { +case 3: +for (var i = 1; i < 4; i++) (ucnew[i] = JU.P3.newP(JS.SV.ptValue(args[i]))).sub(ucnew[0]); + +break; +case 1: +var l = args[1].getList(); +if (l != null && l.size() == 3) { +for (var i = 0; i < 3; i++) ucnew[i + 1] = JU.P3.newP(JS.SV.ptValue(l.get(i))); + +break; +}default: +return false; +} +}}var op = (ptParam <= lastParam ? args[ptParam].asString() : null); +var toPrimitive = "primitive".equalsIgnoreCase(op); +if (toPrimitive || "conventional".equalsIgnoreCase(op)) { +var stype = (++ptParam > lastParam ? "" : args[ptParam].asString().toUpperCase()); +if (stype.equals("BCC")) stype = "I"; + else if (stype.length == 0) stype = this.vwr.getSymmetryInfo(iatom, null, 0, null, null, null, 1073741994, null, 0, -1, 0, null); +if (stype == null || stype.length == 0) return false; +if (u == null) u = this.vwr.getSymTemp(); +var m3 = this.vwr.getModelForAtomIndex(iatom).auxiliaryInfo.get("primitiveToCrystal"); +if (!u.toFromPrimitive(toPrimitive, stype.charAt(0), ucnew, m3)) return false; +} else if ("reciprocal".equalsIgnoreCase(op)) { +ucnew = JU.SimpleUnitCell.getReciprocal(ucnew, null, scale); +scale = 1; +} else if ("vertices".equalsIgnoreCase(op)) { +return mp.addXObj(JU.BoxInfo.getVerticesFromOABC(ucnew)); +}if (scale != 1) for (var i = 1; i < 4; i++) ucnew[i].scale(scale); + +return mp.addXObj(ucnew); +}, "JS.ScriptMathProcessor,~A,~B,~N"); +Clazz.defineMethod(c$, "evaluateArray", +function(mp, args, isSelector){ +if (isSelector) { +var x1 = mp.getX(); +switch (args.length == 1 ? x1.tok : 0) { +case 6: +var lst = new JU.Lst(); +var id = args[0].asString(); +var map = x1.getMap(); +var keys = x1.getKeys(false); +for (var i = 0, n = keys.length; i < n; i++) if (map.get(keys[i]).getMap() == null) return false; + +for (var i = 0, n = keys.length; i < n; i++) { +var m = map.get(keys[i]); +var m1 = m.getMap(); +var m2 = JS.SV.deepCopy(m1, true, false); +m2.put(id, JS.SV.newS(keys[i])); +lst.addLast(JS.SV.newV(6, m2)); +} +return mp.addXList(lst); +case 7: +var map1 = new java.util.Hashtable(); +var lst1 = x1.getList(); +var id1 = args[0].asString(); +for (var i = 0, n = lst1.size(); i < n; i++) { +var m0 = lst1.get(i).getMap(); +if (m0 == null || m0.get(id1) == null) return false; +} +for (var i = 0, n = lst1.size(); i < n; i++) { +var m = lst1.get(i); +var m1 = JS.SV.deepCopy(m.getMap(), true, false); +var mid = m1.remove(id1); +map1.put(mid.asString(), JS.SV.newV(6, m1)); +} +return mp.addXObj(map1); +} +return false; +}var a = new Array(args.length); +for (var i = a.length; --i >= 0; ) a[i] = JS.SV.newT(args[i]); + +return mp.addXAV(a); +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz.defineMethod(c$, "evaluateBin", +function(mp, args){ +var n = args.length; +if (n < 3 || n > 5) return false; +var x1 = mp.getX(); +var isListf = (x1.tok == 13); +if (!isListf && x1.tok != 7) return mp.addX(x1); +var f0 = JS.SV.fValue(args[0]); +var f1 = JS.SV.fValue(args[1]); +var df = JS.SV.fValue(args[2]); +var addBins = (n >= 4 && args[n - 1].tok == 1073742335); +var key = ((n == 5 || n == 4 && !addBins) && args[3].tok != 1073742334 ? JS.SV.sValue(args[3]) : null); +var data; +var maps = null; +if (isListf) { +data = x1.value; +} else { +var list = x1.getList(); +data = Clazz.newFloatArray (list.size(), 0); +if (key != null) maps = JU.AU.createArrayOfHashtable(list.size()); +try { +for (var i = list.size(); --i >= 0; ) data[i] = JS.SV.fValue(key == null ? list.get(i) : (maps[i] = list.get(i).getMap()).get(key)); + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}var nbins = Math.max(Clazz.doubleToInt(Math.floor((f1 - f0) / df + 0.01)), 1); +var array = Clazz.newIntArray (nbins, 0); +var nPoints = data.length; +for (var i = 0; i < nPoints; i++) { +var v = data[i]; +var bin = Clazz.doubleToInt(Math.floor((v - f0) / df)); +if (bin < 0 || bin >= nbins) continue; +array[bin]++; +if (key != null) { +var map = maps[i]; +if (map == null) continue; +map.put("_bin", JS.SV.newI(bin)); +var v1 = f0 + df * bin; +var v2 = v1 + df; +map.put("_binMin", JS.SV.newF(bin == 0 ? -3.4028235E38 : v1)); +map.put("_binMax", JS.SV.newF(bin == nbins - 1 ? 3.4028235E38 : v2)); +}} +if (addBins) { +var lst = new JU.Lst(); +for (var i = 0; i < nbins; i++) lst.addLast( Clazz.newFloatArray(-1, [f0 + df * i, array[i]])); + +return mp.addXList(lst); +}return mp.addXAI(array); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateCache", +function(mp, args){ +if (args.length > 0) return false; +return mp.addXMap(this.vwr.fm.cacheList()); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateColor", +function(mp, args){ +var colorScheme = (args.length > 0 ? JS.SV.sValue(args[0]) : ""); +var isIsosurface = colorScheme.startsWith("$"); +if (args.length == 2 && colorScheme.equalsIgnoreCase("TOHSL")) return mp.addXPt(JU.CU.rgbToHSL(JU.P3.newP(args[1].tok == 8 ? JS.SV.ptValue(args[1]) : JU.CU.colorPtFromString(args[1].asString())), true)); +if (args.length == 2 && colorScheme.equalsIgnoreCase("TORGB")) { +var pt = JU.P3.newP(args[1].tok == 8 ? JS.SV.ptValue(args[1]) : JU.CU.colorPtFromString(args[1].asString())); +return mp.addXPt(args[1].tok == 8 ? JU.CU.hslToRGB(pt) : pt); +}if (args.length == 4 && (args[3].tok == 1073742335 || args[3].tok == 1073742334)) { +var pt1 = JU.P3.newP(args[0].tok == 8 ? JS.SV.ptValue(args[0]) : JU.CU.colorPtFromString(args[0].asString())); +var pt2 = JU.P3.newP(args[1].tok == 8 ? JS.SV.ptValue(args[1]) : JU.CU.colorPtFromString(args[1].asString())); +var usingHSL = (args[3].tok == 1073742335); +if (usingHSL) { +pt1 = JU.CU.rgbToHSL(pt1, false); +pt2 = JU.CU.rgbToHSL(pt2, false); +}var sb = new JU.SB(); +var vd = JU.V3.newVsub(pt2, pt1); +var n = args[2].asInt(); +if (n < 2) n = 20; +vd.scale(1 / (n - 1)); +for (var i = 0; i < n; i++) { +sb.append(JU.Escape.escapeColor(JU.CU.colorPtToFFRGB(usingHSL ? JU.CU.hslToRGB(pt1) : pt1))); +pt1.add(vd); +} +return mp.addXStr(sb.toString()); +}var ce = (isIsosurface ? null : this.vwr.cm.getColorEncoder(colorScheme)); +if (!isIsosurface && ce == null) return mp.addXStr(""); +var lo = (args.length > 1 ? JS.SV.fValue(args[1]) : 3.4028235E38); +var hi = (args.length > 2 ? JS.SV.fValue(args[2]) : 3.4028235E38); +var value = (args.length > 3 ? JS.SV.fValue(args[3]) : 3.4028235E38); +var getValue = (value != 3.4028235E38 || lo != 3.4028235E38 && hi == 3.4028235E38); +var haveRange = (hi != 3.4028235E38); +if (!haveRange && colorScheme.length == 0) { +value = lo; +var range = this.vwr.getCurrentColorRange(); +lo = range[0]; +hi = range[1]; +}if (isIsosurface) { +var id = colorScheme.substring(1); +var data = Clazz.newArray(-1, [id, null]); +if (!this.vwr.shm.getShapePropertyData(24, "colorEncoder", data)) return mp.addXStr(""); +ce = data[1]; +} else { +ce.setRange(lo, hi, lo > hi); +}var key = ce.getColorKey(); +if (getValue) return mp.addXPt(JU.CU.colorPtFromInt(ce.getArgb(hi == 3.4028235E38 ? lo : value), null)); +return mp.addX(JS.SV.getVariableMap(key)); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateCompare", +function(mp, args){ +var narg = args.length; +if (narg < 2 || narg > 5) return false; +var stddev; +var isTrue = (args[narg - 1].tok == 1073742335); +if (isTrue || args[narg - 1].tok == 1073742334) narg--; +var sOpt = JS.SV.sValue(args[narg - 1]); +var isStdDev = sOpt.equalsIgnoreCase("stddev"); +var isIsomer = sOpt.equalsIgnoreCase("ISOMER"); +var isTautomer = isIsomer && isTrue; +var isBonds = sOpt.equalsIgnoreCase("BONDS"); +var isPoints = (args[0].tok == 7 && args[1].tok == 7); +var abmap = (narg >= 3 ? args[2].getList() : null); +var isSmiles = (abmap == null && !isPoints && !isIsomer && narg > (isStdDev ? 3 : 2)); +var bs1 = (args[0].tok == 10 ? args[0].value : null); +var bs2 = (args[1].tok == 10 ? args[1].value : null); +var smiles1 = (bs1 == null ? JS.SV.sValue(args[0]) : ""); +var smiles2 = (bs2 == null ? JS.SV.sValue(args[1]) : ""); +stddev = NaN; +try { +if (isBonds) { +if (narg != 4) return false; +smiles1 = JS.SV.sValue(args[2]); +isSmiles = smiles1.equalsIgnoreCase("SMILES"); +try { +if (isSmiles) smiles1 = this.vwr.getSmiles(bs1); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +var data = this.e.getSmilesExt().getFlexFitList(bs1, bs2, smiles1, !isSmiles); +return (data == null ? mp.addXStr("") : mp.addXAF(data)); +}if (isIsomer) { +if (narg != 3) return false; +if (bs1 == null && bs2 == null) { +var ret = this.vwr.getSmilesMatcher().getRelationship(smiles1, smiles2).toUpperCase(); +return mp.addXStr(ret); +}var mf1 = (bs1 == null ? this.vwr.getSmilesMatcher().getMolecularFormula(smiles1, false, false) : JU.JmolMolecule.getMolecularFormulaAtoms(this.vwr.ms.at, bs1, null, false)); +var mf2 = (bs2 == null ? this.vwr.getSmilesMatcher().getMolecularFormula(smiles2, false, false) : JU.JmolMolecule.getMolecularFormulaAtoms(this.vwr.ms.at, bs2, null, false)); +if (!mf1.equals(mf2)) return mp.addXStr("NONE"); +if (bs1 != null) smiles1 = this.e.getSmilesExt().getSmilesMatches("/strict///", null, bs1, null, 1, true, false); +var check; +if (bs2 == null) { +check = (this.vwr.getSmilesMatcher().areEqual(smiles2, smiles1) > 0); +} else { +smiles2 = this.e.getSmilesExt().getSmilesMatches("/strict///", null, bs2, null, 1, true, false); +check = ((this.e.getSmilesExt().getSmilesMatches("/strict///" + smiles1, null, bs2, null, 1, true, false)).nextSetBit(0) >= 0); +}if (!check) { +var s = smiles1 + smiles2; +if (s.indexOf("/") >= 0 || s.indexOf("\\") >= 0 || s.indexOf("@") >= 0) { +if (smiles1.indexOf("@") >= 0 && (bs2 != null || smiles2.indexOf("@") >= 0) && smiles1.indexOf("@SP") < 0) { +var pt = smiles1.toLowerCase().indexOf("invertstereo"); +smiles1 = (pt >= 0 ? "/strict/" + smiles1.substring(0, pt) + smiles1.substring(pt + 12) : "/invertstereo strict/" + smiles1); +if (bs2 == null) { +check = (this.vwr.getSmilesMatcher().areEqual(smiles1, smiles2) > 0); +} else { +check = ((this.e.getSmilesExt().getSmilesMatches(smiles1, null, bs2, null, 1, true, false)).nextSetBit(0) >= 0); +}if (check) return mp.addXStr("ENANTIOMERS"); +}if (bs2 == null) { +check = (this.vwr.getSmilesMatcher().areEqual("/nostereo/" + smiles2, smiles1) > 0); +} else { +var ret = this.e.getSmilesExt().getSmilesMatches("/nostereo/" + smiles1, null, bs2, null, 1, true, false); +check = ((ret).nextSetBit(0) >= 0); +}if (check) return mp.addXStr("DIASTEREOMERS"); +}var ret = "CONSTITUTIONAL ISOMERS"; +if (isTautomer) { +var inchi = this.vwr.getInchi(bs1, null, null); +if (inchi != null && inchi.equals(this.vwr.getInchi(bs2, null, null))) ret = "TAUTOMERS"; +}return mp.addXStr(ret); +}if (bs1 == null || bs2 == null) return mp.addXStr("IDENTICAL"); +stddev = this.e.getSmilesExt().getSmilesCorrelation(bs1, bs2, smiles1, null, null, null, null, false, null, null, false, 1); +return mp.addXStr(stddev < 0.2 ? "IDENTICAL" : "IDENTICAL or CONFORMATIONAL ISOMERS (RMSD=" + stddev + ")"); +}var m = new JU.M4(); +var ptsA = null; +var ptsB = null; +if (isSmiles) { +if (bs1 == null || bs2 == null) return false; +sOpt = JS.SV.sValue(args[2]); +var isMap = sOpt.equalsIgnoreCase("MAP"); +isSmiles = sOpt.equalsIgnoreCase("SMILES"); +var isSearch = (isMap || sOpt.equalsIgnoreCase("SMARTS")); +if (isSmiles || isSearch) sOpt = (narg > (isStdDev ? 4 : 3) ? JS.SV.sValue(args[3]) : null); +var hMaps = (("H".equalsIgnoreCase(sOpt) || "allH".equalsIgnoreCase(sOpt) || "bestH".equalsIgnoreCase(sOpt))); +var isPolyhedron = !hMaps && ("polyhedra".equalsIgnoreCase(sOpt) || "polyhedron".equalsIgnoreCase(sOpt)); +if (isPolyhedron) { +stddev = this.e.getSmilesExt().mapPolyhedra(bs1.nextSetBit(0), bs2.nextSetBit(0), isSmiles, m); +} else { +ptsA = new JU.Lst(); +ptsB = new JU.Lst(); +var allMaps = (("all".equalsIgnoreCase(sOpt) || "allH".equalsIgnoreCase(sOpt))); +var bestMap = (("best".equalsIgnoreCase(sOpt) || "bestH".equalsIgnoreCase(sOpt))); +if ("stddev".equals(sOpt)) sOpt = null; +var pattern = sOpt; +if (sOpt == null || hMaps || allMaps || bestMap) { +if (!isMap && !isSmiles || hMaps && isPolyhedron) return false; +pattern = "/noaromatic" + (allMaps || bestMap ? "/" : " nostereo/") + this.e.getSmilesExt().getSmilesMatches((hMaps ? "H" : ""), null, bs1, null, 32769, true, false); +} else { +allMaps = true; +}stddev = this.e.getSmilesExt().getSmilesCorrelation(bs1, bs2, pattern, ptsA, ptsB, m, null, isMap, null, null, bestMap, (isSmiles ? 1 : 2) | (!allMaps && !bestMap ? 8 : 0)); +if (isMap) { +var nAtoms = ptsA.size(); +if (nAtoms == 0) return mp.addXStr(""); +var nMatch = Clazz.doubleToInt(ptsB.size() / nAtoms); +var ret = new JU.Lst(); +for (var i = 0, pt = 0; i < nMatch; i++) { +var a = JU.AU.newInt2(nAtoms); +ret.addLast(a); +for (var j = 0; j < nAtoms; j++, pt++) a[j] = Clazz.newIntArray(-1, [(ptsA.get(j)).i, (ptsB.get(pt)).i]); + +} +return (allMaps ? mp.addXList(ret) : ret.size() > 0 ? mp.addXAII(ret.get(0)) : mp.addXStr("")); +}}} else { +ptsA = this.e.getPointVector(args[0], 0); +ptsB = this.e.getPointVector(args[1], 0); +if (ptsA == null || ptsB == null) return false; +if (abmap != null) { +narg--; +var n = abmap.size(); +if (n > ptsA.size() || n != ptsB.size()) return false; +var list = new JU.Lst(); +for (var i = 0; i < n; i++) list.addLast(ptsA.get(abmap.get(i).intValue - 1)); + +ptsA = list; +}switch (narg) { +case 2: +break; +case 3: +if (isStdDev) break; +default: +return false; +} +if (ptsA.size() == ptsB.size()) { +J.api.Interface.getInterface("JU.Eigen", this.vwr, "script"); +stddev = JU.Measure.getTransformMatrix4(ptsA, ptsB, m, null); +}}return (isStdDev || Float.isNaN(stddev) ? mp.addXFloat(stddev) : mp.addXM4(m.round(1e-7))); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage() == null ? ex.toString() : ex.getMessage(), null); +return false; +} else { +throw ex; +} +} +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateConnected", +function(mp, args, tok, intValue){ +if (args.length > 5) return false; +var min = -2147483648; +var max = 2147483647; +var fmin = 0; +var fmax = 3.4028235E38; +var order = 65535; +var atoms1 = null; +var atoms2 = null; +var haveDecimal = false; +var isBonds = false; +switch (tok) { +case 1275203608: +var nv = -2147483648; +var smiles = null; +if (args.length > 0) { +switch (args[0].tok) { +case 2: +nv = args[0].intValue; +break; +case 4: +smiles = JS.SV.sValue(args[0]); +break; +} +}if (intValue == 1275203608) atoms1 = JS.SV.getBitSet(mp.getX(), true); +var data = Clazz.newArray(-1, [Integer.$valueOf(nv), smiles, atoms1]); +if (!this.vwr.shm.getShapePropertyData(21, "getCenters", data)) data[1] = null; +return mp.addXBs(data[1] == null ? new JU.BS() : data[1]); +case 1228931586: +var x1 = mp.getX(); +if (x1.tok != 10 || args.length != 1 || args[0].tok != 10) return false; +atoms1 = x1.value; +atoms2 = args[0].value; +var list = new JU.Lst(); +var atoms = this.vwr.ms.at; +for (var i = atoms1.nextSetBit(0); i >= 0; i = atoms1.nextSetBit(i + 1)) { +var n = 0; +var b = atoms[i].bonds; +for (var j = b.length; --j >= 0; ) if (atoms2.get(b[j].getOtherAtom(atoms[i]).i)) n++; + +list.addLast(Integer.$valueOf(n)); +} +return mp.addXList(list); +} +for (var i = 0; i < args.length; i++) { +var $var = args[i]; +switch ($var.tok) { +case 10: +isBonds = (Clazz.instanceOf($var.value,"JM.BondSet")); +if (isBonds && atoms1 != null) return false; +if (atoms1 == null) atoms1 = $var.value; + else if (atoms2 == null) atoms2 = $var.value; + else return false; +break; +case 4: +var type = JS.SV.sValue($var); +if (type.equalsIgnoreCase("hbond")) order = 30720; + else order = JU.Edge.getBondOrderFromString(type); +if (order == 131071) return false; +break; +case 3: +haveDecimal = true; +default: +var n = $var.asInt(); +var f = $var.asFloat(); +if (max != 2147483647) return false; +if (min == -2147483648) { +min = Math.max(n, 0); +fmin = f; +} else { +max = n; +fmax = f; +}} +} +if (min == -2147483648) { +min = 1; +max = 100; +fmin = 0.1; +fmax = 1.0E8; +} else if (max == 2147483647) { +max = min; +fmax = fmin; +fmin = 0.1; +}if (atoms1 == null) atoms1 = this.vwr.getAllAtoms(); +if (haveDecimal && atoms2 == null) atoms2 = atoms1; +if (atoms2 != null) { +var bsBonds = new JU.BS(); +this.vwr.makeConnections(fmin, fmax, order, 1086324745, atoms1, atoms2, bsBonds, isBonds, false, 0); +return mp.addX(JS.SV.newV(10, JM.BondSet.newBS(bsBonds))); +}return mp.addXBs(this.vwr.ms.getAtomsConnected(min, max, order, atoms1)); +}, "JS.ScriptMathProcessor,~A,~N,~N"); +Clazz.defineMethod(c$, "evaluateContact", +function(mp, args){ +if (args.length < 1 || args.length > 3) return false; +var i = 0; +var distance = 100; +var tok = args[0].tok; +switch (tok) { +case 3: +case 2: +distance = JS.SV.fValue(args[i++]); +break; +case 10: +break; +default: +return false; +} +if (i == args.length || !(Clazz.instanceOf(args[i].value,"JU.BS"))) return false; +var bsA = JU.BSUtil.copy(args[i++].value); +var bsB = (i < args.length ? JU.BSUtil.copy(args[i].value) : null); +var rd = new J.atomdata.RadiusData(null, (distance > 10 ? distance / 100 : distance), (distance > 10 ? J.atomdata.RadiusData.EnumType.FACTOR : J.atomdata.RadiusData.EnumType.OFFSET), J.c.VDW.AUTO); +bsB = this.setContactBitSets(bsA, bsB, true, NaN, rd, false); +bsB.or(bsA); +return mp.addXBs(bsB); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateData", +function(mp, args){ +var selected = (args.length == 0 ? "" : JS.SV.sValue(args[0])); +switch (args.length) { +case 0: +case 1: +break; +case 2: +case 3: +if (args[0].tok == 10) return mp.addXStr(this.vwr.getModelFileData(selected, JS.SV.sValue(args[1]), args.length == 3 && JS.SV.bValue(args[2]))); +break; +case 4: +var iField = args[1].asInt(); +var nBytes = args[2].asInt(); +var firstLine = args[3].asInt(); +var f = JU.Parser.parseFloatArrayFromMatchAndField(JS.SV.sValue(args[0]), null, 0, 0, null, iField, nBytes, null, firstLine); +return mp.addXStr(JU.Escape.escapeFloatA(f, false)); +default: +return false; +} +if (selected.indexOf("data2d_") == 0) { +var f1 = this.vwr.getDataObj(selected, null, 2); +if (f1 == null) return mp.addXStr(""); +if (args.length == 2 && args[1].tok == 2) { +var pt = args[1].intValue; +if (pt < 0) pt += f1.length; +if (pt >= 0 && pt < f1.length) return mp.addXStr(JU.Escape.escapeFloatA(f1[pt], false)); +return mp.addXStr(""); +}return mp.addXStr(JU.Escape.escapeFloatAA(f1, false)); +}if (selected.endsWith("*")) return mp.addXList(this.vwr.getDataObj(selected, null, 0)); +if (selected.indexOf("property_") == 0) { +var f1 = this.vwr.getDataObj(selected, null, 1); +return (f1 == null ? mp.addXStr("") : mp.addXStr(JU.Escape.escapeFloatA(f1, false))); +}var data = this.vwr.getDataObj(selected, null, -1); +return mp.addXStr(data == null || data.length < 2 ? "" : "" + data[1]); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateDotDist", +function(mp, args, tok, op){ +var isDist = (tok == 1275069443); +var x1; +var x2; +var x3 = null; +switch (args.length) { +case 2: +if (op == 2147483647) { +x1 = args[0]; +x2 = args[1]; +break; +}x3 = args[1]; +case 1: +x1 = mp.getX(); +x2 = args[0]; +break; +case 0: +if (isDist) { +x1 = mp.getX(); +x2 = JS.SV.getVariable( new JU.P3()); +break; +}default: +return false; +} +var f = NaN; +try { +if (tok == 1275069442) { +var a = JU.P3.newP(mp.ptValue(x1, null)); +a.cross(a, mp.ptValue(x2, null)); +return mp.addXPt(a); +}var pt2 = (x2.tok == 7 ? null : mp.ptValue(x2, null)); +var plane2 = this.e.planeValue(x2); +if (isDist) { +var minMax = (op == -2147483648 ? 0 : op & 480); +var isMinMax = (minMax == 32 || minMax == 64); +var isAll = minMax == 480; +switch (x1.tok) { +case 7: +case 10: +var isAtomSet1 = (x1.tok == 10); +var isAtomSet2 = (x2.tok == 10); +var isPoint2 = (x2.tok == 8); +var bs1 = (isAtomSet1 ? x1.value : null); +var bs2 = (isAtomSet2 ? x2.value : null); +var list1 = (isAtomSet1 ? null : x1.getList()); +var list2 = (isAtomSet2 ? null : x2.getList()); +var returnAtom = (isMinMax && x3 != null && x3.asBoolean()); +switch (x2.tok) { +case 10: +case 7: +case 8: +var atoms = this.vwr.ms.at; +if (returnAtom) { +var dMinMax = NaN; +var iMinMax = 2147483647; +if (isAtomSet1) { +for (var i = bs1.nextSetBit(0); i >= 0; i = bs1.nextSetBit(i + 1)) { +var d = (isPoint2 ? atoms[i].distanceSquared(pt2) : (this.e.getBitsetProperty(bs2, list2, op, atoms[i], plane2, x1.value, null, false, x1.index, false)).floatValue()); +if (minMax == 32 ? d >= dMinMax : d <= dMinMax) continue; +dMinMax = d; +iMinMax = i; +} +return mp.addXBs(iMinMax == 2147483647 ? new JU.BS() : JU.BSUtil.newAndSetBit(iMinMax)); +}for (var i = list1.size(); --i >= 0; ) { +var pt = JS.SV.ptValue(list1.get(i)); +var d = (isPoint2 ? pt.distanceSquared(pt2) : (this.e.getBitsetProperty(bs2, list2, op, pt, plane2, x1.value, null, false, 2147483647, false)).floatValue()); +if (minMax == 32 ? d >= dMinMax : d <= dMinMax) continue; +dMinMax = d; +iMinMax = i; +} +return mp.addXInt(iMinMax); +}if (isAll) { +if (bs2 == null) { +var data = Clazz.newFloatArray (bs1.cardinality(), 0); +for (var p = 0, i = bs1.nextSetBit(0); i >= 0; i = bs1.nextSetBit(i + 1), p++) data[p] = atoms[i].distance(pt2); + +return mp.addXAF(data); +}var data2 = Clazz.newFloatArray (bs1.cardinality(), bs2.cardinality(), 0); +for (var p = 0, i = bs1.nextSetBit(0); i >= 0; i = bs1.nextSetBit(i + 1), p++) for (var q = 0, j = bs2.nextSetBit(0); j >= 0; j = bs2.nextSetBit(j + 1), q++) data2[p][q] = atoms[i].distance(atoms[j]); + + +return mp.addXAFF(data2); +}if (isMinMax) { +var data = Clazz.newFloatArray (isAtomSet1 ? bs1.cardinality() : list1.size(), 0); +if (isAtomSet1) { +for (var i = bs1.nextSetBit(0), p = 0; i >= 0; i = bs1.nextSetBit(i + 1)) data[p++] = (this.e.getBitsetProperty(bs2, list2, op, atoms[i], plane2, x1.value, null, false, x1.index, false)).floatValue(); + +return mp.addXAF(data); +}for (var i = data.length; --i >= 0; ) data[i] = (this.e.getBitsetProperty(bs2, list2, op, JS.SV.ptValue(list1.get(i)), plane2, null, null, false, 2147483647, false)).floatValue(); + +return mp.addXAF(data); +}return mp.addXObj(this.e.getBitsetProperty(bs1, list1, op, pt2, plane2, x1.value, null, false, x1.index, false)); +} +} +}var pt1 = mp.ptValue(x1, null); +var plane1 = this.e.planeValue(x1); +if (isDist) { +if (plane2 != null && x3 != null) f = JU.Measure.directedDistanceToPlane(pt1, plane2, JS.SV.ptValue(x3)); + else f = (plane1 == null ? (plane2 == null ? pt2.distance(pt1) : JU.Measure.distanceToPlane(plane2, pt1)) : JU.Measure.distanceToPlane(plane1, pt2)); +} else { +if (plane1 != null && plane2 != null) { +f = plane1.x * plane2.x + plane1.y * plane2.y + plane1.z * plane2.z + plane1.w * plane2.w; +} else { +if (plane1 != null) pt1 = JU.P3.new3(plane1.x, plane1.y, plane1.z); + else if (plane2 != null) pt2 = JU.P3.new3(plane2.x, plane2.y, plane2.z); +f = pt1.dot(pt2); +}}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return mp.addXFloat(f); +}, "JS.ScriptMathProcessor,~A,~N,~N"); +Clazz.defineMethod(c$, "evaluateHelix", +function(mp, args){ +if (args.length < 1 || args.length > 5) return false; +var pt = (args.length > 2 ? 3 : 1); +var type = (pt >= args.length ? "array" : JS.SV.sValue(args[pt])); +var tok = JS.T.getTokFromName(type); +if (args.length > 2) { +var pta = mp.ptValue(args[0], null); +var ptb = mp.ptValue(args[1], null); +if (tok == 0 || args[2].tok != 9 || pta == null || ptb == null) return false; +var dq = JU.Quat.newP4(args[2].value); +var data = JU.Measure.computeHelicalAxis(pta, ptb, dq); +return (data == null ? false : mp.addXObj(JU.Escape.escapeHelical(type, tok, pta, ptb, data))); +}var bs = (Clazz.instanceOf(args[0].value,"JU.BS") ? args[0].value : this.vwr.ms.getAtoms(1094715412, Integer.$valueOf(args[0].asInt()))); +switch (tok) { +case 134217751: +case 1073741854: +case 1665140738: +return mp.addXObj(this.getHelixData(bs, tok)); +case 134217729: +return mp.addXFloat((this.getHelixData(bs, 134217729)).floatValue()); +case 135176: +case 1745489939: +return mp.addXObj(this.getHelixData(bs, tok)); +case 1275068418: +var data = this.getHelixData(bs, 1073742001); +if (data == null) return false; +return mp.addXAS(data); +} +return false; +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "getHelixData", +function(bs, tokType){ +var iAtom = bs.nextSetBit(0); +return (iAtom < 0 ? "null" : this.vwr.ms.at[iAtom].group.getHelixData(tokType, this.vwr.getQuaternionFrame(), this.vwr.getInt(553648142))); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "evaluateInChI", +function(mp, args){ +var x1 = mp.getX(); +var flags = (args.length > 0 ? JS.SV.sValue(args[0]) : "fixedh?"); +if (flags.toLowerCase().equals("standard")) flags = ""; +var atoms = JS.SV.getBitSet(x1, true); +var molData = (atoms == null ? JS.SV.sValue(x1) : null); +return mp.addXStr(this.vwr.getInchi(atoms, molData, flags)); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateFind", +function(mp, args){ +var x1 = mp.getX(); +var isList = (x1.tok == 7); +var isAtoms = (x1.tok == 10); +var isEmpty = (args.length == 0); +var tok0 = (args.length == 0 ? 0 : args[0].tok); +var sFind = (isEmpty || tok0 != 4 ? "" : JS.SV.sValue(args[0])); +var isOff = (args.length > 1 && args[1].tok == 1073742334); +var tokLast = (tok0 == 0 ? 0 : args[args.length - 1].tok); +var argLast = (tokLast == 0 ? JS.SV.vF : args[args.length - 1]); +var isON = !isList && (tokLast == 1073742335); +var flags = (args.length > 1 && args[1].tok != 1073742335 && args[1].tok != 1073742334 && args[1].tok != 10 ? JS.SV.sValue(args[1]) : ""); +var isSequence = !isList && !isOff && sFind.equalsIgnoreCase("SEQUENCE"); +var isSeq = !isList && !isOff && sFind.equalsIgnoreCase("SEQ"); +if (sFind.toUpperCase().startsWith("SMILES/")) { +if (!sFind.endsWith("/")) sFind += "/"; +var s = sFind.substring(6) + "//"; +if (JV.JC.isSmilesCanonical(s)) { +flags = "SMILES"; +sFind = "CHEMICAL"; +} else { +sFind = "SMILES"; +flags = s + flags; +}} else if (sFind.toUpperCase().startsWith("SMARTS/")) { +if (!sFind.endsWith("/")) sFind += "/"; +flags = sFind.substring(6) + (flags.length == 0 ? "//" : flags); +sFind = "SMARTS"; +}var smiles = null; +var isStr = false; +if (x1.tok == 4) { +switch (args.length) { +case 1: +if ((x1.value).startsWith("InChI=")) { +if (sFind.equalsIgnoreCase("SMILES")) { +return mp.addXStr(this.vwr.getInchi(null, x1.value, "SMILES" + flags)); +}}isStr = true; +break; +case 2: +if (isOff || isON) { +isStr = true; +} else if ((x1.value).startsWith("InChI=")) { +if (sFind.equals("SMARTS")) { +smiles = this.vwr.getInchi(null, x1.value, "SMILES"); +} else { +isStr = true; +}} else if (flags.length <= 3) { +if (flags.$replace('m', ' ').$replace('i', ' ').$replace('v', ' ').trim().length == 0) isStr = true; +}break; +} +}var isSmiles = !isStr && sFind.equalsIgnoreCase("SMILES"); +var isSMARTS = !isStr && sFind.equalsIgnoreCase("SMARTS"); +var isChemical = !isList && !isStr && sFind.equalsIgnoreCase("CHEMICAL"); +var isMF = !isList && !isStr && sFind.equalsIgnoreCase("MF"); +var isCF = !isList && !isStr && sFind.equalsIgnoreCase("CELLFORMULA"); +var isInchi = isAtoms && !isList && sFind.equalsIgnoreCase("INCHI"); +var isInchiKey = isAtoms && !isList && sFind.equalsIgnoreCase("INCHIKEY"); +var isStructureMap = (!isSmiles && !isSMARTS && tok0 == 10 && flags.toLowerCase().indexOf("map") >= 0); +var isEquivalent = !isSmiles && !isSMARTS && ((x1.tok == 10 || x1.tok == 8 || x1.tok == 7) && sFind.toLowerCase().startsWith("equivalent")); +try { +if (isEquivalent) { +switch (x1.tok) { +case 10: +return mp.addXBs(this.vwr.ms.getSymmetryEquivAtoms(x1.value, null, null)); +case 8: +return mp.addXList(this.vwr.getSymmetryEquivPoints(x1.value, sFind + flags)); +case 7: +var lst = new JU.Lst(); +var l0 = x1.getList(); +for (var i = 0, n = l0.size(); i < n; i++) { +var p = JS.SV.ptValue(l0.get(i)); +if (p == null) return false; +lst.addLast(p); +} +return mp.addXList(this.vwr.getSymmetryEquivPointList(lst, sFind + flags)); +} +} else if (isInchi || isInchiKey) { +if (isInchiKey) flags += " key"; +return mp.addXStr(this.vwr.getInchi(JS.SV.getBitSet(x1, true), null, flags)); +}if (isChemical) { +var bsAtoms = (isAtoms ? x1.value : null); +var data = (bsAtoms == null ? JS.SV.sValue(x1) : this.vwr.getOpenSmiles(bsAtoms)); +data = (data.length == 0 ? "" : this.vwr.getChemicalInfo(data, flags.toLowerCase(), bsAtoms)).trim(); +if (data.startsWith("InChI")) data = JU.PT.rep(JU.PT.rep(data, "InChI=", ""), "InChIKey=", ""); +return mp.addXStr(data); +}if (isSmiles || isSMARTS || isAtoms) { +var iPt = (isStructureMap ? 0 : isSmiles || isSMARTS ? 2 : 1); +var bs2 = (iPt < args.length && args[iPt].tok == 10 ? args[iPt++].value : null); +var asBonds = ("bonds".equalsIgnoreCase(JS.SV.sValue(argLast))); +var isAll = (asBonds || isON); +var ret = null; +switch (x1.tok) { +case 7: +case 4: +if (smiles == null && !isList) { +smiles = JS.SV.sValue(x1); +}if ((isSmiles || isSMARTS) && args.length == 1) { +return false; +}if (bs2 != null) return false; +if (flags.equalsIgnoreCase("mf")) { +ret = this.vwr.getSmilesMatcher().getMolecularFormula(smiles, isSMARTS, isON); +} else { +var pattern = flags; +var allMappings = true; +var asMap = false; +switch (args.length) { +case 4: +allMappings = JS.SV.bValue(args[3]); +case 3: +asMap = JS.SV.bValue(args[2]); +break; +} +var isChirality = pattern.equals("chirality"); +var justOne = (!asMap && (!allMappings || !isSMARTS && !isChirality)); +try { +ret = this.e.getSmilesExt().getSmilesMatches(pattern, (isList ? JS.SV.strListValue(x1) : smiles), null, null, isSMARTS ? 2 : 1, !asMap, !allMappings); +if (isList) return mp.addXObj(ret); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +System.out.println(ex.getMessage()); +return mp.addXInt(-1); +} else { +throw ex; +} +} +var len = (isChirality ? 1 : JU.AU.isAI(ret) ? (ret).length : (ret).length); +if (len == 0 && this.vwr.getSmilesMatcher().getLastException() !== "MF_FAILED" && smiles.toLowerCase().indexOf("noaromatic") < 0 && smiles.toLowerCase().indexOf("strict") < 0) { +ret = this.e.getSmilesExt().getSmilesMatches(pattern, smiles, null, null, 16 | (isSMARTS ? 2 : 1), !asMap, !allMappings); +}if (justOne) { +return mp.addXInt(!allMappings && len > 0 ? 1 : len); +}}break; +case 10: +var bs = x1.value; +if (sFind.equalsIgnoreCase("spacegroup")) { +return mp.addXObj(this.vwr.findSpaceGroup(null, bs, null, null, null, null, ("parent".equals(flags.toLowerCase()) ? 8 : 0))); +}if (sFind.equalsIgnoreCase("crystalClass")) { +var n = bs.nextSetBit(0); +var bsNew = null; +if (args.length != 2) { +bsNew = new JU.BS(); +bsNew.set(n); +}return mp.addXList(this.vwr.ms.generateCrystalClass(n, (bsNew != null ? this.vwr.ms.getAtomSetCenter(bsNew) : argLast.tok == 10 ? this.vwr.ms.getAtomSetCenter(argLast.value) : JS.SV.ptValue(argLast)))); +}if (isMF && flags.length != 0) { +return mp.addXBs(JU.JmolMolecule.getBitSetForMF(this.vwr.ms.at, bs, flags)); +}if (isMF || isCF) { +var isEmpirical = isON; +return mp.addXStr(this.vwr.getFormulaForAtoms(bs, (isMF ? "MF" : "CELLFORMULA"), isEmpirical)); +}if (isSequence || isSeq) { +var isHH = (argLast.asString().equalsIgnoreCase("H")); +isAll = new Boolean (isAll | isHH).valueOf(); +return mp.addXStr(this.vwr.getSmilesOpt(bs, -1, -1, (isAll ? 3145728 | 5242880 | (isHH ? 9437184 : 0) : 0) | (isSeq ? 34603008 : 1048576), null)); +}if (isStructureMap) { +var map = null; +var map1 = null; +var map2 = null; +var mapNames = null; +var key = (args.length == 3 ? JS.SV.sValue(argLast) : null); +var itype = (key == null || key.equals("%i") || key.equals("number") ? 'i' : key.equals("%a") || key.equals("name") ? 'a' : key.equals("%D") || key.equals("index") ? 'D' : '?'); +if (key == null) key = "number"; +var err = null; +flags = flags.$replace("map", "").trim(); +sFind = this.vwr.getSmilesOpt(bs, 0, 0, 0, flags); +if (bs.cardinality() != bs2.cardinality()) { +err = "atom sets are not the same size"; +} else { +try { +var iflags = (137); +if (flags.length > 0) sFind = "/" + flags + "/" + sFind; +map1 = this.vwr.getSmilesMatcher().getCorrelationMaps(sFind, this.vwr.ms.at, this.vwr.ms.ac, bs, iflags)[0]; +var m2 = this.vwr.getSmilesMatcher().getCorrelationMaps(sFind, this.vwr.ms.at, this.vwr.ms.ac, bs2, iflags); +if (m2.length > 0) { +map = Clazz.newIntArray (bs.length(), 0); +for (var i = map.length; --i >= 0; ) map[i] = -1; + +map2 = m2[0]; +for (var i = map1.length; --i >= 0; ) map[map1[i]] = map2[i]; + +mapNames = Clazz.newArray(map1.length, 2, null); +var bsAll = JU.BS.copy(bs); +bsAll.or(bs2); +var names = (itype == '?' ? new Array(bsAll.length()) : null); +if (names != null) names = this.e.getCmdExt().getBitsetIdentFull(bsAll, key, false, 2147483647, false, names); +var at = this.vwr.ms.at; +for (var pt = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var j = map[i]; +if (j == -1) continue; +var a; +switch ((itype).charCodeAt(0)) { +case 97: +a = Clazz.newArray(-1, [at[i].getAtomName(), at[j].getAtomName()]); +break; +case 105: +a = Clazz.newArray(-1, [Integer.$valueOf(at[i].getAtomNumber()), Integer.$valueOf(at[j].getAtomNumber())]); +break; +case 68: +a = Clazz.newArray(-1, [Integer.$valueOf(i), Integer.$valueOf(j)]); +break; +default: +a = Clazz.newArray(-1, [names[i], names[j]]); +break; +} +mapNames[pt++] = a; +} +}} catch (ee) { +if (Clazz.exceptionOf(ee, Exception)){ +err = ee.getMessage(); +} else { +throw ee; +} +} +}var m = new java.util.Hashtable(); +m.put("BS1", bs); +m.put("BS2", bs2); +m.put("SMILES", sFind); +if (err == null) { +m.put("SMILEStoBS1", map1); +m.put("SMILEStoBS2", map2); +m.put("BS1toBS2", map); +m.put("MAP1to2", mapNames); +m.put("key", key); +} else { +m.put("error", err); +}return mp.addXMap(m); +}if (isSmiles || isSMARTS) { +sFind = (args.length > 1 && args[1].tok == 10 ? this.vwr.getSmilesOpt(args[1].value, 0, 0, 0, flags) : flags); +}flags = flags.toUpperCase(); +var bsMatch3D = bs2; +if (flags.indexOf("INCHI") >= 0) { +return mp.addXStr(this.vwr.getInchi(bs, null, "SMILES/" + flags)); +}if (flags.equals("MF")) { +smiles = this.e.getSmilesExt().getSmilesMatches("", null, bs, bsMatch3D, 1, true, false); +ret = this.vwr.getSmilesMatcher().getMolecularFormula(smiles, false, isON); +} else if (asBonds) { +var map = this.vwr.getSmilesMatcher().getCorrelationMaps(sFind, this.vwr.ms.at, this.vwr.ms.ac, bs, (isSmiles ? 1 : 2) | 8); +ret = (map.length > 0 ? this.vwr.ms.getDihedralMap(map[0]) : Clazz.newIntArray (0, 0)); +} else if (flags.equals("MAP")) { +var map = this.vwr.getSmilesMatcher().getCorrelationMaps(sFind, this.vwr.ms.at, this.vwr.ms.ac, bs, (isSmiles ? 1 : 2) | 128 | 16); +ret = map; +} else { +var smilesFlags = (isSmiles ? (flags.indexOf("OPEN") >= 0 ? 5 : 1) : 2) | (isON && sFind.length == 0 ? 22020096 : 0); +if (flags.indexOf("/MOLECULE/") >= 0) { +var mols = this.vwr.ms.getMolecules(); +var molList = new JU.Lst(); +for (var i = 0; i < mols.length; i++) { +if (mols[i].atomList.intersects(bs)) { +var bsRet = this.e.getSmilesExt().getSmilesMatches(sFind, null, mols[i].atomList, bsMatch3D, smilesFlags, !isON, false); +if (!bsRet.isEmpty()) molList.addLast(bsRet); +}} +ret = molList; +} else { +ret = this.e.getSmilesExt().getSmilesMatches(sFind, null, bs, bsMatch3D, smilesFlags, !isON, false); +}}break; +} +if (ret == null) this.e.invArg(); +return mp.addXObj(ret); +}} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +var bs = new JU.BS(); +var svlist = (isList ? x1.getList() : null); +if (isList && tok0 != 4 && tok0 != 0) { +var v = args[0]; +for (var i = 0, n = svlist.size(); i < n; i++) { +if (JS.SV.areEqual(svlist.get(i), v)) bs.set(i); +} +var ret = Clazz.newIntArray (bs.cardinality(), 0); +for (var pt = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) ret[pt++] = i + 1; + +return mp.addXAI(ret); +}var isReverse = (flags.indexOf("v") >= 0); +var isCaseInsensitive = (flags.indexOf("i") >= 0) || isOff; +var asMatch = (flags.indexOf("m") >= 0); +var checkEmpty = (sFind.length == 0); +var isPattern = (!checkEmpty && !isEquivalent && args.length == 2); +if (isList || isPattern) { +var pm = (isPattern ? this.getPatternMatcher() : null); +var pattern = null; +if (isPattern) { +try { +pattern = pm.compile(sFind, isCaseInsensitive); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.evalError(ex.toString(), null); +} else { +throw ex; +} +} +}var list = (checkEmpty ? null : JS.SV.strListValue(x1)); +var nlist = (checkEmpty ? svlist.size() : list.length); +if (JU.Logger.debugging) JU.Logger.debug("finding " + sFind); +var n = 0; +var matcher = null; +var v = (asMatch ? new JU.Lst() : null); +var what = ""; +for (var i = 0; i < nlist; i++) { +var isMatch; +if (checkEmpty) { +var o = svlist.get(i); +switch (o.tok) { +case 6: +isMatch = (o.getMap().isEmpty() != isEmpty); +break; +case 7: +isMatch = ((o.getList().size() == 0) != isEmpty); +break; +case 4: +isMatch = ((o.asString().length == 0) != isEmpty); +break; +default: +isMatch = true; +} +} else if (isPattern) { +what = list[i]; +matcher = pattern.matcher(what); +isMatch = matcher.find(); +} else { +isMatch = (JS.SV.sValue(svlist.get(i)).indexOf(sFind) >= 0); +}if (asMatch && isMatch || !asMatch && isMatch == !isReverse) { +n++; +bs.set(i); +if (asMatch) v.addLast(isReverse ? what.substring(0, matcher.start()) + what.substring(matcher.end()) : matcher.group()); +}} +if (!isList) { +return (asMatch ? mp.addXStr(v.size() == 1 ? v.get(0) : "") : isReverse ? mp.addXBool(n == 1) : asMatch ? mp.addXStr(n == 0 ? "" : matcher.group()) : mp.addXInt(n == 0 ? 0 : matcher.start() + 1)); +}if (asMatch) { +var listNew = new Array(n); +if (n > 0) for (var i = list.length; --i >= 0; ) if (bs.get(i)) { +--n; +listNew[n] = (asMatch ? v.get(n) : list[i]); +} +return mp.addXAS(listNew); +}var l = new JU.Lst(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) l.addLast(svlist.get(i)); + +return mp.addXList(l); +}if (isSequence) { +return mp.addXStr(this.vwr.getJBR().toStdAmino3(JS.SV.sValue(x1))); +}return mp.addXInt(JS.SV.sValue(x1).indexOf(sFind) + 1); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateGetProperty", +function(mp, args, tok0, isAtomProperty){ +var nargs = args.length; +var isSelect = (isAtomProperty && tok0 == 1275082241); +var isPivot = (isAtomProperty && tok0 == 1275068725); +var isAuxiliary = (tok0 == 1275068446); +var pt = 0; +var tok = (nargs == 0 ? 0 : args[0].tok); +if (nargs == 2 && (tok == 7 || tok == 6 || tok == 14)) { +return mp.addXObj(this.vwr.extractProperty(args[0].value, args[1].value.toString(), -1)); +}var bsSelect = (isAtomProperty && nargs == 1 && args[0].tok == 10 ? args[0].value : null); +var pname = (bsSelect == null && nargs > 0 ? JS.SV.sValue(args[pt++]) : ""); +var propertyName = pname; +var lc = propertyName.toLowerCase(); +if (!isSelect && lc.indexOf("[select ") < 0) propertyName = lc; +var isJSON = false; +if (propertyName.equals("json") && nargs > pt) { +isJSON = true; +propertyName = JS.SV.sValue(args[pt++]); +}var x = null; +if (isAtomProperty) { +x = mp.getX(); +switch (x.tok) { +case 10: +break; +case 4: +var name = x.value; +var data = new Array(3); +var shapeID; +if (name.startsWith("$")) { +name = name.substring(1); +shapeID = this.vwr.shm.getShapeIdFromObjectName(name); +if (shapeID >= 0) { +data[0] = name; +this.vwr.shm.getShapePropertyData(shapeID, "index", data); +if (data[1] != null && !pname.equals("index")) { +var index = (data[1]).intValue(); +data[1] = this.vwr.shm.getShapePropertyIndex(shapeID, pname.intern(), index); +}}} else { +shapeID = JV.JC.shapeTokenIndex(JS.T.getTokFromName(name)); +if (shapeID >= 0) { +data[0] = pname; +data[1] = Integer.$valueOf(-1); +this.vwr.shm.getShapePropertyData(shapeID, pname.intern(), data); +}}return (data[1] == null ? mp.addXStr("") : mp.addXObj(data[1])); +case 7: +if (isPivot) { +var lstx = x.getList(); +if (nargs == 0) return mp.addXObj(this.getMinMax(lstx, 1275068725, true)); +var map = new java.util.Hashtable(); +var sep = (nargs > 1 ? JS.SV.sValue(args[nargs - 1]) : null); +if (sep != null) nargs--; +var keys = new Array(nargs); +for (var i = 0; i < nargs; i++) keys[i] = JS.SV.sValue(args[i]); + +for (var i = 0, n = lstx.size(); i < n; i++) { +var sv = lstx.get(i); +if (sv.tok != 6) continue; +var mapi = sv.getMap(); +var key = ""; +for (var j = 0; j < nargs; j++) { +var obj = mapi.get(keys[j]); +key += (j == 0 ? "" : sep) + JS.SV.sValue(obj); +} +var vlist = map.get(key); +if (vlist == null) map.put(key, vlist = JS.SV.newV(7, new JU.Lst())); +vlist.getList().addLast(sv); +} +return mp.addXMap(map); +}if (bsSelect != null) { +var l0 = x.getList(); +var lst = new JU.Lst(); +for (var i = bsSelect.nextSetBit(0); i >= 0; i = bsSelect.nextSetBit(i + 1)) lst.addLast(l0.get(i)); + +return mp.addXList(lst); +}default: +if (tok0 == 1275068725 && x.tok == 6) { +var map = new java.util.Hashtable(); +var map0 = x.getMap(); +for (var e, $e = map0.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +var s = e.getValue().asString(); +var l = map.get(s); +if (l == null) map.put(s, l = new JU.Lst()); +l.addLast(key); +} +if ("count".equals(lc)) { +for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +e.setValue(Integer.$valueOf((e.getValue()).size())); +} +}return mp.addXMap(map); +}if (isSelect) propertyName = "[SELECT " + propertyName + "]"; +return mp.addXObj(this.vwr.extractProperty(x, propertyName, -1)); +} +if (!lc.startsWith("bondinfo") && !lc.startsWith("atominfo") && !lc.startsWith("modelkitinfo")) propertyName = "atomInfo." + propertyName; +}var propertyValue = ""; +if (propertyName.equalsIgnoreCase("fileContents") && nargs >= 2) { +var s = JS.SV.sValue(args[1]); +for (var i = 2; i < nargs; i++) s += "|" + JS.SV.sValue(args[i]); + +propertyValue = s; +pt = nargs; +} else if (nargs > pt) { +switch (args[pt].tok) { +case 10: +propertyValue = args[pt++].value; +if (propertyName.equalsIgnoreCase("bondInfo") && nargs > pt && args[pt].tok == 10) propertyValue = Clazz.newArray(-1, [propertyValue, args[pt].value]); +break; +case 6: +case 4: +if (this.vwr.checkPropertyParameter(propertyName)) propertyValue = args[pt++].value; +break; +} +}if (isAtomProperty) { +var bs = x.value; +var iAtom = bs.nextSetBit(0); +if (iAtom < 0) return mp.addXStr(""); +propertyValue = bs; +}if (isAuxiliary && !isAtomProperty) propertyName = "auxiliaryInfo.models." + propertyName; +propertyName = JU.PT.rep(propertyName, ".[", "["); +var property = this.vwr.getProperty(null, propertyName, propertyValue); +if (pt < nargs) property = this.vwr.extractProperty(property, args, pt); +return mp.addXObj(isJSON ? JS.SV.safeJSON("value", property) : JS.SV.isVariableType(property) ? property : JU.Escape.toReadable(propertyName, property)); +}, "JS.ScriptMathProcessor,~A,~N,~B"); +Clazz.defineMethod(c$, "evaluateFormat", +function(mp, intValue, args, isLabel){ +var x1 = (args.length < 2 || intValue == 1287653388 ? mp.getX() : null); +var format = (args.length == 0 ? "%U" : args[0].tok == 7 ? null : JS.SV.sValue(args[0])); +if (!isLabel && args.length > 0 && x1 != null && x1.tok != 10 && format != null) { +if (args.length == 2) { +var listIn = x1.getList(); +var formatList = args[1].getList(); +if (listIn == null || formatList == null) return false; +x1 = JS.SV.getVariableList(this.getSublist(listIn, formatList)); +}args = Clazz.newArray(-1, [args[0], x1]); +x1 = null; +}if (x1 == null) { +if (format == null) return false; +var pt = (isLabel ? -1 : JS.SV.getFormatType(format)); +if (pt >= 0 && args.length != 2) return false; +if (pt >= 0 || args.length < 2 || args[1].tok != 7) { +var o = JS.SV.format(args, pt); +return (format.equalsIgnoreCase("json") ? mp.addXStr(o) : mp.addXObj(o)); +}var a = args[1].getList(); +var args2 = Clazz.newArray(-1, [args[0], null]); +var sa = new Array(a.size()); +for (var i = sa.length; --i >= 0; ) { +args2[1] = a.get(i); +sa[i] = JS.SV.format(args2, pt).toString(); +} +return mp.addXAS(sa); +}if (x1.tok == 7 && format == null) { +var listIn = x1.getList(); +var formatList = args[0].getList(); +var listOut = this.getSublist(listIn, formatList); +return mp.addXList(listOut); +}var bs = (x1.tok == 10 ? x1.value : null); +var asArray = JS.T.tokAttr(intValue, 480); +return mp.addXObj(format == null ? "" : bs == null ? JS.SV.sprintf(JU.PT.formatCheck(format), x1) : this.e.getCmdExt().getBitsetIdent(bs, format, x1.value, true, x1.index, asArray)); +}, "JS.ScriptMathProcessor,~N,~A,~B"); +Clazz.defineMethod(c$, "getSublist", +function(listIn, formatList){ +var listOut = new JU.Lst(); +var map; +var v; +var list; +for (var i = 0, n = listIn.size(); i < n; i++) { +var element = listIn.get(i); +switch (element.tok) { +case 6: +map = element.getMap(); +list = new JU.Lst(); +for (var j = 0, n1 = formatList.size(); j < n1; j++) { +v = map.get(JS.SV.sValue(formatList.get(j))); +list.addLast(v == null ? JS.SV.newS("") : v); +} +listOut.addLast(JS.SV.getVariableList(list)); +break; +case 7: +map = new java.util.Hashtable(); +list = element.getList(); +for (var j = 0, n1 = Math.min(list.size(), formatList.size()); j < n1; j++) { +map.put(JS.SV.sValue(formatList.get(j)), list.get(j)); +} +listOut.addLast(JS.SV.getVariable(map)); +} +} +return listOut; +}, "JU.Lst,JU.Lst"); +Clazz.defineMethod(c$, "evaluateList", +function(mp, tok, args){ +var len = args.length; +var x1 = mp.getX(); +var isArray1 = (x1.tok == 7); +var x2; +switch (tok) { +case 1275335685: +return (len == 2 && mp.addX(x1.pushPop(args[0], args[1])) || len == 1 && mp.addX(x1.pushPop(null, args[0]))); +case 1275334681: +return (len == 1 && mp.addX(x1.pushPop(args[0], null)) || len == 0 && mp.addX(x1.pushPop(null, null))); +case 1275069441: +if (len != 1 && len != 2) return false; +break; +case 1275069447: +case 1275069446: +break; +default: +if (len != 1) return false; +} +var sList1 = null; +var sList2 = null; +var sList3 = null; +if (len == 2) { +var tab = JS.SV.sValue(args[0]); +x2 = args[1]; +if (tok == 1275069441) { +sList1 = (isArray1 ? JS.SV.strListValue(x1) : JU.PT.split(JS.SV.sValue(x1), "\n")); +sList2 = (x2.tok == 7 ? JS.SV.strListValue(x2) : JU.PT.split(JS.SV.sValue(x2), "\n")); +sList3 = new Array(len = Math.max(sList1.length, sList2.length)); +for (var i = 0; i < len; i++) sList3[i] = (i >= sList1.length ? "" : sList1[i]) + tab + (i >= sList2.length ? "" : sList2[i]); + +return mp.addXAS(sList3); +}if (x2.tok != 1073742335) return false; +var l = x1.getList(); +var isCSV = (tab.length == 0); +if (isCSV) tab = ","; +if (tok == 1275069446) { +var s2 = new Array(l.size()); +for (var i = l.size(); --i >= 0; ) { +var a = l.get(i).getList(); +if (a == null) s2[i] = l.get(i); + else { +var sb = new JU.SB(); +for (var j = 0, n = a.size(); j < n; j++) { +if (j > 0) sb.append(tab); +var sv = a.get(j); +sb.append(isCSV && sv.tok == 4 ? "\"" + JU.PT.rep(sv.value, "\"", "\"\"") + "\"" : "" + sv.asString()); +} +s2[i] = JS.SV.newS(sb.toString()); +}} +return mp.addXAV(s2); +}var sa = new JU.Lst(); +if (isCSV) tab = "\0"; +var next = Clazz.newIntArray (2, 0); +for (var i = 0, nl = l.size(); i < nl; i++) { +var line = l.get(i).asString(); +if (isCSV) { +next[1] = 0; +next[0] = 0; +var last = 0; +while (true) { +var s = JU.PT.getCSVString(line, next); +if (s == null) { +if (next[1] == -1) { +line += (++i < nl ? "\n" + l.get(i).asString() : "\""); +next[1] = last; +continue; +}line = line.substring(0, last) + line.substring(last).$replace(',', '\0'); +break; +}line = line.substring(0, last) + line.substring(last, next[0]).$replace(',', '\0') + s + line.substring(next[1]); +next[1] = last = next[0] + s.length; +} +}var linaa = line.$plit(tab); +var la = new JU.Lst(); +for (var j = 0, n = linaa.length; j < n; j++) { +var s = linaa[j]; +if (s.indexOf(".") < 0) try { +la.addLast(JS.SV.newI(Integer.parseInt(s))); +continue; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} + else try { +la.addLast(JS.SV.getVariable(Float.$valueOf(Float.parseFloat(s)))); +continue; +} catch (ee) { +if (Clazz.exceptionOf(ee, Exception)){ +} else { +throw ee; +} +} +la.addLast(JS.SV.newS(s)); +} +sa.addLast(JS.SV.getVariableList(la)); +} +return mp.addXObj(JS.SV.getVariableList(sa)); +}x2 = (len == 0 ? JS.SV.newV(1073742327, "all") : args[0]); +var isAll = (x2.tok == 1073742327); +if (!isArray1 && x1.tok != 4) return mp.binaryOp(this.opTokenFor(tok), x1, x2); +var isScalar1 = JS.SV.isScalar(x1); +var isScalar2 = JS.SV.isScalar(x2); +var list1 = null; +var list2 = null; +var alist1 = x1.getList(); +var alist2 = x2.getList(); +if (isArray1) { +len = alist1.size(); +} else if (isScalar1) { +len = 2147483647; +} else { +sList1 = (JU.PT.split(JS.SV.sValue(x1), "\n")); +list1 = Clazz.newFloatArray (len = sList1.length, 0); +JU.PT.parseFloatArrayData(sList1, list1); +}if (isAll && tok != 1275069446) { +var sum = 0; +if (isArray1) { +for (var i = len; --i >= 0; ) sum += JS.SV.fValue(alist1.get(i)); + +} else if (!isScalar1) { +for (var i = len; --i >= 0; ) sum += list1[i]; + +}return mp.addXFloat(sum); +}if (tok == 1275069446 && x2.tok == 4) { +var sb = new JU.SB(); +if (isScalar1) { +sb.append(JS.SV.sValue(x1)); +} else { +var s = (isAll ? "" : x2.value.toString()); +for (var i = 0; i < len; i++) sb.append(i > 0 ? s : "").append(JS.SV.sValue(alist1.get(i))); + +}return mp.addXStr(sb.toString()); +}var scalar = null; +if (isScalar2) { +scalar = x2; +} else if (x2.tok == 7) { +len = Math.min(len, alist2.size()); +} else { +sList2 = JU.PT.split(JS.SV.sValue(x2), "\n"); +list2 = Clazz.newFloatArray (sList2.length, 0); +JU.PT.parseFloatArrayData(sList2, list2); +len = Math.min(len, list2.length); +}var token = this.opTokenFor(tok); +if (isArray1 && isAll) { +var llist = new JU.Lst(); +return mp.addXList(this.addAllLists(x1.getList(), llist)); +}var a = (isScalar1 ? x1 : null); +var b; +var justVal = (len == 2147483647); +if (justVal) len = 1; +var olist = new Array(len); +for (var i = 0; i < len; i++) { +if (isScalar2) b = scalar; + else if (x2.tok == 7) b = alist2.get(i); + else if (Float.isNaN(list2[i])) b = JS.SV.getVariable(JS.SV.unescapePointOrBitsetAsVariable(sList2[i])); + else b = JS.SV.newF(list2[i]); +if (!isScalar1) { +if (isArray1) a = alist1.get(i); + else if (Float.isNaN(list1[i])) a = JS.SV.getVariable(JS.SV.unescapePointOrBitsetAsVariable(sList1[i])); + else a = JS.SV.newF(list1[i]); +}if (tok == 1275069446) { +if (a.tok != 7) { +var l = new JU.Lst(); +l.addLast(a); +a = JS.SV.getVariableList(l); +}}if (!mp.binaryOp(token, a, b)) return false; +olist[i] = mp.getX(); +} +return (justVal ? mp.addXObj(olist[0]) : mp.addXAV(olist)); +}, "JS.ScriptMathProcessor,~N,~A"); +Clazz.defineMethod(c$, "addAllLists", +function(list, l){ +var n = list.size(); +for (var i = 0; i < n; i++) { +var v = list.get(i); +if (v.tok == 7) this.addAllLists(v.getList(), l); + else l.addLast(v); +} +return l; +}, "JU.Lst,JU.Lst"); +Clazz.defineMethod(c$, "evaluateLoad", +function(mp, args, isFile){ +if (args.length < 1 || args.length > 3) return false; +var file = JV.FileManager.fixDOSName(JS.SV.sValue(args[0])); +var asMap = (args.length > 1 && args[1].tok == 1073742335); +var async = (this.vwr.async || args.length > 2 && args[args.length - 1].tok == 1073742335); +var nBytesMax = (args.length > 1 && args[1].tok == 2 ? args[1].asInt() : -1); +var asJSON = (args.length > 1 && args[1].asString().equalsIgnoreCase("JSON")); +if (asMap) return mp.addXMap(this.vwr.fm.getFileAsMap(file, null, false)); +var isQues = file.startsWith("?"); +if (JV.Viewer.isJS && (isQues || async)) { +if (isFile && isQues) return mp.addXStr(""); +file = this.e.loadFileAsync("load()_", file, mp.oPt, true); +}var str = isFile ? this.vwr.fm.getFilePath(file, false, false) : this.vwr.getFileAsString4(file, nBytesMax, false, false, true, "script"); +try { +return (asJSON ? mp.addXObj(this.vwr.parseJSON(str)) : mp.addXStr(str)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz.defineMethod(c$, "evaluateMath", +function(mp, args, tok){ +var x = JS.SV.fValue(args[0]); +switch (tok) { +case 134218246: +x = Math.sqrt(x); +break; +case 134218244: +x = Math.sin(x * 3.141592653589793 / 180); +break; +case 134218245: +x = Math.cos(x * 3.141592653589793 / 180); +break; +case 134218241: +x = Math.acos(x) * 180 / 3.141592653589793; +break; +} +return mp.addXFloat(x); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz.defineMethod(c$, "evaluateMeasure", +function(mp, args, tok){ +var nPoints = 0; +switch (tok) { +case 1745489939: +var property = null; +var points = new JU.Lst(); +var rangeMinMax = Clazz.newFloatArray(-1, [3.4028235E38, 3.4028235E38]); +var strFormat = null; +var units = null; +var isAllConnected = false; +var isNotConnected = false; +var rPt = 0; +var isNull = false; +var rd = null; +var nBitSets = 0; +var vdw = 3.4028235E38; +var asMinArray = false; +var asFloatArray = false; +for (var i = 0; i < args.length; i++) { +switch (args[i].tok) { +case 10: +var bs = args[i].value; +if (bs.length() == 0) isNull = true; +points.addLast(bs); +nPoints++; +nBitSets++; +break; +case 8: +var v = new JU.Point3fi(); +v.setT(args[i].value); +points.addLast(v); +nPoints++; +break; +case 2: +case 3: +rangeMinMax[rPt++ % 2] = JS.SV.fValue(args[i]); +break; +case 4: +var s = JS.SV.sValue(args[i]); +if (s.startsWith("property_")) { +property = s; +break; +}if (s.equalsIgnoreCase("vdw") || s.equalsIgnoreCase("vanderwaals")) vdw = (i + 1 < args.length && args[i + 1].tok == 2 ? args[++i].asInt() : 100) / 100; + else if (s.equalsIgnoreCase("notConnected")) isNotConnected = true; + else if (s.equalsIgnoreCase("connected")) isAllConnected = true; + else if (s.equalsIgnoreCase("minArray")) asMinArray = (nBitSets >= 1); + else if (s.equalsIgnoreCase("asArray") || s.length == 0) asFloatArray = (nBitSets >= 1); + else if (JM.Measurement.isUnits(s)) units = s.toLowerCase(); + else strFormat = nPoints + ":" + s; +break; +default: +return false; +} +} +if (nPoints < 2 || nPoints > 4 || rPt > 2 || isNotConnected && isAllConnected) return false; +if (isNull) return mp.addXStr(""); +if (vdw != 3.4028235E38 && (nBitSets != 2 || nPoints != 2)) return mp.addXStr(""); +rd = (vdw == 3.4028235E38 ? new J.atomdata.RadiusData(rangeMinMax, 0, null, null) : new J.atomdata.RadiusData(null, vdw, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO)); +var obj = (this.vwr.newMeasurementData(null, points)).set(0, null, rd, property, strFormat, units, null, isAllConnected, isNotConnected, null, true, 0, 0, null, NaN, null).getMeasurements(asFloatArray, asMinArray); +return mp.addXObj(obj); +case 134217729: +if ((nPoints = args.length) != 3 && nPoints != 4) return false; +break; +default: +if ((nPoints = args.length) != 2) return false; +} +var pts = new Array(nPoints); +for (var i = 0; i < nPoints; i++) { +if ((pts[i] = mp.ptValue(args[i], null)) == null) return false; +} +switch (nPoints) { +case 2: +return mp.addXFloat(pts[0].distance(pts[1])); +case 3: +return mp.addXFloat(JU.Measure.computeAngleABC(pts[0], pts[1], pts[2], true)); +case 4: +return mp.addXFloat(JU.Measure.computeTorsion(pts[0], pts[1], pts[2], pts[3], true)); +} +return false; +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz.defineMethod(c$, "evaluateModulation", +function(mp, args){ +var type = ""; +var t = NaN; +var t456 = null; +switch (args.length) { +case 0: +break; +case 1: +switch (args[0].tok) { +case 8: +t456 = args[0].value; +break; +case 4: +type = args[0].asString(); +break; +default: +t = JS.SV.fValue(args[0]); +} +break; +case 2: +type = JS.SV.sValue(args[0]); +t = JS.SV.fValue(args[1]); +break; +default: +return false; +} +if (t456 == null && t < 1e6) t456 = JU.P3.new3(t, t, t); +var x = mp.getX(); +var bs = (x.tok == 10 ? x.value : new JU.BS()); +return mp.addXList(this.vwr.ms.getModulationList(bs, (type + "D").toUpperCase().charAt(0), t456)); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluatePlane", +function(mp, args, tok){ +if (tok == 134219777 && args.length != 3 && args.length != 4 || tok == 134217763 && args.length != 2 && args.length != 3 && args.length != 4 || args.length == 0 || args.length > 4) return false; +var pt1; +var pt2; +var pt3; +var plane = this.e.planeValue(args[0]); +var norm; +var vTemp; +switch (args.length) { +case 1: +if (args[0].tok == 10) { +var bs = args[0].value; +if (bs.cardinality() == 3) { +var pts = this.vwr.ms.getAtomPointVector(bs); +return mp.addXPt4(JU.Measure.getPlaneThroughPoints(pts.get(0), pts.get(1), pts.get(2), new JU.V3(), new JU.V3(), new JU.P4())); +}}return (plane != null && mp.addXPt4(plane)); +case 2: +if (tok == 134217763) { +var plane1 = this.e.planeValue(args[1]); +if (plane1 == null) return false; +pt3 = new JU.P3(); +norm = new JU.V3(); +vTemp = new JU.V3(); +if (plane != null) { +var list = JU.Measure.getIntersectionPP(plane, plane1); +if (list == null) return mp.addXStr(""); +return mp.addXList(list); +}pt2 = mp.ptValue(args[0], null); +if (pt2 == null) return mp.addXStr(""); +return mp.addXPt(JU.Measure.getIntersection(pt2, null, plane1, pt3, norm, vTemp)); +}case 3: +case 4: +switch (tok) { +case 134219777: +var offset = (args.length == 4 ? JS.SV.fValue(args[3]) : NaN); +plane = this.e.getHklPlane(JU.P3.new3(JS.SV.fValue(args[0]), JS.SV.fValue(args[1]), JS.SV.fValue(args[2])), offset, null); +return plane != null && mp.addXPt4(plane); +case 134217763: +pt1 = mp.ptValue(args[0], null); +pt2 = mp.ptValue(args[1], null); +if (pt1 == null || pt2 == null) return mp.addXStr(""); +var vLine = JU.V3.newV(pt2); +vLine.normalize(); +var plane2 = this.e.planeValue(args[2]); +if (plane2 != null) { +pt3 = new JU.P3(); +norm = new JU.V3(); +vTemp = new JU.V3(); +pt1 = JU.Measure.getIntersection(pt1, vLine, plane2, pt3, norm, vTemp); +if (pt1 == null) return mp.addXStr(""); +return mp.addXPt(pt1); +}pt3 = mp.ptValue(args[2], null); +if (pt3 == null) return mp.addXStr(""); +var v = new JU.V3(); +pt3 = JU.P3.newP(pt3); +if (args.length == 3) { +JU.Measure.projectOntoAxis(pt3, pt1, vLine, v); +return mp.addXPt(pt3); +}var r = JS.SV.fValue(args[3]); +var ptCenter = JU.P3.newP(pt3); +JU.Measure.projectOntoAxis(pt3, pt1, vLine, v); +var d = ptCenter.distance(pt3); +var l = new JU.Lst(); +if (d == r) { +l.addLast(pt3); +} else if (d < r) { +d = Math.sqrt(r * r - d * d); +v.scaleAdd2(d, vLine, pt3); +l.addLast(JU.P3.newP(v)); +v.scaleAdd2(-d, vLine, pt3); +l.addLast(JU.P3.newP(v)); +}return mp.addXList(l); +} +switch (args[0].tok) { +case 2: +case 3: +if (args.length == 3) { +var r = JS.SV.fValue(args[0]); +var theta = JS.SV.fValue(args[1]); +var phi = JS.SV.fValue(args[2]); +norm = JU.V3.new3(0, 0, 1); +pt2 = JU.P3.new3(0, 1, 0); +var q = JU.Quat.newVA(pt2, phi); +q.getMatrix().rotate(norm); +pt2.set(0, 0, 1); +q = JU.Quat.newVA(pt2, theta); +q.getMatrix().rotate(norm); +pt2.setT(norm); +pt2.scale(r); +plane = new JU.P4(); +JU.Measure.getPlaneThroughPoint(pt2, norm, plane); +return mp.addXPt4(plane); +}break; +case 10: +case 8: +pt1 = mp.ptValue(args[0], null); +pt2 = mp.ptValue(args[1], null); +if (pt2 == null) return false; +pt3 = (args.length > 2 && (args[2].tok == 10 || args[2].tok == 8) ? mp.ptValue(args[2], null) : null); +norm = JU.V3.newV(pt2); +if (pt3 == null) { +plane = new JU.P4(); +if (args.length == 2 || args[2].tok != 2 && args[2].tok != 3 && !args[2].asBoolean()) { +pt3 = JU.P3.newP(pt1); +pt3.add(pt2); +pt3.scale(0.5); +norm.sub(pt1); +norm.normalize(); +} else if (args[2].tok == 1073742335) { +pt3 = pt1; +} else { +norm.sub(pt1); +pt3 = new JU.P3(); +pt3.scaleAdd2(args[2].asFloat(), norm, pt1); +}JU.Measure.getPlaneThroughPoint(pt3, norm, plane); +return mp.addXPt4(plane); +}var vAB = new JU.V3(); +var ptref = (args.length == 4 ? mp.ptValue(args[3], null) : null); +var nd = JU.Measure.getDirectedNormalThroughPoints(pt1, pt2, pt3, ptref, norm, vAB); +return mp.addXPt4(JU.P4.new4(norm.x, norm.y, norm.z, nd)); +} +} +if (args.length != 4) return false; +var x = JS.SV.fValue(args[0]); +var y = JS.SV.fValue(args[1]); +var z = JS.SV.fValue(args[2]); +var w = JS.SV.fValue(args[3]); +return mp.addXPt4(JU.P4.new4(x, y, z, w)); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz.defineMethod(c$, "evaluatePoint", +function(mp, args){ +switch (args.length) { +default: +return false; +case 1: +if (args[0].tok == 3 || args[0].tok == 2) return mp.addXInt(args[0].asInt()); +var s = null; +if (args[0].tok == 7) { +var list = args[0].getList(); +var len = list.size(); +if (len == 0) { +return false; +}switch (list.get(0).tok) { +case 2: +case 3: +break; +case 4: +s = list.get(0).value; +if (!s.startsWith("{") || (typeof(JU.Escape.uP(s))=='string')) { +s = null; +break; +}var a = new JU.Lst(); +for (var i = 0; i < len; i++) { +a.addLast(JS.SV.getVariable(JU.Escape.uP(JS.SV.sValue(list.get(i))))); +} +return mp.addXList(a); +} +s = "{" + JS.SV.sValue(args[0]) + "}"; +}if (s == null) s = JS.SV.sValue(args[0]); +var pt = JU.Escape.uP(s); +return (Clazz.instanceOf(pt,"JU.P3") ? mp.addXPt(pt) : mp.addXStr("" + pt)); +case 2: +var pt3; +switch (args[1].tok) { +case 1073742334: +case 1073742335: +switch (args[0].tok) { +case 8: +pt3 = JU.P3.newP(args[0].value); +break; +case 10: +pt3 = this.vwr.ms.getAtomSetCenter(args[0].value); +break; +default: +return false; +} +if (args[1].tok == 1073742335) { +this.vwr.tm.transformPt3f(pt3, pt3); +pt3.y = this.vwr.tm.height - pt3.y; +if (this.vwr.antialiased) pt3.scale(0.5); +} else { +if (this.vwr.antialiased) pt3.scale(2); +pt3.y = this.vwr.tm.height - pt3.y; +this.vwr.tm.unTransformPoint(pt3, pt3); +}break; +case 8: +var sv = args[0].getList(); +if (sv == null || sv.size() != 4) return false; +var pt1 = JS.SV.ptValue(args[1]); +pt3 = JU.P3.newP(JS.SV.ptValue(sv.get(0))); +pt3.scaleAdd2(pt1.x, JS.SV.ptValue(sv.get(1)), pt3); +pt3.scaleAdd2(pt1.y, JS.SV.ptValue(sv.get(2)), pt3); +pt3.scaleAdd2(pt1.z, JS.SV.ptValue(sv.get(3)), pt3); +break; +default: +return false; +} +return mp.addXPt(pt3); +case 3: +return mp.addXPt(JU.P3.new3(args[0].asFloat(), args[1].asFloat(), args[2].asFloat())); +case 4: +return mp.addXPt4(JU.P4.new4(args[0].asFloat(), args[1].asFloat(), args[2].asFloat(), args[3].asFloat())); +} +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluatePrompt", +function(mp, args){ +if (args.length != 1 && args.length != 2 && args.length != 3) return false; +var label = JS.SV.sValue(args[0]); +var buttonArray = (args.length > 1 && args[1].tok == 7 ? JS.SV.strListValue(args[1]) : null); +var asButtons = (buttonArray != null || args.length == 1 || args.length == 3 && args[2].asBoolean()); +var input = (buttonArray != null ? null : args.length >= 2 ? JS.SV.sValue(args[1]) : "OK"); +var s = "" + this.vwr.prompt(label, input, buttonArray, asButtons); +return (asButtons && buttonArray != null ? mp.addXInt(Integer.parseInt(s) + 1) : mp.addXStr(s)); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateQuaternion", +function(mp, args, tok){ +var pt0 = null; +var nArgs = args.length; +var nMax = 2147483647; +var isRelative = false; +if (tok == 134221850) { +if (nArgs > 1 && args[nArgs - 1].tok == 4 && (args[nArgs - 1].value).equalsIgnoreCase("relative")) { +nArgs--; +isRelative = true; +}if (nArgs > 1 && args[nArgs - 1].tok == 2 && args[0].tok == 10) { +nMax = args[nArgs - 1].asInt(); +if (nMax <= 0) nMax = 2147483646; +nArgs--; +}}switch (nArgs) { +case 0: +case 1: +case 4: +break; +case 2: +if (tok == 134221850) { +if (args[0].tok == 7 && (args[1].tok == 7 || args[1].tok == 1073742335)) break; +if (args[0].tok == 10 && (args[1].tok == 2 || args[1].tok == 10)) break; +}if ((pt0 = mp.ptValue(args[0], null)) == null || tok != 134221850 && args[1].tok == 8) return false; +break; +case 3: +if (tok != 134221850) return false; +if (args[0].tok == 9) { +if (args[2].tok != 8 && args[2].tok != 10) return false; +break; +}for (var i = 0; i < 3; i++) if (args[i].tok != 8 && args[i].tok != 10) return false; + +break; +default: +return false; +} +var q = null; +var qs = null; +var p4 = null; +switch (nArgs) { +case 0: +return mp.addXPt4(this.vwr.tm.getRotationQ().toPoint4f()); +case 1: +default: +if (tok == 134221850 && args[0].tok == 7) { +var data1 = this.e.getQuaternionArray(args[0].getList(), 1073742001); +var mean = JU.Quat.sphereMean(data1, null, 0.0001); +q = (Clazz.instanceOf(mean,"JU.Quat") ? mean : null); +break; +} else if (tok == 134221850 && args[0].tok == 10) { +qs = this.vwr.getAtomGroupQuaternions(args[0].value, nMax); +} else if (args[0].tok == 11) { +q = JU.Quat.newM(args[0].value); +} else if (args[0].tok == 9) { +p4 = args[0].value; +} else { +var s = JS.SV.sValue(args[0]); +var v = JU.Escape.uP(s.equalsIgnoreCase("best") ? this.vwr.getOrientation(1073741864, "best", null, null).toString() : s); +if (!(Clazz.instanceOf(v,"JU.P4"))) return false; +p4 = v; +}if (tok == 134217731) q = JU.Quat.newVA(JU.P3.new3(p4.x, p4.y, p4.z), p4.w); +break; +case 2: +if (tok == 134221850) { +if (args[0].tok == 7 && args[1].tok == 7) { +var data1 = this.e.getQuaternionArray(args[0].getList(), 1073742001); +var data2 = this.e.getQuaternionArray(args[1].getList(), 1073742001); +qs = JU.Quat.arrayDiv(data2, data1, nMax, isRelative); +break; +}if (args[0].tok == 7 && args[1].tok == 1073742335) { +var data1 = this.e.getQuaternionArray(args[0].getList(), 1073742001); +var stddev = Clazz.newFloatArray (1, 0); +JU.Quat.sphereMean(data1, stddev, 0.0001); +return mp.addXFloat(stddev[0]); +}if (args[0].tok == 10 && args[1].tok == 10) { +var data1 = this.vwr.getAtomGroupQuaternions(args[0].value, 2147483647); +var data2 = this.vwr.getAtomGroupQuaternions(args[1].value, 2147483647); +qs = JU.Quat.arrayDiv(data2, data1, nMax, isRelative); +break; +}}var pt1 = mp.ptValue(args[1], null); +p4 = this.e.planeValue(args[0]); +if (pt1 != null) q = JU.Quat.getQuaternionFrame(JU.P3.new3(0, 0, 0), pt0, pt1); + else q = JU.Quat.newVA(pt0, JS.SV.fValue(args[1])); +break; +case 3: +if (args[0].tok == 9) { +var pt = (args[2].tok == 8 ? args[2].value : this.vwr.ms.getAtomSetCenter(args[2].value)); +return mp.addXStr(JU.Escape.drawQuat(JU.Quat.newP4(args[0].value), "q", JS.SV.sValue(args[1]), pt, 1)); +}var pts = new Array(3); +for (var i = 0; i < 3; i++) pts[i] = (args[i].tok == 8 ? args[i].value : this.vwr.ms.getAtomSetCenter(args[i].value)); + +q = JU.Quat.getQuaternionFrame(pts[0], pts[1], pts[2]); +break; +case 4: +if (tok == 134221850) p4 = JU.P4.new4(JS.SV.fValue(args[1]), JS.SV.fValue(args[2]), JS.SV.fValue(args[3]), JS.SV.fValue(args[0])); + else q = JU.Quat.newVA(JU.P3.new3(JS.SV.fValue(args[0]), JS.SV.fValue(args[1]), JS.SV.fValue(args[2])), JS.SV.fValue(args[3])); +break; +} +if (qs != null) { +if (nMax != 2147483647) { +var list = new JU.Lst(); +for (var i = 0; i < qs.length; i++) list.addLast(qs[i].toPoint4f()); + +return mp.addXList(list); +}q = (qs.length > 0 ? qs[0] : null); +}return mp.addXPt4((q == null ? JU.Quat.newP4(p4) : q).toPoint4f()); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz.defineMethod(c$, "evaluateRandom", +function(mp, args){ +if (args.length > 3) return false; +if (this.rand == null) this.rand = new java.util.Random(); +var lower = 0; +var upper = 1; +switch (args.length) { +case 3: +this.rand.setSeed(Clazz.floatToInt(JS.SV.fValue(args[2]))); +case 2: +upper = JS.SV.fValue(args[1]); +case 1: +lower = JS.SV.fValue(args[0]); +case 0: +break; +default: +return false; +} +return mp.addXFloat((this.rand.nextFloat() * (upper - lower)) + lower); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateRowCol", +function(mp, args, tok){ +if (args.length != 1) return false; +var n = args[0].asInt() - 1; +var x1 = mp.getX(); +var f; +switch (x1.tok) { +case 11: +if (n < 0 || n > 2) return false; +var m = x1.value; +switch (tok) { +case 1275068935: +f = Clazz.newFloatArray (3, 0); +m.getRow(n, f); +return mp.addXAF(f); +case 1275068934: +default: +f = Clazz.newFloatArray (3, 0); +m.getColumn(n, f); +return mp.addXAF(f); +} +case 12: +if (n < 0 || n > 2) return false; +var m4 = x1.value; +switch (tok) { +case 1275068935: +f = Clazz.newFloatArray (4, 0); +m4.getRow(n, f); +return mp.addXAF(f); +case 1275068934: +default: +f = Clazz.newFloatArray (4, 0); +m4.getColumn(n, f); +return mp.addXAF(f); +} +case 7: +var l1 = x1.getList(); +var l2 = new JU.Lst(); +for (var i = 0, len = l1.size(); i < len; i++) { +var l3 = l1.get(i).getList(); +if (l3 == null) return mp.addXStr(""); +l2.addLast(n < l3.size() ? l3.get(n) : JS.SV.newS("")); +} +return mp.addXList(l2); +} +return false; +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz.defineMethod(c$, "evaluateIn", +function(mp, args){ +var x1 = mp.getX(); +switch (args.length) { +case 1: +var lst = args[0].getList(); +if (lst != null) for (var i = 0, n = lst.size(); i < n; i++) if (JS.SV.areEqual(x1, lst.get(i))) return mp.addXInt(i + 1); + +break; +default: +for (var i = 0; i < args.length; i++) if (JS.SV.areEqual(x1, args[i])) return mp.addXInt(i + 1); + +break; +} +return mp.addXInt(0); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateReplace", +function(mp, args){ +var isAll = false; +var sFind; +var sReplace; +switch (args.length) { +case 0: +isAll = true; +sFind = sReplace = null; +break; +case 3: +isAll = JS.SV.bValue(args[2]); +case 2: +sFind = JS.SV.sValue(args[0]); +sReplace = JS.SV.sValue(args[1]); +break; +default: +return false; +} +var x = mp.getX(); +if (x.tok == 7) { +var list = JS.SV.strListValue(x); +var l = new Array(list.length); +for (var i = list.length; --i >= 0; ) l[i] = (sFind == null ? JU.PT.clean(list[i]) : isAll ? JU.PT.replaceAllCharacters(list[i], sFind, sReplace) : JU.PT.rep(list[i], sFind, sReplace)); + +return mp.addXAS(l); +}var s = JS.SV.sValue(x); +return mp.addXStr(sFind == null ? JU.PT.clean(s) : isAll ? JU.PT.replaceAllCharacters(s, sFind, sReplace) : JU.PT.rep(s, sFind, sReplace)); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateScript", +function(mp, args, tok){ +if ((tok == 134222350 || tok == 134238732) && args.length != 1 || args.length == 0) return false; +var s = JS.SV.sValue(args[0]); +var sb = new JU.SB(); +switch (tok) { +case 134218759: +return (args.length == 2 ? s.equalsIgnoreCase("JSON") && mp.addXObj(this.vwr.parseJSON(JS.SV.sValue(args[1]))) : mp.addXObj(this.vwr.evaluateExpressionAsVariable(s))); +case 134222850: +var appID = (args.length == 2 ? JS.SV.sValue(args[1]) : "."); +if (!appID.equals(".")) sb.append(this.vwr.jsEval(appID + "\1" + s)); +if (appID.equals(".") || appID.equals("*")) this.e.runScriptBuffer(s, sb, true); +break; +case 134222350: +this.e.runScriptBuffer("show " + s, sb, true); +break; +case 134238732: +return mp.addX(this.vwr.jsEvalSV(s)); +} +s = sb.toString(); +var f; +return (Float.isNaN(f = JU.PT.parseFloatStrict(s)) ? mp.addXStr(s) : s.indexOf(".") >= 0 ? mp.addXFloat(f) : mp.addXInt(JU.PT.parseInt(s))); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz.defineMethod(c$, "evaluateSort", +function(mp, args, tok){ +if (args.length > 1) return false; +if (tok == 1275068444) { +if (args.length == 1 && args[0].tok == 4) { +return mp.addX(mp.getX().sortMapArray(args[0].asString())); +}var n = (args.length == 0 ? 0 : args[0].asInt()); +return mp.addX(mp.getX().sortOrReverse(n)); +}var x = mp.getX(); +var match = (args.length == 0 ? null : args[0]); +if (x.tok == 4) { +var n = 0; +var s = JS.SV.sValue(x); +if (match == null) return mp.addXInt(0); +var m = JS.SV.sValue(match); +for (var i = 0; i < s.length; i++) { +var pt = s.indexOf(m, i); +if (pt < 0) break; +n++; +i = pt; +} +return mp.addXInt(n); +}var counts = new JU.Lst(); +var last = null; +var count = null; +var xList = JS.SV.getVariable(x.value).sortOrReverse(0).getList(); +if (xList == null) return (match == null ? mp.addXStr("") : mp.addXInt(0)); +for (var i = 0, nLast = xList.size(); i <= nLast; i++) { +var a = (i == nLast ? null : xList.get(i)); +if (match != null && a != null && !JS.SV.areEqual(a, match)) continue; +if (JS.SV.areEqual(a, last)) { +count.intValue++; +continue; +} else if (last != null) { +var y = new JU.Lst(); +y.addLast(last); +y.addLast(count); +counts.addLast(JS.SV.getVariableList(y)); +}count = JS.SV.newI(1); +last = a; +} +if (match == null) return mp.addX(JS.SV.getVariableList(counts)); +if (counts.isEmpty()) return mp.addXInt(0); +return mp.addX(counts.get(0).getList().get(1)); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz.defineMethod(c$, "evaluateString", +function(mp, tok, args){ +var x = mp.getX(); +var sArg = (args.length > 0 ? JS.SV.sValue(args[0]) : tok == 1275068932 ? "" : "\n"); +switch (args.length) { +case 0: +break; +case 1: +if (args[0].tok == 1073742335) { +return mp.addX(JS.SV.getVariable(JU.PT.getTokens(x.asString()))); +}break; +case 2: +if (x.tok == 7) break; +if (tok == 1275069447) { +x = JS.SV.getVariable(JU.PT.split(JU.PT.rep(x.value, "\n\r", "\n").$replace('\r', '\n'), "\n")); +break; +}default: +return false; +} +if (x.tok == 7 && tok != 1275068932 && (tok != 1275069447 || args.length == 2)) { +mp.addX(x); +return this.evaluateList(mp, tok, args); +}var s = (tok == 1275069447 && x.tok == 10 || tok == 1275068932 && x.tok == 7 ? null : JS.SV.sValue(x)); +switch (tok) { +case 1275069447: +if (x.tok == 10) { +var bsSelected = x.value; +var modelCount = this.vwr.ms.mc; +var lst = new JU.Lst(); +for (var i = 0; i < modelCount; i++) { +var bs = this.vwr.getModelUndeletedAtomsBitSet(i); +bs.and(bsSelected); +lst.addLast(JS.SV.getVariable(bs)); +} +return mp.addXList(lst); +}return mp.addXAS(JU.PT.split(s, sArg)); +case 1275069446: +if (s.length > 0 && s.charAt(s.length - 1) == '\n') s = s.substring(0, s.length - 1); +return mp.addXStr(JU.PT.rep(s, "\n", sArg)); +case 1275068932: +if (s != null) return mp.addXStr(JU.PT.trim(s, sArg)); +var list = JS.SV.strListValue(x); +for (var i = list.length; --i >= 0; ) list[i] = JU.PT.trim(list[i], sArg); + +return mp.addXAS(list); +} +return mp.addXStr(""); +}, "JS.ScriptMathProcessor,~N,~A"); +Clazz.defineMethod(c$, "evaluateSubstructure", +function(mp, args, tok, isSelector){ +if (args.length == 0 || isSelector && (tok == 134218753 || args.length > 1)) return false; +var objTarget = (tok == 134218756 && !isSelector && args[0].tok == 134218756 ? args[0].value : null); +if (objTarget != null && args.length < 2) return false; +var compileSearch = (tok == 134218756 && !isSelector && args[0].tok == 10); +var objPattern = (args[0].tok == 134218753 ? args[0].value : objTarget != null && args[1].tok == 134218753 ? args[1].value : null); +if (objTarget != null && objPattern == null) return false; +var pattern = (compileSearch ? null : JS.SV.sValue(args[0])); +var bs = new JU.BS(); +if (compileSearch || pattern.length > 0) try { +if (compileSearch) { +return mp.addX(JS.SV.newV(134218756, this.vwr.getSmilesMatcher().compileSearchTarget(this.vwr.ms.at, this.vwr.ms.ac, JS.SV.getBitSet(args[0], false)))); +}if (objTarget != null) return mp.addXBs(this.vwr.getSmilesMatcher().getSubstructureSet(objPattern, objTarget, 0, null, 2)); +if (tok == 134218753) { +return mp.addX(JS.SV.newV(134218753, this.vwr.getSmilesMatcher().compileSmartsPattern(pattern))); +}var bsSelected = (isSelector ? mp.getX().value : args.length == 2 && args[1].tok == 10 ? args[1].value : this.vwr.getModelUndeletedAtomsBitSet(-1)); +bs = this.vwr.getSmilesMatcher().getSubstructureSet((objPattern == null ? pattern : objPattern), this.vwr.ms.at, this.vwr.ms.ac, bsSelected, (tok == 134218757 ? 1 : 2)); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +return (tok != 134218753 && mp.addXBs(bs)); +}, "JS.ScriptMathProcessor,~A,~N,~B"); +Clazz.defineMethod(c$, "evaluateSymop", +function(mp, args, isProperty){ +var narg = args.length; +var o = null; +if (args.length == 2 && args[0].tok == 4 && args[1].tok == 4 && (args[1].value).equalsIgnoreCase("matrix")) { +o = this.vwr.getSymStatic().staticConvertOperation(args[0].value, null); +return (o != null && mp.addXObj(o)); +}if (args.length == 2 && args[0].tok == 12 && args[1].tok == 4 && (args[1].value).equalsIgnoreCase("xyz")) { +o = this.vwr.getSymStatic().staticConvertOperation("", args[0].value); +return (o != null && mp.addXObj(o)); +}var x1 = (isProperty ? mp.getX() : null); +var isPoint = false; +if (x1 != null && x1.tok != 10 && !(isPoint = (x1.tok == 8))) return false; +var bsAtoms = (x1 == null || isPoint ? null : x1.value); +var pt1 = (isPoint ? JS.SV.ptValue(x1) : null); +if (!isPoint && bsAtoms == null) bsAtoms = this.vwr.getThisModelAtoms(); +if (narg == 0) { +var ops = JU.PT.split(JU.PT.trim(this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, null, (bsAtoms == null || bsAtoms.isEmpty() ? Math.max(0, this.vwr.am.cmi) : this.vwr.ms.at[bsAtoms.nextSetBit(0)].mi), false, null).get("symmetryInfo"), "\n"), "\n"); +var lst = new JU.Lst(); +for (var i = 0, n = ops.length; i < n; i++) lst.addLast(JU.PT.split(ops[i], "\t")); + +return mp.addXList(lst); +}var xyz = null; +var tok = 0; +var iOp = -2147483648; +var apt = 0; +var pt2 = null; +var bs1 = null; +var isWyckoff = false; +switch (args[0].tok) { +case 4: +xyz = JS.SV.sValue(args[0]); +switch (xyz == null ? "" : xyz.toLowerCase()) { +case "count": +var sym = this.vwr.getOperativeSymmetry(); +return (narg != 1 ? false : mp.addXInt(sym == null ? 0 : sym.getSpaceGroupOperationCount())); +case "": +tok = 0; +break; +case "invariant": +tok = 36868; +break; +case "wyckoff": +tok = 1086324754; +isWyckoff = true; +break; +case "wyckoffm": +tok = 1086324755; +isWyckoff = true; +break; +} +apt++; +break; +case 12: +xyz = args[0].escape(); +apt++; +break; +case 2: +iOp = args[0].asInt(); +apt++; +break; +case 10: +if (!isPoint) { +bs1 = (args.length == 1 || args[1].tok != 10 ? bsAtoms : null); +bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.getModelIndexForAtom(bsAtoms.nextSetBit(0))); +}break; +} +if (bsAtoms == null) { +if (apt < narg && args[apt].tok == 10) (bsAtoms = new JU.BS()).or(args[apt].value); +if (apt + 1 < narg && args[apt + 1].tok == 10) (bsAtoms == null ? (bsAtoms = new JU.BS()) : bsAtoms).or(args[apt + 1].value); +}var trans = null; +if (narg > apt && args[apt].tok == 7) { +var a = args[apt++].getList(); +if (a.size() != 3) return false; +trans = JU.P3.new3(JS.SV.fValue(a.get(0)), JS.SV.fValue(a.get(1)), JS.SV.fValue(a.get(2))); +} else if (narg > apt && args[apt].tok == 2) { +JU.SimpleUnitCell.ijkToPoint3f(JS.SV.iValue(args[apt++]), trans = new JU.P3(), 0, 0); +}if (pt1 == null && (pt1 = (narg > apt ? mp.ptValue(args[apt], bsAtoms) : null)) != null) apt++; +if ((pt2 = (narg > apt ? mp.ptValue(args[apt], bsAtoms) : null)) != null) apt++; +if (pt1 != null && pt2 == null && bs1 != null && !bs1.isEmpty()) { +pt2 = pt1; +pt1 = JU.P3.newP(this.vwr.ms.at[bs1.nextSetBit(0)]); +}var nth = (pt2 != null && args.length > apt && iOp == -2147483648 && args[apt].tok == 2 ? args[apt].intValue : -1); +if (nth >= 0) apt++; +if (iOp == -2147483648 && tok != 36868) iOp = 0; +var map = null; +if (tok == 0 && xyz != null && xyz.indexOf(",") < 0) { +if (apt == narg) { +map = this.vwr.ms.getPointGroupInfo(null); +} else if (args[apt].tok == 6) { +map = args[apt].getMap(); +}}if (map != null) { +var m; +var pt = xyz.indexOf('.'); +var p1 = xyz.indexOf('^'); +if (p1 > 0) { +nth = JU.PT.parseInt(xyz.substring(p1 + 1)); +} else { +p1 = xyz.length; +nth = 1; +}if (pt > 0 && p1 > pt + 1) { +iOp = JU.PT.parseInt(xyz.substring(pt + 1, p1)); +if (iOp < 1) iOp = 1; +p1 = pt; +} else { +iOp = 1; +}xyz = xyz.substring(0, p1); +o = map.get(xyz + "_m"); +if (o == null) { +o = map.get(xyz); +return (o == null ? mp.addXStr("") : mp.addXObj(o)); +}var centerPt; +try { +if (Clazz.instanceOf(o,"JS.SV")) { +centerPt = (map.get("center")).value; +var obj = o; +if (obj.tok == 11) { +m = obj.value; +} else if (obj.tok == 7) { +m = obj.getList().get(iOp - 1).value; +} else { +return false; +}} else { +centerPt = map.get("center"); +if (Clazz.instanceOf(o,"JU.M3")) { +m = o; +} else { +m = (o).get(iOp - 1); +}}var m0 = m; +m = JU.M3.newM3(m); +if (nth > 1) { +for (var i = 1; i < nth; i++) { +m.mul(m0); +} +}if (pt1 == null) return mp.addXObj(m); +pt1 = JU.P3.newP(pt1); +pt1.sub(centerPt); +m.rotate(pt1); +pt1.add(centerPt); +return mp.addXPt(pt1); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return false; +}var desc = (narg == apt ? (isWyckoff ? "" : tok == 36868 ? "id" : pt2 != null ? "all" : pt1 != null ? "point" : "matrix") : JS.SV.sValue(args[apt++])); +var haveAtom = ((!isWyckoff || isProperty) && bsAtoms != null && !bsAtoms.isEmpty()); +var iatom = (haveAtom ? bsAtoms.nextSetBit(0) : -1); +if (isWyckoff) { +while (desc.length > 0 && JU.PT.isDigit(desc.charAt(0))) desc = desc.substring(1); + +var pt = (haveAtom ? this.vwr.ms.getAtom(iatom) : pt1); +if (pt == null) { +switch (desc) { +case "": +case "*": +desc = "*"; +break; +default: +if (desc.length == 1) desc += "*"; + else return false; +} +}if (desc.length == 0 || desc.equalsIgnoreCase("label")) desc = null; +var letter = (desc == null ? (tok == 1086324755 ? "" : null) : desc.endsWith("*") || desc.equalsIgnoreCase("coord") || desc.equalsIgnoreCase("coords") ? desc : desc.substring(0, 1)); +var sym = this.vwr.getOperativeSymmetry(); +return mp.addXObj(sym == null ? null : sym.getWyckoffPosition(this.vwr, pt, (letter == null ? (tok == 1086324755 ? "M" : null) : (tok == 1086324755 ? "M" : "") + letter))); +}desc = desc.toLowerCase(); +if (tok == 36868 || desc.equals("invariant") && isProperty) { +if (haveAtom && pt1 == null) pt1 = this.vwr.ms.at[iatom]; +haveAtom = (pt1 != null); +if (iatom < 0) iatom = this.vwr.getThisModelAtoms().nextSetBit(0); +}if (tok == 36868 && iOp == -2147483648) { +var ret = null; +var sym = this.vwr.getCurrentUnitCell(); +if (pt1 != null) { +ret = (sym == null ? Clazz.newIntArray (0, 0) : sym.getInvariantSymops(pt1, null)); +} else if (bsAtoms != null && !bsAtoms.isEmpty()) { +var ia = bsAtoms.nextSetBit(0); +pt1 = this.vwr.ms.at[ia]; +ret = this.vwr.ms.getSymmetryInvariant(ia); +}if (ret != null && ret.length > 0) { +var m = new Array(ret.length); +for (var i = 0; i < m.length; i++) { +iOp = ret[i]; +m[i] = this.vwr.getSymmetryInfo(iatom, null, iOp, null, pt1, pt1, 1275068418, desc, 0, -1, 0, null); +} +return mp.addXObj(m); +}return (ret != null && mp.addXAI(ret)); +}return (apt == args.length && mp.addXObj(this.vwr.getSymmetryInfo(iatom, xyz, iOp, trans, pt1, pt2, 1275068418, desc, 0, nth, 0, null))); +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz.defineMethod(c$, "evaluateTensor", +function(mp, args){ +var isTensor = (args.length == 2 && args[1].tok == 1275068445); +var x = (isTensor ? null : mp.getX()); +if (args.length > 2 || !isTensor && x.tok != 10) return false; +var bs = x.value; +var tensorType = (isTensor || args.length == 0 ? null : JS.SV.sValue(args[0]).toLowerCase()); +var calc = this.vwr.getNMRCalculation(); +if ("unique".equals(tensorType)) return mp.addXBs(calc.getUniqueTensorSet(bs)); +var infoType = (args.length < 2 ? null : JS.SV.sValue(args[1]).toLowerCase()); +if (isTensor) { +return mp.addXObj((args[0].value).getInfo(infoType)); +}return mp.addXList(calc.getTensorInfo(tensorType, infoType, bs)); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "evaluateUserFunction", +function(mp, name, args, tok, isSelector){ +var x1 = null; +if (isSelector) { +x1 = mp.getX(); +switch (x1.tok) { +case 10: +break; +case 6: +if (args.length > 0) return false; +x1 = x1.getMap().get(name); +return (x1 == null ? mp.addXStr("") : mp.addX(x1)); +default: +return false; +} +}name = name.toLowerCase(); +mp.wasX = false; +var params = new JU.Lst(); +for (var i = 0; i < args.length; i++) { +params.addLast(args[i]); +} +if (isSelector) { +return mp.addXObj(this.e.getBitsetProperty(x1.value, null, tok, null, null, x1.value, Clazz.newArray(-1, [name, params]), false, x1.index, false)); +}var $var = this.e.getUserFunctionResult(name, params, null); +return ($var == null ? false : mp.addX($var)); +}, "JS.ScriptMathProcessor,~S,~A,~N,~B"); +Clazz.defineMethod(c$, "evaluateWithin", +function(mp, args, isAtomProperty){ +var len = args.length; +if (len < 1 || len > 5) return false; +if (len == 1 && args[0].tok == 10) return mp.addX(args[0]); +var bs = (isAtomProperty ? JS.SV.getBitSet(mp.getX(), false) : null); +var distance = 0; +var withinSpec = args[0].value; +var withinStr = "" + withinSpec; +var ms = this.vwr.ms; +var isVdw = false; +var isWithinModelSet = false; +var isWithinGroup = false; +var isDistance = false; +var rd = null; +var tok = args[0].tok; +switch (tok == 4 ? tok = JS.T.getTokFromName(withinStr) : tok) { +case 1648363544: +isVdw = true; +withinSpec = null; +case 3: +case 2: +isDistance = true; +if (len < 2 || len == 3 && args[1].tok == 7 && args[2].tok != 7) return false; +distance = (isVdw ? 100 : JS.SV.fValue(args[0])); +switch (tok = args[1].tok) { +case 1073742335: +case 1073742334: +isWithinModelSet = args[1].asBoolean(); +if (len > 2 && JS.SV.sValue(args[2]).equalsIgnoreCase("unitcell")) tok = 1814695966; + else if (len > 2 && args[2].tok != 10) return false; +len = 0; +break; +case 4: +var s = JS.SV.sValue(args[1]); +if (s.startsWith("$")) return mp.addXBs(this.getAtomsNearSurface(distance, s.substring(1))); +if (s.equalsIgnoreCase("group")) { +isWithinGroup = true; +tok = 1086324742; +} else if (s.equalsIgnoreCase("vanderwaals") || s.equalsIgnoreCase("vdw")) { +withinSpec = null; +isVdw = true; +tok = 1648363544; +} else { +tok = JS.T.getTokFromName(s); +if (tok == 0) return false; +}break; +} +break; +case 7: +if (len == 1) { +withinSpec = args[0].asString(); +tok = 0; +}break; +case 1073742328: +return (len == 3 && Clazz.instanceOf(args[1].value,"JU.BS") && Clazz.instanceOf(args[2].value,"JU.BS") && mp.addXBs(this.vwr.getBranchBitSet((args[2].value).nextSetBit(0), (args[1].value).nextSetBit(0), true))); +case 134218757: +case 1237320707: +case 134218756: +var bsSelected = null; +var isOK = true; +switch (len) { +case 2: +bsSelected = bs; +break; +case 3: +isOK = (args[2].tok == 10); +if (isOK) bsSelected = args[2].value; +break; +default: +isOK = false; +} +return isOK && mp.addXObj(this.e.getSmilesExt().getSmilesMatches(JS.SV.sValue(args[1]), null, bsSelected, null, tok == 134218756 ? 2 : 1, mp.asBitSet, false)); +} +if ((typeof(withinSpec)=='string')) { +if (tok == 0) { +tok = 1073742362; +if (len > 2) return false; +len = 2; +}} else if (!isDistance) { +return false; +}switch (len) { +case 1: +switch (tok) { +case 136314895: +case 2097184: +case 1812599299: +case 1814695966: +return mp.addXBs(ms.getAtoms(tok, null)); +case 1073741863: +return mp.addXBs(ms.getAtoms(tok, "")); +case 1073742362: +return mp.addXBs(ms.getAtoms(1086324744, withinStr)); +} +return false; +case 2: +switch (tok) { +case 1073742362: +tok = 1086324744; +break; +case 1073741824: +case 1086326786: +case 1086326785: +case 1073741863: +case 1086324744: +case 1111490587: +case 1073742128: +case 1073741925: +case 1073742189: +return mp.addXBs(this.vwr.ms.getAtoms(tok, JS.SV.sValue(args[1]))); +case 1094713349: +case 1094713350: +return mp.addXBs(this.vwr.ms.getAtoms(tok, JS.SV.ptValue(args[1]))); +case 1814695966: +var l = args[1].getList(); +if (l == null) return false; +var oabc = null; +var uc = null; +if (l.size() != 4) return false; +oabc = new Array(4); +for (var i = 0; i < 4; i++) { +if ((oabc[i] = JS.SV.ptValue(l.get(i))) == null) return false; +} +uc = this.vwr.getSymTemp().getUnitCell(oabc, false, null); +return mp.addXBs(this.vwr.ms.getAtoms(tok, uc)); +case 7: +break; +} +break; +case 3: +switch (tok) { +case 1073742335: +case 1073742334: +case 1086324742: +case 1648363544: +case 1814695966: +case 134217750: +case 134219777: +case 1073742329: +case 8: +case 7: +break; +case 1086324744: +withinStr = JS.SV.sValue(args[2]); +break; +default: +return false; +} +break; +} +var plane = null; +var pt = null; +var pts1 = null; +var last = args.length - 1; +switch (args[last].tok) { +case 9: +plane = args[last].value; +break; +case 8: +pt = args[last].value; +if (JS.SV.sValue(args[1]).equalsIgnoreCase("hkl")) plane = this.e.getHklPlane(pt, NaN, null); +break; +case 7: +pts1 = (last == 2 && args[1].tok == 7 ? args[1].getList() : null); +pt = (last == 2 ? JS.SV.ptValue(args[1]) : last == 1 ? JU.P3.new3(NaN, 0, 0) : null); +break; +} +if (plane != null) return mp.addXBs(ms.getAtomsNearPlane(distance, plane)); +var bsLast = (args[last].tok == 10 ? args[last].value : null); +if (bs == null) bs = bsLast; +if (last > 0 && pt == null && pts1 == null && bs == null) return false; +if (tok == 1814695966) { +var asMap = isWithinModelSet; +return ((bs != null || pt != null) && mp.addXObj(this.vwr.ms.getUnitCellPointsWithin(distance, bs, pt, asMap))); +}if (pt != null || pts1 != null) { +if (args[last].tok == 7) { +var sv = args[last].getList(); +var ap3 = new Array(sv.size()); +for (var i = ap3.length; --i >= 0; ) ap3[i] = JS.SV.ptValue(sv.get(i)); + +var ap31 = null; +if (pts1 != null) { +ap31 = new Array(pts1.size()); +for (var i = ap31.length; --i >= 0; ) ap31[i] = JS.SV.ptValue(pts1.get(i)); + +}var ret = new Array(1); +if (bs != null) { +bs.and(this.vwr.getAllAtoms()); +ap31 = this.vwr.ms.at; +}switch (J.bspt.PointIterator.withinDistPoints(distance, pt, ap3, ap31, bs, ret)) { +case 10: +return mp.addXBs(ret[0]); +case 134217751: +return mp.addXPt(ret[0]); +case 1073742001: +return mp.addXList(ret[0]); +case 1275068418: +return mp.addXAI(ret[0]); +case 4: +return mp.addXStr(ret[0]); +default: +return false; +} +}return mp.addXBs(this.vwr.getAtomsNearPt(distance, pt, null)); +}if (tok == 1086324744) return mp.addXBs(this.vwr.ms.getSequenceBits(withinStr, bs, new JU.BS())); +if (bs == null) bs = new JU.BS(); +if (!isDistance) { +try { +return mp.addXBs(this.vwr.ms.getAtoms(tok, bs)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}if (isWithinGroup) return mp.addXBs(this.vwr.getGroupsWithin(Clazz.floatToInt(distance), bs)); +if (isVdw) { +rd = new J.atomdata.RadiusData(null, (distance > 10 ? distance / 100 : distance), (distance > 10 ? J.atomdata.RadiusData.EnumType.FACTOR : J.atomdata.RadiusData.EnumType.OFFSET), J.c.VDW.AUTO); +if (distance < 0) distance = 0; +}var bsret = this.vwr.ms.getAtomsWithinRadius(distance, (isAtomProperty ? bsLast : bs), isWithinModelSet, rd, isAtomProperty ? bs : null); +if (isAtomProperty) { +bsret.andNot(bsLast); +}return mp.addXBs(bsret); +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz.defineMethod(c$, "evaluateWrite", +function(mp, args){ +var n = args.length; +var asBytes = false; +if (n == 2 && args[1].tok == 1073742335) { +n = 1; +asBytes = true; +}switch (n) { +case 0: +return false; +case 1: +var type = args[0].asString().toUpperCase(); +if (type.equals("PNGJ")) { +var o = this.vwr.fm.getFileAsMap(null, "PNGJ", asBytes); +return (asBytes ? mp.addX(JS.SV.newV(15, new JU.BArray(o))) : mp.addXMap(o)); +}if (JU.PT.isOneOf(type, ";ZIP;ZIPALL;JMOL;")) { +var params = new java.util.Hashtable(); +var oc = new JU.OC(); +params.put("outputChannel", oc); +this.vwr.createZip(null, type, params); +var bytes = oc.toByteArray(); +if (asBytes) return mp.addX(JS.SV.newV(15, new JU.BArray(bytes))); +params = new java.util.Hashtable(); +this.vwr.readFileAsMap(JU.Rdr.getBIS(bytes), params, null); +return mp.addXMap(params); +}break; +} +return mp.addXStr(this.e.getCmdExt().dispatch(134221856, true, args)); +}, "JS.ScriptMathProcessor,~A"); +Clazz.defineMethod(c$, "getAtomsNearSurface", +function(distance, surfaceId){ +var data = Clazz.newArray(-1, [surfaceId, null, null]); +if (this.e.getShapePropertyData(24, "getVertices", data)) return this.getAtomsNearPts(distance, data[1], data[2]); +data[1] = Integer.$valueOf(0); +data[2] = Integer.$valueOf(-1); +if (this.e.getShapePropertyData(22, "getCenter", data)) return this.vwr.getAtomsNearPt(distance, data[2], null); +data[1] = Float.$valueOf(distance); +if (this.e.getShapePropertyData(21, "getAtomsWithin", data)) return data[2]; +return new JU.BS(); +}, "~N,~S"); +Clazz.defineMethod(c$, "getAtomsNearPts", +function(distance, points, bsInclude){ +var bsResult = new JU.BS(); +if (points.length == 0 || bsInclude != null && bsInclude.isEmpty()) return bsResult; +if (bsInclude == null) bsInclude = JU.BSUtil.setAll(points.length); +var at = this.vwr.ms.at; +for (var i = this.vwr.ms.ac; --i >= 0; ) { +var atom = at[i]; +if (atom == null) continue; +for (var j = bsInclude.nextSetBit(0); j >= 0; j = bsInclude.nextSetBit(j + 1)) if (atom.distance(points[j]) < distance) { +bsResult.set(i); +break; +} +} +return bsResult; +}, "~N,~A,JU.BS"); +Clazz.defineMethod(c$, "getMinMax", +function(floatOrSVArray, tok, isSV){ +var data = null; +var sv = null; +var ndata = 0; +var htPivot = null; +while (true) { +if (JU.AU.isAF(floatOrSVArray)) { +if (tok == 1275068725) return Float.$valueOf(NaN); +data = floatOrSVArray; +ndata = data.length; +if (ndata == 0) break; +} else if (Clazz.instanceOf(floatOrSVArray,"JU.Lst")) { +sv = floatOrSVArray; +ndata = sv.size(); +if (ndata == 0) { +if (tok != 1275068725) break; +} else { +if (tok != 1275068725) { +var sv0 = sv.get(0); +if (sv0.tok == 8) return this.getMinMaxPoint(sv, tok); +if (sv0.tok == 4 && (sv0.value).startsWith("{")) { +var pt = JS.SV.ptValue(sv0); +if (Clazz.instanceOf(pt,"JU.P3")) return this.getMinMaxPoint(sv, tok); +if (Clazz.instanceOf(pt,"JU.P4")) return this.getMinMaxQuaternion(sv, tok); +break; +}}}} else { +break; +}var sum; +var minMax; +var isMin = false; +switch (tok) { +case 1275068725: +htPivot = new java.util.Hashtable(); +sum = minMax = 0; +break; +case 32: +isMin = true; +sum = 3.4028235E38; +minMax = 2147483647; +break; +case 64: +sum = -3.4028235E38; +minMax = -2147483647; +break; +default: +sum = minMax = 0; +} +var sum2 = 0; +var n = 0; +var isInt = true; +var isPivot = (tok == 1275068725); +for (var i = ndata; --i >= 0; ) { +var o = (sv == null ? null : sv.get(i)); +var svi = (!isSV ? null : o == null ? JS.SV.vF : o); +var v = (isPivot ? 1 : data == null ? JS.SV.fValue(svi) : data[i]); +if (Float.isNaN(v)) continue; +n++; +switch (tok) { +case 160: +case 192: +sum2 += (v) * v; +case 128: +case 96: +sum += v; +break; +case 1275068725: +var key = (svi == null ? o.toString() : svi.asString()); +var ii = htPivot.get(key); +htPivot.put(key, (ii == null ? Integer.$valueOf(1) : Integer.$valueOf(ii.intValue() + 1))); +break; +case 32: +case 64: +isInt = new Boolean (isInt & (svi.tok == 2)).valueOf(); +if (isMin == (v < sum)) { +sum = v; +if (isInt) minMax = svi.intValue; +}break; +} +} +if (tok == 1275068725) { +return htPivot; +}if (n == 0) break; +switch (tok) { +case 96: +sum /= n; +break; +case 192: +if (n == 1) break; +sum = Math.sqrt((sum2 - sum * sum / n) / (n - 1)); +break; +case 32: +case 64: +if (isInt) return Integer.$valueOf(minMax); +break; +case 128: +break; +case 160: +sum = sum2; +break; +} +return Float.$valueOf(sum); +} +return JS.MathExt.nan; +}, "~O,~N,~B"); +Clazz.defineMethod(c$, "getMinMaxPoint", +function(pointOrSVArray, tok){ +var data = null; +var sv = null; +var ndata = 0; +if (Clazz.instanceOf(pointOrSVArray,Array)) { +data = pointOrSVArray; +ndata = data.length; +} else if (Clazz.instanceOf(pointOrSVArray,"JU.Lst")) { +sv = pointOrSVArray; +ndata = sv.size(); +}if (sv == null && data == null) return JS.MathExt.nan; +var result = new JU.P3(); +var fdata = Clazz.newFloatArray (ndata, 0); +for (var xyz = 0; xyz < 3; xyz++) { +for (var i = 0; i < ndata; i++) { +var pt = (data == null ? JS.SV.ptValue(sv.get(i)) : data[i]); +if (pt == null) return JS.MathExt.nan; +switch (xyz) { +case 0: +fdata[i] = pt.x; +break; +case 1: +fdata[i] = pt.y; +break; +case 2: +fdata[i] = pt.z; +break; +} +} +var f = this.getMinMax(fdata, tok, true); +if (!(Clazz.instanceOf(f, Number))) return JS.MathExt.nan; +var value = (f).floatValue(); +switch (xyz) { +case 0: +result.x = value; +break; +case 1: +result.y = value; +break; +case 2: +result.z = value; +break; +} +} +return result; +}, "~O,~N"); +Clazz.defineMethod(c$, "getMinMaxQuaternion", +function(svData, tok){ +var data; +switch (tok) { +case 32: +case 64: +case 128: +case 160: +return JS.MathExt.nan; +} +while (true) { +data = this.e.getQuaternionArray(svData, 1073742001); +if (data == null) break; +var retStddev = Clazz.newFloatArray (1, 0); +var result = JU.Quat.sphereMean(data, retStddev, 0.0001); +switch (tok) { +case 96: +return result; +case 192: +return Float.$valueOf(retStddev[0]); +} +break; +} +return JS.MathExt.nan; +}, "JU.Lst,~N"); +Clazz.defineMethod(c$, "getPatternMatcher", +function(){ +return (this.pm == null ? this.pm = J.api.Interface.getUtil("PatternMatcher", this.e.vwr, "script") : this.pm); +}); +Clazz.defineMethod(c$, "opTokenFor", +function(tok){ +switch (tok) { +case 1275069441: +case 1275069446: +return JS.T.tokenPlus; +case 1275068931: +return JS.T.tokenMinus; +case 1275068929: +return JS.T.tokenTimes; +case 1275068930: +return JS.T.tokenMul3; +case 1275068928: +return JS.T.tokenDivide; +} +return null; +}, "~N"); +Clazz.defineMethod(c$, "setContactBitSets", +function(bsA, bsB, localOnly, distance, rd, warnMultiModel){ +var withinAllModels; +var bs; +if (bsB == null) { +bsB = JU.BSUtil.setAll(this.vwr.ms.ac); +JU.BSUtil.andNot(bsB, this.vwr.slm.bsDeleted); +bsB.andNot(bsA); +withinAllModels = false; +} else { +bs = JU.BSUtil.copy(bsA); +bs.or(bsB); +var nModels = this.vwr.ms.getModelBS(bs, false).cardinality(); +withinAllModels = (nModels > 1); +if (warnMultiModel && nModels > 1 && !this.e.tQuiet) this.e.showString(J.i18n.GT.$("Note: More than one model is involved in this contact!")); +}if (!bsA.equals(bsB)) { +var setBfirst = (!localOnly || bsA.cardinality() < bsB.cardinality()); +if (setBfirst) { +bs = this.vwr.ms.getAtomsWithinRadius(distance, bsA, withinAllModels, (Float.isNaN(distance) ? rd : null), null); +bsB.and(bs); +}if (localOnly) { +bs = this.vwr.ms.getAtomsWithinRadius(distance, bsB, withinAllModels, (Float.isNaN(distance) ? rd : null), null); +bsA.and(bs); +if (!setBfirst) { +bs = this.vwr.ms.getAtomsWithinRadius(distance, bsA, withinAllModels, (Float.isNaN(distance) ? rd : null), null); +bsB.and(bs); +}bs = JU.BSUtil.copy(bsB); +bs.and(bsA); +if (bs.equals(bsA)) bsB.andNot(bsA); + else if (bs.equals(bsB)) bsA.andNot(bsB); +}}return bsB; +}, "JU.BS,JU.BS,~B,~N,J.atomdata.RadiusData,~B"); +c$.nan = Float.$valueOf(NaN); +c$.t0 = System.currentTimeMillis(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/PointGroup.js b/config/plugins/visualizations/jmol/static/j2s/JS/PointGroup.js new file mode 100755 index 000000000000..56d884f3ecc7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/PointGroup.js @@ -0,0 +1,864 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.M3", "$.V3"], "JS.PointGroup", ["java.util.Hashtable", "JU.Lst", "$.P3", "$.PT", "$.Quat", "$.SB", "J.bspt.Bspt", "JU.BSUtil", "$.Escape", "$.Logger", "$.Point3fi"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isAtoms = false; +this.drawInfo = null; +this.info = null; +this.textInfo = null; +this.iter = null; +this.drawType = ""; +this.drawIndex = 0; +this.scale = NaN; +this.nAxes = null; +this.axes = null; +this.nAtoms = 0; +this.radius = 0; +this.distanceTolerance = 0.25; +this.distanceTolerance2 = 0; +this.linearTolerance = 8; +this.cosTolerance = 0.99; +this.name = "C_1?"; +this.principalAxis = null; +this.principalPlane = null; +this.convention = 0; +this.vTemp = null; +this.centerAtomIndex = -1; +this.haveInversionCenter = false; +this.center = null; +this.points = null; +this.elements = null; +this.atomMap = null; +this.bsAtoms = null; +this.haveVibration = false; +this.localEnvOnly = false; +this.$isLinear = false; +this.sppa = 0; +this.maxAtoms = 250; +this.maxElement = 0; +this.eCounts = null; +this.nOps = 0; +if (!Clazz.isClassDefined("JS.PointGroup.Operation")) { +JS.PointGroup.$PointGroup$Operation$ (); +} +Clazz.instantialize(this, arguments);}, JS, "PointGroup", null); +Clazz.prepareFields (c$, function(){ +this.nAxes = Clazz.newIntArray (JS.PointGroup.maxAxis, 0); +this.axes = new Array(JS.PointGroup.maxAxis); +this.vTemp = new JU.V3(); +}); +Clazz.makeConstructor(c$, +function(isHM){ +this.convention = (isHM ? 1 : 0); +}, "~B"); +Clazz.defineMethod(c$, "getName", +function(){ +return this.getConventionalName(this.name); +}); +Clazz.defineMethod(c$, "getHermannMauguinName", +function(){ +return JS.PointGroup.getHMfromSFName(this.name); +}); +Clazz.defineMethod(c$, "getConventionalName", +function(name){ +return (this.convention == 1 ? JS.PointGroup.getHMfromSFName(name) : name); +}, "~S"); +c$.getPointGroup = Clazz.defineMethod(c$, "getPointGroup", +function(pgLast, center, atomset, bsAtoms, haveVibration, distanceTolerance, linearTolerance, maxAtoms, localEnvOnly, isHM, sppa){ +var pg = new JS.PointGroup(isHM); +if (distanceTolerance <= 0) { +distanceTolerance = 0.01; +}if (linearTolerance <= 0) { +linearTolerance = 0.5; +}if (maxAtoms <= 0) maxAtoms = 250; +pg.distanceTolerance = distanceTolerance; +pg.distanceTolerance2 = distanceTolerance * distanceTolerance; +pg.linearTolerance = linearTolerance; +pg.maxAtoms = maxAtoms; +pg.isAtoms = (bsAtoms != null); +pg.bsAtoms = (pg.isAtoms ? bsAtoms : JU.BSUtil.newBitSet2(0, atomset.length)); +pg.haveVibration = haveVibration; +pg.center = center; +pg.localEnvOnly = localEnvOnly; +pg.sppa = sppa; +if (JU.Logger.debugging) pgLast = null; +return (pg.set(pgLast, atomset) ? pg : pgLast); +}, "JS.PointGroup,JU.T3,~A,JU.BS,~B,~N,~N,~N,~B,~B,~N"); +Clazz.defineMethod(c$, "isEqual", +function(pg){ +if (pg == null) return false; +if (this.convention != pg.convention || this.linearTolerance != pg.linearTolerance || this.distanceTolerance != pg.distanceTolerance || this.nAtoms != pg.nAtoms || this.localEnvOnly != pg.localEnvOnly || this.haveVibration != pg.haveVibration || this.bsAtoms == null ? pg.bsAtoms != null : !this.bsAtoms.equals(pg.bsAtoms)) return false; +for (var i = 0; i < this.nAtoms; i++) { +if (this.elements[i] != pg.elements[i] || !this.points[i].equals(pg.points[i])) return false; +} +return true; +}, "JS.PointGroup"); +Clazz.defineMethod(c$, "set", +function(pgLast, atomset){ +this.cosTolerance = (Math.cos(this.linearTolerance / 180 * 3.141592653589793)); +if (!this.getPointsAndElements(atomset)) { +JU.Logger.error("Too many atoms for point group calculation"); +this.name = "point group not determined -- ac > " + this.maxAtoms + " -- select fewer atoms and try again."; +return true; +}this.getElementCounts(); +if (this.haveVibration) { +var atomVibs = new Array(this.points.length); +for (var i = this.points.length; --i >= 0; ) { +atomVibs[i] = JU.P3.newP(this.points[i]); +var v = (this.points[i]).getVibrationVector(); +if (v != null) atomVibs[i].add(v); +} +this.points = atomVibs; +}if (this.isEqual(pgLast)) return false; +try { +this.findInversionCenter(); +this.$isLinear = this.isLinear(this.points); +if (this.$isLinear) { +if (this.haveInversionCenter) { +this.name = "D(infinity)h"; +} else { +this.name = "C(infinity)v"; +}this.vTemp.sub2(this.points[1], this.points[0]); +this.addAxis(16, this.vTemp); +this.principalAxis = this.axes[16][0]; +if (this.haveInversionCenter) { +this.axes[0] = new Array(1); +this.principalPlane = this.axes[0][this.nAxes[0]++] = Clazz.innerTypeInstance(JS.PointGroup.Operation, this, null, this.vTemp); +}return true; +}this.axes[0] = new Array(15); +var nPlanes = 0; +this.findCAxes(); +nPlanes = this.findPlanes(); +this.findAdditionalAxes(nPlanes); +var n = this.getHighestOrder(); +if (this.nAxes[17] > 1) { +if (this.nAxes[19] > 1) { +if (this.haveInversionCenter) { +this.name = "Ih"; +} else { +this.name = "I"; +}} else if (this.nAxes[18] > 1) { +if (this.haveInversionCenter) { +this.name = "Oh"; +} else { +this.name = "O"; +}} else { +if (nPlanes > 0) { +if (this.haveInversionCenter) { +this.name = "Th"; +} else { +this.name = "Td"; +}} else { +this.name = "T"; +}}} else { +if (n < 2) { +if (nPlanes == 1) { +this.name = "Cs"; +return true; +}if (this.haveInversionCenter) { +this.name = "Ci"; +return true; +}this.name = "C1"; +} else if ((n % 2) == 1 && this.nAxes[16] > 0 || (n % 2) == 0 && this.nAxes[16] > 1) { +this.principalAxis = this.setPrincipalAxis(n, nPlanes); +if (nPlanes == 0) { +if (n < 14) { +this.name = "S" + n; +} else { +this.name = "D" + (n - 14); +}} else { +if (n < 14) n = Clazz.doubleToInt(n / 2); + else n -= 14; +if (nPlanes == n) { +this.name = "D" + n + "d"; +} else { +this.name = "D" + n + "h"; +}}} else if (nPlanes == 0) { +this.principalAxis = this.axes[n][0]; +if (n < 14) { +this.name = "S" + n; +} else { +this.name = "C" + (n - 14); +}} else if (nPlanes == n - 14) { +this.principalAxis = this.axes[n][0]; +this.name = "C" + nPlanes + "v"; +} else { +this.principalAxis = this.axes[n < 14 ? n + 14 : n][0]; +this.principalPlane = this.axes[0][0]; +if (n < 14) n /= 2; + else n -= 14; +this.name = "C" + n + "h"; +}}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.name = "??"; +} else { +throw e; +} +} finally { +JU.Logger.info("Point group found: " + this.name); +} +return true; +}, "JS.PointGroup,~A"); +Clazz.defineMethod(c$, "setPrincipalAxis", +function(n, nPlanes){ +var principalPlane = this.setPrincipalPlane(n, nPlanes); +if (nPlanes == 0 && n < 14 || this.nAxes[n] == 1) { +return this.axes[n][0]; +}if (principalPlane == null) return null; +for (var i = 0; i < this.nAxes[16]; i++) if (this.isParallel(principalPlane.normalOrAxis, this.axes[16][i].normalOrAxis)) { +if (i != 0) { +var o = this.axes[16][0]; +this.axes[16][0] = this.axes[16][i]; +this.axes[16][i] = o; +}return this.axes[16][0]; +} +return null; +}, "~N,~N"); +Clazz.defineMethod(c$, "setPrincipalPlane", +function(n, nPlanes){ +if (nPlanes == 1) return this.principalPlane = this.axes[0][0]; +if (nPlanes == 0 || nPlanes == n - 14) return null; +for (var i = 0; i < nPlanes; i++) for (var j = 0, nPerp = 0; j < nPlanes; j++) if (this.isPerpendicular(this.axes[0][i].normalOrAxis, this.axes[0][j].normalOrAxis) && ++nPerp > 2) { +if (i != 0) { +var o = this.axes[0][0]; +this.axes[0][0] = this.axes[0][i]; +this.axes[0][i] = o; +}return this.principalPlane = this.axes[0][0]; +} + +return null; +}, "~N,~N"); +Clazz.defineMethod(c$, "getPointsAndElements", +function(atomset){ +var ac = this.bsAtoms.cardinality(); +if (this.isAtoms && ac > this.maxAtoms) return false; +this.points = new Array(ac); +this.elements = Clazz.newIntArray (ac, 0); +if (ac == 0) return true; +var atomIndexMax = 0; +for (var i = this.bsAtoms.nextSetBit(0); i >= 0; i = this.bsAtoms.nextSetBit(i + 1)) { +var p = atomset[i]; +if (Clazz.instanceOf(p,"JU.Node")) atomIndexMax = Math.max(atomIndexMax, (p).i); +} +this.atomMap = Clazz.newIntArray (atomIndexMax + 1, 0); +this.nAtoms = 0; +var needCenter = (this.center == null); +if (needCenter) this.center = new JU.P3(); +var bspt = new J.bspt.Bspt(3, 0); +for (var i = this.bsAtoms.nextSetBit(0); i >= 0; i = this.bsAtoms.nextSetBit(i + 1), this.nAtoms++) { +var p = atomset[i]; +if (Clazz.instanceOf(p,"JU.Node")) { +var bondIndex = (this.localEnvOnly ? 1 : 1 + Math.max(3, (p).getCovalentBondCount())); +this.elements[this.nAtoms] = (p).getElementNumber() * bondIndex; +this.atomMap[(p).i] = this.nAtoms + 1; +} else { +var newPt = new JU.Point3fi(); +newPt.setT(p); +newPt.i = -1 - this.nAtoms; +if (Clazz.instanceOf(p,"JU.Point3fi")) this.elements[this.nAtoms] = Math.max(0, (p).sD); +p = newPt; +}bspt.addTuple(p); +if (needCenter) this.center.add(p); +this.points[this.nAtoms] = p; +} +this.iter = bspt.allocateCubeIterator(); +if (needCenter) this.center.scale(1 / this.nAtoms); +for (var i = this.nAtoms; --i >= 0; ) { +var r2 = this.center.distanceSquared(this.points[i]); +if (this.isAtoms && r2 < this.distanceTolerance2) this.centerAtomIndex = i; +this.radius = Math.max(this.radius, r2); +} +this.radius = Math.sqrt(this.radius); +if (this.radius < 1.5 && this.distanceTolerance > 0.15) { +this.distanceTolerance = this.radius / 10; +this.distanceTolerance2 = this.distanceTolerance * this.distanceTolerance; +System.out.println("PointGroup calculation adjusting distanceTolerance to " + this.distanceTolerance); +}return true; +}, "~A"); +Clazz.defineMethod(c$, "findInversionCenter", +function(){ +this.haveInversionCenter = this.checkOperation(null, this.center, -1); +if (this.haveInversionCenter) { +this.axes[1] = new Array(1); +this.axes[1][0] = Clazz.innerTypeInstance(JS.PointGroup.Operation, this, null); +}}); +Clazz.defineMethod(c$, "checkOperation", +function(q, center, iOrder){ +var pt = new JU.P3(); +var nFound = 0; +var isInversion = (iOrder < 14); +out : for (var n = this.points.length, i = n; --i >= 0 && nFound < n; ) { +if (i == this.centerAtomIndex) continue; +var a1 = this.points[i]; +var e1 = this.elements[i]; +if (q != null) { +pt.sub2(a1, center); +q.transform2(pt, pt).add(center); +} else { +pt.setT(a1); +}if (isInversion) { +this.vTemp.sub2(center, pt); +pt.scaleAdd2(2, this.vTemp, pt); +}if ((q != null || isInversion) && pt.distanceSquared(a1) < this.distanceTolerance2) { +nFound++; +continue; +}this.iter.initialize(pt, this.distanceTolerance, false); +while (this.iter.hasMoreElements()) { +var a2 = this.iter.nextElement(); +if (a2 === a1) continue; +var j = this.getPointIndex((a2).i); +if (this.centerAtomIndex >= 0 && j == this.centerAtomIndex || j >= this.elements.length || this.elements[j] != e1) continue; +if (pt.distanceSquared(a2) < this.distanceTolerance2) { +nFound++; +continue out; +}} +return false; +} +return true; +}, "JU.Quat,JU.T3,~N"); +Clazz.defineMethod(c$, "getPointIndex", +function(j){ +return (j < 0 ? -j : this.atomMap[j]) - 1; +}, "~N"); +Clazz.defineMethod(c$, "isLinear", +function(atoms){ +var v1 = null; +if (atoms.length < 2) return false; +for (var i = atoms.length; --i >= 0; ) { +if (i == this.centerAtomIndex) continue; +if (v1 == null) { +v1 = new JU.V3(); +v1.sub2(atoms[i], this.center); +v1.normalize(); +this.vTemp.setT(v1); +continue; +}this.vTemp.sub2(atoms[i], this.center); +this.vTemp.normalize(); +if (!this.isParallel(v1, this.vTemp)) return false; +} +return true; +}, "~A"); +Clazz.defineMethod(c$, "isParallel", +function(v1, v2){ +return (Math.abs(v1.dot(v2)) >= this.cosTolerance); +}, "JU.V3,JU.V3"); +Clazz.defineMethod(c$, "isPerpendicular", +function(v1, v2){ +return (Math.abs(v1.dot(v2)) <= 1 - this.cosTolerance); +}, "JU.V3,JU.V3"); +Clazz.defineMethod(c$, "getElementCounts", +function(){ +for (var i = this.points.length; --i >= 0; ) { +var e1 = this.elements[i]; +if (e1 > this.maxElement) this.maxElement = e1; +} +this.eCounts = Clazz.newIntArray (++this.maxElement, 0); +for (var i = this.points.length; --i >= 0; ) this.eCounts[this.elements[i]]++; + +}); +Clazz.defineMethod(c$, "findCAxes", +function(){ +var v1 = new JU.V3(); +var v2 = new JU.V3(); +var v3 = new JU.V3(); +for (var i = this.points.length; --i >= 0; ) { +if (i == this.centerAtomIndex) continue; +var a1 = this.points[i]; +var e1 = this.elements[i]; +for (var j = this.points.length; --j > i; ) { +var a2 = this.points[j]; +if (this.elements[j] != e1) continue; +v1.sub2(a1, this.center); +v2.sub2(a2, this.center); +v1.normalize(); +v2.normalize(); +if (this.isParallel(v1, v2)) { +this.getAllAxes(v1); +continue; +}if (this.nAxes[16] < JS.PointGroup.axesMaxN[16]) { +v3.ave(a1, a2); +v3.sub(this.center); +this.getAllAxes(v3); +}var order = (6.283185307179586 / v1.angle(v2)); +var iOrder = Clazz.doubleToInt(Math.floor(order + 0.01)); +var isIntegerOrder = (order - iOrder <= 0.02); +if (!isIntegerOrder || (iOrder = iOrder + 14) >= JS.PointGroup.maxAxis) continue; +if (this.nAxes[iOrder] < JS.PointGroup.axesMaxN[iOrder]) { +v3.cross(v1, v2); +this.checkAxisOrder(iOrder, v3, this.center); +}} +} +var vs = new Array(this.nAxes[16] * 2); +for (var i = 0; i < vs.length; i++) vs[i] = new JU.V3(); + +var n = 0; +for (var i = 0; i < this.nAxes[16]; i++) { +vs[n++].setT(this.axes[16][i].normalOrAxis); +vs[n].setT(this.axes[16][i].normalOrAxis); +vs[n++].scale(-1); +} +for (var i = vs.length; --i >= 2; ) for (var j = i; --j >= 1; ) for (var k = j; --k >= 0; ) { +v3.add2(vs[i], vs[j]); +v3.add(vs[k]); +if (v3.length() < 1) continue; +this.checkAxisOrder(17, v3, this.center); +} + + +var nMin = 2147483647; +var iMin = -1; +for (var i = 0; i < this.maxElement; i++) { +if (this.eCounts[i] < nMin && this.eCounts[i] > 2) { +nMin = this.eCounts[i]; +iMin = i; +}} +out : for (var i = 0; i < this.points.length - 2; i++) if (this.elements[i] == iMin) for (var j = i + 1; j < this.points.length - 1; j++) if (this.elements[j] == iMin) for (var k = j + 1; k < this.points.length; k++) if (this.elements[k] == iMin) { +v1.sub2(this.points[i], this.points[j]); +v2.sub2(this.points[i], this.points[k]); +v1.normalize(); +v2.normalize(); +v3.cross(v1, v2); +this.getAllAxes(v3); +v1.add2(this.points[i], this.points[j]); +v1.add(this.points[k]); +v1.normalize(); +if (!this.isParallel(v1, v3)) this.getAllAxes(v1); +if (this.nAxes[19] == JS.PointGroup.axesMaxN[19]) break out; +} + + +vs = new Array(this.maxElement); +for (var i = this.points.length; --i >= 0; ) { +var e1 = this.elements[i]; +if (vs[e1] == null) vs[e1] = new JU.V3(); + else if (this.haveInversionCenter) continue; +vs[e1].add(this.points[i]); +} +if (!this.haveInversionCenter) for (var i = 0; i < this.maxElement; i++) if (vs[i] != null) vs[i].scale(1 / this.eCounts[i]); + +for (var i = 0; i < this.maxElement; i++) if (vs[i] != null) for (var j = 0; j < this.maxElement; j++) { +if (i == j || vs[j] == null) continue; +if (this.haveInversionCenter) v1.cross(vs[i], vs[j]); + else v1.sub2(vs[i], vs[j]); +this.checkAxisOrder(16, v1, this.center); +} + +return this.getHighestOrder(); +}); +Clazz.defineMethod(c$, "getAllAxes", +function(v3){ +for (var o = 16; o < JS.PointGroup.maxAxis; o++) if (this.nAxes[o] < JS.PointGroup.axesMaxN[o]) this.checkAxisOrder(o, v3, this.center); + +}, "JU.V3"); +Clazz.defineMethod(c$, "getHighestOrder", +function(){ +var n = 0; +for (n = 14; --n > 1 && this.nAxes[n] == 0; ) { +} +if (n > 1) return (n + 14 < JS.PointGroup.maxAxis && this.nAxes[n + 14] > 0 ? n + 14 : n); +for (n = JS.PointGroup.maxAxis; --n > 1 && this.nAxes[n] == 0; ) { +} +return n; +}); +Clazz.defineMethod(c$, "checkAxisOrder", +function(iOrder, v, center){ +switch (iOrder) { +case 22: +if (this.nAxes[17] > 0) return false; +case 20: +case 18: +if (this.nAxes[19] > 0) return false; +break; +case 17: +if (this.nAxes[22] > 0) return false; +break; +case 19: +if (this.nAxes[18] > 0 || this.nAxes[20] > 0 || this.nAxes[22] > 0) return false; +break; +case 16: +break; +} +v.normalize(); +if (this.haveAxis(iOrder, v)) return false; +var q = JS.PointGroup.getQuaternion(v, iOrder); +if (!this.checkOperation(q, center, iOrder)) return false; +this.addAxis(iOrder, v); +switch (iOrder) { +case 16: +this.checkAxisOrder(4, v, center); +break; +case 17: +this.checkAxisOrder(3, v, center); +if (this.haveInversionCenter) this.addAxis(6, v); +break; +case 18: +this.addAxis(16, v); +this.checkAxisOrder(4, v, center); +this.checkAxisOrder(8, v, center); +break; +case 19: +this.checkAxisOrder(5, v, center); +if (this.haveInversionCenter) this.addAxis(10, v); +break; +case 20: +this.addAxis(16, v); +this.addAxis(17, v); +this.checkAxisOrder(3, v, center); +this.checkAxisOrder(6, v, center); +this.checkAxisOrder(12, v, center); +break; +case 22: +this.addAxis(16, v); +this.addAxis(18, v); +break; +} +return true; +}, "~N,JU.V3,JU.T3"); +Clazz.defineMethod(c$, "addAxis", +function(iOrder, v){ +if (this.haveAxis(iOrder, v)) return; +if (this.axes[iOrder] == null) this.axes[iOrder] = new Array(JS.PointGroup.axesMaxN[iOrder]); +this.axes[iOrder][this.nAxes[iOrder]++] = Clazz.innerTypeInstance(JS.PointGroup.Operation, this, null, v, iOrder); +}, "~N,JU.V3"); +Clazz.defineMethod(c$, "haveAxis", +function(iOrder, v){ +if (this.nAxes[iOrder] == JS.PointGroup.axesMaxN[iOrder]) { +return true; +}if (this.nAxes[iOrder] > 0) for (var i = this.nAxes[iOrder]; --i >= 0; ) { +if (this.isParallel(v, this.axes[iOrder][i].normalOrAxis)) return true; +} +return false; +}, "~N,JU.V3"); +Clazz.defineMethod(c$, "findPlanes", +function(){ +var pt = new JU.P3(); +var v1 = new JU.V3(); +var v2 = new JU.V3(); +var v3 = new JU.V3(); +var nPlanes = 0; +var haveAxes = (this.getHighestOrder() > 1); +for (var i = this.points.length; --i >= 0; ) { +if (i == this.centerAtomIndex) continue; +var a1 = this.points[i]; +var e1 = this.elements[i]; +for (var j = this.points.length; --j > i; ) { +if (haveAxes && this.elements[j] != e1) continue; +var a2 = this.points[j]; +pt.add2(a1, a2); +pt.scale(0.5); +v1.sub2(a1, this.center); +v2.sub2(a2, this.center); +v1.normalize(); +v2.normalize(); +if (!this.isParallel(v1, v2)) { +v3.cross(v1, v2); +v3.normalize(); +nPlanes = this.getPlane(v3); +}v3.sub2(a2, a1); +v3.normalize(); +nPlanes = this.getPlane(v3); +if (nPlanes == JS.PointGroup.axesMaxN[0]) return nPlanes; +} +} +if (haveAxes) for (var i = 16; i < JS.PointGroup.maxAxis; i++) for (var j = 0; j < this.nAxes[i]; j++) nPlanes = this.getPlane(this.axes[i][j].normalOrAxis); + + +return nPlanes; +}); +Clazz.defineMethod(c$, "getPlane", +function(v3){ +if (!this.haveAxis(0, v3) && this.checkOperation(JU.Quat.newVA(v3, 180), this.center, -1)) this.axes[0][this.nAxes[0]++] = Clazz.innerTypeInstance(JS.PointGroup.Operation, this, null, v3); +return this.nAxes[0]; +}, "JU.V3"); +Clazz.defineMethod(c$, "findAdditionalAxes", +function(nPlanes){ +var planes = this.axes[0]; +var Cn = 0; +if (nPlanes > 1 && ((Cn = nPlanes + 14) < JS.PointGroup.maxAxis) && this.nAxes[Cn] == 0) { +this.vTemp.cross(planes[0].normalOrAxis, planes[1].normalOrAxis); +if (!this.checkAxisOrder(Cn, this.vTemp, this.center) && nPlanes > 2) { +this.vTemp.cross(planes[1].normalOrAxis, planes[2].normalOrAxis); +this.checkAxisOrder(Cn - 1, this.vTemp, this.center); +}}if (this.nAxes[16] == 0 && nPlanes > 2) { +for (var i = 0; i < nPlanes - 1; i++) { +for (var j = i + 1; j < nPlanes; j++) { +this.vTemp.add2(planes[1].normalOrAxis, planes[2].normalOrAxis); +this.checkAxisOrder(16, this.vTemp, this.center); +} +} +}}, "~N"); +c$.getQuaternion = Clazz.defineMethod(c$, "getQuaternion", +function(v, iOrder){ +return JU.Quat.newVA(v, (iOrder < 14 ? 180 : 0) + (iOrder == 0 ? 0 : Clazz.doubleToInt(360 / (iOrder % 14)))); +}, "JU.V3,~N"); +Clazz.defineMethod(c$, "getInfo", +function(modelIndex, drawID, asInfo, type, index, scaleFactor){ +var asDraw = (drawID != null); +this.info = (asInfo ? new java.util.Hashtable() : null); +var v = new JU.V3(); +var op; +if (scaleFactor == 0) scaleFactor = 1; +this.scale = scaleFactor; +var nType = Clazz.newIntArray (4, 2, 0); +for (var i = 1; i < JS.PointGroup.maxAxis; i++) for (var j = this.nAxes[i]; --j >= 0; ) nType[this.axes[i][j].type][0]++; + + +var sb = new JU.SB().append("# ").appendI(this.nAtoms).append(" atoms\n"); +var name = this.getConventionalName(this.name); +if (asDraw) { +drawID = "draw " + drawID; +var haveType = (type != null && type.length > 0); +this.drawType = type = (haveType ? type : ""); +this.drawIndex = index; +var anyProperAxis = (type.equalsIgnoreCase(this.getConventionalName("Cn"))); +var anyImproperAxis = (type.equalsIgnoreCase(this.getConventionalName("Sn"))); +sb.append("set perspectivedepth off;\n"); +var m = "_" + modelIndex + "_"; +if (!haveType) sb.append(drawID + "pg0").append(m).append("* delete;draw pgva").append(m).append("* delete;draw pgvp").append(m).append("* delete;"); +if (!haveType || type.equalsIgnoreCase("Ci")) sb.append(drawID + "pg0").append(m).append(this.haveInversionCenter ? "inv " : " ").append(JU.Escape.eP(this.center)).append(this.haveInversionCenter ? "\"i\";\n" : ";\n"); +var offset = 0.1; +for (var i = 2; i < JS.PointGroup.maxAxis; i++) { +if (i == 14) offset = 0.1; +if (this.nAxes[i] == 0) continue; +var sglabel = (!this.$isLinear ? this.axes[i][0].getLabel(false) : "C_infinity"); +var label = (!this.$isLinear ? this.axes[i][0].getLabel(true) : "C_infinity"); +offset += 0.25; +var scale = scaleFactor * 1.05 * this.radius + offset * 80 / this.sppa; +var isProper = (i >= 14); +if (!haveType || type.equalsIgnoreCase(label) || anyProperAxis && isProper || anyImproperAxis && !isProper) for (var j = 0; j < this.nAxes[i]; j++) { +if (index > 0 && j + 1 != index) continue; +op = this.axes[i][j]; +v.add2(op.normalOrAxis, this.center); +sb.append(drawID + "pgva").append(m).append(sglabel).append("_").appendI(j + 1).append(" width 0.05 scale ").appendF(op.type == 2 ? -scale : scale).append(" ").append(JU.Escape.eP(v)); +v.scaleAdd2(-2, op.normalOrAxis, v); +var isPA = (!this.$isLinear && this.principalAxis != null && op.index == this.principalAxis.index); +sb.append(JU.Escape.eP(v)).append("\"").append(label).append(isPA ? "" : "").append("\" color ").append(isPA ? "red" : op.type == 2 ? "blue" : "orange").append(";\n"); +} +} +if (!haveType || type.equalsIgnoreCase(this.getConventionalName("Cs"))) { +for (var j = 0; j < this.nAxes[0]; j++) { +if (index > 0 && j + 1 != index) continue; +op = this.axes[0][j]; +sb.append(drawID + "pgvp").append(m).appendI(j + 1).append("disk scale ").appendF(scaleFactor * this.radius * 2).append(" CIRCLE PLANE ").append(JU.Escape.eP(this.center)); +v.add2(op.normalOrAxis, this.center); +sb.append(JU.Escape.eP(v)).append(" color translucent yellow;\n"); +v.add2(op.normalOrAxis, this.center); +sb.append(drawID + "pgvp").append(m).appendI(j + 1).append("ring width 0.05 scale ").appendF(scaleFactor * this.radius * 2).append(" arc ").append(JU.Escape.eP(v)); +v.scaleAdd2(-2, op.normalOrAxis, v); +sb.append(JU.Escape.eP(v)); +v.add3(0.011, 0.012, 0.013); +sb.append(JU.Escape.eP(v)).append("{0 360 0.5} color ").append(this.principalPlane != null && op.index == this.principalPlane.index ? "red" : "blue").append(";\n"); +} +}sb.append("# name=").append(name); +sb.append(", n" + this.getConventionalName("Ci") + "=").appendI(this.haveInversionCenter ? 1 : 0); +sb.append(", n" + this.getConventionalName("Cs") + "=").appendI(this.nAxes[0]); +sb.append(", n" + this.getConventionalName("Cn") + "=").appendI(nType[1][0]); +sb.append(", n" + this.getConventionalName("Sn") + "=").appendI(nType[2][0]); +sb.append(": "); +for (var i = JS.PointGroup.maxAxis; --i >= 2; ) if (this.nAxes[i] > 0) { +var axisName = this.getConventionalName((i < 14 ? "S" : "C") + (i % 14)); +sb.append(" n").append(axisName); +sb.append("=").appendI(this.nAxes[i]); +} +sb.append(";\n"); +sb.append("print '" + name + "';\n"); +this.drawInfo = sb.toString(); +if (JU.Logger.debugging) JU.Logger.info(this.drawInfo); +return this.drawInfo; +}var n = 0; +var nTotal = 1; +var nElements = 0; +var ctype = (this.haveInversionCenter ? this.getConventionalName("Ci") : "center"); +if (this.haveInversionCenter) { +nTotal++; +nElements++; +}if (asInfo) { +if (this.center != null) { +this.info.put(ctype, this.center); +if (this.haveInversionCenter) this.info.put("center", this.center); +this.info.put(ctype, this.center); +}} else { +sb.append("\n\n").append(name).append("\t").append(ctype).append("\t").append(JU.Escape.eP(this.center)); +}for (var i = JS.PointGroup.maxAxis; --i >= 0; ) { +if (this.nAxes[i] > 0) { +n = JS.PointGroup.nUnique[i]; +var label = this.axes[i][0].getLabel(true); +var sglabel = this.axes[i][0].getLabel(false); +if (asInfo) this.info.put("n" + sglabel, Integer.$valueOf(this.nAxes[i])); + else sb.append("\n\n").append(name).append("\tn").append(label).append("\t").appendI(this.nAxes[i]).append("\t").appendI(n); +n *= this.nAxes[i]; +nTotal += n; +nElements += this.nAxes[i]; +nType[this.axes[i][0].type][1] += n; +var vinfo = (asInfo ? new JU.Lst() : null); +var minfo = (asInfo ? new JU.Lst() : null); +for (var j = 0; j < this.nAxes[i]; j++) { +var aop = this.axes[i][j]; +if (asInfo) { +vinfo.addLast(aop.normalOrAxis); +minfo.addLast(aop.getM3()); +} else { +sb.append("\n").append(name).append("\t").append(sglabel).append("_").appendI(j + 1).append("\t").appendO(aop.normalOrAxis); +}} +if (asInfo) { +this.info.put(sglabel, vinfo); +this.info.put(sglabel + "_m", minfo); +}}} +if (!asInfo) { +sb.append("\n"); +sb.append("\n").append(name).append("\ttype\tnElements\tnUnique"); +sb.append("\n").append(name).append("\t" + this.getConventionalName("E") + "\t 1\t 1"); +n = (this.haveInversionCenter ? 1 : 0); +sb.append("\n").append(name).append("\t" + this.getConventionalName("Ci") + "\t ").appendI(n).append("\t ").appendI(n); +sb.append("\n").append(name).append("\t" + this.getConventionalName("Cs") + "\t"); +JU.PT.rightJustify(sb, " ", this.nAxes[0] + "\t"); +JU.PT.rightJustify(sb, " ", this.nAxes[0] + "\n"); +sb.append(name).append("\t" + this.getConventionalName("Cn") + "\t"); +JU.PT.rightJustify(sb, " ", nType[1][0] + "\t"); +JU.PT.rightJustify(sb, " ", nType[1][1] + "\n"); +sb.append(name).append("\t" + this.getConventionalName("Sn") + "\t"); +JU.PT.rightJustify(sb, " ", nType[2][0] + "\t"); +JU.PT.rightJustify(sb, " ", nType[2][1] + "\n"); +sb.append(name).append("\t\tTOTAL\t"); +JU.PT.rightJustify(sb, " ", nTotal + "\n"); +return (this.textInfo = sb.toString()); +}this.info.put("name", this.name); +this.info.put("hmName", this.getHermannMauguinName()); +this.info.put("nAtoms", Integer.$valueOf(this.nAtoms)); +this.info.put("nTotal", Integer.$valueOf(nTotal)); +this.info.put("nElements", Integer.$valueOf(nElements)); +this.info.put("nCi", Integer.$valueOf(this.haveInversionCenter ? 1 : 0)); +if (this.haveInversionCenter) this.info.put("Ci_m", JU.M3.newM3(JS.PointGroup.mInv)); +this.info.put("nCs", Integer.$valueOf(this.nAxes[0])); +this.info.put("nCn", Integer.$valueOf(nType[1][0])); +this.info.put("nSn", Integer.$valueOf(nType[2][0])); +this.info.put("distanceTolerance", Float.$valueOf(this.distanceTolerance)); +this.info.put("linearTolerance", Float.$valueOf(this.linearTolerance)); +this.info.put("points", this.points); +this.info.put("detail", sb.toString().$replace('\n', ';')); +if (this.principalAxis != null && this.principalAxis.index > 0) this.info.put("principalAxis", this.principalAxis.normalOrAxis); +if (this.principalPlane != null && this.principalPlane.index > 0) this.info.put("principalPlane", this.principalPlane.normalOrAxis); +return this.info; +}, "~N,~S,~B,~S,~N,~N"); +Clazz.defineMethod(c$, "isDrawType", +function(type, index, scale){ +return (this.drawInfo != null && this.drawType.equals(type == null ? "" : type) && this.drawIndex == index && this.scale == scale); +}, "~S,~N,~N"); +c$.getHMfromSFName = Clazz.defineMethod(c$, "getHMfromSFName", +function(name){ +if (JS.PointGroup.htSFToHM == null) { +JS.PointGroup.htSFToHM = new java.util.Hashtable(); +var syms = JS.PointGroup.SF2HM; +JS.PointGroup.addNames("E", "1"); +JS.PointGroup.addNames("Ci", "-1"); +JS.PointGroup.addNames("Cn", "n"); +JS.PointGroup.addNames("Sn", "-n"); +for (var i = 0; i < syms.length; i++) { +var list = syms[i].$plit(","); +var sym = list[0]; +if (list.length == 2) { +JS.PointGroup.addNames(sym, list[1]); +continue; +}var type = sym.substring(0, 1); +var ext = sym.substring(2, sym.length); +for (var n = 1; n < 13; n++) { +var val = list[n]; +if (val.length > 0) { +JS.PointGroup.addNames(type + n + ext, val); +System.out.println(type + n + ext + "\t" + val); +}} +if (list.length == 14) { +JS.PointGroup.addNames(type + "\u221e" + ext, list[13]); +}} +}var hm = JS.PointGroup.htSFToHM.get(name); +return (hm == null ? name : hm); +}, "~S"); +c$.addNames = Clazz.defineMethod(c$, "addNames", +function(sch, hm){ +JS.PointGroup.htSFToHM.put(sch, hm); +JS.PointGroup.htSFToHM.put(hm, sch); +}, "~S,~S"); +c$.$PointGroup$Operation$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.type = 0; +this.order = 0; +this.index = 0; +this.normalOrAxis = null; +this.typeOrder = 0; +this.mat = null; +Clazz.instantialize(this, arguments);}, JS.PointGroup, "Operation", null); +Clazz.makeConstructor(c$, +function(){ +this.index = ++this.b$["JS.PointGroup"].nOps; +this.type = 3; +this.order = 1; +this.typeOrder = 1; +if (JU.Logger.debugging) JU.Logger.debug("new operation -- " + JS.PointGroup.typeNames[this.type]); +}); +Clazz.makeConstructor(c$, +function(v, i){ +this.index = ++this.b$["JS.PointGroup"].nOps; +this.type = (i < 14 ? 2 : 1); +this.typeOrder = i; +this.order = i % 14; +this.normalOrAxis = JU.Quat.newVA(v, 180).getNormal(); +if (JU.Logger.debugging) JU.Logger.debug("new operation -- " + (this.order == i ? "S" : "C") + this.order + " " + this.normalOrAxis); +}, "JU.V3,~N"); +Clazz.makeConstructor(c$, +function(v){ +if (v == null) return; +this.index = ++this.b$["JS.PointGroup"].nOps; +this.type = 0; +this.normalOrAxis = JU.Quat.newVA(v, 180).getNormal(); +if (JU.Logger.debugging) JU.Logger.debug("new operation -- plane " + this.normalOrAxis); +}, "JU.V3"); +Clazz.defineMethod(c$, "getLabel", +function(conventional){ +var s; +switch (this.type) { +case 0: +s = "Cs"; +break; +case 2: +s = "S" + this.order; +break; +default: +s = "C" + this.order; +break; +} +return (conventional ? this.b$["JS.PointGroup"].getConventionalName(s) : s); +}, "~B"); +Clazz.defineMethod(c$, "getM3", +function(){ +if (this.mat != null) return this.mat; +var m = JU.M3.newM3(JS.PointGroup.getQuaternion(this.normalOrAxis, this.typeOrder).getMatrix()); +if (this.type == 0 || this.type == 2) m.mul(JS.PointGroup.mInv); +this.cleanMatrix(m); +return this.mat = m; +}); +Clazz.defineMethod(c$, "cleanMatrix", +function(m){ +for (var i = 0; i < 3; i++) for (var j = 0; j < 3; j++) m.setElement(i, j, this.approx0(m.getElement(i, j))); + + +}, "JU.M3"); +Clazz.defineMethod(c$, "approx0", +function(v){ +return (v > 1e-15 || v < -1.0E-15 ? v : 0); +}, "~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.getLabel(false) + " " + this.normalOrAxis; +}); +/*eoif4*/})(); +}; +c$.axesMaxN = Clazz.newIntArray(-1, [15, 0, 0, 1, 3, 1, 10, 0, 1, 0, 6, 0, 1, 0, 0, 0, 15, 10, 6, 6, 10, 0, 1]); +c$.nUnique = Clazz.newIntArray(-1, [1, 0, 0, 2, 2, 4, 2, 0, 4, 0, 4, 0, 4, 0, 0, 0, 1, 2, 2, 4, 2, 0, 4]); +c$.maxAxis = JS.PointGroup.axesMaxN.length; +c$.typeNames = Clazz.newArray(-1, ["plane", "proper axis", "improper axis", "center of inversion"]); +c$.mInv = JU.M3.newA9( Clazz.newFloatArray(-1, [-1, 0, 0, 0, -1, 0, 0, 0, -1])); +c$.SF2HM = ("Cn,1,2,3,4,5,6,7,8,9,10,11,12|Cnv,m,2m,3m,4mm,5m,6mm,7m,8mm,9m,10mm,11m,12mm,\u221em|Sn,,-1,-6,-4,(-10),-3,(-14),-8,(-18),-5,(-22),(-12)|Cnh,m,2/m,-6,4/m,-10,6/m,-14,8/m,-18,10/m,-22,12/m|Dn,,222,32,422,52,622,72,822,92,(10)22,(11)2,(12)22|Dnd,,-42m,-3m,-82m,-5m,(-12)2m,-7m,(-16)2m,-9m,(-20)2m,(-11)m,(-24)2m|Dnh,,mmm,-6m2,4/mmm,(-10)m2,6/mmm,(-14)m2,8/mmm,(-18)m2,10/mmm,(-22)m2,12/mmm,\u221e/mm|Ci,-1|Cs,m|T,23|Th,m-3|Td,-43m|O,432|Oh,m-3m").$plit("\\|"); +c$.htSFToHM = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/PolyhedronStereoSorter.js b/config/plugins/visualizations/jmol/static/j2s/JS/PolyhedronStereoSorter.js new file mode 100755 index 000000000000..67f3b95d6869 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/PolyhedronStereoSorter.js @@ -0,0 +1,39 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.V3"], "JS.PolyhedronStereoSorter", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vTemp = null; +this.vRef = null; +this.align1 = null; +this.align2 = null; +Clazz.instantialize(this, arguments);}, JS, "PolyhedronStereoSorter", null, java.util.Comparator); +Clazz.prepareFields (c$, function(){ +this.vTemp = new JU.V3(); +this.align1 = new JU.V3(); +this.align2 = new JU.V3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "setRef", +function(vRef){ +this.vRef = vRef; +}, "JU.V3"); +Clazz.overrideMethod(c$, "compare", +function(a, b){ +var torA = (a[1]).floatValue(); +var torB = (b[1]).floatValue(); +if (Math.abs(torA - torB) < 1) { +torA = 0; +this.vTemp.sub2(b[2], a[2]); +torB = this.vRef.dot(this.vTemp); +}return (torA < torB ? -1 : torA > torB ? 1 : 0); +}, "~A,~A"); +Clazz.defineMethod(c$, "isAligned", +function(pt1, pt2, pt3){ +this.align1.sub2(pt1, pt2); +this.align2.sub2(pt2, pt3); +var angle = this.align1.angle(this.align2); +return (angle < 0.0); +}, "JU.T3,JU.T3,JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SV.js b/config/plugins/visualizations/jmol/static/j2s/JS/SV.js new file mode 100755 index 000000000000..60cab20a2e94 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SV.js @@ -0,0 +1,1456 @@ +Clazz.declarePackage("JS"); +Clazz.load(["javajs.api.JSONEncodable", "JS.T", "JU.P3"], "JS.SV", ["java.util.Arrays", "$.Collections", "$.Hashtable", "JU.AU", "$.BArray", "$.BS", "$.Base64", "$.Lst", "$.Measure", "$.PT", "$.SB", "JM.BondSet", "JU.BSUtil", "$.Escape", "JV.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.index = 2147483647; +this.myName = null; +if (!Clazz.isClassDefined("JS.SV.Sort")) { +JS.SV.$SV$Sort$ (); +} +Clazz.instantialize(this, arguments);}, JS, "SV", JS.T, javajs.api.JSONEncodable); +c$.newV = Clazz.defineMethod(c$, "newV", +function(tok, value){ +var sv = new JS.SV(); +sv.tok = tok; +sv.value = value; +return sv; +}, "~N,~O"); +c$.newI = Clazz.defineMethod(c$, "newI", +function(i){ +var sv = new JS.SV(); +sv.tok = 2; +sv.intValue = i; +return sv; +}, "~N"); +c$.newF = Clazz.defineMethod(c$, "newF", +function(f){ +if (f != f) return JS.SV.vNaN; +var sv = new JS.SV(); +sv.tok = 3; +sv.value = Float.$valueOf(f); +return sv; +}, "~N"); +c$.newS = Clazz.defineMethod(c$, "newS", +function(s){ +return JS.SV.newV(4, s); +}, "~S"); +c$.newT = Clazz.defineMethod(c$, "newT", +function(x){ +return JS.SV.newSV(x.tok, x.intValue, x.value); +}, "JS.T"); +c$.newSV = Clazz.defineMethod(c$, "newSV", +function(tok, intValue, value){ +var sv = JS.SV.newV(tok, value); +sv.intValue = intValue; +return sv; +}, "~N,~N,~O"); +Clazz.defineMethod(c$, "setv", +function(v){ +this.index = v.index; +this.intValue = v.intValue; +this.tok = v.tok; +this.value = v.value; +return this; +}, "JS.SV"); +c$.copySafely = Clazz.defineMethod(c$, "copySafely", +function(v){ +return (v.myName == null ? v : new JS.SV().setv(v)); +}, "JS.SV"); +c$.sizeOf = Clazz.defineMethod(c$, "sizeOf", +function(x){ +switch (x == null ? 0 : x.tok) { +case 10: +return JS.SV.bsSelectToken(x).cardinality(); +case 15: +return (x.value).data.length; +case 4: +return (x.value).length; +case 7: +return x.intValue == 2147483647 ? (x).getList().size() : JS.SV.sizeOf(JS.SV.selectItemTok(x, -2147483648)); +case 6: +return (x.value).size(); +case 14: +return (x.value).getFullMap().size(); +case 1073742335: +case 1073742334: +return -1; +case 2: +return -2; +case 3: +return -4; +case 8: +return -8; +case 9: +return -16; +case 11: +return -32; +case 12: +return -64; +default: +return 0; +} +}, "JS.T"); +c$.isVariableType = Clazz.defineMethod(c$, "isVariableType", +function(x){ +return (Clazz.instanceOf(x,"JS.SV") || Clazz.instanceOf(x, Boolean) || Clazz.instanceOf(x, Integer) || Clazz.instanceOf(x, Float) || (typeof(x)=='string') || Clazz.instanceOf(x,"JU.T3") || Clazz.instanceOf(x,"JU.BS") || Clazz.instanceOf(x,"JU.P4") || Clazz.instanceOf(x,"JU.Quat") || Clazz.instanceOf(x,"JU.M34") || Clazz.instanceOf(x,"java.util.Map") || Clazz.instanceOf(x,"JU.Lst") || Clazz.instanceOf(x,"JU.BArray") || Clazz.instanceOf(x,"JS.ScriptContext") || JS.SV.isArray(x)); +}, "~O"); +c$.isArray = Clazz.defineMethod(c$, "isArray", +function(x){ +{ +return Clazz.instanceOf(x, Array); +}}, "~O"); +c$.getVariable = Clazz.defineMethod(c$, "getVariable", +function(x){ +if (x == null) return JS.SV.newS(""); +if (Clazz.instanceOf(x,"JS.SV")) return x; +if (Clazz.instanceOf(x, Boolean)) return JS.SV.getBoolean((x).booleanValue()); +if (Clazz.instanceOf(x, Integer)) return JS.SV.newI((x).intValue()); +if (Clazz.instanceOf(x, Float)) return JS.SV.newV(3, x); +if ((typeof(x)=='string')) { +x = JS.SV.unescapePointOrBitsetAsVariable(x); +if (Clazz.instanceOf(x,"JS.SV")) return x; +return JS.SV.newV(4, x); +}if (Clazz.instanceOf(x,"JU.P3")) return JS.SV.newV(8, x); +if (Clazz.instanceOf(x,"JU.V3")) return JS.SV.newV(8, JU.P3.newP(x)); +if (Clazz.instanceOf(x,"JU.BS")) return JS.SV.newV(10, x); +if (Clazz.instanceOf(x,"JU.P4")) return JS.SV.newV(9, x); +if (Clazz.instanceOf(x,"JU.Quat")) return JS.SV.newV(9, (x).toPoint4f()); +if (Clazz.instanceOf(x,"JU.M34")) return JS.SV.newV(Clazz.instanceOf(x,"JU.M4") ? 12 : 11, x); +if (Clazz.instanceOf(x,"java.util.Map")) return JS.SV.getVariableMap(x); +if (Clazz.instanceOf(x,"JU.Lst")) return JS.SV.getVariableList(x); +if (Clazz.instanceOf(x,"JU.BArray")) return JS.SV.newV(15, x); +if (Clazz.instanceOf(x,"JS.ScriptContext")) return JS.SV.newV(14, x); +if (JS.SV.isASV(x)) return JS.SV.getVariableAV(x); +if (JU.AU.isAI(x)) return JS.SV.getVariableAI(x); +if (JU.AU.isAB(x)) return JS.SV.getVariableAB(x); +if (JU.AU.isAF(x)) return JS.SV.getVariableAF(x); +if (JU.AU.isAD(x)) return JS.SV.getVariableAD(x); +if (JU.AU.isAS(x)) return JS.SV.getVariableAS(x); +if (JU.AU.isAP(x)) return JS.SV.getVariableAP(x); +if (JU.AU.isAII(x)) return JS.SV.getVariableAII(x); +if (JU.AU.isAFF(x)) return JS.SV.getVariableAFF(x); +if (JU.AU.isASS(x)) return JS.SV.getVariableASS(x); +if (JU.AU.isADD(x)) return JS.SV.getVariableADD(x); +if (JU.AU.isAFloat(x)) return JS.SV.newV(13, x); +return JS.SV.newJSVar(x); +}, "~O"); +c$.isASV = Clazz.defineMethod(c$, "isASV", +function(x){ +if (!JV.Viewer.isSwingJS) { +{ +return x && x[0] && x[0].__CLASS_NAME__ == "JS.SV"; +}}return Clazz.instanceOf(x,Array); +}, "~O"); +c$.newJSVar = Clazz.defineMethod(c$, "newJSVar", +function(x){ +var itype; +var itest; +var inum; +var array; +var keys; +{ +switch(x.BYTES_PER_ELEMENT ? Array : x.constructor) { +case Boolean: +itype = 0; +itest = x; +break; +case Number: +itype = 1; +inum = x; +break; +case Array: +itype = 2; +array = x; +break; +case Object: +itype = 3; +array = x; +keys = Object.keys(x); +break; +} +}switch (itype) { +case 0: +return (itest ? JS.SV.vT : JS.SV.vF); +case 1: +return (inum > 2147483647 || inum != Math.floor(inum) ? JS.SV.newF(inum) : JS.SV.newI(Clazz.floatToInt(inum))); +case 2: +var v = new JU.Lst(); +for (var i = 0, n = array.length; i < n; i++) v.addLast(JS.SV.newJSVar(array[i])); + +return JS.SV.getVariableList(v); +case 3: +var map = new java.util.Hashtable(); +for (var i = keys.length; --i >= 0; ) { +var o = null; +{ +o = array[keys[i]]; +}map.put(keys[i], JS.SV.newJSVar(o)); +} +return JS.SV.getVariableMap(map); +} +return JS.SV.newS(x.toString()); +}, "~O"); +c$.getVariableMap = Clazz.defineMethod(c$, "getVariableMap", +function(x){ +var ht = x; +var o = null; +for (var oo, $oo = ht.values().iterator (); $oo.hasNext()&& ((oo = $oo.next ()) || true);) { +o = oo; +break; +} +if (!(Clazz.instanceOf(o,"JS.SV"))) { +var x2 = new java.util.Hashtable(); +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) x2.put(entry.getKey(), JS.SV.getVariable(entry.getValue())); + +x = x2; +}return JS.SV.newV(6, x); +}, "java.util.Map"); +c$.getVariableList = Clazz.defineMethod(c$, "getVariableList", +function(v){ +var len = v.size(); +if (len > 0 && Clazz.instanceOf(v.get(0),"JS.SV")) return JS.SV.newV(7, v); +var objects = new JU.Lst(); +for (var i = 0; i < len; i++) objects.addLast(JS.SV.getVariable(v.get(i))); + +return JS.SV.newV(7, objects); +}, "JU.Lst"); +c$.getVariableAV = Clazz.defineMethod(c$, "getVariableAV", +function(v){ +var objects = new JU.Lst(); +for (var i = 0; i < v.length; i++) objects.addLast(v[i]); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAD = Clazz.defineMethod(c$, "getVariableAD", +function(f){ +var objects = new JU.Lst(); +for (var i = 0; i < f.length; i++) objects.addLast(JS.SV.newV(3, Float.$valueOf(f[i]))); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAO = Clazz.defineMethod(c$, "getVariableAO", +function(o){ +var objects = new JU.Lst(); +for (var i = 0; i < o.length; i++) objects.addLast(JS.SV.getVariable(o[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAS = Clazz.defineMethod(c$, "getVariableAS", +function(s){ +var objects = new JU.Lst(); +for (var i = 0; i < s.length; i++) objects.addLast(JS.SV.newV(4, s[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAP = Clazz.defineMethod(c$, "getVariableAP", +function(p){ +var objects = new JU.Lst(); +for (var i = 0; i < p.length; i++) objects.addLast(JS.SV.newV(8, p[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAFF = Clazz.defineMethod(c$, "getVariableAFF", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAF(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableADD = Clazz.defineMethod(c$, "getVariableADD", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAD(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableASS = Clazz.defineMethod(c$, "getVariableASS", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAS(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAII = Clazz.defineMethod(c$, "getVariableAII", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.getVariableAI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAF = Clazz.defineMethod(c$, "getVariableAF", +function(f){ +var objects = new JU.Lst(); +for (var i = 0; i < f.length; i++) objects.addLast(JS.SV.newV(3, Float.$valueOf(f[i]))); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAI = Clazz.defineMethod(c$, "getVariableAI", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.newI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAB = Clazz.defineMethod(c$, "getVariableAB", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.newI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +Clazz.defineMethod(c$, "setName", +function(name){ +this.myName = name; +return this; +}, "~S"); +Clazz.defineMethod(c$, "canIncrement", +function(){ +switch (this.tok) { +case 2: +case 3: +return true; +default: +return false; +} +}); +Clazz.defineMethod(c$, "increment", +function(n){ +switch (this.tok) { +case 2: +this.intValue += n; +return true; +case 3: +this.value = Float.$valueOf((this.value).floatValue() + n); +return true; +default: +return false; +} +}, "~N"); +Clazz.defineMethod(c$, "asBoolean", +function(){ +return JS.SV.bValue(this); +}); +Clazz.defineMethod(c$, "asInt", +function(){ +return JS.SV.iValue(this); +}); +Clazz.defineMethod(c$, "asFloat", +function(){ +return JS.SV.fValue(this); +}); +Clazz.defineMethod(c$, "asString", +function(){ +return JS.SV.sValue(this); +}); +c$.oValue = Clazz.defineMethod(c$, "oValue", +function(xx){ +if (!(Clazz.instanceOf(xx,"JS.SV"))) return xx; +var x = xx; +switch (x.tok) { +case 1073742335: +return Boolean.TRUE; +case 0: +case 1073742334: +return Boolean.FALSE; +case 2: +return Integer.$valueOf(x.intValue); +case 10: +case 1275068418: +return JS.SV.selectItemVar(x).value; +default: +return x.value; +} +}, "~O"); +c$.nValue = Clazz.defineMethod(c$, "nValue", +function(x){ +var iValue; +switch (x == null ? 0 : x.tok) { +case 3: +return x.value; +case 2: +iValue = x.intValue; +break; +case 4: +if ((x.value).indexOf(".") >= 0) return Float.$valueOf(JS.SV.toFloat(x.value)); +iValue = Clazz.floatToInt(JS.SV.toFloat(x.value)); +break; +case 8: +return Float.$valueOf((x.value).length()); +default: +iValue = 0; +} +return Integer.$valueOf(iValue); +}, "JS.T"); +c$.bValue = Clazz.defineMethod(c$, "bValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +case 14: +return true; +case 1073742334: +return false; +case 2: +return x.intValue != 0; +case 3: +case 4: +case 7: +return JS.SV.fValue(x) != 0; +case 10: +case 15: +return JS.SV.iValue(x) != 0; +case 8: +case 9: +case 11: +case 12: +return Math.abs(JS.SV.fValue(x)) > 0.0001; +case 6: +return !(x).getMap().isEmpty(); +default: +return false; +} +}, "JS.T"); +c$.iValue = Clazz.defineMethod(c$, "iValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +return 1; +case 1073742334: +return 0; +case 2: +return x.intValue; +case 3: +case 7: +case 4: +case 8: +case 9: +case 11: +case 12: +case 134221850: +return Clazz.floatToInt(JS.SV.fValue(x)); +case 10: +return JS.SV.bsSelectToken(x).cardinality(); +case 15: +return (x.value).data.length; +default: +return 0; +} +}, "JS.T"); +c$.fValue = Clazz.defineMethod(c$, "fValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +return 1; +case 1073742334: +return 0; +case 2: +return x.intValue; +case 3: +return (x.value).floatValue(); +case 7: +var i = x.intValue; +if (i == 2147483647) return (x).getList().size(); +case 4: +return JS.SV.toFloat(JS.SV.sValue(x)); +case 10: +case 15: +return JS.SV.iValue(x); +case 8: +return (x.value).length(); +case 9: +return JU.Measure.distanceToPlane(x.value, JS.SV.pt0); +case 11: +var pt = new JU.P3(); +(x.value).rotate(pt); +return pt.length(); +case 12: +var pt1 = new JU.P3(); +(x.value).rotTrans(pt1); +return pt1.length(); +default: +return 0; +} +}, "JS.T"); +c$.sValue = Clazz.defineMethod(c$, "sValue", +function(x){ +if (x == null) return ""; +var i; +var sb; +switch (x.tok) { +case 1073742335: +return "true"; +case 1073742334: +return "false"; +case 2: +return "" + x.intValue; +case 10: +var bs = JS.SV.bsSelectToken(x); +return (Clazz.instanceOf(x.value,"JM.BondSet") ? JU.Escape.eBond(bs) : JU.Escape.eBS(bs)); +case 7: +var sv = (x).getList(); +i = x.intValue; +if (i <= 0) i = sv.size() - i; +if (i != 2147483647) return (i < 1 || i > sv.size() ? "" : JS.SV.sValue(sv.get(i - 1))); +case 6: +case 14: +if ((typeof(x.value)=='string')) return x.value; +sb = new JU.SB(); +JS.SV.sValueArray(sb, x, "", "", false, true, true, 2147483647, false); +return JU.PT.rep(sb.toString(), "\n\0", " "); +case 4: +var s = x.value; +i = x.intValue; +if (i <= 0) i = s.length - i; +if (i == 2147483647) return s; +if (i < 1 || i > s.length) return ""; +return "" + s.charAt(i - 1); +case 8: +return JU.Escape.eP(x.value); +case 9: +return JU.Escape.eP4(x.value); +case 11: +case 12: +return JU.Escape.e(x.value); +default: +return x.value.toString(); +} +}, "JS.T"); +c$.sValueArray = Clazz.defineMethod(c$, "sValueArray", +function(sb, vx, path, tabs, isEscaped, isRaw, addValues, maxLevels, skipEmpty){ +switch (vx.tok) { +case 6: +case 14: +case 7: +var thiskey = ";" + vx.hashCode() + ";"; +if (path.indexOf(thiskey) >= 0) { +sb.append(isEscaped ? (vx.tok == 7 ? "[ ]" : "{ }") : (vx.tok == 7 ? "" : "\0") + "\"<" + (vx.myName == null ? "circular reference" : vx.myName) + ">\""); +break; +}path += thiskey; +if (vx.tok == 7) { +if (!addValues) return; +if (!isRaw) sb.append(isEscaped ? "[ " : tabs + "[\n"); +var sx = vx.getList(); +for (var i = 0; i < sx.size(); i++) { +if (isEscaped && i > 0) sb.append(","); +var sv = sx.get(i); +JS.SV.sValueArray(sb, sv, path, tabs + " ", isEscaped, tabs.length == 0 && !isEscaped && JS.SV.isRawType(sv.tok), addValues, maxLevels, skipEmpty); +if (!isEscaped) sb.append("\n"); +} +if (!isRaw) sb.append(isEscaped ? " ]" : tabs + "]"); +} else if (--maxLevels >= 0) { +var ht = (vx.tok == 14 ? (vx.value).getFullMap() : vx.getMap()); +JS.SV.sValueAddKeys(sb, path, ht, tabs, isEscaped, addValues, maxLevels, skipEmpty); +}break; +default: +if (!addValues) return; +if (!isRaw && !isEscaped) sb.append(tabs); +sb.append(isEscaped ? vx.escape() : JS.SV.sValue(vx)); +} +}, "JU.SB,JS.SV,~S,~S,~B,~B,~B,~N,~B"); +c$.sValueAddKeys = Clazz.defineMethod(c$, "sValueAddKeys", +function(sb, path, ht, tabs, isEscaped, addValues, maxLevels, skipEmpty){ +if (maxLevels < 0) return; +var keyset = ht.keySet(); +var keys = ht.keySet().toArray( new Array(keyset.size())); +java.util.Arrays.sort(keys); +if (isEscaped) { +sb.append("{ "); +var sep = ""; +for (var i = 0; i < keys.length; i++) { +var key = keys[i]; +var val = ht.get(key); +if (skipEmpty && (val.tok == 7 && val.getList().size() == 0 || val.tok == 6 && val.getMap().isEmpty())) continue; +if (addValues) sb.append(sep).append(JU.PT.esc(key)).append(":"); + else sb.appendC(' ').append(key); +JS.SV.sValueArray(sb, val, path, tabs + " ", true, false, addValues, maxLevels, skipEmpty); +sep = ","; +} +sb.append(" }"); +if (!addValues) sb.append("\n"); +return; +}sb.append(tabs).append("{\n"); +tabs += " "; +for (var i = 0; i < keys.length; i++) { +sb.append(tabs); +var key = keys[i]; +sb.append(JU.PT.esc(key)).append(" :"); +var sb2 = new JU.SB(); +if (!(Clazz.instanceOf(ht.get(key),"JS.SV"))) ht.put(key, JS.SV.getVariable(ht.get(key))); +var v = ht.get(key); +isEscaped = JS.SV.isRawType(v.tok); +JS.SV.sValueArray(sb2, v, path, tabs, isEscaped, false, addValues, maxLevels, skipEmpty); +var value = sb2.toString(); +if (isEscaped && addValues) sb.append(" "); + else sb.append("\n"); +sb.append(value).append("\n"); +} +sb.append(tabs.substring(1)).append("}"); +}, "JU.SB,~S,java.util.Map,~S,~B,~B,~N,~B"); +c$.isRawType = Clazz.defineMethod(c$, "isRawType", +function(tok){ +switch (tok) { +case 4: +case 3: +case 2: +case 8: +case 9: +case 10: +case 15: +case 1073742335: +case 1073742334: +return true; +} +return false; +}, "~N"); +c$.ptValue = Clazz.defineMethod(c$, "ptValue", +function(x){ +switch (x.tok) { +case 8: +return x.value; +case 4: +var o = JU.Escape.uP(x.value); +if (Clazz.instanceOf(o,"JU.P3")) return o; +} +return null; +}, "JS.SV"); +c$.pt4Value = Clazz.defineMethod(c$, "pt4Value", +function(x){ +switch (x.tok) { +case 9: +return x.value; +case 4: +var o = JU.Escape.uP(x.value); +if (!(Clazz.instanceOf(o,"JU.P4"))) break; +return o; +} +return null; +}, "JS.SV"); +c$.toFloat = Clazz.defineMethod(c$, "toFloat", +function(s){ +return (s.equalsIgnoreCase("true") ? 1 : s.length == 0 || s.equalsIgnoreCase("false") ? 0 : JU.PT.parseFloatStrict(JU.PT.trim(s, " \t\n"))); +}, "~S"); +c$.concatList = Clazz.defineMethod(c$, "concatList", +function(x1, x2, asNew){ +var v1 = x1.getList(); +var v2 = x2.getList(); +if (!asNew) { +if (v2 == null) v1.addLast(JS.SV.newT(x2)); + else for (var i = 0; i < v2.size(); i++) v1.addLast(v2.get(i)); + +return x1; +}var vlist = new JU.Lst(); +if (v1 == null) vlist.addLast(x1); + else for (var i = 0; i < v1.size(); i++) vlist.addLast(v1.get(i)); + +if (v2 == null) vlist.addLast(x2); + else for (var i = 0; i < v2.size(); i++) vlist.addLast(v2.get(i)); + +return JS.SV.getVariableList(vlist); +}, "JS.SV,JS.SV,~B"); +c$.bsSelectToken = Clazz.defineMethod(c$, "bsSelectToken", +function(x){ +return JS.SV.selectItemTok(x, -2147483648).value; +}, "JS.T"); +c$.bsSelectRange = Clazz.defineMethod(c$, "bsSelectRange", +function(x, n){ +x = JS.SV.selectItemTok(x, -2147483648); +x = JS.SV.selectItemTok(x, (n <= 0 ? n : 1)); +x = JS.SV.selectItemTok(x, (n <= 0 ? 2147483646 : n)); +return x.value; +}, "JS.T,~N"); +c$.selectItemVar = Clazz.defineMethod(c$, "selectItemVar", +function($var){ +return ($var.index != 2147483647 || ($var.tok == 7 || $var.tok == 15) && $var.intValue == 2147483647 ? $var : JS.SV.selectItemTok($var, -2147483648)); +}, "JS.SV"); +c$.selectItemTok = Clazz.defineMethod(c$, "selectItemTok", +function(tokenIn, i2){ +switch (tokenIn.tok) { +case 11: +case 12: +case 10: +case 7: +case 15: +case 4: +break; +default: +return ((Clazz.instanceOf(tokenIn,"JS.SV")) && (tokenIn).myName != null ? JS.SV.copySafely(tokenIn) : tokenIn); +} +var bs = null; +var s = null; +var i1 = tokenIn.intValue; +var isOne = (i2 == -2147483648); +if (i1 == 2147483647) { +return (isOne && tokenIn.tok == 4 ? tokenIn : JS.SV.newSV(tokenIn.tok, (isOne ? i1 : i2), tokenIn.value)); +}var len = 0; +var isInputSelected = (Clazz.instanceOf(tokenIn,"JS.SV") && (tokenIn).index != 2147483647); +var tokenOut = JS.SV.newSV(tokenIn.tok, 2147483647, null); +switch (tokenIn.tok) { +case 10: +if (Clazz.instanceOf(tokenIn.value,"JM.BondSet")) { +bs = JM.BondSet.newBS(tokenIn.value); +len = bs.cardinality(); +} else { +bs = JU.BSUtil.copy(tokenIn.value); +len = (isInputSelected ? 1 : bs.cardinality()); +}break; +case 15: +len = (((tokenIn).value)).data.length; +break; +case 7: +len = (tokenIn).getList().size(); +break; +case 4: +s = tokenIn.value; +len = s.length; +break; +case 11: +len = -3; +break; +case 12: +len = -4; +break; +} +if (len < 0) { +len = -len; +if (i1 > 0 && Math.abs(i1) > len) { +var col = i1 % 10; +var row = Clazz.doubleToInt((i1 - col) / 10); +if (col > 0 && col <= len && row <= len) { +if (tokenIn.tok == 11) return JS.SV.newV(3, Float.$valueOf((tokenIn.value).getElement(row - 1, col - 1))); +return JS.SV.newV(3, Float.$valueOf((tokenIn.value).getElement(row - 1, col - 1))); +}return JS.SV.newV(4, ""); +}if (Math.abs(i1) > len) return JS.SV.newV(4, ""); +var data = Clazz.newFloatArray (len, 0); +if (len == 3) { +if (i1 < 0) (tokenIn.value).getColumn(-1 - i1, data); + else (tokenIn.value).getRow(i1 - 1, data); +} else { +if (i1 < 0) (tokenIn.value).getColumn(-1 - i1, data); + else (tokenIn.value).getRow(i1 - 1, data); +}if (isOne) return JS.SV.getVariableAF(data); +if (i2 < 1 || i2 > len) return JS.SV.newV(4, ""); +return JS.SV.newV(3, Float.$valueOf(data[i2 - 1])); +}if (i1 <= 0) i1 = len + i1; +if (!isOne) { +if (i1 < 1) i1 = 1; +if (i2 == 0) i2 = len; + else if (i2 < 0) i2 = len + i2; +if (i2 < i1) i2 = i1; +}switch (tokenIn.tok) { +case 10: +tokenOut.value = bs; +if (isInputSelected) { +if (i1 > 1) bs.clearAll(); +break; +}if (isOne) { +if (i1 == len) { +i2 = bs.length() - 1; +} else if (i1 == 1) { +i2 = bs.nextSetBit(0); +}if (i2 >= -1) { +bs.clearAll(); +if (i2 >= 0) bs.set(i2); +break; +}i2 = i1; +}var n = 0; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) if (++n < i1 || n > i2) bs.clear(j); + +break; +case 4: +tokenOut.value = (--i1 < 0 || i1 >= len ? "" : isOne ? s.substring(i1, i1 + 1) : s.substring(i1, Math.min(i2, len))); +break; +case 7: +if (--i1 < 0 || i1 >= len) return JS.SV.newV(4, ""); +if (isOne) return (tokenIn).getList().get(i1); +var o2 = new JU.Lst(); +var o1 = (tokenIn).getList(); +var nn = Math.min(i2, len) - i1; +for (var i = 0; i < nn; i++) o2.addLast(JS.SV.newT(o1.get(i + i1))); + +tokenOut.value = o2; +break; +case 15: +if (--i1 < 0 || i1 >= len) return JS.SV.newV(4, ""); +var data = (((tokenIn).value)).data; +if (isOne) return JS.SV.newI(data[i1]); +var b = Clazz.newByteArray (Math.min(i2, len) - i1, 0); +for (var i = b.length; --i >= 0; ) b[i] = data[i1 + i]; + +tokenOut.value = new JU.BArray(b); +break; +} +return tokenOut; +}, "JS.T,~N"); +Clazz.defineMethod(c$, "setSelectedValue", +function(pt1, pt2, $var){ +if (pt1 == 2147483647) return; +var len; +switch (this.tok) { +case 11: +case 12: +len = (this.tok == 11 ? 3 : 4); +if (pt2 != 2147483647) { +var col = pt2; +var row = pt1; +if (col > 0 && col <= len && row <= len) { +if (this.tok == 11) (this.value).setElement(row - 1, col - 1, JS.SV.fValue($var)); + else (this.value).setElement(row - 1, col - 1, JS.SV.fValue($var)); +return; +}}if (pt1 != 0 && Math.abs(pt1) <= len && (this.tok == 11 && $var.tok == 8 || this.tok == 12 && $var.tok == 9 || $var.tok == 7)) { +var data; +switch ($var.tok) { +default: +case 7: +var sv = $var.getList(); +if (sv.size() != len) return; +data = Clazz.newFloatArray (len, 0); +for (var i = 0; i < len; i++) data[i] = JS.SV.fValue(sv.get(i)); + +break; +case 8: +var p = $var.value; +data = Clazz.newFloatArray(-1, [p.x, p.y, p.z]); +break; +case 9: +var p4 = $var.value; +data = Clazz.newFloatArray(-1, [p4.x, p4.y, p4.z, p4.w]); +break; +} +if (pt1 > 0) { +if (this.tok == 11) (this.value).setRowA(pt1 - 1, data); + else (this.value).setRowA(pt1 - 1, data); +} else { +if (this.tok == 11) (this.value).setColumnA(-1 - pt1, data); + else (this.value).setColumnA(-1 - pt1, data); +}break; +}break; +case 4: +var str = this.value; +var pt = str.length; +if (pt1 <= 0) pt1 = pt + pt1; +if (--pt1 < 0) pt1 = 0; +while (pt1 >= str.length) str += " "; + +if (pt2 == 2147483647) { +pt2 = pt1; +} else { +if (--pt2 < 0) pt2 = pt + pt2; +while (pt2 >= str.length) str += " "; + +}if (pt2 >= pt1) this.value = str.substring(0, pt1) + JS.SV.sValue($var) + str.substring(++pt2); +this.intValue = this.index = 2147483647; +break; +case 7: +var v = this.value; +len = v.size(); +if (pt1 <= 0) pt1 = len + pt1; +if (--pt1 < 0) pt1 = 0; +if (len <= pt1) for (var i = len; i <= pt1; i++) v.addLast(JS.SV.newV(4, "")); + +v.set(pt1, $var); +break; +} +}, "~N,~N,JS.SV"); +Clazz.defineMethod(c$, "escape", +function(){ +switch (this.tok) { +case 4: +return JU.PT.esc(this.value); +case 11: +case 12: +return JU.PT.toJSON(null, this.value); +case 7: +case 6: +case 14: +var sb = new JU.SB(); +JS.SV.sValueArray(sb, this, "", "", true, false, true, 2147483647, false); +return sb.toString(); +default: +return JS.SV.sValue(this); +} +}); +c$.unescapePointOrBitsetAsVariable = Clazz.defineMethod(c$, "unescapePointOrBitsetAsVariable", +function(o){ +if (o == null) return o; +var v = null; +var s = null; +if (Clazz.instanceOf(o,"JS.SV")) { +var sv = o; +switch (sv.tok) { +case 8: +case 9: +case 11: +case 12: +case 10: +v = sv.value; +break; +case 4: +s = sv.value; +break; +default: +s = JS.SV.sValue(sv); +break; +} +} else if ((typeof(o)=='string')) { +s = o; +}if (s != null && s.length == 0) return s; +if (v == null) v = JU.Escape.uABsM(s); +if (Clazz.instanceOf(v,"JU.P3")) return (JS.SV.newV(8, v)); +if (Clazz.instanceOf(v,"JU.P4")) return JS.SV.newV(9, v); +if (Clazz.instanceOf(v,"JU.BS")) { +if (s != null && s.indexOf("[{") == 0) v = JM.BondSet.newBS(v); +return JS.SV.newV(10, v); +}if (Clazz.instanceOf(v,"JU.M34")) return (JS.SV.newV(Clazz.instanceOf(v,"JU.M3") ? 11 : 12, v)); +return o; +}, "~O"); +c$.getBoolean = Clazz.defineMethod(c$, "getBoolean", +function(value){ +return JS.SV.newT(value ? JS.SV.vT : JS.SV.vF); +}, "~B"); +c$.sprintf = Clazz.defineMethod(c$, "sprintf", +function(strFormat, $var){ +if ($var == null) return strFormat; +var isArray = ($var.tok == 7); +var vd = (strFormat.indexOf("d") >= 0 || strFormat.indexOf("i") >= 0 ? Clazz.newIntArray (1, 0) : null); +var vf = (strFormat.indexOf("f") >= 0 ? Clazz.newFloatArray (1, 0) : null); +var ve = (strFormat.indexOf("e") >= 0 ? Clazz.newDoubleArray (1, 0) : null); +var getS = (strFormat.indexOf("s") >= 0); +var getP = (strFormat.indexOf("p") >= 0 && (isArray || $var.tok == 8)); +var getQ = (strFormat.indexOf("q") >= 0 && (isArray || $var.tok == 9)); +var of = Clazz.newArray(-1, [vd, vf, ve, null, null, null]); +if (!isArray) return JS.SV.sprintf(strFormat, $var, of, vd, vf, ve, getS, getP, getQ); +var sv = $var.getList(); +var list2 = new Array(sv.size()); +for (var i = 0; i < list2.length; i++) list2[i] = JS.SV.sprintf(strFormat, sv.get(i), of, vd, vf, ve, getS, getP, getQ); + +return list2; +}, "~S,JS.SV"); +c$.sprintf = Clazz.defineMethod(c$, "sprintf", +function(strFormat, $var, of, vd, vf, ve, getS, getP, getQ){ +if ($var.tok == 6) { +var pt = strFormat.indexOf("["); +if (pt >= 0) { +var pt1; +$var = $var.getMap().get(strFormat.substring(pt + 1, pt1 = strFormat.indexOf("]"))); +strFormat = strFormat.substring(0, pt) + strFormat.substring(pt1 + 1); +}}if (vd != null) vd[0] = JS.SV.iValue($var); +if (vf != null) vf[0] = JS.SV.fValue($var); +if (ve != null) ve[0] = JS.SV.fValue($var); +if (getS) of[3] = JS.SV.sValue($var); +if (getP) of[4] = $var.value; +if (getQ) of[5] = $var.value; +return JU.PT.sprintf(strFormat, "IFDspq", of); +}, "~S,JS.SV,~A,~A,~A,~A,~B,~B,~B"); +c$.getFormatType = Clazz.defineMethod(c$, "getFormatType", +function(format){ +return (format.indexOf(";") >= 0 ? -1 : ";json;base64;bytearray;array;".indexOf(";" + format.toLowerCase() + ";")); +}, "~S"); +c$.format = Clazz.defineMethod(c$, "format", +function(args, pt){ +switch (args.length) { +case 0: +return ""; +case 1: +return JS.SV.sValue(args[0]); +case 2: +if (pt == 2147483647) pt = JS.SV.getFormatType(args[0].asString()); +switch (pt) { +case 0: +var name = args[1].myName; +args[1].myName = null; +var o = args[1].toJSON(); +args[1].myName = name; +return o; +case 5: +case 12: +case 22: +var bytes; +switch (args[1].tok) { +case 15: +bytes = JU.AU.arrayCopyByte((args[1].value).data, -1); +break; +case 7: +var l = args[1].getList(); +if (pt == 22) { +var l1 = new JU.Lst(); +for (var i = l.size(); --i >= 0; ) l1.addLast(l.get(i)); + +return l1; +}bytes = Clazz.newByteArray (l.size(), 0); +for (var i = bytes.length; --i >= 0; ) bytes[i] = l.get(i).asInt(); + +break; +default: +var s = args[1].asString(); +if (s.startsWith(";base64,")) { +if (pt == 5) return s; +bytes = JU.Base64.decodeBase64(s); +} else { +bytes = s.getBytes(); +}} +return (pt == 22 ? JS.SV.getVariable(bytes) : pt == 12 ? new JU.BArray(bytes) : ";base64," + JU.Base64.getBase64(bytes).toString()); +} +} +var format = JU.PT.split(JU.PT.rep(JS.SV.sValue(args[0]), "%%", "\1"), "%"); +if (format.length == 0) return ""; +var sb = new JU.SB(); +sb.append(format[0]); +for (var i = 1; i < format.length; i++) { +var ret = JS.SV.sprintf(JU.PT.formatCheck("%" + format[i]), (args[1].tok == 6 ? args[1] : args[1].tok == 7 ? args[1].getList().get(i - 1) : i < args.length ? args[i] : null)); +if (JU.AU.isAS(ret)) { +var list = ret; +for (var j = 0; j < list.length; j++) sb.append(list[j]).append("\n"); + +continue; +}sb.append(ret); +} +return sb.toString(); +}, "~A,~N"); +c$.getBitSet = Clazz.defineMethod(c$, "getBitSet", +function(x, allowNull){ +switch (x.tok) { +case 10: +return (x.index == 2147483647 ? JS.SV.selectItemTok(x, -2147483648) : x).value; +case 7: +return JS.SV.unEscapeBitSetArray(x.getList(), allowNull); +default: +return (allowNull ? null : new JU.BS()); +} +}, "JS.SV,~B"); +c$.unEscapeBitSetArray = Clazz.defineMethod(c$, "unEscapeBitSetArray", +function(x, allowNull){ +var bs = new JU.BS(); +for (var i = 0; i < x.size(); i++) { +var v = x.get(i); +if (v.tok == 2 && v.intValue >= 0) { +bs.set(v.intValue); +} else if (v.tok == 7) { +var bs2 = JS.SV.unEscapeBitSetArray(v.getList(), true); +if (bs2 == null) return (allowNull ? null : new JU.BS()); +bs.or(bs2); +} else if (!JS.SV.unEscapeBitSet(v, bs)) { +return (allowNull ? null : new JU.BS()); +}} +return bs; +}, "JU.Lst,~B"); +c$.areEqual = Clazz.defineMethod(c$, "areEqual", +function(x1, x2){ +if (x1 == null || x2 == null) return false; +if (x1.value != null && x1.value === x2.value) return true; +if (x1.tok == x2.tok) { +switch (x1.tok) { +case 2: +if (x2.tok == 2) { +return x1.intValue == x2.intValue; +}break; +case 4: +return (x1.value).equalsIgnoreCase(x2.value); +case 10: +case 15: +case 6: +case 7: +case 14: +return x1.equals(x2); +case 8: +return ((x1.value).distance(x2.value) < 0.000001); +case 9: +return ((x1.value).distance4(x2.value) < 0.000001); +case 11: +return (x1.value).equals(x2.value); +case 12: +return (x1.value).equals(x2.value); +} +}return (x1.isNaN() ? x2.isNaN() : Math.abs(JS.SV.fValue(x1) - JS.SV.fValue(x2)) < 0.000001); +}, "JS.SV,JS.SV"); +c$.isLike = Clazz.defineMethod(c$, "isLike", +function(x1, x2){ +return (x1 != null && x2 != null && x1.tok == 4 && x2.tok == 4 && JU.PT.isLike(x1.value, x2.value)); +}, "JS.SV,JS.SV"); +Clazz.defineMethod(c$, "sortOrReverse", +function(arrayPt){ +var x = this.getList(); +if (x != null && x.size() > 1) { +if (arrayPt == -2147483648) { +var n = x.size(); +for (var i = 0; i < n; i++) { +var v = x.get(i); +x.set(i, x.get(--n)); +x.set(n, v); +} +} else { +java.util.Collections.sort(this.getList(), Clazz.innerTypeInstance(JS.SV.Sort, this, null, --arrayPt, null)); +}}return this; +}, "~N"); +Clazz.defineMethod(c$, "pushPop", +function(mapKey, value){ +if (mapKey == null) { +if (this.tok == 4) { +if (value == null) { +var v = this.value; +var n = v.length - 1; +if (n < 0) { +return JS.SV.newS(""); +}var s = v.substring(n); +this.value = v.substring(0, n); +return JS.SV.newS(s); +}this.value = this.value + JS.SV.sValue(value); +return this; +}var m = this.getMap(); +if (m == null) { +var x = this.getList(); +if (value == null || x == null) { +return (x == null || x.size() == 0 ? JS.SV.newS("") : x.removeItemAt(x.size() - 1)); +}x.addLast(JS.SV.copySafely(value)); +} else { +if (value == null) { +m.clear(); +} else { +var m1 = value.getMap(); +if (m1 != null) m.putAll(m1); +}}} else { +var m = this.getMap(); +if (value == null) { +var v = null; +if (m == null) { +var lst = this.getList(); +var len = lst.size(); +var i = JS.SV.iValue(mapKey) - 1; +if (i < 0) i += len; +if (i >= 0 && i < len) { +v = lst.removeItemAt(i); +}} else { +v = m.remove(mapKey.asString()); +}return (v == null ? JS.SV.newS("") : v); +}if (m != null) { +m.put(mapKey.asString(), JS.SV.copySafely(value)); +}}return this; +}, "JS.SV,JS.SV"); +c$.unEscapeBitSet = Clazz.defineMethod(c$, "unEscapeBitSet", +function(x, bs){ +switch (x.tok) { +case 4: +var bs1 = JU.BS.unescape(x.value); +if (bs1 == null) return false; +bs.or(bs1); +return true; +case 10: +bs.or(x.value); +return true; +} +return false; +}, "JS.SV,JU.BS"); +c$.strListValue = Clazz.defineMethod(c$, "strListValue", +function(x){ +if (x.tok != 7) return Clazz.newArray(-1, [JS.SV.sValue(x)]); +var sv = (x).getList(); +var list = new Array(sv.size()); +for (var i = sv.size(); --i >= 0; ) list[i] = JS.SV.sValue(sv.get(i)); + +return list; +}, "JS.T"); +c$.getArrayDepth = Clazz.defineMethod(c$, "getArrayDepth", +function(x){ +var n = 0; +var sv; +while (x.tok == 7 && (sv = (x).getList()).size() > 0) { +n++; +x = sv.get(0); +} +return n; +}, "JS.T"); +c$.fflistValue = Clazz.defineMethod(c$, "fflistValue", +function(x, nMin){ +if (x.tok != 7) { +return Clazz.newArray(-1, [ Clazz.newFloatArray(-1, [JS.SV.fValue(x)])]); +}var sv = (x).getList(); +var svlen = sv.size(); +var list; +list = JU.AU.newFloat2(svlen); +if (nMin == 0) nMin = list.length; +for (var i = list.length; --i >= 0; ) list[i] = JS.SV.flistValue(i >= svlen ? null : sv.get(i), 0); + +return list; +}, "JS.T,~N"); +c$.flistValue = Clazz.defineMethod(c$, "flistValue", +function(x, nMin){ +if (x == null || x.tok != 7) return Clazz.newFloatArray(-1, [JS.SV.fValue(x)]); +var sv = (x).getList(); +var list; +list = Clazz.newFloatArray (Math.max(nMin, sv.size()), 0); +if (nMin == 0) nMin = list.length; +for (var i = Math.min(sv.size(), nMin); --i >= 0; ) list[i] = JS.SV.fValue(sv.get(i)); + +return list; +}, "JS.T,~N"); +Clazz.defineMethod(c$, "toArray", +function(){ +var dim; +var o2; +var m3 = null; +var m4 = null; +switch (this.tok) { +case 11: +m3 = this.value; +dim = 3; +break; +case 12: +m4 = this.value; +dim = 4; +break; +case 7: +return this; +case 1275068418: +return this.arrayToList( new JS.SV()); +default: +o2 = new JU.Lst(); +o2.addLast(this); +return JS.SV.newV(7, o2); +} +o2 = new JU.Lst(); +for (var i = 0; i < dim; i++) { +var a = Clazz.newFloatArray (dim, 0); +if (m3 == null) m4.getRow(i, a); + else m3.getRow(i, a); +o2.addLast(JS.SV.getVariableAF(a)); +} +return JS.SV.newV(7, o2); +}); +Clazz.defineMethod(c$, "arrayToList", +function(target){ +if (this.tok != 1275068418 || target == null) return null; +var ao = this.value; +var v = new JU.Lst(); +for (var i = 0, n = ao.length; i < n; i++) { +v.addLast(JS.SV.getVariable(ao[i])); +} +target.tok = 7; +target.value = v; +return target; +}, "JS.SV"); +Clazz.defineMethod(c$, "mapValue", +function(key){ +switch (this.tok) { +case 6: +return (this.value).get(key); +case 14: +var sc = (this.value); +return (key.equals("_path") ? JS.SV.newS(sc.contextPath) : sc.getVariable(key)); +} +return null; +}, "~S"); +Clazz.defineMethod(c$, "getList", +function(){ +switch (this.tok) { +case 7: +return this.value; +case 1275068418: +this.tok = 7; +this.value = this.toArray().value; +return this.value; +default: +return null; +} +}); +c$.isScalar = Clazz.defineMethod(c$, "isScalar", +function(x){ +switch (x.tok) { +case 7: +return false; +case 4: +return ((x.value).indexOf("\n") < 0); +default: +return true; +} +}, "JS.SV"); +Clazz.overrideMethod(c$, "toJSON", +function(){ +switch (this.tok) { +case 1073742335: +case 1073742334: +case 2: +case 3: +return JS.SV.sValue(this); +case 15: +return JU.PT.byteArrayToJSON((this.value).data); +case 14: +return JU.PT.toJSON(null, (this.value).getFullMap()); +case 7: +case 6: +if (this.myName != null) { +this.myName = null; +return (this.tok == 6 ? "{ }" : "[ ]"); +}this.myName = "x"; +var s = JU.PT.toJSON(null, this.value); +this.myName = null; +return s; +default: +return JU.PT.toJSON(null, this.value); +} +}); +Clazz.defineMethod(c$, "mapGet", +function(key){ +return this.getMap().get(key); +}, "~S"); +Clazz.defineMethod(c$, "mapPut", +function(key, v){ +switch (this.tok) { +case 6: +case 14: +this.getMap().put(key, JS.SV.copySafely(v).setName(key)); +break; +} +}, "~S,JS.SV"); +Clazz.defineMethod(c$, "getMap", +function(){ +switch (this.tok) { +case 6: +return this.value; +case 14: +return (this.value).vars; +} +return null; +}); +Clazz.defineMethod(c$, "getMapKeys", +function(nLevels, skipEmpty){ +if (this.tok != 6) return ""; +var sb = new JU.SB(); +JS.SV.sValueArray(sb, this, "", "", true, false, false, nLevels + 1, skipEmpty); +return sb.toString(); +}, "~N,~B"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.toString2() + "[" + this.myName + " index =" + this.index + " intValue=" + this.intValue + "]"; +}); +Clazz.defineMethod(c$, "getKeys", +function(isAll){ +switch (this.tok) { +case 6: +case 14: +case 7: +break; +default: +return null; +} +var keys = new JU.Lst(); +this.getKeyList(isAll, keys, ""); +var skeys = keys.toArray( new Array(keys.size())); +java.util.Arrays.sort(skeys); +return skeys; +}, "~B"); +Clazz.defineMethod(c$, "getKeyList", +function(isAll, keys, prefix){ +var map = this.getMap(); +if (map == null) { +if (isAll) { +var lst; +var n; +if ((lst = this.getList()) != null && (n = lst.size()) > 0) lst.get(n - 1).getKeyList(true, keys, prefix + "." + n + "."); +}return; +}for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +if (isAll && (k.length == 0 || !JU.PT.isLetter(k.charAt(0)))) { +if (prefix.endsWith(".")) prefix = prefix.substring(0, prefix.length - 1); +k = "[" + JU.PT.esc(k) + "]"; +}keys.addLast(prefix + k); +if (isAll) e.getValue().getKeyList(true, keys, prefix + k + "."); +} +}, "~B,JU.Lst,~S"); +c$.deepCopy = Clazz.defineMethod(c$, "deepCopy", +function(v, isHash, isDeep){ +if (isHash) { +var vold = v; +var vnew = new java.util.Hashtable(); +for (var e, $e = vold.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var v1 = e.getValue(); +vnew.put(e.getKey(), isDeep ? JS.SV.deepCopySV(v1) : v1); +} +return vnew; +}var vold2 = v; +var vnew2 = new JU.Lst(); +for (var i = 0, n = vold2.size(); i < n; i++) { +var vm = vold2.get(i); +vnew2.addLast(isDeep ? JS.SV.deepCopySV(vm) : vm); +} +return vnew2; +}, "~O,~B,~B"); +c$.deepCopySV = Clazz.defineMethod(c$, "deepCopySV", +function(vm){ +switch (vm.tok) { +case 6: +case 7: +if ("\r".equals(vm.myName)) { +vm.myName = null; +vm = JS.SV.newV(vm.tok, (vm.tok == 6 ? new java.util.Hashtable() : new JU.Lst())); +} else { +var name0 = vm.myName; +vm.myName = "\r"; +var vm0 = vm; +vm = JS.SV.newV(vm.tok, JS.SV.deepCopy(vm.value, vm.tok == 6, true)); +vm0.myName = name0; +}break; +} +return vm; +}, "JS.SV"); +Clazz.defineMethod(c$, "sortMapArray", +function(key){ +var lst = this.getList(); +if (lst != null) { +java.util.Collections.sort(this.getList(), Clazz.innerTypeInstance(JS.SV.Sort, this, null, 0, key)); +}return this; +}, "~S"); +c$.safeJSON = Clazz.defineMethod(c$, "safeJSON", +function(key, property){ +return "{" + (Clazz.instanceOf(property,"JS.SV") ? JU.PT.esc(key) + " : " + JS.SV.format( Clazz.newArray(-1, [null, property]), 0) : JU.PT.toJSON(key, property)) + "}"; +}, "~S,~O"); +Clazz.defineMethod(c$, "isNaN", +function(){ +return (this.value === "NaN" || this === JS.SV.vNaN); +}); +c$.$SV$Sort$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.arrayPt = 0; +this.myKey = null; +Clazz.instantialize(this, arguments);}, JS.SV, "Sort", null, java.util.Comparator); +Clazz.makeConstructor(c$, +function(arrayPt, myKey){ +this.arrayPt = arrayPt; +this.myKey = myKey; +}, "~N,~S"); +Clazz.overrideMethod(c$, "compare", +function(x, y){ +if (x.tok != y.tok) { +if (x.tok == 3 || x.tok == 2 || y.tok == 3 || y.tok == 2) { +var fx = JS.SV.fValue(x); +var fy = JS.SV.fValue(y); +return (fx < fy ? -1 : fx > fy ? 1 : 0); +}if (x.tok == 4 || y.tok == 4) return JS.SV.sValue(x).compareTo(JS.SV.sValue(y)); +}switch (x.tok) { +case 2: +return (x.intValue < y.intValue ? -1 : x.intValue > y.intValue ? 1 : 0); +case 4: +return JS.SV.sValue(x).compareTo(JS.SV.sValue(y)); +case 7: +var sx = x.getList(); +var sy = y.getList(); +if (sx.size() != sy.size()) return (sx.size() < sy.size() ? -1 : 1); +var iPt = this.arrayPt; +if (iPt < 0) iPt += sx.size(); +if (iPt < 0 || iPt >= sx.size()) return 0; +return this.compare(sx.get(iPt), sy.get(iPt)); +case 6: +if (this.myKey != null) { +return this.compare(x.getMap().get(this.myKey), y.getMap().get(this.myKey)); +}default: +var fx = JS.SV.fValue(x); +var fy = JS.SV.fValue(y); +return (fx < fy ? -1 : fx > fy ? 1 : 0); +} +}, "JS.SV,JS.SV"); +/*eoif4*/})(); +}; +c$.vT = JS.SV.newSV(1073742335, 1, "true"); +c$.vF = JS.SV.newSV(1073742334, 0, "false"); +c$.vNaN = JS.SV.newSV(3, 2147483647, Float.$valueOf(NaN)); +c$.pt0 = new JU.P3(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptCompiler.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptCompiler.js new file mode 100755 index 000000000000..00f63a35f690 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptCompiler.js @@ -0,0 +1,2111 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.ScriptTokenParser", "JU.Lst"], "JS.ScriptCompiler", ["java.util.Hashtable", "JU.AU", "$.BS", "$.PT", "$.SB", "J.api.Interface", "J.i18n.GT", "JM.BondSet", "$.Group", "JS.ContextToken", "$.SV", "$.ScriptContext", "$.ScriptError", "$.ScriptFlowContext", "$.ScriptFunction", "$.ScriptManager", "$.T", "JU.Edge", "$.Escape", "$.Logger", "JV.FileManager", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.filename = null; +this.isSilent = false; +this.contextVariables = null; +this.aatokenCompiled = null; +this.lineNumbers = null; +this.lineIndices = null; +this.lnLength = 8; +this.preDefining = false; +this.isShowScriptOutput = false; +this.isCheckOnly = false; +this.haveComments = false; +this.isPrivateFunc = false; +this.isPrivateScript = false; +this.scriptExtensions = null; +this.thisFunction = null; +this.flowContext = null; +this.ltoken = null; +this.lltoken = null; +this.vBraces = null; +this.ichBrace = 0; +this.cchToken = 0; +this.cchScript = 0; +this.nSemiSkip = 0; +this.parenCount = 0; +this.braceCount = 0; +this.setBraceCount = 0; +this.bracketCount = 0; +this.ptSemi = 0; +this.forPoint3 = 0; +this.setEqualPt = 0; +this.iBrace = 0; +this.iHaveQuotedString = false; +this.isEndOfCommand = false; +this.needRightParen = false; +this.endOfLine = false; +this.comment = null; +this.tokLastMath = 0; +this.checkImpliedScriptCmd = false; +this.vFunctionStack = null; +this.allowMissingEnd = false; +this.isShowCommand = false; +this.isComment = false; +this.isUserToken = false; +this.implicitString = false; +this.tokInitialPlusPlus = 0; +this.afterWhite = 0; +this.isDotDot = false; +this.ident = null; +this.identLC = null; +this.vPush = null; +this.pushCount = 0; +this.forceFlowContext = null; +this.isWhere = false; +this.haveENDIF = false; +this.chFirst = '\0'; +this.afterMath = 0; +Clazz.instantialize(this, arguments);}, JS, "ScriptCompiler", JS.ScriptTokenParser); +Clazz.prepareFields (c$, function(){ +this.vPush = new JU.Lst(); +}); +Clazz.makeConstructor(c$, +function(vwr){ +Clazz.superConstructor (this, JS.ScriptCompiler, []); +this.vwr = vwr; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "compile", +function(filename, script, isPredefining, isSilent, debugScript, isCheckOnly){ +this.isCheckOnly = isCheckOnly; +this.filename = filename; +this.isSilent = isSilent; +this.script = script; +this.isWhere = script.startsWith("w_h_e_r_e = "); +this.logMessages = (!isSilent && !isPredefining && debugScript); +this.preDefining = (filename === "#predefine"); +var doFull = true; +var isOK = this.compile0(doFull); +this.atokenInfix = null; +if (!isOK) this.handleError(); +var sc = new JS.ScriptContext(); +isOK = (this.iBrace == 0 && this.parenCount == 0 && this.braceCount == 0 && this.bracketCount == 0); +sc.isComplete = isOK; +sc.script = script; +sc.scriptExtensions = this.scriptExtensions; +sc.isEditor = (this.scriptExtensions != null && this.scriptExtensions.indexOf("\u0001## ISEDITOR") >= 0); +sc.errorType = this.errorType; +if (this.errorType != null) { +sc.iCommandError = this.iCommand; +this.setAaTokenCompiled(); +}sc.saveTokens(this.aatokenCompiled); +sc.errorMessage = this.errorMessage; +sc.errorMessageUntranslated = (this.errorMessageUntranslated == null ? this.errorMessage : this.errorMessageUntranslated); +if (this.allowMissingEnd && sc.errorMessage != null && sc.errorMessageUntranslated.indexOf("missing END") >= 0) sc.errorMessage = sc.errorMessageUntranslated; +sc.lineIndices = this.lineIndices; +sc.lineNumbers = this.lineNumbers; +sc.vars = this.contextVariables; +return sc; +}, "~S,~S,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "newContextVariable", +function(ident){ +this.theToken = JS.T.o(1073741824, ident); +if (this.pushCount > 0) { +var ct = this.vPush.get(this.pushCount - 1); +ct.addName(ident); +if (ct.tok != 364558) return; +}if (this.thisFunction == null) { +if (this.contextVariables == null) this.contextVariables = new java.util.Hashtable(); +JS.ScriptCompiler.addContextVariable(this.contextVariables, ident); +} else { +this.thisFunction.addVariable(ident, false); +}}, "~S"); +c$.addContextVariable = Clazz.defineMethod(c$, "addContextVariable", +function(contextVariables, name){ +contextVariables.put(name, JS.SV.newS("").setName(name)); +}, "java.util.Map,~S"); +Clazz.defineMethod(c$, "isContextVariable", +function(ident){ +for (var i = this.vPush.size(); --i >= 0; ) { +var ct = this.vPush.get(i); +if (ct.contextVariables != null && ct.contextVariables.containsKey(ident)) return true; +} +return (this.thisFunction != null ? this.thisFunction.isVariable(ident) : this.contextVariables != null && this.contextVariables.containsKey(ident)); +}, "~S"); +Clazz.defineMethod(c$, "cleanScriptComments", +function(script){ +if (script.indexOf('\u00A0') >= 0) script = script.$replace('\u00A0', ' '); +if (script.indexOf('\u201C') >= 0) script = script.$replace('\u201C', '"'); +if (script.indexOf('\u201D') >= 0) script = script.$replace('\u201D', '"'); +if (script.indexOf('\uFEFF') >= 0) script = script.$replace('\uFEFF', ' '); +var pt = (script.indexOf("\u0001##")); +if (pt >= 0) { +this.allowMissingEnd = (script.indexOf("\u0001##NOENDCHECK", pt) >= 0); +this.scriptExtensions = script.substring(pt); +script = script.substring(0, pt); +}this.haveComments = (script.indexOf("#") >= 0); +return JV.FileManager.getEmbeddedScript(script); +}, "~S"); +Clazz.defineMethod(c$, "addTokenToPrefix", +function(token){ +if (this.logMessages) JU.Logger.info("addTokenToPrefix" + this.lineCurrent + " " + this.iCommand + " " + token); +this.ltoken.addLast(token); +if (token.tok != 0) this.lastToken = token; +}, "JS.T"); +Clazz.defineMethod(c$, "compile0", +function(isFull){ +this.haveENDIF = false; +this.script = this.cleanScriptComments(this.script); +this.ichToken = this.script.indexOf("# Jmol state version "); +this.isStateScript = (this.ichToken >= 0 && this.ichToken < 10); +if (this.isStateScript) { +this.ptSemi = this.script.indexOf(";", this.ichToken); +if (this.ptSemi >= this.ichToken) JS.ScriptManager.setStateScriptVersion(this.vwr, this.script.substring(this.ichToken + "# Jmol state version ".length, this.ptSemi).trim()); +} else { +this.haveENDIF = (this.script.indexOf("endif") >= 0); +}this.cchScript = this.script.length; +main : while (true) { +this.vFunctionStack = new JU.Lst(); +this.htUserFunctions = new java.util.Hashtable(); +this.contextVariables = null; +this.lineNumbers = null; +this.lineIndices = null; +this.aatokenCompiled = null; +this.thisFunction = null; +this.flowContext = null; +this.errorType = null; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorLine = null; +this.isPrivateScript = false; +this.isPrivateFunc = false; +this.nSemiSkip = 0; +this.ichToken = 0; +this.ichCurrentCommand = 0; +this.ichComment = 0; +this.ichBrace = 0; +this.lineCurrent = 1; +this.iCommand = 0; +this.tokLastMath = 0; +this.lastToken = JS.T.tokenOff; +this.vBraces = new JU.Lst(); +this.vPush = new JU.Lst(); +this.pushCount = 0; +this.iBrace = 0; +this.braceCount = 0; +this.parenCount = 0; +this.isDotDot = false; +this.ptSemi = -10; +this.cchToken = 0; +this.lnLength = 8; +this.lineNumbers = Clazz.newShortArray (this.lnLength, 0); +this.lineIndices = Clazz.newIntArray (this.lnLength, 2, 0); +this.isNewSet = this.isSetBrace = false; +this.ptNewSetModifier = 1; +this.isShowScriptOutput = false; +this.iHaveQuotedString = false; +this.checkImpliedScriptCmd = false; +this.lltoken = new JU.Lst(); +this.ltoken = new JU.Lst(); +this.tokCommand = 0; +this.lastFlowCommand = null; +this.tokenAndEquals = null; +this.tokInitialPlusPlus = 0; +this.setBraceCount = 0; +this.bracketCount = 0; +this.forPoint3 = -1; +this.setEqualPt = 2147483647; +this.endOfLine = false; +this.comment = null; +this.isEndOfCommand = false; +this.needRightParen = false; +this.lastFlowCommand = null; +this.forceFlowContext = null; +this.theTok = 0; +var iLine = 1; +for (; true; this.ichToken += this.cchToken) { +if ((this.nTokens = this.ltoken.size()) == 0) { +if (this.thisFunction != null && this.thisFunction.chpt0 == 0) this.thisFunction.chpt0 = this.ichToken; +this.ichCurrentCommand = this.ichToken; +iLine = this.lineCurrent; +}if (this.lookingAtLeadingWhitespace()) continue; +this.endOfLine = false; +if (!this.isEndOfCommand) { +this.endOfLine = this.lookingAtEndOfLine(); +switch (this.endOfLine ? 0 : this.lookingAtComment()) { +case 2: +continue; +case 3: +this.isEndOfCommand = true; +continue; +case 1: +this.isEndOfCommand = true; +this.comment = this.script.substring(this.ichToken, this.ichToken + this.cchToken).trim(); +break; +} +this.isEndOfCommand = this.isEndOfCommand || this.endOfLine || this.lookingAtTerminator(); +}if (this.isEndOfCommand) { +this.isEndOfCommand = false; +switch (this.processTokenList(iLine, isFull)) { +case 2: +continue; +case 4: +return false; +} +this.checkImpliedScriptCmd = false; +if (this.ichToken < this.cchScript) continue; +if (this.flowContext != null) { +this.ichCurrentCommand = this.ichToken = this.cchScript; +while (this.flowContext != null) { +this.fixFlowAddLine(this.flowContext); +if (!this.haveENDIF && this.flowContext.checkForceEndIf(0)) { +this.forceFlowEnd(this.flowContext.token); +this.processTokenList(iLine, isFull); +} else { +this.lineCurrent = this.flowContext.lineStart; +this.iCommand = this.flowContext.pt0; +this.ichCurrentCommand = this.lineIndices[this.iCommand][0]; +this.ichToken = this.ichEnd = this.lineIndices[this.iCommand][1]; +return this.errorStr(11, (this.flowContext.$function == null ? JS.T.nameOf(this.flowContext.token.tok) : this.flowContext.$function.getSignature())); +}} +this.lltoken.addLast( Clazz.newArray(-1, [JS.T.o(0, "// end of script")])); +}this.setAaTokenCompiled(); +return true; +}if (this.nTokens > 0 && !this.isDotDot) { +switch (this.checkSpecialParameterSyntax()) { +case 2: +continue; +case 4: +return false; +} +}if (this.lookingAtLookupToken(this.ichToken)) { +switch (this.parseKnownToken()) { +case 2: +continue; +case 4: +return false; +case 5: +this.haveENDIF = true; +continue main; +} +switch (this.parseCommandParameter(iLine, isFull)) { +case 2: +continue; +case 4: +return false; +case 5: +this.haveENDIF = true; +continue main; +} +this.addTokenToPrefix(this.theToken); +continue; +}if (this.nTokens == 0 || (this.isNewSet || this.isSetBrace) && this.nTokens == this.ptNewSetModifier) { +if (this.nTokens == 0) { +if (this.lookingAtString(true)) { +this.addTokenToPrefix(this.setCommand(JS.T.tokenScript)); +this.cchToken = 0; +continue; +}if (this.lookingAtImpliedString(true, true, true, false)) this.ichEnd = this.ichToken + this.cchToken; +}return this.commandExpected(); +}return this.errorStr(19, this.script.substring(this.ichToken, this.ichToken + 1)); +} +} +}, "~B"); +Clazz.defineMethod(c$, "setAaTokenCompiled", +function(){ +this.aatokenCompiled = this.lltoken.toArray( new Array(this.lltoken.size())); +}); +Clazz.defineMethod(c$, "lookingAtLeadingWhitespace", +function(){ +var ichT = this.ichToken; +while (JS.ScriptCompiler.isSpaceOrTab(this.charAt(ichT))) ++ichT; + +if (this.isLineContinuation(ichT, true)) ichT += 1 + this.nCharNewLine(ichT + 1); +this.cchToken = ichT - this.ichToken; +if (this.cchToken == 0) return false; +this.afterWhite = ichT; +return true; +}); +Clazz.defineMethod(c$, "isLineContinuation", +function(ichT, checkMathop){ +var isEscaped = (ichT + 2 < this.cchScript && this.script.charAt(ichT) == '\\' && this.nCharNewLine(ichT + 1) > 0 || !this.isShowScriptOutput && checkMathop && this.lookingAtMathContinuation(ichT)); +if (isEscaped) this.lineCurrent++; +return isEscaped; +}, "~N,~B"); +Clazz.defineMethod(c$, "lookingAtMathContinuation", +function(ichT){ +var n; +if ((n = this.nCharNewLine(ichT)) == 0 || this.lastToken.tok == 1073742332) return false; +if (this.parenCount > 0 || this.bracketCount > 0) return true; +switch (this.tokCommand) { +case 134320141: +case 102436: +this.flowContext.forceEndIf = false; +return false; +case 134320648: +case 102406: +case 134320649: +case 364547: +case 102402: +if (!this.haveENDIF) { +this.flowContext.addLine = 1; +this.flowContext.forceEndIf = true; +}return false; +case 36867: +if (this.nTokens > 1 && this.ltoken.get(1).tok == 537022465) return false; +case 36865: +case 36869: +break; +default: +return false; +} +if (this.lastToken.tok == this.tokLastMath) return true; +ichT += n; +while (JS.ScriptCompiler.isSpaceOrTab(this.charAt(ichT))) ++ichT; + +return (this.lookingAtLookupToken(ichT) && this.tokLastMath == 1); +}, "~N"); +Clazz.defineMethod(c$, "lookingAtEndOfLine", +function(){ +if (this.ichToken >= this.cchScript) { +this.ichEnd = this.cchScript; +return true; +}return ((this.cchToken = this.nCharNewLine(this.ichEnd = this.ichToken)) > 0); +}); +Clazz.defineMethod(c$, "nCharNewLine", +function(ichT){ +var ch; +return ((ch = this.charAt(ichT)) != '\r' ? (ch == '\n' ? 1 : 0) : this.charAt(++ichT) == '\n' ? 2 : 1); +}, "~N"); +Clazz.defineMethod(c$, "lookingAtTerminator", +function(){ +var isSemi = (this.script.charAt(this.ichToken) == ';'); +if (isSemi && this.nTokens > 0) this.ptSemi = this.nTokens; +if (!isSemi || this.nSemiSkip-- > 0) return false; +this.cchToken = 1; +return true; +}); +Clazz.defineMethod(c$, "lookingAtComment", +function(){ +var ch = this.script.charAt(this.ichToken); +var ichT = this.ichToken; +var ichFirstSharp = -1; +if (this.ichToken == this.ichCurrentCommand && ch == '$' && (this.isShowScriptOutput || this.ichToken == 0)) { +this.isShowScriptOutput = true; +this.isShowCommand = true; +if (this.charAt(++ichT) == '[') while (ch != ']' && !this.eol(ch = this.charAt(ichT))) ++ichT; + +this.cchToken = ichT - this.ichToken; +return 2; +} else if (this.isShowScriptOutput && !this.isShowCommand) { +ichFirstSharp = ichT; +}if (ch == '/' && ichT + 1 < this.cchScript) switch ((this.script.charAt(++ichT)).charCodeAt(0)) { +case 47: +ichFirstSharp = this.ichToken; +this.ichEnd = ichT - 1; +break; +case 42: +this.ichEnd = ichT - 1; +var terminator = ((ch = this.charAt(++ichT)) == '*' ? "**/" : "*/"); +ichT = this.script.indexOf(terminator, this.ichToken + 2); +if (ichT < 0) { +this.ichToken = this.cchScript; +return 3; +}this.incrementLineCount(this.script.substring(this.ichToken, ichT)); +this.cchToken = ichT + (ch == '*' ? 3 : 2) - this.ichToken; +return 2; +default: +return 0; +} +var isSharp = (ichFirstSharp < 0); +if (isSharp && !this.haveComments) return 0; +if (this.ichComment > ichT) ichT = this.ichComment; +for (; ichT < this.cchScript; ichT++) { +if (this.eol(ch = this.script.charAt(ichT))) { +this.ichEnd = ichT; +if (ichT > 0 && this.isLineContinuation(ichT - 1, false)) { +ichT += this.nCharNewLine(ichT); +continue; +}if (!isSharp && ch == ';') continue; +break; +}if (ichFirstSharp >= 0) continue; +if (ch == '#') ichFirstSharp = ichT; +} +if (ichFirstSharp < 0) return 0; +this.ichComment = ichFirstSharp; +if (isSharp && this.nTokens == 0 && this.cchScript - ichFirstSharp >= 3 && this.script.charAt(ichFirstSharp + 1) == 'j' && this.script.charAt(ichFirstSharp + 2) == 'c') { +this.cchToken = ichT - this.ichToken; +return 2; +}if (ichFirstSharp != this.ichToken) return 0; +if (isSharp && this.cchScript > this.ichToken + 3 && this.script.charAt(this.ichToken + 1) == 'j' && this.script.charAt(this.ichToken + 2) == 'x' && JS.ScriptCompiler.isSpaceOrTab(this.script.charAt(this.ichToken + 3))) { +this.cchToken = 4; +return 2; +}if (ichT == this.ichToken) return 0; +this.cchToken = ichT - this.ichToken; +if (!isSharp && this.cchToken == 10 && this.script.substring(this.ichToken, ichT).equals("//@private")) { +this.isPrivateScript = true; +}return (this.nTokens == 0 ? 1 : 2); +}); +Clazz.defineMethod(c$, "charAt", +function(i){ +return (i < this.cchScript ? this.script.charAt(i) : '\0'); +}, "~N"); +Clazz.defineMethod(c$, "processTokenList", +function(iLine, doCompile){ +var n = this.ltoken.size(); +if (n > 0 || this.comment != null) { +if (n == 0) { +this.ichCurrentCommand = this.ichToken; +if (this.comment != null) { +this.isComment = true; +this.addTokenToPrefix(JS.T.o(0, this.comment)); +}} else if (this.setBraceCount > 0 && this.endOfLine && this.ichToken < this.cchScript) { +return 2; +}if (this.wasImpliedScript()) return 2; +if (this.isNewSet && n > 2 && this.tokAt(2) == 1073742336 && (this.tokAt(3) == 1275068444 || this.tokAt(3) == 1140850693 || this.tokAt(3) == 1275335685 || this.tokAt(3) == 1275334681)) { +this.ltoken.set(0, JS.T.tokenSet); +this.ltoken.add(1, this.tokAt(3) == 1275334681 ? JS.T.tokenAll : this.ltoken.get(1)); +} else if (this.tokInitialPlusPlus != 0) { +if (!this.isNewSet) this.checkNewSetCommand(); +this.tokenizePlusPlus(this.tokInitialPlusPlus, true); +this.ichCurrentCommand -= 2; +}this.iCommand = this.lltoken.size(); +if (this.thisFunction != null && this.thisFunction.cmdpt0 < 0) { +this.thisFunction.cmdpt0 = this.iCommand; +}if (n == 1 && this.braceCount == 1) { +if (this.lastFlowCommand == null) { +this.parenCount = this.setBraceCount = this.braceCount = 0; +this.ltoken.removeItemAt(0); +var t = JS.ContextToken.newContext(true); +this.addTokenToPrefix(this.setCommand(t)); +this.pushContext(t); +this.addBrace(this.tokenCommand); +} else { +this.parenCount = this.setBraceCount = 0; +this.setCommand(this.lastFlowCommand); +if (this.lastFlowCommand.tok != 102439 && (this.tokAt(0) == 1073742332)) this.ltoken.removeItemAt(0); +this.lastFlowCommand = null; +this.forceFlowContext = this.flowContext; +}}if (this.bracketCount > 0 || this.setBraceCount > 0 || this.parenCount > 0 || this.braceCount == 1 && !this.checkFlowStartBrace(true)) { +this.error(n == 1 ? 2 : 4); +return 4; +}if (this.needRightParen) { +this.addTokenToPrefix(JS.T.tokenRightParen); +this.needRightParen = false; +}if (this.tokAt(1) == 1073741974 && JS.T.tokAttr(this.tokCommand, 135168)) { +switch (this.tokAt(2)) { +case 0: +case 4: +case 12290: +break; +default: +var t = this.ltoken.removeItemAt(2); +this.ltoken.add(2, JS.T.o(4, t.tok == 2 ? "" + t.intValue : t.value.toString())); +} +}if (this.ltoken.size() > 0) { +if (doCompile && !this.compileCommand()) return 4; +if (this.logMessages) { +JU.Logger.info("-------------------------------------"); +}var doEval = true; +switch (this.tokCommand) { +case 364558: +case 102436: +case 134320141: +case 102409: +doEval = (this.atokenInfix.length > 0 && this.atokenInfix[0].intValue != 2147483647); +break; +} +if (doEval) { +if (this.iCommand == this.lnLength) { +this.lineNumbers = JU.AU.doubleLengthShort(this.lineNumbers); +var lnI = Clazz.newIntArray (this.lnLength * 2, 2, 0); +System.arraycopy(this.lineIndices, 0, lnI, 0, this.lnLength); +this.lineIndices = lnI; +this.lnLength *= 2; +}this.lineNumbers[this.iCommand] = this.lineNumbers[this.lineNumbers.length - 1] = iLine; +this.lineIndices[this.iCommand][0] = this.ichCurrentCommand; +this.lineIndices[this.iCommand][1] = Math.max(this.ichCurrentCommand, Math.min(this.cchScript, this.ichEnd == this.ichCurrentCommand ? this.ichToken : this.ichEnd)); +this.lltoken.addLast(this.atokenInfix); +this.iCommand = this.lltoken.size(); +}if (this.tokCommand == 36867) this.lastFlowCommand = null; +}this.setCommand(null); +this.comment = null; +this.iHaveQuotedString = this.isNewSet = this.isSetBrace = this.needRightParen = false; +this.ptNewSetModifier = 1; +this.ltoken.clear(); +this.nTokens = this.nSemiSkip = 0; +this.tokInitialPlusPlus = 0; +this.tokenAndEquals = null; +this.ptSemi = -10; +this.forPoint3 = -1; +this.setEqualPt = 2147483647; +}var isOneLine = (this.flowContext != null && this.flowContext.addLine == 0); +var isEndFlow = ((this.endOfLine || !isOneLine) && !this.haveENDIF && this.flowContext != null && this.flowContext.checkForceEndIf(-1)); +if (this.endOfLine) { +if (isEndFlow) { +if (this.isComment) { +if (!isOneLine) { +this.flowContext.addLine++; +this.flowContext.forceEndIf = true; +}} else if (n > 0 && !this.haveENDIF || isOneLine) { +this.forceFlowEnd(this.flowContext.token); +if (!isOneLine) { +this.forceFlowContext.forceEndIf = true; +}}this.isEndOfCommand = true; +this.cchToken = 0; +this.ichCurrentCommand = this.ichToken; +return 2; +}this.isComment = false; +this.isShowCommand = false; +++this.lineCurrent; +} else if (isEndFlow) { +this.forceFlowEnd(this.flowContext.token); +this.forceFlowContext.forceEndIf = true; +}if (this.ichToken >= this.cchScript) { +this.setCommand(JS.T.tokenAll); +this.theTok = 0; +switch (this.checkFlowEndBrace()) { +case 4: +return 4; +case 2: +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +} +this.ichToken = this.cchScript; +return 0; +}return 0; +}, "~N,~B"); +Clazz.defineMethod(c$, "addBrace", +function(t){ +this.vBraces.addLast(t); +this.iBrace++; +}, "JS.T"); +Clazz.defineMethod(c$, "pushContext", +function(t){ +this.pushCount++; +this.vPush.addLast(t); +}, "JS.T"); +Clazz.defineMethod(c$, "wasImpliedScript", +function(){ +if (this.checkImpliedScriptCmd && this.nTokens >= 2 && (this.tokCommand == 134222850 || this.tokCommand == 4124)) { +var s = (this.nTokens == 2 ? this.lastToken.value.toString().toUpperCase() : null); +if (this.nTokens > 2 ? !(this.tokAt(2) == 268435968 && this.ltoken.get(1).value.toString().endsWith(".spt")) : s.endsWith(".SORT") || s.endsWith(".REVERSE") || s.endsWith(".POP") || s.indexOf(".SORT(") >= 0 || s.indexOf(".REVERSE(") >= 0 || s.indexOf(".POP(") >= 0 || s.indexOf(".PUSH(") >= 0 || s.endsWith("++") || s.endsWith("--") || s.endsWith("=") || this.tokInitialPlusPlus != 0) { +this.ichToken = this.ichCurrentCommand; +this.nTokens = 0; +this.ltoken.clear(); +this.cchToken = 0; +this.tokCommand = 0; +return true; +}}return false; +}); +Clazz.defineMethod(c$, "compileCommand", +function(){ +switch (this.ltoken.size()) { +case 0: +this.atokenInfix = new Array(0); +return true; +case 4: +if (this.isNewSet && this.tokenAt(2).value.equals(".") && this.tokenAt(3).value.equals("spt")) { +var fname = this.tokenAt(1).value + "." + this.tokenAt(3).value; +this.ltoken.clear(); +this.addTokenToPrefix(JS.T.tokenScript); +this.addTokenToPrefix(JS.T.o(4, fname)); +this.isNewSet = false; +}} +this.setCommand(this.tokenAt(0)); +var size = this.ltoken.size(); +if (size == 1 && JS.T.tokAttr(this.tokCommand, 524288)) this.addTokenToPrefix(JS.T.tokenOn); +if (this.tokenAndEquals != null) { +var j; +var i = 0; +for (i = 1; i < size; i++) { +if ((j = this.tokAt(i)) == 268442114) break; +} +size = i; +i++; +if (this.ltoken.size() < i) { +JU.Logger.error("COMPILER ERROR! - andEquals "); +} else { +for (j = 1; j < size; j++, i++) this.ltoken.add(i, this.tokenAt(j)); + +this.ltoken.set(size, JS.T.tokenEquals); +this.ltoken.add(i, this.tokenAndEquals); +this.ltoken.add(++i, JS.T.tokenLeftParen); +this.addTokenToPrefix(JS.T.tokenRightParen); +}}this.atokenInfix = this.ltoken.toArray( new Array(size = this.ltoken.size())); +return this.compileExpressions(); +}); +Clazz.defineMethod(c$, "tokenAt", +function(i){ +return this.ltoken.get(i); +}, "~N"); +Clazz.overrideMethod(c$, "tokAt", +function(i){ +return (i < this.ltoken.size() ? this.tokenAt(i).tok : 0); +}, "~N"); +Clazz.defineMethod(c$, "setCommand", +function(token){ +this.tokenCommand = token; +if (token == null) { +this.tokCommand = 0; +} else { +this.tokCommand = this.tokenCommand.tok; +this.isMathExpressionCommand = (this.tokCommand == 1073741824 || JS.T.tokAttr(this.tokCommand, 36864)); +this.isSetOrDefine = (this.tokCommand == 36867 || this.tokCommand == 12290); +this.isCommaAsOrAllowed = JS.T.tokAttr(this.tokCommand, 12288); +this.implicitString = JS.T.tokAttr(this.tokCommand, 20480); +}return token; +}, "JS.T"); +Clazz.defineMethod(c$, "replaceCommand", +function(token){ +this.ltoken.removeItemAt(0); +this.ltoken.add(0, this.setCommand(token)); +}, "JS.T"); +Clazz.defineMethod(c$, "getPrefixToken", +function(){ +this.ident = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +if (this.ident.equals("NaN")) { +this.addTokenToPrefix(JS.SV.vNaN); +return 3; +}this.identLC = this.ident.toLowerCase(); +var isUserVar = this.lastToken.tok != 1073742336 && !this.isDotDot && this.isContextVariable(this.identLC); +var myName = this.ident; +var preserveCase = null; +if (this.nTokens == 0) { +this.isUserToken = isUserVar; +}if (this.nTokens == 1 && (this.tokCommand == 134320141 || this.tokCommand == 102436 || this.tokCommand == 36868) || this.nTokens != 0 && isUserVar || !this.isDotDot && this.isUserFunction(this.identLC) && ((preserveCase = this.ident) != null) && (this.thisFunction == null || !this.thisFunction.name.equals(this.identLC))) { +this.ident = (preserveCase == null ? this.identLC : preserveCase); +this.theToken = null; +} else if (this.ident.length == 1 || this.lastToken.tok == 268436482) { +if ((this.theToken = JS.T.getTokenFromName(this.ident)) == null && (this.theToken = JS.T.getTokenFromName(this.identLC)) != null) this.theToken = JS.T.tv(this.theToken.tok, this.theToken.intValue, this.ident); +} else { +this.theToken = JS.T.getTokenFromName(this.identLC); +if (isUserVar && this.theToken != null && !this.theToken.value.toString().equalsIgnoreCase(this.identLC)) { +this.theToken = null; +}if (this.theToken != null) switch (this.lastToken.tok) { +default: +if (!this.isWhere) break; +case 1073742336: +case 268437504: +case 268436992: +this.theToken = JS.T.o(this.theToken.tok, this.ident); +} +}if (this.theToken == null) { +this.theToken = JS.SV.newSV((this.identLC.indexOf("property_") == 0 ? 1715472409 : 1073741824), 2147483647, this.ident).setName(myName); +}return this.theTok = this.theToken.tok; +}); +Clazz.defineMethod(c$, "checkSpecialParameterSyntax", +function(){ +if (this.lookingAtString(!this.implicitString)) { +if (this.cchToken < 0) return this.ERROR(4); +var str = this.getUnescapedStringLiteral(this.lastToken != null && !this.iHaveQuotedString && this.lastToken.tok != 1073741984 && (this.tokCommand == 36867 && this.nTokens == 2 && this.lastToken.tok == 545259546 || this.tokCommand == 134223363 || this.tokCommand == 1610616835 || this.tokCommand == 134222850 || this.tokCommand == 4124)); +this.iHaveQuotedString = true; +if ((this.tokCommand == 134223363 || this.tokCommand == 135174) && this.lastToken.tok == 134221834 || this.tokCommand == 134221834 && str.indexOf("@") < 0) { +if (!this.getData(str)) { +return this.ERROR(11, "data"); +}} else { +this.addTokenToPrefix(JS.T.o(4, str)); +if (this.implicitString) { +this.ichEnd = this.ichToken + this.cchToken; +this.isEndOfCommand = true; +}}return 2; +}var ch; +if (this.nTokens == this.ptNewSetModifier) { +ch = this.script.charAt(this.ichToken); +var isAndEquals = ("+-\\*/&|=".indexOf(ch) >= 0); +var isOperation = (isAndEquals || ch == '.' || ch == '['); +var ch2 = this.charAt(this.ichToken + 1); +if (!this.isNewSet && this.isUserToken && isOperation && (ch == '=' || ch2 == ch || ch2 == '=')) { +this.isNewSet = true; +}if (this.isNewSet || this.tokCommand == 36867 || JS.T.tokAttr(this.tokCommand, 536870912)) { +if (ch == '=') this.setEqualPt = this.ichToken; +if (JS.T.tokAttr(this.tokCommand, 536870912) && ch == '=' || (this.isNewSet || this.isSetBrace) && isOperation) { +this.setCommand(isAndEquals ? JS.T.tokenSet : ch == '[' && !this.isSetBrace || ch == '.' && ch2 == '.' ? JS.T.tokenSetArray : JS.T.tokenSetProperty); +this.ltoken.add(0, this.tokenCommand); +this.cchToken = 1; +switch ((ch).charCodeAt(0)) { +case 91: +this.tokLastMath = 1; +this.addTokenToPrefix(JS.T.tokenArrayOpen); +this.bracketCount++; +return 2; +case 46: +if (ch2 == '.') { +this.addTokenToPrefix(JS.T.tokenArrayOpen); +this.cchToken = 2; +this.isDotDot = true; +return 2; +}this.addTokenToPrefix(JS.T.o(1073742336, ".")); +return 2; +case 45: +case 43: +case 42: +case 47: +case 92: +case 38: +case 124: +if (ch2.charCodeAt(0) == 0) return this.ERROR(4); +if (ch2 != ch && ch2 != '=') return this.ERROR(1, "\"" + ch + "\""); +break; +default: +this.lastToken = JS.T.tokenMinus; +return 2; +} +}}}out : switch (this.tokCommand) { +case 134222350: +switch (this.lastToken.tok) { +case 4120: +case 1296041985: +case 1715472409: +case 1073877010: +if (this.nTokens == 2) this.iHaveQuotedString = true; +break; +case 1073741925: +case 1073742189: +break; +default: +if (!this.iHaveQuotedString && this.nTokens != 2) return 0; +break; +} +case 134223363: +case 134222850: +case 4124: +case 1275072526: +if (this.script.charAt(this.ichToken) == '@') { +this.iHaveQuotedString = true; +return 0; +}switch (this.tokCommand) { +case 4124: +this.haveMacro = true; +break out; +case 134223363: +var isAppend = (this.tokAt(1) == 1073741839); +if (this.nTokens == 1 || isAppend && (this.nTokens == 2 || this.nTokens == 3 && this.tokAt(2) == 2)) { +if (isAppend && this.nTokens == 2 && JU.PT.isDigit(this.charAt(this.ichToken))) break out; +var isDataBase = JV.Viewer.isDatabaseCode(this.charAt(this.ichToken)); +if (this.lookingAtLoadFormat(isDataBase)) { +var strFormat = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +var token = JS.T.getTokenFromName(strFormat.toLowerCase()); +switch (token == null ? 0 : token.tok) { +case 1073742015: +case 1073742077: +case 1073741839: +case 1610616855: +case 4130: +case 1073877011: +if (this.nTokens != 1) return 4; +case 36868: +case 134221834: +case 1228935687: +case 134217764: +case 1073741984: +case 1094717454: +case 134218757: +case 536870926: +case 1073741849: +case 1073741851: +this.addTokenToPrefix(token); +break; +default: +var tok = (isDataBase ? 4 : JU.PT.isOneOf(strFormat = strFormat.toLowerCase(), ";xyz;vxyz;vibration;temperature;occupancy;partialcharge;") ? 1073741824 : 0); +if (tok != 0) { +this.addTokenToPrefix(JS.T.o(tok, strFormat)); +this.iHaveQuotedString = (tok == 4); +}} +return 2; +}break; +}var bs; +if (this.script.charAt(this.ichToken) == '{' || this.parenCount > 0) break out; +if ((bs = this.lookingAtBitset()) != null) { +this.addTokenToPrefix(JS.T.o(10, bs)); +return 2; +}} +if (!this.iHaveQuotedString && this.lookingAtImpliedString(this.tokCommand == 134222350, this.tokCommand == 134223363, this.nTokens > 1 || this.tokCommand != 134222850 && this.tokCommand != 4124, false)) { +var str = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +if (this.tokCommand == 134222850) { +if (str.startsWith("javascript:")) { +this.lookingAtImpliedString(true, true, true, false); +str = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +} else if (str.toUpperCase().indexOf(".PUSH(") >= 0) { +this.cchToken = 0; +this.iHaveQuotedString = true; +return 2; +}}this.iHaveQuotedString = true; +this.addTokenToPrefix(JS.T.o(4, str)); +return 2; +}break; +case 4156: +if (this.nTokens == 1 && this.lookForSyncID()) { +var ident = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +var iident = JU.PT.parseInt(ident); +if (iident == -2147483648 || Math.abs(iident) < 1000) this.addTokenToPrefix(JS.T.o(1073741824, ident)); + else this.addTokenToPrefix(JS.T.i(iident)); +return 2; +}break; +case 603983903: +if (this.nTokens == 2 && this.lastToken.tok == 134217764) { +if (this.lookingAtImpliedString(false, false, false, true)) { +if (this.script.charAt(this.ichToken + this.cchToken - 1) == ';') --this.cchToken; +var s = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +this.addTokenToPrefix(JS.T.o(4, s)); +return 2; +}}break; +case 134221856: +if (this.nTokens == 2 && this.lastToken.tok == 4115) this.iHaveQuotedString = true; +if (!this.iHaveQuotedString) { +if (this.script.charAt(this.ichToken) == '@') { +this.iHaveQuotedString = true; +return 0; +}if (this.lookingAtImpliedString(true, true, true, false)) { +var str = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +var pt = str.indexOf(" as "); +if (pt > 0) str = str.substring(0, this.cchToken = pt); +if (str.indexOf(" ") < 0 && str.indexOf(".") >= 0) { +this.addTokenToPrefix(JS.T.o(4, str)); +this.iHaveQuotedString = true; +return 2; +}}}break; +} +this.implicitString = new Boolean (this.implicitString & (this.nTokens == 1)).valueOf(); +if (this.implicitString && !((this.tokCommand == 134222850 || this.tokCommand == 4124) && this.iHaveQuotedString) && this.lookingAtImpliedString(true, true, true, false)) { +var str = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +if (this.tokCommand == 1825200146 && JU.PT.isOneOf(str.toLowerCase(), ";on;off;hide;display;")) this.addTokenToPrefix(JS.T.getTokenFromName(str.toLowerCase())); + else this.addTokenToPrefix(JS.T.o(4, str)); +return 2; +}if (this.lookingAtObjectID()) { +this.addTokenToPrefix(JS.T.getTokenFromName("$")); +this.addTokenToPrefix(JS.T.o(1073741824, this.script.substring(this.ichToken, this.ichToken + this.cchToken))); +return 2; +}var value = this.lookingAtExponential(); +if (value != null) { +this.addNumber(3, 2147483647, value); +return 2; +}if (this.lookingAtDecimal()) { +value = Float.$valueOf(this.script.substring(this.ichToken, this.ichToken + this.cchToken)); +var intValue = (JU.Edge.getFloatEncodedInt(this.script.substring(this.ichToken, this.ichToken + this.cchToken))); +this.addNumber(3, intValue, value); +return 2; +}if (this.lookingAtSeqcode()) { +ch = this.script.charAt(this.ichToken); +try { +var seqNum = (ch == '*' || ch == '^' ? 2147483647 : Integer.parseInt(this.script.substring(this.ichToken, this.ichToken + this.cchToken - 2))); +var insertionCode = this.script.charAt(this.ichToken + this.cchToken - 1); +if (insertionCode == '^') insertionCode = ' '; +if (seqNum < 0) { +seqNum = -seqNum; +this.addTokenToPrefix(JS.T.tokenMinus); +}var seqcode = JM.Group.getSeqcodeFor(seqNum, insertionCode); +this.addTokenToPrefix(JS.T.tv(5, seqcode, "seqcode")); +} catch (nfe) { +if (Clazz.exceptionOf(nfe,"NumberFormatException")){ +return this.ERROR(9, "" + ch); +} else { +throw nfe; +} +} +return 2; +}var val = this.lookingAtInteger(); +if (val != 2147483647) { +var intString = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +if (this.tokCommand == 102407 || this.tokCommand == 102408) { +if (this.nTokens != 1) return this.ERROR(0); +var f = (this.flowContext == null ? null : this.flowContext.getBreakableContext(val = Math.abs(val))); +if (f == null) return this.ERROR(1, this.tokenCommand.value); +this.tokenAt(0).intValue = f.pt0; +}this.addNumber(2, val, intString); +return 2; +}if (!this.isMathExpressionCommand && this.parenCount == 0 || this.lastToken.tok != 1073741824 && !JS.ScriptTokenParser.tokenAttr(this.lastToken, 134217728)) { +var isBondOrMatrix = (this.script.charAt(this.ichToken) == '['); +var bs = this.lookingAtBitset(); +if (bs != null) { +this.addTokenToPrefix(JS.T.o(10, isBondOrMatrix ? JM.BondSet.newBS(bs) : bs)); +return 2; +}if (isBondOrMatrix) { +var m = this.lookingAtMatrix(); +if (Clazz.instanceOf(m,"JU.M34")) { +this.addTokenToPrefix(JS.T.o((Clazz.instanceOf(m,"JU.M4") ? 12 : 11), m)); +return 2; +}}}return 0; +}); +Clazz.defineMethod(c$, "addNumber", +function(tok, i, v){ +this.addTokenToPrefix(this.afterWhite == this.ichToken ? JS.SV.newSV(tok, i, v) : JS.T.tv(tok, i, v)); +}, "~N,~N,~O"); +Clazz.defineMethod(c$, "lookingAtMatrix", +function(){ +var ipt; +var m; +if (this.ichToken + 4 >= this.cchScript || this.script.charAt(this.ichToken) != '[' || this.script.charAt(this.ichToken + 1) != '[' || (ipt = this.script.indexOf("]]", this.ichToken)) < 0 || (m = JU.Escape.unescapeMatrix(this.script.substring(this.ichToken, ipt + 2))) == null) return null; +this.cchToken = ipt + 2 - this.ichToken; +return m; +}); +Clazz.defineMethod(c$, "parseKnownToken", +function(){ +var tok = this.getPrefixToken(); +if (tok == 3) return 2; +var token; +if (this.isDotDot) { +if (tok == 268437504) { +this.bracketCount++; +} else { +this.addTokenToPrefix(JS.T.o(4, this.ident)); +this.addTokenToPrefix(JS.T.tokenArrayClose); +}this.isDotDot = false; +return 2; +}if (this.tokLastMath != 0) this.tokLastMath = tok; +if (this.flowContext != null && this.flowContext.token.tok == 102410 && this.flowContext.$var != null && tok != 102411 && tok != 102413 && this.lastToken.tok != 102410) return this.ERROR(1, this.ident); +if (this.lastToken.tok == 12290 && tok != 1073742332 && this.nTokens != 1) { +this.addTokenToPrefix(tok == 12290 ? this.lastToken : JS.T.o(4, this.ident)); +return 2; +}switch (tok) { +case 1073741824: +if (this.nTokens == 0 && !this.checkImpliedScriptCmd) { +if (this.ident.charAt(0) == '\'') { +this.addTokenToPrefix(this.setCommand(JS.T.tokenScript)); +this.cchToken = 0; +return 2; +}if (this.charAt(this.ichToken + this.cchToken) == '.') { +this.addTokenToPrefix(this.setCommand(JS.T.tokenScript)); +this.nTokens = 1; +this.cchToken = 0; +this.checkImpliedScriptCmd = true; +return 2; +}}break; +case 268442114: +if (this.nSemiSkip == this.forPoint3 && this.nTokens == this.ptSemi + 2) { +token = this.lastToken; +this.addTokenToPrefix(JS.T.tokenEquals); +this.addTokenToPrefix(token); +token = JS.T.getTokenFromName(this.ident.substring(0, 1)); +this.addTokenToPrefix(token); +this.addTokenToPrefix(JS.T.tokenLeftParen); +this.needRightParen = true; +return 2; +}this.checkNewSetCommand(); +if (this.tokCommand == 36867) { +this.tokenAndEquals = JS.T.getTokenFromName(this.ident.substring(0, 1)); +this.setEqualPt = this.ichToken; +return 0; +}if (this.tokCommand == 554176565 || this.tokCommand == 554176526) { +this.addTokenToPrefix(this.tokenCommand); +this.replaceCommand(JS.T.tokenSet); +this.tokenAndEquals = JS.T.getTokenFromName(this.ident.substring(0, 1)); +this.setEqualPt = this.ichToken; +return 0; +}return 2; +case 268441601: +case 268441602: +if (this.nTokens == 0) { +this.tokInitialPlusPlus = this.theToken.tok; +return 2; +}if (this.afterWhite == this.ichToken || this.afterMath == this.ichToken) this.theToken = JS.T.tv(this.theToken.tok, -1, this.theToken.value); +if (!this.isNewSet && this.nTokens == 1) this.checkNewSetCommand(); +if (this.isNewSet && this.parenCount == 0 && this.bracketCount == 0 && this.ichToken <= this.setEqualPt) { +this.tokenizePlusPlus(tok, false); +return 2; +} else if (this.nSemiSkip == this.forPoint3 && this.nTokens == this.ptSemi + 2) { +token = this.lastToken; +this.addTokenToPrefix(JS.T.tokenEquals); +this.addTokenToPrefix(token); +this.addTokenToPrefix(tok == 268441601 ? JS.T.tokenMinus : JS.T.tokenPlus); +this.addTokenToPrefix(JS.T.i(1)); +return 2; +}break; +case 268440324: +if (this.parenCount == 0 && this.bracketCount == 0) this.setEqualPt = this.ichToken; +break; +case 1073742336: +if (this.tokCommand == 36867 && this.parenCount == 0 && this.bracketCount == 0 && this.ichToken < this.setEqualPt && this.ltoken.size() > 1 && this.ltoken.get(1).tok == 1073742332) { +this.ltoken.set(0, JS.T.tokenSetProperty); +this.ltoken.add(1, JS.T.tokenExpressionBegin); +this.addTokenToPrefix(JS.T.tokenExpressionEnd); +this.setEqualPt = 0; +}break; +case 1073742332: +if (++this.braceCount == 1 && this.parenCount == 0 && this.checkFlowStartBrace(false)) { +this.isEndOfCommand = true; +var f = (this.flowContext != null && this.flowContext.addLine == 0 || this.forceFlowContext == null ? this.flowContext : this.forceFlowContext); +if (f != null) { +f.addLine = 0; +f.forceEndIf = false; +this.lastToken = JS.T.tokenLeftBrace; +this.forceFlowContext = f; +}return 2; +}this.parenCount++; +break; +case 268435968: +this.parenCount++; +if (this.nTokens > 1 && (this.lastToken.tok == 1275082241 || this.lastToken.tok == 134320648 || this.lastToken.tok == 134320649)) this.nSemiSkip += 2; +break; +case 1073742338: +if (this.iBrace > 0 && this.parenCount == 0 && this.braceCount == 0) { +this.ichBrace = this.ichToken; +if (this.nTokens == 0) { +this.braceCount = this.parenCount = 1; +} else { +if (!this.wasImpliedScript()) { +this.braceCount = this.parenCount = this.nSemiSkip = 0; +this.addBrace(this.theToken); +this.isEndOfCommand = true; +this.ichEnd = this.ichToken; +}return 2; +}}this.braceCount--; +case 268435969: +if (--this.parenCount < 0) return this.ERROR(16, this.ident); +if (this.parenCount == 0) this.nSemiSkip = 0; +if (this.needRightParen) { +this.addTokenToPrefix(JS.T.tokenRightParen); +this.needRightParen = false; +}break; +case 268437504: +if (this.ichToken > 0 && JU.PT.isWhitespace(this.script.charAt(this.ichToken - 1))) this.addTokenToPrefix(JS.T.tokenSpaceBeforeSquare); +this.bracketCount++; +break; +case 268437505: +this.bracketCount--; +if (this.bracketCount < 0) return this.ERROR(16, "]"); +break; +case 1073742337: +this.isDotDot = true; +this.addTokenToPrefix(JS.T.tokenArrayOpen); +return 2; +} +switch (this.lastToken.tok) { +case 1073742336: +case 1073742337: +case 268436992: +case 268437504: +return 0; +} +switch (tok) { +case 4134: +this.isPrivateFunc = true; +return 2; +case 102409: +if (this.tokCommand == 135174 || this.tokCommand == 4103 && this.nTokens == 1) return 0; +if (!this.haveENDIF) return 5; +case 364548: +if (this.flowContext != null) this.flowContext.forceEndIf = false; +case 364547: +if (this.nTokens > 0) { +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +}break; +case 134320648: +case 102411: +case 102413: +case 102402: +case 134320649: +case 102410: +case 102406: +case 102412: +if (this.nTokens > 1 && this.tokCommand != 36867 && this.nSemiSkip == 0) { +this.isEndOfCommand = true; +if (this.flowContext != null) this.flowContext.forceEndIf = true; +this.cchToken = 0; +return 2; +}break; +} +return 0; +}); +Clazz.defineMethod(c$, "tokenizePlusPlus", +function(tok, isPlusPlusX){ +if (isPlusPlusX) { +this.setCommand(JS.T.tokenSet); +if (this.nTokens == 1) this.ltoken.add(0, this.tokenCommand); +}this.nTokens = this.ltoken.size(); +this.addTokenToPrefix(JS.T.tokenEquals); +this.setEqualPt = 0; +for (var i = 1; i < this.nTokens; i++) this.addTokenToPrefix(this.ltoken.get(i)); + +this.addTokenToPrefix(tok == 268441601 ? JS.T.tokenMinus : JS.T.tokenPlus); +this.addTokenToPrefix(JS.T.i(1)); +}, "~N,~B"); +Clazz.defineMethod(c$, "checkNewSetCommand", +function(){ +var name = (this.nTokens == 0 ? "" : this.ltoken.get(0).value.toString()); +if (this.nTokens > 0 && !this.isContextVariable(name.toLowerCase())) return false; +var t = this.setNewSetCommand(false, name); +this.setCommand(JS.T.tokenSet); +this.ltoken.add(0, this.tokenCommand); +this.ltoken.set(1, t); +return true; +}); +Clazz.defineMethod(c$, "parseCommandParameter", +function(iLine, isFull){ +this.nTokens = this.ltoken.size(); +switch (this.tokCommand) { +case 0: +this.lastToken = JS.T.tokenOff; +this.ichCurrentCommand = this.ichEnd = this.ichToken; +this.setCommand(this.theToken); +if (this.logMessages) JU.Logger.info("compiling " + this.theToken); +var isFlowCmd = JS.T.tokAttr(this.tokCommand, 102400); +if (isFlowCmd) { +this.lastFlowCommand = this.tokenCommand; +}var ret = this.checkFlowEndBrace(); +if (ret == 4) return 4; + else if (ret == 2) { +this.isEndOfCommand = true; +this.cchToken = 0; +if (this.theTok == 268435968) this.parenCount--; +return 2; +}switch (this.theTok) { +case 1073742332: +break; +case 268436482: +this.braceCount++; +this.isEndOfCommand = true; +return 0; +case 102409: +return 0; +case 364547: +case 102402: +this.fixFlowAddLine(this.flowContext); +if (this.lltoken.get(this.iCommand - 1)[0].tok == 102409 && this.forceFlowContext != null && this.forceFlowContext.forceEndIf && this.forceFlowContext.addLine > 0 && this.isFlowIfContextOK(this.forceFlowContext)) { +this.flowContext = this.forceFlowContext; +this.flowContext.forceEndIf = true; +this.lltoken.removeItemAt(--this.iCommand); +} else if (this.flowContext != null && this.flowContext.addLine > 0) { +while (this.flowContext != null && !this.isFlowIfContextOK(this.flowContext)) { +if (this.flowContext.checkForceEndIf(0)) { +this.forceFlowEnd(this.flowContext.token); +this.processTokenList(iLine, isFull); +this.fixFlowAddLine(this.flowContext); +this.setCommand(this.theToken); +this.theTok = this.theToken.tok; +} else { +break; +}} +}default: +if (isFlowCmd) { +switch (this.checkFlowCommand(this.tokenCommand.value)) { +case 4: +return 4; +case 2: +return 2; +case 5: +return 5; +case 0: +this.theToken = this.tokenCommand; +if (this.theTok == 102411) { +this.addTokenToPrefix(this.tokenCommand); +this.theToken = JS.T.tokenLeftParen; +}return 0; +} +}if (this.flowContext != null && !this.haveENDIF && this.flowContext.addLine > 0) { +this.fixFlowAddLine(this.flowContext); +while (this.flowContext != null) { +if (this.flowContext.checkForceEndIf(0)) { +this.forceFlowEnd(this.flowContext.token); +this.processTokenList(iLine, isFull); +this.setCommand(this.theToken); +this.theTok = this.theToken.tok; +} else { +break; +}} +}if (this.theTok == 1073742338) { +this.forceFlowContext = null; +this.addBrace(this.tokenCommand); +this.tokCommand = 0; +return 2; +}this.lastFlowCommand = null; +} +if (this.theTok == 268438528) { +this.setCommand(this.theToken = JS.T.o(4143, "resume")); +this.addTokenToPrefix(this.theToken); +this.theToken = JS.T.o(14, "context"); +return 0; +}if (JS.T.tokAttr(this.tokCommand, 4096)) break; +this.isSetBrace = (this.theTok == 1073742332); +if (this.isSetBrace) { +if (!this.lookingAtSetBraceSyntax()) { +this.isEndOfCommand = true; +if (this.flowContext != null) this.flowContext.forceEndIf = false; +}} else { +switch (this.theTok) { +case 268441602: +case 268441601: +this.tokInitialPlusPlus = this.theTok; +this.tokCommand = 0; +return 2; +case 1073741824: +case 36868: +case 12290: +case 268435968: +break; +default: +if (!JS.T.tokAttr(this.theTok, 1073741824) && !JS.T.tokAttr(this.theTok, 536870912) && !this.isContextVariable(this.identLC)) { +this.commandExpected(); +return 4; +}} +}this.theToken = this.setNewSetCommand(this.isSetBrace, this.ident); +break; +case 102412: +switch (this.nTokens) { +case 1: +if (this.theTok != 268435968) return this.ERROR(15, "("); +break; +case 2: +if (this.theTok != 268435969) (this.tokenCommand).name0 = this.ident; +this.newContextVariable(this.ident); +break; +case 3: +if (this.theTok != 268435969) return this.ERROR(15, ")"); +this.isEndOfCommand = true; +this.ichEnd = this.ichToken + 1; +this.flowContext.setLine(); +break; +default: +return this.ERROR(0); +} +break; +case 102436: +case 134320141: +if (this.tokenCommand.intValue == 0) { +if (this.nTokens != 1) break; +this.tokenCommand.value = this.ident; +return 2; +}if (this.nTokens == 1) { +if (this.thisFunction != null) this.vFunctionStack.add(0, this.thisFunction); +this.thisFunction = (this.tokCommand == 102436 ? J.api.Interface.getInterface("JS.ScriptParallelProcessor", null, null) : new JS.ScriptFunction(this.ident, this.tokCommand)); +this.thisFunction.set(this.ident, this.tokCommand); +this.thisFunction.isPrivate = this.isStateScript || this.isPrivateScript || this.isPrivateFunc; +this.isPrivateFunc = false; +this.htUserFunctions.put(this.ident, Boolean.TRUE); +this.flowContext.setFunction(this.thisFunction); +break; +}if (this.nTokens == 2) { +if (this.theTok != 268435968) return this.ERROR(15, "("); +break; +}if (this.nTokens == 3 && this.theTok == 268435969) break; +if (this.nTokens % 2 == 0) { +if (this.theTok != 268436992 && this.theTok != 268435969) return this.ERROR(15, ")"); +break; +}this.thisFunction.addVariable(this.ident, true); +break; +case 102411: +if (this.nTokens > 1 && this.parenCount == 0 && this.braceCount == 0 && this.theTok == 268436482) { +this.addTokenToPrefix(JS.T.tokenRightParen); +this.braceCount = 1; +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +}break; +case 102413: +if (this.nTokens > 1) { +this.braceCount = 1; +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +}break; +case 364547: +if (this.nTokens == 1 && this.theTok != 134320649) { +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +}if (this.nTokens != 1 || this.theTok != 134320649 && this.theTok != 1073742332) return this.ERROR(0); +this.replaceCommand(this.flowContext.token = JS.ContextToken.newCmd(102402, "elseif")); +this.tokCommand = 102402; +return 2; +case 102409: +if (this.nTokens != 1) return this.ERROR(0); +if (!this.checkFlowEnd(this.theTok, this.ident, this.ichCurrentCommand, true)) return 4; +if (this.theTok == 134320141 || this.theTok == 102436) { +return 2; +}break; +case 134320648: +if (this.nTokens == 1) { +if (this.theTok != 268435968) return this.ERROR(19, this.ident); +this.forPoint3 = this.nSemiSkip = 0; +this.nSemiSkip += 2; +break; +}if (this.nTokens == 3 && this.tokAt(2) == 36868) { +this.newContextVariable(this.ident); +break; +}if ((this.nTokens == 3 || this.nTokens == 4) && this.theTok == 1275068432) { +this.nSemiSkip -= 2; +this.forPoint3 = 2; +this.addTokenToPrefix(this.theToken); +this.theToken = JS.T.tokenLeftParen; +break; +}case 102410: +case 102406: +case 102402: +case 134320649: +if (this.nTokens <= 2 || this.braceCount != 0 || this.parenCount != 0) break; +case 102439: +this.isEndOfCommand = true; +this.ichEnd = this.ichToken + 1; +this.flowContext.setLine(); +break; +case 36868: +if (this.nTokens == 1) { +this.replaceCommand(JS.T.tokenSetVar); +this.newContextVariable(this.ident); +break; +} else if (this.ident.equals(",")) { +return 2; +} else if (!JU.PT.isLetter(this.ident.charAt(0))) { +if (this.nTokens != 2 || this.ident.equals("[")) return this.ERROR(0); +this.replaceCommand(JS.T.tokenSet); +} else { +this.newContextVariable(this.ident); +break; +}case 36867: +if (this.theTok == 1073742332) this.setBraceCount++; + else if (this.theTok == 1073742338) { +this.setBraceCount--; +if (this.isSetBrace && this.setBraceCount == 0 && this.ptNewSetModifier == 2147483647) this.ptNewSetModifier = this.nTokens + 1; +}if (this.nTokens == this.ptNewSetModifier) { +var token = this.tokenAt(0); +if (this.theTok == 268435968 || this.isUserFunction(token.value.toString())) { +this.ltoken.set(0, this.setCommand(JS.T.tv(1073741824, 0, token.value))); +this.setBraceCount = 0; +break; +}if (this.theTok != 1073741824 && this.theTok != 268442114 && this.theTok != 12290 && (!JS.T.tokAttr(this.theTok, 536870912))) { +if (this.isNewSet) this.commandExpected(); + else this.errorIntStr2(18, "SET", ": " + this.ident); +return 4; +}if (this.nTokens == 1 && (this.lastToken.tok == 268441602 || this.lastToken.tok == 268441601)) { +this.replaceCommand(JS.T.tokenSet); +this.addTokenToPrefix(this.lastToken); +break; +}}break; +case 134223363: +if (this.theTok == 12290 && (this.nTokens == 1 || this.lastToken.tok == 1073741940 || this.lastToken.tok == 134217764)) { +this.addTokenToPrefix(JS.T.tokenDefineString); +return 2; +}if (this.theTok == 1073741848) this.iHaveQuotedString = false; +break; +case 12290: +if (this.nTokens == 1) { +if (this.theTok != 1073741824) { +if (this.preDefining) { +if (!JS.T.tokAttr(this.theTok, 2097152)) { +this.errorStr2("ERROR IN Token.java or JmolConstants.java -- the following term was used in JmolConstants.java but not listed as predefinedset in Token.java: " + this.ident, null); +return 4; +}} else if (JS.T.tokAttr(this.theTok, 2097152)) { +JU.Logger.warn("WARNING: predefined term '" + this.ident + "' has been redefined by the user until the next file load."); +} else if (!this.isCheckOnly && this.ident.length > 1) { +JU.Logger.warn("WARNING: redefining " + this.ident + "; was " + this.theToken + "not all commands may continue to be functional for the life of the applet!"); +this.theTok = this.theToken.tok = 1073741824; +JS.T.addToken(this.ident, this.theToken); +}}this.addTokenToPrefix(this.theToken); +this.lastToken = JS.T.tokenComma; +return 2; +}if (this.nTokens == 2) { +if (this.theTok == 268440324) { +this.ltoken.add(0, JS.T.tokenSet); +return 2; +}}break; +case 135190: +case 135188: +case 135180: +var ch = this.charAt(this.ichToken + this.cchToken); +if (this.parenCount == 0 && this.bracketCount == 0 && ".:/\\+-!?".indexOf(ch) >= 0 && !(ch == '-' && this.ident.equals("="))) this.checkUnquotedFileName(); +break; +} +return 0; +}, "~N,~B"); +Clazz.defineMethod(c$, "setNewSetCommand", +function(isSetBrace, ident){ +this.tokCommand = 36867; +this.isNewSet = (!isSetBrace && !this.isUserFunction(ident)); +this.setBraceCount = (isSetBrace ? 1 : 0); +this.bracketCount = 0; +this.setEqualPt = 2147483647; +this.ptNewSetModifier = (this.isNewSet ? (ident.equals("(") ? 2 : 1) : 2147483647); +return ((isSetBrace || this.theToken.tok == 268435968 || this.theToken.tok == 536870918 || this.theToken.tok == 268441602 || this.theToken.tok == 268441601) ? this.theToken : JS.T.o(1073741824, ident)); +}, "~B,~S"); +Clazz.defineMethod(c$, "checkUnquotedFileName", +function(){ +var ichT = this.ichToken; +var ch; +while (++ichT < this.cchScript && !JU.PT.isWhitespace(ch = this.script.charAt(ichT)) && ch != '#' && ch != ';' && ch != '}') { +} +var name = this.script.substring(this.ichToken, ichT).$replace('\\', '/'); +this.cchToken = ichT - this.ichToken; +this.theToken = JS.T.o(4, name); +}); +Clazz.defineMethod(c$, "checkFlowStartBrace", +function(atEnd){ +var tok = this.tokCommand; +switch (tok) { +default: +if (JS.T.tokAttr(tok, 102400)) { +if (atEnd) { +switch (tok) { +case 102411: +case 102413: +break; +default: +this.flowContext.addLine = 0; +this.addBrace(this.tokenCommand); +this.lastFlowCommand = null; +break; +} +this.parenCount = this.braceCount = 0; +}return true; +}case 102407: +case 102408: +return false; +} +}, "~B"); +Clazz.defineMethod(c$, "checkFlowEndBrace", +function(){ +if (this.iBrace <= 0 || this.vBraces.get(this.iBrace - 1).tok != 1073742338) return 0; +this.vBraces.removeItemAt(--this.iBrace); +var token = this.vBraces.removeItemAt(--this.iBrace); +if (this.theTok == 1073742332) { +this.braceCount--; +this.parenCount--; +}if (token.tok == 1275335685) { +this.vPush.removeItemAt(--this.pushCount); +this.addTokenToPrefix(this.setCommand(JS.ContextToken.newContext(false))); +this.isEndOfCommand = true; +return 2; +}switch (this.flowContext == null ? 0 : this.flowContext.token.tok) { +case 134320649: +case 102402: +case 364547: +if (this.tokCommand == 364547 || this.tokCommand == 102402) return 0; +break; +case 102410: +case 102411: +case 102413: +if (this.tokCommand == 102411 || this.tokCommand == 102413) return 0; +} +return this.forceFlowEnd(token); +}); +Clazz.defineMethod(c$, "forceFlowEnd", +function(token){ +var t0 = this.tokenCommand; +this.forceFlowContext = this.flowContext; +token = this.flowStart(token); +if (!this.checkFlowEnd(token.tok, token.value, this.ichBrace, false)) return 4; +switch (token.tok) { +case 134320141: +case 102436: +case 364558: +break; +default: +this.addTokenToPrefix(token); +} +this.setCommand(t0); +return 2; +}, "JS.T"); +Clazz.defineMethod(c$, "flowStart", +function(token){ +switch (token.tok) { +case 134320649: +case 364547: +case 102402: +return JS.T.tokenIf; +case 102413: +case 102411: +return JS.T.tokenSwitch; +default: +return JS.T.getTokenFromName(token.value); +} +}, "JS.T"); +c$.isBreakableContext = Clazz.defineMethod(c$, "isBreakableContext", +function(tok){ +return tok == 134320648 || tok == 102439 || tok == 102406 || tok == 102411 || tok == 102413; +}, "~N"); +Clazz.defineMethod(c$, "checkFlowCommand", +function(ident){ +var pt = this.lltoken.size(); +switch (this.tokCommand) { +case 364548: +if (!this.isFlowIfContextOK(this.flowContext)) { +if (!this.haveENDIF) return 5; +this.errorStr(1, ident); +return 4; +}this.flowContext.token.intValue = this.flowContext.setPt0(pt, false); +this.setFlowEnd(this.tokCommand, ident); +this.flowContext = this.flowContext.parent; +return 0; +case 102407: +case 102408: +var f = (this.flowContext == null ? null : this.flowContext.getBreakableContext(0)); +if (this.tokCommand == 102408) while (f != null && f.token.tok != 134320648 && f.token.tok != 102406) f = f.parent; + +if (f == null) { +this.errorStr(1, ident); +return 4; +}this.setCommand(JS.T.tv(this.tokCommand, f.pt0, ident)); +this.theToken = this.tokenCommand; +return 1; +case 134320141: +case 102436: +if (this.flowContext != null) { +this.errorStr(1, JS.T.nameOf(this.tokCommand)); +return 4; +}break; +case 134320649: +case 364558: +case 102412: +case 134320648: +case 102439: +case 102410: +case 102406: +break; +case 102402: +case 364547: +if (this.flowContext != null && !this.isFlowIfContextOK(this.flowContext)) { +this.flowContext = this.flowContext.parent; +}if (!this.isFlowIfContextOK(this.flowContext)) { +if (!this.haveENDIF) return 5; +this.errorStr(1, ident); +return 4; +}this.flowContext.token.intValue = this.flowContext.setPt0(pt, false); +break; +case 102411: +case 102413: +if (this.flowContext == null || this.flowContext.token.tok != 102410 && this.flowContext.token.tok != 102411 && (this.tokCommand == 102413 ? this.flowContext.ptDefault > 0 : this.flowContext.token.tok != 102413)) { +this.errorStr(1, ident); +return 4; +}this.flowContext.token.intValue = this.flowContext.setPt0(pt, this.tokCommand == 102413); +break; +} +var ct = JS.ContextToken.newCmd(this.tokCommand, this.tokenCommand.value); +if (this.tokCommand == 102410) ct.addName("_var"); +this.setCommand(ct); +switch (this.tokCommand) { +case 364558: +this.flowContext = new JS.ScriptFlowContext(this, ct, pt, this.flowContext, this.ichCurrentCommand, this.lineCurrent); +if (this.thisFunction != null) this.vFunctionStack.add(0, this.thisFunction); +this.thisFunction = new JS.ScriptFunction("", 364558); +this.flowContext.setFunction(this.thisFunction); +this.pushContext(ct); +break; +case 102411: +case 102413: +ct.contextVariables = this.flowContext.token.contextVariables; +case 364547: +case 102402: +this.flowContext.token = ct; +break; +case 102439: +case 134320648: +case 102406: +case 102412: +this.pushContext(ct); +case 134320649: +case 102410: +default: +this.flowContext = new JS.ScriptFlowContext(this, ct, pt, this.flowContext, this.ichCurrentCommand, this.lineCurrent); +} +return 0; +}, "~S"); +Clazz.defineMethod(c$, "setFlowEnd", +function(tokCommand, ident){ +this.setCommand(JS.T.tv(tokCommand, (this.flowContext.ptDefault > 0 ? this.flowContext.ptDefault : -this.flowContext.pt0), ident)); +}, "~N,~S"); +Clazz.defineMethod(c$, "isFlowIfContextOK", +function(f){ +switch (f == null ? 0 : f.token.tok) { +case 134320649: +case 102402: +return true; +case 364547: +return this.tokCommand != 364547; +} +return false; +}, "JS.ScriptFlowContext"); +Clazz.defineMethod(c$, "checkFlowEnd", +function(tok, ident, pt1, isExplicitEnd){ +if (isExplicitEnd) { +if (this.flowContext == null) return this.errorStr(1, "end " + ident); +this.flowContext.addLine = 0; +this.flowContext.forceEndIf = false; +switch (this.flowContext.token.tok) { +case 134320141: +case 102436: +case 364558: +break; +default: +this.setFlowEnd(102409, "end"); +this.ltoken.set(0, this.tokenCommand); +} +} else { +this.setFlowEnd(102409, "end"); +this.addTokenToPrefix(this.tokenCommand); +}if (this.flowContext == null || tok != this.flowContext.tok0) return this.errorStr(1, "end " + ident); +var pt = this.lltoken.size(); +this.flowContext.token.intValue = (this.tokCommand == 102412 ? -pt : pt); +switch (tok) { +case 134320649: +case 102410: +break; +case 102412: +case 134320648: +case 102439: +case 102406: +if (!isExplicitEnd) this.vPush.removeItemAt(--this.pushCount); +break; +case 102436: +case 134320141: +case 364558: +if (!this.isCheckOnly) { +this.addTokenToPrefix(JS.T.o(tok, this.thisFunction)); +JS.ScriptFunction.setFunction(this.thisFunction, this.script, pt1, this.lltoken.size(), this.lineNumbers, this.lineIndices, this.lltoken); +}this.thisFunction = (this.vFunctionStack.size() == 0 ? null : this.vFunctionStack.removeItemAt(0)); +this.tokenCommand.intValue = 0; +if (tok == 364558) this.vPush.removeItemAt(--this.pushCount); +break; +default: +return this.errorStr(19, "end " + ident); +} +this.flowContext = this.flowContext.parent; +this.fixFlowAddLine(this.flowContext); +return true; +}, "~N,~S,~N,~B"); +Clazz.defineMethod(c$, "fixFlowAddLine", +function(flowContext){ +while (flowContext != null) { +if (flowContext.addLine > 0 || flowContext.forceEndIf) { +flowContext.addLine = this.lineCurrent - flowContext.ptLine; +flowContext.forceEndIf = true; +}flowContext = flowContext.parent; +} +}, "JS.ScriptFlowContext"); +Clazz.defineMethod(c$, "getData", +function(key){ +this.addTokenToPrefix(JS.T.o(4, key)); +this.ichToken += key.length + 2; +if (this.charAt(this.ichToken) == '\r') { +this.lineCurrent++; +this.ichToken++; +}if (this.charAt(this.ichToken) == '\n') { +this.lineCurrent++; +this.ichToken++; +}var i = this.script.indexOf(this.chFirst + key + this.chFirst, this.ichToken) - 4; +if (i < 0 || !this.script.substring(i, i + 4).equalsIgnoreCase("END ")) return false; +var str = this.script.substring(this.ichToken, i); +this.incrementLineCount(str); +this.addTokenToPrefix(JS.T.o(134221834, str)); +this.addTokenToPrefix(JS.T.o(1073741824, "end")); +this.addTokenToPrefix(JS.T.o(4, key)); +this.cchToken = i - this.ichToken + key.length + 6; +return true; +}, "~S"); +Clazz.defineMethod(c$, "incrementLineCount", +function(str){ +var ch; +var pt = str.indexOf('\r'); +var pt2 = str.indexOf('\n'); +if (pt < 0 && pt2 < 0) return 0; +var n = this.lineCurrent; +if (pt < 0 || pt2 < pt) pt = pt2; +for (var i = str.length; --i >= pt; ) { +if ((ch = str.charAt(i)) == '\n' || ch == '\r') this.lineCurrent++; +} +return this.lineCurrent - n; +}, "~S"); +c$.isSpaceOrTab = Clazz.defineMethod(c$, "isSpaceOrTab", +function(ch){ +return ch == ' ' || ch == '\t'; +}, "~S"); +Clazz.defineMethod(c$, "eol", +function(ch){ +return (ch == '\0' || ch == '\r' || ch == '\n' || ch == ';' && this.nSemiSkip <= 0); +}, "~S"); +Clazz.defineMethod(c$, "lookingAtSetBraceSyntax", +function(){ +var ichT = this.ichToken; +var nParen = 1; +while (++ichT < this.cchScript && nParen > 0) { +switch ((this.script.charAt(ichT)).charCodeAt(0)) { +case 123: +nParen++; +break; +case 125: +nParen--; +break; +} +} +if (this.charAt(ichT) == '[' && ++nParen == 1) while (++ichT < this.cchScript && nParen > 0) { +switch ((this.script.charAt(ichT)).charCodeAt(0)) { +case 91: +nParen++; +break; +case 93: +if (this.charAt(ichT + 1) == '[') ichT++; + else nParen--; +break; +} +} +if (this.charAt(ichT) == '.' && nParen == 0) { +return true; +}return false; +}); +Clazz.defineMethod(c$, "lookingAtString", +function(allowPrime){ +if (this.ichToken + 2 > this.cchScript) return false; +this.chFirst = this.script.charAt(this.ichToken); +if (this.chFirst != '"' && (!allowPrime || this.chFirst != '\'')) return false; +var ichT = this.ichToken; +var ch; +var previousCharBackslash = false; +while (++ichT < this.cchScript) { +ch = this.script.charAt(ichT); +if (ch == this.chFirst && !previousCharBackslash) break; +previousCharBackslash = (ch == '\\' ? !previousCharBackslash : false); +} +if (ichT == this.cchScript) { +this.cchToken = -1; +this.ichEnd = this.cchScript; +} else { +this.cchToken = ++ichT - this.ichToken; +}return true; +}, "~B"); +Clazz.defineMethod(c$, "getUnescapedStringLiteral", +function(isFileName){ +if (isFileName) { +var s = this.script.substring(this.ichToken + 1, this.ichToken + this.cchToken - 1); +if (s.indexOf("\\u") >= 0) s = JU.Escape.unescapeUnicode(s); +if (s.indexOf(";base64,") != 0) return s; +}return JS.ScriptCompiler.unescapeString(this.script, this.ichToken + 1, this.cchToken - 2); +}, "~B"); +c$.unescapeString = Clazz.defineMethod(c$, "unescapeString", +function(script, ich, nChar){ +var sb = JU.SB.newN(nChar); +var ichMax = ich + nChar; +while (ich < ichMax) { +var ch = script.charAt(ich++); +if (ch == '\\' && ich < ichMax) { +ch = script.charAt(ich++); +switch ((ch).charCodeAt(0)) { +case 110: +ch = '\n'; +break; +case 116: +ch = '\t'; +break; +case 114: +ch = '\r'; +case 34: +case 92: +case 39: +break; +case 120: +case 117: +var digitCount = ch == 'x' ? 2 : 4; +if (ich < ichMax) { +var unicode = 0; +for (var k = digitCount; --k >= 0 && ich < ichMax; ) { +var chT = script.charAt(ich); +var hexit = JU.Escape.getHexitValue(chT); +if (hexit < 0) break; +unicode <<= 4; +unicode += hexit; +++ich; +} +ch = String.fromCharCode(unicode); +}} +}sb.appendC(ch); +} +return sb.toString(); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "lookingAtLoadFormat", +function(allchar){ +var ichT = this.ichToken; +var ch; +while ((JU.PT.isLetterOrDigit(ch = this.charAt(ichT)) && (allchar || JU.PT.isLetter(ch)) || allchar && (!this.eol(ch) && !JU.PT.isWhitespace(ch)))) ++ichT; + +if (!allchar && ichT == this.ichToken || !JS.ScriptCompiler.isSpaceOrTab(ch)) return false; +this.cchToken = ichT - this.ichToken; +return true; +}, "~B"); +Clazz.defineMethod(c$, "lookingAtImpliedString", +function(allowSpace, allowEquals, allowSptParen, allowSemicolon){ +var ichT = this.ichToken; +var ch = this.script.charAt(ichT); +var isID = (this.lastToken.tok == 1073741974); +var passVariableToString = (JS.T.tokAttr(this.tokCommand, 20480) && (this.tokCommand & 1) == 1); +var isVariable = (ch == '@'); +var isMath = (isVariable && ichT + 3 < this.cchScript && this.script.charAt(ichT + 1) == '{'); +if (isMath && (isID || !passVariableToString)) return false; +var ptSpace = -1; +var ptLastChar = -1; +var isOK = true; +var parenpt = 0; +while (isOK && (!this.eol(ch = this.charAt(ichT)) || allowSemicolon && ch == ';')) { +switch ((ch).charCodeAt(0)) { +case 59: +if (ichT + 5 > this.cchScript || ichT + 2 < this.cchScript && (".01234567890-".indexOf(this.script.charAt(ichT + 1)) < 0 || this.script.charAt(ichT + 2) == '-')) { +isOK = false; +continue; +}break; +case 40: +if (!allowSptParen) { +if (this.tokCommand == 4124 || ichT >= 5 && (this.script.substring(ichT - 4, ichT).equals(".spt") || this.script.substring(ichT - 4, ichT).equals(".png") || this.script.substring(ichT - 5, ichT).equals(".pngj"))) { +isOK = false; +continue; +}}break; +case 61: +if (!allowEquals) { +isOK = false; +continue; +}break; +case 123: +parenpt++; +break; +case 125: +parenpt--; +if (parenpt < 0 && (this.braceCount > 0 || this.iBrace > 0)) { +isOK = false; +continue; +}default: +if (JU.PT.isWhitespace(ch)) { +if (ptSpace < 0) ptSpace = ichT; +} else { +ptLastChar = ichT; +}break; +} +++ichT; +} +if (isVariable && (ptSpace < 0 || ptSpace > ptLastChar)) { +return false; +}if (allowSpace) ichT = ptLastChar + 1; + else if (ptSpace > 0) ichT = ptSpace; +if (isVariable && (!allowSpace || ptSpace < 0 && parenpt <= 0 && ichT - this.ichToken > 1)) { +return false; +}return (this.cchToken = ichT - this.ichToken) > 0; +}, "~B,~B,~B,~B"); +Clazz.defineMethod(c$, "lookingAtExponential", +function(){ +if (this.ichToken == this.cchScript) return null; +var ichT = this.ichToken; +var pt0 = ichT; +if (this.script.charAt(ichT) == '-') ++ichT; +var isOK = false; +var ch = 'X'; +while (JU.PT.isDigit(ch = this.charAt(ichT))) { +++ichT; +isOK = true; +} +if (ichT < this.cchScript && ch == '.') ++ichT; +while (JU.PT.isDigit(ch = this.charAt(ichT))) { +++ichT; +isOK = true; +} +if (ichT == this.cchScript || !isOK) return null; +isOK = (ch != 'E' && ch != 'e'); +if (isOK || ++ichT == this.cchScript) return null; +ch = this.script.charAt(ichT); +if (ch == '-' || ch == '+') ichT++; +while (JU.PT.isDigit(this.charAt(ichT))) { +ichT++; +isOK = true; +} +if (!isOK) return null; +this.cchToken = ichT - this.ichToken; +return Float.$valueOf(JU.PT.dVal(this.script.substring(pt0, ichT))); +}); +Clazz.defineMethod(c$, "lookingAtDecimal", +function(){ +if (this.ichToken == this.cchScript) return false; +var ichT = this.ichToken; +if (this.script.charAt(ichT) == '-') ++ichT; +var digitSeen = false; +var ch; +while (JU.PT.isDigit(ch = this.charAt(ichT++))) digitSeen = true; + +if (ch != '.') return false; +var ch1 = this.charAt(ichT); +if (!JS.ScriptCompiler.isSpaceOrTab(ch1) && !this.eol(ch1)) { +if (JU.PT.isLetter(ch1) || ch1 == '?' || ch1 == '*' || ch1 == '_') return false; +if (JU.PT.isLetter(ch1 = this.charAt(ichT + 1)) || ch1 == '?') return false; +}while (JU.PT.isDigit(this.charAt(ichT))) { +++ichT; +digitSeen = true; +} +this.cchToken = ichT - this.ichToken; +return digitSeen; +}); +Clazz.defineMethod(c$, "lookingAtSeqcode", +function(){ +var ichT = this.ichToken; +var ch; +if (this.charAt(ichT + 1) == '^' && this.script.charAt(ichT) == '*') { +ch = '^'; +++ichT; +} else { +if (this.script.charAt(ichT) == '-') ++ichT; +while (JU.PT.isDigit(ch = this.charAt(ichT))) ++ichT; + +}if (ch != '^') return false; +ichT++; +if (ichT == this.cchScript) ch = ' '; + else ch = this.script.charAt(ichT++); +if (ch != ' ' && ch != '*' && ch != '?' && !JU.PT.isLetter(ch)) return false; +this.cchToken = ichT - this.ichToken; +return true; +}); +Clazz.defineMethod(c$, "lookingAtInteger", +function(){ +if (this.ichToken == this.cchScript) return 2147483647; +var ichT = this.ichToken; +if (this.script.charAt(this.ichToken) == '-') ++ichT; +var ichBeginDigits = ichT; +while (JU.PT.isDigit(this.charAt(ichT))) ++ichT; + +if (ichBeginDigits == ichT) return 2147483647; +this.cchToken = ichT - this.ichToken; +try { +var val = Integer.parseInt(this.ident = this.script.substring(this.ichToken, ichT)); +return val; +} catch (e) { +if (Clazz.exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +return 2147483647; +}); +Clazz.defineMethod(c$, "lookingAtBitset", +function(){ +if (this.script.indexOf("({null})", this.ichToken) == this.ichToken) { +this.cchToken = 8; +return new JU.BS(); +}var ichT; +if (this.ichToken + 4 > this.cchScript || this.script.charAt(this.ichToken + 1) != '{' || (ichT = this.script.indexOf("}", this.ichToken)) < 0 || ichT + 1 == this.cchScript) return null; +var bs = JU.BS.unescape(this.script.substring(this.ichToken, ichT + 2)); +if (bs != null) this.cchToken = ichT + 2 - this.ichToken; +return bs; +}); +Clazz.defineMethod(c$, "lookingAtObjectID", +function(){ +var allowWildID = (this.nTokens == 1); +var ichT = this.ichToken; +if (this.charAt(ichT) != '$') return false; +if (this.charAt(++ichT) == '"') return false; +while (ichT < this.cchScript) { +var ch; +if (JU.PT.isWhitespace(ch = this.script.charAt(ichT))) { +if (ichT == this.ichToken + 1) return false; +break; +}if (!JU.PT.isLetterOrDigit(ch)) { +switch ((ch).charCodeAt(0)) { +default: +return false; +case 42: +if (!allowWildID) return false; +break; +case 126: +case 95: +break; +} +}ichT++; +} +this.cchToken = ichT - (++this.ichToken); +return true; +}); +Clazz.defineMethod(c$, "lookingAtLookupToken", +function(ichT){ +if (ichT == this.cchScript) return false; +var ichT0 = ichT; +this.afterMath = (this.tokLastMath != 0 ? ichT : 0); +this.tokLastMath = 0; +var ch; +switch ((ch = this.script.charAt(ichT++)).charCodeAt(0)) { +case 45: +case 43: +case 38: +case 124: +case 42: +if (ichT < this.cchScript) { +if (this.script.charAt(ichT) == ch) { +++ichT; +if (ch == '-' || ch == '+') break; +if (ch == '&' && this.charAt(ichT) == ch) ++ichT; +} else if (this.script.charAt(ichT) == '=') { +++ichT; +}}this.tokLastMath = 1; +break; +case 47: +if (this.charAt(ichT) == '/') break; +case 92: +case 33: +if (this.charAt(ichT) == '=') ++ichT; +this.tokLastMath = 1; +break; +case 41: +case 93: +case 125: +break; +case 46: +if (this.charAt(ichT) == '.') ++ichT; +this.tokLastMath = 1; +break; +case 64: +case 123: +this.tokLastMath = 2; +break; +case 58: +this.tokLastMath = 1; +break; +case 40: +case 44: +case 36: +case 59: +case 91: +case 37: +this.tokLastMath = 1; +break; +case 60: +case 61: +case 62: +if ((ch = this.charAt(ichT)) == '<' || ch == '=' || ch == '>') ++ichT; +this.tokLastMath = 1; +break; +default: +if (!JU.PT.isLetter(ch) && !this.isDotDot) return false; +case 126: +case 95: +case 39: +case 63: +if (ch == '?') this.tokLastMath = 1; +while (JU.PT.isLetterOrDigit(ch = this.charAt(ichT)) || ch == '_' || ch == '*' && this.charAt(ichT - 1) == '?' || ch == '?' || ch == '~' || ch == '\'' || ch == '\\' && this.charAt(ichT + 1) == '?' || ch == '^' && ichT > ichT0 && JU.PT.isDigit(this.charAt(ichT - 1))) ++ichT; + +break; +} +this.cchToken = ichT - ichT0; +return true; +}, "~N"); +Clazz.defineMethod(c$, "lookForSyncID", +function(){ +var ch; +if ((ch = this.charAt(this.ichToken)) == '"' || ch == '@' || ch == '\0') return false; +var ichT = this.ichToken; +while (!JS.ScriptCompiler.isSpaceOrTab(ch = this.charAt(ichT)) && ch != '#' && ch != '}' && !this.eol(ch)) ++ichT; + +this.cchToken = ichT - this.ichToken; +return true; +}); +Clazz.defineMethod(c$, "ERROR", +function(error){ +this.errorIntStr2(error, null, null); +return 4; +}, "~N"); +Clazz.defineMethod(c$, "ERROR", +function(error, value){ +this.errorStr(error, value); +return 4; +}, "~N,~S"); +Clazz.defineMethod(c$, "handleError", +function(){ +this.errorType = this.errorMessage; +var s = this.script; +var igui = s.indexOf("; ## GUI ##"); +if (igui < 0) igui = this.ichEnd; +this.errorLine = s.substring(this.ichCurrentCommand, Math.min(igui, this.ichEnd <= this.ichCurrentCommand ? this.ichToken + this.cchToken : this.ichEnd)); +var lineInfo = (this.ichToken < this.ichEnd ? this.errorLine.substring(0, this.ichToken - this.ichCurrentCommand) + " >>>> " + this.errorLine.substring(this.ichToken - this.ichCurrentCommand) : this.errorLine) + " <<<<"; +this.errorMessage = J.i18n.GT.$("script compiler ERROR: ") + this.errorMessage + JS.ScriptError.getErrorLineMessage(null, this.filename, this.lineCurrent, this.iCommand, lineInfo); +if (!this.isSilent) { +this.ichToken = Math.max(this.ichEnd, this.ichToken); +while (!this.lookingAtEndOfLine() && !this.lookingAtTerminator()) this.ichToken++; + +this.errorLine = this.script.substring(this.ichCurrentCommand, this.ichToken); +this.vwr.addCommand(this.errorLine + "#??"); +JU.Logger.error(this.errorMessage); +}return false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptContext.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptContext.js new file mode 100755 index 000000000000..14b5cbf29848 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptContext.js @@ -0,0 +1,115 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.ScriptContext", ["java.util.Hashtable", "JS.SV"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.aatoken = null; +this.allowJSThreads = false; +this.chk = false; +this.contextPath = " >> "; +this.vars = null; +this.displayLoadErrorsSave = false; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorType = null; +this.executionPaused = false; +this.executionStepping = false; +this.isEditor = false; +this.isEditorScript = false; +this.functionName = null; +this.iCommandError = -1; +this.id = 0; +this.isComplete = true; +this.isFunction = false; +this.isJSThread = false; +this.isStateScript = false; +this.isTryCatch = false; +this.forVars = null; +this.iToken = 0; +this.lineEnd = 2147483647; +this.lineIndices = null; +this.lineNumbers = null; +this.mustResumeEval = false; +this.outputBuffer = null; +this.parallelProcessor = null; +this.parentContext = null; +this.pc = 0; +this.pc0 = 0; +this.pcEnd = 2147483647; +this.script = null; +this.scriptExtensions = null; +this.scriptFileName = null; +this.scriptLevel = 0; +this.statement = null; +this.htFileCache = null; +this.statementLength = 0; +this.token = null; +this.tryPt = 0; +this.theToken = null; +this.theTok = 0; +this.pointers = null; +this.why = null; +this.privateFuncs = null; +Clazz.instantialize(this, arguments);}, JS, "ScriptContext", null); +Clazz.makeConstructor(c$, +function(){ +this.id = ++JS.ScriptContext.contextCount; +}); +Clazz.defineMethod(c$, "setMustResume", +function(){ +var sc = this; +while (sc != null) { +sc.mustResumeEval = true; +sc.pc = sc.pc0; +sc = sc.parentContext; +} +}); +Clazz.defineMethod(c$, "getVariable", +function($var){ +var context = this; +var v; +while (context != null && !context.isFunction) { +if (context.vars != null && (v = context.vars.get($var)) != null) return v; +context = context.parentContext; +} +return null; +}, "~S"); +Clazz.defineMethod(c$, "getFullMap", +function(){ +var ht = new java.util.Hashtable(); +var context = this; +if (this.contextPath != null) ht.put("_path", JS.SV.newS(this.contextPath)); +while (context != null && !context.isFunction) { +if (context.vars != null) for (var key, $key = context.vars.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (!ht.containsKey(key)) { +var val = context.vars.get(key); +if (val.tok != 2 || val.intValue != 2147483647) ht.put(key, val); +} +context = context.parentContext; +} +return ht; +}); +Clazz.defineMethod(c$, "saveTokens", +function(aa){ +this.aatoken = aa; +if (aa == null) { +this.pointers = null; +return; +}this.pointers = Clazz.newIntArray (aa.length, 0); +for (var i = this.pointers.length; --i >= 0; ) this.pointers[i] = (aa[i] == null ? -1 : aa[i][0].intValue); + +}, "~A"); +Clazz.defineMethod(c$, "restoreTokens", +function(){ +if (this.pointers != null) for (var i = this.pointers.length; --i >= 0; ) if (this.aatoken[i] != null) this.aatoken[i][0].intValue = this.pointers[i]; + +return this.aatoken; +}); +Clazz.defineMethod(c$, "getTokenCount", +function(){ +return (this.aatoken == null ? -1 : this.aatoken.length); +}); +Clazz.defineMethod(c$, "getToken", +function(i){ +return this.aatoken[i]; +}, "~N"); +c$.contextCount = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptDelayThread.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptDelayThread.js new file mode 100755 index 000000000000..945177d9a918 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptDelayThread.js @@ -0,0 +1,52 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.thread.JmolThread"], "JS.ScriptDelayThread", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.millis = 0; +this.seconds = 0; +this.doPopPush = false; +this.isPauseDelay = false; +Clazz.instantialize(this, arguments);}, JS, "ScriptDelayThread", J.thread.JmolThread); +Clazz.makeConstructor(c$, +function(eval, vwr, millis){ +Clazz.superConstructor (this, JS.ScriptDelayThread, []); +this.setViewer(vwr, "ScriptDelayThread"); +this.millis = millis; +this.setEval(eval); +}, "J.api.JmolScriptEvaluator,JV.Viewer,~N"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +var delayMax; +this.doPopPush = (this.millis > 0); +this.isPauseDelay = (this.millis == -100); +if (!this.doPopPush) this.millis = -this.millis; + else if ((delayMax = this.vwr.getDelayMaximumMs()) > 0 && this.millis > delayMax) this.millis = delayMax; +this.millis -= System.currentTimeMillis() - this.startTime; +if (this.isJS) { +this.seconds = 0; +} else { +this.seconds = Clazz.doubleToInt(this.millis / 1000); +this.millis -= this.seconds * 1000; +if (this.millis <= 0) this.millis = 1; +}if (this.doPopPush) this.vwr.popHoldRepaint("scriptDelayThread INIT"); +mode = 0; +break; +case 0: +if (this.stopped || this.eval.isStopped()) { +mode = -2; +break; +}if (!this.runSleep(this.seconds-- > 0 ? 1000 : this.millis, -2)) return; +if (this.seconds < 0) this.millis = 0; +mode = (this.seconds > 0 || this.millis > 0 ? 0 : -2); +break; +case -2: +if (this.doPopPush) this.vwr.pushHoldRepaintWhy("delay FINISH"); +if (this.isPauseDelay) this.eval.notifyResumeStatus(); +this.resumeEval(); +return; +} + +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptError.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptError.js new file mode 100755 index 000000000000..0e6a1ec78832 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptError.js @@ -0,0 +1,297 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.api.JmolScriptEvaluator"], "JS.ScriptError", ["JU.PT", "J.i18n.GT", "JS.ScriptException"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.chk = false; +this.ignoreError = false; +this.$error = false; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorType = null; +this.iCommandError = 0; +Clazz.instantialize(this, arguments);}, JS, "ScriptError", null, J.api.JmolScriptEvaluator); +Clazz.overrideMethod(c$, "getErrorMessage", +function(){ +return this.errorMessage; +}); +Clazz.overrideMethod(c$, "getErrorMessageUntranslated", +function(){ +return this.errorMessageUntranslated == null ? this.errorMessage : this.errorMessageUntranslated; +}); +Clazz.defineMethod(c$, "invArg", +function(){ +this.error(22); +}); +Clazz.defineMethod(c$, "invArgStr", +function(msg){ +this.errorOrWarn(22, msg, null, null, false); +}, "~S"); +Clazz.defineMethod(c$, "bad", +function(){ +this.error(2); +}); +Clazz.defineMethod(c$, "integerOutOfRange", +function(min, max){ +this.errorOrWarn(21, "" + min, "" + max, null, true); +}, "~N,~N"); +Clazz.defineMethod(c$, "numberOutOfRange", +function(min, max){ +this.errorOrWarn(36, "" + min, "" + max, null, true); +}, "~N,~N"); +Clazz.defineMethod(c$, "error", +function(iError){ +this.errorOrWarn(iError, null, null, null, false); +}, "~N"); +Clazz.defineMethod(c$, "errorStr", +function(iError, value){ +this.errorOrWarn(iError, value, null, null, false); +}, "~N,~S"); +Clazz.defineMethod(c$, "errorStr2", +function(iError, value, more){ +this.errorOrWarn(iError, value, more, null, false); +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "errorMore", +function(iError, value, more, more2){ +this.errorOrWarn(iError, value, more, more2, false); +}, "~N,~S,~S,~S"); +Clazz.defineMethod(c$, "warning", +function(iError, value, more){ +this.errorOrWarn(iError, value, more, null, true); +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "errorOrWarn", +function(iError, value, more, more2, warningOnly){ +var strError = (this.ignoreError ? null : JS.ScriptError.errorString(iError, value, more, more2, true)); +var strUntranslated = (this.ignoreError || !J.i18n.GT.getDoTranslate() ? null : JS.ScriptError.errorString(iError, value, more, more2, false)); +if (!warningOnly) this.evalError(strError, strUntranslated); +this.showStringPrint(strError, true); +}, "~N,~S,~S,~S,~B"); +Clazz.defineMethod(c$, "evalError", +function(message, strUntranslated){ +if (this.ignoreError) throw new NullPointerException(); +if (strUntranslated == null) strUntranslated = message; +if (!this.chk) { +this.setCursorWait(false); +this.vwr.setBooleanProperty("refreshing", true); +this.vwr.setStringProperty("_errormessage", strUntranslated); +}throw new JS.ScriptException(this, message, strUntranslated, true); +}, "~S,~S"); +Clazz.defineMethod(c$, "setCursorWait", +function(TF){ +if (!this.chk) this.vwr.setCursor(TF ? 3 : 0); +}, "~B"); +c$.errorString = Clazz.defineMethod(c$, "errorString", +function(iError, value, more, more2, translated){ +var doTranslate = false; +if (!translated && (doTranslate = J.i18n.GT.getDoTranslate()) == true) J.i18n.GT.setDoTranslate(false); +var msg; +switch (iError) { +default: +msg = "Unknown error message number: " + iError; +break; +case 0: +msg = J.i18n.GT.$("x y z axis expected"); +break; +case 1: +msg = J.i18n.GT.$("{0} not allowed with background model displayed"); +break; +case 2: +msg = J.i18n.GT.$("bad argument count"); +break; +case 3: +msg = J.i18n.GT.$("Miller indices cannot all be zero."); +break; +case 4: +msg = J.i18n.GT.$("bad [R,G,B] color"); +break; +case 5: +msg = J.i18n.GT.$("boolean expected"); +break; +case 6: +msg = J.i18n.GT.$("boolean or number expected"); +break; +case 7: +msg = J.i18n.GT.$("boolean, number, or {0} expected"); +break; +case 56: +msg = J.i18n.GT.$("cannot set value"); +break; +case 8: +msg = J.i18n.GT.$("color expected"); +break; +case 9: +msg = J.i18n.GT.$("a color or palette name (Jmol, Rasmol) is required"); +break; +case 10: +msg = J.i18n.GT.$("command expected"); +break; +case 11: +msg = J.i18n.GT.$("{x y z} or $name or (atom expression) required"); +break; +case 12: +msg = J.i18n.GT.$("draw object not defined"); +break; +case 13: +msg = J.i18n.GT.$("unexpected end of script command"); +break; +case 14: +msg = J.i18n.GT.$("valid (atom expression) expected"); +break; +case 15: +msg = J.i18n.GT.$("(atom expression) or integer expected"); +break; +case 16: +msg = J.i18n.GT.$("filename expected"); +break; +case 17: +msg = J.i18n.GT.$("file not found"); +break; +case 18: +msg = J.i18n.GT.$("incompatible arguments"); +break; +case 19: +msg = J.i18n.GT.$("insufficient arguments"); +break; +case 20: +msg = J.i18n.GT.$("integer expected"); +break; +case 21: +msg = J.i18n.GT.$("integer out of range ({0} - {1})"); +break; +case 22: +msg = J.i18n.GT.$("invalid argument"); +break; +case 23: +msg = J.i18n.GT.$("invalid parameter order"); +break; +case 24: +msg = J.i18n.GT.$("keyword expected"); +break; +case 25: +msg = J.i18n.GT.$("no MO coefficient data available"); +break; +case 26: +msg = J.i18n.GT.$("An MO index from 1 to {0} is required"); +break; +case 27: +msg = J.i18n.GT.$("no MO basis/coefficient data available for this frame"); +break; +case 28: +msg = J.i18n.GT.$("no MO occupancy data available"); +break; +case 29: +msg = J.i18n.GT.$("Only one molecular orbital is available in this file"); +break; +case 30: +msg = J.i18n.GT.$("{0} requires that only one model be displayed"); +break; +case 55: +msg = J.i18n.GT.$("{0} requires that only one model be loaded"); +break; +case 31: +msg = J.i18n.GT.$("No data available"); +break; +case 32: +msg = J.i18n.GT.$("No partial charges were read from the file; Jmol needs these to render the MEP data."); +break; +case 33: +msg = J.i18n.GT.$("No unit cell"); +break; +case 34: +msg = J.i18n.GT.$("number expected"); +break; +case 35: +msg = J.i18n.GT.$("number must be ({0} or {1})"); +break; +case 36: +msg = J.i18n.GT.$("decimal number out of range ({0} - {1})"); +break; +case 57: +msg = J.i18n.GT.$("operation canceled"); +break; +case 37: +msg = J.i18n.GT.$("object name expected after '$'"); +break; +case 38: +msg = J.i18n.GT.$("plane expected -- either three points or atom expressions or {0} or {1} or {2}"); +break; +case 39: +msg = J.i18n.GT.$("property name expected"); +break; +case 40: +msg = J.i18n.GT.$("space group {0} was not found."); +break; +case 41: +msg = J.i18n.GT.$("quoted string expected"); +break; +case 42: +msg = J.i18n.GT.$("quoted string or identifier expected"); +break; +case 43: +msg = J.i18n.GT.$("too many rotation points were specified"); +break; +case 44: +msg = J.i18n.GT.$("too many script levels"); +break; +case 45: +msg = J.i18n.GT.$("unrecognized atom property"); +break; +case 46: +msg = J.i18n.GT.$("unrecognized bond property"); +break; +case 47: +msg = J.i18n.GT.$("unrecognized command"); +break; +case 48: +msg = J.i18n.GT.$("runtime unrecognized expression"); +break; +case 49: +msg = J.i18n.GT.$("unrecognized object"); +break; +case 50: +msg = J.i18n.GT.$("unrecognized {0} parameter"); +break; +case 51: +msg = J.i18n.GT.$("unrecognized {0} parameter in Jmol state script (set anyway)"); +break; +case 52: +msg = J.i18n.GT.$("unrecognized SHOW parameter -- use {0}"); +break; +case 53: +msg = "{0}"; +break; +case 54: +msg = J.i18n.GT.$("write what? {0} or {1} \"filename\""); +break; +} +if (msg.indexOf("{0}") < 0) { +if (value != null) msg += ": " + value; +} else { +msg = JU.PT.rep(msg, "{0}", value); +if (msg.indexOf("{1}") >= 0) msg = JU.PT.rep(msg, "{1}", more); + else if (more != null) msg += ": " + more; +if (msg.indexOf("{2}") >= 0) msg = JU.PT.rep(msg, "{2}", more); +}if (doTranslate) J.i18n.GT.setDoTranslate(true); +return msg; +}, "~N,~S,~S,~S,~B"); +c$.getErrorLineMessage = Clazz.defineMethod(c$, "getErrorLineMessage", +function(functionName, filename, lineCurrent, pcCurrent, lineInfo){ +var err = "\n----"; +if (filename != null || functionName != null) err += "line " + lineCurrent + " command " + (pcCurrent + 1) + " of " + (functionName == null ? filename : functionName.equals("try") ? "try" : "function " + functionName) + ":"; +err += "\n " + lineInfo; +return err; +}, "~S,~S,~N,~N,~S"); +Clazz.defineMethod(c$, "setErrorMessage", +function(err){ +this.errorMessageUntranslated = null; +if (err == null) { +this.$error = false; +this.errorType = null; +this.errorMessage = null; +this.iCommandError = -1; +return; +}this.$error = true; +if (this.errorMessage == null) this.errorMessage = J.i18n.GT.$("script ERROR: "); +this.errorMessage += err; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptEval.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptEval.js new file mode 100755 index 000000000000..a4493ef1c35d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptEval.js @@ -0,0 +1,6868 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.ScriptExpr"], "JS.ScriptEval", ["java.util.Arrays", "$.Hashtable", "JU.AU", "$.BArray", "$.BS", "$.Base64", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.c.PAL", "$.STR", "$.VDW", "J.i18n.GT", "JM.BondSet", "$.Group", "$.Measurement", "JS.FileLoadThread", "$.SV", "$.ScriptCompiler", "$.ScriptContext", "$.ScriptDelayThread", "$.ScriptInterruption", "$.ScriptManager", "$.ScriptMathProcessor", "$.T", "JU.BSUtil", "$.ColorEncoder", "$.Edge", "$.Elements", "$.Escape", "$.Font", "$.Logger", "$.Parser", "$.SimpleUnitCell", "JV.ActionManager", "$.FileManager", "$.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sm = null; +this.isJS = false; +this.scriptDelayThread = null; +this.fileLoadThread = null; +this.allowJSThreads = true; +this.isFuncReturn = false; +this.historyDisabled = false; +this.debugScript = false; +this.isCmdLine_C_Option = false; +this.isCmdLine_c_or_C_Option = false; +this.listCommands = false; +this.tQuiet = false; +this.executionStopped = false; +this.executionPaused = false; +this.executionStepping = false; +this.executing = false; +this.isEditor = false; +this.timeBeginExecution = 0; +this.timeEndExecution = 0; +this.mustResumeEval = false; +this.currentThread = null; +this.compiler = null; +this.outputBuffer = null; +this.contextPath = ""; +this.scriptFileName = null; +this.functionName = null; +this.$isStateScript = false; +this.scriptLevel = 0; +this.aatoken = null; +this.lineNumbers = null; +this.lineIndices = null; +this.script = null; +this.scriptExtensions = null; +this.pc = 0; +this.thisCommand = null; +this.fullCommand = null; +this.lineEnd = 0; +this.pcEnd = 0; +this.forceNoAddHydrogens = false; +this.isEmbedded = false; +this.isGUI = false; +this.parallelProcessor = null; +this.pcResume = -1; +Clazz.instantialize(this, arguments);}, JS, "ScriptEval", JS.ScriptExpr); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.ScriptEval, []); +this.currentThread = Thread.currentThread(); +}); +Clazz.overrideMethod(c$, "getAllowJSThreads", +function(){ +return this.allowJSThreads; +}); +Clazz.defineMethod(c$, "setAllowJSThreads", +function(b){ +this.allowJSThreads = b; +}, "~B"); +Clazz.defineMethod(c$, "doReport", +function(){ +return (!this.tQuiet && this.scriptLevel <= JS.ScriptEval.scriptReportingLevel); +}); +Clazz.overrideMethod(c$, "isStateScript", +function(){ +return this.$isStateScript; +}); +Clazz.overrideMethod(c$, "setStatic", +function(tok, ival){ +switch (tok) { +case 553648167: +if (ival >= 10) JS.ScriptEval.contextDepthMax = ival; +return JS.ScriptEval.contextDepthMax; +case 553648144: +if (ival >= 0) JS.ScriptEval.commandHistoryLevelMax = ival; +return JS.ScriptEval.commandHistoryLevelMax; +case 553648168: +if (ival >= 0) JS.ScriptEval.scriptReportingLevel = ival; +return JS.ScriptEval.scriptReportingLevel; +} +return 0; +}, "~N,~N"); +Clazz.overrideMethod(c$, "getScript", +function(){ +return this.script; +}); +Clazz.overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +this.compiler = (this.compiler == null ? vwr.compiler : this.compiler); +this.isJS = vwr.isSingleThreaded; +return this; +}, "JV.Viewer"); +Clazz.overrideMethod(c$, "setCompiler", +function(){ +this.vwr.compiler = this.compiler = new JS.ScriptCompiler(this.vwr); +}); +Clazz.overrideMethod(c$, "compileScriptString", +function(script, tQuiet){ +this.clearState(tQuiet); +this.contextPath = "[script]"; +return this.compileScript(null, script, this.debugScript); +}, "~S,~B"); +Clazz.overrideMethod(c$, "compileScriptFile", +function(filename, tQuiet){ +this.clearState(tQuiet); +this.contextPath = filename; +var script = this.getScriptFileInternal(filename, null, null, null); +return (script != null && this.compileScript(filename, script, this.debugScript)); +}, "~S,~B"); +Clazz.overrideMethod(c$, "evaluateCompiledScript", +function(params, isCmdLine_c_or_C_Option, isCmdLine_C_Option, historyDisabled, listCommands, outputBuffer, allowThreads){ +var tempOpen = this.isCmdLine_C_Option; +this.isCmdLine_C_Option = isCmdLine_C_Option; +this.chk = this.isCmdLine_c_or_C_Option = isCmdLine_c_or_C_Option; +this.historyDisabled = historyDisabled; +this.outputBuffer = outputBuffer; +this.privateFuncs = null; +this.currentThread = Thread.currentThread(); +this.setAllowJSThreads( new Boolean (allowThreads & !this.vwr.getBoolean(603979892)).valueOf()); +this.listCommands = listCommands; +this.timeBeginExecution = System.currentTimeMillis(); +this.executionStopped = this.executionPaused = false; +this.executionStepping = false; +this.executing = true; +this.vwr.pushHoldRepaintWhy("runEval" + (params == null ? "" : "+params")); +this.setScriptExtensions(); +this.vwr.hasSelected = false; +this.executeCommands(params, false, true); +this.isCmdLine_C_Option = tempOpen; +if (this.$isStateScript) JS.ScriptManager.setStateScriptVersion(this.vwr, null); +if (this.vwr.hasSelected && this.isGUI) this.vwr.setStatusSelect(null); +this.vwr.hasSelected = false; +}, "~A,~B,~B,~B,~B,JU.SB,~B"); +Clazz.defineMethod(c$, "useThreads", +function(){ +return (!this.chk && !this.vwr.headless && !this.vwr.autoExit && this.vwr.haveDisplay && this.outputBuffer == null && this.allowJSThreads); +}); +Clazz.defineMethod(c$, "executeCommands", +function(params, isTry, reportCompletion){ +var haveError = false; +try { +if (params != null) { +this.pushContext(null, "runCallback"); +this.contextPath += " >> " + params[0] + "callback "; +this.setScriptArguments(params, true); +}if (!this.dispatchCommands(false, false, isTry)) return -1; +if (params != null) { +this.popContext(false, false); +}} catch (e$$) { +if (Clazz.exceptionOf(e$$,"JS.ScriptException")){ +var e = e$$; +{ +if (Clazz.instanceOf(e,"JS.ScriptInterruption") && (!isTry || !e.isError)) { +return -1; +}if (isTry) { +this.vwr.setStringProperty("_errormessage", "" + e); +return 1; +}this.setErrorMessage(e.toString()); +this.errorMessageUntranslated = e.getErrorMessageUntranslated(); +this.report(this.errorMessage, true); +this.vwr.notifyError((this.errorMessage != null && this.errorMessage.indexOf("java.lang.OutOfMemoryError") >= 0 ? "Error" : "ScriptException"), this.errorMessage, this.errorMessageUntranslated); +haveError = true; +} +} else { +var er = e$$; +{ +this.vwr.handleError(er, false); +this.setErrorMessage("" + er + " " + this.vwr.getShapeErrorState()); +this.errorMessageUntranslated = "" + er; +this.report(this.errorMessage, true); +haveError = true; +} +} +} +if (haveError || !this.isJS || !this.allowJSThreads || params != null) { +this.vwr.setTainted(true); +this.vwr.popHoldRepaint("CLEAR HOLD - executeCommands" + " " + (this.scriptLevel > 0 ? "\u0001## REPAINT_IGNORE ##" : "")); +if (haveError) this.resumeViewer("exception", true); +}this.timeEndExecution = System.currentTimeMillis(); +if (this.errorMessage == null && this.executionStopped) this.setErrorMessage("execution interrupted"); + else if (!this.tQuiet && reportCompletion) this.vwr.scriptStatus("Script completed"); +this.executing = this.chk = this.isCmdLine_c_or_C_Option = this.historyDisabled = false; +var msg = this.getErrorMessageUntranslated(); +this.vwr.setErrorMessage(this.errorMessage, msg); +if (!this.tQuiet && reportCompletion) this.vwr.setScriptStatus("Jmol script terminated", this.errorMessage, 1 + (this.timeEndExecution - this.timeBeginExecution), msg); +return (haveError ? 1 : 0); +}, "~A,~B,~B"); +Clazz.overrideMethod(c$, "resumeEval", +function(sco){ +var sc = sco; +this.setErrorMessage(null); +if (this.executionStopped || sc == null || !sc.mustResumeEval) { +this.resumeViewer("resumeEval", this.executionStopped); +return; +}this.thisContext = sc; +if (sc.scriptLevel > 0 && sc.why !== "getEvalContextAndHoldQueue") this.scriptLevel = sc.scriptLevel - 1; +if (sc.isTryCatch) { +this.postProcessTry(null); +this.pcResume = -1; +} else { +if (!this.executionPaused) sc.pc++; +this.restoreScriptContext(sc, true, false, false); +this.pcResume = sc.pc; +}switch (this.executeCommands(null, this.thisContext != null && this.thisContext.isTryCatch, this.scriptLevel <= 0)) { +case -1: +break; +case 1: +case 0: +this.postProcessTry(null); +if (this.executing) this.executeCommands(null, true, false); +break; +} +this.pcResume = -1; +}, "~O"); +Clazz.defineMethod(c$, "resumeViewer", +function(why, andStopQueue){ +this.vwr.setTainted(true); +this.vwr.popHoldRepaint(why + (this.chk ? "\u0001## REPAINT_IGNORE ##" : "")); +this.vwr.queueOnHold = false; +if (andStopQueue) { +this.vwr.clearScriptQueue(); +this.vwr.scm.queueThreadFinished(-1); +}}, "~S,~B"); +Clazz.overrideMethod(c$, "runScript", +function(script){ +if (!this.vwr.isPreviewOnly) this.runScriptBuffer(script, this.outputBuffer, false); +}, "~S"); +Clazz.overrideMethod(c$, "runScriptBuffer", +function(script, outputBuffer, isFuncReturn){ +this.pushContext(null, "runScriptBuffer"); +this.contextPath += " >> script() "; +this.outputBuffer = outputBuffer; +this.setAllowJSThreads(false); +var fret = this.isFuncReturn; +this.isFuncReturn = new Boolean (this.isFuncReturn | isFuncReturn).valueOf(); +if (this.compileScript(null, script + "\u0001## EDITOR_IGNORE ##" + "\u0001## REPAINT_IGNORE ##", false)) this.dispatchCommands(false, false, false); +this.popContext(false, false); +this.isFuncReturn = fret; +}, "~S,JU.SB,~B"); +Clazz.overrideMethod(c$, "checkScriptSilent", +function(script){ +var sc = this.compiler.compile(null, script, false, true, false, true); +if (sc.errorType != null) return sc; +this.restoreScriptContext(sc, false, false, false); +this.chk = true; +this.isCmdLine_c_or_C_Option = this.isCmdLine_C_Option = false; +this.pc = 0; +try { +this.dispatchCommands(false, false, false); +} catch (e) { +if (Clazz.exceptionOf(e,"JS.ScriptException")){ +this.setErrorMessage(e.toString()); +sc = this.getScriptContext("checkScriptSilent"); +} else { +throw e; +} +} +this.chk = false; +return sc; +}, "~S"); +c$.getContextTrace = Clazz.defineMethod(c$, "getContextTrace", +function(vwr, sc, sb, isTop){ +if (sb == null) sb = new JU.SB(); +if (sc.lineNumbers == null) System.out.println(sc); +var pc = Math.min(sc.pc, (sc.lineNumbers == null ? sc.pc : sc.lineNumbers[sc.lineNumbers.length - 1])); +sb.append(JS.ScriptError.getErrorLineMessage(sc.functionName, sc.scriptFileName, sc.lineNumbers[pc], pc, JS.ScriptEval.statementAsString(vwr, sc.statement, (isTop ? sc.iToken : 9999), false))); +if (sc.parentContext != null) JS.ScriptEval.getContextTrace(vwr, sc.parentContext, sb, false); +return sb; +}, "JV.Viewer,JS.ScriptContext,JU.SB,~B"); +Clazz.overrideMethod(c$, "setDebugging", +function(){ +this.debugScript = this.vwr.getBoolean(603979825); +this.debugHigh = (this.debugScript && JU.Logger.debugging); +}); +Clazz.overrideMethod(c$, "haltExecution", +function(){ +if (this.isEmbedded) { +this.vwr.setBooleanProperty("allowEmbeddedScripts", true); +this.isEmbedded = false; +}this.resumePausedExecution(); +this.executionStopped = true; +}); +Clazz.overrideMethod(c$, "pauseExecution", +function(withDelay){ +if (this.chk || this.vwr.headless) return; +if (withDelay && !this.isJS) this.delayScript(-100); +this.vwr.popHoldRepaint("pauseExecution " + withDelay); +this.executionStepping = false; +this.executionPaused = true; +}, "~B"); +Clazz.overrideMethod(c$, "stepPausedExecution", +function(){ +this.executionStepping = true; +this.executionPaused = false; +}); +Clazz.overrideMethod(c$, "resumePausedExecution", +function(){ +this.executionPaused = false; +this.executionStepping = false; +if (!this.tQuiet) this.vwr.setScriptStatus("Jmol script resumed", this.errorMessage, 1 + (this.timeEndExecution - this.timeBeginExecution), "resumed"); +}); +Clazz.overrideMethod(c$, "isExecuting", +function(){ +return this.executing && !this.executionStopped; +}); +Clazz.overrideMethod(c$, "isPaused", +function(){ +return this.executionPaused; +}); +Clazz.overrideMethod(c$, "isStepping", +function(){ +return this.executionStepping; +}); +Clazz.overrideMethod(c$, "isStopped", +function(){ +return this.executionStopped || !this.isJS && this.currentThread !== Thread.currentThread(); +}); +Clazz.overrideMethod(c$, "getNextStatement", +function(){ +return (this.pc < this.aatoken.length ? JS.ScriptError.getErrorLineMessage(this.functionName, this.scriptFileName, this.getLinenumber(null), this.pc, JS.ScriptEval.statementAsString(this.vwr, this.aatoken[this.pc], -9999, this.debugHigh)) : ""); +}); +Clazz.defineMethod(c$, "getCommand", +function(pc, allThisLine, addSemi){ +if (pc >= this.lineIndices.length) return ""; +if (allThisLine) { +var pt0 = -1; +var s = this.script; +var pt1 = s.length; +for (var i = 0; i < this.lineNumbers.length; i++) { +if (this.lineNumbers[i] == this.lineNumbers[pc]) { +if (pt0 < 0) pt0 = this.lineIndices[i][0]; +pt1 = this.lineIndices[i][1]; +} else if (this.lineNumbers[i] == 0 || this.lineNumbers[i] > this.lineNumbers[pc]) { +break; +}} +if (s.indexOf('\1') >= 0) s = s.substring(0, s.indexOf('\1')); +var len = s.length; +if (pt1 == len - 1 && s.endsWith("}")) pt1++; +return (pt0 >= len || pt1 < pt0 || pt1 < 0 ? "" : s.substring(Math.max(pt0, 0), Math.min(len, pt1))); +}var ichBegin = this.lineIndices[pc][0]; +var ichEnd = this.lineIndices[pc][1]; +var s = ""; +if (ichBegin < 0 || ichEnd <= ichBegin || ichEnd > this.script.length) return ""; +try { +s = this.script.substring(ichBegin, ichEnd); +if (s.indexOf("\\\n") >= 0) s = JU.PT.rep(s, "\\\n", " "); +if (s.indexOf("\\\r") >= 0) s = JU.PT.rep(s, "\\\r", " "); +if (s.length > 0 && !s.endsWith(";")) s += ";"; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("darn problem in Eval getCommand: ichBegin=" + ichBegin + " ichEnd=" + ichEnd + " len = " + this.script.length + "\n" + e); +} else { +throw e; +} +} +return s; +}, "~N,~B,~B"); +Clazz.defineMethod(c$, "logDebugScript", +function(st, ifLevel){ +var itok = this.iToken; +this.iToken = -9999; +if (this.debugHigh) { +if (st.length > 0) JU.Logger.debug(st[0].toString()); +for (var i = 1; i < st.length; ++i) if (st[i] != null) JU.Logger.debug(st[i].toString()); + +var strbufLog = new JU.SB(); +var s = (ifLevel > 0 ? " ".substring(0, ifLevel * 2) : ""); +strbufLog.append(s).append(JS.ScriptEval.statementAsString(this.vwr, st, this.iToken, this.debugHigh)); +this.vwr.scriptStatus(strbufLog.toString()); +} else { +var cmd = this.getCommand(this.pc, false, false); +if (cmd !== "") this.vwr.scriptStatus(cmd); +}this.iToken = itok; +}, "~A,~N"); +Clazz.overrideMethod(c$, "evaluateExpression", +function(expr, asVariable, compileOnly){ +var e = ( new JS.ScriptEval()).setViewer(this.vwr); +try { +e.thisContext = this.thisContext; +e.contextVariables = this.contextVariables; +e.pushContext(null, "evalExp"); +e.setAllowJSThreads(false); +} catch (e1) { +if (Clazz.exceptionOf(e1,"JS.ScriptException")){ +} else { +throw e1; +} +} +var exec0 = this.executing; +var o = (e.evaluate(expr, asVariable, compileOnly)); +this.executing = exec0; +return o; +}, "~O,~B,~B"); +Clazz.defineMethod(c$, "runBufferedSafely", +function(script, outputBuffer){ +if (outputBuffer == null) outputBuffer = this.outputBuffer; +var e = ( new JS.ScriptEval()).setViewer(this.vwr); +var exec0 = this.executing; +try { +e.runScriptBuffer(script, outputBuffer, false); +} catch (e1) { +if (Clazz.exceptionOf(e1,"JS.ScriptException")){ +e1.printStackTrace(); +} else { +throw e1; +} +} +this.executing = exec0; +}, "~S,JU.SB"); +c$.runUserAction = Clazz.defineMethod(c$, "runUserAction", +function(functionName, params, vwr){ +var ev = ( new JS.ScriptEval()).setViewer(vwr); +var func = vwr.getFunction(functionName.toLowerCase()); +if (func == null) return null; +try { +var svparams = JS.SV.getVariableAO(params).getList(); +ev.restoreFunction(func, svparams, null); +ev.dispatchCommands(false, true, false); +} catch (e) { +if (Clazz.exceptionOf(e,"JS.ScriptException")){ +return null; +} else { +throw e; +} +} +var ret = ev.getContextVariableAsVariable("_retval", false); +return (ret == null ? JS.SV.vT : ret); +}, "~S,~A,JV.Viewer"); +Clazz.defineMethod(c$, "evaluate", +function(expr, asVariable, compileOnly){ +try { +if ((typeof(expr)=='string')) { +if (this.compileScript(null, (compileOnly ? "w_h_e_r_e" : "e_x_p_r_e_s_s_i_o_n") + " = " + expr, false)) { +if (compileOnly) return this.aatoken[0]; +this.setStatement(this.aatoken[0], 1); +return (asVariable ? this.parameterExpressionList(2, -1, false).get(0) : this.parameterExpressionString(2, 0)); +}} else if (Clazz.instanceOf(expr,Array) && Clazz.instanceOf((expr)[0],Array)) { +this.setStatement((expr)[0], 1); +return (asVariable ? this.parameterExpressionList(0, -1, false).get(0) : this.parameterExpressionString(0, -1)); +} else if (Clazz.instanceOf(expr,Array)) { +var bs = this.atomExpression(expr, 0, 0, true, false, null, false); +return (asVariable ? JS.SV.newV(10, bs) : bs); +}} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +JU.Logger.error("Error evaluating: " + expr + "\n" + ex); +} else { +throw ex; +} +} +return (asVariable ? JS.SV.getVariable("ERROR") : "ERROR"); +}, "~O,~B,~B"); +Clazz.overrideMethod(c$, "checkSelect", +function(h, where){ +var ok = false; +try { +this.pushContext(null, "checkSelect"); +ok = this.parameterExpressionSelect(h, where); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +JU.Logger.error("checkSelect " + ex); +} else { +throw ex; +} +} +this.popContext(false, false); +return ok; +}, "java.util.Map,~A"); +Clazz.overrideMethod(c$, "getAtomBitSet", +function(atomExpression){ +if (Clazz.instanceOf(atomExpression,"JU.BS")) return atomExpression; +var bs = new JU.BS(); +var executing = this.executing; +try { +this.pushContext(null, "getAtomBitSet"); +var scr = "select (" + atomExpression + ")"; +scr = JU.PT.replaceAllCharacters(scr, "\n\r", "),("); +scr = JU.PT.rep(scr, "()", "(none)"); +if (this.compileScript(null, scr, false)) { +this.st = this.aatoken[0]; +this.setStatement(this.st, 0); +bs = this.atomExpression(this.st, 1, 0, false, false, null, true); +}this.popContext(false, false); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +JU.Logger.error("getAtomBitSet " + atomExpression + "\n" + ex); +} else { +throw ex; +} +} +this.executing = executing; +return bs; +}, "~O"); +Clazz.defineMethod(c$, "compileScript", +function(filename, strScript, debugCompiler){ +this.scriptFileName = filename; +strScript = this.fixScriptPath(strScript, filename); +var sc = this.compiler.compile(filename, strScript, false, false, debugCompiler && JU.Logger.debugging, false); +this.addFunction(null); +var pf = this.privateFuncs; +this.restoreScriptContext(sc, false, false, false); +this.privateFuncs = null; +if (this.thisContext != null) this.thisContext.privateFuncs = pf; +this.$isStateScript = this.compiler.isStateScript; +this.forceNoAddHydrogens = (this.$isStateScript && this.script.indexOf("pdbAddHydrogens") < 0); +var s = this.script; +this.isGUI = (s.indexOf("; ## GUI ##") >= 0); +if (this.isGUI) { +s = JU.PT.rep(s, "; ## GUI ##", ""); +}this.pc = this.setScriptExtensions(); +if (!this.chk && this.vwr.scriptEditorVisible && strScript.indexOf("\u0001## EDITOR_IGNORE ##") < 0) this.vwr.scriptStatus(""); +this.script = s; +return !this.$error; +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "fixScriptPath", +function(strScript, filename){ +if (filename != null && strScript.indexOf("$SCRIPT_PATH$") >= 0) { +var path = filename; +var pt = Math.max(filename.lastIndexOf("|"), filename.lastIndexOf("/")); +path = path.substring(0, pt + 1); +strScript = JU.PT.rep(strScript, "$SCRIPT_PATH$/", path); +strScript = JU.PT.rep(strScript, "$SCRIPT_PATH$", path); +}return strScript; +}, "~S,~S"); +Clazz.defineMethod(c$, "setScriptExtensions", +function(){ +var extensions = this.scriptExtensions; +if (extensions == null) return 0; +var pt = extensions.indexOf("\u0001##SCRIPT_STEP"); +if (pt >= 0) { +this.executionStepping = true; +}pt = extensions.indexOf("\u0001##SCRIPT_START"); +if (pt < 0) return 0; +pt = JU.PT.parseInt(extensions.substring(pt + "\u0001##SCRIPT_START".length)); +if (pt == -2147483648) return 0; +for (this.pc = 0; this.pc < this.lineIndices.length; this.pc++) { +if (this.lineIndices[this.pc][0] > pt || this.lineIndices[this.pc][1] >= pt) break; +} +if (this.pc > 0 && this.pc < this.lineIndices.length && this.lineIndices[this.pc][0] > pt) --this.pc; +return this.pc; +}); +Clazz.defineMethod(c$, "getScriptFileInternal", +function(filename, localPath, remotePath, scriptPath){ +if (filename.toLowerCase().indexOf("javascript:") == 0) { +return this.vwr.jsEval(filename.substring(11)); +}var data = new Array(2); +data[0] = filename; +if (!this.vwr.fm.getFileDataAsString(data, -1, false, true, false)) { +this.setErrorMessage("io error reading " + data[0] + ": " + data[1]); +return null; +}var movieScript = ""; +if (("\n" + data[1]).indexOf("\nJmolManifest.txt\n") >= 0) { +var path; +if (filename.endsWith(".all.pngj") || filename.endsWith(".all.png")) { +path = "|state.spt"; +filename += "|"; +} else { +if (data[1].indexOf("movie.spt") >= 0) { +data[0] = filename + "|movie.spt"; +if (this.vwr.fm.getFileDataAsString(data, -1, false, true, false)) { +movieScript = data[1]; +}}filename += "|JmolManifest.txt"; +data[0] = filename; +if (!this.vwr.fm.getFileDataAsString(data, -1, false, true, false)) { +this.setErrorMessage("io error reading " + data[0] + ": " + data[1]); +return null; +}path = JV.FileManager.getManifestScriptPath(data[1]); +}if (path != null && path.length > 0) { +data[0] = filename = filename.substring(0, filename.lastIndexOf("|")) + path; +if (!this.vwr.fm.getFileDataAsString(data, -1, false, true, false)) { +this.setErrorMessage("io error reading " + data[0] + ": " + data[1]); +return null; +}}if (filename.endsWith("|state.spt")) { +this.vwr.g.setO("_pngjFile", filename.substring(0, filename.length - 10) + "?"); +}}this.scriptFileName = filename; +data[1] = JV.FileManager.getEmbeddedScript(data[1]); +var script = this.fixScriptPath(data[1], data[0]); +if (scriptPath == null) { +scriptPath = this.vwr.fm.getFilePath(filename, false, false); +scriptPath = scriptPath.substring(0, Math.max(scriptPath.lastIndexOf("|"), scriptPath.lastIndexOf("/"))); +}return JV.FileManager.setScriptFileReferences(script, localPath, remotePath, scriptPath) + movieScript; +}, "~S,~S,~S,~S"); +Clazz.overrideMethod(c$, "evalFunctionFloat", +function(func, params, values){ +try { +var p = params; +for (var i = 0; i < values.length; i++) p.get(i).value = Float.$valueOf(values[i]); + +var f = func; +return JS.SV.fValue(this.runFunctionAndRet(f, f.name, p, null, true, false, false)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return NaN; +} else { +throw e; +} +} +}, "~O,~O,~A"); +Clazz.defineMethod(c$, "getUserFunctionResult", +function(name, params, tokenAtom){ +return this.runFunctionAndRet(null, name, params, tokenAtom, true, true, false); +}, "~S,JU.Lst,JS.SV"); +Clazz.defineMethod(c$, "runFunctionAndRet", +function($function, name, params, tokenAtom, getReturn, setContextPath, allowThreads){ +if ($function == null) { +name = name.toLowerCase(); +$function = this.getFunction(name); +if ($function == null) return null; +if (setContextPath) this.contextPath += " >> function " + name; +} else if (setContextPath) { +this.contextPath += " >> " + name; +}this.pushContext(null, "runFunctionAndRet "); +if (this.allowJSThreads) this.setAllowJSThreads(allowThreads); +var isTry = ($function.getTok() == 364558); +this.thisContext.isTryCatch = isTry; +this.thisContext.isFunction = !isTry; +this.functionName = name; +if (isTry) { +this.resetError(); +this.thisContext.displayLoadErrorsSave = this.vwr.displayLoadErrors; +this.thisContext.tryPt = ++this.vwr.tryPt; +this.vwr.displayLoadErrors = false; +this.restoreFunction($function, params, tokenAtom); +this.contextVariables.put("_breakval", JS.SV.newI(2147483647)); +this.contextVariables.put("_errorval", JS.SV.newS("")); +var cv = this.contextVariables; +switch (this.executeCommands(null, true, false)) { +case -1: +break; +case 1: +case 0: +this.postProcessTry(cv); +} +return null; +} else if (Clazz.instanceOf($function,"J.api.JmolParallelProcessor")) { +{ +this.parallelProcessor = $function; +this.restoreFunction($function, params, tokenAtom); +this.dispatchCommands(false, true, false); +($function).runAllProcesses(this.vwr); +}} else { +this.restoreFunction($function, params, tokenAtom); +this.dispatchCommands(false, true, false); +}var v = (getReturn ? this.getContextVariableAsVariable("_retval", false) : null); +this.popContext(false, false); +return v; +}, "J.api.JmolScriptFunction,~S,JU.Lst,JS.SV,~B,~B,~B"); +Clazz.defineMethod(c$, "postProcessTry", +function(cv){ +if (this.thisContext == null) return; +while (this.thisContext.tryPt > this.vwr.tryPt) this.popContext(false, false); + +var isJSReturn = (cv == null); +if (isJSReturn) { +cv = this.contextVariables; +}this.vwr.displayLoadErrors = this.thisContext.displayLoadErrorsSave; +this.popContext(false, false); +var err = this.vwr.getP("_errormessage"); +if (err.length > 0) { +cv.put("_errorval", JS.SV.newS(err)); +this.resetError(); +}cv.put("_tryret", cv.get("_retval")); +var ret = cv.get("_tryret"); +if (ret.value != null || ret.intValue != 2147483647) { +try { +this.cmdReturn(ret); +} catch (e) { +if (Clazz.exceptionOf(e,"JS.ScriptException")){ +e.printStackTrace(); +} else { +throw e; +} +} +return; +}var errMsg = (cv.get("_errorval")).value; +if (errMsg.length == 0) { +var iBreak = (cv.get("_breakval")).intValue; +if (iBreak != 2147483647) { +this.breakAt(this.pc - iBreak); +return; +}}if (this.pc + 1 < this.aatoken.length && this.aatoken[this.pc + 1][0].tok == 102412) { +var ct = this.aatoken[this.pc + 1][0]; +if (ct.contextVariables != null && ct.name0 != null) ct.contextVariables.put(ct.name0, JS.SV.newS(errMsg)); +ct.intValue = (errMsg.length > 0 ? 1 : -1) * Math.abs(ct.intValue); +}if (isJSReturn) this.pc++; +}, "java.util.Map"); +Clazz.defineMethod(c$, "breakAt", +function(pt){ +if (pt < 0) { +this.getContextVariableAsVariable("_breakval", false).intValue = -pt; +this.pcEnd = this.pc; +return; +}var ptEnd = Math.abs(this.aatoken[pt][0].intValue); +var tok = this.aatoken[pt][0].tok; +if (tok == 102411 || tok == 102413) { +this.theToken = this.aatoken[ptEnd--][0]; +var ptNext = Math.abs(this.theToken.intValue); +if (this.theToken.tok != 102409) this.theToken.intValue = -ptNext; +} else { +this.pc = -1; +while (this.pc != pt && this.thisContext != null) { +while (this.thisContext != null && !JS.ScriptCompiler.isBreakableContext(this.thisContext.token.tok)) this.popContext(true, false); + +this.pc = this.thisContext.pc; +this.popContext(true, false); +} +}this.pc = ptEnd; +}, "~N"); +Clazz.defineMethod(c$, "restoreFunction", +function(f, params, tokenAtom){ +var $function = f; +this.aatoken = $function.aatoken; +this.lineNumbers = $function.lineNumbers; +this.lineIndices = $function.lineIndices; +this.script = $function.script; +this.pc = 0; +if ($function.names != null) { +this.contextVariables = new java.util.Hashtable(); +$function.setVariables(this.contextVariables, params); +}if (tokenAtom != null) this.contextVariables.put("_x", tokenAtom); +}, "J.api.JmolScriptFunction,JU.Lst,JS.SV"); +Clazz.defineMethod(c$, "clearDefinedVariableAtomSets", +function(){ +this.vwr.definedAtomSets.remove("# variable"); +}); +Clazz.defineMethod(c$, "defineSets", +function(){ +if (!this.vwr.definedAtomSets.containsKey("# static")) { +for (var i = 0; i < JV.JC.predefinedStatic.length; i++) this.defineAtomSet(JV.JC.predefinedStatic[i]); + +this.defineAtomSet("# static"); +}if (this.vwr.definedAtomSets.containsKey("# variable")) return; +for (var i = 0; i < JV.JC.predefinedVariable.length; i++) this.defineAtomSet(JV.JC.predefinedVariable[i]); + +for (var i = JU.Elements.elementNumberMax; --i >= 0; ) { +var definition = " elemno=" + i; +this.defineAtomSet("@" + JU.Elements.elementNameFromNumber(i) + definition); +this.defineAtomSet("@_" + JU.Elements.elementSymbolFromNumber(i) + definition); +} +for (var i = 4; --i >= 0; ) { +var definition = "@" + JU.Elements.altElementNameFromIndex(i) + " _e=" + JU.Elements.altElementNumberFromIndex(i); +this.defineAtomSet(definition); +} +for (var i = JU.Elements.altElementMax; --i >= 4; ) { +var ei = JU.Elements.altElementNumberFromIndex(i); +var def = " _e=" + ei; +var definition = "@_" + JU.Elements.altElementSymbolFromIndex(i); +this.defineAtomSet(definition + def); +definition = "@_" + JU.Elements.altIsotopeSymbolFromIndex(i); +this.defineAtomSet(definition + def); +definition = "@_" + JU.Elements.altIsotopeSymbolFromIndex2(i); +this.defineAtomSet(definition + def); +definition = "@" + JU.Elements.altElementNameFromIndex(i); +if (definition.length > 1) this.defineAtomSet(definition + def); +var e = JU.Elements.getElementNumber(ei); +ei = JU.Elements.getNaturalIsotope(e); +if (ei > 0) { +def = JU.Elements.elementSymbolFromNumber(e); +this.defineAtomSet("@_" + def + ei + " _e=" + e); +this.defineAtomSet("@_" + ei + def + " _e=" + e); +}} +this.defineAtomSet("# variable"); +}); +Clazz.defineMethod(c$, "defineAtomSet", +function(script){ +if (script.indexOf("#") == 0) { +this.vwr.definedAtomSets.put(script, Boolean.TRUE); +return; +}var sc = this.compiler.compile("#predefine", script, true, false, false, false); +if (sc.errorType != null) { +this.vwr.scriptStatus("JmolConstants.java ERROR: predefined set compile error:" + script + "\ncompile error:" + sc.errorMessageUntranslated); +return; +}if (sc.getTokenCount() != 1) { +this.vwr.scriptStatus("JmolConstants.java ERROR: predefinition does not have exactly 1 command:" + script); +return; +}var statement = sc.getToken(0); +if (statement.length <= 2) { +this.vwr.scriptStatus("JmolConstants.java ERROR: bad predefinition length:" + script); +return; +}var tok = statement[1].tok; +if (!JS.T.tokAttr(tok, 1073741824) && !JS.T.tokAttr(tok, 2097152)) { +this.vwr.scriptStatus("JmolConstants.java ERROR: invalid variable name:" + script); +return; +}var name = (statement[1].value).toLowerCase(); +if (name.startsWith("dynamic_")) name = "!" + name.substring(8); +this.vwr.definedAtomSets.put(name, statement); +}, "~S"); +Clazz.defineMethod(c$, "lookupIdentifierValue", +function(identifier){ +var bs = this.lookupValue(identifier, false); +if (bs != null) return JU.BSUtil.copy(bs); +bs = this.getAtomBits(1073741824, identifier); +return (bs == null ? new JU.BS() : bs); +}, "~S"); +Clazz.defineMethod(c$, "lookupValue", +function(setName, plurals){ +if (this.chk) { +return new JU.BS(); +}this.defineSets(); +setName = setName.toLowerCase(); +var value = this.vwr.definedAtomSets.get(setName); +var isDynamic = false; +if (value == null) { +value = this.vwr.definedAtomSets.get("!" + setName); +isDynamic = (value != null); +}if (Clazz.instanceOf(value,"JU.BS")) return value; +if (Clazz.instanceOf(value,Array)) { +this.pushContext(null, "lookupValue"); +var bs = this.atomExpression(value, -2, 0, true, false, null, true); +this.popContext(false, false); +if (!isDynamic) this.vwr.definedAtomSets.put(setName, bs); +return bs; +}if (setName.equals("water")) { +var bs = this.vwr.ms.getAtoms(1612709912, null); +if (!isDynamic) this.vwr.definedAtomSets.put(setName, bs); +return bs; +}if (plurals) return null; +var len = setName.length; +if (len < 5) return null; +if (setName.charAt(len - 1) != 's') return null; +if (setName.endsWith("ies")) setName = setName.substring(0, len - 3) + 'y'; + else setName = setName.substring(0, len - 1); +return this.lookupValue(setName, true); +}, "~S,~B"); +Clazz.overrideMethod(c$, "deleteAtomsInVariables", +function(bsDeleted){ +for (var entry, $entry = this.vwr.definedAtomSets.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var value = entry.getValue(); +if (Clazz.instanceOf(value,"JU.BS")) { +JU.BSUtil.deleteBits(value, bsDeleted); +if (!entry.getKey().startsWith("!")) this.vwr.g.setUserVariable("@" + entry.getKey(), JS.SV.newV(10, value)); +}} +}, "JU.BS"); +Clazz.overrideMethod(c$, "getThisContext", +function(){ +return this.thisContext; +}); +Clazz.defineMethod(c$, "clearState", +function(tQuiet){ +this.thisContext = null; +this.scriptLevel = 0; +this.setErrorMessage(null); +this.contextPath = ""; +this.tQuiet = tQuiet; +}, "~B"); +Clazz.overrideMethod(c$, "pushContextDown", +function(why){ +this.scriptLevel--; +this.pushContext2(null, why); +}, "~S"); +Clazz.defineMethod(c$, "pushContext", +function(token, why){ +if (this.scriptLevel == JS.ScriptEval.contextDepthMax) this.error(44); +this.pushContext2(token, why); +}, "JS.ContextToken,~S"); +Clazz.defineMethod(c$, "pushContext2", +function(token, why){ +this.thisContext = this.getScriptContext(why); +this.thisContext.token = token; +if (token == null) { +this.scriptLevel = ++this.thisContext.scriptLevel; +} else { +this.thisContext.scriptLevel = -1; +this.contextVariables = new java.util.Hashtable(); +if (token.contextVariables != null) for (var key, $key = token.contextVariables.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) JS.ScriptCompiler.addContextVariable(this.contextVariables, key); + +}if (this.debugHigh || this.isCmdLine_c_or_C_Option) JU.Logger.info("-->>----------------------".substring(0, Math.min(15, this.scriptLevel + 5)) + this.scriptLevel + " " + this.scriptFileName + " " + token + " " + this.thisContext.id + " " + why + " path=" + this.thisContext.contextPath); +}, "JS.ContextToken,~S"); +Clazz.overrideMethod(c$, "getScriptContext", +function(why){ +var context = new JS.ScriptContext(); +if (this.debugHigh) JU.Logger.info("creating context " + context.id + " for " + why + " path=" + this.contextPath); +context.why = why; +context.scriptLevel = this.scriptLevel; +context.parentContext = this.thisContext; +context.contextPath = this.contextPath; +context.scriptFileName = this.scriptFileName; +context.parallelProcessor = this.parallelProcessor; +context.functionName = this.functionName; +context.script = this.script; +context.lineNumbers = this.lineNumbers; +context.lineIndices = this.lineIndices; +context.saveTokens(this.aatoken); +context.statement = this.st; +context.statementLength = this.slen; +context.pc = context.pc0 = this.pc; +context.lineEnd = this.lineEnd; +context.pcEnd = this.pcEnd; +context.iToken = this.iToken; +context.theToken = this.theToken; +context.theTok = this.theTok; +context.outputBuffer = this.outputBuffer; +context.vars = this.contextVariables; +context.isStateScript = this.$isStateScript; +context.errorMessage = this.errorMessage; +context.errorType = this.errorType; +context.iCommandError = this.iCommandError; +context.chk = this.chk; +context.executionStepping = this.executionStepping; +context.executionPaused = this.executionPaused; +context.scriptExtensions = this.scriptExtensions; +context.isEditor = this.isEditor; +context.mustResumeEval = this.mustResumeEval; +context.allowJSThreads = this.allowJSThreads; +return context; +}, "~S"); +Clazz.defineMethod(c$, "popContext", +function(isFlowCommand, statementOnly){ +if (this.thisContext == null) return; +if (this.thisContext.scriptLevel > 0) this.scriptLevel = this.thisContext.scriptLevel - 1; +var scTemp = (isFlowCommand ? this.getScriptContext("popFlow") : null); +this.restoreScriptContext(this.thisContext, true, isFlowCommand, statementOnly); +if (scTemp != null) this.restoreScriptContext(scTemp, true, false, true); +if (this.debugHigh || this.isCmdLine_c_or_C_Option) JU.Logger.info("--<<------------".substring(0, Math.min(15, this.scriptLevel + 5)) + (this.scriptLevel + 1) + " " + this.scriptFileName + " isFlow " + isFlowCommand + " thisContext=" + (this.thisContext == null ? "" : "" + this.thisContext.id) + " pc=" + this.pc + "-->" + this.pc + " path=" + (this.thisContext == null ? "" : this.thisContext.contextPath)); +}, "~B,~B"); +Clazz.defineMethod(c$, "restoreScriptContext", +function(context, isPopContext, isFlowCommand, statementOnly){ +this.executing = !this.chk; +if (context == null) return; +if (!isFlowCommand) { +this.st = context.statement; +this.slen = context.statementLength; +this.pc = context.pc; +this.lineEnd = context.lineEnd; +this.pcEnd = context.pcEnd; +if (statementOnly) return; +}if (context.privateFuncs != null) this.privateFuncs = context.privateFuncs; +this.mustResumeEval = context.mustResumeEval; +this.script = context.script; +this.lineNumbers = context.lineNumbers; +this.lineIndices = context.lineIndices; +this.aatoken = context.restoreTokens(); +this.contextVariables = context.vars; +this.scriptExtensions = context.scriptExtensions; +this.isEditor = context.isEditor; +if (isPopContext) { +this.contextPath = context.contextPath; +var pt = (this.contextPath == null ? -1 : this.contextPath.indexOf(" >> ")); +if (pt >= 0) this.contextPath = this.contextPath.substring(0, pt); +this.scriptFileName = context.scriptFileName; +this.parallelProcessor = context.parallelProcessor; +this.functionName = context.functionName; +this.iToken = context.iToken; +this.theToken = context.theToken; +this.theTok = context.theTok; +this.outputBuffer = context.outputBuffer; +this.$isStateScript = context.isStateScript; +this.thisContext = context.parentContext; +this.allowJSThreads = context.allowJSThreads; +if (this.debugHigh || this.isCmdLine_c_or_C_Option) JU.Logger.info("--r------------".substring(0, Math.min(15, this.scriptLevel + 5)) + this.scriptLevel + " " + this.scriptFileName + " isPop " + isPopContext + " isFlow " + isFlowCommand + " context.id=" + context.id + " pc=" + this.pc + "-->" + context.pc + " " + this.contextPath); +} else { +this.$error = (context.errorType != null); +this.errorMessage = context.errorMessage; +this.errorMessageUntranslated = context.errorMessageUntranslated; +this.iCommandError = context.iCommandError; +this.errorType = context.errorType; +}}, "JS.ScriptContext,~B,~B,~B"); +Clazz.defineMethod(c$, "setException", +function(sx, msg, untranslated){ +sx.untranslated = (untranslated == null ? msg : untranslated); +var isThrown = "!".equals(untranslated); +this.errorType = msg; +this.iCommandError = this.pc; +if (sx.message == null) { +sx.message = ""; +return; +}var s = JS.ScriptEval.getContextTrace(this.vwr, this.getScriptContext("setException"), null, true).toString(); +while (this.thisContext != null && !this.thisContext.isTryCatch) this.popContext(false, false); + +if (sx.message.indexOf(s) < 0) { +sx.message += s; +sx.untranslated += s; +}var done = (isThrown || this.thisContext != null || this.chk || msg.indexOf("NOTE: file recognized as a script file: ") >= 0); +this.resumeViewer(isThrown ? "throw context" : "scriptException", isThrown); +if (done) return; +this.isFuncReturn = false; +JU.Logger.error("eval ERROR: " + s + "\n" + this.toString()); +if (this.vwr.autoExit) this.vwr.exitJmol(); +}, "JS.ScriptException,~S,~S"); +c$.statementAsString = Clazz.defineMethod(c$, "statementAsString", +function(vwr, statement, iTok, doLogMessages){ +if (statement == null || statement.length == 0) return ""; +var sb = new JU.SB(); +var tok = statement[0].tok; +switch (tok) { +case 0: +return statement[0].value; +case 102409: +if (statement.length == 2 && (statement[1].tok == 134320141 || statement[1].tok == 102436)) return ((statement[1].value)).toString(); +} +var useBraces = true; +var inBrace = false; +var inClauseDefine = false; +var setEquals = (statement.length > 1 && tok == 36867 && statement[0].value.equals("") && (statement[0].intValue == 61 || statement[0].intValue == 35) && statement[1].tok != 1073742325); +var len = statement.length; +for (var i = 0; i < len; ++i) { +var token = statement[i]; +if (token == null) { +len = i; +break; +}if (iTok == i - 1) sb.append(" <<"); +if (i != 0) sb.appendC(' '); +if (i == 2 && setEquals) { +if ((setEquals = (token.tok != 268440324)) || statement[0].intValue == 35) { +sb.append(setEquals ? "= " : "== "); +if (!setEquals) continue; +}}var tval = token.value; +switch (token.tok) { +case 1073742325: +if (useBraces) sb.append("{"); +continue; +case 1073742326: +if (inClauseDefine && i == statement.length - 1) useBraces = false; +if (useBraces) sb.append("}"); +continue; +case 268437504: +case 268437505: +break; +case 1073742332: +case 1073742338: +inBrace = (token.tok == 1073742332); +break; +case 12290: +if (i > 0 && (token.value).equals("define")) { +sb.append("@"); +if (i + 1 < statement.length && statement[i + 1].tok == 1073742325) { +if (!useBraces) inClauseDefine = true; +useBraces = true; +}continue; +}break; +case 1073742335: +sb.append("true"); +tval = null; +break; +case 1073742334: +sb.append("false"); +tval = null; +break; +case 1275082241: +break; +case 2: +sb.appendI(token.intValue); +tval = null; +break; +case 8: +case 9: +case 10: +sb.append(JS.SV.sValue(token)); +tval = null; +break; +case 6: +if (Boolean.TRUE === (token.value).get("$_BINARY_$")) { +sb.append(""); +tval = null; +break; +}case 7: +sb.append((token).escape()); +tval = null; +break; +case 5: +sb.appendC('^'); +tval = null; +break; +case 1073742363: +if (token.intValue != 2147483647) sb.appendI(token.intValue); + else sb.append(JM.Group.getSeqcodeStringFor(JS.ScriptExpr.getSeqCode(token))); +token = statement[++i]; +sb.appendC(' '); +sb.append(inBrace ? "-" : "- "); +case 1073742362: +if (token.intValue != 2147483647) sb.appendI(token.intValue); + else sb.append(JM.Group.getSeqcodeStringFor(JS.ScriptExpr.getSeqCode(token))); +tval = null; +break; +case 1073742357: +sb.append("*:"); +sb.append(vwr.getChainIDStr(token.intValue)); +tval = null; +break; +case 1073742355: +sb.append("*%"); +if (token.value != null) sb.append(token.value.toString()); +tval = null; +break; +case 1073742358: +sb.append("*/"); +case 1073742359: +case 3: +if (token.intValue < 2147483647) { +sb.append(JU.Escape.escapeModelFileNumber(token.intValue)); +} else { +sb.append("" + token.value); +}tval = null; +break; +case 1073742361: +sb.appendC('['); +var ptr = token.intValue * 6 + 1; +sb.append(JM.Group.standardGroupList.substring(ptr, ptr + 3).trim()); +sb.appendC(']'); +tval = null; +break; +case 1073742360: +sb.appendC('['); +sb.appendO(token.value); +sb.appendC(']'); +tval = null; +break; +case 1073742356: +sb.append("*."); +break; +case 1094713349: +if (Clazz.instanceOf(token.value,"JU.P3")) { +var pt = token.value; +sb.append("cell=").append(JU.Escape.eP(pt)); +tval = null; +break; +}break; +case 4: +sb.append("\"").appendO(token.value).append("\""); +tval = null; +break; +case 268440324: +case 268440322: +case 268440321: +case 268440320: +case 268440323: +case 268440325: +if (token.intValue == 1715472409) { +sb.append(statement[++i].value).append(" "); +} else if (token.intValue != 2147483647) sb.append(JS.T.nameOf(token.intValue)).append(" "); +break; +case 364558: +tval = null; +break; +case 102409: +sb.append("end"); +tval = null; +break; +default: +if (JS.T.tokAttr(token.tok, 1073741824) || !doLogMessages) break; +sb.appendC('\n').append(token.toString()).appendC('\n'); +tval = null; +break; +} +if (tval != null) sb.append(token.value.toString()); +if (iTok == i) sb.append("<<<<"); +} +return sb.toString(); +}, "JV.Viewer,~A,~N,~B"); +Clazz.overrideMethod(c$, "setObjectPropSafe", +function(id, tokCommand){ +try { +return this.setObjectProp(id, tokCommand, -1); +} catch (e) { +if (Clazz.exceptionOf(e,"JS.ScriptException")){ +return null; +} else { +throw e; +} +} +}, "~S,~N"); +Clazz.defineMethod(c$, "setAtomProp", +function(prop, value, bs){ +this.setShapePropertyBs(0, prop, value, bs); +}, "~S,~O,JU.BS"); +Clazz.defineMethod(c$, "restrictSelected", +function(isBond, doInvert){ +if (!this.chk) this.sm.restrictSelected(isBond, doInvert); +}, "~B,~B"); +Clazz.defineMethod(c$, "showString", +function(str){ +this.showStringPrint(str, false); +}, "~S"); +Clazz.overrideMethod(c$, "showStringPrint", +function(s, mustDo){ +if (this.chk || s == null) return; +if (this.outputBuffer == null) this.vwr.showString(s, mustDo); + else this.appendBuffer(s, mustDo); +}, "~S,~B"); +Clazz.defineMethod(c$, "report", +function(s, isError){ +if (this.chk || isError && s.indexOf(" of try:") >= 0) return; +if (this.outputBuffer == null) this.vwr.scriptStatus(s); + else this.appendBuffer(s, isError); +}, "~S,~B"); +Clazz.defineMethod(c$, "appendBuffer", +function(str, mustDo){ +if (mustDo || this.isFuncReturn || JU.Logger.isActiveLevel(4)) this.outputBuffer.append(str).appendC('\n'); +}, "~S,~B"); +Clazz.defineMethod(c$, "addProcess", +function(vProcess, pc, pt){ +if (this.parallelProcessor == null) return; +var statements = new Array(pt); +for (var i = 0; i < vProcess.size(); i++) statements[i + 1 - pc] = vProcess.get(i); + +var context = this.getScriptContext("addProcess"); +context.saveTokens(statements); +context.pc = 1 - pc; +context.pcEnd = pt; +this.parallelProcessor.addProcess("p" + (++JS.ScriptEval.iProcess), context); +}, "JU.Lst,~N,~N"); +Clazz.defineMethod(c$, "checkContinue", +function(){ +if (this.executionStopped) return false; +if (this.executionStepping && this.isCommandDisplayable(this.pc)) { +this.vwr.scriptStatusMsg("Next: " + this.getNextStatement(), "stepping -- type RESUME to continue"); +this.executionPaused = true; +} else if (!this.executionPaused) { +return true; +}if (JU.Logger.debugging) { +JU.Logger.debug("script execution paused at command " + (this.pc + 1) + " level " + this.scriptLevel + ": " + this.thisCommand); +}this.refresh(false); +var doShowPC = true; +while (this.executionPaused) { +if (!this.isJS) { +Thread.yield(); +}if (this.isEditor && doShowPC) this.notifyScriptEditor(this.pc); +doShowPC = false; +this.vwr.popHoldRepaint("pause \u0001## REPAINT_IGNORE ##"); +var script = this.vwr.getInsertedCommand(); +if (script.length > 0) { +this.resumePausedExecution(); +this.setErrorMessage(null); +var scSave = this.getScriptContext("script insertion"); +this.pc--; +try { +this.runScript(script); +} catch (e$$) { +if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +this.setErrorMessage("" + e); +} +} else if (Clazz.exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.setErrorMessage("" + er); +} +} else { +throw e$$; +} +} +if (this.$error) { +this.report(this.errorMessage, true); +this.setErrorMessage(null); +}this.restoreScriptContext(scSave, true, false, false); +if (!script.startsWith("resume\1") && !script.startsWith("step\1")) this.pauseExecution(false); +}this.doDelay(-100); +this.vwr.pushHoldRepaintWhy("pause"); +} +this.notifyResumeStatus(); +return !this.$error && !this.executionStopped; +}); +Clazz.defineMethod(c$, "delayScript", +function(millis){ +if (this.vwr.autoExit) return; +this.stopScriptThreads(); +if (this.vwr.captureParams != null && millis > 0) { +this.vwr.captureParams.put("captureDelayMS", Integer.$valueOf(millis)); +}this.scriptDelayThread = new JS.ScriptDelayThread(this, this.vwr, millis); +if (this.isJS && this.allowJSThreads) { +this.pc = this.aatoken.length; +}this.scriptDelayThread.run(); +}, "~N"); +Clazz.defineMethod(c$, "doDelay", +function(millis){ +if (!this.useThreads()) return; +if (this.isJS) throw new JS.ScriptInterruption(this, "delay", millis); +this.delayScript(millis); +}, "~N"); +Clazz.overrideMethod(c$, "evalParallel", +function(context, shapeManager){ +return this.getCmdExt().evalParallel(context, shapeManager); +}, "JS.ScriptContext,JV.ShapeManager"); +Clazz.defineMethod(c$, "isCommandDisplayable", +function(i){ +if (i >= this.aatoken.length || i >= this.pcEnd || this.aatoken[i] == null) return false; +return (this.lineIndices[i][1] > this.lineIndices[i][0]); +}, "~N"); +Clazz.overrideMethod(c$, "loadFileResourceAsync", +function(fileName){ +this.loadFileAsync(null, fileName, -Math.abs(fileName.hashCode()), false); +}, "~S"); +Clazz.defineMethod(c$, "loadFileAsync", +function(prefix, filename, i, doClear){ +if (!filename.startsWith("?")) { +var fullPathNameOrError = this.vwr.getFullPathNameOrError(filename); +filename = fullPathNameOrError[0]; +if (fullPathNameOrError[1] != null) this.errorStr(17, filename + ":" + fullPathNameOrError[1]); +if (this.vwr.fm.cacheGet(filename, false) != null) { +this.cancelFileThread(); +return filename; +}}if (prefix != null) prefix = "cache://local" + prefix; +var key = this.pc + "_" + i + "_" + filename; +var cacheName; +if (this.thisContext == null) { +this.pushContext(null, "loadFileAsync"); +}if (this.thisContext.htFileCache == null) { +this.thisContext.htFileCache = new java.util.Hashtable(); +}cacheName = this.thisContext.htFileCache.get(key); +if (cacheName != null && cacheName.length > 0) { +this.cancelFileThread(); +this.vwr.queueOnHold = false; +if ("#CANCELED#".equals(cacheName) || "#CANCELED#".equals(this.vwr.fm.cacheGet(cacheName, false))) this.evalError("#CANCELED#", null); +return cacheName; +}this.thisContext.htFileCache.put(key, cacheName = prefix + System.currentTimeMillis()); +if (doClear) this.vwr.cacheFileByName(prefix + "*", false); +this.fileLoadThread = new JS.FileLoadThread(this, this.vwr, filename, key, cacheName); +if (this.vwr.testAsync) this.fileLoadThread.start(); + else this.fileLoadThread.run(); +if (i < 0) this.fileLoadThread = null; +throw new JS.ScriptInterruption(this, "load", 1); +}, "~S,~S,~N,~B"); +Clazz.defineMethod(c$, "cancelFileThread", +function(){ +this.fileLoadThread = null; +if (this.thisContext != null && this.thisContext.why === "loadFileAsync") { +this.popContext(false, false); +}}); +Clazz.defineMethod(c$, "logLoadInfo", +function(msg, isData){ +if (msg.length > 0) JU.Logger.info(msg); +var sb = new JU.SB(); +var modelCount = this.vwr.ms.mc; +if (modelCount > 1 && !isData) sb.append((this.vwr.am.isMovie ? this.vwr.am.getFrameCount() + " frames" : modelCount + " models") + "\n"); +for (var i = 0; i < modelCount; i++) { +var moData = this.vwr.ms.getInfo(i, "moData"); +if (moData == null || !moData.containsKey("mos")) continue; +sb.appendI((moData.get("mos")).size()).append(" molecular orbitals in model ").append(this.vwr.getModelNumberDotted(i)).append("\n"); +} +if (sb.length() > 0) this.showString(sb.toString()); +}, "~S,~B"); +Clazz.overrideMethod(c$, "notifyResumeStatus", +function(){ +if (!this.chk && !this.executionStopped && !this.executionStepping && !this.executionPaused) { +var isInterrupt = (this.$error || this.executionStopped); +this.vwr.scriptStatus("script execution " + (isInterrupt ? "interrupted" : "resumed")); +}}); +Clazz.defineMethod(c$, "refresh", +function(doDelay){ +if (this.chk) return; +this.vwr.setTainted(true); +this.vwr.requestRepaintAndWait("refresh cmd"); +if (this.isJS && doDelay) this.doDelay(10); +}, "~B"); +Clazz.overrideMethod(c$, "stopScriptThreads", +function(){ +if (this.scriptDelayThread != null) { +this.scriptDelayThread.interrupt(); +this.scriptDelayThread = null; +}if (this.fileLoadThread != null) { +this.fileLoadThread.interrupt(); +this.fileLoadThread.resumeEval(); +this.cancelFileThread(); +}}); +Clazz.defineMethod(c$, "getErrorLineMessage2", +function(){ +return JS.ScriptError.getErrorLineMessage(this.functionName, this.scriptFileName, this.getLinenumber(null), this.pc, JS.ScriptEval.statementAsString(this.vwr, this.st, -9999, this.debugHigh)); +}); +Clazz.defineMethod(c$, "getLinenumber", +function(c){ +return (c == null ? this.lineNumbers[this.pc] : c.lineNumbers[c.pc]); +}, "JS.ScriptContext"); +Clazz.defineMethod(c$, "dispatchCommands", +function(isSpt, fromFunc, isTry){ +if (this.sm == null) this.sm = this.vwr.shm; +this.debugScript = this.debugHigh = false; +if (!this.chk) this.setDebugging(); +if (this.pcEnd == 0) this.pcEnd = 2147483647; +if (this.lineEnd == 0) this.lineEnd = 2147483647; +if (this.aatoken == null) return true; +if (!this.tQuiet) { +this.tQuiet = (this.vwr.getInt(536870922) < 0); +}var allowJSInterrupt = (this.isJS && !fromFunc && this.useThreads() && this.vwr.getInt(536870922) >= 0); +this.commandLoop(allowJSInterrupt); +if (this.chk) return true; +var script = this.vwr.getInsertedCommand(); +if (!"".equals(script)) this.runScriptBuffer(script, null, false); + else if (isSpt && this.debugScript && this.vwr.getBoolean(603979879)) this.vwr.getChimeMessenger().update(null); +if (!this.mustResumeEval && !allowJSInterrupt || fromFunc) return true; +if (!isTry && this.mustResumeEval || this.thisContext == null) { +var done = (this.thisContext == null); +this.resumeEval(this.thisContext); +this.mustResumeEval = false; +return done; +}return true; +}, "~B,~B,~B"); +Clazz.defineMethod(c$, "commandLoop", +function(allowJSInterrupt){ +var lastCommand = ""; +var isForCheck = false; +var vProcess = null; +var lastTime = System.currentTimeMillis(); +if (this.debugScript && this.debugHigh && !this.chk) { +for (var i = this.pc; i < this.aatoken.length && i < this.pcEnd; i++) { +JU.Logger.info("Command " + i); +if (this.debugScript) this.logDebugScript(this.aatoken[i], 0); +} +JU.Logger.info("-----"); +}var isFirst = true; +for (; this.pc < this.aatoken.length && this.pc < this.pcEnd; this.pc++) { +if (allowJSInterrupt) { +if (!this.executionPaused && System.currentTimeMillis() - lastTime > 1000000) { +this.pc--; +this.doDelay(-1); +}lastTime = System.currentTimeMillis(); +}if (!this.chk && (!this.executionStepping || !isFirst) && !this.checkContinue()) break; +isFirst = false; +if (this.pc >= this.lineNumbers.length || this.lineNumbers[this.pc] > this.lineEnd) break; +if (this.debugHigh) { +var timeBegin = 0; +timeBegin = System.currentTimeMillis(); +this.vwr.scriptStatus("Eval.dispatchCommands():" + timeBegin); +this.vwr.scriptStatus(this.script); +}if (this.debugScript && !this.chk) JU.Logger.info("Command " + this.pc + (this.thisContext == null ? "" : " path=" + this.thisContext.contextPath)); +this.theToken = (this.aatoken[this.pc].length == 0 ? null : this.aatoken[this.pc][0]); +if (!this.historyDisabled && !this.chk && this.scriptLevel <= JS.ScriptEval.commandHistoryLevelMax && !this.tQuiet) { +var cmdLine = this.getCommand(this.pc, true, true); +if (this.theToken != null && cmdLine.length > 0 && !cmdLine.equals(lastCommand) && (this.theToken.tok == 134320141 || this.theToken.tok == 102436 || !JS.T.tokAttr(this.theToken.tok, 102400))) this.vwr.addCommand(lastCommand = cmdLine); +}if (!this.chk && allowJSInterrupt) { +var script = this.vwr.getInsertedCommand(); +if (!"".equals(script)) this.runScript(script); +}if (!this.setStatement(this.aatoken[this.pc], 1)) { +continue; +}this.thisCommand = this.getCommand(this.pc, false, true); +if (this.debugHigh || this.debugScript) JU.Logger.info(this.thisCommand); +var nextCommand = this.getCommand(this.pc + 1, false, true); +this.fullCommand = this.thisCommand + (nextCommand.startsWith("#") ? nextCommand : ""); +this.getToken(0); +this.iToken = 0; +if ((this.listCommands || !this.chk && this.scriptLevel > 0) && !this.isJS) { +var milliSecDelay = this.vwr.getInt(536870922); +if (this.listCommands || milliSecDelay > 0) { +if (milliSecDelay > 0) this.delayScript(-milliSecDelay); +this.vwr.scriptEcho("$[" + this.scriptLevel + "." + this.lineNumbers[this.pc] + "." + (this.pc + 1) + "] " + this.thisCommand); +}}if (vProcess != null && (this.theTok != 102409 || this.slen < 2 || this.st[1].tok != 102439)) { +vProcess.addLast(this.st); +continue; +}if (this.chk) { +if (this.isCmdLine_c_or_C_Option) JU.Logger.info(this.thisCommand); +if (this.slen == 1 && this.st[0].tok != 134320141 && this.st[0].tok != 102436) continue; +} else { +if (this.debugScript) this.logDebugScript(this.st, 0); +if (this.scriptLevel == 0 && this.vwr.g.logCommands) this.vwr.log(this.thisCommand); +if (this.debugHigh && this.theToken != null) JU.Logger.debug(this.theToken.toString()); +if (!this.isJS && this.isEditor && this.scriptLevel == 0) { +this.notifyScriptEditor(this.pc); +try { +Thread.sleep(100); +} catch (e) { +if (Clazz.exceptionOf(e,"InterruptedException")){ +} else { +throw e; +} +} +}}if (this.theToken == null) continue; +var tok = this.theToken.tok; +switch (tok) { +case 36867: +this.cmdSet(); +continue; +case 134320648: +isForCheck = this.cmdFor(tok, isForCheck); +continue; +case 102439: +this.pushContext(this.theToken, "PROCESS"); +if (this.parallelProcessor != null) vProcess = new JU.Lst(); +continue; +default: +if (JS.T.tokAttr(tok, 102400)) { +isForCheck = this.cmdFlow(tok, isForCheck, vProcess); +if (this.theTok == 102439) vProcess = null; +continue; +}this.processCommand(tok); +this.setCursorWait(false); +if (tok != 266298 && this.executionStepping) { +this.executionPaused = (this.isCommandDisplayable(this.pc + 1)); +}} +} +}, "~B"); +Clazz.defineMethod(c$, "notifyScriptEditor", +function(pc){ +this.vwr.notifyScriptEditor((this.lineIndices[pc][0] << 16) | this.lineIndices[pc][1], null); +}, "~N"); +Clazz.defineMethod(c$, "processCommand", +function(tok){ +if (JS.T.tokAttr(this.theToken.tok, 135168)) { +this.processShapeCommand(tok); +return; +}switch (tok) { +case 0: +if (!this.chk && this.vwr.getBoolean(603979879)) this.vwr.getChimeMessenger().showHash(this.outputBuffer, this.theToken.value); +break; +case 1275335685: +this.pushContext(this.theToken, "PUSH"); +break; +case 1275334681: +this.popContext(true, false); +break; +case 268436482: +break; +case 4097: +this.cmdAnimation(); +break; +case 1610616835: +this.cmdBackground(1); +break; +case 4100: +this.cmdBind(); +break; +case 4101: +this.cmdBondorder(); +break; +case 20488: +this.cmdCD(); +break; +case 12289: +this.cmdCenter(1); +break; +case 1765808134: +this.cmdColor(); +break; +case 12290: +this.cmdDefine(); +break; +case 528397: +this.cmdDelay(); +break; +case 12291: +this.cmdDelete(); +break; +case 554176526: +this.cmdSlab(true); +break; +case 1610625028: +this.cmdDisplay(true); +break; +case 266255: +case 266281: +if (this.chk) break; +if (this.pc > 0 && this.theToken.tok == 266255 && !this.vwr.autoExit) { +this.vwr.clearScriptQueue(); +}this.executionStopped = (this.pc > 0 || !this.vwr.g.useScriptQueue); +break; +case 266256: +if (this.chk) return; +if (this.outputBuffer != null) JU.Logger.warn(this.outputBuffer.toString()); +this.vwr.exitJmol(); +break; +case 1228935687: +this.cmdFile(); +break; +case 12293: +this.cmdFixed(); +break; +case 4114: +this.cmdFont(-1, 0); +break; +case 4115: +case 1094717454: +this.cmdModel(1); +break; +case 1073741824: +this.cmdFunc(); +break; +case 1275072526: +this.cmdGetProperty(); +break; +case 20500: +if (this.vwr.headless) break; +this.cmdGoto(true); +break; +case 20482: +this.cmdHelp(); +break; +case 12294: +this.cmdDisplay(false); +break; +case 1613238294: +this.cmdHbond(); +break; +case 1610616855: +this.cmdHistory(1); +break; +case 544771: +this.cmdHover(); +break; +case 4121: +switch (this.slen) { +case 1: +if (!this.chk) this.vwr.initialize(!this.$isStateScript, false); +break; +case 2: +if (this.tokAt(1) == 1275068433) { +this.vwr.getInchi(null, null, null); +if (this.chk) { +} else { +if (JV.Viewer.isJS) { +this.vwr.showString("InChI module initialized", false); +this.doDelay(1); +}}break; +}default: +this.bad(); +} +break; +case 134238732: +this.cmdScript(134238732, null, null, null); +break; +case 134223363: +this.cmdLoad(); +break; +case 36869: +this.cmdLog(); +break; +case 528411: +this.cmdLoop(); +break; +case 20485: +this.cmdMessage(); +break; +case 4128: +this.cmdMove(); +break; +case 4129: +this.cmdMoveto(); +break; +case 20487: +this.cmdPause(); +break; +case 36865: +this.cmdPrint(); +break; +case 134256129: +this.cmdPrompt(); +break; +case 536875059: +this.cmdScale(1); +break; +case 603984065: +case 4139: +case 4140: +case 4165: +this.cmdUndoRedo(tok); +break; +case 266284: +this.refresh(true); +break; +case 4141: +this.cmdReset(); +break; +case 12295: +this.cmdRestrict(); +break; +case 4143: +if (this.slen == 1) { +if (!this.chk) this.resumePausedExecution(); +break; +}case 4142: +this.cmdRestore(); +break; +case 36866: +this.cmdReturn(null); +break; +case 528432: +this.cmdRotate(false, false); +break; +case 4145: +this.cmdRotate(false, true); +break; +case 4146: +this.cmdSave(); +break; +case 134222850: +this.cmdScript(134222850, null, null, null); +break; +case 1275082241: +this.cmdSelect(1); +break; +case 1611141172: +this.cmdSelectionHalos(1); +break; +case 554176565: +this.cmdSlab(false); +break; +case 1611141175: +this.cmdRotate(true, false); +break; +case 1611141176: +this.cmdSsbond(); +break; +case 266298: +if (this.cmdPause()) this.stepPausedExecution(); +break; +case 1639976963: +this.cmdStructure(); +break; +case 2109448: +this.cmdSubset(); +break; +case 4156: +this.cmdSync(); +break; +case 36870: +this.cmdThrow(); +break; +case 536875070: +this.cmdTimeout(1); +break; +case 4160: +this.cmdTranslate(false); +break; +case 4162: +this.cmdTranslate(true); +break; +case 4163: +this.cmdUnbind(); +break; +case 36868: +break; +case 4166: +this.cmdVibration(); +break; +case 12297: +this.cmdZap(true); +break; +case 4168: +this.cmdZoom(false); +break; +case 4170: +this.cmdZoom(true); +break; +default: +this.checkExtension(this.theToken.tok); +} +}, "~N"); +Clazz.defineMethod(c$, "checkExtension", +function(tok){ +switch (tok) { +case 4098: +case 134221829: +case 4102: +case 4103: +case 4105: +case 134221831: +case 1094717448: +case 4106: +case 528395: +case 1613238294: +case 4120: +case 4122: +case 528443: +case 4124: +case 4125: +case 4126: +case 603983903: +case 1275072532: +case 4130: +case 134221834: +case 4131: +case 4133: +case 134221850: +case 4138: +case 134222350: +case 134221856: +this.getCmdExt().dispatch(tok, false, this.st); +break; +default: +System.out.println(JS.T.nameOf(tok) + " is not a command"); +this.error(47); +} +}, "~N"); +Clazz.defineMethod(c$, "processShapeCommand", +function(tok){ +var iShape = 0; +switch (tok) { +case 1611272194: +iShape = 34; +break; +case 1114249217: +iShape = 9; +break; +case 1812599299: +iShape = 32; +break; +case 1112152066: +iShape = 11; +break; +case 135174: +iShape = 23; +break; +case 134353926: +iShape = 25; +break; +case 135175: +iShape = 17; +break; +case 1112150019: +iShape = 16; +break; +case 135176: +iShape = 22; +break; +case 537022465: +iShape = 31; +break; +case 1112150020: +iShape = 20; +break; +case 1611272202: +iShape = 36; +break; +case 1112150021: +iShape = 19; +break; +case 1112152070: +iShape = 8; +break; +case 135180: +iShape = 24; +break; +case 1825200146: +iShape = 5; +break; +case 135182: +iShape = 26; +break; +case 537006096: +case 1745489939: +iShape = 6; +break; +case 1112152071: +iShape = 13; +break; +case 1073877010: +iShape = 27; +break; +case 1073877011: +iShape = 28; +break; +case 135190: +iShape = 30; +break; +case 135188: +iShape = 29; +break; +case 1275203608: +iShape = 21; +break; +case 1112152073: +iShape = 14; +break; +case 1112152074: +iShape = 15; +break; +case 1112152075: +iShape = 0; +break; +case 1112152076: +iShape = 7; +break; +case 1649022989: +iShape = 12; +break; +case 659482: +iShape = 4; +break; +case 1112152078: +iShape = 10; +break; +case 1814695966: +iShape = 33; +break; +case 135198: +iShape = 18; +break; +case 659488: +iShape = 1; +break; +default: +this.error(47); +} +if (this.sm.getShape(iShape) == null && this.slen == 2) { +switch (this.st[1].tok) { +case 1073742334: +case 12291: +case 1073742333: +return; +} +}switch (tok) { +case 1114249217: +case 1112152066: +case 1112152071: +case 1112152073: +case 1112152074: +case 1649022989: +case 1112152078: +this.setSizeBio(iShape); +return; +case 1112150019: +case 1112150021: +this.cmdDots(iShape); +return; +case 1112152070: +case 1112152075: +case 1112152076: +this.setSize(iShape, (tok == 1112152070 ? -1000.0 : 1)); +return; +case 1825200146: +this.cmdLabel(1, null); +return; +case 135198: +this.cmdVector(); +return; +case 659488: +this.cmdWireframe(); +return; +} +switch (tok) { +case 1611272194: +this.cmdAxes(1); +return; +case 1812599299: +this.cmdBoundbox(1); +return; +case 537022465: +this.cmdEcho(1); +return; +case 1611272202: +this.cmdFrank(1); +return; +case 1814695966: +this.cmdUnitcell(1); +return; +case 1112150020: +case 537006096: +case 1745489939: +case 1275203608: +case 659482: +this.getCmdExt().dispatch(iShape, false, this.st); +return; +case 135174: +case 134353926: +case 135175: +case 135176: +case 135180: +case 135182: +case 1073877010: +case 1073877011: +case 135190: +case 135188: +this.getIsoExt().dispatch(iShape, false, this.st); +return; +} +}, "~N"); +Clazz.defineMethod(c$, "cmdAnimation", +function(){ +var animate = false; +switch (this.getToken(1).tok) { +case 1073742335: +animate = true; +case 1073742334: +if (!this.chk) this.vwr.setAnimationOn(animate); +break; +case 1073742029: +var morphCount = Clazz.floatToInt(this.floatParameter(2)); +if (!this.chk) this.vwr.am.setMorphCount(Math.abs(morphCount)); +break; +case 1610625028: +this.iToken = 2; +var bs = (this.tokAt(2) == 1073742327 ? null : this.atomExpressionAt(2)); +this.checkLength(this.iToken + 1); +if (!this.chk) this.vwr.setAnimDisplay(bs); +return; +case 4115: +if (this.isArrayParameter(2)) this.setFrameSet(2); + else this.cmdModel(2); +break; +case 1073742024: +var startDelay = 1; +var endDelay = 1; +if (this.slen > 5) this.bad(); +var animationMode = JS.T.getTokFromName(this.paramAsStr(2)); +switch (animationMode) { +case 1073742070: +startDelay = endDelay = 0; +break; +case 528411: +case 1073742082: +break; +default: +this.invArg(); +} +if (this.slen >= 4) { +startDelay = endDelay = this.floatParameter(3); +if (this.slen == 5) endDelay = this.floatParameter(4); +}if (!this.chk) this.vwr.am.setAnimationReplayMode(animationMode, startDelay, endDelay); +break; +case 1073741918: +var i = 2; +var direction = 0; +switch (this.tokAt(i)) { +case 268440576: +direction = -this.intParameter(++i); +break; +case 268440577: +direction = this.intParameter(++i); +break; +case 2: +direction = this.intParameter(i); +break; +default: +this.invArg(); +} +this.checkLength(++i); +if (direction != 1 && direction != -1) this.errorStr2(35, "-1", "1"); +if (!this.chk) this.vwr.am.setAnimationDirection(direction); +break; +case 1073741950: +this.setIntProperty("animationFps", this.intParameter(this.checkLast(2))); +break; +default: +this.frameControl(1); +} +}); +Clazz.defineMethod(c$, "setFrameSet", +function(i){ +var frames = this.expandFloatArray(this.floatParameterSet(i, 0, 2147483647), 1, false); +this.checkLength(this.iToken + 1); +if (this.chk) return; +var movie = new java.util.Hashtable(); +if (frames.length > 0) movie.put("frames", frames); +movie.put("currentFrame", Integer.$valueOf(0)); +this.vwr.am.setMovie(movie); +}, "~N"); +Clazz.defineMethod(c$, "cmdAxes", +function(index){ +var tickInfo = this.tickParamAsStr(index, true, true, false); +index = this.iToken + 1; +var tok = this.tokAt(index); +var type = this.optParameterAsString(index).toLowerCase(); +if (this.slen == index + 1 && JU.PT.isOneOf(type, ";window;unitcell;molecular;")) { +this.setBooleanProperty("axes" + type, true); +return; +}switch (tok) { +case 1073742066: +this.setFloatProperty("axisOffset", this.floatParameter(++index)); +this.checkLast(this.iToken); +return; +case 12289: +this.setShapeProperty(34, "origin", this.centerParameter(index + 1, null)); +this.checkLast(this.iToken); +return; +case 1140850696: +var s = this.stringParameter(index + 1); +if (!JU.PT.isOneOf(s, ";a;b;c;ab;ac;bc;abc;")) s = null; +this.setShapeProperty(34, "type", s); +this.checkLast(this.iToken); +return; +case 536875059: +this.setFloatProperty("axesScale", this.floatParameter(this.checkLast(++index))); +return; +case 1825200146: +switch (tok = this.tokAt(index + 1)) { +case 1073742334: +case 1073742335: +this.checkLength(index + 2); +this.setShapeProperty(34, "labels" + (tok == 1073742335 ? "On" : "Off"), null); +return; +} +var sOrigin = null; +switch (this.slen - index) { +case 7: +this.setShapeProperty(34, "labels", Clazz.newArray(-1, [this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index)])); +break; +case 5: +sOrigin = this.paramAsStr(index + 4); +case 4: +this.setShapeProperty(34, "labels", Clazz.newArray(-1, [this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index), sOrigin])); +break; +default: +this.bad(); +} +return; +} +if (type.equals("position")) { +var xyp; +if (this.tokAt(++index) == 1073742334) { +xyp = new JU.P3(); +} else { +xyp = this.xypParameter(index); +if (xyp == null) this.invArg(); +index = this.iToken; +this.setShapeProperty(34, "axes2", (this.tokAt(index + 1) == 4 ? this.stringParameter(++index) : null)); +}this.setShapeProperty(34, "position", xyp); +return; +}var mad10 = this.getSetAxesTypeMad10(index); +if (this.chk || mad10 == 2147483647) return; +this.setObjectMad10(34, "axes", mad10); +if (tickInfo != null) this.setShapeProperty(34, "tickInfo", tickInfo); +}, "~N"); +Clazz.defineMethod(c$, "cmdBackground", +function(i){ +this.getToken(i); +var argb; +if (this.theTok == 4120) { +var o = null; +switch (this.tokAt(++i)) { +case 15: +case 6: +o = this.getToken(i).value; +break; +default: +var file = this.paramAsStr(this.checkLast(i)); +if (this.chk) return; +if (file.equalsIgnoreCase("none") || file.length == 0) { +this.vwr.setBackgroundImage(null, null); +return; +}o = (file.startsWith(";base64,") ? new JU.BArray(JU.Base64.decodeBase64(file)) : file); +} +if (this.vwr.fm.loadImage(o, null, !this.useThreads())) throw new JS.ScriptInterruption(this, "backgroundImage", 1); +return; +}if (this.theTok == 1073742333 || this.isColorParam(i)) { +argb = this.getArgbParamLast(i, true); +if (this.chk) return; +this.setObjectArgb("background", argb); +this.vwr.setBackgroundImage(null, null); +return; +}this.colorShape(-this.theTok, i + 1, true); +}, "~N"); +Clazz.defineMethod(c$, "cmdBind", +function(){ +var mouseAction = this.stringParameter(1); +var name = this.paramAsStr(2); +this.checkLength(3); +if (!this.chk) this.vwr.bindAction(mouseAction, name); +}); +Clazz.defineMethod(c$, "cmdBondorder", +function(){ +this.checkLength(-3); +var order = 0; +switch (this.getToken(1).tok) { +case 2: +case 3: +if ((order = JU.Edge.getBondOrderFromFloat(this.floatParameter(1))) == 131071) this.invArg(); +break; +default: +if ((order = JU.Edge.getBondOrderFromString(this.paramAsStr(1))) == 131071) this.invArg(); +if (order == 33 && this.tokAt(2) == 3) { +order = JU.Edge.getPartialBondOrderFromFloatEncodedInt(this.st[2].intValue); +}} +this.setShapeProperty(1, "bondOrder", Integer.$valueOf(order)); +}); +Clazz.defineMethod(c$, "cmdBoundbox", +function(index){ +var tickInfo = this.tickParamAsStr(index, false, true, false); +index = this.iToken + 1; +var scale = 1; +if (this.tokAt(index) == 536875059) { +scale = this.floatParameter(++index); +index++; +if (index == this.slen) { +if (!this.chk) this.vwr.ms.setBoundBox(null, null, true, scale); +return; +}} else if (this.tokAt(index) == 4141) { +if (!this.chk) this.vwr.ms.setBoundBox(null, null, true, 0); +return; +}var byCorner = (this.tokAt(index) == 1073741902); +if (byCorner) index++; +if (this.isCenterParameter(index)) { +var ret = new Array(1); +var index0 = index; +var pt1 = this.centerParameter(index, ret); +index = this.iToken + 1; +if (byCorner || this.isCenterParameter(index)) { +var pt2 = (byCorner ? this.centerParameter(index, ret) : this.getPoint3f(index, true, true)); +index = this.iToken + 1; +if (!this.chk) this.vwr.ms.setBoundBox(pt1, pt2, byCorner, scale); +} else if (ret[0] != null && Clazz.instanceOf(ret[0],"JU.BS")) { +if (!this.chk) this.vwr.calcBoundBoxDimensions(ret[0], scale); +} else if (ret[0] == null && this.tokAt(index0) == 1073742330) { +if (this.chk) return; +var bbox = this.getObjectBoundingBox(this.objectNameParameter(++index0)); +if (bbox == null) this.invArg(); +this.vwr.ms.setBoundBox(bbox[0], bbox[1], true, scale); +index = this.iToken + 1; +} else { +this.invArg(); +}if (index == this.slen) return; +}var mad10 = this.getSetAxesTypeMad10(index); +if (this.chk || mad10 == 2147483647) return; +if (tickInfo != null) this.setShapeProperty(32, "tickInfo", tickInfo); +this.setObjectMad10(32, "boundbox", mad10); +}, "~N"); +Clazz.defineMethod(c$, "cmdCD", +function(){ +if (this.chk) return; +var dir = (this.slen == 1 ? null : this.paramAsStr(1)); +this.showString(this.vwr.cd(dir)); +}); +Clazz.defineMethod(c$, "cmdCenter", +function(i){ +if (this.slen == 1) { +this.vwr.setNewRotationCenter(null); +return; +}if (this.slen == 4 && this.tokAt(2) == 1814695966) i = 2; +var center = this.centerParameter(i, null); +if (center == null) this.invArg(); +if (!this.chk) this.vwr.setNewRotationCenter(center); +}, "~N"); +Clazz.defineMethod(c$, "cmdColor", +function(){ +var i = 1; +var strColor = (this.tokAt(1) == 4 ? this.stringParameter(1) : null); +if (this.isColorParam(1)) { +this.theTok = 1153433601; +} else { +var argb = 0; +i = 2; +var tok = this.getToken(1).tok; +if (tok == 4) { +tok = JS.T.getTokFromName(strColor); +if (tok == 0 || tok == 1073742186) tok = 4; +}switch (tok) { +case 1073742330: +this.setObjectProperty(); +return; +case 1086324739: +case 2097154: +case 2097166: +case 1086326788: +case 1073741946: +case 1631586315: +case 1086324742: +case 1113589786: +case 1086324746: +case 1073741991: +case 1094713360: +case 1094713361: +case 1073742333: +case 1073742074: +case 1111492619: +case 1094713362: +case 1715472409: +case 1073742116: +case 1073742110: +case 1112152075: +case 1073742144: +case 1111490574: +case 1639976963: +case 1111490575: +case 1111492620: +case 603979967: +case 1648363544: +this.theTok = 1153433601; +i = 1; +break; +case 4: +i = 2; +if (this.isArrayParameter(i)) { +strColor = strColor += "=" + JS.SV.sValue(JS.SV.getVariableAS(this.stringParameterSet(i))).$replace('\n', ' '); +i = this.iToken + 1; +}var isTranslucent = (this.tokAt(i) == 603979967); +if (!this.chk) this.vwr.setPropertyColorScheme(strColor, isTranslucent, true); +if (isTranslucent) ++i; +if (this.tokAt(i) == 1073742114 || this.tokAt(i) == 1073741826) { +var min = this.floatParameter(++i); +var max = this.floatParameter(++i); +if (!this.chk) this.vwr.cm.setPropertyColorRange(min, max); +}return; +case 1073742114: +case 1073741826: +var min = this.floatParameter(2); +var max = this.floatParameter(this.checkLast(3)); +if (!this.chk) this.vwr.cm.setPropertyColorRange(min, max); +return; +case 1610616835: +argb = this.getArgbParamLast(2, true); +if (!this.chk) this.setObjectArgb("background", argb); +return; +case 12290: +case 10: +case 1073742325: +i = -1; +this.theTok = 1153433601; +break; +case 1073742134: +argb = this.getArgbParamLast(2, false); +if (!this.chk) this.vwr.cm.setRubberbandArgb(argb); +return; +case 536870920: +case 1611141172: +i = 2; +if (this.tokAt(2) == 1073742074) i++; +argb = this.getArgbParamLast(i, true); +if (this.chk) return; +this.sm.loadShape(8); +this.setShapeProperty(8, (tok == 1611141172 ? "argbSelection" : "argbHighlight"), Integer.$valueOf(argb)); +return; +case 1611272194: +case 1812599299: +case 1814695966: +case 1073741824: +case 1612709900: +var str = this.paramAsStr(1); +if (this.checkToken(2)) { +argb = this.getToken(2).tok; +switch (argb) { +case 1073742333: +argb = 1073741991; +break; +case 1073741991: +case 1073742116: +case 1073742110: +break; +default: +argb = this.getArgbParam(2); +} +}if (argb == 0) this.error(9); +this.checkLast(this.iToken); +if (str.equalsIgnoreCase("axes") || JV.StateManager.getObjectIdFromName(str) >= 0) { +this.setObjectArgb(str, argb); +return; +}if (this.setElementColor(str, argb)) return; +this.invArg(); +break; +case 135180: +case 134353926: +this.setShapeProperty(JV.JC.shapeTokenIndex(tok), "thisID", "+PREVIOUS_MESH+"); +break; +} +}this.colorShape(-this.theTok, i, false); +}); +Clazz.defineMethod(c$, "cmdDefine", +function(){ +if (this.slen < 3 || !((typeof(this.getToken(1).value)=='string'))) this.invArg(); +var setName = (this.getToken(1).value).toLowerCase(); +if (JU.PT.parseInt(setName) != -2147483648) this.invArg(); +if (this.chk) return; +var isSite = setName.startsWith("site_"); +var isDynamic = (setName.indexOf("dynamic_") == 0); +if (isDynamic || isSite) { +var code = new Array(this.slen); +for (var i = this.slen; --i >= 0; ) code[i] = this.st[i]; + +this.vwr.definedAtomSets.put("!" + (isSite ? setName : setName.substring(8)), code); +} else { +var bs = this.atomExpressionAt(2); +this.vwr.definedAtomSets.put(setName, bs); +if (!this.chk) this.vwr.g.setUserVariable("@" + setName, JS.SV.newV(10, bs)); +}}); +Clazz.defineMethod(c$, "cmdDelay", +function(){ +var millis = 0; +switch (this.getToken(1).tok) { +case 1073742335: +millis = 1; +break; +case 2: +millis = this.intParameter(1) * 1000; +break; +case 3: +millis = Clazz.floatToInt(this.floatParameter(1) * 1000); +break; +default: +this.error(34); +} +this.refresh(false); +this.doDelay(Math.abs(millis)); +}); +Clazz.defineMethod(c$, "cmdDelete", +function(){ +if (this.tokAt(1) == 1073742330) { +if (this.slen == 4 && this.optParameterAsString(2).equals("saved") && this.slen == 4) { +this.vwr.stm.deleteSaved(this.optParameterAsString(3)); +if (this.doReport()) this.report(J.i18n.GT.o(J.i18n.GT.$("show saved: {0}"), this.vwr.stm.listSavedStates()), false); +return; +}this.setObjectProperty(); +return; +}var bs = (this.slen == 1 ? null : this.atomExpression(this.st, 1, 0, true, false, null, false)); +if (this.chk) return; +if (bs == null) bs = this.vwr.getAllAtoms(); +var nDeleted = this.vwr.deleteAtoms(bs, false); +if (this.doReport()) this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms deleted"), nDeleted), false); +}); +Clazz.defineMethod(c$, "cmdDisplay", +function(isDisplay){ +var bs = null; +var addRemove = 0; +var i = 1; +var tok; +switch (tok = this.tokAt(1)) { +case 1275069441: +case 1073742119: +addRemove = tok; +tok = this.tokAt(++i); +break; +} +var isGroup = (tok == 1086324742); +if (isGroup) tok = this.tokAt(++i); +switch (tok) { +case 1073742330: +this.setObjectProperty(); +return; +case 0: +break; +default: +if (this.slen == 4 && this.tokAt(2) == 1677721602) bs = JM.BondSet.newBS(JU.BSUtil.newBitSet2(0, this.vwr.ms.bondCount)); + else bs = this.atomExpressionAt(i); +} +if (this.chk) return; +if (Clazz.instanceOf(bs,"JM.BondSet")) { +this.vwr.ms.displayBonds(bs, isDisplay); +return; +}this.vwr.displayAtoms(bs, isDisplay, isGroup, addRemove, this.tQuiet); +}, "~B"); +Clazz.defineMethod(c$, "cmdDots", +function(iShape){ +if (!this.chk) this.sm.loadShape(iShape); +this.setShapeProperty(iShape, "init", null); +var value = NaN; +var type = J.atomdata.RadiusData.EnumType.ABSOLUTE; +var ipt = 1; +var isOnly = false; +while (true) { +switch (this.getToken(ipt).tok) { +case 1073742072: +isOnly = true; +case 1073742335: +value = 1; +type = J.atomdata.RadiusData.EnumType.FACTOR; +break; +case 1073742334: +value = 0; +break; +case 1073741976: +this.setShapeProperty(iShape, "ignore", this.atomExpressionAt(ipt + 1)); +ipt = this.iToken + 1; +continue; +case 3: +isOnly = (this.tokAt(ipt + 1) == 1073742072 || this.floatParameter(ipt) < 0); +break; +case 2: +var dotsParam = this.intParameter(ipt); +if (this.tokAt(ipt + 1) == 1665140738) { +ipt++; +this.setShapeProperty(iShape, "atom", Integer.$valueOf(dotsParam)); +this.setShapeProperty(iShape, "radius", Float.$valueOf(this.floatParameter(++ipt))); +if (this.tokAt(++ipt) == 1765808134) { +this.setShapeProperty(iShape, "colorRGB", Integer.$valueOf(this.getArgbParam(++ipt))); +ipt++; +}if (this.getToken(ipt).tok != 10) this.invArg(); +this.setShapeProperty(iShape, "dots", this.st[ipt].value); +return; +}break; +} +break; +} +var rd = (Float.isNaN(value) ? this.encodeRadiusParameter(ipt, isOnly, true) : new J.atomdata.RadiusData(null, value, type, J.c.VDW.AUTO)); +if (rd == null) return; +if (Float.isNaN(rd.value)) this.invArg(); +if (isOnly) { +this.restrictSelected(false, false); +}this.setShapeSize(iShape, rd); +}, "~N"); +Clazz.defineMethod(c$, "cmdEcho", +function(index){ +if (this.chk) return; +var text = this.optParameterAsString(index); +var doRefresh = true; +if (this.vwr.ms.getEchoStateActive()) { +if (text.startsWith("\1")) { +text = text.substring(1); +doRefresh = false; +}if (text != null) this.setShapeProperty(31, "text", text); +}if (doRefresh && this.vwr.getRefreshing() && text != null && !text.startsWith("%SCALE")) this.showString(this.vwr.formatText(text)); +}, "~N"); +Clazz.defineMethod(c$, "cmdFile", +function(){ +var file = this.intParameter(this.checkLast(1)); +if (this.chk) return; +var modelIndex = this.vwr.ms.getModelNumberIndex(file * 1000000 + 1, false, false); +var modelIndex2 = -1; +if (modelIndex >= 0) { +modelIndex2 = this.vwr.ms.getModelNumberIndex((file + 1) * 1000000 + 1, false, false); +if (modelIndex2 < 0) modelIndex2 = this.vwr.ms.mc; +modelIndex2--; +}this.vwr.setAnimationOn(false); +this.vwr.am.setAnimationDirection(1); +this.vwr.setAnimationRange(modelIndex, modelIndex2); +this.vwr.setCurrentModelIndex(-1); +}); +Clazz.defineMethod(c$, "cmdFixed", +function(){ +var bs = (this.slen == 1 ? null : this.atomExpressionAt(1)); +if (this.chk) return; +this.vwr.setMotionFixedAtoms(bs); +}); +Clazz.defineMethod(c$, "cmdFor", +function(tok, isForCheck){ +var cmdToken = this.theToken; +var pt = this.st[0].intValue; +var forVars = cmdToken.forVars; +var pts = Clazz.newIntArray (2, 0); +var bsOrList = null; +var forVal = null; +var forVar = null; +var inTok = 0; +var isOK = true; +var isMinusMinus = false; +var j = 0; +var key = null; +if (isForCheck && forVars != null) { +tok = 1275068432; +forVar = forVars[0]; +forVal = forVars[1]; +bsOrList = forVars[1].value; +j = ++forVal.intValue; +if (forVal.tok == 2) { +isMinusMinus = (j < 0); +var i1 = (bsOrList)[0]; +var i2 = (bsOrList)[1]; +isOK = (i1 != i2 && (i2 < i1) == isMinusMinus); +if (isOK) forVar.intValue = (bsOrList)[0] = i1 + (isMinusMinus ? -1 : 1); +j = -1; +} else if (forVal.tok == 7) { +isOK = (j <= (bsOrList).size()); +if (isOK) forVar.setv(JS.SV.selectItemVar(forVal)); +j = -1; +} else { +this.isBondSet = Clazz.instanceOf(bsOrList,"JM.BondSet"); +j = (bsOrList).nextSetBit(j); +isOK = (j >= 0); +}} else { +var isLocal = false; +for (var i = 1, nSkip = 0; i < this.slen && j < 2; i++) { +switch (tok = this.tokAt(i)) { +case 36868: +isLocal = true; +break; +case 1073742339: +if (nSkip > 0) nSkip--; + else pts[j++] = i; +break; +case 1275068432: +case 1073741952: +key = this.paramAsStr(i - 1); +nSkip -= 2; +if (this.isAtomExpression(++i)) { +inTok = 10; +bsOrList = this.atomExpressionAt(i); +if (this.isBondSet) bsOrList = JM.BondSet.newBS(bsOrList); +isOK = ((bsOrList).nextSetBit(0) >= 0); +} else { +var what = this.parameterExpressionList(-i, 1, false); +if (what == null || what.size() < 1) this.invArg(); +var vl = what.get(0); +switch (inTok = vl.tok) { +case 10: +bsOrList = vl.value; +isOK = !(bsOrList).isEmpty(); +break; +case 7: +var v = vl.getList(); +j = v.size(); +isOK = (j > 0); +if (isOK && tok == 1073741952) { +var i12 = Clazz.newIntArray(-1, [JS.SV.iValue(v.get(0)), JS.SV.iValue(v.get(j - 1))]); +isMinusMinus = (i12[1] < i12[0]); +bsOrList = i12; +tok = 1275068432; +inTok = 2; +} else { +bsOrList = v; +}break; +case 6: +var m = vl.getMap(); +var n = m.keySet().size(); +isOK = (n > 0); +if (isOK) { +var keys = new Array(n); +m.keySet().toArray(keys); +java.util.Arrays.sort(keys); +bsOrList = keys; +}break; +default: +this.invArg(); +} +}i = this.iToken; +break; +case 1275082241: +nSkip += 2; +break; +} +} +if (!isForCheck) { +this.pushContext(cmdToken, "FOR"); +this.thisContext.forVars = forVars; +forVars = null; +}if (key == null) { +if (isForCheck) { +j = (bsOrList == null ? pts[1] + 1 : 2); +} else { +j = 2; +}if (this.tokAt(j) == 36868) j++; +key = this.paramAsStr(j); +isMinusMinus = key.equals("--") || key.equals("++"); +if (isMinusMinus) key = this.paramAsStr(++j); +}if (isOK) if (tok == 1275068432) { +forVar = this.getContextVariableAsVariable(key, isLocal); +if (forVar == null && !isLocal) forVar = this.vwr.g.getAndSetNewVariable(key, false); +if (forVar == null || forVar.myName == null) { +if (key.startsWith("_")) this.invArg(); +if (isLocal) this.contextVariables.put(key.toLowerCase(), forVar = JS.SV.newI(0)); + else forVar = this.vwr.g.getAndSetNewVariable(key, true); +}if (inTok == 2) { +forVar.tok = 2; +forVar.intValue = (bsOrList)[0]; +forVal = JS.SV.newV(2, bsOrList); +forVal.intValue = (isMinusMinus ? -2147483648 : 0); +j = -1; +} else { +forVal = JS.SV.getVariable(bsOrList); +if (inTok == 10) { +j = (bsOrList).nextSetBit(0); +forVal.intValue = 0; +} else { +forVal.intValue = 1; +forVar.setv(JS.SV.selectItemVar(forVal)); +j = -1; +}}if (forVars == null) forVars = cmdToken.forVars = new Array(2); +forVars[0] = forVar; +forVars[1] = forVal; +} else { +var vtok = this.tokAt(j); +if (vtok != 1073742339 && (JS.T.tokAttr(vtok, 1073741824) || (forVal = this.getContextVariableAsVariable(key, false)) != null)) { +if (!isMinusMinus && this.getToken(++j).tok != 268440324) this.invArg(); +if (isMinusMinus) j -= 2; +this.setVariable(++j, this.slen - 1, key, false); +}isOK = (pts[0] + 1 == pts[1] || this.parameterExpressionBoolean(pts[0] + 1, pts[1])); +}}if (isOK && tok == 1275068432 && j >= 0) { +forVal.intValue = j; +forVar.tok = 10; +if (this.isBondSet) { +forVar.value = new JM.BondSet(); +(forVar.value).set(j); +} else { +forVar.value = JU.BSUtil.newAndSetBit(j); +}}pt++; +if (!isOK) { +cmdToken.forVars = this.thisContext.forVars; +this.popContext(true, false); +}isForCheck = false; +if (!isOK && !this.chk) this.pc = Math.abs(pt) - 1; +return isForCheck; +}, "~N,~B"); +Clazz.defineMethod(c$, "cmdFlow", +function(tok, isForCheck, vProcess){ +var ct; +var pt = this.st[0].intValue; +var isDone = (pt < 0 && !this.chk); +var continuing = true; +var ptNext = 0; +switch (tok) { +case 134320141: +case 102436: +this.cmdFunc(); +return isForCheck; +case 364558: +return isForCheck; +case 102412: +ct = this.theToken; +this.pushContext(ct, "CATCH"); +if (!isDone && ct.name0 != null) this.contextVariables.put(ct.name0, ct.contextVariables.get(ct.name0)); +continuing = !isDone; +this.st[0].intValue = -Math.abs(pt); +break; +case 102410: +case 102413: +case 102411: +ptNext = Math.abs(this.aatoken[Math.abs(pt)][0].intValue); +switch (isDone ? 0 : this.cmdFlowSwitch(this.theToken, tok)) { +case 0: +ptNext = -ptNext; +continuing = false; +break; +case -1: +continuing = false; +break; +case 1: +} +this.aatoken[this.pc][0].intValue = Math.abs(pt); +this.theToken = this.aatoken[Math.abs(pt)][0]; +if (this.theToken.tok != 102409) this.theToken.intValue = ptNext; +break; +case 134320649: +case 102402: +continuing = (!isDone && this.parameterExpressionBoolean(1, 0)); +if (this.chk) break; +ptNext = Math.abs(this.aatoken[Math.abs(pt)][0].intValue); +ptNext = (isDone || continuing ? -ptNext : ptNext); +this.aatoken[Math.abs(pt)][0].intValue = ptNext; +if (tok == 102412) this.aatoken[this.pc][0].intValue = -pt; +break; +case 364547: +this.checkLength(1); +if (pt < 0 && !this.chk) this.pc = -pt - 1; +break; +case 364548: +this.checkLength(1); +break; +case 102406: +if (!isForCheck) this.pushContext(this.theToken, "WHILE"); +isForCheck = false; +if (!this.parameterExpressionBoolean(1, 0) && !this.chk) { +this.pc = pt; +this.popContext(true, false); +}break; +case 102407: +if (!this.chk) { +this.breakAt(pt); +break; +}if (this.slen == 1) break; +var n = this.intParameter(this.checkLast(1)); +if (this.chk) break; +for (var i = 0; i < n; i++) this.popContext(true, false); + +break; +case 102408: +isForCheck = true; +if (!this.chk) this.pc = pt - 1; +if (this.slen > 1) this.intParameter(this.checkLast(1)); +break; +case 102409: +switch (this.getToken(this.checkLast(1)).tok) { +case 364558: +var trycmd = this.getToken(1).value; +if (this.chk) return false; +this.runFunctionAndRet(trycmd, "try", null, null, true, true, true); +return false; +case 134320141: +case 102436: +this.addFunction(this.theToken.value); +return isForCheck; +case 102412: +this.popContext(true, false); +break; +case 102439: +this.addProcess(vProcess, pt, this.pc); +this.popContext(true, false); +break; +case 102410: +if (pt > 0 && this.cmdFlowSwitch(this.aatoken[pt][0], 0) == -1) { +for (; pt < this.pc; pt++) if ((tok = this.aatoken[pt][0].tok) != 102413 && tok != 102411) break; + +continuing = (this.pc == pt); +}break; +case 134320649: +break; +case 134320648: +case 102406: +continuing = false; +isForCheck = true; +break; +} +break; +} +if (!continuing && !this.chk) this.pc = Math.abs(pt) - 1; +return isForCheck; +}, "~N,~B,JU.Lst"); +Clazz.defineMethod(c$, "cmdFlowSwitch", +function(c, tok){ +if (tok == 102410) c.addName("_var"); +var $var = c.contextVariables.get("_var"); +if ($var == null) return 1; +if (tok == 0) { +c.contextVariables.remove("_var"); +return -1; +}if (tok == 102413) return -1; +var v = this.parameterExpressionToken(1); +if (tok == 102411) { +var isOK = JS.SV.areEqual($var, v); +if (isOK) c.contextVariables.remove("_var"); +return isOK ? 1 : -1; +}c.contextVariables.put("_var", v); +return 1; +}, "JS.ContextToken,~N"); +Clazz.defineMethod(c$, "cmdFont", +function(shapeType, fontsize){ +var fontface = "SansSerif"; +var fontstyle = "Plain"; +var name = "font"; +var sizeAdjust = 0; +var scaleAngstromsPerPixel = -1; +switch (this.iToken = this.slen) { +case 6: +scaleAngstromsPerPixel = this.floatParameter(5); +if (scaleAngstromsPerPixel >= 5) scaleAngstromsPerPixel = this.vwr.tm.getZoomSetting() / scaleAngstromsPerPixel / this.vwr.getScalePixelsPerAngstrom(false); +case 5: +if (this.getToken(4).tok != 1073741824) this.invArg(); +fontstyle = this.paramAsStr(4); +case 4: +if (this.getToken(3).tok != 1073741824) this.invArg(); +fontface = this.paramAsStr(3); +if (!this.isFloatParameter(2)) this.error(34); +fontsize = this.floatParameter(2); +shapeType = -1; +break; +case 3: +if (!this.isFloatParameter(2)) this.error(34); +if (shapeType == -1) { +fontsize = this.floatParameter(2); +} else { +if (fontsize >= 1) fontsize += (sizeAdjust = 5); +fontface = null; +}break; +case 2: +default: +if (shapeType == 5) { +fontsize = 13; +name = "fontsize"; +break; +}this.bad(); +} +var isScale = (this.tokAt(1) == 536875059); +if (shapeType == -1) shapeType = (isScale ? 31 : this.getShapeType(this.getToken(1).tok)); +if (shapeType == 5) { +if (fontsize < 0 || fontsize >= 1 && (fontsize < 6 || fontsize > 63)) { +this.integerOutOfRange(6 - sizeAdjust, 63 - sizeAdjust); +return; +}if (!this.chk) this.setShapeProperty(5, "setDefaults", fontsize == 0 ? this.vwr.slm.noneSelected : Boolean.FALSE); +}if (this.chk) return; +var value; +if (name === "font") { +if (JU.Font.getFontStyleID(fontface) >= 0) { +fontstyle = fontface; +fontface = "SansSerif"; +}value = this.vwr.getFont3D(fontface, fontstyle, fontsize); +} else { +value = Float.$valueOf(fontsize); +}this.sm.loadShape(shapeType); +if (isScale) this.setShapeProperty(31, "target", "%SCALE"); +this.setShapeProperty(shapeType, name, value); +if (scaleAngstromsPerPixel >= 0) this.setShapeProperty(shapeType, "scalereference", Float.$valueOf(scaleAngstromsPerPixel)); +if (isScale) this.setShapeProperty(31, "thisID", null); +}, "~N,~N"); +Clazz.defineMethod(c$, "cmdFrank", +function(i){ +var b = true; +if (this.slen > i) switch (this.getToken(this.checkLast(i)).tok) { +case 1073742335: +break; +case 1073742334: +b = false; +break; +default: +this.error(5); +} +this.setBooleanProperty("frank", b); +}, "~N"); +Clazz.defineMethod(c$, "cmdFunc", +function(){ +if (this.chk && !this.isCmdLine_c_or_C_Option) return; +var name = (this.getToken(0).value).toLowerCase(); +if (this.tokAt(1) == 268440324 && this.tokAt(2) == 1073742333) { +this.vwr.removeFunction(name); +return; +}if (!this.isFunction(name)) this.error(10); +var params = (this.slen == 1 || this.slen == 3 && this.tokAt(1) == 268435968 && this.tokAt(2) == 268435969 ? null : this.parameterExpressionList(1, -1, false)); +if (this.chk) return; +this.runFunctionAndRet(null, name, params, null, false, true, true); +}); +Clazz.defineMethod(c$, "cmdGetProperty", +function(){ +if (this.chk) return; +var retValue = ""; +var property = this.optParameterAsString(1); +var name = property; +if (name.indexOf(".") >= 0) name = name.substring(0, name.indexOf(".")); +if (name.indexOf("[") >= 0) name = name.substring(0, name.indexOf("[")); +var propertyID = this.vwr.getPropertyNumber(name); +var param = ""; +switch (this.tokAt(2)) { +default: +param = this.optParameterAsString(2); +break; +case 12290: +case 1073742325: +case 10: +param = this.atomExpressionAt(2); +if (property.equalsIgnoreCase("bondInfo") && this.isAtomExpression(++this.iToken)) param = Clazz.newArray(-1, [param, this.atomExpressionAt(this.iToken)]); +break; +} +if (property.length > 0 && propertyID < 0) { +property = ""; +param = ""; +} else if (propertyID >= 0 && this.slen < 3) { +if ((param = this.vwr.getDefaultPropertyParam(propertyID)).equals("(visible)")) param = this.vwr.ms.getVisibleSet(true); +} else if (propertyID == this.vwr.getPropertyNumber("fileContents")) { +var s = param.toString(); +for (var i = 3; i < this.slen; i++) s += this.paramAsStr(i); + +param = s; +}retValue = this.vwr.getProperty("readable", property, param); +this.showString(retValue); +}); +Clazz.defineMethod(c$, "cmdGoto", +function(isCmd){ +var strTo = (isCmd ? this.paramAsStr(this.checkLast(1)) : null); +var pcTo = (strTo == null ? this.aatoken.length - 1 : -1); +var s = null; +for (var i = pcTo + 1; i < this.aatoken.length; i++) { +var tokens = this.aatoken[i]; +var tok = tokens[0].tok; +switch (tok) { +case 20485: +case 0: +s = tokens[tokens.length - 1].value; +if (tok == 0) s = s.substring(s.startsWith("#") ? 1 : 2); +break; +default: +continue; +} +if (s.equalsIgnoreCase(strTo)) { +pcTo = i; +break; +}} +if (pcTo < 0) this.invArg(); +if (strTo == null) pcTo = 0; +var di = (pcTo < this.pc ? 1 : -1); +var nPush = 0; +for (var i = pcTo; i != this.pc; i += di) { +switch (this.aatoken[i][0].tok) { +case 1275335685: +case 102439: +case 134320648: +case 102412: +case 102406: +nPush++; +break; +case 1275334681: +nPush--; +break; +case 102409: +switch (this.aatoken[i][1].tok) { +case 102439: +case 134320648: +case 102412: +case 102406: +nPush--; +} +break; +} +} +if (strTo == null) { +pcTo = 2147483647; +for (; nPush > 0; --nPush) this.popContext(false, false); + +}if (nPush != 0) this.invArg(); +if (!this.chk) this.pc = pcTo - 1; +}, "~B"); +Clazz.defineMethod(c$, "cmdHbond", +function(){ +if (this.slen == 2 && this.getToken(1).tok == 4102) { +if (this.chk) return; +var n = this.vwr.autoHbond(null, null, false); +this.report(J.i18n.GT.i(J.i18n.GT.$("{0} hydrogen bonds"), Math.abs(n)), false); +return; +}if (this.slen == 2 && this.getToken(1).tok == 12291) { +if (this.chk) return; +this.checkExtension(1613238294); +return; +}var mad = this.getMadParameter(); +if (mad == 2147483647) return; +this.setShapeProperty(1, "type", Integer.$valueOf(30720)); +this.setShapeSizeBs(1, mad, null); +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +}); +Clazz.defineMethod(c$, "cmdHelp", +function(){ +if (this.chk) return; +var what = this.optParameterAsString(1).toLowerCase(); +var pt = 0; +if (what.startsWith("mouse") && (pt = what.indexOf(" ")) >= 0 && pt == what.lastIndexOf(" ")) { +this.showString(this.vwr.getBindingInfo(what.substring(pt + 1))); +return; +}if (JS.T.tokAttr(JS.T.getTokFromName(what), 4096)) what = "?command=" + what; +this.vwr.getHelp(what); +}); +Clazz.defineMethod(c$, "cmdHistory", +function(pt){ +if (this.slen == 1) { +this.showString(this.vwr.getSetHistory(2147483647)); +return; +}if (pt == 2) { +var n = this.intParameter(this.checkLast(2)); +if (n < 0) this.invArg(); +if (!this.chk) this.vwr.getSetHistory(n == 0 ? 0 : -2 - n); +return; +}switch (this.getToken(this.checkLast(1)).tok) { +case 1073742335: +case 1073741882: +if (!this.chk) this.vwr.getSetHistory(-2147483648); +return; +case 1073742334: +if (!this.chk) this.vwr.getSetHistory(0); +break; +default: +this.errorStr(24, "ON, OFF, CLEAR"); +} +}, "~N"); +Clazz.defineMethod(c$, "cmdHover", +function(){ +if (this.chk) return; +var strLabel = (this.slen == 1 ? "on" : this.paramAsStr(1)); +if (strLabel.equalsIgnoreCase("on")) strLabel = "%U"; + else if (strLabel.equalsIgnoreCase("off")) strLabel = null; +this.vwr.setHoverLabel(strLabel); +}); +Clazz.defineMethod(c$, "cmdLabel", +function(index, bs){ +if (this.chk) return; +this.sm.loadShape(5); +var strLabel = null; +switch (this.getToken(index).tok) { +case 1073742335: +strLabel = this.vwr.getStandardLabelFormat(0); +break; +case 1073742334: +break; +case 12294: +case 1610625028: +this.setShapeProperty(5, "display", this.theTok == 1610625028 ? Boolean.TRUE : Boolean.FALSE); +return; +case 7: +strLabel = this.theToken.value; +break; +default: +strLabel = this.paramAsStr(index); +} +this.sm.setLabel(strLabel, bs == null ? this.vwr.bsA() : bs); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "cmdLoad", +function(){ +var doLoadFiles = (!this.chk || this.isCmdLine_C_Option); +var isAppend = false; +var isInline = false; +var isSmiles = false; +var isMutate = false; +var isData = false; +var isAsync = this.vwr.async; +var isConcat = false; +var doOrient = false; +var appendNew = this.vwr.getBoolean(603979792); +var isAudio = false; +var filename = null; +var bsModels; +var i = (this.tokAt(0) == 134221834 ? 0 : 1); +var filter = null; +var modelCount0 = this.vwr.ms.mc - (this.vwr.fm.getFileName().equals("zapped") ? 1 : 0); +var ac0 = this.vwr.ms.ac; +var loadScript = new JU.SB().append("load"); +var nFiles = 1; +var htParams = new java.util.Hashtable(); +if (this.$isStateScript) { +htParams.put("isStateScript", Boolean.TRUE); +if (this.forceNoAddHydrogens) htParams.put("doNotAddHydrogens", Boolean.TRUE); +}var modelName = null; +var filenames = null; +var tempFileInfo = null; +var errMsg = null; +var sOptions = new JU.SB(); +var tokType = 0; +var tok; +if (this.slen == 1) { +i = 0; +} else { +modelName = this.paramAsStr(i); +if (this.slen == 2 && !this.chk) { +if (modelName.endsWith(".spt") || modelName.endsWith(".png") || modelName.endsWith(".pngj")) { +this.cmdScript(0, modelName, null, null); +return; +}}tok = this.tokAt(i); +switch (tok) { +case 1073742077: +doOrient = true; +loadScript.append(" orientation"); +this.vwr.stm.saveOrientation("preload", null); +modelName = this.paramAsStr(++i); +tok = JS.T.getTokFromName(modelName); +break; +} +switch (tok) { +case 1073741839: +modelName = this.optParameterAsString(++i); +var ami = JU.PT.parseInt(modelName); +isAppend = (!this.$isStateScript || this.vwr.ms.mc > 0); +if (isAppend) loadScript.append(" append"); +if (ami >= 0) { +modelName = this.optParameterAsString(++i); +if (isAppend) { +loadScript.append(" " + ami); +appendNew = false; +htParams.put("appendToModelIndex", Integer.$valueOf(ami)); +}}tok = JS.T.getTokFromName(modelName); +break; +case 1073877011: +case 1610616855: +case 1073742015: +var m = this.paramAsStr(this.checkLast(2)); +if (!this.chk) { +switch (tok) { +case 1073877011: +htParams.put("service", "nbo"); +htParams.put("mode", Integer.$valueOf(1)); +htParams.put("action", "load"); +htParams.put("value", m); +htParams.put("sync", Boolean.TRUE); +this.vwr.sm.processService(htParams); +this.runScript(htParams.get("ret")); +break; +case 1610616855: +this.vwr.setHistory(m); +break; +case 1073742015: +this.vwr.setMenu(m, true); +break; +} +}return; +case 4130: +isMutate = isAppend = true; +appendNew = false; +loadScript.append(" mutate"); +modelName = this.optParameterAsString(++i); +tok = JS.T.getTokFromName(modelName); +htParams.put("appendToModelIndex", Integer.$valueOf(this.vwr.am.cmi)); +break; +case 1073741851: +isAudio = true; +i++; +break; +case 1073741824: +i++; +loadScript.append(" " + modelName); +tokType = (tok == 1073741824 && JU.PT.isOneOf(modelName.toLowerCase(), ";xyz;vxyz;vibration;temperature;occupancy;partialcharge;") ? JS.T.getTokFromName(modelName) : 0); +if (tokType != 0) { +htParams.put("atomDataOnly", Boolean.TRUE); +htParams.put("modelNumber", Integer.$valueOf(1)); +if (tokType == 4166) tokType = 1145047055; +tempFileInfo = this.vwr.fm.getFileInfo(); +isAppend = true; +}} +switch (tok) { +case 1228935687: +i++; +loadScript.append(" " + modelName); +if (this.optParameterAsString(i).equals("+")) { +isConcat = true; +i++; +loadScript.append(" +"); +}if (this.optParameterAsString(i).equals("-")) { +isConcat = true; +i++; +loadScript.append(" -"); +}if (this.tokAt(i) == 7) { +filenames = this.stringParameterSet(i); +i = this.iToken; +if (i + 1 != this.slen) this.invArg(); +if (filenames != null) nFiles = filenames.length; +}break; +case 134217764: +if (this.slen < i + 4) this.invArg(); +i -= 2; +filename = "0"; +htParams.put("isEmptyLoad", Boolean.TRUE); +case 1073741984: +isInline = true; +i++; +loadScript.append(" inline"); +break; +case 134218757: +isSmiles = true; +i++; +break; +case 1073741849: +isAsync = true; +htParams.put("async", Boolean.TRUE); +i++; +break; +case 536870926: +case 1094717454: +i++; +loadScript.append(" " + modelName); +if (tok == 536870926) htParams.put("isTrajectory", Boolean.TRUE); +if (this.isPoint3f(i)) { +var pt = this.getPoint3f(i, false, true); +i = this.iToken + 1; +htParams.put("firstLastStep", Clazz.newIntArray(-1, [Clazz.floatToInt(pt.x), Clazz.floatToInt(pt.y), Clazz.floatToInt(pt.z)])); +loadScript.append(" " + JU.Escape.eP(pt)); +} else { +switch (this.tokAt(i)) { +case 10: +bsModels = this.getToken(i++).value; +htParams.put("bsModels", bsModels); +loadScript.append(" " + JU.Escape.eBS(bsModels)); +break; +default: +htParams.put("firstLastStep", Clazz.newIntArray(-1, [0, -1, 1])); +} +}break; +case 1073741824: +break; +case 134221834: +var key = this.stringParameter(++i).toLowerCase(); +modelName = this.optParameterAsString(i + 1); +isAppend = key.startsWith("append"); +if (isAppend && key.startsWith("append modelindex=")) { +var ami = JU.PT.parseInt(key.substring(18)); +if (ami >= 0) { +appendNew = false; +htParams.put("appendToModelIndex", Integer.$valueOf(ami)); +}}doOrient = (key.indexOf("orientation") >= 0); +i = this.addLoadData(loadScript, key, htParams, i); +isData = true; +break; +default: +modelName = "fileset"; +} +if (filename == null && filenames == null && this.getToken(i).tok != 4) this.error(16); +}var filePt = i; +var ptAs = i + 1; +var localName = null; +if (this.tokAt(ptAs) == 1073741848) { +localName = this.stringParameter(i = ptAs + 1); +if (this.vwr.fm.getPathForAllFiles() !== "") { +localName = null; +filePt = i; +}}var appendedData = null; +var appendedKey = null; +if (isSmiles && this.tokAt(i + 1) == 1073741940) { +++i; +filter = this.stringParameter(++i); +}if (this.slen == i + 1) { +if (filename == null && (i == 0 || filenames == null && (filename = this.paramAsStr(filePt)).length == 0)) filename = this.getFullPathName(true); +if (filename == null && filenames == null) { +this.cmdZap(false); +return; +}if (filenames == null && !isInline) { +if (isSmiles) { +filename = "$" + filename; +} else { +if (filename.equals("String[]")) return; +if (filename.indexOf("[") == 0) { +filenames = JU.Escape.unescapeStringArray(filename); +if (filenames != null) { +if (i == 1) loadScript.append(" files"); +nFiles = filenames.length; +}}}}if (filenames != null) for (var j = 0; j < nFiles; j++) loadScript.append(" /*file*/").append(JU.PT.esc(filenames[j])); + +} else if (this.isLoadOption(this.getToken(i + 1).tok)) { +if (filename == null && (filename = this.paramAsStr(filePt)).length == 0 && (filename = this.getFullPathName(true)) == null) { +this.cmdZap(false); +return; +}if (filePt == i || localName != null) i++; +if (filename.equals("String[]")) return; +if ((tok = this.tokAt(i)) == 1073742010) { +var manifest = this.stringParameter(++i); +htParams.put("manifest", manifest); +sOptions.append(" MANIFEST " + JU.PT.esc(manifest)); +tok = this.tokAt(++i); +}switch (tok) { +case 2: +case 7: +case 268437504: +case 1073742195: +i = this.getLoadModelIndex(i, sOptions, htParams); +break; +} +i = this.getCmdExt().getLoadSymmetryParams(i, sOptions, htParams); +if (this.tokAt(i) == 1073741839) { +if (this.tokAt(++i) == 134221834) { +i += 2; +appendedData = this.getToken(i++).value; +appendedKey = this.stringParameter(++i); +++i; +} else { +appendedKey = this.stringParameter(i++); +appendedData = this.stringParameter(i++); +}htParams.put(appendedKey, appendedData); +}if (this.tokAt(i) == 1073741940) filter = this.stringParameter(++i); +} else { +var fNames = new JU.Lst(); +if (i == 1) { +if (this.tokAt(i + 1) == 268440577 || this.tokAt(i + 1) == 268440576) { +modelName = "files"; +} else { +i++; +}loadScript.append(" " + modelName); +}if (this.tokAt(i + 1) == 268440576) isConcat = true; +filter = this.getLoadFilesList(i, loadScript, sOptions, htParams, fNames); +filenames = fNames.toArray( new Array(nFiles = fNames.size())); +if (!isConcat && loadScript.indexOf("/*concat*/") >= 0) isConcat = true; +}if (!doLoadFiles) return; +if (filenames != null) filename = "fileSet"; +if (appendedData != null) { +sOptions.append(" APPEND data \"" + appendedKey + "\"\n" + appendedData + (appendedData.endsWith("\n") ? "" : "\n") + "end \"" + appendedKey + "\""); +}if (filter == null) filter = this.vwr.g.defaultLoadFilter; +if (filter.length > 0) { +if (filter.toUpperCase().indexOf("DOCACHE") >= 0) { +if (!this.$isStateScript && !isAppend) this.vwr.cacheClear(); +}htParams.put("filter", filter); +if (filter.equalsIgnoreCase("2d")) filter = "2D-noMin"; +sOptions.append(" FILTER " + JU.PT.esc(filter)); +}var isVariable = false; +if (filenames == null) { +if (this.vwr.am.cmi >= 0 && ("::" + filename).endsWith("::string")) { +filename = this.getCurrentModelFileAsString("null"); +loadScript = new JU.SB().append("load inline "); +isInline = true; +}if (isInline) { +htParams.put("fileData", filename); +} else if (filename.startsWith("@") && filename.length > 1) { +var o = this.getVarParameter(filename.substring(1), false); +if (Clazz.instanceOf(o,"java.util.Map")) { +this.checkLength(i + 1); +this.loadPNGJVar(filename, o, htParams); +return; +}isVariable = true; +o = "" + o; +loadScript = new JU.SB().append("{\n var ").append(filename.substring(1)).append(" = ").append(JU.PT.esc(o)).append(";\n ").appendSB(loadScript); +htParams.put("fileData", o); +} else if (!isData && !((filename.startsWith("=") || filename.startsWith("*")) && filename.indexOf("/") > 0)) { +var type = ""; +var pt = filename.indexOf("::"); +if (pt > 0 && pt < 20) { +type = filename.substring(0, pt + 2); +filename = filename.substring(pt + 2); +}if (filename.startsWith("cache://")) { +localName = null; +} else if (!isMutate) { +filename = this.checkFileExists("LOAD" + (isAppend ? "_APPEND_" : "_"), isAsync, filename, filePt, !isAppend && this.pc != this.pcResume); +if (filename == null) this.error(57); +filename = type + filename; +}}}var out = null; +var filecat = null; +if (localName != null) { +if (localName.equals(".")) localName = this.vwr.fm.getFilePath(filename, false, true); +if (localName.length == 0 || this.vwr.fm.getFilePath(localName, false, false).equalsIgnoreCase(this.vwr.fm.getFilePath(filename, false, false))) this.invArg(); +var fullPath = Clazz.newArray(-1, [localName]); +out = this.vwr.getOutputChannel(localName, fullPath); +if (out == null) JU.Logger.error("Could not create output stream for " + fullPath[0]); + else htParams.put("outputChannel", out); +}if (filenames == null && tokType == 0) { +loadScript.append(" "); +if (isVariable || isInline) { +loadScript.append(filename.indexOf('\n') >= 0 || isVariable ? JU.PT.esc(filename) : filename); +} else if (!isData) { +if (localName != null) localName = this.vwr.fm.getFilePath(localName, false, false); +if (!filename.equals("String[]")) loadScript.append("/*file*/").append((localName != null ? JU.PT.esc(localName) : "$FILENAME$")); +}if (!isConcat && (filename.startsWith("=") || filename.startsWith("*")) && filename.indexOf("/") > 0) { +isConcat = true; +var pt = filename.indexOf("/"); +var id; +if (pt == 1 && (id = this.vwr.getPdbID()) != null) { +filename = filename.substring(0, 1) + id + filename.substring(1); +pt = filename.indexOf("/"); +} else { +id = filename.substring(1, pt); +}var ext = filename.substring(pt + 1); +filename = filename.substring(0, pt); +if ((pt = filename.indexOf(".")) >= 0) filename = filename.substring(0, pt); +if (";dssr;rna3d;dom;val;".indexOf(";" + ext + ";") >= 0 || ext.startsWith("dssr--")) { +if (filename.startsWith("=")) filename += ".cif"; +filenames = (ext.equals("all") ? Clazz.newArray(-1, [filename, "*dom/" + id, "*val/" + id]) : Clazz.newArray(-1, [filename, "*" + ext + "/" + id])); +filename = "fileSet"; +loadScript = null; +isVariable = false; +filecat = "-"; +} else { +filename += "/" + ext; +}}if (loadScript != null) { +if (sOptions.length() > 0) loadScript.append(" /*options*/ ").append(sOptions.toString()); +if (isVariable) loadScript.append("\n }"); +htParams.put("loadScript", loadScript); +}}if (isAudio) { +if (filename != null) htParams.put("audioFile", filename); +this.addFilterAttribute(htParams, filter, "id"); +this.addFilterAttribute(htParams, filter, "pause"); +this.addFilterAttribute(htParams, filter, "play"); +this.addFilterAttribute(htParams, filter, "ended"); +this.addFilterAttribute(htParams, filter, "action"); +this.vwr.sm.playAudio(htParams); +return; +}this.setCursorWait(true); +var timeMsg = this.vwr.getBoolean(603979934); +if (timeMsg) JU.Logger.startTimer("load"); +if (!this.$isStateScript && !isAppend && !this.vwr.getBoolean(603979831)) this.vwr.setBooleanProperty("legacyJavaFloat", false); +if (isMutate) htParams.put("isMutate", Boolean.TRUE); +htParams.put("eval", this); +errMsg = this.vwr.loadModelFromFile(null, filename, filenames, null, isAppend, htParams, loadScript, sOptions, tokType, filecat != null ? filecat : isConcat ? "+" : " "); +if (timeMsg) this.showString(JU.Logger.getTimerMsg("load", 0)); +if (out != null) { +this.vwr.fm.setFileInfo( Clazz.newArray(-1, [localName])); +JU.Logger.info(J.i18n.GT.o(J.i18n.GT.$("file {0} created"), localName)); +this.showString(this.vwr.fm.getFilePath(localName, false, false) + " created"); +out.closeChannel(); +}if (tokType > 0) { +this.vwr.fm.setFileInfo(tempFileInfo); +if (errMsg != null && !this.isCmdLine_c_or_C_Option) this.evalError(errMsg, null); +return; +}if (errMsg != null && !this.isCmdLine_c_or_C_Option) { +if (errMsg.indexOf("NOTE: file recognized as a script file: ") == 0) { +filename = errMsg.substring("NOTE: file recognized as a script file: ".length).trim(); +if (filename.indexOf("png|") >= 0 && filename.endsWith("pdb|state.spt")) { +filename = filename.substring(0, filename.lastIndexOf("|")); +filename += filename.substring(filename.lastIndexOf("|")); +this.runScript("load \"" + filename + "\""); +return; +}this.cmdScript(0, filename, null, null); +return; +}if (this.vwr.async && errMsg.startsWith(JV.JC.READER_NOT_FOUND)) { +throw new JS.ScriptInterruption(this, "async", 1); +}this.evalError(errMsg, null); +}if (this.debugHigh) this.report("Successfully loaded:" + (filenames == null ? htParams.get("fullPathName") : modelName), false); +this.finalizeLoad(isAppend, appendNew, isConcat, doOrient, nFiles, ac0, modelCount0, isData); +}); +Clazz.defineMethod(c$, "checkFileExists", +function(prefix, isAsync, filename, i, doClear){ +if (this.chk || filename.startsWith("cache://")) return filename; +if ((this.vwr.testAsync || JV.Viewer.isJS) && (isAsync || filename.startsWith("?")) || this.vwr.apiPlatform.forceAsyncLoad(filename)) { +filename = this.loadFileAsync(prefix, filename, i, doClear); +}var fullPathNameOrError = this.vwr.getFullPathNameOrError(filename); +if (filename == null) return null; +filename = fullPathNameOrError[0]; +if (fullPathNameOrError[1] != null) this.errorStr(17, filename + ":" + fullPathNameOrError[1]); +return filename; +}, "~S,~B,~S,~N,~B"); +Clazz.defineMethod(c$, "addFilterAttribute", +function(htParams, filter, key){ +var val = JU.PT.getQuotedOrUnquotedAttribute(filter, key); +if (val != null && val.length > 0) htParams.put(key, val); +}, "java.util.Map,~S,~S"); +Clazz.defineMethod(c$, "addLoadData", +function(loadScript, key, htParams, i){ +loadScript.append(" /*data*/ data"); +var ptVar = key.indexOf("@"); +if (ptVar >= 0) key = key.$replace('@', '_'); +loadScript.append(" ").append(JU.PT.esc(key)); +var strModel = (ptVar >= 0 ? "" + this.getParameter(key.substring(ptVar + 1), 4, true) : this.paramAsStr(++i)); +strModel = JV.Viewer.fixInlineString(strModel, this.vwr.getInlineChar()); +htParams.put("fileData", strModel); +htParams.put("isData", Boolean.TRUE); +loadScript.appendC('\n').append(strModel).append(" end ").append(JU.PT.esc(key)); +if (ptVar < 0) i += 2; +return i; +}, "JU.SB,~S,java.util.Map,~N"); +Clazz.defineMethod(c$, "loadPNGJVar", +function(varName, o, htParams){ +var av = Clazz.newArray(-1, [JS.SV.newV(6, o)]); +this.getCmdExt().dispatch(1073741866, false, av); +htParams.put("imageData", av[0].value); +var out = this.vwr.getOutputChannel(null, null); +htParams.put("outputChannel", out); +this.vwr.createZip("", "BINARY", htParams); +var modelName = "cache://VAR_" + varName; +this.vwr.cacheFileByName("cache://VAR_*", false); +this.vwr.cachePut(modelName, out.toByteArray()); +this.cmdScript(0, modelName, null, null); +}, "~S,~O,java.util.Map"); +Clazz.defineMethod(c$, "getLoadFilesList", +function(i, loadScript, sOptions, htParams, fNames){ +var firstLastSteps = null; +var filter = null; +var pt = null; +var bs = null; +while (i < this.slen) { +switch (this.tokAt(i)) { +case 268440577: +loadScript.append("/*concat*/ +"); +++i; +continue; +case 268440576: +loadScript.append(" -"); +++i; +continue; +case 2: +case 7: +case 268437504: +case 1073742195: +i = this.getLoadModelIndex(i, sOptions, htParams); +continue; +case 1073741940: +filter = this.stringParameter(++i); +++i; +continue; +case 1073742329: +htParams.remove("isTrajectory"); +if (firstLastSteps == null) { +firstLastSteps = new JU.Lst(); +pt = JU.P3.new3(0, -1, 1); +}if (this.isPoint3f(++i)) { +pt = this.getPoint3f(i, false, true); +i = this.iToken + 1; +} else if (this.tokAt(i) == 10) { +bs = this.getToken(i).value; +pt = null; +i = this.iToken + 1; +}break; +case 1073741824: +this.invArg(); +} +fNames.addLast(this.paramAsStr(i++)); +if (pt != null) { +firstLastSteps.addLast( Clazz.newIntArray(-1, [Clazz.floatToInt(pt.x), Clazz.floatToInt(pt.y), Clazz.floatToInt(pt.z)])); +loadScript.append(" COORD " + JU.Escape.eP(pt)); +} else if (bs != null) { +firstLastSteps.addLast(bs); +loadScript.append(" COORD " + JU.Escape.eBS(bs)); +}loadScript.append(" /*file*/$FILENAME" + fNames.size() + "$"); +} +if (firstLastSteps != null) htParams.put("firstLastSteps", firstLastSteps); +return filter; +}, "~N,JU.SB,JU.SB,java.util.Map,JU.Lst"); +Clazz.defineMethod(c$, "isLoadOption", +function(tok){ +switch (tok) { +case 1073742010: +case 2: +case 7: +case 268437504: +case 1073742195: +case 1073742332: +case 8: +case 1073742080: +case 1094713350: +case 1073742163: +case 1073741938: +case 1073742114: +case 134217764: +case 1814695966: +case 1073742066: +case 134221834: +case 1073741839: +return true; +case 1073741940: +case 1073741824: +return (this.tokAt(this.iToken + 2) != 1073742329); +} +return false; +}, "~N"); +Clazz.defineMethod(c$, "getLoadModelIndex", +function(i, sOptions, htParams){ +var n; +switch (this.tokAt(i)) { +case 2: +htParams.remove("firstLastStep"); +htParams.remove("bsModel"); +htParams.put("useFileModelNumbers", Boolean.TRUE); +n = this.intParameter(i); +sOptions.append(" ").appendI(n); +if (n < 0) htParams.put("vibrationNumber", Integer.$valueOf(-n)); + else htParams.put("modelNumber", Integer.$valueOf(n)); +break; +case 7: +case 268437504: +case 1073742195: +htParams.remove("firstLastStep"); +var data = this.floatParameterSet(i, 1, 2147483647); +var bs = new JU.BS(); +var iArray = Clazz.newIntArray (data.length, 0); +for (var j = 0; j < data.length; j++) { +n = Clazz.floatToInt(data[j]); +if (data[j] >= 1 && data[j] == n) bs.set(n - 1); + else this.invArg(); +iArray[j] = n; +} +sOptions.append(" " + JU.Escape.eAI(iArray)); +htParams.put("bsModels", bs); +htParams.put("useFileModelNumbers", Boolean.TRUE); +break; +} +return this.iToken + 1; +}, "~N,JU.SB,java.util.Map"); +Clazz.defineMethod(c$, "finalizeLoad", +function(isAppend, appendNew, isConcat, doOrient, nFiles, ac0, modelCount0, isData){ +var bs = JU.BSUtil.newBitSet2(isAppend ? ac0 : 0, this.vwr.ms.ac); +if (isAppend && (appendNew || nFiles > 1)) { +this.vwr.setAnimationRange(-1, -1); +this.vwr.setCurrentModelIndex(modelCount0); +}this.vwr.setModelkitPropertySafely("updateatomkeys", bs); +var msg; +if (this.scriptLevel == 0 && !isAppend && (isConcat || nFiles < 2) && (msg = this.vwr.ms.getInfoM("modelLoadNote")) != null) { +this.showString(msg); +}var centroid = this.vwr.ms.getInfoM("centroidMinMax"); +if (JU.AU.isAI(centroid) && this.vwr.ms.ac > 0) { +this.vwr.ms.setCentroid(bs, centroid); +}var script = this.vwr.g.defaultLoadScript; +msg = ""; +if (script.length > 0) msg += "\nUsing defaultLoadScript: " + script; +var embeddedScript; +var info = this.vwr.ms.msInfo; +if (info != null && this.vwr.allowEmbeddedScripts() && (embeddedScript = info.remove("jmolscript")) != null && embeddedScript.length > 0) { +msg += "\nAdding embedded #jmolscript: " + embeddedScript; +script += ";" + embeddedScript; +this.setStringProperty("_loadScript", script); +script = "allowEmbeddedScripts = false;try{" + script + "} allowEmbeddedScripts = true;"; +this.isEmbedded = !this.isCmdLine_c_or_C_Option; +} else { +this.setStringProperty("_loadScript", ""); +}this.logLoadInfo(msg, isData); +var siteScript = (info == null ? null : info.remove("sitescript")); +if (siteScript != null) script = siteScript + ";" + script; +if (doOrient) script += ";restore orientation preload"; +if (script.length > 0 && !this.isCmdLine_c_or_C_Option) this.runScript(script); +this.isEmbedded = false; +}, "~B,~B,~B,~B,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "cmdLog", +function(){ +if (this.slen == 1) this.bad(); +if (this.chk) return; +var s = this.parameterExpressionString(1, 0); +if (this.tokAt(1) == 1073742334) this.setStringProperty("logFile", ""); + else this.vwr.log(s); +}); +Clazz.defineMethod(c$, "cmdLoop", +function(){ +if (this.vwr.headless) return; +if (!this.chk) this.pc = -1; +this.cmdDelay(); +}); +Clazz.defineMethod(c$, "cmdMessage", +function(){ +var text = this.paramAsStr(this.checkLast(1)); +if (this.chk) return; +var s = this.vwr.formatText(text); +if (this.outputBuffer == null && !this.vwr.isPrintOnly) JU.Logger.warn(s); +if (!s.startsWith("_")) this.report(s, false); +}); +Clazz.defineMethod(c$, "cmdModel", +function(offset){ +var isFrame = (this.theTok == 4115 || this.vwr.ms.mc > 1); +var frameList = Clazz.newIntArray(-1, [-1, -1]); +var nFrames = 0; +var useModelNumber = true; +var modelIndex = -1; +if (this.slen == 1 && offset == 1) { +modelIndex = this.vwr.am.cmi; +var m; +if (!this.chk && modelIndex >= 0 && (m = this.vwr.ms.getJmolDataSourceFrame(modelIndex)) >= 0) this.vwr.setCurrentModelIndex(m == modelIndex ? -2147483648 : m); +return; +}switch (this.tokAt(1)) { +case 1073877010: +if (!this.chk && isFrame && this.slen == 2) { +while (++modelIndex < this.vwr.ms.mc) { +if (!this.vwr.ms.am[modelIndex].auxiliaryInfo.containsKey("moData")) continue; +this.vwr.am.setFrame(modelIndex); +this.showString("Frame set to " + (modelIndex + 1)); +return; +} +this.showString("No molecular orbitals"); +}return; +case 2: +if (isFrame && this.slen == 2) { +if (!this.chk) this.vwr.am.setFrame(this.intParameter(1) - 1); +return; +}break; +case 1073742325: +case 10: +modelIndex = this.atomExpressionAt(1).nextSetBit(0); +if (this.chk || modelIndex < 0 || modelIndex >= this.vwr.ms.ac) return; +modelIndex = this.vwr.ms.at[modelIndex].mi; +if (this.iToken + 1 == this.slen) { +this.vwr.setCurrentModelIndex(modelIndex); +return; +}frameList[nFrames++] = modelIndex; +offset = this.iToken + 1; +useModelNumber = false; +break; +case 1073741904: +this.iToken = 1; +var n = (this.tokAt(2) == 2 ? this.intParameter(++this.iToken) : 1); +this.checkLength(this.iToken + 1); +if (!this.chk && n > 0) this.vwr.ms.createModels(n); +return; +case 1073741974: +this.checkLength(3); +var id = this.stringParameter(2); +if (!this.chk) this.vwr.setCurrentModelID(id); +return; +case 528397: +var millis = 0; +this.checkLength(3); +switch (this.getToken(2).tok) { +case 2: +case 3: +millis = Clazz.floatToLong(this.floatParameter(2) * 1000); +break; +default: +this.error(20); +} +if (!this.chk) this.vwr.setFrameDelayMs(millis); +return; +case 1073742166: +if (this.checkLength23() > 0) if (!this.chk) this.vwr.setFrameTitleObj(this.slen == 2 ? "@{_modelName}" : (this.tokAt(2) == 7 ? JS.SV.strListValue(this.st[2]) : this.paramAsStr(2))); +return; +case 1073742077: +if (this.tokAt(2) == 3 && this.tokAt(3) == 12) { +modelIndex = this.vwr.ms.getModelNumberIndex(this.getToken(2).intValue, false, false); +var mat4 = this.getToken(3).value; +if (modelIndex >= 0) this.vwr.ms.am[modelIndex].mat4 = mat4; +return; +}break; +case 1073741832: +var isNone = (this.tokAt(2) == 1073742333); +var bs = (this.slen == 2 || isNone ? null : this.atomExpressionAt(2)); +if (isNone) this.iToken = 2; +var isFixed = (this.tokAt(this.iToken + 1) == 12293); +this.checkLength(this.iToken + (isFixed ? 2 : 1)); +if (!this.chk) this.vwr.setFrameOffsets(bs, isFixed); +return; +} +if (this.getToken(offset).tok == 268440576) { +++offset; +if (this.getToken(this.checkLast(offset)).tok != 2 || this.intParameter(offset) != 1) this.invArg(); +if (!this.chk) this.vwr.setAnimation(1073742108); +return; +}var isPlay = false; +var isRange = false; +var propName = null; +var prop = null; +var isAll = false; +var isHyphen = false; +var fFrame = 0; +var frameAlign = null; +var haveFileSet = this.vwr.haveFileSet(); +if (this.isArrayParameter(1)) { +this.setFrameSet(1); +isAll = true; +} else { +for (var i = offset; i < this.slen; i++) { +switch (this.getToken(i).tok) { +case 1073741832: +if (i != 2) this.invArg(); +frameAlign = this.centerParameter(3, null); +this.checkLength(i = this.iToken + 1); +break; +case 1073742327: +case 268441089: +this.checkLength(offset + (isRange ? 2 : 1)); +isAll = true; +break; +case 268440576: +if (nFrames != 1) this.invArg(); +isHyphen = true; +break; +case 1073742333: +this.checkLength(offset + 1); +break; +case 3: +useModelNumber = false; +if ((fFrame = this.floatParameter(i)) < 0) { +this.checkLength(i + 1); +if (!this.chk) this.vwr.am.morph(-fFrame); +return; +}case 2: +case 4: +if (nFrames == 2) this.invArg(); +var iFrame = (this.theTok == 4 ? JU.Edge.getFloatEncodedInt(this.theToken.value) : this.theToken.intValue); +if (iFrame < 0 && nFrames == 1) { +isHyphen = true; +iFrame = -iFrame; +if (haveFileSet && iFrame < 1000000) iFrame *= 1000000; +}if (this.theTok == 3 && haveFileSet && fFrame == Clazz.floatToInt(fFrame)) iFrame = Clazz.floatToInt(fFrame) * 1000000; +if (iFrame == 2147483647) { +useModelNumber = false; +frameList[nFrames++] = (this.chk || i != 1 ? 0 : this.vwr.getModelIndexFromId(this.theToken.value.toString())); +break; +}if (iFrame == -1) { +this.checkLength(offset + 1); +if (!this.chk) this.vwr.setAnimation(1073742108); +return; +}if (iFrame >= 1000 && iFrame < 1000000 && haveFileSet) iFrame = (Clazz.doubleToInt(iFrame / 1000)) * 1000000 + (iFrame % 1000); +if (!useModelNumber && iFrame == 0 && nFrames == 0) isAll = true; +if (iFrame >= 1000000) useModelNumber = false; +frameList[nFrames++] = iFrame; +break; +case 1073742096: +isPlay = true; +break; +case 1073742114: +isRange = true; +break; +case 1715472409: +if (modelIndex < 0 && (modelIndex = this.vwr.am.cmi) < 0) return; +propName = this.paramAsStr(++i); +var sv = this.setVariable(++i, -1, "", false); +if (sv != null && !this.chk) { +if (propName.equalsIgnoreCase("DSSR")) { +this.loadDssr(modelIndex, sv.value); +return; +}prop = JS.SV.oValue(sv); +}if (!this.chk) this.vwr.ms.setInfo(modelIndex, propName, prop); +return; +default: +this.frameControl(offset); +return; +} +} +}if (this.chk) return; +if (isRange && nFrames == 0) isAll = true; +if (isAll) { +this.vwr.setAnimationOn(false); +this.vwr.setAnimationRange(-1, -1); +if (!isRange) this.vwr.setCurrentModelIndex(-1); +return; +}if (nFrames == 2 && !isRange) isHyphen = true; +if (haveFileSet) useModelNumber = false; + else if (useModelNumber) for (var i = 0; i < nFrames; i++) if (frameList[i] >= 0) frameList[i] %= 1000000; + +modelIndex = this.vwr.ms.getModelNumberIndex(frameList[0], useModelNumber, false); +if (frameAlign != null) { +if (modelIndex >= 0) { +this.vwr.ms.translateModel(modelIndex, null); +this.vwr.ms.translateModel(modelIndex, frameAlign); +}return; +}var modelIndex2 = -1; +if (haveFileSet && modelIndex < 0 && frameList[0] != 0) { +if (frameList[0] < 1000000) frameList[0] *= 1000000; +if (nFrames == 2 && frameList[1] < 1000000) frameList[1] *= 1000000; +if (frameList[0] % 1000000 == 0) { +frameList[0]++; +modelIndex = this.vwr.ms.getModelNumberIndex(frameList[0], false, false); +if (modelIndex >= 0) { +var i2 = (nFrames == 1 ? frameList[0] + 1000000 : frameList[1] == 0 ? -1 : frameList[1] % 1000000 == 0 ? frameList[1] + 1000001 : frameList[1] + 1); +modelIndex2 = this.vwr.ms.getModelNumberIndex(i2, false, false); +if (modelIndex2 < 0) modelIndex2 = this.vwr.ms.mc; +modelIndex2--; +if (isRange) nFrames = 2; + else if (!isHyphen && modelIndex2 != modelIndex) isHyphen = true; +isRange = isRange || modelIndex == modelIndex2; +}} else { +return; +}}if (!isPlay && !isRange || modelIndex >= 0) this.vwr.setCurrentModelIndexClear(modelIndex, false); +if (isPlay && nFrames == 2 || isRange || isHyphen) { +if (modelIndex2 < 0) modelIndex2 = this.vwr.ms.getModelNumberIndex(frameList[1], useModelNumber, false); +this.vwr.setAnimationOn(false); +this.vwr.am.setAnimationDirection(1); +this.vwr.setAnimationRange(modelIndex, modelIndex2); +this.vwr.setCurrentModelIndexClear(isHyphen && !isRange ? -1 : modelIndex >= 0 ? modelIndex : 0, false); +}if (isPlay) this.vwr.setAnimation(4143); +}, "~N"); +Clazz.defineMethod(c$, "loadDssr", +function(modelIndex, data){ +if (modelIndex < 0 && (modelIndex = this.vwr.am.cmi) < 0) this.errorStr(30, "load "); +if (!data.startsWith("{")) data = this.vwr.getFileAsString3(data, true, "script"); +this.clearDefinedVariableAtomSets(); +var map = this.vwr.parseJSONMap(data); +this.showString(this.vwr.getAnnotationParser(true).fixDSSRJSONMap(map)); +this.vwr.ms.setInfo(modelIndex, "dssr", map); +}, "~N,~S"); +Clazz.defineMethod(c$, "cmdMove", +function(){ +this.checkLength(-11); +var dRot = JU.V3.new3(this.floatParameter(1), this.floatParameter(2), this.floatParameter(3)); +var dZoom = this.floatParameter(4); +var dTrans = JU.V3.new3(this.intParameter(5), this.intParameter(6), this.intParameter(7)); +var dSlab = this.floatParameter(8); +var floatSecondsTotal = this.floatParameter(9); +var fps = (this.slen == 11 ? this.intParameter(10) : 30); +if (this.chk) return; +this.refresh(false); +if (!this.useThreads()) floatSecondsTotal = 0; +this.vwr.move(this, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps); +if (floatSecondsTotal > 0 && this.isJS) throw new JS.ScriptInterruption(this, "move", 1); +}); +Clazz.defineMethod(c$, "cmdMoveto", +function(){ +if (this.slen == 2 && this.tokAt(1) == 1073742162) { +if (!this.chk) this.vwr.tm.stopMotion(); +return; +}var floatSecondsTotal; +if (this.slen == 2 && this.isFloatParameter(1)) { +floatSecondsTotal = this.floatParameter(1); +if (this.chk) return; +if (!this.useThreads()) floatSecondsTotal = 0; +if (floatSecondsTotal > 0) this.refresh(false); +this.vwr.moveTo(this, floatSecondsTotal, null, JV.JC.axisZ, 0, null, 100, 0, 0, 0, null, NaN, NaN, NaN, NaN, NaN, NaN); +if (this.isJS && floatSecondsTotal > 0 && this.vwr.g.waitForMoveTo) throw new JS.ScriptInterruption(this, "moveTo", 1); +return; +}var axis = JU.V3.new3(NaN, 0, 0); +var center = null; +var i = 1; +floatSecondsTotal = (this.isFloatParameter(i) ? this.floatParameter(i++) : 2.0); +var degrees = 90; +var bsCenter = null; +var isChange = true; +var isMolecular = false; +var xTrans = 0; +var yTrans = 0; +var zoom = NaN; +var rotationRadius = NaN; +var zoom0 = this.vwr.tm.getZoomSetting(); +var navCenter = null; +var xNav = NaN; +var yNav = NaN; +var navDepth = NaN; +var cameraDepth = NaN; +var cameraX = NaN; +var cameraY = NaN; +var pymolView = null; +var q = null; +var tok = this.getToken(i).tok; +switch (tok) { +case 1073742110: +pymolView = this.floatParameterSet(++i, 18, 21); +i = this.iToken + 1; +if (this.chk && this.checkLength(i) > 0) return; +break; +case 134221850: +if (this.tokAt(++i) == 1073742028) { +isMolecular = true; +i++; +}if (this.isAtomExpression(i)) { +isMolecular = true; +var ret = new Array(1); +center = this.centerParameter(i, ret); +if (!(Clazz.instanceOf(ret[0],"JU.BS"))) this.invArg(); +bsCenter = ret[0]; +q = (this.chk ? new JU.Quat() : this.vwr.ms.getQuaternion(bsCenter.nextSetBit(0), this.vwr.getQuaternionFrame())); +} else { +q = this.getQuaternionParameter(i, null, false); +}i = this.iToken + 1; +if (q == null) this.invArg(); +break; +case 9: +case 8: +case 1073742332: +if (this.isPoint3f(i)) { +axis.setT(this.getPoint3f(i, true, true)); +i = this.iToken + 1; +degrees = this.floatParameter(i++); +} else { +var pt4 = this.getPoint4f(i); +i = this.iToken + 1; +axis.set(pt4.x, pt4.y, pt4.z); +degrees = (pt4.x == 0 && pt4.y == 0 && pt4.z == 0 ? NaN : pt4.w); +}break; +case 1073741954: +axis.set(1, 0, 0); +degrees = 0; +this.checkLength(++i); +break; +case 1073741858: +axis.set(0, 1, 0); +degrees = 180; +this.checkLength(++i); +break; +case 1073741996: +axis.set(0, 1, 0); +this.checkLength(++i); +break; +case 1073742126: +axis.set(0, -1, 0); +this.checkLength(++i); +break; +case 1073742172: +axis.set(1, 0, 0); +this.checkLength(++i); +break; +case 1073741871: +axis.set(-1, 0, 0); +this.checkLength(++i); +break; +case 1073741854: +var abc = this.paramAsStr(++i); +if (abc.equals("-")) abc += this.paramAsStr(++i); +this.checkLength(++i); +switch ("xyz".indexOf(abc)) { +case 0: +q = JU.Quat.new4(0.5, 0.5, 0.5, -0.5); +break; +case 1: +q = JU.Quat.new4(0.5, 0.5, 0.5, 0.5); +break; +case 2: +q = JU.Quat.new4(0, 0, 0, 1); +break; +default: +var uc; +uc = this.vwr.getCurrentUnitCell(); +if (uc == null) { +uc = this.vwr.getSymTemp().setUnitCellFromParams(null, false, NaN); +}q = uc.getQuaternionRotation(abc); +if (q == null) this.invArg(); +} +break; +default: +axis = JU.V3.new3(this.floatParameter(i++), this.floatParameter(i++), this.floatParameter(i++)); +degrees = this.floatParameter(i++); +} +if (q != null) { +var aa; +aa = q.toAxisAngle4f(); +axis.set(aa.x, aa.y, aa.z); +degrees = (isMolecular ? -1 : 1) * (aa.angle * 180.0 / 3.141592653589793); +}if (Float.isNaN(axis.x) || Float.isNaN(axis.y) || Float.isNaN(axis.z)) axis.set(0, 0, 0); + else if (axis.length() == 0 && degrees == 0) degrees = NaN; +isChange = (tok == 134221850 || !this.vwr.tm.isInPosition(axis, degrees)); +if (this.isFloatParameter(i)) zoom = this.floatParameter(i++); +if (this.isFloatParameter(i) && !this.isCenterParameter(i)) { +xTrans = this.floatParameter(i++); +yTrans = this.floatParameter(i++); +if (!isChange && Math.abs(xTrans - this.vwr.tm.getTranslationXPercent()) >= 1) isChange = true; +if (!isChange && Math.abs(yTrans - this.vwr.tm.getTranslationYPercent()) >= 1) isChange = true; +}if (bsCenter == null && i != this.slen) { +var ret = new Array(1); +center = this.centerParameter(i, ret); +if (Clazz.instanceOf(ret[0],"JU.BS")) bsCenter = ret[0]; +i = this.iToken + 1; +}if (center != null) { +if (!isChange && center.distance(this.vwr.tm.fixedRotationCenter) >= 0.1) isChange = true; +if (this.isFloatParameter(i)) rotationRadius = this.floatParameter(i++); +if (!this.isCenterParameter(i)) { +if ((rotationRadius == 0 || Float.isNaN(rotationRadius)) && (zoom == 0 || Float.isNaN(zoom))) { +var newZoom = Math.abs(this.getZoom(0, i, bsCenter, (zoom == 0 ? 0 : zoom0))); +i = this.iToken + 1; +zoom = newZoom; +} else { +if (!isChange && Math.abs(rotationRadius - this.vwr.getFloat(570425388)) >= 0.1) isChange = true; +}}if (zoom == 0 || Float.isNaN(zoom)) zoom = 100; +if (Float.isNaN(rotationRadius)) rotationRadius = 0; +if (!isChange && Math.abs(zoom - zoom0) >= 1) isChange = true; +if (i != this.slen) { +navCenter = this.centerParameter(i, null); +i = this.iToken + 1; +if (i != this.slen) { +xNav = this.floatParameter(i++); +yNav = this.floatParameter(i++); +}if (i != this.slen) navDepth = this.floatParameter(i++); +if (i != this.slen) { +cameraDepth = this.floatParameter(i++); +if (!isChange && Math.abs(cameraDepth - this.vwr.tm.getCameraDepth()) >= 0.01) isChange = true; +}if (i + 1 < this.slen) { +cameraX = this.floatParameter(i++); +cameraY = this.floatParameter(i++); +if (!isChange && Math.abs(cameraX - this.vwr.tm.camera.x) >= 0.01) isChange = true; +if (!isChange && Math.abs(cameraY - this.vwr.tm.camera.y) >= 0.01) isChange = true; +}}}this.checkLength(i); +if (this.chk) return; +if (!isChange) floatSecondsTotal = 0; +if (floatSecondsTotal > 0) this.refresh(false); +if (!this.useThreads()) floatSecondsTotal = 0; +if (cameraDepth == 0) { +cameraDepth = cameraX = cameraY = NaN; +}if (pymolView != null) this.vwr.tm.moveToPyMOL(this, floatSecondsTotal, pymolView); + else this.vwr.moveTo(this, floatSecondsTotal, center, axis, degrees, null, zoom, xTrans, yTrans, rotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY); +if (this.isJS && floatSecondsTotal > 0 && this.vwr.g.waitForMoveTo) throw new JS.ScriptInterruption(this, "moveTo", 1); +}); +Clazz.defineMethod(c$, "isAtomExpression", +function(i){ +switch (this.tokAt(i)) { +case 12290: +case 10: +case 1073742325: +return true; +default: +return false; +} +}, "~N"); +Clazz.defineMethod(c$, "cmdPause", +function(){ +if (this.chk || this.isJS && !this.allowJSThreads) return false; +var msg = this.optParameterAsString(1); +if (!this.vwr.getBooleanProperty("_useCommandThread")) { +}if (this.vwr.autoExit || !this.vwr.haveDisplay && !this.vwr.isWebGL) return false; +if (this.scriptLevel == 0 && this.pc == this.aatoken.length - 1) { +this.vwr.scriptStatus("nothing to pause: " + msg); +return false; +}msg = (msg.length == 0 ? ": RESUME to continue." : ": " + this.vwr.formatText(msg)); +this.pauseExecution(true); +this.vwr.scriptStatusMsg("script execution paused" + msg, "script paused for RESUME"); +return true; +}); +Clazz.defineMethod(c$, "cmdPrint", +function(){ +if (this.slen == 1) { +if (!this.chk) this.showStringPrint("\0", true); +return; +}this.showStringPrint(this.parameterExpressionString(1, 0), true); +}); +Clazz.defineMethod(c$, "cmdPrompt", +function(){ +var msg = null; +if (this.slen == 1) { +if (!this.chk) msg = JS.ScriptEval.getContextTrace(this.vwr, this.getScriptContext("prompt"), null, true).toString(); +} else { +msg = this.parameterExpressionString(1, 0); +}if (!this.chk) this.vwr.prompt(msg, null, null, true); +}); +Clazz.defineMethod(c$, "cmdReset", +function(){ +if (this.slen == 3 && this.tokAt(1) == 134320141) { +if (!this.chk) this.vwr.removeFunction(this.stringParameter(2)); +return; +}this.checkLength(-2); +if (this.chk) return; +if (this.slen == 1) { +this.vwr.reset(false); +return; +}switch (this.tokAt(1)) { +case 36865: +if (!this.chk && this.outputBuffer != null) this.outputBuffer.setLength(0); +return; +case 134221829: +this.vwr.cacheClear(); +return; +case 1073741936: +this.resetError(); +return; +case 1073741995: +this.vwr.stm.resetLighting(); +return; +case 1086324748: +this.vwr.resetShapes(true); +return; +case 134320141: +this.vwr.clearFunctions(); +return; +case 1812599299: +this.vwr.ms.setBoundBox(null, null, true, 0); +return; +case 1639976963: +var bsModified = new JU.BS(); +this.runScript(this.vwr.ms.getDefaultStructure(this.vwr.bsA(), bsModified)); +this.vwr.shm.resetBioshapes(bsModified); +return; +case 1648363544: +this.vwr.setData("element_vdw", Clazz.newArray(-1, [null, ""]), 0, 0, 0, 0, 0); +return; +case 1075838996: +this.vwr.ms.resetAromatic(); +return; +case 1611141175: +this.vwr.reset(true); +return; +} +var $var = this.paramAsStr(1); +if ($var.charAt(0) == '_') this.invArg(); +this.vwr.unsetProperty($var); +}); +Clazz.defineMethod(c$, "resetError", +function(){ +this.vwr.g.removeParam("_errormessage"); +}); +Clazz.defineMethod(c$, "cmdRestrict", +function(){ +var isBond = (this.tokAt(1) == 1677721602); +this.cmdSelect(isBond ? 2 : 1); +this.restrictSelected(isBond, true); +}); +Clazz.defineMethod(c$, "cmdReturn", +function(tv){ +if (this.chk) return; +var t = this.getContextVariableAsVariable("_retval", false); +if (t != null) { +var v = (tv != null || this.slen == 1 ? null : this.parameterExpressionToken(1)); +if (tv == null) tv = (v == null ? JS.SV.newI(0) : v); +t.value = tv.value; +t.intValue = tv.intValue; +t.tok = tv.tok; +}this.cmdGoto(false); +}, "JS.SV"); +Clazz.defineMethod(c$, "cmdRotate", +function(isSpin, isSelected){ +if (this.slen == 2) switch (this.getToken(1).tok) { +case 1073742335: +if (!this.chk) this.vwr.tm.setSpinOn(); +return; +case 1073742334: +if (!this.chk) this.vwr.tm.setSpinOff(); +return; +} +var bsAtoms = null; +var bsBest = null; +var degreesPerSecond = 1.4E-45; +var nPoints = 0; +var endDegrees = 3.4028235E38; +var isMolecular = false; +var haveRotation = false; +var dihedralList = null; +var ptsA = null; +var points = new Array(2); +var rotAxis = JU.V3.new3(0, 1, 0); +var translation = null; +var m4 = null; +var m3 = null; +var is4x4 = false; +var direction = 1; +var tok; +var q = null; +var helicalPath = false; +var isDegreesPerSecond = false; +var isSeconds = false; +var ptsB = null; +var bsCompare = null; +var invPoint = null; +var invPlane = null; +var axesOrientationRasmol = this.vwr.getBoolean(603979806); +var checkModelKit = false; +for (var i = 1; i < this.slen; ++i) { +switch (tok = this.getToken(i).tok) { +case 528432: +case 4145: +checkModelKit = (this.vwr.getOperativeSymmetry() != null); +continue; +case 12290: +case 10: +case 1073742325: +bsBest = this.atomExpressionAt(i); +if (translation != null || q != null || nPoints == 2) { +bsAtoms = bsBest; +ptsB = null; +isSelected = true; +break; +}case 1073742332: +case 8: +case 1073742330: +haveRotation = true; +if (nPoints == 2) nPoints = 0; +var pt1 = this.centerParameterForModel(i, this.vwr.am.cmi, null); +if (!this.chk && tok == 1073742330 && this.tokAt(i + 2) != 268437504) { +isMolecular = true; +var data = Clazz.newArray(-1, [this.objectNameParameter(++i), Integer.$valueOf(this.vwr.am.cmi), null]); +rotAxis = (this.getShapePropertyData(22, "getSpinAxis", data) ? data[2] : null); +}points[nPoints++] = pt1; +break; +case 1611141175: +isSpin = true; +continue; +case 1073741988: +case 1073742028: +isMolecular = true; +continue; +case 1113589787: +isSelected = true; +break; +case 268436992: +continue; +case 2: +case 3: +if (isSpin) { +if (degreesPerSecond == 1.4E-45) { +degreesPerSecond = this.floatParameter(i); +} else if (endDegrees == 3.4028235E38) { +endDegrees = degreesPerSecond; +degreesPerSecond = this.floatParameter(i); +} else { +this.invArg(); +}} else { +if (endDegrees == 3.4028235E38) { +endDegrees = this.floatParameter(i); +} else if (degreesPerSecond == 1.4E-45) { +degreesPerSecond = this.floatParameter(i); +isSpin = true; +} else { +this.invArg(); +}}if (i == this.slen - 2 && (this.tokAt(i + 1) == 1073741824 || this.tokAt(i + 1) == 4)) { +var s = this.paramAsStr(++i).toLowerCase(); +if (s.equals("dps")) { +isDegreesPerSecond = true; +} else if (s.equals("sec")) { +isSeconds = true; +}}break; +case 268440576: +direction = -1; +continue; +case 1111492629: +haveRotation = true; +rotAxis.set(direction, 0, 0); +continue; +case 1111492630: +haveRotation = true; +rotAxis.set(0, direction, 0); +continue; +case 1111492631: +haveRotation = true; +rotAxis.set(0, 0, (axesOrientationRasmol && !isMolecular ? -direction : direction)); +continue; +case 9: +case 134221850: +case 1073741864: +if (tok == 134221850) i++; +haveRotation = true; +if ((q = this.getQuaternionParameter(i, bsBest, tok == 1073741864)) != null) { +if (q.q0 == 0) q.q0 = 1e-10; +rotAxis.setT(q.getNormal()); +endDegrees = q.getTheta(); +}break; +case 134217750: +var pts; +var n; +if (this.paramAsStr(i + 1).equalsIgnoreCase("picked")) { +i++; +var lst = this.vwr.getPOrNull("pickedList"); +n = lst.size(); +if (n < 3) return; +pts = new Array(3); +for (var j = 0; j < 3; j++) pts[j] = this.vwr.ms.getAtomSetCenter(JS.SV.getBitSet(lst.get(n - 3 + j), false)); + +} else if (this.isArrayParameter(i + 1)) { +pts = this.getPointArray(++i, -1, false); +i = this.iToken; +} else { +pts = new Array(3); +for (var j = 0; j < 3; j++) { +pts[j] = this.centerParameter(++i, null); +i = this.iToken; +} +}n = pts.length; +if (n < 3) return; +q = JU.Quat.getQuaternionFrame(pts[n - 3], pts[n - 2], pts[n - 1]); +q = JU.Quat.new4(1, 0, 0, 0).mulQ(q.inv().div(this.vwr.tm.getRotationQ())); +rotAxis.setT(q.getNormal()); +endDegrees = q.getTheta(); +break; +case 134217731: +haveRotation = true; +if (this.isPoint3f(++i)) { +rotAxis.setT(this.centerParameter(i, null)); +break; +}var p4 = this.getPoint4f(i); +rotAxis.set(p4.x, p4.y, p4.z); +endDegrees = p4.w; +q = JU.Quat.newVA(rotAxis, endDegrees); +break; +case 1073742328: +isSelected = true; +isMolecular = true; +haveRotation = true; +if (this.isArrayParameter(++i)) { +dihedralList = this.floatParameterSet(i, 6, 2147483647); +i = this.iToken; +} else { +var iAtom1 = this.atomExpressionAt(i).nextSetBit(0); +var iAtom2 = this.atomExpressionAt(++this.iToken).nextSetBit(0); +if (iAtom1 < 0 || iAtom2 < 0) return; +bsAtoms = this.vwr.getBranchBitSet(iAtom2, iAtom1, true); +points[0] = this.vwr.ms.at[iAtom1]; +points[1] = this.vwr.ms.at[iAtom2]; +nPoints = 2; +}break; +case 4160: +translation = JU.V3.newV(this.centerParameter(++i, null)); +isMolecular = isSelected = true; +break; +case 136314895: +helicalPath = true; +continue; +case 1296041985: +var symop = this.intParameter(++i); +if (this.chk) continue; +var info = this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, null, -1, false, null); +var op = (info == null ? null : info.get("operations")); +if (symop == 0 || op == null || op.length < Math.abs(symop)) this.invArg(); +op = op[Math.abs(symop) - 1]; +translation = op[5]; +invPoint = op[6]; +points[0] = op[7]; +if (op[8] != null) rotAxis = op[8]; +endDegrees = (op[9]).intValue(); +if (symop < 0) { +endDegrees = -endDegrees; +if (translation != null) translation.scale(-1); +}if (endDegrees == 0 && points[0] != null) { +rotAxis.normalize(); +JU.Measure.getPlaneThroughPoint(points[0], rotAxis, invPlane = new JU.P4()); +}q = JU.Quat.newVA(rotAxis, endDegrees); +nPoints = (points[0] == null ? 0 : 1); +isMolecular = true; +haveRotation = true; +isSelected = true; +continue; +case 134221831: +bsCompare = this.atomExpressionAt(++i); +ptsA = this.vwr.ms.getAtomPointVector(bsCompare); +if (ptsA == null) { +this.iToken = i; +this.invArg(); +}i = this.iToken; +ptsB = this.getPointVector(this.getToken(++i), i); +if (ptsB == null || ptsA.size() != ptsB.size()) { +this.iToken = i; +this.invArg(); +}m4 = new JU.M4(); +points[0] = new JU.P3(); +nPoints = 1; +J.api.Interface.getInterface("JU.Eigen", this.vwr, "script"); +var stddev = (this.chk ? 0 : JU.Measure.getTransformMatrix4(ptsA, ptsB, m4, points[0])); +if (stddev > 0.001) ptsB = null; +case 12: +case 11: +haveRotation = true; +m3 = new JU.M3(); +if (tok == 12) { +is4x4 = true; +m4 = this.theToken.value; +}if (m4 != null) { +points[0] = null; +bsAtoms = bsBest; +ptsB = null; +nPoints = 0; +translation = new JU.V3(); +m4.getTranslation(translation); +m4.getRotationScale(m3); +} else { +m3 = this.theToken.value; +}q = (this.chk ? new JU.Quat() : JU.Quat.newM(m3)); +rotAxis.setT(q.getNormal()); +endDegrees = q.getTheta(); +isMolecular = true; +break; +default: +this.invArg(); +} +i = this.iToken; +} +if (this.chk) return; +if (dihedralList != null) { +if (endDegrees != 3.4028235E38) { +isSpin = true; +degreesPerSecond = endDegrees; +}}if (isSelected && bsAtoms == null) bsAtoms = this.vwr.bsA(); +if (bsCompare != null) { +isSelected = true; +if (bsAtoms == null) bsAtoms = bsCompare; +}if (q != null && !isSeconds && !isDegreesPerSecond) { +isDegreesPerSecond = (degreesPerSecond > 0); +isSeconds = !isDegreesPerSecond; +}var rate = (degreesPerSecond == 1.4E-45 ? 10 : endDegrees == 3.4028235E38 ? degreesPerSecond : isDegreesPerSecond ? degreesPerSecond : isSeconds ? (endDegrees < 0 ? -1 : 1) * Math.abs(endDegrees / degreesPerSecond) : (degreesPerSecond < 0) == (q == null ? endDegrees > 0 : true) ? -endDegrees / degreesPerSecond : degreesPerSecond); +if (q == null && endDegrees < 0 && rate > 0) rate = -rate; +if (dihedralList != null) { +if (!isSpin) { +this.vwr.setDihedrals(dihedralList, null, 1); +return; +}translation = null; +}if (q != null) { +if (nPoints == 0 && translation != null && !is4x4) points[0] = this.vwr.ms.getAtomSetCenter(bsAtoms != null ? bsAtoms : isSelected ? this.vwr.bsA() : this.vwr.getAllAtoms()); +if (helicalPath && translation != null) { +points[1] = JU.P3.newP(points[0]); +points[1].add(translation); +var ret = JU.Measure.computeHelicalAxis(points[0], points[1], q); +points[0] = ret[0]; +var theta = (ret[3]).x; +if (theta != 0) { +translation = ret[1]; +rotAxis = JU.V3.newV(translation); +if (theta < 0) rotAxis.scale(-1); +}m4 = null; +}if (isSpin && m4 == null) m4 = JS.ScriptMathProcessor.getMatrix4f(q.getMatrix(), translation); +if (points[0] != null) nPoints = 1; +}if (invPoint != null || invPlane != null) { +this.vwr.invertAtomCoord(invPoint, null, bsAtoms, -1, false); +if (rotAxis == null) return; +}var requiresThread = (isSpin && (!this.vwr.headless || endDegrees == 3.4028235E38)); +if (isSpin && !requiresThread) isSpin = false; +if (!checkModelKit && nPoints < 2 && dihedralList == null) { +if (!isMolecular) { +if (requiresThread && bsAtoms == null && !this.useThreads()) { +isSpin = false; +if (endDegrees == 3.4028235E38) return; +}if (this.vwr.rotateAxisAngleAtCenter(this, points[0], rotAxis, rate, endDegrees, isSpin, bsAtoms)) { +if (this.isJS && isSpin && bsAtoms == null && this.vwr.g.waitForMoveTo && endDegrees != 3.4028235E38) throw new JS.ScriptInterruption(this, "rotate", 1); +}return; +}if (nPoints == 0) points[0] = new JU.P3(); +points[1] = JU.P3.newP(points[0]); +points[1].add(rotAxis); +nPoints = 2; +}if (nPoints == 0) points[0] = new JU.P3(); +if (nPoints < 2 || points[0].distance(points[1]) == 0) { +points[1] = JU.P3.newP(points[0]); +points[1].y += 1.0; +}if (endDegrees == 3.4028235E38) endDegrees = 0; +if (checkModelKit) { +if (endDegrees == 0) return; +if (bsAtoms == null || nPoints != 2 || isSpin || translation != null || dihedralList != null || ptsB != null || is4x4) this.invArg(); +var na = this.vwr.getModelkit(false).cmdRotateAtoms(bsAtoms, points, endDegrees); +if (this.doReport()) this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms rotated"), na), false); +return; +}if (endDegrees != 0 && translation != null && !haveRotation) translation.scale(endDegrees / translation.length()); +if (isSpin && translation != null && (endDegrees == 0 || degreesPerSecond == 0)) { +endDegrees = 0.01; +rate = (degreesPerSecond == 1.4E-45 ? 0.01 : degreesPerSecond < 0 ? -endDegrees / degreesPerSecond : degreesPerSecond * 0.01 / translation.length()); +degreesPerSecond = 0.01; +}if (bsAtoms != null && isSpin && ptsB == null && m4 != null) { +ptsA = this.vwr.ms.getAtomPointVector(bsAtoms); +ptsB = JU.Measure.transformPoints(ptsA, m4, points[0]); +}if (bsAtoms != null && !isSpin && ptsB != null) { +this.vwr.setAtomCoords(bsAtoms, 1145047049, ptsB); +} else { +if (requiresThread && !this.useThreads()) return; +if (this.vwr.rotateAboutPointsInternal(this, points[0], points[1], rate, endDegrees, isSpin, bsAtoms, translation, ptsB, dihedralList, is4x4 ? m4 : null, false) && this.isJS && isSpin) throw new JS.ScriptInterruption(this, "rotate", 1); +}}, "~B,~B"); +Clazz.defineMethod(c$, "cmdRestore", +function(){ +if (this.slen > 1) { +var saveName = this.optParameterAsString(2); +var tok = this.tokAt(1); +switch (tok) { +case 1073742077: +case 1073742132: +case 1073742139: +var floatSecondsTotal = (this.slen > 3 ? this.floatParameter(3) : 0); +if (floatSecondsTotal < 0) this.invArg(); +if (this.chk) return; +var type = ""; +switch (tok) { +case 1073742077: +type = "Orientation"; +this.vwr.stm.restoreOrientation(saveName, floatSecondsTotal, true); +break; +case 1073742132: +type = "Rotation"; +this.vwr.stm.restoreOrientation(saveName, floatSecondsTotal, false); +break; +case 1073742139: +type = "Scene"; +this.vwr.stm.restoreScene(saveName, floatSecondsTotal); +break; +} +if (this.isJS && floatSecondsTotal > 0 && this.vwr.g.waitForMoveTo) throw new JS.ScriptInterruption(this, "restore" + type, 1); +return; +} +this.checkLength23(); +switch (tok) { +case 1677721602: +if (!this.chk) this.vwr.stm.restoreBonds(saveName); +return; +case 14: +if (this.chk) return; +var sc = this.vwr.stm.getContext(saveName); +if (sc != null) { +this.restoreScriptContext(sc, true, false, false); +if (this.thisContext != null) { +this.thisContext.setMustResume(); +this.mustResumeEval = true; +this.tQuiet = true; +}}return; +case 1073742329: +if (this.chk) return; +var script = this.vwr.stm.getSavedCoordinates(saveName); +if (script == null) this.invArg(); +this.runScript(script); +this.vwr.checkCoordinatesChanged(null); +return; +case 1073742140: +if (!this.chk) this.vwr.stm.restoreSelection(saveName); +return; +case 1073742158: +if (this.chk) return; +var state; +state = this.vwr.stm.getSavedState(saveName); +if (state == null) { +if (saveName.equalsIgnoreCase("UNDO")) return; +this.invArg(); +}this.runScript(state); +return; +case 1639976963: +if (this.chk) return; +var shape = this.vwr.stm.getSavedStructure(saveName); +if (shape == null) this.invArg(); +this.runScript(shape); +return; +case 1814695966: +if (!this.chk) this.vwr.stm.restoreUnitCell(saveName); +return; +} +}this.errorStr2(53, "RESTORE", "bonds? context? coordinates? orientation? rotation? selection? state? structure?"); +}); +Clazz.defineMethod(c$, "cmdSave", +function(){ +if (this.slen > 1) { +var saveName = this.optParameterAsString(2); +switch (this.tokAt(1)) { +case 1677721602: +if (!this.chk) this.vwr.stm.saveBonds(saveName); +return; +case 14: +if (!this.chk) this.saveContext(saveName); +return; +case 1073742329: +if (!this.chk) this.vwr.stm.saveCoordinates(saveName, this.vwr.bsA()); +return; +case 1073742077: +case 1073742132: +if (!this.chk) this.vwr.stm.saveOrientation(saveName, null); +return; +case 1073742140: +if (!this.chk) { +this.vwr.stm.saveSelection(saveName, this.vwr.bsA()); +this.vwr.stm.restoreSelection(saveName); +}return; +case 1073742158: +if (!this.chk && this.vwr.getBoolean(603979898)) { +this.vwr.stm.saveState(saveName); +if (saveName.length == 0) { +this.showString(this.vwr.stm.getUndoInfo()); +}}return; +case 1639976963: +if (!this.chk) this.vwr.stm.saveStructure(saveName); +return; +case 1814695966: +if (!this.chk) this.vwr.stm.saveUnitCell(saveName); +return; +} +}this.errorStr2(53, "SAVE", "bonds? context? coordinates? orientation? rotation? selection? state? structure?"); +}); +Clazz.defineMethod(c$, "cmdScript", +function(tok, filename, theScript, params){ +if (tok == 134238732) { +this.checkLength(2); +if (!this.chk) this.vwr.jsEval(this.paramAsStr(1)); +return; +}var loadCheck = true; +var isCheck = false; +var doStep = false; +var isAsync = this.vwr.async; +var lineNumber = 0; +var pc = 0; +var lineEnd = 0; +var pcEnd = 0; +var i = 1; +var localPath = null; +var remotePath = null; +var scriptPath = null; +if (tok == 4124) { +i = -2; +}if (filename == null && theScript == null) { +tok = this.tokAt(i); +if (tok != 4) this.error(16); +filename = this.paramAsStr(i); +if (filename.equalsIgnoreCase("async")) { +isAsync = true; +filename = this.paramAsStr(++i); +}if (filename.equalsIgnoreCase("applet")) { +filename = null; +var appID = this.paramAsStr(++i); +theScript = this.parameterExpressionString(++i, 0); +this.checkLast(this.iToken); +if (this.chk) return; +if (appID.length == 0 || appID.equals("all")) appID = "*"; +if (!appID.equals(".")) { +this.vwr.jsEval(appID + "\1" + theScript); +if (!appID.equals("*")) return; +}} else { +tok = this.tokAt(this.slen - 1); +doStep = (tok == 266298); +if (filename.equalsIgnoreCase("inline")) { +filename = null; +theScript = this.parameterExpressionString(++i, (doStep ? this.slen - 1 : 0)); +i = this.iToken; +} else { +while (filename.equalsIgnoreCase("localPath") || filename.equalsIgnoreCase("remotePath") || filename.equalsIgnoreCase("scriptPath")) { +if (filename.equalsIgnoreCase("localPath")) localPath = this.paramAsStr(++i); + else if (filename.equalsIgnoreCase("scriptPath")) scriptPath = this.paramAsStr(++i); + else remotePath = this.paramAsStr(++i); +filename = this.paramAsStr(++i); +} +if (filename.startsWith("spt::")) filename = filename.substring(5); +filename = this.checkFileExists("SCRIPT_", isAsync, filename, i, true); +}if ((tok = this.tokAt(++i)) == 1073741877) { +isCheck = true; +tok = this.tokAt(++i); +}if (tok == 1073742050) { +loadCheck = false; +tok = this.tokAt(++i); +}if (tok == 1073741998 || tok == 1140850692) { +i++; +lineEnd = lineNumber = Math.max(this.intParameter(i++), 0); +if (this.checkToken(i)) { +if (this.getToken(i).tok == 268440576) lineEnd = (this.checkToken(++i) ? this.intParameter(i++) : 0); + else lineEnd = -this.intParameter(i++); +if (lineEnd <= 0) this.invArg(); +}} else if (tok == 1073741890 || tok == 1073741892) { +i++; +pc = Math.max(this.intParameter(i++) - 1, 0); +pcEnd = pc + 1; +if (this.checkToken(i)) { +if (this.getToken(i).tok == 268440576) pcEnd = (this.checkToken(++i) ? this.intParameter(i++) : 0); + else pcEnd = -this.intParameter(i++); +if (pcEnd <= 0) this.invArg(); +}}i = -i; +}} else if (filename != null && isAsync) { +filename = this.checkFileExists("SCRIPT_", isAsync, filename, i, true); +}if (i < 0) { +if (this.tokAt(i = -i) == 268435968) { +params = this.parameterExpressionList(i, -1, false); +i = this.iToken + 1; +}this.checkLength(doStep ? i + 1 : i); +}if (this.chk && !this.isCmdLine_c_or_C_Option) return; +if (this.isCmdLine_c_or_C_Option) isCheck = true; +if (theScript == null) { +theScript = this.getScriptFileInternal(filename, localPath, remotePath, scriptPath); +if (theScript == null) this.invArg(); +}if (this.isMenu(theScript)) { +this.vwr.setMenu(theScript, false); +return; +}var wasSyntaxCheck = this.chk; +var wasScriptCheck = this.isCmdLine_c_or_C_Option; +if (isCheck) this.chk = this.isCmdLine_c_or_C_Option = true; +this.pushContext(null, "SCRIPT"); +this.contextPath += " >> " + filename; +if (this.compileScript(filename, theScript, filename != null && this.debugScript)) { +this.pcEnd = pcEnd; +this.lineEnd = lineEnd; +while (pc < this.lineNumbers.length && this.lineNumbers[pc] < lineNumber) pc++; + +this.pc = pc; +var saveLoadCheck = this.isCmdLine_C_Option; +this.isCmdLine_C_Option = new Boolean (this.isCmdLine_C_Option & loadCheck).valueOf(); +this.executionStepping = new Boolean (this.executionStepping | doStep).valueOf(); +this.setScriptArguments(params, false); +if (isCheck) this.listCommands = true; +var timeMsg = this.vwr.getBoolean(603979934); +if (timeMsg) JU.Logger.startTimer("script"); +this.privateFuncs = null; +this.dispatchCommands(false, false, false); +if (this.$isStateScript) JS.ScriptManager.setStateScriptVersion(this.vwr, null); +if (timeMsg) this.showString(JU.Logger.getTimerMsg("script", 0)); +this.isCmdLine_C_Option = saveLoadCheck; +this.popContext(false, false); +} else { +JU.Logger.error(J.i18n.GT.$("script ERROR: ") + this.errorMessage); +this.popContext(false, false); +if (wasScriptCheck) { +this.setErrorMessage(null); +} else { +this.evalError(null, null); +}}this.chk = wasSyntaxCheck; +this.isCmdLine_c_or_C_Option = wasScriptCheck; +}, "~N,~S,~S,JU.Lst"); +Clazz.defineMethod(c$, "isMenu", +function(s){ +var pt = (s == null ? -1 : s.indexOf("Menu Structure")); +return (pt > 0 && s.startsWith("#") && pt < s.indexOf("\n")); +}, "~S"); +Clazz.defineMethod(c$, "cmdSelect", +function(i){ +if (this.slen == 1) { +this.vwr.selectStatus(null, false, 0, !this.doReport(), false); +return; +}if (this.slen == 2 && this.tokAt(1) == 1073742072) return; +var tok = this.tokAt(2); +var bs = null; +switch (tok) { +case 10: +if (Clazz.instanceOf(this.getToken(2).value,"JM.BondSet") || tok == 1677721602 && this.getToken(3).tok == 10) { +if (this.slen != this.iToken + 2) this.invArg(); +if (!this.chk) this.vwr.selectBonds(this.theToken.value); +return; +}break; +case 1745489939: +case 1677721602: +if (this.slen == 5 && this.tokAt(3) == 10) { +bs = this.getToken(3).value; +this.iToken++; +} else if (this.isArrayParameter(4)) { +bs = new JU.BS(); +var a = this.expandFloatArray(this.floatParameterSet(4, 0, 2147483647), 0, false); +for (var ii = a.length; --ii >= 0; ) if (a[ii] >= 0) bs.set(a[ii]); + +}this.checkLast(this.iToken); +if (this.chk) return; +if (bs == null) this.invArg(); +if (tok == 1745489939) this.setShapeProperty(6, "select", bs); + else this.vwr.selectBonds(bs); +return; +} +var addRemove = 0; +var isGroup = false; +var reportStatus = (this.tokAt(i) == 268436992); +if (reportStatus) i++; +if (this.getToken(1).intValue == 0 && this.theTok != 1073742334) { +var v = this.parameterExpressionToken(0).value; +if (!(Clazz.instanceOf(v,"JU.BS"))) this.invArg(); +this.checkLast(this.iToken); +bs = v; +} else { +tok = this.tokAt(i); +switch (tok) { +case 1073742335: +case 1073742334: +if (!this.chk) this.vwr.setSelectionHalosEnabled(tok == 1073742335); +tok = this.tokAt(++i); +if (tok == 0) return; +break; +} +switch (tok) { +case 1275069441: +case 1073742119: +addRemove = tok; +tok = this.tokAt(++i); +} +isGroup = (tok == 1086324742); +if (isGroup) tok = this.tokAt(++i); +bs = this.atomExpressionAt(i); +}if (this.chk) return; +if (this.isBondSet) { +this.vwr.selectBonds(bs); +} else { +if (bs.length() > this.vwr.ms.ac) { +var bs1 = this.vwr.getAllAtoms(); +bs1.and(bs); +bs = bs1; +}this.vwr.selectStatus(bs, isGroup, addRemove, !this.doReport(), reportStatus); +this.vwr.slm.noneSelected = Boolean.$valueOf(this.slen == 4 && this.tokAt(2) == 1073742333); +}}, "~N"); +Clazz.defineMethod(c$, "cmdSelectionHalos", +function(pt){ +var showHalo = false; +switch (pt == this.slen ? 1073742335 : this.getToken(pt).tok) { +case 1073742335: +case 1113589787: +showHalo = true; +case 1073742334: +case 1073742333: +case 1073742056: +this.setBooleanProperty("selectionHalos", showHalo); +break; +default: +this.invArg(); +} +}, "~N"); +Clazz.defineMethod(c$, "cmdSet", +function(){ +if (this.slen == 1) { +this.showString(this.vwr.getAllSettings(null)); +return; +}var isJmolSet = (this.paramAsStr(0).equals("set")); +var key = this.optParameterAsString(1); +if (isJmolSet && this.slen == 2 && key.indexOf("?") >= 0) { +this.showString(this.vwr.getAllSettings(key.substring(0, key.indexOf("?")))); +return; +}var tok = this.getToken(1).tok; +var newTok = 0; +var sval; +var ival = 2147483647; +var b; +var pt; +var showing = (!this.chk && this.doReport() && !(this.st[0].value).equals("var")); +switch (tok) { +case 553648144: +case 603979866: +case 603979903: +case 603979924: +case 603979960: +case 603979962: +case 603979964: +case 603979965: +case 603979970: +if (this.$isStateScript) return; +break; +case 1611272194: +this.cmdAxes(2); +return; +case 1610616835: +this.cmdBackground(2); +return; +case 1812599299: +this.cmdBoundbox(2); +return; +case 1611272202: +this.cmdFrank(2); +return; +case 1610616855: +this.cmdHistory(2); +return; +case 1825200146: +this.cmdLabel(2, null); +return; +case 1814695966: +this.cmdUnitcell(2); +return; +case 536870920: +this.sm.loadShape(8); +this.setShapeProperty(8, "highlight", (this.tokAt(2) == 1073742334 ? null : this.atomExpressionAt(2))); +return; +case 1610625028: +case 1611141172: +this.cmdSelectionHalos(2); +return; +case 536875070: +this.cmdTimeout(2); +return; +case 536870932: +var o = (this.isArrayParameter(2) ? this.floatParameterSet(2, 2, 2) : this.tokAt(2) == 2 ? Clazz.newFloatArray(-1, [this.intParameter(2), this.intParameter(3)]) : this.stringParameter(2)); +this.checkLast(this.iToken); +if (this.chk) return; +if ((typeof(o)=='string')) { +if (this.vwr.fm.loadImage(o, "\0windowImage", !this.useThreads())) throw new JS.ScriptInterruption(this, "windowImage", 1); +} else { +this.vwr.setWindowDimensions(o); +}return; +case 1639976963: +var type = J.c.STR.getProteinStructureType(this.paramAsStr(2)); +if (type === J.c.STR.NOT) this.invArg(); +var data = this.floatParameterSet(3, 0, 2147483647); +if (data.length % 4 != 0) this.invArg(); +this.vwr.setStructureList(data, type); +this.checkLast(this.iToken); +return; +case 545259526: +ival = this.getArgbParam(2); +if (!this.chk) this.setObjectArgb("axes", ival); +return; +case 1610612737: +b = false; +switch (this.getToken(this.checkLast(2)).tok) { +case 268438528: +break; +case 268438016: +b = true; +break; +default: +this.invArg(); +} +this.setBooleanProperty("bondModeOr", b); +return; +case 536870916: +case 536870917: +if (this.chk) return; +var iLevel = (this.tokAt(2) == 1073742334 || this.tokAt(2) == 2 && this.intParameter(2) == 0 ? 4 : (tok == 536870917 ? 6 : 5)); +JU.Logger.setLogLevel(iLevel); +this.setIntProperty("logLevel", iLevel); +if (iLevel == 4) { +this.vwr.setDebugScript(false); +if (showing) this.vwr.showParameter("debugScript", true, 80); +}this.setDebugging(); +if (showing) this.vwr.showParameter("logLevel", true, 80); +return; +case 537022465: +this.cmdSetEcho(0); +return; +case 536875059: +this.cmdScale(2); +return; +case 1610612738: +this.cmdFont(5, this.checkLength23() == 2 ? 0 : this.floatParameter(2)); +return; +case 1613238294: +var bool = false; +switch (this.tokAt(this.checkLast(2))) { +case 1114249217: +bool = true; +case 2097178: +this.setBooleanProperty("hbondsBackbone", bool); +break; +case 1073742150: +bool = true; +case 1073741926: +this.setBooleanProperty("hbondsSolid", bool); +break; +default: +this.invArg(); +} +return; +case 1745489939: +case 537006096: +switch (tok = this.tokAt(this.checkLast(2))) { +case 1073742335: +case 1073742334: +this.setBooleanProperty("measurementlabels", tok == 1073742335); +return; +case 1073741926: +case 2: +case 3: +this.vwr.shm.loadShape(6); +var mad10 = this.getSetAxesTypeMad10(2); +if (mad10 != 2147483647) this.setShapeSizeBs(6, tok == 3 ? Clazz.doubleToInt(mad10 / 10) : mad10, null); +return; +} +this.setUnits(this.paramAsStr(2), 545259568); +return; +case 1611141176: +b = false; +switch (this.tokAt(this.checkLast(2))) { +case 1114249217: +b = true; +break; +case 2097178: +break; +default: +this.invArg(); +} +this.setBooleanProperty("ssbondsBackbone", b); +return; +case 1610612741: +this.cmdSetLabel("toggle"); +return; +case 536870930: +var v = new JU.Lst(); +for (var i = 2; i < this.slen; i++) { +var argb = this.getArgbParam(i); +v.addLast(Integer.$valueOf(argb)); +i = this.iToken; +} +if (this.chk) return; +var n = v.size(); +var scale = Clazz.newIntArray (n, 0); +for (var i = n; --i >= 0; ) scale[i] = v.get(i).intValue(); + +this.vwr.cm.ce.setUserScale(scale); +return; +case 553648188: +if (this.isFloatParameter(2)) { +this.checkLength(3); +this.setIntProperty("zSlab", Clazz.floatToInt(this.floatParameter(2))); +pt = null; +} else { +if (!this.isCenterParameter(2)) this.invArg(); +pt = this.centerParameter(2, null); +this.checkLength(this.iToken + 1); +}if (!this.chk) this.vwr.tm.zSlabPoint = (pt == null ? null : JU.P3.newP(pt)); +return; +} +var justShow = true; +switch (tok) { +case 536870914: +if (this.slen > 2) { +var modelDotted = this.getSettingStr(2, false); +var modelNumber; +var useModelNumber = false; +if (modelDotted.indexOf(".") < 0) { +modelNumber = JU.PT.parseInt(modelDotted); +useModelNumber = true; +} else { +modelNumber = JU.Edge.getFloatEncodedInt(modelDotted); +}if (this.chk) return; +var modelIndex = this.vwr.ms.getModelNumberIndex(modelNumber, useModelNumber, true); +this.vwr.setBackgroundModelIndex(modelIndex); +return; +}break; +case 1648363544: +if (this.chk) return; +this.vwr.setAtomProperty(this.vwr.getAllAtoms(), 1648363544, -1, NaN, null, null, null); +if (this.slen > 2 && "probe".equalsIgnoreCase(this.getSettingStr(2, false))) { +this.runScript("#VDW radii for PROBE;{_H}.vdw = 1.0;{_H and connected(_C) and not connected(within(smiles,\'[a]\'))}.vdw = 1.17;{_C}.vdw = 1.75;{_C and connected(3) and connected(_O)}.vdw = 1.65;{_N}.vdw = 1.55;{_O}.vdw = 1.4;{_P}.vdw = 1.8;{_S}.vdw = 1.8;message VDW radii for H, C, N, O, P, and S set according to Word, et al., J. Mol. Biol. (1999) 285, 1711-1733"); +return; +}newTok = 545259555; +case 545259555: +if (this.slen > 2) { +sval = this.paramAsStr(2); +if (this.slen == 3 && J.c.VDW.getVdwType(sval) == null && J.c.VDW.getVdwType(sval = this.getSettingStr(2, false)) == null) this.invArg(); +this.setStringProperty(key, sval); +}break; +case 536870918: +if (this.slen > 2) { +var $var = this.parameterExpressionToken(2); +if ($var.tok == 8) pt = $var.value; + else { +pt = new JU.P3(); +var ijk = $var.asInt(); +if (ijk >= 100) JU.SimpleUnitCell.ijkToPoint3f(ijk, pt, -1, 0); +}if (!this.chk) this.vwr.setDefaultLattice(pt); +}break; +case 545259552: +case 545259545: +if (this.slen > 2) { +if ((this.theTok = this.tokAt(2)) == 1073741991 || this.theTok == 1073742116) { +sval = this.paramAsStr(this.checkLast(2)); +} else { +sval = this.getSettingStr(2, false); +}this.setStringProperty(key, sval); +}break; +case 1631586315: +ival = this.getSettingInt(2); +if (ival == -2147483648) this.invArg(); +if (!this.chk) this.vwr.ms.setFormalCharges(this.vwr.bsA(), ival); +return; +case 545259563: +if (this.slen > 2) this.setStringProperty(key, this.getSettingStr(2, isJmolSet)); +break; +case 545259568: +case 545259558: +if (this.slen > 2) this.setUnits(this.getSettingStr(2, isJmolSet), tok); +break; +case 545259573: +if (!this.chk) this.vwr.setPicked(-1, false); +if (this.slen > 2) { +this.cmdSetPicking(); +return; +}break; +case 545259574: +if (this.slen > 2) { +this.cmdSetPickingStyle(); +return; +}break; +case 1715472409: +break; +case 536870924: +ival = this.getSettingInt(2); +if (ival == -2147483648 || ival == 0 || ival == 1) { +justShow = false; +break; +}tok = 553648174; +key = "specularPercent"; +this.setIntProperty(key, ival); +break; +case 1649022989: +tok = 553648178; +key = "strandCount"; +this.setIntProperty(key, this.getSettingInt(2)); +break; +default: +justShow = false; +} +if (justShow && !showing) return; +var isContextVariable = (!justShow && !isJmolSet && this.getContextVariableAsVariable(key, false) != null); +if (!justShow && !isContextVariable) { +switch (tok) { +case 1677721602: +newTok = 603979928; +break; +case 1612709894: +newTok = 603979908; +break; +case 1612709900: +newTok = 603979910; +break; +case 1610612739: +newTok = 603979878; +break; +case 1665140738: +newTok = 570425394; +this.setFloatProperty("solventProbeRadius", this.getSettingFloat(2)); +justShow = true; +break; +case 1610612740: +newTok = 570425390; +break; +case 1612709912: +newTok = 603979948; +break; +case 1765808134: +newTok = 545259545; +break; +case 1611141175: +sval = this.paramAsStr(2).toLowerCase(); +switch ("x;y;z;fps;".indexOf(sval + ";")) { +case 0: +newTok = 570425398; +break; +case 2: +newTok = 570425400; +break; +case 4: +newTok = 570425402; +break; +case 6: +newTok = 570425396; +break; +default: +this.errorStr2(50, "set SPIN ", sval); +} +if (!this.chk) this.vwr.setSpin(sval, Clazz.floatToInt(this.floatParameter(this.checkLast(3)))); +justShow = true; +break; +} +}if (newTok != 0) { +key = JS.T.nameOf(tok = newTok); +} else if (!justShow && !isContextVariable) { +if (key.length == 0 || key.charAt(0) == '_' && this.tokAt(2) != 268437504) this.error(56); +var lckey = key.toLowerCase(); +if (lckey.indexOf("label") == 0 && JU.PT.isOneOf(lckey.substring(5), ";front;group;atom;offset;offsetexact;offsetabsolute;pointer;alignment;toggle;scalereference;for;")) { +if (this.cmdSetLabel(lckey.substring(5))) return; +}if (isJmolSet && lckey.indexOf("shift_") == 0) { +var f = this.floatParameter(2); +this.checkLength(3); +if (!this.chk) this.vwr.getNMRCalculation().setChemicalShiftReference(lckey.substring(6), f); +return; +}if (lckey.endsWith("callback")) tok = 536870912; +}if (isJmolSet && !JS.T.tokAttr(tok, 536870912)) { +this.iToken = 1; +if (!this.$isStateScript) this.errorStr2(50, "SET", key); +this.warning(51, "SET", key); +}if (!justShow && isJmolSet) { +switch (this.slen) { +case 2: +this.setBooleanProperty(key, true); +justShow = true; +break; +case 3: +if (ival != 2147483647) { +this.setIntProperty(key, ival); +justShow = true; +}break; +} +}if (!justShow && !isJmolSet && this.tokAt(2) == 1073742333) { +if (!this.chk) this.vwr.removeUserVariable(key.toLowerCase()); +justShow = true; +}if (!justShow) { +this.setVariable(1, 0, key, true); +if (!isJmolSet) return; +}if (showing) this.vwr.showParameter(key, true, 80); +}); +Clazz.defineMethod(c$, "cmdScale", +function(pt){ +if (this.chk) return; +var text = "%SCALE"; +switch (this.tokAt(pt)) { +case 1073742334: +this.setShapeProperty(31, "%SCALE", null); +this.checkLast(pt); +return; +case 1073742335: +pt++; +break; +default: +var units = JM.Measurement.fixUnits(this.optParameterAsString(pt)); +if (JM.Measurement.fromUnits(1, units) != 0) { +text += " " + units; +pt++; +} else { +text = null; +}break; +} +this.setShapeProperty(31, "thisID", "%SCALE"); +if (this.tokAt(pt) == 0) { +this.vwr.ms.setEchoStateActive(true); +this.vwr.shm.loadShape(31); +this.setShapeProperty(31, "target", "bottom"); +} else { +this.setShapeProperty(31, "target", "%SCALE"); +this.cmdSetEcho(pt); +}if (text != null) this.setShapeProperty(31, "text", text); +this.setShapeProperty(31, "thisID", null); +this.refresh(false); +}, "~N"); +Clazz.defineMethod(c$, "cmdSetEcho", +function(i){ +var propertyName = null; +var propertyValue = null; +var id = null; +var echoShapeActive = true; +var isScale = (i > 0); +var pt = (i == 0 ? 2 : i); +switch (isScale ? 0 : this.getToken(pt).tok) { +case 1073742334: +id = propertyName = "allOff"; +this.checkLength(++pt); +break; +case 1073742333: +echoShapeActive = false; +case 1073742327: +id = this.paramAsStr(2); +this.checkLength(++pt); +break; +} +switch (isScale ? this.tokAt(2) : this.getToken(2).tok) { +case 1073741974: +pt++; +case 1073741996: +case 12289: +case 1073742126: +case 1073742172: +case 1073742019: +case 1073741871: +case 1073741824: +case 4: +id = this.paramAsStr(pt++); +break; +} +if (!this.chk) { +this.vwr.ms.setEchoStateActive(echoShapeActive); +this.sm.loadShape(31); +if (id != null) { +if (propertyName == null && !isScale) this.setShapeProperty(31, "thisID", null); +this.setShapeProperty(31, propertyName == null ? "target" : propertyName, id); +}}if (pt < this.slen) { +if (isScale) { +switch (this.tokAt(pt)) { +case 536875059: +case 4120: +case 4: +this.invArg(); +} +}switch (this.getToken(pt++).tok) { +case 1073741832: +propertyName = "align"; +switch (this.getToken(pt).tok) { +case 1073741996: +case 1073742126: +case 12289: +propertyValue = this.paramAsStr(pt++); +break; +default: +this.invArg(); +} +break; +case 12289: +case 1073741996: +case 1073742126: +propertyName = "align"; +propertyValue = this.paramAsStr(pt - 1); +break; +case 554176526: +propertyName = "%zpos"; +propertyValue = Integer.$valueOf(Clazz.floatToInt(this.floatParameter(pt++))); +break; +case 1610625028: +case 2097192: +case 1073742335: +propertyName = "hidden"; +propertyValue = Boolean.FALSE; +break; +case 12294: +case 2097194: +propertyName = "hidden"; +propertyValue = Boolean.TRUE; +break; +case 1094717454: +var modelIndex = (this.chk ? 0 : this.modelNumberParameter(pt++)); +if (modelIndex >= this.vwr.ms.mc) this.invArg(); +propertyName = "model"; +propertyValue = Integer.$valueOf(modelIndex); +break; +case 268437504: +case 1073742195: +propertyName = "xypos"; +propertyValue = this.xypParameter(--pt); +if (propertyValue == null) this.invArg(); +pt = this.iToken + 1; +break; +case 2: +var posx = this.intParameter(pt - 1); +var namex = "xpos"; +if (this.tokAt(pt) == 268441090) { +namex = "%xpos"; +pt++; +}propertyName = "ypos"; +propertyValue = Integer.$valueOf(this.intParameter(pt++)); +if (this.tokAt(pt) == 268441090) { +propertyName = "%ypos"; +pt++; +}this.checkLength(pt); +this.setShapeProperty(31, namex, Integer.$valueOf(posx)); +break; +case 1073742066: +propertyName = "offset"; +if (this.isPoint3f(pt)) { +var pt3 = this.getPoint3f(pt, false, true); +propertyValue = Clazz.newFloatArray(-1, [-1, pt3.x, pt3.y, pt3.z, 0, 0, 0]); +pt = this.iToken + 1; +} else if (this.isArrayParameter(pt)) { +propertyValue = this.floatParameterSet(pt, 7, 7); +pt = this.iToken + 1; +} else if (this.tokAt(pt) == 1073742333) { +pt++; +}break; +case 1073742334: +propertyName = "off"; +break; +case 536875059: +propertyName = "scale"; +propertyValue = Float.$valueOf(this.floatParameter(pt++)); +break; +case 134222850: +propertyName = "script"; +propertyValue = this.paramAsStr(pt++); +break; +case 4120: +pt++; +case 4: +var isImage = (this.theTok != 4); +this.checkLength(pt--); +if (isImage) { +if (id == null) { +var data = new Array(1); +this.getShapePropertyData(31, "currentTarget", data); +id = data[0]; +}if (!this.chk && this.vwr.ms.getEchoStateActive() && this.vwr.fm.loadImage(this.getToken(pt).value, id, !this.useThreads())) throw new JS.ScriptInterruption(this, "setEchoImage", 1); +return; +}this.cmdEcho(pt); +return; +case 134217751: +propertyName = "point"; +propertyValue = (this.isCenterParameter(pt) ? this.centerParameter(pt, null) : null); +pt = this.iToken + 1; +break; +default: +if (this.isCenterParameter(pt - 1)) { +propertyName = "xyz"; +propertyValue = this.centerParameter(pt - 1, null); +pt = this.iToken + 1; +break; +}this.invArg(); +} +}this.checkLength(pt); +if (!this.chk && propertyName != null) this.setShapeProperty(31, propertyName, propertyValue); +}, "~N"); +Clazz.defineMethod(c$, "cmdSetLabel", +function(str){ +this.sm.loadShape(5); +var propertyValue = null; +this.setShapeProperty(5, "setDefaults", this.vwr.slm.noneSelected); +while (true) { +if (str.equals("for")) { +var bs = this.atomExpressionAt(2); +this.cmdLabel(this.iToken + 1, bs); +return true; +}if (str.equals("scalereference")) { +var scaleAngstromsPerPixel = this.floatParameter(2); +if (scaleAngstromsPerPixel >= 5) scaleAngstromsPerPixel = this.vwr.tm.getZoomSetting() / scaleAngstromsPerPixel / this.vwr.getScalePixelsPerAngstrom(false); +propertyValue = Float.$valueOf(scaleAngstromsPerPixel); +break; +}var isAbsolute = false; +if (str.equals("offset") || (isAbsolute = (str.equals("offsetabsolute") || str.equals("offsetexact")))) { +str = "offset"; +if (this.isPoint3f(2)) { +var pt = this.getPoint3f(2, false, true); +propertyValue = Clazz.newFloatArray(-1, [-1, pt.x, pt.y, pt.z, 0, 0, 0]); +} else if (this.isArrayParameter(2)) { +propertyValue = this.floatParameterSet(2, 7, 7); +} else { +var xOffset = this.intParameterRange(2, -500, 500); +var yOffset = this.intParameterRange(3, -500, 500); +if (xOffset == 2147483647 || yOffset == 2147483647) return true; +propertyValue = Integer.$valueOf(JV.JC.getOffset(xOffset, yOffset, isAbsolute)); +}break; +}if (str.equals("alignment")) { +switch (this.getToken(2).tok) { +case 1073741996: +case 1073742126: +case 12289: +str = "align"; +propertyValue = this.theToken.value; +break; +default: +this.invArg(); +} +break; +}if (str.equals("pointer")) { +var flags = 0; +switch (this.getToken(2).tok) { +case 1073742334: +case 1073742333: +break; +case 1610616835: +flags |= 2; +case 1073742335: +flags |= 1; +break; +default: +this.invArg(); +} +propertyValue = Integer.$valueOf(flags); +break; +}if (str.equals("toggle")) { +this.iToken = 1; +var bs = (this.slen == 2 ? this.vwr.bsA() : this.atomExpressionAt(2)); +this.checkLast(this.iToken); +if (this.chk) return true; +this.vwr.shm.loadShape(5); +this.vwr.shm.setShapePropertyBs(5, "toggleLabel", null, bs); +return true; +}this.iToken = 1; +var TF = (this.slen == 2 || this.getToken(2).tok == 1073742335); +if (str.equals("front") || str.equals("group")) { +if (!TF && this.tokAt(2) != 1073742334) this.invArg(); +if (!TF) str = "front"; +propertyValue = (TF ? Boolean.TRUE : Boolean.FALSE); +break; +}if (str.equals("atom")) { +if (!TF && this.tokAt(2) != 1073742334) this.invArg(); +str = "front"; +propertyValue = (TF ? Boolean.FALSE : Boolean.TRUE); +break; +}return false; +} +var bs = (this.iToken + 1 < this.slen ? this.atomExpressionAt(++this.iToken) : null); +this.checkLast(this.iToken); +if (this.chk) return true; +if (bs == null) this.setShapeProperty(5, str, propertyValue); + else this.setShapePropertyBs(5, str, propertyValue, bs); +return true; +}, "~S"); +Clazz.defineMethod(c$, "cmdSetPicking", +function(){ +if (this.slen == 2) { +this.setStringProperty("picking", "identify"); +return; +}if (this.slen > 4 || this.tokAt(2) == 4) { +this.setStringProperty("picking", this.getSettingStr(2, false)); +return; +}var i = 2; +var type = "SELECT"; +switch (this.getToken(2).tok) { +case 1275082241: +case 1745489939: +case 1611141175: +if (this.checkLength34() == 4) { +type = this.paramAsStr(2).toUpperCase(); +if (type.equals("SPIN")) this.setIntProperty("pickingSpinRate", this.intParameter(3)); + else i = 3; +}break; +case 12291: +break; +default: +this.checkLength(3); +} +var str = this.paramAsStr(i); +switch (this.getToken(i).tok) { +case 1073742335: +case 1073742056: +str = "identify"; +break; +case 1073742334: +case 1073742333: +str = "off"; +break; +case 1275082241: +str = "atom"; +break; +case 1825200146: +str = "label"; +break; +case 1677721602: +str = "bond"; +break; +case 12291: +this.checkLength(4); +if (this.tokAt(3) != 1677721602) this.invArg(); +str = "deleteBond"; +break; +} +var mode = ((mode = str.indexOf("_")) >= 0 ? mode : str.length); +mode = JV.ActionManager.getPickingMode(str.substring(0, mode)); +if (mode < 0) this.errorStr2(50, "SET PICKING " + type, str); +this.setStringProperty("picking", str); +}); +Clazz.defineMethod(c$, "cmdSetPickingStyle", +function(){ +if (this.slen > 4 || this.tokAt(2) == 4) { +this.setStringProperty("pickingStyle", this.getSettingStr(2, false)); +return; +}var i = 2; +var isMeasure = false; +var type = "SELECT"; +switch (this.getToken(2).tok) { +case 1745489939: +isMeasure = true; +type = "MEASURE"; +case 1275082241: +if (this.checkLength34() == 4) i = 3; +break; +default: +this.checkLength(3); +} +var str = this.paramAsStr(i); +switch (this.getToken(i).tok) { +case 1073742333: +case 1073742334: +str = (isMeasure ? "measureoff" : "toggle"); +break; +case 1073742335: +if (isMeasure) str = "measure"; +break; +} +if (JV.ActionManager.getPickingStyleIndex(str) < 0) this.errorStr2(50, "SET PICKINGSTYLE " + type, str); +this.setStringProperty("pickingStyle", str); +}); +Clazz.defineMethod(c$, "cmdSlab", +function(isDepth){ +var TF = false; +var plane = null; +var str; +if (this.isCenterParameter(1) || this.tokAt(1) == 9) plane = this.planeParameter(1, false); + else switch (this.getToken(1).tok) { +case 2: +var percent = this.intParameter(this.checkLast(1)); +if (!this.chk) if (isDepth) this.vwr.tm.depthToPercent(percent); + else this.vwr.tm.slabToPercent(percent); +return; +case 1073742335: +TF = true; +case 1073742334: +this.checkLength(2); +this.setBooleanProperty("slabEnabled", TF); +return; +case 4141: +this.checkLength(2); +if (this.chk) return; +this.vwr.tm.slabReset(); +this.setBooleanProperty("slabEnabled", true); +return; +case 36867: +this.checkLength(2); +if (!this.chk) this.vwr.tm.setSlabDepthInternal(isDepth); +return; +case 268440576: +str = this.paramAsStr(2); +if (str.equalsIgnoreCase("hkl")) plane = this.hklParameter(3, null, true); + else if (str.equalsIgnoreCase("plane")) plane = this.planeParameter(2, false); +if (plane == null) this.invArg(); +plane.scale4(-1); +break; +case 134217750: +switch (this.getToken(2).tok) { +case 1073742333: +break; +default: +plane = this.planeParameter(1, false); +} +break; +case 134219777: +plane = (this.getToken(2).tok == 1073742333 ? null : this.hklParameter(2, null, true)); +break; +case 1073742118: +return; +default: +this.invArg(); +} +if (!this.chk) this.vwr.tm.slabInternal(plane, isDepth); +}, "~B"); +Clazz.defineMethod(c$, "cmdSsbond", +function(){ +var mad = this.getMadParameter(); +if (mad == 2147483647) return; +this.setShapeProperty(1, "type", Integer.$valueOf(256)); +this.setShapeSizeBs(1, mad, null); +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +}); +Clazz.defineMethod(c$, "cmdStructure", +function(){ +var type = J.c.STR.getProteinStructureType(this.paramAsStr(1)); +if (type === J.c.STR.NOT) this.invArg(); +var bs = null; +switch (this.tokAt(2)) { +case 12290: +case 10: +case 1073742325: +bs = this.atomExpressionAt(2); +this.checkLast(this.iToken); +break; +default: +this.checkLength(2); +} +if (this.chk) return; +this.clearDefinedVariableAtomSets(); +this.vwr.setProteinType(type, bs); +}); +Clazz.defineMethod(c$, "cmdSubset", +function(){ +var bs = null; +if (!this.chk) this.vwr.slm.setSelectionSubset(null); +if (this.slen != 1 && (this.slen != 4 || !this.getToken(2).value.equals("off"))) bs = this.atomExpressionAt(1); +if (!this.chk) this.vwr.slm.setSelectionSubset(bs); +}); +Clazz.defineMethod(c$, "cmdSync", +function(){ +var text = ""; +var applet = ""; +var port = JU.PT.parseInt(this.optParameterAsString(1)); +if (port == -2147483648) { +this.checkLength(-3); +port = 0; +switch (this.slen) { +case 1: +applet = "*"; +text = "ON"; +break; +case 2: +applet = this.paramAsStr(1); +if (applet.indexOf("jmolApplet") == 0 || JU.PT.isOneOf(applet, ";*;.;^;")) { +text = "ON"; +if (!this.chk) this.vwr.syncScript(text, applet, 0); +applet = "."; +break; +}text = applet; +applet = "*"; +break; +case 3: +applet = this.paramAsStr(1); +text = (this.tokAt(2) == 528443 ? "GET_GRAPHICS" : this.paramAsStr(2)); +break; +} +} else { +var v = null; +if (this.slen > 2 && (v = this.setVariable(2, -1, "", false)) == null) return; +text = (this.slen == 2 ? null : v.tok == 6 ? v.toJSON() : v.asString()); +applet = null; +}if (this.chk) return; +this.vwr.syncScript(text, applet, port); +}); +Clazz.defineMethod(c$, "cmdThrow", +function(){ +if (this.chk) return; +var pt = (this.tokAt(1) == 14 ? 2 : 1); +var v = (pt == 1 ? this.setVariable(1, this.slen, "thrown_value", false) : this.vwr.g.setUserVariable("thrown_value", JS.SV.newS(this.optParameterAsString(2)))); +var info = v.asString(); +if (info.length == 0 && (info = this.optParameterAsString(1)).length == 0) info = "context"; +if (pt == 2) { +this.saveContext(info); +if (this.doReport()) this.report(J.i18n.GT.o(J.i18n.GT.$("to resume, enter: &{0}"), info), false); +throw new JS.ScriptInterruption(this, info, -2147483648); +}this.evalError(info, null); +}); +Clazz.defineMethod(c$, "saveContext", +function(saveName){ +var sc = this.getScriptContext("Context_" + saveName); +this.vwr.stm.saveContext(saveName, sc); +this.vwr.g.setUserVariable(saveName, JS.SV.newV(14, sc)); +return sc; +}, "~S"); +Clazz.defineMethod(c$, "cmdTimeout", +function(index){ +var name = null; +var script = null; +var mSec = 0; +if (this.slen == index) { +this.showString(this.vwr.showTimeout(null)); +return; +}for (var i = index; i < this.slen; i++) switch (this.getToken(i).tok) { +case 1073741974: +name = this.paramAsStr(++i); +if (this.slen == 3) { +if (!this.chk) this.vwr.triggerTimeout(name); +return; +}break; +case 1073742334: +break; +case 2: +mSec = this.intParameter(i); +break; +case 3: +mSec = Math.round(this.floatParameter(i) * 1000); +break; +default: +if (name == null) name = this.paramAsStr(i); + else if (script == null) script = this.paramAsStr(i); + else this.invArg(); +break; +} + +if (!this.chk) this.vwr.setTimeout(name, mSec, script); +}, "~N"); +Clazz.defineMethod(c$, "cmdTranslate", +function(isSelected){ +var bs = null; +var i = 1; +var i0 = 0; +if (this.tokAt(1) == 1113589787) { +isSelected = true; +i0 = 1; +i = 2; +}if (this.isPoint3f(i)) { +var pt = this.getPoint3f(i, true, true); +bs = (this.iToken + 1 < this.slen ? this.atomExpressionAt(++this.iToken) : null); +this.checkLast(this.iToken); +if (!this.chk) this.vwr.setAtomCoordsRelative(pt, bs); +return; +}var xyz = (this.paramAsStr(i).toLowerCase() + " ").charAt(0); +if ("xyz".indexOf(xyz) < 0) this.error(0); +var amount = this.floatParameter(++i); +var type; +switch (this.tokAt(++i)) { +case 0: +case 12290: +case 10: +case 1073742325: +type = '\0'; +break; +default: +type = (this.optParameterAsString(i).toLowerCase() + '\0').charAt(0); +} +if (amount == 0 && type != '\0') return; +this.iToken = i0 + (type == '\0' ? 2 : 3); +bs = (isSelected ? this.vwr.bsA() : this.iToken + 1 < this.slen ? this.atomExpressionAt(++this.iToken) : null); +this.checkLast(this.iToken); +if (!this.chk) { +this.vwr.translate(xyz, amount, type, bs); +this.refresh(false); +}}, "~B"); +Clazz.defineMethod(c$, "cmdUnbind", +function(){ +if (this.slen != 1) this.checkLength23(); +var mouseAction = this.optParameterAsString(1); +var name = this.optParameterAsString(2); +if (mouseAction.length == 0 || this.tokAt(1) == 1073742327) mouseAction = null; +if (name.length == 0 || this.tokAt(2) == 1073742327) name = null; +if (name == null && mouseAction != null && JV.ActionManager.getActionFromName(mouseAction) >= 0) { +name = mouseAction; +mouseAction = null; +}if (!this.chk) this.vwr.unBindAction(mouseAction, name); +}); +Clazz.defineMethod(c$, "cmdUndoRedo", +function(tok){ +var n = 1; +var len = 2; +switch (tok) { +case 603984065: +case 4139: +var state = this.vwr.stm.getUndoRedoState(tok); +if (state != null) this.runScript(state); +return; +case 4165: +case 4140: +break; +} +switch (this.tokAt(1)) { +case 0: +len = 1; +break; +case 1073742327: +n = 0; +break; +case 2: +n = this.intParameter(1); +break; +default: +this.invArg(); +} +this.checkLength(len); +if (!this.chk) this.vwr.undoMoveAction(tok, n); +}, "~N"); +Clazz.defineMethod(c$, "cmdUnitcell", +function(i){ +this.getCmdExt().dispatch(1814695966, i == 2, null); +}, "~N"); +Clazz.defineMethod(c$, "cmdVector", +function(){ +var type = J.atomdata.RadiusData.EnumType.SCREEN; +var value = 1; +this.checkLength(-3); +switch (this.iToken = this.slen) { +case 1: +break; +case 2: +switch (this.getToken(1).tok) { +case 1073742335: +break; +case 1073742334: +value = 0; +break; +case 2: +var d = this.intParameterRange(1, 0, 19); +if (d == 2147483647) return; +value = d; +break; +case 3: +type = J.atomdata.RadiusData.EnumType.ABSOLUTE; +if (Float.isNaN(value = this.floatParameterRange(1, 0, 3))) return; +break; +default: +this.error(6); +} +break; +case 3: +switch (this.tokAt(1)) { +case 1112152078: +this.setIntProperty("vectorTrace", this.intParameterRange(2, 0, 20)); +return; +case 536875059: +if (!Float.isNaN(value = this.floatParameterRange(2, -100, 100))) this.setFloatProperty("vectorScale", value); +return; +case 64: +var max = this.floatParameter(2); +if (!this.chk) this.vwr.ms.scaleVectorsToMax(max); +return; +} +break; +} +this.setShapeSize(18, new J.atomdata.RadiusData(null, value, type, null)); +}); +Clazz.defineMethod(c$, "cmdVibration", +function(){ +this.checkLength(-3); +var period = 0; +switch (this.getToken(1).tok) { +case 1073742335: +this.checkLength(2); +period = this.vwr.getFloat(570425412); +break; +case 1073742334: +this.checkLength(2); +period = 0; +break; +case 2: +case 3: +this.checkLength(2); +period = this.floatParameter(1); +break; +case 536875059: +if (!Float.isNaN(period = this.floatParameterRange(2, -100, 100))) this.setFloatProperty("vibrationScale", period); +return; +case 64: +var max = this.floatParameter(2); +if (!this.chk) this.vwr.ms.scaleVectorsToMax(max); +break; +case 1073742090: +this.setFloatProperty("vibrationPeriod", this.floatParameter(2)); +return; +case 1073741824: +this.invArg(); +break; +default: +period = -1; +} +if (period < 0) this.invArg(); +if (this.chk) return; +if (period == 0) { +this.vwr.tm.setVibrationPeriod(0); +return; +}this.vwr.setVibrationPeriod(-period); +}); +Clazz.defineMethod(c$, "cmdWireframe", +function(){ +var mad = -2147483648; +if (this.tokAt(1) == 4141) this.checkLast(1); + else mad = this.getMadParameter(); +if (this.chk || mad == 2147483647) return; +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +this.setShapeSizeBs(1, mad == -2147483648 ? 300 : mad, null); +}); +Clazz.defineMethod(c$, "cmdZap", +function(isZapCommand){ +if (this.slen == 1 || !isZapCommand) { +var doAll = (isZapCommand && !this.$isStateScript); +if (doAll) this.vwr.cacheFileByName(null, false); +this.vwr.zap(true, doAll, true); +this.refresh(false); +return; +}var bs = this.atomExpressionAt(1); +if (this.chk) return; +if (bs.nextSetBit(0) < 0 && this.slen == 4 && this.tokAt(2) == 1073742359) { +var iModel = this.vwr.ms.getModelNumberIndex(this.getToken(2).intValue, false, true); +if (iModel >= 0) this.vwr.deleteModels(iModel, null); +return; +}var nDeleted = this.vwr.deleteAtoms(bs, true); +var isQuiet = !this.doReport(); +if (!isQuiet) this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms deleted"), nDeleted), false); +this.vwr.selectStatus(null, false, 0, isQuiet, false); +}, "~B"); +Clazz.defineMethod(c$, "cmdZoom", +function(isZoomTo){ +if (!isZoomTo) { +var tok = (this.slen > 1 ? this.getToken(1).tok : 1073742335); +switch (tok) { +case 1275068432: +case 1073742079: +break; +case 1073742335: +case 1073742334: +if (this.slen > 2) this.bad(); +if (!this.chk) this.setBooleanProperty("zoomEnabled", tok == 1073742335); +return; +} +}var center = null; +var i = 1; +var floatSecondsTotal = (isZoomTo ? (this.isFloatParameter(i) ? this.floatParameter(i++) : 1) : 0); +if (floatSecondsTotal < 0) { +i--; +floatSecondsTotal = 0; +}var ptCenter = 0; +var bsCenter = null; +if (this.tokAt(i) == 1814695966 || this.isCenterParameter(i)) { +ptCenter = i; +var ret = new Array(1); +center = this.centerParameter(i, ret); +if (Clazz.instanceOf(ret[0],"JU.BS")) bsCenter = ret[0]; +i = this.iToken + 1; +} else if (this.tokAt(i) == 2 && this.getToken(i).intValue == 0) { +bsCenter = this.vwr.getAtomBitSet("visible"); +center = this.vwr.ms.getAtomSetCenter(bsCenter); +}var zoom = this.vwr.tm.getZoomSetting(); +var newZoom = this.getZoom(ptCenter, i, bsCenter, zoom); +i = this.iToken + 1; +var xTrans = NaN; +var yTrans = NaN; +if (i != this.slen) { +xTrans = this.floatParameter(i++); +yTrans = this.floatParameter(i++); +}if (i != this.slen) this.invArg(); +if (newZoom < 0) { +newZoom = -newZoom; +if (isZoomTo) { +if (this.slen == 1) newZoom *= 2; + else if (center == null) newZoom /= 2; +}}var max = 200000; +if (newZoom < 5 || newZoom > max) this.numberOutOfRange(5, max); +if (!this.vwr.tm.isWindowCentered()) { +if (center != null) { +var bs = this.atomExpressionAt(ptCenter); +if (!this.chk) this.vwr.setCenterBitSet(bs, false); +}center = this.vwr.tm.fixedRotationCenter; +if (Float.isNaN(xTrans)) xTrans = this.vwr.tm.getTranslationXPercent(); +if (Float.isNaN(yTrans)) yTrans = this.vwr.tm.getTranslationYPercent(); +}if (this.chk) return; +if (Float.isNaN(xTrans)) xTrans = 0; +if (Float.isNaN(yTrans)) yTrans = 0; +if (!this.useThreads()) floatSecondsTotal = 0; +this.vwr.moveTo(this, floatSecondsTotal, center, JV.JC.center, NaN, null, newZoom, xTrans, yTrans, NaN, null, NaN, NaN, NaN, NaN, NaN, NaN); +if (this.isJS && floatSecondsTotal > 0 && this.vwr.g.waitForMoveTo) throw new JS.ScriptInterruption(this, "zoomTo", 1); +}, "~B"); +Clazz.defineMethod(c$, "colorShape", +function(shapeType, index, isBackground){ +var isScale = (Math.abs(shapeType) == 536875059); +if (isScale) { +shapeType = 31; +} else if (shapeType < 0) { +shapeType = this.getShapeType(-shapeType); +}var translucency = null; +var colorvalue = null; +var colorvalue1 = null; +var bs = null; +var prefix = (index == 2 && this.tokAt(1) == 1073741859 ? "ball" : ""); +var isIsosurface = (shapeType == 24 || shapeType == 25); +var doClearBondSet = false; +var translucentLevel = 3.4028235E38; +if (index < 0) { +bs = this.atomExpressionAt(-index); +index = this.iToken + 1; +if (this.isBondSet) { +doClearBondSet = true; +shapeType = 1; +}}var tok = this.getToken(index).tok; +if (isBackground) this.getToken(index); + else if ((isBackground = (tok == 1610616835)) == true) this.getToken(++index); +if (isBackground) prefix = "bg"; + else if (isIsosurface) { +switch (this.theTok) { +case 1073742018: +this.getToken(++index); +prefix = "mesh"; +break; +case 1073742094: +var argb = this.getArgbParamOrNone(++index, false); +colorvalue1 = (argb == 0 ? null : Integer.$valueOf(argb)); +this.getToken(index = this.iToken + 1); +break; +case 12290: +case 10: +case 1073742325: +if (Clazz.instanceOf(this.theToken.value,"JM.BondSet")) { +bs = this.theToken.value; +prefix = "vertex"; +} else { +bs = this.atomExpressionAt(index); +prefix = "atom"; +}this.getToken(index = this.iToken + 1); +break; +} +}if (!this.chk && (shapeType == 27 || shapeType == 28) && this.getIsoExt().dispatch(shapeType, true, this.st) != null) return; +var isTranslucent = (this.theTok == 603979967); +if (isTranslucent || this.theTok == 1073742074) { +if (translucentLevel == 1.4E-45) this.invArg(); +translucency = this.paramAsStr(index++); +if (isTranslucent && this.isFloatParameter(index)) translucentLevel = this.getTranslucentLevel(index++); +}tok = 0; +var isColor = (index < this.slen && this.tokAt(index) != 1073742335 && this.tokAt(index) != 1073742334); +if (isColor) { +tok = this.getToken(index).tok; +if ((!isIsosurface || this.tokAt(index + 1) != 1073742170) && this.isColorParam(index)) { +var argb = this.getArgbParamOrNone(index, false); +colorvalue = (argb == 0 ? null : Integer.$valueOf(argb)); +if (this.tokAt(index = this.iToken + 1) != 0 && translucency == null) { +this.getToken(index); +isTranslucent = (this.theTok == 603979967); +if (isTranslucent || this.theTok == 1073742074) { +translucency = this.paramAsStr(index++); +if (isTranslucent && this.isFloatParameter(index)) translucentLevel = this.getTranslucentLevel(index++); +}}if (this.isColorParam(index)) { +argb = this.getArgbParamOrNone(index, false); +colorvalue1 = (argb == 0 ? null : Integer.$valueOf(argb)); +index = this.iToken + 1; +}this.checkLength(index); +} else if (shapeType == 26) { +this.iToken--; +} else { +var name = this.paramAsStr(index).toLowerCase(); +var isByElement = (name.indexOf("byelement") == 0); +var isColorIndex = (isByElement || name.indexOf("byresidue") == 0); +var pal = (isColorIndex || isIsosurface ? J.c.PAL.PROPERTY : tok == 1112152075 ? J.c.PAL.CPK : J.c.PAL.getPalette(name)); +if (pal === J.c.PAL.UNKNOWN || (pal === J.c.PAL.TYPE || pal === J.c.PAL.ENERGY) && shapeType != 2) this.invArg(); +var data = null; +var bsSelected = (pal !== J.c.PAL.PROPERTY && pal !== J.c.PAL.VARIABLE || !this.vwr.g.rangeSelected ? null : this.vwr.bsA()); +if (pal === J.c.PAL.PROPERTY) { +if (isColorIndex) { +if (!this.chk) { +data = this.getCmdExt().getBitsetPropertyFloat(bsSelected, (isByElement ? 1094715402 : 1094713356) | 256, null, NaN, NaN); +}} else { +var isPropertyExplicit = name.equals("property"); +if (isPropertyExplicit && JS.T.tokAttr((tok = this.getToken(++index).tok), 1077936128) && (tok == 1086324754 || !JS.T.tokAttr(tok, 1086324736))) { +tok = this.getToken(index).tok; +var type = (tok == 1111490587 ? this.getToken(++index).value.toString() : tok == 1086324754 ? "color" : null); +if (!this.chk) { +data = this.getCmdExt().getBitsetPropertyFloat(bsSelected, tok | 256, type, NaN, NaN); +}index++; +} else if (!isPropertyExplicit && !isIsosurface) { +index++; +}}} else if (pal === J.c.PAL.VARIABLE) { +index++; +name = this.paramAsStr(index++); +data = Clazz.newFloatArray (this.vwr.ms.ac, 0); +JU.Parser.parseStringInfestedFloatArray("" + this.getParameter(name, 4, true), null, data); +pal = J.c.PAL.PROPERTY; +}if (pal === J.c.PAL.PROPERTY) { +var scheme = null; +if (this.tokAt(index) == 4) { +scheme = this.paramAsStr(index++); +if (scheme.indexOf("/") < 0) scheme = scheme.toLowerCase(); +if (this.isArrayParameter(index)) { +scheme += "=" + JS.SV.sValue(JS.SV.getVariableAS(this.stringParameterSet(index))).$replace('\n', ' '); +index = this.iToken + 1; +}} else if (isIsosurface && this.isColorParam(index)) { +scheme = this.getColorRange(index); +index = this.iToken + 1; +}if (scheme != null && !isIsosurface) { +this.setStringProperty("propertyColorScheme", (isTranslucent && translucentLevel == 3.4028235E38 ? "translucent " : "") + scheme); +isColorIndex = (scheme.indexOf("byelement") == 0 || scheme.indexOf("byresidue") == 0); +}var min = 0; +var max = 3.4028235E38; +if (!isColorIndex && (this.tokAt(index) == 1073741826 || this.tokAt(index) == 1073742114)) { +min = this.floatParameter(index + 1); +max = this.floatParameter(index + 2); +index += 3; +if (min == max && isIsosurface) { +var range = this.getShapeProperty(shapeType, "dataRange"); +if (range != null) { +min = range[0]; +max = range[1]; +}} else if (min == max) { +max = 3.4028235E38; +}}if (isIsosurface) { +} else if (data == null) { +if (!this.chk) this.vwr.setCurrentColorRange(name); +} else { +if (!this.chk) this.vwr.cm.setPropertyColorRangeData(data, bsSelected); +}if (isIsosurface) { +this.checkLength(index); +if (this.chk) return; +isColor = false; +var ce = (scheme == null ? this.getShapeProperty(shapeType, "colorEncoder") : null); +if (ce == null && (ce = this.vwr.cm.getColorEncoder(scheme)) == null) return; +ce.isTranslucent = (isTranslucent && translucentLevel == 3.4028235E38); +ce.setRange(min, max, min > max); +if (max == 3.4028235E38) ce.hi = max; +this.setShapeProperty(shapeType, "remapColor", ce); +this.showString((this.getShapeProperty(shapeType, "dataRangeStr")).$replace('\n', ' ')); +if (translucentLevel == 3.4028235E38) return; +} else if (max != 3.4028235E38) { +this.vwr.cm.setPropertyColorRange(min, max); +}} else { +index++; +}this.checkLength(index); +colorvalue = pal; +}}if (this.chk || shapeType < 0) return; +if (isScale) this.setShapeProperty(31, "target", "%SCALE"); +var typeMask; +switch (shapeType) { +case 4: +typeMask = 32768; +break; +case 2: +typeMask = 30720; +break; +case 3: +typeMask = 256; +break; +case 1: +typeMask = 1023; +break; +default: +typeMask = 0; +} +if (typeMask == 0) { +this.sm.loadShape(shapeType); +if (shapeType == 5) this.setShapeProperty(5, "setDefaults", this.vwr.slm.noneSelected); +} else { +if (bs != null) { +this.vwr.selectBonds(bs); +bs = null; +}shapeType = 1; +this.setShapeProperty(shapeType, "type", Integer.$valueOf(typeMask)); +}if (isColor) { +switch (tok) { +case 1111492619: +this.getPartialCharges(bs); +break; +case 1111490575: +case 1111490574: +this.vwr.autoCalculate(tok, null); +break; +case 1111492620: +if (this.vwr.g.rangeSelected) this.vwr.ms.clearBfactorRange(); +break; +case 1086324742: +this.vwr.ms.calcSelectedGroupsCount(); +break; +case 1094713362: +case 1094713361: +this.vwr.ms.calcSelectedMonomersCount(); +break; +case 1094713360: +this.vwr.ms.calcSelectedMoleculesCount(); +break; +} +if (colorvalue1 != null && (isIsosurface || shapeType == 11 || shapeType == 14 || shapeType == 21)) this.setShapeProperty(shapeType, "colorPhase", Clazz.newArray(-1, [colorvalue1, colorvalue])); + else if (bs == null) this.setShapeProperty(shapeType, prefix + "color", colorvalue); + else this.setShapePropertyBs(shapeType, prefix + "color", colorvalue, bs); +}if (translucency != null) this.setShapeTranslucency(shapeType, prefix, translucency, translucentLevel, bs); +if (isScale) this.setShapeProperty(31, "thisID", null); +if (typeMask != 0) this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +if (doClearBondSet) this.vwr.selectBonds(null); +if (shapeType == 0) this.vwr.shm.checkInheritedShapes(); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "getPartialCharges", +function(bs){ +try { +this.vwr.getOrCalcPartialCharges(bs, null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw new JS.ScriptInterruption(this, "partialcharge", 1); +} else { +throw e; +} +} +}, "JU.BS"); +Clazz.defineMethod(c$, "encodeRadiusParameter", +function(index, isOnly, allowAbsolute){ +var value = NaN; +var factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +var vdwType = null; +var tok = (index == -1 ? 1648363544 : this.getToken(index).tok); +switch (tok) { +case 1111490561: +case 1111490562: +case 1111492618: +case 1113589786: +case 1111492620: +case 1648363544: +value = 1; +factorType = J.atomdata.RadiusData.EnumType.FACTOR; +vdwType = (tok == 1648363544 ? null : J.c.VDW.getVdwType2(JS.T.nameOf(tok))); +tok = this.tokAt(++index); +break; +} +switch (tok) { +case 4141: +return this.vwr.rd; +case 1073741852: +case 1073742116: +case 1073741856: +case 1073741857: +case 1073741991: +value = 1; +factorType = J.atomdata.RadiusData.EnumType.FACTOR; +this.iToken = index - 1; +break; +case 268440577: +case 2: +case 3: +if (tok == 268440577) { +index++; +} else if (this.tokAt(index + 1) == 268441090) { +value = Math.round(this.floatParameter(index)); +this.iToken = ++index; +factorType = J.atomdata.RadiusData.EnumType.FACTOR; +if (Math.abs(value) > 200) { +this.integerOutOfRange(0, 200); +return null; +}if (isOnly) value = -value; +value /= 100; +break; +} else if (tok == 2) { +value = this.intParameter(index); +if (value > 749 || value < -200) { +this.integerOutOfRange(-200, 749); +return null; +}if (value > 0) { +value /= 250; +factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +} else { +value /= -100; +factorType = J.atomdata.RadiusData.EnumType.FACTOR; +}break; +}var max; +if (tok == 268440577 || !allowAbsolute) { +factorType = J.atomdata.RadiusData.EnumType.OFFSET; +max = 16; +} else { +factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +vdwType = J.c.VDW.NADA; +max = 100; +}value = this.floatParameterRange(index, (isOnly || !allowAbsolute ? -max : 0), max); +if (Float.isNaN(value)) return null; +if (isOnly) value = -value; +if (value > 16) value = 16.1; +break; +default: +if (value == 1) index--; +} +if (vdwType == null) { +vdwType = J.c.VDW.getVdwType(this.optParameterAsString(++this.iToken)); +if (vdwType == null) { +this.iToken = index; +vdwType = J.c.VDW.AUTO; +}}return new J.atomdata.RadiusData(null, value, factorType, vdwType); +}, "~N,~B,~B"); +Clazz.defineMethod(c$, "expandFloatArray", +function(a, min, asBS){ +var n = a.length; +var haveNeg = false; +var bs = (asBS ? new JU.BS() : null); +try { +for (var i = 0; i < a.length; i++) if (a[i] < 0) { +n += Math.abs(a[i - 1] + a[i]) - 1; +haveNeg = true; +} +if (haveNeg) { +var b = (asBS ? null : Clazz.newFloatArray (n, 0)); +for (var pt = 0, i = 0; i < a.length; i++) { +n = Clazz.floatToInt(a[i]); +if (n >= 0) { +if (n < min) this.invArg(); +if (asBS) bs.set(n - 1); + else b[pt++] = n; +} else { +var j = Clazz.floatToInt(a[i - 1]); +var dir = (j <= -n ? 1 : -1); +for (var j2 = -n; j != j2; j += dir, pt++) if (!asBS) b[pt] = j + dir; + else bs.set(j); + +}} +a = b; +if (!asBS) n = a.length; +}if (asBS) { +for (var i = n; --i >= 0; ) bs.set(Clazz.floatToInt(a[i]) - 1); + +return bs; +}var ia = Clazz.newIntArray (n, 0); +for (var i = n; --i >= 0; ) ia[i] = Clazz.floatToInt(a[i]); + +return ia; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.invArg(); +return null; +} else { +throw e; +} +} +}, "~A,~N,~B"); +Clazz.defineMethod(c$, "frameControl", +function(i){ +switch (this.getToken(this.checkLast(i)).tok) { +case 1073742098: +case 1073742096: +case 4143: +case 20487: +case 1073742037: +case 1073742108: +case 1073742125: +case 1073741942: +case 1073741993: +if (!this.chk) this.vwr.setAnimation(this.theTok); +return; +} +this.invArg(); +}, "~N"); +Clazz.defineMethod(c$, "getColorRange", +function(i){ +var color1 = this.getArgbParam(i); +if (this.tokAt(++this.iToken) != 1073742170) this.invArg(); +var color2 = this.getArgbParam(++this.iToken); +var nColors = (this.tokAt(this.iToken + 1) == 2 ? this.intParameter(++this.iToken) : 0); +return JU.ColorEncoder.getColorSchemeList(JU.ColorEncoder.getPaletteAtoB(color1, color2, nColors)); +}, "~N"); +Clazz.defineMethod(c$, "getFullPathName", +function(withType){ +var filename = (!this.chk || this.isCmdLine_C_Option ? this.vwr.fm.getFullPathName(true) : "test.xyz"); +if (filename == null) this.invArg(); +if (withType && !"string".equals(filename) && !"zapped".equals(filename)) { +var ft = this.vwr.fm.getFileType(); +if (ft != null && ft.length > 0) filename = ft + "::" + filename; +}return filename; +}, "~B"); +Clazz.defineMethod(c$, "getObjectBoundingBox", +function(id){ +var data = Clazz.newArray(-1, [id, null, null]); +return (this.getShapePropertyData(24, "getBoundingBox", data) || this.getShapePropertyData(29, "getBoundingBox", data) || this.getShapePropertyData(25, "getBoundingBox", data) || this.getShapePropertyData(28, "getBoundingBox", data) || this.getShapePropertyData(27, "getBoundingBox", data) ? data[2] : null); +}, "~S"); +Clazz.defineMethod(c$, "getObjectCenter", +function(axisID, index, modelIndex){ +var data = Clazz.newArray(-1, [axisID, Integer.$valueOf(index), Integer.$valueOf(modelIndex)]); +return (this.getShapePropertyData(22, "getCenter", data) || this.getShapePropertyData(24, "getCenter", data) || this.getShapePropertyData(29, "getCenter", data) || this.getShapePropertyData(25, "getCenter", data) || this.getShapePropertyData(28, "getCenter", data) || this.getShapePropertyData(27, "getCenter", data) ? data[2] : null); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "getPlaneForObject", +function(id, vAB){ +var shapeType = this.sm.getShapeIdFromObjectName(id); +switch (shapeType) { +case 22: +this.setShapeProperty(22, "thisID", id); +var points = this.getShapeProperty(22, "vertices"); +if (points == null || points.length < 3 || points[0] == null || points[1] == null || points[2] == null) break; +return JU.Measure.getPlaneThroughPoints(points[0], points[1], points[2], new JU.V3(), vAB, new JU.P4()); +case 24: +this.setShapeProperty(24, "thisID", id); +return this.getShapeProperty(24, "plane"); +} +return null; +}, "~S,JU.V3"); +Clazz.defineMethod(c$, "getQuaternionArray", +function(quaternionOrSVData, itype){ +var data; +switch (itype) { +case 134221850: +data = quaternionOrSVData; +break; +case 9: +var pts = quaternionOrSVData; +data = new Array(pts.length); +for (var i = 0; i < pts.length; i++) data[i] = JU.Quat.newP4(pts[i]); + +break; +case 1073742001: +var sv = quaternionOrSVData; +data = new Array(sv.size()); +for (var i = 0; i < sv.size(); i++) { +var pt = JS.SV.pt4Value(sv.get(i)); +if (pt == null) return null; +data[i] = JU.Quat.newP4(pt); +} +break; +default: +return null; +} +return data; +}, "~O,~N"); +Clazz.defineMethod(c$, "getSetAxesTypeMad10", +function(index){ +if (index == this.slen) return 1; +switch (this.getToken(this.checkLast(index)).tok) { +case 1073742335: +return 1; +case 1073742334: +return 0; +case 1073741926: +return -1; +case 2: +return this.intParameterRange(index, -1, 19); +case 3: +var angstroms = this.floatParameterRange(index, 0, 2); +return (Float.isNaN(angstroms) ? 2147483647 : Clazz.doubleToInt(Math.floor(angstroms * 10000 * 2))); +} +if (!this.chk) this.errorStr(7, "\"DOTTED\""); +return 0; +}, "~N"); +Clazz.defineMethod(c$, "getSettingFloat", +function(pt){ +return (pt >= this.slen ? NaN : JS.SV.fValue(this.parameterExpressionToken(pt))); +}, "~N"); +Clazz.defineMethod(c$, "getSettingInt", +function(pt){ +return (pt >= this.slen ? -2147483648 : this.parameterExpressionToken(pt).asInt()); +}, "~N"); +Clazz.defineMethod(c$, "getSettingStr", +function(pt, isJmolSet){ +return (isJmolSet && this.slen == pt + 1 ? this.paramAsStr(pt) : this.parameterExpressionToken(pt).asString()); +}, "~N,~B"); +Clazz.defineMethod(c$, "getShapeProperty", +function(shapeType, propertyName){ +return this.sm.getShapePropertyIndex(shapeType, propertyName, -2147483648); +}, "~N,~S"); +Clazz.defineMethod(c$, "getShapePropertyData", +function(shapeType, propertyName, data){ +return this.sm.getShapePropertyData(shapeType, propertyName, data); +}, "~N,~S,~A"); +Clazz.defineMethod(c$, "getShapeType", +function(tok){ +var iShape = JV.JC.shapeTokenIndex(tok); +if (iShape < 0) this.error(49); +return iShape; +}, "~N"); +Clazz.defineMethod(c$, "getTranslucentLevel", +function(i){ +var f = this.floatParameter(i); +return (this.theTok == 2 && f > 0 && f < 9 ? f + 1 : f); +}, "~N"); +Clazz.defineMethod(c$, "getZoom", +function(ptCenter, i, bs, currentZoom){ +var zoom = (this.isFloatParameter(i) ? this.floatParameter(i++) : NaN); +if (zoom == 0 || currentZoom == 0) { +var r = NaN; +if (bs == null) { +switch (this.tokAt(ptCenter)) { +case 1814695966: +var uc = this.vwr.getCurrentUnitCell(); +if (uc == null) this.invArg(); +var pts = uc.getUnitCellVerticesNoOffset(); +var center = new JU.P3(); +for (var j = 0; j < 8; j++) { +center.add(pts[j]); +} +center.scale(0.125); +r = 0; +for (var j = 0; j < 8; j++) { +var d = pts[j].distanceSquared(center); +if (d > r) r = d; +} +if (r == 0) this.invArg(); +r = Math.sqrt(r); +break; +case 1073742330: +var bbox = this.getObjectBoundingBox(this.objectNameParameter(ptCenter + 1)); +if (bbox == null || (r = bbox[0].distance(bbox[1]) / 2) == 0) this.invArg(); +break; +} +} else { +r = this.vwr.ms.calcRotationRadiusBs(bs); +}if (Float.isNaN(r)) this.invArg(); +currentZoom = this.vwr.getFloat(570425388) / r * 100; +zoom = NaN; +}if (zoom < 0) { +zoom += currentZoom; +} else if (Float.isNaN(zoom)) { +var tok = this.tokAt(i); +switch (tok) { +case 1073742079: +case 1275068432: +zoom = currentZoom * (tok == 1073742079 ? 0.5 : 2); +i++; +break; +case 268441088: +case 268441089: +case 268440577: +var value = this.floatParameter(++i); +i++; +switch (tok) { +case 268441088: +zoom = currentZoom / value; +break; +case 268441089: +zoom = currentZoom * value; +break; +case 268440577: +zoom = currentZoom + value; +break; +} +break; +default: +zoom = (bs == null ? -currentZoom : currentZoom); +} +}this.iToken = i - 1; +return zoom; +}, "~N,~N,JU.BS,~N"); +Clazz.defineMethod(c$, "setElementColor", +function(str, argb){ +var n = -1; +var isSym = (str.charAt(0) == '_'); +out : while (true) { +if (isSym) { +str = str.substring(1); +for (var i = JU.Elements.elementNumberMax; --i >= 0; ) { +if (str.equalsIgnoreCase(JU.Elements.elementSymbolFromNumber(i))) { +n = i; +break out; +}} +for (var i = JU.Elements.altElementMax; --i >= 4; ) { +if (str.equalsIgnoreCase(JU.Elements.altElementSymbolFromIndex(i)) || str.equalsIgnoreCase(JU.Elements.altIsotopeSymbolFromIndex(i))) { +n = JU.Elements.altElementNumberFromIndex(i); +break out; +}} +} else { +for (var i = JU.Elements.elementNumberMax; --i >= 0; ) { +if (str.equalsIgnoreCase(JU.Elements.elementNameFromNumber(i))) { +n = i; +break out; +}} +for (var i = JU.Elements.altElementMax; --i >= 0; ) { +if (str.equalsIgnoreCase(JU.Elements.altElementNameFromIndex(i))) { +n = JU.Elements.altElementNumberFromIndex(i); +break out; +}} +}break; +} +if (this.chk || n < 0) { +return false; +}this.vwr.setElementArgb(n, argb); +return true; +}, "~S,~N"); +Clazz.defineMethod(c$, "setMeshDisplayProperty", +function(shape, i, tok){ +var propertyName = null; +var propertyValue = null; +var allowCOLOR = (shape == 25); +var checkOnly = (i == 0); +if (!checkOnly) tok = this.getToken(i).tok; +switch (tok) { +case 1765808134: +if (allowCOLOR) this.iToken++; + else break; +case 1073742074: +case 603979967: +if (!checkOnly) this.colorShape(shape, this.iToken, false); +return true; +case 0: +case 12291: +case 1073742335: +case 1073742072: +case 1073742334: +case 12294: +case 2097194: +case 1610625028: +case 2097192: +if (this.iToken == 1 && shape >= 0 && this.tokAt(2) == 0) this.setShapeProperty(shape, "thisID", null); +if (tok == 0) return (this.iToken == 1); +if (checkOnly) return true; +switch (tok) { +case 12291: +this.setShapeProperty(shape, "delete", null); +return true; +case 2097194: +case 12294: +tok = 1073742334; +break; +case 2097192: +tok = 1073742335; +break; +case 1610625028: +if (i + 1 == this.slen) tok = 1073742335; +break; +} +case 1073741958: +case 1073741861: +case 1073741964: +case 1073741898: +case 1073742039: +case 1112150019: +case 1073742042: +case 1073742018: +case 1073742052: +case 1073741938: +case 1073742046: +case 1073741862: +case 1073742057: +case 1073742182: +case 1073742060: +case 1073741960: +case 1073742058: +propertyName = "token"; +propertyValue = Integer.$valueOf(tok); +break; +} +if (propertyName == null) return false; +if (checkOnly) return true; +this.setShapeProperty(shape, propertyName, propertyValue); +if ((this.tokAt(this.iToken + 1)) != 0) { +if (!this.setMeshDisplayProperty(shape, ++this.iToken, 0)) --this.iToken; +}return true; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setObjectArgb", +function(str, argb){ +if (this.chk) return; +this.vwr.setObjectArgb(str, argb); +}, "~S,~N"); +Clazz.defineMethod(c$, "setObjectMad10", +function(iShape, name, mad10){ +if (!this.chk) this.vwr.setObjectMad10(iShape, name, mad10); +}, "~N,~S,~N"); +Clazz.defineMethod(c$, "setObjectProp", +function(id, tokCommand, ptColor){ +var data = Clazz.newArray(-1, [id, null]); +var s = ""; +var isWild = JU.PT.isWild(id); +for (var iShape = 17; ; ) { +if (this.getShapePropertyData(iShape, "checkID", data)) { +this.setShapeProperty(iShape, "thisID", id); +switch (tokCommand) { +case 12291: +this.setShapeProperty(iShape, "delete", null); +break; +case 12294: +case 1610625028: +this.setShapeProperty(iShape, "hidden", tokCommand == 1610625028 ? Boolean.FALSE : Boolean.TRUE); +break; +case 134222350: +s += this.getShapeProperty(iShape, "command") + "\n"; +break; +case 1765808134: +if (ptColor >= 0) this.colorShape(iShape, ptColor + 1, false); +break; +} +if (!isWild) break; +}switch (iShape) { +case 17: +iShape = 20; +continue; +case 20: +iShape = 32; +} +switch (--iShape) { +case 27: +iShape--; +break; +case 28: +iShape -= 2; +break; +} +if (iShape < 21) break; +} +return s; +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "setObjectProperty", +function(){ +var id = this.setShapeNameParameter(2); +return (this.chk ? "" : this.setObjectProp(id, this.tokAt(0), this.iToken)); +}); +Clazz.defineMethod(c$, "setShapeNameParameter", +function(i){ +var id = this.paramAsStr(i); +var isWild = id.equals("*"); +if (id.length == 0) this.invArg(); +if (isWild) { +switch (this.tokAt(i + 1)) { +case 0: +case 1073742335: +case 1073742072: +case 1073742334: +case 2097192: +case 2097194: +case 1765808134: +case 12291: +break; +default: +if (this.setMeshDisplayProperty(-1, 0, this.tokAt(i + 1))) break; +id += this.optParameterAsString(++i); +} +}if (this.tokAt(i + 1) == 268441089) id += this.paramAsStr(++i); +this.iToken = i; +return id; +}, "~N"); +Clazz.defineMethod(c$, "setShapeProperty", +function(shapeType, propertyName, propertyValue){ +if (!this.chk) this.sm.setShapePropertyBs(shapeType, propertyName, propertyValue, null); +}, "~N,~S,~O"); +Clazz.defineMethod(c$, "setShapePropertyBs", +function(iShape, propertyName, propertyValue, bs){ +if (!this.chk) this.sm.setShapePropertyBs(iShape, propertyName, propertyValue, bs); +}, "~N,~S,~O,JU.BS"); +Clazz.defineMethod(c$, "setShapeSize", +function(shapeType, rd){ +if (!this.chk) this.sm.setShapeSizeBs(shapeType, 0, rd, null); +}, "~N,J.atomdata.RadiusData"); +Clazz.defineMethod(c$, "setShapeSizeBs", +function(shapeType, size, bs){ +if (!this.chk) this.sm.setShapeSizeBs(shapeType, size, null, bs); +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "setShapeTranslucency", +function(shapeType, prefix, translucency, translucentLevel, bs){ +if (translucentLevel == 3.4028235E38) translucentLevel = this.vwr.getFloat(570425353); +this.setShapeProperty(shapeType, "translucentLevel", Float.$valueOf(translucentLevel)); +if (prefix == null) return; +if (bs == null) this.setShapeProperty(shapeType, prefix + "translucency", translucency); + else if (!this.chk) this.setShapePropertyBs(shapeType, prefix + "translucency", translucency, bs); +}, "~N,~S,~S,~N,JU.BS"); +Clazz.defineMethod(c$, "setSize", +function(shape, scale){ +var rd = null; +var tok = this.tokAt(1); +var isOnly = false; +switch (tok) { +case 1073742072: +this.restrictSelected(false, false); +case 1073742335: +break; +case 1073742334: +scale = 0; +break; +case 3: +case 2: +isOnly = (this.floatParameter(1) < 0 && (tok == 3 || this.tokAt(2) == 268441090)); +default: +rd = this.encodeRadiusParameter(1, isOnly, true); +if (rd == null) return; +if (Float.isNaN(rd.value)) this.invArg(); +} +if (rd == null) rd = new J.atomdata.RadiusData(null, scale, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO); +if (isOnly) this.restrictSelected(false, false); +this.setShapeSize(shape, rd); +}, "~N,~N"); +Clazz.defineMethod(c$, "setSizeBio", +function(iShape){ +var mad = 0; +switch (this.getToken(1).tok) { +case 1073742072: +this.restrictSelected(false, false); +case 1073742335: +mad = -1; +break; +case 1073742334: +break; +case 1639976963: +mad = -2; +break; +case 1111492620: +case 1073741922: +mad = -4; +break; +case 2: +if ((mad = (this.intParameterRange(1, 0, 1000) * 8)) == 2147483647) return; +break; +case 3: +mad = Math.round(this.floatParameterRange(1, -4.0, 4.0) * 2000); +if (mad == 2147483647) return; +if (mad < 0) { +this.restrictSelected(false, false); +mad = -mad; +}break; +case 10: +if (!this.chk) this.sm.loadShape(iShape); +this.setShapeProperty(iShape, "bitset", this.theToken.value); +return; +default: +this.error(6); +} +this.setShapeSizeBs(iShape, mad, null); +}, "~N"); +Clazz.defineMethod(c$, "setUnits", +function(units, tok){ +if (tok == 545259568 && (units.toLowerCase().endsWith("hz") || JU.PT.isOneOf(units.toLowerCase(), ";default;angstroms;au;bohr;nanometers;nm;picometers;pm;vanderwaals;vdw;"))) { +if (!this.chk) this.vwr.setUnits(units, true); +} else if (tok == 545259558 && JU.PT.isOneOf(units.toLowerCase(), ";kcal;kj;")) { +if (!this.chk) this.vwr.setUnits(units, false); +} else { +this.errorStr2(50, "set " + JS.T.nameOf(tok), units); +}return true; +}, "~S,~N"); +Clazz.defineMethod(c$, "toString", +function(){ +var str = new JU.SB(); +str.append("Eval\n pc:"); +str.appendI(this.pc); +str.append("\n"); +str.appendI(this.aatoken.length); +str.append(" statements\n"); +for (var i = 0; i < this.aatoken.length; ++i) { +str.append("----\n"); +var atoken = this.aatoken[i]; +for (var j = 0; j < atoken.length; ++j) { +str.appendO(atoken[j]); +str.appendC('\n'); +} +str.appendC('\n'); +} +str.append("END\n"); +return str.toString(); +}); +Clazz.defineMethod(c$, "getCurrentModelFileAsString", +function(fname){ +if (fname == null) fname = this.vwr.getParameter("_modelFile"); +return (("" + fname).equals("null") ? this.vwr.ms.getInlineData(this.vwr.am.cmi) : this.vwr.getFileAsString(fname)); +}, "~S"); +c$.iProcess = 0; +c$.commandHistoryLevelMax = 0; +c$.contextDepthMax = 100; +c$.scriptReportingLevel = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptException.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptException.js new file mode 100755 index 000000000000..b2b1f0c5e036 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptException.js @@ -0,0 +1,30 @@ +Clazz.declarePackage("JS"); +Clazz.load(["java.lang.Exception"], "JS.ScriptException", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.eval = null; +this.message = null; +this.untranslated = null; +this.isError = false; +Clazz.instantialize(this, arguments);}, JS, "ScriptException", Exception); +Clazz.makeConstructor(c$, +function(se, msg, untranslated, isError){ +this.eval = se; +this.message = msg; +this.isError = isError; +if (!isError) return; +this.eval.setException(this, msg, untranslated); +}, "JS.ScriptError,~S,~S,~B"); +Clazz.defineMethod(c$, "getErrorMessageUntranslated", +function(){ +return this.untranslated; +}); +Clazz.overrideMethod(c$, "getMessage", +function(){ +return this.message; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.message; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptExpr.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptExpr.js new file mode 100755 index 000000000000..c6c3e7940268 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptExpr.js @@ -0,0 +1,1943 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.ScriptParam"], "JS.ScriptExpr", ["java.util.Hashtable", "JU.BS", "$.CU", "$.Lst", "$.Measure", "$.P3", "$.PT", "$.SB", "J.api.Interface", "JM.AtomCollection", "$.BondSet", "$.Group", "$.ModelSet", "JS.SV", "$.ScriptMathProcessor", "$.T", "JU.BSUtil", "$.Edge", "$.Elements", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.debugHigh = false; +this.privateFuncs = null; +this.cmdExt = null; +this.isoExt = null; +this.mathExt = null; +this.smilesExt = null; +this.tempStatement = null; +this.ptTemp = null; +Clazz.instantialize(this, arguments);}, JS, "ScriptExpr", JS.ScriptParam); +Clazz.defineMethod(c$, "getCmdExt", +function(){ +return (this.cmdExt == null ? this.cmdExt = (this.getExt("Cmd")).init(this) : this.cmdExt); +}); +Clazz.defineMethod(c$, "getIsoExt", +function(){ +return (this.isoExt == null ? this.isoExt = (this.getExt("Iso")).init(this) : this.isoExt); +}); +Clazz.defineMethod(c$, "getMathExt", +function(){ +return (this.mathExt == null ? (this.mathExt = this.getExt("Math")).init(this) : this.mathExt); +}); +Clazz.defineMethod(c$, "getSmilesExt", +function(){ +return (this.smilesExt == null ? (this.smilesExt = this.getExt("Smiles")).init(this) : this.smilesExt); +}); +Clazz.defineMethod(c$, "getExt", +function(type){ +return J.api.Interface.getInterface("JS." + type + "Ext", this.vwr, "script"); +}, "~S"); +Clazz.defineMethod(c$, "parameterExpressionList", +function(pt, ptAtom, isArrayItem){ +return this.parameterExpression(pt, -1, null, true, true, ptAtom, isArrayItem, null, null, false); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "parameterExpressionString", +function(pt, ptMax){ +return this.parameterExpression(pt, ptMax, "", true, false, -1, false, null, null, false); +}, "~N,~N"); +Clazz.defineMethod(c$, "parameterExpressionBoolean", +function(pt, ptMax){ +return (this.parameterExpression(pt, ptMax, null, true, false, -1, false, null, null, false)).booleanValue(); +}, "~N,~N"); +Clazz.defineMethod(c$, "parameterExpressionToken", +function(pt){ +var result = this.parameterExpressionList(pt, -1, false); +return (result.size() > 0 ? result.get(0) : JS.SV.newS("")); +}, "~N"); +Clazz.defineMethod(c$, "parameterExpressionSelect", +function(h, where){ +this.st = where; +this.slen = this.st.length; +return (this.parameterExpression(2, -2147483648, null, true, false, -1, false, h, null, false)).booleanValue(); +}, "java.util.Map,~A"); +Clazz.defineMethod(c$, "parameterExpression", +function(pt, ptMax, key, ignoreComma, asVector, ptAtom, isArrayItem, localVars, localVar, isSpecialAssignment){ +var isImplicitAtomProperty = (localVar != null); +var isWhere = (localVar == null && localVars != null); +var isOneExpressionOnly = (pt < 0); +var returnBoolean = (!asVector && key == null); +var returnString = (!asVector && key != null && key.length == 0); +if (isOneExpressionOnly) pt = -pt; +var allContext = (localVars == null || ptMax != -2147483648); +if (ptMax < pt) ptMax = this.slen; +var ptEq = (isSpecialAssignment ? 0 : 1); +var ptWithin = -1; +var rpn = new JS.ScriptMathProcessor(this, isSpecialAssignment, isArrayItem, asVector, false, false, key); +var v; +var res; +var nSquare = 0; +var nParen = 0; +var topLevel = true; +out : for (var i = pt; i < ptMax; i++) { +v = null; +var tok = this.getToken(i).tok; +if (isImplicitAtomProperty && this.tokAt(i + 1) != 1073742336) { +var token = (localVars != null && localVars.containsKey(this.theToken.value) ? null : this.getBitsetPropertySelector(i, 10)); +if (token != null) { +rpn.addX(localVars.get(localVar)); +if (!rpn.addOpAllowMath(token, (this.tokAt(i + 1) == 268435968), 0)) this.invArg(); +if ((token.intValue == 134320141 || token.intValue == 102436) && this.tokAt(this.iToken + 1) != 268435968) { +rpn.addOp(JS.T.tokenLeftParen); +rpn.addOp(JS.T.tokenRightParen); +}i = this.iToken; +continue; +}}switch (tok) { +case 268437505: +case 1073742338: +if (!ignoreComma && topLevel) break out; +if (tok == 1073742338) this.invArg(); +if (isSpecialAssignment && nSquare == 1 && this.tokAt(i + 1) == 268440324) isSpecialAssignment = rpn.endAssignment(); +} +switch (tok) { +case 12290: +if ((tok = this.tokAt(++i)) == 1073742325) { +v = this.parameterExpressionToken(++i); +i = this.iToken; +} else if (tok == 2) { +v = this.vwr.ms.getAtoms(1094715393, Integer.$valueOf(this.st[i].intValue)); +break; +} else if (tok == 12290 && this.tokAt(i + 1) == 2) { +v = this.vwr.ms.getAtomsFromAtomNumberInFrame(this.st[++i].intValue); +break; +} else { +v = this.getParameter(JS.SV.sValue(this.st[i]), 1073742190, true); +}v = this.getParameter((v).asString(), 1073742190, true); +break; +case 134320649: +if (this.getToken(++i).tok != 268435968) this.invArg(); +if (localVars == null) localVars = new java.util.Hashtable(); +res = this.parameterExpression(++i, -1, null, ignoreComma, false, -1, false, localVars, localVar, false); +var TF = (res).booleanValue(); +var iT = this.iToken; +if (this.getToken(iT++).tok != 1073742339) this.invArg(); +this.parameterExpressionBoolean(iT, -1); +var iF = this.iToken; +if (this.tokAt(iF++) != 1073742339) this.invArg(); +this.parameterExpression(-iF, -1, null, ignoreComma, false, 1, false, localVars, localVar, false); +var iEnd = this.iToken; +if (this.tokAt(iEnd) != 268435969) this.invArg(); +v = this.parameterExpression(TF ? iT : iF, TF ? iF : iEnd, "XXX", ignoreComma, false, 1, false, localVars, localVar, false); +i = this.iToken = iEnd; +break; +case 134320648: +case 1275082241: +var isFunctionOfX = (pt > 0); +var isFor = (isFunctionOfX && tok == 134320648); +var dummy; +if (isFunctionOfX) { +if (this.getToken(++i).tok != 268435968 || !JS.T.tokAttr(this.getToken(++i).tok, 1073741824)) this.invArg(); +dummy = this.paramAsStr(i); +if (this.getToken(++i).tok != 1073742339) this.invArg(); +} else { +dummy = "_x"; +}v = this.parameterExpressionToken(-(++i)).value; +if (!(Clazz.instanceOf(v,"JU.BS"))) this.invArg(); +var bsAtoms = v; +i = this.iToken; +if (isFunctionOfX && this.getToken(i++).tok != 1073742339) this.invArg(); +var bsSelect = new JU.BS(); +var bsX = new JU.BS(); +var sout = (isFor ? new Array(bsAtoms.cardinality()) : null); +if (localVars == null) localVars = new java.util.Hashtable(); +bsX.set(0); +var t = JS.SV.newV(10, bsX); +t.index = 0; +localVars.put(dummy, t.setName(dummy)); +var pt2 = -1; +if (isFunctionOfX) { +pt2 = i - 1; +var np = 0; +var tok2; +while (np >= 0 && ++pt2 < ptMax) { +if ((tok2 = this.tokAt(pt2)) == 268435969) np--; + else if (tok2 == 268435968) np++; +} +}var p = 0; +var jlast = 0; +var j = bsAtoms.nextSetBit(0); +if (j < 0 || this.chk) { +this.iToken = pt2 - 1; +} else { +for (; j >= 0; j = bsAtoms.nextSetBit(j + 1)) { +if (jlast >= 0) bsX.clear(jlast); +jlast = j; +bsX.set(j); +t.index = j; +res = this.parameterExpression(i, pt2, (isFor ? "XXX" : null), ignoreComma, isFor, j, false, localVars, isFunctionOfX ? null : dummy, false); +if (isFor) { +if (res == null || (res).size() == 0) this.invArg(); +sout[p++] = ((res).get(0)).asString(); +} else if ((res).booleanValue()) { +bsSelect.set(j); +}} +}if (isFor) { +v = sout; +} else if (isFunctionOfX) { +v = bsSelect; +} else { +return this.listBS(bsSelect); +}i = this.iToken + 1; +break; +case 1073742339: +break out; +case 2: +if (this.tokAt(this.iToken + 1) == 1073742336 && ((tok = this.tokAt(this.iToken + 2)) == 805307393 || tok == 268441089)) { +this.theToken.value = Float.$valueOf(this.theToken.intValue); +this.theToken.tok = 3; +this.theToken.intValue = 2147483647; +i++; +}case 3: +case 1073742362: +rpn.addXNum(this.theToken); +break; +case 134217750: +if (this.tokAt(this.iToken + 1) == 268435968) { +if (!rpn.addOpAllowMath(this.theToken, true, 0)) this.invArg(); +break; +}case 1073742335: +case 1073742334: +case 4: +case 8: +case 9: +case 11: +case 12: +case 7: +case 10: +case 6: +case 14: +rpn.addX(JS.SV.newT(this.theToken)); +break; +case 1073742330: +if (this.tokAt(i + 2) == 1073742336 && this.tokAt(i + 3) == 1275072526) { +rpn.addXStr("$" + this.paramAsStr(++i)); +} else { +this.ignoreError = true; +var ptc; +try { +ptc = this.centerParameter(i, null); +rpn.addX(JS.SV.newV(8, ptc)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +rpn.addXStr(""); +} else { +throw e; +} +} +this.ignoreError = false; +i = this.iToken; +}break; +case 1073742332: +if (this.tokAt(i + 1) == 4) { +if (this.tokAt(i + 2) == 1073742338) { +v = (this.chk ? new JU.BS() : this.getAtomBitSet(this.stringParameter(i + 1))); +i += 2; +break; +}v = this.getAssocArray(i); +} else { +v = this.getPointOrPlane(i, 55); +}i = this.iToken; +break; +case 1073742325: +if (this.tokAt(i + 1) == 1073742326) { +v = new java.util.Hashtable(); +i++; +break; +} else if (this.tokAt(i + 1) == 1073742327 && this.tokAt(i + 2) == 1073742326) { +tok = 1073742327; +this.iToken += 2; +}case 1073742327: +if (tok == 1073742327) v = this.vwr.getAllAtoms(); + else v = this.atomExpression(this.st, i, 0, true, true, null, true); +i = this.iToken; +if (nParen == 0 && isOneExpressionOnly) { +this.iToken++; +return this.listBS(v); +}break; +case 1073742195: +rpn.addOp(this.theToken); +continue; +case 1073742326: +i++; +break out; +case 268436992: +if (!ignoreComma && topLevel) break out; +if (!rpn.addOp(this.theToken)) this.invArg(); +break; +case 1073742337: +case 1073742336: +if (isSpecialAssignment && topLevel && this.tokAt(i + 2) == 268440324) isSpecialAssignment = rpn.endAssignment(); +if (ptEq == 0 && topLevel) { +switch (this.tokAt(i + 1)) { +case 0: +break; +case 1275335685: +case 1275334681: +case 1140850694: +case 1140850706: +case 1140850696: +case 1275068418: +if (tok == 1073742336) break; +default: +rpn.addOp(JS.T.tokenArrayOpen); +rpn.addXStr(this.optParameterAsString(++i)); +rpn.addOp(JS.T.tokenArrayClose); +continue; +} +}var $var = this.getBitsetPropertySelector(i + 1, rpn.getXTok()); +var isUserFunction = ($var.intValue == 134320141); +var allowMathFunc = true; +var tok2 = this.tokAt(this.iToken + 2); +if (this.tokAt(this.iToken + 1) == 1073742336) { +switch (tok2) { +case 1073742327: +tok2 = 480; +if (this.tokAt(this.iToken + 3) == 1073742336 && this.tokAt(this.iToken + 4) == 1275068420) tok2 = 224; +case 1275068725: +case 32: +case 64: +case 192: +case 128: +case 160: +case 96: +allowMathFunc = (isUserFunction || $var.intValue == 1275069443 || tok2 == 480 || tok2 == 224 || tok2 == 1275068725); +$var.intValue |= tok2 & 480; +this.getToken(this.iToken + 2); +} +}var tokNext = this.tokAt(this.iToken + 1); +allowMathFunc = new Boolean (allowMathFunc & (tokNext == 268435968 || isUserFunction)).valueOf(); +if (!rpn.addOpAllowMath($var, allowMathFunc, isUserFunction ? tokNext : 0)) this.invArg(); +i = this.iToken; +if ($var.intValue == 134320141 && tokNext != 268435968) { +rpn.addOp(JS.T.tokenLeftParen); +rpn.addOp(JS.T.tokenRightParen); +}break; +case 1153433601: +case 1086326786: +case 1086326785: +case 1073742328: +case 1812599299: +case 1086326788: +case 1073742329: +case 1111490587: +case 1086326789: +case 1086324742: +case 1094717454: +case 1094713360: +case 1073742128: +case 134218756: +case 1086324744: +case 1094713366: +case 134218757: +case 1237320707: +case 1639976963: +if (!isWhere && i == ptWithin && this.tokAt(i + 1) == 268436992) { +rpn.addX(JS.SV.newT(this.theToken)); +break; +}default: +if (this.theTok == 268437504 && this.tokAt(i + 2) == 268436482) { +v = this.getAssocArray(i); +i = this.iToken; +break; +}if (JS.T.tokAttr(this.theTok, 268435456) || JS.T.tokAttr(this.theTok, 134217728) && this.tokAt(this.iToken + 1) == 268435968) { +if (!rpn.addOp(this.theToken)) { +if (ptAtom >= 0) { +break out; +}this.invArg(); +}switch (this.theTok) { +case 134217759: +ptWithin = i + 2; +break; +case 268440324: +if (topLevel) ptEq = i; +break; +case 268435968: +nParen++; +topLevel = false; +break; +case 268435969: +if (--nParen <= 0 && nSquare == 0) { +if (isOneExpressionOnly) { +this.iToken++; +break out; +}topLevel = true; +}break; +case 268437504: +nSquare++; +topLevel = false; +break; +case 268437505: +if (--nSquare == 0 && nParen == 0) { +if (isOneExpressionOnly) { +this.iToken++; +break out; +}topLevel = true; +}break; +} +} else { +var name = this.paramAsStr(i).toLowerCase(); +var haveParens = (this.tokAt(i + 1) == 268435968); +if (!haveParens) if (this.chk) { +v = name; +} else if (localVars == null || (v = JU.PT.getMapValueNoCase(localVars, name)) == null && allContext) { +if (name.startsWith("_")) { +v = (name.equals("_") ? this.vwr.getModelSetAuxiliaryInfo() : name.equals("_m") ? this.vwr.getCurrentModelAuxInfo() : null); +}if (v == null) v = this.getContextVariableAsVariable(name, false); + else if (ptEq == 0) this.invArg(); +}if (v == null) { +if (JS.T.tokAttr(this.theTok, 1073741824) && this.isFunction(name)) { +if (!rpn.addOp(JS.SV.newV(134320141, this.theToken.value))) this.invArg(); +if (!haveParens) { +rpn.addOp(JS.T.tokenLeftParen); +rpn.addOp(JS.T.tokenRightParen); +}} else { +$var = this.vwr.g.getAndSetNewVariable(name, false); +switch ($var.tok) { +case 2: +case 3: +if (this.noCopy(i, -1) || this.noCopy(i, 1)) break; +rpn.addXCopy($var); +continue; +default: +} +rpn.addX($var); +}}}} +if (v != null) { +if (Clazz.instanceOf(v,"JU.BS")) rpn.addXBs(v); + else rpn.addXObj(v); +}} +var result = rpn.getResult(); +if (result == null) { +if (!this.chk) rpn.dumpStacks("null result"); +this.error(13); +}if (result.tok == 135198) { +if (isSpecialAssignment && ptEq == 0) { +var rv = new JU.Lst(); +rv.addLast( new JS.SV()); +return rv; +}return result.value; +}if (this.chk) { +if (returnBoolean) return Boolean.TRUE; +if (returnString) return ""; +} else { +if (returnBoolean) return Boolean.$valueOf(result.asBoolean()); +if (returnString) { +if (result.tok == 4) result.intValue = 2147483647; +return result.asString(); +}}switch (result.tok) { +case 1073742335: +case 1073742334: +return Boolean.$valueOf(result.intValue == 1); +case 2: +return Integer.$valueOf(result.intValue); +case 10: +case 3: +case 4: +case 8: +default: +return result.value; +} +}, "~N,~N,~S,~B,~B,~N,~B,java.util.Map,~S,~B"); +Clazz.defineMethod(c$, "atomExpressionAt", +function(index){ +if (!this.checkToken(index)) { +this.iToken = index; +this.bad(); +}return this.atomExpression(this.st, index, 0, true, false, null, true); +}, "~N"); +Clazz.defineMethod(c$, "atomExpression", +function(code, pcStart, pcStop, allowRefresh, allowUnderflow, ret, andNotDeleted){ +this.isBondSet = false; +if (code !== this.st) { +this.tempStatement = this.st; +this.st = code; +}var rpn = new JS.ScriptMathProcessor(this, false, false, false, ret == null, allowUnderflow, null); +var val; +var refreshed = false; +this.iToken = 1000; +var ignoreSubset = (pcStart < 0); +var isInMath = false; +var bs; +var nExpress = 0; +var ac = this.vwr.ms.ac; +var ptWithin = -10; +if (ignoreSubset) pcStart = -pcStart; +ignoreSubset = new Boolean (ignoreSubset | this.chk).valueOf(); +if (pcStop == 0 && code.length > pcStart) pcStop = pcStart + 1; +expression_loop : for (var pc = pcStart; pc < pcStop; ++pc) { +this.iToken = pc; +var instruction = code[pc]; +if (instruction == null) break; +var value = instruction.value; +switch (instruction.tok) { +case 1073742325: +pcStart = pc; +pcStop = code.length; +nExpress++; +break; +case 1073742326: +nExpress--; +if (nExpress > 0) continue; +break expression_loop; +case 1073742332: +if (this.isPoint3f(pc)) { +var pt = this.getPoint3f(pc, true, true); +if (pt != null) { +rpn.addXPt(pt); +pc = this.iToken; +break; +}}break; +case 1073742338: +if (pc > 0 && code[pc - 1].tok == 1073742332) rpn.addXBs( new JU.BS()); +break; +case 268437504: +isInMath = true; +rpn.addOp(instruction); +break; +case 268437505: +isInMath = false; +rpn.addOp(instruction); +break; +case 12290: +rpn.addXBs(this.getAtomBitSet(value)); +break; +case 7: +bs = JS.SV.getBitSet(instruction, false); +if (bs != null) { +rpn.addXBs(bs); +break; +}case 6: +rpn.addXBs(this.vwr.ms.getAtoms(1086324744, (instruction).asString())); +break; +case 134219777: +rpn.addX(JS.SV.newT(instruction)); +rpn.addX(JS.SV.newV(9, this.hklParameter(pc + 2, null, true))); +pc = this.iToken; +break; +case 134217750: +rpn.addX(JS.SV.newT(instruction)); +rpn.addX(JS.SV.newV(9, this.planeParameter(pc + 2, false))); +pc = this.iToken; +break; +case 1073742329: +rpn.addX(JS.SV.newT(instruction)); +rpn.addXPt(this.getPoint3f(pc + 2, true, true)); +pc = this.iToken; +break; +case 4: +var s = value; +if (s.indexOf("({") == 0) { +bs = JU.BS.unescape(s); +if (bs != null) { +rpn.addXBs(bs); +break; +}} else if (s.indexOf("|") >= 0 && ptWithin != pc - 4) { +rpn.addXBs(this.vwr.ms.getAtoms(1086324744, s)); +break; +}rpn.addX(JS.SV.newT(instruction)); +if (s.equals("hkl")) { +rpn.addX(JS.SV.newV(9, this.hklParameter(pc + 2, null, true))); +pc = this.iToken; +}break; +case 134217759: +ptWithin = pc; +case 134218757: +case 134218756: +case 1237320707: +case 134353926: +case 134217736: +case 268436992: +case 1275203608: +rpn.addOp(instruction); +break; +case 1073742327: +rpn.addXBs(this.vwr.getAllAtoms()); +break; +case 1073742333: +rpn.addXBs( new JU.BS()); +break; +case 1073742335: +case 1073742334: +rpn.addX(JS.SV.newT(instruction)); +break; +case 1113589787: +rpn.addXBs(JU.BSUtil.copy(this.vwr.bsA())); +break; +case 2097194: +rpn.addXBs(JU.BSUtil.copy(this.vwr.slm.getHiddenSet())); +break; +case 12293: +rpn.addXBs(this.vwr.getMotionFixedAtoms(null, null)); +break; +case 2097192: +rpn.addXBs(JU.BSUtil.copyInvert(this.vwr.slm.getHiddenSet(), ac)); +break; +case 2097200: +rpn.addXBs(this.vwr.getBaseModelBitSet()); +break; +case 2097198: +rpn.addXBs(this.chk ? new JU.BS() : JU.BSUtil.copy(this.vwr.ms.getVisibleSet(!refreshed))); +refreshed = true; +break; +case 2097190: +if (!this.chk && allowRefresh) (this).refresh(false); +rpn.addXBs(this.chk ? new JU.BS() : this.vwr.ms.getClickableSet(!allowRefresh)); +allowRefresh = false; +break; +case 1073742356: +if (this.vwr.ms.mc != 1 || this.vwr.ms.haveBioModels) { +var atomID = instruction.intValue; +if (atomID > 0) { +bs = this.compareInt(1094713346, 268440324, atomID); +if (atomID == 2) bs.or(this.compareInt(1086326789, 268440324, 20)); +rpn.addXBs(bs); +} else { +rpn.addXBs(this.getAtomBits(instruction.tok, value)); +}} else { +rpn.addXBs((this).lookupIdentifierValue("_" + value)); +}break; +case 2097155: +case 2097188: +case 2097156: +case 1612709894: +case 1073742331: +case 2097166: +case 2097165: +case 2097168: +case 2097170: +case 2097172: +case 2097174: +case 1073742360: +case 1073742355: +case 2097196: +case 1088421903: +case 1814695966: +rpn.addXBs(this.getAtomBits(instruction.tok, value)); +break; +case 1073742358: +case 1073742359: +var iModel = instruction.intValue; +if (iModel == 2147483647 && Clazz.instanceOf(value, Integer)) { +iModel = (value).intValue(); +if (!this.vwr.haveFileSet()) { +rpn.addXBs(this.getAtomBits(1073742358, Integer.$valueOf(iModel))); +break; +}if (iModel <= 2147) iModel = iModel * 1000000; +}rpn.addXBs(this.bitSetForModelFileNumber(iModel)); +break; +case 1073742361: +case 1073742357: +rpn.addXBs(this.getAtomBits(instruction.tok, Integer.$valueOf(instruction.intValue))); +break; +case 1073742362: +if (isInMath) rpn.addXNum(instruction); + else rpn.addXBs(this.getAtomBits(1073742362, Integer.$valueOf(JS.ScriptExpr.getSeqCode(instruction)))); +break; +case 1073742363: +if (isInMath) { +rpn.addXNum(instruction); +rpn.addOp(JS.T.tokenMinus); +rpn.addXNum(code[++pc]); +break; +}var chainID = (pc + 3 < code.length && code[pc + 2].tok == 268439552 && code[pc + 3].tok == 1073742357 ? code[pc + 3].intValue : -1); +rpn.addXBs(this.getAtomBits(1073742363, Clazz.newIntArray(-1, [JS.ScriptExpr.getSeqCode(instruction), JS.ScriptExpr.getSeqCode(code[++pc]), chainID]))); +if (chainID != -1) pc += 2; +break; +case 1094713350: +case 1094713349: +rpn.addXBs(this.getAtomBits(instruction.tok, value)); +break; +case 2097182: +rpn.addXBs(this.vwr.am.cmi < 0 ? this.vwr.getFrameAtoms() : this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi)); +break; +case 1612709900: +case 2097154: +case 1114249217: +case 1612709912: +case 136314895: +case 2097159: +case 2097160: +case 2097162: +case 2097178: +case 2097180: +rpn.addXBs((this).lookupIdentifierValue(value)); +break; +case 268440323: +case 268440322: +case 268440321: +case 268440320: +case 268440324: +case 268440325: +case 268440326: +var tok = instruction.tok; +var tokWhat = instruction.intValue; +if ((tokWhat == 1094717448) && tok != 268440324) this.invArg(); +var data = null; +if (tokWhat == 1715472409) { +if (pc + 2 == code.length) this.invArg(); +if (!this.chk) data = this.vwr.getDataObj(code[++pc].value, null, 1); +}if (++pc == code.length) this.invArg(); +rpn.addXBs(this.chk ? new JU.BS() : this.getComparison(code[pc], tokWhat, tok, value, data)); +break; +case 3: +case 2: +rpn.addXNum(instruction); +break; +case 10: +var bs1 = (Clazz.instanceOf(value,"JM.BondSet") ? value : JU.BSUtil.copy(value)); +rpn.addXBs(bs1); +break; +case 8: +rpn.addXPt(value); +break; +default: +if (JS.T.tokAttr(instruction.tok, 268435456)) { +if (!rpn.addOp(instruction)) this.invArg(); +break; +}if (!((typeof(value)=='string'))) { +rpn.addXObj(value); +break; +}val = this.getParameter(value, 0, true); +if (isInMath) { +rpn.addXObj(val); +break; +}if ((typeof(val)=='string') || Clazz.instanceOf(val,"JU.Lst")) val = this.getStringObjectAsVariable(val); +if ((typeof(val)=='string')) val = (this).lookupIdentifierValue(value); +rpn.addXObj(val); +break; +} +} +var expressionResult = rpn.getResult(); +if (expressionResult == null) { +if (allowUnderflow) return null; +if (!this.chk) rpn.dumpStacks("after getResult"); +this.error(13); +}var exp = expressionResult.value; +if ((typeof(exp)=='string') && (ret == null || (exp).startsWith("({"))) { +exp = (this.chk ? new JU.BS() : this.getAtomBitSet(exp)); +}if (ret != null && !(Clazz.instanceOf(exp,"JU.BS"))) { +ret[0] = exp; +return null; +}bs = (Clazz.instanceOf(exp,"JU.BS") ? exp : new JU.BS()); +this.isBondSet = (Clazz.instanceOf(exp,"JM.BondSet")); +if (!this.isBondSet && (bs = this.vwr.slm.excludeAtoms(bs, ignoreSubset)).length() > this.vwr.ms.ac) bs.clearAll(); +if (this.tempStatement != null) { +this.st = this.tempStatement; +this.tempStatement = null; +}return bs; +}, "~A,~N,~N,~B,~B,~A,~B"); +Clazz.defineMethod(c$, "getComparison", +function(t, tokWhat, tokOp, strOp, data){ +var tokValue = t.tok; +if (tokValue == 7) { +var bs = new JU.BS(); +if (tokOp != 268440324) bs.setBits(0, this.vwr.ms.ac); +var lst = (t).getList(); +for (var i = lst.size(); --i >= 0; ) { +var res = this.getComparison(lst.get(i), tokWhat, tokOp, strOp, data); +if (tokOp == 268440324) bs.or(res); + else bs.and(res); +} +return bs; +}var comparisonInt = t.intValue; +var comparisonFloat = NaN; +var isModel = (tokWhat == 1094717454); +var isIntProperty = JS.T.tokAttr(tokWhat, 1094713344); +var isFloatProperty = (JS.T.tokAttr(tokWhat, 1111490560) || (tokWhat & 1136656384) == 1077936128); +var isIntOrFloat = isIntProperty && isFloatProperty; +var isStringProperty = !isIntProperty && JS.T.tokAttr(tokWhat, 1086324736); +if (tokWhat == 1086326789) isIntProperty = !(isStringProperty = false); +var val = t.value; +if (JS.T.tokAttr(tokValue, 1073741824)) { +if ("_modelNumber".equalsIgnoreCase(val)) { +var modelIndex = this.vwr.am.cmi; +val = Integer.$valueOf(comparisonInt = (modelIndex < 0 ? 0 : this.vwr.getModelFileNumber(modelIndex))); +} else { +var v = this.getParameter(val, 1073742190, false); +if (v != null) { +if (v.tok == 7) return this.getComparison(v, tokWhat, tokOp, strOp, data); +comparisonInt = v.intValue; +val = (isStringProperty || tokWhat == 1094717448 && v.tok != 2 ? JS.SV.sValue(v) : JS.SV.nValue(v)); +t = v; +}}}if (Clazz.instanceOf(val,"JU.P3")) { +if (tokWhat == 1765808134) { +comparisonInt = JU.CU.colorPtToFFRGB(val); +tokValue = 2; +isIntProperty = true; +}} else if ((typeof(val)=='string')) { +if (tokWhat == 1765808134) { +comparisonInt = JU.CU.getArgbFromString(val); +if (comparisonInt == 0 && JS.T.tokAttr(tokValue, 1073741824)) { +val = this.getVarParameter(val, true); +if ((val).startsWith("{")) { +val = JU.Escape.uP(val); +if (Clazz.instanceOf(val,"JU.P3")) comparisonInt = JU.CU.colorPtToFFRGB(val); + else comparisonInt = 0; +} else { +comparisonInt = JU.CU.getArgbFromString(val); +}}tokValue = 2; +isIntProperty = true; +} else if (!isStringProperty) { +if (tokWhat == 1094717448) { +val = Integer.$valueOf(t.tok == 2 ? t.intValue : -1000 - (val + " ").codePointAt(0)); +} else if (tokWhat == 1639976963 || tokWhat == 1237320707 || tokWhat == 1086326789) isStringProperty = !(isIntProperty = (comparisonInt != 2147483647)); + else val = JS.SV.nValue(t); +if (Clazz.instanceOf(val, Integer)) comparisonFloat = comparisonInt = (val).intValue(); + else if (Clazz.instanceOf(val, Float) && isModel) comparisonInt = JM.ModelSet.modelFileNumberFromFloat((val).floatValue()); +}}if (isStringProperty && !((typeof(val)=='string'))) { +val = "" + val; +}if (Clazz.instanceOf(val, Integer) || tokValue == 2) { +if (isModel) { +if (comparisonInt >= 1000000) tokWhat = -1094717454; +} else if (isIntOrFloat) { +isFloatProperty = false; +} else if (isFloatProperty) { +comparisonFloat = comparisonInt; +}} else if (Clazz.instanceOf(val, Float)) { +if (isModel) { +tokWhat = -1094717454; +} else { +comparisonFloat = (val).floatValue(); +if (isIntOrFloat) { +isIntProperty = false; +} else if (isIntProperty) { +comparisonInt = Clazz.floatToInt(comparisonFloat); +}}} else if (!isStringProperty) { +this.iToken++; +this.invArg(); +}if (isModel && comparisonInt >= 1000000 && comparisonInt % 1000000 == 0) { +comparisonInt /= 1000000; +tokWhat = 1228935687; +isModel = false; +}if (tokWhat == -1094717454 && tokOp == 268440324) { +return this.bitSetForModelFileNumber(comparisonInt); +}if (strOp != null && strOp.indexOf("-") >= 0) { +if (isIntProperty) comparisonInt = -comparisonInt; + else if (!Float.isNaN(comparisonFloat)) comparisonFloat = -comparisonFloat; +}return (isIntProperty ? this.compareInt(tokWhat, tokOp, comparisonInt) : isStringProperty ? this.compareString(tokWhat, tokOp, val) : this.compareFloatData(tokWhat, data, tokOp, comparisonFloat)); +}, "JS.T,~N,~N,~S,~A"); +Clazz.defineMethod(c$, "noCopy", +function(i, dir){ +switch (this.tokAt(i + dir)) { +case 268441602: +case 268441601: +return ((this.st[i + dir].intValue == -1) == (dir == -1)); +default: +return false; +} +}, "~N,~N"); +Clazz.defineMethod(c$, "getAssocArray", +function(i){ +var ht = new java.util.Hashtable(); +var closer = (this.tokAt(i) == 1073742332 ? 1073742338 : 268437505); +for (i = i + 1; i < this.slen; i++) { +var tok = this.tokAt(i); +if (tok == closer) break; +var key = null; +if (Clazz.instanceOf(this.st[i],"JS.SV")) key = (this.st[i]).myName; +if (key == null) key = JS.SV.sValue(this.st[i]); +i++; +if (this.tokAt(i++) != 268436482) this.invArg(); +var v = this.parameterExpression(i, 0, null, false, true, -1, false, null, null, false); +if (v.size() == 0) this.invArg(); +ht.put(key, JS.SV.copySafely(v.get(0))); +i = this.iToken; +if (this.tokAt(i) != 268436992) break; +} +this.iToken = i; +if (this.tokAt(i) != closer) this.invArg(); +return ht; +}, "~N"); +Clazz.defineMethod(c$, "listBS", +function(bs){ +var l = new JU.Lst(); +l.addLast(JS.SV.newV(10, bs)); +return l; +}, "JU.BS"); +Clazz.defineMethod(c$, "compareFloatData", +function(tokWhat, data, tokOperator, comparisonFloat){ +var bs = new JU.BS(); +var ac = this.vwr.ms.ac; +var modelSet = this.vwr.ms; +var atoms = modelSet.at; +var propertyFloat = 0; +this.vwr.autoCalculate(tokWhat, null); +var isProp = (tokWhat == 1715472409); +if (!isProp && this.ptTemp == null) this.ptTemp = new JU.P3(); +for (var i = ac; --i >= 0; ) { +var match = false; +var atom = atoms[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (isProp) { +if (data == null || data.length <= i) continue; +propertyFloat = data[i]; +} else { +propertyFloat = atom.atomPropertyFloat(this.vwr, tokWhat, this.ptTemp); +}match = this.compareFloat(tokOperator, propertyFloat, comparisonFloat); +if (match) bs.set(i); +} +return bs; +}, "~N,~A,~N,~N"); +Clazz.defineMethod(c$, "compareFloat", +function(tokOperator, a, b){ +if ((a == a) != (b == b)) return (tokOperator == 268440325); +switch (tokOperator) { +case 268440323: +return a < b; +case 268440322: +return a <= b || a != a; +case 268440321: +return a >= b || a != a; +case 268440320: +return a > b; +case 268440324: +return a == b || a != a; +case 268440325: +return a != b && a == a; +} +return false; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "compareString", +function(tokWhat, tokOperator, comparisonString){ +var bs = new JU.BS(); +var atoms = this.vwr.ms.at; +var ac = this.vwr.ms.ac; +var isCaseSensitive = (tokOperator == 268440326 || tokWhat == 1086326788 && this.vwr.getBoolean(603979822)); +if (!isCaseSensitive) comparisonString = comparisonString.toLowerCase(); +for (var i = ac; --i >= 0; ) { +if (atoms[i] == null) continue; +var propertyString = atoms[i].atomPropertyString(this.vwr, tokWhat); +if (!isCaseSensitive) propertyString = propertyString.toLowerCase(); +if (this.compareStringValues(tokOperator, propertyString, comparisonString)) bs.set(i); +} +return bs; +}, "~N,~N,~S"); +Clazz.defineMethod(c$, "compareStringValues", +function(tokOperator, propertyValue, comparisonValue){ +switch (tokOperator) { +case 268440324: +case 268440325: +return (JU.PT.isMatch(propertyValue, comparisonValue, true, true) == (tokOperator == 268440324)); +case 268440326: +return JU.PT.isLike(propertyValue, comparisonValue); +default: +this.invArg(); +} +return false; +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "compareInt", +function(tokWhat, tokOperator, ival){ +var ia = 2147483647; +var propertyBitSet = null; +var bitsetComparator = tokOperator; +var bitsetBaseValue = ival; +var modelSet = this.vwr.ms; +var atoms = modelSet.at; +var ac = modelSet.ac; +var imax = -1; +var imin = 0; +var iModel = -1; +var cellRange = null; +var nOps = 0; +var bs; +switch (tokWhat) { +case 1296041985: +switch (bitsetComparator) { +case 268440321: +case 268440320: +imax = 2147483647; +break; +} +break; +case 1094713347: +try { +switch (tokOperator) { +case 268440323: +return JU.BSUtil.newBitSet2(0, ival); +case 268440322: +return JU.BSUtil.newBitSet2(0, ival + 1); +case 268440321: +return JU.BSUtil.newBitSet2(ival, ac); +case 268440320: +return JU.BSUtil.newBitSet2(ival + 1, ac); +case 268440324: +return (ival < ac ? JU.BSUtil.newBitSet2(ival, ival + 1) : new JU.BS()); +case 268440325: +default: +bs = JU.BSUtil.setAll(ac); +if (ival >= 0) bs.clear(ival); +return bs; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return new JU.BS(); +} else { +throw e; +} +} +} +bs = JU.BS.newN(ac); +for (var i = 0; i < ac; ++i) { +var match = false; +var atom = atoms[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +switch (tokWhat) { +default: +ia = atom.atomPropertyInt(tokWhat); +break; +case 1094713368: +case 1094717448: +return JU.BSUtil.copy(this.vwr.ms.getConformation(-1, ival, false, null)); +case 1296041985: +propertyBitSet = atom.atomSymmetry; +if (propertyBitSet == null) continue; +if (atom.mi != iModel) { +iModel = atom.mi; +cellRange = modelSet.getModelCellRange(iModel); +nOps = modelSet.getModelSymmetryCount(iModel); +}if (bitsetBaseValue >= 200) { +if (cellRange == null) continue; +ival = bitsetBaseValue % 1000; +var symop = Clazz.doubleToInt(bitsetBaseValue / 1000) - 1; +if (symop < 0) { +match = true; +} else if (nOps == 0 || symop >= 0 && !(match = propertyBitSet.get(symop))) { +continue; +}bitsetComparator = 1073742333; +if (symop < 0) ia = atom.getCellTranslation(ival, cellRange, nOps); + else ia = atom.getSymmetryTranslation(symop, cellRange, nOps); +} else if (nOps > 0) { +if (ival > nOps) { +if (bitsetComparator != 268440323 && bitsetComparator != 268440322) continue; +}if (bitsetComparator == 268440325) { +if (ival > 0 && ival <= nOps && !propertyBitSet.get(ival)) { +bs.set(i); +}continue; +}var bs1 = JU.BSUtil.copy(propertyBitSet); +bs1.clearBits(nOps, bs1.length()); +propertyBitSet = bs1; +}switch (bitsetComparator) { +case 268440323: +imax = ival - 1; +break; +case 268440322: +imax = ival; +break; +case 268440321: +imin = ival - 1; +break; +case 268440320: +imin = ival; +break; +case 268440324: +imax = ival; +imin = ival - 1; +break; +case 268440325: +match = !propertyBitSet.get(ival); +break; +} +if (imin < 0) imin = 0; +if (imin < imax) { +var pt = propertyBitSet.nextSetBit(imin); +if (pt >= 0 && pt < imax) match = true; +}if (!match || ia == 2147483647) tokOperator = 1073742333; +} +switch (tokOperator) { +case 1073742333: +break; +case 268440323: +match = (ia < ival); +break; +case 268440322: +match = (ia <= ival); +break; +case 268440321: +match = (ia >= ival); +break; +case 268440320: +match = (ia > ival); +break; +case 268440324: +match = (ia == ival); +break; +case 268440325: +match = (ia != ival); +break; +} +if (match) bs.set(i); +} +return bs; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getBitsetPropertySelector", +function(i, xTok){ +var tok = this.getToken(i).tok; +switch (tok) { +case 1275068725: +case 32: +case 64: +case 96: +case 192: +case 128: +case 160: +case 1715472409: +break; +default: +if (JS.T.tokAttrOr(tok, 1077936128, 1140850688) || xTok == 6) break; +if (tok != 805307393 && !JS.T.tokAttr(tok, 1073741824)) break; +var name = this.paramAsStr(i); +if (this.isFunction(name.toLowerCase())) { +tok = 134320141; +break; +}} +return JS.SV.newSV(268442113, tok, this.paramAsStr(i)); +}, "~N,~N"); +Clazz.defineMethod(c$, "getBitsetProperty", +function(bs, pts, tok, ptRef, planeRef, tokenValue, opValue, useAtomMap, index, asVectorIfAll){ +var haveIndex = (index != 2147483647); +var isAtoms = haveIndex || !(Clazz.instanceOf(tokenValue,"JM.BondSet")) && !(Clazz.instanceOf(bs,"JM.BondSet")); +var minmaxtype = tok & 480; +var selectedFloat = (minmaxtype == 224); +var isPivot = (minmaxtype == 288); +if (isPivot) minmaxtype = 480; +var ac = this.vwr.ms.ac; +var fout = (minmaxtype == 256 ? Clazz.newFloatArray (ac, 0) : null); +var isExplicitlyAll = (minmaxtype == 480 || selectedFloat); +tok &= -481; +var info = null; +if (tok == 0) tok = (isAtoms ? 1153433601 : 1677721602); +var isPt = false; +var isHash = false; +var isInt = false; +var isString = false; +switch (tok) { +case 1275068446: +return (this.vwr.getModelSetAuxiliaryInfoForAtoms(bs)).get("models"); +case 1145047049: +case 1145047055: +case 1145047050: +case 1145047053: +case 1145045008: +case 1145045006: +case 1765808134: +case 1145047052: +isPt = true; +break; +case 1275203608: +isHash = true; +info = Clazz.newArray(-1, [null, null]); +break; +case 134320141: +case 1275069443: +break; +case 1086324754: +isInt = (tokenValue === "color"); +isString = !isInt; +break; +case 1145045003: +isString = true; +break; +default: +isInt = JS.T.tokAttr(tok, 1094713344) && !JS.T.tokAttr(tok, 1111490560); +isString = !isInt && JS.T.tokAttr(tok, 1086324736); +} +var pt = (isPt || !isAtoms ? new JU.P3() : null); +if (isExplicitlyAll || isString && !haveIndex && minmaxtype != 256 && minmaxtype != 32) minmaxtype = 1073742327; +var vout = (minmaxtype == 1073742327 ? new JU.Lst() : null); +var bsNew = null; +var userFunction = null; +var params = null; +var bsAtom = null; +var tokenAtom = null; +var ptT = null; +var data = null; +var ffdata = null; +switch (tok) { +case 1153433601: +if (isAtoms) break; +case 1677721602: +if (this.chk) return bs; +bsNew = (tok == 1153433601 ? this.vwr.ms.getAtoms(1677721602, bs) : (isAtoms ? JM.BondSet.newBS(this.vwr.getBondsForSelectedAtoms(bs)) : bs)); +var i; +switch (minmaxtype) { +case 32: +i = bsNew.nextSetBit(0); +break; +case 64: +i = bsNew.length() - 1; +break; +case 192: +case 128: +case 160: +return Float.$valueOf(NaN); +default: +return bsNew; +} +bsNew.clearAll(); +if (i >= 0) bsNew.set(i); +return bsNew; +case 1086324745: +switch (minmaxtype) { +case 0: +case 32: +case 1073742327: +return this.getCmdExt().getBitsetIdent(bs, null, tokenValue, useAtomMap, index, isExplicitlyAll); +} +return ""; +case 134320141: +userFunction = (opValue)[0]; +params = (opValue)[1]; +bsAtom = JU.BS.newN(ac); +tokenAtom = JS.SV.newV(10, bsAtom); +break; +case 1111490587: +for (var j = fout.length; --j >= 0; ) fout[j] = NaN; + +case 1111490574: +case 1111490575: +this.vwr.autoCalculate(tok, tokenValue); +break; +case 1275069443: +if (ptRef == null && planeRef == null) return new JU.P3(); +break; +case 1765808134: +ptT = new JU.P3(); +break; +case 1715472409: +data = this.vwr.getDataObj(opValue, null, 1); +if (data == null) ffdata = this.vwr.getDataObj(opValue, null, 2); +if (ffdata != null) { +minmaxtype = 1073742327; +vout = new JU.Lst(); +}break; +} +var n = 0; +var ivMinMax = 0; +var fvMinMax = 0; +var sum = 0; +var sum2 = 0; +switch (minmaxtype) { +case 32: +ivMinMax = 2147483647; +fvMinMax = 3.4028235E38; +break; +case 64: +ivMinMax = -2147483648; +fvMinMax = -3.4028235E38; +break; +} +var modelSet = this.vwr.ms; +var mode = (ffdata != null ? 5 : isHash ? 4 : isPt ? 3 : isString ? 2 : isInt ? 1 : 0); +if (isAtoms) { +var haveBitSet = (bs != null); +var i0; +var i1; +if (pts != null) { +i0 = 0; +i1 = pts.size(); +} else if (haveIndex) { +i0 = index; +i1 = index + 1; +} else if (haveBitSet) { +i0 = bs.nextSetBit(0); +i1 = Math.min(ac, bs.length()); +} else { +i0 = 0; +i1 = ac; +}if (this.chk) i1 = 0; +for (var i = i0; i >= 0 && i < i1; i = (haveBitSet ? bs.nextSetBit(i + 1) : i + 1)) { +n++; +var atom; +if (pts == null) { +atom = modelSet.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +} else { +atom = null; +}switch (mode) { +case 0: +var fv = 3.4028235E38; +switch (tok) { +case 134320141: +bsAtom.set(i); +fv = JS.SV.fValue((this).getUserFunctionResult(userFunction, params, tokenAtom)); +bsAtom.clear(i); +break; +case 1715472409: +fv = (data == null || i >= data.length ? 0 : data[i]); +break; +case 1275069443: +if (planeRef != null) fv = JU.Measure.distanceToPlane(planeRef, atom); + else fv = (pts != null ? JS.SV.ptValue(pts.get(i)).distance(ptRef) : atom !== ptRef || minmaxtype != 32 ? atom.distance(ptRef) : NaN); +break; +default: +fv = atom.atomPropertyFloat(this.vwr, tok, this.ptTemp); +} +if (fv == 3.4028235E38 || Float.isNaN(fv) && minmaxtype != 1073742327) { +n--; +continue; +}switch (minmaxtype) { +case 32: +if (fv < fvMinMax) fvMinMax = fv; +break; +case 64: +if (fv > fvMinMax) fvMinMax = fv; +break; +case 256: +fout[i] = fv; +break; +case 1073742327: +vout.addLast(Float.$valueOf(fv)); +break; +case 160: +case 192: +sum2 += (fv) * fv; +case 128: +default: +sum += fv; +} +break; +case 1: +var iv = 0; +switch (tok) { +case 1094717448: +case 1094713349: +this.errorStr(45, JS.T.nameOf(tok)); +break; +case 1086324754: +iv = (atom.getWyckoffPosition(false).charAt(0)).charCodeAt(0); +switch (iv) { +case 63: +iv = 0; +break; +case 65: +iv = 27; +break; +default: +iv = iv & 0x1F; +break; +} +break; +default: +iv = atom.atomPropertyInt(tok); +break; +} +switch (minmaxtype) { +case 32: +if (iv < ivMinMax) ivMinMax = iv; +break; +case 64: +if (iv > ivMinMax) ivMinMax = iv; +break; +case 256: +fout[i] = iv; +break; +case 1073742327: +vout.addLast(Integer.$valueOf(iv)); +break; +case 160: +case 192: +sum2 += (iv) * iv; +case 128: +default: +sum += iv; +} +break; +case 2: +var s = atom.atomPropertyString(this.vwr, tok); +switch (minmaxtype) { +case 256: +fout[i] = JU.PT.parseFloat(s); +break; +default: +if (vout == null) return s; +vout.addLast(s); +} +break; +case 3: +var t = atom.atomPropertyTuple(this.vwr, tok, this.ptTemp); +switch (minmaxtype) { +case 256: +fout[i] = (pt == null ? -1 : t == null ? 0 : t.length()); +break; +case 1073742327: +vout.addLast(t == null ? Integer.$valueOf(-1) : JU.P3.newP(t)); +break; +default: +if (t == null) n--; + else pt.add(t); +} +break; +case 4: +switch (tok) { +case 1275203608: +info[0] = Integer.$valueOf(i); +info[1] = ""; +this.vwr.shm.getShapePropertyData(21, "info", info); +if (info[1] != null) { +if (vout == null) return info[1]; +vout.addLast(info[1]); +}break; +} +break; +case 5: +vout.addLast(ffdata[i]); +break; +} +if (haveIndex) break; +} +} else { +var isAll = (bs == null); +var i0 = (isAll ? 0 : bs.nextSetBit(0)); +var i1 = this.vwr.ms.bondCount; +for (var i = i0; i >= 0 && i < i1; i = (isAll ? i + 1 : bs.nextSetBit(i + 1))) { +n++; +var bond = modelSet.bo[i]; +switch (tok) { +case 1140850691: +var fv = bond.atom1.distance(bond.atom2); +switch (minmaxtype) { +case 32: +if (fv < fvMinMax) fvMinMax = fv; +break; +case 64: +if (fv > fvMinMax) fvMinMax = fv; +break; +case 1073742327: +vout.addLast(Float.$valueOf(fv)); +break; +case 160: +case 192: +sum2 += fv * fv; +case 128: +default: +sum += fv; +} +break; +case 1145047049: +switch (minmaxtype) { +case 1073742327: +pt.ave(bond.atom1, bond.atom2); +vout.addLast(JU.P3.newP(pt)); +break; +default: +pt.add(bond.atom1); +pt.add(bond.atom2); +n++; +} +break; +case 1765808134: +JU.CU.colorPtFromInt(this.vwr.gdata.getColorArgbOrGray(bond.colix), ptT); +switch (minmaxtype) { +case 1073742327: +vout.addLast(JU.P3.newP(ptT)); +break; +default: +pt.add(ptT); +} +break; +default: +this.errorStr(46, JS.T.nameOf(tok)); +} +} +}if (minmaxtype == 256) return fout; +if (minmaxtype == 1073742327) { +if (asVectorIfAll) { +if (isPivot) { +return this.getMathExt().getMinMax(vout, 1275068725, false); +}return vout; +}var len = vout.size(); +if ((isString || isHash) && !isExplicitlyAll && len == 1) return vout.get(0); +if (selectedFloat) { +fout = Clazz.newFloatArray (len, 0); +for (var i = len; --i >= 0; ) { +var v = vout.get(i); +switch (mode) { +case 0: +fout[i] = (v).floatValue(); +break; +case 1: +fout[i] = (v).floatValue(); +break; +case 2: +fout[i] = JU.PT.parseFloat(v); +break; +case 3: +fout[i] = (v == null ? -1 : (v).length()); +break; +} +} +return fout; +}if (tok == 1086324744) { +var sb = new JU.SB(); +for (var i = 0; i < len; i++) sb.append(vout.get(i)); + +return sb.toString(); +}var sout = new Array(len); +for (var i = len; --i >= 0; ) { +var v = vout.get(i); +if (Clazz.instanceOf(v,"JU.P3")) sout[i] = JU.Escape.eP(v); + else sout[i] = "" + vout.get(i); +} +return sout; +}if (isPt) return (n == 0 ? Integer.$valueOf(-1) : JU.P3.new3(pt.x / n, pt.y / n, pt.z / n)); +if (isHash) return new java.util.Hashtable(); +if (n == 0 || n == 1 && minmaxtype == 192) return Float.$valueOf(NaN); +if (isInt) { +switch (minmaxtype) { +case 32: +case 64: +return Integer.$valueOf(ivMinMax); +case 160: +case 192: +break; +case 128: +return Integer.$valueOf(Clazz.doubleToInt(sum)); +default: +if (sum / n == Clazz.doubleToInt(sum / n)) return Integer.$valueOf(Clazz.doubleToInt(sum / n)); +return Float.$valueOf((sum / n)); +} +}switch (minmaxtype) { +case 32: +case 64: +sum = fvMinMax; +break; +case 128: +break; +case 160: +sum = sum2; +break; +case 192: +sum = Math.sqrt((sum2 - sum * sum / n) / (n - 1)); +break; +default: +sum /= n; +break; +} +return Float.$valueOf(sum); +}, "JU.BS,JU.Lst,~N,JU.P3,JU.P4,~O,~O,~B,~N,~B"); +Clazz.defineMethod(c$, "bitSetForModelFileNumber", +function(m){ +var bs = JU.BS.newN(this.vwr.ms.ac); +if (this.chk) return bs; +var modelCount = this.vwr.ms.mc; +var haveFileSet = this.vwr.haveFileSet(); +if (m < 1000000 && haveFileSet) m *= 1000000; +var pt = m % 1000000; +if (pt == 0) { +var model1 = this.vwr.ms.getModelNumberIndex(m + 1, false, false); +if (model1 < 0) return bs; +var model2 = (m == 0 ? modelCount : this.vwr.ms.getModelNumberIndex(m + 1000001, false, false)); +if (model1 < 0) model1 = 0; +if (model2 < 0) model2 = modelCount; +if (this.vwr.ms.isTrajectory(model1)) model2 = model1 + 1; +for (var j = model1; j < model2; j++) bs.or(this.vwr.getModelUndeletedAtomsBitSet(j)); + +} else { +var modelIndex = this.vwr.ms.getModelNumberIndex(m, false, true); +if (modelIndex >= 0) bs.or(this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +}return bs; +}, "~N"); +Clazz.defineMethod(c$, "getStringObjectAsVariable", +function(obj){ +if (obj == null) return obj; +if ((typeof(obj)=='string')) { +var s = obj; +if (s.length == 0) return s; +return JS.SV.unescapePointOrBitsetAsVariable(s); +}var lst = obj; +if (lst.size() == 0) return ""; +var v0 = lst.get(0); +if (JS.SV.ptValue(v0) != null) return obj; +if (lst.get(0).asString().contains("|")) return this.vwr.ms.getAtoms(1086324744, JS.SV.newV(7, lst).asString()); +var bs = JS.SV.unEscapeBitSetArray(lst, true); +return (bs == null ? "" : bs); +}, "~O"); +Clazz.defineMethod(c$, "getAtomBits", +function(tokType, specInfo){ +return (this.chk ? new JU.BS() : this.vwr.ms.getAtoms(tokType, specInfo)); +}, "~N,~O"); +c$.getSeqCode = Clazz.defineMethod(c$, "getSeqCode", +function(instruction){ +return (instruction.intValue == 2147483647 ? (instruction.value).intValue() : JM.Group.getSeqcodeFor(instruction.intValue, ' ')); +}, "JS.T"); +Clazz.defineMethod(c$, "setVariable", +function(pt, ptMax, key, isSet){ +var bs = null; +var propertyName = ""; +var settingData = key.startsWith("property_"); +var isThrown = key.equals("thrown_value"); +var isExpression = (this.tokAt(1) == 1073742325 || this.tokAt(1) == 268435968); +var t = (settingData ? null : key.length == 0 ? new JS.SV() : this.getContextVariableAsVariable(key, false)); +if (isSet && !isExpression) { +switch (this.tokAt(2)) { +default: +pt = 2; +break; +case 268440324: +pt = 3; +break; +case 1073742195: +case 268437504: +if (this.st[0].intValue == 61) { +pt = 2; +break; +}case 1073742336: +case 1073742337: +key = null; +break; +} +}var nv = 0; +var v = this.parameterExpression(pt, ptMax, key, true, true, -1, false, null, null, isSet && pt == 1); +nv = v.size(); +if (nv == 0) this.invArg(); +if (this.chk || v.get(0).tok == 0) return null; +var tv = JS.SV.selectItemVar(JS.SV.copySafely(v.get(nv - 1))); +if (nv > 1) { +var sel = (nv > 2 ? v.get(1) : null); +t = v.get(0); +var selectOne = false; +switch (t.tok) { +case 6: +case 14: +if (nv > 3) this.invArg(); +t.mapPut(sel.asString(), tv); +break; +case 7: +if (nv > 2 + (sel == null ? 0 : 1)) this.invArg(); +if (sel == null) { +sel = t; +} else { +t = JS.SV.selectItemVar(t); +}selectOne = true; +break; +case 4: +if (sel.tok != 2) { +t.value = JU.PT.rep(t.asString(), sel.asString(), tv.asString()); +t.intValue = 2147483647; +break; +}case 11: +case 12: +if (t.intValue == 2147483647) selectOne = true; + else t.setSelectedValue(t.intValue, sel.asInt(), tv); +break; +case 8: +var p = (t.value = JU.P3.newP(t.value)); +var f = tv.asFloat(); +switch (JS.T.getTokFromName(sel.asString())) { +case 1111492629: +p.x = f; +break; +case 1111492630: +p.y = f; +break; +case 1111492631: +p.z = f; +break; +} +break; +case 10: +bs = JS.SV.getBitSet(t, true); +var nAtoms = this.vwr.ms.ac; +var nbs = bs.cardinality(); +propertyName = sel.asString(); +var tok = JS.T.getTokFromName(propertyName); +switch (tok) { +case 0: +if (propertyName.startsWith("property_")) { +var obj; +if (tv.tok == 7) { +var nmin = (tv.getList().size() == nbs ? nbs : nAtoms); +obj = (JS.SV.getArrayDepth(tv) > 1 ? JS.SV.fflistValue(tv, nmin) : JS.SV.flistValue(tv, nmin)); +} else { +obj = tv.asString(); +}this.vwr.setData(propertyName, Clazz.newArray(-1, [propertyName, obj, JU.BSUtil.copy(bs), Integer.$valueOf(-1)]), nAtoms, 0, 0, tv.tok == 7 ? 2147483647 : -2147483648, 0); +break; +}this.iToken = pt; +this.error(56); +break; +case 1825200146: +case 1287653388: +this.vwr.shm.loadShape(5); +default: +this.setBitsetProperty(bs, tok, tv.asInt(), tv.asFloat(), tv); +break; +} +break; +} +if (selectOne) t.setSelectedValue(sel.intValue, 2147483647, tv); +return null; +}var needVariable = (!settingData && t == null && (isThrown || !((typeof(tv.value)=='string') || tv.tok == 2 || Clazz.instanceOf(tv.value, Integer) || Clazz.instanceOf(tv.value, Float) || Clazz.instanceOf(tv.value, Boolean)))); +if (needVariable && key != null) { +if (key.startsWith("_") || (t = this.vwr.g.getAndSetNewVariable(key, true)) == null) this.errorStr(22, key); +}if (t != null) return t.setv(tv); +var vv = JS.SV.oValue(tv); +if (settingData) { +if (tv.tok == 7) vv = tv.asString(); +this.vwr.setData(key, Clazz.newArray(-1, [key, "" + vv, JU.BSUtil.copy(this.vwr.bsA()), Integer.$valueOf(0)]), this.vwr.ms.ac, 0, 0, -2147483648, 0); +return null; +}if (Clazz.instanceOf(vv, Boolean)) { +this.setBooleanProperty(key, (vv).booleanValue()); +} else if (Clazz.instanceOf(vv, Integer)) { +this.setIntProperty(key, (vv).intValue()); +} else if (Clazz.instanceOf(vv, Float)) { +this.setFloatProperty(key, (vv).floatValue()); +} else if ((typeof(vv)=='string')) { +this.setStringProperty(key, vv); +} else { +}return tv; +}, "~N,~N,~S,~B"); +Clazz.defineMethod(c$, "setBitsetProperty", +function(bs, tok, iValue, fValue, tokenValue){ +if (this.chk || bs.isEmpty()) return; +var list = null; +var sValue = null; +var fvalues = null; +var pt; +var sv = null; +var nValues = 0; +var isStrProperty = JS.T.tokAttr(tok, 1086324736); +if (tokenValue.tok == 7) { +sv = (tokenValue).getList(); +if ((nValues = sv.size()) == 0) return; +}switch (tok) { +case 1145047049: +case 1145047050: +case 1145047053: +case 1145047055: +switch (tokenValue.tok) { +case 8: +this.vwr.setAtomCoords(bs, tok, tokenValue.value); +break; +case 7: +this.theToken = tokenValue; +this.vwr.setAtomCoords(bs, tok, this.getPointArray(-1, nValues, true)); +break; +} +return; +case 1765808134: +var value = null; +var prop = "color"; +switch (tokenValue.tok) { +case 7: +var values = Clazz.newIntArray (nValues, 0); +for (var i = nValues; --i >= 0; ) { +var svi = sv.get(i); +pt = JS.SV.ptValue(svi); +if (pt != null) { +values[i] = JU.CU.colorPtToFFRGB(pt); +} else if (svi.tok == 2) { +values[i] = svi.intValue; +} else { +values[i] = JU.CU.getArgbFromString(svi.asString()); +if (values[i] == 0) values[i] = svi.asInt(); +}if (values[i] == 0) this.errorStr2(50, "ARRAY", svi.asString()); +} +value = values; +prop = "colorValues"; +break; +case 8: +value = Integer.$valueOf(JU.CU.colorPtToFFRGB(tokenValue.value)); +break; +case 4: +value = tokenValue.value; +break; +default: +value = Integer.$valueOf(JS.SV.iValue(tokenValue)); +break; +} +(this).setAtomProp(prop, value, bs); +return; +case 1825200146: +case 1287653388: +if (tokenValue.tok != 7) sValue = JS.SV.sValue(tokenValue); +break; +case 1086326789: +case 1094715402: +(this).clearDefinedVariableAtomSets(); +isStrProperty = false; +break; +} +switch (tokenValue.tok) { +case 7: +if (isStrProperty) list = JS.SV.strListValue(tokenValue); + else fvalues = JS.SV.flistValue(tokenValue, nValues); +break; +case 4: +if (sValue == null) list = JU.PT.getTokens(JS.SV.sValue(tokenValue)); +break; +} +if (list != null) { +nValues = list.length; +if (!isStrProperty) { +fvalues = Clazz.newFloatArray (nValues, 0); +for (var i = nValues; --i >= 0; ) fvalues[i] = (tok == 1086326789 ? JU.Elements.elementNumberFromSymbol(list[i], false) : JU.PT.parseFloat(list[i])); + +}if (tokenValue.tok != 7 && nValues == 1) { +if (isStrProperty) sValue = list[0]; + else fValue = fvalues[0]; +iValue = Clazz.floatToInt(fValue); +list = null; +fvalues = null; +}}if (!JS.T.tokAttr(tok, 2048)) this.error(56); +this.vwr.setAtomProperty(bs, tok, iValue, fValue, sValue, fvalues, list); +}, "JU.BS,~N,~N,~N,JS.T"); +Clazz.defineMethod(c$, "setStatement", +function(st0, pt0){ +this.st = st0; +this.slen = this.st.length; +if (this.slen == 0) return true; +var fixed; +var i; +var tok; +for (i = pt0; i < this.slen; i++) { +if (this.st[i] == null) { +this.slen = i; +return true; +}if (this.st[i].tok == 12290) break; +} +if (i == this.slen || this.chk) return i == this.slen; +switch (this.st[0].tok) { +case 102436: +case 134320141: +case 1073741824: +if (this.tokAt(1) == 268435968) return true; +} +fixed = new Array(this.slen); +fixed[0] = this.st[0]; +var isExpression = false; +var j = pt0; +for (i = pt0; i < this.slen; i++) { +if (this.st[i] == null) continue; +switch (tok = this.getToken(i).tok) { +default: +fixed[j] = this.st[i]; +break; +case 1073742325: +case 1073742326: +isExpression = (tok == 1073742325); +fixed[j] = this.st[i]; +break; +case 12290: +if (++i == this.slen) this.invArg(); +var v; +var forceString = (this.theToken.intValue == 4); +var s; +var $var = this.paramAsStr(i); +var isClauseDefine = (this.tokAt(i) == 1073742325); +var isSetAt = (pt0 == 1 && j == 1 && this.st[0] === JS.T.tokenSetCmd); +if (isClauseDefine) { +var vt = this.parameterExpressionToken(++i); +if (this.chk) { +v = null; +} else if (vt.tok != 7) { +v = JS.SV.oValue(vt); +} else if (!isExpression) { +v = vt; +} else { +var bs = JS.SV.getBitSet(vt, true); +if (bs == null) { +var sv = JS.SV.sValue(vt); +v = (sv.indexOf("|") < 0 ? this.getAtomBitSet(sv) : sv); +} else { +v = bs; +}}i = this.iToken; +} else if (this.chk) { +v = new JU.BS(); +} else { +if (this.tokAt(i) == 2) { +v = this.vwr.ms.getAtoms(1094715393, Integer.$valueOf(this.st[i].intValue)); +} else if (this.tokAt(i) == 12290 && this.tokAt(i + 1) == 2) { +v = this.vwr.ms.getAtomsFromAtomNumberInFrame(this.st[++i].intValue); +} else { +v = this.getParameter($var, 0, true); +}if (!isExpression && !isSetAt) isClauseDefine = true; +}tok = this.tokAt(0); +forceString = new Boolean (forceString | (JS.T.tokAttr(tok, 20480) || tok == 134222850)).valueOf(); +if (v == null) { +fixed[j] = JS.T.tokenAll; +} else if (Clazz.instanceOf(v,"JS.SV")) { +fixed[j] = v; +} else if (Clazz.instanceOf(v, Boolean)) { +fixed[j] = ((v).booleanValue() ? JS.T.tokenOn : JS.T.tokenOff); +} else if (Clazz.instanceOf(v, Integer)) { +fixed[j] = JS.T.tv(2, (v).intValue(), v); +} else if (Clazz.instanceOf(v, Float)) { +fixed[j] = JS.T.tv(3, JU.Edge.getFloatEncodedInt("" + v), v); +} else if ((typeof(v)=='string')) { +if (!forceString && !isExpression) { +if ((tok != 36867 || j > 1 && this.st[1].tok != 537022465 && !"labelfor".equalsIgnoreCase(this.st[1].value.toString())) && JS.T.tokAttr(tok, 36864)) { +v = this.getParameter(v, 1073742190, true); +}if ((typeof(v)=='string')) { +v = this.getStringObjectAsVariable(v); +}}if (Clazz.instanceOf(v,"JS.SV")) { +fixed[j] = v; +} else { +s = v; +if (isExpression && !forceString) { +fixed[j] = (s.indexOf("|") >= 0 || JS.T.tokAttr(fixed[j - 1].tok, 268435712) ? JS.T.o(4, s) : JS.T.o(10, this.getAtomBitSet(s))); +} else { +tok = (isSetAt ? JS.T.getTokFromName(s) : isClauseDefine || forceString || s.length == 0 || s.indexOf(".") >= 0 || s.indexOf(" ") >= 0 || s.indexOf("=") >= 0 || s.indexOf(";") >= 0 || s.indexOf("[") >= 0 || s.indexOf("{") >= 0 ? 4 : 1073741824); +fixed[j] = JS.T.o(tok, v); +}}} else if (Clazz.instanceOf(v,"JU.BArray")) { +fixed[j] = JS.SV.newV(15, v); +} else if (Clazz.instanceOf(v,"JU.BS")) { +fixed[j] = JS.SV.newV(10, v); +} else if (Clazz.instanceOf(v,"JU.P3")) { +fixed[j] = JS.SV.newV(8, v); +} else if (Clazz.instanceOf(v,"JU.P4")) { +fixed[j] = JS.SV.newV(9, v); +} else if (Clazz.instanceOf(v,"JU.M34")) { +fixed[j] = JS.SV.newV(Clazz.instanceOf(v,"JU.M4") ? 12 : 11, v); +} else if (Clazz.instanceOf(v,"java.util.Map") || Clazz.instanceOf(v,"JS.ScriptContext") && (v = (v).getFullMap()) != null) { +fixed[j] = JS.SV.newV(6, (isExpression ? v : JS.SV.deepCopy(v, true, true))); +} else if (Clazz.instanceOf(v,"JU.Lst")) { +if (!isExpression) { +fixed[j] = JS.SV.newV(7, JS.SV.deepCopy(v, false, true)); +break; +}var sv = v; +var bs = null; +for (var k = 0; k < sv.size(); k++) { +var svk = sv.get(k); +if (svk.tok != 10) { +bs = null; +break; +}if (bs == null) bs = new JU.BS(); +bs.or(svk.value); +} +fixed[j] = (bs == null ? JS.SV.getVariable(v) : JS.T.o(10, bs)); +} else { +var center = (this).getObjectCenter($var, -2147483648, -2147483648); +if (center == null) this.invArg(); +fixed[j] = JS.T.o(8, center); +}if (isSetAt && !JS.T.tokAttr(fixed[j].tok, 536870912)) this.invArg(); +break; +} +j++; +} +this.st = fixed; +for (i = j; i < this.st.length; i++) this.st[i] = null; + +this.slen = j; +return true; +}, "~A,~N"); +Clazz.defineMethod(c$, "isFunction", +function(sf){ +return (this.getFunction(sf) != null); +}, "~S"); +Clazz.defineMethod(c$, "addFunction", +function(f){ +if (f == null || f.isPrivate) { +if (this.privateFuncs == null) this.privateFuncs = new java.util.Hashtable(); +if (f != null) this.privateFuncs.put(f.name, f); +} else { +this.vwr.addFunction(f); +}}, "JS.ScriptFunction"); +Clazz.defineMethod(c$, "getFunction", +function(sf){ +var f = (this.privateFuncs == null ? null : this.privateFuncs.get(sf)); +return (f == null ? this.vwr.getFunction(sf) : f); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptExt.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptExt.js new file mode 100755 index 000000000000..f5311b5b4903 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptExt.js @@ -0,0 +1,185 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.ScriptExt", ["JU.AU"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.e = null; +this.chk = false; +this.st = null; +this.slen = 0; +Clazz.instantialize(this, arguments);}, JS, "ScriptExt", null); +Clazz.defineMethod(c$, "init", +function(eval){ +this.e = eval; +this.vwr = this.e.vwr; +return this; +}, "~O"); +Clazz.defineMethod(c$, "atomExpressionAt", +function(i){ +return this.e.atomExpressionAt(i); +}, "~N"); +Clazz.defineMethod(c$, "checkLength", +function(i){ +this.e.checkLength(i); +}, "~N"); +Clazz.defineMethod(c$, "error", +function(err){ +this.e.error(err); +}, "~N"); +Clazz.defineMethod(c$, "invArg", +function(){ +this.e.invArg(); +}); +Clazz.defineMethod(c$, "invPO", +function(){ +this.error(23); +}); +Clazz.defineMethod(c$, "getShapeProperty", +function(shapeType, propertyName){ +return this.e.getShapeProperty(shapeType, propertyName); +}, "~N,~S"); +Clazz.defineMethod(c$, "paramAsStr", +function(i){ +return this.e.paramAsStr(i); +}, "~N"); +Clazz.defineMethod(c$, "centerParameter", +function(i){ +return this.e.centerParameter(i, null); +}, "~N"); +Clazz.defineMethod(c$, "floatParameter", +function(i){ +return this.e.floatParameter(i); +}, "~N"); +Clazz.defineMethod(c$, "getPoint3f", +function(i, allowFractional){ +return this.e.getPoint3f(i, allowFractional, true); +}, "~N,~B"); +Clazz.defineMethod(c$, "intParameter", +function(index){ +return this.e.intParameter(index); +}, "~N"); +Clazz.defineMethod(c$, "isFloatParameter", +function(index){ +switch (this.e.tokAt(index)) { +case 2: +case 3: +return true; +} +return false; +}, "~N"); +Clazz.defineMethod(c$, "setShapeProperty", +function(shapeType, propertyName, propertyValue){ +this.e.setShapeProperty(shapeType, propertyName, propertyValue); +}, "~N,~S,~O"); +Clazz.defineMethod(c$, "showString", +function(s){ +this.e.showString(s); +}, "~S"); +Clazz.defineMethod(c$, "stringParameter", +function(index){ +return this.e.stringParameter(index); +}, "~N"); +Clazz.defineMethod(c$, "getToken", +function(i){ +return this.e.getToken(i); +}, "~N"); +Clazz.defineMethod(c$, "tokAt", +function(i){ +return this.e.tokAt(i); +}, "~N"); +Clazz.defineMethod(c$, "setShapeId", +function(iShape, i, idSeen){ +if (idSeen) this.invArg(); +var name = this.e.setShapeNameParameter(i).toLowerCase(); +this.setShapeProperty(iShape, "thisID", name); +return name; +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "getColorTrans", +function(eval, i, allowNone, ret){ +var translucentLevel = 3.4028235E38; +if (eval.theTok != 1765808134) --i; +switch (this.tokAt(i + 1)) { +case 603979967: +i++; +translucentLevel = (this.isFloatParameter(i + 1) ? eval.getTranslucentLevel(++i) : this.vwr.getFloat(570425353)); +break; +case 1073742074: +i++; +translucentLevel = 0; +break; +} +if (eval.isColorParam(i + 1)) { +ret[0] = eval.getArgbParam(++i); +} else if (this.tokAt(i + 1) == 1073742333) { +ret[0] = 0; +eval.iToken = i + 1; +} else if (translucentLevel == 3.4028235E38) { +this.invArg(); +} else { +ret[0] = -2147483648; +}i = eval.iToken; +return translucentLevel; +}, "JS.ScriptEval,~N,~B,~A"); +Clazz.defineMethod(c$, "finalizeObject", +function(shapeID, colorArgb, translucentLevel, intScale, doSet, data, iptDisplayProperty, bs){ +if (doSet) { +this.setShapeProperty(shapeID, "set", data); +}if (colorArgb != -2147483648) this.e.setShapePropertyBs(shapeID, "color", Integer.$valueOf(colorArgb), bs); +if (translucentLevel != 3.4028235E38) this.e.setShapeTranslucency(shapeID, "", "translucent", translucentLevel, bs); +if (intScale != 0) { +this.setShapeProperty(shapeID, "scale", Integer.$valueOf(intScale)); +}if (iptDisplayProperty < 0) { +iptDisplayProperty = -1 - iptDisplayProperty; +this.setShapeProperty(shapeID, "token", Integer.$valueOf(1073742018)); +this.setShapeProperty(shapeID, "token", Integer.$valueOf(1073742046)); +}if (iptDisplayProperty > 0) { +if (!this.e.setMeshDisplayProperty(shapeID, iptDisplayProperty, 0)) this.invArg(); +}}, "~N,~N,~N,~N,~B,~O,~N,JU.BS"); +Clazz.defineMethod(c$, "getIntArray2", +function(i){ +var list = (this.e.getToken(i)).getList(); +var faces = JU.AU.newInt2(list.size()); +for (var vi = faces.length; --vi >= 0; ) { +var face = list.get(vi).getList(); +if (face == null) this.invArg(); +faces[vi] = Clazz.newIntArray (face.size(), 0); +for (var vii = faces[vi].length; --vii >= 0; ) faces[vi][vii] = face.get(vii).intValue; + +} +return faces; +}, "~N"); +Clazz.defineMethod(c$, "getAllPoints", +function(index, nmin){ +var points = null; +var bs = null; +try { +switch (this.e.tokAt(index)) { +case 7: +points = this.e.getPointArray(index, -1, false); +break; +case 12290: +case 10: +case 1073742325: +bs = this.atomExpressionAt(index); +break; +} +if (points == null) { +if (bs == null) bs = this.vwr.getAllAtoms(); +points = this.bsToArray(bs); +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (points == null || points.length < nmin) this.invArg(); +return points; +}, "~N,~N"); +Clazz.defineMethod(c$, "bsToArray", +function(bs){ +var p = new Array(bs.cardinality()); +for (var i = bs.nextSetBit(0), pt = 0; i >= 0; i = bs.nextSetBit(i + 1)) p[pt++] = this.vwr.ms.at[i]; + +return p; +}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptFlowContext.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptFlowContext.js new file mode 100755 index 000000000000..f923b434ffa8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptFlowContext.js @@ -0,0 +1,80 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.ScriptFlowContext", ["JS.ScriptCompiler"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.compiler = null; +this.token = null; +this.pt0 = 0; +this.ptDefault = 0; +this.$function = null; +this.$var = null; +this.parent = null; +this.lineStart = 0; +this.commandStart = 0; +this.ptLine = 0; +this.ptCommand = 0; +this.forceEndIf = true; +this.ident = null; +this.addLine = 0; +this.tok0 = 0; +this.ichCommand = 0; +this.line0 = 0; +Clazz.instantialize(this, arguments);}, JS, "ScriptFlowContext", null); +Clazz.makeConstructor(c$, +function(compiler, token, pt0, parent, ich, line0){ +this.compiler = compiler; +this.token = token; +this.tok0 = token.tok; +this.ident = token.value; +this.pt0 = pt0; +this.line0 = line0; +this.parent = parent; +this.ichCommand = ich; +this.lineStart = this.ptLine = this.compiler.lineCurrent; +this.commandStart = this.ptCommand = this.compiler.iCommand; +}, "JS.ScriptCompiler,JS.ContextToken,~N,JS.ScriptFlowContext,~N,~N"); +Clazz.defineMethod(c$, "getBreakableContext", +function(nLevelsUp){ +var f = this; +while (f != null && (!JS.ScriptCompiler.isBreakableContext(f.token.tok) || nLevelsUp-- > 0)) f = f.parent; + +return f; +}, "~N"); +Clazz.defineMethod(c$, "checkForceEndIf", +function(offset){ +if (this.ptCommand == this.compiler.iCommand && this.addLine > 0) this.addLine++; +var test = this.forceEndIf && this.ptCommand < this.compiler.iCommand && this.ptLine + (this.addLine == 0 ? 0 : this.addLine + offset) == this.compiler.lineCurrent; +if (test) this.forceEndIf = false; +return test; +}, "~N"); +Clazz.defineMethod(c$, "setPt0", +function(pt0, isDefault){ +this.pt0 = pt0; +if (isDefault) this.ptDefault = pt0; +this.setLine(); +return pt0; +}, "~N,~B"); +Clazz.defineMethod(c$, "setLine", +function(){ +this.ptLine = this.compiler.lineCurrent; +this.ptCommand = this.compiler.iCommand + 1; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return "ident " + this.ident + " line " + this.lineStart + " command " + this.commandStart; +}); +Clazz.defineMethod(c$, "path", +function(){ +var s = ""; +var f = this; +while (f != null) { +s = f.ident + "-" + s; +f = f.parent; +} +return "[" + s + "]"; +}); +Clazz.defineMethod(c$, "setFunction", +function($function){ +this.$function = $function; +}, "JS.ScriptFunction"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptFunction.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptFunction.js new file mode 100755 index 000000000000..49eab9681006 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptFunction.js @@ -0,0 +1,133 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.api.JmolScriptFunction", "java.util.Hashtable", "JU.Lst"], "JS.ScriptFunction", ["JU.AU", "$.SB", "JS.SV", "$.T"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pt0 = 0; +this.chpt0 = 0; +this.cmdpt0 = -1; +this.typeName = null; +this.name = null; +this.nParameters = 0; +this.names = null; +this.tok = 0; +this.variables = null; +this.returnValue = null; +this.aatoken = null; +this.lineIndices = null; +this.lineNumbers = null; +this.script = null; +this.isPrivate = false; +Clazz.instantialize(this, arguments);}, JS, "ScriptFunction", null, J.api.JmolScriptFunction); +Clazz.prepareFields (c$, function(){ +this.names = new JU.Lst(); +this.variables = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.makeConstructor(c$, +function(name, tok){ +this.set(name, tok); +this.typeName = JS.T.nameOf(tok); +}, "~S,~N"); +Clazz.defineMethod(c$, "isVariable", +function(ident){ +return this.variables.containsKey(ident); +}, "~S"); +Clazz.defineMethod(c$, "set", +function(name, tok){ +this.name = name; +this.tok = tok; +}, "~S,~N"); +Clazz.defineMethod(c$, "setVariables", +function(contextVariables, params){ +var nParams = (params == null ? 0 : params.size()); +for (var i = this.names.size(); --i >= 0; ) { +var name = this.names.get(i).toLowerCase(); +var $var = (i < this.nParameters && i < nParams ? params.get(i) : null); +if ($var != null && $var.tok != 7) $var = JS.SV.newT($var); +contextVariables.put(name, ($var == null ? JS.SV.newS("").setName(name) : $var)); +} +if (this.tok != 364558) { +contextVariables.put("_argcount", JS.SV.newI(params == null ? 0 : params.size())); +contextVariables.put("_arguments", (params == null ? JS.SV.getVariableAI( Clazz.newIntArray(-1, [])) : JS.SV.getVariableList(params))); +}contextVariables.put("_retval", JS.SV.newI(this.tok == 364558 ? 2147483647 : 0)); +}, "java.util.Map,JU.Lst"); +Clazz.defineMethod(c$, "unsetVariables", +function(contextVariables, params){ +var nParams = (params == null ? 0 : params.size()); +var nNames = this.names.size(); +if (nParams == 0 || nNames == 0) return; +for (var i = 0; i < nNames && i < nParams; i++) { +var global = params.get(i); +if (global.tok != 7) continue; +var local = contextVariables.get(this.names.get(i).toLowerCase()); +if (local.tok != 7) continue; +global.value = local.value; +} +}, "java.util.Map,JU.Lst"); +Clazz.defineMethod(c$, "addVariable", +function(name, isParameter){ +this.variables.put(name, name); +this.names.addLast(name); +if (isParameter) this.nParameters++; +}, "~S,~B"); +c$.setFunction = Clazz.defineMethod(c$, "setFunction", +function($function, script, ichCurrentCommand, pt, lineNumbers, lineIndices, lltoken){ +var cmdpt0 = $function.cmdpt0; +var chpt0 = $function.chpt0; +var nCommands = pt - cmdpt0; +$function.setScript(script.substring(chpt0, ichCurrentCommand)); +var aatoken = $function.aatoken = new Array(nCommands); +$function.lineIndices = JU.AU.newInt2(nCommands); +$function.lineNumbers = Clazz.newShortArray (nCommands, 0); +var line0 = (lineNumbers[cmdpt0] - 1); +for (var i = 0; i < nCommands; i++) { +$function.lineNumbers[i] = (lineNumbers[cmdpt0 + i] - line0); +$function.lineIndices[i] = Clazz.newIntArray(-1, [lineIndices[cmdpt0 + i][0] - chpt0, lineIndices[cmdpt0 + i][1] - chpt0]); +aatoken[i] = lltoken.get(cmdpt0 + i); +if (aatoken[i].length > 0) { +var tokenCommand = aatoken[i][0]; +if (JS.T.tokAttr(tokenCommand.tok, 102400)) tokenCommand.intValue -= (tokenCommand.intValue < 0 ? -cmdpt0 : cmdpt0); +}} +for (var i = pt; --i >= cmdpt0; ) { +lltoken.removeItemAt(i); +lineIndices[i][0] = lineIndices[i][1] = 0; +} +}, "JS.ScriptFunction,~S,~N,~N,~A,~A,JU.Lst"); +Clazz.defineMethod(c$, "setScript", +function(s){ +this.script = s; +if (this.script != null && this.script !== "" && !this.script.endsWith("\n")) this.script += "\n"; +}, "~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +var s = new JU.SB().append("/*\n * ").append(this.name).append("\n */\n").append(this.getSignature()).append(" {\n"); +if (this.script != null) s.append(this.script); +s.append("}\n"); +return s.toString(); +}); +Clazz.overrideMethod(c$, "getSignature", +function(){ +if (this.typeName == null) return JS.T.nameOf(this.tok); +var s = new JU.SB().append(this.typeName).append(" ").append(this.name).append("("); +for (var i = 0; i < this.nParameters; i++) { +if (i > 0) s.append(", "); +s.append(this.names.get(i)); +} +s.append(")"); +return s.toString(); +}); +Clazz.overrideMethod(c$, "geTokens", +function(){ +return this.aatoken; +}); +Clazz.overrideMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz.overrideMethod(c$, "getTok", +function(){ +return this.tok; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptInterruption.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptInterruption.js new file mode 100755 index 000000000000..e78bf8bb5e11 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptInterruption.js @@ -0,0 +1,10 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.ScriptException"], "JS.ScriptInterruption", null, function(){ +var c$ = Clazz.declareType(JS, "ScriptInterruption", JS.ScriptException); +Clazz.makeConstructor(c$, +function(eval, why, millis){ +Clazz.superConstructor(this, JS.ScriptInterruption, [eval, why, "!", millis == -2147483648 || eval.vwr.autoExit]); +if (why.equals("delay")) eval.delayScript(millis); +}, "JS.ScriptEval,~S,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptManager.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptManager.js new file mode 100755 index 000000000000..428cf70bef49 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptManager.js @@ -0,0 +1,521 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.api.JmolScriptManager", "JU.Lst"], "JS.ScriptManager", ["java.util.Hashtable", "JU.AU", "$.PT", "$.Rdr", "$.SB", "J.api.Interface", "J.i18n.GT", "JS.ScriptQueueThread", "JU.Elements", "$.Logger", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.eval = null; +this.evalTemp = null; +this.queueThreads = null; +this.scriptQueueRunning = null; +this.commandWatcherThread = null; +this.scriptQueue = null; +this.useCommandWatcherThread = false; +this.scriptIndex = 0; +this.$isScriptQueued = true; +Clazz.instantialize(this, arguments);}, JS, "ScriptManager", null, J.api.JmolScriptManager); +Clazz.prepareFields (c$, function(){ +this.queueThreads = new Array(2); +this.scriptQueueRunning = Clazz.newBooleanArray(2, false); +this.scriptQueue = new JU.Lst(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "getScriptQueue", +function(){ +return this.scriptQueue; +}); +Clazz.overrideMethod(c$, "isScriptQueued", +function(){ +return this.$isScriptQueued; +}); +Clazz.overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +this.eval = this.newScriptEvaluator(); +this.eval.setCompiler(); +return this.eval; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "newScriptEvaluator", +function(){ +return (J.api.Interface.getInterface("JS.ScriptEval", this.vwr, "setOptions")).setViewer(this.vwr); +}); +Clazz.overrideMethod(c$, "clear", +function(isAll){ +if (!isAll) { +this.evalTemp = null; +return; +}this.startCommandWatcher(false); +this.interruptQueueThreads(); +}, "~B"); +Clazz.defineMethod(c$, "addScript", +function(strScript, params, isQuiet){ +return this.addScr("String", strScript, params, "", isQuiet); +}, "~S,~A,~B"); +Clazz.defineMethod(c$, "addScr", +function(returnType, strScript, params, statusList, isQuiet){ +{ +this.useCommandWatcherThread = false; +}if (!this.vwr.g.useScriptQueue) { +this.clearQueue(); +this.vwr.haltScriptExecution(); +}if (this.commandWatcherThread == null && this.useCommandWatcherThread) this.startCommandWatcher(true); +if (this.commandWatcherThread != null && strScript.indexOf("/*SPLIT*/") >= 0) { +var scripts = JU.PT.split(strScript, "/*SPLIT*/"); +for (var i = 0; i < scripts.length; i++) this.addScr(returnType, scripts[i], params, statusList, isQuiet); + +return "split into " + scripts.length + " sections for processing"; +}var useCommandThread = (this.commandWatcherThread != null && (strScript.indexOf("javascript") < 0 || strScript.indexOf("#javascript ") >= 0)); +var scriptItem = new JU.Lst(); +scriptItem.addLast(strScript); +scriptItem.addLast(statusList); +scriptItem.addLast(returnType); +scriptItem.addLast(isQuiet ? Boolean.TRUE : Boolean.FALSE); +scriptItem.addLast(Integer.$valueOf(useCommandThread ? -1 : 1)); +scriptItem.addLast(params); +this.scriptQueue.addLast(scriptItem); +this.startScriptQueue(false); +return "pending"; +}, "~S,~S,~A,~S,~B"); +Clazz.overrideMethod(c$, "clearQueue", +function(){ +this.scriptQueue.clear(); +}); +Clazz.overrideMethod(c$, "waitForQueue", +function(){ +if (this.vwr.isSingleThreaded) return; +var n = 0; +while (this.isQueueProcessing()) { +try { +Thread.sleep(100); +if (((n++) % 10) == 0) if (JU.Logger.debugging) { +JU.Logger.debug("...scriptManager waiting for queue: " + this.scriptQueue.size() + " thread=" + Thread.currentThread().getName()); +}} catch (e) { +if (Clazz.exceptionOf(e,"InterruptedException")){ +} else { +throw e; +} +} +} +}); +Clazz.overrideMethod(c$, "isQueueProcessing", +function(){ +return this.queueThreads[0] != null || this.queueThreads[1] != null; +}); +Clazz.defineMethod(c$, "flushQueue", +function(command){ +for (var i = this.scriptQueue.size(); --i >= 0; ) { +var strScript = (this.scriptQueue.get(i).get(0)); +if (strScript.indexOf(command) == 0) { +this.scriptQueue.removeItemAt(i); +if (JU.Logger.debugging) JU.Logger.debug(this.scriptQueue.size() + " scripts; removed: " + strScript); +}} +}, "~S"); +Clazz.defineMethod(c$, "startScriptQueue", +function(startedByCommandWatcher){ +var pt = (startedByCommandWatcher ? 1 : 0); +if (this.scriptQueueRunning[pt]) return; +this.scriptQueueRunning[pt] = true; +this.queueThreads[pt] = new JS.ScriptQueueThread(this, this.vwr, startedByCommandWatcher, pt); +this.queueThreads[pt].start(); +}, "~B"); +Clazz.overrideMethod(c$, "getScriptItem", +function(watching, isByCommandWatcher){ +if (this.vwr.isSingleThreaded && this.vwr.queueOnHold) return null; +var scriptItem = this.scriptQueue.get(0); +var flag = ((scriptItem.get(4)).intValue()); +var isOK = (watching ? flag < 0 : isByCommandWatcher ? flag == 0 : flag == 1); +return (isOK ? scriptItem : null); +}, "~B,~B"); +Clazz.overrideMethod(c$, "startCommandWatcher", +function(isStart){ +this.useCommandWatcherThread = isStart; +if (isStart) { +if (this.commandWatcherThread != null) return; +this.commandWatcherThread = J.api.Interface.getInterface("JS.CommandWatcherThread", this.vwr, "setOptions"); +this.commandWatcherThread.setManager(this, this.vwr, null); +this.commandWatcherThread.start(); +} else { +if (this.commandWatcherThread == null) return; +this.clearCommandWatcherThread(); +}if (JU.Logger.debugging) { +JU.Logger.debug("command watcher " + (isStart ? "started" : "stopped") + this.commandWatcherThread); +}}, "~B"); +Clazz.defineMethod(c$, "interruptQueueThreads", +function(){ +for (var i = 0; i < this.queueThreads.length; i++) { +if (this.queueThreads[i] != null) this.queueThreads[i].interrupt(); +} +}); +Clazz.defineMethod(c$, "clearCommandWatcherThread", +function(){ +if (this.commandWatcherThread == null) return; +this.commandWatcherThread.interrupt(); +this.commandWatcherThread = null; +}); +Clazz.overrideMethod(c$, "queueThreadFinished", +function(pt){ +if (pt < 0) { +this.queueThreadFinished(0); +this.queueThreadFinished(1); +return; +}if (this.queueThreads[pt] == null) return; +this.queueThreads[pt].interrupt(); +this.scriptQueueRunning[pt] = false; +this.queueThreads[pt] = null; +this.vwr.setSyncDriver(4); +this.vwr.queueOnHold = false; +}, "~N"); +Clazz.defineMethod(c$, "runScriptNow", +function(){ +if (this.scriptQueue.size() > 0) { +var scriptItem = this.getScriptItem(true, true); +if (scriptItem != null) { +scriptItem.set(4, Integer.$valueOf(0)); +this.startScriptQueue(true); +}}}); +Clazz.overrideMethod(c$, "evalFile", +function(strFilename){ +return this.evalFileArgs(strFilename, null); +}, "~S"); +Clazz.overrideMethod(c$, "evalFileArgs", +function(strFilename, args){ +var ptWait = strFilename.indexOf(" -noqueue"); +if (ptWait >= 0) { +return this.evalStringWaitStatusQueued("String", "script " + JU.PT.esc(strFilename.substring(0, ptWait)), "", false, false); +}return this.addScript("script " + JU.PT.esc(strFilename) + (args == null ? "" : "(" + args + ")"), null, false); +}, "~S,~S"); +Clazz.overrideMethod(c$, "evalStringWaitStatusQueued", +function(returnType, strScript, statusList, isQuiet, isQueued){ +return this.evalStringWaitParamsStatusQueued(returnType, strScript, null, statusList, isQuiet, isQueued); +}, "~S,~S,~S,~B,~B"); +Clazz.defineMethod(c$, "evalStringWaitParamsStatusQueued", +function(returnType, strScript, params, statusList, isQuiet, isQueued){ +if (strScript == null) return null; +var str = this.checkScriptExecution(strScript, false); +if (str != null) return str; +if (this.vwr.checkConsoleScript(strScript)) return null; +var outputBuffer = (statusList == null || statusList.equals("output") ? new JU.SB() : null); +var oldStatusList = this.vwr.sm.statusList; +this.vwr.getStatusChanged(statusList); +if (this.vwr.isSyntaxCheck) JU.Logger.info("--checking script:\n" + this.eval.getScript() + "\n----\n"); +var historyDisabled = (strScript.indexOf(")") == 0); +if (historyDisabled) strScript = strScript.substring(1); +historyDisabled = historyDisabled || !isQueued; +this.vwr.setErrorMessage(null, null); +var eval = (isQueued && params == null ? this.eval : this.newScriptEvaluator()); +var isOK = eval.compileScriptString(strScript, isQuiet); +var strErrorMessage = eval.getErrorMessage(); +var strErrorMessageUntranslated = eval.getErrorMessageUntranslated(); +this.vwr.setErrorMessage(strErrorMessage, strErrorMessageUntranslated); +this.vwr.refresh(7, "script complete"); +if (isOK) { +this.$isScriptQueued = isQueued; +if (!isQuiet) this.vwr.setScriptStatus(null, strScript, -2 - (++this.scriptIndex), null); +eval.evaluateCompiledScript(params, this.vwr.isSyntaxCheck, this.vwr.isSyntaxAndFileCheck, historyDisabled, this.vwr.listCommands, outputBuffer, isQueued); +} else { +this.vwr.scriptStatus(strErrorMessage); +this.vwr.setScriptStatus("Jmol script terminated", strErrorMessage, 1, strErrorMessageUntranslated); +if (eval.isStateScript()) JS.ScriptManager.setStateScriptVersion(this.vwr, null); +}if (strErrorMessage != null && this.vwr.autoExit) this.vwr.exitJmol(); +if (this.vwr.isSyntaxCheck) { +if (strErrorMessage == null) JU.Logger.info("--script check ok"); + else JU.Logger.error("--script check error\n" + strErrorMessageUntranslated); +JU.Logger.info("(use 'exit' to stop checking)"); +}this.$isScriptQueued = true; +if (returnType.equalsIgnoreCase("String")) return strErrorMessageUntranslated; +if (outputBuffer != null) return (strErrorMessageUntranslated == null ? outputBuffer.toString() : strErrorMessageUntranslated); +var info = this.vwr.getProperty(returnType, "jmolStatus", statusList); +this.vwr.getStatusChanged(oldStatusList); +return info; +}, "~S,~S,~A,~S,~B,~B"); +Clazz.defineMethod(c$, "checkScriptExecution", +function(strScript, isInsert){ +var str = strScript; +var pt = str.indexOf("; ## GUI ##"); +if (pt >= 0) str = str.substring(0, pt); +if ((pt = str.indexOf("\u0001##")) >= 0) str = str.substring(0, pt); +if (this.checkResume(str)) return "script processing resumed"; +if (this.checkStepping(str)) return "script processing stepped"; +if (this.checkHalt(str, isInsert)) return "script execution halted"; +this.vwr.wasmInchiHack(strScript); +return null; +}, "~S,~B"); +Clazz.defineMethod(c$, "checkResume", +function(str){ +if (str.equalsIgnoreCase("resume")) { +this.vwr.scriptStatusMsg("", "execution resumed"); +this.eval.resumePausedExecution(); +return true; +}return false; +}, "~S"); +Clazz.defineMethod(c$, "checkStepping", +function(str){ +if (str.equalsIgnoreCase("step")) { +this.eval.stepPausedExecution(); +return true; +}if (str.equalsIgnoreCase("?")) { +this.vwr.scriptStatus(this.eval.getNextStatement()); +return true; +}return false; +}, "~S"); +Clazz.overrideMethod(c$, "evalStringQuietSync", +function(strScript, isQuiet, allowSyncScript){ +return this.evalStringParamsQuietSync(strScript, null, isQuiet, allowSyncScript); +}, "~S,~B,~B"); +Clazz.defineMethod(c$, "evalStringParamsQuietSync", +function(strScript, params, isQuiet, allowSyncScript){ +if (allowSyncScript && this.vwr.sm.syncingScripts && strScript.indexOf("#NOSYNC;") < 0) this.vwr.syncScript(strScript + " #NOSYNC;", null, 0); +if (this.eval.isPaused() && strScript.charAt(0) != '!') strScript = '!' + JU.PT.trim(strScript, "\n\r\t "); +var isInsert = (params == null && strScript.length > 0 && strScript.charAt(0) == '!'); +if (isInsert) strScript = strScript.substring(1); +var msg = this.checkScriptExecution(strScript, isInsert); +if (msg != null) return msg; +if (this.vwr.isScriptExecuting() && (isInsert || this.eval.isPaused())) { +this.vwr.setInsertedCommand(strScript); +if (strScript.indexOf("moveto ") == 0) this.flushQueue("moveto "); +return "!" + strScript; +}this.vwr.setInsertedCommand(""); +if (isQuiet && params == null) strScript += "\u0001## EDITOR_IGNORE ##"; +return this.addScript(strScript, params, isQuiet && !this.vwr.getBoolean(603979879)); +}, "~S,~A,~B,~B"); +Clazz.overrideMethod(c$, "checkHalt", +function(str, isInsert){ +if (str.equalsIgnoreCase("pause") || str.equalsIgnoreCase("pause\u0001##")) { +this.vwr.pauseScriptExecution(); +if (this.vwr.scriptEditorVisible) this.vwr.setScriptStatus("", "paused -- type RESUME to continue", 0, null); +return true; +}if (str.equalsIgnoreCase("menu")) { +this.vwr.getProperty("DATA_API", "getPopupMenu", "\0"); +return true; +}str = str.toLowerCase(); +var exitScript = false; +var haltType = null; +if (str.startsWith("exit")) { +this.vwr.haltScriptExecution(); +this.vwr.clearScriptQueue(); +this.vwr.clearTimeouts(); +exitScript = str.equals(haltType = "exit"); +} else if (str.startsWith("quit")) { +this.vwr.haltScriptExecution(); +exitScript = str.equals(haltType = "quit"); +}if (haltType == null) return false; +if (isInsert) { +this.vwr.clearThreads(); +this.vwr.queueOnHold = false; +}if (isInsert || this.vwr.g.waitForMoveTo) { +this.vwr.tm.stopMotion(); +}JU.Logger.info(this.vwr.isSyntaxCheck ? haltType + " -- stops script checking" : (isInsert ? "!" : "") + haltType + " received"); +this.vwr.isSyntaxCheck = false; +return exitScript; +}, "~S,~B"); +Clazz.overrideMethod(c$, "getAtomBitSetEval", +function(eval, atomExpression){ +if (eval == null) { +eval = this.evalTemp; +if (eval == null) eval = this.evalTemp = this.newScriptEvaluator(); +}return this.vwr.slm.excludeAtoms(eval.getAtomBitSet(atomExpression), false); +}, "J.api.JmolScriptEvaluator,~O"); +Clazz.overrideMethod(c$, "scriptCheckRet", +function(strScript, returnContext){ +if (strScript.indexOf(")") == 0 || strScript.indexOf("!") == 0) strScript = strScript.substring(1); +strScript = this.vwr.wasmInchiHack(strScript); +var sc = this.newScriptEvaluator().checkScriptSilent(strScript); +return (returnContext || sc.errorMessage == null ? sc : sc.errorMessage); +}, "~S,~B"); +Clazz.overrideMethod(c$, "openFileAsync", +function(fname, flags, type){ +var scriptOnly = ((flags & 32) != 0); +if (!scriptOnly && (flags & 64) != 0 && JV.FileManager.isEmbeddable(fname)) this.checkResize(fname); +var noScript = ((flags & 2) != 0); +var noAutoPlay = ((flags & 8) != 0); +var cmd = null; +fname = fname.trim().$replace('\\', '/'); +var isCached = fname.startsWith("cache://"); +if (this.vwr.isApplet && fname.indexOf("://") < 0) fname = "file://" + (fname.startsWith("/") ? "" : "/") + fname; +try { +if (scriptOnly) { +cmd = "script " + JU.PT.esc(fname); +return; +}if (fname.endsWith(".pse")) { +cmd = (isCached ? "" : "zap;") + "load SYNC " + JU.PT.esc(fname) + (this.vwr.isApplet ? "" : " filter 'DORESIZE'"); +return; +}if (fname.endsWith("jvxl")) { +cmd = "isosurface "; +} else if (!fname.toLowerCase().endsWith(".spt")) { +if (type == null) type = this.getDragDropFileTypeName(fname); + else if (!type.endsWith("::")) type += "::"; +if (type == null) { +try { +var bis = this.vwr.getBufferedInputStream(fname); +type = JV.FileManager.determineSurfaceFileType(JU.Rdr.getBufferedReader(bis, "ISO-8859-1")); +if (type == null) { +cmd = "script " + JU.PT.esc(fname); +return; +}} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +return; +} else { +throw e; +} +} +if (type === "MENU") { +cmd = "load MENU " + JU.PT.esc(fname); +} else { +cmd = "if (_filetype == 'Pdb') { isosurface sigma 1.0 within 2.0 {*} " + JU.PT.esc(fname) + " mesh nofill }; else; { isosurface " + JU.PT.esc(fname) + "}"; +}return; +}if (type.equals("spt::")) { +cmd = "script " + JU.PT.esc((fname.startsWith("spt::") ? fname.substring(5) : fname)); +return; +}if (type.equals("dssr")) { +cmd = "model {visible} property dssr "; +} else if (type.equals("Jmol")) { +cmd = "script "; +} else if (type.equals("Cube")) { +cmd = "isosurface sign red blue "; +} else if (!type.equals("spt")) { +if (flags == 16) { +flags = 1; +switch (this.vwr.ms.ac == 0 ? 0 : this.vwr.confirm(J.i18n.GT.$("Would you like to replace the current model with the selected model?"), J.i18n.GT.$("Would you like to append?"))) { +case 2: +return; +case 0: +break; +default: +flags |= 4; +break; +} +}var isAppend = ((flags & 4) != 0); +var pdbCartoons = ((flags & 1) != 0 && !isAppend); +if (type.endsWith("::")) { +var pt = type.indexOf("|"); +if (pt >= 0) { +fname += type.substring(pt, type.length - 2); +type = ""; +}fname = type + fname; +}cmd = this.vwr.g.defaultDropScript; +cmd = JU.PT.rep(cmd, "%FILE", fname); +cmd = JU.PT.rep(cmd, "%ALLOWCARTOONS", "" + pdbCartoons); +if (cmd.toLowerCase().startsWith("zap") && (isCached || isAppend)) cmd = cmd.substring(3); +if (isAppend) { +cmd = JU.PT.rep(cmd, "load SYNC", "load append"); +}return; +}}if (cmd == null && !noScript && this.vwr.scriptEditorVisible) this.vwr.showEditor( Clazz.newArray(-1, [fname, this.vwr.getFileAsString3(fname, true, null)])); + else cmd = (cmd == null ? "script " : cmd) + JU.PT.esc(fname); +} finally { +if (cmd != null) this.vwr.evalString(cmd + (noAutoPlay ? "#!NOAUTOPLAY" : "")); +} +}, "~S,~N,~S"); +Clazz.defineMethod(c$, "checkResize", +function(fname){ +try { +var data = this.vwr.fm.getEmbeddedFileState(fname, false, "state.spt"); +if (data.indexOf("preferredWidthHeight") >= 0) this.vwr.sm.resizeInnerPanelString(data); +} catch (e) { +} +}, "~S"); +Clazz.defineMethod(c$, "getDragDropFileTypeName", +function(fileName){ +var pt = fileName.indexOf("::"); +if (pt >= 0) return fileName.substring(0, pt + 2); +if (fileName.startsWith("=")) return "pdb"; +if (fileName.endsWith(".dssr")) return "dssr"; +var br = this.vwr.fm.getUnzippedReaderOrStreamFromName(fileName, null, true, false, true, true, null); +var modelType = null; +if (this.vwr.fm.isZipStream(br)) { +var zipDirectory = this.vwr.getZipDirectoryAsString(fileName); +if (zipDirectory.indexOf("JmolManifest") >= 0) return "Jmol"; +modelType = this.vwr.getModelAdapter().getFileTypeName(JU.Rdr.getBR(zipDirectory)); +} else if (Clazz.instanceOf(br,"java.io.BufferedReader") || Clazz.instanceOf(br,"java.io.BufferedInputStream")) { +modelType = this.vwr.getModelAdapter().getFileTypeName(br); +}if (modelType != null) return modelType + "::"; +if (JU.AU.isAS(br)) { +return (br)[0]; +}return null; +}, "~S"); +c$.setStateScriptVersion = Clazz.defineMethod(c$, "setStateScriptVersion", +function(vwr, version){ +if (version != null) { +JS.ScriptManager.prevCovalentVersion = JU.Elements.bondingVersion; +var tokens = JU.PT.getTokens(version.$replace('.', ' ').$replace('_', ' ')); +try { +var main = JU.PT.parseInt(tokens[0]); +var sub = JU.PT.parseInt(tokens[1]); +var minor = JU.PT.parseInt(tokens[2]); +if (minor == -2147483648) minor = 0; +if (main != -2147483648 && sub != -2147483648) { +var ver = vwr.stateScriptVersionInt = main * 10000 + sub * 100 + minor; +vwr.setBooleanProperty("legacyautobonding", (ver < 110924)); +vwr.setBooleanProperty("legacyHAddition", (ver < 130117)); +if (!vwr.getBoolean(603979831)) vwr.setBooleanProperty("legacyjavafloat", (ver < 140206 || ver >= 140300 && ver < 140306)); +vwr.setIntProperty("bondingVersion", ver < 140111 ? 0 : 1); +return; +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}vwr.setIntProperty("bondingVersion", JS.ScriptManager.prevCovalentVersion); +vwr.setBooleanProperty("legacyautobonding", false); +vwr.setBooleanProperty("legacyHAddition", false); +vwr.stateScriptVersionInt = 2147483647; +}, "JV.Viewer,~S"); +Clazz.overrideMethod(c$, "addHydrogensInline", +function(bsAtoms, vConnections, pts, htParams){ +var iatom = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +if (htParams == null) htParams = new java.util.Hashtable(); +var modelIndex = (iatom < 0 ? this.vwr.am.cmi : this.vwr.ms.at[iatom].mi); +if (modelIndex < 0) modelIndex = this.vwr.ms.mc - 1; +htParams.put("appendToModelIndex", Integer.$valueOf(modelIndex)); +var siteFixed = (htParams.containsKey("fixedSite")); +var bsA = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +var wasAppendNew = this.vwr.g.appendNew; +this.vwr.g.appendNew = false; +var atomno = 0; +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var an = this.vwr.ms.at[i].getAtomNumber(); +if (an > atomno) atomno = an; +} +var sbConnect = new JU.SB(); +for (var i = 0, atomIndex = this.vwr.ms.ac; i < vConnections.size(); i++, atomIndex++) { +var a = vConnections.get(i); +if (a != null) sbConnect.append("; connect 0 100 ").append("({" + (atomIndex) + "}) ").append("({" + a.i + "}) group;"); +} +var sb = new JU.SB(); +sb.appendI(pts.length).append("\n").append("Viewer.AddHydrogens").append("#noautobond").append("\n"); +var sym = htParams.get("element"); +sym = (sym == null ? "H" : sym) + " "; +for (var i = 0; i < pts.length; i++) sb.append(sym).appendF(pts[i].x).append(" ").appendF(pts[i].y).append(" ").appendF(pts[i].z).append(" - - - - ").appendI(++atomno).appendC('\n'); + +var wasRefreshing = this.vwr.getBoolean(603979900); +this.vwr.setBooleanProperty("refreshing", false); +this.vwr.openStringInlineParamsAppend(sb.toString(), htParams, true); +if (sbConnect.length() > 0) this.vwr.runScript(sbConnect.toString()); +this.vwr.setBooleanProperty("refreshing", wasRefreshing); +var bsB = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +bsB.andNot(bsA); +this.vwr.g.appendNew = wasAppendNew; +if (!siteFixed) { +bsA = this.vwr.ms.am[modelIndex].bsAsymmetricUnit; +if (bsA != null) bsA.or(bsB); +}return bsB; +}, "JU.BS,JU.Lst,~A,java.util.Map"); +Clazz.overrideMethod(c$, "evalCallback", +function(strScript, params, doWait){ +if (doWait) { +this.evalStringWaitParamsStatusQueued("String", strScript, params, "", true, true); +} else { +this.evalStringParamsQuietSync(strScript, params, true, true); +}}, "~S,~A,~B"); +Clazz.defineMethod(c$, "runScriptFromThread", +function(scriptItem){ +var script = scriptItem.get(0); +var statusList = scriptItem.get(1); +var returnType = scriptItem.get(2); +var isQuiet = (scriptItem.get(3)).booleanValue(); +var params = scriptItem.get(5); +this.evalStringWaitParamsStatusQueued(returnType, script, params, statusList, isQuiet, true); +}, "JU.Lst"); +c$.prevCovalentVersion = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptMathProcessor.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptMathProcessor.js new file mode 100755 index 000000000000..2665e9dee971 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptMathProcessor.js @@ -0,0 +1,1337 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.ScriptMathProcessor", ["java.util.Hashtable", "JU.A4", "$.AU", "$.BS", "$.CU", "$.DF", "$.Lst", "$.M3", "$.M4", "$.P3", "$.P4", "$.PT", "$.Quat", "$.V3", "JM.BondSet", "JS.SV", "$.T", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.wasX = false; +this.asBitSet = false; +this.oPt = -1; +this.chk = false; +this.wasSyntaxCheck = false; +this.debugHigh = false; +this.eval = null; +this.vwr = null; +this.oStack = null; +this.xStack = null; +this.ifStack = null; +this.ifPt = -1; +this.xPt = -1; +this.parenCount = 0; +this.squareCount = 0; +this.braceCount = 0; +this.isArrayItem = false; +this.asVector = false; +this.haveSpaceBeforeSquare = false; +this.equalCount = 0; +this.ptid = 0; +this.ptx = 2147483647; +this.pto = 2147483647; +this.isSpecialAssignment = false; +this.doSelections = true; +this.assignLeft = false; +this.allowUnderflow = false; +this.isAssignment = false; +this.skipping = false; +this.lastAssignedString = null; +Clazz.instantialize(this, arguments);}, JS, "ScriptMathProcessor", null); +Clazz.prepareFields (c$, function(){ +this.oStack = new Array(8); +this.xStack = new Array(8); +this.ifStack = Clazz.newCharArray (8, '\0'); +}); +Clazz.makeConstructor(c$, +function(eval, isSpecialAssignment, isArrayItem, asVector, asBitSet, allowUnderflow, key){ +this.eval = eval; +this.isSpecialAssignment = this.assignLeft = isSpecialAssignment; +this.isAssignment = (isSpecialAssignment || key != null); +this.vwr = eval.vwr; +this.debugHigh = eval.debugHigh; +this.chk = this.wasSyntaxCheck = eval.chk; +this.isArrayItem = isArrayItem; +this.asVector = asVector || isArrayItem; +this.asBitSet = asBitSet; +this.allowUnderflow = allowUnderflow; +this.wasX = isArrayItem; +if (this.debugHigh) JU.Logger.debug("initialize RPN"); +}, "JS.ScriptExpr,~B,~B,~B,~B,~B,~S"); +Clazz.defineMethod(c$, "endAssignment", +function(){ +this.assignLeft = false; +return (this.doSelections = false); +}); +Clazz.defineMethod(c$, "getResult", +function(){ +var isOK = true; +while (isOK && this.oPt >= 0 && this.oStack[this.oPt] != null) isOK = this.operate(); + +if (isOK) { +if (this.asVector) { +if (this.isAssignment && (this.xPt > 0 && this.oPt < 0 || this.oPt >= 0 && (this.oStack[this.oPt] != null))) this.eval.invArg(); +var result = new JU.Lst(); +for (var i = 0; i <= this.xPt; i++) result.addLast(this.isSpecialAssignment ? this.xStack[i] : JS.SV.selectItemVar(this.xStack[i])); + +if (this.lastAssignedString != null) { +result.removeItemAt(0); +result.add(0, this.lastAssignedString); +this.lastAssignedString.intValue = this.xStack[0].intValue; +}return JS.SV.newV(135198, result); +}if (this.xPt == 0) { +var x = this.xStack[0]; +if (this.chk) { +if (this.asBitSet) return JS.SV.newV(10, new JU.BS()); +return x; +}if (x.tok == 10 || x.tok == 7 || x.tok == 15 || x.tok == 4 || x.tok == 11 || x.tok == 12) x = JS.SV.selectItemVar(x); +if (this.asBitSet && x.tok == 7) x = JS.SV.newV(10, JS.SV.unEscapeBitSetArray(x.value, false)); +return x; +}}if (!this.allowUnderflow && (this.xPt >= 0 || this.oPt >= 0)) this.eval.invArg(); +return null; +}); +Clazz.defineMethod(c$, "putX", +function(x){ +if (this.skipping) return; +if (this.wasX) { +try { +this.addOp(JS.T.tokenComma); +} catch (e) { +if (Clazz.exceptionOf(e,"JS.ScriptException")){ +} else { +throw e; +} +} +}if (++this.xPt == this.xStack.length) this.xStack = JU.AU.doubleLength(this.xStack); +if (this.xPt < 0) System.out.println("testing scriptemaafe"); +this.xStack[this.xPt] = x; +this.ptx = ++this.ptid; +if (this.debugHigh) { +JU.Logger.debug("\nputx= " + x + " ptx=" + this.ptid); +}}, "JS.SV"); +Clazz.defineMethod(c$, "putOp", +function(op){ +if (++this.oPt >= this.oStack.length) this.oStack = JU.AU.doubleLength(this.oStack); +this.oStack[this.oPt] = op; +this.pto = ++this.ptid; +if (this.debugHigh) { +JU.Logger.debug("\nputop=" + op + " pto=" + this.ptid); +}}, "JS.T"); +Clazz.defineMethod(c$, "putIf", +function(c){ +if (++this.ifPt >= this.ifStack.length) this.ifStack = JU.AU.doubleLength(this.ifStack); +this.ifStack[this.ifPt] = c; +}, "~S"); +Clazz.defineMethod(c$, "addXCopy", +function(x){ +switch (x.tok) { +case 2: +x = JS.SV.newI(x.intValue); +break; +case 3: +x = JS.SV.newV(3, x.value); +break; +} +return this.addX(x); +}, "JS.SV"); +Clazz.defineMethod(c$, "addX", +function(x){ +this.putX(x); +return this.wasX = true; +}, "JS.SV"); +Clazz.defineMethod(c$, "addXObj", +function(x){ +var v = JS.SV.getVariable(x); +if (v == null) return false; +this.putX(v); +return this.wasX = true; +}, "~O"); +Clazz.defineMethod(c$, "addXStr", +function(x){ +this.putX(JS.SV.newS(x)); +return this.wasX = true; +}, "~S"); +Clazz.defineMethod(c$, "addXBool", +function(x){ +this.putX(JS.SV.getBoolean(x)); +return this.wasX = true; +}, "~B"); +Clazz.defineMethod(c$, "addXInt", +function(x){ +this.putX(JS.SV.newI(x)); +return this.wasX = true; +}, "~N"); +Clazz.defineMethod(c$, "addXList", +function(x){ +this.putX(JS.SV.getVariableList(x)); +return this.wasX = true; +}, "JU.Lst"); +Clazz.defineMethod(c$, "addXMap", +function(x){ +this.putX(JS.SV.getVariableMap(x)); +return this.wasX = true; +}, "java.util.Map"); +Clazz.defineMethod(c$, "addXM3", +function(x){ +this.putX(JS.SV.newV(11, x)); +return this.wasX = true; +}, "JU.M3"); +Clazz.defineMethod(c$, "addXM4", +function(x){ +this.putX(JS.SV.newV(12, x)); +return this.wasX = true; +}, "JU.M4"); +Clazz.defineMethod(c$, "addXFloat", +function(x){ +this.putX(JS.SV.newF(x)); +return this.wasX = true; +}, "~N"); +Clazz.defineMethod(c$, "addXBs", +function(bs){ +this.putX(JS.SV.newV(10, bs)); +return this.wasX = true; +}, "JU.BS"); +Clazz.defineMethod(c$, "addXPt", +function(pt){ +this.putX(JS.SV.newV(8, pt)); +return this.wasX = true; +}, "JU.P3"); +Clazz.defineMethod(c$, "addXPt4", +function(pt){ +this.putX(JS.SV.newV(9, pt)); +return this.wasX = true; +}, "JU.P4"); +Clazz.defineMethod(c$, "addXNum", +function(x){ +var v; +if (Clazz.instanceOf(x,"JS.SV")) { +v = x; +} else { +switch (x.tok) { +case 3: +if (this.wasX) { +var f = (x.value).floatValue(); +if (f < 0 || f == 0 && 1 / f == -Infinity) { +this.addOp(JS.T.tokenMinus); +v = JS.SV.newF(-f); +break; +}}v = JS.SV.newV(3, x.value); +break; +default: +var iv = x.intValue; +if (this.wasX && iv < 0) { +this.addOp(JS.T.tokenMinus); +iv = -iv; +}v = JS.SV.newI(iv); +break; +} +}this.putX(v); +return this.wasX = true; +}, "JS.T"); +Clazz.defineMethod(c$, "addXAV", +function(x){ +this.putX(JS.SV.getVariableAV(x)); +return this.wasX = true; +}, "~A"); +Clazz.defineMethod(c$, "addXAD", +function(x){ +this.putX(JS.SV.getVariableAD(x)); +return this.wasX = true; +}, "~A"); +Clazz.defineMethod(c$, "addXAS", +function(x){ +this.putX(JS.SV.getVariableAS(x)); +return this.wasX = true; +}, "~A"); +Clazz.defineMethod(c$, "addXAI", +function(x){ +this.putX(JS.SV.getVariableAI(x)); +return this.wasX = true; +}, "~A"); +Clazz.defineMethod(c$, "addXAII", +function(x){ +this.putX(JS.SV.getVariableAII(x)); +return this.wasX = true; +}, "~A"); +Clazz.defineMethod(c$, "addXAF", +function(x){ +this.putX(JS.SV.getVariableAF(x)); +return this.wasX = true; +}, "~A"); +Clazz.defineMethod(c$, "addXAFF", +function(x){ +this.putX(JS.SV.getVariableAFF(x)); +return this.wasX = true; +}, "~A"); +c$.isOpFunc = Clazz.defineMethod(c$, "isOpFunc", +function(op){ +return (op != null && (JS.T.tokAttr(op.tok, 134217728) && op !== JS.T.tokenArraySquare || op.tok == 268442113 && JS.T.tokAttr(op.intValue, 134217728))); +}, "JS.T"); +Clazz.defineMethod(c$, "addOp", +function(op){ +return this.addOpAllowMath(op, true, 0); +}, "JS.T"); +Clazz.defineMethod(c$, "addOpAllowMath", +function(op, allowMathFunc, tokNext){ +if (this.debugHigh) { +this.dumpStacks("adding " + op + " wasx=" + this.wasX); +}var tok0 = (this.oPt >= 0 && this.oStack[this.oPt] != null ? this.oStack[this.oPt].tok : 0); +this.skipping = (this.ifPt >= 0 && (this.ifStack[this.ifPt] == 'F' || this.ifStack[this.ifPt] == 'X')); +if (this.skipping) return this.checkSkip(op, tok0); +var tok; +var isDotSelector = (op.tok == 268442113); +if (isDotSelector && !this.wasX) return false; +var isMathFunc = (allowMathFunc && JS.ScriptMathProcessor.isOpFunc(op)); +if (this.oPt >= 1 && op.tok != 268435968 && tok0 == 134217750) tok0 = this.oStack[--this.oPt].tok; +var newOp = null; +var isLeftOp = false; +switch (op.tok) { +case 1073742195: +this.haveSpaceBeforeSquare = true; +return true; +case 268436992: +if (!this.wasX) return false; +break; +case 268441601: +case 268441602: +if (this.wasX && op.intValue == -1 && this.addOp(JS.T.tokenComma)) return this.addOp(op); +break; +case 268437505: +break; +case 268435969: +if (!this.wasX && this.oPt >= 1 && tok0 == 268435968 && !JS.ScriptMathProcessor.isOpFunc(this.oStack[this.oPt - 1])) return false; +break; +case 268440576: +if (!this.wasX) op = JS.SV.newV(268441600, "-"); +break; +case 1275068725: +case 32: +case 64: +case 96: +case 128: +case 160: +case 192: +case 480: +tok = (this.oPt < 0 ? 0 : tok0); +if (!this.wasX || !(tok == 268442113 || tok == 1677721602 || tok == 1153433601)) return false; +this.oStack[this.oPt].intValue |= op.tok; +return true; +case 268437504: +isLeftOp = true; +if (!this.wasX || this.haveSpaceBeforeSquare) { +this.squareCount++; +op = newOp = JS.T.tokenArraySquare; +this.haveSpaceBeforeSquare = false; +}break; +case 268439040: +case 268435968: +isLeftOp = true; +default: +if (isMathFunc) { +var isArgument = (this.oPt >= 1 && tok0 == 268435968); +if (isDotSelector) { +if (tokNext == 268435968) { +if (this.xStack[this.xPt].tok == 6) return false; +}} else if (this.wasX && !isArgument) { +return false; +}newOp = op; +isLeftOp = true; +break; +}if (this.wasX == isLeftOp && tok0 != 268442113) { +if (!this.wasX || !allowMathFunc) return false; +if (this.addOp(JS.T.tokenComma)) return this.addOp(op); +}break; +} +while (this.oPt >= 0 && tok0 != 268436482 && (op.tok != 268441601 && op.tok != 268441602 || this.wasX) && (!isLeftOp || tok0 == 268442113 && (op.tok == 268442113 || op.tok == 268437504)) && JS.T.getPrecedence(tok0) >= JS.T.getPrecedence(op.tok) && (tok0 != 268441600 || op.tok != 268441600)) { +if (op.tok == 268435969 && tok0 == 268435968) { +if (this.xPt >= 0) this.xStack[this.xPt] = JS.SV.selectItemVar(this.xStack[this.xPt]); +this.wasX = true; +break; +}if (op.tok == 268437505 && tok0 == 1275068418) { +break; +}if (op.tok == 268437505 && tok0 == 268437504) { +if (this.isArrayItem && this.squareCount == 1 && this.equalCount == 0) { +this.wasX = false; +this.addX(JS.SV.newT(JS.T.tokenArrayOpen)); +break; +}if (!this.doSelection()) return false; +this.wasX = true; +break; +}if (!this.operate()) return false; +tok0 = (this.oPt >= 0 && this.oStack[this.oPt] != null ? this.oStack[this.oPt].tok : 0); +} +if (newOp != null) { +this.wasX = false; +this.addX(JS.SV.newV(268440324, newOp)); +}switch (op.tok) { +case 268435968: +this.parenCount++; +this.wasX = false; +break; +case 805307393: +var isFirst = this.getX().asBoolean(); +if (tok0 == 268436482) this.ifPt--; + else this.putOp(JS.T.tokenColon); +this.putIf(isFirst ? 'T' : 'F'); +this.skipping = !isFirst; +this.wasX = false; +return true; +case 268436482: +if (tok0 != 268436482) return false; +if (this.ifPt < 0) return false; +this.ifStack[this.ifPt] = 'X'; +this.wasX = false; +this.skipping = true; +return true; +case 268435969: +this.wasX = true; +if (this.parenCount-- <= 0) return false; +if (tok0 == 268436482) { +this.ifPt--; +this.oPt--; +}this.oPt--; +if (this.oPt < 0) return true; +if (JS.ScriptMathProcessor.isOpFunc(this.oStack[this.oPt])) { +this.wasX = false; +if (!this.evaluateFunction(0)) return false; +}this.skipping = (this.ifPt >= 0 && this.ifStack[this.ifPt] == 'X'); +return true; +case 268436992: +this.wasX = false; +return true; +case 268437504: +this.squareCount++; +this.wasX = false; +break; +case 268437505: +this.wasX = true; +if (this.squareCount-- <= 0 || this.oPt < 0 || !this.doSelections) return !this.doSelections; +if (this.oStack[this.oPt].tok == 1275068418) return this.evaluateFunction(268437504); +this.oPt--; +return true; +case 268442113: +this.wasX = (!allowMathFunc || !JS.T.tokAttr(op.intValue, 134217728)); +break; +case 1073742332: +this.braceCount++; +this.wasX = false; +break; +case 1073742338: +if (this.braceCount-- <= 0) return false; +this.wasX = false; +break; +case 268438528: +case 268438016: +if (!this.wasSyntaxCheck && this.xPt < 0) return false; +if (!this.wasSyntaxCheck) { +switch (this.xStack[this.xPt].tok) { +case 10: +case 7: +break; +case 11: +if (op.tok == 268438016) break; +default: +var tf = this.getX().asBoolean(); +this.addX(JS.SV.getBoolean(tf)); +if (tf == (op.tok == 268438016)) { +this.chk = true; +op = (op.tok == 268438016 ? JS.T.tokenOrTRUE : JS.T.tokenAndFALSE); +}break; +} +}this.wasX = false; +break; +case 268441602: +case 268441601: +break; +case 268440324: +if (this.squareCount == 0) { +this.doSelections = true; +this.assignLeft = false; +this.equalCount++; +}this.wasX = false; +break; +default: +this.wasX = false; +} +this.putOp(op); +switch (op.tok) { +case 268442113: +return (((op.intValue & -481) == 134320141 && op.intValue != 134320141) ? this.evaluateFunction(0) : true); +case 268441602: +case 268441601: +return (this.wasX ? this.operate() : true); +} +return true; +}, "JS.T,~B,~N"); +Clazz.defineMethod(c$, "checkSkip", +function(op, tok0){ +switch (op.tok) { +case 268435968: +this.putOp(op); +break; +case 268436482: +if (tok0 != 268436482 || this.ifStack[this.ifPt] == 'X') break; +this.ifStack[this.ifPt] = 'T'; +this.wasX = false; +this.skipping = false; +break; +case 268435969: +if (tok0 == 268435968) { +this.oPt--; +break; +}if (tok0 != 268436482) { +this.putOp(op); +break; +}this.wasX = true; +this.ifPt--; +this.oPt -= 2; +this.skipping = false; +break; +} +return true; +}, "JS.T,~N"); +Clazz.defineMethod(c$, "doSelection", +function(){ +if (this.xPt < 0 || this.xPt == 0 && !this.isArrayItem) { +return false; +}var var1 = this.xStack[this.xPt--]; +var $var = this.xStack[this.xPt]; +if (($var.tok == 7 || $var.tok == 15) && $var.intValue != 2147483647) if (var1.tok == 4 || this.assignLeft && this.squareCount == 1) { +this.xStack[this.xPt] = $var = JS.SV.selectItemTok($var, -2147483648); +}if (this.assignLeft && $var.tok != 4) this.lastAssignedString = null; +switch ($var.tok) { +case 6: +case 14: +if (this.doSelections) { +var v = $var.mapValue(JS.SV.sValue(var1)); +this.xStack[this.xPt] = (v == null ? JS.SV.newS("") : v); +} else { +this.xPt++; +this.putOp(null); +}return true; +default: +$var = JS.SV.newS(JS.SV.sValue($var)); +case 10: +case 15: +case 7: +case 4: +case 11: +case 12: +if (this.doSelections || $var.tok == 7 && $var.intValue == 2147483647) { +this.xStack[this.xPt] = JS.SV.selectItemTok($var, var1.asInt()); +if (this.assignLeft && $var.tok == 4 && this.squareCount == 1) this.lastAssignedString = $var; +} else { +this.xPt++; +}if (!this.doSelections) this.putOp(null); +break; +} +return true; +}); +Clazz.defineMethod(c$, "dumpStacks", +function(message){ +JU.Logger.debug("\n\n------------------\nRPN stacks: " + message + "\n"); +for (var i = 0; i <= this.xPt; i++) JU.Logger.debug("x[" + i + "]: " + this.xStack[i]); + +JU.Logger.debug("\n"); +for (var i = 0; i <= this.oPt; i++) JU.Logger.debug("o[" + i + "]: " + this.oStack[i] + " prec=" + (this.oStack[i] == null ? "--" : "" + JS.T.getPrecedence(this.oStack[i].tok))); + +JU.Logger.debug(" ifStack = " + ( String.instantialize(this.ifStack)).substring(0, this.ifPt + 1)); +}, "~S"); +Clazz.defineMethod(c$, "getX", +function(){ +if (this.xPt < 0) this.eval.error(13); +var v = JS.SV.selectItemVar(this.xStack[this.xPt]); +this.xStack[this.xPt--] = null; +this.wasX = false; +return v; +}); +Clazz.defineMethod(c$, "getXTok", +function(){ +return (this.xPt < 0 ? 0 : this.xStack[this.xPt].tok); +}); +Clazz.defineMethod(c$, "evaluateFunction", +function(tok){ +var op = this.oStack[this.oPt--]; +if (tok == 0) tok = (op.tok == 268442113 ? op.intValue & -481 : op.tok); +var nParamMax = JS.T.getMaxMathParams(tok); +var nParam = 0; +var pt = this.xPt; +while (pt >= 0 && this.xStack[pt--].value !== op) nParam++; + +if (nParamMax > 0 && nParam > nParamMax) return false; +var args = new Array(nParam); +for (var i = nParam; --i >= 0; ) args[i] = this.getX(); + +this.xPt--; +if (!this.chk) return this.eval.getMathExt().evaluate(this, op, args, tok); +if (op.tok == 268442113) this.xPt--; +if (this.xPt < 0) this.xPt = 0; +switch (tok) { +case 134217736: +case 1275203608: +case 134218756: +case 134218757: +case 134217759: +case 134353926: +return this.addXBs( new JU.BS()); +} +return this.addXBool(true); +}, "~N"); +Clazz.defineMethod(c$, "operate", +function(){ +var op = this.oStack[this.oPt--]; +var pt; +var m; +var m4; +var s; +var x1; +if (this.debugHigh) { +this.dumpStacks("operate: " + op); +}if (op.tok == 268440324 && (this.isArrayItem && this.squareCount == 0 && this.equalCount == 1 && this.oPt < 0 || this.oPt >= 0 && this.oStack[this.oPt] == null)) return true; +var x2; +switch (op.tok) { +case 268441601: +case 268441602: +if (this.xPt >= 0 && this.xStack[this.xPt].canIncrement()) { +x2 = this.xStack[this.xPt--]; +this.wasX = false; +break; +}default: +x2 = this.getX(); +break; +} +if (x2 === JS.T.tokenArrayOpen) return false; +switch (op.tok) { +case 268441601: +case 268441602: +x1 = x2; +if (!this.chk) { +if (this.ptx < this.pto) { +x1 = JS.SV.copySafely(x2); +}if (!x2.increment(op.tok == 268441602 ? 1 : -1)) return false; +if (this.ptx > this.pto) { +x1 = JS.SV.copySafely(x2); +}}this.wasX = false; +this.putX(x1); +this.wasX = true; +return true; +case 268441600: +switch (x2.tok) { +case 2: +return this.addXInt(-x2.asInt()); +case 8: +pt = JU.P3.newP(x2.value); +pt.scale(-1.0); +return this.addXPt(pt); +case 9: +var pt4 = JU.P4.newPt(x2.value); +pt4.scale4(-1.0); +return this.addXPt4(pt4); +case 11: +m = JU.M3.newM3(x2.value); +m.transpose(); +return this.addXM3(m); +case 12: +m4 = JU.M4.newM4(x2.value); +m4.transpose(); +return this.addXM4(m4); +case 10: +return this.addXBs(JU.BSUtil.copyInvert(x2.value, (Clazz.instanceOf(x2.value,"JM.BondSet") ? this.vwr.ms.bondCount : this.vwr.ms.ac))); +} +return this.addXFloat(-x2.asFloat()); +case 268439040: +if (this.chk) return this.addXBool(true); +switch (x2.tok) { +case 9: +return this.addXPt4((JU.Quat.newP4(x2.value)).inv().toPoint4f()); +case 11: +m = JU.M3.newM3(x2.value); +m.invert(); +return this.addXM3(m); +case 12: +return this.addXM4(JU.M4.newM4(x2.value).invert()); +case 10: +var isBond = Clazz.instanceOf(x2.value,"JM.BondSet"); +var bs = JU.BSUtil.copyInvert(x2.value, (isBond ? this.vwr.ms.bondCount : this.vwr.ms.ac)); +return this.addXBs(isBond ? JM.BondSet.newBS(bs) : bs); +default: +return this.addXBool(!x2.asBoolean()); +} +case 268442113: +var iv = (op.intValue == 805307393 ? 805307393 : op.intValue & -481); +if (this.chk) return this.addXObj(JS.SV.newS("")); +if (this.vwr.allowArrayDotNotation) switch (x2.tok) { +case 6: +case 14: +switch (iv) { +case 1275068418: +case 1140850706: +case 1140850694: +case 1140850696: +break; +default: +var ret = x2.mapValue(op.value); +return this.addXObj(ret == null ? JS.SV.newS("") : ret); +} +break; +} +switch (iv) { +case 1275068418: +return this.addX(x2.toArray()); +case 805307393: +case 1073741824: +return (x2.tok == 10 && (this.chk ? this.addXStr("") : this.getAllProperties(x2, op.value))); +case 1140850696: +return this.addXStr(JS.ScriptMathProcessor.typeOf(x2)); +case 1140850706: +var keys = x2.getKeys((op.intValue & 480) == 480); +return (keys == null ? this.addXStr("") : this.addXAS(keys)); +case 1140850691: +if (x2.tok == 8) { +return this.addXFloat((x2.value).distance(JS.SV.pt0)); +}case 1275068425: +case 1140850694: +if (iv == 1140850691 && Clazz.instanceOf(x2.value,"JM.BondSet")) break; +return this.addXInt(JS.SV.sizeOf(x2)); +case 1140850692: +switch (x2.tok) { +case 11: +case 12: +s = JS.SV.sValue(x2); +s = JU.PT.rep(s.substring(1, s.length - 1), "],[", "]\n["); +break; +case 4: +s = x2.value; +break; +default: +s = JS.SV.sValue(x2); +} +s = JU.PT.rep(s, "\n\r", "\n").$replace('\r', '\n'); +return this.addXAS(JU.PT.split(s, "\n")); +case 1765808134: +switch (x2.tok) { +case 4: +case 7: +return this.addXPt(JU.CU.colorPtFromString(JS.SV.sValue(x2))); +case 2: +case 3: +return this.addXPt(this.vwr.getColorPointForPropertyValue(JS.SV.fValue(x2))); +case 8: +return this.addXStr(JU.Escape.escapeColor(JU.CU.colorPtToFFRGB(x2.value))); +default: +} +break; +case 1812599299: +return (this.chk ? this.addXStr("x") : this.getBoundBox(x2)); +} +if (this.chk) return this.addXStr(JS.SV.sValue(x2)); +if (x2.tok == 4) { +var v = JS.SV.unescapePointOrBitsetAsVariable(JS.SV.sValue(x2)); +if (!(Clazz.instanceOf(v,"JS.SV"))) return false; +x2 = v; +}if (op.tok == x2.tok) x2 = this.getX(); +return this.getPointOrBitsetOperation(op, x2); +} +x1 = this.getX(); +if (this.chk) { +if (op === JS.T.tokenAndFALSE || op === JS.T.tokenOrTRUE) this.chk = false; +return this.addX(JS.SV.newT(x1)); +}return this.binaryOp(op, x1, x2); +}); +Clazz.defineMethod(c$, "binaryOp", +function(op, x1, x2){ +var pt; +var pt4; +var m; +var s; +var f; +switch (op.tok) { +case 268439552: +case 268438528: +switch (x1.tok) { +case 10: +var bs = x1.value; +switch (x2.tok) { +case 2: +var x = x2.asInt(); +return (this.addXBool(x < 0 ? false : bs.get(x))); +case 10: +bs = JU.BSUtil.copy(bs); +bs.and(x2.value); +return this.addXBs(Clazz.instanceOf(x1.value,"JM.BondSet") ? JM.BondSet.newBS(bs) : bs); +} +break; +} +return this.addXBool(x1.asBoolean() && x2.asBoolean()); +case 268438016: +switch (x1.tok) { +case 10: +var bs = null; +switch (x2.tok) { +case 10: +bs = JU.BSUtil.copy(x1.value); +bs.or(x2.value); +break; +case 2: +bs = JU.BSUtil.copy(x1.value); +var x = x2.asInt(); +if (x >= 0) { +bs.set(x); +}break; +case 7: +bs = JU.BSUtil.copy(x1.value); +var sv = x2.value; +for (var i = sv.size(); --i >= 0; ) { +var b = sv.get(i).asInt(); +if (b >= 0) bs.set(b); +} +break; +} +if (bs == null) break; +return this.addXBs(Clazz.instanceOf(x1.value,"JM.BondSet") ? JM.BondSet.newBS(bs) : bs); +case 7: +return this.addX(JS.SV.concatList(x1, x2, false)); +case 11: +if (x2.tok == 8) { +return this.addXM4(JU.M4.newMV(x1.value, x2.value)); +}} +return this.addXBool(x1.asBoolean() || x2.asBoolean()); +case 268438017: +if (x1.tok == 10 && x2.tok == 10) { +var bs = JU.BSUtil.copy(x1.value); +bs.xor(x2.value); +return this.addXBs(Clazz.instanceOf(x1.value,"JM.BondSet") ? JM.BondSet.newBS(bs) : bs); +}var a = x1.asBoolean(); +var b = x2.asBoolean(); +return this.addXBool(a && !b || b && !a); +case 268438018: +if (x1.tok != 10 || x2.tok != 10) return false; +return this.addXBs(JU.BSUtil.toggleInPlace(JU.BSUtil.copy(x1.value), x2.value)); +case 268440322: +return this.addXBool(x1.tok == 2 && x2.tok == 2 ? x1.intValue <= x2.intValue : x1.isNaN() && x2.isNaN() || x1.asFloat() <= x2.asFloat()); +case 268440321: +return this.addXBool(x1.tok == 2 && x2.tok == 2 ? x1.intValue >= x2.intValue : x1.isNaN() && x2.isNaN() || x1.asFloat() >= x2.asFloat()); +case 268440320: +return this.addXBool(x1.tok == 2 && x2.tok == 2 ? x1.intValue > x2.intValue : x1.asFloat() > x2.asFloat()); +case 268440323: +return this.addXBool(x1.tok == 2 && x2.tok == 2 ? x1.intValue < x2.intValue : x1.asFloat() < x2.asFloat()); +case 268440324: +return this.addXBool(JS.SV.areEqual(x1, x2)); +case 268440325: +return this.addXBool(!JS.SV.areEqual(x1, x2)); +case 268440326: +return this.addXBool(JS.SV.isLike(x1, x2)); +case 268440577: +switch (x1.tok) { +case 6: +var ht = new java.util.Hashtable(x1.value); +var map = x2.getMap(); +if (map != null) ht.putAll(map); +return this.addX(JS.SV.getVariableMap(ht)); +case 2: +if (!this.isDecimal(x2)) return this.addXInt(x1.intValue + x2.asInt()); +break; +case 4: +return this.addX(JS.SV.newS(JS.SV.sValue(x1) + JS.SV.sValue(x2))); +case 8: +pt = JU.P3.newP(x1.value); +switch (x2.tok) { +case 8: +pt.add(x2.value); +return this.addXPt(pt); +case 9: +pt4 = x2.value; +pt.add(JU.P3.new3(pt4.x, pt4.y, pt4.z)); +return this.addXPt(pt); +default: +f = x2.asFloat(); +return this.addXPt(JU.P3.new3(pt.x + f, pt.y + f, pt.z + f)); +} +case 11: +switch (x2.tok) { +case 11: +m = JU.M3.newM3(x1.value); +m.add(x2.value); +return this.addXM3(m); +case 8: +return this.addXM4(JS.ScriptMathProcessor.getMatrix4f(x1.value, x2.value)); +} +break; +case 12: +switch (x2.tok) { +case 8: +var m4b = JU.M4.newM4(x1.value); +m4b.add(x2.value); +return this.addXM4(m4b); +} +break; +case 9: +var q1 = JU.Quat.newP4(x1.value); +switch (x2.tok) { +default: +return this.addXPt4(q1.add(x2.asFloat()).toPoint4f()); +case 9: +return this.addXPt4(q1.mulQ(JU.Quat.newP4(x2.value)).toPoint4f()); +} +case 7: +return this.addX(JS.SV.concatList(x1, x2, true)); +} +return this.addXFloat(x1.asFloat() + x2.asFloat()); +case 268440576: +switch (x1.tok) { +case 2: +if (!this.isDecimal(x2)) return this.addXInt(x1.intValue - x2.asInt()); +break; +case 4: +if (!this.isDecimal(x2) && !this.isDecimal(x1)) return this.addXInt(x1.asInt() - x2.asInt()); +break; +case 6: +var ht = new java.util.Hashtable(x1.value); +ht.remove(JS.SV.sValue(x2)); +return this.addX(JS.SV.getVariableMap(ht)); +case 11: +if (x2.tok != 11) break; +m = JU.M3.newM3(x1.value); +m.sub(x2.value); +return this.addXM3(m); +case 12: +if (x2.tok != 12) break; +var m4 = JU.M4.newM4(x1.value); +m4.sub(x2.value); +return this.addXM4(m4); +case 8: +pt = JU.P3.newP(x1.value); +switch (x2.tok) { +case 8: +pt.sub(x2.value); +return this.addXPt(pt); +case 9: +pt4 = x2.value; +pt.sub(JU.P3.new3(pt4.x, pt4.y, pt4.z)); +return this.addXPt(pt); +} +f = x2.asFloat(); +return this.addXPt(JU.P3.new3(pt.x - f, pt.y - f, pt.z - f)); +case 9: +var q1 = JU.Quat.newP4(x1.value); +if (x2.tok == 9) { +var q2 = JU.Quat.newP4(x2.value); +return this.addXPt4(q2.mulQ(q1.inv()).toPoint4f()); +}return this.addXPt4(q1.add(-x2.asFloat()).toPoint4f()); +} +return this.addXFloat(x1.asFloat() - x2.asFloat()); +case 1275068930: +if (x1.tok == 8 && x2.tok == 8) { +pt = x1.value; +var pt2 = x2.value; +return this.addXPt(JU.P3.new3(pt.x * pt2.x, pt.y * pt2.y, pt.z * pt2.z)); +}case 268441089: +switch (x1.tok) { +case 2: +return (this.isDecimal(x2) ? this.addXFloat(x1.intValue * x2.asFloat()) : this.addXInt(x1.intValue * x2.asInt())); +case 4: +return (this.isDecimal(x2) || this.isDecimal(x1) ? this.addXFloat(x1.asFloat() * x2.asFloat()) : this.addXInt(x1.asInt() * x2.asInt())); +} +pt = (x1.tok == 11 || x1.tok == 12 ? this.ptValue(x2, null) : x2.tok == 11 ? this.ptValue(x1, null) : null); +pt4 = (x1.tok == 12 ? this.eval.planeValue(x2) : x2.tok == 12 ? this.eval.planeValue(x1) : null); +switch (x2.tok) { +case 11: +if (pt != null) { +var m3b = JU.M3.newM3(x2.value); +m3b.transpose(); +var pt1 = JU.P3.newP(pt); +m3b.rotate(pt1); +return (x1.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz.newFloatArray(-1, [pt1.x, pt1.y, pt1.z]))) : this.addXPt(pt1)); +}if (pt4 != null) return this.addXPt4((JU.Quat.newP4(pt4).mulQ(JU.Quat.newM(x2.value))).toPoint4f()); +break; +case 12: +if (pt4 != null) { +var m4b = JU.M4.newM4(x2.value); +m4b.transpose(); +var pt41 = JU.P4.newPt(pt4); +m4b.transform(pt41); +return (x1.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz.newFloatArray(-1, [pt41.x, pt41.y, pt41.z, pt41.w]))) : this.addXPt4(pt41)); +}break; +} +switch (x1.tok) { +case 11: +var m3 = x1.value; +if (pt != null) { +var pt1 = JU.P3.newP(pt); +m3.rotate(pt1); +return (x2.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz.newFloatArray(-1, [pt1.x, pt1.y, pt1.z]))) : this.addXPt(pt1)); +}switch (x2.tok) { +case 11: +m = JU.M3.newM3(x2.value); +m.mul2(m3, m); +return this.addXM3(m); +case 9: +return this.addXM3(JU.Quat.newM(m3).mulQ(JU.Quat.newP4(x2.value)).getMatrix()); +case 7: +var l = x2.getList(); +var lnew = new JU.Lst(); +for (var i = l.size(); --i >= 0; ) { +var pt1 = JS.SV.ptValue(l.get(i)); +if (pt1 == null) return false; +pt1 = JU.P3.newP(pt1); +m3.rotate(pt1); +lnew.addLast(pt1); +} +return this.addXList(lnew); +} +f = x2.asFloat(); +var aa = new JU.A4(); +aa.setM(m3); +aa.angle *= f; +return this.addXM3( new JU.M3().setAA(aa)); +case 12: +var m4 = x1.value; +if (pt != null) { +var pt1 = JU.P3.newP(pt); +m4.rotTrans(pt1); +return (x2.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz.newFloatArray(-1, [pt1.x, pt1.y, pt1.z]))) : this.addXPt(pt1)); +}if (pt4 != null) { +m4.transform(pt4); +return (x2.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz.newFloatArray(-1, [pt4.x, pt4.y, pt4.z, pt4.w]))) : this.addXPt4(pt4)); +}switch (x2.tok) { +case 12: +var m4b = JU.M4.newM4(x2.value); +m4b.mul2(m4, m4b); +return this.addXM4(m4b); +case 7: +var l = x2.getList(); +var lnew = new JU.Lst(); +for (var i = l.size(); --i >= 0; ) { +var pt1 = JU.P3.newP(JS.SV.ptValue(l.get(i))); +m4.rotTrans(pt1); +lnew.addLast(pt1); +} +return this.addXList(lnew); +} +return this.addXFloat(NaN); +case 8: +pt = JU.P3.newP(x1.value); +switch (x2.tok) { +case 8: +var pt2 = (x2.value); +return this.addXFloat(pt.x * pt2.x + pt.y * pt2.y + pt.z * pt2.z); +} +f = x2.asFloat(); +return this.addXPt(JU.P3.new3(pt.x * f, pt.y * f, pt.z * f)); +case 9: +if (x2.tok == 9) return this.addXPt4(JU.Quat.newP4(x1.value).mulQ(JU.Quat.newP4(x2.value)).toPoint4f()); +return this.addXPt4(JU.Quat.newP4(x1.value).mul(x2.asFloat()).toPoint4f()); +} +return this.addXFloat(x1.asFloat() * x2.asFloat()); +case 268441088: +var f2; +switch (x1.tok) { +case 2: +if (x2.tok == 2 && x2.intValue != 0) return this.addXInt(Clazz.doubleToInt(x1.intValue / x2.intValue)); +var n = (this.isDecimal(x2) ? 0 : x2.asInt()); +if (n != 0) return this.addXInt(Clazz.doubleToInt(x1.intValue / n)); +break; +case 4: +var i2; +if (!this.isDecimal(x1) && !this.isDecimal(x2) && (i2 = x2.asInt()) != 0) return this.addXInt(Clazz.doubleToInt(x1.asInt() / i2)); +break; +case 8: +pt = JU.P3.newP(x1.value); +return this.addXPt((f2 = x2.asFloat()) == 0 ? JU.P3.new3(NaN, NaN, NaN) : JU.P3.new3(pt.x / f2, pt.y / f2, pt.z / f2)); +case 9: +return this.addXPt4(x2.tok == 9 ? JU.Quat.newP4(x1.value).div(JU.Quat.newP4(x2.value)).toPoint4f() : (f2 = x2.asFloat()) == 0 ? JU.P4.new4(NaN, NaN, NaN, NaN) : JU.Quat.newP4(x1.value).mul(1 / f2).toPoint4f()); +} +return this.addXFloat(x1.asFloat() / x2.asFloat()); +case 268441091: +f = x2.asFloat(); +if (x1.tok == 9) { +return (f == 0 ? this.addXPt4(JU.P4.new4(NaN, NaN, NaN, NaN)) : x2.tok == 9 ? this.addXPt4(JU.Quat.newP4(x1.value).divLeft(JU.Quat.newP4(x2.value)).toPoint4f()) : this.addXPt4(JU.Quat.newP4(x1.value).mul(1 / f).toPoint4f())); +}return this.addXInt(f == 0 ? 0 : Clazz.doubleToInt(Math.floor(x1.asFloat() / x2.asFloat()))); +case 268441603: +f = Math.pow(x1.asFloat(), x2.asFloat()); +return (x1.tok == 2 && x2.tok == 2 ? this.addXInt(Clazz.floatToInt(f)) : this.addXFloat(f)); +case 268441090: +s = null; +var n = x2.asInt(); +switch (x1.tok) { +case 1073742335: +case 1073742334: +case 2: +default: +break; +case 3: +f = x1.asFloat(); +if (n == 0) return this.addXInt(Math.round(f)); +s = JU.DF.formatDecimal(f, n); +return this.addXStr(s); +case 4: +s = x1.value; +return this.addXStr(n == 0 ? JU.PT.trim(s, "\n\t ") : n == 9999 ? s.toUpperCase() : n == -9999 ? s.toLowerCase() : n > 0 ? JU.PT.formatS(s, n, n, false, false) : JU.PT.formatS(s, n, n - 1, true, false)); +case 7: +var list = JS.SV.strListValue(x1); +for (var i = 0; i < list.length; i++) { +if (n == 0) list[i] = list[i].trim(); + else if (n > 0) list[i] = JU.PT.formatS(list[i], n, n, true, false); + else list[i] = JU.PT.formatS(s, -n, n, false, false); +} +return this.addXAS(list); +case 8: +pt = JU.P3.newP(x1.value); +this.vwr.toUnitCell(pt, JU.P3.new3(n, n, n)); +return this.addXPt(pt); +case 9: +pt4 = x1.value; +if (x2.tok == 8) return this.addXPt((JU.Quat.newP4(pt4)).transform2(x2.value, new JU.P3())); +if (x2.tok == 9) { +var v4 = JU.P4.newPt(x2.value); +(JU.Quat.newP4(pt4)).getThetaDirected(v4); +return this.addXPt4(v4); +}if (n == 0 && x2.tok == 4) { +s = " " + x2.value.toString().trim().toLowerCase() + ":"; +var i = " w:0 x:1 y:2 z:3 normal:4 eulerzxz:5 eulerzyz:6 vector:-1 theta:-2 axisx:-3 axisy:-4 axisz:-5 axisangle:-6 matrix:-9".indexOf(s); +n = (i >= 0 ? JU.PT.parseInt(" w:0 x:1 y:2 z:3 normal:4 eulerzxz:5 eulerzyz:6 vector:-1 theta:-2 axisx:-3 axisy:-4 axisz:-5 axisangle:-6 matrix:-9".substring(i + s.length)) : -99); +}switch (n) { +case 0: +return this.addXFloat(pt4.w); +case 1: +return this.addXFloat(pt4.x); +case 2: +return this.addXFloat(pt4.y); +case 3: +return this.addXFloat(pt4.z); +} +var q = JU.Quat.newP4(pt4); +switch (n) { +case 4: +return this.addXPt(JU.P3.newP(q.getNormal())); +case 5: +return this.addXAF(q.getEulerZXZ()); +case 6: +return this.addXAF(q.getEulerZYZ()); +case -1: +return this.addXPt(JU.P3.newP(q.getVector(-1))); +case -2: +return this.addXFloat(q.getTheta()); +case -3: +return this.addXPt(JU.P3.newP(q.getVector(0))); +case -4: +return this.addXPt(JU.P3.newP(q.getVector(1))); +case -5: +return this.addXPt(JU.P3.newP(q.getVector(2))); +case -6: +var ax = q.toAxisAngle4f(); +return this.addXPt4(JU.P4.new4(ax.x, ax.y, ax.z, (ax.angle * 180 / 3.141592653589793))); +case -9: +return this.addXM3(q.getMatrix()); +default: +return this.addXStr("NaN"); +} +case 11: +var mm = x1.value; +switch (n) { +case 1: +return this.addXFloat(mm.m00 + mm.m11 + mm.m22); +case 2: +return this.addXFloat(mm.determinant3()); +default: +return false; +} +case 12: +var m4 = x1.value; +switch (n) { +case 1: +var m3 = new JU.M3(); +m4.getRotationScale(m3); +return this.addXM3(m3); +case 2: +var v3 = new JU.V3(); +m4.getTranslation(v3); +return this.addXPt(JU.P3.newP(v3)); +default: +return false; +} +case 10: +return this.addXBs(JS.SV.bsSelectRange(x1, n)); +} +return this.addXInt(n == 0 ? x1.asInt() : x1.asInt() % n); +} +return true; +}, "JS.T,JS.SV,JS.SV"); +Clazz.defineMethod(c$, "isDecimal", +function(x){ +var s; +return (x.tok == 3 || x.tok == 4 && ((s = JS.SV.sValue(x).trim()).indexOf(".") >= 0 || s.indexOf("+") > 0 || s.lastIndexOf("-") > 0)); +}, "JS.SV"); +Clazz.defineMethod(c$, "ptValue", +function(x, bsRestrict){ +var pt; +switch (x.tok) { +case 8: +return x.value; +case 10: +var bs = x.value; +if (bs.isEmpty() || Clazz.instanceOf(bs,"JM.BondSet")) break; +if (bsRestrict != null) { +bs = JU.BSUtil.copy(bs); +bs.and(bsRestrict); +}var o = (bs.isEmpty() ? null : this.eval.getBitsetProperty(bs, null, 1145047049, null, null, x.value, null, false, 2147483647, false)); +return o; +case 4: +pt = JU.Escape.uP(JS.SV.sValue(x)); +if (Clazz.instanceOf(pt,"JU.P3")) return pt; +break; +case 7: +pt = JU.Escape.uP("{" + JS.SV.sValue(x).$replace(']', ' ').$replace('[', ' ') + "}"); +if (Clazz.instanceOf(pt,"JU.P3")) return pt; +break; +} +return null; +}, "JS.SV,JU.BS"); +c$.typeOf = Clazz.defineMethod(c$, "typeOf", +function(x){ +var tok = (x == null ? 0 : x.tok); +switch (tok) { +case 1073742335: +case 1073742334: +return "boolean"; +case 10: +return (Clazz.instanceOf(x.value,"JM.BondSet") ? "bondset" : "bitset"); +case 2: +case 3: +case 8: +case 9: +case 4: +case 7: +case 6: +case 15: +case 11: +case 12: +case 14: +return JS.T.astrType[tok]; +} +return "?"; +}, "JS.SV"); +Clazz.defineMethod(c$, "getAllProperties", +function(x2, abbr){ +var bs = x2.value; +var tokens; +var n = bs.cardinality(); +if (n == 0 || !abbr.endsWith("?") || (tokens = JS.T.getAtomPropertiesLike(abbr.substring(0, abbr.length - 1))) == null) return this.addXStr(""); +var ht = new java.util.Hashtable(); +var index = (n == 1 ? bs.nextSetBit(0) : 2147483647); +for (var i = tokens.size(); --i >= 0; ) { +var t = tokens.get(i); +var tok = t.tok; +switch (tok) { +case 1094717448: +case 1094713349: +continue; +default: +if (index == 2147483647) tok |= 480; +ht.put(t.value, JS.SV.getVariable(this.eval.getBitsetProperty(bs, null, tok, null, null, null, null, false, index, true))); +} +} +return this.addXMap(ht); +}, "JS.SV,~S"); +c$.getMatrix4f = Clazz.defineMethod(c$, "getMatrix4f", +function(matRotate, vTranslate){ +return JU.M4.newMV(matRotate, vTranslate == null ? new JU.V3() : JU.V3.newV(vTranslate)); +}, "JU.M3,JU.T3"); +Clazz.defineMethod(c$, "getBoundBox", +function(x2){ +if (x2.tok != 10 || Clazz.instanceOf(x2.value,"JM.BondSet")) return false; +var b = this.vwr.ms.getBoxInfo(x2.value, 1); +var pts = b.getBoundBoxPoints(true); +var list = new JU.Lst(); +for (var i = 0; i < 4; i++) list.addLast(pts[i]); + +return this.addXList(list); +}, "JS.SV"); +Clazz.defineMethod(c$, "getPointOrBitsetOperation", +function(op, x2){ +switch (x2.tok) { +case 7: +switch (op.intValue) { +case 32: +case 64: +case 96: +case 192: +case 128: +case 160: +case 1275068725: +return this.addXObj(this.eval.getMathExt().getMinMax(x2.getList(), op.intValue, true)); +case 1275334681: +return this.addX(x2.pushPop(null, null)); +case 1275068444: +case 1140850693: +return this.addX(x2.sortOrReverse(op.intValue == 1140850693 ? -2147483648 : 1)); +} +var list2 = new Array(x2.getList().size()); +for (var i = 0; i < list2.length; i++) { +var v = JS.SV.unescapePointOrBitsetAsVariable(x2.getList().get(i)); +if (!(Clazz.instanceOf(v,"JS.SV")) || !this.getPointOrBitsetOperation(op, v)) return false; +list2[i] = this.xStack[this.xPt--]; +} +return this.addXAV(list2); +case 8: +switch (op.intValue) { +case 1111492609: +case 1111492629: +return this.addXFloat((x2.value).x); +case 1111492610: +case 1111492630: +return this.addXFloat((x2.value).y); +case 1111492611: +case 1111492631: +return this.addXFloat((x2.value).z); +case 1145047049: +var pt = JU.P3.newP(x2.value); +this.vwr.toCartesian(pt, false); +return this.addXPt(pt); +case 1111492612: +case 1111492613: +case 1111492614: +case 1145047050: +var ptf = JU.P3.newP(x2.value); +this.vwr.toFractional(ptf, false); +return (op.intValue == 1145047050 ? this.addXPt(ptf) : this.addXFloat(op.intValue == 1111492612 ? ptf.x : op.intValue == 1111492613 ? ptf.y : ptf.z)); +case 1145045003: +return this.addXStr(this.vwr.getSymStatic().staticToRationalXYZ(JU.P3.newP(x2.value), " ")); +case 1111492615: +case 1111492616: +case 1111492617: +case 1145047053: +var ptfu = JU.P3.newP(x2.value); +this.vwr.toFractional(ptfu, true); +return (op.intValue == 1145047053 ? this.addXPt(ptfu) : this.addXFloat(op.intValue == 1111492615 ? ptfu.x : op.intValue == 1111492616 ? ptfu.y : ptfu.z)); +case 1111490577: +case 1111490578: +case 1111490579: +case 1145045006: +var ptu = JU.P3.newP(x2.value); +this.vwr.toUnitCell(ptu, null); +this.vwr.toFractional(ptu, false); +return (op.intValue == 1145045006 ? this.addXPt(ptu) : this.addXFloat(op.intValue == 1111490577 ? ptu.x : op.intValue == 1111490578 ? ptu.y : ptu.z)); +} +break; +case 9: +switch (op.intValue) { +case 1111492609: +case 1111492629: +return this.addXFloat((x2.value).x); +case 1111492610: +case 1111492630: +return this.addXFloat((x2.value).y); +case 1111492611: +case 1111492631: +return this.addXFloat((x2.value).z); +case 1140850705: +return this.addXFloat((x2.value).w); +} +break; +case 10: +var isAtoms = (op.intValue != 1677721602); +if (!isAtoms && Clazz.instanceOf(x2.value,"JM.BondSet")) return this.addX(x2); +var bs = x2.value; +if (isAtoms && bs.cardinality() == 1 && (op.intValue & 480) == 0) op.intValue |= 32; +var val = this.eval.getBitsetProperty(bs, null, op.intValue, null, null, null, op.value, false, x2.index, true); +return (isAtoms ? this.addXObj(val) : this.addXBs(JM.BondSet.newBS(val))); +} +return false; +}, "JS.T,JS.SV"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptParallelProcessor.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptParallelProcessor.js new file mode 100755 index 000000000000..9fbcfa382c55 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptParallelProcessor.js @@ -0,0 +1,128 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.api.JmolParallelProcessor", "JS.ScriptFunction", "JU.Lst"], "JS.ScriptParallelProcessor", ["java.util.concurrent.Executors", "JS.ScriptProcess", "$.ScriptProcessRunnable", "JU.Logger", "JV.ShapeManager", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.counter = 0; +this.error = null; +this.lock = null; +this.processes = null; +Clazz.instantialize(this, arguments);}, JS, "ScriptParallelProcessor", JS.ScriptFunction, J.api.JmolParallelProcessor); +Clazz.prepareFields (c$, function(){ +this.lock = new Clazz._O(); +this.processes = new JU.Lst(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.ScriptParallelProcessor, []); +}); +Clazz.overrideMethod(c$, "getExecutor", +function(){ +return java.util.concurrent.Executors.newCachedThreadPool(); +}); +Clazz.overrideMethod(c$, "runAllProcesses", +function(vwr){ +if (this.processes.size() == 0) return; +this.vwr = vwr; +var inParallel = !vwr.isParallel() && vwr.setParallel(true); +var vShapeManagers = new JU.Lst(); +this.error = null; +this.counter = 0; +if (JU.Logger.debugging) JU.Logger.debug("running " + this.processes.size() + " processes on " + JV.Viewer.nProcessors + " processesors inParallel=" + inParallel); +this.counter = this.processes.size(); +for (var i = this.processes.size(); --i >= 0; ) { +var sm = null; +if (inParallel) { +sm = new JV.ShapeManager(vwr); +sm.setParallel(); +vShapeManagers.addLast(sm); +}this.runProcess(this.processes.removeItemAt(0), sm); +} +{ +while (this.counter > 0) { +try { +this.lock.wait(); +} catch (e) { +if (Clazz.exceptionOf(e,"InterruptedException")){ +} else { +throw e; +} +} +if (this.error != null) throw this.error; +} +}this.mergeResults(vShapeManagers); +vwr.setParallel(false); +}, "JV.Viewer"); +Clazz.defineMethod(c$, "mergeResults", +function(vShapeManagers){ +try { +for (var i = 0; i < vShapeManagers.size(); i++) this.mergeShapes(vShapeManagers.get(i)); + +} catch (e) { +if (Clazz.exceptionOf(e, Error)){ +throw e; +} else { +throw e; +} +} finally { +this.counter = -1; +vShapeManagers = null; +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "mergeShapes", +function(shapeManager){ +var newShapes = shapeManager.shapes; +if (newShapes == null) return; +if (this.vwr.shm.shapes == null) this.vwr.shm.shapes = newShapes; + else for (var i = 0; i < newShapes.length; ++i) if (newShapes[i] != null && Clazz.instanceOf(newShapes[i],"J.shape.MeshCollection")) { +if (this.vwr.shm.shapes[i] == null) this.vwr.shm.loadShape(i); +(this.vwr.shm.shapes[i]).merge(newShapes[i]); +} +}, "JV.ShapeManager"); +Clazz.defineMethod(c$, "clearShapeManager", +function(er){ +{ +this.error = er; +this.notifyAll(); +}}, "Error"); +Clazz.overrideMethod(c$, "addProcess", +function(name, context){ +this.processes.addLast( new JS.ScriptProcess(name, context)); +}, "~S,JS.ScriptContext"); +Clazz.defineMethod(c$, "runProcess", +function(process, shapeManager){ +var r = new JS.ScriptProcessRunnable(this, process, this.lock, shapeManager); +var exec = (shapeManager == null ? null : this.getMyExecutor()); +if (exec != null) { +exec.execute(r); +} else { +r.run(); +}}, "JS.ScriptProcess,JV.ShapeManager"); +Clazz.defineMethod(c$, "eval", +function(context, shapeManager){ +this.vwr.evalParallel(context, shapeManager); +}, "JS.ScriptContext,JV.ShapeManager"); +Clazz.defineMethod(c$, "getMyExecutor", +function(){ +if (this.vwr.executor != null || JV.Viewer.nProcessors < 2) return this.vwr.executor; +try { +this.vwr.executor = this.getExecutor(); +} catch (e$$) { +if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +this.vwr.executor = null; +} +} else if (Clazz.exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.vwr.executor = null; +} +} else { +throw e$$; +} +} +if (this.vwr.executor == null) JU.Logger.error("parallel processing is not available"); +return this.vwr.executor; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptParam.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptParam.js new file mode 100755 index 000000000000..cf7ff597bff3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptParam.js @@ -0,0 +1,1144 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JS.ScriptError"], "JS.ScriptParam", ["java.util.Hashtable", "JU.BS", "$.CU", "$.Lst", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "JM.TickInfo", "JS.SV", "$.T", "JU.BSUtil", "$.Edge", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.contextVariables = null; +this.contextFunctions = null; +this.thisContext = null; +this.iToken = 0; +this.theTok = 0; +this.theToken = null; +this.st = null; +this.slen = 0; +this.fractionalPoint = null; +this.coordinatesAreFractional = false; +this.isBondSet = false; +Clazz.instantialize(this, arguments);}, JS, "ScriptParam", JS.ScriptError); +Clazz.defineMethod(c$, "getToken", +function(i){ +if (!this.checkToken(i)) this.error(13); +this.theToken = this.st[i]; +this.theTok = this.theToken.tok; +return this.theToken; +}, "~N"); +Clazz.defineMethod(c$, "tokAt", +function(i){ +return (i < this.slen && this.st[i] != null ? this.st[i].tok : 0); +}, "~N"); +Clazz.defineMethod(c$, "checkToken", +function(i){ +return (this.iToken = i) < this.slen; +}, "~N"); +Clazz.defineMethod(c$, "getParameter", +function(key, tokType, nullAsString){ +var v = this.getContextVariableAsVariable(key, false); +if (v == null) { +if (nullAsString) v = this.vwr.getP(key); + else if ((v = this.vwr.getPOrNull(key)) == null) return null; +}switch (tokType) { +case 1073742190: +return JS.SV.getVariable(v); +case 4: +if (!(Clazz.instanceOf(v,"JU.Lst"))) break; +var sv = v; +var sb = new JU.SB(); +for (var i = 0; i < sv.size(); i++) sb.append(sv.get(i).asString()).appendC('\n'); + +return sb.toString(); +} +return JS.SV.oValue(v); +}, "~S,~N,~B"); +Clazz.defineMethod(c$, "getVarParameter", +function($var, orReturnName){ +var v = this.getContextVariableAsVariable($var, false); +if (v != null) return (orReturnName ? v.asString() : JS.SV.oValue(v)); +var val = this.vwr.getP($var); +return (orReturnName && ("" + val).length == 0 ? $var : val); +}, "~S,~B"); +Clazz.defineMethod(c$, "getContextVariableAsVariable", +function($var, isLocal){ +if ($var.length == 0 || $var.equals("expressionBegin")) return null; +if ($var.charAt(0) == '_') { +var isCallers = $var.equalsIgnoreCase("_callers"); +if (isCallers || $var.equalsIgnoreCase("_caller")) { +var sc = this.thisContext; +var h0 = new java.util.Hashtable(); +var h = null; +var h1; +while (sc != null) { +if (sc.isFunction) { +if (h == null) { +h = h0; +} else { +h1 = new java.util.Hashtable(); +h.put("_caller", JS.SV.newV(6, h1)); +h = h1; +}h.putAll(sc.vars); +h.put("_name", JS.SV.newS(sc.functionName)); +if (!isCallers) break; +}sc = sc.parentContext; +} +return JS.SV.newV(6, h0); +}if ($var.equalsIgnoreCase("_name")) { +var sc = this.thisContext; +while (sc != null) { +if (sc.isFunction) { +return JS.SV.newS(JS.SV.sValue(sc.statement[0])); +}sc = sc.parentContext; +} +return JS.SV.newS(""); +}}$var = $var.toLowerCase(); +var v = (this.contextVariables == null ? null : this.contextVariables.get($var)); +if (v == null && !isLocal && this.thisContext != null) v = this.thisContext.getVariable($var); +return (v != null && v.tok == 1275068418 ? v.arrayToList(v) : v); +}, "~S,~B"); +Clazz.defineMethod(c$, "paramAsStr", +function(i){ +this.getToken(i); +if (this.theToken == null) this.error(13); +return JS.SV.sValue(this.theToken); +}, "~N"); +Clazz.defineMethod(c$, "stringParameter", +function(index){ +if (!this.checkToken(index) || this.getToken(index).tok != 4) this.error(41); +return this.theToken.value; +}, "~N"); +Clazz.defineMethod(c$, "stringParameterSet", +function(i){ +switch (this.tokAt(i)) { +case 4: +var s = this.stringParameter(i); +if (s.startsWith("[\"")) { +var o = this.vwr.evaluateExpression(s); +if ((typeof(o)=='string')) return JU.PT.split(o, "\n"); +}return Clazz.newArray(-1, [s]); +case 1073742195: +i += 2; +break; +case 268437504: +++i; +break; +case 7: +return JS.SV.strListValue(this.getToken(i)); +default: +this.invArg(); +} +var tok; +var v = new JU.Lst(); +while ((tok = this.tokAt(i)) != 268437505) { +switch (tok) { +case 268436992: +break; +case 4: +v.addLast(this.stringParameter(i)); +break; +default: +case 0: +this.invArg(); +} +i++; +} +this.iToken = i; +var n = v.size(); +var sParams = new Array(n); +for (var j = 0; j < n; j++) { +sParams[j] = v.get(j); +} +return sParams; +}, "~N"); +Clazz.defineMethod(c$, "objectNameParameter", +function(index){ +if (!this.checkToken(index)) this.error(37); +return this.paramAsStr(index); +}, "~N"); +Clazz.defineMethod(c$, "atomCenterOrCoordinateParameter", +function(i, ret){ +switch (this.getToken(i).tok) { +case 10: +case 1073742325: +var bs = (this).atomExpression(this.st, i, 0, true, false, ret, true); +if (bs == null) { +if (ret == null || !(Clazz.instanceOf(ret[0],"JU.P3"))) this.invArg(); +return ret[0]; +}if (ret != null) { +if (ret.length == 2 && Clazz.instanceOf(ret[1],"JU.BS")) { +bs = JU.BSUtil.copy(bs); +bs.and(ret[1]); +}ret[0] = bs; +}return (bs.cardinality() == 1 ? this.vwr.ms.at[bs.nextSetBit(0)] : this.vwr.ms.getAtomSetCenter(bs)); +case 1073742332: +case 8: +return this.getPoint3f(i, true, true); +} +this.invArg(); +return null; +}, "~N,~A"); +Clazz.defineMethod(c$, "isCenterParameter", +function(i){ +var tok = this.tokAt(i); +return (tok == 1073742330 || tok == 1073742332 || tok == 1073742325 || tok == 8 || tok == 10); +}, "~N"); +Clazz.defineMethod(c$, "centerParameter", +function(i, ret){ +return this.centerParameterForModel(i, -2147483648, ret); +}, "~N,~A"); +Clazz.defineMethod(c$, "centerParameterForModel", +function(i, modelIndex, ret){ +var center = null; +if (this.checkToken(i)) { +switch (this.getToken(i).tok) { +case 1814695966: +return this.getUnitCellCenter(); +case 1073742330: +var id = this.objectNameParameter(++i); +var index = -2147483648; +if (this.tokAt(i + 1) == 268437504) { +index = (this).parameterExpressionList(-i - 1, -1, true).get(0).asInt(); +if (this.getToken(--this.iToken).tok != 268437505) this.invArg(); +}if (this.chk) return new JU.P3(); +if (this.tokAt(i + 1) == 1073742336 && (this.tokAt(i + 2) == 1140850691 || this.tokAt(i + 2) == 1140850694)) { +index = 2147483647; +this.iToken = i + 2; +}if ((center = (this).getObjectCenter(id, index, modelIndex)) == null) this.errorStr(12, id); +break; +case 10: +case 1073742325: +case 1073742332: +case 8: +if (ret == null) ret = new Array(1); +center = this.atomCenterOrCoordinateParameter(i, ret); +break; +} +}if (center == null) this.error(11); +return center; +}, "~N,~N,~A"); +Clazz.defineMethod(c$, "getUnitCellCenter", +function(){ +var center = new JU.P3(); +var uc = this.vwr.getCurrentUnitCell(); +if (uc != null) { +var pts = uc.getUnitCellVerticesNoOffset(); +var off = uc.getCartesianOffset(); +for (var j = 0; j < 8; j++) { +center.add(pts[j]); +center.add(off); +} +}center.scale(0.125); +return center; +}); +Clazz.defineMethod(c$, "planeParameter", +function(i, isBest){ +var vTemp = new JU.V3(); +var vTemp2 = new JU.V3(); +var plane = null; +var pt1 = null; +var pt2 = null; +var pt3 = null; +var have3 = false; +if (this.tokAt(i) == 134217750) i++; +var bestPoints = null; +var isNegated = (this.tokAt(i) == 268440576); +if (isNegated) i++; +try { +if (i < this.slen) { +switch (this.getToken(i).tok) { +case 1073742330: +var id = this.objectNameParameter(++i); +if (this.chk) return new JU.P4(); +plane = (this).getPlaneForObject(id, vTemp); +break; +case 1111492629: +if (!this.checkToken(++i) || this.getToken(i++).tok != 268440324) this.evalError("x=?", null); +plane = JU.P4.new4(1, 0, 0, -this.floatParameter(i)); +break; +case 1111492630: +if (!this.checkToken(++i) || this.getToken(i++).tok != 268440324) this.evalError("y=?", null); +plane = JU.P4.new4(0, 1, 0, -this.floatParameter(i)); +break; +case 1111492631: +if (!this.checkToken(++i) || this.getToken(i++).tok != 268440324) this.evalError("z=?", null); +plane = JU.P4.new4(0, 0, 1, -this.floatParameter(i)); +break; +case 1073741824: +case 4: +case 9: +plane = this.planeValue(this.theToken); +break; +case 1073742332: +case 8: +if (!this.isPoint3f(i)) { +plane = this.getPoint4f(i); +break; +}case 10: +case 1073742325: +if (isBest) { +var bs = this.getAtomsStartingAt(i); +bestPoints = new Array(bs.cardinality()); +for (var p = 0, j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +bestPoints[p++] = this.vwr.ms.at[j]; +} +} else { +pt1 = this.atomCenterOrCoordinateParameter(i, null); +if (this.getToken(++this.iToken).tok == 268436992) ++this.iToken; +pt2 = this.atomCenterOrCoordinateParameter(this.iToken, null); +if (this.getToken(++this.iToken).tok == 268436992) ++this.iToken; +if (this.isFloatParameter(this.iToken)) { +var frac = this.floatParameter(this.iToken); +plane = new JU.P4(); +vTemp.sub2(pt2, pt1); +vTemp.scale(frac * 2); +JU.Measure.getBisectingPlane(pt1, vTemp, vTemp2, vTemp, plane); +} else { +pt3 = this.atomCenterOrCoordinateParameter(this.iToken, null); +i = this.iToken; +have3 = true; +}}break; +default: +if (this.isArrayParameter(i)) { +if (isBest) { +bestPoints = this.getPointArray(i, -1, false); +} else { +var list = this.getPointOrCenterVector(this.getToken(i)); +var n = list.size(); +if (n != 3) this.invArg(); +pt1 = list.get(0); +pt2 = list.get(1); +pt3 = list.get(2); +have3 = true; +}}} +if (isBest) { +plane = new JU.P4(); +JU.Measure.calcBestPlaneThroughPoints(bestPoints, -1, plane); +} else if (have3) { +plane = new JU.P4(); +var norm = new JU.P3(); +var w = JU.Measure.getNormalThroughPoints(pt1, pt2, pt3, norm, vTemp); +plane.set4(norm.x, norm.y, norm.z, w); +}if (!this.chk && JU.Logger.debugging) JU.Logger.debug(" defined plane: " + plane); +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +plane = null; +} else { +throw e; +} +} +if (plane == null) this.errorMore(38, "{a b c d}", "\"xy\" \"xz\" \"yz\" \"x=...\" \"y=...\" \"z=...\" \"ab\" \"bc\" \"ac\" \"ab1\" \"bc1\" \"ac1\"", "$xxxxx"); +if (isNegated) { +plane.scale4(-1); +}return plane; +}, "~N,~B"); +Clazz.defineMethod(c$, "getAtomsStartingAt", +function(i){ +var bs = new JU.BS(); +i--; +while (this.tokAt(++i) == 10 || this.tokAt(i) == 1073742325) { +bs.or((this).atomExpressionAt(i)); +i = this.iToken; +} +return bs; +}, "~N"); +Clazz.defineMethod(c$, "getPointOrCenterVector", +function(t){ +var data = new JU.Lst(); +var pt; +var bs; +var pts = (t).getList(); +if (pts == null) this.invArg(); +for (var j = 0; j < pts.size(); j++) { +if ((pt = JS.SV.ptValue(pts.get(j))) != null) { +data.addLast(pt); +} else if ((bs = JS.SV.getBitSet(pts.get(j), true)) != null) { +data.addLast(bs.cardinality() == 1 ? JU.P3.newP(this.vwr.ms.at[bs.nextSetBit(0)]) : this.vwr.ms.getAtomSetCenter(bs)); +} else { +this.invArg(); +}} +return data; +}, "JS.T"); +Clazz.defineMethod(c$, "hklParameter", +function(i, pts, allowOffset){ +if (!this.chk && this.vwr.getCurrentUnitCell() == null) this.error(33); +var pt = this.getPointOrPlane(i, 71); +var offset = NaN; +if (allowOffset) { +offset = (Clazz.instanceOf(pt,"JU.P4") ? (pt).w : NaN); +if (this.tokAt(this.iToken + 1) == 1073742066) { +this.iToken++; +offset = this.floatParameter(++this.iToken); +}}var p = this.getHklPlane(pt, offset, pts); +if (p == null) this.error(3); +if (!this.chk && JU.Logger.debugging) JU.Logger.debug("defined plane: " + p); +return p; +}, "~N,JU.Lst,~B"); +Clazz.defineMethod(c$, "getHklPlane", +function(pt, offset, pts){ +var pt1 = JU.P3.new3(pt.x == 0 ? 1 : 1 / pt.x, 0, 0); +var pt2 = JU.P3.new3(0, pt.y == 0 ? 1 : 1 / pt.y, 0); +var pt3 = JU.P3.new3(0, 0, pt.z == 0 ? 1 : 1 / pt.z); +if (pt.x == 0 && pt.y == 0 && pt.z == 0) { +return null; +} else if (pt.x == 0 && pt.y == 0) { +pt1.set(1, 0, pt3.z); +pt2.set(0, 1, pt3.z); +} else if (pt.y == 0 && pt.z == 0) { +pt2.set(pt1.x, 0, 1); +pt3.set(pt1.x, 1, 0); +} else if (pt.z == 0 && pt.x == 0) { +pt3.set(0, pt2.y, 1); +pt1.set(1, pt2.y, 0); +} else if (pt.x == 0) { +pt1.set(1, pt2.y, 0); +} else if (pt.y == 0) { +pt2.set(0, 1, pt3.z); +} else if (pt.z == 0) { +pt3.set(pt1.x, 0, 1); +}this.vwr.toCartesian(pt1, false); +this.vwr.toCartesian(pt2, false); +this.vwr.toCartesian(pt3, false); +var v3 = new JU.V3(); +var plane = JU.Measure.getPlaneThroughPoints(pt1, pt2, pt3, new JU.V3(), v3, new JU.P4()); +if (!Float.isNaN(offset)) { +plane.w = -offset; +if (pts != null) { +JU.Measure.getPlaneProjection(pt1, plane, pt1, v3); +JU.Measure.getPlaneProjection(pt2, plane, pt2, v3); +JU.Measure.getPlaneProjection(pt3, plane, pt3, v3); +}}if (pts != null) { +pts.addLast(pt1); +pts.addLast(pt2); +pts.addLast(pt3); +}return plane; +}, "JU.T3,~N,JU.Lst"); +Clazz.defineMethod(c$, "getPointOrPlane", +function(index, mode){ +var coord = Clazz.newFloatArray (6, 0); +var code555 = Clazz.newIntArray (6, 0); +var useCell555P4 = false; +var n = 0; +var minDim = ((mode & 7) == 4 ? 4 : 3); +var maxDim = ((mode & 7) == 3 ? 3 : 4); +var implicitFractional = ((mode & 64) != 0); +var integerOnly = ((mode & 8) != 0); +var isOK = true; +try { +this.coordinatesAreFractional = implicitFractional; +if (this.tokAt(index) == 8) { +if (minDim <= 3 && maxDim >= 3) return this.getToken(index).value; +isOK = false; +return null; +}if (this.tokAt(index) == 9) { +if (minDim <= 4 && maxDim >= 4) return this.getToken(index).value; +isOK = false; +return null; +}var multiplier = 1; +out : for (var i = index; i < this.slen; i++) { +switch (this.getToken(i).tok) { +case 1073742332: +case 268436992: +case 268438528: +case 268439552: +break; +case 1073742338: +break out; +case 268440576: +multiplier = -1; +break; +case 1073742363: +if (n == 6) { +isOK = false; +return null; +}coord[n++] = this.theToken.intValue; +multiplier = -1; +break; +case 2: +case 1073742362: +if (n == 6 || this.theToken.intValue == 2147483647) this.invArg(); +if (implicitFractional && this.theToken.intValue > 999999999) useCell555P4 = true; +code555[n] = this.theToken.intValue; +coord[n++] = this.theToken.intValue * multiplier; +multiplier = 1; +break; +case 268441088: +case 1073742358: +if (!implicitFractional && (mode & 16) == 0) { +isOK = false; +return null; +}if (this.theTok == 268441088) this.getToken(++i); +n--; +if (n < 0 || integerOnly) { +isOK = false; +return null; +}if (Clazz.instanceOf(this.theToken.value, Integer) || this.theTok == 2) { +coord[n++] /= (this.theToken.intValue == 2147483647 ? (this.theToken.value).intValue() : this.theToken.intValue); +} else if (Clazz.instanceOf(this.theToken.value, Float)) { +coord[n++] /= (this.theToken.value).floatValue(); +}this.coordinatesAreFractional = true; +break; +case 1073742357: +case 1073741824: +coord[n++] = NaN; +break; +case 3: +case 1073742359: +if (integerOnly) { +isOK = false; +return null; +}if (n == 6) { +isOK = false; +return null; +}coord[n++] = (this.theToken.value).floatValue(); +break; +default: +this.iToken--; +break out; +} +} +if (n < minDim || n > maxDim) { +isOK = false; +return null; +}if (n == 3) { +if (useCell555P4) { +return JU.P4.new4(coord[0], coord[1], coord[2], (code555[0] % 1000) * 1000 + (code555[1] % 1000) + 1000000); +}var pt = JU.P3.new3(coord[0], coord[1], coord[2]); +if (this.coordinatesAreFractional && (mode & 32) != 0) { +this.fractionalPoint = JU.P3.newP(pt); +if (!this.chk) this.vwr.toCartesian(pt, false); +}return pt; +}if (n == 4) { +if (implicitFractional || !this.coordinatesAreFractional) { +var plane = JU.P4.new4(coord[0], coord[1], coord[2], coord[3]); +return plane; +}}isOK = false; +return null; +} finally { +if (!isOK && (mode & 128) == 0) this.invArg(); +} +}, "~N,~N"); +Clazz.defineMethod(c$, "isPoint3f", +function(i){ +var itok = this.tokAt(i); +if (itok == 0) return false; +var isOK; +if ((isOK = (itok == 8)) || itok == 9 || this.isFloatParameter(i + 1) && this.isFloatParameter(i + 2) && this.isFloatParameter(i + 3) && this.isFloatParameter(i + 4)) return isOK; +this.ignoreError = true; +var t = this.iToken; +isOK = true; +try { +if (this.getPoint3f(i, true, false) == null) isOK = false; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +isOK = false; +} else { +throw e; +} +} +this.ignoreError = false; +this.iToken = t; +return isOK; +}, "~N"); +Clazz.defineMethod(c$, "getPoint3f", +function(i, allowFractional, throwE){ +return this.getPointOrPlane(i, 3 | 32 | (allowFractional ? 16 : 0) | (throwE ? 0 : 128)); +}, "~N,~B,~B"); +Clazz.defineMethod(c$, "getFractionalPoint", +function(i){ +return this.getPointOrPlane(i, 71); +}, "~N"); +Clazz.defineMethod(c$, "getPoint4f", +function(i){ +return this.getPointOrPlane(i, 4); +}, "~N"); +Clazz.defineMethod(c$, "xypParameter", +function(index){ +var tok = this.tokAt(index); +if (tok == 1073742195) tok = this.tokAt(++index); +if (tok != 268437504 || !this.isFloatParameter(++index)) return null; +var pt = new JU.P3(); +pt.x = this.floatParameter(index); +if (this.tokAt(++index) == 268436992) index++; +if (!this.isFloatParameter(index)) return null; +pt.y = this.floatParameter(index); +var isPercent = (this.tokAt(++index) == 268441090); +if (isPercent) ++index; +if (this.tokAt(index) != 268437505) return null; +this.iToken = index; +pt.z = (isPercent ? -1 : 1) * 3.4028235E38; +return pt; +}, "~N"); +Clazz.defineMethod(c$, "xyzpParameter", +function(index){ +var tok = this.tokAt(index); +if (tok == 1073742195) tok = this.tokAt(++index); +if (tok != 268437504 || !this.isFloatParameter(++index)) return null; +var pt = new JU.P4(); +pt.x = this.floatParameter(index); +if (this.tokAt(++index) == 268436992) index++; +if (!this.isFloatParameter(index)) return null; +pt.y = this.floatParameter(index); +if (this.tokAt(++index) == 268436992) index++; +if (!this.isFloatParameter(index)) return null; +pt.z = this.floatParameter(index); +var isPercent = (this.tokAt(++index) == 268441090); +if (isPercent) ++index; +if (this.tokAt(index) != 268437505) return null; +this.iToken = index; +pt.w = (isPercent ? -1 : 1) * 3.4028235E38; +return pt; +}, "~N"); +Clazz.defineMethod(c$, "optParameterAsString", +function(i){ +return (i >= this.slen ? "" : this.paramAsStr(i)); +}, "~N"); +Clazz.defineMethod(c$, "intParameter", +function(index){ +if (this.checkToken(index)) if (this.getToken(index).tok == 2) return this.theToken.intValue; +this.error(20); +return 0; +}, "~N"); +Clazz.defineMethod(c$, "isFloatParameter", +function(index){ +switch (this.tokAt(index)) { +case 2: +case 3: +return true; +} +return false; +}, "~N"); +Clazz.defineMethod(c$, "floatParameter", +function(index){ +if (this.checkToken(index)) { +this.getToken(index); +switch (this.theTok) { +case 1073742363: +return -this.theToken.intValue; +case 1073742362: +case 2: +return this.theToken.intValue; +case 1073742359: +case 3: +return (this.theToken.value).floatValue(); +} +}this.error(34); +return 0; +}, "~N"); +Clazz.defineMethod(c$, "getPointArray", +function(i, nPoints, allowNull){ +if (nPoints == 2147483647) nPoints = -1; +var points = (nPoints < 0 ? null : new Array(nPoints)); +var vp = (nPoints < 0 ? new JU.Lst() : null); +var tok = (i < 0 ? 7 : this.getToken(i++).tok); +switch (tok) { +case 7: +var v = (this.theToken).getList(); +if (nPoints >= 0 && v.size() != nPoints) this.invArg(); +nPoints = v.size(); +if (points == null) points = new Array(nPoints); +for (var j = 0; j < nPoints; j++) if ((points[j] = JS.SV.ptValue(v.get(j))) == null && !allowNull) this.invArg(); + +return points; +case 1073742195: +tok = this.tokAt(i++); +break; +} +if (tok != 268437504) this.invArg(); +var n = 0; +while (tok != 268437505 && tok != 0) { +tok = this.getToken(i).tok; +switch (tok) { +case 0: +case 268437505: +break; +case 268436992: +i++; +break; +default: +if (nPoints >= 0 && n == nPoints) { +tok = 0; +break; +}var pt = this.centerParameter(i, null); +if (points == null) vp.addLast(pt); + else points[n] = pt; +n++; +i = this.iToken + 1; +} +} +if (tok != 268437505) this.invArg(); +if (points == null) points = vp.toArray( new Array(vp.size())); +if (nPoints > 0 && points[nPoints - 1] == null) this.invArg(); +return points; +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "listParameter", +function(i, nMin, nMax){ +return this.listParameter4(i, nMin, nMax, false); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "listParameter4", +function(i, nMin, nMax, allowString){ +var v = new JU.Lst(); +var tok = this.tokAt(i); +if (tok == 1073742195) tok = this.tokAt(++i); +var haveBrace = (tok == 1073742332); +var haveSquare = (tok == 268437504); +if (haveBrace || haveSquare) i++; +var n = 0; +while (n < nMax) { +tok = this.tokAt(i); +if (haveBrace && tok == 1073742338 || haveSquare && tok == 268437505) break; +switch (tok) { +case 268436992: +case 268440576: +case 1073742332: +case 1073742338: +break; +case 4: +if (allowString) v.addLast(this.stringParameter(i)); +break; +case 9: +var pt4 = this.getPoint4f(i); +v.addLast(Float.$valueOf(pt4.x)); +v.addLast(Float.$valueOf(pt4.y)); +v.addLast(Float.$valueOf(pt4.z)); +v.addLast(Float.$valueOf(pt4.w)); +n += 4; +break; +default: +if (this.isCenterParameter(i)) { +var pt = this.centerParameter(i, null); +i = this.iToken; +v.addLast(Float.$valueOf(pt.x)); +v.addLast(Float.$valueOf(pt.y)); +v.addLast(Float.$valueOf(pt.z)); +n += 3; +break; +}v.addLast(Float.$valueOf(this.floatParameter(i))); +n++; +} +i += (n == nMax && haveSquare && this.tokAt(i + 1) == 1073742338 ? 2 : 1); +} +if (haveBrace && this.tokAt(i++) != 1073742338 || haveSquare && this.tokAt(i++) != 268437505 || n < nMin || n > nMax) this.invArg(); +this.iToken = i - 1; +return v; +}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "floatParameterSet", +function(i, nMin, nMax){ +var v = null; +var fparams = null; +var n = 0; +var s = null; +this.iToken = i; +switch (this.tokAt(i)) { +case 4: +s = JS.SV.sValue(this.st[i]); +s = JU.PT.replaceWithCharacter(s, "{},[]\"'", ' '); +fparams = JU.PT.parseFloatArray(s); +n = fparams.length; +break; +case 7: +fparams = JS.SV.flistValue(this.st[i], 0); +n = fparams.length; +break; +default: +v = this.listParameter(i, nMin, nMax); +n = v.size(); +} +if (n < nMin || n > nMax) this.invArg(); +if (fparams == null) { +fparams = Clazz.newFloatArray (n, 0); +for (var j = 0; j < n; j++) fparams[j] = (v.get(j)).floatValue(); + +}return fparams; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "isArrayParameter", +function(i){ +switch (this.tokAt(i)) { +case 7: +case 11: +case 12: +case 1073742195: +case 268437504: +return true; +} +return false; +}, "~N"); +Clazz.defineMethod(c$, "getQuaternionParameter", +function(i, bsAtoms, divideByCurrent){ +switch (this.tokAt(i)) { +case 7: +var sv = (this.getToken(i)).getList(); +var p4 = null; +if (sv.size() == 0 || (p4 = JS.SV.pt4Value(sv.get(0))) == null) this.invArg(); +return JU.Quat.newP4(p4); +case 1073741864: +return (this.chk ? null : this.vwr.getOrientation(1073741864, (divideByCurrent ? "best" : ""), bsAtoms, null)); +default: +return JU.Quat.newP4(this.getPoint4f(i)); +} +}, "~N,JU.BS,~B"); +Clazz.defineMethod(c$, "checkLast", +function(i){ +return this.checkLength(i + 1) - 1; +}, "~N"); +Clazz.defineMethod(c$, "checkLength", +function(length){ +if (length >= 0) return this.checkLengthErrorPt(length, 0); +if (this.slen > -length) { +this.iToken = -length; +this.bad(); +}return this.slen; +}, "~N"); +Clazz.defineMethod(c$, "checkLengthErrorPt", +function(length, errorPt){ +if (this.slen != length) { +this.iToken = errorPt > 0 ? errorPt : this.slen; +if (errorPt > 0) this.invArg(); + else this.bad(); +}return this.slen; +}, "~N,~N"); +Clazz.defineMethod(c$, "checkLength23", +function(){ +this.iToken = this.slen; +if (this.slen != 2 && this.slen != 3) this.bad(); +return this.slen; +}); +Clazz.defineMethod(c$, "checkLength34", +function(){ +this.iToken = this.slen; +if (this.slen != 3 && this.slen != 4) this.bad(); +return this.slen; +}); +Clazz.defineMethod(c$, "modelNumberParameter", +function(index){ +var iFrame = 0; +var useModelNumber = false; +switch (this.tokAt(index)) { +case 2: +useModelNumber = true; +case 3: +iFrame = this.getToken(index).intValue; +break; +case 4: +iFrame = JU.Edge.getFloatEncodedInt(this.stringParameter(index)); +break; +default: +this.invArg(); +} +return this.vwr.ms.getModelNumberIndex(iFrame, useModelNumber, true); +}, "~N"); +Clazz.defineMethod(c$, "getMadParameter", +function(){ +var mad = 1; +var itok = this.getToken(1).tok; +switch (itok) { +case 1073742072: +(this).restrictSelected(false, false); +case 1073742335: +break; +case 1073742334: +mad = 0; +break; +case 2: +var radiusRasMol = this.intParameterRange(1, 0, 750); +mad = radiusRasMol * 4 * 2; +break; +case 3: +var f = this.floatParameterRange(1, -3, 3); +mad = (Float.isNaN(f) ? 2147483647 : Clazz.doubleToInt(Math.floor(f * 1000 * 2))); +if (mad < 0) { +(this).restrictSelected(false, false); +mad = -mad; +}break; +default: +this.error(6); +} +return mad; +}); +Clazz.defineMethod(c$, "intParameterRange", +function(i, min, max){ +var val = this.intParameter(i); +if (val < min || val > max) { +this.integerOutOfRange(min, max); +return 2147483647; +}return val; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "floatParameterRange", +function(i, min, max){ +var val = this.floatParameter(i); +if (val < min || val > max) { +this.numberOutOfRange(min, max); +return NaN; +}return val; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getPointVector", +function(t, i){ +switch (t.tok) { +case 10: +return this.vwr.ms.getAtomPointVector(t.value); +case 7: +var data = new JU.Lst(); +var pt; +var pts = (t).getList(); +for (var j = 0; j < pts.size(); j++) { +var v = pts.get(j); +if ((pt = (v.tok == 10 ? this.vwr.ms.getAtomSetCenter(JS.SV.getBitSet(v, false)) : JS.SV.ptValue(v))) == null) return null; +data.addLast(pt); +} +return data; +} +if (i > 0) return this.vwr.ms.getAtomPointVector((this).atomExpressionAt(i)); +return null; +}, "JS.T,~N"); +Clazz.defineMethod(c$, "isColorParam", +function(i){ +var tok = this.tokAt(i); +return tok != 0 && (tok == 570425378 || tok == 1073742195 || tok == 268437504 || tok == 7 || tok == 8 || this.isPoint3f(i) || (tok == 4 || JS.T.tokAttr(tok, 1073741824)) && JU.CU.getArgbFromString(this.st[i].value) != 0); +}, "~N"); +Clazz.defineMethod(c$, "getArgbParam", +function(index){ +return this.getArgbParamOrNone(index, false); +}, "~N"); +Clazz.defineMethod(c$, "getArgbParamLast", +function(index, allowNone){ +var icolor = this.getArgbParamOrNone(index, allowNone); +this.checkLast(this.iToken); +return icolor; +}, "~N,~B"); +Clazz.defineMethod(c$, "getArgbParamOrNone", +function(index, allowNone){ +var pt = null; +if (this.checkToken(index)) { +switch (this.getToken(index).tok) { +default: +if (!JS.T.tokAttr(this.theTok, 1073741824)) break; +case 570425378: +case 4: +return JU.CU.getArgbFromString(this.paramAsStr(index)); +case 1073742195: +return this.getColorTriad(index + 2); +case 268437504: +return this.getColorTriad(++index); +case 7: +var rgb = JS.SV.flistValue(this.theToken, 3); +if (rgb != null && rgb.length != 3) pt = JU.P3.new3(rgb[0], rgb[1], rgb[2]); +break; +case 8: +pt = this.theToken.value; +break; +case 1073742332: +pt = this.getPoint3f(index, false, true); +break; +case 1073742333: +if (allowNone) return 0; +} +}if (pt == null) this.error(8); +return JU.CU.colorPtToFFRGB(pt); +}, "~N,~B"); +Clazz.defineMethod(c$, "getColorTriad", +function(i){ +var colors = Clazz.newFloatArray (3, 0); +var n = 0; +var hex = ""; +this.getToken(i); +var pt = null; +var val = 0; +out : switch (this.theTok) { +case 2: +case 1073742362: +case 3: +for (; i < this.slen; i++) { +switch (this.getToken(i).tok) { +case 268436992: +continue; +case 1073741824: +if (n != 1 || colors[0] != 0) this.error(4); +hex = "0" + this.paramAsStr(i); +break out; +case 3: +if (n > 2) this.error(4); +val = this.floatParameter(i); +break; +case 2: +if (n > 2) this.error(4); +val = this.theToken.intValue; +break; +case 1073742362: +if (n > 2) this.error(4); +val = (this.theToken.value).intValue() % 256; +break; +case 268437505: +if (n != 3) this.error(4); +--i; +pt = JU.P3.new3(colors[0], colors[1], colors[2]); +break out; +default: +this.error(4); +} +colors[n++] = val; +} +this.error(4); +break; +case 8: +pt = this.theToken.value; +break; +case 1073741824: +hex = this.paramAsStr(i); +break; +default: +this.error(4); +} +if (this.getToken(++i).tok != 268437505) this.error(4); +if (pt != null) return JU.CU.colorPtToFFRGB(pt); +if ((n = JU.CU.getArgbFromString("[" + hex + "]")) == 0) this.error(4); +return n; +}, "~N"); +Clazz.defineMethod(c$, "tickParamAsStr", +function(index, allowUnitCell, allowScale, allowFirst){ +this.iToken = index - 1; +if (this.tokAt(index) != 1073742164) return null; +var tickInfo; +var str = " "; +switch (this.tokAt(index + 1)) { +case 1111492629: +case 1111492630: +case 1111492631: +str = this.paramAsStr(++index).toLowerCase(); +break; +case 1073741824: +this.invArg(); +} +if (this.tokAt(++index) == 1073742333) { +tickInfo = new JM.TickInfo(null); +tickInfo.type = str.charAt(0); +this.iToken = index; +return tickInfo; +}tickInfo = new JM.TickInfo(this.getPointOrPlane(index, 19)); +if (this.coordinatesAreFractional || this.tokAt(this.iToken + 1) == 1814695966) { +tickInfo.scale = JU.P3.new3(NaN, NaN, NaN); +allowScale = false; +}if (this.tokAt(this.iToken + 1) == 1814695966) this.iToken++; +tickInfo.type = str.charAt(0); +if (this.tokAt(this.iToken + 1) == 1287653388) tickInfo.tickLabelFormats = this.stringParameterSet(this.iToken + 2); +if (!allowScale) return tickInfo; +if (this.tokAt(this.iToken + 1) == 536875059) { +if (this.isFloatParameter(this.iToken + 2)) { +var f = this.floatParameter(this.iToken + 2); +tickInfo.scale = JU.P3.new3(f, f, f); +} else { +tickInfo.scale = this.getPoint3f(this.iToken + 2, true, true); +}}if (allowFirst) if (this.tokAt(this.iToken + 1) == 1073741942) tickInfo.first = this.floatParameter(this.iToken + 2); +return tickInfo; +}, "~N,~B,~B,~B"); +Clazz.defineMethod(c$, "setBooleanProperty", +function(key, value){ +if (!this.chk) this.vwr.setBooleanProperty(key, value); +}, "~S,~B"); +Clazz.defineMethod(c$, "setIntProperty", +function(key, value){ +if (!this.chk) this.vwr.setIntProperty(key, value); +return true; +}, "~S,~N"); +Clazz.defineMethod(c$, "setFloatProperty", +function(key, value){ +if (!this.chk) this.vwr.setFloatProperty(key, value); +return true; +}, "~S,~N"); +Clazz.defineMethod(c$, "setStringProperty", +function(key, value){ +if (!this.chk) this.vwr.setStringProperty(key, value); +}, "~S,~S"); +Clazz.defineMethod(c$, "checkHKL", +function(pt){ +if (Math.abs(pt.x) < 1 || Math.abs(pt.y) < 1 || Math.abs(pt.z) < 1 || pt.x != Clazz.floatToInt(pt.x) || pt.y != Clazz.floatToInt(pt.y) || pt.z != Clazz.floatToInt(pt.z)) this.invArg(); +return pt; +}, "JU.T3"); +Clazz.defineMethod(c$, "planeValue", +function(x){ +var pt; +var sym = null; +var offset = NaN; +var vc = null; +switch (x.tok) { +case 9: +return x.value; +case 7: +break; +case 4: +case 1073741824: +var s = x.value; +var isMinus = s.startsWith("-"); +var f = (isMinus ? -1 : 1); +if (isMinus) s = s.substring(1); +var p4 = null; +var len = s.length; +var mode = (len < 2 ? -1 : "xy yz xz x= y= z= ab bc ac a= b= c=".indexOf(s.substring(0, 2).toLowerCase())); +if (mode >= 18 && (sym = this.vwr.getCurrentUnitCell()) == null) { +mode -= 18; +}var isab = (s.indexOf("=") < 0); +if (len > 2) { +if (!isab) offset = -f * JU.PT.parseFloat(s.substring(2)); + else if (Float.isNaN(offset) && mode >= 18 && s.charAt(2) == '1') offset = -1; +}switch (mode) { +case 0: +return JU.P4.new4(1, 1, 0, f); +case 3: +return JU.P4.new4(0, 1, 1, f); +case 6: +return JU.P4.new4(1, 0, 1, f); +case 9: +p4 = JU.P4.new4(1, 0, 0, -f * JU.PT.parseFloat(s.substring(2))); +break; +case 12: +p4 = JU.P4.new4(0, 1, 0, -f * JU.PT.parseFloat(s.substring(2))); +break; +case 15: +p4 = JU.P4.new4(0, 0, 1, -f * JU.PT.parseFloat(s.substring(2))); +break; +case 18: +if (Float.isNaN(offset)) offset = 0; +case 33: +p4 = this.getHklPlane(vc = JU.P3.new3(0, 0, 1), 0, null); +p4.scale4(f = -f); +break; +case 21: +if (Float.isNaN(offset)) offset = 0; +case 27: +p4 = this.getHklPlane(vc = JU.P3.new3(1, 0, 0), 0, null); +p4.scale4(-(f = -f)); +break; +case 24: +if (Float.isNaN(offset)) offset = 0; +case 30: +p4 = this.getHklPlane(vc = JU.P3.new3(0, 1, 0), 0, null); +p4.scale4(-f); +break; +} +if (p4 == null || Float.isNaN(p4.w)) break; +if (sym != null && !Float.isNaN(offset)) { +sym.toCartesian(vc, true); +if (isab || !isMinus) { +offset = -offset; +}p4.w = vc.dot(p4) * offset; +if (!isab || offset != 0) p4.scale(-1); +}return p4; +default: +return null; +} +pt = JU.Escape.uP(JS.SV.sValue(x)); +return (Clazz.instanceOf(pt,"JU.P4") ? pt : null); +}, "JS.T"); +Clazz.defineMethod(c$, "setScriptArguments", +function(params, isCallback){ +if (this.contextVariables == null) this.contextVariables = new java.util.Hashtable(); +this.contextVariables.put("_arguments", (params == null ? JS.SV.getVariableAI( Clazz.newIntArray(-1, [])) : isCallback ? JS.SV.newV(1275068418, params) : JS.SV.getVariableList(params))); +this.contextVariables.put("_argcount", JS.SV.newI(params == null ? 0 : isCallback ? (params).length : (params).size())); +}, "~O,~B"); +Clazz.defineMethod(c$, "getCallbackParameter", +function(n){ +var v = (this.contextVariables == null ? null : this.contextVariables.get("_arguments")); +if (v == null && (this.thisContext == null || (v = this.thisContext.getVariable("_arguments")) == null)) return null; +if (v.tok == 1275068418) { +if (n == -2147483648) { +return v.arrayToList(v); +}var params = v.value; +return (--n < 0 || n >= params.length ? null : (params[n] = JS.SV.getVariable(params[n]))); +}var list = v.getList(); +return (n == -2147483648 ? v : --n < 0 || n >= list.size() ? JS.SV.newV(7, new JU.Lst()) : list.get(n)); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptProcess.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptProcess.js new file mode 100755 index 000000000000..9e8cd8bd59c8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptProcess.js @@ -0,0 +1,13 @@ +Clazz.declarePackage("JS"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.processName = null; +this.context = null; +Clazz.instantialize(this, arguments);}, JS, "ScriptProcess", null); +Clazz.makeConstructor(c$, +function(name, context){ +this.processName = name; +this.context = context; +}, "~S,JS.ScriptContext"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptProcessRunnable.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptProcessRunnable.js new file mode 100755 index 000000000000..859547cb5690 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptProcessRunnable.js @@ -0,0 +1,44 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.ScriptProcessRunnable", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.parallelProcessor = null; +this.process = null; +this.processLock = null; +this.shapeManager = null; +Clazz.instantialize(this, arguments);}, JS, "ScriptProcessRunnable", null, Runnable); +Clazz.makeConstructor(c$, +function(parallelProcessor, process, lock, shapeManager){ +this.parallelProcessor = parallelProcessor; +this.process = process; +this.processLock = lock; +this.shapeManager = shapeManager; +}, "JS.ScriptParallelProcessor,JS.ScriptProcess,~O,JV.ShapeManager"); +Clazz.overrideMethod(c$, "run", +function(){ +try { +if (this.parallelProcessor.error == null) { +if (JU.Logger.debugging) JU.Logger.debug("Running process " + this.process.processName + " " + this.process.context.pc + " - " + (this.process.context.pcEnd - 1)); +this.parallelProcessor.eval(this.process.context, this.shapeManager); +if (JU.Logger.debugging) JU.Logger.debug("Process " + this.process.processName + " complete"); +}} catch (e$$) { +if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +e.printStackTrace(); +} +} else if (Clazz.exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.parallelProcessor.clearShapeManager(er); +} +} else { +throw e$$; +} +} finally { +{ +--this.parallelProcessor.counter; +this.processLock.notifyAll(); +}} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptQueueThread.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptQueueThread.js new file mode 100755 index 000000000000..5dc4a4870757 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptQueueThread.js @@ -0,0 +1,49 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.thread.JmolThread"], "JS.ScriptQueueThread", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.scriptManager = null; +this.startedByCommandThread = false; +this.pt = 0; +Clazz.instantialize(this, arguments);}, JS, "ScriptQueueThread", J.thread.JmolThread); +Clazz.makeConstructor(c$, +function(scriptManager, vwr, startedByCommandThread, pt){ +this.setViewer(vwr, "QueueThread" + pt); +this.scriptManager = scriptManager; +this.vwr = vwr; +this.startedByCommandThread = startedByCommandThread; +this.pt = pt; +}, "JS.ScriptManager,JV.Viewer,~B,~N"); +Clazz.overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +mode = 0; +break; +case 0: +if (this.stopped || this.scriptManager.getScriptQueue().size() == 0) { +mode = -2; +break; +}if (!this.runNextScript() && !this.runSleep(100, 0)) return; +break; +case -2: +this.scriptManager.queueThreadFinished(this.pt); +return; +} + +}, "~N"); +Clazz.defineMethod(c$, "runNextScript", +function(){ +var queue = this.scriptManager.getScriptQueue(); +if (queue.size() == 0) return false; +var scriptItem = this.scriptManager.getScriptItem(false, this.startedByCommandThread); +if (scriptItem == null) return false; +if (JU.Logger.debugging) { +JU.Logger.debug("Queue[" + this.pt + "][" + queue.size() + "] scripts; running: " + scriptItem.get(0)); +}queue.removeItemAt(0); +this.scriptManager.runScriptFromThread(scriptItem); +if (queue.size() == 0) { +return false; +}return true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/ScriptTokenParser.js b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptTokenParser.js new file mode 100755 index 000000000000..9cdc1d9d7ad9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/ScriptTokenParser.js @@ -0,0 +1,1095 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.ScriptTokenParser", ["JU.Lst", "$.P3", "$.PT", "J.i18n.GT", "JS.T", "JU.Edge", "$.Logger", "$.SimpleUnitCell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.htUserFunctions = null; +this.script = null; +this.isStateScript = false; +this.lineCurrent = 0; +this.iCommand = 0; +this.ichCurrentCommand = 0; +this.ichComment = 0; +this.ichEnd = 0; +this.ichToken = 0; +this.theToken = null; +this.lastFlowCommand = null; +this.tokenCommand = null; +this.lastToken = null; +this.tokenAndEquals = null; +this.theTok = 0; +this.nTokens = 0; +this.tokCommand = 0; +this.ptNewSetModifier = 0; +this.isNewSet = false; +this.haveMacro = false; +this.logMessages = true; +this.atokenInfix = null; +this.itokenInfix = 0; +this.isSetBrace = false; +this.isMathExpressionCommand = false; +this.isSetOrDefine = false; +this.ltokenPostfix = null; +this.isEmbeddedExpression = false; +this.isCommaAsOrAllowed = false; +this.theValue = null; +this.haveString = false; +this.residueSpecCodeGenerated = false; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorLine = null; +this.errorType = null; +Clazz.instantialize(this, arguments);}, JS, "ScriptTokenParser", null); +Clazz.defineMethod(c$, "compileExpressions", +function(){ +var isScriptExpression = ((this.tokCommand == 134222850 || this.tokCommand == 4124) && this.tokAt(2) == 268435968); +this.isEmbeddedExpression = (isScriptExpression || (this.tokCommand != 0 && (this.tokCommand != 134320141 && this.tokCommand != 102436 && this.tokCommand != 364558 && this.tokCommand != 102412 || this.tokenCommand.intValue != 2147483647) && this.tokCommand != 102409 && !JS.T.tokAttr(this.tokCommand, 12288) && (this.nTokens > 2 || !JS.T.tokAttr(this.tokCommand, 20480)))); +this.isMathExpressionCommand = (this.tokCommand == 1073741824 || isScriptExpression || JS.T.tokAttr(this.tokCommand, 36864)); +var checkExpression = this.isEmbeddedExpression || (JS.T.tokAttr(this.tokCommand, 12288)); +if (this.tokAt(1) == 1073742330 && JS.T.tokAttr(this.tokCommand, 12288)) checkExpression = false; +if (checkExpression && !this.compileExpression()) return false; +var size = this.atokenInfix.length; +var nDefined = 0; +for (var i = 1; i < size; i++) { +if (this.tokAt(i) == 12290) nDefined++; +} +size -= nDefined; +if (this.isNewSet) { +if (size == 1) { +this.atokenInfix[0] = JS.T.tv(134320141, 0, this.atokenInfix[0].value); +this.isNewSet = false; +}}if ((this.isNewSet || this.isSetBrace) && this.ptNewSetModifier != 2147483647 && size < this.ptNewSetModifier + 2) { +if (!this.isNewSet || !this.haveMacro) return this.commandExpected(); +this.htUserFunctions.put(this.atokenInfix[0].value, Boolean.TRUE); +}return (size == 1 || !JS.T.tokAttr(this.tokCommand, 262144) ? true : this.error(0)); +}); +Clazz.defineMethod(c$, "compileExpression", +function(){ +var firstToken = (this.isSetOrDefine && !this.isSetBrace ? 2 : 1); +this.ltokenPostfix = new JU.Lst(); +this.itokenInfix = 0; +var tokenBegin = null; +var tok = this.tokAt(1); +switch (this.tokCommand) { +case 12290: +var i = (this.tokAt(1) == 12290 ? 2 : 1); +if (this.tokAt(i) == 2 && this.tokAt(i + 1) == 1073742336 && this.tokAt(i + 3) == 268440324) { +this.tokCommand = 36867; +this.isSetBrace = true; +this.ptNewSetModifier = i + 3; +this.isMathExpressionCommand = true; +this.isEmbeddedExpression = true; +this.addTokenToPostfixToken(JS.T.tokenSetProperty); +this.addTokenToPostfixToken(JS.T.tokenExpressionBegin); +for (var j = 0; j++ <= i; ) this.addNextToken(); + +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +firstToken = 0; +}break; +case 12295: +if (tok == 1677721602) firstToken = 2; +break; +case 1275082241: +switch (tok) { +case 1073742335: +case 1073742334: +case 268436992: +tok = this.tokAt(++firstToken); +break; +} +case 12294: +case 1610625028: +switch (tok) { +case 1275069441: +case 1073742119: +tok = this.tokAt(++firstToken); +break; +} +if (tok == 1086324742 && !JS.T.tokAttr(this.tokAt(firstToken + 1), 268435456)) firstToken++; +} +for (var i = 0; i < firstToken && this.addNextToken(); i++) { +} +while (this.moreTokens()) { +if (this.isEmbeddedExpression) { +while (!this.isExpressionNext()) { +if (this.tokPeekIs(1073741824) && !(this.tokCommand == 134223363 && this.itokenInfix == 1)) { +var name = this.atokenInfix[this.itokenInfix].value; +var t = JS.T.getTokenFromName(name); +if (t != null) if (!this.isMathExpressionCommand && this.lastToken.tok != 12290 || (this.lastToken.tok == 1073742336 || this.tokAt(this.itokenInfix + 1) == 268435968) && !this.isUserFunction(name)) { +this.atokenInfix[this.itokenInfix] = t; +}}if (!this.addNextToken()) break; +} +if (!this.moreTokens()) break; +}if (this.lastToken.tok == 12290) { +if (!this.clauseDefine(true, false)) return false; +continue; +}if (!this.isMathExpressionCommand) this.addTokenToPostfixToken(tokenBegin = JS.T.o(1073742325, "implicitExpressionBegin")); +if (!this.clauseOr(this.isCommaAsOrAllowed || !this.isMathExpressionCommand && this.tokPeekIs(268435968))) return false; +if (!this.isMathExpressionCommand && !(this.isEmbeddedExpression && this.lastToken === JS.T.tokenCoordinateEnd)) { +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +}if (this.moreTokens()) { +if (this.tokCommand != 1275082241 && this.tokCommand != 12291 && !this.isEmbeddedExpression) return this.error(5); +if (this.tokCommand == 1275082241) { +tokenBegin.intValue = 0; +this.tokCommand = 0; +this.isEmbeddedExpression = true; +this.isMathExpressionCommand = true; +this.isCommaAsOrAllowed = false; +}}} +this.atokenInfix = this.ltokenPostfix.toArray( new Array(this.ltokenPostfix.size())); +return true; +}); +Clazz.defineMethod(c$, "isUserFunction", +function(name){ +name = name.toLowerCase(); +return (!this.isStateScript && (this.vwr.isFunction(name) || this.htUserFunctions.containsKey(name))); +}, "~S"); +Clazz.defineMethod(c$, "isExpressionNext", +function(){ +return this.tokPeekIs(1073742332) && !(this.tokAt(this.itokenInfix + 1) == 4 && this.tokAt(this.itokenInfix + 2) == 268436482) || !this.isMathExpressionCommand && this.tokPeekIs(268435968); +}); +c$.tokenAttr = Clazz.defineMethod(c$, "tokenAttr", +function(token, tok){ +return token != null && JS.T.tokAttr(token.tok, tok); +}, "JS.T,~N"); +Clazz.defineMethod(c$, "moreTokens", +function(){ +return (this.itokenInfix < this.atokenInfix.length); +}); +Clazz.defineMethod(c$, "tokAt", +function(i){ +return (i < this.atokenInfix.length ? this.atokenInfix[i].tok : 0); +}, "~N"); +Clazz.defineMethod(c$, "tokPeek", +function(){ +return (this.itokenInfix >= this.atokenInfix.length ? 0 : this.atokenInfix[this.itokenInfix].tok); +}); +Clazz.defineMethod(c$, "tokPeekIs", +function(tok){ +return (this.tokAt(this.itokenInfix) == tok); +}, "~N"); +Clazz.defineMethod(c$, "intPeek", +function(){ +return (this.itokenInfix >= this.atokenInfix.length ? 2147483647 : this.atokenInfix[this.itokenInfix].intValue); +}); +Clazz.defineMethod(c$, "valuePeek", +function(){ +return (this.moreTokens() ? this.atokenInfix[this.itokenInfix].value : ""); +}); +Clazz.defineMethod(c$, "tokenNext", +function(){ +return (this.itokenInfix >= this.atokenInfix.length ? null : this.atokenInfix[this.itokenInfix++]); +}); +Clazz.defineMethod(c$, "tokenNextTok", +function(tok){ +var token = this.tokenNext(); +return (token != null && token.tok == tok); +}, "~N"); +Clazz.defineMethod(c$, "returnToken", +function(){ +this.itokenInfix--; +return false; +}); +Clazz.defineMethod(c$, "getToken", +function(){ +this.theValue = ((this.theToken = this.tokenNext()) == null ? null : this.theToken.value); +return this.theToken; +}); +Clazz.defineMethod(c$, "getNumericalToken", +function(){ +return (this.getToken() != null && (this.theToken.tok == 2 || this.theToken.tok == 3)); +}); +Clazz.defineMethod(c$, "floatValue", +function(){ +switch (this.theToken.tok) { +case 2: +return this.theToken.intValue; +case 3: +return (this.theValue).floatValue(); +} +return 0; +}); +Clazz.defineMethod(c$, "addTokenToPostfix", +function(tok, value){ +return this.addTokenToPostfixToken(JS.T.o(tok, value)); +}, "~N,~O"); +Clazz.defineMethod(c$, "addTokenToPostfixInt", +function(tok, intValue, value){ +return this.addTokenToPostfixToken(JS.T.tv(tok, intValue, value)); +}, "~N,~N,~O"); +Clazz.defineMethod(c$, "addTokenToPostfixToken", +function(token){ +if (token == null) return false; +if (this.logMessages) JU.Logger.debug("addTokenToPostfix" + token); +if (token.tok == 268437504 && (this.lastToken.tok == 1073742336 || this.lastToken.tok == 1073742337)) { +var ipt = this.ltokenPostfix.size() - 1; +this.ltokenPostfix.removeItemAt(ipt); +this.ltokenPostfix.addLast(JS.T.tokenRightParen); +var pcount = 0; +var tok; +for (var i = this.ltokenPostfix.size(); --i >= 0 && pcount >= 0; ) { +switch (tok = this.ltokenPostfix.get(i).tok) { +case 268435969: +case 268437505: +pcount++; +break; +case 268435968: +case 268437504: +pcount--; +var tok2; +if (pcount == 1 && (tok2 = this.ltokenPostfix.get(i - 1).tok) != 268435969 && tok2 != 268437505) { +ipt = (tok == 268437504 ? i - 1 : i); +pcount = -10; +}break; +default: +tok2 = (i == 0 ? 0 : this.ltokenPostfix.get(i - 1).tok); +if (tok2 == 1073742336 || tok2 == 1073742337) { +ipt = i - 1; +break; +}if (i == ipt - 1) { +ipt = i; +pcount = -10; +}break; +} +} +if (pcount == -10) { +this.ltokenPostfix.add(ipt, JS.T.tokenLeftParen); +}}this.ltokenPostfix.addLast(token); +this.lastToken = token; +return true; +}, "JS.T"); +Clazz.defineMethod(c$, "addNextToken", +function(){ +return this.addTokenToPostfixToken(this.tokenNext()); +}); +Clazz.defineMethod(c$, "addNextTokenIf", +function(tok){ +return (this.tokPeekIs(tok) && this.addNextToken()); +}, "~N"); +Clazz.defineMethod(c$, "addSubstituteTokenIf", +function(tok, token){ +if (!this.tokPeekIs(tok)) return false; +this.itokenInfix++; +return this.addTokenToPostfixToken(token); +}, "~N,JS.T"); +Clazz.defineMethod(c$, "clauseOr", +function(allowCommaAsOr){ +this.haveString = false; +if (!this.clauseAnd()) return false; +if (this.isEmbeddedExpression && this.lastToken.tok == 1073742326) return true; +var tok; +while ((tok = this.tokPeek()) == 268438016 || tok == 268438017 || tok == 268438018 || allowCommaAsOr && tok == 268436992) { +if (tok == 268436992 && !this.haveString) this.addSubstituteTokenIf(268436992, JS.T.tokenOr); + else this.addNextToken(); +if (!this.clauseAnd()) return false; +if (allowCommaAsOr && (this.lastToken.tok == 1073742338 || this.lastToken.tok == 10)) this.haveString = true; +} +return true; +}, "~B"); +Clazz.defineMethod(c$, "clauseAnd", +function(){ +if (!this.clauseNot()) return false; +if (this.isEmbeddedExpression && this.lastToken.tok == 1073742326) return true; +while (this.tokPeekIs(268438528)) { +this.addNextToken(); +if (!this.clauseNot()) return false; +} +return true; +}); +Clazz.defineMethod(c$, "clauseNot", +function(){ +if (this.tokPeekIs(268439040)) { +this.addNextToken(); +return this.clauseNot(); +}return (this.clausePrimitive()); +}); +Clazz.defineMethod(c$, "clausePrimitive", +function(){ +var tok = this.tokPeek(); +switch (tok) { +case 1073742195: +this.itokenInfix++; +return this.clausePrimitive(); +case 0: +return this.error(4); +case 1073742327: +case 10: +case 268441088: +case 136314895: +case 2097160: +case 2097159: +case 2097162: +case 1073742331: +case 1073742333: +case 2097184: +return this.addNextToken(); +case 4: +this.haveString = true; +return this.addNextToken(); +case 3: +return this.addTokenToPostfixInt(1073742359, this.fixModelSpec(this.getToken()), this.theValue); +case 1094713349: +case 1094713350: +return this.clauseCell(tok); +case 134217736: +case 1275203608: +return this.clauseConnected(tok == 1275203608); +case 134218756: +case 134218757: +return this.clauseSubstructure(); +case 134217759: +case 134353926: +return this.clauseWithin(tok == 134217759); +case 12290: +return this.clauseDefine(false, false); +case 1677721602: +case 1745489939: +this.addNextToken(); +if (this.tokPeekIs(10)) this.addNextToken(); + else if (this.tokPeekIs(12290)) return this.clauseDefine(false, false); +return true; +case 268435968: +this.addNextToken(); +if (!this.clauseOr(true)) return false; +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ")"); +return this.checkForItemSelector(true); +case 1073742332: +return this.checkForCoordinate(this.isMathExpressionCommand); +default: +if (this.clauseResidueSpec()) return true; +if (this.isError()) return false; +if (JS.T.tokAttr(tok, 1077936128)) { +var itemp = this.itokenInfix; +var isOK = this.clauseComparator(true); +if (isOK || this.itokenInfix != itemp) return isOK; +if (tok == 1237320707) { +return this.clauseSubstructure(); +}}return this.addNextToken(); +} +}); +Clazz.defineMethod(c$, "checkForCoordinate", +function(isImplicitExpression){ +var isCoordinate = false; +var pt = this.ltokenPostfix.size(); +if (isImplicitExpression) { +this.addTokenToPostfixToken(JS.T.tokenExpressionBegin); +this.tokenNext(); +} else if (this.isEmbeddedExpression) { +this.tokenNext(); +pt--; +} else { +this.addNextToken(); +}var isHash = this.tokPeekIs(4); +if (isHash) { +isImplicitExpression = false; +this.returnToken(); +this.ltokenPostfix.removeItemAt(this.ltokenPostfix.size() - 1); +this.addNextToken(); +var nBrace = 1; +while (nBrace != 0) { +if (this.tokPeekIs(1073742332)) { +if (this.isExpressionNext()) { +this.addTokenToPostfixToken(JS.T.o(1073742325, "implicitExpressionBegin")); +if (!this.clauseOr(false)) return false; +if (this.lastToken !== JS.T.tokenCoordinateEnd) { +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +}} else { +nBrace++; +}}if (this.tokPeekIs(1073742338)) nBrace--; +this.addNextToken(); +} +} else { +if (!this.tokPeekIs(1073742338) && !this.clauseOr(false)) return false; +var n = 1; +while (!this.tokPeekIs(1073742338)) { +var haveComma = this.addNextTokenIf(268436992); +if (!this.clauseOr(false)) return (haveComma || n < 3 ? false : this.errorStr(15, "}")); +n++; +} +isCoordinate = (n >= 2); +}if (isCoordinate && (isImplicitExpression || this.isEmbeddedExpression)) { +this.ltokenPostfix.set(pt, JS.T.tokenCoordinateBegin); +this.addTokenToPostfixToken(JS.T.tokenCoordinateEnd); +this.tokenNext(); +} else if (isImplicitExpression) { +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +this.tokenNext(); +} else if (this.isEmbeddedExpression) { +if (!isHash) this.tokenNext(); +} else { +this.addNextToken(); +}return this.checkForItemSelector(!isHash); +}, "~B"); +Clazz.defineMethod(c$, "checkForItemSelector", +function(allowNumeric){ +var tok; +if ((tok = this.tokAt(this.itokenInfix + 1)) == 268437504 || allowNumeric && tok == 1073742332) return true; +while (true) { +if (!this.addNextTokenIf(268437504)) break; +if (!this.clauseItemSelector()) return false; +if (!this.addNextTokenIf(268437505)) return this.errorStr(15, "]"); +} +return true; +}, "~B"); +Clazz.defineMethod(c$, "clauseWithin", +function(isWithin){ +this.addNextToken(); +if (!this.addNextTokenIf(268435968)) return false; +if (this.getToken() == null) return false; +var distance = 3.4028235E38; +var key = null; +var allowComma = isWithin; +var tok; +var tok0 = this.theToken.tok; +if (!isWithin) { +tok = -1; +for (var i = this.itokenInfix; tok != 0; i++) { +switch (tok = this.tokAt(i)) { +case 268436992: +tok = 0; +break; +case 1073742332: +case 268435968: +case 268435969: +distance = 100; +this.returnToken(); +tok0 = tok = 0; +break; +} +} +}switch (tok0) { +case 268440576: +if (this.getToken() == null) return false; +if (this.theToken.tok != 2) return this.error(12); +distance = -this.theToken.intValue; +break; +case 2: +case 3: +distance = this.floatValue(); +break; +case 12290: +this.addTokenToPostfixToken(this.theToken); +if (!this.clauseDefine(true, false)) return false; +key = ""; +allowComma = false; +break; +} +if (isWithin && distance == 3.4028235E38) switch (tok0) { +case 12290: +break; +case 1094713350: +case 1094713349: +this.addTokenToPostfix(4, this.theValue); +this.clauseCell(8); +key = ""; +break; +case 1111490587: +case 1073742128: +case 134218756: +case 134218757: +case 1237320707: +case 1073741925: +case 1073742189: +this.addTokenToPostfix(4, this.theValue); +if (!this.addNextTokenIf(268436992)) return false; +allowComma = false; +tok = this.tokPeek(); +switch (tok) { +case 0: +return false; +case 4: +this.addNextToken(); +key = ""; +break; +case 12290: +if (!this.clauseDefine(false, true)) return false; +key = ""; +break; +default: +return false; +} +break; +case 1073742328: +allowComma = false; +case 1086326785: +case 1086326786: +case 1073741863: +case 1812599299: +case 1086326788: +case 1073742329: +case 1086326789: +case 1086324742: +case 1814695966: +case 136314895: +case 1094717454: +case 1094713360: +case 134217750: +case 134219777: +case 1094713362: +case 1086324744: +case 2097184: +case 1094713366: +case 1639976963: +case 4: +case 1648363544: +key = this.theValue; +break; +default: +key = (this.theValue).toLowerCase(); +break; +} +if (key == null) this.addTokenToPostfix(3, Float.$valueOf(distance)); + else if (key.length > 0) this.addTokenToPostfix(4, key); +var done = false; +while (!done) { +if (tok0 != 0 && !this.addNextTokenIf(268436992)) break; +if (tok0 == 0) tok0 = 134353926; +var isCoordOrPlane = false; +tok = this.tokPeek(); +if (isWithin) { +switch (tok0) { +case 2: +case 3: +if (tok == 1073742335 || tok == 1073742334) { +this.addTokenToPostfixToken(this.getToken()); +if (!this.addNextTokenIf(268436992)) break; +tok = this.tokPeek(); +}break; +} +if (key == null) { +switch (tok) { +case 134219777: +case 1073742329: +case 134217750: +isCoordOrPlane = true; +this.addNextToken(); +break; +case 1073742330: +this.getToken(); +this.getToken(); +this.addTokenToPostfix(4, "$" + this.theValue); +done = true; +break; +case 1086324742: +case 1648363544: +case 1814695966: +this.getToken(); +this.addTokenToPostfix(4, JS.T.nameOf(tok)); +break; +case 1073742332: +this.returnToken(); +isCoordOrPlane = true; +this.addTokenToPostfixToken(JS.T.getTokenFromName(distance == 3.4028235E38 ? "plane" : "coord")); +} +if (!done) this.addNextTokenIf(268436992); +}}tok = this.tokPeek(); +if (done) break; +if (isCoordOrPlane) { +while (!this.tokPeekIs(268435969)) { +switch (this.tokPeek()) { +case 0: +return this.error(4); +case 268435968: +this.addTokenToPostfixToken(JS.T.tokenExpressionBegin); +this.addNextToken(); +if (!this.clauseOr(false)) return this.errorIntStr2(18, "WITHIN", ": ?"); +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ", / )"); +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +break; +case 12290: +if (!this.clauseDefine(false, false)) return false; +break; +default: +this.addTokenToPostfixToken(this.getToken()); +} +} +} else if (!this.clauseOr(allowComma)) { +}} +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ")"); +return true; +}, "~B"); +Clazz.defineMethod(c$, "clauseConnected", +function(isPolyhedra){ +this.addNextToken(); +if (!this.addNextTokenIf(268435968)) { +this.addTokenToPostfixToken(JS.T.tokenLeftParen); +this.addTokenToPostfixToken(JS.T.tokenRightParen); +return true; +}while (true) { +if (this.addNextTokenIf(2)) { +if (!this.addNextTokenIf(268436992)) { +break; +}if (isPolyhedra) { +this.returnToken(); +break; +}} else if (isPolyhedra && (this.addNextTokenIf(4) || this.addNextTokenIf(1073741824))) { +break; +}if (this.addNextTokenIf(2)) if (!this.addNextTokenIf(268436992)) break; +if (this.addNextTokenIf(3)) if (!this.addNextTokenIf(268436992)) break; +if (this.addNextTokenIf(3)) if (!this.addNextTokenIf(268436992)) break; +var o = this.getToken().value; +var strOrder = ((typeof(o)=='string') ? o : " "); +var intType = JU.Edge.getBondOrderFromString(strOrder); +if (intType == 131071) { +this.returnToken(); +} else { +this.addTokenToPostfix(4, strOrder); +if (!this.addNextTokenIf(268436992)) break; +}if (this.addNextTokenIf(268435969)) return true; +if (!this.clauseOr(this.tokPeekIs(268435968))) return false; +if (this.addNextTokenIf(268435969)) return true; +if (!this.addNextTokenIf(268436992)) return false; +if (!this.clauseOr(this.tokPeekIs(268435968))) return false; +break; +} +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ")"); +return true; +}, "~B"); +Clazz.defineMethod(c$, "clauseSubstructure", +function(){ +this.addNextToken(); +if (!this.addNextTokenIf(268435968)) return false; +if (this.tokPeekIs(12290)) { +if (!this.clauseDefine(false, true)) return false; +} else if (!this.addNextTokenIf(4)) { +return this.errorStr(15, "\"...\""); +}if (this.addNextTokenIf(268436992)) if (!this.clauseOr(this.tokPeekIs(268435968))) return false; +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ")"); +return true; +}); +Clazz.defineMethod(c$, "clauseItemSelector", +function(){ +var tok; +var nparen = 0; +while ((tok = this.tokPeek()) != 0 && tok != 268437505) { +this.addNextToken(); +if (tok == 268437504) nparen++; +if (this.tokPeek() == 268437505 && nparen-- > 0) this.addNextToken(); +} +return true; +}); +Clazz.defineMethod(c$, "clauseComparator", +function(isOptional){ +var tokenAtomProperty = this.tokenNext(); +var tokenComparator = this.tokenNext(); +if (!JS.ScriptTokenParser.tokenAttr(tokenComparator, 268435712)) { +if (!isOptional) return this.errorStr(15, "== != < > <= >="); +if (tokenComparator != null) this.returnToken(); +this.returnToken(); +return false; +}if (JS.ScriptTokenParser.tokenAttr(tokenAtomProperty, 1086324736) && tokenComparator.tok != 268440324 && tokenComparator.tok != 268440326 && tokenComparator.tok != 268440325) return this.errorStr(15, "== !="); +if (this.tokPeek() == 268437504) { +this.getToken(); +this.addTokenToPostfixToken(JS.T.tokenLeftParen); +while (true) { +if (!this.addCompare(tokenAtomProperty, tokenComparator)) return false; +if (this.tokPeek() == 268436992) this.getToken(); + else if (this.tokPeek() == 268437505) break; +this.addTokenToPostfixToken(tokenComparator.tok == 268440325 ? JS.T.tokenAnd : JS.T.tokenOr); +} +this.getToken(); +this.addTokenToPostfixToken(JS.T.tokenRightParen); +return true; +}return this.addCompare(tokenAtomProperty, tokenComparator); +}, "~B"); +Clazz.defineMethod(c$, "addCompare", +function(tokenAtomProperty, tokenComparator){ +if (this.getToken() == null) return this.errorStr(17, "" + this.valuePeek()); +var isNegative = (this.theToken.tok == 268440576); +if (isNegative && this.getToken() == null) return this.error(12); +switch (this.theToken.tok) { +case 2: +case 3: +case 1073741824: +case 4: +case 1073742332: +case 12290: +break; +default: +if (!JS.T.tokAttr(this.theToken.tok, 1073741824)) return this.error(13); +} +this.addTokenToPostfixInt(tokenComparator.tok, tokenAtomProperty.tok, tokenComparator.value + (isNegative ? " -" : "")); +if (tokenAtomProperty.tok == 1715472409) this.addTokenToPostfixToken(tokenAtomProperty); +if (this.theToken.tok == 1073742332) { +this.returnToken(); +return this.clausePrimitive(); +}this.addTokenToPostfixToken(this.theToken); +if (this.theToken.tok == 12290) return this.clauseDefine(true, false); +return true; +}, "JS.T,JS.T"); +Clazz.defineMethod(c$, "clauseCell", +function(tok){ +var cell = new JU.P3(); +this.tokenNext(); +if (tok != 8) { +if (!this.tokenNextTok(268440324)) return this.errorStr(15, "="); +}if (this.getToken() == null) return this.error(3); +if (this.theToken.tok == 2) { +JU.SimpleUnitCell.ijkToPoint3f(this.theToken.intValue, cell, 1, 0); +} else { +if (this.theToken.tok != 1073742332 || !this.getNumericalToken()) return this.error(3); +cell.x = this.floatValue(); +if (this.tokPeekIs(268436992)) this.tokenNext(); +if (!this.getNumericalToken()) return this.error(3); +cell.y = this.floatValue(); +if (this.tokPeekIs(268436992)) this.tokenNext(); +if (!this.getNumericalToken() || !this.tokenNextTok(1073742338)) return this.error(3); +cell.z = this.floatValue(); +}return this.addTokenToPostfix(tok, cell); +}, "~N"); +Clazz.defineMethod(c$, "clauseDefine", +function(haveToken, forceString){ +if (!haveToken) { +var token = this.tokenNext(); +if (forceString) token = JS.T.tokenDefineString; +this.addTokenToPostfixToken(token); +}if (this.tokPeekIs(0)) return this.error(4); +if (!this.addSubstituteTokenIf(1073742332, JS.T.tokenExpressionBegin)) { +if (this.tokPeek() == 12290) this.addNextToken(); +return this.addNextToken() && this.checkForItemSelector(true); +}while (this.moreTokens() && !this.tokPeekIs(1073742338)) { +if (this.tokPeekIs(1073742332)) { +if (!this.checkForCoordinate(true)) return false; +} else { +this.addNextToken(); +}} +return this.addSubstituteTokenIf(1073742338, JS.T.tokenExpressionEnd) && this.checkForItemSelector(true); +}, "~B,~B"); +Clazz.defineMethod(c$, "generateResidueSpecCode", +function(token){ +if (this.residueSpecCodeGenerated) this.addTokenToPostfixToken(JS.T.tokenAndSpec); +this.addTokenToPostfixToken(token); +this.residueSpecCodeGenerated = true; +return true; +}, "JS.T"); +Clazz.defineMethod(c$, "clauseResidueSpec", +function(){ +var tok = this.tokPeek(); +this.residueSpecCodeGenerated = false; +var checkResNameSpec = false; +switch (tok) { +case 0: +case 2097156: +case 2097174: +return false; +case 2: +case 268436482: +case 268441090: +case 5: +break; +case 268441089: +case 268437504: +case 1073741824: +checkResNameSpec = true; +break; +default: +if (JS.T.tokAttr(tok, 268435712)) return false; +var str = "" + this.valuePeek(); +checkResNameSpec = (str.length == 2 || str.length == 3); +if (!checkResNameSpec) return false; +} +var specSeen = false; +if (checkResNameSpec) { +if (!this.clauseResNameSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 2 || tok == 268441089 || tok == 5) { +if (!this.clauseSequenceSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 268436482) { +if (!this.clauseChainSpec(tok)) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 1073742336) { +if (!this.clauseAtomSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 268441090) { +if (!this.clauseAlternateSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 268441088) { +if (!this.clauseModelSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (!specSeen) return this.error(14); +if (!this.residueSpecCodeGenerated) { +this.addTokenToPostfixToken(JS.T.tokenAll); +}return true; +}); +Clazz.defineMethod(c$, "clauseResNameSpec", +function(){ +this.getToken(); +var tok = this.tokPeek(); +switch (this.theToken.tok) { +case 268441089: +return true; +case 268437504: +var strSpec = ""; +while (this.getToken() != null && this.theToken.tok != 268437505) strSpec += this.theValue; + +if (this.theToken == null) return false; +if (strSpec === "") return true; +var pt; +return (strSpec.length > 0 && (pt = strSpec.indexOf("*")) >= 0 && pt != strSpec.length - 1 ? this.error(14) : this.generateResidueSpecCode(JS.T.o(1073742360, strSpec.toUpperCase()))); +default: +if (JS.T.tokAttr(tok, 268435712)) { +this.returnToken(); +return false; +}var res = this.theValue; +if (tok == 268441089) { +res = this.theValue + "*"; +this.getToken(); +}return this.generateResidueSpecCode(JS.T.o(1073741824, res)); +} +}); +Clazz.defineMethod(c$, "clauseSequenceSpec", +function(){ +if (this.tokPeek() == 268441089) return (this.getToken() != null); +var seqToken = this.getSequenceCode(false); +if (seqToken == null) return false; +var tok = this.tokPeek(); +if (tok == 268440576 || tok == 2 && this.intPeek() < 0) { +if (tok == 268440576) { +this.tokenNext(); +} else { +var i = -this.intPeek(); +this.tokenNext().intValue = i; +this.returnToken(); +}seqToken.tok = 1073742363; +this.generateResidueSpecCode(seqToken); +return this.addTokenToPostfixToken(this.getSequenceCode(true)); +}return this.generateResidueSpecCode(seqToken); +}); +Clazz.defineMethod(c$, "getSequenceCode", +function(isSecond){ +var seqcode = 2147483647; +var seqvalue = 2147483647; +switch (this.tokPeek()) { +case 5: +seqcode = this.tokenNext().intValue; +break; +case 2: +seqvalue = this.tokenNext().intValue; +break; +default: +if (!isSecond) return null; +} +return JS.T.tv(1073742362, seqvalue, Integer.$valueOf(seqcode)); +}, "~B"); +Clazz.defineMethod(c$, "clauseChainSpec", +function(tok){ +this.tokenNext(); +tok = this.tokPeek(); +var strChain; +if (this.isTerminator(tok)) { +strChain = " "; +} else { +switch (tok) { +case 268441089: +return (this.getToken() != null); +case 2: +this.getToken(); +var val = this.theToken.intValue; +if (val < 0 || val > 9999) return this.error(8); +strChain = "" + val; +break; +case 4: +this.vwr.getChainID("a", true); +default: +strChain = "" + this.getToken().value; +break; +} +if (strChain.length == 0) strChain = " "; + else if (strChain.equals("?")) return true; +}var chain = this.vwr.getChainID(strChain, false); +return this.generateResidueSpecCode(JS.T.tv(1073742357, chain, "spec_chain")); +}, "~N"); +Clazz.defineMethod(c$, "clauseAlternateSpec", +function(){ +this.tokenNext(); +if (this.isTerminator(this.tokPeek())) return this.generateResidueSpecCode(JS.T.o(1073742355, null)); +switch (this.getToken().tok) { +case 268441089: +case 4: +case 2: +case 1073741824: +case 805307393: +case 1111492629: +case 1111492630: +case 1111492631: +case 1140850705: +break; +default: +return this.error(10); +} +return this.generateResidueSpecCode(JS.T.o(1073742355, this.theToken.value)); +}); +Clazz.defineMethod(c$, "isTerminator", +function(tok){ +switch (tok) { +case 0: +case 268441088: +case 268438528: +case 268438016: +case 268439040: +case 268436992: +case 268435969: +case 1073742338: +return true; +default: +return false; +} +}, "~N"); +Clazz.defineMethod(c$, "clauseModelSpec", +function(){ +this.getToken(); +switch (this.tokPeek()) { +case 268441089: +this.getToken(); +return true; +case 2: +return this.generateResidueSpecCode(JS.T.o(1073742358, Integer.$valueOf(this.getToken().intValue))); +case 3: +return this.generateResidueSpecCode(JS.T.tv(1073742358, this.fixModelSpec(this.getToken()), this.theValue)); +case 268436992: +case 1073742338: +case 0: +return this.generateResidueSpecCode(JS.T.o(1073742358, Integer.$valueOf(1))); +} +return this.error(10); +}); +Clazz.defineMethod(c$, "fixModelSpec", +function(token){ +var ival = token.intValue; +if (ival == 2147483647) { +var f = (this.theValue).floatValue(); +if (f == Clazz.floatToInt(f)) ival = (Clazz.floatToInt(f)) * 1000000; +if (ival < 0) ival = 2147483647; +}return ival; +}, "JS.T"); +Clazz.defineMethod(c$, "clauseAtomSpec", +function(){ +if (!this.tokenNextTok(1073742336)) return this.error(7); +if (this.getToken() == null) return true; +var atomSpec = ""; +if (this.theToken.tok == 2) { +atomSpec += "" + this.theToken.intValue; +if (this.getToken() == null) return this.error(7); +}if (this.theToken.tok == 268441089) return true; +atomSpec += "" + this.theToken.value; +if (this.tokPeekIs(268441089)) { +this.tokenNext(); +atomSpec += "'"; +}return this.generateResidueSpecCode(JS.T.tv(1073742356, this.vwr.getJBR().lookupSpecialAtomID(atomSpec.toUpperCase()), atomSpec)); +}); +c$.errorString = Clazz.defineMethod(c$, "errorString", +function(iError, value, more, translated){ +var doTranslate = false; +if (!translated && (doTranslate = J.i18n.GT.getDoTranslate()) == true) J.i18n.GT.setDoTranslate(false); +var msg; +switch (iError) { +default: +msg = "Unknown compiler error message number: " + iError; +break; +case 0: +msg = J.i18n.GT.$("bad argument count"); +break; +case 1: +msg = J.i18n.GT.$("invalid context for {0}"); +break; +case 2: +msg = J.i18n.GT.$("command expected"); +break; +case 3: +msg = J.i18n.GT.$("{ number number number } expected"); +break; +case 4: +msg = J.i18n.GT.$("unexpected end of script command"); +break; +case 5: +msg = J.i18n.GT.$("end of expression expected"); +break; +case 6: +msg = J.i18n.GT.$("identifier or residue specification expected"); +break; +case 7: +msg = J.i18n.GT.$("invalid atom specification"); +break; +case 8: +msg = J.i18n.GT.$("invalid chain specification"); +break; +case 9: +msg = J.i18n.GT.$("invalid expression token: {0}"); +break; +case 10: +msg = J.i18n.GT.$("invalid model specification"); +break; +case 11: +msg = J.i18n.GT.$("missing END for {0}"); +break; +case 12: +msg = J.i18n.GT.$("number expected"); +break; +case 13: +msg = J.i18n.GT.$("number or variable name expected"); +break; +case 14: +msg = J.i18n.GT.$("residue specification (ALA, AL?, A*) expected"); +break; +case 15: +msg = J.i18n.GT.$("{0} expected"); +break; +case 16: +msg = J.i18n.GT.$("{0} unexpected"); +break; +case 17: +msg = J.i18n.GT.$("unrecognized expression token: {0}"); +break; +case 18: +msg = J.i18n.GT.$("unrecognized {0} parameter"); +break; +case 19: +msg = J.i18n.GT.$("unrecognized token: {0}"); +break; +} +if (msg.indexOf("{0}") < 0) { +if (value != null) msg += ": " + value; +} else { +msg = JU.PT.rep(msg, "{0}", value); +if (msg.indexOf("{1}") >= 0) msg = JU.PT.rep(msg, "{1}", more); + else if (more != null) msg += ": " + more; +}if (!translated) J.i18n.GT.setDoTranslate(doTranslate); +return msg; +}, "~N,~S,~S,~B"); +Clazz.defineMethod(c$, "commandExpected", +function(){ +this.ichToken = this.ichCurrentCommand; +return this.error(2); +}); +Clazz.defineMethod(c$, "error", +function(error){ +return this.errorIntStr2(error, null, null); +}, "~N"); +Clazz.defineMethod(c$, "errorStr", +function(error, value){ +return this.errorIntStr2(error, value, null); +}, "~N,~S"); +Clazz.defineMethod(c$, "errorIntStr2", +function(iError, value, more){ +var strError = JS.ScriptTokenParser.errorString(iError, value, more, true); +var strUntranslated = (J.i18n.GT.getDoTranslate() ? JS.ScriptTokenParser.errorString(iError, value, more, false) : null); +return this.errorStr2(strError, strUntranslated); +}, "~N,~S,~S"); +Clazz.defineMethod(c$, "isError", +function(){ +return this.errorMessage != null; +}); +Clazz.defineMethod(c$, "errorStr2", +function(errorMessage, strUntranslated){ +this.errorMessage = errorMessage; +this.errorMessageUntranslated = strUntranslated; +return false; +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesAromatic.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesAromatic.js new file mode 100755 index 000000000000..711c3e17a021 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesAromatic.js @@ -0,0 +1,264 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.SmilesAromatic", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.Measure", "$.V3", "JS.SmilesRing", "$.SmilesRingSet", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz.declareType(JS, "SmilesAromatic", null); +c$.setAromatic = Clazz.defineMethod(c$, "setAromatic", +function(n, jmolAtoms, bsSelected, vR, bsAromatic, strictness, isOpenSMILES, justCheckBonding, checkExplicit, v, vOK, lstSP2, eCounts, doTestAromatic){ +var doCheck = (isOpenSMILES || strictness > 0); +if (!doTestAromatic) { +for (var r = vR.size(); --r >= 0; ) { +var bs = JU.BSUtil.copy(vR.get(r)); +bs.and(bsAromatic); +if (bs.cardinality() == n) vOK.addLast(bs); +} +return; +}for (var r = vR.size(); --r >= 0; ) { +var bs = vR.get(r); +var isOK = JS.SmilesAromatic.isSp2Ring(n, jmolAtoms, bsSelected, bs, (justCheckBonding ? 3.4028235E38 : strictness > 0 ? 0.1 : 0.01), checkExplicit, strictness == 0); +if (!isOK) continue; +bsAromatic.or(bs); +if (doCheck) { +var edges = new JU.Lst(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = jmolAtoms[i]; +var aedges = a.getEdges(); +var ai = a.getIndex(); +for (var j = aedges.length; --j >= 0; ) { +var a2 = aedges[j].getOtherNode(a); +var a2i = a2.getIndex(); +if (a2i > ai && bs.get(a2i)) edges.addLast(aedges[j]); +} +} +switch (JS.SmilesAromatic.checkHueckelAromatic(n, jmolAtoms, bsAromatic, bs, strictness, eCounts)) { +case -1: +continue; +case 0: +isOK = false; +case 1: +if (lstSP2 != null) lstSP2.addLast( new JS.SmilesRing(n, bs, edges, isOK)); +if (!isOK) continue; +} +}vOK.addLast(bs); +} +}, "~N,~A,JU.BS,JU.Lst,JU.BS,~N,~B,~B,~B,JS.VTemp,JU.Lst,JU.Lst,~A,~B"); +c$.checkAromaticDefined = Clazz.defineMethod(c$, "checkAromaticDefined", +function(jmolAtoms, bsSelected, bsAromatic){ +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) { +var bonds = jmolAtoms[i].getEdges(); +for (var j = 0; j < bonds.length; j++) { +switch (bonds[j].getBondType()) { +case 515: +case 514: +case 513: +bsAromatic.set(bonds[j].getAtomIndex1()); +bsAromatic.set(bonds[j].getAtomIndex2()); +} +} +} +}, "~A,JU.BS,JU.BS"); +c$.isSp2Ring = Clazz.defineMethod(c$, "isSp2Ring", +function(n, atoms, bsSelected, bs, cutoff, checkExplicit, allowSOxide){ +if (checkExplicit) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (atoms[i].getCovalentBondCount() > 3) return false; + +} else { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (atoms[i].getCovalentBondCountPlusMissingH() > 3) return false; + +}if (cutoff == 3.4028235E38) return true; +if (cutoff <= 0) cutoff = 0.01; +var vNorm = null; +var vTemp = null; +var vMean = null; +var nPoints = bs.cardinality(); +var vNorms = new Array(nPoints * 2); +var nNorms = 0; +var maxDev = (1 - cutoff * 5); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var ringAtom = atoms[i]; +var bonds = ringAtom.getEdges(); +var iSub = -1; +var r1 = -1; +var r2 = -1; +for (var k = bonds.length; --k >= 0; ) { +var iAtom = ringAtom.getBondedAtomIndex(k); +if (!bsSelected.get(iAtom)) continue; +if (!bs.get(iAtom)) { +if (ringAtom.getElementNumber() == 16) { +if (!allowSOxide) return false; +iAtom = -1; +}iSub = iAtom; +} else if (r1 < 0) { +r1 = iAtom; +} else { +r2 = iAtom; +}} +if (vMean == null) { +vMean = new JU.V3(); +vNorm = new JU.V3(); +vTemp = new JU.V3(); +}for (var k = 0, j = i; k < 2; k++) { +JU.Measure.getNormalThroughPoints(atoms[r1], atoms[j], atoms[r2], vNorm, vTemp); +if (!JS.SmilesAromatic.addNormal(vNorm, vMean, maxDev)) return false; +vNorms[nNorms++] = JU.V3.newV(vNorm); +if ((j = iSub) < 0) break; +} +} +return JS.SmilesAromatic.checkStandardDeviation(vNorms, vMean, nNorms, cutoff); +}, "~N,~A,JU.BS,JU.BS,~N,~B,~B"); +c$.addNormal = Clazz.defineMethod(c$, "addNormal", +function(vTemp, vMean, maxDev){ +var similarity = vMean.dot(vTemp); +if (similarity != 0 && Math.abs(similarity) < maxDev) return false; +if (similarity < 0) vTemp.scale(-1); +vMean.add(vTemp); +vMean.normalize(); +return true; +}, "JU.V3,JU.V3,~N"); +c$.checkStandardDeviation = Clazz.defineMethod(c$, "checkStandardDeviation", +function(vNorms, vMean, n, cutoff){ +var sum = 0; +var sum2 = 0; +for (var i = 0; i < n; i++) { +var v = vNorms[i].dot(vMean); +sum += v; +sum2 += (v) * v; +} +sum = Math.sqrt((sum2 - sum * sum / n) / (n - 1)); +return (sum < cutoff); +}, "~A,JU.V3,~N,~N"); +c$.checkHueckelAromatic = Clazz.defineMethod(c$, "checkHueckelAromatic", +function(nAtoms, jmolAtoms, bsAromatic, bsRing, strictness, eCounts){ +var npi = 0; +var n1 = 0; +for (var i = bsRing.nextSetBit(0); i >= 0 && npi >= 0; i = bsRing.nextSetBit(i + 1)) { +var atom = jmolAtoms[i]; +var z = atom.getElementNumber(); +var n = atom.getCovalentBondCountPlusMissingH(); +n += atom.getValence(); +n -= 4; +if (z == 6) { +var fc = atom.getFormalCharge(); +if (fc != -2147483648) n += fc; +}var pt = (z >= 5 && z <= 8 ? z - 5 : z == 15 ? 2 : z == 34 ? 3 : z == 33 ? 4 : z == 16 ? 5 : -1); +if (pt >= 0) { +var a = JS.SmilesAromatic.OS_PI_COUNTS[pt]; +if (n < 0 || n >= a.length) return -1; +switch (n = a[n]) { +case -2: +return -1; +case -1: +var bonds = atom.getEdges(); +n = 0; +for (var j = bonds.length; --j >= 0; ) { +var b = bonds[j]; +if (b.getCovalentOrder() != 2) continue; +var het = b.getOtherNode(atom); +n = (het.getElementNumber() == 6 || bsAromatic.get(het.getIndex()) ? 1 : strictness > 0 ? -100 : 0); +break; +} +default: +if (n < 0) return -1; +if (eCounts != null) eCounts[i] = n; +npi += n; +if (n == 1) n1++; +if (JU.Logger.debuggingHigh) JU.Logger.info("atom " + atom + " pi=" + n + " npi=" + npi); +continue; +} +}} +return ((npi - 2) % 4 == 0 && (strictness < 2 || nAtoms == 5 || n1 == 6) ? 1 : 0); +}, "~N,~A,JU.BS,JU.BS,~N,~A"); +c$.finalizeAromatic = Clazz.defineMethod(c$, "finalizeAromatic", +function(jmolAtoms, bsAromatic, lstAromatic, lstSP2, eCounts, isOpenNotStrict, isStrict){ +if (isStrict) JS.SmilesAromatic.removeBridgingRings(lstAromatic, lstSP2); +JS.SmilesAromatic.checkFusedRings(lstSP2, eCounts, lstAromatic); +bsAromatic.clearAll(); +for (var i = lstAromatic.size(); --i >= 0; ) bsAromatic.or(lstAromatic.get(i)); + +if (isStrict || isOpenNotStrict) { +for (var i = bsAromatic.nextSetBit(0); i >= 0; i = bsAromatic.nextSetBit(i + 1)) { +var bonds = jmolAtoms[i].getEdges(); +var naro = 0; +for (var j = bonds.length; --j >= 0; ) { +var otherAtom = bonds[j].getOtherNode(jmolAtoms[i]); +var order = bonds[j].getCovalentOrder(); +var ai2 = otherAtom.getIndex(); +var isJAro = bsAromatic.get(ai2); +if (isJAro) { +if (order == 2) { +var isOK = false; +for (var k = lstSP2.size(); --k >= 0; ) { +var r = lstSP2.get(k); +if (r.get(i) && r.get(ai2)) { +isOK = true; +break; +}} +if (!isOK) { +naro = -1; +break; +}}naro++; +} else if (isStrict && otherAtom.getElementNumber() == 6 && order == 2) { +naro = -1; +break; +}} +if (naro < 2) { +bsAromatic.clear(i); +i = -1; +}} +}}, "~A,JU.BS,JU.Lst,JU.Lst,~A,~B,~B"); +c$.removeBridgingRings = Clazz.defineMethod(c$, "removeBridgingRings", +function(lstAromatic, lstSP2){ +var bs = new JU.BS(); +var bsBad = new JU.BS(); +var bsBad2 = new JU.BS(); +JS.SmilesAromatic.checkBridges(lstAromatic, bsBad, lstAromatic, bsBad, bs); +JS.SmilesAromatic.checkBridges(lstSP2, bsBad2, lstSP2, bsBad2, bs); +JS.SmilesAromatic.checkBridges(lstAromatic, bsBad, lstSP2, bsBad2, bs); +for (var i = lstAromatic.size(); --i >= 0; ) if (bsBad.get(i)) lstAromatic.removeItemAt(i); + +for (var i = lstSP2.size(); --i >= 0; ) if (bsBad2.get(i)) lstSP2.removeItemAt(i); + +}, "JU.Lst,JU.Lst"); +c$.checkBridges = Clazz.defineMethod(c$, "checkBridges", +function(lst, bsBad, lst2, bsBad2, bs){ +var isSameList = (lst === lst2); +for (var i = lst.size(); --i >= 0; ) { +var bs1 = lst.get(i); +for (var j0 = (isSameList ? i + 1 : 0), j = lst2.size(); --j >= j0; ) { +var bs2 = lst2.get(j); +if (bs2.equals(bs1)) continue; +bs.clearAll(); +bs.or(bs1); +bs.and(bs2); +var n = bs.cardinality(); +if (n > 2) { +bsBad.set(i); +bsBad2.set(j); +}} +} +}, "JU.Lst,JU.BS,JU.Lst,JU.BS,JU.BS"); +c$.checkFusedRings = Clazz.defineMethod(c$, "checkFusedRings", +function(rings, eCounts, lstAromatic){ +var htEdgeMap = new java.util.Hashtable(); +for (var i = rings.size(); --i >= 0; ) { +var r = rings.get(i); +var edges = r.edges; +for (var j = edges.size(); --j >= 0; ) { +var set = JS.SmilesRing.getSetByEdge(edges.get(j), htEdgeMap); +if (set == null || set === r.$set) continue; +if (r.$set != null) set.addSet(r.$set, htEdgeMap); + else set.addRing(r); +} +(r.$set == null ? r.$set = new JS.SmilesRingSet() : r.$set).addRing(r); +r.addEdges(htEdgeMap); +} +var set; +var r; +for (var i = rings.size(); --i >= 0; ) { +if ((r = rings.get(i)).isOK || (set = r.$set) == null || set.isEmpty()) continue; +if ((set.getElectronCount(eCounts) % 4) == 2) for (var j = set.size(); --j >= 0; ) if (!(r = set.get(j)).isOK) lstAromatic.addLast(r); + +set.clear(); +} +}, "JU.Lst,~A,JU.Lst"); +c$.OS_PI_COUNTS = Clazz.newArray(-1, [ Clazz.newIntArray(-1, [-2, 1, 0]), Clazz.newIntArray(-1, [1, 2, 1, -1]), Clazz.newIntArray(-1, [2, 1, 2, 1, 1]), Clazz.newIntArray(-1, [2, 1]), Clazz.newIntArray(-1, [-2, 1, 2, 1, -2]), Clazz.newIntArray(-1, [2, 1, 2, 2])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesAtom.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesAtom.js new file mode 100755 index 000000000000..58ec45fbd1ca --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesAtom.js @@ -0,0 +1,595 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.P3", "JU.Node"], "JS.SmilesAtom", ["JU.AU", "JU.Elements", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.patternIndex = -1; +this.pattern = null; +this.primitiveType = 0; +this.isAND = false; +this.subAtoms = null; +this.nSubAtoms = 0; +this.index = 0; +this.referance = null; +this.residueName = null; +this.residueChar = null; +this.insCode = '\0'; +this.isBioAtom = false; +this.isBioResidue = false; +this.isBioAtomWild = false; +this.bioType = '\0'; +this.$isLeadAtom = false; +this.notBondedIndex = -1; +this.notCrossLinked = false; +this.aromaticAmbiguous = true; +this.covalentHydrogenCount = -1; +this.not = false; +this.selected = false; +this.hasSymbol = false; +this.elementDefined = false; +this.atomType = null; +this.bioAtomName = null; +this.isFirst = true; +this.jmolIndex = -1; +this.elementNumber = -2; +this.atomNumber = -2147483648; +this.residueNumber = -2147483648; +this.explicitHydrogenCount = -2147483648; +this.implicitHydrogenCount = -2147483648; +this.parent = null; +this.bonds = null; +this.bondCount = 0; +this.iNested = 0; +this.isAromatic = false; +this.atomicMass = -2147483648; +this.charge = -2147483648; +this.matchingIndex = -1; +this.stereo = null; +this.component = -2147483648; +this.matchingComponent = 0; +this.atomSite = 0; +this.degree = -1; +this.nonhydrogenDegree = -1; +this.valence = 0; +this.connectivity = -1; +this.ringMembership = -2147483648; +this.ringSize = -2147483648; +this.ringConnectivity = -1; +this.matchingNode = null; +this.hasSubpattern = false; +this.mapIndex = -1; +this.atomClass = NaN; +this.symbol = null; +this.isTopoAtom = false; +this.missingHydrogenCount = 0; +this.cipChirality = 0; +this.hasDoubleBond = false; +Clazz.instantialize(this, arguments);}, JS, "SmilesAtom", JU.P3, JU.Node); +Clazz.prepareFields (c$, function(){ +this.bonds = new Array(4); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.SmilesAtom, []); +}); +c$.allowSmilesUnbracketed = Clazz.defineMethod(c$, "allowSmilesUnbracketed", +function(xx){ +return ("B, C, N, O, P, S, F, Cl, Br, I, *,".indexOf(xx + ",") >= 0); +}, "~S"); +Clazz.overrideMethod(c$, "getAtomType", +function(){ +return (this.atomType == null ? this.bioAtomName : this.atomType); +}); +Clazz.defineMethod(c$, "getChiralClass", +function(){ +return (this.stereo == null ? -2147483648 : this.stereo.getChiralClass(this)); +}); +Clazz.defineMethod(c$, "isDefined", +function(){ +return (this.hasSubpattern || this.iNested != 0 || this.isBioAtom || this.component != -2147483648 || this.elementNumber != -2 || this.nSubAtoms > 0); +}); +Clazz.defineMethod(c$, "setBioAtom", +function(bioType){ +this.isBioAtom = (bioType != '\0'); +this.bioType = bioType; +if (this.parent != null) { +this.parent.bioType = bioType; +this.parent.isBioAtom = this.isBioAtom; +this.parent.isBioAtomWild = this.isBioAtomWild; +}}, "~S"); +Clazz.defineMethod(c$, "setAtomName", +function(name){ +if (name == null) return; +if (name.length > 0) this.bioAtomName = name; +if (name.equals("\0")) this.$isLeadAtom = true; +if (this.parent != null) { +this.parent.bioAtomName = name; +}}, "~S"); +Clazz.defineMethod(c$, "setBonds", +function(bonds){ +this.bonds = bonds; +}, "~A"); +Clazz.defineMethod(c$, "addSubAtom", +function(sAtom, isAND){ +this.isAND = isAND; +if (this.subAtoms == null) this.subAtoms = new Array(2); +if (this.nSubAtoms >= this.subAtoms.length) this.subAtoms = JU.AU.doubleLength(this.subAtoms); +sAtom.setIndex(this.index); +sAtom.parent = this; +this.subAtoms[this.nSubAtoms++] = sAtom; +this.setSymbol("*"); +this.hasSymbol = false; +return sAtom; +}, "JS.SmilesAtom,~B"); +Clazz.defineMethod(c$, "setIndex", +function(index){ +this.index = index; +return this; +}, "~N"); +Clazz.defineMethod(c$, "setTopoAtom", +function(iComponent, ptAtom, symbol, charge, patternIndex){ +this.component = iComponent; +this.index = ptAtom; +this.patternIndex = patternIndex; +this.setSymbol(symbol); +this.charge = charge; +this.isTopoAtom = true; +return this; +}, "~N,~N,~S,~N,~N"); +Clazz.defineMethod(c$, "setHydrogenCount", +function(){ +this.missingHydrogenCount = this.explicitHydrogenCount; +if (this.explicitHydrogenCount != -2147483648) return true; +var charge = this.getFormalCharge(); +var count = JS.SmilesAtom.getDefaultHCount(this.elementNumber, this.isAromatic, charge == -2147483648 ? 0 : charge); +if (count < 0) { +this.missingHydrogenCount = 0; +return (count == -1); +}if (this.elementNumber == 7 && this.isAromatic && this.bondCount == 2) { +if (this.bonds[0].getBondType() == 1 && this.bonds[1].getBondType() == 1) count++; +}for (var i = 0; i < this.bondCount; i++) { +var bond = this.bonds[i]; +switch (bond.getBondType()) { +case 81: +if (this.elementNumber == 7) { +JU.Logger.info("Ambiguous bonding to aromatic N found -- MF may be in error"); +}count -= 1; +break; +case 1025: +case 1041: +case 65537: +case 65538: +count -= 1; +break; +case 2: +count -= (this.isAromatic && this.elementNumber == 6 ? 1 : 2); +break; +case 1: +case 3: +case 4: +count -= bond.getBondType(); +break; +} +} +if (count >= 0) this.missingHydrogenCount = this.explicitHydrogenCount = count; +return true; +}); +c$.getDefaultHCount = Clazz.defineMethod(c$, "getDefaultHCount", +function(elementNumber, isAromatic, charge){ +switch (elementNumber) { +case 0: +case -1: +case -2: +return -1; +case 1: +return 1; +case 6: +return (isAromatic ? 3 : 4) + (charge == 0 ? 0 : 1); +case 8: +case 16: +return 2 + charge; +case 7: +return (isAromatic ? 2 : 3) + charge; +case 5: +case 15: +return 3; +case 9: +case 17: +case 35: +case 53: +return 1 + charge; +default: +return 0; +} +}, "~N,~B,~N"); +Clazz.overrideMethod(c$, "getIndex", +function(){ +return this.index; +}); +Clazz.defineMethod(c$, "setSymbol", +function(symbol){ +this.symbol = symbol; +this.isAromatic = symbol.equals(symbol.toLowerCase()); +this.hasSymbol = true; +this.elementDefined = true; +if (symbol.equals("*")) { +this.isAromatic = false; +this.elementNumber = -2; +return true; +}if (symbol.equals("Xx")) { +this.elementNumber = 0; +return true; +}this.aromaticAmbiguous = false; +if (symbol.equals("a") || symbol.equals("A")) { +if (this.elementNumber < 0) this.elementNumber = -1; +return true; +}if (this.isAromatic) symbol = symbol.substring(0, 1).toUpperCase() + (symbol.length == 1 ? "" : symbol.substring(1)); +this.elementNumber = JU.Elements.elementNumberFromSymbol(symbol, true); +return (this.elementNumber != 0); +}, "~S"); +Clazz.overrideMethod(c$, "getElementNumber", +function(){ +return this.elementNumber; +}); +Clazz.defineMethod(c$, "getAtomicMass", +function(){ +return this.atomicMass; +}); +Clazz.overrideMethod(c$, "getAtomNumber", +function(){ +return this.atomNumber; +}); +Clazz.defineMethod(c$, "setAtomicMass", +function(mass){ +this.atomicMass = mass; +}, "~N"); +Clazz.defineMethod(c$, "getCharge", +function(){ +return this.charge; +}); +Clazz.defineMethod(c$, "setCharge", +function(charge){ +this.charge = charge; +}, "~N"); +Clazz.defineMethod(c$, "getMatchingAtomIndex", +function(){ +return this.matchingIndex; +}); +Clazz.defineMethod(c$, "getMatchingAtom", +function(){ +return this.matchingNode == null ? this : this.matchingNode; +}); +Clazz.defineMethod(c$, "setMatchingAtom", +function(jmolAtom, index){ +this.matchingNode = jmolAtom; +this.matchingIndex = index; +}, "JU.Node,~N"); +Clazz.defineMethod(c$, "setExplicitHydrogenCount", +function(count){ +this.explicitHydrogenCount = count; +}, "~N"); +Clazz.defineMethod(c$, "setImplicitHydrogenCount", +function(count){ +this.implicitHydrogenCount = count; +}, "~N"); +Clazz.defineMethod(c$, "setDegree", +function(degree){ +this.degree = degree; +}, "~N"); +Clazz.defineMethod(c$, "setNonhydrogenDegree", +function(degree){ +this.nonhydrogenDegree = degree; +}, "~N"); +Clazz.defineMethod(c$, "setValence", +function(valence){ +this.valence = valence; +}, "~N"); +Clazz.defineMethod(c$, "setConnectivity", +function(connectivity){ +this.connectivity = connectivity; +}, "~N"); +Clazz.defineMethod(c$, "setRingMembership", +function(rm){ +this.ringMembership = rm; +}, "~N"); +Clazz.defineMethod(c$, "setRingSize", +function(rs){ +this.ringSize = rs; +if (this.ringSize == 500 || this.ringSize == 600) this.isAromatic = true; +}, "~N"); +Clazz.defineMethod(c$, "setRingConnectivity", +function(rc){ +this.ringConnectivity = rc; +}, "~N"); +Clazz.overrideMethod(c$, "getModelIndex", +function(){ +return this.component; +}); +Clazz.overrideMethod(c$, "getMoleculeNumber", +function(inModel){ +return this.component; +}, "~B"); +Clazz.overrideMethod(c$, "getAtomSite", +function(){ +return this.atomSite; +}); +Clazz.overrideMethod(c$, "getFormalCharge", +function(){ +return this.charge; +}); +Clazz.overrideMethod(c$, "getIsotopeNumber", +function(){ +return this.atomicMass; +}); +Clazz.overrideMethod(c$, "getAtomicAndIsotopeNumber", +function(){ +return JU.Elements.getAtomicAndIsotopeNumber(this.elementNumber, this.atomicMass); +}); +Clazz.overrideMethod(c$, "getAtomName", +function(){ +return this.bioAtomName == null ? "" : this.bioAtomName; +}); +Clazz.overrideMethod(c$, "getGroup3", +function(allowNull){ +return this.residueName == null ? "" : this.residueName; +}, "~B"); +Clazz.overrideMethod(c$, "getGroup1", +function(c0){ +return this.residueChar == null ? "" : this.residueChar; +}, "~S"); +Clazz.defineMethod(c$, "addBond", +function(bond){ +if (this.bondCount >= this.bonds.length) this.bonds = JU.AU.doubleLength(this.bonds); +this.bonds[this.bondCount] = bond; +if (bond.order == 2) { +this.hasDoubleBond = true; +}this.bondCount++; +}, "JS.SmilesBond"); +Clazz.defineMethod(c$, "setBondArray", +function(){ +if (this.bonds.length > this.bondCount) this.bonds = JU.AU.arrayCopyObject(this.bonds, this.bondCount); +if (this.subAtoms != null && this.subAtoms.length > this.nSubAtoms) this.subAtoms = JU.AU.arrayCopyObject(this.subAtoms, this.subAtoms.length); +for (var i = 0; i < this.bonds.length; i++) { +var b = this.bonds[i]; +if (this.isBioAtom && b.getBondType() == 17) { +b.order = 112; +} else if (b.order == 2) { +b.atom1.hasDoubleBond = b.atom2.hasDoubleBond = true; +}if (b.atom1.index > b.atom2.index) { +b.switchAtoms(); +}} +}); +Clazz.overrideMethod(c$, "getEdges", +function(){ +return (this.parent != null ? this.parent.getEdges() : this.bonds); +}); +Clazz.defineMethod(c$, "getBond", +function(number){ +return (this.parent != null ? this.parent.getBond(number) : number >= 0 && number < this.bondCount ? this.bonds[number] : null); +}, "~N"); +Clazz.overrideMethod(c$, "getCovalentBondCount", +function(){ +return this.getBondCount(); +}); +Clazz.overrideMethod(c$, "getBondCount", +function(){ +return (this.parent != null ? this.parent.getBondCount() : this.bondCount); +}); +Clazz.overrideMethod(c$, "getCovalentBondCountPlusMissingH", +function(){ +return this.getBondCount() + (this.isTopoAtom ? 0 : this.missingHydrogenCount); +}); +Clazz.overrideMethod(c$, "getTotalHydrogenCount", +function(){ +return this.getCovalentHydrogenCount() + (this.isTopoAtom ? 0 : this.missingHydrogenCount); +}); +Clazz.overrideMethod(c$, "getImplicitHydrogenCount", +function(){ +return this.implicitHydrogenCount; +}); +Clazz.overrideMethod(c$, "getExplicitHydrogenCount", +function(){ +return this.explicitHydrogenCount; +}); +Clazz.defineMethod(c$, "getMatchingBondedAtom", +function(i){ +if (this.parent != null) return this.parent.getMatchingBondedAtom(i); +if (i >= this.bondCount) return -1; +var b = this.bonds[i]; +return (b.atom1 === this ? b.atom2 : b.atom1).matchingIndex; +}, "~N"); +Clazz.overrideMethod(c$, "getBondedAtomIndex", +function(j){ +return (this.parent != null ? this.parent.getBondedAtomIndex(j) : this.bonds[j].getOtherAtom(this).index); +}, "~N"); +Clazz.overrideMethod(c$, "getCovalentHydrogenCount", +function(){ +if (this.covalentHydrogenCount >= 0) return this.covalentHydrogenCount; +if (this.parent != null) return (this.covalentHydrogenCount = this.parent.getCovalentHydrogenCount()); +this.covalentHydrogenCount = 0; +for (var k = 0; k < this.bonds.length; k++) if (this.bonds[k].getOtherAtom(this).elementNumber == 1) this.covalentHydrogenCount++; + +return this.covalentHydrogenCount; +}); +Clazz.overrideMethod(c$, "getValence", +function(){ +if (this.parent != null) return this.parent.getValence(); +var n = this.valence; +if (n <= 0 && this.bonds != null) for (var i = this.bondCount; --i >= 0; ) n += this.bonds[i].getValence(); + +this.valence = n; +return n; +}); +Clazz.overrideMethod(c$, "getTotalValence", +function(){ +return this.getValence() + (this.isTopoAtom ? 0 : this.missingHydrogenCount); +}); +Clazz.defineMethod(c$, "getBondTo", +function(atom){ +if (this.parent != null) return this.parent.getBondTo(atom); +var bond; +for (var k = 0; k < this.bonds.length; k++) { +if ((bond = this.bonds[k]) == null) continue; +if (atom == null ? bond.atom2 === this : bond.getOtherAtom(this) === atom) return bond; +} +return null; +}, "JS.SmilesAtom"); +Clazz.defineMethod(c$, "getBondNotTo", +function(atom, allowH){ +var bond; +for (var k = 0; k < this.bonds.length; k++) { +if ((bond = this.bonds[k]) == null) continue; +var atom2 = bond.getOtherAtom(this); +if (atom !== atom2 && (allowH || atom2.elementNumber != 1)) return bond; +} +return null; +}, "JS.SmilesAtom,~B"); +Clazz.overrideMethod(c$, "isLeadAtom", +function(){ +return this.$isLeadAtom; +}); +Clazz.overrideMethod(c$, "getOffsetResidueAtom", +function(name, offset){ +if (this.isBioAtom) { +if (offset == 0) return this.index; +for (var k = 0; k < this.bonds.length; k++) if (this.bonds[k].getAtomIndex1() == this.index && this.bonds[k].getBondType() == 96) return this.bonds[k].getOtherAtom(this).index; + +}return -1; +}, "~S,~N"); +Clazz.overrideMethod(c$, "getGroupBits", +function(bs){ +bs.set(this.index); +return; +}, "JU.BS"); +Clazz.overrideMethod(c$, "isCrossLinked", +function(node){ +var bond = this.getBondTo(node); +return bond.isHydrogen(); +}, "JU.Node"); +Clazz.overrideMethod(c$, "getCrossLinkVector", +function(vLinks, crosslinkCovalent, crosslinkHBond){ +var haveCrossLinks = false; +for (var k = 0; k < this.bonds.length; k++) if (this.bonds[k].order == 112) { +if (vLinks == null) return true; +vLinks.addLast(Integer.$valueOf(this.index)); +vLinks.addLast(Integer.$valueOf(this.bonds[k].getOtherAtom(this).index)); +vLinks.addLast(Integer.$valueOf(this.bonds[k].getOtherAtom(this).index)); +haveCrossLinks = true; +} +return haveCrossLinks; +}, "JU.Lst,~B,~B"); +Clazz.overrideMethod(c$, "getBioStructureTypeName", +function(){ +return null; +}); +Clazz.overrideMethod(c$, "getInsertionCode", +function(){ +return this.insCode; +}); +Clazz.overrideMethod(c$, "getResno", +function(){ +return this.residueNumber; +}); +Clazz.overrideMethod(c$, "getChainID", +function(){ +return 0; +}); +Clazz.overrideMethod(c$, "getChainIDStr", +function(){ +return ""; +}); +c$.getAtomLabel = Clazz.defineMethod(c$, "getAtomLabel", +function(atomicNumber, isotopeNumber, valence, charge, osclass, nH, isAromatic, stereo, is2D){ +var sym = JU.Elements.elementSymbolFromNumber(atomicNumber); +if (atomicNumber == 1 || isAromatic && !(sym = sym.toLowerCase()).equals("c") && !sym.equals("o") && !sym.equals("s")) { +valence = 2147483647; +}var simple = (valence != 2147483647 && isotopeNumber <= 0 && charge == 0 && Float.isNaN(osclass) && (stereo == null || stereo.length == 0)); +var norm = JS.SmilesAtom.getDefaultHCount(atomicNumber, false, charge == -2147483648 ? 0 : charge); +if (is2D && nH == 0) { +if (simple && atomicNumber == 6) return sym; +nH = norm - valence; +}return (simple && norm == valence ? sym : "[" + (isotopeNumber <= 0 ? "" : "" + isotopeNumber) + sym + (stereo == null ? "" : stereo) + (nH > 1 ? "H" + nH : nH == 1 ? "H" : "") + (charge == -2147483648 || charge == 0 ? "" : charge < 0 ? "" + charge : "+" + charge) + (Float.isNaN(osclass) ? "" : ":" + Clazz.floatToInt(osclass)) + "]"); +}, "~N,~N,~N,~N,~N,~N,~B,~S,~B"); +Clazz.overrideMethod(c$, "getBioSmilesType", +function(){ +return this.bioType; +}); +Clazz.defineMethod(c$, "isNucleic", +function(){ +return this.bioType == 'n' || this.bioType == 'r' || this.bioType == 'd'; +}); +Clazz.overrideMethod(c$, "isPurine", +function(){ +return this.residueChar != null && this.isNucleic() && "AG".indexOf(this.residueChar) >= 0; +}); +Clazz.overrideMethod(c$, "isPyrimidine", +function(){ +return this.residueChar != null && this.isNucleic() && "CTUI".indexOf(this.residueChar) >= 0; +}); +Clazz.overrideMethod(c$, "isDeleted", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "findAtomsLike", +function(substring){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +var s = (this.residueChar != null || this.residueName != null ? (this.residueChar == null ? this.residueName : this.residueChar) + "." + this.bioAtomName : (this.bioAtomName != null && this.atomNumber != -2147483648 ? null : this.elementNumber == -1 ? "A" : this.elementNumber == -2 ? "*" : JU.Elements.elementSymbolFromNumber(this.elementNumber))); +if (s == null) return this.bioAtomName + " #" + this.atomNumber; +if (this.isAromatic) s = s.toLowerCase(); +var s2 = ""; +for (var i = 0; i < this.bondCount; i++) s2 += this.bonds[i].getOtherAtom(this).index + ", "; + +return "[" + s + '.' + this.index + (this.matchingIndex >= 0 ? "(" + this.matchingNode + ")" : "") + "]->" + s2 + "(" + this.x + "," + this.y + "," + this.z + ")"; +}); +Clazz.overrideMethod(c$, "getFloatProperty", +function(property){ +if (property === "property_atomclass") return this.atomClass; +return NaN; +}, "~S"); +Clazz.overrideMethod(c$, "getMass", +function(){ +return this.atomicMass; +}); +Clazz.overrideMethod(c$, "getCIPChirality", +function(doCalculate){ +return JV.JC.getCIPChiralityName(this.cipChirality & -225); +}, "~B"); +Clazz.overrideMethod(c$, "setCIPChirality", +function(c){ +this.cipChirality = c; +}, "~N"); +Clazz.overrideMethod(c$, "getCIPChiralityCode", +function(){ +return this.cipChirality; +}); +Clazz.overrideMethod(c$, "getXYZ", +function(){ +return this; +}); +Clazz.defineMethod(c$, "getStereo", +function(){ +return this.stereo; +}); +Clazz.defineMethod(c$, "getPatternIndex", +function(){ +return this.patternIndex; +}); +Clazz.overrideMethod(c$, "modelIsRawPDB", +function(){ +return false; +}); +Clazz.defineMethod(c$, "definesStereo", +function(){ +return false; +}); +Clazz.defineMethod(c$, "getStereoAtAt", +function(nodes){ +return null; +}, "~A"); +Clazz.defineMethod(c$, "isStereoOpposite", +function(i2, iA, iB){ +return null; +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesBond.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesBond.js new file mode 100755 index 000000000000..57551e53cb1b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesBond.js @@ -0,0 +1,239 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.Edge"], "JS.SmilesBond", ["JS.InvalidSmilesException"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atom1 = null; +this.atom2 = null; +this.isNot = false; +this.matchingBond = null; +this.primitives = null; +this.nPrimitives = 0; +this.bondsOr = null; +this.nBondsOr = 0; +this.isConnection = false; +this.atropType = null; +this.isChain = false; +Clazz.instantialize(this, arguments);}, JS, "SmilesBond", JU.Edge); +Clazz.makeConstructor(c$, +function(atom1, atom2, bondType, isNot){ +Clazz.superConstructor (this, JS.SmilesBond, []); +this.set2(bondType, isNot); +this.set2a(atom1, atom2); +}, "JS.SmilesAtom,JS.SmilesAtom,~N,~B"); +c$.getBondOrderString = Clazz.defineMethod(c$, "getBondOrderString", +function(order){ +switch (order) { +case 2: +return "="; +case 3: +return "#"; +case 4: +return "$"; +default: +return ""; +} +}, "~N"); +c$.getBondTypeFromCode = Clazz.defineMethod(c$, "getBondTypeFromCode", +function(code){ +switch ((code).charCodeAt(0)) { +case 46: +return 0; +case 45: +return 1; +case 61: +return 2; +case 35: +return 3; +case 36: +return 4; +case 58: +return 17; +case 47: +return 1025; +case 92: +return 1041; +case 94: +return 65537; +case 96: +return 65538; +case 64: +return 65; +case 126: +return 81; +case 43: +return 96; +} +return -1; +}, "~S"); +Clazz.defineMethod(c$, "getAtom1", +function(){ +return this.atom1; +}); +Clazz.defineMethod(c$, "set", +function(bond){ +this.order = bond.order; +this.isNot = bond.isNot; +this.primitives = bond.primitives; +this.nPrimitives = bond.nPrimitives; +this.bondsOr = bond.bondsOr; +this.nBondsOr = bond.nBondsOr; +this.atropType = bond.atropType; +}, "JS.SmilesBond"); +Clazz.defineMethod(c$, "setAtropType", +function(nn){ +this.atropType = Clazz.newIntArray(-1, [Clazz.doubleToInt(nn / 10) - 1, nn % 10 - 1]); +}, "~N"); +Clazz.defineMethod(c$, "setPrimitive", +function(i){ +var p = this.primitives[i]; +this.order = p.order; +this.isNot = p.isNot; +this.atropType = p.atropType; +return p; +}, "~N"); +Clazz.defineMethod(c$, "addBondOr", +function(){ +if (this.bondsOr == null) this.bondsOr = new Array(2); +if (this.nBondsOr >= this.bondsOr.length) { +var tmp = new Array(this.bondsOr.length * 2); +System.arraycopy(this.bondsOr, 0, tmp, 0, this.bondsOr.length); +this.bondsOr = tmp; +}var sBond = new JS.SmilesBond(null, null, -1, false); +this.bondsOr[this.nBondsOr] = sBond; +this.nBondsOr++; +return sBond; +}); +Clazz.defineMethod(c$, "addPrimitive", +function(){ +if (this.primitives == null) this.primitives = new Array(2); +if (this.nPrimitives >= this.primitives.length) { +var tmp = new Array(this.primitives.length * 2); +System.arraycopy(this.primitives, 0, tmp, 0, this.primitives.length); +this.primitives = tmp; +}var sBond = new JS.SmilesBond(null, null, -1, false); +this.primitives[this.nPrimitives] = sBond; +this.nPrimitives++; +return sBond; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.atom1 + " -" + (this.isNot ? "!" : "") + this.order + "- " + this.atom2; +}); +Clazz.defineMethod(c$, "set2", +function(bondType, isNot){ +this.order = bondType; +this.isNot = isNot; +}, "~N,~B"); +Clazz.defineMethod(c$, "set2a", +function(a1, a2){ +if (a1 != null) { +this.atom1 = a1; +a1.addBond(this); +}if (a2 != null) { +this.atom2 = a2; +if (a2.isBioAtomWild && this.atom1.isBioAtomWild) this.order = 96; +a2.isFirst = false; +a2.addBond(this); +}}, "JS.SmilesAtom,JS.SmilesAtom"); +Clazz.defineMethod(c$, "setAtom2", +function(atom, molecule){ +this.atom2 = atom; +if (this.atom2 != null) { +atom.addBond(this); +this.isConnection = true; +}}, "JS.SmilesAtom,JS.SmilesSearch"); +Clazz.defineMethod(c$, "isFromPreviousTo", +function(atom){ +return (!this.isConnection && this.atom2 === atom); +}, "JS.SmilesAtom"); +c$.isBondType = Clazz.defineMethod(c$, "isBondType", +function(ch, isSearch, isBioSequence){ +if (ch == '>') return 1; +if ("-=#$:/\\.~^`+!,&;@".indexOf(ch) < 0) return 0; +if (!isSearch && "-=#$:/\\.~^`".indexOf(ch) < 0) throw new JS.InvalidSmilesException("SMARTS bond type " + ch + " not allowed in SMILES"); +switch ((ch).charCodeAt(0)) { +case 126: +return (isBioSequence ? 0 : 1); +case 94: +case 96: +return -1; +default: +return 1; +} +}, "~S,~B,~B"); +Clazz.defineMethod(c$, "getValence", +function(){ +return (this.order & 7); +}); +Clazz.defineMethod(c$, "getOtherAtom", +function(a){ +return (this.atom1 === a ? this.atom2 : this.atom1); +}, "JS.SmilesAtom"); +Clazz.overrideMethod(c$, "getAtomIndex1", +function(){ +return this.atom1.index; +}); +Clazz.overrideMethod(c$, "getAtomIndex2", +function(){ +return this.atom2.index; +}); +Clazz.overrideMethod(c$, "getCovalentOrder", +function(){ +return this.order & 131071; +}); +Clazz.overrideMethod(c$, "getOtherNode", +function(atom){ +return (atom === this.atom1 ? this.atom2 : atom === this.atom2 || atom == null ? this.atom1 : null); +}, "JU.SimpleNode"); +Clazz.overrideMethod(c$, "isCovalent", +function(){ +return this.order != 112; +}); +Clazz.overrideMethod(c$, "isPartial", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "isHydrogen", +function(){ +return this.order == 112; +}); +Clazz.defineMethod(c$, "switchAtoms", +function(){ +var a = this.atom1; +this.atom1 = this.atom2; +this.atom2 = a; +switch (this.order & 131071) { +case 65537: +this.order = 65538; +break; +case 65538: +this.order = 65537; +break; +case 1025: +this.order = 1041; +break; +case 1041: +this.order = 1025; +break; +} +}); +Clazz.defineMethod(c$, "getRealCovalentOrder", +function(){ +switch (this.order & 131071) { +case 65537: +case 65538: +case 1025: +case 1041: +return 1; +} +return this.order & 131071; +}); +Clazz.defineMethod(c$, "getMatchingBond", +function(){ +return this.matchingBond == null ? this : this.matchingBond; +}); +Clazz.overrideMethod(c$, "getAtom", +function(i){ +return (i == 1 ? this.atom2 : this.atom1); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesExt.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesExt.js new file mode 100755 index 000000000000..1acce5ab6824 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesExt.js @@ -0,0 +1,201 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.SmilesExt", ["JU.AU", "$.BS", "$.Lst", "$.M4", "$.Measure", "$.P3", "J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.e = null; +Clazz.instantialize(this, arguments);}, JS, "SmilesExt", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "init", +function(se){ +this.e = se; +return this; +}, "~O"); +Clazz.defineMethod(c$, "getSmilesCorrelation", +function(bsA, bsB, smiles, ptsA, ptsB, m4, vReturn, asMap, mapSet, center, bestMap, flags){ +var tolerance = (mapSet == null ? 0.1 : 3.4028235E38); +try { +if (ptsA == null) { +ptsA = new JU.Lst(); +ptsB = new JU.Lst(); +}var m = new JU.M4(); +var c = new JU.P3(); +var atoms = this.e.vwr.ms.at; +var ac = this.e.vwr.ms.ac; +var sm = this.e.vwr.getSmilesMatcher(); +var maps = sm.getCorrelationMaps(smiles, atoms, ac, bsA, flags | 8); +if (maps == null) this.e.evalError(sm.getLastException(), null); +if (maps.length == 0) return NaN; +var mapFirst = maps[0]; +for (var i = 0; i < mapFirst.length; i++) ptsA.addLast(atoms[mapFirst[i]]); + +maps = sm.getCorrelationMaps(smiles, atoms, ac, bsB, flags); +if (maps == null) this.e.evalError(sm.getLastException(), null); +if (maps.length == 0) return NaN; +JU.Logger.info(maps.length + " mappings found"); +if (bestMap || !asMap) { +var lowestStdDev = 3.4028235E38; +var mapBest = null; +for (var i = 0; i < maps.length; i++) { +ptsB.clear(); +for (var j = 0; j < maps[i].length; j++) ptsB.addLast(atoms[maps[i][j]]); + +J.api.Interface.getInterface("JU.Eigen", this.e.vwr, "script"); +var stddev = (ptsB.size() == 1 ? 0 : JU.Measure.getTransformMatrix4(ptsA, ptsB, m, null)); +JU.Logger.info("getSmilesCorrelation stddev=" + stddev); +if (vReturn != null) { +if (stddev < tolerance) { +var bs = new JU.BS(); +for (var j = 0; j < maps[i].length; j++) bs.set(maps[i][j]); + +vReturn.addLast(bs); +}}if (stddev < lowestStdDev) { +mapBest = maps[i]; +if (m4 != null) m4.setM4(m); +if (center != null) center.setT(c); +lowestStdDev = stddev; +}} +if (mapSet != null) { +mapSet[0] = mapFirst; +mapSet[1] = mapBest; +}ptsB.clear(); +for (var i = 0; i < mapBest.length; i++) ptsB.addLast(atoms[mapBest[i]]); + +return lowestStdDev; +}for (var i = 0; i < maps.length; i++) for (var j = 0; j < maps[i].length; j++) ptsB.addLast(atoms[maps[i][j]]); + + +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +return 0; +}, "JU.BS,JU.BS,~S,JU.Lst,JU.Lst,JU.M4,JU.Lst,~B,~A,JU.P3,~B,~N"); +Clazz.defineMethod(c$, "getSmilesMatches", +function(pattern, smiles, bsSelected, bsMatch3D, flags, asOneBitset, firstMatchOnly){ +if (pattern.length == 0 || pattern.endsWith("///") || pattern.equals("H") || pattern.equals("H2") || pattern.equals("top") || pattern.equalsIgnoreCase("NOAROMATIC")) { +try { +return this.e.vwr.getSmilesOpt(bsSelected, 0, 0, flags | (pattern.equals("H2") ? 8192 : 0) | (pattern.equals("H") ? 4096 : 0) | (pattern.equals("top") ? 16384 : 0) | (pattern.equalsIgnoreCase("NOAROMATIC") ? 16 : 0), (pattern.endsWith("///") ? pattern : null)); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +}var b; +if (bsMatch3D == null) { +try { +if (smiles == null) { +b = this.e.vwr.getSubstructureSetArray(pattern, bsSelected, flags); +} else if (pattern.equals("chirality")) { +return this.e.vwr.calculateChiralityForSmiles(smiles); +} else { +var isSmarts = ((flags & 2) == 2); +var ignoreElements = ((flags & 16384) == 16384); +flags = (isSmarts ? 2 : 1) | (firstMatchOnly ? 8 : 0) | (ignoreElements ? 16384 : 0); +if (!((typeof(smiles)=='string'))) { +return this.e.vwr.getSmilesMatcher().hasStructure(pattern, smiles, flags); +}var map = this.e.vwr.getSmilesMatcher().find(pattern, smiles, flags); +if (!asOneBitset) return (!firstMatchOnly ? map : map.length == 0 ? Clazz.newIntArray (0, 0) : map[0]); +var bs = new JU.BS(); +for (var j = 0; j < map.length; j++) { +var a = map[j]; +for (var k = a.length; --k >= 0; ) if (a[k] >= 0) bs.set(a[k]); + +} +if (!isSmarts) return Clazz.newIntArray (bs.cardinality(), 0); +var iarray = Clazz.newIntArray (bs.cardinality(), 0); +var pt = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) iarray[pt++] = i; + +return iarray; +}} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +return null; +} else { +throw ex; +} +} +} else { +var vReturn = new JU.Lst(); +var stddev = this.getSmilesCorrelation(bsMatch3D, bsSelected, pattern, null, null, null, vReturn, false, null, null, false, flags); +if (Float.isNaN(stddev)) return (asOneBitset ? new JU.BS() : Clazz.newArray(-1, [])); +this.e.showString("RMSD " + stddev + " Angstroms"); +b = vReturn.toArray( new Array(vReturn.size())); +}if (asOneBitset) { +var bs = new JU.BS(); +for (var j = 0; j < b.length; j++) bs.or(b[j]); + +return bs; +}var list = new JU.Lst(); +for (var j = 0; j < b.length; j++) list.addLast(b[j]); + +return list; +}, "~S,~O,JU.BS,JU.BS,~N,~B,~B"); +Clazz.defineMethod(c$, "getFlexFitList", +function(bs1, bs2, smiles1, isSmarts){ +var mapSet = JU.AU.newInt2(2); +this.getSmilesCorrelation(bs1, bs2, smiles1, null, null, null, null, false, mapSet, null, false, isSmarts ? 2 : 1); +if (mapSet[0] == null) return null; +var bondMap1 = this.e.vwr.ms.getDihedralMap(mapSet[0]); +var bondMap2 = (bondMap1 == null ? null : this.e.vwr.ms.getDihedralMap(mapSet[1])); +if (bondMap2 == null || bondMap2.length != bondMap1.length) return null; +var angles = Clazz.newFloatArray (bondMap1.length, 3, 0); +var atoms = this.e.vwr.ms.at; +JS.SmilesExt.getTorsions(atoms, bondMap2, angles, 0); +JS.SmilesExt.getTorsions(atoms, bondMap1, angles, 1); +var data = Clazz.newFloatArray (bondMap1.length * 6, 0); +for (var i = 0, pt = 0; i < bondMap1.length; i++) { +var map = bondMap1[i]; +data[pt++] = map[0]; +data[pt++] = map[1]; +data[pt++] = map[2]; +data[pt++] = map[3]; +data[pt++] = angles[i][0]; +data[pt++] = angles[i][1]; +} +return data; +}, "JU.BS,JU.BS,~S,~B"); +c$.getTorsions = Clazz.defineMethod(c$, "getTorsions", +function(atoms, bondMap, diff, pt){ +for (var i = bondMap.length; --i >= 0; ) { +var map = bondMap[i]; +var v = JU.Measure.computeTorsion(atoms[map[0]], atoms[map[1]], atoms[map[2]], atoms[map[3]], true); +if (pt == 1) { +if (v - diff[i][0] > 180) v -= 360; + else if (v - diff[i][0] <= -180) v += 360; +}diff[i][pt] = v; +} +}, "~A,~A,~A,~N"); +Clazz.defineMethod(c$, "mapPolyhedra", +function(i1, i2, isSmiles, m){ +var ptsA = new JU.Lst(); +var ptsB = new JU.Lst(); +var data; +data = Clazz.newArray(-1, [Integer.$valueOf(i1), null]); +this.e.getShapePropertyData(21, "syminfo", data); +var p1 = data[1]; +data[0] = Integer.$valueOf(i2); +data[1] = null; +this.e.getShapePropertyData(21, "syminfo", data); +var p2 = data[1]; +if (p1 == null || p2 == null) return NaN; +var smiles1 = p1.get("polySmiles"); +var smiles2 = p2.get("polySmiles"); +var map = this.getSmilesMatches(smiles2, smiles1, null, null, isSmiles ? 1 : 16385, false, true); +if (map.length == 0) return NaN; +ptsA.addLast(p1.get("center")); +var a = p1.get("vertices"); +for (var i = 0, n = a.length; i < n; i++) ptsA.addLast(a[map[i + 1] - 1]); + +ptsB.addLast(p2.get("center")); +a = p2.get("vertices"); +for (var i = 0, n = a.length; i < n; i++) ptsB.addLast(a[i]); + +J.api.Interface.getInterface("JU.Eigen", this.e.vwr, "script"); +return JU.Measure.getTransformMatrix4(ptsA, ptsB, m, null); +}, "~N,~N,~B,JU.M4"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesGenerator.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesGenerator.js new file mode 100755 index 000000000000..18f1b134b8c1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesGenerator.js @@ -0,0 +1,863 @@ +Clazz.declarePackage("JS"); +Clazz.load(["java.util.Hashtable", "JU.BS", "JS.VTemp"], "JS.SmilesGenerator", ["JU.AU", "$.Lst", "$.SB", "JS.InvalidSmilesException", "$.SmilesAtom", "$.SmilesBond", "$.SmilesParser", "$.SmilesSearch", "$.SmilesStereo", "JU.BSUtil", "$.Elements", "$.JmolMolecule", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atoms = null; +this.ac = 0; +this.bsSelected = null; +this.bsAromatic = null; +this.flags = 0; +this.explicitHydrogen = 0; +this.ringSets = null; +this.vTemp = null; +this.nPairs = 0; +this.nPairsMax = 0; +this.bsBondsUp = null; +this.bsBondsDn = null; +this.bsToDo = null; +this.bsIgnoreHydrogen = new JU.BS(); +this.prevAtom = null; +this.prevSp2Atoms = null; +this.alleneStereo = null; +this.htRingsSequence = null; +this.htRings = null; +this.bsRingKeys = null; +this.bsIncludingH = null; +this.topologyOnly = false; +this.getAromatic = true; +this.addAtomComment = false; +this.noBioComment = false; +this.aromaticDouble = false; +this.noStereo = false; +this.openSMILES = false; +this.polySmilesCenter = null; +this.smilesStereo = null; +this.isPolyhedral = false; +this.aromaticRings = null; +this.sm = null; +this.iHypervalent = 0; +this.is2D = false; +this.haveSmilesAtoms = false; +this.noBranches = false; +this.allComponents = false; +this.ptAtom = 0; +this.ptSp2Atom0 = 0; +this.atemp = null; +this.chainCheck = 0; +Clazz.instantialize(this, arguments);}, JS, "SmilesGenerator", null); +Clazz.prepareFields (c$, function(){ +this.vTemp = new JS.VTemp(); +this.bsBondsUp = new JU.BS(); +this.bsBondsDn = new JU.BS(); +this.htRingsSequence = new java.util.Hashtable(); +this.htRings = new java.util.Hashtable(); +this.bsRingKeys = new JU.BS(); +}); +Clazz.defineMethod(c$, "getSmiles", +function(sm, atoms, ac, bsSelected, comment, flags){ +var ipt = bsSelected.nextSetBit(0); +if (ipt < 0) return ""; +this.haveSmilesAtoms = (Clazz.instanceOf(atoms[ipt],"JS.SmilesAtom") && (atoms[ipt]).definesStereo()); +this.sm = sm; +this.flags = flags; +this.atoms = atoms; +this.ac = ac; +bsSelected = JU.BSUtil.copy(bsSelected); +this.bsSelected = JU.BS.copy(bsSelected); +this.flags = flags = JS.SmilesSearch.addFlags(flags, comment == null ? "" : comment.toUpperCase()); +if ((flags & 1048576) == 1048576) return this.getBioSmiles(bsSelected, comment, flags); +this.openSMILES = ((flags & 5) == 5); +this.addAtomComment = ((flags & 131072) == 131072); +this.aromaticDouble = ((flags & 512) == 512); +this.explicitHydrogen = ((flags & 8192) == 8192 ? 8192 : (flags & 4096) == 4096 ? 4096 : 0); +if (this.explicitHydrogen == 8192) { +var bsHa = new JU.BS(); +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) { +var a = atoms[i]; +if (a.getCovalentHydrogenCount() == 3 && (a.getCovalentBondCount() == 4)) { +var doIgnore = true; +bsHa.clearAll(); +for (var j = a.getBondCount(); --j >= 0; ) { +var aj = a.getBondedAtomIndex(j); +if (atoms[aj].getElementNumber() == 1) { +doIgnore = (atoms[aj].getElementNumber() == 1); +if (doIgnore) bsHa.set(aj); + else break; +}if (doIgnore) { +this.bsIgnoreHydrogen.set(i); +bsSelected.andNot(bsHa); +}} +}} +}this.topologyOnly = ((flags & 16384) == 16384); +this.getAromatic = !((flags & 16) == 16); +this.noStereo = ((flags & 32) == 32); +this.isPolyhedral = ((flags & 65536) == 65536); +this.is2D = ((flags & 134217728) == 134217728); +this.noBranches = false; +this.allComponents = ((flags & 32768) == 32768); +return this.getSmilesComponent(atoms[ipt], bsSelected, true, false, false); +}, "JS.SmilesMatcher,~A,~N,JU.BS,~S,~N"); +Clazz.defineMethod(c$, "getBioSmiles", +function(bsSelected, comment, flags){ +this.addAtomComment = ((flags & 131072) == 131072); +var allowUnmatchedRings = ((flags & 3145728) == 3145728); +var noBioComments = ((flags & 34603008) == 34603008); +var crosslinkCovalent = ((flags & 5242880) == 5242880); +var crosslinkHBonds = ((flags & 9437184) == 9437184); +var addCrosslinks = (crosslinkCovalent || crosslinkHBonds); +var sb = new JU.SB(); +var bs = bsSelected; +if (comment != null && !this.noBioComment) sb.append("//* Jmol bioSMILES ").append(comment.$replace('*', '_')).append(" *//"); +var end = (this.noBioComment ? "" : "\n"); +var bsIgnore = new JU.BS(); +var lastComponent = null; +var groupString = ""; +var s; +var vLinks = new JU.Lst(); +try { +var len = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = this.atoms[i]; +var ch = a.getGroup1('?'); +var bioStructureName = a.getBioStructureTypeName(); +var unknown = (ch === ch.toLowerCase()); +if (end != null) { +if (sb.length() > 0) sb.append(end); +end = null; +len = 0; +if (bioStructureName.length > 0) { +var id = a.getChainID(); +if (id != 0 && !noBioComments) { +s = "//* chain " + a.getChainIDStr() + " " + bioStructureName + " " + a.getResno() + " *// "; +len = s.length; +sb.append(s); +}len++; +sb.append("~").appendC(bioStructureName.toLowerCase().charAt(0)).append("~"); +} else { +s = this.getSmilesComponent(a, bs, false, true, true); +if (s.equals(lastComponent)) { +end = ""; +continue; +}lastComponent = s; +var groupName = a.getGroup3(true); +var key; +if (noBioComments) { +key = "/" + s + "/"; +} else { +if (groupName != null) { +s = "//* " + groupName + " *//" + s; +}key = s + "//"; +}if (groupString.indexOf(key) >= 0) { +end = ""; +continue; +}groupString += key; +sb.append(s); +end = (noBioComments ? "." : ".\n"); +continue; +}}if (len >= 75 && !noBioComments) { +sb.append("\n "); +len = 2; +}if (this.addAtomComment) sb.append("\n//* [" + a.getGroup3(false) + "#" + a.getResno() + "] *//\t"); +if (unknown) { +this.addBracketedBioName(sb, a, bioStructureName.length > 0 ? ".0" : null, false); +} else { +sb.append(ch); +}len++; +if (addCrosslinks) { +a.getCrossLinkVector(vLinks, crosslinkCovalent, crosslinkHBonds); +for (var j = 0; j < vLinks.size(); j += 3) { +sb.append(":"); +s = this.getRingCache(vLinks.get(j).intValue(), vLinks.get(j + 1).intValue(), this.htRingsSequence); +sb.append(s); +len += 1 + s.length; +} +vLinks.clear(); +}a.getGroupBits(bsIgnore); +bs.andNot(bsIgnore); +var i2 = a.getOffsetResidueAtom("\0", 1); +if (i2 < 0 || !bs.get(i2)) { +if (!noBioComments) sb.append(" //* ").appendI(a.getResno()).append(" *//"); +if (i2 < 0 && (i2 = bs.nextSetBit(i + 1)) < 0) break; +if (len > 0) end = (noBioComments ? "." : ".\n"); +}i = i2 - 1; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw new JS.InvalidSmilesException("//* error: " + e.getMessage() + " *//"); +} else { +throw e; +} +} +if (!allowUnmatchedRings && !this.htRingsSequence.isEmpty()) { +this.dumpRingKeys(sb, this.htRingsSequence); +throw new JS.InvalidSmilesException("//* ?ring error? *//"); +}s = sb.toString(); +if (s.endsWith(".\n")) s = s.substring(0, s.length - 2); + else if (noBioComments && s.endsWith(".")) s = s.substring(0, s.length - 1); +return s; +}, "JU.BS,~S,~N"); +Clazz.defineMethod(c$, "addBracketedBioName", +function(sb, atom, atomName, addComment){ +sb.append("["); +if (atomName != null) { +var chain = atom.getChainIDStr(); +sb.append(atom.getGroup3(false)); +if (!atomName.equals(".0")) sb.append(atomName).append("#").appendI(atom.getElementNumber()); +if (addComment) { +sb.append("//* ").appendI(atom.getResno()); +if (chain.length > 0) sb.append(":").append(chain); +sb.append(" *//"); +}} else { +sb.append(JU.Elements.elementNameFromNumber(atom.getElementNumber())); +}sb.append("]"); +}, "JU.SB,JU.Node,~S,~B"); +Clazz.defineMethod(c$, "getSmilesComponent", +function(atom, bs, allowBioResidues, allowConnectionsToOutsideWorld, forceBrackets){ +var ret = ""; +while (true) { +if (atom == null) atom = this.atoms[bs.nextSetBit(0)]; +atom = this.checkFirstAtom(atom); +this.bsSelected = JU.JmolMolecule.getBranchBitSet(this.atoms, atom.getIndex(), JU.BSUtil.copy(bs), null, -1, true, allowBioResidues); +bs.andNot(this.bsSelected); +this.iHypervalent = -1; +for (var i = this.bsSelected.nextSetBit(0); i >= 0 && this.iHypervalent < 0; i = this.bsSelected.nextSetBit(i + 1)) { +if (this.atoms[i].getCovalentBondCount() > 4 || this.isPolyhedral) { +this.iHypervalent = i; +}} +this.bsIncludingH = JU.BSUtil.copy(this.bsSelected); +if (this.explicitHydrogen == 0) { +for (var j = this.bsSelected.nextSetBit(0); j >= 0; j = this.bsSelected.nextSetBit(j + 1)) { +var a = this.atoms[j]; +if (a.getAtomicAndIsotopeNumber() == 1 && a.getBondCount() > 0 && a.getBondedAtomIndex(0) != this.iHypervalent && !this.isExplicitOnly(this.atoms[a.getBondedAtomIndex(0)])) this.bsSelected.clear(j); +} +}this.bsAromatic = new JU.BS(); +if (!this.topologyOnly && this.bsSelected.cardinality() > 2) { +this.generateRingData(); +this.setBondDirections(); +}this.bsToDo = JU.BSUtil.copy(this.bsSelected); +var sb = new JU.SB(); +for (var i = this.bsToDo.nextSetBit(0); i >= 0; i = this.bsToDo.nextSetBit(i + 1)) { +if (this.atoms[i].getCovalentBondCount() > 4 || this.isPolyhedral || this.noBranches) { +if (atom == null) sb.append("."); +this.getSmilesAt(sb, this.atoms[i], allowConnectionsToOutsideWorld, false, forceBrackets, false); +atom = null; +}} +if (atom != null) while ((atom = this.getSmilesAt(sb, atom, allowConnectionsToOutsideWorld, true, forceBrackets, false)) != null) { +} +while (!this.bsToDo.isEmpty() || !this.htRings.isEmpty()) { +var e = this.htRings.values().iterator(); +if (e.hasNext()) { +atom = this.atoms[(e.next()[1]).intValue()]; +if (!this.bsToDo.get(atom.getIndex())) break; +} else { +atom = this.atoms[this.bsToDo.nextSetBit(0)]; +}sb.append("."); +this.prevSp2Atoms = this.alleneStereo = null; +this.prevAtom = null; +while ((atom = this.getSmilesAt(sb, atom, allowConnectionsToOutsideWorld, true, forceBrackets, false)) != null) { +} +} +if (!this.htRings.isEmpty()) { +this.dumpRingKeys(sb, this.htRings); +throw new JS.InvalidSmilesException("//* ?ring error? *//\n" + sb); +}var s = sb.toString(); +if (s.indexOf("^-") >= 0) { +var s0 = s; +try { +var keys = this.sm.getAtropisomerKeys(s, this.atoms, this.ac, this.bsSelected, this.bsAromatic, this.flags); +for (var i = 1; i < keys.length; ) { +var pt = s.indexOf("^-"); +if (pt < 0) break; +s = s.substring(0, pt + 1) + keys.substring(i, i + 3).trim() + s.substring(pt + 1); +i += 3; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +s = s0; +} else { +throw e; +} +} +}ret += s; +var ipt = bs.nextSetBit(0); +if (ipt < 0 || !this.allComponents) break; +ret += "."; +atom = null; +} +return ret; +}, "JU.Node,JU.BS,~B,~B,~B"); +Clazz.defineMethod(c$, "checkFirstAtom", +function(atom){ +if (this.explicitHydrogen == 0 && atom.getAtomicAndIsotopeNumber() == 1 && atom.getEdges().length > 0) atom = this.atoms[atom.getBondedAtomIndex(0)]; +var a = atom; +var aprev = null; +while (true) { +if (a.getCovalentBondCount() != 2) break; +var bonds = a.getEdges(); +if (bonds[0].getBondType() != 2 || bonds[1].getBondType() != 2) break; +var anext = bonds[0].getOtherNode(a); +if (anext === aprev) anext = bonds[1].getOtherNode(a); +aprev = a; +a = anext; +} +return (a == null ? atom : a); +}, "JU.Node"); +Clazz.defineMethod(c$, "generateRingData", +function(){ +var search = JS.SmilesParser.newSearch("[r500]", true, true); +search.target.setAtoms(this.atoms, this.ac, this.bsSelected); +search.setFlags(this.flags); +if (!search.needRingData && search.target.hasDoubleBonds()) search.needRingData = true; +search.ringDataMax = 7; +search.flags = this.flags; +var vRings = JU.AU.createArrayOfArrayList(4); +search.setRingData(null, vRings, true); +this.bsAromatic = search.target.bsAromatic; +this.ringSets = search.target.ringSets; +this.aromaticRings = vRings[3]; +}); +Clazz.defineMethod(c$, "getBondStereochemistry", +function(bond, atomFrom){ +if (bond == null) return '\0'; +var i = bond.index; +var isFirst = (atomFrom == null || bond.getAtomIndex1() == atomFrom.getIndex()); +return (this.bsBondsUp.get(i) ? (isFirst ? '/' : '\\') : this.bsBondsDn.get(i) ? (isFirst ? '\\' : '/') : '\0'); +}, "JU.Edge,JU.SimpleNode"); +Clazz.defineMethod(c$, "setBondDirections", +function(){ +var bsDone = new JU.BS(); +var edges = Clazz.newArray(2, 3, null); +for (var i = this.bsSelected.nextSetBit(0); i >= 0; i = this.bsSelected.nextSetBit(i + 1)) { +var atom1 = this.atoms[i]; +var bonds = atom1.getEdges(); +for (var k = 0; k < bonds.length; k++) { +var bond = bonds[k]; +var index = bond.index; +var atom2; +if (bsDone.get(index) || bond.getCovalentOrder() != 2 || JS.SmilesSearch.isRingBond(this.ringSets, null, i, (atom2 = bond.getOtherNode(atom1)).getIndex())) continue; +bsDone.set(index); +var nCumulene = 0; +var a10 = atom1; +while (atom2.getCovalentBondCount() == 2 && atom2.getValence() == 4) { +var e2 = atom2.getEdges(); +var e = e2[e2[0].getOtherNode(atom2) === a10 ? 1 : 0]; +bsDone.set(e.index); +a10 = atom2; +atom2 = e.getOtherNode(atom2); +nCumulene++; +} +if (nCumulene % 2 == 1) continue; +var b0 = null; +var a0 = null; +var i0 = 0; +var atom12 = Clazz.newArray(-1, [atom1, atom2]); +var edgeCount = 1; +for (var j = 0; j < 2 && edgeCount > 0 && edgeCount < 3; j++) { +edgeCount = 0; +var atomA = atom12[j]; +var bb = (atomA).getEdges(); +var explicitH = this.explicitHydrogen > 0 || this.isExplicitOnly(atomA); +for (var b = 0; b < bb.length; b++) { +var other; +if (bb[b].getCovalentOrder() != 1 || !explicitH && (other = bb[b].getOtherNode(atomA)).getElementNumber() == 1 && other.getIsotopeNumber() == 0) continue; +edges[j][edgeCount++] = bb[b]; +if (this.getBondStereochemistry(bb[b], atomA) != '\0') { +b0 = bb[b]; +i0 = j; +}} +} +if (edgeCount == 3 || edgeCount == 0) continue; +if (b0 == null) { +i0 = 0; +b0 = edges[i0][0]; +this.bsBondsUp.set(b0.index); +}var aA = atom12[i0]; +var c0 = this.getBondStereochemistry(b0, aA); +a0 = b0.getOtherNode(aA); +if (a0 == null) continue; +for (var j = 0; j < 2; j++) { +var aB = atom12[j]; +for (var jj = 0; jj < 2; jj++) { +var b1 = edges[j][jj]; +if (b1 == null || b1 === b0) continue; +var bi = b1.index; +var a1 = b1.getOtherNode(aB); +if (a1 == null) continue; +var c1 = this.getBondStereochemistry(b1, aB); +var isOpposite; +if (this.haveSmilesAtoms) { +var isop = (a0).isStereoOpposite(a1.getIndex(), aA.getIndex(), aB.getIndex()); +if (isop == null) { +if (JU.Logger.debugging) JU.Logger.debug("SmilesGenerator could not find stereo for " + a0 + "/" + a1); +continue; +}isOpposite = isop.booleanValue(); +} else { +isOpposite = JS.SmilesStereo.isDiaxial(aA, aB, a0, a1, this.vTemp, 0); +}if (c1 == '\0' || (c1 != c0) == isOpposite) { +var isUp = (c0 == '\\' && isOpposite || c0 == '/' && !isOpposite); +if (isUp == (b1.getAtomIndex1() != a1.getIndex())) { +this.bsBondsUp.set(bi); +} else { +this.bsBondsDn.set(bi); +}} else { +this.bsBondsUp.clear(bi); +this.bsBondsDn.clear(bi); +JU.Logger.error("BOND STEREOCHEMISTRY PARITY ERROR-stereochemistry for bond " + bi + ""); +}if (JU.Logger.debugging) JU.Logger.debug(this.getBondStereochemistry(b0, aA) + " " + a0.getIndex() + " " + a1.getIndex() + " " + this.getBondStereochemistry(b1, aB)); +} +} +} +} +}); +Clazz.defineMethod(c$, "getSmilesAt", +function(sb, atom, allowConnectionsToOutsideWorld, allowBranches, forceBrackets, isBranch){ +var atomIndex = atom.getIndex(); +if (!this.bsToDo.get(atomIndex)) return null; +this.ptAtom++; +this.bsToDo.clear(atomIndex); +var includeHs = (atomIndex == this.iHypervalent || this.explicitHydrogen != 0 && !this.bsIgnoreHydrogen.get(atomIndex)); +var explicitHs = this.isExplicitOnly(atom); +var isAromatic = this.bsAromatic.get(atomIndex); +var isExtension = (!this.bsSelected.get(atomIndex)); +var prevIndex = (this.prevAtom == null ? -1 : this.prevAtom.getIndex()); +var sp2Atoms = this.prevSp2Atoms; +var havePreviousSp2Atoms = (sp2Atoms != null); +var atomicNumber = atom.getElementNumber(); +var nH = 0; +var prevStereo = this.alleneStereo; +this.alleneStereo = null; +var v = new JU.Lst(); +var bondNext = null; +var bondPrev = null; +var bonds = atom.getEdges(); +if (!isBranch && this.polySmilesCenter != null) { +allowBranches = false; +this.sortPolyBonds(atom, this.prevAtom, this.polySmilesCenter); +}var aH = null; +var stereoFlag = (isAromatic ? 10 : 0); +if (JU.Logger.debugging) JU.Logger.debug(sb.toString()); +if (bonds != null) { +for (var i = 0, nb = bonds.length; i < nb; i++) { +var bond = bonds[i]; +if (!bond.isCovalent()) continue; +var atom1 = bonds[i].getOtherNode(atom); +var index1 = atom1.getIndex(); +if (index1 == prevIndex) { +bondPrev = bonds[i]; +continue; +}var isH = !includeHs && !explicitHs && (atom1.getElementNumber() == 1 && atom1.getIsotopeNumber() <= 0); +if (!this.bsIncludingH.get(index1)) { +if (isH || !allowConnectionsToOutsideWorld || !this.bsSelected.get(atomIndex)) continue; +this.bsToDo.set(index1); +}if (isH) { +aH = atom1; +nH++; +if (nH > 1) stereoFlag = 10; +} else { +v.addLast(bonds[i]); +}} +}if (nH > 1) sp2Atoms = null; +var nSp2Atoms = (sp2Atoms != null ? 2 : 0); +if (sp2Atoms == null && !isAromatic && nH <= 1) sp2Atoms = new Array(5); +var strPrev = null; +if (bondPrev != null) { +strPrev = this.getBondOrder(bondPrev, atomIndex, prevIndex, isAromatic); +if (sp2Atoms != null && !havePreviousSp2Atoms) { +sp2Atoms[nSp2Atoms++] = this.prevAtom; +}}if (sp2Atoms != null && !havePreviousSp2Atoms) { +this.ptSp2Atom0 = this.ptAtom; +}if (sp2Atoms != null && nH == 1) sp2Atoms[nSp2Atoms++] = aH; +var nMax = 0; +var bsBranches = new JU.BS(); +var nBonds = v.size(); +if (allowBranches) { +for (var i = 0; i < nBonds; i++) { +var bond = v.get(i); +var a = bond.getOtherNode(atom); +var n = a.getCovalentBondCount() - (includeHs || this.isExplicitOnly(a) ? 0 : (a).getCovalentHydrogenCount()); +var order = bond.getCovalentOrder(); +var isEndPoint = this.htRings.containsKey(JS.SmilesGenerator.getRingKey(a.getIndex(), atomIndex)); +if (isEndPoint) continue; +var check = (bondNext != null || i < nBonds - 1); +if (n == 1 && check) { +bsBranches.set(bond.index); +} else if ((order > 1 || n > nMax)) { +nMax = (order > 1 ? 1000 + order : n); +bondNext = bond; +}} +}var atomNext = (bondNext == null ? null : bondNext.getOtherNode(atom)); +var orderNext = (bondNext == null ? 0 : bondNext.getCovalentOrder()); +var stereo = new Array(7); +if (stereoFlag < 7 && bondPrev != null) { +if (havePreviousSp2Atoms && bondPrev.getCovalentOrder() == 2 && orderNext == 2 && sp2Atoms[1] != null) { +stereo[stereoFlag++] = sp2Atoms[0]; +stereo[stereoFlag++] = sp2Atoms[1]; +} else { +stereo[stereoFlag++] = this.prevAtom; +}}if (stereoFlag < 7 && nH == 1) stereo[stereoFlag++] = aH; +var deferStereo = false; +var chBond = this.getBondStereochemistry(bondPrev, this.prevAtom); +if (strPrev != null || chBond != '\0') { +if (chBond != '\0') strPrev = "" + chBond; +sb.append(strPrev); +}var stereoFlag0 = stereoFlag; +var nSp2Atoms0 = nSp2Atoms; +var sbBranches = new JU.SB(); +var vBranches = new JU.Lst(); +for (var i = 0; i < v.size(); i++) { +var bond = v.get(i); +if (!bsBranches.get(bond.index)) continue; +var a = bond.getOtherNode(atom); +var s2 = new JU.SB(); +this.prevAtom = atom; +this.prevSp2Atoms = this.alleneStereo = null; +var bond0t = bondNext; +var ptSp2Atom0t = this.ptSp2Atom0; +var ptAtomt = this.ptAtom; +this.getSmilesAt(s2, a, allowConnectionsToOutsideWorld, allowBranches, forceBrackets, true); +bondNext = bond0t; +this.ptAtom = ptAtomt; +this.ptSp2Atom0 = ptSp2Atom0t; +var branch = s2.toString(); +v.removeItemAt(i--); +if (bondNext == null) vBranches.addLast(branch); + else sbBranches.append("(").append(branch).append(")"); +if (stereoFlag < 7) stereo[stereoFlag++] = a; +if (sp2Atoms != null && nSp2Atoms < 5) sp2Atoms[nSp2Atoms++] = a; +} +var sbRings = new JU.SB(); +var stereoFlag1 = stereoFlag; +var nSp2Atoms1 = nSp2Atoms; +var atat = null; +if (!allowBranches && !this.noStereo && this.polySmilesCenter == null && (v.size() == 5 || v.size() == 6)) { +atat = this.sortInorganic(atom, v, this.vTemp); +}for (var i = 0; i < v.size(); i++) { +var bond = v.get(i); +if (bond === bondNext) continue; +var a = bond.getOtherNode(atom); +var ia = a.getIndex(); +strPrev = this.getBondOrder(bond, atomIndex, ia, isAromatic); +chBond = this.getBondStereochemistry(bond, atom); +if (!deferStereo && chBond != '\0') { +strPrev = "" + chBond; +}sbRings.append(strPrev); +sbRings.append(this.getRingCache(atomIndex, ia, this.htRings)); +if (stereoFlag < 7) stereo[stereoFlag++] = a; +if (sp2Atoms != null && nSp2Atoms < 5) sp2Atoms[nSp2Atoms++] = a; +} +if (stereoFlag0 != stereoFlag1 && stereoFlag1 != stereoFlag) this.swapArray(stereo, stereoFlag0, stereoFlag1, stereoFlag); +if (nSp2Atoms0 != nSp2Atoms1 && nSp2Atoms1 != nSp2Atoms) this.swapArray(sp2Atoms, nSp2Atoms0, nSp2Atoms1, nSp2Atoms); +if (havePreviousSp2Atoms && stereoFlag == 2 && orderNext == 2) { +var nc = (this.ptAtom - this.ptSp2Atom0); +var nb = atomNext.getCovalentBondCount(); +var lastIsN = (atomNext.getElementNumber() == 7); +if (nc % 2 == 0) { +stereoFlag = 8; +} else { +if (nb == 3 || nb == 2 && lastIsN) { +bonds = atomNext.getEdges(); +for (var k = 0; k < bonds.length; k++) { +var index = atomNext.getBondedAtomIndex(k); +if (bonds[k].isCovalent() && index != atomIndex) stereo[stereoFlag++] = this.atoms[index]; +} +if (nb == 2) stereo[stereoFlag++] = atomNext; +if (stereoFlag == 4) { +this.alleneStereo = stereo; +if ((stereo[3]).getAtomicAndIsotopeNumber() == 1) { +var n = stereo[3]; +stereo[3] = stereo[2]; +stereo[2] = n; +}}}}nSp2Atoms = 0; +} else if (atomNext != null && stereoFlag < 7) { +stereo[stereoFlag++] = atomNext; +}if (prevStereo != null) { +if (prevStereo[3] !== stereo[2]) { +var ptat = sb.lastIndexOf("@]="); +if (ptat > 0) { +var trail = sb.substring(ptat); +sb.setLength(sb.charAt(ptat - 1) == '@' ? ptat - 1 : ptat + 1); +sb.append(trail); +}}prevStereo = null; +}if (this.haveSmilesAtoms && atat == null && (stereoFlag == 4)) { +atat = (atom).getStereoAtAt(stereo); +}var charge = atom.getFormalCharge(); +var isotope = atom.getIsotopeNumber(); +var valence = atom.getValence(); +var osclass = (this.openSMILES ? (atom).getFloatProperty("property_atomclass") : NaN); +var atomName = atom.getAtomName(); +var groupType = (atom).getBioStructureTypeName(); +if (this.addAtomComment) sb.append("\n//* " + atom.toString() + " *//\t"); +if (this.topologyOnly) { +sb.append("*"); +} else if (isExtension && groupType.length != 0 && atomName.length != 0) { +this.addBracketedBioName(sb, atom, "." + atomName, false); +} else { +sb.append(JS.SmilesAtom.getAtomLabel(atomicNumber, isotope, (forceBrackets ? -1 : valence), charge, osclass, nH, isAromatic, atat != null ? atat : this.noStereo ? null : this.checkStereoPairs(atom, this.alleneStereo == null ? atomIndex : -1, stereo, stereoFlag, prevIndex == -1), this.is2D)); +}sb.appendSB(sbRings); +if (bondNext != null) { +sb.appendSB(sbBranches); +} else { +var n = vBranches.size() - 1; +if (n >= 0) { +for (var i = 0; i < n; i++) sb.append("(").append(vBranches.get(i)).append(")"); + +sb.append(vBranches.get(n)); +}return null; +}if (sp2Atoms != null && orderNext == 2 && (nSp2Atoms == 1 || nSp2Atoms == 2)) { +if (sp2Atoms[0] == null) sp2Atoms[0] = atom; +if (sp2Atoms[1] == null) sp2Atoms[1] = atom; +} else { +sp2Atoms = null; +nSp2Atoms = 0; +}this.prevSp2Atoms = sp2Atoms; +this.prevAtom = atom; +return atomNext; +}, "JU.SB,JU.SimpleNode,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "isExplicitOnly", +function(atom){ +return (atom.getElementNumber() == 7 && atom.getCovalentBondCount() == 2 || atom.getElementNumber() == 6 && atom.getIsotopeNumber() == 17); +}, "JU.SimpleNode"); +Clazz.defineMethod(c$, "swapArray", +function(a, i0, i1, i2){ +var n = i1 - i0; +if (this.atemp == null || this.atemp.length < n) this.atemp = new Array(n); +for (var p = n, i = i1; p > 0; ) this.atemp[--p] = a[--i]; + +for (var i = i1; i < i2; i++) a[i - n] = a[i]; + +for (var p = n, i = i2; p > 0; ) a[--i] = this.atemp[--p]; + +}, "~A,~N,~N,~N"); +Clazz.defineMethod(c$, "getBondOrder", +function(bondPrev, atomIndex, prevIndex, isAromatic){ +if (this.topologyOnly) return ""; +if ((bondPrev.order & 65537) == 65537) { +return "^-"; +}var border = Math.max(bondPrev.isPartial() ? 1 : 0, bondPrev.getCovalentOrder()); +return (!isAromatic || !this.bsAromatic.get(prevIndex) ? JS.SmilesBond.getBondOrderString(border) : border == 1 && !this.isSameAromaticRing(atomIndex, prevIndex) ? "-" : this.aromaticDouble && (border == 2 || border == 514) ? "=" : ""); +}, "JU.Edge,~N,~N,~B"); +Clazz.defineMethod(c$, "isSameAromaticRing", +function(a1, a2){ +var bs; +for (var i = this.aromaticRings.size(); --i >= 0; ) if ((bs = this.aromaticRings.get(i)).get(a1) && bs.get(a2)) return true; + +return false; +}, "~N,~N"); +Clazz.defineMethod(c$, "sortPolyBonds", +function(atom, refAtom, center){ +if (this.smilesStereo == null) try { +this.smilesStereo = JS.SmilesStereo.newStereo(null); +} catch (e) { +if (Clazz.exceptionOf(e,"JS.InvalidSmilesException")){ +} else { +throw e; +} +} +this.smilesStereo.sortPolyBondsByStereo(atom, refAtom, center, atom.getEdges(), this.vTemp.vA); +}, "JU.SimpleNode,JU.SimpleNode,JU.P3"); +Clazz.defineMethod(c$, "sortInorganic", +function(atom, v, vTemp){ +var atomIndex = atom.getIndex(); +var n = v.size(); +var axialPairs = new JU.Lst(); +var bonds = new JU.Lst(); +var a1; +var a2; +var a01 = null; +var a02 = null; +var bond1; +var bond2; +var bsDone = new JU.BS(); +var pair0 = null; +var stereo = new Array(6); +var isOK = true; +var s = ""; +var naxial = 0; +for (var i = 0; i < n; i++) { +bond1 = v.get(i); +stereo[0] = a1 = bond1.getOtherNode(atom); +if (i == 0) s = this.addStereoCheck(0, atomIndex, a1, "", null); + else if (isOK && this.addStereoCheck(0, atomIndex, a1, s, null) != null) isOK = false; +if (bsDone.get(i)) continue; +bsDone.set(i); +var isAxial = false; +for (var j = i + 1; j < n; j++) { +if (bsDone.get(j)) continue; +bond2 = v.get(j); +a2 = bond2.getOtherNode(atom); +if (JS.SmilesStereo.isDiaxial(atom, atom, a1, a2, vTemp, -0.95)) { +switch (++naxial) { +case 1: +a01 = a1; +break; +case 2: +a02 = a1; +break; +case 3: +if (JS.SmilesStereo.getHandedness(a02, a01, a1, atom, vTemp) == 2) { +var b = bond1; +bond1 = bond2; +bond2 = b; +}break; +} +axialPairs.addLast( Clazz.newArray(-1, [bond1, bond2])); +isAxial = true; +bsDone.set(j); +break; +}} +if (!isAxial) bonds.addLast(bond1); +} +var npAxial = axialPairs.size(); +if (isOK || n == 6 && npAxial != 3 || n == 5 && npAxial == 0) return ""; +pair0 = axialPairs.get(0); +bond1 = pair0[0]; +stereo[0] = bond1.getOtherNode(atom); +v.clear(); +v.addLast(bond1); +if (npAxial > 1) bonds.addLast(axialPairs.get(1)[0]); +if (npAxial == 3) bonds.addLast(axialPairs.get(2)[0]); +if (npAxial > 1) bonds.addLast(axialPairs.get(1)[1]); +if (npAxial == 3) bonds.addLast(axialPairs.get(2)[1]); +for (var i = 0; i < bonds.size(); i++) { +bond1 = bonds.get(i); +v.addLast(bond1); +stereo[i + 1] = bond1.getOtherNode(atom); +} +v.addLast(pair0[1]); +stereo[n - 1] = pair0[1].getOtherNode(atom); +return JS.SmilesStereo.getStereoFlag(atom, stereo, n, vTemp, this.is2D); +}, "JU.SimpleNode,JU.Lst,JS.VTemp"); +Clazz.defineMethod(c$, "checkStereoPairs", +function(atom, atomIndex, stereo, stereoFlag, isFirst){ +if (stereoFlag == 10 || stereoFlag < (this.is2D ? 3 : 4)) return ""; +if (this.explicitHydrogen == 0 && atomIndex >= 0 && stereoFlag == 4) { +if (atom.getElementNumber() <= 17) { +var s = ""; +for (var i = 0; i < 4; i++) { +if ((s = this.addStereoCheck(0, atomIndex, stereo[i], s, JU.BSUtil.newAndSetBit(atomIndex))) == null) { +return ""; +}} +}}if (this.is2D) { +var dir = (stereoFlag == 4 || !isFirst ? 1 : -1); +var bonds = atom.getEdges(); +var c = null; +for (var i = atom.getBondCount(); --i >= 0; ) { +var b = bonds[i]; +if (atom === b.getAtom(0)) { +switch (b.getBondType()) { +case 1025: +c = JS.SmilesGenerator.setStereoTemp(null, stereo, b.getAtom(1), dir); +break; +case 1041: +c = JS.SmilesGenerator.setStereoTemp(null, stereo, b.getAtom(1), -dir); +break; +} +}} +if (c == null) return ""; +if (stereoFlag == 3) { +stereo[stereoFlag++] = JS.SmilesGenerator.setStereoTemp(atom, stereo, c, 0); +}}return JS.SmilesStereo.getStereoFlag(atom, stereo, stereoFlag, this.vTemp, this.is2D); +}, "JU.SimpleNode,~N,~A,~N,~B"); +c$.setStereoTemp = Clazz.defineMethod(c$, "setStereoTemp", +function(atom, stereo, a, z){ +var b = new JS.SmilesAtom(); +for (var i = 0; i < 4; i++) { +var isA = (stereo[i] === a); +if (atom == null) { +if (isA) { +var c = a.getXYZ(); +b.set(c.x, c.y, z); +return stereo[i] = b; +}} else if (i < 3) { +b.add(stereo[i]); +}} +if (atom == null) return null; +b.scale(-0.33333334); +b.scaleAdd2(2, atom, b); +return b; +}, "JU.SimpleNode,~A,JU.SimpleNode,~N"); +Clazz.defineMethod(c$, "addStereoCheck", +function(level, atomIndex, atom, s, bsDone){ +if (bsDone != null) bsDone.set(atomIndex); +var n = (atom).getAtomicAndIsotopeNumber(); +if (n == 1 && this.explicitHydrogen == 0) return "H"; +var nx = atom.getCovalentBondCount(); +var nhcov = (atom).getCovalentHydrogenCount(); +var nh = (n == 6 && this.explicitHydrogen != 0 ? nhcov : 0); +if (n == 6 || n == 16 ? nx != 4 : n == 1 || nx > 1) return s + (++this.chainCheck); +var sa = ";" + level + "/" + n + "/" + nh + "/" + nx + (level == 0 ? "," : "_"); +if (n == 6 || n == 16) { +switch (nh) { +case 1: +return s + sa + (++this.chainCheck); +case 0: +case 2: +if (bsDone == null) return s; +var edges = (atom).getEdges(); +var s2 = ""; +var sa2 = ""; +var nunique = (nh == 2 ? 0 : 3); +for (var j = atom.getBondCount(); --j >= 0; ) { +var a2 = edges[j].getOtherNode(atom); +var i2 = a2.getIndex(); +if (bsDone.get(i2) || !edges[j].isCovalent()) continue; +bsDone.set(i2); +sa2 = this.addStereoCheck(level + 1, atom.getIndex(), a2, "", bsDone.clone()); +if (s2.indexOf(sa2) >= 0) nunique--; +s2 += sa2; +} +if (nunique == 3) { +return s + sa + (++this.chainCheck); +}sa = (sa + s2).$replace(',', '_'); +if (level > 0) return s + sa; +break; +case 3: +break; +} +}if (s.indexOf(sa) >= 0) { +if (nhcov == 3) { +var ndt = 0; +for (var j = 0; j < nx && ndt < 3; j++) { +var ia = (atom).getBondedAtomIndex(j); +if (ia == atomIndex) continue; +ndt += this.atoms[ia].getAtomicAndIsotopeNumber(); +} +if (ndt > 3) return s; +}return null; +}return s + sa; +}, "~N,~N,JU.SimpleNode,~S,JU.BS"); +Clazz.defineMethod(c$, "getRingCache", +function(i0, i1, ht){ +var key = JS.SmilesGenerator.getRingKey(i0, i1); +var o = ht.get(key); +var s = (o == null ? null : o[0]); +if (s == null) { +this.bsRingKeys.set(++this.nPairs); +this.nPairsMax = Math.max(this.nPairs, this.nPairsMax); +ht.put(key, Clazz.newArray(-1, [s = this.getRingPointer(this.nPairs), Integer.$valueOf(i1), Integer.$valueOf(this.nPairs)])); +if (JU.Logger.debugging) JU.Logger.debug("adding for " + i0 + " ring key " + this.nPairs + ": " + key); +} else { +ht.remove(key); +var nPair = (o[2]).intValue(); +this.bsRingKeys.clear(nPair); +if (this.bsRingKeys.nextSetBit(0) < 0 && (this.nPairsMax == 2 || this.nPairsMax == 99)) { +this.nPairsMax = this.nPairs = (this.nPairsMax == 99 ? 10 : 0); +}if (JU.Logger.debugging) JU.Logger.debug("using ring key " + key); +}return s; +}, "~N,~N,java.util.Map"); +Clazz.defineMethod(c$, "getRingPointer", +function(i){ +return (i < 10 ? "" + i : i < 100 ? "%" + i : "%(" + i + ")"); +}, "~N"); +Clazz.defineMethod(c$, "dumpRingKeys", +function(sb, ht){ +JU.Logger.info(sb.toString() + "\n\n"); +for (var key, $key = ht.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) JU.Logger.info("unmatched connection: " + key); + +}, "JU.SB,java.util.Map"); +c$.getRingKey = Clazz.defineMethod(c$, "getRingKey", +function(i0, i1){ +return Math.min(i0, i1) + "_" + Math.max(i0, i1); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesMatcher.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesMatcher.js new file mode 100755 index 000000000000..16dd6bae6a01 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesMatcher.js @@ -0,0 +1,405 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.api.SmilesMatcherInterface"], "JS.SmilesMatcher", ["JU.AU", "$.BS", "$.PT", "JS.InvalidSmilesException", "$.SmilesAtom", "$.SmilesBond", "$.SmilesGenerator", "$.SmilesParser", "$.SmilesSearch", "JU.BSUtil", "$.Elements", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.okMF = true; +Clazz.instantialize(this, arguments);}, JS, "SmilesMatcher", null, J.api.SmilesMatcherInterface); +Clazz.overrideMethod(c$, "getLastException", +function(){ +return (this.okMF == true ? JS.InvalidSmilesException.getLastError() : "MF_FAILED"); +}); +Clazz.overrideMethod(c$, "getMolecularFormula", +function(pattern, isSmarts, isEmpirical){ +this.clearExceptions(); +var search = JS.SmilesParser.newSearch("/nostereo/" + pattern, isSmarts, true); +search.createTopoMap(null); +search.nodes = search.target.nodes; +return search.getMolecularFormula(!isSmarts, null, isEmpirical); +}, "~S,~B,~B"); +Clazz.defineMethod(c$, "clearExceptions", +function(){ +JS.InvalidSmilesException.clear(); +}); +Clazz.overrideMethod(c$, "getSmiles", +function(atoms, ac, bsSelected, bioComment, flags){ +this.clearExceptions(); +return ( new JS.SmilesGenerator()).getSmiles(this, atoms, ac, bsSelected, bioComment, flags); +}, "~A,~N,JU.BS,~S,~N"); +Clazz.overrideMethod(c$, "areEqual", +function(smiles1, smiles2){ +this.clearExceptions(); +var isWild = (smiles1.indexOf("*") >= 0); +if (!isWild && smiles1.equals(smiles2)) return 1; +var flags = (isWild ? 2 : 1) | 8; +var result = this.matchPriv(smiles1, null, 0, null, null, false, flags, 2, JS.SmilesParser.newSearch(smiles2, false, true)); +return (result == null ? -1 : result.length); +}, "~S,~S"); +Clazz.defineMethod(c$, "areEqualTest", +function(smiles, search){ +search.set(); +var ret = this.matchPriv(smiles, null, 0, null, null, false, 9, 2, search); +return (ret != null && ret.length == 1); +}, "~S,JS.SmilesSearch"); +Clazz.overrideMethod(c$, "find", +function(pattern, target, flags){ +this.clearExceptions(); +target = JS.SmilesParser.cleanPattern(target); +pattern = JS.SmilesParser.cleanPattern(pattern); +var search = JS.SmilesParser.newSearch(target, false, true); +var array = this.matchPriv(pattern, null, 0, null, null, false, flags, 3, search); +for (var i = array.length; --i >= 0; ) { +var a = array[i]; +for (var j = a.length; --j >= 0; ) a[j] = (search.target.nodes[a[j]]).mapIndex; + +} +return array; +}, "~S,~S,~N"); +Clazz.overrideMethod(c$, "getAtoms", +function(target){ +this.clearExceptions(); +target = JS.SmilesParser.cleanPattern(target); +var search = JS.SmilesParser.newSearch(target, false, true); +search.createTopoMap( new JU.BS()); +return search.target.nodes; +}, "~S"); +Clazz.overrideMethod(c$, "getRelationship", +function(smiles1, smiles2){ +if (smiles1 == null || smiles2 == null || smiles1.length == 0 || smiles2.length == 0) return ""; +var mf1 = this.getMolecularFormula(smiles1, false, false); +var mf2 = this.getMolecularFormula(smiles2, false, false); +if (!mf1.equals(mf2)) return "none"; +var check; +var n1 = JU.PT.countChar(JU.PT.rep(smiles1, "@@", "@"), '@'); +var n2 = JU.PT.countChar(JU.PT.rep(smiles2, "@@", "@"), '@'); +check = (n1 == n2 && this.areEqual(smiles2, smiles1) > 0); +if (!check) { +var s = smiles1 + smiles2; +if (s.indexOf("/") >= 0 || s.indexOf("\\") >= 0 || s.indexOf("@") >= 0) { +if (n1 == n2 && n1 > 0 && s.indexOf("@SP") < 0) { +check = (this.areEqual("/invertstereo/" + smiles2, smiles1) > 0); +if (check) return "enantiomers"; +}check = (this.areEqual("/nostereo/" + smiles2, smiles1) > 0); +if (check) return (n1 == n2 ? "diastereomers" : "ambiguous stereochemistry!"); +}return "constitutional isomers"; +}return "identical"; +}, "~S,~S"); +Clazz.overrideMethod(c$, "reverseChirality", +function(smiles){ +smiles = JU.PT.rep(smiles, "@@", "!@"); +smiles = JU.PT.rep(smiles, "@", "@@"); +smiles = JU.PT.rep(smiles, "!@@", "@"); +return smiles; +}, "~S"); +Clazz.overrideMethod(c$, "getSubstructureSet", +function(pattern, target, ac, bsSelected, flags){ +var atoms = (Clazz.instanceOf(target,"JS.SmilesSearch") ? null : target); +return this.matchPriv(pattern, atoms, ac, bsSelected, null, true, flags | JS.SmilesParser.getFlags(pattern.toString()), 1, (atoms == null ? target : null)); +}, "~O,~O,~N,JU.BS,~N"); +Clazz.overrideMethod(c$, "getMMFF94AtomTypes", +function(smarts, atoms, ac, bsSelected, ret, vRings){ +this.clearExceptions(); +var sp = new JS.SmilesParser(true, true); +var search = null; +var flags = (770); +search = sp.parse(""); +search.exitFirstMatch = false; +search.target.setAtoms(atoms, Math.abs(ac), bsSelected); +search.flags = flags; +search.getRingData(vRings, true, true); +search.asVector = false; +search.subSearches = new Array(1); +search.getSelections(); +var bsDone = new JU.BS(); +for (var i = 0; i < smarts.length; i++) { +if (smarts[i] == null || smarts[i].length == 0 || smarts[i].startsWith("#")) { +ret.addLast(null); +continue; +}search.clear(); +search.subSearches[0] = sp.getSubsearch(search, JS.SmilesParser.cleanPattern(smarts[i]), flags); +var bs = JU.BSUtil.copy(search.search()); +ret.addLast(bs); +bsDone.or(bs); +if (bsDone.cardinality() == ac) return; +} +}, "~A,~A,~N,JU.BS,JU.Lst,~A"); +Clazz.overrideMethod(c$, "getSubstructureSetArray", +function(pattern, atoms, ac, bsSelected, bsAromatic, flags){ +return this.matchPriv(pattern, atoms, ac, bsSelected, bsAromatic, true, flags, 2, null); +}, "~S,~A,~N,JU.BS,JU.BS,~N"); +Clazz.defineMethod(c$, "getAtropisomerKeys", +function(pattern, atoms, ac, bsSelected, bsAromatic, flags){ +return this.matchPriv(pattern, atoms, ac, bsSelected, bsAromatic, false, flags, 4, null); +}, "~S,~A,~N,JU.BS,JU.BS,~N"); +Clazz.overrideMethod(c$, "polyhedronToSmiles", +function(center, faces, atomCount, points, flags, details){ +var atoms = new Array(atomCount); +for (var i = 0; i < atomCount; i++) { +atoms[i] = new JS.SmilesAtom(); +var pt = (points == null ? null : points[i]); +if (Clazz.instanceOf(pt,"JU.Node")) { +atoms[i].elementNumber = (pt).getElementNumber(); +atoms[i].bioAtomName = (pt).getAtomName(); +atoms[i].atomNumber = (pt).getAtomNumber(); +atoms[i].setT(pt); +} else { +atoms[i].elementNumber = (Clazz.instanceOf(pt,"JU.Point3fi") ? (pt).sD : -2); +if (pt != null) atoms[i].setT(pt); +}atoms[i].index = i; +} +var nBonds = 0; +for (var i = faces.length; --i >= 0; ) { +var face = faces[i]; +var n = face.length; +var iatom; +var iatom2; +for (var j = n; --j >= 0; ) { +if ((iatom = face[j]) >= atomCount || (iatom2 = face[(j + 1) % n]) >= atomCount) continue; +if (atoms[iatom].getBondTo(atoms[iatom2]) == null) { +var b = new JS.SmilesBond(atoms[iatom], atoms[iatom2], 1, false); +b.index = nBonds++; +}} +} +for (var i = 0; i < atomCount; i++) { +var n = atoms[i].bondCount; +if (n == 0 || n != atoms[i].bonds.length) atoms[i].bonds = JU.AU.arrayCopyObject(atoms[i].bonds, n); +} +var s = null; +var g = new JS.SmilesGenerator(); +if (points != null) g.polySmilesCenter = center; +this.clearExceptions(); +s = g.getSmiles(this, atoms, atomCount, JU.BSUtil.newBitSet2(0, atomCount), null, flags | 4096 | 16 | 32); +if ((flags & 65536) == 65536) { +s = ((flags & 131072) == 0 ? "" : "//* " + center + " *//\t") + "[" + JU.Elements.elementSymbolFromNumber(center.getElementNumber()) + "@PH" + atomCount + (details == null ? "" : "/" + details + "/") + "]." + s; +}return s; +}, "JU.Node,~A,~N,~A,~N,~S"); +Clazz.overrideMethod(c$, "getCorrelationMaps", +function(pattern, atoms, atomCount, bsSelected, flags){ +return this.matchPriv(pattern, atoms, atomCount, bsSelected, null, true, flags, 3, null); +}, "~S,~A,~N,JU.BS,~N"); +Clazz.defineMethod(c$, "matchPriv", +function(pattern, atoms, ac, bsSelected, bsAromatic, doTestAromatic, flags, mode, searchTarget){ +this.clearExceptions(); +try { +var isCompiled = (Clazz.instanceOf(pattern,"JS.SmilesSearch")); +if (isCompiled) flags |= 2; +var isSmarts = ((flags & 2) == 2); +var search = (isCompiled ? pattern : JS.SmilesParser.newSearch(pattern == null ? null : pattern.toString(), isSmarts, false)); +if (searchTarget != null) searchTarget.setFlags(searchTarget.flags | JS.SmilesParser.getFlags(pattern.toString())); +return this.matchPattern(search, atoms, ac, bsSelected, bsAromatic, doTestAromatic, flags, mode, searchTarget); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (JU.Logger.debugging) e.printStackTrace(); +if (JS.InvalidSmilesException.getLastError() == null) this.clearExceptions(); +throw new JS.InvalidSmilesException(JS.InvalidSmilesException.getLastError()); +} else { +throw e; +} +} +}, "~O,~A,~N,JU.BS,JU.BS,~B,~N,~N,JS.SmilesSearch"); +Clazz.defineMethod(c$, "matchPattern", +function(search, atoms, ac, bsSelected, bsAromatic, doTestAromatic, flags, mode, searchTarget){ +var isSmarts = ((flags & 2) == 2); +this.okMF = true; +if (searchTarget != null) { +if (searchTarget.targetSet) { +search.setTarget(searchTarget); +} else { +search.haveSmilesTarget = true; +bsAromatic = new JU.BS(); +searchTarget.createTopoMap(bsAromatic); +atoms = searchTarget.target.nodes; +ac = searchTarget.target.nodes.length; +if (isSmarts) { +var a1 = searchTarget.elementCounts; +var a2 = search.elementCounts; +var n = search.elementNumberMax; +if (n <= searchTarget.elementNumberMax) { +for (var i = 1; i <= n; i++) { +if (a1[i] < a2[i]) { +this.okMF = false; +break; +}} +} else { +this.okMF = false; +}} else { +var mf = search.getMFArray(true, null, false); +var mft = searchTarget.getMFArray(true, null, false); +var n = searchTarget.elementNumberMax; +if (n == search.elementNumberMax) { +for (var i = 2; i <= n; i++) { +if (mf[i] != mft[i]) { +this.okMF = false; +break; +}} +} else { +this.okMF = false; +}}}}if (this.okMF) { +if (!isSmarts && !search.patternAromatic) { +if (bsAromatic == null) bsAromatic = new JU.BS(); +search.normalizeAromaticity(bsAromatic); +search.isNormalized = true; +}if (!search.targetSet) search.target.setAtoms(atoms, ac, bsSelected); +if (search.targetSet || ac != 0 && (bsSelected == null || !bsSelected.isEmpty())) { +var is3D = search.targetSet || !(Clazz.instanceOf(atoms[0],"JS.SmilesAtom")); +search.getSelections(); +if (!doTestAromatic) search.target.bsAromatic = bsAromatic; +if (!search.target.hasRingData(flags)) search.setRingData(null, null, is3D || doTestAromatic || search.patternAromatic); +search.exitFirstMatch = ((flags & 8) == 8); +search.mapUnique = ((flags & 128) == 128); +}}switch (mode) { +case 1: +search.asVector = false; +return (this.okMF ? search.search() : new JU.BS()); +case 2: +if (!this.okMF) return new Array(0); +search.asVector = true; +var vb = search.search(); +return vb.toArray( new Array(vb.size())); +case 4: +if (!this.okMF) return ""; +search.exitFirstMatch = true; +search.setAtropicity = true; +search.search(); +return search.atropKeys; +case 3: +if (!this.okMF) return Clazz.newIntArray (0, 0, 0); +search.getMaps = true; +search.setFlags(flags | search.flags); +var vl = search.search(); +return vl.toArray(JU.AU.newInt2(vl.size())); +case 5: +if (!this.okMF) return Boolean.FALSE; +search.retBoolean = true; +search.setFlags(flags | search.flags); +return search.search(); +} +return null; +}, "JS.SmilesSearch,~A,~N,JU.BS,JU.BS,~B,~N,~N,JS.SmilesSearch"); +Clazz.overrideMethod(c$, "cleanSmiles", +function(smiles){ +return JS.SmilesParser.cleanPattern(smiles); +}, "~S"); +Clazz.overrideMethod(c$, "getMapForJME", +function(jme, at, bsAtoms){ +try { +var molecule = JS.SmilesMatcher.jmeToMolecule(jme); +var bs = JU.BSUtil.newBitSet2(0, molecule.ac); +var s = this.getSmiles(molecule.patternAtoms, molecule.ac, bs, null, 34); +var map = this.getCorrelationMaps(s, molecule.patternAtoms, molecule.ac, bs, 42); +var map2 = this.getCorrelationMaps(s, at, bsAtoms.cardinality(), bsAtoms, 42); +return Clazz.newArray(-1, [map[0], map2[0]]); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +return null; +}, "~S,~A,JU.BS"); +c$.jmeToMolecule = Clazz.defineMethod(c$, "jmeToMolecule", +function(jme){ +var molecule = new JS.SmilesSearch(); +var tokens = JU.PT.getTokens(jme); +var nAtoms = JU.PT.parseInt(tokens[0]); +var nBonds = JU.PT.parseInt(tokens[1]); +var pt = 2; +for (var i = 0; i < nAtoms; i++, pt += 3) { +var sa = tokens[pt]; +var a = molecule.addAtom(); +var ic = sa.indexOf("+"); +var charge = 0; +if (ic >= 0) { +charge = (ic == sa.length - 1 ? 1 : JU.PT.parseInt(sa.substring(ic + 1))); +} else if ((ic = sa.indexOf("-")) >= 0) { +charge = JU.PT.parseInt(sa.substring(ic)); +}a.setCharge(charge); +a.setSymbol(ic < 0 ? sa : sa.substring(0, ic)); +} +for (var i = 0; i < nBonds; i++) { +var ia = JU.PT.parseInt(tokens[pt++]) - 1; +var ib = JU.PT.parseInt(tokens[pt++]) - 1; +var iorder = JU.PT.parseInt(tokens[pt++]); +var a1 = molecule.patternAtoms[ia]; +var a2 = molecule.patternAtoms[ib]; +var order = 1; +switch (iorder) { +default: +case 1: +break; +case 2: +order = 2; +break; +case 3: +order = 3; +break; +} + new JS.SmilesBond(a1, a2, order, false).index = i; +} +molecule.isSmarts = true; +molecule.set(); +return molecule; +}, "~S"); +Clazz.overrideMethod(c$, "getSmilesFromJME", +function(jme){ +try { +var molecule = JS.SmilesMatcher.jmeToMolecule(jme); +var bs = JU.BSUtil.newBitSet2(0, molecule.ac); +return this.getSmiles(molecule.patternAtoms, molecule.ac, bs, null, 1); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz.overrideMethod(c$, "compileSmartsPattern", +function(pattern){ +pattern = JS.SmilesParser.cleanPattern(pattern); +return JS.SmilesParser.newSearch(pattern, true, false); +}, "~S"); +Clazz.overrideMethod(c$, "compileSearchTarget", +function(atoms, atomCount, bsSelected){ +var ss = new JS.SmilesSearch(); +ss.target.setAtoms(atoms, atomCount, bsSelected); +ss.targetSet = true; +return ss; +}, "~A,~N,JU.BS"); +Clazz.overrideMethod(c$, "hasStructure", +function(pattern, smilesSet, flags){ +var ret = Clazz.newIntArray (smilesSet.length, 0); +if ((flags & 1) != 1) { +flags = flags | 2; +}this.clearExceptions(); +pattern = JS.SmilesParser.cleanPattern(pattern); +try { +var search = JS.SmilesParser.newSearch(pattern, true, false); +for (var i = 0; i < smilesSet.length; i++) { +var smiles = JS.SmilesParser.cleanPattern(smilesSet[i]); +var searchTarget = JS.SmilesParser.newSearch(smiles, false, true); +searchTarget.setFlags(searchTarget.flags | JS.SmilesParser.getFlags(pattern)); +try { +this.clearExceptions(); +ret[i] = (this.matchPattern(search, null, 0, null, null, false, flags | 8, 5, searchTarget) === Boolean.TRUE ? 1 : 0); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +ret[i] = -1; +e.printStackTrace(); +} else { +throw e; +} +} +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (JU.Logger.debugging) e.printStackTrace(); +if (JS.InvalidSmilesException.getLastError() == null) this.clearExceptions(); +throw new JS.InvalidSmilesException(JS.InvalidSmilesException.getLastError()); +} else { +throw e; +} +} +return ret; +}, "~S,~A,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesMeasure.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesMeasure.js new file mode 100755 index 000000000000..ebf271e0d513 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesMeasure.js @@ -0,0 +1,84 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.SmilesMeasure", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.search = null; +this.nPoints = 0; +this.type = 0; +this.index = 0; +this.isNot = false; +this.indices = null; +this.minmax = null; +this.points = null; +Clazz.instantialize(this, arguments);}, JS, "SmilesMeasure", null); +Clazz.prepareFields (c$, function(){ +this.indices = Clazz.newIntArray (4, 0); +this.points = new Array(4); +}); +Clazz.makeConstructor(c$, +function(search, index, type, isNot, minmax){ +this.search = search; +this.type = Math.min(4, Math.max(type, 2)); +this.index = index; +this.isNot = isNot; +this.minmax = minmax; +for (var i = minmax.length - 2; i >= 0; i -= 2) if (minmax[i] > minmax[i + 1]) { +var min = minmax[i + 1]; +minmax[i + 1] = minmax[i]; +minmax[i] = min; +} +}, "JS.SmilesSearch,~N,~N,~B,~A"); +Clazz.defineMethod(c$, "addPoint", +function(index){ +if (this.nPoints == this.type) return false; +if (this.nPoints == 0) for (var i = 1; i < this.type; i++) this.indices[i] = index + i; + +this.indices[this.nPoints++] = index; +return true; +}, "~N"); +Clazz.defineMethod(c$, "check", +function(){ +for (var i = 0; i < this.type; i++) { +var iAtom = this.search.patternAtoms[this.indices[i]].getMatchingAtomIndex(); +this.points[i] = this.search.target.nodes[iAtom]; +} +var d = 0; +switch (this.type) { +case 2: +d = this.points[0].distance(this.points[1]); +break; +case 3: +this.search.v.vA.sub2(this.points[0], this.points[1]); +this.search.v.vB.sub2(this.points[2], this.points[1]); +d = this.search.v.vA.angle(this.search.v.vB) / 0.017453292; +break; +case 4: +d = JS.SmilesMeasure.setTorsionData(this.points[0], this.points[1], this.points[2], this.points[3], this.search.v, true); +break; +} +for (var i = this.minmax.length - 2; i >= 0; i -= 2) if (d >= this.minmax[i] && d <= this.minmax[i + 1]) return !this.isNot; + +return this.isNot; +}); +c$.setTorsionData = Clazz.defineMethod(c$, "setTorsionData", +function(pt1a, pt1, pt2, pt2a, v, withDihedral){ +v.vTemp1.sub2(pt1a, pt1); +v.vTemp2.sub2(pt2a, pt2); +if (!withDihedral) return 0; +v.vNorm2.sub2(pt1, pt2); +v.vNorm2.normalize(); +v.vTemp1.cross(v.vTemp1, v.vNorm2); +v.vTemp1.normalize(); +v.vTemp2.cross(v.vTemp2, v.vNorm2); +v.vTemp2.normalize(); +v.vNorm3.cross(v.vTemp1, v.vTemp2); +return v.vTemp1.angle(v.vTemp2) / 0.017453292 * (v.vNorm2.dot(v.vNorm3) < 0 ? 1 : -1); +}, "JU.T3,JU.T3,JU.T3,JU.T3,JS.VTemp,~B"); +Clazz.overrideMethod(c$, "toString", +function(){ +var s = "(." + "__dat".charAt(this.type) + this.index + ":" + JU.PT.toJSON(null, this.minmax) + ") for"; +for (var i = 0; i < this.type; i++) s += " " + (i >= this.nPoints ? "?" : "" + this.indices[i]); + +return s; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesParser.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesParser.js new file mode 100755 index 000000000000..987b38dc054b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesParser.js @@ -0,0 +1,933 @@ +Clazz.declarePackage("JS"); +Clazz.load(["java.util.Hashtable"], "JS.SmilesParser", ["JU.Lst", "$.PT", "$.SB", "JS.InvalidSmilesException", "$.SmilesAtom", "$.SmilesBond", "$.SmilesMeasure", "$.SmilesSearch", "$.SmilesStereo", "JU.Elements", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.connections = null; +this.htMeasures = null; +this.flags = 0; +this.isSmarts = false; +this.isBioSequence = false; +this.bioType = '\0'; +this.braceCount = 0; +this.branchLevel = 0; +this.componentCount = 0; +this.componentParenCount = 0; +this.ignoreStereochemistry = false; +this.bondDirectionPaired = true; +this.isTarget = false; +Clazz.instantialize(this, arguments);}, JS, "SmilesParser", null); +Clazz.prepareFields (c$, function(){ +this.connections = new java.util.Hashtable(); +this.htMeasures = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(isSmarts, isTarget){ +this.isSmarts = isSmarts; +this.isTarget = isTarget; +}, "~B,~B"); +c$.newSearch = Clazz.defineMethod(c$, "newSearch", +function(pattern, isSmarts, isTarget){ +return ( new JS.SmilesParser(isSmarts, isTarget)).parse(pattern); +}, "~S,~B,~B"); +Clazz.defineMethod(c$, "parse", +function(pattern){ +if (pattern == null) throw new JS.InvalidSmilesException("expression must not be null"); +var search = new JS.SmilesSearch(); +if (this.isSmarts && !this.isTarget) search.pattern0 = pattern; +if (pattern.indexOf("$(select") >= 0) pattern = this.parseNested(search, pattern, "select"); +var ret = Clazz.newIntArray (1, 0); +pattern = JS.SmilesParser.extractFlags(pattern, ret); +this.flags = ret[0]; +search.setFlags(this.flags); +if (pattern.indexOf("$") >= 0) pattern = this.parseVariables(pattern); +if (this.isSmarts && pattern.indexOf("[$") >= 0) pattern = this.parseVariableLength(pattern); +if (pattern.indexOf("||") < 0) return this.getSubsearch(search, pattern, this.flags); +var patterns = JU.PT.split(pattern, "||"); +var toDo = ""; +search.subSearches = new Array(patterns.length); +for (var i = 0; i < patterns.length; i++) { +var key = "|" + patterns[i] + "|"; +if (toDo.indexOf(key) < 0) { +search.subSearches[i] = this.getSubsearch(search, patterns[i], this.flags); +toDo += key; +}} +return search; +}, "~S"); +Clazz.defineMethod(c$, "parseVariableLength", +function(pattern){ +var sout = new JU.SB(); +var len = pattern.length - 1; +var nParen = 0; +var haveInternalOr = false; +for (var i = 0; i < len; i++) { +switch ((pattern.charAt(i)).charCodeAt(0)) { +case 40: +nParen++; +break; +case 41: +nParen--; +break; +case 124: +if (nParen > 0) { +haveInternalOr = true; +if (pattern.charAt(i + 1) == '|') { +pattern = pattern.substring(0, i) + pattern.substring(i + 1); +len--; +}}break; +} +} +if (pattern.indexOf("||") >= 0) { +var patterns = JU.PT.split(pattern, "||"); +for (var i = 0; i < patterns.length; i++) sout.append("||").append(this.parseVariableLength(patterns[i])); + +} else { +var pt = -1; +var ret = Clazz.newIntArray (1, 0); +var isOK = true; +var bracketed = null; +while ((pt = pattern.indexOf("[$", pt + 1)) >= 0) { +var pt0 = pt; +var min = -2147483648; +var max = -2147483648; +pt = JS.SmilesParser.getDigits(pattern, pt + 2, ret); +min = ret[0]; +if (min != -2147483648) { +if (JS.SmilesParser.getChar(pattern, pt) == '-') { +pt = JS.SmilesParser.getDigits(pattern, pt + 1, ret); +max = ret[0]; +}}if (JS.SmilesParser.getChar(pattern, pt) != '(') continue; +bracketed = JS.SmilesParser.getSubPattern(pattern, pt0, '['); +if (!bracketed.endsWith(")")) continue; +var pt1 = pt0 + bracketed.length + 2; +var repeat = JS.SmilesParser.getSubPattern(pattern, pt, '('); +var pt2 = pt; +bracketed = JS.SmilesParser.getSubPattern(pattern, pt, '['); +pt += 1 + repeat.length; +if (repeat.indexOf(':') >= 0 && repeat.indexOf('|') < 0) { +var parenCount = 0; +var n = repeat.length; +var ptColon = -1; +for (var i = 0; i < n; i++) { +switch ((repeat.charAt(i)).charCodeAt(0)) { +case 91: +case 40: +parenCount++; +break; +case 41: +case 93: +parenCount--; +break; +case 46: +if (ptColon >= 0 && parenCount == 0) n = i; +break; +case 58: +if (ptColon < 0 && parenCount == 0) ptColon = i; +break; +} +} +if (ptColon > 0) repeat = repeat.substring(0, ptColon) + "(" + repeat.substring(ptColon, n) + ")" + repeat.substring(n); +}if (min == -2147483648) { +var ptOr = repeat.indexOf("|"); +if (ptOr >= 0) return this.parseVariableLength(pattern.substring(0, pt0) + "[$1" + pattern.substring(pt2, pt2 + ptOr + 1) + ")]" + pattern.substring(pt1) + "||" + pattern.substring(0, pt0) + "[$1(" + pattern.substring(pt2 + ptOr + 2) + pattern.substring(pt1)); +continue; +}if (max == -2147483648) max = min; +if (repeat.indexOf("|") >= 0) repeat = "[$(" + repeat + ")]"; +for (var i = min; i <= max; i++) { +var sb = new JU.SB(); +sb.append("||").append(pattern.substring(0, pt0)); +for (var j = 0; j < i; j++) sb.append(repeat); + +sb.append(pattern.substring(pt1)); +sout.appendSB(sb); +} +} +if (!isOK) throw new JS.InvalidSmilesException("bad variable expression: " + bracketed); +}return (haveInternalOr ? this.parseVariableLength(sout.substring(2)) : sout.length() < 2 ? pattern : sout.substring(2)); +}, "~S"); +Clazz.defineMethod(c$, "getSubsearch", +function(parent, pattern, flags){ +this.htMeasures = new java.util.Hashtable(); +var search = new JS.SmilesSearch(); +search.setTop(parent); +search.isSmarts = this.isSmarts; +search.pattern = pattern; +search.pattern0 = parent.pattern0; +search.setFlags(flags); +if (pattern.indexOf("$(") >= 0) pattern = this.parseNested(search, pattern, ""); +this.parseSmiles(search, pattern, null, false); +if (this.braceCount != 0) throw new JS.InvalidSmilesException("unmatched '{'"); +if (!this.connections.isEmpty()) throw new JS.InvalidSmilesException("Open connection"); +search.set(); +if (this.isSmarts) for (var i = search.ac; --i >= 0; ) this.checkNested(search, search.patternAtoms[i], flags); + + else if (!this.isBioSequence) search.elementCounts[1] = search.getMissingHydrogenCount(); +if (!this.ignoreStereochemistry && !this.isTarget) this.fixChirality(search); +return search; +}, "JS.SmilesSearch,~S,~N"); +Clazz.defineMethod(c$, "checkNested", +function(search, atom, flags){ +if (atom.iNested > 0) { +var o = search.getNested(atom.iNested); +if ((typeof(o)=='string')) { +var s = o; +if (s.startsWith("select")) return; +if (s.charAt(0) != '~' && atom.bioType != '\0') s = "~" + atom.bioType + "~" + s; +var nested = this.getSubsearch(search, s, flags); +if (nested.ac > 0 && nested.patternAtoms[0].selected) atom.selected = true; +search.setNested(atom.iNested, nested); +}}for (var i = 0; i < atom.nSubAtoms; i++) this.checkNested(search, atom.subAtoms[i], flags); + +}, "JS.SmilesSearch,JS.SmilesAtom,~N"); +Clazz.defineMethod(c$, "fixChirality", +function(search){ +for (var i = search.ac; --i >= 0; ) { +var sAtom = search.patternAtoms[i]; +if (sAtom.stereo != null) sAtom.stereo.fixStereo(sAtom); +} +}, "JS.SmilesSearch"); +Clazz.defineMethod(c$, "parseSmiles", +function(search, pattern, currentAtom, isBranchAtom){ +var ret = Clazz.newIntArray (1, 0); +var pt = 0; +var ch; +var bond = null; +var wasMeasure = false; +var wasBranch = false; +loop : while (pattern != null && pattern.length != 0) { +var index = 0; +if (currentAtom == null) { +index = this.checkBioType(pattern, 0); +if (index == pattern.length) pattern += "*"; +if (this.isBioSequence) search.needAromatic = search.top.needAromatic = false; +}ch = JS.SmilesParser.getChar(pattern, index); +var haveOpen = this.checkBrace(search, ch, '{'); +if (haveOpen) ch = JS.SmilesParser.getChar(pattern, ++index); +if (ch == '(') { +var subString = JS.SmilesParser.getSubPattern(pattern, index, '('); +var isMeasure = (JS.SmilesParser.getChar(pattern, index + 1) == '.'); +if (currentAtom == null) { +if (isMeasure || !this.isSmarts) throw new JS.InvalidSmilesException("No previous atom for measure"); +search.haveComponents = true; +do { +this.componentCount++; +this.componentParenCount++; +ch = JS.SmilesParser.getChar(pattern = pattern.substring(1), 0); +} while (ch == '('); +if (!haveOpen && (haveOpen = this.checkBrace(search, ch, '{')) == true) ch = JS.SmilesParser.getChar(pattern = pattern.substring(1), 0); +} else { +wasMeasure = wasBranch = false; +if (subString.startsWith(".")) { +this.parseMeasure(search, subString.substring(1), currentAtom); +wasMeasure = true; +} else if (subString.length == 0 && this.isBioSequence) { +currentAtom.notCrossLinked = true; +} else { +this.branchLevel++; +this.parseSmiles(search, subString, currentAtom, true); +wasBranch = true; +this.branchLevel--; +}index = subString.length + 2; +ch = JS.SmilesParser.getChar(pattern, index); +if (ch == '}' && this.checkBrace(search, ch, '}')) index++; +ch = '\0'; +}}if (ch != '\0') { +pt = index; +out : while (ch != '\0') { +switch (JS.SmilesBond.isBondType(ch, this.isSmarts, this.isBioSequence)) { +case 1: +break; +case 0: +break out; +case -1: +if (!((JU.PT.isDigit(JS.SmilesParser.getChar(pattern, ++index)) && index++ > 0 ? JU.PT.isDigit(JS.SmilesParser.getChar(pattern, index++)) : true) && (ch = JS.SmilesParser.getChar(pattern, index)) == '-')) throw new JS.InvalidSmilesException("malformed atropisomerism bond ^nn- or ^^nn-"); +continue; +} +ch = JS.SmilesParser.getChar(pattern, ++index); +} +ch = JS.SmilesParser.getChar(pattern, index); +if (ch == ')') { +switch ((ch = JS.SmilesParser.getChar(pattern, ++index)).charCodeAt(0)) { +case 0: +case 41: +case 46: +pattern = pattern.substring(index); +this.componentParenCount--; +if (this.componentParenCount >= 0) continue loop; +} +throw new JS.InvalidSmilesException("invalid continuation after component grouping (SMARTS).(SMARTS)"); +}bond = this.parseBond(search, null, pattern.substring(pt, index), null, currentAtom, false, isBranchAtom, index - pt, ret); +if (haveOpen && bond.order != -1) ch = JS.SmilesParser.getChar(pattern, index = pt); +if (this.checkBrace(search, ch, '{')) ch = JS.SmilesParser.getChar(pattern, ++index); +switch ((ch).charCodeAt(0)) { +case 126: +if (bond.order == 0) { +index = this.checkBioType(pattern, index); +if (index == pattern.length) pattern += "*"; +}break; +case 40: +do { +this.componentCount++; +this.componentParenCount++; +ch = JS.SmilesParser.getChar(pattern, ++index); +} while (ch == '('); +break; +case 0: +if (bond.order == 0) return; +} +var isConnect = (JU.PT.isDigit(ch) || ch == '%'); +var isAtom = (!isConnect && (ch == '_' || ch == '[' || ch == '*' || JU.PT.isLetter(ch))); +if (isConnect) { +if (wasMeasure) throw new JS.InvalidSmilesException("connection number must immediately follow its connecting atom"); +index = JS.SmilesParser.getRingNumber(pattern, index, ch, ret); +var ringNumber = ret[0]; +this.parseConnection(search, ringNumber, currentAtom, bond); +bond = null; +} else if (isAtom) { +wasMeasure = wasBranch = false; +switch ((ch).charCodeAt(0)) { +case 91: +case 95: +var subPattern = JS.SmilesParser.getSubPattern(pattern, index, ch); +index += subPattern.length + (ch == '[' ? 2 : 0); +if (this.isBioSequence && ch == '[' && subPattern.indexOf(".") < 0 && subPattern.indexOf("_") < 0) subPattern += ".0"; +currentAtom = this.parseAtom(search, null, subPattern, currentAtom, bond, ch == '[', false, isBranchAtom); +currentAtom.hasSubpattern = true; +if (bond.order != -1 && bond.order != 0) this.setBondAtom(bond, null, currentAtom, search); +bond = null; +break; +default: +var ch2 = (!this.isBioSequence && JU.PT.isUpperCase(ch) ? JS.SmilesParser.getChar(pattern, index + 1) : '\0'); +if (ch != 'X' || ch2 != 'x') if (!JU.PT.isLowerCase(ch2) || JU.Elements.elementNumberFromSymbol(pattern.substring(index, index + 2), true) == 0) ch2 = '\0'; +if (ch2 != '\0' && "NA CA BA PA SC AC Na Ca Ba Pa Sc Ac".indexOf(pattern.substring(index, index + 2)) >= 0) { +ch2 = '\0'; +}var size = (JU.PT.isUpperCase(ch) && JU.PT.isLowerCase(ch2) ? 2 : 1); +currentAtom = this.parseAtom(search, null, pattern.substring(index, index + size), currentAtom, bond, false, false, isBranchAtom); +bond = null; +index += size; +} +} else { +throw new JS.InvalidSmilesException("Unexpected character: " + JS.SmilesParser.getChar(pattern, index)); +}ch = JS.SmilesParser.getChar(pattern, index); +if (ch == '}' && this.checkBrace(search, ch, '}')) index++; +}pattern = pattern.substring(index); +isBranchAtom = false; +} +}, "JS.SmilesSearch,~S,JS.SmilesAtom,~B"); +Clazz.defineMethod(c$, "parseConnection", +function(search, ringNum, currentAtom, bond){ +var r = Integer.$valueOf(ringNum); +var bond0 = this.connections.get(r); +if (bond0 == null) { +this.connections.put(r, bond); +search.target.ringCount++; +return; +}this.connections.remove(r); +switch (bond.order) { +case -1: +bond.order = (bond0.order != -1 ? bond0.order : this.isSmarts || currentAtom.isAromatic && bond0.atom1.isAromatic ? 81 : 1); +break; +case 1025: +bond.order = 1041; +break; +case 1041: +bond.order = 1025; +break; +} +if (bond0.order != -1 && bond0.order != bond.order || currentAtom === bond0.atom1 || bond0.atom1.getBondTo(currentAtom) != null) throw new JS.InvalidSmilesException("Bad connection type or atom"); +bond0.set(bond); +currentAtom.bondCount--; +bond0.setAtom2(currentAtom, search); +}, "JS.SmilesSearch,~N,JS.SmilesAtom,JS.SmilesBond"); +Clazz.defineMethod(c$, "setBondAtom", +function(bond, a1, a2, search){ +bond.set2a(a1, a2); +if (search != null && bond.order == 2 && bond.atom1 != null && bond.atom2 != null && bond.atom1.isAromatic && bond.atom2.isAromatic && ((this.flags & 512) == 0)) search.setFlags(this.flags = (this.flags | 512)); +}, "JS.SmilesBond,JS.SmilesAtom,JS.SmilesAtom,JS.SmilesSearch"); +c$.getRingNumber = Clazz.defineMethod(c$, "getRingNumber", +function(pattern, index, ch, ret){ +var ringNumber; +switch ((ch).charCodeAt(0)) { +case 37: +if (JS.SmilesParser.getChar(pattern, index + 1) == '(') { +var subPattern = JS.SmilesParser.getSubPattern(pattern, index + 1, '('); +JS.SmilesParser.getDigits(subPattern, 0, ret); +index += subPattern.length + 3; +if (ret[0] < 0) throw new JS.InvalidSmilesException("Invalid number designation: " + subPattern); +} else { +if (index + 3 <= pattern.length) index = JS.SmilesParser.getDigits(pattern.substring(0, index + 3), index + 1, ret); +if (ret[0] < 10) throw new JS.InvalidSmilesException("Two digits must follow the % sign"); +}ringNumber = ret[0]; +break; +default: +ringNumber = ch.charCodeAt(0) - 48; +index++; +} +ret[0] = ringNumber; +return index; +}, "~S,~N,~S,~A"); +Clazz.defineMethod(c$, "checkBioType", +function(pattern, index){ +this.isBioSequence = (pattern.charAt(index) == '~'); +if (this.isBioSequence) { +index++; +this.bioType = '*'; +var ch = JS.SmilesParser.getChar(pattern, 2); +if (ch == '~' && ((ch = pattern.charAt(1)) == '*' || JU.PT.isLowerCase(ch))) { +this.bioType = ch; +index = 3; +}}return index; +}, "~S,~N"); +Clazz.defineMethod(c$, "parseMeasure", +function(search, strMeasure, currentAtom){ +var pt = strMeasure.indexOf(":"); +var id = (pt < 0 ? strMeasure : strMeasure.substring(0, pt)); +while (pt != 0) { +var len = id.length; +if (len == 1) id += "0"; +var m = this.htMeasures.get(id); +if ((m == null) == (pt < 0) || len == 0) break; +try { +if (pt > 0) { +var type = ("__dat".indexOf(id.charAt(0))); +if (type < 2) break; +var ret = Clazz.newIntArray (1, 0); +JS.SmilesParser.getDigits(id, 1, ret); +var index = ret[0]; +strMeasure = strMeasure.substring(pt + 1); +var isNot = strMeasure.startsWith("!"); +if (isNot) strMeasure = strMeasure.substring(1); +var isNegative = (strMeasure.startsWith("-")); +if (isNegative) strMeasure = strMeasure.substring(1); +strMeasure = JU.PT.rep(strMeasure, "-", ","); +strMeasure = JU.PT.rep(strMeasure, ",,", ",-"); +if (isNegative) strMeasure = "-" + strMeasure; +var tokens = JU.PT.split(strMeasure, ","); +if (tokens.length % 2 == 1 || isNot && tokens.length != 2) break; +var vals = Clazz.newFloatArray (tokens.length, 0); +var i = tokens.length; +for (; --i >= 0; ) if (Float.isNaN(vals[i] = Float.parseFloat(tokens[i]))) break; + +if (i >= 0) break; +m = new JS.SmilesMeasure(search, index, type, isNot, vals); +search.measures.addLast(m); +if (index > 0) this.htMeasures.put(id, m); + else if (index == 0 && JU.Logger.debugging) JU.Logger.debug("measure created: " + m); +} else { +if (!m.addPoint(currentAtom.index)) break; +if (m.nPoints == m.type) { +this.htMeasures.remove(id); +if (JU.Logger.debugging) JU.Logger.debug("measure created: " + m); +}return; +}if (!m.addPoint(currentAtom.index)) break; +} catch (e) { +if (Clazz.exceptionOf(e,"NumberFormatException")){ +break; +} else { +throw e; +} +} +return; +} +throw new JS.InvalidSmilesException("invalid measure: " + strMeasure); +}, "JS.SmilesSearch,~S,JS.SmilesAtom"); +Clazz.defineMethod(c$, "checkBrace", +function(search, ch, type){ +switch ((ch).charCodeAt(0)) { +case 123: +if (ch != type) break; +this.braceCount++; +search.top.haveSelected = true; +return true; +case 125: +if (ch != type) break; +if (this.braceCount > 0) { +this.braceCount--; +return true; +}break; +default: +return false; +} +throw new JS.InvalidSmilesException("Unmatched '}'"); +}, "JS.SmilesSearch,~S,~S"); +Clazz.defineMethod(c$, "parseNested", +function(search, pattern, prefix){ +var index; +prefix = "$(" + prefix; +while ((index = pattern.lastIndexOf(prefix)) >= 0) { +var s = JS.SmilesParser.getSubPattern(pattern, index + 1, '('); +var pt = index + s.length + 3; +var ext = pattern.substring(pt); +pattern = pattern.substring(0, index); +var op = ""; +if (pattern.endsWith("]")) throw new JS.InvalidSmilesException("$(...) must be enclosed in brackets: " + pattern + "$(" + s + ")"); +if (index > 1 && prefix.length == 2 && ((pt = pattern.length) > 1 && ",;&![".indexOf(pattern.substring(pt - 1)) < 0)) op = "&"; +if (ext.length > 1 && ",;&!)]".indexOf(ext.charAt(0)) < 0) ext = "&" + ext; +pattern = pattern + op + "_" + search.top.addNested(s) + "_" + ext; +} +return pattern; +}, "JS.SmilesSearch,~S,~S"); +Clazz.defineMethod(c$, "parseVariables", +function(pattern){ +var keys = new JU.Lst(); +var values = new JU.Lst(); +var index; +var ipt = 0; +var iptLast = -1; +if (JU.Logger.debugging) JU.Logger.info(pattern); +while ((index = pattern.indexOf("$", ipt)) >= 0) { +if (JS.SmilesParser.getChar(pattern, index + 1) == '(') break; +ipt = JS.SmilesParser.skipTo(pattern, index, '='); +if (ipt <= index + 1 || JS.SmilesParser.getChar(pattern, ipt + 1) != '\"') break; +var key = pattern.substring(index, ipt); +if (key.lastIndexOf('$') > 0 || key.indexOf(']') > 0) throw new JS.InvalidSmilesException("Invalid variable name: " + key); +var s = JS.SmilesParser.getSubPattern(pattern, ipt + 1, '\"'); +keys.addLast("[" + key + "]"); +values.addLast(s); +ipt += s.length + 2; +ipt = JS.SmilesParser.skipTo(pattern, ipt, ';'); +iptLast = ++ipt; +} +if (iptLast < 0) return pattern; +pattern = pattern.substring(iptLast); +for (var i = keys.size(); --i >= 0; ) { +var k = keys.get(i); +var v = values.get(i); +if (!v.equals(k)) pattern = JU.PT.rep(pattern, k, v); +} +if (JU.Logger.debugging) JU.Logger.info(pattern); +return pattern; +}, "~S"); +Clazz.defineMethod(c$, "parseAtom", +function(search, atomSet, pattern, atom, bond, isBracketed, isAND, isBranchAtom){ +if (pattern == null || pattern.length == 0) throw new JS.InvalidSmilesException("Empty atom definition"); +var newAtom = new JS.SmilesAtom(); +if (this.componentParenCount > 0) newAtom.component = this.componentCount; +if (atomSet == null) search.appendAtom(newAtom); +var isNewAtom = true; +if (!this.checkLogic(search, pattern, newAtom, null, atom, isAND, isBranchAtom, null)) { +var ret = Clazz.newIntArray (1, 0); +if (this.isBioSequence && pattern.length == 1) pattern += ".0"; +var ch = pattern.charAt(0); +var index = 0; +var isNot = false; +if (this.isSmarts && ch == '!') { +ch = JS.SmilesParser.getChar(pattern, ++index); +if (ch == '\0') throw new JS.InvalidSmilesException("invalid '!'"); +newAtom.not = isNot = true; +}var biopt = (pattern.indexOf("@PH") >= 0 ? -1 : pattern.indexOf('.')); +if (biopt >= 0) { +newAtom.isBioResidue = true; +var resOrName = pattern.substring(index, biopt); +pattern = pattern.substring(biopt + 1).toUpperCase(); +var len = resOrName.length; +if ((biopt = resOrName.indexOf("^")) >= 0) { +if (biopt == len - 2) { +ch = resOrName.charAt(len - 1); +if (ch != '*') newAtom.insCode = ch; +}resOrName = resOrName.substring(0, biopt); +}if ((biopt = resOrName.indexOf("#")) >= 0) { +JS.SmilesParser.getDigits(resOrName, biopt + 1, ret); +newAtom.residueNumber = ret[0]; +resOrName = resOrName.substring(0, biopt); +}if (resOrName.length == 0) resOrName = "*"; +if (resOrName.length > 1) newAtom.residueName = resOrName.toUpperCase(); + else if (!resOrName.equals("*")) newAtom.residueChar = resOrName; +resOrName = pattern; +if ((biopt = resOrName.indexOf("#")) >= 0) { +JS.SmilesParser.getDigits(resOrName, biopt + 1, ret); +newAtom.elementNumber = ret[0]; +resOrName = resOrName.substring(0, biopt); +}if (resOrName.length == 0) resOrName = "*"; + else if (resOrName.equals("0")) resOrName = "\0"; +if (resOrName.equals("*")) newAtom.isBioAtomWild = true; + else newAtom.setAtomName(resOrName); +ch = '\0'; +}newAtom.setBioAtom(this.bioType); +var hydrogenCount = -2147483648; +while (ch != '\0' && isNewAtom) { +newAtom.setAtomName(this.isBioSequence ? "\0" : ""); +if (JU.PT.isDigit(ch)) { +index = JS.SmilesParser.getDigits(pattern, index, ret); +var mass = ret[0]; +if (mass == -2147483648) throw new JS.InvalidSmilesException("Non numeric atomic mass"); +if (JS.SmilesParser.getChar(pattern, index) == '?') { +index++; +mass = -mass; +}if (newAtom.elementDefined) throw new JS.InvalidSmilesException("atom mass must precede atom symbol or be separated from it with \";\""); +newAtom.setAtomicMass(mass); +} else { +switch ((ch).charCodeAt(0)) { +case 34: +var type = JU.PT.getQuotedStringAt(pattern, index); +index += type.length + 2; +newAtom.atomType = type; +break; +case 95: +index = JS.SmilesParser.getDigits(pattern, index + 1, ret) + 1; +if (ret[0] == -2147483648) throw new JS.InvalidSmilesException("Invalid SEARCH primitive: " + pattern.substring(index)); +newAtom.iNested = ret[0]; +if (!isBracketed) throw new JS.InvalidSmilesException("nesting must appear in [...]: $(" + search.getNested(ret[0]) + ")"); +if (this.isBioSequence && index != pattern.length) throw new JS.InvalidSmilesException("invalid characters: " + pattern.substring(index)); +break; +case 61: +index = JS.SmilesParser.getDigits(pattern, index + 1, ret); +newAtom.jmolIndex = ret[0]; +break; +case 35: +var isAtomNo = (pattern.charAt(index + 1) == '-'); +index = JS.SmilesParser.getDigits(pattern, index + (isAtomNo ? 2 : 1), ret); +if (isAtomNo) newAtom.atomNumber = ret[0]; + else newAtom.elementNumber = ret[0]; +break; +case 45: +case 43: +index = this.checkCharge(pattern, index, newAtom); +break; +case 64: +if (search.stereo == null) search.stereo = JS.SmilesStereo.newStereo(search); +index = JS.SmilesStereo.checkChirality(search, pattern, index, search.patternAtoms[newAtom.index]); +break; +case 58: +index = JS.SmilesParser.getDigits(pattern, ++index, ret); +if (ret[0] == -2147483648) throw new JS.InvalidSmilesException("Invalid atom class"); +newAtom.atomClass = ret[0]; +break; +default: +var nextChar = JS.SmilesParser.getChar(pattern, index + 1); +var len = index + (JU.PT.isLowerCase(nextChar) && (!isBracketed || !JU.PT.isDigit(JS.SmilesParser.getChar(pattern, index + 2))) ? 2 : 1); +var sym2 = pattern.substring(index + 1, len); +var symbol = Character.toUpperCase(ch) + sym2; +var mustBeSymbol = true; +var checkForPrimitive = (isBracketed && JU.PT.isLetter(ch)); +if (checkForPrimitive) { +if (!isNot && (isAND ? atomSet : newAtom).hasSymbol) { +mustBeSymbol = false; +} else if (ch == 'H') { +mustBeSymbol = (pattern.length == 1 || !JU.PT.isDigit(nextChar)); +} else if (JU.PT.isDigit(nextChar)) { +mustBeSymbol = false; +} else if (!symbol.equals("A") && !symbol.equals("Xx")) { +mustBeSymbol = ((ch == 'h' ? len == 2 : true) && JU.Elements.elementNumberFromSymbol(symbol, true) > 0); +if (!mustBeSymbol && len == 2) { +sym2 = ""; +symbol = symbol.substring(0, 1); +mustBeSymbol = (JU.Elements.elementNumberFromSymbol(symbol, true) > 0); +}}}if (mustBeSymbol) { +if (!isBracketed && !this.isSmarts && !this.isBioSequence && !JS.SmilesAtom.allowSmilesUnbracketed(symbol) || !newAtom.setSymbol(symbol = ch + sym2)) throw new JS.InvalidSmilesException("Invalid atom symbol: " + symbol); +if (isAND) atomSet.hasSymbol = true; +index += symbol.length; +} else { +index = JS.SmilesParser.getDigits(pattern, index + 1, ret); +var val = ret[0]; +switch ((ch).charCodeAt(0)) { +default: +throw new JS.InvalidSmilesException("Invalid SEARCH primitive: " + pattern.substring(index)); +case 68: +newAtom.setDegree(val == -2147483648 ? 1 : val); +break; +case 100: +newAtom.setNonhydrogenDegree(val == -2147483648 ? 1 : val); +break; +case 72: +hydrogenCount = (val == -2147483648 ? 1 : val); +break; +case 104: +newAtom.setImplicitHydrogenCount(val == -2147483648 ? -1 : val); +break; +case 82: +if (val == -2147483648) val = -1; +newAtom.setRingMembership(val); +search.top.needRingData = true; +break; +case 114: +if (val == -2147483648) { +val = -1; +newAtom.setRingMembership(val); +} else { +newAtom.setRingSize(val); +switch (val) { +case 500: +val = 5; +break; +case 600: +val = 6; +break; +} +if (val > search.ringDataMax) search.ringDataMax = val; +}search.top.needRingData = true; +break; +case 118: +newAtom.setValence(val == -2147483648 ? 1 : val); +break; +case 88: +newAtom.setConnectivity(val == -2147483648 ? 1 : val); +break; +case 120: +newAtom.setRingConnectivity(val == -2147483648 ? -1 : val); +search.top.needRingData = true; +break; +} +}} +}ch = JS.SmilesParser.getChar(pattern, index); +if (isNot && ch != '\0') throw new JS.InvalidSmilesException("'!' may only involve one primitive."); +} +if (hydrogenCount == -2147483648 && isBracketed) hydrogenCount = -2147483647; +newAtom.setExplicitHydrogenCount(hydrogenCount); +search.patternAtoms[newAtom.index].setExplicitHydrogenCount(hydrogenCount); +}if (this.braceCount > 0) newAtom.selected = true; +if (isNewAtom && atomSet != null) atomSet.addSubAtom(newAtom, isAND); +if (atom != null && bond.order == 0) { +newAtom.notBondedIndex = atom.index; +}if (atom != null && bond.order != 0) { +if (bond.order == -1) bond.order = (this.isBioSequence && isBranchAtom ? 112 : this.isSmarts || atom.isAromatic && newAtom.isAromatic ? 81 : 1); +if (!isBracketed) this.setBondAtom(bond, null, newAtom, search); +if (this.branchLevel == 0 && (bond.getBondType() == 17 || bond.order == 112)) this.branchLevel++; +}if (this.branchLevel == 0) search.lastChainAtom = newAtom; +return newAtom; +}, "JS.SmilesSearch,JS.SmilesAtom,~S,JS.SmilesAtom,JS.SmilesBond,~B,~B,~B"); +Clazz.defineMethod(c$, "checkCharge", +function(pattern, index, newAtom){ +var len = pattern.length; +var ch = pattern.charAt(index); +var count = 1; +++index; +if (index < len) { +var nextChar = pattern.charAt(index); +if (JU.PT.isDigit(nextChar)) { +var ret = Clazz.newIntArray (1, 0); +index = JS.SmilesParser.getDigits(pattern, index, ret); +count = ret[0]; +if (count == -2147483648) throw new JS.InvalidSmilesException("Non numeric charge"); +} else { +while (index < len && pattern.charAt(index) == ch) { +index++; +count++; +} +}}newAtom.setCharge(ch == '+' ? count : -count); +return index; +}, "~S,~N,JS.SmilesAtom"); +Clazz.defineMethod(c$, "parseBond", +function(search, bondSet, pattern, bond, currentAtom, isAND, isBranchAtom, len, ret){ +var ch; +if (len > 0) { +switch ((ch = pattern.charAt(0)).charCodeAt(0)) { +case 62: +if (!pattern.equals(">>")) { +len = -1; +break; +}case 46: +if (bond == null && bondSet == null) { +this.isBioSequence = (JS.SmilesParser.getChar(pattern, 1) == '~'); +return new JS.SmilesBond(null, null, 0, false); +}len = -1; +break; +case 43: +if (bondSet != null) len = -1; +break; +} +} else { +ch = '\0'; +}var newBond = (bondSet == null ? (bond == null ? new JS.SmilesBond(currentAtom, null, (this.isBioSequence && currentAtom != null ? (isBranchAtom ? 112 : 96) : -1), false) : bond) : isAND ? bondSet.addPrimitive() : bondSet.addBondOr()); +if (len > 0 && !this.checkLogic(search, pattern, null, newBond, currentAtom, isAND, false, ret)) { +var isBondNot = (ch == '!'); +if (isBondNot) { +ch = JS.SmilesParser.getChar(pattern, 1); +if (ch == '\0' || ch == '!') throw new JS.InvalidSmilesException("invalid '!'"); +}var bondType = JS.SmilesBond.getBondTypeFromCode(ch); +if (bondType == 65) search.top.needRingMemberships = true; +if (currentAtom == null && bondType != 0) throw new JS.InvalidSmilesException("Bond without a previous atom"); +switch (bondType) { +case 65537: +case 65538: +if ((len = pattern.length) < (isBondNot ? 3 : 2) || pattern.charAt(len - 1) != '-') { +len = 0; +} else { +if (len == (isBondNot ? 3 : 2)) { +newBond.setAtropType(22); +} else { +JS.SmilesParser.getDigits(pattern, (isBondNot ? 2 : 1), ret); +newBond.setAtropType(ret[0]); +}}search.haveBondStereochemistry = true; +break; +case 1025: +case 1041: +this.bondDirectionPaired = !this.bondDirectionPaired; +search.haveBondStereochemistry = true; +break; +case 17: +break; +case 2: +search.top.nDouble++; +case 1: +if (currentAtom.isAromatic) search.top.needRingData = true; +break; +} +newBond.set2(bondType, isBondNot); +if (this.isBioSequence && bondSet != null) bondSet.set2(bondType, isBondNot); +}if (len == -1) throw new JS.InvalidSmilesException("invalid bond:" + ch); +return newBond; +}, "JS.SmilesSearch,JS.SmilesBond,~S,JS.SmilesBond,JS.SmilesAtom,~B,~B,~N,~A"); +Clazz.defineMethod(c$, "checkLogic", +function(search, pattern, atom, bond, currentAtom, isAND, isBranchAtom, ret){ +var pt = pattern.lastIndexOf("!"); +if (atom != null) atom.pattern = pattern; +while (pt > 0) { +if (",;&!(".indexOf(pattern.charAt(pt - 1)) < 0) pattern = pattern.substring(0, pt) + "&" + pattern.substring(pt); +pt = pattern.lastIndexOf("!", pt - 1); +} +pt = pattern.indexOf(','); +var len = pattern.length; +var and = "&"; +out : while (true) { +var haveOr = (pt > 0); +if (haveOr && !this.isSmarts || pt == 0) break; +pt = pattern.indexOf(';'); +if (pt >= 0) { +if (!this.isSmarts || pt == 0) break; +if (haveOr) { +and = ";"; +haveOr = false; +} else { +pattern = pattern.$replace(';', '&'); +}}var index = 0; +if (haveOr) { +pattern += ","; +while ((pt = pattern.indexOf(',', index)) > 0 && pt <= len) { +var s = pattern.substring(index, pt); +if (s.length == 0) throw new JS.InvalidSmilesException("missing " + (bond == null ? "atom" : "bond") + " token"); +if (bond == null) this.parseAtom(search, atom, s, null, null, true, false, isBranchAtom); + else this.parseBond(search, bond, s, null, currentAtom, false, false, s.length, ret); +index = pt + 1; +} +} else if ((pt = pattern.indexOf(and)) >= 0 || bond != null && len > 1 && !isAND) { +if (pt == 0 || bond == null && !this.isSmarts) break; +if (bond != null && pt < 0) { +if (len > 1) { +var sNew = new JU.SB(); +for (var i = 0; i < len; ) { +var ch = pattern.charAt(i++); +sNew.appendC(ch); +switch ((ch).charCodeAt(0)) { +case 33: +if (!this.isSmarts) break out; +continue; +case 94: +case 96: +while ((ch = pattern.charAt(i++)) != '-' && ch != '\0') { +sNew.appendC(ch); +} +sNew.appendC('-'); +break; +} +if (i < len) { +if (!this.isSmarts) break out; +sNew.append(and); +}} +pattern = sNew.toString(); +len = pattern.length; +}}pattern += and; +while ((pt = pattern.indexOf(and, index)) > 0 && pt <= len) { +var s = pattern.substring(index, pt); +if (bond == null) this.parseAtom(search, atom, s, null, null, true, true, isBranchAtom); + else this.parseBond(search, this.isSmarts ? bond : null, s, this.isSmarts ? null : bond, currentAtom, true, false, s.length, ret); +index = pt + 1; +} +} else { +return false; +}return true; +} +var ch = pattern.charAt(pt); +throw new JS.InvalidSmilesException((this.isSmarts ? "invalid placement for '" + ch + "'" : "[" + ch + "] notation only valid with SMARTS, not SMILES,") + " in " + pattern); +}, "JS.SmilesSearch,~S,JS.SmilesAtom,JS.SmilesBond,JS.SmilesAtom,~B,~B,~A"); +c$.getSubPattern = Clazz.defineMethod(c$, "getSubPattern", +function(pattern, index, ch){ +var ch2; +var margin = 1; +switch ((ch).charCodeAt(0)) { +case 91: +ch2 = ']'; +break; +case 34: +case 37: +case 47: +ch2 = ch; +break; +case 40: +ch2 = ')'; +break; +default: +ch2 = ch; +margin = 0; +} +var len = pattern.length; +var pCount = 1; +for (var pt = index + 1; pt < len; pt++) { +var ch1 = pattern.charAt(pt); +if (ch1 == ch2) { +pCount--; +if (pCount == 0) return pattern.substring(index + margin, pt + 1 - margin); +} else if (ch1 == ch) { +pCount++; +}} +throw new JS.InvalidSmilesException("Unmatched " + ch); +}, "~S,~N,~S"); +c$.getChar = Clazz.defineMethod(c$, "getChar", +function(pattern, i){ +return (i < pattern.length ? pattern.charAt(i) : '\0'); +}, "~S,~N"); +c$.getDigits = Clazz.defineMethod(c$, "getDigits", +function(pattern, index, ret){ +var pt = index; +var len = pattern.length; +while (pt < len && JU.PT.isDigit(pattern.charAt(pt))) pt++; + +if (pt > index) try { +ret[0] = Integer.parseInt(pattern.substring(index, pt)); +return pt; +} catch (e) { +if (Clazz.exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +ret[0] = -2147483648; +return pt; +}, "~S,~N,~A"); +c$.skipTo = Clazz.defineMethod(c$, "skipTo", +function(pattern, index, ch0){ +var pt = index; +var ch; +while ((ch = JS.SmilesParser.getChar(pattern, ++pt)) != ch0 && ch != '\0') { +} +return (ch == '\0' ? -1 : pt); +}, "~S,~N,~S"); +c$.cleanPattern = Clazz.defineMethod(c$, "cleanPattern", +function(pattern){ +pattern = JU.PT.replaceAllCharacters(pattern, " \t\n\r", ""); +pattern = JU.PT.rep(pattern, "^^", "`"); +var i = 0; +var i2 = 0; +while ((i = pattern.indexOf("//*")) >= 0 && (i2 = pattern.indexOf("*//")) >= i) pattern = pattern.substring(0, i) + pattern.substring(i2 + 3); + +pattern = JU.PT.rep(pattern, "//", ""); +return pattern; +}, "~S"); +c$.extractFlags = Clazz.defineMethod(c$, "extractFlags", +function(pattern, ret){ +pattern = JS.SmilesParser.cleanPattern(pattern); +var flags = 0; +while (pattern.startsWith("/")) { +var strFlags = JS.SmilesParser.getSubPattern(pattern, 0, '/').toUpperCase(); +pattern = pattern.substring(strFlags.length + 2); +flags = JS.SmilesSearch.addFlags(flags, strFlags); +} +ret[0] = flags; +return pattern; +}, "~S,~A"); +c$.getFlags = Clazz.defineMethod(c$, "getFlags", +function(pattern){ +var ret = Clazz.newIntArray (1, 0); +JS.SmilesParser.extractFlags(pattern, ret); +return ret[0]; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesRing.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesRing.js new file mode 100755 index 000000000000..9eaf568d0e59 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesRing.js @@ -0,0 +1,34 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.BS"], "JS.SmilesRing", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$set = null; +this.edges = null; +this.bsEdgesToCheck = null; +this.isOK = false; +this.n = 0; +Clazz.instantialize(this, arguments);}, JS, "SmilesRing", JU.BS); +Clazz.makeConstructor(c$, +function(n, atoms, edges, isOK){ +Clazz.superConstructor (this, JS.SmilesRing, []); +this.or(atoms); +this.edges = edges; +this.isOK = isOK; +this.n = n; +}, "~N,JU.BS,JU.Lst,~B"); +Clazz.defineMethod(c$, "addEdges", +function(htEdgeMap){ +for (var i = this.edges.size(); --i >= 0; ) htEdgeMap.put(JS.SmilesRing.getKey(this.edges.get(i)), this.$set); + +}, "java.util.Hashtable"); +c$.getSetByEdge = Clazz.defineMethod(c$, "getSetByEdge", +function(edge, htEdgeMap){ +return htEdgeMap.get(JS.SmilesRing.getKey(edge)); +}, "JU.Edge,java.util.Hashtable"); +c$.getKey = Clazz.defineMethod(c$, "getKey", +function(e){ +var i = e.getAtomIndex1(); +var j = e.getAtomIndex2(); +return (i < j ? i + "_" + j : j + "_" + i); +}, "JU.Edge"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesRingSet.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesRingSet.js new file mode 100755 index 000000000000..ee86e9c81806 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesRingSet.js @@ -0,0 +1,35 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.Lst", "$.BS"], "JS.SmilesRingSet", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bs = null; +Clazz.instantialize(this, arguments);}, JS, "SmilesRingSet", JU.Lst); +Clazz.prepareFields (c$, function(){ +this.bs = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.SmilesRingSet, []); +}); +Clazz.defineMethod(c$, "addSet", +function(set, htEdgeMap){ +for (var i = set.size(); --i >= 0; ) { +var r = set.get(i); +this.addRing(r); +r.addEdges(htEdgeMap); +} +}, "JS.SmilesRingSet,java.util.Hashtable"); +Clazz.defineMethod(c$, "addRing", +function(ring){ +this.addLast(ring); +ring.$set = this; +this.bs.or(ring); +}, "JS.SmilesRing"); +Clazz.defineMethod(c$, "getElectronCount", +function(eCounts){ +var eCount = 0; +for (var j = this.bs.nextSetBit(0); j >= 0; j = this.bs.nextSetBit(j + 1)) eCount += eCounts[j]; + +return eCount; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesSearch.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesSearch.js new file mode 100755 index 000000000000..35bf82e8347f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesSearch.js @@ -0,0 +1,1167 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.JmolMolecule", "JU.BS", "$.Lst"], "JS.SmilesSearch", ["java.util.Hashtable", "JU.AU", "$.SB", "JS.InvalidSmilesException", "$.SmilesAromatic", "$.SmilesAtom", "$.SmilesBond", "$.SmilesMeasure", "$.SmilesParser", "$.SmilesStereo", "$.VTemp", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isSmarts = false; +this.top = null; +this.target = null; +this.pattern = null; +this.patternAtoms = null; +this.v = null; +this.targetSet = false; +this.aromaticOpen = false; +this.aromaticStrict = false; +this.aromaticPlanar = false; +this.aromaticDouble = false; +this.aromaticMMFF94 = false; +this.aromaticDefined = false; +this.aromaticUnknown = false; +this.noAromatic = false; +this.ignoreAtomClass = false; +this.ignoreElement = false; +this.ignoreStereochemistry = false; +this.invertStereochemistry = false; +this.exitFirstMatch = false; +this.groupByModel = false; +this.setAtropicity = false; +this.patternAromatic = false; +this.haveSmilesTarget = false; +this.isTopology = false; +this.patternBioSequence = false; +this.subSearches = null; +this.haveSelected = false; +this.haveBondStereochemistry = false; +this.stereo = null; +this.needRingData = false; +this.needAromatic = true; +this.needRingMemberships = false; +this.nDouble = 0; +this.ringDataMax = -2147483648; +this.measures = null; +this.flags = 0; +this.atropKeys = null; +this.lastChainAtom = null; +this.asVector = false; +this.getMaps = false; +this.retBoolean = false; +this.isNormalized = false; +this.haveComponents = false; +this.isSilent = false; +this.isRingCheck = false; +this.bsFound = null; +this.htNested = null; +this.nNested = 0; +this.nestedBond = null; +this.vReturn = null; +this.uniqueList = null; +this.bsReturn = null; +this.bsCheck = null; +this.mapUnique = false; +this.polyhedronStereo = null; +this.polyAtom = null; +this.autoAddImplicitH = true; +this.pattern0 = null; +Clazz.instantialize(this, arguments);}, JS, "SmilesSearch", JU.JmolMolecule); +Clazz.prepareFields (c$, function(){ +this.patternAtoms = new Array(16); +this.measures = new JU.Lst(); +this.bsFound = new JU.BS(); +this.bsReturn = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JS.SmilesSearch, []); +this.top = this; +this.target = new JS.SmilesSearch.SmilesTarget(); +this.v = new JS.VTemp(); +}); +c$.isRingBond = Clazz.defineMethod(c$, "isRingBond", +function(ringSets, bsAromaticRings, a1, a2){ +if (ringSets != null) { +for (var i = ringSets.size(); --i >= 0; ) { +var bsRing = ringSets.get(i); +if (bsRing.get(a1) && bsRing.get(a2)) { +if (bsAromaticRings == null || bsAromaticRings.get(i)) return true; +}} +}return false; +}, "JU.Lst,JU.BS,~N,~N"); +Clazz.defineMethod(c$, "setTarget", +function(s){ +this.target = s.target; +this.targetSet = true; +}, "JS.SmilesSearch"); +Clazz.defineMethod(c$, "setTop", +function(parent){ +while (parent.top !== parent) parent = parent.top; + +this.top = parent; +}, "JS.SmilesSearch"); +c$.addFlags = Clazz.defineMethod(c$, "addFlags", +function(flags, strFlags){ +if (strFlags.indexOf("OPEN") >= 0) flags |= 5; +if (strFlags.indexOf("BIO") >= 0) flags |= 1048576; +if (strFlags.indexOf("HYDROGEN2") >= 0) flags |= 8192; + else if (strFlags.indexOf("HYDROGEN") >= 0) flags |= 4096; +if (strFlags.indexOf("FIRSTMATCHONLY") >= 0) flags |= 8; +if (strFlags.indexOf("STRICT") >= 0) flags |= 256; +if (strFlags.indexOf("PLANAR") >= 0) flags |= 1024; +if (strFlags.indexOf("NOAROMATIC") >= 0 || strFlags.indexOf("NONAROMATIC") >= 0) flags |= 16; +if (strFlags.indexOf("AROMATICDOUBLE") >= 0) flags |= 512; +if (strFlags.indexOf("AROMATICDEFINED") >= 0) flags |= 128; +if (strFlags.indexOf("MMFF94") >= 0) flags |= 768; +if (strFlags.indexOf("ALLCOMPONENTS") >= 0) flags |= 32768; +if (strFlags.indexOf("TOPOLOGY") >= 0) flags |= 16384; +if (strFlags.indexOf("NOATOMCLASS") >= 0) flags |= 2048; +if (strFlags.indexOf("NOSTEREO") >= 0) { +flags |= 32; +} else if (strFlags.indexOf("INVERTSTEREO") >= 0) { +if ((flags & 64) != 0) flags &= -65; + else flags |= 64; +}if (strFlags.indexOf("ATOMCOMMENT") >= 0) flags |= 131072; +if (strFlags.indexOf("GROUPBYMODEL") >= 0) flags |= 67108864; +if ((flags & 1048576) == 1048576) { +if (strFlags.indexOf("NOCOMMENT") >= 0) flags |= 34603008; +if (strFlags.indexOf("UNMATCHED") >= 0) flags |= 3145728; +if (strFlags.indexOf("COVALENT") >= 0) flags |= 5242880; +if (strFlags.indexOf("HBOND") >= 0) flags |= 9437184; +}return flags; +}, "~N,~S"); +Clazz.defineMethod(c$, "setFlags", +function(flags){ +this.flags = flags; +this.exitFirstMatch = new Boolean (this.exitFirstMatch | ((flags & 8) == 8)).valueOf(); +this.aromaticOpen = ((flags & 5) == 5); +this.aromaticStrict = ((flags & 256) == 256); +this.aromaticPlanar = ((flags & 1024) == 1024); +this.aromaticMMFF94 = ((flags & 768) == 768); +this.aromaticDouble = ((flags & 512) == 512); +this.aromaticDefined = ((flags & 128) == 128); +this.noAromatic = new Boolean (this.noAromatic | ((flags & 16) == 16)).valueOf(); +this.aromaticUnknown = !this.noAromatic && !this.aromaticOpen && !this.aromaticDouble && !this.aromaticStrict && !this.aromaticPlanar && !this.aromaticMMFF94 && !this.aromaticDefined; +this.groupByModel = ((flags & 67108864) == 67108864); +this.ignoreAtomClass = ((flags & 2048) == 2048); +this.ignoreStereochemistry = ((flags & 32) == 32); +this.invertStereochemistry = !this.ignoreStereochemistry && ((flags & 64) == 64); +this.ignoreElement = ((flags & 16384) == 16384); +}, "~N"); +Clazz.defineMethod(c$, "set", +function(){ +if (this.patternAtoms.length > this.ac) this.patternAtoms = JU.AU.arrayCopyObject(this.patternAtoms, this.ac); +this.nodes = this.patternAtoms; +this.isTopology = true; +this.patternAromatic = false; +this.patternBioSequence = true; +for (var i = this.ac; --i >= 0; ) { +var atom = this.patternAtoms[i]; +if (this.isTopology && atom.isDefined()) this.isTopology = false; +if (!atom.isBioResidue) this.patternBioSequence = false; +if (atom.isAromatic) this.patternAromatic = true; +atom.setBondArray(); +if (this.autoAddImplicitH && !this.isSmarts && atom.bioType == '\0' && !atom.setHydrogenCount()) throw new JS.InvalidSmilesException("unbracketed atoms must be one of: B, C, N, O, P, S, F, Cl, Br, I, *,"); +} +if (this.haveComponents) { +for (var i = this.ac; --i >= 0; ) { +var a = this.patternAtoms[i]; +var bonds = a.bonds; +var ia = a.component; +for (var j = a.bondCount; --j >= 0; ) { +var b = bonds[j]; +var ib; +if (b.isConnection && b.atom2 === a && (ib = b.atom1.component) != ia) { +for (var k = this.ac; --k >= 0; ) if (this.patternAtoms[k].component == ia) this.patternAtoms[k].component = ib; + +}} +} +}}); +Clazz.defineMethod(c$, "addAtom", +function(){ +return this.appendAtom( new JS.SmilesAtom()); +}); +Clazz.defineMethod(c$, "appendAtom", +function(sAtom){ +if (this.ac >= this.patternAtoms.length) this.patternAtoms = JU.AU.doubleLength(this.patternAtoms); +return this.patternAtoms[this.ac] = sAtom.setIndex(this.ac++); +}, "JS.SmilesAtom"); +Clazz.defineMethod(c$, "addNested", +function(pattern){ +if (this.htNested == null) this.htNested = new java.util.Hashtable(); +this.setNested(++this.nNested, pattern); +return this.nNested; +}, "~S"); +Clazz.defineMethod(c$, "clear", +function(){ +this.bsReturn.clearAll(); +this.nNested = 0; +this.htNested = null; +this.nestedBond = null; +this.clearBsFound(-1); +}); +Clazz.defineMethod(c$, "clearBsFound", +function(iAtom){ +if (iAtom < 0) { +if (this.bsCheck == null) { +this.bsFound.clearAll(); +}} else this.bsFound.clear(iAtom); +}, "~N"); +Clazz.defineMethod(c$, "setNested", +function(iNested, o){ +this.top.htNested.put("_" + iNested, o); +}, "~N,~O"); +Clazz.defineMethod(c$, "getNested", +function(iNested){ +return this.top.htNested.get("_" + iNested); +}, "~N"); +Clazz.defineMethod(c$, "getMissingHydrogenCount", +function(){ +var n = 0; +var nH; +for (var i = 0; i < this.ac; i++) if ((nH = this.patternAtoms[i].explicitHydrogenCount) >= 0) n += nH; + +return n; +}); +Clazz.defineMethod(c$, "setRingData", +function(bsA, vRings, doProcessAromatic){ +if (this.isTopology || this.patternBioSequence) this.needAromatic = false; +this.needAromatic = new Boolean (this.needAromatic &( new Boolean ((bsA == null) & !this.noAromatic).valueOf())).valueOf(); +if (this.needAromatic) this.needRingData = true; +if (!this.needAromatic) { +this.target.bsAromatic.clearAll(); +if (bsA != null) this.target.bsAromatic.or(bsA); +if (!this.needRingMemberships && !this.needRingData) return; +}this.getRingData(vRings, this.needRingData, doProcessAromatic); +}, "JU.BS,~A,~B"); +Clazz.defineMethod(c$, "getRingData", +function(vRings, needRingData, doTestAromatic){ +var isStrict = (this.needAromatic && (this.aromaticStrict || !this.aromaticOpen && !this.aromaticPlanar)); +if (isStrict && this.aromaticUnknown) { +if (this.target.ac > 0 && this.target.nodes[this.target.bsSelected.nextSetBit(0)].modelIsRawPDB()) isStrict = false; +}var isOpenNotStrict = (this.needAromatic && this.aromaticOpen && !this.aromaticStrict); +var checkExplicit = (this.needAromatic && !isStrict); +var doFinalize = (this.needAromatic && doTestAromatic && (isStrict || isOpenNotStrict)); +var setAromatic = (this.needAromatic && !this.aromaticDefined); +var aromaticMax = 7; +var lstAromatic = (vRings == null ? new JU.Lst() : (vRings[3] = new JU.Lst())); +var lstSP2 = (doFinalize ? new JU.Lst() : null); +var strictness = (!isStrict ? 0 : this.aromaticMMFF94 ? 2 : 1); +if (this.needAromatic && this.aromaticDefined) { +this.target.checkAromaticDefined(); +strictness = 0; +}this.ringDataMax = this.target.setRingData(strictness, needRingData, this.ringDataMax); +if (this.target.selectedAtomCount < 3) return; +var s = "****"; +var max = this.ringDataMax; +while (s.length < max) s += s; + +var eCounts = (doFinalize && setAromatic ? Clazz.newIntArray (this.target.ac, 0) : null); +var justCheckBonding = (setAromatic && Clazz.instanceOf(this.target.nodes[0],"JS.SmilesAtom")); +for (var i = 3; i <= max; i++) { +if (i > this.target.ac) break; +var smarts = "*1" + s.substring(0, i - 2) + "*1"; +var search = JS.SmilesParser.newSearch(smarts, true, true); +var vR = this.subsearch(search, 2); +if (vRings != null && i <= 5) { +var v = new JU.Lst(); +for (var j = vR.size(); --j >= 0; ) v.addLast(vR.get(j)); + +vRings[i - 3] = v; +}if (vR.size() == 0) continue; +if (setAromatic && i >= 4 && i <= aromaticMax) { +JS.SmilesAromatic.setAromatic(i, this.target.nodes, this.target.bsSelected, vR, this.target.bsAromatic, strictness, isOpenNotStrict, justCheckBonding, checkExplicit, this.v, lstAromatic, lstSP2, eCounts, doTestAromatic); +}if (needRingData) { +this.target.ringData[i] = new JU.BS(); +for (var k = vR.size(); --k >= 0; ) { +var r = vR.get(k); +this.target.ringData[i].or(r); +for (var j = r.nextSetBit(0); j >= 0; j = r.nextSetBit(j + 1)) this.target.ringCounts[j]++; + +} +}} +if (this.needAromatic) { +if (doFinalize) JS.SmilesAromatic.finalizeAromatic(this.target.nodes, this.target.bsAromatic, lstAromatic, lstSP2, eCounts, isOpenNotStrict, isStrict); +this.target.finalizeAromatic(lstAromatic); +}if (needRingData) { +this.target.finalizeRingData(); +}}, "~A,~B,~B"); +Clazz.defineMethod(c$, "subsearch", +function(search, submode){ +search.mapUnique = this.mapUnique; +search.target = this.target; +search.htNested = this.htNested; +search.haveSmilesTarget = this.haveSmilesTarget; +search.bsCheck = this.bsCheck; +search.isSmarts = true; +switch (submode) { +case 1: +search.exitFirstMatch = false; +break; +case 2: +search.isRingCheck = true; +search.isSilent = true; +search.asVector = true; +break; +case 3: +search.ignoreAtomClass = this.ignoreAtomClass; +search.aromaticDouble = this.aromaticDouble; +search.haveSelected = this.haveSelected; +search.exitFirstMatch = this.exitFirstMatch; +search.getMaps = this.getMaps; +search.retBoolean = this.retBoolean; +search.asVector = this.asVector; +search.vReturn = this.vReturn; +search.bsReturn = this.bsReturn; +search.haveBondStereochemistry = this.haveBondStereochemistry; +break; +} +return search.search2(submode == 1); +}, "JS.SmilesSearch,~N"); +Clazz.defineMethod(c$, "search", +function(){ +this.bsReturn.clearAll(); +return this.search2(false); +}); +Clazz.defineMethod(c$, "search2", +function(firstAtomOnly){ +this.setFlags(this.flags); +if (!this.isRingCheck && JU.Logger.debuggingHigh && !this.isSilent) JU.Logger.debug("SmilesSearch processing " + this.pattern); +if (this.vReturn == null && (this.asVector || this.getMaps)) this.vReturn = new JU.Lst(); +if (this.subSearches != null) { +for (var i = 0; i < this.subSearches.length; i++) { +if (this.subSearches[i] == null) continue; +this.subsearch(this.subSearches[i], 3); +if (this.exitFirstMatch) { +if (this.vReturn == null ? this.bsReturn.nextSetBit(0) >= 0 : this.vReturn.size() > 0) break; +}} +} else if (this.ac > 0 && this.ac <= this.target.selectedAtomCount) { +if (this.nestedBond == null) { +this.clearBsFound(-1); +} else { +this.bsReturn.clearAll(); +}this.nextPatternAtom(-1, -1, firstAtomOnly, -1); +}return (this.asVector || this.getMaps ? this.vReturn : !this.retBoolean ? this.bsReturn : Boolean.$valueOf(!this.bsReturn.isEmpty())); +}, "~B"); +Clazz.defineMethod(c$, "nextPatternAtom", +function(atomNum, iAtom, firstAtomOnly, c){ +var jmolAtom; +var jmolBonds; +if (++atomNum < this.ac) { +var newPatternAtom = this.patternAtoms[atomNum]; +var newPatternBond = (iAtom >= 0 ? newPatternAtom.getBondTo(null) : atomNum == 0 ? this.nestedBond : null); +if (newPatternBond == null) { +var bs = JU.BSUtil.copy(this.bsFound); +var bs0 = JU.BSUtil.copy(this.bsFound); +if (newPatternAtom.notBondedIndex >= 0) { +var pa = this.patternAtoms[newPatternAtom.notBondedIndex]; +var a = pa.getMatchingAtom(); +if (pa.isBioAtom) { +var ii = a.getOffsetResidueAtom("\0", 1); +if (ii >= 0) bs.set(ii); +ii = a.getOffsetResidueAtom("\0", -1); +if (ii >= 0) bs.set(ii); +} else if (pa === this.polyAtom) { +bs.set(pa.getMatchingAtomIndex()); +} else { +jmolBonds = a.getEdges(); +for (var k = 0; k < jmolBonds.length; k++) bs.set(jmolBonds[k].getOtherNode(a).getIndex()); + +}}var skipGroup = ((newPatternAtom.isBioAtomWild)); +var j1 = this.target.bsSelected.nextSetBit(0); +j1 = (skipGroup && j1 >= 0 ? this.target.nodes[j1].getOffsetResidueAtom("\0", j1) : j1); +var oldJmolComponent; +var oldPatternComponent = (atomNum > 0 ? this.patternAtoms[atomNum - 1] : newPatternAtom).component; +var thisPatternComponent = newPatternAtom.component; +var checkComponents = this.haveComponents && thisPatternComponent != -2147483648; +for (var j = j1; j >= 0; j = this.target.bsSelected.nextSetBit(j + 1)) { +if (!bs.get(j) && !this.bsFound.get(j)) { +jmolAtom = this.target.nodes[j]; +if (checkComponents && !this.isRingCheck) { +c = (this.groupByModel ? jmolAtom.getModelIndex() : jmolAtom.getMoleculeNumber(false)); +oldJmolComponent = (atomNum > 0 ? this.patternAtoms[atomNum - 1].matchingComponent : c); +if ((oldPatternComponent == thisPatternComponent) != (oldJmolComponent == c)) continue; +}if (!this.nextTargetAtom(newPatternAtom, jmolAtom, atomNum, j, firstAtomOnly, c)) return false; +}if (skipGroup) { +j1 = this.target.nodes[j].getOffsetResidueAtom(newPatternAtom.bioAtomName, 1); +if (j1 >= 0) j = j1 - 1; +}} +this.bsFound = bs0; +return true; +}jmolAtom = newPatternBond.atom1.getMatchingAtom(); +switch (newPatternBond.order) { +case 96: +var nextGroupAtom = jmolAtom.getOffsetResidueAtom(newPatternAtom.bioAtomName, 1); +if (nextGroupAtom >= 0) { +var bs = JU.BSUtil.copy(this.bsFound); +jmolAtom.getGroupBits(this.bsFound); +if (this.doCheckAtom(nextGroupAtom) && !this.nextTargetAtom(newPatternAtom, this.target.nodes[nextGroupAtom], atomNum, nextGroupAtom, firstAtomOnly, c)) return false; +this.bsFound = bs; +}return true; +case 112: +var vLinks = new JU.Lst(); +jmolAtom.getCrossLinkVector(vLinks, true, true); +var bs = JU.BSUtil.copy(this.bsFound); +jmolAtom.getGroupBits(this.bsFound); +for (var j = 2; j < vLinks.size(); j += 3) { +var ia = vLinks.get(j).intValue(); +if (this.doCheckAtom(ia) && !this.nextTargetAtom(newPatternAtom, this.target.nodes[ia], atomNum, ia, firstAtomOnly, c)) return false; +} +this.bsFound = bs; +return true; +} +jmolBonds = jmolAtom.getEdges(); +if (jmolBonds != null) for (var j = 0; j < jmolBonds.length; j++) { +var ia = jmolAtom.getBondedAtomIndex(j); +if (this.doCheckAtom(ia) && !this.nextTargetAtom(newPatternAtom, this.target.nodes[ia], atomNum, ia, firstAtomOnly, c)) return false; +} +this.clearBsFound(iAtom); +return true; +}if (!this.ignoreStereochemistry && !this.isRingCheck) { +if (JU.Logger.debuggingHigh) { +for (var i = 0; i < atomNum; i++) JU.Logger.debug("pattern atoms " + this.patternAtoms[i] + " " + this.patternAtoms[i].matchingComponent); + +JU.Logger.debug("--ss-- " + this.bsFound.cardinality()); +}if (!this.checkStereochemistry()) return true; +}var bs = new JU.BS(); +var nMatch = 0; +for (var j = 0; j < this.ac; j++) { +var i = this.patternAtoms[j].getMatchingAtomIndex(); +if (!firstAtomOnly && this.top.haveSelected && !this.patternAtoms[j].selected) continue; +nMatch++; +bs.set(i); +if (this.patternAtoms[j].isBioAtomWild) this.target.nodes[i].getGroupBits(bs); +if (firstAtomOnly) break; +if (!this.isSmarts) if (!this.setAtropicity && this.patternAtoms[j].explicitHydrogenCount > 0) { +var atom = this.target.nodes[i]; +for (var k = 0, n = atom.getEdges().length; k < n; k++) { +var ia = atom.getBondedAtomIndex(k); +if (this.target.nodes[ia].getElementNumber() == 1) bs.set(ia); +} +}} +if (!this.isSmarts && bs.cardinality() != this.target.selectedAtomCount) return true; +if (this.bsCheck != null) { +if (firstAtomOnly) { +this.bsCheck.clearAll(); +for (var j = 0; j < this.ac; j++) { +this.bsCheck.set(this.patternAtoms[j].getMatchingAtomIndex()); +} +if (this.bsCheck.cardinality() != this.ac) return true; +} else { +if (bs.cardinality() != this.ac) return true; +}}this.bsReturn.or(bs); +if (this.getMaps) { +if (this.mapUnique) { +if (this.uniqueList == null) this.uniqueList = new JU.Lst(); +for (var j = this.uniqueList.size(); --j >= 0; ) if (this.uniqueList.get(j).equals(bs)) return true; + +this.uniqueList.addLast(bs); +}var map = Clazz.newIntArray (nMatch, 0); +for (var j = 0, nn = 0; j < this.ac; j++) { +if (!firstAtomOnly && this.top.haveSelected && !this.patternAtoms[j].selected) continue; +map[nn++] = this.patternAtoms[j].getMatchingAtomIndex(); +} +this.vReturn.addLast(map); +return !this.exitFirstMatch; +}if (this.asVector) { +var isOK = true; +for (var j = this.vReturn.size(); --j >= 0 && isOK; ) isOK = !((this.vReturn.get(j)).equals(bs)); + +if (!isOK) return true; +this.vReturn.addLast(bs); +}if (this.isRingCheck) { +var bsRing = new JU.BS(); +for (var k = atomNum * 3 + 2; --k > atomNum; ) bsRing.set(this.patternAtoms[(k <= atomNum * 2 ? atomNum * 2 - k + 1 : k - 1) % atomNum].getMatchingAtomIndex()); + +this.target.ringSets.addLast(bsRing); +return true; +}if (this.exitFirstMatch) return false; +return (bs.cardinality() != this.target.selectedAtomCount); +}, "~N,~N,~B,~N"); +Clazz.defineMethod(c$, "doCheckAtom", +function(j){ +return this.target.bsSelected.get(j) && !this.bsFound.get(j); +}, "~N"); +Clazz.defineMethod(c$, "nextTargetAtom", +function(patternAtom, jmolAtom, atomNum, iAtom, firstAtomOnly, c){ +var jmolBonds; +if (!this.isRingCheck && !this.isTopology) { +if (patternAtom.subAtoms == null) { +if (!this.checkPrimitiveAtom(patternAtom, iAtom)) return true; +} else if (patternAtom.isAND) { +for (var i = 0; i < patternAtom.nSubAtoms; i++) if (!this.checkPrimitiveAtom(patternAtom.subAtoms[i], iAtom)) return true; + +} else { +for (var i = 0; i < patternAtom.nSubAtoms; i++) if (!this.nextTargetAtom(patternAtom.subAtoms[i], jmolAtom, atomNum, iAtom, firstAtomOnly, c)) return false; + +return true; +}}jmolBonds = jmolAtom.getEdges(); +for (var i = patternAtom.getBondCount(); --i >= 0; ) { +var patternBond = patternAtom.getBond(i); +if (patternBond.getAtomIndex2() != patternAtom.index) continue; +var atom1 = patternBond.atom1; +var matchingAtom = atom1.getMatchingAtomIndex(); +switch (patternBond.order) { +case 96: +case 112: +if (!this.checkMatchBond(patternAtom, atom1, patternBond, iAtom, matchingAtom, null)) return true; +break; +default: +var k = 0; +var jmolBond = null; +for (; k < jmolBonds.length; k++) if ((jmolBond = jmolBonds[k]).isCovalent() && (jmolBond.getAtomIndex1() == matchingAtom || jmolBond.getAtomIndex2() == matchingAtom)) break; + +if (k == jmolBonds.length) return true; +if (!this.checkMatchBond(patternAtom, atom1, patternBond, iAtom, matchingAtom, jmolBond)) return true; +} +} +patternAtom = this.patternAtoms[patternAtom.index]; +patternAtom.setMatchingAtom(this.target.nodes[iAtom], iAtom); +patternAtom.matchingComponent = c; +this.bsFound.set(iAtom); +if (!this.nextPatternAtom(atomNum, iAtom, firstAtomOnly, c)) return false; +if (iAtom >= 0) this.clearBsFound(iAtom); +return true; +}, "JS.SmilesAtom,JU.Node,~N,~N,~B,~N"); +Clazz.defineMethod(c$, "checkPrimitiveAtom", +function(patternAtom, iTarget){ +if (patternAtom.nSubAtoms > 0) { +for (var i = 0; i < patternAtom.nSubAtoms; i++) if (this.checkPrimitiveAtom(patternAtom.subAtoms[i], iTarget)) return true; + +return false; +}var targetAtom = this.target.nodes[iTarget]; +var foundAtom = patternAtom.not; +while (true) { +if (patternAtom.iNested > 0) { +var o = this.getNested(patternAtom.iNested); +if (Clazz.instanceOf(o,"JS.SmilesSearch")) { +var search = o; +if (patternAtom.isBioAtom) search.nestedBond = patternAtom.getBondTo(null); +o = this.subsearch(search, 1); +if (o == null) o = new JU.BS(); +if (!patternAtom.isBioAtom) this.setNested(patternAtom.iNested, o); +}foundAtom = (patternAtom.not != ((o).get(iTarget))); +break; +}var na = targetAtom.getElementNumber(); +var n = patternAtom.elementNumber; +if (na >= 0 && n >= 0 && n != na && !this.ignoreElement) break; +if (patternAtom.isBioResidue) { +var a = targetAtom; +if (patternAtom.bioAtomName != null && (patternAtom.isLeadAtom() ? !a.isLeadAtom() : !patternAtom.bioAtomName.equals(a.getAtomName().toUpperCase()))) break; +if (patternAtom.residueName != null && !patternAtom.residueName.equals(a.getGroup3(false).toUpperCase())) break; +if (patternAtom.residueNumber != -2147483648 && patternAtom.residueNumber != a.getResno()) break; +if (patternAtom.insCode != '\0' && patternAtom.insCode != a.getInsertionCode()) break; +if (patternAtom.residueChar != null || patternAtom.elementNumber == -2) { +var atype = a.getBioSmilesType(); +var ptype = patternAtom.getBioSmilesType(); +var ok = true; +var isNucleic = false; +switch ((ptype).charCodeAt(0)) { +case 0: +case 42: +ok = true; +break; +case 110: +ok = (atype == 'r' || atype == 'c'); +isNucleic = true; +break; +case 114: +case 99: +isNucleic = true; +default: +ok = (atype == ptype); +break; +} +if (!ok) break; +var s = a.getGroup1('\0').toUpperCase(); +var resChar = (patternAtom.residueChar == null ? '*' : patternAtom.residueChar.charAt(0)); +var isOK = (resChar == s.charAt(0)); +switch ((resChar).charCodeAt(0)) { +case 42: +isOK = true; +break; +case 78: +isOK = isNucleic ? (atype == 'r' || atype == 'c') : isOK; +break; +case 82: +isOK = isNucleic ? a.isPurine() : isOK; +break; +case 89: +isOK = isNucleic ? a.isPyrimidine() : isOK; +break; +} +if (!isOK) break; +}if (patternAtom.isBioAtom) { +if (patternAtom.notCrossLinked && a.getCrossLinkVector(null, true, true)) break; +}} else { +if (patternAtom.atomNumber != -2147483648 && patternAtom.atomNumber != targetAtom.getAtomNumber()) break; +if (patternAtom.jmolIndex >= 0 && targetAtom.getIndex() != patternAtom.jmolIndex) break; +if (patternAtom.atomType != null && !patternAtom.atomType.equals(targetAtom.getAtomType())) break; +if ((n = patternAtom.getAtomicMass()) != -2147483648 && (n >= 0 && n != (na = targetAtom.getIsotopeNumber()) || n < 0 && na != 0 && -n != na)) break; +if (!this.noAromatic && !patternAtom.aromaticAmbiguous && patternAtom.isAromatic != this.target.bsAromatic.get(iTarget)) break; +if ((n = patternAtom.getCharge()) != -2147483648 && n != targetAtom.getFormalCharge()) break; +n = patternAtom.getCovalentHydrogenCount() + patternAtom.explicitHydrogenCount; +if (n >= 0 && n != targetAtom.getTotalHydrogenCount()) break; +if ((n = patternAtom.implicitHydrogenCount) != -2147483648) { +na = targetAtom.getImplicitHydrogenCount(); +if (n == -1 ? na == 0 : n != na) break; +}if (patternAtom.degree > 0 && patternAtom.degree != targetAtom.getCovalentBondCount()) break; +if (patternAtom.nonhydrogenDegree > 0 && patternAtom.nonhydrogenDegree != targetAtom.getCovalentBondCount() - targetAtom.getCovalentHydrogenCount()) break; +if (this.isSmarts && patternAtom.valence > 0 && patternAtom.valence != targetAtom.getTotalValence()) break; +if (patternAtom.connectivity > 0 && patternAtom.connectivity != targetAtom.getCovalentBondCountPlusMissingH()) break; +if (patternAtom.atomNumber != -2147483648 && patternAtom.atomNumber != targetAtom.getAtomNumber()) break; +if (patternAtom.jmolIndex >= 0 && targetAtom.getIndex() != patternAtom.jmolIndex) break; +if (patternAtom.atomType != null && !patternAtom.atomType.equals(targetAtom.getAtomType())) break; +if (!this.ignoreAtomClass || this.isSmarts) { +if (!Float.isNaN(patternAtom.atomClass) && patternAtom.atomClass != targetAtom.getFloatProperty("property_atomclass")) break; +}if (this.target.ringData != null) { +if (patternAtom.ringSize >= -1) { +if (patternAtom.ringSize <= 0) { +if ((this.target.ringCounts[iTarget] == 0) != (patternAtom.ringSize == 0)) break; +} else { +var rd = this.target.ringData[patternAtom.ringSize == 500 ? 5 : patternAtom.ringSize == 600 ? 6 : patternAtom.ringSize]; +if (rd == null || !rd.get(iTarget)) break; +if (!this.noAromatic) if (patternAtom.ringSize == 500) { +if (!this.target.bsAromatic5.get(iTarget)) break; +} else if (patternAtom.ringSize == 600) { +if (!this.target.bsAromatic6.get(iTarget)) break; +}}}if (patternAtom.ringMembership >= -1) { +if (patternAtom.ringMembership == -1 ? this.target.ringCounts[iTarget] == 0 : this.target.ringCounts[iTarget] != patternAtom.ringMembership) break; +}if (patternAtom.ringConnectivity >= 0) { +n = this.target.ringConnections[iTarget]; +if (patternAtom.ringConnectivity == -1 && n == 0 || patternAtom.ringConnectivity != -1 && n != patternAtom.ringConnectivity) break; +}}}foundAtom = !foundAtom; +break; +} +return foundAtom; +}, "JS.SmilesAtom,~N"); +Clazz.defineMethod(c$, "checkMatchBond", +function(patternAtom, atom1, patternBond, iAtom, matchingAtom, bond){ +if (patternBond.bondsOr != null) { +for (var ii = 0; ii < patternBond.nBondsOr; ii++) if (this.checkMatchBond(patternAtom, atom1, patternBond.bondsOr[ii], iAtom, matchingAtom, bond)) return true; + +return false; +}if (!this.isRingCheck && !this.isTopology) if (patternBond.nPrimitives == 0) { +if (!this.checkPrimitiveBond(patternBond, iAtom, matchingAtom, bond)) return false; +} else { +for (var i = 0; i < patternBond.nPrimitives; i++) { +var prim = patternBond.setPrimitive(i); +if (!this.checkPrimitiveBond(prim, iAtom, matchingAtom, bond)) return false; +} +}patternBond.matchingBond = bond; +return true; +}, "JS.SmilesAtom,JS.SmilesAtom,JS.SmilesBond,~N,~N,JU.Edge"); +Clazz.defineMethod(c$, "checkPrimitiveBond", +function(patternBond, iAtom1, iAtom2, bond){ +var bondFound = false; +switch (patternBond.order) { +case 96: +return (patternBond.isNot != (this.target.nodes[iAtom2].getOffsetResidueAtom("\0", 1) == this.target.nodes[iAtom1].getOffsetResidueAtom("\0", 0))); +case 112: +return (patternBond.isNot != this.target.nodes[iAtom1].isCrossLinked(this.target.nodes[iAtom2])); +} +var isAromatic1 = (!this.noAromatic && this.target.bsAromatic.get(iAtom1)); +var isAromatic2 = (!this.noAromatic && this.target.bsAromatic.get(iAtom2)); +var order = bond.getCovalentOrder(); +var patternOrder = patternBond.order; +if (isAromatic1 && isAromatic2) { +switch (patternOrder) { +case 17: +case 65: +bondFound = JS.SmilesSearch.isRingBond(this.target.ringSets, null, iAtom1, iAtom2); +break; +case 1: +bondFound = !this.isSmarts || !JS.SmilesSearch.isRingBond(this.target.ringSets, this.target.getBSAromaticRings(), iAtom1, iAtom2); +break; +case 2: +bondFound = this.isNormalized || order == 81 || this.aromaticDouble && (order == 2 || order == 514); +break; +case 65537: +case 65538: +bondFound = !patternBond.isNot; +break; +case 81: +case -1: +bondFound = true; +break; +} +} else { +switch (patternOrder) { +case 17: +if (!this.noAromatic) break; +case 81: +case -1: +bondFound = true; +break; +case 1: +case 1025: +case 1041: +switch (order) { +case 1: +case 1025: +case 1041: +bondFound = true; +break; +} +break; +case 65537: +case 65538: +switch (order) { +case 1: +case 65537: +case 65538: +bondFound = !patternBond.isNot; +break; +} +break; +case 2: +case 3: +case 4: +bondFound = (order == patternOrder); +break; +case 65: +bondFound = JS.SmilesSearch.isRingBond(this.target.ringSets, null, iAtom1, iAtom2); +break; +} +}return bondFound != patternBond.isNot; +}, "JS.SmilesBond,~N,~N,JU.Edge"); +Clazz.defineMethod(c$, "checkStereochemistry", +function(){ +for (var i = 0; i < this.measures.size(); i++) if (!this.measures.get(i).check()) return false; + +if (this.stereo != null && !this.stereo.checkStereoChemistry(this, this.v)) return false; +if (!this.haveBondStereochemistry) return true; +var lstAtrop = null; +var b = null; +for (var k = 0; k < this.ac; k++) { +var sAtom1 = this.patternAtoms[k]; +var sAtom2 = null; +var sAtomDirected1 = null; +var sAtomDirected2 = null; +var dir1 = 0; +var dir2 = 0; +var bondType = 0; +var nBonds = sAtom1.getBondCount(); +var isAtropisomer = false; +var indexOrder = true; +for (var j = 0; j < nBonds; j++) { +b = sAtom1.getBond(j); +var isAtom2 = (b.atom2 === sAtom1); +indexOrder = (b.atom1.index < b.atom2.index); +var type = b.getBondType(); +switch (type) { +case 65537: +case 65538: +if (!indexOrder) continue; +case 2: +if (isAtom2) continue; +sAtom2 = b.atom2; +bondType = type; +isAtropisomer = (type != 2); +if (isAtropisomer) dir1 = (b.isNot ? -1 : 1); +break; +case 1025: +case 1041: +sAtomDirected1 = (isAtom2 ? b.atom1 : b.atom2); +dir1 = (isAtom2 != (type == 1025) ? 1 : -1); +break; +} +} +if (isAtropisomer) { +if (this.setAtropicity) { +if (lstAtrop == null) lstAtrop = new JU.Lst(); +lstAtrop.addLast(b); +continue; +}var b1 = sAtom1.getBond(b.atropType[0]); +if (b1 == null) return false; +sAtomDirected1 = b1.getOtherAtom(sAtom1); +b1 = sAtom2.getBond(b.atropType[1]); +if (b1 == null) return false; +sAtomDirected2 = b1.getOtherAtom(sAtom2); +if (JU.Logger.debugging) JU.Logger.info("atropisomer check for atoms " + sAtomDirected1 + sAtom1 + " " + sAtom2 + sAtomDirected2); +} else { +if (sAtom2 == null || dir1 == 0) continue; +var a10 = sAtom1; +var nCumulene = 0; +while (sAtom2.getBondCount() == 2 && sAtom2.getValence() == 4) { +nCumulene++; +var e2 = sAtom2.getEdges(); +var e = e2[e2[0].getOtherNode(sAtom2) === a10 ? 1 : 0]; +a10 = sAtom2; +sAtom2 = e.getOtherNode(sAtom2); +} +if (nCumulene % 2 == 1) continue; +nBonds = sAtom2.getBondCount(); +for (var j = 0; j < nBonds && dir2 == 0; j++) { +b = sAtom2.getBond(j); +var type = b.getBondType(); +switch (type) { +case 1025: +case 1041: +var isAtom2 = (b.atom2 === sAtom2); +sAtomDirected2 = (isAtom2 ? b.atom1 : b.atom2); +dir2 = (isAtom2 != (type == 1025) ? 1 : -1); +break; +} +} +if (dir2 == 0) continue; +}var dbAtom1 = sAtom1.getMatchingAtom(); +var dbAtom2 = sAtom2.getMatchingAtom(); +var dbAtom1a = sAtomDirected1.getMatchingAtom(); +var dbAtom2a = sAtomDirected2.getMatchingAtom(); +if (dbAtom1a == null || dbAtom2a == null) return false; +if (this.haveSmilesTarget) JS.SmilesSearch.setTopoCoordinates(dbAtom1, dbAtom2, dbAtom1a, dbAtom2a, bondType); +var d = JS.SmilesMeasure.setTorsionData(dbAtom1a, dbAtom1, dbAtom2, dbAtom2a, this.v, isAtropisomer); +if (isAtropisomer) { +d *= dir1 * (bondType == 65537 ? 1 : -1) * (indexOrder ? 1 : -1) * 1 * -1; +if (JU.Logger.debugging) JU.Logger.info("atrop dihedral " + d + " " + sAtom1 + " " + sAtom2 + " " + b); +if (d < 1) return false; +} else { +if (this.v.vTemp1.dot(this.v.vTemp2) * dir1 * dir2 < 0) return false; +}} +if (this.setAtropicity) { +this.atropKeys = ""; +for (var i = 0; i < lstAtrop.size(); i++) this.atropKeys += "," + this.getAtropIndex(lstAtrop.get(i)); + +}return true; +}); +Clazz.defineMethod(c$, "getAtropIndex", +function(b){ +var nodes = new Array(4); +var s = ""; +nodes[1] = b.atom1.getMatchingAtom(); +nodes[2] = b.atom2.getMatchingAtom(); +var b1 = b.atom1.bonds; +var a; +for (var i = b.atom1.getBondCount(); --i >= 0; ) { +if ((a = b1[i].getOtherNode(b.atom1)) !== b.atom2) { +s += (i + 1); +nodes[0] = a.getMatchingAtom(); +break; +}} +b1 = b.atom2.bonds; +for (var i = 0; i <= b.atom2.getBondCount(); i++) { +if ((a = b1[i].getOtherNode(b.atom2)) !== b.atom1) { +s += (i + 1); +nodes[3] = a.getMatchingAtom(); +break; +}} +if (s.equals("22")) s = ""; +s = (JS.SmilesStereo.getAtropicStereoFlag(nodes) == 1 ? "" : "^") + s; +return (s + " ").substring(0, 3); +}, "JS.SmilesBond"); +c$.setTopoCoordinates = Clazz.defineMethod(c$, "setTopoCoordinates", +function(dbAtom1, dbAtom2, dbAtom1a, dbAtom2a, bondType){ +dbAtom1.set(-1, 0, 0); +dbAtom2.set(1, 0, 0); +if (bondType != 2) { +var bond = dbAtom1.getBondTo(dbAtom2); +var ok1 = dbAtom1.getBondedAtomIndex(bond.atropType[0]) == dbAtom1a.index; +var ok2 = dbAtom2.getBondedAtomIndex(bond.atropType[1]) == dbAtom2a.index; +var dir = (bond.order == 65537 ? 1 : -1) * (ok1 == ok2 ? 1 : -1); +dbAtom1a.set(-1, 1, 0); +dbAtom2a.set(1, 1, dir / 2.0 * 1 * -1); +return; +}var nBonds = 0; +var dir1 = 0; +var bonds = dbAtom1.getEdges(); +for (var k = bonds.length; --k >= 0; ) { +var bond = bonds[k]; +if (bond.order == 2) continue; +var atom = bond.getOtherNode(dbAtom1); +(atom).set(-1, (nBonds++ == 0) ? -1 : 1, 0); +var mode = (bond.getAtomIndex2() == dbAtom1.getIndex() ? nBonds : -nBonds); +switch (bond.order) { +case 1025: +dir1 = mode; +break; +case 1041: +dir1 = -mode; +} +} +var dir2 = 0; +nBonds = 0; +var atoms = new Array(2); +bonds = dbAtom2.getEdges(); +for (var k = bonds.length; --k >= 0; ) { +var bond = bonds[k]; +if (bond.order == 2) continue; +var atom = bond.getOtherNode(dbAtom2); +atoms[nBonds] = atom; +(atom).set(1, (nBonds++ == 0) ? 1 : -1, 0); +var mode = (bond.getAtomIndex2() == dbAtom2.getIndex() ? nBonds : -nBonds); +switch (bond.order) { +case 1025: +dir2 = mode; +break; +case 1041: +dir2 = -mode; +} +} +if ((dir1 * dir2 > 0) == (Math.abs(dir1) % 2 == Math.abs(dir2) % 2)) { +var y = (atoms[0]).y; +(atoms[0]).y = (atoms[1]).y; +(atoms[1]).y = y; +}}, "JS.SmilesAtom,JS.SmilesAtom,JS.SmilesAtom,JS.SmilesAtom,~N"); +Clazz.defineMethod(c$, "createTopoMap", +function(bsAro){ +var isForMF = (bsAro == null); +var nAtomsMissing = (this.autoAddImplicitH ? this.getMissingHydrogenCount() : 0); +var totalAtoms = this.ac + nAtomsMissing; +var atoms = new Array(totalAtoms); +this.target.nodes = atoms; +for (var i = 0, ptAtom = 0; i < this.ac; i++, ptAtom++) { +var sAtom = this.patternAtoms[i]; +var n = sAtom.explicitHydrogenCount; +if (n < 0 || !this.autoAddImplicitH) n = 0; +var atom = atoms[ptAtom] = new JS.SmilesAtom().setTopoAtom(sAtom.component, ptAtom, sAtom.symbol, sAtom.getCharge(), i); +atom.implicitHydrogenCount = n; +if (isForMF) continue; +atom.mapIndex = i; +atom.stereo = sAtom.stereo; +atom.setAtomicMass(sAtom.getAtomicMass()); +atom.bioAtomName = sAtom.bioAtomName; +atom.residueName = sAtom.residueName; +atom.residueChar = sAtom.residueChar; +atom.residueNumber = sAtom.residueNumber; +atom.atomNumber = sAtom.residueNumber; +atom.insCode = sAtom.insCode; +atom.hasDoubleBond = sAtom.hasDoubleBond; +atom.isAromatic = sAtom.isAromatic; +atom.atomClass = sAtom.atomClass; +atom.explicitHydrogenCount = 0; +atom.isBioAtom = sAtom.isBioAtom; +atom.bioType = sAtom.bioType; +atom.$isLeadAtom = sAtom.$isLeadAtom; +if (!isForMF && sAtom.isAromatic) bsAro.set(ptAtom); +sAtom.setMatchingAtom(null, ptAtom); +var bonds = new Array(sAtom.getBondCount() + n); +atom.setBonds(bonds); +while (--n >= 0) { +var atomH = atoms[++ptAtom] = new JS.SmilesAtom().setTopoAtom(atom.component, ptAtom, "H", 0, -1); +atomH.mapIndex = -i - 1; +atomH.setBonds( new Array(1)); +var b = new JS.SmilesBond(atom, atomH, 1, false); +if (JU.Logger.debugging) JU.Logger.info("" + b); +} +} +if (isForMF) return; +for (var i = 0; i < this.ac; i++) { +var sAtom = this.patternAtoms[i]; +var i1 = sAtom.getMatchingAtomIndex(); +var atom1 = atoms[i1]; +var n = sAtom.getBondCount(); +for (var j = 0; j < n; j++) { +var sBond = sAtom.getBond(j); +var firstAtom = (sBond.atom1 === sAtom); +if (firstAtom) { +var order = 1; +switch (sBond.order) { +case 1: +case 2: +case 3: +case 4: +case 1025: +case 1041: +case 65537: +case 65538: +case 112: +case 96: +order = sBond.order; +break; +case 17: +order = 514; +break; +} +var atom2 = atoms[sBond.atom2.getMatchingAtomIndex()]; +var b = new JS.SmilesBond(atom1, atom2, order, false); +b.isConnection = sBond.isConnection; +b.atropType = sBond.atropType; +b.isNot = sBond.isNot; +atom2.bondCount--; +if (JU.Logger.debugging) JU.Logger.info("" + b); +} else { +var atom2 = atoms[sBond.atom1.getMatchingAtomIndex()]; +var b = atom2.getBondTo(atom1); +atom1.addBond(b); +}} +} +for (var i = 0; i < totalAtoms; i++) { +var a = atoms[i]; +var bonds = a.bonds; +if (bonds.length < 2 || bonds[0].isFromPreviousTo(a)) continue; +for (var k = bonds.length; --k >= 1; ) if (bonds[k].isFromPreviousTo(a)) { +var b = bonds[k]; +bonds[k] = bonds[0]; +bonds[0] = b; +break; +} +} +if (!this.ignoreStereochemistry) for (var i = this.ac; --i >= 0; ) { +var sAtom = this.patternAtoms[i]; +if (sAtom.stereo != null) sAtom.stereo.fixStereo(sAtom); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "normalizeAromaticity", +function(bsAromatic){ +var atoms = this.patternAtoms; +var ss = new JS.SmilesSearch(); +ss.noAromatic = this.noAromatic; +ss.setFlags(this.flags); +ss.target.nodes = atoms; +ss.target.ac = atoms.length; +ss.target.bsSelected = JU.BSUtil.newBitSet2(0, atoms.length); +var vRings = JU.AU.createArrayOfArrayList(4); +ss.setRingData(null, vRings, true); +bsAromatic.or(ss.target.bsAromatic); +if (!bsAromatic.isEmpty()) { +var lst = vRings[3]; +if (lst != null) for (var i = lst.size(); --i >= 0; ) { +var bs = lst.get(i); +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +var a = atoms[j]; +if (a.isAromatic || a.elementNumber == -2 || a.elementNumber == 0) continue; +a.setSymbol(a.symbol.toLowerCase()); +} +} +}}, "JU.BS"); +Clazz.defineMethod(c$, "getSelections", +function(){ +var ht = this.top.htNested; +if (ht == null || this.target.nodes.length == 0) return; +var htNew = new java.util.Hashtable(); +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getValue().toString(); +if (key.startsWith("select")) { +var bs = (htNew.containsKey(key) ? htNew.get(key) : this.target.nodes[0].findAtomsLike(key.substring(6))); +if (bs == null) bs = new JU.BS(); +htNew.put(key, bs); +entry.setValue(bs); +}} +}); +Clazz.defineMethod(c$, "findImplicitHydrogen", +function(atom){ +var edges = atom.getEdges(); +for (var i = edges.length; --i >= 0; ) { +var k = atom.getBondedAtomIndex(i); +if (this.target.nodes[k].getElementNumber() == 1 && !this.bsFound.get(k)) return this.target.nodes[k]; +} +return null; +}, "JU.Node"); +Clazz.defineMethod(c$, "toString", +function(){ +if (this.pattern0 != null) return this.pattern0; +if (this.targetSet) { +return "molecular formula: " + this.target.getMolecularFormula(true, null, false); +}var sb = new JU.SB().append(this.pattern); +sb.append("\nmolecular formula: " + this.getMolecularFormula(true, null, false)); +return sb.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bsSelected = null; +this.selectedAtomCount = 0; +this.ringSets = null; +this.ringCount = 0; +this.ringData = null; +this.ringDataMax = 0; +this.ringCounts = null; +this.ringConnections = null; +this.bsAromatic = null; +this.bsAromatic5 = null; +this.bsAromatic6 = null; +this.bsAromaticRings = null; +this.$hasRingData = false; +this.flags = -1; +Clazz.instantialize(this, arguments);}, JS.SmilesSearch, "SmilesTarget", JU.JmolMolecule); +Clazz.prepareFields (c$, function(){ +this.bsAromatic = new JU.BS(); +this.bsAromatic5 = new JU.BS(); +this.bsAromatic6 = new JU.BS(); +}); +Clazz.defineMethod(c$, "hasRingData", +function(flags){ +if (flags != this.flags) { +this.flags = flags; +this.$hasRingData = false; +}var ret = this.$hasRingData; +this.$hasRingData = true; +return ret; +}, "~N"); +Clazz.defineMethod(c$, "setAtoms", +function(atoms, ac, bs){ +this.$hasRingData = false; +this.nodes = atoms; +this.ac = ac; +this.selectedAtomCount = (bs == null ? ac : bs.cardinality()); +if (bs == null) { +bs = JU.BS.newN(ac); +bs.setBits(0, ac); +}this.bsSelected = bs; +}, "~A,~N,JU.BS"); +Clazz.defineMethod(c$, "checkAromaticDefined", +function(){ +JS.SmilesAromatic.checkAromaticDefined(this.nodes, this.bsSelected, this.bsAromatic); +}); +Clazz.defineMethod(c$, "getBSAromaticRings", +function(){ +if (this.bsAromaticRings == null) { +this.bsAromaticRings = new JU.BS(); +if (this.ringSets != null && this.bsAromatic != null) { +for (var i = this.ringSets.size(); --i >= 0; ) { +var bsRing = this.ringSets.get(i).clone(); +bsRing.andNot(this.bsAromatic); +if (bsRing.isEmpty()) this.bsAromaticRings.set(i); +} +}}return this.bsAromaticRings; +}); +Clazz.defineMethod(c$, "setRingData", +function(strictness, needRingData, ringDataMax){ +if (ringDataMax < 0) ringDataMax = 8; +if (strictness > 0 && ringDataMax < 6) ringDataMax = 6; +if (needRingData) { +this.ringCounts = Clazz.newIntArray (this.ac, 0); +this.ringConnections = Clazz.newIntArray (this.ac, 0); +this.ringData = new Array(ringDataMax + 1); +}this.ringSets = new JU.Lst(); +return this.ringDataMax = ringDataMax; +}, "~N,~B,~N"); +Clazz.defineMethod(c$, "finalizeAromatic", +function(lstAromatic){ +this.bsAromatic5.clearAll(); +this.bsAromatic6.clearAll(); +for (var i = lstAromatic.size(); --i >= 0; ) { +var bs = lstAromatic.get(i); +bs.and(this.bsAromatic); +switch (bs.cardinality()) { +case 5: +this.bsAromatic5.or(bs); +break; +case 6: +this.bsAromatic6.or(bs); +break; +} +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "finalizeRingData", +function(){ +for (var i = this.bsSelected.nextSetBit(0); i >= 0; i = this.bsSelected.nextSetBit(i + 1)) { +var atom = this.nodes[i]; +var nb = atom.getBondCount(); +for (var k = nb; --k >= 0; ) { +if (this.ringCounts[atom.getBondedAtomIndex(k)] > 0) this.ringConnections[i]++; +} +} +}); +Clazz.defineMethod(c$, "hasDoubleBonds", +function(){ +for (var i = 0; i < this.nodes.length; i++) if (this.bsSelected == null || this.bsSelected.get(i)) { +var n = this.nodes[i]; +if (n.getElementNumber() == 1) { +continue; +}var nb = n.getBondCount(); +var edges = n.getEdges(); +for (var j = 0; j < nb; j++) { +if (edges[j].isCovalent() && edges[j].getBondType() != 1) return true; +} +} +return false; +}); +/*eoif3*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SmilesStereo.js b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesStereo.js new file mode 100755 index 000000000000..9ac140733a54 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SmilesStereo.js @@ -0,0 +1,735 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.SmilesStereo", ["java.util.Arrays", "JU.AU", "$.Measure", "$.PT", "$.V3", "JS.InvalidSmilesException", "$.PolyhedronStereoSorter", "$.SmilesAtom", "$.SmilesParser", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.chiralClass = -2147483648; +this.chiralOrder = -2147483648; +this.atomCount = 0; +this.details = null; +this.search = null; +this.targetAtoms = null; +this.v = null; +this.polyhedralOrders = null; +this.isNot = false; +this.sorter = null; +Clazz.instantialize(this, arguments);}, JS, "SmilesStereo", null); +Clazz.makeConstructor(c$, +function(chiralClass, chiralOrder, atomCount, details, directives){ +this.chiralClass = chiralClass; +this.chiralOrder = chiralOrder; +this.atomCount = atomCount; +this.details = details; +if (chiralClass == 1) this.getPolyhedralOrders(); +}, "~N,~N,~N,~S,~S"); +c$.getChiralityClass = Clazz.defineMethod(c$, "getChiralityClass", +function(xx){ +return Clazz.doubleToInt(("0;PH;AL;TP;TH;TB;OH;SP;TS;SS;".indexOf(xx) + 1) / 3); +}, "~S"); +c$.newStereo = Clazz.defineMethod(c$, "newStereo", +function(search){ +var stereo = new JS.SmilesStereo(0, 0, 0, null, null); +stereo.search = search; +return stereo; +}, "JS.SmilesSearch"); +Clazz.defineMethod(c$, "getChiralClass", +function(sAtom){ +if (this.chiralClass == 0) this.setChiralClass(sAtom); +return this.chiralClass; +}, "JS.SmilesAtom"); +Clazz.defineMethod(c$, "setChiralClass", +function(sAtom){ +var nBonds = Math.max(sAtom.explicitHydrogenCount, 0) + sAtom.getBondCount(); +if (this.chiralClass == 0) { +switch (nBonds) { +case 2: +this.chiralClass = 2; +break; +case 3: +this.chiralClass = 3; +break; +case 4: +case 5: +case 6: +this.chiralClass = nBonds; +break; +} +}return nBonds; +}, "JS.SmilesAtom"); +Clazz.defineMethod(c$, "fixStereo", +function(sAtom){ +var nBonds = this.setChiralClass(sAtom); +var nH = Math.max(sAtom.explicitHydrogenCount, 0); +if (nH <= 1) switch (this.chiralClass) { +case 2: +if (nBonds != 2) sAtom.stereo = null; +break; +case 3: +case 8: +if (nBonds != 3) sAtom.stereo = null; +break; +case 7: +case 4: +if (nBonds != 4) sAtom.stereo = null; +break; +case 9: +case 6: +case 5: +if (nBonds != (this.chiralClass == 9 ? 4 : this.chiralClass) || !this.normalizeClass(sAtom)) sAtom.stereo = null; +break; +case 1: +if (nBonds != 0 && nBonds != this.atomCount) sAtom.stereo = null; +break; +default: +sAtom.stereo = null; +} +if (sAtom.stereo == null) throw new JS.InvalidSmilesException("Incorrect number of bonds for stereochemistry descriptor"); +}, "JS.SmilesAtom"); +Clazz.defineMethod(c$, "normalizeClass", +function(atom){ +try { +var bonds = atom.bonds; +if (this.chiralOrder < 3) return true; +var pt = (this.chiralOrder - 1) * 3; +var perm; +var ilast; +switch (this.chiralClass) { +case 9: +perm = JS.SmilesStereo.PERM_SS; +ilast = 3; +break; +case 5: +perm = JS.SmilesStereo.PERM_TB; +ilast = 4; +break; +case 6: +perm = JS.SmilesStereo.PERM_OCT; +ilast = 5; +break; +default: +return true; +} +if (this.chiralOrder > perm.length) return false; +var a = perm[pt]; +var z = perm[pt + 2]; +var p = Math.abs(perm[pt + 1]); +var isAtAt = (perm[pt + 1] < 0); +var b; +if (a != 0) { +b = bonds[a]; +for (var i = a; i > 0; --i) bonds[i] = bonds[i - 1]; + +bonds[0] = b; +}if (z != ilast) { +b = bonds[z]; +for (var i = z; i < ilast; i++) bonds[i] = bonds[i + 1]; + +bonds[ilast] = b; +}switch (p) { +case 1: +break; +default: +b = bonds[p + 1]; +bonds[p + 1] = bonds[p]; +bonds[p] = b; +} +this.chiralOrder = (isAtAt ? 2 : 1); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +return true; +}, "JS.SmilesAtom"); +Clazz.defineMethod(c$, "setTopoCoordinates", +function(sAtom0, pAtom, sAtom2, cAtoms, isNot){ +var chiralOrder = (sAtom0.stereo == null ? 0 : sAtom0.stereo.chiralOrder); +var chClass = (sAtom0.stereo == null ? 1 : sAtom0.stereo.chiralClass); +sAtom0.set(0, 0, 0); +var map; +if (this.targetAtoms == null) { +map = Clazz.newIntArray(-1, [0, 1, 2, 3]); +} else { +sAtom0 = this.targetAtoms[pAtom.getMatchingAtomIndex()]; +sAtom0.set(0, 0, 0); +var a2 = (chClass == 2 ? this.targetAtoms[sAtom2.getMatchingAtomIndex()] : null); +map = this.getMappedTopoAtoms(sAtom0, a2, cAtoms, chiralOrder == 0 ? Clazz.newIntArray (cAtoms.length, 0) : null); +}var pt; +switch (chClass) { +case 1: +sAtom0.set(0, 0, 0.2); +var a = 6.283185307179586 / cAtoms.length; +for (var i = cAtoms.length; --i >= 0; ) { +cAtoms[map[i]].set((Math.cos(i * a)), Math.sin(i * a), isNot ? 1 : -1); +} +break; +case 2: +case 4: +if (chiralOrder == 2) { +pt = map[0]; +map[0] = map[1]; +map[1] = pt; +}cAtoms[map[0]].set(0, 0, 1); +cAtoms[map[1]].set(1, 0, -1); +cAtoms[map[2]].set(0, 1, -1); +cAtoms[map[3]].set(-1, -1, -1); +break; +case 7: +switch (chiralOrder) { +case 1: +cAtoms[map[0]].set(1, 0, 0); +cAtoms[map[1]].set(0, 1, 0); +cAtoms[map[2]].set(-1, 0, 0); +cAtoms[map[3]].set(0, -1, 0); +break; +case 2: +cAtoms[map[0]].set(1, 0, 0); +cAtoms[map[1]].set(-1, 0, 0); +cAtoms[map[2]].set(0, 1, 0); +cAtoms[map[3]].set(0, -1, 0); +break; +case 3: +cAtoms[map[0]].set(1, 0, 0); +cAtoms[map[1]].set(0, 1, 0); +cAtoms[map[2]].set(0, -1, 0); +cAtoms[map[3]].set(-1, 0, 0); +break; +} +break; +case 8: +switch (chiralOrder) { +case 1: +break; +case 2: +pt = map[2]; +map[2] = map[1]; +map[1] = pt; +break; +case 3: +pt = map[0]; +map[0] = map[1]; +map[1] = pt; +break; +} +cAtoms[map[0]].set(0, 0, -1); +cAtoms[map[1]].set(0, 1, 0); +cAtoms[map[2]].set(0, 0, 1); +break; +case 9: +if (chiralOrder == 2) { +pt = map[0]; +map[0] = map[3]; +map[3] = pt; +}cAtoms[map[0]].set(0, 0, 1); +cAtoms[map[1]].set(0, 1, 0); +cAtoms[map[1]].set(1, 1, 0); +cAtoms[map[2]].set(0, 0, -1); +break; +case 5: +case 6: +var n = map.length; +if (chiralOrder == 2) { +pt = map[0]; +map[0] = map[n - 1]; +map[n - 1] = pt; +}cAtoms[map[0]].set(0, 0, 1); +cAtoms[map[n - 1]].set(0, 0, -1); +cAtoms[map[1]].set(1, 0, 0); +cAtoms[map[2]].set(0, 1, 0); +cAtoms[map[3]].set(-1, 0, 0); +if (n == 6) cAtoms[map[4]].set(0, -1, 0); +break; +default: +return false; +} +return true; +}, "JS.SmilesAtom,JS.SmilesAtom,JS.SmilesAtom,~A,~B"); +Clazz.defineMethod(c$, "getMappedTopoAtoms", +function(atom, a2, cAtoms, map){ +if (map == null) map = Clazz.newIntArray (cAtoms[4] == null ? 4 : cAtoms[5] == null ? 5 : 6, 0); +for (var i = 0; i < map.length; i++) { +map[i] = (cAtoms[i] == null ? 10004 + i * 10000 : cAtoms[i].getIndex()); +} +var bonds = atom.bonds; +var b2 = (a2 == null ? null : a2.getEdges()); +for (var i = 0; i < map.length; i++) { +var c = cAtoms[i]; +if (!JS.SmilesStereo.getTopoMapPt(map, i, atom, c, bonds, 10000)) JS.SmilesStereo.getTopoMapPt(map, i, a2, c, b2, 30000); +} +java.util.Arrays.sort(map); +for (var i = 0; i < map.length; i++) { +map[i] = map[i] % 10; +} +return map; +}, "JS.SmilesAtom,JS.SmilesAtom,~A,~A"); +c$.getTopoMapPt = Clazz.defineMethod(c$, "getTopoMapPt", +function(map, i, atom, cAtom, bonds, n000){ +if (cAtom.index == -2147483648) { +map[i] = (bonds[0].isFromPreviousTo(atom) ? 100 : 0) + n000 + i; +return true; +}var n = bonds.length; +for (var k = 0; k < n; k++) { +var bAtom = bonds[k].getOtherNode(atom); +if (bAtom === cAtom) { +map[i] = (k + 1) * 10 + n000 + i; +return true; +}} +return false; +}, "~A,~N,JS.SmilesAtom,JS.SmilesAtom,~A,~N"); +Clazz.defineMethod(c$, "getJmolAtom", +function(i){ +return (i < 0 || i >= this.targetAtoms.length ? null : this.targetAtoms[i]); +}, "~N"); +Clazz.defineMethod(c$, "sortPolyBondsByStereo", +function(atom, ref, center, bonds, vTemp){ +if (bonds.length < 2 || !(Clazz.instanceOf(atom,"JU.T3"))) return; +var checkAlign = (ref != null); +ref = bonds[0].getOtherNode(atom); +var aTemp = Clazz.newArray(bonds.length, 0, null); +if (this.sorter == null) this.sorter = new JS.PolyhedronStereoSorter(); +vTemp.sub2(ref, center); +this.sorter.setRef(vTemp); +var nb = bonds.length; +var f0 = 0; +for (var i = nb; --i >= 0; ) { +var a = bonds[i].getOtherNode(atom); +var f = f0 + (a === ref ? 0 : checkAlign && this.sorter.isAligned(a, center, ref) ? -999 : JU.Measure.computeTorsion(ref, atom, center, a, true)); +aTemp[i] = Clazz.newArray(-1, [bonds[i], Float.$valueOf(f), a]); +} +java.util.Arrays.sort(aTemp, this.sorter); +if (JU.Logger.debugging) JU.Logger.info(JU.Escape.e(aTemp)); +for (var i = bonds.length; --i >= 0; ) bonds[i] = aTemp[i][0]; + +}, "JU.SimpleNode,JU.SimpleNode,JU.T3,~A,JU.V3"); +Clazz.defineMethod(c$, "checkStereoChemistry", +function(search, v){ +this.v = v; +this.search = search; +this.targetAtoms = search.target.nodes; +var haveTopo = search.haveSmilesTarget; +var invertStereochemistry = search.invertStereochemistry; +if (JU.Logger.debugging) JU.Logger.debug("checking stereochemistry..."); +for (var i = 0; i < search.ac; i++) { +var pAtom = search.patternAtoms[i]; +if (pAtom.stereo == null && search.polyhedronStereo == null) continue; +var isNot = (pAtom.not != invertStereochemistry); +switch (this.checkStereoForAtom(pAtom, isNot, haveTopo)) { +case 0: +continue; +case 1: +return true; +case -1: +return false; +} +} +return true; +}, "JS.SmilesSearch,JS.VTemp"); +Clazz.defineMethod(c$, "checkStereoForAtom", +function(pAtom, isNot, haveTopo){ +var atom1 = null; +var atom2 = null; +var atom3 = null; +var atom4 = null; +var atom5 = null; +var atom6 = null; +var sAtom0 = null; +var jn; +var atom0 = pAtom.getMatchingAtom(); +if (haveTopo) sAtom0 = atom0; +var nH = Math.max(pAtom.explicitHydrogenCount, 0); +var order = (pAtom.stereo == null ? 0 : pAtom.stereo.chiralOrder); +var chiralClass = (pAtom.stereo == null ? 1 : pAtom.stereo.chiralClass); +if (haveTopo && this.chiralOrder != 0 && sAtom0.getChiralClass() != chiralClass) return -1; +if (JU.Logger.debugging) JU.Logger.debug("...type " + chiralClass + " for pattern atom \n " + pAtom + "\n " + atom0); +switch (chiralClass) { +case 1: +if (pAtom.bondCount == 0) { +this.search.polyhedronStereo = pAtom.stereo; +return 0; +}if (this.chiralOrder == 0) { +var atoms12N = new Array(pAtom.bondCount); +for (var i = 0; i < atoms12N.length; i++) atoms12N[i] = this.getJmolAtom(pAtom.getMatchingBondedAtom(i)); + +return (haveTopo && !this.setTopoCoordinates(sAtom0, pAtom, null, atoms12N, this.search.polyhedronStereo.isNot ? !isNot : isNot) || !this.checkPolyHedralWinding(pAtom.getMatchingAtom(), atoms12N) ? -1 : 0); +}if (nH > 1) return 0; +if (pAtom.stereo.isNot) isNot = !isNot; +if (haveTopo) { +return 0; +}var bonds = pAtom.bonds; +var jHpt = -1; +if (nH == 1) { +jHpt = (pAtom.isFirst ? 0 : 1); +if (pAtom.getBondCount() != 3) return -1; +this.v.vA.set(0, 0, 0); +for (var j = 0; j < 3; j++) this.v.vA.add(bonds[j].getOtherAtom(sAtom0).getMatchingAtom()); + +this.v.vA.scale(0.3333); +this.v.vA.sub2(atom0, this.v.vA); +this.v.vA.add(atom0); +}var po = pAtom.stereo.polyhedralOrders; +var pt; +for (var j = po.length; --j >= 0; ) { +var orders = po[j]; +if (orders == null || orders.length < 2) continue; +pt = (j > jHpt ? j - nH : j); +var ta1 = (j == jHpt ? this.v.vA : bonds[pt].getOtherAtom(pAtom).getMatchingAtom()); +var flast = (isNot ? 3.4028235E38 : 0); +var ta2 = null; +for (var k = 0; k < orders.length; k++) { +pt = orders[k]; +var ta3; +if (pt == jHpt) { +ta3 = this.v.vA; +} else { +if (pt > jHpt) pt--; +ta3 = bonds[pt].getOtherAtom(pAtom).getMatchingAtom(); +}if (k == 0) { +ta2 = ta3; +continue; +}var f = JU.Measure.computeTorsion(ta3, ta1, atom0, ta2, true); +if (Float.isNaN(f)) f = 180; +if (orders.length == 2) return ((f < 0) != isNot ? 1 : -1); +if (f < 0) f += 360; +if ((f < flast) != isNot) return -1; +flast = f; +} +} +return 0; +case 2: +jn = this.getAlleneAtoms(haveTopo, sAtom0, pAtom, null); +if (jn == null) return 0; +if (jn.length == 0) return -1; +if (!JS.SmilesStereo.checkStereochemistryAll(isNot, atom0, chiralClass, order, jn[0], jn[1], jn[2], jn[3], null, null, this.v)) return -1; +return 0; +case 8: +case 9: +case 3: +case 4: +case 7: +case 5: +case 6: +atom1 = this.getJmolAtom(pAtom.getMatchingBondedAtom(0)); +switch (nH) { +case 0: +atom2 = this.getJmolAtom(pAtom.getMatchingBondedAtom(1)); +break; +case 1: +atom2 = this.search.findImplicitHydrogen(pAtom.getMatchingAtom()); +if (pAtom.isFirst) { +var a = atom2; +atom2 = atom1; +atom1 = a; +}break; +default: +return 0; +} +atom3 = this.getJmolAtom(pAtom.getMatchingBondedAtom(2 - nH)); +atom4 = this.getJmolAtom(pAtom.getMatchingBondedAtom(3 - nH)); +atom5 = this.getJmolAtom(pAtom.getMatchingBondedAtom(4 - nH)); +atom6 = this.getJmolAtom(pAtom.getMatchingBondedAtom(5 - nH)); +if (haveTopo && !this.setTopoCoordinates(sAtom0, pAtom, null, Clazz.newArray(-1, [atom1, atom2, atom3, atom4, atom5, atom6]), false)) return -1; +if (!JS.SmilesStereo.checkStereochemistryAll(isNot, atom0, chiralClass, order, atom1, atom2, atom3, atom4, atom5, atom6, this.v)) return -1; +return 0; +} +return 0; +}, "JS.SmilesAtom,~B,~B"); +Clazz.defineMethod(c$, "checkPolyHedralWinding", +function(a0, a){ +for (var i = 0; i < a.length - 2; i++) if (JS.SmilesStereo.getHandedness(a[i], a[i + 1], a[i + 2], a0, this.v) != 1) return false; + +return true; +}, "JU.Node,~A"); +Clazz.defineMethod(c$, "getAlleneAtoms", +function(haveTopo, sAtom0, pAtom, pAtom1){ +if (pAtom1 == null) pAtom1 = pAtom.getBond(0).getOtherAtom(pAtom); +var pAtom2 = pAtom.getBond(1).getOtherAtom(pAtom); +if (pAtom2 === pAtom1) pAtom2 = pAtom.getBond(0).getOtherAtom(pAtom); +if (pAtom1 == null || pAtom2 == null) return null; +var pAtom1a = pAtom; +var pAtom2a = pAtom; +while (pAtom1.getBondCount() == 2 && pAtom2.getBondCount() == 2 && pAtom1.getValence() == 4 && pAtom2.getValence() == 4) { +var b = pAtom1.getBondNotTo(pAtom1a, true); +pAtom1a = pAtom1; +pAtom1 = b.getOtherAtom(pAtom1); +b = pAtom2.getBondNotTo(pAtom2a, true); +pAtom2a = pAtom2; +pAtom2 = b.getOtherAtom(pAtom2); +} +pAtom = pAtom1; +var jn = new Array(6); +jn[4] = new JS.SmilesAtom().setIndex(60004); +var nBonds = pAtom.getBondCount(); +if (nBonds != 2 && nBonds != 3) return null; +for (var k = 0, p = 0; k < nBonds; k++) { +var b = pAtom.bonds[k]; +pAtom1 = b.getOtherAtom(pAtom); +if (b.getMatchingBond().getCovalentOrder() == 2) { +if (pAtom2 == null) pAtom2 = pAtom1; +continue; +}if ((b.atom1 === pAtom1) && (!b.isConnection || pAtom1.index > pAtom.index)) { +p = 0; +} else if (jn[1] == null) { +p = 1; +} else { +jn[0] = jn[p = 1]; +}jn[p] = pAtom1.getMatchingAtom(); +} +if (pAtom2 == null) return null; +nBonds = pAtom2.getBondCount(); +if (nBonds != 2 && nBonds != 3) return null; +for (var p = 0, k = 0; k < nBonds; k++) { +var b = pAtom2.bonds[k]; +pAtom1 = b.getOtherAtom(pAtom2); +if (b.getMatchingBond().getCovalentOrder() == 2) { +continue; +}if ((b.atom1 === pAtom1) && (!b.isConnection || pAtom1.index > pAtom2.index)) { +p = 2; +} else if (jn[3] == null) { +p = 3; +} else { +jn[2] = jn[p = 3]; +}jn[p] = pAtom1.getMatchingAtom(); +} +for (var k = 0; k < 4; k++) if (jn[k] == null) this.addAlleneLonePair(k < 2 ? pAtom : pAtom2, jn, k); + +if (haveTopo && !this.setTopoCoordinates(sAtom0, pAtom, pAtom2, jn, false)) return new Array(0); +return jn; +}, "~B,JS.SmilesAtom,JS.SmilesAtom,JS.SmilesAtom"); +Clazz.defineMethod(c$, "addAlleneLonePair", +function(pAtom, jn, k){ +var atom = pAtom.getMatchingAtom(); +jn[k] = this.search.findImplicitHydrogen(atom); +if (jn[k] != null) return; +var v = new JU.V3(); +for (var i = 0; i < 4; i++) if (jn[i] != null) v.sub(jn[i]); + +if (v.length() == 0) { +v.setT((jn[4])); +} else { +v.scaleAdd2(2, pAtom.getMatchingAtom(), v); +}jn[k] = new JS.SmilesAtom().setIndex(-2147483648); +(jn[k]).setT(v); +}, "JS.SmilesAtom,~A,~N"); +c$.getStereoFlag = Clazz.defineMethod(c$, "getStereoFlag", +function(atom0, atoms, nAtoms, v, is2D){ +var atom1 = atoms[0]; +var atom2 = atoms[1]; +var atom3 = atoms[2]; +var atom4 = atoms[3]; +var atom5 = atoms[4]; +var atom6 = atoms[5]; +var chiralClass = 4; +switch (nAtoms) { +default: +case 5: +case 6: +return (JS.SmilesStereo.checkStereochemistryAll(false, atom0, chiralClass, 1, atom1, atom2, atom3, atom4, atom5, atom6, v) ? "@" : "@@"); +case 2: +case 4: +if (atom3 == null || atom4 == null) return ""; +var d = JU.Measure.getNormalThroughPoints(atom1, atom2, atom3, v.vTemp, v.vA); +if (Math.abs(JU.Measure.distanceToPlaneV(v.vTemp, d, atom4)) < 0.2) { +if (is2D) return ""; +chiralClass = 7; +if (JS.SmilesStereo.checkStereochemistryAll(false, atom0, chiralClass, 1, atom1, atom2, atom3, atom4, atom5, atom6, v)) return "@SP1"; +if (JS.SmilesStereo.checkStereochemistryAll(false, atom0, chiralClass, 2, atom1, atom2, atom3, atom4, atom5, atom6, v)) return "@SP2"; +if (JS.SmilesStereo.checkStereochemistryAll(false, atom0, chiralClass, 3, atom1, atom2, atom3, atom4, atom5, atom6, v)) return "@SP3"; +} else { +return (JS.SmilesStereo.checkStereochemistryAll(false, atom0, chiralClass, 1, atom1, atom2, atom3, atom4, atom5, atom6, v) ? "@" : "@@"); +}} +return ""; +}, "JU.SimpleNode,~A,~N,JS.VTemp,~B"); +c$.checkStereochemistryAll = Clazz.defineMethod(c$, "checkStereochemistryAll", +function(isNot, atom0, chiralClass, order, atom1, atom2, atom3, atom4, atom5, atom6, v){ +switch (chiralClass) { +default: +return true; +case 2: +case 4: +return (isNot == (JS.SmilesStereo.getHandedness(atom2, atom3, atom4, atom1, v) != order)); +case 7: +JS.SmilesStereo.getPlaneNormals(atom1, atom2, atom3, atom4, v); +return (v.vNorm2.dot(v.vNorm3) < 0 ? isNot == (order != 3) : v.vNorm3.dot(v.vNorm4) < 0 ? isNot == (order != 2) : isNot == (order != 1)); +case 3: +return (isNot == (JS.SmilesStereo.getHandedness(atom1, atom2, atom3, atom0, v) != order)); +case 5: +if (!JS.SmilesStereo.isDiaxial(atom0, atom0, atom5, atom1, v, -0.95)) return false; +return (isNot == (JS.SmilesStereo.getHandedness(atom2, atom3, atom4, atom1, v) != order)); +case 8: +switch (order) { +case 1: +break; +case 2: +atom3 = atom2; +break; +case 3: +atom1 = atom2; +break; +} +return (isNot == !JS.SmilesStereo.isDiaxial(atom0, atom0, atom1, atom3, v, -0.95)); +case 9: +if (!JS.SmilesStereo.isDiaxial(atom0, atom0, atom4, atom1, v, -0.95)) return false; +return (isNot == (JS.SmilesStereo.getHandedness(atom2, atom3, atom4, atom1, v) != order)); +case 6: +if (!JS.SmilesStereo.isDiaxial(atom0, atom0, atom6, atom1, v, -0.95) || !JS.SmilesStereo.isDiaxial(atom0, atom0, atom2, atom4, v, -0.95) || !JS.SmilesStereo.isDiaxial(atom0, atom0, atom3, atom5, v, -0.95)) return false; +JS.SmilesStereo.getPlaneNormals(atom2, atom3, atom4, atom5, v); +if (v.vNorm2.dot(v.vNorm3) < 0 || v.vNorm3.dot(v.vNorm4) < 0) return false; +v.vNorm3.sub2(atom0, atom1); +return (isNot == ((v.vNorm2.dot(v.vNorm3) < 0 ? 2 : 1) == order)); +case 1: +return true; +} +}, "~B,JU.SimpleNode,~N,~N,JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JS.VTemp"); +c$.isDiaxial = Clazz.defineMethod(c$, "isDiaxial", +function(atomA, atomB, atom1, atom2, v, f){ +v.vA.sub2(atomA, atom1); +v.vB.sub2(atomB, atom2); +v.vA.normalize(); +v.vB.normalize(); +return (v.vA.dot(v.vB) < f); +}, "JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JS.VTemp,~N"); +c$.getHandedness = Clazz.defineMethod(c$, "getHandedness", +function(a, b, c, pt, v){ +var d = JU.Measure.getNormalThroughPoints(a, b, c, v.vTemp, v.vA); +d = JU.Measure.distanceToPlaneV(v.vTemp, d, pt); +return (d > 0 ? 1 : 2); +}, "JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JU.SimpleNode,JS.VTemp"); +c$.getPlaneNormals = Clazz.defineMethod(c$, "getPlaneNormals", +function(atom1, atom2, atom3, atom4, v){ +JU.Measure.getNormalThroughPoints(atom1, atom2, atom3, v.vNorm2, v.vTemp1); +JU.Measure.getNormalThroughPoints(atom2, atom3, atom4, v.vNorm3, v.vTemp1); +JU.Measure.getNormalThroughPoints(atom3, atom4, atom1, v.vNorm4, v.vTemp1); +}, "JU.P3,JU.P3,JU.P3,JU.P3,JS.VTemp"); +c$.checkChirality = Clazz.defineMethod(c$, "checkChirality", +function(search, pattern, index, newAtom){ +var stereoClass = 0; +var order = -2147483648; +var len = pattern.length; +var details = null; +var directives = null; +var atomCount = 0; +var ch; +stereoClass = 0; +order = 1; +var isPoly = false; +if (++index < len) { +switch ((ch = pattern.charAt(index)).charCodeAt(0)) { +case 64: +order = 2; +index++; +break; +case 43: +case 45: +case 72: +break; +case 80: +isPoly = true; +case 65: +case 79: +case 83: +case 84: +stereoClass = (index + 1 < len ? JS.SmilesStereo.getChiralityClass(pattern.substring(index, index + 2)) : -1); +index += 2; +break; +default: +order = (JU.PT.isDigit(ch) ? 1 : -1); +} +var pt = index; +if (order == 1 || isPoly) { +while (pt < len && JU.PT.isDigit(pattern.charAt(pt))) pt++; + +if (pt > index) { +try { +var n = Integer.parseInt(pattern.substring(index, pt)); +if (isPoly) { +atomCount = n; +if (pt < len && pattern.charAt(pt) == '(') { +details = JS.SmilesParser.getSubPattern(pattern, pt, '('); +pt += details.length + 2; +} else if (pt < len && pattern.charAt(pt) == '@') { +details = "@"; +pt++; +}if (pt < len && pattern.charAt(pt) == '/') { +directives = JS.SmilesParser.getSubPattern(pattern, pt, '/'); +pt += directives.length + 2; +}} else { +order = n; +}} catch (e) { +if (Clazz.exceptionOf(e,"NumberFormatException")){ +order = -1; +} else { +throw e; +} +} +index = pt; +}}if (order < 1 || stereoClass < 0) throw new JS.InvalidSmilesException("Invalid stereochemistry descriptor"); +}newAtom.stereo = new JS.SmilesStereo(stereoClass, order, atomCount, details, directives); +if (stereoClass == 1) { +search.polyAtom = newAtom; +search.noAromatic = true; +}newAtom.stereo.search = search; +if (JS.SmilesParser.getChar(pattern, index) == '?') { +JU.Logger.info("Ignoring '?' in stereochemistry"); +index++; +}return index; +}, "JS.SmilesSearch,~S,~N,JS.SmilesAtom"); +Clazz.defineMethod(c$, "getPolyhedralOrders", +function(){ +var po = this.polyhedralOrders = JU.AU.newInt2(this.atomCount); +if (this.details == null) return; +if (this.details.length > 0 && this.details.charAt(0) == '@') this.details = "!" + this.details.substring(1); +if (this.details.length == 0 || this.details.equals("!")) { +for (var i = 2; i <= this.atomCount; i++) this.details += (i < 10 ? "" + i : "%" + i); + +}var temp = Clazz.newIntArray (this.details.length, 0); +var ret = Clazz.newIntArray (1, 0); +var msg = null; +var pt = 0; +var s = this.details + "/"; +var n = 0; +var len = s.length; +var index = 0; +var atomPt = 0; +do { +var ch = s.charAt(index); +switch ((ch).charCodeAt(0)) { +case 33: +this.isNot = true; +index++; +break; +case 47: +case 46: +if ((pt = atomPt) >= this.atomCount) { +msg = "Too many descriptors"; +break; +}var a = po[atomPt] = Clazz.newIntArray (n, 0); +for (; --n >= 0; ) a[n] = temp[n]; + +n = 0; +if (JU.Logger.debugging) JU.Logger.info(JU.PT.toJSON("@PH" + this.atomCount + "[" + atomPt + "]", a)); +if (ch == '/') index = 2147483647; + else index++; +atomPt++; +break; +default: +index = JS.SmilesParser.getRingNumber(s, index, ch, ret); +pt = temp[n++] = ret[0] - 1; +if (pt == atomPt) msg = "Atom cannot connect to itself"; + else if (pt < 0 || pt >= this.atomCount) msg = "Connection number outside of range (1-" + this.atomCount + ")"; + else if (n >= this.atomCount) msg = "Too many connections indicated"; +} +if (msg != null) { +msg += ": " + s.substring(0, index) + "<<"; +throw new JS.InvalidSmilesException(msg); +}} while (index < len); +return; +}); +c$.getAtropicStereoFlag = Clazz.defineMethod(c$, "getAtropicStereoFlag", +function(nodes){ +return (JU.Measure.computeTorsion(nodes[0], nodes[1], nodes[2], nodes[3], true) < 0 ? 1 : -1); +}, "~A"); +c$.PERM_TB = Clazz.newIntArray(-1, [0, 1, 4, 0, -1, 4, 0, 1, 3, 0, -1, 3, 0, 1, 2, 0, -1, 2, 0, 1, 1, 0, -1, 1, 1, 1, 4, 1, 1, 3, 1, -1, 4, 1, -1, 3, 1, 1, 2, 1, -1, 2, 2, 1, 4, 2, 1, 3, 3, 1, 4, 3, -1, 4, 2, -1, 3, 2, -1, 4]); +c$.PERM_OCT = Clazz.newIntArray(-1, [0, 1, 5, 0, -1, 5, 0, 1, 4, 0, 3, 5, 0, 3, 4, 0, 1, 3, 0, 3, 3, 0, 2, 5, 0, 2, 4, 0, -2, 5, 0, -2, 4, 0, 2, 3, 0, -2, 3, 0, -3, 5, 0, -3, 4, 0, -1, 4, 0, -3, 3, 0, -1, 3, 0, 1, 2, 0, 3, 2, 0, 2, 2, 0, -2, 2, 0, -3, 2, 0, -1, 2, 0, 1, 1, 0, 3, 1, 0, 2, 1, 0, -2, 1, 0, -3, 1, 0, -1, 1]); +c$.PERM_SS = Clazz.newIntArray(-1, [0, 1, 3, 0, -1, 3, 0, 1, 2, 0, -1, 2, 0, 1, 1, 0, -1, 1, 1, 1, 3, 1, -1, 3, 1, 1, 2, 1, -1, 2, 2, 1, 3, 2, -1, 3]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SpaceGroup.js b/config/plugins/visualizations/jmol/static/j2s/JS/SpaceGroup.js new file mode 100755 index 000000000000..80ad9c555ed4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SpaceGroup.js @@ -0,0 +1,1130 @@ +Clazz.declarePackage("JS"); +Clazz.load(["java.util.Hashtable"], "JS.SpaceGroup", ["java.util.Arrays", "JU.AU", "$.Lst", "$.M4", "$.P3", "$.PT", "$.SB", "JS.HallInfo", "$.HallTranslation", "$.SymmetryOperation", "$.UnitCell", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.operations = null; +this.finalOperations = null; +this.allOperations = null; +this.xyzList = null; +this.uniqueAxis = '\0'; +this.axisChoice = '\0'; +this.itaNumber = null; +this.jmolId = null; +this.clegId = null; +this.operationCount = 0; +this.latticeOp = -1; +this.isBio = false; +this.latticeType = 'P'; +this.itaTransform = null; +this.itaIndex = null; +this.index = 0; +this.derivedIndex = -1; +this.isSSG = false; +this.name = "unknown!"; +this.hallSymbol = null; +this.hallSymbolAlt = null; +this.crystalClass = null; +this.hmSymbol = null; +this.jmolIdExt = null; +this.hallInfo = null; +this.latticeParameter = 0; +this.modDim = 0; +this.doNormalize = true; +this.info = null; +this.nHallOperators = null; +this.hmSymbolFull = null; +this.hmSymbolExt = null; +this.hmSymbolAbbr = null; +this.hmSymbolAlternative = null; +this.hmSymbolAbbrShort = null; +this.ambiguityType = '\0'; +this.strName = null; +this.displayName = null; +Clazz.instantialize(this, arguments);}, JS, "SpaceGroup", null, Cloneable); +Clazz.makeConstructor(c$, +function(index, strData, doInit){ +++JS.SpaceGroup.sgIndex; +if (index < 0) index = JS.SpaceGroup.sgIndex; +this.index = index; +this.init(doInit && strData == null); +if (doInit && strData != null) this.buildSelf(strData); +}, "~N,~S,~B"); +Clazz.defineMethod(c$, "setFrom", +function(sg, isITA){ +if (isITA) { +this.setName(sg.itaNumber.equals("0") ? this.clegId : "HM:" + sg.hmSymbolFull + " #" + this.clegId); +this.derivedIndex = -2; +} else { +this.setName(sg.getName()); +this.derivedIndex = sg.index; +}this.clegId = sg.clegId; +this.itaIndex = sg.itaIndex; +this.crystalClass = sg.crystalClass; +this.hallSymbol = sg.hallSymbol; +this.hmSymbol = sg.hmSymbol; +this.hmSymbolAbbr = sg.hmSymbolAbbr; +this.hmSymbolAbbrShort = sg.hmSymbolAbbrShort; +this.hmSymbolAlternative = sg.hmSymbolAlternative; +this.hmSymbolExt = sg.hmSymbolExt; +this.hmSymbolFull = sg.hmSymbolFull; +this.itaNumber = sg.itaNumber; +this.itaTransform = sg.itaTransform; +this.jmolId = null; +this.jmolIdExt = null; +this.latticeType = sg.latticeType; +this.strName = this.displayName = null; +return this; +}, "JS.SpaceGroup,~B"); +c$.getNull = Clazz.defineMethod(c$, "getNull", +function(doInit, doNormalize, doFinalize){ +var sg = new JS.SpaceGroup(-1, null, doInit); +sg.doNormalize = doNormalize; +if (doFinalize) sg.setFinalOperations(); +return sg; +}, "~B,~B,~B"); +Clazz.defineMethod(c$, "init", +function(addXYZ){ +this.xyzList = new java.util.Hashtable(); +this.operationCount = 0; +if (addXYZ) this.addSymmetry("x,y,z", 0, false); +}, "~B"); +c$.createSpaceGroup = Clazz.defineMethod(c$, "createSpaceGroup", +function(desiredSpaceGroupIndex, name, data, modDim){ +var sg = null; +if (desiredSpaceGroupIndex >= 0) { +sg = JS.SpaceGroup.SG[desiredSpaceGroupIndex]; +} else { +if (Clazz.instanceOf(data,"JU.Lst")) sg = JS.SpaceGroup.createSGFromList(name, data); + else sg = JS.SpaceGroup.determineSpaceGroupNA(name, data); +if (sg == null) sg = JS.SpaceGroup.createSpaceGroupN(modDim <= 0 ? name : "x1,x2,x3,x4,x5,x6,x7,x8,x9".substring(0, modDim * 3 + 8)); +}if (sg != null) sg.generateAllOperators(null); +return sg; +}, "~N,~S,~O,~N"); +Clazz.defineMethod(c$, "cloneInfoTo", +function(sg0){ +try { +var sg = this.clone(); +sg.operations = sg0.operations; +sg.finalOperations = sg0.finalOperations; +sg.xyzList = sg0.xyzList; +return sg; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}, "JS.SpaceGroup"); +Clazz.defineMethod(c$, "getItaIndex", +function(){ +return (this.itaIndex != null && !"--".equals(this.itaIndex) ? this.itaIndex : !"0".equals(this.itaNumber) ? this.itaNumber : !"--".equals(this.hallSymbol) ? "[" + this.hallSymbol + "]" : "?"); +}); +Clazz.defineMethod(c$, "getIndex", +function(){ +return (this.derivedIndex >= 0 ? this.derivedIndex : this.index); +}); +c$.createSGFromList = Clazz.defineMethod(c$, "createSGFromList", +function(name, data){ +var sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;--", true); +sg.doNormalize = false; +sg.setName(name); +var n = data.size(); +for (var i = 0; i < n; i++) { +var operation = data.get(i); +if (Clazz.instanceOf(operation,"JS.SymmetryOperation")) { +var op = operation; +var iop = sg.addOp(op, op.xyz, false); +sg.operations[iop].setTimeReversal(op.timeReversal); +} else { +sg.addSymmetrySM("xyz matrix:" + operation, operation); +}} +var sgn = sg.getDerivedSpaceGroup(); +if (sgn != null) sg = sgn; +return sg; +}, "~S,JU.Lst"); +Clazz.defineMethod(c$, "addSymmetry", +function(xyz, opId, allowScaling){ +xyz = xyz.toLowerCase(); +return (xyz.indexOf("[[") < 0 && xyz.indexOf("x4") < 0 && xyz.indexOf(";") < 0 && (xyz.indexOf("x") < 0 || xyz.indexOf("y") < 0 || xyz.indexOf("z") < 0) ? -1 : this.addOperation(xyz, opId, allowScaling)); +}, "~S,~N,~B"); +Clazz.defineMethod(c$, "setFinalOperations", +function(){ +this.setFinalOperationsForAtoms(3, null, 0, 0, false); +}); +Clazz.defineMethod(c$, "setFinalOperationsForAtoms", +function(dim, atoms, atomIndex, count, doNormalize){ +if (this.hallInfo == null && this.latticeParameter != 0) { +var h = new JS.HallInfo(JS.HallTranslation.getHallLatticeEquivalent(this.latticeParameter)); +this.generateAllOperators(h); +}this.finalOperations = null; +this.isBio = (this.name.indexOf("bio") >= 0); +if (!this.isBio && this.index >= JS.SpaceGroup.SG.length && this.name.indexOf("SSG:") < 0 && this.name.indexOf("[subsystem") < 0) { +var sg = this.getDerivedSpaceGroup(); +if (sg != null && sg !== this) { +this.setFrom(sg, false); +}}if (this.operationCount == 0) this.addOperation("x,y,z", 1, false); +this.finalOperations = new Array(this.operationCount); +var op = null; +var doOffset = (doNormalize && count > 0 && atoms != null); +if (doOffset) { +op = this.finalOperations[0] = new JS.SymmetryOperation(this.operations[0], 0, true); +if (op.sigma == null) JS.SymmetryOperation.normalizeOperationToCentroid(dim, op, atoms, atomIndex, count); +var atom = atoms[atomIndex]; +var c = JU.P3.newP(atom); +op.rotTrans(c); +if (c.distance(atom) > 0.0001) { +for (var i = 0; i < count; i++) { +atom = atoms[atomIndex + i]; +c.setT(atom); +op.rotTrans(c); +atom.setT(c); +} +}if (!doNormalize) op = null; +}for (var i = 0; i < this.operationCount; i++) { +if (i > 0 || op == null) { +op = this.finalOperations[i] = new JS.SymmetryOperation(this.operations[i], 0, doNormalize); +}if (doOffset && op.sigma == null) { +JS.SymmetryOperation.normalizeOperationToCentroid(dim, op, atoms, atomIndex, count); +}op.getCentering(); +} +}, "~N,~A,~N,~N,~B"); +Clazz.defineMethod(c$, "getOperationCount", +function(){ +if (this.finalOperations == null) this.setFinalOperations(); +return this.finalOperations.length; +}); +Clazz.defineMethod(c$, "getOperation", +function(i){ +return this.finalOperations[i]; +}, "~N"); +Clazz.defineMethod(c$, "getAdditionalOperationsCount", +function(){ +if (this.finalOperations == null) this.setFinalOperations(); +if (this.allOperations == null) { +this.allOperations = JS.SymmetryOperation.getAdditionalOperations(this.finalOperations); +}return this.allOperations.length - this.getOperationCount(); +}); +Clazz.defineMethod(c$, "getAdditionalOperations", +function(){ +this.getAdditionalOperationsCount(); +return this.allOperations; +}); +Clazz.defineMethod(c$, "getAllOperation", +function(i){ +return this.allOperations[i]; +}, "~N"); +Clazz.defineMethod(c$, "getXyz", +function(i, doNormalize){ +return (this.finalOperations == null ? this.operations[i].getXyz(doNormalize) : this.finalOperations[i].getXyz(doNormalize)); +}, "~N,~B"); +c$.findSpaceGroupFromXYZ = Clazz.defineMethod(c$, "findSpaceGroupFromXYZ", +function(xyzList){ +var sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;--", true); +sg.doNormalize = false; +var xyzlist = xyzList.$plit(";"); +for (var i = 0, n = xyzlist.length; i < n; i++) { +var op = new JS.SymmetryOperation(null, i, false); +op.setMatrixFromXYZ(xyzlist[i], 0, false); +sg.addOp(op, xyzlist[i], false); +} +return JS.SpaceGroup.findSpaceGroup(sg.operationCount, sg.getCanonicalSeitzList()); +}, "~S"); +c$.getInfo = Clazz.defineMethod(c$, "getInfo", +function(sg, spaceGroup, params, asMap, andNonstandard){ +try { +if (sg != null && sg.index >= JS.SpaceGroup.SG.length) { +var sgDerived = JS.SpaceGroup.findSpaceGroup(sg.operationCount, sg.getCanonicalSeitzList()); +if (sgDerived != null) sg = sgDerived; +}if (params != null) { +if (sg == null) { +if (spaceGroup.indexOf("[") >= 0) spaceGroup = spaceGroup.substring(0, spaceGroup.indexOf("[")).trim(); +if (spaceGroup.equals("unspecified!")) return "no space group identified in file"; +sg = JS.SpaceGroup.determineSpaceGroupNA(spaceGroup, params); +}} else if (spaceGroup.equalsIgnoreCase("ALL")) { +return JS.SpaceGroup.dumpAll(asMap); +} else if (spaceGroup.equalsIgnoreCase("MAP")) { +return JS.SpaceGroup.dumpAll(true); +} else if (spaceGroup.equalsIgnoreCase("ALLSEITZ")) { +return JS.SpaceGroup.dumpAllSeitz(); +} else { +sg = JS.SpaceGroup.determineSpaceGroupN(spaceGroup); +}if (sg == null) { +var sgFound = JS.SpaceGroup.createSpaceGroupN(spaceGroup); +if (sgFound != null) sgFound = JS.SpaceGroup.findSpaceGroup(sgFound.operationCount, sgFound.getCanonicalSeitzList()); +if (sgFound != null) sg = sgFound; +}if (sg != null) { +if (asMap) { +return sg.dumpInfoObj(); +}var sb = new JU.SB(); +while (sg != null) { +sb.append(sg.dumpInfo()); +if (sg.index >= JS.SpaceGroup.SG.length || !andNonstandard) break; +sg = JS.SpaceGroup.determineSpaceGroupNS(spaceGroup, sg); +} +return sb.toString(); +}return asMap ? null : "?"; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return "?"; +} else { +throw e; +} +} +}, "JS.SpaceGroup,~S,~A,~B,~B"); +Clazz.defineMethod(c$, "dumpInfo", +function(){ +var info = this.dumpCanonicalSeitzList(); +if (Clazz.instanceOf(info,"JS.SpaceGroup")) return (info).dumpInfo(); +var sb = new JU.SB().append("\nHermann-Mauguin symbol: "); +if (this.hmSymbol == null || this.hmSymbolExt == null) sb.append("?"); + else sb.append(this.hmSymbol).append(this.hmSymbolExt.length > 0 ? ":" + this.hmSymbolExt : ""); +if (this.itaNumber != null) { +sb.append("\ninternational table number: ").append(this.itaNumber).append(this.itaTransform != null ? ":" + this.itaTransform : "").append("\ncrystal class: " + this.crystalClass); +}if (this.jmolId != null) { +sb.append("\nJmol_ID: ").append(this.jmolId).append(" (" + this.itaIndex + ")"); +}sb.append("\n\n").append(this.hallInfo == null ? "Hall symbol unknown" : JU.Logger.debugging ? this.hallInfo.dumpInfo() : ""); +sb.append("\n\n").appendI(this.operationCount).append(" operators").append(this.hallInfo != null && !this.hallInfo.hallSymbol.equals("--") ? " from Hall symbol " + this.hallInfo.hallSymbol + " #" + this.jmolId : "").append(": "); +for (var i = 0; i < this.operationCount; i++) { +sb.append("\n").append(this.operations[i].xyz); +} +return sb.toString(); +}); +Clazz.defineMethod(c$, "dumpInfoObj", +function(){ +var info = this.dumpCanonicalSeitzList(); +if (Clazz.instanceOf(info,"JS.SpaceGroup")) return (info).dumpInfoObj(); +var map = new java.util.Hashtable(); +if (this.itaNumber != null && !this.itaNumber.equals("0")) { +var s = (this.hmSymbol == null || this.hmSymbolExt == null ? "?" : this.hmSymbol + (this.hmSymbolExt.length > 0 ? ":" + this.hmSymbolExt : "")); +map.put("HermannMauguinSymbol", s); +map.put("ita", Integer.$valueOf(JU.PT.parseInt(this.itaNumber))); +map.put("itaIndex", this.itaIndex == null ? "n/a" : this.itaIndex); +map.put("clegId", this.itaIndex == null ? "n/a" : this.clegId); +if (this.jmolId != null) map.put("jmolId", this.jmolId); +map.put("crystalClass", this.crystalClass); +map.put("operationCount", Integer.$valueOf(this.operationCount)); +}var lst = new JU.Lst(); +for (var i = 0; i < this.operationCount; i++) { +lst.addLast(this.operations[i].xyz); +} +map.put("operationsXYZ", lst); +if (this.hallInfo != null && this.hallInfo.hallSymbol != null) map.put("HallSymbol", this.hallInfo.hallSymbol); +if (this.hallSymbolAlt != null) map.put("HallSymbolAlt", this.hallSymbolAlt); +return map; +}); +Clazz.defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz.defineMethod(c$, "getLatticeDesignation", +function(){ +return JS.HallTranslation.getLatticeDesignation(this.latticeParameter); +}); +Clazz.defineMethod(c$, "setLatticeParam", +function(latticeParameter){ +this.latticeParameter = latticeParameter; +if (latticeParameter > 10) this.latticeParameter = -JS.HallTranslation.getLatticeIndex(JS.HallTranslation.getLatticeCode(latticeParameter)); +}, "~N"); +Clazz.defineMethod(c$, "dumpCanonicalSeitzList", +function(){ +if (this.nHallOperators != null) { +this.hallInfo = new JS.HallInfo(this.hallSymbol); +this.generateAllOperators(null); +}var s = this.getCanonicalSeitzList(); +if (this.index >= JS.SpaceGroup.SG.length) { +var sgDerived = JS.SpaceGroup.findSpaceGroup(this.operationCount, s); +if (sgDerived != null) return sgDerived.getCanonicalSeitzList(); +}return (this.index >= 0 && this.index < JS.SpaceGroup.SG.length ? this.hallSymbol + " = " : "") + s; +}); +Clazz.defineMethod(c$, "getDerivedSpaceGroup", +function(){ +if (this.derivedIndex == -2 || this.index >= 0 && this.index < JS.SpaceGroup.SG.length || this.modDim > 0 || this.operations == null || this.operations.length == 0 || this.operations[0].timeReversal != 0) return this; +if (this.finalOperations != null) this.setFinalOperations(); +var s = this.getCanonicalSeitzList(); +return (s == null ? null : JS.SpaceGroup.findSpaceGroup(this.operationCount, s)); +}); +Clazz.defineMethod(c$, "getCanonicalSeitzList", +function(){ +return JS.SpaceGroup.getCanonicalSeitzForOperations(this.operations, this.operationCount); +}); +c$.getCanonicalSeitzForOperations = Clazz.defineMethod(c$, "getCanonicalSeitzForOperations", +function(operations, n){ +var list = new Array(n); +for (var i = 0; i < n; i++) list[i] = JS.SymmetryOperation.dumpSeitz(operations[i], true); + +java.util.Arrays.sort(list, 0, n); +var sb = new JU.SB().append("\n["); +for (var i = 0; i < n; i++) sb.append(list[i].$replace('\t', ' ').$replace('\n', ' ')).append("; "); + +sb.append("]"); +return sb.toString(); +}, "~A,~N"); +c$.findSpaceGroup = Clazz.defineMethod(c$, "findSpaceGroup", +function(opCount, s){ +var lst = JS.SpaceGroup.htByOpCount.get(Integer.$valueOf(opCount)); +if (lst != null) for (var i = 0, n = lst.size(); i < n; i++) { +var sg = lst.get(i); +if (JS.SpaceGroup.getCanonicalSeitz(sg.index).indexOf(s) >= 0) return JS.SpaceGroup.SG[sg.index]; +} +return null; +}, "~N,~S"); +c$.dumpAll = Clazz.defineMethod(c$, "dumpAll", +function(asMap){ +if (asMap) { +var info = new JU.Lst(); +for (var i = 0; i < JS.SpaceGroup.SG.length; i++) info.addLast(JS.SpaceGroup.SG[i].dumpInfoObj()); + +return info; +}var sb = new JU.SB(); +for (var i = 0; i < JS.SpaceGroup.SG.length; i++) sb.append("\n----------------------\n" + JS.SpaceGroup.SG[i].dumpInfo()); + +return sb.toString(); +}, "~B"); +c$.dumpAllSeitz = Clazz.defineMethod(c$, "dumpAllSeitz", +function(){ +var sb = new JU.SB(); +for (var i = 0; i < JS.SpaceGroup.SG.length; i++) sb.append("\n").appendO(JS.SpaceGroup.getCanonicalSeitz(i)); + +return sb.toString(); +}); +c$.getCanonicalSeitz = Clazz.defineMethod(c$, "getCanonicalSeitz", +function(i){ +if (JS.SpaceGroup.canonicalSeitzList == null) JS.SpaceGroup.canonicalSeitzList = new Array(JS.SpaceGroup.SG.length); +var cs = JS.SpaceGroup.canonicalSeitzList[i]; +return (cs == null ? JS.SpaceGroup.canonicalSeitzList[i] = JS.SpaceGroup.SG[i].dumpCanonicalSeitzList().toString() : cs); +}, "~N"); +Clazz.defineMethod(c$, "setLattice", +function(latticeCode, isCentrosymmetric){ +this.latticeParameter = JS.HallTranslation.getLatticeIndex(latticeCode); +if (!isCentrosymmetric) this.latticeParameter = -this.latticeParameter; +}, "~S,~B"); +c$.createSpaceGroupN = Clazz.defineMethod(c$, "createSpaceGroupN", +function(name){ +name = name.trim(); +var sg = JS.SpaceGroup.determineSpaceGroupN(name); +var hallInfo; +if (sg == null) { +hallInfo = new JS.HallInfo(name); +if (hallInfo.nRotations > 0) { +sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;" + name, true); +sg.hallInfo = hallInfo; +sg.hallSymbol = hallInfo.hallSymbol; +sg.setName("[" + sg.hallSymbol + "]"); +sg.jmolId = null; +} else if (name.indexOf(",") >= 0) { +sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;--", true); +sg.doNormalize = false; +sg.generateOperatorsFromXyzInfo(name); +}}if (sg != null) sg.generateAllOperators(null); +return sg; +}, "~S"); +Clazz.defineMethod(c$, "addOperation", +function(xyz0, opId, allowScaling){ +if (xyz0 == null || xyz0.length < 3) { +this.init(false); +return -1; +}xyz0 = JU.PT.rep(xyz0, " ", ""); +var isSpecial = (xyz0.charAt(0) == '='); +if (isSpecial) xyz0 = xyz0.substring(1); +var id = this.checkXYZlist(xyz0); +if (id >= 0) return id; +if (xyz0.startsWith("x1,x2,x3,x4") && this.modDim == 0) { +this.xyzList.clear(); +this.operationCount = 0; +this.modDim = JU.PT.parseInt(xyz0.substring(xyz0.lastIndexOf("x") + 1)) - 3; +} else if (xyz0.indexOf("m") >= 0) { +xyz0 = JU.PT.rep(xyz0, "+m", "m"); +if (xyz0.equals("x,y,z,m") || xyz0.equals("x,y,z(mx,my,mz)")) { +this.xyzList.clear(); +this.operationCount = 0; +}}var op = new JS.SymmetryOperation(null, opId, this.doNormalize); +if (!op.setMatrixFromXYZ(xyz0, this.modDim, allowScaling)) { +JU.Logger.error("couldn't interpret symmetry operation: " + xyz0); +return -1; +}if (xyz0.charAt(0) == '!') { +xyz0 = xyz0.substring(xyz0.lastIndexOf('!') + 1); +}return this.addOp(op, xyz0, isSpecial); +}, "~S,~N,~B"); +Clazz.defineMethod(c$, "checkXYZlist", +function(xyz){ +return (this.xyzList.containsKey(xyz) ? this.xyzList.get(xyz).intValue() : -1); +}, "~S"); +Clazz.defineMethod(c$, "addOp", +function(op, xyz0, isSpecial){ +var xyz = op.xyz; +if (!isSpecial) { +var id = this.checkXYZlist(xyz); +if (id >= 0) return id; +if (this.latticeOp < 0) { +var xxx = JU.PT.replaceAllCharacters(this.modDim > 0 ? JS.SymmetryOperation.replaceXn(xyz, this.modDim + 3) : xyz, "+123/", ""); +if (this.xyzList.containsKey(xxx + "!")) { +this.latticeOp = this.operationCount; +} else { +this.xyzList.put(xxx + "!", Integer.$valueOf(this.operationCount)); +}}this.xyzList.put(xyz, Integer.$valueOf(this.operationCount)); +}if (!xyz.equals(xyz0)) this.xyzList.put(xyz0, Integer.$valueOf(this.operationCount)); +if (this.operations == null) this.operations = new Array(4); +if (this.operationCount == this.operations.length) this.operations = JU.AU.arrayCopyObject(this.operations, this.operationCount * 2); +this.operations[this.operationCount++] = op; +op.number = this.operationCount; +if (op.timeReversal != 0) this.operations[0].timeReversal = 1; +if (JU.Logger.debugging) JU.Logger.debug("\naddOperation " + this.operationCount + op.dumpInfo()); +return this.operationCount - 1; +}, "JS.SymmetryOperation,~S,~B"); +Clazz.defineMethod(c$, "generateOperatorsFromXyzInfo", +function(xyzInfo){ +this.init(true); +var terms = JU.PT.split(xyzInfo.toLowerCase(), ";"); +for (var i = 0; i < terms.length; i++) this.addSymmetry(terms[i], 0, false); + +}, "~S"); +Clazz.defineMethod(c$, "generateAllOperators", +function(h){ +if (h == null) { +if (this.operationCount > 0) return; +if (this.hallSymbol.endsWith("?")) { +this.checkHallOperators(); +return; +}h = this.hallInfo; +this.operations = new Array(4); +if (this.hallInfo == null || this.hallInfo.nRotations == 0) h = this.hallInfo = new JS.HallInfo(this.hallSymbol); +this.setLattice(this.hallInfo.latticeCode, this.hallInfo.isCentrosymmetric); +this.init(true); +}switch ((h.latticeCode).charCodeAt(0)) { +case 0: +case 83: +case 84: +case 80: +this.latticeType = 'P'; +break; +default: +this.latticeType = h.latticeCode; +break; +} +var mat1 = new JU.M4(); +var operation = new JU.M4(); +var newOps = new Array(7); +for (var i = 0; i < 7; i++) newOps[i] = new JU.M4(); + +for (var i = 0; i < h.nRotations; i++) { +var rt = h.rotationTerms[i]; +mat1.setM4(rt.seitzMatrix12ths); +var nRot = rt.order; +newOps[0].setIdentity(); +var nOps = this.operationCount; +for (var j = 1; j <= nRot; j++) { +var m = newOps[j]; +m.mul2(mat1, newOps[0]); +newOps[0].setM4(m); +for (var k = 0; k < nOps; k++) { +operation.mul2(m, this.operations[k]); +operation.m03 = (Clazz.floatToInt(operation.m03) + 12) % 12; +operation.m13 = (Clazz.floatToInt(operation.m13) + 12) % 12; +operation.m23 = (Clazz.floatToInt(operation.m23) + 12) % 12; +var xyz = JS.SymmetryOperation.getXYZFromMatrix(operation, true, true, false); +if (this.checkXYZlist(xyz) >= 0) continue; +this.addSymmetrySM("!nohalf!" + xyz, operation); +} +} +} +if (this.hmSymbol == null) { +this.hmSymbol = "--"; +}if (this.hmSymbol.equals("--")) { +this.hallSymbol = h.hallSymbol; +this.nHallOperators = Integer.$valueOf(this.operationCount); +}if (this.nHallOperators != null && this.operationCount != this.nHallOperators.intValue()) JU.Logger.error("Operator mismatch " + this.operationCount + " for " + this); +}, "JS.HallInfo"); +Clazz.defineMethod(c$, "addSymmetrySM", +function(xyz, operation){ +var iop = this.addOperation(xyz, 0, false); +if (iop >= 0) { +var symmetryOperation = this.operations[iop]; +symmetryOperation.setM4(operation); +}return iop; +}, "~S,JU.M4"); +c$.determineSpaceGroupN = Clazz.defineMethod(c$, "determineSpaceGroupN", +function(name){ +return JS.SpaceGroup.determineSpaceGroup(name, 0, 0, 0, 0, 0, 0, -1); +}, "~S"); +c$.determineSpaceGroupNS = Clazz.defineMethod(c$, "determineSpaceGroupNS", +function(name, sg){ +return JS.SpaceGroup.determineSpaceGroup(name, 0, 0, 0, 0, 0, 0, sg.index); +}, "~S,JS.SpaceGroup"); +c$.determineSpaceGroupNA = Clazz.defineMethod(c$, "determineSpaceGroupNA", +function(name, unitCellParams){ +return (unitCellParams == null ? JS.SpaceGroup.determineSpaceGroup(name, 0, 0, 0, 0, 0, 0, -1) : JS.SpaceGroup.determineSpaceGroup(name, unitCellParams[0], unitCellParams[1], unitCellParams[2], unitCellParams[3], unitCellParams[4], unitCellParams[5], -1)); +}, "~S,~A"); +c$.determineSpaceGroup = Clazz.defineMethod(c$, "determineSpaceGroup", +function(name, a, b, c, alpha, beta, gamma, lastIndex){ +var i = JS.SpaceGroup.determineSpaceGroupIndex(name, a, b, c, alpha, beta, gamma, lastIndex); +return (i >= 0 ? JS.SpaceGroup.SG[i] : null); +}, "~S,~N,~N,~N,~N,~N,~N,~N"); +c$.isXYZList = Clazz.defineMethod(c$, "isXYZList", +function(name){ +return (name != null && name.indexOf(",") >= 0 && name.indexOf("(") < 0 && name.indexOf(":") < 0); +}, "~S"); +c$.determineSpaceGroupIndex = Clazz.defineMethod(c$, "determineSpaceGroupIndex", +function(name, a, b, c, alpha, beta, gamma, lastIndex){ +if (JS.SpaceGroup.isXYZList(name)) return -1; +if (lastIndex < 0) lastIndex = JS.SpaceGroup.SG.length; +name = name.trim().toLowerCase(); +if (name.startsWith("bilbao:")) { +name = name.substring(7); +}var pt = name.indexOf("hall:"); +if (pt > 0) name = name.substring(pt); +var nameType = (name.startsWith("ita/") ? 4 : name.startsWith("hall:") ? 5 : name.startsWith("hm:") ? 3 : 0); +switch (nameType) { +case 3: +case 5: +case 4: +name = name.substring(nameType); +break; +case 0: +if (name.contains("[")) { +nameType = 5; +name = name.substring(0, name.indexOf("[")).trim(); +} else if (name.indexOf(".") > 0) { +nameType = 4; +}} +var nameExt = name; +var i; +var haveExtension = false; +if (nameType == 4) { +} else { +name = name.$replace('_', ' '); +if (name.length >= 2) { +i = (name.indexOf("-") == 0 ? 2 : 1); +if (i < name.length && name.charAt(i) != ' ') name = name.substring(0, i) + " " + name.substring(i); +name = JS.SpaceGroup.toCap(name, 2); +}}var ext = ""; +if ((i = name.indexOf(":")) > 0) { +ext = name.substring(i + 1); +name = name.substring(0, i).trim(); +haveExtension = (ext.length > 0); +}if (nameType != 4 && nameType != 5 && !haveExtension && JU.PT.isOneOf(name, JS.SpaceGroup.ambiguousHMNames)) { +ext = "?"; +haveExtension = true; +}var abbr = JU.PT.replaceAllCharacters(name, " ()", ""); +var s; +switch (nameType) { +case 4: +if (haveExtension) for (i = 0; i < lastIndex; i++) { +if (nameExt.equalsIgnoreCase(JS.SpaceGroup.SG[i].itaIndex)) return i; +} + else for (i = 0; i < lastIndex; i++) { +if (name.equalsIgnoreCase(JS.SpaceGroup.SG[i].itaIndex)) return i; +} +break; +case 5: +for (i = 0; i < lastIndex; i++) { +if (JS.SpaceGroup.SG[i].hallSymbol.equalsIgnoreCase(name)) return i; +} +break; +default: +case 3: +if (nameType != 3) for (i = 0; i < lastIndex; i++) if (JS.SpaceGroup.SG[i].jmolId.equalsIgnoreCase(nameExt)) return i; + +for (i = 0; i < lastIndex; i++) if (JS.SpaceGroup.SG[i].hmSymbolFull.equalsIgnoreCase(nameExt)) return i; + +for (i = 0; i < lastIndex; i++) if ((s = JS.SpaceGroup.SG[i]).hmSymbolAlternative != null && s.hmSymbolAlternative.equalsIgnoreCase(nameExt)) return i; + +if (haveExtension) { +for (i = 0; i < lastIndex; i++) if ((s = JS.SpaceGroup.SG[i]).hmSymbolAbbr.equalsIgnoreCase(abbr) && s.jmolIdExt.equalsIgnoreCase(ext)) return i; + +for (i = 0; i < lastIndex; i++) if ((s = JS.SpaceGroup.SG[i]).hmSymbolAbbrShort.equalsIgnoreCase(abbr) && s.jmolIdExt.equalsIgnoreCase(ext)) return i; + +}var uniqueAxis = JS.SpaceGroup.determineUniqueAxis(a, b, c, alpha, beta, gamma); +if (!haveExtension || ext.charAt(0) == '?') for (i = 0; i < lastIndex; i++) if (((s = JS.SpaceGroup.SG[i]).hmSymbolAbbr.equalsIgnoreCase(abbr) || s.hmSymbolAbbrShort.equalsIgnoreCase(abbr) || s.itaNumber.equals(abbr))) switch ((s.ambiguityType).charCodeAt(0)) { +case 0: +return i; +case 97: +if (s.uniqueAxis == uniqueAxis || uniqueAxis == '\0') return i; +break; +case 111: +if (ext.length == 0) { +if (s.hmSymbolExt.equals("2")) return i; +} else if (s.hmSymbolExt.equalsIgnoreCase(ext)) return i; +break; +case 116: +if (ext.length == 0) { +if (s.axisChoice == 'h') return i; +} else if ((s.axisChoice + "").equalsIgnoreCase(ext)) return i; +break; +} + +break; +} +if (ext.length == 0) for (i = 0; i < lastIndex; i++) if ((s = JS.SpaceGroup.SG[i]).itaNumber.equals(nameExt)) return i; + +return -1; +}, "~S,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setJmolCode", +function(name){ +this.jmolId = name; +var parts = JU.PT.split(name, ":"); +this.itaNumber = parts[0]; +this.jmolIdExt = (parts.length == 1 ? "" : parts[1]); +this.ambiguityType = '\0'; +if (this.jmolIdExt.length > 0) { +var c = this.jmolIdExt.charAt(0); +if (this.jmolIdExt.equals("h") || this.jmolIdExt.equals("r")) { +this.ambiguityType = 't'; +this.axisChoice = this.jmolIdExt.charAt(0); +} else if (c == '1' || c == '2') { +this.ambiguityType = 'o'; +} else if (this.jmolIdExt.length <= 2 || this.jmolIdExt.length == 3 && c == '-') { +this.ambiguityType = 'a'; +this.uniqueAxis = this.jmolIdExt.charAt(c == '-' ? 1 : 0); +} else if (this.jmolIdExt.contains("-")) { +this.ambiguityType = '-'; +}}}, "~S"); +c$.determineUniqueAxis = Clazz.defineMethod(c$, "determineUniqueAxis", +function(a, b, c, alpha, beta, gamma){ +if (a == b) return (b == c ? '\0' : 'c'); +if (b == c) return 'a'; +if (c == a) return 'b'; +if (alpha == beta) return (beta == gamma ? '\0' : 'c'); +if (beta == gamma) return 'a'; +if (gamma == alpha) return 'b'; +return '\0'; +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "buildSelf", +function(sgLineData){ +var terms = JU.PT.split(sgLineData.toLowerCase(), ";"); +this.jmolId = terms[0].trim(); +this.setJmolCode(this.jmolId); +var isAlternate = this.jmolId.endsWith("*"); +if (isAlternate) this.jmolId = this.jmolId.substring(0, this.jmolId.length - 1); +this.itaIndex = terms[1].$replace('|', ';'); +var s = terms[2]; +this.itaTransform = (s.length == 0 || s.equals("--") ? "a,b,c" : JU.PT.rep(s, "ab", "a-b,a+b,c").$replace('|', ';')); +this.clegId = this.itaNumber + ":" + this.itaTransform; +if (terms[3].length > 0) { +this.nHallOperators = Integer.$valueOf(terms[3]); +var lst = JS.SpaceGroup.htByOpCount.get(this.nHallOperators); +if (lst == null) JS.SpaceGroup.htByOpCount.put(this.nHallOperators, lst = new JU.Lst()); +lst.addLast(this); +}this.crystalClass = JS.SpaceGroup.toCap(JU.PT.split(terms[4], "^")[0], 1); +var hm = terms[5]; +if (hm.endsWith("*")) hm = hm.substring(0, hm.length - 1); +this.setHMSymbol(hm); +var info; +if ("xyz".equals(terms[6])) { +info = this.hmSymbol; +this.hallSymbol = "" + this.latticeType + "?"; +} else { +this.hallSymbol = terms[6]; +if (this.hallSymbol.length > 1) this.hallSymbol = JS.SpaceGroup.toCap(this.hallSymbol, 2); +if (isAlternate) { +this.hallSymbolAlt = this.hallSymbol; +this.hallSymbol = JS.SpaceGroup.lastHallSymbol; +}info = this.itaNumber + this.hallSymbol; +if (this.itaNumber.charAt(0) != '0' && info.equals(JS.SpaceGroup.lastInfo)) { +isAlternate = true; +JS.SpaceGroup.ambiguousHMNames += this.hmSymbol + ";"; +}}JS.SpaceGroup.lastHallSymbol = this.hallSymbol; +JS.SpaceGroup.lastInfo = info; +this.name = "HM:" + this.hmSymbolFull + " " + (this.hallSymbol == null || this.hallSymbol === "?" ? "[" + this.hallSymbol + "]" : "") + " #" + this.itaIndex; +}, "~S"); +Clazz.defineMethod(c$, "setHMSymbol", +function(name){ +var pt = name.indexOf("#"); +if (pt >= 0) name = name.substring(0, pt).trim(); +this.hmSymbolFull = JS.SpaceGroup.toCap(name, 1); +this.latticeType = this.hmSymbolFull.charAt(0); +var parts = JU.PT.split(this.hmSymbolFull, ":"); +this.hmSymbol = parts[0]; +this.hmSymbolExt = (parts.length == 1 ? "" : parts[1]); +pt = this.hmSymbol.indexOf(" -3"); +if (pt >= 1) if ("admn".indexOf(this.hmSymbol.charAt(pt - 1)) >= 0) { +this.hmSymbolAlternative = (this.hmSymbol.substring(0, pt) + " 3" + this.hmSymbol.substring(pt + 3)).toLowerCase(); +}this.hmSymbolAbbr = JU.PT.rep(this.hmSymbol, " ", ""); +this.hmSymbolAbbrShort = (this.hmSymbol.length > 3 ? JU.PT.rep(this.hmSymbol, " 1", "") : this.hmSymbolAbbr); +this.hmSymbolAbbrShort = JU.PT.rep(this.hmSymbolAbbrShort, " ", ""); +}, "~S"); +c$.toCap = Clazz.defineMethod(c$, "toCap", +function(s, n){ +return s.substring(0, n).toUpperCase() + s.substring(n); +}, "~S,~N"); +Clazz.defineMethod(c$, "toString", +function(){ +return this.asString(); +}); +Clazz.defineMethod(c$, "asString", +function(){ +return (this.strName == null ? (this.strName = (this.jmolId == null || this.jmolId.equals("0") ? this.name : this.jmolId + " HM:" + this.hmSymbolFull + " #" + this.clegId)) : this.strName); +}); +Clazz.defineMethod(c$, "getDisplayName", +function(){ +if (this.displayName == null) { +var name = null; +if (this.jmolId == null || "--".equals(this.hallSymbol)) { +name = ""; +if (this.hmSymbolFull != null && !"--".equals(this.hmSymbol)) name = this.hmSymbolFull + " #"; +} else if (!this.jmolId.equals("0")) { +name = this.hmSymbolFull + " #"; +}if (name == null) { +name = "[" + this.hallSymbol + "]"; +} else { +name += this.clegId; +}if (name.endsWith("2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c")) name = JU.PT.rep(name, "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c", "r"); +if (name.indexOf("-- [--]") >= 0) name = ""; +if (name.endsWith(":a,b,c")) name = name.substring(0, name.length - 6); +this.displayName = name; +}return this.displayName; +}); +c$.getSpaceGroups = Clazz.defineMethod(c$, "getSpaceGroups", +function(){ +if (JS.SpaceGroup.SG == null) { +var n = JS.SpaceGroup.STR_SG.length; +JS.SpaceGroup.nameToGroup = new java.util.Hashtable(); +var defs = new Array(n); +for (var i = 0; i < n; i++) { +defs[i] = new JS.SpaceGroup(i, JS.SpaceGroup.STR_SG[i], true); +JS.SpaceGroup.nameToGroup.put(defs[i].jmolId, defs[i]); +} +System.out.println("SpaceGroup - " + JS.SpaceGroup.nSG + " settings generated"); +JS.SpaceGroup.STR_SG = null; +JS.SpaceGroup.SG = defs; +}return JS.SpaceGroup.SG; +}); +Clazz.defineMethod(c$, "addLatticeVectors", +function(lattvecs){ +if (this.latticeOp >= 0 || lattvecs.size() == 0) return false; +var nOps = this.latticeOp = this.operationCount; +var isMagnetic = (lattvecs.get(0).length == this.modDim + 4); +var magRev = -2; +for (var j = 0; j < lattvecs.size(); j++) { +var data = lattvecs.get(j); +if (isMagnetic) { +magRev = Clazz.floatToInt(data[this.modDim + 3]); +data = JU.AU.arrayCopyF(data, this.modDim + 3); +}if (data.length > this.modDim + 3) return false; +for (var i = 0; i < nOps; i++) { +var newOp = new JS.SymmetryOperation(null, 0, true); +newOp.modDim = this.modDim; +var op = this.operations[i]; +newOp.divisor = op.divisor; +newOp.linearRotTrans = JU.AU.arrayCopyF(op.linearRotTrans, -1); +newOp.setFromMatrix(data, false); +if (magRev != -2) newOp.setTimeReversal(op.timeReversal * magRev); +newOp.xyzOriginal = newOp.xyz; +this.addOp(newOp, newOp.xyz, true); +} +} +return true; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getSiteMultiplicity", +function(pt, unitCell){ +var n = this.finalOperations.length; +var pts = new JU.Lst(); +for (var i = n; --i >= 0; ) { +var pt1 = JU.P3.newP(pt); +this.finalOperations[i].rotTrans(pt1); +unitCell.unitize(pt1); +for (var j = pts.size(); --j >= 0; ) { +var pt0 = pts.get(j); +if (pt1.distanceSquared(pt0) < 1.96E-6) { +pt1 = null; +break; +}} +if (pt1 != null) pts.addLast(pt1); +} +return Clazz.doubleToInt(n / pts.size()); +}, "JU.P3,JS.UnitCell"); +Clazz.defineMethod(c$, "setName", +function(name){ +this.name = name; +if (name != null && name.startsWith("HM:")) { +this.setHMSymbol(name.substring(3)); +}this.strName = this.displayName = null; +}, "~S"); +Clazz.defineMethod(c$, "getNameType", +function(type, uc){ +var ret = null; +if (type.equals("HM")) { +ret = this.hmSymbol; +} else if (type.equals("ITA")) { +ret = this.itaNumber; +} else if (type.equals("Hall")) { +ret = this.hallSymbol; +} else { +ret = "?"; +}if (ret != null) return ret; +if (this.info == null) this.info = JS.SpaceGroup.getInfo(this, this.hmSymbol, uc.getUnitCellParams(), true, false); +if ((typeof(this.info)=='string')) return null; +var map = this.info; +var v = map.get(type.equals("Hall") ? "HallSymbol" : type.equals("ITA") ? "ita" : "HermannMauguinSymbol"); +return (v == null ? null : v.toString()); +}, "~S,J.api.SymmetryInterface"); +c$.getSpaceGroupFromJmolClegOrITA = Clazz.defineMethod(c$, "getSpaceGroupFromJmolClegOrITA", +function(name){ +var n = JS.SpaceGroup.SG.length; +if (name.indexOf(":") >= 0) { +if (name.indexOf(",") >= 0) { +for (var i = 0; i < n; i++) if (name.equals(JS.SpaceGroup.SG[i].clegId)) return JS.SpaceGroup.SG[i]; + +} else { +for (var i = 0; i < n; i++) if (name.equals(JS.SpaceGroup.SG[i].jmolId)) return JS.SpaceGroup.SG[i]; + +}} else if (name.indexOf(".") >= 0) { +for (var i = 0; i < n; i++) if (name.equals(JS.SpaceGroup.SG[i].itaIndex)) return JS.SpaceGroup.SG[i]; + +} else { +for (var i = 0; i < n; i++) if (name.equals(JS.SpaceGroup.SG[i].itaNumber)) return JS.SpaceGroup.SG[i]; + +}return null; +}, "~S"); +Clazz.defineMethod(c$, "checkHallOperators", +function(){ +if (this.nHallOperators != null && this.nHallOperators.intValue() != this.operationCount) { +if (this.hallInfo == null || this.hallInfo.nRotations > 0) { +this.generateAllOperators(this.hallInfo); +} else { +this.init(false); +this.doNormalize = false; +JS.SpaceGroup.transformSpaceGroup(this, JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(this.itaNumber), null, this.itaTransform, null); +this.hallInfo = null; +}}}); +Clazz.defineMethod(c$, "getOpsCtr", +function(transform){ +var sg = JS.SpaceGroup.getNull(true, true, false); +JS.SpaceGroup.transformSpaceGroup(sg, this, null, "!" + transform, null); +sg.setFinalOperations(); +var sg2 = JS.SpaceGroup.getNull(true, false, false); +JS.SpaceGroup.transformSpaceGroup(sg2, sg, null, transform, null); +sg2.setFinalOperations(); +return sg2.finalOperations; +}, "~S"); +c$.getSpaceGroupFromIndex = Clazz.defineMethod(c$, "getSpaceGroupFromIndex", +function(i){ +return (JS.SpaceGroup.SG != null && i >= 0 && i < JS.SpaceGroup.SG.length ? JS.SpaceGroup.SG[i] : null); +}, "~N"); +Clazz.defineMethod(c$, "setITATableNames", +function(jmolId, sg, set, tr){ +this.itaNumber = sg; +this.itaIndex = (tr != null ? sg + ":" + tr : set.indexOf(".") >= 0 ? set : sg + "." + set); +this.itaTransform = tr; +this.clegId = sg + ":" + tr; +this.jmolId = jmolId; +if (jmolId == null) { +this.info = this.dumpInfoObj(); +} else { +this.setJmolCode(jmolId); +}}, "~S,~S,~S,~S"); +c$.transformCoords = Clazz.defineMethod(c$, "transformCoords", +function(coord, trmInv, centering, t, v, coordt){ +if (coordt == null) coordt = new JU.Lst(); +for (var j = 0, n = coord.size(); j < n; j++) { +var xyz = JS.SymmetryOperation.transformStr(coord.get(j), null, trmInv, t, v, null, centering, true, true); +if (!coordt.contains(xyz)) coordt.addLast(xyz); +} +return coordt; +}, "JU.Lst,JU.M4,JU.P3,JU.M4,~A,JU.Lst"); +c$.getTransformRange = Clazz.defineMethod(c$, "getTransformRange", +function(trm){ +var t = Clazz.newFloatArray (2, 3, 0); +var row = Clazz.newFloatArray (4, 0); +for (var i = 0; i < 3; i++) { +trm.getRow(i, row); +for (var j = 0; j < 3; j++) { +var v = row[j]; +if (v < 0) { +t[0][i] += -row[j]; +} else if (v > 0) { +t[1][i] += row[j]; +}} +} +var ignore = true; +for (var i = 0, dz = 0; i < 2; i++, dz++) { +for (var j = 0; j < 3; j++) { +var d = Clazz.doubleToInt(Math.ceil(t[i][j])); +if (d > dz) ignore = false; +t[i][j] = (i == 0 ? -d : d); +} +} +return (ignore ? null : t); +}, "JU.M4"); +c$.getTransformedCentering = Clazz.defineMethod(c$, "getTransformedCentering", +function(trm, cent){ +var trmInv = JU.M4.newM4(trm); +trmInv.invert(); +var n0 = cent.size(); +var p = new JU.P3(); +var c = JS.SpaceGroup.getTransformRange(trm); +if (c != null) { +for (var i = Clazz.floatToInt(c[0][0]); i < c[1][0]; i++) { +for (var j = Clazz.floatToInt(c[0][1]); j <= c[1][1]; j++) { +for (var k = Clazz.floatToInt(c[0][2]); k <= c[1][2]; k++) { +p.set(i, j, k); +trmInv.rotTrans(p); +if (p.length() % 1 != 0) { +p.x = p.x % 1; +p.y = p.y % 1; +p.z = p.z % 1; +var s = JS.SymmetryOperation.norm3(p); +if (!s.equals("0,0,0") && !cent.contains(s)) cent.addLast(s); +}} +} +} +var n = cent.size(); +if (n > 0) { +var a = new Array(n); +cent.toArray(a); +java.util.Arrays.sort(a); +cent.clear(); +for (var i = 0; i < n; i++) cent.addLast(a[i]); + +}}for (var i = n0; --i >= 0; ) { +JS.SymmetryOperation.toPoint(cent.get(i), p); +trmInv.rotTrans(p); +if (p.x % 1 == 0 && p.y % 1 == 0 && p.z % 1 == 0) cent.remove(i); +} +return trmInv; +}, "JU.M4,JU.Lst"); +c$.fillMoreData = Clazz.defineMethod(c$, "fillMoreData", +function(map, clegId, itno, its0){ +var pt = clegId.indexOf(':'); +var transform = (pt < 0 ? "a,b,c" : clegId.substring(pt + 1)); +var trm = JS.UnitCell.toTrm(transform, null); +var gp0 = its0.get("gp"); +var wpos0 = its0.get("wpos"); +var cent0 = wpos0.get("cent"); +var cent = new JU.Lst(); +if (cent0 != null) cent.addAll(cent0); +var nctr0 = cent.size(); +var trmInv = JS.SpaceGroup.getTransformedCentering(trm, cent); +var nctr = cent.size(); +var pos0 = wpos0.get("pos"); +var pos = new JU.Lst(); +var t = new JU.M4(); +var v = Clazz.newFloatArray (16, 0); +var f = (nctr + 1) / (nctr0 + 1); +for (var i = 0, n = pos0.size(); i < n; i++) { +var p0 = pos0.get(i); +var p = new java.util.Hashtable(); +p.putAll(p0); +var coord = p0.get("coord"); +if (coord != null) { +coord = JS.SpaceGroup.transformCoords(coord, trmInv, null, t, v, null); +p.put("coord", coord); +}var mult = (p0.get("mult")).intValue(); +p.put("mult", Integer.$valueOf(Clazz.floatToInt(mult * f))); +pos.addLast(p); +} +var gp = new JU.Lst(); +JS.SpaceGroup.transformCoords(gp0, trmInv, null, t, v, gp); +if (nctr > 0) { +for (var i = 0; i < nctr; i++) { +var p = new JU.P3(); +JS.SpaceGroup.transformCoords(gp0, trmInv, JS.SymmetryOperation.toPoint(cent.get(i), p), t, v, gp); +} +}if (map == null) { +map = new java.util.Hashtable(); +map.put("sg", Integer.$valueOf(itno)); +map.put("trm", transform); +map.put("clegId", itno + ":" + transform); +map.put("det", Float.$valueOf(trm.determinant3())); +} else { +map.remove("more"); +}var wpos = new java.util.Hashtable(); +if (nctr > 0) wpos.put("cent", cent); +wpos.put("pos", pos); +map.put("wpos", wpos); +wpos.put("gp", gp); +gp = new JU.Lst(); +var base = JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(clegId); +var sg = JS.SpaceGroup.transformSpaceGroup(null, base, gp0, transform, new JU.M4()); +for (var i = 0, n = sg.getOperationCount(); i < n; i++) { +gp.addLast((sg.getOperation(i)).xyz); +} +map.put("gp", gp); +return map; +}, "java.util.Map,~S,~N,java.util.Map"); +c$.transformSpaceGroup = Clazz.defineMethod(c$, "transformSpaceGroup", +function(sg, base, genPos, transform, trm){ +if (genPos == null) { +base.setFinalOperations(); +genPos = new JU.Lst(); +for (var i = 0, n = base.getOperationCount(); i < n; i++) { +genPos.addLast(base.getXyz(i, false)); +} +}var normalize = (sg == null || sg.doNormalize); +var xyzList = JS.SpaceGroup.addTransformXYZList(sg, genPos, transform, trm, normalize); +if (sg == null) { +return JS.SpaceGroup.createITASpaceGroup(xyzList, base); +}if (transform == null) { +sg.setFrom(base, true); +} else { +sg.setITATableNames(sg.jmolId, sg.itaNumber, "1", transform); +}return sg; +}, "JS.SpaceGroup,JS.SpaceGroup,JU.Lst,~S,JU.M4"); +c$.createITASpaceGroup = Clazz.defineMethod(c$, "createITASpaceGroup", +function(genpos, base){ +var sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;--", true); +sg.doNormalize = false; +for (var i = 0, n = genpos.size(); i < n; i++) { +var op = new JS.SymmetryOperation(null, i, false); +var xyz = genpos.get(i); +op.setMatrixFromXYZ(xyz, 0, false); +sg.addOp(op, xyz, false); +} +if (base != null) sg.setFrom(base, true); +return sg; +}, "JU.Lst,JS.SpaceGroup"); +c$.addTransformXYZList = Clazz.defineMethod(c$, "addTransformXYZList", +function(sg, genPos, transform, trm, normalize){ +var trmInv = null; +var t = null; +var v = null; +if (transform != null) { +if (transform.equals("r")) transform = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"; +trm = JS.UnitCell.toTrm(transform, trm); +trmInv = JU.M4.newM4(trm); +trmInv.invert(); +v = Clazz.newFloatArray (16, 0); +t = new JU.M4(); +}var xyzList = JS.SpaceGroup.addTransformedOperations(sg, genPos, trm, trmInv, t, v, sg == null ? new JU.Lst() : null, null, normalize); +if (sg == null) return xyzList; +var c = JS.SpaceGroup.getTransformRange(trm); +if (c != null) { +var p = new JU.P3(); +for (var i = Clazz.floatToInt(c[0][0]); i < c[1][0]; i++) { +for (var j = Clazz.floatToInt(c[0][1]); j <= c[1][1]; j++) { +for (var k = Clazz.floatToInt(c[0][2]); k <= c[1][2]; k++) { +if (i == 0 && j == 0 && k == 0) continue; +p.set(i, j, k); +JS.SpaceGroup.addTransformedOperations(sg, genPos, trm, trmInv, t, v, null, p, normalize); +} +} +} +}return null; +}, "JS.SpaceGroup,JU.Lst,~S,JU.M4,~B"); +c$.addTransformedOperations = Clazz.defineMethod(c$, "addTransformedOperations", +function(sg, genPos, trm, trmInv, t, v, retGenPos, centering, normalize){ +if (sg != null) sg.latticeOp = 0; +for (var i = 0, c = genPos.size(); i < c; i++) { +var xyz = genPos.get(i); +if (trm != null && (i > 0 || centering != null)) { +xyz = JS.SymmetryOperation.transformStr(xyz, trm, trmInv, t, v, centering, null, normalize, false); +}if (sg == null) { +retGenPos.addLast(xyz); +} else { +sg.addOperation(xyz, 0, false); +}} +return retGenPos; +}, "JS.SpaceGroup,JU.Lst,JU.M4,JU.M4,JU.M4,~A,JU.Lst,JU.P3,~B"); +c$.canonicalSeitzList = null; +c$.sgIndex = -1; +c$.lastInfo = null; +c$.ambiguousHMNames = ""; +c$.lastHallSymbol = ""; +c$.SG = null; +c$.htByOpCount = new java.util.Hashtable(); +c$.nameToGroup = null; +c$.nSG = 0; +c$.STR_SG = Clazz.newArray(-1, ["1;1.1;;1;c1^1;p 1;p 1", "2;2.1;;2;ci^1;p -1;-p 1", "3:b;3.1;;2;c2^1;p 1 2 1;p 2y", "3:b;3.1;;2;c2^1;p 2;p 2y", "3:c;3.2;c,a,b;2;c2^1;p 1 1 2;p 2", "3:a;3.3;b,c,a;2;c2^1;p 2 1 1;p 2x", "4:b;4.1;;2;c2^2;p 1 21 1;p 2yb", "4:b;4.1;;2;c2^2;p 21;p 2yb", "4:b*;4.1;;2;c2^2;p 1 21 1*;p 2y1", "4:c;4.2;c,a,b;2;c2^2;p 1 1 21;p 2c", "4:c*;4.2;c,a,b;2;c2^2;p 1 1 21*;p 21", "4:a;4.3;b,c,a;2;c2^2;p 21 1 1;p 2xa", "4:a*;4.3;b,c,a;2;c2^2;p 21 1 1*;p 2x1", "5:b1;5.1;;4;c2^3;c 1 2 1;c 2y", "5:b1;5.1;;4;c2^3;c 2;c 2y", "5:b2;5.2;-a-c,b,a;4;c2^3;a 1 2 1;a 2y", "5:b3;5.3;c,b,-a-c;4;c2^3;i 1 2 1;i 2y", "5:c1;5.4;c,a,b;4;c2^3;a 1 1 2;a 2", "5:c2;5.5;a,-a-c,b;4;c2^3;b 1 1 2;b 2", "5:c3;5.6;-a-c,c,b;4;c2^3;i 1 1 2;i 2", "5:a1;5.7;b,c,a;4;c2^3;b 2 1 1;b 2x", "5:a2;5.8;b,a,-a-c;4;c2^3;c 2 1 1;c 2x", "5:a3;5.9;b,-a-c,c;4;c2^3;i 2 1 1;i 2x", "6:b;6.1;;2;cs^1;p 1 m 1;p -2y", "6:b;6.1;;2;cs^1;p m;p -2y", "6:c;6.2;c,a,b;2;cs^1;p 1 1 m;p -2", "6:a;6.3;b,c,a;2;cs^1;p m 1 1;p -2x", "7:b1;7.1;;2;cs^2;p 1 c 1;p -2yc", "7:b1;7.1;;2;cs^2;p c;p -2yc", "7:b2;7.2;-a-c,b,a;2;cs^2;p 1 n 1;p -2yac", "7:b2;7.2;-a-c,b,a;2;cs^2;p n;p -2yac", "7:b3;7.3;c,b,-a-c;2;cs^2;p 1 a 1;p -2ya", "7:b3;7.3;c,b,-a-c;2;cs^2;p a;p -2ya", "7:c1;7.4;c,a,b;2;cs^2;p 1 1 a;p -2a", "7:c2;7.5;a,-a-c,b;2;cs^2;p 1 1 n;p -2ab", "7:c3;7.6;-a-c,c,b;2;cs^2;p 1 1 b;p -2b", "7:a1;7.7;b,c,a;2;cs^2;p b 1 1;p -2xb", "7:a2;7.8;b,a,-a-c;2;cs^2;p n 1 1;p -2xbc", "7:a3;7.9;b,-a-c,c;2;cs^2;p c 1 1;p -2xc", "8:b1;8.1;;4;cs^3;c 1 m 1;c -2y", "8:b1;8.1;;4;cs^3;c m;c -2y", "8:b2;8.2;-a-c,b,a;4;cs^3;a 1 m 1;a -2y", "8:b3;8.3;c,b,-a-c;4;cs^3;i 1 m 1;i -2y", "8:b3;8.3;c,b,-a-c;4;cs^3;i m;i -2y", "8:c1;8.4;c,a,b;4;cs^3;a 1 1 m;a -2", "8:c2;8.5;a,-a-c,b;4;cs^3;b 1 1 m;b -2", "8:c3;8.6;-a-c,c,b;4;cs^3;i 1 1 m;i -2", "8:a1;8.7;b,c,a;4;cs^3;b m 1 1;b -2x", "8:a2;8.8;b,a,-a-c;4;cs^3;c m 1 1;c -2x", "8:a3;8.9;b,-a-c,c;4;cs^3;i m 1 1;i -2x", "9:b1;9.1;;4;cs^4;c 1 c 1;c -2yc", "9:b1;9.1;;4;cs^4;c c;c -2yc", "9:b2;9.2;-a-c,b,a;4;cs^4;a 1 n 1;a -2yab", "9:b3;9.3;c,b,-a-c;4;cs^4;i 1 a 1;i -2ya", "9:-b1;9.4;c,-b,a;4;cs^4;a 1 a 1;a -2ya", "9:-b2;9.5;a,-b,-a-c;4;cs^4;c 1 n 1;c -2yac", "9:-b3;9.6;-a-c,-b,c;4;cs^4;i 1 c 1;i -2yc", "9:c1;9.7;c,a,b;4;cs^4;a 1 1 a;a -2a", "9:c2;9.8;a,-a-c,b;4;cs^4;b 1 1 n;b -2ab", "9:c3;9.9;-a-c,c,b;4;cs^4;i 1 1 b;i -2b", "9:-c1;9.10;a,c,-b;4;cs^4;b 1 1 b;b -2b", "9:-c2;9.11;-a-c,a,-b;4;cs^4;a 1 1 n;a -2ab", "9:-c3;9.12;c,-a-c,-b;4;cs^4;i 1 1 a;i -2a", "9:a1;9.13;b,c,a;4;cs^4;b b 1 1;b -2xb", "9:a2;9.14;b,a,-a-c;4;cs^4;c n 1 1;c -2xac", "9:a3;9.15;b,-a-c,c;4;cs^4;i c 1 1;i -2xc", "9:-a1;9.16;-b,a,c;4;cs^4;c c 1 1;c -2xc", "9:-a2;9.17;-b,-a-c,a;4;cs^4;b n 1 1;b -2xab", "9:-a3;9.18;-b,c,-a-c;4;cs^4;i b 1 1;i -2xb", "10:b;10.1;;4;c2h^1;p 1 2/m 1;-p 2y", "10:b;10.1;;4;c2h^1;p 2/m;-p 2y", "10:c;10.2;c,a,b;4;c2h^1;p 1 1 2/m;-p 2", "10:a;10.3;b,c,a;4;c2h^1;p 2/m 1 1;-p 2x", "11:b;11.1;;4;c2h^2;p 1 21/m 1;-p 2yb", "11:b;11.1;;4;c2h^2;p 21/m;-p 2yb", "11:b*;11.1;;4;c2h^2;p 1 21/m 1*;-p 2y1", "11:c;11.2;c,a,b;4;c2h^2;p 1 1 21/m;-p 2c", "11:c*;11.2;c,a,b;4;c2h^2;p 1 1 21/m*;-p 21", "11:a;11.3;b,c,a;4;c2h^2;p 21/m 1 1;-p 2xa", "11:a*;11.3;b,c,a;4;c2h^2;p 21/m 1 1*;-p 2x1", "12:b1;12.1;;8;c2h^3;c 1 2/m 1;-c 2y", "12:b1;12.1;;8;c2h^3;c 2/m;-c 2y", "12:b2;12.2;-a-c,b,a;8;c2h^3;a 1 2/m 1;-a 2y", "12:b3;12.3;c,b,-a-c;8;c2h^3;i 1 2/m 1;-i 2y", "12:b3;12.3;c,b,-a-c;8;c2h^3;i 2/m;-i 2y", "12:c1;12.4;c,a,b;8;c2h^3;a 1 1 2/m;-a 2", "12:c2;12.5;a,-a-c,b;8;c2h^3;b 1 1 2/m;-b 2", "12:c3;12.6;-a-c,c,b;8;c2h^3;i 1 1 2/m;-i 2", "12:a1;12.7;b,c,a;8;c2h^3;b 2/m 1 1;-b 2x", "12:a2;12.8;b,a,-a-c;8;c2h^3;c 2/m 1 1;-c 2x", "12:a3;12.9;b,-a-c,c;8;c2h^3;i 2/m 1 1;-i 2x", "13:b1;13.1;;4;c2h^4;p 1 2/c 1;-p 2yc", "13:b1;13.1;;4;c2h^4;p 2/c;-p 2yc", "13:b2;13.2;-a-c,b,a;4;c2h^4;p 1 2/n 1;-p 2yac", "13:b2;13.2;-a-c,b,a;4;c2h^4;p 2/n;-p 2yac", "13:b3;13.3;c,b,-a-c;4;c2h^4;p 1 2/a 1;-p 2ya", "13:b3;13.3;c,b,-a-c;4;c2h^4;p 2/a;-p 2ya", "13:c1;13.4;c,a,b;4;c2h^4;p 1 1 2/a;-p 2a", "13:c2;13.5;a,-a-c,b;4;c2h^4;p 1 1 2/n;-p 2ab", "13:c3;13.6;-a-c,c,b;4;c2h^4;p 1 1 2/b;-p 2b", "13:a1;13.7;b,c,a;4;c2h^4;p 2/b 1 1;-p 2xb", "13:a2;13.8;b,a,-a-c;4;c2h^4;p 2/n 1 1;-p 2xbc", "13:a3;13.9;b,-a-c,c;4;c2h^4;p 2/c 1 1;-p 2xc", "14:b1;14.1;;4;c2h^5;p 1 21/c 1;-p 2ybc", "14:b1;14.1;;4;c2h^5;p 21/c;-p 2ybc", "14:b2;14.2;-a-c,b,a;4;c2h^5;p 1 21/n 1;-p 2yn", "14:b2;14.2;-a-c,b,a;4;c2h^5;p 21/n;-p 2yn", "14:b3;14.3;c,b,-a-c;4;c2h^5;p 1 21/a 1;-p 2yab", "14:b3;14.3;c,b,-a-c;4;c2h^5;p 21/a;-p 2yab", "14:c1;14.4;c,a,b;4;c2h^5;p 1 1 21/a;-p 2ac", "14:c2;14.5;a,-a-c,b;4;c2h^5;p 1 1 21/n;-p 2n", "14:c3;14.6;-a-c,c,b;4;c2h^5;p 1 1 21/b;-p 2bc", "14:a1;14.7;b,c,a;4;c2h^5;p 21/b 1 1;-p 2xab", "14:a2;14.8;b,a,-a-c;4;c2h^5;p 21/n 1 1;-p 2xn", "14:a3;14.9;b,-a-c,c;4;c2h^5;p 21/c 1 1;-p 2xac", "15:b1;15.1;;8;c2h^6;c 1 2/c 1;-c 2yc", "15:b1;15.1;;8;c2h^6;c 2/c;-c 2yc", "15:b2;15.2;-a-c,b,a;8;c2h^6;a 1 2/n 1;-a 2yab", "15:b3;15.3;c,b,-a-c;8;c2h^6;i 1 2/a 1;-i 2ya", "15:b3;15.3;c,b,-a-c;8;c2h^6;i 2/a;-i 2ya", "15:-b1;15.4;c,-b,a;8;c2h^6;a 1 2/a 1;-a 2ya", "15:-b2;15.5;a,-b,-a-c;8;c2h^6;c 1 2/n 1;-c 2yac", "15:-b2;15.5;a,-b,-a-c;8;c2h^6;c 2/n;-c 2yac", "15:-b3;15.6;-a-c,-b,c;8;c2h^6;i 1 2/c 1;-i 2yc", "15:-b3;15.6;-a-c,-b,c;8;c2h^6;i 2/c;-i 2yc", "15:c1;15.7;c,a,b;8;c2h^6;a 1 1 2/a;-a 2a", "15:c2;15.8;a,-a-c,b;8;c2h^6;b 1 1 2/n;-b 2ab", "15:c3;15.9;-a-c,c,b;8;c2h^6;i 1 1 2/b;-i 2b", "15:-c1;15.10;a,c,-b;8;c2h^6;b 1 1 2/b;-b 2b", "15:-c2;15.11;-a-c,a,-b;8;c2h^6;a 1 1 2/n;-a 2ab", "15:-c3;15.12;c,-a-c,-b;8;c2h^6;i 1 1 2/a;-i 2a", "15:a1;15.13;b,c,a;8;c2h^6;b 2/b 1 1;-b 2xb", "15:a2;15.14;b,a,-a-c;8;c2h^6;c 2/n 1 1;-c 2xac", "15:a3;15.15;b,-a-c,c;8;c2h^6;i 2/c 1 1;-i 2xc", "15:-a1;15.16;-b,a,c;8;c2h^6;c 2/c 1 1;-c 2xc", "15:-a2;15.17;-b,-a-c,a;8;c2h^6;b 2/n 1 1;-b 2xab", "15:-a3;15.18;-b,c,-a-c;8;c2h^6;i 2/b 1 1;-i 2xb", "16;16.1;;4;d2^1;p 2 2 2;p 2 2", "17;17.1;;4;d2^2;p 2 2 21;p 2c 2", "17*;17.1;;4;d2^2;p 2 2 21*;p 21 2", "17:cab;17.2;c,a,b;4;d2^2;p 21 2 2;p 2a 2a", "17:bca;17.3;b,c,a;4;d2^2;p 2 21 2;p 2 2b", "18;18.1;;4;d2^3;p 21 21 2;p 2 2ab", "18:cab;18.2;c,a,b;4;d2^3;p 2 21 21;p 2bc 2", "18:bca;18.3;b,c,a;4;d2^3;p 21 2 21;p 2ac 2ac", "19;19.1;;4;d2^4;p 21 21 21;p 2ac 2ab", "20;20.1;;8;d2^5;c 2 2 21;c 2c 2", "20*;20.1;;8;d2^5;c 2 2 21*;c 21 2", "20:cab;20.2;c,a,b;8;d2^5;a 21 2 2;a 2a 2a", "20:cab*;20.2;c,a,b;8;d2^5;a 21 2 2*;a 2a 21", "20:bca;20.3;b,c,a;8;d2^5;b 2 21 2;b 2 2b", "21;21.1;;8;d2^6;c 2 2 2;c 2 2", "21:cab;21.2;c,a,b;8;d2^6;a 2 2 2;a 2 2", "21:bca;21.3;b,c,a;8;d2^6;b 2 2 2;b 2 2", "22;22.1;;16;d2^7;f 2 2 2;f 2 2", "23;23.1;;8;d2^8;i 2 2 2;i 2 2", "24;24.1;;8;d2^9;i 21 21 21;i 2b 2c", "25;25.1;;4;c2v^1;p m m 2;p 2 -2", "25:cab;25.2;c,a,b;4;c2v^1;p 2 m m;p -2 2", "25:bca;25.3;b,c,a;4;c2v^1;p m 2 m;p -2 -2", "26;26.1;;4;c2v^2;p m c 21;p 2c -2", "26*;26.1;;4;c2v^2;p m c 21*;p 21 -2", "26:ba-c;26.2;b,a,-c;4;c2v^2;p c m 21;p 2c -2c", "26:ba-c*;26.2;b,a,-c;4;c2v^2;p c m 21*;p 21 -2c", "26:cab;26.3;c,a,b;4;c2v^2;p 21 m a;p -2a 2a", "26:-cba;26.4;-c,b,a;4;c2v^2;p 21 a m;p -2 2a", "26:bca;26.5;b,c,a;4;c2v^2;p b 21 m;p -2 -2b", "26:a-cb;26.6;a,-c,b;4;c2v^2;p m 21 b;p -2b -2", "27;27.1;;4;c2v^3;p c c 2;p 2 -2c", "27:cab;27.2;c,a,b;4;c2v^3;p 2 a a;p -2a 2", "27:bca;27.3;b,c,a;4;c2v^3;p b 2 b;p -2b -2b", "28;28.1;;4;c2v^4;p m a 2;p 2 -2a", "28*;28.1;;4;c2v^4;p m a 2*;p 2 -21", "28:ba-c;28.2;b,a,-c;4;c2v^4;p b m 2;p 2 -2b", "28:cab;28.3;c,a,b;4;c2v^4;p 2 m b;p -2b 2", "28:-cba;28.4;-c,b,a;4;c2v^4;p 2 c m;p -2c 2", "28:-cba*;28.4;-c,b,a;4;c2v^4;p 2 c m*;p -21 2", "28:bca;28.5;b,c,a;4;c2v^4;p c 2 m;p -2c -2c", "28:a-cb;28.6;a,-c,b;4;c2v^4;p m 2 a;p -2a -2a", "29;29.1;;4;c2v^5;p c a 21;p 2c -2ac", "29:ba-c;29.2;b,a,-c;4;c2v^5;p b c 21;p 2c -2b", "29:cab;29.3;c,a,b;4;c2v^5;p 21 a b;p -2b 2a", "29:-cba;29.4;-c,b,a;4;c2v^5;p 21 c a;p -2ac 2a", "29:bca;29.5;b,c,a;4;c2v^5;p c 21 b;p -2bc -2c", "29:a-cb;29.6;a,-c,b;4;c2v^5;p b 21 a;p -2a -2ab", "30;30.1;;4;c2v^6;p n c 2;p 2 -2bc", "30:ba-c;30.2;b,a,-c;4;c2v^6;p c n 2;p 2 -2ac", "30:cab;30.3;c,a,b;4;c2v^6;p 2 n a;p -2ac 2", "30:-cba;30.4;-c,b,a;4;c2v^6;p 2 a n;p -2ab 2", "30:bca;30.5;b,c,a;4;c2v^6;p b 2 n;p -2ab -2ab", "30:a-cb;30.6;a,-c,b;4;c2v^6;p n 2 b;p -2bc -2bc", "31;31.1;;4;c2v^7;p m n 21;p 2ac -2", "31:ba-c;31.2;b,a,-c;4;c2v^7;p n m 21;p 2bc -2bc", "31:cab;31.3;c,a,b;4;c2v^7;p 21 m n;p -2ab 2ab", "31:-cba;31.4;-c,b,a;4;c2v^7;p 21 n m;p -2 2ac", "31:bca;31.5;b,c,a;4;c2v^7;p n 21 m;p -2 -2bc", "31:a-cb;31.6;a,-c,b;4;c2v^7;p m 21 n;p -2ab -2", "32;32.1;;4;c2v^8;p b a 2;p 2 -2ab", "32:cab;32.2;c,a,b;4;c2v^8;p 2 c b;p -2bc 2", "32:bca;32.3;b,c,a;4;c2v^8;p c 2 a;p -2ac -2ac", "33;33.1;;4;c2v^9;p n a 21;p 2c -2n", "33*;33.1;;4;c2v^9;p n a 21*;p 21 -2n", "33:ba-c;33.2;b,a,-c;4;c2v^9;p b n 21;p 2c -2ab", "33:ba-c*;33.2;b,a,-c;4;c2v^9;p b n 21*;p 21 -2ab", "33:cab;33.3;c,a,b;4;c2v^9;p 21 n b;p -2bc 2a", "33:cab*;33.3;c,a,b;4;c2v^9;p 21 n b*;p -2bc 21", "33:-cba;33.4;-c,b,a;4;c2v^9;p 21 c n;p -2n 2a", "33:-cba*;33.4;-c,b,a;4;c2v^9;p 21 c n*;p -2n 21", "33:bca;33.5;b,c,a;4;c2v^9;p c 21 n;p -2n -2ac", "33:a-cb;33.6;a,-c,b;4;c2v^9;p n 21 a;p -2ac -2n", "34;34.1;;4;c2v^10;p n n 2;p 2 -2n", "34:cab;34.2;c,a,b;4;c2v^10;p 2 n n;p -2n 2", "34:bca;34.3;b,c,a;4;c2v^10;p n 2 n;p -2n -2n", "35;35.1;;8;c2v^11;c m m 2;c 2 -2", "35:cab;35.2;c,a,b;8;c2v^11;a 2 m m;a -2 2", "35:bca;35.3;b,c,a;8;c2v^11;b m 2 m;b -2 -2", "36;36.1;;8;c2v^12;c m c 21;c 2c -2", "36*;36.1;;8;c2v^12;c m c 21*;c 21 -2", "36:ba-c;36.2;b,a,-c;8;c2v^12;c c m 21;c 2c -2c", "36:ba-c*;36.2;b,a,-c;8;c2v^12;c c m 21*;c 21 -2c", "36:cab;36.3;c,a,b;8;c2v^12;a 21 m a;a -2a 2a", "36:cab*;36.3;c,a,b;8;c2v^12;a 21 m a*;a -2a 21", "36:-cba;36.4;-c,b,a;8;c2v^12;a 21 a m;a -2 2a", "36:-cba*;36.4;-c,b,a;8;c2v^12;a 21 a m*;a -2 21", "36:bca;36.5;b,c,a;8;c2v^12;b b 21 m;b -2 -2b", "36:a-cb;36.6;a,-c,b;8;c2v^12;b m 21 b;b -2b -2", "37;37.1;;8;c2v^13;c c c 2;c 2 -2c", "37:cab;37.2;c,a,b;8;c2v^13;a 2 a a;a -2a 2", "37:bca;37.3;b,c,a;8;c2v^13;b b 2 b;b -2b -2b", "38;38.1;;8;c2v^14;a m m 2;a 2 -2", "38:ba-c;38.2;b,a,-c;8;c2v^14;b m m 2;b 2 -2", "38:cab;38.3;c,a,b;8;c2v^14;b 2 m m;b -2 2", "38:-cba;38.4;-c,b,a;8;c2v^14;c 2 m m;c -2 2", "38:bca;38.5;b,c,a;8;c2v^14;c m 2 m;c -2 -2", "38:a-cb;38.6;a,-c,b;8;c2v^14;a m 2 m;a -2 -2", "39;39.1;;8;c2v^15;a e m 2;a 2 -2b", "39;39.1;;8;c2v^15;a b m 2;a 2 -2b", "39:ba-c;39.2;b,a,-c;8;c2v^15;b m e 2;b 2 -2a", "39:ba-c;39.2;b,a,-c;8;c2v^15;b m a 2;b 2 -2a", "39:cab;39.3;c,a,b;8;c2v^15;b 2 e m;b -2a 2", "39:cab;39.3;c,a,b;8;c2v^15;b 2 c m;b -2a 2", "39:-cba;39.4;-c,b,a;8;c2v^15;c 2 m e;c -2a 2", "39:-cba;39.4;-c,b,a;8;c2v^15;c 2 m b;c -2a 2", "39:bca;39.5;b,c,a;8;c2v^15;c m 2 e;c -2a -2a", "39:bca;39.5;b,c,a;8;c2v^15;c m 2 a;c -2a -2a", "39:a-cb;39.6;a,-c,b;8;c2v^15;a e 2 m;a -2b -2b", "39:a-cb;39.6;a,-c,b;8;c2v^15;a c 2 m;a -2b -2b", "40;40.1;;8;c2v^16;a m a 2;a 2 -2a", "40:ba-c;40.2;b,a,-c;8;c2v^16;b b m 2;b 2 -2b", "40:cab;40.3;c,a,b;8;c2v^16;b 2 m b;b -2b 2", "40:-cba;40.4;-c,b,a;8;c2v^16;c 2 c m;c -2c 2", "40:bca;40.5;b,c,a;8;c2v^16;c c 2 m;c -2c -2c", "40:a-cb;40.6;a,-c,b;8;c2v^16;a m 2 a;a -2a -2a", "41;41.1;;8;c2v^17;a e a 2;a 2 -2ab", "41;41.1;;8;c2v^17;a b a 2;a 2 -2ab", "41:ba-c;41.2;b,a,-c;8;c2v^17;b b e 2;b 2 -2ab", "41:ba-c;41.2;b,a,-c;8;c2v^17;b b a 2;b 2 -2ab", "41:cab;41.3;c,a,b;8;c2v^17;b 2 e b;b -2ab 2", "41:cab;41.3;c,a,b;8;c2v^17;b 2 c b;b -2ab 2", "41:-cba;41.4;-c,b,a;8;c2v^17;c 2 c e;c -2ac 2", "41:-cba;41.4;-c,b,a;8;c2v^17;c 2 c b;c -2ac 2", "41:bca;41.5;b,c,a;8;c2v^17;c c 2 e;c -2ac -2ac", "41:bca;41.5;b,c,a;8;c2v^17;c c 2 a;c -2ac -2ac", "41:a-cb;41.6;a,-c,b;8;c2v^17;a e 2 a;a -2ab -2ab", "41:a-cb;41.6;a,-c,b;8;c2v^17;a c 2 a;a -2ab -2ab", "42;42.1;;16;c2v^18;f m m 2;f 2 -2", "42:cab;42.2;c,a,b;16;c2v^18;f 2 m m;f -2 2", "42:bca;42.3;b,c,a;16;c2v^18;f m 2 m;f -2 -2", "43;43.1;;16;c2v^19;f d d 2;f 2 -2d", "43:cab;43.2;c,a,b;16;c2v^19;f 2 d d;f -2d 2", "43:bca;43.3;b,c,a;16;c2v^19;f d 2 d;f -2d -2d", "44;44.1;;8;c2v^20;i m m 2;i 2 -2", "44:cab;44.2;c,a,b;8;c2v^20;i 2 m m;i -2 2", "44:bca;44.3;b,c,a;8;c2v^20;i m 2 m;i -2 -2", "45;45.1;;8;c2v^21;i b a 2;i 2 -2c", "45:cab;45.2;c,a,b;8;c2v^21;i 2 c b;i -2a 2", "45:bca;45.3;b,c,a;8;c2v^21;i c 2 a;i -2b -2b", "46;46.1;;8;c2v^22;i m a 2;i 2 -2a", "46:ba-c;46.2;b,a,-c;8;c2v^22;i b m 2;i 2 -2b", "46:cab;46.3;c,a,b;8;c2v^22;i 2 m b;i -2b 2", "46:-cba;46.4;-c,b,a;8;c2v^22;i 2 c m;i -2c 2", "46:bca;46.5;b,c,a;8;c2v^22;i c 2 m;i -2c -2c", "46:a-cb;46.6;a,-c,b;8;c2v^22;i m 2 a;i -2a -2a", "47;47.1;;8;d2h^1;p m m m;-p 2 2", "48:2;48.1;;8;d2h^2;p n n n :2;-p 2ab 2bc", "48:1;48.2;a,b,c|1/4,1/4,1/4;8;d2h^2;p n n n :1;p 2 2 -1n", "49;49.1;;8;d2h^3;p c c m;-p 2 2c", "49:cab;49.2;c,a,b;8;d2h^3;p m a a;-p 2a 2", "49:bca;49.3;b,c,a;8;d2h^3;p b m b;-p 2b 2b", "50:2;50.1;;8;d2h^4;p b a n :2;-p 2ab 2b", "50:2cab;50.2;c,a,b;8;d2h^4;p n c b :2;-p 2b 2bc", "50:2bca;50.3;b,c,a;8;d2h^4;p c n a :2;-p 2a 2c", "50:1;50.4;a,b,c|1/4,1/4,0;8;d2h^4;p b a n :1;p 2 2 -1ab", "50:1cab;50.5;c,a,b|1/4,1/4,0;8;d2h^4;p n c b :1;p 2 2 -1bc", "50:1bca;50.6;b,c,a|1/4,1/4,0;8;d2h^4;p c n a :1;p 2 2 -1ac", "51;51.1;;8;d2h^5;p m m a;-p 2a 2a", "51:ba-c;51.2;b,a,-c;8;d2h^5;p m m b;-p 2b 2", "51:cab;51.3;c,a,b;8;d2h^5;p b m m;-p 2 2b", "51:-cba;51.4;-c,b,a;8;d2h^5;p c m m;-p 2c 2c", "51:bca;51.5;b,c,a;8;d2h^5;p m c m;-p 2c 2", "51:a-cb;51.6;a,-c,b;8;d2h^5;p m a m;-p 2 2a", "52;52.1;;8;d2h^6;p n n a;-p 2a 2bc", "52:ba-c;52.2;b,a,-c;8;d2h^6;p n n b;-p 2b 2n", "52:cab;52.3;c,a,b;8;d2h^6;p b n n;-p 2n 2b", "52:-cba;52.4;-c,b,a;8;d2h^6;p c n n;-p 2ab 2c", "52:bca;52.5;b,c,a;8;d2h^6;p n c n;-p 2ab 2n", "52:a-cb;52.6;a,-c,b;8;d2h^6;p n a n;-p 2n 2bc", "53;53.1;;8;d2h^7;p m n a;-p 2ac 2", "53:ba-c;53.2;b,a,-c;8;d2h^7;p n m b;-p 2bc 2bc", "53:cab;53.3;c,a,b;8;d2h^7;p b m n;-p 2ab 2ab", "53:-cba;53.4;-c,b,a;8;d2h^7;p c n m;-p 2 2ac", "53:bca;53.5;b,c,a;8;d2h^7;p n c m;-p 2 2bc", "53:a-cb;53.6;a,-c,b;8;d2h^7;p m a n;-p 2ab 2", "54;54.1;;8;d2h^8;p c c a;-p 2a 2ac", "54:ba-c;54.2;b,a,-c;8;d2h^8;p c c b;-p 2b 2c", "54:cab;54.3;c,a,b;8;d2h^8;p b a a;-p 2a 2b", "54:-cba;54.4;-c,b,a;8;d2h^8;p c a a;-p 2ac 2c", "54:bca;54.5;b,c,a;8;d2h^8;p b c b;-p 2bc 2b", "54:a-cb;54.6;a,-c,b;8;d2h^8;p b a b;-p 2b 2ab", "55;55.1;;8;d2h^9;p b a m;-p 2 2ab", "55:cab;55.2;c,a,b;8;d2h^9;p m c b;-p 2bc 2", "55:bca;55.3;b,c,a;8;d2h^9;p c m a;-p 2ac 2ac", "56;56.1;;8;d2h^10;p c c n;-p 2ab 2ac", "56:cab;56.2;c,a,b;8;d2h^10;p n a a;-p 2ac 2bc", "56:bca;56.3;b,c,a;8;d2h^10;p b n b;-p 2bc 2ab", "57;57.1;;8;d2h^11;p b c m;-p 2c 2b", "57:ba-c;57.2;b,a,-c;8;d2h^11;p c a m;-p 2c 2ac", "57:cab;57.3;c,a,b;8;d2h^11;p m c a;-p 2ac 2a", "57:-cba;57.4;-c,b,a;8;d2h^11;p m a b;-p 2b 2a", "57:bca;57.5;b,c,a;8;d2h^11;p b m a;-p 2a 2ab", "57:a-cb;57.6;a,-c,b;8;d2h^11;p c m b;-p 2bc 2c", "58;58.1;;8;d2h^12;p n n m;-p 2 2n", "58:cab;58.2;c,a,b;8;d2h^12;p m n n;-p 2n 2", "58:bca;58.3;b,c,a;8;d2h^12;p n m n;-p 2n 2n", "59:2;59.1;;8;d2h^13;p m m n :2;-p 2ab 2a", "59:2cab;59.2;c,a,b;8;d2h^13;p n m m :2;-p 2c 2bc", "59:2bca;59.3;b,c,a;8;d2h^13;p m n m :2;-p 2c 2a", "59:1;59.4;a,b,c|1/4,1/4,0;8;d2h^13;p m m n :1;p 2 2ab -1ab", "59:1cab;59.5;c,a,b|1/4,1/4,0;8;d2h^13;p n m m :1;p 2bc 2 -1bc", "59:1bca;59.6;b,c,a|1/4,1/4,0;8;d2h^13;p m n m :1;p 2ac 2ac -1ac", "60;60.1;;8;d2h^14;p b c n;-p 2n 2ab", "60:ba-c;60.2;b,a,-c;8;d2h^14;p c a n;-p 2n 2c", "60:cab;60.3;c,a,b;8;d2h^14;p n c a;-p 2a 2n", "60:-cba;60.4;-c,b,a;8;d2h^14;p n a b;-p 2bc 2n", "60:bca;60.5;b,c,a;8;d2h^14;p b n a;-p 2ac 2b", "60:a-cb;60.6;a,-c,b;8;d2h^14;p c n b;-p 2b 2ac", "61;61.1;;8;d2h^15;p b c a;-p 2ac 2ab", "61:ba-c;61.2;b,a,-c;8;d2h^15;p c a b;-p 2bc 2ac", "62;62.1;;8;d2h^16;p n m a;-p 2ac 2n", "62:ba-c;62.2;b,a,-c;8;d2h^16;p m n b;-p 2bc 2a", "62:cab;62.3;c,a,b;8;d2h^16;p b n m;-p 2c 2ab", "62:-cba;62.4;-c,b,a;8;d2h^16;p c m n;-p 2n 2ac", "62:bca;62.5;b,c,a;8;d2h^16;p m c n;-p 2n 2a", "62:a-cb;62.6;a,-c,b;8;d2h^16;p n a m;-p 2c 2n", "63;63.1;;16;d2h^17;c m c m;-c 2c 2", "63:ba-c;63.2;b,a,-c;16;d2h^17;c c m m;-c 2c 2c", "63:cab;63.3;c,a,b;16;d2h^17;a m m a;-a 2a 2a", "63:-cba;63.4;-c,b,a;16;d2h^17;a m a m;-a 2 2a", "63:bca;63.5;b,c,a;16;d2h^17;b b m m;-b 2 2b", "63:a-cb;63.6;a,-c,b;16;d2h^17;b m m b;-b 2b 2", "64;64.1;;16;d2h^18;c m c e;-c 2ac 2", "64;64.1;;16;d2h^18;c m c a;-c 2ac 2", "64:ba-c;64.2;b,a,-c;16;d2h^18;c c m e;-c 2ac 2ac", "64:ba-c;64.2;b,a,-c;16;d2h^18;c c m b;-c 2ac 2ac", "64:cab;64.3;c,a,b;16;d2h^18;a e m a;-a 2ab 2ab", "64:cab;64.3;c,a,b;16;d2h^18;a b m a;-a 2ab 2ab", "64:-cba;64.4;-c,b,a;16;d2h^18;a e a m;-a 2 2ab", "64:-cba;64.4;-c,b,a;16;d2h^18;a c a m;-a 2 2ab", "64:bca;64.5;b,c,a;16;d2h^18;b b e m;-b 2 2ab", "64:bca;64.5;b,c,a;16;d2h^18;b b c m;-b 2 2ab", "64:a-cb;64.6;a,-c,b;16;d2h^18;b m e b;-b 2ab 2", "64:a-cb;64.6;a,-c,b;16;d2h^18;b m a b;-b 2ab 2", "65;65.1;;16;d2h^19;c m m m;-c 2 2", "65:cab;65.2;c,a,b;16;d2h^19;a m m m;-a 2 2", "65:bca;65.3;b,c,a;16;d2h^19;b m m m;-b 2 2", "66;66.1;;16;d2h^20;c c c m;-c 2 2c", "66:cab;66.2;c,a,b;16;d2h^20;a m a a;-a 2a 2", "66:bca;66.3;b,c,a;16;d2h^20;b b m b;-b 2b 2b", "67;67.1;;16;d2h^21;c m m e;-c 2a 2", "67;67.1;;16;d2h^21;c m m a;-c 2a 2", "67:ba-c;67.2;b,a,-c;16;d2h^21;c m m b;-c 2a 2a", "67:cab;67.3;c,a,b;16;d2h^21;a b m m;-a 2b 2b", "67:-cba;67.4;-c,b,a;16;d2h^21;a c m m;-a 2 2b", "67:bca;67.5;b,c,a;16;d2h^21;b m c m;-b 2 2a", "67:a-cb;67.6;a,-c,b;16;d2h^21;b m a m;-b 2a 2", "68:2;68.1;;16;d2h^22;c c c e :2;-c 2a 2ac", "68:2;68.1;;16;d2h^22;c c c a :2;-c 2a 2ac", "68:2ba-c;68.2;b,a,-c;16;d2h^22;c c c b :2;-c 2a 2c", "68:2cab;68.3;c,a,b;16;d2h^22;a b a a :2;-a 2a 2b", "68:2-cba;68.4;-c,b,a;16;d2h^22;a c a a :2;-a 2ab 2b", "68:2bca;68.5;b,c,a;16;d2h^22;b b c b :2;-b 2ab 2b", "68:2a-cb;68.6;a,-c,b;16;d2h^22;b b a b :2;-b 2b 2ab", "68:1;68.7;a,b,c|0,1/4,1/4;16;d2h^22;c c c e :1;c 2 2 -1ac", "68:1;68.7;a,b,c|0,1/4,1/4;16;d2h^22;c c c a :1;c 2 2 -1ac", "68:1ba-c;68.8;b,a,-c|0,1/4,1/4;16;d2h^22;c c c b :1;c 2 2 -1ac", "68:1cab;68.9;c,a,b|0,1/4,1/4;16;d2h^22;a b a a :1;a 2 2 -1ab", "68:1-cba;68.10;-c,b,a|0,1/4,1/4;16;d2h^22;a c a a :1;a 2 2 -1ab", "68:1bca;68.11;b,c,a|0,1/4,1/4;16;d2h^22;b b c b :1;b 2 2 -1ab", "68:1a-cb;68.12;a,-c,b|0,1/4,1/4;16;d2h^22;b b a b :1;b 2 2 -1ab", "69;69.1;;32;d2h^23;f m m m;-f 2 2", "70:2;70.1;;32;d2h^24;f d d d :2;-f 2uv 2vw", "70:1;70.2;a,b,c|-1/8,-1/8,-1/8;32;d2h^24;f d d d :1;f 2 2 -1d", "71;71.1;;16;d2h^25;i m m m;-i 2 2", "72;72.1;;16;d2h^26;i b a m;-i 2 2c", "72:cab;72.2;c,a,b;16;d2h^26;i m c b;-i 2a 2", "72:bca;72.3;b,c,a;16;d2h^26;i c m a;-i 2b 2b", "73;73.1;;16;d2h^27;i b c a;-i 2b 2c", "73:ba-c;73.2;b,a,-c;16;d2h^27;i c a b;-i 2a 2b", "74;74.1;;16;d2h^28;i m m a;-i 2b 2", "74:ba-c;74.2;b,a,-c;16;d2h^28;i m m b;-i 2a 2a", "74:cab;74.3;c,a,b;16;d2h^28;i b m m;-i 2c 2c", "74:-cba;74.4;-c,b,a;16;d2h^28;i c m m;-i 2 2b", "74:bca;74.5;b,c,a;16;d2h^28;i m c m;-i 2 2a", "74:a-cb;74.6;a,-c,b;16;d2h^28;i m a m;-i 2c 2", "75;75.1;;4;c4^1;p 4;p 4", "75:c;75.2;ab;8;c4^1;c 4;c 4", "76;76.1;;4;c4^2;p 41;p 4w", "76*;76.1;;4;c4^2;p 41*;p 41", "76:c;76.2;ab;8;c4^2;c 41;c 4w", "77;77.1;;4;c4^3;p 42;p 4c", "77*;77.1;;4;c4^3;p 42*;p 42", "77:c;77.2;ab;8;c4^3;c 42;c 4c", "78;78.1;;4;c4^4;p 43;p 4cw", "78*;78.1;;4;c4^4;p 43*;p 43", "78:c;78.2;ab;8;c4^4;c 43;c 4cw", "79;79.1;;8;c4^5;i 4;i 4", "79:f;79.2;ab;16;c4^5;f 4;f 4", "80;80.1;;8;c4^6;i 41;i 4bw", "80:f;80.2;ab;16;c4^6;f 41;xyz", "81;81.1;;4;s4^1;p -4;p -4", "81:c;81.2;ab;8;s4^1;c -4;c -4", "82;82.1;;8;s4^2;i -4;i -4", "82:f;82.2;ab;16;s4^2;f -4;f -4", "83;83.1;;8;c4h^1;p 4/m;-p 4", "83:f;83.2;ab;16;c4h^1;c 4/m;-c 4", "84;84.1;;8;c4h^2;p 42/m;-p 4c", "84*;84.1;;8;c4h^2;p 42/m*;-p 42", "84:c;84.2;ab;16;c4h^2;c 42/m;-c 4c", "85:2;85.1;;8;c4h^3;p 4/n :2;-p 4a", "85:c2;85.2;ab;16;c4h^3;c 4/e :2;xyz", "85:1;85.3;a,b,c|-1/4,1/4,0;8;c4h^3;p 4/n :1;p 4ab -1ab", "85:c1;85.4;ab|-1/4,1/4,0;16;c4h^3;c 4/e :1;xyz", "86:2;86.1;;8;c4h^4;p 42/n :2;-p 4bc", "86:1;86.3;a,b,c|-1/4,-1/4,-1/4;8;c4h^4;p 42/n :1;p 4n -1n", "86:c1;86.4;ab|-1/4,-1/4,-1/4;16;c4h^4;c 42/e :1;xyz", "86:c2;86.2;ab;16;c4h^4;c 42/e :2;xyz", "87;87.1;;16;c4h^5;i 4/m;-i 4", "87:f;87.2;ab;32;c4h^5;f 4/m;xyz", "88:2;88.1;;16;c4h^6;i 41/a :2;-i 4ad", "88:f2;88.2;ab;32;c4h^6;f 41/d :2;xyz", "88:1;88.3;a,b,c|0,-1/4,-1/8;16;c4h^6;i 41/a :1;i 4bw -1bw", "88:f1;88.4;ab|0,-1/4,-1/8;32;c4h^6;f 41/d :1;xyz", "89;89.1;;8;d4^1;p 4 2 2;p 4 2", "89:c;89.2;ab;16;d4^1;c 4 2 2;xyz", "90;90.1;;8;d4^2;p 4 21 2;p 4ab 2ab", "90:c;90.2;ab;16;d4^2;c 4 2 21;xyz", "91;91.1;;8;d4^3;p 41 2 2;p 4w 2c", "91*;91.1;;8;d4^3;p 41 2 2*;p 41 2c", "91:c;91.2;ab;16;d4^3;c 41 2 2;xyz", "92;92.1;;8;d4^4;p 41 21 2;p 4abw 2nw", "92:c;92.2;ab;16;d4^4;c 41 2 21;xyz", "93;93.1;;8;d4^5;p 42 2 2;p 4c 2", "93*;93.1;;8;d4^5;p 42 2 2*;p 42 2", "93:c;93.2;ab;16;d4^5;c 42 2 2;xyz", "94;94.1;;8;d4^6;p 42 21 2;p 4n 2n", "94:c;94.2;ab;16;d4^6;c 42 2 21;xyz", "95;95.1;;8;d4^7;p 43 2 2;p 4cw 2c", "95*;95.1;;8;d4^7;p 43 2 2*;p 43 2c", "95:c;95.2;ab;16;d4^7;c 43 2 2;xyz", "96;96.1;;8;d4^8;p 43 21 2;p 4nw 2abw", "96:c;96.2;ab;16;d4^8;c 43 2 21;xyz", "97;97.1;;16;d4^9;i 4 2 2;i 4 2", "97:f;97.2;ab;32;d4^9;f 4 2 2;f 4 2", "98;98.1;;16;d4^10;i 41 2 2;i 4bw 2bw", "98:f;98.2;ab;32;d4^10;f 41 2 2;xyz", "99;99.1;;8;c4v^1;p 4 m m;p 4 -2", "99:c;99.2;ab;16;c4v^1;c 4 m m;c 4 -2", "100;100.1;;8;c4v^2;p 4 b m;p 4 -2ab", "100:c;100.2;ab;16;c4v^2;c 4 m g1;xyz", "101;101.1;;8;c4v^3;p 42 c m;p 4c -2c", "101*;101.1;;8;c4v^3;p 42 c m*;p 42 -2c", "101:c;101.2;ab;16;c4v^3;c 42 m c;xyz", "102;102.1;;8;c4v^4;p 42 n m;p 4n -2n", "102:c;102.2;ab;16;c4v^4;c 42 m g2;xyz", "103;103.1;;8;c4v^5;p 4 c c;p 4 -2c", "103:c;103.2;ab;16;c4v^5;c 4 c c;c 4 -2c", "104;104.1;;8;c4v^6;p 4 n c;p 4 -2n", "104:c;104.2;ab;16;c4v^6;c 4 c g2;xyz", "105;105.1;;8;c4v^7;p 42 m c;p 4c -2", "105*;105.1;;8;c4v^7;p 42 m c*;p 42 -2", "105:c;105.2;ab;16;c4v^7;c 42 c m;xyz", "106;106.1;;8;c4v^8;p 42 b c;p 4c -2ab", "106*;106.1;;8;c4v^8;p 42 b c*;p 42 -2ab", "106:c;106.2;ab;16;c4v^8;c 42 c g1;xyz", "107;107.1;;16;c4v^9;i 4 m m;i 4 -2", "107:f;107.2;ab;32;c4v^9;f 4 m m;f 4 -2", "108;108.1;;16;c4v^10;i 4 c m;i 4 -2c", "108:f;108.2;ab;32;c4v^10;f 4 m c;xyz", "109;109.1;;16;c4v^11;i 41 m d;i 4bw -2", "109:f;109.2;ab;32;c4v^11;f 41 d m;xyz", "110;110.1;;16;c4v^12;i 41 c d;i 4bw -2c", "110:f;110.2;ab;32;c4v^12;f 41 d c;xyz", "111;111.1;;8;d2d^1;p -4 2 m;p -4 2", "111:c;111.2;ab;16;d2d^1;c -4 m 2;xyz", "112;112.1;;8;d2d^2;p -4 2 c;p -4 2c", "112:c;112.2;ab;16;d2d^2;c -4 c 2;xyz", "113;113.1;;8;d2d^3;p -4 21 m;p -4 2ab", "113:c;113.2;ab;16;d2d^3;c -4 m 21;xyz", "114;114.1;;8;d2d^4;p -4 21 c;p -4 2n", "114:c;114.2;ab;16;d2d^4;c -4 c 21;xyz", "115;115.1;;8;d2d^5;p -4 m 2;p -4 -2", "115:c;115.2;ab;16;d2d^5;c -4 2 m;xyz", "116;116.1;;8;d2d^6;p -4 c 2;p -4 -2c", "116:c;116.2;ab;16;d2d^6;c -4 2 c;xyz", "117;117.1;;8;d2d^7;p -4 b 2;p -4 -2ab", "117:c;117.2;ab;16;d2d^7;c -4 2 g1;xyz", "118;118.1;;8;d2d^8;p -4 n 2;p -4 -2n", "118:c;118.2;ab;16;d2d^8;c -4 2 g2;xyz", "119;119.1;;16;d2d^9;i -4 m 2;i -4 -2", "119:f;119.2;ab;32;d2d^9;f -4 2 m;xyz", "120;120.1;;16;d2d^10;i -4 c 2;i -4 -2c", "120:f;120.2;ab;32;d2d^10;f -4 2 c;xyz", "121;121.1;;16;d2d^11;i -4 2 m;i -4 2", "121:f;121.2;ab;32;d2d^11;f -4 m 2;xyz", "122;122.1;;16;d2d^12;i -4 2 d;i -4 2bw", "122:f;122.2;ab;32;d2d^12;f -4 d 2;xyz", "123;123.1;;16;d4h^1;p 4/m m m;-p 4 2", "123:c;123.2;ab;32;d4h^1;c 4/m m m;xyz", "124;124.1;;16;d4h^2;p 4/m c c;-p 4 2c", "124:c;124.2;ab;32;d4h^2;c 4/m c c;xyz", "125:2;125.1;;16;d4h^3;p 4/n b m :2;-p 4a 2b", "125:c2;125.2;ab;32;d4h^3;c 4/e m g1 :2;xyz", "125:1;125.3;a,b,c|-1/4,-1/4,0;16;d4h^3;p 4/n b m :1;p 4 2 -1ab", "125:c1;125.4;ab|-1/4,-1/4,0;32;d4h^3;c 4/e m g1 :1;xyz", "126:2;126.1;;16;d4h^4;p 4/n n c :2;-p 4a 2bc", "126:c1;126.2;ab;32;d4h^4;c 4/e c g2 :2;xyz", "126:1;126.3;a,b,c|-1/4,-1/4,-1/4;16;d4h^4;p 4/n n c :1;p 4 2 -1n", "126:c4;126.4;ab|-1/4,-1/4,-1/4;32;d4h^4;c 4/e c g2 :1;xyz", "127;127.1;;16;d4h^5;p 4/m b m;-p 4 2ab", "127:c;127.2;ab;32;d4h^5;c 4/m m g1;xyz", "128;128.1;;16;d4h^6;p 4/m n c;-p 4 2n", "128:c;128.2;a+b,-a+b,c;32;d4h^6;c 4/m c g2;xyz", "129:2;129.1;;16;d4h^7;p 4/n m m :2;-p 4a 2a", "129:c2;129.2;ab;32;d4h^7;c 4/e m m :2;xyz", "129:1;129.3;a,b,c|-1/4,1/4,0;16;d4h^7;p 4/n m m :1;p 4ab 2ab -1ab", "129:c1;129.4;ab|-1/4,1/4,0;32;d4h^7;c 4/e m m :1;xyz", "130:2;130.1;;16;d4h^8;p 4/n c c :2;-p 4a 2ac", "130:c2;130.2;ab;32;d4h^8;c 4/e c c :2;xyz", "130:1;130.3;a,b,c|-1/4,1/4,0;16;d4h^8;p 4/n c c :1;p 4ab 2n -1ab", "130:c1;130.4;ab|-1/4,1/4,0;32;d4h^8;c 4/e c c :1;xyz", "131;131.1;;16;d4h^9;p 42/m m c;-p 4c 2", "131:c;131.2;ab;32;d4h^9;c 42/m c m;xyz", "132;132.1;;16;d4h^10;p 42/m c m;-p 4c 2c", "132:c;132.2;ab;32;d4h^10;c 42/m m c;xyz", "133:2;133.1;;16;d4h^11;p 42/n b c :2;-p 4ac 2b", "133:c1;133.2;ab;32;d4h^11;c 42/e c g1 :2;xyz", "133:1;133.3;a,b,c|-1/4,1/4,-1/4;16;d4h^11;p 42/n b c :1;p 4n 2c -1n", "133:c2;133.4;ab|-1/4,1/4,-1/4;32;d4h^11;c 42/e c g1 :1;xyz", "134:2;134.1;;16;d4h^12;p 42/n n m :2;-p 4ac 2bc", "134:c2;134.2;ab;32;d4h^12;c 42/e m g2 :2;xyz", "134:1;134.3;a,b,c|-1/4,1/4,-1/4;16;d4h^12;p 42/n n m :1;p 4n 2 -1n", "134:c1;134.4;ab|-1/4,1/4,-1/4;32;d4h^12;c 42/e m g2 :1;xyz", "135;135.1;;16;d4h^13;p 42/m b c;-p 4c 2ab", "135*;135.1;;16;d4h^13;p 42/m b c*;-p 42 2ab", "135:c;135.2;ab;32;d4h^13;c 42/m c g1;xyz", "136;136.1;;16;d4h^14;p 42/m n m;-p 4n 2n", "136:c;136.2;ab;32;d4h^14;c 42/m m g2;xyz", "137:2;137.1;;16;d4h^15;p 42/n m c :2;-p 4ac 2a", "137:c1;137.2;ab;32;d4h^15;c 42/e c m :2;xyz", "137:1;137.3;a,b,c|-1/4,1/4,-1/4;16;d4h^15;p 42/n m c :1;p 4n 2n -1n", "137:c2;137.4;ab|-1/4,1/4,-1/4;32;d4h^15;c 42/e c m :1;xyz", "138:2;138.1;;16;d4h^16;p 42/n c m :2;-p 4ac 2ac", "138:c2;138.2;ab;32;d4h^16;c 42/e m c :2;xyz", "138:1;138.3;a,b,c|-1/4,1/4,-1/4;16;d4h^16;p 42/n c m :1;p 4n 2ab -1n", "138:c1;138.4;ab|-1/4,1/4,-1/4;32;d4h^16;c 42/e m c :1;xyz", "139;139.1;;32;d4h^17;i 4/m m m;-i 4 2", "139:f;139.2;ab;64;d4h^17;f 4/m m m;xyz", "140;140.1;;32;d4h^18;i 4/m c m;-i 4 2c", "140:f;140.2;ab;64;d4h^18;f 4/m m c;xyz", "141:2;141.1;;32;d4h^19;i 41/a m d :2;-i 4bd 2", "141:f2;141.2;ab;64;d4h^19;f 41/d d m :2;xyz", "141:1;141.3;a,b,c|0,1/4,-1/8;32;d4h^19;i 41/a m d :1;i 4bw 2bw -1bw", "141:f1;141.4;ab|0,1/4,-1/8;64;d4h^19;f 41/d d m :1;xyz", "142:2;142.1;;32;d4h^20;i 41/a c d :2;-i 4bd 2c", "142:f2;142.2;ab;64;d4h^20;f 41/d d c :2;xyz", "142:1;142.3;a,b,c|0,1/4,-1/8;32;d4h^20;i 41/a c d :1;i 4bw 2aw -1bw", "142:f1;142.4;ab|0,1/4,-1/8;64;d4h^20;f 41/d d c :1;xyz", "143;143.1;;3;c3^1;p 3;p 3", "144;144.1;;3;c3^2;p 31;p 31", "145;145.1;;3;c3^3;p 32;p 32", "146:h;146.1;;9;c3^4;r 3 :h;r 3", "146:r;146.2;r;3;c3^4;r 3 :r;p 3*", "147;147.1;;6;c3i^1;p -3;-p 3", "148:h;148.1;;18;c3i^2;r -3 :h;-r 3", "148:r;148.2;r;6;c3i^2;r -3 :r;-p 3*", "149;149.1;;6;d3^1;p 3 1 2;p 3 2", "150;150.1;;6;d3^2;p 3 2 1;p 3 2\"", "151;151.1;;6;d3^3;p 31 1 2;p 31 2 (0 0 4)", "152;152.1;;6;d3^4;p 31 2 1;p 31 2\"", "152:_2;152:a,b,c|0,0,-1/3;a,b,c|0,0,-1/3;6;d3^4;p 31 2 1;p 31 2\" (0 0 -4)", "153;153.1;;6;d3^5;p 32 1 2;p 32 2 (0 0 2)", "154;154.1;;6;d3^6;p 32 2 1;p 32 2\"", "154:_2;154:a,b,c|0,0,-1/3;a,b,c|0,0,-1/3;6;d3^6;p 32 2 1;p 32 2\" (0 0 4)", "155:h;155.1;;18;d3^7;r 3 2 :h;r 3 2\"", "155:r;155.2;r;6;d3^7;r 3 2 :r;p 3* 2", "156;156.1;;6;c3v^1;p 3 m 1;p 3 -2\"", "157;157.1;;6;c3v^2;p 3 1 m;p 3 -2", "158;158.1;;6;c3v^3;p 3 c 1;p 3 -2\"c", "159;159.1;;6;c3v^4;p 3 1 c;p 3 -2c", "160:h;160.1;;18;c3v^5;r 3 m :h;r 3 -2\"", "160:r;160.2;r;6;c3v^5;r 3 m :r;p 3* -2", "161:h;161.1;;18;c3v^6;r 3 c :h;r 3 -2\"c", "161:r;161.2;r;6;c3v^6;r 3 c :r;p 3* -2n", "162;162.1;;12;d3d^1;p -3 1 m;-p 3 2", "163;163.1;;12;d3d^2;p -3 1 c;-p 3 2c", "164;164.1;;12;d3d^3;p -3 m 1;-p 3 2\"", "165;165.1;;12;d3d^4;p -3 c 1;-p 3 2\"c", "166:h;166.1;;36;d3d^5;r -3 m :h;-r 3 2\"", "166:r;166.2;r;12;d3d^5;r -3 m :r;-p 3* 2", "167:h;167.1;;36;d3d^6;r -3 c :h;-r 3 2\"c", "167:r;167.2;r;12;d3d^6;r -3 c :r;-p 3* 2n", "168;168.1;;6;c6^1;p 6;p 6", "169;169.1;;6;c6^2;p 61;p 61", "170;170.1;;6;c6^3;p 65;p 65", "171;171.1;;6;c6^4;p 62;p 62", "172;172.1;;6;c6^5;p 64;p 64", "173;173.1;;6;c6^6;p 63;p 6c", "173*;173.1;;6;c6^6;p 63*;p 63 ", "174;174.1;;6;c3h^1;p -6;p -6", "175;175.1;;12;c6h^1;p 6/m;-p 6", "176;176.1;;12;c6h^2;p 63/m;-p 6c", "176*;176.1;;12;c6h^2;p 63/m*;-p 63", "177;177.1;;12;d6^1;p 6 2 2;p 6 2", "178;178.1;;12;d6^2;p 61 2 2;p 61 2 (0 0 5)", "179;179.1;;12;d6^3;p 65 2 2;p 65 2 (0 0 1)", "180;180.1;;12;d6^4;p 62 2 2;p 62 2 (0 0 4)", "181;181.1;;12;d6^5;p 64 2 2;p 64 2 (0 0 2)", "182;182.1;;12;d6^6;p 63 2 2;p 6c 2c", "182*;182.1;;12;d6^6;p 63 2 2*;p 63 2c", "183;183.1;;12;c6v^1;p 6 m m;p 6 -2", "184;184.1;;12;c6v^2;p 6 c c;p 6 -2c", "185;185.1;;12;c6v^3;p 63 c m;p 6c -2", "185*;185.1;;12;c6v^3;p 63 c m*;p 63 -2", "186;186.1;;12;c6v^4;p 63 m c;p 6c -2c", "186*;186.1;;12;c6v^4;p 63 m c*;p 63 -2c", "187;187.1;;12;d3h^1;p -6 m 2;p -6 2", "188;188.1;;12;d3h^2;p -6 c 2;p -6c 2", "189;189.1;;12;d3h^3;p -6 2 m;p -6 -2", "190;190.1;;12;d3h^4;p -6 2 c;p -6c -2c", "191;191.1;;24;d6h^1;p 6/m m m;-p 6 2", "192;192.1;;24;d6h^2;p 6/m c c;-p 6 2c", "193;193.1;;24;d6h^3;p 63/m c m;-p 6c 2", "193*;193.1;;24;d6h^3;p 63/m c m*;-p 63 2", "194;194.1;;24;d6h^4;p 63/m m c;-p 6c 2c", "194*;194.1;;24;d6h^4;p 63/m m c*;-p 63 2c", "195;195.1;;12;t^1;p 2 3;p 2 2 3", "196;196.1;;48;t^2;f 2 3;f 2 2 3", "197;197.1;;24;t^3;i 2 3;i 2 2 3", "198;198.1;;12;t^4;p 21 3;p 2ac 2ab 3", "199;199.1;;24;t^5;i 21 3;i 2b 2c 3", "200;200.1;;24;th^1;p m -3;-p 2 2 3", "201:2;201.1;;24;th^2;p n -3 :2;-p 2ab 2bc 3", "201:1;201.2;a,b,c|-1/4,-1/4,-1/4;24;th^2;p n -3 :1;p 2 2 3 -1n", "202;202.1;;96;th^3;f m -3;-f 2 2 3", "203:2;203.1;;96;th^4;f d -3 :2;-f 2uv 2vw 3", "203:1;203.2;a,b,c|-1/8,-1/8,-1/8;96;th^4;f d -3 :1;f 2 2 3 -1d", "204;204.1;;48;th^5;i m -3;-i 2 2 3", "205;205.1;;24;th^6;p a -3;-p 2ac 2ab 3", "206;206.1;;48;th^7;i a -3;-i 2b 2c 3", "207;207.1;;24;o^1;p 4 3 2;p 4 2 3", "208;208.1;;24;o^2;p 42 3 2;p 4n 2 3", "209;209.1;;96;o^3;f 4 3 2;f 4 2 3", "210;210.1;;96;o^4;f 41 3 2;f 4d 2 3", "211;211.1;;48;o^5;i 4 3 2;i 4 2 3", "212;212.1;;24;o^6;p 43 3 2;p 4acd 2ab 3", "213;213.1;;24;o^7;p 41 3 2;p 4bd 2ab 3", "214;214.1;;48;o^8;i 41 3 2;i 4bd 2c 3", "215;215.1;;24;td^1;p -4 3 m;p -4 2 3", "216;216.1;;96;td^2;f -4 3 m;f -4 2 3", "217;217.1;;48;td^3;i -4 3 m;i -4 2 3", "218;218.1;;24;td^4;p -4 3 n;p -4n 2 3", "219;219.1;;96;td^5;f -4 3 c;f -4a 2 3", "220;220.1;;48;td^6;i -4 3 d;i -4bd 2c 3", "221;221.1;;48;oh^1;p m -3 m;-p 4 2 3", "222:2;222.1;;48;oh^2;p n -3 n :2;-p 4a 2bc 3", "222:1;222.2;a,b,c|-1/4,-1/4,-1/4;48;oh^2;p n -3 n :1;p 4 2 3 -1n", "223;223.1;;48;oh^3;p m -3 n;-p 4n 2 3", "224:2;224.1;;48;oh^4;p n -3 m :2;-p 4bc 2bc 3", "224:1;224.2;a,b,c|-1/4,-1/4,-1/4;48;oh^4;p n -3 m :1;p 4n 2 3 -1n", "225;225.1;;192;oh^5;f m -3 m;-f 4 2 3", "226;226.1;;192;oh^6;f m -3 c;-f 4a 2 3", "227:2;227.1;;192;oh^7;f d -3 m :2;-f 4vw 2vw 3", "227:1;227.2;a,b,c|-1/8,-1/8,-1/8;192;oh^7;f d -3 m :1;f 4d 2 3 -1d", "228:2;228.1;;192;oh^8;f d -3 c :2;-f 4ud 2vw 3", "228:1;228.2;a,b,c|-3/8,-3/8,-3/8;192;oh^8;f d -3 c :1;f 4d 2 3 -1ad", "229;229.1;;96;oh^9;i m -3 m;-i 4 2 3", "230;230.1;;96;oh^10;i a -3 d;-i 4bd 2c 3"]); +{ +JS.SpaceGroup.getSpaceGroups(); +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SpaceGroupFinder.js b/config/plugins/visualizations/jmol/static/j2s/JS/SpaceGroupFinder.js new file mode 100755 index 000000000000..aa65fa301a3e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SpaceGroupFinder.js @@ -0,0 +1,735 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.P3"], "JS.SpaceGroupFinder", ["JU.BS", "$.Lst", "$.M4", "$.PT", "JS.SpaceGroup", "$.Symmetry", "$.SymmetryOperation", "$.UnitCell", "JU.BSUtil", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.uc = null; +this.sg = null; +this.cartesians = null; +this.atoms = null; +this.nAtoms = 0; +this.xyzList = null; +this.unitCellParams = null; +this.slop = 0; +this.isAssign = false; +this.isUnknown = false; +this.$checkSupercell = false; +this.isSupercell = false; +this.asString = false; +this.bsPoints0 = null; +this.bsAtoms = null; +this.targets = null; +this.origin = null; +this.oabc = null; +this.scaling = null; +this.pTemp = null; +this.isg = 0; +if (!Clazz.isClassDefined("JS.SpaceGroupFinder.SGAtom")) { +JS.SpaceGroupFinder.$SpaceGroupFinder$SGAtom$ (); +} +Clazz.instantialize(this, arguments);}, JS, "SpaceGroupFinder", null); +Clazz.prepareFields (c$, function(){ +this.pTemp = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "findSpaceGroup", +function(vwr, atoms0, xyzList0, unitCellParams, origin, oabc0, uci, flags){ +this.vwr = vwr; +this.xyzList = xyzList0; +this.unitCellParams = unitCellParams; +this.origin = origin; +this.oabc = oabc0; +this.uc = uci; +this.isAssign = ((flags & 2) != 0); +this.$checkSupercell = ((flags & 8) != 0); +this.asString = ((flags & 1) != 0); +var setFromScratch = ((flags & 4) != 0); +var slop0 = this.uc.getPrecision(); +this.slop = (!Double.isNaN(slop0) ? slop0 : unitCellParams != null && unitCellParams.length > 26 ? unitCellParams[26] : false ? 1.0E-12 : 1.0E-4); +this.cartesians = vwr.ms.at; +this.bsPoints0 = new JU.BS(); +if (this.xyzList == null || this.isAssign) { +this.bsAtoms = JU.BSUtil.copy(atoms0); +this.nAtoms = this.bsAtoms.cardinality(); +}this.targets = JU.BS.newN(this.nAtoms); +this.scaling = JU.P3.new3(1, 1, 1); +var name; +var basis; +this.isUnknown = true; +var isITA = (this.xyzList != null && this.xyzList.toUpperCase().startsWith("ITA/")); +var isHall = (this.xyzList != null && !isITA && (this.xyzList.startsWith("[") || this.xyzList.startsWith("Hall:"))); +if (isITA || this.isAssign && isHall) { +this.isUnknown = false; +if (isITA) { +this.xyzList = JU.PT.rep(this.xyzList.substring(4), " ", ""); +} else if (this.xyzList.startsWith("Hall:")) { +this.xyzList = this.xyzList.substring(5); +} else { +this.xyzList = JU.PT.replaceAllCharacters(this.xyzList, "[]", ""); +}this.sg = this.setITA(isHall); +if (this.sg == null) return null; +name = this.sg.getName(); +} else if (this.oabc != null || isHall) { +name = this.xyzList; +this.sg = JS.SpaceGroup.createSpaceGroupN(name); +this.isUnknown = (this.sg == null); +if (isHall && !this.isUnknown) return this.sg.dumpInfoObj(); +} else if (JS.SpaceGroup.isXYZList(this.xyzList)) { +this.sg = JS.SpaceGroup.findSpaceGroupFromXYZ(this.xyzList); +if (this.sg != null) return this.sg.dumpInfoObj(); +}if (setFromScratch) { +if (this.sg == null && (this.sg = JS.SpaceGroup.determineSpaceGroupNA(this.xyzList, unitCellParams)) == null && (this.sg = JS.SpaceGroup.createSpaceGroupN(this.xyzList)) == null) return null; +basis = new JU.BS(); +name = this.sg.asString(); +if (this.oabc == null) { +var userDefined = (unitCellParams.length == 6); +this.uc = JS.SpaceGroupFinder.setSpaceGroupAndUnitCell(this.sg, unitCellParams, null, userDefined); +this.oabc = this.uc.getUnitCellVectors(); +if (origin != null) this.oabc[0].setT(origin); +} else { +this.uc = JS.SpaceGroupFinder.setSpaceGroupAndUnitCell(this.sg, null, this.oabc, false); +this.uc.transformUnitCell(uci.replaceTransformMatrix(null)); +}} else { +var ret = this.findGroupByOperations(); +if (!this.isAssign || !(Clazz.instanceOf(ret,"JS.SpaceGroup"))) return ret; +this.sg = ret; +name = this.sg.asString(); +basis = JU.BSUtil.copy(this.bsAtoms); +for (var i = this.targets.nextSetBit(0); i >= 0; i = this.targets.nextSetBit(i + 1)) basis.clear(this.atoms[i].index); + +var nb = basis.cardinality(); +var msg = name + (atoms0 == null ? "" : "\nbasis is " + nb + " atom" + (nb == 1 ? "" : "s") + ": " + basis); +System.out.println(msg); +if (this.asString) return msg; +}var map = this.sg.dumpInfoObj(); +if (this.uc != null) System.out.println("unitcell is " + this.uc.getUnitCellInfo(true)); +if (!this.isAssign) { +var bs1 = JU.BS.copy(this.bsPoints0); +bs1.andNot(this.targets); +this.dumpBasis(JS.SpaceGroupFinder.bsGroupOps[this.isg], bs1, this.bsPoints0); +}map.put("name", name); +map.put("basis", basis); +if (this.isSupercell) map.put("supercell", this.scaling); +this.oabc[1].scale(1 / this.scaling.x); +this.oabc[2].scale(1 / this.scaling.y); +this.oabc[3].scale(1 / this.scaling.z); +map.put("unitcell", this.oabc); +if (this.isAssign) map.put("sg", this.sg); +return map; +}, "JV.Viewer,JU.BS,~S,~A,JU.T3,~A,J.api.SymmetryInterface,~N"); +Clazz.defineMethod(c$, "setITA", +function(isHall){ +var name = null; +var sgdata = null; +var pt = this.xyzList.lastIndexOf(":"); +var hasTransform = (pt > 0 && this.xyzList.indexOf(",") > pt); +var isJmolCode = (pt > 0 && !hasTransform); +var transform = null; +var clegId = null; +if (hasTransform) { +name = transform = this.uc.staticCleanTransform(this.xyzList.substring(pt + 1)); +this.xyzList = this.xyzList.substring(0, pt); +clegId = this.xyzList + ":" + transform; +if (transform.equals("a,b,c")) { +transform = null; +hasTransform = false; +}}pt = this.xyzList.indexOf("."); +if (pt > 0 && (hasTransform || isJmolCode)) { +this.xyzList = this.xyzList.substring(0, pt); +pt = -1; +}var itano = this.xyzList; +var isITADotSetting = (pt > 0); +if (!isJmolCode && !isHall && !hasTransform && !isITADotSetting && JU.PT.parseInt(itano) != -2147483648) this.xyzList += ".1"; +var genPos; +var setting = null; +var itaIndex = this.xyzList; +if (isHall) { +genPos = this.uc.getSpaceGroupInfoObj("nameToXYZList", "Hall:" + this.xyzList, false, false); +if (genPos == null) return null; +} else { +name = (hasTransform ? transform : itaIndex); +this.sg = JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(hasTransform ? clegId : itaIndex); +var o = this.uc.getSpaceGroupJSON(this.vwr, "ITA", itaIndex, 0); +if (o == null || (typeof(o)=='string')) { +return null; +}sgdata = o; +if (isJmolCode || hasTransform) { +var its = sgdata.get("its"); +if (its == null) return null; +sgdata = null; +for (var i = 0, c = its.size(); i < c; i++) { +setting = its.get(i); +if (name.equals(setting.get(hasTransform ? "trm" : "jmolId"))) { +sgdata = setting; +break; +}} +if (sgdata == null || !sgdata.containsKey("jmolId")) { +if (isJmolCode) { +return null; +}setting = null; +if (sgdata != null) transform = sgdata.get("trm"); +hasTransform = true; +sgdata = its.get(0); +} else { +setting = null; +hasTransform = false; +transform = null; +}} else { +name = sgdata.get("jmolId"); +}genPos = sgdata.get("gp"); +}if (this.sg != null && transform == null) { +this.sg = JS.SpaceGroup.createITASpaceGroup(genPos, this.sg); +return this.sg; +}this.sg = JS.SpaceGroup.transformSpaceGroup(null, this.sg, genPos, (hasTransform ? transform : null), (hasTransform ? new JU.M4() : null)); +if (this.sg == null) return null; +name = ""; +if (this.sg.itaNumber.equals("0")) { +if (transform == null) { +transform = sgdata.get("trm"); +var hm = sgdata.get("hm"); +this.sg.setHMSymbol(hm); +}name = null; +System.out.println("SpaceGroupFinder: new setting: " + this.sg.asString()); +}return this.sg; +}, "~B"); +Clazz.defineMethod(c$, "findGroupByOperations", +function(){ +var bsOps = new JU.BS(); +var bsGroups = new JU.BS(); +var n = 0; +var nChecked = 0; +try { +if (this.isUnknown) { +if (JS.SpaceGroupFinder.bsOpGroups == null) JS.SpaceGroupFinder.loadData(this.vwr, this); +} else { +bsGroups.set(0); +}if (this.xyzList != null) { +if (this.isUnknown) { +var ret = this.getGroupsWithOps(this.xyzList, this.unitCellParams, this.isAssign); +if (!this.isAssign || ret == null) return ret; +this.sg = ret; +}if (this.oabc == null) this.uc.setUnitCellFromParams(this.unitCellParams, false, this.slop); +}var uc0 = this.uc; +if (this.oabc == null) { +this.oabc = this.uc.getUnitCellVectors(); +this.uc = this.uc.getUnitCellMultiplied(); +if (this.origin != null && !this.origin.equals(this.uc.getCartesianOffset())) { +this.oabc[0].setT(this.origin); +this.uc.setCartesianOffset(this.origin); +}} else { +this.uc.getUnitCell(this.oabc, false, "finder"); +}if (this.isUnknown) this.filterGroups(bsGroups, this.uc.getUnitCellParams()); + else if (this.nAtoms == 0) { +return this.sg; +}if (this.bsAtoms != null) { +this.atoms = new Array(this.bsAtoms.cardinality()); +System.out.println("bsAtoms = " + this.bsAtoms); +for (var p = 0, i = this.bsAtoms.nextSetBit(0); i >= 0; i = this.bsAtoms.nextSetBit(i + 1), p++) { +var a = this.cartesians[i]; +var type = a.getAtomicAndIsotopeNumber(); +(this.atoms[p] = Clazz.innerTypeInstance(JS.SpaceGroupFinder.SGAtom, this, null, type, i, a.getAtomName(), a.getOccupancy100())).setT(this.toFractional(a, this.uc)); +} +}var bsPoints = JU.BSUtil.newBitSet2(0, this.nAtoms); +this.nAtoms = bsPoints.cardinality(); +uc0 = this.uc; +if (this.nAtoms > 0) { +for (var i = bsPoints.nextSetBit(0); i >= 0; i = bsPoints.nextSetBit(i + 1)) { +this.uc.unitize(this.atoms[i]); +} +this.removeDuplicates(bsPoints); +if (this.$checkSupercell) { +this.uc = this.checkSupercell(this.vwr, this.uc, bsPoints, 1, this.scaling); +this.uc = this.checkSupercell(this.vwr, this.uc, bsPoints, 2, this.scaling); +this.uc = this.checkSupercell(this.vwr, this.uc, bsPoints, 3, this.scaling); +this.isSupercell = (this.uc !== uc0); +if (this.isSupercell) { +if (this.scaling.x != 1) System.out.println("supercell found; a scaled by 1/" + this.scaling.x); +if (this.scaling.y != 1) System.out.println("supercell found; b scaled by 1/" + this.scaling.y); +if (this.scaling.z != 1) System.out.println("supercell found; c scaled by 1/" + this.scaling.z); +}}}n = bsPoints.cardinality(); +this.bsAtoms = new JU.BS(); +var newAtoms = new Array(n); +for (var p = 0, i = bsPoints.nextSetBit(0); i >= 0; i = bsPoints.nextSetBit(i + 1)) { +var a = this.atoms[i]; +newAtoms[p++] = a; +if (this.isSupercell) { +a.setT(this.toFractional(this.cartesians[a.index], this.uc)); +this.uc.unitize(a); +}this.bsAtoms.set(this.atoms[i].index); +} +this.atoms = newAtoms; +this.nAtoms = n; +bsPoints.clearAll(); +bsPoints.setBits(0, this.nAtoms); +this.bsPoints0 = JU.BS.copy(bsPoints); +var temp1 = JU.BS.newN(JS.SpaceGroupFinder.OP_COUNT); +var targeted = JU.BS.newN(this.nAtoms); +bsOps.setBits(1, this.sg == null ? JS.SpaceGroupFinder.OP_COUNT : this.sg.getOperationCount()); +if (this.nAtoms == 0) { +bsGroups.clearBits(1, JS.SpaceGroupFinder.GROUP_COUNT); +bsOps.clearAll(); +}var uncheckedOps = JU.BS.newN(JS.SpaceGroupFinder.OP_COUNT); +var opsChecked = JU.BS.newN(JS.SpaceGroupFinder.OP_COUNT); +opsChecked.set(0); +var hasC1 = false; +for (var iop = bsOps.nextSetBit(1); iop > 0 && !bsGroups.isEmpty(); iop = bsOps.nextSetBit(iop + 1)) { +var op = (this.sg == null ? JS.SpaceGroupFinder.getOp(iop) : this.sg.getOperation(iop)); +if (this.sg == null) { +System.out.println("\nChecking operation " + iop + " " + JS.SpaceGroupFinder.opXYZ[iop]); +System.out.println("bsGroups = " + bsGroups); +System.out.println("bsOps = " + bsOps); +nChecked++; +}var isOK = true; +bsPoints.clearAll(); +bsPoints.or(this.bsPoints0); +targeted.clearAll(); +for (var i = bsPoints.nextSetBit(0); i >= 0; i = bsPoints.nextSetBit(i + 1)) { +bsPoints.clear(i); +var j = this.findEquiv(this.uc, iop, op, i, bsPoints, this.pTemp, true); +if (j < 0 && this.sg == null) { +System.out.println("failed op " + iop + " for atom " + i + " " + this.atoms[i].name + " " + this.atoms[i] + " looking for " + this.pTemp + "\n" + op); +isOK = false; +break; +}if (j >= 0 && i != j) { +targeted.set(j); +}} +if (this.sg == null) { +var myGroups = JS.SpaceGroupFinder.bsOpGroups[iop]; +bsOps.clear(iop); +opsChecked.set(iop); +if (isOK) { +if (iop == 1) hasC1 = true; +this.targets.or(targeted); +bsGroups.and(myGroups); +temp1.setBits(1, JS.SpaceGroupFinder.OP_COUNT); +for (var i = bsGroups.nextSetBit(0); i >= 0; i = bsGroups.nextSetBit(i + 1)) { +temp1.and(JS.SpaceGroupFinder.bsGroupOps[i]); +} +uncheckedOps.or(temp1); +bsOps.andNot(temp1); +} else { +bsGroups.andNot(myGroups); +temp1.clearAll(); +for (var i = bsGroups.nextSetBit(0); i >= 0; i = bsGroups.nextSetBit(i + 1)) { +temp1.or(JS.SpaceGroupFinder.bsGroupOps[i]); +} +bsOps.and(temp1); +}} else { +this.targets.or(targeted); +}} +if (this.sg == null) { +n = bsGroups.cardinality(); +if (n == 0) { +bsGroups.set(hasC1 ? 1 : 0); +n = 1; +if (hasC1 && !this.asString) { +uncheckedOps.clearAll(); +uncheckedOps.set(1); +opsChecked.clearAll(); +this.targets.clearAll(); +bsPoints.or(this.bsPoints0); +}}this.isg = bsGroups.nextSetBit(0); +if (n == 1) { +if (this.isg > 0) { +opsChecked.and(JS.SpaceGroupFinder.bsGroupOps[this.isg]); +uncheckedOps.and(JS.SpaceGroupFinder.bsGroupOps[this.isg]); +uncheckedOps.andNot(opsChecked); +uncheckedOps.or(JS.SpaceGroupFinder.bsGroupOps[this.isg]); +uncheckedOps.clear(0); +bsPoints.or(this.bsPoints0); +bsPoints.andNot(this.targets); +if (!this.checkBasis(this.uc, uncheckedOps, bsPoints, this.targets)) { +this.isg = 0; +}}if (this.isg == 0) this.targets.clearAll(); +}}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +bsGroups.clearAll(); +} else { +throw e; +} +} +if (this.sg == null) { +System.out.println("checked " + nChecked + " operations; now " + n + " " + bsGroups + " " + bsOps); +for (var i = bsGroups.nextSetBit(0); i >= 0; i = bsGroups.nextSetBit(i + 1)) { +System.out.println(JS.SpaceGroup.nameToGroup.get(JS.SpaceGroupFinder.groupNames[i])); +} +if (n != 1) return null; +this.sg = JS.SpaceGroup.nameToGroup.get(JS.SpaceGroupFinder.groupNames[this.isg]); +}return this.sg; +}); +c$.setSpaceGroupAndUnitCell = Clazz.defineMethod(c$, "setSpaceGroupAndUnitCell", +function(sg, params, oabc, allowSame){ +var sym = new JS.Symmetry(); +sym.setSpaceGroupTo(sg); +if (oabc == null) { +var newParams = Clazz.newFloatArray (6, 0); +if (!JS.UnitCell.createCompatibleUnitCell(sg, params, newParams, allowSame)) { +newParams = params; +}sym.setUnitCellFromParams(newParams, false, NaN); +} else { +sym.getUnitCell(oabc, false, "modelkit"); +}return sym; +}, "JS.SpaceGroup,~A,~A,~B"); +Clazz.defineMethod(c$, "removeDuplicates", +function(bs){ +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = this.atoms[i]; +for (var j = bs.nextSetBit(0); j < i; j = bs.nextSetBit(j + 1)) { +var b = this.atoms[j]; +if (a.typeAndOcc == b.typeAndOcc && a.distanceSquared(b) < 1.96E-6) { +bs.clear(i); +break; +}} +} +}, "JU.BS"); +Clazz.defineMethod(c$, "dumpBasis", +function(ops, bs1, bsPoints){ +}, "JU.BS,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "checkBasis", +function(uc, uncheckedOps, bsPoints, targets){ +var n = uncheckedOps.cardinality(); +if (n == 0) return true; +var bs = new JU.BS(); +bs.or(bsPoints); +System.out.println("finishing check for basis for " + n + " operations"); +for (var iop = uncheckedOps.nextSetBit(0); iop >= 0; iop = uncheckedOps.nextSetBit(iop + 1)) { +bs.or(bsPoints); +var op = JS.SpaceGroupFinder.getOp(iop); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var j = this.findEquiv(uc, -1, op, i, bs, this.pTemp, false); +if (j < 0) return false; +if (i != j) { +j = Math.max(i, j); +targets.set(j); +bs.clear(j); +}} +} +return true; +}, "J.api.SymmetryInterface,JU.BS,JU.BS,JU.BS"); +Clazz.defineMethod(c$, "filterGroups", +function(bsGroups, params){ +var isOrtho = false; +var isTet = false; +var isTri = false; +var isRhombo = false; +var isCubic = false; +var absame = this.approx001(params[0] - params[1]); +var bcsame = this.approx001(params[1] - params[2]); +if (params[3] == 90) { +if (params[4] == 90) { +if (absame && params[0] != params[1]) System.out.println("OHOH"); +isTri = (absame && this.approx001(params[5] - 120)); +if (params[5] == 90) { +isCubic = (absame && params[1] == params[2]); +isTet = (!isCubic && absame); +isOrtho = (!isCubic && !isTet); +}}} else if (absame && bcsame && this.approx001(params[3] - params[4]) && this.approx001(params[4] - params[5])) { +isRhombo = true; +}bsGroups.setBits(0, 2); +var i0 = 2; +var i = 2; +while (true) { +i = JS.SpaceGroupFinder.scanTo(i, "16"); +if (!isOrtho && !isTet && !isTri && !isRhombo && !isCubic) break; +i = JS.SpaceGroupFinder.scanTo(i, "75"); +if (!isTet && !isTri && !isRhombo && !isCubic) break; +i = JS.SpaceGroupFinder.scanTo(i, "143"); +if (!isTri && !isRhombo && !isCubic) break; +i0 = i; +for (; ; i++) { +var g = JS.SpaceGroupFinder.groupNames[i]; +if (g.indexOf(":r") >= 0) { +if (!isRhombo) continue; +bsGroups.set(i); +}if (g.startsWith("195")) { +if (isRhombo) return; +break; +}} +if (!isCubic) break; +bsGroups.setBits(2, i0); +i0 = i; +i = JS.SpaceGroupFinder.GROUP_COUNT; +break; +} +bsGroups.setBits(i0, i); +}, "JU.BS,~A"); +Clazz.defineMethod(c$, "approx001", +function(d){ +return Math.abs(d) < 0.001; +}, "~N"); +c$.scanTo = Clazz.defineMethod(c$, "scanTo", +function(i, num){ +num = "000" + num; +num = num.substring(num.length - 3); +for (; ; i++) { +if (JS.SpaceGroupFinder.groupNames[i].startsWith(num)) break; +} +return i; +}, "~N,~S"); +Clazz.defineMethod(c$, "getGroupsWithOps", +function(xyzList, unitCellParams, isAssign){ +var groups = new JU.BS(); +if (unitCellParams == null) { +groups.setBits(0, JS.SpaceGroupFinder.GROUP_COUNT); +} else { +this.filterGroups(groups, unitCellParams); +}var sgo = null; +if (!JS.SpaceGroup.isXYZList(xyzList)) { +sgo = JS.SpaceGroup.determineSpaceGroupNA(xyzList, unitCellParams); +if (sgo == null) return null; +sgo.checkHallOperators(); +var tableNo = ("00" + sgo.jmolId); +var pt = tableNo.indexOf(":"); +tableNo = tableNo.substring((pt < 0 ? tableNo.length : pt) - 3); +for (var i = 0; i < JS.SpaceGroupFinder.GROUP_COUNT; i++) if (JS.SpaceGroupFinder.groupNames[i].equals(tableNo)) return (groups.get(i) ? sgo : null); + +return null; +}var isEqual = xyzList.indexOf("&") < 0 || isAssign; +var ops = JU.PT.split(JU.PT.trim(xyzList.trim().$replace('&', ';'), ";="), ";"); +for (var j = ops.length; --j >= 0; ) { +var xyz = ops[j]; +if (xyz == null) return "?" + ops[j] + "?"; +xyz = JS.SymmetryOperation.getJmolCanonicalXYZ(xyz); +for (var i = JS.SpaceGroupFinder.opXYZ.length; --i >= 0; ) { +if (JS.SpaceGroupFinder.opXYZ[i].equals(xyz)) { +groups.and(JS.SpaceGroupFinder.bsOpGroups[i]); +break; +}if (i == 0) groups.clearAll(); +} +} +if (groups.isEmpty()) { +return (isAssign ? JS.SpaceGroup.createSpaceGroupN(xyzList) : null); +}if (isEqual) { +for (var n = ops.length, i = groups.nextSetBit(0); i >= 0; i = groups.nextSetBit(i + 1)) { +if (JS.SpaceGroupFinder.bsGroupOps[i].cardinality() == n) { +if (isAssign) { +return JS.SpaceGroup.createSpaceGroupN(JS.SpaceGroupFinder.groupNames[i]); +}return JS.SpaceGroup.getInfo(null, JS.SpaceGroupFinder.groupNames[i], unitCellParams, true, false); +}} +return null; +}var ret = new Array(groups.cardinality()); +for (var p = 0, i = groups.nextSetBit(0); i >= 0; i = groups.nextSetBit(i + 1)) { +ret[p++] = JS.SpaceGroupFinder.groupNames[i]; +} +return ret; +}, "~S,~A,~B"); +Clazz.defineMethod(c$, "toFractional", +function(a, uc){ +this.pTemp.setT(a); +uc.toFractional(this.pTemp, false); +return this.pTemp; +}, "JM.Atom,J.api.SymmetryInterface"); +c$.getOp = Clazz.defineMethod(c$, "getOp", +function(iop){ +var op = JS.SpaceGroupFinder.ops[iop]; +if (op == null) { +JS.SpaceGroupFinder.ops[iop] = op = new JS.SymmetryOperation(null, iop, false); +op.setMatrixFromXYZ(JS.SpaceGroupFinder.opXYZ[iop], 0, false); +op.doFinalize(); +}return op; +}, "~N"); +Clazz.defineMethod(c$, "checkSupercell", +function(vwr, uc, bsPoints, abc, scaling){ +if (bsPoints.isEmpty()) return uc; +var minF = 2147483647; +var maxF = -2147483648; +var counts = Clazz.newIntArray (101, 0); +var nAtoms = bsPoints.cardinality(); +for (var i = bsPoints.nextSetBit(0); i >= 0; i = bsPoints.nextSetBit(i + 1)) { +var a = this.atoms[i]; +var type = a.typeAndOcc; +var b; +var f; +for (var j = bsPoints.nextSetBit(0); j >= 0; j = bsPoints.nextSetBit(j + 1)) { +if (j == i || (b = this.atoms[j]).typeAndOcc != type) continue; +this.pTemp.sub2(b, a); +switch (abc) { +case 1: +if (this.approx0(f = this.pTemp.x) || !this.approx0(this.pTemp.y) || !this.approx0(this.pTemp.z)) continue; +break; +case 2: +if (this.approx0(f = this.pTemp.y) || !this.approx0(this.pTemp.x) || !this.approx0(this.pTemp.z)) continue; +break; +default: +case 3: +if (this.approx0(f = this.pTemp.z) || !this.approx0(this.pTemp.x) || !this.approx0(this.pTemp.y)) continue; +break; +} +var n = this.approxInt(1 / f); +if (n == 0 || Clazz.doubleToInt(nAtoms / n) != 1 * nAtoms / n || n > 100) continue; +if (n > maxF) maxF = n; +if (n < minF) minF = n; +counts[n]++; +} +} +var n = maxF; +while (n >= minF) { +if (counts[n] > 0 && counts[n] == Clazz.doubleToInt((n - 1) * nAtoms / n)) { +break; +}--n; +} +if (n < minF) return uc; +var oabc = uc.getUnitCellVectors(); +oabc[abc].scale(1 / n); +switch (abc) { +case 1: +scaling.x = n; +break; +case 2: +scaling.y = n; +break; +case 3: +scaling.z = n; +break; +} +(uc = new JS.Symmetry()).getUnitCell(oabc, false, "scaled"); +var f = 0; +for (var i = bsPoints.nextSetBit(0); i >= 0; i = bsPoints.nextSetBit(i + 1)) { +switch (abc) { +case 1: +f = this.approxInt(n * this.atoms[i].x); +break; +case 2: +f = this.approxInt(n * this.atoms[i].y); +break; +case 3: +f = this.approxInt(n * this.atoms[i].z); +break; +} +if (f != 0) { +this.atoms[i] = null; +bsPoints.clear(i); +}} +nAtoms = bsPoints.cardinality(); +return uc; +}, "JV.Viewer,JS.Symmetry,JU.BS,~N,JU.P3"); +Clazz.defineMethod(c$, "approx0", +function(f){ +return (Math.abs(f) < this.slop); +}, "~N"); +Clazz.defineMethod(c$, "approxInt", +function(finv){ +var i = Clazz.floatToInt(finv + this.slop); +return (this.approx0(finv - i) ? i : 0); +}, "~N"); +Clazz.defineMethod(c$, "findEquiv", +function(uc, iop, op, i, bsPoints, pt, andClear){ +var a = this.atoms[i]; +pt.setT(a); +op.rotTrans(pt); +uc.unitize(pt); +if (pt.distanceSquared(a) == 0) { +return i; +}var testiop = -99; +var type = a.typeAndOcc; +var name = a.name; +for (var j = this.nAtoms; --j >= 0; ) { +var b = this.atoms[j]; +if (b.typeAndOcc != type) continue; +var d = b.distance(pt); +if (d * d < 1.96E-6 || (1 - d) * (1 - d) < 1.96E-6 && this.latticeShift(pt, b)) { +if (andClear) { +j = Math.max(i, j); +if (i != j) bsPoints.clear(j); +}return j; +}} +return -1; +}, "J.api.SymmetryInterface,~N,JS.SymmetryOperation,~N,JU.BS,JU.P3,~B"); +Clazz.defineMethod(c$, "latticeShift", +function(a, b){ +var is1 = (this.approx0(Math.abs(a.x - b.x) - 1) || this.approx0(Math.abs(a.y - b.y) - 1) || this.approx0(Math.abs(a.z - b.z) - 1)); +if (is1) { +}return is1; +}, "JU.P3,JU.P3"); +c$.main = Clazz.defineMethod(c$, "main", +function(args){ +if (JS.SpaceGroupFinder.loadData(null, new JS.SpaceGroupFinder())) System.out.println("OK"); +}, "~A"); +c$.loadData = Clazz.defineMethod(c$, "loadData", +function(vwr, me){ +try { +JS.SpaceGroupFinder.groupNames = JS.SpaceGroupFinder.getList(vwr, me, null, "sggroups_ordered.txt"); +JS.SpaceGroupFinder.GROUP_COUNT = JS.SpaceGroupFinder.groupNames.length; +JS.SpaceGroupFinder.opXYZ = JS.SpaceGroupFinder.getList(vwr, me, null, "sgops_ordered.txt"); +JS.SpaceGroupFinder.OP_COUNT = JS.SpaceGroupFinder.opXYZ.length; +var map = JS.SpaceGroupFinder.getList(vwr, me, new Array(JS.SpaceGroupFinder.OP_COUNT), "sgmap.txt"); +JS.SpaceGroupFinder.bsGroupOps = new Array(JS.SpaceGroupFinder.GROUP_COUNT); +JS.SpaceGroupFinder.bsOpGroups = new Array(JS.SpaceGroupFinder.OP_COUNT); +for (var j = 0; j < JS.SpaceGroupFinder.GROUP_COUNT; j++) JS.SpaceGroupFinder.bsGroupOps[j] = JU.BS.newN(JS.SpaceGroupFinder.OP_COUNT); + +for (var i = 0; i < JS.SpaceGroupFinder.OP_COUNT; i++) { +var m = map[i]; +var n = m.length; +JS.SpaceGroupFinder.bsOpGroups[i] = JU.BS.newN(JS.SpaceGroupFinder.GROUP_COUNT); +for (var j = 0; j < n; j++) { +if (m.charAt(j) == '1') { +JS.SpaceGroupFinder.bsGroupOps[j].set(i); +JS.SpaceGroupFinder.bsOpGroups[i].set(j); +}} +} +JS.SpaceGroupFinder.ops = new Array(JS.SpaceGroupFinder.OP_COUNT); +return true; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return false; +} else { +throw e; +} +} finally { +if (JS.SpaceGroupFinder.rdr != null) try { +JS.SpaceGroupFinder.rdr.close(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +} +}, "JV.Viewer,~O"); +c$.getList = Clazz.defineMethod(c$, "getList", +function(vwr, me, list, fileName){ +JS.SpaceGroupFinder.rdr = JV.FileManager.getBufferedReaderForResource(vwr, me, "JS/", "sg/" + fileName); +if (list == null) { +var l = new JU.Lst(); +var line; +while ((line = JS.SpaceGroupFinder.rdr.readLine()) != null) { +if (line.length > 0) { +l.addLast(line); +}} +l.toArray(list = new Array(l.size())); +} else { +for (var i = 0; i < list.length; i++) list[i] = JS.SpaceGroupFinder.rdr.readLine(); + +}JS.SpaceGroupFinder.rdr.close(); +return list; +}, "JV.Viewer,~O,~A,~S"); +c$.$SpaceGroupFinder$SGAtom$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.typeAndOcc = 0; +this.index = 0; +this.name = null; +Clazz.instantialize(this, arguments);}, JS.SpaceGroupFinder, "SGAtom", JU.P3); +Clazz.makeConstructor(c$, +function(type, index, name, occupancy){ +Clazz.superConstructor (this, JS.SpaceGroupFinder.SGAtom, []); +this.typeAndOcc = type + 1000 * occupancy; +this.index = index; +this.name = name; +}, "~N,~N,~S,~N"); +/*eoif4*/})(); +}; +c$.GROUP_COUNT = 0; +c$.OP_COUNT = 0; +c$.bsOpGroups = null; +c$.bsGroupOps = null; +c$.groupNames = null; +c$.opXYZ = null; +c$.ops = null; +c$.rdr = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SwingConstants.js b/config/plugins/visualizations/jmol/static/j2s/JS/SwingConstants.js new file mode 100755 index 000000000000..eed95cd48243 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SwingConstants.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JS"); +(function(){ +var c$ = Clazz.declareType(JS, "SwingConstants", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SwingController.js b/config/plugins/visualizations/jmol/static/j2s/JS/SwingController.js new file mode 100755 index 000000000000..e03ac6b81d79 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SwingController.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "SwingController"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/Symmetry.js b/config/plugins/visualizations/jmol/static/j2s/JS/Symmetry.js new file mode 100755 index 000000000000..94977e6f0298 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/Symmetry.js @@ -0,0 +1,1034 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.api.SymmetryInterface"], "JS.Symmetry", ["java.util.Hashtable", "JU.BS", "$.JSJSONParser", "$.Lst", "$.M4", "$.P3", "$.PT", "$.Rdr", "$.SB", "J.api.Interface", "J.bspt.Bspt", "JS.PointGroup", "$.SpaceGroup", "$.SymmetryInfo", "$.SymmetryOperation", "$.UnitCell", "JU.Escape", "$.Logger", "$.SimpleUnitCell", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.spaceGroup = null; +this.unitCell = null; +this.$isBio = false; +this.pointGroup = null; +this.cip = null; +this.symmetryInfo = null; +this.desc = null; +this.transformMatrix = null; +Clazz.instantialize(this, arguments);}, JS, "Symmetry", null, J.api.SymmetryInterface); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "isBio", +function(){ +return this.$isBio; +}); +Clazz.overrideMethod(c$, "setPointGroup", +function(vwr, siLast, center, atomset, bsAtoms, haveVibration, distanceTolerance, linearTolerance, maxAtoms, localEnvOnly){ +this.pointGroup = JS.PointGroup.getPointGroup(siLast == null ? null : (siLast).pointGroup, center, atomset, bsAtoms, haveVibration, distanceTolerance, linearTolerance, maxAtoms, localEnvOnly, vwr.getBoolean(603979956), vwr.getScalePixelsPerAngstrom(false)); +return this; +}, "JV.Viewer,J.api.SymmetryInterface,JU.T3,~A,JU.BS,~B,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "getPointGroupName", +function(){ +return this.pointGroup.getName(); +}); +Clazz.overrideMethod(c$, "getPointGroupInfo", +function(modelIndex, drawID, asInfo, type, index, scale){ +if (drawID == null && !asInfo && this.pointGroup.textInfo != null) return this.pointGroup.textInfo; + else if (drawID == null && this.pointGroup.isDrawType(type, index, scale)) return this.pointGroup.drawInfo; + else if (asInfo && this.pointGroup.info != null) return this.pointGroup.info; +return this.pointGroup.getInfo(modelIndex, drawID, asInfo, type, index, scale); +}, "~N,~S,~B,~S,~N,~N"); +Clazz.overrideMethod(c$, "setSpaceGroup", +function(doNormalize){ +this.symmetryInfo = null; +if (this.spaceGroup == null) this.spaceGroup = JS.SpaceGroup.getNull(true, doNormalize, false); +}, "~B"); +Clazz.overrideMethod(c$, "addSpaceGroupOperation", +function(xyz, opId){ +return this.spaceGroup.addSymmetry(xyz, opId, false); +}, "~S,~N"); +Clazz.overrideMethod(c$, "addBioMoleculeOperation", +function(mat, isReverse){ +this.$isBio = this.spaceGroup.isBio = true; +return this.spaceGroup.addSymmetry((isReverse ? "!" : "") + "[[bio" + mat, 0, false); +}, "JU.M4,~B"); +Clazz.overrideMethod(c$, "setLattice", +function(latt){ +this.spaceGroup.setLatticeParam(latt); +}, "~N"); +Clazz.overrideMethod(c$, "getSpaceGroup", +function(){ +return this.spaceGroup; +}); +Clazz.overrideMethod(c$, "getSpaceGroupInfoObj", +function(name, params, isFull, addNonstandard){ +var isNameToXYZList = false; +switch (name) { +case "list": +return this.getSpaceGroupList(params); +case "opsCtr": +return this.spaceGroup.getOpsCtr(params); +case "nameToXYZList": +isNameToXYZList = true; +case "itaIndex": +case "itaTransform": +case "itaNumber": +var sg = null; +if (params != null) { +sg = JS.SpaceGroup.determineSpaceGroupN(params); +if (sg == null && isNameToXYZList) sg = JS.SpaceGroup.createSpaceGroupN(params); +} else if (this.spaceGroup != null) { +sg = this.spaceGroup; +} else if (this.symmetryInfo != null) { +sg = this.symmetryInfo.getDerivedSpaceGroup(); +}switch (sg == null ? "" : name) { +case "nameToXYZList": +var genPos = new JU.Lst(); +sg.setFinalOperations(); +for (var i = 0, n = sg.getOperationCount(); i < n; i++) { +genPos.addLast((sg.getOperation(i)).xyz); +} +return genPos; +case "itaIndex": +return sg.getItaIndex(); +case "itaTransform": +return sg.itaTransform; +case "itaNumber": +return sg.itaNumber; +} +return null; +default: +return JS.SpaceGroup.getInfo(this.spaceGroup, name, params, isFull, addNonstandard); +} +}, "~S,~O,~B,~B"); +Clazz.defineMethod(c$, "getSpaceGroupList", +function(vwr){ +var sb = new JU.SB(); +var list = this.getSpaceGroupJSON(vwr, "ITA", "ALL", 0); +for (var i = 0, n = list.size(); i < n; i++) { +var map = list.get(i); +sb.appendO(map.get("sg")).appendC('.').appendO(map.get("set")).appendC('\t').appendO(map.get("hm")).appendC('\t').appendO(map.get("sg")).appendC(':').appendO(map.get("trm")).appendC('\n'); +} +return sb.toString(); +}, "JV.Viewer"); +Clazz.overrideMethod(c$, "getLatticeDesignation", +function(){ +return this.spaceGroup.getLatticeDesignation(); +}); +Clazz.overrideMethod(c$, "setFinalOperations", +function(dim, name, atoms, iAtomFirst, noSymmetryCount, doNormalize, filterSymop){ +if (name != null && (name.startsWith("bio") || name.indexOf(" *(") >= 0)) this.spaceGroup.setName(name); +if (filterSymop != null) { +var lst = new JU.Lst(); +lst.addLast(this.spaceGroup.operations[0]); +for (var i = 1; i < this.spaceGroup.operationCount; i++) if (filterSymop.contains(" " + (i + 1) + " ")) lst.addLast(this.spaceGroup.operations[i]); + +this.spaceGroup = JS.SpaceGroup.createSpaceGroup(-1, name + " *(" + filterSymop.trim() + ")", lst, -1); +}this.spaceGroup.setFinalOperationsForAtoms(dim, atoms, iAtomFirst, noSymmetryCount, doNormalize); +}, "~N,~S,~A,~N,~N,~B,~S"); +Clazz.overrideMethod(c$, "getSpaceGroupOperation", +function(i){ +return (this.spaceGroup == null || this.spaceGroup.operations == null || i >= this.spaceGroup.operations.length ? null : this.spaceGroup.finalOperations == null ? this.spaceGroup.operations[i] : this.spaceGroup.finalOperations[i]); +}, "~N"); +Clazz.overrideMethod(c$, "getSpaceGroupXyz", +function(i, doNormalize){ +return this.spaceGroup.getXyz(i, doNormalize); +}, "~N,~B"); +Clazz.overrideMethod(c$, "newSpaceGroupPoint", +function(pt, i, o, transX, transY, transZ, retPoint){ +if (o == null && this.spaceGroup.finalOperations == null) { +var op = this.spaceGroup.operations[i]; +if (!op.isFinalized) op.doFinalize(); +o = op; +}JS.SymmetryOperation.rotateAndTranslatePoint((o == null ? this.spaceGroup.finalOperations[i] : o), pt, transX, transY, transZ, retPoint); +}, "JU.P3,~N,JU.M4,~N,~N,~N,JU.P3"); +Clazz.overrideMethod(c$, "rotateAxes", +function(iop, axes, ptTemp, mTemp){ +return (iop == 0 ? axes : this.spaceGroup.finalOperations[iop].rotateAxes(axes, this.unitCell, ptTemp, mTemp)); +}, "~N,~A,JU.P3,JU.M3"); +Clazz.overrideMethod(c$, "getSpinOp", +function(op){ +return this.spaceGroup.operations[op].getMagneticOp(); +}, "~N"); +Clazz.overrideMethod(c$, "getLatticeOp", +function(){ +return this.spaceGroup.latticeOp; +}); +Clazz.overrideMethod(c$, "getLatticeCentering", +function(){ +return JS.SymmetryOperation.getLatticeCentering(this.getSymmetryOperations()); +}); +Clazz.overrideMethod(c$, "getOperationRsVs", +function(iop){ +return (this.spaceGroup.finalOperations == null ? this.spaceGroup.operations : this.spaceGroup.finalOperations)[iop].rsvs; +}, "~N"); +Clazz.overrideMethod(c$, "getSiteMultiplicity", +function(pt){ +return this.spaceGroup.getSiteMultiplicity(pt, this.unitCell); +}, "JU.P3"); +Clazz.overrideMethod(c$, "getSpaceGroupName", +function(){ +return (this.spaceGroup != null ? this.spaceGroup.getName() : this.symmetryInfo != null ? this.symmetryInfo.sgName : this.unitCell != null && this.unitCell.name.length > 0 ? "cell=" + this.unitCell.name : ""); +}); +Clazz.overrideMethod(c$, "getSpaceGroupNameType", +function(type){ +return (this.spaceGroup == null ? null : this.spaceGroup.getNameType(type, this)); +}, "~S"); +Clazz.overrideMethod(c$, "getLatticeType", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.latticeType : this.spaceGroup == null ? 'P' : this.spaceGroup.latticeType); +}); +Clazz.overrideMethod(c$, "getIntTableNumber", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.intlTableNo : this.spaceGroup == null ? null : this.spaceGroup.itaNumber); +}); +Clazz.overrideMethod(c$, "getIntTableIndex", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.intlTableIndex : this.spaceGroup == null ? null : this.spaceGroup.getItaIndex()); +}); +Clazz.overrideMethod(c$, "getIntTableTransform", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.intlTableTransform : this.spaceGroup == null ? null : this.spaceGroup.itaTransform); +}); +Clazz.overrideMethod(c$, "getIntTableNumberFull", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.intlTableJmolID : this.spaceGroup == null ? null : this.spaceGroup.jmolId != null ? this.spaceGroup.jmolId : this.spaceGroup.itaNumber); +}); +Clazz.overrideMethod(c$, "getCoordinatesAreFractional", +function(){ +return this.symmetryInfo == null || this.symmetryInfo.coordinatesAreFractional; +}); +Clazz.overrideMethod(c$, "getCellRange", +function(){ +return this.symmetryInfo == null ? null : this.symmetryInfo.cellRange; +}); +Clazz.overrideMethod(c$, "getSymmetryInfoStr", +function(){ +if (this.symmetryInfo != null) return this.symmetryInfo.infoStr; +if (this.spaceGroup == null) return ""; +(this.symmetryInfo = new JS.SymmetryInfo()).setSymmetryInfoFromModelkit(this.spaceGroup); +return this.symmetryInfo.infoStr; +}); +Clazz.overrideMethod(c$, "getSpaceGroupOperationCount", +function(){ +return (this.symmetryInfo != null && this.symmetryInfo.symmetryOperations != null ? this.symmetryInfo.symmetryOperations.length : this.spaceGroup != null ? (this.spaceGroup.finalOperations != null ? this.spaceGroup.finalOperations.length : this.spaceGroup.operationCount) : 0); +}); +Clazz.overrideMethod(c$, "getSymmetryOperations", +function(){ +if (this.symmetryInfo != null) return this.symmetryInfo.symmetryOperations; +if (this.spaceGroup == null) this.spaceGroup = JS.SpaceGroup.getNull(true, false, true); +this.spaceGroup.setFinalOperations(); +return this.spaceGroup.finalOperations; +}); +Clazz.overrideMethod(c$, "getAdditionalOperationsCount", +function(){ +return (this.symmetryInfo != null && this.symmetryInfo.symmetryOperations != null && this.symmetryInfo.getAdditionalOperations() != null ? this.symmetryInfo.additionalOperations.length : this.spaceGroup != null && this.spaceGroup.finalOperations != null ? this.spaceGroup.getAdditionalOperationsCount() : 0); +}); +Clazz.overrideMethod(c$, "getAdditionalOperations", +function(){ +if (this.symmetryInfo != null) return this.symmetryInfo.getAdditionalOperations(); +this.getSymmetryOperations(); +return this.spaceGroup.getAdditionalOperations(); +}); +Clazz.overrideMethod(c$, "isSimple", +function(){ +return (this.spaceGroup == null && (this.symmetryInfo == null || this.symmetryInfo.symmetryOperations == null)); +}); +Clazz.overrideMethod(c$, "haveUnitCell", +function(){ +return (this.unitCell != null); +}); +Clazz.overrideMethod(c$, "setUnitCellFromParams", +function(unitCellParams, setRelative, slop){ +if (unitCellParams == null) unitCellParams = Clazz.newFloatArray(-1, [1, 1, 1, 90, 90, 90]); +this.unitCell = JS.UnitCell.fromParams(unitCellParams, setRelative, slop); +return this; +}, "~A,~B,~N"); +Clazz.overrideMethod(c$, "unitCellEquals", +function(uc2){ +return ((uc2)).unitCell.isSameAs(this.unitCell.getF2C()); +}, "J.api.SymmetryInterface"); +Clazz.overrideMethod(c$, "isSymmetryCell", +function(sym){ +var uc = ((sym)).unitCell; +var myf2c = (!uc.isStandard() ? null : (this.symmetryInfo != null ? this.symmetryInfo.spaceGroupF2C : this.unitCell.getF2C())); +var ret = uc.isSameAs(myf2c); +if (this.symmetryInfo != null) { +if (this.symmetryInfo.setIsCurrentCell(ret)) { +this.setUnitCellFromParams(this.symmetryInfo.spaceGroupF2CParams, false, NaN); +}}return ret; +}, "J.api.SymmetryInterface"); +Clazz.overrideMethod(c$, "getUnitCellState", +function(){ +if (this.unitCell == null) return ""; +return this.unitCell.getState(); +}); +Clazz.overrideMethod(c$, "getMoreInfo", +function(){ +return this.unitCell.moreInfo; +}); +Clazz.overrideMethod(c$, "initializeOrientation", +function(mat){ +this.unitCell.initOrientation(mat); +}, "JU.M3"); +Clazz.overrideMethod(c$, "unitize", +function(ptFrac){ +this.unitCell.unitize(ptFrac); +}, "JU.T3"); +Clazz.overrideMethod(c$, "toUnitCell", +function(pt, offset){ +this.unitCell.toUnitCell(pt, offset); +}, "JU.T3,JU.T3"); +Clazz.overrideMethod(c$, "toSupercell", +function(fpt){ +return this.unitCell.toSupercell(fpt); +}, "JU.P3"); +Clazz.overrideMethod(c$, "toFractional", +function(pt, ignoreOffset){ +if (!this.$isBio) this.unitCell.toFractional(pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz.overrideMethod(c$, "toCartesian", +function(pt, ignoreOffset){ +if (!this.$isBio) this.unitCell.toCartesian(pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz.overrideMethod(c$, "getUnitCellParams", +function(){ +return this.unitCell.getUnitCellParams(); +}); +Clazz.overrideMethod(c$, "getUnitCellAsArray", +function(vectorsOnly){ +return this.unitCell.getUnitCellAsArray(vectorsOnly); +}, "~B"); +Clazz.overrideMethod(c$, "getUnitCellVerticesNoOffset", +function(){ +return this.unitCell.getVertices(); +}); +Clazz.overrideMethod(c$, "getCartesianOffset", +function(){ +return this.unitCell.getCartesianOffset(); +}); +Clazz.overrideMethod(c$, "getFractionalOffset", +function(){ +return this.unitCell.getFractionalOffset(); +}); +Clazz.overrideMethod(c$, "setOffsetPt", +function(pt){ +this.unitCell.setOffset(pt); +}, "JU.T3"); +Clazz.overrideMethod(c$, "setOffset", +function(nnn){ +var pt = new JU.P3(); +JU.SimpleUnitCell.ijkToPoint3f(nnn, pt, 0, 0); +this.unitCell.setOffset(pt); +}, "~N"); +Clazz.overrideMethod(c$, "getUnitCellMultiplier", +function(){ +return this.unitCell.getUnitCellMultiplier(); +}); +Clazz.overrideMethod(c$, "getUnitCellMultiplied", +function(){ +var uc = this.unitCell.getUnitCellMultiplied(); +if (uc === this.unitCell) return this; +var s = new JS.Symmetry(); +s.unitCell = uc; +return s; +}); +Clazz.overrideMethod(c$, "getCanonicalCopy", +function(scale, withOffset){ +return this.unitCell.getCanonicalCopy(scale, withOffset); +}, "~N,~B"); +Clazz.overrideMethod(c$, "getUnitCellInfoType", +function(infoType){ +return this.unitCell.getInfo(infoType); +}, "~N"); +Clazz.overrideMethod(c$, "getUnitCellInfo", +function(scaled){ +return (this.unitCell == null ? null : this.unitCell.dumpInfo(false, scaled)); +}, "~B"); +Clazz.overrideMethod(c$, "isSlab", +function(){ +return this.unitCell.isSlab(); +}); +Clazz.overrideMethod(c$, "isPolymer", +function(){ +return this.unitCell.isPolymer(); +}); +Clazz.defineMethod(c$, "getUnitCellVectors", +function(){ +return this.unitCell.getUnitCellVectors(); +}); +Clazz.overrideMethod(c$, "getUnitCell", +function(oabc, setRelative, name){ +if (oabc == null) return null; +this.unitCell = JS.UnitCell.fromOABC(oabc, setRelative); +if (name != null) this.unitCell.name = name; +return this; +}, "~A,~B,~S"); +Clazz.overrideMethod(c$, "isSupercell", +function(){ +return this.unitCell.isSupercell(); +}); +Clazz.overrideMethod(c$, "notInCentroid", +function(modelSet, bsAtoms, minmax){ +try { +var bsDelete = new JU.BS(); +var iAtom0 = bsAtoms.nextSetBit(0); +var molecules = modelSet.getMolecules(); +var moleculeCount = molecules.length; +var atoms = modelSet.at; +var isOneMolecule = (molecules[moleculeCount - 1].firstAtomIndex == modelSet.am[atoms[iAtom0].mi].firstAtomIndex); +var center = new JU.P3(); +var centroidPacked = (minmax[6] == 1); +nextMol : for (var i = moleculeCount; --i >= 0 && bsAtoms.get(molecules[i].firstAtomIndex); ) { +var bs = molecules[i].atomList; +center.set(0, 0, 0); +var n = 0; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +if (isOneMolecule || centroidPacked) { +center.setT(atoms[j]); +if (this.isNotCentroid(center, 1, minmax, centroidPacked)) { +if (isOneMolecule) bsDelete.set(j); +} else if (!isOneMolecule) { +continue nextMol; +}} else { +center.add(atoms[j]); +n++; +}} +if (centroidPacked || n > 0 && this.isNotCentroid(center, n, minmax, false)) bsDelete.or(bs); +} +return bsDelete; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "JM.ModelSet,JU.BS,~A"); +Clazz.defineMethod(c$, "isNotCentroid", +function(center, n, minmax, centroidPacked){ +center.scale(1 / n); +this.toFractional(center, false); +if (centroidPacked) return (center.x + 0.000005 <= minmax[0] || center.x - 0.000005 > minmax[3] || center.y + 0.000005 <= minmax[1] || center.y - 0.000005 > minmax[4] || center.z + 0.000005 <= minmax[2] || center.z - 0.000005 > minmax[5]); +return (center.x + 0.000005 <= minmax[0] || center.x + 0.00005 > minmax[3] || center.y + 0.000005 <= minmax[1] || center.y + 0.00005 > minmax[4] || center.z + 0.000005 <= minmax[2] || center.z + 0.00005 > minmax[5]); +}, "JU.P3,~N,~A,~B"); +Clazz.defineMethod(c$, "getDesc", +function(modelSet){ +if (modelSet == null) { +return (JS.Symmetry.nullDesc == null ? (JS.Symmetry.nullDesc = (J.api.Interface.getInterface("JS.SymmetryDesc", null, "modelkit"))) : JS.Symmetry.nullDesc); +}return (this.desc == null ? (this.desc = (J.api.Interface.getInterface("JS.SymmetryDesc", modelSet.vwr, "eval"))) : this.desc).set(modelSet); +}, "JM.ModelSet"); +Clazz.overrideMethod(c$, "getSymmetryInfoAtom", +function(modelSet, iatom, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, opList){ +return this.getDesc(modelSet).getSymopInfo(iatom, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, opList); +}, "JM.ModelSet,~N,~S,~N,JU.P3,JU.P3,JU.P3,~S,~N,~N,~N,~N,~A"); +Clazz.overrideMethod(c$, "getSpaceGroupInfo", +function(modelSet, sgName, modelIndex, isFull, cellParams){ +var isForModel = (sgName == null); +if (sgName == null) { +var info = modelSet.getModelAuxiliaryInfo(modelSet.vwr.am.cmi); +if (info != null) sgName = info.get("spaceGroup"); +}var cellInfo = null; +if (cellParams != null) { +cellInfo = new JS.Symmetry().setUnitCellFromParams(cellParams, false, NaN); +}return this.getDesc(modelSet).getSpaceGroupInfo(this, modelIndex, sgName, 0, null, null, null, 0, -1, isFull, isForModel, 0, cellInfo, null); +}, "JM.ModelSet,~S,~N,~B,~A"); +Clazz.overrideMethod(c$, "getV0abc", +function(def, retMatrix){ +var t = null; +{ +t = (def && def[0] ? def[0] : null); +}return ((t != null ? Clazz.instanceOf(t,"JU.T3") : Clazz.instanceOf(def,Array)) ? def : JS.UnitCell.getMatrixAndUnitCell(this.unitCell, def, retMatrix)); +}, "~O,JU.M4"); +Clazz.overrideMethod(c$, "getQuaternionRotation", +function(abc){ +return (this.unitCell == null ? null : this.unitCell.getQuaternionRotation(abc)); +}, "~S"); +Clazz.overrideMethod(c$, "getFractionalOrigin", +function(){ +return this.unitCell.getFractionalOrigin(); +}); +Clazz.overrideMethod(c$, "getState", +function(ms, modelIndex, commands){ +var isAssigned = (ms.getInfo(modelIndex, "spaceGroupAssigned") != null); +var pt = this.getFractionalOffset(); +var loadUC = false; +if (pt != null && (pt.x != 0 || pt.y != 0 || pt.z != 0)) { +commands.append("; set unitcell ").append(JU.Escape.eP(pt)); +loadUC = true; +}var ptm = this.getUnitCellMultiplier(); +if (ptm != null) { +commands.append("; set unitcell ").append(JU.SimpleUnitCell.escapeMultiplier(ptm)); +loadUC = true; +}var sg = ms.getInfo(modelIndex, "spaceGroup"); +if (isAssigned && sg != null) { +var cmd = "\n UNITCELL " + JU.Escape.e(ms.getUnitCell(modelIndex).getUnitCellVectors()); +commands.append(cmd); +commands.append("\n MODELKIT SPACEGROUP " + JU.PT.esc(sg)); +commands.append(cmd); +loadUC = true; +}return loadUC; +}, "JM.ModelSet,~N,JU.SB"); +Clazz.overrideMethod(c$, "getIterator", +function(vwr, atom, bsAtoms, radius){ +return (J.api.Interface.getInterface("JS.UnitCellIterator", vwr, "script")).set(this, atom, vwr.ms.at, bsAtoms, radius); +}, "JV.Viewer,JM.Atom,JU.BS,~N"); +Clazz.overrideMethod(c$, "toFromPrimitive", +function(toPrimitive, type, oabc, primitiveToCrystal){ +if (this.unitCell == null) this.unitCell = JS.UnitCell.fromOABC(oabc, false); +return this.unitCell.toFromPrimitive(toPrimitive, type, oabc, primitiveToCrystal); +}, "~B,~S,~A,JU.M3"); +Clazz.overrideMethod(c$, "generateCrystalClass", +function(pt00){ +if (this.symmetryInfo == null || !this.symmetryInfo.isCurrentCell) return null; +var ops = this.getSymmetryOperations(); +var lst = new JU.Lst(); +var isRandom = (pt00 == null); +var rand1 = 0; +var rand2 = 0; +var rand3 = 0; +var pt0; +if (isRandom) { +rand1 = 2.718281828459045; +rand2 = 3.141592653589793; +rand3 = Math.log10(2000); +pt0 = JU.P3.new3(rand1 + 1, rand2 + 2, rand3 + 3); +} else { +pt0 = JU.P3.newP(pt00); +}if (ops == null || this.unitCell == null) { +lst.addLast(pt0); +} else { +this.unitCell.toFractional(pt0, true); +var pt1 = null; +var pt2 = null; +if (isRandom) { +pt1 = JU.P3.new3(rand2 + 4, rand3 + 5, rand1 + 6); +this.unitCell.toFractional(pt1, true); +pt2 = JU.P3.new3(rand3 + 7, rand1 + 8, rand2 + 9); +this.unitCell.toFractional(pt2, true); +}var bspt = new J.bspt.Bspt(3, 0); +var iter = bspt.allocateCubeIterator(); +var pt = new JU.P3(); +out : for (var i = ops.length; --i >= 0; ) { +ops[i].rotate2(pt0, pt); +iter.initialize(pt, 0.001, false); +if (iter.hasMoreElements()) continue out; +var ptNew = JU.P3.newP(pt); +lst.addLast(ptNew); +bspt.addTuple(ptNew); +if (isRandom) { +if (pt2 != null) { +ops[i].rotate2(pt2, pt); +lst.addLast(JU.P3.newP(pt)); +}if (pt1 != null) { +ops[i].rotate2(pt1, pt); +lst.addLast(JU.P3.newP(pt)); +}}} +for (var j = lst.size(); --j >= 0; ) { +pt = lst.get(j); +if (isRandom) pt.scale(0.5); +this.unitCell.toCartesian(pt, true); +} +}return lst; +}, "JU.P3"); +Clazz.overrideMethod(c$, "calculateCIPChiralityForAtoms", +function(vwr, bsAtoms){ +vwr.setCursor(3); +var cip = this.getCIPChirality(vwr); +var dataClass = (vwr.getBoolean(603979960) ? "CIPData" : "CIPDataTracker"); +var data = (J.api.Interface.getInterface("JS." + dataClass, vwr, "script")).set(vwr, bsAtoms); +data.setRule6Full(vwr.getBoolean(603979823)); +cip.getChiralityForAtoms(data); +vwr.setCursor(0); +}, "JV.Viewer,JU.BS"); +Clazz.overrideMethod(c$, "calculateCIPChiralityForSmiles", +function(vwr, smiles){ +vwr.setCursor(3); +var cip = this.getCIPChirality(vwr); +var data = (J.api.Interface.getInterface("JS.CIPDataSmiles", vwr, "script")).setAtomsForSmiles(vwr, smiles); +cip.getChiralityForAtoms(data); +vwr.setCursor(0); +return data.getSmilesChiralityArray(); +}, "JV.Viewer,~S"); +Clazz.defineMethod(c$, "getCIPChirality", +function(vwr){ +return (this.cip == null ? (this.cip = (J.api.Interface.getInterface("JS.CIPChirality", vwr, "script"))) : this.cip); +}, "JV.Viewer"); +Clazz.overrideMethod(c$, "getUnitCellInfoMap", +function(){ +return (this.unitCell == null ? null : this.unitCell.getInfo()); +}); +Clazz.overrideMethod(c$, "setUnitCell", +function(uc){ +this.unitCell = JS.UnitCell.cloneUnitCell((uc).unitCell); +}, "J.api.SymmetryInterface"); +Clazz.overrideMethod(c$, "findSpaceGroup", +function(vwr, atoms, xyzList, unitCellParams, origin, oabc, flags){ +return (J.api.Interface.getInterface("JS.SpaceGroupFinder", vwr, "eval")).findSpaceGroup(vwr, atoms, xyzList, unitCellParams, origin, oabc, this, flags); +}, "JV.Viewer,JU.BS,~S,~A,JU.T3,~A,~N"); +Clazz.overrideMethod(c$, "setSpaceGroupName", +function(name){ +this.symmetryInfo = null; +if (this.spaceGroup != null) this.spaceGroup.setName(name); +}, "~S"); +Clazz.overrideMethod(c$, "setSpaceGroupTo", +function(sg){ +this.symmetryInfo = null; +if (Clazz.instanceOf(sg,"JS.SpaceGroup")) { +this.spaceGroup = sg; +} else { +this.spaceGroup = JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(sg.toString()); +}}, "~O"); +Clazz.overrideMethod(c$, "removeDuplicates", +function(ms, bs, highPrec){ +var uc = this.unitCell; +var atoms = ms.at; +var occs = ms.occupancies; +var haveOccupancies = (occs != null); +var unitized = new Array(bs.length()); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var pt = unitized[i] = JU.P3.newP(atoms[i]); +uc.toFractional(pt, false); +if (highPrec) uc.unitizeRnd(pt); + else uc.unitize(pt); +} +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = atoms[i]; +var pt = unitized[i]; +var type = a.getAtomicAndIsotopeNumber(); +var occ = (haveOccupancies ? occs[i] : 0); +for (var j = bs.nextSetBit(i + 1); j >= 0; j = bs.nextSetBit(j + 1)) { +var b = atoms[j]; +if (type != b.getAtomicAndIsotopeNumber() || (haveOccupancies && occ != occs[j])) continue; +var pt2 = unitized[j]; +if (pt.distanceSquared(pt2) < 1.96E-6) { +bs.clear(j); +}} +} +return bs; +}, "JM.ModelSet,JU.BS,~B"); +Clazz.overrideMethod(c$, "getEquivPoints", +function(pts, pt, flags){ +var ops = this.getSymmetryOperations(); +return (ops == null || this.unitCell == null ? null : this.unitCell.getEquivPoints(pt, flags, ops, pts == null ? new JU.Lst() : pts, 0, 0, 0)); +}, "JU.Lst,JU.P3,~S"); +Clazz.overrideMethod(c$, "getEquivPointList", +function(pts, nInitial, flags, opsCtr){ +var ops = (opsCtr == null ? this.getSymmetryOperations() : opsCtr); +var newPt = (flags.indexOf("newpt") >= 0); +var zapped = (flags.indexOf("zapped") >= 0); +var n = pts.size(); +var tofractional = (flags.indexOf("tofractional") >= 0); +if (flags.indexOf("fromfractional") < 0) { +for (var i = 0; i < pts.size(); i++) { +this.toFractional(pts.get(i), false); +} +}flags += ",fromfractional,tofractional"; +var check0 = (nInitial > 0 ? 0 : n); +var allPoints = (nInitial == n); +var n0 = (nInitial > 0 ? nInitial : n); +if (allPoints) { +nInitial--; +n0--; +}if (zapped) n0 = 0; +var p0 = (nInitial > 0 ? pts.get(nInitial) : null); +var dup0 = (opsCtr == null ? n0 : check0); +if (ops != null || this.unitCell != null) { +for (var i = nInitial; i < n; i++) { +this.unitCell.getEquivPoints(pts.get(i), flags, ops, pts, check0, n0, dup0); +} +}if (!zapped && (pts.size() == nInitial || pts.get(nInitial) !== p0 || allPoints || newPt)) n--; +for (var i = n - nInitial; --i >= 0; ) pts.removeItemAt(nInitial); + +if (!tofractional) { +for (var i = pts.size(); --i >= nInitial; ) this.toCartesian(pts.get(i), false); + +}}, "JU.Lst,~N,~S,~A"); +Clazz.overrideMethod(c$, "getInvariantSymops", +function(pt, v0){ +var ops = this.getSymmetryOperations(); +if (ops == null) return Clazz.newIntArray (0, 0); +var bs = new JU.BS(); +var p = new JU.P3(); +var p0 = new JU.P3(); +var nops = ops.length; +for (var i = 1; i < nops; i++) { +p.setT(pt); +this.unitCell.toFractional(p, false); +this.unitCell.unitize(p); +p0.setT(p); +ops[i].rotTrans(p); +this.unitCell.unitize(p); +if (p0.distanceSquared(p) < 1.96E-6) { +bs.set(i); +}} +var ret = Clazz.newIntArray (bs.cardinality(), 0); +if (v0 != null && ret.length != v0.length) return null; +for (var k = 0, i = 1; i < nops; i++) { +var isOK = bs.get(i); +if (isOK) { +if (v0 != null && v0[k] != i + 1) return null; +ret[k++] = i + 1; +}} +return ret; +}, "JU.P3,~A"); +Clazz.overrideMethod(c$, "getWyckoffPosition", +function(vwr, p, letter){ +if (this.unitCell == null) return ""; +var sg = this.spaceGroup; +if (sg == null && this.symmetryInfo != null) { +sg = JS.SpaceGroup.determineSpaceGroupN(this.symmetryInfo.sgName); +if (sg == null) sg = JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(this.symmetryInfo.intlTableJmolID); +}if (sg == null || sg.itaNumber == null) { +return "?"; +}if (p == null) { +p = JU.P3.new3(0.53, 0.20, 0.16); +} else { +p = JU.P3.newP(p); +this.unitCell.toFractional(p, false); +this.unitCell.unitize(p); +}if (JS.Symmetry.wyckoffFinder == null) { +JS.Symmetry.wyckoffFinder = J.api.Interface.getInterface("JS.WyckoffFinder", null, "symmetry"); +}try { +var w = JS.Symmetry.wyckoffFinder.getWyckoffFinder(vwr, sg); +var withMult = (letter != null && letter.charAt(0) == 'M'); +if (withMult) { +letter = (letter.length == 1 ? null : letter.substring(1)); +}var mode = (letter == null ? -1 : letter.equalsIgnoreCase("coord") ? -2 : letter.equalsIgnoreCase("coords") ? -3 : letter.endsWith("*") ? (letter.charAt(0)).charCodeAt(0) : 0); +if (mode != 0) { +return (w == null ? "?" : w.getInfo(this.unitCell, p, mode, withMult)); +}if (w.findPositionFor(p, letter) == null) return null; +this.unitCell.toCartesian(p, false); +return p; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return (letter == null ? "?" : null); +} else { +throw e; +} +} +}, "JV.Viewer,JU.P3,~S"); +Clazz.overrideMethod(c$, "getTransform", +function(fracA, fracB, best){ +return this.getDesc(null).getTransform(this.unitCell, this.getSymmetryOperations(), fracA, fracB, best); +}, "JU.P3,JU.P3,~B"); +Clazz.overrideMethod(c$, "isWithinUnitCell", +function(pt, x, y, z){ +return this.unitCell.isWithinUnitCell(x, y, z, pt); +}, "JU.P3,~N,~N,~N"); +Clazz.overrideMethod(c$, "checkPeriodic", +function(pt){ +return this.unitCell.checkPeriodic(pt); +}, "JU.P3"); +Clazz.overrideMethod(c$, "staticConvertOperation", +function(xyz, matrix){ +return (matrix == null ? JS.SymmetryOperation.stringToMatrix(xyz) : JS.SymmetryOperation.getXYZFromMatrixFrac(matrix, false, false, false, true)); +}, "~S,JU.M4"); +Clazz.overrideMethod(c$, "getSubgroupJSON", +function(vwr, itaFrom, itaTo, index1, index2){ +var allSubsMap = (itaTo < 0); +var asIntArray = (itaTo == 0 && index1 == 0); +var asSSIntArray = (itaTo == 0 && index1 < 0); +var isIndexMap = (itaTo == 0 && index1 > 0 && index2 < 0); +var isIndexTStr = (itaTo == 0 && index1 > 0 && index2 > 0); +var isWhereList = (itaTo > 0 && index1 < 0); +var isWhereMap = (itaTo > 0 && index1 > 0 && index2 < 0); +var isWhereTStr = (itaTo > 0 && index1 > 0 && index2 > 0); +try { +var o = this.getSpaceGroupJSON(vwr, "subgroups", "map", itaFrom); +var ithis = 0; +if (o != null) { +if (allSubsMap) return o; +if (asIntArray || asSSIntArray) { +var list = o.get("subgroups"); +var n = list.size(); +var groups = (asIntArray ? Clazz.newIntArray (n, 0) : null); +var bs = (asSSIntArray ? new JU.BS() : null); +for (var i = n; --i >= 0; ) { +o = list.get(i); +var isub = (o.get("subgroup")).intValue(); +if (asSSIntArray) { +bs.set(isub); +continue; +}var subIndex = (o.get("subgroupIndex")).intValue(); +var trType = "k".equals(o.get("trType")) ? 2 : 1; +var subType = (trType == 1 ? o.get("trSubtype") : ""); +var det = (o.get("det")).doubleValue(); +var idet = Clazz.doubleToInt(det < 1 ? -1 / det : det); +if (subType.equals("ct")) trType = 3; + else if (subType.equals("eu")) trType = 4; +var ntrm = (o.get("trm")).size(); +groups[i] = Clazz.newIntArray(-1, [isub, ntrm, subIndex, idet, trType]); +} +if (asSSIntArray) { +var a = Clazz.newIntArray (bs.cardinality(), 0); +for (var p = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +a[p++] = i; +} +return a; +}return groups; +}var list = o.get("subgroups"); +var i0 = 0; +var n = list.size(); +if (isIndexMap || isIndexTStr) { +if (index1 > n) { +throw new ArrayIndexOutOfBoundsException("no map.subgroups[" + index1 + "]!"); +}i0 = index1 - 1; +if (isIndexMap) return list.get(i0); +n = index1; +}var whereList = (isWhereList ? new JU.Lst() : null); +for (var i = i0; i < n; i++) { +o = list.get(i); +var isub = (o.get("subgroup")).intValue(); +if (!isIndexTStr && isub != itaTo) continue; +if (++ithis == index1) { +if (isWhereMap) return o; +} else if (isWhereTStr) { +continue; +}if (isWhereList) { +whereList.addLast(o); +continue; +}var trms = o.get("trm"); +n = trms.size(); +if (index2 < 1 || index2 > n) return null; +return (trms.get(index2 - 1)).substring(2); +} +if (isWhereList && !whereList.isEmpty()) { +return whereList; +}}if (index1 == 0) return null; +if (isWhereTStr && ithis > 0) { +throw new ArrayIndexOutOfBoundsException("only " + ithis + " maximal subgroup information for " + itaFrom + ">>" + itaTo + "!"); +}throw new ArrayIndexOutOfBoundsException("no maximal subgroup information for " + itaFrom + ">>" + itaTo + "!"); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return e.getMessage(); +} else { +throw e; +} +} +}, "JV.Viewer,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "getSpaceGroupJSON", +function(vwr, name, data, index){ +var isSettings = name.equals("settings"); +var isSubgroups = !isSettings && name.equals("subgroups"); +var isThis = ((isSettings || isSubgroups) && index == -2147483648); +var s0 = (!isSettings && !isSubgroups ? name : isThis ? this.getSpaceGroupName() : "" + index); +try { +var itno; +var tm = null; +var isTM; +var isInt; +var sgname; +if (isSettings || isSubgroups) { +isTM = false; +isInt = true; +sgname = (isSettings ? data : null); +if (isThis) { +itno = JU.PT.parseInt(this.getIntTableNumber()); +if (isSettings) { +if (this.spaceGroup == null) { +var sg = this.symmetryInfo.getDerivedSpaceGroup(); +if (sg == null) return new java.util.Hashtable(); +sgname = sg.jmolId; +} else { +sgname = this.getIntTableNumberFull(); +}}} else { +itno = index; +}} else { +sgname = data; +var pt = sgname.indexOf("("); +if (pt < 0) pt = sgname.indexOf(":"); +isTM = (pt >= 0 && sgname.indexOf(",") > pt); +if (isTM) { +tm = sgname.substring(pt + 1, sgname.length - (sgname.endsWith(")") ? 1 : 0)); +sgname = sgname.substring(0, pt); +isThis = true; +}itno = (sgname.equalsIgnoreCase("ALL") ? 0 : JU.PT.parseInt(sgname)); +isInt = (itno != -2147483648); +pt = sgname.indexOf('.'); +if (!isTM && isInt && index == 0 && pt > 0) { +index = JU.PT.parseInt(sgname.substring(pt + 1)); +sgname = sgname.substring(0, pt); +}}if (isInt && (itno > 230 || (isSettings ? itno < 1 : itno < 0))) throw new ArrayIndexOutOfBoundsException(itno); +if (isSubgroups) { +if (JS.Symmetry.itaSubData == null) JS.Symmetry.itaSubData = new Array(230); +var resource = JS.Symmetry.itaSubData[itno - 1]; +if (resource == null) JS.Symmetry.itaSubData[itno - 1] = resource = this.getResource(vwr, "sg/json/sub_" + itno + ".json"); +if (resource != null) { +return resource; +}} else if (isSettings || name.equalsIgnoreCase("ITA")) { +if (itno == 0) { +if (JS.Symmetry.allDataITA == null) JS.Symmetry.allDataITA = this.getResource(vwr, "sg/json/ita_all.json"); +return JS.Symmetry.allDataITA; +}if (JS.Symmetry.itaData == null) JS.Symmetry.itaData = new Array(230); +var resource = JS.Symmetry.itaData[itno - 1]; +if (resource == null) JS.Symmetry.itaData[itno - 1] = resource = this.getResource(vwr, "sg/json/ita_" + itno + ".json"); +if (resource != null) { +if (index == 0 && tm == null) return resource; +var its = resource.get("its"); +if (its != null) { +if (isSettings && !isThis) { +return its; +}var n = its.size(); +var i0 = (isInt && !isThis ? index : n); +if (i0 > n) return null; +var map = null; +for (var i = i0; --i >= 0; ) { +map = its.get(i); +if (i == index - 1 || (tm == null ? sgname.equals(map.get("jmolId")) : tm.equals(map.get("trm")))) { +System.out.println(tm); +System.out.println(map); +if (!map.containsKey("more")) { +return map; +}break; +}map = null; +} +if (map != null) { +return JS.SpaceGroup.fillMoreData(map, map.get("clegId"), itno, its.get(0)); +}}}} else if (name.equalsIgnoreCase("AFLOW") && tm == null) { +if (JS.Symmetry.aflowStructures == null) JS.Symmetry.aflowStructures = this.getResource(vwr, "sg/json/aflow_structures.json"); +if (itno == 0) return JS.Symmetry.aflowStructures; +if (itno == -2147483648) { +var start = null; +if (sgname.endsWith("*")) { +start = new JU.Lst(); +sgname = sgname.substring(0, sgname.length - 1); +}for (var j = 1; j <= 230; j++) { +var list = JS.Symmetry.aflowStructures.get("" + j); +for (var i = 0, n = list.size(); i < n; i++) { +var id = list.get(i); +if (start != null && id.startsWith(sgname)) { +start.addLast("=aflowlib/" + j + "." + (i + 1) + "\t" + id); +} else if (id.equalsIgnoreCase(sgname)) { +return j + "." + (i + 1); +}} +} +return (start != null && start.size() > 0 ? start : null); +}var adata = JS.Symmetry.aflowStructures.get("" + sgname); +if (index <= adata.size()) { +return (index == 0 ? adata : adata.get(index - 1)); +}}if (isThis) return new java.util.Hashtable(); +throw new IllegalArgumentException(s0); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return e.getMessage(); +} else { +throw e; +} +} +}, "JV.Viewer,~S,~O,~N"); +Clazz.defineMethod(c$, "getResource", +function(vwr, resource){ +try { +var r = JV.FileManager.getBufferedReaderForResource(vwr, this, "JS/", resource); +var data = new Array(1); +if (JU.Rdr.readAllAsString(r, 2147483647, false, data, 0)) { +return new JU.JSJSONParser().parse(data[0], true); +}} catch (e) { +System.err.println(e.getMessage()); +} +return null; +}, "JV.Viewer,~S"); +Clazz.overrideMethod(c$, "getCellWeight", +function(pt){ +return this.unitCell.getCellWeight(pt); +}, "JU.P3"); +Clazz.overrideMethod(c$, "getPrecision", +function(){ +return (this.unitCell == null ? NaN : this.unitCell.getPrecision()); +}); +Clazz.overrideMethod(c$, "fixUnitCell", +function(params){ +return JS.UnitCell.createCompatibleUnitCell(this.spaceGroup, params, null, true); +}, "~A"); +Clazz.overrideMethod(c$, "staticGetTransformABC", +function(transform, normalize){ +return JS.SymmetryOperation.getTransformABC(transform, normalize); +}, "~O,~B"); +Clazz.defineMethod(c$, "setCartesianOffset", +function(origin){ +this.unitCell.setCartesianOffset(origin); +}, "JU.T3"); +Clazz.defineMethod(c$, "setSymmetryInfoFromFile", +function(ms, modelIndex, unitCellParams){ +var modelAuxiliaryInfo = ms.getModelAuxiliaryInfo(modelIndex); +this.symmetryInfo = new JS.SymmetryInfo(); +var params = this.symmetryInfo.setSymmetryInfoFromFile(modelAuxiliaryInfo, unitCellParams); +if (params != null) { +this.setUnitCellFromParams(params, modelAuxiliaryInfo.containsKey("jmolData"), NaN); +this.unitCell.moreInfo = modelAuxiliaryInfo.get("moreUnitCellInfo"); +modelAuxiliaryInfo.put("infoUnitCell", this.getUnitCellAsArray(false)); +this.setOffsetPt(modelAuxiliaryInfo.get("unitCellOffset")); +var matUnitCellOrientation = modelAuxiliaryInfo.get("matUnitCellOrientation"); +if (matUnitCellOrientation != null) this.initializeOrientation(matUnitCellOrientation); +var s = this.symmetryInfo.strSUPERCELL; +if (s != null) { +var oabc = this.unitCell.getUnitCellVectors(); +oabc[0] = new JU.P3(); +ms.setModelCagePts(modelIndex, oabc, "conventional"); +}if (JU.Logger.debugging) JU.Logger.debug("symmetryInfos[" + modelIndex + "]:\n" + this.unitCell.dumpInfo(true, true)); +}}, "JM.ModelSet,~N,~A"); +Clazz.defineMethod(c$, "transformUnitCell", +function(trm){ +if (trm == null) { +trm = JS.UnitCell.toTrm(this.spaceGroup.itaTransform, null); +}var trmInv = JU.M4.newM4(trm); +trmInv.invert(); +var oabc = this.getUnitCellVectors(); +for (var i = 1; i <= 3; i++) { +this.toFractional(oabc[i], true); +trmInv.rotate(oabc[i]); +this.toCartesian(oabc[i], true); +} +var o = new JU.P3(); +trm.getTranslation(o); +this.toCartesian(o, true); +oabc[0].add(o); +this.unitCell = JS.UnitCell.fromOABC(oabc, false); +}, "JU.M4"); +Clazz.overrideMethod(c$, "getITASettingValue", +function(vwr, itaIndex, key){ +var o = this.getSpaceGroupJSON(vwr, "ITA", itaIndex, 0); +return (Clazz.instanceOf(o,"java.util.Map") ? (o).get(key) : o); +}, "JV.Viewer,~S,~S"); +Clazz.overrideMethod(c$, "staticCleanTransform", +function(tr){ +return JS.SymmetryOperation.getTransformABC(JS.UnitCell.toTrm(tr, null), true); +}, "~S"); +Clazz.overrideMethod(c$, "replaceTransformMatrix", +function(trm){ +var trm0 = this.transformMatrix; +this.transformMatrix = trm; +return trm0; +}, "JU.M4"); +Clazz.overrideMethod(c$, "getUnitCellDisplayName", +function(){ +var name = (this.symmetryInfo != null ? this.symmetryInfo.getDisplayName(this) : this.spaceGroup != null ? this.spaceGroup.getDisplayName() : null); +return (name.length > 0 ? name : null); +}); +Clazz.overrideMethod(c$, "staticToRationalXYZ", +function(fPt, sep){ +var s = JS.SymmetryOperation.fcoord(fPt, sep); +return (",".equals(sep) ? s : "(" + s + ")"); +}, "JU.P3,~S"); +Clazz.overrideMethod(c$, "getClegId", +function(){ +if (this.symmetryInfo != null) return this.symmetryInfo.getDerivedSpaceGroup().clegId; +return this.spaceGroup.clegId; +}); +Clazz.overrideMethod(c$, "getFinalOperationCount", +function(){ +this.setFinalOperations(3, null, null, -1, -1, false, null); +return this.spaceGroup.getOperationCount(); +}); +Clazz.overrideMethod(c$, "convertTransform", +function(transform, trm){ +if (transform == null) { +return this.staticGetTransformABC(trm, false); +}if (transform.equals("xyz")) { +return (trm == null ? null : JS.SymmetryOperation.getXYZFromMatrix(trm, false, false, false)); +}if (trm == null) trm = new JU.M4(); +JS.UnitCell.getMatrixAndUnitCell(null, transform, trm); +return trm; +}, "~S,JU.M4"); +c$.nullDesc = null; +c$.aflowStructures = null; +c$.itaData = null; +c$.itaSubData = null; +c$.allDataITA = null; +c$.wyckoffFinder = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryDesc.js b/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryDesc.js new file mode 100755 index 000000000000..a1c47fdd19f0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryDesc.js @@ -0,0 +1,1317 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.P3", "$.V3"], "JS.SymmetryDesc", ["java.util.Hashtable", "JU.A4", "$.BS", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P4", "$.PT", "$.Quat", "$.SB", "JS.T", "JS.SpaceGroup", "$.Symmetry", "$.SymmetryOperation", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modelSet = null; +this.drawID = null; +Clazz.instantialize(this, arguments);}, JS, "SymmetryDesc", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(modelSet){ +this.modelSet = modelSet; +return this; +}, "JM.ModelSet"); +c$.getType = Clazz.defineMethod(c$, "getType", +function(id){ +var type; +if (id == null) return 1073742001; +if (id.equalsIgnoreCase("matrix")) return 12; +if (id.equalsIgnoreCase("description")) return 1825200146; +if (id.equalsIgnoreCase("axispoint")) return 134217751; +if (id.equalsIgnoreCase("time")) return 268441089; +if (id.equalsIgnoreCase("info")) return 1275068418; +if (id.equalsIgnoreCase("element")) return 1086326789; +if (id.equalsIgnoreCase("invariant")) return 36868; +type = JS.T.getTokFromName(id); +if (type != 0) return type; +type = JS.SymmetryDesc.getKeyType(id); +return (type < 0 ? type : 1073742327); +}, "~S"); +c$.getKeyType = Clazz.defineMethod(c$, "getKeyType", +function(id){ +if ("type".equals(id)) id = "_type"; +for (var type = 0; type < JS.SymmetryDesc.keys.length; type++) if (id.equalsIgnoreCase(JS.SymmetryDesc.keys[type])) return -1 - type; + +return 0; +}, "~S"); +c$.nullReturn = Clazz.defineMethod(c$, "nullReturn", +function(type){ +switch (type) { +case 135176: +return ";draw ID sym* delete;draw ID sg* delete;"; +case 1073741961: +case 1825200146: +case 1073741974: +case 1145047049: +case 1145047053: +case 11: +case 1073742078: +return ""; +case 1153433601: +return new JU.BS(); +default: +return null; +} +}, "~N"); +c$.getInfo = Clazz.defineMethod(c$, "getInfo", +function(io, type){ +if (io.length == 0) return ""; +if (type < 0 && -type <= JS.SymmetryDesc.keys.length && -type <= io.length) return io[-1 - type]; +switch (type) { +case 1073742327: +case 1073741982: +return io; +case 1275068418: +var lst = new java.util.Hashtable(); +for (var j = 0, n = io.length; j < n; j++) { +var key = (j == 3 ? "draw" : j == 7 ? "axispoint" : JS.SymmetryDesc.keys[j]); +if (io[j] != null) lst.put(key, io[j]); +} +return lst; +case 1073741961: +return io[0] + " \t" + io[2]; +case 1145047049: +return io[0]; +case 1145047053: +return io[19]; +case 1073742078: +return io[1]; +default: +case 1825200146: +return io[2]; +case 134217764: +if (!JU.Logger.debugging) return io[3]; +case 135176: +return io[3] + "\nprint " + JU.PT.esc(io[0] + " " + io[2]); +case 1145047050: +return io[4]; +case 1073742178: +return io[5]; +case 12289: +return io[6]; +case 134217751: +return io[7]; +case 1073741854: +return io[8]; +case 134217729: +return io[9]; +case 12: +return io[10]; +case 1814695966: +return io[11]; +case 4160: +return io[12]; +case 268441089: +return io[13]; +case 134217750: +return io[14]; +case 1140850696: +return io[15]; +case 1073741974: +return io[16]; +case 1086326789: +return Clazz.newArray(-1, [io[6], io[7], io[8], io[14], io[5]]); +case 36868: +return (io[6] != null ? io[6] : io[8] != null ? Clazz.newArray(-1, [io[7], io[8], io[5]]) : io[5] != null ? "none" : io[14] != null ? io[14] : "identity"); +} +}, "~A,~N"); +c$.getInfoBS = Clazz.defineMethod(c$, "getInfoBS", +function(type){ +var bsInfo = new JU.BS(); +if (type < 0 && -type <= JS.SymmetryDesc.keys.length) { +bsInfo.set(-1 - type); +return bsInfo; +}switch (type) { +case 0: +case 1153433601: +case 1073742001: +case 1073742327: +case 1073741982: +case 1275068418: +bsInfo.setBits(0, JS.SymmetryDesc.keys.length); +break; +case 1073741961: +bsInfo.set(0); +bsInfo.set(2); +break; +case 1145047049: +bsInfo.set(0); +break; +case 1145047053: +bsInfo.set(19); +break; +case 1073742078: +bsInfo.set(1); +break; +default: +case 1825200146: +bsInfo.set(2); +break; +case 135176: +bsInfo.set(0); +bsInfo.set(2); +bsInfo.set(3); +break; +case 1145047050: +bsInfo.set(4); +break; +case 1073742178: +bsInfo.set(5); +break; +case 12289: +bsInfo.set(6); +break; +case 134217751: +bsInfo.set(7); +break; +case 1073741854: +bsInfo.set(8); +break; +case 134217729: +bsInfo.set(9); +break; +case 12: +bsInfo.set(10); +break; +case 1814695966: +bsInfo.set(11); +break; +case 4160: +bsInfo.set(12); +break; +case 268441089: +bsInfo.set(13); +break; +case 134217750: +bsInfo.set(14); +break; +case 1140850696: +bsInfo.set(15); +break; +case 1073741974: +bsInfo.set(16); +break; +case 1086326789: +case 36868: +bsInfo.set(5); +bsInfo.set(6); +bsInfo.set(7); +bsInfo.set(8); +bsInfo.set(14); +bsInfo.set(22); +break; +} +return bsInfo; +}, "~N"); +Clazz.defineMethod(c$, "createInfoArray", +function(op, uc, ptFrom, ptTarget, id, scaleFactor, options, haveTranslation, bsInfo, isSpaceGroup, isSpaceGroupAll){ +if (!op.isFinalized) op.doFinalize(); +var matrixOnly = (bsInfo.cardinality() == 1 && bsInfo.get(10)); +var isTimeReversed = (op.timeReversal == -1); +if (scaleFactor == 0) scaleFactor = 1; +JS.SymmetryDesc.vtrans.set(0, 0, 0); +var plane = null; +var pta00 = (ptFrom == null || Float.isNaN(ptFrom.x) ? uc.getCartesianOffset() : ptFrom); +if (ptTarget != null) { +JS.SymmetryDesc.pta01.setT(pta00); +JS.SymmetryDesc.pta02.setT(ptTarget); +uc.toFractional(JS.SymmetryDesc.pta01, false); +uc.toFractional(JS.SymmetryDesc.pta02, false); +op.rotTrans(JS.SymmetryDesc.pta01); +JS.SymmetryDesc.ptemp.setT(JS.SymmetryDesc.pta01); +uc.unitize(JS.SymmetryDesc.pta01); +JS.SymmetryDesc.vtrans.setT(JS.SymmetryDesc.pta02); +uc.unitize(JS.SymmetryDesc.pta02); +if (JS.SymmetryDesc.pta01.distanceSquared(JS.SymmetryDesc.pta02) >= 1.96E-6) return null; +JS.SymmetryDesc.vtrans.sub(JS.SymmetryDesc.ptemp); +}var m2 = JU.M4.newM4(op); +m2.add(JS.SymmetryDesc.vtrans); +if (bsInfo.get(10) && ptTarget != null && pta00.equals(ptTarget)) { +m2.m00 = Math.round(m2.m00); +m2.m01 = Math.round(m2.m01); +m2.m02 = Math.round(m2.m02); +m2.m03 = Math.round(m2.m03); +m2.m10 = Math.round(m2.m10); +m2.m11 = Math.round(m2.m11); +m2.m12 = Math.round(m2.m12); +m2.m13 = Math.round(m2.m13); +m2.m20 = Math.round(m2.m20); +m2.m21 = Math.round(m2.m21); +m2.m22 = Math.round(m2.m22); +m2.m23 = Math.round(m2.m23); +}var isMagnetic = (op.timeReversal != 0); +if (matrixOnly && !isMagnetic) { +var im = JS.SymmetryDesc.getKeyType("matrix"); +var o = new Array(-im); +o[-1 - im] = m2; +return o; +}var ftrans = new JU.V3(); +JS.SymmetryDesc.pta01.set(1, 0, 0); +JS.SymmetryDesc.pta02.set(0, 1, 0); +var pta03 = JU.P3.new3(0, 0, 1); +JS.SymmetryDesc.pta01.add(pta00); +JS.SymmetryDesc.pta02.add(pta00); +pta03.add(pta00); +var pt0 = JS.SymmetryDesc.rotTransCart(op, uc, pta00, JS.SymmetryDesc.vtrans); +var pt1 = JS.SymmetryDesc.rotTransCart(op, uc, JS.SymmetryDesc.pta01, JS.SymmetryDesc.vtrans); +var pt2 = JS.SymmetryDesc.rotTransCart(op, uc, JS.SymmetryDesc.pta02, JS.SymmetryDesc.vtrans); +var pt3 = JS.SymmetryDesc.rotTransCart(op, uc, pta03, JS.SymmetryDesc.vtrans); +var vt1 = JU.V3.newVsub(pt1, pt0); +var vt2 = JU.V3.newVsub(pt2, pt0); +var vt3 = JU.V3.newVsub(pt3, pt0); +JS.SymmetryOperation.approx6Pt(JS.SymmetryDesc.vtrans); +var vtemp = new JU.V3(); +vtemp.cross(vt1, vt2); +var haveInversion = (vtemp.dot(vt3) < 0); +if (haveInversion) { +pt1.sub2(pt0, vt1); +pt2.sub2(pt0, vt2); +pt3.sub2(pt0, vt3); +}var q = JU.Quat.getQuaternionFrame(pt0, pt1, pt2).div(JU.Quat.getQuaternionFrame(pta00, JS.SymmetryDesc.pta01, JS.SymmetryDesc.pta02)); +var qF = JU.Quat.new4(q.q1, q.q2, q.q3, q.q0); +var info = JU.Measure.computeHelicalAxis(pta00, pt0, qF); +var pa1 = JU.P3.newP(info[0]); +var ax1 = JU.P3.newP(info[1]); +var ang1 = Clazz.floatToInt(Math.abs(JU.PT.approx((info[3]).x, 1))); +var pitch1 = JS.SymmetryOperation.approx((info[3]).y); +if (haveInversion) { +pt1.add2(pt0, vt1); +pt2.add2(pt0, vt2); +pt3.add2(pt0, vt3); +}var trans = JU.V3.newVsub(pt0, pta00); +if (trans.length() < 0.1) trans = null; +var ptinv = null; +var ipt = null; +var ptref = null; +var w = 0; +var margin = 0; +var isTranslation = (ang1 == 0); +var isRotation = !isTranslation; +var isInversionOnly = false; +var isMirrorPlane = false; +var isTranslationOnly = !isRotation && !haveInversion; +if (isRotation || haveInversion) { +trans = null; +}if (haveInversion && isTranslation) { +ipt = JU.P3.newP(pta00); +ipt.add(pt0); +ipt.scale(0.5); +ptinv = pt0; +isInversionOnly = true; +} else if (haveInversion) { +var d = (pitch1 == 0 ? new JU.V3() : ax1); +var f = 0; +switch (ang1) { +case 60: +f = 0.6666667; +break; +case 120: +f = 2; +break; +case 90: +f = 1; +break; +case 180: +ptref = JU.P3.newP(pta00); +ptref.add(d); +pa1.scaleAdd2(0.5, d, pta00); +if (ptref.distance(pt0) > 0.1) { +trans = JU.V3.newVsub(pt0, ptref); +ftrans.setT(trans); +uc.toFractional(ftrans, true); +} else { +trans = null; +}vtemp.setT(ax1); +vtemp.normalize(); +w = -vtemp.x * pa1.x - vtemp.y * pa1.y - vtemp.z * pa1.z; +plane = JU.P4.new4(vtemp.x, vtemp.y, vtemp.z, w); +margin = (Math.abs(w) < 0.01 && vtemp.x * vtemp.y > 0.4 ? 1.30 : 1.05); +isRotation = false; +haveInversion = false; +isMirrorPlane = true; +break; +default: +haveInversion = false; +break; +} +if (f != 0) { +vtemp.sub2(pta00, pa1); +vtemp.add(pt0); +vtemp.sub(pa1); +vtemp.sub(d); +vtemp.scale(f); +pa1.add(vtemp); +ipt = new JU.P3(); +ipt.scaleAdd2(0.5, d, pa1); +ptinv = new JU.P3(); +ptinv.scaleAdd2(-2, ipt, pt0); +ptinv.scale(-1); +}} else if (trans != null) { +JS.SymmetryDesc.ptemp.setT(trans); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +ftrans.setT(JS.SymmetryDesc.ptemp); +uc.toCartesian(JS.SymmetryDesc.ptemp, false); +trans.setT(JS.SymmetryDesc.ptemp); +}var ang = ang1; +JS.SymmetryDesc.approx0(ax1); +if (isRotation) { +var ptr = new JU.P3(); +vtemp.setT(ax1); +var ang2 = ang1; +var p0; +if (haveInversion) { +ptr.setT(ptinv); +p0 = ptinv; +} else if (pitch1 == 0) { +p0 = pt0; +ptr.setT(pa1); +} else { +p0 = pt0; +ptr.scaleAdd2(0.5, vtemp, pa1); +}JS.SymmetryDesc.ptemp.add2(pa1, vtemp); +ang2 = Math.round(JU.Measure.computeTorsion(pta00, pa1, JS.SymmetryDesc.ptemp, p0, true)); +if (JS.SymmetryOperation.approx(ang2) != 0) { +ang1 = ang2; +if (ang1 < 0) ang1 = 360 + ang1; +}}var info1 = null; +var type = null; +var glideType = String.fromCharCode(0); +var isIrrelevant = op.isIrrelevant; +var order = op.getOpOrder(); +op.isIrrelevant = new Boolean (op.isIrrelevant | isIrrelevant).valueOf(); +var isccw = op.getOpIsCCW(); +var screwDir = 0; +var nrot = 0; +if (bsInfo.get(2) || bsInfo.get(15)) { +info1 = type = "identity"; +if (isInversionOnly) { +JS.SymmetryDesc.ptemp.setT(ipt); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +info1 = "Ci: " + JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp, op.isBio); +type = "inversion center"; +} else if (isRotation) { +var screwtype = ""; +if (isccw != null) { +screwtype = (isccw === Boolean.TRUE ? "(+)" : "(-)"); +screwDir = (isccw === Boolean.TRUE ? 1 : -1); +if (haveInversion && screwDir == -1) isIrrelevant = true; +}nrot = Clazz.doubleToInt(360 / ang); +if (haveInversion) { +info1 = nrot + "-bar" + screwtype + " axis"; +} else if (pitch1 != 0) { +JS.SymmetryDesc.ptemp.setT(ax1); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +info1 = nrot + screwtype + " (" + JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp, op.isBio) + ") screw axis"; +} else { +info1 = nrot + screwtype + " axis"; +if (order % 2 == 0) screwDir *= Clazz.doubleToInt(order / 2); +}type = info1; +} else if (trans != null) { +var s = " " + JS.SymmetryDesc.strCoord(ftrans, op.isBio); +if (isTranslation) { +type = info1 = "translation"; +info1 += ":" + s; +} else if (isMirrorPlane) { +if (isSpaceGroup) { +JS.SymmetryDesc.fixGlideTrans(ftrans); +trans.setT(ftrans); +uc.toCartesian(trans, true); +}s = " " + JS.SymmetryDesc.strCoord(ftrans, op.isBio); +glideType = JS.SymmetryOperation.getGlideFromTrans(ftrans, ax1); +type = info1 = glideType + "-glide plane"; +info1 += "|translation:" + s; +}} else if (isMirrorPlane) { +type = info1 = "mirror plane"; +}if (haveInversion && !isInversionOnly) { +JS.SymmetryDesc.ptemp.setT(ipt); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +info1 += "|at " + JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp, op.isBio); +}if (isTimeReversed) { +info1 += "|time-reversed"; +type += " (time-reversed)"; +}}var isRightHand = true; +var isScrew = (isRotation && !haveInversion && pitch1 != 0); +if (!isScrew) { +screwDir = 0; +isRightHand = JS.SymmetryDesc.checkHandedness(uc, ax1); +if (!isRightHand) { +ang1 = -ang1; +if (ang1 < 0) ang1 = 360 + ang1; +ax1.scale(-1); +}}var ignore = false; +var cmds = null; +if (id != null && bsInfo.get(3)) { +if (op.getOpType() == 0 || isSpaceGroupAll && op.isIrrelevant) { +if (JU.Logger.debugging) System.out.println("!!SD irrelevent " + op.getOpTitle() + op.getOpPoint()); +cmds = ""; +} else { +var opType = null; +this.drawID = "\ndraw ID \"" + id; +var drawSB = new JU.SB(); +drawSB.append(this.getDrawID("*")).append(" delete"); +if (!isSpaceGroup) { +this.drawLine(drawSB, "frame1X", 0.15, pta00, JS.SymmetryDesc.pta01, "red"); +this.drawLine(drawSB, "frame1Y", 0.15, pta00, JS.SymmetryDesc.pta02, "green"); +this.drawLine(drawSB, "frame1Z", 0.15, pta00, pta03, "blue"); +}var color; +var planeCenter = null; +var nPC = 0; +var isSpecial = (pta00.distance(pt0) < 0.2); +var title = (isSpaceGroup ? "" + id + ": " + op.xyz + "|" + info1 + "" : null); +if (isRotation) { +color = (nrot == 2 ? "red" : nrot == 3 ? "[xA00040]" : nrot == 4 ? "[x800080]" : "[x4000A0]"); +ang = ang1; +var scale = 1; +vtemp.setT(ax1); +var wp = ""; +if (isSpaceGroup) { +pa1.setT(op.getOpPoint()); +uc.toCartesian(pa1, false); +}var ptr = new JU.P3(); +if (pitch1 != 0 && !haveInversion) { +opType = "screw"; +color = (isccw === Boolean.TRUE ? "orange" : isccw === Boolean.FALSE ? "blue" : order == 4 ? "lightgray" : "grey"); +if (!isSpaceGroup) { +this.drawLine(drawSB, "rotLine1", 0.1, pta00, pa1, "red"); +JS.SymmetryDesc.ptemp.add2(pa1, vtemp); +this.drawLine(drawSB, "rotLine2", 0.1, pt0, JS.SymmetryDesc.ptemp, "red"); +ptr.scaleAdd2(0.5, vtemp, pa1); +}} else { +ptr.setT(pa1); +if (!isRightHand) { +if (!isSpecial && !isSpaceGroup) pa1.sub2(pa1, vtemp); +}if (haveInversion) { +opType = "bar"; +if (isSpaceGroup) { +vtemp.normalize(); +if (isccw === Boolean.TRUE) { +vtemp.scale(-1); +}} else { +if (pitch1 == 0) { +ptr.setT(ipt); +vtemp.scale(3 * scaleFactor); +if (isSpecial) { +JS.SymmetryDesc.ptemp.scaleAdd2(0.25, vtemp, pa1); +pa1.scaleAdd2(-0.2, vtemp, pa1); +ptr.scaleAdd2(0.31, vtemp, ptr); +color = "cyan"; +} else { +JS.SymmetryDesc.ptemp.scaleAdd2(-1, vtemp, pa1); +this.drawLine(drawSB, "rotLine1", 0.1, pta00, ipt, "red"); +this.drawLine(drawSB, "rotLine2", 0.1, ptinv, ipt, "red"); +}} else if (!isSpecial) { +scale = pta00.distance(ptr); +this.drawLine(drawSB, "rotLine1", 0.1, pta00, ptr, "red"); +this.drawLine(drawSB, "rotLine2", 0.1, ptinv, ptr, "red"); +}}} else { +opType = "rot"; +vtemp.scale(3 * scaleFactor); +if (isSpecial) { +} else { +if (!isSpaceGroup) { +this.drawLine(drawSB, "rotLine1", 0.1, pta00, ptr, "red"); +this.drawLine(drawSB, "rotLine2", 0.1, pt0, ptr, "red"); +}}ptr.setT(pa1); +if (pitch1 == 0 && isSpecial) ptr.scaleAdd2(0.25, vtemp, ptr); +}}if (!isSpaceGroup) { +if (ang > 180) { +ang = 180 - ang; +}JS.SymmetryDesc.ptemp.add2(ptr, vtemp); +drawSB.append(this.getDrawID("rotRotArrow")).append(" arrow width 0.1 scale " + JU.PT.escF(scale) + " arc ").append(JU.Escape.eP(ptr)).append(JU.Escape.eP(JS.SymmetryDesc.ptemp)); +JS.SymmetryDesc.ptemp.setT(pta00); +if (JS.SymmetryDesc.ptemp.distance(pt0) < 0.1) JS.SymmetryDesc.ptemp.set(Math.random(), Math.random(), Math.random()); +drawSB.append(JU.Escape.eP(JS.SymmetryDesc.ptemp)); +JS.SymmetryDesc.ptemp.set(0, ang - 5 * Math.signum(ang), 0); +drawSB.append(JU.Escape.eP(JS.SymmetryDesc.ptemp)).append(" color red"); +}var d; +var opTransLength = 0; +if (!op.opIsLong && (isSpaceGroupAll && pitch1 > 0 && !haveInversion)) { +ignore = ((opTransLength = op.getOpTrans().length()) > (order == 2 ? 0.71 : order == 3 ? 0.578 : order == 4 ? 0.51 : 0.51)); +}if (ignore && JU.Logger.debugging) { +System.out.println("SD ignoring " + op.getOpTrans().length() + " " + op.getOpTitle() + op.xyz); +}var p2 = null; +if (pitch1 == 0 && !haveInversion) { +JS.SymmetryDesc.ptemp.scaleAdd2(0.5, vtemp, pa1); +pa1.scaleAdd2(isSpaceGroup ? -0.5 : -0.45, vtemp, pa1); +if (isSpaceGroupAll && (p2 = op.getOpPoint2()) != null) { +ptr.setT(p2); +uc.toCartesian(ptr, false); +ptr.scaleAdd2(-0.5, vtemp, ptr); +}if (isSpaceGroup) { +this.scaleByOrder(vtemp, order, isccw); +}} else if (isSpaceGroupAll && pitch1 != 0 && !haveInversion && (d = op.getOpTrans().length()) > 0.4) { +if (isccw === Boolean.TRUE) { +} else if (isccw == null) { +} else if (d == 0.5) { +ignore = true; +}} else if (isSpaceGroup && haveInversion) { +this.scaleByOrder(vtemp, order, isccw); +wp = "80"; +}if (pitch1 > 0 && !haveInversion) { +wp = "" + (90 - Clazz.floatToInt(vtemp.length() / pitch1 * 90)); +}if (!ignore) { +if (screwDir != 0) { +switch (order) { +case 2: +break; +case 3: +break; +case 4: +if (opTransLength > 0.49) screwDir = -2; +break; +case 6: +if (opTransLength > 0.49) screwDir = -3; + else if (opTransLength > 0.33) screwDir *= 2; +break; +} +color = (screwDir < 0 ? "blue" : "orange"); +}var name = opType + "_" + nrot + "rotvector1"; +this.drawOrderVector(drawSB, name, "vector", "0.1" + wp, pa1, nrot, screwDir, haveInversion && isSpaceGroupAll, isccw === Boolean.TRUE, vtemp, isTimeReversed ? "gray" : color, title, isSpaceGroupAll); +if (p2 != null) { +this.drawOrderVector(drawSB, name + "2", "vector", "0.1" + wp, ptr, order, screwDir, haveInversion, isccw === Boolean.TRUE, vtemp, isTimeReversed ? "gray" : color, title, isSpaceGroupAll); +}}} else if (isMirrorPlane) { +JS.SymmetryDesc.ptemp.sub2(ptref, pta00); +if (!isSpaceGroup && pta00.distance(ptref) > 0.2) this.drawVector(drawSB, "planeVector", "vector", "0.05", pta00, JS.SymmetryDesc.ptemp, isTimeReversed ? "gray" : "cyan", null); +opType = "plane"; +if (trans == null) { +color = "magenta"; +} else { +opType = "glide"; +switch ((glideType).charCodeAt(0)) { +case 97: +color = "[x4080ff]"; +break; +case 98: +color = "blue"; +break; +case 99: +color = "cyan"; +break; +case 110: +color = "orange"; +break; +case 100: +color = "grey"; +break; +case 103: +default: +color = "lightgreen"; +break; +} +if (!isSpaceGroup) { +this.drawFrameLine("X", ptref, vt1, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "red"); +this.drawFrameLine("Y", ptref, vt2, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "green"); +this.drawFrameLine("Z", ptref, vt3, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "blue"); +}}var points = uc.getCanonicalCopy(margin, true); +var v = this.modelSet.vwr.getTriangulator().intersectPlane(plane, points, 3); +if (v != null) { +var iCoincident = (isSpaceGroup ? op.iCoincident : 0); +planeCenter = new JU.P3(); +for (var i = 0, iv = 0, n = v.size(); i < n; i++) { +var pts = v.get(i); +drawSB.append(this.getDrawID((trans == null ? "mirror_" : glideType + "_g") + "planep" + i)).append(JU.Escape.eP(pts[0])).append(JU.Escape.eP(pts[1])); +if (pts.length == 3) { +if (iCoincident == 0 || (iv % 2 == 0) != (iCoincident == 1)) { +drawSB.append(JU.Escape.eP(pts[2])); +}iv++; +} else { +planeCenter.add(pts[0]); +planeCenter.add(pts[1]); +nPC += 2; +}drawSB.append(" color translucent ").append(color); +if (title != null) drawSB.append(" ").append(JU.PT.esc(title)); +} +}if (v == null || v.size() == 0) { +if (isSpaceGroupAll) { +ignore = true; +} else { +JS.SymmetryDesc.ptemp.add2(pa1, ax1); +drawSB.append(this.getDrawID("planeCircle")).append(" scale 2.0 circle ").append(JU.Escape.eP(pa1)).append(JU.Escape.eP(JS.SymmetryDesc.ptemp)).append(" color translucent ").append(color).append(" mesh fill"); +if (title != null) drawSB.append(" ").append(JU.PT.esc(title)); +}}}if (haveInversion) { +opType = "inv"; +if (isInversionOnly) { +drawSB.append(this.getDrawID("inv_point")).append(" diameter 0.4 ").append(JU.Escape.eP(ipt)); +if (title != null) drawSB.append(" ").append(JU.PT.esc(title)); +JS.SymmetryDesc.ptemp.sub2(ptinv, pta00); +if (!isSpaceGroup) { +this.drawVector(drawSB, "Arrow", "vector", "0.05", pta00, JS.SymmetryDesc.ptemp, isTimeReversed ? "gray" : "cyan", null); +}} else { +if (order == 4) { +drawSB.append(this.getDrawID("RotPoint")).append(" diameter 0.3 color red").append(JU.Escape.eP(ipt)); +if (title != null) drawSB.append(" ").append(JU.PT.esc(title)); +}if (!isSpaceGroup) { +drawSB.append(" color cyan"); +if (!isSpecial) { +JS.SymmetryDesc.ptemp.sub2(pt0, ptinv); +this.drawVector(drawSB, "Arrow", "vector", "0.05", ptinv, JS.SymmetryDesc.ptemp, isTimeReversed ? "gray" : "cyan", null); +}if (options != 1073742066) { +vtemp.setT(vt1); +vtemp.scale(-1); +this.drawFrameLine("X", ptinv, vtemp, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "red"); +vtemp.setT(vt2); +vtemp.scale(-1); +this.drawFrameLine("Y", ptinv, vtemp, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "green"); +vtemp.setT(vt3); +vtemp.scale(-1); +this.drawFrameLine("Z", ptinv, vtemp, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "blue"); +}}}}if (trans != null) { +if (isMirrorPlane && isSpaceGroup) { +if (planeCenter != null) { +ptref = planeCenter; +ptref.scale(1 / nPC); +ptref.scaleAdd2(-0.5, trans, ptref); +}} else if (ptref == null) { +ptref = (isSpaceGroup ? pta00 : JU.P3.newP(pta00)); +}if (ptref != null && !ignore) { +var isCentered = (glideType == '\0'); +color = (isTimeReversed && !haveInversion && !isMirrorPlane && !isRotation ? "darkGray" : "gold"); +this.drawVector(drawSB, (isCentered ? "centering_" : glideType + "_g") + "trans_vector", "vector", (isTranslationOnly ? "0.1" : "0.05"), ptref, trans, color, title); +if (isSpaceGroup && !isCentered && !isTranslationOnly) { +JS.SymmetryDesc.ptemp.setT(ptref); +JS.SymmetryDesc.ptemp.add(trans); +JS.SymmetryDesc.ptemp2.setT(trans); +JS.SymmetryDesc.ptemp2.scale(-1); +this.drawVector(drawSB, glideType + "_g" + "trans_vector2", "vector", "0.05", JS.SymmetryDesc.ptemp, JS.SymmetryDesc.ptemp2, color, title); +}}}if (!isSpaceGroup) { +JS.SymmetryDesc.ptemp2.setT(pt0); +JS.SymmetryDesc.ptemp.sub2(pt1, pt0); +JS.SymmetryDesc.ptemp.scaleAdd2(0.9, JS.SymmetryDesc.ptemp, JS.SymmetryDesc.ptemp2); +this.drawLine(drawSB, "frame2X", 0.2, JS.SymmetryDesc.ptemp2, JS.SymmetryDesc.ptemp, "red"); +JS.SymmetryDesc.ptemp.sub2(pt2, pt0); +JS.SymmetryDesc.ptemp.scaleAdd2(0.9, JS.SymmetryDesc.ptemp, JS.SymmetryDesc.ptemp2); +this.drawLine(drawSB, "frame2Y", 0.2, JS.SymmetryDesc.ptemp2, JS.SymmetryDesc.ptemp, "green"); +JS.SymmetryDesc.ptemp.sub2(pt3, pt0); +JS.SymmetryDesc.ptemp.scaleAdd2(0.9, JS.SymmetryDesc.ptemp, JS.SymmetryDesc.ptemp2); +this.drawLine(drawSB, "frame2Z", 0.2, JS.SymmetryDesc.ptemp2, JS.SymmetryDesc.ptemp, "purple"); +drawSB.append("\nsym_point = " + JU.Escape.eP(pta00)); +drawSB.append("\nvar p0 = " + JU.Escape.eP(JS.SymmetryDesc.ptemp2)); +if (Clazz.instanceOf(pta00,"JM.Atom")) { +drawSB.append("\nvar set2 = within(0.2,p0);if(!set2){set2 = within(0.2,p0.uxyz.xyz)}"); +drawSB.append("\n set2 &= {_" + (pta00).getElementSymbol() + "}"); +} else { +drawSB.append("\nvar set2 = p0.uxyz"); +}drawSB.append("\nsym_target = set2;if (set2) {"); +if (!isSpecial && options != 1073742066 && ptTarget == null && !haveTranslation) { +drawSB.append(this.getDrawID("offsetFrameX")).append(" diameter 0.20 @{set2.xyz} @{set2.xyz + ").append(JU.Escape.eP(vt1)).append("*0.9} color red"); +drawSB.append(this.getDrawID("offsetFrameY")).append(" diameter 0.20 @{set2.xyz} @{set2.xyz + ").append(JU.Escape.eP(vt2)).append("*0.9} color green"); +drawSB.append(this.getDrawID("offsetFrameZ")).append(" diameter 0.20 @{set2.xyz} @{set2.xyz + ").append(JU.Escape.eP(vt3)).append("*0.9} color purple"); +}drawSB.append("\n}\n"); +}cmds = drawSB.toString(); +if (JU.Logger.debugging) JU.Logger.info(cmds); +drawSB = null; +}}if (trans == null) ftrans = null; +if (isScrew) { +trans = JU.V3.newV(ax1); +JS.SymmetryDesc.ptemp.setT(trans); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +ftrans = JU.V3.newV(JS.SymmetryDesc.ptemp); +}if (isMirrorPlane) { +ang1 = 0; +}if (haveInversion) { +if (isInversionOnly) { +pa1 = null; +ax1 = null; +trans = null; +ftrans = null; +}} else if (isTranslation) { +pa1 = null; +ax1 = null; +}if (ax1 != null) ax1.normalize(); +var xyzNew = null; +if (bsInfo.get(0) || bsInfo.get(17)) { +xyzNew = (op.isBio ? m2.toString() : op.modDim > 0 ? op.xyzOriginal : JS.SymmetryOperation.getXYZFromMatrix(m2, false, false, false)); +if (isMagnetic) xyzNew = op.fixMagneticXYZ(m2, xyzNew, true); +}var ret = new Array(20); +for (var i = bsInfo.nextSetBit(0); i >= 0; i = bsInfo.nextSetBit(i + 1)) { +switch (i) { +case 0: +ret[i] = xyzNew; +break; +case 19: +if (ptFrom != null && ptTarget == null && !op.isBio && op.modDim == 0) { +var xyzN; +JS.SymmetryDesc.pta02.setT(ptFrom); +uc.toFractional(JS.SymmetryDesc.pta02, true); +m2.rotTrans(JS.SymmetryDesc.pta02); +JS.SymmetryDesc.ptemp.setT(JS.SymmetryDesc.pta02); +uc.unitize(JS.SymmetryDesc.pta02); +JS.SymmetryDesc.vtrans.sub2(JS.SymmetryDesc.pta02, JS.SymmetryDesc.ptemp); +m2 = JU.M4.newM4(op); +m2.add(JS.SymmetryDesc.vtrans); +xyzN = JS.SymmetryOperation.getXYZFromMatrix(m2, false, false, false); +if (isMagnetic) xyzN = op.fixMagneticXYZ(m2, xyzN, true); +ret[i] = xyzN; +}break; +case 1: +ret[i] = op.xyzOriginal; +break; +case 2: +ret[i] = info1; +break; +case 3: +ret[i] = cmds; +break; +case 4: +ret[i] = JS.SymmetryDesc.approx0(ftrans); +break; +case 5: +ret[i] = JS.SymmetryDesc.approx0(trans); +break; +case 6: +ret[i] = JS.SymmetryDesc.approx0(ipt); +break; +case 7: +ret[i] = JS.SymmetryDesc.approx0(pa1 != null && bsInfo.get(22) ? pta00 : pa1); +break; +case 8: +ret[i] = (plane == null ? JS.SymmetryDesc.approx0(ax1) : null); +break; +case 9: +ret[i] = (ang1 != 0 ? Integer.$valueOf(ang1) : null); +break; +case 10: +ret[i] = m2; +break; +case 11: +ret[i] = (JS.SymmetryDesc.vtrans.lengthSquared() > 0 ? JS.SymmetryDesc.vtrans : null); +break; +case 12: +ret[i] = op.getCentering(); +break; +case 13: +ret[i] = Integer.$valueOf(op.timeReversal); +break; +case 14: +if (plane != null && bsInfo.get(22)) { +var d = JU.Measure.distanceToPlane(plane, pta00); +plane.w -= d; +}ret[i] = plane; +break; +case 15: +ret[i] = type; +break; +case 16: +ret[i] = Integer.$valueOf(op.number); +break; +case 17: +var cift = null; +if (!op.isBio && !xyzNew.equals(op.xyzOriginal)) { +if (op.number > 0) { +var orig = JS.SymmetryOperation.getMatrixFromXYZ(op.xyzOriginal, null, false); +orig.sub(m2); +cift = new JU.P3(); +orig.getTranslation(cift); +}}var cifi = (op.number < 0 ? 0 : op.number); +ret[i] = cifi + (cift == null ? " [0 0 0]" : " [" + Clazz.floatToInt(-cift.x) + " " + Clazz.floatToInt(-cift.y) + " " + Clazz.floatToInt(-cift.z) + "]"); +break; +case 18: +ret[i] = op.xyzCanonical; +break; +} +} +return ret; +}, "JS.SymmetryOperation,J.api.SymmetryInterface,JU.P3,JU.P3,~S,~N,~N,~B,JU.BS,~B,~B"); +c$.fixGlideTrans = Clazz.defineMethod(c$, "fixGlideTrans", +function(ftrans){ +ftrans.x = JS.SymmetryDesc.fixGlideX(ftrans.x); +ftrans.y = JS.SymmetryDesc.fixGlideX(ftrans.y); +ftrans.z = JS.SymmetryDesc.fixGlideX(ftrans.z); +}, "JU.V3"); +c$.fixGlideX = Clazz.defineMethod(c$, "fixGlideX", +function(x){ +var n48 = Math.round(x * 48.001); +switch (n48) { +case 36: +return -0.25; +case -36: +return 0.25; +default: +return x; +} +}, "~N"); +Clazz.defineMethod(c$, "scaleByOrder", +function(v, order, isccw){ +v.scale(1 + (0.3 / order) + (isccw == null ? 0 : isccw === Boolean.TRUE ? 0.02 : -0.02)); +}, "JU.V3,~N,Boolean"); +c$.checkHandedness = Clazz.defineMethod(c$, "checkHandedness", +function(uc, ax1){ +var a; +var b; +var c; +JS.SymmetryDesc.ptemp.set(1, 0, 0); +uc.toCartesian(JS.SymmetryDesc.ptemp, false); +a = JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(ax1)); +JS.SymmetryDesc.ptemp.set(0, 1, 0); +uc.toCartesian(JS.SymmetryDesc.ptemp, false); +b = JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(ax1)); +JS.SymmetryDesc.ptemp.set(0, 0, 1); +uc.toCartesian(JS.SymmetryDesc.ptemp, false); +c = JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(ax1)); +return (a == 0 ? (b == 0 ? c > 0 : b > 0) : c == 0 ? a > 0 : (b == 0 ? c > 0 : a * b * c > 0)); +}, "J.api.SymmetryInterface,JU.P3"); +Clazz.defineMethod(c$, "drawLine", +function(s, id, diameter, pt0, pt1, color){ +s.append(this.getDrawID(id)).append(" diameter ").appendD(diameter).append(JU.Escape.eP(pt0)).append(JU.Escape.eP(pt1)).append(" color ").append(color); +}, "JU.SB,~S,~N,JU.P3,JU.P3,~S"); +Clazz.defineMethod(c$, "drawFrameLine", +function(xyz, pt, v, width, ptemp, sb, key, color){ +ptemp.setT(pt); +ptemp.add(v); +this.drawLine(sb, key + "Pt" + xyz, width, pt, ptemp, "translucent " + color); +}, "~S,JU.P3,JU.V3,~N,JU.P3,JU.SB,~S,~S"); +Clazz.defineMethod(c$, "drawVector", +function(sb, label, type, d, pt1, v, color, title){ +if (type.equals("vline")) { +JS.SymmetryDesc.ptemp2.add2(pt1, v); +type = ""; +v = JS.SymmetryDesc.ptemp2; +}d += " "; +sb.append(this.getDrawID(label)).append(" diameter ").append(d).append(type).append(JU.Escape.eP(pt1)).append(JU.Escape.eP(v)).append(" color ").append(color); +if (title != null) sb.append(" \"" + title + "\""); +}, "JU.SB,~S,~S,~S,JU.T3,JU.T3,~S,~S"); +Clazz.defineMethod(c$, "drawOrderVector", +function(sb, label, type, d, pt, order, screwDir, haveInversion, isCCW, vtemp, color, title, isSpaceGroupAll){ +this.drawVector(sb, label, type, d, pt, vtemp, color, title); +if (order == 2 || haveInversion && !isCCW) return; +var poly = JS.SymmetryDesc.getPolygon(order, !haveInversion ? 0 : isCCW ? 1 : -1, haveInversion, pt, vtemp); +var l = poly[0]; +sb.append(this.getDrawID(label + "_key")).append(" POLYGON ").appendI(l.size()); +for (var i = 0, n = l.size(); i < n; i++) sb.appendO(l.get(i)); + +sb.append(" color ").append(color); +if (screwDir != 0 && isSpaceGroupAll) { +poly = JS.SymmetryDesc.getPolygon(order, screwDir, haveInversion, pt, vtemp); +sb.append(this.getDrawID(label + "_key2")); +l = poly[0]; +sb.append(" POLYGON ").appendI(l.size()); +for (var i = 0, n = l.size(); i < n; i++) sb.appendO(l.get(i)); + +l = poly[1]; +sb.appendI(l.size()); +for (var i = 0, n = l.size(); i < n; i++) sb.appendO(JU.PT.toJSON(null, l.get(i))); + +sb.append(" color ").append(color); +}}, "JU.SB,~S,~S,~S,JU.P3,~N,~N,~B,~B,JU.V3,~S,~S,~B"); +c$.getPolygon = Clazz.defineMethod(c$, "getPolygon", +function(order, screwDir, haveInversion, pt0, v){ +var scale = (haveInversion ? 0.6 : 0.4); +var pts = new JU.Lst(); +var faces = new JU.Lst(); +var offset = JU.V3.newV(v); +offset.scale(0); +offset.add(pt0); +var vZ = JU.V3.new3(0, 0, 1); +var vperp = new JU.V3(); +var m = new JU.M3(); +vperp.cross(vZ, v); +if (vperp.length() < 0.01) { +m.m00 = m.m11 = m.m22 = 1; +} else { +vperp.normalize(); +var a = vZ.angle(v); +m.setAA(JU.A4.newVA(vperp, a)); +}var rad = (6.283185307179586 / order * (screwDir < 0 ? -1 : 1)); +var vt = new JU.V3(); +var ptLast = null; +for (var plast = 0, p = 0, i = 0, n = (screwDir == 0 ? order : order + 1); i < n; i++) { +var pt = new JU.P3(); +pt.x = Math.cos(rad * i) * scale; +pt.y = Math.sin(rad * i) * scale; +m.rotate(pt); +pt.add(offset); +if (i < order) { +pts.addLast(pt); +}if (!haveInversion && screwDir != 0 && (i % screwDir == 0) && ptLast != null) { +vt.sub2(pt, ptLast); +var p2 = (i < order ? p++ : 0); +var pt1 = JU.P3.newP(pt); +pt1.scaleAdd2(1, pt, pt1); +pt1.scaleAdd2(-1, offset, pt1); +pts.addLast(pt1); +faces.addLast( Clazz.newIntArray(-1, [plast, p++, p2, 0])); +plast = p2; +} else { +plast = p++; +}ptLast = pt; +} +return Clazz.newArray(-1, [pts, faces]); +}, "~N,~N,~B,JU.P3,JU.V3"); +c$.rotTransCart = Clazz.defineMethod(c$, "rotTransCart", +function(op, uc, pt00, vtrans){ +var p0 = JU.P3.newP(pt00); +uc.toFractional(p0, false); +op.rotTrans(p0); +p0.add(vtrans); +uc.toCartesian(p0, false); +return p0; +}, "JS.SymmetryOperation,J.api.SymmetryInterface,JU.P3,JU.V3"); +c$.strCoord = Clazz.defineMethod(c$, "strCoord", +function(p, isBio){ +JS.SymmetryDesc.approx0(p); +return (isBio ? "(" + p.x + " " + p.y + " " + p.z + ")" : JS.SymmetryOperation.fcoord(p, " ")); +}, "JU.T3,~B"); +c$.approx0 = Clazz.defineMethod(c$, "approx0", +function(pt){ +if (pt != null) { +pt.x = JS.SymmetryDesc.approx0d(pt.x); +pt.y = JS.SymmetryDesc.approx0d(pt.y); +pt.z = JS.SymmetryDesc.approx0d(pt.z); +}return pt; +}, "JU.T3"); +c$.approx0d = Clazz.defineMethod(c$, "approx0d", +function(x){ +return (Math.abs(x) < 0.0001 ? 0 : x); +}, "~N"); +Clazz.defineMethod(c$, "getSymmetryInfo", +function(iModel, iatom, uc, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, isSpaceGroup){ +var returnType = 0; +var nullRet = JS.SymmetryDesc.nullReturn(type); +switch (type) { +case 1073741994: +return "" + uc.getLatticeType(); +case 1073742001: +returnType = 1825200146; +break; +case 135176: +returnType = 135176; +break; +case 1275068418: +returnType = JS.SymmetryDesc.getType(id); +switch (returnType) { +case 1153433601: +case 1073741961: +case 1073742001: +case 134217751: +case 1086326789: +case 36868: +type = returnType; +break; +default: +returnType = JS.SymmetryDesc.getKeyType(id); +break; +} +break; +} +var bsInfo = JS.SymmetryDesc.getInfoBS(returnType); +var isSpaceGroupAll = (nth == -2); +var iop = op; +var offset = (options == 1073742066 && (type == 1153433601 || type == 134217751) ? pt2 : null); +if (offset != null) pt2 = null; +var info = null; +var xyzOriginal = null; +var ops = null; +if (pt2 == null) { +if (xyz == null) { +ops = (isSpaceGroupAll ? uc.getAdditionalOperations() : uc.getSymmetryOperations()); +if (ops == null || Math.abs(op) > ops.length) return nullRet; +if (op == 0) return nullRet; +iop = Math.abs(op) - 1; +xyz = (translation == null ? ops[iop].xyz : ops[iop].getxyzTrans(translation)); +xyzOriginal = ops[iop].xyzOriginal; +} else { +iop = op = 0; +}var symTemp = new JS.Symmetry(); +symTemp.setSpaceGroup(false); +var isBio = (uc != null && uc.isBio()); +var i = (isBio ? symTemp.addBioMoleculeOperation((uc.getSpaceGroup()).finalOperations[iop], op < 0) : symTemp.addSpaceGroupOperation((op < 0 ? "!" : "=") + xyz, Math.abs(op))); +if (i < 0) return nullRet; +var opTemp = symTemp.getSpaceGroupOperation(i); +if (isSpaceGroup) { +opTemp.iCoincident = ops[iop].iCoincident; +}if (isSpaceGroupAll) { +opTemp.isIrrelevant = ops[iop].isIrrelevant; +}if (xyzOriginal != null) opTemp.xyzOriginal = xyzOriginal; +opTemp.number = op; +if (!isBio) opTemp.getCentering(); +if (pt == null && iatom >= 0) pt = this.modelSet.at[iatom]; +if (type == 134217751 || type == 1153433601) { +if (isBio || pt == null) return nullRet; +symTemp.setUnitCell(uc); +JS.SymmetryDesc.ptemp.setT(pt); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +if (Float.isNaN(JS.SymmetryDesc.ptemp.x)) return nullRet; +var sympt = new JU.P3(); +symTemp.newSpaceGroupPoint(JS.SymmetryDesc.ptemp, i, null, 0, 0, 0, sympt); +if (options == 1073742066) { +uc.unitize(sympt); +sympt.add(offset); +}symTemp.toCartesian(sympt, false); +var ret = sympt; +return (type == 1153433601 ? this.getAtom(uc, iModel, iatom, ret) : ret); +}info = this.createInfoArray(opTemp, uc, pt, null, (id == null ? "sym" : id), scaleFactor, options, (translation != null), bsInfo, isSpaceGroup, isSpaceGroupAll); +if (type == 1275068418 && id != null) { +returnType = JS.SymmetryDesc.getKeyType(id); +}} else { +var stype = "info"; +var asString = false; +switch (type) { +case 1275068418: +returnType = JS.SymmetryDesc.getKeyType(id); +id = stype = null; +if (nth == 0) nth = -1; +break; +case 1073742001: +id = stype = null; +if (nth == 0) nth = -1; +asString = true; +bsInfo.set(21); +bsInfo.set(0); +bsInfo.set(19); +break; +case 135176: +if (id == null) id = (isSpaceGroup ? "sg" : "sym"); +stype = "all"; +asString = true; +break; +case 1153433601: +id = stype = null; +default: +if (nth == 0) nth = 1; +} +var ret1 = this.getSymopInfoForPoints(uc, iModel, op, translation, pt, pt2, id, stype, scaleFactor, nth, options, bsInfo); +if (asString) { +return ret1; +}if ((typeof(ret1)=='string')) return nullRet; +info = ret1; +if (type == 1153433601) { +if (!(Clazz.instanceOf(pt,"JM.Atom")) && !(Clazz.instanceOf(pt2,"JM.Atom"))) iatom = -1; +return (info == null ? nullRet : this.getAtom(uc, iModel, iatom, info[7])); +}}if (info == null) return nullRet; +var isList = (info.length > 0 && Clazz.instanceOf(info[0],Array)); +if (nth < 0 && op <= 0 && xyz == null && (type == 1275068418 || isList)) { +if (type == 1275068418 && info.length > 0 && !(Clazz.instanceOf(info[0],Array))) info = Clazz.newArray(-1, [info]); +var lst = new JU.Lst(); +for (var i = 0; i < info.length; i++) lst.addLast(JS.SymmetryDesc.getInfo(info[i], returnType < 0 ? returnType : type)); + +return lst; +} else if (returnType < 0 && (nth >= 0 || op > 0 || xyz != null)) { +type = returnType; +}if (nth > 0 && isList) info = info[0]; +if (type == 135176 && isSpaceGroup && nth == -2) type = 134217764; +return JS.SymmetryDesc.getInfo(info, type); +}, "~N,~N,J.api.SymmetryInterface,~S,~N,JU.P3,JU.P3,JU.P3,~S,~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "getAtom", +function(uc, iModel, iAtom, sympt){ +var bsElement = null; +if (iAtom >= 0) this.modelSet.getAtomBitsMDa(1094715402, Integer.$valueOf(this.modelSet.at[iAtom].getElementNumber()), bsElement = new JU.BS()); +var bsResult = new JU.BS(); +this.modelSet.getAtomsWithin(0.02, sympt, bsResult, iModel); +if (bsElement != null) bsResult.and(bsElement); +if (bsResult.isEmpty()) { +sympt = JU.P3.newP(sympt); +uc.toUnitCell(sympt, null); +uc.toCartesian(sympt, false); +this.modelSet.getAtomsWithin(0.02, sympt, bsResult, iModel); +if (bsElement != null) bsResult.and(bsElement); +}return bsResult; +}, "J.api.SymmetryInterface,~N,~N,JU.T3"); +Clazz.defineMethod(c$, "getSymopInfoForPoints", +function(sym, modelIndex, symOp, translation, pt1, pt2, drawID, stype, scaleFactor, nth, options, bsInfo){ +var asString = (bsInfo.get(21) || bsInfo.get(3) && bsInfo.cardinality() == 3); +bsInfo.clear(21); +var ret = (asString ? "" : null); +var sginfo = this.getSpaceGroupInfo(sym, modelIndex, null, symOp, pt1, pt2, drawID, scaleFactor, nth, false, true, options, null, bsInfo); +if (sginfo == null) return ret; +var infolist = sginfo.get("operations"); +if (infolist == null) return ret; +var sb = (asString ? new JU.SB() : null); +symOp--; +var isAll = (!asString && symOp < 0); +var strOperations = sginfo.get("symmetryInfo"); +var labelOnly = "label".equals(stype); +var n = 0; +for (var i = 0; i < infolist.length; i++) { +if (infolist[i] == null || symOp >= 0 && symOp != i) continue; +if (!asString) { +if (!isAll) return infolist[i]; +infolist[n++] = infolist[i]; +continue; +}if (drawID != null) return (infolist[i][3]) + "\nprint " + JU.PT.esc(strOperations); +if (sb.length() > 0) sb.appendC('\n'); +if (!labelOnly) { +if (symOp < 0) sb.appendI(i + 1).appendC('\t'); +sb.append(infolist[i][0]).appendC('\t'); +}sb.append(infolist[i][2]); +} +if (!asString) { +var a = new Array(n); +for (var i = 0; i < n; i++) a[i] = infolist[i]; + +return a; +}if (sb.length() == 0) return (drawID != null ? "draw ID \"" + drawID + "*\" delete" : ret); +return sb.toString(); +}, "J.api.SymmetryInterface,~N,~N,JU.P3,JU.P3,JU.P3,~S,~S,~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "getDrawID", +function(id){ +return this.drawID + id + "\" "; +}, "~S"); +Clazz.defineMethod(c$, "getSymopInfo", +function(iAtom, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, opList){ +if (type == 0) type = JS.SymmetryDesc.getType(id); +var ret = (type == 1153433601 ? new JU.BS() : ""); +var iModel = (iAtom >= 0 ? this.modelSet.at[iAtom].mi : this.modelSet.vwr.am.cmi); +if (iModel < 0) return ret; +var uc = this.modelSet.am[iModel].biosymmetry; +if (uc == null && (uc = this.modelSet.getUnitCell(iModel)) == null) { +uc = new JS.Symmetry().setUnitCellFromParams(null, false, NaN); +}if (type != 135176 || op != 2147483647 && opList == null) { +return this.getSymmetryInfo(iModel, iAtom, uc, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, false); +}if (uc == null) return ret; +var isSpaceGroup = (xyz == null && nth < 0 && opList == null); +var s = ""; +var ops = (isSpaceGroup && nth == -2 ? uc.getAdditionalOperations() : uc.getSymmetryOperations()); +if (ops != null) { +if (id == null) id = "sg"; +var n = ops.length; +if (pt != null && pt2 == null || opList != null) { +if (opList == null) opList = uc.getInvariantSymops(pt, null); +n = opList.length; +for (var i = 0; i < n; i++) { +if (nth > 0 && nth != i + 1) continue; +op = opList[i]; +s += this.getSymmetryInfo(iModel, iAtom, uc, xyz, op, translation, pt, pt2, id + op, 135176, scaleFactor, nth, options, pt == null); +} +} else { +for (op = 1; op <= n; op++) s += this.getSymmetryInfo(iModel, iAtom, uc, xyz, op, translation, pt, pt2, id + op, 135176, scaleFactor, nth, options, true); + +}}return s; +}, "~N,~S,~N,JU.P3,JU.P3,JU.P3,~S,~N,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "getSpaceGroupInfo", +function(sym, modelIndex, sgName, symOp, pt1, pt2, drawID, scaleFactor, nth, isFull, isForModel, options, cellInfo, bsInfo){ +if (bsInfo == null) { +bsInfo = new JU.BS(); +bsInfo.setBits(0, JS.SymmetryDesc.keys.length); +bsInfo.clear(19); +}var matrixOnly = (bsInfo.cardinality() == 1 && bsInfo.get(10)); +var info = null; +var isStandard = (!matrixOnly && pt1 == null && drawID == null && nth <= 0 && bsInfo.cardinality() >= JS.SymmetryDesc.keys.length); +var isBio = false; +var sgNote = null; +var haveName = (sgName != null && sgName.length > 0); +var haveRawName = (haveName && sgName.indexOf("[--]") >= 0); +if (isForModel || !haveName) { +var saveModelInfo = (isStandard && symOp == 0); +if (matrixOnly) { +cellInfo = sym; +} else { +if (modelIndex < 0) modelIndex = (Clazz.instanceOf(pt1,"JM.Atom") ? (pt1).mi : this.modelSet.vwr.am.cmi); +if (modelIndex < 0) sgNote = "no single current model"; + else if (cellInfo == null && !(isBio = (cellInfo = this.modelSet.am[modelIndex].biosymmetry) != null) && (cellInfo = this.modelSet.getUnitCell(modelIndex)) == null) sgNote = "not applicable"; +if (sgNote != null) { +info = new java.util.Hashtable(); +info.put("spaceGroupInfo", ""); +info.put("spaceGroupNote", sgNote); +info.put("symmetryInfo", ""); +} else if (isStandard) { +info = this.modelSet.getInfo(modelIndex, "spaceGroupInfo"); +}if (info != null) return info; +sgName = cellInfo.getSpaceGroupName(); +}info = new java.util.Hashtable(); +var ops = cellInfo.getSymmetryOperations(); +var sg = (isBio ? (cellInfo).spaceGroup : null); +var slist = (haveRawName ? "" : null); +var opCount = 0; +if (ops != null) { +if (!matrixOnly) { +if (isBio) sym.setSpaceGroupTo(JS.SpaceGroup.getNull(false, false, false)); + else sym.setSpaceGroup(false); +}if (ops[0].timeReversal != 0) (sym.getSpaceGroupOperation(0)).timeReversal = 1; +var infolist = new Array(ops.length); +var sops = ""; +var i0 = (drawID == null || pt1 == null || pt2 == null && nth < 0 ? 0 : 1); +for (var i = i0, nop = 0; i < ops.length && nop != nth; i++) { +var op = ops[i]; +var xyzOriginal = op.xyzOriginal; +var iop; +if (matrixOnly) { +iop = i; +} else { +var isNewIncomm = (i == 0 && op.xyz.indexOf("x4") >= 0); +iop = (!isNewIncomm && sym.getSpaceGroupOperation(i) != null ? i : isBio ? sym.addBioMoleculeOperation(sg.finalOperations[i], false) : sym.addSpaceGroupOperation("=" + op.xyz, i + 1)); +if (iop < 0) continue; +op = sym.getSpaceGroupOperation(i); +if (op == null) continue; +op.xyzOriginal = xyzOriginal; +}if (op.timeReversal != 0 || op.modDim > 0) isStandard = false; +if (slist != null) slist += ";" + op.xyz; +var ret = (symOp > 0 && symOp - 1 != iop ? null : this.createInfoArray(op, cellInfo, pt1, pt2, drawID, scaleFactor, options, false, bsInfo, false, false)); +if (ret != null) { +nop++; +if (nth > 0 && nop != nth) continue; +infolist[i] = ret; +if (!matrixOnly) sops += "\n" + (i + 1) + (drawID != null && nop == 1 ? "*" : "") + "\t" + ret[bsInfo.get(19) ? 19 : 0] + "\t " + ret[2]; +opCount++; +if (symOp > 0) break; +}} +info.put("operations", infolist); +if (!matrixOnly) info.put("symmetryInfo", (sops.length == 0 ? "" : sops.substring(1))); +}if (matrixOnly) { +return info; +}sgNote = (opCount == 0 ? "\n no symmetry operations" : nth <= 0 && symOp <= 0 ? "\n" + opCount + " symmetry operation" + (opCount == 1 ? ":\n" : "s:\n") : ""); +if (slist != null) sgName = slist.substring(slist.indexOf(";") + 1); +if (saveModelInfo) this.modelSet.setInfo(modelIndex, "spaceGroupInfo", info); +} else { +info = new java.util.Hashtable(); +}info.put("spaceGroupName", sgName); +info.put("spaceGroupNote", sgNote == null ? "" : sgNote); +var data; +if (isBio) { +data = sgName; +} else { +if (haveName && !haveRawName) sym.setSpaceGroupName(sgName); +data = sym.getSpaceGroupInfoObj(sgName, (cellInfo == null ? null : cellInfo.getUnitCellParams()), isFull, !isForModel); +if (data == null || data.equals("?")) { +data = "?"; +info.put("spaceGroupNote", "could not identify space group from name: " + sgName + "\nformat: show spacegroup \"2\" or \"P 2c\" " + "or \"C m m m\" or \"x, y, z;-x ,-y, -z\""); +}}info.put("spaceGroupInfo", data); +return info; +}, "J.api.SymmetryInterface,~N,~S,~N,JU.P3,JU.P3,~S,~N,~N,~B,~B,~N,J.api.SymmetryInterface,JU.BS"); +Clazz.defineMethod(c$, "getTransform", +function(uc, ops, fracA, fracB, best){ +if (JS.SymmetryDesc.pta01 == null) { +JS.SymmetryDesc.pta01 = new JU.P3(); +JS.SymmetryDesc.pta02 = new JU.P3(); +JS.SymmetryDesc.ptemp = new JU.P3(); +JS.SymmetryDesc.vtrans = new JU.V3(); +}JS.SymmetryDesc.pta02.setT(fracB); +JS.SymmetryDesc.vtrans.setT(JS.SymmetryDesc.pta02); +uc.unitize(JS.SymmetryDesc.pta02); +var dmin = 3.4028235E38; +var imin = -1; +for (var i = 0, n = ops.length; i < n; i++) { +var op = ops[i]; +JS.SymmetryDesc.pta01.setT(fracA); +op.rotTrans(JS.SymmetryDesc.pta01); +JS.SymmetryDesc.ptemp.setT(JS.SymmetryDesc.pta01); +uc.unitize(JS.SymmetryDesc.pta01); +var d = JS.SymmetryDesc.pta01.distanceSquared(JS.SymmetryDesc.pta02); +if (d < 1.96E-6) { +JS.SymmetryDesc.vtrans.sub(JS.SymmetryDesc.ptemp); +JS.SymmetryOperation.normalize12ths(JS.SymmetryDesc.vtrans); +var m2 = JU.M4.newM4(op); +m2.add(JS.SymmetryDesc.vtrans); +JS.SymmetryDesc.pta01.setT(fracA); +m2.rotTrans(JS.SymmetryDesc.pta01); +uc.unitize(JS.SymmetryDesc.pta01); +d = JS.SymmetryDesc.pta01.distanceSquared(JS.SymmetryDesc.pta02); +if (d >= 1.96E-6) { +continue; +}return m2; +}if (d < dmin) { +dmin = d; +imin = i; +}} +if (best) { +var op = ops[imin]; +JS.SymmetryDesc.pta01.setT(fracA); +op.rotTrans(JS.SymmetryDesc.pta01); +uc.unitize(JS.SymmetryDesc.pta01); +}return null; +}, "JS.UnitCell,~A,JU.P3,JU.P3,~B"); +c$.keys = Clazz.newArray(-1, ["xyz", "xyzOriginal", "label", null, "fractionalTranslation", "cartesianTranslation", "inversionCenter", null, "axisVector", "rotationAngle", "matrix", "unitTranslation", "centeringVector", "timeReversal", "plane", "_type", "id", "cif2", "xyzCanonical", "xyzNormalized"]); +c$.ptemp = new JU.P3(); +c$.ptemp2 = new JU.P3(); +c$.pta01 = new JU.P3(); +c$.pta02 = new JU.P3(); +c$.vtrans = new JU.V3(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryInfo.js b/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryInfo.js new file mode 100755 index 000000000000..be607cc562b0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryInfo.js @@ -0,0 +1,132 @@ +Clazz.declarePackage("JS"); +Clazz.load(null, "JS.SymmetryInfo", ["JU.PT", "JS.SpaceGroup", "$.SymmetryOperation", "JU.SimpleUnitCell"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isCurrentCell = true; +this.displayName = null; +this.coordinatesAreFractional = false; +this.isMultiCell = false; +this.sgName = null; +this.sgTitle = null; +this.symmetryOperations = null; +this.additionalOperations = null; +this.infoStr = null; +this.cellRange = null; +this.latticeType = 'P'; +this.intlTableNo = null; +this.intlTableJmolID = null; +this.spaceGroupIndex = 0; +this.spaceGroupF2CTitle = null; +this.spaceGroupF2C = null; +this.spaceGroupF2CParams = null; +this.strSUPERCELL = null; +this.intlTableIndex = null; +this.intlTableTransform = null; +this.sgDerived = null; +Clazz.instantialize(this, arguments);}, JS, "SymmetryInfo", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "setSymmetryInfoFromModelkit", +function(sg){ +this.cellRange = null; +this.sgName = sg.getName(); +this.intlTableJmolID = sg.jmolId; +this.intlTableNo = sg.itaNumber; +this.latticeType = sg.latticeType; +this.symmetryOperations = sg.finalOperations; +this.coordinatesAreFractional = true; +this.setInfo(sg.getOperationCount()); +}, "JS.SpaceGroup"); +Clazz.defineMethod(c$, "setSymmetryInfoFromFile", +function(modelInfo, unitCellParams){ +this.spaceGroupIndex = (modelInfo.remove("spaceGroupIndex")).intValue(); +this.cellRange = modelInfo.remove("ML_unitCellRange"); +this.sgName = modelInfo.get("spaceGroup"); +this.spaceGroupF2C = modelInfo.remove("f2c"); +this.spaceGroupF2CTitle = modelInfo.remove("f2cTitle"); +this.spaceGroupF2CParams = modelInfo.remove("f2cParams"); +this.sgTitle = modelInfo.remove("spaceGroupTitle"); +this.strSUPERCELL = modelInfo.remove("supercell"); +if (this.sgName == null || this.sgName === "") this.sgName = "spacegroup unspecified"; +this.intlTableNo = modelInfo.get("intlTableNo"); +this.intlTableIndex = modelInfo.get("intlTableIndex"); +this.intlTableTransform = modelInfo.get("intlTableTransform"); +this.intlTableJmolID = modelInfo.remove("intlTableJmolID"); +var s = modelInfo.get("latticeType"); +this.latticeType = (s == null ? 'P' : s.charAt(0)); +this.symmetryOperations = modelInfo.remove("symmetryOps"); +this.coordinatesAreFractional = modelInfo.containsKey("coordinatesAreFractional") ? (modelInfo.get("coordinatesAreFractional")).booleanValue() : false; +this.isMultiCell = (this.coordinatesAreFractional && this.symmetryOperations != null); +if (unitCellParams == null) unitCellParams = modelInfo.get("unitCellParams"); +unitCellParams = (JU.SimpleUnitCell.isValid(unitCellParams) ? unitCellParams : null); +if (unitCellParams == null) { +this.coordinatesAreFractional = false; +this.symmetryOperations = null; +this.cellRange = null; +this.infoStr = ""; +modelInfo.remove("unitCellParams"); +}var symmetryCount = modelInfo.containsKey("symmetryCount") ? (modelInfo.get("symmetryCount")).intValue() : 0; +this.setInfo(symmetryCount); +return unitCellParams; +}, "java.util.Map,~A"); +Clazz.defineMethod(c$, "setInfo", +function(symmetryCount){ +var info = "Spacegroup: " + this.sgName; +if (this.symmetryOperations != null) { +var c = ""; +var s = "\nNumber of symmetry operations: " + (symmetryCount == 0 ? 1 : symmetryCount) + "\nSymmetry Operations:"; +for (var i = 0; i < symmetryCount; i++) { +var op = this.symmetryOperations[i]; +s += "\n" + op.fixMagneticXYZ(op, op.xyz, true); +if (op.isCenteringOp) c += " (" + JU.PT.rep(JU.PT.replaceAllCharacters(op.xyz, "xyz", "0"), "0+", "") + ")"; +} +if (c.length > 0) info += "\nCentering: " + c; +info += s; +info += "\n"; +}this.infoStr = info; +}, "~N"); +Clazz.defineMethod(c$, "getAdditionalOperations", +function(){ +if (this.additionalOperations == null && this.symmetryOperations != null) { +this.additionalOperations = JS.SymmetryOperation.getAdditionalOperations(this.symmetryOperations); +}return this.additionalOperations; +}); +Clazz.defineMethod(c$, "getDerivedSpaceGroup", +function(){ +if (this.sgDerived == null) { +this.sgDerived = JS.SpaceGroup.getSpaceGroupFromIndex(this.spaceGroupIndex); +}return this.sgDerived; +}); +Clazz.defineMethod(c$, "setIsCurrentCell", +function(TF){ +return (this.isCurrentCell != TF && (this.isCurrentCell = TF) == true); +}, "~B"); +Clazz.defineMethod(c$, "getSpaceGroupTitle", +function(){ +return (this.isCurrentCell && this.spaceGroupF2CTitle != null ? this.spaceGroupF2CTitle : this.sgName.startsWith("cell=") ? this.sgName : this.sgTitle); +}); +Clazz.defineMethod(c$, "getDisplayName", +function(sym){ +if (this.displayName == null) { +var isPolymer = sym.isPolymer(); +var isSlab = sym.isSlab(); +var sgName = (isPolymer ? "polymer" : isSlab ? "slab" : this.getSpaceGroupTitle()); +if (sgName == null) return null; +if (sgName.startsWith("cell=!")) sgName = "cell=inverse[" + sgName.substring(6) + "]"; +sgName = JU.PT.rep(sgName, ";0,0,0", ""); +if (sgName.indexOf("#") < 0) { +var trm = this.intlTableTransform; +var intTab = this.intlTableIndex; +if (!isSlab && !isPolymer && intTab != null) { +if (trm != null) { +var pt = sgName.indexOf(trm); +if (pt >= 0) { +sgName = JU.PT.rep(sgName, "(" + trm + ")", ""); +}if (intTab.indexOf(trm) < 0) { +pt = intTab.indexOf("."); +if (pt > 0) intTab = intTab.substring(0, pt); +intTab += ":" + trm; +}}sgName = (sgName.startsWith("0") ? "" : sgName.equals("unspecified!") ? "#" : sgName + " #") + intTab; +}}if (sgName.indexOf("-- [--]") >= 0) sgName = ""; +this.displayName = sgName; +}return this.displayName; +}, "JS.Symmetry"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryOperation.js b/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryOperation.js new file mode 100755 index 000000000000..fc4ded7fdbf9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/SymmetryOperation.js @@ -0,0 +1,1407 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.M4", "$.P3"], "JS.SymmetryOperation", ["java.util.Hashtable", "JU.Lst", "$.Matrix", "$.Measure", "$.P4", "$.PT", "$.SB", "$.V3", "JS.UnitCell", "JU.BoxInfo", "$.Logger", "$.Parser"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.xyzOriginal = null; +this.xyzCanonical = null; +this.xyz = null; +this.doNormalize = true; +this.isFinalized = false; +this.opId = 0; +this.centering = null; +this.info = null; +this.opType = -1; +this.opOrder = 0; +this.opTrans = null; +this.opGlide = null; +this.opPoint = null; +this.opPoint2 = null; +this.opAxis = null; +this.opPlane = null; +this.opIsCCW = null; +this.isIrrelevant = false; +this.iCoincident = 0; +this.myLabels = null; +this.modDim = 0; +this.linearRotTrans = null; +this.rsvs = null; +this.isBio = false; +this.sigma = null; +this.number = 0; +this.subsystemCode = null; +this.timeReversal = 0; +this.unCentered = false; +this.isCenteringOp = false; +this.magOp = 2147483647; +this.divisor = 12; +this.opX = null; +this.opAxisCode = null; +this.opIsLong = false; +Clazz.instantialize(this, arguments);}, JS, "SymmetryOperation", JU.M4); +Clazz.makeConstructor(c$, +function(op, id, doNormalize){ +Clazz.superConstructor (this, JS.SymmetryOperation, []); +this.doNormalize = doNormalize; +if (op == null) { +this.opId = id; +return; +}this.xyzOriginal = op.xyzOriginal; +this.xyz = op.xyz; +this.divisor = op.divisor; +this.opId = op.opId; +this.modDim = op.modDim; +this.myLabels = op.myLabels; +this.number = op.number; +this.linearRotTrans = op.linearRotTrans; +this.sigma = op.sigma; +this.subsystemCode = op.subsystemCode; +this.timeReversal = op.timeReversal; +this.setMatrix(false); +if (!op.isFinalized) this.doFinalize(); +}, "JS.SymmetryOperation,~N,~B"); +Clazz.defineMethod(c$, "getOpName", +function(opMode){ +if (this.opType == -1) this.setOpTypeAndOrder(); +switch (this.opType) { +case 0: +return "I"; +case 1: +return "Trans" + JS.SymmetryOperation.op48(this.opTrans); +case 2: +return "Rot" + this.opOrder + JS.SymmetryOperation.op48(this.opPoint) + JS.SymmetryOperation.op48(this.opAxis) + this.opIsCCW; +case 4: +return "Inv" + JS.SymmetryOperation.op48(this.opPoint); +case 8: +return (opMode == 0 ? "" : "Plane") + this.opPlane; +case 3: +return (opMode == 0 ? "S" + JS.SymmetryOperation.op48(this.opPoint) + JS.SymmetryOperation.op48(this.opAxis) : "Screw" + this.opOrder + JS.SymmetryOperation.op48(this.opPoint) + JS.SymmetryOperation.op48(this.opAxis) + JS.SymmetryOperation.op48(this.opTrans) + this.opIsCCW); +case 6: +return "Nbar" + this.opOrder + JS.SymmetryOperation.op48(this.opPoint) + JS.SymmetryOperation.op48(this.opAxis) + this.opIsCCW; +case 9: +return (opMode == 0 ? "" : "Glide") + this.opPlane + (opMode == 2 ? JS.SymmetryOperation.op48(this.opTrans) : ""); +} +System.out.println("SymmetryOperation REJECTED TYPE FOR " + this); +return ""; +}, "~N"); +Clazz.defineMethod(c$, "getOpTitle", +function(){ +if (this.opType == -1) this.setOpTypeAndOrder(); +switch (this.opType) { +case 0: +return "identity "; +case 1: +return "translation " + JS.SymmetryOperation.opFrac(this.opTrans); +case 2: +return "rotation " + this.opOrder; +case 4: +return "inversion center " + JS.SymmetryOperation.opFrac(this.opPoint); +case 8: +return "reflection "; +case 3: +return "screw rotation " + this.opOrder + (this.opIsCCW == null ? "" : this.opIsCCW === Boolean.TRUE ? "(+) " : "(-) ") + JS.SymmetryOperation.opFrac(this.opTrans); +case 6: +return this.opOrder + "-bar " + (this.opIsCCW == null ? "" : this.opIsCCW === Boolean.TRUE ? "(+) " : "(-) ") + JS.SymmetryOperation.opFrac(this.opPoint); +case 9: +return "glide reflection " + JS.SymmetryOperation.opFrac(this.opTrans); +} +return ""; +}); +c$.opFrac = Clazz.defineMethod(c$, "opFrac", +function(p){ +return "{" + JS.SymmetryOperation.opF(p.x) + " " + JS.SymmetryOperation.opF(p.y) + " " + JS.SymmetryOperation.opF(p.z) + "}"; +}, "JU.T3"); +c$.opF = Clazz.defineMethod(c$, "opF", +function(x){ +if (x == 0) return "0"; +var neg = (x < 0); +if (neg) { +x = -x; +}var n = 0; +if (x >= 1) { +n = Clazz.floatToInt(x); +x -= n; +}var n48 = Math.round(x * 48); +if (JU.PT.approx(n48 / 48 - x, 1000) != 0) return "" + JU.PT.approx(x, 1000); +var div; +if (n48 % 48 == 0) { +div = 1; +} else if (n48 % 24 == 0) { +div = 2; +} else if (n48 % 16 == 0) { +div = 3; +} else if (n48 % 12 == 0) { +div = 4; +} else if (n48 % 8 == 0) { +div = 6; +} else if (n48 % 6 == 0) { +div = 8; +} else if (n48 % 4 == 0) { +div = 12; +} else if (n48 % 3 == 0) { +div = 16; +} else if (n48 % 2 == 0) { +div = 24; +} else { +div = 48; +}return (neg ? "-" : "") + (n * div + Clazz.doubleToInt(n48 * div / 48)) + (div == 1 ? "" : "/" + div); +}, "~N"); +c$.op48 = Clazz.defineMethod(c$, "op48", +function(p){ +if (p == null) { +System.err.println("SymmetryOperation.op48 null"); +return "(null)"; +}return "{" + Math.round(p.x * 48) + " " + Math.round(p.y * 48) + " " + Math.round(p.z * 48) + "}"; +}, "JU.T3"); +Clazz.defineMethod(c$, "setSigma", +function(subsystemCode, sigma){ +this.subsystemCode = subsystemCode; +this.sigma = sigma; +}, "~S,JU.Matrix"); +Clazz.defineMethod(c$, "setGamma", +function(isReverse){ +var n = 3 + this.modDim; +var a = (this.rsvs = new JU.Matrix(null, n + 1, n + 1)).getArray(); +var t = Clazz.newDoubleArray (n, 0); +var pt = 0; +for (var i = 0; i < n; i++) { +for (var j = 0; j < n; j++) a[i][j] = this.linearRotTrans[pt++]; + +t[i] = (isReverse ? -1 : 1) * this.linearRotTrans[pt++]; +} +a[n][n] = 1; +if (isReverse) this.rsvs = this.rsvs.inverse(); +for (var i = 0; i < n; i++) a[i][n] = t[i]; + +a = this.rsvs.getSubmatrix(0, 0, 3, 3).getArray(); +for (var i = 0; i < 3; i++) for (var j = 0; j < 4; j++) this.setElement(i, j, (j < 3 ? a[i][j] : t[i])); + + +this.setElement(3, 3, 1); +}, "~B"); +Clazz.defineMethod(c$, "doFinalize", +function(){ +JS.SymmetryOperation.div12(this, this.divisor); +if (this.modDim > 0) { +var a = this.rsvs.getArray(); +for (var i = a.length - 1; --i >= 0; ) a[i][3 + this.modDim] = JS.SymmetryOperation.finalizeD(a[i][3 + this.modDim], this.divisor); + +}this.isFinalized = true; +}); +c$.div12 = Clazz.defineMethod(c$, "div12", +function(op, divisor){ +op.m03 = JS.SymmetryOperation.finalizeF(op.m03, divisor); +op.m13 = JS.SymmetryOperation.finalizeF(op.m13, divisor); +op.m23 = JS.SymmetryOperation.finalizeF(op.m23, divisor); +return op; +}, "JU.M4,~N"); +c$.finalizeF = Clazz.defineMethod(c$, "finalizeF", +function(m, divisor){ +if (divisor == 0) { +if (m == 0) return 0; +var n = Clazz.floatToInt(m); +return ((n >> 8) * 1 / (n & 255)); +}return m / divisor; +}, "~N,~N"); +c$.finalizeD = Clazz.defineMethod(c$, "finalizeD", +function(m, divisor){ +if (divisor == 0) { +if (m == 0) return 0; +var n = Clazz.doubleToInt(m); +return ((n >> 8) * 1 / (n & 255)); +}return m / divisor; +}, "~N,~N"); +Clazz.defineMethod(c$, "getXyz", +function(normalized){ +return (normalized && this.modDim == 0 || this.xyzOriginal == null ? this.xyz : this.xyzOriginal); +}, "~B"); +Clazz.defineMethod(c$, "getxyzTrans", +function(t){ +var m = JU.M4.newM4(this); +m.add(t); +return JS.SymmetryOperation.getXYZFromMatrix(m, false, false, false); +}, "JU.T3"); +Clazz.defineMethod(c$, "dumpInfo", +function(){ +return "\n" + this.xyz + "\ninternal matrix representation:\n" + this.toString(); +}); +c$.dumpSeitz = Clazz.defineMethod(c$, "dumpSeitz", +function(s, isCanonical){ +var sb = new JU.SB(); +var r = Clazz.newFloatArray (4, 0); +for (var i = 0; i < 3; i++) { +s.getRow(i, r); +sb.append("[\t"); +for (var j = 0; j < 3; j++) sb.appendI(Clazz.floatToInt(r[j])).append("\t"); + +var trans = r[3]; +trans *= (trans == Clazz.floatToInt(trans) ? 4 : 48); +sb.append(JS.SymmetryOperation.twelfthsOf(isCanonical ? JS.SymmetryOperation.normalizeTwelfths(trans / 48, 48, true) : Clazz.floatToInt(trans))).append("\t]\n"); +} +return sb.toString(); +}, "JU.M4,~B"); +Clazz.defineMethod(c$, "setMatrixFromXYZ", +function(xyz, modDim, allowScaling){ +if (xyz == null) return false; +this.xyzOriginal = xyz; +this.divisor = JS.SymmetryOperation.setDivisor(xyz); +xyz = xyz.toLowerCase(); +this.setModDim(modDim); +var isReverse = false; +var halfOrLess = true; +if (xyz.startsWith("!")) { +if (xyz.startsWith("!nohalf!")) { +halfOrLess = false; +xyz = xyz.substring(8); +this.xyzOriginal = xyz; +} else { +isReverse = false; +xyz = xyz.substring(1); +}}if (xyz.indexOf("xyz matrix:") == 0) { +this.xyz = xyz; +JU.Parser.parseStringInfestedFloatArray(xyz, null, this.linearRotTrans); +return this.setFromMatrix(null, isReverse); +}if (xyz.indexOf("[[") == 0) { +xyz = xyz.$replace('[', ' ').$replace(']', ' ').$replace(',', ' '); +JU.Parser.parseStringInfestedFloatArray(xyz, null, this.linearRotTrans); +for (var i = this.linearRotTrans.length; --i >= 0; ) if (Float.isNaN(this.linearRotTrans[i])) return false; + +this.setMatrix(isReverse); +this.isFinalized = true; +this.isBio = (xyz.indexOf("bio") >= 0); +this.xyz = (this.isBio ? (this.xyzOriginal = Clazz.superCall(this, JS.SymmetryOperation, "toString", [])) : JS.SymmetryOperation.getXYZFromMatrix(this, false, false, false)); +return true; +}if (modDim == 0 && xyz.indexOf("x4") >= 0) { +for (var i = 14; --i >= 4; ) { +if (xyz.indexOf("x" + i) >= 0) { +this.setModDim(i - 3); +break; +}} +}var mxyz = null; +if (xyz.endsWith("m")) { +this.timeReversal = (xyz.indexOf("-m") >= 0 ? -1 : 1); +allowScaling = true; +} else if (xyz.indexOf("mz)") >= 0) { +var pt = xyz.indexOf("("); +mxyz = xyz.substring(pt + 1, xyz.length - 1); +xyz = xyz.substring(0, pt); +allowScaling = false; +}var strOut = JS.SymmetryOperation.getMatrixFromString(this, xyz, this.linearRotTrans, allowScaling, halfOrLess, true); +if (strOut == null) return false; +this.xyzCanonical = strOut; +if (mxyz != null) { +var isProper = (JU.M4.newA16(this.linearRotTrans).determinant3() == 1); +this.timeReversal = (((xyz.indexOf("-x") < 0) == (mxyz.indexOf("-mx") < 0)) == isProper ? 1 : -1); +}this.setMatrix(isReverse); +this.xyz = (isReverse ? JS.SymmetryOperation.getXYZFromMatrix(this, true, false, false) : this.doNormalize ? strOut : xyz); +if (this.timeReversal != 0) this.xyz += (this.timeReversal == 1 ? ",m" : ",-m"); +if (JU.Logger.debugging) JU.Logger.debug("" + this); +return true; +}, "~S,~N,~B"); +c$.setDivisor = Clazz.defineMethod(c$, "setDivisor", +function(xyz){ +var pt = xyz.indexOf('/'); +var len = xyz.length; +while (pt > 0 && pt < len - 1) { +var c = xyz.charAt(pt + 1); +if ("2346".indexOf(c) < 0 || pt < len - 2 && Character.isDigit(xyz.charAt(pt + 2))) { +return 0; +}pt = xyz.indexOf('/', pt + 1); +} +return 12; +}, "~S"); +Clazz.defineMethod(c$, "setModDim", +function(dim){ +var n = (dim + 4) * (dim + 4); +this.modDim = dim; +if (dim > 0) this.myLabels = JS.SymmetryOperation.labelsXn; +this.linearRotTrans = Clazz.newFloatArray (n, 0); +}, "~N"); +Clazz.defineMethod(c$, "setMatrix", +function(isReverse){ +if (this.linearRotTrans.length > 16) { +this.setGamma(isReverse); +} else { +this.setA(this.linearRotTrans); +if (isReverse) { +var p3 = JU.P3.new3(this.m03, this.m13, this.m23); +this.invert(); +this.rotate(p3); +p3.scale(-1); +this.setTranslation(p3); +}}}, "~B"); +Clazz.defineMethod(c$, "setFromMatrix", +function(offset, isReverse){ +var v = 0; +var pt = 0; +this.myLabels = (this.modDim == 0 ? JS.SymmetryOperation.labelsXYZ : JS.SymmetryOperation.labelsXn); +var rowPt = 0; +var n = 3 + this.modDim; +for (var i = 0; rowPt < n; i++) { +if (Float.isNaN(this.linearRotTrans[i])) return false; +v = this.linearRotTrans[i]; +if (Math.abs(v) < 0.00001) v = 0; +var isTrans = ((i + 1) % (n + 1) == 0); +if (isTrans) { +var denom = (this.divisor == 0 ? (Clazz.floatToInt(v)) & 255 : this.divisor); +if (denom == 0) denom = 12; +v = JS.SymmetryOperation.finalizeF(v, this.divisor); +if (offset != null) { +if (pt < offset.length) v += offset[pt++]; +}v = JS.SymmetryOperation.normalizeTwelfths(((v < 0 ? -1 : 1) * Math.abs(v * denom) / denom), denom, this.doNormalize); +if (this.divisor == 0) v = JS.SymmetryOperation.toDivisor(v, denom); +rowPt++; +}this.linearRotTrans[i] = v; +} +this.linearRotTrans[this.linearRotTrans.length - 1] = this.divisor; +this.setMatrix(isReverse); +this.isFinalized = (offset == null); +this.xyz = JS.SymmetryOperation.getXYZFromMatrix(this, true, false, false); +return true; +}, "~A,~B"); +c$.getMatrixFromXYZ = Clazz.defineMethod(c$, "getMatrixFromXYZ", +function(xyz, v, halfOrLess){ +if (v == null) v = Clazz.newFloatArray (16, 0); +xyz = JS.SymmetryOperation.getMatrixFromString(null, xyz, v, false, halfOrLess, true); +if (xyz == null) return null; +var m = new JU.M4(); +m.setA(v); +return JS.SymmetryOperation.div12(m, JS.SymmetryOperation.setDivisor(xyz)); +}, "~S,~A,~B"); +c$.getJmolCanonicalXYZ = Clazz.defineMethod(c$, "getJmolCanonicalXYZ", +function(xyz){ +try { +return JS.SymmetryOperation.getMatrixFromString(null, xyz, null, false, true, true); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +c$.getMatrixFromString = Clazz.defineMethod(c$, "getMatrixFromString", +function(op, xyz, linearRotTrans, allowScaling, halfOrLess, retString){ +var isDenominator = false; +var isDecimal = false; +var isNegative = false; +xyz = JU.PT.rep(xyz, "[bio[", ""); +var modDim = (op == null ? 0 : op.modDim); +var nRows = 4 + modDim; +var divisor = (op == null ? JS.SymmetryOperation.setDivisor(xyz) : op.divisor); +var doNormalize = halfOrLess && (op == null ? !xyz.startsWith("!") : op.doNormalize); +var dimOffset = (modDim > 0 ? 3 : 0); +if (linearRotTrans != null) { +var n = linearRotTrans.length - 1; +for (var i = n; --i >= 0; ) linearRotTrans[i] = 0; + +linearRotTrans[n] = 1; +}var transPt = xyz.indexOf(';') + 1; +if (transPt != 0) { +allowScaling = true; +if (transPt == xyz.length) xyz += "0,0,0"; +}var rotPt = -1; +var myLabels = (op == null || modDim == 0 ? null : op.myLabels); +if (myLabels == null) myLabels = JS.SymmetryOperation.labelsXYZ; +xyz = xyz.toLowerCase() + ","; +xyz = xyz.$replace('(', ','); +if (modDim > 0) xyz = JS.SymmetryOperation.replaceXn(xyz, modDim + 3); +var xpt = 0; +var tpt0 = 0; +var rowPt = 0; +var ch; +var iValue = 0; +var denom = 0; +var numer = 0; +var decimalMultiplier = 1; +var strT = ""; +var strOut = (retString ? "" : null); +var ret = Clazz.newIntArray (1, 0); +var len = xyz.length; +for (var i = 0; i < len; i++) { +switch ((ch = xyz.charAt(i)).charCodeAt(0)) { +case 59: +break; +case 39: +case 32: +case 123: +case 125: +case 33: +continue; +case 45: +isNegative = true; +continue; +case 43: +isNegative = false; +continue; +case 47: +denom = 0; +isDenominator = true; +continue; +case 120: +case 121: +case 122: +case 97: +case 98: +case 99: +case 100: +case 101: +case 102: +case 103: +case 104: +tpt0 = rowPt * nRows; +var ipt = (ch >= 'x' ? ch.charCodeAt(0) - 120 : ch.charCodeAt(0) - 97 + dimOffset); +xpt = tpt0 + ipt; +var val = (isNegative ? -1 : 1); +if (allowScaling && iValue != 0) { +if (linearRotTrans != null) linearRotTrans[xpt] = iValue; +val = Clazz.floatToInt(iValue); +iValue = 0; +} else if (linearRotTrans != null) { +linearRotTrans[xpt] = val; +}if (strOut != null) strT += JS.SymmetryOperation.plusMinus(strT, val, myLabels[ipt], false); +break; +case 44: +if (transPt != 0) { +if (transPt > 0) { +rotPt = i; +i = transPt - 1; +transPt = -i; +iValue = 0; +denom = 0; +continue; +}transPt = i + 1; +i = rotPt; +}iValue = JS.SymmetryOperation.normalizeTwelfths(iValue, denom == 0 ? 12 : divisor == 0 ? denom : divisor, doNormalize); +if (linearRotTrans != null) linearRotTrans[tpt0 + nRows - 1] = (divisor == 0 && denom > 0 ? iValue = JS.SymmetryOperation.toDivisor(numer, denom) : iValue); +if (strOut != null) { +strT += JS.SymmetryOperation.xyzFraction12(iValue, (divisor == 0 ? denom : divisor), false, halfOrLess); +strOut += (strOut === "" ? "" : ",") + strT; +}if (rowPt == nRows - 2) return (retString ? strOut : "ok"); +iValue = 0; +numer = 0; +denom = 0; +strT = ""; +tpt0 += 4; +if (rowPt++ > 2 && modDim == 0) { +JU.Logger.warn("Symmetry Operation? " + xyz); +return null; +}break; +case 46: +isDecimal = true; +decimalMultiplier = 1; +continue; +case 48: +if (!isDecimal && divisor == 12 && (isDenominator || !allowScaling)) continue; +default: +var ich = ch.charCodeAt(0) - 48; +if (ich >= 0 && ich <= 9) { +if (isDecimal) { +decimalMultiplier /= 10; +if (iValue < 0) isNegative = true; +iValue += decimalMultiplier * ich * (isNegative ? -1 : 1); +continue; +}if (isDenominator) { +ret[0] = i; +denom = JU.PT.parseIntNext(xyz, ret); +if (denom < 0) return null; +i = ret[0] - 1; +if (iValue == 0) { +if (linearRotTrans != null) linearRotTrans[xpt] /= denom; +} else { +numer = Clazz.floatToInt(iValue); +iValue /= denom; +}} else { +iValue = iValue * 10 + (isNegative ? -1 : 1) * ich; +isNegative = false; +}} else { +JU.Logger.warn("symmetry character?" + ch); +}} +isDecimal = isDenominator = isNegative = false; +} +return null; +}, "JS.SymmetryOperation,~S,~A,~B,~B,~B"); +c$.replaceXn = Clazz.defineMethod(c$, "replaceXn", +function(xyz, n){ +for (var i = n; --i >= 0; ) xyz = JU.PT.rep(xyz, JS.SymmetryOperation.labelsXn[i], JS.SymmetryOperation.labelsXnSub[i]); + +return xyz; +}, "~S,~N"); +c$.toDivisor = Clazz.defineMethod(c$, "toDivisor", +function(numer, denom){ +var n = Clazz.floatToInt(numer); +if (n != numer) { +var f = numer - n; +denom = Clazz.floatToInt(Math.abs(denom / f)); +n = Clazz.floatToInt(Math.abs(numer) / f); +}return ((n << 8) + denom); +}, "~N,~N"); +c$.xyzFraction12 = Clazz.defineMethod(c$, "xyzFraction12", +function(n12ths, denom, allPositive, halfOrLess){ +if (n12ths == 0) return ""; +var n = n12ths; +if (denom != 12) { +var $in = Clazz.floatToInt(n); +denom = ($in & 255); +n = $in >> 8; +}var half = (Clazz.doubleToInt(denom / 2)); +if (allPositive) { +while (n < 0) n += denom; + +} else if (halfOrLess) { +while (n > half) n -= denom; + +while (n < -half) n += denom; + +}var s = (denom == 12 ? JS.SymmetryOperation.twelfthsOf(n) : n == 0 ? "0" : n + "/" + denom); +return (s.charAt(0) == '0' ? "" : n > 0 ? "+" + s : s); +}, "~N,~N,~B,~B"); +c$.twelfthsOf = Clazz.defineMethod(c$, "twelfthsOf", +function(n12ths){ +var str = ""; +if (n12ths < 0) { +n12ths = -n12ths; +str = "-"; +}var m = 12; +var n = Math.round(n12ths); +if (Math.abs(n - n12ths) > 0.01) { +var f = n12ths / 12; +var max = 20; +for (m = 3; m < max; m++) { +var fm = f * m; +n = Math.round(fm); +if (Math.abs(n - fm) < 0.01) break; +} +if (m == max) return str + f; +} else { +if (n == 12) return str + "1"; +if (n < 12) return str + JS.SymmetryOperation.twelfths[n % 12]; +switch (n % 12) { +case 0: +return str + Clazz.doubleToInt(n / 12); +case 2: +case 10: +m = 6; +break; +case 3: +case 9: +m = 4; +break; +case 4: +case 8: +m = 3; +break; +case 6: +m = 2; +break; +default: +break; +} +n = (Clazz.doubleToInt(n * m / 12)); +}return str + n + "/" + m; +}, "~N"); +c$.plusMinus = Clazz.defineMethod(c$, "plusMinus", +function(strT, x, sx, allowFractions){ +var a; +return (x == 0 ? "" : (x < 0 ? "-" : strT.length == 0 ? "" : "+") + (x == 1 || x == -1 ? "" : (a = Math.abs(x)) < 1 && allowFractions ? JS.SymmetryOperation.twelfthsOf(a * 12) : "" + Clazz.floatToInt(a))) + sx; +}, "~S,~N,~S,~B"); +c$.normalizeTwelfths = Clazz.defineMethod(c$, "normalizeTwelfths", +function(iValue, divisor, doNormalize){ +iValue *= divisor; +var half = Clazz.doubleToInt(divisor / 2); +if (doNormalize) { +while (iValue > half) iValue -= divisor; + +while (iValue <= -half) iValue += divisor; + +}return iValue; +}, "~N,~N,~B"); +c$.getXYZFromMatrix = Clazz.defineMethod(c$, "getXYZFromMatrix", +function(mat, is12ths, allPositive, halfOrLess){ +return JS.SymmetryOperation.getXYZFromMatrixFrac(mat, is12ths, allPositive, halfOrLess, false); +}, "JU.M4,~B,~B,~B"); +c$.getXYZFromMatrixFrac = Clazz.defineMethod(c$, "getXYZFromMatrixFrac", +function(mat, is12ths, allPositive, halfOrLess, allowFractions){ +var str = ""; +var op = (Clazz.instanceOf(mat,"JS.SymmetryOperation") ? mat : null); +if (op != null && op.modDim > 0) return JS.SymmetryOperation.getXYZFromRsVs(op.rsvs.getRotation(), op.rsvs.getTranslation(), is12ths); +var row = Clazz.newFloatArray (4, 0); +var denom = Clazz.floatToInt(mat.getElement(3, 3)); +if (denom == 1) denom = 12; + else mat.setElement(3, 3, 1); +for (var i = 0; i < 3; i++) { +var lpt = (i < 3 ? 0 : 3); +mat.getRow(i, row); +var term = ""; +for (var j = 0; j < 3; j++) { +var x = row[j]; +if (JS.SymmetryOperation.approx(x) != 0) { +term += JS.SymmetryOperation.plusMinus(term, x, JS.SymmetryOperation.labelsXYZ[j + lpt], allowFractions); +}} +if ((is12ths ? row[3] : JS.SymmetryOperation.approx(row[3])) != 0) { +var f = JS.SymmetryOperation.xyzFraction12((is12ths ? row[3] : row[3] * denom), denom, allPositive, halfOrLess); +if (term === "") f = (f.charAt(0) == '+' ? f.substring(1) : f); +term += f; +}str += "," + (term === "" ? "0" : term); +} +return str.substring(1); +}, "JU.M4,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "rotateAxes", +function(vectors, unitcell, ptTemp, mTemp){ +var vRot = new Array(3); +this.getRotationScale(mTemp); +for (var i = vectors.length; --i >= 0; ) { +ptTemp.setT(vectors[i]); +unitcell.toFractional(ptTemp, true); +mTemp.rotate(ptTemp); +unitcell.toCartesian(ptTemp, true); +vRot[i] = JU.V3.newV(ptTemp); +} +return vRot; +}, "~A,JS.UnitCell,JU.P3,JU.M3"); +c$.fcoord = Clazz.defineMethod(c$, "fcoord", +function(p, sep){ +return JS.SymmetryOperation.opF(p.x) + sep + JS.SymmetryOperation.opF(p.y) + sep + JS.SymmetryOperation.opF(p.z); +}, "JU.T3,~S"); +c$.approx = Clazz.defineMethod(c$, "approx", +function(f){ +return JU.PT.approx(f, 100); +}, "~N"); +c$.approx6 = Clazz.defineMethod(c$, "approx6", +function(f){ +return JU.PT.approx(f, 1000000); +}, "~N"); +c$.getXYZFromRsVs = Clazz.defineMethod(c$, "getXYZFromRsVs", +function(rs, vs, is12ths){ +var ra = rs.getArray(); +var va = vs.getArray(); +var d = ra.length; +var s = ""; +for (var i = 0; i < d; i++) { +s += ","; +for (var j = 0; j < d; j++) { +var r = ra[i][j]; +if (r != 0) { +s += (r < 0 ? "-" : s.endsWith(",") ? "" : "+") + (Math.abs(r) == 1 ? "" : "" + Math.abs(r)) + "x" + (j + 1); +}} +s += JS.SymmetryOperation.xyzFraction12(Clazz.doubleToInt(va[i][0] * (is12ths ? 1 : 12)), 12, false, true); +} +return JU.PT.rep(s.substring(1), ",+", ","); +}, "JU.Matrix,JU.Matrix,~B"); +Clazz.defineMethod(c$, "toString", +function(){ +return (this.rsvs == null ? Clazz.superCall(this, JS.SymmetryOperation, "toString", []) : Clazz.superCall(this, JS.SymmetryOperation, "toString", []) + " " + this.rsvs.toString()); +}); +Clazz.defineMethod(c$, "getMagneticOp", +function(){ +return (this.magOp == 2147483647 ? this.magOp = Clazz.floatToInt(this.determinant3() * this.timeReversal) : this.magOp); +}); +Clazz.defineMethod(c$, "setTimeReversal", +function(magRev){ +this.timeReversal = magRev; +if (this.xyz.indexOf("m") >= 0) this.xyz = this.xyz.substring(0, this.xyz.indexOf("m")); +if (magRev != 0) { +this.xyz += (magRev == 1 ? ",m" : ",-m"); +}}, "~N"); +Clazz.defineMethod(c$, "getCentering", +function(){ +if (!this.isFinalized) this.doFinalize(); +if (this.centering == null && !this.unCentered) { +if (this.modDim == 0 && this.m00 == 1 && this.m11 == 1 && this.m22 == 1 && this.m01 == 0 && this.m02 == 0 && this.m10 == 0 && this.m12 == 0 && this.m20 == 0 && this.m21 == 0 && (this.m03 != 0 || this.m13 != 0 || this.m23 != 0)) { +this.isCenteringOp = true; +this.centering = JU.V3.new3(this.m03, this.m13, this.m23); +} else { +this.unCentered = true; +this.centering = null; +}}return this.centering; +}); +Clazz.defineMethod(c$, "fixMagneticXYZ", +function(m, xyz, addMag){ +if (this.timeReversal == 0) return xyz; +var pt = xyz.indexOf("m"); +pt -= Clazz.doubleToInt((3 - this.timeReversal) / 2); +xyz = (pt < 0 ? xyz : xyz.substring(0, pt)); +if (!addMag) return xyz + (this.timeReversal > 0 ? " +1" : " -1"); +var m2 = JU.M4.newM4(m); +m2.m03 = m2.m13 = m2.m23 = 0; +if (this.getMagneticOp() < 0) m2.scale(-1); +xyz += "(" + JU.PT.rep(JU.PT.rep(JU.PT.rep(JS.SymmetryOperation.getXYZFromMatrix(m2, false, false, false), "x", "mx"), "y", "my"), "z", "mz") + ")"; +return xyz; +}, "JU.M4,~S,~B"); +Clazz.defineMethod(c$, "getInfo", +function(){ +if (this.info == null) { +this.info = new java.util.Hashtable(); +this.info.put("xyz", this.xyz); +if (this.centering != null) this.info.put("centering", this.centering); +this.info.put("index", Integer.$valueOf(this.number - 1)); +this.info.put("isCenteringOp", Boolean.$valueOf(this.isCenteringOp)); +if (this.linearRotTrans != null) this.info.put("linearRotTrans", this.linearRotTrans); +this.info.put("modulationDimension", Integer.$valueOf(this.modDim)); +this.info.put("matrix", JU.M4.newM4(this)); +if (this.magOp != 3.4028235E38) this.info.put("magOp", Float.$valueOf(this.magOp)); +this.info.put("id", Integer.$valueOf(this.opId)); +this.info.put("timeReversal", Integer.$valueOf(this.timeReversal)); +if (this.xyzOriginal != null) this.info.put("xyzOriginal", this.xyzOriginal); +}return this.info; +}); +c$.normalizeOperationToCentroid = Clazz.defineMethod(c$, "normalizeOperationToCentroid", +function(dim, m, fracPts, i0, n){ +if (n <= 0) return; +var x = 0; +var y = 0; +var z = 0; +if (JS.SymmetryOperation.atomTest == null) JS.SymmetryOperation.atomTest = new JU.P3(); +for (var i = i0, i2 = i + n; i < i2; i++) { +m.rotTrans2(fracPts[i], JS.SymmetryOperation.atomTest); +x += JS.SymmetryOperation.atomTest.x; +y += JS.SymmetryOperation.atomTest.y; +z += JS.SymmetryOperation.atomTest.z; +} +x /= n; +y /= n; +z /= n; +while (x < -0.001 || x >= 1.001) { +m.m03 += (x < 0 ? 1 : -1); +x += (x < 0 ? 1 : -1); +} +if (dim > 1) while (y < -0.001 || y >= 1.001) { +m.m13 += (y < 0 ? 1 : -1); +y += (y < 0 ? 1 : -1); +} +if (dim > 2) while (z < -0.001 || z >= 1.001) { +m.m23 += (z < 0 ? 1 : -1); +z += (z < 0 ? 1 : -1); +} +}, "~N,JU.M4,~A,~N,~N"); +c$.getLatticeCentering = Clazz.defineMethod(c$, "getLatticeCentering", +function(ops){ +var list = new JU.Lst(); +for (var i = 0; i < ops.length; i++) { +var c = (ops[i] == null ? null : ops[i].getCentering()); +if (c != null) list.addLast(JU.P3.newP(c)); +} +return list; +}, "~A"); +Clazz.defineMethod(c$, "getOpIsCCW", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opIsCCW; +}); +Clazz.defineMethod(c$, "getOpType", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opType; +}); +Clazz.defineMethod(c$, "getOpOrder", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opOrder; +}); +Clazz.defineMethod(c$, "getOpPoint", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opPoint; +}); +Clazz.defineMethod(c$, "getOpAxis", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opAxis; +}); +Clazz.defineMethod(c$, "getOpPoint2", +function(){ +return this.opPoint2; +}); +Clazz.defineMethod(c$, "getOpTrans", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return (this.opTrans == null ? (this.opTrans = new JU.V3()) : this.opTrans); +}); +c$.opGet3code = Clazz.defineMethod(c$, "opGet3code", +function(m){ +var c = 0; +var row = Clazz.newFloatArray (4, 0); +for (var r = 0; r < 3; r++) { +m.getRow(r, row); +for (var i = 0; i < 3; i++) { +switch (Clazz.floatToInt(row[i])) { +case 1: +c |= (i + 1) << ((2 - r) << 3); +break; +case -1: +c |= (0x10 + i + 1) << ((2 - r) << 3); +break; +} +} +} +return c; +}, "JU.M4"); +c$.opGet3x = Clazz.defineMethod(c$, "opGet3x", +function(m){ +if (m.m22 != 0) return JS.SymmetryOperation.x; +var c = JS.SymmetryOperation.opGet3code(m); +for (var i = 0; i < 8; i++) if (c == JS.SymmetryOperation.C3codes[i]) { +if (JS.SymmetryOperation.xneg == null) { +JS.SymmetryOperation.xneg = JU.V3.newV(JS.SymmetryOperation.x); +JS.SymmetryOperation.xneg.scale(-1); +}return JS.SymmetryOperation.xneg; +} +return JS.SymmetryOperation.x; +}, "JU.M4"); +Clazz.defineMethod(c$, "setOpTypeAndOrder", +function(){ +this.clearOp(); +var det = Math.round(this.determinant3()); +var trace = Math.round(this.m00 + this.m11 + this.m22); +var order = 0; +var angle = 0; +var px = JS.SymmetryOperation.x; +switch (trace) { +case 3: +if (JS.SymmetryOperation.hasTrans(this)) { +this.opType = 1; +this.opTrans = new JU.V3(); +this.getTranslation(this.opTrans); +this.opOrder = 2; +} else { +this.opType = 0; +this.opOrder = 1; +}return; +case -3: +this.opType = 4; +order = 2; +break; +default: +order = trace * det + 3; +if (order == 5) order = 6; +if (det > 0) { +this.opType = 2; +angle = Clazz.doubleToInt(Math.acos((trace - 1) / 2) * 180 / 3.141592653589793); +if (angle == 120) { +if (this.opX == null) this.opX = JS.SymmetryOperation.opGet3x(this); +px = this.opX; +}} else { +if (order == 2) { +this.opType = 8; +} else { +this.opType = 6; +if (order == 3) order = 6; +angle = Clazz.doubleToInt(Math.acos((-trace - 1) / 2) * 180 / 3.141592653589793); +if (angle == 120) { +if (this.opX == null) this.opX = JS.SymmetryOperation.opGet3x(this); +px = this.opX; +}}}break; +} +this.opOrder = order; +var m4 = new JU.M4(); +var p1 = new JU.P3(); +var p2 = JU.P3.newP(px); +m4.setM4(this); +var p1sum = new JU.P3(); +var p2sum = JU.P3.newP(p2); +var p2odd = new JU.P3(); +var p2even = JU.P3.newP(p2); +var p21 = new JU.P3(); +for (var i = 1; i < order; i++) { +m4.mul(this); +this.rotTrans(p1); +this.rotTrans(p2); +if (i == 1) p21.setT(p2); +p1sum.add(p1); +p2sum.add(p2); +if (this.opType == 6) { +if (i % 2 == 0) { +p2even.add(p2); +} else { +p2odd.add(p2); +}}} +this.opTrans = new JU.V3(); +m4.getTranslation(this.opTrans); +this.opTrans.scale(1 / order); +var d = JS.SymmetryOperation.approx6(this.opTrans.length()); +this.opPoint = new JU.P3(); +var v = null; +var isOK = true; +switch (this.opType) { +case 4: +p2sum.add2(p2, px); +p2sum.scale(0.5); +this.opPoint = JU.P3.newP(JS.SymmetryOperation.opClean6(p2sum)); +isOK = JS.SymmetryOperation.checkOpPoint(this.opPoint); +break; +case 6: +p2odd.scale(2 / order); +p2even.scale(2 / order); +v = JU.V3.newVsub(p2odd, p2even); +v.normalize(); +this.opAxis = JS.SymmetryOperation.opClean6(v); +p1sum.add2(p2odd, p2even); +p2sum.scale(1 / order); +this.opPoint.setT(JS.SymmetryOperation.opClean6(p2sum)); +isOK = JS.SymmetryOperation.checkOpPoint(this.opPoint); +if (angle != 180) { +p2.cross(px, p2); +this.opIsCCW = Boolean.$valueOf(p2.dot(v) < 0); +}break; +case 2: +v = JU.V3.newVsub(p2sum, p1sum); +v.normalize(); +this.opAxis = JS.SymmetryOperation.opClean6(v); +p1sum.scale(1 / order); +p1.setT(p1sum); +if (d > 0) { +p1sum.sub(this.opTrans); +}this.opPoint.setT(p1sum); +JS.SymmetryOperation.opClean6(this.opPoint); +if (angle != 180) { +p2.cross(px, p2); +this.opIsCCW = Boolean.$valueOf(p2.dot(v) < 0); +}isOK = new Boolean (isOK & JS.SymmetryOperation.checkOpAxis(p1, (d == 0 ? this.opAxis : this.opTrans), p1sum, new JU.V3(), new JU.V3(), null)).valueOf(); +if (isOK) { +this.opPoint.setT(p1sum); +if (JS.SymmetryOperation.checkOpAxis(this.opPoint, this.opAxis, p2, new JU.V3(), new JU.V3(), this.opPoint)) { +this.opPoint2 = JU.P3.newP(p2); +}if (d > 0) { +p1sum.scaleAdd2(0.5, this.opTrans, this.opPoint); +isOK = JS.SymmetryOperation.checkOpPoint(p1sum); +if (this.opPoint2 != null) { +p1sum.scaleAdd2(0.5, this.opTrans, this.opPoint2); +if (!JS.SymmetryOperation.checkOpPoint(p1sum)) this.opPoint2 = null; +}if (v.dot(p1) < 0) { +isOK = false; +}}}break; +case 8: +p1.sub(this.opTrans); +p1.scale(0.5); +this.opPoint.setT(p1); +p21.sub(this.opTrans); +this.opAxis = JU.V3.newVsub(p21, px); +p2.scaleAdd2(0.5, this.opAxis, px); +this.opAxis.normalize(); +this.opPlane = new JU.P4(); +p1.set(px.x + 1.1, px.y + 1.7, px.z + 2.1); +p1.scale(0.5); +this.rotTrans(p1); +p1.sub(this.opTrans); +p1.scaleAdd2(0.5, px, p1); +p1.scale(0.5); +v = new JU.V3(); +isOK = JS.SymmetryOperation.checkOpPlane(this.opPoint, p1, p2, this.opPlane, v, new JU.V3()); +JS.SymmetryOperation.opClean6(this.opPlane); +if (JS.SymmetryOperation.approx6(this.opPlane.w) == 0) this.opPlane.w = 0; +JS.SymmetryOperation.approx6Pt(this.opAxis); +JS.SymmetryOperation.normalizePlane(this.opPlane); +break; +} +if (d > 0) { +JS.SymmetryOperation.opClean6(this.opTrans); +var dmax = 1; +if (this.opType == 8) { +if (this.opTrans.z == 0 && this.opTrans.lengthSquared() == 1.25 || this.opTrans.z == 0.5 && this.opTrans.lengthSquared() == 1.5) { +dmax = 1.25; +this.opIsLong = true; +} else { +dmax = 0.78; +}this.opGlide = JU.V3.newV(this.opTrans); +this.fixNegTrans(this.opGlide); +if (this.opGlide.length() == 0) this.opGlide = null; +if ((this.opTrans.x == 1 || this.opTrans.y == 1 || this.opTrans.z == 1) && this.m22 == -1) isOK = false; +} else { +if (this.opTrans.z == 0 && this.opTrans.lengthSquared() == 1.25) { +dmax = 1.25; +this.opIsLong = true; +}}this.opType |= 1; +if (Math.abs(JS.SymmetryOperation.approx(this.opTrans.x)) >= dmax || Math.abs(JS.SymmetryOperation.approx(this.opTrans.y)) >= dmax || Math.abs(JS.SymmetryOperation.approx(this.opTrans.z)) >= dmax) { +isOK = false; +}} else { +this.opTrans = null; +}if (!isOK) { +this.isIrrelevant = true; +}}); +Clazz.defineMethod(c$, "fixNegTrans", +function(t){ +t.x = JS.SymmetryOperation.normHalf(t.x); +t.y = JS.SymmetryOperation.normHalf(t.y); +t.z = JS.SymmetryOperation.normHalf(t.z); +}, "JU.V3"); +c$.normalizePlane = Clazz.defineMethod(c$, "normalizePlane", +function(plane){ +JS.SymmetryOperation.approx6Pt(plane); +plane.w = JS.SymmetryOperation.approx6(plane.w); +if (plane.w > 0 || plane.w == 0 && (plane.x < 0 || plane.x == 0 && plane.y < 0 || plane.y == 0 && plane.z < 0)) { +plane.scale4(-1); +}JS.SymmetryOperation.opClean6(plane); +plane.w = JS.SymmetryOperation.approx6(plane.w); +}, "JU.P4"); +c$.isCoaxial = Clazz.defineMethod(c$, "isCoaxial", +function(v){ +return (Math.abs(JS.SymmetryOperation.approx(v.x)) == 1 || Math.abs(JS.SymmetryOperation.approx(v.y)) == 1 || Math.abs(JS.SymmetryOperation.approx(v.z)) == 1); +}, "JU.T3"); +Clazz.defineMethod(c$, "clearOp", +function(){ +if (!this.isFinalized) this.doFinalize(); +this.isIrrelevant = false; +this.opTrans = null; +this.opPoint = this.opPoint2 = null; +this.opPlane = null; +this.opIsCCW = null; +this.opIsLong = false; +}); +c$.hasTrans = Clazz.defineMethod(c$, "hasTrans", +function(m4){ +return (JS.SymmetryOperation.approx6(m4.m03) != 0 || JS.SymmetryOperation.approx6(m4.m13) != 0 || JS.SymmetryOperation.approx6(m4.m23) != 0); +}, "JU.M4"); +c$.checkOpAxis = Clazz.defineMethod(c$, "checkOpAxis", +function(pt, axis, ptRet, t1, t2, ptNot){ +if (JS.SymmetryOperation.opPlanes == null) { +JS.SymmetryOperation.opPlanes = JU.BoxInfo.getBoxFacesFromOABC(null); +}var map = JU.BoxInfo.faceOrder; +var f = (ptNot == null ? 1 : -1); +for (var i = 0; i < 6; i++) { +var p = JU.Measure.getIntersection(pt, axis, JS.SymmetryOperation.opPlanes[map[i]], ptRet, t1, t2); +if (p != null && JS.SymmetryOperation.checkOpPoint(p) && axis.dot(t1) * f < 0 && (ptNot == null || JS.SymmetryOperation.approx(ptNot.distance(p) - 0.5) >= 0)) { +return true; +}} +return false; +}, "JU.P3,JU.V3,JU.P3,JU.V3,JU.V3,JU.P3"); +c$.opClean6 = Clazz.defineMethod(c$, "opClean6", +function(t){ +if (JS.SymmetryOperation.approx6(t.x) == 0) t.x = 0; +if (JS.SymmetryOperation.approx6(t.y) == 0) t.y = 0; +if (JS.SymmetryOperation.approx6(t.z) == 0) t.z = 0; +return t; +}, "JU.T3"); +c$.checkOpPoint = Clazz.defineMethod(c$, "checkOpPoint", +function(pt){ +return JS.SymmetryOperation.checkOK(pt.x, 0) && JS.SymmetryOperation.checkOK(pt.y, 0) && JS.SymmetryOperation.checkOK(pt.z, 0); +}, "JU.T3"); +c$.checkOK = Clazz.defineMethod(c$, "checkOK", +function(p, a){ +return (a != 0 || JS.SymmetryOperation.approx(p) >= 0 && JS.SymmetryOperation.approx(p) <= 1); +}, "~N,~N"); +c$.checkOpPlane = Clazz.defineMethod(c$, "checkOpPlane", +function(p1, p2, p3, plane, vtemp1, vtemp2){ +JU.Measure.getPlaneThroughPoints(p1, p2, p3, vtemp1, vtemp2, plane); +var pts = JU.BoxInfo.unitCubePoints; +var nPos = 0; +var nNeg = 0; +for (var i = 8; --i >= 0; ) { +var d = JU.Measure.getPlaneProjection(pts[i], plane, p1, vtemp1); +switch (Clazz.floatToInt(Math.signum(JS.SymmetryOperation.approx6(d)))) { +case 1: +if (nNeg > 0) return true; +nPos++; +break; +case 0: +break; +case -1: +if (nPos > 0) return true; +nNeg++; +} +} +return !(nNeg == 8 || nPos == 8); +}, "JU.P3,JU.P3,JU.P3,JU.P4,JU.V3,JU.V3"); +c$.getAdditionalOperations = Clazz.defineMethod(c$, "getAdditionalOperations", +function(ops){ +var n = ops.length; +var lst = new JU.Lst(); +var xyzLst = new JU.SB(); +var mapPlanes = new java.util.Hashtable(); +var vTemp = new JU.V3(); +for (var i = 0; i < n; i++) { +var op = ops[i]; +lst.addLast(op); +var s = op.getOpName(1); +xyzLst.append(s).appendC(';'); +if ((op.getOpType() & 8) != 0) JS.SymmetryOperation.addCoincidentMap(mapPlanes, op, 8, vTemp); + else if (op.getOpType() == 3) JS.SymmetryOperation.addCoincidentMap(mapPlanes, op, 3, null); +} +for (var i = 1; i < n; i++) { +ops[i].addOps(xyzLst, lst, mapPlanes, n, i, vTemp); +} +return lst.toArray( new Array(lst.size())); +}, "~A"); +Clazz.defineMethod(c$, "addOps", +function(xyzList, lst, mapCoincident, n0, isym, vTemp){ +var t0 = new JU.V3(); +this.getTranslation(t0); +var isPlane = ((this.getOpType() & 8) == 8); +var isScrew = (this.getOpType() == 3); +var t = new JU.V3(); +var opTemp = null; +for (var i = 3; --i >= -3; ) { +for (var j = 3; --j >= -3; ) { +for (var k = 3; --k >= -3; ) { +if (opTemp == null) opTemp = new JS.SymmetryOperation(null, 0, false); +t.set(i, j, k); +if (this.checkOpSimilar(t, vTemp)) continue; +if (opTemp.opCheckAdd(this, t0, n0, t, xyzList, lst, isym + 1)) { +if (isPlane) JS.SymmetryOperation.addCoincidentMap(mapCoincident, opTemp, 8, vTemp); + else if (isScrew) JS.SymmetryOperation.addCoincidentMap(mapCoincident, opTemp, 3, null); +opTemp = null; +}} +} +} +}, "JU.SB,JU.Lst,java.util.Map,~N,~N,JU.V3"); +c$.addCoincidentMap = Clazz.defineMethod(c$, "addCoincidentMap", +function(mapCoincident, op, opType, vTemp){ +if (op.isIrrelevant) return; +var s = op.getOpName(0); +var l = mapCoincident.get(s); +op.iCoincident = 0; +var isRotation = (opType == 3); +if (l == null) { +mapCoincident.put(s, l = new JU.Lst()); +} else if (isRotation) { +if (op.opOrder == 6) { +for (var i = l.size(); --i >= 0; ) { +var op1 = l.get(i); +if (!op1.isIrrelevant) switch (op1.opOrder) { +case 3: +op1.isIrrelevant = true; +break; +case 6: +break; +} +} +}op.iCoincident = 1; +} else { +var op0 = null; +for (var i = l.size(); --i >= 0; ) { +op0 = l.get(i); +if (op.opGlide != null && op0.opGlide != null) { +vTemp.sub2(op.opGlide, op0.opGlide); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}vTemp.add2(op.opGlide, op0.opGlide); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}vTemp.add2(op.opAxis, op0.opAxis); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}} else if (op.opGlide == null && op0.opGlide == null) { +vTemp.add2(op.opAxis, op0.opAxis); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}vTemp.sub2(op.opAxis, op0.opAxis); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}}} +if (op0.iCoincident == 0) { +op.iCoincident = 1; +op0.iCoincident = -1; +} else { +op.iCoincident = -op0.iCoincident; +}}l.addLast(op); +}, "java.util.Map,JS.SymmetryOperation,~N,JU.V3"); +Clazz.defineMethod(c$, "checkOpSimilar", +function(t, vTemp){ +switch (this.getOpType() & -2) { +default: +return false; +case 0: +return true; +case 2: +return (JS.SymmetryOperation.approx6(t.dot(this.opAxis) - t.length()) == 0); +case 8: +vTemp.cross(t, this.opAxis); +return (JS.SymmetryOperation.approx6(vTemp.length()) == 0 ? false : JS.SymmetryOperation.approx6(t.dot(this.opAxis)) == 0); +} +}, "JU.V3,JU.V3"); +Clazz.defineMethod(c$, "opCheckAdd", +function(opThis, t0, n0, t, xyzList, lst, itno){ +this.setM4(opThis); +var t1 = JU.V3.newV(t); +t1.add(t0); +this.setTranslation(t1); +this.isFinalized = true; +this.setOpTypeAndOrder(); +if (this.isIrrelevant || this.opType == 0 || this.opType == 1) return false; +var s = this.getOpName(1) + ";"; +if ((this.opType & 8) == 0 && xyzList.indexOf(s) >= 0) { +return false; +}xyzList.append(s); +lst.addLast(this); +this.isFinalized = true; +this.xyz = JS.SymmetryOperation.getXYZFromMatrix(this, false, false, false); +return true; +}, "JS.SymmetryOperation,JU.V3,~N,JU.V3,JU.SB,JU.Lst,~N"); +c$.approx6Pt = Clazz.defineMethod(c$, "approx6Pt", +function(pt){ +if (pt != null) { +pt.x = JS.SymmetryOperation.approx6(pt.x); +pt.y = JS.SymmetryOperation.approx6(pt.y); +pt.z = JS.SymmetryOperation.approx6(pt.z); +}}, "JU.T3"); +c$.normalize12ths = Clazz.defineMethod(c$, "normalize12ths", +function(vtrans){ +vtrans.x = JU.PT.approx(vtrans.x, 12); +vtrans.y = JU.PT.approx(vtrans.y, 12); +vtrans.z = JU.PT.approx(vtrans.z, 12); +}, "JU.V3"); +Clazz.defineMethod(c$, "getCode", +function(){ +if (this.opAxisCode != null) { +return this.opAxisCode; +}var t = this.getOpName(2).charAt(0); +var o = this.opOrder; +var ccw = (this.opIsCCW == null ? 0 : this.opIsCCW === Boolean.TRUE ? 1 : 2); +var g = ""; +var m = ""; +switch ((t).charCodeAt(0)) { +case 71: +t = JS.SymmetryOperation.getGlideFromTrans(this.opTrans, this.opPlane); +case 80: +if (!JS.SymmetryOperation.isCoaxial(this.opAxis)) { +t = (t == 'P' ? 'p' : String.fromCharCode(t.charCodeAt(0) - 32)); +}break; +case 83: +var d = this.opTrans.length(); +if (this.opIsCCW != null && (d < (d > 1 ? 6 : 0.5)) == (this.opIsCCW === Boolean.TRUE)) t = 'w'; +break; +case 82: +if (!JS.SymmetryOperation.isCoaxial(this.opAxis)) { +t = 'o'; +}if (this.opPoint.length() == 0) t = (t == 'o' ? 'q' : 'Q'); +break; +default: +break; +} +var s = g + m + t + "." + (String.fromCharCode(48 + o)) + "." + ccw + "."; +return this.opAxisCode = s; +}); +c$.getGlideFromTrans = Clazz.defineMethod(c$, "getGlideFromTrans", +function(ftrans, ax1){ +var fx = Math.abs(JS.SymmetryOperation.approx(ftrans.x * 12)); +var fy = Math.abs(JS.SymmetryOperation.approx(ftrans.y * 12)); +var fz = Math.abs(JS.SymmetryOperation.approx(ftrans.z * 12)); +if (fx == 9) fx = 3; +if (fy == 9) fy = 3; +if (fz == 9) fz = 3; +var nonzero = 3; +if (fx == 0) nonzero--; +if (fy == 0) nonzero--; +if (fz == 0) nonzero--; +var sum = Clazz.floatToInt(fx + fy + fz); +switch (nonzero) { +default: +case 1: +return (fx != 0 ? 'a' : fy != 0 ? 'b' : 'c'); +case 2: +switch (sum) { +case 6: +return 'd'; +case 12: +var n = JU.P3.newP(ax1); +n.normalize(); +if (JS.SymmetryOperation.approx(n.x + n.y + n.z) == 1) return 'n'; +} +break; +case 3: +switch (sum) { +case 9: +return 'd'; +case 18: +return 'n'; +} +break; +} +return 'g'; +}, "JU.T3,JU.T3"); +c$.rotateAndTranslatePoint = Clazz.defineMethod(c$, "rotateAndTranslatePoint", +function(m, src, ta, tb, tc, dest){ +m.rotTrans2(src, dest); +dest.add3(ta, tb, tc); +}, "JU.M4,JU.P3,~N,~N,~N,JU.P3"); +c$.transformStr = Clazz.defineMethod(c$, "transformStr", +function(xyz, trm, trmInv, t, v, centering, targetCentering, normalize, allowFractions){ +if (trmInv == null) { +trmInv = JU.M4.newM4(trm); +trmInv.invert(); +}if (t == null) t = new JU.M4(); +if (v == null) v = Clazz.newFloatArray (16, 0); +var op = JS.SymmetryOperation.getMatrixFromXYZ(xyz, v, true); +if (centering != null) op.add(centering); +t.setM4(trmInv); +t.mul(op); +if (trm != null) t.mul(trm); +if (targetCentering != null) op.add(targetCentering); +if (normalize) { +t.getColumn(3, v); +for (var i = 0; i < 3; i++) { +v[i] = v[i] % 1; +} +t.setColumnA(3, v); +}return JS.SymmetryOperation.getXYZFromMatrixFrac(t, false, true, false, allowFractions); +}, "~S,JU.M4,JU.M4,JU.M4,~A,JU.T3,JU.T3,~B,~B"); +c$.transformXyzT = Clazz.defineMethod(c$, "transformXyzT", +function(xyz, transform){ +return (JS.SymmetryOperation.transformStr(xyz, JS.UnitCell.toTrm(transform, null), null, null, null, null, null, true, false)); +}, "~S,~S"); +c$.stringToMatrix = Clazz.defineMethod(c$, "stringToMatrix", +function(xyz){ +var divisor = JS.SymmetryOperation.setDivisor(xyz); +var a = Clazz.newFloatArray (16, 0); +JS.SymmetryOperation.getMatrixFromString(null, xyz, a, true, false, false); +return JS.SymmetryOperation.div12(JU.M4.newA16(a), divisor); +}, "~S"); +c$.getTransformABC = Clazz.defineMethod(c$, "getTransformABC", +function(transform, normalize){ +if (transform == null) return "a,b,c"; +var t = transform; +var m = JU.M4.newM4(t); +var tr = new JU.V3(); +m.getTranslation(tr); +tr.scale(-1); +m.add(tr); +m.transpose(); +var s = JS.SymmetryOperation.getXYZFromMatrixFrac(m, false, true, false, true).$replace('x', 'a').$replace('y', 'b').$replace('z', 'c'); +if (tr.lengthSquared() < 1e-12) return s; +tr.scale(-1); +return s + ";" + (normalize ? JS.SymmetryOperation.norm3(tr) : JS.SymmetryOperation.opF(tr.x) + "," + JS.SymmetryOperation.opF(tr.y) + "," + JS.SymmetryOperation.opF(tr.z)); +}, "~O,~B"); +c$.norm3 = Clazz.defineMethod(c$, "norm3", +function(tr){ +return JS.SymmetryOperation.norm(tr.x) + "," + JS.SymmetryOperation.norm(tr.y) + "," + JS.SymmetryOperation.norm(tr.z); +}, "JU.T3"); +c$.norm = Clazz.defineMethod(c$, "norm", +function(d){ +return JS.SymmetryOperation.opF(JS.SymmetryOperation.normHalf(d)); +}, "~N"); +c$.normHalf = Clazz.defineMethod(c$, "normHalf", +function(d){ +while (d <= -0.5) { +d += 1; +} +while (d > 0.5) { +d -= 1; +} +return d; +}, "~N"); +c$.toPoint = Clazz.defineMethod(c$, "toPoint", +function(xyz, p){ +if (p == null) p = new JU.P3(); +var s = JU.PT.split(xyz, ","); +p.set(JU.PT.parseFloatFraction(s[0]), JU.PT.parseFloatFraction(s[1]), JU.PT.parseFloatFraction(s[2])); +return p; +}, "~S,JU.P3"); +c$.atomTest = null; +c$.twelfths = Clazz.newArray(-1, ["0", "1/12", "1/6", "1/4", "1/3", "5/12", "1/2", "7/12", "2/3", "3/4", "5/6", "11/12"]); +c$.labelsXYZ = Clazz.newArray(-1, ["x", "y", "z"]); +c$.labelsXn = Clazz.newArray(-1, ["x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13"]); +c$.labelsXnSub = Clazz.newArray(-1, ["x", "y", "z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]); +c$.x = JU.P3.new3(3.141592653589793, 2.718281828459045, (8.539734222673566)); +c$.C3codes = Clazz.newIntArray(-1, [0x031112, 0x121301, 0x130112, 0x021311, 0x130102, 0x020311, 0x031102, 0x120301]); +c$.xneg = null; +c$.opPlanes = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/T.js b/config/plugins/visualizations/jmol/static/j2s/JS/T.js new file mode 100755 index 000000000000..ef082175fca9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/T.js @@ -0,0 +1,263 @@ +Clazz.declarePackage("JS"); +Clazz.load(["java.util.Hashtable"], "JS.T", ["java.util.Arrays", "JU.AU", "$.Lst", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tok = 0; +this.value = null; +this.intValue = 2147483647; +Clazz.instantialize(this, arguments);}, JS, "T", null); +c$.t = Clazz.defineMethod(c$, "t", +function(tok){ +var token = new JS.T(); +token.tok = tok; +return token; +}, "~N"); +c$.tv = Clazz.defineMethod(c$, "tv", +function(tok, intValue, value){ +var token = JS.T.t(tok); +token.intValue = intValue; +token.value = value; +return token; +}, "~N,~N,~O"); +c$.o = Clazz.defineMethod(c$, "o", +function(tok, value){ +var token = JS.T.t(tok); +token.value = value; +return token; +}, "~N,~O"); +c$.n = Clazz.defineMethod(c$, "n", +function(tok, intValue){ +var token = JS.T.t(tok); +token.intValue = intValue; +return token; +}, "~N,~N"); +c$.i = Clazz.defineMethod(c$, "i", +function(intValue){ +var token = JS.T.t(2); +token.intValue = intValue; +return token; +}, "~N"); +c$.tokAttr = Clazz.defineMethod(c$, "tokAttr", +function(a, b){ +return (a & b) == (b & b); +}, "~N,~N"); +c$.tokAttrOr = Clazz.defineMethod(c$, "tokAttrOr", +function(a, b1, b2){ +return (a & b1) == (b1 & b1) || (a & b2) == (b2 & b2); +}, "~N,~N,~N"); +c$.getPrecedence = Clazz.defineMethod(c$, "getPrecedence", +function(tokOperator){ +return ((tokOperator >> 9) & 0xF); +}, "~N"); +c$.getMaxMathParams = Clazz.defineMethod(c$, "getMaxMathParams", +function(tokCommand){ +return ((tokCommand >> 9) & 0x3); +}, "~N"); +c$.addToken = Clazz.defineMethod(c$, "addToken", +function(ident, token){ +JS.T.tokenMap.put(ident, token); +}, "~S,JS.T"); +c$.getTokenFromName = Clazz.defineMethod(c$, "getTokenFromName", +function(name){ +return JS.T.tokenMap.get(name); +}, "~S"); +c$.getTokFromName = Clazz.defineMethod(c$, "getTokFromName", +function(name){ +var token = JS.T.getTokenFromName(name.toLowerCase()); +return (token == null ? 0 : token.tok); +}, "~S"); +c$.nameOf = Clazz.defineMethod(c$, "nameOf", +function(tok){ +for (var token, $token = JS.T.tokenMap.values().iterator (); $token.hasNext()&& ((token = $token.next ()) || true);) { +if (token.tok == tok) return "" + token.value; +} +return "0x" + Integer.toHexString(tok); +}, "~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.toString2(); +}); +Clazz.defineMethod(c$, "toString2", +function(){ +return "Token[" + JS.T.astrType[this.tok < 16 ? this.tok : 16] + "(" + (this.tok % 1000) + "/0x" + Integer.toHexString(this.tok) + ")" + ((this.intValue == 2147483647) ? "" : " intValue=" + this.intValue + "(0x" + Integer.toHexString(this.intValue) + ")") + ((this.value == null) ? "" : (typeof(this.value)=='string') ? " value=\"" + this.value + "\"" : " value=" + this.value) + "]"; +}); +c$.getCommandSet = Clazz.defineMethod(c$, "getCommandSet", +function(strBegin){ +var cmds = ""; +var htSet = new java.util.Hashtable(); +var nCmds = 0; +var s = (strBegin == null || strBegin.length == 0 ? null : strBegin.toLowerCase()); +var isMultiCharacter = (s != null && s.length > 1); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var token = entry.getValue(); +if ((token.tok & 4096) != 0 && (s == null || name.indexOf(s) == 0) && (isMultiCharacter || (token.value).equals(name))) htSet.put(name, Boolean.TRUE); +} +for (var entry, $entry = htSet.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.charAt(name.length - 1) != 's' || !htSet.containsKey(name.substring(0, name.length - 1))) cmds += (nCmds++ == 0 ? "" : ";") + name; +} +return cmds; +}, "~S"); +c$.getAtomPropertiesLike = Clazz.defineMethod(c$, "getAtomPropertiesLike", +function(type){ +type = type.toLowerCase(); +var v = new JU.Lst(); +var isAll = (type.length == 0); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.charAt(0) == '_') continue; +var token = entry.getValue(); +if (JS.T.tokAttr(token.tok, 1077936128) && (isAll || name.toLowerCase().startsWith(type))) { +if (isAll || !(token.value).toLowerCase().startsWith(type)) token = JS.T.o(token.tok, name); +v.addLast(token); +}} +return (v.size() == 0 ? null : v); +}, "~S"); +c$.getTokensLike = Clazz.defineMethod(c$, "getTokensLike", +function(type){ +var attr = (type.equals("setparam") ? 536870912 : type.equals("misc") ? 1073741824 : type.equals("mathfunc") ? 134217728 : 4096); +var notattr = (attr == 536870912 ? 1610612736 : 0); +var v = new JU.Lst(); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var token = entry.getValue(); +if (JS.T.tokAttr(token.tok, attr) && (notattr == 0 || !JS.T.tokAttr(token.tok, notattr))) v.addLast(name); +} +var a = v.toArray( new Array(v.size())); +java.util.Arrays.sort(a); +return a; +}, "~S"); +c$.getSettableTokFromString = Clazz.defineMethod(c$, "getSettableTokFromString", +function(s){ +var tok = JS.T.getTokFromName(s); +return (tok != 0 && JS.T.tokAttr(tok, 2048) && !JS.T.tokAttr(tok, 1140850688) ? tok : 0); +}, "~S"); +c$.completeCommand = Clazz.defineMethod(c$, "completeCommand", +function(map, isSet, asCommand, str, n){ +if (map == null) map = JS.T.tokenMap; + else asCommand = false; +var v = new JU.Lst(); +str = str.toLowerCase(); +for (var name, $name = map.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) { +if (!name.startsWith(str)) continue; +var tok = JS.T.getTokFromName(name); +if (asCommand ? JS.T.tokAttr(tok, 4096) : isSet ? JS.T.tokAttr(tok, 536870912) && !JS.T.tokAttr(tok, 1610612736) : true) v.addLast(name); +} +return JU.AU.sortedItem(v, n); +}, "java.util.Map,~B,~B,~S,~N"); +c$.getParamType = Clazz.defineMethod(c$, "getParamType", +function(tok){ +if (!JS.T.tokAttr(tok, 536870912)) return 0; +return tok & 662700032; +}, "~N"); +c$.getTokensType = Clazz.defineMethod(c$, "getTokensType", +function(map, attr){ +for (var e, $e = JS.T.tokenMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var t = e.getValue(); +if (JS.T.tokAttr(t.tok, attr)) map.put(e.getKey(), e.getValue()); +} +}, "java.util.Map,~N"); +c$.isIDcmd = Clazz.defineMethod(c$, "isIDcmd", +function(cmdtok){ +switch (cmdtok) { +case 135180: +case 135176: +case 135174: +case 135188: +case 134353926: +return true; +default: +return false; +} +}, "~N"); +Clazz.defineMethod(c$, "equals", +function(o){ +if (!(Clazz.instanceOf(o,"JS.T"))) return false; +var t = o; +if (this.tok == t.tok) return (t.intValue == this.intValue && (this.tok == 2 || this.tok == 1073742335 || this.tok == 1073742334 || t.value.equals(this.value))); +switch (this.tok) { +case 2: +return (t.tok == 3 && (t.value).floatValue() == this.intValue); +case 3: +return (t.tok == 2 && (this.value).floatValue() == t.intValue); +default: +return false; +} +}, "~O"); +{ +JS.T.astrType = "nada identifier integer decimal string inscode hash array point point4 bitset matrix3f matrix4f array hash bytearray keyword".$plit(" "); +}c$.tokenSpaceBeforeSquare = JS.T.o(1073742195, " "); +c$.tokenOn = JS.T.tv(1073742335, 1, "on"); +c$.tokenOff = JS.T.tv(1073742334, 0, "off"); +c$.tokenAll = JS.T.o(1073742327, "all"); +c$.tokenIf = JS.T.o(134320649, "if"); +c$.tokenAnd = JS.T.o(268438528, "and"); +c$.tokenAndSpec = JS.T.o(268439552, ""); +c$.tokenOr = JS.T.o(268438016, "or"); +c$.tokenAndFALSE = JS.T.o(268438528, "and"); +c$.tokenOrTRUE = JS.T.o(268438016, "or"); +c$.tokenOpIf = JS.T.o(805307393, "?"); +c$.tokenComma = JS.T.o(268436992, ","); +c$.tokenDefineString = JS.T.tv(12290, 4, "@"); +c$.tokenPlus = JS.T.o(268440577, "+"); +c$.tokenMinus = JS.T.o(268440576, "-"); +c$.tokenMul3 = JS.T.o(1275068930, "mul3"); +c$.tokenTimes = JS.T.o(268441089, "*"); +c$.tokenDivide = JS.T.o(268441088, "/"); +c$.tokenLeftParen = JS.T.o(268435968, "("); +c$.tokenRightParen = JS.T.o(268435969, ")"); +c$.tokenArraySquare = JS.T.o(1275068418, "["); +c$.tokenArrayOpen = JS.T.o(268437504, "["); +c$.tokenArrayClose = JS.T.o(268437505, "]"); +c$.tokenLeftBrace = JS.T.o(1073742332, "{"); +c$.tokenExpressionBegin = JS.T.o(1073742325, "expressionBegin"); +c$.tokenExpressionEnd = JS.T.o(1073742326, "expressionEnd"); +c$.tokenConnected = JS.T.o(134217736, "connected"); +c$.tokenCoordinateBegin = JS.T.o(1073742332, "{"); +c$.tokenRightBrace = JS.T.o(1073742338, "}"); +c$.tokenCoordinateEnd = JS.T.tokenRightBrace; +c$.tokenColon = JS.T.o(268436482, ":"); +c$.tokenSetCmd = JS.T.o(36867, "set"); +c$.tokenSet = JS.T.tv(36867, 61, ""); +c$.tokenSetArray = JS.T.tv(36867, 91, ""); +c$.tokenSetProperty = JS.T.tv(36867, 46, ""); +c$.tokenSetVar = JS.T.tv(36868, 61, "var"); +c$.tokenEquals = JS.T.o(268440324, "="); +c$.tokenScript = JS.T.o(134222850, "script"); +c$.tokenSwitch = JS.T.o(102410, "switch"); +c$.tokenMap = new java.util.Hashtable(); +{ +var arrayPairs = Clazz.newArray(-1, ["(", JS.T.tokenLeftParen, ")", JS.T.tokenRightParen, "and", JS.T.tokenAnd, "&", null, "&&", null, "or", JS.T.tokenOr, "|", null, "||", null, "?", JS.T.tokenOpIf, ",", JS.T.tokenComma, "=", JS.T.tokenEquals, "==", null, ":", JS.T.tokenColon, "+", JS.T.tokenPlus, "-", JS.T.tokenMinus, "*", JS.T.tokenTimes, "/", JS.T.tokenDivide, "script", JS.T.tokenScript, "source", null, "set", JS.T.tokenSetCmd, "switch", JS.T.tokenSwitch, "all", JS.T.tokenAll, "off", JS.T.tokenOff, "false", null, "on", JS.T.tokenOn, "true", null]); +var tokenThis; +var tokenLast = null; +var sTok; +var lcase; +var n = arrayPairs.length - 1; +for (var i = 0; i < n; i += 2) { +sTok = arrayPairs[i]; +lcase = sTok.toLowerCase(); +tokenThis = arrayPairs[i + 1]; +if (tokenThis == null) tokenThis = tokenLast; + else if (tokenThis.value == null) tokenThis.value = sTok; +JS.T.tokenMap.put(lcase, tokenThis); +tokenLast = tokenThis; +} +arrayPairs = null; +var sTokens = Clazz.newArray(-1, ["+=", "-=", "*=", "/=", "\\=", "&=", "|=", "not", "!", "xor", "tog", "<", "<=", ">=", ">", "!=", "<>", "LIKE", "within", ".", "..", "[", "]", "{", "}", "$", "%", ";", "++", "--", "**", "\\", "animation", "anim", "assign", "axes", "backbone", "background", "bind", "bondorder", "boundbox", "boundingBox", "break", "calculate", "capture", "cartoon", "cartoons", "case", "catch", "cd", "center", "centre", "centerat", "cgo", "color", "colour", "compare", "configuration", "conformation", "config", "connect", "console", "contact", "contacts", "continue", "data", "default", "define", "@", "delay", "delete", "density", "depth", "dipole", "dipoles", "display", "dot", "dots", "draw", "echo", "ellipsoid", "ellipsoids", "else", "elseif", "end", "endif", "exit", "eval", "file", "files", "font", "for", "format", "frame", "frames", "frank", "function", "functions", "geosurface", "getProperty", "goto", "halo", "halos", "helix", "helixalpha", "helix310", "helixpi", "hbond", "hbonds", "help", "hide", "history", "hover", "if", "in", "initialize", "invertSelected", "isosurface", "javascript", "label", "labels", "lcaoCartoon", "lcaoCartoons", "load", "log", "loop", "matrix", "measure", "measures", "monitor", "monitors", "meshribbon", "meshribbons", "message", "minimize", "minimization", "mo", "model", "models", "modulation", "move", "moveTo", "mutate", "navigate", "navigation", "nbo", "origin", "out", "parallel", "pause", "wait", "plot", "private", "plot3d", "pmesh", "polygon", "polyhedra", "polyhedron", "print", "process", "prompt", "quaternion", "quaternions", "quit", "ramachandran", "rama", "refresh", "reset", "unset", "restore", "restrict", "return", "ribbon", "ribbons", "rocket", "rockets", "rotate", "rotateSelected", "save", "select", "selectionHalos", "selectionHalo", "showSelections", "sheet", "show", "slab", "spacefill", "cpk", "spin", "ssbond", "ssbonds", "star", "stars", "step", "steps", "stereo", "strand", "strands", "structure", "_structure", "strucNo", "struts", "strut", "subset", "subsystem", "synchronize", "sync", "trace", "translate", "translateSelected", "try", "unbind", "unitcell", "var", "vector", "vectors", "vibration", "while", "wireframe", "write", "zap", "zoom", "zoomTo", "atom", "atoms", "axisangle", "basepair", "basepairs", "orientation", "orientations", "pdbheader", "polymer", "polymers", "residue", "residues", "rotation", "row", "sequence", "seqcode", "shape", "state", "symbol", "symmetry", "symmetryHM", "spaceGroup", "transform", "translation", "url", "_", "abs", "absolute", "_args", "acos", "add", "adpmax", "adpmin", "align", "altloc", "altlocs", "ambientOcclusion", "amino", "angle", "array", "as", "_a", "atomID", "_atomID", "atomIndex", "atomName", "atomno", "atomType", "atomX", "atomY", "atomZ", "average", "babel", "babel21", "back", "backlit", "backshell", "balls", "baseModel", "best", "beta", "bin", "bondCount", "bonded", "bottom", "branch", "brillouin", "bzone", "cache", "carbohydrate", "cell", "chain", "chains", "chainNo", "chemicalShift", "cs", "clash", "clear", "clickable", "clipboard", "connected", "context", "constraint", "contourLines", "coord", "coordinates", "coords", "cos", "cross", "covalentRadius", "covalent", "direction", "displacement", "displayed", "distance", "div", "DNA", "domains", "dotted", "DSSP", "DSSR", "element", "elemno", "_e", "error", "exportScale", "fill", "find", "fixedTemperature", "forcefield", "formalCharge", "charge", "eta", "front", "frontlit", "frontOnly", "fullylit", "fx", "fy", "fz", "fxyz", "fux", "fuy", "fuz", "fuxyz", "group", "groups", "group1", "_g", "groupID", "_groupID", "groupIndex", "hidden", "highlight", "hkl", "hydrophobicity", "hydrophobic", "hydro", "id", "identify", "ident", "image", "info", "infoFontSize", "inline", "insertion", "insertions", "intramolecular", "intra", "intermolecular", "inter", "bondingRadius", "ionicRadius", "ionic", "isAromatic", "Jmol", "JSON", "join", "keys", "last", "left", "length", "lines", "list", "magneticShielding", "ms", "mass", "max", "mep", "mesh", "middle", "min", "mlp", "mode", "modify", "modifyOrCreate", "modt", "modt1", "modt2", "modt3", "modx", "mody", "modz", "modo", "modxyz", "molecule", "molecules", "modelIndex", "monomer", "morph", "movie", "mouse", "mul", "mul3", "nboCharges", "nci", "next", "noDelay", "noDots", "noFill", "noMesh", "none", "null", "inherit", "normal", "noBackshell", "noContourLines", "notFrontOnly", "noTriangles", "now", "nucleic", "occupancy", "omega", "only", "opaque", "options", "partialCharge", "pattern", "phi", "pivot", "plane", "planar", "play", "playRev", "point", "points", "pointGroup", "polymerLength", "pop", "previous", "prev", "probe", "property", "properties", "protein", "psi", "purine", "push", "PyMOL", "pyrimidine", "random", "range", "rasmol", "replace", "resno", "resume", "rewind", "reverse", "right", "rmsd", "RNA", "rna3d", "rock", "rubberband", "rxyz", "saSurface", "saved", "scale", "scene", "search", "smarts", "selected", "seqid", "shapely", "sidechain", "sin", "site", "size", "smiles", "substructure", "solid", "sort", "specialPosition", "sqrt", "split", "starWidth", "starScale", "stddev", "straightness", "structureId", "supercell", "sub", "sum", "sum2", "surface", "surfaceDistance", "symop", "symops", "sx", "sy", "sz", "sxyz", "temperature", "relativeTemperature", "tensor", "theta", "thisModel", "ticks", "top", "torsion", "trajectory", "trajectories", "translucent", "transparent", "triangles", "trim", "type", "ux", "uy", "uz", "uxyz", "user", "valence", "vanderWaals", "vdw", "vdwRadius", "visible", "volume", "vx", "vy", "vz", "vxyz", "xyz", "w", "wyckoff", "wyckoffm", "x", "y", "z", "addHydrogens", "allConnected", "angstroms", "anisotropy", "append", "arc", "area", "aromatic", "arrow", "async", "audio", "auto", "axis", "barb", "binary", "blockData", "cancel", "cap", "cavity", "centroid", "check", "checkCIR", "chemical", "circle", "collapsed", "col", "colorScheme", "command", "commands", "contour", "contours", "corners", "count", "criterion", "create", "crossed", "curve", "cutoff", "cylinder", "diameter", "discrete", "distanceFactor", "downsample", "drawing", "dynamicMeasurements", "eccentricity", "ed", "edges", "edgesOnly", "energy", "exitJmol", "faceCenterOffset", "filter", "first", "fixed", "fix", "flat", "fps", "from", "frontEdges", "full", "fullPlane", "functionXY", "functionXYZ", "gridPoints", "hiddenLinesDashed", "homo", "ignore", "InChI", "InChIKey", "increment", "insideout", "interior", "intersection", "intersect", "internal", "lattice", "line", "lineData", "link", "lobe", "lonePair", "lp", "lumo", "macro", "manifest", "mapProperty", "maxSet", "menu", "minSet", "modelBased", "molecular", "mrc", "msms", "name", "nmr", "noCross", "noDebug", "noEdges", "noHead", "noLoad", "noPlane", "object", "obj", "offset", "offsetSide", "once", "orbital", "atomicOrbital", "packed", "palindrome", "parameters", "path", "pdb", "period", "periodic", "perpendicular", "perp", "phase", "planarParam", "pocket", "pointsPerAngstrom", "radical", "rad", "reference", "remove", "resolution", "reverseColor", "rotate45", "selection", "sigma", "sign", "silent", "sphere", "squared", "stdInChI", "stdInChIKey", "stop", "title", "titleFormat", "to", "validation", "value", "variable", "variables", "vertices", "width", "wigner", "wignerSeitz", "backgroundModel", "celShading", "celShadingPower", "debug", "debugHigh", "defaultLattice", "measurements", "measurement", "scale3D", "toggleLabel", "userColorScheme", "throw", "timeout", "timeouts", "window", "animationMode", "appletProxy", "atomTypes", "axesColor", "axis1Color", "axis2Color", "axis3Color", "backgroundColor", "bondmode", "boundBoxColor", "boundingBoxColor", "chirality", "cipRule", "currentLocalPath", "dataSeparator", "defaultAngleLabel", "defaultColorScheme", "defaultColors", "defaultDirectory", "defaultDistanceLabel", "defaultDropScript", "defaultLabelPDB", "defaultLabelXYZ", "defaultLoadFilter", "defaultLoadScript", "defaults", "defaultTorsionLabel", "defaultVDW", "drawFontSize", "eds", "edsDiff", "energyUnits", "fileCacheDirectory", "fontsize", "helpPath", "hoverLabel", "language", "loadFormat", "loadLigandFormat", "logFile", "measurementUnits", "nihResolverFormat", "nmrPredictFormat", "nmrUrlFormat", "pathForAllFiles", "picking", "pickingStyle", "pickLabel", "platformSpeed", "propertyColorScheme", "quaternionFrame", "smilesUrlFormat", "smiles2dImageFormat", "unitCellColor", "axesOffset", "axisOffset", "axesScale", "axisScale", "bondTolerance", "cameraDepth", "defaultDrawArrowScale", "defaultTranslucent", "dipoleScale", "ellipsoidAxisDiameter", "gestureSwipeFactor", "hbondsAngleMinimum", "hbondHXDistanceMaximum", "hbondsDistanceMaximum", "hbondNODistanceMaximum", "hoverDelay", "loadAtomDataTolerance", "minBondDistance", "minimizationCriterion", "minimizationMaxAtoms", "modulationScale", "mouseDragFactor", "mouseWheelFactor", "navFPS", "navigationDepth", "navigationSlab", "navigationSpeed", "navX", "navY", "navZ", "particleRadius", "pointGroupDistanceTolerance", "pointGroupLinearTolerance", "radius", "rotationRadius", "scaleAngstromsPerInch", "sheetSmoothing", "slabRange", "solventProbeRadius", "spinFPS", "spinX", "spinY", "spinZ", "stereoDegrees", "strutDefaultRadius", "strutLengthMaximum", "vectorScale", "vectorsCentered", "vectorSymmetry", "vectorTrail", "vibrationPeriod", "vibrationScale", "visualRange", "ambientPercent", "ambient", "animationFps", "axesMode", "bondRadiusMilliAngstroms", "bondingVersion", "delayMaximumMs", "diffusePercent", "diffuse", "dotDensity", "dotScale", "ellipsoidDotCount", "helixStep", "hermiteLevel", "historyLevel", "labelpointerwidth", "lighting", "logLevel", "meshScale", "minimizationReportSteps", "minimizationSteps", "minPixelSelRadius", "percentVdwAtom", "perspectiveModel", "phongExponent", "pickingSpinRate", "propertyAtomNumberField", "propertyAtomNumberColumnCount", "propertyDataColumnCount", "propertyDataField", "repaintWaitMs", "ribbonAspectRatio", "contextDepthMax", "scriptReportingLevel", "showScript", "smallMoleculeMaxAtoms", "specular", "specularExponent", "specularPercent", "specPercent", "specularPower", "specpower", "strandCount", "strandCountForMeshRibbon", "strandCountForStrands", "strutSpacing", "zDepth", "zSlab", "zshadePower", "allowEmbeddedScripts", "allowGestures", "allowKeyStrokes", "allowModelKit", "allowMoveAtoms", "allowMultiTouch", "allowRotateSelected", "antialiasDisplay", "antialiasImages", "antialiasTranslucent", "appendNew", "applySymmetryToBonds", "atomPicking", "allowAudio", "autobond", "autoFPS", "autoplayMovie", "axesMolecular", "axesOrientationRasmol", "axesUnitCell", "axesWindow", "bondModeOr", "bondPicking", "bonds", "bond", "cartoonBaseEdges", "cartoonBlocks", "cartoonBlockHeight", "cartoonsFancy", "cartoonFancy", "cartoonLadders", "cartoonRibose", "cartoonRockets", "cartoonSteps", "chainCaseSensitive", "cipRule6Full", "colorRasmol", "debugScript", "defaultStructureDssp", "disablePopupMenu", "displayCellParameters", "showUnitcellInfo", "dotsSelectedOnly", "dotSurface", "doublePrecision", "dragSelected", "drawHover", "drawPicking", "dsspCalculateHydrogenAlways", "elementKey", "ellipsoidArcs", "ellipsoidArrows", "ellipsoidAxes", "ellipsoidBall", "ellipsoidDots", "ellipsoidFill", "fileCaching", "fontCaching", "fontScaling", "forceAutoBond", "fractionalRelative", "greyscaleRendering", "hbondsBackbone", "hbondsRasmol", "hbondsSolid", "hetero", "hideNameInPopup", "hideNavigationPoint", "hideNotSelected", "highResolution", "hydrogen", "hydrogens", "imageState", "isKiosk", "isosurfaceKey", "isosurfacePropertySmoothing", "isosurfacePropertySmoothingPower", "jmolInJSpecView", "justifyMeasurements", "languageTranslation", "leadAtom", "leadAtoms", "legacyAutoBonding", "legacyHAddition", "legacyJavaFloat", "logCommands", "logGestures", "macroDirectory", "measureAllModels", "measurementLabels", "measurementNumbers", "messageStyleChime", "minimizationRefresh", "minimizationSilent", "modelkit", "modelkitMode", "modulateOccupancy", "monitorEnergy", "multiplebondbananas", "multipleBondRadiusFactor", "multipleBondSpacing", "multiProcessor", "navigateSurface", "navigationMode", "navigationPeriodic", "partialDots", "pdbAddHydrogens", "pdbGetHeader", "pdbSequential", "perspectiveDepth", "preserveState", "rangeSelected", "redo", "redoMove", "refreshing", "ribbonBorder", "rocketBarrels", "saveProteinStructureState", "scriptQueue", "selectAllModels", "selectHetero", "selectHydrogen", "showAxes", "showBoundBox", "showBoundingBox", "showFrank", "showHiddenSelectionHalos", "showHydrogens", "showKeyStrokes", "showMeasurements", "showModulationVectors", "showMultipleBonds", "showNavigationPointAlways", "showTiming", "showUnitcell", "showUnitcellDetails", "slabByAtom", "slabByMolecule", "slabEnabled", "smartAromatic", "solvent", "solventProbe", "ssBondsBackbone", "statusReporting", "strutsMultiple", "syncMouse", "syncScript", "testFlag1", "testFlag2", "testFlag3", "testFlag4", "traceAlpha", "twistedSheets", "undoAuto", "undo", "undoMax", "undoMove", "useMinimizationThread", "useNumberLocalization", "waitForMoveTo", "windowCentered", "wireframeRotation", "zeroBasedXyzRasmol", "zoomEnabled", "zoomHeight", "zoomLarge", "zShade"]); +var iTokens = Clazz.newIntArray(-1, [268442114, -1, -1, -1, -1, -1, -1, 268439040, -1, 268438017, 268438018, 268440323, 268440322, 268440321, 268440320, 268440325, -1, 268440326, 134217759, 1073742336, 1073742337, 268437504, 268437505, 1073742332, 1073742338, 1073742330, 268441090, 1073742339, 268441602, 268441601, 268441603, 268441091, 4097, -1, 4098, 1611272194, 1114249217, 1610616835, 4100, 4101, 1812599299, -1, 102407, 4102, 4103, 1112152066, -1, 102411, 102412, 20488, 12289, -1, 4105, 135174, 1765808134, -1, 134221831, 1094717448, -1, -1, 4106, 528395, 134353926, -1, 102408, 134221834, 102413, 12290, -1, 528397, 12291, 1073741914, 554176526, 135175, -1, 1610625028, 1275069444, 1112150019, 135176, 537022465, 1112150020, -1, 364547, 102402, 102409, 364548, 266255, 134218759, 1228935687, -1, 4114, 134320648, 1287653388, 4115, -1, 1611272202, 134320141, -1, 1112150021, 1275072526, 20500, 1112152070, -1, 136314895, 2097159, 2097160, 2097162, 1613238294, -1, 20482, 12294, 1610616855, 544771, 134320649, 1275068432, 4121, 4122, 135180, 134238732, 1825200146, -1, 135182, -1, 134223363, 36869, 528411, 134217766, 1745489939, -1, -1, -1, 1112152071, -1, 20485, 4126, -1, 1073877010, 1094717454, -1, 1275072532, 4128, 4129, 4130, 4131, -1, 1073877011, 1073742078, 1073742079, 102436, 20487, -1, 4133, 4134, 135190, 135188, 1073742106, 1275203608, -1, 36865, 102439, 134256129, 134221850, -1, 266281, 4138, -1, 266284, 4141, -1, 4142, 12295, 36866, 1112152073, -1, 1112152074, -1, 528432, 4145, 4146, 1275082241, 1611141172, -1, -1, 2097184, 134222350, 554176565, 1112152075, -1, 1611141175, 1611141176, -1, 1112152076, -1, 266298, -1, 528443, 1649022989, -1, 1639976963, -1, 1094713367, 659482, -1, 2109448, 1094713368, 4156, -1, 1112152078, 4160, 4162, 364558, 4163, 1814695966, 36868, 135198, -1, 4166, 102406, 659488, 134221856, 12297, 4168, 4170, 1153433601, -1, 134217731, 1073741863, -1, 1073742077, -1, 1073742088, 1094713362, -1, 1073742120, -1, 1073742132, 1275068935, 1086324744, 1086324747, 1086324748, 1073742158, 1086326798, 1088421903, 603979956, 134217764, 1073742176, 1073742178, 1073742184, 1275068446, 134218250, 1073741826, 134217765, 134218241, 1275069441, 1111490561, 1111490562, 1073741832, 1086324739, -1, 553648129, 2097154, 134217729, 1275068418, 1073741848, 1094713346, -1, -1, 1094713347, 1086326786, 1094715393, 1086326785, 1111492609, 1111492610, 1111492611, 96, 1073741856, 1073741857, 1073741858, 1073741861, 1073741862, 1073741859, 2097200, 1073741864, 1073741865, 1275068420, 1228931586, 2097155, 1073741871, 1073742328, 1073741872, -1, 134221829, 2097188, 1094713349, 1086326788, -1, 1094713351, 1111490563, -1, 1073741881, 1073741882, 2097190, 1073741884, 134217736, 14, 1073741894, 1073741898, 1073742329, -1, -1, 134218245, 1275069442, 1111490564, -1, 1073741918, 1073741922, 2097192, 1275069443, 1275068928, 2097156, 1073741925, 1073741926, 1073741915, 1111490587, 1086326789, 1094715402, 1094713353, 1073741936, 570425357, 1073741938, 1275068427, 1073741946, 545259560, 1631586315, -1, 1111490565, 1073741954, 1073741958, 1073741960, 1073741964, 1111492612, 1111492613, 1111492614, 1145047050, 1111492615, 1111492616, 1111492617, 1145047053, 1086324742, -1, 1086324743, 1094713356, -1, -1, 1094713357, 2097194, 536870920, 134219777, 1113589786, -1, -1, 1073741974, 1086324745, -1, 4120, 1073741982, 553648145, 1073741984, 1086324746, -1, 1073741989, -1, 1073741990, -1, 1111492618, -1, -1, 1073742331, 1073741991, 1073741992, 1275069446, 1140850706, 1073741993, 1073741996, 1140850691, 1140850692, 1073742001, 1111490566, -1, 1111490567, 64, 1073742016, 1073742018, 1073742019, 32, 1073742022, 1073742024, 1073742025, 1073742026, 1111490580, -1, 1111490581, 1111490582, 1111490583, 1111490584, 1111490585, 1111490586, 1145045008, 1094713360, -1, 1094713359, 1094713361, 1073742029, 1073742031, 1073742030, 1275068929, 1275068930, 603979891, 1073742036, 1073742037, 603979892, 1073742042, 1073742046, 1073742052, 1073742333, -1, -1, 1073742056, 1073742057, 1073742039, 1073742058, 1073742060, 134218760, 2097166, 1128269825, 1111490568, 1073742072, 1073742074, 1073742075, 1111492619, 134218753, 1111490569, 1275068725, 134217750, -1, 1073742096, 1073742098, 134217751, -1, 1275068447, 1094713363, 1275334681, 1073742108, -1, 1073742109, 1715472409, -1, 2097168, 1111490570, 2097170, 1275335685, 1073742110, 2097172, 134219266, 1073742114, 1073742116, 1275068443, 1094715412, 4143, 1073742125, 1140850693, 1073742126, 1073742127, 2097174, 1073742128, 1073742129, 1073742134, 1145045003, 1073742135, 1073742136, 536875059, 1073742139, 134218756, -1, 1113589787, 1094713365, 1073742144, 2097178, 134218244, 1094713366, 1140850694, 134218757, 1237320707, 1073742150, 1275068444, 2097196, 134218246, 1275069447, 570425403, -1, 192, 1111490574, 1086324749, 1073742163, 1275068931, 128, 160, 2097180, 1111490575, 1296041985, -1, 1111490571, 1111490572, 1111490573, 1145047052, 1111492620, -1, 1275068445, 1111490576, 2097182, 1073742164, 1073742172, 1073742174, 536870926, -1, 603979967, -1, 1073742182, 1275068932, 1140850696, 1111490577, 1111490578, 1111490579, 1145045006, 1073742186, 1094715418, 1648363544, -1, -1, 2097198, 1312817669, 1111492626, 1111492627, 1111492628, 1145047055, 1145047049, 1140850705, 1086324754, 1086324755, 1111492629, 1111492630, 1111492631, 1073741828, 1073741834, 1073741836, 1073741837, 1073741839, 1073741840, 1073741842, 1075838996, 1073741846, 1073741849, 1073741851, 1073741852, 1073741854, 1073741860, 1073741866, 1073741868, 1073741874, 1073741875, 1073741876, 1094713350, 1073741877, 603979821, 1073741879, 1073741880, 1073741886, 1275068934, 1073741888, 1073741890, 1073741892, 1073741896, 1073741900, 1073741902, 1275068425, 1073741905, 1073741904, 1073741906, 1073741908, 1073741910, 1073741912, 1073741917, 1073741920, 1073741924, 1073741928, 1073741929, 603979836, 1073741931, 1073741932, 1073741933, 1073741934, 1073741935, 266256, 1073741937, 1073741940, 1073741942, 12293, -1, 1073741948, 1073741950, 1073741952, 1073741956, 1073741961, 1073741962, 1073741966, 1073741968, 1073741970, 603979856, 1073741973, 1073741976, 1275068433, 1073741978, 1073741981, 1073741985, 1073741986, 134217763, -1, 1073741988, 1073741994, 1073741998, 1073742000, 1073741999, 1073742002, 1073742004, 1073742006, 1073742008, 4124, 1073742010, 4125, 1073742014, 1073742015, 1073742020, 1073742027, 1073742028, 1073742032, 1073742033, 1073742034, 1073742038, 1073742040, 1073742041, 1073742044, 1073742048, 1073742050, 1073742054, 1073742064, 1073742062, 1073742066, 1073742068, 1073742070, 1073742076, 1073741850, 1073742080, 1073742082, 1073742083, 1073742084, 1073742086, 1073742090, -1, 1073742092, -1, 1073742094, 1073742099, 1073742100, 1073742104, 1073742112, 1073742111, 1073742118, 1073742119, 1073742122, 1073742124, 1073742130, 1073742140, 1073742146, 1073742147, 1073742148, 1073742154, 1073742156, 1073742159, 1073742160, 1073742162, 1073742166, 1073742168, 1073742170, 1073742189, 1073742188, 1073742190, 1073742192, 1073742194, 1073742196, 1073742197, -1, 536870914, 603979820, 553648135, 536870916, 536870917, 536870918, 537006096, -1, 1610612740, 1610612741, 536870930, 36870, 536875070, -1, 536870932, 545259521, 545259522, 545259524, 545259526, 545259528, 545259530, 545259532, 545259534, 1610612737, 545259536, -1, 1086324752, 1086324753, 545259538, 545259540, 545259542, 545259545, -1, 545259546, 545259547, 545259548, 545259543, 545259544, 545259549, 545259550, 545259552, 545259554, 545259555, 570425355, 545259556, 545259557, 545259558, 545259559, 1610612738, 545259561, 545259562, 545259563, 545259564, 545259565, 545259566, 545259568, 545259570, 545259569, 545259571, 545259572, 545259573, 545259574, 545259576, 553648158, 545259578, 545259580, 545259582, 545259584, 545259586, 570425345, -1, 570425346, -1, 570425348, 570425350, 570425352, 570425353, 570425354, 570425356, 570425358, 570425359, 570425361, 570425360, -1, 570425362, 570425363, 570425364, 570425365, 553648152, 570425366, 570425367, 570425368, 570425371, 570425372, 570425373, 570425374, 570425376, 570425378, 570425380, 570425381, 570425382, 570425384, 1665140738, 570425388, 570425390, 570425392, 570425393, 570425394, 570425396, 570425398, 570425400, 570425402, 570425404, 570425406, 570425408, 1648361473, 603979972, 603979973, 553648185, 570425412, 570425414, 570425416, 553648130, -1, 553648132, 553648133, 553648134, 553648136, 553648137, 553648138, -1, 553648139, 553648140, 553648141, 553648142, 553648143, 553648144, 553648147, 1073741995, 553648148, 553648149, 553648150, 553648151, 553648153, 553648154, 553648155, 553648156, 553648157, 553648160, 553648161, 553648162, 553648164, 553648165, 553648166, 553648167, 553648168, 536870922, 553648170, 536870924, 553648172, 553648174, -1, 553648176, -1, 553648178, 553648180, 553648182, 553648183, 553648186, 553648188, 553648190, 603979778, 603979780, 603979781, 603979782, 603979783, 603979784, 603979785, 603979786, 603979788, 603979790, 603979792, 603979794, 603979796, 603979797, 603979798, 603979800, 603979802, 603979804, 603979806, 603979808, 603979809, 603979812, 603979814, 1677721602, -1, 603979815, 603979810, 570425347, 603979816, -1, 603979817, 603979818, 603979819, 603979811, 603979822, 603979823, 603979824, 603979825, 603979826, 603979827, 603979828, -1, 603979829, 603979830, 603979831, 603979832, 603979833, 603979834, 603979835, 603979838, 603979839, 603979840, 603979841, 603979842, 603979843, 603979844, 603979845, 603979846, 603979847, 603979848, 603979849, 603979850, 603979852, 603979853, 603979854, 1612709894, 603979858, 603979860, 603979862, 603979864, 1612709900, -1, 603979865, 603979866, 603979867, 603979868, 553648146, 603979869, 603979870, 603979871, 2097165, -1, 603979872, 603979873, 603979874, 603979875, 603979876, 545259567, 603979877, 603979878, 1610612739, 603979879, 603979880, 603979881, 603983903, -1, 603979884, 603979885, 603979886, 570425369, 570425370, 603979887, 603979888, 603979889, 603979890, 603979893, 603979894, 603979895, 603979896, 603979897, 603979898, 603979899, 4139, 4140, 603979900, 603979901, 603979902, 603979903, 603979904, 603979906, 603979908, 603979910, 603979914, 603979916, -1, 603979918, 603979920, 603979922, 603979924, 603979926, 603979927, 603979928, 603979930, 603979934, 603979936, 603979937, 603979939, 603979940, 603979942, 603979944, 1612709912, 603979948, 603979952, 603979954, 603979955, 603979957, 603979958, 603979960, 603979962, 603979964, 603979965, 603979966, 603979968, 603979969, 603984065, 553648184, 4165, 603979970, 603979971, 603979975, 603979976, 603979977, 603979978, 603979980, 603979982, 603979983, 603979984]); +if (sTokens.length != iTokens.length) { +JU.Logger.error("sTokens.length (" + sTokens.length + ") != iTokens.length! (" + iTokens.length + ")"); +System.exit(1); +}n = sTokens.length; +for (var i = 0; i < n; i++) { +sTok = sTokens[i]; +lcase = sTok.toLowerCase(); +var t = iTokens[i]; +tokenThis = tokenLast = (t == -1 ? tokenLast : JS.T.o(t, sTok)); +if (JS.T.tokenMap.get(lcase) != null) JU.Logger.error("duplicate token definition:" + lcase); +JS.T.tokenMap.put(lcase, tokenThis); +} +sTokens = null; +iTokens = null; +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/TableCellRenderer.js b/config/plugins/visualizations/jmol/static/j2s/JS/TableCellRenderer.js new file mode 100755 index 000000000000..8230cadbed63 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/TableCellRenderer.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "TableCellRenderer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/TableColumn.js b/config/plugins/visualizations/jmol/static/j2s/JS/TableColumn.js new file mode 100755 index 000000000000..d977199918e6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/TableColumn.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JS"); +Clazz.declareInterface(JS, "TableColumn"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/UnitCell.js b/config/plugins/visualizations/jmol/static/j2s/JS/UnitCell.js new file mode 100755 index 000000000000..0082c6e8795a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/UnitCell.js @@ -0,0 +1,810 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.SimpleUnitCell", "JU.P3", "JV.JC"], "JS.UnitCell", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.M3", "$.M4", "$.P4", "$.PT", "$.Quat", "$.V3", "J.api.Interface", "JS.Symmetry", "JU.BoxInfo", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.moreInfo = null; +this.name = ""; +this.vertices = null; +this.fractionalOffset = null; +this.allFractionalRelative = false; +this.cartesianOffset = null; +this.unitCellMultiplier = null; +this.unitCellMultiplied = null; +this.f2c = null; +Clazz.instantialize(this, arguments);}, JS, "UnitCell", JU.SimpleUnitCell, Cloneable); +Clazz.prepareFields (c$, function(){ +this.cartesianOffset = new JU.P3(); +}); +c$.fromOABC = Clazz.defineMethod(c$, "fromOABC", +function(oabc, setRelative){ +var c = new JS.UnitCell(); +if (oabc.length == 3) oabc = Clazz.newArray(-1, [ new JU.P3(), oabc[0], oabc[1], oabc[2]]); +var parameters = Clazz.newFloatArray(-1, [-1, 0, 0, 0, 0, 0, oabc[1].x, oabc[1].y, oabc[1].z, oabc[2].x, oabc[2].y, oabc[2].z, oabc[3].x, oabc[3].y, oabc[3].z]); +c.init(parameters); +c.allFractionalRelative = setRelative; +c.initUnitcellVertices(); +c.setCartesianOffset(oabc[0]); +return c; +}, "~A,~B"); +c$.fromParams = Clazz.defineMethod(c$, "fromParams", +function(params, setRelative, slop){ +var c = new JS.UnitCell(); +c.init(params); +c.initUnitcellVertices(); +c.allFractionalRelative = setRelative; +c.setPrecision(slop); +if (params.length > 26) params[26] = slop; +return c; +}, "~A,~B,~N"); +c$.cloneUnitCell = Clazz.defineMethod(c$, "cloneUnitCell", +function(uc){ +var ucnew = null; +try { +ucnew = uc.clone(); +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +} else { +throw e; +} +} +return ucnew; +}, "JS.UnitCell"); +Clazz.defineMethod(c$, "checkDistance", +function(f1, f2, distance, dx, iRange, jRange, kRange, ptOffset){ +var p1 = JU.P3.newP(f1); +this.toCartesian(p1, true); +for (var i = -iRange; i <= iRange; i++) for (var j = -jRange; j <= jRange; j++) for (var k = -kRange; k <= kRange; k++) { +ptOffset.set(f2.x + i, f2.y + j, f2.z + k); +this.toCartesian(ptOffset, true); +var d = p1.distance(ptOffset); +if (dx > 0 ? Math.abs(d - distance) <= dx : d <= distance && d > 0.1) { +ptOffset.set(i, j, k); +return true; +}} + + +return false; +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N,JU.P3"); +Clazz.defineMethod(c$, "checkPeriodic", +function(pt){ +switch (this.dimension) { +case 3: +if (pt.z < -this.slop || pt.z > 1 - this.slop) return false; +case 2: +if (pt.y < -this.slop || pt.y > 1 - this.slop) return false; +case 1: +if (pt.x < -this.slop || pt.x > 1 - this.slop) return false; +} +return true; +}, "JU.P3"); +Clazz.defineMethod(c$, "dumpInfo", +function(isDebug, multiplied){ +var m = (multiplied ? this.getUnitCellMultiplied() : this); +if (m !== this) return m.dumpInfo(isDebug, false); +return "a=" + this.a + ", b=" + this.b + ", c=" + this.c + ", alpha=" + this.alpha + ", beta=" + this.beta + ", gamma=" + this.gamma + "\noabc=" + JU.Escape.eAP(this.getUnitCellVectors()) + "\nvolume=" + this.volume + (isDebug ? "\nfractional to cartesian: " + this.matrixFractionalToCartesian + "\ncartesian to fractional: " + this.matrixCartesianToFractional : ""); +}, "~B,~B"); +Clazz.defineMethod(c$, "fix000", +function(x){ +return (Math.abs(x) < 0.001 ? 0 : x); +}, "~N"); +Clazz.defineMethod(c$, "fixFloor", +function(d){ +return (d == 1 ? 0 : d); +}, "~N"); +Clazz.defineMethod(c$, "getCanonicalCopy", +function(scale, withOffset){ +var pts = this.getScaledCell(withOffset); +return JU.BoxInfo.getCanonicalCopy(pts, scale); +}, "~N,~B"); +Clazz.defineMethod(c$, "getCanonicalCopyTrimmed", +function(frac, scale){ +var pts = this.getScaledCellMult(frac, true); +return JU.BoxInfo.getCanonicalCopy(pts, scale); +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "getCartesianOffset", +function(){ +return this.cartesianOffset; +}); +Clazz.defineMethod(c$, "getCellWeight", +function(pt){ +var f = 1; +if (pt.x <= this.slop || pt.x >= 1 - this.slop) f /= 2; +if (pt.y <= this.slop || pt.y >= 1 - this.slop) f /= 2; +if (pt.z <= this.slop || pt.z >= 1 - this.slop) f /= 2; +return f; +}, "JU.P3"); +Clazz.defineMethod(c$, "getConventionalUnitCell", +function(latticeType, primitiveToCrystal){ +var oabc = this.getUnitCellVectors(); +if (!latticeType.equals("P") || primitiveToCrystal != null) this.toFromPrimitive(false, latticeType.charAt(0), oabc, primitiveToCrystal); +return oabc; +}, "~S,JU.M3"); +Clazz.defineMethod(c$, "getEquivPoints", +function(pt, flags, ops, list, i0, n0, dup0){ +var fromfractional = (flags.indexOf("fromfractional") >= 0); +var tofractional = (flags.indexOf("tofractional") >= 0); +var packed = (flags.indexOf("packed") >= 0); +if (list == null) list = new JU.Lst(); +var pf = JU.P3.newP(pt); +if (!fromfractional) this.toFractional(pf, true); +var n = list.size(); +for (var i = 0, nops = ops.length; i < nops; i++) { +var p = JU.P3.newP(pf); +ops[i].rotTrans(p); +p.x = this.fixFloor(p.x - Math.floor(p.x)); +p.y = this.fixFloor(p.y - Math.floor(p.y)); +p.z = this.fixFloor(p.z - Math.floor(p.z)); +list.addLast(p); +n++; +} +if (packed) { +for (var i = n0; i < n; i++) { +pf.setT(list.get(i)); +this.unitizeRnd(pf); +if (pf.x == 0) { +list.addLast(JU.P3.new3(0, pf.y, pf.z)); +list.addLast(JU.P3.new3(1, pf.y, pf.z)); +if (pf.y == 0) { +list.addLast(JU.P3.new3(1, 1, pf.z)); +list.addLast(JU.P3.new3(0, 0, pf.z)); +if (pf.z == 0) { +list.addLast(JU.P3.new3(1, 1, 1)); +list.addLast(JU.P3.new3(0, 0, 0)); +}}}if (pf.y == 0) { +list.addLast(JU.P3.new3(pf.x, 0, pf.z)); +list.addLast(JU.P3.new3(pf.x, 1, pf.z)); +if (pf.z == 0) { +list.addLast(JU.P3.new3(pf.x, 0, 0)); +list.addLast(JU.P3.new3(pf.x, 1, 1)); +}}if (pf.z == 0) { +list.addLast(JU.P3.new3(pf.x, pf.y, 0)); +list.addLast(JU.P3.new3(pf.x, pf.y, 1)); +if (pf.x == 0) { +list.addLast(JU.P3.new3(0, pf.y, 0)); +list.addLast(JU.P3.new3(1, pf.y, 1)); +}}} +}JS.UnitCell.removeDuplicates(list, i0, dup0, -1); +if (!tofractional) { +for (var i = list.size(); --i >= n0; ) this.toCartesian(list.get(i), true); + +}return list; +}, "JU.P3,~S,~A,JU.Lst,~N,~N,~N"); +Clazz.defineMethod(c$, "getFractionalOffset", +function(){ +return this.fractionalOffset; +}); +Clazz.defineMethod(c$, "getInfo", +function(){ +var m = this.getUnitCellMultiplied(); +if (m !== this) return m.getInfo(); +var info = new java.util.Hashtable(); +info.put("params", this.unitCellParams); +info.put("oabc", this.getUnitCellVectors()); +info.put("volume", Double.$valueOf(this.volume)); +info.put("matFtoC", this.matrixFractionalToCartesian); +info.put("matCtoF", this.matrixCartesianToFractional); +return info; +}); +Clazz.defineMethod(c$, "getQuaternionRotation", +function(abc){ +var a = JU.V3.newVsub(this.vertices[4], this.vertices[0]); +var b = JU.V3.newVsub(this.vertices[2], this.vertices[0]); +var c = JU.V3.newVsub(this.vertices[1], this.vertices[0]); +var x = new JU.P3(); +var v = new JU.P3(); +var mul = (abc.charAt(0) == '-' ? -1 : 1); +if (mul < 0) abc = abc.substring(1); +var abc0 = abc; +abc = JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(abc, "ab", "A"), "bc", "B"), "ca", "C"), "ba", "D"), "cb", "E"), "ac", "F"); +var isFace = !abc0.equals(abc); +var quadrant = (isFace ? 1 : 0); +if (abc.length == 2) { +quadrant = (abc.charAt(1)).charCodeAt(0) - 48; +abc = abc.substring(0, 1); +}var isEven = (quadrant % 2 == 0); +var axis = "abcABCDEF".indexOf(abc); +var v1; +var v2; +var P3; +switch (axis) { +case 7: +mul = -mul; +case 4: +a.cross(c, b); +quadrant = ((5 - quadrant) % 4) + 1; +case 0: +default: +v1 = a; +v2 = c; +P3 = b; +break; +case 8: +mul = -mul; +case 5: +mul = -mul; +b.cross(c, a); +quadrant = ((2 + quadrant) % 4) + 1; +case 1: +v1 = b; +v2 = a; +P3 = c; +mul = -mul; +break; +case 3: +mul = -mul; +case 6: +c.cross(a, b); +if (isEven) quadrant = 6 - quadrant; +case 2: +v1 = c; +v2 = a; +P3 = b; +if (!isFace && quadrant > 0) { +quadrant = 5 - quadrant; +}break; +} +if (quadrant > 0) { +if (mul > 0 != isEven) { +v2 = P3; +v1.scale(-1); +}}switch (quadrant) { +case 0: +default: +case 1: +break; +case 2: +v1.scale(-1); +v2.scale(-1); +break; +case 3: +v2.scale(-1); +break; +case 4: +v1.scale(-1); +break; +} +x.cross(v1, v2); +v.cross(x, v1); +return JU.Quat.getQuaternionFrame(null, v, x).inv(); +}, "~S"); +Clazz.defineMethod(c$, "getScaledCell", +function(withOffset){ +return this.getScaledCellMult(null, withOffset); +}, "~B"); +Clazz.defineMethod(c$, "getScaledCellMult", +function(mult, withOffset){ +var pts = new Array(8); +var cell0 = null; +var cell1 = null; +var isFrac = (mult != null); +if (!isFrac) mult = this.unitCellMultiplier; +if (withOffset && mult != null && mult.z == 0) { +cell0 = new JU.P3(); +cell1 = new JU.P3(); +JU.SimpleUnitCell.ijkToPoint3f(Clazz.floatToInt(mult.x), cell0, 0, 0); +JU.SimpleUnitCell.ijkToPoint3f(Clazz.floatToInt(mult.y), cell1, 0, 0); +cell1.sub(cell0); +}var scale = (isFrac || mult == null || mult.z == 0 ? 1 : Math.abs(mult.z)); +for (var i = 0; i < 8; i++) { +var pt = pts[i] = JU.P3.newP(JU.BoxInfo.unitCubePoints[i]); +if (cell0 != null) { +pts[i].add3(cell0.x + cell1.x * pt.x, cell0.y + cell1.y * pt.y, cell0.z + cell1.z * pt.z); +} else if (isFrac) { +pt.scaleT(mult); +}pts[i].scale(scale); +this.matrixFractionalToCartesian.rotTrans(pt); +if (!withOffset) pt.sub(this.cartesianOffset); +} +return pts; +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "getState", +function(){ +var s = ""; +if (this.fractionalOffset != null && this.fractionalOffset.lengthSquared() != 0) s += " unitcell offset " + JU.Escape.eP(this.fractionalOffset) + ";\n"; +if (this.unitCellMultiplier != null) s += " unitcell range " + JU.SimpleUnitCell.escapeMultiplier(this.unitCellMultiplier) + ";\n"; +return s; +}); +Clazz.defineMethod(c$, "getTensor", +function(vwr, parBorU){ +var t = (J.api.Interface.getUtil("Tensor", vwr, "file")); +if (parBorU[0] == 0 && parBorU[1] == 0 && parBorU[2] == 0) { +var f = parBorU[7]; +var eigenValues = Clazz.newFloatArray(-1, [f, f, f]); +return t.setFromEigenVectors(JS.UnitCell.unitVectors, eigenValues, "iso", "Uiso=" + f, null); +}t.parBorU = parBorU; +var Bcart = Clazz.newDoubleArray (6, 0); +var ortepType = Clazz.floatToInt(parBorU[6]); +if (ortepType == 12) { +Bcart[0] = parBorU[0] * 19.739208802178716; +Bcart[1] = parBorU[1] * 19.739208802178716; +Bcart[2] = parBorU[2] * 19.739208802178716; +Bcart[3] = parBorU[3] * 19.739208802178716 * 2; +Bcart[4] = parBorU[4] * 19.739208802178716 * 2; +Bcart[5] = parBorU[5] * 19.739208802178716 * 2; +parBorU[7] = (parBorU[0] + parBorU[1] + parBorU[3]) / 3; +} else { +var isFractional = (ortepType == 4 || ortepType == 5 || ortepType == 8 || ortepType == 9); +var cc = 2 - (ortepType % 2); +var dd = (ortepType == 8 || ortepType == 9 || ortepType == 10 ? 19.739208802178716 : ortepType == 4 || ortepType == 5 ? 0.25 : ortepType == 2 || ortepType == 3 ? Math.log(2) : 1); +var B11 = parBorU[0] * dd * (isFractional ? this.a_ * this.a_ : 1); +var B22 = parBorU[1] * dd * (isFractional ? this.b_ * this.b_ : 1); +var B33 = parBorU[2] * dd * (isFractional ? this.c_ * this.c_ : 1); +var B12 = parBorU[3] * dd * (isFractional ? this.a_ * this.b_ : 1) * cc; +var B13 = parBorU[4] * dd * (isFractional ? this.a_ * this.c_ : 1) * cc; +var B23 = parBorU[5] * dd * (isFractional ? this.b_ * this.c_ : 1) * cc; +parBorU[7] = Math.pow(B11 / 19.739208802178716 / this.a_ / this.a_ * B22 / 19.739208802178716 / this.b_ / this.b_ * B33 / 19.739208802178716 / this.c_ / this.c_, 0.3333); +Bcart[0] = this.a * this.a * B11 + this.b * this.b * this.cosGamma * this.cosGamma * B22 + this.c * this.c * this.cosBeta * this.cosBeta * B33 + this.a * this.b * this.cosGamma * B12 + this.b * this.c * this.cosGamma * this.cosBeta * B23 + this.a * this.c * this.cosBeta * B13; +Bcart[1] = this.b * this.b * this.sinGamma * this.sinGamma * B22 + this.c * this.c * this.cA_ * this.cA_ * B33 + this.b * this.c * this.cA_ * this.sinGamma * B23; +Bcart[2] = this.c * this.c * this.cB_ * this.cB_ * B33; +Bcart[3] = 2 * this.b * this.b * this.cosGamma * this.sinGamma * B22 + 2 * this.c * this.c * this.cA_ * this.cosBeta * B33 + this.a * this.b * this.sinGamma * B12 + this.b * this.c * (this.cA_ * this.cosGamma + this.sinGamma * this.cosBeta) * B23 + this.a * this.c * this.cA_ * B13; +Bcart[4] = 2 * this.c * this.c * this.cB_ * this.cosBeta * B33 + this.b * this.c * this.cosGamma * B23 + this.a * this.c * this.cB_ * B13; +Bcart[5] = 2 * this.c * this.c * this.cA_ * this.cB_ * B33 + this.b * this.c * this.cB_ * this.sinGamma * B23; +}return t.setFromThermalEquation(Bcart, JU.Escape.eAF(parBorU)); +}, "JV.Viewer,~A"); +Clazz.defineMethod(c$, "getUnitCellMultiplied", +function(){ +if (this.unitCellMultiplier == null || this.unitCellMultiplier.z > 0 && this.unitCellMultiplier.z == Clazz.floatToInt(this.unitCellMultiplier.z)) return this; +if (this.unitCellMultiplied == null) { +var pts = JU.BoxInfo.toOABC(this.getScaledCell(true), null); +this.unitCellMultiplied = JS.UnitCell.fromOABC(pts, false); +}return this.unitCellMultiplied; +}); +Clazz.defineMethod(c$, "getUnitCellMultiplier", +function(){ +return this.unitCellMultiplier; +}); +Clazz.defineMethod(c$, "isStandard", +function(){ +return (this.unitCellMultiplier == null || this.unitCellMultiplier.x == this.unitCellMultiplier.y); +}); +Clazz.defineMethod(c$, "getUnitCellVectors", +function(){ +var m = this.matrixFractionalToCartesian; +return Clazz.newArray(-1, [JU.P3.newP(this.cartesianOffset), JU.P3.new3(this.fix000(m.m00), this.fix000(m.m10), this.fix000(m.m20)), JU.P3.new3(this.fix000(m.m01), this.fix000(m.m11), this.fix000(m.m21)), JU.P3.new3(this.fix000(m.m02), this.fix000(m.m12), this.fix000(m.m22))]); +}); +c$.toTrm = Clazz.defineMethod(c$, "toTrm", +function(transform, trm){ +if (trm == null) trm = new JU.M4(); +JS.UnitCell.getMatrixAndUnitCell(null, transform, trm); +return trm; +}, "~S,JU.M4"); +c$.getMatrixAndUnitCell = Clazz.defineMethod(c$, "getMatrixAndUnitCell", +function(uc, def, retMatrix){ +if (def == null) def = "a,b,c"; +var m; +var pts = new Array(4); +var pt = pts[0] = JU.P3.new3(0, 0, 0); +pts[1] = JU.P3.new3(1, 0, 0); +pts[2] = JU.P3.new3(0, 1, 0); +pts[3] = JU.P3.new3(0, 0, 1); +var m3 = new JU.M3(); +if (JU.AU.isAD(def)) { +return JU.SimpleUnitCell.setAbcFromParams(def, pts); +}var isString = (typeof(def)=='string'); +if (isString) { +var sdef = def; +var strans; +var strans2 = null; +if (sdef.indexOf("a=") == 0) return JU.SimpleUnitCell.setAbc(sdef, null, pts); +var ret = new Array(1); +var ptc = sdef.indexOf(";"); +if (ptc >= 0) { +strans = sdef.substring(ptc + 1).trim(); +sdef = sdef.substring(0, ptc); +ret[0] = sdef; +strans2 = JS.UnitCell.fixABC(ret); +if (sdef !== ret[0]) { +sdef = ret[0]; +}} else if (sdef.equals("a,b,c")) { +strans = null; +} else { +ret[0] = sdef; +strans = JS.UnitCell.fixABC(ret); +sdef = ret[0]; +}sdef += ";0,0,0"; +while (sdef.startsWith("!!")) sdef = sdef.substring(2); + +var isRev = sdef.startsWith("!"); +if (isRev) sdef = sdef.substring(1); +if (sdef.startsWith("r;")) sdef = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c" + sdef.substring(1); +var symTemp = new JS.Symmetry(); +symTemp.setSpaceGroup(false); +var i = symTemp.addSpaceGroupOperation("=" + sdef, 0); +if (i < 0) return null; +m = symTemp.getSpaceGroupOperation(i); +(m).doFinalize(); +var t = new JU.P3(); +JS.UnitCell.addTrans(strans, t); +JS.UnitCell.addTrans(strans2, t); +m.setTranslation(t); +var isABC = (sdef.indexOf("c") >= 0); +if (isABC) { +m.transpose33(); +}if (isRev) { +m.invert(); +}if (retMatrix != null) { +retMatrix.setM4(m); +}if (uc == null) return pts; +} else if (retMatrix != null || uc == null) { +return null; +} else if (Clazz.instanceOf(def,"JU.M3")) { +m = JU.M4.newMV(def, new JU.P3()); +} else if (Clazz.instanceOf(def,"JU.M4")) { +m = def; +} else { +m = (def)[0]; +m.getRotationScale(m3); +m.rotTrans(pt); +uc.toCartesian(pt, false); +for (var i = 1; i < 4; i++) { +m3.rotate(pts[i]); +uc.toCartesian(pts[i], true); +} +return pts; +}m.getRotationScale(m3); +m.getTranslation(pt); +uc.toCartesian(pt, false); +for (var i = 1; i < 4; i++) { +m3.rotate(pts[i]); +uc.toCartesian(pts[i], true); +} +return pts; +}, "JU.SimpleUnitCell,~O,JU.M4"); +c$.addTrans = Clazz.defineMethod(c$, "addTrans", +function(strans, t){ +if (strans == null) return; +var atrans = JU.PT.split(strans, ","); +var ftrans = Clazz.newFloatArray (3, 0); +if (atrans.length == 3) { +for (var j = 0; j < 3; j++) { +var s = atrans[j]; +var sfpt = s.indexOf("/"); +if (sfpt >= 0) { +ftrans[j] = JU.PT.parseFloat(s.substring(0, sfpt)) / JU.PT.parseFloat(s.substring(sfpt + 1)); +} else { +ftrans[j] = JU.PT.parseFloat(s); +}} +}t.add3(ftrans[0], ftrans[1], ftrans[2]); +}, "~S,JU.P3"); +c$.fixABC = Clazz.defineMethod(c$, "fixABC", +function(ret){ +var tokens = JU.PT.split(ret[0], ","); +if (tokens.length != 3) return null; +var trans = ""; +var abc = ""; +var haveT = false; +for (var i = 0; i < 3; i++) { +var a = tokens[i]; +var p; +var n = 0; +for (p = a.length; --p >= 0; ) { +var c = a.charAt(p); +switch ((c).charCodeAt(0)) { +default: +if (c >= 'a') p = 0; +break; +case 43: +n = 1; +case 45: +p = -p; +break; +} +} +p = -1 - p; +if (p == 0) { +trans += ",0"; +abc += "," + a; +} else { +haveT = true; +trans += "," + a.substring(p + n); +abc += "," + a.substring(0, p); +}} +ret[0] = abc.substring(1); +return (haveT ? trans.substring(1) : null); +}, "~A"); +Clazz.defineMethod(c$, "getVertices", +function(){ +return this.vertices; +}); +Clazz.defineMethod(c$, "hasOffset", +function(){ +return (this.fractionalOffset != null && this.fractionalOffset.lengthSquared() != 0); +}); +Clazz.defineMethod(c$, "initOrientation", +function(mat){ +if (mat == null) return; +var m = new JU.M4(); +m.setToM3(mat); +this.matrixFractionalToCartesian.mul2(m, this.matrixFractionalToCartesian); +this.matrixCartesianToFractional.setM4(this.matrixFractionalToCartesian).invert(); +this.initUnitcellVertices(); +}, "JU.M3"); +Clazz.defineMethod(c$, "initUnitcellVertices", +function(){ +if (this.matrixFractionalToCartesian == null) return; +this.matrixCtoFNoOffset = JU.M4.newM4(this.matrixCartesianToFractional); +this.matrixFtoCNoOffset = JU.M4.newM4(this.matrixFractionalToCartesian); +this.vertices = new Array(8); +for (var i = 8; --i >= 0; ) this.vertices[i] = this.matrixFractionalToCartesian.rotTrans2(JU.BoxInfo.unitCubePoints[i], new JU.P3()); + +}); +Clazz.defineMethod(c$, "isSameAs", +function(f2c2){ +if (f2c2 == null) return false; +var f2c = this.getF2C(); +for (var i = 0; i < 3; i++) { +for (var j = 0; j < 4; j++) { +if (!JU.SimpleUnitCell.approx0(f2c[i][j] - f2c2[i][j])) return false; +} +} +return true; +}, "~A"); +Clazz.defineMethod(c$, "getF2C", +function(){ +if (this.f2c == null) { +this.f2c = Clazz.newFloatArray (3, 4, 0); +for (var i = 0; i < 3; i++) this.matrixFractionalToCartesian.getRow(i, this.f2c[i]); + +}return this.f2c; +}); +Clazz.defineMethod(c$, "isWithinUnitCell", +function(a, b, c, pt){ +switch (this.dimension) { +case 3: +if (pt.z < c - 1 - this.slop || pt.z > c + this.slop) return false; +case 2: +if (pt.y < b - 1 - this.slop || pt.y > b + this.slop) return false; +case 1: +if (pt.x < a - 1 - this.slop || pt.x > a + this.slop) return false; +} +return true; +}, "~N,~N,~N,JU.P3"); +Clazz.defineMethod(c$, "setCartesianOffset", +function(origin){ +this.cartesianOffset.setT(origin); +this.matrixFractionalToCartesian.m03 = this.cartesianOffset.x; +this.matrixFractionalToCartesian.m13 = this.cartesianOffset.y; +this.matrixFractionalToCartesian.m23 = this.cartesianOffset.z; +var wasOffset = this.hasOffset(); +this.fractionalOffset = JU.P3.newP(this.cartesianOffset); +this.matrixCartesianToFractional.rotate(this.fractionalOffset); +this.matrixCartesianToFractional.m03 = -this.fractionalOffset.x; +this.matrixCartesianToFractional.m13 = -this.fractionalOffset.y; +this.matrixCartesianToFractional.m23 = -this.fractionalOffset.z; +if (this.allFractionalRelative) { +this.matrixCtoFNoOffset.setM4(this.matrixCartesianToFractional); +this.matrixFtoCNoOffset.setM4(this.matrixFractionalToCartesian); +}if (!wasOffset && this.fractionalOffset.lengthSquared() == 0) this.fractionalOffset = null; +this.f2c = null; +}, "JU.T3"); +Clazz.defineMethod(c$, "setOffset", +function(pt){ +if (pt == null) return; +this.unitCellMultiplied = null; +var pt4 = (Clazz.instanceOf(pt,"JU.T4") ? pt : null); +var w = (pt4 == null ? 1.4E-45 : pt4.w); +var isCell555P4 = (w > 999999); +if (pt4 != null ? w <= 0 || isCell555P4 : pt.x >= 100 || pt.y >= 100) { +this.unitCellMultiplier = (pt.z == 0 && pt.x == pt.y && !isCell555P4 ? null : isCell555P4 ? JU.P4.newPt(pt4) : JU.P3.newP(pt)); +this.unitCellMultiplied = null; +if (pt4 == null || pt4.w == 0 || isCell555P4) return; +}if (this.hasOffset() || pt.lengthSquared() > 0) { +this.fractionalOffset = JU.P3.newP(pt); +}this.matrixCartesianToFractional.m03 = -pt.x; +this.matrixCartesianToFractional.m13 = -pt.y; +this.matrixCartesianToFractional.m23 = -pt.z; +this.cartesianOffset.setT(pt); +this.matrixFractionalToCartesian.rotate(this.cartesianOffset); +this.matrixFractionalToCartesian.m03 = this.cartesianOffset.x; +this.matrixFractionalToCartesian.m13 = this.cartesianOffset.y; +this.matrixFractionalToCartesian.m23 = this.cartesianOffset.z; +if (this.allFractionalRelative) { +this.matrixCtoFNoOffset.setM4(this.matrixCartesianToFractional); +this.matrixFtoCNoOffset.setM4(this.matrixFractionalToCartesian); +}this.f2c = null; +}, "JU.T3"); +Clazz.defineMethod(c$, "toFromPrimitive", +function(toPrimitive, type, uc, primitiveToCrystal){ +var offset = uc.length - 3; +var mf = null; +if (type == 'r' || primitiveToCrystal == null) { +switch ((type).charCodeAt(0)) { +default: +return false; +case 114: +JU.SimpleUnitCell.getReciprocal(uc, uc, 1); +return true; +case 80: +toPrimitive = true; +mf = JU.M3.newA9( Clazz.newFloatArray(-1, [1, 0, 0, 0, 1, 0, 0, 0, 1])); +break; +case 65: +mf = JU.M3.newA9( Clazz.newFloatArray(-1, [1, 0, 0, 0, 0.5, 0.5, 0, -0.5, 0.5])); +break; +case 66: +mf = JU.M3.newA9( Clazz.newFloatArray(-1, [0.5, 0, 0.5, 0, 1, 0, -0.5, 0, 0.5])); +break; +case 67: +mf = JU.M3.newA9( Clazz.newFloatArray(-1, [0.5, 0.5, 0, -0.5, 0.5, 0, 0, 0, 1])); +break; +case 82: +mf = JU.M3.newA9( Clazz.newFloatArray(-1, [0.6666667, -0.33333334, -0.33333334, 0.33333334, 0.33333334, -0.6666667, 0.33333334, 0.33333334, 0.33333334])); +break; +case 73: +mf = JU.M3.newA9( Clazz.newFloatArray(-1, [-0.5, .5, .5, .5, -0.5, .5, .5, .5, -0.5])); +break; +case 70: +mf = JU.M3.newA9( Clazz.newFloatArray(-1, [0, 0.5, 0.5, 0.5, 0, 0.5, 0.5, 0.5, 0])); +break; +} +if (!toPrimitive) mf.invert(); +} else { +mf = JU.M3.newM3(primitiveToCrystal); +if (toPrimitive) mf.invert(); +}for (var i = uc.length; --i >= offset; ) { +var p = uc[i]; +this.toFractional(p, true); +mf.rotate(p); +this.toCartesian(p, true); +} +return true; +}, "~B,~S,~A,JU.M3"); +Clazz.defineMethod(c$, "toUnitCell", +function(pt, offset){ +if (this.matrixCartesianToFractional == null) return; +if (offset == null) { +this.matrixCartesianToFractional.rotTrans(pt); +this.unitize(pt); +this.matrixFractionalToCartesian.rotTrans(pt); +} else { +this.matrixCtoFNoOffset.rotTrans(pt); +this.unitize(pt); +pt.add(offset); +this.matrixFtoCNoOffset.rotTrans(pt); +}}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "toUnitCellRnd", +function(pt, offset){ +if (this.matrixCartesianToFractional == null) return; +if (offset == null) { +this.matrixCartesianToFractional.rotTrans(pt); +this.unitizeRnd(pt); +this.matrixFractionalToCartesian.rotTrans(pt); +} else { +this.matrixCtoFNoOffset.rotTrans(pt); +this.unitizeRnd(pt); +pt.add(offset); +this.matrixFtoCNoOffset.rotTrans(pt); +}}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "unitize", +function(pt){ +this.unitizeDim(this.dimension, pt); +}, "JU.T3"); +Clazz.defineMethod(c$, "unitizeRnd", +function(pt){ +JU.SimpleUnitCell.unitizeDimRnd(this.dimension, pt, this.slop); +}, "JU.T3"); +c$.createCompatibleUnitCell = Clazz.defineMethod(c$, "createCompatibleUnitCell", +function(sg, params, newParams, allowSame){ +if (newParams == null) newParams = params; +var a = params[0]; +var b = params[1]; +var c = params[2]; +var alpha = params[3]; +var beta = params[4]; +var gamma = params[5]; +var n = (sg == null || sg.itaNumber == null ? 0 : JU.PT.parseInt(sg.itaNumber)); +var toHex = (n != 0 && JS.UnitCell.isHexagonalSG(n, null)); +var isHex = (toHex && JS.UnitCell.isHexagonalSG(-1, params)); +var toRhom = (n != 0 && sg.axisChoice == 'r'); +var isRhom = (toRhom && JU.SimpleUnitCell.isRhombohedral(params)); +if (toHex && isHex || toRhom && isRhom) { +allowSame = true; +}if (n > (allowSame ? 2 : 0)) { +var absame = JU.SimpleUnitCell.approx0(a - b); +var bcsame = JU.SimpleUnitCell.approx0(b - c); +var acsame = JU.SimpleUnitCell.approx0(c - a); +var albesame = JU.SimpleUnitCell.approx0(alpha - beta); +var begasame = JU.SimpleUnitCell.approx0(beta - gamma); +var algasame = JU.SimpleUnitCell.approx0(gamma - alpha); +if (!allowSame) { +if (a > b) { +var d = a; +a = b; +b = d; +}bcsame = JU.SimpleUnitCell.approx0(b - c); +if (bcsame) c = b * 1.5; +absame = JU.SimpleUnitCell.approx0(a - b); +if (absame) b = a * 1.2; +acsame = JU.SimpleUnitCell.approx0(c - a); +if (acsame) c = a * 1.1; +if (JU.SimpleUnitCell.approx0(alpha - 90)) { +alpha = 80; +}if (JU.SimpleUnitCell.approx0(beta - 90)) { +beta = 100; +}if (JU.SimpleUnitCell.approx0(gamma - 90)) { +gamma = 110; +}if (alpha > beta) { +var d = alpha; +alpha = beta; +beta = d; +}albesame = JU.SimpleUnitCell.approx0(alpha - beta); +begasame = JU.SimpleUnitCell.approx0(beta - gamma); +algasame = JU.SimpleUnitCell.approx0(gamma - alpha); +if (albesame) { +beta = alpha * 1.2; +}if (begasame) { +gamma = beta * 1.3; +}if (algasame) { +gamma = alpha * 1.4; +}}if (toHex) { +if (toRhom ? isRhom : isHex) { +} else if (sg.axisChoice == 'r') { +c = b = a; +if (!allowSame && alpha > 85 && alpha < 95) alpha = 80; +gamma = beta = alpha; +} else { +b = a; +alpha = beta = 90; +gamma = 120; +}} else if (n >= 195) { +c = b = a; +alpha = beta = gamma = 90; +} else if (n >= 75) { +b = a; +if (acsame && !allowSame) c = a * 1.5; +alpha = beta = gamma = 90; +} else if (n >= 16) { +alpha = beta = gamma = 90; +} else if (n >= 3) { +switch ((sg.uniqueAxis).charCodeAt(0)) { +case 97: +beta = gamma = 90; +break; +default: +case 98: +alpha = gamma = 90; +break; +case 99: +alpha = beta = 90; +break; +} +}}var isNew = !(a == params[0] && b == params[1] && c == params[2] && alpha == params[3] && beta == params[4] && gamma == params[5]); +newParams[0] = a; +newParams[1] = b; +newParams[2] = c; +newParams[3] = alpha; +newParams[4] = beta; +newParams[5] = gamma; +return isNew; +}, "JS.SpaceGroup,~A,~A,~B"); +c$.isHexagonalSG = Clazz.defineMethod(c$, "isHexagonalSG", +function(n, params){ +return (n < 1 ? JU.SimpleUnitCell.isHexagonal(params) : n >= 143 && n <= 194); +}, "~N,~A"); +c$.isMonoclinicSG = Clazz.defineMethod(c$, "isMonoclinicSG", +function(n){ +return (n >= 3 && n <= 15); +}, "~N"); +c$.isTetragonalSG = Clazz.defineMethod(c$, "isTetragonalSG", +function(n){ +return (n >= 75 && n <= 142); +}, "~N"); +c$.isPolarSG = Clazz.defineMethod(c$, "isPolarSG", +function(n){ +return (n == 1 || n >= 3 && n <= 5 || n >= 6 && n <= 9 || n >= 25 && n <= 46 || n >= 75 && n <= 80 || n >= 99 && n <= 110 || n >= 143 && n <= 146 || n >= 156 && n <= 161 || n >= 168 && n <= 173 || n >= 183 && n <= 186); +}, "~N"); +c$.removeDuplicates = Clazz.defineMethod(c$, "removeDuplicates", +function(list, i0, n0, n){ +if (n < 0) n = list.size(); +for (var i = i0; i < n; i++) { +var p = list.get(i); +for (var j = Math.max(i + 1, n0); j < n; j++) { +if (list.get(j).distanceSquared(p) < 1.96E-6) { +list.removeItemAt(j); +n--; +j--; +}} +} +}, "JU.Lst,~N,~N,~N"); +c$.unitVectors = Clazz.newArray(-1, [JV.JC.axisX, JV.JC.axisY, JV.JC.axisZ]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/UnitCellIterator.js b/config/plugins/visualizations/jmol/static/j2s/JS/UnitCellIterator.js new file mode 100755 index 000000000000..f24d85821657 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/UnitCellIterator.js @@ -0,0 +1,149 @@ +Clazz.declarePackage("JS"); +Clazz.load(["J.api.AtomIndexIterator"], "JS.UnitCellIterator", ["JU.Lst", "$.P3", "$.P3i", "JU.BoxInfo", "$.Logger", "$.Point3fi"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.atoms = null; +this.center = null; +this.translation = null; +this.nFound = 0; +this.maxDistance2 = 0; +this.distance2 = 0; +this.unitCell = null; +this.minXYZ = null; +this.maxXYZ = null; +this.t = null; +this.p = null; +this.ipt = -2147483648; +this.unitList = null; +this.done = false; +this.nAtoms = 0; +this.listPt = 0; +Clazz.instantialize(this, arguments);}, JS, "UnitCellIterator", null, J.api.AtomIndexIterator); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(unitCell, atom, atoms, bsAtoms, distance){ +this.unitCell = unitCell; +this.atoms = atoms; +this.addAtoms(bsAtoms); +this.p = new JU.P3(); +if (distance > 0) this.setCenter(atom, distance); +return this; +}, "J.api.SymmetryInterface,JM.Atom,~A,JU.BS,~N"); +Clazz.overrideMethod(c$, "setModel", +function(modelSet, modelIndex, zeroBase, atomIndex, center, distance, rd){ +}, "JM.ModelSet,~N,~N,~N,JU.T3,~N,J.atomdata.RadiusData"); +Clazz.overrideMethod(c$, "setCenter", +function(center, distance){ +if (distance == 0) return; +this.maxDistance2 = distance * distance; +this.center = center; +this.translation = new JU.P3(); +var pts = JU.BoxInfo.unitCubePoints; +var min = JU.P3.new3(3.4028235E38, 3.4028235E38, 3.4028235E38); +var max = JU.P3.new3(-3.4028235E38, -3.4028235E38, -3.4028235E38); +this.p = new JU.P3(); +var ptC = new JU.P3(); +ptC.setT(center); +this.unitCell.toFractional(ptC, true); +for (var i = 0; i < 8; i++) { +this.p.scaleAdd2(-2.0, pts[i], pts[7]); +this.p.scaleAdd2(distance, this.p, center); +this.unitCell.toFractional(this.p, true); +if (min.x > this.p.x) min.x = this.p.x; +if (max.x < this.p.x) max.x = this.p.x; +if (min.y > this.p.y) min.y = this.p.y; +if (max.y < this.p.y) max.y = this.p.y; +if (min.z > this.p.z) min.z = this.p.z; +if (max.z < this.p.z) max.z = this.p.z; +} +this.minXYZ = JU.P3i.new3(Clazz.doubleToInt(Math.floor(min.x)), Clazz.doubleToInt(Math.floor(min.y)), Clazz.doubleToInt(Math.floor(min.z))); +this.maxXYZ = JU.P3i.new3(Clazz.doubleToInt(Math.ceil(max.x)), Clazz.doubleToInt(Math.ceil(max.y)), Clazz.doubleToInt(Math.ceil(max.z))); +if (JU.Logger.debugging) JU.Logger.info("UnitCellIterator minxyz/maxxyz " + this.minXYZ + " " + this.maxXYZ); +this.t = JU.P3i.new3(this.minXYZ.x - 1, this.minXYZ.y, this.minXYZ.z); +this.nextCell(); +}, "JU.T3,~N"); +Clazz.overrideMethod(c$, "addAtoms", +function(bsAtoms){ +this.done = (bsAtoms == null); +if (this.done) return; +this.unitList = new JU.Lst(); +var cat = ""; +var ops = this.unitCell.getSymmetryOperations(); +var nOps = ops.length; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.atoms[i]; +for (var j = 0; j < nOps; j++) { +var pt = new JU.P3(); +pt.setT(a); +if (j > 0) { +this.unitCell.toFractional(pt, false); +ops[j].rotTrans(pt); +this.unitCell.unitize(pt); +this.unitCell.toCartesian(pt, false); +} else { +this.unitCell.toUnitCell(pt, null); +}var key = "_" + Clazz.floatToInt(pt.x * 100) + "_" + Clazz.floatToInt(pt.y * 100) + "_" + Clazz.floatToInt(pt.z * 100) + "_"; +if (cat.indexOf(key) >= 0) continue; +cat += key; +this.unitList.addLast( Clazz.newArray(-1, [a, pt])); +} +} +this.nAtoms = this.unitList.size(); +this.done = (this.nAtoms == 0); +if (JU.Logger.debugging) JU.Logger.info("UnitCellIterator " + this.nAtoms + " unique points found"); +}, "JU.BS"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +while ((this.ipt < this.nAtoms || this.nextCell())) { +this.p.add2(this.unitList.get(this.listPt = this.ipt++)[1], this.translation); +if ((this.distance2 = this.p.distanceSquared(this.center)) < this.maxDistance2 && this.distance2 > 0.1) { +this.nFound++; +return true; +}} +return false; +}); +Clazz.defineMethod(c$, "nextCell", +function(){ +if (this.done) return false; +if (++this.t.x >= this.maxXYZ.x) { +this.t.x = this.minXYZ.x; +if (++this.t.y >= this.maxXYZ.y) { +this.t.y = this.minXYZ.y; +if (++this.t.z >= this.maxXYZ.z) { +this.done = true; +this.ipt = this.nAtoms; +return false; +}}}this.translation.set(this.t.x, this.t.y, this.t.z); +this.unitCell.toCartesian(this.translation, false); +this.ipt = 0; +return true; +}); +Clazz.overrideMethod(c$, "next", +function(){ +return (this.done || this.ipt < 0 ? -1 : this.getAtom().i); +}); +Clazz.defineMethod(c$, "getAtom", +function(){ +return (this.unitList.get(this.listPt)[0]); +}); +Clazz.overrideMethod(c$, "foundDistance2", +function(){ +return (this.nFound > 0 ? this.distance2 : 3.4028235E38); +}); +Clazz.overrideMethod(c$, "getPosition", +function(){ +var a = this.getAtom(); +if (JU.Logger.debugging) JU.Logger.info("draw ID p_" + this.nFound + " " + this.p + " //" + a + " " + this.t); +if (this.p.distanceSquared(a) < 0.0001) return a; +var p = new JU.Point3fi(); +p.setT(this.p); +p.i = a.i; +p.sD = a.getElementNumber(); +return p; +}); +Clazz.overrideMethod(c$, "release", +function(){ +this.atoms = null; +this.center = null; +this.translation = null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/VTemp.js b/config/plugins/visualizations/jmol/static/j2s/JS/VTemp.js new file mode 100755 index 000000000000..503a530e2fb4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/VTemp.js @@ -0,0 +1,26 @@ +Clazz.declarePackage("JS"); +Clazz.load(["JU.BS", "$.V3"], "JS.VTemp", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vTemp = null; +this.vA = null; +this.vB = null; +this.vTemp1 = null; +this.vTemp2 = null; +this.vNorm2 = null; +this.vNorm3 = null; +this.vNorm4 = null; +this.bsTemp = null; +Clazz.instantialize(this, arguments);}, JS, "VTemp", null); +Clazz.prepareFields (c$, function(){ +this.vTemp = new JU.V3(); +this.vA = new JU.V3(); +this.vB = new JU.V3(); +this.vTemp1 = new JU.V3(); +this.vTemp2 = new JU.V3(); +this.vNorm2 = new JU.V3(); +this.vNorm3 = new JU.V3(); +this.vNorm4 = new JU.V3(); +this.bsTemp = new JU.BS(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/WyckoffFinder.js b/config/plugins/visualizations/jmol/static/j2s/JS/WyckoffFinder.js new file mode 100755 index 000000000000..74e0af93f13a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/WyckoffFinder.js @@ -0,0 +1,440 @@ +Clazz.declarePackage("JS"); +Clazz.load(["java.util.Hashtable", "JU.P3", "$.V3"], "JS.WyckoffFinder", ["JU.JSJSONParser", "$.M4", "$.Measure", "$.P4", "$.PT", "$.Rdr", "$.SB", "JS.SpaceGroup", "$.SymmetryOperation", "JV.FileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.positions = null; +this.npos = 0; +this.ncent = 0; +this.centerings = null; +this.centeringStr = null; +this.gpos = null; +Clazz.instantialize(this, arguments);}, JS, "WyckoffFinder", null); +/*LV!1824 unnec constructor*/Clazz.makeConstructor(c$, +function(map){ +if (map != null) { +this.gpos = map.get("gp"); +var wpos = map.get("wpos"); +this.positions = wpos.get("pos"); +this.npos = this.positions.size(); +var cent = wpos.get("cent"); +if (cent != null) { +this.ncent = cent.size(); +this.centeringStr = new Array(this.ncent); +this.centerings = new Array(this.ncent); +for (var i = this.ncent; --i >= 0; ) { +var s = cent.get(i); +this.centeringStr[i] = s; +this.centerings[i] = JS.SymmetryOperation.toPoint(s, null); +} +}}}, "java.util.Map"); +Clazz.defineMethod(c$, "getWyckoffFinder", +function(vwr, sg){ +var helper = JS.WyckoffFinder.helpers.get(sg.clegId); +if (helper == null) { +helper = JS.WyckoffFinder.createHelper(this, vwr, sg.clegId); +}if (helper == null) { +if (JS.WyckoffFinder.nullHelper == null) JS.WyckoffFinder.nullHelper = new JS.WyckoffFinder(null); +JS.WyckoffFinder.helpers.put(sg.clegId, JS.WyckoffFinder.nullHelper); +}return helper; +}, "JV.Viewer,JS.SpaceGroup"); +Clazz.defineMethod(c$, "findPositionFor", +function(p, letter){ +if (this.positions != null) { +var isGeneral = (letter.equals("G")); +for (var i = isGeneral ? 1 : this.npos; --i >= 0; ) { +var map = this.positions.get(i); +var l = map.get("label"); +if (isGeneral || l.equals(letter)) { +var coords = map.get("coord"); +if (coords != null) JS.WyckoffFinder.getWyckoffCoord(coords, 0, l).project(p); +return p; +}} +}return null; +}, "JU.P3,~S"); +Clazz.defineMethod(c$, "getInfo", +function(uc, p, returnType, withMult){ +var info = this.createInfo(uc, p, returnType, withMult); +return (info == null ? "?" : info); +}, "JS.UnitCell,JU.P3,~N,~B"); +c$.wrap = Clazz.defineMethod(c$, "wrap", +function(xyz, sb){ +return sb.appendC('(').append(xyz).appendC(')'); +}, "~S,JU.SB"); +Clazz.defineMethod(c$, "createInfo", +function(uc, p, returnType, withMult){ +switch (returnType) { +case 83: +return this.getCenteringStr(-1, ' ', null).toString().trim(); +case 67: +var ret = new Array(this.centerings.length); +for (var i = ret.length; --i >= 0; ) ret[i] = this.centerings[i]; + +return ret; +case 42: +var sb = new JU.SB(); +this.getCenteringStr(-1, '+', sb); +for (var i = this.npos; --i >= 0; ) { +var map = this.positions.get(i); +var label = (withMult ? "" + map.get("mult") : "") + map.get("label"); +sb.appendC('\n').append(label); +JS.WyckoffFinder.getList(i == 0 ? this.gpos : map.get("coord"), label, sb, (i == 0 ? this.ncent : 0)); +} +return sb.toString(); +case -1: +case -2: +case -3: +for (var i = this.npos; --i >= 0; ) { +var map = this.positions.get(i); +var label = (withMult ? "" + map.get("mult") : "") + map.get("label"); +if (i == 0) { +switch (returnType) { +case -1: +return label; +case -2: +return "(x,y,z)"; +case -3: +var sbc = new JU.SB(); +sbc.append(label).appendC(' '); +this.getCenteringStr(-1, '+', sbc).appendC(' '); +JS.WyckoffFinder.getList(this.gpos, label, sbc, this.ncent); +return sbc.toString(); +} +}var coords = map.get("coord"); +for (var c = 0, n = coords.size(); c < n; c++) { +var coord = JS.WyckoffFinder.getWyckoffCoord(coords, c, label); +if (coord.contains(this, uc, p)) { +switch (returnType) { +case -1: +return label; +case -2: +return coord.asString(null, true).toString(); +case -3: +var sbc = new JU.SB(); +sbc.append(label).appendC(' '); +this.getCenteringStr(-1, '+', sbc).appendC(' '); +JS.WyckoffFinder.getList(coords, label, sbc, 0); +return sbc.toString(); +} +}} +} +break; +case 71: +default: +var letter = "" + String.fromCharCode(returnType); +var isGeneral = (returnType == 71); +var tempP = new JU.P3(); +for (var i = isGeneral ? 1 : this.npos; --i >= 0; ) { +var map = this.positions.get(i); +var label = map.get("label"); +if (isGeneral || label.equals(letter)) { +var sbc = new JU.SB(); +if (isGeneral) sbc.append(label).appendC(' '); +var coords = (i == 0 ? this.gpos : map.get("coord")); +JS.WyckoffFinder.getList(coords, (withMult ? map.get("mult") : "") + letter, sbc, 0); +if (i > 0 && this.ncent > 0) { +var tempOp = new JU.M4(); +for (var j = 0; j < this.ncent; j++) { +this.addCentering(coords, this.centerings[j], tempOp, tempP, sbc); +} +}return sbc.toString(); +}} +break; +} +return null; +}, "JS.UnitCell,JU.P3,~N,~B"); +c$.createHelper = Clazz.defineMethod(c$, "createHelper", +function(w, vwr, clegId){ +var sgname = clegId; +var pt = sgname.indexOf(":"); +var itno = JU.PT.parseInt(pt < 0 ? sgname : sgname.substring(0, pt)); +if (itno >= 1 && itno <= 230) { +var resource = JS.WyckoffFinder.getResource(w, vwr, "ita_" + itno + ".json"); +if (resource != null) { +var its = resource.get("its"); +var map = null; +var haveMap = false; +for (var i = 0, c = its.size(); i < c; i++) { +map = its.get(i); +if (sgname.equals(map.get("clegId"))) { +haveMap = true; +break; +}} +if (!haveMap || map.containsKey("more")) map = JS.SpaceGroup.fillMoreData(map, clegId, itno, its.get(0)); +var helper = new JS.WyckoffFinder(map); +JS.WyckoffFinder.helpers.put(sgname, helper); +return helper; +}}return null; +}, "~O,JV.Viewer,~S"); +Clazz.defineMethod(c$, "getCenteringStr", +function(index, sep, sb){ +if (sb == null) sb = new JU.SB(); +if (this.ncent == 0) return sb; +if (index >= 0) { +sb.appendC(sep); +return JS.WyckoffFinder.wrap(this.centeringStr[index], sb); +}for (var i = 0; i < this.ncent; i++) { +sb.appendC(sep); +JS.WyckoffFinder.wrap(this.centeringStr[i], sb); +} +return sb; +}, "~N,~S,JU.SB"); +c$.getList = Clazz.defineMethod(c$, "getList", +function(coords, letter, sb, n){ +if (sb == null) sb = new JU.SB(); +n = (n == 0 ? coords.size() : Clazz.doubleToInt(coords.size() / (n + 1))); +for (var c = 0; c < n; c++) { +var coord = JS.WyckoffFinder.getWyckoffCoord(coords, c, letter); +sb.append(" "); +coord.asString(sb, false); +} +return sb; +}, "JU.Lst,~S,JU.SB,~N"); +Clazz.defineMethod(c$, "addCentering", +function(coords, centering, tempOp, tempP, sb){ +for (var n = coords.size(), c = 0; c < n; c++) { +var coord = coords.get(c); +sb.append(" "); +coord.asStringCentered(centering, tempOp, tempP, sb); +} +}, "JU.Lst,JU.P3,JU.M4,JU.P3,JU.SB"); +c$.getWyckoffCoord = Clazz.defineMethod(c$, "getWyckoffCoord", +function(coords, c, label){ +var coord = coords.get(c); +if ((typeof(coord)=='string')) { +coords.set(c, coord = new JS.WyckoffFinder.WyckoffCoord(coord, label)); +}return coord; +}, "JU.Lst,~N,~S"); +c$.getResource = Clazz.defineMethod(c$, "getResource", +function(w, vwr, resource){ +try { +var r = JV.FileManager.getBufferedReaderForResource(vwr, w, "JS/", "sg/json/" + resource); +var data = new Array(1); +if (JU.Rdr.readAllAsString(r, 2147483647, false, data, 0)) { +return new JU.JSJSONParser().parse(data[0], true); +}} catch (e) { +System.err.println(e.getMessage()); +} +return null; +}, "~O,JV.Viewer,~S"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.type = 0; +this.xyz = null; +this.label = null; +this.thisCentering = ""; +this.op = null; +this.point = null; +this.line = null; +this.plane = null; +Clazz.instantialize(this, arguments);}, JS.WyckoffFinder, "WyckoffCoord", null); +Clazz.makeConstructor(c$, +function(xyz, label){ +this.xyz = xyz; +this.label = label; +this.create(xyz); +}, "~S,~S"); +Clazz.defineMethod(c$, "asStringCentered", +function(centering, tempOp, tempP, sb){ +tempOp.setM4(this.op); +tempOp.add(centering); +tempOp.getTranslation(tempP); +tempP.x = tempP.x % 1; +tempP.y = tempP.y % 1; +tempP.z = tempP.z % 1; +tempOp.setTranslation(tempP); +sb.appendC(' '); +var s = "," + JS.SymmetryOperation.getXYZFromMatrixFrac(tempOp, false, true, false, true) + ","; +s = JU.PT.rep(s, ",,", ",0,"); +s = JU.PT.rep(s, ",+", ","); +sb.appendC('(').append(s.substring(1, s.length - 1)).appendC(')'); +}, "JU.P3,JU.M4,JU.P3,JU.SB"); +Clazz.defineMethod(c$, "contains", +function(w, uc, p){ +var slop = uc.getPrecision(); +this.thisCentering = null; +if (this.checkLatticePt(p, slop)) return true; +if (w.centerings == null) return false; +for (var i = w.centerings.length; --i >= 0; ) { +JS.WyckoffFinder.WyckoffCoord.pc.add2(p, w.centerings[i]); +uc.unitize(JS.WyckoffFinder.WyckoffCoord.pc); +if (this.checkLatticePt(JS.WyckoffFinder.WyckoffCoord.pc, slop)) { +this.thisCentering = w.centeringStr[i]; +return true; +}} +return false; +}, "JS.WyckoffFinder,JS.UnitCell,JU.P3"); +Clazz.defineMethod(c$, "project", +function(p){ +switch (this.type) { +case 1: +p.setT(this.point); +break; +case 2: +JU.Measure.projectOntoAxis(p, this.point, this.line, JS.WyckoffFinder.WyckoffCoord.vt); +break; +case 3: +JU.Measure.getPlaneProjection(p, this.plane, JS.WyckoffFinder.WyckoffCoord.vt, JS.WyckoffFinder.WyckoffCoord.vt); +p.setT(JS.WyckoffFinder.WyckoffCoord.vt); +break; +} +}, "JU.P3"); +Clazz.defineMethod(c$, "asString", +function(sb, withCentering){ +if (sb == null) sb = new JU.SB(); +JS.WyckoffFinder.wrap(this.xyz, sb); +if (withCentering && this.thisCentering != null) { +sb.appendC('+'); +JS.WyckoffFinder.wrap(this.thisCentering, sb); +}return sb; +}, "JU.SB,~B"); +Clazz.defineMethod(c$, "checkLatticePt", +function(p, slop){ +if (this.checkPoint(p, slop)) return true; +for (var z = 62, i = -2; i < 3; i++) { +for (var j = -2; j < 3; j++) { +for (var k = -2; k < 3; k++, z--) { +if (z == 0) continue; +JS.WyckoffFinder.WyckoffCoord.p3.set(i, j, k); +JS.WyckoffFinder.WyckoffCoord.p3.add(p); +if (this.checkPoint(JS.WyckoffFinder.WyckoffCoord.p3, slop)) { +System.out.println(this.label + " " + this.xyz + " found for " + i + " " + j + " " + k); +return true; +}} +} +} +return false; +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "checkPoint", +function(p, slop){ +var d = 1; +switch (this.type) { +case 1: +d = this.point.distance(p); +break; +case 2: +JS.WyckoffFinder.WyckoffCoord.p1.setT(p); +JU.Measure.projectOntoAxis(JS.WyckoffFinder.WyckoffCoord.p1, this.point, this.line, JS.WyckoffFinder.WyckoffCoord.vt); +d = JS.WyckoffFinder.WyckoffCoord.p1.distance(p); +break; +case 3: +d = Math.abs(JU.Measure.getPlaneProjection(p, this.plane, JS.WyckoffFinder.WyckoffCoord.vt, JS.WyckoffFinder.WyckoffCoord.vt)); +break; +} +return d < slop; +}, "JU.P3,~N"); +Clazz.defineMethod(c$, "create", +function(p){ +var nxyz = (p.indexOf('x') >= 0 ? 1 : 0) + (p.indexOf('y') >= 0 ? 1 : 0) + (p.indexOf('z') >= 0 ? 1 : 0); +var a = Clazz.newFloatArray (16, 0); +var v = JU.PT.split(this.xyz, ","); +JS.WyckoffFinder.WyckoffCoord.getRow(v[0], a, 0); +JS.WyckoffFinder.WyckoffCoord.getRow(v[1], a, 4); +JS.WyckoffFinder.WyckoffCoord.getRow(v[2], a, 8); +a[15] = 1; +this.op = JU.M4.newA16(a); +switch (nxyz) { +case 0: +this.type = 1; +this.point = JS.SymmetryOperation.toPoint(p, null); +break; +case 1: +this.type = 2; +JS.WyckoffFinder.WyckoffCoord.p1.set(0.19, 0.53, 0.71); +this.op.rotTrans(JS.WyckoffFinder.WyckoffCoord.p1); +JS.WyckoffFinder.WyckoffCoord.p2.set(0.51, 0.27, 0.6); +this.op.rotTrans(JS.WyckoffFinder.WyckoffCoord.p2); +JS.WyckoffFinder.WyckoffCoord.p2.sub2(JS.WyckoffFinder.WyckoffCoord.p2, JS.WyckoffFinder.WyckoffCoord.p1); +JS.WyckoffFinder.WyckoffCoord.p2.normalize(); +this.point = JU.P3.newP(JS.WyckoffFinder.WyckoffCoord.p1); +this.line = JU.V3.newV(JS.WyckoffFinder.WyckoffCoord.p2); +break; +case 2: +this.type = 3; +JS.WyckoffFinder.WyckoffCoord.p1.set(0.19, 0.51, 0.73); +this.op.rotTrans(JS.WyckoffFinder.WyckoffCoord.p1); +JS.WyckoffFinder.WyckoffCoord.p2.set(0.23, 0.47, 0.86); +this.op.rotTrans(JS.WyckoffFinder.WyckoffCoord.p2); +JS.WyckoffFinder.WyckoffCoord.p3.set(0.1, 0.2, 0.3); +this.op.rotTrans(JS.WyckoffFinder.WyckoffCoord.p3); +this.plane = JU.Measure.getPlaneThroughPoints(JS.WyckoffFinder.WyckoffCoord.p1, JS.WyckoffFinder.WyckoffCoord.p2, JS.WyckoffFinder.WyckoffCoord.p3, null, null, new JU.P4()); +break; +case 3: +break; +} +}, "~S"); +c$.getRow = Clazz.defineMethod(c$, "getRow", +function(s, a, rowpt){ +s = JU.PT.rep(s, "-", "+-"); +s = JU.PT.rep(s, "x", "*x"); +s = JU.PT.rep(s, "y", "*y"); +s = JU.PT.rep(s, "z", "*z"); +s = JU.PT.rep(s, "-*", "-"); +s = JU.PT.rep(s, "+*", "+"); +var part = JU.PT.split(s, "+"); +for (var p = part.length; --p >= 0; ) { +s = part[p]; +if (s.length == 0) continue; +var pt = 3; +if (s.indexOf('.') >= 0) { +var d = JU.PT.parseFloat(s); +a[rowpt + pt] = d; +continue; +}var i0 = 0; +var sgn = 1; +switch ((s.charAt(0)).charCodeAt(0)) { +case 45: +sgn = -1; +case 42: +i0++; +break; +} +var v = 0; +for (var i = s.length, f2 = 0; --i >= i0; ) { +var c = s.charAt(i); +switch ((c).charCodeAt(0)) { +case 120: +pt = 0; +v = 1; +break; +case 121: +pt = 1; +v = 1; +break; +case 122: +pt = 2; +v = 1; +break; +case 47: +f2 = 1; +v = 1 / v; +case 42: +sgn *= v; +v = 0; +break; +default: +var u = "0123456789".indexOf(c); +if (u < 0) System.err.println("WH ????"); +if (v == 0) { +v = u; +} else { +f2 = (f2 == 0 ? 10 : f2 * 10); +v += f2 * u; +}break; +} +} +a[rowpt + pt] = sgn * v; +} +}, "~S,~A,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.asString(null, false).toString(); +}); +c$.p1 = new JU.P3(); +c$.p2 = new JU.P3(); +c$.p3 = new JU.P3(); +c$.pc = new JU.P3(); +c$.vt = new JU.V3(); +/*eoif3*/})(); +c$.nullHelper = null; +c$.helpers = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/package.html b/config/plugins/visualizations/jmol/static/j2s/JS/package.html new file mode 100755 index 000000000000..4e611e84f016 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/package.html @@ -0,0 +1,886 @@ + + + + + + + +

    Jmol SMILES, Jmol SMARTS, Jmol bioSMILES, and Jmol bioSMARTS

    +Robert M. Hanson
    Department of Chemistry
    St. Olaf College
    8/26/2015 +

    +This document describes a specification for an extension of SMARTS for use in +3D molecular atom search and selection as well as biomolecular sequence and cross-link searching. +This specification was initially implemented in Jmol 12.0 and revised for Jmol 14.4. It is really a set of specifications: + +
      + +
    • Jmol SMILES A minor adaptation of SMILES, allowing comments and white space, and allowing more than 99 concurrently open connections. +
    • +
    • Jmol bioSMILES An extension of Jmol SMILES that incorporates both biomolecular sequence/cross-linking +information along with more standard molecular or ionic components, allowing for extensive searching of biomolecular frameworks. +The coding basically substitutes residues for SMILES atoms +and cross-linking and base pairing for SMILES "ring" connections. +
    • +
    • Jmol SMARTS An extension of SMARTS substructure searching that allows several more +features, including (among others) searching of +molecular distance, angle, and torsion measurements, searching of both standard SMARTS substructure and Jmol bioSEQUENCE information within a 3D molecular structure, +a standard SMILES string, Jmol SMILES string, or Jmol bioSMILES string. +
    • +
    • Jmol bioSMARTSAn extension of Jmol SMARTS that allows additional substructure search options relevant to biomolecules. +
    • +
    + The org.jmol.smiles package provides extensive functionality for selecting + atoms within a three-dimensional model based on SMILES and SMARTS strings. +

    Besides a presentation of general considerations, a detailed specification for syntax, and +the term aromatic is defined. +

    + + +

    +

    Comparision to Daylight SMILES

    + All single-component aspects of Daylight SMILES are implemented, including + aromaticity and atom- and bond-based stereochemistry ("chirality"). +

    +aromaticity + +
      +
    • The default Jmol SMILES and Jmol SMARTS defines "aromatic" unambiguously and strictly geometrically. However, starting +with Jmol 12.3.24, you can use the directive /aromaticStrict/ to add to that a 6-electron Hueckel model for specifying aromaticity. + see below. + +
    • Note that "aromatic" is not restricted to any specific subset of elements. +
    • For large biomolecule searches, the search for aromatic rings can be time consuming and unnecessary. +Adding the directive "/noAromatic/" at the beginning of the search pattern will turn off all checks for aromaticity +and may dramatically increase processing speed. +
    + +Jmol SMILES adds the following two aspects to Daylight SMILES: +
    +
    + + + +
    %(n)Jmol SMILES adds unlimited branching. Daylight SMILES +allows indication of "rings" using the digits 1-9, for example, C1CCCC1. Actually, these numbers +do not necessarily indicate rings. Rather, in association with "." component notation, +they may simply indicate connectivity. For example, ethane can be CC or C1.C1. +The original SMILES notation allows up to 99 open connections using $nn, where nn is 10-99. +In generalizing SMILES to Jmol SMILES and Jmol bioSMILES, since connections can represent hydrogen bonds between nucleic acid chains, it was necessary to allow more +than 99 open connections. Adding parentheses, for example %(130), allows for +an unlimited number of open connections. + +Note that despite this allowance, Jmol itself will not generate +SMILES strings using this notation unless it is absolutely necessary. + +
    //*...*//Jmol SMILES is free-formatted, allowing +standard whitespace as well as general comments in the form //*....*// anywhere within the string. +For example, note the difference when Jmol debugging is set ON for the show SMILES command: +

    $ show SMILES +
    +[n](C)1c2=O.c23=c4[n](C)c1=O.[n](C)3c=[n]4
    +
    +$ set debug; show SMILES +
    +//* N1 #1 *//	[n](
    +//* C2 #2 *//	C)1
    +//* C13 #13 *//	c2=
    +//* O14 #14 *//	O.
    +//* C12 #12 *//	c23=
    +//* C7 #7 *//	c4
    +//* N5 #5 *//	[n](
    +//* C6 #6 *//	C)
    +//* C3 #3 *//	c1=
    +//* O4 #4 *//	O.
    +//* N10 #10 *//	[n](
    +//* C11 #11 *//	C)3
    +//* C9 #9 *//	c=
    +//* N8 #8 *//	[n]4
    +
    +This allows a direct correlation between an actual atom in the 3D structure and its contribution to the SMILES string. +

    Comments are used in Jmol bioSMILES representations for indicating +the Jmol version used for its creation as well as chain and residue information: +

    $ load =1crn; print {*}.find("SEQUENCE") +
    +//* Jmol bioSMILES 14.3.16_2015.08.25  2015-08-25 09:07 1 *//
    +//* chain A protein 1 *// ~p~TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN //* 46 *//
    +
    +
    +
    +
    +Jmol bioSMILES adds the following to Jmol SMILES: +
    +
    + + + + + +
    ~X~ +Jmol bioSMILES separates all protein, nucleic, and carbohydrate polymers into separate SMILES components, +separated by ".". +The Jmol bioSEQUENCE type, consisting of a character surrounded by two tildes, + introduces each Jmol bioSEQUENCE component. +The character X may be one of p, d, r, or c, +indicating a protein, DNA, or RNA sequence, respectively. +Generally, the string will be +a sequence of standard single-character group symbols appropriate for that sequence type. + +For example, the Jmol bioSEQUENCE +string created using the commands load =1crn; print {*}.find("SEQ") is: +
    +~p~TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN
    +
    +When a group is a non-standard amino acid or is present, it is indicated by its residue name in brackets. + +For example, the Jmol bioSEQUENCE returned from load =4zyg; print {:A and protein}.find("SEQ") + is: +
    + ~p~MLVYGLYKSPLGYITVAKDDKGFIMLDFCDCVEGNSRDDSSFTEFFHK
    +  LDLYFEGKPINLREPINLKTYPFRLSVFKEVMKIPWGKVMTYKQIADSLGTSPRAVGMALSKNPILLIIP[SMC]HR
    +  VIAENGIGGYSRGVKLKRALLELEGVKIPE
    +
    +where [SMC] indicates S-methylcysteine. +

    +Components that are not bioSEQUENCE types will indicate connectivity to a bioSEQUENCE (if such connection exists) +via a fully qualified bioSMILES designation for the connected atoms. +For example, the magnesium atom component in PDB structure 1p9b is described by: +
    +[Mg]123456.O3[C]N([O])[C][C]([O])[O].[IMO.O1#8]4.[GDP.O2B#8]2.[GLY.O#8]5.[ASP.OD1#8]6.[GDP.O2A#8]1.
    +
    +(The element number, #8 here, allows searching these jmol bioSMILES strings themselves, in the absence of the associated model.) +Notice that connection 3 here is a to an unidentified ligand. Jmol bioSMILES only abbreviates groups that are within polymers. +Unconnected components such as water molecules will not be repeated; the Jmol bioSMILES representation of +a protein with associated water molecules will only show one component in the form: +
    +[O].
    +
    +
    +":" +Jmol bioSEQUENCES utilize the bond type ":" to indicate "cross-linked groups". +Recognized cross-linking includes hydrogen bonding between the purine N1 and pyrimidine N3 in nucleic acids, +hydrogen bonds created with create hbonds, cysteine-cysteine disulfide bonds +in proteins, and ether linkages between carbohydrate residues. +For instance, the commands load =3LL2; print {carbohydrate}.find("SEQ", true) reports for this branched carbohydrate: +
    +~c~[MAN]:1[MAN]:2[MAN].~c~[MAN]:2[MAN].~c~[MAN]:1[MAN][MAN]
    +
    +indicating a branched manose hexamer. No indication is given for exact atom-atom connectivity in the Jmol bioSEQUENCE; all connectivity is at the level of residues. +
    +
    +
    + + +

    Comparision to Daylight SMARTS

    +
      +
    • [H1] interpreted as [*H1] -- "an atom with one connected H atom". + +
    • Allows definition of [$XXX] variables: +
      +      Var x = '$R1="[CH3,NH2]";$R2="[OH]"; {a}[$R1]' // select aromatic atoms attached to CH3 or NH2  
      +      select within(SMARTS,@x)
      +
      +Note that these variables are any string whatsoever, not just atom sets. The syntax is simply: +
      • Each variable definition takes the form $ [name] =" [definition] " [comments] ; +
      • [name] must start with a letter and can contain any characters other than '$', '=', '(', and ']'. +
      • [definition] can be any valid SMARTS characters. +
      • [comments] can be any characters other than ';'. +
      • The actual pattern starts after the last variable definition. +
      • Nested variables are allowed, but note that this may require using the recursion syntax, $(...): +
        +      Var x = '$R1="[CH3,NH2]";$R2="[$($R1),OH]"; {a}[$R1]' // select aromatic atoms attached to CH3, NH2, or OH  
        +      select within(SMARTS,@x)
        +
        +
      • For $xxx="yyyy", all occurrances of the string "[$xxx]" are replaced within the pattern prior to parsing. +
      +
      + +
    • Implements nested ("recursive") SMARTS: +
       
      +      Var x = '$R1="[CH3,NH2]";$R2="[OH]";  {a}[$([$R1]),$([$R2])]' // aromatic attached to CH3, NH2, or OH
      +      select within(SMARTS,@x)
      +
      + Note that $(...) need not be within [...], and + wherever it is, it always means "just the first atom". +
    • + +
    • All primitives that are not element names, *, A, or a must be + enclosed in brackets. In addition, the following elements must be enclosed in brackets + because their two-letter combination Xy implies the non-aromatic element X attached + to the aromatic element y: Ac, Ba, Ca, Na, Pa, and Sc. + +
    • Allows any order of bracketed primitives: [H2C13] same as [13CH2]. + +
    • All atom and bond logic implemented: [X,!X,X&X,X&X&X;X&X]-,=X + +
    • "&" is optional: [13CH2] same as [13&C&H2] + except in cases of ambiguity with element symbols: [Rh] is rhodium, not [R&h]. + +
    • Jmol SMARTS does NOT implement: +
      • "zero-level parentheses", since the match is + always only within a given model (but note that you can still use "." + to indicate that the two search sections are not connected. +
      • "?" in atom stereochemistry ("chirality") because + 3D structures are always defined stereochemically. + +
      • "?" for bond stereochemistry, as 3D structures + are always defined stereochemically +
      + +
    + +primitives and in-line options + +

    +All Daylight SMARTS primitives are implemented. These include: +
    + + + + + + + + + + + + + + + + + +
    [Element]capitalized - standard notation Na, Si, etc. -- specific non-aromatic atom
    [element]uncapitalized - specific aromatic atom (as for standard notation, no limitations)
    *any atom
    Aany non-aromatic atom
    aany aromatic atom
    #atomic number
    (integer)mass number -- Note, however, that [H1] is [*H1], "any atom with one attached hydrogen", not unlabeled hydrogen, [1H].
    Ddegree - total number of connections
    Hexact hydrogen count
    h"implicit" hydrogen count (atoms are not in structure)
    Rin the specified number of rings
    rin ring of a given size (not restricted to SSSR set)
    vvalence (total bond order)
    Xcalculated connectivity, including implicit hydrogens
    xnumber of ring bonds
    @stereochemistry
    +
    + +Jmol SMARTS adds the following primitives: +
    +
    + + + + + + + + + + + + + +
    dnon-hydrogen degree -- number of non-hydrogen connections
    =Jmol atom index, for example: [=23]
    "xxx"atom type, in double quotes, for example: ["39"r5] (After calculate partialcharge this will be the MMFF94 atom type. [Jmol 12.3.24]
    $(select xxx)"external selection method. For Jmol, this is an atom expression. For example: [c$(select temperature>10)] [Jmol 12.3.26]
    r500a specifically aromatic 5-membered ring [Jmol 12.3.24]
    r600a specifically aromatic 6-membered ring [Jmol 12.3.24]
    number?mass number or undefined (so, for example, [C12?] means any carbon that isn't explicitly C13 or C14
    $n(pattern)A specific number of occurances of pattern. For example, C[$3(C=C)]C is synonymous with CC=CC=CC=CC.
    $min-max(pattern)A variable number of occurances of pattern. +For example: A[$0-2(C:G)]A is synonymous with AA or AC(:G)A or AC(:G)C(:G)A.
    residueName#resno^insCode.atomName#atomicNumber +All five fields are optional; only the period itself is required. +This primitive may appear with other primitives provided (a) it is first, and (b) it is followed by an operator ("," ,"&", or ";"). +This allows searching a bioSMILES string using SMARTS patterns that only involve standard atom types. In the above example, +notice that the connecting atoms to protein chains within the non-bioSEQUENCE component indicates the +connections to the protein using this extended notation. Thus, both the actual 3D model and the bioSMARTS string for 1d66 +can be searched using the SMARTS search "[Cd][S]" as well as the more specific search "Cd[*.SG]". +Wild cards provide additional options: [*#35.], [ALA.*], [*#*^A.] [*.*], [*.CA]; however, their presence is optional: [#35.], [ALA.], [^A.] [.], [.CA]. +The special designation "0" for an atom name, as in [GLY.0], indicates the "lead atom" -- the alpha carbon for proteins, +the phosphorus atom in nucleic acids, or the anomeric carbon in carbohydrates. +
    +
    +
    +Jmol SMARTS adds the following in-line options: +
    +
    + + + + + + + + +
    +/..../ +processing directives Jmol recognizes /..../ at the beginning of a pattern as processing directives. +These directives can be introduced individually or as groups. They are not case-sensitive. +/noaromatic/ /nostereo/ is read the same as /noAromatic,noStereo/. +
    • +invertStereo reverses the sense of chirality (R-, S- stereochemistry). Double-bond stereochemistry is not reverse. +noStereo turns off all stereochemical checking. +
    • aromaticDouble allows for using "=" between two aromatic atoms to indicate an explicitly double aromatic bond. +To specify an explicitly single aromatic bond, use @&!=. +aromaticStrict uses a 6-electron Hueckel model for specifying aromaticity. +
    • noAromatic turns off all aromaticity checks.It may be desirable when no distinction between +aromatic and nonaromatic atoms is desired. For large biomolecules /noAromatic/ can +dramatically improve processing speed when no check for aromaticity is necessary. +All atoms are then considered NOT aromatic. +
    +
    {...} + +

    +Jmol atom selection + +Then general way within Jmol to select atoms based on SMARTS searches is to use select search("..."). +To assign variables to the results of a search, one can use the find() command. + +However, to select one or more atoms within the found pattern, simply enclose the desired atoms in { }: + select search("{C}C=O"), for example, returns all alpha carbons, + and select search("~d~G{C}A") returns all DNA cytidines that are in GCA sequences. + +

    No valence calculation is done to add any additional hydrogens to unbracketed +atoms. "CCC" is the same as "[C][C][C]". only unbracketed or bracketed hydrogen atoms such as H[C]C or [H] +or [2H] are selected; connected hydrogen atoms as in [CH3] are not selected. + +
    (.measure)The extension capitalizes on the fact that in a standard SMARTS string, period "." cannot +ever appear immediately following an open parenthesis "(". Using this fact, the format involves the following: +
    +  "(." [single character type - "d" (distance), "a" (angle), or "t" (torsion)] 
    +         [optional numeric identifier] ":" [optional "!" (not)] [ranges] ")" 
    +
    +where + [ranges] is one or more ranges in the form [minimum value], [maximum value] separated by commas. +That is, one or more +This extension must appear immediately following an element symbol or a bracketed atom expression. +The separators "," or "-" between minimum and maximum values are equivalent. +For example, the following will find all aliphatic carbon-carbon bonds that are between 1.5 and 1.6 angstroms long. +
    +select search("C(.d:1.5-1.6)C")
    +
    +The following will select for all 1,2-trans-diaxial methyl groups on a cyclohexane ring, finding all torsions that are outside +the range -160 to 160 degrees: +
    +select search("{[CH3]}(.t:!-160,160)CC{[CH3]}")
    +
    +The following will select for all 1,2-trans-diequatorial methyl groups on a cyclohexane ring +by selecting for all adjacent methyl groups that are anit to a ring atom: +
    +select search("{[$([CH3](.t:!-160,160)CC[Cr6])]}CC{[$([CH3](.t:!-160,160)CC[Cr6])]}")
    +
    +The following will select for all gauche-dimethyl groups on a cyclohexane ring: +
    +select search("{[CH3]}(.t:50,70,-50,-70)CC{[CH3]}")
    +
    +and the following prints the number of gauche interactions. +Division by two is necessary in this case because of the symmetry involved. +
    +print compare({*},{*},"MAP","[CH3](.t:50,70,-70,-50)CC[CH3]").length/2
    +
    + +The default in terms of specifying which atoms are involved is simply "the next N-1 atoms," where N is 2, 3, or 4. +For more complicated patterns, one can designate the specific atoms in the measurement using a numeric +identifier after the measurement type. The following will +target the bond angle across the carbonyl group in the backbone of a peptide: +
    +select search("[*.CA](.a1:105-110)C(.a1)(=O)N(.a1)")
    +
    +Designations can overlap; one simply adds whatever (.xn) designation is wanted after the desired atoms: +
    +select search("C(.a1:105,108)C(.a1)(.a2:110,130)C(.a1)(.a2)C(.a2)")
    +
    +In Jmol, this capability is extended to the measure command for easy access to SMARTS-based measurements: +
    +select *
    +measure search("C(.a1:110,130)C(.a1)(=O)C(.a1)")
    +
    +Note that the atoms in no way have to be connected. The only restriction is that the three markers for an angle +or the four markers for a torsion will be identified in order from left to right within the SMARTS string. The following, +for example, will find all carbonyl oxygen atoms that are within 5 angstroms of each other: +
    +select search("{O}(.d1:0,5)=C.{O}(.d1)=C")
    +
    +The "." here indicating "not bonded." {O} specifies that although we want to find the entire set, we only +want to select the oxygen atoms. The close of the selection brace may appear before or after the (.x) designation. +
    pattern1 || pattern2 "||" indicates "or" and allows searching for multiple patterns, which may overlap. +For example: select search("c{O} || c{C}"). Note that the "||" syntax is an alternative to using "[,]", +in this case being equivalent to (and slightly slower than) select search("c{[O,C]}").
    +
    +
    +Jmol bioSMARTS adds the following pattern options to Jmol SMARTS: +
    +
    + + + + + + + + + +
    +"~" +Any biopolymer. +
    +"~n~" +DNA or RNA +
    +"+" + +Jmol bioSMARTS adds the "+" bond type to indicate standard sequence. The Jmol bioSMARTS +pattern "~p~C+C+C" is the same as "~p~CCC". In conjunction with the cross-linking +type ":", one can do searches for double-stranded nucleic acids quite easily. +~d~CCC:GGG would be three CG base-pairs (because the two strands are going in opposite direction). +Note that Jmol atom selection can be specified by For example, select search("[CYS.CA][PRO.CB]") +would select just the alpha carbon of cysteine and the beta carbon of an adjacent proline. + + +
    branchingBranching (cross-linking) can also be indicated using the standard +SMILES (...) notation. So, for example, ~d~C(G)C(G)C(G) indicates three CG base pairs. +Ring notation can also be used: C:1CC(GGG:1) is the same three CG base pairs. + +

    An empty branch, ~C(), indicates "not cross-linked" -- in this case +a cysteine without a disulphide bond or a cytidine that is not base-paired. + + +
    +
    + + +implicit hydrogen count + +
    • + +The primitives h (implicit hydrogen count) and X (total connections, including implicit hydrogens) +require analysis of bonding around a model atom to determine the number of missing ("implicit") hydrogen atoms based on a "target valence." +Models that specify only "aromatic" or "partial" bonding may produce ambiguous results, and for that reason, +primitives X and h are not recommended for use. Other primitives, such as D, d, and v should be more useful. +The analysis Jmol uses here is the same as for how Jmol calculates the number of hydrogens to add for the calculate hydrogens command and +includes: +
      1. Assign the target valence TV as follows: +
        • For C and Si, TV = 4. +
        • For B, N, and P, TV = 3. +
        • For O and S, TV = 2. +
        • For F, Cl, Br, and I, TV = 1. +
        • For all other atoms, TV = 0. +
        +
      2. Obtain the formal charge on the atom, C. +
      3. Group IV elements such as carbon are unique, in that their cations are valence-poor, not valence-rich. + So for carbon and silicon, subtract the ABSOLUTE VALUE of C from the target valence. + In all other cases, let TV = TV + C. +
      4. Determine the overall valence of the atom, OV. This is calculated by adding up all the bond orders to the atom. +
      5. Subtract OV from TV to get the number of implicit hydrogen atoms. If this number is less than zero, assign zero. +
      +
    • Thus, the implicit hydrogen count is: +
      • 0 for all atoms other than {B,C,N,O,P,Si,S} +
      • 0 for BR3 +
      • 0 for CR4, 1 for CR3, 2 for CR2, 3 for CR +
      • 0 for CR3(+), 0 for CR3(-) +
      • 0 for R=CR2, 1 for R=CR, 2 for R=C, 1 for C#R (triple bond) +
      • 0 for NR3, 1 for NR2, 2 for NR +
      • 0 for RN=R, 1 for R=N +
      • 1 for NR3(+), 1 for R=NR(+), 1 for RN(-) +
      • 0 for OR2, 0 for O=R, 1 for OR +
      • 0 for RO(-), 2 for RO(+) +
      +
    + + +

    +

    Detailed Jmol SMILES/bioSMILES Specification

    +

    +
     
    +      # note: prior to parsing, all white space is removed
    +       
    +   [smilesDef] == [preface] [smiles]
    +   [preface] == { [directiveDefs] | NULL } 
    +   [directiveDefs] == { [directiveDef] || [directiveDef] [directiveDefs] }
    +   [directiveDef] == "/" [processingDirectives] "/"
    +   [processingDirectives] == { [processingFlag] | [processingDirective] [processingDirectives] }
    +   [processingFlag] == { "noAromatic" | "aromaticDefined" | "aromaticStrict" | "noStereo" | "invertStereo"} (case-insensitive)
    +      # note: the noAromatic directive indicates to not distinguish between
    +      #       aromatic/aliphatic searches -- "C" and "c"
    +      # note: the noStereo directive turns off all stereochemical testing
    +      # note: thus, both "/noAromatic//noStereo/" and "/noAromatic noStereo/" are valid 
    +   [smiles] == { [entity] | [entity] "." [entity] }
    +   [entity] == { [bioSequence] | [molecularSequence] }
    +   [molecularSequence] = [node][connections] 
    +   [node] == { [atomExpression] | [connectionPointer] }
    +
    +   [atomExpression] = { [unbracketedAtomType] 
    +                             | "[" [bracketedExpression] "]" }
    +   
    +   [unbracketedAtomType] == [atomType] 
    +                                 & ! { "Ac" | "Ba" | "Ca" | "Na" | "Pa" | "Sc"
    +                                     | "ac" | "ba" | "ca" | "na" | "pa" | "sc" }
    +      # note: Brackets are required for these elements: [Na], [Ca], etc.
    +      #       These elements Xy are instead interpreted as "X" "y", a single-letter
    +      #       element followed by an aromatic atom. 
    +      
    +   [atomType] == { [validElementSymbol] | [aromaticType] }
    +   [validElementSymbol] == (see Elements.java; 
    +                            including Xx and only through element 109)
    +   [aromaticType] == { [validElementSymbol].toLowerCase() }
    +       
    +   [bracketedExpression] == { "[" [atomPrimitives] "]" } 
    +   
    +   [atomPrimitives] == { [atom] | [atom] [atomModifiers] }
    +   [atom] == { [isotope] [atomType] | [atomType] } 
    +   [isotope] == [digits]
    +       # note -- isotope mass must come before the element symbol. 
    +   [digits] == { [digit] | [digit] [digits] }
    +   [digit] == { "0" | "1" | "2" | "3" | "4" | "5" | "6" | 7" | "8" | "9" }
    +   [atomModifiers] == { [atomModifier] | [atomModifier] [atomModifiers] }
    +   [atomModifier] == { [charge] | [stereochemistry] | [H_Prop] }
    +   [charge] == { "-" [digits] | "+" [digits] | [plusSet] | [minusSet] }
    +   [plusSet] == { "+" | "+" [plusSet] }
    +   [minusSet] == { "-" | "-" [minusSet] }
    +   [stereochemistry] == { "@"           # anticlockwise
    +                              | "@@"    # clockwise
    +                              | "@" [stereochemistryDescriptor] 
    +                              | "@@" [stereochemistryDescriptor] }
    +   [stereochemistryDescriptor] == [stereoClass] [stereoOrder]
    +   [stereoClass] == { "AL" | "TH" | "SP" | "TP" | "OH" }
    +   [stereoOrder] == [digits]
    +   
    +   [connectionPointer] == { "%" [digit][digit] | [digit] | "%(" [digits] ")"}
    +      # note: all connectionPointers must have a second matching connectionPointer 
    +      #       and must be preceded by an atomExpression for the 
    +      #       first occurance and either an atomExpression or a bond
    +      #       for the second occurance
    +      # note: Jmol bioSMARTS extends the possible number of rings to > 100 by 
    +      #       allowing %(n)
    +
    +   [connections] == [connection] | NULL }
    +   [connection] == { [branch] | [bond] [node] } [connections]
    +   [branch] == { "(" { [smiles] | [bond] [smiles] } ")" | "()" }
    +      # note: empty parentheses "()" are ignored in SMILES and bioSMILES
    +   [bond] == { "-" | "=" | "#" | "." | "/" | "\\" | ":" | NULL
    +      # note: Jmol will not match two totally independent molecular pieces. For example,
    +      #       Jmol will not math [Na+].[Cl-]. However, "." can be used to clarify a
    +      #       structure that has "ring" bond notation:
    +      #       CC1CCC.C1CC   is a valid structure.
    +      # note: bioSEQUENCE uses ":" to indicate "cross-linked", which is the default for branches
    +
    +   [bioSequence] == [bioCode] [bioNode] [connections]
    +   [bioCode] == { "~" | "~" [bioType] "~" }
    +      # note: The "~" must be the first character in a component and must be repeated 
    +      #       for each component (separated by ".")
    +   [bioType] == { "p" | "n" | "r" | "d" }
    +      # note: protein, nucleic, RNA, DNA
    +   [bioNode] == { "[" [bioResidueName] "." [bioAtomName] "]" 
    +                 | "[" [bioResidueName] "." [bioAtomName] "#" [atomicNumber] "]" 
    +                 | [bioResidueCode] } 
    +   [atomicNumber] == [digits]
    +   [bioResidueName] == { "ARG" | "GLY" ... } (case-insensitive) 
    +   [bioAtomName] == {"C" | "CA" | "N" ... } (case-insensitive)
    +   [bioResidueCode] == { "A" | "R" | "G" ... } (case-sensitive)
    +      # note: In a BioSEQUENCE, residues are designated using standard 1-letter-code group names
    +      #       or bracketed residues [xxx] with optional atoms specified: [ARG], [CYS.SG]. 
    +
    +

    + +

    Detailed Jmol SMARTS/Jmol bioSMARTS Specification

    +

    +
     
    +
    + ######## GENERAL ########
    +
    +      # note: prior to parsing, all white space is removed
    +
    +   [smartDef] == [preface] [smartsSet]
    +   [preface] == { [directiveDefs] [variableDefs] | [variableDefs] | NULL } 
    +   [directiveDefs] == { [directiveDef] || [directiveDef] [directiveDefs] }
    +   [directiveDef] == "/" [processingDirectives] "/"
    +   [processingDirectives] == { [processingDirective] | [processingDirective] [processingDirectives] }
    +   [processingFlag] == { "noAromatic" | "aromaticDefined" | "aromaticStrict" | "noStereo" | "invertStereo"} (case-insensitive)
    +      # note: the noAromatic directive indicates to not distinguish between
    +      #       aromatic/aliphatic searches -- "C" and "c"
    +      # note: the noStereo directive turns off all stereochemical testing
    +      # note: thus, both "/noAromatic//noStereo/" and "/noAromatic noStereo/" are valid 
    +   [variableDefs] == [variableDef] | [variableDef] [variableDefs]
    +   [variableDef] ==  "$" [label] "=" "\"" [smarts] "\"" [comments] ";"
    +   [label] == 'A-Z' [any characters other than "=", "(", or "$"]
    +   [comments] == [any characters other than ";"]
    +      # note: Variable definitions must be parsed first. 
    +      #       After that, all variable references [$XXXX] are replaced
    +      
    +   [smartsSet] == { [smarts] | [smarts] "||" [smartsSet] }
    +      # note: Jmol adds the "or" operation "||", for example: "C=O || C=N"
    +      #       which, in this case, could also be written as "C=[O,N]"
    +      #       Jmol preprocesses these sets, evaluates them independently, and then
    +      #       combines them.
    +      
    +   [smarts] == { [node3D] [connections] | [bioSequence] } 
    +   [connections] == [connection] | NULL }
    +   [connection] == { [branch] | [bondExpression] [node3D] } [connections]
    +   [branch] == { "(" { [smarts] | [bondExpression] [smarts] } ")" | "()" }
    +      # note: Default bonding for a branch is single for SMARTS or cross-linked (:) for bioSEQUENCE
    +      # note: "()" is ignored in SMARTS and indicates "not cross-linked" in bioSEQUENCE
    +   
    + ######## ATOMS ########
    +    
    +   [node3D] == { [atomExpression] | [atomExpression] "(." [measure] ")" | [connectionPointer] }
    +   [atomExpression] = { [unbracketedAtomType]
    +                             | [bracketedExpression] 
    +                             | [multipleExpression]
    +                             | [nestedExpression] }
    +   
    +   
    +   [unbracketedAtomType] == [atomType] 
    +                                 & ! { "Ac" | "Ba" | "Ca" | "Na" | "Pa" | "Sc"
    +                                     | "ac" | "ba" | "ca" | "na" | "pa" | "sc" }
    +      # note: Brackets are required for these elements: [Na], [Ca], etc.
    +      #       These elements Xy are instead interpreted as "X" "y", a single-letter
    +      #       element followed by an aromatic atom. 
    +      # note: in a bioSEQUENCE, all atom types are 1-letter code group names
    +      
    +   [atomType] == { [validElementSymbol] | "A" | [aromaticType] | "*" }
    +   [validElementSymbol] == (see Elements.java; 
    +                            including Xx and only through element 109)
    +   [aromaticType] == { "a" | [validElementSymbol].toLowerCase() }
    +       
    +   [bracketedExpression] == "[" { [atomOrSet] | [atomOrSet] ";" [atomAndSet] } "]" 
    +   
    +   [atomOrSet] == { [atomAndSet] | [atomAndSet] "," [atomAndSet] }
    +   [atomAndSet] == { [atomPrimitives] | [atomPrimitives] "&" [atomAndSet]
    +                              | "!" [atomPrimitive] 
    +                              | "!" [atomPrimitive] "&" [atomAndSet] }
    +                              
    + ######## ATOM PRIMITIVES ########
    +
    +   [atomPrimitives] == { [atomPrimitive] | [atomPrimitive] [atomPrimitives] }
    +       # note -- if & is not used, certain combinations of primitiveDescritors
    +       #         are not allowed. Specifically, combinations that together
    +       #         form the symbol for an element will be read as the element (Ar, Rh, etc.)
    +       #         when NOT followed by a digit and no element has already been defined 
    +       #         So, for example, [Ar] is argon, [Ar3] is [A&r3], [ORh] is [O&R&h],  
    +       #         but [Ard2] is [Ar&d2] -- "argon with two non-hydrogen connections"
    +       #         Also, "!" may not be use with implied "&". 
    +       #         Thus, [!a], [!a&!h2], and [h2&!a] are all valid, but [!ah2] is invalid.             
    +   [atomPrimitive] == { [isotope] | [atomType] | [charge] | [stereochemistry]
    +                              | [a_Prop] | [A_Prop] | [D_Prop] | [H_Prop] | [h_Prop] 
    +                              | [R_Prop] | [r_Prop] | [v_Prop] | [X_Prop]
    +                              | [x_Prop] | [at_Prop] | [nestedExpression] }
    +   [isotope] == [digits] | [digits] "?"
    +       # note -- isotope mass may come before or after element symbol, 
    +       #         EXCEPT "H1" which must be parsed as "an atom with a single H" 
    +   [digits] == { [digit] | [digit] [digits] }
    +   [digit] == { "0" | "1" | "2" | "3" | "4" | "5" | "6" | 7" | "8" | "9" }
    +   [charge] == { "-" [digits] | "+" [digits] | [plusSet] | [minusSet] }
    +   [plusSet] == { "+" | "+" [plusSet] }
    +   [minusSet] == { "-" | "-" [minusSet] }
    +   [stereochemistry] == { "@"           # anticlockwise
    +                              | "@@"    # clockwise
    +                              | "@" [stereochemistryDescriptor] 
    +                              | "@@" [stereochemistryDescriptor] }
    +   [stereochemistryDescriptor] == [stereoClass] [stereoOrder]
    +   [stereoClass] == { "AL" | "TH" | "SP" | "TP" | "OH" }
    +   [stereoOrder] == [digits]
    +       # note -- "?" here (unspecified) is not relevant in Jmol SMARTS, only Jmol bioSMARTS 
    +   
    +   [A_Prop] == "#" [digits]           # elemental atomic number
    +   [a_Prop] == "=" [digits]           # Jmol atom index (starts with 0)
    +   [D_Prop] == { "D" [digits] | "D" } # degree -- total number of connections 
    +                                      #   excludes implicit H atoms; default 1
    +   [d_Prop] == { "d" [digits] | "d" } # degree -- non-hydrogen connections
    +                                      #   default 1 
    +   [H_Prop] == { "H" [digits] | "H" } # exact hydrogen count 
    +                                      #   excludes implicit H atoms
    +   [h_Prop] == { "h" [digits] | "h" } # implicit hydrogens -- "h" indicates "at least one"
    +                                      #   (see note below)
    +   [R_Prop] == { "R" [digits] | "R" } # ring membership; e.g. "R2" indicates "in two rings"
    +                                      #   "R" indicates "in a ring" 
    +                                      #   !R" or "R0" indicates "not in any ring"
    +   [r_Prop] == { "r" [digits] | "r" } # in ring of size [digits]; "r" indicates "in a ring"
    +                                      #   r500 and r600 match specifically aromatic 
    +                                      #   5- and 6-membered rings, respectively [Jmol 12.3.24]
    +   [v_Prop] == { "v" [digits] | "v" } # valence -- total bond order (counting double as 2, e.g.)
    +   [X_Prop] == { "X" [digits] | "X" } # connectivity -- total number of connections
    +                                      #   includes implicit H atoms
    +   [x_Prop] == { "x" [digits] | "x" } # ring connectivity -- total ring connections
    +   [at_Prop] == { "\"" [charsExceptDoubleQuote] | "\"" } # atom type (in double quotes) [ Jmol 12.3.24]
    +   
    + ######## Nested and Multiple Expressions ########
    + 
    +   [nestedExpression] == "$(" [atomExpression] ")" | "$(select" [contextualSearchPhrase] ")" 
    +      # note: nestedExpressions return only the first atom as a match when an atom expression 
    +      #       is involved, not all atoms in the expression.
    +      
    +   [contextualSearchPhrase] == [any characters with well-matched "(" and ")"]
    +      # note: the contextual search phrase is to be processed by the context implementing
    +      #       the SMARTS. In the case of Jmol, [contextualSearchPhrase] is any Jmol
    +      #       atom expression that can be in a standard Jmol SELECT command. 
    +
    +   [multipleExpression] == { "[$" [nTimes] "(" [orExpression] ")]" 
    +                             | "[$[nMinimum] "-" [nMaximum](" [orExpression] ")]" }  
    +   [orExpression] = { [atomExpression] 
    +                       | [atomExpression "|" [orExpression] 
    +                       | [atomExpression "||" [orExpression] }
    +      # note: "|" and "||" are synonymous in this inner context; "|" is preferred simply
    +      #       for readability (whereas "||" is required for the [smartsSet] context). 
    +      # note: This syntax is carefully written to exclude $(xxx) by itself, which
    +      #       is a nestedExpression, not a multipleExpression. The difference is that
    +      #       the nestedExpression only returns the first atom, while the multipleExpression
    +      #       returns all atoms. To return only the first atom within this context 
    +      #       it is necessary to use a nested expression within the multiple expression.
    +      #       For example: "CC[$2( $(C=O) | $(C=N) )]"
    +      #       is the same as "CC$(C=[O,N])$(C=[O,N])", although Jmol preprocesses it as
    +      #          "CC$(C=O)$(C=O)||CC$(C=O)$(C=N)||CC$(C=N)$(C=O)||CC$(C=N)$(C=N)"
    +      
    +   [nTimes] == [digits]
    +   [nMinimum] == [digits]
    +   [nMaximum] == [digits]
    +      # note: multipleExpressions allow for searching a given number of expressions or 
    +      #       a variable number of expressions (including 0, perhaps)
    +      #       Jmol pre-processes these expressions and turns them into a set:
    +      #       pattern1 || pattern2 || pattern3....
    +
    + ######## BioSEQUENCE ########
    +
    +   [bioSequence] == [bioCode] [bioNode] [connections]
    +   [bioCode] == { "~" | "~" [bioType] "~" }
    +      # note: The "~" must be the first character in a component and must be repeated 
    +      #       for each component (separated by ".")
    +   [bioType] == { "p" | "n" | "r" | "d" }
    +      # note: protein, nucleic, RNA, DNA
    +   [bioNode] == { "[" [bioResidueName] "]" 
    +                 | "[" [bioResidueName] "." [bioAtomName] "]" 
    +                 | "[" [bioResidueName] "." [bioAtomName] [A_Prop] "]" 
    +                 | [bioResidueCode] } 
    +   [bioResidueName] == { "*" | "ARG" | "GLY" ... } (case-insensitive) 
    +   [bioAtomName] == { "*" | "0" | "C" | "CA" | "N" ... } (case-insensitive)
    +      # note: "0" indicates the "lead atom":
    +      #   nucleic: P if present, or H5T if present, or O5'/O5*
    +      #   protein: CA
    +      #   carbohydrate: the first atom of the group listed in the model file
    +   [bioResidueCode] == { "*" | "A" | "R" | "G" ... } (case-sensitive)
    +      # note: wildcard or standard group 1-letter-code
    +      #       or, in the case of RNA or DNA:
    +      #         "N" (any residue; same as "*"), 
    +      #         "R" (any purine -- A or G)
    +      #         "Y" (any pyrimidine -- C or T or U)
    +
    + ######## CONNECTIONS (aka "rings") ########
    +
    +   [connectionPointer] == { [digit] | "%" [digit][digit] | "%(" [digits] ")" }
    +      # note: All connectionPointers must have a second matching connectionPointer 
    +      #       and must be preceded by an atomExpression for the 
    +      #       first occurance and either an atomExpression or a bondExpression
    +      #       for the second occurance. The matching connectionPointers may be
    +      #       in different "components" (separated by "."), in which case they
    +      #       represent general connections and not necessarily rings.
    +
    + ######## BONDS ########
    +
    +   [bondExpression] == { [bondOrSet] | [bondOrSet] ";" [bondAndSet] } 
    +   
    +   [bondOrSet] == { [bondAndSet] | [bondAndSet] "," [bondAndSet] }
    +   [bondAndSet] == { [bondPrimitives] | [bondPrimitives] "&" [bondAndSet]
    +                              | "!" [bondPrimitive] 
    +                              | "!" [bondPrimitive] "&" [bondAndSet] }
    +                                              
    + ######## BOND PRIMITIVES ########
    +                              
    +   [bondPrimitives] == { [bondPrimitive] | [bondPrimitive] [bondPrimitives] }       
    +   [bond] == { "-" | "=" | "#" | "." | "/" | "\\" | ":" | "~" | "@" | "+" | "^" | NULL
    +      # note: All bondExpressions are not valid. Stereochemistry should not 
    +      #       be mixed with the others, as it represents a single bond always.
    +      #       In addition, "." ("no bond") cannot be mixed with any bond type.
    +      #       Nothing would be retrieved by "-&=", as a bond cannot be both single
    +      #       and double. However, "-@" is potentially very useful -- "ring single-bonds"
    +      #       or "=&!@" -- "doubly-bonded atoms where the double bond is not in a ring"
    +      # note: Jmol will not match two totally independent molecular pieces. For example,
    +      #       Jmol will not math [Na+].[Cl-]
    +      # note: "+" indicates "adjacent biomolecular groups in a chain"
    +      # note: a bioSEQUENCE ends with "." or the end of the string. A new bioSEQUENCE
    +      #       can continue with "~" immediately following this "." 
    +      # note: For a SMARTS search, "." indicates the start of a new subset, not necessarily a
    +      #       new component.
    +      # note: "^" indicates atropisomer bond with positive dihedral angle
    +      
    + ######## MEASURES ########
    +   
    +   [measure] == { [measureId] | [measureId] ":" [ranges] | [measureId] ":!" [range] }
    +   [measureId] == { [measureCode] | [measureCode] [digits] }
    +   [measureCode == { "d" | "a" | "t" }
    +   [ranges] == {[range] | [ranges] { "," | "-" } [range]}
    +   [range] == [minimumValue] { "," | "-" } [maximumValue]
    +   [minimumValue] == [decimalNumber]
    +   [maximumValue] == [decimalNumber]
    +
    +
    +

    + +

    Jmol SMILES and Jmol SMARTS Definition of "aromatic"

    + +

    + +The default Jmol SMILES and Jmol SMARTS defines "aromatic" unambiguously and strictly geometrically. However + you can use the directive /aromaticStrict/ to add to that a 6-electron Hueckel model for specifying aromaticity. +This discussion relates to the 3D definition. We define "aromatic" here strictly in terms of geometry - a flat ring with trigonal planar geometry for all atoms in the ring. +No consideration of bond order is used, because for the sorts of models that can be loaded into Jmol, many do not +assume a bonding scheme (PDB, GAUSSIAN, etc.). +

    +

    + Given a ring of N atoms... + +
    +                  1
    +                /   \
    +               2     6 -- 6a
    +               |     |
    +         5a -- 5     4
    +                \   /
    +                  3  
    +
    + + with arbitrary order and up to N substituents... + +
      +
    1. + Check to see if all ring atoms have no more than 3 connections. + Note: An alternative definition might include "and no substituent + is explicitly double-bonded to its ring atom, as in quinone. + Here we opt to allow the atoms of quinone to be called "aromatic." +
    2. Select a cutoff value close to zero. We use 0.01 here (increased to 0.1 for /aromaticStrict/). +
    3. Generate a set of normals as follows: +
      1. For each ring atom, construct the normal associated with the plane + formed by that ring atom and its two nearest ring-atom neighbors. +
      2. For each ring atom with a substituent, construct a normal + associated with the plane formed by its connecting substituent + atom and the two nearest ring-atom neighbors. +
      3. If this is the first normal, assign vMean to it. +
      4. If this is not the first normal, check vNorm.dot.vMean. If this + value is less than zero, scale vNorm by -1. +
      5. Add vNorm to vMean. +
      +
    4. Calculate the standard deviation of the dot products of the + individual vNorms with the normalized vMean. +
    5. The ring is deemed flat if this standard deviation is less + than the selected cutoff value. +
    + +

    + +

    + -- Bob Hanson +
    updated 8/26/2015: switch to HTML5; added measure option for multiple ranges +
    updated 5/21/2012: added $(select...) +
    updated 5/13/2012: added /aromaticStrict/ and /aromaticDouble/ +
    updated 5/13/2012: added [<atomType>] +
    updated 4/10/2012: fix for [$(...)n] and [$(...)min-max] +
    original5/19/2010 +

    + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/allWyckoff.txt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/allWyckoff.txt new file mode 100755 index 000000000000..dc3b031f3c72 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/allWyckoff.txt @@ -0,0 +1,2687 @@ +0,0,0 +0,0,1/2 +0,0,1/3 +0,0,1/4 +0,0,1/6 +0,0,2/3 +0,0,3/4 +0,0,5/6 +0,0,x +0,0,-x +0,0,-x+1/4 +0,0,-x+1/8 +0,0,x+3/4 +0,0,-x+5/8 +0,0,y +0,0,-y +0,0,-y+1/4 +0,0,y+3/4 +0,0,z +0,0,-z +0,0,z+1/2 +0,0,-z+1/2 +0,0,z+1/3 +0,0,-z+1/3 +0,0,z+1/4 +0,0,-z+1/4 +0,0,z+1/8 +0,0,-z+1/8 +0,0,z+2/3 +0,0,-z+2/3 +0,0,z+3/4 +0,0,-z+3/4 +0,0,-z+7/8 +0,1/2,0 +0,1/2,1/2 +0,1/2,1/3 +0,1/2,1/4 +0,1/2,1/6 +0,1/2,2/3 +0,1/2,3/4 +0,1/2,5/6 +0,1/2,x +0,1/2,-x +0,1/2,x+1/2 +0,1/2,-x+1/2 +0,1/2,x+1/4 +0,1/2,-x+1/4 +0,1/2,x+3/4 +0,1/2,-x+3/4 +0,1/2,-x+5/8 +0,1/2,y +0,1/2,-y +0,1/2,y+1/4 +0,1/2,-y+3/4 +0,1/2,z +0,1/2,-z +0,1/2,z+1/2 +0,1/2,-z+1/2 +0,1/2,z+1/3 +0,1/2,-z+1/3 +0,1/2,z+1/4 +0,1/2,-z+1/4 +0,1/2,z+1/8 +0,1/2,-z+1/8 +0,1/2,z+2/3 +0,1/2,-z+2/3 +0,1/2,z+3/4 +0,1/2,-z+3/4 +0,1/2,z+3/8 +0,1/2,-z+3/8 +0,1/2,-z+7/8 +0,1/4,0 +0,1/4,1/2 +0,1/4,1/4 +0,1/4,1/8 +0,1/4,3/4 +0,1/4,3/8 +0,1/4,5/8 +0,1/4,7/8 +0,1/4,x +0,1/4,-x +0,1/4,x+1/2 +0,1/4,-x+1/4 +0,1/4,-x+3/4 +0,1/4,y +0,1/4,-y +0,1/4,y+1/2 +0,1/4,-y+1/2 +0,1/4,z +0,1/4,-z +0,1/4,z+1/2 +0,1/4,-z+1/2 +0,1/4,-z+3/4 +0,3/4,0 +0,3/4,1/2 +0,3/4,1/4 +0,3/4,1/8 +0,3/4,3/4 +0,3/4,3/8 +0,3/4,5/8 +0,3/4,7/8 +0,3/4,x +0,3/4,-x +0,3/4,-x+1/2 +0,3/4,x+3/4 +0,3/4,y +0,3/4,-y +0,3/4,y+1/2 +0,3/4,-y+1/2 +0,3/4,z +0,3/4,-z +0,3/4,z+1/2 +0,3/4,-z+1/2 +0,3/4,z+1/4 +0,x,0 +0,-x,0 +0,x,1/2 +0,-x,1/2 +0,x,1/3 +0,-x,1/3 +0,x,1/4 +0,-x,1/4 +0,x,1/6 +0,-x,1/6 +0,-x,1/8 +0,x,2/3 +0,-x,2/3 +0,x,3/4 +0,-x,3/4 +0,x,3/8 +0,x,5/6 +0,-x,5/6 +0,x,5/8 +0,-x,7/8 +0,x,-x +0,-x,x +0,-x,-x+z +0,x,x-z +0,x,y +0,x,-y +0,-x,y +0,-x,-y +0,x,z +0,x,-z +0,-x,z +0,-x,-z +0,x,z+1/2 +0,x,-z+1/2 +0,-x,z+1/2 +0,x+1/2,0 +0,-x+1/2,0 +0,x+1/2,1/2 +0,-x+1/2,1/2 +0,-x+1/2,1/4 +0,x+1/2,3/4 +0,-x+1/2,3/4 +0,x+1/2,-y+1/2 +0,-x+1/2,y+1/2 +0,x+1/2,z +0,x+1/2,-z +0,-x+1/2,z +0,-x+1/2,-z +0,x+1/4,0 +0,-x+1/4,0 +0,x+1/4,1/2 +0,-x+1/4,1/2 +0,x+1/4,1/4 +0,-x+1/4,1/4 +0,x+1/4,3/4 +0,-x+1/4,3/4 +0,x+1/4,-z+3/4 +0,-x+1/4,z+3/4 +0,-x+1/8,0 +0,x+3/4,0 +0,-x+3/4,0 +0,x+3/4,1/2 +0,-x+3/4,1/2 +0,-x+3/4,1/4 +0,-x+3/4,3/4 +0,x+3/8,1/2 +0,-x+5/8,0 +0,x+7/8,0 +0,-x+z,z +0,x-z,-z +0,y,0 +0,-y,0 +0,y,1/2 +0,-y,1/2 +0,y,1/4 +0,-y,1/4 +0,y,3/4 +0,-y,3/4 +0,y,y +0,y,-y +0,-y,y +0,-y,-y +0,y,y+1/2 +0,-y,-y+1/2 +0,y,z +0,y,-z +0,-y,z +0,-y,-z +0,y,-z+1/2 +0,-y,z+1/2 +0,y+1/2,1/4 +0,-y+1/2,3/4 +0,y+1/2,y +0,-y+1/2,-y +0,y+1/2,-y+1/2 +0,-y+1/2,y+1/2 +0,y+1/2,-z +0,-y+1/2,z +0,y+1/2,-z+1/2 +0,-y+1/2,z+1/2 +0,-y+1/4,0 +0,y+1/4,1/2 +0,-y+1/4,1/2 +0,y+1/4,y+1/2 +0,-y+1/4,-y+1/4 +0,-y+1/4,y+3/4 +0,y+1/4,-z +0,-y+1/4,z +0,y+1/4,-z+1/4 +0,-y+1/8,0 +0,y+3/4,0 +0,y+3/4,1/2 +0,-y+3/4,1/2 +0,-y+3/4,-y+1/2 +0,y+3/4,-y+1/4 +0,y+3/4,y+3/4 +0,y+3/4,z +0,-y+3/4,-z +0,-y+3/4,-z+1/4 +0,y+3/4,z+1/8 +0,-y+3/4,-z+1/8 +0,z,0 +0,-z,0 +0,z,1/2 +0,-z,1/2 +0,z,1/4 +0,-z,1/4 +0,z,3/4 +0,-z,3/4 +0,z,x +0,z,-x +0,-z,x +0,-z,-x +0,z,-x+1/2 +0,-z,x+1/2 +0,z,-x+1/4 +0,z,x+3/4 +0,z,y +0,z,-y +0,-z,y +0,-z,-y +0,z,y+1/2 +0,-z,-y+1/2 +0,z+1/2,0 +0,-z+1/2,0 +0,z+1/2,1/2 +0,-z+1/2,1/2 +0,z+1/2,1/4 +0,-z+1/2,3/4 +0,z+1/2,y +0,-z+1/2,-y +0,z+1/2,y+1/2 +0,-z+1/2,-y+1/2 +0,-z+1/4,0 +0,z+1/4,1/2 +0,z+3/4,0 +0,-z+3/4,1/2 +1/2,0,0 +1/2,0,1/2 +1/2,0,1/4 +1/2,0,3/4 +1/2,0,x +1/2,0,-x +1/2,0,x+1/2 +1/2,0,-x+1/2 +1/2,0,x+1/4 +1/2,0,-x+1/4 +1/2,0,x+3/4 +1/2,0,-x+3/4 +1/2,0,x+3/8 +1/2,0,y +1/2,0,-y +1/2,0,-y+1/4 +1/2,0,y+3/4 +1/2,0,-y+3/4 +1/2,0,z +1/2,0,-z +1/2,0,z+1/2 +1/2,0,-z+1/2 +1/2,0,z+1/3 +1/2,0,z+1/4 +1/2,0,-z+1/4 +1/2,0,-z+1/8 +1/2,0,z+2/3 +1/2,0,z+3/4 +1/2,0,-z+3/4 +1/2,0,z+3/8 +1/2,0,-z+5/8 +1/2,0,-z+7/8 +1/2,1/2,0 +1/2,1/2,1/2 +1/2,1/2,1/3 +1/2,1/2,1/4 +1/2,1/2,1/6 +1/2,1/2,2/3 +1/2,1/2,3/4 +1/2,1/2,5/6 +1/2,1/2,x +1/2,1/2,-x +1/2,1/2,x+1/2 +1/2,1/2,-x+1/2 +1/2,1/2,x+1/4 +1/2,1/2,-x+3/4 +1/2,1/2,x+3/8 +1/2,1/2,x+7/8 +1/2,1/2,y +1/2,1/2,-y +1/2,1/2,y+1/4 +1/2,1/2,y+3/4 +1/2,1/2,-y+3/4 +1/2,1/2,z +1/2,1/2,-z +1/2,1/2,z+1/2 +1/2,1/2,-z+1/2 +1/2,1/2,z+1/3 +1/2,1/2,-z+1/3 +1/2,1/2,z+1/4 +1/2,1/2,-z+1/4 +1/2,1/2,z+1/8 +1/2,1/2,-z+1/8 +1/2,1/2,z+2/3 +1/2,1/2,-z+2/3 +1/2,1/2,z+3/4 +1/2,1/2,-z+3/4 +1/2,1/2,z+3/8 +1/2,1/2,-z+3/8 +1/2,1/2,-z+7/8 +1/2,1/4,0 +1/2,1/4,1/2 +1/2,1/4,1/4 +1/2,1/4,1/8 +1/2,1/4,3/4 +1/2,1/4,3/8 +1/2,1/4,5/8 +1/2,1/4,7/8 +1/2,1/4,x +1/2,1/4,-x +1/2,1/4,x+1/4 +1/2,1/4,x+3/4 +1/2,1/4,y +1/2,1/4,-y +1/2,1/4,y+1/2 +1/2,1/4,-y+1/2 +1/2,1/4,-z +1/2,1/4,z+1/2 +1/2,1/4,-z+1/2 +1/2,1/4,z+1/4 +1/2,3/4,0 +1/2,3/4,1/2 +1/2,3/4,1/4 +1/2,3/4,1/8 +1/2,3/4,3/4 +1/2,3/4,3/8 +1/2,3/4,5/8 +1/2,3/4,x +1/2,3/4,-x +1/2,3/4,-x+1/4 +1/2,3/4,y +1/2,3/4,-y +1/2,3/4,y+1/2 +1/2,3/4,-y+1/2 +1/2,3/4,z +1/2,3/4,z+1/2 +1/2,3/4,-z+1/2 +1/2,3/4,-z+1/4 +1/2,3/4,-z+3/4 +1/2,x,0 +1/2,-x,0 +1/2,x,1/2 +1/2,-x,1/2 +1/2,x,1/4 +1/2,-x,1/4 +1/2,x,3/4 +1/2,-x,3/4 +1/2,x,y +1/2,x,-y +1/2,-x,y +1/2,-x,-y +1/2,x,z +1/2,x,-z +1/2,-x,z +1/2,-x,-z +1/2,x,z+1/2 +1/2,-x,z+1/2 +1/2,x+1/2,0 +1/2,-x+1/2,0 +1/2,x+1/2,1/2 +1/2,-x+1/2,1/2 +1/2,-x+1/2,1/4 +1/2,x+1/2,3/4 +1/2,x+1/2,-x+1/2 +1/2,-x+1/2,x+1/2 +1/2,x+1/2,-y+1/2 +1/2,-x+1/2,y+1/2 +1/2,x+1/2,z +1/2,-x+1/2,-z +1/2,x+1/4,0 +1/2,-x+1/4,0 +1/2,x+1/4,1/2 +1/2,-x+1/4,1/2 +1/2,x+1/4,1/4 +1/2,-x+1/4,1/4 +1/2,x+1/4,3/4 +1/2,-x+1/4,3/4 +1/2,x+1/4,z+3/4 +1/2,-x+1/4,-z+3/4 +1/2,-x+1/8,1/2 +1/2,x+3/4,0 +1/2,-x+3/4,0 +1/2,x+3/4,1/2 +1/2,-x+3/4,1/2 +1/2,x+3/4,1/4 +1/2,x+3/4,3/4 +1/2,x+3/8,1/2 +1/2,y,0 +1/2,-y,0 +1/2,y,1/2 +1/2,-y,1/2 +1/2,y,1/4 +1/2,-y,1/4 +1/2,y,3/4 +1/2,-y,3/4 +1/2,y,y +1/2,y,-y +1/2,-y,y +1/2,-y,-y +1/2,y,y+1/2 +1/2,-y,-y+1/2 +1/2,y,z +1/2,y,-z +1/2,-y,z +1/2,-y,-z +1/2,y,-z+1/2 +1/2,-y,z+1/2 +1/2,y+1/2,1/4 +1/2,-y+1/2,3/4 +1/2,y+1/2,y +1/2,-y+1/2,-y +1/2,y+1/2,-y+1/2 +1/2,-y+1/2,y+1/2 +1/2,y+1/2,y+1/4 +1/2,-y+1/2,-y+3/4 +1/2,-y+1/2,z+1/2 +1/2,y+1/4,0 +1/2,-y+1/4,0 +1/2,y+1/4,1/2 +1/2,y+1/4,y+1/4 +1/2,y+1/4,-y+3/4 +1/2,y+1/4,-z +1/2,-y+1/4,z +1/2,-y+1/4,z+1/4 +1/2,y+3/4,0 +1/2,-y+3/4,0 +1/2,y+3/4,1/2 +1/2,-y+3/4,1/2 +1/2,-y+3/4,y+1/4 +1/2,-y+3/4,-y+3/4 +1/2,y+3/4,z +1/2,-y+3/4,-z +1/2,y+3/4,z+1/4 +1/2,y+3/4,-z+5/8 +1/2,-y+3/4,z+5/8 +1/2,y+3/8,0 +1/2,z,0 +1/2,-z,0 +1/2,z,1/2 +1/2,-z,1/2 +1/2,z,1/4 +1/2,-z,3/4 +1/2,z,x +1/2,z,-x +1/2,-z,-x +1/2,z,-x+1/2 +1/2,-z,x+1/2 +1/2,-z,x+1/4 +1/2,-z,-x+3/4 +1/2,z,y +1/2,z,-y +1/2,-z,y +1/2,-z,-y +1/2,z+1/2,0 +1/2,-z+1/2,0 +1/2,z+1/2,1/2 +1/2,-z+1/2,1/2 +1/2,z+1/2,1/4 +1/2,-z+1/2,1/4 +1/2,z+1/2,3/4 +1/2,-z+1/2,3/4 +1/2,z+1/2,y +1/2,-z+1/2,-y +1/2,z+1/2,y+1/2 +1/2,z+1/2,-y+1/2 +1/2,-z+1/2,y+1/2 +1/2,-z+1/2,-y+1/2 +1/2,z+1/4,0 +1/2,-z+3/4,0 +1/2x,1/2x,0 +1/2x,-1/2x,0 +-1/2x,1/2x,0 +-1/2x,-1/2x,0 +1/2x,1/2x,1/2 +1/2x,-1/2x,1/2 +-1/2x,1/2x,1/2 +-1/2x,-1/2x,1/2 +1/2x,1/2x,1/4 +1/2x,-1/2x,1/4 +-1/2x,1/2x,1/4 +-1/2x,-1/2x,1/4 +1/2x,1/2x,3/4 +1/2x,-1/2x,3/4 +-1/2x,1/2x,3/4 +-1/2x,-1/2x,3/4 +1/2x,1/2x,z +1/2x,1/2x,-z +1/2x,-1/2x,z +1/2x,-1/2x,-z +-1/2x,1/2x,z +-1/2x,1/2x,-z +-1/2x,-1/2x,z +-1/2x,-1/2x,-z +1/2x,-1/2x,z+1/2 +-1/2x,1/2x,z+1/2 +1/2x,-1/2x+1/4,0 +1/2x,-1/2x+1/4,3/4 +-1/2x,1/2x+3/4,0 +-1/2x,1/2x+3/4,1/4 +1/2x+1/2y,-1/2x+1/2y,0 +-1/2x+1/2y,1/2x+1/2y,0 +1/2x+1/2y,-1/2x+1/2y,1/2 +-1/2x+1/2y,1/2x+1/2y,1/2 +-1/2x+1/2y,1/2x+1/2y+1/2,0 +1/2x+1/2y,-1/2x+1/2y+1/2,1/2 +-1/2x+1/2y,1/2x+1/2y+1/2,1/2 +1/2x+1/2y,1/2x-1/2y,0 +-1/2x+1/2y,-1/2x-1/2y,0 +1/2x+1/2y,1/2x-1/2y,1/2 +-1/2x+1/2y,-1/2x-1/2y,1/2 +1/2x+1/2y,1/2x-1/2y+1/2,0 +1/2x+1/2y,1/2x-1/2y+1/2,1/2 +-1/2x+1/2y+1/2,1/2x+1/2y,1/2 +1/2x+1/2y+1/2,1/2x-1/2y,1/2 +1/2x+1/4,-1/2x+1/2,1/2 +1/2x+1/4,-1/2x+1/2,3/4 +1/2x+1/4,-1/2x+1/4,0 +-1/2x+1/4,1/2x+1/4,0 +1/2x+1/4,1/2x+1/4,1/2 +1/2x+1/4,-1/2x+1/4,1/2 +-1/2x+1/4,1/2x+1/4,1/2 +-1/2x+1/4,-1/2x+1/4,1/2 +1/2x+1/4,1/2x+1/4,1/4 +1/2x+1/4,-1/2x+1/4,1/4 +-1/2x+1/4,1/2x+1/4,1/4 +1/2x+1/4,-1/2x+1/4,3/4 +-1/2x+1/4,1/2x+1/4,3/4 +-1/2x+1/4,-1/2x+1/4,3/4 +1/2x+1/4,-1/2x+1/4,z +1/2x+1/4,-1/2x+1/4,-z +-1/2x+1/4,1/2x+1/4,z +-1/2x+1/4,1/2x+1/4,-z +1/2x+1/4,-1/2x+1/4,z+1/2 +-1/2x+1/4,1/2x+1/4,z+1/2 +1/2x+1/8,1/2x+1/8,0 +-1/2x+1/8,1/2x+1/8,0 +1/2x+1/8,1/2x+1/8,1/2 +-1/2x+1/8,1/2x+1/8,1/2 +1/2x+1/8,1/2x+1/8,1/4 +-1/2x+1/8,1/2x+1/8,1/4 +1/2x+1/8,-1/2x+1/8,1/8 +1/2x+1/8,1/2x+1/8,3/4 +1/2x+1/8,-1/2x+1/8,3/4 +-1/2x+1/8,1/2x+1/8,3/4 +1/2x+1/8,-1/2x+1/8,7/8 +1/2x+1/8,-1/2x+3/8,0 +-1/2x+1/8,1/2x+3/8,0 +-1/2x+1/8,-1/2x+3/8,0 +1/2x+1/8,-1/2x+3/8,1/2 +-1/2x+1/8,1/2x+3/8,1/2 +-1/2x+1/8,-1/2x+3/8,1/2 +1/2x+1/8,-1/2x+3/8,1/4 +-1/2x+1/8,-1/2x+3/8,1/4 +1/2x+1/8,1/2x+3/8,3/4 +1/2x+1/8,-1/2x+3/8,3/4 +-1/2x+1/8,-1/2x+3/8,3/4 +-1/2x+1/8,-1/2x+3/8,5/8 +1/2x+1/8,1/2x+5/8,0 +-1/2x+1/8,1/2x+5/8,0 +-1/2x+1/8,-1/2x+5/8,0 +1/2x+1/8,1/2x+5/8,1/2 +-1/2x+1/8,1/2x+5/8,1/2 +-1/2x+1/8,-1/2x+5/8,1/2 +1/2x+1/8,1/2x+5/8,1/4 +1/2x+1/8,-1/2x+5/8,1/4 +-1/2x+1/8,1/2x+5/8,1/4 +-1/2x+1/8,1/2x+5/8,1/8 +1/2x+1/8,1/2x+5/8,3/4 +-1/2x+1/8,1/2x+5/8,3/4 +-1/2x+1/8,1/2x+5/8,3/8 +-1/2x+1/8,1/2x+7/8,0 +1/2x+1/8,-1/2x+7/8,1/2 +-1/2x+1/8,1/2x+7/8,1/2 +1/2x+1/8,1/2x+7/8,1/8 +-1/2x+1/8,-1/2x+7/8,1/8 +1/2x+1/8,1/2x+7/8,3/8 +-1/2x+1/8,-1/2x+7/8,7/8 +-1/2x+3/4,1/2x+1/2,1/2 +-1/2x+3/4,1/2x+1/2,1/4 +1/2x+3/4,1/2x+1/4,0 +-1/2x+3/4,-1/2x+1/4,0 +1/2x+3/4,1/2x+1/4,1/2 +-1/2x+3/4,-1/2x+1/4,1/2 +1/2x+3/4,1/2x+1/4,1/4 +-1/2x+3/4,-1/2x+1/4,1/4 +1/2x+3/4,1/2x+1/4,3/4 +-1/2x+3/4,-1/2x+1/4,3/4 +1/2x+3/4,1/2x+1/4,z +1/2x+3/4,1/2x+1/4,-z +-1/2x+3/4,-1/2x+1/4,z +-1/2x+3/4,-1/2x+1/4,-z +-1/2x+3/8,1/2x+1/8,0 +-1/2x+3/8,1/2x+1/8,1/2 +-1/2x+3/8,1/2x+1/8,1/4 +-1/2x+3/8,1/2x+1/8,3/4 +1/2x+3/8,1/2x+1/8,3/8 +1/2x+3/8,1/2x+1/8,5/8 +-1/2x+3/8,-1/2x+1/8,5/8 +-1/2x+3/8,-1/2x+1/8,7/8 +1/2x+3/8,-1/2x+3/8,0 +-1/2x+3/8,-1/2x+3/8,0 +1/2x+3/8,-1/2x+3/8,1/2 +-1/2x+3/8,-1/2x+3/8,1/2 +1/2x+3/8,-1/2x+3/8,1/4 +-1/2x+3/8,1/2x+3/8,1/4 +-1/2x+3/8,-1/2x+3/8,1/4 +1/2x+3/8,-1/2x+3/8,3/4 +-1/2x+3/8,-1/2x+3/8,3/4 +1/2x+3/8,-1/2x+3/8,5/8 +1/2x+3/8,-1/2x+3/8,7/8 +-1/2x+3/8,1/2x+3/8,7/8 +1/2x+3/8,-1/2x+5/8,0 +-1/2x+3/8,1/2x+5/8,0 +1/2x+3/8,-1/2x+5/8,1/2 +-1/2x+3/8,1/2x+5/8,1/2 +-1/2x+3/8,1/2x+5/8,1/4 +-1/2x+3/8,1/2x+5/8,3/4 +1/2x+5/8,-1/2x+3/8,0 +-1/2x+5/8,-1/2x+3/8,0 +1/2x+5/8,-1/2x+3/8,1/2 +-1/2x+5/8,-1/2x+3/8,1/2 +1/2x+5/8,1/2x+3/8,1/4 +1/2x+5/8,-1/2x+3/8,1/4 +-1/2x+5/8,-1/2x+3/8,1/4 +-1/2x+5/8,-1/2x+3/8,1/8 +1/2x+5/8,-1/2x+3/8,3/4 +-1/2x+5/8,-1/2x+3/8,3/4 +-1/2x+5/8,-1/2x+5/8,0 +1/2x+5/8,1/2x+5/8,1/2 +-1/2x+5/8,-1/2x+5/8,1/2 +1/2x+7/8,1/2x+1/8,0 +1/2x+7/8,1/2x+1/8,1/2 +1/2x+7/8,1/2x+1/8,1/4 +1/2x+7/8,1/2x+1/8,1/8 +1/2x+7/8,1/2x+1/8,3/4 +-1/2x+7/8,-1/2x+1/8,3/4 +1/2x+7/8,1/2x+3/8,0 +1/2x+7/8,-1/2x+3/8,0 +-1/2x+7/8,-1/2x+3/8,0 +1/2x+7/8,1/2x+3/8,1/2 +1/2x+7/8,-1/2x+3/8,1/2 +-1/2x+7/8,-1/2x+3/8,1/2 +1/2x+7/8,-1/2x+3/8,1/4 +-1/2x+7/8,-1/2x+3/8,1/4 +1/2x+7/8,-1/2x+3/8,3/4 +-1/2x+7/8,1/2x+3/8,3/4 +-1/2x+7/8,-1/2x+3/8,3/4 +-1/2x+7/8,1/2x+3/8,3/8 +-1/2x+7/8,1/2x+3/8,5/8 +1/2x+7/8,1/2x+5/8,0 +1/2x+7/8,-1/2x+5/8,0 +-1/2x+7/8,1/2x+5/8,0 +1/2x+7/8,1/2x+5/8,1/2 +1/2x+7/8,-1/2x+5/8,1/2 +1/2x+7/8,1/2x+5/8,1/4 +-1/2x+7/8,-1/2x+5/8,1/4 +1/2x+7/8,1/2x+5/8,3/4 +1/2x+7/8,1/2x+7/8,0 +1/2x+7/8,1/2x+7/8,1/2 +-1/2x+7/8,-1/2x+7/8,1/2 +1/2x-1/2y,1/2x+1/2y,0 +-1/2x-1/2y,-1/2x+1/2y,0 +1/2x-1/2y,1/2x+1/2y,1/2 +-1/2x-1/2y,-1/2x+1/2y,1/2 +-1/2x-1/2y,-1/2x+1/2y+1/2,0 +-1/2x-1/2y,-1/2x+1/2y+1/2,1/2 +1/2x-1/2y,-1/2x-1/2y,0 +-1/2x-1/2y,1/2x-1/2y,0 +1/2x-1/2y,-1/2x-1/2y,1/2 +-1/2x-1/2y,1/2x-1/2y,1/2 +1/2x-1/2y,-1/2x-1/2y+1/2,0 +1/2x-1/2y,-1/2x-1/2y+1/2,1/2 +-1/2x-1/2y,1/2x-1/2y+1/2,1/2 +-1/2x-1/2y+1/2,-1/2x+1/2y,1/2 +1/2x-1/2y+1/2,-1/2x-1/2y,1/2 +-1/2y,1/2y,0 +1/2y,-1/2y,1/2 +1/2y,1/2y,1/4 +1/2y,-1/2y,1/4 +-1/2y,1/2y,1/4 +-1/2y,-1/2y,1/4 +1/2y,1/2y,3/4 +-1/2y,-1/2y,3/4 +1/2y,1/2y,z +1/2y,1/2y,-z +1/2y,-1/2y,z +1/2y,-1/2y,-z +-1/2y,1/2y,z +-1/2y,1/2y,-z +-1/2y,-1/2y,z +-1/2y,-1/2y,-z +1/2y,1/2y,z+1/2 +1/2y,1/2y,-z+1/2 +-1/2y,-1/2y,z+1/2 +-1/2y,-1/2y,-z+1/2 +1/2y,-1/2y+1/2,z+1/2 +1/2y,1/2y+1/4,z+3/4 +-1/2y,-1/2y+1/4,-z+3/4 +-1/2y+1/4,1/2y+1/4,0 +1/2y+1/4,-1/2y+1/4,1/2 +1/2y+1/4,-1/2y+1/4,1/4 +-1/2y+1/4,1/2y+1/4,1/4 +1/2y+1/4,-1/2y+1/4,z +1/2y+1/4,-1/2y+1/4,-z +-1/2y+1/4,1/2y+1/4,z +-1/2y+1/4,1/2y+1/4,-z +1/2y+1/4,-1/2y+1/4,z+1/2 +-1/2y+1/4,1/2y+1/4,-z+1/2 +1/2y+1/4,1/2y+1/4,z+3/4 +1/2y+1/8,1/2y+1/8,z +-1/2y+1/8,1/2y+1/8,z +1/2y+1/8,1/2y+1/8,z+3/4 +1/2y+1/8,1/2y+1/8,z+7/8 +-1/2y+1/8,-1/2y+1/8,-z+7/8 +1/2y+1/8,-1/2y+3/8,z +-1/2y+1/8,-1/2y+3/8,z +-1/2y+1/8,-1/2y+3/8,z+1/2 +1/2y+1/8,-1/2y+3/8,z+1/4 +1/2y+1/8,1/2y+5/8,-z +-1/2y+1/8,1/2y+5/8,-z +1/2y+1/8,1/2y+5/8,-z+3/4 +1/2y+1/8,-1/2y+7/8,-z+1/8 +-1/2y+1/8,1/2y+7/8,z+1/8 +1/2y+3/4,1/2y+1/2,-z+1/4 +-1/2y+3/4,-1/2y+1/2,z+1/4 +1/2y+3/4,1/2y+1/4,1/4 +-1/2y+3/4,-1/2y+1/4,1/4 +1/2y+3/4,1/2y+1/4,3/4 +-1/2y+3/4,-1/2y+1/4,3/4 +1/2y+3/4,1/2y+1/4,z+1/2 +1/2y+3/4,1/2y+1/4,-z+1/2 +-1/2y+3/4,-1/2y+1/4,z+1/2 +-1/2y+3/4,-1/2y+1/4,-z+1/2 +-1/2y+3/4,-1/2y+1/4,z+1/4 +-1/2y+3/8,1/2y+1/8,z +-1/2y+3/8,1/2y+1/8,z+1/4 +1/2y+3/8,-1/2y+1/8,z+5/8 +-1/2y+3/8,1/2y+1/8,-z+5/8 +1/2y+3/8,-1/2y+3/8,-z +-1/2y+3/8,-1/2y+3/8,z +-1/2y+3/8,-1/2y+3/8,z+3/4 +-1/2y+3/8,1/2y+5/8,-z +-1/2y+3/8,1/2y+5/8,-z+1/4 +1/2y+5/8,-1/2y+3/8,-z +-1/2y+5/8,-1/2y+3/8,-z +-1/2y+5/8,-1/2y+3/8,-z+1/2 +1/2y+5/8,-1/2y+3/8,-z+1/4 +1/2y+7/8,1/2y+1/8,z +1/2y+7/8,1/2y+1/8,z+1/2 +1/2y+7/8,-1/2y+3/8,z +-1/2y+7/8,-1/2y+3/8,-z +-1/2y+7/8,-1/2y+3/8,-z+3/4 +1/2y+7/8,1/2y+3/8,-z+3/8 +-1/2y+7/8,-1/2y+3/8,z+3/8 +1/2y+7/8,1/2y+5/8,-z +1/2y+7/8,1/2y+5/8,-z+1/2 +1/3,2/3,0 +1/3,2/3,1/2 +1/3,2/3,1/4 +1/3,2/3,3/4 +1/3,2/3,z +1/3,2/3,-z +1/3,2/3,z+1/2 +1/3,2/3,-z+1/2 +1/4,0,0 +1/4,0,1/2 +1/4,0,1/4 +1/4,0,3/4 +1/4,0,3/8 +1/4,0,7/8 +1/4,0,x +1/4,0,-x+1/2 +1/4,0,y +1/4,0,-y +1/4,0,y+1/2 +1/4,0,z +1/4,0,-z +1/4,0,z+1/2 +1/4,0,-z+1/2 +1/4,1/2,0 +1/4,1/2,1/2 +1/4,1/2,1/4 +1/4,1/2,3/4 +1/4,1/2,3/8 +1/4,1/2,7/8 +1/4,1/2,x +1/4,1/2,-x+1/2 +1/4,1/2,y +1/4,1/2,-y +1/4,1/2,y+1/2 +1/4,1/2,z +1/4,1/2,-z +1/4,1/2,z+1/2 +1/4,1/2,-z+1/2 +1/4,1/4,0 +1/4,1/4,1/2 +1/4,1/4,1/4 +1/4,1/4,3/4 +1/4,1/4,x +1/4,1/4,-x +1/4,1/4,x+1/2 +1/4,1/4,-x+1/2 +1/4,1/4,x+1/8 +1/4,1/4,-x+3/8 +1/4,1/4,y +1/4,1/4,-y +1/4,1/4,y+1/2 +1/4,1/4,z +1/4,1/4,-z +1/4,1/4,z+1/2 +1/4,1/4,-z+1/2 +1/4,1/4,z+1/4 +1/4,1/4,-z+1/4 +1/4,1/4,z+1/8 +1/4,1/4,-z+1/8 +1/4,1/4,z+3/4 +1/4,1/4,-z+3/4 +1/4,1/4,z+3/8 +1/4,1/4,-z+5/8 +1/4,1/8,0 +1/4,3/4,0 +1/4,3/4,1/2 +1/4,3/4,1/4 +1/4,3/4,3/4 +1/4,3/4,x +1/4,3/4,-x +1/4,3/4,x+1/2 +1/4,3/4,-x+1/2 +1/4,3/4,x+3/4 +1/4,3/4,-x+3/8 +1/4,3/4,-x+7/8 +1/4,3/4,y +1/4,3/4,y+1/2 +1/4,3/4,-y+1/2 +1/4,3/4,z +1/4,3/4,-z +1/4,3/4,z+1/2 +1/4,3/4,-z+1/2 +1/4,3/4,z+1/4 +1/4,3/4,-z+1/4 +1/4,3/4,z+3/4 +1/4,3/4,-z+3/4 +1/4,3/8,0 +1/4,5/8,0 +1/4,7/8,0 +1/4,x,0 +1/4,-x,0 +1/4,x,1/2 +1/4,-x,1/2 +1/4,x,1/4 +1/4,-x,1/4 +1/4,-x,1/8 +1/4,x,3/4 +1/4,-x,3/4 +1/4,-x,7/8 +1/4,x,y +1/4,-x,y +1/4,-x,y+1/2 +1/4,x,z +1/4,x,-z +1/4,-x,-z +1/4,x,z+1/4 +1/4,-x,-z+1/4 +1/4,x+1/2,0 +1/4,-x+1/2,0 +1/4,-x+1/2,1/2 +1/4,x+1/2,1/4 +1/4,-x+1/2,1/4 +1/4,x+1/2,3/4 +1/4,-x+1/2,3/4 +1/4,x+1/2,3/8 +1/4,x+1/2,5/8 +1/4,x+1/2,z +1/4,x+1/2,-z +1/4,-x+1/2,z +1/4,-x+1/2,-z +1/4,x+1/2,z+1/2 +1/4,x+1/2,-z+1/4 +1/4,-x+1/2,z+1/4 +1/4,x+1/4,0 +1/4,-x+1/4,0 +1/4,x+1/4,1/2 +1/4,-x+1/4,1/2 +1/4,x+1/4,1/4 +1/4,-x+1/4,1/4 +1/4,x+1/4,3/4 +1/4,-x+1/4,3/4 +1/4,x+1/4,-x+1/4 +1/4,x+1/4,z +1/4,-x+1/4,-z +1/4,x+1/4,z+1/2 +1/4,x+1/4,-z+1/2 +1/4,-x+1/4,-z+1/2 +1/4,x+1/8,1/4 +1/4,-x+3/4,0 +1/4,x+3/4,1/2 +1/4,x+3/4,1/4 +1/4,-x+3/4,1/4 +1/4,x+3/4,3/4 +1/4,-x+3/4,3/4 +1/4,-x+3/8,1/4 +1/4,x+5/8,1/4 +1/4,-x+7/8,3/4 +1/4,y,0 +1/4,-y,0 +1/4,y,1/2 +1/4,-y,1/2 +1/4,y,1/4 +1/4,-y,1/4 +1/4,y,3/4 +1/4,-y,3/4 +1/4,-y,x +1/4,-y,-x +1/4,y,y +1/4,y,-y +1/4,-y,y +1/4,-y,-y +1/4,y,y+1/2 +1/4,y,-y+1/2 +1/4,-y,y+1/2 +1/4,-y,-y+1/2 +1/4,y,z +1/4,-y,z +1/4,y+1/2,0 +1/4,-y+1/2,0 +1/4,y+1/2,1/2 +1/4,-y+1/2,1/2 +1/4,y+1/2,1/4 +1/4,-y+1/2,1/4 +1/4,y+1/2,3/4 +1/4,-y+1/2,3/4 +1/4,-y+1/2,x +1/4,-y+1/2,y +1/4,-y+1/2,-y+1/2 +1/4,y+1/2,y+3/4 +1/4,-y+1/2,z +1/4,y+1/4,-y+1/4 +1/4,-y+1/4,y+1/4 +1/4,y+1/4,y+3/4 +1/4,-y+1/4,-y+3/4 +1/4,y+1/8,1/4 +1/4,y+3/4,y+1/2 +1/4,y+3/4,y+1/4 +1/4,y+3/4,-y+1/4 +1/4,-y+3/4,-y+1/4 +1/4,y+3/4,-y+3/4 +1/4,-y+3/4,y+3/4 +1/4,z,0 +1/4,-z,0 +1/4,-z,1/2 +1/4,z,1/4 +1/4,-z,1/4 +1/4,z,3/4 +1/4,-z,3/4 +1/4,z,x +1/4,z,-x +1/4,z,-x+1/2 +1/4,-z,y +1/4,-z,-y +1/4,-z+1/2,0 +1/4,z+1/2,1/2 +1/4,-z+1/2,1/2 +1/4,z+1/2,1/4 +1/4,-z+1/2,3/4 +1/4,-z+1/2,x+1/2 +1/4,z+1/4,1/4 +1/4,-z+1/4,3/4 +1/4,-z+3/4,3/4 +1/8,0,1/4 +1/8,0,3/4 +1/8,1/2,1/4 +1/8,1/8,1/8 +1/8,1/8,3/8 +1/8,1/8,5/8 +1/8,1/8,7/8 +1/8,1/8,x +1/8,1/8,z +1/8,3/8,1/8 +1/8,3/8,3/8 +1/8,3/8,5/8 +1/8,3/8,7/8 +1/8,3/8,-z +1/8,3/8,-z+1/2 +1/8,3/8,z+1/4 +1/8,5/8,1/8 +1/8,5/8,3/8 +1/8,5/8,7/8 +1/8,5/8,x +1/8,5/8,-x+3/4 +1/8,7/8,1/8 +1/8,7/8,3/8 +1/8,7/8,5/8 +1/8,7/8,7/8 +1/8,x,1/8 +1/8,-x+3/4,1/8 +1/8,-x+3/4,5/8 +1/8,x+3/8,3/8 +1/8,x+3/8,5/8 +1/8,y,1/8 +1/8,y,y+1/4 +1/8,y,-y+1/4 +1/8,-y+1/2,-y+3/4 +1/8,y+1/8,-y+1/8 +1/8,-y+1/8,y+1/8 +1/8,-y+3/8,y+3/8 +1/8,-y+5/8,y+1/8 +2/3,1/3,0 +2/3,1/3,1/2 +2/3,1/3,1/4 +2/3,1/3,3/4 +2/3,1/3,z +2/3,1/3,-z +2/3,1/3,z+1/2 +2/3,1/3,-z+1/2 +2x,x,0 +-2x,-x,0 +2x,x,1/12 +2x,x,1/2 +-2x,-x,1/2 +2x,x,1/3 +-2x,-x,1/3 +2x,x,1/4 +-2x,-x,1/4 +2x,x,1/6 +-2x,-x,1/6 +2x,x,11/12 +2x,x,2/3 +-2x,-x,2/3 +2x,x,3/4 +-2x,-x,3/4 +-2x,-x,5/12 +2x,x,5/6 +-2x,-x,5/6 +-2x,-x,7/12 +2x,x,z +2x,x,-z +-2x,-x,z +-2x,-x,-z +2x,x,z+1/2 +-2x,-x,-z+1/2 +-2x+z,x+z,x+z +2x-z,-x-z,-x-z +3/4,0,0 +3/4,0,1/2 +3/4,0,1/4 +3/4,0,3/4 +3/4,0,3/8 +3/4,0,7/8 +3/4,0,-x +3/4,0,x+1/2 +3/4,0,y +3/4,0,-y +3/4,0,-y+1/2 +3/4,0,z +3/4,0,-z +3/4,0,z+1/2 +3/4,0,-z+1/2 +3/4,1/2,0 +3/4,1/2,1/2 +3/4,1/2,1/4 +3/4,1/2,3/4 +3/4,1/2,3/8 +3/4,1/2,7/8 +3/4,1/2,-x +3/4,1/2,x+1/2 +3/4,1/2,y +3/4,1/2,-y +3/4,1/2,-y+1/2 +3/4,1/2,z +3/4,1/2,-z +3/4,1/2,z+1/2 +3/4,1/2,-z+1/2 +3/4,1/4,0 +3/4,1/4,1/2 +3/4,1/4,1/4 +3/4,1/4,3/4 +3/4,1/4,x +3/4,1/4,-x +3/4,1/4,x+1/2 +3/4,1/4,-x+1/2 +3/4,1/4,x+1/8 +3/4,1/4,-x+3/4 +3/4,1/4,-x+7/8 +3/4,1/4,-y +3/4,1/4,y+1/2 +3/4,1/4,-y+1/2 +3/4,1/4,z +3/4,1/4,-z +3/4,1/4,z+1/2 +3/4,1/4,-z+1/2 +3/4,1/4,z+1/4 +3/4,1/4,-z+1/4 +3/4,1/4,z+1/8 +3/4,1/4,-z+1/8 +3/4,1/4,z+3/4 +3/4,1/4,-z+3/4 +3/4,1/4,z+3/8 +3/4,1/4,-z+7/8 +3/4,1/8,0 +3/4,3/4,0 +3/4,3/4,1/2 +3/4,3/4,1/4 +3/4,3/4,3/4 +3/4,3/4,-x +3/4,3/4,x+1/2 +3/4,3/4,-x+1/2 +3/4,3/4,x+1/8 +3/4,3/4,y +3/4,3/4,-y +3/4,3/4,-y+1/2 +3/4,3/4,z +3/4,3/4,-z +3/4,3/4,z+1/2 +3/4,3/4,-z+1/2 +3/4,3/4,z+1/4 +3/4,3/4,-z+1/4 +3/4,3/4,z+3/4 +3/4,3/4,-z+3/4 +3/4,3/4,-z+7/8 +3/4,3/8,0 +3/4,3/8,1/2 +3/4,5/8,0 +3/4,7/8,0 +3/4,x,0 +3/4,-x,0 +3/4,x,1/2 +3/4,-x,1/2 +3/4,x,1/4 +3/4,-x,1/4 +3/4,-x,3/4 +3/4,-x,5/8 +3/4,x,7/8 +3/4,-x,7/8 +3/4,x,-y +3/4,-x,-y +3/4,x,-y+1/2 +3/4,x,z +3/4,-x,z +3/4,-x,-z +3/4,x+1/2,0 +3/4,-x+1/2,0 +3/4,x+1/2,1/2 +3/4,x+1/2,1/4 +3/4,-x+1/2,1/4 +3/4,x+1/2,1/8 +3/4,x+1/2,3/4 +3/4,-x+1/2,3/4 +3/4,x+1/2,3/8 +3/4,x+1/2,-z +3/4,-x+1/2,z +3/4,-x+1/2,-z+1/2 +3/4,x+1/4,0 +3/4,-x+1/4,0 +3/4,x+1/4,1/2 +3/4,-x+1/4,1/2 +3/4,x+1/4,1/4 +3/4,-x+1/4,1/4 +3/4,x+1/4,3/4 +3/4,-x+1/4,3/4 +3/4,x+1/4,z +3/4,x+1/4,-z +3/4,-x+1/4,z +3/4,-x+1/4,-z +3/4,x+1/4,-z+1/2 +3/4,-x+1/4,z+1/2 +3/4,x+1/8,3/4 +3/4,x+3/4,0 +3/4,-x+3/4,1/2 +3/4,x+3/4,1/4 +3/4,-x+3/4,x+3/4 +3/4,-x+7/8,1/4 +3/4,-x+7/8,3/4 +3/4,y,0 +3/4,-y,0 +3/4,y,1/2 +3/4,-y,1/2 +3/4,y,1/4 +3/4,-y,1/4 +3/4,y,3/4 +3/4,-y,3/4 +3/4,y,x +3/4,y,-x +3/4,y,y +3/4,y,-y +3/4,-y,y +3/4,-y,-y +3/4,y,y+1/2 +3/4,y,-y+1/2 +3/4,-y,y+1/2 +3/4,-y,-y+1/2 +3/4,y,-z +3/4,-y,z +3/4,-y,-z +3/4,y+1/2,0 +3/4,-y+1/2,0 +3/4,y+1/2,1/2 +3/4,-y+1/2,1/2 +3/4,y+1/2,1/4 +3/4,-y+1/2,1/4 +3/4,y+1/2,3/4 +3/4,-y+1/2,3/4 +3/4,y+1/2,-x +3/4,y+1/2,-y +3/4,y+1/2,y+1/2 +3/4,-y+1/2,-y+1/4 +3/4,y+1/2,-z +3/4,-y+1/4,-y+1/2 +3/4,y+1/4,-y+1/4 +3/4,-y+1/4,y+1/4 +3/4,y+1/4,y+3/4 +3/4,-y+1/4,y+3/4 +3/4,-y+1/4,-y+3/4 +3/4,y+3/4,y+1/4 +3/4,-y+3/4,-y+1/4 +3/4,y+3/4,-y+3/4 +3/4,-y+3/4,y+3/4 +3/4,-y+7/8,1/4 +3/4,z,0 +3/4,-z,0 +3/4,z,1/2 +3/4,z,1/4 +3/4,-z,1/4 +3/4,z,3/4 +3/4,-z,3/4 +3/4,z,-x +3/4,-z,x +3/4,-z,-x +3/4,-z,x+1/2 +3/4,z,y +3/4,z,-y +3/4,-z,-y +3/4,z+1/2,0 +3/4,z+1/2,1/2 +3/4,-z+1/2,1/2 +3/4,z+1/2,1/4 +3/4,-z+1/2,3/4 +3/4,z+1/2,-x+1/2 +3/4,z+1/4,1/4 +3/4,z+1/4,3/4 +3/4,-z+1/4,3/4 +3/4,z+3/4,1/4 +3/4,z+3/4,3/4 +3/4,-z+3/4,3/4 +3/8,0,1/4 +3/8,0,3/4 +3/8,1/8,1/8 +3/8,1/8,5/8 +3/8,1/8,7/8 +3/8,3/8,3/8 +3/8,3/8,5/8 +3/8,3/8,x+3/4 +3/8,5/8,1/8 +3/8,5/8,3/8 +3/8,5/8,5/8 +3/8,5/8,7/8 +3/8,7/8,1/8 +3/8,7/8,5/8 +3/8,7/8,x+1/4 +3/8,7/8,x+3/4 +3/8,7/8,z+1/4 +3/8,-x+1/2,3/8 +3/8,x+3/4,3/8 +3/8,-y,y+3/4 +3/8,-y,-y+3/4 +3/8,y+1/2,-y+1/4 +3/8,y+1/2,y+3/4 +3/8,y+1/4,7/8 +3/8,-y+1/8,-y+7/8 +3/8,y+5/8,y+7/8 +3/8,y+7/8,y+5/8 +5/8,0,1/4 +5/8,0,3/4 +5/8,1/8,3/8 +5/8,1/8,7/8 +5/8,1/8,-x+1/4 +5/8,1/8,-x+3/4 +5/8,1/8,-z+3/4 +5/8,3/8,1/8 +5/8,3/8,3/8 +5/8,3/8,5/8 +5/8,3/8,7/8 +5/8,3/8,-z +5/8,3/8,z+1/4 +5/8,5/8,3/8 +5/8,5/8,5/8 +5/8,5/8,-x+1/4 +5/8,7/8,1/8 +5/8,7/8,3/8 +5/8,x+1/2,5/8 +5/8,-x+1/4,5/8 +5/8,-x+3/4,1/8 +5/8,-x+3/8,1/8 +5/8,-x+3/8,7/8 +5/8,y,y+1/4 +5/8,-y,y+1/4 +5/8,-y+1/2,y+3/4 +5/8,-y+1/2,-y+3/4 +5/8,y+1/8,-y+5/8 +5/8,-y+3/4,1/8 +5/8,y+3/8,-y+3/8 +5/8,y+3/8,-y+7/8 +5/8,-y+7/8,y+3/8 +7/8,0,1/4 +7/8,0,3/4 +7/8,1/8,1/8 +7/8,1/8,3/8 +7/8,1/8,5/8 +7/8,1/8,7/8 +7/8,1/8,z +7/8,1/8,-z+3/4 +7/8,3/8,1/8 +7/8,3/8,3/8 +7/8,3/8,5/8 +7/8,3/8,7/8 +7/8,3/8,-x +7/8,3/8,-x+1/2 +7/8,5/8,1/8 +7/8,5/8,3/8 +7/8,5/8,z +7/8,5/8,-z+1/4 +7/8,5/8,-z+3/4 +7/8,7/8,1/8 +7/8,7/8,3/8 +7/8,7/8,7/8 +7/8,7/8,-x +7/8,7/8,-z +7/8,-x,7/8 +7/8,x+1/4,3/8 +7/8,x+1/4,7/8 +7/8,x+1/8,1/8 +7/8,x+1/8,7/8 +7/8,-x+5/8,3/8 +7/8,-x+5/8,5/8 +7/8,-y,7/8 +7/8,-y,y+3/4 +7/8,y+1/2,y+1/4 +7/8,y+1/2,-y+1/4 +7/8,-y+1/2,-y+3/4 +7/8,-y+3/8,-y+5/8 +7/8,-y+5/8,-y+3/8 +7/8,-y+7/8,-y+1/8 +7/8,y+7/8,y+5/8 +coord +x,0,0 +-x,0,0 +x,0,1/2 +-x,0,1/2 +x,0,1/3 +x,0,1/4 +-x,0,1/4 +x,0,1/6 +x,0,1/8 +x,0,2/3 +x,0,3/4 +-x,0,3/4 +-x,0,3/8 +x,0,5/6 +-x,0,5/8 +x,0,7/8 +x,0,-x +-x,0,x +x,0,z +x,0,-z +-x,0,z +-x,0,-z +x,0,z+1/2 +x,0,-z+1/2 +-x,0,z+1/2 +-x,0,-z+1/2 +x,1/2,0 +-x,1/2,0 +x,1/2,1/2 +-x,1/2,1/2 +x,1/2,1/4 +-x,1/2,1/4 +x,1/2,3/4 +-x,1/2,3/4 +x,1/2,z +x,1/2,-z +-x,1/2,z +-x,1/2,-z +x,1/2,z+1/2 +x,1/2,-z+1/2 +-x,1/2,z+1/2 +-x,1/2,-z+1/2 +x,1/4,0 +x,1/4,1/2 +-x,1/4,1/2 +x,1/4,1/4 +-x,1/4,1/4 +x,1/4,1/8 +x,1/4,3/4 +-x,1/4,3/4 +x,1/4,-y +-x,1/4,-y +x,1/4,-y+1/2 +x,1/4,z +-x,1/4,z +-x,1/4,-z +x,1/4,z+3/4 +-x,1/4,-z+3/4 +x,1/8,1/8 +x,1/8,5/8 +x,2x,0 +-x,-2x,0 +x,2x,1/2 +-x,-2x,1/2 +x,2x,1/3 +x,2x,1/4 +-x,-2x,1/4 +x,2x,1/6 +x,2x,2/3 +x,2x,3/4 +-x,-2x,3/4 +x,2x,5/6 +x,2x,z +x,2x,-z +-x,-2x,z +-x,-2x,-z +x,2x,-z+1/2 +-x,-2x,z+1/2 +-x,3/4,0 +-x,3/4,1/2 +x,3/4,1/4 +-x,3/4,1/4 +x,3/4,1/8 +-x,3/4,1/8 +-x,3/4,3/4 +x,3/4,3/8 +-x,3/4,7/8 +x,3/4,y +-x,3/4,y +-x,3/4,y+1/2 +x,3/4,-z +-x,3/4,z +-x,3/4,-z +-x,7/8,3/8 +-x,7/8,7/8 +x,x,0 +x,-x,0 +-x,x,0 +-x,-x,0 +x,-x,1/12 +x,x,1/2 +x,-x,1/2 +-x,x,1/2 +-x,-x,1/2 +x,x,1/3 +x,-x,1/3 +-x,x,1/3 +-x,-x,1/3 +x,x,1/4 +x,-x,1/4 +-x,x,1/4 +-x,-x,1/4 +x,x,1/6 +x,-x,1/6 +-x,x,1/6 +-x,-x,1/6 +x,-x,1/8 +-x,-x,1/8 +x,-x,11/12 +x,x,2/3 +x,-x,2/3 +-x,x,2/3 +-x,-x,2/3 +x,x,3/4 +x,-x,3/4 +-x,x,3/4 +-x,-x,3/4 +x,x,3/8 +-x,x,3/8 +-x,x,5/12 +x,x,5/6 +x,-x,5/6 +-x,x,5/6 +-x,-x,5/6 +x,x,5/8 +-x,x,5/8 +-x,x,7/12 +x,-x,7/8 +-x,-x,7/8 +x,x,x +x,x,-x +x,-x,x +x,-x,-x +-x,x,x +-x,x,-x +-x,-x,x +-x,-x,-x +x,x,-x+1/2 +-x,-x,x+1/2 +x,x,z +x,x,-z +x,-x,z +x,-x,-z +-x,x,z +-x,x,-z +-x,-x,z +-x,-x,-z +x,x,z+1/2 +x,-x,z+1/2 +x,-x,-z+1/2 +-x,x,z+1/2 +-x,x,-z+1/2 +-x,-x,-z+1/2 +x,x+1/2,0 +x,-x+1/2,0 +-x,x+1/2,0 +-x,-x+1/2,0 +x,x+1/2,1/2 +x,-x+1/2,1/2 +-x,x+1/2,1/2 +-x,-x+1/2,1/2 +x,x+1/2,1/4 +x,-x+1/2,1/4 +-x,x+1/2,1/4 +-x,-x+1/2,1/4 +x,x+1/2,3/4 +x,-x+1/2,3/4 +-x,x+1/2,3/4 +-x,-x+1/2,3/4 +x,-x+1/2,x +-x,x+1/2,-x +x,-x+1/2,x+1/2 +x,-x+1/2,-x+1/2 +-x,x+1/2,x+1/2 +-x,x+1/2,-x+1/2 +-x,-x+1/2,x+1/2 +x,x+1/2,z +x,x+1/2,-z +x,-x+1/2,z +-x,x+1/2,-z +-x,-x+1/2,z +-x,-x+1/2,-z +x,x+1/2,-z+1/2 +x,-x+1/2,z+1/2 +x,-x+1/2,-z+1/2 +-x,x+1/2,z+1/2 +-x,x+1/2,-z+1/2 +-x,-x+1/2,z+1/2 +x,x+1/4,1/8 +x,-x+1/4,5/8 +x,x+1/4,7/8 +x,-x+1/4,7/8 +-x,x+1/4,x+1/4 +x,-x+1/4,-x+3/4 +-x,x+3/4,1/8 +-x,-x+3/4,1/8 +-x,x+3/4,3/8 +-x,-x+3/4,7/8 +-x,x+3/4,x+1/4 +x,-x+3/4,-x+3/4 +-x,-x+y,0 +-x,-x+y,1/2 +-x,-x+y,1/4 +-x,-x+y,3/4 +-x,-x+z,0 +x,x-y,0 +x,x-y,1/2 +x,x-y,1/4 +x,x-y,3/4 +x,x-z,0 +x,y,0 +x,-y,0 +-x,y,0 +-x,-y,0 +x,y,1/2 +x,-y,1/2 +-x,y,1/2 +-x,-y,1/2 +x,y,1/4 +-x,y,1/4 +x,-y,3/4 +-x,-y,3/4 +-x,y+1/2,1/4 +x,-y+1/2,3/4 +x,-z,0 +-x,z,0 +-x,-z,0 +x,-z,1/2 +-x,z,1/2 +x,-z,1/4 +-x,-z,1/4 +x,z,3/4 +-x,z,3/4 +-x,-z,3/4 +x,z,x +x,z,-x +x,-z,x +x,-z,-x +-x,z,x +-x,z,-x +-x,-z,x +-x,-z,-x +x,-z+1/2,-x+1/2 +-x,z+1/2,x+1/2 +x+1/2,0,1/2 +-x+1/2,0,1/2 +x+1/2,0,1/4 +-x+1/2,0,3/4 +x+1/2,0,-z +-x+1/2,0,z +x+1/2,1/2,0 +-x+1/2,1/2,0 +x+1/2,1/2,1/2 +-x+1/2,1/2,1/2 +x+1/2,1/2,-x+1/2 +-x+1/2,1/2,x+1/2 +x+1/2,1/2,-z +-x+1/2,1/2,z +-x+1/2,1/4,0 +x+1/2,1/4,1/2 +-x+1/2,1/4,1/2 +x+1/2,1/4,1/4 +-x+1/2,1/4,1/4 +x+1/2,1/4,3/4 +-x+1/2,1/4,3/4 +-x+1/2,1/4,5/8 +x+1/2,1/4,-z +-x+1/2,1/4,z +x+1/2,1/4,-z+1/2 +x+1/2,1/4,-z+3/4 +-x+1/2,1/4,z+3/4 +x+1/2,3/4,0 +x+1/2,3/4,1/2 +x+1/2,3/4,1/4 +-x+1/2,3/4,1/4 +x+1/2,3/4,3/4 +-x+1/2,3/4,3/4 +x+1/2,3/4,3/8 +x+1/2,3/4,5/8 +-x+1/2,3/4,5/8 +-x+1/2,3/4,7/8 +x+1/2,3/4,-z +-x+1/2,3/4,z+1/2 +-x+1/2,7/8,3/8 +x+1/2,x,0 +x+1/2,-x,0 +-x+1/2,x,0 +-x+1/2,-x,0 +x+1/2,x,1/2 +x+1/2,-x,1/2 +-x+1/2,x,1/2 +-x+1/2,-x,1/2 +x+1/2,x,1/4 +x+1/2,-x,1/4 +-x+1/2,x,1/4 +-x+1/2,-x,1/4 +x+1/2,x,3/4 +x+1/2,-x,3/4 +-x+1/2,x,3/4 +-x+1/2,-x,3/4 +x+1/2,-x,-x +-x+1/2,x,x +x+1/2,x,-x+1/2 +x+1/2,-x,x+1/2 +x+1/2,-x,-x+1/2 +-x+1/2,x,-x+1/2 +-x+1/2,-x,x+1/2 +x+1/2,x,z +x+1/2,-x,z +x+1/2,-x,-z +-x+1/2,x,z +-x+1/2,x,-z +-x+1/2,-x,-z +x+1/2,x,z+1/2 +x+1/2,x,-z+1/2 +x+1/2,-x,z+1/2 +x+1/2,-x,-z+1/2 +-x+1/2,x,z+1/2 +-x+1/2,x,-z+1/2 +-x+1/2,-x,-z+1/2 +x+1/2,x+1/2,0 +x+1/2,-x+1/2,0 +-x+1/2,x+1/2,0 +-x+1/2,-x+1/2,0 +x+1/2,x+1/2,1/2 +x+1/2,-x+1/2,1/2 +-x+1/2,x+1/2,1/2 +-x+1/2,-x+1/2,1/2 +x+1/2,-x+1/2,1/4 +-x+1/2,x+1/2,1/4 +-x+1/2,-x+1/2,1/4 +x+1/2,x+1/2,3/4 +x+1/2,-x+1/2,3/4 +-x+1/2,x+1/2,3/4 +-x+1/2,-x+1/2,3/4 +x+1/2,x+1/2,-x +x+1/2,-x+1/2,-x +-x+1/2,x+1/2,x +-x+1/2,x+1/2,-x +-x+1/2,-x+1/2,x +x+1/2,x+1/2,x+1/2 +x+1/2,x+1/2,-x+1/2 +x+1/2,-x+1/2,x+1/2 +x+1/2,-x+1/2,-x+1/2 +-x+1/2,x+1/2,x+1/2 +-x+1/2,x+1/2,-x+1/2 +-x+1/2,-x+1/2,x+1/2 +-x+1/2,-x+1/2,-x+1/2 +x+1/2,x+1/2,-z +x+1/2,-x+1/2,-z +-x+1/2,x+1/2,z +-x+1/2,-x+1/2,z +x+1/2,-x+1/2,z+1/2 +x+1/2,-x+1/2,-z+1/2 +-x+1/2,x+1/2,z+1/2 +-x+1/2,x+1/2,-z+1/2 +x+1/2,x+1/4,3/8 +x+1/2,x+1/4,5/8 +x+1/2,-x+1/4,5/8 +x+1/2,-x+1/4,7/8 +x+1/2,-x+1/4,-x+3/4 +-x+1/2,x+3/4,1/8 +-x+1/2,x+3/4,3/8 +-x+1/2,-x+3/4,3/8 +-x+1/2,-x+3/4,5/8 +x+1/2,-x+3/4,-x+1/4 +-x+1/2,x+3/4,x+1/4 +x+1/2,-x+3/4,-z+1/4 +-x+1/2,x+3/4,z+1/4 +x+1/2,-y+1/2,0 +-x+1/2,y+1/2,0 +x+1/2,-y+1/2,1/2 +-x+1/2,y+1/2,1/2 +x+1/2,z,0 +-x+1/2,-z,0 +x+1/2,z,1/2 +-x+1/2,-z,1/2 +x+1/2,-z,x+1/2 +-x+1/2,z,-x+1/2 +x+1/2,z+1/2,1/4 +-x+1/2,-z+1/2,3/4 +x+1/2,z+1/2,-x +-x+1/2,-z+1/2,x +x+1/2,-z+3/4,-x+1/4 +-x+1/2,z+3/4,x+1/4 +x+1/4,0,0 +-x+1/4,0,0 +x+1/4,0,1/2 +-x+1/4,0,1/2 +x+1/4,0,1/4 +-x+1/4,0,1/4 +x+1/4,0,3/4 +-x+1/4,0,3/4 +-x+1/4,0,z +x+1/4,0,z+1/4 +-x+1/4,0,-z+1/4 +x+1/4,1/2,0 +-x+1/4,1/2,0 +x+1/4,1/2,1/2 +-x+1/4,1/2,1/2 +x+1/4,1/2,1/4 +-x+1/4,1/2,1/4 +x+1/4,1/2,3/4 +-x+1/4,1/2,3/4 +x+1/4,1/2,-z +x+1/4,1/2,-z+1/4 +-x+1/4,1/2,z+1/4 +x+1/4,1/4,0 +-x+1/4,1/4,0 +x+1/4,1/4,1/2 +-x+1/4,1/4,1/2 +x+1/4,1/4,1/4 +-x+1/4,1/4,1/4 +x+1/4,1/4,3/4 +-x+1/4,1/4,3/4 +-x+1/4,1/4,x+1/4 +x+1/4,1/4,z +x+1/4,1/4,-z +-x+1/4,1/4,z +-x+1/4,1/4,-z +x+1/4,1/4,-z+1/2 +-x+1/4,1/4,z+1/2 +x+1/4,3/8,7/8 +-x+1/4,5/8,1/8 +-x+1/4,5/8,5/8 +x+1/4,-x,x+1/4 +x+1/4,-x,x+3/4 +x+1/4,-x+1/2,x+3/4 +-x+1/4,x+1/2,-x+3/4 +x+1/4,-x+1/2,z+3/4 +-x+1/4,x+1/2,-z+3/4 +x+1/4,x+1/4,0 +x+1/4,-x+1/4,0 +-x+1/4,-x+1/4,0 +x+1/4,x+1/4,1/2 +-x+1/4,x+1/4,1/2 +-x+1/4,-x+1/4,1/2 +x+1/4,x+1/4,1/4 +x+1/4,-x+1/4,1/4 +-x+1/4,x+1/4,1/4 +-x+1/4,-x+1/4,1/4 +x+1/4,x+1/4,3/4 +x+1/4,-x+1/4,3/4 +-x+1/4,x+1/4,3/4 +-x+1/4,-x+1/4,3/4 +x+1/4,x+1/4,-x +x+1/4,x+1/4,x+1/4 +-x+1/4,-x+1/4,-x+1/4 +x+1/4,x+1/4,-x+3/4 +x+1/4,-x+1/4,x+3/4 +-x+1/4,-x+1/4,x+3/4 +x+1/4,-x+1/4,z +-x+1/4,x+1/4,-z +x+1/4,x+1/4,z+1/4 +-x+1/4,-x+1/4,-z+1/4 +x+1/4,x+1/4,-z+3/4 +x+1/4,-x+1/4,z+3/4 +-x+1/4,x+1/4,-z+3/4 +-x+1/4,-x+1/4,z+3/4 +x+1/4,-x+3/4,0 +-x+1/4,x+3/4,0 +-x+1/4,-x+3/4,0 +x+1/4,x+3/4,1/2 +x+1/4,-x+3/4,1/2 +-x+1/4,x+3/4,1/2 +x+1/4,x+3/4,1/4 +x+1/4,-x+3/4,1/4 +-x+1/4,x+3/4,1/4 +-x+1/4,-x+3/4,1/4 +x+1/4,x+3/4,3/4 +x+1/4,-x+3/4,3/4 +-x+1/4,x+3/4,3/4 +-x+1/4,-x+3/4,3/4 +-x+1/4,-x+3/4,x +-x+1/4,-x+3/4,x+1/2 +x+1/4,-x+3/4,x+1/4 +-x+1/4,x+3/4,x+1/4 +-x+1/4,x+3/4,-x+1/4 +x+1/4,x+3/4,-x+3/4 +x+1/4,-x+3/4,x+3/4 +x+1/4,-x+3/4,-x+3/4 +-x+1/4,x+3/4,x+3/4 +-x+1/4,-x+3/4,x+3/4 +x+1/4,x+3/4,z +x+1/4,x+3/4,-z +-x+1/4,-x+3/4,z +-x+1/4,-x+3/4,-z +x+1/4,x+3/4,z+1/4 +x+1/4,-x+3/4,z+1/4 +-x+1/4,x+3/4,-z+1/4 +-x+1/4,-x+3/4,-z+1/4 +x+1/4,-x+3/4,-z+3/4 +-x+1/4,x+3/4,z+3/4 +x+1/4,-z+1/2,x+3/4 +-x+1/4,z+1/2,-x+3/4 +x+1/4,z+1/4,x+1/4 +-x+1/4,-z+1/4,-x+1/4 +x+1/4,-z+3/4,-x+3/4 +-x+1/4,z+3/4,x+3/4 +-x+1/8,0,0 +x+1/8,1/4,1/4 +x+1/8,3/4,1/4 +x+1/8,3/4,3/4 +x+1/8,3/8,5/8 +x+1/8,3/8,7/8 +x+1/8,x+1/8,x+1/8 +-x+1/8,-x+1/8,-x+1/8 +x+1/8,x+1/8,z+1/8 +-x+1/8,-x+1/8,-z+1/8 +-x+1/8,x+3/8,x+3/8 +-x+1/8,x+3/8,-x+5/8 +x+1/8,x+5/8,-x+3/8 +x+1/8,x+5/8,-x+7/8 +-x+1/8,x+7/8,-x+5/8 +x+1/8,-x+7/8,-x+7/8 +x+1/8,z+1/8,x+1/8 +-x+1/8,-z+1/8,-x+1/8 +x+3/4,0,0 +-x+3/4,0,0 +x+3/4,0,1/2 +-x+3/4,0,1/2 +-x+3/4,0,1/4 +x+3/4,0,3/4 +-x+3/4,0,3/4 +x+3/4,0,z +x+3/4,1/2,0 +-x+3/4,1/2,0 +x+3/4,1/2,1/2 +-x+3/4,1/2,1/2 +x+3/4,1/2,1/4 +x+3/4,1/2,3/4 +-x+3/4,1/2,-z +x+3/4,1/4,0 +-x+3/4,1/4,0 +x+3/4,1/4,1/2 +-x+3/4,1/4,1/2 +x+3/4,1/4,1/4 +-x+3/4,1/4,1/4 +x+3/4,1/4,3/4 +-x+3/4,1/4,3/4 +x+3/4,1/4,z +-x+3/4,1/4,-z +x+3/4,1/4,z+1/2 +x+3/4,1/4,-z+1/2 +-x+3/4,1/4,-z+1/2 +-x+3/4,1/8,5/8 +-x+3/4,3/4,1/4 +x+3/4,3/4,-x+3/4 +x+3/4,3/8,3/8 +x+3/4,3/8,7/8 +-x+3/4,5/8,1/8 +-x+3/4,x,-x+1/4 +-x+3/4,x,-x+3/4 +-x+3/4,x+1/2,-x+1/4 +x+3/4,x+1/4,0 +x+3/4,-x+1/4,0 +-x+3/4,x+1/4,0 +x+3/4,-x+1/4,1/2 +-x+3/4,x+1/4,1/2 +-x+3/4,-x+1/4,1/2 +x+3/4,x+1/4,1/4 +x+3/4,-x+1/4,1/4 +-x+3/4,x+1/4,1/4 +-x+3/4,-x+1/4,1/4 +x+3/4,x+1/4,3/4 +x+3/4,-x+1/4,3/4 +-x+3/4,x+1/4,3/4 +-x+3/4,-x+1/4,3/4 +x+3/4,x+1/4,-x +x+3/4,x+1/4,-x+1/2 +-x+3/4,-x+1/4,x+1/2 +x+3/4,x+1/4,-x+1/4 +x+3/4,-x+1/4,-x+1/4 +-x+3/4,x+1/4,x+1/4 +x+3/4,x+1/4,-x+3/4 +x+3/4,-x+1/4,x+3/4 +x+3/4,-x+1/4,-x+3/4 +-x+3/4,x+1/4,x+3/4 +-x+3/4,x+1/4,-x+3/4 +x+3/4,x+1/4,z +x+3/4,x+1/4,-z +-x+3/4,-x+1/4,z +-x+3/4,-x+1/4,-z +x+3/4,x+1/4,-z+1/2 +-x+3/4,-x+1/4,z+1/2 +x+3/4,x+1/4,-z+1/4 +x+3/4,-x+1/4,-z+1/4 +-x+3/4,x+1/4,z+1/4 +-x+3/4,-x+1/4,z+1/4 +x+3/4,-x+1/4,z+3/4 +-x+3/4,x+1/4,-z+3/4 +x+3/4,x+3/4,0 +-x+3/4,x+3/4,0 +-x+3/4,-x+3/4,0 +x+3/4,x+3/4,1/2 +x+3/4,-x+3/4,1/2 +-x+3/4,-x+3/4,1/2 +x+3/4,x+3/4,1/4 +x+3/4,-x+3/4,1/4 +-x+3/4,x+3/4,1/4 +-x+3/4,-x+3/4,1/4 +x+3/4,x+3/4,3/4 +x+3/4,-x+3/4,3/4 +-x+3/4,x+3/4,3/4 +-x+3/4,-x+3/4,3/4 +-x+3/4,-x+3/4,x +x+3/4,x+3/4,-x+1/4 +x+3/4,-x+3/4,x+1/4 +-x+3/4,x+3/4,x+1/4 +-x+3/4,x+3/4,-x+1/4 +-x+3/4,-x+3/4,x+1/4 +x+3/4,x+3/4,x+3/4 +-x+3/4,-x+3/4,-x+3/4 +x+3/4,-x+3/4,-z +-x+3/4,x+3/4,z +x+3/4,x+3/4,-z+1/4 +-x+3/4,-x+3/4,z+1/4 +x+3/4,x+3/4,z+3/4 +x+3/4,-x+3/4,-z+3/4 +-x+3/4,x+3/4,z+3/4 +-x+3/4,-x+3/4,-z+3/4 +x+3/4,z+1/4,-x+1/2 +-x+3/4,-z+1/4,x+1/2 +x+3/4,-z+1/4,x+3/4 +-x+3/4,z+1/4,-x+3/4 +x+3/4,z+3/4,-x+1/4 +-x+3/4,-z+3/4,x+1/4 +x+3/8,1/2,0 +x+3/8,1/2,1/2 +-x+3/8,1/4,1/4 +-x+3/8,1/4,3/4 +x+3/8,-x+1/8,x+3/8 +-x+3/8,x+1/8,x+5/8 +x+3/8,x+3/8,-x+1/8 +x+3/8,x+3/8,x+3/8 +-x+3/8,-x+3/8,-x+3/8 +x+3/8,-x+5/8,-x+1/8 +x+3/8,-x+5/8,x+7/8 +-x+3/8,x+5/8,-x+7/8 +x+3/8,-x+5/8,z+7/8 +-x+3/8,x+5/8,-z+7/8 +x+3/8,-z+5/8,x+7/8 +-x+3/8,z+5/8,-x+7/8 +-x+5/8,0,0 +-x+5/8,0,1/2 +-x+5/8,3/8,1/8 +-x+5/8,3/8,3/8 +-x+5/8,-x+1/8,x+3/8 +-x+5/8,-x+1/8,x+7/8 +x+5/8,-x+3/8,x+1/8 +x+5/8,-x+7/8,x+1/8 +x+5/8,-x+7/8,-x+3/8 +-x+5/8,x+7/8,x+3/8 +x+5/8,-x+7/8,-z+3/8 +-x+5/8,x+7/8,z+3/8 +x+5/8,-z+7/8,-x+3/8 +-x+5/8,z+7/8,x+3/8 +x+7/8,1/2,1/2 +-x+7/8,1/4,3/4 +x+7/8,1/8,5/8 +x+7/8,1/8,7/8 +-x+7/8,3/4,1/4 +-x+7/8,5/8,1/8 +-x+7/8,5/8,3/8 +-x+7/8,x+1/8,x+5/8 +-x+7/8,x+1/8,-x+7/8 +x+7/8,x+3/8,-x+5/8 +-x+7/8,-x+3/8,x+5/8 +x+7/8,x+3/8,-z+5/8 +-x+7/8,-x+3/8,z+5/8 +x+7/8,-x+5/8,-x+1/8 +-x+7/8,-x+7/8,x+1/8 +x+7/8,x+7/8,x+7/8 +-x+7/8,-x+7/8,-x+7/8 +x+7/8,z+3/8,-x+5/8 +-x+7/8,-z+3/8,x+5/8 +-x+y,-x,0 +-x+y,-x,1/2 +-x+y,-x,1/4 +-x+y,y,0 +-x+y,y,1/2 +-x+y,y,1/4 +-x+y,y,3/4 +-x+z,0,-x +x+z,-2x+z,x+z +x+z,x+z,-2x+z +-x+z,z,0 +x-y,x,0 +x-y,x,1/2 +x-y,x,3/4 +x-y,-y,0 +x-y,-y,1/2 +x-y,-y,1/4 +x-y,-y,3/4 +x-z,0,x +-x-z,2x-z,-x-z +-x-z,-x-z,2x-z +x-z,-z,0 +y,0,0 +-y,0,0 +y,0,1/2 +-y,0,1/2 +y,0,1/4 +-y,0,1/4 +y,0,3/4 +-y,0,3/4 +y,0,x +y,0,-x +-y,0,x +-y,0,-x +y,0,y +y,0,-y +-y,0,y +-y,0,-y +y,0,y+1/2 +-y,0,-y+1/2 +y,0,z +y,0,-z +-y,0,z +-y,0,-z +y,0,z+1/2 +y,0,-z+1/2 +-y,0,z+1/2 +-y,0,-z+1/2 +y,1/2,0 +-y,1/2,0 +y,1/2,1/2 +-y,1/2,1/2 +y,1/2,1/4 +-y,1/2,1/4 +y,1/2,3/4 +-y,1/2,3/4 +y,1/2,x +y,1/2,-x +-y,1/2,x +-y,1/2,-x +y,1/2,y +y,1/2,-y +-y,1/2,y +-y,1/2,-y +y,1/2,y+1/2 +-y,1/2,-y+1/2 +y,1/2,z +y,1/2,-z +-y,1/2,z +-y,1/2,-z +y,1/2,z+1/2 +y,1/2,-z+1/2 +-y,1/2,z+1/2 +-y,1/2,-z+1/2 +-y,1/2,z+1/4 +y,1/4,0 +-y,1/4,0 +y,1/4,1/2 +-y,1/4,1/2 +y,1/4,1/4 +-y,1/4,1/4 +y,1/4,3/4 +y,1/4,x +y,1/4,-x +y,1/4,y +y,1/4,-y +-y,1/4,y +-y,1/4,-y +y,1/4,-y+1/2 +y,1/4,z +y,1/4,-z +-y,1/4,-z +y,1/4,z+1/2 +y,3/4,0 +-y,3/4,0 +y,3/4,1/2 +-y,3/4,1/2 +-y,3/4,1/4 +y,3/4,3/4 +-y,3/4,3/4 +-y,3/4,x +-y,3/4,-x +y,3/4,y +y,3/4,-y +-y,3/4,y +-y,3/4,-y +-y,3/4,y+1/2 +y,3/4,z +-y,3/4,z +-y,3/4,-z +-y,3/4,-z+1/2 +y,x,0 +y,-x,0 +-y,x,0 +-y,-x,0 +y,x,1/2 +y,-x,1/2 +-y,x,1/2 +-y,-x,1/2 +y,x,1/4 +-y,x,1/4 +-y,-x,1/4 +y,x,3/4 +y,-x,3/4 +-y,-x,3/4 +y,-x+y,0 +y,-x+y,1/2 +y,-x+y,3/4 +-y,x-y,0 +-y,x-y,1/2 +-y,x-y,1/4 +y,y,0 +y,-y,0 +-y,y,0 +-y,-y,0 +y,y,1/2 +y,-y,1/2 +-y,y,1/2 +-y,-y,1/2 +y,y,1/4 +y,-y,1/4 +-y,y,1/4 +-y,-y,1/4 +y,y,3/4 +y,-y,3/4 +-y,y,3/4 +-y,-y,3/4 +y,y+1/2,0 +-y,-y+1/2,0 +y,y+1/2,1/2 +-y,-y+1/2,1/2 +y,y+1/2,1/4 +y,-y+1/2,1/4 +-y,y+1/2,1/4 +-y,-y+1/2,1/4 +y,y+1/2,3/4 +y,-y+1/2,3/4 +-y,y+1/2,3/4 +-y,-y+1/2,3/4 +y,y+1/4,1/8 +y,-y+1/4,1/8 +y,y+1/4,5/8 +-y,y+1/4,5/8 +-y,y+3/4,3/8 +-y,-y+3/4,3/8 +-y,y+3/4,7/8 +y,z,0 +y,-z,0 +-y,z,0 +-y,-z,0 +y,z,1/2 +y,-z,1/2 +-y,z,1/2 +-y,-z,1/2 +y,z,1/4 +-y,z,1/4 +y,-z,3/4 +-y,z,3/4 +-y,-z,3/4 +y,-z+1/2,0 +-y,z+1/2,0 +y,-z+1/2,1/2 +-y,z+1/2,1/2 +y+1/2,0,1/4 +-y+1/2,0,1/4 +y+1/2,0,3/4 +-y+1/2,0,3/4 +y+1/2,0,-x+1/2 +-y+1/2,0,x+1/2 +y+1/2,0,y +-y+1/2,0,-y +y+1/2,0,-y+1/2 +-y+1/2,0,y+1/2 +y+1/2,0,y+1/4 +-y+1/2,0,-y+3/4 +y+1/2,0,z +-y+1/2,0,-z +y+1/2,0,z+1/2 +-y+1/2,0,-z+1/2 +y+1/2,0,z+3/4 +y+1/2,1/2,1/4 +-y+1/2,1/2,1/4 +y+1/2,1/2,3/4 +-y+1/2,1/2,3/4 +y+1/2,1/2,-x+1/2 +-y+1/2,1/2,x+1/2 +y+1/2,1/2,y +-y+1/2,1/2,-y +y+1/2,1/2,-y+1/2 +-y+1/2,1/2,y+1/2 +y+1/2,1/2,z+1/2 +y+1/2,1/2,-z+1/2 +-y+1/2,1/2,z+1/2 +-y+1/2,1/2,-z+1/2 +y+1/2,1/4,0 +y+1/2,1/4,1/2 +y+1/2,1/4,1/4 +y+1/2,1/4,3/4 +-y+1/2,1/4,3/4 +y+1/2,1/4,-x +y+1/2,1/4,y +y+1/2,1/4,-y +-y+1/2,1/4,y +-y+1/2,1/4,-y +-y+1/2,1/4,-y+1/2 +y+1/2,1/4,y+3/4 +-y+1/2,1/4,z +-y+1/2,1/4,z+1/2 +-y+1/2,3/4,0 +-y+1/2,3/4,1/2 +y+1/2,3/4,1/4 +-y+1/2,3/4,1/4 +-y+1/2,3/4,3/4 +-y+1/2,3/4,x +y+1/2,3/4,y +y+1/2,3/4,-y +-y+1/2,3/4,y +-y+1/2,3/4,-y +y+1/2,3/4,y+1/2 +-y+1/2,3/4,-y+1/4 +y+1/2,3/4,-z +y+1/2,3/4,-z+1/2 +-y+1/2,x,1/4 +y+1/2,-x,3/4 +y+1/2,x+1/2,0 +-y+1/2,-x+1/2,0 +y+1/2,x+1/2,1/2 +y+1/2,-x+1/2,1/2 +-y+1/2,x+1/2,1/2 +-y+1/2,-x+1/2,1/2 +y+1/2,y,0 +-y+1/2,-y,0 +y+1/2,y,1/2 +-y+1/2,-y,1/2 +-y+1/2,y,1/4 +y+1/2,-y,3/4 +y+1/2,-y+1/2,0 +-y+1/2,y+1/2,0 +y+1/2,-y+1/2,1/2 +-y+1/2,y+1/2,1/2 +-y+1/2,-y+1/2,1/4 +y+1/2,y+1/2,3/4 +y+1/2,y+1/4,1/2 +-y+1/2,-y+1/4,3/4 +y+1/2,-y+1/4,3/8 +y+1/2,y+1/4,7/8 +y+1/2,-y+1/4,7/8 +-y+1/2,-y+3/4,1/2 +y+1/2,y+3/4,1/4 +-y+1/2,-y+3/4,1/8 +y+1/2,y+3/4,3/8 +-y+1/2,y+3/4,5/8 +-y+1/2,-y+3/4,5/8 +-y+1/2,-y+3/4,7/8 +y+1/2,-z,0 +-y+1/2,z,0 +-y+1/2,z,1/4 +y+1/2,-z,3/4 +y+1/2,-z+1/2,0 +-y+1/2,z+1/2,0 +-y+1/4,0,0 +y+1/4,0,1/2 +-y+1/4,0,-y+1/4 +-y+1/4,0,y+3/4 +y+1/4,0,z +y+1/4,0,z+3/4 +y+1/4,0,z+7/8 +-y+1/4,0,-z+7/8 +-y+1/4,1/2,0 +y+1/4,1/2,1/2 +y+1/4,1/2,y+1/2 +y+1/4,1/2,y+1/4 +y+1/4,1/2,-y+3/4 +-y+1/4,1/2,-z +-y+1/4,1/2,-z+3/4 +y+1/4,1/2,-z+3/8 +-y+1/4,1/2,z+3/8 +y+1/4,1/4,-y+1/4 +-y+1/4,1/4,y+1/4 +y+1/4,1/4,y+3/4 +-y+1/4,1/4,y+3/4 +-y+1/4,1/4,-y+3/4 +y+1/4,1/4,z+3/4 +-y+1/4,1/4,-z+3/4 +y+1/4,1/8,y +-y+1/4,1/8,y +-y+1/4,3/4,-y+1/2 +y+1/4,3/4,-y+1/4 +-y+1/4,3/4,y+1/4 +y+1/4,3/4,y+3/4 +-y+1/4,3/4,-y+3/4 +y+1/4,3/4,-z+1/4 +-y+1/4,3/4,z+1/4 +-y+1/4,3/8,y+1/2 +y+1/4,5/8,y +y+1/4,5/8,-y +y+1/4,7/8,y+1/2 +-y+1/4,7/8,y+1/2 +y+1/4,y+1/2,0 +-y+1/4,-y+1/2,3/4 +-y+1/4,-y+1/4,0 +y+1/4,y+1/4,1/2 +y+1/4,-y+1/4,1/4 +-y+1/4,y+1/4,1/4 +y+1/4,-y+1/4,3/4 +-y+1/4,y+1/4,3/4 +-y+1/4,y+3/4,0 +y+1/4,-y+3/4,1/2 +y+1/4,y+3/4,1/4 +-y+1/4,-y+3/4,1/4 +y+1/4,y+3/4,3/4 +-y+1/4,y+3/4,3/4 +-y+1/4,-y+3/4,3/4 +-y+1/4,z,0 +y+1/4,-z,1/2 +y+1/8,1/8,-y+1/8 +-y+1/8,1/8,y+1/8 +y+1/8,1/8,-y+5/8 +-y+1/8,7/8,-y+7/8 +y+1/8,-y+1/8,1/8 +-y+1/8,y+1/8,1/8 +y+1/8,-y+5/8,5/8 +-y+1/8,-y+7/8,3/8 +y+3/4,0,0 +-y+3/4,0,1/2 +y+3/4,0,-y+1/4 +y+3/4,0,y+3/4 +-y+3/4,0,z +-y+3/4,0,z+3/4 +y+3/4,1/2,0 +-y+3/4,1/2,0 +y+3/4,1/2,1/2 +-y+3/4,1/2,1/2 +-y+3/4,1/2,-y+1/2 +-y+3/4,1/2,y+1/4 +-y+3/4,1/2,-y+3/4 +y+3/4,1/2,-z +y+3/4,1/2,-z+3/4 +y+3/4,1/4,y+1/2 +y+3/4,1/4,y+1/4 +-y+3/4,1/4,-y+1/4 +y+3/4,1/4,-y+3/4 +-y+3/4,1/4,y+3/4 +-y+3/4,1/8,-y+1/2 +y+3/4,3/4,y+1/4 +y+3/4,3/4,-y+1/4 +-y+3/4,3/4,-y+1/4 +y+3/4,3/4,-y+3/4 +-y+3/4,3/4,y+3/4 +y+3/4,3/8,-y +-y+3/4,3/8,-y +y+3/4,3/8,y+1/2 +y+3/4,5/8,-y+1/2 +-y+3/4,5/8,-y+1/2 +y+3/4,7/8,-y +-y+3/4,7/8,-y+1/2 +-y+3/4,-y+1/2,0 +y+3/4,y+1/2,1/4 +y+3/4,-y+1/4,0 +-y+3/4,y+1/4,1/2 +y+3/4,y+1/4,1/4 +y+3/4,-y+1/4,1/4 +-y+3/4,-y+1/4,1/4 +y+3/4,y+1/4,3/4 +-y+3/4,-y+1/4,3/4 +y+3/4,y+3/4,0 +-y+3/4,-y+3/4,1/2 +y+3/4,-y+3/4,1/4 +-y+3/4,y+3/4,1/4 +y+3/4,-y+3/4,3/4 +-y+3/4,y+3/4,3/4 +y+3/4,z,0 +-y+3/4,-z,1/2 +y+3/8,1/8,-y+3/8 +-y+3/8,5/8,y+3/8 +y+3/8,5/8,-y+7/8 +-y+3/8,7/8,-y+5/8 +-y+3/8,y+3/8,1/8 +y+3/8,-y+3/8,5/8 +-y+3/8,-y+5/8,7/8 +y+3/8,-y+7/8,5/8 +y+5/8,3/8,y+7/8 +-y+5/8,5/8,y+1/8 +-y+5/8,7/8,-y+3/8 +y+5/8,7/8,y+7/8 +-y+5/8,y+1/8,1/8 +-y+5/8,-y+3/8,7/8 +y+5/8,y+7/8,3/8 +-y+7/8,3/8,-y+1/8 +y+7/8,3/8,y+5/8 +-y+7/8,5/8,y+3/8 +-y+7/8,-y+1/8,7/8 +-y+7/8,y+3/8,5/8 +y+7/8,y+5/8,3/8 +y+7/8,y+5/8,7/8 +z,0,0 +-z,0,0 +z,0,1/2 +-z,0,1/2 +z,0,1/4 +-z,0,1/4 +z,0,3/4 +-z,0,3/4 +z,0,-x +-z,0,x +-z,0,-x +z,0,x+1/2 +-z,0,-x+1/2 +z,0,-x+z +-z,0,x-z +z,0,y +z,0,-y +-z,0,y +-z,0,-y +z,0,-y+1/2 +-z,0,y+1/2 +z,0,-y+1/4 +z,0,y+3/4 +z,1/2,0 +-z,1/2,0 +z,1/2,1/2 +-z,1/2,1/2 +-z,1/2,1/4 +z,1/2,3/4 +z,1/2,-x +-z,1/2,x +z,1/2,x+1/2 +-z,1/2,-x+1/2 +z,1/2,y +z,1/2,-y +-z,1/2,y +-z,1/2,-y +-z,1/2,y+1/4 +-z,1/2,-y+3/4 +z,1/4,0 +-z,1/4,0 +z,1/4,1/2 +z,1/4,1/4 +-z,1/4,1/4 +z,1/4,3/4 +-z,1/4,3/4 +-z,1/4,x +-z,1/4,-x +z,1/4,y +z,1/4,-y +z,1/4,-y+1/2 +z,3/4,0 +-z,3/4,0 +-z,3/4,1/2 +z,3/4,1/4 +-z,3/4,1/4 +z,3/4,3/4 +-z,3/4,3/4 +z,3/4,x +z,3/4,-x +-z,3/4,-x +z,3/4,-y +-z,3/4,y +-z,3/4,-y +-z,3/4,y+1/2 +z,x,0 +z,-x,0 +-z,x,0 +-z,-x,0 +z,x,1/2 +z,-x,1/2 +-z,-x,1/2 +z,x,1/4 +z,-x,1/4 +z,-x,3/4 +-z,x,3/4 +-z,-x,3/4 +z,x,x +z,x,-x +z,-x,x +z,-x,-x +-z,x,x +-z,x,-x +-z,-x,x +-z,-x,-x +z,-x+1/2,0 +-z,x+1/2,0 +z,-x+1/2,1/2 +-z,x+1/2,1/2 +z,-x+1/2,1/4 +-z,x+1/2,3/4 +z,-x+1/2,-x+1/2 +-z,x+1/2,x+1/2 +z,-x+1/4,0 +-z,x+1/4,1/2 +z,x+3/4,0 +-z,-x+3/4,1/2 +z,y,0 +z,-y,0 +-z,y,0 +-z,-y,0 +z,y,1/2 +z,-y,1/2 +-z,y,1/2 +-z,-y,1/2 +-z,y,1/4 +-z,-y,1/4 +z,y,3/4 +z,-y,3/4 +-z,-y,3/4 +z,y+1/2,0 +-z,-y+1/2,0 +z,z,z +-z,-z,-z +z+1/2,0,0 +-z+1/2,0,0 +z+1/2,0,1/2 +-z+1/2,0,1/2 +-z+1/2,0,1/4 +z+1/2,0,3/4 +z+1/2,0,-y +-z+1/2,0,y +z+1/2,0,-y+1/2 +-z+1/2,0,y+1/2 +z+1/2,1/2,0 +-z+1/2,1/2,0 +z+1/2,1/2,1/2 +-z+1/2,1/2,1/2 +z+1/2,1/2,1/4 +-z+1/2,1/2,1/4 +z+1/2,1/2,3/4 +-z+1/2,1/2,3/4 +z+1/2,1/2,-y +-z+1/2,1/2,y +z+1/2,1/4,0 +z+1/2,1/4,1/2 +-z+1/2,1/4,1/2 +z+1/2,1/4,1/4 +z+1/2,1/4,3/4 +z+1/2,1/4,x+1/2 +-z+1/2,3/4,0 +z+1/2,3/4,1/2 +-z+1/2,3/4,1/2 +-z+1/2,3/4,1/4 +-z+1/2,3/4,3/4 +-z+1/2,3/4,-x+1/2 +z+1/2,-x,x+1/2 +-z+1/2,x,-x+1/2 +-z+1/2,x+1/2,1/4 +z+1/2,-x+1/2,3/4 +z+1/2,x+1/2,-x +-z+1/2,-x+1/2,x +z+1/2,-x+3/4,-x+1/4 +-z+1/2,x+3/4,x+1/4 +z+1/2,y,0 +-z+1/2,-y,0 +z+1/2,y,1/2 +-z+1/2,-y,1/2 +z+1/2,y+1/2,0 +-z+1/2,-y+1/2,0 +z+1/2,y+1/2,1/2 +z+1/2,-y+1/2,1/2 +-z+1/2,y+1/2,1/2 +-z+1/2,-y+1/2,1/2 +z+1/2,z+1/2,z+1/2 +-z+1/2,-z+1/2,-z+1/2 +-z+1/4,0,0 +z+1/4,0,1/2 +z+1/4,1/2,0 +z+1/4,1/4,1/4 +z+1/4,1/4,3/4 +-z+1/4,3/4,1/4 +z+1/4,3/4,3/4 +-z+1/4,3/4,3/4 +z+1/4,-x+1/2,x+3/4 +-z+1/4,x+1/2,-x+3/4 +z+1/4,x+1/4,x+1/4 +-z+1/4,-x+1/4,-x+1/4 +z+1/4,-x+3/4,-x+3/4 +-z+1/4,x+3/4,x+3/4 +z+1/8,x+1/8,x+1/8 +-z+1/8,-x+1/8,-x+1/8 +z+3/4,0,0 +-z+3/4,0,1/2 +-z+3/4,1/2,0 +z+3/4,1/4,3/4 +-z+3/4,3/4,1/4 +z+3/4,3/4,3/4 +-z+3/4,3/4,3/4 +z+3/4,x+1/4,-x+1/2 +-z+3/4,-x+1/4,x+1/2 +z+3/4,-x+1/4,x+3/4 +-z+3/4,x+1/4,-x+3/4 +z+3/4,x+3/4,-x+1/4 +-z+3/4,-x+3/4,x+1/4 +z+3/8,-x+5/8,x+7/8 +-z+3/8,x+5/8,-x+7/8 +z+5/8,-x+7/8,-x+3/8 +-z+5/8,x+7/8,x+3/8 +z+7/8,x+3/8,-x+5/8 +-z+7/8,-x+3/8,x+5/8 + diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/aflow_structures.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/aflow_structures.json new file mode 100755 index 000000000000..d8768c7fa360 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/aflow_structures.json @@ -0,0 +1 @@ +{ "1": [ "AB2_aP12_1_4a_8a-001","ABC2_aP16_1_4a_4a_8a-001","A5B11CD8E_aP26_1_5a_11a_a_8a_a-001" ],"10": [ "A2B_mP6_10_mn_bc-001","AB_mP6_10_bn_cm-001","ABC2_mP8_10_ac_eh_mn-001","A_mP8_10_2m2n-001","AB3_mP16_10_mn_3m3n-001","A2B2C3D10E_mP18_10_m_ac_en_3m2n_g-001" ],"100": [ "ABC2_tP8_100_b_a_c-001","ABC3_tP10_100_b_a_bc-001","A2B8C2D_tP26_100_c_abcd_c_a-001","A3B11C6_tP40_100_ac_bc2d_cd-001" ],"101": [ "A7B7C2_tP32_101_ade_bde_d-001" ],"102": [ "A2B3_tP20_102_2c_b2c-001" ],"103": [ "AB4_tP10_103_a_d-001","A6B2C_tP72_103_abc5d_2d_abc-001" ],"104": [ "AB6C4_tP22_104_a_2ac_c-001","A5B5C4_tP28_104_ac_ac_c-001" ],"105": [ "A2BC2_tP20_105_f_bc_2d-001" ],"106": [ "A3BC3D_tP64_106_3c_c_3c_c-001" ],"107": [ "AB_tI4_107_a_a-001","ABC3_tI10_107_a_a_ab-001","A2B_tI24_107_2abc_2ab-001","A5B7_tI24_107_ac_abd-001" ],"108": [ "A3B5_tI32_108_ac_a2c-001" ],"109": [ "AB_tI8_109_a_a-001","ABC_tI12_109_a_a_a-001" ],"11": [ "AB_mP4_11_e_e-001","AB2_mP6_11_e_2e-001","ABC_mP6_11_e_e_e-001","A2BC_mP8_11_2e_e_e-001","A3B_mP8_11_3e_e-001","A2B3_mP10_11_2e_3e-001","ABC3_mP10_11_e_e_ef-001","AB4C_mP12_11_e_2ef_e-001","AB3_mP16_11_2e_2e2f-001","A_mP16_11_8e-001","A2B5C2_mP18_11_2e_e2f_2e-001","A2BC2_mP20_11_4e_2e_4e-001","A7B3_mP20_11_7e_3e-001","AB2CD6_mP20_11_e_2e_e_2e2f-001","A6B5_mP22_11_6e_5e-001","A7B2C2_mP22_11_3e2f_2e_ab-001","AB3_mP24_11_3e_9e-001","A2B3_mP30_11_6e_9e-001" ],"110": [ "A2BC8_tI176_110_2b_b_8b-001" ],"111": [ "A2BC4_tP7_111_e_b_n-001","AB_tP8_111_n_n-001","A2B_tP12_111_2n_bce-001","A9B9C16_tP34_111_ajn_bcdek_2no-001" ],"112": [ "AB4C_tP12_112_b_n_e-001" ],"113": [ "AB3_tP8_113_a_ce-001","AB4CD2_tP16_113_c_f_a_e-001","A2BC7D2_tP24_113_e_a_cef_e-001" ],"114": [ "A4B_tP10_114_e_a-001","A3B_tP32_114_3e_e-001","A2B12C4D4E_tP46_114_d_3e_e_e_a-001","A19B15_tP68_114_ac4e_bc3e-001" ],"115": [ "ABC2_tP4_115_a_c_g-001","A2B3_tP5_115_g_ag-001","AB3C2_tP6_115_a_bg_g-001","AB2_tP12_115_j_egi-001","A3B4_tP84_115_acef3g3j3k_6j6k-001" ],"116": [ "A2B3_tP20_116_adi_ej-001","A4B7_tP44_116_ach2i_e3j-001","A17B10_tP108_116_e8j_ad2g2h5i-001" ],"117": [ "A2B3_tP20_117_i_adgh-001" ],"118": [ "A3B_tP16_118_ei_f-001","A5B3_tP32_118_f2i_aceh-001" ],"119": [ "AB_tI4_119_c_a-001","A2BC_tI8_119_ac_b_d-001","AB2C_tI8_119_c_e_a-001","A3B_tI24_119_a2i_bf-001","A2B7C2_tI44_119_i_acefgh_i-001" ],"12": [ "A_mC4_12_i-001","A2B_mC6_12_i_a-001","AB2_mC6_12_a_i-001","AB2_mC6_12_a_i-003","AB2_mC6_12_a_i-004","A2B_mC12_12_2i_i-004","A2B_mC12_12_2i_i-006","A2B_mC12_12_2i_i-007","AB2_mC12_12_i_aci-001","ABC_mC12_12_i_i_i-003","A3B4_mC14_12_ai_2i-001","A3B4_mC14_12_ai_2i-002","A5B2_mC14_12_a2i_i-001","AB2C_mC16_12_g_2i_i-001","AB3_mC16_12_g_ij-001","AB_mC16_12_2i_2i-001","AB_mC16_12_2i_2i-002","AB_mC16_12_2i_2i-003","AB_mC16_12_aci_2i-001","A_mC16_12_4i-001","A2B5C2_mC18_12_i_a2i_i-001","AB2_mC18_12_ai_3i-002","AB6C2_mC18_12_a_3i_i-004","A2B3_mC20_12_2i_3i-001","A2B3_mC20_12_2i_3i-003","A2B3_mC20_12_eh_ij-001","A3B2_mC20_12_3i_2i-001","A3B2_mC20_12_3i_2i-002","ABC3_mC20_12_g_i_ij-001","A7B2C2_mC22_12_aij_h_i-001","A8B3_mC22_12_4i_ai-001","A2BC3_mC24_12_acg_h_ij-002","A2B_mC24_12_4i_2i-004","A3B2CD6_mC24_12_ag_h_c_ij-001","A3B6CD2_mC24_12_ag_ij_c_h-001","A3BC2_mC24_12_ij_g_hi-001","A7B5_mC24_12_a3i_c2i-001","AB5_mC24_12_i_g2ij-001","ABC2_mC24_12_ah_cg_ij-001","ABC4_mC24_12_i_i_4i-001","AB_mC24_12_3i_3i-001","A8B5_mC26_12_2ij_ahi-001","AB4C8_mC26_12_a_2i_4i-001","A11B3_mC28_12_a5i_ci-001","A5B8C_mC28_12_a2i_4i_c-001","AB13_mC28_12_a_c2i2j-001","A4B_mC30_12_gi2j_ai-001","A7B8_mC30_12_aehi_2ij-001","A2B5C_mC32_12_ei_3ij_i-001","A4BC3_mC32_12_2j_i_ghi-002","AB_mC32_12_4i_4i-001","A13B4_mC34_12_a6i_2i-001","A_mC34_12_ah3i2j-001","A6BC2_mC36_12_6i_i_2i-001","A2B3C5_mC40_12_2i_3i_5i-001","AB6C2D_mC40_12_ac_gh4i_j_bd-001","A2B12CD6_mC42_12_i_2i2j_a_ij-001","A7B4_mC44_12_ac6i_4i-001","AB5_mC48_12_2i_ac5i2j-001","AB8C4_mC52_12_i_gi3j_2j-001","AB3CD2_mC56_12_2i_eg2ij_2i_2j-001","A16B17_mC66_12_4i2j_aeh4ij-001","A12B29_mC82_12_6i_a14i-001","A2B2C5D24E8_mC82_12_h_i_agh_2i5j_2j-001","A5B2C2D10E2_mC84_12_acghj_bdi_2i_5j_j-001","A13B4_mC102_12_ah8i5j_4ij-001","A45B7_mC104_12_a8i7j_cij-001","A8B2CD15E2_mC112_12_2i3j_j_ac_g4i5j_2i-001","AB6C11D6E4_mC112_12_e_gi2j_i5j_2i2j_2j-001" ],"120": [ "A4BC2_tI28_120_i_a_h-001","AB8C8D_tI72_120_b_2i_2i_c-001" ],"121": [ "AB2_tI12_121_ab_i-001","A2BC4D_tI16_121_d_a_i_b-001","AB3C4_tI16_121_a_bd_i-001","ABC4D2_tI16_121_a_b_i_c-001","AB3C8_tI24_121_a_bd_2i-001","AB3_tI32_121_f_g2i-001","A2B2C6D_tI44_121_i_i_ij_c-001" ],"122": [ "ABC2_tI16_122_a_b_d-001","A3B2C2_tI28_122_ad_c_d-001","A2BC2_tI40_122_e_d_e-001","A4BC4D_tI40_122_e_b_e_a-001","AB2_tI48_122_cd_2e-001","A8BC4D_tI56_122_2e_b_e_a-001","A19B44_tI252_122_ac4e_2d10e-001" ],"123": [ "AB_tP2_123_a_d-001","AB_tP2_123_a_d-002","AB2_tP3_123_a_h-001","ABC_tP3_123_c_a_b-001","AB3_tP4_123_a_ce-001","ABC2_tP4_123_a_d_e-001","A3BC_tP5_123_ah_c_b-001","AB2C2_tP5_123_b_e_ac-001","AB4C_tP6_123_b_eg_c-001","ABC2D2_tP6_123_b_a_e_h-001","A4B2C_tP7_123_j_e_a-001","AB5C_tP7_123_b_ci_a-001","AB6C_tP8_123_a_hi_b-001","A4BC4D_tP10_123_gh_a_i_d-001","A8B2C_tP11_123_r_e_b-001","A8B2C_tP11_123_r_h_a-001","AB2C2D5E_tP11_123_a_h_h_ci_b-001","AB8C2_tP11_123_a_ehi_g-003","AB3_tP12_123_ae_cghi-001","A2BC2DE7_tP13_123_g_b_h_c_ahi-001","A3B11C_tP15_123_ag_ch2i_b-001","A5B19C2_tP26_123_a2g_ce2h3i_g-001" ],"124": [ "AB4_tP10_124_a_m-001","AB4C_tP12_124_a_m_c-001","AB8C2_tP22_124_a_n_h-001" ],"125": [ "A4B_tP10_125_m_a-001","ABC4_tP12_125_a_b_m-001","A6B_tP14_125_gm_c-001","AB2C4D_tP16_125_a_cd_m_b-001","A12BC2_tP30_125_2g2m_c_h-001" ],"126": [ "A2BC4_tP28_126_cd_e_k-001","ABC4D2E8_tP32_126_a_b_h_e_k-001","A4B10C2D34E4F9_tP252_126_k_ce2k_f_h8k_k_d2k-001" ],"127": [ "A2B3_tP10_127_g_ah-001","A2BC2_tP10_127_g_a_h-002","AB4C_tP12_127_a_eg_c-001","A5B2_tP14_127_cj_g-001","A2BC4D_tP16_127_g_c_j_b-001","A4B_tP20_127_ehj_g-001","AB2C3D2_tP32_127_g_eh_gk_k-001","AB3_tP40_127_di_cg2ij-001","A3B15C5_tP46_127_bh_cg2ij_di-001" ],"128": [ "A6B2C_tP18_128_eh_d_a-001","A3B5C2_tP40_128_dh_egh_h-001","A7B2C_tP40_128_egi_h_e-001","A3B14C5_tP44_128_ac_ehi_bg-001","A4BC16DE28F8_tP116_128_h_a_2i_b_g3i_i-001" ],"129": [ "AB_tP4_129_a_c-001","AB_tP4_129_c_c-001","A_tP4_129_ac-001","A2B_tP6_129_ac_c-001","ABC_tP6_129_a_c_b-001","ABC_tP6_129_c_a_c-001","A2BC_tP8_129_2c_a_c-002","ABC2_tP8_129_a_c_bc-002","ABCD_tP8_129_b_c_a_c-001","ABCD_tP8_129_c_b_a_c-001","A2BC2_tP10_129_ac_c_bc-001","A3B2_tP10_129_3c_2c-001","AB3C_tP10_129_c_ce_a-001","AB4C_tP12_129_c_i_a-001","AB4C_tP24_129_bc_ij_d-001","AB4C6DE_tP26_129_c_j_2ci_a_c-001","AB3_tP64_129_2cdi_2cfhijk-001" ],"13": [ "A2B_mP12_13_2g_ef-001","AB4C_mP12_13_e_2g_f-003","ABC4_mP12_13_e_a_2g-001","ABC2D6_mP20_13_e_e_g_3g-001","ABC8D2_mP24_13_e_f_4g_g-001","AB2C4_mP28_13_g_efg_4g-001","A5B3_mP32_13_ef4g_ab2g-001","A_mP32_13_8g-001","A3BC2D9_mP60_13_ef2g_ab_2g_ef8g-001","A8B23_mP62_13_4g_a11g-001","A_mP84_13_21g-001" ],"130": [ "A3B_tP16_130_cf_c-001","A2BC4_tP28_130_f_c_g-001","A5B3_tP32_130_cg_cf-001","A2B_tP48_130_2g_g-001","A18B10C_tP116_130_2c4g_2c2g_a-001" ],"131": [ "AB_tP4_131_c_e-001","A2B2C_tP10_131_j_l_f-001" ],"132": [ "AB6C_tP16_132_b_io_c-001","A2B2C4D_tP18_132_e_i_o_b-001" ],"133": [ "AB3_tP32_133_h_i2j-001","A4BC3_tP64_133_2k_h_i2j-001" ],"134": [ "A_tP50_134_a2m2n-001" ],"135": [ "A2B_tP24_135_gh_h-001","A4B2C_tP28_135_gh_h_d-001","A4B4C5D14_tP108_135_i_i_dfh_egh2i-001" ],"136": [ "A_tP4_136_f-001","A2B_tP6_136_f_a-001","AB_tP8_136_f_g-001","AB3C2_tP12_136_a_bd_f-001","A4B2C_tP14_136_i_f_a-001","A3B_tP16_136_cj_f-001","A6B2C_tP18_136_fj_e_a-001","AB8_tP18_136_a_2fi-001","A2B3_tP20_136_j_cfg-001","A2B3_tP20_136_j_dfg-001","A4BC4D2E2_tP26_136_fg_a_j_d_e-001","A4B4C4DE2_tP30_136_i_j_i_a_f-001","A_tP30_136_af2ij-001","AB14C2_tP68_136_f_ce2j2k_fg-001" ],"137": [ "A2B_tP6_137_d_a-001","AB2_tP6_137_a_d-001","AB4C_tP12_137_a_g_b-001","A4BC4_tP18_137_g_a_g-001","AB6C4_tP22_137_a_df_g-001","AB2_tP24_137_g_cdf-001","A2B3_tP40_137_cdf_3g-001" ],"138": [ "A_tP12_138_bi-001","A_tP16_138_j-001","A2BC4_tP28_138_i_c_aei-001" ],"139": [ "A_tI2_139_a-001","A_tI2_139_a-002","AB_tI4_139_a_b-002","AB_tI4_139_a_b-003","A_tI4_139_e-001","A2B_tI6_139_d_a-001","A2B_tI6_139_e_a-001","AB2_tI6_139_a_e-001","A3B_tI8_139_ad_b-001","AB_tI8_139_e_e-001","A_tI8_139_h-001","A2B2C_tI10_139_d_e_a-002","A2B2C_tI10_139_d_e_a-003","A2B3_tI10_139_e_ae-001","A4B_tI10_139_de_a-001","AB2C2_tI10_139_a_d_e-002","AB2C2_tI10_139_a_d_e-003","AB2C2_tI10_139_a_e_e-001","A2BCD2_tI12_139_e_a_b_d-001","A2BC2D2_tI14_139_e_a_c_e-001","A4B2C_tI14_139_ce_e_a-001","A4B3_tI14_139_2e_ae-001","AB2C4_tI14_139_a_e_cd-003","AB2C4_tI14_139_a_e_ce-001","A3B_tI16_139_cde_e-001","AB2C_tI16_139_e_ce_d-003","A2B3C2D2_tI18_139_e_ad_c_e-001","A4B2C2D_tI18_139_h_d_e_a-001","A4B5_tI18_139_i_ah-001","A8B_tI18_139_deh_a-001","A8B_tI18_139_hi_a-001","AB3C_tI20_139_ab_eh_d-001","AB7C2_tI20_139_a_bdg_e-001","A4B2C2DE2_tI22_139_2e_e_d_a_c-001","A7B3C2_tI24_139_aeg_be_e-001","A12B_tI26_139_fij_a-001","A4B2C2D4E_tI26_139_2e_e_d_g_a-001","A2BC2D8E2_tI30_139_e_a_e_2eg_e-001","A4B3C8_tI30_139_2e_ae_cdg-002","A10B4C3_tI34_139_c2eg_2e_ae-001","AB4C15D4_tI48_139_a_2e_bd2e2g_2e-001","A5B9C2_tI64_139_em_d2n_h-001","A10B11_tI84_139_dehim_eh2n-001","A6B2C3D_tI168_139_egikl2m_ejn_bh2n_acf-001" ],"14": [ "A2B_mP6_14_e_a-001","AB4_mP10_14_a_2e-001","A2B_mP12_14_2e_e-001","A2B_mP12_14_2e_e-011","A2B_mP12_14_2e_e-012","ABC_mP12_14_e_e_e-002","A2B3C2_mP14_14_e_ae_e-001","AB3_mP16_14_e_3e-002","AB3_mP16_14_e_3e-003","ABC2_mP16_14_e_e_2e-003","ABC2_mP16_14_e_e_2e-004","ABCD_mP16_14_e_e_e_e-001","AB_mP16_14_2e_2e-001","AB_mP16_14_2e_2e-002","A5B4_mP18_14_a2e_2e-001","A6B2C_mP18_14_3e_e_a-001","A2B2C_mP20_14_2e_2e_e-001","A2B3_mP20_14_2e_3e-002","A2B3_mP20_14_2e_3e-003","A3BC_mP20_14_3e_e_e-001","AB2C2_mP20_14_e_2e_2e-001","AB6C2D_mP20_14_a_3e_e_b-001","AB6C3_mP20_14_a_3e_be-001","A2B5C4_mP22_14_e_a2e_2e-001","A2B7C2_mP22_14_e_a3e_e-001","A2BC2D6_mP22_14_e_a_e_3e-001","A4B2C4D_mP22_14_2e_e_2e_a-001","A9B2_mP22_14_a4e_e-001","A2B_mP24_14_4e_2e-001","A3BC2_mP24_14_3e_e_2e-001","A4BC_mP24_14_4e_e_e-001","AB2C3_mP24_14_e_2e_3e-001","AB4C_mP24_14_ab_4e_e-001","AB4C_mP24_14_ac_4e_e-001","AB4C_mP24_14_e_4e_e-001","AB4C_mP24_14_e_4e_e-002","ABC4_mP24_14_e_e_4e-001","ABC4_mP24_14_e_e_4e-002","ABCD3_mP24_14_e_e_e_3e-001","AB_mP24_14_3e_3e-001","A2B4C_mP28_14_2e_4e_e-001","A2B4C_mP28_14_abe_4e_e-001","A3B3C_mP28_14_3e_3e_e-001","A3B4_mP28_14_3e_4e-001","A4BCD_mP28_14_4e_e_e_e-001","AB6_mP28_14_e_6e-001","A2B3C2D8_mP30_14_e_ae_e_4e-001","A2B5C_mP32_14_2e_5e_ab-001","A2B5C_mP32_14_2e_5e_e-001","A3B_mP32_14_6e_2e-001","AB2C4D_mP32_14_e_2e_4e_e-001","AB2C_mP32_14_2e_4e_2e-001","AB3_mP32_14_2e_6e-001","AB4C2D_mP32_14_e_4e_2e_e-001","AB_mP32_14_4e_4e-001","AB_mP32_14_4e_4e-002","AB_mP32_14_4e_4e-003","AB_mP32_14_4e_4e-004","A_mP32_14_8e-001","A_mP32_14_8e-002","AB4C2D2_mP36_14_e_4e_2e_2e-001","A7B2C_mP40_14_7e_2e_e-001","A2B7C2_mP44_14_2e_7e_2e-001","AB2C7D2_mP48_14_e_2e_7e_2e-001","ABC2_mP48_14_3e_3e_6e-001","A7B2C4_mP52_14_7e_2e_4e-001","A6B4C2D6E2FG6_mP54_14_3e_2e_e_3e_e_a_3e-001","A11B3_mP56_14_11e_3e-001","AB3C_mP60_14_3e_9e_3e-001","A_mP64_14_16e-001","A_mP64_14_16e-002","A2B12C3_mP68_14_2e_12e_3e-001","AB20C2D14E2_mP78_14_a_10e_e_7e_e-001","A8B2CD12E2_mP100_14_8e_2e_ab_12e_2e-001","A7B8_mP120_14_14e_16e-001","A2BC6_mP144_14_8e_4e_24e-001","AB10C4D4_mP152_14_2e_20e_8e_8e-001","A7B5C3D6_mP168_14_14e_10e_6e_12e-001","A30B30C8D8E_mP308_14_30e_30e_8e_8e_e-001" ],"140": [ "A2B_tI12_140_h_a-001","A2BC_tI16_140_h_d_a-001","AB3_tI16_140_b_ah-001","AB_tI16_140_ab_h-001","A5B_tI24_140_cl_a-001","A2BC4_tI28_140_h_a_k-001","AB6_tI28_140_a_hk-001","A3B5_tI32_140_ah_bk-001","A3B5_tI32_140_ah_cl-001","A5BC2_tI32_140_bl_a_h-001","A5BC2_tI32_140_cl_a_h-001","A5BC3_tI36_140_cl_b_ah-001","AB2C5D_tI36_140_a_h_cl_b-001","A31B20_tI204_140_b2gh3m_ac2fh3l-001" ],"141": [ "A_tI4_141_a-001","AB_tI8_141_a_b-001","A2B_tI12_141_e_a-001","A2B_tI12_141_e_a-002","ABC2_tI16_141_a_b_e-003","AB_tI16_141_e_e-001","A4B_tI20_141_h_a-001","A2B_tI24_141_2e_e-001","A4BC_tI24_141_h_a_b-001","AB_tI24_141_ae_be-001","A2BC4_tI28_141_c_b_h-001","A3B4_tI28_141_ad_h-001","A4B3_tI28_141_cd_ae-002","AB11_tI48_141_b_aci-001","AB2_tI48_141_h_2eg-001","A2B3_tI80_141_ceh_3h-001","A16B13_tI116_141_2hi_a2fh-001" ],"142": [ "A_tI16_142_f-001","AB2_tI48_142_d_ef-001","AB4C2_tI56_142_a_df_d-001","A3B_tI64_142_def_d-001","AB_tI64_142_ef_g-001","ABC4_tI96_142_e_ab_2g-001","AB2C8D2_tI104_142_a_f_2g_e-001","A2B3_tI160_142_deg_3g-001","A3B2_tI160_142_3g_abcef-001","A2B2C3D12E4_tI184_142_f_f_be_3g_g-001","A5B6C18_tI232_142_bg_dg_e2f3g-001" ],"143": [ "A4B6C_hP11_143_ad_2d_b-001","AB2_hP12_143_ad_bc2d-001","A4B14C3_hP21_143_ad_bc4d_d-001","AB3C9D_hP28_143_2a_2d_6d_bc-001","A5B_hP60_143_7a7b6c10d_3a3b4c-001" ],"144": [ "AB_hP6_144_a_a-001","A4B_hP15_144_4a_a-001","AB3C_hP45_144_3a_9a_3a-001" ],"145": [ "A2B3C3DE7_hP48_145_2a_3a_3a_a_7a-001" ],"146": [ "A3BC_hR5_146_b_a_a-001","A2B6CD_hR10_146_2a_2b_a_a-001","ABC3_hR10_146_2a_2a_2b-001","A3B7_hR20_146_2b_2a4b-001","AB2_hR27_146_3a2b_6b-001","AB4CD_hR42_146_2b_8b_2b_2b-001" ],"147": [ "A2B_hP9_147_g_ad-001","A2B_hP9_147_g_ad-002","A2B3C_hP12_147_abd_g_d-001","AB2CD8E2_hP14_147_a_d_b_dg_d-001","A2B3C_hP48_147_2d2g_4g_abef-001" ],"148": [ "A_hR6_148_f-001","AB3_hR8_148_c_f-001","AB6C_hR8_148_a_f_b-001","A2B3_hR10_148_abc_f-001","A2BCD6_hR10_148_c_a_b_f-001","AB3C_hR10_148_c_f_c-001","ABC3_hR10_148_c_c_f-001","A2BC2D8_hR13_148_c_a_c_cf-001","A6B6CD_hR14_148_f_f_a_b-001","A6B2C6D_hR15_148_f_c_f_a-001","A8B6C_hR15_148_cf_f_a-001","AB6C8_hR15_148_a_f_cf-001","AB_hR16_148_cf_cf-001","A2B15_hR17_148_c_ac2f-001","A2B_hR18_148_2f_f-001","A3B6C_hR20_148_f_2f_ab-001","A7B12C_hR20_148_ade_2f_b-001","ABC2_hR24_148_f_f_2f-001","AB_hR26_148_a2f_b2f-001","A2B12C3_hR34_148_2c_4f_f-001","A2B4C_hR42_148_2f_4f_f-001","AB2C4D_hR48_148_f_2f_4f_f-001","A30B23_hR53_148_5f_a2c3f-001","A8B9C24D19E3_hR63_148_cf_df_4f_a3f_bc-001" ],"149": [ "AB6CD_hP9_149_a_l_d_e-001","AB3_hP24_149_acgi_3l-001" ],"15": [ "A_mC4_15_e-001","AB_mC8_15_a_e-001","AB_mC8_15_a_e-003","A2B_mC12_15_f_a-001","A2B_mC12_15_f_e-001","AB3_mC16_15_e_af-001","ABC2_mC16_15_e_e_f-004","A2B2C_mC20_15_ac_f_e-001","AB4_mC20_15_e_2f-001","A2B_mC24_15_2f_ae-001","AB2C3_mC24_15_e_f_ef-001","A_mC24_15_2e2f-001","A2B5_mC28_15_f_e2f-001","A2B5_mC28_15_f_e2f-003","A3B4_mC28_15_ef_2f-001","A5B3_mC32_15_e2f_af-003","AB2C_mC32_15_ae_2f_f-001","AB5C2_mC32_15_e_e2f_f-001","AB5CD_mC32_15_e_e2f_e_a-001","ABC2_mC32_15_2e_2e_2f-002","AB_mC32_15_2ef_2f-001","AB_mC32_15_2f_2f-001","A2B6C_mC36_15_f_3f_e-001","A2BC4D2_mC36_15_f_e_2f_f-001","A3B2C5_mC40_15_ef_f_3ef-001","A4B_mC40_15_4f_f-001","ABC3_mC40_15_2e_f_3f-001","ABC6D2_mC40_15_e_e_3f_f-001","ABC6D2_mC40_15_e_e_3f_f-002","A6B5_mC44_15_ae2f_e2f-001","A7B2C2_mC44_15_e3f_f_f-001","A2B3C_mC48_15_aef_3f_2e-001","A2B_mC48_15_4f_2f-001","A2B_mC48_15_ae3f_2f-001","AB2C7D2_mC48_15_a_f_e3f_f-001","AB4C6D_mC48_15_e_2f_3f_e-001","ABC8D2_mC48_15_e_e_4f_f-001","A3BC3_mC56_15_3f_f_3f-001","AB4C4D4E_mC56_15_e_2f_2f_2f_a-001","AB6_mC56_15_f_6f-001","A3BC2D9_mC60_15_ef_a_f_e4f-001","A7B8_mC60_15_e3f_4f-001","A5BC2_mC64_15_5f_f_2f-001","A2B2C2DE2_mC72_15_2f_2f_2f_f_2f-001","AB5CD2_mC72_15_f_5f_f_2f-001","A2BC10D2E4_mC76_15_f_e_5f_f_2f-001","A2BCD12E3_mC76_15_f_e_a_6f_ef-001","A2B5_mC84_15_3f_e7f-001","ABC2_mC96_15_2e2f_3f_6f-001","A3B5C4D2_mC112_15_a3ef_5f_4f_2f-001","A2B4C2D17E6_mC124_15_f_2f_f_e8f_3f-001","AB11C3D_mC128_15_f_ae10f_3f_f-001","A2B3C9D3E_mC144_15_2f_abcef_9f_3f_de-001","A2B_mC144_15_12f_6f-001","A2B3C12D2_mC152_15_2f_3f_12f_aef-001","A3B16C20D3_mC168_15_ef_8f_10f_ef-001","A8B2CD12E2_mC200_15_8f_2f_ae_2e11f_2f-001" ],"150": [ "A2B_hP9_150_ef_ad-001","A6B2C_hP9_150_ef_d_a-001","ABC8D2_hP12_150_a_b_dg_d-001","A2B9C3_hP14_150_d_eg_ad-001","A2B12C6D_hP21_150_d_2g_ef_a-001","A2B14C3DE3_hP23_150_d_d2g_e_a_f-001","AB2CD6_hP30_150_e_c2d_f_3g-001","AB3C_hP30_150_ef_3g_c2d-001" ],"151": [ "A3B_hP24_151_3c_2a-001","A5B6_hP33_151_3a2b_3c-001" ],"152": [ "A_hP3_152_a-001","A2B_hP9_152_c_a-001","A2B3_hP15_152_c_ac-001","ABC4_hP18_152_a_b_2c-001","A3B6C13_hP66_152_ac_3c_a2b5c-001" ],"153": [ "A3B_hP24_153_3c_2a-001" ],"154": [ "AB_hP6_154_a_b-001","A_hP9_154_ac-001","AB2C2_hP15_154_a_ab_c-001","A2BC4D_hP24_154_c_a_2c_b-001" ],"155": [ "A3B2_hR5_155_e_c-001","AB3_hR8_155_c_de-001","AB2C2DE3_hR9_155_a_c_c_b_d-001","A4BC3D12_hR20_155_ad_b_e_2df-001","A9BC3_hR26_155_3cdef_c_f-001","ABC3_hR30_155_de_f_de2f-001" ],"156": [ "AB_hP4_156_ab_ab-001","AB2_hP9_156_2ab_a2b3c-001","AB_hP12_156_3a2bc_3a2bc-001","ABC4D_hP14_156_ac_bc_ab2d_ab-001" ],"157": [ "A5B6C2_hP13_157_2ac_2c_b-001" ],"158": [ "A3B_hP8_158_d_a-001" ],"159": [ "A2B3_hP20_159_bc_2c-001","AB4C7D_hP26_159_b_ac_a2c_b-001","A4B3_hP28_159_ab2c_2c-001" ],"16": [ "ABC4_oP12_16_ae_bd_2u-001" ],"160": [ "AB_hR2_160_a_a-002","AB2_hR3_160_a_2a-001","ABC_hR3_160_a_a_a-001","A3B_hR4_160_b_a-001","ABC2_hR4_160_a_a_2a-002","ABC2_hR4_160_a_a_2a-003","AB_hR4_160_2a_2a-001","AB3C_hR5_160_a_b_a-001","ABC3_hR5_160_a_a_b-001","ABC3_hR5_160_a_a_b-002","AB_hR6_160_3a_3a-001","AB_hR6_160_b_b-001","A3B4_hR7_160_3a_4a-001","AB3C2D_hR7_160_a_b_2a_a-001","A5BC2_hR8_160_5a_a_2a-001","AB_hR10_160_5a_5a-001","A3B7C_hR11_160_b_a2b_a-001","A8B2C3_hR13_160_2a2b_2a_b-001","AB4C8_hR13_160_a_ab_2a2b-001","A8B5_hR26_160_a3bc_a3b-001","A3B24C_hR28_160_b_2b3c_a-001" ],"161": [ "ABC3_hR10_161_a_a_b-001","A3BC3_hR14_161_b_a_b-001","A2BC4_hR42_161_2b_b_4b-001","A6BC18DEF21_hR96_161_2b_a_6b_a_a_7b-001" ],"162": [ "A2B6C_hP9_162_c_k_b-001","A6BC2_hP9_162_k_a_d-001","AB2_hP9_162_ad_k-001","A7BC10_hP18_162_ceg_a_hk-001" ],"163": [ "A6BC_hP16_163_i_b_c-001","ABC6D_hP18_163_c_b_i_d-001","AB2C6D_hP20_163_c_f_i_a-001","A3B2C6_hP22_163_cf_e_i-001","A5B6_hP22_163_abcf_i-001","AB2CD2_hP36_163_h_i_bf_i-001","A7B3_hP40_163_e2i_i-001" ],"164": [ "AB2_hP3_164_a_d-001","AB3_hP4_164_a_bd-001","ABC2_hP4_164_a_b_d-001","A2B2C_hP5_164_d_d_a-002","A2B3_hP5_164_d_ad-001","A2BC2_hP5_164_d_a_d-001","A3B2_hP5_164_ad_d-001","A2B_hP6_164_2d_d-001","ABC2_hP8_164_d_d_cd-001","A2BC6_hP9_164_d_a_i-001","A6B2C_hP9_164_i_d_a-001","A6BC2_hP9_164_i_a_d-001","A7B2_hP9_164_ac2d_d-001","A7B2_hP9_164_ai_d-001","AB2_hP9_164_ad_c2d-001","A2B3C6D_hP12_164_d_e_i_a-001","A4BC7_hP12_164_2d_a_bc2d-001","AB2C3_hP12_164_d_ae_i-001","ABC2_hP12_164_ad_bd_c2d-001","AB_hP12_164_c2d_c2d-001","A2B4C_hP14_164_abd_di_d-001","A3BC8D2_hP14_164_ad_b_di_d-001","A3B9CD2_hP15_164_ad_ei_b_d-001","A13B5_hP18_164_a2c4d_b2d-001","A16B2C_hP19_164_2d2i_d_a-001","ABC2D2E_hP21_164_bd_e_i_i_ac-001" ],"165": [ "A3B_hP24_165_adg_f-001","A3B_hP24_165_bdg_f-001","A4B2C9_hP30_165_2d_c_fg-001","A3B9C29D8_hP98_165_f_bdg_df4g_dg-001" ],"166": [ "A_hR1_166_a-001","A_hR1_166_a-002","AB_hR2_166_a_b-001","AB_hR2_166_a_b-003","A_hR2_166_c-001","A_hR2_166_c-002","A_hR2_166_c-003","AB2_hR3_166_a_c-004","A_hR3_166_ac-001","ABC2_hR4_166_a_b_c-001","ABC2_hR4_166_a_b_c-004","ABC2_hR4_166_a_b_c-009","A2B3_hR5_166_c_ac-001","AB2_hR6_166_c_2c-002","AB4C_hR6_166_a_2c_b-001","ABC_hR6_166_c_c_c-001","ABC_hR6_166_c_c_c-002","A2B4C_hR7_166_c_2c_a-001","A2BC4_hR7_166_c_a_2c-002","A3B2C2_hR7_166_d_ab_c-001","A3B4_hR7_166_ac_2c-001","A4B3_hR7_166_2c_ac-001","A4B3_hR7_166_2c_ac-002","A5B2_hR7_166_a2c_c-001","A6B_hR7_166_f_b-001","AB2C4_hR7_166_a_c_2c-002","AB4C2_hR7_166_a_2c_c-001","A3B_hR8_166_h_c-001","ABC6_hR8_166_a_b_h-001","A3B2_hR10_166_h_2c-001","A6B3C2_hR11_166_3c_ac_c-001","A8B3_hR11_166_4c_ac-001","A2BC_hR12_166_g_d_ac-001","A3B_hR12_166_ach_bc-001","AB3_hR12_166_ac_eh-001","A_hR12_166_2h-001","A3B2C8_hR13_166_ac_c_ch-002","A7B6_hR13_166_ah_3c-001","A8B3C2_hR13_166_ch_e_c-001","A13B2_hR15_166_a2h_c-001","A8B3C4_hR15_166_4c_ac_2c-001","AB7_hR16_166_c_c2h-001","A6BC10_hR17_166_3c_a_5c-001","A7B2_hR18_166_a2cdh_2c-001","A17B2_hR19_166_cegh_c-001","A2B17_hR19_166_c_cdfh-001","A4BC12D3_hR20_166_2c_a_2h_bc-001","AB6C2D_hR20_166_ab_2h_2c_c-001","A3B2C14D3_hR22_166_d_ab_c2h_e-001","AB4C2_hR28_166_2c_2c2h_abh-001","A5B21C24D12_hR62_166_a2c_ehi_fg2h_i-001","A_hR105_166_ac9h4i-001" ],"167": [ "A3B_hR8_167_e_b-001","A2B3_hR10_167_c_e-001","AB3C_hR10_167_b_e_a-001","ABC3_hR10_167_a_b_e-001","ABC3_hR10_167_a_b_e-002","A5B_hR12_167_ce_b-001","A3BC6_hR20_167_e_b_f-001","AB3C_hR20_167_c_f_c-001","A3BC7_hR22_167_e_b_af-001","A6BC3D_hR22_167_f_b_e_a-001","ABC2_hR24_167_e_e_2e-001","A9B3C2_hR28_167_ef_e_c-001","A2BC4_hR42_167_f_ac_2f-001","AB11C3D_hR64_167_c_be3f_f_c-001","A25B21_hR92_167_b2e3f_e3f-001" ],"168": [ "A2B13C4_hP57_168_d_c6d_2d-001","AB4C_hP72_168_2d_8d_2d-001" ],"169": [ "A2B3_hP30_169_2a_3a-001" ],"17": [ "A2B_oP12_17_abe_e-001","ABC3_oP40_17_abcd_2e_abcd4e-001" ],"170": [ "A2B3_hP30_170_2a_3a-001" ],"171": [ "A10B2C_hP39_171_5c_c_a-001" ],"172": [ "A10B2C_hP39_172_5c_c_a-001" ],"173": [ "A3B_hP8_173_c_b-001","ABC3_hP10_173_b_a_c-001","A4B3_hP14_173_bc_c-001","ABC4D_hP14_173_a_b_bc_b-001","AB3C7D_hP24_173_a_c_b2c_b-001","AB3C9D_hP28_173_a_c_3c_b-001","A3BCD3E15F3_hP52_173_c_b_b_c_5c_c-001" ],"174": [ "ABC_hP12_174_aj_dk_ej-001","A12B7C2_hP21_174_2j2k_ajk_cf-001","A9B2C13D3_hP27_174_jl_i_ajkl_bcd-001","A12B7_hP57_174_2j2k4l_ghi3j2k-001" ],"175": [ "A8B7C6_hP21_175_ck_aj_k-001","ABC_hP36_175_jk_jk_jk-001","A19B10_hP58_175_e2j2kl_djl-001","A27B7_hP68_175_chjk3l_ejk-001" ],"176": [ "A3B_hP8_176_h_c-001","A3B2_hP10_176_h_bc-001","AB3C2_hP12_176_b_h_f-001","A3B3C_hP14_176_h_h_c-001","A3B4_hP14_176_h_ch-002","A4B3_hP14_176_ch_h-001","A3B2_hP20_176_2h_ah-001","A10B3_hP26_176_bcfi_h-001","A10B3_hP26_176_c3h_h-001","A9B3C2_hP28_176_hi_af_f-001","A10B7_hP34_176_c3h_b2h-001","A9B2C9_hP40_176_hi_f_hi-001","A5BC12D3_hP42_176_fh_a_2hi_h-001","A14B3C5_hP44_176_e2hi_h_fh-001","A9B3C18D_hP62_176_hi_af_2h2i_b-001","A7B5C18D3_hP66_176_ci_bef_2h2i_h-001","A8B7C6_hP126_176_2h3i_acd6h_3i-001" ],"177": [ "A2B_hP36_177_j2lm_n-001","A7BCD15EF12_hP444_177_7n_n_jl_15n_n_12n-001" ],"178": [ "A_hP6_178_a-001","AB3_hP24_178_b_ac-001","A3BC_hP30_178_bc_b_a-001","A3B5_hP48_178_ac_a2bc-001" ],"179": [ "AB3_hP24_179_b_ac-001","AB4C12D2E_hP120_179_b_2c_6c_c_b-001" ],"18": [ "A2B_oP12_18_2c_c-001","AB3_oP16_18_ab_3c-001","AB12C5D2_oP40_18_a_6c_b2c_c-001" ],"180": [ "A2B_hP9_180_i_d-001","AB2_hP9_180_c_i-001","A2BCD2_hP18_180_f_c_b_i-001","A2B_hP18_180_fj_ac-001","AB4C_hP18_180_c_k_d-001","A8B_hP27_180_2ik_d-001" ],"181": [ "A2B_hP9_181_i_d-001","A2B4CD4_hP66_181_k_2k_f_2k-001","ABC4D_hP84_181_gi_bcf_4k_hj-001" ],"182": [ "AB3_hP8_182_c_g-001","ABC3_hP10_182_c_b_g-001","A5B_hP12_182_bcg_d-001","A2BC6_hP18_182_f_b_gh-001","AB3C6_hP20_182_c_af_i-001","A2B13C6D_hP44_182_bc_a2i_i_d-001" ],"183": [ "ABC_hP3_183_a_a_a-001","AB_hP6_183_c_ab-001","A21B13_hP136_183_abc3d6e2f_2ab3d5e-001" ],"184": [ "AB4C_hP72_184_d_4d_d-001","A13B6C24D4_hP188_184_2a4d_2d_8d_bd-001" ],"185": [ "A3B_hP8_185_c_a-001","A3B_hP24_185_ab2c_c-001","AB3_hP24_185_c_ab2c-001","A3BC_hP30_185_cd_c_ab-001","ABC3_hP30_185_ab_c_ab2c-001","A5B2_hP42_185_ab4c_abc-001","A36B11C12_hP118_185_4c4d_a2b2c_ab3c-001" ],"186": [ "AB_hP4_186_b_a-001","AB_hP4_186_b_b-001","A_hP4_186_ab-001","AB2_hP6_186_b_ab-001","ABC_hP6_186_b_b_a-003","ABC2_hP8_186_b_b_ab-001","ABCD_hP8_186_b_b_a_a-001","AB_hP8_186_ab_ab-001","AB_hP12_186_a2b_a2b-001","ABC2_hP16_186_ab_ab_a3b-001","AB_hP16_186_2a2b_2a2b-001","A5B3C_hP18_186_2a3b_2ab_b-001","A2B3_hP20_186_bc_2c-001","A3B7_hP20_186_c_b2c-001","A2B4C5_hP22_186_ab_4b_a4b-001","A3B8C2_hP26_186_c_ab2c_2b-001","A4BC7D_hP26_186_ac_b_a2c_b-001","A7B3C3_hP26_186_3a4b_2ab_a2b-001","AB6CD7_hP30_186_b_d_a_b2c-001","A3B9CD9_hP44_186_c_3c_b_cd-001","A5B3_hP48_186_3cd_3c-001","A24B11_hP70_186_2ab7c_ab3c-001" ],"187": [ "AB_hP2_187_a_d-001","ABC_hP3_187_b_c_e-001","AB3_hP4_187_a_bh-001","ABCD_hP4_187_c_b_a_f-001","A2BC2_hP5_187_ac_b_i-001","A2B_hP6_187_gi_ad-001","AB_hP8_187_gh_gh-001","A6BC4_hP11_187_jk_a_ck-001","A3B3C2_hP16_187_jk_jk_ak-001","A7B_hP24_187_ah2j2kn_j-001" ],"188": [ "A3BC_hP10_188_k_a_c-001","A2B2C7D2_hP26_188_i_h_cl_ab-001","AB9C4_hP28_188_a_kl_ck-001" ],"189": [ "A5B3_hP8_189_cf_g-001","A2B_hP9_189_fg_ad-001","A6B2C_hP9_189_fg_c_b-001","ABC_hP9_189_f_bc_g-003","AB_hP12_189_fg_eh-001","A7BC10_hP18_189_ceg_a_hi-001","A8BC3D6_hP18_189_agh_b_f_i-001","A9BC3D5_hP18_189_fi_a_g_bh-001","ABC4_hP18_189_f_g_fgj-001","A5B3C12_hP20_189_dg_f_2gj-001" ],"19": [ "A2B_oP12_19_2a_a-001","A2B_oP12_19_2a_a-002","AB3_oP16_19_a_3a-001","AB_oP16_19_2a_2a-001","A2B2C_oP20_19_2a_2a_a-001","AB4C_oP24_19_a_4a_a-001","A2B7C2_oP44_19_2a_7a_2a-001","A6BC4D_oP48_19_6a_a_4a_a-001","A4BC8D7_oP80_19_4a_a_8a_7a-001","AB2C_oP80_19_5a_10a_5a-001","A14BC11D_oP108_19_14a_a_11a_a-001" ],"190": [ "A5B3_hP16_190_bch_g-001","A2B_hP18_190_gh_bf-001","AB3C_hP20_190_ac_i_f-001","AB_hP24_190_i_afh-001","ABCD3_hP36_190_h_g_af_hi-001" ],"191": [ "A_hP1_191_a-001","AB2_hP3_191_a_d-001","A3B_hP4_191_bc_a-001","A2B_hP6_191_h_e-001","AB4C_hP6_191_a_h_b-001","AB5_hP6_191_a_cg-001","AB_hP6_191_f_ad-001","A3B4_hP7_191_f_de-001","AB5C3_hP9_191_b_ah_f-001","A3B_hP12_191_gl_f-001","A4BCD6_hP12_191_h_a_b_i-001","A9BC2_hP12_191_fm_a_c-001","A12B_hP13_191_cdei_a-001","A6B6C_hP13_191_i_cde_a-002" ],"192": [ "A2B3C18D6_hP58_192_c_f_lm_l-001","AB2_hP72_192_m_j2kl-001","A3BC2D30E12_hP96_192_f_a_c_l2m_m-001" ],"193": [ "A5B3_hP16_193_dg_g-001","A4B5_hP18_193_bg_dg-001","A3B_hP24_193_ack_g-001","AB3C_hP30_193_g_gk_bd-001" ],"194": [ "A_hP2_194_c-001","AB_hP4_194_a_c-003","AB_hP4_194_c_a-001","AB_hP4_194_c_a-003","AB_hP4_194_c_d-001","A_hP4_194_ac-001","A_hP4_194_bc-001","A_hP4_194_f-001","A2B_hP6_194_f_c-003","AB2_hP6_194_b_f-001","AB2_hP6_194_b_f-002","AB2_hP6_194_c_ad-001","AB2_hP6_194_c_f-001","ABC_hP6_194_c_d_a-001","A_hP6_194_h-001","A2BC_hP8_194_e_a_c-001","A3B_hP8_194_af_c-001","A3B_hP8_194_h_c-001","AB3_hP8_194_c_bf-001","ABC2_hP8_194_a_c_f-005","ABC2_hP8_194_b_a_f-001","ABC2_hP8_194_c_a_f-007","AB_hP8_194_ac_f-003","AB_hP8_194_ac_f-004","AB_hP8_194_f_f-003","A2B3_hP10_194_f_bf-001","A3B2_hP10_194_bf_ac-001","AB2C2_hP10_194_a_bc_f-001","AB2C2_hP10_194_a_f_f-001","ABC3_hP10_194_c_a_h-001","ABC3_hP10_194_c_a_h-002","A2B_hP12_194_cg_f-001","A3BC2_hP12_194_ce_d_f-001","AB2_hP12_194_f_ah-001","AB_hP12_194_af_bf-001","AB_hP12_194_cf_de-001","A5B2_hP14_194_abcf_f-001","A3B_hP16_194_gh_ac-001","AB3C4_hP16_194_c_af_ef-001","A2BC2D4_hP18_194_f_a_cd_ef-001","A3B5C_hP18_194_h_fh_a-001","AB9_hP20_194_c_bfk-001","A10B_hP22_194_bhj_c-001","A5B6_hP22_194_ach_gh-001","A3B_hP24_194_hk_bf-001","A3B_hP24_194_hk_bf-002","AB2_hP24_194_bh_fk-001","AB2_hP24_194_ef_fgh-001","AB3C2_hP24_194_f_k_bh-001","AB3_hP24_194_cf_abdk-001","A3BC9_hP26_194_h_a_hk-001","A9B3C_hP26_194_hk_h_a-001","A9B4_hP26_194_ce3f_ef-001","A5B2_hP28_194_ahk_ch-001","A9B2C3_hP28_194_hk_f_bf-001","A3BC2D9_hP30_194_bf_a_f_hk-001","AB3C_hP30_194_bf_hk_af-001","AB4_hP30_194_h_afhk-001","A2B3C3_hP32_194_cg_2h_k-001","A3B12C_hP32_194_af_2k_c-001","A13B5_hP36_194_a2e4f_b2f-001","A2B7_hP36_194_2f_aefhk-001","A3B2C9D3E_hP36_194_g_f_hk_h_a-001","A17B2_hP38_194_fgjk_bc-001","AB6CD6E6_hP40_194_c_gh_b_k_k-001","A23B4_hP54_194_fh3k_ah-001","A6B2C17D4_hP58_194_ab2f_e_fh2k_2f-001","A2B3_hP60_194_3fk_cdef2k-001","A12B19C_hP64_194_ab2fk_efh2k_c-001","A4B_hP90_194_e2fgh4k_hk-001" ],"195": [ "A7B12C_cP20_195_ag_3e_b-001","A12BC4_cP34_195_2j_ab_2e-001" ],"196": [ "A12B2C_cF60_196_h_ac_b-001","A12B14C35D4_cF260_196_abeg_2ef_cef2h_e-001","A22B5_cF432_196_abcd6efg4h_2efg-001" ],"197": [ "A4B_cI40_197_cde_c-001","A11B3C2_cI64_197_cdf_e_c-001","A13B20_cI66_197_af_2cf-001" ],"198": [ "AB_cP8_198_a_a-001","AB_cP8_198_a_a-002","A_cP8_198_2a-001","ABC_cP12_198_a_a_a-001","A3B_cP16_198_b_a-001","ABC3_cP20_198_a_a_b-001","ABC4D_cP28_198_a_a_ab_a-001","AB2C4D_cP32_198_a_2a_ab_a-001","A2B4C_cP56_198_ab_2a2b_2a-001","AB6C2_cP72_198_2a_4b_ab-001","A2B2C12D3_cP76_198_2a_2a_4b_b-001" ],"199": [ "AB_cI16_199_a_a-001","A2B3C2_cI28_199_a_b_a-002","AB2_cI36_199_b_c-001" ],"2": [ "A_aP4_2_aci-001","A2B_aP6_2_2i_i-001","A2B_aP6_2_aei_i-001","A_aP12_2_6i-001","AB12C_aP14_2_b_6i_c-001","AB_aP16_2_4i_4i-001","A2B2C5_aP18_2_2i_2i_5i-001","A4B4C_aP18_2_4i_4i_i-002","A3B12C2D4_aP21_2_ai_6i_i_2i-001","A_aP24_2_12i-001","ABC8D3_aP26_2_i_i_8i_3i-001","AB3C3_aP28_2_2i_6i_6i-001","AB3C_aP30_2_3i_9i_3i-001","A2B5C_aP32_2_4i_10i_2i-001","A3B_aP32_2_12i_4i-001","A3B2C10D3_aP36_2_be2i_2i_10i_3i-001","AB10C9D_aP42_2_bc_10i_9i_i-001","A2B7C2_aP44_2_4i_14i_4i-001","A12B2CD12_aP54_2_12i_2i_i_12i-001","A11B7_aP72_2_22i_14i-001" ],"20": [ "AB3_oC16_20_a_bc-001","A2B_oC24_20_abc_c-001","AB4C_oC24_20_a_2c_b-001","AB5C2_oC32_20_a_2abc_c-001","A2B_oC48_20_ab3c_2c-001" ],"200": [ "ABC3D6_cP11_200_a_b_c_f-001","A23B2C6_cP31_200_cij_ab_f-001","A2B11_cP39_200_f_begik-001" ],"201": [ "AB3C_cP60_201_be_fh_g-001","A3B11C3_cP68_201_be_efh_g-001","A7BC3_cP88_201_e2h_e_h-001","A28B5C12_cP90_201_e2h_bd_h-001","A41B6_cP188_201_b2efg5h_h-001" ],"202": [ "AB12C_cF56_202_a_h_b-001","AB3C6D12_cF88_202_a_bc_e_h-001","A6B6C_cF104_202_h_h_c-001","A_cF240_202_h2i-001" ],"203": [ "AB3C16_cF160_203_a_bc_eg-001","A2BCD3E6_cF208_203_e_c_d_f_g-001","A4B2C6D16E_cF232_203_e_c_f_eg_b-001" ],"204": [ "A12B_cI26_204_g_a-001","A3B_cI32_204_g_c-001","A4BC12_cI34_204_c_a_g-001","AB2_cI36_204_d_g-001","A7BC12_cI40_204_bc_a_g-001","AB3C4D12_cI40_204_a_b_c_g-001","A17B3_cI160_204_def2gh_g-001","AB32C48_cI162_204_a_2efg_2gh-001","A20B3_cI184_204_def3gh_g-001" ],"205": [ "A_cP8_205_c-001","AB2_cP12_205_a_c-001","AB_cP16_205_c_c-001","A6BC_cP32_205_d_a_b-001","A2B6C_cP36_205_c_d_a-001","A4B_cP40_205_cd_c-001","A7B2C_cP40_205_ad_c_b-001","A2B6C6D_cP60_205_c_d_d_a-001","A2B6CD6_cP60_205_c_d_a_d-001","A2BC4_cP84_205_d_ac_2d-001","AB12CD8E2_cP96_205_a_2d_b_cd_c-001","AB24CD20E2_cP192_205_a_4d_b_c3d_c-001","AB24CD28E2_cP224_205_a_4d_b_2c4d_c-001","A_cP240_205_10d-001","AB2C36D2E20F2_cP252_205_a_c_6d_c_c3d_c-001","A2B3C6_cP264_205_2d_ab2c2d_6d-001" ],"206": [ "A_cI16_206_c-001","AB3C6_cI80_206_a_d_e-001","A8B3C_cI96_206_ce_d_a-001","AB3C2_cI96_206_c_e_ad-001" ],"207": [ "A17B15_cP64_207_acfk_eij-001" ],"208": [ "A3B_cP16_208_i_c-001","A11B16C5_cP64_208_bfh_adm_ce-001","A6B2CD6E_cP64_208_m_ad_b_m_c-001" ],"209": [ "A24BC_cF104_209_j_a_b-001","A14BC8D5_cF1344_209_7j_g_4j_g2j-001" ],"21": [ "AB2_oC6_21_a_k-001","AB2_oC6_21_a_k-002","A9B8_oC68_21_acehik2l_4l-001" ],"210": [ "A12B36CD12_cF488_210_h_3h_a_fg-001","A12B6C_cF608_210_4h_2h_e-001" ],"211": [ "A2B_cI72_211_hi_i-001" ],"212": [ "A2B_cP12_212_c_a-001","AB2C3_cP24_212_a_c_d-001","A2B3_cP60_212_acd_bce-001" ],"213": [ "A2B3_cP20_213_c_d-001","A3B2_cP20_213_d_c-001","A_cP20_213_cd-001","A2BC3_cP24_213_c_a_d-001","AB6CD2_cP120_213_d_3e_ac_e-001" ],"214": [ "A3BC2_cI48_214_f_a_e-001","A3B3C_cI56_214_g_h_a-001","A3B4C13_cI320_214_gh_abgh_e4i-001" ],"215": [ "AB4_cP5_215_a_e-001","A3B4C_cP8_215_c_e_b-001","AB3C4_cP8_215_a_c_e-001","A2B_cP24_215_ei_ace-001","A4B9_cP52_215_ei_3efgi-001","A17B15_cP64_215_acg2i_f2i-001" ],"216": [ "AB_cF8_216_a_c-001","ABC_cF12_216_a_c_b-001","AB2C_cF16_216_a_bc_d-001","ABCD_cF16_216_a_b_c_d-001","AB5_cF24_216_a_ce-001","ABC4_cF24_216_a_b_e-001","AB_cF40_216_ae_be-001","AB4C8_cF52_216_a_e_2e-001","A4BCD8_cF56_216_e_a_c_2e-001","A13B4C4_cF84_216_afg_e_e-001","A4B17C_cF88_216_e_aefg_c-001","A4BC_cF96_216_efg_e_e-001","A3B2C11D5_cF168_216_f_e_ab2eh_eg-001","A2B_cF192_216_2e2h_ab2eg-001","A13BC18D20E5_cF228_216_ah_c_gh_2eh_be-001","A16B40C12D6E5_cF316_216_eh_e2g2h_h_f_ae-001","A2B5_cF392_216_4efg_4ef4h-001","A41B11_cF416_216_7e2fg3h_egh-001","A17B4_cF420_216_a6efg4h_2efg-001","A45B11_cF448_216_ac4efg5h_bd2eh-001" ],"217": [ "A4B_cI10_217_c_a-001","A4B3C_cI16_217_c_b_a-001","AB_cI16_217_c_c-001","A5B8_cI52_217_ce_cg-001","A4B4C6D13_cI54_217_c_c_d_ag-001","A12B17_cI58_217_g_acg-001","A_cI58_217_ac2g-001","A4B24C13_cI82_217_c_deg_ag-001" ],"218": [ "A3B4C_cP16_218_c_e_a-001","A3BC4D12E3_cP46_218_c_a_e_i_d-001","AB_cP64_218_ei_ei-001","A3B4C4D4E16F4G3_cP76_218_c_e_e_e_ei_e_d-001","A7BC4_cP96_218_bcefi_ad_ei-001","ABC2_cP96_218_i_i_2i-001" ],"219": [ "A8B3_cF176_219_eh_abe-001","A7BC3D13_cF192_219_ce_a_d_bh-001","A16B4C16D_cF296_219_eh_e_eh_a-001" ],"22": [ "AB_oF8_22_a_c-001","A2BC2_oF40_22_ej_ac_fi-001","A2B7C2_oF88_22_k_acefghij_k-001" ],"220": [ "A_cI16_220_c-001","AB_cI24_220_a_b-001","A4B3_cI28_220_c_a-001","A3B2_cI40_220_d_c-001","A3B4C3_cI40_220_a_c_b-001","A15B4_cI76_220_ae_c-001","A4B12C3_cI76_220_c_e_a-001","A7B12C19_cI152_220_ac_2d_bce-001","AB9C3_cI208_220_c_3e_e-001" ],"221": [ "A_cP1_221_a-001","AB_cP2_221_a_b-001","AB_cP2_221_a_b-002","A3B_cP4_221_c_b-001","AB3_cP4_221_a_c-001","A4B_cP5_221_ac_b-002","A4B_cP5_221_bc_a-001","AB3C_cP5_221_a_c_b-001","AB_cP6_221_c_d-001","A3B4_cP7_221_d_ac-001","A6B_cP7_221_e_b-001","AB12C_cP14_221_a_h_b-001","AB11CD3_cP16_221_a_dg_b_c-001","AB27CD3_cP32_221_a_dij_b_c-001","A2B3C6_cP33_221_cd_ag_fh-001","A8B24C_cP33_221_g_efh_a-001","AB11_cP36_221_c_agij-001","A17B15_cP64_221_acfm_eij-001" ],"222": [ "A5B3C16_cP96_222_ce_d_fi-001","A4BC4D6_cP360_222_2i_h_2i_3i-001" ],"223": [ "A3B_cP8_223_c_a-001","A3B3C_cP14_223_c_d_a-001","AB4C3_cP16_223_a_e_c-001","A3B_cP32_223_k_ac-001","A4B13C3_cP40_223_e_ak_c-001","A_cP46_223_cik-001","A13B3C8D12_cP72_223_ak_c_i_k-001","AB20_cP126_223_c_k2l-001","A2B3C2_cP224_223_abcdefk_j3k_il-001" ],"224": [ "A2B_cP6_224_b_a-001","A3B2_cP10_224_d_b-001","A3B40CD12_cP112_224_d_e3k_a_k-001","A5B40CD12_cP116_224_bd_e3k_a_k-001","A27B52CD12_cP184_224_dl_eh3k_a_k-001" ],"225": [ "A_cF4_225_a-001","AB_cF8_225_a_b-001","AB2_cF12_225_a_c-001","AB2C_cF16_225_a_c_b-001","AB3_cF16_225_a_bc-001","A7B_cF32_225_ad_b-001","AB6C_cF32_225_a_e_b-001","AB7_cF32_225_a_bd-001","A6B2C_cF36_225_e_c_a-001","AB8_cF36_225_a_f-001","A2BC6D_cF40_225_c_a_e_b-001","AB8C_cF40_225_a_f_b-001","A10B_cF44_225_cf_a-001","A12B_cF52_225_h_b-001","A6BC8_cF60_225_d_a_ce-001","A9B8_cF68_225_af_ce-001","ABC6D8E2_cF72_225_a_b_e_f_c-001","A18B_cF76_225_c2f_a-001","A6B9CD2E6_cF96_225_e_af_b_c_e-001","AB18C8_cF108_225_a_eh_f-001","A16B6C7_cF116_225_2f_e_ad-001","A23B6_cF116_225_ad2f_e-001","A6B23_cF116_225_e_acfh-001","A9B16C7_cF128_225_acd_2f_be-001","AB30C16D3_cF200_225_a_ej_2f_bc-001","A7B_cF256_225_f2k_ce-001","A40B_cF492_225_j2l_ac-001" ],"226": [ "AB13_cF112_226_a_bi-001" ],"227": [ "A_cF8_227_a-001","AB_cF16_227_a_b-001","A2B_cF24_227_c_a-001","A2B_cF24_227_c_b-001","AB_cF32_227_c_d-001","A_cF32_227_e-001","AB2_cF48_227_c_e-001","A2BC4_cF56_227_c_b_e-001","A3B4_cF56_227_ad_e-001","AB3_cF64_227_c_f-001","A3B2_cF80_227_f_e-002","A2B2C7_cF88_227_c_d_af-001","A2B_cF96_227_abf_cd-001","AB2_cF96_227_e_cf-001","AB3C3_cF112_227_c_de_f-001","A11B4_cF120_227_acdf_e-001","A_cF136_227_aeg-001","A7B2_cF144_227_2ef_e-001","A16B2C_cF152_227_eg_c_b-001","A10B_cF176_227_cfg_d-001","A18B2C3_cF184_227_fg_d_ac-001","A22B_cF184_227_cdfg_a-001","A2BCD3E6_cF208_227_e_c_d_f_g-001","A4B2C6D16E_cF232_227_e_c_f_eg_b-001","A29B40CD12_cF656_227_ae2fg_e3g_b_g-001" ],"228": [ "A6B_cF224_228_h_c-001","A5BCD6_cF416_228_eg_c_b_h-001","AB8C24D2E84F12_cF2096_228_a_cg_2h_b_7h_h-001" ],"229": [ "A_cI2_229_a-001","A3B_cI8_229_b_a-001","A4B_cI10_229_c_a-001","A4B3_cI14_229_c_b-001","AB6_cI14_229_a_d-001","AB4C3_cI16_229_a_c_b-001","AB12C3_cI32_229_a_h_b-001","A7B3_cI40_229_df_e-001","A21B_cI44_229_bdh_a-001","A3B6C2_cI44_229_e_h_c-001","A6B16C_cI46_229_e_ch_a-001","A3B10_cI52_229_e_fh-001","A2B7_cI54_229_e_afh-001" ],"23": [ "ABC4_oI12_23_a_b_k-001","ABC2_oI16_23_ac_e_k-001","A3B_oI32_23_ef2k_k-001","A8B2C12D2E_oI50_23_acgk_e_3k_f_b-001" ],"230": [ "A4B3_cI112_230_af_g-001","A4B_cI120_230_h_c-001","A2B3C12D3_cI160_230_a_c_h_d-001","A2B3C12D12_cI232_230_a_c_h_h-001" ],"24": [ "AB7CD2_oI44_24_a_c3d_b_ab-001" ],"25": [ "AB_oP2_25_a_b-001" ],"26": [ "A2B_oP12_26_abc_ab-001","A2B_oP12_26_abc_ab-002","A5B3_oP16_26_a2c_a2b-001","A2B_oP24_26_2a2b2c_2a2b-001","A5B_oP24_26_3a3b2c_ab-001","AB2C6D_oP40_26_2a_2c_2a2b4c_2b-001" ],"27": [ "A6B4C16D_oP108_27_abcd4e_4e_16e_e-001" ],"28": [ "AB2_oP24_28_acd_2c3d-001" ],"29": [ "A2B_oP12_29_2a_a-001","AB2_oP12_29_a_2a-001","ABC_oP12_29_a_a_a-001","AB6_oP28_29_a_6a-001","A2BC6_oP36_29_2a_a_6a-001","A5BC4_oP160_29_20a_4a_16a-001","A7B5C3D6_oP168_29_14a_10a_6a_12a-001","ABC30DE20F2_oP220_29_a_a_30a_a_20a_2a-001" ],"3": [ "A2B_mP12_3_ab3e_2e-001","A3B14C2D3E_mP138_3_3c3d6e_42e_6e_3a3b6e_3a3b-001" ],"30": [ "ABC3_oP20_30_2a_c_3c-001","A5B3C15_oP46_30_a2c_bc_a7c-001" ],"31": [ "ABC2_oP8_31_a_a_2a-001","A2B_oP12_31_4a_2a-001","A5B2_oP14_31_a2b_b-001","A3B4C_oP16_31_ab_2ab_a-002","AB3C4_oP16_31_a_ab_2ab-001","A4B7C_oP24_31_2b_a3b_a-001","AB2C7D2_oP24_31_a_b_a3b_b-001","ABCD3_oP24_31_2a_b_2a_2a2b-001","A2B6CD8_oP34_31_2a_2a2b_a_4a2b-001","A13B4_oP102_31_17a11b_8a2b-001" ],"32": [ "A13B2C2_oP34_32_a6c_c_c-001","A17B47_oP128_32_a8c_a23c-001" ],"33": [ "AB_oP8_33_a_a-001","ABC2_oP16_33_a_a_2a-003","ABC3_oP20_33_a_a_3a-001","A2B_oP24_33_4a_2a-001","AB4C_oP24_33_a_4a_a-001","AB4CD_oP28_33_a_4a_a_a-001","AB3C4_oP32_33_a_3a_4a-001","A2B3_oP40_33_4a_6a-001","A2BC5DE_oP40_33_2a_a_5a_a_a-001","A2B7C2_oP44_33_2a_7a_2a-001","A4BCD6_oP48_33_4a_a_a_6a-001","A2B4C_oP84_33_6a_12a_3a-001","A2BC4_oP84_33_6a_3a_12a-001" ],"34": [ "AB2_oP6_34_a_c-001","A2BC2_oP10_34_c_a_c-001","A2B8C_oP22_34_c_4c_a-001","AB2C4D_oP32_34_ab_abc_4c_c-001" ],"35": [ "AB8C2_oC22_35_a_ab3d_d-002" ],"36": [ "AB_oC8_36_a_a-001","A2B_oC12_36_2a_a-001","AB2_oC12_36_a_2a-002","A2B3_oC20_36_2a_ab-001","A2B3_oC20_36_b_ab-001","A2BC2_oC20_36_b_a_b-001","AB4C_oC24_36_a_4a_a-002","A2BC5_oC32_36_b_a_a2b-001","AB_oC32_36_2ab_2ab-001","A4B_oC40_36_4a2b_b-001","A3B7C2_oC48_36_ab_a3b_b-001","A4B7C2D2_oC60_36_2b_a3b_2a_b-001","A3B2_oC80_36_4a4b_2a3b-001","ABC3_oC80_36_2ab_2ab_2a5b-001","AB4C15D4_oC96_36_a_2b_a7b_2b-001" ],"37": [ "A2B5C2_oC36_37_d_c2d_d-001","A2B2C3D10E2_oC76_37_d_d_cd_5d_d-001" ],"38": [ "A2BC_oC8_38_d_b_a-001","AB3C_oC10_38_a_ae_b-002","A2B_oC12_38_de_ab-001","AB3_oC16_38_ab_3a3b-001","A3B13_oC32_38_ac_a2bcdef-001","A3B5_oC32_38_abcd_abcef-001","ABC6D15_oC46_38_b_b_2a2d_2ab4d2e-001" ],"39": [ "A2B3_oC40_39_2d_2c2d-001","A9BC_oC44_39_3c3d_a_c-001" ],"4": [ "A_mP4_4_2a-001","AB_mP16_4_4a_4a-001","A2B2C5D_mP20_4_2a_2a_5a_a-001","A3B6C_mP20_4_3a_6a_a-001","AB2C4D_mP32_4_2a_4a_8a_2a-001","A11B2C2_mP60_4_22a_4a_4a-001","A5B2C8D2_mP68_4_10a_4a_16a_4a-001" ],"40": [ "AB2C_oC16_40_a_2b_b-001","AB3_oC16_40_b_3b-001","AB3_oC16_40_b_a2b-002","A2B7C2_oC88_40_abc_2b6c_a3b-001" ],"41": [ "AB4_oC20_41_a_2b-001","AB2_oC24_41_2a_2b-001","A4B12C3_oC76_41_2b_6b_ab-001","A5B8CD12_oC104_41_a2b_4b_a_6b-001" ],"42": [ "AB_oF8_42_a_a-001","A10B3_oF52_42_2abce_ab-001","A7B6C21_oF136_42_a3c_3c_ab3c3e-001" ],"43": [ "A2B_oF24_43_b_a-001","A2B3_oF40_43_b_ab-001","A3B2_oF40_43_ab_b-001","A2BC4D_oF64_43_b_a_2b_a-001","AB2_oF72_43_ab_3b-001","A2B7C2_oF88_43_b_a3b_b-001","A2B4C2D12E3_oF184_43_b_2b_b_6b_ab-001","A22B5_oF216_43_11b_a2b-001" ],"44": [ "AB_oI4_44_a_b-001","ABC2_oI8_44_a_a_c-001","ABC2_oI8_44_a_a_c-002","A2B5CD2_oI40_44_2c_abcde_d_e-001","AB_oI48_44_6c_abc2de-001" ],"45": [ "A2BC2_oI20_45_c_a_c-001","A11BC9_oI84_45_a5c_a_b4c-001" ],"46": [ "AB4C3_oI32_46_b_2bc_bc-001","AB4C3_oI32_46_b_2bc_bc-002","ABC_oI36_46_ac_bc_3b-001","A2B17C6_oI100_46_ab_b8c_3c-001" ],"47": [ "AB_oP2_47_a_h-001","A2B3C7D_oP13_47_k_cj_aijl_f-001" ],"48": [ "A2B8CD_oP24_48_h_2m_a_b-001" ],"49": [ "A3B4_oP14_49_ej_2q-001","A5B2_oP14_49_cehq_ab-001","AB2C8D_oP24_49_e_q_2qr_f-001" ],"5": [ "ABC3_mC10_5_b_a_ac-001","A2B_mC12_5_2c_c-001","A_mC12_5_3c-001","AB3_mC16_5_c_3c-001","ABC4_mC24_5_2a_c_4c-001","AB6C18D4E2_mC62_5_b_2a2c_9c_2c_c-001","A17B4_mC84_5_ab16c_4c-001","A2B2C9D2_mC90_5_ab2c_3c_a13c_3c-001","A3B9C2_mC112_5_6c_2a2b16c_4c-001","AB_mC256_5_2a2b30c_32c-001" ],"50": [ "A2BC4_oP28_50_gh_ac_ghm-001","A3BC2_oP48_50_3m_m_2m-001" ],"51": [ "AB_oP4_51_e_f-001","A2BC_oP8_51_i_a_f-001","AB2C_oP8_51_e_be_f-001","AB_oP12_51_ei_fj-001","AB2C_oP16_51_2e_bfi_j-001","AB3_oP16_51_af_behk-001","ABC6D15_oP46_51_f_b_2e2i_cef4i2j-001" ],"52": [ "A3B2_oP20_52_de_cd-001","A2B_oP24_52_2e_cd-001","A3B12CDE6_oP276_52_d4e_18e_ce_de_2d8e-001" ],"53": [ "A2BC_oP16_53_eh_ab_g-001","ABC2_oP16_53_h_e_gh-001","A2BC4D2_oP18_53_h_a_i_e-001","ABC3_oP20_53_e_g_hi-001" ],"54": [ "ABC2_oP16_54_c_c_f-001","ABC3_oP20_54_e_d_cf-001" ],"55": [ "A3B5_oP16_55_ah_cgh-001","A_oP16_55_2g2h-001","A2B2C_oP20_55_2g_2g_h-001","A2B_oP24_55_2g2h_gh-001","A4BC_oP24_55_4g_h_h-001","A2B3C8_oP26_55_h_ag_2g2h-001","A6B5C2_oP26_55_g2h_a2g_h-001","A2B4C9_oP30_55_h_fg_aghi-001","A4BCD2_oP32_55_ghi_e_f_gh-001","AB2C5_oP32_55_g_eh_fghi-001","AB4C4_oP36_55_e_2g2h_2g2h-001","ABC2D5_oP36_55_g_g_adh_3g2h-001","A8B11_oP38_55_3gh_b2g3h-001","A17B10_oP54_55_a3g5h_3g2h-001","A10B3C4_oP68_55_2e2fgh2i_adef_2e2f-001" ],"56": [ "A3B2_oP20_56_ce_e-001","A2BC4_oP56_56_2e_e_4e-001" ],"57": [ "AB_oP8_57_d_d-001","A3B_oP16_57_a2d_d-001","ABCD_oP16_57_d_c_d_d-001","AB_oP16_57_cd_2d-001","A4BC_oP24_57_cde_d_a-001","A3B4C_oP32_57_c2d_4d_a-001","AB2_oP36_57_ce_2d2e-001","ABC3_oP40_57_cd_e_cd2e-001","A7B5_oP48_57_c3e_5d-001" ],"58": [ "A2B_oP6_58_g_a-001","AB2_oP6_58_a_g-001","AB2_oP6_58_a_g-002","AB2_oP6_58_a_g-003","AB_oP8_58_g_g-001","A2B3C6_oP22_58_g_af_gh-001","AB3_oP24_58_ag_c2gh-001","A_oP24_58_eg2h-001","A4B3_oP28_58_4g_3g-001","A2B5C_oP32_58_eg_3gh_g-001","AB2_oP36_58_3g_6g-001","ABC5D2_oP36_58_g_g_3gh_eg-001","A2B7C24D8_oP82_58_g_ae2f_2g5h_2h-001" ],"59": [ "AB_oP4_59_a_b-001","A2B_oP6_59_e_a-001","ABC_oP6_59_a_a_a-001","ABC_oP6_59_a_b_a-001","A3B_oP8_59_ae_b-001","ABC2_oP8_59_a_a_2b-004","A5B2_oP14_59_a2e_e-001","A4B2C3_oP18_59_ef_ab_ae-001","AB3_oP24_59_ae_befg-001","AB4C_oP24_59_c_efg_ab-001" ],"6": [ "AB_mP4_6_2a_2b-001","A8B5_mP13_6_5a3b_2a3b-001","A5B11_mP16_6_2abc_2a3b3c-001" ],"60": [ "A2B_oP12_60_d_c-001","A2B_oP12_60_d_c-003","A2B3_oP20_60_d_cd-001","A2BC4_oP28_60_d_c_2d-001","A3B_oP32_60_3d_d-001","AB2C6_oP36_60_c_d_3d-001","A3B2_oP40_60_3d_2cd-001","A5B12_oP68_60_c2d_6d-001","AB2C5D_oP72_60_d_2cd_5d_2c-001","A7B8_oP120_60_7d_8d-001" ],"61": [ "AB2_oP12_61_a_c-001","AB2_oP12_61_a_c-002","AB2_oP12_61_a_c-003","AB_oP16_61_c_c-001","AB_oP16_61_c_c-002","A2B_oP24_61_2c_c-001","A2B_oP24_61_2c_c-002","A2B_oP24_61_2c_c-003","AB2_oP24_61_c_2c-001","ABC_oP24_61_c_c_c-001","A2B4C_oP28_61_c_2c_a-001","A4B_oP40_61_4c_c-001","AB_oP48_61_3c_3c-001","AB3C3_oP56_61_c_3c_3c-001","AB2CD4_oP64_61_c_2c_c_4c-001","A4B10C3_oP68_61_2c_5c_ac-001","AB4C2D2_oP72_61_c_4c_2c_2c-001","A7BCD_oP80_61_7c_c_c_c-001","AB3C_oP80_61_2c_6c_2c-001","AB7C3_oP88_61_c_7c_3c-001","A9B2CDE_oP112_61_9c_2c_c_c_c-001","A5BC4_oP160_61_10c_2c_8c-001" ],"62": [ "AB_oP8_62_c_c-001","AB_oP8_62_c_c-002","AB_oP8_62_c_c-003","AB_oP8_62_c_c-004","AB_oP8_62_c_c-005","AB_oP8_62_c_c-010","A_oP8_62_2c-001","A_oP8_62_2c-002","A2B_oP12_62_2c_c-001","A2B_oP12_62_2c_c-002","A2B_oP12_62_2c_c-003","A2B_oP12_62_2c_c-004","A2B_oP12_62_2c_c-010","ABC_oP12_62_c_c_c-003","ABC_oP12_62_c_c_c-017","A2BC_oP16_62_2c_c_c-003","A3B_oP16_62_3c_c-002","A3B_oP16_62_3c_c-003","A3B_oP16_62_cd_c-001","AB2C_oP16_62_c_2c_c-001","AB3_oP16_62_c_3c-001","AB3_oP16_62_c_cd-001","AB3_oP16_62_c_cd-005","ABC2_oP16_62_c_c_2c-002","ABC2_oP16_62_c_c_2c-003","ABCD_oP16_62_c_c_c_c-001","AB_oP16_62_2c_2c-002","A2B3_oP20_62_2c_3c-001","A2B3_oP20_62_d_3c-001","A3B2_oP20_62_3c_2c-001","A3B2_oP20_62_3c_2c-002","A3B2_oP20_62_3c_2c-003","A4B_oP20_62_2cd_c-001","A4B_oP20_62_4c_c-001","AB3C_oP20_62_c_3c_c-001","AB3C_oP20_62_c_3c_c-002","AB3C_oP20_62_c_cd_a-001","ABC3_oP20_62_c_a_cd-001","ABC3_oP20_62_c_c_cd-001","ABC3_oP20_62_c_c_cd-002","ABC3_oP20_62_c_c_cd-003","A2B3C_oP24_62_d_3c_c-001","A2B_oP24_62_4c_2c-001","A3BC2_oP24_62_3c_c_2c-001","AB2C3_oP24_62_c_d_cd-001","AB2_oP24_62_2c_4c-001","AB3CD_oP24_62_c_3c_c_c-001","AB4C_oP24_62_a_2cd_c-001","AB4C_oP24_62_c_2cd_c-001","AB5_oP24_62_c_3cd-001","A2B4C_oP28_62_2c_2cd_c-001","A2B4C_oP28_62_ac_2cd_c-001","A2BC4_oP28_62_2c_c_4c-001","A3B4_oP28_62_3c_4c-001","A3B4_oP28_62_3c_4c-002","A5BC_oP28_62_3cd_c_c-001","AB4C2_oP28_62_c_4c_2c-001","AB6_oP28_62_c_6c-001","ABC4D_oP28_62_c_a_2cd_c-001","ABCD4_oP28_62_c_c_c_4c-001","A2B5C_oP32_62_ac_3cd_c-001","A3B_oP32_62_ab4c_2c-001","A4BC2D_oP32_62_2cd_a_2c_b-001","A4BC2D_oP32_62_2cd_c_d_c-001","AB2C4D_oP32_62_c_d_2cd_c-001","AB_oP32_62_2cd_2cd-001","A2B2C4D_oP36_62_d_d_2cd_c-001","A6BC2_oP36_62_6c_c_2c-001","AB2C3D3_oP36_62_c_ac_cd_cd-001","AB6C2_oP36_62_c_2c2d_d-001","ABC5D2_oP36_62_c_c_c2d_2c-001","A2B3C4D_oP40_62_d_cd_2cd_c-001","A3B2C5_oP40_62_3c_2c_5c-001","A3B7_oP40_62_cd_3c2d-001","A4B2C2DE_oP40_62_2cd_2c_d_c_c-001","A2B6C3_oP44_62_2c_2c2d_3c-001","A7B2C2_oP44_62_3c2d_2c_d-001","A8BCD_oP44_62_4c2d_c_c_c-001","ABC2_oP48_62_3c_3c_6c-001","A2BC8D2_oP52_62_d_c_2c3d_d-001","A4B8C_oP52_62_2d_4d_c-001","A4B3_oP56_62_8c_6c-001","A2B4C9_oP60_62_d_2cd_3c3d-001","A3B2C9DE_oP64_62_cd_2c_5c2d_c_c-001","AB14C_oP64_62_c_4c5d_c-001","AB8C4D5_oP72_62_c_4c2d_2d_3cd-001","AB5C2D11_oP76_62_c_5c_2c_5c3d-001","AB2C6D_oP80_62_2c_2d_2c5d_d-001","A3B15C5D_oP96_62_cd_3c6d_3cd_c-001","A8B4C4DE8F2_oP108_62_4c2d_2d_2cd_c_4c2d_d-001","A4B3_oP112_62_8c4d_4c4d-001","ABCD8E3_oP112_62_d_2c_d_4c6d_3d-001","A2B5C22D2E8_oP156_62_d_c2d_2c10d_2c_4d-001","A9B4_oP156_62_5c11d_6c3d-001","AB22C23D2E2_oP200_62_c_11d_3c10d_d_d-001" ],"63": [ "A_oC4_63_c-001","AB_oC8_63_c_c-001","AB_oC8_63_c_c-004","A2B_oC12_63_2c_c-001","ABC_oC12_63_c_c_c-004","ABC_oC12_63_c_c_c-005","A2BC_oC16_63_f_c_c-002","AB2C_oC16_63_c_2c_c-001","AB3_oC16_63_c_3c-001","AB3_oC16_63_c_cf-001","AB_oC16_63_g_2c-001","A3BC_oC20_63_ce_c_c-001","AB2C2_oC20_63_c_f_2c-001","AB2CD_oC20_63_a_f_c_c-001","AB3C_oC20_63_c_cf_a-001","ABC3_oC20_63_c_a_cf-003","A2BC3_oC24_63_e_c_cg-001","A2B_oC24_63_acg_f-001","A4BC_oC24_63_acf_c_c-002","A5B_oC24_63_afg_c-001","A5B_oC24_63_c2f_c-001","AB4C_oC24_63_c_fg_c-001","AB5_oC24_63_c_ceg-001","ABC3D_oC24_63_c_c_cf_a-001","ABC4_oC24_63_c_a_fg-001","A_oC24_63_3f-001","A6B_oC28_63_efg_c-001","AB2C4_oC28_63_c_ac_fg-001","ABC5_oC28_63_c_a_c2f-001","A2B5C_oC32_63_f_c2f_c-001","A5B3_oC32_63_cfg_ce-001","AB5C2_oC32_63_a_cef_g-001","AB5C2_oC32_63_c_c2f_f-004","A7B2_oC36_63_cgh_f-001","AB3C5_oC36_63_c_af_c2f-001","A2B5C3D_oC44_63_ac_ch_cf_c-001","AB4C6_oC44_63_c_2f_ac2f-001","AB3_oC48_63_ad_cfgh-001","A2B2C6DE2_oC52_63_g_e_fh_c_f-001","AB5C7_oC52_63_c_a2f_c3f-001","A3B4_oC56_63_2c2f_ac3f-001","A3B9C2_oC56_63_ae_cfgh_g-001","A9B5_oC56_63_c4f_c2f-001","A4B12C3_oC76_63_eg_fg2h_cf-001","A4BC12D2_oC76_63_eg_c_f3gh_g-001","A12B29_oC164_63_6f_3c13f-001","A43B5C17_oC260_63_c8fg6h_cfg_ce3f2h-001" ],"64": [ "A_oC8_64_f-001","A_oC8_64_f-002","A_oC8_64_f-003","AB_oC16_64_e_f-002","A2B3_oC20_64_f_ae-001","A2B_oC24_64_2f_f-001","A2B_oC24_64_ef_f-001","AB2_oC24_64_d_ef-002","AB2C4_oC28_64_a_d_ef-001","AB2C4_oC28_64_a_f_ef-003","A3B_oC32_64_def_d-001","AB3_oC32_64_d_fg-001","AB2_oC48_64_df_2g-001","AB3C2_oC48_64_d_dg_ef-001","A10B3C4_oC68_64_2dfg_ad_2d-001","A10B7_oC68_64_f2g_adef-001","A4B10C3_oC68_64_2f_e2fg_af-001","A2B2C_oC80_64_efg_efg_df-001","A2B2C7_oC88_64_ef_df_3f2g-001","ABC15D6E_oC192_64_d_e_3f6g_3g_e-001" ],"65": [ "AB3_oC8_65_a_bf-001","AB_oC8_65_g_j-001","AB2C2_oC10_65_a_g_h-001","A2B3C_oC12_65_h_ah_b-001","A2B_oC12_65_acg_h-001","A3B2C_oC12_65_ah_g_c-001","A3B5_oC16_65_ah_bej-001","A3B8_oC22_65_bg_ac2gh-001","AB6C4_oC22_65_a_3g_2h-001","A4BC_oC24_65_gip_h_j-001","A2B8CD2_oC26_65_h_r_a_i-001","A11B3_oC28_65_c4gh_ah-001","A2B4C8D_oC30_65_h_2g_3gh_c-001","A2B7_oC36_65_gj_achipq-001","AB2C6D_oC40_65_g_n_ijklm_h-001","A4B7C16D2_oC58_65_2h_b3g_ac5g2h_h-001" ],"66": [ "AB_oC8_66_a_e-001","A2B4C_oC28_66_l_kl_a-001","A3B_oC64_66_gi2lm_2l-001","A3B_oC64_66_kl2m_acl-001","AB2C3_oC96_66_ik_cdj2k_gl2m-001" ],"67": [ "AB_oC8_67_a_g-001","AB_oC8_67_a_g-002","A2BC_oC16_67_ag_b_g-001","ABC2_oC16_67_a_g_bg-001","A2BC2D_oC24_67_m_a_n_g-001","A6BC_oC32_67_no_c_g-001" ],"68": [ "AB4_oC20_68_a_i-001" ],"69": [ "AB_oF8_69_a_b-001","A2B2C_oF20_69_g_f_a-001","AB2C4_oF28_69_a_g_cg-001","A3B2_oF40_69_hm_fg-001","A3B2C9_oF56_69_ag_g_bfgl-001","A4B12C3_oF76_69_2g_cf2gl_ag-001" ],"7": [ "A2B_mP12_7_4a_2a-001","AB2_mP12_7_2a_4a-001","A3B_mP16_7_6a_2a-001","A2B_mP18_7_6a_3a-001","A9B2_mP22_7_9a_2a-001","A4B12C3_mP38_7_4a_12a_3a-001","A6B2C15D4_mP54_7_6a_2a_15a_4a-001","A8B23_mP124_7_16a_46a-001" ],"70": [ "A_oF8_70_a-001","A2B_oF24_70_e_a-001","AB2_oF48_70_e_ef-001","AB2_oF48_70_e_ef-002","A2B4C_oF56_70_e_h_a-001","AB2C_oF64_70_e_h_ab-001","A3B2_oF80_70_fh_2e-001","A2B3C_oF96_70_2e_fh_e-001","A_oF128_70_4h-001" ],"71": [ "AB2_oI6_71_a_e-001","AB2_oI6_71_a_e-002","AB_oI8_71_e_g-001","A2B_oI12_71_eh_f-001","ABC_oI12_71_e_h_f-001","A4B3_oI14_71_ef_af-001","A4BC3_oI16_71_m_a_bf-001","ABC2_oI16_71_e_g_fi-001","AB6C3_oI20_71_a_el_bf-001","A11B3_oI28_71_bf2m_ai-001","A6B5_oI44_71_egkl_fghl-001","A15B_oI128_71_lmn6o_eg-001" ],"72": [ "A2B_oI12_72_j_a-001","A2B5_oI28_72_j_afj-001","A3B5C2_oI40_72_aj_bfj_j-001" ],"73": [ "ABCD3_oI48_73_d_c_c_cf-001","AB3C2_oI96_73_f_3f_acde-001" ],"74": [ "A2B_oI12_74_h_e-001","AB2_oI12_74_e_2e-001","AB2_oI12_74_e_h-001","A4B_oI20_74_aeh_e-001","ABC4D_oI28_74_a_c_hi_e-001","A2B6C2D_oI44_74_i_hj_h_e-001","A3B2C2_oI56_74_fhi_2ei_j-001","AB14C2_oI68_74_a_3i2j_h-001","AB2C15D6E_oI100_74_e_g_e2hi2j_hj_a-001" ],"75": [ "AB2C12D4_tP76_75_2a2b_2d_12d_4d-001" ],"76": [ "A2BC_tP16_76_2a_a_a-001","A3B7_tP40_76_3a_7a-001","A2B7C2_tP88_76_4a_14a_4a-001" ],"77": [ "A2B_tP48_77_8d_4d-001","A2B6CD7_tP64_77_2d_6d_d_ab6d-001","A4B2C3_tP72_77_8d_ab2c2d_6d-001" ],"78": [ "A2B7C2_tP88_78_4a_14a_4a-001" ],"79": [ "A2BC2_tI20_79_c_2a_c-001" ],"8": [ "ABC2_mC8_8_a_a_b-001","A3BC_mC10_8_ab_a_a-001","AB2C4_mC28_8_2a_4a_4a2b-001","A4B_mC30_8_2a5b_ab-001","AB3_mC32_8_4a_12a-001","AB3_mC32_8_4a_4a4b-001","A13B4_mC102_8_17a11b_8a2b-001" ],"80": [ "AB2_tI48_80_2b_4b-001" ],"81": [ "AB2_tP12_81_adg_2h-001" ],"82": [ "AB4C_tI12_82_c_g_a-001","ABC4_tI12_82_a_c_g-001","A2BC4_tI14_82_bc_a_g-001","A2B4CD_tI16_82_ac_g_b_d-001","A3B_tI32_82_3g_g-001" ],"83": [ "A3B2_tP10_83_adj_k-001","A31B9_tP40_83_ae3j4k_cjk-001" ],"84": [ "AB_tP16_84_cej_k-001","A4B_tP20_84_afjk_j-001" ],"85": [ "AB5C_tP14_85_c_cg_a-001","A2B_tP30_85_ab2g_cg-001","A3B6CD_tP44_85_acg_3g_bc_d-001","AB3_tP64_85_2ceg_2cf5g-001","AB12C6_tP76_85_2c_6g_3g-001" ],"86": [ "A2BC_tP32_86_2g_g_g-001","AB3_tP32_86_g_3g-001","AB6C_tP32_86_c_3g_d-001","ABC3_tP40_86_g_g_3g-001","ABCD6E_tP40_86_e_c_ab_3g_d-001","A4B11C2_tP68_86_2g_ab5g_g-001" ],"87": [ "AB4_tI10_87_a_h-001","A2B5_tI14_87_d_ah-001","A4B5_tI18_87_h_ah-001","AB6C2D_tI20_87_a_eh_d_b-001","A2B_tI24_87_2h_h-001","A12B5_tI34_87_hi_ah-001","A5B4C21D8_tI76_87_ah_h_bh2i_2h-001","AB4C24D12_tI82_87_a_h_2h2i_hi-001" ],"88": [ "A4B_tI20_88_f_a-001","AB4C_tI24_88_a_f_b-003","AB3_tI32_88_c_df-001","AB2_tI96_88_2f_4f-001","A9B4C20_tI132_88_a2f_f_5f-001" ],"89": [ "A17BC4D_tP184_89_17p_p_4p_il-001","A17BC17D4E_tP320_89_17p_p_17p_4p_il-001" ],"9": [ "AB3_mC16_9_a_3a-001","A2B3_mC20_9_2a_3a-001","A2B5_mC28_9_2a_5a-001","A5B3_mC32_9_5a_3a-001","A2BC2D6_mC44_9_2a_a_2a_6a-001","A4BC6_mC44_9_4a_a_6a-001","A3B5C4D2_mC56_9_3a_5a_4a_2a-001","A2B4C9D2_mC68_9_2a_4a_9a_2a-001","A2B_mC144_9_24a_12a-001","A6B36C11_mC212_9_6a_36a_11a-001","AB4CD_mC224_9_8a_32a_8a_8a-001" ],"90": [ "AB2C3D2_tP16_90_c_f_ce_e-001","A4B2C13D4E_tP48_90_g_d_cef2g_g_c-001","AB4C17D4E_tP54_90_a_g_c4g_g_c-001" ],"91": [ "ABC_tP24_91_d_d_d-001" ],"92": [ "A2B_tP12_92_b_a-001","A2B_tP12_92_b_a-002","ABC2_tP16_92_a_a_b-001","A2B_tP24_92_2b_b-001","A4B5_tP36_92_2b_a2b-001","AB_tP64_92_2a3b_4b-001","A8B11_tP76_92_2a3b_a5b-001","A2B3_tP80_92_4b_2a5b-001","A12BC10D_tP96_92_6b_a_5b_a-001" ],"93": [ "AB32CD4E8_tP184_93_i_16p_af_2p_4p-001" ],"94": [ "A6B2C_tP18_94_eg_c_a-001","A14B3C5_tP44_94_c3g_ad_bg-001" ],"95": [ "ABC_tP24_95_d_d_d-001" ],"96": [ "A_tP12_96_ab-001","A2B_tP36_96_3b_ab-001","A5B22_tP216_96_5b_2a21b-001" ],"97": [ "A2B8CD_tI24_97_d_k_a_b-001","AB8C2_tI44_97_e_2k_cd-001" ],"98": [ "A2B_tI12_98_f_a-001","A2B7C2_tI44_98_f_acde_f-001" ],"99": [ "A3BC_tP5_99_ac_b_a-002","AB3C_tP5_99_b_ac_a-001" ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_1.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_1.json new file mode 100755 index 000000000000..0e58282b30a5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_1.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "1:a,b,c","det": 1.0,"gen": [ "x,y,z" ],"gp": [ "x,y,z" ],"hall": "P 1","hm": "P 1","id": "P_1","jmolId": "1","set": 1,"sg": 1,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 1 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_10.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_10.json new file mode 100755 index 000000000000..a54ee22852a2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_10.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "10:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,y,-z","-x,-y,-z","x,-y,z" ],"hall": "-P 2y","hm": "P 1 2/m 1","id": "P_1_2/m_1","jmolId": "10:b","set": 1,"sg": 10,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "o","mult": 4 },{ "coord": [ "x,1/2,z","-x,1/2,-z" ],"desc": "m","geom": "plane","label": "n","mult": 2 },{ "coord": [ "x,0,z","-x,0,-z" ],"desc": "m","geom": "plane","label": "m","mult": 2 },{ "coord": [ "1/2,y,1/2","1/2,-y,1/2" ],"desc": "2","geom": "line","label": "l","mult": 2 },{ "coord": [ "0,y,1/2","0,-y,1/2" ],"desc": "2","geom": "line","label": "k","mult": 2 },{ "coord": [ "1/2,y,0","1/2,-y,0" ],"desc": "2","geom": "line","label": "j","mult": 2 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": "2","geom": "line","label": "i","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "2/m","geom": "point","label": "h","mult": 1 },{ "coord": [ "1/2,0,1/2" ],"desc": "2/m","geom": "point","label": "g","mult": 1 },{ "coord": [ "0,1/2,1/2" ],"desc": "2/m","geom": "point","label": "f","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "2/m","geom": "point","label": "e","mult": 1 },{ "coord": [ "1/2,0,0" ],"desc": "2/m","geom": "point","label": "d","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "2/m","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,1/2,0" ],"desc": "2/m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 1 } ] } },{ "clegId": "10:c,a,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,-y,-z","x,y,-z" ],"hall": "-P 2","hm": "P 1 1 2/m","id": "P_1_1_2/m","jmolId": "10:c","set": 2,"sg": 10,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "o","mult": 4 },{ "coord": [ "z,x,1/2","-z,-x,1/2" ],"desc": "m","geom": "plane","label": "n","mult": 2 },{ "coord": [ "z,x,0","-z,-x,0" ],"desc": "m","geom": "plane","label": "m","mult": 2 },{ "coord": [ "1/2,1/2,y","1/2,1/2,-y" ],"desc": "2","geom": "line","label": "l","mult": 2 },{ "coord": [ "1/2,0,y","1/2,0,-y" ],"desc": "2","geom": "line","label": "k","mult": 2 },{ "coord": [ "0,1/2,y","0,1/2,-y" ],"desc": "2","geom": "line","label": "j","mult": 2 },{ "coord": [ "0,0,y","0,0,-y" ],"desc": "2","geom": "line","label": "i","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "2/m","geom": "point","label": "h","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "2/m","geom": "point","label": "g","mult": 1 },{ "coord": [ "1/2,0,1/2" ],"desc": "2/m","geom": "point","label": "f","mult": 1 },{ "coord": [ "0,1/2,1/2" ],"desc": "2/m","geom": "point","label": "e","mult": 1 },{ "coord": [ "0,1/2,0" ],"desc": "2/m","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/2,0,0" ],"desc": "2/m","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "2/m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 1 } ] } },{ "clegId": "10:b,c,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z","-x,-y,-z","-x,y,z" ],"hall": "-P 2x","hm": "P 2/m 1 1","id": "P_2/m_1_1","jmolId": "10:a","set": 3,"sg": 10,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "o","mult": 4 },{ "coord": [ "1/2,z,x","1/2,-z,-x" ],"desc": "m","geom": "plane","label": "n","mult": 2 },{ "coord": [ "0,z,x","0,-z,-x" ],"desc": "m","geom": "plane","label": "m","mult": 2 },{ "coord": [ "y,1/2,1/2","-y,1/2,1/2" ],"desc": "2","geom": "line","label": "l","mult": 2 },{ "coord": [ "y,1/2,0","-y,1/2,0" ],"desc": "2","geom": "line","label": "k","mult": 2 },{ "coord": [ "y,0,1/2","-y,0,1/2" ],"desc": "2","geom": "line","label": "j","mult": 2 },{ "coord": [ "y,0,0","-y,0,0" ],"desc": "2","geom": "line","label": "i","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "2/m","geom": "point","label": "h","mult": 1 },{ "coord": [ "0,1/2,1/2" ],"desc": "2/m","geom": "point","label": "g","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "2/m","geom": "point","label": "f","mult": 1 },{ "coord": [ "1/2,0,1/2" ],"desc": "2/m","geom": "point","label": "e","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "2/m","geom": "point","label": "d","mult": 1 },{ "coord": [ "0,1/2,0" ],"desc": "2/m","geom": "point","label": "c","mult": 1 },{ "coord": [ "1/2,0,0" ],"desc": "2/m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 1 } ] } } ],"n": 3,"sg": 10 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_100.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_100.json new file mode 100755 index 000000000000..65ef106552be --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_100.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "100:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x+1/2,-y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z" ],"hall": "P 4 -2ab","hm": "P 4 b m","id": "P_4_b_m","jmolId": "100","set": 1,"sg": 100,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "x,x+1/2,z","-x,-x+1/2,z","-x+1/2,x,z","x+1/2,-x,z" ],"desc": "..m","geom": "plane","label": "c","mult": 4 },{ "coord": [ "1/2,0,z","0,1/2,z" ],"desc": "2.m m","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","1/2,1/2,z" ],"desc": "4..","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "100:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","y,x+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,x,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","y,x+1/2,z","-y,-x+1/2,z","x,-y+1/2,z","-x,y+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","y+1/2,x,z","-y+1/2,-x,z","x+1/2,-y,z","-x+1/2,y,z" ],"hall": "C?","hm": "C 4 m g1","id": "C_4_m_g1","jmolId": "100:c","set": 2,"sg": 100,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 16 },{ "coord": [ "3/4,x+1/4,z","3/4,-x+1/4,z","-x+1/4,1/4,z","x+1/4,1/4,z" ],"desc": "..m","geom": "plane","label": "c","mult": 8 },{ "coord": [ "1/4,1/4,z","3/4,1/4,z" ],"desc": "2.m m","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,1/2,z" ],"desc": "4..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "100:a+b,-a+b,c","det": 2.0,"hm": "C 4 m g1","id": "C_4_m_g1","more": true,"sg": 100,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 100 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_101.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_101.json new file mode 100755 index 000000000000..c36a0971607d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_101.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "101:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","x,-y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","x,-y,z+1/2","-x,y,z+1/2","-y,-x,z","y,x,z" ],"hall": "P 4c -2c","hm": "P 42 c m","id": "P_42_c_m","jmolId": "101","set": 1,"sg": 101,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,z+1/2","x,-x,z+1/2" ],"desc": "..m","geom": "plane","label": "d","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2","0,1/2,z+1/2","1/2,0,z" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2" ],"desc": "2.m m","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "2.m m","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "101:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,x,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","y,x,z+1/2","-y,-x,z+1/2","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C?","hm": "C 42 m c","id": "C_42_m_c","jmolId": "101:c","set": 2,"sg": 101,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 16 },{ "coord": [ "0,x,z","0,-x,z","-x,0,z+1/2","x,0,z+1/2" ],"desc": "..m","geom": "plane","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2","3/4,1/4,z+1/2","1/4,1/4,z" ],"desc": "2..","geom": "line","label": "c","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2" ],"desc": "2.m m","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "2.m m","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "101:a+b,-a+b,c","det": 2.0,"hm": "C 42 m c","id": "C_42_m_c","more": true,"sg": 101,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 101 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_102.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_102.json new file mode 100755 index 000000000000..ebf7eb355a2b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_102.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "102:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","x+1/2,-y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-y,-x,z","y,x,z" ],"hall": "P 4n -2n","hm": "P 42 n m","id": "P_42_n_m","jmolId": "102","set": 1,"sg": 102,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "x,x,z","-x,-x,z","-x+1/2,x+1/2,z+1/2","x+1/2,-x+1/2,z+1/2" ],"desc": "..m","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2","1/2,0,z+1/2","1/2,0,z" ],"desc": "2..","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,z+1/2" ],"desc": "2.m m","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "102:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x+1/2,z+1/2","y,x+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y+1/2,x,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C?","hm": "C 42 m g2","id": "C_42_m_g2","jmolId": "102:c","set": 2,"sg": 102,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 16 },{ "coord": [ "0,x,z","0,-x,z","-x,1/2,z+1/2","x,1/2,z+1/2" ],"desc": "..m","geom": "plane","label": "c","mult": 8 },{ "coord": [ "3/4,1/4,z","3/4,1/4,z+1/2","1/4,1/4,z+1/2","1/4,1/4,z" ],"desc": "2..","geom": "line","label": "b","mult": 8 },{ "coord": [ "0,0,z","0,1/2,z+1/2" ],"desc": "2.m m","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "102:a+b,-a+b,c","det": 2.0,"hm": "C 42 m g2","id": "C_42_m_g2","more": true,"sg": 102,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 102 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_103.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_103.json new file mode 100755 index 000000000000..470e9084ca22 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_103.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "103:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x,-y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x,-y,z+1/2","-x,y,z+1/2","-y,-x,z+1/2","y,x,z+1/2" ],"hall": "P 4 -2c","hm": "P 4 c c","id": "P_4_c_c","jmolId": "103","set": 1,"sg": 103,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,z+1/2","1/2,0,z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2" ],"desc": "4..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "4..","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "103:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","y,x,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,x+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","y,x,z+1/2","-y,-x,z+1/2","x,-y,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "C 4 -2c","hm": "C 4 c c","id": "C_4_c_c","jmolId": "103:c","set": 2,"sg": 103,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,z+1/2","1/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2" ],"desc": "4..","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "4..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "103:a+b,-a+b,c","det": 2.0,"hm": "C 4 c c","id": "C_4_c_c","more": true,"sg": 103,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 103 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_104.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_104.json new file mode 100755 index 000000000000..a8d27db797b4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_104.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "104:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x+1/2,-y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "P 4 -2n","hm": "P 4 n c","id": "P_4_n_c","jmolId": "104","set": 1,"sg": 104,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","1/2,0,z+1/2","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,z+1/2" ],"desc": "4..","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "104:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","y,x+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,x,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "C?","hm": "C 4 c g2","id": "C_4_c_g2","jmolId": "104:c","set": 2,"sg": 104,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","1/4,1/4,z+1/2","3/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "b","mult": 8 },{ "coord": [ "0,0,z","0,1/2,z+1/2" ],"desc": "4..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "104:a+b,-a+b,c","det": 2.0,"hm": "C 4 c g2","id": "C_4_c_g2","more": true,"sg": 104,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 104 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_105.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_105.json new file mode 100755 index 000000000000..9274fe5085ae --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_105.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "105:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","x,-y,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","x,-y,z","-x,y,z","-y,-x,z+1/2","y,x,z+1/2" ],"hall": "P 4c -2","hm": "P 42 m c","id": "P_42_m_c","jmolId": "105","set": 1,"sg": 105,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "x,1/2,z","-x,1/2,z","1/2,x,z+1/2","1/2,-x,z+1/2" ],"desc": ".m.","geom": "plane","label": "e","mult": 4 },{ "coord": [ "x,0,z","-x,0,z","0,x,z+1/2","0,-x,z+1/2" ],"desc": ".m.","geom": "plane","label": "d","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2" ],"desc": "2mm .","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2" ],"desc": "2mm .","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "2mm .","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "105:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,x,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,x+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","y,x,z","-y,-x,z","x,-y,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "C?","hm": "C 42 c m","id": "C_42_c_m","jmolId": "105:c","set": 2,"sg": 105,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 16 },{ "coord": [ "1/2x+3/4,1/2x+1/4,z","-1/2x+3/4,-1/2x+1/4,z","-1/2x+1/4,1/2x+1/4,z+1/2","1/2x+1/4,-1/2x+1/4,z+1/2" ],"desc": ".m.","geom": "plane","label": "e","mult": 8 },{ "coord": [ "1/2x,1/2x,z","-1/2x,-1/2x,z","-1/2x,1/2x,z+1/2","1/2x,-1/2x,z+1/2" ],"desc": ".m.","geom": "plane","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2" ],"desc": "2mm .","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2" ],"desc": "2mm .","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "2mm .","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "105:a+b,-a+b,c","det": 2.0,"hm": "C 42 c m","id": "C_42_c_m","more": true,"sg": 105,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 105 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_106.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_106.json new file mode 100755 index 000000000000..c773094408aa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_106.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "106:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","x+1/2,-y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "P 4c -2ab","hm": "P 42 b c","id": "P_42_b_c","jmolId": "106","set": 1,"sg": 106,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2","1/2,0,z","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2","1/2,1/2,z","1/2,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "106:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,x+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,x,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","y,x+1/2,z","-y,-x+1/2,z","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","y+1/2,x,z","-y+1/2,-x,z","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "C?","hm": "C 42 c g1","id": "C_42_c_g1","jmolId": "106:c","set": 2,"sg": 106,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2","1/4,1/4,z","3/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "b","mult": 8 },{ "coord": [ "0,0,z","0,0,z+1/2","0,1/2,z","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "106:a+b,-a+b,c","det": 2.0,"hm": "C 42 c g1","id": "C_42_c_g1","more": true,"sg": 106,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 106 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_107.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_107.json new file mode 100755 index 000000000000..4557d8144417 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_107.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "107:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x,-y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x,-y,z","-x,y,z","-y,-x,z","y,x,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "I 4 -2","hm": "I 4 m m","id": "I_4_m_m","jmolId": "107","set": 1,"sg": 107,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 16 },{ "coord": [ "x,0,z","-x,0,z","0,x,z","0,-x,z" ],"desc": ".m.","geom": "plane","label": "d","mult": 8 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,z","x,-x,z" ],"desc": "..m","geom": "plane","label": "c","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z" ],"desc": "2mm .","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z" ],"desc": "4mm","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "107:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","y,x,z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,x+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","y,x,z","-y,-x,z","x,-y,z","-x,y,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "F 4 -2","hm": "F 4 m m","id": "F_4_m_m","jmolId": "107:f","set": 2,"sg": 107,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 32 },{ "coord": [ "1/2x,1/2x,z","-1/2x,-1/2x,z","-1/2x,1/2x,z","1/2x,-1/2x,z" ],"desc": ".m.","geom": "plane","label": "d","mult": 16 },{ "coord": [ "0,x,z","0,-x,z","-x,0,z","x,0,z" ],"desc": "..m","geom": "plane","label": "c","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z" ],"desc": "2mm .","geom": "line","label": "b","mult": 8 },{ "coord": [ "0,0,z" ],"desc": "4mm","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "107:a+b,-a+b,c","det": 2.0,"hm": "F 4 m m","id": "F_4_m_m","more": true,"sg": 107,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 107 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_108.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_108.json new file mode 100755 index 000000000000..cc1a048ab7a6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_108.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "108:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x,-y,z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x,-y,z+1/2","-x,y,z+1/2","-y,-x,z+1/2","y,x,z+1/2","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z" ],"hall": "I 4 -2c","hm": "I 4 c m","id": "I_4_c_m","jmolId": "108","set": 1,"sg": 108,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 16 },{ "coord": [ "x,x+1/2,z","-x,-x+1/2,z","-x+1/2,x,z","x+1/2,-x,z" ],"desc": "..m","geom": "plane","label": "c","mult": 8 },{ "coord": [ "1/2,0,z","0,1/2,z" ],"desc": "2.m m","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "4..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "108:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","y,x,z+1/2","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,x+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","y,x,z+1/2","-y,-x,z+1/2","x,-y,z+1/2","-x,y,z+1/2","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","y,x+1/2,z","-y,-x+1/2,z","x,-y+1/2,z","-x,y+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","y+1/2,x,z","-y+1/2,-x,z","x+1/2,-y,z","-x+1/2,y,z" ],"hall": "F?","hm": "F 4 m c","id": "F_4_m_c","jmolId": "108:f","set": 2,"sg": 108,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 32 },{ "coord": [ "3/4,x+1/4,z","3/4,-x+1/4,z","-x+1/4,1/4,z","x+1/4,1/4,z" ],"desc": "..m","geom": "plane","label": "c","mult": 16 },{ "coord": [ "1/4,1/4,z","3/4,1/4,z" ],"desc": "2.m m","geom": "line","label": "b","mult": 8 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "4..","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "108:a+b,-a+b,c","det": 2.0,"hm": "F 4 m c","id": "F_4_m_c","more": true,"sg": 108,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 108 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_109.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_109.json new file mode 100755 index 000000000000..a4e99b8a4969 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_109.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "109:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","x,-y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","y+1/2,-x,z+3/4","x,-y,z","-x+1/2,y+1/2,z+1/2","-y,-x+1/2,z+1/4","y+1/2,x,z+3/4","x+1/2,y+1/2,z+1/2","-x,-y,z","-y+1/2,x,z+3/4","y,-x+1/2,z+1/4","x+1/2,-y+1/2,z+1/2","-x,y,z","-y+1/2,-x,z+3/4","y,x+1/2,z+1/4" ],"hall": "I 4bw -2","hm": "I 41 m d","id": "I_41_m_d","jmolId": "109","set": 1,"sg": 109,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 16 },{ "coord": [ "0,y,z","1/2,-y+1/2,z+1/2","-y,1/2,z+1/4","y+1/2,0,z+3/4" ],"desc": ".m.","geom": "plane","label": "b","mult": 8 },{ "coord": [ "0,0,z","0,1/2,z+1/4" ],"desc": "2mm .","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "109:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-y+3/4,x+1/4,z+1/4","y,x,z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","y+1/2,x+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-y+3/4,x+1/4,z+1/4","y+1/4,-x+1/4,z+3/4","y,x,z","-y,-x+1/2,z+1/2","x+3/4,-y+1/4,z+1/4","-x+1/4,y+1/4,z+3/4","x,y+1/2,z+1/2","-x,-y,z","-y+1/4,x+1/4,z+3/4","y+3/4,-x+1/4,z+1/4","y,x+1/2,z+1/2","-y,-x,z","x+1/4,-y+1/4,z+3/4","-x+3/4,y+1/4,z+1/4","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","y+3/4,-x+3/4,z+3/4","y+1/2,x+1/2,z","-y+1/2,-x,z+1/2","x+1/4,-y+3/4,z+1/4","-x+3/4,y+3/4,z+3/4","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-y+3/4,x+3/4,z+3/4","y+1/4,-x+3/4,z+1/4","y+1/2,x,z+1/2","-y+1/2,-x+1/2,z","x+3/4,-y+3/4,z+3/4","-x+1/4,y+3/4,z+1/4" ],"hm": "F 41 d m","id": "F_41_d_m","jmolId": "109:f","set": 2,"sg": 109,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 32 },{ "coord": [ "-1/2y,1/2y,z","1/2y,-1/2y+1/2,z+1/2","-1/2y+3/4,-1/2y+1/4,z+1/4","1/2y+1/4,1/2y+1/4,z+3/4" ],"desc": ".m.","geom": "plane","label": "b","mult": 16 },{ "coord": [ "0,0,z","3/4,1/4,z+1/4" ],"desc": "2mm .","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "109:a+b,-a+b,c","det": 2.0,"hm": "F 41 d m","id": "F_41_d_m","more": true,"sg": 109,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 109 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_11.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_11.json new file mode 100755 index 000000000000..622dab52c8df --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_11.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "11:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z","-x,-y,-z","x,-y+1/2,z" ],"hall": "-P 2yb","hm": "P 1 21/m 1","id": "P_1_21/m_1","jmolId": "11:b","set": 1,"sg": 11,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 4 },{ "coord": [ "x,1/4,z","-x,3/4,-z" ],"desc": "m","geom": "plane","label": "e","mult": 2 },{ "coord": [ "1/2,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "11:c,a,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x,-y,-z","x,y,-z+1/2" ],"hall": "-P 2c","hm": "P 1 1 21/m","id": "P_1_1_21/m","jmolId": "11:c","set": 2,"sg": 11,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 4 },{ "coord": [ "z,x,1/4","-z,-x,3/4" ],"desc": "m","geom": "plane","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "11:b,c,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z","-x,-y,-z","-x+1/2,y,z" ],"hall": "-P 2xa","hm": "P 21/m 1 1","id": "P_21/m_1_1","jmolId": "11:a","set": 3,"sg": 11,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 4 },{ "coord": [ "1/4,z,x","3/4,-z,-x" ],"desc": "m","geom": "plane","label": "e","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 11 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_110.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_110.json new file mode 100755 index 000000000000..646bc347604f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_110.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "110:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","x,-y,z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","y+1/2,-x,z+3/4","x,-y,z+1/2","-x+1/2,y+1/2,z","-y,-x+1/2,z+3/4","y+1/2,x,z+1/4","x+1/2,y+1/2,z+1/2","-x,-y,z","-y+1/2,x,z+3/4","y,-x+1/2,z+1/4","x+1/2,-y+1/2,z","-x,y,z+1/2","-y+1/2,-x,z+1/4","y,x+1/2,z+3/4" ],"hall": "I 4bw -2c","hm": "I 41 c d","id": "I_41_c_d","jmolId": "110","set": 1,"sg": 110,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 16 },{ "coord": [ "0,0,z","0,1/2,z+1/4","0,0,z+1/2","0,1/2,z+3/4" ],"desc": "2..","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "110:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-y+3/4,x+1/4,z+1/4","y,x,z+1/2","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","y+1/2,x+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-y+3/4,x+1/4,z+1/4","y+1/4,-x+1/4,z+3/4","y,x,z+1/2","-y,-x+1/2,z","x+3/4,-y+1/4,z+3/4","-x+1/4,y+1/4,z+1/4","x,y+1/2,z+1/2","-x,-y,z","-y+1/4,x+1/4,z+3/4","y+3/4,-x+1/4,z+1/4","y,x+1/2,z","-y,-x,z+1/2","x+1/4,-y+1/4,z+1/4","-x+3/4,y+1/4,z+3/4","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","y+3/4,-x+3/4,z+3/4","y+1/2,x+1/2,z+1/2","-y+1/2,-x,z","x+1/4,-y+3/4,z+3/4","-x+3/4,y+3/4,z+1/4","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-y+3/4,x+3/4,z+3/4","y+1/4,-x+3/4,z+1/4","y+1/2,x,z","-y+1/2,-x+1/2,z+1/2","x+3/4,-y+3/4,z+1/4","-x+1/4,y+3/4,z+3/4" ],"hm": "F 41 d c","id": "F_41_d_c","jmolId": "110:f","set": 2,"sg": 110,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 32 },{ "coord": [ "0,0,z","3/4,1/4,z+1/4","0,0,z+1/2","3/4,1/4,z+3/4" ],"desc": "2..","geom": "line","label": "a","mult": 16 } ] } },{ "clegId": "110:a+b,-a+b,c","det": 2.0,"hm": "F 41 d c","id": "F_41_d_c","more": true,"sg": 110,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 110 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_111.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_111.json new file mode 100755 index 000000000000..680c26021ef7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_111.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "111:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-x,y,-z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-x,y,-z","x,-y,-z","-y,-x,z","y,x,z" ],"hall": "P -4 2","hm": "P -4 2 m","id": "P_-4_2_m","jmolId": "111","set": 1,"sg": 111,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "o","mult": 8 },{ "coord": [ "x,x,z","-x,-x,z","x,-x,-z","-x,x,-z" ],"desc": "..m","geom": "plane","label": "n","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z","0,1/2,-z","1/2,0,z" ],"desc": "2..","geom": "line","label": "m","mult": 4 },{ "coord": [ "x,1/2,0","-x,1/2,0","1/2,-x,0","1/2,x,0" ],"desc": ".2.","geom": "line","label": "l","mult": 4 },{ "coord": [ "x,0,1/2","-x,0,1/2","0,-x,1/2","0,x,1/2" ],"desc": ".2.","geom": "line","label": "k","mult": 4 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,-x,1/2","1/2,x,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "x,0,0","-x,0,0","0,-x,0","0,x,0" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z" ],"desc": "2.m m","geom": "line","label": "h","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2.m m","geom": "line","label": "g","mult": 2 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2" ],"desc": "222 .","geom": "point","label": "f","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,0" ],"desc": "222 .","geom": "point","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,0" ],"desc": "-42m","geom": "point","label": "d","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "-42m","geom": "point","label": "c","mult": 1 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "-42m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-42m","geom": "point","label": "a","mult": 1 } ] } },{ "clegId": "111:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-y,-x,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,-x+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-y,-x,-z","y,x,-z","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C?","hm": "C -4 m 2","id": "C_-4_m_2","jmolId": "111:c","set": 2,"sg": 111,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 16 },{ "coord": [ "0,x,z","0,-x,z","x,0,-z","-x,0,-z" ],"desc": "..m","geom": "plane","label": "n","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z","3/4,1/4,-z","1/4,1/4,z" ],"desc": "2..","geom": "line","label": "m","mult": 8 },{ "coord": [ "1/2x+3/4,1/2x+1/4,0","-1/2x+3/4,-1/2x+1/4,0","1/2x+1/4,-1/2x+1/4,0","-1/2x+1/4,1/2x+1/4,0" ],"desc": ".2.","geom": "line","label": "l","mult": 8 },{ "coord": [ "1/2x,1/2x,1/2","-1/2x,-1/2x,1/2","1/2x,-1/2x,1/2","-1/2x,1/2x,1/2" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "1/2x+3/4,1/2x+1/4,1/2","-1/2x+3/4,-1/2x+1/4,1/2","1/2x+1/4,-1/2x+1/4,1/2","-1/2x+1/4,1/2x+1/4,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "1/2x,1/2x,0","-1/2x,-1/2x,0","1/2x,-1/2x,0","-1/2x,1/2x,0" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "2.m m","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2.m m","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "222 .","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,1/4,0" ],"desc": "222 .","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,0" ],"desc": "-42m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-42m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,1/2" ],"desc": "-42m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "-42m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "111:a+b,-a+b,c","det": 2.0,"hm": "C -4 m 2","id": "C_-4_m_2","more": true,"sg": 111,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 111 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_112.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_112.json new file mode 100755 index 000000000000..fb0522dd13a7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_112.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "112:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-x,y,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-x,y,-z+1/2","x,-y,-z+1/2","-y,-x,z+1/2","y,x,z+1/2" ],"hall": "P -4 2c","hm": "P -4 2 c","id": "P_-4_2_c","jmolId": "112","set": 1,"sg": 112,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "n","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z","0,1/2,-z+1/2","1/2,0,z+1/2" ],"desc": "2..","geom": "line","label": "m","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z","1/2,1/2,-z+1/2","1/2,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "l","mult": 4 },{ "coord": [ "0,0,z","0,0,-z","0,0,-z+1/2","0,0,z+1/2" ],"desc": "2..","geom": "line","label": "k","mult": 4 },{ "coord": [ "0,y,1/4","0,-y,1/4","y,0,3/4","-y,0,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "x,1/2,1/4","-x,1/2,1/4","1/2,-x,3/4","1/2,x,3/4" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,y,1/4","1/2,-y,1/4","y,1/2,3/4","-y,1/2,3/4" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "x,0,1/4","-x,0,1/4","0,-x,3/4","0,x,3/4" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "f","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "e","mult": 2 },{ "coord": [ "0,1/2,1/4","1/2,0,3/4" ],"desc": "222 .","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,1/4","1/2,1/2,3/4" ],"desc": "222 .","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,1/4","0,1/2,3/4" ],"desc": "222 .","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "222 .","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "112:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-y,-x,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,-x+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-y,-x,-z+1/2","y,x,-z+1/2","x,-y,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z+1/2","y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "C?","hm": "C -4 c 2","id": "C_-4_c_2","jmolId": "112:c","set": 2,"sg": 112,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "n","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z","3/4,1/4,-z+1/2","1/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "m","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z","0,1/2,-z+1/2","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "l","mult": 8 },{ "coord": [ "0,0,z","0,0,-z","0,0,-z+1/2","0,0,z+1/2" ],"desc": "2..","geom": "line","label": "k","mult": 8 },{ "coord": [ "-1/2y,1/2y,1/4","1/2y,-1/2y,1/4","1/2y,1/2y,3/4","-1/2y,-1/2y,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "1/2x+3/4,1/2x+1/4,1/4","-1/2x+3/4,-1/2x+1/4,1/4","1/2x+1/4,-1/2x+1/4,3/4","-1/2x+1/4,1/2x+1/4,3/4" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "-1/2y+1/4,1/2y+1/4,1/4","1/2y+1/4,-1/2y+1/4,1/4","1/2y+3/4,1/2y+1/4,3/4","-1/2y+3/4,-1/2y+1/4,3/4" ],"desc": ".2.","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/2x,1/2x,1/4","-1/2x,-1/2x,1/4","1/2x,-1/2x,3/4","-1/2x,1/2x,3/4" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,3/4" ],"desc": "222 .","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "222 .","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,1/4,3/4" ],"desc": "222 .","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "222 .","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "112:a+b,-a+b,c","det": 2.0,"hm": "C -4 c 2","id": "C_-4_c_2","more": true,"sg": 112,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 112 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_113.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_113.json new file mode 100755 index 000000000000..66ff83dd8171 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_113.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "113:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-x+1/2,y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z" ],"hall": "P -4 2ab","hm": "P -4 21 m","id": "P_-4_21_m","jmolId": "113","set": 1,"sg": 113,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "x,x+1/2,z","-x,-x+1/2,z","x+1/2,-x,-z","-x+1/2,x,-z" ],"desc": "..m","geom": "plane","label": "e","mult": 4 },{ "coord": [ "0,0,z","0,0,-z","1/2,1/2,-z","1/2,1/2,z" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z" ],"desc": "2.m m","geom": "line","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "113:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-y,-x+1/2,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,-x,-z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-y,-x+1/2,-z","y,x+1/2,-z","x,-y+1/2,z","-x,y+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","-y+1/2,-x,-z","y+1/2,x,-z","x+1/2,-y,z","-x+1/2,y,z" ],"hall": "C?","hm": "C -4 m 21","id": "C_-4_m_21","jmolId": "113:c","set": 2,"sg": 113,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 16 },{ "coord": [ "3/4,x+1/4,z","3/4,-x+1/4,z","x+1/4,1/4,-z","-x+1/4,1/4,-z" ],"desc": "..m","geom": "plane","label": "e","mult": 8 },{ "coord": [ "0,0,z","0,0,-z","0,1/2,-z","0,1/2,z" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z" ],"desc": "2.m m","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "113:a+b,-a+b,c","det": 2.0,"hm": "C -4 m 21","id": "C_-4_m_21","more": true,"sg": 113,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 113 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_114.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_114.json new file mode 100755 index 000000000000..6b695ec89ece --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_114.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "114:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-x+1/2,y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "P -4 2n","hm": "P -4 21 c","id": "P_-4_21_c","jmolId": "114","set": 1,"sg": 114,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z","1/2,0,-z+1/2","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,0,z","0,0,-z","1/2,1/2,-z+1/2","1/2,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "114:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-y,-x+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,-x,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-y,-x+1/2,-z+1/2","y,x+1/2,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","-y+1/2,-x,-z+1/2","y+1/2,x,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "C?","hm": "C -4 c 21","id": "C_-4_c_21","jmolId": "114:c","set": 2,"sg": 114,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z","1/4,1/4,-z+1/2","3/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "0,0,z","0,0,-z","0,1/2,-z+1/2","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,0" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "114:a+b,-a+b,c","det": 2.0,"hm": "C -4 c 21","id": "C_-4_c_21","more": true,"sg": 114,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 114 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_115.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_115.json new file mode 100755 index 000000000000..3dfc4d4328cf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_115.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "115:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x,-y,z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x,-y,z","-x,y,z","y,x,-z","-y,-x,-z" ],"hall": "P -4 -2","hm": "P -4 m 2","id": "P_-4_m_2","jmolId": "115","set": 1,"sg": 115,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "x,1/2,z","-x,1/2,z","1/2,-x,-z","1/2,x,-z" ],"desc": ".m.","geom": "plane","label": "k","mult": 4 },{ "coord": [ "x,0,z","-x,0,z","0,-x,-z","0,x,-z" ],"desc": ".m.","geom": "plane","label": "j","mult": 4 },{ "coord": [ "x,x,1/2","-x,-x,1/2","x,-x,1/2","-x,x,1/2" ],"desc": "..2","geom": "line","label": "i","mult": 4 },{ "coord": [ "x,x,0","-x,-x,0","x,-x,0","-x,x,0" ],"desc": "..2","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z" ],"desc": "2mm .","geom": "line","label": "g","mult": 2 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z" ],"desc": "2mm .","geom": "line","label": "f","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2mm .","geom": "line","label": "e","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-4m2","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "c","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "-4m2","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-4m2","geom": "point","label": "a","mult": 1 } ] } },{ "clegId": "115:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","y,x,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","y+1/2,x+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","y,x,z","-y,-x,z","-x,y,-z","x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z" ],"hall": "C?","hm": "C -4 2 m","id": "C_-4_2_m","jmolId": "115:c","set": 2,"sg": 115,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "l","mult": 16 },{ "coord": [ "1/2x+3/4,1/2x+1/4,z","-1/2x+3/4,-1/2x+1/4,z","1/2x+1/4,-1/2x+1/4,-z","-1/2x+1/4,1/2x+1/4,-z" ],"desc": ".m.","geom": "plane","label": "k","mult": 8 },{ "coord": [ "1/2x,1/2x,z","-1/2x,-1/2x,z","1/2x,-1/2x,-z","-1/2x,1/2x,-z" ],"desc": ".m.","geom": "plane","label": "j","mult": 8 },{ "coord": [ "0,x,1/2","0,-x,1/2","x,0,1/2","-x,0,1/2" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,x,0","0,-x,0","x,0,0","-x,0,0" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z" ],"desc": "2mm .","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "2mm .","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2mm .","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "-4m2","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "-4m2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "-4m2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "115:a+b,-a+b,c","det": 2.0,"hm": "C -4 2 m","id": "C_-4_2_m","more": true,"sg": 115,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 115 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_116.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_116.json new file mode 100755 index 000000000000..a8c5382e59cc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_116.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "116:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x,-y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x,-y,z+1/2","-x,y,z+1/2","y,x,-z+1/2","-y,-x,-z+1/2" ],"hall": "P -4 -2c","hm": "P -4 c 2","id": "P_-4_c_2","jmolId": "116","set": 1,"sg": 116,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z","0,1/2,z+1/2","1/2,0,-z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z","1/2,1/2,z+1/2","1/2,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,-z","0,0,z+1/2","0,0,-z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "x,x,3/4","-x,-x,3/4","x,-x,1/4","-x,x,1/4" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "x,x,1/4","-x,-x,1/4","x,-x,3/4","-x,x,3/4" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/4","1/2,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "116:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","y,x,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","y+1/2,x+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","y,x,z+1/2","-y,-x,z+1/2","-x,y,-z+1/2","x,-y,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2" ],"hall": "C?","hm": "C -4 2 c","id": "C_-4_2_c","jmolId": "116:c","set": 2,"sg": 116,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z","3/4,1/4,z+1/2","1/4,1/4,-z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z","0,1/2,z+1/2","0,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z","0,0,-z","0,0,z+1/2","0,0,-z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,x,3/4","0,-x,3/4","x,0,1/4","-x,0,1/4" ],"desc": "..2","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,x,1/4","0,-x,1/4","x,0,3/4","-x,0,3/4" ],"desc": "..2","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "116:a+b,-a+b,c","det": 2.0,"hm": "C -4 2 c","id": "C_-4_2_c","more": true,"sg": 116,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 116 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_117.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_117.json new file mode 100755 index 000000000000..ce724e8fa314 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_117.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "117:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x+1/2,-y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z" ],"hall": "P -4 -2ab","hm": "P -4 b 2","id": "P_-4_b_2","jmolId": "117","set": 1,"sg": 117,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "x,x+1/2,1/2","-x,-x+1/2,1/2","x+1/2,-x,1/2","-x+1/2,x,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 4 },{ "coord": [ "x,x+1/2,0","-x,-x+1/2,0","x+1/2,-x,0","-x+1/2,x,0" ],"desc": "..2","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z","1/2,0,z","0,1/2,-z" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,-z","1/2,1/2,z","1/2,1/2,-z" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2" ],"desc": "2.2 2","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "2.2 2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "117:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","y,x+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","y+1/2,x,z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","y,x+1/2,z","-y,-x+1/2,z","-x,y+1/2,-z","x,-y+1/2,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x,z","-y+1/2,-x,z","-x+1/2,y,-z","x+1/2,-y,-z" ],"hall": "C?","hm": "C -4 2 g1","id": "C_-4_2_g1","jmolId": "117:c","set": 2,"sg": 117,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "3/4,x+1/4,1/2","3/4,-x+1/4,1/2","x+1/4,1/4,1/2","-x+1/4,1/4,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "3/4,x+1/4,0","3/4,-x+1/4,0","x+1/4,1/4,0","-x+1/4,1/4,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z","1/4,1/4,z","3/4,1/4,-z" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,-z","0,1/2,z","0,1/2,-z" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,1/2","1/4,1/4,1/2" ],"desc": "2.2 2","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "2.2 2","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "117:a+b,-a+b,c","det": 2.0,"hm": "C -4 2 g1","id": "C_-4_2_g1","more": true,"sg": 117,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 117 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_118.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_118.json new file mode 100755 index 000000000000..ba79a797f2ae --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_118.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "118:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x+1/2,-y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2" ],"hall": "P -4 -2n","hm": "P -4 n 2","id": "P_-4_n_2","jmolId": "118","set": 1,"sg": 118,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z","1/2,0,z+1/2","0,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "x,x+1/2,1/4","-x,-x+1/2,1/4","x+1/2,-x,3/4","-x+1/2,x,3/4" ],"desc": "..2","geom": "line","label": "g","mult": 4 },{ "coord": [ "x,-x+1/2,1/4","-x,x+1/2,1/4","-x+1/2,-x,3/4","x+1/2,x,3/4" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,-z","1/2,1/2,z+1/2","1/2,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,3/4","1/2,0,1/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/4","1/2,0,3/4" ],"desc": "2.2 2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "118:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","y,x+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","y+1/2,x,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2" ],"hall": "C?","hm": "C -4 2 g2","id": "C_-4_2_g2","jmolId": "118:c","set": 2,"sg": 118,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z","1/4,1/4,z+1/2","3/4,1/4,-z+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "3/4,x+1/4,1/4","3/4,-x+1/4,1/4","x+1/4,1/4,3/4","-x+1/4,1/4,3/4" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "x+3/4,1/4,1/4","-x+3/4,1/4,1/4","1/4,-x+1/4,3/4","1/4,x+1/4,3/4" ],"desc": "..2","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,-z","0,1/2,z+1/2","0,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,3/4","1/4,1/4,1/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,3/4" ],"desc": "2.2 2","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,0" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "118:a+b,-a+b,c","det": 2.0,"hm": "C -4 2 g2","id": "C_-4_2_g2","more": true,"sg": 118,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 118 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_119.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_119.json new file mode 100755 index 000000000000..b4db52b390d8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_119.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "119:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x,-y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x,-y,z","-x,y,z","y,x,-z","-y,-x,-z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2" ],"hall": "I -4 -2","hm": "I -4 m 2","id": "I_-4_m_2","jmolId": "119","set": 1,"sg": 119,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "x,0,z","-x,0,z","0,-x,-z","0,x,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "x,x+1/2,1/4","-x,-x+1/2,1/4","x+1/2,-x,3/4","-x+1/2,x,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,x,0","-x,-x,0","x,-x,0","-x,x,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z" ],"desc": "2mm .","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2mm .","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,3/4" ],"desc": "-4m2","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/4" ],"desc": "-4m2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-4m2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "-4m2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "119:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","y,x,z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","y+1/2,x+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","y,x,z","-y,-x,z","-x,y,-z","x,-y,-z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2" ],"hall": "F?","hm": "F -4 2 m","id": "F_-4_2_m","jmolId": "119:f","set": 2,"sg": 119,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 32 },{ "coord": [ "1/2x,1/2x,z","-1/2x,-1/2x,z","1/2x,-1/2x,-z","-1/2x,1/2x,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 16 },{ "coord": [ "3/4,x+1/4,1/4","3/4,-x+1/4,1/4","x+1/4,1/4,3/4","-x+1/4,1/4,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 16 },{ "coord": [ "0,x,0","0,-x,0","x,0,0","-x,0,0" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z" ],"desc": "2mm .","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2mm .","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,3/4" ],"desc": "-4m2","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,1/4" ],"desc": "-4m2","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "-4m2","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "-4m2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "119:a+b,-a+b,c","det": 2.0,"hm": "F -4 2 m","id": "F_-4_2_m","more": true,"sg": 119,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 119 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_12.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_12.json new file mode 100755 index 000000000000..db016815a910 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_12.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "12:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z","-x,-y,-z","x,-y,z","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,-y+1/2,z" ],"hall": "-C 2y","hm": "C 1 2/m 1","id": "C_1_2/m_1","jmolId": "12:b1","set": 1,"sg": 12,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "x,0,z","-x,0,-z" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "0,y,1/2","0,-y,1/2" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,1/4,0" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:-a-c,b,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x,-y,-z","x,-y,z","x,y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "-A 2y","hm": "A 1 2/m 1","id": "A_1_2/m_1","jmolId": "12:b2","set": 2,"sg": 12,"trm": "-a-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "-z,0,x-z","z,0,-x+z" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "1/2,y,1/2","1/2,-y,1/2" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/4,3/4","1/2,1/4,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,1/4,1/4","0,1/4,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,1/2" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:c,b,-a-c","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x,-y,-z","x,-y,z","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "-I 2y","hm": "I 1 2/m 1","id": "I_1_2/m_1","jmolId": "12:b3","set": 3,"sg": 12,"trm": "c,b,-a-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "-x+z,0,-x","x-z,0,x" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "1/2,y,0","1/2,-y,0" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/4,3/4","3/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "3/4,1/4,3/4","1/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,0" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:c,a,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,-y,-z","x,y,-z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2" ],"hall": "-A 2","hm": "A 1 1 2/m","id": "A_1_1_2/m","jmolId": "12:c1","set": 4,"sg": 12,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "z,x,0","-z,-x,0" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "1/2,0,y","1/2,0,-y" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,y","0,0,-y" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/4,1/4","1/2,3/4,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,0,1/2" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:a,-a-c,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,-y,-z","x,y,-z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2" ],"hall": "-B 2","hm": "B 1 1 2/m","id": "B_1_1_2/m","jmolId": "12:c2","set": 5,"sg": 12,"trm": "a,-a-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "x-z,-z,0","-x+z,z,0" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,y","1/2,1/2,-y" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,y","0,0,-y" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "3/4,1/2,1/4","1/4,1/2,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,0,1/4","3/4,0,1/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:-a-c,c,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,-y,-z","x,y,-z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "-I 2","hm": "I 1 1 2/m","id": "I_1_1_2/m","jmolId": "12:c3","set": 6,"sg": 12,"trm": "-a-c,c,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "-x,-x+z,0","x,x-z,0" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "0,1/2,y","0,1/2,-y" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,y","0,0,-y" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "3/4,1/4,1/4","1/4,3/4,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "3/4,3/4,1/4","1/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:b,c,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x,-y,-z","-x,y,z","x+1/2,y,z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y,-z+1/2","-x+1/2,y,z+1/2" ],"hall": "-B 2x","hm": "B 2/m 1 1","id": "B_2/m_1_1","jmolId": "12:a1","set": 7,"sg": 12,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "0,z,x","0,-z,-x" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "y,1/2,0","-y,1/2,0" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "y,0,0","-y,0,0" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/2,1/4","1/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,0,1/4","1/4,0,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,0" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:b,a,-a-c","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","-x,-y,-z","-x,y,z","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","-x+1/2,y+1/2,z" ],"hall": "-C 2x","hm": "C 2/m 1 1","id": "C_2/m_1_1","jmolId": "12:a2","set": 8,"sg": 12,"trm": "b,a,-a-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "0,x-z,-z","0,-x+z,z" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "y,1/2,1/2","-y,1/2,1/2" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "y,0,0","-y,0,0" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,3/4,1/2","1/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","1/4,3/4,0" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:b,-a-c,c","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x,-y,-z","-x,y,z","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "-I 2x","hm": "I 2/m 1 1","id": "I_2/m_1_1","jmolId": "12:a3","set": 9,"sg": 12,"trm": "b,-a-c,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 8 },{ "coord": [ "0,-x,-x+z","0,x,x-z" ],"desc": "m","geom": "plane","label": "i","mult": 4 },{ "coord": [ "y,0,1/2","-y,0,1/2" ],"desc": "2","geom": "line","label": "h","mult": 4 },{ "coord": [ "y,0,0","-y,0,0" ],"desc": "2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,3/4,1/4","1/4,1/4,3/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,3/4,3/4","1/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,0,1/2" ],"desc": "2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0" ],"desc": "2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "12:c,-b,a","det": 1.0,"hm": "A 1 2/m 1 :1","id": "A_1_2/m_1_1","more": true,"sg": 12,"trm": "c,-b,a" },{ "clegId": "12:a,-b,-a-c","det": 1.0,"hm": "C 1 2/m 1 :2","id": "C_1_2/m_1_2","more": true,"sg": 12,"trm": "a,-b,-a-c" },{ "clegId": "12:-a-c,-b,c","det": 1.0,"hm": "I 1 2/m 1 :3","id": "I_1_2/m_1_3","more": true,"sg": 12,"trm": "-a-c,-b,c" },{ "clegId": "12:a,c,-b","det": 1.0,"hm": "B 1 1 2/m :1","id": "B_1_1_2/m_1","more": true,"sg": 12,"trm": "a,c,-b" },{ "clegId": "12:-a-c,a,-b","det": 1.0,"hm": "A 1 1 2/m :2","id": "A_1_1_2/m_2","more": true,"sg": 12,"trm": "-a-c,a,-b" },{ "clegId": "12:c,-a-c,-b","det": 1.0,"hm": "I 1 1 2/m :3","id": "I_1_1_2/m_3","more": true,"sg": 12,"trm": "c,-a-c,-b" },{ "clegId": "12:-b,a,c","det": 1.0,"hm": "C 2/m 1 1 :1","id": "C_2/m_1_1_1","more": true,"sg": 12,"trm": "-b,a,c" },{ "clegId": "12:-b,-a-c,a","det": 1.0,"hm": "B 2/m 1 1 :2","id": "B_2/m_1_1_2","more": true,"sg": 12,"trm": "-b,-a-c,a" },{ "clegId": "12:-b,c,-a-c","det": 1.0,"hm": "I 2/m 1 1 :3","id": "I_2/m_1_1_3","more": true,"sg": 12,"trm": "-b,c,-a-c" } ],"n": 18,"sg": 12 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_120.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_120.json new file mode 100755 index 000000000000..57e500e95db6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_120.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "120:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x,-y,z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x,-y,z+1/2","-x,y,z+1/2","y,x,-z+1/2","-y,-x,-z+1/2","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z" ],"hall": "I -4 -2c","hm": "I -4 c 2","id": "I_-4_c_2","jmolId": "120","set": 1,"sg": 120,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "x,x+1/2,0","-x,-x+1/2,0","x+1/2,-x,0","-x+1/2,x,0" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z","0,1/2,z+1/2","1/2,0,-z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,z","0,0,-z","0,0,z+1/2","0,0,-z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "x,x,1/4","-x,-x,1/4","x,-x,3/4","-x,x,3/4" ],"desc": "..2","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "2.2 2","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "-4..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "120:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","y,x,z+1/2","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","y+1/2,x+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","y,x,z+1/2","-y,-x,z+1/2","-x,y,-z+1/2","x,-y,-z+1/2","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","y,x+1/2,z","-y,-x+1/2,z","-x,y+1/2,-z","x,-y+1/2,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","y+1/2,x,z","-y+1/2,-x,z","-x+1/2,y,-z","x+1/2,-y,-z" ],"hall": "F?","hm": "F -4 2 c","id": "F_-4_2_c","jmolId": "120:f","set": 2,"sg": 120,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 32 },{ "coord": [ "3/4,x+1/4,0","3/4,-x+1/4,0","x+1/4,1/4,0","-x+1/4,1/4,0" ],"desc": "..2","geom": "line","label": "h","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z","3/4,1/4,z+1/2","1/4,1/4,-z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 16 },{ "coord": [ "0,0,z","0,0,-z","0,0,z+1/2","0,0,-z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,x,1/4","0,-x,1/4","x,0,3/4","-x,0,3/4" ],"desc": "..2","geom": "line","label": "e","mult": 16 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "2.2 2","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,1/4","3/4,1/4,3/4" ],"desc": "-4..","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "120:a+b,-a+b,c","det": 2.0,"hm": "F -4 2 c","id": "F_-4_2_c","more": true,"sg": 120,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 120 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_121.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_121.json new file mode 100755 index 000000000000..e20f0331b7a2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_121.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "121:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-x,y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-x,y,-z","x,-y,-z","-y,-x,z","y,x,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "I -4 2","hm": "I -4 2 m","id": "I_-4_2_m","jmolId": "121","set": 1,"sg": 121,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "x,x,z","-x,-x,z","x,-x,-z","-x,x,-z" ],"desc": "..m","geom": "plane","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z","0,1/2,-z","1/2,0,z" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,0,1/2","-x,0,1/2","0,-x,1/2","0,x,1/2" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "x,0,0","-x,0,0","0,-x,0","0,x,0" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2.m m","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "222 .","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "-42m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "-42m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "121:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-y,-x,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,-x+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-y,-x,-z","y,x,-z","x,-y,z","-x,y,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","-y,-x+1/2,-z+1/2","y,x+1/2,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","-y+1/2,-x,-z+1/2","y+1/2,x,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "F?","hm": "F -4 m 2","id": "F_-4_m_2","jmolId": "121:f","set": 2,"sg": 121,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 32 },{ "coord": [ "0,x,z","0,-x,z","x,0,-z","-x,0,-z" ],"desc": "..m","geom": "plane","label": "i","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z","3/4,1/4,-z","1/4,1/4,z" ],"desc": "2..","geom": "line","label": "h","mult": 16 },{ "coord": [ "1/2x,1/2x,1/2","-1/2x,-1/2x,1/2","1/2x,-1/2x,1/2","-1/2x,1/2x,1/2" ],"desc": ".2.","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/2x,1/2x,0","-1/2x,-1/2x,0","1/2x,-1/2x,0","-1/2x,1/2x,0" ],"desc": ".2.","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2.m m","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,1/4","3/4,1/4,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "222 .","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2" ],"desc": "-42m","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "-42m","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "121:a+b,-a+b,c","det": 2.0,"hm": "F -4 m 2","id": "F_-4_m_2","more": true,"sg": 121,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 121 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_122.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_122.json new file mode 100755 index 000000000000..c1b5e43a45dd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_122.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "122:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-x+1/2,y,-z+3/4","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-x+1/2,y,-z+3/4","x+1/2,-y,-z+3/4","-y+1/2,-x,z+3/4","y+1/2,x,z+3/4","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","-x,y+1/2,-z+1/4","x,-y+1/2,-z+1/4","-y,-x+1/2,z+1/4","y,x+1/2,z+1/4" ],"hall": "I -4 2bw","hm": "I -4 2 d","id": "I_-4_2_d","jmolId": "122","set": 1,"sg": 122,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 16 },{ "coord": [ "x,1/4,1/8","-x,3/4,1/8","1/4,-x,7/8","3/4,x,7/8" ],"desc": ".2.","geom": "line","label": "d","mult": 8 },{ "coord": [ "0,0,z","0,0,-z","1/2,0,-z+3/4","1/2,0,z+3/4" ],"desc": "2..","geom": "line","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","1/2,0,1/4" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,3/4" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "122:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","-y+1/4,-x+1/4,-z+3/4","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+3/4,-x+3/4,-z+3/4","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","-y+1/4,-x+1/4,-z+3/4","y+1/4,x+1/4,-z+3/4","x+1/4,-y+1/4,z+3/4","-x+1/4,y+1/4,z+3/4","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","-y+3/4,-x+1/4,-z+1/4","y+3/4,x+1/4,-z+1/4","x+3/4,-y+1/4,z+1/4","-x+3/4,y+1/4,z+1/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","-y+3/4,-x+3/4,-z+3/4","y+3/4,x+3/4,-z+3/4","x+3/4,-y+3/4,z+3/4","-x+3/4,y+3/4,z+3/4","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","-y+1/4,-x+3/4,-z+1/4","y+1/4,x+3/4,-z+1/4","x+1/4,-y+3/4,z+1/4","-x+1/4,y+3/4,z+1/4" ],"hm": "F -4 d 2","id": "F_-4_d_2","jmolId": "122:f","set": 2,"sg": 122,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 32 },{ "coord": [ "1/2x+7/8,1/2x+1/8,1/8","-1/2x+5/8,-1/2x+3/8,1/8","1/2x+1/8,-1/2x+1/8,7/8","-1/2x+3/8,1/2x+3/8,7/8" ],"desc": ".2.","geom": "line","label": "d","mult": 16 },{ "coord": [ "0,0,z","0,0,-z","1/4,1/4,-z+3/4","1/4,1/4,z+3/4" ],"desc": "2..","geom": "line","label": "c","mult": 16 },{ "coord": [ "0,0,1/2","1/4,1/4,1/4" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,0","1/4,1/4,3/4" ],"desc": "-4..","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "122:a+b,-a+b,c","det": 2.0,"hm": "F -4 d 2","id": "F_-4_d_2","more": true,"sg": 122,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 122 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_123.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_123.json new file mode 100755 index 000000000000..b531788b5660 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_123.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "123:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,y,-z","x,-y,-z","y,x,-z","-y,-x,-z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x,-y,z","-x,y,z","-y,-x,z","y,x,z" ],"hall": "-P 4 2","hm": "P 4/m m m","id": "P_4/m_m_m","jmolId": "123","set": 1,"sg": 123,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "u","mult": 16 },{ "coord": [ "x,1/2,z","-x,1/2,z","1/2,x,z","1/2,-x,z","-x,1/2,-z","x,1/2,-z","1/2,x,-z","1/2,-x,-z" ],"desc": ".m.","geom": "plane","label": "t","mult": 8 },{ "coord": [ "x,0,z","-x,0,z","0,x,z","0,-x,z","-x,0,-z","x,0,-z","0,x,-z","0,-x,-z" ],"desc": ".m.","geom": "plane","label": "s","mult": 8 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,z","x,-x,z","-x,x,-z","x,-x,-z","x,x,-z","-x,-x,-z" ],"desc": "..m","geom": "plane","label": "r","mult": 8 },{ "coord": [ "x,y,1/2","-x,-y,1/2","-y,x,1/2","y,-x,1/2","-x,y,1/2","x,-y,1/2","y,x,1/2","-y,-x,1/2" ],"desc": "m..","geom": "plane","label": "q","mult": 8 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,0","y,-x,0","-x,y,0","x,-y,0","y,x,0","-y,-x,0" ],"desc": "m..","geom": "plane","label": "p","mult": 8 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,1/2","1/2,-x,1/2" ],"desc": "m2m .","geom": "line","label": "o","mult": 4 },{ "coord": [ "x,1/2,0","-x,1/2,0","1/2,x,0","1/2,-x,0" ],"desc": "m2m .","geom": "line","label": "n","mult": 4 },{ "coord": [ "x,0,1/2","-x,0,1/2","0,x,1/2","0,-x,1/2" ],"desc": "m2m .","geom": "line","label": "m","mult": 4 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0" ],"desc": "m2m .","geom": "line","label": "l","mult": 4 },{ "coord": [ "x,x,1/2","-x,-x,1/2","-x,x,1/2","x,-x,1/2" ],"desc": "m.2 m","geom": "line","label": "k","mult": 4 },{ "coord": [ "x,x,0","-x,-x,0","-x,x,0","x,-x,0" ],"desc": "m.2 m","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z","1/2,0,-z" ],"desc": "2mm .","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z" ],"desc": "4mm","geom": "line","label": "h","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4mm","geom": "line","label": "g","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "mmm .","geom": "point","label": "f","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2" ],"desc": "mmm .","geom": "point","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "4/mmm","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "4/mmm","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "4/mmm","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "4/mmm","geom": "point","label": "a","mult": 1 } ] } },{ "clegId": "123:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-y,-x,-z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-y+1/2,-x+1/2,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-y,-x,-z","y,x,-z","-x,y,-z","x,-y,-z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","y,x,z","-y,-x,z","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C?","hm": "C 4/m m m","id": "C_4/m_m_m","jmolId": "123:c","set": 2,"sg": 123,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "u","mult": 32 },{ "coord": [ "1/2x+3/4,1/2x+1/4,z","-1/2x+3/4,-1/2x+1/4,z","-1/2x+1/4,1/2x+1/4,z","1/2x+1/4,-1/2x+1/4,z","-1/2x+3/4,-1/2x+1/4,-z","1/2x+3/4,1/2x+1/4,-z","-1/2x+1/4,1/2x+1/4,-z","1/2x+1/4,-1/2x+1/4,-z" ],"desc": ".m.","geom": "plane","label": "t","mult": 16 },{ "coord": [ "1/2x,1/2x,z","-1/2x,-1/2x,z","-1/2x,1/2x,z","1/2x,-1/2x,z","-1/2x,-1/2x,-z","1/2x,1/2x,-z","-1/2x,1/2x,-z","1/2x,-1/2x,-z" ],"desc": ".m.","geom": "plane","label": "s","mult": 16 },{ "coord": [ "0,x,z","0,-x,z","-x,0,z","x,0,z","-x,0,-z","x,0,-z","0,x,-z","0,-x,-z" ],"desc": "..m","geom": "plane","label": "r","mult": 16 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,1/2","-1/2x+1/2y,-1/2x-1/2y,1/2","-1/2x-1/2y,1/2x-1/2y,1/2","1/2x+1/2y,-1/2x+1/2y,1/2","-1/2x-1/2y,-1/2x+1/2y,1/2","1/2x+1/2y,1/2x-1/2y,1/2","-1/2x+1/2y,1/2x+1/2y,1/2","1/2x-1/2y,-1/2x-1/2y,1/2" ],"desc": "m..","geom": "plane","label": "q","mult": 16 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,0","1/2x+1/2y,-1/2x+1/2y,0","-1/2x-1/2y,-1/2x+1/2y,0","1/2x+1/2y,1/2x-1/2y,0","-1/2x+1/2y,1/2x+1/2y,0","1/2x-1/2y,-1/2x-1/2y,0" ],"desc": "m..","geom": "plane","label": "p","mult": 16 },{ "coord": [ "1/2x+3/4,1/2x+1/4,1/2","-1/2x+3/4,-1/2x+1/4,1/2","-1/2x+1/4,1/2x+1/4,1/2","1/2x+1/4,-1/2x+1/4,1/2" ],"desc": "m2m .","geom": "line","label": "o","mult": 8 },{ "coord": [ "1/2x+3/4,1/2x+1/4,0","-1/2x+3/4,-1/2x+1/4,0","-1/2x+1/4,1/2x+1/4,0","1/2x+1/4,-1/2x+1/4,0" ],"desc": "m2m .","geom": "line","label": "n","mult": 8 },{ "coord": [ "1/2x,1/2x,1/2","-1/2x,-1/2x,1/2","-1/2x,1/2x,1/2","1/2x,-1/2x,1/2" ],"desc": "m2m .","geom": "line","label": "m","mult": 8 },{ "coord": [ "1/2x,1/2x,0","-1/2x,-1/2x,0","-1/2x,1/2x,0","1/2x,-1/2x,0" ],"desc": "m2m .","geom": "line","label": "l","mult": 8 },{ "coord": [ "0,x,1/2","0,-x,1/2","-x,0,1/2","x,0,1/2" ],"desc": "m.2 m","geom": "line","label": "k","mult": 8 },{ "coord": [ "0,x,0","0,-x,0","-x,0,0","x,0,0" ],"desc": "m.2 m","geom": "line","label": "j","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,-z","1/4,1/4,-z" ],"desc": "2mm .","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "4mm","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4mm","geom": "line","label": "g","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "mmm .","geom": "point","label": "f","mult": 4 },{ "coord": [ "3/4,1/4,1/2","1/4,1/4,1/2" ],"desc": "mmm .","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2" ],"desc": "4/mmm","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "4/mmm","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "4/mmm","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "4/mmm","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "123:a+b,-a+b,c","det": 2.0,"hm": "C 4/m m m","id": "C_4/m_m_m","more": true,"sg": 123,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 123 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_124.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_124.json new file mode 100755 index 000000000000..daca1807b7e1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_124.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "124:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,y,-z+1/2","x,-y,-z+1/2","y,x,-z+1/2","-y,-x,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x,-y,z+1/2","-x,y,z+1/2","-y,-x,z+1/2","y,x,z+1/2" ],"hall": "-P 4 2c","hm": "P 4/m c c","id": "P_4/m_c_c","jmolId": "124","set": 1,"sg": 124,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "n","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,0","y,-x,0","-x,y,1/2","x,-y,1/2","y,x,1/2","-y,-x,1/2" ],"desc": "m..","geom": "plane","label": "m","mult": 8 },{ "coord": [ "x,1/2,1/4","-x,1/2,1/4","1/2,x,1/4","1/2,-x,1/4","-x,1/2,3/4","x,1/2,3/4","1/2,-x,3/4","1/2,x,3/4" ],"desc": ".2.","geom": "line","label": "l","mult": 8 },{ "coord": [ "x,0,1/4","-x,0,1/4","0,x,1/4","0,-x,1/4","-x,0,3/4","x,0,3/4","0,-x,3/4","0,x,3/4" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "x,x,1/4","-x,-x,1/4","-x,x,1/4","x,-x,1/4","-x,-x,3/4","x,x,3/4","x,-x,3/4","-x,x,3/4" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z+1/2","1/2,0,-z+1/2","0,1/2,-z","1/2,0,-z","0,1/2,z+1/2","1/2,0,z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z+1/2","1/2,1/2,-z","1/2,1/2,z+1/2" ],"desc": "4..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "4..","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,0,1/4","0,1/2,3/4","1/2,0,3/4" ],"desc": "222 .","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,0","0,1/2,1/2","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "4/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,1/4","1/2,1/2,3/4" ],"desc": "422","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "4/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "422","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "124:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-y,-x,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-y+1/2,-x+1/2,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-y,-x,-z+1/2","y,x,-z+1/2","-x,y,-z+1/2","x,-y,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","y,x,z+1/2","-y,-x,z+1/2","x,-y,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x+1/2,-z+1/2","y+1/2,x+1/2,-z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "C?","hm": "C 4/m c c","id": "C_4/m_c_c","jmolId": "124:c","set": 2,"sg": 124,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "n","mult": 32 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,0","1/2x+1/2y,-1/2x+1/2y,0","-1/2x-1/2y,-1/2x+1/2y,1/2","1/2x+1/2y,1/2x-1/2y,1/2","-1/2x+1/2y,1/2x+1/2y,1/2","1/2x-1/2y,-1/2x-1/2y,1/2" ],"desc": "m..","geom": "plane","label": "m","mult": 16 },{ "coord": [ "1/2x+3/4,1/2x+1/4,1/4","-1/2x+3/4,-1/2x+1/4,1/4","-1/2x+1/4,1/2x+1/4,1/4","1/2x+1/4,-1/2x+1/4,1/4","-1/2x+3/4,-1/2x+1/4,3/4","1/2x+3/4,1/2x+1/4,3/4","1/2x+1/4,-1/2x+1/4,3/4","-1/2x+1/4,1/2x+1/4,3/4" ],"desc": ".2.","geom": "line","label": "l","mult": 16 },{ "coord": [ "1/2x,1/2x,1/4","-1/2x,-1/2x,1/4","-1/2x,1/2x,1/4","1/2x,-1/2x,1/4","-1/2x,-1/2x,3/4","1/2x,1/2x,3/4","1/2x,-1/2x,3/4","-1/2x,1/2x,3/4" ],"desc": ".2.","geom": "line","label": "k","mult": 16 },{ "coord": [ "0,x,1/4","0,-x,1/4","-x,0,1/4","x,0,1/4","0,-x,3/4","0,x,3/4","x,0,3/4","-x,0,3/4" ],"desc": "..2","geom": "line","label": "j","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,-z+1/2","1/4,1/4,-z+1/2","3/4,1/4,-z","1/4,1/4,-z","3/4,1/4,z+1/2","1/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 16 },{ "coord": [ "0,1/2,z","0,1/2,-z+1/2","0,1/2,-z","0,1/2,z+1/2" ],"desc": "4..","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "4..","geom": "line","label": "g","mult": 8 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,1/4","3/4,1/4,3/4","1/4,1/4,3/4" ],"desc": "222 .","geom": "point","label": "f","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0","3/4,1/4,1/2","1/4,1/4,1/2" ],"desc": "2/m..","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "4/m..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "422","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "4/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "422","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "124:a+b,-a+b,c","det": 2.0,"hm": "C 4/m c c","id": "C_4/m_c_c","more": true,"sg": 124,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 124 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_125.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_125.json new file mode 100755 index 000000000000..4b3c6cc16442 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_125.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "125:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-x+1/2,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y,-x+1/2,z","-x+1/2,y,-z","x,-y+1/2,-z","y,x,-z","-y+1/2,-x+1/2,-z","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z","-y,x+1/2,-z","x+1/2,-y,z","-x,y+1/2,z","-y,-x,z","y+1/2,x+1/2,z" ],"hall": "-P 4a 2b","hm": "P 4/n b m :2","id": "P_4/n_b_m_2","jmolId": "125:2","set": 1,"sg": 125,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "n","mult": 16 },{ "coord": [ "x,-x,z","-x+1/2,x+1/2,z","x+1/2,x,z","-x,-x+1/2,z","-x+1/2,-x,-z","x,x+1/2,-z","-x,x,-z","x+1/2,-x+1/2,-z" ],"desc": "..m","geom": "plane","label": "m","mult": 8 },{ "coord": [ "x,1/4,1/2","-x+1/2,1/4,1/2","1/4,x,1/2","1/4,-x+1/2,1/2","-x,3/4,1/2","x+1/2,3/4,1/2","3/4,-x,1/2","3/4,x+1/2,1/2" ],"desc": ".2.","geom": "line","label": "l","mult": 8 },{ "coord": [ "x,1/4,0","-x+1/2,1/4,0","1/4,x,0","1/4,-x+1/2,0","-x,3/4,0","x+1/2,3/4,0","3/4,-x,0","3/4,x+1/2,0" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "x,x,1/2","-x+1/2,-x+1/2,1/2","-x+1/2,x,1/2","x,-x+1/2,1/2","-x,-x,1/2","x+1/2,x+1/2,1/2","x+1/2,-x,1/2","-x,x+1/2,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "x,x,0","-x+1/2,-x+1/2,0","-x+1/2,x,0","x,-x+1/2,0","-x,-x,0","x+1/2,x+1/2,0","x+1/2,-x,0","-x,x+1/2,0" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,3/4,z","3/4,1/4,-z","1/4,3/4,-z" ],"desc": "2.m m","geom": "line","label": "h","mult": 4 },{ "coord": [ "1/4,1/4,z","1/4,1/4,-z","3/4,3/4,-z","3/4,3/4,z" ],"desc": "4..","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","1/2,0,1/2","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,0","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,1/2","1/4,3/4,1/2" ],"desc": "-42m","geom": "point","label": "d","mult": 2 },{ "coord": [ "3/4,1/4,0","1/4,3/4,0" ],"desc": "-42m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/4,1/4,1/2","3/4,3/4,1/2" ],"desc": "422","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,1/4,0","3/4,3/4,0" ],"desc": "422","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "125:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","-y+1/4,-x+1/4,-z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","-y+3/4,-x+3/4,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","y+3/4,-x+1/4,z","-y+1/4,-x+1/4,-z","y+3/4,x+1/4,-z","-x,y,-z","x,-y+1/2,-z","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z","-y+3/4,x+1/4,-z","y+1/4,x+1/4,z","-y+3/4,-x+1/4,z","x,-y,z","-x,y+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","y+1/4,-x+3/4,z","-y+3/4,-x+3/4,-z","y+1/4,x+3/4,-z","-x+1/2,y+1/2,-z","x+1/2,-y,-z","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z","-y+1/4,x+3/4,-z","y+3/4,x+3/4,z","-y+1/4,-x+3/4,z","x+1/2,-y+1/2,z","-x+1/2,y,z" ],"hm": "C 4/e m g1 :2","id": "C_4/e_m_g1_2","jmolId": "125:c","set": 2,"sg": 125,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "n","mult": 32 },{ "coord": [ "x,0,z","-x,1/2,z","1/4,x+1/4,z","3/4,-x+1/4,z","1/4,-x+1/4,-z","3/4,x+1/4,-z","-x,0,-z","x,1/2,-z" ],"desc": "..m","geom": "plane","label": "m","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+1/8,1/2","-1/2x+1/8,-1/2x+3/8,1/2","-1/2x+1/8,1/2x+1/8,1/2","1/2x+7/8,-1/2x+3/8,1/2","-1/2x+5/8,-1/2x+3/8,1/2","1/2x+7/8,1/2x+5/8,1/2","1/2x+3/8,-1/2x+3/8,1/2","-1/2x+1/8,1/2x+5/8,1/2" ],"desc": ".2.","geom": "line","label": "l","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+1/8,0","-1/2x+1/8,-1/2x+3/8,0","-1/2x+1/8,1/2x+1/8,0","1/2x+7/8,-1/2x+3/8,0","-1/2x+5/8,-1/2x+3/8,0","1/2x+7/8,1/2x+5/8,0","1/2x+3/8,-1/2x+3/8,0","-1/2x+1/8,1/2x+5/8,0" ],"desc": ".2.","geom": "line","label": "k","mult": 16 },{ "coord": [ "0,x,1/2","0,-x+1/2,1/2","-x+1/4,1/4,1/2","x+3/4,1/4,1/2","0,-x,1/2","0,x+1/2,1/2","x+1/4,1/4,1/2","-x+3/4,1/4,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 16 },{ "coord": [ "0,x,0","0,-x+1/2,0","-x+1/4,1/4,0","x+3/4,1/4,0","0,-x,0","0,x+1/2,0","x+1/4,1/4,0","-x+3/4,1/4,0" ],"desc": "..2","geom": "line","label": "i","mult": 16 },{ "coord": [ "1/4,1/2,z","3/4,1/2,z","1/4,1/2,-z","3/4,1/2,-z" ],"desc": "2.m m","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,1/4,z","0,1/4,-z","0,3/4,-z","0,3/4,z" ],"desc": "4..","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,1/2","1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 8 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,0","3/4,1/4,0" ],"desc": "..2/m","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/4,1/2,1/2","3/4,1/2,1/2" ],"desc": "-42m","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0" ],"desc": "-42m","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/4,1/2","0,3/4,1/2" ],"desc": "422","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,0","0,3/4,0" ],"desc": "422","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "125:a,b,c;-1/4,-1/4,0","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,y,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,y,-z","x,-y,-z","y,x,-z","-y,-x,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z" ],"hall": "P 4 2 -1ab","hm": "P 4/n b m :1","id": "P_4/n_b_m_1","jmolId": "125:1","set": 3,"sg": 125,"trm": "a,b,c;-1/4,-1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "n","mult": 16 },{ "coord": [ "x+1/4,-x+1/4,z","-x+3/4,x+3/4,z","x+3/4,x+1/4,z","-x+1/4,-x+3/4,z","-x+3/4,-x+1/4,-z","x+1/4,x+3/4,-z","-x+1/4,x+1/4,-z","x+3/4,-x+3/4,-z" ],"desc": "..m","geom": "plane","label": "m","mult": 8 },{ "coord": [ "x+1/4,1/2,1/2","-x+3/4,1/2,1/2","1/2,x+1/4,1/2","1/2,-x+3/4,1/2","-x+1/4,0,1/2","x+3/4,0,1/2","0,-x+1/4,1/2","0,x+3/4,1/2" ],"desc": ".2.","geom": "line","label": "l","mult": 8 },{ "coord": [ "x+1/4,1/2,0","-x+3/4,1/2,0","1/2,x+1/4,0","1/2,-x+3/4,0","-x+1/4,0,0","x+3/4,0,0","0,-x+1/4,0","0,x+3/4,0" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "x+1/4,x+1/4,1/2","-x+3/4,-x+3/4,1/2","-x+3/4,x+1/4,1/2","x+1/4,-x+3/4,1/2","-x+1/4,-x+1/4,1/2","x+3/4,x+3/4,1/2","x+3/4,-x+1/4,1/2","-x+1/4,x+3/4,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "x+1/4,x+1/4,0","-x+3/4,-x+3/4,0","-x+3/4,x+1/4,0","x+1/4,-x+3/4,0","-x+1/4,-x+1/4,0","x+3/4,x+3/4,0","x+3/4,-x+1/4,0","-x+1/4,x+3/4,0" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z","1/2,0,-z" ],"desc": "2.m m","geom": "line","label": "h","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z","0,0,-z","0,0,z" ],"desc": "4..","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/4,1/2","3/4,3/4,1/2","3/4,1/4,1/2","1/4,3/4,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,3/4,0","3/4,1/4,0","1/4,3/4,0" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2" ],"desc": "-42m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "-42m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/2","0,0,1/2" ],"desc": "422","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/2,1/2,0","0,0,0" ],"desc": "422","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "125:a-b,a+b,c;-1/4,-1/4,0","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","-y+1/2,-x+1/2,-z","-x,-y+1/2,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y,x,z","-y,-x,-z","-x+1/2,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","-x,y,-z","x,-y,-z","-x,-y+1/2,-z","x,y+1/2,-z","y,-x+1/2,-z","-y,x+1/2,-z","y,x+1/2,z","-y,-x+1/2,z","x,-y+1/2,z","-x,y+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y,x,z","y,-x,z","-y,-x,-z","y,x,-z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y,-z","x+1/2,y,-z","y+1/2,-x,-z","-y+1/2,x,-z","y+1/2,x,z","-y+1/2,-x,z","x+1/2,-y,z","-x+1/2,y,z" ],"hall": "C?","hm": "C 4/e m g1 :1","id": "C_4/e_m_g1_1","jmolId": "125:c1","set": 4,"sg": 125,"trm": "a-b,a+b,c;-1/4,-1/4,0","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "n","mult": 32 },{ "coord": [ "x,1/4,z","-x,3/4,z","1/4,x+1/2,z","3/4,-x+1/2,z","1/4,-x+1/2,-z","3/4,x+1/2,-z","-x,1/4,-z","x,3/4,-z" ],"desc": "..m","geom": "plane","label": "m","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+3/8,1/2","-1/2x+1/8,-1/2x+5/8,1/2","-1/2x+1/8,1/2x+3/8,1/2","1/2x+7/8,-1/2x+5/8,1/2","-1/2x+5/8,-1/2x+5/8,1/2","1/2x+7/8,1/2x+7/8,1/2","1/2x+3/8,-1/2x+5/8,1/2","-1/2x+1/8,1/2x+7/8,1/2" ],"desc": ".2.","geom": "line","label": "l","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+3/8,0","-1/2x+1/8,-1/2x+5/8,0","-1/2x+1/8,1/2x+3/8,0","1/2x+7/8,-1/2x+5/8,0","-1/2x+5/8,-1/2x+5/8,0","1/2x+7/8,1/2x+7/8,0","1/2x+3/8,-1/2x+5/8,0","-1/2x+1/8,1/2x+7/8,0" ],"desc": ".2.","geom": "line","label": "k","mult": 16 },{ "coord": [ "0,x+1/4,1/2","0,-x+3/4,1/2","-x+1/4,1/2,1/2","x+3/4,1/2,1/2","0,-x+1/4,1/2","0,x+3/4,1/2","x+1/4,1/2,1/2","-x+3/4,1/2,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 16 },{ "coord": [ "0,x+1/4,0","0,-x+3/4,0","-x+1/4,1/2,0","x+3/4,1/2,0","0,-x+1/4,0","0,x+3/4,0","x+1/4,1/2,0","-x+3/4,1/2,0" ],"desc": "..2","geom": "line","label": "i","mult": 16 },{ "coord": [ "1/4,3/4,z","3/4,3/4,z","1/4,3/4,-z","3/4,3/4,-z" ],"desc": "2.m m","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z","0,0,-z","0,0,z" ],"desc": "4..","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/4,1/2","0,3/4,1/2","1/4,1/2,1/2","3/4,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 8 },{ "coord": [ "0,1/4,0","0,3/4,0","1/4,1/2,0","3/4,1/2,0" ],"desc": "..2/m","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/4,3/4,1/2","3/4,3/4,1/2" ],"desc": "-42m","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,3/4,0","3/4,3/4,0" ],"desc": "-42m","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,1/2","0,0,1/2" ],"desc": "422","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/2,0","0,0,0" ],"desc": "422","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "125:a+b,-a+b,c","det": 2.0,"hm": "C 4/e m g1 :2","id": "C_4/e_m_g1_2","more": true,"sg": 125,"trm": "a+b,-a+b,c" },{ "clegId": "125:a+b,-a+b,c;-1/4,-1/4,0","det": 2.0,"hm": "C 4/e m g1 :1","id": "C_4/e_m_g1_1","more": true,"sg": 125,"trm": "a+b,-a+b,c;-1/4,-1/4,0" } ],"n": 6,"sg": 125 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_126.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_126.json new file mode 100755 index 000000000000..3305dc8ae55e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_126.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "126:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-x+1/2,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y,-x+1/2,z","-x+1/2,y,-z+1/2","x,-y+1/2,-z+1/2","y,x,-z+1/2","-y+1/2,-x+1/2,-z+1/2","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z","-y,x+1/2,-z","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2","-y,-x,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "-P 4a 2bc","hm": "P 4/n n c :2","id": "P_4/n_n_c_2","jmolId": "126:2","set": 1,"sg": 126,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x,3/4,1/4","-x+1/2,3/4,1/4","3/4,x,1/4","3/4,-x+1/2,1/4","-x,1/4,3/4","x+1/2,1/4,3/4","1/4,-x,3/4","1/4,x+1/2,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "x,1/4,1/4","-x+1/2,1/4,1/4","1/4,x,1/4","1/4,-x+1/2,1/4","-x,3/4,3/4","x+1/2,3/4,3/4","3/4,-x,3/4","3/4,x+1/2,3/4" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "x,x,1/4","-x+1/2,-x+1/2,1/4","-x+1/2,x,1/4","x,-x+1/2,1/4","-x,-x,3/4","x+1/2,x+1/2,3/4","x+1/2,-x,3/4","-x,x+1/2,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/4,3/4,z","3/4,1/4,z","1/4,3/4,-z+1/2","3/4,1/4,-z+1/2","3/4,1/4,-z","1/4,3/4,-z","3/4,1/4,z+1/2","1/4,3/4,z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,0","0,1/2,0","1/2,0,1/2","0,1/2,1/2","0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,1/4,-z+1/2","3/4,3/4,-z","3/4,3/4,z+1/2" ],"desc": "4..","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,0","3/4,1/4,0","1/4,3/4,1/2","3/4,1/4,1/2" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,3/4,3/4","3/4,1/4,3/4","3/4,1/4,1/4","1/4,3/4,1/4" ],"desc": "222 .","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,1/4,3/4","3/4,3/4,1/4" ],"desc": "422","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "422","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "126:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","-y+1/4,-x+1/4,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","-y+3/4,-x+3/4,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","y+3/4,-x+1/4,z","-y+1/4,-x+1/4,-z+1/2","y+3/4,x+1/4,-z+1/2","-x,y,-z+1/2","x,-y+1/2,-z+1/2","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z","-y+3/4,x+1/4,-z","y+1/4,x+1/4,z+1/2","-y+3/4,-x+1/4,z+1/2","x,-y,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","y+1/4,-x+3/4,z","-y+3/4,-x+3/4,-z+1/2","y+1/4,x+3/4,-z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z","-y+1/4,x+3/4,-z","y+3/4,x+3/4,z+1/2","-y+1/4,-x+3/4,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y,z+1/2" ],"hm": "C 4/e c g2 :2","id": "C_4/e_c_g2_2","jmolId": "126:c","set": 2,"sg": 126,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 32 },{ "coord": [ "1/2x+5/8,1/2x+3/8,1/4","-1/2x+7/8,-1/2x+5/8,1/4","-1/2x+3/8,1/2x+3/8,1/4","1/2x+1/8,-1/2x+5/8,1/4","-1/2x+7/8,-1/2x+1/8,3/4","1/2x+1/8,1/2x+3/8,3/4","1/2x+1/8,-1/2x+1/8,3/4","-1/2x+7/8,1/2x+3/8,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+1/8,1/4","-1/2x+1/8,-1/2x+3/8,1/4","-1/2x+1/8,1/2x+1/8,1/4","1/2x+7/8,-1/2x+3/8,1/4","-1/2x+5/8,-1/2x+3/8,3/4","1/2x+7/8,1/2x+5/8,3/4","1/2x+3/8,-1/2x+3/8,3/4","-1/2x+1/8,1/2x+5/8,3/4" ],"desc": ".2.","geom": "line","label": "i","mult": 16 },{ "coord": [ "0,x,1/4","0,-x+1/2,1/4","-x+1/4,1/4,1/4","x+3/4,1/4,1/4","0,-x,3/4","0,x+1/2,3/4","x+1/4,1/4,3/4","-x+3/4,1/4,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 16 },{ "coord": [ "3/4,1/2,z","1/4,1/2,z","3/4,1/2,-z+1/2","1/4,1/2,-z+1/2","1/4,1/2,-z","3/4,1/2,-z","1/4,1/2,z+1/2","3/4,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 16 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,0","3/4,1/4,0","1/4,1/4,1/2","3/4,1/4,1/2","0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 16 },{ "coord": [ "0,1/4,z","0,1/4,-z+1/2","0,3/4,-z","0,3/4,z+1/2" ],"desc": "4..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/2,0","1/4,1/2,0","3/4,1/2,1/2","1/4,1/2,1/2" ],"desc": "-4..","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/2,3/4","1/4,1/2,3/4","1/4,1/2,1/4","3/4,1/2,1/4" ],"desc": "222 .","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/4,3/4","0,3/4,1/4" ],"desc": "422","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,1/4","0,3/4,3/4" ],"desc": "422","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "126:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,y,-z","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,y,-z","x,-y,-z","y,x,-z","-y,-x,-z","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "P 4 2 -1n","hm": "P 4/n n c :1","id": "P_4/n_n_c_1","jmolId": "126:1","set": 3,"sg": 126,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x+1/4,0,1/2","-x+3/4,0,1/2","0,x+1/4,1/2","0,-x+3/4,1/2","-x+1/4,1/2,0","x+3/4,1/2,0","1/2,-x+1/4,0","1/2,x+3/4,0" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "x+1/4,1/2,1/2","-x+3/4,1/2,1/2","1/2,x+1/4,1/2","1/2,-x+3/4,1/2","-x+1/4,0,0","x+3/4,0,0","0,-x+1/4,0","0,x+3/4,0" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "x+1/4,x+1/4,1/2","-x+3/4,-x+3/4,1/2","-x+3/4,x+1/4,1/2","x+1/4,-x+3/4,1/2","-x+1/4,-x+1/4,0","x+3/4,x+3/4,0","x+3/4,-x+1/4,0","-x+1/4,x+3/4,0" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/2,0,z+1/4","0,1/2,z+1/4","1/2,0,-z+3/4","0,1/2,-z+3/4","0,1/2,-z+1/4","1/2,0,-z+1/4","0,1/2,z+3/4","1/2,0,z+3/4" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,1/4","1/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4","1/4,1/4,3/4","3/4,3/4,3/4" ],"desc": "-1","geom": "point","label": "f","mult": 8 },{ "coord": [ "1/2,1/2,z+1/4","1/2,1/2,-z+3/4","0,0,-z+1/4","0,0,z+3/4" ],"desc": "4..","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,1/4","0,1/2,1/4","1/2,0,3/4","0,1/2,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/2,0,0","0,1/2,0","0,1/2,1/2","1/2,0,1/2" ],"desc": "222 .","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,1/2,0","0,0,1/2" ],"desc": "422","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/2,1/2,1/2","0,0,0" ],"desc": "422","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "126:a-b,a+b,c;-1/4,-1/4,-1/4","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","-y+1/2,-x+1/2,-z","-x,-y+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y,x,z","-y,-x,-z","-x+1/2,-y,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","-x,y,-z","x,-y,-z","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y,x,z","y,-x,z","-y,-x,-z","y,x,-z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hm": "C 4/e c g2 :1","id": "C_4/e_c_g2_1","jmolId": "126:c","set": 4,"sg": 126,"trm": "a-b,a+b,c;-1/4,-1/4,-1/4","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 32 },{ "coord": [ "1/2x+5/8,1/2x+5/8,1/2","-1/2x+7/8,-1/2x+7/8,1/2","-1/2x+3/8,1/2x+5/8,1/2","1/2x+1/8,-1/2x+7/8,1/2","-1/2x+7/8,-1/2x+3/8,0","1/2x+1/8,1/2x+5/8,0","1/2x+1/8,-1/2x+3/8,0","-1/2x+7/8,1/2x+5/8,0" ],"desc": ".2.","geom": "line","label": "j","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+3/8,1/2","-1/2x+1/8,-1/2x+5/8,1/2","-1/2x+1/8,1/2x+3/8,1/2","1/2x+7/8,-1/2x+5/8,1/2","-1/2x+5/8,-1/2x+5/8,0","1/2x+7/8,1/2x+7/8,0","1/2x+3/8,-1/2x+5/8,0","-1/2x+1/8,1/2x+7/8,0" ],"desc": ".2.","geom": "line","label": "i","mult": 16 },{ "coord": [ "0,x+1/4,1/2","0,-x+3/4,1/2","-x+1/4,1/2,1/2","x+3/4,1/2,1/2","0,-x+1/4,0","0,x+3/4,0","x+1/4,1/2,0","-x+3/4,1/2,0" ],"desc": "..2","geom": "line","label": "h","mult": 16 },{ "coord": [ "3/4,3/4,z+1/4","1/4,3/4,z+1/4","3/4,3/4,-z+3/4","1/4,3/4,-z+3/4","1/4,3/4,-z+1/4","3/4,3/4,-z+1/4","1/4,3/4,z+3/4","3/4,3/4,z+3/4" ],"desc": "2..","geom": "line","label": "g","mult": 16 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,1/2,1/4","3/4,1/2,1/4","1/4,1/2,3/4","3/4,1/2,3/4","0,1/4,3/4","0,3/4,3/4" ],"desc": "-1","geom": "point","label": "f","mult": 16 },{ "coord": [ "0,1/2,z+1/4","0,1/2,-z+3/4","0,0,-z+1/4","0,0,z+3/4" ],"desc": "4..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,3/4,1/4","1/4,3/4,1/4","3/4,3/4,3/4","1/4,3/4,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,3/4,0","1/4,3/4,0","1/4,3/4,1/2","3/4,3/4,1/2" ],"desc": "222 .","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,0","0,0,1/2" ],"desc": "422","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/2,1/2","0,0,0" ],"desc": "422","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "126:a+b,-a+b,c","det": 2.0,"hm": "C 4/e c g2 :2","id": "C_4/e_c_g2_2","more": true,"sg": 126,"trm": "a+b,-a+b,c" },{ "clegId": "126:a+b,-a+b,c;-1/4,-1/4,-1/4","det": 2.0,"hm": "C 4/e c g2 :1","id": "C_4/e_c_g2_1","more": true,"sg": 126,"trm": "a+b,-a+b,c;-1/4,-1/4,-1/4" } ],"n": 6,"sg": 126 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_127.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_127.json new file mode 100755 index 000000000000..772c0c4fe310 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_127.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "127:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x+1/2,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z" ],"hall": "-P 4 2ab","hm": "P 4/m b m","id": "P_4/m_b_m","jmolId": "127","set": 1,"sg": 127,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 16 },{ "coord": [ "x,x+1/2,z","-x,-x+1/2,z","-x+1/2,x,z","x+1/2,-x,z","-x+1/2,x,-z","x+1/2,-x,-z","x,x+1/2,-z","-x,-x+1/2,-z" ],"desc": "..m","geom": "plane","label": "k","mult": 8 },{ "coord": [ "x,y,1/2","-x,-y,1/2","-y,x,1/2","y,-x,1/2","-x+1/2,y+1/2,1/2","x+1/2,-y+1/2,1/2","y+1/2,x+1/2,1/2","-y+1/2,-x+1/2,1/2" ],"desc": "m..","geom": "plane","label": "j","mult": 8 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,0","y,-x,0","-x+1/2,y+1/2,0","x+1/2,-y+1/2,0","y+1/2,x+1/2,0","-y+1/2,-x+1/2,0" ],"desc": "m..","geom": "plane","label": "i","mult": 8 },{ "coord": [ "x,x+1/2,1/2","-x,-x+1/2,1/2","-x+1/2,x,1/2","x+1/2,-x,1/2" ],"desc": "m.2 m","geom": "line","label": "h","mult": 4 },{ "coord": [ "x,x+1/2,0","-x,-x+1/2,0","-x+1/2,x,0","x+1/2,-x,0" ],"desc": "m.2 m","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z","1/2,0,-z","0,1/2,-z" ],"desc": "2.m m","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,-z","0,0,-z","1/2,1/2,z" ],"desc": "4..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "m.m m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2" ],"desc": "m.m m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "4/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "4/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "127:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-y,-x+1/2,-z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-y+1/2,-x,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-y,-x+1/2,-z","y,x+1/2,-z","-x,y+1/2,-z","x,-y+1/2,-z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","y,x+1/2,z","-y,-x+1/2,z","x,-y+1/2,z","-x,y+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x,-z","y+1/2,x,-z","-x+1/2,y,-z","x+1/2,-y,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x,z","-y+1/2,-x,z","x+1/2,-y,z","-x+1/2,y,z" ],"hall": "C?","hm": "C 4/m m g1","id": "C_4/m_m_g1","jmolId": "127:c","set": 2,"sg": 127,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "l","mult": 32 },{ "coord": [ "3/4,x+1/4,z","3/4,-x+1/4,z","-x+1/4,1/4,z","x+1/4,1/4,z","-x+1/4,1/4,-z","x+1/4,1/4,-z","3/4,x+1/4,-z","3/4,-x+1/4,-z" ],"desc": "..m","geom": "plane","label": "k","mult": 16 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,1/2","-1/2x+1/2y,-1/2x-1/2y,1/2","-1/2x-1/2y,1/2x-1/2y,1/2","1/2x+1/2y,-1/2x+1/2y,1/2","-1/2x-1/2y,-1/2x+1/2y+1/2,1/2","1/2x+1/2y,1/2x-1/2y+1/2,1/2","-1/2x+1/2y,1/2x+1/2y+1/2,1/2","1/2x-1/2y,-1/2x-1/2y+1/2,1/2" ],"desc": "m..","geom": "plane","label": "j","mult": 16 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,0","1/2x+1/2y,-1/2x+1/2y,0","-1/2x-1/2y,-1/2x+1/2y+1/2,0","1/2x+1/2y,1/2x-1/2y+1/2,0","-1/2x+1/2y,1/2x+1/2y+1/2,0","1/2x-1/2y,-1/2x-1/2y+1/2,0" ],"desc": "m..","geom": "plane","label": "i","mult": 16 },{ "coord": [ "3/4,x+1/4,1/2","3/4,-x+1/4,1/2","-x+1/4,1/4,1/2","x+1/4,1/4,1/2" ],"desc": "m.2 m","geom": "line","label": "h","mult": 8 },{ "coord": [ "3/4,x+1/4,0","3/4,-x+1/4,0","-x+1/4,1/4,0","x+1/4,1/4,0" ],"desc": "m.2 m","geom": "line","label": "g","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","1/4,1/4,-z","3/4,1/4,-z" ],"desc": "2.m m","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,1/2,-z","0,0,-z","0,1/2,z" ],"desc": "4..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "m.m m","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,1/2","1/4,1/4,1/2" ],"desc": "m.m m","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "4/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "4/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "127:a+b,-a+b,c","det": 2.0,"hm": "C 4/m m g1","id": "C_4/m_m_g1","more": true,"sg": 127,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 127 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_128.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_128.json new file mode 100755 index 000000000000..e7ef5215b5b0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_128.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "128:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x+1/2,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "-P 4 2n","hm": "P 4/m n c","id": "P_4/m_n_c","jmolId": "128","set": 1,"sg": 128,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,0","y,-x,0","-x+1/2,y+1/2,1/2","x+1/2,-y+1/2,1/2","y+1/2,x+1/2,1/2","-y+1/2,-x+1/2,1/2" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "x,x+1/2,1/4","-x,-x+1/2,1/4","-x+1/2,x,1/4","x+1/2,-x,1/4","-x,-x+1/2,3/4","x,x+1/2,3/4","x+1/2,-x,3/4","-x+1/2,x,3/4" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","1/2,0,-z+1/2","0,1/2,-z+1/2","0,1/2,-z","1/2,0,-z","1/2,0,z+1/2","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","1/2,1/2,-z+1/2","0,0,-z","1/2,1/2,z+1/2" ],"desc": "4..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,0,1/4","0,1/2,3/4","1/2,0,3/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,0","1/2,0,1/2","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "4/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "4/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "128:a+b,-a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","y+1/2,x,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y,x+1/2,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","y+1/2,x,-z+1/2","-y+1/2,-x,-z+1/2","x+1/2,-y,-z+1/2","-x+1/2,y,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","-y+1/2,-x,z+1/2","y+1/2,x,z+1/2","-x+1/2,y,z+1/2","x+1/2,-y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","y,x+1/2,-z+1/2","-y,-x+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","-y,-x+1/2,z+1/2","y,x+1/2,z+1/2","-x,y+1/2,z+1/2","x,-y+1/2,z+1/2" ],"hall": "C?","hm": "C 4/m c g2","id": "C_4/m_c_g2","jmolId": "128:c","set": 2,"sg": 128,"trm": "a+b,-a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 32 },{ "coord": [ "1/2x+1/2y,-1/2x+1/2y,0","-1/2x-1/2y,1/2x-1/2y,0","1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x+1/2y+1/2,1/2x+1/2y,1/2","1/2x-1/2y+1/2,-1/2x-1/2y,1/2","1/2x+1/2y+1/2,1/2x-1/2y,1/2","-1/2x-1/2y+1/2,-1/2x+1/2y,1/2" ],"desc": "m..","geom": "plane","label": "h","mult": 16 },{ "coord": [ "x+1/4,1/4,1/4","-x+1/4,1/4,1/4","1/4,x+3/4,1/4","1/4,-x+3/4,1/4","-x+1/4,1/4,3/4","x+1/4,1/4,3/4","1/4,-x+3/4,3/4","1/4,x+3/4,3/4" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/4,1/4,z","1/4,3/4,z","1/4,3/4,-z+1/2","1/4,1/4,-z+1/2","1/4,1/4,-z","1/4,3/4,-z","1/4,3/4,z+1/2","1/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,0,z","1/2,0,-z+1/2","0,0,-z","1/2,0,z+1/2" ],"desc": "4..","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,1/4,1/4","1/4,3/4,1/4","1/4,1/4,3/4","1/4,3/4,3/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,0","1/4,3/4,0","1/4,3/4,1/2","1/4,1/4,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","1/2,0,0" ],"desc": "4/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "4/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "128:a-b,a+b,c","det": 2.0,"hm": "C 4/m c g2","id": "C_4/m_c_g2","more": true,"sg": 128,"trm": "a-b,a+b,c" } ],"n": 3,"sg": 128 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_129.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_129.json new file mode 100755 index 000000000000..fc775ae53c60 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_129.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "129:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-x,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y,-x+1/2,z","-x,y+1/2,-z","x+1/2,-y,-z","y+1/2,x+1/2,-z","-y,-x,-z","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z","-y,x+1/2,-z","x,-y+1/2,z","-x+1/2,y,z","-y+1/2,-x+1/2,z","y,x,z" ],"hall": "-P 4a 2a","hm": "P 4/n m m :2","id": "P_4/n_m_m_2","jmolId": "129:2","set": 1,"sg": 129,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x,x,z","-x+1/2,-x+1/2,z","-x+1/2,x,z","x,-x+1/2,z","-x,x+1/2,-z","x+1/2,-x,-z","x+1/2,x+1/2,-z","-x,-x,-z" ],"desc": "..m","geom": "plane","label": "j","mult": 8 },{ "coord": [ "1/4,y,z","1/4,-y+1/2,z","-y+1/2,1/4,z","y,1/4,z","3/4,y+1/2,-z","3/4,-y,-z","y+1/2,3/4,-z","-y,3/4,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "x,-x,1/2","-x+1/2,x+1/2,1/2","x+1/2,x,1/2","-x,-x+1/2,1/2","-x,x,1/2","x+1/2,-x+1/2,1/2","-x+1/2,-x,1/2","x,x+1/2,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,-x,0","-x+1/2,x+1/2,0","x+1/2,x,0","-x,-x+1/2,0","-x,x,0","x+1/2,-x+1/2,0","-x+1/2,-x,0","x,x+1/2,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,3/4,z","1/4,3/4,-z","3/4,1/4,-z" ],"desc": "2mm .","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","1/2,0,1/2","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,0","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,z","3/4,3/4,-z" ],"desc": "4mm","geom": "line","label": "c","mult": 2 },{ "coord": [ "3/4,1/4,1/2","1/4,3/4,1/2" ],"desc": "-4m2","geom": "point","label": "b","mult": 2 },{ "coord": [ "3/4,1/4,0","1/4,3/4,0" ],"desc": "-4m2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "129:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","-y+3/4,-x+1/4,-z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","-y+1/4,-x+3/4,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","y+3/4,-x+1/4,z","-y+3/4,-x+1/4,-z","y+1/4,x+1/4,-z","-x,y+1/2,-z","x,-y,-z","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z","-y+3/4,x+1/4,-z","y+3/4,x+1/4,z","-y+1/4,-x+1/4,z","x,-y+1/2,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","y+1/4,-x+3/4,z","-y+1/4,-x+3/4,-z","y+3/4,x+3/4,-z","-x+1/2,y,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z","-y+1/4,x+3/4,-z","y+1/4,x+3/4,z","-y+3/4,-x+3/4,z","x+1/2,-y,z","-x+1/2,y+1/2,z" ],"hm": "C 4/e m m :2","id": "C_4/e_m_m_2","jmolId": "129:c","set": 2,"sg": 129,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 32 },{ "coord": [ "0,x,z","0,-x+1/2,z","-x+1/4,1/4,z","x+3/4,1/4,z","-x+3/4,1/4,-z","x+1/4,1/4,-z","0,x+1/2,-z","0,-x,-z" ],"desc": "..m","geom": "plane","label": "j","mult": 16 },{ "coord": [ "-1/2y+1/8,1/2y+1/8,z","1/2y+7/8,-1/2y+3/8,z","-1/2y+1/8,-1/2y+3/8,z","1/2y+7/8,1/2y+1/8,z","-1/2y+1/8,1/2y+5/8,-z","1/2y+3/8,-1/2y+3/8,-z","1/2y+7/8,1/2y+5/8,-z","-1/2y+5/8,-1/2y+3/8,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 16 },{ "coord": [ "x,0,1/2","-x,1/2,1/2","1/4,x+1/4,1/2","3/4,-x+1/4,1/2","-x,0,1/2","x,1/2,1/2","1/4,-x+1/4,1/2","3/4,x+1/4,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 16 },{ "coord": [ "x,0,0","-x,1/2,0","1/4,x+1/4,0","3/4,-x+1/4,0","-x,0,0","x,1/2,0","1/4,-x+1/4,0","3/4,x+1/4,0" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/4,1/2,z","3/4,1/2,z","3/4,1/2,-z","1/4,1/2,-z" ],"desc": "2mm .","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,1/2","1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "..2/m","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,0","3/4,1/4,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,1/4,z","0,3/4,-z" ],"desc": "4mm","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/4,1/2,1/2","3/4,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0" ],"desc": "-4m2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "129:a,b,c;-1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","y,x,-z","-y,-x,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y,-x,-z","-y,x,-z","x,-y,z","-x,y,z","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z" ],"hall": "P 4ab 2ab -1ab","hm": "P 4/n m m :1","id": "P_4/n_m_m_1","jmolId": "129:1","set": 3,"sg": 129,"trm": "a,b,c;-1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x+1/4,x+3/4,z","-x+3/4,-x+1/4,z","-x+3/4,x+3/4,z","x+1/4,-x+1/4,z","-x+1/4,x+1/4,-z","x+3/4,-x+3/4,-z","x+3/4,x+1/4,-z","-x+1/4,-x+3/4,-z" ],"desc": "..m","geom": "plane","label": "j","mult": 8 },{ "coord": [ "1/2,y+3/4,z","1/2,-y+1/4,z","-y+3/4,0,z","y+1/4,0,z","0,y+1/4,-z","0,-y+3/4,-z","y+3/4,1/2,-z","-y+1/4,1/2,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "x+1/4,-x+3/4,1/2","-x+3/4,x+1/4,1/2","x+3/4,x+3/4,1/2","-x+1/4,-x+1/4,1/2","-x+1/4,x+3/4,1/2","x+3/4,-x+1/4,1/2","-x+3/4,-x+3/4,1/2","x+1/4,x+1/4,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "x+1/4,-x+3/4,0","-x+3/4,x+1/4,0","x+3/4,x+3/4,0","-x+1/4,-x+1/4,0","-x+1/4,x+3/4,0","x+3/4,-x+1/4,0","-x+3/4,-x+3/4,0","x+1/4,x+1/4,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,z","1/2,1/2,z","1/2,1/2,-z","0,0,-z" ],"desc": "2mm .","geom": "line","label": "f","mult": 4 },{ "coord": [ "1/4,3/4,1/2","3/4,1/4,1/2","3/4,3/4,1/2","1/4,1/4,1/2" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,0","3/4,1/4,0","3/4,3/4,0","1/4,1/4,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/2,0,z","0,1/2,-z" ],"desc": "4mm","geom": "line","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "-4m2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "129:a-b,a+b,c;-1/4,1/4,0","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-y,-x+1/2,-z","-x+1/2,-y,-z","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z","-y+1/2,-x,-z","-x,-y+1/2,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y,-x+1/2,z","-y,-x+1/2,-z","y+1/2,x,-z","-x+1/2,y+1/2,-z","x,-y,-z","-x+1/2,-y,-z","x,y+1/2,-z","y+1/2,-x+1/2,-z","-y,x,-z","y,x,z","-y+1/2,-x+1/2,z","x,-y+1/2,z","-x+1/2,y,z","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z","y+1/2,-x,z","-y+1/2,-x,-z","y,x+1/2,-z","-x,y,-z","x+1/2,-y+1/2,-z","-x,-y+1/2,-z","x+1/2,y,-z","y,-x,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z","-y,-x,z","x+1/2,-y,z","-x,y+1/2,z" ],"hall": "C?","hm": "C 4/e m m :1","id": "C_4/e_m_m_1","jmolId": "129:c1","set": 4,"sg": 129,"trm": "a-b,a+b,c;-1/4,1/4,0","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 32 },{ "coord": [ "1/4,x,z","1/4,-x+1/2,z","-x+1/2,1/4,z","x,1/4,z","-x,1/4,-z","x+1/2,1/4,-z","1/4,x+1/2,-z","1/4,-x,-z" ],"desc": "..m","geom": "plane","label": "j","mult": 16 },{ "coord": [ "-1/2y+3/8,1/2y+1/8,z","1/2y+1/8,-1/2y+3/8,z","-1/2y+3/8,-1/2y+3/8,z","1/2y+1/8,1/2y+1/8,z","-1/2y+3/8,1/2y+5/8,-z","1/2y+5/8,-1/2y+3/8,-z","1/2y+1/8,1/2y+5/8,-z","-1/2y+7/8,-1/2y+3/8,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 16 },{ "coord": [ "x+1/4,0,1/2","-x+1/4,1/2,1/2","1/2,x+1/4,1/2","0,-x+1/4,1/2","-x+1/4,0,1/2","x+1/4,1/2,1/2","1/2,-x+1/4,1/2","0,x+1/4,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 16 },{ "coord": [ "x+1/4,0,0","-x+1/4,1/2,0","1/2,x+1/4,0","0,-x+1/4,0","-x+1/4,0,0","x+1/4,1/2,0","1/2,-x+1/4,0","0,x+1/4,0" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/2,1/2,z","0,1/2,z","0,1/2,-z","1/2,1/2,-z" ],"desc": "2mm .","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,0,1/2","1/4,1/2,1/2","1/2,1/4,1/2","0,1/4,1/2" ],"desc": "..2/m","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/4,0,0","1/4,1/2,0","1/2,1/4,0","0,1/4,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,3/4,-z" ],"desc": "4mm","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,1/2,1/2","0,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/2,1/2,0","0,1/2,0" ],"desc": "-4m2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "129:a+b,-a+b,c","det": 2.0,"hm": "C 4/e m m :2","id": "C_4/e_m_m_2","more": true,"sg": 129,"trm": "a+b,-a+b,c" },{ "clegId": "129:a+b,-a+b,c;-1/4,1/4,0","det": 2.0,"hm": "C 4/e m m :1","id": "C_4/e_m_m_1","more": true,"sg": 129,"trm": "a+b,-a+b,c;-1/4,1/4,0" } ],"n": 6,"sg": 129 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_13.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_13.json new file mode 100755 index 000000000000..0b5faecc87e3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_13.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "13:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,y,-z+1/2","-x,-y,-z","x,-y,z+1/2" ],"hall": "-P 2yc","hm": "P 1 2/c 1","id": "P_1_2/c_1","jmolId": "13:b1","set": 1,"sg": 13,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "1/2,y,1/4","1/2,-y,3/4" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "0,y,1/4","0,-y,3/4" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:-a-c,b,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y,-z+1/2","-x,-y,-z","x+1/2,-y,z+1/2" ],"hall": "-P 2yac","hm": "P 1 2/n 1","id": "P_1_2/n_1","jmolId": "13:b2","set": 2,"sg": 13,"trm": "-a-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "3/4,y,1/4","1/4,-y,3/4" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "3/4,y,3/4","1/4,-y,1/4" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,0" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:c,b,-a-c","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y,-z","-x,-y,-z","x+1/2,-y,z" ],"hall": "-P 2ya","hm": "P 1 2/a 1","id": "P_1_2/a_1","jmolId": "13:b3","set": 3,"sg": 13,"trm": "c,b,-a-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "3/4,y,1/2","1/4,-y,1/2" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "1/4,y,0","3/4,-y,0" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,0,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:c,a,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z","-x,-y,-z","x+1/2,y,-z" ],"hall": "-P 2a","hm": "P 1 1 2/a","id": "P_1_1_2/a","jmolId": "13:c1","set": 4,"sg": 13,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "1/4,1/2,y","3/4,1/2,-y" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "1/4,0,y","3/4,0,-y" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:a,-a-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x,-y,-z","x+1/2,y+1/2,-z" ],"hall": "-P 2ab","hm": "P 1 1 2/n","id": "P_1_1_2/n","jmolId": "13:c2","set": 5,"sg": 13,"trm": "a,-a-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "1/4,3/4,y","3/4,1/4,-y" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "3/4,3/4,y","1/4,1/4,-y" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:-a-c,c,b","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-x,-y,-z","x,y+1/2,-z" ],"hall": "-P 2b","hm": "P 1 1 2/b","id": "P_1_1_2/b","jmolId": "13:c3","set": 6,"sg": 13,"trm": "-a-c,c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "1/2,3/4,y","1/2,1/4,-y" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "0,1/4,y","0,3/4,-y" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:b,c,a","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x,-y,-z","-x,y+1/2,z" ],"hall": "-P 2xb","hm": "P 2/b 1 1","id": "P_2/b_1_1","jmolId": "13:a1","set": 7,"sg": 13,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "y,1/4,1/2","-y,3/4,1/2" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "y,1/4,0","-y,3/4,0" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:b,a,-a-c","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,-z","-x,y+1/2,z+1/2" ],"hall": "-P 2xbc","hm": "P 2/n 1 1","id": "P_2/n_1_1","jmolId": "13:a2","set": 8,"sg": 13,"trm": "b,a,-a-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "y,1/4,3/4","-y,3/4,1/4" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "y,3/4,3/4","-y,1/4,1/4" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "0,1/2,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:b,-a-c,c","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x,-y,-z","-x,y,z+1/2" ],"hall": "-P 2xc","hm": "P 2/c 1 1","id": "P_2/c_1_1","jmolId": "13:a3","set": 9,"sg": 13,"trm": "b,-a-c,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 4 },{ "coord": [ "y,1/2,3/4","-y,1/2,1/4" ],"desc": "2","geom": "line","label": "f","mult": 2 },{ "coord": [ "y,0,1/4","-y,0,3/4" ],"desc": "2","geom": "line","label": "e","mult": 2 },{ "coord": [ "0,1/2,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "13:c,-b,a","det": 1.0,"hm": "P 1 2/a 1 :1","id": "P_1_2/a_1_1","more": true,"sg": 13,"trm": "c,-b,a" },{ "clegId": "13:a,-b,-a-c","det": 1.0,"hm": "P 1 2/n 1 :2","id": "P_1_2/n_1_2","more": true,"sg": 13,"trm": "a,-b,-a-c" },{ "clegId": "13:-a-c,-b,c","det": 1.0,"hm": "P 1 2/c 1 :3","id": "P_1_2/c_1_3","more": true,"sg": 13,"trm": "-a-c,-b,c" },{ "clegId": "13:a,c,-b","det": 1.0,"hm": "P 1 1 2/b :1","id": "P_1_1_2/b_1","more": true,"sg": 13,"trm": "a,c,-b" },{ "clegId": "13:-a-c,a,-b","det": 1.0,"hm": "P 1 1 2/n :2","id": "P_1_1_2/n_2","more": true,"sg": 13,"trm": "-a-c,a,-b" },{ "clegId": "13:c,-a-c,-b","det": 1.0,"hm": "P 1 1 2/a :3","id": "P_1_1_2/a_3","more": true,"sg": 13,"trm": "c,-a-c,-b" },{ "clegId": "13:-b,a,c","det": 1.0,"hm": "P 2/c 1 1 :1","id": "P_2/c_1_1_1","more": true,"sg": 13,"trm": "-b,a,c" },{ "clegId": "13:-b,-a-c,a","det": 1.0,"hm": "P 2/n 1 1 :2","id": "P_2/n_1_1_2","more": true,"sg": 13,"trm": "-b,-a-c,a" },{ "clegId": "13:-b,c,-a-c","det": 1.0,"hm": "P 2/b 1 1 :3","id": "P_2/b_1_1_3","more": true,"sg": 13,"trm": "-b,c,-a-c" } ],"n": 18,"sg": 13 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_130.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_130.json new file mode 100755 index 000000000000..1168d0561a9a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_130.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "130:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-x,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y,-x+1/2,z","-x,y+1/2,-z+1/2","x+1/2,-y,-z+1/2","y+1/2,x+1/2,-z+1/2","-y,-x,-z+1/2","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z","-y,x+1/2,-z","x,-y+1/2,z+1/2","-x+1/2,y,z+1/2","-y+1/2,-x+1/2,z+1/2","y,x,z+1/2" ],"hall": "-P 4a 2ac","hm": "P 4/n c c :2","id": "P_4/n_c_c_2","jmolId": "130:2","set": 1,"sg": 130,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "x,-x,1/4","-x+1/2,x+1/2,1/4","x+1/2,x,1/4","-x,-x+1/2,1/4","-x,x,3/4","x+1/2,-x+1/2,3/4","-x+1/2,-x,3/4","x,x+1/2,3/4" ],"desc": "..2","geom": "line","label": "f","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,3/4,z","1/4,3/4,-z+1/2","3/4,1/4,-z+1/2","1/4,3/4,-z","3/4,1/4,-z","3/4,1/4,z+1/2","1/4,3/4,z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,0","0,1/2,0","0,1/2,1/2","1/2,0,1/2","1/2,1/2,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,z","3/4,3/4,-z+1/2","3/4,3/4,-z","1/4,1/4,z+1/2" ],"desc": "4..","geom": "line","label": "c","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,3/4,0","1/4,3/4,1/2","3/4,1/4,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "3/4,1/4,1/4","1/4,3/4,1/4","1/4,3/4,3/4","3/4,1/4,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "130:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","-y+3/4,-x+1/4,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","-y+1/4,-x+3/4,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","y+3/4,-x+1/4,z","-y+3/4,-x+1/4,-z+1/2","y+1/4,x+1/4,-z+1/2","-x,y+1/2,-z+1/2","x,-y,-z+1/2","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z","-y+3/4,x+1/4,-z","y+3/4,x+1/4,z+1/2","-y+1/4,-x+1/4,z+1/2","x,-y+1/2,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","y+1/4,-x+3/4,z","-y+1/4,-x+3/4,-z+1/2","y+3/4,x+3/4,-z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z","-y+1/4,x+3/4,-z","y+1/4,x+3/4,z+1/2","-y+3/4,-x+3/4,z+1/2","x+1/2,-y,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hm": "C 4/e c c :2","id": "C_4/e_c_c_2","jmolId": "130:c","set": 2,"sg": 130,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 32 },{ "coord": [ "x,0,1/4","-x,1/2,1/4","1/4,x+1/4,1/4","3/4,-x+1/4,1/4","-x,0,3/4","x,1/2,3/4","1/4,-x+1/4,3/4","3/4,x+1/4,3/4" ],"desc": "..2","geom": "line","label": "f","mult": 16 },{ "coord": [ "1/4,1/2,z","3/4,1/2,z","3/4,1/2,-z+1/2","1/4,1/2,-z+1/2","3/4,1/2,-z","1/4,1/2,-z","1/4,1/2,z+1/2","3/4,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 16 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,0","3/4,1/4,0","3/4,1/4,1/2","1/4,1/4,1/2","0,1/2,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 16 },{ "coord": [ "0,1/4,z","0,3/4,-z+1/2","0,3/4,-z","0,1/4,z+1/2" ],"desc": "4..","geom": "line","label": "c","mult": 8 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0","3/4,1/2,1/2","1/4,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/4,1/2,1/4","3/4,1/2,1/4","3/4,1/2,3/4","1/4,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "130:a,b,c;-1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","y,x,-z+1/2","-y,-x,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y,-x,-z","-y,x,-z","x,-y,z+1/2","-x,y,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "P 4ab 2n -1ab","hm": "P 4/n c c :1","id": "P_4/n_c_c_1","jmolId": "130:1","set": 3,"sg": 130,"trm": "a,b,c;-1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "x+1/4,-x+3/4,1/4","-x+3/4,x+1/4,1/4","x+3/4,x+3/4,1/4","-x+1/4,-x+1/4,1/4","-x+1/4,x+3/4,3/4","x+3/4,-x+1/4,3/4","-x+3/4,-x+3/4,3/4","x+1/4,x+1/4,3/4" ],"desc": "..2","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","1/2,1/2,z","1/2,1/2,-z+1/2","0,0,-z+1/2","1/2,1/2,-z","0,0,-z","0,0,z+1/2","1/2,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,3/4,0","3/4,1/4,0","3/4,3/4,0","1/4,1/4,0","1/4,1/4,1/2","3/4,3/4,1/2","3/4,1/4,1/2","1/4,3/4,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/2,0,z","0,1/2,-z+1/2","0,1/2,-z","1/2,0,z+1/2" ],"desc": "4..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,1/2,1/2","0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","1/2,1/2,1/4","1/2,1/2,3/4","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "130:a-b,a+b,c;-1/4,1/4,0","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-y,-x+1/2,-z+1/2","-x+1/2,-y,-z","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z","-y+1/2,-x,-z+1/2","-x,-y+1/2,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y,-x+1/2,z","-y,-x+1/2,-z+1/2","y+1/2,x,-z+1/2","-x+1/2,y+1/2,-z+1/2","x,-y,-z+1/2","-x+1/2,-y,-z","x,y+1/2,-z","y+1/2,-x+1/2,-z","-y,x,-z","y,x,z+1/2","-y+1/2,-x+1/2,z+1/2","x,-y+1/2,z+1/2","-x+1/2,y,z+1/2","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z","y+1/2,-x,z","-y+1/2,-x,-z+1/2","y,x+1/2,-z+1/2","-x,y,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x,-y+1/2,-z","x+1/2,y,-z","y,-x,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z+1/2","-y,-x,z+1/2","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2" ],"hall": "C?","hm": "C 4/e c c :1","id": "C_4/e_c_c_1","jmolId": "130:c1","set": 4,"sg": 130,"trm": "a-b,a+b,c;-1/4,1/4,0","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 32 },{ "coord": [ "x+1/4,0,1/4","-x+1/4,1/2,1/4","1/2,x+1/4,1/4","0,-x+1/4,1/4","-x+1/4,0,3/4","x+1/4,1/2,3/4","1/2,-x+1/4,3/4","0,x+1/4,3/4" ],"desc": "..2","geom": "line","label": "f","mult": 16 },{ "coord": [ "1/2,1/2,z","0,1/2,z","0,1/2,-z+1/2","1/2,1/2,-z+1/2","0,1/2,-z","1/2,1/2,-z","1/2,1/2,z+1/2","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 16 },{ "coord": [ "1/4,0,0","1/4,1/2,0","1/2,1/4,0","0,1/4,0","0,1/4,1/2","1/2,1/4,1/2","1/4,1/2,1/2","1/4,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 16 },{ "coord": [ "1/4,1/4,z","1/4,3/4,-z+1/2","1/4,3/4,-z","1/4,1/4,z+1/2" ],"desc": "4..","geom": "line","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,0","0,1/2,0","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/2,1/2,1/4","0,1/2,1/4","0,1/2,3/4","1/2,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "130:a+b,-a+b,c","det": 2.0,"hm": "C 4/e c c :2","id": "C_4/e_c_c_2","more": true,"sg": 130,"trm": "a+b,-a+b,c" },{ "clegId": "130:a+b,-a+b,c;-1/4,1/4,0","det": 2.0,"hm": "C 4/e c c :1","id": "C_4/e_c_c_1","more": true,"sg": 130,"trm": "a+b,-a+b,c;-1/4,1/4,0" } ],"n": 6,"sg": 130 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_131.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_131.json new file mode 100755 index 000000000000..fcc042f988c7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_131.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "131:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-x,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-x,y,-z","x,-y,-z","y,x,-z+1/2","-y,-x,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z+1/2","-y,x,-z+1/2","x,-y,z","-x,y,z","-y,-x,z+1/2","y,x,z+1/2" ],"hall": "-P 4c 2","hm": "P 42/m m c","id": "P_42/m_m_c","jmolId": "131","set": 1,"sg": 131,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "r","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,1/2","y,-x,1/2","-x,y,0","x,-y,0","y,x,1/2","-y,-x,1/2" ],"desc": "m..","geom": "plane","label": "q","mult": 8 },{ "coord": [ "1/2,y,z","1/2,-y,z","-y,1/2,z+1/2","y,1/2,z+1/2","1/2,y,-z","1/2,-y,-z","y,1/2,-z+1/2","-y,1/2,-z+1/2" ],"desc": ".m.","geom": "plane","label": "p","mult": 8 },{ "coord": [ "0,y,z","0,-y,z","-y,0,z+1/2","y,0,z+1/2","0,y,-z","0,-y,-z","y,0,-z+1/2","-y,0,-z+1/2" ],"desc": ".m.","geom": "plane","label": "o","mult": 8 },{ "coord": [ "x,x,1/4","-x,-x,1/4","-x,x,3/4","x,-x,3/4","-x,-x,3/4","x,x,3/4","x,-x,1/4","-x,x,1/4" ],"desc": "..2","geom": "line","label": "n","mult": 8 },{ "coord": [ "x,1/2,0","-x,1/2,0","1/2,x,1/2","1/2,-x,1/2" ],"desc": "m2m .","geom": "line","label": "m","mult": 4 },{ "coord": [ "x,0,1/2","-x,0,1/2","0,x,0","0,-x,0" ],"desc": "m2m .","geom": "line","label": "l","mult": 4 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,0","1/2,-x,0" ],"desc": "m2m .","geom": "line","label": "k","mult": 4 },{ "coord": [ "x,0,0","-x,0,0","0,x,1/2","0,-x,1/2" ],"desc": "m2m .","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2","0,1/2,-z","1/2,0,-z+1/2" ],"desc": "2mm .","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2","1/2,1/2,-z","1/2,1/2,-z+1/2" ],"desc": "2mm .","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "2mm .","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/2,1/4","1/2,1/2,3/4" ],"desc": "-4m2","geom": "point","label": "f","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-4m2","geom": "point","label": "e","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,0,0" ],"desc": "mmm .","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,1/2" ],"desc": "mmm .","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "mmm .","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "mmm .","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "131:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-y,-x,-z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-y,-x,-z","y,x,-z","-x,y,-z+1/2","x,-y,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z+1/2","-y,x,-z+1/2","y,x,z","-y,-x,z","x,-y,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "C?","hm": "C 42/m c m","id": "C_42/m_c_m","jmolId": "131:c","set": 2,"sg": 131,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "r","mult": 32 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,1/2","1/2x+1/2y,-1/2x+1/2y,1/2","-1/2x-1/2y,-1/2x+1/2y,0","1/2x+1/2y,1/2x-1/2y,0","-1/2x+1/2y,1/2x+1/2y,1/2","1/2x-1/2y,-1/2x-1/2y,1/2" ],"desc": "m..","geom": "plane","label": "q","mult": 16 },{ "coord": [ "-1/2y+1/4,1/2y+1/4,z","1/2y+1/4,-1/2y+1/4,z","-1/2y+3/4,-1/2y+1/4,z+1/2","1/2y+3/4,1/2y+1/4,z+1/2","-1/2y+1/4,1/2y+1/4,-z","1/2y+1/4,-1/2y+1/4,-z","1/2y+3/4,1/2y+1/4,-z+1/2","-1/2y+3/4,-1/2y+1/4,-z+1/2" ],"desc": ".m.","geom": "plane","label": "p","mult": 16 },{ "coord": [ "-1/2y,1/2y,z","1/2y,-1/2y,z","-1/2y,-1/2y,z+1/2","1/2y,1/2y,z+1/2","-1/2y,1/2y,-z","1/2y,-1/2y,-z","1/2y,1/2y,-z+1/2","-1/2y,-1/2y,-z+1/2" ],"desc": ".m.","geom": "plane","label": "o","mult": 16 },{ "coord": [ "0,x,1/4","0,-x,1/4","-x,0,3/4","x,0,3/4","0,-x,3/4","0,x,3/4","x,0,1/4","-x,0,1/4" ],"desc": "..2","geom": "line","label": "n","mult": 16 },{ "coord": [ "1/2x+3/4,1/2x+1/4,0","-1/2x+3/4,-1/2x+1/4,0","-1/2x+1/4,1/2x+1/4,1/2","1/2x+1/4,-1/2x+1/4,1/2" ],"desc": "m2m .","geom": "line","label": "m","mult": 8 },{ "coord": [ "1/2x,1/2x,1/2","-1/2x,-1/2x,1/2","-1/2x,1/2x,0","1/2x,-1/2x,0" ],"desc": "m2m .","geom": "line","label": "l","mult": 8 },{ "coord": [ "1/2x+3/4,1/2x+1/4,1/2","-1/2x+3/4,-1/2x+1/4,1/2","-1/2x+1/4,1/2x+1/4,0","1/2x+1/4,-1/2x+1/4,0" ],"desc": "m2m .","geom": "line","label": "k","mult": 8 },{ "coord": [ "1/2x,1/2x,0","-1/2x,-1/2x,0","-1/2x,1/2x,1/2","1/2x,-1/2x,1/2" ],"desc": "m2m .","geom": "line","label": "j","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2","3/4,1/4,-z","1/4,1/4,-z+1/2" ],"desc": "2mm .","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2","0,1/2,-z","0,1/2,-z+1/2" ],"desc": "2mm .","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "2mm .","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "-4m2","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-4m2","geom": "point","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,1/2","1/4,1/4,0" ],"desc": "mmm .","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,1/4,1/2" ],"desc": "mmm .","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "mmm .","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "mmm .","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "131:a+b,-a+b,c","det": 2.0,"hm": "C 42/m c m","id": "C_42/m_c_m","more": true,"sg": 131,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 131 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_132.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_132.json new file mode 100755 index 000000000000..090d039d80a6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_132.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "132:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-x,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-x,y,-z+1/2","x,-y,-z+1/2","y,x,-z","-y,-x,-z","-x,-y,-z","x,y,-z","y,-x,-z+1/2","-y,x,-z+1/2","x,-y,z+1/2","-x,y,z+1/2","-y,-x,z","y,x,z" ],"hall": "-P 4c 2c","hm": "P 42/m c m","id": "P_42/m_c_m","jmolId": "132","set": 1,"sg": 132,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "p","mult": 16 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,z+1/2","x,-x,z+1/2","-x,x,-z+1/2","x,-x,-z+1/2","x,x,-z","-x,-x,-z" ],"desc": "..m","geom": "plane","label": "o","mult": 8 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,1/2","y,-x,1/2","-x,y,1/2","x,-y,1/2","y,x,0","-y,-x,0" ],"desc": "m..","geom": "plane","label": "n","mult": 8 },{ "coord": [ "x,1/2,1/4","-x,1/2,1/4","1/2,x,3/4","1/2,-x,3/4","-x,1/2,3/4","x,1/2,3/4","1/2,-x,1/4","1/2,x,1/4" ],"desc": ".2.","geom": "line","label": "m","mult": 8 },{ "coord": [ "x,0,1/4","-x,0,1/4","0,x,3/4","0,-x,3/4","-x,0,3/4","x,0,3/4","0,-x,1/4","0,x,1/4" ],"desc": ".2.","geom": "line","label": "l","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2","0,1/2,-z+1/2","1/2,0,-z","0,1/2,-z","1/2,0,-z+1/2","0,1/2,z+1/2","1/2,0,z" ],"desc": "2..","geom": "line","label": "k","mult": 8 },{ "coord": [ "x,x,1/2","-x,-x,1/2","-x,x,0","x,-x,0" ],"desc": "m.2 m","geom": "line","label": "j","mult": 4 },{ "coord": [ "x,x,0","-x,-x,0","-x,x,1/2","x,-x,1/2" ],"desc": "m.2 m","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2","1/2,1/2,-z+1/2","1/2,1/2,-z" ],"desc": "2.m m","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z+1/2","0,0,-z" ],"desc": "2.m m","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,1/2","0,1/2,1/2","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,0,3/4","0,1/2,3/4","1/2,0,1/4" ],"desc": "222 .","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,1/4","1/2,1/2,3/4" ],"desc": "-42m","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "m.m m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-42m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "m.m m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "132:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-y,-x,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-y,-x,-z+1/2","y,x,-z+1/2","-x,y,-z","x,-y,-z","-x,-y,-z","x,y,-z","y,-x,-z+1/2","-y,x,-z+1/2","y,x,z+1/2","-y,-x,z+1/2","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,-x+1/2,-z+1/2","y+1/2,x+1/2,-z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C?","hm": "C 42/m m c","id": "C_42/m_m_c","jmolId": "132:c","set": 2,"sg": 132,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "p","mult": 32 },{ "coord": [ "0,x,z","0,-x,z","-x,0,z+1/2","x,0,z+1/2","-x,0,-z+1/2","x,0,-z+1/2","0,x,-z","0,-x,-z" ],"desc": "..m","geom": "plane","label": "o","mult": 16 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,1/2","1/2x+1/2y,-1/2x+1/2y,1/2","-1/2x-1/2y,-1/2x+1/2y,1/2","1/2x+1/2y,1/2x-1/2y,1/2","-1/2x+1/2y,1/2x+1/2y,0","1/2x-1/2y,-1/2x-1/2y,0" ],"desc": "m..","geom": "plane","label": "n","mult": 16 },{ "coord": [ "1/2x+3/4,1/2x+1/4,1/4","-1/2x+3/4,-1/2x+1/4,1/4","-1/2x+1/4,1/2x+1/4,3/4","1/2x+1/4,-1/2x+1/4,3/4","-1/2x+3/4,-1/2x+1/4,3/4","1/2x+3/4,1/2x+1/4,3/4","1/2x+1/4,-1/2x+1/4,1/4","-1/2x+1/4,1/2x+1/4,1/4" ],"desc": ".2.","geom": "line","label": "m","mult": 16 },{ "coord": [ "1/2x,1/2x,1/4","-1/2x,-1/2x,1/4","-1/2x,1/2x,3/4","1/2x,-1/2x,3/4","-1/2x,-1/2x,3/4","1/2x,1/2x,3/4","1/2x,-1/2x,1/4","-1/2x,1/2x,1/4" ],"desc": ".2.","geom": "line","label": "l","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2","3/4,1/4,-z+1/2","1/4,1/4,-z","3/4,1/4,-z","1/4,1/4,-z+1/2","3/4,1/4,z+1/2","1/4,1/4,z" ],"desc": "2..","geom": "line","label": "k","mult": 16 },{ "coord": [ "0,x,1/2","0,-x,1/2","-x,0,0","x,0,0" ],"desc": "m.2 m","geom": "line","label": "j","mult": 8 },{ "coord": [ "0,x,0","0,-x,0","-x,0,1/2","x,0,1/2" ],"desc": "m.2 m","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2","0,1/2,-z+1/2","0,1/2,-z" ],"desc": "2.m m","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z+1/2","0,0,-z" ],"desc": "2.m m","geom": "line","label": "g","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,1/2","3/4,1/4,1/2","1/4,1/4,0" ],"desc": "2/m..","geom": "point","label": "f","mult": 8 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,3/4","3/4,1/4,3/4","1/4,1/4,1/4" ],"desc": "222 .","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "-42m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "m.m m","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-42m","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "m.m m","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "132:a+b,-a+b,c","det": 2.0,"hm": "C 42/m m c","id": "C_42/m_m_c","more": true,"sg": 132,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 132 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_133.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_133.json new file mode 100755 index 000000000000..eccdea3cb197 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_133.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "133:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-x+1/2,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y,-x+1/2,z+1/2","-x+1/2,y,-z","x,-y+1/2,-z","y,x,-z+1/2","-y+1/2,-x+1/2,-z+1/2","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z+1/2","-y,x+1/2,-z+1/2","x+1/2,-y,z","-x,y+1/2,z","-y,-x,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "-P 4ac 2b","hm": "P 42/n b c :2","id": "P_42/n_b_c_2","jmolId": "133:2","set": 1,"sg": 133,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x,x,1/4","-x+1/2,-x+1/2,1/4","-x+1/2,x,3/4","x,-x+1/2,3/4","-x,-x,3/4","x+1/2,x+1/2,3/4","x+1/2,-x,1/4","-x,x+1/2,1/4" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "x,1/4,1/2","-x+1/2,1/4,1/2","1/4,x,0","1/4,-x+1/2,0","-x,3/4,1/2","x+1/2,3/4,1/2","3/4,-x,0","3/4,x+1/2,0" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "x,1/4,0","-x+1/2,1/4,0","1/4,x,1/2","1/4,-x+1/2,1/2","-x,3/4,0","x+1/2,3/4,0","3/4,-x,1/2","3/4,x+1/2,1/2" ],"desc": ".2.","geom": "line","label": "h","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,3/4,z+1/2","3/4,1/4,-z","1/4,3/4,-z+1/2","1/4,3/4,-z","3/4,1/4,-z+1/2","1/4,3/4,z","3/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,1/4,z+1/2","1/4,1/4,-z","1/4,1/4,-z+1/2","3/4,3/4,-z","3/4,3/4,-z+1/2","3/4,3/4,z","3/4,3/4,z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2","1/2,0,0","0,1/2,0","0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,3/4","1/4,3/4,1/4","3/4,1/4,1/4","1/4,3/4,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4","1/4,1/4,3/4","3/4,3/4,3/4","3/4,3/4,1/4" ],"desc": "2.2 2","geom": "point","label": "c","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,3/4,1/2","1/4,3/4,0","3/4,1/4,1/2" ],"desc": "222 .","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,1/4,0","1/4,1/4,1/2","3/4,3/4,0","3/4,3/4,1/2" ],"desc": "222 .","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "133:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z+1/2","-y+1/4,-x+1/4,-z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z+1/2","-y+3/4,-x+3/4,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z+1/2","y+3/4,-x+1/4,z+1/2","-y+1/4,-x+1/4,-z","y+3/4,x+1/4,-z","-x,y,-z+1/2","x,-y+1/2,-z+1/2","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z+1/2","-y+3/4,x+1/4,-z+1/2","y+1/4,x+1/4,z","-y+3/4,-x+1/4,z","x,-y,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z+1/2","y+1/4,-x+3/4,z+1/2","-y+3/4,-x+3/4,-z","y+1/4,x+3/4,-z","-x+1/2,y+1/2,-z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z+1/2","-y+1/4,x+3/4,-z+1/2","y+3/4,x+3/4,z","-y+1/4,-x+3/4,z","x+1/2,-y+1/2,z+1/2","-x+1/2,y,z+1/2" ],"hm": "C 42/e c g1 :2","id": "C_42/e_c_g1_2","jmolId": "133:c","set": 2,"sg": 133,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 32 },{ "coord": [ "0,x,1/4","0,-x+1/2,1/4","-x+1/4,1/4,3/4","x+3/4,1/4,3/4","0,-x,3/4","0,x+1/2,3/4","x+1/4,1/4,1/4","-x+3/4,1/4,1/4" ],"desc": "..2","geom": "line","label": "j","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+1/8,1/2","-1/2x+1/8,-1/2x+3/8,1/2","-1/2x+1/8,1/2x+1/8,0","1/2x+7/8,-1/2x+3/8,0","-1/2x+5/8,-1/2x+3/8,1/2","1/2x+7/8,1/2x+5/8,1/2","1/2x+3/8,-1/2x+3/8,0","-1/2x+1/8,1/2x+5/8,0" ],"desc": ".2.","geom": "line","label": "i","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+1/8,0","-1/2x+1/8,-1/2x+3/8,0","-1/2x+1/8,1/2x+1/8,1/2","1/2x+7/8,-1/2x+3/8,1/2","-1/2x+5/8,-1/2x+3/8,0","1/2x+7/8,1/2x+5/8,0","1/2x+3/8,-1/2x+3/8,1/2","-1/2x+1/8,1/2x+5/8,1/2" ],"desc": ".2.","geom": "line","label": "h","mult": 16 },{ "coord": [ "1/4,1/2,z","3/4,1/2,z+1/2","1/4,1/2,-z","3/4,1/2,-z+1/2","3/4,1/2,-z","1/4,1/2,-z+1/2","3/4,1/2,z","1/4,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 16 },{ "coord": [ "0,1/4,z","0,1/4,z+1/2","0,1/4,-z","0,1/4,-z+1/2","0,3/4,-z","0,3/4,-z+1/2","0,3/4,z","0,3/4,z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,1/2","3/4,1/4,1/2","1/4,1/4,0","3/4,1/4,0","0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 16 },{ "coord": [ "1/4,1/2,3/4","3/4,1/2,1/4","1/4,1/2,1/4","3/4,1/2,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,1/4,1/4","0,1/4,3/4","0,3/4,3/4","0,3/4,1/4" ],"desc": "2.2 2","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/4,1/2,0","3/4,1/2,1/2","3/4,1/2,0","1/4,1/2,1/2" ],"desc": "222 .","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,1/4,0","0,1/4,1/2","0,3/4,0","0,3/4,1/2" ],"desc": "222 .","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "133:a,b,c;-1/4,1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","-x,y,-z+1/2","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x,y,-z+1/2","x,-y,-z+1/2","y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y,-x,-z","-y,x,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-y,-x,z+1/2","y,x,z+1/2" ],"hall": "P 4n 2c -1n","hm": "P 42/n b c :1","id": "P_42/n_b_c_1","jmolId": "133:1","set": 3,"sg": 133,"trm": "a,b,c;-1/4,1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x+1/4,x+3/4,1/2","-x+3/4,-x+1/4,1/2","-x+3/4,x+3/4,0","x+1/4,-x+1/4,0","-x+1/4,-x+3/4,0","x+3/4,x+1/4,0","x+3/4,-x+3/4,1/2","-x+1/4,x+1/4,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "x+1/4,0,3/4","-x+3/4,0,3/4","1/2,x+3/4,1/4","1/2,-x+1/4,1/4","-x+1/4,1/2,3/4","x+3/4,1/2,3/4","0,-x+3/4,1/4","0,x+1/4,1/4" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "x+1/4,0,1/4","-x+3/4,0,1/4","1/2,x+3/4,3/4","1/2,-x+1/4,3/4","-x+1/4,1/2,1/4","x+3/4,1/2,1/4","0,-x+3/4,3/4","0,x+1/4,3/4" ],"desc": ".2.","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z+1/4","1/2,1/2,z+3/4","0,0,-z+1/4","1/2,1/2,-z+3/4","1/2,1/2,-z+1/4","0,0,-z+3/4","1/2,1/2,z+1/4","0,0,z+3/4" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/2,0,z+1/4","1/2,0,z+3/4","1/2,0,-z+1/4","1/2,0,-z+3/4","0,1/2,-z+1/4","0,1/2,-z+3/4","0,1/2,z+1/4","0,1/2,z+3/4" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,3/4,1/4","3/4,1/4,1/4","3/4,3/4,3/4","1/4,1/4,3/4","3/4,3/4,1/4","1/4,1/4,1/4","1/4,3/4,3/4","3/4,1/4,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,0,0","1/2,1/2,1/2","0,0,1/2","1/2,1/2,0" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/2,0,1/2","1/2,0,0","0,1/2,0","0,1/2,1/2" ],"desc": "2.2 2","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/4","1/2,1/2,3/4","1/2,1/2,1/4","0,0,3/4" ],"desc": "222 .","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/2,0,1/4","1/2,0,3/4","0,1/2,1/4","0,1/2,3/4" ],"desc": "222 .","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "133:a-b,a+b,c;-1/4,1/4,-1/4","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-y+1/2,-x+1/2,-z+1/2","-x+1/2,-y,-z+1/2","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z+1/2","-y,-x,-z+1/2","-x,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y,-x+1/2,z+1/2","-y+1/2,-x+1/2,-z+1/2","y,x,-z+1/2","-x+1/2,y,-z","x,-y+1/2,-z","-x+1/2,-y,-z+1/2","x,y+1/2,-z+1/2","y+1/2,-x+1/2,-z","-y,x,-z","y+1/2,x,z","-y,-x+1/2,z","x,-y,z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z+1/2","y+1/2,-x,z+1/2","-y,-x,-z+1/2","y+1/2,x+1/2,-z+1/2","-x,y+1/2,-z","x+1/2,-y,-z","-x,-y+1/2,-z+1/2","x+1/2,y,-z+1/2","y,-x,-z","-y+1/2,x+1/2,-z","y,x+1/2,z","-y+1/2,-x,z","x+1/2,-y+1/2,z+1/2","-x,y,z+1/2" ],"hall": "C?","hm": "C 42/e c g1 :1","id": "C_42/e_c_g1_1","jmolId": "133:c2","set": 4,"sg": 133,"trm": "a-b,a+b,c;-1/4,1/4,-1/4","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 32 },{ "coord": [ "1/4,x,1/2","1/4,-x+1/2,1/2","-x+1/2,1/4,0","x,1/4,0","1/4,-x,0","1/4,x+1/2,0","x+1/2,1/4,1/2","-x,1/4,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 16 },{ "coord": [ "1/2x+1/8,1/2x+1/8,3/4","-1/2x+3/8,-1/2x+3/8,3/4","-1/2x+3/8,1/2x+1/8,1/4","1/2x+1/8,-1/2x+3/8,1/4","-1/2x+7/8,-1/2x+3/8,3/4","1/2x+1/8,1/2x+5/8,3/4","1/2x+5/8,-1/2x+3/8,1/4","-1/2x+3/8,1/2x+5/8,1/4" ],"desc": ".2.","geom": "line","label": "i","mult": 16 },{ "coord": [ "1/2x+1/8,1/2x+1/8,1/4","-1/2x+3/8,-1/2x+3/8,1/4","-1/2x+3/8,1/2x+1/8,3/4","1/2x+1/8,-1/2x+3/8,3/4","-1/2x+7/8,-1/2x+3/8,1/4","1/2x+1/8,1/2x+5/8,1/4","1/2x+5/8,-1/2x+3/8,3/4","-1/2x+3/8,1/2x+5/8,3/4" ],"desc": ".2.","geom": "line","label": "h","mult": 16 },{ "coord": [ "1/2,1/2,z+1/4","0,1/2,z+3/4","1/2,1/2,-z+1/4","0,1/2,-z+3/4","0,1/2,-z+1/4","1/2,1/2,-z+3/4","0,1/2,z+1/4","1/2,1/2,z+3/4" ],"desc": "2..","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/4,1/4,z+1/4","1/4,1/4,z+3/4","1/4,1/4,-z+1/4","1/4,1/4,-z+3/4","1/4,3/4,-z+1/4","1/4,3/4,-z+3/4","1/4,3/4,z+1/4","1/4,3/4,z+3/4" ],"desc": "2..","geom": "line","label": "f","mult": 16 },{ "coord": [ "1/4,0,1/4","1/4,1/2,1/4","1/2,1/4,3/4","0,1/4,3/4","1/2,1/4,1/4","0,1/4,1/4","1/4,0,3/4","1/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 16 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2","1/2,1/2,1/2","0,1/2,0" ],"desc": "-4..","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,1/2","1/4,1/4,0","1/4,3/4,0","1/4,3/4,1/2" ],"desc": "2.2 2","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,1/4","0,1/2,3/4","0,1/2,1/4","1/2,1/2,3/4" ],"desc": "222 .","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/4,1/4,1/4","1/4,1/4,3/4","1/4,3/4,1/4","1/4,3/4,3/4" ],"desc": "222 .","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "133:a+b,-a+b,c","det": 2.0,"hm": "C 42/e c g1 :2","id": "C_42/e_c_g1_2","more": true,"sg": 133,"trm": "a+b,-a+b,c" },{ "clegId": "133:a+b,-a+b,c;-1/4,1/4,-1/4","det": 2.0,"hm": "C 42/e c g1 :1","id": "C_42/e_c_g1_1","more": true,"sg": 133,"trm": "a+b,-a+b,c;-1/4,1/4,-1/4" } ],"n": 6,"sg": 133 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_134.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_134.json new file mode 100755 index 000000000000..dc18760f9226 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_134.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "134:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-x+1/2,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y,-x+1/2,z+1/2","-x+1/2,y,-z+1/2","x,-y+1/2,-z+1/2","y,x,-z","-y+1/2,-x+1/2,-z","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z+1/2","-y,x+1/2,-z+1/2","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2","-y,-x,z","y+1/2,x+1/2,z" ],"hall": "-P 4ac 2bc","hm": "P 42/n n m :2","id": "P_42/n_n_m_2","jmolId": "134:2","set": 1,"sg": 134,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "n","mult": 16 },{ "coord": [ "x,-x,z","-x+1/2,x+1/2,z","x+1/2,x,z+1/2","-x,-x+1/2,z+1/2","-x+1/2,-x,-z+1/2","x,x+1/2,-z+1/2","-x,x,-z","x+1/2,-x+1/2,-z" ],"desc": "..m","geom": "plane","label": "m","mult": 8 },{ "coord": [ "x,x,1/2","-x+1/2,-x+1/2,1/2","-x+1/2,x,0","x,-x+1/2,0","-x,-x,1/2","x+1/2,x+1/2,1/2","x+1/2,-x,0","-x,x+1/2,0" ],"desc": "..2","geom": "line","label": "l","mult": 8 },{ "coord": [ "x,x,0","-x+1/2,-x+1/2,0","-x+1/2,x,1/2","x,-x+1/2,1/2","-x,-x,0","x+1/2,x+1/2,0","x+1/2,-x,1/2","-x,x+1/2,1/2" ],"desc": "..2","geom": "line","label": "k","mult": 8 },{ "coord": [ "x,1/4,1/4","-x+1/2,1/4,1/4","1/4,x,3/4","1/4,-x+1/2,3/4","-x,3/4,3/4","x+1/2,3/4,3/4","3/4,-x,1/4","3/4,x+1/2,1/4" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "x,1/4,3/4","-x+1/2,1/4,3/4","1/4,x,1/4","1/4,-x+1/2,1/4","-x,3/4,1/4","x+1/2,3/4,1/4","3/4,-x,3/4","3/4,x+1/2,3/4" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,1/4,z+1/2","1/4,1/4,-z+1/2","1/4,1/4,-z","3/4,3/4,-z","3/4,3/4,-z+1/2","3/4,3/4,z+1/2","3/4,3/4,z" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,3/4,z+1/2","3/4,1/4,-z+1/2","1/4,3/4,-z" ],"desc": "2.m m","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","1/2,0,0","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,0","1/4,1/4,1/2","3/4,3/4,0","3/4,3/4,1/2" ],"desc": "2.2 2","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4","1/4,1/4,3/4","3/4,3/4,3/4","3/4,3/4,1/4" ],"desc": "222 .","geom": "point","label": "c","mult": 4 },{ "coord": [ "3/4,1/4,1/4","1/4,3/4,3/4" ],"desc": "-42m","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,3/4,1/4","3/4,1/4,3/4" ],"desc": "-42m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "134:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z+1/2","-y+1/4,-x+1/4,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z+1/2","-y+3/4,-x+3/4,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z+1/2","y+3/4,-x+1/4,z+1/2","-y+1/4,-x+1/4,-z+1/2","y+3/4,x+1/4,-z+1/2","-x,y,-z","x,-y+1/2,-z","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z+1/2","-y+3/4,x+1/4,-z+1/2","y+1/4,x+1/4,z+1/2","-y+3/4,-x+1/4,z+1/2","x,-y,z","-x,y+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z+1/2","y+1/4,-x+3/4,z+1/2","-y+3/4,-x+3/4,-z+1/2","y+1/4,x+3/4,-z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y,-z","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z+1/2","-y+1/4,x+3/4,-z+1/2","y+3/4,x+3/4,z+1/2","-y+1/4,-x+3/4,z+1/2","x+1/2,-y+1/2,z","-x+1/2,y,z" ],"hm": "C 42/e m g2 :2","id": "C_42/e_m_g2_2","jmolId": "134:c","set": 2,"sg": 134,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "n","mult": 32 },{ "coord": [ "x,0,z","-x,1/2,z","1/4,x+1/4,z+1/2","3/4,-x+1/4,z+1/2","1/4,-x+1/4,-z+1/2","3/4,x+1/4,-z+1/2","-x,0,-z","x,1/2,-z" ],"desc": "..m","geom": "plane","label": "m","mult": 16 },{ "coord": [ "0,x,1/2","0,-x+1/2,1/2","-x+1/4,1/4,0","x+3/4,1/4,0","0,-x,1/2","0,x+1/2,1/2","x+1/4,1/4,0","-x+3/4,1/4,0" ],"desc": "..2","geom": "line","label": "l","mult": 16 },{ "coord": [ "0,x,0","0,-x+1/2,0","-x+1/4,1/4,1/2","x+3/4,1/4,1/2","0,-x,0","0,x+1/2,0","x+1/4,1/4,1/2","-x+3/4,1/4,1/2" ],"desc": "..2","geom": "line","label": "k","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+1/8,1/4","-1/2x+1/8,-1/2x+3/8,1/4","-1/2x+1/8,1/2x+1/8,3/4","1/2x+7/8,-1/2x+3/8,3/4","-1/2x+5/8,-1/2x+3/8,3/4","1/2x+7/8,1/2x+5/8,3/4","1/2x+3/8,-1/2x+3/8,1/4","-1/2x+1/8,1/2x+5/8,1/4" ],"desc": ".2.","geom": "line","label": "j","mult": 16 },{ "coord": [ "1/2x+7/8,1/2x+1/8,3/4","-1/2x+1/8,-1/2x+3/8,3/4","-1/2x+1/8,1/2x+1/8,1/4","1/2x+7/8,-1/2x+3/8,1/4","-1/2x+5/8,-1/2x+3/8,1/4","1/2x+7/8,1/2x+5/8,1/4","1/2x+3/8,-1/2x+3/8,3/4","-1/2x+1/8,1/2x+5/8,3/4" ],"desc": ".2.","geom": "line","label": "i","mult": 16 },{ "coord": [ "0,1/4,z","0,1/4,z+1/2","0,1/4,-z+1/2","0,1/4,-z","0,3/4,-z","0,3/4,-z+1/2","0,3/4,z+1/2","0,3/4,z" ],"desc": "2..","geom": "line","label": "h","mult": 16 },{ "coord": [ "1/4,1/2,z","3/4,1/2,z+1/2","1/4,1/2,-z+1/2","3/4,1/2,-z" ],"desc": "2.m m","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,1/2","1/4,1/4,0","3/4,1/4,0" ],"desc": "..2/m","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,1/4,0","0,1/4,1/2","0,3/4,0","0,3/4,1/2" ],"desc": "2.2 2","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,1/4,1/4","0,1/4,3/4","0,3/4,3/4","0,3/4,1/4" ],"desc": "222 .","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/4,1/2,1/4","3/4,1/2,3/4" ],"desc": "-42m","geom": "point","label": "b","mult": 4 },{ "coord": [ "3/4,1/2,1/4","1/4,1/2,3/4" ],"desc": "-42m","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "134:a,b,c;-1/4,1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","-x,y,-z","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x,y,-z","x,-y,-z","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y,-x,-z","-y,x,-z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-y,-x,z","y,x,z" ],"hall": "P 4n 2 -1n","hm": "P 42/n n m :1","id": "P_42/n_n_m_1","jmolId": "134:1","set": 3,"sg": 134,"trm": "a,b,c;-1/4,1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "n","mult": 16 },{ "coord": [ "x+1/4,-x+3/4,z+1/4","-x+3/4,x+1/4,z+1/4","x+3/4,x+3/4,z+3/4","-x+1/4,-x+1/4,z+3/4","-x+3/4,-x+3/4,-z+3/4","x+1/4,x+1/4,-z+3/4","-x+1/4,x+3/4,-z+1/4","x+3/4,-x+1/4,-z+1/4" ],"desc": "..m","geom": "plane","label": "m","mult": 8 },{ "coord": [ "x+1/4,x+3/4,3/4","-x+3/4,-x+1/4,3/4","-x+3/4,x+3/4,1/4","x+1/4,-x+1/4,1/4","-x+1/4,-x+3/4,3/4","x+3/4,x+1/4,3/4","x+3/4,-x+3/4,1/4","-x+1/4,x+1/4,1/4" ],"desc": "..2","geom": "line","label": "l","mult": 8 },{ "coord": [ "x+1/4,x+3/4,1/4","-x+3/4,-x+1/4,1/4","-x+3/4,x+3/4,3/4","x+1/4,-x+1/4,3/4","-x+1/4,-x+3/4,1/4","x+3/4,x+1/4,1/4","x+3/4,-x+3/4,3/4","-x+1/4,x+1/4,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 8 },{ "coord": [ "x+1/4,0,1/2","-x+3/4,0,1/2","1/2,x+3/4,0","1/2,-x+1/4,0","-x+1/4,1/2,0","x+3/4,1/2,0","0,-x+3/4,1/2","0,x+1/4,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "x+1/4,0,0","-x+3/4,0,0","1/2,x+3/4,1/2","1/2,-x+1/4,1/2","-x+1/4,1/2,1/2","x+3/4,1/2,1/2","0,-x+3/4,0","0,x+1/4,0" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "1/2,0,z+1/4","1/2,0,z+3/4","1/2,0,-z+3/4","1/2,0,-z+1/4","0,1/2,-z+1/4","0,1/2,-z+3/4","0,1/2,z+3/4","0,1/2,z+1/4" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z+1/4","1/2,1/2,z+3/4","0,0,-z+3/4","1/2,1/2,-z+1/4" ],"desc": "2.m m","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,3/4,1/4","3/4,1/4,1/4","3/4,3/4,3/4","1/4,1/4,3/4" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,3/4,3/4","3/4,1/4,3/4","3/4,3/4,1/4","1/4,1/4,1/4" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,0,1/4","1/2,0,3/4","0,1/2,1/4","0,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/2,0,1/2","1/2,0,0","0,1/2,0","0,1/2,1/2" ],"desc": "222 .","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "-42m","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/2,1/2,1/2","0,0,0" ],"desc": "-42m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "134:a-b,a+b,c;-1/4,1/4,-1/4","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-y+1/2,-x+1/2,-z","-x+1/2,-y,-z+1/2","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z+1/2","-y,-x,-z","-x,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y,-x+1/2,z+1/2","-y+1/2,-x+1/2,-z","y,x,-z","-x+1/2,y,-z+1/2","x,-y+1/2,-z+1/2","-x+1/2,-y,-z+1/2","x,y+1/2,-z+1/2","y+1/2,-x+1/2,-z","-y,x,-z","y+1/2,x,z+1/2","-y,-x+1/2,z+1/2","x,-y,z","-x+1/2,y+1/2,z","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z+1/2","y+1/2,-x,z+1/2","-y,-x,-z","y+1/2,x+1/2,-z","-x,y+1/2,-z+1/2","x+1/2,-y,-z+1/2","-x,-y+1/2,-z+1/2","x+1/2,y,-z+1/2","y,-x,-z","-y+1/2,x+1/2,-z","y,x+1/2,z+1/2","-y+1/2,-x,z+1/2","x+1/2,-y+1/2,z","-x,y,z" ],"hall": "C?","hm": "C 42/e m g2 :1","id": "C_42/e_m_g2_1","jmolId": "134:c1","set": 4,"sg": 134,"trm": "a-b,a+b,c;-1/4,1/4,-1/4","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "n","mult": 32 },{ "coord": [ "x+1/4,0,z+1/4","-x+1/4,1/2,z+1/4","1/2,x+1/4,z+3/4","0,-x+1/4,z+3/4","1/2,-x+1/4,-z+3/4","0,x+1/4,-z+3/4","-x+1/4,0,-z+1/4","x+1/4,1/2,-z+1/4" ],"desc": "..m","geom": "plane","label": "m","mult": 16 },{ "coord": [ "1/4,x,3/4","1/4,-x+1/2,3/4","-x+1/2,1/4,1/4","x,1/4,1/4","1/4,-x,3/4","1/4,x+1/2,3/4","x+1/2,1/4,1/4","-x,1/4,1/4" ],"desc": "..2","geom": "line","label": "l","mult": 16 },{ "coord": [ "1/4,x,1/4","1/4,-x+1/2,1/4","-x+1/2,1/4,3/4","x,1/4,3/4","1/4,-x,1/4","1/4,x+1/2,1/4","x+1/2,1/4,3/4","-x,1/4,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 16 },{ "coord": [ "1/2x+1/8,1/2x+1/8,1/2","-1/2x+3/8,-1/2x+3/8,1/2","-1/2x+3/8,1/2x+1/8,0","1/2x+1/8,-1/2x+3/8,0","-1/2x+7/8,-1/2x+3/8,0","1/2x+1/8,1/2x+5/8,0","1/2x+5/8,-1/2x+3/8,1/2","-1/2x+3/8,1/2x+5/8,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 16 },{ "coord": [ "1/2x+1/8,1/2x+1/8,0","-1/2x+3/8,-1/2x+3/8,0","-1/2x+3/8,1/2x+1/8,1/2","1/2x+1/8,-1/2x+3/8,1/2","-1/2x+7/8,-1/2x+3/8,1/2","1/2x+1/8,1/2x+5/8,1/2","1/2x+5/8,-1/2x+3/8,0","-1/2x+3/8,1/2x+5/8,0" ],"desc": ".2.","geom": "line","label": "i","mult": 16 },{ "coord": [ "1/4,1/4,z+1/4","1/4,1/4,z+3/4","1/4,1/4,-z+3/4","1/4,1/4,-z+1/4","1/4,3/4,-z+1/4","1/4,3/4,-z+3/4","1/4,3/4,z+3/4","1/4,3/4,z+1/4" ],"desc": "2..","geom": "line","label": "h","mult": 16 },{ "coord": [ "1/2,1/2,z+1/4","0,1/2,z+3/4","1/2,1/2,-z+3/4","0,1/2,-z+1/4" ],"desc": "2.m m","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,0,1/4","1/4,1/2,1/4","1/2,1/4,3/4","0,1/4,3/4" ],"desc": "..2/m","geom": "point","label": "f","mult": 8 },{ "coord": [ "1/4,0,3/4","1/4,1/2,3/4","1/2,1/4,1/4","0,1/4,1/4" ],"desc": "..2/m","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/4,1/4,1/4","1/4,1/4,3/4","1/4,3/4,1/4","1/4,3/4,3/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,1/2","1/4,1/4,0","1/4,3/4,0","1/4,3/4,1/2" ],"desc": "222 .","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,1/2","0,1/2,0" ],"desc": "-42m","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/2,1/2","1/2,1/2,0" ],"desc": "-42m","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "134:a+b,-a+b,c","det": 2.0,"hm": "C 42/e m g2 :2","id": "C_42/e_m_g2_2","more": true,"sg": 134,"trm": "a+b,-a+b,c" },{ "clegId": "134:a+b,-a+b,c;-1/4,1/4,-1/4","det": 2.0,"hm": "C 42/e m g2 :1","id": "C_42/e_m_g2_1","more": true,"sg": 134,"trm": "a+b,-a+b,c;-1/4,1/4,-1/4" } ],"n": 6,"sg": 134 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_135.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_135.json new file mode 100755 index 000000000000..bf0c04b8a4dd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_135.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "135:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-x+1/2,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z+1/2","-y,x,-z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "-P 4c 2ab","hm": "P 42/m b c","id": "P_42/m_b_c","jmolId": "135","set": 1,"sg": 135,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,1/2","y,-x,1/2","-x+1/2,y+1/2,0","x+1/2,-y+1/2,0","y+1/2,x+1/2,1/2","-y+1/2,-x+1/2,1/2" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "x,x+1/2,1/4","-x,-x+1/2,1/4","-x+1/2,x,3/4","x+1/2,-x,3/4","-x,-x+1/2,3/4","x,x+1/2,3/4","x+1/2,-x,1/4","-x+1/2,x,1/4" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2","1/2,0,-z","0,1/2,-z+1/2","0,1/2,-z","1/2,0,-z+1/2","1/2,0,z","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,z+1/2","1/2,1/2,-z","1/2,1/2,-z+1/2","0,0,-z","0,0,-z+1/2","1/2,1/2,z","1/2,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,1/2,1/4","1/2,0,3/4","0,1/2,3/4","1/2,0,1/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,1/2","1/2,0,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4","1/2,1/2,3/4","1/2,1/2,1/4" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2","1/2,1/2,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "135:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-y,-x+1/2,-z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","-y+1/2,-x,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-y,-x+1/2,-z","y,x+1/2,-z","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z+1/2","-y,x,-z+1/2","y,x+1/2,z","-y,-x+1/2,z","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,-x,-z","y+1/2,x,-z","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","y+1/2,x,z","-y+1/2,-x,z","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "C?","hm": "C 42/m c g1","id": "C_42/m_c_g1","jmolId": "135:c","set": 2,"sg": 135,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 32 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,1/2","1/2x+1/2y,-1/2x+1/2y,1/2","-1/2x-1/2y,-1/2x+1/2y+1/2,0","1/2x+1/2y,1/2x-1/2y+1/2,0","-1/2x+1/2y,1/2x+1/2y+1/2,1/2","1/2x-1/2y,-1/2x-1/2y+1/2,1/2" ],"desc": "m..","geom": "plane","label": "h","mult": 16 },{ "coord": [ "3/4,x+1/4,1/4","3/4,-x+1/4,1/4","-x+1/4,1/4,3/4","x+1/4,1/4,3/4","3/4,-x+1/4,3/4","3/4,x+1/4,3/4","x+1/4,1/4,1/4","-x+1/4,1/4,1/4" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2","1/4,1/4,-z","3/4,1/4,-z+1/2","3/4,1/4,-z","1/4,1/4,-z+1/2","1/4,1/4,z","3/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,0,z","0,0,z+1/2","0,1/2,-z","0,1/2,-z+1/2","0,0,-z","0,0,-z+1/2","0,1/2,z","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 16 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,3/4","3/4,1/4,3/4","1/4,1/4,1/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,1/2","1/4,1/4,0","3/4,1/4,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/4","0,0,3/4","0,1/2,3/4","0,1/2,1/4" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,0","0,0,1/2","0,1/2,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "135:a+b,-a+b,c","det": 2.0,"hm": "C 42/m c g1","id": "C_42/m_c_g1","more": true,"sg": 135,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 135 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_136.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_136.json new file mode 100755 index 000000000000..51d898579beb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_136.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "136:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","y,x,-z","-y,-x,-z","-x,-y,-z","x,y,-z","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-y,-x,z","y,x,z" ],"hall": "-P 4n 2n","hm": "P 42/m n m","id": "P_42/m_n_m","jmolId": "136","set": 1,"sg": 136,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x,x,z","-x,-x,z","-x+1/2,x+1/2,z+1/2","x+1/2,-x+1/2,z+1/2","-x+1/2,x+1/2,-z+1/2","x+1/2,-x+1/2,-z+1/2","x,x,-z","-x,-x,-z" ],"desc": "..m","geom": "plane","label": "j","mult": 8 },{ "coord": [ "x,y,0","-x,-y,0","-y+1/2,x+1/2,1/2","y+1/2,-x+1/2,1/2","-x+1/2,y+1/2,1/2","x+1/2,-y+1/2,1/2","y,x,0","-y,-x,0" ],"desc": "m..","geom": "plane","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2","1/2,0,-z+1/2","1/2,0,-z","0,1/2,-z","0,1/2,-z+1/2","1/2,0,z+1/2","1/2,0,z" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,-x,0","-x,x,0","x+1/2,x+1/2,1/2","-x+1/2,-x+1/2,1/2" ],"desc": "m.2 m","geom": "line","label": "g","mult": 4 },{ "coord": [ "x,x,0","-x,-x,0","-x+1/2,x+1/2,1/2","x+1/2,-x+1/2,1/2" ],"desc": "m.2 m","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,z+1/2","1/2,1/2,-z+1/2","0,0,-z" ],"desc": "2.m m","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4","1/2,0,1/4","1/2,0,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2","1/2,0,1/2","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "m.m m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "m.m m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "136:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x+1/2,z+1/2","-y,-x+1/2,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-y+1/2,-x,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","-y,-x+1/2,-z+1/2","y,x+1/2,-z+1/2","-x,y,-z","x,-y,-z","-x,-y,-z","x,y,-z","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","-y+1/2,-x,-z+1/2","y+1/2,x,-z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C?","hm": "C 42/m m g2","id": "C_42/m_m_g2","jmolId": "136:c","set": 2,"sg": 136,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 32 },{ "coord": [ "0,x,z","0,-x,z","-x,1/2,z+1/2","x,1/2,z+1/2","-x,1/2,-z+1/2","x,1/2,-z+1/2","0,x,-z","0,-x,-z" ],"desc": "..m","geom": "plane","label": "j","mult": 16 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y+1/2,1/2","1/2x+1/2y,-1/2x+1/2y+1/2,1/2","-1/2x-1/2y,-1/2x+1/2y+1/2,1/2","1/2x+1/2y,1/2x-1/2y+1/2,1/2","-1/2x+1/2y,1/2x+1/2y,0","1/2x-1/2y,-1/2x-1/2y,0" ],"desc": "m..","geom": "plane","label": "i","mult": 16 },{ "coord": [ "3/4,1/4,z","3/4,1/4,z+1/2","1/4,1/4,-z+1/2","1/4,1/4,-z","3/4,1/4,-z","3/4,1/4,-z+1/2","1/4,1/4,z+1/2","1/4,1/4,z" ],"desc": "2..","geom": "line","label": "h","mult": 16 },{ "coord": [ "x,0,0","-x,0,0","0,x+1/2,1/2","0,-x+1/2,1/2" ],"desc": "m.2 m","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,x,0","0,-x,0","-x,1/2,1/2","x,1/2,1/2" ],"desc": "m.2 m","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,1/2,z+1/2","0,1/2,-z+1/2","0,0,-z" ],"desc": "2.m m","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,1/4","3/4,1/4,3/4","1/4,1/4,1/4","1/4,1/4,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,0","3/4,1/4,1/2","1/4,1/4,1/2","1/4,1/4,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,0" ],"desc": "m.m m","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "m.m m","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "136:a+b,-a+b,c","det": 2.0,"hm": "C 42/m m g2","id": "C_42/m_m_g2","more": true,"sg": 136,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 136 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_137.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_137.json new file mode 100755 index 000000000000..35c0ecfd8066 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_137.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "137:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-x,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y,-x+1/2,z+1/2","-x,y+1/2,-z","x+1/2,-y,-z","y+1/2,x+1/2,-z+1/2","-y,-x,-z+1/2","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z+1/2","-y,x+1/2,-z+1/2","x,-y+1/2,z","-x+1/2,y,z","-y+1/2,-x+1/2,z+1/2","y,x,z+1/2" ],"hall": "-P 4ac 2a","hm": "P 42/n m c :2","id": "P_42/n_m_c_2","jmolId": "137:2","set": 1,"sg": 137,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "h","mult": 16 },{ "coord": [ "1/4,y,z","1/4,-y+1/2,z","-y+1/2,1/4,z+1/2","y,1/4,z+1/2","3/4,y+1/2,-z","3/4,-y,-z","y+1/2,3/4,-z+1/2","-y,3/4,-z+1/2" ],"desc": ".m.","geom": "plane","label": "g","mult": 8 },{ "coord": [ "x,-x,1/4","-x+1/2,x+1/2,1/4","x+1/2,x,3/4","-x,-x+1/2,3/4","-x,x,3/4","x+1/2,-x+1/2,3/4","-x+1/2,-x,1/4","x,x+1/2,1/4" ],"desc": "..2","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2","0,1/2,0","1/2,0,0","1/2,1/2,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,1/4,z+1/2","3/4,3/4,-z","3/4,3/4,-z+1/2" ],"desc": "2mm .","geom": "line","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,z","1/4,3/4,z+1/2","1/4,3/4,-z","3/4,1/4,-z+1/2" ],"desc": "2mm .","geom": "line","label": "c","mult": 4 },{ "coord": [ "3/4,1/4,1/4","1/4,3/4,3/4" ],"desc": "-4m2","geom": "point","label": "b","mult": 2 },{ "coord": [ "3/4,1/4,3/4","1/4,3/4,1/4" ],"desc": "-4m2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "137:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z+1/2","-y+3/4,-x+1/4,-z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z+1/2","-y+1/4,-x+3/4,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z+1/2","y+3/4,-x+1/4,z+1/2","-y+3/4,-x+1/4,-z","y+1/4,x+1/4,-z","-x,y+1/2,-z+1/2","x,-y,-z+1/2","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z+1/2","-y+3/4,x+1/4,-z+1/2","y+3/4,x+1/4,z","-y+1/4,-x+1/4,z","x,-y+1/2,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z+1/2","y+1/4,-x+3/4,z+1/2","-y+1/4,-x+3/4,-z","y+3/4,x+3/4,-z","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z+1/2","-y+1/4,x+3/4,-z+1/2","y+1/4,x+3/4,z","-y+3/4,-x+3/4,z","x+1/2,-y,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hm": "C 42/e c m :2","id": "C_42/e_c_m_2","jmolId": "137:c","set": 2,"sg": 137,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 32 },{ "coord": [ "-1/2y+1/8,1/2y+1/8,z","1/2y+7/8,-1/2y+3/8,z","-1/2y+1/8,-1/2y+3/8,z+1/2","1/2y+7/8,1/2y+1/8,z+1/2","-1/2y+1/8,1/2y+5/8,-z","1/2y+3/8,-1/2y+3/8,-z","1/2y+7/8,1/2y+5/8,-z+1/2","-1/2y+5/8,-1/2y+3/8,-z+1/2" ],"desc": ".m.","geom": "plane","label": "g","mult": 16 },{ "coord": [ "x,0,1/4","-x,1/2,1/4","1/4,x+1/4,3/4","3/4,-x+1/4,3/4","-x,0,3/4","x,1/2,3/4","1/4,-x+1/4,1/4","3/4,x+1/4,1/4" ],"desc": "..2","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,1/2","3/4,1/4,1/2","3/4,1/4,0","1/4,1/4,0","0,1/2,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 16 },{ "coord": [ "0,1/4,z","0,1/4,z+1/2","0,3/4,-z","0,3/4,-z+1/2" ],"desc": "2mm .","geom": "line","label": "d","mult": 8 },{ "coord": [ "1/4,1/2,z","3/4,1/2,z+1/2","3/4,1/2,-z","1/4,1/2,-z+1/2" ],"desc": "2mm .","geom": "line","label": "c","mult": 8 },{ "coord": [ "1/4,1/2,1/4","3/4,1/2,3/4" ],"desc": "-4m2","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,1/2,3/4","3/4,1/2,1/4" ],"desc": "-4m2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "137:a,b,c;-1/4,1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","y,x,-z","-y,-x,-z","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y,-x,-z","-y,x,-z","x,-y,z","-x,y,z","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "P 4n 2n -1n","hm": "P 42/n m c :1","id": "P_42/n_m_c_1","jmolId": "137:1","set": 3,"sg": 137,"trm": "a,b,c;-1/4,1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "h","mult": 16 },{ "coord": [ "1/2,y+3/4,z+1/4","1/2,-y+1/4,z+1/4","-y+3/4,0,z+3/4","y+1/4,0,z+3/4","0,y+1/4,-z+1/4","0,-y+3/4,-z+1/4","y+3/4,1/2,-z+3/4","-y+1/4,1/2,-z+3/4" ],"desc": ".m.","geom": "plane","label": "g","mult": 8 },{ "coord": [ "x+1/4,-x+3/4,1/2","-x+3/4,x+1/4,1/2","x+3/4,x+3/4,0","-x+1/4,-x+1/4,0","-x+1/4,x+3/4,0","x+3/4,-x+1/4,0","-x+3/4,-x+3/4,1/2","x+1/4,x+1/4,1/2" ],"desc": "..2","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,3/4,1/4","3/4,1/4,1/4","3/4,3/4,3/4","1/4,1/4,3/4","1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/2,0,z+1/4","1/2,0,z+3/4","0,1/2,-z+1/4","0,1/2,-z+3/4" ],"desc": "2mm .","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,0,z+1/4","1/2,1/2,z+3/4","1/2,1/2,-z+1/4","0,0,-z+3/4" ],"desc": "2mm .","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "-4m2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "137:a-b,a+b,c;-1/4,1/4,-1/4","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-y,-x+1/2,-z+1/2","-x+1/2,-y,-z+1/2","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z+1/2","-y+1/2,-x,-z+1/2","-x,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y,-x+1/2,z+1/2","-y,-x+1/2,-z+1/2","y+1/2,x,-z+1/2","-x+1/2,y+1/2,-z","x,-y,-z","-x+1/2,-y,-z+1/2","x,y+1/2,-z+1/2","y+1/2,-x+1/2,-z","-y,x,-z","y,x,z","-y+1/2,-x+1/2,z","x,-y+1/2,z+1/2","-x+1/2,y,z+1/2","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z+1/2","y+1/2,-x,z+1/2","-y+1/2,-x,-z+1/2","y,x+1/2,-z+1/2","-x,y,-z","x+1/2,-y+1/2,-z","-x,-y+1/2,-z+1/2","x+1/2,y,-z+1/2","y,-x,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z","-y,-x,z","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2" ],"hall": "C?","hm": "C 42/e c m :1","id": "C_42/e_c_m_1","jmolId": "137:c2","set": 4,"sg": 137,"trm": "a-b,a+b,c;-1/4,1/4,-1/4","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 32 },{ "coord": [ "-1/2y+3/8,1/2y+1/8,z+1/4","1/2y+1/8,-1/2y+3/8,z+1/4","-1/2y+3/8,-1/2y+3/8,z+3/4","1/2y+1/8,1/2y+1/8,z+3/4","-1/2y+3/8,1/2y+5/8,-z+1/4","1/2y+5/8,-1/2y+3/8,-z+1/4","1/2y+1/8,1/2y+5/8,-z+3/4","-1/2y+7/8,-1/2y+3/8,-z+3/4" ],"desc": ".m.","geom": "plane","label": "g","mult": 16 },{ "coord": [ "x+1/4,0,1/2","-x+1/4,1/2,1/2","1/2,x+1/4,0","0,-x+1/4,0","-x+1/4,0,0","x+1/4,1/2,0","1/2,-x+1/4,1/2","0,x+1/4,1/2" ],"desc": "..2","geom": "line","label": "f","mult": 16 },{ "coord": [ "1/4,0,1/4","1/4,1/2,1/4","1/2,1/4,3/4","0,1/4,3/4","0,1/4,1/4","1/2,1/4,1/4","1/4,1/2,3/4","1/4,0,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 16 },{ "coord": [ "1/4,1/4,z+1/4","1/4,1/4,z+3/4","1/4,3/4,-z+1/4","1/4,3/4,-z+3/4" ],"desc": "2mm .","geom": "line","label": "d","mult": 8 },{ "coord": [ "1/2,1/2,z+1/4","0,1/2,z+3/4","0,1/2,-z+1/4","1/2,1/2,-z+3/4" ],"desc": "2mm .","geom": "line","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,1/2","0,1/2,0" ],"desc": "-4m2","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "137:a+b,-a+b,c","det": 2.0,"hm": "C 42/e c m :2","id": "C_42/e_c_m_2","more": true,"sg": 137,"trm": "a+b,-a+b,c" },{ "clegId": "137:a+b,-a+b,c;-1/4,1/4,-1/4","det": 2.0,"hm": "C 42/e c m :1","id": "C_42/e_c_m_1","more": true,"sg": 137,"trm": "a+b,-a+b,c;-1/4,1/4,-1/4" } ],"n": 6,"sg": 137 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_138.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_138.json new file mode 100755 index 000000000000..b8256d7933d5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_138.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "138:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y,-x+1/2,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y,-z+1/2","y+1/2,x+1/2,-z","-y,-x,-z","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z+1/2","-y,x+1/2,-z+1/2","x,-y+1/2,z+1/2","-x+1/2,y,z+1/2","-y+1/2,-x+1/2,z","y,x,z" ],"hall": "-P 4ac 2ac","hm": "P 42/n c m :2","id": "P_42/n_c_m_2","jmolId": "138:2","set": 1,"sg": 138,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "x,x,z","-x+1/2,-x+1/2,z","-x+1/2,x,z+1/2","x,-x+1/2,z+1/2","-x,x+1/2,-z+1/2","x+1/2,-x,-z+1/2","x+1/2,x+1/2,-z","-x,-x,-z" ],"desc": "..m","geom": "plane","label": "i","mult": 8 },{ "coord": [ "x,-x,0","-x+1/2,x+1/2,0","x+1/2,x,1/2","-x,-x+1/2,1/2","-x,x,0","x+1/2,-x+1/2,0","-x+1/2,-x,1/2","x,x+1/2,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,-x,1/2","-x+1/2,x+1/2,1/2","x+1/2,x,0","-x,-x+1/2,0","-x,x,1/2","x+1/2,-x+1/2,1/2","-x+1/2,-x,0","x,x+1/2,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,3/4,z+1/2","1/4,3/4,-z+1/2","3/4,1/4,-z","1/4,3/4,-z","3/4,1/4,-z+1/2","3/4,1/4,z+1/2","1/4,3/4,z" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,1/4,z+1/2","3/4,3/4,-z+1/2","3/4,3/4,-z" ],"desc": "2.m m","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","1/2,0,0","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 4 },{ "coord": [ "3/4,1/4,3/4","1/4,3/4,1/4","1/4,3/4,3/4","3/4,1/4,1/4" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,3/4,1/2","1/4,3/4,0","3/4,1/4,1/2" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "138:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z+1/2","-y+3/4,-x+1/4,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z+1/2","-y+1/4,-x+3/4,-z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z+1/2","y+3/4,-x+1/4,z+1/2","-y+3/4,-x+1/4,-z+1/2","y+1/4,x+1/4,-z+1/2","-x,y+1/2,-z","x,-y,-z","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z+1/2","-y+3/4,x+1/4,-z+1/2","y+3/4,x+1/4,z+1/2","-y+1/4,-x+1/4,z+1/2","x,-y+1/2,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z+1/2","y+1/4,-x+3/4,z+1/2","-y+1/4,-x+3/4,-z+1/2","y+3/4,x+3/4,-z+1/2","-x+1/2,y,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z+1/2","-y+1/4,x+3/4,-z+1/2","y+1/4,x+3/4,z+1/2","-y+3/4,-x+3/4,z+1/2","x+1/2,-y,z","-x+1/2,y+1/2,z" ],"hm": "C 42/e m c :2","id": "C_42/e_m_c_2","jmolId": "138:c","set": 2,"sg": 138,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 32 },{ "coord": [ "0,x,z","0,-x+1/2,z","-x+1/4,1/4,z+1/2","x+3/4,1/4,z+1/2","-x+3/4,1/4,-z+1/2","x+1/4,1/4,-z+1/2","0,x+1/2,-z","0,-x,-z" ],"desc": "..m","geom": "plane","label": "i","mult": 16 },{ "coord": [ "x,0,0","-x,1/2,0","1/4,x+1/4,1/2","3/4,-x+1/4,1/2","-x,0,0","x,1/2,0","1/4,-x+1/4,1/2","3/4,x+1/4,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 16 },{ "coord": [ "x,0,1/2","-x,1/2,1/2","1/4,x+1/4,0","3/4,-x+1/4,0","-x,0,1/2","x,1/2,1/2","1/4,-x+1/4,0","3/4,x+1/4,0" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/4,1/2,z","3/4,1/2,z+1/2","3/4,1/2,-z+1/2","1/4,1/2,-z","3/4,1/2,-z","1/4,1/2,-z+1/2","1/4,1/2,z+1/2","3/4,1/2,z" ],"desc": "2..","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,1/4,z","0,1/4,z+1/2","0,3/4,-z+1/2","0,3/4,-z" ],"desc": "2.m m","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,1/2","1/4,1/4,0","3/4,1/4,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/4,1/2,3/4","3/4,1/2,1/4","3/4,1/2,3/4","1/4,1/2,1/4" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/4,1/2,0","3/4,1/2,1/2","3/4,1/2,0","1/4,1/2,1/2" ],"desc": "2.2 2","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "138:a,b,c;-1/4,1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","y,x,-z+1/2","-y,-x,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y,-x,-z","-y,x,-z","x,-y,z+1/2","-x,y,z+1/2","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z" ],"hall": "P 4n 2ab -1n","hm": "P 42/n c m :1","id": "P_42/n_c_m_1","jmolId": "138:1","set": 3,"sg": 138,"trm": "a,b,c;-1/4,1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "x+1/4,x+3/4,z+1/4","-x+3/4,-x+1/4,z+1/4","-x+3/4,x+3/4,z+3/4","x+1/4,-x+1/4,z+3/4","-x+1/4,x+1/4,-z+3/4","x+3/4,-x+3/4,-z+3/4","x+3/4,x+1/4,-z+1/4","-x+1/4,-x+3/4,-z+1/4" ],"desc": "..m","geom": "plane","label": "i","mult": 8 },{ "coord": [ "x+1/4,-x+3/4,1/4","-x+3/4,x+1/4,1/4","x+3/4,x+3/4,3/4","-x+1/4,-x+1/4,3/4","-x+1/4,x+3/4,1/4","x+3/4,-x+1/4,1/4","-x+3/4,-x+3/4,3/4","x+1/4,x+1/4,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "x+1/4,-x+3/4,3/4","-x+3/4,x+1/4,3/4","x+3/4,x+3/4,1/4","-x+1/4,-x+1/4,1/4","-x+1/4,x+3/4,3/4","x+3/4,-x+1/4,3/4","-x+3/4,-x+3/4,1/4","x+1/4,x+1/4,1/4" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,z+1/4","1/2,1/2,z+3/4","1/2,1/2,-z+3/4","0,0,-z+1/4","1/2,1/2,-z+1/4","0,0,-z+3/4","0,0,z+3/4","1/2,1/2,z+1/4" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/2,0,z+1/4","1/2,0,z+3/4","0,1/2,-z+3/4","0,1/2,-z+1/4" ],"desc": "2.m m","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,1/4","3/4,1/4,1/4","3/4,3/4,3/4","1/4,1/4,3/4" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,3/4,3/4","3/4,1/4,3/4","3/4,3/4,1/4","1/4,1/4,1/4" ],"desc": "..2/m","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2","1/2,1/2,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","1/2,1/2,3/4","1/2,1/2,1/4","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "138:a-b,a+b,c;-1/4,1/4,-1/4","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-y,-x+1/2,-z","-x+1/2,-y,-z+1/2","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z+1/2","-y+1/2,-x,-z","-x,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y,-x+1/2,z+1/2","-y,-x+1/2,-z","y+1/2,x,-z","-x+1/2,y+1/2,-z+1/2","x,-y,-z+1/2","-x+1/2,-y,-z+1/2","x,y+1/2,-z+1/2","y+1/2,-x+1/2,-z","-y,x,-z","y,x,z+1/2","-y+1/2,-x+1/2,z+1/2","x,-y+1/2,z","-x+1/2,y,z","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z+1/2","y+1/2,-x,z+1/2","-y+1/2,-x,-z","y,x+1/2,-z","-x,y,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","x+1/2,y,-z+1/2","y,-x,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z+1/2","-y,-x,z+1/2","x+1/2,-y,z","-x,y+1/2,z" ],"hall": "C?","hm": "C 42/e m c :1","id": "C_42/e_m_c_1","jmolId": "138:c1","set": 4,"sg": 138,"trm": "a-b,a+b,c;-1/4,1/4,-1/4","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 32 },{ "coord": [ "1/4,x,z+1/4","1/4,-x+1/2,z+1/4","-x+1/2,1/4,z+3/4","x,1/4,z+3/4","-x,1/4,-z+3/4","x+1/2,1/4,-z+3/4","1/4,x+1/2,-z+1/4","1/4,-x,-z+1/4" ],"desc": "..m","geom": "plane","label": "i","mult": 16 },{ "coord": [ "x+1/4,0,1/4","-x+1/4,1/2,1/4","1/2,x+1/4,3/4","0,-x+1/4,3/4","-x+1/4,0,1/4","x+1/4,1/2,1/4","1/2,-x+1/4,3/4","0,x+1/4,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 16 },{ "coord": [ "x+1/4,0,3/4","-x+1/4,1/2,3/4","1/2,x+1/4,1/4","0,-x+1/4,1/4","-x+1/4,0,3/4","x+1/4,1/2,3/4","1/2,-x+1/4,1/4","0,x+1/4,1/4" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/2,1/2,z+1/4","0,1/2,z+3/4","0,1/2,-z+3/4","1/2,1/2,-z+1/4","0,1/2,-z+1/4","1/2,1/2,-z+3/4","1/2,1/2,z+3/4","0,1/2,z+1/4" ],"desc": "2..","geom": "line","label": "f","mult": 16 },{ "coord": [ "1/4,1/4,z+1/4","1/4,1/4,z+3/4","1/4,3/4,-z+3/4","1/4,3/4,-z+1/4" ],"desc": "2.m m","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,0,1/4","1/4,1/2,1/4","1/2,1/4,3/4","0,1/4,3/4" ],"desc": "..2/m","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,0,3/4","1/4,1/2,3/4","1/2,1/4,1/4","0,1/4,1/4" ],"desc": "..2/m","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2","0,1/2,0","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/2,1/2,1/4","0,1/2,3/4","0,1/2,1/4","1/2,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "138:a+b,-a+b,c","det": 2.0,"hm": "C 42/e m c :2","id": "C_42/e_m_c_2","more": true,"sg": 138,"trm": "a+b,-a+b,c" },{ "clegId": "138:a+b,-a+b,c;-1/4,1/4,-1/4","det": 2.0,"hm": "C 42/e m c :1","id": "C_42/e_m_c_1","more": true,"sg": 138,"trm": "a+b,-a+b,c;-1/4,1/4,-1/4" } ],"n": 6,"sg": 138 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_139.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_139.json new file mode 100755 index 000000000000..118cb03a44fb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_139.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "139:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,y,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,y,-z","x,-y,-z","y,x,-z","-y,-x,-z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x,-y,z","-x,y,z","-y,-x,z","y,x,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2" ],"hall": "-I 4 2","hm": "I 4/m m m","id": "I_4/m_m_m","jmolId": "139","set": 1,"sg": 139,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 32 },{ "coord": [ "0,y,z","0,-y,z","-y,0,z","y,0,z","0,y,-z","0,-y,-z","y,0,-z","-y,0,-z" ],"desc": ".m.","geom": "plane","label": "n","mult": 16 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,z","x,-x,z","-x,x,-z","x,-x,-z","x,x,-z","-x,-x,-z" ],"desc": "..m","geom": "plane","label": "m","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,0","y,-x,0","-x,y,0","x,-y,0","y,x,0","-y,-x,0" ],"desc": "m..","geom": "plane","label": "l","mult": 16 },{ "coord": [ "x,x+1/2,1/4","-x,-x+1/2,1/4","-x+1/2,x,1/4","x+1/2,-x,1/4","-x,-x+1/2,3/4","x,x+1/2,3/4","x+1/2,-x,3/4","-x+1/2,x,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 16 },{ "coord": [ "x,1/2,0","-x,1/2,0","1/2,x,0","1/2,-x,0" ],"desc": "m2m .","geom": "line","label": "j","mult": 8 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0" ],"desc": "m2m .","geom": "line","label": "i","mult": 8 },{ "coord": [ "x,x,0","-x,-x,0","-x,x,0","x,-x,0" ],"desc": "m.2 m","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z","1/2,0,-z" ],"desc": "2mm .","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,1/4","1/4,3/4,1/4" ],"desc": "..2/m","geom": "point","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4mm","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,0,1/4" ],"desc": "-4m2","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "mmm .","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "4/mmm","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "4/mmm","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "139:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-y,-x,-z","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-y+1/2,-x+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-y,-x,-z","y,x,-z","-x,y,-z","x,-y,-z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","y,x,z","-y,-x,z","x,-y,z","-x,y,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","-y,-x+1/2,-z+1/2","y,x+1/2,-z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","-y+1/2,-x,-z+1/2","y+1/2,x,-z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "F?","hm": "F 4/m m m","id": "F_4/m_m_m","jmolId": "139:f","set": 2,"sg": 139,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 64 },{ "coord": [ "-1/2y,1/2y,z","1/2y,-1/2y,z","-1/2y,-1/2y,z","1/2y,1/2y,z","-1/2y,1/2y,-z","1/2y,-1/2y,-z","1/2y,1/2y,-z","-1/2y,-1/2y,-z" ],"desc": ".m.","geom": "plane","label": "n","mult": 32 },{ "coord": [ "0,x,z","0,-x,z","-x,0,z","x,0,z","-x,0,-z","x,0,-z","0,x,-z","0,-x,-z" ],"desc": "..m","geom": "plane","label": "m","mult": 32 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,0","1/2x+1/2y,-1/2x+1/2y,0","-1/2x-1/2y,-1/2x+1/2y,0","1/2x+1/2y,1/2x-1/2y,0","-1/2x+1/2y,1/2x+1/2y,0","1/2x-1/2y,-1/2x-1/2y,0" ],"desc": "m..","geom": "plane","label": "l","mult": 32 },{ "coord": [ "3/4,x+1/4,1/4","3/4,-x+1/4,1/4","-x+1/4,1/4,1/4","x+1/4,1/4,1/4","3/4,-x+1/4,3/4","3/4,x+1/4,3/4","x+1/4,1/4,3/4","-x+1/4,1/4,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 32 },{ "coord": [ "1/2x+3/4,1/2x+1/4,0","-1/2x+3/4,-1/2x+1/4,0","-1/2x+1/4,1/2x+1/4,0","1/2x+1/4,-1/2x+1/4,0" ],"desc": "m2m .","geom": "line","label": "j","mult": 16 },{ "coord": [ "1/2x,1/2x,0","-1/2x,-1/2x,0","-1/2x,1/2x,0","1/2x,-1/2x,0" ],"desc": "m2m .","geom": "line","label": "i","mult": 16 },{ "coord": [ "0,x,0","0,-x,0","-x,0,0","x,0,0" ],"desc": "m.2 m","geom": "line","label": "h","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,-z","1/4,1/4,-z" ],"desc": "2mm .","geom": "line","label": "g","mult": 16 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,1/2,1/4","3/4,1/2,1/4" ],"desc": "..2/m","geom": "point","label": "f","mult": 16 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4mm","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,1/4" ],"desc": "-4m2","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "mmm .","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2" ],"desc": "4/mmm","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "4/mmm","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "139:a+b,-a+b,c","det": 2.0,"hm": "F 4/m m m","id": "F_4/m_m_m","more": true,"sg": 139,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 139 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_14.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_14.json new file mode 100755 index 000000000000..e9d60ce30e14 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_14.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "14:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z+1/2","-x,-y,-z","x,-y+1/2,z+1/2" ],"hall": "-P 2ybc","hm": "P 1 21/c 1","id": "P_1_21/c_1","jmolId": "14:b1","set": 1,"sg": 14,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "1/2,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:-a-c,b,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y+1/2,-z+1/2","-x,-y,-z","x+1/2,-y+1/2,z+1/2" ],"hall": "-P 2yn","hm": "P 1 21/n 1","id": "P_1_21/n_1","jmolId": "14:b2","set": 2,"sg": 14,"trm": "-a-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:c,b,-a-c","det": 1.0,"gen": [ "x,y,z","-x+1/2,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y+1/2,-z","-x,-y,-z","x+1/2,-y+1/2,z" ],"hall": "-P 2yab","hm": "P 1 21/a 1","id": "P_1_21/a_1","jmolId": "14:b3","set": 3,"sg": 14,"trm": "c,b,-a-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:c,a,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,-y,-z","x+1/2,y,-z+1/2" ],"hall": "-P 2ac","hm": "P 1 1 21/a","id": "P_1_1_21/a","jmolId": "14:c1","set": 4,"sg": 14,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:a,-a-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-x,-y,-z","x+1/2,y+1/2,-z+1/2" ],"hall": "-P 2n","hm": "P 1 1 21/n","id": "P_1_1_21/n","jmolId": "14:c2","set": 5,"sg": 14,"trm": "a,-a-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:-a-c,c,b","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-x,-y,-z","x,y+1/2,-z+1/2" ],"hall": "-P 2bc","hm": "P 1 1 21/b","id": "P_1_1_21/b","jmolId": "14:c3","set": 6,"sg": 14,"trm": "-a-c,c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:b,c,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y+1/2,-z","-x,-y,-z","-x+1/2,y+1/2,z" ],"hall": "-P 2xab","hm": "P 21/b 1 1","id": "P_21/b_1_1","jmolId": "14:a1","set": 7,"sg": 14,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:b,a,-a-c","det": 1.0,"gen": [ "x,y,z","x+1/2,-y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y+1/2,-z+1/2","-x,-y,-z","-x+1/2,y+1/2,z+1/2" ],"hall": "-P 2xn","hm": "P 21/n 1 1","id": "P_21/n_1_1","jmolId": "14:a2","set": 8,"sg": 14,"trm": "b,a,-a-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,0,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:b,-a-c,c","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z+1/2","-x,-y,-z","-x+1/2,y,z+1/2" ],"hall": "-P 2xac","hm": "P 21/c 1 1","id": "P_21/c_1_1","jmolId": "14:a3","set": 9,"sg": 14,"trm": "b,-a-c,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,0" ],"desc": "-1","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "14:c,-b,a","det": 1.0,"hm": "P 1 21/a 1 :1","id": "P_1_21/a_1_1","more": true,"sg": 14,"trm": "c,-b,a" },{ "clegId": "14:a,-b,-a-c","det": 1.0,"hm": "P 1 21/n 1 :2","id": "P_1_21/n_1_2","more": true,"sg": 14,"trm": "a,-b,-a-c" },{ "clegId": "14:-a-c,-b,c","det": 1.0,"hm": "P 1 21/c 1 :3","id": "P_1_21/c_1_3","more": true,"sg": 14,"trm": "-a-c,-b,c" },{ "clegId": "14:a,c,-b","det": 1.0,"hm": "P 1 1 21/b :1","id": "P_1_1_21/b_1","more": true,"sg": 14,"trm": "a,c,-b" },{ "clegId": "14:-a-c,a,-b","det": 1.0,"hm": "P 1 1 21/n :2","id": "P_1_1_21/n_2","more": true,"sg": 14,"trm": "-a-c,a,-b" },{ "clegId": "14:c,-a-c,-b","det": 1.0,"hm": "P 1 1 21/a :3","id": "P_1_1_21/a_3","more": true,"sg": 14,"trm": "c,-a-c,-b" },{ "clegId": "14:-b,a,c","det": 1.0,"hm": "P 21/c 1 1 :1","id": "P_21/c_1_1_1","more": true,"sg": 14,"trm": "-b,a,c" },{ "clegId": "14:-b,-a-c,a","det": 1.0,"hm": "P 21/n 1 1 :2","id": "P_21/n_1_1_2","more": true,"sg": 14,"trm": "-b,-a-c,a" },{ "clegId": "14:-b,c,-a-c","det": 1.0,"hm": "P 21/b 1 1 :3","id": "P_21/b_1_1_3","more": true,"sg": 14,"trm": "-b,c,-a-c" } ],"n": 18,"sg": 14 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_140.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_140.json new file mode 100755 index 000000000000..f4d496cb6caa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_140.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "140:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,y,-z+1/2","x,-y,-z+1/2","y,x,-z+1/2","-y,-x,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x,-y,z+1/2","-x,y,z+1/2","-y,-x,z+1/2","y,x,z+1/2","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z" ],"hall": "-I 4 2c","hm": "I 4/m c m","id": "I_4/m_c_m","jmolId": "140","set": 1,"sg": 140,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "m","mult": 32 },{ "coord": [ "x,x+1/2,z","-x,-x+1/2,z","-x+1/2,x,z","x+1/2,-x,z","-x,x+1/2,-z+1/2","x,-x+1/2,-z+1/2","x+1/2,x,-z+1/2","-x+1/2,-x,-z+1/2" ],"desc": "..m","geom": "plane","label": "l","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,0","y,-x,0","-x,y,1/2","x,-y,1/2","y,x,1/2","-y,-x,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 16 },{ "coord": [ "x,0,1/4","-x,0,1/4","0,x,1/4","0,-x,1/4","-x,0,3/4","x,0,3/4","0,-x,3/4","0,x,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 16 },{ "coord": [ "x,x,1/4","-x,-x,1/4","-x,x,1/4","x,-x,1/4","-x,-x,3/4","x,x,3/4","x,-x,3/4","-x,x,3/4" ],"desc": "..2","geom": "line","label": "i","mult": 16 },{ "coord": [ "x,x+1/2,0","-x,-x+1/2,0","-x+1/2,x,0","x+1/2,-x,0" ],"desc": "m.2 m","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z+1/2","1/2,0,-z+1/2" ],"desc": "2.m m","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "4..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,1/4","1/4,3/4,1/4" ],"desc": "..2/m","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "m.m m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "4/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,0,1/4" ],"desc": "-42m","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "422","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "140:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-y,-x,-z+1/2","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-y+1/2,-x+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-y,-x,-z+1/2","y,x,-z+1/2","-x,y,-z+1/2","x,-y,-z+1/2","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","y,x,z+1/2","-y,-x,z+1/2","x,-y,z+1/2","-x,y,z+1/2","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","-y,-x+1/2,-z","y,x+1/2,-z","-x,y+1/2,-z","x,-y+1/2,-z","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","y,x+1/2,z","-y,-x+1/2,z","x,-y+1/2,z","-x,y+1/2,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x+1/2,-z+1/2","y+1/2,x+1/2,-z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","-y+1/2,-x,-z","y+1/2,x,-z","-x+1/2,y,-z","x+1/2,-y,-z","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","y+1/2,x,z","-y+1/2,-x,z","x+1/2,-y,z","-x+1/2,y,z" ],"hall": "F?","hm": "F 4/m m c","id": "F_4/m_m_c","jmolId": "140:f","set": 2,"sg": 140,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "m","mult": 64 },{ "coord": [ "3/4,x+1/4,z","3/4,-x+1/4,z","-x+1/4,1/4,z","x+1/4,1/4,z","-x+3/4,1/4,-z+1/2","x+3/4,1/4,-z+1/2","1/4,x+1/4,-z+1/2","1/4,-x+1/4,-z+1/2" ],"desc": "..m","geom": "plane","label": "l","mult": 32 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,0","1/2x+1/2y,-1/2x+1/2y,0","-1/2x-1/2y,-1/2x+1/2y,1/2","1/2x+1/2y,1/2x-1/2y,1/2","-1/2x+1/2y,1/2x+1/2y,1/2","1/2x-1/2y,-1/2x-1/2y,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 32 },{ "coord": [ "1/2x,1/2x,1/4","-1/2x,-1/2x,1/4","-1/2x,1/2x,1/4","1/2x,-1/2x,1/4","-1/2x,-1/2x,3/4","1/2x,1/2x,3/4","1/2x,-1/2x,3/4","-1/2x,1/2x,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 32 },{ "coord": [ "0,x,1/4","0,-x,1/4","-x,0,1/4","x,0,1/4","0,-x,3/4","0,x,3/4","x,0,3/4","-x,0,3/4" ],"desc": "..2","geom": "line","label": "i","mult": 32 },{ "coord": [ "3/4,x+1/4,0","3/4,-x+1/4,0","-x+1/4,1/4,0","x+1/4,1/4,0" ],"desc": "m.2 m","geom": "line","label": "h","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,-z+1/2","1/4,1/4,-z+1/2" ],"desc": "2.m m","geom": "line","label": "g","mult": 16 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "4..","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,1/2,1/4","3/4,1/2,1/4" ],"desc": "..2/m","geom": "point","label": "e","mult": 16 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "m.m m","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "4/m..","geom": "point","label": "c","mult": 8 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,1/4" ],"desc": "-42m","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "422","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "140:a+b,-a+b,c","det": 2.0,"hm": "F 4/m m c","id": "F_4/m_m_c","more": true,"sg": 140,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 140 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_141.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_141.json new file mode 100755 index 000000000000..eba28378781e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_141.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "141:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","-x+1/2,y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","y+1/4,-x+1/4,z+3/4","-x+1/2,y,-z+1/2","x,-y,-z","y+1/4,x+3/4,-z+1/4","-y+1/4,-x+1/4,-z+3/4","-x,-y,-z","x+1/2,y,-z+1/2","y+3/4,-x+1/4,-z+3/4","-y+3/4,x+3/4,-z+1/4","x+1/2,-y,z+1/2","-x,y,z","-y+3/4,-x+1/4,z+3/4","y+3/4,x+3/4,z+1/4","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-y+3/4,x+1/4,z+3/4","y+3/4,-x+3/4,z+1/4","-x,y+1/2,-z","x+1/2,-y+1/2,-z+1/2","y+3/4,x+1/4,-z+3/4","-y+3/4,-x+3/4,-z+1/4","-x+1/2,-y+1/2,-z+1/2","x,y+1/2,-z","y+1/4,-x+3/4,-z+1/4","-y+1/4,x+1/4,-z+3/4","x,-y+1/2,z","-x+1/2,y+1/2,z+1/2","-y+1/4,-x+3/4,z+1/4","y+1/4,x+1/4,z+3/4" ],"hall": "-I 4bd 2","hm": "I 41/a m d :2","id": "I_41/a_m_d_2","jmolId": "141:2","set": 1,"sg": 141,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 32 },{ "coord": [ "0,y,z","1/2,-y,z+1/2","-y+1/4,3/4,z+1/4","y+1/4,1/4,z+3/4","1/2,y,-z+1/2","0,-y,-z","y+1/4,3/4,-z+1/4","-y+1/4,1/4,-z+3/4" ],"desc": ".m.","geom": "plane","label": "h","mult": 16 },{ "coord": [ "x,x+1/4,7/8","-x+1/2,-x+3/4,3/8","-x,x+3/4,1/8","x+1/2,-x+1/4,5/8","-x,-x+3/4,1/8","x+1/2,x+1/4,5/8","x,-x+1/4,7/8","-x+1/2,x+3/4,3/8" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "x,0,0","-x+1/2,0,1/2","1/4,x+3/4,1/4","1/4,-x+1/4,3/4","-x,0,0","x+1/2,0,1/2","3/4,-x+1/4,3/4","3/4,x+3/4,1/4" ],"desc": ".2.","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,1/4,z","0,3/4,z+1/4","1/2,1/4,-z+1/2","1/2,3/4,-z+1/4" ],"desc": "2mm .","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,1/2","1/2,0,0","1/4,3/4,3/4","1/4,1/4,1/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,0,0","1/2,0,1/2","1/4,3/4,1/4","1/4,1/4,3/4" ],"desc": ".2/m.","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/4,3/8","0,3/4,5/8" ],"desc": "-4m2","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,3/4,1/8","1/2,3/4,3/8" ],"desc": "-4m2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "141:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x+1/4,-y+1/4,z+1/2","-y+3/4,x+1/2,z+1/4","-y+1/4,-x+1/4,-z+1/2","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+3/4,-y+3/4,z+1/2","-y+1/4,x,z+1/4","-y+3/4,-x+3/4,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/4,-y+1/4,z+1/2","-y+3/4,x+1/2,z+1/4","y,-x+1/4,z+3/4","-y+1/4,-x+1/4,-z+1/2","y,x,-z","-x+3/4,y+1/2,-z+1/4","x,-y+1/4,-z+3/4","-x,-y,-z","x+1/4,y+1/4,-z+1/2","y+1/4,-x+1/2,-z+3/4","-y,x+3/4,-z+1/4","y+1/4,x+1/4,z+1/2","-y,-x,z","x+1/4,-y+1/2,z+3/4","-x,y+3/4,z+1/4","x,y+1/2,z+1/2","-x+3/4,-y+1/4,z","-y+1/4,x+1/2,z+3/4","y,-x+3/4,z+1/4","-y+3/4,-x+1/4,-z","y,x+1/2,-z+1/2","-x+1/4,y+1/2,-z+3/4","x,-y+3/4,-z+1/4","-x,-y+1/2,-z+1/2","x+3/4,y+1/4,-z","y+3/4,-x+1/2,-z+1/4","-y,x+1/4,-z+3/4","y+3/4,x+1/4,z","-y,-x+1/2,z+1/2","x+3/4,-y+1/2,z+1/4","-x,y+1/4,z+3/4","x+1/2,y+1/2,z","-x+3/4,-y+3/4,z+1/2","-y+1/4,x,z+1/4","y+1/2,-x+3/4,z+3/4","-y+3/4,-x+3/4,-z+1/2","y+1/2,x+1/2,-z","-x+1/4,y,-z+1/4","x+1/2,-y+3/4,-z+3/4","-x+1/2,-y+1/2,-z","x+3/4,y+3/4,-z+1/2","y+3/4,-x,-z+3/4","-y+1/2,x+5/4,-z+1/4","y+3/4,x+3/4,z+1/2","-y+1/2,-x+1/2,z","x+3/4,-y,z+3/4","-x+1/2,y+5/4,z+1/4","x+1/2,y,z+1/2","-x+1/4,-y+3/4,z","-y+3/4,x,z+3/4","y+1/2,-x+5/4,z+1/4","-y+1/4,-x+3/4,-z","y+1/2,x,-z+1/2","-x+3/4,y,-z+3/4","x+1/2,-y+5/4,-z+1/4","-x+1/2,-y,-z+1/2","x+1/4,y+3/4,-z","y+1/4,-x,-z+1/4","-y+1/2,x+3/4,-z+3/4","y+1/4,x+3/4,z","-y+1/2,-x,z+1/2","x+1/4,-y,z+1/4","-x+1/2,y+3/4,z+3/4" ],"hm": "F 41/d d m :2","id": "F_41/d_d_m_2","jmolId": "141:f","set": 2,"sg": 141,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 64 },{ "coord": [ "-1/2y,1/2y,z","1/2y+1/4,-1/2y+1/4,z+1/2","-1/2y+3/4,-1/2y+1/2,z+1/4","1/2y,1/2y+1/4,z+3/4","-1/2y+1/4,1/2y+1/4,-z+1/2","1/2y,-1/2y,-z","1/2y+3/4,1/2y+1/2,-z+1/4","-1/2y,-1/2y+1/4,-z+3/4" ],"desc": ".m.","geom": "plane","label": "h","mult": 32 },{ "coord": [ "7/8,x+1/8,7/8","7/8,-x+5/8,3/8","-x+5/8,3/8,1/8","x+1/8,3/8,5/8","5/8,-x+3/8,1/8","1/8,x+3/8,5/8","x+7/8,1/8,7/8","-x+7/8,5/8,3/8" ],"desc": "..2","geom": "line","label": "g","mult": 32 },{ "coord": [ "1/2x,1/2x,0","-1/2x+1/4,-1/2x+1/4,1/2","-1/2x+3/4,1/2x+1/2,1/4","1/2x,-1/2x+1/4,3/4","-1/2x,-1/2x,0","1/2x+1/4,1/2x+1/4,1/2","1/2x+1/4,-1/2x+1/2,3/4","-1/2x,1/2x+3/4,1/4" ],"desc": ".2.","geom": "line","label": "f","mult": 32 },{ "coord": [ "7/8,1/8,z","5/8,3/8,z+1/4","1/8,3/8,-z+1/2","7/8,5/8,-z+1/4" ],"desc": "2mm .","geom": "line","label": "e","mult": 16 },{ "coord": [ "0,0,1/2","1/4,1/4,0","3/4,1/2,3/4","0,1/4,1/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 16 },{ "coord": [ "0,0,0","1/4,1/4,1/2","3/4,1/2,1/4","0,1/4,3/4" ],"desc": ".2/m.","geom": "point","label": "c","mult": 16 },{ "coord": [ "7/8,1/8,3/8","5/8,3/8,5/8" ],"desc": "-4m2","geom": "point","label": "b","mult": 8 },{ "coord": [ "5/8,3/8,1/8","7/8,5/8,3/8" ],"desc": "-4m2","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "141:a,b,c;0,1/4,-1/8","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","-x+1/2,y,-z+3/4","-x,-y+1/2,-z+1/4","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","y+1/2,-x,z+3/4","-x+1/2,y,-z+3/4","x,-y+1/2,-z+1/4","y+1/2,x+1/2,-z+1/2","-y,-x,-z","-x,-y+1/2,-z+1/4","x+1/2,y,-z+3/4","y,-x,-z","-y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x,y,z","-y+1/2,-x,z+3/4","y,x+1/2,z+1/4","x+1/2,y+1/2,z+1/2","-x,-y,z","-y+1/2,x,z+3/4","y,-x+1/2,z+1/4","-x,y+1/2,-z+1/4","x+1/2,-y,-z+3/4","y,x,-z","-y+1/2,-x+1/2,-z+1/2","-x+1/2,-y,-z+3/4","x,y+1/2,-z+1/4","y+1/2,-x+1/2,-z+1/2","-y,x,-z","x,-y,z","-x+1/2,y+1/2,z+1/2","-y,-x+1/2,z+1/4","y+1/2,x,z+3/4" ],"hall": "I 4bw 2bw -1bw","hm": "I 41/a m d :1","id": "I_41/a_m_d_1","jmolId": "141:1","set": 3,"sg": 141,"trm": "a,b,c;0,1/4,-1/8","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 32 },{ "coord": [ "0,y+3/4,z+1/8","1/2,-y+3/4,z+5/8","-y+1/4,1/2,z+3/8","y+1/4,0,z+7/8","1/2,y+3/4,-z+5/8","0,-y+3/4,-z+1/8","y+1/4,1/2,-z+3/8","-y+1/4,0,-z+7/8" ],"desc": ".m.","geom": "plane","label": "h","mult": 16 },{ "coord": [ "x,x,0","-x+1/2,-x+1/2,1/2","-x,x+1/2,1/4","x+1/2,-x,3/4","-x,-x+1/2,1/4","x+1/2,x,3/4","x,-x,0","-x+1/2,x+1/2,1/2" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "x,3/4,1/8","-x+1/2,3/4,5/8","1/4,x+1/2,3/8","1/4,-x,7/8","-x,3/4,1/8","x+1/2,3/4,5/8","3/4,-x,7/8","3/4,x+1/2,3/8" ],"desc": ".2.","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,0,z+1/8","0,1/2,z+3/8","1/2,0,-z+5/8","1/2,1/2,-z+3/8" ],"desc": "2mm .","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,3/4,5/8","1/2,3/4,1/8","1/4,1/2,7/8","1/4,0,3/8" ],"desc": ".2/m.","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,3/4,1/8","1/2,3/4,5/8","1/4,1/2,3/8","1/4,0,7/8" ],"desc": ".2/m.","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,3/4" ],"desc": "-4m2","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "141:a-b,a+b,c;0,1/4,-1/8","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-y+3/4,x+1/4,z+1/4","-y+1/4,-x+1/4,-z+3/4","-x+1/4,-y+3/4,-z+1/4","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x,-y+1/2,z+1/2","-y+1/4,x+3/4,z+1/4","-y+3/4,-x+3/4,-z+3/4","-x+3/4,-y+1/4,-z+1/4","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-y+3/4,x+1/4,z+1/4","y+1/4,-x+1/4,z+3/4","-y+1/4,-x+1/4,-z+3/4","y+1/4,x+3/4,-z+1/4","-x,y+1/2,-z+1/2","x,-y,-z","-x+1/4,-y+3/4,-z+1/4","x+1/4,y+1/4,-z+3/4","y+1/2,-x+1/2,-z","-y,x+1/2,-z+1/2","y+1/2,x,z+1/2","-y,-x,z","x+1/4,-y+1/4,z+3/4","-x+1/4,y+3/4,z+1/4","x,y+1/2,z+1/2","-x,-y,z","-y+1/4,x+1/4,z+3/4","y+1/4,-x+3/4,z+1/4","-y+3/4,-x+1/4,-z+1/4","y+1/4,x+1/4,-z+3/4","-x+1/2,y+1/2,-z","x,-y+1/2,-z+1/2","-x+1/4,-y+1/4,-z+3/4","x+3/4,y+1/4,-z+1/4","y,-x+1/2,-z+1/2","-y,x,-z","y,x,z","-y,-x+1/2,z+1/2","x+3/4,-y+1/4,z+1/4","-x+1/4,y+1/4,z+3/4","x+1/2,y+1/2,z","-x,-y+1/2,z+1/2","-y+1/4,x+3/4,z+1/4","y+3/4,-x+3/4,z+3/4","-y+3/4,-x+3/4,-z+3/4","y+3/4,x+1/4,-z+1/4","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z","-x+3/4,-y+1/4,-z+1/4","x+3/4,y+3/4,-z+3/4","y,-x,-z","-y+1/2,x,-z+1/2","y,x+1/2,z+1/2","-y+1/2,-x+1/2,z","x+3/4,-y+3/4,z+3/4","-x+3/4,y+5/4,z+1/4","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-y+3/4,x+3/4,z+3/4","y+3/4,-x+5/4,z+1/4","-y+1/4,-x+3/4,-z+1/4","y+3/4,x+3/4,-z+3/4","-x,y,-z","x+1/2,-y,-z+1/2","-x+3/4,-y+3/4,-z+3/4","x+1/4,y+3/4,-z+1/4","y+1/2,-x,-z+1/2","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z","-y+1/2,-x,z+1/2","x+1/4,-y+3/4,z+1/4","-x+3/4,y+3/4,z+3/4" ],"hm": "F 41/d d m :1","id": "F_41/d_d_m_1","jmolId": "141:f","set": 4,"sg": 141,"trm": "a-b,a+b,c;0,1/4,-1/8","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 64 },{ "coord": [ "-1/2y+1/8,1/2y+7/8,z+1/8","1/2y+3/8,-1/2y+1/8,z+5/8","-1/2y+7/8,-1/2y+3/8,z+3/8","1/2y+1/8,1/2y+1/8,z+7/8","-1/2y+3/8,1/2y+1/8,-z+5/8","1/2y+1/8,-1/2y+7/8,-z+1/8","1/2y+7/8,1/2y+3/8,-z+3/8","-1/2y+1/8,-1/2y+1/8,-z+7/8" ],"desc": ".m.","geom": "plane","label": "h","mult": 32 },{ "coord": [ "0,x,0","0,-x+1/2,1/2","-x+3/4,1/4,1/4","x+1/4,1/4,3/4","3/4,-x+1/4,1/4","1/4,x+1/4,3/4","x,0,0","-x,1/2,1/2" ],"desc": "..2","geom": "line","label": "g","mult": 32 },{ "coord": [ "1/2x+1/8,1/2x+7/8,1/8","-1/2x+3/8,-1/2x+1/8,5/8","-1/2x+7/8,1/2x+3/8,3/8","1/2x+1/8,-1/2x+1/8,7/8","-1/2x+1/8,-1/2x+7/8,1/8","1/2x+3/8,1/2x+1/8,5/8","1/2x+3/8,-1/2x+3/8,7/8","-1/2x+1/8,1/2x+5/8,3/8" ],"desc": ".2.","geom": "line","label": "f","mult": 32 },{ "coord": [ "0,0,z+1/8","3/4,1/4,z+3/8","1/4,1/4,-z+5/8","0,1/2,-z+3/8" ],"desc": "2mm .","geom": "line","label": "e","mult": 16 },{ "coord": [ "1/8,7/8,5/8","3/8,1/8,1/8","7/8,3/8,7/8","1/8,1/8,3/8" ],"desc": ".2/m.","geom": "point","label": "d","mult": 16 },{ "coord": [ "1/8,7/8,1/8","3/8,1/8,5/8","7/8,3/8,3/8","1/8,1/8,7/8" ],"desc": ".2/m.","geom": "point","label": "c","mult": 16 },{ "coord": [ "0,0,1/2","3/4,1/4,3/4" ],"desc": "-4m2","geom": "point","label": "b","mult": 8 },{ "coord": [ "3/4,1/4,1/4","0,1/2,1/2" ],"desc": "-4m2","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "141:a+b,-a+b,c","det": 2.0,"hm": "F 41/d d m :2","id": "F_41/d_d_m_2","more": true,"sg": 141,"trm": "a+b,-a+b,c" },{ "clegId": "141:a+b,-a+b,c;0,1/4,-1/8","det": 2.0,"hm": "F 41/d d m :1","id": "F_41/d_d_m_1","more": true,"sg": 141,"trm": "a+b,-a+b,c;0,1/4,-1/8" } ],"n": 6,"sg": 141 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_142.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_142.json new file mode 100755 index 000000000000..07be3e733f4f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_142.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "142:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","-x+1/2,y,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","y+1/4,-x+1/4,z+3/4","-x+1/2,y,-z","x,-y,-z+1/2","y+1/4,x+3/4,-z+3/4","-y+1/4,-x+1/4,-z+1/4","-x,-y,-z","x+1/2,y,-z+1/2","y+3/4,-x+1/4,-z+3/4","-y+3/4,x+3/4,-z+1/4","x+1/2,-y,z","-x,y,z+1/2","-y+3/4,-x+1/4,z+1/4","y+3/4,x+3/4,z+3/4","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-y+3/4,x+1/4,z+3/4","y+3/4,-x+3/4,z+1/4","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","y+3/4,x+1/4,-z+1/4","-y+3/4,-x+3/4,-z+3/4","-x+1/2,-y+1/2,-z+1/2","x,y+1/2,-z","y+1/4,-x+3/4,-z+1/4","-y+1/4,x+1/4,-z+3/4","x,-y+1/2,z+1/2","-x+1/2,y+1/2,z","-y+1/4,-x+3/4,z+3/4","y+1/4,x+1/4,z+1/4" ],"hall": "-I 4bd 2c","hm": "I 41/a c d :2","id": "I_41/a_c_d_2","jmolId": "142:2","set": 1,"sg": 142,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 32 },{ "coord": [ "x,x+1/4,1/8","-x+1/2,-x+3/4,5/8","-x,x+3/4,3/8","x+1/2,-x+1/4,7/8","-x,-x+3/4,7/8","x+1/2,x+1/4,3/8","x,-x+1/4,5/8","-x+1/2,x+3/4,1/8" ],"desc": "..2","geom": "line","label": "f","mult": 16 },{ "coord": [ "x,0,1/4","-x+1/2,0,3/4","1/4,x+3/4,1/2","1/4,-x+1/4,0","-x,0,3/4","x+1/2,0,1/4","3/4,-x+1/4,1/2","3/4,x+3/4,0" ],"desc": ".2.","geom": "line","label": "e","mult": 16 },{ "coord": [ "0,1/4,z","0,3/4,z+1/4","1/2,1/4,-z","1/2,3/4,-z+3/4","0,3/4,-z","0,1/4,-z+3/4","1/2,3/4,z","1/2,1/4,z+1/4" ],"desc": "2..","geom": "line","label": "d","mult": 16 },{ "coord": [ "0,0,0","1/2,0,1/2","1/4,3/4,1/4","1/4,1/4,3/4","1/2,0,0","0,0,1/2","1/4,3/4,3/4","1/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 16 },{ "coord": [ "0,1/4,1/8","0,3/4,3/8","0,3/4,7/8","0,1/4,5/8" ],"desc": "2.2 2","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,1/4,3/8","0,3/4,5/8","1/2,1/4,5/8","1/2,3/4,3/8" ],"desc": "-4..","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "142:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x+1/4,-y+1/4,z+1/2","-y+3/4,x+1/2,z+1/4","-y+1/4,-x+1/4,-z","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+3/4,-y+3/4,z+1/2","-y+1/4,x,z+1/4","-y+3/4,-x+3/4,-z","-x+1/2,-y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/4,-y+1/4,z+1/2","-y+3/4,x+1/2,z+1/4","y,-x+1/4,z+3/4","-y+1/4,-x+1/4,-z","y,x,-z+1/2","-x+3/4,y+1/2,-z+3/4","x,-y+1/4,-z+1/4","-x,-y,-z","x+1/4,y+1/4,-z+1/2","y+1/4,-x+1/2,-z+3/4","-y,x+3/4,-z+1/4","y+1/4,x+1/4,z","-y,-x,z+1/2","x+1/4,-y+1/2,z+1/4","-x,y+3/4,z+3/4","x,y+1/2,z+1/2","-x+3/4,-y+1/4,z","-y+1/4,x+1/2,z+3/4","y,-x+3/4,z+1/4","-y+3/4,-x+1/4,-z+1/2","y,x+1/2,-z","-x+1/4,y+1/2,-z+1/4","x,-y+3/4,-z+3/4","-x,-y+1/2,-z+1/2","x+3/4,y+1/4,-z","y+3/4,-x+1/2,-z+1/4","-y,x+1/4,-z+3/4","y+3/4,x+1/4,z+1/2","-y,-x+1/2,z","x+3/4,-y+1/2,z+3/4","-x,y+1/4,z+1/4","x+1/2,y+1/2,z","-x+3/4,-y+3/4,z+1/2","-y+1/4,x,z+1/4","y+1/2,-x+3/4,z+3/4","-y+3/4,-x+3/4,-z","y+1/2,x+1/2,-z+1/2","-x+1/4,y,-z+3/4","x+1/2,-y+3/4,-z+1/4","-x+1/2,-y+1/2,-z","x+3/4,y+3/4,-z+1/2","y+3/4,-x,-z+3/4","-y+1/2,x+5/4,-z+1/4","y+3/4,x+3/4,z","-y+1/2,-x+1/2,z+1/2","x+3/4,-y,z+1/4","-x+1/2,y+5/4,z+3/4","x+1/2,y,z+1/2","-x+1/4,-y+3/4,z","-y+3/4,x,z+3/4","y+1/2,-x+5/4,z+1/4","-y+1/4,-x+3/4,-z+1/2","y+1/2,x,-z","-x+3/4,y,-z+1/4","x+1/2,-y+5/4,-z+3/4","-x+1/2,-y,-z+1/2","x+1/4,y+3/4,-z","y+1/4,-x,-z+1/4","-y+1/2,x+3/4,-z+3/4","y+1/4,x+3/4,z+1/2","-y+1/2,-x,z","x+1/4,-y,z+3/4","-x+1/2,y+3/4,z+1/4" ],"hm": "F 41/d d c :2","id": "F_41/d_d_c_2","jmolId": "142:f","set": 2,"sg": 142,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 64 },{ "coord": [ "7/8,x+1/8,1/8","7/8,-x+5/8,5/8","-x+5/8,3/8,3/8","x+1/8,3/8,7/8","5/8,-x+3/8,7/8","1/8,x+3/8,3/8","x+7/8,1/8,5/8","-x+7/8,5/8,1/8" ],"desc": "..2","geom": "line","label": "f","mult": 32 },{ "coord": [ "1/2x,1/2x,1/4","-1/2x+1/4,-1/2x+1/4,3/4","-1/2x+3/4,1/2x+1/2,1/2","1/2x,-1/2x+1/4,0","-1/2x,-1/2x,3/4","1/2x+1/4,1/2x+1/4,1/4","1/2x+1/4,-1/2x+1/2,1/2","-1/2x,1/2x+3/4,0" ],"desc": ".2.","geom": "line","label": "e","mult": 32 },{ "coord": [ "7/8,1/8,z","5/8,3/8,z+1/4","1/8,3/8,-z","7/8,5/8,-z+3/4","5/8,3/8,-z","7/8,1/8,-z+3/4","7/8,5/8,z","1/8,3/8,z+1/4" ],"desc": "2..","geom": "line","label": "d","mult": 32 },{ "coord": [ "0,0,0","1/4,1/4,1/2","3/4,1/2,1/4","0,1/4,3/4","1/4,1/4,0","0,0,1/2","3/4,1/2,3/4","0,1/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 32 },{ "coord": [ "7/8,1/8,1/8","5/8,3/8,3/8","5/8,3/8,7/8","7/8,1/8,5/8" ],"desc": "2.2 2","geom": "point","label": "b","mult": 16 },{ "coord": [ "7/8,1/8,3/8","5/8,3/8,5/8","1/8,3/8,5/8","7/8,5/8,3/8" ],"desc": "-4..","geom": "point","label": "a","mult": 16 } ] } },{ "clegId": "142:a,b,c;0,1/4,-1/8","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","-x+1/2,y,-z+1/4","-x,-y+1/2,-z+1/4","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","y+1/2,-x,z+3/4","-x+1/2,y,-z+1/4","x,-y+1/2,-z+3/4","y+1/2,x+1/2,-z","-y,-x,-z+1/2","-x,-y+1/2,-z+1/4","x+1/2,y,-z+3/4","y,-x,-z","-y+1/2,x+1/2,-z+1/2","x+1/2,-y+1/2,z","-x,y,z+1/2","-y+1/2,-x,z+1/4","y,x+1/2,z+3/4","x+1/2,y+1/2,z+1/2","-x,-y,z","-y+1/2,x,z+3/4","y,-x+1/2,z+1/4","-x,y+1/2,-z+3/4","x+1/2,-y,-z+1/4","y,x,-z+1/2","-y+1/2,-x+1/2,-z","-x+1/2,-y,-z+3/4","x,y+1/2,-z+1/4","y+1/2,-x+1/2,-z+1/2","-y,x,-z","x,-y,z+1/2","-x+1/2,y+1/2,z","-y,-x+1/2,z+3/4","y+1/2,x,z+1/4" ],"hall": "I 4bw 2aw -1bw","hm": "I 41/a c d :1","id": "I_41/a_c_d_1","jmolId": "142:1","set": 3,"sg": 142,"trm": "a,b,c;0,1/4,-1/8","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 32 },{ "coord": [ "x,x,1/4","-x+1/2,-x+1/2,3/4","-x,x+1/2,1/2","x+1/2,-x,0","-x,-x+1/2,0","x+1/2,x,1/2","x,-x,3/4","-x+1/2,x+1/2,1/4" ],"desc": "..2","geom": "line","label": "f","mult": 16 },{ "coord": [ "x,3/4,3/8","-x+1/2,3/4,7/8","1/4,x+1/2,5/8","1/4,-x,1/8","-x,3/4,7/8","x+1/2,3/4,3/8","3/4,-x,5/8","3/4,x+1/2,1/8" ],"desc": ".2.","geom": "line","label": "e","mult": 16 },{ "coord": [ "0,0,z+1/8","0,1/2,z+3/8","1/2,0,-z+1/8","1/2,1/2,-z+7/8","0,1/2,-z+1/8","0,0,-z+7/8","1/2,1/2,z+1/8","1/2,0,z+3/8" ],"desc": "2..","geom": "line","label": "d","mult": 16 },{ "coord": [ "0,3/4,1/8","1/2,3/4,5/8","1/4,1/2,3/8","1/4,0,7/8","1/2,3/4,1/8","0,3/4,5/8","1/4,1/2,7/8","1/4,0,3/8" ],"desc": "-1","geom": "point","label": "c","mult": 16 },{ "coord": [ "0,0,1/4","0,1/2,1/2","0,1/2,0","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,3/4","1/2,0,3/4","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "142:a-b,a+b,c;0,1/4,-1/8","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-y+3/4,x+1/4,z+1/4","-y+1/4,-x+1/4,-z+1/4","-x+1/4,-y+3/4,-z+1/4","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x,-y+1/2,z+1/2","-y+1/4,x+3/4,z+1/4","-y+3/4,-x+3/4,-z+1/4","-x+3/4,-y+1/4,-z+1/4","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-y+3/4,x+1/4,z+1/4","y+1/4,-x+1/4,z+3/4","-y+1/4,-x+1/4,-z+1/4","y+1/4,x+3/4,-z+3/4","-x,y+1/2,-z","x,-y,-z+1/2","-x+1/4,-y+3/4,-z+1/4","x+1/4,y+1/4,-z+3/4","y+1/2,-x+1/2,-z","-y,x+1/2,-z+1/2","y+1/2,x,z","-y,-x,z+1/2","x+1/4,-y+1/4,z+1/4","-x+1/4,y+3/4,z+3/4","x,y+1/2,z+1/2","-x,-y,z","-y+1/4,x+1/4,z+3/4","y+1/4,-x+3/4,z+1/4","-y+3/4,-x+1/4,-z+3/4","y+1/4,x+1/4,-z+1/4","-x+1/2,y+1/2,-z+1/2","x,-y+1/2,-z","-x+1/4,-y+1/4,-z+3/4","x+3/4,y+1/4,-z+1/4","y,-x+1/2,-z+1/2","-y,x,-z","y,x,z+1/2","-y,-x+1/2,z","x+3/4,-y+1/4,z+3/4","-x+1/4,y+1/4,z+1/4","x+1/2,y+1/2,z","-x,-y+1/2,z+1/2","-y+1/4,x+3/4,z+1/4","y+3/4,-x+3/4,z+3/4","-y+3/4,-x+3/4,-z+1/4","y+3/4,x+1/4,-z+3/4","-x+1/2,y,-z","x+1/2,-y+1/2,-z+1/2","-x+3/4,-y+1/4,-z+1/4","x+3/4,y+3/4,-z+3/4","y,-x,-z","-y+1/2,x,-z+1/2","y,x+1/2,z","-y+1/2,-x+1/2,z+1/2","x+3/4,-y+3/4,z+1/4","-x+3/4,y+5/4,z+3/4","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-y+3/4,x+3/4,z+3/4","y+3/4,-x+5/4,z+1/4","-y+1/4,-x+3/4,-z+3/4","y+3/4,x+3/4,-z+1/4","-x,y,-z+1/2","x+1/2,-y,-z","-x+3/4,-y+3/4,-z+3/4","x+1/4,y+3/4,-z+1/4","y+1/2,-x,-z+1/2","-y+1/2,x+1/2,-z","y+1/2,x+1/2,z+1/2","-y+1/2,-x,z","x+1/4,-y+3/4,z+3/4","-x+3/4,y+3/4,z+1/4" ],"hm": "F 41/d d c :1","id": "F_41/d_d_c_1","jmolId": "142:f","set": 4,"sg": 142,"trm": "a-b,a+b,c;0,1/4,-1/8","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 64 },{ "coord": [ "0,x,1/4","0,-x+1/2,3/4","-x+3/4,1/4,1/2","x+1/4,1/4,0","3/4,-x+1/4,0","1/4,x+1/4,1/2","x,0,3/4","-x,1/2,1/4" ],"desc": "..2","geom": "line","label": "f","mult": 32 },{ "coord": [ "1/2x+1/8,1/2x+7/8,3/8","-1/2x+3/8,-1/2x+1/8,7/8","-1/2x+7/8,1/2x+3/8,5/8","1/2x+1/8,-1/2x+1/8,1/8","-1/2x+1/8,-1/2x+7/8,7/8","1/2x+3/8,1/2x+1/8,3/8","1/2x+3/8,-1/2x+3/8,5/8","-1/2x+1/8,1/2x+5/8,1/8" ],"desc": ".2.","geom": "line","label": "e","mult": 32 },{ "coord": [ "0,0,z+1/8","3/4,1/4,z+3/8","1/4,1/4,-z+1/8","0,1/2,-z+7/8","3/4,1/4,-z+1/8","0,0,-z+7/8","0,1/2,z+1/8","1/4,1/4,z+3/8" ],"desc": "2..","geom": "line","label": "d","mult": 32 },{ "coord": [ "1/8,7/8,1/8","3/8,1/8,5/8","7/8,3/8,3/8","1/8,1/8,7/8","3/8,1/8,1/8","1/8,7/8,5/8","7/8,3/8,7/8","1/8,1/8,3/8" ],"desc": "-1","geom": "point","label": "c","mult": 32 },{ "coord": [ "0,0,1/4","3/4,1/4,1/2","3/4,1/4,0","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "b","mult": 16 },{ "coord": [ "0,0,1/2","3/4,1/4,3/4","1/4,1/4,3/4","0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "a","mult": 16 } ] } },{ "clegId": "142:a+b,-a+b,c","det": 2.0,"hm": "F 41/d d c :2","id": "F_41/d_d_c_2","more": true,"sg": 142,"trm": "a+b,-a+b,c" },{ "clegId": "142:a+b,-a+b,c;0,1/4,-1/8","det": 2.0,"hm": "F 41/d d c :1","id": "F_41/d_d_c_1","more": true,"sg": 142,"trm": "a+b,-a+b,c;0,1/4,-1/8" } ],"n": 6,"sg": 142 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_143.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_143.json new file mode 100755 index 000000000000..0b2dab56f9b3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_143.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "143:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z" ],"hall": "P 3","hm": "P 3","id": "P_3","jmolId": "143","set": 1,"sg": 143,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 3 },{ "coord": [ "2/3,1/3,z" ],"desc": "3..","geom": "line","label": "c","mult": 1 },{ "coord": [ "1/3,2/3,z" ],"desc": "3..","geom": "line","label": "b","mult": 1 },{ "coord": [ "0,0,z" ],"desc": "3..","geom": "line","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 143 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_144.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_144.json new file mode 100755 index 000000000000..6acff18093d5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_144.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "144:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+1/3" ],"gp": [ "x,y,z","-y,x-y,z+1/3","-x+y,-x,z+2/3" ],"hall": "P 31","hm": "P 31","id": "P_31","jmolId": "144","set": 1,"sg": 144,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 144 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_145.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_145.json new file mode 100755 index 000000000000..6af88a9271d5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_145.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "145:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+2/3" ],"gp": [ "x,y,z","-y,x-y,z+2/3","-x+y,-x,z+1/3" ],"hall": "P 32","hm": "P 32","id": "P_32","jmolId": "145","set": 1,"sg": 145,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 145 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_146.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_146.json new file mode 100755 index 000000000000..c9a01e4fd8a5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_146.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "146:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","x+2/3,y+1/3,z+1/3" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","x+2/3,y+1/3,z+1/3","-y+2/3,x-y+1/3,z+1/3","-x+y+2/3,-x+1/3,z+1/3","x+1/3,y+2/3,z+2/3","-y+1/3,x-y+2/3,z+2/3","-x+y+1/3,-x+2/3,z+2/3" ],"hall": "R 3","hm": "R 3 :h","id": "R_3_h","jmolId": "146:h","set": 1,"sg": 146,"trm": "a,b,c","wpos": { "cent": [ "2/3,1/3,1/3","1/3,2/3,2/3" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 9 },{ "coord": [ "0,0,z" ],"desc": "3.","geom": "line","label": "a","mult": 3 } ] } },{ "clegId": "146:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ "x,y,z","z,x,y","x,y,z" ],"gp": [ "x,y,z","z,x,y","y,z,x" ],"hall": "P 3*","hm": "R 3 :r","id": "R_3_r","jmolId": "146:r","set": 2,"sg": 146,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 3 },{ "coord": [ "z,z,z" ],"desc": "3.","geom": "line","label": "a","mult": 1 } ] } } ],"n": 2,"sg": 146 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_147.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_147.json new file mode 100755 index 000000000000..e2c72ee8904d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_147.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "147:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,-z","y,-x+y,-z","x-y,x,-z" ],"hall": "-P 3","hm": "P -3","id": "P_-3","jmolId": "147","set": 1,"sg": 147,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 6 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 3 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "e","mult": 3 },{ "coord": [ "1/3,2/3,z","2/3,1/3,-z" ],"desc": "3..","geom": "line","label": "d","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3..","geom": "line","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-3..","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-3..","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 147 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_148.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_148.json new file mode 100755 index 000000000000..2d0e71228dc9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_148.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "148:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,-z","x+2/3,y+1/3,z+1/3" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,-z","y,-x+y,-z","x-y,x,-z","x+2/3,y+1/3,z+1/3","-y+2/3,x-y+1/3,z+1/3","-x+y+2/3,-x+1/3,z+1/3","-x+2/3,-y+1/3,-z+1/3","y+2/3,-x+y+1/3,-z+1/3","x-y+2/3,x+1/3,-z+1/3","x+1/3,y+2/3,z+2/3","-y+1/3,x-y+2/3,z+2/3","-x+y+1/3,-x+2/3,z+2/3","-x+1/3,-y+2/3,-z+2/3","y+1/3,-x+y+2/3,-z+2/3","x-y+1/3,x+2/3,-z+2/3" ],"hall": "-R 3","hm": "R -3 :h","id": "R_-3_h","jmolId": "148:h","set": 1,"sg": 148,"trm": "a,b,c","wpos": { "cent": [ "2/3,1/3,1/3","1/3,2/3,2/3" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 18 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "e","mult": 9 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 9 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3.","geom": "line","label": "c","mult": 6 },{ "coord": [ "0,0,1/2" ],"desc": "-3.","geom": "point","label": "b","mult": 3 },{ "coord": [ "0,0,0" ],"desc": "-3.","geom": "point","label": "a","mult": 3 } ] } },{ "clegId": "148:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ "x,y,z","z,x,y","-x,-y,-z","x,y,z" ],"gp": [ "x,y,z","z,x,y","y,z,x","-x,-y,-z","-z,-x,-y","-y,-z,-x" ],"hall": "-P 3*","hm": "R -3 :r","id": "R_-3_r","jmolId": "148:r","set": 2,"sg": 148,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 6 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 3 },{ "coord": [ "0,0,1/2","1/2,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 3 },{ "coord": [ "z,z,z","-z,-z,-z" ],"desc": "3.","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "-3.","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-3.","geom": "point","label": "a","mult": 1 } ] } } ],"n": 2,"sg": 148 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_149.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_149.json new file mode 100755 index 000000000000..6f3128b4dcee --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_149.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "149:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-y,-x,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-y,-x,-z","-x+y,y,-z","x,x-y,-z" ],"hall": "P 3 2","hm": "P 3 1 2","id": "P_3_1_2","jmolId": "149","set": 1,"sg": 149,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 6 },{ "coord": [ "x,-x,1/2","x,2x,1/2","-2x,-x,1/2" ],"desc": "..2","geom": "line","label": "k","mult": 3 },{ "coord": [ "x,-x,0","x,2x,0","-2x,-x,0" ],"desc": "..2","geom": "line","label": "j","mult": 3 },{ "coord": [ "2/3,1/3,z","2/3,1/3,-z" ],"desc": "3..","geom": "line","label": "i","mult": 2 },{ "coord": [ "1/3,2/3,z","1/3,2/3,-z" ],"desc": "3..","geom": "line","label": "h","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3..","geom": "line","label": "g","mult": 2 },{ "coord": [ "2/3,1/3,1/2" ],"desc": "3.2","geom": "point","label": "f","mult": 1 },{ "coord": [ "2/3,1/3,0" ],"desc": "3.2","geom": "point","label": "e","mult": 1 },{ "coord": [ "1/3,2/3,1/2" ],"desc": "3.2","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/3,2/3,0" ],"desc": "3.2","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "3.2","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "3.2","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 149 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_15.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_15.json new file mode 100755 index 000000000000..f2793eebdda9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_15.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "15:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z+1/2","-x,-y,-z","x,-y,z+1/2","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,-y+1/2,z+1/2" ],"hall": "-C 2yc","hm": "C 1 2/c 1","id": "C_1_2/c_1","jmolId": "15:b1","set": 1,"sg": 15,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "0,y,1/4","0,-y,3/4" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,1/2","3/4,1/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:-a-c,b,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z+1/2","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y,-z+1/2","-x,-y,-z","x+1/2,-y,z+1/2","x,y+1/2,z+1/2","-x+1/2,y+1/2,-z","-x,-y+1/2,-z+1/2","x+1/2,-y+1/2,z" ],"hall": "-A 2yab","hm": "A 1 2/n 1","id": "A_1_2/n_1","jmolId": "15:b2","set": 2,"sg": 15,"trm": "-a-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "3/4,y,3/4","1/4,-y,1/4" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,1/4,3/4","0,1/4,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/4,1/4","1/2,1/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:c,b,-a-c","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y,-z","-x,-y,-z","x+1/2,-y,z","x+1/2,y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "-I 2ya","hm": "I 1 2/a 1","id": "I_1_2/a_1","jmolId": "15:b3","set": 3,"sg": 15,"trm": "c,b,-a-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/4,y,0","3/4,-y,0" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,3/4","1/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,3/4","3/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:c,-b,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y,-z","-x,-y,-z","x+1/2,-y,z","x,y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "-A 2ya","hm": "A 1 2/a 1","id": "A_1_2/a_1","jmolId": "15:-b1","set": 4,"sg": 15,"trm": "c,-b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/4,-y,0","3/4,y,0" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,3/4,1/4","0,3/4,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,3/4,1/4","1/2,3/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:a,-b,-a-c","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x+1/2,y,-z+1/2","-x,-y,-z","x+1/2,-y,z+1/2","x+1/2,y+1/2,z","-x,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x,-y+1/2,z+1/2" ],"hall": "-C 2yac","hm": "C 1 2/n 1","id": "C_1_2/n_1","jmolId": "15:-b2","set": 5,"sg": 15,"trm": "a,-b,-a-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "3/4,-y,3/4","1/4,y,1/4" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "3/4,3/4,1/2","3/4,3/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,3/4,0","1/4,3/4,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:-a-c,-b,c","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z+1/2","-x,-y,-z","x,-y,z+1/2","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,-z+1/2","x+1/2,-y+1/2,z" ],"hall": "-I 2yc","hm": "I 1 2/c 1","id": "I_1_2/c_1","jmolId": "15:-b3","set": 6,"sg": 15,"trm": "-a-c,-b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "0,-y,1/4","0,y,3/4" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "3/4,3/4,1/4","1/4,3/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,3/4,3/4","1/4,3/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:c,a,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z","-x,-y,-z","x+1/2,y,-z","x,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "-A 2a","hm": "A 1 1 2/a","id": "A_1_1_2/a","jmolId": "15:c1","set": 7,"sg": 15,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/4,0,y","3/4,0,-y" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,1/4,1/4","0,3/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/4,1/4","1/2,3/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:a,-a-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x,-y,-z","x+1/2,y+1/2,-z","x+1/2,y,z+1/2","-x,-y+1/2,z+1/2","-x+1/2,-y,-z+1/2","x,y+1/2,-z+1/2" ],"hall": "-B 2ab","hm": "B 1 1 2/n","id": "B_1_1_2/n","jmolId": "15:c2","set": 8,"sg": 15,"trm": "a,-a-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "3/4,3/4,y","1/4,1/4,-y" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "3/4,1/2,1/4","3/4,0,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,0,1/4","1/4,1/2,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:-a-c,c,b","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z","-x,-y,-z","x,y+1/2,-z","x+1/2,y+1/2,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y,-z+1/2" ],"hall": "-I 2b","hm": "I 1 1 2/b","id": "I_1_1_2/b","jmolId": "15:c3","set": 9,"sg": 15,"trm": "-a-c,c,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "0,1/4,y","0,3/4,-y" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,3/4,1/4","1/4,3/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:a,c,-b","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z","-x,-y,-z","x,y+1/2,-z","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,-y,-z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "-B 2b","hm": "B 1 1 2/b","id": "B_1_1_2/b","jmolId": "15:-c1","set": 10,"sg": 15,"trm": "a,c,-b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "0,1/4,-y","0,3/4,y" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/2,3/4","3/4,0,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,0,3/4","3/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:-a-c,a,-b","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x,-y,-z","x+1/2,y+1/2,-z","x,y+1/2,z+1/2","-x+1/2,-y,z+1/2","-x,-y+1/2,-z+1/2","x+1/2,y,-z+1/2" ],"hall": "-A 2ab","hm": "A 1 1 2/n","id": "A_1_1_2/n","jmolId": "15:-c2","set": 11,"sg": 15,"trm": "-a-c,a,-b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "3/4,3/4,-y","1/4,1/4,y" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,3/4,3/4","0,3/4,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/4,3/4","1/2,1/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:c,-a-c,-b","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z","-x,-y,-z","x+1/2,y,-z","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x+1/2,-y+1/2,-z+1/2","x,y+1/2,-z+1/2" ],"hall": "-I 2a","hm": "I 1 1 2/a","id": "I_1_1_2/a","jmolId": "15:-c3","set": 12,"sg": 15,"trm": "c,-a-c,-b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/4,0,-y","3/4,0,y" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,3/4","1/4,1/4,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,3/4,3/4","3/4,1/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:b,c,a","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x,-y,-z","-x,y+1/2,z","x+1/2,y,z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y,-z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "-B 2xb","hm": "B 2/b 1 1","id": "B_2/b_1_1","jmolId": "15:a1","set": 13,"sg": 15,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "y,1/4,0","-y,3/4,0" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/2,1/4","1/4,0,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,0,1/4","1/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:b,a,-a-c","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,-z","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","x+1/2,-y,-z+1/2","-x+1/2,-y+1/2,-z","-x+1/2,y,z+1/2" ],"hall": "-C 2xac","hm": "C 2/n 1 1","id": "C_2/n_1_1","jmolId": "15:a2","set": 14,"sg": 15,"trm": "b,a,-a-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "y,3/4,3/4","-y,1/4,1/4" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,1/2","1/4,3/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,0","1/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:b,-a-c,c","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x,-y,-z","-x,y,z+1/2","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z+1/2","-x+1/2,y+1/2,z" ],"hall": "-I 2xc","hm": "I 2/c 1 1","id": "I_2/c_1_1","jmolId": "15:a3","set": 15,"sg": 15,"trm": "b,-a-c,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "y,0,1/4","-y,0,3/4" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,1/4","1/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,3/4,3/4","1/4,1/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:-b,a,c","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x,-y,-z","-x,y,z+1/2","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","-x+1/2,y+1/2,z+1/2" ],"hall": "-C 2xc","hm": "C 2/c 1 1","id": "C_2/c_1_1","jmolId": "15:-a1","set": 16,"sg": 15,"trm": "-b,a,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "-y,0,1/4","y,0,3/4" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,1/2","3/4,3/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,0","3/4,3/4,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:-b,-a-c,a","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,-z","-x,y+1/2,z+1/2","x+1/2,y,z+1/2","x+1/2,-y+1/2,-z","-x+1/2,-y,-z+1/2","-x+1/2,y+1/2,z" ],"hall": "-B 2xab","hm": "B 2/n 1 1","id": "B_2/n_1_1","jmolId": "15:-a2","set": 17,"sg": 15,"trm": "-b,-a-c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "-y,3/4,3/4","y,1/4,1/4" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "3/4,1/2,3/4","3/4,0,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,0,1/4","3/4,1/2,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "15:-b,c,-a-c","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x,-y,-z","-x,y+1/2,z","x+1/2,y+1/2,z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y+1/2,-z+1/2","-x+1/2,y,z+1/2" ],"hall": "-I 2xb","hm": "I 2/b 1 1","id": "I_2/b_1_1","jmolId": "15:-a3","set": 18,"sg": 15,"trm": "-b,c,-a-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "-y,1/4,0","y,3/4,0" ],"desc": "2","geom": "line","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,3/4","3/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,3/4,3/4","3/4,3/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } } ],"n": 18,"sg": 15 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_150.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_150.json new file mode 100755 index 000000000000..cf803f857fca --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_150.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "150:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","y,x,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","y,x,-z","x-y,-y,-z","-x,-x+y,-z" ],"hall": "P 3 2\"","hm": "P 3 2 1","id": "P_3_2_1","jmolId": "150","set": 1,"sg": 150,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 6 },{ "coord": [ "x,0,1/2","0,x,1/2","-x,-x,1/2" ],"desc": ".2.","geom": "line","label": "f","mult": 3 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0" ],"desc": ".2.","geom": "line","label": "e","mult": 3 },{ "coord": [ "1/3,2/3,z","2/3,1/3,-z" ],"desc": "3..","geom": "line","label": "d","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3..","geom": "line","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "32.","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "32.","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 150 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_151.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_151.json new file mode 100755 index 000000000000..d7150b61663d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_151.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "151:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+1/3","-y,-x,-z+2/3" ],"gp": [ "x,y,z","-y,x-y,z+1/3","-x+y,-x,z+2/3","-y,-x,-z+2/3","-x+y,y,-z+1/3","x,x-y,-z" ],"hall": "P 31 2 (0 0 4)","hm": "P 31 1 2","id": "P_31_1_2","jmolId": "151","set": 1,"sg": 151,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "x,-x,5/6","x,2x,1/6","-2x,-x,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 3 },{ "coord": [ "x,-x,1/3","x,2x,2/3","-2x,-x,0" ],"desc": "..2","geom": "line","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 151 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_152.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_152.json new file mode 100755 index 000000000000..b0b286a98259 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_152.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "152:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+1/3","y,x,-z" ],"gp": [ "x,y,z","-y,x-y,z+1/3","-x+y,-x,z+2/3","y,x,-z","x-y,-y,-z+2/3","-x,-x+y,-z+1/3" ],"hall": "P 31 2\"","hm": "P 31 2 1","id": "P_31_2_1","jmolId": "152","set": 1,"sg": 152,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "x,0,5/6","0,x,1/6","-x,-x,1/2" ],"desc": ".2.","geom": "line","label": "b","mult": 3 },{ "coord": [ "x,0,1/3","0,x,2/3","-x,-x,0" ],"desc": ".2.","geom": "line","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 152 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_153.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_153.json new file mode 100755 index 000000000000..415f5af92410 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_153.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "153:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+2/3","-y,-x,-z+1/3" ],"gp": [ "x,y,z","-y,x-y,z+2/3","-x+y,-x,z+1/3","-y,-x,-z+1/3","-x+y,y,-z+2/3","x,x-y,-z" ],"hall": "P 32 2 (0 0 2)","hm": "P 32 1 2","id": "P_32_1_2","jmolId": "153","set": 1,"sg": 153,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "x,-x,1/6","x,2x,5/6","-2x,-x,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 3 },{ "coord": [ "x,-x,2/3","x,2x,1/3","-2x,-x,0" ],"desc": "..2","geom": "line","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 153 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_154.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_154.json new file mode 100755 index 000000000000..0ffc05b3f8d2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_154.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "154:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+2/3","y,x,-z" ],"gp": [ "x,y,z","-y,x-y,z+2/3","-x+y,-x,z+1/3","y,x,-z","x-y,-y,-z+1/3","-x,-x+y,-z+2/3" ],"hall": "P 32 2\"","hm": "P 32 2 1","id": "P_32_2_1","jmolId": "154","set": 1,"sg": 154,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "x,0,1/6","0,x,5/6","-x,-x,1/2" ],"desc": ".2.","geom": "line","label": "b","mult": 3 },{ "coord": [ "x,0,2/3","0,x,1/3","-x,-x,0" ],"desc": ".2.","geom": "line","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 154 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_155.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_155.json new file mode 100755 index 000000000000..a50f480da9d0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_155.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "155:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","y,x,-z","x+2/3,y+1/3,z+1/3" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","y,x,-z","x-y,-y,-z","-x,-x+y,-z","x+2/3,y+1/3,z+1/3","-y+2/3,x-y+1/3,z+1/3","-x+y+2/3,-x+1/3,z+1/3","y+2/3,x+1/3,-z+1/3","x-y+2/3,-y+1/3,-z+1/3","-x+2/3,-x+y+1/3,-z+1/3","x+1/3,y+2/3,z+2/3","-y+1/3,x-y+2/3,z+2/3","-x+y+1/3,-x+2/3,z+2/3","y+1/3,x+2/3,-z+2/3","x-y+1/3,-y+2/3,-z+2/3","-x+1/3,-x+y+2/3,-z+2/3" ],"hall": "R 3 2\"","hm": "R 3 2 :h","id": "R_3_2_h","jmolId": "155:h","set": 1,"sg": 155,"trm": "a,b,c","wpos": { "cent": [ "2/3,1/3,1/3","1/3,2/3,2/3" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 18 },{ "coord": [ "x,0,1/2","0,x,1/2","-x,-x,1/2" ],"desc": ".2","geom": "line","label": "e","mult": 9 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0" ],"desc": ".2","geom": "line","label": "d","mult": 9 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3.","geom": "line","label": "c","mult": 6 },{ "coord": [ "0,0,1/2" ],"desc": "32","geom": "point","label": "b","mult": 3 },{ "coord": [ "0,0,0" ],"desc": "32","geom": "point","label": "a","mult": 3 } ] } },{ "clegId": "155:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ "x,y,z","z,x,y","-z,-y,-x","x,y,z" ],"gp": [ "x,y,z","z,x,y","y,z,x","-z,-y,-x","-y,-x,-z","-x,-z,-y" ],"hall": "P 3* 2","hm": "R 3 2 :r","id": "R_3_2_r","jmolId": "155:r","set": 2,"sg": 155,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 6 },{ "coord": [ "x+1/2,-x+1/2,1/2","1/2,x+1/2,-x+1/2","-x+1/2,1/2,x+1/2" ],"desc": ".2","geom": "line","label": "e","mult": 3 },{ "coord": [ "x,-x,0","0,x,-x","-x,0,x" ],"desc": ".2","geom": "line","label": "d","mult": 3 },{ "coord": [ "z,z,z","-z,-z,-z" ],"desc": "3.","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "32","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "32","geom": "point","label": "a","mult": 1 } ] } } ],"n": 2,"sg": 155 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_156.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_156.json new file mode 100755 index 000000000000..d9ee452cd16f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_156.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "156:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-y,-x,z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-y,-x,z","-x+y,y,z","x,x-y,z" ],"hall": "P 3 -2\"","hm": "P 3 m 1","id": "P_3_m_1","jmolId": "156","set": 1,"sg": 156,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 6 },{ "coord": [ "x,-x,z","x,2x,z","-2x,-x,z" ],"desc": ".m.","geom": "plane","label": "d","mult": 3 },{ "coord": [ "2/3,1/3,z" ],"desc": "3m.","geom": "line","label": "c","mult": 1 },{ "coord": [ "1/3,2/3,z" ],"desc": "3m.","geom": "line","label": "b","mult": 1 },{ "coord": [ "0,0,z" ],"desc": "3m.","geom": "line","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 156 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_157.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_157.json new file mode 100755 index 000000000000..0224c499fbf4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_157.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "157:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","y,x,z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","y,x,z","x-y,-y,z","-x,-x+y,z" ],"hall": "P 3 -2","hm": "P 3 1 m","id": "P_3_1_m","jmolId": "157","set": 1,"sg": 157,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 6 },{ "coord": [ "x,0,z","0,x,z","-x,-x,z" ],"desc": "..m","geom": "plane","label": "c","mult": 3 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z" ],"desc": "3..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z" ],"desc": "3.m","geom": "line","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 157 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_158.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_158.json new file mode 100755 index 000000000000..ae097a62679b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_158.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "158:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-y,-x,z+1/2" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2" ],"hall": "P 3 -2\"c","hm": "P 3 c 1","id": "P_3_c_1","jmolId": "158","set": 1,"sg": 158,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 6 },{ "coord": [ "2/3,1/3,z","2/3,1/3,z+1/2" ],"desc": "3..","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/3,2/3,z","1/3,2/3,z+1/2" ],"desc": "3..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "3..","geom": "line","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 158 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_159.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_159.json new file mode 100755 index 000000000000..aae43363067f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_159.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "159:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","y,x,z+1/2" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","y,x,z+1/2","x-y,-y,z+1/2","-x,-x+y,z+1/2" ],"hall": "P 3 -2c","hm": "P 3 1 c","id": "P_3_1_c","jmolId": "159","set": 1,"sg": 159,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z+1/2" ],"desc": "3..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "3..","geom": "line","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 159 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_16.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_16.json new file mode 100755 index 000000000000..96fd2b1e67d7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_16.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "16:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z" ],"hall": "P 2 2","hm": "P 2 2 2","id": "P_2_2_2","jmolId": "16","set": 1,"sg": 16,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "u","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z" ],"desc": "..2","geom": "line","label": "t","mult": 2 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "..2","geom": "line","label": "s","mult": 2 },{ "coord": [ "1/2,0,z","1/2,0,-z" ],"desc": "..2","geom": "line","label": "r","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "..2","geom": "line","label": "q","mult": 2 },{ "coord": [ "1/2,y,1/2","1/2,-y,1/2" ],"desc": ".2.","geom": "line","label": "p","mult": 2 },{ "coord": [ "1/2,y,0","1/2,-y,0" ],"desc": ".2.","geom": "line","label": "o","mult": 2 },{ "coord": [ "0,y,1/2","0,-y,1/2" ],"desc": ".2.","geom": "line","label": "n","mult": 2 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": ".2.","geom": "line","label": "m","mult": 2 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2" ],"desc": "2..","geom": "line","label": "l","mult": 2 },{ "coord": [ "x,1/2,0","-x,1/2,0" ],"desc": "2..","geom": "line","label": "k","mult": 2 },{ "coord": [ "x,0,1/2","-x,0,1/2" ],"desc": "2..","geom": "line","label": "j","mult": 2 },{ "coord": [ "x,0,0","-x,0,0" ],"desc": "2..","geom": "line","label": "i","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "222","geom": "point","label": "h","mult": 1 },{ "coord": [ "0,1/2,1/2" ],"desc": "222","geom": "point","label": "g","mult": 1 },{ "coord": [ "1/2,0,1/2" ],"desc": "222","geom": "point","label": "f","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "222","geom": "point","label": "e","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "222","geom": "point","label": "d","mult": 1 },{ "coord": [ "0,1/2,0" ],"desc": "222","geom": "point","label": "c","mult": 1 },{ "coord": [ "1/2,0,0" ],"desc": "222","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "222","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 16 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_160.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_160.json new file mode 100755 index 000000000000..aeae63613f6a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_160.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "160:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-y,-x,z","x+2/3,y+1/3,z+1/3" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-y,-x,z","-x+y,y,z","x,x-y,z","x+2/3,y+1/3,z+1/3","-y+2/3,x-y+1/3,z+1/3","-x+y+2/3,-x+1/3,z+1/3","-y+2/3,-x+1/3,z+1/3","-x+y+2/3,y+1/3,z+1/3","x+2/3,x-y+1/3,z+1/3","x+1/3,y+2/3,z+2/3","-y+1/3,x-y+2/3,z+2/3","-x+y+1/3,-x+2/3,z+2/3","-y+1/3,-x+2/3,z+2/3","-x+y+1/3,y+2/3,z+2/3","x+1/3,x-y+2/3,z+2/3" ],"hall": "R 3 -2\"","hm": "R 3 m :h","id": "R_3_m_h","jmolId": "160:h","set": 1,"sg": 160,"trm": "a,b,c","wpos": { "cent": [ "2/3,1/3,1/3","1/3,2/3,2/3" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 18 },{ "coord": [ "x,-x,z","x,2x,z","-2x,-x,z" ],"desc": ".m","geom": "plane","label": "b","mult": 9 },{ "coord": [ "0,0,z" ],"desc": "3m","geom": "line","label": "a","mult": 3 } ] } },{ "clegId": "160:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ "x,y,z","z,x,y","z,y,x","x,y,z" ],"gp": [ "x,y,z","z,x,y","y,z,x","z,y,x","y,x,z","x,z,y" ],"hall": "P 3* -2","hm": "R 3 m :r","id": "R_3_m_r","jmolId": "160:r","set": 2,"sg": 160,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "x+z,-2x+z,x+z","x+z,x+z,-2x+z","-2x+z,x+z,x+z" ],"desc": ".m","geom": "plane","label": "b","mult": 3 },{ "coord": [ "z,z,z" ],"desc": "3m","geom": "line","label": "a","mult": 1 } ] } } ],"n": 2,"sg": 160 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_161.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_161.json new file mode 100755 index 000000000000..ce81dddd1e43 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_161.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "161:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-y,-x,z+1/2","x+2/3,y+1/3,z+1/3" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2","x+2/3,y+1/3,z+1/3","-y+2/3,x-y+1/3,z+1/3","-x+y+2/3,-x+1/3,z+1/3","-y+2/3,-x+1/3,z+5/6","-x+y+2/3,y+1/3,z+5/6","x+2/3,x-y+1/3,z+5/6","x+1/3,y+2/3,z+2/3","-y+1/3,x-y+2/3,z+2/3","-x+y+1/3,-x+2/3,z+2/3","-y+1/3,-x+2/3,z+1/6","-x+y+1/3,y+2/3,z+1/6","x+1/3,x-y+2/3,z+1/6" ],"hall": "R 3 -2\"c","hm": "R 3 c :h","id": "R_3_c_h","jmolId": "161:h","set": 1,"sg": 161,"trm": "a,b,c","wpos": { "cent": [ "2/3,1/3,1/3","1/3,2/3,2/3" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 18 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "3.","geom": "line","label": "a","mult": 6 } ] } },{ "clegId": "161:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ "x,y,z","z,x,y","z+1/2,y+1/2,x+1/2","x,y,z" ],"gp": [ "x,y,z","z,x,y","y,z,x","z+1/2,y+1/2,x+1/2","y+1/2,x+1/2,z+1/2","x+1/2,z+1/2,y+1/2" ],"hall": "P 3* -2n","hm": "R 3 c :r","id": "R_3_c_r","jmolId": "161:r","set": 2,"sg": 161,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 6 },{ "coord": [ "z,z,z","z+1/2,z+1/2,z+1/2" ],"desc": "3.","geom": "line","label": "a","mult": 2 } ] } } ],"n": 2,"sg": 161 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_162.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_162.json new file mode 100755 index 000000000000..e47be2400123 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_162.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "162:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-y,-x,-z","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-y,-x,-z","-x+y,y,-z","x,x-y,-z","-x,-y,-z","y,-x+y,-z","x-y,x,-z","y,x,z","x-y,-y,z","-x,-x+y,z" ],"hall": "-P 3 2","hm": "P -3 1 m","id": "P_-3_1_m","jmolId": "162","set": 1,"sg": 162,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 12 },{ "coord": [ "x,0,z","0,x,z","-x,-x,z","0,-x,-z","-x,0,-z","x,x,-z" ],"desc": "..m","geom": "plane","label": "k","mult": 6 },{ "coord": [ "x,-x,1/2","x,2x,1/2","-2x,-x,1/2","-x,x,1/2","-x,-2x,1/2","2x,x,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 6 },{ "coord": [ "x,-x,0","x,2x,0","-2x,-x,0","-x,x,0","-x,-2x,0","2x,x,0" ],"desc": "..2","geom": "line","label": "i","mult": 6 },{ "coord": [ "1/3,2/3,z","1/3,2/3,-z","2/3,1/3,-z","2/3,1/3,z" ],"desc": "3..","geom": "line","label": "h","mult": 4 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "g","mult": 3 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "f","mult": 3 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3.m","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/3,2/3,1/2","2/3,1/3,1/2" ],"desc": "3.2","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,0","2/3,1/3,0" ],"desc": "3.2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-3.m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-3.m","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 162 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_163.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_163.json new file mode 100755 index 000000000000..efd0324d6bfd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_163.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "163:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-y,-x,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-y,-x,-z+1/2","-x+y,y,-z+1/2","x,x-y,-z+1/2","-x,-y,-z","y,-x+y,-z","x-y,x,-z","y,x,z+1/2","x-y,-y,z+1/2","-x,-x+y,z+1/2" ],"hall": "-P 3 2c","hm": "P -3 1 c","id": "P_-3_1_c","jmolId": "163","set": 1,"sg": 163,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 12 },{ "coord": [ "x,-x,1/4","x,2x,1/4","-2x,-x,1/4","-x,x,3/4","-x,-2x,3/4","2x,x,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 6 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0","0,1/2,1/2","1/2,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "g","mult": 6 },{ "coord": [ "1/3,2/3,z","1/3,2/3,-z+1/2","2/3,1/3,-z","2/3,1/3,z+1/2" ],"desc": "3..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "3..","geom": "line","label": "e","mult": 4 },{ "coord": [ "2/3,1/3,1/4","1/3,2/3,3/4" ],"desc": "3.2","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,1/4","2/3,1/3,3/4" ],"desc": "3.2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-3..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "3.2","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 163 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_164.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_164.json new file mode 100755 index 000000000000..6eac8f882fff --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_164.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "164:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","y,x,-z","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","y,x,-z","x-y,-y,-z","-x,-x+y,-z","-x,-y,-z","y,-x+y,-z","x-y,x,-z","-y,-x,z","-x+y,y,z","x,x-y,z" ],"hall": "-P 3 2\"","hm": "P -3 m 1","id": "P_-3_m_1","jmolId": "164","set": 1,"sg": 164,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "j","mult": 12 },{ "coord": [ "x,-x,z","x,2x,z","-2x,-x,z","-x,x,-z","2x,x,-z","-x,-2x,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 6 },{ "coord": [ "x,0,1/2","0,x,1/2","-x,-x,1/2","-x,0,1/2","0,-x,1/2","x,x,1/2" ],"desc": ".2.","geom": "line","label": "h","mult": 6 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0","-x,0,0","0,-x,0","x,x,0" ],"desc": ".2.","geom": "line","label": "g","mult": 6 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "f","mult": 3 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": ".2/m.","geom": "point","label": "e","mult": 3 },{ "coord": [ "1/3,2/3,z","2/3,1/3,-z" ],"desc": "3m.","geom": "line","label": "d","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3m.","geom": "line","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-3m.","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-3m.","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 164 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_165.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_165.json new file mode 100755 index 000000000000..f9d0a7f0b0a9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_165.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "165:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","y,x,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","y,x,-z+1/2","x-y,-y,-z+1/2","-x,-x+y,-z+1/2","-x,-y,-z","y,-x+y,-z","x-y,x,-z","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2" ],"hall": "-P 3 2\"c","hm": "P -3 c 1","id": "P_-3_c_1","jmolId": "165","set": 1,"sg": 165,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 12 },{ "coord": [ "x,0,1/4","0,x,1/4","-x,-x,1/4","-x,0,3/4","0,-x,3/4","x,x,3/4" ],"desc": ".2.","geom": "line","label": "f","mult": 6 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0","0,1/2,1/2","1/2,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,-z+1/2","2/3,1/3,-z","1/3,2/3,z+1/2" ],"desc": "3..","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "3..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-3..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "32.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 165 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_166.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_166.json new file mode 100755 index 000000000000..2bd67055177e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_166.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "166:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","y,x,-z","-x,-y,-z","x+2/3,y+1/3,z+1/3" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","y,x,-z","x-y,-y,-z","-x,-x+y,-z","-x,-y,-z","y,-x+y,-z","x-y,x,-z","-y,-x,z","-x+y,y,z","x,x-y,z","x+2/3,y+1/3,z+1/3","-y+2/3,x-y+1/3,z+1/3","-x+y+2/3,-x+1/3,z+1/3","y+2/3,x+1/3,-z+1/3","x-y+2/3,-y+1/3,-z+1/3","-x+2/3,-x+y+1/3,-z+1/3","-x+2/3,-y+1/3,-z+1/3","y+2/3,-x+y+1/3,-z+1/3","x-y+2/3,x+1/3,-z+1/3","-y+2/3,-x+1/3,z+1/3","-x+y+2/3,y+1/3,z+1/3","x+2/3,x-y+1/3,z+1/3","x+1/3,y+2/3,z+2/3","-y+1/3,x-y+2/3,z+2/3","-x+y+1/3,-x+2/3,z+2/3","y+1/3,x+2/3,-z+2/3","x-y+1/3,-y+2/3,-z+2/3","-x+1/3,-x+y+2/3,-z+2/3","-x+1/3,-y+2/3,-z+2/3","y+1/3,-x+y+2/3,-z+2/3","x-y+1/3,x+2/3,-z+2/3","-y+1/3,-x+2/3,z+2/3","-x+y+1/3,y+2/3,z+2/3","x+1/3,x-y+2/3,z+2/3" ],"hall": "-R 3 2\"","hm": "R -3 m :h","id": "R_-3_m_h","jmolId": "166:h","set": 1,"sg": 166,"trm": "a,b,c","wpos": { "cent": [ "2/3,1/3,1/3","1/3,2/3,2/3" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 36 },{ "coord": [ "x,-x,z","x,2x,z","-2x,-x,z","-x,x,-z","2x,x,-z","-x,-2x,-z" ],"desc": ".m","geom": "plane","label": "h","mult": 18 },{ "coord": [ "x,0,1/2","0,x,1/2","-x,-x,1/2","-x,0,1/2","0,-x,1/2","x,x,1/2" ],"desc": ".2","geom": "line","label": "g","mult": 18 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0","-x,0,0","0,-x,0","x,x,0" ],"desc": ".2","geom": "line","label": "f","mult": 18 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": ".2/m","geom": "point","label": "e","mult": 9 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": ".2/m","geom": "point","label": "d","mult": 9 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3m","geom": "line","label": "c","mult": 6 },{ "coord": [ "0,0,1/2" ],"desc": "-3m","geom": "point","label": "b","mult": 3 },{ "coord": [ "0,0,0" ],"desc": "-3m","geom": "point","label": "a","mult": 3 } ] } },{ "clegId": "166:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ "x,y,z","z,x,y","-z,-y,-x","-x,-y,-z","x,y,z" ],"gp": [ "x,y,z","z,x,y","y,z,x","-z,-y,-x","-y,-x,-z","-x,-z,-y","-x,-y,-z","-z,-x,-y","-y,-z,-x","z,y,x","y,x,z","x,z,y" ],"hall": "-P 3* 2","hm": "R -3 m :r","id": "R_-3_m_r","jmolId": "166:r","set": 2,"sg": 166,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 12 },{ "coord": [ "x+z,-2x+z,x+z","x+z,x+z,-2x+z","-2x+z,x+z,x+z","-x-z,2x-z,-x-z","2x-z,-x-z,-x-z","-x-z,-x-z,2x-z" ],"desc": ".m","geom": "plane","label": "h","mult": 6 },{ "coord": [ "x+1/2,-x+1/2,1/2","1/2,x+1/2,-x+1/2","-x+1/2,1/2,x+1/2","-x+1/2,x+1/2,1/2","1/2,-x+1/2,x+1/2","x+1/2,1/2,-x+1/2" ],"desc": ".2","geom": "line","label": "g","mult": 6 },{ "coord": [ "x,-x,0","0,x,-x","-x,0,x","-x,x,0","0,-x,x","x,0,-x" ],"desc": ".2","geom": "line","label": "f","mult": 6 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2","1/2,0,1/2" ],"desc": ".2/m","geom": "point","label": "e","mult": 3 },{ "coord": [ "0,0,1/2","1/2,0,0","0,1/2,0" ],"desc": ".2/m","geom": "point","label": "d","mult": 3 },{ "coord": [ "z,z,z","-z,-z,-z" ],"desc": "3m","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "-3m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-3m","geom": "point","label": "a","mult": 1 } ] } } ],"n": 2,"sg": 166 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_167.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_167.json new file mode 100755 index 000000000000..f9541b03db82 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_167.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "167:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","y,x,-z+1/2","-x,-y,-z","x+2/3,y+1/3,z+1/3" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","y,x,-z+1/2","x-y,-y,-z+1/2","-x,-x+y,-z+1/2","-x,-y,-z","y,-x+y,-z","x-y,x,-z","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2","x+2/3,y+1/3,z+1/3","-y+2/3,x-y+1/3,z+1/3","-x+y+2/3,-x+1/3,z+1/3","y+2/3,x+1/3,-z+5/6","x-y+2/3,-y+1/3,-z+5/6","-x+2/3,-x+y+1/3,-z+5/6","-x+2/3,-y+1/3,-z+1/3","y+2/3,-x+y+1/3,-z+1/3","x-y+2/3,x+1/3,-z+1/3","-y+2/3,-x+1/3,z+5/6","-x+y+2/3,y+1/3,z+5/6","x+2/3,x-y+1/3,z+5/6","x+1/3,y+2/3,z+2/3","-y+1/3,x-y+2/3,z+2/3","-x+y+1/3,-x+2/3,z+2/3","y+1/3,x+2/3,-z+1/6","x-y+1/3,-y+2/3,-z+1/6","-x+1/3,-x+y+2/3,-z+1/6","-x+1/3,-y+2/3,-z+2/3","y+1/3,-x+y+2/3,-z+2/3","x-y+1/3,x+2/3,-z+2/3","-y+1/3,-x+2/3,z+1/6","-x+y+1/3,y+2/3,z+1/6","x+1/3,x-y+2/3,z+1/6" ],"hall": "-R 3 2\"c","hm": "R -3 c :h","id": "R_-3_c_h","jmolId": "167:h","set": 1,"sg": 167,"trm": "a,b,c","wpos": { "cent": [ "2/3,1/3,1/3","1/3,2/3,2/3" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 36 },{ "coord": [ "x,0,1/4","0,x,1/4","-x,-x,1/4","-x,0,3/4","0,-x,3/4","x,x,3/4" ],"desc": ".2","geom": "line","label": "e","mult": 18 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0","0,1/2,1/2","1/2,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 18 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "3.","geom": "line","label": "c","mult": 12 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-3.","geom": "point","label": "b","mult": 6 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "32","geom": "point","label": "a","mult": 6 } ] } },{ "clegId": "167:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ "x,y,z","z,x,y","-z+1/2,-y+1/2,-x+1/2","-x,-y,-z","x,y,z" ],"gp": [ "x,y,z","z,x,y","y,z,x","-z+1/2,-y+1/2,-x+1/2","-y+1/2,-x+1/2,-z+1/2","-x+1/2,-z+1/2,-y+1/2","-x,-y,-z","-z,-x,-y","-y,-z,-x","z+1/2,y+1/2,x+1/2","y+1/2,x+1/2,z+1/2","x+1/2,z+1/2,y+1/2" ],"hall": "-P 3* 2n","hm": "R -3 c :r","id": "R_-3_c_r","jmolId": "167:r","set": 2,"sg": 167,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 12 },{ "coord": [ "x+1/4,-x+1/4,1/4","1/4,x+1/4,-x+1/4","-x+1/4,1/4,x+1/4","-x+3/4,x+3/4,3/4","3/4,-x+3/4,x+3/4","x+3/4,3/4,-x+3/4" ],"desc": ".2","geom": "line","label": "e","mult": 6 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2","1/2,0,1/2","1/2,0,0","0,0,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 6 },{ "coord": [ "z,z,z","-z+1/2,-z+1/2,-z+1/2","-z,-z,-z","z+1/2,z+1/2,z+1/2" ],"desc": "3.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "-3.","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "32","geom": "point","label": "a","mult": 2 } ] } } ],"n": 2,"sg": 167 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_168.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_168.json new file mode 100755 index 000000000000..25824153788c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_168.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "168:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z","y,-x+y,z","x-y,x,z" ],"hall": "P 6","hm": "P 6","id": "P_6","jmolId": "168","set": 1,"sg": 168,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 6 },{ "coord": [ "1/2,0,z","0,1/2,z","1/2,1/2,z" ],"desc": "2..","geom": "line","label": "c","mult": 3 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z" ],"desc": "3..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z" ],"desc": "6..","geom": "line","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 168 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_169.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_169.json new file mode 100755 index 000000000000..c840fb594942 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_169.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "169:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+1/3","-x,-y,z+1/2" ],"gp": [ "x,y,z","-y,x-y,z+1/3","-x+y,-x,z+2/3","-x,-y,z+1/2","y,-x+y,z+5/6","x-y,x,z+1/6" ],"hall": "P 61","hm": "P 61","id": "P_61","jmolId": "169","set": 1,"sg": 169,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 6 } ] } } ],"n": 1,"sg": 169 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_17.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_17.json new file mode 100755 index 000000000000..fb055b90ca9a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_17.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "17:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x,y,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x,y,-z+1/2","x,-y,-z" ],"hall": "P 2c 2","hm": "P 2 2 21","id": "P_2_2_21","jmolId": "17","set": 1,"sg": 17,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "1/2,y,1/4","1/2,-y,3/4" ],"desc": ".2.","geom": "line","label": "d","mult": 2 },{ "coord": [ "0,y,1/4","0,-y,3/4" ],"desc": ".2.","geom": "line","label": "c","mult": 2 },{ "coord": [ "x,1/2,0","-x,1/2,1/2" ],"desc": "2..","geom": "line","label": "b","mult": 2 },{ "coord": [ "x,0,0","-x,0,1/2" ],"desc": "2..","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "17:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","-x+1/2,-y,z" ],"gp": [ "x,y,z","x+1/2,-y,-z","-x+1/2,-y,z","-x,y,-z" ],"hall": "P 2a 2a","hm": "P 21 2 2","id": "P_21_2_2","jmolId": "17:cab","set": 2,"sg": 17,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "1/4,1/2,y","3/4,1/2,-y" ],"desc": ".2.","geom": "line","label": "d","mult": 2 },{ "coord": [ "1/4,0,y","3/4,0,-y" ],"desc": ".2.","geom": "line","label": "c","mult": 2 },{ "coord": [ "0,x,1/2","1/2,-x,1/2" ],"desc": "2..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,x,0","1/2,-x,0" ],"desc": "2..","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "17:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","x,-y+1/2,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z","x,-y+1/2,-z","-x,-y,z" ],"hall": "P 2 2b","hm": "P 2 21 2","id": "P_2_21_2","jmolId": "17:bca","set": 3,"sg": 17,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "y,1/4,1/2","-y,3/4,1/2" ],"desc": ".2.","geom": "line","label": "d","mult": 2 },{ "coord": [ "y,1/4,0","-y,3/4,0" ],"desc": ".2.","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,0,x","1/2,1/2,-x" ],"desc": "2..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,x","0,1/2,-x" ],"desc": "2..","geom": "line","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 17 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_170.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_170.json new file mode 100755 index 000000000000..e78d55ec711a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_170.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "170:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+2/3","-x,-y,z+1/2" ],"gp": [ "x,y,z","-y,x-y,z+2/3","-x+y,-x,z+1/3","-x,-y,z+1/2","y,-x+y,z+1/6","x-y,x,z+5/6" ],"hall": "P 65","hm": "P 65","id": "P_65","jmolId": "170","set": 1,"sg": 170,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 6 } ] } } ],"n": 1,"sg": 170 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_171.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_171.json new file mode 100755 index 000000000000..59593ab5a510 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_171.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "171:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+2/3","-x,-y,z" ],"gp": [ "x,y,z","-y,x-y,z+2/3","-x+y,-x,z+1/3","-x,-y,z","y,-x+y,z+2/3","x-y,x,z+1/3" ],"hall": "P 62","hm": "P 62","id": "P_62","jmolId": "171","set": 1,"sg": 171,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "1/2,1/2,z","1/2,0,z+2/3","0,1/2,z+1/3" ],"desc": "2..","geom": "line","label": "b","mult": 3 },{ "coord": [ "0,0,z","0,0,z+2/3","0,0,z+1/3" ],"desc": "2..","geom": "line","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 171 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_172.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_172.json new file mode 100755 index 000000000000..a0cc8a0bd1bd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_172.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "172:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+1/3","-x,-y,z" ],"gp": [ "x,y,z","-y,x-y,z+1/3","-x+y,-x,z+2/3","-x,-y,z","y,-x+y,z+1/3","x-y,x,z+2/3" ],"hall": "P 64","hm": "P 64","id": "P_64","jmolId": "172","set": 1,"sg": 172,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "1/2,1/2,z","1/2,0,z+1/3","0,1/2,z+2/3" ],"desc": "2..","geom": "line","label": "b","mult": 3 },{ "coord": [ "0,0,z","0,0,z+1/3","0,0,z+2/3" ],"desc": "2..","geom": "line","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 172 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_173.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_173.json new file mode 100755 index 000000000000..d555107727ec --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_173.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "173:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z+1/2" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z+1/2","y,-x+y,z+1/2","x-y,x,z+1/2" ],"hall": "P 6c","hm": "P 63","id": "P_63","jmolId": "173","set": 1,"sg": 173,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z+1/2" ],"desc": "3..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "3..","geom": "line","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 173 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_174.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_174.json new file mode 100755 index 000000000000..961466ccbd63 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_174.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "174:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","x,y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","x,y,-z","-y,x-y,-z","-x+y,-x,-z" ],"hall": "P -6","hm": "P -6","id": "P_-6","jmolId": "174","set": 1,"sg": 174,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 6 },{ "coord": [ "x,y,1/2","-y,x-y,1/2","-x+y,-x,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 3 },{ "coord": [ "x,y,0","-y,x-y,0","-x+y,-x,0" ],"desc": "m..","geom": "plane","label": "j","mult": 3 },{ "coord": [ "2/3,1/3,z","2/3,1/3,-z" ],"desc": "3..","geom": "line","label": "i","mult": 2 },{ "coord": [ "1/3,2/3,z","1/3,2/3,-z" ],"desc": "3..","geom": "line","label": "h","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3..","geom": "line","label": "g","mult": 2 },{ "coord": [ "2/3,1/3,1/2" ],"desc": "-6..","geom": "point","label": "f","mult": 1 },{ "coord": [ "2/3,1/3,0" ],"desc": "-6..","geom": "point","label": "e","mult": 1 },{ "coord": [ "1/3,2/3,1/2" ],"desc": "-6..","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/3,2/3,0" ],"desc": "-6..","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "-6..","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-6..","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 174 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_175.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_175.json new file mode 100755 index 000000000000..7d3a348fc6f9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_175.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "175:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z","y,-x+y,z","x-y,x,z","-x,-y,-z","y,-x+y,-z","x-y,x,-z","x,y,-z","-y,x-y,-z","-x+y,-x,-z" ],"hall": "-P 6","hm": "P 6/m","id": "P_6/m","jmolId": "175","set": 1,"sg": 175,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 12 },{ "coord": [ "x,y,1/2","-y,x-y,1/2","-x+y,-x,1/2","-x,-y,1/2","y,-x+y,1/2","x-y,x,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 6 },{ "coord": [ "x,y,0","-y,x-y,0","-x+y,-x,0","-x,-y,0","y,-x+y,0","x-y,x,0" ],"desc": "m..","geom": "plane","label": "j","mult": 6 },{ "coord": [ "1/2,0,z","0,1/2,z","1/2,1/2,z","1/2,0,-z","0,1/2,-z","1/2,1/2,-z" ],"desc": "2..","geom": "line","label": "i","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z","2/3,1/3,-z","1/3,2/3,-z" ],"desc": "3..","geom": "line","label": "h","mult": 4 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "g","mult": 3 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "f","mult": 3 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "6..","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/3,2/3,1/2","2/3,1/3,1/2" ],"desc": "-6..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,0","2/3,1/3,0" ],"desc": "-6..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "6/m..","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "6/m..","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 175 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_176.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_176.json new file mode 100755 index 000000000000..3ac52ecbf56b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_176.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "176:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z+1/2","y,-x+y,z+1/2","x-y,x,z+1/2","-x,-y,-z","y,-x+y,-z","x-y,x,-z","x,y,-z+1/2","-y,x-y,-z+1/2","-x+y,-x,-z+1/2" ],"hall": "-P 6c","hm": "P 63/m","id": "P_63/m","jmolId": "176","set": 1,"sg": 176,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 12 },{ "coord": [ "x,y,1/4","-y,x-y,1/4","-x+y,-x,1/4","-x,-y,3/4","y,-x+y,3/4","x-y,x,3/4" ],"desc": "m..","geom": "plane","label": "h","mult": 6 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "g","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z+1/2","2/3,1/3,-z","1/3,2/3,-z+1/2" ],"desc": "3..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "3..","geom": "line","label": "e","mult": 4 },{ "coord": [ "2/3,1/3,1/4","1/3,2/3,3/4" ],"desc": "-6..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,1/4","2/3,1/3,3/4" ],"desc": "-6..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-3..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-6..","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 176 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_177.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_177.json new file mode 100755 index 000000000000..62a5bd5e3e5b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_177.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "177:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z","y,x,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z","y,-x+y,z","x-y,x,z","y,x,-z","x-y,-y,-z","-x,-x+y,-z","-y,-x,-z","-x+y,y,-z","x,x-y,-z" ],"hall": "P 6 2","hm": "P 6 2 2","id": "P_6_2_2","jmolId": "177","set": 1,"sg": 177,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "n","mult": 12 },{ "coord": [ "x,-x,1/2","x,2x,1/2","-2x,-x,1/2","-x,x,1/2","-x,-2x,1/2","2x,x,1/2" ],"desc": "..2","geom": "line","label": "m","mult": 6 },{ "coord": [ "x,-x,0","x,2x,0","-2x,-x,0","-x,x,0","-x,-2x,0","2x,x,0" ],"desc": "..2","geom": "line","label": "l","mult": 6 },{ "coord": [ "x,0,1/2","0,x,1/2","-x,-x,1/2","-x,0,1/2","0,-x,1/2","x,x,1/2" ],"desc": ".2.","geom": "line","label": "k","mult": 6 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0","-x,0,0","0,-x,0","x,x,0" ],"desc": ".2.","geom": "line","label": "j","mult": 6 },{ "coord": [ "1/2,0,z","0,1/2,z","1/2,1/2,z","0,1/2,-z","1/2,0,-z","1/2,1/2,-z" ],"desc": "2..","geom": "line","label": "i","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z","2/3,1/3,-z","1/3,2/3,-z" ],"desc": "3..","geom": "line","label": "h","mult": 4 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "222","geom": "point","label": "g","mult": 3 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": "222","geom": "point","label": "f","mult": 3 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "6..","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/3,2/3,1/2","2/3,1/3,1/2" ],"desc": "3.2","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,0","2/3,1/3,0" ],"desc": "3.2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "622","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "622","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 177 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_178.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_178.json new file mode 100755 index 000000000000..5dd8fb0abdcf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_178.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "178:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+1/3","-x,-y,z+1/2","y,x,-z+1/3" ],"gp": [ "x,y,z","-y,x-y,z+1/3","-x+y,-x,z+2/3","-x,-y,z+1/2","y,-x+y,z+5/6","x-y,x,z+1/6","y,x,-z+1/3","x-y,-y,-z","-x,-x+y,-z+2/3","-y,-x,-z+5/6","-x+y,y,-z+1/2","x,x-y,-z+1/6" ],"hall": "P 61 2 (0 0 5)","hm": "P 61 2 2","id": "P_61_2_2","jmolId": "178","set": 1,"sg": 178,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 12 },{ "coord": [ "x,2x,1/4","-2x,-x,7/12","x,-x,11/12","-x,-2x,3/4","2x,x,1/12","-x,x,5/12" ],"desc": "..2","geom": "line","label": "b","mult": 6 },{ "coord": [ "x,0,0","0,x,1/3","-x,-x,2/3","-x,0,1/2","0,-x,5/6","x,x,1/6" ],"desc": ".2.","geom": "line","label": "a","mult": 6 } ] } } ],"n": 1,"sg": 178 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_179.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_179.json new file mode 100755 index 000000000000..4e5a639c7ff7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_179.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "179:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+2/3","-x,-y,z+1/2","y,x,-z+2/3" ],"gp": [ "x,y,z","-y,x-y,z+2/3","-x+y,-x,z+1/3","-x,-y,z+1/2","y,-x+y,z+1/6","x-y,x,z+5/6","y,x,-z+2/3","x-y,-y,-z","-x,-x+y,-z+1/3","-y,-x,-z+1/6","-x+y,y,-z+1/2","x,x-y,-z+5/6" ],"hall": "P 65 2 (0 0 1)","hm": "P 65 2 2","id": "P_65_2_2","jmolId": "179","set": 1,"sg": 179,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 12 },{ "coord": [ "x,2x,3/4","-2x,-x,5/12","x,-x,1/12","-x,-2x,1/4","2x,x,11/12","-x,x,7/12" ],"desc": "..2","geom": "line","label": "b","mult": 6 },{ "coord": [ "x,0,0","0,x,2/3","-x,-x,1/3","-x,0,1/2","0,-x,1/6","x,x,5/6" ],"desc": ".2.","geom": "line","label": "a","mult": 6 } ] } } ],"n": 1,"sg": 179 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_18.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_18.json new file mode 100755 index 000000000000..82742bc89302 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_18.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "18:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z" ],"hall": "P 2 2ab","hm": "P 21 21 2","id": "P_21_21_2","jmolId": "18","set": 1,"sg": 18,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","1/2,1/2,-z" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "18:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2" ],"hall": "P 2bc 2","hm": "P 2 21 21","id": "P_2_21_21","jmolId": "18:cab","set": 2,"sg": 18,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "z,0,1/2","-z,1/2,0" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0","-z,1/2,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "18:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,-y,-z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,-y,-z+1/2","-x+1/2,-y,z+1/2" ],"hall": "P 2ac 2ac","hm": "P 21 2 21","id": "P_21_2_21","jmolId": "18:bca","set": 3,"sg": 18,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,z,0","0,-z,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0","1/2,-z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 18 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_180.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_180.json new file mode 100755 index 000000000000..ba0580f4ea3e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_180.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "180:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+2/3","-x,-y,z","y,x,-z+2/3" ],"gp": [ "x,y,z","-y,x-y,z+2/3","-x+y,-x,z+1/3","-x,-y,z","y,-x+y,z+2/3","x-y,x,z+1/3","y,x,-z+2/3","x-y,-y,-z","-x,-x+y,-z+1/3","-y,-x,-z+2/3","-x+y,y,-z","x,x-y,-z+1/3" ],"hall": "P 62 2 (0 0 4)","hm": "P 62 2 2","id": "P_62_2_2","jmolId": "180","set": 1,"sg": 180,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 12 },{ "coord": [ "x,2x,1/2","-2x,-x,1/6","x,-x,5/6","-x,-2x,1/2","2x,x,1/6","-x,x,5/6" ],"desc": "..2","geom": "line","label": "j","mult": 6 },{ "coord": [ "x,2x,0","-2x,-x,2/3","x,-x,1/3","-x,-2x,0","2x,x,2/3","-x,x,1/3" ],"desc": "..2","geom": "line","label": "i","mult": 6 },{ "coord": [ "x,0,1/2","0,x,1/6","-x,-x,5/6","-x,0,1/2","0,-x,1/6","x,x,5/6" ],"desc": ".2.","geom": "line","label": "h","mult": 6 },{ "coord": [ "x,0,0","0,x,2/3","-x,-x,1/3","-x,0,0","0,-x,2/3","x,x,1/3" ],"desc": ".2.","geom": "line","label": "g","mult": 6 },{ "coord": [ "1/2,0,z","0,1/2,z+2/3","1/2,1/2,z+1/3","0,1/2,-z+2/3","1/2,0,-z","1/2,1/2,-z+1/3" ],"desc": "2..","geom": "line","label": "f","mult": 6 },{ "coord": [ "0,0,z","0,0,z+2/3","0,0,z+1/3","0,0,-z+2/3","0,0,-z","0,0,-z+1/3" ],"desc": "2..","geom": "line","label": "e","mult": 6 },{ "coord": [ "1/2,0,1/2","0,1/2,1/6","1/2,1/2,5/6" ],"desc": "222","geom": "point","label": "d","mult": 3 },{ "coord": [ "1/2,0,0","0,1/2,2/3","1/2,1/2,1/3" ],"desc": "222","geom": "point","label": "c","mult": 3 },{ "coord": [ "0,0,1/2","0,0,1/6","0,0,5/6" ],"desc": "222","geom": "point","label": "b","mult": 3 },{ "coord": [ "0,0,0","0,0,2/3","0,0,1/3" ],"desc": "222","geom": "point","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 180 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_181.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_181.json new file mode 100755 index 000000000000..e1893fca486e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_181.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "181:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z+1/3","-x,-y,z","y,x,-z+1/3" ],"gp": [ "x,y,z","-y,x-y,z+1/3","-x+y,-x,z+2/3","-x,-y,z","y,-x+y,z+1/3","x-y,x,z+2/3","y,x,-z+1/3","x-y,-y,-z","-x,-x+y,-z+2/3","-y,-x,-z+1/3","-x+y,y,-z","x,x-y,-z+2/3" ],"hall": "P 64 2 (0 0 2)","hm": "P 64 2 2","id": "P_64_2_2","jmolId": "181","set": 1,"sg": 181,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 12 },{ "coord": [ "x,2x,1/2","-2x,-x,5/6","x,-x,1/6","-x,-2x,1/2","2x,x,5/6","-x,x,1/6" ],"desc": "..2","geom": "line","label": "j","mult": 6 },{ "coord": [ "x,2x,0","-2x,-x,1/3","x,-x,2/3","-x,-2x,0","2x,x,1/3","-x,x,2/3" ],"desc": "..2","geom": "line","label": "i","mult": 6 },{ "coord": [ "x,0,1/2","0,x,5/6","-x,-x,1/6","-x,0,1/2","0,-x,5/6","x,x,1/6" ],"desc": ".2.","geom": "line","label": "h","mult": 6 },{ "coord": [ "x,0,0","0,x,1/3","-x,-x,2/3","-x,0,0","0,-x,1/3","x,x,2/3" ],"desc": ".2.","geom": "line","label": "g","mult": 6 },{ "coord": [ "1/2,0,z","0,1/2,z+1/3","1/2,1/2,z+2/3","0,1/2,-z+1/3","1/2,0,-z","1/2,1/2,-z+2/3" ],"desc": "2..","geom": "line","label": "f","mult": 6 },{ "coord": [ "0,0,z","0,0,z+1/3","0,0,z+2/3","0,0,-z+1/3","0,0,-z","0,0,-z+2/3" ],"desc": "2..","geom": "line","label": "e","mult": 6 },{ "coord": [ "1/2,0,1/2","0,1/2,5/6","1/2,1/2,1/6" ],"desc": "222","geom": "point","label": "d","mult": 3 },{ "coord": [ "1/2,0,0","0,1/2,1/3","1/2,1/2,2/3" ],"desc": "222","geom": "point","label": "c","mult": 3 },{ "coord": [ "0,0,1/2","0,0,5/6","0,0,1/6" ],"desc": "222","geom": "point","label": "b","mult": 3 },{ "coord": [ "0,0,0","0,0,1/3","0,0,2/3" ],"desc": "222","geom": "point","label": "a","mult": 3 } ] } } ],"n": 1,"sg": 181 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_182.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_182.json new file mode 100755 index 000000000000..2e6f4fe50024 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_182.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "182:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z+1/2","y,x,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z+1/2","y,-x+y,z+1/2","x-y,x,z+1/2","y,x,-z","x-y,-y,-z","-x,-x+y,-z","-y,-x,-z+1/2","-x+y,y,-z+1/2","x,x-y,-z+1/2" ],"hall": "P 6c 2c","hm": "P 63 2 2","id": "P_63_2_2","jmolId": "182","set": 1,"sg": 182,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 12 },{ "coord": [ "x,2x,1/4","-2x,-x,1/4","x,-x,1/4","-x,-2x,3/4","2x,x,3/4","-x,x,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 6 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0","-x,0,1/2","0,-x,1/2","x,x,1/2" ],"desc": ".2.","geom": "line","label": "g","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z+1/2","2/3,1/3,-z","1/3,2/3,-z+1/2" ],"desc": "3..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "3..","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/3,2/3,3/4","2/3,1/3,1/4" ],"desc": "3.2","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,1/4","2/3,1/3,3/4" ],"desc": "3.2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "3.2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "32.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 182 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_183.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_183.json new file mode 100755 index 000000000000..61dec818b86a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_183.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "183:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z","-y,-x,z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z","y,-x+y,z","x-y,x,z","-y,-x,z","-x+y,y,z","x,x-y,z","y,x,z","x-y,-y,z","-x,-x+y,z" ],"hall": "P 6 -2","hm": "P 6 m m","id": "P_6_m_m","jmolId": "183","set": 1,"sg": 183,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 12 },{ "coord": [ "x,-x,z","x,2x,z","-2x,-x,z","-x,x,z","-x,-2x,z","2x,x,z" ],"desc": ".m.","geom": "plane","label": "e","mult": 6 },{ "coord": [ "x,0,z","0,x,z","-x,-x,z","-x,0,z","0,-x,z","x,x,z" ],"desc": "..m","geom": "plane","label": "d","mult": 6 },{ "coord": [ "1/2,0,z","0,1/2,z","1/2,1/2,z" ],"desc": "2mm","geom": "line","label": "c","mult": 3 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z" ],"desc": "3m.","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z" ],"desc": "6mm","geom": "line","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 183 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_184.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_184.json new file mode 100755 index 000000000000..4b72aff8b563 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_184.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "184:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z","-y,-x,z+1/2" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z","y,-x+y,z","x-y,x,z","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2","y,x,z+1/2","x-y,-y,z+1/2","-x,-x+y,z+1/2" ],"hall": "P 6 -2c","hm": "P 6 c c","id": "P_6_c_c","jmolId": "184","set": 1,"sg": 184,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 12 },{ "coord": [ "1/2,0,z","0,1/2,z","1/2,1/2,z","0,1/2,z+1/2","1/2,0,z+1/2","1/2,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z","1/3,2/3,z+1/2","2/3,1/3,z+1/2" ],"desc": "3..","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "6..","geom": "line","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 184 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_185.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_185.json new file mode 100755 index 000000000000..42fcc0a0297a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_185.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "185:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z+1/2","-y,-x,z+1/2" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z+1/2","y,-x+y,z+1/2","x-y,x,z+1/2","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2","y,x,z","x-y,-y,z","-x,-x+y,z" ],"hall": "P 6c -2","hm": "P 63 c m","id": "P_63_c_m","jmolId": "185","set": 1,"sg": 185,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 12 },{ "coord": [ "x,0,z","0,x,z","-x,-x,z","-x,0,z+1/2","0,-x,z+1/2","x,x,z+1/2" ],"desc": "..m","geom": "plane","label": "c","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z+1/2","1/3,2/3,z+1/2","2/3,1/3,z" ],"desc": "3..","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "3.m","geom": "line","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 185 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_186.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_186.json new file mode 100755 index 000000000000..c36ef24854c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_186.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "186:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z+1/2","-y,-x,z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z+1/2","y,-x+y,z+1/2","x-y,x,z+1/2","-y,-x,z","-x+y,y,z","x,x-y,z","y,x,z+1/2","x-y,-y,z+1/2","-x,-x+y,z+1/2" ],"hall": "P 6c -2c","hm": "P 63 m c","id": "P_63_m_c","jmolId": "186","set": 1,"sg": 186,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 12 },{ "coord": [ "x,-x,z","x,2x,z","-2x,-x,z","-x,x,z+1/2","-x,-2x,z+1/2","2x,x,z+1/2" ],"desc": ".m.","geom": "plane","label": "c","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z+1/2" ],"desc": "3m.","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "3m.","geom": "line","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 186 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_187.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_187.json new file mode 100755 index 000000000000..1d811be5bc7f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_187.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "187:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","x,y,-z","-y,-x,z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","x,y,-z","-y,x-y,-z","-x+y,-x,-z","-y,-x,z","-x+y,y,z","x,x-y,z","-y,-x,-z","-x+y,y,-z","x,x-y,-z" ],"hall": "P -6 2","hm": "P -6 m 2","id": "P_-6_m_2","jmolId": "187","set": 1,"sg": 187,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "o","mult": 12 },{ "coord": [ "x,-x,z","x,2x,z","-2x,-x,z","x,-x,-z","x,2x,-z","-2x,-x,-z" ],"desc": ".m.","geom": "plane","label": "n","mult": 6 },{ "coord": [ "x,y,1/2","-y,x-y,1/2","-x+y,-x,1/2","-y,-x,1/2","-x+y,y,1/2","x,x-y,1/2" ],"desc": "m..","geom": "plane","label": "m","mult": 6 },{ "coord": [ "x,y,0","-y,x-y,0","-x+y,-x,0","-y,-x,0","-x+y,y,0","x,x-y,0" ],"desc": "m..","geom": "plane","label": "l","mult": 6 },{ "coord": [ "x,-x,1/2","x,2x,1/2","-2x,-x,1/2" ],"desc": "mm2","geom": "line","label": "k","mult": 3 },{ "coord": [ "x,-x,0","x,2x,0","-2x,-x,0" ],"desc": "mm2","geom": "line","label": "j","mult": 3 },{ "coord": [ "2/3,1/3,z","2/3,1/3,-z" ],"desc": "3m.","geom": "line","label": "i","mult": 2 },{ "coord": [ "1/3,2/3,z","1/3,2/3,-z" ],"desc": "3m.","geom": "line","label": "h","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3m.","geom": "line","label": "g","mult": 2 },{ "coord": [ "2/3,1/3,1/2" ],"desc": "-6m2","geom": "point","label": "f","mult": 1 },{ "coord": [ "2/3,1/3,0" ],"desc": "-6m2","geom": "point","label": "e","mult": 1 },{ "coord": [ "1/3,2/3,1/2" ],"desc": "-6m2","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/3,2/3,0" ],"desc": "-6m2","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "-6m2","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-6m2","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 187 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_188.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_188.json new file mode 100755 index 000000000000..255fed86de1a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_188.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "188:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","x,y,-z+1/2","-y,-x,z+1/2" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","x,y,-z+1/2","-y,x-y,-z+1/2","-x+y,-x,-z+1/2","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2","-y,-x,-z","-x+y,y,-z","x,x-y,-z" ],"hall": "P -6c 2","hm": "P -6 c 2","id": "P_-6_c_2","jmolId": "188","set": 1,"sg": 188,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 12 },{ "coord": [ "x,y,1/4","-y,x-y,1/4","-x+y,-x,1/4","-y,-x,3/4","-x+y,y,3/4","x,x-y,3/4" ],"desc": "m..","geom": "plane","label": "k","mult": 6 },{ "coord": [ "x,-x,0","x,2x,0","-2x,-x,0","x,-x,1/2","x,2x,1/2","-2x,-x,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 6 },{ "coord": [ "2/3,1/3,z","2/3,1/3,-z+1/2","2/3,1/3,z+1/2","2/3,1/3,-z" ],"desc": "3..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/3,2/3,z","1/3,2/3,-z+1/2","1/3,2/3,z+1/2","1/3,2/3,-z" ],"desc": "3..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,z+1/2","0,0,-z" ],"desc": "3..","geom": "line","label": "g","mult": 4 },{ "coord": [ "2/3,1/3,1/4","2/3,1/3,3/4" ],"desc": "-6..","geom": "point","label": "f","mult": 2 },{ "coord": [ "2/3,1/3,0","2/3,1/3,1/2" ],"desc": "3.2","geom": "point","label": "e","mult": 2 },{ "coord": [ "1/3,2/3,1/4","1/3,2/3,3/4" ],"desc": "-6..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,0","1/3,2/3,1/2" ],"desc": "3.2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-6..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "3.2","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 188 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_189.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_189.json new file mode 100755 index 000000000000..3817c5524b5c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_189.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "189:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","x,y,-z","y,x,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","x,y,-z","-y,x-y,-z","-x+y,-x,-z","y,x,-z","x-y,-y,-z","-x,-x+y,-z","y,x,z","x-y,-y,z","-x,-x+y,z" ],"hall": "P -6 -2","hm": "P -6 2 m","id": "P_-6_2_m","jmolId": "189","set": 1,"sg": 189,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 12 },{ "coord": [ "x,y,1/2","-y,x-y,1/2","-x+y,-x,1/2","y,x,1/2","x-y,-y,1/2","-x,-x+y,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 6 },{ "coord": [ "x,y,0","-y,x-y,0","-x+y,-x,0","y,x,0","x-y,-y,0","-x,-x+y,0" ],"desc": "m..","geom": "plane","label": "j","mult": 6 },{ "coord": [ "x,0,z","0,x,z","-x,-x,z","x,0,-z","0,x,-z","-x,-x,-z" ],"desc": "..m","geom": "plane","label": "i","mult": 6 },{ "coord": [ "1/3,2/3,z","1/3,2/3,-z","2/3,1/3,-z","2/3,1/3,z" ],"desc": "3..","geom": "line","label": "h","mult": 4 },{ "coord": [ "x,0,1/2","0,x,1/2","-x,-x,1/2" ],"desc": "m2m","geom": "line","label": "g","mult": 3 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0" ],"desc": "m2m","geom": "line","label": "f","mult": 3 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "3.m","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/3,2/3,1/2","2/3,1/3,1/2" ],"desc": "-6..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,0","2/3,1/3,0" ],"desc": "-6..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-62m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-62m","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 189 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_19.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_19.json new file mode 100755 index 000000000000..8dc8bd744cc5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_19.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "19:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z" ],"hall": "P 2ac 2ab","hm": "P 21 21 21","id": "P_21_21_21","jmolId": "19","set": 1,"sg": 19,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 19 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_190.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_190.json new file mode 100755 index 000000000000..83fb4ce2ef0c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_190.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "190:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","x,y,-z+1/2","y,x,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","x,y,-z+1/2","-y,x-y,-z+1/2","-x+y,-x,-z+1/2","y,x,-z","x-y,-y,-z","-x,-x+y,-z","y,x,z+1/2","x-y,-y,z+1/2","-x,-x+y,z+1/2" ],"hall": "P -6c -2c","hm": "P -6 2 c","id": "P_-6_2_c","jmolId": "190","set": 1,"sg": 190,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 12 },{ "coord": [ "x,y,1/4","-y,x-y,1/4","-x+y,-x,1/4","y,x,3/4","x-y,-y,3/4","-x,-x+y,3/4" ],"desc": "m..","geom": "plane","label": "h","mult": 6 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0","x,0,1/2","0,x,1/2","-x,-x,1/2" ],"desc": ".2.","geom": "line","label": "g","mult": 6 },{ "coord": [ "1/3,2/3,z","1/3,2/3,-z+1/2","2/3,1/3,-z","2/3,1/3,z+1/2" ],"desc": "3..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "3..","geom": "line","label": "e","mult": 4 },{ "coord": [ "2/3,1/3,1/4","1/3,2/3,3/4" ],"desc": "-6..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,1/4","2/3,1/3,3/4" ],"desc": "-6..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-6..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "32.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 190 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_191.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_191.json new file mode 100755 index 000000000000..e99eb421b45b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_191.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "191:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z","y,x,-z","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z","y,-x+y,z","x-y,x,z","y,x,-z","x-y,-y,-z","-x,-x+y,-z","-y,-x,-z","-x+y,y,-z","x,x-y,-z","-x,-y,-z","y,-x+y,-z","x-y,x,-z","x,y,-z","-y,x-y,-z","-x+y,-x,-z","-y,-x,z","-x+y,y,z","x,x-y,z","y,x,z","x-y,-y,z","-x,-x+y,z" ],"hall": "-P 6 2","hm": "P 6/m m m","id": "P_6/m_m_m","jmolId": "191","set": 1,"sg": 191,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "r","mult": 24 },{ "coord": [ "x,y,1/2","-y,x-y,1/2","-x+y,-x,1/2","-x,-y,1/2","y,-x+y,1/2","x-y,x,1/2","y,x,1/2","x-y,-y,1/2","-x,-x+y,1/2","-y,-x,1/2","-x+y,y,1/2","x,x-y,1/2" ],"desc": "m..","geom": "plane","label": "q","mult": 12 },{ "coord": [ "x,y,0","-y,x-y,0","-x+y,-x,0","-x,-y,0","y,-x+y,0","x-y,x,0","y,x,0","x-y,-y,0","-x,-x+y,0","-y,-x,0","-x+y,y,0","x,x-y,0" ],"desc": "m..","geom": "plane","label": "p","mult": 12 },{ "coord": [ "x,2x,z","-2x,-x,z","x,-x,z","-x,-2x,z","2x,x,z","-x,x,z","2x,x,-z","-x,-2x,-z","-x,x,-z","-2x,-x,-z","x,2x,-z","x,-x,-z" ],"desc": ".m.","geom": "plane","label": "o","mult": 12 },{ "coord": [ "x,0,z","0,x,z","-x,-x,z","-x,0,z","0,-x,z","x,x,z","0,x,-z","x,0,-z","-x,-x,-z","0,-x,-z","-x,0,-z","x,x,-z" ],"desc": "..m","geom": "plane","label": "n","mult": 12 },{ "coord": [ "x,2x,1/2","-2x,-x,1/2","x,-x,1/2","-x,-2x,1/2","2x,x,1/2","-x,x,1/2" ],"desc": "mm2","geom": "line","label": "m","mult": 6 },{ "coord": [ "x,2x,0","-2x,-x,0","x,-x,0","-x,-2x,0","2x,x,0","-x,x,0" ],"desc": "mm2","geom": "line","label": "l","mult": 6 },{ "coord": [ "x,0,1/2","0,x,1/2","-x,-x,1/2","-x,0,1/2","0,-x,1/2","x,x,1/2" ],"desc": "m2m","geom": "line","label": "k","mult": 6 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0","-x,0,0","0,-x,0","x,x,0" ],"desc": "m2m","geom": "line","label": "j","mult": 6 },{ "coord": [ "1/2,0,z","0,1/2,z","1/2,1/2,z","0,1/2,-z","1/2,0,-z","1/2,1/2,-z" ],"desc": "2mm","geom": "line","label": "i","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z","2/3,1/3,-z","1/3,2/3,-z" ],"desc": "3m.","geom": "line","label": "h","mult": 4 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "mmm","geom": "point","label": "g","mult": 3 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": "mmm","geom": "point","label": "f","mult": 3 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "6mm","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/3,2/3,1/2","2/3,1/3,1/2" ],"desc": "-6m2","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,0","2/3,1/3,0" ],"desc": "-6m2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "6/mmm","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "6/mmm","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 191 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_192.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_192.json new file mode 100755 index 000000000000..3c8e7d1ad36f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_192.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "192:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z","y,x,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z","y,-x+y,z","x-y,x,z","y,x,-z+1/2","x-y,-y,-z+1/2","-x,-x+y,-z+1/2","-y,-x,-z+1/2","-x+y,y,-z+1/2","x,x-y,-z+1/2","-x,-y,-z","y,-x+y,-z","x-y,x,-z","x,y,-z","-y,x-y,-z","-x+y,-x,-z","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2","y,x,z+1/2","x-y,-y,z+1/2","-x,-x+y,z+1/2" ],"hall": "-P 6 2c","hm": "P 6/m c c","id": "P_6/m_c_c","jmolId": "192","set": 1,"sg": 192,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 24 },{ "coord": [ "x,y,0","-y,x-y,0","-x+y,-x,0","-x,-y,0","y,-x+y,0","x-y,x,0","y,x,1/2","x-y,-y,1/2","-x,-x+y,1/2","-y,-x,1/2","-x+y,y,1/2","x,x-y,1/2" ],"desc": "m..","geom": "plane","label": "l","mult": 12 },{ "coord": [ "x,2x,1/4","-2x,-x,1/4","x,-x,1/4","-x,-2x,1/4","2x,x,1/4","-x,x,1/4","-x,-2x,3/4","2x,x,3/4","-x,x,3/4","x,2x,3/4","-2x,-x,3/4","x,-x,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 12 },{ "coord": [ "x,0,1/4","0,x,1/4","-x,-x,1/4","-x,0,1/4","0,-x,1/4","x,x,1/4","-x,0,3/4","0,-x,3/4","x,x,3/4","x,0,3/4","0,x,3/4","-x,-x,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 12 },{ "coord": [ "1/2,0,z","0,1/2,z","1/2,1/2,z","0,1/2,-z+1/2","1/2,0,-z+1/2","1/2,1/2,-z+1/2","1/2,0,-z","0,1/2,-z","1/2,1/2,-z","0,1/2,z+1/2","1/2,0,z+1/2","1/2,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 12 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z","2/3,1/3,-z+1/2","1/3,2/3,-z+1/2","2/3,1/3,-z","1/3,2/3,-z","1/3,2/3,z+1/2","2/3,1/3,z+1/2" ],"desc": "3..","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0","0,1/2,1/2","1/2,0,1/2","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "g","mult": 6 },{ "coord": [ "1/2,0,1/4","0,1/2,1/4","1/2,1/2,1/4","1/2,0,3/4","0,1/2,3/4","1/2,1/2,3/4" ],"desc": "222","geom": "point","label": "f","mult": 6 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "6..","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/3,2/3,0","2/3,1/3,0","2/3,1/3,1/2","1/3,2/3,1/2" ],"desc": "-6..","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/3,2/3,1/4","2/3,1/3,1/4","2/3,1/3,3/4","1/3,2/3,3/4" ],"desc": "3.2","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "6/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "622","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 192 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_193.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_193.json new file mode 100755 index 000000000000..928d5affcd0a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_193.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "193:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z+1/2","y,x,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z+1/2","y,-x+y,z+1/2","x-y,x,z+1/2","y,x,-z+1/2","x-y,-y,-z+1/2","-x,-x+y,-z+1/2","-y,-x,-z","-x+y,y,-z","x,x-y,-z","-x,-y,-z","y,-x+y,-z","x-y,x,-z","x,y,-z+1/2","-y,x-y,-z+1/2","-x+y,-x,-z+1/2","-y,-x,z+1/2","-x+y,y,z+1/2","x,x-y,z+1/2","y,x,z","x-y,-y,z","-x,-x+y,z" ],"hall": "-P 6c 2","hm": "P 63/m c m","id": "P_63/m_c_m","jmolId": "193","set": 1,"sg": 193,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 24 },{ "coord": [ "x,0,z","0,x,z","-x,-x,z","-x,0,z+1/2","0,-x,z+1/2","x,x,z+1/2","0,x,-z+1/2","x,0,-z+1/2","-x,-x,-z+1/2","0,-x,-z","-x,0,-z","x,x,-z" ],"desc": "..m","geom": "plane","label": "k","mult": 12 },{ "coord": [ "x,y,1/4","-y,x-y,1/4","-x+y,-x,1/4","-x,-y,3/4","y,-x+y,3/4","x-y,x,3/4","y,x,1/4","x-y,-y,1/4","-x,-x+y,1/4","-y,-x,3/4","-x+y,y,3/4","x,x-y,3/4" ],"desc": "m..","geom": "plane","label": "j","mult": 12 },{ "coord": [ "x,2x,0","-2x,-x,0","x,-x,0","-x,-2x,1/2","2x,x,1/2","-x,x,1/2","-x,-2x,0","2x,x,0","-x,x,0","x,2x,1/2","-2x,-x,1/2","x,-x,1/2" ],"desc": "..2","geom": "line","label": "i","mult": 12 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z+1/2","2/3,1/3,-z+1/2","1/3,2/3,-z","2/3,1/3,-z","1/3,2/3,-z+1/2","1/3,2/3,z+1/2","2/3,1/3,z" ],"desc": "3..","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,0,1/4","0,x,1/4","-x,-x,1/4","-x,0,3/4","0,-x,3/4","x,x,3/4" ],"desc": "m2m","geom": "line","label": "g","mult": 6 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 6 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z+1/2","0,0,-z" ],"desc": "3.m","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/3,2/3,0","2/3,1/3,1/2","2/3,1/3,0","1/3,2/3,1/2" ],"desc": "3.2","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/3,2/3,1/4","2/3,1/3,3/4","2/3,1/3,1/4","1/3,2/3,3/4" ],"desc": "-6..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-3.m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-62m","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 193 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_194.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_194.json new file mode 100755 index 000000000000..fc53cf0ce643 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_194.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "194:a,b,c","det": 1.0,"gen": [ "x,y,z","-y,x-y,z","-x,-y,z+1/2","y,x,-z","-x,-y,-z" ],"gp": [ "x,y,z","-y,x-y,z","-x+y,-x,z","-x,-y,z+1/2","y,-x+y,z+1/2","x-y,x,z+1/2","y,x,-z","x-y,-y,-z","-x,-x+y,-z","-y,-x,-z+1/2","-x+y,y,-z+1/2","x,x-y,-z+1/2","-x,-y,-z","y,-x+y,-z","x-y,x,-z","x,y,-z+1/2","-y,x-y,-z+1/2","-x+y,-x,-z+1/2","-y,-x,z","-x+y,y,z","x,x-y,z","y,x,z+1/2","x-y,-y,z+1/2","-x,-x+y,z+1/2" ],"hall": "-P 6c 2c","hm": "P 63/m m c","id": "P_63/m_m_c","jmolId": "194","set": 1,"sg": 194,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 24 },{ "coord": [ "x,2x,z","-2x,-x,z","x,-x,z","-x,-2x,z+1/2","2x,x,z+1/2","-x,x,z+1/2","2x,x,-z","-x,-2x,-z","-x,x,-z","-2x,-x,-z+1/2","x,2x,-z+1/2","x,-x,-z+1/2" ],"desc": ".m.","geom": "plane","label": "k","mult": 12 },{ "coord": [ "x,y,1/4","-y,x-y,1/4","-x+y,-x,1/4","-x,-y,3/4","y,-x+y,3/4","x-y,x,3/4","y,x,3/4","x-y,-y,3/4","-x,-x+y,3/4","-y,-x,1/4","-x+y,y,1/4","x,x-y,1/4" ],"desc": "m..","geom": "plane","label": "j","mult": 12 },{ "coord": [ "x,0,0","0,x,0","-x,-x,0","-x,0,1/2","0,-x,1/2","x,x,1/2","-x,0,0","0,-x,0","x,x,0","x,0,1/2","0,x,1/2","-x,-x,1/2" ],"desc": ".2.","geom": "line","label": "i","mult": 12 },{ "coord": [ "x,2x,1/4","-2x,-x,1/4","x,-x,1/4","-x,-2x,3/4","2x,x,3/4","-x,x,3/4" ],"desc": "mm2","geom": "line","label": "h","mult": 6 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "g","mult": 6 },{ "coord": [ "1/3,2/3,z","2/3,1/3,z+1/2","2/3,1/3,-z","1/3,2/3,-z+1/2" ],"desc": "3m.","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "3m.","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/3,2/3,3/4","2/3,1/3,1/4" ],"desc": "-6m2","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/3,2/3,1/4","2/3,1/3,3/4" ],"desc": "-6m2","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-6m2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "-3m.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 194 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_195.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_195.json new file mode 100755 index 000000000000..6e83dc677165 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_195.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "195:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x" ],"hall": "P 2 2 3","hm": "P 2 3","id": "P_2_3","jmolId": "195","set": 1,"sg": 195,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "j","mult": 12 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,1/2","1/2,-x,1/2","1/2,1/2,x","1/2,1/2,-x" ],"desc": "2..","geom": "line","label": "i","mult": 6 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x" ],"desc": "2..","geom": "line","label": "h","mult": 6 },{ "coord": [ "x,0,1/2","-x,0,1/2","1/2,x,0","1/2,-x,0","0,1/2,x","0,1/2,-x" ],"desc": "2..","geom": "line","label": "g","mult": 6 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "2..","geom": "line","label": "f","mult": 6 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x" ],"desc": ".3.","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","0,1/2,0","0,0,1/2" ],"desc": "222 . .","geom": "point","label": "d","mult": 3 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "222 . .","geom": "point","label": "c","mult": 3 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "23.","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "23.","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 195 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_196.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_196.json new file mode 100755 index 000000000000..a213556881d4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_196.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "196:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","z,x+1/2,y+1/2","z,-x+1/2,-y+1/2","-z,-x+1/2,y+1/2","-z,x+1/2,-y+1/2","y,z+1/2,x+1/2","-y,z+1/2,-x+1/2","y,-z+1/2,-x+1/2","-y,-z+1/2,x+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","z+1/2,x,y+1/2","z+1/2,-x,-y+1/2","-z+1/2,-x,y+1/2","-z+1/2,x,-y+1/2","y+1/2,z,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z,-x+1/2","-y+1/2,-z,x+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","z+1/2,x+1/2,y","z+1/2,-x+1/2,-y","-z+1/2,-x+1/2,y","-z+1/2,x+1/2,-y","y+1/2,z+1/2,x","-y+1/2,z+1/2,-x","y+1/2,-z+1/2,-x","-y+1/2,-z+1/2,x" ],"hall": "F 2 2 3","hm": "F 2 3","id": "F_2_3","jmolId": "196","set": 1,"sg": 196,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 48 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4","1/4,x,1/4","1/4,-x,3/4","1/4,1/4,x","3/4,1/4,-x" ],"desc": "2..","geom": "line","label": "g","mult": 24 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "2..","geom": "line","label": "f","mult": 24 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x" ],"desc": ".3.","geom": "line","label": "e","mult": 16 },{ "coord": [ "3/4,3/4,3/4" ],"desc": "23.","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4" ],"desc": "23.","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "23.","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "23.","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 196 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_197.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_197.json new file mode 100755 index 000000000000..73e51fe67567 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_197.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "197:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","z+1/2,x+1/2,y+1/2","z+1/2,-x+1/2,-y+1/2","-z+1/2,-x+1/2,y+1/2","-z+1/2,x+1/2,-y+1/2","y+1/2,z+1/2,x+1/2","-y+1/2,z+1/2,-x+1/2","y+1/2,-z+1/2,-x+1/2","-y+1/2,-z+1/2,x+1/2" ],"hall": "I 2 2 3","hm": "I 2 3","id": "I_2_3","jmolId": "197","set": 1,"sg": 197,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 24 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x" ],"desc": "2..","geom": "line","label": "e","mult": 12 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "2..","geom": "line","label": "d","mult": 12 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x" ],"desc": ".3.","geom": "line","label": "c","mult": 8 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "222 . .","geom": "point","label": "b","mult": 6 },{ "coord": [ "0,0,0" ],"desc": "23.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 197 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_198.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_198.json new file mode 100755 index 000000000000..d1e2261c1513 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_198.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "198:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2" ],"hall": "P 2ac 2ab 3","hm": "P 21 3","id": "P_21_3","jmolId": "198","set": 1,"sg": 198,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 12 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x" ],"desc": ".3.","geom": "line","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 198 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_199.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_199.json new file mode 100755 index 000000000000..96eb4f2f22a5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_199.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "199:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-x+1/2,y,-z","x,-y,-z+1/2","z+1/2,x+1/2,y+1/2","z,-x,-y+1/2","-z,-x+1/2,y","-z+1/2,x,-y","y+1/2,z+1/2,x+1/2","-y+1/2,z,-x","y,-z,-x+1/2","-y,-z+1/2,x" ],"hall": "I 2b 2c 3","hm": "I 21 3","id": "I_21_3","jmolId": "199","set": 1,"sg": 199,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 24 },{ "coord": [ "x,0,1/4","-x+1/2,0,3/4","1/4,x,0","3/4,-x+1/2,0","0,1/4,x","0,3/4,-x+1/2" ],"desc": "2..","geom": "line","label": "b","mult": 12 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x" ],"desc": ".3.","geom": "line","label": "a","mult": 8 } ] } } ],"n": 1,"sg": 199 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_2.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_2.json new file mode 100755 index 000000000000..4815a8bf75e3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_2.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "2:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,-z" ],"hall": "-P 1","hm": "P -1","id": "P_-1","jmolId": "2","set": 1,"sg": 2,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "h","mult": 1 },{ "coord": [ "0,1/2,1/2" ],"desc": "-1","geom": "point","label": "g","mult": 1 },{ "coord": [ "1/2,0,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "-1","geom": "point","label": "e","mult": 1 },{ "coord": [ "1/2,0,0" ],"desc": "-1","geom": "point","label": "d","mult": 1 },{ "coord": [ "0,1/2,0" ],"desc": "-1","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 2 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_20.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_20.json new file mode 100755 index 000000000000..e6368847409c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_20.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "20:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x,y,-z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x,y,-z+1/2","x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z" ],"hall": "C 2c 2","hm": "C 2 2 21","id": "C_2_2_21","jmolId": "20","set": 1,"sg": 20,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "0,y,1/4","0,-y,3/4" ],"desc": ".2.","geom": "line","label": "b","mult": 4 },{ "coord": [ "x,0,0","-x,0,1/2" ],"desc": "2..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "20:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","-x+1/2,-y,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z","-x+1/2,-y,z","-x,y,-z","x,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,z+1/2","-x,y+1/2,-z+1/2" ],"hall": "A 2a 2a","hm": "A 21 2 2","id": "A_21_2_2","jmolId": "20:cab","set": 2,"sg": 20,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "1/4,0,y","3/4,0,-y" ],"desc": ".2.","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,x,0","1/2,-x,0" ],"desc": "2..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "20:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","x,-y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z","x,-y+1/2,-z","-x,-y,z","x+1/2,y,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y,z+1/2" ],"hall": "B 2 2b","hm": "B 2 21 2","id": "B_2_21_2","jmolId": "20:bca","set": 3,"sg": 20,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "y,1/4,0","-y,3/4,0" ],"desc": ".2.","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,x","0,1/2,-x" ],"desc": "2..","geom": "line","label": "a","mult": 4 } ] } } ],"n": 3,"sg": 20 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_200.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_200.json new file mode 100755 index 000000000000..33322469723e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_200.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "200:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","-z,-x,-y","-z,x,y","z,x,-y","z,-x,y","-y,-z,-x","y,-z,x","-y,z,x","y,z,-x" ],"hall": "-P 2 2 3","hm": "P m -3","id": "P_m_-3","jmolId": "200","set": 1,"sg": 200,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 24 },{ "coord": [ "1/2,y,z","1/2,-y,z","1/2,y,-z","1/2,-y,-z","z,1/2,y","z,1/2,-y","-z,1/2,y","-z,1/2,-y","y,z,1/2","-y,z,1/2","y,-z,1/2","-y,-z,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 12 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z","z,0,y","z,0,-y","-z,0,y","-z,0,-y","y,z,0","-y,z,0","y,-z,0","-y,-z,0" ],"desc": "m..","geom": "plane","label": "j","mult": 12 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","-x,-x,-x","x,x,-x","x,-x,x","-x,x,x" ],"desc": ".3.","geom": "line","label": "i","mult": 8 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,1/2","1/2,-x,1/2","1/2,1/2,x","1/2,1/2,-x" ],"desc": "mm2 . .","geom": "line","label": "h","mult": 6 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x" ],"desc": "mm2 . .","geom": "line","label": "g","mult": 6 },{ "coord": [ "x,0,1/2","-x,0,1/2","1/2,x,0","1/2,-x,0","0,1/2,x","0,1/2,-x" ],"desc": "mm2 . .","geom": "line","label": "f","mult": 6 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "mm2 . .","geom": "line","label": "e","mult": 6 },{ "coord": [ "1/2,0,0","0,1/2,0","0,0,1/2" ],"desc": "mmm . .","geom": "point","label": "d","mult": 3 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "mmm . .","geom": "point","label": "c","mult": 3 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "m-3.","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "m-3.","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 200 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_201.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_201.json new file mode 100755 index 000000000000..4c0b9977a546 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_201.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "201:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z+1/2","z,x,y","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z+1/2","x,-y+1/2,-z+1/2","z,x,y","z,-x+1/2,-y+1/2","-z+1/2,-x+1/2,y","-z+1/2,x,-y+1/2","y,z,x","-y+1/2,z,-x+1/2","y,-z+1/2,-x+1/2","-y+1/2,-z+1/2,x","-x,-y,-z","x+1/2,y+1/2,-z","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2","-z,-x,-y","-z,x+1/2,y+1/2","z+1/2,x+1/2,-y","z+1/2,-x,y+1/2","-y,-z,-x","y+1/2,-z,x+1/2","-y,z+1/2,x+1/2","y+1/2,z+1/2,-x" ],"hall": "-P 2ab 2bc 3","hm": "P n -3 :2","id": "P_n_-3_2","jmolId": "201:2","set": 1,"sg": 201,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "h","mult": 24 },{ "coord": [ "x,3/4,1/4","-x+1/2,3/4,1/4","1/4,x,3/4","1/4,-x+1/2,3/4","3/4,1/4,x","3/4,1/4,-x+1/2","-x,1/4,3/4","x+1/2,1/4,3/4","3/4,-x,1/4","3/4,x+1/2,1/4","1/4,3/4,-x","1/4,3/4,x+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 12 },{ "coord": [ "x,1/4,1/4","-x+1/2,1/4,1/4","1/4,x,1/4","1/4,-x+1/2,1/4","1/4,1/4,x","1/4,1/4,-x+1/2","-x,3/4,3/4","x+1/2,3/4,3/4","3/4,-x,3/4","3/4,x+1/2,3/4","3/4,3/4,-x","3/4,3/4,x+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 12 },{ "coord": [ "x,x,x","-x+1/2,-x+1/2,x","-x+1/2,x,-x+1/2","x,-x+1/2,-x+1/2","-x,-x,-x","x+1/2,x+1/2,-x","x+1/2,-x,x+1/2","-x,x+1/2,x+1/2" ],"desc": ".3.","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,3/4,3/4","3/4,1/4,3/4","3/4,3/4,1/4","3/4,1/4,1/4","1/4,3/4,1/4","1/4,1/4,3/4" ],"desc": "222 . .","geom": "point","label": "d","mult": 6 },{ "coord": [ "1/2,1/2,1/2","0,0,1/2","0,1/2,0","1/2,0,0" ],"desc": ".-3.","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2" ],"desc": ".-3.","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "23.","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "201:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-z+1/2,-x+1/2,-y+1/2","-z+1/2,x+1/2,y+1/2","z+1/2,x+1/2,-y+1/2","z+1/2,-x+1/2,y+1/2","-y+1/2,-z+1/2,-x+1/2","y+1/2,-z+1/2,x+1/2","-y+1/2,z+1/2,x+1/2","y+1/2,z+1/2,-x+1/2" ],"hall": "P 2 2 3 -1n","hm": "P n -3 :1","id": "P_n_-3_1","jmolId": "201:1","set": 2,"sg": 201,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "h","mult": 24 },{ "coord": [ "x+1/4,0,1/2","-x+3/4,0,1/2","1/2,x+1/4,0","1/2,-x+3/4,0","0,1/2,x+1/4","0,1/2,-x+3/4","-x+1/4,1/2,0","x+3/4,1/2,0","0,-x+1/4,1/2","0,x+3/4,1/2","1/2,0,-x+1/4","1/2,0,x+3/4" ],"desc": "2..","geom": "line","label": "g","mult": 12 },{ "coord": [ "x+1/4,1/2,1/2","-x+3/4,1/2,1/2","1/2,x+1/4,1/2","1/2,-x+3/4,1/2","1/2,1/2,x+1/4","1/2,1/2,-x+3/4","-x+1/4,0,0","x+3/4,0,0","0,-x+1/4,0","0,x+3/4,0","0,0,-x+1/4","0,0,x+3/4" ],"desc": "2..","geom": "line","label": "f","mult": 12 },{ "coord": [ "x+1/4,x+1/4,x+1/4","-x+3/4,-x+3/4,x+1/4","-x+3/4,x+1/4,-x+3/4","x+1/4,-x+3/4,-x+3/4","-x+1/4,-x+1/4,-x+1/4","x+3/4,x+3/4,-x+1/4","x+3/4,-x+1/4,x+3/4","-x+1/4,x+3/4,x+3/4" ],"desc": ".3.","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/2,0,0","0,1/2,0","0,0,1/2","0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "222 . .","geom": "point","label": "d","mult": 6 },{ "coord": [ "3/4,3/4,3/4","1/4,1/4,3/4","1/4,3/4,1/4","3/4,1/4,1/4" ],"desc": ".-3.","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": ".-3.","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/2,1/2,1/2","0,0,0" ],"desc": "23.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 2,"sg": 201 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_202.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_202.json new file mode 100755 index 000000000000..5be2aa276ee2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_202.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "202:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","-z,-x,-y","-z,x,y","z,x,-y","z,-x,y","-y,-z,-x","y,-z,x","-y,z,x","y,z,-x","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","z,x+1/2,y+1/2","z,-x+1/2,-y+1/2","-z,-x+1/2,y+1/2","-z,x+1/2,-y+1/2","y,z+1/2,x+1/2","-y,z+1/2,-x+1/2","y,-z+1/2,-x+1/2","-y,-z+1/2,x+1/2","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","-z,-x+1/2,-y+1/2","-z,x+1/2,y+1/2","z,x+1/2,-y+1/2","z,-x+1/2,y+1/2","-y,-z+1/2,-x+1/2","y,-z+1/2,x+1/2","-y,z+1/2,x+1/2","y,z+1/2,-x+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","z+1/2,x,y+1/2","z+1/2,-x,-y+1/2","-z+1/2,-x,y+1/2","-z+1/2,x,-y+1/2","y+1/2,z,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z,-x+1/2","-y+1/2,-z,x+1/2","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2","-z+1/2,-x,-y+1/2","-z+1/2,x,y+1/2","z+1/2,x,-y+1/2","z+1/2,-x,y+1/2","-y+1/2,-z,-x+1/2","y+1/2,-z,x+1/2","-y+1/2,z,x+1/2","y+1/2,z,-x+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","z+1/2,x+1/2,y","z+1/2,-x+1/2,-y","-z+1/2,-x+1/2,y","-z+1/2,x+1/2,-y","y+1/2,z+1/2,x","-y+1/2,z+1/2,-x","y+1/2,-z+1/2,-x","-y+1/2,-z+1/2,x","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-z+1/2,-x+1/2,-y","-z+1/2,x+1/2,y","z+1/2,x+1/2,-y","z+1/2,-x+1/2,y","-y+1/2,-z+1/2,-x","y+1/2,-z+1/2,x","-y+1/2,z+1/2,x","y+1/2,z+1/2,-x" ],"hall": "-F 2 2 3","hm": "F m -3","id": "F_m_-3","jmolId": "202","set": 1,"sg": 202,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 96 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z","z,0,y","z,0,-y","-z,0,y","-z,0,-y","y,z,0","-y,z,0","y,-z,0","-y,-z,0" ],"desc": "m..","geom": "plane","label": "h","mult": 48 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4","1/4,x,1/4","1/4,-x,3/4","1/4,1/4,x","3/4,1/4,-x","-x,3/4,3/4","x,1/4,3/4","3/4,-x,3/4","3/4,x,1/4","3/4,3/4,-x","1/4,3/4,x" ],"desc": "2..","geom": "line","label": "g","mult": 48 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","-x,-x,-x","x,x,-x","x,-x,x","-x,x,x" ],"desc": ".3.","geom": "line","label": "f","mult": 32 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "mm2 . .","geom": "line","label": "e","mult": 24 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,0,1/4","1/4,0,3/4","1/4,1/4,0","3/4,1/4,0" ],"desc": "2/m..","geom": "point","label": "d","mult": 24 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "23.","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "m-3.","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "m-3.","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 202 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_203.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_203.json new file mode 100755 index 000000000000..883450fc5308 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_203.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "203:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+3/4,-y+3/4,z","-x+3/4,y,-z+3/4","z,x,y","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+3/4,-y+3/4,z","-x+3/4,y,-z+3/4","x,-y+3/4,-z+3/4","z,x,y","z,-x+3/4,-y+3/4","-z+3/4,-x+3/4,y","-z+3/4,x,-y+3/4","y,z,x","-y+3/4,z,-x+3/4","y,-z+3/4,-x+3/4","-y+3/4,-z+3/4,x","-x,-y,-z","x+1/4,y+1/4,-z","x+1/4,-y,z+1/4","-x,y+1/4,z+1/4","-z,-x,-y","-z,x+1/4,y+1/4","z+1/4,x+1/4,-y","z+1/4,-x,y+1/4","-y,-z,-x","y+1/4,-z,x+1/4","-y,z+1/4,x+1/4","y+1/4,z+1/4,-x","x,y+1/2,z+1/2","-x+3/4,-y+1/4,z+1/2","-x+3/4,y+1/2,-z+1/4","x,-y+1/4,-z+1/4","z,x+1/2,y+1/2","z,-x+1/4,-y+1/4","-z+3/4,-x+1/4,y+1/2","-z+3/4,x+1/2,-y+1/4","y,z+1/2,x+1/2","-y+3/4,z+1/2,-x+1/4","y,-z+1/4,-x+1/4","-y+3/4,-z+1/4,x+1/2","-x,-y+1/2,-z+1/2","x+1/4,y+3/4,-z+1/2","x+1/4,-y+1/2,z+3/4","-x,y+3/4,z+3/4","-z,-x+1/2,-y+1/2","-z,x+3/4,y+3/4","z+1/4,x+3/4,-y+1/2","z+1/4,-x+1/2,y+3/4","-y,-z+1/2,-x+1/2","y+1/4,-z+1/2,x+3/4","-y,z+3/4,x+3/4","y+1/4,z+3/4,-x+1/2","x+1/2,y,z+1/2","-x+1/4,-y+3/4,z+1/2","-x+1/4,y,-z+1/4","x+1/2,-y+3/4,-z+1/4","z+1/2,x,y+1/2","z+1/2,-x+3/4,-y+1/4","-z+1/4,-x+3/4,y+1/2","-z+1/4,x,-y+1/4","y+1/2,z,x+1/2","-y+1/4,z,-x+1/4","y+1/2,-z+3/4,-x+1/4","-y+1/4,-z+3/4,x+1/2","-x+1/2,-y,-z+1/2","x+3/4,y+1/4,-z+1/2","x+3/4,-y,z+3/4","-x+1/2,y+1/4,z+3/4","-z+1/2,-x,-y+1/2","-z+1/2,x+1/4,y+3/4","z+3/4,x+1/4,-y+1/2","z+3/4,-x,y+3/4","-y+1/2,-z,-x+1/2","y+3/4,-z,x+3/4","-y+1/2,z+1/4,x+3/4","y+3/4,z+1/4,-x+1/2","x+1/2,y+1/2,z","-x+1/4,-y+1/4,z","-x+1/4,y+1/2,-z+3/4","x+1/2,-y+1/4,-z+3/4","z+1/2,x+1/2,y","z+1/2,-x+1/4,-y+3/4","-z+1/4,-x+1/4,y","-z+1/4,x+1/2,-y+3/4","y+1/2,z+1/2,x","-y+1/4,z+1/2,-x+3/4","y+1/2,-z+1/4,-x+3/4","-y+1/4,-z+1/4,x","-x+1/2,-y+1/2,-z","x+3/4,y+3/4,-z","x+3/4,-y+1/2,z+1/4","-x+1/2,y+3/4,z+1/4","-z+1/2,-x+1/2,-y","-z+1/2,x+3/4,y+1/4","z+3/4,x+3/4,-y","z+3/4,-x+1/2,y+1/4","-y+1/2,-z+1/2,-x","y+3/4,-z+1/2,x+1/4","-y+1/2,z+3/4,x+1/4","y+3/4,z+3/4,-x" ],"hall": "-F 2uv 2vw 3","hm": "F d -3 :2","id": "F_d_-3_2","jmolId": "203:2","set": 1,"sg": 203,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 96 },{ "coord": [ "x,1/8,1/8","-x+3/4,5/8,1/8","1/8,x,1/8","1/8,-x+3/4,5/8","1/8,1/8,x","5/8,1/8,-x+3/4","-x,7/8,7/8","x+1/4,3/8,7/8","7/8,-x,7/8","7/8,x+1/4,3/8","7/8,7/8,-x","3/8,7/8,x+1/4" ],"desc": "2..","geom": "line","label": "f","mult": 48 },{ "coord": [ "x,x,x","-x+3/4,-x+3/4,x","-x+3/4,x,-x+3/4","x,-x+3/4,-x+3/4","-x,-x,-x","x+1/4,x+1/4,-x","x+1/4,-x,x+1/4","-x,x+1/4,x+1/4" ],"desc": ".3.","geom": "line","label": "e","mult": 32 },{ "coord": [ "1/2,1/2,1/2","1/4,1/4,1/2","1/4,1/2,1/4","1/2,1/4,1/4" ],"desc": ".-3.","geom": "point","label": "d","mult": 16 },{ "coord": [ "0,0,0","3/4,3/4,0","3/4,0,3/4","0,3/4,3/4" ],"desc": ".-3.","geom": "point","label": "c","mult": 16 },{ "coord": [ "5/8,5/8,5/8","3/8,3/8,3/8" ],"desc": "23.","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/8,1/8,1/8","7/8,7/8,7/8" ],"desc": "23.","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "203:a,b,c;-1/8,-1/8,-1/8","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","-x+1/4,-y+1/4,-z+1/4","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","-x+1/4,-y+1/4,-z+1/4","x+1/4,y+1/4,-z+1/4","x+1/4,-y+1/4,z+1/4","-x+1/4,y+1/4,z+1/4","-z+1/4,-x+1/4,-y+1/4","-z+1/4,x+1/4,y+1/4","z+1/4,x+1/4,-y+1/4","z+1/4,-x+1/4,y+1/4","-y+1/4,-z+1/4,-x+1/4","y+1/4,-z+1/4,x+1/4","-y+1/4,z+1/4,x+1/4","y+1/4,z+1/4,-x+1/4","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","z,x+1/2,y+1/2","z,-x+1/2,-y+1/2","-z,-x+1/2,y+1/2","-z,x+1/2,-y+1/2","y,z+1/2,x+1/2","-y,z+1/2,-x+1/2","y,-z+1/2,-x+1/2","-y,-z+1/2,x+1/2","-x+1/4,-y+3/4,-z+3/4","x+1/4,y+3/4,-z+3/4","x+1/4,-y+3/4,z+3/4","-x+1/4,y+3/4,z+3/4","-z+1/4,-x+3/4,-y+3/4","-z+1/4,x+3/4,y+3/4","z+1/4,x+3/4,-y+3/4","z+1/4,-x+3/4,y+3/4","-y+1/4,-z+3/4,-x+3/4","y+1/4,-z+3/4,x+3/4","-y+1/4,z+3/4,x+3/4","y+1/4,z+3/4,-x+3/4","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","z+1/2,x,y+1/2","z+1/2,-x,-y+1/2","-z+1/2,-x,y+1/2","-z+1/2,x,-y+1/2","y+1/2,z,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z,-x+1/2","-y+1/2,-z,x+1/2","-x+3/4,-y+1/4,-z+3/4","x+3/4,y+1/4,-z+3/4","x+3/4,-y+1/4,z+3/4","-x+3/4,y+1/4,z+3/4","-z+3/4,-x+1/4,-y+3/4","-z+3/4,x+1/4,y+3/4","z+3/4,x+1/4,-y+3/4","z+3/4,-x+1/4,y+3/4","-y+3/4,-z+1/4,-x+3/4","y+3/4,-z+1/4,x+3/4","-y+3/4,z+1/4,x+3/4","y+3/4,z+1/4,-x+3/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","z+1/2,x+1/2,y","z+1/2,-x+1/2,-y","-z+1/2,-x+1/2,y","-z+1/2,x+1/2,-y","y+1/2,z+1/2,x","-y+1/2,z+1/2,-x","y+1/2,-z+1/2,-x","-y+1/2,-z+1/2,x","-x+3/4,-y+3/4,-z+1/4","x+3/4,y+3/4,-z+1/4","x+3/4,-y+3/4,z+1/4","-x+3/4,y+3/4,z+1/4","-z+3/4,-x+3/4,-y+1/4","-z+3/4,x+3/4,y+1/4","z+3/4,x+3/4,-y+1/4","z+3/4,-x+3/4,y+1/4","-y+3/4,-z+3/4,-x+1/4","y+3/4,-z+3/4,x+1/4","-y+3/4,z+3/4,x+1/4","y+3/4,z+3/4,-x+1/4" ],"hall": "F 2 2 3 -1d","hm": "F d -3 :1","id": "F_d_-3_1","jmolId": "203:1","set": 2,"sg": 203,"trm": "a,b,c;-1/8,-1/8,-1/8","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 96 },{ "coord": [ "x+1/8,1/4,1/4","-x+7/8,3/4,1/4","1/4,x+1/8,1/4","1/4,-x+7/8,3/4","1/4,1/4,x+1/8","3/4,1/4,-x+7/8","-x+1/8,0,0","x+3/8,1/2,0","0,-x+1/8,0","0,x+3/8,1/2","0,0,-x+1/8","1/2,0,x+3/8" ],"desc": "2..","geom": "line","label": "f","mult": 48 },{ "coord": [ "x+1/8,x+1/8,x+1/8","-x+7/8,-x+7/8,x+1/8","-x+7/8,x+1/8,-x+7/8","x+1/8,-x+7/8,-x+7/8","-x+1/8,-x+1/8,-x+1/8","x+3/8,x+3/8,-x+1/8","x+3/8,-x+1/8,x+3/8","-x+1/8,x+3/8,x+3/8" ],"desc": ".3.","geom": "line","label": "e","mult": 32 },{ "coord": [ "5/8,5/8,5/8","3/8,3/8,5/8","3/8,5/8,3/8","5/8,3/8,3/8" ],"desc": ".-3.","geom": "point","label": "d","mult": 16 },{ "coord": [ "1/8,1/8,1/8","7/8,7/8,1/8","7/8,1/8,7/8","1/8,7/8,7/8" ],"desc": ".-3.","geom": "point","label": "c","mult": 16 },{ "coord": [ "3/4,3/4,3/4","1/2,1/2,1/2" ],"desc": "23.","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/4,1/4,1/4","0,0,0" ],"desc": "23.","geom": "point","label": "a","mult": 8 } ] } } ],"n": 2,"sg": 203 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_204.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_204.json new file mode 100755 index 000000000000..7f8342ec636c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_204.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "204:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","-z,-x,-y","-z,x,y","z,x,-y","z,-x,y","-y,-z,-x","y,-z,x","-y,z,x","y,z,-x","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","z+1/2,x+1/2,y+1/2","z+1/2,-x+1/2,-y+1/2","-z+1/2,-x+1/2,y+1/2","-z+1/2,x+1/2,-y+1/2","y+1/2,z+1/2,x+1/2","-y+1/2,z+1/2,-x+1/2","y+1/2,-z+1/2,-x+1/2","-y+1/2,-z+1/2,x+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-z+1/2,-x+1/2,-y+1/2","-z+1/2,x+1/2,y+1/2","z+1/2,x+1/2,-y+1/2","z+1/2,-x+1/2,y+1/2","-y+1/2,-z+1/2,-x+1/2","y+1/2,-z+1/2,x+1/2","-y+1/2,z+1/2,x+1/2","y+1/2,z+1/2,-x+1/2" ],"hall": "-I 2 2 3","hm": "I m -3","id": "I_m_-3","jmolId": "204","set": 1,"sg": 204,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 48 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z","z,0,y","z,0,-y","-z,0,y","-z,0,-y","y,z,0","-y,z,0","y,-z,0","-y,-z,0" ],"desc": "m..","geom": "plane","label": "g","mult": 24 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","-x,-x,-x","x,x,-x","x,-x,x","-x,x,x" ],"desc": ".3.","geom": "line","label": "f","mult": 16 },{ "coord": [ "x,0,1/2","-x,0,1/2","1/2,x,0","1/2,-x,0","0,1/2,x","0,1/2,-x" ],"desc": "mm2 . .","geom": "line","label": "e","mult": 12 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "mm2 . .","geom": "line","label": "d","mult": 12 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": ".-3.","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "mmm . .","geom": "point","label": "b","mult": 6 },{ "coord": [ "0,0,0" ],"desc": "m-3.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 204 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_205.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_205.json new file mode 100755 index 000000000000..737c74a98a4f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_205.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "205:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2","-x,-y,-z","x+1/2,y,-z+1/2","x,-y+1/2,z+1/2","-x+1/2,y+1/2,z","-z,-x,-y","-z+1/2,x+1/2,y","z+1/2,x,-y+1/2","z,-x+1/2,y+1/2","-y,-z,-x","y,-z+1/2,x+1/2","-y+1/2,z+1/2,x","y+1/2,z,-x+1/2" ],"hall": "-P 2ac 2ab 3","hm": "P a -3","id": "P_a_-3","jmolId": "205","set": 1,"sg": 205,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 24 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x","-x,-x,-x","x+1/2,x,-x+1/2","x,-x+1/2,x+1/2","-x+1/2,x+1/2,x" ],"desc": ".3.","geom": "line","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,1/2","0,1/2,0","1/2,0,0","0,0,1/2" ],"desc": ".-3.","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2","0,1/2,1/2","1/2,1/2,0" ],"desc": ".-3.","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 205 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_206.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_206.json new file mode 100755 index 000000000000..147dc0dff72d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_206.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "206:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2","-x,-y,-z","x+1/2,y,-z+1/2","x,-y+1/2,z+1/2","-x+1/2,y+1/2,z","-z,-x,-y","-z+1/2,x+1/2,y","z+1/2,x,-y+1/2","z,-x+1/2,y+1/2","-y,-z,-x","y,-z+1/2,x+1/2","-y+1/2,z+1/2,x","y+1/2,z,-x+1/2","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-x+1/2,y,-z","x,-y,-z+1/2","z+1/2,x+1/2,y+1/2","z,-x,-y+1/2","-z,-x+1/2,y","-z+1/2,x,-y","y+1/2,z+1/2,x+1/2","-y+1/2,z,-x","y,-z,-x+1/2","-y,-z+1/2,x","-x+1/2,-y+1/2,-z+1/2","x,y+1/2,-z","x+1/2,-y,z","-x,y,z+1/2","-z+1/2,-x+1/2,-y+1/2","-z,x,y+1/2","z,x+1/2,-y","z+1/2,-x,y","-y+1/2,-z+1/2,-x+1/2","y+1/2,-z,x","-y,z,x+1/2","y,z+1/2,-x" ],"hall": "-I 2b 2c 3","hm": "I a -3","id": "I_a_-3","jmolId": "206","set": 1,"sg": 206,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 48 },{ "coord": [ "x,0,1/4","-x+1/2,0,3/4","1/4,x,0","3/4,-x+1/2,0","0,1/4,x","0,3/4,-x+1/2","-x,0,3/4","x+1/2,0,1/4","3/4,-x,0","1/4,x+1/2,0","0,3/4,-x","0,1/4,x+1/2" ],"desc": "2..","geom": "line","label": "d","mult": 24 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x","-x,-x,-x","x+1/2,x,-x+1/2","x,-x+1/2,x+1/2","-x+1/2,x+1/2,x" ],"desc": ".3.","geom": "line","label": "c","mult": 16 },{ "coord": [ "1/4,1/4,1/4","1/4,3/4,3/4","3/4,3/4,1/4","3/4,1/4,3/4" ],"desc": ".-3.","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,0","1/2,0,1/2","0,1/2,1/2","1/2,1/2,0" ],"desc": ".-3.","geom": "point","label": "a","mult": 8 } ] } } ],"n": 1,"sg": 206 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_207.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_207.json new file mode 100755 index 000000000000..51db227ce457 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_207.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "207:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,-z","-y,-x,-z","y,-x,z","-y,x,z","x,z,-y","-x,z,y","-x,-z,-y","x,-z,y","z,y,-x","z,-y,x","-z,y,x","-z,-y,-x" ],"hall": "P 4 2 3","hm": "P 4 3 2","id": "P_4_3_2","jmolId": "207","set": 1,"sg": 207,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 24 },{ "coord": [ "1/2,y,y","1/2,-y,y","1/2,y,-y","1/2,-y,-y","y,1/2,y","y,1/2,-y","-y,1/2,y","-y,1/2,-y","y,y,1/2","-y,y,1/2","y,-y,1/2","-y,-y,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 12 },{ "coord": [ "0,y,y","0,-y,y","0,y,-y","0,-y,-y","y,0,y","y,0,-y","-y,0,y","-y,0,-y","y,y,0","-y,y,0","y,-y,0","-y,-y,0" ],"desc": "..2","geom": "line","label": "i","mult": 12 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x","1/2,x,0","1/2,-x,0","x,0,1/2","-x,0,1/2","0,1/2,-x","0,1/2,x" ],"desc": "2..","geom": "line","label": "h","mult": 12 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x,x,-x","-x,-x,-x","x,-x,x","-x,x,x" ],"desc": ".3.","geom": "line","label": "g","mult": 8 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,1/2","1/2,-x,1/2","1/2,1/2,x","1/2,1/2,-x" ],"desc": "4..","geom": "line","label": "f","mult": 6 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "4..","geom": "line","label": "e","mult": 6 },{ "coord": [ "1/2,0,0","0,1/2,0","0,0,1/2" ],"desc": "42. 2","geom": "point","label": "d","mult": 3 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "42. 2","geom": "point","label": "c","mult": 3 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "432","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "432","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 207 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_208.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_208.json new file mode 100755 index 000000000000..429dc70b456a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_208.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "208:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y+1/2,x+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","x+1/2,z+1/2,-y+1/2","-x+1/2,z+1/2,y+1/2","-x+1/2,-z+1/2,-y+1/2","x+1/2,-z+1/2,y+1/2","z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,x+1/2","-z+1/2,-y+1/2,-x+1/2" ],"hall": "P 4n 2 3","hm": "P 42 3 2","id": "P_42_3_2","jmolId": "208","set": 1,"sg": 208,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 24 },{ "coord": [ "1/4,y,y+1/2","3/4,-y,y+1/2","3/4,y,-y+1/2","1/4,-y,-y+1/2","y+1/2,1/4,y","y+1/2,3/4,-y","-y+1/2,3/4,y","-y+1/2,1/4,-y","y,y+1/2,1/4","-y,y+1/2,3/4","y,-y+1/2,3/4","-y,-y+1/2,1/4" ],"desc": "..2","geom": "line","label": "l","mult": 12 },{ "coord": [ "1/4,y,-y+1/2","3/4,-y,-y+1/2","3/4,y,y+1/2","1/4,-y,y+1/2","-y+1/2,1/4,y","-y+1/2,3/4,-y","y+1/2,3/4,y","y+1/2,1/4,-y","y,-y+1/2,1/4","-y,-y+1/2,3/4","y,y+1/2,3/4","-y,y+1/2,1/4" ],"desc": "..2","geom": "line","label": "k","mult": 12 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x","0,x+1/2,1/2","0,-x+1/2,1/2","x+1/2,1/2,0","-x+1/2,1/2,0","1/2,0,-x+1/2","1/2,0,x+1/2" ],"desc": "2..","geom": "line","label": "j","mult": 12 },{ "coord": [ "x,0,1/2","-x,0,1/2","1/2,x,0","1/2,-x,0","0,1/2,x","0,1/2,-x","1/2,x+1/2,0","1/2,-x+1/2,0","x+1/2,0,1/2","-x+1/2,0,1/2","0,1/2,-x+1/2","0,1/2,x+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 12 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x","1/2,x+1/2,1/2","1/2,-x+1/2,1/2","x+1/2,1/2,1/2","-x+1/2,1/2,1/2","1/2,1/2,-x+1/2","1/2,1/2,x+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 12 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x+1/2,x+1/2,-x+1/2","-x+1/2,-x+1/2,-x+1/2","x+1/2,-x+1/2,x+1/2","-x+1/2,x+1/2,x+1/2" ],"desc": ".3.","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0","0,1/4,1/2","0,3/4,1/2","1/2,0,1/4","1/2,0,3/4" ],"desc": "2.2 2","geom": "point","label": "f","mult": 6 },{ "coord": [ "1/4,0,1/2","3/4,0,1/2","1/2,1/4,0","1/2,3/4,0","0,1/2,1/4","0,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "e","mult": 6 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0","0,1/2,0","1/2,0,0","0,0,1/2" ],"desc": "222 . .","geom": "point","label": "d","mult": 6 },{ "coord": [ "3/4,3/4,3/4","1/4,1/4,3/4","1/4,3/4,1/4","3/4,1/4,1/4" ],"desc": ".32","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": ".32","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "23.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 208 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_209.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_209.json new file mode 100755 index 000000000000..2df2f202a57b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_209.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "209:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,-z","-y,-x,-z","y,-x,z","-y,x,z","x,z,-y","-x,z,y","-x,-z,-y","x,-z,y","z,y,-x","z,-y,x","-z,y,x","-z,-y,-x","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","z,x+1/2,y+1/2","z,-x+1/2,-y+1/2","-z,-x+1/2,y+1/2","-z,x+1/2,-y+1/2","y,z+1/2,x+1/2","-y,z+1/2,-x+1/2","y,-z+1/2,-x+1/2","-y,-z+1/2,x+1/2","y,x+1/2,-z+1/2","-y,-x+1/2,-z+1/2","y,-x+1/2,z+1/2","-y,x+1/2,z+1/2","x,z+1/2,-y+1/2","-x,z+1/2,y+1/2","-x,-z+1/2,-y+1/2","x,-z+1/2,y+1/2","z,y+1/2,-x+1/2","z,-y+1/2,x+1/2","-z,y+1/2,x+1/2","-z,-y+1/2,-x+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","z+1/2,x,y+1/2","z+1/2,-x,-y+1/2","-z+1/2,-x,y+1/2","-z+1/2,x,-y+1/2","y+1/2,z,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z,-x+1/2","-y+1/2,-z,x+1/2","y+1/2,x,-z+1/2","-y+1/2,-x,-z+1/2","y+1/2,-x,z+1/2","-y+1/2,x,z+1/2","x+1/2,z,-y+1/2","-x+1/2,z,y+1/2","-x+1/2,-z,-y+1/2","x+1/2,-z,y+1/2","z+1/2,y,-x+1/2","z+1/2,-y,x+1/2","-z+1/2,y,x+1/2","-z+1/2,-y,-x+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","z+1/2,x+1/2,y","z+1/2,-x+1/2,-y","-z+1/2,-x+1/2,y","-z+1/2,x+1/2,-y","y+1/2,z+1/2,x","-y+1/2,z+1/2,-x","y+1/2,-z+1/2,-x","-y+1/2,-z+1/2,x","y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z","y+1/2,-x+1/2,z","-y+1/2,x+1/2,z","x+1/2,z+1/2,-y","-x+1/2,z+1/2,y","-x+1/2,-z+1/2,-y","x+1/2,-z+1/2,y","z+1/2,y+1/2,-x","z+1/2,-y+1/2,x","-z+1/2,y+1/2,x","-z+1/2,-y+1/2,-x" ],"hall": "F 4 2 3","hm": "F 4 3 2","id": "F_4_3_2","jmolId": "209","set": 1,"sg": 209,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 96 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4","1/4,x,1/4","1/4,-x,3/4","1/4,1/4,x","3/4,1/4,-x","1/4,x,3/4","3/4,-x,3/4","x,1/4,3/4","-x,1/4,1/4","1/4,1/4,-x","1/4,3/4,x" ],"desc": "2..","geom": "line","label": "i","mult": 48 },{ "coord": [ "1/2,y,y","1/2,-y,y","1/2,y,-y","1/2,-y,-y","y,1/2,y","y,1/2,-y","-y,1/2,y","-y,1/2,-y","y,y,1/2","-y,y,1/2","y,-y,1/2","-y,-y,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 48 },{ "coord": [ "0,y,y","0,-y,y","0,y,-y","0,-y,-y","y,0,y","y,0,-y","-y,0,y","-y,0,-y","y,y,0","-y,y,0","y,-y,0","-y,-y,0" ],"desc": "..2","geom": "line","label": "g","mult": 48 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x,x,-x","-x,-x,-x","x,-x,x","-x,x,x" ],"desc": ".3.","geom": "line","label": "f","mult": 32 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "4..","geom": "line","label": "e","mult": 24 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,0,1/4","1/4,0,3/4","1/4,1/4,0","3/4,1/4,0" ],"desc": "2.2 2","geom": "point","label": "d","mult": 24 },{ "coord": [ "1/4,1/4,1/4","1/4,1/4,3/4" ],"desc": "23.","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "432","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "432","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 209 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_21.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_21.json new file mode 100755 index 000000000000..cf38d95fe549 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_21.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "21:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z" ],"hall": "C 2 2","hm": "C 2 2 2","id": "C_2_2_2","jmolId": "21","set": 1,"sg": 21,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "1/4,1/4,z","3/4,1/4,-z" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "..2","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "..2","geom": "line","label": "i","mult": 4 },{ "coord": [ "0,y,1/2","0,-y,1/2" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "x,0,1/2","-x,0,1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "x,0,0","-x,0,0" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,1/2" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "21:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x,-y,z","-x,y,-z","x,y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2" ],"hall": "A 2 2","hm": "A 2 2 2","id": "A_2_2_2","jmolId": "21:cab","set": 2,"sg": 21,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "z,1/4,1/4","-z,3/4,1/4" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "z,0,1/2","-z,0,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 4 },{ "coord": [ "z,0,0","-z,0,0" ],"desc": "..2","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,0,y","1/2,0,-y" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,y","0,0,-y" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,x,0","1/2,-x,0" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,x,0","0,-x,0" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,0" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "21:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x,-y,-z","-x,-y,z","x+1/2,y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y,z+1/2" ],"hall": "B 2 2","hm": "B 2 2 2","id": "B_2_2_2","jmolId": "21:bca","set": 3,"sg": 21,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "1/4,z,1/4","1/4,-z,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "1/2,z,0","1/2,-z,0" ],"desc": "..2","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,z,0","0,-z,0" ],"desc": "..2","geom": "line","label": "i","mult": 4 },{ "coord": [ "y,1/2,0","-y,1/2,0" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "y,0,0","-y,0,0" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,x","0,1/2,-x" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,x","0,0,-x" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,0" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 21 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_210.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_210.json new file mode 100755 index 000000000000..7f00f1251d9b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_210.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "210:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-x+1/2,y+1/2,-z","z,x,y","y+3/4,x+1/4,-z+3/4","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y,-z+1/2","z,x,y","z+1/2,-x,-y+1/2","-z,-x+1/2,y+1/2","-z+1/2,x+1/2,-y","y,z,x","-y+1/2,z+1/2,-x","y+1/2,-z,-x+1/2","-y,-z+1/2,x+1/2","y+3/4,x+1/4,-z+3/4","-y+1/4,-x+1/4,-z+1/4","y+1/4,-x+3/4,z+3/4","-y+3/4,x+3/4,z+1/4","x+3/4,z+1/4,-y+3/4","-x+3/4,z+3/4,y+1/4","-x+1/4,-z+1/4,-y+1/4","x+1/4,-z+3/4,y+3/4","z+3/4,y+1/4,-x+3/4","z+1/4,-y+3/4,x+3/4","-z+3/4,y+3/4,x+1/4","-z+1/4,-y+1/4,-x+1/4","x,y+1/2,z+1/2","-x,-y,z","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z","z,x+1/2,y+1/2","z+1/2,-x+1/2,-y","-z,-x,y","-z+1/2,x,-y+1/2","y,z+1/2,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z+1/2,-x","-y,-z,x","y+3/4,x+3/4,-z+1/4","-y+1/4,-x+3/4,-z+3/4","y+1/4,-x+1/4,z+1/4","-y+3/4,x+1/4,z+3/4","x+3/4,z+3/4,-y+1/4","-x+3/4,z+1/4,y+3/4","-x+1/4,-z+3/4,-y+3/4","x+1/4,-z+1/4,y+1/4","z+3/4,y+3/4,-x+1/4","z+1/4,-y+1/4,x+1/4","-z+3/4,y+1/4,x+3/4","-z+1/4,-y+3/4,-x+3/4","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-x,y+1/2,-z+1/2","x,-y,-z","z+1/2,x,y+1/2","z,-x,-y","-z+1/2,-x+1/2,y","-z,x+1/2,-y+1/2","y+1/2,z,x+1/2","-y,z+1/2,-x+1/2","y,-z,-x","-y+1/2,-z+1/2,x","y+1/4,x+1/4,-z+1/4","-y+3/4,-x+1/4,-z+3/4","y+3/4,-x+3/4,z+1/4","-y+1/4,x+3/4,z+3/4","x+1/4,z+1/4,-y+1/4","-x+1/4,z+3/4,y+3/4","-x+3/4,-z+1/4,-y+3/4","x+3/4,-z+3/4,y+1/4","z+1/4,y+1/4,-x+1/4","z+3/4,-y+3/4,x+1/4","-z+1/4,y+3/4,x+3/4","-z+3/4,-y+1/4,-x+3/4","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-x,y,-z","x,-y+1/2,-z+1/2","z+1/2,x+1/2,y","z,-x+1/2,-y+1/2","-z+1/2,-x,y+1/2","-z,x,-y","y+1/2,z+1/2,x","-y,z,-x","y,-z+1/2,-x+1/2","-y+1/2,-z,x+1/2","y+1/4,x+3/4,-z+3/4","-y+3/4,-x+3/4,-z+1/4","y+3/4,-x+1/4,z+3/4","-y+1/4,x+1/4,z+1/4","x+1/4,z+3/4,-y+3/4","-x+1/4,z+1/4,y+1/4","-x+3/4,-z+3/4,-y+1/4","x+3/4,-z+1/4,y+3/4","z+1/4,y+3/4,-x+3/4","z+3/4,-y+1/4,x+3/4","-z+1/4,y+1/4,x+1/4","-z+3/4,-y+3/4,-x+1/4" ],"hall": "F 4d 2 3","hm": "F 41 3 2","id": "F_41_3_2","jmolId": "210","set": 1,"sg": 210,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 96 },{ "coord": [ "1/8,y,-y+1/4","7/8,-y+1/2,-y+3/4","3/8,y+1/2,y+3/4","5/8,-y,y+1/4","-y+1/4,1/8,y","-y+3/4,7/8,-y+1/2","y+3/4,3/8,y+1/2","y+1/4,5/8,-y","y,-y+1/4,1/8","-y+1/2,-y+3/4,7/8","y+1/2,y+3/4,3/8","-y,y+1/4,5/8" ],"desc": "..2","geom": "line","label": "g","mult": 48 },{ "coord": [ "x,0,0","-x,1/2,1/2","0,x,0","1/2,-x,1/2","0,0,x","1/2,1/2,-x","3/4,x+1/4,3/4","1/4,-x+1/4,1/4","x+3/4,1/4,3/4","-x+3/4,3/4,1/4","3/4,1/4,-x+3/4","1/4,3/4,x+3/4" ],"desc": "2..","geom": "line","label": "f","mult": 48 },{ "coord": [ "x,x,x","-x,-x+1/2,x+1/2","-x+1/2,x+1/2,-x","x+1/2,-x,-x+1/2","x+3/4,x+1/4,-x+3/4","-x+1/4,-x+1/4,-x+1/4","x+1/4,-x+3/4,x+3/4","-x+3/4,x+3/4,x+1/4" ],"desc": ".3.","geom": "line","label": "e","mult": 32 },{ "coord": [ "5/8,5/8,5/8","3/8,7/8,1/8","7/8,1/8,3/8","1/8,3/8,7/8" ],"desc": ".32","geom": "point","label": "d","mult": 16 },{ "coord": [ "1/8,1/8,1/8","7/8,3/8,5/8","3/8,5/8,7/8","5/8,7/8,3/8" ],"desc": ".32","geom": "point","label": "c","mult": 16 },{ "coord": [ "1/2,1/2,1/2","1/4,3/4,1/4" ],"desc": "23.","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,0","3/4,1/4,3/4" ],"desc": "23.","geom": "point","label": "a","mult": 8 } ] } } ],"n": 1,"sg": 210 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_211.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_211.json new file mode 100755 index 000000000000..97022c183c39 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_211.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "211:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,-z","-y,-x,-z","y,-x,z","-y,x,z","x,z,-y","-x,z,y","-x,-z,-y","x,-z,y","z,y,-x","z,-y,x","-z,y,x","-z,-y,-x","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","z+1/2,x+1/2,y+1/2","z+1/2,-x+1/2,-y+1/2","-z+1/2,-x+1/2,y+1/2","-z+1/2,x+1/2,-y+1/2","y+1/2,z+1/2,x+1/2","-y+1/2,z+1/2,-x+1/2","y+1/2,-z+1/2,-x+1/2","-y+1/2,-z+1/2,x+1/2","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","x+1/2,z+1/2,-y+1/2","-x+1/2,z+1/2,y+1/2","-x+1/2,-z+1/2,-y+1/2","x+1/2,-z+1/2,y+1/2","z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,x+1/2","-z+1/2,-y+1/2,-x+1/2" ],"hall": "I 4 2 3","hm": "I 4 3 2","id": "I_4_3_2","jmolId": "211","set": 1,"sg": 211,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 48 },{ "coord": [ "1/4,y,-y+1/2","3/4,-y,-y+1/2","3/4,y,y+1/2","1/4,-y,y+1/2","-y+1/2,1/4,y","-y+1/2,3/4,-y","y+1/2,3/4,y","y+1/2,1/4,-y","y,-y+1/2,1/4","-y,-y+1/2,3/4","y,y+1/2,3/4","-y,y+1/2,1/4" ],"desc": "..2","geom": "line","label": "i","mult": 24 },{ "coord": [ "0,y,y","0,-y,y","0,y,-y","0,-y,-y","y,0,y","y,0,-y","-y,0,y","-y,0,-y","y,y,0","-y,y,0","y,-y,0","-y,-y,0" ],"desc": "..2","geom": "line","label": "h","mult": 24 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x","1/2,x,0","1/2,-x,0","x,0,1/2","-x,0,1/2","0,1/2,-x","0,1/2,x" ],"desc": "2..","geom": "line","label": "g","mult": 24 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x,x,-x","-x,-x,-x","x,-x,x","-x,x,x" ],"desc": ".3.","geom": "line","label": "f","mult": 16 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "4..","geom": "line","label": "e","mult": 12 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0","0,1/4,1/2","0,3/4,1/2","1/2,0,1/4","1/2,0,3/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 12 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": ".32","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "42. 2","geom": "point","label": "b","mult": 6 },{ "coord": [ "0,0,0" ],"desc": "432","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 211 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_212.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_212.json new file mode 100755 index 000000000000..5bff4db73c12 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_212.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "212:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y","y+1/4,x+3/4,-z+3/4" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2","y+1/4,x+3/4,-z+3/4","-y+1/4,-x+1/4,-z+1/4","y+3/4,-x+3/4,z+1/4","-y+3/4,x+1/4,z+3/4","x+1/4,z+3/4,-y+3/4","-x+3/4,z+1/4,y+3/4","-x+1/4,-z+1/4,-y+1/4","x+3/4,-z+3/4,y+1/4","z+1/4,y+3/4,-x+3/4","z+3/4,-y+3/4,x+1/4","-z+3/4,y+1/4,x+3/4","-z+1/4,-y+1/4,-x+1/4" ],"hall": "P 4acd 2ab 3","hm": "P 43 3 2","id": "P_43_3_2","jmolId": "212","set": 1,"sg": 212,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 24 },{ "coord": [ "1/8,y,-y+1/4","3/8,-y,-y+3/4","7/8,y+1/2,y+1/4","5/8,-y+1/2,y+3/4","-y+1/4,1/8,y","-y+3/4,3/8,-y","y+1/4,7/8,y+1/2","y+3/4,5/8,-y+1/2","y,-y+1/4,1/8","-y,-y+3/4,3/8","y+1/2,y+1/4,7/8","-y+1/2,y+3/4,5/8" ],"desc": "..2","geom": "line","label": "d","mult": 12 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x","x+1/4,x+3/4,-x+3/4","-x+1/4,-x+1/4,-x+1/4","x+3/4,-x+3/4,x+1/4","-x+3/4,x+1/4,x+3/4" ],"desc": ".3.","geom": "line","label": "c","mult": 8 },{ "coord": [ "5/8,5/8,5/8","7/8,3/8,1/8","3/8,1/8,7/8","1/8,7/8,3/8" ],"desc": ".32","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/8,1/8,1/8","3/8,7/8,5/8","7/8,5/8,3/8","5/8,3/8,7/8" ],"desc": ".32","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 212 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_213.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_213.json new file mode 100755 index 000000000000..6a54cbb94b99 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_213.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "213:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y","y+3/4,x+1/4,-z+1/4" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2","y+3/4,x+1/4,-z+1/4","-y+3/4,-x+3/4,-z+3/4","y+1/4,-x+1/4,z+3/4","-y+1/4,x+3/4,z+1/4","x+3/4,z+1/4,-y+1/4","-x+1/4,z+3/4,y+1/4","-x+3/4,-z+3/4,-y+3/4","x+1/4,-z+1/4,y+3/4","z+3/4,y+1/4,-x+1/4","z+1/4,-y+1/4,x+3/4","-z+1/4,y+3/4,x+1/4","-z+3/4,-y+3/4,-x+3/4" ],"hall": "P 4bd 2ab 3","hm": "P 41 3 2","id": "P_41_3_2","jmolId": "213","set": 1,"sg": 213,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 24 },{ "coord": [ "1/8,y,y+1/4","3/8,-y,y+3/4","7/8,y+1/2,-y+1/4","5/8,-y+1/2,-y+3/4","y+1/4,1/8,y","y+3/4,3/8,-y","-y+1/4,7/8,y+1/2","-y+3/4,5/8,-y+1/2","y,y+1/4,1/8","-y,y+3/4,3/8","y+1/2,-y+1/4,7/8","-y+1/2,-y+3/4,5/8" ],"desc": "..2","geom": "line","label": "d","mult": 12 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x","x+3/4,x+1/4,-x+1/4","-x+3/4,-x+3/4,-x+3/4","x+1/4,-x+1/4,x+3/4","-x+1/4,x+3/4,x+1/4" ],"desc": ".3.","geom": "line","label": "c","mult": 8 },{ "coord": [ "7/8,7/8,7/8","5/8,1/8,3/8","1/8,3/8,5/8","3/8,5/8,1/8" ],"desc": ".32","geom": "point","label": "b","mult": 4 },{ "coord": [ "3/8,3/8,3/8","1/8,5/8,7/8","5/8,7/8,1/8","7/8,1/8,5/8" ],"desc": ".32","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 213 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_214.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_214.json new file mode 100755 index 000000000000..48dd21969718 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_214.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "214:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y","y+3/4,x+1/4,-z+1/4","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2","y+3/4,x+1/4,-z+1/4","-y+3/4,-x+3/4,-z+3/4","y+1/4,-x+1/4,z+3/4","-y+1/4,x+3/4,z+1/4","x+3/4,z+1/4,-y+1/4","-x+1/4,z+3/4,y+1/4","-x+3/4,-z+3/4,-y+3/4","x+1/4,-z+1/4,y+3/4","z+3/4,y+1/4,-x+1/4","z+1/4,-y+1/4,x+3/4","-z+1/4,y+3/4,x+1/4","-z+3/4,-y+3/4,-x+3/4","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-x+1/2,y,-z","x,-y,-z+1/2","z+1/2,x+1/2,y+1/2","z,-x,-y+1/2","-z,-x+1/2,y","-z+1/2,x,-y","y+1/2,z+1/2,x+1/2","-y+1/2,z,-x","y,-z,-x+1/2","-y,-z+1/2,x","y+1/4,x+3/4,-z+3/4","-y+1/4,-x+1/4,-z+1/4","y+3/4,-x+3/4,z+1/4","-y+3/4,x+1/4,z+3/4","x+1/4,z+3/4,-y+3/4","-x+3/4,z+1/4,y+3/4","-x+1/4,-z+1/4,-y+1/4","x+3/4,-z+3/4,y+1/4","z+1/4,y+3/4,-x+3/4","z+3/4,-y+3/4,x+1/4","-z+3/4,y+1/4,x+3/4","-z+1/4,-y+1/4,-x+1/4" ],"hall": "I 4bd 2c 3","hm": "I 41 3 2","id": "I_41_3_2","jmolId": "214","set": 1,"sg": 214,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 48 },{ "coord": [ "1/8,y,-y+1/4","3/8,-y,-y+3/4","7/8,y+1/2,y+1/4","5/8,-y+1/2,y+3/4","-y+1/4,1/8,y","-y+3/4,3/8,-y","y+1/4,7/8,y+1/2","y+3/4,5/8,-y+1/2","y,-y+1/4,1/8","-y,-y+3/4,3/8","y+1/2,y+1/4,7/8","-y+1/2,y+3/4,5/8" ],"desc": "..2","geom": "line","label": "h","mult": 24 },{ "coord": [ "1/8,y,y+1/4","3/8,-y,y+3/4","7/8,y+1/2,-y+1/4","5/8,-y+1/2,-y+3/4","y+1/4,1/8,y","y+3/4,3/8,-y","-y+1/4,7/8,y+1/2","-y+3/4,5/8,-y+1/2","y,y+1/4,1/8","-y,y+3/4,3/8","y+1/2,-y+1/4,7/8","-y+1/2,-y+3/4,5/8" ],"desc": "..2","geom": "line","label": "g","mult": 24 },{ "coord": [ "x,0,1/4","-x+1/2,0,3/4","1/4,x,0","3/4,-x+1/2,0","0,1/4,x","0,3/4,-x+1/2","3/4,x+1/4,0","3/4,-x+3/4,1/2","x+3/4,1/2,1/4","-x+1/4,0,1/4","0,1/4,-x+1/4","1/2,1/4,x+3/4" ],"desc": "2..","geom": "line","label": "f","mult": 24 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x","x+3/4,x+1/4,-x+1/4","-x+3/4,-x+3/4,-x+3/4","x+1/4,-x+1/4,x+3/4","-x+1/4,x+3/4,x+1/4" ],"desc": ".3.","geom": "line","label": "e","mult": 16 },{ "coord": [ "5/8,0,1/4","7/8,0,3/4","1/4,5/8,0","3/4,7/8,0","0,1/4,5/8","0,3/4,7/8" ],"desc": "2.2 2","geom": "point","label": "d","mult": 12 },{ "coord": [ "1/8,0,1/4","3/8,0,3/4","1/4,1/8,0","3/4,3/8,0","0,1/4,1/8","0,3/4,3/8" ],"desc": "2.2 2","geom": "point","label": "c","mult": 12 },{ "coord": [ "7/8,7/8,7/8","5/8,1/8,3/8","1/8,3/8,5/8","3/8,5/8,1/8" ],"desc": ".32","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/8,1/8,1/8","3/8,7/8,5/8","7/8,5/8,3/8","5/8,3/8,7/8" ],"desc": ".32","geom": "point","label": "a","mult": 8 } ] } } ],"n": 1,"sg": 214 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_215.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_215.json new file mode 100755 index 000000000000..c20741365f57 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_215.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "215:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,z","-y,-x,z","y,-x,-z","-y,x,-z","x,z,y","-x,z,-y","-x,-z,y","x,-z,-y","z,y,x","z,-y,-x","-z,y,-x","-z,-y,x" ],"hall": "P -4 2 3","hm": "P -4 3 m","id": "P_-4_3_m","jmolId": "215","set": 1,"sg": 215,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "j","mult": 24 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,-z","x,-x,-z","z,x,x","z,-x,-x","-z,-x,x","-z,x,-x","x,z,x","-x,z,-x","x,-z,-x","-x,-z,x" ],"desc": "..m","geom": "plane","label": "i","mult": 12 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x","1/2,x,0","1/2,-x,0","x,0,1/2","-x,0,1/2","0,1/2,x","0,1/2,-x" ],"desc": "2..","geom": "line","label": "h","mult": 12 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,1/2","1/2,-x,1/2","1/2,1/2,x","1/2,1/2,-x" ],"desc": "2.m m","geom": "line","label": "g","mult": 6 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "2.m m","geom": "line","label": "f","mult": 6 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x" ],"desc": ".3m","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","0,1/2,0","0,0,1/2" ],"desc": "-42. m","geom": "point","label": "d","mult": 3 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "-42. m","geom": "point","label": "c","mult": 3 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "-43m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-43m","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 215 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_216.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_216.json new file mode 100755 index 000000000000..18a9aabeb874 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_216.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "216:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,z","-y,-x,z","y,-x,-z","-y,x,-z","x,z,y","-x,z,-y","-x,-z,y","x,-z,-y","z,y,x","z,-y,-x","-z,y,-x","-z,-y,x","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","z,x+1/2,y+1/2","z,-x+1/2,-y+1/2","-z,-x+1/2,y+1/2","-z,x+1/2,-y+1/2","y,z+1/2,x+1/2","-y,z+1/2,-x+1/2","y,-z+1/2,-x+1/2","-y,-z+1/2,x+1/2","y,x+1/2,z+1/2","-y,-x+1/2,z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","x,z+1/2,y+1/2","-x,z+1/2,-y+1/2","-x,-z+1/2,y+1/2","x,-z+1/2,-y+1/2","z,y+1/2,x+1/2","z,-y+1/2,-x+1/2","-z,y+1/2,-x+1/2","-z,-y+1/2,x+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","z+1/2,x,y+1/2","z+1/2,-x,-y+1/2","-z+1/2,-x,y+1/2","-z+1/2,x,-y+1/2","y+1/2,z,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z,-x+1/2","-y+1/2,-z,x+1/2","y+1/2,x,z+1/2","-y+1/2,-x,z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2","x+1/2,z,y+1/2","-x+1/2,z,-y+1/2","-x+1/2,-z,y+1/2","x+1/2,-z,-y+1/2","z+1/2,y,x+1/2","z+1/2,-y,-x+1/2","-z+1/2,y,-x+1/2","-z+1/2,-y,x+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","z+1/2,x+1/2,y","z+1/2,-x+1/2,-y","-z+1/2,-x+1/2,y","-z+1/2,x+1/2,-y","y+1/2,z+1/2,x","-y+1/2,z+1/2,-x","y+1/2,-z+1/2,-x","-y+1/2,-z+1/2,x","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","x+1/2,z+1/2,y","-x+1/2,z+1/2,-y","-x+1/2,-z+1/2,y","x+1/2,-z+1/2,-y","z+1/2,y+1/2,x","z+1/2,-y+1/2,-x","-z+1/2,y+1/2,-x","-z+1/2,-y+1/2,x" ],"hall": "F -4 2 3","hm": "F -4 3 m","id": "F_-4_3_m","jmolId": "216","set": 1,"sg": 216,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 96 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,-z","x,-x,-z","z,x,x","z,-x,-x","-z,-x,x","-z,x,-x","x,z,x","-x,z,-x","x,-z,-x","-x,-z,x" ],"desc": "..m","geom": "plane","label": "h","mult": 48 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4","1/4,x,1/4","1/4,-x,3/4","1/4,1/4,x","3/4,1/4,-x" ],"desc": "2.m m","geom": "line","label": "g","mult": 24 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "2.m m","geom": "line","label": "f","mult": 24 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x" ],"desc": ".3m","geom": "line","label": "e","mult": 16 },{ "coord": [ "3/4,3/4,3/4" ],"desc": "-43m","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4" ],"desc": "-43m","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "-43m","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "-43m","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 216 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_217.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_217.json new file mode 100755 index 000000000000..b81f4acf54fe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_217.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "217:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,z","-y,-x,z","y,-x,-z","-y,x,-z","x,z,y","-x,z,-y","-x,-z,y","x,-z,-y","z,y,x","z,-y,-x","-z,y,-x","-z,-y,x","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","z+1/2,x+1/2,y+1/2","z+1/2,-x+1/2,-y+1/2","-z+1/2,-x+1/2,y+1/2","-z+1/2,x+1/2,-y+1/2","y+1/2,z+1/2,x+1/2","-y+1/2,z+1/2,-x+1/2","y+1/2,-z+1/2,-x+1/2","-y+1/2,-z+1/2,x+1/2","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,z+1/2,y+1/2","-x+1/2,z+1/2,-y+1/2","-x+1/2,-z+1/2,y+1/2","x+1/2,-z+1/2,-y+1/2","z+1/2,y+1/2,x+1/2","z+1/2,-y+1/2,-x+1/2","-z+1/2,y+1/2,-x+1/2","-z+1/2,-y+1/2,x+1/2" ],"hall": "I -4 2 3","hm": "I -4 3 m","id": "I_-4_3_m","jmolId": "217","set": 1,"sg": 217,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 48 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,-z","x,-x,-z","z,x,x","z,-x,-x","-z,-x,x","-z,x,-x","x,z,x","-x,z,-x","x,-z,-x","-x,-z,x" ],"desc": "..m","geom": "plane","label": "g","mult": 24 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x","1/2,x,0","1/2,-x,0","x,0,1/2","-x,0,1/2","0,1/2,x","0,1/2,-x" ],"desc": "2..","geom": "line","label": "f","mult": 24 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "2.m m","geom": "line","label": "e","mult": 12 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0","0,1/4,1/2","0,3/4,1/2","1/2,0,1/4","1/2,0,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 12 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x" ],"desc": ".3m","geom": "line","label": "c","mult": 8 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "-42. m","geom": "point","label": "b","mult": 6 },{ "coord": [ "0,0,0" ],"desc": "-43m","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 217 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_218.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_218.json new file mode 100755 index 000000000000..22f7672d1ffd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_218.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "218:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y+1/2,x+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,z+1/2,y+1/2","-x+1/2,z+1/2,-y+1/2","-x+1/2,-z+1/2,y+1/2","x+1/2,-z+1/2,-y+1/2","z+1/2,y+1/2,x+1/2","z+1/2,-y+1/2,-x+1/2","-z+1/2,y+1/2,-x+1/2","-z+1/2,-y+1/2,x+1/2" ],"hall": "P -4n 2 3","hm": "P -4 3 n","id": "P_-4_3_n","jmolId": "218","set": 1,"sg": 218,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 24 },{ "coord": [ "x,0,1/2","-x,0,1/2","1/2,x,0","1/2,-x,0","0,1/2,x","0,1/2,-x","1/2,x+1/2,0","1/2,-x+1/2,0","x+1/2,0,1/2","-x+1/2,0,1/2","0,1/2,x+1/2","0,1/2,-x+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 12 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x","0,x+1/2,1/2","0,-x+1/2,1/2","x+1/2,1/2,0","-x+1/2,1/2,0","1/2,0,x+1/2","1/2,0,-x+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 12 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x","1/2,x+1/2,1/2","1/2,-x+1/2,1/2","x+1/2,1/2,1/2","-x+1/2,1/2,1/2","1/2,1/2,x+1/2","1/2,1/2,-x+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 12 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x+1/2,x+1/2,x+1/2","-x+1/2,-x+1/2,x+1/2","x+1/2,-x+1/2,-x+1/2","-x+1/2,x+1/2,-x+1/2" ],"desc": ".3.","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,0,1/2","3/4,0,1/2","1/2,1/4,0","1/2,3/4,0","0,1/2,1/4","0,1/2,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 6 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0","0,1/4,1/2","0,3/4,1/2","1/2,0,1/4","1/2,0,3/4" ],"desc": "-4..","geom": "point","label": "c","mult": 6 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0","0,1/2,0","1/2,0,0","0,0,1/2" ],"desc": "222 . .","geom": "point","label": "b","mult": 6 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "23.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 218 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_219.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_219.json new file mode 100755 index 000000000000..2e0efcad7ae9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_219.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "219:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y+1/2,x+1/2,z+1/2","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2","x+1/2,z+1/2,y+1/2","-x+1/2,z+1/2,-y+1/2","-x+1/2,-z+1/2,y+1/2","x+1/2,-z+1/2,-y+1/2","z+1/2,y+1/2,x+1/2","z+1/2,-y+1/2,-x+1/2","-z+1/2,y+1/2,-x+1/2","-z+1/2,-y+1/2,x+1/2","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","z,x+1/2,y+1/2","z,-x+1/2,-y+1/2","-z,-x+1/2,y+1/2","-z,x+1/2,-y+1/2","y,z+1/2,x+1/2","-y,z+1/2,-x+1/2","y,-z+1/2,-x+1/2","-y,-z+1/2,x+1/2","y+1/2,x,z","-y+1/2,-x,z","y+1/2,-x,-z","-y+1/2,x,-z","x+1/2,z,y","-x+1/2,z,-y","-x+1/2,-z,y","x+1/2,-z,-y","z+1/2,y,x","z+1/2,-y,-x","-z+1/2,y,-x","-z+1/2,-y,x","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","z+1/2,x,y+1/2","z+1/2,-x,-y+1/2","-z+1/2,-x,y+1/2","-z+1/2,x,-y+1/2","y+1/2,z,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z,-x+1/2","-y+1/2,-z,x+1/2","y,x+1/2,z","-y,-x+1/2,z","y,-x+1/2,-z","-y,x+1/2,-z","x,z+1/2,y","-x,z+1/2,-y","-x,-z+1/2,y","x,-z+1/2,-y","z,y+1/2,x","z,-y+1/2,-x","-z,y+1/2,-x","-z,-y+1/2,x","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","z+1/2,x+1/2,y","z+1/2,-x+1/2,-y","-z+1/2,-x+1/2,y","-z+1/2,x+1/2,-y","y+1/2,z+1/2,x","-y+1/2,z+1/2,-x","y+1/2,-z+1/2,-x","-y+1/2,-z+1/2,x","y,x,z+1/2","-y,-x,z+1/2","y,-x,-z+1/2","-y,x,-z+1/2","x,z,y+1/2","-x,z,-y+1/2","-x,-z,y+1/2","x,-z,-y+1/2","z,y,x+1/2","z,-y,-x+1/2","-z,y,-x+1/2","-z,-y,x+1/2" ],"hall": "F -4a 2 3","hm": "F -4 3 c","id": "F_-4_3_c","jmolId": "219","set": 1,"sg": 219,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 96 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4","1/4,x,1/4","1/4,-x,3/4","1/4,1/4,x","3/4,1/4,-x","3/4,x+1/2,3/4","1/4,-x+1/2,3/4","x+1/2,3/4,3/4","-x+1/2,3/4,1/4","3/4,3/4,x+1/2","3/4,1/4,-x+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 48 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x","1/2,x+1/2,1/2","1/2,-x+1/2,1/2","x+1/2,1/2,1/2","-x+1/2,1/2,1/2","1/2,1/2,x+1/2","1/2,1/2,-x+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 48 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x+1/2,x+1/2,x+1/2","-x+1/2,-x+1/2,x+1/2","x+1/2,-x+1/2,-x+1/2","-x+1/2,x+1/2,-x+1/2" ],"desc": ".3.","geom": "line","label": "e","mult": 32 },{ "coord": [ "1/4,0,0","3/4,0,0","0,1/4,0","0,3/4,0","0,0,1/4","0,0,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 24 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,0,1/4","1/4,0,3/4","1/4,1/4,0","3/4,1/4,0" ],"desc": "-4..","geom": "point","label": "c","mult": 24 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "23.","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "23.","geom": "point","label": "a","mult": 8 } ] } } ],"n": 1,"sg": 219 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_22.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_22.json new file mode 100755 index 000000000000..b51c3eb46b85 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_22.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "22:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z" ],"hall": "F 2 2","hm": "F 2 2 2","id": "F_2_2_2","jmolId": "22","set": 1,"sg": 22,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4" ],"desc": "2..","geom": "line","label": "j","mult": 8 },{ "coord": [ "1/4,y,1/4","3/4,-y,1/4" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "1/4,1/4,z","3/4,1/4,-z" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "x,0,0","-x,0,0" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,1/4,3/4" ],"desc": "222","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4" ],"desc": "222","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 22 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_220.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_220.json new file mode 100755 index 000000000000..5890038ece4e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_220.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "220:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y","y+1/4,x+1/4,z+1/4","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2","y+1/4,x+1/4,z+1/4","-y+1/4,-x+3/4,z+3/4","y+3/4,-x+1/4,-z+3/4","-y+3/4,x+3/4,-z+1/4","x+1/4,z+1/4,y+1/4","-x+3/4,z+3/4,-y+1/4","-x+1/4,-z+3/4,y+3/4","x+3/4,-z+1/4,-y+3/4","z+1/4,y+1/4,x+1/4","z+3/4,-y+1/4,-x+3/4","-z+3/4,y+3/4,-x+1/4","-z+1/4,-y+3/4,x+3/4","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-x+1/2,y,-z","x,-y,-z+1/2","z+1/2,x+1/2,y+1/2","z,-x,-y+1/2","-z,-x+1/2,y","-z+1/2,x,-y","y+1/2,z+1/2,x+1/2","-y+1/2,z,-x","y,-z,-x+1/2","-y,-z+1/2,x","y+3/4,x+3/4,z+3/4","-y+3/4,-x+1/4,z+1/4","y+1/4,-x+3/4,-z+1/4","-y+1/4,x+1/4,-z+3/4","x+3/4,z+3/4,y+3/4","-x+1/4,z+1/4,-y+3/4","-x+3/4,-z+1/4,y+1/4","x+1/4,-z+3/4,-y+1/4","z+3/4,y+3/4,x+3/4","z+1/4,-y+3/4,-x+1/4","-z+1/4,y+1/4,-x+3/4","-z+3/4,-y+1/4,x+1/4" ],"hall": "I -4bd 2c 3","hm": "I -4 3 d","id": "I_-4_3_d","jmolId": "220","set": 1,"sg": 220,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 48 },{ "coord": [ "x,0,1/4","-x+1/2,0,3/4","1/4,x,0","3/4,-x+1/2,0","0,1/4,x","0,3/4,-x+1/2","1/4,x+1/4,1/2","1/4,-x+3/4,0","x+1/4,1/2,1/4","-x+3/4,0,1/4","1/2,1/4,x+1/4","0,1/4,-x+3/4" ],"desc": "2..","geom": "line","label": "d","mult": 24 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x","x+1/4,x+1/4,x+1/4","-x+1/4,-x+3/4,x+3/4","x+3/4,-x+1/4,-x+3/4","-x+3/4,x+3/4,-x+1/4" ],"desc": ".3.","geom": "line","label": "c","mult": 16 },{ "coord": [ "7/8,0,1/4","5/8,0,3/4","1/4,7/8,0","3/4,5/8,0","0,1/4,7/8","0,3/4,5/8" ],"desc": "-4..","geom": "point","label": "b","mult": 12 },{ "coord": [ "3/8,0,1/4","1/8,0,3/4","1/4,3/8,0","3/4,1/8,0","0,1/4,3/8","0,3/4,1/8" ],"desc": "-4..","geom": "point","label": "a","mult": 12 } ] } } ],"n": 1,"sg": 220 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_221.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_221.json new file mode 100755 index 000000000000..dca2762bcea1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_221.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "221:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,-z","-y,-x,-z","y,-x,z","-y,x,z","x,z,-y","-x,z,y","-x,-z,-y","x,-z,y","z,y,-x","z,-y,x","-z,y,x","-z,-y,-x","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","-z,-x,-y","-z,x,y","z,x,-y","z,-x,y","-y,-z,-x","y,-z,x","-y,z,x","y,z,-x","-y,-x,z","y,x,z","-y,x,-z","y,-x,-z","-x,-z,y","x,-z,-y","x,z,y","-x,z,-y","-z,-y,x","-z,y,-x","z,-y,-x","z,y,x" ],"hall": "-P 4 2 3","hm": "P m -3 m","id": "P_m_-3_m","jmolId": "221","set": 1,"sg": 221,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "n","mult": 48 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,-z","x,-x,-z","z,x,x","z,-x,-x","-z,-x,x","-z,x,-x","x,z,x","-x,z,-x","x,-z,-x","-x,-z,x","x,x,-z","-x,-x,-z","x,-x,z","-x,x,z","x,z,-x","-x,z,x","-x,-z,-x","x,-z,x","z,x,-x","z,-x,x","-z,x,x","-z,-x,-x" ],"desc": "..m","geom": "plane","label": "m","mult": 24 },{ "coord": [ "1/2,y,z","1/2,-y,z","1/2,y,-z","1/2,-y,-z","z,1/2,y","z,1/2,-y","-z,1/2,y","-z,1/2,-y","y,z,1/2","-y,z,1/2","y,-z,1/2","-y,-z,1/2","y,1/2,-z","-y,1/2,-z","y,1/2,z","-y,1/2,z","1/2,z,-y","1/2,z,y","1/2,-z,-y","1/2,-z,y","z,y,1/2","z,-y,1/2","-z,y,1/2","-z,-y,1/2" ],"desc": "m..","geom": "plane","label": "l","mult": 24 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z","z,0,y","z,0,-y","-z,0,y","-z,0,-y","y,z,0","-y,z,0","y,-z,0","-y,-z,0","y,0,-z","-y,0,-z","y,0,z","-y,0,z","0,z,-y","0,z,y","0,-z,-y","0,-z,y","z,y,0","z,-y,0","-z,y,0","-z,-y,0" ],"desc": "m..","geom": "plane","label": "k","mult": 24 },{ "coord": [ "1/2,y,y","1/2,-y,y","1/2,y,-y","1/2,-y,-y","y,1/2,y","y,1/2,-y","-y,1/2,y","-y,1/2,-y","y,y,1/2","-y,y,1/2","y,-y,1/2","-y,-y,1/2" ],"desc": "m.m 2","geom": "line","label": "j","mult": 12 },{ "coord": [ "0,y,y","0,-y,y","0,y,-y","0,-y,-y","y,0,y","y,0,-y","-y,0,y","-y,0,-y","y,y,0","-y,y,0","y,-y,0","-y,-y,0" ],"desc": "m.m 2","geom": "line","label": "i","mult": 12 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x","1/2,x,0","1/2,-x,0","x,0,1/2","-x,0,1/2","0,1/2,-x","0,1/2,x" ],"desc": "mm2 . .","geom": "line","label": "h","mult": 12 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x,x,-x","-x,-x,-x","x,-x,x","-x,x,x" ],"desc": ".3m","geom": "line","label": "g","mult": 8 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,1/2","1/2,-x,1/2","1/2,1/2,x","1/2,1/2,-x" ],"desc": "4m. m","geom": "line","label": "f","mult": 6 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "4m. m","geom": "line","label": "e","mult": 6 },{ "coord": [ "1/2,0,0","0,1/2,0","0,0,1/2" ],"desc": "4/mm. m","geom": "point","label": "d","mult": 3 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "4/mm. m","geom": "point","label": "c","mult": 3 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "m-3m","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "m-3m","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 221 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_222.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_222.json new file mode 100755 index 000000000000..bd42d43233c6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_222.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "222:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z+1/2","z,x,y","y,x,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z+1/2","x,-y+1/2,-z+1/2","z,x,y","z,-x+1/2,-y+1/2","-z+1/2,-x+1/2,y","-z+1/2,x,-y+1/2","y,z,x","-y+1/2,z,-x+1/2","y,-z+1/2,-x+1/2","-y+1/2,-z+1/2,x","y,x,-z+1/2","-y+1/2,-x+1/2,-z+1/2","y,-x+1/2,z","-y+1/2,x,z","x,z,-y+1/2","-x+1/2,z,y","-x+1/2,-z+1/2,-y+1/2","x,-z+1/2,y","z,y,-x+1/2","z,-y+1/2,x","-z+1/2,y,x","-z+1/2,-y+1/2,-x+1/2","-x,-y,-z","x+1/2,y+1/2,-z","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2","-z,-x,-y","-z,x+1/2,y+1/2","z+1/2,x+1/2,-y","z+1/2,-x,y+1/2","-y,-z,-x","y+1/2,-z,x+1/2","-y,z+1/2,x+1/2","y+1/2,z+1/2,-x","-y,-x,z+1/2","y+1/2,x+1/2,z+1/2","-y,x+1/2,-z","y+1/2,-x,-z","-x,-z,y+1/2","x+1/2,-z,-y","x+1/2,z+1/2,y+1/2","-x,z+1/2,-y","-z,-y,x+1/2","-z,y+1/2,-x","z+1/2,-y,-x","z+1/2,y+1/2,x+1/2" ],"hall": "-P 4a 2bc 3","hm": "P n -3 n :2","id": "P_n_-3_n_2","jmolId": "222:2","set": 1,"sg": 222,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 48 },{ "coord": [ "1/4,y,y","1/4,-y+1/2,y","1/4,y,-y+1/2","1/4,-y+1/2,-y+1/2","y,1/4,y","y,1/4,-y+1/2","-y+1/2,1/4,y","-y+1/2,1/4,-y+1/2","y,y,1/4","-y+1/2,y,1/4","y,-y+1/2,1/4","-y+1/2,-y+1/2,1/4","3/4,-y,-y","3/4,y+1/2,-y","3/4,-y,y+1/2","3/4,y+1/2,y+1/2","-y,3/4,-y","-y,3/4,y+1/2","y+1/2,3/4,-y","y+1/2,3/4,y+1/2","-y,-y,3/4","y+1/2,-y,3/4","-y,y+1/2,3/4","y+1/2,y+1/2,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 24 },{ "coord": [ "x,3/4,1/4","-x+1/2,3/4,1/4","1/4,x,3/4","1/4,-x+1/2,3/4","3/4,1/4,x","3/4,1/4,-x+1/2","3/4,x,1/4","3/4,-x+1/2,1/4","x,1/4,3/4","-x+1/2,1/4,3/4","1/4,3/4,-x+1/2","1/4,3/4,x","-x,1/4,3/4","x+1/2,1/4,3/4","3/4,-x,1/4","3/4,x+1/2,1/4","1/4,3/4,-x","1/4,3/4,x+1/2","1/4,-x,3/4","1/4,x+1/2,3/4","-x,3/4,1/4","x+1/2,3/4,1/4","3/4,1/4,x+1/2","3/4,1/4,-x" ],"desc": "2..","geom": "line","label": "g","mult": 24 },{ "coord": [ "x,x,x","-x+1/2,-x+1/2,x","-x+1/2,x,-x+1/2","x,-x+1/2,-x+1/2","x,x,-x+1/2","-x+1/2,-x+1/2,-x+1/2","x,-x+1/2,x","-x+1/2,x,x","-x,-x,-x","x+1/2,x+1/2,-x","x+1/2,-x,x+1/2","-x,x+1/2,x+1/2","-x,-x,x+1/2","x+1/2,x+1/2,x+1/2","-x,x+1/2,-x","x+1/2,-x,-x" ],"desc": ".3.","geom": "line","label": "f","mult": 16 },{ "coord": [ "x,1/4,1/4","-x+1/2,1/4,1/4","1/4,x,1/4","1/4,-x+1/2,1/4","1/4,1/4,x","1/4,1/4,-x+1/2","-x,3/4,3/4","x+1/2,3/4,3/4","3/4,-x,3/4","3/4,x+1/2,3/4","3/4,3/4,-x","3/4,3/4,x+1/2" ],"desc": "4..","geom": "line","label": "e","mult": 12 },{ "coord": [ "0,3/4,1/4","1/2,3/4,1/4","1/4,0,3/4","1/4,1/2,3/4","3/4,1/4,0","3/4,1/4,1/2","3/4,0,1/4","3/4,1/2,1/4","0,1/4,3/4","1/2,1/4,3/4","1/4,3/4,1/2","1/4,3/4,0" ],"desc": "-4..","geom": "point","label": "d","mult": 12 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2","0,0,1/2","1/2,1/2,1/2","0,1/2,0","1/2,0,0" ],"desc": ".-3.","geom": "point","label": "c","mult": 8 },{ "coord": [ "3/4,1/4,1/4","1/4,3/4,1/4","1/4,1/4,3/4","1/4,3/4,3/4","3/4,1/4,3/4","3/4,3/4,1/4" ],"desc": "42. 2","geom": "point","label": "b","mult": 6 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "432","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "222:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,-z","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,-z","-y,-x,-z","y,-x,z","-y,x,z","x,z,-y","-x,z,y","-x,-z,-y","x,-z,y","z,y,-x","z,-y,x","-z,y,x","-z,-y,-x","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-z+1/2,-x+1/2,-y+1/2","-z+1/2,x+1/2,y+1/2","z+1/2,x+1/2,-y+1/2","z+1/2,-x+1/2,y+1/2","-y+1/2,-z+1/2,-x+1/2","y+1/2,-z+1/2,x+1/2","-y+1/2,z+1/2,x+1/2","y+1/2,z+1/2,-x+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2","-y+1/2,x+1/2,-z+1/2","y+1/2,-x+1/2,-z+1/2","-x+1/2,-z+1/2,y+1/2","x+1/2,-z+1/2,-y+1/2","x+1/2,z+1/2,y+1/2","-x+1/2,z+1/2,-y+1/2","-z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,-x+1/2","z+1/2,y+1/2,x+1/2" ],"hall": "P 4 2 3 -1n","hm": "P n -3 n :1","id": "P_n_-3_n_1","jmolId": "222:1","set": 2,"sg": 222,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 48 },{ "coord": [ "1/2,y+1/4,y+1/4","1/2,-y+3/4,y+1/4","1/2,y+1/4,-y+3/4","1/2,-y+3/4,-y+3/4","y+1/4,1/2,y+1/4","y+1/4,1/2,-y+3/4","-y+3/4,1/2,y+1/4","-y+3/4,1/2,-y+3/4","y+1/4,y+1/4,1/2","-y+3/4,y+1/4,1/2","y+1/4,-y+3/4,1/2","-y+3/4,-y+3/4,1/2","0,-y+1/4,-y+1/4","0,y+3/4,-y+1/4","0,-y+1/4,y+3/4","0,y+3/4,y+3/4","-y+1/4,0,-y+1/4","-y+1/4,0,y+3/4","y+3/4,0,-y+1/4","y+3/4,0,y+3/4","-y+1/4,-y+1/4,0","y+3/4,-y+1/4,0","-y+1/4,y+3/4,0","y+3/4,y+3/4,0" ],"desc": "..2","geom": "line","label": "h","mult": 24 },{ "coord": [ "x+1/4,0,1/2","-x+3/4,0,1/2","1/2,x+1/4,0","1/2,-x+3/4,0","0,1/2,x+1/4","0,1/2,-x+3/4","0,x+1/4,1/2","0,-x+3/4,1/2","x+1/4,1/2,0","-x+3/4,1/2,0","1/2,0,-x+3/4","1/2,0,x+1/4","-x+1/4,1/2,0","x+3/4,1/2,0","0,-x+1/4,1/2","0,x+3/4,1/2","1/2,0,-x+1/4","1/2,0,x+3/4","1/2,-x+1/4,0","1/2,x+3/4,0","-x+1/4,0,1/2","x+3/4,0,1/2","0,1/2,x+3/4","0,1/2,-x+1/4" ],"desc": "2..","geom": "line","label": "g","mult": 24 },{ "coord": [ "x+1/4,x+1/4,x+1/4","-x+3/4,-x+3/4,x+1/4","-x+3/4,x+1/4,-x+3/4","x+1/4,-x+3/4,-x+3/4","x+1/4,x+1/4,-x+3/4","-x+3/4,-x+3/4,-x+3/4","x+1/4,-x+3/4,x+1/4","-x+3/4,x+1/4,x+1/4","-x+1/4,-x+1/4,-x+1/4","x+3/4,x+3/4,-x+1/4","x+3/4,-x+1/4,x+3/4","-x+1/4,x+3/4,x+3/4","-x+1/4,-x+1/4,x+3/4","x+3/4,x+3/4,x+3/4","-x+1/4,x+3/4,-x+1/4","x+3/4,-x+1/4,-x+1/4" ],"desc": ".3.","geom": "line","label": "f","mult": 16 },{ "coord": [ "x+1/4,1/2,1/2","-x+3/4,1/2,1/2","1/2,x+1/4,1/2","1/2,-x+3/4,1/2","1/2,1/2,x+1/4","1/2,1/2,-x+3/4","-x+1/4,0,0","x+3/4,0,0","0,-x+1/4,0","0,x+3/4,0","0,0,-x+1/4","0,0,x+3/4" ],"desc": "4..","geom": "line","label": "e","mult": 12 },{ "coord": [ "1/4,0,1/2","3/4,0,1/2","1/2,1/4,0","1/2,3/4,0","0,1/2,1/4","0,1/2,3/4","0,1/4,1/2","0,3/4,1/2","1/4,1/2,0","3/4,1/2,0","1/2,0,3/4","1/2,0,1/4" ],"desc": "-4..","geom": "point","label": "d","mult": 12 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4","1/4,1/4,3/4","3/4,3/4,3/4","1/4,3/4,1/4","3/4,1/4,1/4" ],"desc": ".-3.","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0","1/2,0,0","0,1/2,0","0,0,1/2" ],"desc": "42. 2","geom": "point","label": "b","mult": 6 },{ "coord": [ "1/2,1/2,1/2","0,0,0" ],"desc": "432","geom": "point","label": "a","mult": 2 } ] } } ],"n": 2,"sg": 222 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_223.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_223.json new file mode 100755 index 000000000000..99ed80e844c1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_223.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "223:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y+1/2,x+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","x+1/2,z+1/2,-y+1/2","-x+1/2,z+1/2,y+1/2","-x+1/2,-z+1/2,-y+1/2","x+1/2,-z+1/2,y+1/2","z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,x+1/2","-z+1/2,-y+1/2,-x+1/2","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","-z,-x,-y","-z,x,y","z,x,-y","z,-x,y","-y,-z,-x","y,-z,x","-y,z,x","y,z,-x","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2","-y+1/2,x+1/2,-z+1/2","y+1/2,-x+1/2,-z+1/2","-x+1/2,-z+1/2,y+1/2","x+1/2,-z+1/2,-y+1/2","x+1/2,z+1/2,y+1/2","-x+1/2,z+1/2,-y+1/2","-z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,-x+1/2","z+1/2,y+1/2,x+1/2" ],"hall": "-P 4n 2 3","hm": "P m -3 n","id": "P_m_-3_n","jmolId": "223","set": 1,"sg": 223,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 48 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z","z,0,y","z,0,-y","-z,0,y","-z,0,-y","y,z,0","-y,z,0","y,-z,0","-y,-z,0","y+1/2,1/2,-z+1/2","-y+1/2,1/2,-z+1/2","y+1/2,1/2,z+1/2","-y+1/2,1/2,z+1/2","1/2,z+1/2,-y+1/2","1/2,z+1/2,y+1/2","1/2,-z+1/2,-y+1/2","1/2,-z+1/2,y+1/2","z+1/2,y+1/2,1/2","z+1/2,-y+1/2,1/2","-z+1/2,y+1/2,1/2","-z+1/2,-y+1/2,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 24 },{ "coord": [ "1/4,y,y+1/2","3/4,-y,y+1/2","3/4,y,-y+1/2","1/4,-y,-y+1/2","y+1/2,1/4,y","y+1/2,3/4,-y","-y+1/2,3/4,y","-y+1/2,1/4,-y","y,y+1/2,1/4","-y,y+1/2,3/4","y,-y+1/2,3/4","-y,-y+1/2,1/4","3/4,-y,-y+1/2","1/4,y,-y+1/2","1/4,-y,y+1/2","3/4,y,y+1/2","-y+1/2,3/4,-y","-y+1/2,1/4,y","y+1/2,1/4,-y","y+1/2,3/4,y","-y,-y+1/2,3/4","y,-y+1/2,1/4","-y,y+1/2,1/4","y,y+1/2,3/4" ],"desc": "..2","geom": "line","label": "j","mult": 24 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x+1/2,x+1/2,-x+1/2","-x+1/2,-x+1/2,-x+1/2","x+1/2,-x+1/2,x+1/2","-x+1/2,x+1/2,x+1/2","-x,-x,-x","x,x,-x","x,-x,x","-x,x,x","-x+1/2,-x+1/2,x+1/2","x+1/2,x+1/2,x+1/2","-x+1/2,x+1/2,-x+1/2","x+1/2,-x+1/2,-x+1/2" ],"desc": ".3.","geom": "line","label": "i","mult": 16 },{ "coord": [ "x,1/2,0","-x,1/2,0","0,x,1/2","0,-x,1/2","1/2,0,x","1/2,0,-x","0,x+1/2,1/2","0,-x+1/2,1/2","x+1/2,1/2,0","-x+1/2,1/2,0","1/2,0,-x+1/2","1/2,0,x+1/2" ],"desc": "mm2 . .","geom": "line","label": "h","mult": 12 },{ "coord": [ "x,0,1/2","-x,0,1/2","1/2,x,0","1/2,-x,0","0,1/2,x","0,1/2,-x","1/2,x+1/2,0","1/2,-x+1/2,0","x+1/2,0,1/2","-x+1/2,0,1/2","0,1/2,-x+1/2","0,1/2,x+1/2" ],"desc": "mm2 . .","geom": "line","label": "g","mult": 12 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x","1/2,x+1/2,1/2","1/2,-x+1/2,1/2","x+1/2,1/2,1/2","-x+1/2,1/2,1/2","1/2,1/2,-x+1/2","1/2,1/2,x+1/2" ],"desc": "mm2 . .","geom": "line","label": "f","mult": 12 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4","3/4,3/4,3/4","1/4,1/4,3/4","1/4,3/4,1/4","3/4,1/4,1/4" ],"desc": ".32","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0","0,1/4,1/2","0,3/4,1/2","1/2,0,1/4","1/2,0,3/4" ],"desc": "-4m. 2","geom": "point","label": "d","mult": 6 },{ "coord": [ "1/4,0,1/2","3/4,0,1/2","1/2,1/4,0","1/2,3/4,0","0,1/2,1/4","0,1/2,3/4" ],"desc": "-4m. 2","geom": "point","label": "c","mult": 6 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0","0,1/2,0","1/2,0,0","0,0,1/2" ],"desc": "mmm . .","geom": "point","label": "b","mult": 6 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "m-3.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 223 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_224.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_224.json new file mode 100755 index 000000000000..78617610d8e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_224.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "224:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z+1/2","z,x,y","y+1/2,x+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z+1/2","x,-y+1/2,-z+1/2","z,x,y","z,-x+1/2,-y+1/2","-z+1/2,-x+1/2,y","-z+1/2,x,-y+1/2","y,z,x","-y+1/2,z,-x+1/2","y,-z+1/2,-x+1/2","-y+1/2,-z+1/2,x","y+1/2,x+1/2,-z","-y,-x,-z","y+1/2,-x,z+1/2","-y,x+1/2,z+1/2","x+1/2,z+1/2,-y","-x,z+1/2,y+1/2","-x,-z,-y","x+1/2,-z,y+1/2","z+1/2,y+1/2,-x","z+1/2,-y,x+1/2","-z,y+1/2,x+1/2","-z,-y,-x","-x,-y,-z","x+1/2,y+1/2,-z","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2","-z,-x,-y","-z,x+1/2,y+1/2","z+1/2,x+1/2,-y","z+1/2,-x,y+1/2","-y,-z,-x","y+1/2,-z,x+1/2","-y,z+1/2,x+1/2","y+1/2,z+1/2,-x","-y+1/2,-x+1/2,z","y,x,z","-y+1/2,x,-z+1/2","y,-x+1/2,-z+1/2","-x+1/2,-z+1/2,y","x,-z+1/2,-y+1/2","x,z,y","-x+1/2,z,-y+1/2","-z+1/2,-y+1/2,x","-z+1/2,y,-x+1/2","z,-y+1/2,-x+1/2","z,y,x" ],"hall": "-P 4bc 2bc 3","hm": "P n -3 m :2","id": "P_n_-3_m_2","jmolId": "224:2","set": 1,"sg": 224,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 48 },{ "coord": [ "x,x,z","-x+1/2,-x+1/2,z","-x+1/2,x,-z+1/2","x,-x+1/2,-z+1/2","z,x,x","z,-x+1/2,-x+1/2","-z+1/2,-x+1/2,x","-z+1/2,x,-x+1/2","x,z,x","-x+1/2,z,-x+1/2","x,-z+1/2,-x+1/2","-x+1/2,-z+1/2,x","x+1/2,x+1/2,-z","-x,-x,-z","x+1/2,-x,z+1/2","-x,x+1/2,z+1/2","x+1/2,z+1/2,-x","-x,z+1/2,x+1/2","-x,-z,-x","x+1/2,-z,x+1/2","z+1/2,x+1/2,-x","z+1/2,-x,x+1/2","-z,x+1/2,x+1/2","-z,-x,-x" ],"desc": "..m","geom": "plane","label": "k","mult": 24 },{ "coord": [ "1/2,y,-y","0,-y+1/2,-y","0,y,y+1/2","1/2,-y+1/2,y+1/2","-y,1/2,y","-y,0,-y+1/2","y+1/2,0,y","y+1/2,1/2,-y+1/2","y,-y,1/2","-y+1/2,-y,0","y,y+1/2,0","-y+1/2,y+1/2,1/2","1/2,-y,y","0,y+1/2,y","0,-y,-y+1/2","1/2,y+1/2,-y+1/2","y,1/2,-y","y,0,y+1/2","-y+1/2,0,-y","-y+1/2,1/2,y+1/2","-y,y,1/2","y+1/2,y,0","-y,-y+1/2,0","y+1/2,-y+1/2,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 24 },{ "coord": [ "1/2,y,y+1/2","0,-y+1/2,y+1/2","0,y,-y","1/2,-y+1/2,-y","y+1/2,1/2,y","y+1/2,0,-y+1/2","-y,0,y","-y,1/2,-y+1/2","y,y+1/2,1/2","-y+1/2,y+1/2,0","y,-y,0","-y+1/2,-y,1/2","1/2,-y,-y+1/2","0,y+1/2,-y+1/2","0,-y,y","1/2,y+1/2,y","-y+1/2,1/2,-y","-y+1/2,0,y+1/2","y,0,-y","y,1/2,y+1/2","-y,-y+1/2,1/2","y+1/2,-y+1/2,0","-y,y,0","y+1/2,y,1/2" ],"desc": "..2","geom": "line","label": "i","mult": 24 },{ "coord": [ "x,1/4,3/4","-x+1/2,1/4,3/4","3/4,x,1/4","3/4,-x+1/2,1/4","1/4,3/4,x","1/4,3/4,-x+1/2","3/4,x+1/2,1/4","3/4,-x,1/4","x+1/2,1/4,3/4","-x,1/4,3/4","1/4,3/4,-x","1/4,3/4,x+1/2","-x,3/4,1/4","x+1/2,3/4,1/4","1/4,-x,3/4","1/4,x+1/2,3/4","3/4,1/4,-x","3/4,1/4,x+1/2","1/4,-x+1/2,3/4","1/4,x,3/4","-x+1/2,3/4,1/4","x,3/4,1/4","3/4,1/4,x","3/4,1/4,-x+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 24 },{ "coord": [ "x,1/4,1/4","-x+1/2,1/4,1/4","1/4,x,1/4","1/4,-x+1/2,1/4","1/4,1/4,x","1/4,1/4,-x+1/2","3/4,x+1/2,3/4","3/4,-x,3/4","x+1/2,3/4,3/4","-x,3/4,3/4","3/4,3/4,-x","3/4,3/4,x+1/2" ],"desc": "2.m m","geom": "line","label": "g","mult": 12 },{ "coord": [ "1/2,1/4,3/4","0,1/4,3/4","3/4,1/2,1/4","3/4,0,1/4","1/4,3/4,1/2","1/4,3/4,0","1/2,3/4,1/4","0,3/4,1/4","1/4,1/2,3/4","1/4,0,3/4","3/4,1/4,1/2","3/4,1/4,0" ],"desc": "2.2 2","geom": "point","label": "f","mult": 12 },{ "coord": [ "x,x,x","-x+1/2,-x+1/2,x","-x+1/2,x,-x+1/2","x,-x+1/2,-x+1/2","x+1/2,x+1/2,-x","-x,-x,-x","x+1/2,-x,x+1/2","-x,x+1/2,x+1/2" ],"desc": ".3m","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,3/4,3/4","3/4,1/4,3/4","3/4,3/4,1/4","1/4,3/4,1/4","3/4,1/4,1/4","1/4,1/4,3/4" ],"desc": "-42. m","geom": "point","label": "d","mult": 6 },{ "coord": [ "1/2,1/2,1/2","0,0,1/2","0,1/2,0","1/2,0,0" ],"desc": ".-3m","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2" ],"desc": ".-3m","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "-43m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "224:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y+1/2,x+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","x+1/2,z+1/2,-y+1/2","-x+1/2,z+1/2,y+1/2","-x+1/2,-z+1/2,-y+1/2","x+1/2,-z+1/2,y+1/2","z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,x+1/2","-z+1/2,-y+1/2,-x+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-z+1/2,-x+1/2,-y+1/2","-z+1/2,x+1/2,y+1/2","z+1/2,x+1/2,-y+1/2","z+1/2,-x+1/2,y+1/2","-y+1/2,-z+1/2,-x+1/2","y+1/2,-z+1/2,x+1/2","-y+1/2,z+1/2,x+1/2","y+1/2,z+1/2,-x+1/2","-y,-x,z","y,x,z","-y,x,-z","y,-x,-z","-x,-z,y","x,-z,-y","x,z,y","-x,z,-y","-z,-y,x","-z,y,-x","z,-y,-x","z,y,x" ],"hall": "P 4n 2 3 -1n","hm": "P n -3 m :1","id": "P_n_-3_m_1","jmolId": "224:1","set": 2,"sg": 224,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 48 },{ "coord": [ "x+1/4,x+1/4,z+1/4","-x+3/4,-x+3/4,z+1/4","-x+3/4,x+1/4,-z+3/4","x+1/4,-x+3/4,-z+3/4","z+1/4,x+1/4,x+1/4","z+1/4,-x+3/4,-x+3/4","-z+3/4,-x+3/4,x+1/4","-z+3/4,x+1/4,-x+3/4","x+1/4,z+1/4,x+1/4","-x+3/4,z+1/4,-x+3/4","x+1/4,-z+3/4,-x+3/4","-x+3/4,-z+3/4,x+1/4","x+3/4,x+3/4,-z+1/4","-x+1/4,-x+1/4,-z+1/4","x+3/4,-x+1/4,z+3/4","-x+1/4,x+3/4,z+3/4","x+3/4,z+3/4,-x+1/4","-x+1/4,z+3/4,x+3/4","-x+1/4,-z+1/4,-x+1/4","x+3/4,-z+1/4,x+3/4","z+3/4,x+3/4,-x+1/4","z+3/4,-x+1/4,x+3/4","-z+1/4,x+3/4,x+3/4","-z+1/4,-x+1/4,-x+1/4" ],"desc": "..m","geom": "plane","label": "k","mult": 24 },{ "coord": [ "3/4,y+1/4,-y+1/4","1/4,-y+3/4,-y+1/4","1/4,y+1/4,y+3/4","3/4,-y+3/4,y+3/4","-y+1/4,3/4,y+1/4","-y+1/4,1/4,-y+3/4","y+3/4,1/4,y+1/4","y+3/4,3/4,-y+3/4","y+1/4,-y+1/4,3/4","-y+3/4,-y+1/4,1/4","y+1/4,y+3/4,1/4","-y+3/4,y+3/4,3/4","3/4,-y+1/4,y+1/4","1/4,y+3/4,y+1/4","1/4,-y+1/4,-y+3/4","3/4,y+3/4,-y+3/4","y+1/4,3/4,-y+1/4","y+1/4,1/4,y+3/4","-y+3/4,1/4,-y+1/4","-y+3/4,3/4,y+3/4","-y+1/4,y+1/4,3/4","y+3/4,y+1/4,1/4","-y+1/4,-y+3/4,1/4","y+3/4,-y+3/4,3/4" ],"desc": "..2","geom": "line","label": "j","mult": 24 },{ "coord": [ "3/4,y+1/4,y+3/4","1/4,-y+3/4,y+3/4","1/4,y+1/4,-y+1/4","3/4,-y+3/4,-y+1/4","y+3/4,3/4,y+1/4","y+3/4,1/4,-y+3/4","-y+1/4,1/4,y+1/4","-y+1/4,3/4,-y+3/4","y+1/4,y+3/4,3/4","-y+3/4,y+3/4,1/4","y+1/4,-y+1/4,1/4","-y+3/4,-y+1/4,3/4","3/4,-y+1/4,-y+3/4","1/4,y+3/4,-y+3/4","1/4,-y+1/4,y+1/4","3/4,y+3/4,y+1/4","-y+3/4,3/4,-y+1/4","-y+3/4,1/4,y+3/4","y+1/4,1/4,-y+1/4","y+1/4,3/4,y+3/4","-y+1/4,-y+3/4,3/4","y+3/4,-y+3/4,1/4","-y+1/4,y+1/4,1/4","y+3/4,y+1/4,3/4" ],"desc": "..2","geom": "line","label": "i","mult": 24 },{ "coord": [ "x+1/4,1/2,0","-x+3/4,1/2,0","0,x+1/4,1/2","0,-x+3/4,1/2","1/2,0,x+1/4","1/2,0,-x+3/4","0,x+3/4,1/2","0,-x+1/4,1/2","x+3/4,1/2,0","-x+1/4,1/2,0","1/2,0,-x+1/4","1/2,0,x+3/4","-x+1/4,0,1/2","x+3/4,0,1/2","1/2,-x+1/4,0","1/2,x+3/4,0","0,1/2,-x+1/4","0,1/2,x+3/4","1/2,-x+3/4,0","1/2,x+1/4,0","-x+3/4,0,1/2","x+1/4,0,1/2","0,1/2,x+1/4","0,1/2,-x+3/4" ],"desc": "2..","geom": "line","label": "h","mult": 24 },{ "coord": [ "x+1/4,1/2,1/2","-x+3/4,1/2,1/2","1/2,x+1/4,1/2","1/2,-x+3/4,1/2","1/2,1/2,x+1/4","1/2,1/2,-x+3/4","0,x+3/4,0","0,-x+1/4,0","x+3/4,0,0","-x+1/4,0,0","0,0,-x+1/4","0,0,x+3/4" ],"desc": "2.m m","geom": "line","label": "g","mult": 12 },{ "coord": [ "3/4,1/2,0","1/4,1/2,0","0,3/4,1/2","0,1/4,1/2","1/2,0,3/4","1/2,0,1/4","3/4,0,1/2","1/4,0,1/2","1/2,3/4,0","1/2,1/4,0","0,1/2,3/4","0,1/2,1/4" ],"desc": "2.2 2","geom": "point","label": "f","mult": 12 },{ "coord": [ "x+1/4,x+1/4,x+1/4","-x+3/4,-x+3/4,x+1/4","-x+3/4,x+1/4,-x+3/4","x+1/4,-x+3/4,-x+3/4","x+3/4,x+3/4,-x+1/4","-x+1/4,-x+1/4,-x+1/4","x+3/4,-x+1/4,x+3/4","-x+1/4,x+3/4,x+3/4" ],"desc": ".3m","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/2,0,0","0,1/2,0","0,0,1/2","1/2,0,1/2","0,1/2,1/2","1/2,1/2,0" ],"desc": "-42. m","geom": "point","label": "d","mult": 6 },{ "coord": [ "3/4,3/4,3/4","1/4,1/4,3/4","1/4,3/4,1/4","3/4,1/4,1/4" ],"desc": ".-3m","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": ".-3m","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/2,1/2,1/2","0,0,0" ],"desc": "-43m","geom": "point","label": "a","mult": 2 } ] } } ],"n": 2,"sg": 224 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_225.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_225.json new file mode 100755 index 000000000000..ba6b2a1703bb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_225.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "225:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,-z","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,-z","-y,-x,-z","y,-x,z","-y,x,z","x,z,-y","-x,z,y","-x,-z,-y","x,-z,y","z,y,-x","z,-y,x","-z,y,x","-z,-y,-x","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","-z,-x,-y","-z,x,y","z,x,-y","z,-x,y","-y,-z,-x","y,-z,x","-y,z,x","y,z,-x","-y,-x,z","y,x,z","-y,x,-z","y,-x,-z","-x,-z,y","x,-z,-y","x,z,y","-x,z,-y","-z,-y,x","-z,y,-x","z,-y,-x","z,y,x","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","z,x+1/2,y+1/2","z,-x+1/2,-y+1/2","-z,-x+1/2,y+1/2","-z,x+1/2,-y+1/2","y,z+1/2,x+1/2","-y,z+1/2,-x+1/2","y,-z+1/2,-x+1/2","-y,-z+1/2,x+1/2","y,x+1/2,-z+1/2","-y,-x+1/2,-z+1/2","y,-x+1/2,z+1/2","-y,x+1/2,z+1/2","x,z+1/2,-y+1/2","-x,z+1/2,y+1/2","-x,-z+1/2,-y+1/2","x,-z+1/2,y+1/2","z,y+1/2,-x+1/2","z,-y+1/2,x+1/2","-z,y+1/2,x+1/2","-z,-y+1/2,-x+1/2","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","-z,-x+1/2,-y+1/2","-z,x+1/2,y+1/2","z,x+1/2,-y+1/2","z,-x+1/2,y+1/2","-y,-z+1/2,-x+1/2","y,-z+1/2,x+1/2","-y,z+1/2,x+1/2","y,z+1/2,-x+1/2","-y,-x+1/2,z+1/2","y,x+1/2,z+1/2","-y,x+1/2,-z+1/2","y,-x+1/2,-z+1/2","-x,-z+1/2,y+1/2","x,-z+1/2,-y+1/2","x,z+1/2,y+1/2","-x,z+1/2,-y+1/2","-z,-y+1/2,x+1/2","-z,y+1/2,-x+1/2","z,-y+1/2,-x+1/2","z,y+1/2,x+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","z+1/2,x,y+1/2","z+1/2,-x,-y+1/2","-z+1/2,-x,y+1/2","-z+1/2,x,-y+1/2","y+1/2,z,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z,-x+1/2","-y+1/2,-z,x+1/2","y+1/2,x,-z+1/2","-y+1/2,-x,-z+1/2","y+1/2,-x,z+1/2","-y+1/2,x,z+1/2","x+1/2,z,-y+1/2","-x+1/2,z,y+1/2","-x+1/2,-z,-y+1/2","x+1/2,-z,y+1/2","z+1/2,y,-x+1/2","z+1/2,-y,x+1/2","-z+1/2,y,x+1/2","-z+1/2,-y,-x+1/2","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2","-z+1/2,-x,-y+1/2","-z+1/2,x,y+1/2","z+1/2,x,-y+1/2","z+1/2,-x,y+1/2","-y+1/2,-z,-x+1/2","y+1/2,-z,x+1/2","-y+1/2,z,x+1/2","y+1/2,z,-x+1/2","-y+1/2,-x,z+1/2","y+1/2,x,z+1/2","-y+1/2,x,-z+1/2","y+1/2,-x,-z+1/2","-x+1/2,-z,y+1/2","x+1/2,-z,-y+1/2","x+1/2,z,y+1/2","-x+1/2,z,-y+1/2","-z+1/2,-y,x+1/2","-z+1/2,y,-x+1/2","z+1/2,-y,-x+1/2","z+1/2,y,x+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","z+1/2,x+1/2,y","z+1/2,-x+1/2,-y","-z+1/2,-x+1/2,y","-z+1/2,x+1/2,-y","y+1/2,z+1/2,x","-y+1/2,z+1/2,-x","y+1/2,-z+1/2,-x","-y+1/2,-z+1/2,x","y+1/2,x+1/2,-z","-y+1/2,-x+1/2,-z","y+1/2,-x+1/2,z","-y+1/2,x+1/2,z","x+1/2,z+1/2,-y","-x+1/2,z+1/2,y","-x+1/2,-z+1/2,-y","x+1/2,-z+1/2,y","z+1/2,y+1/2,-x","z+1/2,-y+1/2,x","-z+1/2,y+1/2,x","-z+1/2,-y+1/2,-x","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-z+1/2,-x+1/2,-y","-z+1/2,x+1/2,y","z+1/2,x+1/2,-y","z+1/2,-x+1/2,y","-y+1/2,-z+1/2,-x","y+1/2,-z+1/2,x","-y+1/2,z+1/2,x","y+1/2,z+1/2,-x","-y+1/2,-x+1/2,z","y+1/2,x+1/2,z","-y+1/2,x+1/2,-z","y+1/2,-x+1/2,-z","-x+1/2,-z+1/2,y","x+1/2,-z+1/2,-y","x+1/2,z+1/2,y","-x+1/2,z+1/2,-y","-z+1/2,-y+1/2,x","-z+1/2,y+1/2,-x","z+1/2,-y+1/2,-x","z+1/2,y+1/2,x" ],"hall": "-F 4 2 3","hm": "F m -3 m","id": "F_m_-3_m","jmolId": "225","set": 1,"sg": 225,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "l","mult": 192 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,-z","x,-x,-z","z,x,x","z,-x,-x","-z,-x,x","-z,x,-x","x,z,x","-x,z,-x","x,-z,-x","-x,-z,x","x,x,-z","-x,-x,-z","x,-x,z","-x,x,z","x,z,-x","-x,z,x","-x,-z,-x","x,-z,x","z,x,-x","z,-x,x","-z,x,x","-z,-x,-x" ],"desc": "..m","geom": "plane","label": "k","mult": 96 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z","z,0,y","z,0,-y","-z,0,y","-z,0,-y","y,z,0","-y,z,0","y,-z,0","-y,-z,0","y,0,-z","-y,0,-z","y,0,z","-y,0,z","0,z,-y","0,z,y","0,-z,-y","0,-z,y","z,y,0","z,-y,0","-z,y,0","-z,-y,0" ],"desc": "m..","geom": "plane","label": "j","mult": 96 },{ "coord": [ "1/2,y,y","1/2,-y,y","1/2,y,-y","1/2,-y,-y","y,1/2,y","y,1/2,-y","-y,1/2,y","-y,1/2,-y","y,y,1/2","-y,y,1/2","y,-y,1/2","-y,-y,1/2" ],"desc": "m.m 2","geom": "line","label": "i","mult": 48 },{ "coord": [ "0,y,y","0,-y,y","0,y,-y","0,-y,-y","y,0,y","y,0,-y","-y,0,y","-y,0,-y","y,y,0","-y,y,0","y,-y,0","-y,-y,0" ],"desc": "m.m 2","geom": "line","label": "h","mult": 48 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4","1/4,x,1/4","1/4,-x,3/4","1/4,1/4,x","3/4,1/4,-x","1/4,x,3/4","3/4,-x,3/4","x,1/4,3/4","-x,1/4,1/4","1/4,1/4,-x","1/4,3/4,x" ],"desc": "2.m m","geom": "line","label": "g","mult": 48 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x,x,-x","-x,-x,-x","x,-x,x","-x,x,x" ],"desc": ".3m","geom": "line","label": "f","mult": 32 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "4m. m","geom": "line","label": "e","mult": 24 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,0,1/4","1/4,0,3/4","1/4,1/4,0","3/4,1/4,0" ],"desc": "m.m m","geom": "point","label": "d","mult": 24 },{ "coord": [ "1/4,1/4,1/4","1/4,1/4,3/4" ],"desc": "-43m","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "m-3m","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "m-3m","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 225 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_226.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_226.json new file mode 100755 index 000000000000..e73807f722bb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_226.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "226:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y+1/2,x+1/2,-z+1/2","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","x+1/2,z+1/2,-y+1/2","-x+1/2,z+1/2,y+1/2","-x+1/2,-z+1/2,-y+1/2","x+1/2,-z+1/2,y+1/2","z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,x+1/2","-z+1/2,-y+1/2,-x+1/2","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","-z,-x,-y","-z,x,y","z,x,-y","z,-x,y","-y,-z,-x","y,-z,x","-y,z,x","y,z,-x","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2","-y+1/2,x+1/2,-z+1/2","y+1/2,-x+1/2,-z+1/2","-x+1/2,-z+1/2,y+1/2","x+1/2,-z+1/2,-y+1/2","x+1/2,z+1/2,y+1/2","-x+1/2,z+1/2,-y+1/2","-z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,-x+1/2","z+1/2,y+1/2,x+1/2","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","z,x+1/2,y+1/2","z,-x+1/2,-y+1/2","-z,-x+1/2,y+1/2","-z,x+1/2,-y+1/2","y,z+1/2,x+1/2","-y,z+1/2,-x+1/2","y,-z+1/2,-x+1/2","-y,-z+1/2,x+1/2","y+1/2,x,-z","-y+1/2,-x,-z","y+1/2,-x,z","-y+1/2,x,z","x+1/2,z,-y","-x+1/2,z,y","-x+1/2,-z,-y","x+1/2,-z,y","z+1/2,y,-x","z+1/2,-y,x","-z+1/2,y,x","-z+1/2,-y,-x","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","-z,-x+1/2,-y+1/2","-z,x+1/2,y+1/2","z,x+1/2,-y+1/2","z,-x+1/2,y+1/2","-y,-z+1/2,-x+1/2","y,-z+1/2,x+1/2","-y,z+1/2,x+1/2","y,z+1/2,-x+1/2","-y+1/2,-x,z","y+1/2,x,z","-y+1/2,x,-z","y+1/2,-x,-z","-x+1/2,-z,y","x+1/2,-z,-y","x+1/2,z,y","-x+1/2,z,-y","-z+1/2,-y,x","-z+1/2,y,-x","z+1/2,-y,-x","z+1/2,y,x","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","z+1/2,x,y+1/2","z+1/2,-x,-y+1/2","-z+1/2,-x,y+1/2","-z+1/2,x,-y+1/2","y+1/2,z,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z,-x+1/2","-y+1/2,-z,x+1/2","y,x+1/2,-z","-y,-x+1/2,-z","y,-x+1/2,z","-y,x+1/2,z","x,z+1/2,-y","-x,z+1/2,y","-x,-z+1/2,-y","x,-z+1/2,y","z,y+1/2,-x","z,-y+1/2,x","-z,y+1/2,x","-z,-y+1/2,-x","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2","-z+1/2,-x,-y+1/2","-z+1/2,x,y+1/2","z+1/2,x,-y+1/2","z+1/2,-x,y+1/2","-y+1/2,-z,-x+1/2","y+1/2,-z,x+1/2","-y+1/2,z,x+1/2","y+1/2,z,-x+1/2","-y,-x+1/2,z","y,x+1/2,z","-y,x+1/2,-z","y,-x+1/2,-z","-x,-z+1/2,y","x,-z+1/2,-y","x,z+1/2,y","-x,z+1/2,-y","-z,-y+1/2,x","-z,y+1/2,-x","z,-y+1/2,-x","z,y+1/2,x","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","z+1/2,x+1/2,y","z+1/2,-x+1/2,-y","-z+1/2,-x+1/2,y","-z+1/2,x+1/2,-y","y+1/2,z+1/2,x","-y+1/2,z+1/2,-x","y+1/2,-z+1/2,-x","-y+1/2,-z+1/2,x","y,x,-z+1/2","-y,-x,-z+1/2","y,-x,z+1/2","-y,x,z+1/2","x,z,-y+1/2","-x,z,y+1/2","-x,-z,-y+1/2","x,-z,y+1/2","z,y,-x+1/2","z,-y,x+1/2","-z,y,x+1/2","-z,-y,-x+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","-z+1/2,-x+1/2,-y","-z+1/2,x+1/2,y","z+1/2,x+1/2,-y","z+1/2,-x+1/2,y","-y+1/2,-z+1/2,-x","y+1/2,-z+1/2,x","-y+1/2,z+1/2,x","y+1/2,z+1/2,-x","-y,-x,z+1/2","y,x,z+1/2","-y,x,-z+1/2","y,-x,-z+1/2","-x,-z,y+1/2","x,-z,-y+1/2","x,z,y+1/2","-x,z,-y+1/2","-z,-y,x+1/2","-z,y,-x+1/2","z,-y,-x+1/2","z,y,x+1/2" ],"hall": "-F 4a 2 3","hm": "F m -3 c","id": "F_m_-3_c","jmolId": "226","set": 1,"sg": 226,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 192 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z","z,0,y","z,0,-y","-z,0,y","-z,0,-y","y,z,0","-y,z,0","y,-z,0","-y,-z,0","y+1/2,1/2,-z+1/2","-y+1/2,1/2,-z+1/2","y+1/2,1/2,z+1/2","-y+1/2,1/2,z+1/2","1/2,z+1/2,-y+1/2","1/2,z+1/2,y+1/2","1/2,-z+1/2,-y+1/2","1/2,-z+1/2,y+1/2","z+1/2,y+1/2,1/2","z+1/2,-y+1/2,1/2","-z+1/2,y+1/2,1/2","-z+1/2,-y+1/2,1/2" ],"desc": "m..","geom": "plane","label": "i","mult": 96 },{ "coord": [ "1/4,y,y","3/4,-y,y","3/4,y,-y","1/4,-y,-y","y,1/4,y","y,3/4,-y","-y,3/4,y","-y,1/4,-y","y,y,1/4","-y,y,3/4","y,-y,3/4","-y,-y,1/4","3/4,-y,-y","1/4,y,-y","1/4,-y,y","3/4,y,y","-y,3/4,-y","-y,1/4,y","y,1/4,-y","y,3/4,y","-y,-y,3/4","y,-y,1/4","-y,y,1/4","y,y,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 96 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x+1/2,x+1/2,-x+1/2","-x+1/2,-x+1/2,-x+1/2","x+1/2,-x+1/2,x+1/2","-x+1/2,x+1/2,x+1/2","-x,-x,-x","x,x,-x","x,-x,x","-x,x,x","-x+1/2,-x+1/2,x+1/2","x+1/2,x+1/2,x+1/2","-x+1/2,x+1/2,-x+1/2","x+1/2,-x+1/2,-x+1/2" ],"desc": ".3.","geom": "line","label": "g","mult": 64 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4","1/4,x,1/4","1/4,-x,3/4","1/4,1/4,x","3/4,1/4,-x","-x,3/4,3/4","x,1/4,3/4","3/4,-x,3/4","3/4,x,1/4","3/4,3/4,-x","1/4,3/4,x" ],"desc": "4..","geom": "line","label": "f","mult": 48 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x","1/2,x+1/2,1/2","1/2,-x+1/2,1/2","x+1/2,1/2,1/2","-x+1/2,1/2,1/2","1/2,1/2,-x+1/2","1/2,1/2,x+1/2" ],"desc": "mm2 . .","geom": "line","label": "e","mult": 48 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,0,1/4","1/4,0,3/4","1/4,1/4,0","3/4,1/4,0" ],"desc": "4/m..","geom": "point","label": "d","mult": 24 },{ "coord": [ "1/4,0,0","3/4,0,0","0,1/4,0","0,3/4,0","0,0,1/4","0,0,3/4" ],"desc": "-4m. 2","geom": "point","label": "c","mult": 24 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "m-3.","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "432","geom": "point","label": "a","mult": 8 } ] } } ],"n": 1,"sg": 226 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_227.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_227.json new file mode 100755 index 000000000000..6fe358de4e92 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_227.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "227:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+3/4,-y+1/4,z+1/2","-x+1/4,y+1/2,-z+3/4","z,x,y","y+3/4,x+1/4,-z+1/2","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+3/4,-y+1/4,z+1/2","-x+1/4,y+1/2,-z+3/4","x+1/2,-y+3/4,-z+1/4","z,x,y","z+1/2,-x+3/4,-y+1/4","-z+3/4,-x+1/4,y+1/2","-z+1/4,x+1/2,-y+3/4","y,z,x","-y+1/4,z+1/2,-x+3/4","y+1/2,-z+3/4,-x+1/4","-y+3/4,-z+1/4,x+1/2","y+3/4,x+1/4,-z+1/2","-y,-x,-z","y+1/4,-x+1/2,z+3/4","-y+1/2,x+3/4,z+1/4","x+3/4,z+1/4,-y+1/2","-x+1/2,z+3/4,y+1/4","-x,-z,-y","x+1/4,-z+1/2,y+3/4","z+3/4,y+1/4,-x+1/2","z+1/4,-y+1/2,x+3/4","-z+1/2,y+3/4,x+1/4","-z,-y,-x","-x,-y,-z","x+1/4,y+3/4,-z+1/2","x+3/4,-y+1/2,z+1/4","-x+1/2,y+1/4,z+3/4","-z,-x,-y","-z+1/2,x+1/4,y+3/4","z+1/4,x+3/4,-y+1/2","z+3/4,-x+1/2,y+1/4","-y,-z,-x","y+3/4,-z+1/2,x+1/4","-y+1/2,z+1/4,x+3/4","y+1/4,z+3/4,-x+1/2","-y+1/4,-x+3/4,z+1/2","y,x,z","-y+3/4,x+1/2,-z+1/4","y+1/2,-x+1/4,-z+3/4","-x+1/4,-z+3/4,y+1/2","x+1/2,-z+1/4,-y+3/4","x,z,y","-x+3/4,z+1/2,-y+1/4","-z+1/4,-y+3/4,x+1/2","-z+3/4,y+1/2,-x+1/4","z+1/2,-y+1/4,-x+3/4","z,y,x","x,y+1/2,z+1/2","-x+3/4,-y+3/4,z","-x+1/4,y,-z+1/4","x+1/2,-y+1/4,-z+3/4","z,x+1/2,y+1/2","z+1/2,-x+1/4,-y+3/4","-z+3/4,-x+3/4,y","-z+1/4,x,-y+1/4","y,z+1/2,x+1/2","-y+1/4,z,-x+1/4","y+1/2,-z+1/4,-x+3/4","-y+3/4,-z+3/4,x","y+3/4,x+3/4,-z","-y,-x+1/2,-z+1/2","y+1/4,-x,z+1/4","-y+1/2,x+1/4,z+3/4","x+3/4,z+3/4,-y","-x+1/2,z+1/4,y+3/4","-x,-z+1/2,-y+1/2","x+1/4,-z,y+1/4","z+3/4,y+3/4,-x","z+1/4,-y,x+1/4","-z+1/2,y+1/4,x+3/4","-z,-y+1/2,-x+1/2","-x,-y+1/2,-z+1/2","x+1/4,y+1/4,-z","x+3/4,-y,z+3/4","-x+1/2,y+3/4,z+1/4","-z,-x+1/2,-y+1/2","-z+1/2,x+3/4,y+1/4","z+1/4,x+1/4,-y","z+3/4,-x,y+3/4","-y,-z+1/2,-x+1/2","y+3/4,-z,x+3/4","-y+1/2,z+3/4,x+1/4","y+1/4,z+1/4,-x","-y+1/4,-x+1/4,z","y,x+1/2,z+1/2","-y+3/4,x,-z+3/4","y+1/2,-x+3/4,-z+1/4","-x+1/4,-z+1/4,y","x+1/2,-z+3/4,-y+1/4","x,z+1/2,y+1/2","-x+3/4,z,-y+3/4","-z+1/4,-y+1/4,x","-z+3/4,y,-x+3/4","z+1/2,-y+3/4,-x+1/4","z,y+1/2,x+1/2","x+1/2,y,z+1/2","-x+1/4,-y+1/4,z","-x+3/4,y+1/2,-z+1/4","x,-y+3/4,-z+3/4","z+1/2,x,y+1/2","z,-x+3/4,-y+3/4","-z+1/4,-x+1/4,y","-z+3/4,x+1/2,-y+1/4","y+1/2,z,x+1/2","-y+3/4,z+1/2,-x+1/4","y,-z+3/4,-x+3/4","-y+1/4,-z+1/4,x","y+1/4,x+1/4,-z","-y+1/2,-x,-z+1/2","y+3/4,-x+1/2,z+1/4","-y,x+3/4,z+3/4","x+1/4,z+1/4,-y","-x,z+3/4,y+3/4","-x+1/2,-z,-y+1/2","x+3/4,-z+1/2,y+1/4","z+1/4,y+1/4,-x","z+3/4,-y+1/2,x+1/4","-z,y+3/4,x+3/4","-z+1/2,-y,-x+1/2","-x+1/2,-y,-z+1/2","x+3/4,y+3/4,-z","x+1/4,-y+1/2,z+3/4","-x,y+1/4,z+1/4","-z+1/2,-x,-y+1/2","-z,x+1/4,y+1/4","z+3/4,x+3/4,-y","z+1/4,-x+1/2,y+3/4","-y+1/2,-z,-x+1/2","y+1/4,-z+1/2,x+3/4","-y,z+1/4,x+1/4","y+3/4,z+3/4,-x","-y+3/4,-x+3/4,z","y+1/2,x,z+1/2","-y+1/4,x+1/2,-z+3/4","y,-x+1/4,-z+1/4","-x+3/4,-z+3/4,y","x,-z+1/4,-y+1/4","x+1/2,z,y+1/2","-x+1/4,z+1/2,-y+3/4","-z+3/4,-y+3/4,x","-z+1/4,y+1/2,-x+3/4","z,-y+1/4,-x+1/4","z+1/2,y,x+1/2","x+1/2,y+1/2,z","-x+1/4,-y+3/4,z+1/2","-x+3/4,y,-z+3/4","x,-y+1/4,-z+1/4","z+1/2,x+1/2,y","z,-x+1/4,-y+1/4","-z+1/4,-x+3/4,y+1/2","-z+3/4,x,-y+3/4","y+1/2,z+1/2,x","-y+3/4,z,-x+3/4","y,-z+1/4,-x+1/4","-y+1/4,-z+3/4,x+1/2","y+1/4,x+3/4,-z+1/2","-y+1/2,-x+1/2,-z","y+3/4,-x,z+3/4","-y,x+1/4,z+1/4","x+1/4,z+3/4,-y+1/2","-x,z+1/4,y+1/4","-x+1/2,-z+1/2,-y","x+3/4,-z,y+3/4","z+1/4,y+3/4,-x+1/2","z+3/4,-y,x+3/4","-z,y+1/4,x+1/4","-z+1/2,-y+1/2,-x","-x+1/2,-y+1/2,-z","x+3/4,y+1/4,-z+1/2","x+1/4,-y,z+1/4","-x,y+3/4,z+3/4","-z+1/2,-x+1/2,-y","-z,x+3/4,y+3/4","z+3/4,x+1/4,-y+1/2","z+1/4,-x,y+1/4","-y+1/2,-z+1/2,-x","y+1/4,-z,x+1/4","-y,z+3/4,x+3/4","y+3/4,z+1/4,-x+1/2","-y+3/4,-x+1/4,z+1/2","y+1/2,x+1/2,z","-y+1/4,x,-z+1/4","y,-x+3/4,-z+3/4","-x+3/4,-z+1/4,y+1/2","x,-z+3/4,-y+3/4","x+1/2,z+1/2,y","-x+1/4,z,-y+1/4","-z+3/4,-y+1/4,x+1/2","-z+1/4,y,-x+1/4","z,-y+3/4,-x+3/4","z+1/2,y+1/2,x" ],"hall": "-F 4vw 2vw 3","hm": "F d -3 m :2","id": "F_d_-3_m_2","jmolId": "227:2","set": 1,"sg": 227,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 192 },{ "coord": [ "0,y,-y","3/4,-y+1/4,-y+1/2","1/4,y+1/2,y+3/4","1/2,-y+3/4,y+1/4","-y,0,y","-y+1/2,3/4,-y+1/4","y+3/4,1/4,y+1/2","y+1/4,1/2,-y+3/4","y,-y,0","-y+1/4,-y+1/2,3/4","y+1/2,y+3/4,1/4","-y+3/4,y+1/4,1/2","0,-y,y","1/4,y+3/4,y+1/2","3/4,-y+1/2,-y+1/4","1/2,y+1/4,-y+3/4","y,0,-y","y+1/2,1/4,y+3/4","-y+1/4,3/4,-y+1/2","-y+3/4,1/2,y+1/4","-y,y,0","y+3/4,y+1/2,1/4","-y+1/2,-y+1/4,3/4","y+1/4,-y+3/4,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 96 },{ "coord": [ "x,x,z","-x+3/4,-x+1/4,z+1/2","-x+1/4,x+1/2,-z+3/4","x+1/2,-x+3/4,-z+1/4","z,x,x","z+1/2,-x+3/4,-x+1/4","-z+3/4,-x+1/4,x+1/2","-z+1/4,x+1/2,-x+3/4","x,z,x","-x+1/4,z+1/2,-x+3/4","x+1/2,-z+3/4,-x+1/4","-x+3/4,-z+1/4,x+1/2","x+3/4,x+1/4,-z+1/2","-x,-x,-z","x+1/4,-x+1/2,z+3/4","-x+1/2,x+3/4,z+1/4","x+3/4,z+1/4,-x+1/2","-x+1/2,z+3/4,x+1/4","-x,-z,-x","x+1/4,-z+1/2,x+3/4","z+3/4,x+1/4,-x+1/2","z+1/4,-x+1/2,x+3/4","-z+1/2,x+3/4,x+1/4","-z,-x,-x" ],"desc": "..m","geom": "plane","label": "g","mult": 96 },{ "coord": [ "x,1/8,1/8","-x+3/4,1/8,5/8","1/8,x,1/8","5/8,-x+3/4,1/8","1/8,1/8,x","1/8,5/8,-x+3/4","7/8,x+1/4,3/8","7/8,-x,7/8","x+3/4,3/8,3/8","-x+1/2,7/8,3/8","7/8,3/8,-x+1/2","3/8,3/8,x+3/4" ],"desc": "2.m m","geom": "line","label": "f","mult": 48 },{ "coord": [ "x,x,x","-x+3/4,-x+1/4,x+1/2","-x+1/4,x+1/2,-x+3/4","x+1/2,-x+3/4,-x+1/4","x+3/4,x+1/4,-x+1/2","-x,-x,-x","x+1/4,-x+1/2,x+3/4","-x+1/2,x+3/4,x+1/4" ],"desc": ".3m","geom": "line","label": "e","mult": 32 },{ "coord": [ "1/2,1/2,1/2","1/4,3/4,0","3/4,0,1/4","0,1/4,3/4" ],"desc": ".-3m","geom": "point","label": "d","mult": 16 },{ "coord": [ "0,0,0","3/4,1/4,1/2","1/4,1/2,3/4","1/2,3/4,1/4" ],"desc": ".-3m","geom": "point","label": "c","mult": 16 },{ "coord": [ "3/8,3/8,3/8","1/8,5/8,1/8" ],"desc": "-43m","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/8,1/8,1/8","7/8,3/8,3/8" ],"desc": "-43m","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "227:a,b,c;-1/8,-1/8,-1/8","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-x+1/2,y+1/2,-z","z,x,y","y+3/4,x+1/4,-z+3/4","-x+1/4,-y+1/4,-z+1/4","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y,-z+1/2","z,x,y","z+1/2,-x,-y+1/2","-z,-x+1/2,y+1/2","-z+1/2,x+1/2,-y","y,z,x","-y+1/2,z+1/2,-x","y+1/2,-z,-x+1/2","-y,-z+1/2,x+1/2","y+3/4,x+1/4,-z+3/4","-y+1/4,-x+1/4,-z+1/4","y+1/4,-x+3/4,z+3/4","-y+3/4,x+3/4,z+1/4","x+3/4,z+1/4,-y+3/4","-x+3/4,z+3/4,y+1/4","-x+1/4,-z+1/4,-y+1/4","x+1/4,-z+3/4,y+3/4","z+3/4,y+1/4,-x+3/4","z+1/4,-y+3/4,x+3/4","-z+3/4,y+3/4,x+1/4","-z+1/4,-y+1/4,-x+1/4","-x+1/4,-y+1/4,-z+1/4","x+1/4,y+3/4,-z+3/4","x+3/4,-y+3/4,z+1/4","-x+3/4,y+1/4,z+3/4","-z+1/4,-x+1/4,-y+1/4","-z+3/4,x+1/4,y+3/4","z+1/4,x+3/4,-y+3/4","z+3/4,-x+3/4,y+1/4","-y+1/4,-z+1/4,-x+1/4","y+3/4,-z+3/4,x+1/4","-y+3/4,z+1/4,x+3/4","y+1/4,z+3/4,-x+3/4","-y+1/2,-x,z+1/2","y,x,z","-y,x+1/2,-z+1/2","y+1/2,-x+1/2,-z","-x+1/2,-z,y+1/2","x+1/2,-z+1/2,-y","x,z,y","-x,z+1/2,-y+1/2","-z+1/2,-y,x+1/2","-z,y+1/2,-x+1/2","z+1/2,-y+1/2,-x","z,y,x","x,y+1/2,z+1/2","-x,-y,z","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z","z,x+1/2,y+1/2","z+1/2,-x+1/2,-y","-z,-x,y","-z+1/2,x,-y+1/2","y,z+1/2,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z+1/2,-x","-y,-z,x","y+3/4,x+3/4,-z+1/4","-y+1/4,-x+3/4,-z+3/4","y+1/4,-x+1/4,z+1/4","-y+3/4,x+1/4,z+3/4","x+3/4,z+3/4,-y+1/4","-x+3/4,z+1/4,y+3/4","-x+1/4,-z+3/4,-y+3/4","x+1/4,-z+1/4,y+1/4","z+3/4,y+3/4,-x+1/4","z+1/4,-y+1/4,x+1/4","-z+3/4,y+1/4,x+3/4","-z+1/4,-y+3/4,-x+3/4","-x+1/4,-y+3/4,-z+3/4","x+1/4,y+1/4,-z+1/4","x+3/4,-y+1/4,z+3/4","-x+3/4,y+3/4,z+1/4","-z+1/4,-x+3/4,-y+3/4","-z+3/4,x+3/4,y+1/4","z+1/4,x+1/4,-y+1/4","z+3/4,-x+1/4,y+3/4","-y+1/4,-z+3/4,-x+3/4","y+3/4,-z+1/4,x+3/4","-y+3/4,z+3/4,x+1/4","y+1/4,z+1/4,-x+1/4","-y+1/2,-x+1/2,z","y,x+1/2,z+1/2","-y,x,-z","y+1/2,-x,-z+1/2","-x+1/2,-z+1/2,y","x+1/2,-z,-y+1/2","x,z+1/2,y+1/2","-x,z,-y","-z+1/2,-y+1/2,x","-z,y,-x","z+1/2,-y,-x+1/2","z,y+1/2,x+1/2","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-x,y+1/2,-z+1/2","x,-y,-z","z+1/2,x,y+1/2","z,-x,-y","-z+1/2,-x+1/2,y","-z,x+1/2,-y+1/2","y+1/2,z,x+1/2","-y,z+1/2,-x+1/2","y,-z,-x","-y+1/2,-z+1/2,x","y+1/4,x+1/4,-z+1/4","-y+3/4,-x+1/4,-z+3/4","y+3/4,-x+3/4,z+1/4","-y+1/4,x+3/4,z+3/4","x+1/4,z+1/4,-y+1/4","-x+1/4,z+3/4,y+3/4","-x+3/4,-z+1/4,-y+3/4","x+3/4,-z+3/4,y+1/4","z+1/4,y+1/4,-x+1/4","z+3/4,-y+3/4,x+1/4","-z+1/4,y+3/4,x+3/4","-z+3/4,-y+1/4,-x+3/4","-x+3/4,-y+1/4,-z+3/4","x+3/4,y+3/4,-z+1/4","x+1/4,-y+3/4,z+3/4","-x+1/4,y+1/4,z+1/4","-z+3/4,-x+1/4,-y+3/4","-z+1/4,x+1/4,y+1/4","z+3/4,x+3/4,-y+1/4","z+1/4,-x+3/4,y+3/4","-y+3/4,-z+1/4,-x+3/4","y+1/4,-z+3/4,x+3/4","-y+1/4,z+1/4,x+1/4","y+3/4,z+3/4,-x+1/4","-y,-x,z","y+1/2,x,z+1/2","-y+1/2,x+1/2,-z","y,-x+1/2,-z+1/2","-x,-z,y","x,-z+1/2,-y+1/2","x+1/2,z,y+1/2","-x+1/2,z+1/2,-y","-z,-y,x","-z+1/2,y+1/2,-x","z,-y+1/2,-x+1/2","z+1/2,y,x+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-x,y,-z","x,-y+1/2,-z+1/2","z+1/2,x+1/2,y","z,-x+1/2,-y+1/2","-z+1/2,-x,y+1/2","-z,x,-y","y+1/2,z+1/2,x","-y,z,-x","y,-z+1/2,-x+1/2","-y+1/2,-z,x+1/2","y+1/4,x+3/4,-z+3/4","-y+3/4,-x+3/4,-z+1/4","y+3/4,-x+1/4,z+3/4","-y+1/4,x+1/4,z+1/4","x+1/4,z+3/4,-y+3/4","-x+1/4,z+1/4,y+1/4","-x+3/4,-z+3/4,-y+1/4","x+3/4,-z+1/4,y+3/4","z+1/4,y+3/4,-x+3/4","z+3/4,-y+1/4,x+3/4","-z+1/4,y+1/4,x+1/4","-z+3/4,-y+3/4,-x+1/4","-x+3/4,-y+3/4,-z+1/4","x+3/4,y+1/4,-z+3/4","x+1/4,-y+1/4,z+1/4","-x+1/4,y+3/4,z+3/4","-z+3/4,-x+3/4,-y+1/4","-z+1/4,x+3/4,y+3/4","z+3/4,x+1/4,-y+3/4","z+1/4,-x+1/4,y+1/4","-y+3/4,-z+3/4,-x+1/4","y+1/4,-z+1/4,x+1/4","-y+1/4,z+3/4,x+3/4","y+3/4,z+1/4,-x+3/4","-y,-x+1/2,z+1/2","y+1/2,x+1/2,z","-y+1/2,x,-z+1/2","y,-x,-z","-x,-z+1/2,y+1/2","x,-z,-y","x+1/2,z+1/2,y","-x+1/2,z,-y+1/2","-z,-y+1/2,x+1/2","-z+1/2,y,-x+1/2","z,-y,-x","z+1/2,y+1/2,x" ],"hall": "F 4d 2 3 -1d","hm": "F d -3 m :1","id": "F_d_-3_m_1","jmolId": "227:1","set": 2,"sg": 227,"trm": "a,b,c;-1/8,-1/8,-1/8","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 192 },{ "coord": [ "1/8,y+1/8,-y+1/8","7/8,-y+3/8,-y+5/8","3/8,y+5/8,y+7/8","5/8,-y+7/8,y+3/8","-y+1/8,1/8,y+1/8","-y+5/8,7/8,-y+3/8","y+7/8,3/8,y+5/8","y+3/8,5/8,-y+7/8","y+1/8,-y+1/8,1/8","-y+3/8,-y+5/8,7/8","y+5/8,y+7/8,3/8","-y+7/8,y+3/8,5/8","1/8,-y+1/8,y+1/8","3/8,y+7/8,y+5/8","7/8,-y+5/8,-y+3/8","5/8,y+3/8,-y+7/8","y+1/8,1/8,-y+1/8","y+5/8,3/8,y+7/8","-y+3/8,7/8,-y+5/8","-y+7/8,5/8,y+3/8","-y+1/8,y+1/8,1/8","y+7/8,y+5/8,3/8","-y+5/8,-y+3/8,7/8","y+3/8,-y+7/8,5/8" ],"desc": "..2","geom": "line","label": "h","mult": 96 },{ "coord": [ "x+1/8,x+1/8,z+1/8","-x+7/8,-x+3/8,z+5/8","-x+3/8,x+5/8,-z+7/8","x+5/8,-x+7/8,-z+3/8","z+1/8,x+1/8,x+1/8","z+5/8,-x+7/8,-x+3/8","-z+7/8,-x+3/8,x+5/8","-z+3/8,x+5/8,-x+7/8","x+1/8,z+1/8,x+1/8","-x+3/8,z+5/8,-x+7/8","x+5/8,-z+7/8,-x+3/8","-x+7/8,-z+3/8,x+5/8","x+7/8,x+3/8,-z+5/8","-x+1/8,-x+1/8,-z+1/8","x+3/8,-x+5/8,z+7/8","-x+5/8,x+7/8,z+3/8","x+7/8,z+3/8,-x+5/8","-x+5/8,z+7/8,x+3/8","-x+1/8,-z+1/8,-x+1/8","x+3/8,-z+5/8,x+7/8","z+7/8,x+3/8,-x+5/8","z+3/8,-x+5/8,x+7/8","-z+5/8,x+7/8,x+3/8","-z+1/8,-x+1/8,-x+1/8" ],"desc": "..m","geom": "plane","label": "g","mult": 96 },{ "coord": [ "x+1/8,1/4,1/4","-x+7/8,1/4,3/4","1/4,x+1/8,1/4","3/4,-x+7/8,1/4","1/4,1/4,x+1/8","1/4,3/4,-x+7/8","0,x+3/8,1/2","0,-x+1/8,0","x+7/8,1/2,1/2","-x+5/8,0,1/2","0,1/2,-x+5/8","1/2,1/2,x+7/8" ],"desc": "2.m m","geom": "line","label": "f","mult": 48 },{ "coord": [ "x+1/8,x+1/8,x+1/8","-x+7/8,-x+3/8,x+5/8","-x+3/8,x+5/8,-x+7/8","x+5/8,-x+7/8,-x+3/8","x+7/8,x+3/8,-x+5/8","-x+1/8,-x+1/8,-x+1/8","x+3/8,-x+5/8,x+7/8","-x+5/8,x+7/8,x+3/8" ],"desc": ".3m","geom": "line","label": "e","mult": 32 },{ "coord": [ "5/8,5/8,5/8","3/8,7/8,1/8","7/8,1/8,3/8","1/8,3/8,7/8" ],"desc": ".-3m","geom": "point","label": "d","mult": 16 },{ "coord": [ "1/8,1/8,1/8","7/8,3/8,5/8","3/8,5/8,7/8","5/8,7/8,3/8" ],"desc": ".-3m","geom": "point","label": "c","mult": 16 },{ "coord": [ "1/2,1/2,1/2","1/4,3/4,1/4" ],"desc": "-43m","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/4,1/4,1/4","0,1/2,1/2" ],"desc": "-43m","geom": "point","label": "a","mult": 8 } ] } } ],"n": 2,"sg": 227 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_228.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_228.json new file mode 100755 index 000000000000..312a2db81c22 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_228.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "228:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/4,-y+3/4,z+1/2","-x+3/4,y+1/2,-z+1/4","z,x,y","y+3/4,x+1/4,-z","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/4,-y+3/4,z+1/2","-x+3/4,y+1/2,-z+1/4","x+1/2,-y+1/4,-z+3/4","z,x,y","z+1/2,-x+1/4,-y+3/4","-z+1/4,-x+3/4,y+1/2","-z+3/4,x+1/2,-y+1/4","y,z,x","-y+3/4,z+1/2,-x+1/4","y+1/2,-z+1/4,-x+3/4","-y+1/4,-z+3/4,x+1/2","y+3/4,x+1/4,-z","-y+1/2,-x+1/2,-z+1/2","y+1/4,-x,z+3/4","-y,x+3/4,z+1/4","x+3/4,z+1/4,-y","-x,z+3/4,y+1/4","-x+1/2,-z+1/2,-y+1/2","x+1/4,-z,y+3/4","z+3/4,y+1/4,-x","z+1/4,-y,x+3/4","-z,y+3/4,x+1/4","-z+1/2,-y+1/2,-x+1/2","-x,-y,-z","x+3/4,y+1/4,-z+1/2","x+1/4,-y+1/2,z+3/4","-x+1/2,y+3/4,z+1/4","-z,-x,-y","-z+1/2,x+3/4,y+1/4","z+3/4,x+1/4,-y+1/2","z+1/4,-x+1/2,y+3/4","-y,-z,-x","y+1/4,-z+1/2,x+3/4","-y+1/2,z+3/4,x+1/4","y+3/4,z+1/4,-x+1/2","-y+1/4,-x+3/4,z","y+1/2,x+1/2,z+1/2","-y+3/4,x,-z+1/4","y,-x+1/4,-z+3/4","-x+1/4,-z+3/4,y","x,-z+1/4,-y+3/4","x+1/2,z+1/2,y+1/2","-x+3/4,z,-y+1/4","-z+1/4,-y+3/4,x","-z+3/4,y,-x+1/4","z,-y+1/4,-x+3/4","z+1/2,y+1/2,x+1/2","x,y+1/2,z+1/2","-x+1/4,-y+1/4,z","-x+3/4,y,-z+3/4","x+1/2,-y+3/4,-z+1/4","z,x+1/2,y+1/2","z+1/2,-x+3/4,-y+1/4","-z+1/4,-x+1/4,y","-z+3/4,x,-y+3/4","y,z+1/2,x+1/2","-y+3/4,z,-x+3/4","y+1/2,-z+3/4,-x+1/4","-y+1/4,-z+1/4,x","y+3/4,x+3/4,-z+1/2","-y+1/2,-x,-z","y+1/4,-x+1/2,z+1/4","-y,x+1/4,z+3/4","x+3/4,z+3/4,-y+1/2","-x,z+1/4,y+3/4","-x+1/2,-z,-y","x+1/4,-z+1/2,y+1/4","z+3/4,y+3/4,-x+1/2","z+1/4,-y+1/2,x+1/4","-z,y+1/4,x+3/4","-z+1/2,-y,-x","-x,-y+1/2,-z+1/2","x+3/4,y+3/4,-z","x+1/4,-y,z+1/4","-x+1/2,y+1/4,z+3/4","-z,-x+1/2,-y+1/2","-z+1/2,x+1/4,y+3/4","z+3/4,x+3/4,-y","z+1/4,-x,y+1/4","-y,-z+1/2,-x+1/2","y+1/4,-z,x+1/4","-y+1/2,z+1/4,x+3/4","y+3/4,z+3/4,-x","-y+1/4,-x+1/4,z+1/2","y+1/2,x,z","-y+3/4,x+1/2,-z+3/4","y,-x+3/4,-z+1/4","-x+1/4,-z+1/4,y+1/2","x,-z+3/4,-y+1/4","x+1/2,z,y","-x+3/4,z+1/2,-y+3/4","-z+1/4,-y+1/4,x+1/2","-z+3/4,y+1/2,-x+3/4","z,-y+3/4,-x+1/4","z+1/2,y,x","x+1/2,y,z+1/2","-x+3/4,-y+3/4,z","-x+1/4,y+1/2,-z+3/4","x,-y+1/4,-z+1/4","z+1/2,x,y+1/2","z,-x+1/4,-y+1/4","-z+3/4,-x+3/4,y","-z+1/4,x+1/2,-y+3/4","y+1/2,z,x+1/2","-y+1/4,z+1/2,-x+3/4","y,-z+1/4,-x+1/4","-y+3/4,-z+3/4,x","y+1/4,x+1/4,-z+1/2","-y,-x+1/2,-z","y+3/4,-x,z+1/4","-y+1/2,x+3/4,z+3/4","x+1/4,z+1/4,-y+1/2","-x+1/2,z+3/4,y+3/4","-x,-z+1/2,-y","x+3/4,-z,y+1/4","z+1/4,y+1/4,-x+1/2","z+3/4,-y,x+1/4","-z+1/2,y+3/4,x+3/4","-z,-y+1/2,-x","-x+1/2,-y,-z+1/2","x+1/4,y+1/4,-z","x+3/4,-y+1/2,z+1/4","-x,y+3/4,z+3/4","-z+1/2,-x,-y+1/2","-z,x+3/4,y+3/4","z+1/4,x+1/4,-y","z+3/4,-x+1/2,y+1/4","-y+1/2,-z,-x+1/2","y+3/4,-z+1/2,x+1/4","-y,z+3/4,x+3/4","y+1/4,z+1/4,-x","-y+3/4,-x+3/4,z+1/2","y,x+1/2,z","-y+1/4,x,-z+3/4","y+1/2,-x+1/4,-z+1/4","-x+3/4,-z+3/4,y+1/2","x+1/2,-z+1/4,-y+1/4","x,z+1/2,y","-x+1/4,z,-y+3/4","-z+3/4,-y+3/4,x+1/2","-z+1/4,y,-x+3/4","z+1/2,-y+1/4,-x+1/4","z,y+1/2,x","x+1/2,y+1/2,z","-x+3/4,-y+1/4,z+1/2","-x+1/4,y,-z+1/4","x,-y+3/4,-z+3/4","z+1/2,x+1/2,y","z,-x+3/4,-y+3/4","-z+3/4,-x+1/4,y+1/2","-z+1/4,x,-y+1/4","y+1/2,z+1/2,x","-y+1/4,z,-x+1/4","y,-z+3/4,-x+3/4","-y+3/4,-z+1/4,x+1/2","y+1/4,x+3/4,-z","-y,-x,-z+1/2","y+3/4,-x+1/2,z+3/4","-y+1/2,x+1/4,z+1/4","x+1/4,z+3/4,-y","-x+1/2,z+1/4,y+1/4","-x,-z,-y+1/2","x+3/4,-z+1/2,y+3/4","z+1/4,y+3/4,-x","z+3/4,-y+1/2,x+3/4","-z+1/2,y+1/4,x+1/4","-z,-y,-x+1/2","-x+1/2,-y+1/2,-z","x+1/4,y+3/4,-z+1/2","x+3/4,-y,z+3/4","-x,y+1/4,z+1/4","-z+1/2,-x+1/2,-y","-z,x+1/4,y+1/4","z+1/4,x+3/4,-y+1/2","z+3/4,-x,y+3/4","-y+1/2,-z+1/2,-x","y+3/4,-z,x+3/4","-y,z+1/4,x+1/4","y+1/4,z+3/4,-x+1/2","-y+3/4,-x+1/4,z","y,x,z+1/2","-y+1/4,x+1/2,-z+1/4","y+1/2,-x+3/4,-z+3/4","-x+3/4,-z+1/4,y","x+1/2,-z+3/4,-y+3/4","x,z,y+1/2","-x+1/4,z+1/2,-y+1/4","-z+3/4,-y+1/4,x","-z+1/4,y+1/2,-x+1/4","z+1/2,-y+3/4,-x+3/4","z,y,x+1/2" ],"hall": "-F 4ud 2vw 3","hm": "F d -3 c :2","id": "F_d_-3_c_2","jmolId": "228:2","set": 1,"sg": 228,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 192 },{ "coord": [ "1/4,y,-y","0,-y+3/4,-y+1/2","1/2,y+1/2,y+1/4","3/4,-y+1/4,y+3/4","-y,1/4,y","-y+1/2,0,-y+3/4","y+1/4,1/2,y+1/2","y+3/4,3/4,-y+1/4","y,-y,1/4","-y+3/4,-y+1/2,0","y+1/2,y+1/4,1/2","-y+1/4,y+3/4,3/4","3/4,-y,y","0,y+1/4,y+1/2","1/2,-y+1/2,-y+3/4","1/4,y+3/4,-y+1/4","y,3/4,-y","y+1/2,0,y+1/4","-y+3/4,1/2,-y+1/2","-y+1/4,1/4,y+3/4","-y,y,3/4","y+1/4,y+1/2,0","-y+1/2,-y+3/4,1/2","y+3/4,-y+1/4,1/4" ],"desc": "..2","geom": "line","label": "g","mult": 96 },{ "coord": [ "x,1/8,1/8","-x+1/4,5/8,5/8","1/8,x,1/8","5/8,-x+1/4,5/8","1/8,1/8,x","5/8,5/8,-x+1/4","7/8,x+1/4,7/8","3/8,-x+1/2,3/8","x+3/4,3/8,7/8","-x,7/8,3/8","7/8,3/8,-x","3/8,7/8,x+3/4","-x,7/8,7/8","x+3/4,3/8,3/8","7/8,-x,7/8","3/8,x+3/4,3/8","7/8,7/8,-x","3/8,3/8,x+3/4","1/8,-x+3/4,1/8","5/8,x+1/2,5/8","-x+1/4,5/8,1/8","x,1/8,5/8","1/8,5/8,x","5/8,1/8,-x+1/4" ],"desc": "2..","geom": "line","label": "f","mult": 96 },{ "coord": [ "x,x,x","-x+1/4,-x+3/4,x+1/2","-x+3/4,x+1/2,-x+1/4","x+1/2,-x+1/4,-x+3/4","x+3/4,x+1/4,-x","-x+1/2,-x+1/2,-x+1/2","x+1/4,-x,x+3/4","-x,x+3/4,x+1/4","-x,-x,-x","x+3/4,x+1/4,-x+1/2","x+1/4,-x+1/2,x+3/4","-x+1/2,x+3/4,x+1/4","-x+1/4,-x+3/4,x","x+1/2,x+1/2,x+1/2","-x+3/4,x,-x+1/4","x,-x+1/4,-x+3/4" ],"desc": ".3.","geom": "line","label": "e","mult": 64 },{ "coord": [ "7/8,1/8,1/8","3/8,5/8,5/8","1/8,7/8,1/8","5/8,3/8,5/8","1/8,1/8,7/8","5/8,5/8,3/8","7/8,1/8,7/8","3/8,5/8,3/8","5/8,3/8,7/8","1/8,7/8,3/8","7/8,3/8,1/8","3/8,7/8,5/8" ],"desc": "-4..","geom": "point","label": "d","mult": 48 },{ "coord": [ "0,0,0","1/4,3/4,1/2","3/4,1/2,1/4","1/2,1/4,3/4","3/4,1/4,0","1/2,1/2,1/2","1/4,0,3/4","0,3/4,1/4" ],"desc": ".-3.","geom": "point","label": "c","mult": 32 },{ "coord": [ "1/4,1/4,1/4","0,1/2,3/4","1/2,3/4,0","3/4,0,1/2","3/4,3/4,3/4","0,1/2,1/4","1/2,1/4,0","1/4,0,1/2" ],"desc": ".32","geom": "point","label": "b","mult": 32 },{ "coord": [ "1/8,1/8,1/8","7/8,3/8,7/8","7/8,7/8,7/8","1/8,5/8,1/8" ],"desc": "23.","geom": "point","label": "a","mult": 16 } ] } },{ "clegId": "228:a,b,c;-3/8,-3/8,-3/8","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-x+1/2,y+1/2,-z","z,x,y","y+3/4,x+1/4,-z+3/4","-x+3/4,-y+3/4,-z+3/4","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y,-z+1/2","z,x,y","z+1/2,-x,-y+1/2","-z,-x+1/2,y+1/2","-z+1/2,x+1/2,-y","y,z,x","-y+1/2,z+1/2,-x","y+1/2,-z,-x+1/2","-y,-z+1/2,x+1/2","y+3/4,x+1/4,-z+3/4","-y+5/4,-x+5/4,-z+5/4","y+1/4,-x+3/4,z+3/4","-y+3/4,x+3/4,z+1/4","x+3/4,z+1/4,-y+3/4","-x+3/4,z+3/4,y+1/4","-x+5/4,-z+5/4,-y+5/4","x+1/4,-z+3/4,y+3/4","z+3/4,y+1/4,-x+3/4","z+1/4,-y+3/4,x+3/4","-z+3/4,y+3/4,x+1/4","-z+5/4,-y+5/4,-x+5/4","-x+3/4,-y+3/4,-z+3/4","x+3/4,y+1/4,-z+5/4","x+1/4,-y+5/4,z+3/4","-x+5/4,y+3/4,z+1/4","-z+3/4,-x+3/4,-y+3/4","-z+5/4,x+3/4,y+1/4","z+3/4,x+1/4,-y+5/4","z+1/4,-x+5/4,y+3/4","-y+3/4,-z+3/4,-x+3/4","y+1/4,-z+5/4,x+3/4","-y+5/4,z+3/4,x+1/4","y+3/4,z+1/4,-x+5/4","-y,-x+1/2,z","y+1/2,x+1/2,z+1/2","-y+1/2,x,-z","y,-x,-z+1/2","-x,-z+1/2,y","x,-z,-y+1/2","x+1/2,z+1/2,y+1/2","-x+1/2,z,-y","-z,-y+1/2,x","-z+1/2,y,-x","z,-y,-x+1/2","z+1/2,y+1/2,x+1/2","x,y+1/2,z+1/2","-x,-y,z","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z","z,x+1/2,y+1/2","z+1/2,-x+1/2,-y","-z,-x,y","-z+1/2,x,-y+1/2","y,z+1/2,x+1/2","-y+1/2,z,-x+1/2","y+1/2,-z+1/2,-x","-y,-z,x","y+3/4,x+3/4,-z+5/4","-y+5/4,-x+3/4,-z+3/4","y+1/4,-x+5/4,z+1/4","-y+3/4,x+1/4,z+3/4","x+3/4,z+3/4,-y+5/4","-x+3/4,z+1/4,y+3/4","-x+5/4,-z+3/4,-y+3/4","x+1/4,-z+5/4,y+1/4","z+3/4,y+3/4,-x+5/4","z+1/4,-y+5/4,x+1/4","-z+3/4,y+1/4,x+3/4","-z+5/4,-y+3/4,-x+3/4","-x+3/4,-y+5/4,-z+5/4","x+3/4,y+3/4,-z+3/4","x+1/4,-y+3/4,z+1/4","-x+5/4,y+1/4,z+3/4","-z+3/4,-x+5/4,-y+5/4","-z+5/4,x+1/4,y+3/4","z+3/4,x+3/4,-y+3/4","z+1/4,-x+3/4,y+1/4","-y+3/4,-z+5/4,-x+5/4","y+1/4,-z+3/4,x+1/4","-y+5/4,z+1/4,x+3/4","y+3/4,z+3/4,-x+3/4","-y,-x,z+1/2","y+1/2,x,z","-y+1/2,x+1/2,-z+1/2","y,-x+1/2,-z","-x,-z,y+1/2","x,-z+1/2,-y","x+1/2,z,y","-x+1/2,z+1/2,-y+1/2","-z,-y,x+1/2","-z+1/2,y+1/2,-x+1/2","z,-y+1/2,-x","z+1/2,y,x","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-x,y+1/2,-z+1/2","x,-y,-z","z+1/2,x,y+1/2","z,-x,-y","-z+1/2,-x+1/2,y","-z,x+1/2,-y+1/2","y+1/2,z,x+1/2","-y,z+1/2,-x+1/2","y,-z,-x","-y+1/2,-z+1/2,x","y+1/4,x+1/4,-z+5/4","-y+3/4,-x+5/4,-z+3/4","y+3/4,-x+3/4,z+1/4","-y+5/4,x+3/4,z+3/4","x+1/4,z+1/4,-y+5/4","-x+5/4,z+3/4,y+3/4","-x+3/4,-z+5/4,-y+3/4","x+3/4,-z+3/4,y+1/4","z+1/4,y+1/4,-x+5/4","z+3/4,-y+3/4,x+1/4","-z+5/4,y+3/4,x+3/4","-z+3/4,-y+5/4,-x+3/4","-x+5/4,-y+3/4,-z+5/4","x+1/4,y+1/4,-z+3/4","x+3/4,-y+5/4,z+1/4","-x+3/4,y+3/4,z+3/4","-z+5/4,-x+3/4,-y+5/4","-z+3/4,x+3/4,y+3/4","z+1/4,x+1/4,-y+3/4","z+3/4,-x+5/4,y+1/4","-y+5/4,-z+3/4,-x+5/4","y+3/4,-z+5/4,x+1/4","-y+3/4,z+3/4,x+3/4","y+1/4,z+1/4,-x+3/4","-y+1/2,-x+1/2,z+1/2","y,x+1/2,z","-y,x,-z+1/2","y+1/2,-x,-z","-x+1/2,-z+1/2,y+1/2","x+1/2,-z,-y","x,z+1/2,y","-x,z,-y+1/2","-z+1/2,-y+1/2,x+1/2","-z,y,-x+1/2","z+1/2,-y,-x","z,y+1/2,x","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-x,y,-z","x,-y+1/2,-z+1/2","z+1/2,x+1/2,y","z,-x+1/2,-y+1/2","-z+1/2,-x,y+1/2","-z,x,-y","y+1/2,z+1/2,x","-y,z,-x","y,-z+1/2,-x+1/2","-y+1/2,-z,x+1/2","y+1/4,x+3/4,-z+3/4","-y+3/4,-x+3/4,-z+5/4","y+3/4,-x+5/4,z+3/4","-y+5/4,x+1/4,z+1/4","x+1/4,z+3/4,-y+3/4","-x+5/4,z+1/4,y+1/4","-x+3/4,-z+3/4,-y+5/4","x+3/4,-z+5/4,y+3/4","z+1/4,y+3/4,-x+3/4","z+3/4,-y+5/4,x+3/4","-z+5/4,y+1/4,x+1/4","-z+3/4,-y+3/4,-x+5/4","-x+5/4,-y+5/4,-z+3/4","x+1/4,y+3/4,-z+5/4","x+3/4,-y+3/4,z+3/4","-x+3/4,y+1/4,z+1/4","-z+5/4,-x+5/4,-y+3/4","-z+3/4,x+1/4,y+1/4","z+1/4,x+3/4,-y+5/4","z+3/4,-x+3/4,y+3/4","-y+5/4,-z+5/4,-x+3/4","y+3/4,-z+3/4,x+3/4","-y+3/4,z+1/4,x+1/4","y+1/4,z+3/4,-x+5/4","-y+1/2,-x,z","y,x,z+1/2","-y,x+1/2,-z","y+1/2,-x+1/2,-z+1/2","-x+1/2,-z,y","x+1/2,-z+1/2,-y+1/2","x,z,y+1/2","-x,z+1/2,-y","-z+1/2,-y,x","-z,y+1/2,-x","z+1/2,-y+1/2,-x+1/2","z,y,x+1/2" ],"hall": "F 4d 2 3 -1ad","hm": "F d -3 c :1","id": "F_d_-3_c_1","jmolId": "228:1","set": 2,"sg": 228,"trm": "a,b,c;-3/8,-3/8,-3/8","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 192 },{ "coord": [ "5/8,y+3/8,-y+3/8","3/8,-y+1/8,-y+7/8","7/8,y+7/8,y+5/8","1/8,-y+5/8,y+1/8","-y+3/8,5/8,y+3/8","-y+7/8,3/8,-y+1/8","y+5/8,7/8,y+7/8","y+1/8,1/8,-y+5/8","y+3/8,-y+3/8,5/8","-y+1/8,-y+7/8,3/8","y+7/8,y+5/8,7/8","-y+5/8,y+1/8,1/8","1/8,-y+3/8,y+3/8","3/8,y+5/8,y+7/8","7/8,-y+7/8,-y+1/8","5/8,y+1/8,-y+5/8","y+3/8,1/8,-y+3/8","y+7/8,3/8,y+5/8","-y+1/8,7/8,-y+7/8","-y+5/8,5/8,y+1/8","-y+3/8,y+3/8,1/8","y+5/8,y+7/8,3/8","-y+7/8,-y+1/8,7/8","y+1/8,-y+5/8,5/8" ],"desc": "..2","geom": "line","label": "g","mult": 96 },{ "coord": [ "x+3/8,1/2,1/2","-x+5/8,0,0","1/2,x+3/8,1/2","0,-x+5/8,0","1/2,1/2,x+3/8","0,0,-x+5/8","1/4,x+5/8,1/4","3/4,-x+7/8,3/4","x+1/8,3/4,1/4","-x+3/8,1/4,3/4","1/4,3/4,-x+3/8","3/4,1/4,x+1/8","-x+3/8,1/4,1/4","x+1/8,3/4,3/4","1/4,-x+3/8,1/4","3/4,x+1/8,3/4","1/4,1/4,-x+3/8","3/4,3/4,x+1/8","1/2,-x+1/8,1/2","0,x+7/8,0","-x+5/8,0,1/2","x+3/8,1/2,0","1/2,0,x+3/8","0,1/2,-x+5/8" ],"desc": "2..","geom": "line","label": "f","mult": 96 },{ "coord": [ "x+3/8,x+3/8,x+3/8","-x+5/8,-x+1/8,x+7/8","-x+1/8,x+7/8,-x+5/8","x+7/8,-x+5/8,-x+1/8","x+1/8,x+5/8,-x+3/8","-x+7/8,-x+7/8,-x+7/8","x+5/8,-x+3/8,x+1/8","-x+3/8,x+1/8,x+5/8","-x+3/8,-x+3/8,-x+3/8","x+1/8,x+5/8,-x+7/8","x+5/8,-x+7/8,x+1/8","-x+7/8,x+1/8,x+5/8","-x+5/8,-x+1/8,x+3/8","x+7/8,x+7/8,x+7/8","-x+1/8,x+3/8,-x+5/8","x+3/8,-x+5/8,-x+1/8" ],"desc": ".3.","geom": "line","label": "e","mult": 64 },{ "coord": [ "1/4,1/2,1/2","3/4,0,0","1/2,1/4,1/2","0,3/4,0","1/2,1/2,1/4","0,0,3/4","1/4,1/2,1/4","3/4,0,3/4","0,3/4,1/4","1/2,1/4,3/4","1/4,3/4,1/2","3/4,1/4,0" ],"desc": "-4..","geom": "point","label": "d","mult": 48 },{ "coord": [ "3/8,3/8,3/8","5/8,1/8,7/8","1/8,7/8,5/8","7/8,5/8,1/8","1/8,5/8,3/8","7/8,7/8,7/8","5/8,3/8,1/8","3/8,1/8,5/8" ],"desc": ".-3.","geom": "point","label": "c","mult": 32 },{ "coord": [ "5/8,5/8,5/8","3/8,7/8,1/8","7/8,1/8,3/8","1/8,3/8,7/8","1/8,1/8,1/8","3/8,7/8,5/8","7/8,5/8,3/8","5/8,3/8,7/8" ],"desc": ".32","geom": "point","label": "b","mult": 32 },{ "coord": [ "1/2,1/2,1/2","1/4,3/4,1/4","1/4,1/4,1/4","1/2,0,1/2" ],"desc": "23.","geom": "point","label": "a","mult": 16 } ] } } ],"n": 2,"sg": 228 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_229.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_229.json new file mode 100755 index 000000000000..198ff0dcbcf6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_229.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "229:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","z,x,y","y,x,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","z,x,y","z,-x,-y","-z,-x,y","-z,x,-y","y,z,x","-y,z,-x","y,-z,-x","-y,-z,x","y,x,-z","-y,-x,-z","y,-x,z","-y,x,z","x,z,-y","-x,z,y","-x,-z,-y","x,-z,y","z,y,-x","z,-y,x","-z,y,x","-z,-y,-x","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","-z,-x,-y","-z,x,y","z,x,-y","z,-x,y","-y,-z,-x","y,-z,x","-y,z,x","y,z,-x","-y,-x,z","y,x,z","-y,x,-z","y,-x,-z","-x,-z,y","x,-z,-y","x,z,y","-x,z,-y","-z,-y,x","-z,y,-x","z,-y,-x","z,y,x","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","z+1/2,x+1/2,y+1/2","z+1/2,-x+1/2,-y+1/2","-z+1/2,-x+1/2,y+1/2","-z+1/2,x+1/2,-y+1/2","y+1/2,z+1/2,x+1/2","-y+1/2,z+1/2,-x+1/2","y+1/2,-z+1/2,-x+1/2","-y+1/2,-z+1/2,x+1/2","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","x+1/2,z+1/2,-y+1/2","-x+1/2,z+1/2,y+1/2","-x+1/2,-z+1/2,-y+1/2","x+1/2,-z+1/2,y+1/2","z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,x+1/2","-z+1/2,-y+1/2,-x+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","-z+1/2,-x+1/2,-y+1/2","-z+1/2,x+1/2,y+1/2","z+1/2,x+1/2,-y+1/2","z+1/2,-x+1/2,y+1/2","-y+1/2,-z+1/2,-x+1/2","y+1/2,-z+1/2,x+1/2","-y+1/2,z+1/2,x+1/2","y+1/2,z+1/2,-x+1/2","-y+1/2,-x+1/2,z+1/2","y+1/2,x+1/2,z+1/2","-y+1/2,x+1/2,-z+1/2","y+1/2,-x+1/2,-z+1/2","-x+1/2,-z+1/2,y+1/2","x+1/2,-z+1/2,-y+1/2","x+1/2,z+1/2,y+1/2","-x+1/2,z+1/2,-y+1/2","-z+1/2,-y+1/2,x+1/2","-z+1/2,y+1/2,-x+1/2","z+1/2,-y+1/2,-x+1/2","z+1/2,y+1/2,x+1/2" ],"hall": "-I 4 2 3","hm": "I m -3 m","id": "I_m_-3_m","jmolId": "229","set": 1,"sg": 229,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "l","mult": 96 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,-z","x,-x,-z","z,x,x","z,-x,-x","-z,-x,x","-z,x,-x","x,z,x","-x,z,-x","x,-z,-x","-x,-z,x","x,x,-z","-x,-x,-z","x,-x,z","-x,x,z","x,z,-x","-x,z,x","-x,-z,-x","x,-z,x","z,x,-x","z,-x,x","-z,x,x","-z,-x,-x" ],"desc": "..m","geom": "plane","label": "k","mult": 48 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z","z,0,y","z,0,-y","-z,0,y","-z,0,-y","y,z,0","-y,z,0","y,-z,0","-y,-z,0","y,0,-z","-y,0,-z","y,0,z","-y,0,z","0,z,-y","0,z,y","0,-z,-y","0,-z,y","z,y,0","z,-y,0","-z,y,0","-z,-y,0" ],"desc": "m..","geom": "plane","label": "j","mult": 48 },{ "coord": [ "1/4,y,-y+1/2","3/4,-y,-y+1/2","3/4,y,y+1/2","1/4,-y,y+1/2","-y+1/2,1/4,y","-y+1/2,3/4,-y","y+1/2,3/4,y","y+1/2,1/4,-y","y,-y+1/2,1/4","-y,-y+1/2,3/4","y,y+1/2,3/4","-y,y+1/2,1/4","3/4,-y,y+1/2","1/4,y,y+1/2","1/4,-y,-y+1/2","3/4,y,-y+1/2","y+1/2,3/4,-y","y+1/2,1/4,y","-y+1/2,1/4,-y","-y+1/2,3/4,y","-y,y+1/2,3/4","y,y+1/2,1/4","-y,-y+1/2,1/4","y,-y+1/2,3/4" ],"desc": "..2","geom": "line","label": "i","mult": 48 },{ "coord": [ "0,y,y","0,-y,y","0,y,-y","0,-y,-y","y,0,y","y,0,-y","-y,0,y","-y,0,-y","y,y,0","-y,y,0","y,-y,0","-y,-y,0" ],"desc": "m.m 2","geom": "line","label": "h","mult": 24 },{ "coord": [ "x,0,1/2","-x,0,1/2","1/2,x,0","1/2,-x,0","0,1/2,x","0,1/2,-x","0,x,1/2","0,-x,1/2","x,1/2,0","-x,1/2,0","1/2,0,-x","1/2,0,x" ],"desc": "mm2 . .","geom": "line","label": "g","mult": 24 },{ "coord": [ "x,x,x","-x,-x,x","-x,x,-x","x,-x,-x","x,x,-x","-x,-x,-x","x,-x,x","-x,x,x" ],"desc": ".3m","geom": "line","label": "f","mult": 16 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0","0,0,x","0,0,-x" ],"desc": "4m. m","geom": "line","label": "e","mult": 12 },{ "coord": [ "1/4,0,1/2","3/4,0,1/2","1/2,1/4,0","1/2,3/4,0","0,1/2,1/4","0,1/2,3/4" ],"desc": "-4m. 2","geom": "point","label": "d","mult": 12 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": ".-3m","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "4/mm. m","geom": "point","label": "b","mult": 6 },{ "coord": [ "0,0,0" ],"desc": "m-3m","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 229 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_23.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_23.json new file mode 100755 index 000000000000..60480442bb35 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_23.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "23:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2" ],"hall": "I 2 2","hm": "I 2 2 2","id": "I_2_2_2","jmolId": "23","set": 1,"sg": 23,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "..2","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "..2","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,y,0","1/2,-y,0" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "x,0,1/2","-x,0,1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "x,0,0","-x,0,0" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,0" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 23 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_230.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_230.json new file mode 100755 index 000000000000..d6bcfdf32224 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_230.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "230:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","z,x,y","y+3/4,x+1/4,-z+1/4","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","z,x,y","z+1/2,-x+1/2,-y","-z+1/2,-x,y+1/2","-z,x+1/2,-y+1/2","y,z,x","-y,z+1/2,-x+1/2","y+1/2,-z+1/2,-x","-y+1/2,-z,x+1/2","y+3/4,x+1/4,-z+1/4","-y+3/4,-x+3/4,-z+3/4","y+1/4,-x+1/4,z+3/4","-y+1/4,x+3/4,z+1/4","x+3/4,z+1/4,-y+1/4","-x+1/4,z+3/4,y+1/4","-x+3/4,-z+3/4,-y+3/4","x+1/4,-z+1/4,y+3/4","z+3/4,y+1/4,-x+1/4","z+1/4,-y+1/4,x+3/4","-z+1/4,y+3/4,x+1/4","-z+3/4,-y+3/4,-x+3/4","-x,-y,-z","x+1/2,y,-z+1/2","x,-y+1/2,z+1/2","-x+1/2,y+1/2,z","-z,-x,-y","-z+1/2,x+1/2,y","z+1/2,x,-y+1/2","z,-x+1/2,y+1/2","-y,-z,-x","y,-z+1/2,x+1/2","-y+1/2,z+1/2,x","y+1/2,z,-x+1/2","-y+1/4,-x+3/4,z+3/4","y+1/4,x+1/4,z+1/4","-y+3/4,x+3/4,-z+1/4","y+3/4,-x+1/4,-z+3/4","-x+1/4,-z+3/4,y+3/4","x+3/4,-z+1/4,-y+3/4","x+1/4,z+1/4,y+1/4","-x+3/4,z+3/4,-y+1/4","-z+1/4,-y+3/4,x+3/4","-z+3/4,y+3/4,-x+1/4","z+3/4,-y+1/4,-x+3/4","z+1/4,y+1/4,x+1/4","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-x+1/2,y,-z","x,-y,-z+1/2","z+1/2,x+1/2,y+1/2","z,-x,-y+1/2","-z,-x+1/2,y","-z+1/2,x,-y","y+1/2,z+1/2,x+1/2","-y+1/2,z,-x","y,-z,-x+1/2","-y,-z+1/2,x","y+1/4,x+3/4,-z+3/4","-y+1/4,-x+1/4,-z+1/4","y+3/4,-x+3/4,z+1/4","-y+3/4,x+1/4,z+3/4","x+1/4,z+3/4,-y+3/4","-x+3/4,z+1/4,y+3/4","-x+1/4,-z+1/4,-y+1/4","x+3/4,-z+3/4,y+1/4","z+1/4,y+3/4,-x+3/4","z+3/4,-y+3/4,x+1/4","-z+3/4,y+1/4,x+3/4","-z+1/4,-y+1/4,-x+1/4","-x+1/2,-y+1/2,-z+1/2","x,y+1/2,-z","x+1/2,-y,z","-x,y,z+1/2","-z+1/2,-x+1/2,-y+1/2","-z,x,y+1/2","z,x+1/2,-y","z+1/2,-x,y","-y+1/2,-z+1/2,-x+1/2","y+1/2,-z,x","-y,z,x+1/2","y,z+1/2,-x","-y+3/4,-x+1/4,z+1/4","y+3/4,x+3/4,z+3/4","-y+1/4,x+1/4,-z+3/4","y+1/4,-x+3/4,-z+1/4","-x+3/4,-z+1/4,y+1/4","x+1/4,-z+3/4,-y+1/4","x+3/4,z+3/4,y+3/4","-x+1/4,z+1/4,-y+3/4","-z+3/4,-y+1/4,x+1/4","-z+1/4,y+1/4,-x+3/4","z+1/4,-y+3/4,-x+1/4","z+3/4,y+3/4,x+3/4" ],"hall": "-I 4bd 2c 3","hm": "I a -3 d","id": "I_a_-3_d","jmolId": "230","set": 1,"sg": 230,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 96 },{ "coord": [ "1/8,y,-y+1/4","3/8,-y,-y+3/4","7/8,y+1/2,y+1/4","5/8,-y+1/2,y+3/4","-y+1/4,1/8,y","-y+3/4,3/8,-y","y+1/4,7/8,y+1/2","y+3/4,5/8,-y+1/2","y,-y+1/4,1/8","-y,-y+3/4,3/8","y+1/2,y+1/4,7/8","-y+1/2,y+3/4,5/8","7/8,-y,y+3/4","5/8,y,y+1/4","1/8,-y+1/2,-y+3/4","3/8,y+1/2,-y+1/4","y+3/4,7/8,-y","y+1/4,5/8,y","-y+3/4,1/8,-y+1/2","-y+1/4,3/8,y+1/2","-y,y+3/4,7/8","y,y+1/4,5/8","-y+1/2,-y+3/4,1/8","y+1/2,-y+1/4,3/8" ],"desc": "..2","geom": "line","label": "g","mult": 48 },{ "coord": [ "x,0,1/4","-x+1/2,0,3/4","1/4,x,0","3/4,-x+1/2,0","0,1/4,x","0,3/4,-x+1/2","3/4,x+1/4,0","3/4,-x+3/4,1/2","x+3/4,1/2,1/4","-x+1/4,0,1/4","0,1/4,-x+1/4","1/2,1/4,x+3/4","-x,0,3/4","x+1/2,0,1/4","3/4,-x,0","1/4,x+1/2,0","0,3/4,-x","0,1/4,x+1/2","1/4,-x+3/4,0","1/4,x+1/4,1/2","-x+1/4,1/2,3/4","x+3/4,0,3/4","0,3/4,x+3/4","1/2,3/4,-x+1/4" ],"desc": "2..","geom": "line","label": "f","mult": 48 },{ "coord": [ "x,x,x","-x+1/2,-x,x+1/2","-x,x+1/2,-x+1/2","x+1/2,-x+1/2,-x","x+3/4,x+1/4,-x+1/4","-x+3/4,-x+3/4,-x+3/4","x+1/4,-x+1/4,x+3/4","-x+1/4,x+3/4,x+1/4","-x,-x,-x","x+1/2,x,-x+1/2","x,-x+1/2,x+1/2","-x+1/2,x+1/2,x","-x+1/4,-x+3/4,x+3/4","x+1/4,x+1/4,x+1/4","-x+3/4,x+3/4,-x+1/4","x+3/4,-x+1/4,-x+3/4" ],"desc": ".3.","geom": "line","label": "e","mult": 32 },{ "coord": [ "3/8,0,1/4","1/8,0,3/4","1/4,3/8,0","3/4,1/8,0","0,1/4,3/8","0,3/4,1/8","3/4,5/8,0","3/4,3/8,1/2","1/8,1/2,1/4","7/8,0,1/4","0,1/4,7/8","1/2,1/4,1/8" ],"desc": "-4..","geom": "point","label": "d","mult": 24 },{ "coord": [ "1/8,0,1/4","3/8,0,3/4","1/4,1/8,0","3/4,3/8,0","0,1/4,1/8","0,3/4,3/8","7/8,0,3/4","5/8,0,1/4","3/4,7/8,0","1/4,5/8,0","0,3/4,7/8","0,1/4,5/8" ],"desc": "2.2 2","geom": "point","label": "c","mult": 24 },{ "coord": [ "1/8,1/8,1/8","3/8,7/8,5/8","7/8,5/8,3/8","5/8,3/8,7/8","7/8,7/8,7/8","5/8,1/8,3/8","1/8,3/8,5/8","3/8,5/8,1/8" ],"desc": ".32","geom": "point","label": "b","mult": 16 },{ "coord": [ "0,0,0","1/2,0,1/2","0,1/2,1/2","1/2,1/2,0","3/4,1/4,1/4","3/4,3/4,3/4","1/4,1/4,3/4","1/4,3/4,1/4" ],"desc": ".-3.","geom": "point","label": "a","mult": 16 } ] } } ],"n": 1,"sg": 230 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_24.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_24.json new file mode 100755 index 000000000000..344c8f981492 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_24.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "24:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-x+1/2,y,-z","x,-y,-z+1/2" ],"hall": "I 2b 2c","hm": "I 21 21 21","id": "I_21_21_21","jmolId": "24","set": 1,"sg": 24,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "0,1/4,z","0,3/4,-z+1/2" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/4,y,0","1/4,-y,1/2" ],"desc": ".2.","geom": "line","label": "b","mult": 4 },{ "coord": [ "x,0,1/4","-x+1/2,0,3/4" ],"desc": "2..","geom": "line","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 24 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_25.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_25.json new file mode 100755 index 000000000000..36e449e38667 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_25.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "25:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y,z" ],"gp": [ "x,y,z","-x,-y,z","x,-y,z","-x,y,z" ],"hall": "P 2 -2","hm": "P m m 2","id": "P_m_m_2","jmolId": "25","set": 1,"sg": 25,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 4 },{ "coord": [ "1/2,y,z","1/2,-y,z" ],"desc": "m..","geom": "plane","label": "h","mult": 2 },{ "coord": [ "0,y,z","0,-y,z" ],"desc": "m..","geom": "plane","label": "g","mult": 2 },{ "coord": [ "x,1/2,z","-x,1/2,z" ],"desc": ".m.","geom": "plane","label": "f","mult": 2 },{ "coord": [ "x,0,z","-x,0,z" ],"desc": ".m.","geom": "plane","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,z" ],"desc": "mm2","geom": "line","label": "d","mult": 1 },{ "coord": [ "1/2,0,z" ],"desc": "mm2","geom": "line","label": "c","mult": 1 },{ "coord": [ "0,1/2,z" ],"desc": "mm2","geom": "line","label": "b","mult": 1 },{ "coord": [ "0,0,z" ],"desc": "mm2","geom": "line","label": "a","mult": 1 } ] } },{ "clegId": "25:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y,-z" ],"gp": [ "x,y,z","x,-y,-z","x,y,-z","x,-y,z" ],"hall": "P -2 2","hm": "P 2 m m","id": "P_2_m_m","jmolId": "25:cab","set": 2,"sg": 25,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 4 },{ "coord": [ "z,1/2,y","z,1/2,-y" ],"desc": "m..","geom": "plane","label": "h","mult": 2 },{ "coord": [ "z,0,y","z,0,-y" ],"desc": "m..","geom": "plane","label": "g","mult": 2 },{ "coord": [ "z,x,1/2","z,-x,1/2" ],"desc": ".m.","geom": "plane","label": "f","mult": 2 },{ "coord": [ "z,x,0","z,-x,0" ],"desc": ".m.","geom": "plane","label": "e","mult": 2 },{ "coord": [ "z,1/2,1/2" ],"desc": "mm2","geom": "line","label": "d","mult": 1 },{ "coord": [ "z,1/2,0" ],"desc": "mm2","geom": "line","label": "c","mult": 1 },{ "coord": [ "z,0,1/2" ],"desc": "mm2","geom": "line","label": "b","mult": 1 },{ "coord": [ "z,0,0" ],"desc": "mm2","geom": "line","label": "a","mult": 1 } ] } },{ "clegId": "25:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y,z" ],"gp": [ "x,y,z","-x,y,-z","-x,y,z","x,y,-z" ],"hall": "P -2 -2","hm": "P m 2 m","id": "P_m_2_m","jmolId": "25:bca","set": 3,"sg": 25,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 4 },{ "coord": [ "y,z,1/2","-y,z,1/2" ],"desc": "m..","geom": "plane","label": "h","mult": 2 },{ "coord": [ "y,z,0","-y,z,0" ],"desc": "m..","geom": "plane","label": "g","mult": 2 },{ "coord": [ "1/2,z,x","1/2,z,-x" ],"desc": ".m.","geom": "plane","label": "f","mult": 2 },{ "coord": [ "0,z,x","0,z,-x" ],"desc": ".m.","geom": "plane","label": "e","mult": 2 },{ "coord": [ "1/2,z,1/2" ],"desc": "mm2","geom": "line","label": "d","mult": 1 },{ "coord": [ "0,z,1/2" ],"desc": "mm2","geom": "line","label": "c","mult": 1 },{ "coord": [ "1/2,z,0" ],"desc": "mm2","geom": "line","label": "b","mult": 1 },{ "coord": [ "0,z,0" ],"desc": "mm2","geom": "line","label": "a","mult": 1 } ] } } ],"n": 3,"sg": 25 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_26.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_26.json new file mode 100755 index 000000000000..86b1f1c6f48e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_26.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "26:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","x,-y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z+1/2","x,-y,z+1/2","-x,y,z" ],"hall": "P 2c -2","hm": "P m c 21","id": "P_m_c_21","jmolId": "26","set": 1,"sg": 26,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,y,z","1/2,-y,z+1/2" ],"desc": "m..","geom": "plane","label": "b","mult": 2 },{ "coord": [ "0,y,z","0,-y,z+1/2" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "26:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x,y,z+1/2","x,-y,z" ],"hall": "P 2c -2c","hm": "P c m 21","id": "P_c_m_21","jmolId": "26:ba-c","set": 2,"sg": 26,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "y,1/2,-z","-y,1/2,-z+1/2" ],"desc": "m..","geom": "plane","label": "b","mult": 2 },{ "coord": [ "y,0,-z","-y,0,-z+1/2" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "26:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","x+1/2,y,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z","x+1/2,y,-z","x,-y,z" ],"hall": "P -2a 2a","hm": "P 21 m a","id": "P_21_m_a","jmolId": "26:cab","set": 3,"sg": 26,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "z,1/2,y","z+1/2,1/2,-y" ],"desc": "m..","geom": "plane","label": "b","mult": 2 },{ "coord": [ "z,0,y","z+1/2,0,-y" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "26:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","x+1/2,-y,z" ],"gp": [ "x,y,z","x+1/2,-y,-z","x+1/2,-y,z","x,y,-z" ],"hall": "P -2 2a","hm": "P 21 a m","id": "P_21_a_m","jmolId": "26:-cba","set": 4,"sg": 26,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "-z,y,1/2","-z+1/2,-y,1/2" ],"desc": "m..","geom": "plane","label": "b","mult": 2 },{ "coord": [ "-z,y,0","-z+1/2,-y,0" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "26:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","-x,y+1/2,z" ],"gp": [ "x,y,z","-x,y+1/2,-z","-x,y+1/2,z","x,y,-z" ],"hall": "P -2 -2b","hm": "P b 21 m","id": "P_b_21_m","jmolId": "26:bca","set": 5,"sg": 26,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "y,z,1/2","-y,z+1/2,1/2" ],"desc": "m..","geom": "plane","label": "b","mult": 2 },{ "coord": [ "y,z,0","-y,z+1/2,0" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "26:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","x,y+1/2,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z","x,y+1/2,-z","-x,y,z" ],"hall": "P -2b -2","hm": "P m 21 b","id": "P_m_21_b","jmolId": "26:a-cb","set": 6,"sg": 26,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,-z,y","1/2,-z+1/2,-y" ],"desc": "m..","geom": "plane","label": "b","mult": 2 },{ "coord": [ "0,-z,y","0,-z+1/2,-y" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 26 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_27.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_27.json new file mode 100755 index 000000000000..a10d4c8edcad --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_27.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "27:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x,-y,z+1/2","-x,y,z+1/2" ],"hall": "P 2 -2c","hm": "P c c 2","id": "P_c_c_2","jmolId": "27","set": 1,"sg": 27,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "d","mult": 2 },{ "coord": [ "1/2,0,z","1/2,0,z+1/2" ],"desc": "..2","geom": "line","label": "c","mult": 2 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "27:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/2,y,-z" ],"gp": [ "x,y,z","x,-y,-z","x+1/2,y,-z","x+1/2,-y,z" ],"hall": "P -2a 2","hm": "P 2 a a","id": "P_2_a_a","jmolId": "27:cab","set": 2,"sg": 27,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "z,1/2,1/2","z+1/2,1/2,1/2" ],"desc": "..2","geom": "line","label": "d","mult": 2 },{ "coord": [ "z,1/2,0","z+1/2,1/2,0" ],"desc": "..2","geom": "line","label": "c","mult": 2 },{ "coord": [ "z,0,1/2","z+1/2,0,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0","z+1/2,0,0" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "27:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z","-x,y+1/2,z","x,y+1/2,-z" ],"hall": "P -2b -2b","hm": "P b 2 b","id": "P_b_2_b","jmolId": "27:bca","set": 3,"sg": 27,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 4 },{ "coord": [ "1/2,z,1/2","1/2,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "d","mult": 2 },{ "coord": [ "0,z,1/2","0,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,z,0","1/2,z+1/2,0" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0","0,z+1/2,0" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 27 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_28.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_28.json new file mode 100755 index 000000000000..84351bfc97ec --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_28.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "28:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,-y,z" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,-y,z","-x+1/2,y,z" ],"hall": "P 2 -2a","hm": "P m a 2","id": "P_m_a_2","jmolId": "28","set": 1,"sg": 28,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 4 },{ "coord": [ "1/4,y,z","3/4,-y,z" ],"desc": "m..","geom": "plane","label": "c","mult": 2 },{ "coord": [ "0,1/2,z","1/2,1/2,z" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","1/2,0,z" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "28:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-x,y+1/2,z","x,-y+1/2,z" ],"hall": "P 2 -2b","hm": "P b m 2","id": "P_b_m_2","jmolId": "28:ba-c","set": 2,"sg": 28,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 4 },{ "coord": [ "y,1/4,-z","-y,3/4,-z" ],"desc": "m..","geom": "plane","label": "c","mult": 2 },{ "coord": [ "1/2,0,-z","1/2,1/2,-z" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,-z","0,1/2,-z" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "28:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y+1/2,-z" ],"gp": [ "x,y,z","x,-y,-z","x,y+1/2,-z","x,-y+1/2,z" ],"hall": "P -2b 2","hm": "P 2 m b","id": "P_2_m_b","jmolId": "28:cab","set": 3,"sg": 28,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 4 },{ "coord": [ "z,1/4,y","z,3/4,-y" ],"desc": "m..","geom": "plane","label": "c","mult": 2 },{ "coord": [ "z,0,1/2","z,1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0","z,1/2,0" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "28:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,-y,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,-y,z+1/2","x,y,-z+1/2" ],"hall": "P -2c 2","hm": "P 2 c m","id": "P_2_c_m","jmolId": "28:-cba","set": 4,"sg": 28,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 4 },{ "coord": [ "-z,y,1/4","-z,-y,3/4" ],"desc": "m..","geom": "plane","label": "c","mult": 2 },{ "coord": [ "-z,1/2,0","-z,1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "-z,0,0","-z,0,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "28:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x,y,z+1/2","x,y,-z+1/2" ],"hall": "P -2c -2c","hm": "P c 2 m","id": "P_c_2_m","jmolId": "28:bca","set": 5,"sg": 28,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 4 },{ "coord": [ "y,z,1/4","-y,z,3/4" ],"desc": "m..","geom": "plane","label": "c","mult": 2 },{ "coord": [ "1/2,z,0","1/2,z,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0","0,z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "28:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,y,-z" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,y,-z","-x+1/2,y,z" ],"hall": "P -2a -2a","hm": "P m 2 a","id": "P_m_2_a","jmolId": "28:a-cb","set": 6,"sg": 28,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 4 },{ "coord": [ "1/4,-z,y","3/4,-z,-y" ],"desc": "m..","geom": "plane","label": "c","mult": 2 },{ "coord": [ "0,-z,1/2","1/2,-z,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,-z,0","1/2,-z,0" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 28 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_29.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_29.json new file mode 100755 index 000000000000..09cbb6291309 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_29.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "29:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","x+1/2,-y,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","x+1/2,-y,z","-x+1/2,y,z+1/2" ],"hall": "P 2c -2ac","hm": "P c a 21","id": "P_c_a_21","jmolId": "29","set": 1,"sg": 29,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "29:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x,y+1/2,z","x,-y+1/2,z+1/2" ],"hall": "P 2c -2b","hm": "P b c 21","id": "P_b_c_21","jmolId": "29:ba-c","set": 2,"sg": 29,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "29:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","x,y+1/2,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z","x,y+1/2,-z","x+1/2,-y+1/2,z" ],"hall": "P -2b 2a","hm": "P 21 a b","id": "P_21_a_b","jmolId": "29:cab","set": 3,"sg": 29,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "29:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","x,-y,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z","x,-y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "P -2ac 2a","hm": "P 21 c a","id": "P_21_c_a","jmolId": "29:-cba","set": 4,"sg": 29,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "29:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","-x,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z","-x,y,z+1/2","x,y+1/2,-z+1/2" ],"hall": "P -2bc -2c","hm": "P c 21 b","id": "P_c_21_b","jmolId": "29:bca","set": 5,"sg": 29,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "29:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","x+1/2,y,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z","x+1/2,y,-z","-x+1/2,y+1/2,z" ],"hall": "P -2a -2ab","hm": "P b 21 a","id": "P_b_21_a","jmolId": "29:a-cb","set": 6,"sg": 29,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 29 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_3.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_3.json new file mode 100755 index 000000000000..e10221a7054f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_3.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "3:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y,-z" ],"gp": [ "x,y,z","-x,y,-z" ],"hall": "P 2y","hm": "P 1 2 1","id": "P_1_2_1","jmolId": "3:b","set": 1,"sg": 3,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 2 },{ "coord": [ "1/2,y,1/2" ],"desc": "2","geom": "line","label": "d","mult": 1 },{ "coord": [ "1/2,y,0" ],"desc": "2","geom": "line","label": "c","mult": 1 },{ "coord": [ "0,y,1/2" ],"desc": "2","geom": "line","label": "b","mult": 1 },{ "coord": [ "0,y,0" ],"desc": "2","geom": "line","label": "a","mult": 1 } ] } },{ "clegId": "3:c,a,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z" ],"gp": [ "x,y,z","-x,-y,z" ],"hall": "P 2","hm": "P 1 1 2","id": "P_1_1_2","jmolId": "3:c","set": 2,"sg": 3,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,y" ],"desc": "2","geom": "line","label": "d","mult": 1 },{ "coord": [ "0,1/2,y" ],"desc": "2","geom": "line","label": "c","mult": 1 },{ "coord": [ "1/2,0,y" ],"desc": "2","geom": "line","label": "b","mult": 1 },{ "coord": [ "0,0,y" ],"desc": "2","geom": "line","label": "a","mult": 1 } ] } },{ "clegId": "3:b,c,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z" ],"hall": "P 2x","hm": "P 2 1 1","id": "P_2_1_1","jmolId": "3:a","set": 3,"sg": 3,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 2 },{ "coord": [ "y,1/2,1/2" ],"desc": "2","geom": "line","label": "d","mult": 1 },{ "coord": [ "y,0,1/2" ],"desc": "2","geom": "line","label": "c","mult": 1 },{ "coord": [ "y,1/2,0" ],"desc": "2","geom": "line","label": "b","mult": 1 },{ "coord": [ "y,0,0" ],"desc": "2","geom": "line","label": "a","mult": 1 } ] } } ],"n": 3,"sg": 3 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_30.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_30.json new file mode 100755 index 000000000000..49eabb1a4673 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_30.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "30:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2" ],"hall": "P 2 -2bc","hm": "P n c 2","id": "P_n_c_2","jmolId": "30","set": 1,"sg": 30,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,0,z","1/2,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "30:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x+1/2,y,z+1/2","x+1/2,-y,z+1/2" ],"hall": "P 2 -2ac","hm": "P c n 2","id": "P_c_n_2","jmolId": "30:ba-c","set": 2,"sg": 30,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "0,1/2,-z","1/2,1/2,-z+1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,-z","1/2,0,-z+1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "30:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/2,y,-z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2" ],"hall": "P -2ac 2","hm": "P 2 n a","id": "P_2_n_a","jmolId": "30:cab","set": 3,"sg": 30,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "z,1/2,0","z+1/2,1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0","z+1/2,0,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "30:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/2,-y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","x+1/2,-y+1/2,z","x+1/2,y+1/2,-z" ],"hall": "P -2ab 2","hm": "P 2 a n","id": "P_2_a_n","jmolId": "30:-cba","set": 4,"sg": 30,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "-z,0,1/2","-z+1/2,1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "-z,0,0","-z+1/2,1/2,0" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "30:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z","-x+1/2,y+1/2,z","x+1/2,y+1/2,-z" ],"hall": "P -2ab -2ab","hm": "P b 2 n","id": "P_b_2_n","jmolId": "30:bca","set": 5,"sg": 30,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "0,z,1/2","1/2,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0","1/2,z+1/2,0" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "30:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x,y+1/2,-z+1/2","-x,y+1/2,z+1/2" ],"hall": "P -2bc -2bc","hm": "P n 2 b","id": "P_n_2_b","jmolId": "30:a-cb","set": 6,"sg": 30,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,-z,0","1/2,-z+1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,-z,0","0,-z+1/2,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 30 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_31.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_31.json new file mode 100755 index 000000000000..6d8736d3d284 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_31.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "31:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","x+1/2,-y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","x+1/2,-y,z+1/2","-x,y,z" ],"hall": "P 2ac -2","hm": "P m n 21","id": "P_m_n_21","jmolId": "31","set": 1,"sg": 31,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "0,y,z","1/2,-y,z+1/2" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "31:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x,-y,z" ],"hall": "P 2bc -2bc","hm": "P n m 21","id": "P_n_m_21","jmolId": "31:ba-c","set": 2,"sg": 31,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "y,0,-z","-y,1/2,-z+1/2" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "31:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z" ],"gp": [ "x,y,z","x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x,-y,z" ],"hall": "P -2ab 2ab","hm": "P 21 m n","id": "P_21_m_n","jmolId": "31:cab","set": 3,"sg": 31,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "z,0,y","z+1/2,1/2,-y" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "31:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z+1/2","x+1/2,-y,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z+1/2","x+1/2,-y,z+1/2","x,y,-z" ],"hall": "P -2 2ac","hm": "P 21 n m","id": "P_21_n_m","jmolId": "31:-cba","set": 4,"sg": 31,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "-z,y,0","-z+1/2,-y,1/2" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "31:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z+1/2","-x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z+1/2","-x,y+1/2,z+1/2","x,y,-z" ],"hall": "P -2 -2bc","hm": "P n 21 m","id": "P_n_21_m","jmolId": "31:bca","set": 5,"sg": 31,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "y,z,0","-y,z+1/2,1/2" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "31:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,y+1/2,-z","x+1/2,y+1/2,-z" ],"gp": [ "x,y,z","-x+1/2,y+1/2,-z","x+1/2,y+1/2,-z","-x,y,z" ],"hall": "P -2ab -2","hm": "P m 21 n","id": "P_m_21_n","jmolId": "31:a-cb","set": 6,"sg": 31,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "0,-z,y","1/2,-z+1/2,-y" ],"desc": "m..","geom": "plane","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 31 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_32.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_32.json new file mode 100755 index 000000000000..64bfc4ac5517 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_32.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "32:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,-y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "P 2 -2ab","hm": "P b a 2","id": "P_b_a_2","jmolId": "32","set": 1,"sg": 32,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","1/2,1/2,z" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "32:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y+1/2,-z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "P -2bc 2","hm": "P 2 c b","id": "P_2_c_b","jmolId": "32:cab","set": 2,"sg": 32,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "z,0,1/2","z,1/2,0" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0","z,1/2,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "32:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "P -2ac -2ac","hm": "P c 2 a","id": "P_c_2_a","jmolId": "32:bca","set": 3,"sg": 32,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,z,0","0,z,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0","1/2,z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 32 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_33.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_33.json new file mode 100755 index 000000000000..ad0569d0b46f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_33.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "33:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","x+1/2,-y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z+1/2" ],"hall": "P 2c -2n","hm": "P n a 21","id": "P_n_a_21","jmolId": "33","set": 1,"sg": 33,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "33:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x+1/2,y+1/2,z","x+1/2,-y+1/2,z+1/2" ],"hall": "P 2c -2ab","hm": "P b n 21","id": "P_b_n_21","jmolId": "33:ba-c","set": 2,"sg": 33,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "33:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","x,y+1/2,-z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z","x,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "P -2bc 2a","hm": "P 21 n b","id": "P_21_n_b","jmolId": "33:cab","set": 3,"sg": 33,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "33:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","x,-y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z","x,-y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "P -2n 2a","hm": "P 21 c n","id": "P_21_c_n","jmolId": "33:-cba","set": 4,"sg": 33,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "33:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","-x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z","-x+1/2,y,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "P -2n -2ac","hm": "P c 21 n","id": "P_c_21_n","jmolId": "33:bca","set": 5,"sg": 33,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "33:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","x+1/2,y,-z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z","x+1/2,y,-z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "P -2ac -2n","hm": "P n 21 a","id": "P_n_21_a","jmolId": "33:a-cb","set": 6,"sg": 33,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 33 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_34.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_34.json new file mode 100755 index 000000000000..a38f4f12853c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_34.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "34:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,-y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "P 2 -2n","hm": "P n n 2","id": "P_n_n_2","jmolId": "34","set": 1,"sg": 34,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","1/2,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "34:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/2,y+1/2,-z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "P -2n 2","hm": "P 2 n n","id": "P_2_n_n","jmolId": "34:cab","set": 2,"sg": 34,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "z,0,1/2","z+1/2,1/2,0" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0","z+1/2,1/2,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "34:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "P -2n -2n","hm": "P n 2 n","id": "P_n_2_n","jmolId": "34:bca","set": 3,"sg": 34,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,z,0","0,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0","1/2,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 34 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_35.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_35.json new file mode 100755 index 000000000000..b1cbe3c6d6b4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_35.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "35:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y,z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C 2 -2","hm": "C m m 2","id": "C_m_m_2","jmolId": "35","set": 1,"sg": 35,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "0,y,z","0,-y,z" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "x,0,z","-x,0,z" ],"desc": ".m.","geom": "plane","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,z","1/4,3/4,z" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,z" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "35:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y,-z","x,-y,z","x,y+1/2,z+1/2","x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "A -2 2","hm": "A 2 m m","id": "A_2_m_m","jmolId": "35:cab","set": 2,"sg": 35,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "z,0,y","z,0,-y" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "z,x,0","z,-x,0" ],"desc": ".m.","geom": "plane","label": "d","mult": 4 },{ "coord": [ "z,1/4,1/4","z,1/4,3/4" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "z,0,1/2" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "35:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x,y,z","x,y,-z","x+1/2,y,z+1/2","-x+1/2,y,-z+1/2","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "B -2 -2","hm": "B m 2 m","id": "B_m_2_m","jmolId": "35:bca","set": 3,"sg": 35,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "y,z,0","-y,z,0" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "0,z,x","0,z,-x" ],"desc": ".m.","geom": "plane","label": "d","mult": 4 },{ "coord": [ "1/4,z,1/4","3/4,z,1/4" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,z,0" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 35 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_36.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_36.json new file mode 100755 index 000000000000..5db7f770eb26 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_36.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "36:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","x,-y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","x,-y,z+1/2","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z" ],"hall": "C 2c -2","hm": "C m c 21","id": "C_m_c_21","jmolId": "36","set": 1,"sg": 36,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "0,y,z","0,-y,z+1/2" ],"desc": "m..","geom": "plane","label": "a","mult": 4 } ] } },{ "clegId": "36:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x,y,z+1/2","x,-y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,z" ],"hall": "C 2c -2c","hm": "C c m 21","id": "C_c_m_21","jmolId": "36:ba-c","set": 2,"sg": 36,"trm": "b,a,-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "y,0,-z","-y,0,-z+1/2" ],"desc": "m..","geom": "plane","label": "a","mult": 4 } ] } },{ "clegId": "36:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","x+1/2,y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z","x+1/2,y,-z","x,-y,z","x,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "A -2a 2a","hm": "A 21 m a","id": "A_21_m_a","jmolId": "36:cab","set": 3,"sg": 36,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "z,0,y","z+1/2,0,-y" ],"desc": "m..","geom": "plane","label": "a","mult": 4 } ] } },{ "clegId": "36:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","x+1/2,-y,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z","x+1/2,-y,z","x,y,-z","x,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","x,y+1/2,-z+1/2" ],"hall": "A -2 2a","hm": "A 21 a m","id": "A_21_a_m","jmolId": "36:-cba","set": 4,"sg": 36,"trm": "-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "-z,y,0","-z+1/2,-y,0" ],"desc": "m..","geom": "plane","label": "a","mult": 4 } ] } },{ "clegId": "36:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","-x,y+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z","-x,y+1/2,z","x,y,-z","x+1/2,y,z+1/2","-x+1/2,y+1/2,-z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y,-z+1/2" ],"hall": "B -2 -2b","hm": "B b 21 m","id": "B_b_21_m","jmolId": "36:bca","set": 5,"sg": 36,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "y,z,0","-y,z+1/2,0" ],"desc": "m..","geom": "plane","label": "a","mult": 4 } ] } },{ "clegId": "36:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","x,y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z","x,y+1/2,-z","-x,y,z","x+1/2,y,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","-x+1/2,y,z+1/2" ],"hall": "B -2b -2","hm": "B m 21 b","id": "B_m_21_b","jmolId": "36:a-cb","set": 6,"sg": 36,"trm": "a,-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "0,-z,y","0,-z+1/2,-y" ],"desc": "m..","geom": "plane","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 36 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_37.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_37.json new file mode 100755 index 000000000000..4c5c8fe3caf7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_37.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "37:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","x,-y,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "C 2 -2c","hm": "C c c 2","id": "C_c_c_2","jmolId": "37","set": 1,"sg": 37,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,3/4,z+1/2" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "37:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/2,y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x+1/2,y,-z","x+1/2,-y,z","x,y+1/2,z+1/2","x,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "A -2a 2","hm": "A 2 a a","id": "A_2_a_a","jmolId": "37:cab","set": 2,"sg": 37,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "z,1/4,1/4","z+1/2,1/4,3/4" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "z,0,1/2","z+1/2,0,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "z,0,0","z+1/2,0,0" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "37:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x,y+1/2,z","x,y+1/2,-z","x+1/2,y,z+1/2","-x+1/2,y,-z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "B -2b -2b","hm": "B b 2 b","id": "B_b_2_b","jmolId": "37:bca","set": 3,"sg": 37,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "1/4,z,1/4","3/4,z+1/2,1/4" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,z,0","1/2,z+1/2,0" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,z,0","0,z+1/2,0" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } } ],"n": 3,"sg": 37 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_38.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_38.json new file mode 100755 index 000000000000..49a97fa44056 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_38.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "38:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x,-y,z","-x,y,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2" ],"hall": "A 2 -2","hm": "A m m 2","id": "A_m_m_2","jmolId": "38","set": 1,"sg": 38,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/2,y,z","1/2,-y,z" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "0,y,z","0,-y,z" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "x,0,z","-x,0,z" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "1/2,0,z" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "38:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,z","x,-y,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,z+1/2","x+1/2,-y,z+1/2" ],"hall": "B 2 -2","hm": "B m m 2","id": "B_m_m_2","jmolId": "38:ba-c","set": 2,"sg": 38,"trm": "b,a,-c","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "y,1/2,-z","-y,1/2,-z" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "y,0,-z","-y,0,-z" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "0,x,-z","0,-x,-z" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,1/2,-z" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,-z" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "38:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y,-z","x,-y,z","x+1/2,y,z+1/2","x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2" ],"hall": "B -2 2","hm": "B 2 m m","id": "B_2_m_m","jmolId": "38:cab","set": 3,"sg": 38,"trm": "c,a,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "z,1/2,y","z,1/2,-y" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "z,0,y","z,0,-y" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "z,x,0","z,-x,0" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "z,1/2,0" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "38:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,-y,z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","x,-y,z","x,y,-z","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z","x+1/2,-y+1/2,z","x+1/2,y+1/2,-z" ],"hall": "C -2 2","hm": "C 2 m m","id": "C_2_m_m","jmolId": "38:-cba","set": 4,"sg": 38,"trm": "-c,b,a","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "-z,y,1/2","-z,-y,1/2" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "-z,y,0","-z,-y,0" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "-z,0,x","-z,0,-x" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "-z,0,1/2" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "-z,0,0" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "38:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y,z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z","-x,y,z","x,y,-z","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z","-x+1/2,y+1/2,z","x+1/2,y+1/2,-z" ],"hall": "C -2 -2","hm": "C m 2 m","id": "C_m_2_m","jmolId": "38:bca","set": 5,"sg": 38,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "y,z,1/2","-y,z,1/2" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "y,z,0","-y,z,0" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "0,z,x","0,z,-x" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,z,1/2" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "38:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x,y,-z","-x,y,z","x,y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,y+1/2,-z+1/2","-x,y+1/2,z+1/2" ],"hall": "A -2 -2","hm": "A m 2 m","id": "A_m_2_m","jmolId": "38:a-cb","set": 6,"sg": 38,"trm": "a,-c,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/2,-z,y","1/2,-z,-y" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "0,-z,y","0,-z,-y" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "x,-z,0","-x,-z,0" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "1/2,-z,0" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,-z,0" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 38 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_39.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_39.json new file mode 100755 index 000000000000..1ca4fff39031 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_39.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "39:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y+1/2,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x,-y+1/2,z","-x,y+1/2,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","x,-y,z+1/2","-x,y,z+1/2" ],"hall": "A 2 -2b","hm": "A e m 2","id": "A_e_m_2","jmolId": "39","set": 1,"sg": 39,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "x,1/4,z","-x,3/4,z" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "1/2,0,z","1/2,1/2,z" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,1/2,z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "39:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x+1/2,y,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x+1/2,y,z","x+1/2,-y,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x,y,z+1/2","x,-y,z+1/2" ],"hall": "B 2 -2a","hm": "B m e 2","id": "B_m_e_2","jmolId": "39:ba-c","set": 2,"sg": 39,"trm": "b,a,-c","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "1/4,x,-z","3/4,-x,-z" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,1/2,-z","1/2,1/2,-z" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,-z","1/2,0,-z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "39:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y,-z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y,-z+1/2","x,-y,z+1/2","x+1/2,y,z+1/2","x+1/2,-y,-z+1/2","x+1/2,y,-z","x+1/2,-y,z" ],"hall": "B -2a 2","hm": "B 2 e m","id": "B_2_e_m","jmolId": "39:cab","set": 3,"sg": 39,"trm": "c,a,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "z,x,1/4","z,-x,3/4" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "z,1/2,0","z,1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "z,0,0","z,0,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "39:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,-y+1/2,z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","x,-y+1/2,z","x,y+1/2,-z","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z","x+1/2,-y,z","x+1/2,y,-z" ],"hall": "C -2a 2","hm": "C 2 m e","id": "C_2_m_e","jmolId": "39:-cba","set": 4,"sg": 39,"trm": "-c,b,a","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "-z,1/4,x","-z,3/4,-x" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "-z,0,1/2","-z,1/2,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "-z,0,0","-z,1/2,0" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "39:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x+1/2,y,z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z","-x+1/2,y,z","x+1/2,y,-z","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z","-x,y+1/2,z","x,y+1/2,-z" ],"hall": "C -2a -2a","hm": "C m 2 e","id": "C_m_2_e","jmolId": "39:bca","set": 5,"sg": 39,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "1/4,z,x","3/4,z,-x" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,z,1/2","1/2,z,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,z,0","1/2,z,0" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "39:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,y,-z+1/2","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x,y,-z+1/2","-x,y,z+1/2","x,y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,y+1/2,-z","-x,y+1/2,z" ],"hall": "A -2b -2b","hm": "A e 2 m","id": "A_e_2_m","jmolId": "39:a-cb","set": 6,"sg": 39,"trm": "a,-c,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "x,-z,1/4","-x,-z,3/4" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "1/2,-z,0","1/2,-z,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,-z,0","0,-z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 39 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_4.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_4.json new file mode 100755 index 000000000000..efb2b08bf3d8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_4.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "4:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z" ],"hall": "P 2yb","hm": "P 1 21 1","id": "P_1_21_1","jmolId": "4:b","set": 1,"sg": 4,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "4:c,a,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z+1/2" ],"hall": "P 2c","hm": "P 1 1 21","id": "P_1_1_21","jmolId": "4:c","set": 2,"sg": 4,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "4:b,c,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z" ],"hall": "P 2xa","hm": "P 21 1 1","id": "P_21_1_1","jmolId": "4:a","set": 3,"sg": 4,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 4 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_40.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_40.json new file mode 100755 index 000000000000..79de49bb69fc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_40.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "40:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,-y,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,-y,z","-x+1/2,y,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "A 2 -2a","hm": "A m a 2","id": "A_m_a_2","jmolId": "40","set": 1,"sg": 40,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "1/4,y,z","3/4,-y,z" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "0,0,z","1/2,0,z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "40:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y+1/2,z","x,-y+1/2,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "B 2 -2b","hm": "B b m 2","id": "B_b_m_2","jmolId": "40:ba-c","set": 2,"sg": 40,"trm": "b,a,-c","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "y,1/4,-z","-y,3/4,-z" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "0,0,-z","0,1/2,-z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "40:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y+1/2,-z","x,-y+1/2,z","x+1/2,y,z+1/2","x+1/2,-y,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "B -2b 2","hm": "B 2 m b","id": "B_2_m_b","jmolId": "40:cab","set": 3,"sg": 40,"trm": "c,a,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "z,1/4,y","z,3/4,-y" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "z,0,0","z,1/2,0" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "40:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,-y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","x,-y,z+1/2","x,y,-z+1/2","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z","x+1/2,-y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "C -2c 2","hm": "C 2 c m","id": "C_2_c_m","jmolId": "40:-cba","set": 4,"sg": 40,"trm": "-c,b,a","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "-z,y,1/4","-z,-y,3/4" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "-z,0,0","-z,0,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "40:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z","-x,y,z+1/2","x,y,-z+1/2","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "C -2c -2c","hm": "C c 2 m","id": "C_c_2_m","jmolId": "40:bca","set": 5,"sg": 40,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "y,z,1/4","-y,z,3/4" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "0,z,0","0,z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "40:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,y,-z","-x+1/2,y,z","x,y+1/2,z+1/2","-x,y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "A -2a -2a","hm": "A m 2 a","id": "A_m_2_a","jmolId": "40:a-cb","set": 6,"sg": 40,"trm": "a,-c,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "1/4,-z,y","3/4,-z,-y" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "0,-z,0","1/2,-z,0" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 40 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_41.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_41.json new file mode 100755 index 000000000000..719bd5b08465 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_41.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "41:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,-y+1/2,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "A 2 -2ab","hm": "A e a 2","id": "A_e_a_2","jmolId": "41","set": 1,"sg": 41,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "0,0,z","1/2,1/2,z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "41:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,z","x+1/2,-y+1/2,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x,y+1/2,z+1/2","x,-y+1/2,z+1/2" ],"hall": "B 2 -2ab","hm": "B b e 2","id": "B_b_e_2","jmolId": "41:ba-c","set": 2,"sg": 41,"trm": "b,a,-c","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "0,0,-z","1/2,1/2,-z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "41:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y+1/2,-z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2","x+1/2,y,z+1/2","x+1/2,-y,-z+1/2","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z" ],"hall": "B -2ab 2","hm": "B 2 e b","id": "B_2_e_b","jmolId": "41:cab","set": 3,"sg": 41,"trm": "c,a,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "z,0,0","z,1/2,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "41:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,-y+1/2,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","x,-y+1/2,z+1/2","x,y+1/2,-z+1/2","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z","x+1/2,-y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "C -2ac 2","hm": "C 2 c e","id": "C_2_c_e","jmolId": "41:-cba","set": 4,"sg": 41,"trm": "-c,b,a","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "-z,0,0","-z,1/2,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "41:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x+1/2,y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z","-x,y+1/2,z+1/2","x,y+1/2,-z+1/2" ],"hall": "C -2ac -2ac","hm": "C c 2 e","id": "C_c_2_e","jmolId": "41:bca","set": 5,"sg": 41,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "0,z,0","1/2,z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "41:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,y,-z+1/2","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,y,-z+1/2","-x+1/2,y,z+1/2","x,y+1/2,z+1/2","-x,y+1/2,-z+1/2","x+1/2,y+1/2,-z","-x+1/2,y+1/2,z" ],"hall": "A -2ab -2ab","hm": "A e 2 a","id": "A_e_2_a","jmolId": "41:a-cb","set": 6,"sg": 41,"trm": "a,-c,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "0,-z,0","1/2,-z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 41 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_42.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_42.json new file mode 100755 index 000000000000..d5c899377040 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_42.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "42:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y,z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x,-y,z","-x,y,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "F 2 -2","hm": "F m m 2","id": "F_m_m_2","jmolId": "42","set": 1,"sg": 42,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 16 },{ "coord": [ "x,0,z","-x,0,z" ],"desc": ".m.","geom": "plane","label": "d","mult": 8 },{ "coord": [ "0,y,z","0,-y,z" ],"desc": "m..","geom": "plane","label": "c","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,3/4,z" ],"desc": "..2","geom": "line","label": "b","mult": 8 },{ "coord": [ "0,0,z" ],"desc": "mm2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "42:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y,-z","x+1/2,y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","x,y,-z","x,-y,z","x+1/2,y,z+1/2","x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z","x,y+1/2,z+1/2","x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "F -2 2","hm": "F 2 m m","id": "F_2_m_m","jmolId": "42:cab","set": 2,"sg": 42,"trm": "c,a,b","wpos": { "cent": [ "1/2,0,1/2","1/2,1/2,0","0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 16 },{ "coord": [ "z,x,0","z,-x,0" ],"desc": ".m.","geom": "plane","label": "d","mult": 8 },{ "coord": [ "z,0,y","z,0,-y" ],"desc": "m..","geom": "plane","label": "c","mult": 8 },{ "coord": [ "z,1/4,1/4","z,1/4,3/4" ],"desc": "..2","geom": "line","label": "b","mult": 8 },{ "coord": [ "z,0,0" ],"desc": "mm2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "42:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y,z","x+1/2,y+1/2,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x,y,z","x,y,-z","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z","-x+1/2,y+1/2,z","x+1/2,y+1/2,-z","x,y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x,y+1/2,z+1/2","x,y+1/2,-z+1/2","x+1/2,y,z+1/2","-x+1/2,y,-z+1/2","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "F -2 -2","hm": "F m 2 m","id": "F_m_2_m","jmolId": "42:bca","set": 3,"sg": 42,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,0","0,1/2,1/2","1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 16 },{ "coord": [ "0,z,x","0,z,-x" ],"desc": ".m.","geom": "plane","label": "d","mult": 8 },{ "coord": [ "y,z,0","-y,z,0" ],"desc": "m..","geom": "plane","label": "c","mult": 8 },{ "coord": [ "1/4,z,1/4","3/4,z,1/4" ],"desc": "..2","geom": "line","label": "b","mult": 8 },{ "coord": [ "0,z,0" ],"desc": "mm2","geom": "line","label": "a","mult": 4 } ] } } ],"n": 3,"sg": 42 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_43.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_43.json new file mode 100755 index 000000000000..2772d7168fcb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_43.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "43:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/4,-y+1/4,z+1/4","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x+1/4,-y+1/4,z+1/4","-x+1/4,y+1/4,z+1/4","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","x+1/4,-y+3/4,z+3/4","-x+1/4,y+3/4,z+3/4","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","x+3/4,-y+1/4,z+3/4","-x+3/4,y+1/4,z+3/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","x+3/4,-y+3/4,z+1/4","-x+3/4,y+3/4,z+1/4" ],"hall": "F 2 -2d","hm": "F d d 2","id": "F_d_d_2","jmolId": "43","set": 1,"sg": 43,"trm": "a,b,c","wpos": { "cent": [ "1/2,0,1/2","0,1/2,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 16 },{ "coord": [ "0,0,z","1/4,1/4,z+1/4" ],"desc": "..2","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "43:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/4,y+1/4,-z+1/4","x+1/2,y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","x+1/4,y+1/4,-z+1/4","x+1/4,-y+1/4,z+1/4","x+1/2,y,z+1/2","x+1/2,-y,-z+1/2","x+3/4,y+1/4,-z+3/4","x+3/4,-y+1/4,z+3/4","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z","x+3/4,y+3/4,-z+1/4","x+3/4,-y+3/4,z+1/4","x,y+1/2,z+1/2","x,-y+1/2,-z+1/2","x+1/4,y+3/4,-z+3/4","x+1/4,-y+3/4,z+3/4" ],"hall": "F -2d 2","hm": "F 2 d d","id": "F_2_d_d","jmolId": "43:cab","set": 2,"sg": 43,"trm": "c,a,b","wpos": { "cent": [ "1/2,1/2,0","1/2,0,1/2","0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 16 },{ "coord": [ "z,0,0","z+1/4,1/4,1/4" ],"desc": "..2","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "43:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x+1/4,y+1/4,z+1/4","x+1/2,y+1/2,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x+1/4,y+1/4,z+1/4","x+1/4,y+1/4,-z+1/4","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z","-x+3/4,y+3/4,z+1/4","x+3/4,y+3/4,-z+1/4","x,y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x+1/4,y+3/4,z+3/4","x+1/4,y+3/4,-z+3/4","x+1/2,y,z+1/2","-x+1/2,y,-z+1/2","-x+3/4,y+1/4,z+3/4","x+3/4,y+1/4,-z+3/4" ],"hall": "F -2d -2d","hm": "F d 2 d","id": "F_d_2_d","jmolId": "43:bca","set": 3,"sg": 43,"trm": "b,c,a","wpos": { "cent": [ "0,1/2,1/2","1/2,1/2,0","1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 16 },{ "coord": [ "0,z,0","1/4,z+1/4,1/4" ],"desc": "..2","geom": "line","label": "a","mult": 8 } ] } } ],"n": 3,"sg": 43 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_44.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_44.json new file mode 100755 index 000000000000..437aabda4580 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_44.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "44:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,-y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x,-y,z","-x,y,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "I 2 -2","hm": "I m m 2","id": "I_m_m_2","jmolId": "44","set": 1,"sg": 44,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "0,y,z","0,-y,z" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "x,0,z","-x,0,z" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,1/2,z" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "44:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y,-z","x,-y,z","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "I -2 2","hm": "I 2 m m","id": "I_2_m_m","jmolId": "44:cab","set": 2,"sg": 44,"trm": "c,a,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "z,0,y","z,0,-y" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "z,x,0","z,-x,0" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "z,0,1/2" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "44:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x,y,z","x,y,-z","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "I -2 -2","hm": "I m 2 m","id": "I_m_2_m","jmolId": "44:bca","set": 3,"sg": 44,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "y,z,0","-y,z,0" ],"desc": "m..","geom": "plane","label": "d","mult": 4 },{ "coord": [ "0,z,x","0,z,-x" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "1/2,z,0" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 44 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_45.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_45.json new file mode 100755 index 000000000000..dce595d5074c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_45.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "45:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,-y+1/2,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","x,-y,z+1/2","-x,y,z+1/2" ],"hall": "I 2 -2c","hm": "I b a 2","id": "I_b_a_2","jmolId": "45","set": 1,"sg": 45,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "45:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y+1/2,-z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","x+1/2,y,-z","x+1/2,-y,z" ],"hall": "I -2a 2","hm": "I 2 c b","id": "I_2_c_b","jmolId": "45:cab","set": 2,"sg": 45,"trm": "c,a,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "z,0,1/2","z,1/2,0" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "z,0,0","z,1/2,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "45:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x+1/2,y,z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x,y+1/2,z","x,y+1/2,-z" ],"hall": "I -2b -2b","hm": "I c 2 a","id": "I_c_2_a","jmolId": "45:bca","set": 3,"sg": 45,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "1/2,z,0","0,z,1/2" ],"desc": "..2","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,z,0","1/2,z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } } ],"n": 3,"sg": 45 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_46.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_46.json new file mode 100755 index 000000000000..9ac5bcb17bd8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_46.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "46:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,-y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,-y,z","-x+1/2,y,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2" ],"hall": "I 2 -2a","hm": "I m a 2","id": "I_m_a_2","jmolId": "46","set": 1,"sg": 46,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "1/4,y,z","3/4,-y,z" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "0,0,z","1/2,0,z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "46:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y+1/2,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y+1/2,z","x,-y+1/2,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y,z+1/2","x+1/2,-y,z+1/2" ],"hall": "I 2 -2b","hm": "I b m 2","id": "I_b_m_2","jmolId": "46:ba-c","set": 2,"sg": 46,"trm": "b,a,-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "y,1/4,-z","-y,3/4,-z" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "0,0,-z","0,1/2,-z" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "46:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,y+1/2,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,y+1/2,-z","x,-y+1/2,z","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2" ],"hall": "I -2b 2","hm": "I 2 m b","id": "I_2_m_b","jmolId": "46:cab","set": 3,"sg": 46,"trm": "c,a,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "z,1/4,y","z,3/4,-y" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "z,0,0","z,1/2,0" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "46:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x,-y,z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x,-y,z+1/2","x,y,-z+1/2","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","x+1/2,-y+1/2,z","x+1/2,y+1/2,-z" ],"hall": "I -2c 2","hm": "I 2 c m","id": "I_2_c_m","jmolId": "46:-cba","set": 4,"sg": 46,"trm": "-c,b,a","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "-z,y,1/4","-z,-y,3/4" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "-z,0,0","-z,0,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "46:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","-x,y,z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","-x,y,z+1/2","x,y,-z+1/2","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x+1/2,y+1/2,z","x+1/2,y+1/2,-z" ],"hall": "I -2c -2c","hm": "I c 2 m","id": "I_c_2_m","jmolId": "46:bca","set": 5,"sg": 46,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "y,z,1/4","-y,z,3/4" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "0,z,0","0,z,1/2" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "46:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,y,-z","-x+1/2,y,z","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x,y+1/2,-z+1/2","-x,y+1/2,z+1/2" ],"hall": "I -2a -2a","hm": "I m 2 a","id": "I_m_2_a","jmolId": "46:a-cb","set": 6,"sg": 46,"trm": "a,-c,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "1/4,-z,y","3/4,-z,-y" ],"desc": "m..","geom": "plane","label": "b","mult": 4 },{ "coord": [ "0,-z,0","1/2,-z,0" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 46 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_47.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_47.json new file mode 100755 index 000000000000..1c7eeb3808b9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_47.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "47:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z" ],"hall": "-P 2 2","hm": "P m m m","id": "P_m_m_m","jmolId": "47","set": 1,"sg": 47,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "A","mult": 8 },{ "coord": [ "x,y,1/2","-x,-y,1/2","-x,y,1/2","x,-y,1/2" ],"desc": "..m","geom": "plane","label": "z","mult": 4 },{ "coord": [ "x,y,0","-x,-y,0","-x,y,0","x,-y,0" ],"desc": "..m","geom": "plane","label": "y","mult": 4 },{ "coord": [ "x,1/2,z","-x,1/2,z","-x,1/2,-z","x,1/2,-z" ],"desc": ".m.","geom": "plane","label": "x","mult": 4 },{ "coord": [ "x,0,z","-x,0,z","-x,0,-z","x,0,-z" ],"desc": ".m.","geom": "plane","label": "w","mult": 4 },{ "coord": [ "1/2,y,z","1/2,-y,z","1/2,y,-z","1/2,-y,-z" ],"desc": "m..","geom": "plane","label": "v","mult": 4 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z" ],"desc": "m..","geom": "plane","label": "u","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z" ],"desc": "mm2","geom": "line","label": "t","mult": 2 },{ "coord": [ "1/2,0,z","1/2,0,-z" ],"desc": "mm2","geom": "line","label": "s","mult": 2 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "mm2","geom": "line","label": "r","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "mm2","geom": "line","label": "q","mult": 2 },{ "coord": [ "1/2,y,1/2","1/2,-y,1/2" ],"desc": "m2m","geom": "line","label": "p","mult": 2 },{ "coord": [ "1/2,y,0","1/2,-y,0" ],"desc": "m2m","geom": "line","label": "o","mult": 2 },{ "coord": [ "0,y,1/2","0,-y,1/2" ],"desc": "m2m","geom": "line","label": "n","mult": 2 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": "m2m","geom": "line","label": "m","mult": 2 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2" ],"desc": "2mm","geom": "line","label": "l","mult": 2 },{ "coord": [ "x,1/2,0","-x,1/2,0" ],"desc": "2mm","geom": "line","label": "k","mult": 2 },{ "coord": [ "x,0,1/2","-x,0,1/2" ],"desc": "2mm","geom": "line","label": "j","mult": 2 },{ "coord": [ "x,0,0","-x,0,0" ],"desc": "2mm","geom": "line","label": "i","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "mmm","geom": "point","label": "h","mult": 1 },{ "coord": [ "0,1/2,1/2" ],"desc": "mmm","geom": "point","label": "g","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "mmm","geom": "point","label": "f","mult": 1 },{ "coord": [ "0,1/2,0" ],"desc": "mmm","geom": "point","label": "e","mult": 1 },{ "coord": [ "1/2,0,1/2" ],"desc": "mmm","geom": "point","label": "d","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "mmm","geom": "point","label": "c","mult": 1 },{ "coord": [ "1/2,0,0" ],"desc": "mmm","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "mmm","geom": "point","label": "a","mult": 1 } ] } } ],"n": 1,"sg": 47 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_48.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_48.json new file mode 100755 index 000000000000..701b96b966dd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_48.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "48:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z+1/2","x,-y+1/2,-z+1/2","-x,-y,-z","x+1/2,y+1/2,-z","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2" ],"hall": "-P 2ab 2bc","hm": "P n n n :2","id": "P_n_n_n_2","jmolId": "48:2","set": 1,"sg": 48,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 8 },{ "coord": [ "1/4,3/4,z","1/4,3/4,-z+1/2","3/4,1/4,-z","3/4,1/4,z+1/2" ],"desc": "..2","geom": "line","label": "l","mult": 4 },{ "coord": [ "1/4,1/4,z","1/4,1/4,-z+1/2","3/4,3/4,-z","3/4,3/4,z+1/2" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "3/4,y,1/4","3/4,-y+1/2,1/4","1/4,-y,3/4","1/4,y+1/2,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "1/4,y,1/4","1/4,-y+1/2,1/4","3/4,-y,3/4","3/4,y+1/2,3/4" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "x,1/4,3/4","-x+1/2,1/4,3/4","-x,3/4,1/4","x+1/2,3/4,1/4" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "x,1/4,1/4","-x+1/2,1/4,1/4","-x,3/4,3/4","x+1/2,3/4,3/4" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/2,1/2,1/2","0,0,1/2","0,1/2,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,1/4","3/4,1/4,3/4" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/4,1/4,3/4","3/4,3/4,1/4" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "3/4,1/4,1/4","1/4,3/4,3/4" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "48:a,b,c;1/4,1/4,1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "P 2 2 -1n","hm": "P n n n :1","id": "P_n_n_n_1","jmolId": "48:1","set": 2,"sg": 48,"trm": "a,b,c;1/4,1/4,1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 8 },{ "coord": [ "0,1/2,z+3/4","0,1/2,-z+1/4","1/2,0,-z+3/4","1/2,0,z+1/4" ],"desc": "..2","geom": "line","label": "l","mult": 4 },{ "coord": [ "0,0,z+3/4","0,0,-z+1/4","1/2,1/2,-z+3/4","1/2,1/2,z+1/4" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "1/2,y+3/4,0","1/2,-y+1/4,0","0,-y+3/4,1/2","0,y+1/4,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,y+3/4,0","0,-y+1/4,0","1/2,-y+3/4,1/2","1/2,y+1/4,1/2" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "x+3/4,0,1/2","-x+1/4,0,1/2","-x+3/4,1/2,0","x+1/4,1/2,0" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "x+3/4,0,0","-x+1/4,0,0","-x+3/4,1/2,1/2","x+1/4,1/2,1/2" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "3/4,3/4,3/4","1/4,1/4,3/4","1/4,3/4,1/4","3/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,1/2" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,1/2" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } } ],"n": 2,"sg": 48 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_49.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_49.json new file mode 100755 index 000000000000..727b52baedf4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_49.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "49:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z+1/2","x,-y,-z+1/2","-x,-y,-z","x,y,-z","x,-y,z+1/2","-x,y,z+1/2" ],"hall": "-P 2 2c","hm": "P c c m","id": "P_c_c_m","jmolId": "49","set": 1,"sg": 49,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "r","mult": 8 },{ "coord": [ "x,y,0","-x,-y,0","-x,y,1/2","x,-y,1/2" ],"desc": "..m","geom": "plane","label": "q","mult": 4 },{ "coord": [ "1/2,0,z","1/2,0,-z+1/2","1/2,0,-z","1/2,0,z+1/2" ],"desc": "..2","geom": "line","label": "p","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,-z+1/2","0,1/2,-z","0,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "o","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z+1/2","1/2,1/2,-z","1/2,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "n","mult": 4 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "..2","geom": "line","label": "m","mult": 4 },{ "coord": [ "1/2,y,1/4","1/2,-y,1/4","1/2,-y,3/4","1/2,y,3/4" ],"desc": ".2.","geom": "line","label": "l","mult": 4 },{ "coord": [ "0,y,1/4","0,-y,1/4","0,-y,3/4","0,y,3/4" ],"desc": ".2.","geom": "line","label": "k","mult": 4 },{ "coord": [ "x,1/2,1/4","-x,1/2,1/4","-x,1/2,3/4","x,1/2,3/4" ],"desc": "2..","geom": "line","label": "j","mult": 4 },{ "coord": [ "x,0,1/4","-x,0,1/4","-x,0,3/4","x,0,3/4" ],"desc": "2..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,1/4","1/2,1/2,3/4" ],"desc": "222","geom": "point","label": "h","mult": 2 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "222","geom": "point","label": "g","mult": 2 },{ "coord": [ "1/2,0,1/4","1/2,0,3/4" ],"desc": "222","geom": "point","label": "f","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "222","geom": "point","label": "e","mult": 2 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "49:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x+1/2,-y,z","-x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z","-x+1/2,-y,z","-x+1/2,y,-z","-x,-y,-z","-x,y,z","x+1/2,y,-z","x+1/2,-y,z" ],"hall": "-P 2a 2","hm": "P m a a","id": "P_m_a_a","jmolId": "49:cab","set": 2,"sg": 49,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "r","mult": 8 },{ "coord": [ "0,x,y","0,-x,-y","1/2,-x,y","1/2,x,-y" ],"desc": "..m","geom": "plane","label": "q","mult": 4 },{ "coord": [ "z,1/2,0","-z+1/2,1/2,0","-z,1/2,0","z+1/2,1/2,0" ],"desc": "..2","geom": "line","label": "p","mult": 4 },{ "coord": [ "z,0,1/2","-z+1/2,0,1/2","-z,0,1/2","z+1/2,0,1/2" ],"desc": "..2","geom": "line","label": "o","mult": 4 },{ "coord": [ "z,1/2,1/2","-z+1/2,1/2,1/2","-z,1/2,1/2","z+1/2,1/2,1/2" ],"desc": "..2","geom": "line","label": "n","mult": 4 },{ "coord": [ "z,0,0","-z+1/2,0,0","-z,0,0","z+1/2,0,0" ],"desc": "..2","geom": "line","label": "m","mult": 4 },{ "coord": [ "1/4,1/2,y","1/4,1/2,-y","3/4,1/2,-y","3/4,1/2,y" ],"desc": ".2.","geom": "line","label": "l","mult": 4 },{ "coord": [ "1/4,0,y","1/4,0,-y","3/4,0,-y","3/4,0,y" ],"desc": ".2.","geom": "line","label": "k","mult": 4 },{ "coord": [ "1/4,x,1/2","1/4,-x,1/2","3/4,-x,1/2","3/4,x,1/2" ],"desc": "2..","geom": "line","label": "j","mult": 4 },{ "coord": [ "1/4,x,0","1/4,-x,0","3/4,-x,0","3/4,x,0" ],"desc": "2..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/4,1/2,1/2","3/4,1/2,1/2" ],"desc": "222","geom": "point","label": "h","mult": 2 },{ "coord": [ "1/4,0,1/2","3/4,0,1/2" ],"desc": "222","geom": "point","label": "g","mult": 2 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0" ],"desc": "222","geom": "point","label": "f","mult": 2 },{ "coord": [ "1/4,0,0","3/4,0,0" ],"desc": "222","geom": "point","label": "e","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "49:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,-y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,y,-z","x,-y+1/2,-z","-x,-y+1/2,z","-x,-y,-z","x,-y,z","-x,y+1/2,z","x,y+1/2,-z" ],"hall": "-P 2b 2b","hm": "P b m b","id": "P_b_m_b","jmolId": "49:bca","set": 3,"sg": 49,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "r","mult": 8 },{ "coord": [ "y,0,x","-y,0,-x","y,1/2,-x","-y,1/2,x" ],"desc": "..m","geom": "plane","label": "q","mult": 4 },{ "coord": [ "0,z,1/2","0,-z+1/2,1/2","0,-z,1/2","0,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "p","mult": 4 },{ "coord": [ "1/2,z,0","1/2,-z+1/2,0","1/2,-z,0","1/2,z+1/2,0" ],"desc": "..2","geom": "line","label": "o","mult": 4 },{ "coord": [ "1/2,z,1/2","1/2,-z+1/2,1/2","1/2,-z,1/2","1/2,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "n","mult": 4 },{ "coord": [ "0,z,0","0,-z+1/2,0","0,-z,0","0,z+1/2,0" ],"desc": "..2","geom": "line","label": "m","mult": 4 },{ "coord": [ "y,1/4,1/2","-y,1/4,1/2","-y,3/4,1/2","y,3/4,1/2" ],"desc": ".2.","geom": "line","label": "l","mult": 4 },{ "coord": [ "y,1/4,0","-y,1/4,0","-y,3/4,0","y,3/4,0" ],"desc": ".2.","geom": "line","label": "k","mult": 4 },{ "coord": [ "1/2,1/4,x","1/2,1/4,-x","1/2,3/4,-x","1/2,3/4,x" ],"desc": "2..","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,1/4,x","0,1/4,-x","0,3/4,-x","0,3/4,x" ],"desc": "2..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/4,1/2","1/2,3/4,1/2" ],"desc": "222","geom": "point","label": "h","mult": 2 },{ "coord": [ "1/2,1/4,0","1/2,3/4,0" ],"desc": "222","geom": "point","label": "g","mult": 2 },{ "coord": [ "0,1/4,1/2","0,3/4,1/2" ],"desc": "222","geom": "point","label": "f","mult": 2 },{ "coord": [ "0,1/4,0","0,3/4,0" ],"desc": "222","geom": "point","label": "e","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,1/2","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 49 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_5.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_5.json new file mode 100755 index 000000000000..708e709190b1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_5.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "5:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,y+1/2,z","-x+1/2,y+1/2,-z" ],"hall": "C 2y","hm": "C 1 2 1","id": "C_1_2_1","jmolId": "5:b1","set": 1,"sg": 5,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "0,y,1/2" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,y,0" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:-a-c,b,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x,y+1/2,z+1/2","-x,y+1/2,-z+1/2" ],"hall": "A 2y","hm": "A 1 2 1","id": "A_1_2_1","jmolId": "5:b2","set": 2,"sg": 5,"trm": "-a-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,y,1/2" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,y,0" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:c,b,-a-c","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2" ],"hall": "I 2y","hm": "I 1 2 1","id": "I_1_2_1","jmolId": "5:b3","set": 3,"sg": 5,"trm": "c,b,-a-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,y,0" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,y,0" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:c,a,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2" ],"hall": "A 2","hm": "A 1 1 2","id": "A_1_1_2","jmolId": "5:c1","set": 4,"sg": 5,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,0,y" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,y" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:a,-a-c,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2" ],"hall": "B 2","hm": "B 1 1 2","id": "B_1_1_2","jmolId": "5:c2","set": 5,"sg": 5,"trm": "a,-a-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "1/2,1/2,y" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,y" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:-a-c,c,b","det": 1.0,"gen": [ "x,y,z","-x,-y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2" ],"hall": "I 2","hm": "I 1 1 2","id": "I_1_1_2","jmolId": "5:c3","set": 6,"sg": 5,"trm": "-a-c,c,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "0,1/2,y" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,y" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:b,c,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x+1/2,y,z+1/2","x+1/2,-y,-z+1/2" ],"hall": "B 2x","hm": "B 2 1 1","id": "B_2_1_1","jmolId": "5:a1","set": 7,"sg": 5,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "y,1/2,0" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "y,0,0" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:b,a,-a-c","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,-z","x+1/2,y+1/2,z","x+1/2,-y+1/2,-z" ],"hall": "C 2x","hm": "C 2 1 1","id": "C_2_1_1","jmolId": "5:a2","set": 8,"sg": 5,"trm": "b,a,-a-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "y,1/2,1/2" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "y,0,0" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:b,-a-c,c","det": 1.0,"gen": [ "x,y,z","x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2" ],"hall": "I 2x","hm": "I 2 1 1","id": "I_2_1_1","jmolId": "5:a3","set": 9,"sg": 5,"trm": "b,-a-c,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 4 },{ "coord": [ "y,0,1/2" ],"desc": "2","geom": "line","label": "b","mult": 2 },{ "coord": [ "y,0,0" ],"desc": "2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "5:c,-b,a","det": 1.0,"hm": "A 1 2 1 :1","id": "A_1_2_1_1","more": true,"set": 10,"sg": 5,"trm": "c,-b,a" },{ "clegId": "5:a,-b,-a-c","det": 1.0,"hm": "C 1 2 1 :2","id": "C_1_2_1_2","more": true,"set": 11,"sg": 5,"trm": "a,-b,-a-c" },{ "clegId": "5:-a-c,-b,c","det": 1.0,"hm": "I 1 2 1 :3","id": "I_1_2_1_3","more": true,"set": 12,"sg": 5,"trm": "-a-c,-b,c" },{ "clegId": "5:a,c,-b","det": 1.0,"hm": "B 1 1 2 :1","id": "B_1_1_2_1","more": true,"set": 13,"sg": 5,"trm": "a,c,-b" },{ "clegId": "5:-a-c,a,-b","det": 1.0,"hm": "A 1 1 2 :2","id": "A_1_1_2_2","more": true,"set": 14,"sg": 5,"trm": "-a-c,a,-b" },{ "clegId": "5:c,-a-c,-b","det": 1.0,"hm": "I 1 1 2 :3","id": "I_1_1_2_3","more": true,"set": 15,"sg": 5,"trm": "c,-a-c,-b" },{ "clegId": "5:-b,a,c","det": 1.0,"hm": "C 2 1 1 :1","id": "C_2_1_1_1","more": true,"set": 16,"sg": 5,"trm": "-b,a,c" },{ "clegId": "5:-b,-a-c,a","det": 1.0,"hm": "B 2 1 1 :2","id": "B_2_1_1_2","more": true,"set": 17,"sg": 5,"trm": "-b,-a-c,a" },{ "clegId": "5:-b,c,-a-c","det": 1.0,"hm": "I 2 1 1 :3","id": "I_2_1_1_3","more": true,"set": 18,"sg": 5,"trm": "-b,c,-a-c" } ],"n": 10,"sg": 5 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_50.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_50.json new file mode 100755 index 000000000000..c3b60832f783 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_50.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "50:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x+1/2,y,-z","x,-y+1/2,-z","-x,-y,-z","x+1/2,y+1/2,-z","x+1/2,-y,z","-x,y+1/2,z" ],"hall": "-P 2ab 2b","hm": "P b a n :2","id": "P_b_a_n_2","jmolId": "50:2","set": 1,"sg": 50,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 8 },{ "coord": [ "1/4,3/4,z","1/4,3/4,-z","3/4,1/4,-z","3/4,1/4,z" ],"desc": "..2","geom": "line","label": "l","mult": 4 },{ "coord": [ "1/4,1/4,z","1/4,1/4,-z","3/4,3/4,-z","3/4,3/4,z" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "1/4,y,1/2","1/4,-y+1/2,1/2","3/4,-y,1/2","3/4,y+1/2,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "1/4,y,0","1/4,-y+1/2,0","3/4,-y,0","3/4,y+1/2,0" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "x,1/4,1/2","-x+1/2,1/4,1/2","-x,3/4,1/2","x+1/2,3/4,1/2" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "x,1/4,0","-x+1/2,1/4,0","-x,3/4,0","x+1/2,3/4,0" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","1/2,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,1/2","3/4,3/4,1/2" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "3/4,1/4,1/2","1/4,3/4,1/2" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "3/4,1/4,0","1/4,3/4,0" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,1/4,0","3/4,3/4,0" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "50:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y+1/2,z","-x,-y,-z" ],"gp": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y+1/2,z","-x,y,-z+1/2","-x,-y,-z","-x,y+1/2,z+1/2","x,y+1/2,-z","x,-y,z+1/2" ],"hall": "-P 2b 2bc","hm": "P n c b :2","id": "P_n_c_b_2","jmolId": "50:2cab","set": 2,"sg": 50,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 8 },{ "coord": [ "z,1/4,3/4","-z,1/4,3/4","-z,3/4,1/4","z,3/4,1/4" ],"desc": "..2","geom": "line","label": "l","mult": 4 },{ "coord": [ "z,1/4,1/4","-z,1/4,1/4","-z,3/4,3/4","z,3/4,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "1/2,1/4,y","1/2,1/4,-y+1/2","1/2,3/4,-y","1/2,3/4,y+1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,1/4,y","0,1/4,-y+1/2","0,3/4,-y","0,3/4,y+1/2" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,x,1/4","1/2,-x+1/2,1/4","1/2,-x,3/4","1/2,x+1/2,3/4" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,x,1/4","0,-x+1/2,1/4","0,-x,3/4","0,x+1/2,3/4" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2","1/2,1/2,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2","0,1/2,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,1/4,1/4","1/2,3/4,3/4" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,3/4,1/4","1/2,1/4,3/4" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,3/4,1/4","0,1/4,3/4" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,1/4,1/4","0,3/4,3/4" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "50:b,c,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z+1/2","x,-y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y,-z+1/2","x,-y,-z+1/2","-x+1/2,-y,z","-x,-y,-z","x+1/2,-y,z+1/2","-x,y,z+1/2","x+1/2,y,-z" ],"hall": "-P 2a 2c","hm": "P c n a :2","id": "P_c_n_a_2","jmolId": "50:2bca","set": 3,"sg": 50,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 8 },{ "coord": [ "3/4,z,1/4","3/4,-z,1/4","1/4,-z,3/4","1/4,z,3/4" ],"desc": "..2","geom": "line","label": "l","mult": 4 },{ "coord": [ "1/4,z,1/4","1/4,-z,1/4","3/4,-z,3/4","3/4,z,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "y,1/2,1/4","-y+1/2,1/2,1/4","-y,1/2,3/4","y+1/2,1/2,3/4" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "y,0,1/4","-y+1/2,0,1/4","-y,0,3/4","y+1/2,0,3/4" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/4,1/2,x","1/4,1/2,-x+1/2","3/4,1/2,-x","3/4,1/2,x+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "1/4,0,x","1/4,0,-x+1/2","3/4,0,-x","3/4,0,x+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2","0,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2","0,0,1/2","1/2,0,0" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/4,1/2,1/4","3/4,1/2,3/4" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/4,1/2,3/4","3/4,1/2,1/4" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/4,0,3/4","3/4,0,1/4" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,0,1/4","3/4,0,3/4" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "50:a,b,c;1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "P 2 2 -1ab","hm": "P b a n :1","id": "P_b_a_n_1","jmolId": "50:1","set": 4,"sg": 50,"trm": "a,b,c;1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z","1/2,0,-z","1/2,0,z" ],"desc": "..2","geom": "line","label": "l","mult": 4 },{ "coord": [ "0,0,z","0,0,-z","1/2,1/2,-z","1/2,1/2,z" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "0,y+3/4,1/2","0,-y+1/4,1/2","1/2,-y+3/4,1/2","1/2,y+1/4,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,y+3/4,0","0,-y+1/4,0","1/2,-y+3/4,0","1/2,y+1/4,0" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "x+3/4,0,1/2","-x+1/4,0,1/2","-x+3/4,1/2,1/2","x+1/4,1/2,1/2" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "x+3/4,0,0","-x+1/4,0,0","-x+3/4,1/2,0","x+1/4,1/2,0" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "3/4,3/4,1/2","1/4,1/4,1/2","1/4,3/4,1/2","3/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "3/4,3/4,0","1/4,1/4,0","1/4,3/4,0","3/4,1/4,0" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,0" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "50:c,a,b;1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y,z","-x,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x,-y,z","-x,y,-z","-x,-y+1/2,-z+1/2","-x,y+1/2,z+1/2","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "P 2 2 -1bc","hm": "P n c b :1","id": "P_n_c_b_1","jmolId": "50:1cab","set": 5,"sg": 50,"trm": "c,a,b;1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 8 },{ "coord": [ "z,0,1/2","-z,0,1/2","-z,1/2,0","z,1/2,0" ],"desc": "..2","geom": "line","label": "l","mult": 4 },{ "coord": [ "z,0,0","-z,0,0","-z,1/2,1/2","z,1/2,1/2" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "1/2,0,y+3/4","1/2,0,-y+1/4","1/2,1/2,-y+3/4","1/2,1/2,y+1/4" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,0,y+3/4","0,0,-y+1/4","0,1/2,-y+3/4","0,1/2,y+1/4" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,x+3/4,0","1/2,-x+1/4,0","1/2,-x+3/4,1/2","1/2,x+1/4,1/2" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,x+3/4,0","0,-x+1/4,0","0,-x+3/4,1/2","0,x+1/4,1/2" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,3/4,3/4","1/2,1/4,1/4","1/2,1/4,3/4","1/2,3/4,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,3/4,3/4","0,1/4,1/4","0,1/4,3/4","0,3/4,1/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,0,1/2" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","0,0,1/2" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "50:b,c,a;1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,-y,-z","-x+1/2,-y,-z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x,-y,-z","-x,-y,z","-x+1/2,-y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "P 2 2 -1ac","hm": "P c n a :1","id": "P_c_n_a_1","jmolId": "50:1bca","set": 6,"sg": 50,"trm": "b,c,a;1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "m","mult": 8 },{ "coord": [ "1/2,z,0","1/2,-z,0","0,-z,1/2","0,z,1/2" ],"desc": "..2","geom": "line","label": "l","mult": 4 },{ "coord": [ "0,z,0","0,-z,0","1/2,-z,1/2","1/2,z,1/2" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "y+3/4,1/2,0","-y+1/4,1/2,0","-y+3/4,1/2,1/2","y+1/4,1/2,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "y+3/4,0,0","-y+1/4,0,0","-y+3/4,0,1/2","y+1/4,0,1/2" ],"desc": ".2.","geom": "line","label": "i","mult": 4 },{ "coord": [ "0,1/2,x+3/4","0,1/2,-x+1/4","1/2,1/2,-x+3/4","1/2,1/2,x+1/4" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,x+3/4","0,0,-x+1/4","1/2,0,-x+3/4","1/2,0,x+1/4" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "3/4,1/2,3/4","1/4,1/2,1/4","3/4,1/2,1/4","1/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "f","mult": 4 },{ "coord": [ "3/4,0,3/4","1/4,0,1/4","3/4,0,1/4","1/4,0,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "222","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,0" ],"desc": "222","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,0" ],"desc": "222","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "222","geom": "point","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 50 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_51.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_51.json new file mode 100755 index 000000000000..5b008b3041eb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_51.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "51:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","-x,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z","-x,y,-z","x+1/2,-y,-z","-x,-y,-z","x+1/2,y,-z","x,-y,z","-x+1/2,y,z" ],"hall": "-P 2a 2a","hm": "P m m a","id": "P_m_m_a","jmolId": "51","set": 1,"sg": 51,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "1/4,y,z","1/4,-y,z","3/4,y,-z","3/4,-y,-z" ],"desc": "m..","geom": "plane","label": "k","mult": 4 },{ "coord": [ "x,1/2,z","-x+1/2,1/2,z","-x,1/2,-z","x+1/2,1/2,-z" ],"desc": ".m.","geom": "plane","label": "j","mult": 4 },{ "coord": [ "x,0,z","-x+1/2,0,z","-x,0,-z","x+1/2,0,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 4 },{ "coord": [ "0,y,1/2","1/2,-y,1/2","0,-y,1/2","1/2,y,1/2" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,y,0","1/2,-y,0","0,-y,0","1/2,y,0" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/2,z","3/4,1/2,-z" ],"desc": "mm2","geom": "line","label": "f","mult": 2 },{ "coord": [ "1/4,0,z","3/4,0,-z" ],"desc": "mm2","geom": "line","label": "e","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": ".2/m.","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": ".2/m.","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": ".2/m.","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "51:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","x,-y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","x,-y,-z","-x,y+1/2,-z","-x,-y,-z","x,y+1/2,-z","-x,y,z","x,-y+1/2,z" ],"hall": "-P 2b 2","hm": "P m m b","id": "P_m_m_b","jmolId": "51:ba-c","set": 2,"sg": 51,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "y,1/4,-z","-y,1/4,-z","y,3/4,z","-y,3/4,z" ],"desc": "m..","geom": "plane","label": "k","mult": 4 },{ "coord": [ "1/2,x,-z","1/2,-x+1/2,-z","1/2,-x,z","1/2,x+1/2,z" ],"desc": ".m.","geom": "plane","label": "j","mult": 4 },{ "coord": [ "0,x,-z","0,-x+1/2,-z","0,-x,z","0,x+1/2,z" ],"desc": ".m.","geom": "plane","label": "i","mult": 4 },{ "coord": [ "y,0,1/2","-y,1/2,1/2","-y,0,1/2","y,1/2,1/2" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "y,0,0","-y,1/2,0","-y,0,0","y,1/2,0" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/4,-z","1/2,3/4,z" ],"desc": "mm2","geom": "line","label": "f","mult": 2 },{ "coord": [ "0,1/4,-z","0,3/4,z" ],"desc": "mm2","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,0,1/2","1/2,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": ".2/m.","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": ".2/m.","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "51:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x,-y,z","-x,-y,-z" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x,-y,z","-x,y+1/2,-z","-x,-y,-z","-x,y+1/2,z","x,y,-z","x,-y+1/2,z" ],"hall": "-P 2 2b","hm": "P b m m","id": "P_b_m_m","jmolId": "51:cab","set": 3,"sg": 51,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "z,1/4,y","z,1/4,-y","-z,3/4,y","-z,3/4,-y" ],"desc": "m..","geom": "plane","label": "k","mult": 4 },{ "coord": [ "z,x,1/2","z,-x+1/2,1/2","-z,-x,1/2","-z,x+1/2,1/2" ],"desc": ".m.","geom": "plane","label": "j","mult": 4 },{ "coord": [ "z,x,0","z,-x+1/2,0","-z,-x,0","-z,x+1/2,0" ],"desc": ".m.","geom": "plane","label": "i","mult": 4 },{ "coord": [ "1/2,0,y","1/2,1/2,-y","1/2,0,-y","1/2,1/2,y" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,y","0,1/2,-y","0,0,-y","0,1/2,y" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "z,1/4,1/2","-z,3/4,1/2" ],"desc": "mm2","geom": "line","label": "f","mult": 2 },{ "coord": [ "z,1/4,0","-z,3/4,0" ],"desc": "mm2","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,0,1/2","1/2,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": ".2/m.","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": ".2/m.","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "51:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x,y,-z","-x,-y,z+1/2","-x,-y,-z","-x,y,z+1/2","x,-y,z","x,y,-z+1/2" ],"hall": "-P 2c 2c","hm": "P c m m","id": "P_c_m_m","jmolId": "51:-cba","set": 4,"sg": 51,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "-z,y,1/4","-z,-y,1/4","z,y,3/4","z,-y,3/4" ],"desc": "m..","geom": "plane","label": "k","mult": 4 },{ "coord": [ "-z,1/2,x","-z,1/2,-x+1/2","z,1/2,-x","z,1/2,x+1/2" ],"desc": ".m.","geom": "plane","label": "j","mult": 4 },{ "coord": [ "-z,0,x","-z,0,-x+1/2","z,0,-x","z,0,x+1/2" ],"desc": ".m.","geom": "plane","label": "i","mult": 4 },{ "coord": [ "1/2,y,0","1/2,-y,1/2","1/2,-y,0","1/2,y,1/2" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,y,0","0,-y,1/2","0,-y,0","0,y,1/2" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "-z,1/2,1/4","z,1/2,3/4" ],"desc": "mm2","geom": "line","label": "f","mult": 2 },{ "coord": [ "-z,0,1/4","z,0,3/4" ],"desc": "mm2","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": ".2/m.","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": ".2/m.","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "51:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","x,-y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,y,-z+1/2","x,-y,-z","-x,-y,z+1/2","-x,-y,-z","x,-y,z+1/2","-x,y,z","x,y,-z+1/2" ],"hall": "-P 2c 2","hm": "P m c m","id": "P_m_c_m","jmolId": "51:bca","set": 5,"sg": 51,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "y,z,1/4","-y,z,1/4","y,-z,3/4","-y,-z,3/4" ],"desc": "m..","geom": "plane","label": "k","mult": 4 },{ "coord": [ "1/2,z,x","1/2,z,-x+1/2","1/2,-z,-x","1/2,-z,x+1/2" ],"desc": ".m.","geom": "plane","label": "j","mult": 4 },{ "coord": [ "0,z,x","0,z,-x+1/2","0,-z,-x","0,-z,x+1/2" ],"desc": ".m.","geom": "plane","label": "i","mult": 4 },{ "coord": [ "y,1/2,0","-y,1/2,1/2","-y,1/2,0","y,1/2,1/2" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "y,0,0","-y,0,1/2","-y,0,0","y,0,1/2" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,z,1/4","1/2,-z,3/4" ],"desc": "mm2","geom": "line","label": "f","mult": 2 },{ "coord": [ "0,z,1/4","0,-z,3/4" ],"desc": "mm2","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": ".2/m.","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": ".2/m.","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "51:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","-x,-y,z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y,-z","-x,-y,z","x+1/2,-y,-z","-x,-y,-z","x+1/2,-y,z","x,y,-z","-x+1/2,y,z" ],"hall": "-P 2 2a","hm": "P m a m","id": "P_m_a_m","jmolId": "51:a-cb","set": 6,"sg": 51,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "1/4,-z,y","1/4,-z,-y","3/4,z,y","3/4,z,-y" ],"desc": "m..","geom": "plane","label": "k","mult": 4 },{ "coord": [ "x,-z,1/2","-x+1/2,-z,1/2","-x,z,1/2","x+1/2,z,1/2" ],"desc": ".m.","geom": "plane","label": "j","mult": 4 },{ "coord": [ "x,-z,0","-x+1/2,-z,0","-x,z,0","x+1/2,z,0" ],"desc": ".m.","geom": "plane","label": "i","mult": 4 },{ "coord": [ "0,1/2,y","1/2,1/2,-y","0,1/2,-y","1/2,1/2,y" ],"desc": ".2.","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,y","1/2,0,-y","0,0,-y","1/2,0,y" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,-z,1/2","3/4,z,1/2" ],"desc": "mm2","geom": "line","label": "f","mult": 2 },{ "coord": [ "1/4,-z,0","3/4,z,0" ],"desc": "mm2","geom": "line","label": "e","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,1/2" ],"desc": ".2/m.","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": ".2/m.","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": ".2/m.","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": ".2/m.","geom": "point","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 51 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_52.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_52.json new file mode 100755 index 000000000000..0ad6bddf5a20 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_52.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "52:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","-x+1/2,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z","-x+1/2,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x,-y,-z","x+1/2,y,-z","x+1/2,-y+1/2,z+1/2","-x,y+1/2,z+1/2" ],"hall": "-P 2a 2bc","hm": "P n n a","id": "P_n_n_a","jmolId": "52","set": 1,"sg": 52,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "x,1/4,1/4","-x+1/2,3/4,1/4","-x,3/4,3/4","x+1/2,1/4,3/4" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "1/4,0,z","1/4,1/2,-z+1/2","3/4,0,-z","3/4,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2","1/2,1/2,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0","1/2,1/2,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "52:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","x+1/2,-y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","x+1/2,-y+1/2,-z+1/2","-x+1/2,y,-z+1/2","-x,-y,-z","x,y+1/2,-z","-x+1/2,y+1/2,z+1/2","x+1/2,-y,z+1/2" ],"hall": "-P 2b 2n","hm": "P n n b","id": "P_n_n_b","jmolId": "52:ba-c","set": 2,"sg": 52,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "1/4,x,3/4","3/4,-x+1/2,3/4","3/4,-x,1/4","1/4,x+1/2,1/4" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,1/4,-z","1/2,1/4,z+1/2","0,3/4,z","1/2,3/4,-z+1/2" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2","1/2,1/2,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0","1/2,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "52:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x+1/2,-y+1/2,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x+1/2,-y+1/2,z+1/2","-x+1/2,y,-z+1/2","-x,-y,-z","-x,y+1/2,z","x+1/2,y+1/2,-z+1/2","x+1/2,-y,z+1/2" ],"hall": "-P 2n 2b","hm": "P b n n","id": "P_b_n_n","jmolId": "52:cab","set": 3,"sg": 52,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "1/4,x,1/4","1/4,-x+1/2,3/4","3/4,-x,3/4","3/4,x+1/2,1/4" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "z,1/4,0","-z+1/2,1/4,1/2","-z,3/4,0","z+1/2,3/4,1/2" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0","0,1/2,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0","1/2,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "52:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x+1/2,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,z","-x,-y,-z","-x,y,z+1/2","x+1/2,-y+1/2,z+1/2","x+1/2,y+1/2,-z" ],"hall": "-P 2ab 2c","hm": "P c n n","id": "P_c_n_n","jmolId": "52:-cba","set": 4,"sg": 52,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,x","3/4,3/4,-x+1/2","1/4,3/4,-x","1/4,1/4,x+1/2" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "-z,0,1/4","z+1/2,1/2,1/4","z,0,3/4","-z+1/2,1/2,3/4" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,0,1/2","0,1/2,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2","1/2,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "52:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,y,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,z","-x,-y,-z","x,-y,z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z" ],"hall": "-P 2ab 2n","hm": "P n c n","id": "P_n_c_n","jmolId": "52:bca","set": 5,"sg": 52,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "1/4,1/4,x","3/4,1/4,-x+1/2","3/4,3/4,-x","1/4,3/4,x+1/2" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,z,1/4","1/2,-z+1/2,1/4","0,-z,3/4","1/2,z+1/2,3/4" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2","1/2,0,1/2","1/2,0,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2","1/2,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "52:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","-x+1/2,-y+1/2,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y,-z","-x+1/2,-y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x,-y,-z","x+1/2,-y,z","x+1/2,y+1/2,-z+1/2","-x,y+1/2,z+1/2" ],"hall": "-P 2n 2bc","hm": "P n a n","id": "P_n_a_n","jmolId": "52:a-cb","set": 6,"sg": 52,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "x,3/4,1/4","-x+1/2,3/4,3/4","-x,1/4,3/4","x+1/2,1/4,1/4" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "1/4,-z,0","1/4,z+1/2,1/2","3/4,z,0","3/4,-z+1/2,1/2" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0","1/2,0,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0","1/2,1/2,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 52 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_53.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_53.json new file mode 100755 index 000000000000..666702bc1d04 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_53.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "53:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x,-y,-z","-x,-y,-z","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2","-x,y,z" ],"hall": "-P 2ac 2","hm": "P m n a","id": "P_m_n_a","jmolId": "53","set": 1,"sg": 53,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "0,y,z","1/2,-y,z+1/2","1/2,y,-z+1/2","0,-y,-z" ],"desc": "m..","geom": "plane","label": "h","mult": 4 },{ "coord": [ "1/4,y,1/4","1/4,-y,3/4","3/4,-y,3/4","3/4,y,1/4" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "x,1/2,0","-x+1/2,1/2,1/2","-x,1/2,0","x+1/2,1/2,1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "x,0,0","-x+1/2,0,1/2","-x,0,0","x+1/2,0,1/2" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "53:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x,y,-z","-x,-y,-z","x,y+1/2,-z+1/2","-x,y+1/2,z+1/2","x,-y,z" ],"hall": "-P 2bc 2bc","hm": "P n m b","id": "P_n_m_b","jmolId": "53:ba-c","set": 2,"sg": 53,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "y,0,-z","-y,1/2,-z+1/2","y,1/2,z+1/2","-y,0,z" ],"desc": "m..","geom": "plane","label": "h","mult": 4 },{ "coord": [ "y,1/4,3/4","-y,1/4,1/4","-y,3/4,1/4","y,3/4,3/4" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,x,0","1/2,-x+1/2,1/2","1/2,-x,0","1/2,x+1/2,1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,x,0","0,-x+1/2,1/2","0,-x,0","0,x+1/2,1/2" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "53:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,z","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,z","-x,y,-z","-x,-y,-z","-x+1/2,y+1/2,z","x+1/2,y+1/2,-z","x,-y,z" ],"hall": "-P 2ab 2ab","hm": "P b m n","id": "P_b_m_n","jmolId": "53:cab","set": 3,"sg": 53,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "z,0,y","z+1/2,1/2,-y","-z+1/2,1/2,y","-z,0,-y" ],"desc": "m..","geom": "plane","label": "h","mult": 4 },{ "coord": [ "1/4,1/4,y","3/4,1/4,-y","3/4,3/4,-y","1/4,3/4,y" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,x,1/2","1/2,-x+1/2,1/2","0,-x,1/2","1/2,x+1/2,1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,x,0","1/2,-x+1/2,0","0,-x,0","1/2,x+1/2,0" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "53:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z+1/2","-x+1/2,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z+1/2","-x+1/2,y,-z+1/2","-x,-y,z","-x,-y,-z","-x+1/2,y,z+1/2","x+1/2,-y,z+1/2","x,y,-z" ],"hall": "-P 2 2ac","hm": "P c n m","id": "P_c_n_m","jmolId": "53:-cba","set": 4,"sg": 53,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "-z,y,0","-z+1/2,-y,1/2","z+1/2,y,1/2","z,-y,0" ],"desc": "m..","geom": "plane","label": "h","mult": 4 },{ "coord": [ "3/4,y,1/4","1/4,-y,1/4","1/4,-y,3/4","3/4,y,3/4" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,x","1/2,1/2,-x+1/2","0,1/2,-x","1/2,1/2,x+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,x","1/2,0,-x+1/2","0,0,-x","1/2,0,x+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "53:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x,-y,z","-x,-y,-z","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x,y,-z" ],"hall": "-P 2 2bc","hm": "P n c m","id": "P_n_c_m","jmolId": "53:bca","set": 5,"sg": 53,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "y,z,0","-y,z+1/2,1/2","y,-z+1/2,1/2","-y,-z,0" ],"desc": "m..","geom": "plane","label": "h","mult": 4 },{ "coord": [ "y,1/4,1/4","-y,3/4,1/4","-y,3/4,3/4","y,1/4,3/4" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,0,x","1/2,1/2,-x+1/2","1/2,0,-x","1/2,1/2,x+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,x","0,1/2,-x+1/2","0,0,-x","0,1/2,x+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,1/2","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,0" ],"desc": "2/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "53:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,z","x,-y,-z","-x,-y,-z","x+1/2,-y+1/2,z","x+1/2,y+1/2,-z","-x,y,z" ],"hall": "-P 2ab 2","hm": "P m a n","id": "P_m_a_n","jmolId": "53:a-cb","set": 6,"sg": 53,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "0,-z,y","1/2,-z+1/2,-y","1/2,z+1/2,y","0,z,-y" ],"desc": "m..","geom": "plane","label": "h","mult": 4 },{ "coord": [ "1/4,3/4,y","1/4,1/4,-y","3/4,1/4,-y","3/4,3/4,y" ],"desc": ".2.","geom": "line","label": "g","mult": 4 },{ "coord": [ "x,0,1/2","-x+1/2,1/2,1/2","-x,0,1/2","x+1/2,1/2,1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "x,0,0","-x+1/2,1/2,0","-x,0,0","x+1/2,1/2,0" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,0" ],"desc": "2/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 53 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_54.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_54.json new file mode 100755 index 000000000000..a17c00005e9c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_54.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "54:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","-x,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z","-x,y,-z+1/2","x+1/2,-y,-z+1/2","-x,-y,-z","x+1/2,y,-z","x,-y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "-P 2a 2ac","hm": "P c c a","id": "P_c_c_a","jmolId": "54","set": 1,"sg": 54,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/4,1/2,z","3/4,1/2,-z+1/2","3/4,1/2,-z","1/4,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,0,z","3/4,0,-z+1/2","3/4,0,-z","1/4,0,z+1/2" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,y,1/4","1/2,-y,1/4","0,-y,3/4","1/2,y,3/4" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0","0,0,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "54:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","x,-y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","x,-y,-z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z","x,y+1/2,-z","-x,y,z+1/2","x,-y+1/2,z+1/2" ],"hall": "-P 2b 2c","hm": "P c c b","id": "P_c_c_b","jmolId": "54:ba-c","set": 2,"sg": 54,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/2,1/4,-z","1/2,3/4,z+1/2","1/2,3/4,z","1/2,1/4,-z+1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/4,-z","0,3/4,z+1/2","0,3/4,z","0,1/4,-z+1/2" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "y,0,3/4","-y,1/2,3/4","-y,0,1/4","y,1/2,1/4" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0","1/2,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0","0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "54:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x+1/2,-y,z","-x,-y,-z" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x+1/2,-y,z","-x+1/2,y+1/2,-z","-x,-y,-z","-x,y+1/2,z","x+1/2,y,-z","x+1/2,-y+1/2,z" ],"hall": "-P 2a 2b","hm": "P b a a","id": "P_b_a_a","jmolId": "54:cab","set": 3,"sg": 54,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "z,1/4,1/2","-z+1/2,3/4,1/2","-z,3/4,1/2","z+1/2,1/4,1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "z,1/4,0","-z+1/2,3/4,0","-z,3/4,0","z+1/2,1/4,0" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "1/4,0,y","1/4,1/2,-y","3/4,0,-y","3/4,1/2,y" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2","1/2,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0","1/2,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "54:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x+1/2,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x+1/2,y,-z","-x+1/2,-y,z+1/2","-x,-y,-z","-x,y,z+1/2","x+1/2,-y,z","x+1/2,y,-z+1/2" ],"hall": "-P 2ac 2c","hm": "P c a a","id": "P_c_a_a","jmolId": "54:-cba","set": 4,"sg": 54,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "-z,1/2,1/4","z+1/2,1/2,3/4","z,1/2,3/4","-z+1/2,1/2,1/4" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "-z,0,1/4","z+1/2,0,3/4","z,0,3/4","-z+1/2,0,1/4" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "3/4,y,0","3/4,-y,1/2","1/4,-y,0","1/4,y,1/2" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2","1/2,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2","1/2,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "54:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","x,-y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,y,-z+1/2","x,-y+1/2,-z","-x,-y+1/2,z+1/2","-x,-y,-z","x,-y,z+1/2","-x,y+1/2,z","x,y+1/2,-z+1/2" ],"hall": "-P 2bc 2b","hm": "P b c b","id": "P_b_c_b","jmolId": "54:bca","set": 5,"sg": 54,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/2,z,1/4","1/2,-z+1/2,3/4","1/2,-z,3/4","1/2,z+1/2,1/4" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,z,1/4","0,-z+1/2,3/4","0,-z,3/4","0,z+1/2,1/4" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "y,1/4,0","-y,1/4,1/2","-y,3/4,0","y,3/4,1/2" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,0,1/2","1/2,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2","0,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "54:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","-x,-y+1/2,z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y,-z","-x,-y+1/2,z","x+1/2,-y+1/2,-z","-x,-y,-z","x+1/2,-y,z","x,y+1/2,-z","-x+1/2,y+1/2,z" ],"hall": "-P 2b 2ab","hm": "P b a b","id": "P_b_a_b","jmolId": "54:a-cb","set": 6,"sg": 54,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "f","mult": 8 },{ "coord": [ "1/4,-z,1/2","3/4,z+1/2,1/2","3/4,z,1/2","1/4,-z+1/2,1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,-z,0","3/4,z+1/2,0","3/4,z,0","1/4,-z+1/2,0" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,3/4,y","1/2,3/4,-y","0,1/4,-y","1/2,1/4,y" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2","0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 54 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_55.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_55.json new file mode 100755 index 000000000000..cb9d470e08fa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_55.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "55:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x,-y,-z","x,y,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "-P 2 2ab","hm": "P b a m","id": "P_b_a_m","jmolId": "55","set": 1,"sg": 55,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "x,y,1/2","-x,-y,1/2","-x+1/2,y+1/2,1/2","x+1/2,-y+1/2,1/2" ],"desc": "..m","geom": "plane","label": "h","mult": 4 },{ "coord": [ "x,y,0","-x,-y,0","-x+1/2,y+1/2,0","x+1/2,-y+1/2,0" ],"desc": "..m","geom": "plane","label": "g","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z","0,1/2,-z","1/2,0,z" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,-z","0,0,-z","1/2,1/2,z" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "55:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y+1/2,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z","-x,y,z","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "-P 2bc 2","hm": "P m c b","id": "P_m_c_b","jmolId": "55:cab","set": 2,"sg": 55,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "1/2,x,y","1/2,-x,-y","1/2,-x+1/2,y+1/2","1/2,x+1/2,-y+1/2" ],"desc": "..m","geom": "plane","label": "h","mult": 4 },{ "coord": [ "0,x,y","0,-x,-y","0,-x+1/2,y+1/2","0,x+1/2,-y+1/2" ],"desc": "..m","geom": "plane","label": "g","mult": 4 },{ "coord": [ "z,0,1/2","-z,1/2,0","-z,0,1/2","z,1/2,0" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "z,0,0","-z,1/2,1/2","-z,0,0","z,1/2,1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,1/2","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "55:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,-y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,-y,-z+1/2","-x+1/2,-y,z+1/2","-x,-y,-z","x,-y,z","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "-P 2ac 2ac","hm": "P c m a","id": "P_c_m_a","jmolId": "55:bca","set": 3,"sg": 55,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "i","mult": 8 },{ "coord": [ "y,1/2,x","-y,1/2,-x","y+1/2,1/2,-x+1/2","-y+1/2,1/2,x+1/2" ],"desc": "..m","geom": "plane","label": "h","mult": 4 },{ "coord": [ "y,0,x","-y,0,-x","y+1/2,0,-x+1/2","-y+1/2,0,x+1/2" ],"desc": "..m","geom": "plane","label": "g","mult": 4 },{ "coord": [ "1/2,z,0","0,-z,1/2","1/2,-z,0","0,z,1/2" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,z,0","1/2,-z,1/2","0,-z,0","1/2,z,1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,0","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","0,0,1/2" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 55 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_56.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_56.json new file mode 100755 index 000000000000..78ace707a677 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_56.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "56:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x,y+1/2,-z+1/2","x+1/2,-y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,-z","x,-y+1/2,z+1/2","-x+1/2,y,z+1/2" ],"hall": "-P 2ab 2ac","hm": "P c c n","id": "P_c_c_n","jmolId": "56","set": 1,"sg": 56,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "1/4,3/4,z","3/4,1/4,-z+1/2","3/4,1/4,-z","1/4,3/4,z+1/2" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,z","3/4,3/4,-z+1/2","3/4,3/4,-z","1/4,1/4,z+1/2" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","0,1/2,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","0,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "56:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z+1/2","-x+1/2,-y,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x,-y+1/2,-z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y+1/2,-z","-x,-y,-z","-x,y+1/2,z+1/2","x+1/2,y,-z+1/2","x+1/2,-y+1/2,z" ],"hall": "-P 2ac 2bc","hm": "P n a a","id": "P_n_a_a","jmolId": "56:cab","set": 2,"sg": 56,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "z,1/4,3/4","-z+1/2,3/4,1/4","-z,3/4,1/4","z+1/2,1/4,3/4" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "z,1/4,1/4","-z+1/2,3/4,3/4","-z,3/4,3/4","z+1/2,1/4,1/4" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2","0,0,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "56:b,c,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z","-x,-y+1/2,z+1/2","-x,-y,-z","x+1/2,-y,z+1/2","-x+1/2,y+1/2,z","x,y+1/2,-z+1/2" ],"hall": "-P 2bc 2ab","hm": "P b n b","id": "P_b_n_b","jmolId": "56:bca","set": 3,"sg": 56,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "3/4,z,1/4","1/4,-z+1/2,3/4","1/4,-z,3/4","3/4,z+1/2,1/4" ],"desc": "..2","geom": "line","label": "d","mult": 4 },{ "coord": [ "1/4,z,1/4","3/4,-z+1/2,3/4","3/4,-z,3/4","1/4,z+1/2,1/4" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2","1/2,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2","1/2,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } } ],"n": 3,"sg": 56 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_57.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_57.json new file mode 100755 index 000000000000..a3bbea29b373 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_57.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "57:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z","-x,-y,-z","x,y,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z" ],"hall": "-P 2c 2b","hm": "P b c m","id": "P_b_c_m","jmolId": "57","set": 1,"sg": 57,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "x,y,1/4","-x,-y,3/4","-x,y+1/2,1/4","x,-y+1/2,3/4" ],"desc": "..m","geom": "plane","label": "d","mult": 4 },{ "coord": [ "x,1/4,0","-x,3/4,1/2","-x,3/4,0","x,1/4,1/2" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,0,1/2","1/2,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2","0,1/2,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "57:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","x+1/2,-y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z+1/2","x+1/2,-y,-z+1/2","-x+1/2,y,-z","-x,-y,-z","x,y,-z+1/2","-x+1/2,y,z+1/2","x+1/2,-y,z" ],"hall": "-P 2c 2ac","hm": "P c a m","id": "P_c_a_m","jmolId": "57:ba-c","set": 2,"sg": 57,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "y,x,3/4","-y,-x,1/4","y+1/2,-x,3/4","-y+1/2,x,1/4" ],"desc": "..m","geom": "plane","label": "d","mult": 4 },{ "coord": [ "1/4,x,0","3/4,-x,1/2","3/4,-x,0","1/4,x,1/2" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2","1/2,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2","1/2,0,1/2","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "57:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","-x+1/2,-y,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z","-x+1/2,-y,z+1/2","-x,y,-z+1/2","-x,-y,-z","-x+1/2,y,z","x+1/2,y,-z+1/2","x,-y,z+1/2" ],"hall": "-P 2ac 2a","hm": "P m c a","id": "P_m_c_a","jmolId": "57:cab","set": 3,"sg": 57,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "1/4,x,y","3/4,-x,-y","1/4,-x,y+1/2","3/4,x,-y+1/2" ],"desc": "..m","geom": "plane","label": "d","mult": 4 },{ "coord": [ "0,x,1/4","1/2,-x,3/4","0,-x,3/4","1/2,x,1/4" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0","1/2,1/2,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0","1/2,0,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "57:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","-x+1/2,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z","-x+1/2,y+1/2,-z","-x,-y+1/2,z","-x,-y,-z","-x+1/2,y,z","x+1/2,-y+1/2,z","x,y+1/2,-z" ],"hall": "-P 2b 2a","hm": "P m a b","id": "P_m_a_b","jmolId": "57:-cba","set": 4,"sg": 57,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "3/4,y,x","1/4,-y,-x","3/4,y+1/2,-x","1/4,-y+1/2,x" ],"desc": "..m","geom": "plane","label": "d","mult": 4 },{ "coord": [ "0,1/4,x","1/2,3/4,-x","0,3/4,-x","1/2,1/4,x" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2","1/2,1/2,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0","1/2,1/2,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "57:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","x+1/2,-y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y,z","-x,-y,-z","x,-y+1/2,z","-x+1/2,y+1/2,z","x+1/2,y,-z" ],"hall": "-P 2a 2ab","hm": "P b m a","id": "P_b_m_a","jmolId": "57:bca","set": 5,"sg": 57,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "y,1/4,x","-y,3/4,-x","y+1/2,1/4,-x","-y+1/2,3/4,x" ],"desc": "..m","geom": "plane","label": "d","mult": 4 },{ "coord": [ "1/4,0,x","3/4,1/2,-x","3/4,0,-x","1/4,1/2,x" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2","1/2,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0","1/2,1/2,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "57:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","-x,-y+1/2,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z","-x,-y+1/2,z+1/2","x,-y,-z+1/2","-x,-y,-z","x,-y+1/2,z","x,y+1/2,-z+1/2","-x,y,z+1/2" ],"hall": "-P 2bc 2c","hm": "P c m b","id": "P_c_m_b","jmolId": "57:a-cb","set": 6,"sg": 57,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "e","mult": 8 },{ "coord": [ "x,3/4,y","-x,1/4,-y","-x,3/4,y+1/2","x,1/4,-y+1/2" ],"desc": "..m","geom": "plane","label": "d","mult": 4 },{ "coord": [ "x,0,1/4","-x,1/2,3/4","-x,0,3/4","x,1/2,1/4" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0","1/2,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0","0,1/2,1/2","0,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 57 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_58.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_58.json new file mode 100755 index 000000000000..c46d3a97c911 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_58.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "58:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x,-y,-z","x,y,-z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "-P 2 2n","hm": "P n n m","id": "P_n_n_m","jmolId": "58","set": 1,"sg": 58,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "h","mult": 8 },{ "coord": [ "x,y,0","-x,-y,0","-x+1/2,y+1/2,1/2","x+1/2,-y+1/2,1/2" ],"desc": "..m","geom": "plane","label": "g","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z+1/2","0,1/2,-z","1/2,0,z+1/2" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,-z+1/2","0,0,-z","1/2,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2","1/2,0,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,1/2" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "58:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x+1/2,-y+1/2,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x,-y,-z","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x,-y,-z","-x,y,z","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "-P 2n 2","hm": "P m n n","id": "P_m_n_n","jmolId": "58:cab","set": 2,"sg": 58,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "h","mult": 8 },{ "coord": [ "0,x,y","0,-x,-y","1/2,-x+1/2,y+1/2","1/2,x+1/2,-y+1/2" ],"desc": "..m","geom": "plane","label": "g","mult": 4 },{ "coord": [ "z,0,1/2","-z+1/2,1/2,0","-z,0,1/2","z+1/2,1/2,0" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "z,0,0","-z+1/2,1/2,1/2","-z,0,0","z+1/2,1/2,1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,1/2","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "58:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,-y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,z+1/2","-x,-y,-z","x,-y,z","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "-P 2n 2n","hm": "P n m n","id": "P_n_m_n","jmolId": "58:bca","set": 3,"sg": 58,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "h","mult": 8 },{ "coord": [ "y,0,x","-y,0,-x","y+1/2,1/2,-x+1/2","-y+1/2,1/2,x+1/2" ],"desc": "..m","geom": "plane","label": "g","mult": 4 },{ "coord": [ "1/2,z,0","0,-z+1/2,1/2","1/2,-z,0","0,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,z,0","1/2,-z+1/2,1/2","0,-z,0","1/2,z+1/2,1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,1/2,0","0,0,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,1/2" ],"desc": "..2/m","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 58 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_59.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_59.json new file mode 100755 index 000000000000..438a8f2fcee9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_59.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "59:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x,y+1/2,-z","x+1/2,-y,-z","-x,-y,-z","x+1/2,y+1/2,-z","x,-y+1/2,z","-x+1/2,y,z" ],"hall": "-P 2ab 2a","hm": "P m m n :2","id": "P_m_m_n_2","jmolId": "59:2","set": 1,"sg": 59,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "x,1/4,z","-x+1/2,1/4,z","-x,3/4,-z","x+1/2,3/4,-z" ],"desc": ".m.","geom": "plane","label": "f","mult": 4 },{ "coord": [ "1/4,y,z","1/4,-y+1/2,z","3/4,y+1/2,-z","3/4,-y,-z" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","0,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","0,1/2,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,3/4,z","3/4,1/4,-z" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "1/4,1/4,z","3/4,3/4,-z" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "59:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,z+1/2","-x,y+1/2,-z","-x,-y,-z","-x,y+1/2,z+1/2","x,y,-z+1/2","x,-y+1/2,z" ],"hall": "-P 2c 2bc","hm": "P n m m :2","id": "P_n_m_m_2","jmolId": "59:2cab","set": 2,"sg": 59,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "z,x,1/4","z,-x+1/2,1/4","-z,-x,3/4","-z,x+1/2,3/4" ],"desc": ".m.","geom": "plane","label": "f","mult": 4 },{ "coord": [ "z,1/4,y","z,1/4,-y+1/2","-z,3/4,y+1/2","-z,3/4,-y" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2","0,0,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "z,1/4,3/4","-z,3/4,1/4" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,1/4,1/4","-z,3/4,3/4" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "59:b,c,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z+1/2","x+1/2,-y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y,-z+1/2","x+1/2,-y,-z","-x,-y,z+1/2","-x,-y,-z","x+1/2,-y,z+1/2","-x+1/2,y,z","x,y,-z+1/2" ],"hall": "-P 2c 2a","hm": "P m n m :2","id": "P_m_n_m_2","jmolId": "59:2bca","set": 3,"sg": 59,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "1/4,z,x","1/4,z,-x+1/2","3/4,-z,-x","3/4,-z,x+1/2" ],"desc": ".m.","geom": "plane","label": "f","mult": 4 },{ "coord": [ "y,z,1/4","-y+1/2,z,1/4","y+1/2,-z,3/4","-y,-z,3/4" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2","1/2,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2","1/2,0,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "3/4,z,1/4","1/4,-z,3/4" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "1/4,z,1/4","3/4,-z,3/4" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "59:a,b,c;1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x,-y,z","-x,y,z" ],"hall": "P 2 2ab -1ab","hm": "P m m n :1","id": "P_m_m_n_1","jmolId": "59:1","set": 4,"sg": 59,"trm": "a,b,c;1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "x+3/4,0,z","-x+1/4,0,z","-x+3/4,1/2,-z","x+1/4,1/2,-z" ],"desc": ".m.","geom": "plane","label": "f","mult": 4 },{ "coord": [ "0,y+3/4,z","0,-y+1/4,z","1/2,y+1/4,-z","1/2,-y+3/4,-z" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "3/4,3/4,1/2","1/4,1/4,1/2","3/4,1/4,1/2","1/4,3/4,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,3/4,0","1/4,1/4,0","3/4,1/4,0","1/4,3/4,0" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","1/2,1/2,-z" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "59:c,a,b;1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y+1/2,z+1/2","-x,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","-x,y+1/2,z+1/2","x,y,-z","x,-y,z" ],"hall": "P 2bc 2 -1bc","hm": "P n m m :1","id": "P_n_m_m_1","jmolId": "59:1cab","set": 5,"sg": 59,"trm": "c,a,b;1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "z,x+3/4,0","z,-x+1/4,0","-z,-x+3/4,1/2","-z,x+1/4,1/2" ],"desc": ".m.","geom": "plane","label": "f","mult": 4 },{ "coord": [ "z,0,y+3/4","z,0,-y+1/4","-z,1/2,y+1/4","-z,1/2,-y+3/4" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "1/2,3/4,3/4","1/2,1/4,1/4","1/2,3/4,1/4","1/2,1/4,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,3/4,3/4","0,1/4,1/4","0,3/4,1/4","0,1/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "z,0,1/2","-z,1/2,0" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "z,0,0","-z,1/2,1/2" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "59:b,c,a;1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,-y,-z+1/2","-x+1/2,-y,-z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,-y,-z+1/2","-x+1/2,-y,z+1/2","-x+1/2,-y,-z+1/2","x+1/2,-y,z+1/2","-x,y,z","x,y,-z" ],"hall": "P 2ac 2ac -1ac","hm": "P m n m :1","id": "P_m_n_m_1","jmolId": "59:1bca","set": 6,"sg": 59,"trm": "b,c,a;1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "0,z,x+3/4","0,z,-x+1/4","1/2,-z,-x+3/4","1/2,-z,x+1/4" ],"desc": ".m.","geom": "plane","label": "f","mult": 4 },{ "coord": [ "y+3/4,z,0","-y+1/4,z,0","y+1/4,-z,1/2","-y+3/4,-z,1/2" ],"desc": "m..","geom": "plane","label": "e","mult": 4 },{ "coord": [ "3/4,1/2,3/4","1/4,1/2,1/4","1/4,1/2,3/4","3/4,1/2,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,0,3/4","1/4,0,1/4","1/4,0,3/4","3/4,0,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,z,0","0,-z,1/2" ],"desc": "mm2","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,z,0","1/2,-z,1/2" ],"desc": "mm2","geom": "line","label": "a","mult": 2 } ] } } ],"n": 6,"sg": 59 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_6.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_6.json new file mode 100755 index 000000000000..b887d43f17c4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_6.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "6:a,b,c","det": 1.0,"gen": [ "x,y,z","x,-y,z" ],"gp": [ "x,y,z","x,-y,z" ],"hall": "P -2y","hm": "P 1 m 1","id": "P_1_m_1","jmolId": "6:b","set": 1,"sg": 6,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 2 },{ "coord": [ "x,1/2,z" ],"desc": "m","geom": "plane","label": "b","mult": 1 },{ "coord": [ "x,0,z" ],"desc": "m","geom": "plane","label": "a","mult": 1 } ] } },{ "clegId": "6:c,a,b","det": 1.0,"gen": [ "x,y,z","x,y,-z" ],"gp": [ "x,y,z","x,y,-z" ],"hall": "P -2","hm": "P 1 1 m","id": "P_1_1_m","jmolId": "6:c","set": 2,"sg": 6,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 2 },{ "coord": [ "z,x,1/2" ],"desc": "m","geom": "plane","label": "b","mult": 1 },{ "coord": [ "z,x,0" ],"desc": "m","geom": "plane","label": "a","mult": 1 } ] } },{ "clegId": "6:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,z" ],"gp": [ "x,y,z","-x,y,z" ],"hall": "P -2x","hm": "P m 1 1","id": "P_m_1_1","jmolId": "6:a","set": 3,"sg": 6,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 2 },{ "coord": [ "1/2,z,x" ],"desc": "m","geom": "plane","label": "b","mult": 1 },{ "coord": [ "0,z,x" ],"desc": "m","geom": "plane","label": "a","mult": 1 } ] } } ],"n": 3,"sg": 6 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_60.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_60.json new file mode 100755 index 000000000000..757b6a5de315 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_60.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "60:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-x,y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-x,y,-z+1/2","x+1/2,-y+1/2,-z","-x,-y,-z","x+1/2,y+1/2,-z+1/2","x,-y,z+1/2","-x+1/2,y+1/2,z" ],"hall": "-P 2n 2ab","hm": "P b c n","id": "P_b_c_n","jmolId": "60","set": 1,"sg": 60,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "0,y,1/4","1/2,-y+1/2,3/4","0,-y,3/4","1/2,y+1/2,1/4" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,1/2","0,1/2,1/2","1/2,0,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2","0,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "60:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","x,-y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","x,-y,-z+1/2","-x+1/2,y+1/2,-z","-x,-y,-z","x+1/2,y+1/2,-z+1/2","-x,y,z+1/2","x+1/2,-y+1/2,z" ],"hall": "-P 2n 2c","hm": "P c a n","id": "P_c_a_n","jmolId": "60:ba-c","set": 2,"sg": 60,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "y,0,3/4","-y+1/2,1/2,1/4","-y,0,1/4","y+1/2,1/2,3/4" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","0,1/2,1/2","1/2,0,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2","0,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "60:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y,z","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y,z","-x,y+1/2,-z+1/2","-x,-y,-z","-x+1/2,y+1/2,z+1/2","x+1/2,y,-z","x,-y+1/2,z+1/2" ],"hall": "-P 2a 2n","hm": "P n c a","id": "P_n_c_a","jmolId": "60:cab","set": 3,"sg": 60,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "1/4,0,y","3/4,1/2,-y+1/2","3/4,0,-y","1/4,1/2,y+1/2" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0","1/2,0,1/2","0,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2","1/2,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "60:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y+1/2,-z+1/2","-x+1/2,y,-z","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y+1/2,-z+1/2","-x+1/2,y,-z","-x,-y+1/2,z+1/2","-x,-y,-z","-x+1/2,y+1/2,z+1/2","x+1/2,-y,z","x,y+1/2,-z+1/2" ],"hall": "-P 2bc 2n","hm": "P n a b","id": "P_n_a_b","jmolId": "60:-cba","set": 4,"sg": 60,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "3/4,y,0","1/4,-y+1/2,1/2","1/4,-y,0","3/4,y+1/2,1/2" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,1/2","1/2,1/2,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2","1/2,0,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "60:b,c,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y+1/2,-z+1/2","x,-y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y+1/2,-z+1/2","x,-y+1/2,-z","-x+1/2,-y,z+1/2","-x,-y,-z","x+1/2,-y+1/2,z+1/2","-x,y+1/2,z","x+1/2,y,-z+1/2" ],"hall": "-P 2ac 2b","hm": "P b n a","id": "P_b_n_a","jmolId": "60:bca","set": 5,"sg": 60,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "y,1/4,0","-y+1/2,3/4,1/2","-y,3/4,0","y+1/2,1/4,1/2" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","0,1/2,1/2","1/2,1/2,0","0,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2","0,1/2,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "60:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,y+1/2,-z+1/2","-x,-y+1/2,z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y+1/2,-z+1/2","-x,-y+1/2,z","x+1/2,-y,-z+1/2","-x,-y,-z","x+1/2,-y+1/2,z+1/2","x,y+1/2,-z","-x+1/2,y,z+1/2" ],"hall": "-P 2b 2ac","hm": "P c n b","id": "P_c_n_b","jmolId": "60:a-cb","set": 6,"sg": 60,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "0,3/4,y","1/2,1/4,-y+1/2","0,1/4,-y","1/2,3/4,y+1/2" ],"desc": ".2.","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0","0,1/2,1/2","1/2,0,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,1/2","0,1/2,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 60 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_61.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_61.json new file mode 100755 index 000000000000..54eab681a7b4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_61.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "61:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","-x,-y,-z","x+1/2,y,-z+1/2","x,-y+1/2,z+1/2","-x+1/2,y+1/2,z" ],"hall": "-P 2ac 2ab","hm": "P b c a","id": "P_b_c_a","jmolId": "61","set": 1,"sg": 61,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","1/2,0,0","0,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2","0,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "61:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","x+1/2,-y,-z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","x+1/2,-y,-z+1/2","-x+1/2,y+1/2,-z","-x,-y,-z","x,y+1/2,-z+1/2","-x+1/2,y,z+1/2","x+1/2,-y+1/2,z" ],"hall": "-P 2bc 2ac","hm": "P c a b","id": "P_c_a_b","jmolId": "61:ba-c","set": 2,"sg": 61,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,0","1/2,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } } ],"n": 2,"sg": 61 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_62.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_62.json new file mode 100755 index 000000000000..3e6bc1fc9707 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_62.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "62:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z","x+1/2,-y+1/2,-z+1/2","-x,-y,-z","x+1/2,y,-z+1/2","x,-y+1/2,z","-x+1/2,y+1/2,z+1/2" ],"hall": "-P 2ac 2n","hm": "P n m a","id": "P_n_m_a","jmolId": "62","set": 1,"sg": 62,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "x,1/4,z","-x+1/2,3/4,z+1/2","-x,3/4,-z","x+1/2,1/4,-z+1/2" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,0","0,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2","0,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "62:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","x+1/2,-y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","x+1/2,-y,-z","-x+1/2,y+1/2,-z+1/2","-x,-y,-z","x,y+1/2,-z+1/2","-x+1/2,y,z","x+1/2,-y+1/2,z+1/2" ],"hall": "-P 2bc 2a","hm": "P m n b","id": "P_m_n_b","jmolId": "62:ba-c","set": 2,"sg": 62,"trm": "b,a,-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "1/4,x,-z","3/4,-x+1/2,-z+1/2","3/4,-x,z","1/4,x+1/2,z+1/2" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,0","1/2,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2","1/2,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "62:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y+1/2,-z","-x,-y,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y+1/2,-z","-x,-y,z+1/2","-x+1/2,y+1/2,-z+1/2","-x,-y,-z","-x+1/2,y+1/2,z","x,y,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "-P 2c 2ab","hm": "P b n m","id": "P_b_n_m","jmolId": "62:cab","set": 3,"sg": 62,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "z,x,1/4","z+1/2,-x+1/2,3/4","-z,-x,3/4","-z+1/2,x+1/2,1/4" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","0,1/2,0","1/2,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "62:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z+1/2","-x,y+1/2,-z","-x,-y,-z" ],"gp": [ "x,y,z","x+1/2,-y,-z+1/2","-x,y+1/2,-z","-x+1/2,-y+1/2,z+1/2","-x,-y,-z","-x+1/2,y,z+1/2","x,-y+1/2,z","x+1/2,y+1/2,-z+1/2" ],"hall": "-P 2n 2ac","hm": "P c m n","id": "P_c_m_n","jmolId": "62:-cba","set": 4,"sg": 62,"trm": "-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "-z,1/4,x","-z+1/2,3/4,-x+1/2","z,3/4,-x","z+1/2,1/4,x+1/2" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","0,0,1/2","1/2,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2","0,1/2,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "62:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z+1/2","x+1/2,-y,-z","-x,-y,-z" ],"gp": [ "x,y,z","-x,y+1/2,-z+1/2","x+1/2,-y,-z","-x+1/2,-y+1/2,z+1/2","-x,-y,-z","x,-y+1/2,z+1/2","-x+1/2,y,z","x+1/2,y+1/2,-z+1/2" ],"hall": "-P 2n 2a","hm": "P m c n","id": "P_m_c_n","jmolId": "62:bca","set": 5,"sg": 62,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "1/4,z,x","3/4,z+1/2,-x+1/2","3/4,-z,-x","1/4,-z+1/2,x+1/2" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,0,1/2","1/2,1/2,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2","1/2,0,0","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "62:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,y+1/2,-z","-x,-y,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,y+1/2,-z","-x,-y,z+1/2","x+1/2,-y+1/2,-z+1/2","-x,-y,-z","x+1/2,-y+1/2,z","x,y,-z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "-P 2c 2n","hm": "P n a m","id": "P_n_a_m","jmolId": "62:a-cb","set": 6,"sg": 62,"trm": "a,-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "x,-z,1/4","-x+1/2,-z+1/2,3/4","-x,z,3/4","x+1/2,z+1/2,1/4" ],"desc": ".m.","geom": "plane","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,0","0,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","0,0,1/2","1/2,1/2,1/2" ],"desc": "-1","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 62 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_63.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_63.json new file mode 100755 index 000000000000..c3848a71dcc0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_63.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "63:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-x,y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-x,y,-z+1/2","x,-y,-z","-x,-y,-z","x,y,-z+1/2","x,-y,z+1/2","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z" ],"hall": "-C 2c 2","hm": "C m c m","id": "C_m_c_m","jmolId": "63","set": 1,"sg": 63,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 16 },{ "coord": [ "x,y,1/4","-x,-y,3/4","-x,y,1/4","x,-y,3/4" ],"desc": "..m","geom": "plane","label": "g","mult": 8 },{ "coord": [ "0,y,z","0,-y,z+1/2","0,y,-z+1/2","0,-y,-z" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "x,0,0","-x,0,1/2","-x,0,0","x,0,1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,1/4,0","3/4,3/4,1/2","3/4,1/4,1/2","1/4,3/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,y,1/4","0,-y,3/4" ],"desc": "m2m","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "63:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","x,-y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z+1/2","x,-y,-z+1/2","-x,y,-z","-x,-y,-z","x,y,-z+1/2","-x,y,z+1/2","x,-y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,z" ],"hall": "-C 2c 2c","hm": "C c m m","id": "C_c_m_m","jmolId": "63:ba-c","set": 2,"sg": 63,"trm": "b,a,-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 16 },{ "coord": [ "y,x,3/4","-y,-x,1/4","y,-x,3/4","-y,x,1/4" ],"desc": "..m","geom": "plane","label": "g","mult": 8 },{ "coord": [ "y,0,-z","-y,0,-z+1/2","y,0,z+1/2","-y,0,z" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "0,x,0","0,-x,1/2","0,-x,0","0,x,1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,1/4,0","3/4,3/4,1/2","1/4,3/4,1/2","3/4,1/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "y,0,3/4","-y,0,1/4" ],"desc": "m2m","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "63:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","-x+1/2,-y,z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z","-x+1/2,-y,z","-x,y,-z","-x,-y,-z","-x+1/2,y,z","x+1/2,y,-z","x,-y,z","x,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "-A 2a 2a","hm": "A m m a","id": "A_m_m_a","jmolId": "63:cab","set": 3,"sg": 63,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 16 },{ "coord": [ "1/4,x,y","3/4,-x,-y","1/4,-x,y","3/4,x,-y" ],"desc": "..m","geom": "plane","label": "g","mult": 8 },{ "coord": [ "z,0,y","z+1/2,0,-y","-z+1/2,0,y","-z,0,-y" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "0,x,0","1/2,-x,0","0,-x,0","1/2,x,0" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,1/4,1/4","1/2,3/4,3/4","1/2,3/4,1/4","0,1/4,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,0,y","3/4,0,-y" ],"desc": "m2m","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "63:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z","-x+1/2,y,-z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z","-x+1/2,y,-z","-x,-y,z","-x,-y,-z","-x+1/2,y,z","x+1/2,-y,z","x,y,-z","x,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,y+1/2,-z+1/2","-x,-y+1/2,z+1/2","-x,-y+1/2,-z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,z+1/2","x,y+1/2,-z+1/2" ],"hall": "-A 2 2a","hm": "A m a m","id": "A_m_a_m","jmolId": "63:-cba","set": 4,"sg": 63,"trm": "-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 16 },{ "coord": [ "3/4,y,x","1/4,-y,-x","3/4,y,-x","1/4,-y,x" ],"desc": "..m","geom": "plane","label": "g","mult": 8 },{ "coord": [ "-z,y,0","-z+1/2,-y,0","z+1/2,y,0","z,-y,0" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "0,0,x","1/2,0,-x","0,0,-x","1/2,0,x" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,1/4,1/4","1/2,3/4,3/4","1/2,1/4,3/4","0,3/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,y,0","1/4,-y,0" ],"desc": "m2m","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "63:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","x,-y+1/2,-z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z","x,-y+1/2,-z","-x,-y,z","-x,-y,-z","x,-y+1/2,z","-x,y+1/2,z","x,y,-z","x+1/2,y,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y,z+1/2","-x+1/2,-y,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y,-z+1/2" ],"hall": "-B 2 2b","hm": "B b m m","id": "B_b_m_m","jmolId": "63:bca","set": 5,"sg": 63,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 16 },{ "coord": [ "y,1/4,x","-y,3/4,-x","y,1/4,-x","-y,3/4,x" ],"desc": "..m","geom": "plane","label": "g","mult": 8 },{ "coord": [ "y,z,0","-y,z+1/2,0","y,-z+1/2,0","-y,-z,0" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "0,0,x","0,1/2,-x","0,0,-x","0,1/2,x" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,0,1/4","3/4,1/2,3/4","1/4,1/2,3/4","3/4,0,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "y,1/4,0","-y,3/4,0" ],"desc": "m2m","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "63:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z","-x,-y+1/2,z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z","-x,-y+1/2,z","x,-y,-z","-x,-y,-z","x,-y+1/2,z","x,y+1/2,-z","-x,y,z","x+1/2,y,z+1/2","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y,-z+1/2","x+1/2,-y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2","-x+1/2,y,z+1/2" ],"hall": "-B 2b 2","hm": "B m m b","id": "B_m_m_b","jmolId": "63:a-cb","set": 6,"sg": 63,"trm": "a,-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 16 },{ "coord": [ "x,3/4,y","-x,1/4,-y","-x,3/4,y","x,1/4,-y" ],"desc": "..m","geom": "plane","label": "g","mult": 8 },{ "coord": [ "0,-z,y","0,-z+1/2,-y","0,z+1/2,y","0,z,-y" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "x,0,0","-x,1/2,0","-x,0,0","x,1/2,0" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,0,1/4","3/4,1/2,3/4","3/4,1/2,1/4","1/4,0,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,3/4,y","0,1/4,-y" ],"desc": "m2m","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 63 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_64.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_64.json new file mode 100755 index 000000000000..833fa7229c1a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_64.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "64:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y,-z","-x,-y,-z","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y+1/2,z" ],"hall": "-C 2ac 2","hm": "C m c e","id": "C_m_c_e","jmolId": "64","set": 1,"sg": 64,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "0,y,z","0,-y+1/2,z+1/2","0,y+1/2,-z+1/2","0,-y,-z" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "1/4,y,1/4","3/4,-y+1/2,3/4","3/4,-y,3/4","1/4,y+1/2,1/4" ],"desc": ".2.","geom": "line","label": "e","mult": 8 },{ "coord": [ "x,0,0","-x,1/2,1/2","-x,0,0","x,1/2,1/2" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,0","3/4,1/4,1/2","3/4,3/4,1/2","1/4,3/4,0" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "64:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","x+1/2,-y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","x+1/2,-y,-z+1/2","-x,y,-z","-x,-y,-z","x+1/2,y,-z+1/2","-x+1/2,y,z+1/2","x,-y,z","x+1/2,y+1/2,z","-x,-y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,-z","x,y+1/2,-z+1/2","-x,y+1/2,z+1/2","x+1/2,-y+1/2,z" ],"hall": "-C 2ac 2ac","hm": "C c m e","id": "C_c_m_e","jmolId": "64:ba-c","set": 2,"sg": 64,"trm": "b,a,-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "y,0,-z","-y+1/2,0,-z+1/2","y+1/2,0,z+1/2","-y,0,z" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "y,1/4,3/4","-y+1/2,3/4,1/4","-y,3/4,1/4","y+1/2,1/4,3/4" ],"desc": ".2.","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,x,0","1/2,-x,1/2","0,-x,0","1/2,x,1/2" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,0","1/4,3/4,1/2","3/4,3/4,1/2","3/4,1/4,0" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "64:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,-z+1/2","-x+1/2,-y,z+1/2","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,-z+1/2","-x+1/2,-y,z+1/2","-x,y,-z","-x,-y,-z","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2","x,-y,z","x,y+1/2,z+1/2","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,z","-x,y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","-x+1/2,y+1/2,z","x+1/2,y+1/2,-z","x,-y+1/2,z+1/2" ],"hall": "-A 2ab 2ab","hm": "A e m a","id": "A_e_m_a","jmolId": "64:cab","set": 3,"sg": 64,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "z,0,y","z+1/2,0,-y+1/2","-z+1/2,0,y+1/2","-z,0,-y" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,y","3/4,3/4,-y+1/2","3/4,3/4,-y","1/4,1/4,y+1/2" ],"desc": ".2.","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,x,0","1/2,-x,1/2","0,-x,0","1/2,x,1/2" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "0,1/4,1/4","1/2,3/4,1/4","1/2,3/4,3/4","0,1/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "64:-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y+1/2,-z","-x+1/2,y+1/2,-z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y+1/2,-z","-x+1/2,y+1/2,-z","-x,-y,z","-x,-y,-z","-x+1/2,y+1/2,z","x+1/2,-y+1/2,z","x,y,-z","x,y+1/2,z+1/2","x+1/2,-y,-z+1/2","-x+1/2,y,-z+1/2","-x,-y+1/2,z+1/2","-x,-y+1/2,-z+1/2","-x+1/2,y,z+1/2","x+1/2,-y,z+1/2","x,y+1/2,-z+1/2" ],"hall": "-A 2 2ab","hm": "A e a m","id": "A_e_a_m","jmolId": "64:-cba","set": 4,"sg": 64,"trm": "-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "-z,y,0","-z+1/2,-y+1/2,0","z+1/2,y+1/2,0","z,-y,0" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "3/4,y,1/4","1/4,-y+1/2,3/4","1/4,-y,3/4","3/4,y+1/2,1/4" ],"desc": ".2.","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,x","1/2,1/2,-x","0,0,-x","1/2,1/2,x" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "0,1/4,1/4","1/2,1/4,3/4","1/2,3/4,3/4","0,3/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "64:b,c,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x,-y,z","-x,-y,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","x,y,-z","x+1/2,y,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x+1/2,-y,z+1/2","-x+1/2,-y,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y,-z+1/2" ],"hall": "-B 2 2ab","hm": "B b e m","id": "B_b_e_m","jmolId": "64:bca","set": 5,"sg": 64,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "y,z,0","-y+1/2,z+1/2,0","y+1/2,-z+1/2,0","-y,-z,0" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "y,1/4,1/4","-y+1/2,3/4,3/4","-y,3/4,3/4","y+1/2,1/4,1/4" ],"desc": ".2.","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,x","1/2,1/2,-x","0,0,-x","1/2,1/2,x" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "1/4,0,1/4","1/4,1/2,3/4","3/4,1/2,3/4","3/4,0,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "64:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,-z+1/2","-x,-y+1/2,z+1/2","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,-z+1/2","-x,-y+1/2,z+1/2","x,-y,-z","-x,-y,-z","x,-y+1/2,z+1/2","x,y+1/2,-z+1/2","-x,y,z","x+1/2,y,z+1/2","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,z","x+1/2,-y,-z+1/2","-x+1/2,-y,-z+1/2","x+1/2,-y+1/2,z","x+1/2,y+1/2,-z","-x+1/2,y,z+1/2" ],"hall": "-B 2ab 2","hm": "B m e b","id": "B_m_e_b","jmolId": "64:a-cb","set": 6,"sg": 64,"trm": "a,-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "0,-z,y","0,-z+1/2,-y+1/2","0,z+1/2,y+1/2","0,z,-y" ],"desc": "m..","geom": "plane","label": "f","mult": 8 },{ "coord": [ "1/4,3/4,y","3/4,1/4,-y+1/2","3/4,1/4,-y","1/4,3/4,y+1/2" ],"desc": ".2.","geom": "line","label": "e","mult": 8 },{ "coord": [ "x,0,0","-x,1/2,1/2","-x,0,0","x,1/2,1/2" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "1/4,0,1/4","3/4,1/2,1/4","3/4,1/2,3/4","1/4,0,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,0,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 64 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_65.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_65.json new file mode 100755 index 000000000000..bed0ba75fab2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_65.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "65:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "-C 2 2","hm": "C m m m","id": "C_m_m_m","jmolId": "65","set": 1,"sg": 65,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "r","mult": 16 },{ "coord": [ "x,y,1/2","-x,-y,1/2","-x,y,1/2","x,-y,1/2" ],"desc": "..m","geom": "plane","label": "q","mult": 8 },{ "coord": [ "x,y,0","-x,-y,0","-x,y,0","x,-y,0" ],"desc": "..m","geom": "plane","label": "p","mult": 8 },{ "coord": [ "x,0,z","-x,0,z","-x,0,-z","x,0,-z" ],"desc": ".m.","geom": "plane","label": "o","mult": 8 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z" ],"desc": "m..","geom": "plane","label": "n","mult": 8 },{ "coord": [ "1/4,1/4,z","3/4,1/4,-z","3/4,3/4,-z","1/4,3/4,z" ],"desc": "..2","geom": "line","label": "m","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "mm2","geom": "line","label": "l","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "mm2","geom": "line","label": "k","mult": 4 },{ "coord": [ "0,y,1/2","0,-y,1/2" ],"desc": "m2m","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": "m2m","geom": "line","label": "i","mult": 4 },{ "coord": [ "x,0,1/2","-x,0,1/2" ],"desc": "2mm","geom": "line","label": "h","mult": 4 },{ "coord": [ "x,0,0","-x,0,0" ],"desc": "2mm","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,1/4,0" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "mmm","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,0,1/2" ],"desc": "mmm","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,0,0" ],"desc": "mmm","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "mmm","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "65:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y,z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x,-y,z","-x,y,-z","-x,-y,-z","-x,y,z","x,y,-z","x,-y,z","x,y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","-x,y+1/2,z+1/2","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2" ],"hall": "-A 2 2","hm": "A m m m","id": "A_m_m_m","jmolId": "65:cab","set": 2,"sg": 65,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "r","mult": 16 },{ "coord": [ "1/2,x,y","1/2,-x,-y","1/2,-x,y","1/2,x,-y" ],"desc": "..m","geom": "plane","label": "q","mult": 8 },{ "coord": [ "0,x,y","0,-x,-y","0,-x,y","0,x,-y" ],"desc": "..m","geom": "plane","label": "p","mult": 8 },{ "coord": [ "z,x,0","z,-x,0","-z,-x,0","-z,x,0" ],"desc": ".m.","geom": "plane","label": "o","mult": 8 },{ "coord": [ "z,0,y","z,0,-y","-z,0,y","-z,0,-y" ],"desc": "m..","geom": "plane","label": "n","mult": 8 },{ "coord": [ "z,1/4,1/4","-z,3/4,1/4","-z,3/4,3/4","z,1/4,3/4" ],"desc": "..2","geom": "line","label": "m","mult": 8 },{ "coord": [ "z,0,1/2","-z,0,1/2" ],"desc": "mm2","geom": "line","label": "l","mult": 4 },{ "coord": [ "z,0,0","-z,0,0" ],"desc": "mm2","geom": "line","label": "k","mult": 4 },{ "coord": [ "1/2,0,y","1/2,0,-y" ],"desc": "m2m","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,0,y","0,0,-y" ],"desc": "m2m","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,x,0","1/2,-x,0" ],"desc": "2mm","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,x,0","0,-x,0" ],"desc": "2mm","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/4,1/4","1/2,3/4,1/4" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,0,0" ],"desc": "mmm","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0" ],"desc": "mmm","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "mmm","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "mmm","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "65:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,-y,-z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x,-y,-z","-x,-y,z","-x,-y,-z","x,-y,z","-x,y,z","x,y,-z","x+1/2,y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y,z+1/2","-x+1/2,-y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "-B 2 2","hm": "B m m m","id": "B_m_m_m","jmolId": "65:bca","set": 3,"sg": 65,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "r","mult": 16 },{ "coord": [ "y,1/2,x","-y,1/2,-x","y,1/2,-x","-y,1/2,x" ],"desc": "..m","geom": "plane","label": "q","mult": 8 },{ "coord": [ "y,0,x","-y,0,-x","y,0,-x","-y,0,x" ],"desc": "..m","geom": "plane","label": "p","mult": 8 },{ "coord": [ "0,z,x","0,z,-x","0,-z,-x","0,-z,x" ],"desc": ".m.","geom": "plane","label": "o","mult": 8 },{ "coord": [ "y,z,0","-y,z,0","y,-z,0","-y,-z,0" ],"desc": "m..","geom": "plane","label": "n","mult": 8 },{ "coord": [ "1/4,z,1/4","1/4,-z,3/4","3/4,-z,3/4","3/4,z,1/4" ],"desc": "..2","geom": "line","label": "m","mult": 8 },{ "coord": [ "1/2,z,0","1/2,-z,0" ],"desc": "mm2","geom": "line","label": "l","mult": 4 },{ "coord": [ "0,z,0","0,-z,0" ],"desc": "mm2","geom": "line","label": "k","mult": 4 },{ "coord": [ "y,1/2,0","-y,1/2,0" ],"desc": "m2m","geom": "line","label": "j","mult": 4 },{ "coord": [ "y,0,0","-y,0,0" ],"desc": "m2m","geom": "line","label": "i","mult": 4 },{ "coord": [ "0,1/2,x","0,1/2,-x" ],"desc": "2mm","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,x","0,0,-x" ],"desc": "2mm","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/2,1/4","1/4,1/2,3/4" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,0,1/4","1/4,0,3/4" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,0" ],"desc": "mmm","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/2" ],"desc": "mmm","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "mmm","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "mmm","geom": "point","label": "a","mult": 2 } ] } } ],"n": 3,"sg": 65 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_66.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_66.json new file mode 100755 index 000000000000..3ff01bb686d6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_66.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "66:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z+1/2","x,-y,-z+1/2","-x,-y,-z","x,y,-z","x,-y,z+1/2","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "-C 2 2c","hm": "C c c m","id": "C_c_c_m","jmolId": "66","set": 1,"sg": 66,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "m","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-x,y,1/2","x,-y,1/2" ],"desc": "..m","geom": "plane","label": "l","mult": 8 },{ "coord": [ "1/4,1/4,z","3/4,1/4,-z+1/2","3/4,3/4,-z","1/4,3/4,z+1/2" ],"desc": "..2","geom": "line","label": "k","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z+1/2","0,1/2,-z","0,1/2,z+1/2" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "0,0,z","0,0,-z+1/2","0,0,-z","0,0,z+1/2" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,y,1/4","0,-y,1/4","0,-y,3/4","0,y,3/4" ],"desc": ".2.","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,0,1/4","-x,0,1/4","-x,0,3/4","x,0,3/4" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,3/4,0","3/4,3/4,1/2" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,1/4,1/2" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "..2/m","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "66:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x+1/2,-y,z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x+1/2,-y,z","-x+1/2,y,-z","-x,-y,-z","-x,y,z","x+1/2,y,-z","x+1/2,-y,z","x,y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "-A 2a 2","hm": "A m a a","id": "A_m_a_a","jmolId": "66:cab","set": 2,"sg": 66,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "m","mult": 16 },{ "coord": [ "0,x,y","0,-x,-y","1/2,-x,y","1/2,x,-y" ],"desc": "..m","geom": "plane","label": "l","mult": 8 },{ "coord": [ "z,1/4,1/4","-z+1/2,3/4,1/4","-z,3/4,3/4","z+1/2,1/4,3/4" ],"desc": "..2","geom": "line","label": "k","mult": 8 },{ "coord": [ "z,0,1/2","-z+1/2,0,1/2","-z,0,1/2","z+1/2,0,1/2" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "z,0,0","-z+1/2,0,0","-z,0,0","z+1/2,0,0" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "1/4,0,y","1/4,0,-y","3/4,0,-y","3/4,0,y" ],"desc": ".2.","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/4,x,0","1/4,-x,0","3/4,-x,0","3/4,x,0" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/4,3/4","1/2,3/4,3/4" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,1/4,1/4","1/2,3/4,1/4" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,0,1/2","3/4,0,1/2" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,0,0","3/4,0,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "66:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x,-y+1/2,-z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x,-y+1/2,-z","-x,-y+1/2,z","-x,-y,-z","x,-y,z","-x,y+1/2,z","x,y+1/2,-z","x+1/2,y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,-y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "-B 2b 2b","hm": "B b m b","id": "B_b_m_b","jmolId": "66:bca","set": 3,"sg": 66,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "m","mult": 16 },{ "coord": [ "y,0,x","-y,0,-x","y,1/2,-x","-y,1/2,x" ],"desc": "..m","geom": "plane","label": "l","mult": 8 },{ "coord": [ "1/4,z,1/4","1/4,-z+1/2,3/4","3/4,-z,3/4","3/4,z+1/2,1/4" ],"desc": "..2","geom": "line","label": "k","mult": 8 },{ "coord": [ "1/2,z,0","1/2,-z+1/2,0","1/2,-z,0","1/2,z+1/2,0" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "0,z,0","0,-z+1/2,0","0,-z,0","0,z+1/2,0" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "y,1/4,0","-y,1/4,0","-y,3/4,0","y,3/4,0" ],"desc": ".2.","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,1/4,x","0,1/4,-x","0,3/4,-x","0,3/4,x" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "3/4,0,1/4","3/4,1/2,3/4" ],"desc": "..2/m","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,0,1/4","1/4,1/2,3/4" ],"desc": "..2/m","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,1/4,0","1/2,3/4,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,0","0,3/4,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } } ],"n": 3,"sg": 66 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_67.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_67.json new file mode 100755 index 000000000000..76959cc15cbc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_67.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "67:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","-x,y+1/2,-z","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-x,y+1/2,-z","x,-y,-z","-x,-y,-z","x,y+1/2,-z","x,-y+1/2,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y,z","-x+1/2,y,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y,-z","x+1/2,-y,z","-x+1/2,y+1/2,z" ],"hall": "-C 2a 2","hm": "C m m e","hmAlt": "C m m a","id": "C_m_m_e","jmolId": "67","set": 1,"sg": 67,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 16 },{ "coord": [ "x,1/4,z","-x,1/4,z","-x,3/4,-z","x,3/4,-z" ],"desc": ".m.","geom": "plane","label": "n","mult": 8 },{ "coord": [ "0,y,z","0,-y+1/2,z","0,y+1/2,-z","0,-y,-z" ],"desc": "m..","geom": "plane","label": "m","mult": 8 },{ "coord": [ "1/4,0,z","3/4,1/2,-z","3/4,0,-z","1/4,1/2,z" ],"desc": "..2","geom": "line","label": "l","mult": 8 },{ "coord": [ "1/4,y,1/2","3/4,-y+1/2,1/2","3/4,-y,1/2","1/4,y+1/2,1/2" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "1/4,y,0","3/4,-y+1/2,0","3/4,-y,0","1/4,y+1/2,0" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "x,0,1/2","-x,1/2,1/2","-x,0,1/2","x,1/2,1/2" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "x,0,0","-x,1/2,0","-x,0,0","x,1/2,0" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,1/4,z","0,3/4,-z" ],"desc": "mm2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": ".2/m.","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,1/4,0" ],"desc": ".2/m.","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,0,1/2","3/4,0,1/2" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,0,0","3/4,0,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "67:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","x+1/2,-y,-z","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x+1/2,-y,z","x+1/2,-y,-z","-x,y,-z","-x,-y,-z","x+1/2,y,-z","-x+1/2,y,z","x,-y,z","x+1/2,y+1/2,z","-x,-y+1/2,z","x,-y+1/2,-z","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,-z","x,y+1/2,-z","-x,y+1/2,z","x+1/2,-y+1/2,z" ],"hall": "-C 2a 2a","hm": "C m m e","hmAlt": "C m m b","id": "C_m_m_e","jmolId": "67:ba-c","set": 2,"sg": 67,"trm": "b,a,-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 16 },{ "coord": [ "1/4,x,-z","1/4,-x,-z","3/4,-x,z","3/4,x,z" ],"desc": ".m.","geom": "plane","label": "n","mult": 8 },{ "coord": [ "y,0,-z","-y+1/2,0,-z","y+1/2,0,z","-y,0,z" ],"desc": "m..","geom": "plane","label": "m","mult": 8 },{ "coord": [ "0,1/4,-z","1/2,3/4,z","0,3/4,z","1/2,1/4,-z" ],"desc": "..2","geom": "line","label": "l","mult": 8 },{ "coord": [ "y,1/4,1/2","-y+1/2,3/4,1/2","-y,3/4,1/2","y+1/2,1/4,1/2" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "y,1/4,0","-y+1/2,3/4,0","-y,3/4,0","y+1/2,1/4,0" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "0,x,1/2","1/2,-x,1/2","0,-x,1/2","1/2,x,1/2" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,x,0","1/2,-x,0","0,-x,0","1/2,x,0" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/4,0,-z","3/4,0,z" ],"desc": "mm2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/4,1/2","1/4,3/4,1/2" ],"desc": ".2/m.","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","1/4,3/4,0" ],"desc": ".2/m.","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/4,1/2","0,3/4,1/2" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,0","0,3/4,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "67:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x,-y,z+1/2","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x,-y,z+1/2","-x,y,-z","-x,-y,-z","-x,y,z+1/2","x,y,-z+1/2","x,-y,z","x,y+1/2,z+1/2","x,-y+1/2,-z","-x,-y+1/2,z","-x,y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","-x,y+1/2,z","x,y+1/2,-z","x,-y+1/2,z+1/2" ],"hall": "-A 2b 2b","hm": "A e m m","hmAlt": "A b m m","id": "A_e_m_m","jmolId": "67:cab","set": 3,"sg": 67,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 16 },{ "coord": [ "z,x,1/4","z,-x,1/4","-z,-x,3/4","-z,x,3/4" ],"desc": ".m.","geom": "plane","label": "n","mult": 8 },{ "coord": [ "z,0,y","z,0,-y+1/2","-z,0,y+1/2","-z,0,-y" ],"desc": "m..","geom": "plane","label": "m","mult": 8 },{ "coord": [ "z,1/4,0","-z,3/4,1/2","-z,3/4,0","z,1/4,1/2" ],"desc": "..2","geom": "line","label": "l","mult": 8 },{ "coord": [ "1/2,1/4,y","1/2,3/4,-y+1/2","1/2,3/4,-y","1/2,1/4,y+1/2" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "0,1/4,y","0,3/4,-y+1/2","0,3/4,-y","0,1/4,y+1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "1/2,x,0","1/2,-x,1/2","1/2,-x,0","1/2,x,1/2" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,x,0","0,-x,1/2","0,-x,0","0,x,1/2" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "z,0,1/4","-z,0,3/4" ],"desc": "mm2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/4,1/4","1/2,3/4,1/4" ],"desc": ".2/m.","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4" ],"desc": ".2/m.","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,1/4,0","1/2,3/4,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,0","0,3/4,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "67:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x,y+1/2,-z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x,y+1/2,-z","-x,-y,z","-x,-y,-z","-x,y+1/2,z","x,-y+1/2,z","x,y,-z","x,y+1/2,z+1/2","x,-y,-z+1/2","-x,y,-z+1/2","-x,-y+1/2,z+1/2","-x,-y+1/2,-z+1/2","-x,y,z+1/2","x,-y,z+1/2","x,y+1/2,-z+1/2" ],"hall": "-A 2 2b","hm": "A e m m","hmAlt": "A c m m","id": "A_e_m_m","jmolId": "67:-cba","set": 4,"sg": 67,"trm": "-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 16 },{ "coord": [ "-z,1/4,x","-z,1/4,-x","z,3/4,-x","z,3/4,x" ],"desc": ".m.","geom": "plane","label": "n","mult": 8 },{ "coord": [ "-z,y,0","-z,-y+1/2,0","z,y+1/2,0","z,-y,0" ],"desc": "m..","geom": "plane","label": "m","mult": 8 },{ "coord": [ "-z,0,1/4","z,1/2,3/4","z,0,3/4","-z,1/2,1/4" ],"desc": "..2","geom": "line","label": "l","mult": 8 },{ "coord": [ "1/2,y,1/4","1/2,-y+1/2,3/4","1/2,-y,3/4","1/2,y+1/2,1/4" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "0,y,1/4","0,-y+1/2,3/4","0,-y,3/4","0,y+1/2,1/4" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "1/2,0,x","1/2,1/2,-x","1/2,0,-x","1/2,1/2,x" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,0,x","0,1/2,-x","0,0,-x","0,1/2,x" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "-z,1/4,0","z,3/4,0" ],"desc": "mm2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/4,1/4","1/2,1/4,3/4" ],"desc": ".2/m.","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,1/4,1/4","0,1/4,3/4" ],"desc": ".2/m.","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,1/4","1/2,0,3/4" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "67:b,c,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","x+1/2,-y,-z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y,-z","x+1/2,-y,-z","-x,-y,z","-x,-y,-z","x+1/2,-y,z","-x+1/2,y,z","x,y,-z","x+1/2,y,z+1/2","-x,y,-z+1/2","x,-y,-z+1/2","-x+1/2,-y,z+1/2","-x+1/2,-y,-z+1/2","x,-y,z+1/2","-x,y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "-B 2 2a","hm": "B m e m","hmAlt": "B m c m","id": "B_m_e_m","jmolId": "67:bca","set": 5,"sg": 67,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 16 },{ "coord": [ "1/4,z,x","1/4,z,-x","3/4,-z,-x","3/4,-z,x" ],"desc": ".m.","geom": "plane","label": "n","mult": 8 },{ "coord": [ "y,z,0","-y+1/2,z,0","y+1/2,-z,0","-y,-z,0" ],"desc": "m..","geom": "plane","label": "m","mult": 8 },{ "coord": [ "0,z,1/4","1/2,-z,3/4","0,-z,3/4","1/2,z,1/4" ],"desc": "..2","geom": "line","label": "l","mult": 8 },{ "coord": [ "y,1/2,1/4","-y+1/2,1/2,3/4","-y,1/2,3/4","y+1/2,1/2,1/4" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "y,0,1/4","-y+1/2,0,3/4","-y,0,3/4","y+1/2,0,1/4" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "0,1/2,x","1/2,1/2,-x","0,1/2,-x","1/2,1/2,x" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,0,x","1/2,0,-x","0,0,-x","1/2,0,x" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/4,z,0","3/4,-z,0" ],"desc": "mm2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/2,1/4","1/4,1/2,3/4" ],"desc": ".2/m.","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,0,1/4","1/4,0,3/4" ],"desc": ".2/m.","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "67:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","-x,-y,z+1/2","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z+1/2","-x,-y,z+1/2","x,-y,-z","-x,-y,-z","x,-y,z+1/2","x,y,-z+1/2","-x,y,z","x+1/2,y,z+1/2","-x+1/2,y,-z","-x+1/2,-y,z","x+1/2,-y,-z+1/2","-x+1/2,-y,-z+1/2","x+1/2,-y,z","x+1/2,y,-z","-x+1/2,y,z+1/2" ],"hall": "-B 2a 2","hm": "B m e m","hmAlt": "B m a m","id": "B_m_e_m","jmolId": "67:a-cb","set": 6,"sg": 67,"trm": "a,-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 16 },{ "coord": [ "x,-z,1/4","-x,-z,1/4","-x,z,3/4","x,z,3/4" ],"desc": ".m.","geom": "plane","label": "n","mult": 8 },{ "coord": [ "0,-z,y","0,-z,-y+1/2","0,z,y+1/2","0,z,-y" ],"desc": "m..","geom": "plane","label": "m","mult": 8 },{ "coord": [ "1/4,-z,0","3/4,z,1/2","3/4,z,0","1/4,-z,1/2" ],"desc": "..2","geom": "line","label": "l","mult": 8 },{ "coord": [ "1/4,1/2,y","3/4,1/2,-y+1/2","3/4,1/2,-y","1/4,1/2,y+1/2" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "1/4,0,y","3/4,0,-y+1/2","3/4,0,-y","1/4,0,y+1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "x,1/2,0","-x,1/2,1/2","-x,1/2,0","x,1/2,1/2" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "x,0,0","-x,0,1/2","-x,0,0","x,0,1/2" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,-z,1/4","0,z,3/4" ],"desc": "mm2","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/2,1/4","3/4,1/2,1/4" ],"desc": ".2/m.","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,0,1/4","3/4,0,1/4" ],"desc": ".2/m.","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,0,0","3/4,0,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 67 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_68.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_68.json new file mode 100755 index 000000000000..465eeabde3f5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_68.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "68:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","-x,y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x+1/2,-y,z","-x,y,-z+1/2","x+1/2,-y,-z+1/2","-x,-y,-z","x+1/2,y,-z","x,-y,z+1/2","-x+1/2,y,z+1/2","x+1/2,y+1/2,z","-x,-y+1/2,z","-x+1/2,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z","x,y+1/2,-z","x+1/2,-y+1/2,z+1/2","-x,y+1/2,z+1/2" ],"hall": "-C 2a 2ac","hm": "C c c e :2","hmAlt": "C c c a :2","id": "C_c_c_e_2","jmolId": "68:2","set": 1,"sg": 68,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "1/4,0,z","3/4,0,-z+1/2","3/4,0,-z","1/4,0,z+1/2" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,1/4,z","0,1/4,-z+1/2","0,3/4,-z","0,3/4,z+1/2" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,y,1/4","1/2,-y,1/4","0,-y,3/4","1/2,y,3/4" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "x,1/4,1/4","-x+1/2,3/4,1/4","-x,3/4,3/4","x+1/2,1/4,3/4" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,0","1/2,0,0","0,0,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,3/4,0","1/4,1/4,0","3/4,3/4,1/2","3/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/4,3/4","0,3/4,1/4" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,1/4","0,3/4,3/4" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","x,-y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,-y+1/2,z","x,-y,-z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z","x,y+1/2,-z","-x,y,z+1/2","x,-y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z","x+1/2,-y+1/2,-z+1/2","-x+1/2,y,-z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y,-z","-x+1/2,y+1/2,z+1/2","x+1/2,-y,z+1/2" ],"hall": "-C 2a 2c","hm": "C c c e :2","hmAlt": "C c c b :2","id": "C_c_c_e_2","jmolId": "68:2ba-c","set": 2,"sg": 68,"trm": "b,a,-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "0,1/4,-z","0,3/4,z+1/2","0,3/4,z","0,1/4,-z+1/2" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/4,0,-z","1/4,0,z+1/2","3/4,0,z","3/4,0,-z+1/2" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "y,0,3/4","-y,1/2,3/4","-y,0,1/4","y,1/2,1/4" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,x,3/4","3/4,-x+1/2,3/4","3/4,-x,1/4","1/4,x+1/2,1/4" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,0","0,1/2,0","0,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0","3/4,3/4,1/2","1/4,3/4,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/4,0,1/4","3/4,0,3/4" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,0,3/4","3/4,0,1/4" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x+1/2,-y,z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x+1/2,-y,z","-x+1/2,y+1/2,-z","-x,-y,-z","-x,y+1/2,z","x+1/2,y,-z","x+1/2,-y+1/2,z","x,y+1/2,z+1/2","x,-y,-z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y,-z+1/2","-x,-y+1/2,-z+1/2","-x,y,z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y,z+1/2" ],"hall": "-A 2a 2b","hm": "A e a a :2","hmAlt": "A b a a :2","id": "A_e_a_a_2","jmolId": "68:2cab","set": 3,"sg": 68,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "z,1/4,0","-z+1/2,3/4,0","-z,3/4,0","z+1/2,1/4,0" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "z,0,1/4","-z+1/2,0,1/4","-z,0,3/4","z+1/2,0,3/4" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,0,y","1/4,1/2,-y","3/4,0,-y","3/4,1/2,y" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,x,1/4","1/4,-x+1/2,3/4","3/4,-x,3/4","3/4,x+1/2,1/4" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,0","0,1/2,0","1/2,0,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,1/4,3/4","0,1/4,1/4","1/2,3/4,3/4","1/2,3/4,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "3/4,0,1/4","1/4,0,3/4" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,0,1/4","3/4,0,3/4" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x+1/2,y,-z","-x,-y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x+1/2,y,-z","-x+1/2,-y,z+1/2","-x,-y,-z","-x,y,z+1/2","x+1/2,-y,z","x+1/2,y,-z+1/2","x,y+1/2,z+1/2","x,-y+1/2,-z","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,z","-x,-y+1/2,-z+1/2","-x,y+1/2,z","x+1/2,-y+1/2,z+1/2","x+1/2,y+1/2,-z" ],"hall": "-A 2ab 2b","hm": "A e a a :2","hmAlt": "A c a a :2","id": "A_e_a_a_2","jmolId": "68:2-cba","set": 4,"sg": 68,"trm": "-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "-z,0,1/4","z+1/2,0,3/4","z,0,3/4","-z+1/2,0,1/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "-z,1/4,0","z+1/2,1/4,0","z,3/4,0","-z+1/2,3/4,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "3/4,y,0","3/4,-y,1/2","1/4,-y,0","1/4,y,1/2" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "3/4,1/4,x","3/4,3/4,-x+1/2","1/4,3/4,-x","1/4,1/4,x+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,0","0,0,1/2","1/2,0,0","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,3/4,1/4","0,1/4,1/4","1/2,3/4,3/4","1/2,1/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/4,1/4,0","3/4,3/4,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,3/4,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","x,-y+1/2,-z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,-z+1/2","x,-y+1/2,-z","-x,-y+1/2,z+1/2","-x,-y,-z","x,-y,z+1/2","-x,y+1/2,z","x,y+1/2,-z+1/2","x+1/2,y,z+1/2","-x+1/2,y,-z","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,z","-x+1/2,-y,-z+1/2","x+1/2,-y,z","-x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z" ],"hall": "-B 2ab 2b","hm": "B b e b :2","hmAlt": "B b c b :2","id": "B_b_e_b_2","jmolId": "68:2bca","set": 5,"sg": 68,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "0,z,1/4","0,-z+1/2,3/4","0,-z,3/4","0,z+1/2,1/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/4,z,0","1/4,-z+1/2,0","3/4,-z,0","3/4,z+1/2,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "y,1/4,0","-y,1/4,1/2","-y,3/4,0","y,3/4,1/2" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,x","3/4,1/4,-x+1/2","3/4,3/4,-x","1/4,3/4,x+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,0","0,0,1/2","0,1/2,0","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,0,1/4","1/4,0,1/4","3/4,1/2,3/4","1/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/4,3/4,0","3/4,1/4,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,3/4,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","-x,-y+1/2,z","-x,-y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y,-z","-x,-y+1/2,z","x+1/2,-y+1/2,-z","-x,-y,-z","x+1/2,-y,z","x,y+1/2,-z","-x+1/2,y+1/2,z","x+1/2,y,z+1/2","-x,y,-z+1/2","-x+1/2,-y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x+1/2,-y,-z+1/2","x,-y,z+1/2","x+1/2,y+1/2,-z+1/2","-x,y+1/2,z+1/2" ],"hall": "-B 2b 2ab","hm": "B b e b :2","hmAlt": "B b a b :2","id": "B_b_e_b_2","jmolId": "68:2a-cb","set": 6,"sg": 68,"trm": "a,-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "1/4,-z,0","3/4,z+1/2,0","3/4,z,0","1/4,-z+1/2,0" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,-z,1/4","0,z+1/2,1/4","0,z,3/4","0,-z+1/2,3/4" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,3/4,y","1/2,3/4,-y","0,1/4,-y","1/2,1/4,y" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "x,3/4,1/4","-x+1/2,3/4,3/4","-x,1/4,3/4","x+1/2,1/4,1/4" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,0","1/2,0,0","0,1/2,0","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,0,3/4","1/4,0,1/4","3/4,1/2,3/4","3/4,1/2,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/4,1/4","0,3/4,3/4" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,3/4,1/4","0,1/4,3/4" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:a,b,c;0,1/4,1/4","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-x,y,-z","-x,-y+1/2,-z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-x,y,-z","x+1/2,-y+1/2,-z","-x,-y+1/2,-z+1/2","x+1/2,y,-z+1/2","x,-y+1/2,z+1/2","-x+1/2,y,z+1/2","x+1/2,y+1/2,z","-x,-y,z","-x+1/2,y+1/2,-z","x,-y,-z","-x+1/2,-y,-z+1/2","x,y+1/2,-z+1/2","x+1/2,-y,z+1/2","-x,y+1/2,z+1/2" ],"hall": "C 2 2 -1ac","hm": "C c c e :1","hmAlt": "C c c a :1","id": "C_c_c_e_1","jmolId": "68:1","set": 7,"sg": 68,"trm": "a,b,c;0,1/4,1/4","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "1/4,3/4,z+3/4","3/4,3/4,-z+1/4","3/4,3/4,-z+3/4","1/4,3/4,z+1/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z+3/4","0,0,-z+1/4","0,1/2,-z+3/4","0,1/2,z+1/4" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,y+3/4,0","1/2,-y+3/4,0","0,-y+3/4,1/2","1/2,y+3/4,1/2" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "x,0,0","-x+1/2,1/2,0","-x,1/2,1/2","x+1/2,0,1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,3/4,3/4","1/2,3/4,3/4","0,3/4,1/4","1/2,3/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/2,3/4","1/4,0,3/4","3/4,1/2,1/4","3/4,0,1/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:b,a,-c;0,1/4,1/4","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","x,-y,-z","-x+1/2,-y,-z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","x,-y,-z","-x+1/2,y+1/2,-z","-x+1/2,-y,-z+1/2","x,y+1/2,-z+1/2","-x+1/2,y,z+1/2","x,-y+1/2,z+1/2","x+1/2,y+1/2,z","-x,-y,z","x+1/2,-y+1/2,-z","-x,y,-z","-x,-y+1/2,-z+1/2","x+1/2,y,-z+1/2","-x,y+1/2,z+1/2","x+1/2,-y,z+1/2" ],"hall": "C 2 2 -1ac","hm": "C c c e :1","hmAlt": "C c c b :1","id": "C_c_c_e_1","jmolId": "68:1","set": 8,"sg": 68,"trm": "b,a,-c;0,1/4,1/4","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "3/4,1/4,-z+1/4","3/4,3/4,z+3/4","3/4,3/4,z+1/4","3/4,1/4,-z+3/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,-z+1/4","0,0,z+3/4","1/2,0,z+1/4","1/2,0,-z+3/4" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "y+3/4,0,0","-y+3/4,1/2,0","-y+3/4,0,1/2","y+3/4,1/2,1/2" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,x,0","1/2,-x+1/2,0","1/2,-x,1/2","0,x+1/2,1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,0,1/4","3/4,1/2,1/4","3/4,0,3/4","3/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/2,1/4,1/4","0,1/4,1/4","1/2,3/4,3/4","0,3/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","1/2,0,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:c,a,b;0,1/4,1/4","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,z","-x+1/2,-y,-z+1/2","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y+1/2,-z+1/2","-x,-y,z","-x,y+1/2,-z+1/2","-x+1/2,-y,-z+1/2","-x+1/2,y+1/2,z","x+1/2,y,-z+1/2","x+1/2,-y+1/2,z","x,y+1/2,z+1/2","x,-y,-z","-x,-y+1/2,z+1/2","-x,y,-z","-x+1/2,-y+1/2,-z","-x+1/2,y,z+1/2","x+1/2,y+1/2,-z","x+1/2,-y,z+1/2" ],"hall": "A 2 2 -1ab","hm": "A e a a :1","hmAlt": "A b a a :1","id": "A_e_a_a_1","jmolId": "68:1cab","set": 9,"sg": 68,"trm": "c,a,b;0,1/4,1/4","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "z+3/4,1/4,3/4","-z+1/4,3/4,3/4","-z+3/4,3/4,3/4","z+1/4,1/4,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "z+3/4,0,0","-z+1/4,0,0","-z+3/4,0,1/2","z+1/4,0,1/2" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,y+3/4","0,1/2,-y+3/4","1/2,0,-y+3/4","1/2,1/2,y+3/4" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,x,0","0,-x+1/2,1/2","1/2,-x,1/2","1/2,x+1/2,0" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,0,3/4","3/4,1/2,3/4","1/4,0,3/4","1/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,1/2","3/4,1/4,0","1/4,3/4,1/2","1/4,3/4,0" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,0,0","0,0,1/2" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:-c,b,a;0,1/4,1/4","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z+1/2","-x,y,-z","-x+1/2,-y+1/2,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y+1/2,-z+1/2","-x,y,-z","-x,-y+1/2,z+1/2","-x+1/2,-y+1/2,-z","-x+1/2,y,z+1/2","x+1/2,-y+1/2,z","x+1/2,y,-z+1/2","x,y+1/2,z+1/2","x,-y,-z","-x,y+1/2,-z+1/2","-x,-y,z","-x+1/2,-y,-z+1/2","-x+1/2,y+1/2,z","x+1/2,-y,z+1/2","x+1/2,y+1/2,-z" ],"hall": "A 2 2 -1ab","hm": "A e a a :1","hmAlt": "A c a a :1","id": "A_e_a_a_1","jmolId": "68:1cab","set": 10,"sg": 68,"trm": "-c,b,a;0,1/4,1/4","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "-z+1/4,3/4,1/4","z+3/4,3/4,3/4","z+1/4,3/4,3/4","-z+3/4,3/4,1/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "-z+1/4,0,0","z+3/4,0,0","z+1/4,1/2,0","-z+3/4,1/2,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,y+3/4,0","0,-y+3/4,1/2","1/2,-y+3/4,0","1/2,y+3/4,1/2" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,x","0,1/2,-x+1/2","1/2,1/2,-x","1/2,0,x+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,3/4,0","1/4,3/4,1/2","3/4,3/4,0","3/4,3/4,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/2,1/4","1/4,0,1/4","3/4,1/2,3/4","3/4,0,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "1/2,0,0","0,1/2,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:b,c,a;0,1/4,1/4","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z+1/2","x,-y,-z","-x+1/2,-y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y,-z+1/2","x,-y,-z","-x+1/2,-y,z+1/2","-x+1/2,-y+1/2,-z","x,-y+1/2,z+1/2","-x+1/2,y+1/2,z","x,y+1/2,-z+1/2","x+1/2,y,z+1/2","-x,y,-z","x+1/2,-y,-z+1/2","-x,-y,z","-x,-y+1/2,-z+1/2","x+1/2,-y+1/2,z","-x,y+1/2,z+1/2","x+1/2,y+1/2,-z" ],"hall": "B 2 2 -1ab","hm": "B b e b :1","hmAlt": "B b c b :1","id": "B_b_e_b_1","jmolId": "68:1bca","set": 11,"sg": 68,"trm": "b,c,a;0,1/4,1/4","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "3/4,z+3/4,1/4","3/4,-z+1/4,3/4","3/4,-z+3/4,3/4","3/4,z+1/4,1/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,z+3/4,0","0,-z+1/4,0","1/2,-z+3/4,0","1/2,z+1/4,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "y+3/4,0,0","-y+3/4,0,1/2","-y+3/4,1/2,0","y+3/4,1/2,1/2" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,x","1/2,0,-x+1/2","1/2,1/2,-x","0,1/2,x+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,3/4,0","3/4,3/4,1/2","3/4,1/4,0","3/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/2,3/4,1/4","0,3/4,1/4","1/2,1/4,3/4","0,1/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "68:a,-c,b;0,1/4,1/4","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z+1/2","-x,-y,z","-x,-y+1/2,-z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y,-z+1/2","-x,-y,z","x+1/2,-y,-z+1/2","-x,-y+1/2,-z+1/2","x+1/2,-y+1/2,z","x,y+1/2,-z+1/2","-x+1/2,y+1/2,z","x+1/2,y,z+1/2","-x,y,-z","-x+1/2,-y,z+1/2","x,-y,-z","-x+1/2,-y+1/2,-z","x,-y+1/2,z+1/2","x+1/2,y+1/2,-z","-x,y+1/2,z+1/2" ],"hall": "B 2 2 -1ab","hm": "B b e b :1","hmAlt": "B b a b :1","id": "B_b_e_b_1","jmolId": "68:1bca","set": 12,"sg": 68,"trm": "a,-c,b;0,1/4,1/4","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "1/4,-z+1/4,3/4","3/4,z+3/4,3/4","3/4,z+1/4,3/4","1/4,-z+3/4,3/4" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,-z+1/4,0","0,z+3/4,0","0,z+1/4,1/2","0,-z+3/4,1/2" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,y+3/4","1/2,0,-y+3/4","0,1/2,-y+3/4","1/2,1/2,y+3/4" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "x,0,0","-x+1/2,0,1/2","-x,1/2,1/2","x+1/2,1/2,0" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,1/4,3/4","1/2,1/4,3/4","0,3/4,3/4","1/2,3/4,3/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,1/2","1/4,1/4,0","3/4,3/4,1/2","3/4,3/4,0" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,0","0,0,1/2" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } } ],"n": 12,"sg": 68 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_69.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_69.json new file mode 100755 index 000000000000..3bf678a729cd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_69.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "69:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "-F 2 2","hm": "F m m m","id": "F_m_m_m","jmolId": "69","set": 1,"sg": 69,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "p","mult": 32 },{ "coord": [ "x,y,0","-x,-y,0","-x,y,0","x,-y,0" ],"desc": "..m","geom": "plane","label": "o","mult": 16 },{ "coord": [ "x,0,z","-x,0,z","-x,0,-z","x,0,-z" ],"desc": ".m.","geom": "plane","label": "n","mult": 16 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z" ],"desc": "m..","geom": "plane","label": "m","mult": 16 },{ "coord": [ "x,1/4,1/4","-x,3/4,1/4","-x,3/4,3/4","x,1/4,3/4" ],"desc": "2..","geom": "line","label": "l","mult": 16 },{ "coord": [ "1/4,y,1/4","3/4,-y,1/4","3/4,-y,3/4","1/4,y,3/4" ],"desc": ".2.","geom": "line","label": "k","mult": 16 },{ "coord": [ "1/4,1/4,z","3/4,1/4,-z","3/4,3/4,-z","1/4,3/4,z" ],"desc": "..2","geom": "line","label": "j","mult": 16 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "mm2","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": "m2m","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,0,0","-x,0,0" ],"desc": "2mm","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "222","geom": "point","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,0","3/4,1/4,0" ],"desc": "..2/m","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/4,0,1/4","3/4,0,1/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4" ],"desc": "2/m..","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2" ],"desc": "mmm","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "mmm","geom": "point","label": "a","mult": 4 } ] } } ],"n": 1,"sg": 69 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_7.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_7.json new file mode 100755 index 000000000000..d69861d088e2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_7.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "7:a,b,c","det": 1.0,"gen": [ "x,y,z","x,-y,z+1/2" ],"gp": [ "x,y,z","x,-y,z+1/2" ],"hall": "P -2yc","hm": "P 1 c 1","id": "P_1_c_1","jmolId": "7:b1","set": 1,"sg": 7,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:-a-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,z+1/2" ],"hall": "P -2yac","hm": "P 1 n 1","id": "P_1_n_1","jmolId": "7:b2","set": 2,"sg": 7,"trm": "-a-c,b,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:c,b,-a-c","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,z" ],"gp": [ "x,y,z","x+1/2,-y,z" ],"hall": "P -2ya","hm": "P 1 a 1","id": "P_1_a_1","jmolId": "7:b3","set": 3,"sg": 7,"trm": "c,b,-a-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,y,-z" ],"gp": [ "x,y,z","x+1/2,y,-z" ],"hall": "P -2a","hm": "P 1 1 a","id": "P_1_1_a","jmolId": "7:c1","set": 4,"sg": 7,"trm": "c,a,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:a,-a-c,b","det": 1.0,"gen": [ "x,y,z","x+1/2,y+1/2,-z" ],"gp": [ "x,y,z","x+1/2,y+1/2,-z" ],"hall": "P -2ab","hm": "P 1 1 n","id": "P_1_1_n","jmolId": "7:c2","set": 5,"sg": 7,"trm": "a,-a-c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:-a-c,c,b","det": 1.0,"gen": [ "x,y,z","x,y+1/2,-z" ],"gp": [ "x,y,z","x,y+1/2,-z" ],"hall": "P -2b","hm": "P 1 1 b","id": "P_1_1_b","jmolId": "7:c3","set": 6,"sg": 7,"trm": "-a-c,c,b","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,z" ],"gp": [ "x,y,z","-x,y+1/2,z" ],"hall": "P -2xb","hm": "P b 1 1","id": "P_b_1_1","jmolId": "7:a1","set": 7,"sg": 7,"trm": "b,c,a","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:b,a,-a-c","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,z+1/2" ],"hall": "P -2xbc","hm": "P n 1 1","id": "P_n_1_1","jmolId": "7:a2","set": 8,"sg": 7,"trm": "b,a,-a-c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:b,-a-c,c","det": 1.0,"gen": [ "x,y,z","-x,y,z+1/2" ],"gp": [ "x,y,z","-x,y,z+1/2" ],"hall": "P -2xc","hm": "P c 1 1","id": "P_c_1_1","jmolId": "7:a3","set": 9,"sg": 7,"trm": "b,-a-c,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 2 } ] } },{ "clegId": "7:c,-b,a","det": 1.0,"hm": "P 1 a 1 :1","id": "P_1_a_1_1","more": true,"sg": 7,"trm": "c,-b,a" },{ "clegId": "7:a,-b,-a-c","det": 1.0,"hm": "P 1 n 1 :2","id": "P_1_n_1_2","more": true,"sg": 7,"trm": "a,-b,-a-c" },{ "clegId": "7:-a-c,-b,c","det": 1.0,"hm": "P 1 c 1 :3","id": "P_1_c_1_3","more": true,"sg": 7,"trm": "-a-c,-b,c" },{ "clegId": "7:a,c,-b","det": 1.0,"hm": "P 1 1 b :1","id": "P_1_1_b_1","more": true,"sg": 7,"trm": "a,c,-b" },{ "clegId": "7:-a-c,a,-b","det": 1.0,"hm": "P 1 1 n :2","id": "P_1_1_n_2","more": true,"sg": 7,"trm": "-a-c,a,-b" },{ "clegId": "7:c,-a-c,-b","det": 1.0,"hm": "P 1 1 a :3","id": "P_1_1_a_3","more": true,"sg": 7,"trm": "c,-a-c,-b" },{ "clegId": "7:-b,a,c","det": 1.0,"hm": "P c 1 1 :1","id": "P_c_1_1_1","more": true,"sg": 7,"trm": "-b,a,c" },{ "clegId": "7:-b,-a-c,a","det": 1.0,"hm": "P n 1 1 :2","id": "P_n_1_1_2","more": true,"sg": 7,"trm": "-b,-a-c,a" },{ "clegId": "7:-b,c,-a-c","det": 1.0,"hm": "P b 1 1 :3","id": "P_b_1_1_3","more": true,"sg": 7,"trm": "-b,c,-a-c" } ],"n": 18,"sg": 7 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_70.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_70.json new file mode 100755 index 000000000000..33a23297067d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_70.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "70:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+3/4,-y+3/4,z","-x+3/4,y,-z+3/4","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+3/4,-y+3/4,z","-x+3/4,y,-z+3/4","x,-y+3/4,-z+3/4","-x,-y,-z","x+1/4,y+1/4,-z","x+1/4,-y,z+1/4","-x,y+1/4,z+1/4","x,y+1/2,z+1/2","-x+3/4,-y+1/4,z+1/2","-x+3/4,y+1/2,-z+1/4","x,-y+1/4,-z+1/4","-x,-y+1/2,-z+1/2","x+1/4,y+3/4,-z+1/2","x+1/4,-y+1/2,z+3/4","-x,y+3/4,z+3/4","x+1/2,y,z+1/2","-x+1/4,-y+3/4,z+1/2","-x+1/4,y,-z+1/4","x+1/2,-y+3/4,-z+1/4","-x+1/2,-y,-z+1/2","x+3/4,y+1/4,-z+1/2","x+3/4,-y,z+3/4","-x+1/2,y+1/4,z+3/4","x+1/2,y+1/2,z","-x+1/4,-y+1/4,z","-x+1/4,y+1/2,-z+3/4","x+1/2,-y+1/4,-z+3/4","-x+1/2,-y+1/2,-z","x+3/4,y+3/4,-z","x+3/4,-y+1/2,z+1/4","-x+1/2,y+3/4,z+1/4" ],"hall": "-F 2uv 2vw","hm": "F d d d :2","id": "F_d_d_d_2","jmolId": "70:2","set": 1,"sg": 70,"trm": "a,b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 32 },{ "coord": [ "1/8,1/8,z","5/8,1/8,-z+3/4","7/8,7/8,-z","3/8,7/8,z+1/4" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/8,y,1/8","5/8,-y+3/4,1/8","7/8,-y,7/8","3/8,y+1/4,7/8" ],"desc": ".2.","geom": "line","label": "f","mult": 16 },{ "coord": [ "x,1/8,1/8","-x+3/4,5/8,1/8","-x,7/8,7/8","x+1/4,3/8,7/8" ],"desc": "2..","geom": "line","label": "e","mult": 16 },{ "coord": [ "1/2,1/2,1/2","1/4,1/4,1/2","1/4,1/2,1/4","1/2,1/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 16 },{ "coord": [ "0,0,0","3/4,3/4,0","3/4,0,3/4","0,3/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 16 },{ "coord": [ "1/8,1/8,5/8","7/8,7/8,3/8" ],"desc": "222","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/8,1/8,1/8","7/8,7/8,7/8" ],"desc": "222","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "70:a,b,c;-1/8,-1/8,-1/8","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","-x+1/4,-y+1/4,-z+1/4","x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","-x+1/4,-y+1/4,-z+1/4","x+1/4,y+1/4,-z+1/4","x+1/4,-y+1/4,z+1/4","-x+1/4,y+1/4,z+1/4","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x+1/4,-y+3/4,-z+3/4","x+1/4,y+3/4,-z+3/4","x+1/4,-y+3/4,z+3/4","-x+1/4,y+3/4,z+3/4","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2","-x+3/4,-y+1/4,-z+3/4","x+3/4,y+1/4,-z+3/4","x+3/4,-y+1/4,z+3/4","-x+3/4,y+1/4,z+3/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x+3/4,-y+3/4,-z+1/4","x+3/4,y+3/4,-z+1/4","x+3/4,-y+3/4,z+1/4","-x+3/4,y+3/4,z+1/4" ],"hall": "F 2 2 -1d","hm": "F d d d :1","id": "F_d_d_d_1","jmolId": "70:1","set": 2,"sg": 70,"trm": "a,b,c;-1/8,-1/8,-1/8","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 32 },{ "coord": [ "1/4,1/4,z+1/8","3/4,1/4,-z+7/8","0,0,-z+1/8","1/2,0,z+3/8" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "1/4,y+1/8,1/4","3/4,-y+7/8,1/4","0,-y+1/8,0","1/2,y+3/8,0" ],"desc": ".2.","geom": "line","label": "f","mult": 16 },{ "coord": [ "x+1/8,1/4,1/4","-x+7/8,3/4,1/4","-x+1/8,0,0","x+3/8,1/2,0" ],"desc": "2..","geom": "line","label": "e","mult": 16 },{ "coord": [ "5/8,5/8,5/8","3/8,3/8,5/8","3/8,5/8,3/8","5/8,3/8,3/8" ],"desc": "-1","geom": "point","label": "d","mult": 16 },{ "coord": [ "1/8,1/8,1/8","7/8,7/8,1/8","7/8,1/8,7/8","1/8,7/8,7/8" ],"desc": "-1","geom": "point","label": "c","mult": 16 },{ "coord": [ "1/4,1/4,3/4","0,0,1/2" ],"desc": "222","geom": "point","label": "b","mult": 8 },{ "coord": [ "1/4,1/4,1/4","0,0,0" ],"desc": "222","geom": "point","label": "a","mult": 8 } ] } } ],"n": 2,"sg": 70 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_71.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_71.json new file mode 100755 index 000000000000..0d7db399e9f2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_71.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "71:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x,y,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x,y,-z","x,-y,-z","-x,-y,-z","x,y,-z","x,-y,z","-x,y,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "-I 2 2","hm": "I m m m","id": "I_m_m_m","jmolId": "71","set": 1,"sg": 71,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "o","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-x,y,0","x,-y,0" ],"desc": "..m","geom": "plane","label": "n","mult": 8 },{ "coord": [ "x,0,z","-x,0,z","-x,0,-z","x,0,-z" ],"desc": ".m.","geom": "plane","label": "m","mult": 8 },{ "coord": [ "0,y,z","0,-y,z","0,y,-z","0,-y,-z" ],"desc": "m..","geom": "plane","label": "l","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,3/4","1/4,3/4,3/4" ],"desc": "-1","geom": "point","label": "k","mult": 8 },{ "coord": [ "1/2,0,z","1/2,0,-z" ],"desc": "mm2","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "mm2","geom": "line","label": "i","mult": 4 },{ "coord": [ "0,y,1/2","0,-y,1/2" ],"desc": "m2m","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,y,0","0,-y,0" ],"desc": "m2m","geom": "line","label": "g","mult": 4 },{ "coord": [ "x,1/2,0","-x,1/2,0" ],"desc": "2mm","geom": "line","label": "f","mult": 4 },{ "coord": [ "x,0,0","-x,0,0" ],"desc": "2mm","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/2,0,1/2" ],"desc": "mmm","geom": "point","label": "d","mult": 2 },{ "coord": [ "1/2,1/2,0" ],"desc": "mmm","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,1/2,1/2" ],"desc": "mmm","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "mmm","geom": "point","label": "a","mult": 2 } ] } } ],"n": 1,"sg": 71 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_72.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_72.json new file mode 100755 index 000000000000..de78a94d4284 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_72.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "72:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","-x,-y,-z","x,y,-z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-x,y,-z+1/2","x,-y,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","x,-y,z+1/2","-x,y,z+1/2" ],"hall": "-I 2 2c","hm": "I b a m","id": "I_b_a_m","jmolId": "72","set": 1,"sg": 72,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-x+1/2,y+1/2,0","x+1/2,-y+1/2,0" ],"desc": "..m","geom": "plane","label": "j","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z","0,1/2,-z","1/2,0,z" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,0,z","1/2,1/2,-z","0,0,-z","1/2,1/2,z" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,y,1/4","0,-y,1/4","0,-y,3/4","0,y,3/4" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "x,0,1/4","-x,0,1/4","-x,0,3/4","x,0,3/4" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","1/4,3/4,3/4","3/4,1/4,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/2,0,0","0,1/2,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "..2/m","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,1/4","1/2,0,3/4" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "72:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z","-x,-y+1/2,z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z","-x,-y+1/2,z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z","-x,y,z","x,y+1/2,-z+1/2","x,-y+1/2,z+1/2","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y,z","-x+1/2,y,-z","-x+1/2,-y+1/2,-z+1/2","-x+1/2,y+1/2,z+1/2","x+1/2,y,-z","x+1/2,-y,z" ],"hall": "-I 2a 2","hm": "I m c b","id": "I_m_c_b","jmolId": "72:cab","set": 2,"sg": 72,"trm": "c,a,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "0,x,y","0,-x,-y","0,-x+1/2,y+1/2","0,x+1/2,-y+1/2" ],"desc": "..m","geom": "plane","label": "j","mult": 8 },{ "coord": [ "z,0,1/2","-z,1/2,0","-z,0,1/2","z,1/2,0" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "z,0,0","-z,1/2,1/2","-z,0,0","z,1/2,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "1/4,0,y","1/4,0,-y","3/4,0,-y","3/4,0,y" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,x,0","1/4,-x,0","3/4,-x,0","3/4,x,0" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,1/4","1/4,3/4,3/4","3/4,1/4,3/4","3/4,3/4,1/4" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,1/2,0","0,0,1/2" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "..2/m","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,1/2,0","3/4,1/2,0" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "1/4,0,0","3/4,0,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "72:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,-z","x+1/2,-y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z","x+1/2,-y,-z+1/2","-x+1/2,-y,z+1/2","-x,-y,-z","x,-y,z","-x+1/2,y,z+1/2","x+1/2,y,-z+1/2","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x,-y+1/2,-z","-x,-y+1/2,z","-x+1/2,-y+1/2,-z+1/2","x+1/2,-y+1/2,z+1/2","-x,y+1/2,z","x,y+1/2,-z" ],"hall": "-I 2b 2b","hm": "I c m a","id": "I_c_m_a","jmolId": "72:bca","set": 3,"sg": 72,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "y,0,x","-y,0,-x","y+1/2,0,-x+1/2","-y+1/2,0,x+1/2" ],"desc": "..m","geom": "plane","label": "j","mult": 8 },{ "coord": [ "1/2,z,0","0,-z,1/2","1/2,-z,0","0,z,1/2" ],"desc": "..2","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,z,0","1/2,-z,1/2","0,-z,0","1/2,z,1/2" ],"desc": "..2","geom": "line","label": "h","mult": 8 },{ "coord": [ "y,1/4,0","-y,1/4,0","-y,3/4,0","y,3/4,0" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/4,x","0,1/4,-x","0,3/4,-x","0,3/4,x" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,1/4,3/4","3/4,3/4,1/4","1/4,3/4,3/4" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,0,1/2","1/2,0,0" ],"desc": "..2/m","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","1/2,0,1/2" ],"desc": "..2/m","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/4,1/2","0,3/4,1/2" ],"desc": "222","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,0","0,3/4,0" ],"desc": "222","geom": "point","label": "a","mult": 4 } ] } } ],"n": 3,"sg": 72 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_73.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_73.json new file mode 100755 index 000000000000..a5ff54b71c5d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_73.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "73:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-x,y+1/2,-z+1/2","x+1/2,-y+1/2,-z","-x,-y,-z","x+1/2,y,-z+1/2","x,-y+1/2,z+1/2","-x+1/2,y+1/2,z","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-x+1/2,y,-z","x,-y,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x,y+1/2,-z","x+1/2,-y,z","-x,y,z+1/2" ],"hall": "-I 2b 2c","hm": "I b c a","id": "I_b_c_a","jmolId": "73","set": 1,"sg": 73,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 16 },{ "coord": [ "0,1/4,z","0,3/4,-z+1/2","0,3/4,-z","0,1/4,z+1/2" ],"desc": "..2","geom": "line","label": "e","mult": 8 },{ "coord": [ "1/4,y,0","1/4,-y,1/2","3/4,-y,0","3/4,y,1/2" ],"desc": ".2.","geom": "line","label": "d","mult": 8 },{ "coord": [ "x,0,1/4","-x+1/2,0,3/4","-x,0,3/4","x+1/2,0,1/4" ],"desc": "2..","geom": "line","label": "c","mult": 8 },{ "coord": [ "1/4,1/4,1/4","1/4,3/4,3/4","3/4,3/4,1/4","3/4,1/4,3/4" ],"desc": "-1","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,0","1/2,0,1/2","0,1/2,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "73:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","x+1/2,-y,-z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","x+1/2,-y,-z+1/2","-x+1/2,y+1/2,-z","-x,-y,-z","x,y+1/2,-z+1/2","-x+1/2,y,z+1/2","x+1/2,-y+1/2,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y,z","x,-y+1/2,-z","-x,y,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y,-z","-x,y+1/2,z","x,-y,z+1/2" ],"hall": "-I 2a 2b","hm": "I c a b","id": "I_c_a_b","jmolId": "73:ba-c","set": 2,"sg": 73,"trm": "b,a,-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 16 },{ "coord": [ "1/4,0,-z","3/4,0,z+1/2","3/4,0,z","1/4,0,-z+1/2" ],"desc": "..2","geom": "line","label": "e","mult": 8 },{ "coord": [ "y,1/4,0","-y,1/4,1/2","-y,3/4,0","y,3/4,1/2" ],"desc": ".2.","geom": "line","label": "d","mult": 8 },{ "coord": [ "0,x,3/4","0,-x+1/2,1/4","0,-x,1/4","0,x+1/2,3/4" ],"desc": "2..","geom": "line","label": "c","mult": 8 },{ "coord": [ "1/4,1/4,3/4","3/4,1/4,1/4","3/4,3/4,3/4","1/4,3/4,1/4" ],"desc": "-1","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,0","0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"desc": "-1","geom": "point","label": "a","mult": 8 } ] } } ],"n": 2,"sg": 73 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_74.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_74.json new file mode 100755 index 000000000000..18f1873935b6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_74.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "74:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y+1/2,z","-x,y+1/2,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z","-x,y+1/2,-z","x,-y,-z","-x,-y,-z","x,y+1/2,-z","x,-y+1/2,z","-x,y,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y,z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y,-z+1/2","x+1/2,-y,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "-I 2b 2","hm": "I m m a","id": "I_m_m_a","jmolId": "74","set": 1,"sg": 74,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "x,1/4,z","-x,1/4,z","-x,3/4,-z","x,3/4,-z" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "0,y,z","0,-y+1/2,z","0,y+1/2,-z","0,-y,-z" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "1/4,y,1/4","3/4,-y+1/2,1/4","3/4,-y,3/4","1/4,y+1/2,3/4" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "x,0,0","-x,1/2,0","-x,0,0","x,1/2,0" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,1/4,z","0,3/4,-z" ],"desc": "mm2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,3/4","3/4,1/4,3/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,1/4,1/4" ],"desc": ".2/m.","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "74:b,a,-c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z","x+1/2,-y,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z","x+1/2,-y,-z","-x,y,-z","-x,-y,-z","x+1/2,y,-z","-x+1/2,y,z","x,-y,z","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z+1/2","x,-y+1/2,-z+1/2","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","-x,y+1/2,z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "-I 2a 2a","hm": "I m m b","id": "I_m_m_b","jmolId": "74:ba-c","set": 2,"sg": 74,"trm": "b,a,-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "1/4,x,-z","1/4,-x,-z","3/4,-x,z","3/4,x,z" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "y,0,-z","-y+1/2,0,-z","y+1/2,0,z","-y,0,z" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "y,1/4,3/4","-y+1/2,3/4,3/4","-y,3/4,1/4","y+1/2,1/4,1/4" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,x,0","1/2,-x,0","0,-x,0","1/2,x,0" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,0,-z","3/4,0,z" ],"desc": "mm2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,1/4","1/4,3/4,1/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,3/4","1/4,3/4,3/4" ],"desc": ".2/m.","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "74:c,a,b","det": 1.0,"gen": [ "x,y,z","x,-y,-z+1/2","-x,-y,z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,-z+1/2","-x,-y,z+1/2","-x,y,-z","-x,-y,-z","-x,y,z+1/2","x,y,-z+1/2","x,-y,z","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,-z","-x+1/2,-y+1/2,z","-x+1/2,y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","-x+1/2,y+1/2,z","x+1/2,y+1/2,-z","x+1/2,-y+1/2,z+1/2" ],"hall": "-I 2c 2c","hm": "I b m m","id": "I_b_m_m","jmolId": "74:cab","set": 3,"sg": 74,"trm": "c,a,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "z,x,1/4","z,-x,1/4","-z,-x,3/4","-z,x,3/4" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "z,0,y","z,0,-y+1/2","-z,0,y+1/2","-z,0,-y" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "1/4,1/4,y","1/4,3/4,-y+1/2","3/4,3/4,-y","3/4,1/4,y+1/2" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,x,0","0,-x,1/2","0,-x,0","0,x,1/2" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "z,0,1/4","-z,0,3/4" ],"desc": "mm2","geom": "line","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,1/4","3/4,3/4,1/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4","1/4,3/4,1/4" ],"desc": ".2/m.","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "74:-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y+1/2,-z","-x,y+1/2,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y+1/2,-z","-x,y+1/2,-z","-x,-y,z","-x,-y,-z","-x,y+1/2,z","x,-y+1/2,z","x,y,-z","x+1/2,y+1/2,z+1/2","x+1/2,-y,-z+1/2","-x+1/2,y,-z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,-y+1/2,-z+1/2","-x+1/2,y,z+1/2","x+1/2,-y,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "-I 2 2b","hm": "I c m m","id": "I_c_m_m","jmolId": "74:-cba","set": 4,"sg": 74,"trm": "-c,b,a","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "-z,1/4,x","-z,1/4,-x","z,3/4,-x","z,3/4,x" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "-z,y,0","-z,-y+1/2,0","z,y+1/2,0","z,-y,0" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "3/4,y,1/4","3/4,-y+1/2,3/4","1/4,-y,3/4","1/4,y+1/2,1/4" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,x","0,1/2,-x","0,0,-x","0,1/2,x" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "-z,1/4,0","z,3/4,0" ],"desc": "mm2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,1/4","1/4,1/4,3/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,1/4","3/4,1/4,3/4" ],"desc": ".2/m.","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,0,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "74:b,c,a","det": 1.0,"gen": [ "x,y,z","-x+1/2,y,-z","x+1/2,-y,-z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,y,-z","x+1/2,-y,-z","-x,-y,z","-x,-y,-z","x+1/2,-y,z","-x+1/2,y,z","x,y,-z","x+1/2,y+1/2,z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","-x+1/2,-y+1/2,z+1/2","-x+1/2,-y+1/2,-z+1/2","x,-y+1/2,z+1/2","-x,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "-I 2 2a","hm": "I m c m","id": "I_m_c_m","jmolId": "74:bca","set": 5,"sg": 74,"trm": "b,c,a","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "1/4,z,x","1/4,z,-x","3/4,-z,-x","3/4,-z,x" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "y,z,0","-y+1/2,z,0","y+1/2,-z,0","-y,-z,0" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "y,1/4,1/4","-y+1/2,1/4,3/4","-y,3/4,3/4","y+1/2,3/4,1/4" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,0,x","1/2,0,-x","0,0,-x","1/2,0,x" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,z,0","3/4,-z,0" ],"desc": "mm2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,1/4","1/4,3/4,3/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4","1/4,1/4,3/4" ],"desc": ".2/m.","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "74:a,-c,b","det": 1.0,"gen": [ "x,y,z","-x,y,-z+1/2","-x,-y,z+1/2","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,-z+1/2","-x,-y,z+1/2","x,-y,-z","-x,-y,-z","x,-y,z+1/2","x,y,-z+1/2","-x,y,z","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,-z","-x+1/2,-y+1/2,z","x+1/2,-y+1/2,-z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,-y+1/2,z","x+1/2,y+1/2,-z","-x+1/2,y+1/2,z+1/2" ],"hall": "-I 2c 2","hm": "I m a m","id": "I_m_a_m","jmolId": "74:a-cb","set": 6,"sg": 74,"trm": "a,-c,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "j","mult": 16 },{ "coord": [ "x,-z,1/4","-x,-z,1/4","-x,z,3/4","x,z,3/4" ],"desc": ".m.","geom": "plane","label": "i","mult": 8 },{ "coord": [ "0,-z,y","0,-z,-y+1/2","0,z,y+1/2","0,z,-y" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "1/4,3/4,y","3/4,3/4,-y+1/2","3/4,1/4,-y","1/4,1/4,y+1/2" ],"desc": ".2.","geom": "line","label": "g","mult": 8 },{ "coord": [ "x,0,0","-x,0,1/2","-x,0,0","x,0,1/2" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,-z,1/4","0,z,3/4" ],"desc": "mm2","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,1/4,1/4" ],"desc": ".2/m.","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,3/4,1/4","3/4,3/4,1/4" ],"desc": ".2/m.","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } } ],"n": 6,"sg": 74 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_75.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_75.json new file mode 100755 index 000000000000..b125d14d7578 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_75.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "75:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z" ],"hall": "P 4","hm": "P 4","id": "P_4","jmolId": "75","set": 1,"sg": 75,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z" ],"desc": "2..","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,z" ],"desc": "4..","geom": "line","label": "b","mult": 1 },{ "coord": [ "0,0,z" ],"desc": "4..","geom": "line","label": "a","mult": 1 } ] } },{ "clegId": "75:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z" ],"hall": "C 4","hm": "C 4","id": "C_4","jmolId": "75:c","set": 2,"sg": 75,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,z" ],"desc": "4..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z" ],"desc": "4..","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "75:a+b,-a+b,c","det": 2.0,"hm": "C 4","id": "C_4","more": true,"sg": 75,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 75 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_76.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_76.json new file mode 100755 index 000000000000..95777bda30b8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_76.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "76:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x,z+1/4" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x,z+1/4","y,-x,z+3/4" ],"hall": "P 4w","hm": "P 41","id": "P_41","jmolId": "76","set": 1,"sg": 76,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "76:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x,z+1/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/4" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x,z+1/4","y,-x,z+3/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/4","y+1/2,-x+1/2,z+3/4" ],"hall": "C 4w","hm": "C 41","id": "C_41","jmolId": "76:c","set": 2,"sg": 76,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 8 } ] } },{ "clegId": "76:a+b,-a+b,c","det": 2.0,"hm": "C 41","id": "C_41","more": true,"sg": 76,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 76 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_77.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_77.json new file mode 100755 index 000000000000..b2f38f9b3db8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_77.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "77:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2" ],"hall": "P 4c","hm": "P 42","id": "P_42","jmolId": "77","set": 1,"sg": 77,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "2..","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "77:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2" ],"hall": "C 4c","hm": "C 42","id": "C_42","jmolId": "77:c","set": 2,"sg": 77,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2" ],"desc": "2..","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2" ],"desc": "2..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "77:a+b,-a+b,c","det": 2.0,"hm": "C 42","id": "C_42","more": true,"sg": 77,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 77 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_78.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_78.json new file mode 100755 index 000000000000..eee747502de1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_78.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "78:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x,z+3/4" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x,z+3/4","y,-x,z+1/4" ],"hall": "P 4cw","hm": "P 43","id": "P_43","jmolId": "78","set": 1,"sg": 78,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "78:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x,z+3/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+3/4" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x,z+3/4","y,-x,z+1/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+3/4","y+1/2,-x+1/2,z+1/4" ],"hall": "C 4cw","hm": "C 43","id": "C_43","jmolId": "78:c","set": 2,"sg": 78,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 8 } ] } },{ "clegId": "78:a+b,-a+b,c","det": 2.0,"hm": "C 43","id": "C_43","more": true,"sg": 78,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 78 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_79.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_79.json new file mode 100755 index 000000000000..295fb888a3fa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_79.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "79:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2" ],"hall": "I 4","hm": "I 4","id": "I_4","jmolId": "79","set": 1,"sg": 79,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z" ],"desc": "2..","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,0,z" ],"desc": "4..","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "79:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2" ],"hall": "F 4","hm": "F 4","id": "F_4","jmolId": "79:f","set": 2,"sg": 79,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "c","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z" ],"desc": "2..","geom": "line","label": "b","mult": 8 },{ "coord": [ "0,0,z" ],"desc": "4..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "79:a+b,-a+b,c","det": 2.0,"hm": "F 4","id": "F_4","more": true,"sg": 79,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 79 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_8.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_8.json new file mode 100755 index 000000000000..fe4bcb52503f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_8.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "8:a,b,c","det": 1.0,"gen": [ "x,y,z","x,-y,z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,z","x+1/2,y+1/2,z","x+1/2,-y+1/2,z" ],"hall": "C -2y","hm": "C 1 m 1","id": "C_1_m_1","jmolId": "8:b1","set": 1,"sg": 8,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "x,0,z" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:-a-c,b,a","det": 1.0,"gen": [ "x,y,z","x,-y,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,z","x,y+1/2,z+1/2","x,-y+1/2,z+1/2" ],"hall": "A -2y","hm": "A 1 m 1","id": "A_1_m_1","jmolId": "8:b2","set": 2,"sg": 8,"trm": "-a-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "-z,0,x-z" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:c,b,-a-c","det": 1.0,"gen": [ "x,y,z","x,-y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,z","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "I -2y","hm": "I 1 m 1","id": "I_1_m_1","jmolId": "8:b3","set": 3,"sg": 8,"trm": "c,b,-a-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "-x+z,0,-x" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:c,a,b","det": 1.0,"gen": [ "x,y,z","x,y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,y,-z","x,y+1/2,z+1/2","x,y+1/2,-z+1/2" ],"hall": "A -2","hm": "A 1 1 m","id": "A_1_1_m","jmolId": "8:c1","set": 4,"sg": 8,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "z,x,0" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:a,-a-c,b","det": 1.0,"gen": [ "x,y,z","x,y,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,y,-z","x+1/2,y,z+1/2","x+1/2,y,-z+1/2" ],"hall": "B -2","hm": "B 1 1 m","id": "B_1_1_m","jmolId": "8:c2","set": 5,"sg": 8,"trm": "a,-a-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "x-z,-z,0" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:-a-c,c,b","det": 1.0,"gen": [ "x,y,z","x,y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,y,-z","x+1/2,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "I -2","hm": "I 1 1 m","id": "I_1_1_m","jmolId": "8:c3","set": 6,"sg": 8,"trm": "-a-c,c,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "-x,-x+z,0" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y,z","x+1/2,y,z+1/2","-x+1/2,y,z+1/2" ],"hall": "B -2x","hm": "B m 1 1","id": "B_m_1_1","jmolId": "8:a1","set": 7,"sg": 8,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "0,z,x" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:b,a,-a-c","det": 1.0,"gen": [ "x,y,z","-x,y,z","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C -2x","hm": "C m 1 1","id": "C_m_1_1","jmolId": "8:a2","set": 8,"sg": 8,"trm": "b,a,-a-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "0,x-z,-z" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:b,-a-c,c","det": 1.0,"gen": [ "x,y,z","-x,y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,z","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "I -2x","hm": "I m 1 1","id": "I_m_1_1","jmolId": "8:a3","set": 9,"sg": 8,"trm": "b,-a-c,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 4 },{ "coord": [ "0,-x,-x+z" ],"desc": "m","geom": "plane","label": "a","mult": 2 } ] } },{ "clegId": "8:c,-b,a","det": 1.0,"hm": "A 1 m 1 :1","id": "A_1_m_1_1","more": true,"sg": 8,"trm": "c,-b,a" },{ "clegId": "8:a,-b,-a-c","det": 1.0,"hm": "C 1 m 1 :2","id": "C_1_m_1_2","more": true,"sg": 8,"trm": "a,-b,-a-c" },{ "clegId": "8:-a-c,-b,c","det": 1.0,"hm": "I 1 m 1 :3","id": "I_1_m_1_3","more": true,"sg": 8,"trm": "-a-c,-b,c" },{ "clegId": "8:a,c,-b","det": 1.0,"hm": "B 1 1 m :1","id": "B_1_1_m_1","more": true,"sg": 8,"trm": "a,c,-b" },{ "clegId": "8:-a-c,a,-b","det": 1.0,"hm": "A 1 1 m :2","id": "A_1_1_m_2","more": true,"sg": 8,"trm": "-a-c,a,-b" },{ "clegId": "8:c,-a-c,-b","det": 1.0,"hm": "I 1 1 m :3","id": "I_1_1_m_3","more": true,"sg": 8,"trm": "c,-a-c,-b" },{ "clegId": "8:-b,a,c","det": 1.0,"hm": "C m 1 1 :1","id": "C_m_1_1_1","more": true,"sg": 8,"trm": "-b,a,c" },{ "clegId": "8:-b,-a-c,a","det": 1.0,"hm": "B m 1 1 :2","id": "B_m_1_1_2","more": true,"sg": 8,"trm": "-b,-a-c,a" },{ "clegId": "8:-b,c,-a-c","det": 1.0,"hm": "I m 1 1 :3","id": "I_m_1_1_3","more": true,"sg": 8,"trm": "-b,c,-a-c" } ],"n": 18,"sg": 8 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_80.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_80.json new file mode 100755 index 000000000000..7693331bba78 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_80.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "80:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","y+1/2,-x,z+3/4","x+1/2,y+1/2,z+1/2","-x,-y,z","-y+1/2,x,z+3/4","y,-x+1/2,z+1/4" ],"hall": "I 4bw","hm": "I 41","id": "I_41","jmolId": "80","set": 1,"sg": 80,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "0,0,z","0,1/2,z+1/4" ],"desc": "2..","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "80:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-y+3/4,x+1/4,z+1/4","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-y+3/4,x+1/4,z+1/4","y+1/4,-x+1/4,z+3/4","x,y+1/2,z+1/2","-x,-y,z","-y+1/4,x+1/4,z+3/4","y+3/4,-x+1/4,z+1/4","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","y+3/4,-x+3/4,z+3/4","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-y+3/4,x+3/4,z+3/4","y+1/4,-x+3/4,z+1/4" ],"hm": "F 41","id": "F_41","jmolId": "80:f","set": 2,"sg": 80,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 16 },{ "coord": [ "0,0,z","3/4,1/4,z+1/4" ],"desc": "2..","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "80:a+b,-a+b,c","det": 2.0,"hm": "F 41","id": "F_41","more": true,"sg": 80,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 80 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_81.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_81.json new file mode 100755 index 000000000000..7b55256b6139 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_81.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "81:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z" ],"hall": "P -4","hm": "P -4","id": "P_-4","jmolId": "81","set": 1,"sg": 81,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "h","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z" ],"desc": "2..","geom": "line","label": "g","mult": 2 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z" ],"desc": "2..","geom": "line","label": "f","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2..","geom": "line","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "-4..","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "-4..","geom": "point","label": "a","mult": 1 } ] } },{ "clegId": "81:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z" ],"hall": "C -4","hm": "C -4","id": "C_-4","jmolId": "81:c","set": 2,"sg": 81,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "h","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "-4..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "81:a+b,-a+b,c","det": 2.0,"hm": "C -4","id": "C_-4","more": true,"sg": 81,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 81 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_82.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_82.json new file mode 100755 index 000000000000..6cd015ca20c6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_82.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "82:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2" ],"hall": "I -4","hm": "I -4","id": "I_-4","jmolId": "82","set": 1,"sg": 82,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,-z" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,1/4" ],"desc": "-4..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "82:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","y,-x,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","y,-x,-z","-y,x,-z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2" ],"hall": "F -4","hm": "F -4","id": "F_-4","jmolId": "82:f","set": 2,"sg": 82,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,3/4" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,1/4" ],"desc": "-4..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "82:a+b,-a+b,c","det": 2.0,"hm": "F -4","id": "F_-4","more": true,"sg": 82,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 82 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_83.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_83.json new file mode 100755 index 000000000000..b8f3200b3735 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_83.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "83:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z" ],"hall": "-P 4","hm": "P 4/m","id": "P_4/m","jmolId": "83","set": 1,"sg": 83,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "l","mult": 8 },{ "coord": [ "x,y,1/2","-x,-y,1/2","-y,x,1/2","y,-x,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 4 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,0","y,-x,0" ],"desc": "m..","geom": "plane","label": "j","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z","1/2,0,-z" ],"desc": "2..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z" ],"desc": "4..","geom": "line","label": "h","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4..","geom": "line","label": "g","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "f","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "4/m..","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "4/m..","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "4/m..","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "4/m..","geom": "point","label": "a","mult": 1 } ] } },{ "clegId": "83:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z" ],"hall": "-C 4","hm": "C 4/m","id": "C_4/m","jmolId": "83:f","set": 2,"sg": 83,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "l","mult": 16 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,1/2","-1/2x+1/2y,-1/2x-1/2y,1/2","-1/2x-1/2y,1/2x-1/2y,1/2","1/2x+1/2y,-1/2x+1/2y,1/2" ],"desc": "m..","geom": "plane","label": "k","mult": 8 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,0","1/2x+1/2y,-1/2x+1/2y,0" ],"desc": "m..","geom": "plane","label": "j","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,-z","1/4,1/4,-z" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "4..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4..","geom": "line","label": "g","mult": 4 },{ "coord": [ "3/4,1/4,1/2","1/4,1/4,1/2" ],"desc": "2/m..","geom": "point","label": "f","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "2/m..","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2" ],"desc": "4/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "4/m..","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "4/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "4/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "83:a+b,-a+b,c","det": 2.0,"hm": "C 4/m","id": "C_4/m","more": true,"sg": 83,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 83 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_84.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_84.json new file mode 100755 index 000000000000..6207d40d090e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_84.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "84:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-x,-y,-z","x,y,-z","y,-x,-z+1/2","-y,x,-z+1/2" ],"hall": "-P 4c","hm": "P 42/m","id": "P_42/m","jmolId": "84","set": 1,"sg": 84,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "k","mult": 8 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,1/2","y,-x,1/2" ],"desc": "m..","geom": "plane","label": "j","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2","0,1/2,-z","1/2,0,-z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2","1/2,1/2,-z","1/2,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/2,1/4","1/2,1/2,3/4" ],"desc": "-4..","geom": "point","label": "f","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-4..","geom": "point","label": "e","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "84:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-x,-y,-z","x,y,-z","y,-x,-z+1/2","-y,x,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2" ],"hall": "-C 4c","hm": "C 42/m","id": "C_42/m","jmolId": "84:c","set": 2,"sg": 84,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,1/2","1/2x+1/2y,-1/2x+1/2y,1/2" ],"desc": "m..","geom": "plane","label": "j","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2","3/4,1/4,-z","1/4,1/4,-z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2","0,1/2,-z","0,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "-4..","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "-4..","geom": "point","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,1/2","1/4,1/4,0" ],"desc": "2/m..","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,1/4,1/2" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "2/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "2/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "84:a+b,-a+b,c","det": 2.0,"hm": "C 42/m","id": "C_42/m","more": true,"sg": 84,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 84 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_85.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_85.json new file mode 100755 index 000000000000..721a1572c582 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_85.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "85:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y,-x+1/2,z","-x,-y,-z","x+1/2,y+1/2,-z","y+1/2,-x,-z","-y,x+1/2,-z" ],"hm": "P 4/n :2","id": "P_4/n_2","jmolId": "85:p","set": 1,"sg": 85,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "1/4,3/4,z","3/4,1/4,z","3/4,1/4,-z","1/4,3/4,-z" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","1/2,0,1/2","0,1/2,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","1/2,0,0","0,1/2,0" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,z","3/4,3/4,-z" ],"desc": "4..","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/4,3/4,1/2","3/4,1/4,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,3/4,0","3/4,1/4,0" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "85:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+1/4,x+1/4,z","y+3/4,-x+1/4,z","-x,-y,-z","x,y+1/2,-z","y+1/4,-x+1/4,-z","-y+3/4,x+1/4,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+3/4,x+3/4,z","y+1/4,-x+3/4,z","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+3/4,-x+3/4,-z","-y+1/4,x+3/4,-z" ],"hm": "C 4/e :2","id": "C_4/e_2","jmolId": "85:c","set": 2,"sg": 85,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "3/4,1/2,z","1/4,1/2,z","1/4,1/2,-z","3/4,1/2,-z" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,1/2","1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "0,0,0","0,1/2,0","1/4,1/4,0","3/4,1/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,1/4,z","0,3/4,-z" ],"desc": "4..","geom": "line","label": "c","mult": 4 },{ "coord": [ "3/4,1/2,1/2","1/4,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "3/4,1/2,0","1/4,1/2,0" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "85:a,b,c;-1/4,1/4,0","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y,-x,-z","-y,x,-z" ],"hall": "P 4ab -1ab","hm": "P 4/n :1","id": "P_4/n_1","jmolId": "85:1","set": 3,"sg": 85,"trm": "a,b,c;-1/4,1/4,0","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "1/2,1/2,z","0,0,z","0,0,-z","1/2,1/2,-z" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "1/4,3/4,1/2","3/4,1/4,1/2","3/4,3/4,1/2","1/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 4 },{ "coord": [ "1/4,3/4,0","3/4,1/4,0","3/4,3/4,0","1/4,1/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/2,0,z","0,1/2,-z" ],"desc": "4..","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,1/2","0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/2,1/2,0","0,0,0" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "85:a-b,a+b,c;-1/4,1/4,0","det": 2.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-x+1/2,-y,-z","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z","-x,-y+1/2,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y,-x+1/2,z","-x+1/2,-y,-z","x,y+1/2,-z","y+1/2,-x+1/2,-z","-y,x,-z","x+1/2,y+1/2,z","-x,-y,z","-y,x+1/2,z","y+1/2,-x,z","-x,-y+1/2,-z","x+1/2,y,-z","y,-x,-z","-y+1/2,x+1/2,-z" ],"hm": "C 4/e :1","id": "C_4/e_1","jmolId": "85:c","set": 4,"sg": 85,"trm": "a-b,a+b,c;-1/4,1/4,0","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "0,1/2,z","1/2,1/2,z","1/2,1/2,-z","0,1/2,-z" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,0,1/2","1/4,1/2,1/2","1/2,1/4,1/2","0,1/4,1/2" ],"desc": "-1","geom": "point","label": "e","mult": 8 },{ "coord": [ "1/4,0,0","1/4,1/2,0","1/2,1/4,0","0,1/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,z","1/4,3/4,-z" ],"desc": "4..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,1/2","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/2,0","1/2,1/2,0" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "85:a+b,-a+b,c","det": 2.0,"hm": "C 4/e :2","id": "C_4/e_2","more": true,"sg": 85,"trm": "a+b,-a+b,c" },{ "clegId": "85:a+b,-a+b,c;-1/4,1/4,0","det": 2.0,"hm": "C 4/e :1","id": "C_4/e_1","more": true,"sg": 85,"trm": "a+b,-a+b,c;-1/4,1/4,0" } ],"n": 6,"sg": 85 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_86.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_86.json new file mode 100755 index 000000000000..c7d15a5a32e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_86.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "86:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z","-y,x+1/2,z+1/2","-x,-y,-z" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z","-y,x+1/2,z+1/2","y+1/2,-x,z+1/2","-x,-y,-z","x+1/2,y+1/2,-z","y,-x+1/2,-z+1/2","-y+1/2,x,-z+1/2" ],"hm": "P 42/n :2","id": "P_42/n_2","jmolId": "86:p","set": 1,"sg": 86,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "1/4,1/4,z","3/4,3/4,z+1/2","3/4,3/4,-z","1/4,1/4,-z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "3/4,1/4,z","3/4,1/4,z+1/2","1/4,3/4,-z","1/4,3/4,-z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2","0,1/2,0","1/2,0,0" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,0,0","1/2,1/2,0","0,1/2,1/2","1/2,0,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/4,1/4,3/4","3/4,3/4,1/4" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "86:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z","-y+3/4,x+1/4,z+1/2","-x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+1/4,x+3/4,z+1/2","-x+1/2,-y+1/2,-z" ],"gp": [ "x,y,z","-x,-y+1/2,z","-y+3/4,x+1/4,z+1/2","y+1/4,-x+1/4,z+1/2","-x,-y,-z","x,y+1/2,-z","y+3/4,-x+1/4,-z+1/2","-y+1/4,x+1/4,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z","-y+1/4,x+3/4,z+1/2","y+3/4,-x+3/4,z+1/2","-x+1/2,-y+1/2,-z","x+1/2,y,-z","y+1/4,-x+3/4,-z+1/2","-y+3/4,x+3/4,-z+1/2" ],"hm": "C 42/e :2","id": "C_42/e_2","jmolId": "86:c","set": 2,"sg": 86,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "0,1/4,z","0,3/4,z+1/2","0,3/4,-z","0,1/4,-z+1/2" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,1/2,z","1/4,1/2,z+1/2","3/4,1/2,-z","3/4,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,1/2","3/4,1/4,0","1/4,1/4,0" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,0,0","0,1/2,0","3/4,1/4,1/2","1/4,1/4,1/2" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/4,3/4","0,3/4,1/4" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,1/4","0,3/4,3/4" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "86:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","-x+1/2,-y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y,-x,-z","-y,x,-z" ],"hall": "P 4n -1n","hm": "P 42/n :1","id": "P_42/n_1","jmolId": "86:1","set": 3,"sg": 86,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "1/2,1/2,z+1/4","0,0,z+3/4","0,0,-z+1/4","1/2,1/2,-z+3/4" ],"desc": "2..","geom": "line","label": "f","mult": 4 },{ "coord": [ "0,1/2,z+1/4","0,1/2,z+3/4","1/2,0,-z+1/4","1/2,0,-z+3/4" ],"desc": "2..","geom": "line","label": "e","mult": 4 },{ "coord": [ "1/4,1/4,3/4","3/4,3/4,3/4","1/4,3/4,1/4","3/4,1/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 4 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","1/4,3/4,3/4","3/4,1/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 4 },{ "coord": [ "1/2,1/2,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 2 },{ "coord": [ "1/2,1/2,1/2","0,0,0" ],"desc": "-4..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "86:a-b,a+b,c;-1/4,-1/4,-1/4","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x+1/2,z+1/2","-x,-y+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-x+1/2,-y,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","y,-x,-z","-y,x,-z" ],"hm": "C 42/e :1","id": "C_42/e_1","jmolId": "86:c","set": 4,"sg": 86,"trm": "a-b,a+b,c;-1/4,-1/4,-1/4","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "0,1/2,z+1/4","0,0,z+3/4","0,0,-z+1/4","0,1/2,-z+3/4" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "1/4,3/4,z+1/4","1/4,3/4,z+3/4","3/4,3/4,-z+1/4","3/4,3/4,-z+3/4" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,1/4,3/4","0,3/4,3/4","3/4,1/2,1/4","1/4,1/2,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","3/4,1/2,3/4","1/4,1/2,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,0","0,0,1/2" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/2,1/2","0,0,0" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "86:a+b,-a+b,c","det": 2.0,"hm": "C 42/e :2","id": "C_42/e_2","more": true,"sg": 86,"trm": "a+b,-a+b,c" },{ "clegId": "86:a+b,-a+b,c;-1/4,-1/4,-1/4","det": 2.0,"hm": "C 42/e :1","id": "C_42/e_1","more": true,"sg": 86,"trm": "a+b,-a+b,c;-1/4,-1/4,-1/4" } ],"n": 6,"sg": 86 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_87.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_87.json new file mode 100755 index 000000000000..306eeaaff779 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_87.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "87:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,-y+1/2,-z+1/2","x+1/2,y+1/2,-z+1/2","y+1/2,-x+1/2,-z+1/2","-y+1/2,x+1/2,-z+1/2" ],"hall": "-I 4","hm": "I 4/m","id": "I_4/m","jmolId": "87","set": 1,"sg": 87,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 16 },{ "coord": [ "x,y,0","-x,-y,0","-y,x,0","y,-x,0" ],"desc": "m..","geom": "plane","label": "h","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z","1/2,0,-z" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "1/4,1/4,1/4","3/4,3/4,1/4","3/4,1/4,1/4","1/4,3/4,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,0,1/4" ],"desc": "-4..","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "4/m..","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "4/m..","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "87:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-x+1/2,-y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,-y,-z","x,y,-z","y,-x,-z","-y,x,-z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","-x,-y+1/2,-z+1/2","x,y+1/2,-z+1/2","y,-x+1/2,-z+1/2","-y,x+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-x+1/2,-y+1/2,-z","x+1/2,y+1/2,-z","y+1/2,-x+1/2,-z","-y+1/2,x+1/2,-z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","-x+1/2,-y,-z+1/2","x+1/2,y,-z+1/2","y+1/2,-x,-z+1/2","-y+1/2,x,-z+1/2" ],"hm": "F 4/m","id": "F_4/m","jmolId": "87:f","set": 2,"sg": 87,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "i","mult": 32 },{ "coord": [ "1/2x-1/2y,1/2x+1/2y,0","-1/2x+1/2y,-1/2x-1/2y,0","-1/2x-1/2y,1/2x-1/2y,0","1/2x+1/2y,-1/2x+1/2y,0" ],"desc": "m..","geom": "plane","label": "h","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,-z","1/4,1/4,-z" ],"desc": "2..","geom": "line","label": "g","mult": 16 },{ "coord": [ "0,1/4,1/4","0,3/4,1/4","1/4,1/2,1/4","3/4,1/2,1/4" ],"desc": "-1","geom": "point","label": "f","mult": 16 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,1/4" ],"desc": "-4..","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "2/m..","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2" ],"desc": "4/m..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "4/m..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "87:a+b,-a+b,c","det": 2.0,"hm": "F 4/m","id": "F_4/m","more": true,"sg": 87,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 87 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_88.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_88.json new file mode 100755 index 000000000000..944952902c64 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_88.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "88:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y,z+1/2","-y+3/4,x+1/4,z+1/4","-x,-y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y,z+1/2","-y+3/4,x+1/4,z+1/4","y+3/4,-x+3/4,z+3/4","-x,-y,-z","x+1/2,y,-z+1/2","y+1/4,-x+3/4,-z+3/4","-y+1/4,x+1/4,-z+1/4","x+1/2,y+1/2,z+1/2","-x,-y+1/2,z","-y+1/4,x+3/4,z+3/4","y+1/4,-x+1/4,z+1/4","-x+1/2,-y+1/2,-z+1/2","x,y+1/2,-z","y+3/4,-x+1/4,-z+1/4","-y+3/4,x+3/4,-z+3/4" ],"hall": "-I 4ad","hm": "I 41/a :2","id": "I_41/a_2","jmolId": "88:2","set": 1,"sg": 88,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 16 },{ "coord": [ "0,1/4,z","1/2,1/4,z+1/4","0,3/4,-z","1/2,3/4,-z+3/4" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,1/2","1/2,0,0","3/4,1/4,3/4","3/4,3/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,0,0","1/2,0,1/2","3/4,1/4,1/4","3/4,3/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/4,5/8","1/2,1/4,7/8" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/4,1/8","1/2,1/4,3/8" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "88:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x+1/4,-y+1/4,z+1/2","-y+1/4,x+1/2,z+1/4","-x,-y,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+3/4,-y+3/4,z+1/2","-y+3/4,x,z+1/4","-x+1/2,-y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x+1/4,-y+1/4,z+1/2","-y+1/4,x+1/2,z+1/4","y,-x+3/4,z+3/4","-x,-y,-z","x+1/4,y+1/4,-z+1/2","y+3/4,-x+1/2,-z+3/4","-y,x+1/4,-z+1/4","x,y+1/2,z+1/2","-x+3/4,-y+1/4,z","-y+3/4,x+1/2,z+3/4","y,-x+1/4,z+1/4","-x,-y+1/2,-z+1/2","x+3/4,y+1/4,-z","y+1/4,-x+1/2,-z+1/4","-y,x+3/4,-z+3/4","x+1/2,y+1/2,z","-x+3/4,-y+3/4,z+1/2","-y+3/4,x,z+1/4","y+1/2,-x+5/4,z+3/4","-x+1/2,-y+1/2,-z","x+3/4,y+3/4,-z+1/2","y+1/4,-x,-z+3/4","-y+1/2,x+3/4,-z+1/4","x+1/2,y,z+1/2","-x+1/4,-y+3/4,z","-y+1/4,x,z+3/4","y+1/2,-x+3/4,z+1/4","-x+1/2,-y,-z+1/2","x+1/4,y+3/4,-z","y+3/4,-x,-z+1/4","-y+1/2,x+5/4,-z+3/4" ],"hm": "F 41/d :2","id": "F_41/d_2","jmolId": "88:f","set": 2,"sg": 88,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 32 },{ "coord": [ "7/8,1/8,z","1/8,3/8,z+1/4","5/8,3/8,-z","7/8,5/8,-z+3/4" ],"desc": "2..","geom": "line","label": "e","mult": 16 },{ "coord": [ "0,0,1/2","1/4,1/4,0","1/4,1/2,3/4","0,3/4,1/4" ],"desc": "-1","geom": "point","label": "d","mult": 16 },{ "coord": [ "0,0,0","1/4,1/4,1/2","1/4,1/2,1/4","0,3/4,3/4" ],"desc": "-1","geom": "point","label": "c","mult": 16 },{ "coord": [ "7/8,1/8,5/8","1/8,3/8,7/8" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "7/8,1/8,1/8","1/8,3/8,3/8" ],"desc": "-4..","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "88:a,b,c;0,-1/4,-1/8","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","-x,-y+1/2,-z+1/4","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","y+1/2,-x,z+3/4","-x,-y+1/2,-z+1/4","x+1/2,y,-z+3/4","y,-x,-z","-y+1/2,x+1/2,-z+1/2","x+1/2,y+1/2,z+1/2","-x,-y,z","-y+1/2,x,z+3/4","y,-x+1/2,z+1/4","-x+1/2,-y,-z+3/4","x,y+1/2,-z+1/4","y+1/2,-x+1/2,-z+1/2","-y,x,-z" ],"hall": "I 4bw -1bw","hm": "I 41/a :1","id": "I_41/a_1","jmolId": "88:1","set": 3,"sg": 88,"trm": "a,b,c;0,-1/4,-1/8","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 16 },{ "coord": [ "0,1/2,z+1/8","1/2,1/2,z+3/8","0,0,-z+1/8","1/2,0,-z+7/8" ],"desc": "2..","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,1/4,5/8","1/2,1/4,1/8","3/4,1/2,7/8","3/4,0,3/8" ],"desc": "-1","geom": "point","label": "d","mult": 8 },{ "coord": [ "0,1/4,1/8","1/2,1/4,5/8","3/4,1/2,3/8","3/4,0,7/8" ],"desc": "-1","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,1/2,3/4","1/2,1/2,0" ],"desc": "-4..","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,1/2,1/2" ],"desc": "-4..","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "88:a-b,a+b,c;0,-1/4,-1/8","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-y+1/4,x+3/4,z+1/4","-x+3/4,-y+1/4,-z+1/4","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+3/4,x+5/4,z+1/4","-x+1/4,-y+3/4,-z+1/4","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-y+1/4,x+3/4,z+1/4","y+3/4,-x+3/4,z+3/4","-x+3/4,-y+1/4,-z+1/4","x+1/4,y+1/4,-z+3/4","y+1/2,-x+1/2,-z","-y,x+1/2,-z+1/2","x,y+1/2,z+1/2","-x+1/2,-y+1/2,z","-y+3/4,x+3/4,z+3/4","y+3/4,-x+1/4,z+1/4","-x+3/4,-y+3/4,-z+3/4","x+3/4,y+1/4,-z+1/4","y,-x+1/2,-z+1/2","-y,x,-z","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+3/4,x+5/4,z+1/4","y+1/4,-x+5/4,z+3/4","-x+1/4,-y+3/4,-z+1/4","x+3/4,y+3/4,-z+3/4","y,-x,-z","-y+1/2,x,-z+1/2","x+1/2,y,z+1/2","-x,-y,z","-y+1/4,x+5/4,z+3/4","y+1/4,-x+3/4,z+1/4","-x+1/4,-y+5/4,-z+3/4","x+1/4,y+3/4,-z+1/4","y+1/2,-x,-z+1/2","-y+1/2,x+1/2,-z" ],"hm": "F 41/d :1","id": "F_41/d_1","jmolId": "88:f","set": 4,"sg": 88,"trm": "a-b,a+b,c;0,-1/4,-1/8","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "f","mult": 32 },{ "coord": [ "3/4,1/4,z+1/8","0,1/2,z+3/8","1/2,1/2,-z+1/8","3/4,3/4,-z+7/8" ],"desc": "2..","geom": "line","label": "e","mult": 16 },{ "coord": [ "7/8,1/8,5/8","1/8,3/8,1/8","1/8,5/8,7/8","7/8,7/8,3/8" ],"desc": "-1","geom": "point","label": "d","mult": 16 },{ "coord": [ "7/8,1/8,1/8","1/8,3/8,5/8","1/8,5/8,3/8","7/8,7/8,7/8" ],"desc": "-1","geom": "point","label": "c","mult": 16 },{ "coord": [ "3/4,1/4,3/4","0,1/2,0" ],"desc": "-4..","geom": "point","label": "b","mult": 8 },{ "coord": [ "3/4,1/4,1/4","0,1/2,1/2" ],"desc": "-4..","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "88:a+b,-a+b,c","det": 2.0,"hm": "F 41/d :2","id": "F_41/d_2","more": true,"sg": 88,"trm": "a+b,-a+b,c" },{ "clegId": "88:a+b,-a+b,c;0,-1/4,-1/8","det": 2.0,"hm": "F 41/d :1","id": "F_41/d_1","more": true,"sg": 88,"trm": "a+b,-a+b,c;0,-1/4,-1/8" } ],"n": 6,"sg": 88 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_89.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_89.json new file mode 100755 index 000000000000..5ef45a9262b8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_89.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "89:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,y,-z","x,-y,-z","y,x,-z","-y,-x,-z" ],"hm": "P 4 2 2","id": "P_4_2_2","jmolId": "89:p","set": 1,"sg": 89,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "p","mult": 8 },{ "coord": [ "x,1/2,0","-x,1/2,0","1/2,x,0","1/2,-x,0" ],"desc": ".2.","geom": "line","label": "o","mult": 4 },{ "coord": [ "x,0,1/2","-x,0,1/2","0,x,1/2","0,-x,1/2" ],"desc": ".2.","geom": "line","label": "n","mult": 4 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,1/2","1/2,-x,1/2" ],"desc": ".2.","geom": "line","label": "m","mult": 4 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0" ],"desc": ".2.","geom": "line","label": "l","mult": 4 },{ "coord": [ "x,x,1/2","-x,-x,1/2","-x,x,1/2","x,-x,1/2" ],"desc": "..2","geom": "line","label": "k","mult": 4 },{ "coord": [ "x,x,0","-x,-x,0","-x,x,0","x,-x,0" ],"desc": "..2","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z","1/2,0,-z" ],"desc": "2..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,-z" ],"desc": "4..","geom": "line","label": "h","mult": 2 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4..","geom": "line","label": "g","mult": 2 },{ "coord": [ "1/2,0,1/2","0,1/2,1/2" ],"desc": "222 .","geom": "point","label": "f","mult": 2 },{ "coord": [ "1/2,0,0","0,1/2,0" ],"desc": "222 .","geom": "point","label": "e","mult": 2 },{ "coord": [ "1/2,1/2,1/2" ],"desc": "422","geom": "point","label": "d","mult": 1 },{ "coord": [ "1/2,1/2,0" ],"desc": "422","geom": "point","label": "c","mult": 1 },{ "coord": [ "0,0,1/2" ],"desc": "422","geom": "point","label": "b","mult": 1 },{ "coord": [ "0,0,0" ],"desc": "422","geom": "point","label": "a","mult": 1 } ] } },{ "clegId": "89:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-y,-x,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-y+1/2,-x+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-y,-x,-z","y,x,-z","-x,y,-z","x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z" ],"hm": "C 4 2 2","id": "C_4_2_2","jmolId": "89:c","set": 2,"sg": 89,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "p","mult": 16 },{ "coord": [ "1/2x+3/4,1/2x+1/4,0","-1/2x+3/4,-1/2x+1/4,0","-1/2x+1/4,1/2x+1/4,0","1/2x+1/4,-1/2x+1/4,0" ],"desc": ".2.","geom": "line","label": "o","mult": 8 },{ "coord": [ "1/2x,1/2x,1/2","-1/2x,-1/2x,1/2","-1/2x,1/2x,1/2","1/2x,-1/2x,1/2" ],"desc": ".2.","geom": "line","label": "n","mult": 8 },{ "coord": [ "1/2x+3/4,1/2x+1/4,1/2","-1/2x+3/4,-1/2x+1/4,1/2","-1/2x+1/4,1/2x+1/4,1/2","1/2x+1/4,-1/2x+1/4,1/2" ],"desc": ".2.","geom": "line","label": "m","mult": 8 },{ "coord": [ "1/2x,1/2x,0","-1/2x,-1/2x,0","-1/2x,1/2x,0","1/2x,-1/2x,0" ],"desc": ".2.","geom": "line","label": "l","mult": 8 },{ "coord": [ "0,x,1/2","0,-x,1/2","-x,0,1/2","x,0,1/2" ],"desc": "..2","geom": "line","label": "k","mult": 8 },{ "coord": [ "0,x,0","0,-x,0","-x,0,0","x,0,0" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,-z","1/4,1/4,-z" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,-z" ],"desc": "4..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4..","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/4,1/4,1/2","3/4,1/4,1/2" ],"desc": "222 .","geom": "point","label": "f","mult": 4 },{ "coord": [ "1/4,1/4,0","3/4,1/4,0" ],"desc": "222 .","geom": "point","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/2" ],"desc": "422","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0" ],"desc": "422","geom": "point","label": "c","mult": 2 },{ "coord": [ "0,0,1/2" ],"desc": "422","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "422","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "89:a+b,-a+b,c","det": 2.0,"hm": "C 4 2 2","id": "C_4_2_2","more": true,"sg": 89,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 89 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_9.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_9.json new file mode 100755 index 000000000000..3d36e1cdcc9d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_9.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "9:a,b,c","det": 1.0,"gen": [ "x,y,z","x,-y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x,-y,z+1/2","x+1/2,y+1/2,z","x+1/2,-y+1/2,z+1/2" ],"hall": "C -2yc","hm": "C 1 c 1","id": "C_1_c_1","jmolId": "9:b1","set": 1,"sg": 9,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:-a-c,b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,z+1/2","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,z+1/2","x,y+1/2,z+1/2","x+1/2,-y+1/2,z" ],"hall": "A -2yab","hm": "A 1 n 1","id": "A_1_n_1","jmolId": "9:b2","set": 2,"sg": 9,"trm": "-a-c,b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:c,b,-a-c","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,z","x+1/2,y+1/2,z+1/2","x,-y+1/2,z+1/2" ],"hall": "I -2ya","hm": "I 1 a 1","id": "I_1_a_1","jmolId": "9:b3","set": 3,"sg": 9,"trm": "c,b,-a-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:c,-b,a","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,-y,z","x,y+1/2,z+1/2","x+1/2,-y+1/2,z+1/2" ],"hall": "A -2ya","hm": "A 1 a 1","id": "A_1_a_1","jmolId": "9:-b1","set": 4,"sg": 9,"trm": "c,-b,a","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:a,-b,-a-c","det": 1.0,"gen": [ "x,y,z","x+1/2,-y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","x+1/2,-y,z+1/2","x+1/2,y+1/2,z","x,-y+1/2,z+1/2" ],"hall": "C -2yac","hm": "C 1 n 1","id": "C_1_n_1","jmolId": "9:-b2","set": 5,"sg": 9,"trm": "a,-b,-a-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:-a-c,-b,c","det": 1.0,"gen": [ "x,y,z","x,-y,z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,-y,z+1/2","x+1/2,y+1/2,z+1/2","x+1/2,-y+1/2,z" ],"hall": "I -2yc","hm": "I 1 c 1","id": "I_1_c_1","jmolId": "9:-b3","set": 6,"sg": 9,"trm": "-a-c,-b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:c,a,b","det": 1.0,"gen": [ "x,y,z","x+1/2,y,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,y,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "A -2a","hm": "A 1 1 a","id": "A_1_1_a","jmolId": "9:c1","set": 7,"sg": 9,"trm": "c,a,b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:a,-a-c,b","det": 1.0,"gen": [ "x,y,z","x+1/2,y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x+1/2,y+1/2,-z","x+1/2,y,z+1/2","x,y+1/2,-z+1/2" ],"hall": "B -2ab","hm": "B 1 1 n","id": "B_1_1_n","jmolId": "9:c2","set": 8,"sg": 9,"trm": "a,-a-c,b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:-a-c,c,b","det": 1.0,"gen": [ "x,y,z","x,y+1/2,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x,y+1/2,-z","x+1/2,y+1/2,z+1/2","x+1/2,y,-z+1/2" ],"hall": "I -2b","hm": "I 1 1 b","id": "I_1_1_b","jmolId": "9:c3","set": 9,"sg": 9,"trm": "-a-c,c,b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:a,c,-b","det": 1.0,"gen": [ "x,y,z","x,y+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","x,y+1/2,-z","x+1/2,y,z+1/2","x+1/2,y+1/2,-z+1/2" ],"hall": "B -2b","hm": "B 1 1 b","id": "B_1_1_b","jmolId": "9:-c1","set": 10,"sg": 9,"trm": "a,c,-b","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:-a-c,a,-b","det": 1.0,"gen": [ "x,y,z","x+1/2,y+1/2,-z","x,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,y+1/2,-z","x,y+1/2,z+1/2","x+1/2,y,-z+1/2" ],"hall": "A -2ab","hm": "A 1 1 n","id": "A_1_1_n","jmolId": "9:-c2","set": 11,"sg": 9,"trm": "-a-c,a,-b","wpos": { "cent": [ "0,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:c,-a-c,-b","det": 1.0,"gen": [ "x,y,z","x+1/2,y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","x+1/2,y,-z","x+1/2,y+1/2,z+1/2","x,y+1/2,-z+1/2" ],"hall": "I -2a","hm": "I 1 1 a","id": "I_1_1_a","jmolId": "9:-c3","set": 12,"sg": 9,"trm": "c,-a-c,-b","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:b,c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,z","x+1/2,y,z+1/2","-x+1/2,y+1/2,z+1/2" ],"hall": "B -2xb","hm": "B b 1 1","id": "B_b_1_1","jmolId": "9:a1","set": 13,"sg": 9,"trm": "b,c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:b,a,-a-c","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,y,z+1/2" ],"hall": "C -2xac","hm": "C n 1 1","id": "C_n_1_1","jmolId": "9:a2","set": 14,"sg": 9,"trm": "b,a,-a-c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:b,-a-c,c","det": 1.0,"gen": [ "x,y,z","-x,y,z+1/2","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y,z+1/2","x+1/2,y+1/2,z+1/2","-x+1/2,y+1/2,z" ],"hall": "I -2xc","hm": "I c 1 1","id": "I_c_1_1","jmolId": "9:a3","set": 15,"sg": 9,"trm": "b,-a-c,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:-b,a,c","det": 1.0,"gen": [ "x,y,z","-x,y,z+1/2","x+1/2,y+1/2,z" ],"gp": [ "x,y,z","-x,y,z+1/2","x+1/2,y+1/2,z","-x+1/2,y+1/2,z+1/2" ],"hall": "C -2xc","hm": "C c 1 1","id": "C_c_1_1","jmolId": "9:-a1","set": 16,"sg": 9,"trm": "-b,a,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:-b,-a-c,a","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,z+1/2","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,z+1/2","x+1/2,y,z+1/2","-x+1/2,y+1/2,z" ],"hall": "B -2xab","hm": "B n 1 1","id": "B_n_1_1","jmolId": "9:-a2","set": 17,"sg": 9,"trm": "-b,-a-c,a","wpos": { "cent": [ "1/2,0,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } },{ "clegId": "9:-b,c,-a-c","det": 1.0,"gen": [ "x,y,z","-x,y+1/2,z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,y+1/2,z","x+1/2,y+1/2,z+1/2","-x+1/2,y,z+1/2" ],"hall": "I -2xb","hm": "I b 1 1","id": "I_b_1_1","jmolId": "9:-a3","set": 18,"sg": 9,"trm": "-b,c,-a-c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "a","mult": 4 } ] } } ],"n": 18,"sg": 9 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_90.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_90.json new file mode 100755 index 000000000000..83390a1632cc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_90.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "90:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","-x+1/2,y+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","y,x,-z","-y,-x,-z" ],"hm": "P 4 21 2","id": "P_4_21_2","jmolId": "90:p","set": 1,"sg": 90,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "x,x,1/2","-x,-x,1/2","-x+1/2,x+1/2,1/2","x+1/2,-x+1/2,1/2" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "x,x,0","-x,-x,0","-x+1/2,x+1/2,0","x+1/2,-x+1/2,0" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,z","1/2,1/2,-z","0,0,-z" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,-z" ],"desc": "4..","geom": "line","label": "c","mult": 2 },{ "coord": [ "0,0,1/2","1/2,1/2,1/2" ],"desc": "2.2 2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,0" ],"desc": "2.2 2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "90:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x+1/2,z","-y,-x+1/2,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","-y+1/2,-x,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x+1/2,z","y,-x+1/2,z","-y,-x+1/2,-z","y,x+1/2,-z","-x,y,-z","x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z","y+1/2,-x,z","-y+1/2,-x,-z","y+1/2,x,-z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z" ],"hm": "C 4 2 21","id": "C_4_2_21","jmolId": "90:c","set": 2,"sg": 90,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "0,x,1/2","0,-x,1/2","-x,1/2,1/2","x,1/2,1/2" ],"desc": "..2","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,x,0","0,-x,0","-x,1/2,0","x,1/2,0" ],"desc": "..2","geom": "line","label": "e","mult": 8 },{ "coord": [ "0,0,z","0,1/2,z","0,1/2,-z","0,0,-z" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,-z" ],"desc": "4..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","0,1/2,1/2" ],"desc": "2.2 2","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,0" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "90:a+b,-a+b,c","det": 2.0,"hm": "C 4 2 21","id": "C_4_2_21","more": true,"sg": 90,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 90 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_91.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_91.json new file mode 100755 index 000000000000..99060c30ceee --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_91.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "91:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x,z+1/4","-x,y,-z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x,z+1/4","y,-x,z+3/4","-x,y,-z","x,-y,-z+1/2","y,x,-z+3/4","-y,-x,-z+1/4" ],"hall": "P 4w 2c","hm": "P 41 2 2","id": "P_41_2_2","jmolId": "91","set": 1,"sg": 91,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "x,x,3/8","-x,-x,7/8","-x,x,5/8","x,-x,1/8" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,y,0","1/2,-y,1/2","-y,1/2,1/4","y,1/2,3/4" ],"desc": ".2.","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,y,0","0,-y,1/2","-y,0,1/4","y,0,3/4" ],"desc": ".2.","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "91:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x,z+1/4","-y,-x,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/4","-y+1/2,-x+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x,z+1/4","y,-x,z+3/4","-y,-x,-z","y,x,-z+1/2","-x,y,-z+3/4","x,-y,-z+1/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/4","y+1/2,-x+1/2,z+3/4","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z+1/2","-x+1/2,y+1/2,-z+3/4","x+1/2,-y+1/2,-z+1/4" ],"hm": "C 41 2 2","id": "C_41_2_2","jmolId": "91:c","set": 2,"sg": 91,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 16 },{ "coord": [ "0,x,3/8","0,-x,7/8","-x,0,5/8","x,0,1/8" ],"desc": "..2","geom": "line","label": "c","mult": 8 },{ "coord": [ "-1/2y+1/4,1/2y+1/4,0","1/2y+1/4,-1/2y+1/4,1/2","-1/2y+3/4,-1/2y+1/4,1/4","1/2y+3/4,1/2y+1/4,3/4" ],"desc": ".2.","geom": "line","label": "b","mult": 8 },{ "coord": [ "-1/2y,1/2y,0","1/2y,-1/2y,1/2","-1/2y,-1/2y,1/4","1/2y,1/2y,3/4" ],"desc": ".2.","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "91:a+b,-a+b,c","det": 2.0,"hm": "C 41 2 2","id": "C_41_2_2","more": true,"sg": 91,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 91 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_92.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_92.json new file mode 100755 index 000000000000..f815369792e4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_92.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "92:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y+1/2,x+1/2,z+1/4","-x+1/2,y+1/2,-z+1/4" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y+1/2,x+1/2,z+1/4","y+1/2,-x+1/2,z+3/4","-x+1/2,y+1/2,-z+1/4","x+1/2,-y+1/2,-z+3/4","y,x,-z","-y,-x,-z+1/2" ],"hm": "P 41 21 2","id": "P_41_21_2","jmolId": "92:p","set": 1,"sg": 92,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "x,x,0","-x,-x,1/2","-x+1/2,x+1/2,1/4","x+1/2,-x+1/2,3/4" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "92:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x+1/2,z+1/4","-y,-x+1/2,-z+1/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x,z+1/4","-y+1/2,-x,-z+1/4" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x+1/2,z+1/4","y,-x+1/2,z+3/4","-y,-x+1/2,-z+1/4","y,x+1/2,-z+3/4","-x,y,-z","x,-y,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x,z+1/4","y+1/2,-x,z+3/4","-y+1/2,-x,-z+1/4","y+1/2,x,-z+3/4","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z+1/2" ],"hm": "C 41 2 21","id": "C_41_2_21","jmolId": "92:c","set": 2,"sg": 92,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 16 },{ "coord": [ "0,x,0","0,-x,1/2","-x,1/2,1/4","x,1/2,3/4" ],"desc": "..2","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "92:a+b,-a+b,c","det": 2.0,"hm": "C 41 2 21","id": "C_41_2_21","more": true,"sg": 92,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 92 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_93.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_93.json new file mode 100755 index 000000000000..3d48b8429aeb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_93.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "93:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-x,y,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-x,y,-z","x,-y,-z","y,x,-z+1/2","-y,-x,-z+1/2" ],"hall": "P 4c 2","hm": "P 42 2 2","id": "P_42_2_2","jmolId": "93","set": 1,"sg": 93,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "p","mult": 8 },{ "coord": [ "x,x,3/4","-x,-x,3/4","-x,x,1/4","x,-x,1/4" ],"desc": "..2","geom": "line","label": "o","mult": 4 },{ "coord": [ "x,x,1/4","-x,-x,1/4","-x,x,3/4","x,-x,3/4" ],"desc": "..2","geom": "line","label": "n","mult": 4 },{ "coord": [ "x,1/2,0","-x,1/2,0","1/2,x,1/2","1/2,-x,1/2" ],"desc": ".2.","geom": "line","label": "m","mult": 4 },{ "coord": [ "x,0,1/2","-x,0,1/2","0,x,0","0,-x,0" ],"desc": ".2.","geom": "line","label": "l","mult": 4 },{ "coord": [ "x,1/2,1/2","-x,1/2,1/2","1/2,x,0","1/2,-x,0" ],"desc": ".2.","geom": "line","label": "k","mult": 4 },{ "coord": [ "x,0,0","-x,0,0","0,x,1/2","0,-x,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 4 },{ "coord": [ "0,1/2,z","1/2,0,z+1/2","0,1/2,-z","1/2,0,-z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 4 },{ "coord": [ "1/2,1/2,z","1/2,1/2,z+1/2","1/2,1/2,-z","1/2,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 4 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 4 },{ "coord": [ "1/2,1/2,1/4","1/2,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "f","mult": 2 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "e","mult": 2 },{ "coord": [ "0,1/2,1/2","1/2,0,0" ],"desc": "222 .","geom": "point","label": "d","mult": 2 },{ "coord": [ "0,1/2,0","1/2,0,1/2" ],"desc": "222 .","geom": "point","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,0","1/2,1/2,1/2" ],"desc": "222 .","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "222 .","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "93:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z+1/2","-y,-x,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","-y+1/2,-x+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z+1/2","y,-x,z+1/2","-y,-x,-z","y,x,-z","-x,y,-z+1/2","x,-y,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2" ],"hm": "C 42 2 2","id": "C_42_2_2","jmolId": "93:c","set": 2,"sg": 93,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "p","mult": 16 },{ "coord": [ "0,x,3/4","0,-x,3/4","-x,0,1/4","x,0,1/4" ],"desc": "..2","geom": "line","label": "o","mult": 8 },{ "coord": [ "0,x,1/4","0,-x,1/4","-x,0,3/4","x,0,3/4" ],"desc": "..2","geom": "line","label": "n","mult": 8 },{ "coord": [ "1/2x+3/4,1/2x+1/4,0","-1/2x+3/4,-1/2x+1/4,0","-1/2x+1/4,1/2x+1/4,1/2","1/2x+1/4,-1/2x+1/4,1/2" ],"desc": ".2.","geom": "line","label": "m","mult": 8 },{ "coord": [ "1/2x,1/2x,1/2","-1/2x,-1/2x,1/2","-1/2x,1/2x,0","1/2x,-1/2x,0" ],"desc": ".2.","geom": "line","label": "l","mult": 8 },{ "coord": [ "1/2x+3/4,1/2x+1/4,1/2","-1/2x+3/4,-1/2x+1/4,1/2","-1/2x+1/4,1/2x+1/4,0","1/2x+1/4,-1/2x+1/4,0" ],"desc": ".2.","geom": "line","label": "k","mult": 8 },{ "coord": [ "1/2x,1/2x,0","-1/2x,-1/2x,0","-1/2x,1/2x,1/2","1/2x,-1/2x,1/2" ],"desc": ".2.","geom": "line","label": "j","mult": 8 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z+1/2","3/4,1/4,-z","1/4,1/4,-z+1/2" ],"desc": "2..","geom": "line","label": "i","mult": 8 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2","0,1/2,-z","0,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "h","mult": 8 },{ "coord": [ "0,0,z","0,0,z+1/2","0,0,-z","0,0,-z+1/2" ],"desc": "2..","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/2,1/4","0,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "f","mult": 4 },{ "coord": [ "0,0,1/4","0,0,3/4" ],"desc": "2.2 2","geom": "point","label": "e","mult": 4 },{ "coord": [ "3/4,1/4,1/2","1/4,1/4,0" ],"desc": "222 .","geom": "point","label": "d","mult": 4 },{ "coord": [ "3/4,1/4,0","1/4,1/4,1/2" ],"desc": "222 .","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,1/2,0","0,1/2,1/2" ],"desc": "222 .","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,0,1/2" ],"desc": "222 .","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "93:a+b,-a+b,c","det": 2.0,"hm": "C 42 2 2","id": "C_42_2_2","more": true,"sg": 93,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 93 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_94.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_94.json new file mode 100755 index 000000000000..b86862e26c2b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_94.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "94:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","y,x,-z","-y,-x,-z" ],"hm": "P 42 21 2","id": "P_42_21_2","jmolId": "94:p","set": 1,"sg": 94,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "x,x,1/2","-x,-x,1/2","-x+1/2,x+1/2,0","x+1/2,-x+1/2,0" ],"desc": "..2","geom": "line","label": "f","mult": 4 },{ "coord": [ "x,x,0","-x,-x,0","-x+1/2,x+1/2,1/2","x+1/2,-x+1/2,1/2" ],"desc": "..2","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,z","0,1/2,z+1/2","1/2,0,-z+1/2","1/2,0,-z" ],"desc": "2..","geom": "line","label": "d","mult": 4 },{ "coord": [ "0,0,z","1/2,1/2,z+1/2","1/2,1/2,-z+1/2","0,0,-z" ],"desc": "2..","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,0,1/2","1/2,1/2,0" ],"desc": "2.2 2","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0","1/2,1/2,1/2" ],"desc": "2.2 2","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "94:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x+1/2,z+1/2","-y,-x+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","-y+1/2,-x,-z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","-y,-x+1/2,-z+1/2","y,x+1/2,-z+1/2","-x,y,-z","x,-y,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","-y+1/2,-x,-z+1/2","y+1/2,x,-z+1/2","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z" ],"hm": "C 42 2 21","id": "C_42_2_21","jmolId": "94:c","set": 2,"sg": 94,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "0,x,1/2","0,-x,1/2","-x,1/2,0","x,1/2,0" ],"desc": "..2","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,x,0","0,-x,0","-x,1/2,1/2","x,1/2,1/2" ],"desc": "..2","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,z","3/4,1/4,z+1/2","1/4,1/4,-z+1/2","1/4,1/4,-z" ],"desc": "2..","geom": "line","label": "d","mult": 8 },{ "coord": [ "0,0,z","0,1/2,z+1/2","0,1/2,-z+1/2","0,0,-z" ],"desc": "2..","geom": "line","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,0" ],"desc": "2.2 2","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/2" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "94:a+b,-a+b,c","det": 2.0,"hm": "C 42 2 21","id": "C_42_2_21","more": true,"sg": 94,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 94 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_95.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_95.json new file mode 100755 index 000000000000..c7f4187128cb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_95.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "95:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x,z+3/4","-x,y,-z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x,z+3/4","y,-x,z+1/4","-x,y,-z","x,-y,-z+1/2","y,x,-z+1/4","-y,-x,-z+3/4" ],"hall": "P 4cw 2c","hm": "P 43 2 2","id": "P_43_2_2","jmolId": "95","set": 1,"sg": 95,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "d","mult": 8 },{ "coord": [ "x,x,5/8","-x,-x,1/8","-x,x,3/8","x,-x,7/8" ],"desc": "..2","geom": "line","label": "c","mult": 4 },{ "coord": [ "1/2,y,0","1/2,-y,1/2","-y,1/2,3/4","y,1/2,1/4" ],"desc": ".2.","geom": "line","label": "b","mult": 4 },{ "coord": [ "0,y,0","0,-y,1/2","-y,0,3/4","y,0,1/4" ],"desc": ".2.","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "95:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x,z+3/4","-y,-x,-z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+3/4","-y+1/2,-x+1/2,-z" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x,z+3/4","y,-x,z+1/4","-y,-x,-z","y,x,-z+1/2","-x,y,-z+1/4","x,-y,-z+3/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+3/4","y+1/2,-x+1/2,z+1/4","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z+1/2","-x+1/2,y+1/2,-z+1/4","x+1/2,-y+1/2,-z+3/4" ],"hm": "C 43 2 2","id": "C_43_2_2","jmolId": "95:c","set": 2,"sg": 95,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "d","mult": 16 },{ "coord": [ "0,x,5/8","0,-x,1/8","-x,0,3/8","x,0,7/8" ],"desc": "..2","geom": "line","label": "c","mult": 8 },{ "coord": [ "-1/2y+1/4,1/2y+1/4,0","1/2y+1/4,-1/2y+1/4,1/2","-1/2y+3/4,-1/2y+1/4,3/4","1/2y+3/4,1/2y+1/4,1/4" ],"desc": ".2.","geom": "line","label": "b","mult": 8 },{ "coord": [ "-1/2y,1/2y,0","1/2y,-1/2y,1/2","-1/2y,-1/2y,3/4","1/2y,1/2y,1/4" ],"desc": ".2.","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "95:a+b,-a+b,c","det": 2.0,"hm": "C 43 2 2","id": "C_43_2_2","more": true,"sg": 95,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 95 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_96.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_96.json new file mode 100755 index 000000000000..e193d560024f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_96.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "96:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y+1/2,x+1/2,z+3/4","-x+1/2,y+1/2,-z+3/4" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y+1/2,x+1/2,z+3/4","y+1/2,-x+1/2,z+1/4","-x+1/2,y+1/2,-z+3/4","x+1/2,-y+1/2,-z+1/4","y,x,-z","-y,-x,-z+1/2" ],"hm": "P 43 21 2","id": "P_43_21_2","jmolId": "96:p","set": 1,"sg": 96,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "b","mult": 8 },{ "coord": [ "x,x,0","-x,-x,1/2","-x+1/2,x+1/2,3/4","x+1/2,-x+1/2,1/4" ],"desc": "..2","geom": "line","label": "a","mult": 4 } ] } },{ "clegId": "96:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z+1/2","-y,x+1/2,z+3/4","-y,-x+1/2,-z+3/4","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x,z+3/4","-y+1/2,-x,-z+3/4" ],"gp": [ "x,y,z","-x,-y,z+1/2","-y,x+1/2,z+3/4","y,-x+1/2,z+1/4","-y,-x+1/2,-z+3/4","y,x+1/2,-z+1/4","-x,y,-z","x,-y,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z+1/2","-y+1/2,x,z+3/4","y+1/2,-x,z+1/4","-y+1/2,-x,-z+3/4","y+1/2,x,-z+1/4","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z+1/2" ],"hm": "C 43 2 21","id": "C_43_2_21","jmolId": "96:c","set": 2,"sg": 96,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "b","mult": 16 },{ "coord": [ "0,x,0","0,-x,1/2","-x,1/2,3/4","x,1/2,1/4" ],"desc": "..2","geom": "line","label": "a","mult": 8 } ] } },{ "clegId": "96:a+b,-a+b,c","det": 2.0,"hm": "C 43 2 21","id": "C_43_2_21","more": true,"sg": 96,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 96 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_97.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_97.json new file mode 100755 index 000000000000..014276e69437 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_97.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "97:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-x,y,-z","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-x,y,-z","x,-y,-z","y,x,-z","-y,-x,-z","x+1/2,y+1/2,z+1/2","-x+1/2,-y+1/2,z+1/2","-y+1/2,x+1/2,z+1/2","y+1/2,-x+1/2,z+1/2","-x+1/2,y+1/2,-z+1/2","x+1/2,-y+1/2,-z+1/2","y+1/2,x+1/2,-z+1/2","-y+1/2,-x+1/2,-z+1/2" ],"hall": "I 4 2","hm": "I 4 2 2","id": "I_4_2_2","jmolId": "97","set": 1,"sg": 97,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 16 },{ "coord": [ "x,x+1/2,1/4","-x,-x+1/2,1/4","-x+1/2,x,1/4","x+1/2,-x,1/4" ],"desc": "..2","geom": "line","label": "j","mult": 8 },{ "coord": [ "x,0,1/2","-x,0,1/2","0,x,1/2","0,-x,1/2" ],"desc": ".2.","geom": "line","label": "i","mult": 8 },{ "coord": [ "x,0,0","-x,0,0","0,x,0","0,-x,0" ],"desc": ".2.","geom": "line","label": "h","mult": 8 },{ "coord": [ "x,x,0","-x,-x,0","-x,x,0","x,-x,0" ],"desc": "..2","geom": "line","label": "g","mult": 8 },{ "coord": [ "0,1/2,z","1/2,0,z","0,1/2,-z","1/2,0,-z" ],"desc": "2..","geom": "line","label": "f","mult": 8 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4..","geom": "line","label": "e","mult": 4 },{ "coord": [ "0,1/2,1/4","1/2,0,1/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 4 },{ "coord": [ "0,1/2,0","1/2,0,0" ],"desc": "222 .","geom": "point","label": "c","mult": 4 },{ "coord": [ "0,0,1/2" ],"desc": "422","geom": "point","label": "b","mult": 2 },{ "coord": [ "0,0,0" ],"desc": "422","geom": "point","label": "a","mult": 2 } ] } },{ "clegId": "97:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","-y,-x,-z","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","-y+1/2,-x+1/2,-z","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","-y,-x,-z","y,x,-z","-x,y,-z","x,-y,-z","x,y+1/2,z+1/2","-x,-y+1/2,z+1/2","-y,x+1/2,z+1/2","y,-x+1/2,z+1/2","-y,-x+1/2,-z+1/2","y,x+1/2,-z+1/2","-x,y+1/2,-z+1/2","x,-y+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","-y+1/2,-x+1/2,-z","y+1/2,x+1/2,-z","-x+1/2,y+1/2,-z","x+1/2,-y+1/2,-z","x+1/2,y,z+1/2","-x+1/2,-y,z+1/2","-y+1/2,x,z+1/2","y+1/2,-x,z+1/2","-y+1/2,-x,-z+1/2","y+1/2,x,-z+1/2","-x+1/2,y,-z+1/2","x+1/2,-y,-z+1/2" ],"hall": "F 4 2","hm": "F 4 2 2","id": "F_4_2_2","jmolId": "97:f","set": 2,"sg": 97,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "k","mult": 32 },{ "coord": [ "3/4,x+1/4,1/4","3/4,-x+1/4,1/4","-x+1/4,1/4,1/4","x+1/4,1/4,1/4" ],"desc": "..2","geom": "line","label": "j","mult": 16 },{ "coord": [ "1/2x,1/2x,1/2","-1/2x,-1/2x,1/2","-1/2x,1/2x,1/2","1/2x,-1/2x,1/2" ],"desc": ".2.","geom": "line","label": "i","mult": 16 },{ "coord": [ "1/2x,1/2x,0","-1/2x,-1/2x,0","-1/2x,1/2x,0","1/2x,-1/2x,0" ],"desc": ".2.","geom": "line","label": "h","mult": 16 },{ "coord": [ "0,x,0","0,-x,0","-x,0,0","x,0,0" ],"desc": "..2","geom": "line","label": "g","mult": 16 },{ "coord": [ "3/4,1/4,z","1/4,1/4,z","3/4,1/4,-z","1/4,1/4,-z" ],"desc": "2..","geom": "line","label": "f","mult": 16 },{ "coord": [ "0,0,z","0,0,-z" ],"desc": "4..","geom": "line","label": "e","mult": 8 },{ "coord": [ "3/4,1/4,1/4","1/4,1/4,1/4" ],"desc": "2.2 2","geom": "point","label": "d","mult": 8 },{ "coord": [ "3/4,1/4,0","1/4,1/4,0" ],"desc": "222 .","geom": "point","label": "c","mult": 8 },{ "coord": [ "0,0,1/2" ],"desc": "422","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0" ],"desc": "422","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "97:a+b,-a+b,c","det": 2.0,"hm": "F 4 2 2","id": "F_4_2_2","more": true,"sg": 97,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 97 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_98.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_98.json new file mode 100755 index 000000000000..3dc6248ad654 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_98.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "98:a,b,c","det": 1.0,"gen": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","-x+1/2,y,-z+3/4","x+1/2,y+1/2,z+1/2" ],"gp": [ "x,y,z","-x+1/2,-y+1/2,z+1/2","-y,x+1/2,z+1/4","y+1/2,-x,z+3/4","-x+1/2,y,-z+3/4","x,-y+1/2,-z+1/4","y+1/2,x+1/2,-z+1/2","-y,-x,-z","x+1/2,y+1/2,z+1/2","-x,-y,z","-y+1/2,x,z+3/4","y,-x+1/2,z+1/4","-x,y+1/2,-z+1/4","x+1/2,-y,-z+3/4","y,x,-z","-y+1/2,-x+1/2,-z+1/2" ],"hall": "I 4bw 2bw","hm": "I 41 2 2","id": "I_41_2_2","jmolId": "98","set": 1,"sg": 98,"trm": "a,b,c","wpos": { "cent": [ "1/2,1/2,1/2" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "x,1/4,1/8","-x+1/2,1/4,5/8","3/4,x+1/2,3/8","3/4,-x,7/8" ],"desc": ".2.","geom": "line","label": "f","mult": 8 },{ "coord": [ "-x,x,0","x+1/2,-x+1/2,1/2","-x,-x+1/2,1/4","x+1/2,x,3/4" ],"desc": "..2","geom": "line","label": "e","mult": 8 },{ "coord": [ "x,x,0","-x+1/2,-x+1/2,1/2","-x,x+1/2,1/4","x+1/2,-x,3/4" ],"desc": "..2","geom": "line","label": "d","mult": 8 },{ "coord": [ "0,0,z","0,1/2,z+1/4","1/2,0,-z+3/4","1/2,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 8 },{ "coord": [ "0,0,1/2","0,1/2,3/4" ],"desc": "2.2 2","geom": "point","label": "b","mult": 4 },{ "coord": [ "0,0,0","0,1/2,1/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 4 } ] } },{ "clegId": "98:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y+1/2,z+1/2","-y+3/4,x+1/4,z+1/4","-y+1/4,-x+1/4,-z+3/4","x,y+1/2,z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","-y+3/4,-x+3/4,-z+3/4","x+1/2,y,z+1/2" ],"gp": [ "x,y,z","-x,-y+1/2,z+1/2","-y+3/4,x+1/4,z+1/4","y+1/4,-x+1/4,z+3/4","-y+1/4,-x+1/4,-z+3/4","y+3/4,x+1/4,-z+1/4","-x,y+1/2,-z+1/2","x,-y,-z","x,y+1/2,z+1/2","-x,-y,z","-y+1/4,x+1/4,z+3/4","y+3/4,-x+1/4,z+1/4","-y+3/4,-x+1/4,-z+1/4","y+1/4,x+1/4,-z+3/4","-x,y,-z","x,-y+1/2,-z+1/2","x+1/2,y+1/2,z","-x+1/2,-y,z+1/2","-y+1/4,x+3/4,z+1/4","y+3/4,-x+3/4,z+3/4","-y+3/4,-x+3/4,-z+3/4","y+1/4,x+3/4,-z+1/4","-x+1/2,y,-z+1/2","x+1/2,-y+1/2,-z","x+1/2,y,z+1/2","-x+1/2,-y+1/2,z","-y+3/4,x+3/4,z+3/4","y+1/4,-x+3/4,z+1/4","-y+1/4,-x+3/4,-z+1/4","y+3/4,x+3/4,-z+3/4","-x+1/2,y+1/2,-z","x+1/2,-y,-z+1/2" ],"hm": "F 41 2 2","id": "F_41_2_2","jmolId": "98:f","set": 2,"sg": 98,"trm": "a-b,a+b,c","wpos": { "cent": [ "0,1/2,1/2","1/2,0,1/2","1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 32 },{ "coord": [ "1/2x+7/8,1/2x+1/8,1/8","-1/2x+1/8,-1/2x+3/8,5/8","-1/2x+1/8,1/2x+5/8,3/8","1/2x+3/8,-1/2x+3/8,7/8" ],"desc": ".2.","geom": "line","label": "f","mult": 16 },{ "coord": [ "-x,0,0","x,1/2,1/2","3/4,-x+1/4,1/4","1/4,x+1/4,3/4" ],"desc": "..2","geom": "line","label": "e","mult": 16 },{ "coord": [ "0,x,0","0,-x+1/2,1/2","-x+3/4,1/4,1/4","x+1/4,1/4,3/4" ],"desc": "..2","geom": "line","label": "d","mult": 16 },{ "coord": [ "0,0,z","3/4,1/4,z+1/4","1/4,1/4,-z+3/4","0,1/2,-z+1/2" ],"desc": "2..","geom": "line","label": "c","mult": 16 },{ "coord": [ "0,0,1/2","3/4,1/4,3/4" ],"desc": "2.2 2","geom": "point","label": "b","mult": 8 },{ "coord": [ "0,0,0","3/4,1/4,1/4" ],"desc": "2.2 2","geom": "point","label": "a","mult": 8 } ] } },{ "clegId": "98:a+b,-a+b,c","det": 2.0,"hm": "F 41 2 2","id": "F_41_2_2","more": true,"sg": 98,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 98 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_99.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_99.json new file mode 100755 index 000000000000..c7fc3973c5cc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_99.json @@ -0,0 +1 @@ +{ "its": [ { "clegId": "99:a,b,c","det": 1.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","x,-y,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","x,-y,z","-x,y,z","-y,-x,z","y,x,z" ],"hall": "P 4 -2","hm": "P 4 m m","id": "P_4_m_m","jmolId": "99","set": 1,"sg": 99,"trm": "a,b,c","wpos": { "pos": [ { "desc": "1","geom": "general","label": "g","mult": 8 },{ "coord": [ "x,1/2,z","-x,1/2,z","1/2,x,z","1/2,-x,z" ],"desc": ".m.","geom": "plane","label": "f","mult": 4 },{ "coord": [ "x,0,z","-x,0,z","0,x,z","0,-x,z" ],"desc": ".m.","geom": "plane","label": "e","mult": 4 },{ "coord": [ "x,x,z","-x,-x,z","-x,x,z","x,-x,z" ],"desc": "..m","geom": "plane","label": "d","mult": 4 },{ "coord": [ "1/2,0,z","0,1/2,z" ],"desc": "2mm .","geom": "line","label": "c","mult": 2 },{ "coord": [ "1/2,1/2,z" ],"desc": "4mm","geom": "line","label": "b","mult": 1 },{ "coord": [ "0,0,z" ],"desc": "4mm","geom": "line","label": "a","mult": 1 } ] } },{ "clegId": "99:a-b,a+b,c","det": 2.0,"gen": [ "x,y,z","-x,-y,z","-y,x,z","y,x,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,x+1/2,z" ],"gp": [ "x,y,z","-x,-y,z","-y,x,z","y,-x,z","y,x,z","-y,-x,z","x,-y,z","-x,y,z","x+1/2,y+1/2,z","-x+1/2,-y+1/2,z","-y+1/2,x+1/2,z","y+1/2,-x+1/2,z","y+1/2,x+1/2,z","-y+1/2,-x+1/2,z","x+1/2,-y+1/2,z","-x+1/2,y+1/2,z" ],"hall": "C 4 -2","hm": "C 4 m m","id": "C_4_m_m","jmolId": "99:c","set": 2,"sg": 99,"trm": "a-b,a+b,c","wpos": { "cent": [ "1/2,1/2,0" ],"pos": [ { "desc": "1","geom": "general","label": "g","mult": 16 },{ "coord": [ "1/2x+3/4,1/2x+1/4,z","-1/2x+3/4,-1/2x+1/4,z","-1/2x+1/4,1/2x+1/4,z","1/2x+1/4,-1/2x+1/4,z" ],"desc": ".m.","geom": "plane","label": "f","mult": 8 },{ "coord": [ "1/2x,1/2x,z","-1/2x,-1/2x,z","-1/2x,1/2x,z","1/2x,-1/2x,z" ],"desc": ".m.","geom": "plane","label": "e","mult": 8 },{ "coord": [ "0,x,z","0,-x,z","-x,0,z","x,0,z" ],"desc": "..m","geom": "plane","label": "d","mult": 8 },{ "coord": [ "1/4,1/4,z","3/4,1/4,z" ],"desc": "2mm .","geom": "line","label": "c","mult": 4 },{ "coord": [ "0,1/2,z" ],"desc": "4mm","geom": "line","label": "b","mult": 2 },{ "coord": [ "0,0,z" ],"desc": "4mm","geom": "line","label": "a","mult": 2 } ] } },{ "clegId": "99:a+b,-a+b,c","det": 2.0,"hm": "C 4 m m","id": "C_4_m_m","more": true,"sg": 99,"trm": "a+b,-a+b,c" } ],"n": 3,"sg": 99 } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_all.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_all.json new file mode 100755 index 000000000000..cd97ca1f99b4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/ita_all.json @@ -0,0 +1 @@ +[ { "clegId": "1:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 1","hm": "P 1","id": "P_1","jmolId": "1","set": 1,"sg": 1,"trm": "a,b,c","wpos": { } },{ "clegId": "2:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 1","hm": "P -1","id": "P_-1","jmolId": "2","set": 1,"sg": 2,"trm": "a,b,c","wpos": { } },{ "clegId": "3:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2y","hm": "P 1 2 1","id": "P_1_2_1","jmolId": "3:b","set": 1,"sg": 3,"trm": "a,b,c","wpos": { } },{ "clegId": "3:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2","hm": "P 1 1 2","id": "P_1_1_2","jmolId": "3:c","set": 2,"sg": 3,"trm": "c,a,b","wpos": { } },{ "clegId": "3:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2x","hm": "P 2 1 1","id": "P_2_1_1","jmolId": "3:a","set": 3,"sg": 3,"trm": "b,c,a","wpos": { } },{ "clegId": "4:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2yb","hm": "P 1 21 1","id": "P_1_21_1","jmolId": "4:b","set": 1,"sg": 4,"trm": "a,b,c","wpos": { } },{ "clegId": "4:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2c","hm": "P 1 1 21","id": "P_1_1_21","jmolId": "4:c","set": 2,"sg": 4,"trm": "c,a,b","wpos": { } },{ "clegId": "4:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2xa","hm": "P 21 1 1","id": "P_21_1_1","jmolId": "4:a","set": 3,"sg": 4,"trm": "b,c,a","wpos": { } },{ "clegId": "5:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2y","hm": "C 1 2 1","id": "C_1_2_1","jmolId": "5:b1","set": 1,"sg": 5,"trm": "a,b,c","wpos": { } },{ "clegId": "5:-a-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2y","hm": "A 1 2 1","id": "A_1_2_1","jmolId": "5:b2","set": 2,"sg": 5,"trm": "-a-c,b,a","wpos": { } },{ "clegId": "5:c,b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2y","hm": "I 1 2 1","id": "I_1_2_1","jmolId": "5:b3","set": 3,"sg": 5,"trm": "c,b,-a-c","wpos": { } },{ "clegId": "5:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2","hm": "A 1 1 2","id": "A_1_1_2","jmolId": "5:c1","set": 4,"sg": 5,"trm": "c,a,b","wpos": { } },{ "clegId": "5:a,-a-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2","hm": "B 1 1 2","id": "B_1_1_2","jmolId": "5:c2","set": 5,"sg": 5,"trm": "a,-a-c,b","wpos": { } },{ "clegId": "5:-a-c,c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2","hm": "I 1 1 2","id": "I_1_1_2","jmolId": "5:c3","set": 6,"sg": 5,"trm": "-a-c,c,b","wpos": { } },{ "clegId": "5:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2x","hm": "B 2 1 1","id": "B_2_1_1","jmolId": "5:a1","set": 7,"sg": 5,"trm": "b,c,a","wpos": { } },{ "clegId": "5:b,a,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2x","hm": "C 2 1 1","id": "C_2_1_1","jmolId": "5:a2","set": 8,"sg": 5,"trm": "b,a,-a-c","wpos": { } },{ "clegId": "5:b,-a-c,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2x","hm": "I 2 1 1","id": "I_2_1_1","jmolId": "5:a3","set": 9,"sg": 5,"trm": "b,-a-c,c","wpos": { } },{ "clegId": "6:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2y","hm": "P 1 m 1","id": "P_1_m_1","jmolId": "6:b","set": 1,"sg": 6,"trm": "a,b,c","wpos": { } },{ "clegId": "6:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2","hm": "P 1 1 m","id": "P_1_1_m","jmolId": "6:c","set": 2,"sg": 6,"trm": "c,a,b","wpos": { } },{ "clegId": "6:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2x","hm": "P m 1 1","id": "P_m_1_1","jmolId": "6:a","set": 3,"sg": 6,"trm": "b,c,a","wpos": { } },{ "clegId": "7:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2yc","hm": "P 1 c 1","id": "P_1_c_1","jmolId": "7:b1","set": 1,"sg": 7,"trm": "a,b,c","wpos": { } },{ "clegId": "7:-a-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2yac","hm": "P 1 n 1","id": "P_1_n_1","jmolId": "7:b2","set": 2,"sg": 7,"trm": "-a-c,b,a","wpos": { } },{ "clegId": "7:c,b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ya","hm": "P 1 a 1","id": "P_1_a_1","jmolId": "7:b3","set": 3,"sg": 7,"trm": "c,b,-a-c","wpos": { } },{ "clegId": "7:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2a","hm": "P 1 1 a","id": "P_1_1_a","jmolId": "7:c1","set": 4,"sg": 7,"trm": "c,a,b","wpos": { } },{ "clegId": "7:a,-a-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ab","hm": "P 1 1 n","id": "P_1_1_n","jmolId": "7:c2","set": 5,"sg": 7,"trm": "a,-a-c,b","wpos": { } },{ "clegId": "7:-a-c,c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2b","hm": "P 1 1 b","id": "P_1_1_b","jmolId": "7:c3","set": 6,"sg": 7,"trm": "-a-c,c,b","wpos": { } },{ "clegId": "7:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2xb","hm": "P b 1 1","id": "P_b_1_1","jmolId": "7:a1","set": 7,"sg": 7,"trm": "b,c,a","wpos": { } },{ "clegId": "7:b,a,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2xbc","hm": "P n 1 1","id": "P_n_1_1","jmolId": "7:a2","set": 8,"sg": 7,"trm": "b,a,-a-c","wpos": { } },{ "clegId": "7:b,-a-c,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2xc","hm": "P c 1 1","id": "P_c_1_1","jmolId": "7:a3","set": 9,"sg": 7,"trm": "b,-a-c,c","wpos": { } },{ "clegId": "8:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2y","hm": "C 1 m 1","id": "C_1_m_1","jmolId": "8:b1","set": 1,"sg": 8,"trm": "a,b,c","wpos": { } },{ "clegId": "8:-a-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2y","hm": "A 1 m 1","id": "A_1_m_1","jmolId": "8:b2","set": 2,"sg": 8,"trm": "-a-c,b,a","wpos": { } },{ "clegId": "8:c,b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2y","hm": "I 1 m 1","id": "I_1_m_1","jmolId": "8:b3","set": 3,"sg": 8,"trm": "c,b,-a-c","wpos": { } },{ "clegId": "8:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2","hm": "A 1 1 m","id": "A_1_1_m","jmolId": "8:c1","set": 4,"sg": 8,"trm": "c,a,b","wpos": { } },{ "clegId": "8:a,-a-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2","hm": "B 1 1 m","id": "B_1_1_m","jmolId": "8:c2","set": 5,"sg": 8,"trm": "a,-a-c,b","wpos": { } },{ "clegId": "8:-a-c,c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2","hm": "I 1 1 m","id": "I_1_1_m","jmolId": "8:c3","set": 6,"sg": 8,"trm": "-a-c,c,b","wpos": { } },{ "clegId": "8:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2x","hm": "B m 1 1","id": "B_m_1_1","jmolId": "8:a1","set": 7,"sg": 8,"trm": "b,c,a","wpos": { } },{ "clegId": "8:b,a,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2x","hm": "C m 1 1","id": "C_m_1_1","jmolId": "8:a2","set": 8,"sg": 8,"trm": "b,a,-a-c","wpos": { } },{ "clegId": "8:b,-a-c,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2x","hm": "I m 1 1","id": "I_m_1_1","jmolId": "8:a3","set": 9,"sg": 8,"trm": "b,-a-c,c","wpos": { } },{ "clegId": "9:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2yc","hm": "C 1 c 1","id": "C_1_c_1","jmolId": "9:b1","set": 1,"sg": 9,"trm": "a,b,c","wpos": { } },{ "clegId": "9:-a-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2yab","hm": "A 1 n 1","id": "A_1_n_1","jmolId": "9:b2","set": 2,"sg": 9,"trm": "-a-c,b,a","wpos": { } },{ "clegId": "9:c,b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2ya","hm": "I 1 a 1","id": "I_1_a_1","jmolId": "9:b3","set": 3,"sg": 9,"trm": "c,b,-a-c","wpos": { } },{ "clegId": "9:c,-b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2ya","hm": "A 1 a 1","id": "A_1_a_1","jmolId": "9:-b1","set": 4,"sg": 9,"trm": "c,-b,a","wpos": { } },{ "clegId": "9:a,-b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2yac","hm": "C 1 n 1","id": "C_1_n_1","jmolId": "9:-b2","set": 5,"sg": 9,"trm": "a,-b,-a-c","wpos": { } },{ "clegId": "9:-a-c,-b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2yc","hm": "I 1 c 1","id": "I_1_c_1","jmolId": "9:-b3","set": 6,"sg": 9,"trm": "-a-c,-b,c","wpos": { } },{ "clegId": "9:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2a","hm": "A 1 1 a","id": "A_1_1_a","jmolId": "9:c1","set": 7,"sg": 9,"trm": "c,a,b","wpos": { } },{ "clegId": "9:a,-a-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2ab","hm": "B 1 1 n","id": "B_1_1_n","jmolId": "9:c2","set": 8,"sg": 9,"trm": "a,-a-c,b","wpos": { } },{ "clegId": "9:-a-c,c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2b","hm": "I 1 1 b","id": "I_1_1_b","jmolId": "9:c3","set": 9,"sg": 9,"trm": "-a-c,c,b","wpos": { } },{ "clegId": "9:a,c,-b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2b","hm": "B 1 1 b","id": "B_1_1_b","jmolId": "9:-c1","set": 10,"sg": 9,"trm": "a,c,-b","wpos": { } },{ "clegId": "9:-a-c,a,-b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2ab","hm": "A 1 1 n","id": "A_1_1_n","jmolId": "9:-c2","set": 11,"sg": 9,"trm": "-a-c,a,-b","wpos": { } },{ "clegId": "9:c,-a-c,-b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2a","hm": "I 1 1 a","id": "I_1_1_a","jmolId": "9:-c3","set": 12,"sg": 9,"trm": "c,-a-c,-b","wpos": { } },{ "clegId": "9:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2xb","hm": "B b 1 1","id": "B_b_1_1","jmolId": "9:a1","set": 13,"sg": 9,"trm": "b,c,a","wpos": { } },{ "clegId": "9:b,a,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2xac","hm": "C n 1 1","id": "C_n_1_1","jmolId": "9:a2","set": 14,"sg": 9,"trm": "b,a,-a-c","wpos": { } },{ "clegId": "9:b,-a-c,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2xc","hm": "I c 1 1","id": "I_c_1_1","jmolId": "9:a3","set": 15,"sg": 9,"trm": "b,-a-c,c","wpos": { } },{ "clegId": "9:-b,a,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2xc","hm": "C c 1 1","id": "C_c_1_1","jmolId": "9:-a1","set": 16,"sg": 9,"trm": "-b,a,c","wpos": { } },{ "clegId": "9:-b,-a-c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2xab","hm": "B n 1 1","id": "B_n_1_1","jmolId": "9:-a2","set": 17,"sg": 9,"trm": "-b,-a-c,a","wpos": { } },{ "clegId": "9:-b,c,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2xb","hm": "I b 1 1","id": "I_b_1_1","jmolId": "9:-a3","set": 18,"sg": 9,"trm": "-b,c,-a-c","wpos": { } },{ "clegId": "10:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2y","hm": "P 1 2/m 1","id": "P_1_2/m_1","jmolId": "10:b","set": 1,"sg": 10,"trm": "a,b,c","wpos": { } },{ "clegId": "10:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2","hm": "P 1 1 2/m","id": "P_1_1_2/m","jmolId": "10:c","set": 2,"sg": 10,"trm": "c,a,b","wpos": { } },{ "clegId": "10:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2x","hm": "P 2/m 1 1","id": "P_2/m_1_1","jmolId": "10:a","set": 3,"sg": 10,"trm": "b,c,a","wpos": { } },{ "clegId": "11:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2yb","hm": "P 1 21/m 1","id": "P_1_21/m_1","jmolId": "11:b","set": 1,"sg": 11,"trm": "a,b,c","wpos": { } },{ "clegId": "11:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c","hm": "P 1 1 21/m","id": "P_1_1_21/m","jmolId": "11:c","set": 2,"sg": 11,"trm": "c,a,b","wpos": { } },{ "clegId": "11:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2xa","hm": "P 21/m 1 1","id": "P_21/m_1_1","jmolId": "11:a","set": 3,"sg": 11,"trm": "b,c,a","wpos": { } },{ "clegId": "12:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2y","hm": "C 1 2/m 1","id": "C_1_2/m_1","jmolId": "12:b1","set": 1,"sg": 12,"trm": "a,b,c","wpos": { } },{ "clegId": "12:-a-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2y","hm": "A 1 2/m 1","id": "A_1_2/m_1","jmolId": "12:b2","set": 2,"sg": 12,"trm": "-a-c,b,a","wpos": { } },{ "clegId": "12:c,b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2y","hm": "I 1 2/m 1","id": "I_1_2/m_1","jmolId": "12:b3","set": 3,"sg": 12,"trm": "c,b,-a-c","wpos": { } },{ "clegId": "12:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2","hm": "A 1 1 2/m","id": "A_1_1_2/m","jmolId": "12:c1","set": 4,"sg": 12,"trm": "c,a,b","wpos": { } },{ "clegId": "12:a,-a-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2","hm": "B 1 1 2/m","id": "B_1_1_2/m","jmolId": "12:c2","set": 5,"sg": 12,"trm": "a,-a-c,b","wpos": { } },{ "clegId": "12:-a-c,c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2","hm": "I 1 1 2/m","id": "I_1_1_2/m","jmolId": "12:c3","set": 6,"sg": 12,"trm": "-a-c,c,b","wpos": { } },{ "clegId": "12:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2x","hm": "B 2/m 1 1","id": "B_2/m_1_1","jmolId": "12:a1","set": 7,"sg": 12,"trm": "b,c,a","wpos": { } },{ "clegId": "12:b,a,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2x","hm": "C 2/m 1 1","id": "C_2/m_1_1","jmolId": "12:a2","set": 8,"sg": 12,"trm": "b,a,-a-c","wpos": { } },{ "clegId": "12:b,-a-c,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2x","hm": "I 2/m 1 1","id": "I_2/m_1_1","jmolId": "12:a3","set": 9,"sg": 12,"trm": "b,-a-c,c","wpos": { } },{ "clegId": "13:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2yc","hm": "P 1 2/c 1","id": "P_1_2/c_1","jmolId": "13:b1","set": 1,"sg": 13,"trm": "a,b,c","wpos": { } },{ "clegId": "13:-a-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2yac","hm": "P 1 2/n 1","id": "P_1_2/n_1","jmolId": "13:b2","set": 2,"sg": 13,"trm": "-a-c,b,a","wpos": { } },{ "clegId": "13:c,b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ya","hm": "P 1 2/a 1","id": "P_1_2/a_1","jmolId": "13:b3","set": 3,"sg": 13,"trm": "c,b,-a-c","wpos": { } },{ "clegId": "13:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a","hm": "P 1 1 2/a","id": "P_1_1_2/a","jmolId": "13:c1","set": 4,"sg": 13,"trm": "c,a,b","wpos": { } },{ "clegId": "13:a,-a-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab","hm": "P 1 1 2/n","id": "P_1_1_2/n","jmolId": "13:c2","set": 5,"sg": 13,"trm": "a,-a-c,b","wpos": { } },{ "clegId": "13:-a-c,c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b","hm": "P 1 1 2/b","id": "P_1_1_2/b","jmolId": "13:c3","set": 6,"sg": 13,"trm": "-a-c,c,b","wpos": { } },{ "clegId": "13:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2xb","hm": "P 2/b 1 1","id": "P_2/b_1_1","jmolId": "13:a1","set": 7,"sg": 13,"trm": "b,c,a","wpos": { } },{ "clegId": "13:b,a,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2xbc","hm": "P 2/n 1 1","id": "P_2/n_1_1","jmolId": "13:a2","set": 8,"sg": 13,"trm": "b,a,-a-c","wpos": { } },{ "clegId": "13:b,-a-c,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2xc","hm": "P 2/c 1 1","id": "P_2/c_1_1","jmolId": "13:a3","set": 9,"sg": 13,"trm": "b,-a-c,c","wpos": { } },{ "clegId": "14:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ybc","hm": "P 1 21/c 1","id": "P_1_21/c_1","jmolId": "14:b1","set": 1,"sg": 14,"trm": "a,b,c","wpos": { } },{ "clegId": "14:-a-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2yn","hm": "P 1 21/n 1","id": "P_1_21/n_1","jmolId": "14:b2","set": 2,"sg": 14,"trm": "-a-c,b,a","wpos": { } },{ "clegId": "14:c,b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2yab","hm": "P 1 21/a 1","id": "P_1_21/a_1","jmolId": "14:b3","set": 3,"sg": 14,"trm": "c,b,-a-c","wpos": { } },{ "clegId": "14:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac","hm": "P 1 1 21/a","id": "P_1_1_21/a","jmolId": "14:c1","set": 4,"sg": 14,"trm": "c,a,b","wpos": { } },{ "clegId": "14:a,-a-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n","hm": "P 1 1 21/n","id": "P_1_1_21/n","jmolId": "14:c2","set": 5,"sg": 14,"trm": "a,-a-c,b","wpos": { } },{ "clegId": "14:-a-c,c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc","hm": "P 1 1 21/b","id": "P_1_1_21/b","jmolId": "14:c3","set": 6,"sg": 14,"trm": "-a-c,c,b","wpos": { } },{ "clegId": "14:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2xab","hm": "P 21/b 1 1","id": "P_21/b_1_1","jmolId": "14:a1","set": 7,"sg": 14,"trm": "b,c,a","wpos": { } },{ "clegId": "14:b,a,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2xn","hm": "P 21/n 1 1","id": "P_21/n_1_1","jmolId": "14:a2","set": 8,"sg": 14,"trm": "b,a,-a-c","wpos": { } },{ "clegId": "14:b,-a-c,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2xac","hm": "P 21/c 1 1","id": "P_21/c_1_1","jmolId": "14:a3","set": 9,"sg": 14,"trm": "b,-a-c,c","wpos": { } },{ "clegId": "15:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2yc","hm": "C 1 2/c 1","id": "C_1_2/c_1","jmolId": "15:b1","set": 1,"sg": 15,"trm": "a,b,c","wpos": { } },{ "clegId": "15:-a-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2yab","hm": "A 1 2/n 1","id": "A_1_2/n_1","jmolId": "15:b2","set": 2,"sg": 15,"trm": "-a-c,b,a","wpos": { } },{ "clegId": "15:c,b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2ya","hm": "I 1 2/a 1","id": "I_1_2/a_1","jmolId": "15:b3","set": 3,"sg": 15,"trm": "c,b,-a-c","wpos": { } },{ "clegId": "15:c,-b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2ya","hm": "A 1 2/a 1","id": "A_1_2/a_1","jmolId": "15:-b1","set": 4,"sg": 15,"trm": "c,-b,a","wpos": { } },{ "clegId": "15:a,-b,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2yac","hm": "C 1 2/n 1","id": "C_1_2/n_1","jmolId": "15:-b2","set": 5,"sg": 15,"trm": "a,-b,-a-c","wpos": { } },{ "clegId": "15:-a-c,-b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2yc","hm": "I 1 2/c 1","id": "I_1_2/c_1","jmolId": "15:-b3","set": 6,"sg": 15,"trm": "-a-c,-b,c","wpos": { } },{ "clegId": "15:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2a","hm": "A 1 1 2/a","id": "A_1_1_2/a","jmolId": "15:c1","set": 7,"sg": 15,"trm": "c,a,b","wpos": { } },{ "clegId": "15:a,-a-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2ab","hm": "B 1 1 2/n","id": "B_1_1_2/n","jmolId": "15:c2","set": 8,"sg": 15,"trm": "a,-a-c,b","wpos": { } },{ "clegId": "15:-a-c,c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2b","hm": "I 1 1 2/b","id": "I_1_1_2/b","jmolId": "15:c3","set": 9,"sg": 15,"trm": "-a-c,c,b","wpos": { } },{ "clegId": "15:a,c,-b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2b","hm": "B 1 1 2/b","id": "B_1_1_2/b","jmolId": "15:-c1","set": 10,"sg": 15,"trm": "a,c,-b","wpos": { } },{ "clegId": "15:-a-c,a,-b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2ab","hm": "A 1 1 2/n","id": "A_1_1_2/n","jmolId": "15:-c2","set": 11,"sg": 15,"trm": "-a-c,a,-b","wpos": { } },{ "clegId": "15:c,-a-c,-b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2a","hm": "I 1 1 2/a","id": "I_1_1_2/a","jmolId": "15:-c3","set": 12,"sg": 15,"trm": "c,-a-c,-b","wpos": { } },{ "clegId": "15:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2xb","hm": "B 2/b 1 1","id": "B_2/b_1_1","jmolId": "15:a1","set": 13,"sg": 15,"trm": "b,c,a","wpos": { } },{ "clegId": "15:b,a,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2xac","hm": "C 2/n 1 1","id": "C_2/n_1_1","jmolId": "15:a2","set": 14,"sg": 15,"trm": "b,a,-a-c","wpos": { } },{ "clegId": "15:b,-a-c,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2xc","hm": "I 2/c 1 1","id": "I_2/c_1_1","jmolId": "15:a3","set": 15,"sg": 15,"trm": "b,-a-c,c","wpos": { } },{ "clegId": "15:-b,a,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2xc","hm": "C 2/c 1 1","id": "C_2/c_1_1","jmolId": "15:-a1","set": 16,"sg": 15,"trm": "-b,a,c","wpos": { } },{ "clegId": "15:-b,-a-c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2xab","hm": "B 2/n 1 1","id": "B_2/n_1_1","jmolId": "15:-a2","set": 17,"sg": 15,"trm": "-b,-a-c,a","wpos": { } },{ "clegId": "15:-b,c,-a-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2xb","hm": "I 2/b 1 1","id": "I_2/b_1_1","jmolId": "15:-a3","set": 18,"sg": 15,"trm": "-b,c,-a-c","wpos": { } },{ "clegId": "16:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2","hm": "P 2 2 2","id": "P_2_2_2","jmolId": "16","set": 1,"sg": 16,"trm": "a,b,c","wpos": { } },{ "clegId": "17:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2c 2","hm": "P 2 2 21","id": "P_2_2_21","jmolId": "17","set": 1,"sg": 17,"trm": "a,b,c","wpos": { } },{ "clegId": "17:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2a 2a","hm": "P 21 2 2","id": "P_21_2_2","jmolId": "17:cab","set": 2,"sg": 17,"trm": "c,a,b","wpos": { } },{ "clegId": "17:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2b","hm": "P 2 21 2","id": "P_2_21_2","jmolId": "17:bca","set": 3,"sg": 17,"trm": "b,c,a","wpos": { } },{ "clegId": "18:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2ab","hm": "P 21 21 2","id": "P_21_21_2","jmolId": "18","set": 1,"sg": 18,"trm": "a,b,c","wpos": { } },{ "clegId": "18:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2bc 2","hm": "P 2 21 21","id": "P_2_21_21","jmolId": "18:cab","set": 2,"sg": 18,"trm": "c,a,b","wpos": { } },{ "clegId": "18:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2ac 2ac","hm": "P 21 2 21","id": "P_21_2_21","jmolId": "18:bca","set": 3,"sg": 18,"trm": "b,c,a","wpos": { } },{ "clegId": "19:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2ac 2ab","hm": "P 21 21 21","id": "P_21_21_21","jmolId": "19","set": 1,"sg": 19,"trm": "a,b,c","wpos": { } },{ "clegId": "20:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2c 2","hm": "C 2 2 21","id": "C_2_2_21","jmolId": "20","set": 1,"sg": 20,"trm": "a,b,c","wpos": { } },{ "clegId": "20:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2a 2a","hm": "A 21 2 2","id": "A_21_2_2","jmolId": "20:cab","set": 2,"sg": 20,"trm": "c,a,b","wpos": { } },{ "clegId": "20:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2 2b","hm": "B 2 21 2","id": "B_2_21_2","jmolId": "20:bca","set": 3,"sg": 20,"trm": "b,c,a","wpos": { } },{ "clegId": "21:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2 2","hm": "C 2 2 2","id": "C_2_2_2","jmolId": "21","set": 1,"sg": 21,"trm": "a,b,c","wpos": { } },{ "clegId": "21:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2 2","hm": "A 2 2 2","id": "A_2_2_2","jmolId": "21:cab","set": 2,"sg": 21,"trm": "c,a,b","wpos": { } },{ "clegId": "21:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2 2","hm": "B 2 2 2","id": "B_2_2_2","jmolId": "21:bca","set": 3,"sg": 21,"trm": "b,c,a","wpos": { } },{ "clegId": "22:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 2 2","hm": "F 2 2 2","id": "F_2_2_2","jmolId": "22","set": 1,"sg": 22,"trm": "a,b,c","wpos": { } },{ "clegId": "23:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2 2","hm": "I 2 2 2","id": "I_2_2_2","jmolId": "23","set": 1,"sg": 23,"trm": "a,b,c","wpos": { } },{ "clegId": "24:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2b 2c","hm": "I 21 21 21","id": "I_21_21_21","jmolId": "24","set": 1,"sg": 24,"trm": "a,b,c","wpos": { } },{ "clegId": "25:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 -2","hm": "P m m 2","id": "P_m_m_2","jmolId": "25","set": 1,"sg": 25,"trm": "a,b,c","wpos": { } },{ "clegId": "25:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2 2","hm": "P 2 m m","id": "P_2_m_m","jmolId": "25:cab","set": 2,"sg": 25,"trm": "c,a,b","wpos": { } },{ "clegId": "25:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2 -2","hm": "P m 2 m","id": "P_m_2_m","jmolId": "25:bca","set": 3,"sg": 25,"trm": "b,c,a","wpos": { } },{ "clegId": "26:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2c -2","hm": "P m c 21","id": "P_m_c_21","jmolId": "26","set": 1,"sg": 26,"trm": "a,b,c","wpos": { } },{ "clegId": "26:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2c -2c","hm": "P c m 21","id": "P_c_m_21","jmolId": "26:ba-c","set": 2,"sg": 26,"trm": "b,a,-c","wpos": { } },{ "clegId": "26:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2a 2a","hm": "P 21 m a","id": "P_21_m_a","jmolId": "26:cab","set": 3,"sg": 26,"trm": "c,a,b","wpos": { } },{ "clegId": "26:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2 2a","hm": "P 21 a m","id": "P_21_a_m","jmolId": "26:-cba","set": 4,"sg": 26,"trm": "-c,b,a","wpos": { } },{ "clegId": "26:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2 -2b","hm": "P b 21 m","id": "P_b_21_m","jmolId": "26:bca","set": 5,"sg": 26,"trm": "b,c,a","wpos": { } },{ "clegId": "26:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2b -2","hm": "P m 21 b","id": "P_m_21_b","jmolId": "26:a-cb","set": 6,"sg": 26,"trm": "a,-c,b","wpos": { } },{ "clegId": "27:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 -2c","hm": "P c c 2","id": "P_c_c_2","jmolId": "27","set": 1,"sg": 27,"trm": "a,b,c","wpos": { } },{ "clegId": "27:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2a 2","hm": "P 2 a a","id": "P_2_a_a","jmolId": "27:cab","set": 2,"sg": 27,"trm": "c,a,b","wpos": { } },{ "clegId": "27:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2b -2b","hm": "P b 2 b","id": "P_b_2_b","jmolId": "27:bca","set": 3,"sg": 27,"trm": "b,c,a","wpos": { } },{ "clegId": "28:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 -2a","hm": "P m a 2","id": "P_m_a_2","jmolId": "28","set": 1,"sg": 28,"trm": "a,b,c","wpos": { } },{ "clegId": "28:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 -2b","hm": "P b m 2","id": "P_b_m_2","jmolId": "28:ba-c","set": 2,"sg": 28,"trm": "b,a,-c","wpos": { } },{ "clegId": "28:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2b 2","hm": "P 2 m b","id": "P_2_m_b","jmolId": "28:cab","set": 3,"sg": 28,"trm": "c,a,b","wpos": { } },{ "clegId": "28:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2c 2","hm": "P 2 c m","id": "P_2_c_m","jmolId": "28:-cba","set": 4,"sg": 28,"trm": "-c,b,a","wpos": { } },{ "clegId": "28:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2c -2c","hm": "P c 2 m","id": "P_c_2_m","jmolId": "28:bca","set": 5,"sg": 28,"trm": "b,c,a","wpos": { } },{ "clegId": "28:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2a -2a","hm": "P m 2 a","id": "P_m_2_a","jmolId": "28:a-cb","set": 6,"sg": 28,"trm": "a,-c,b","wpos": { } },{ "clegId": "29:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2c -2ac","hm": "P c a 21","id": "P_c_a_21","jmolId": "29","set": 1,"sg": 29,"trm": "a,b,c","wpos": { } },{ "clegId": "29:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2c -2b","hm": "P b c 21","id": "P_b_c_21","jmolId": "29:ba-c","set": 2,"sg": 29,"trm": "b,a,-c","wpos": { } },{ "clegId": "29:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2b 2a","hm": "P 21 a b","id": "P_21_a_b","jmolId": "29:cab","set": 3,"sg": 29,"trm": "c,a,b","wpos": { } },{ "clegId": "29:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ac 2a","hm": "P 21 c a","id": "P_21_c_a","jmolId": "29:-cba","set": 4,"sg": 29,"trm": "-c,b,a","wpos": { } },{ "clegId": "29:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2bc -2c","hm": "P c 21 b","id": "P_c_21_b","jmolId": "29:bca","set": 5,"sg": 29,"trm": "b,c,a","wpos": { } },{ "clegId": "29:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2a -2ab","hm": "P b 21 a","id": "P_b_21_a","jmolId": "29:a-cb","set": 6,"sg": 29,"trm": "a,-c,b","wpos": { } },{ "clegId": "30:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 -2bc","hm": "P n c 2","id": "P_n_c_2","jmolId": "30","set": 1,"sg": 30,"trm": "a,b,c","wpos": { } },{ "clegId": "30:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 -2ac","hm": "P c n 2","id": "P_c_n_2","jmolId": "30:ba-c","set": 2,"sg": 30,"trm": "b,a,-c","wpos": { } },{ "clegId": "30:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ac 2","hm": "P 2 n a","id": "P_2_n_a","jmolId": "30:cab","set": 3,"sg": 30,"trm": "c,a,b","wpos": { } },{ "clegId": "30:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ab 2","hm": "P 2 a n","id": "P_2_a_n","jmolId": "30:-cba","set": 4,"sg": 30,"trm": "-c,b,a","wpos": { } },{ "clegId": "30:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ab -2ab","hm": "P b 2 n","id": "P_b_2_n","jmolId": "30:bca","set": 5,"sg": 30,"trm": "b,c,a","wpos": { } },{ "clegId": "30:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2bc -2bc","hm": "P n 2 b","id": "P_n_2_b","jmolId": "30:a-cb","set": 6,"sg": 30,"trm": "a,-c,b","wpos": { } },{ "clegId": "31:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2ac -2","hm": "P m n 21","id": "P_m_n_21","jmolId": "31","set": 1,"sg": 31,"trm": "a,b,c","wpos": { } },{ "clegId": "31:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2bc -2bc","hm": "P n m 21","id": "P_n_m_21","jmolId": "31:ba-c","set": 2,"sg": 31,"trm": "b,a,-c","wpos": { } },{ "clegId": "31:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ab 2ab","hm": "P 21 m n","id": "P_21_m_n","jmolId": "31:cab","set": 3,"sg": 31,"trm": "c,a,b","wpos": { } },{ "clegId": "31:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2 2ac","hm": "P 21 n m","id": "P_21_n_m","jmolId": "31:-cba","set": 4,"sg": 31,"trm": "-c,b,a","wpos": { } },{ "clegId": "31:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2 -2bc","hm": "P n 21 m","id": "P_n_21_m","jmolId": "31:bca","set": 5,"sg": 31,"trm": "b,c,a","wpos": { } },{ "clegId": "31:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ab -2","hm": "P m 21 n","id": "P_m_21_n","jmolId": "31:a-cb","set": 6,"sg": 31,"trm": "a,-c,b","wpos": { } },{ "clegId": "32:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 -2ab","hm": "P b a 2","id": "P_b_a_2","jmolId": "32","set": 1,"sg": 32,"trm": "a,b,c","wpos": { } },{ "clegId": "32:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2bc 2","hm": "P 2 c b","id": "P_2_c_b","jmolId": "32:cab","set": 2,"sg": 32,"trm": "c,a,b","wpos": { } },{ "clegId": "32:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ac -2ac","hm": "P c 2 a","id": "P_c_2_a","jmolId": "32:bca","set": 3,"sg": 32,"trm": "b,c,a","wpos": { } },{ "clegId": "33:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2c -2n","hm": "P n a 21","id": "P_n_a_21","jmolId": "33","set": 1,"sg": 33,"trm": "a,b,c","wpos": { } },{ "clegId": "33:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2c -2ab","hm": "P b n 21","id": "P_b_n_21","jmolId": "33:ba-c","set": 2,"sg": 33,"trm": "b,a,-c","wpos": { } },{ "clegId": "33:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2bc 2a","hm": "P 21 n b","id": "P_21_n_b","jmolId": "33:cab","set": 3,"sg": 33,"trm": "c,a,b","wpos": { } },{ "clegId": "33:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2n 2a","hm": "P 21 c n","id": "P_21_c_n","jmolId": "33:-cba","set": 4,"sg": 33,"trm": "-c,b,a","wpos": { } },{ "clegId": "33:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2n -2ac","hm": "P c 21 n","id": "P_c_21_n","jmolId": "33:bca","set": 5,"sg": 33,"trm": "b,c,a","wpos": { } },{ "clegId": "33:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2ac -2n","hm": "P n 21 a","id": "P_n_21_a","jmolId": "33:a-cb","set": 6,"sg": 33,"trm": "a,-c,b","wpos": { } },{ "clegId": "34:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 -2n","hm": "P n n 2","id": "P_n_n_2","jmolId": "34","set": 1,"sg": 34,"trm": "a,b,c","wpos": { } },{ "clegId": "34:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2n 2","hm": "P 2 n n","id": "P_2_n_n","jmolId": "34:cab","set": 2,"sg": 34,"trm": "c,a,b","wpos": { } },{ "clegId": "34:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -2n -2n","hm": "P n 2 n","id": "P_n_2_n","jmolId": "34:bca","set": 3,"sg": 34,"trm": "b,c,a","wpos": { } },{ "clegId": "35:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2 -2","hm": "C m m 2","id": "C_m_m_2","jmolId": "35","set": 1,"sg": 35,"trm": "a,b,c","wpos": { } },{ "clegId": "35:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2 2","hm": "A 2 m m","id": "A_2_m_m","jmolId": "35:cab","set": 2,"sg": 35,"trm": "c,a,b","wpos": { } },{ "clegId": "35:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2 -2","hm": "B m 2 m","id": "B_m_2_m","jmolId": "35:bca","set": 3,"sg": 35,"trm": "b,c,a","wpos": { } },{ "clegId": "36:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2c -2","hm": "C m c 21","id": "C_m_c_21","jmolId": "36","set": 1,"sg": 36,"trm": "a,b,c","wpos": { } },{ "clegId": "36:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2c -2c","hm": "C c m 21","id": "C_c_m_21","jmolId": "36:ba-c","set": 2,"sg": 36,"trm": "b,a,-c","wpos": { } },{ "clegId": "36:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2a 2a","hm": "A 21 m a","id": "A_21_m_a","jmolId": "36:cab","set": 3,"sg": 36,"trm": "c,a,b","wpos": { } },{ "clegId": "36:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2 2a","hm": "A 21 a m","id": "A_21_a_m","jmolId": "36:-cba","set": 4,"sg": 36,"trm": "-c,b,a","wpos": { } },{ "clegId": "36:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2 -2b","hm": "B b 21 m","id": "B_b_21_m","jmolId": "36:bca","set": 5,"sg": 36,"trm": "b,c,a","wpos": { } },{ "clegId": "36:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2b -2","hm": "B m 21 b","id": "B_m_21_b","jmolId": "36:a-cb","set": 6,"sg": 36,"trm": "a,-c,b","wpos": { } },{ "clegId": "37:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2 -2c","hm": "C c c 2","id": "C_c_c_2","jmolId": "37","set": 1,"sg": 37,"trm": "a,b,c","wpos": { } },{ "clegId": "37:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2a 2","hm": "A 2 a a","id": "A_2_a_a","jmolId": "37:cab","set": 2,"sg": 37,"trm": "c,a,b","wpos": { } },{ "clegId": "37:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2b -2b","hm": "B b 2 b","id": "B_b_2_b","jmolId": "37:bca","set": 3,"sg": 37,"trm": "b,c,a","wpos": { } },{ "clegId": "38:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2 -2","hm": "A m m 2","id": "A_m_m_2","jmolId": "38","set": 1,"sg": 38,"trm": "a,b,c","wpos": { } },{ "clegId": "38:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2 -2","hm": "B m m 2","id": "B_m_m_2","jmolId": "38:ba-c","set": 2,"sg": 38,"trm": "b,a,-c","wpos": { } },{ "clegId": "38:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2 2","hm": "B 2 m m","id": "B_2_m_m","jmolId": "38:cab","set": 3,"sg": 38,"trm": "c,a,b","wpos": { } },{ "clegId": "38:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2 2","hm": "C 2 m m","id": "C_2_m_m","jmolId": "38:-cba","set": 4,"sg": 38,"trm": "-c,b,a","wpos": { } },{ "clegId": "38:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2 -2","hm": "C m 2 m","id": "C_m_2_m","jmolId": "38:bca","set": 5,"sg": 38,"trm": "b,c,a","wpos": { } },{ "clegId": "38:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2 -2","hm": "A m 2 m","id": "A_m_2_m","jmolId": "38:a-cb","set": 6,"sg": 38,"trm": "a,-c,b","wpos": { } },{ "clegId": "39:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2 -2b","hm": "A e m 2","id": "A_e_m_2","jmolId": "39","set": 1,"sg": 39,"trm": "a,b,c","wpos": { } },{ "clegId": "39:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2 -2a","hm": "B m e 2","id": "B_m_e_2","jmolId": "39:ba-c","set": 2,"sg": 39,"trm": "b,a,-c","wpos": { } },{ "clegId": "39:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2a 2","hm": "B 2 e m","id": "B_2_e_m","jmolId": "39:cab","set": 3,"sg": 39,"trm": "c,a,b","wpos": { } },{ "clegId": "39:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2a 2","hm": "C 2 m e","id": "C_2_m_e","jmolId": "39:-cba","set": 4,"sg": 39,"trm": "-c,b,a","wpos": { } },{ "clegId": "39:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2a -2a","hm": "C m 2 e","id": "C_m_2_e","jmolId": "39:bca","set": 5,"sg": 39,"trm": "b,c,a","wpos": { } },{ "clegId": "39:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2b -2b","hm": "A e 2 m","id": "A_e_2_m","jmolId": "39:a-cb","set": 6,"sg": 39,"trm": "a,-c,b","wpos": { } },{ "clegId": "40:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2 -2a","hm": "A m a 2","id": "A_m_a_2","jmolId": "40","set": 1,"sg": 40,"trm": "a,b,c","wpos": { } },{ "clegId": "40:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2 -2b","hm": "B b m 2","id": "B_b_m_2","jmolId": "40:ba-c","set": 2,"sg": 40,"trm": "b,a,-c","wpos": { } },{ "clegId": "40:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2b 2","hm": "B 2 m b","id": "B_2_m_b","jmolId": "40:cab","set": 3,"sg": 40,"trm": "c,a,b","wpos": { } },{ "clegId": "40:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2c 2","hm": "C 2 c m","id": "C_2_c_m","jmolId": "40:-cba","set": 4,"sg": 40,"trm": "-c,b,a","wpos": { } },{ "clegId": "40:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2c -2c","hm": "C c 2 m","id": "C_c_2_m","jmolId": "40:bca","set": 5,"sg": 40,"trm": "b,c,a","wpos": { } },{ "clegId": "40:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2a -2a","hm": "A m 2 a","id": "A_m_2_a","jmolId": "40:a-cb","set": 6,"sg": 40,"trm": "a,-c,b","wpos": { } },{ "clegId": "41:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2 -2ab","hm": "A e a 2","id": "A_e_a_2","jmolId": "41","set": 1,"sg": 41,"trm": "a,b,c","wpos": { } },{ "clegId": "41:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2 -2ab","hm": "B b e 2","id": "B_b_e_2","jmolId": "41:ba-c","set": 2,"sg": 41,"trm": "b,a,-c","wpos": { } },{ "clegId": "41:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B -2ab 2","hm": "B 2 e b","id": "B_2_e_b","jmolId": "41:cab","set": 3,"sg": 41,"trm": "c,a,b","wpos": { } },{ "clegId": "41:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2ac 2","hm": "C 2 c e","id": "C_2_c_e","jmolId": "41:-cba","set": 4,"sg": 41,"trm": "-c,b,a","wpos": { } },{ "clegId": "41:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C -2ac -2ac","hm": "C c 2 e","id": "C_c_2_e","jmolId": "41:bca","set": 5,"sg": 41,"trm": "b,c,a","wpos": { } },{ "clegId": "41:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A -2ab -2ab","hm": "A e 2 a","id": "A_e_2_a","jmolId": "41:a-cb","set": 6,"sg": 41,"trm": "a,-c,b","wpos": { } },{ "clegId": "42:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 2 -2","hm": "F m m 2","id": "F_m_m_2","jmolId": "42","set": 1,"sg": 42,"trm": "a,b,c","wpos": { } },{ "clegId": "42:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F -2 2","hm": "F 2 m m","id": "F_2_m_m","jmolId": "42:cab","set": 2,"sg": 42,"trm": "c,a,b","wpos": { } },{ "clegId": "42:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F -2 -2","hm": "F m 2 m","id": "F_m_2_m","jmolId": "42:bca","set": 3,"sg": 42,"trm": "b,c,a","wpos": { } },{ "clegId": "43:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 2 -2d","hm": "F d d 2","id": "F_d_d_2","jmolId": "43","set": 1,"sg": 43,"trm": "a,b,c","wpos": { } },{ "clegId": "43:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F -2d 2","hm": "F 2 d d","id": "F_2_d_d","jmolId": "43:cab","set": 2,"sg": 43,"trm": "c,a,b","wpos": { } },{ "clegId": "43:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F -2d -2d","hm": "F d 2 d","id": "F_d_2_d","jmolId": "43:bca","set": 3,"sg": 43,"trm": "b,c,a","wpos": { } },{ "clegId": "44:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2 -2","hm": "I m m 2","id": "I_m_m_2","jmolId": "44","set": 1,"sg": 44,"trm": "a,b,c","wpos": { } },{ "clegId": "44:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2 2","hm": "I 2 m m","id": "I_2_m_m","jmolId": "44:cab","set": 2,"sg": 44,"trm": "c,a,b","wpos": { } },{ "clegId": "44:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2 -2","hm": "I m 2 m","id": "I_m_2_m","jmolId": "44:bca","set": 3,"sg": 44,"trm": "b,c,a","wpos": { } },{ "clegId": "45:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2 -2c","hm": "I b a 2","id": "I_b_a_2","jmolId": "45","set": 1,"sg": 45,"trm": "a,b,c","wpos": { } },{ "clegId": "45:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2a 2","hm": "I 2 c b","id": "I_2_c_b","jmolId": "45:cab","set": 2,"sg": 45,"trm": "c,a,b","wpos": { } },{ "clegId": "45:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2b -2b","hm": "I c 2 a","id": "I_c_2_a","jmolId": "45:bca","set": 3,"sg": 45,"trm": "b,c,a","wpos": { } },{ "clegId": "46:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2 -2a","hm": "I m a 2","id": "I_m_a_2","jmolId": "46","set": 1,"sg": 46,"trm": "a,b,c","wpos": { } },{ "clegId": "46:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2 -2b","hm": "I b m 2","id": "I_b_m_2","jmolId": "46:ba-c","set": 2,"sg": 46,"trm": "b,a,-c","wpos": { } },{ "clegId": "46:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2b 2","hm": "I 2 m b","id": "I_2_m_b","jmolId": "46:cab","set": 3,"sg": 46,"trm": "c,a,b","wpos": { } },{ "clegId": "46:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2c 2","hm": "I 2 c m","id": "I_2_c_m","jmolId": "46:-cba","set": 4,"sg": 46,"trm": "-c,b,a","wpos": { } },{ "clegId": "46:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2c -2c","hm": "I c 2 m","id": "I_c_2_m","jmolId": "46:bca","set": 5,"sg": 46,"trm": "b,c,a","wpos": { } },{ "clegId": "46:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -2a -2a","hm": "I m 2 a","id": "I_m_2_a","jmolId": "46:a-cb","set": 6,"sg": 46,"trm": "a,-c,b","wpos": { } },{ "clegId": "47:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2","hm": "P m m m","id": "P_m_m_m","jmolId": "47","set": 1,"sg": 47,"trm": "a,b,c","wpos": { } },{ "clegId": "48:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2bc","hm": "P n n n :2","id": "P_n_n_n_2","jmolId": "48:2","set": 1,"sg": 48,"trm": "a,b,c","wpos": { } },{ "clegId": "48:a,b,c;1/4,1/4,1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2 -1n","hm": "P n n n :1","id": "P_n_n_n_1","jmolId": "48:1","set": 2,"sg": 48,"trm": "a,b,c;1/4,1/4,1/4","wpos": { } },{ "clegId": "49:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2c","hm": "P c c m","id": "P_c_c_m","jmolId": "49","set": 1,"sg": 49,"trm": "a,b,c","wpos": { } },{ "clegId": "49:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a 2","hm": "P m a a","id": "P_m_a_a","jmolId": "49:cab","set": 2,"sg": 49,"trm": "c,a,b","wpos": { } },{ "clegId": "49:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b 2b","hm": "P b m b","id": "P_b_m_b","jmolId": "49:bca","set": 3,"sg": 49,"trm": "b,c,a","wpos": { } },{ "clegId": "50:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2b","hm": "P b a n :2","id": "P_b_a_n_2","jmolId": "50:2","set": 1,"sg": 50,"trm": "a,b,c","wpos": { } },{ "clegId": "50:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b 2bc","hm": "P n c b :2","id": "P_n_c_b_2","jmolId": "50:2cab","set": 2,"sg": 50,"trm": "c,a,b","wpos": { } },{ "clegId": "50:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a 2c","hm": "P c n a :2","id": "P_c_n_a_2","jmolId": "50:2bca","set": 3,"sg": 50,"trm": "b,c,a","wpos": { } },{ "clegId": "50:a,b,c;1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2 -1ab","hm": "P b a n :1","id": "P_b_a_n_1","jmolId": "50:1","set": 4,"sg": 50,"trm": "a,b,c;1/4,1/4,0","wpos": { } },{ "clegId": "50:c,a,b;1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2 -1bc","hm": "P n c b :1","id": "P_n_c_b_1","jmolId": "50:1cab","set": 5,"sg": 50,"trm": "c,a,b;1/4,1/4,0","wpos": { } },{ "clegId": "50:b,c,a;1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2 -1ac","hm": "P c n a :1","id": "P_c_n_a_1","jmolId": "50:1bca","set": 6,"sg": 50,"trm": "b,c,a;1/4,1/4,0","wpos": { } },{ "clegId": "51:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a 2a","hm": "P m m a","id": "P_m_m_a","jmolId": "51","set": 1,"sg": 51,"trm": "a,b,c","wpos": { } },{ "clegId": "51:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b 2","hm": "P m m b","id": "P_m_m_b","jmolId": "51:ba-c","set": 2,"sg": 51,"trm": "b,a,-c","wpos": { } },{ "clegId": "51:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2b","hm": "P b m m","id": "P_b_m_m","jmolId": "51:cab","set": 3,"sg": 51,"trm": "c,a,b","wpos": { } },{ "clegId": "51:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c 2c","hm": "P c m m","id": "P_c_m_m","jmolId": "51:-cba","set": 4,"sg": 51,"trm": "-c,b,a","wpos": { } },{ "clegId": "51:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c 2","hm": "P m c m","id": "P_m_c_m","jmolId": "51:bca","set": 5,"sg": 51,"trm": "b,c,a","wpos": { } },{ "clegId": "51:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2a","hm": "P m a m","id": "P_m_a_m","jmolId": "51:a-cb","set": 6,"sg": 51,"trm": "a,-c,b","wpos": { } },{ "clegId": "52:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a 2bc","hm": "P n n a","id": "P_n_n_a","jmolId": "52","set": 1,"sg": 52,"trm": "a,b,c","wpos": { } },{ "clegId": "52:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b 2n","hm": "P n n b","id": "P_n_n_b","jmolId": "52:ba-c","set": 2,"sg": 52,"trm": "b,a,-c","wpos": { } },{ "clegId": "52:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n 2b","hm": "P b n n","id": "P_b_n_n","jmolId": "52:cab","set": 3,"sg": 52,"trm": "c,a,b","wpos": { } },{ "clegId": "52:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2c","hm": "P c n n","id": "P_c_n_n","jmolId": "52:-cba","set": 4,"sg": 52,"trm": "-c,b,a","wpos": { } },{ "clegId": "52:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2n","hm": "P n c n","id": "P_n_c_n","jmolId": "52:bca","set": 5,"sg": 52,"trm": "b,c,a","wpos": { } },{ "clegId": "52:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n 2bc","hm": "P n a n","id": "P_n_a_n","jmolId": "52:a-cb","set": 6,"sg": 52,"trm": "a,-c,b","wpos": { } },{ "clegId": "53:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2","hm": "P m n a","id": "P_m_n_a","jmolId": "53","set": 1,"sg": 53,"trm": "a,b,c","wpos": { } },{ "clegId": "53:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc 2bc","hm": "P n m b","id": "P_n_m_b","jmolId": "53:ba-c","set": 2,"sg": 53,"trm": "b,a,-c","wpos": { } },{ "clegId": "53:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2ab","hm": "P b m n","id": "P_b_m_n","jmolId": "53:cab","set": 3,"sg": 53,"trm": "c,a,b","wpos": { } },{ "clegId": "53:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2ac","hm": "P c n m","id": "P_c_n_m","jmolId": "53:-cba","set": 4,"sg": 53,"trm": "-c,b,a","wpos": { } },{ "clegId": "53:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2bc","hm": "P n c m","id": "P_n_c_m","jmolId": "53:bca","set": 5,"sg": 53,"trm": "b,c,a","wpos": { } },{ "clegId": "53:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2","hm": "P m a n","id": "P_m_a_n","jmolId": "53:a-cb","set": 6,"sg": 53,"trm": "a,-c,b","wpos": { } },{ "clegId": "54:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a 2ac","hm": "P c c a","id": "P_c_c_a","jmolId": "54","set": 1,"sg": 54,"trm": "a,b,c","wpos": { } },{ "clegId": "54:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b 2c","hm": "P c c b","id": "P_c_c_b","jmolId": "54:ba-c","set": 2,"sg": 54,"trm": "b,a,-c","wpos": { } },{ "clegId": "54:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a 2b","hm": "P b a a","id": "P_b_a_a","jmolId": "54:cab","set": 3,"sg": 54,"trm": "c,a,b","wpos": { } },{ "clegId": "54:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2c","hm": "P c a a","id": "P_c_a_a","jmolId": "54:-cba","set": 4,"sg": 54,"trm": "-c,b,a","wpos": { } },{ "clegId": "54:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc 2b","hm": "P b c b","id": "P_b_c_b","jmolId": "54:bca","set": 5,"sg": 54,"trm": "b,c,a","wpos": { } },{ "clegId": "54:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b 2ab","hm": "P b a b","id": "P_b_a_b","jmolId": "54:a-cb","set": 6,"sg": 54,"trm": "a,-c,b","wpos": { } },{ "clegId": "55:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2ab","hm": "P b a m","id": "P_b_a_m","jmolId": "55","set": 1,"sg": 55,"trm": "a,b,c","wpos": { } },{ "clegId": "55:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc 2","hm": "P m c b","id": "P_m_c_b","jmolId": "55:cab","set": 2,"sg": 55,"trm": "c,a,b","wpos": { } },{ "clegId": "55:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2ac","hm": "P c m a","id": "P_c_m_a","jmolId": "55:bca","set": 3,"sg": 55,"trm": "b,c,a","wpos": { } },{ "clegId": "56:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2ac","hm": "P c c n","id": "P_c_c_n","jmolId": "56","set": 1,"sg": 56,"trm": "a,b,c","wpos": { } },{ "clegId": "56:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2bc","hm": "P n a a","id": "P_n_a_a","jmolId": "56:cab","set": 2,"sg": 56,"trm": "c,a,b","wpos": { } },{ "clegId": "56:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc 2ab","hm": "P b n b","id": "P_b_n_b","jmolId": "56:bca","set": 3,"sg": 56,"trm": "b,c,a","wpos": { } },{ "clegId": "57:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c 2b","hm": "P b c m","id": "P_b_c_m","jmolId": "57","set": 1,"sg": 57,"trm": "a,b,c","wpos": { } },{ "clegId": "57:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c 2ac","hm": "P c a m","id": "P_c_a_m","jmolId": "57:ba-c","set": 2,"sg": 57,"trm": "b,a,-c","wpos": { } },{ "clegId": "57:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2a","hm": "P m c a","id": "P_m_c_a","jmolId": "57:cab","set": 3,"sg": 57,"trm": "c,a,b","wpos": { } },{ "clegId": "57:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b 2a","hm": "P m a b","id": "P_m_a_b","jmolId": "57:-cba","set": 4,"sg": 57,"trm": "-c,b,a","wpos": { } },{ "clegId": "57:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a 2ab","hm": "P b m a","id": "P_b_m_a","jmolId": "57:bca","set": 5,"sg": 57,"trm": "b,c,a","wpos": { } },{ "clegId": "57:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc 2c","hm": "P c m b","id": "P_c_m_b","jmolId": "57:a-cb","set": 6,"sg": 57,"trm": "a,-c,b","wpos": { } },{ "clegId": "58:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2n","hm": "P n n m","id": "P_n_n_m","jmolId": "58","set": 1,"sg": 58,"trm": "a,b,c","wpos": { } },{ "clegId": "58:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n 2","hm": "P m n n","id": "P_m_n_n","jmolId": "58:cab","set": 2,"sg": 58,"trm": "c,a,b","wpos": { } },{ "clegId": "58:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n 2n","hm": "P n m n","id": "P_n_m_n","jmolId": "58:bca","set": 3,"sg": 58,"trm": "b,c,a","wpos": { } },{ "clegId": "59:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2a","hm": "P m m n :2","id": "P_m_m_n_2","jmolId": "59:2","set": 1,"sg": 59,"trm": "a,b,c","wpos": { } },{ "clegId": "59:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c 2bc","hm": "P n m m :2","id": "P_n_m_m_2","jmolId": "59:2cab","set": 2,"sg": 59,"trm": "c,a,b","wpos": { } },{ "clegId": "59:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c 2a","hm": "P m n m :2","id": "P_m_n_m_2","jmolId": "59:2bca","set": 3,"sg": 59,"trm": "b,c,a","wpos": { } },{ "clegId": "59:a,b,c;1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2ab -1ab","hm": "P m m n :1","id": "P_m_m_n_1","jmolId": "59:1","set": 4,"sg": 59,"trm": "a,b,c;1/4,1/4,0","wpos": { } },{ "clegId": "59:c,a,b;1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2bc 2 -1bc","hm": "P n m m :1","id": "P_n_m_m_1","jmolId": "59:1cab","set": 5,"sg": 59,"trm": "c,a,b;1/4,1/4,0","wpos": { } },{ "clegId": "59:b,c,a;1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2ac 2ac -1ac","hm": "P m n m :1","id": "P_m_n_m_1","jmolId": "59:1bca","set": 6,"sg": 59,"trm": "b,c,a;1/4,1/4,0","wpos": { } },{ "clegId": "60:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n 2ab","hm": "P b c n","id": "P_b_c_n","jmolId": "60","set": 1,"sg": 60,"trm": "a,b,c","wpos": { } },{ "clegId": "60:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n 2c","hm": "P c a n","id": "P_c_a_n","jmolId": "60:ba-c","set": 2,"sg": 60,"trm": "b,a,-c","wpos": { } },{ "clegId": "60:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2a 2n","hm": "P n c a","id": "P_n_c_a","jmolId": "60:cab","set": 3,"sg": 60,"trm": "c,a,b","wpos": { } },{ "clegId": "60:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc 2n","hm": "P n a b","id": "P_n_a_b","jmolId": "60:-cba","set": 4,"sg": 60,"trm": "-c,b,a","wpos": { } },{ "clegId": "60:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2b","hm": "P b n a","id": "P_b_n_a","jmolId": "60:bca","set": 5,"sg": 60,"trm": "b,c,a","wpos": { } },{ "clegId": "60:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2b 2ac","hm": "P c n b","id": "P_c_n_b","jmolId": "60:a-cb","set": 6,"sg": 60,"trm": "a,-c,b","wpos": { } },{ "clegId": "61:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2ab","hm": "P b c a","id": "P_b_c_a","jmolId": "61","set": 1,"sg": 61,"trm": "a,b,c","wpos": { } },{ "clegId": "61:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc 2ac","hm": "P c a b","id": "P_c_a_b","jmolId": "61:ba-c","set": 2,"sg": 61,"trm": "b,a,-c","wpos": { } },{ "clegId": "62:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2n","hm": "P n m a","id": "P_n_m_a","jmolId": "62","set": 1,"sg": 62,"trm": "a,b,c","wpos": { } },{ "clegId": "62:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2bc 2a","hm": "P m n b","id": "P_m_n_b","jmolId": "62:ba-c","set": 2,"sg": 62,"trm": "b,a,-c","wpos": { } },{ "clegId": "62:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c 2ab","hm": "P b n m","id": "P_b_n_m","jmolId": "62:cab","set": 3,"sg": 62,"trm": "c,a,b","wpos": { } },{ "clegId": "62:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n 2ac","hm": "P c m n","id": "P_c_m_n","jmolId": "62:-cba","set": 4,"sg": 62,"trm": "-c,b,a","wpos": { } },{ "clegId": "62:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2n 2a","hm": "P m c n","id": "P_m_c_n","jmolId": "62:bca","set": 5,"sg": 62,"trm": "b,c,a","wpos": { } },{ "clegId": "62:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2c 2n","hm": "P n a m","id": "P_n_a_m","jmolId": "62:a-cb","set": 6,"sg": 62,"trm": "a,-c,b","wpos": { } },{ "clegId": "63:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2c 2","hm": "C m c m","id": "C_m_c_m","jmolId": "63","set": 1,"sg": 63,"trm": "a,b,c","wpos": { } },{ "clegId": "63:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2c 2c","hm": "C c m m","id": "C_c_m_m","jmolId": "63:ba-c","set": 2,"sg": 63,"trm": "b,a,-c","wpos": { } },{ "clegId": "63:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2a 2a","hm": "A m m a","id": "A_m_m_a","jmolId": "63:cab","set": 3,"sg": 63,"trm": "c,a,b","wpos": { } },{ "clegId": "63:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2 2a","hm": "A m a m","id": "A_m_a_m","jmolId": "63:-cba","set": 4,"sg": 63,"trm": "-c,b,a","wpos": { } },{ "clegId": "63:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2 2b","hm": "B b m m","id": "B_b_m_m","jmolId": "63:bca","set": 5,"sg": 63,"trm": "b,c,a","wpos": { } },{ "clegId": "63:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2b 2","hm": "B m m b","id": "B_m_m_b","jmolId": "63:a-cb","set": 6,"sg": 63,"trm": "a,-c,b","wpos": { } },{ "clegId": "64:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2ac 2","hm": "C m c e","id": "C_m_c_e","jmolId": "64","set": 1,"sg": 64,"trm": "a,b,c","wpos": { } },{ "clegId": "64:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2ac 2ac","hm": "C c m e","id": "C_c_m_e","jmolId": "64:ba-c","set": 2,"sg": 64,"trm": "b,a,-c","wpos": { } },{ "clegId": "64:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2ab 2ab","hm": "A e m a","id": "A_e_m_a","jmolId": "64:cab","set": 3,"sg": 64,"trm": "c,a,b","wpos": { } },{ "clegId": "64:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2 2ab","hm": "A e a m","id": "A_e_a_m","jmolId": "64:-cba","set": 4,"sg": 64,"trm": "-c,b,a","wpos": { } },{ "clegId": "64:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2 2ab","hm": "B b e m","id": "B_b_e_m","jmolId": "64:bca","set": 5,"sg": 64,"trm": "b,c,a","wpos": { } },{ "clegId": "64:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2ab 2","hm": "B m e b","id": "B_m_e_b","jmolId": "64:a-cb","set": 6,"sg": 64,"trm": "a,-c,b","wpos": { } },{ "clegId": "65:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2 2","hm": "C m m m","id": "C_m_m_m","jmolId": "65","set": 1,"sg": 65,"trm": "a,b,c","wpos": { } },{ "clegId": "65:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2 2","hm": "A m m m","id": "A_m_m_m","jmolId": "65:cab","set": 2,"sg": 65,"trm": "c,a,b","wpos": { } },{ "clegId": "65:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2 2","hm": "B m m m","id": "B_m_m_m","jmolId": "65:bca","set": 3,"sg": 65,"trm": "b,c,a","wpos": { } },{ "clegId": "66:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2 2c","hm": "C c c m","id": "C_c_c_m","jmolId": "66","set": 1,"sg": 66,"trm": "a,b,c","wpos": { } },{ "clegId": "66:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2a 2","hm": "A m a a","id": "A_m_a_a","jmolId": "66:cab","set": 2,"sg": 66,"trm": "c,a,b","wpos": { } },{ "clegId": "66:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2b 2b","hm": "B b m b","id": "B_b_m_b","jmolId": "66:bca","set": 3,"sg": 66,"trm": "b,c,a","wpos": { } },{ "clegId": "67:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2a 2","hm": "C m m e","hmAlt": "C m m a","id": "C_m_m_e","jmolId": "67","set": 1,"sg": 67,"trm": "a,b,c","wpos": { } },{ "clegId": "67:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2a 2a","hm": "C m m e","hmAlt": "C m m b","id": "C_m_m_e","jmolId": "67:ba-c","set": 2,"sg": 67,"trm": "b,a,-c","wpos": { } },{ "clegId": "67:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2b 2b","hm": "A e m m","hmAlt": "A b m m","id": "A_e_m_m","jmolId": "67:cab","set": 3,"sg": 67,"trm": "c,a,b","wpos": { } },{ "clegId": "67:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2 2b","hm": "A e m m","hmAlt": "A c m m","id": "A_e_m_m","jmolId": "67:-cba","set": 4,"sg": 67,"trm": "-c,b,a","wpos": { } },{ "clegId": "67:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2 2a","hm": "B m e m","hmAlt": "B m c m","id": "B_m_e_m","jmolId": "67:bca","set": 5,"sg": 67,"trm": "b,c,a","wpos": { } },{ "clegId": "67:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2a 2","hm": "B m e m","hmAlt": "B m a m","id": "B_m_e_m","jmolId": "67:a-cb","set": 6,"sg": 67,"trm": "a,-c,b","wpos": { } },{ "clegId": "68:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2a 2ac","hm": "C c c e :2","hmAlt": "C c c a :2","id": "C_c_c_e_2","jmolId": "68:2","set": 1,"sg": 68,"trm": "a,b,c","wpos": { } },{ "clegId": "68:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-C 2a 2c","hm": "C c c e :2","hmAlt": "C c c b :2","id": "C_c_c_e_2","jmolId": "68:2ba-c","set": 2,"sg": 68,"trm": "b,a,-c","wpos": { } },{ "clegId": "68:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2a 2b","hm": "A e a a :2","hmAlt": "A b a a :2","id": "A_e_a_a_2","jmolId": "68:2cab","set": 3,"sg": 68,"trm": "c,a,b","wpos": { } },{ "clegId": "68:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-A 2ab 2b","hm": "A e a a :2","hmAlt": "A c a a :2","id": "A_e_a_a_2","jmolId": "68:2-cba","set": 4,"sg": 68,"trm": "-c,b,a","wpos": { } },{ "clegId": "68:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2ab 2b","hm": "B b e b :2","hmAlt": "B b c b :2","id": "B_b_e_b_2","jmolId": "68:2bca","set": 5,"sg": 68,"trm": "b,c,a","wpos": { } },{ "clegId": "68:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-B 2b 2ab","hm": "B b e b :2","hmAlt": "B b a b :2","id": "B_b_e_b_2","jmolId": "68:2a-cb","set": 6,"sg": 68,"trm": "a,-c,b","wpos": { } },{ "clegId": "68:a,b,c;0,1/4,1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2 2 -1ac","hm": "C c c e :1","hmAlt": "C c c a :1","id": "C_c_c_e_1","jmolId": "68:1","set": 7,"sg": 68,"trm": "a,b,c;0,1/4,1/4","wpos": { } },{ "clegId": "68:b,a,-c;0,1/4,1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "C 2 2 -1ac","hm": "C c c e :1","hmAlt": "C c c b :1","id": "C_c_c_e_1","jmolId": "68:1","set": 8,"sg": 68,"trm": "b,a,-c;0,1/4,1/4","wpos": { } },{ "clegId": "68:c,a,b;0,1/4,1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2 2 -1ab","hm": "A e a a :1","hmAlt": "A b a a :1","id": "A_e_a_a_1","jmolId": "68:1cab","set": 9,"sg": 68,"trm": "c,a,b;0,1/4,1/4","wpos": { } },{ "clegId": "68:-c,b,a;0,1/4,1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "A 2 2 -1ab","hm": "A e a a :1","hmAlt": "A c a a :1","id": "A_e_a_a_1","jmolId": "68:1cab","set": 10,"sg": 68,"trm": "-c,b,a;0,1/4,1/4","wpos": { } },{ "clegId": "68:b,c,a;0,1/4,1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2 2 -1ab","hm": "B b e b :1","hmAlt": "B b c b :1","id": "B_b_e_b_1","jmolId": "68:1bca","set": 11,"sg": 68,"trm": "b,c,a;0,1/4,1/4","wpos": { } },{ "clegId": "68:a,-c,b;0,1/4,1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "B 2 2 -1ab","hm": "B b e b :1","hmAlt": "B b a b :1","id": "B_b_e_b_1","jmolId": "68:1bca","set": 12,"sg": 68,"trm": "a,-c,b;0,1/4,1/4","wpos": { } },{ "clegId": "69:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-F 2 2","hm": "F m m m","id": "F_m_m_m","jmolId": "69","set": 1,"sg": 69,"trm": "a,b,c","wpos": { } },{ "clegId": "70:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-F 2uv 2vw","hm": "F d d d :2","id": "F_d_d_d_2","jmolId": "70:2","set": 1,"sg": 70,"trm": "a,b,c","wpos": { } },{ "clegId": "70:a,b,c;-1/8,-1/8,-1/8","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 2 2 -1d","hm": "F d d d :1","id": "F_d_d_d_1","jmolId": "70:1","set": 2,"sg": 70,"trm": "a,b,c;-1/8,-1/8,-1/8","wpos": { } },{ "clegId": "71:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2 2","hm": "I m m m","id": "I_m_m_m","jmolId": "71","set": 1,"sg": 71,"trm": "a,b,c","wpos": { } },{ "clegId": "72:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2 2c","hm": "I b a m","id": "I_b_a_m","jmolId": "72","set": 1,"sg": 72,"trm": "a,b,c","wpos": { } },{ "clegId": "72:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2a 2","hm": "I m c b","id": "I_m_c_b","jmolId": "72:cab","set": 2,"sg": 72,"trm": "c,a,b","wpos": { } },{ "clegId": "72:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2b 2b","hm": "I c m a","id": "I_c_m_a","jmolId": "72:bca","set": 3,"sg": 72,"trm": "b,c,a","wpos": { } },{ "clegId": "73:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2b 2c","hm": "I b c a","id": "I_b_c_a","jmolId": "73","set": 1,"sg": 73,"trm": "a,b,c","wpos": { } },{ "clegId": "73:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2a 2b","hm": "I c a b","id": "I_c_a_b","jmolId": "73:ba-c","set": 2,"sg": 73,"trm": "b,a,-c","wpos": { } },{ "clegId": "74:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2b 2","hm": "I m m a","id": "I_m_m_a","jmolId": "74","set": 1,"sg": 74,"trm": "a,b,c","wpos": { } },{ "clegId": "74:b,a,-c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2a 2a","hm": "I m m b","id": "I_m_m_b","jmolId": "74:ba-c","set": 2,"sg": 74,"trm": "b,a,-c","wpos": { } },{ "clegId": "74:c,a,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2c 2c","hm": "I b m m","id": "I_b_m_m","jmolId": "74:cab","set": 3,"sg": 74,"trm": "c,a,b","wpos": { } },{ "clegId": "74:-c,b,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2 2b","hm": "I c m m","id": "I_c_m_m","jmolId": "74:-cba","set": 4,"sg": 74,"trm": "-c,b,a","wpos": { } },{ "clegId": "74:b,c,a","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2 2a","hm": "I m c m","id": "I_m_c_m","jmolId": "74:bca","set": 5,"sg": 74,"trm": "b,c,a","wpos": { } },{ "clegId": "74:a,-c,b","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2c 2","hm": "I m a m","id": "I_m_a_m","jmolId": "74:a-cb","set": 6,"sg": 74,"trm": "a,-c,b","wpos": { } },{ "clegId": "75:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4","hm": "P 4","id": "P_4","jmolId": "75","set": 1,"sg": 75,"trm": "a,b,c","wpos": { } },{ "clegId": "75:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C 4","hm": "C 4","id": "C_4","jmolId": "75:c","set": 2,"sg": 75,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "76:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4w","hm": "P 41","id": "P_41","jmolId": "76","set": 1,"sg": 76,"trm": "a,b,c","wpos": { } },{ "clegId": "76:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C 4w","hm": "C 41","id": "C_41","jmolId": "76:c","set": 2,"sg": 76,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "77:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4c","hm": "P 42","id": "P_42","jmolId": "77","set": 1,"sg": 77,"trm": "a,b,c","wpos": { } },{ "clegId": "77:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C 4c","hm": "C 42","id": "C_42","jmolId": "77:c","set": 2,"sg": 77,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "78:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4cw","hm": "P 43","id": "P_43","jmolId": "78","set": 1,"sg": 78,"trm": "a,b,c","wpos": { } },{ "clegId": "78:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C 4cw","hm": "C 43","id": "C_43","jmolId": "78:c","set": 2,"sg": 78,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "79:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4","hm": "I 4","id": "I_4","jmolId": "79","set": 1,"sg": 79,"trm": "a,b,c","wpos": { } },{ "clegId": "79:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F 4","hm": "F 4","id": "F_4","jmolId": "79:f","set": 2,"sg": 79,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "80:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hm": "I 41","id": "I_41","jmolId": "80:i","set": 1,"sg": 80,"trm": "a,b,c","wpos": { } },{ "clegId": "80:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41","id": "F_41","jmolId": "80:f","set": 2,"sg": 80,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "81:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4","hm": "P -4","id": "P_-4","jmolId": "81","set": 1,"sg": 81,"trm": "a,b,c","wpos": { } },{ "clegId": "81:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C -4","hm": "C -4","id": "C_-4","jmolId": "81:c","set": 2,"sg": 81,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "82:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -4","hm": "I -4","id": "I_-4","jmolId": "82","set": 1,"sg": 82,"trm": "a,b,c","wpos": { } },{ "clegId": "82:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F -4","hm": "F -4","id": "F_-4","jmolId": "82:f","set": 2,"sg": 82,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "83:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4","hm": "P 4/m","id": "P_4/m","jmolId": "83","set": 1,"sg": 83,"trm": "a,b,c","wpos": { } },{ "clegId": "83:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "-C 4","hm": "C 4/m","id": "C_4/m","jmolId": "83:f","set": 2,"sg": 83,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "84:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4c","hm": "P 42/m","id": "P_42/m","jmolId": "84","set": 1,"sg": 84,"trm": "a,b,c","wpos": { } },{ "clegId": "84:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "-C 4c","hm": "C 42/m","id": "C_42/m","jmolId": "84:c","set": 2,"sg": 84,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "85:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hm": "P 4/n :2","id": "P_4/n_2","jmolId": "85:p","set": 1,"sg": 85,"trm": "a,b,c","wpos": { } },{ "clegId": "85:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4/e :2","id": "C_4/e_2","jmolId": "85:c","set": 2,"sg": 85,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "85:a,b,c;-1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4ab -1ab","hm": "P 4/n :1","id": "P_4/n_1","jmolId": "85:1","set": 3,"sg": 85,"trm": "a,b,c;-1/4,1/4,0","wpos": { } },{ "clegId": "85:a-b,a+b,c;-1/4,1/4,0","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4/e :1","id": "C_4/e_1","jmolId": "85:c","set": 4,"sg": 85,"trm": "a-b,a+b,c;-1/4,1/4,0","wpos": { } },{ "clegId": "86:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hm": "P 42/n :2","id": "P_42/n_2","jmolId": "86:p","set": 1,"sg": 86,"trm": "a,b,c","wpos": { } },{ "clegId": "86:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 42/e :2","id": "C_42/e_2","jmolId": "86:c","set": 2,"sg": 86,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "86:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4n -1n","hm": "P 42/n :1","id": "P_42/n_1","jmolId": "86:1","set": 3,"sg": 86,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { } },{ "clegId": "86:a-b,a+b,c;-1/4,-1/4,-1/4","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 42/e :1","id": "C_42/e_1","jmolId": "86:c","set": 4,"sg": 86,"trm": "a-b,a+b,c;-1/4,-1/4,-1/4","wpos": { } },{ "clegId": "87:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 4","hm": "I 4/m","id": "I_4/m","jmolId": "87","set": 1,"sg": 87,"trm": "a,b,c","wpos": { } },{ "clegId": "87:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 4/m","id": "F_4/m","jmolId": "87:f","set": 2,"sg": 87,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "88:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 4ad","hm": "I 41/a :2","id": "I_41/a_2","jmolId": "88:2","set": 1,"sg": 88,"trm": "a,b,c","wpos": { } },{ "clegId": "88:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41/d :2","id": "F_41/d_2","jmolId": "88:f","set": 2,"sg": 88,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "88:a,b,c;0,-1/4,-1/8","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4bw -1bw","hm": "I 41/a :1","id": "I_41/a_1","jmolId": "88:1","set": 3,"sg": 88,"trm": "a,b,c;0,-1/4,-1/8","wpos": { } },{ "clegId": "88:a-b,a+b,c;0,-1/4,-1/8","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41/d :1","id": "F_41/d_1","jmolId": "88:f","set": 4,"sg": 88,"trm": "a-b,a+b,c;0,-1/4,-1/8","wpos": { } },{ "clegId": "89:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hm": "P 4 2 2","id": "P_4_2_2","jmolId": "89:p","set": 1,"sg": 89,"trm": "a,b,c","wpos": { } },{ "clegId": "89:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4 2 2","id": "C_4_2_2","jmolId": "89:c","set": 2,"sg": 89,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "90:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hm": "P 4 21 2","id": "P_4_21_2","jmolId": "90:p","set": 1,"sg": 90,"trm": "a,b,c","wpos": { } },{ "clegId": "90:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4 2 21","id": "C_4_2_21","jmolId": "90:c","set": 2,"sg": 90,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "91:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4w 2c","hm": "P 41 2 2","id": "P_41_2_2","jmolId": "91","set": 1,"sg": 91,"trm": "a,b,c","wpos": { } },{ "clegId": "91:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 41 2 2","id": "C_41_2_2","jmolId": "91:c","set": 2,"sg": 91,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "92:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hm": "P 41 21 2","id": "P_41_21_2","jmolId": "92:p","set": 1,"sg": 92,"trm": "a,b,c","wpos": { } },{ "clegId": "92:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 41 2 21","id": "C_41_2_21","jmolId": "92:c","set": 2,"sg": 92,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "93:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4c 2","hm": "P 42 2 2","id": "P_42_2_2","jmolId": "93","set": 1,"sg": 93,"trm": "a,b,c","wpos": { } },{ "clegId": "93:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 42 2 2","id": "C_42_2_2","jmolId": "93:c","set": 2,"sg": 93,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "94:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hm": "P 42 21 2","id": "P_42_21_2","jmolId": "94:p","set": 1,"sg": 94,"trm": "a,b,c","wpos": { } },{ "clegId": "94:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 42 2 21","id": "C_42_2_21","jmolId": "94:c","set": 2,"sg": 94,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "95:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4cw 2c","hm": "P 43 2 2","id": "P_43_2_2","jmolId": "95","set": 1,"sg": 95,"trm": "a,b,c","wpos": { } },{ "clegId": "95:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 43 2 2","id": "C_43_2_2","jmolId": "95:c","set": 2,"sg": 95,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "96:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hm": "P 43 21 2","id": "P_43_21_2","jmolId": "96:p","set": 1,"sg": 96,"trm": "a,b,c","wpos": { } },{ "clegId": "96:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 43 2 21","id": "C_43_2_21","jmolId": "96:c","set": 2,"sg": 96,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "97:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4 2","hm": "I 4 2 2","id": "I_4_2_2","jmolId": "97","set": 1,"sg": 97,"trm": "a,b,c","wpos": { } },{ "clegId": "97:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F 4 2","hm": "F 4 2 2","id": "F_4_2_2","jmolId": "97:f","set": 2,"sg": 97,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "98:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4bw 2bw","hm": "I 41 2 2","id": "I_41_2_2","jmolId": "98","set": 1,"sg": 98,"trm": "a,b,c","wpos": { } },{ "clegId": "98:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41 2 2","id": "F_41_2_2","jmolId": "98:f","set": 2,"sg": 98,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "99:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4 -2","hm": "P 4 m m","id": "P_4_m_m","jmolId": "99","set": 1,"sg": 99,"trm": "a,b,c","wpos": { } },{ "clegId": "99:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C 4 -2","hm": "C 4 m m","id": "C_4_m_m","jmolId": "99:c","set": 2,"sg": 99,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "100:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4 -2ab","hm": "P 4 b m","id": "P_4_b_m","jmolId": "100","set": 1,"sg": 100,"trm": "a,b,c","wpos": { } },{ "clegId": "100:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4 m g1","id": "C_4_m_g1","jmolId": "100:c","set": 2,"sg": 100,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "101:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4c -2c","hm": "P 42 c m","id": "P_42_c_m","jmolId": "101","set": 1,"sg": 101,"trm": "a,b,c","wpos": { } },{ "clegId": "101:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42 m c","id": "C_42_m_c","jmolId": "101:c","set": 2,"sg": 101,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "102:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4n -2n","hm": "P 42 n m","id": "P_42_n_m","jmolId": "102","set": 1,"sg": 102,"trm": "a,b,c","wpos": { } },{ "clegId": "102:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42 m g2","id": "C_42_m_g2","jmolId": "102:c","set": 2,"sg": 102,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "103:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4 -2c","hm": "P 4 c c","id": "P_4_c_c","jmolId": "103","set": 1,"sg": 103,"trm": "a,b,c","wpos": { } },{ "clegId": "103:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C 4 -2c","hm": "C 4 c c","id": "C_4_c_c","jmolId": "103:c","set": 2,"sg": 103,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "104:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4 -2n","hm": "P 4 n c","id": "P_4_n_c","jmolId": "104","set": 1,"sg": 104,"trm": "a,b,c","wpos": { } },{ "clegId": "104:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4 c g2","id": "C_4_c_g2","jmolId": "104:c","set": 2,"sg": 104,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "105:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4c -2","hm": "P 42 m c","id": "P_42_m_c","jmolId": "105","set": 1,"sg": 105,"trm": "a,b,c","wpos": { } },{ "clegId": "105:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42 c m","id": "C_42_c_m","jmolId": "105:c","set": 2,"sg": 105,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "106:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4c -2ab","hm": "P 42 b c","id": "P_42_b_c","jmolId": "106","set": 1,"sg": 106,"trm": "a,b,c","wpos": { } },{ "clegId": "106:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42 c g1","id": "C_42_c_g1","jmolId": "106:c","set": 2,"sg": 106,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "107:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4 -2","hm": "I 4 m m","id": "I_4_m_m","jmolId": "107","set": 1,"sg": 107,"trm": "a,b,c","wpos": { } },{ "clegId": "107:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F 4 -2","hm": "F 4 m m","id": "F_4_m_m","jmolId": "107:f","set": 2,"sg": 107,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "108:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4 -2c","hm": "I 4 c m","id": "I_4_c_m","jmolId": "108","set": 1,"sg": 108,"trm": "a,b,c","wpos": { } },{ "clegId": "108:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F?","hm": "F 4 m c","id": "F_4_m_c","jmolId": "108:f","set": 2,"sg": 108,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "109:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4bw -2","hm": "I 41 m d","id": "I_41_m_d","jmolId": "109","set": 1,"sg": 109,"trm": "a,b,c","wpos": { } },{ "clegId": "109:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41 d m","id": "F_41_d_m","jmolId": "109:f","set": 2,"sg": 109,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "110:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4bw -2c","hm": "I 41 c d","id": "I_41_c_d","jmolId": "110","set": 1,"sg": 110,"trm": "a,b,c","wpos": { } },{ "clegId": "110:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41 d c","id": "F_41_d_c","jmolId": "110:f","set": 2,"sg": 110,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "111:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 2","hm": "P -4 2 m","id": "P_-4_2_m","jmolId": "111","set": 1,"sg": 111,"trm": "a,b,c","wpos": { } },{ "clegId": "111:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C -4 m 2","id": "C_-4_m_2","jmolId": "111:c","set": 2,"sg": 111,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "112:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 2c","hm": "P -4 2 c","id": "P_-4_2_c","jmolId": "112","set": 1,"sg": 112,"trm": "a,b,c","wpos": { } },{ "clegId": "112:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C -4 c 2","id": "C_-4_c_2","jmolId": "112:c","set": 2,"sg": 112,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "113:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 2ab","hm": "P -4 21 m","id": "P_-4_21_m","jmolId": "113","set": 1,"sg": 113,"trm": "a,b,c","wpos": { } },{ "clegId": "113:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C -4 m 21","id": "C_-4_m_21","jmolId": "113:c","set": 2,"sg": 113,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "114:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 2n","hm": "P -4 21 c","id": "P_-4_21_c","jmolId": "114","set": 1,"sg": 114,"trm": "a,b,c","wpos": { } },{ "clegId": "114:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C -4 c 21","id": "C_-4_c_21","jmolId": "114:c","set": 2,"sg": 114,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "115:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 -2","hm": "P -4 m 2","id": "P_-4_m_2","jmolId": "115","set": 1,"sg": 115,"trm": "a,b,c","wpos": { } },{ "clegId": "115:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C -4 2 m","id": "C_-4_2_m","jmolId": "115:c","set": 2,"sg": 115,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "116:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 -2c","hm": "P -4 c 2","id": "P_-4_c_2","jmolId": "116","set": 1,"sg": 116,"trm": "a,b,c","wpos": { } },{ "clegId": "116:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C -4 2 c","id": "C_-4_2_c","jmolId": "116:c","set": 2,"sg": 116,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "117:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 -2ab","hm": "P -4 b 2","id": "P_-4_b_2","jmolId": "117","set": 1,"sg": 117,"trm": "a,b,c","wpos": { } },{ "clegId": "117:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C -4 2 g1","id": "C_-4_2_g1","jmolId": "117:c","set": 2,"sg": 117,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "118:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 -2n","hm": "P -4 n 2","id": "P_-4_n_2","jmolId": "118","set": 1,"sg": 118,"trm": "a,b,c","wpos": { } },{ "clegId": "118:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C -4 2 g2","id": "C_-4_2_g2","jmolId": "118:c","set": 2,"sg": 118,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "119:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -4 -2","hm": "I -4 m 2","id": "I_-4_m_2","jmolId": "119","set": 1,"sg": 119,"trm": "a,b,c","wpos": { } },{ "clegId": "119:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F?","hm": "F -4 2 m","id": "F_-4_2_m","jmolId": "119:f","set": 2,"sg": 119,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "120:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -4 -2c","hm": "I -4 c 2","id": "I_-4_c_2","jmolId": "120","set": 1,"sg": 120,"trm": "a,b,c","wpos": { } },{ "clegId": "120:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F?","hm": "F -4 2 c","id": "F_-4_2_c","jmolId": "120:f","set": 2,"sg": 120,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "121:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -4 2","hm": "I -4 2 m","id": "I_-4_2_m","jmolId": "121","set": 1,"sg": 121,"trm": "a,b,c","wpos": { } },{ "clegId": "121:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F?","hm": "F -4 m 2","id": "F_-4_m_2","jmolId": "121:f","set": 2,"sg": 121,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "122:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -4 2bw","hm": "I -4 2 d","id": "I_-4_2_d","jmolId": "122","set": 1,"sg": 122,"trm": "a,b,c","wpos": { } },{ "clegId": "122:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F -4 d 2","id": "F_-4_d_2","jmolId": "122:f","set": 2,"sg": 122,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "123:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4 2","hm": "P 4/m m m","id": "P_4/m_m_m","jmolId": "123","set": 1,"sg": 123,"trm": "a,b,c","wpos": { } },{ "clegId": "123:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4/m m m","id": "C_4/m_m_m","jmolId": "123:c","set": 2,"sg": 123,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "124:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4 2c","hm": "P 4/m c c","id": "P_4/m_c_c","jmolId": "124","set": 1,"sg": 124,"trm": "a,b,c","wpos": { } },{ "clegId": "124:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4/m c c","id": "C_4/m_c_c","jmolId": "124:c","set": 2,"sg": 124,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "125:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4a 2b","hm": "P 4/n b m :2","id": "P_4/n_b_m_2","jmolId": "125:2","set": 1,"sg": 125,"trm": "a,b,c","wpos": { } },{ "clegId": "125:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4/e m g1 :2","id": "C_4/e_m_g1_2","jmolId": "125:c","set": 2,"sg": 125,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "125:a,b,c;-1/4,-1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4 2 -1ab","hm": "P 4/n b m :1","id": "P_4/n_b_m_1","jmolId": "125:1","set": 3,"sg": 125,"trm": "a,b,c;-1/4,-1/4,0","wpos": { } },{ "clegId": "125:a-b,a+b,c;-1/4,-1/4,0","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4/e m g1 :1","id": "C_4/e_m_g1_1","jmolId": "125:c1","set": 4,"sg": 125,"trm": "a-b,a+b,c;-1/4,-1/4,0","wpos": { } },{ "clegId": "126:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4a 2bc","hm": "P 4/n n c :2","id": "P_4/n_n_c_2","jmolId": "126:2","set": 1,"sg": 126,"trm": "a,b,c","wpos": { } },{ "clegId": "126:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4/e c g2 :2","id": "C_4/e_c_g2_2","jmolId": "126:c","set": 2,"sg": 126,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "126:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4 2 -1n","hm": "P 4/n n c :1","id": "P_4/n_n_c_1","jmolId": "126:1","set": 3,"sg": 126,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { } },{ "clegId": "126:a-b,a+b,c;-1/4,-1/4,-1/4","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4/e c g2 :1","id": "C_4/e_c_g2_1","jmolId": "126:c","set": 4,"sg": 126,"trm": "a-b,a+b,c;-1/4,-1/4,-1/4","wpos": { } },{ "clegId": "127:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4 2ab","hm": "P 4/m b m","id": "P_4/m_b_m","jmolId": "127","set": 1,"sg": 127,"trm": "a,b,c","wpos": { } },{ "clegId": "127:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4/m m g1","id": "C_4/m_m_g1","jmolId": "127:c","set": 2,"sg": 127,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "128:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4 2n","hm": "P 4/m n c","id": "P_4/m_n_c","jmolId": "128","set": 1,"sg": 128,"trm": "a,b,c","wpos": { } },{ "clegId": "128:a+b,-a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4/m c g2","id": "C_4/m_c_g2","jmolId": "128:c","set": 2,"sg": 128,"trm": "a+b,-a+b,c","wpos": { } },{ "clegId": "129:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4a 2a","hm": "P 4/n m m :2","id": "P_4/n_m_m_2","jmolId": "129:2","set": 1,"sg": 129,"trm": "a,b,c","wpos": { } },{ "clegId": "129:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4/e m m :2","id": "C_4/e_m_m_2","jmolId": "129:c","set": 2,"sg": 129,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "129:a,b,c;-1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4ab 2ab -1ab","hm": "P 4/n m m :1","id": "P_4/n_m_m_1","jmolId": "129:1","set": 3,"sg": 129,"trm": "a,b,c;-1/4,1/4,0","wpos": { } },{ "clegId": "129:a-b,a+b,c;-1/4,1/4,0","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4/e m m :1","id": "C_4/e_m_m_1","jmolId": "129:c1","set": 4,"sg": 129,"trm": "a-b,a+b,c;-1/4,1/4,0","wpos": { } },{ "clegId": "130:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4a 2ac","hm": "P 4/n c c :2","id": "P_4/n_c_c_2","jmolId": "130:2","set": 1,"sg": 130,"trm": "a,b,c","wpos": { } },{ "clegId": "130:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 4/e c c :2","id": "C_4/e_c_c_2","jmolId": "130:c","set": 2,"sg": 130,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "130:a,b,c;-1/4,1/4,0","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4ab 2n -1ab","hm": "P 4/n c c :1","id": "P_4/n_c_c_1","jmolId": "130:1","set": 3,"sg": 130,"trm": "a,b,c;-1/4,1/4,0","wpos": { } },{ "clegId": "130:a-b,a+b,c;-1/4,1/4,0","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 4/e c c :1","id": "C_4/e_c_c_1","jmolId": "130:c1","set": 4,"sg": 130,"trm": "a-b,a+b,c;-1/4,1/4,0","wpos": { } },{ "clegId": "131:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4c 2","hm": "P 42/m m c","id": "P_42/m_m_c","jmolId": "131","set": 1,"sg": 131,"trm": "a,b,c","wpos": { } },{ "clegId": "131:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42/m c m","id": "C_42/m_c_m","jmolId": "131:c","set": 2,"sg": 131,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "132:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4c 2c","hm": "P 42/m c m","id": "P_42/m_c_m","jmolId": "132","set": 1,"sg": 132,"trm": "a,b,c","wpos": { } },{ "clegId": "132:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42/m m c","id": "C_42/m_m_c","jmolId": "132:c","set": 2,"sg": 132,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "133:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4ac 2b","hm": "P 42/n b c :2","id": "P_42/n_b_c_2","jmolId": "133:2","set": 1,"sg": 133,"trm": "a,b,c","wpos": { } },{ "clegId": "133:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 42/e c g1 :2","id": "C_42/e_c_g1_2","jmolId": "133:c","set": 2,"sg": 133,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "133:a,b,c;-1/4,1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4n 2c -1n","hm": "P 42/n b c :1","id": "P_42/n_b_c_1","jmolId": "133:1","set": 3,"sg": 133,"trm": "a,b,c;-1/4,1/4,-1/4","wpos": { } },{ "clegId": "133:a-b,a+b,c;-1/4,1/4,-1/4","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42/e c g1 :1","id": "C_42/e_c_g1_1","jmolId": "133:c2","set": 4,"sg": 133,"trm": "a-b,a+b,c;-1/4,1/4,-1/4","wpos": { } },{ "clegId": "134:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4ac 2bc","hm": "P 42/n n m :2","id": "P_42/n_n_m_2","jmolId": "134:2","set": 1,"sg": 134,"trm": "a,b,c","wpos": { } },{ "clegId": "134:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 42/e m g2 :2","id": "C_42/e_m_g2_2","jmolId": "134:c","set": 2,"sg": 134,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "134:a,b,c;-1/4,1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4n 2 -1n","hm": "P 42/n n m :1","id": "P_42/n_n_m_1","jmolId": "134:1","set": 3,"sg": 134,"trm": "a,b,c;-1/4,1/4,-1/4","wpos": { } },{ "clegId": "134:a-b,a+b,c;-1/4,1/4,-1/4","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42/e m g2 :1","id": "C_42/e_m_g2_1","jmolId": "134:c1","set": 4,"sg": 134,"trm": "a-b,a+b,c;-1/4,1/4,-1/4","wpos": { } },{ "clegId": "135:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4c 2ab","hm": "P 42/m b c","id": "P_42/m_b_c","jmolId": "135","set": 1,"sg": 135,"trm": "a,b,c","wpos": { } },{ "clegId": "135:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42/m c g1","id": "C_42/m_c_g1","jmolId": "135:c","set": 2,"sg": 135,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "136:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4n 2n","hm": "P 42/m n m","id": "P_42/m_n_m","jmolId": "136","set": 1,"sg": 136,"trm": "a,b,c","wpos": { } },{ "clegId": "136:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42/m m g2","id": "C_42/m_m_g2","jmolId": "136:c","set": 2,"sg": 136,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "137:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4ac 2a","hm": "P 42/n m c :2","id": "P_42/n_m_c_2","jmolId": "137:2","set": 1,"sg": 137,"trm": "a,b,c","wpos": { } },{ "clegId": "137:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 42/e c m :2","id": "C_42/e_c_m_2","jmolId": "137:c","set": 2,"sg": 137,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "137:a,b,c;-1/4,1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4n 2n -1n","hm": "P 42/n m c :1","id": "P_42/n_m_c_1","jmolId": "137:1","set": 3,"sg": 137,"trm": "a,b,c;-1/4,1/4,-1/4","wpos": { } },{ "clegId": "137:a-b,a+b,c;-1/4,1/4,-1/4","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42/e c m :1","id": "C_42/e_c_m_1","jmolId": "137:c2","set": 4,"sg": 137,"trm": "a-b,a+b,c;-1/4,1/4,-1/4","wpos": { } },{ "clegId": "138:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4ac 2ac","hm": "P 42/n c m :2","id": "P_42/n_c_m_2","jmolId": "138:2","set": 1,"sg": 138,"trm": "a,b,c","wpos": { } },{ "clegId": "138:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "C 42/e m c :2","id": "C_42/e_m_c_2","jmolId": "138:c","set": 2,"sg": 138,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "138:a,b,c;-1/4,1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4n 2ab -1n","hm": "P 42/n c m :1","id": "P_42/n_c_m_1","jmolId": "138:1","set": 3,"sg": 138,"trm": "a,b,c;-1/4,1/4,-1/4","wpos": { } },{ "clegId": "138:a-b,a+b,c;-1/4,1/4,-1/4","det": 2.0,"gen": [ ],"gp": [ ],"hall": "C?","hm": "C 42/e m c :1","id": "C_42/e_m_c_1","jmolId": "138:c1","set": 4,"sg": 138,"trm": "a-b,a+b,c;-1/4,1/4,-1/4","wpos": { } },{ "clegId": "139:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 4 2","hm": "I 4/m m m","id": "I_4/m_m_m","jmolId": "139","set": 1,"sg": 139,"trm": "a,b,c","wpos": { } },{ "clegId": "139:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F?","hm": "F 4/m m m","id": "F_4/m_m_m","jmolId": "139:f","set": 2,"sg": 139,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "140:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 4 2c","hm": "I 4/m c m","id": "I_4/m_c_m","jmolId": "140","set": 1,"sg": 140,"trm": "a,b,c","wpos": { } },{ "clegId": "140:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hall": "F?","hm": "F 4/m m c","id": "F_4/m_m_c","jmolId": "140:f","set": 2,"sg": 140,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "141:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 4bd 2","hm": "I 41/a m d :2","id": "I_41/a_m_d_2","jmolId": "141:2","set": 1,"sg": 141,"trm": "a,b,c","wpos": { } },{ "clegId": "141:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41/d d m :2","id": "F_41/d_d_m_2","jmolId": "141:f","set": 2,"sg": 141,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "141:a,b,c;0,1/4,-1/8","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4bw 2bw -1bw","hm": "I 41/a m d :1","id": "I_41/a_m_d_1","jmolId": "141:1","set": 3,"sg": 141,"trm": "a,b,c;0,1/4,-1/8","wpos": { } },{ "clegId": "141:a-b,a+b,c;0,1/4,-1/8","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41/d d m :1","id": "F_41/d_d_m_1","jmolId": "141:f","set": 4,"sg": 141,"trm": "a-b,a+b,c;0,1/4,-1/8","wpos": { } },{ "clegId": "142:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 4bd 2c","hm": "I 41/a c d :2","id": "I_41/a_c_d_2","jmolId": "142:2","set": 1,"sg": 142,"trm": "a,b,c","wpos": { } },{ "clegId": "142:a-b,a+b,c","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41/d d c :2","id": "F_41/d_d_c_2","jmolId": "142:f","set": 2,"sg": 142,"trm": "a-b,a+b,c","wpos": { } },{ "clegId": "142:a,b,c;0,1/4,-1/8","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4bw 2aw -1bw","hm": "I 41/a c d :1","id": "I_41/a_c_d_1","jmolId": "142:1","set": 3,"sg": 142,"trm": "a,b,c;0,1/4,-1/8","wpos": { } },{ "clegId": "142:a-b,a+b,c;0,1/4,-1/8","det": 2.0,"gen": [ ],"gp": [ ],"hm": "F 41/d d c :1","id": "F_41/d_d_c_1","jmolId": "142:f","set": 4,"sg": 142,"trm": "a-b,a+b,c;0,1/4,-1/8","wpos": { } },{ "clegId": "143:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 3","hm": "P 3","id": "P_3","jmolId": "143","set": 1,"sg": 143,"trm": "a,b,c","wpos": { } },{ "clegId": "144:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 31","hm": "P 31","id": "P_31","jmolId": "144","set": 1,"sg": 144,"trm": "a,b,c","wpos": { } },{ "clegId": "145:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 32","hm": "P 32","id": "P_32","jmolId": "145","set": 1,"sg": 145,"trm": "a,b,c","wpos": { } },{ "clegId": "146:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "R 3","hm": "R 3 :h","id": "R_3_h","jmolId": "146:h","set": 1,"sg": 146,"trm": "a,b,c","wpos": { } },{ "clegId": "146:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ ],"gp": [ ],"hall": "P 3*","hm": "R 3 :r","id": "R_3_r","jmolId": "146:r","set": 2,"sg": 146,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { } },{ "clegId": "147:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 3","hm": "P -3","id": "P_-3","jmolId": "147","set": 1,"sg": 147,"trm": "a,b,c","wpos": { } },{ "clegId": "148:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-R 3","hm": "R -3 :h","id": "R_-3_h","jmolId": "148:h","set": 1,"sg": 148,"trm": "a,b,c","wpos": { } },{ "clegId": "148:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ ],"gp": [ ],"hall": "-P 3*","hm": "R -3 :r","id": "R_-3_r","jmolId": "148:r","set": 2,"sg": 148,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { } },{ "clegId": "149:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 3 2","hm": "P 3 1 2","id": "P_3_1_2","jmolId": "149","set": 1,"sg": 149,"trm": "a,b,c","wpos": { } },{ "clegId": "150:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 3 2\"","hm": "P 3 2 1","id": "P_3_2_1","jmolId": "150","set": 1,"sg": 150,"trm": "a,b,c","wpos": { } },{ "clegId": "151:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 31 2 (0 0 4)","hm": "P 31 1 2","id": "P_31_1_2","jmolId": "151","set": 1,"sg": 151,"trm": "a,b,c","wpos": { } },{ "clegId": "152:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 31 2\"","hm": "P 31 2 1","id": "P_31_2_1","jmolId": "152","set": 1,"sg": 152,"trm": "a,b,c","wpos": { } },{ "clegId": "153:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 32 2 (0 0 2)","hm": "P 32 1 2","id": "P_32_1_2","jmolId": "153","set": 1,"sg": 153,"trm": "a,b,c","wpos": { } },{ "clegId": "154:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 32 2\"","hm": "P 32 2 1","id": "P_32_2_1","jmolId": "154","set": 1,"sg": 154,"trm": "a,b,c","wpos": { } },{ "clegId": "155:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "R 3 2\"","hm": "R 3 2 :h","id": "R_3_2_h","jmolId": "155:h","set": 1,"sg": 155,"trm": "a,b,c","wpos": { } },{ "clegId": "155:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ ],"gp": [ ],"hall": "P 3* 2","hm": "R 3 2 :r","id": "R_3_2_r","jmolId": "155:r","set": 2,"sg": 155,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { } },{ "clegId": "156:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 3 -2\"","hm": "P 3 m 1","id": "P_3_m_1","jmolId": "156","set": 1,"sg": 156,"trm": "a,b,c","wpos": { } },{ "clegId": "157:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 3 -2","hm": "P 3 1 m","id": "P_3_1_m","jmolId": "157","set": 1,"sg": 157,"trm": "a,b,c","wpos": { } },{ "clegId": "158:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 3 -2\"c","hm": "P 3 c 1","id": "P_3_c_1","jmolId": "158","set": 1,"sg": 158,"trm": "a,b,c","wpos": { } },{ "clegId": "159:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 3 -2c","hm": "P 3 1 c","id": "P_3_1_c","jmolId": "159","set": 1,"sg": 159,"trm": "a,b,c","wpos": { } },{ "clegId": "160:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "R 3 -2\"","hm": "R 3 m :h","id": "R_3_m_h","jmolId": "160:h","set": 1,"sg": 160,"trm": "a,b,c","wpos": { } },{ "clegId": "160:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ ],"gp": [ ],"hall": "P 3* -2","hm": "R 3 m :r","id": "R_3_m_r","jmolId": "160:r","set": 2,"sg": 160,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { } },{ "clegId": "161:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "R 3 -2\"c","hm": "R 3 c :h","id": "R_3_c_h","jmolId": "161:h","set": 1,"sg": 161,"trm": "a,b,c","wpos": { } },{ "clegId": "161:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ ],"gp": [ ],"hall": "P 3* -2n","hm": "R 3 c :r","id": "R_3_c_r","jmolId": "161:r","set": 2,"sg": 161,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { } },{ "clegId": "162:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 3 2","hm": "P -3 1 m","id": "P_-3_1_m","jmolId": "162","set": 1,"sg": 162,"trm": "a,b,c","wpos": { } },{ "clegId": "163:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 3 2c","hm": "P -3 1 c","id": "P_-3_1_c","jmolId": "163","set": 1,"sg": 163,"trm": "a,b,c","wpos": { } },{ "clegId": "164:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 3 2\"","hm": "P -3 m 1","id": "P_-3_m_1","jmolId": "164","set": 1,"sg": 164,"trm": "a,b,c","wpos": { } },{ "clegId": "165:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 3 2\"c","hm": "P -3 c 1","id": "P_-3_c_1","jmolId": "165","set": 1,"sg": 165,"trm": "a,b,c","wpos": { } },{ "clegId": "166:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-R 3 2\"","hm": "R -3 m :h","id": "R_-3_m_h","jmolId": "166:h","set": 1,"sg": 166,"trm": "a,b,c","wpos": { } },{ "clegId": "166:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ ],"gp": [ ],"hall": "-P 3* 2","hm": "R -3 m :r","id": "R_-3_m_r","jmolId": "166:r","set": 2,"sg": 166,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { } },{ "clegId": "167:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-R 3 2\"c","hm": "R -3 c :h","id": "R_-3_c_h","jmolId": "167:h","set": 1,"sg": 167,"trm": "a,b,c","wpos": { } },{ "clegId": "167:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","det": 0.3333333333333333,"gen": [ ],"gp": [ ],"hall": "-P 3* 2n","hm": "R -3 c :r","id": "R_-3_c_r","jmolId": "167:r","set": 2,"sg": 167,"trm": "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c","wpos": { } },{ "clegId": "168:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 6","hm": "P 6","id": "P_6","jmolId": "168","set": 1,"sg": 168,"trm": "a,b,c","wpos": { } },{ "clegId": "169:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 61","hm": "P 61","id": "P_61","jmolId": "169","set": 1,"sg": 169,"trm": "a,b,c","wpos": { } },{ "clegId": "170:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 65","hm": "P 65","id": "P_65","jmolId": "170","set": 1,"sg": 170,"trm": "a,b,c","wpos": { } },{ "clegId": "171:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 62","hm": "P 62","id": "P_62","jmolId": "171","set": 1,"sg": 171,"trm": "a,b,c","wpos": { } },{ "clegId": "172:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 64","hm": "P 64","id": "P_64","jmolId": "172","set": 1,"sg": 172,"trm": "a,b,c","wpos": { } },{ "clegId": "173:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 6c","hm": "P 63","id": "P_63","jmolId": "173","set": 1,"sg": 173,"trm": "a,b,c","wpos": { } },{ "clegId": "174:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -6","hm": "P -6","id": "P_-6","jmolId": "174","set": 1,"sg": 174,"trm": "a,b,c","wpos": { } },{ "clegId": "175:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 6","hm": "P 6/m","id": "P_6/m","jmolId": "175","set": 1,"sg": 175,"trm": "a,b,c","wpos": { } },{ "clegId": "176:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 6c","hm": "P 63/m","id": "P_63/m","jmolId": "176","set": 1,"sg": 176,"trm": "a,b,c","wpos": { } },{ "clegId": "177:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 6 2","hm": "P 6 2 2","id": "P_6_2_2","jmolId": "177","set": 1,"sg": 177,"trm": "a,b,c","wpos": { } },{ "clegId": "178:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 61 2 (0 0 5)","hm": "P 61 2 2","id": "P_61_2_2","jmolId": "178","set": 1,"sg": 178,"trm": "a,b,c","wpos": { } },{ "clegId": "179:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 65 2 (0 0 1)","hm": "P 65 2 2","id": "P_65_2_2","jmolId": "179","set": 1,"sg": 179,"trm": "a,b,c","wpos": { } },{ "clegId": "180:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 62 2 (0 0 4)","hm": "P 62 2 2","id": "P_62_2_2","jmolId": "180","set": 1,"sg": 180,"trm": "a,b,c","wpos": { } },{ "clegId": "181:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 64 2 (0 0 2)","hm": "P 64 2 2","id": "P_64_2_2","jmolId": "181","set": 1,"sg": 181,"trm": "a,b,c","wpos": { } },{ "clegId": "182:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 6c 2c","hm": "P 63 2 2","id": "P_63_2_2","jmolId": "182","set": 1,"sg": 182,"trm": "a,b,c","wpos": { } },{ "clegId": "183:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 6 -2","hm": "P 6 m m","id": "P_6_m_m","jmolId": "183","set": 1,"sg": 183,"trm": "a,b,c","wpos": { } },{ "clegId": "184:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 6 -2c","hm": "P 6 c c","id": "P_6_c_c","jmolId": "184","set": 1,"sg": 184,"trm": "a,b,c","wpos": { } },{ "clegId": "185:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 6c -2","hm": "P 63 c m","id": "P_63_c_m","jmolId": "185","set": 1,"sg": 185,"trm": "a,b,c","wpos": { } },{ "clegId": "186:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 6c -2c","hm": "P 63 m c","id": "P_63_m_c","jmolId": "186","set": 1,"sg": 186,"trm": "a,b,c","wpos": { } },{ "clegId": "187:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -6 2","hm": "P -6 m 2","id": "P_-6_m_2","jmolId": "187","set": 1,"sg": 187,"trm": "a,b,c","wpos": { } },{ "clegId": "188:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -6c 2","hm": "P -6 c 2","id": "P_-6_c_2","jmolId": "188","set": 1,"sg": 188,"trm": "a,b,c","wpos": { } },{ "clegId": "189:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -6 -2","hm": "P -6 2 m","id": "P_-6_2_m","jmolId": "189","set": 1,"sg": 189,"trm": "a,b,c","wpos": { } },{ "clegId": "190:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -6c -2c","hm": "P -6 2 c","id": "P_-6_2_c","jmolId": "190","set": 1,"sg": 190,"trm": "a,b,c","wpos": { } },{ "clegId": "191:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 6 2","hm": "P 6/m m m","id": "P_6/m_m_m","jmolId": "191","set": 1,"sg": 191,"trm": "a,b,c","wpos": { } },{ "clegId": "192:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 6 2c","hm": "P 6/m c c","id": "P_6/m_c_c","jmolId": "192","set": 1,"sg": 192,"trm": "a,b,c","wpos": { } },{ "clegId": "193:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 6c 2","hm": "P 63/m c m","id": "P_63/m_c_m","jmolId": "193","set": 1,"sg": 193,"trm": "a,b,c","wpos": { } },{ "clegId": "194:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 6c 2c","hm": "P 63/m m c","id": "P_63/m_m_c","jmolId": "194","set": 1,"sg": 194,"trm": "a,b,c","wpos": { } },{ "clegId": "195:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2 3","hm": "P 2 3","id": "P_2_3","jmolId": "195","set": 1,"sg": 195,"trm": "a,b,c","wpos": { } },{ "clegId": "196:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 2 2 3","hm": "F 2 3","id": "F_2_3","jmolId": "196","set": 1,"sg": 196,"trm": "a,b,c","wpos": { } },{ "clegId": "197:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2 2 3","hm": "I 2 3","id": "I_2_3","jmolId": "197","set": 1,"sg": 197,"trm": "a,b,c","wpos": { } },{ "clegId": "198:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2ac 2ab 3","hm": "P 21 3","id": "P_21_3","jmolId": "198","set": 1,"sg": 198,"trm": "a,b,c","wpos": { } },{ "clegId": "199:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 2b 2c 3","hm": "I 21 3","id": "I_21_3","jmolId": "199","set": 1,"sg": 199,"trm": "a,b,c","wpos": { } },{ "clegId": "200:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2 2 3","hm": "P m -3","id": "P_m_-3","jmolId": "200","set": 1,"sg": 200,"trm": "a,b,c","wpos": { } },{ "clegId": "201:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ab 2bc 3","hm": "P n -3 :2","id": "P_n_-3_2","jmolId": "201:2","set": 1,"sg": 201,"trm": "a,b,c","wpos": { } },{ "clegId": "201:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 2 2 3 -1n","hm": "P n -3 :1","id": "P_n_-3_1","jmolId": "201:1","set": 2,"sg": 201,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { } },{ "clegId": "202:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-F 2 2 3","hm": "F m -3","id": "F_m_-3","jmolId": "202","set": 1,"sg": 202,"trm": "a,b,c","wpos": { } },{ "clegId": "203:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-F 2uv 2vw 3","hm": "F d -3 :2","id": "F_d_-3_2","jmolId": "203:2","set": 1,"sg": 203,"trm": "a,b,c","wpos": { } },{ "clegId": "203:a,b,c;-1/8,-1/8,-1/8","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 2 2 3 -1d","hm": "F d -3 :1","id": "F_d_-3_1","jmolId": "203:1","set": 2,"sg": 203,"trm": "a,b,c;-1/8,-1/8,-1/8","wpos": { } },{ "clegId": "204:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2 2 3","hm": "I m -3","id": "I_m_-3","jmolId": "204","set": 1,"sg": 204,"trm": "a,b,c","wpos": { } },{ "clegId": "205:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 2ac 2ab 3","hm": "P a -3","id": "P_a_-3","jmolId": "205","set": 1,"sg": 205,"trm": "a,b,c","wpos": { } },{ "clegId": "206:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 2b 2c 3","hm": "I a -3","id": "I_a_-3","jmolId": "206","set": 1,"sg": 206,"trm": "a,b,c","wpos": { } },{ "clegId": "207:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4 2 3","hm": "P 4 3 2","id": "P_4_3_2","jmolId": "207","set": 1,"sg": 207,"trm": "a,b,c","wpos": { } },{ "clegId": "208:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4n 2 3","hm": "P 42 3 2","id": "P_42_3_2","jmolId": "208","set": 1,"sg": 208,"trm": "a,b,c","wpos": { } },{ "clegId": "209:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 4 2 3","hm": "F 4 3 2","id": "F_4_3_2","jmolId": "209","set": 1,"sg": 209,"trm": "a,b,c","wpos": { } },{ "clegId": "210:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 4d 2 3","hm": "F 41 3 2","id": "F_41_3_2","jmolId": "210","set": 1,"sg": 210,"trm": "a,b,c","wpos": { } },{ "clegId": "211:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4 2 3","hm": "I 4 3 2","id": "I_4_3_2","jmolId": "211","set": 1,"sg": 211,"trm": "a,b,c","wpos": { } },{ "clegId": "212:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4acd 2ab 3","hm": "P 43 3 2","id": "P_43_3_2","jmolId": "212","set": 1,"sg": 212,"trm": "a,b,c","wpos": { } },{ "clegId": "213:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4bd 2ab 3","hm": "P 41 3 2","id": "P_41_3_2","jmolId": "213","set": 1,"sg": 213,"trm": "a,b,c","wpos": { } },{ "clegId": "214:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I 4bd 2c 3","hm": "I 41 3 2","id": "I_41_3_2","jmolId": "214","set": 1,"sg": 214,"trm": "a,b,c","wpos": { } },{ "clegId": "215:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4 2 3","hm": "P -4 3 m","id": "P_-4_3_m","jmolId": "215","set": 1,"sg": 215,"trm": "a,b,c","wpos": { } },{ "clegId": "216:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F -4 2 3","hm": "F -4 3 m","id": "F_-4_3_m","jmolId": "216","set": 1,"sg": 216,"trm": "a,b,c","wpos": { } },{ "clegId": "217:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -4 2 3","hm": "I -4 3 m","id": "I_-4_3_m","jmolId": "217","set": 1,"sg": 217,"trm": "a,b,c","wpos": { } },{ "clegId": "218:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P -4n 2 3","hm": "P -4 3 n","id": "P_-4_3_n","jmolId": "218","set": 1,"sg": 218,"trm": "a,b,c","wpos": { } },{ "clegId": "219:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F -4a 2 3","hm": "F -4 3 c","id": "F_-4_3_c","jmolId": "219","set": 1,"sg": 219,"trm": "a,b,c","wpos": { } },{ "clegId": "220:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "I -4bd 2c 3","hm": "I -4 3 d","id": "I_-4_3_d","jmolId": "220","set": 1,"sg": 220,"trm": "a,b,c","wpos": { } },{ "clegId": "221:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4 2 3","hm": "P m -3 m","id": "P_m_-3_m","jmolId": "221","set": 1,"sg": 221,"trm": "a,b,c","wpos": { } },{ "clegId": "222:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4a 2bc 3","hm": "P n -3 n :2","id": "P_n_-3_n_2","jmolId": "222:2","set": 1,"sg": 222,"trm": "a,b,c","wpos": { } },{ "clegId": "222:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4 2 3 -1n","hm": "P n -3 n :1","id": "P_n_-3_n_1","jmolId": "222:1","set": 2,"sg": 222,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { } },{ "clegId": "223:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4n 2 3","hm": "P m -3 n","id": "P_m_-3_n","jmolId": "223","set": 1,"sg": 223,"trm": "a,b,c","wpos": { } },{ "clegId": "224:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-P 4bc 2bc 3","hm": "P n -3 m :2","id": "P_n_-3_m_2","jmolId": "224:2","set": 1,"sg": 224,"trm": "a,b,c","wpos": { } },{ "clegId": "224:a,b,c;-1/4,-1/4,-1/4","det": 1.0,"gen": [ ],"gp": [ ],"hall": "P 4n 2 3 -1n","hm": "P n -3 m :1","id": "P_n_-3_m_1","jmolId": "224:1","set": 2,"sg": 224,"trm": "a,b,c;-1/4,-1/4,-1/4","wpos": { } },{ "clegId": "225:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-F 4 2 3","hm": "F m -3 m","id": "F_m_-3_m","jmolId": "225","set": 1,"sg": 225,"trm": "a,b,c","wpos": { } },{ "clegId": "226:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-F 4a 2 3","hm": "F m -3 c","id": "F_m_-3_c","jmolId": "226","set": 1,"sg": 226,"trm": "a,b,c","wpos": { } },{ "clegId": "227:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-F 4vw 2vw 3","hm": "F d -3 m :2","id": "F_d_-3_m_2","jmolId": "227:2","set": 1,"sg": 227,"trm": "a,b,c","wpos": { } },{ "clegId": "227:a,b,c;-1/8,-1/8,-1/8","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 4d 2 3 -1d","hm": "F d -3 m :1","id": "F_d_-3_m_1","jmolId": "227:1","set": 2,"sg": 227,"trm": "a,b,c;-1/8,-1/8,-1/8","wpos": { } },{ "clegId": "228:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-F 4ud 2vw 3","hm": "F d -3 c :2","id": "F_d_-3_c_2","jmolId": "228:2","set": 1,"sg": 228,"trm": "a,b,c","wpos": { } },{ "clegId": "228:a,b,c;-3/8,-3/8,-3/8","det": 1.0,"gen": [ ],"gp": [ ],"hall": "F 4d 2 3 -1ad","hm": "F d -3 c :1","id": "F_d_-3_c_1","jmolId": "228:1","set": 2,"sg": 228,"trm": "a,b,c;-3/8,-3/8,-3/8","wpos": { } },{ "clegId": "229:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 4 2 3","hm": "I m -3 m","id": "I_m_-3_m","jmolId": "229","set": 1,"sg": 229,"trm": "a,b,c","wpos": { } },{ "clegId": "230:a,b,c","det": 1.0,"gen": [ ],"gp": [ ],"hall": "-I 4bd 2c 3","hm": "I a -3 d","id": "I_a_-3_d","jmolId": "230","set": 1,"sg": 230,"trm": "a,b,c","wpos": { } },{ "clegId": "5:c,-b,a","det": 1.0,"hm": "A 1 2 1 :1","id": "A_1_2_1_1","more": true,"set": 10,"sg": 5,"trm": "c,-b,a" },{ "clegId": "5:a,-b,-a-c","det": 1.0,"hm": "C 1 2 1 :2","id": "C_1_2_1_2","more": true,"set": 11,"sg": 5,"trm": "a,-b,-a-c" },{ "clegId": "5:-a-c,-b,c","det": 1.0,"hm": "I 1 2 1 :3","id": "I_1_2_1_3","more": true,"set": 12,"sg": 5,"trm": "-a-c,-b,c" },{ "clegId": "5:a,c,-b","det": 1.0,"hm": "B 1 1 2 :1","id": "B_1_1_2_1","more": true,"set": 13,"sg": 5,"trm": "a,c,-b" },{ "clegId": "5:-a-c,a,-b","det": 1.0,"hm": "A 1 1 2 :2","id": "A_1_1_2_2","more": true,"set": 14,"sg": 5,"trm": "-a-c,a,-b" },{ "clegId": "5:c,-a-c,-b","det": 1.0,"hm": "I 1 1 2 :3","id": "I_1_1_2_3","more": true,"set": 15,"sg": 5,"trm": "c,-a-c,-b" },{ "clegId": "5:-b,a,c","det": 1.0,"hm": "C 2 1 1 :1","id": "C_2_1_1_1","more": true,"set": 16,"sg": 5,"trm": "-b,a,c" },{ "clegId": "5:-b,-a-c,a","det": 1.0,"hm": "B 2 1 1 :2","id": "B_2_1_1_2","more": true,"set": 17,"sg": 5,"trm": "-b,-a-c,a" },{ "clegId": "5:-b,c,-a-c","det": 1.0,"hm": "I 2 1 1 :3","id": "I_2_1_1_3","more": true,"set": 18,"sg": 5,"trm": "-b,c,-a-c" },{ "clegId": "7:c,-b,a","det": 1.0,"hm": "P 1 a 1 :1","id": "P_1_a_1_1","more": true,"set": 10,"sg": 7,"trm": "c,-b,a" },{ "clegId": "7:a,-b,-a-c","det": 1.0,"hm": "P 1 n 1 :2","id": "P_1_n_1_2","more": true,"set": 11,"sg": 7,"trm": "a,-b,-a-c" },{ "clegId": "7:-a-c,-b,c","det": 1.0,"hm": "P 1 c 1 :3","id": "P_1_c_1_3","more": true,"set": 12,"sg": 7,"trm": "-a-c,-b,c" },{ "clegId": "7:a,c,-b","det": 1.0,"hm": "P 1 1 b :1","id": "P_1_1_b_1","more": true,"set": 13,"sg": 7,"trm": "a,c,-b" },{ "clegId": "7:-a-c,a,-b","det": 1.0,"hm": "P 1 1 n :2","id": "P_1_1_n_2","more": true,"set": 14,"sg": 7,"trm": "-a-c,a,-b" },{ "clegId": "7:c,-a-c,-b","det": 1.0,"hm": "P 1 1 a :3","id": "P_1_1_a_3","more": true,"set": 15,"sg": 7,"trm": "c,-a-c,-b" },{ "clegId": "7:-b,a,c","det": 1.0,"hm": "P c 1 1 :1","id": "P_c_1_1_1","more": true,"set": 16,"sg": 7,"trm": "-b,a,c" },{ "clegId": "7:-b,-a-c,a","det": 1.0,"hm": "P n 1 1 :2","id": "P_n_1_1_2","more": true,"set": 17,"sg": 7,"trm": "-b,-a-c,a" },{ "clegId": "7:-b,c,-a-c","det": 1.0,"hm": "P b 1 1 :3","id": "P_b_1_1_3","more": true,"set": 18,"sg": 7,"trm": "-b,c,-a-c" },{ "clegId": "8:c,-b,a","det": 1.0,"hm": "A 1 m 1 :1","id": "A_1_m_1_1","more": true,"set": 10,"sg": 8,"trm": "c,-b,a" },{ "clegId": "8:a,-b,-a-c","det": 1.0,"hm": "C 1 m 1 :2","id": "C_1_m_1_2","more": true,"set": 11,"sg": 8,"trm": "a,-b,-a-c" },{ "clegId": "8:-a-c,-b,c","det": 1.0,"hm": "I 1 m 1 :3","id": "I_1_m_1_3","more": true,"set": 12,"sg": 8,"trm": "-a-c,-b,c" },{ "clegId": "8:a,c,-b","det": 1.0,"hm": "B 1 1 m :1","id": "B_1_1_m_1","more": true,"set": 13,"sg": 8,"trm": "a,c,-b" },{ "clegId": "8:-a-c,a,-b","det": 1.0,"hm": "A 1 1 m :2","id": "A_1_1_m_2","more": true,"set": 14,"sg": 8,"trm": "-a-c,a,-b" },{ "clegId": "8:c,-a-c,-b","det": 1.0,"hm": "I 1 1 m :3","id": "I_1_1_m_3","more": true,"set": 15,"sg": 8,"trm": "c,-a-c,-b" },{ "clegId": "8:-b,a,c","det": 1.0,"hm": "C m 1 1 :1","id": "C_m_1_1_1","more": true,"set": 16,"sg": 8,"trm": "-b,a,c" },{ "clegId": "8:-b,-a-c,a","det": 1.0,"hm": "B m 1 1 :2","id": "B_m_1_1_2","more": true,"set": 17,"sg": 8,"trm": "-b,-a-c,a" },{ "clegId": "8:-b,c,-a-c","det": 1.0,"hm": "I m 1 1 :3","id": "I_m_1_1_3","more": true,"set": 18,"sg": 8,"trm": "-b,c,-a-c" },{ "clegId": "12:c,-b,a","det": 1.0,"hm": "A 1 2/m 1 :1","id": "A_1_2/m_1_1","more": true,"set": 10,"sg": 12,"trm": "c,-b,a" },{ "clegId": "12:a,-b,-a-c","det": 1.0,"hm": "C 1 2/m 1 :2","id": "C_1_2/m_1_2","more": true,"set": 11,"sg": 12,"trm": "a,-b,-a-c" },{ "clegId": "12:-a-c,-b,c","det": 1.0,"hm": "I 1 2/m 1 :3","id": "I_1_2/m_1_3","more": true,"set": 12,"sg": 12,"trm": "-a-c,-b,c" },{ "clegId": "12:a,c,-b","det": 1.0,"hm": "B 1 1 2/m :1","id": "B_1_1_2/m_1","more": true,"set": 13,"sg": 12,"trm": "a,c,-b" },{ "clegId": "12:-a-c,a,-b","det": 1.0,"hm": "A 1 1 2/m :2","id": "A_1_1_2/m_2","more": true,"set": 14,"sg": 12,"trm": "-a-c,a,-b" },{ "clegId": "12:c,-a-c,-b","det": 1.0,"hm": "I 1 1 2/m :3","id": "I_1_1_2/m_3","more": true,"set": 15,"sg": 12,"trm": "c,-a-c,-b" },{ "clegId": "12:-b,a,c","det": 1.0,"hm": "C 2/m 1 1 :1","id": "C_2/m_1_1_1","more": true,"set": 16,"sg": 12,"trm": "-b,a,c" },{ "clegId": "12:-b,-a-c,a","det": 1.0,"hm": "B 2/m 1 1 :2","id": "B_2/m_1_1_2","more": true,"set": 17,"sg": 12,"trm": "-b,-a-c,a" },{ "clegId": "12:-b,c,-a-c","det": 1.0,"hm": "I 2/m 1 1 :3","id": "I_2/m_1_1_3","more": true,"set": 18,"sg": 12,"trm": "-b,c,-a-c" },{ "clegId": "13:c,-b,a","det": 1.0,"hm": "P 1 2/a 1 :1","id": "P_1_2/a_1_1","more": true,"set": 10,"sg": 13,"trm": "c,-b,a" },{ "clegId": "13:a,-b,-a-c","det": 1.0,"hm": "P 1 2/n 1 :2","id": "P_1_2/n_1_2","more": true,"set": 11,"sg": 13,"trm": "a,-b,-a-c" },{ "clegId": "13:-a-c,-b,c","det": 1.0,"hm": "P 1 2/c 1 :3","id": "P_1_2/c_1_3","more": true,"set": 12,"sg": 13,"trm": "-a-c,-b,c" },{ "clegId": "13:a,c,-b","det": 1.0,"hm": "P 1 1 2/b :1","id": "P_1_1_2/b_1","more": true,"set": 13,"sg": 13,"trm": "a,c,-b" },{ "clegId": "13:-a-c,a,-b","det": 1.0,"hm": "P 1 1 2/n :2","id": "P_1_1_2/n_2","more": true,"set": 14,"sg": 13,"trm": "-a-c,a,-b" },{ "clegId": "13:c,-a-c,-b","det": 1.0,"hm": "P 1 1 2/a :3","id": "P_1_1_2/a_3","more": true,"set": 15,"sg": 13,"trm": "c,-a-c,-b" },{ "clegId": "13:-b,a,c","det": 1.0,"hm": "P 2/c 1 1 :1","id": "P_2/c_1_1_1","more": true,"set": 16,"sg": 13,"trm": "-b,a,c" },{ "clegId": "13:-b,-a-c,a","det": 1.0,"hm": "P 2/n 1 1 :2","id": "P_2/n_1_1_2","more": true,"set": 17,"sg": 13,"trm": "-b,-a-c,a" },{ "clegId": "13:-b,c,-a-c","det": 1.0,"hm": "P 2/b 1 1 :3","id": "P_2/b_1_1_3","more": true,"set": 18,"sg": 13,"trm": "-b,c,-a-c" },{ "clegId": "14:c,-b,a","det": 1.0,"hm": "P 1 21/a 1 :1","id": "P_1_21/a_1_1","more": true,"set": 10,"sg": 14,"trm": "c,-b,a" },{ "clegId": "14:a,-b,-a-c","det": 1.0,"hm": "P 1 21/n 1 :2","id": "P_1_21/n_1_2","more": true,"set": 11,"sg": 14,"trm": "a,-b,-a-c" },{ "clegId": "14:-a-c,-b,c","det": 1.0,"hm": "P 1 21/c 1 :3","id": "P_1_21/c_1_3","more": true,"set": 12,"sg": 14,"trm": "-a-c,-b,c" },{ "clegId": "14:a,c,-b","det": 1.0,"hm": "P 1 1 21/b :1","id": "P_1_1_21/b_1","more": true,"set": 13,"sg": 14,"trm": "a,c,-b" },{ "clegId": "14:-a-c,a,-b","det": 1.0,"hm": "P 1 1 21/n :2","id": "P_1_1_21/n_2","more": true,"set": 14,"sg": 14,"trm": "-a-c,a,-b" },{ "clegId": "14:c,-a-c,-b","det": 1.0,"hm": "P 1 1 21/a :3","id": "P_1_1_21/a_3","more": true,"set": 15,"sg": 14,"trm": "c,-a-c,-b" },{ "clegId": "14:-b,a,c","det": 1.0,"hm": "P 21/c 1 1 :1","id": "P_21/c_1_1_1","more": true,"set": 16,"sg": 14,"trm": "-b,a,c" },{ "clegId": "14:-b,-a-c,a","det": 1.0,"hm": "P 21/n 1 1 :2","id": "P_21/n_1_1_2","more": true,"set": 17,"sg": 14,"trm": "-b,-a-c,a" },{ "clegId": "14:-b,c,-a-c","det": 1.0,"hm": "P 21/b 1 1 :3","id": "P_21/b_1_1_3","more": true,"set": 18,"sg": 14,"trm": "-b,c,-a-c" },{ "clegId": "75:a+b,-a+b,c","det": 2.0,"hm": "C 4","id": "C_4","more": true,"set": 3,"sg": 75,"trm": "a+b,-a+b,c" },{ "clegId": "76:a+b,-a+b,c","det": 2.0,"hm": "C 41","id": "C_41","more": true,"set": 3,"sg": 76,"trm": "a+b,-a+b,c" },{ "clegId": "77:a+b,-a+b,c","det": 2.0,"hm": "C 42","id": "C_42","more": true,"set": 3,"sg": 77,"trm": "a+b,-a+b,c" },{ "clegId": "78:a+b,-a+b,c","det": 2.0,"hm": "C 43","id": "C_43","more": true,"set": 3,"sg": 78,"trm": "a+b,-a+b,c" },{ "clegId": "79:a+b,-a+b,c","det": 2.0,"hm": "F 4","id": "F_4","more": true,"set": 3,"sg": 79,"trm": "a+b,-a+b,c" },{ "clegId": "80:a+b,-a+b,c","det": 2.0,"hm": "F 41","id": "F_41","more": true,"set": 3,"sg": 80,"trm": "a+b,-a+b,c" },{ "clegId": "81:a+b,-a+b,c","det": 2.0,"hm": "C -4","id": "C_-4","more": true,"set": 3,"sg": 81,"trm": "a+b,-a+b,c" },{ "clegId": "82:a+b,-a+b,c","det": 2.0,"hm": "F -4","id": "F_-4","more": true,"set": 3,"sg": 82,"trm": "a+b,-a+b,c" },{ "clegId": "83:a+b,-a+b,c","det": 2.0,"hm": "C 4/m","id": "C_4/m","more": true,"set": 3,"sg": 83,"trm": "a+b,-a+b,c" },{ "clegId": "84:a+b,-a+b,c","det": 2.0,"hm": "C 42/m","id": "C_42/m","more": true,"set": 3,"sg": 84,"trm": "a+b,-a+b,c" },{ "clegId": "85:a+b,-a+b,c","det": 2.0,"hm": "C 4/e :2","id": "C_4/e_2","more": true,"set": 5,"sg": 85,"trm": "a+b,-a+b,c" },{ "clegId": "85:a+b,-a+b,c;-1/4,1/4,0","det": 2.0,"hm": "C 4/e :1","id": "C_4/e_1","more": true,"set": 6,"sg": 85,"trm": "a+b,-a+b,c;-1/4,1/4,0" },{ "clegId": "86:a+b,-a+b,c","det": 2.0,"hm": "C 42/e :2","id": "C_42/e_2","more": true,"set": 5,"sg": 86,"trm": "a+b,-a+b,c" },{ "clegId": "86:a+b,-a+b,c;-1/4,-1/4,-1/4","det": 2.0,"hm": "C 42/e :1","id": "C_42/e_1","more": true,"set": 6,"sg": 86,"trm": "a+b,-a+b,c;-1/4,-1/4,-1/4" },{ "clegId": "87:a+b,-a+b,c","det": 2.0,"hm": "F 4/m","id": "F_4/m","more": true,"set": 3,"sg": 87,"trm": "a+b,-a+b,c" },{ "clegId": "88:a+b,-a+b,c","det": 2.0,"hm": "F 41/d :2","id": "F_41/d_2","more": true,"set": 5,"sg": 88,"trm": "a+b,-a+b,c" },{ "clegId": "88:a+b,-a+b,c;0,-1/4,-1/8","det": 2.0,"hm": "F 41/d :1","id": "F_41/d_1","more": true,"set": 6,"sg": 88,"trm": "a+b,-a+b,c;0,-1/4,-1/8" },{ "clegId": "89:a+b,-a+b,c","det": 2.0,"hm": "C 4 2 2","id": "C_4_2_2","more": true,"set": 3,"sg": 89,"trm": "a+b,-a+b,c" },{ "clegId": "90:a+b,-a+b,c","det": 2.0,"hm": "C 4 2 21","id": "C_4_2_21","more": true,"set": 3,"sg": 90,"trm": "a+b,-a+b,c" },{ "clegId": "91:a+b,-a+b,c","det": 2.0,"hm": "C 41 2 2","id": "C_41_2_2","more": true,"set": 3,"sg": 91,"trm": "a+b,-a+b,c" },{ "clegId": "92:a+b,-a+b,c","det": 2.0,"hm": "C 41 2 21","id": "C_41_2_21","more": true,"set": 3,"sg": 92,"trm": "a+b,-a+b,c" },{ "clegId": "93:a+b,-a+b,c","det": 2.0,"hm": "C 42 2 2","id": "C_42_2_2","more": true,"set": 3,"sg": 93,"trm": "a+b,-a+b,c" },{ "clegId": "94:a+b,-a+b,c","det": 2.0,"hm": "C 42 2 21","id": "C_42_2_21","more": true,"set": 3,"sg": 94,"trm": "a+b,-a+b,c" },{ "clegId": "95:a+b,-a+b,c","det": 2.0,"hm": "C 43 2 2","id": "C_43_2_2","more": true,"set": 3,"sg": 95,"trm": "a+b,-a+b,c" },{ "clegId": "96:a+b,-a+b,c","det": 2.0,"hm": "C 43 2 21","id": "C_43_2_21","more": true,"set": 3,"sg": 96,"trm": "a+b,-a+b,c" },{ "clegId": "97:a+b,-a+b,c","det": 2.0,"hm": "F 4 2 2","id": "F_4_2_2","more": true,"set": 3,"sg": 97,"trm": "a+b,-a+b,c" },{ "clegId": "98:a+b,-a+b,c","det": 2.0,"hm": "F 41 2 2","id": "F_41_2_2","more": true,"set": 3,"sg": 98,"trm": "a+b,-a+b,c" },{ "clegId": "99:a+b,-a+b,c","det": 2.0,"hm": "C 4 m m","id": "C_4_m_m","more": true,"set": 3,"sg": 99,"trm": "a+b,-a+b,c" },{ "clegId": "100:a+b,-a+b,c","det": 2.0,"hm": "C 4 m g1","id": "C_4_m_g1","more": true,"set": 3,"sg": 100,"trm": "a+b,-a+b,c" },{ "clegId": "101:a+b,-a+b,c","det": 2.0,"hm": "C 42 m c","id": "C_42_m_c","more": true,"set": 3,"sg": 101,"trm": "a+b,-a+b,c" },{ "clegId": "102:a+b,-a+b,c","det": 2.0,"hm": "C 42 m g2","id": "C_42_m_g2","more": true,"set": 3,"sg": 102,"trm": "a+b,-a+b,c" },{ "clegId": "103:a+b,-a+b,c","det": 2.0,"hm": "C 4 c c","id": "C_4_c_c","more": true,"set": 3,"sg": 103,"trm": "a+b,-a+b,c" },{ "clegId": "104:a+b,-a+b,c","det": 2.0,"hm": "C 4 c g2","id": "C_4_c_g2","more": true,"set": 3,"sg": 104,"trm": "a+b,-a+b,c" },{ "clegId": "105:a+b,-a+b,c","det": 2.0,"hm": "C 42 c m","id": "C_42_c_m","more": true,"set": 3,"sg": 105,"trm": "a+b,-a+b,c" },{ "clegId": "106:a+b,-a+b,c","det": 2.0,"hm": "C 42 c g1","id": "C_42_c_g1","more": true,"set": 3,"sg": 106,"trm": "a+b,-a+b,c" },{ "clegId": "107:a+b,-a+b,c","det": 2.0,"hm": "F 4 m m","id": "F_4_m_m","more": true,"set": 3,"sg": 107,"trm": "a+b,-a+b,c" },{ "clegId": "108:a+b,-a+b,c","det": 2.0,"hm": "F 4 m c","id": "F_4_m_c","more": true,"set": 3,"sg": 108,"trm": "a+b,-a+b,c" },{ "clegId": "109:a+b,-a+b,c","det": 2.0,"hm": "F 41 d m","id": "F_41_d_m","more": true,"set": 3,"sg": 109,"trm": "a+b,-a+b,c" },{ "clegId": "110:a+b,-a+b,c","det": 2.0,"hm": "F 41 d c","id": "F_41_d_c","more": true,"set": 3,"sg": 110,"trm": "a+b,-a+b,c" },{ "clegId": "111:a+b,-a+b,c","det": 2.0,"hm": "C -4 m 2","id": "C_-4_m_2","more": true,"set": 3,"sg": 111,"trm": "a+b,-a+b,c" },{ "clegId": "112:a+b,-a+b,c","det": 2.0,"hm": "C -4 c 2","id": "C_-4_c_2","more": true,"set": 3,"sg": 112,"trm": "a+b,-a+b,c" },{ "clegId": "113:a+b,-a+b,c","det": 2.0,"hm": "C -4 m 21","id": "C_-4_m_21","more": true,"set": 3,"sg": 113,"trm": "a+b,-a+b,c" },{ "clegId": "114:a+b,-a+b,c","det": 2.0,"hm": "C -4 c 21","id": "C_-4_c_21","more": true,"set": 3,"sg": 114,"trm": "a+b,-a+b,c" },{ "clegId": "115:a+b,-a+b,c","det": 2.0,"hm": "C -4 2 m","id": "C_-4_2_m","more": true,"set": 3,"sg": 115,"trm": "a+b,-a+b,c" },{ "clegId": "116:a+b,-a+b,c","det": 2.0,"hm": "C -4 2 c","id": "C_-4_2_c","more": true,"set": 3,"sg": 116,"trm": "a+b,-a+b,c" },{ "clegId": "117:a+b,-a+b,c","det": 2.0,"hm": "C -4 2 g1","id": "C_-4_2_g1","more": true,"set": 3,"sg": 117,"trm": "a+b,-a+b,c" },{ "clegId": "118:a+b,-a+b,c","det": 2.0,"hm": "C -4 2 g2","id": "C_-4_2_g2","more": true,"set": 3,"sg": 118,"trm": "a+b,-a+b,c" },{ "clegId": "119:a+b,-a+b,c","det": 2.0,"hm": "F -4 2 m","id": "F_-4_2_m","more": true,"set": 3,"sg": 119,"trm": "a+b,-a+b,c" },{ "clegId": "120:a+b,-a+b,c","det": 2.0,"hm": "F -4 2 c","id": "F_-4_2_c","more": true,"set": 3,"sg": 120,"trm": "a+b,-a+b,c" },{ "clegId": "121:a+b,-a+b,c","det": 2.0,"hm": "F -4 m 2","id": "F_-4_m_2","more": true,"set": 3,"sg": 121,"trm": "a+b,-a+b,c" },{ "clegId": "122:a+b,-a+b,c","det": 2.0,"hm": "F -4 d 2","id": "F_-4_d_2","more": true,"set": 3,"sg": 122,"trm": "a+b,-a+b,c" },{ "clegId": "123:a+b,-a+b,c","det": 2.0,"hm": "C 4/m m m","id": "C_4/m_m_m","more": true,"set": 3,"sg": 123,"trm": "a+b,-a+b,c" },{ "clegId": "124:a+b,-a+b,c","det": 2.0,"hm": "C 4/m c c","id": "C_4/m_c_c","more": true,"set": 3,"sg": 124,"trm": "a+b,-a+b,c" },{ "clegId": "125:a+b,-a+b,c","det": 2.0,"hm": "C 4/e m g1 :2","id": "C_4/e_m_g1_2","more": true,"set": 5,"sg": 125,"trm": "a+b,-a+b,c" },{ "clegId": "125:a+b,-a+b,c;-1/4,-1/4,0","det": 2.0,"hm": "C 4/e m g1 :1","id": "C_4/e_m_g1_1","more": true,"set": 6,"sg": 125,"trm": "a+b,-a+b,c;-1/4,-1/4,0" },{ "clegId": "126:a+b,-a+b,c","det": 2.0,"hm": "C 4/e c g2 :2","id": "C_4/e_c_g2_2","more": true,"set": 5,"sg": 126,"trm": "a+b,-a+b,c" },{ "clegId": "126:a+b,-a+b,c;-1/4,-1/4,-1/4","det": 2.0,"hm": "C 4/e c g2 :1","id": "C_4/e_c_g2_1","more": true,"set": 6,"sg": 126,"trm": "a+b,-a+b,c;-1/4,-1/4,-1/4" },{ "clegId": "127:a+b,-a+b,c","det": 2.0,"hm": "C 4/m m g1","id": "C_4/m_m_g1","more": true,"set": 3,"sg": 127,"trm": "a+b,-a+b,c" },{ "clegId": "128:a-b,a+b,c","det": 2.0,"hm": "C 4/m c g2","id": "C_4/m_c_g2","more": true,"set": 3,"sg": 128,"trm": "a-b,a+b,c" },{ "clegId": "129:a+b,-a+b,c","det": 2.0,"hm": "C 4/e m m :2","id": "C_4/e_m_m_2","more": true,"set": 5,"sg": 129,"trm": "a+b,-a+b,c" },{ "clegId": "129:a+b,-a+b,c;-1/4,1/4,0","det": 2.0,"hm": "C 4/e m m :1","id": "C_4/e_m_m_1","more": true,"set": 6,"sg": 129,"trm": "a+b,-a+b,c;-1/4,1/4,0" },{ "clegId": "130:a+b,-a+b,c","det": 2.0,"hm": "C 4/e c c :2","id": "C_4/e_c_c_2","more": true,"set": 5,"sg": 130,"trm": "a+b,-a+b,c" },{ "clegId": "130:a+b,-a+b,c;-1/4,1/4,0","det": 2.0,"hm": "C 4/e c c :1","id": "C_4/e_c_c_1","more": true,"set": 6,"sg": 130,"trm": "a+b,-a+b,c;-1/4,1/4,0" },{ "clegId": "131:a+b,-a+b,c","det": 2.0,"hm": "C 42/m c m","id": "C_42/m_c_m","more": true,"set": 3,"sg": 131,"trm": "a+b,-a+b,c" },{ "clegId": "132:a+b,-a+b,c","det": 2.0,"hm": "C 42/m m c","id": "C_42/m_m_c","more": true,"set": 3,"sg": 132,"trm": "a+b,-a+b,c" },{ "clegId": "133:a+b,-a+b,c","det": 2.0,"hm": "C 42/e c g1 :2","id": "C_42/e_c_g1_2","more": true,"set": 5,"sg": 133,"trm": "a+b,-a+b,c" },{ "clegId": "133:a+b,-a+b,c;-1/4,1/4,-1/4","det": 2.0,"hm": "C 42/e c g1 :1","id": "C_42/e_c_g1_1","more": true,"set": 6,"sg": 133,"trm": "a+b,-a+b,c;-1/4,1/4,-1/4" },{ "clegId": "134:a+b,-a+b,c","det": 2.0,"hm": "C 42/e m g2 :2","id": "C_42/e_m_g2_2","more": true,"set": 5,"sg": 134,"trm": "a+b,-a+b,c" },{ "clegId": "134:a+b,-a+b,c;-1/4,1/4,-1/4","det": 2.0,"hm": "C 42/e m g2 :1","id": "C_42/e_m_g2_1","more": true,"set": 6,"sg": 134,"trm": "a+b,-a+b,c;-1/4,1/4,-1/4" },{ "clegId": "135:a+b,-a+b,c","det": 2.0,"hm": "C 42/m c g1","id": "C_42/m_c_g1","more": true,"set": 3,"sg": 135,"trm": "a+b,-a+b,c" },{ "clegId": "136:a+b,-a+b,c","det": 2.0,"hm": "C 42/m m g2","id": "C_42/m_m_g2","more": true,"set": 3,"sg": 136,"trm": "a+b,-a+b,c" },{ "clegId": "137:a+b,-a+b,c","det": 2.0,"hm": "C 42/e c m :2","id": "C_42/e_c_m_2","more": true,"set": 5,"sg": 137,"trm": "a+b,-a+b,c" },{ "clegId": "137:a+b,-a+b,c;-1/4,1/4,-1/4","det": 2.0,"hm": "C 42/e c m :1","id": "C_42/e_c_m_1","more": true,"set": 6,"sg": 137,"trm": "a+b,-a+b,c;-1/4,1/4,-1/4" },{ "clegId": "138:a+b,-a+b,c","det": 2.0,"hm": "C 42/e m c :2","id": "C_42/e_m_c_2","more": true,"set": 5,"sg": 138,"trm": "a+b,-a+b,c" },{ "clegId": "138:a+b,-a+b,c;-1/4,1/4,-1/4","det": 2.0,"hm": "C 42/e m c :1","id": "C_42/e_m_c_1","more": true,"set": 6,"sg": 138,"trm": "a+b,-a+b,c;-1/4,1/4,-1/4" },{ "clegId": "139:a+b,-a+b,c","det": 2.0,"hm": "F 4/m m m","id": "F_4/m_m_m","more": true,"set": 3,"sg": 139,"trm": "a+b,-a+b,c" },{ "clegId": "140:a+b,-a+b,c","det": 2.0,"hm": "F 4/m m c","id": "F_4/m_m_c","more": true,"set": 3,"sg": 140,"trm": "a+b,-a+b,c" },{ "clegId": "141:a+b,-a+b,c","det": 2.0,"hm": "F 41/d d m :2","id": "F_41/d_d_m_2","more": true,"set": 5,"sg": 141,"trm": "a+b,-a+b,c" },{ "clegId": "141:a+b,-a+b,c;0,1/4,-1/8","det": 2.0,"hm": "F 41/d d m :1","id": "F_41/d_d_m_1","more": true,"set": 6,"sg": 141,"trm": "a+b,-a+b,c;0,1/4,-1/8" },{ "clegId": "142:a+b,-a+b,c","det": 2.0,"hm": "F 41/d d c :2","id": "F_41/d_d_c_2","more": true,"set": 5,"sg": 142,"trm": "a+b,-a+b,c" },{ "clegId": "142:a+b,-a+b,c;0,1/4,-1/8","det": 2.0,"hm": "F 41/d d c :1","id": "F_41/d_d_c_1","more": true,"set": 6,"sg": 142,"trm": "a+b,-a+b,c;0,1/4,-1/8" } ] \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_1.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_1.json new file mode 100755 index 000000000000..af00530fa5ad --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_1.json @@ -0,0 +1 @@ +{ "HM": "P1","created": "Tue Apr 09 11:03:43 CDT 2024","nSettings": 20,"nSubgroups": 2,"sg": 1,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,a+b,a+c","b:2a,a+b,c","c:2a,b,a+c","d:a,2b,b+c","e:a,b,2c","f:a,2b,c","g:2a,b,c" ] },{ "det": 3.0,"i": 2,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,2a+b,c","b:3a,a+b,c","c:3a,b,c","d:a,b,3c","e:a,3b,2b+c","f:a,3b,b+c","g:a,3b,c","h:3a,2a+b,2a+c","i:3a,a+b,2a+c","j:3a,2a+b,a+c","k:3a,a+b,a+c","l:3a,b,2a+c","m:3a,b,a+c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_10.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_10.json new file mode 100755 index 000000000000..b3a4710c00e8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_10.json @@ -0,0 +1 @@ +{ "HM": "P2/m","created": "Tue Apr 09 11:03:45 CDT 2024","nSettings": 46,"nSubgroups": 8,"sg": 10,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-c,b,2c;0,0,1/2","b:a-c,b,2c","c:2a,b,c;1/2,0,0","d:2a,b,c","e:a,b,2c;0,0,1/2","f:a,b,2c","g:a,2b,c;0,1/2,0","h:a,2b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,c","a:3a,b,c;1,0,0","a:3a,b,c;2,0,0","b:a-2c,b,3c","b:a-2c,b,3c;0,0,1","b:a-2c,b,3c;0,0,2","c:a-c,b,3c","c:a-c,b,3c;0,0,1","c:a-c,b,3c;0,0,2","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c","e:a,3b,c;0,1,0","e:a,3b,c;0,2,0" ] },{ "det": 2.0,"i": 6,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 4.0,"i": 7,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,-a+c;0,1/2,0","b:2a,2b,-a+c","c:2c,2b,-a-2c;0,1/2,1/2","d:2c,2b,-a-2c;0,1/2,0","e:2c,2b,-a-2c;0,0,1/2","f:2c,2b,-a-2c","g:2a,2b,c;1/2,1/2,0","h:2a,2b,c;1/2,0,0","i:2a,2b,-a+c;1/2,1/2,0","j:2a,2b,-a+c;1/2,0,0","k:2a,2b,c;0,1/2,0","l:2a,2b,c" ] },{ "det": 2.0,"i": 8,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-c,b,2c;0,0,1/2","b:a-c,b,2c","c:-2a-c,b,2a;1/2,0,0","d:-2a-c,b,2a","e:a,b,2c;0,0,1/2","f:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_100.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_100.json new file mode 100755 index 000000000000..d5672ffe0c53 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_100.json @@ -0,0 +1 @@ +{ "HM": "P4bm","created": "Tue Apr 09 11:04:17 CDT 2024","nSettings": 8,"nSubgroups": 8,"sg": 100,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 100,"subgroupHM": "P4bm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 100,"subgroupHM": "P4bm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 2.0,"i": 6,"subgroup": 102,"subgroupHM": "P42nm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,1/2,0" ] },{ "det": 2.0,"i": 7,"subgroup": 104,"subgroupHM": "P4nc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 8,"subgroup": 106,"subgroupHM": "P42bc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_101.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_101.json new file mode 100755 index 000000000000..22d5a1e59e66 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_101.json @@ -0,0 +1 @@ +{ "HM": "P42cm","created": "Tue Apr 09 11:04:17 CDT 2024","nSettings": 8,"nSubgroups": 6,"sg": 101,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 101,"subgroupHM": "P42cm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 2.0,"i": 5,"subgroup": 105,"subgroupHM": "P42mc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 6,"subgroup": 106,"subgroupHM": "P42bc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_102.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_102.json new file mode 100755 index 000000000000..cb363bf249d7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_102.json @@ -0,0 +1 @@ +{ "HM": "P42nm","created": "Tue Apr 09 11:04:18 CDT 2024","nSettings": 8,"nSubgroups": 6,"sg": 102,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 3.0,"i": 4,"subgroup": 102,"subgroupHM": "P42nm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 4.0,"i": 5,"subgroup": 109,"subgroupHM": "I41md","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,0","b:a-b,a+b,2c" ] },{ "det": 4.0,"i": 6,"subgroup": 110,"subgroupHM": "I41cd","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,0","b:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_103.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_103.json new file mode 100755 index 000000000000..cdcbb8dba77b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_103.json @@ -0,0 +1 @@ +{ "HM": "P4cc","created": "Tue Apr 09 11:04:18 CDT 2024","nSettings": 8,"nSubgroups": 6,"sg": 103,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 103,"subgroupHM": "P4cc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 103,"subgroupHM": "P4cc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 2.0,"i": 6,"subgroup": 104,"subgroupHM": "P4nc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_104.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_104.json new file mode 100755 index 000000000000..4a6780ff91cf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_104.json @@ -0,0 +1 @@ +{ "HM": "P4nc","created": "Tue Apr 09 11:04:18 CDT 2024","nSettings": 4,"nSubgroups": 4,"sg": 104,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 104,"subgroupHM": "P4nc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_105.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_105.json new file mode 100755 index 000000000000..a888ef66d60e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_105.json @@ -0,0 +1 @@ +{ "HM": "P42mc","created": "Tue Apr 09 11:04:18 CDT 2024","nSettings": 8,"nSubgroups": 6,"sg": 105,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 101,"subgroupHM": "P42cm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 102,"subgroupHM": "P42nm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c","b:a-b,a+b,c;1/2,1/2,0" ] },{ "det": 3.0,"i": 6,"subgroup": 105,"subgroupHM": "P42mc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_106.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_106.json new file mode 100755 index 000000000000..b09108f150da --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_106.json @@ -0,0 +1 @@ +{ "HM": "P42bc","created": "Tue Apr 09 11:04:19 CDT 2024","nSettings": 4,"nSubgroups": 4,"sg": 106,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 106,"subgroupHM": "P42bc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_107.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_107.json new file mode 100755 index 000000000000..02b280dc8693 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_107.json @@ -0,0 +1 @@ +{ "HM": "I4mm","created": "Tue Apr 09 11:04:19 CDT 2024","nSettings": 8,"nSubgroups": 8,"sg": 107,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 42,"subgroupHM": "Fmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 44,"subgroupHM": "Imm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 79,"subgroupHM": "I4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 99,"subgroupHM": "P4mm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 102,"subgroupHM": "P42nm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 104,"subgroupHM": "P4nc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 105,"subgroupHM": "P42mc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 3.0,"i": 8,"subgroup": 107,"subgroupHM": "I4mm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_108.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_108.json new file mode 100755 index 000000000000..4ff643647a7e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_108.json @@ -0,0 +1 @@ +{ "HM": "I4cm","created": "Tue Apr 09 11:04:19 CDT 2024","nSettings": 8,"nSubgroups": 8,"sg": 108,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 42,"subgroupHM": "Fmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 2,"subgroup": 45,"subgroupHM": "Iba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 79,"subgroupHM": "I4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 100,"subgroupHM": "P4bm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 101,"subgroupHM": "P42cm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 6,"subgroup": 103,"subgroupHM": "P4cc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 106,"subgroupHM": "P42bc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 3.0,"i": 8,"subgroup": 108,"subgroupHM": "I4cm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_109.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_109.json new file mode 100755 index 000000000000..e20dff635a98 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_109.json @@ -0,0 +1 @@ +{ "HM": "I41md","created": "Tue Apr 09 11:04:20 CDT 2024","nSettings": 4,"nSubgroups": 4,"sg": 109,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 43,"subgroupHM": "Fdd2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 2,"subgroup": 44,"subgroupHM": "Imm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 80,"subgroupHM": "I41","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 109,"subgroupHM": "I41md","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_11.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_11.json new file mode 100755 index 000000000000..e6eb1a19ea85 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_11.json @@ -0,0 +1 @@ +{ "HM": "P21/m","created": "Tue Apr 09 11:03:46 CDT 2024","nSettings": 30,"nSubgroups": 6,"sg": 11,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 2.0,"i": 4,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-c,b,2c;0,0,1/2","b:a-c,b,2c","c:2a,b,c;1/2,0,0","d:2a,b,c","e:a,b,2c;0,0,1/2","f:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,c","a:3a,b,c;1,0,0","a:3a,b,c;2,0,0","b:a-2c,b,3c","b:a-2c,b,3c;0,0,1","b:a-2c,b,3c;0,0,2","c:a-c,b,3c","c:a-c,b,3c;0,0,1","c:a-c,b,3c;0,0,2","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c","e:a,3b,c;0,1,0","e:a,3b,c;0,2,0" ] },{ "det": 2.0,"i": 6,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-c,b,2c;0,0,1/2","b:a-c,b,2c","c:-2a-c,b,2a;1/2,0,0","d:-2a-c,b,2a","e:a,b,2c;0,0,1/2","f:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_110.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_110.json new file mode 100755 index 000000000000..5f2f0067d432 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_110.json @@ -0,0 +1 @@ +{ "HM": "I41cd","created": "Tue Apr 09 11:04:20 CDT 2024","nSettings": 4,"nSubgroups": 4,"sg": 110,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 43,"subgroupHM": "Fdd2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 45,"subgroupHM": "Iba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 80,"subgroupHM": "I41","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 110,"subgroupHM": "I41cd","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_111.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_111.json new file mode 100755 index 000000000000..d5fb373a0564 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_111.json @@ -0,0 +1 @@ +{ "HM": "P-42m","created": "Tue Apr 09 11:04:20 CDT 2024","nSettings": 18,"nSubgroups": 10,"sg": 111,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 7,"subgroup": 115,"subgroupHM": "P-4m2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 8,"subgroup": 117,"subgroupHM": "P-4b2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 4.0,"i": 9,"subgroup": 119,"subgroupHM": "I-4m2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;0,0,1/2","b:a-b,a+b,2c" ] },{ "det": 4.0,"i": 10,"subgroup": 120,"subgroupHM": "I-4c2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;0,0,1/2","b:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_112.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_112.json new file mode 100755 index 000000000000..532e1792a563 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_112.json @@ -0,0 +1 @@ +{ "HM": "P-42c","created": "Tue Apr 09 11:04:21 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 112,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 2.0,"i": 2,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 5,"subgroup": 116,"subgroupHM": "P-4c2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 6,"subgroup": 118,"subgroupHM": "P-4n2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_113.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_113.json new file mode 100755 index 000000000000..0a85e5200aa9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_113.json @@ -0,0 +1 @@ +{ "HM": "P-421m","created": "Tue Apr 09 11:04:21 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 113,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 113,"subgroupHM": "P-421m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 113,"subgroupHM": "P-421m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 114,"subgroupHM": "P-421c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_114.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_114.json new file mode 100755 index 000000000000..94a1af78e2bb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_114.json @@ -0,0 +1 @@ +{ "HM": "P-421c","created": "Tue Apr 09 11:04:21 CDT 2024","nSettings": 6,"nSubgroups": 4,"sg": 114,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 2.0,"i": 2,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 114,"subgroupHM": "P-421c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_115.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_115.json new file mode 100755 index 000000000000..680b847083b7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_115.json @@ -0,0 +1 @@ +{ "HM": "P-4m2","created": "Tue Apr 09 11:04:21 CDT 2024","nSettings": 18,"nSubgroups": 9,"sg": 115,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 113,"subgroupHM": "P-421m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 6,"subgroup": 115,"subgroupHM": "P-4m2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 7,"subgroup": 115,"subgroupHM": "P-4m2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 8,"subgroup": 116,"subgroupHM": "P-4c2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 4.0,"i": 9,"subgroup": 121,"subgroupHM": "I-42m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,1/2","b:a-b,a+b,2c;1/2,1/2,0","c:a-b,a+b,2c;0,0,1/2","d:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_116.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_116.json new file mode 100755 index 000000000000..221de75c80f2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_116.json @@ -0,0 +1 @@ +{ "HM": "P-4c2","created": "Tue Apr 09 11:04:22 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 116,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,0,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 114,"subgroupHM": "P-421c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 116,"subgroupHM": "P-4c2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_117.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_117.json new file mode 100755 index 000000000000..fbc96757c2f0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_117.json @@ -0,0 +1 @@ +{ "HM": "P-4b2","created": "Tue Apr 09 11:04:22 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 117,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 2,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 117,"subgroupHM": "P-4b2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 117,"subgroupHM": "P-4b2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 118,"subgroupHM": "P-4n2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_118.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_118.json new file mode 100755 index 000000000000..e66406b44124 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_118.json @@ -0,0 +1 @@ +{ "HM": "P-4n2","created": "Tue Apr 09 11:04:23 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 118,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 118,"subgroupHM": "P-4n2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 5,"subgroup": 122,"subgroupHM": "I-42d","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,1/2","b:a-b,a+b,2c;1/2,1/2,0","c:a-b,a+b,2c;0,0,1/2","d:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_119.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_119.json new file mode 100755 index 000000000000..8ff0aa824198 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_119.json @@ -0,0 +1 @@ +{ "HM": "I-4m2","created": "Tue Apr 09 11:04:23 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 119,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 44,"subgroupHM": "Imm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 82,"subgroupHM": "I-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 115,"subgroupHM": "P-4m2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,1/4","b:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 118,"subgroupHM": "P-4n2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,1/4","b:a,b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 119,"subgroupHM": "I-4m2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_12.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_12.json new file mode 100755 index 000000000000..7e73d9cd59d3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_12.json @@ -0,0 +1 @@ +{ "HM": "C2/m","created": "Tue Apr 09 11:03:46 CDT 2024","nSettings": 30,"nSubgroups": 10,"sg": 12,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,b,-a;1/4,1/4,0" ] },{ "det": 2.0,"i": 6,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-2c,b,2c;0,0,1/2","b:a-2c,b,2c","c:a,b,2c;0,0,1/2","d:a,b,2c" ] },{ "det": 3.0,"i": 7,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,c","a:3a,b,c;1,0,0","a:3a,b,c;2,0,0","b:a-4c,b,3c","b:a-4c,b,3c;0,0,1","b:a-4c,b,3c;0,0,2","c:a-2c,b,3c","c:a-2c,b,3c;0,0,1","c:a-2c,b,3c;0,0,2","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c","e:a,3b,c;0,1,0","e:a,3b,c;0,2,0" ] },{ "det": 1.0,"i": 8,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,b,-a;1/4,1/4,0" ] },{ "det": 1.0,"i": 9,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,b,-a" ] },{ "det": 2.0,"i": 10,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-2c,b,2c;0,0,1/2","b:a-2c,b,2c","c:a,b,2c;0,0,1/2","d:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_120.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_120.json new file mode 100755 index 000000000000..dd009a8615ff --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_120.json @@ -0,0 +1 @@ +{ "HM": "I-4c2","created": "Tue Apr 09 11:04:23 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 120,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,0,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 45,"subgroupHM": "Iba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 82,"subgroupHM": "I-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 116,"subgroupHM": "P-4c2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,1/4","b:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 117,"subgroupHM": "P-4b2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,1/4","b:a,b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 120,"subgroupHM": "I-4c2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_121.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_121.json new file mode 100755 index 000000000000..fbf2e930e8d7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_121.json @@ -0,0 +1 @@ +{ "HM": "I-42m","created": "Tue Apr 09 11:04:23 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 121,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 23,"subgroupHM": "I222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 42,"subgroupHM": "Fmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 82,"subgroupHM": "I-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 113,"subgroupHM": "P-421m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 114,"subgroupHM": "P-421c","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 8,"subgroup": 121,"subgroupHM": "I-42m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_122.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_122.json new file mode 100755 index 000000000000..281cb72d09fa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_122.json @@ -0,0 +1 @@ +{ "HM": "I-42d","created": "Tue Apr 09 11:04:24 CDT 2024","nSettings": 6,"nSubgroups": 4,"sg": 122,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 24,"subgroupHM": "I212121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,3/8" ] },{ "det": 2.0,"i": 2,"subgroup": 43,"subgroupHM": "Fdd2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 82,"subgroupHM": "I-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 122,"subgroupHM": "I-42d","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/2,0,1/4","a:a,b,3c;1/2,0,5/4","a:a,b,3c;1/2,0,9/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_123.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_123.json new file mode 100755 index 000000000000..de8115a0dc80 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_123.json @@ -0,0 +1 @@ +{ "HM": "P4/mmm","created": "Tue Apr 09 11:04:24 CDT 2024","nSettings": 34,"nSubgroups": 17,"sg": 123,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 47,"subgroupHM": "Pmmm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 83,"subgroupHM": "P4/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 89,"subgroupHM": "P422","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 99,"subgroupHM": "P4mm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 115,"subgroupHM": "P-4m2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 8,"subgroup": 123,"subgroupHM": "P4/mmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c","c:a,b,2c;0,0,1/2","d:a,b,2c" ] },{ "det": 3.0,"i": 9,"subgroup": 123,"subgroupHM": "P4/mmm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 10,"subgroup": 124,"subgroupHM": "P4/mcc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 11,"subgroup": 125,"subgroupHM": "P4/nbm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] },{ "det": 2.0,"i": 12,"subgroup": 127,"subgroupHM": "P4/mbm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 13,"subgroup": 129,"subgroupHM": "P4/nmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] },{ "det": 2.0,"i": 14,"subgroup": 131,"subgroupHM": "P42/mmc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 15,"subgroup": 132,"subgroupHM": "P42/mcm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 4.0,"i": 16,"subgroup": 139,"subgroupHM": "I4/mmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,1/2","b:a-b,a+b,2c;1/2,1/2,0","c:a-b,a+b,2c;0,0,1/2","d:a-b,a+b,2c" ] },{ "det": 4.0,"i": 17,"subgroup": 140,"subgroupHM": "I4/mcm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,1/2","b:a-b,a+b,2c;1/2,1/2,0","c:a-b,a+b,2c;0,0,1/2","d:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_124.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_124.json new file mode 100755 index 000000000000..0b8a823f3f84 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_124.json @@ -0,0 +1 @@ +{ "HM": "P4/mcc","created": "Tue Apr 09 11:04:25 CDT 2024","nSettings": 18,"nSubgroups": 12,"sg": 124,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 49,"subgroupHM": "Pccm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 83,"subgroupHM": "P4/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 89,"subgroupHM": "P422","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 103,"subgroupHM": "P4cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 116,"subgroupHM": "P-4c2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 8,"subgroup": 124,"subgroupHM": "P4/mcc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 3.0,"i": 9,"subgroup": 124,"subgroupHM": "P4/mcc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 10,"subgroup": 126,"subgroupHM": "P4/nnc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] },{ "det": 2.0,"i": 11,"subgroup": 128,"subgroupHM": "P4/mnc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 12,"subgroup": 130,"subgroupHM": "P4/ncc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_125.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_125.json new file mode 100755 index 000000000000..c4e82a4bf2bf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_125.json @@ -0,0 +1 @@ +{ "HM": "P4/nbm","created": "Tue Apr 09 11:04:26 CDT 2024","nSettings": 18,"nSubgroups": 12,"sg": 125,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 50,"subgroupHM": "Pban","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 67,"subgroupHM": "Cmme","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 85,"subgroupHM": "P4/n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 89,"subgroupHM": "P422","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 100,"subgroupHM": "P4bm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 1.0,"i": 7,"subgroup": 117,"subgroupHM": "P-4b2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 2.0,"i": 8,"subgroup": 125,"subgroupHM": "P4/nbm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 9,"subgroup": 125,"subgroupHM": "P4/nbm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 10,"subgroup": 126,"subgroupHM": "P4/nnc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 11,"subgroup": 133,"subgroupHM": "P42/nbc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 12,"subgroup": 134,"subgroupHM": "P42/nnm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_126.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_126.json new file mode 100755 index 000000000000..ba151c06d248 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_126.json @@ -0,0 +1 @@ +{ "HM": "P4/nnc","created": "Tue Apr 09 11:04:27 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 126,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 48,"subgroupHM": "Pnnn","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 68,"subgroupHM": "Ccce","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 85,"subgroupHM": "P4/n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 89,"subgroupHM": "P422","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 104,"subgroupHM": "P4nc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 1.0,"i": 7,"subgroup": 118,"subgroupHM": "P-4n2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 3.0,"i": 8,"subgroup": 126,"subgroupHM": "P4/nnc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_127.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_127.json new file mode 100755 index 000000000000..d1f532d56282 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_127.json @@ -0,0 +1 @@ +{ "HM": "P4/mbm","created": "Tue Apr 09 11:04:27 CDT 2024","nSettings": 18,"nSubgroups": 12,"sg": 127,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 55,"subgroupHM": "Pbam","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 83,"subgroupHM": "P4/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 90,"subgroupHM": "P4212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 5,"subgroup": 100,"subgroupHM": "P4bm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 113,"subgroupHM": "P-421m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 117,"subgroupHM": "P-4b2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 8,"subgroup": 127,"subgroupHM": "P4/mbm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 9,"subgroup": 127,"subgroupHM": "P4/mbm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 10,"subgroup": 128,"subgroupHM": "P4/mnc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 11,"subgroup": 135,"subgroupHM": "P42/mbc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 12,"subgroup": 136,"subgroupHM": "P42/mnm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,1/2,1/2","b:a,b,2c;0,1/2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_128.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_128.json new file mode 100755 index 000000000000..0aab18e373e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_128.json @@ -0,0 +1 @@ +{ "HM": "P4/mnc","created": "Tue Apr 09 11:04:28 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 128,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 58,"subgroupHM": "Pnnm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 83,"subgroupHM": "P4/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 90,"subgroupHM": "P4212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 104,"subgroupHM": "P4nc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 114,"subgroupHM": "P-421c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 118,"subgroupHM": "P-4n2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 8,"subgroup": 128,"subgroupHM": "P4/mnc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_129.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_129.json new file mode 100755 index 000000000000..6a3d6bdc402e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_129.json @@ -0,0 +1 @@ +{ "HM": "P4/nmm","created": "Tue Apr 09 11:04:28 CDT 2024","nSettings": 18,"nSubgroups": 12,"sg": 129,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 59,"subgroupHM": "Pmmn","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 67,"subgroupHM": "Cmme","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 85,"subgroupHM": "P4/n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 90,"subgroupHM": "P4212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 99,"subgroupHM": "P4mm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 113,"subgroupHM": "P-421m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 1.0,"i": 7,"subgroup": 115,"subgroupHM": "P-4m2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 2.0,"i": 8,"subgroup": 129,"subgroupHM": "P4/nmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 9,"subgroup": 129,"subgroupHM": "P4/nmm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 10,"subgroup": 130,"subgroupHM": "P4/ncc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 11,"subgroup": 137,"subgroupHM": "P42/nmc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 12,"subgroup": 138,"subgroupHM": "P42/ncm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_13.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_13.json new file mode 100755 index 000000000000..88e9dfeec313 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_13.json @@ -0,0 +1 @@ +{ "HM": "P2/c","created": "Tue Apr 09 11:03:47 CDT 2024","nSettings": 30,"nSubgroups": 7,"sg": 13,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,-2a+c;1/2,0,0","b:2a,b,-2a+c","c:2a,b,c;1/2,0,0","d:2a,b,c","e:a,2b,c;0,1/2,0","f:a,2b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,-4a+c","a:3a,b,-4a+c;1,0,0","a:3a,b,-4a+c;2,0,0","b:3a,b,-2a+c","b:3a,b,-2a+c;1,0,0","b:3a,b,-2a+c;2,0,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c","e:a,3b,c;0,1,0","e:a,3b,c;0,2,0" ] },{ "det": 2.0,"i": 6,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 4.0,"i": 7,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;1/2,1/2,0","b:2a,2b,c;1/2,0,0","c:2a,2b,c;0,1/2,0","d:2a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_130.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_130.json new file mode 100755 index 000000000000..8d8516c1f8b6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_130.json @@ -0,0 +1 @@ +{ "HM": "P4/ncc","created": "Tue Apr 09 11:04:29 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 130,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 56,"subgroupHM": "Pccn","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 68,"subgroupHM": "Ccce","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 85,"subgroupHM": "P4/n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 90,"subgroupHM": "P4212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 103,"subgroupHM": "P4cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 114,"subgroupHM": "P-421c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 1.0,"i": 7,"subgroup": 116,"subgroupHM": "P-4c2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 3.0,"i": 8,"subgroup": 130,"subgroupHM": "P4/ncc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_131.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_131.json new file mode 100755 index 000000000000..abd638c9d03f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_131.json @@ -0,0 +1 @@ +{ "HM": "P42/mmc","created": "Tue Apr 09 11:04:30 CDT 2024","nSettings": 18,"nSubgroups": 12,"sg": 131,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 47,"subgroupHM": "Pmmm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 84,"subgroupHM": "P42/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 105,"subgroupHM": "P42mc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 115,"subgroupHM": "P-4m2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 131,"subgroupHM": "P42/mmc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 9,"subgroup": 132,"subgroupHM": "P42/mcm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 10,"subgroup": 134,"subgroupHM": "P42/nnm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] },{ "det": 2.0,"i": 11,"subgroup": 136,"subgroupHM": "P42/mnm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 12,"subgroup": 138,"subgroupHM": "P42/ncm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_132.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_132.json new file mode 100755 index 000000000000..5d05a0fe9e39 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_132.json @@ -0,0 +1 @@ +{ "HM": "P42/mcm","created": "Tue Apr 09 11:04:30 CDT 2024","nSettings": 18,"nSubgroups": 12,"sg": 132,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 49,"subgroupHM": "Pccm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 84,"subgroupHM": "P42/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 101,"subgroupHM": "P42cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 116,"subgroupHM": "P-4c2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 2.0,"i": 8,"subgroup": 131,"subgroupHM": "P42/mmc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 3.0,"i": 9,"subgroup": 132,"subgroupHM": "P42/mcm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 10,"subgroup": 133,"subgroupHM": "P42/nbc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] },{ "det": 2.0,"i": 11,"subgroup": 135,"subgroupHM": "P42/mbc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 12,"subgroup": 137,"subgroupHM": "P42/nmc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_133.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_133.json new file mode 100755 index 000000000000..40ce695afd7f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_133.json @@ -0,0 +1 @@ +{ "HM": "P42/nbc","created": "Tue Apr 09 11:04:31 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 133,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 50,"subgroupHM": "Pban","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 68,"subgroupHM": "Ccce","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 86,"subgroupHM": "P42/n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 4,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 106,"subgroupHM": "P42bc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 117,"subgroupHM": "P-4b2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 133,"subgroupHM": "P42/nbc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_134.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_134.json new file mode 100755 index 000000000000..f0ca680c767c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_134.json @@ -0,0 +1 @@ +{ "HM": "P42/nnm","created": "Tue Apr 09 11:04:32 CDT 2024","nSettings": 18,"nSubgroups": 10,"sg": 134,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 48,"subgroupHM": "Pnnn","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 67,"subgroupHM": "Cmme","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 86,"subgroupHM": "P42/n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 4,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 102,"subgroupHM": "P42nm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 118,"subgroupHM": "P-4n2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 134,"subgroupHM": "P42/nnm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 9,"subgroup": 141,"subgroupHM": "I41/amd","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,0,1/2","b:a-b,a+b,2c;1/2,0,0","c:a-b,a+b,2c;0,1/2,1/2","d:a-b,a+b,2c;0,1/2,0" ] },{ "det": 4.0,"i": 10,"subgroup": 142,"subgroupHM": "I41/acd","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,0,1/2","b:a-b,a+b,2c;1/2,0,0","c:a-b,a+b,2c;0,1/2,1/2","d:a-b,a+b,2c;0,1/2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_135.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_135.json new file mode 100755 index 000000000000..fc281dcd8069 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_135.json @@ -0,0 +1 @@ +{ "HM": "P42/mbc","created": "Tue Apr 09 11:04:32 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 135,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 55,"subgroupHM": "Pbam","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 84,"subgroupHM": "P42/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 94,"subgroupHM": "P42212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 106,"subgroupHM": "P42bc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 114,"subgroupHM": "P-421c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 117,"subgroupHM": "P-4b2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 135,"subgroupHM": "P42/mbc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_136.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_136.json new file mode 100755 index 000000000000..4f15d959330a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_136.json @@ -0,0 +1 @@ +{ "HM": "P42/mnm","created": "Tue Apr 09 11:04:33 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 136,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 58,"subgroupHM": "Pnnm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 84,"subgroupHM": "P42/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 4,"subgroup": 94,"subgroupHM": "P42212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 102,"subgroupHM": "P42nm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 113,"subgroupHM": "P-421m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 118,"subgroupHM": "P-4n2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 136,"subgroupHM": "P42/mnm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_137.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_137.json new file mode 100755 index 000000000000..78a43acfcec2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_137.json @@ -0,0 +1 @@ +{ "HM": "P42/nmc","created": "Tue Apr 09 11:04:33 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 137,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 59,"subgroupHM": "Pmmn","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 68,"subgroupHM": "Ccce","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 86,"subgroupHM": "P42/n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 4,"subgroup": 94,"subgroupHM": "P42212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 105,"subgroupHM": "P42mc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 114,"subgroupHM": "P-421c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 115,"subgroupHM": "P-4m2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 137,"subgroupHM": "P42/nmc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_138.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_138.json new file mode 100755 index 000000000000..2358187d0c3f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_138.json @@ -0,0 +1 @@ +{ "HM": "P42/ncm","created": "Tue Apr 09 11:04:34 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 138,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 56,"subgroupHM": "Pccn","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 67,"subgroupHM": "Cmme","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 86,"subgroupHM": "P42/n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 4,"subgroup": 94,"subgroupHM": "P42212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 101,"subgroupHM": "P42cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 113,"subgroupHM": "P-421m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 116,"subgroupHM": "P-4c2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 138,"subgroupHM": "P42/ncm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_139.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_139.json new file mode 100755 index 000000000000..2beb6f9fcc0e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_139.json @@ -0,0 +1 @@ +{ "HM": "I4/mmm","created": "Tue Apr 09 11:04:34 CDT 2024","nSettings": 18,"nSubgroups": 16,"sg": 139,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 69,"subgroupHM": "Fmmm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 71,"subgroupHM": "Immm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 87,"subgroupHM": "I4/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 97,"subgroupHM": "I422","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 107,"subgroupHM": "I4mm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 119,"subgroupHM": "I-4m2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 121,"subgroupHM": "I-42m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 8,"subgroup": 123,"subgroupHM": "P4/mmm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 9,"subgroup": 126,"subgroupHM": "P4/nnc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 10,"subgroup": 128,"subgroupHM": "P4/mnc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 11,"subgroup": 129,"subgroupHM": "P4/nmm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 12,"subgroup": 131,"subgroupHM": "P42/mmc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 13,"subgroup": 134,"subgroupHM": "P42/nnm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 14,"subgroup": 136,"subgroupHM": "P42/mnm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 15,"subgroup": 137,"subgroupHM": "P42/nmc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 3.0,"i": 16,"subgroup": 139,"subgroupHM": "I4/mmm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_14.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_14.json new file mode 100755 index 000000000000..acca835caacd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_14.json @@ -0,0 +1 @@ +{ "HM": "P21/c","created": "Tue Apr 09 11:03:47 CDT 2024","nSettings": 22,"nSubgroups": 5,"sg": 14,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 2.0,"i": 4,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,-2a+c;1/2,0,0","b:2a,b,-2a+c","c:2a,b,c;1/2,0,0","d:2a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,-4a+c","a:3a,b,-4a+c;1,0,0","a:3a,b,-4a+c;2,0,0","b:3a,b,-2a+c","b:3a,b,-2a+c;1,0,0","b:3a,b,-2a+c;2,0,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c","e:a,3b,c;0,1,0","e:a,3b,c;0,2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_140.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_140.json new file mode 100755 index 000000000000..f24e3df547a0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_140.json @@ -0,0 +1 @@ +{ "HM": "I4/mcm","created": "Tue Apr 09 11:04:35 CDT 2024","nSettings": 18,"nSubgroups": 16,"sg": 140,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 69,"subgroupHM": "Fmmm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,1/2,0" ] },{ "det": 1.0,"i": 2,"subgroup": 72,"subgroupHM": "Ibam","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 87,"subgroupHM": "I4/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 97,"subgroupHM": "I422","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 108,"subgroupHM": "I4cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 120,"subgroupHM": "I-4c2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 121,"subgroupHM": "I-42m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,1/4" ] },{ "det": 1.0,"i": 8,"subgroup": 124,"subgroupHM": "P4/mcc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 9,"subgroup": 125,"subgroupHM": "P4/nbm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 10,"subgroup": 127,"subgroupHM": "P4/mbm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 11,"subgroup": 130,"subgroupHM": "P4/ncc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 12,"subgroup": 132,"subgroupHM": "P42/mcm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 13,"subgroup": 133,"subgroupHM": "P42/nbc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 14,"subgroup": 135,"subgroupHM": "P42/mbc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 15,"subgroup": 138,"subgroupHM": "P42/ncm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 3.0,"i": 16,"subgroup": 140,"subgroupHM": "I4/mcm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_141.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_141.json new file mode 100755 index 000000000000..1eb207699f0f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_141.json @@ -0,0 +1 @@ +{ "HM": "I41/amd","created": "Tue Apr 09 11:04:36 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 141,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 70,"subgroupHM": "Fddd","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;1/4,3/4,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 74,"subgroupHM": "Imma","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 88,"subgroupHM": "I41/a","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 4,"subgroup": 98,"subgroupHM": "I4122","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,3/8" ] },{ "det": 1.0,"i": 5,"subgroup": 109,"subgroupHM": "I41md","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 119,"subgroupHM": "I-4m2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,3/8" ] },{ "det": 1.0,"i": 7,"subgroup": 122,"subgroupHM": "I-42d","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,3/8" ] },{ "det": 3.0,"i": 8,"subgroup": 141,"subgroupHM": "I41/amd","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/2,0,0","a:a,b,3c;1/2,0,1","a:a,b,3c;1/2,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_142.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_142.json new file mode 100755 index 000000000000..a9a294d730d8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_142.json @@ -0,0 +1 @@ +{ "HM": "I41/acd","created": "Tue Apr 09 11:04:37 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 142,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 70,"subgroupHM": "Fddd","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 73,"subgroupHM": "Ibca","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 88,"subgroupHM": "I41/a","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 4,"subgroup": 98,"subgroupHM": "I4122","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,1/8" ] },{ "det": 1.0,"i": 5,"subgroup": 110,"subgroupHM": "I41cd","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 120,"subgroupHM": "I-4c2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,3/8" ] },{ "det": 1.0,"i": 7,"subgroup": 122,"subgroupHM": "I-42d","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,3/4,1/8" ] },{ "det": 3.0,"i": 8,"subgroup": 142,"subgroupHM": "I41/acd","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/2,0,0","a:a,b,3c;1/2,0,1","a:a,b,3c;1/2,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_143.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_143.json new file mode 100755 index 000000000000..c7ed55279dd4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_143.json @@ -0,0 +1 @@ +{ "HM": "P3","created": "Tue Apr 09 11:04:37 CDT 2024","nSettings": 18,"nSubgroups": 7,"sg": 143,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 3,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,2/3,0","b:a-b,a+2b,c;2/3,1/3,0","c:a-b,a+2b,c","d:a,b,3c" ] },{ "det": 4.0,"i": 4,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 5,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 3.0,"i": 6,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 9.0,"i": 7,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:2a+b,-a+b,3c;1/3,2/3,0","b:2a+b,-a+b,3c;2/3,1/3,0","c:2a+b,-a+b,3c","d:a-b,a+2b,3c;1/3,2/3,0","e:a-b,a+2b,3c;2/3,1/3,0","f:a-b,a+2b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_144.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_144.json new file mode 100755 index 000000000000..1cc9af4b81ec --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_144.json @@ -0,0 +1 @@ +{ "HM": "P31","created": "Tue Apr 09 11:04:38 CDT 2024","nSettings": 9,"nSubgroups": 4,"sg": 144,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 2,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,2/3,0","b:a-b,a+2b,c;2/3,1/3,0","c:a-b,a+2b,c" ] },{ "det": 4.0,"i": 3,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 4,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_145.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_145.json new file mode 100755 index 000000000000..750648fc20d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_145.json @@ -0,0 +1 @@ +{ "HM": "P32","created": "Tue Apr 09 11:04:38 CDT 2024","nSettings": 9,"nSubgroups": 4,"sg": 145,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 3,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,2/3,0","b:a-b,a+2b,c;2/3,1/3,0","c:a-b,a+2b,c" ] },{ "det": 4.0,"i": 4,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_146.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_146.json new file mode 100755 index 000000000000..7bab057b9921 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_146.json @@ -0,0 +1 @@ +{ "HM": "R3","created": "Tue Apr 09 11:04:38 CDT 2024","nSettings": 9,"nSubgroups": 6,"sg": 146,"subgroups": [ { "det": 0.3333333333333333,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,-1/3a-2/3b+1/3c" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/3,1/3,0" ] },{ "det": 1.0,"i": 4,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/3,0" ] },{ "det": 2.0,"i": 5,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a+b,2c" ] },{ "det": 4.0,"i": 6,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,2a+2b,c","a:-2b,2a+2b,c;1,0,0","a:-2b,2a+2b,c;0,1,0","a:-2b,2a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_147.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_147.json new file mode 100755 index 000000000000..3068f3581278 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_147.json @@ -0,0 +1 @@ +{ "HM": "P-3","created": "Tue Apr 09 11:04:39 CDT 2024","nSettings": 20,"nSubgroups": 6,"sg": 147,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c","b:a,b,3c;0,0,1","b:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 5,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 9.0,"i": 6,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:2a+b,-a+b,3c","a:2a+b,-a+b,3c;0,0,1","a:2a+b,-a+b,3c;0,0,2","b:a-b,a+2b,3c","b:a-b,a+2b,3c;0,0,1","b:a-b,a+2b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_148.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_148.json new file mode 100755 index 000000000000..c08b9342119f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_148.json @@ -0,0 +1 @@ +{ "HM": "R-3","created": "Tue Apr 09 11:04:39 CDT 2024","nSettings": 11,"nSubgroups": 5,"sg": 148,"subgroups": [ { "det": 0.3333333333333333,"i": 1,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,-1/3a-2/3b+1/3c" ] },{ "det": 1.0,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;2/3,1/3,1/3","a:a,b,c;1/3,2/3,2/3" ] },{ "det": 2.0,"i": 4,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a+b,2c;0,0,1/2","b:-b,a+b,2c" ] },{ "det": 4.0,"i": 5,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,2a+2b,c","a:-2b,2a+2b,c;1,0,0","a:-2b,2a+2b,c;0,1,0","a:-2b,2a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_149.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_149.json new file mode 100755 index 000000000000..60a79af37e9d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_149.json @@ -0,0 +1 @@ +{ "HM": "P312","created": "Tue Apr 09 11:04:39 CDT 2024","nSettings": 46,"nSubgroups": 9,"sg": 149,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a-b,a-b,c","a:a,a+2b,c","a:b,-2a-b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 5,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 6,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,2/3,0","a:a-b,a+2b,c;4/3,2/3,0","a:a-b,a+2b,c;7/3,2/3,0","b:a-b,a+2b,c;2/3,1/3,0","b:a-b,a+2b,c;2/3,4/3,0","b:a-b,a+2b,c;2/3,7/3,0","c:a-b,a+2b,c","c:a-b,a+2b,c;1,0,0","c:a-b,a+2b,c;1,1,0" ] },{ "det": 3.0,"i": 7,"subgroup": 151,"subgroupHM": "P3112","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 3.0,"i": 8,"subgroup": 153,"subgroupHM": "P3212","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 9.0,"i": 9,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:2a+b,-a+b,3c;1/3,2/3,0","a:2a+b,-a+b,3c;1/3,2/3,1","a:2a+b,-a+b,3c;1/3,2/3,2","b:2a+b,-a+b,3c;2/3,1/3,0","b:2a+b,-a+b,3c;2/3,1/3,1","b:2a+b,-a+b,3c;2/3,1/3,2","c:2a+b,-a+b,3c","c:2a+b,-a+b,3c;0,0,1","c:2a+b,-a+b,3c;0,0,2","d:a-b,a+2b,3c;1/3,2/3,0","d:a-b,a+2b,3c;1/3,2/3,1","d:a-b,a+2b,3c;1/3,2/3,2","e:a-b,a+2b,3c;2/3,1/3,0","e:a-b,a+2b,3c;2/3,1/3,1","e:a-b,a+2b,3c;2/3,1/3,2","f:a-b,a+2b,3c","f:a-b,a+2b,3c;0,0,1","f:a-b,a+2b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_15.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_15.json new file mode 100755 index 000000000000..7bf71dbf91c9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_15.json @@ -0,0 +1 @@ +{ "HM": "C2/c","created": "Tue Apr 09 11:03:47 CDT 2024","nSettings": 22,"nSubgroups": 6,"sg": 15,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,b,-a-c;1/4,1/4,0","b:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0","b:c,b,-a-c" ] },{ "det": 3.0,"i": 6,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,c","a:3a,b,c;1,0,0","a:3a,b,c;2,0,0","b:a-4c,b,3c","b:a-4c,b,3c;0,0,1","b:a-4c,b,3c;0,0,2","c:a-2c,b,3c","c:a-2c,b,3c;0,0,1","c:a-2c,b,3c;0,0,2","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c","e:a,3b,c;0,1,0","e:a,3b,c;0,2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_150.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_150.json new file mode 100755 index 000000000000..6fe58200d4d6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_150.json @@ -0,0 +1 @@ +{ "HM": "P321","created": "Tue Apr 09 11:04:40 CDT 2024","nSettings": 20,"nSubgroups": 8,"sg": 150,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 6,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 7,"subgroup": 152,"subgroupHM": "P3121","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 3.0,"i": 8,"subgroup": 154,"subgroupHM": "P3221","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_151.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_151.json new file mode 100755 index 000000000000..9a85bff913eb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_151.json @@ -0,0 +1 @@ +{ "HM": "P3112","created": "Tue Apr 09 11:04:41 CDT 2024","nSettings": 19,"nSubgroups": 5,"sg": 151,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,-2a-b,c","a:-a-b,a-b,c;0,0,1/3","a:a,a+2b,c;0,0,2/3" ] },{ "det": 1.0,"i": 2,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 4.0,"i": 3,"subgroup": 151,"subgroupHM": "P3112","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 4,"subgroup": 152,"subgroupHM": "P3121","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,-1/3,0","a:a-b,a+2b,c;1/3,2/3,0","a:a-b,a+2b,c;4/3,2/3,0","b:a-b,a+2b,c;2/3,-2/3,0","b:a-b,a+2b,c;2/3,1/3,0","b:a-b,a+2b,c;2/3,4/3,0","c:a-b,a+2b,c","c:a-b,a+2b,c;1,0,0","c:a-b,a+2b,c;1,1,0" ] },{ "det": 2.0,"i": 5,"subgroup": 153,"subgroupHM": "P3212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_152.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_152.json new file mode 100755 index 000000000000..07eec0115273 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_152.json @@ -0,0 +1 @@ +{ "HM": "P3121","created": "Tue Apr 09 11:04:41 CDT 2024","nSettings": 11,"nSubgroups": 5,"sg": 152,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c;0,0,1/3","a:2a+b,b,c;0,0,2/3" ] },{ "det": 1.0,"i": 2,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 151,"subgroupHM": "P3112","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;0,0,1/3" ] },{ "det": 4.0,"i": 4,"subgroup": 152,"subgroupHM": "P3121","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 5,"subgroup": 154,"subgroupHM": "P3221","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_153.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_153.json new file mode 100755 index 000000000000..c02b864f80c0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_153.json @@ -0,0 +1 @@ +{ "HM": "P3212","created": "Tue Apr 09 11:04:41 CDT 2024","nSettings": 19,"nSubgroups": 5,"sg": 153,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,-2a-b,c","a:a,a+2b,c;0,0,1/3","a:-a-b,a-b,c;0,0,2/3" ] },{ "det": 1.0,"i": 2,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 151,"subgroupHM": "P3112","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 4.0,"i": 4,"subgroup": 153,"subgroupHM": "P3212","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 5,"subgroup": 154,"subgroupHM": "P3221","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,-1/3,0","a:a-b,a+2b,c;1/3,2/3,0","a:a-b,a+2b,c;4/3,2/3,0","b:a-b,a+2b,c;2/3,-2/3,0","b:a-b,a+2b,c;2/3,1/3,0","b:a-b,a+2b,c;2/3,4/3,0","c:a-b,a+2b,c","c:a-b,a+2b,c;1,0,0","c:a-b,a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_154.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_154.json new file mode 100755 index 000000000000..c1faa05c0f81 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_154.json @@ -0,0 +1 @@ +{ "HM": "P3221","created": "Tue Apr 09 11:04:42 CDT 2024","nSettings": 11,"nSubgroups": 5,"sg": 154,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:2a+b,b,c;0,0,1/3","a:-a-2b,a,c;0,0,2/3" ] },{ "det": 1.0,"i": 2,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 152,"subgroupHM": "P3121","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 153,"subgroupHM": "P3212","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;0,0,1/6" ] },{ "det": 4.0,"i": 5,"subgroup": 154,"subgroupHM": "P3221","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_155.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_155.json new file mode 100755 index 000000000000..4107c4737367 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_155.json @@ -0,0 +1 @@ +{ "HM": "R32","created": "Tue Apr 09 11:04:42 CDT 2024","nSettings": 19,"nSubgroups": 7,"sg": 155,"subgroups": [ { "det": 0.6666666666666666,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-1/3a+1/3b-2/3c,-a-b,c","a:-1/3a-2/3b-2/3c,a,c","a:2/3a+1/3b-2/3c,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;2/3,1/3,1/3","a:a,b,c;1/3,2/3,2/3" ] },{ "det": 1.0,"i": 4,"subgroup": 152,"subgroupHM": "P3121","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/3,1/3,0","a:a,b,c;2/3,0,2/3","a:a,b,c;0,2/3,1/3" ] },{ "det": 1.0,"i": 5,"subgroup": 154,"subgroupHM": "P3221","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;2/3,2/3,0","a:a,b,c;1/3,0,1/3","a:a,b,c;0,1/3,2/3" ] },{ "det": 2.0,"i": 6,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a+b,2c;0,0,1/2","b:-b,a+b,2c" ] },{ "det": 4.0,"i": 7,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,2a+2b,c","a:-2b,2a+2b,c;1,0,0","a:-2b,2a+2b,c;0,1,0","a:-2b,2a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_156.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_156.json new file mode 100755 index 000000000000..b9a4889db063 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_156.json @@ -0,0 +1 @@ +{ "HM": "P3m1","created": "Tue Apr 09 11:04:42 CDT 2024","nSettings": 20,"nSubgroups": 7,"sg": 156,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 4.0,"i": 5,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 6,"subgroup": 157,"subgroupHM": "P31m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,-1/3,0","a:a-b,a+2b,c;1/3,2/3,0","a:a-b,a+2b,c;4/3,2/3,0","b:a-b,a+2b,c;2/3,-2/3,0","b:a-b,a+2b,c;2/3,1/3,0","b:a-b,a+2b,c;2/3,4/3,0","c:a-b,a+2b,c","c:a-b,a+2b,c;1,0,0","c:a-b,a+2b,c;1,1,0" ] },{ "det": 2.0,"i": 7,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_157.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_157.json new file mode 100755 index 000000000000..33cacf3c05ff --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_157.json @@ -0,0 +1 @@ +{ "HM": "P31m","created": "Tue Apr 09 11:04:43 CDT 2024","nSettings": 14,"nSubgroups": 8,"sg": 157,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a-b,a-b,c","a:a,a+2b,c","a:b,-2a-b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 157,"subgroupHM": "P31m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 157,"subgroupHM": "P31m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 4.0,"i": 6,"subgroup": 157,"subgroupHM": "P31m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 7,"subgroup": 159,"subgroupHM": "P31c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 9.0,"i": 8,"subgroup": 160,"subgroupHM": "R3m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:2a+b,-a+b,3c","b:a-b,a+2b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_158.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_158.json new file mode 100755 index 000000000000..a66ca42aa137 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_158.json @@ -0,0 +1 @@ +{ "HM": "P3c1","created": "Tue Apr 09 11:04:43 CDT 2024","nSettings": 18,"nSubgroups": 5,"sg": 158,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 4.0,"i": 4,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 5,"subgroup": 159,"subgroupHM": "P31c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,-1/3,0","a:a-b,a+2b,c;1/3,2/3,0","a:a-b,a+2b,c;4/3,2/3,0","b:a-b,a+2b,c;2/3,-2/3,0","b:a-b,a+2b,c;2/3,1/3,0","b:a-b,a+2b,c;2/3,4/3,0","c:a-b,a+2b,c","c:a-b,a+2b,c;1,0,0","c:a-b,a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_159.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_159.json new file mode 100755 index 000000000000..80710e9eb602 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_159.json @@ -0,0 +1 @@ +{ "HM": "P31c","created": "Tue Apr 09 11:04:44 CDT 2024","nSettings": 12,"nSubgroups": 6,"sg": 159,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a-b,a-b,c","a:a,a+2b,c","a:b,-2a-b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 159,"subgroupHM": "P31c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 4.0,"i": 5,"subgroup": 159,"subgroupHM": "P31c","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 9.0,"i": 6,"subgroup": 161,"subgroupHM": "R3c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:2a+b,-a+b,3c","b:a-b,a+2b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_16.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_16.json new file mode 100755 index 000000000000..939526958754 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_16.json @@ -0,0 +1 @@ +{ "HM": "P222","created": "Tue Apr 09 11:03:48 CDT 2024","nSettings": 40,"nSubgroups": 6,"sg": 16,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:a,b,c","c:b,c,a" ] },{ "det": 2.0,"i": 2,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c","c:a,2b,c;0,1/2,0","d:a,2b,c","e:2a,b,c;1/2,0,0","f:2a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 4,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c","b:a,b,2c;0,0,1/2","c:c,a,2b;0,1/2,0","d:c,a,2b","e:b,c,2a;1/2,0,0","f:b,c,2a" ] },{ "det": 4.0,"i": 5,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;1/2,0,0","b:2a,2b,c","c:2c,2a,b;1/2,0,1/2","d:2c,2a,b;1/2,0,0","e:2c,2a,b;0,0,1/2","f:2c,2a,b","g:2b,2c,a;0,1/2,1/2","h:2b,2c,a;0,0,1/2","i:2a,2b,c;1/2,1/2,0","j:2a,2b,c;0,1/2,0","k:2b,2c,a;0,1/2,0","l:2b,2c,a" ] },{ "det": 8.0,"i": 6,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,0,0","b:2a,2b,2c;0,0,1/2","c:2a,2b,2c;0,1/2,0","d:2a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_160.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_160.json new file mode 100755 index 000000000000..e6fc62ab9579 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_160.json @@ -0,0 +1 @@ +{ "HM": "R3m","created": "Tue Apr 09 11:04:44 CDT 2024","nSettings": 11,"nSubgroups": 6,"sg": 160,"subgroups": [ { "det": 0.6666666666666666,"i": 1,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-1/3a+1/3b-2/3c,-a-b,c","a:-1/3a-2/3b-2/3c,a,c","a:2/3a+1/3b-2/3c,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 160,"subgroupHM": "R3m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a+b,2c" ] },{ "det": 4.0,"i": 5,"subgroup": 160,"subgroupHM": "R3m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,2a+2b,c","a:-2b,2a+2b,c;1,0,0","a:-2b,2a+2b,c;0,1,0","a:-2b,2a+2b,c;1,1,0" ] },{ "det": 2.0,"i": 6,"subgroup": 161,"subgroupHM": "R3c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_161.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_161.json new file mode 100755 index 000000000000..12fc3e17f8e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_161.json @@ -0,0 +1 @@ +{ "HM": "R3c","created": "Tue Apr 09 11:04:45 CDT 2024","nSettings": 9,"nSubgroups": 4,"sg": 161,"subgroups": [ { "det": 0.6666666666666666,"i": 1,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-1/3a+1/3b-2/3c,-a-b,c","a:-1/3a-2/3b-2/3c,a,c","a:2/3a+1/3b-2/3c,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 4.0,"i": 4,"subgroup": 161,"subgroupHM": "R3c","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,2a+2b,c","a:-2b,2a+2b,c;1,0,0","a:-2b,2a+2b,c;0,1,0","a:-2b,2a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_162.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_162.json new file mode 100755 index 000000000000..ed3da15a854e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_162.json @@ -0,0 +1 @@ +{ "HM": "P-31m","created": "Tue Apr 09 11:04:45 CDT 2024","nSettings": 26,"nSubgroups": 10,"sg": 162,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a-b,a-b,c","a:a,a+2b,c","a:b,-2a-b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 157,"subgroupHM": "P31m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 162,"subgroupHM": "P-31m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 6,"subgroup": 162,"subgroupHM": "P-31m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 7,"subgroup": 162,"subgroupHM": "P-31m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 8,"subgroup": 163,"subgroupHM": "P-31c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 9,"subgroup": 164,"subgroupHM": "P-3m1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;1,1,0" ] },{ "det": 9.0,"i": 10,"subgroup": 166,"subgroupHM": "R-3m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:2a+b,-a+b,3c","a:2a+b,-a+b,3c;0,0,1","a:2a+b,-a+b,3c;0,0,2","b:a-b,a+2b,3c","b:a-b,a+2b,3c;0,0,1","b:a-b,a+2b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_163.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_163.json new file mode 100755 index 000000000000..ea00cc344c0d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_163.json @@ -0,0 +1 @@ +{ "HM": "P-31c","created": "Tue Apr 09 11:04:45 CDT 2024","nSettings": 22,"nSubgroups": 8,"sg": 163,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a-b,a-b,c","a:a,a+2b,c","a:b,-2a-b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 159,"subgroupHM": "P31c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 163,"subgroupHM": "P-31c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 6,"subgroup": 163,"subgroupHM": "P-31c","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 7,"subgroup": 165,"subgroupHM": "P-3c1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;1,1,0" ] },{ "det": 9.0,"i": 8,"subgroup": 167,"subgroupHM": "R-3c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:2a+b,-a+b,3c","a:2a+b,-a+b,3c;0,0,1","a:2a+b,-a+b,3c;0,0,2","b:a-b,a+2b,3c","b:a-b,a+2b,3c;0,0,1","b:a-b,a+2b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_164.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_164.json new file mode 100755 index 000000000000..9d02a4fd2c39 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_164.json @@ -0,0 +1 @@ +{ "HM": "P-3m1","created": "Tue Apr 09 11:04:46 CDT 2024","nSettings": 20,"nSubgroups": 9,"sg": 164,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 162,"subgroupHM": "P-31m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;1,1,0" ] },{ "det": 2.0,"i": 6,"subgroup": 164,"subgroupHM": "P-3m1","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 7,"subgroup": 164,"subgroupHM": "P-3m1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 8,"subgroup": 164,"subgroupHM": "P-3m1","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 9,"subgroup": 165,"subgroupHM": "P-3c1","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_165.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_165.json new file mode 100755 index 000000000000..0fcd314f0026 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_165.json @@ -0,0 +1 @@ +{ "HM": "P-3c1","created": "Tue Apr 09 11:04:47 CDT 2024","nSettings": 16,"nSubgroups": 7,"sg": 165,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 163,"subgroupHM": "P-31c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;1,1,0" ] },{ "det": 3.0,"i": 6,"subgroup": 165,"subgroupHM": "P-3c1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 7,"subgroup": 165,"subgroupHM": "P-3c1","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_166.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_166.json new file mode 100755 index 000000000000..4e643ec758aa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_166.json @@ -0,0 +1 @@ +{ "HM": "R-3m","created": "Tue Apr 09 11:04:47 CDT 2024","nSettings": 17,"nSubgroups": 8,"sg": 166,"subgroups": [ { "det": 0.6666666666666666,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-1/3a+1/3b-2/3c,-a-b,c","a:-1/3a-2/3b-2/3c,a,c","a:2/3a+1/3b-2/3c,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 160,"subgroupHM": "R3m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 164,"subgroupHM": "P-3m1","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/3,2/3,2/3","a:a,b,c;2/3,1/3,1/3" ] },{ "det": 2.0,"i": 6,"subgroup": 166,"subgroupHM": "R-3m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a+b,2c;0,0,1/2","b:-b,a+b,2c" ] },{ "det": 4.0,"i": 7,"subgroup": 166,"subgroupHM": "R-3m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,2a+2b,c","a:-2b,2a+2b,c;1,0,0","a:-2b,2a+2b,c;0,1,0","a:-2b,2a+2b,c;1,1,0" ] },{ "det": 2.0,"i": 8,"subgroup": 167,"subgroupHM": "R-3c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a+b,2c;0,0,1/2","b:-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_167.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_167.json new file mode 100755 index 000000000000..f6a87aa7c7d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_167.json @@ -0,0 +1 @@ +{ "HM": "R-3c","created": "Tue Apr 09 11:04:48 CDT 2024","nSettings": 13,"nSubgroups": 6,"sg": 167,"subgroups": [ { "det": 0.6666666666666666,"i": 1,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-1/3a+1/3b-2/3c,-a-b,c","a:-1/3a-2/3b-2/3c,a,c","a:2/3a+1/3b-2/3c,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 161,"subgroupHM": "R3c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 165,"subgroupHM": "P-3c1","subgroupIndex": 3,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/3,2/3,2/3","a:a,b,c;2/3,1/3,1/3" ] },{ "det": 4.0,"i": 6,"subgroup": 167,"subgroupHM": "R-3c","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,2a+2b,c","a:-2b,2a+2b,c;1,0,0","a:-2b,2a+2b,c;0,1,0","a:-2b,2a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_168.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_168.json new file mode 100755 index 000000000000..038b661b9eb8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_168.json @@ -0,0 +1 @@ +{ "HM": "P6","created": "Tue Apr 09 11:04:48 CDT 2024","nSettings": 14,"nSubgroups": 8,"sg": 168,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 168,"subgroupHM": "P6","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 168,"subgroupHM": "P6","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c" ] },{ "det": 4.0,"i": 5,"subgroup": 168,"subgroupHM": "P6","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 6,"subgroup": 171,"subgroupHM": "P62","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 3.0,"i": 7,"subgroup": 172,"subgroupHM": "P64","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 2.0,"i": 8,"subgroup": 173,"subgroupHM": "P63","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_169.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_169.json new file mode 100755 index 000000000000..cae30c0f5fe3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_169.json @@ -0,0 +1 @@ +{ "HM": "P61","created": "Tue Apr 09 11:04:48 CDT 2024","nSettings": 9,"nSubgroups": 4,"sg": 169,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 169,"subgroupHM": "P61","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0" ] },{ "det": 4.0,"i": 4,"subgroup": 169,"subgroupHM": "P61","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_17.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_17.json new file mode 100755 index 000000000000..2dd47ce10334 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_17.json @@ -0,0 +1 @@ +{ "HM": "P2221","created": "Tue Apr 09 11:03:48 CDT 2024","nSettings": 24,"nSubgroups": 6,"sg": 17,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 2.0,"i": 3,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c","c:2a,b,c;1/2,0,0","d:2a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 5,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2b,c,a","b:2b,c,a;0,1/2,0","c:c,2a,b;0,0,1/4","d:c,2a,b;1/2,0,1/4" ] },{ "det": 4.0,"i": 6,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;1/2,1/2,0","b:2a,2b,c;0,1/2,0","c:2a,2b,c;1/2,0,0","d:2a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_170.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_170.json new file mode 100755 index 000000000000..ac48a9a8273f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_170.json @@ -0,0 +1 @@ +{ "HM": "P65","created": "Tue Apr 09 11:04:49 CDT 2024","nSettings": 9,"nSubgroups": 4,"sg": 170,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 170,"subgroupHM": "P65","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0" ] },{ "det": 4.0,"i": 4,"subgroup": 170,"subgroupHM": "P65","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_171.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_171.json new file mode 100755 index 000000000000..5b0f137ce5e5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_171.json @@ -0,0 +1 @@ +{ "HM": "P62","created": "Tue Apr 09 11:04:49 CDT 2024","nSettings": 11,"nSubgroups": 6,"sg": 171,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 145,"subgroupHM": "P32","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 169,"subgroupHM": "P61","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 171,"subgroupHM": "P62","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0" ] },{ "det": 4.0,"i": 5,"subgroup": 171,"subgroupHM": "P62","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 6,"subgroup": 172,"subgroupHM": "P64","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_172.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_172.json new file mode 100755 index 000000000000..ccaf33df6679 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_172.json @@ -0,0 +1 @@ +{ "HM": "P64","created": "Tue Apr 09 11:04:49 CDT 2024","nSettings": 11,"nSubgroups": 6,"sg": 172,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 144,"subgroupHM": "P31","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 170,"subgroupHM": "P65","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 4,"subgroup": 171,"subgroupHM": "P62","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 172,"subgroupHM": "P64","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0" ] },{ "det": 4.0,"i": 6,"subgroup": 172,"subgroupHM": "P64","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_173.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_173.json new file mode 100755 index 000000000000..328f2589bf25 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_173.json @@ -0,0 +1 @@ +{ "HM": "P63","created": "Tue Apr 09 11:04:50 CDT 2024","nSettings": 12,"nSubgroups": 6,"sg": 173,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 169,"subgroupHM": "P61","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 3.0,"i": 4,"subgroup": 170,"subgroupHM": "P65","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 3.0,"i": 5,"subgroup": 173,"subgroupHM": "P63","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c" ] },{ "det": 4.0,"i": 6,"subgroup": 173,"subgroupHM": "P63","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_174.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_174.json new file mode 100755 index 000000000000..1e882f8c94dd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_174.json @@ -0,0 +1 @@ +{ "HM": "P-6","created": "Tue Apr 09 11:04:50 CDT 2024","nSettings": 14,"nSubgroups": 5,"sg": 174,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 143,"subgroupHM": "P3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a-b,a+2b,c;1/3,2/3,0","c:a-b,a+2b,c;2/3,1/3,0","d:a-b,a+2b,c" ] },{ "det": 4.0,"i": 5,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_175.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_175.json new file mode 100755 index 000000000000..3714d101d857 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_175.json @@ -0,0 +1 @@ +{ "HM": "P6/m","created": "Tue Apr 09 11:04:51 CDT 2024","nSettings": 18,"nSubgroups": 8,"sg": 175,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 168,"subgroupHM": "P6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 175,"subgroupHM": "P6/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 6,"subgroup": 175,"subgroupHM": "P6/m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c","b:a,b,3c;0,0,1","b:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 7,"subgroup": 175,"subgroupHM": "P6/m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 8,"subgroup": 176,"subgroupHM": "P63/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_176.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_176.json new file mode 100755 index 000000000000..f460a7ccdf47 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_176.json @@ -0,0 +1 @@ +{ "HM": "P63/m","created": "Tue Apr 09 11:04:51 CDT 2024","nSettings": 14,"nSubgroups": 6,"sg": 176,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 147,"subgroupHM": "P-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 173,"subgroupHM": "P63","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 3.0,"i": 5,"subgroup": 176,"subgroupHM": "P63/m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c","b:a,b,3c;0,0,1","b:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 6,"subgroup": 176,"subgroupHM": "P63/m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_177.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_177.json new file mode 100755 index 000000000000..0f039a9e7253 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_177.json @@ -0,0 +1 @@ +{ "HM": "P622","created": "Tue Apr 09 11:04:52 CDT 2024","nSettings": 26,"nSubgroups": 10,"sg": 177,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 168,"subgroupHM": "P6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 177,"subgroupHM": "P622","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 6,"subgroup": 177,"subgroupHM": "P622","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c","b:a,b,3c;0,0,1","b:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 7,"subgroup": 177,"subgroupHM": "P622","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 8,"subgroup": 180,"subgroupHM": "P6222","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 3.0,"i": 9,"subgroup": 181,"subgroupHM": "P6422","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 10,"subgroup": 182,"subgroupHM": "P6322","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_178.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_178.json new file mode 100755 index 000000000000..344701d45b6c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_178.json @@ -0,0 +1 @@ +{ "HM": "P6122","created": "Tue Apr 09 11:04:52 CDT 2024","nSettings": 13,"nSubgroups": 6,"sg": 178,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c;0,0,5/12","a:-a-2b,a,c;0,0,3/4","a:2a+b,b,c;0,0,1/12" ] },{ "det": 1.0,"i": 2,"subgroup": 151,"subgroupHM": "P3112","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/12" ] },{ "det": 1.0,"i": 3,"subgroup": 152,"subgroupHM": "P3121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/6" ] },{ "det": 1.0,"i": 4,"subgroup": 169,"subgroupHM": "P61","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 178,"subgroupHM": "P6122","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;0,0,5/12","a:a-b,a+2b,c;0,0,5/12","a:a-b,a+2b,c;0,0,5/12" ] },{ "det": 4.0,"i": 6,"subgroup": 178,"subgroupHM": "P6122","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_179.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_179.json new file mode 100755 index 000000000000..a03c9a0baff1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_179.json @@ -0,0 +1 @@ +{ "HM": "P6522","created": "Tue Apr 09 11:04:53 CDT 2024","nSettings": 13,"nSubgroups": 6,"sg": 179,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c;0,0,1/12","a:-a-2b,a,c;0,0,3/4","a:2a+b,b,c;0,0,5/12" ] },{ "det": 1.0,"i": 2,"subgroup": 153,"subgroupHM": "P3212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,5/12" ] },{ "det": 1.0,"i": 3,"subgroup": 154,"subgroupHM": "P3221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/3" ] },{ "det": 1.0,"i": 4,"subgroup": 170,"subgroupHM": "P65","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 179,"subgroupHM": "P6522","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;0,0,7/12","a:a-b,a+2b,c;0,0,7/12","a:a-b,a+2b,c;0,0,7/12" ] },{ "det": 4.0,"i": 6,"subgroup": 179,"subgroupHM": "P6522","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_18.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_18.json new file mode 100755 index 000000000000..b77bcd36255b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_18.json @@ -0,0 +1 @@ +{ "HM": "P21212","created": "Tue Apr 09 11:03:48 CDT 2024","nSettings": 16,"nSubgroups": 5,"sg": 18,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;0,1/4,0","b:a,b,c;1/4,0,0" ] },{ "det": 2.0,"i": 3,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 5,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;1/4,0,0","b:a,b,2c;1/4,0,1/2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_180.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_180.json new file mode 100755 index 000000000000..f86ecf0f3702 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_180.json @@ -0,0 +1 @@ +{ "HM": "P6222","created": "Tue Apr 09 11:04:53 CDT 2024","nSettings": 17,"nSubgroups": 8,"sg": 180,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c;0,0,1/3","a:-a-2b,a,c","a:2a+b,b,c;0,0,2/3" ] },{ "det": 1.0,"i": 2,"subgroup": 153,"subgroupHM": "P3212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/6" ] },{ "det": 1.0,"i": 3,"subgroup": 154,"subgroupHM": "P3221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/3" ] },{ "det": 1.0,"i": 4,"subgroup": 171,"subgroupHM": "P62","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 178,"subgroupHM": "P6122","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 6,"subgroup": 180,"subgroupHM": "P6222","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;0,0,1/3","a:a-b,a+2b,c;1,0,1/3","a:a-b,a+2b,c;2,0,1/3" ] },{ "det": 4.0,"i": 7,"subgroup": 180,"subgroupHM": "P6222","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 8,"subgroup": 181,"subgroupHM": "P6422","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_181.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_181.json new file mode 100755 index 000000000000..b9b4666b2380 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_181.json @@ -0,0 +1 @@ +{ "HM": "P6422","created": "Tue Apr 09 11:04:53 CDT 2024","nSettings": 17,"nSubgroups": 8,"sg": 181,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c;0,0,2/3","a:-a-2b,a,c","a:2a+b,b,c;0,0,1/3" ] },{ "det": 1.0,"i": 2,"subgroup": 151,"subgroupHM": "P3112","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/3" ] },{ "det": 1.0,"i": 3,"subgroup": 152,"subgroupHM": "P3121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/6" ] },{ "det": 1.0,"i": 4,"subgroup": 172,"subgroupHM": "P64","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 179,"subgroupHM": "P6522","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c","b:a,b,2c;0,0,1/2" ] },{ "det": 2.0,"i": 6,"subgroup": 180,"subgroupHM": "P6222","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 7,"subgroup": 181,"subgroupHM": "P6422","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;0,0,1/6","a:a-b,a+2b,c;1,0,1/6","a:a-b,a+2b,c;2,0,1/6" ] },{ "det": 4.0,"i": 8,"subgroup": 181,"subgroupHM": "P6422","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_182.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_182.json new file mode 100755 index 000000000000..775eab7a680f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_182.json @@ -0,0 +1 @@ +{ "HM": "P6322","created": "Tue Apr 09 11:04:54 CDT 2024","nSettings": 22,"nSubgroups": 8,"sg": 182,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c;0,0,1/4","a:-a-2b,a,c;0,0,1/4","a:2a+b,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 173,"subgroupHM": "P63","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 178,"subgroupHM": "P6122","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 3.0,"i": 6,"subgroup": 179,"subgroupHM": "P6522","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 3.0,"i": 7,"subgroup": 182,"subgroupHM": "P6322","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;0,0,1/4","a:a-b,a+2b,c;1,0,1/4","a:a-b,a+2b,c;2,0,1/4","b:a,b,3c","b:a,b,3c;0,0,1","b:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 8,"subgroup": 182,"subgroupHM": "P6322","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_183.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_183.json new file mode 100755 index 000000000000..4e1ff3338b0e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_183.json @@ -0,0 +1 @@ +{ "HM": "P6mm","created": "Tue Apr 09 11:04:54 CDT 2024","nSettings": 18,"nSubgroups": 10,"sg": 183,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 157,"subgroupHM": "P31m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 168,"subgroupHM": "P6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 183,"subgroupHM": "P6mm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 6,"subgroup": 183,"subgroupHM": "P6mm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c" ] },{ "det": 4.0,"i": 7,"subgroup": 183,"subgroupHM": "P6mm","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 8,"subgroup": 184,"subgroupHM": "P6cc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 9,"subgroup": 185,"subgroupHM": "P63cm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 10,"subgroup": 186,"subgroupHM": "P63mc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_184.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_184.json new file mode 100755 index 000000000000..137a60bfdfb3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_184.json @@ -0,0 +1 @@ +{ "HM": "P6cc","created": "Tue Apr 09 11:04:55 CDT 2024","nSettings": 14,"nSubgroups": 6,"sg": 184,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 159,"subgroupHM": "P31c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 168,"subgroupHM": "P6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 184,"subgroupHM": "P6cc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c" ] },{ "det": 4.0,"i": 6,"subgroup": 184,"subgroupHM": "P6cc","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_185.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_185.json new file mode 100755 index 000000000000..25d637cdc5c4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_185.json @@ -0,0 +1 @@ +{ "HM": "P63cm","created": "Tue Apr 09 11:04:55 CDT 2024","nSettings": 14,"nSubgroups": 7,"sg": 185,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 36,"subgroupHM": "Cmc21","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 157,"subgroupHM": "P31m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 173,"subgroupHM": "P63","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 185,"subgroupHM": "P63cm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 4.0,"i": 6,"subgroup": 185,"subgroupHM": "P63cm","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 7,"subgroup": 186,"subgroupHM": "P63mc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_186.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_186.json new file mode 100755 index 000000000000..2abddb8fcaef --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_186.json @@ -0,0 +1 @@ +{ "HM": "P63mc","created": "Tue Apr 09 11:04:56 CDT 2024","nSettings": 14,"nSubgroups": 7,"sg": 186,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 36,"subgroupHM": "Cmc21","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a-b,a-b,c","a:a,a+2b,c","a:b,-2a-b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 159,"subgroupHM": "P31c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 173,"subgroupHM": "P63","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 185,"subgroupHM": "P63cm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;1,1,0" ] },{ "det": 3.0,"i": 6,"subgroup": 186,"subgroupHM": "P63mc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 4.0,"i": 7,"subgroup": 186,"subgroupHM": "P63mc","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_187.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_187.json new file mode 100755 index 000000000000..c3ca48f6de9c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_187.json @@ -0,0 +1 @@ +{ "HM": "P-6m2","created": "Tue Apr 09 11:04:56 CDT 2024","nSettings": 26,"nSubgroups": 9,"sg": 187,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 38,"subgroupHM": "Amm2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:c,-a-b,a-b","a:c,a,a+2b","a:c,b,-2a-b" ] },{ "det": 1.0,"i": 2,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 156,"subgroupHM": "P3m1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 5,"subgroup": 187,"subgroupHM": "P-6m2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 6,"subgroup": 187,"subgroupHM": "P-6m2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 7,"subgroup": 187,"subgroupHM": "P-6m2","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 8,"subgroup": 188,"subgroupHM": "P-6c2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 9,"subgroup": 189,"subgroupHM": "P-62m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,2/3,0","a:a-b,a+2b,c;4/3,2/3,0","a:a-b,a+2b,c;7/3,2/3,0","b:a-b,a+2b,c;2/3,1/3,0","b:a-b,a+2b,c;2/3,4/3,0","b:a-b,a+2b,c;2/3,7/3,0","c:a-b,a+2b,c","c:a-b,a+2b,c;1,0,0","c:a-b,a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_188.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_188.json new file mode 100755 index 000000000000..26d442aa06e2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_188.json @@ -0,0 +1 @@ +{ "HM": "P-6c2","created": "Tue Apr 09 11:04:57 CDT 2024","nSettings": 22,"nSubgroups": 7,"sg": 188,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 40,"subgroupHM": "Ama2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:c,-a-b,a-b","a:c,a,a+2b","a:c,b,-2a-b" ] },{ "det": 1.0,"i": 2,"subgroup": 149,"subgroupHM": "P312","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 158,"subgroupHM": "P3c1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 3.0,"i": 5,"subgroup": 188,"subgroupHM": "P-6c2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 6,"subgroup": 188,"subgroupHM": "P-6c2","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 7,"subgroup": 190,"subgroupHM": "P-62c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c;1/3,-1/3,0","a:a-b,a+2b,c;1/3,2/3,0","a:a-b,a+2b,c;4/3,2/3,0","b:a-b,a+2b,c;-1/3,1/3,0","b:a-b,a+2b,c;2/3,1/3,0","b:a-b,a+2b,c;2/3,4/3,0","c:a-b,a+2b,c","c:a-b,a+2b,c;1,0,0","c:a-b,a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_189.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_189.json new file mode 100755 index 000000000000..4bf264f6f855 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_189.json @@ -0,0 +1 @@ +{ "HM": "P-62m","created": "Tue Apr 09 11:04:57 CDT 2024","nSettings": 18,"nSubgroups": 9,"sg": 189,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 38,"subgroupHM": "Amm2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:c,-a+b,-a-b","a:c,-a-2b,a","a:c,2a+b,b" ] },{ "det": 1.0,"i": 2,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 157,"subgroupHM": "P31m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 187,"subgroupHM": "P-6m2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c" ] },{ "det": 2.0,"i": 6,"subgroup": 189,"subgroupHM": "P-62m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 7,"subgroup": 189,"subgroupHM": "P-62m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 8,"subgroup": 189,"subgroupHM": "P-62m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 9,"subgroup": 190,"subgroupHM": "P-62c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_19.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_19.json new file mode 100755 index 000000000000..9b1bf7efabf0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_19.json @@ -0,0 +1 @@ +{ "HM": "P212121","created": "Tue Apr 09 11:03:49 CDT 2024","nSettings": 12,"nSubgroups": 2,"sg": 19,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;0,1/4,0","b:a,b,c;0,0,1/4","c:b,c,a;1/4,0,0" ] },{ "det": 3.0,"i": 2,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_190.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_190.json new file mode 100755 index 000000000000..7ac6807704a3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_190.json @@ -0,0 +1 @@ +{ "HM": "P-62c","created": "Tue Apr 09 11:04:58 CDT 2024","nSettings": 14,"nSubgroups": 7,"sg": 190,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 40,"subgroupHM": "Ama2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:c,-a+b,-a-b","a:c,-a-2b,a","a:c,2a+b,b" ] },{ "det": 1.0,"i": 2,"subgroup": 150,"subgroupHM": "P321","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 159,"subgroupHM": "P31c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 174,"subgroupHM": "P-6","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 3.0,"i": 5,"subgroup": 188,"subgroupHM": "P-6c2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 190,"subgroupHM": "P-62c","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 7,"subgroup": 190,"subgroupHM": "P-62c","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_191.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_191.json new file mode 100755 index 000000000000..ec7e319f774d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_191.json @@ -0,0 +1 @@ +{ "HM": "P6/mmm","created": "Tue Apr 09 11:04:58 CDT 2024","nSettings": 28,"nSubgroups": 14,"sg": 191,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 162,"subgroupHM": "P-31m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 164,"subgroupHM": "P-3m1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 175,"subgroupHM": "P6/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 177,"subgroupHM": "P622","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 183,"subgroupHM": "P6mm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 187,"subgroupHM": "P-6m2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 8,"subgroup": 189,"subgroupHM": "P-62m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 9,"subgroup": 191,"subgroupHM": "P6/mmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 10,"subgroup": 191,"subgroupHM": "P6/mmm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c","b:a,b,3c;0,0,1","b:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 11,"subgroup": 191,"subgroupHM": "P6/mmm","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 2.0,"i": 12,"subgroup": 192,"subgroupHM": "P6/mcc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 13,"subgroup": 193,"subgroupHM": "P63/mcm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 14,"subgroup": 194,"subgroupHM": "P63/mmc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_192.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_192.json new file mode 100755 index 000000000000..6044e0f47847 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_192.json @@ -0,0 +1 @@ +{ "HM": "P6/mcc","created": "Tue Apr 09 11:04:59 CDT 2024","nSettings": 20,"nSubgroups": 10,"sg": 192,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 163,"subgroupHM": "P-31c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 165,"subgroupHM": "P-3c1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 175,"subgroupHM": "P6/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 177,"subgroupHM": "P622","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 184,"subgroupHM": "P6cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 188,"subgroupHM": "P-6c2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 8,"subgroup": 190,"subgroupHM": "P-62c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 3.0,"i": 9,"subgroup": 192,"subgroupHM": "P6/mcc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;2,0,0","b:a,b,3c","b:a,b,3c;0,0,1","b:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 10,"subgroup": 192,"subgroupHM": "P6/mcc","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_193.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_193.json new file mode 100755 index 000000000000..2b5583abbfe5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_193.json @@ -0,0 +1 @@ +{ "HM": "P63/mcm","created": "Tue Apr 09 11:05:00 CDT 2024","nSettings": 20,"nSubgroups": 11,"sg": 193,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 63,"subgroupHM": "Cmcm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-a-b,c","a:-a-2b,a,c","a:2a+b,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 162,"subgroupHM": "P-31m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 165,"subgroupHM": "P-3c1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 176,"subgroupHM": "P63/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 182,"subgroupHM": "P6322","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 185,"subgroupHM": "P63cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 188,"subgroupHM": "P-6c2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 8,"subgroup": 189,"subgroupHM": "P-62m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 3.0,"i": 9,"subgroup": 193,"subgroupHM": "P63/mcm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 10,"subgroup": 193,"subgroupHM": "P63/mcm","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] },{ "det": 3.0,"i": 11,"subgroup": 194,"subgroupHM": "P63/mmc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_194.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_194.json new file mode 100755 index 000000000000..1a9f9c825ddc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_194.json @@ -0,0 +1 @@ +{ "HM": "P63/mmc","created": "Tue Apr 09 11:05:01 CDT 2024","nSettings": 20,"nSubgroups": 11,"sg": 194,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 63,"subgroupHM": "Cmcm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:-a-b,a-b,c","a:a,a+2b,c","a:b,-2a-b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 163,"subgroupHM": "P-31c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 164,"subgroupHM": "P-3m1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 176,"subgroupHM": "P63/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 182,"subgroupHM": "P6322","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 186,"subgroupHM": "P63mc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 187,"subgroupHM": "P-6m2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 8,"subgroup": 190,"subgroupHM": "P-62c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 9,"subgroup": 193,"subgroupHM": "P63/mcm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+2b,c","a:a-b,a+2b,c;1,0,0","a:a-b,a+2b,c;1,1,0" ] },{ "det": 3.0,"i": 10,"subgroup": 194,"subgroupHM": "P63/mmc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 11,"subgroup": 194,"subgroupHM": "P63/mmc","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c","a:2a,2b,c;1,0,0","a:2a,2b,c;0,1,0","a:2a,2b,c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_195.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_195.json new file mode 100755 index 000000000000..7322732f7214 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_195.json @@ -0,0 +1 @@ +{ "HM": "P23","created": "Tue Apr 09 11:05:01 CDT 2024","nSettings": 22,"nSubgroups": 5,"sg": 195,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c","a:a+b,-b+c,a-b-c","a:-a+b,-b-c,-a-b+c" ] },{ "det": 8.0,"i": 3,"subgroup": 196,"subgroupHM": "F23","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c" ] },{ "det": 8.0,"i": 4,"subgroup": 197,"subgroupHM": "I23","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","a:2a,2b,2c;1/2,1/2,3/2","b:2a,2b,2c","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0","b:2a,2b,2c;0,0,1" ] },{ "det": 8.0,"i": 5,"subgroup": 199,"subgroupHM": "I213","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","a:2a,2b,2c;1/2,1/2,3/2","b:2a,2b,2c","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0","b:2a,2b,2c;0,0,1" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_196.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_196.json new file mode 100755 index 000000000000..98f1345a2b4f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_196.json @@ -0,0 +1 @@ +{ "HM": "F23","created": "Tue Apr 09 11:05:02 CDT 2024","nSettings": 21,"nSubgroups": 4,"sg": 196,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 0.75,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c","a:-1/2a-1/2b,1/2b-1/2c,a-b-c","a:1/2a-1/2b,1/2b+1/2c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 195,"subgroupHM": "P23","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4","a:a,b,c;1/4,3/4,3/4","a:a,b,c;3/4,3/4,1/4","a:a,b,c;3/4,1/4,3/4","b:a,b,c","b:a,b,c;1/2,0,1/2","b:a,b,c;1/2,1/2,0","b:a,b,c;0,1/2,1/2" ] },{ "det": 1.0,"i": 4,"subgroup": 198,"subgroupHM": "P213","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,1/2,0","a:a,b,c;1/2,0,1/2","a:a,b,c;0,1/2,1/2","b:a,b,c;1/4,1/4,1/4","b:a,b,c;3/4,1/4,3/4","b:a,b,c;1/4,3/4,3/4","b:a,b,c;3/4,3/4,1/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_197.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_197.json new file mode 100755 index 000000000000..c3a24054c173 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_197.json @@ -0,0 +1 @@ +{ "HM": "I23","created": "Tue Apr 09 11:05:02 CDT 2024","nSettings": 6,"nSubgroups": 3,"sg": 197,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 23,"subgroupHM": "I222","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.5,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c","a:-a-b,b-c,1/2a-1/2b-1/2c","a:a-b,b+c,-1/2a-1/2b+1/2c" ] },{ "det": 1.0,"i": 3,"subgroup": 195,"subgroupHM": "P23","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_198.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_198.json new file mode 100755 index 000000000000..f6fdda497091 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_198.json @@ -0,0 +1 @@ +{ "HM": "P213","created": "Tue Apr 09 11:05:02 CDT 2024","nSettings": 5,"nSubgroups": 2,"sg": 198,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c;0,1/2,1/2","a:a+b,-b+c,a-b-c;1/2,1/2,0","a:-a+b,-b-c,-a-b+c;1/2,0,1/2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_199.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_199.json new file mode 100755 index 000000000000..0356a9cd75ee --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_199.json @@ -0,0 +1 @@ +{ "HM": "I213","created": "Tue Apr 09 11:05:02 CDT 2024","nSettings": 6,"nSubgroups": 3,"sg": 199,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 24,"subgroupHM": "I212121","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.5,"i": 2,"subgroup": 146,"subgroupHM": "R3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c;0,1/2,1/2","a:-a-b,b-c,1/2a-1/2b-1/2c;1/2,1/2,0","a:a-b,b+c,-1/2a-1/2b+1/2c;1/2,0,1/2" ] },{ "det": 1.0,"i": 3,"subgroup": 198,"subgroupHM": "P213","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_2.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_2.json new file mode 100755 index 000000000000..baf15259ce8c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_2.json @@ -0,0 +1 @@ +{ "HM": "P-1","created": "Tue Apr 09 11:03:43 CDT 2024","nSettings": 54,"nSubgroups": 3,"sg": 2,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,a+c;1/2,0,0","b:2a,b,a+c","c:a,2b,b+c;0,1/2,0","d:a,2b,b+c","e:a,b,2c;0,0,1/2","f:a,b,2c","g:a,2b,c;0,1/2,0","h:a,2b,c","i:2a,a+b,a+c;1/2,0,0","j:2a,a+b,a+c","k:2a,a+b,c;1/2,0,0","l:2a,a+b,c","m:2a,b,c;1/2,0,0","n:2a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 2,"subgroupHM": "P-1","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,2b+c","b:a,3b,2b+c;0,1,0","b:a,3b,2b+c;0,2,0","c:a,3b,b+c","c:a,3b,b+c;0,1,0","c:a,3b,b+c;0,2,0","d:a,3b,c","d:a,3b,c;0,1,0","d:a,3b,c;0,2,0","e:3a,2a+b,2a+c","e:3a,2a+b,2a+c;1,0,0","e:3a,2a+b,2a+c;2,0,0","f:3a,a+b,2a+c","f:3a,a+b,2a+c;1,0,0","f:3a,a+b,2a+c;2,0,0","g:3a,2a+b,a+c","g:3a,2a+b,a+c;1,0,0","g:3a,2a+b,a+c;2,0,0","h:3a,a+b,a+c","h:3a,a+b,a+c;1,0,0","h:3a,a+b,a+c;2,0,0","i:3a,b,2a+c","i:3a,b,2a+c;1,0,0","i:3a,b,2a+c;2,0,0","j:3a,b,a+c","j:3a,b,a+c;1,0,0","j:3a,b,a+c;2,0,0","k:3a,2a+b,c","k:3a,2a+b,c;1,0,0","k:3a,2a+b,c;2,0,0","l:3a,a+b,c","l:3a,a+b,c;1,0,0","l:3a,a+b,c;2,0,0","m:3a,b,c","m:3a,b,c;1,0,0","m:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_20.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_20.json new file mode 100755 index 000000000000..1297ea7b45a1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_20.json @@ -0,0 +1 @@ +{ "HM": "C2221","created": "Tue Apr 09 11:03:49 CDT 2024","nSettings": 16,"nSubgroups": 6,"sg": 20,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a+1/2b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,0,0","b:c,a,b;0,1/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,0,0" ] },{ "det": 3.0,"i": 6,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_200.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_200.json new file mode 100755 index 000000000000..989ffafe84aa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_200.json @@ -0,0 +1 @@ +{ "HM": "Pm-3","created": "Tue Apr 09 11:05:03 CDT 2024","nSettings": 24,"nSubgroups": 6,"sg": 200,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 47,"subgroupHM": "Pmmm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c","a:a+b,-b+c,a-b-c","a:-a+b,-b-c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 195,"subgroupHM": "P23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 8.0,"i": 4,"subgroup": 202,"subgroupHM": "Fm-3","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c" ] },{ "det": 8.0,"i": 5,"subgroup": 204,"subgroupHM": "Im-3","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","a:2a,2b,2c;3/2,3/2,1/2","b:2a,2b,2c","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0","b:2a,2b,2c;0,0,1" ] },{ "det": 8.0,"i": 6,"subgroup": 206,"subgroupHM": "Ia-3","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","a:2a,2b,2c;3/2,3/2,1/2","b:2a,2b,2c","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0","b:2a,2b,2c;1,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_201.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_201.json new file mode 100755 index 000000000000..865e2734fc08 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_201.json @@ -0,0 +1 @@ +{ "HM": "Pn-3","created": "Tue Apr 09 11:05:03 CDT 2024","nSettings": 8,"nSubgroups": 4,"sg": 201,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 48,"subgroupHM": "Pnnn","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c;1/2,0,1/2","a:a+b,-b+c,a-b-c;0,1/2,1/2","a:-a+b,-b-c,-a-b+c;1/2,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 195,"subgroupHM": "P23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 8.0,"i": 4,"subgroup": 203,"subgroupHM": "Fd-3","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_202.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_202.json new file mode 100755 index 000000000000..790d9be8527b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_202.json @@ -0,0 +1 @@ +{ "HM": "Fm-3","created": "Tue Apr 09 11:05:03 CDT 2024","nSettings": 22,"nSubgroups": 6,"sg": 202,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 69,"subgroupHM": "Fmmm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 0.75,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c","a:-1/2a-1/2b,1/2b-1/2c,a-b-c","a:1/2a-1/2b,1/2b+1/2c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 196,"subgroupHM": "F23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 200,"subgroupHM": "Pm-3","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,0,1/2","a:a,b,c;1/2,1/2,0","a:a,b,c;0,1/2,1/2" ] },{ "det": 1.0,"i": 5,"subgroup": 201,"subgroupHM": "Pn-3","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;0,1/2,1/2","a:a,b,c;1/2,1/2,0","a:a,b,c;1/2,0,1/2" ] },{ "det": 1.0,"i": 6,"subgroup": 205,"subgroupHM": "Pa-3","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,1/2,0","a:a,b,c;1/2,0,1/2","a:a,b,c;0,1/2,1/2","b:-b,a,c;1/2,1/2,0","b:-b,a,c;0,1/2,1/2","b:-b,a,c;1/2,0,1/2","b:-b,a,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_203.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_203.json new file mode 100755 index 000000000000..1fb88d480678 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_203.json @@ -0,0 +1 @@ +{ "HM": "Fd-3","created": "Tue Apr 09 11:05:04 CDT 2024","nSettings": 6,"nSubgroups": 3,"sg": 203,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 70,"subgroupHM": "Fddd","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 0.75,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c;1/4,0,1/4","a:-1/2a-1/2b,1/2b-1/2c,a-b-c;0,1/4,1/4","a:1/2a-1/2b,1/2b+1/2c,-a-b+c;1/4,1/4,0" ] },{ "det": 1.0,"i": 3,"subgroup": 196,"subgroupHM": "F23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/8,1/8,1/8" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_204.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_204.json new file mode 100755 index 000000000000..f0e7b3961d90 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_204.json @@ -0,0 +1 @@ +{ "HM": "Im-3","created": "Tue Apr 09 11:05:04 CDT 2024","nSettings": 8,"nSubgroups": 5,"sg": 204,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 71,"subgroupHM": "Immm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.5,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c","a:-a-b,b-c,1/2a-1/2b-1/2c","a:a-b,b+c,-1/2a-1/2b+1/2c" ] },{ "det": 1.0,"i": 3,"subgroup": 197,"subgroupHM": "I23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 200,"subgroupHM": "Pm-3","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 201,"subgroupHM": "Pn-3","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_205.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_205.json new file mode 100755 index 000000000000..d8bb3ab75e29 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_205.json @@ -0,0 +1 @@ +{ "HM": "Pa-3","created": "Tue Apr 09 11:05:04 CDT 2024","nSettings": 6,"nSubgroups": 3,"sg": 205,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 61,"subgroupHM": "Pbca","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c;0,1/2,1/2","a:a+b,-b+c,a-b-c;1/2,1/2,0","a:-a+b,-b-c,-a-b+c;1/2,0,1/2" ] },{ "det": 1.0,"i": 3,"subgroup": 198,"subgroupHM": "P213","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_206.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_206.json new file mode 100755 index 000000000000..239eaf01080f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_206.json @@ -0,0 +1 @@ +{ "HM": "Ia-3","created": "Tue Apr 09 11:05:04 CDT 2024","nSettings": 8,"nSubgroups": 4,"sg": 206,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 73,"subgroupHM": "Ibca","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.5,"i": 2,"subgroup": 148,"subgroupHM": "R-3","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c;0,1/2,1/2","a:-a-b,b-c,1/2a-1/2b-1/2c;1/2,1/2,0","a:a-b,b+c,-1/2a-1/2b+1/2c;1/2,0,1/2" ] },{ "det": 1.0,"i": 3,"subgroup": 199,"subgroupHM": "I213","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 205,"subgroupHM": "Pa-3","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;3/4,3/4,1/4","b:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_207.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_207.json new file mode 100755 index 000000000000..f0ae6937553d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_207.json @@ -0,0 +1 @@ +{ "HM": "P432","created": "Tue Apr 09 11:05:05 CDT 2024","nSettings": 18,"nSubgroups": 5,"sg": 207,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 89,"subgroupHM": "P422","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","a:b,c,a","a:c,a,b" ] },{ "det": 3.0,"i": 2,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c","a:a+b,-b+c,a-b-c","a:-a+b,-b-c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 195,"subgroupHM": "P23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 8.0,"i": 4,"subgroup": 209,"subgroupHM": "F432","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c" ] },{ "det": 8.0,"i": 5,"subgroup": 211,"subgroupHM": "I432","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,3/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","b:2a,2b,2c","b:2a,2b,2c;1,1,0","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_208.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_208.json new file mode 100755 index 000000000000..e2b5b3538262 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_208.json @@ -0,0 +1 @@ +{ "HM": "P4232","created": "Tue Apr 09 11:05:05 CDT 2024","nSettings": 18,"nSubgroups": 5,"sg": 208,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0","a:b,c,a;0,0,1/2","a:c,a,b;1/2,0,0" ] },{ "det": 3.0,"i": 2,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c;1/4,1/4,1/4","a:-a-b,b+c,-a+b-c;-1/4,1/4,-1/4","a:a+b,-b+c,a-b-c;1/4,-1/4,-1/4","a:-a+b,-b-c,-a-b+c;-1/4,-1/4,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 195,"subgroupHM": "P23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 8.0,"i": 4,"subgroup": 210,"subgroupHM": "F4132","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c" ] },{ "det": 8.0,"i": 5,"subgroup": 214,"subgroupHM": "I4132","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,3/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","b:2a,2b,2c","b:2a,2b,2c;1,1,0","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_209.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_209.json new file mode 100755 index 000000000000..293956ff0ec4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_209.json @@ -0,0 +1 @@ +{ "HM": "F432","created": "Tue Apr 09 11:05:05 CDT 2024","nSettings": 16,"nSubgroups": 5,"sg": 209,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 97,"subgroupHM": "I422","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c","a:1/2b-1/2c,1/2b+1/2c,a","a:-1/2a+1/2c,1/2a+1/2c,b" ] },{ "det": 0.75,"i": 2,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c","a:-1/2a-1/2b,1/2b-1/2c,a-b-c","a:1/2a-1/2b,1/2b+1/2c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 196,"subgroupHM": "F23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 207,"subgroupHM": "P432","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,1/2,0","a:a,b,c;0,1/2,1/2","a:a,b,c;1/2,0,1/2" ] },{ "det": 1.0,"i": 5,"subgroup": 208,"subgroupHM": "P4232","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4","a:a,b,c;3/4,1/4,3/4","a:a,b,c;1/4,3/4,3/4","a:a,b,c;3/4,3/4,1/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_21.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_21.json new file mode 100755 index 000000000000..3574f0560047 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_21.json @@ -0,0 +1 @@ +{ "HM": "C222","created": "Tue Apr 09 11:03:49 CDT 2024","nSettings": 24,"nSubgroups": 10,"sg": 21,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a+1/2b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b;1/4,1/4,0","b:b,c,a;0,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 6,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c","b:a,b,2c;0,0,1/2" ] },{ "det": 2.0,"i": 7,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 8,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 9,"subgroup": 23,"subgroupHM": "I222","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 10,"subgroup": 24,"subgroupHM": "I212121","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;3/4,0,1/2","b:a,b,2c;3/4,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_210.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_210.json new file mode 100755 index 000000000000..a8ed7d67fefc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_210.json @@ -0,0 +1 @@ +{ "HM": "F4132","created": "Tue Apr 09 11:05:06 CDT 2024","nSettings": 16,"nSubgroups": 5,"sg": 210,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 98,"subgroupHM": "I4122","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c","a:1/2b-1/2c,1/2b+1/2c,a","a:-1/2a+1/2c,1/2a+1/2c,b" ] },{ "det": 0.75,"i": 2,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c;1/8,1/8,1/8","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c;3/8,1/8,3/8","a:-1/2a-1/2b,1/2b-1/2c,a-b-c;1/8,3/8,3/8","a:1/2a-1/2b,1/2b+1/2c,-a-b+c;3/8,3/8,1/8" ] },{ "det": 1.0,"i": 3,"subgroup": 196,"subgroupHM": "F23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 212,"subgroupHM": "P4332","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,0,1/2","a:a,b,c;0,1/2,1/2","a:a,b,c;1/2,1/2,0" ] },{ "det": 1.0,"i": 5,"subgroup": 213,"subgroupHM": "P4132","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4","a:a,b,c;3/4,3/4,1/4","a:a,b,c;1/4,3/4,3/4","a:a,b,c;3/4,1/4,3/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_211.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_211.json new file mode 100755 index 000000000000..ed69b1018bd1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_211.json @@ -0,0 +1 @@ +{ "HM": "I432","created": "Tue Apr 09 11:05:06 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 211,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 97,"subgroupHM": "I422","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","a:b,c,a","a:c,a,b" ] },{ "det": 1.5,"i": 2,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c","a:-a-b,b-c,1/2a-1/2b-1/2c","a:a-b,b+c,-1/2a-1/2b+1/2c" ] },{ "det": 1.0,"i": 3,"subgroup": 197,"subgroupHM": "I23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 207,"subgroupHM": "P432","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 208,"subgroupHM": "P4232","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_212.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_212.json new file mode 100755 index 000000000000..569796652f3c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_212.json @@ -0,0 +1 @@ +{ "HM": "P4332","created": "Tue Apr 09 11:05:06 CDT 2024","nSettings": 8,"nSubgroups": 3,"sg": 212,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 96,"subgroupHM": "P43212","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,3/8","a:b,c,a;3/8,1/4,0","a:c,a,b;0,3/8,1/4" ] },{ "det": 3.0,"i": 2,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c;1/8,1/8,1/8","a:-a-b,b+c,-a+b-c;7/8,5/8,3/8","a:a+b,-b+c,a-b-c;5/8,3/8,7/8","a:-a+b,-b-c,-a-b+c;3/8,7/8,5/8" ] },{ "det": 1.0,"i": 3,"subgroup": 198,"subgroupHM": "P213","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_213.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_213.json new file mode 100755 index 000000000000..3b95688846f6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_213.json @@ -0,0 +1 @@ +{ "HM": "P4132","created": "Tue Apr 09 11:05:06 CDT 2024","nSettings": 8,"nSubgroups": 3,"sg": 213,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 92,"subgroupHM": "P41212","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/2,1/8","a:b,c,a;1/8,1/4,1/2","a:c,a,b;1/2,1/8,1/4" ] },{ "det": 3.0,"i": 2,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c;3/8,3/8,3/8","a:-a-b,b+c,-a+b-c;5/8,7/8,1/8","a:a+b,-b+c,a-b-c;7/8,1/8,5/8","a:-a+b,-b-c,-a-b+c;1/8,5/8,7/8" ] },{ "det": 1.0,"i": 3,"subgroup": 198,"subgroupHM": "P213","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_214.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_214.json new file mode 100755 index 000000000000..31ea2100f7f1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_214.json @@ -0,0 +1 @@ +{ "HM": "I4132","created": "Tue Apr 09 11:05:07 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 214,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 98,"subgroupHM": "I4122","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,1/8","a:b,c,a;1/8,0,1/4","a:c,a,b;1/4,1/8,0" ] },{ "det": 1.5,"i": 2,"subgroup": 155,"subgroupHM": "R32","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c;1/8,1/8,1/8","a:a+b,-b-c,-1/2a+1/2b-1/2c;7/8,5/8,3/8","a:-a-b,b-c,1/2a-1/2b-1/2c;5/8,3/8,7/8","a:a-b,b+c,-1/2a-1/2b+1/2c;3/8,7/8,5/8" ] },{ "det": 1.0,"i": 3,"subgroup": 199,"subgroupHM": "I213","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 212,"subgroupHM": "P4332","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 213,"subgroupHM": "P4132","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_215.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_215.json new file mode 100755 index 000000000000..ea186c2d2415 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_215.json @@ -0,0 +1 @@ +{ "HM": "P-43m","created": "Tue Apr 09 11:05:07 CDT 2024","nSettings": 18,"nSubgroups": 6,"sg": 215,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 111,"subgroupHM": "P-42m","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","a:b,c,a","a:c,a,b" ] },{ "det": 3.0,"i": 2,"subgroup": 160,"subgroupHM": "R3m","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c","a:a+b,-b+c,a-b-c","a:-a+b,-b-c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 195,"subgroupHM": "P23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 8.0,"i": 4,"subgroup": 216,"subgroupHM": "F-43m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c" ] },{ "det": 8.0,"i": 5,"subgroup": 217,"subgroupHM": "I-43m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,3/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","b:2a,2b,2c","b:2a,2b,2c;1,1,0","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0" ] },{ "det": 8.0,"i": 6,"subgroup": 219,"subgroupHM": "F-43c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_216.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_216.json new file mode 100755 index 000000000000..2bd043cec2b9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_216.json @@ -0,0 +1 @@ +{ "HM": "F-43m","created": "Tue Apr 09 11:05:07 CDT 2024","nSettings": 16,"nSubgroups": 4,"sg": 216,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 119,"subgroupHM": "I-4m2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c","a:1/2b-1/2c,1/2b+1/2c,a","a:-1/2a+1/2c,1/2a+1/2c,b" ] },{ "det": 0.75,"i": 2,"subgroup": 160,"subgroupHM": "R3m","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c","a:-1/2a-1/2b,1/2b-1/2c,a-b-c","a:1/2a-1/2b,1/2b+1/2c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 196,"subgroupHM": "F23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 215,"subgroupHM": "P-43m","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4","a:a,b,c;3/4,1/4,3/4","a:a,b,c;1/4,3/4,3/4","a:a,b,c;3/4,3/4,1/4","b:a,b,c","b:a,b,c;1/2,1/2,0","b:a,b,c;0,1/2,1/2","b:a,b,c;1/2,0,1/2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_217.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_217.json new file mode 100755 index 000000000000..fb68cc0f779c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_217.json @@ -0,0 +1 @@ +{ "HM": "I-43m","created": "Tue Apr 09 11:05:07 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 217,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 121,"subgroupHM": "I-42m","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","a:b,c,a","a:c,a,b" ] },{ "det": 1.5,"i": 2,"subgroup": 160,"subgroupHM": "R3m","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c","a:-a-b,b-c,1/2a-1/2b-1/2c","a:a-b,b+c,-1/2a-1/2b+1/2c" ] },{ "det": 1.0,"i": 3,"subgroup": 197,"subgroupHM": "I23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 215,"subgroupHM": "P-43m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 218,"subgroupHM": "P-43n","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_218.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_218.json new file mode 100755 index 000000000000..05962674f5d1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_218.json @@ -0,0 +1 @@ +{ "HM": "P-43n","created": "Tue Apr 09 11:05:08 CDT 2024","nSettings": 16,"nSubgroups": 4,"sg": 218,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 112,"subgroupHM": "P-42c","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,1/4","a:b,c,a;1/4,0,1/2","a:c,a,b;1/2,1/4,0" ] },{ "det": 3.0,"i": 2,"subgroup": 161,"subgroupHM": "R3c","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c","a:a+b,-b+c,a-b-c","a:-a+b,-b-c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 195,"subgroupHM": "P23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 8.0,"i": 4,"subgroup": 220,"subgroupHM": "I-43d","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,3/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","b:2a,2b,2c","b:2a,2b,2c;1,1,0","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_219.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_219.json new file mode 100755 index 000000000000..59806b819fc1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_219.json @@ -0,0 +1 @@ +{ "HM": "F-43c","created": "Tue Apr 09 11:05:08 CDT 2024","nSettings": 16,"nSubgroups": 4,"sg": 219,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 120,"subgroupHM": "I-4c2","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c;0,0,1/4","a:1/2b-1/2c,1/2b+1/2c,a;1/4,0,0","a:-1/2a+1/2c,1/2a+1/2c,b;0,1/4,0" ] },{ "det": 0.75,"i": 2,"subgroup": 161,"subgroupHM": "R3c","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c","a:-1/2a-1/2b,1/2b-1/2c,a-b-c","a:1/2a-1/2b,1/2b+1/2c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 196,"subgroupHM": "F23","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 218,"subgroupHM": "P-43n","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4","a:a,b,c;3/4,1/4,3/4","a:a,b,c;1/4,3/4,3/4","a:a,b,c;3/4,3/4,1/4","b:a,b,c","b:a,b,c;1/2,1/2,0","b:a,b,c;0,1/2,1/2","b:a,b,c;1/2,0,1/2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_22.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_22.json new file mode 100755 index 000000000000..b88857f2f65d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_22.json @@ -0,0 +1 @@ +{ "HM": "F222","created": "Tue Apr 09 11:03:50 CDT 2024","nSettings": 24,"nSubgroups": 4,"sg": 22,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,1/2b-1/2c","b:a,b,-1/2a+1/2c","c:b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,0,0","b:a,b,c;0,1/4,1/4","c:c,a,b;1/4,1/4,0","d:c,a,b;0,0,1/4","e:b,c,a;0,1/4,0","f:b,c,a;1/4,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4","b:a,b,c","c:c,a,b;1/4,1/4,1/4","d:c,a,b","e:b,c,a;1/4,1/4,1/4","f:b,c,a" ] },{ "det": 3.0,"i": 4,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_220.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_220.json new file mode 100755 index 000000000000..48f0de578491 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_220.json @@ -0,0 +1 @@ +{ "HM": "I-43d","created": "Tue Apr 09 11:05:08 CDT 2024","nSettings": 8,"nSubgroups": 3,"sg": 220,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 122,"subgroupHM": "I-42d","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/2,1/4,1/8","a:b,c,a;1/8,1/2,1/4","a:c,a,b;1/4,1/8,1/2" ] },{ "det": 1.5,"i": 2,"subgroup": 161,"subgroupHM": "R3c","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c;0,1/2,1/2","a:-a-b,b-c,1/2a-1/2b-1/2c;1/2,1/2,0","a:a-b,b+c,-1/2a-1/2b+1/2c;1/2,0,1/2" ] },{ "det": 1.0,"i": 3,"subgroup": 199,"subgroupHM": "I213","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_221.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_221.json new file mode 100755 index 000000000000..04e4c740f3d9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_221.json @@ -0,0 +1 @@ +{ "HM": "Pm-3m","created": "Tue Apr 09 11:05:08 CDT 2024","nSettings": 22,"nSubgroups": 8,"sg": 221,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 123,"subgroupHM": "P4/mmm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","a:b,c,a","a:c,a,b" ] },{ "det": 3.0,"i": 2,"subgroup": 166,"subgroupHM": "R-3m","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c","a:a+b,-b+c,a-b-c","a:-a+b,-b-c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 200,"subgroupHM": "Pm-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 207,"subgroupHM": "P432","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 215,"subgroupHM": "P-43m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 8.0,"i": 6,"subgroup": 225,"subgroupHM": "Fm-3m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c" ] },{ "det": 8.0,"i": 7,"subgroup": 226,"subgroupHM": "Fm-3c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c" ] },{ "det": 8.0,"i": 8,"subgroup": 229,"subgroupHM": "Im-3m","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,3/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","b:2a,2b,2c","b:2a,2b,2c;1,1,0","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_222.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_222.json new file mode 100755 index 000000000000..53ceee053387 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_222.json @@ -0,0 +1 @@ +{ "HM": "Pn-3n","created": "Tue Apr 09 11:05:09 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 222,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 126,"subgroupHM": "P4/nnc","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","a:b,c,a","a:c,a,b" ] },{ "det": 3.0,"i": 2,"subgroup": 167,"subgroupHM": "R-3c","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c;1/2,0,1/2","a:a+b,-b+c,a-b-c;0,1/2,1/2","a:-a+b,-b-c,-a-b+c;1/2,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 201,"subgroupHM": "Pn-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 207,"subgroupHM": "P432","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 218,"subgroupHM": "P-43n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_223.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_223.json new file mode 100755 index 000000000000..aeeae371d61e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_223.json @@ -0,0 +1 @@ +{ "HM": "Pm-3n","created": "Tue Apr 09 11:05:09 CDT 2024","nSettings": 18,"nSubgroups": 6,"sg": 223,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 131,"subgroupHM": "P42/mmc","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0","a:b,c,a;0,0,1/2","a:c,a,b;1/2,0,0" ] },{ "det": 3.0,"i": 2,"subgroup": 167,"subgroupHM": "R-3c","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c","a:a+b,-b+c,a-b-c","a:-a+b,-b-c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 200,"subgroupHM": "Pm-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 208,"subgroupHM": "P4232","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 218,"subgroupHM": "P-43n","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 8.0,"i": 6,"subgroup": 230,"subgroupHM": "Ia-3d","subgroupIndex": 4,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","a:2a,2b,2c;3/2,3/2,1/2","a:2a,2b,2c;3/2,1/2,1/2","a:2a,2b,2c;1/2,3/2,1/2","b:2a,2b,2c","b:2a,2b,2c;1,1,0","b:2a,2b,2c;1,0,0","b:2a,2b,2c;0,1,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_224.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_224.json new file mode 100755 index 000000000000..c9c9f2444aa6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_224.json @@ -0,0 +1 @@ +{ "HM": "Pn-3m","created": "Tue Apr 09 11:05:09 CDT 2024","nSettings": 14,"nSubgroups": 7,"sg": 224,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 134,"subgroupHM": "P42/nnm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0","a:b,c,a;0,0,1/2","a:c,a,b;1/2,0,0" ] },{ "det": 3.0,"i": 2,"subgroup": 166,"subgroupHM": "R-3m","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:a-b,b-c,a+b+c","a:-a-b,b+c,-a+b-c;1/2,0,1/2","a:a+b,-b+c,a-b-c;0,1/2,1/2","a:-a+b,-b-c,-a-b+c;1/2,1/2,0" ] },{ "det": 1.0,"i": 3,"subgroup": 201,"subgroupHM": "Pn-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 208,"subgroupHM": "P4232","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 215,"subgroupHM": "P-43m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 8.0,"i": 6,"subgroup": 227,"subgroupHM": "Fd-3m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c" ] },{ "det": 8.0,"i": 7,"subgroup": 228,"subgroupHM": "Fd-3c","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_225.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_225.json new file mode 100755 index 000000000000..3af59efa43f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_225.json @@ -0,0 +1 @@ +{ "HM": "Fm-3m","created": "Tue Apr 09 11:05:09 CDT 2024","nSettings": 18,"nSubgroups": 7,"sg": 225,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 139,"subgroupHM": "I4/mmm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c","a:1/2b-1/2c,1/2b+1/2c,a","a:-1/2a+1/2c,1/2a+1/2c,b" ] },{ "det": 0.75,"i": 2,"subgroup": 166,"subgroupHM": "R-3m","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c","a:-1/2a-1/2b,1/2b-1/2c,a-b-c","a:1/2a-1/2b,1/2b+1/2c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 202,"subgroupHM": "Fm-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 209,"subgroupHM": "F432","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 216,"subgroupHM": "F-43m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 221,"subgroupHM": "Pm-3m","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,1/2,0","a:a,b,c;0,1/2,1/2","a:a,b,c;1/2,0,1/2" ] },{ "det": 1.0,"i": 7,"subgroup": 224,"subgroupHM": "Pn-3m","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,0,1/2","a:a,b,c;0,1/2,1/2","a:a,b,c;1/2,1/2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_226.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_226.json new file mode 100755 index 000000000000..33c3c4966b86 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_226.json @@ -0,0 +1 @@ +{ "HM": "Fm-3c","created": "Tue Apr 09 11:05:10 CDT 2024","nSettings": 18,"nSubgroups": 7,"sg": 226,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 140,"subgroupHM": "I4/mcm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c;1/4,1/4,0","a:1/2b-1/2c,1/2b+1/2c,a;0,1/4,1/4","a:-1/2a+1/2c,1/2a+1/2c,b;1/4,0,1/4" ] },{ "det": 0.75,"i": 2,"subgroup": 167,"subgroupHM": "R-3c","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c","a:-1/2a-1/2b,1/2b-1/2c,a-b-c","a:1/2a-1/2b,1/2b+1/2c,-a-b+c" ] },{ "det": 1.0,"i": 3,"subgroup": 202,"subgroupHM": "Fm-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 209,"subgroupHM": "F432","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 219,"subgroupHM": "F-43c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 222,"subgroupHM": "Pn-3n","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,0,1/2","a:a,b,c;0,1/2,1/2","a:a,b,c;1/2,1/2,0" ] },{ "det": 1.0,"i": 7,"subgroup": 223,"subgroupHM": "Pm-3n","subgroupIndex": 4,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","a:a,b,c;1/2,1/2,0","a:a,b,c;0,1/2,1/2","a:a,b,c;1/2,0,1/2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_227.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_227.json new file mode 100755 index 000000000000..07158f779ba9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_227.json @@ -0,0 +1 @@ +{ "HM": "Fd-3m","created": "Tue Apr 09 11:05:10 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 227,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 141,"subgroupHM": "I41/amd","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c;1/4,1/4,0","a:1/2b-1/2c,1/2b+1/2c,a;0,1/4,1/4","a:-1/2a+1/2c,1/2a+1/2c,b;1/4,0,1/4" ] },{ "det": 0.75,"i": 2,"subgroup": 166,"subgroupHM": "R-3m","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c;1/4,0,1/4","a:-1/2a-1/2b,1/2b-1/2c,a-b-c;0,1/4,1/4","a:1/2a-1/2b,1/2b+1/2c,-a-b+c;1/4,1/4,0" ] },{ "det": 1.0,"i": 3,"subgroup": 203,"subgroupHM": "Fd-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 210,"subgroupHM": "F4132","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;3/8,3/8,3/8" ] },{ "det": 1.0,"i": 5,"subgroup": 216,"subgroupHM": "F-43m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/8,1/8,1/8" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_228.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_228.json new file mode 100755 index 000000000000..e3e4532e26da --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_228.json @@ -0,0 +1 @@ +{ "HM": "Fd-3c","created": "Tue Apr 09 11:05:10 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 228,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 142,"subgroupHM": "I41/acd","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c","a:1/2b-1/2c,1/2b+1/2c,a","a:-1/2a+1/2c,1/2a+1/2c,b" ] },{ "det": 0.75,"i": 2,"subgroup": 167,"subgroupHM": "R-3c","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,-1/2b+1/2c,a+b+c","a:1/2a+1/2b,-1/2b-1/2c,-a+b-c;1/4,0,1/4","a:-1/2a-1/2b,1/2b-1/2c,a-b-c;0,1/4,1/4","a:1/2a-1/2b,1/2b+1/2c,-a-b+c;1/4,1/4,0" ] },{ "det": 1.0,"i": 3,"subgroup": 203,"subgroupHM": "Fd-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 210,"subgroupHM": "F4132","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/8,1/8,1/8" ] },{ "det": 1.0,"i": 5,"subgroup": 219,"subgroupHM": "F-43c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/8,1/8,1/8" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_229.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_229.json new file mode 100755 index 000000000000..500fe391510f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_229.json @@ -0,0 +1 @@ +{ "HM": "Im-3m","created": "Tue Apr 09 11:05:11 CDT 2024","nSettings": 14,"nSubgroups": 9,"sg": 229,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 139,"subgroupHM": "I4/mmm","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","a:b,c,a","a:c,a,b" ] },{ "det": 1.5,"i": 2,"subgroup": 166,"subgroupHM": "R-3m","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c","a:-a-b,b-c,1/2a-1/2b-1/2c","a:a-b,b+c,-1/2a-1/2b+1/2c" ] },{ "det": 1.0,"i": 3,"subgroup": 204,"subgroupHM": "Im-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 211,"subgroupHM": "I432","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 217,"subgroupHM": "I-43m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 221,"subgroupHM": "Pm-3m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 222,"subgroupHM": "Pn-3n","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 8,"subgroup": 223,"subgroupHM": "Pm-3n","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 9,"subgroup": 224,"subgroupHM": "Pn-3m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_23.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_23.json new file mode 100755 index 000000000000..6d2b05fc72f3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_23.json @@ -0,0 +1 @@ +{ "HM": "I222","created": "Tue Apr 09 11:03:50 CDT 2024","nSettings": 16,"nSubgroups": 4,"sg": 23,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b-c,a,c","b:-a-c,b,a","c:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,0,0","b:c,a,b;0,1/4,0","c:a,b,c;0,0,1/4" ] },{ "det": 3.0,"i": 4,"subgroup": 23,"subgroupHM": "I222","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_230.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_230.json new file mode 100755 index 000000000000..569c70a044d0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_230.json @@ -0,0 +1 @@ +{ "HM": "Ia-3d","created": "Tue Apr 09 11:05:11 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 230,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 142,"subgroupHM": "I41/acd","subgroupIndex": 3,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","a:b,c,a","a:c,a,b" ] },{ "det": 1.5,"i": 2,"subgroup": 167,"subgroupHM": "R-3c","subgroupIndex": 4,"trSubtype": "","trType": "t","trm": [ "a:-a+b,-b+c,1/2a+1/2b+1/2c","a:a+b,-b-c,-1/2a+1/2b-1/2c;0,1/2,1/2","a:-a-b,b-c,1/2a-1/2b-1/2c;1/2,1/2,0","a:a-b,b+c,-1/2a-1/2b+1/2c;1/2,0,1/2" ] },{ "det": 1.0,"i": 3,"subgroup": 206,"subgroupHM": "Ia-3","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 214,"subgroupHM": "I4132","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 220,"subgroupHM": "I-43d","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_24.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_24.json new file mode 100755 index 000000000000..c1861281c1e5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_24.json @@ -0,0 +1 @@ +{ "HM": "I212121","created": "Tue Apr 09 11:03:50 CDT 2024","nSettings": 16,"nSubgroups": 4,"sg": 24,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b-c,a,c;0,0,1/4","b:-a-c,b,a;1/4,0,0","c:-a-b,c,b;0,1/4,0" ] },{ "det": 1.0,"i": 2,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,1/4,0","b:c,a,b;0,1/4,1/4","c:a,b,c;1/4,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 24,"subgroupHM": "I212121","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_25.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_25.json new file mode 100755 index 000000000000..4400f9390079 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_25.json @@ -0,0 +1 @@ +{ "HM": "Pmm2","created": "Tue Apr 09 11:03:50 CDT 2024","nSettings": 38,"nSubgroups": 11,"sg": 25,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c","b:a,2b,c;0,1/2,0","c:a,2b,c","d:2a,b,c;1/2,0,0","e:2a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 5,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a,2c","b:a,b,2c" ] },{ "det": 2.0,"i": 6,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 7,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,a,c;0,1/2,0","b:-2b,a,c","c:2a,b,c;1/2,0,0","d:2a,b,c" ] },{ "det": 4.0,"i": 8,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;1/2,1/2,0","b:2a,2b,c;0,1/2,0","c:2a,2b,c;1/2,0,0","d:2a,2b,c" ] },{ "det": 4.0,"i": 9,"subgroup": 38,"subgroupHM": "Amm2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,2a,2c;1/2,0,0","b:-b,2a,2c","c:a,2b,2c;0,1/2,0","d:a,2b,2c" ] },{ "det": 4.0,"i": 10,"subgroup": 39,"subgroupHM": "Aem2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,2a,2c;1/2,0,0","b:-b,2a,2c","c:a,2b,2c;0,1/2,0","d:a,2b,2c" ] },{ "det": 8.0,"i": 11,"subgroup": 42,"subgroupHM": "Fmm2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,0","b:2a,2b,2c;0,1/2,0","c:2a,2b,2c;1/2,0,0","d:2a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_26.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_26.json new file mode 100755 index 000000000000..60ea99c3cf51 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_26.json @@ -0,0 +1 @@ +{ "HM": "Pmc21","created": "Tue Apr 09 11:03:51 CDT 2024","nSettings": 22,"nSubgroups": 8,"sg": 26,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b" ] },{ "det": 1.0,"i": 3,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c","c:2a,b,c;1/2,0,0","d:2a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 6,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,a,c;0,1/2,0","b:-2b,a,c" ] },{ "det": 2.0,"i": 7,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c","b:2a,b,c;1/2,0,0" ] },{ "det": 4.0,"i": 8,"subgroup": 36,"subgroupHM": "Cmc21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;1/2,1/2,0","b:2a,2b,c;0,1/2,0","c:2a,2b,c;1/2,0,0","d:2a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_27.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_27.json new file mode 100755 index 000000000000..ca0c89742031 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_27.json @@ -0,0 +1 @@ +{ "HM": "Pcc2","created": "Tue Apr 09 11:03:51 CDT 2024","nSettings": 22,"nSubgroups": 6,"sg": 27,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 2.0,"i": 3,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c","c:2a,b,c;1/2,0,0","d:2a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 5,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c","c:-b,2a,c;1/2,0,0","d:-b,2a,c" ] },{ "det": 4.0,"i": 6,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;1/2,1/2,0","b:2a,2b,c;0,1/2,0","c:2a,2b,c;1/2,0,0","d:2a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_28.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_28.json new file mode 100755 index 000000000000..19a8adbfd5fb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_28.json @@ -0,0 +1 @@ +{ "HM": "Pma2","created": "Tue Apr 09 11:03:51 CDT 2024","nSettings": 22,"nSubgroups": 11,"sg": 28,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;1/4,0,0" ] },{ "det": 1.0,"i": 3,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-c,b,a" ] },{ "det": 2.0,"i": 4,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c","b:a,2b,c;0,1/2,0","c:a,2b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 6,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 7,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a,2c" ] },{ "det": 2.0,"i": 8,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;1/4,0,0" ] },{ "det": 2.0,"i": 9,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 4.0,"i": 10,"subgroup": 40,"subgroupHM": "Ama2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,2c;0,1/2,0","b:a,2b,2c" ] },{ "det": 4.0,"i": 11,"subgroup": 41,"subgroupHM": "Aea2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,2c;0,1/2,0","b:a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_29.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_29.json new file mode 100755 index 000000000000..82c8b2e11917 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_29.json @@ -0,0 +1 @@ +{ "HM": "Pca21","created": "Tue Apr 09 11:03:52 CDT 2024","nSettings": 14,"nSubgroups": 5,"sg": 29,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c;1/4,0,0","b:-a-c,b,a" ] },{ "det": 2.0,"i": 3,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 5,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_3.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_3.json new file mode 100755 index 000000000000..0d260658b9e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_3.json @@ -0,0 +1 @@ +{ "HM": "P2","created": "Tue Apr 09 11:03:43 CDT 2024","nSettings": 28,"nSubgroups": 5,"sg": 3,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-c,b,2c;0,0,1/2","b:a-c,b,2c","c:2a,b,c;1/2,0,0","d:2a,b,c","e:a,b,2c;0,0,1/2","f:a,b,2c","g:a,2b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,c","a:3a,b,c;1,0,0","a:3a,b,c;2,0,0","b:a-2c,b,3c","b:a-2c,b,3c;0,0,1","b:a-2c,b,3c;0,0,2","c:a-c,b,3c","c:a-c,b,3c;0,0,1","c:a-c,b,3c;0,0,2","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c" ] },{ "det": 4.0,"i": 5,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,-a+c;1/2,0,0","b:2a,2b,-a+c","c:2c,2b,-a-2c;0,0,1/2","d:2c,2b,-a-2c","e:2a,2b,c;1/2,0,0","f:2a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_30.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_30.json new file mode 100755 index 000000000000..cde9af03bdd5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_30.json @@ -0,0 +1 @@ +{ "HM": "Pnc2","created": "Tue Apr 09 11:03:52 CDT 2024","nSettings": 14,"nSubgroups": 5,"sg": 30,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,a,-b-c","b:a,b,c;0,1/4,0" ] },{ "det": 2.0,"i": 3,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 5,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_31.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_31.json new file mode 100755 index 000000000000..643e381a0117 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_31.json @@ -0,0 +1 @@ +{ "HM": "Pmn21","created": "Tue Apr 09 11:03:52 CDT 2024","nSettings": 14,"nSubgroups": 6,"sg": 31,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;1/4,0,0" ] },{ "det": 1.0,"i": 2,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b" ] },{ "det": 1.0,"i": 3,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a-c" ] },{ "det": 2.0,"i": 4,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 6,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,a,c;1/4,1/2,0","b:-2b,a,c;1/4,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_32.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_32.json new file mode 100755 index 000000000000..ba3c483282f5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_32.json @@ -0,0 +1 @@ +{ "HM": "Pba2","created": "Tue Apr 09 11:03:53 CDT 2024","nSettings": 14,"nSubgroups": 6,"sg": 32,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;1/4,0,0","b:-a-c,b,a;0,1/4,0" ] },{ "det": 2.0,"i": 3,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 4,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 5,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a,2c","b:a,b,2c" ] },{ "det": 2.0,"i": 6,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_33.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_33.json new file mode 100755 index 000000000000..b62a15ba4c5c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_33.json @@ -0,0 +1 @@ +{ "HM": "Pna21","created": "Tue Apr 09 11:03:53 CDT 2024","nSettings": 10,"nSubgroups": 3,"sg": 33,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,a,-b-c;1/4,0,0","b:-a-c,b,a;0,1/4,0" ] },{ "det": 3.0,"i": 3,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_34.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_34.json new file mode 100755 index 000000000000..f955d4cc2670 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_34.json @@ -0,0 +1 @@ +{ "HM": "Pnn2","created": "Tue Apr 09 11:03:53 CDT 2024","nSettings": 14,"nSubgroups": 4,"sg": 34,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,a,-b-c;1/4,0,0","b:c,b,-a-c;0,1/4,0" ] },{ "det": 3.0,"i": 3,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 8.0,"i": 4,"subgroup": 43,"subgroupHM": "Fdd2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,0","b:2a,2b,2c;0,1/2,0","c:2a,2b,2c;1/2,0,0","d:2a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_35.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_35.json new file mode 100755 index 000000000000..f47b03f64a4a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_35.json @@ -0,0 +1 @@ +{ "HM": "Cmm2","created": "Tue Apr 09 11:03:53 CDT 2024","nSettings": 22,"nSubgroups": 12,"sg": 35,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a+1/2b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0","b:-b,a,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 6,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 3.0,"i": 7,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 8,"subgroup": 36,"subgroupHM": "Cmc21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a,2c","b:a,b,2c" ] },{ "det": 2.0,"i": 9,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 10,"subgroup": 44,"subgroupHM": "Imm2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 11,"subgroup": 45,"subgroupHM": "Iba2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 12,"subgroup": 46,"subgroupHM": "Ima2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,a,2c;1/4,1/4,0","b:a,b,2c;1/4,1/4,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_36.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_36.json new file mode 100755 index 000000000000..edcb8f2897b7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_36.json @@ -0,0 +1 @@ +{ "HM": "Cmc21","created": "Tue Apr 09 11:03:54 CDT 2024","nSettings": 14,"nSubgroups": 8,"sg": 36,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a+1/2b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c" ] },{ "det": 1.0,"i": 3,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 7,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c" ] },{ "det": 3.0,"i": 8,"subgroup": 36,"subgroupHM": "Cmc21","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_37.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_37.json new file mode 100755 index 000000000000..3b6a426c267a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_37.json @@ -0,0 +1 @@ +{ "HM": "Ccc2","created": "Tue Apr 09 11:03:54 CDT 2024","nSettings": 14,"nSubgroups": 6,"sg": 37,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a+1/2b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,0","b:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_38.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_38.json new file mode 100755 index 000000000000..935646557174 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_38.json @@ -0,0 +1 @@ +{ "HM": "Amm2","created": "Tue Apr 09 11:03:55 CDT 2024","nSettings": 22,"nSubgroups": 12,"sg": 38,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 0.5,"i": 2,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2b+1/2c,a,1/2b-1/2c" ] },{ "det": 1.0,"i": 3,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a-c" ] },{ "det": 1.0,"i": 4,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c" ] },{ "det": 2.0,"i": 8,"subgroup": 38,"subgroupHM": "Amm2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 3.0,"i": 9,"subgroup": 38,"subgroupHM": "Amm2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 10,"subgroup": 40,"subgroupHM": "Ama2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 2.0,"i": 11,"subgroup": 44,"subgroupHM": "Imm2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 2.0,"i": 12,"subgroup": 46,"subgroupHM": "Ima2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_39.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_39.json new file mode 100755 index 000000000000..b5794c665678 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_39.json @@ -0,0 +1 @@ +{ "HM": "Aem2","created": "Tue Apr 09 11:03:55 CDT 2024","nSettings": 22,"nSubgroups": 12,"sg": 39,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 0.5,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-1/2b+1/2c,a,b" ] },{ "det": 1.0,"i": 3,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a-c;0,1/4,0" ] },{ "det": 1.0,"i": 4,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;0,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c" ] },{ "det": 1.0,"i": 7,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;0,1/4,0" ] },{ "det": 2.0,"i": 8,"subgroup": 39,"subgroupHM": "Aem2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 3.0,"i": 9,"subgroup": 39,"subgroupHM": "Aem2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] },{ "det": 2.0,"i": 10,"subgroup": 41,"subgroupHM": "Aea2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 2.0,"i": 11,"subgroup": 45,"subgroupHM": "Iba2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 2.0,"i": 12,"subgroup": 46,"subgroupHM": "Ima2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-b,2a,c;1/2,0,0","b:-b,2a,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_4.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_4.json new file mode 100755 index 000000000000..f44a384c6274 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_4.json @@ -0,0 +1 @@ +{ "HM": "P21","created": "Tue Apr 09 11:03:44 CDT 2024","nSettings": 20,"nSubgroups": 3,"sg": 4,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-c,b,2c;0,0,1/2","b:a-c,b,2c","c:2a,b,c;1/2,0,0","d:2a,b,c","e:a,b,2c;0,0,1/2","f:a,b,2c" ] },{ "det": 3.0,"i": 3,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,c","a:3a,b,c;1,0,0","a:3a,b,c;2,0,0","b:a-2c,b,3c","b:a-2c,b,3c;0,0,1","b:a-2c,b,3c;0,0,2","c:a-c,b,3c","c:a-c,b,3c;0,0,1","c:a-c,b,3c;0,0,2","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_40.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_40.json new file mode 100755 index 000000000000..266368d1e2e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_40.json @@ -0,0 +1 @@ +{ "HM": "Ama2","created": "Tue Apr 09 11:03:56 CDT 2024","nSettings": 14,"nSubgroups": 8,"sg": 40,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 0.5,"i": 2,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2b+1/2c,a,1/2b-1/2c;1/4,0,0" ] },{ "det": 1.0,"i": 3,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a" ] },{ "det": 1.0,"i": 4,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 7,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 8,"subgroup": 40,"subgroupHM": "Ama2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_41.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_41.json new file mode 100755 index 000000000000..61623a4c0061 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_41.json @@ -0,0 +1 @@ +{ "HM": "Aea2","created": "Tue Apr 09 11:03:56 CDT 2024","nSettings": 14,"nSubgroups": 8,"sg": 41,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 0.5,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-1/2b+1/2c,a,b;1/4,0,0" ] },{ "det": 1.0,"i": 3,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,1/4,0" ] },{ "det": 1.0,"i": 4,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c" ] },{ "det": 1.0,"i": 6,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;0,1/4,0" ] },{ "det": 3.0,"i": 8,"subgroup": 41,"subgroupHM": "Aea2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_42.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_42.json new file mode 100755 index 000000000000..e4419f52a1cb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_42.json @@ -0,0 +1 @@ +{ "HM": "Fmm2","created": "Tue Apr 09 11:03:56 CDT 2024","nSettings": 22,"nSubgroups": 10,"sg": 42,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,1/2a-1/2b" ] },{ "det": 0.5,"i": 2,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,1/2b-1/2c","b:a,b,-1/2a+1/2c" ] },{ "det": 1.0,"i": 3,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 36,"subgroupHM": "Cmc21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/4,0","b:-b,a,c;1/4,0,0" ] },{ "det": 1.0,"i": 5,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 38,"subgroupHM": "Amm2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 39,"subgroupHM": "Aem2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0","b:-b,a,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 8,"subgroup": 40,"subgroupHM": "Ama2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,0","b:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 9,"subgroup": 41,"subgroupHM": "Aea2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 3.0,"i": 10,"subgroup": 42,"subgroupHM": "Fmm2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_43.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_43.json new file mode 100755 index 000000000000..352811268492 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_43.json @@ -0,0 +1 @@ +{ "HM": "Fdd2","created": "Tue Apr 09 11:03:57 CDT 2024","nSettings": 10,"nSubgroups": 3,"sg": 43,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,1/2a-1/2b" ] },{ "det": 0.5,"i": 2,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,1/2b+1/2c;1/8,1/2,1/2","b:-c,b,1/2a+1/2c;1/2,1/8,1/2" ] },{ "det": 3.0,"i": 3,"subgroup": 43,"subgroupHM": "Fdd2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c;1/4,1/4,0","a:a,3b,c;1/4,5/4,0","a:a,3b,c;1/4,9/4,0","b:3a,b,c;1/4,1/4,0","b:3a,b,c;5/4,1/4,0","b:3a,b,c;9/4,1/4,0","c:a,b,3c;1/4,1/4,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_44.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_44.json new file mode 100755 index 000000000000..f750a7ba2646 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_44.json @@ -0,0 +1 @@ +{ "HM": "Imm2","created": "Tue Apr 09 11:03:57 CDT 2024","nSettings": 14,"nSubgroups": 6,"sg": 44,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b-c,a,c","b:-a-c,b,a" ] },{ "det": 1.0,"i": 3,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/4,0","b:-b,a,c;1/4,0,0" ] },{ "det": 1.0,"i": 5,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 44,"subgroupHM": "Imm2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_45.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_45.json new file mode 100755 index 000000000000..fcaa45b42f7e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_45.json @@ -0,0 +1 @@ +{ "HM": "Iba2","created": "Tue Apr 09 11:03:57 CDT 2024","nSettings": 14,"nSubgroups": 6,"sg": 45,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b-c,a,c","b:a-c,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,0","b:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 45,"subgroupHM": "Iba2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_46.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_46.json new file mode 100755 index 000000000000..1ce10e379bb4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_46.json @@ -0,0 +1 @@ +{ "HM": "Ima2","created": "Tue Apr 09 11:03:58 CDT 2024","nSettings": 14,"nSubgroups": 8,"sg": 46,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b-c,a,c;1/4,0,0" ] },{ "det": 1.0,"i": 3,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-c,b,a" ] },{ "det": 1.0,"i": 4,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 3.0,"i": 8,"subgroup": 46,"subgroupHM": "Ima2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","b:3a,b,c;1,0,0","b:3a,b,c;2,0,0","c:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_47.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_47.json new file mode 100755 index 000000000000..7fa97a30479d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_47.json @@ -0,0 +1 @@ +{ "HM": "Pmmm","created": "Tue Apr 09 11:03:58 CDT 2024","nSettings": 72,"nSubgroups": 10,"sg": 47,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:a,b,c","c:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a","b:c,a,b","c:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 47,"subgroupHM": "Pmmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c","c:a,2b,c;0,1/2,0","d:a,2b,c","e:2a,b,c;1/2,0,0","f:2a,b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 47,"subgroupHM": "Pmmm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 6,"subgroup": 49,"subgroupHM": "Pccm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c","c:c,a,2b;0,1/2,0","d:c,a,2b","e:b,c,2a;1/2,0,0","f:b,c,2a" ] },{ "det": 2.0,"i": 7,"subgroup": 51,"subgroupHM": "Pmma","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2c,b,-a;0,0,1/2","b:2c,b,-a","c:-2b,a,c;0,1/2,0","d:-2b,a,c","e:2b,c,a;0,1/2,0","f:2b,c,a","g:2a,-c,b;1/2,0,0","h:2a,-c,b","i:2c,a,b;0,0,1/2","j:2c,a,b","k:2a,b,c;1/2,0,0","l:2a,b,c" ] },{ "det": 4.0,"i": 8,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;1/2,0,0","b:2a,2b,c","c:2c,2a,b;0,0,1/2","d:2c,2a,b;1/2,0,1/2","e:2c,2a,b;1/2,0,0","f:2c,2a,b","g:2b,2c,a;0,1/2,0","h:2b,2c,a;0,1/2,1/2","i:2a,2b,c;0,1/2,0","j:2a,2b,c;1/2,1/2,0","k:2b,2c,a;0,0,1/2","l:2b,2c,a" ] },{ "det": 4.0,"i": 9,"subgroup": 67,"subgroupHM": "Cmme","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;0,1/2,0","b:2a,2b,c;1/2,1/2,0","c:2c,2a,b;0,0,1/2","d:2c,2a,b;1/2,0,1/2","e:2c,2a,b;1/2,0,0","f:2c,2a,b","g:2b,2c,a;0,1/2,0","h:2b,2c,a;0,1/2,1/2","i:2a,2b,c;1/2,0,0","j:2a,2b,c","k:2b,2c,a;0,0,1/2","l:2b,2c,a" ] },{ "det": 8.0,"i": 10,"subgroup": 69,"subgroupHM": "Fmmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c;0,1/2,1/2","c:2a,2b,2c;0,1/2,0","d:2a,2b,2c;1/2,1/2,0","e:2a,2b,2c;0,0,1/2","f:2a,2b,2c;1/2,0,1/2","g:2a,2b,2c;1/2,0,0","h:2a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_48.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_48.json new file mode 100755 index 000000000000..12a638f8eb05 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_48.json @@ -0,0 +1 @@ +{ "HM": "Pnnn","created": "Tue Apr 09 11:03:58 CDT 2024","nSettings": 24,"nSubgroups": 5,"sg": 48,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,b+c","b:c,b,-a-c","c:a,c,-a-b" ] },{ "det": 1.0,"i": 2,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;1/4,1/4,1/4","b:c,a,b;1/4,1/4,1/4","c:a,b,c;1/4,1/4,1/4" ] },{ "det": 3.0,"i": 4,"subgroup": 48,"subgroupHM": "Pnnn","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 8.0,"i": 5,"subgroup": 70,"subgroupHM": "Fddd","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,2c;1/2,1/2,1/2","b:2a,2b,2c;0,1/2,1/2","c:2a,2b,2c;1/2,0,1/2","d:2a,2b,2c;1/2,1/2,0","e:2a,2b,2c;0,1/2,0","f:2a,2b,2c;1/2,0,0","g:2a,2b,2c;0,0,1/2","h:2a,2b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_49.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_49.json new file mode 100755 index 000000000000..9287ccfeca73 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_49.json @@ -0,0 +1 @@ +{ "HM": "Pccm","created": "Tue Apr 09 11:03:59 CDT 2024","nSettings": 40,"nSubgroups": 12,"sg": 49,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,0,1/4","b:c,a,b;0,0,1/4" ] },{ "det": 2.0,"i": 6,"subgroup": 49,"subgroupHM": "Pccm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c","c:2a,b,c;1/2,0,0","d:2a,b,c" ] },{ "det": 3.0,"i": 7,"subgroup": 49,"subgroupHM": "Pccm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 8,"subgroup": 50,"subgroupHM": "Pban","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2b,c,a;0,1/2,0","b:2b,c,a","c:c,2a,b;1/2,0,0","d:c,2a,b" ] },{ "det": 2.0,"i": 9,"subgroup": 53,"subgroupHM": "Pmna","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:c,a,2b;0,1/2,0","b:c,a,2b","c:c,b,-2a;1/2,0,0","d:c,b,-2a" ] },{ "det": 2.0,"i": 10,"subgroup": 54,"subgroupHM": "Pcca","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:-2b,a,c;0,1/2,0","b:-2b,a,c","c:2a,b,c;1/2,0,0","d:2a,b,c" ] },{ "det": 4.0,"i": 11,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;0,1/2,0","b:2a,2b,c;1/2,1/2,0","c:2a,2b,c;1/2,0,0","d:2a,2b,c" ] },{ "det": 4.0,"i": 12,"subgroup": 68,"subgroupHM": "Ccce","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;1/2,0,0","b:2a,2b,c;0,1/2,0","c:2a,2b,c;1/2,1/2,0","d:2a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_5.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_5.json new file mode 100755 index 000000000000..821a9fb50dc0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_5.json @@ -0,0 +1 @@ +{ "HM": "C2","created": "Tue Apr 09 11:03:44 CDT 2024","nSettings": 20,"nSubgroups": 5,"sg": 5,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,0,0" ] },{ "det": 2.0,"i": 4,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-2c,b,2c;0,0,1/2","b:a-2c,b,2c","c:a,b,2c;0,0,1/2","d:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:3a,b,c","a:3a,b,c;1,0,0","a:3a,b,c;2,0,0","b:a-4c,b,3c","b:a-4c,b,3c;0,0,1","b:a-4c,b,3c;0,0,2","c:a-2c,b,3c","c:a-2c,b,3c;0,0,1","c:a-2c,b,3c;0,0,2","d:a,b,3c","d:a,b,3c;0,0,1","d:a,b,3c;0,0,2","e:a,3b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_50.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_50.json new file mode 100755 index 000000000000..55947cb5ea40 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_50.json @@ -0,0 +1 @@ +{ "HM": "Pban","created": "Tue Apr 09 11:03:59 CDT 2024","nSettings": 24,"nSubgroups": 8,"sg": 50,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:-a-c,b,a","c:a,c,-a-b" ] },{ "det": 1.0,"i": 2,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 3,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;1/4,1/4,0","b:c,a,b;1/4,1/4,0" ] },{ "det": 1.0,"i": 4,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 2.0,"i": 5,"subgroup": 48,"subgroupHM": "Pnnn","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 6,"subgroup": 50,"subgroupHM": "Pban","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 7,"subgroup": 50,"subgroupHM": "Pban","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 8,"subgroup": 52,"subgroupHM": "Pnna","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:b,2c,a;0,0,1/2","b:b,2c,a","c:a,-2c,b;0,0,1/2","d:a,-2c,b" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_51.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_51.json new file mode 100755 index 000000000000..aa767d29e1dc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_51.json @@ -0,0 +1 @@ +{ "HM": "Pmma","created": "Tue Apr 09 11:03:59 CDT 2024","nSettings": 40,"nSubgroups": 16,"sg": 51,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b" ] },{ "det": 1.0,"i": 3,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 4,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 5,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,0" ] },{ "det": 1.0,"i": 6,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 7,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,-c,b" ] },{ "det": 2.0,"i": 8,"subgroup": 51,"subgroupHM": "Pmma","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c","c:a,2b,c;0,1/2,0","d:a,2b,c" ] },{ "det": 3.0,"i": 9,"subgroup": 51,"subgroupHM": "Pmma","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 10,"subgroup": 53,"subgroupHM": "Pmna","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2b,c,a;0,1/2,0","b:2b,c,a" ] },{ "det": 2.0,"i": 11,"subgroup": 54,"subgroupHM": "Pcca","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 12,"subgroup": 55,"subgroupHM": "Pbam","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2c,a,b;0,0,1/2","b:2c,a,b" ] },{ "det": 2.0,"i": 13,"subgroup": 57,"subgroupHM": "Pbcm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:b,2c,a;0,0,1/2","b:b,2c,a","c:c,a,2b;0,1/2,0","d:c,a,2b" ] },{ "det": 2.0,"i": 14,"subgroup": 59,"subgroupHM": "Pmmn","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 4.0,"i": 15,"subgroup": 63,"subgroupHM": "Cmcm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2b,2c,a;0,1/2,0","b:2b,2c,a;0,1/2,1/2","c:2b,2c,a;0,0,1/2","d:2b,2c,a" ] },{ "det": 4.0,"i": 16,"subgroup": 64,"subgroupHM": "Cmce","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2b,2c,a;0,1/2,0","b:2b,2c,a;0,1/2,1/2","c:2b,2c,a;0,0,1/2","d:2b,2c,a" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_52.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_52.json new file mode 100755 index 000000000000..51d6cbdf5958 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_52.json @@ -0,0 +1 @@ +{ "HM": "Pnna","created": "Tue Apr 09 11:04:00 CDT 2024","nSettings": 16,"nSubgroups": 7,"sg": 52,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,b+c","b:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a-c" ] },{ "det": 1.0,"i": 3,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;1/4,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;0,1/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,-c,b;1/4,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,0" ] },{ "det": 3.0,"i": 7,"subgroup": 52,"subgroupHM": "Pnna","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_53.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_53.json new file mode 100755 index 000000000000..03178f402a02 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_53.json @@ -0,0 +1 @@ +{ "HM": "Pmna","created": "Tue Apr 09 11:04:00 CDT 2024","nSettings": 24,"nSubgroups": 12,"sg": 53,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b" ] },{ "det": 1.0,"i": 2,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a-c" ] },{ "det": 1.0,"i": 3,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 4,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,0" ] },{ "det": 1.0,"i": 5,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,-c,b;1/4,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 7,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 8,"subgroup": 52,"subgroupHM": "Pnna","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2b,c,a;0,1/2,0","b:2b,c,a" ] },{ "det": 2.0,"i": 9,"subgroup": 53,"subgroupHM": "Pmna","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 3.0,"i": 10,"subgroup": 53,"subgroupHM": "Pmna","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 11,"subgroup": 58,"subgroupHM": "Pnnm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2b,c,a;0,1/2,0","b:2b,c,a" ] },{ "det": 2.0,"i": 12,"subgroup": 60,"subgroupHM": "Pbcn","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:c,a,2b;0,1/2,0","b:c,a,2b" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_54.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_54.json new file mode 100755 index 000000000000..b03e97b3a14c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_54.json @@ -0,0 +1 @@ +{ "HM": "Pcca","created": "Tue Apr 09 11:04:01 CDT 2024","nSettings": 24,"nSubgroups": 11,"sg": 54,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c","b:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c" ] },{ "det": 1.0,"i": 3,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,0" ] },{ "det": 1.0,"i": 5,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,-c,b;0,0,1/4" ] },{ "det": 2.0,"i": 7,"subgroup": 52,"subgroupHM": "Pnna","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:c,a,2b;0,1/2,0","b:c,a,2b" ] },{ "det": 2.0,"i": 8,"subgroup": 54,"subgroupHM": "Pcca","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 3.0,"i": 9,"subgroup": 54,"subgroupHM": "Pcca","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 10,"subgroup": 56,"subgroupHM": "Pccn","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,2b,c;0,1/2,0","b:a,2b,c" ] },{ "det": 2.0,"i": 11,"subgroup": 60,"subgroupHM": "Pbcn","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2b,c,a;0,1/2,0","b:2b,c,a" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_55.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_55.json new file mode 100755 index 000000000000..40943ed1c28d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_55.json @@ -0,0 +1 @@ +{ "HM": "Pbam","created": "Tue Apr 09 11:04:01 CDT 2024","nSettings": 24,"nSubgroups": 9,"sg": 55,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:-a-c,b,a" ] },{ "det": 1.0,"i": 3,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,1/4,0","b:c,a,b;1/4,0,0" ] },{ "det": 1.0,"i": 5,"subgroup": 32,"subgroupHM": "Pba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 6,"subgroup": 55,"subgroupHM": "Pbam","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 7,"subgroup": 55,"subgroupHM": "Pbam","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 8,"subgroup": 58,"subgroupHM": "Pnnm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 9,"subgroup": 62,"subgroupHM": "Pnma","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:b,2c,a;0,0,1/2","b:b,2c,a","c:a,-2c,b;0,0,1/2","d:a,-2c,b" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_56.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_56.json new file mode 100755 index 000000000000..68bab0545e80 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_56.json @@ -0,0 +1 @@ +{ "HM": "Pccn","created": "Tue Apr 09 11:04:02 CDT 2024","nSettings": 16,"nSubgroups": 6,"sg": 56,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,c,-a-b" ] },{ "det": 1.0,"i": 2,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 27,"subgroupHM": "Pcc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,0,1/4","b:c,a,b;0,0,1/4" ] },{ "det": 3.0,"i": 6,"subgroup": 56,"subgroupHM": "Pccn","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_57.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_57.json new file mode 100755 index 000000000000..22d00bd7905f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_57.json @@ -0,0 +1 @@ +{ "HM": "Pbcm","created": "Tue Apr 09 11:04:02 CDT 2024","nSettings": 24,"nSubgroups": 12,"sg": 57,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b" ] },{ "det": 1.0,"i": 3,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;0,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;0,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 28,"subgroupHM": "Pma2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,1/4,0" ] },{ "det": 1.0,"i": 7,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c" ] },{ "det": 2.0,"i": 8,"subgroup": 57,"subgroupHM": "Pbcm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 3.0,"i": 9,"subgroup": 57,"subgroupHM": "Pbcm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 10,"subgroup": 60,"subgroupHM": "Pbcn","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:c,2a,b;1/2,0,0","b:c,2a,b" ] },{ "det": 2.0,"i": 11,"subgroup": 61,"subgroupHM": "Pbca","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,c;1/2,0,0","b:2a,b,c" ] },{ "det": 2.0,"i": 12,"subgroup": 62,"subgroupHM": "Pnma","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:b,c,2a;1/2,0,0","b:b,c,2a" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_58.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_58.json new file mode 100755 index 000000000000..f4ccf1aa302b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_58.json @@ -0,0 +1 @@ +{ "HM": "Pnnm","created": "Tue Apr 09 11:04:03 CDT 2024","nSettings": 16,"nSubgroups": 6,"sg": 58,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,b+c","b:c,b,-a-c" ] },{ "det": 1.0,"i": 3,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-c,b,a;0,1/4,0","b:c,a,b;1/4,0,0" ] },{ "det": 1.0,"i": 5,"subgroup": 34,"subgroupHM": "Pnn2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 58,"subgroupHM": "Pnnm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_59.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_59.json new file mode 100755 index 000000000000..a394e833cf54 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_59.json @@ -0,0 +1 @@ +{ "HM": "Pmmn","created": "Tue Apr 09 11:04:03 CDT 2024","nSettings": 24,"nSubgroups": 9,"sg": 59,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,c,-a-b" ] },{ "det": 1.0,"i": 3,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 4,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;1/4,1/4,0","b:a,-c,b;1/4,1/4,0" ] },{ "det": 2.0,"i": 6,"subgroup": 56,"subgroupHM": "Pccn","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 7,"subgroup": 59,"subgroupHM": "Pmmn","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 8,"subgroup": 59,"subgroupHM": "Pmmn","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 9,"subgroup": 62,"subgroupHM": "Pnma","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2c,a,b;0,0,1/2","b:2c,a,b","c:2c,b,-a;0,0,1/2","d:2c,b,-a" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_6.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_6.json new file mode 100755 index 000000000000..0a1557e2ba47 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_6.json @@ -0,0 +1 @@ +{ "HM": "Pm","created": "Tue Apr 09 11:03:44 CDT 2024","nSettings": 22,"nSubgroups": 5,"sg": 6,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-c,b,2c","b:2a,b,c","c:a,b,2c","d:a,2b,c;0,1/2,0","e:a,2b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:a-c,b,3c","c:a,b,3c","d:3a,b,c","e:a-2c,b,3c" ] },{ "det": 2.0,"i": 4,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-c,b,2c","b:-2a-c,b,2a","c:a,b,2c" ] },{ "det": 4.0,"i": 5,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,-a+c;0,1/2,0","b:2a,2b,-a+c","c:2c,2b,-a-2c;0,1/2,0","d:2c,2b,-a-2c","e:2a,2b,c;0,1/2,0","f:2a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_60.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_60.json new file mode 100755 index 000000000000..e451736fe786 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_60.json @@ -0,0 +1 @@ +{ "HM": "Pbcn","created": "Tue Apr 09 11:04:03 CDT 2024","nSettings": 16,"nSubgroups": 7,"sg": 60,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:a,c,-a-b" ] },{ "det": 1.0,"i": 3,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;0,1/4,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 30,"subgroupHM": "Pnc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;0,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,1/4,0" ] },{ "det": 3.0,"i": 7,"subgroup": 60,"subgroupHM": "Pbcn","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_61.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_61.json new file mode 100755 index 000000000000..9eab235b7f9d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_61.json @@ -0,0 +1 @@ +{ "HM": "Pbca","created": "Tue Apr 09 11:04:04 CDT 2024","nSettings": 16,"nSubgroups": 4,"sg": 61,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b","b:a,b,c","c:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 29,"subgroupHM": "Pca21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,1/4,0","b:a,-c,b;0,0,1/4","c:-b,a,c;1/4,0,0" ] },{ "det": 3.0,"i": 4,"subgroup": 61,"subgroupHM": "Pbca","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_62.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_62.json new file mode 100755 index 000000000000..8ca3454f56a6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_62.json @@ -0,0 +1 @@ +{ "HM": "Pnma","created": "Tue Apr 09 11:04:04 CDT 2024","nSettings": 16,"nSubgroups": 7,"sg": 62,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,b+c","b:b,c,a" ] },{ "det": 1.0,"i": 3,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 26,"subgroupHM": "Pmc21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;0,1/4,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 31,"subgroupHM": "Pmn21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 33,"subgroupHM": "Pna21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,-c,b" ] },{ "det": 3.0,"i": 7,"subgroup": 62,"subgroupHM": "Pnma","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_63.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_63.json new file mode 100755 index 000000000000..cde11870159a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_63.json @@ -0,0 +1 @@ +{ "HM": "Cmcm","created": "Tue Apr 09 11:04:04 CDT 2024","nSettings": 24,"nSubgroups": 15,"sg": 63,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 11,"subgroupHM": "P21/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a+1/2b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c" ] },{ "det": 1.0,"i": 3,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 36,"subgroupHM": "Cmc21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 6,"subgroup": 38,"subgroupHM": "Amm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;0,0,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 40,"subgroupHM": "Ama2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a" ] },{ "det": 1.0,"i": 8,"subgroup": 51,"subgroupHM": "Pmma","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b" ] },{ "det": 1.0,"i": 9,"subgroup": 52,"subgroupHM": "Pnna","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,1/4,0" ] },{ "det": 1.0,"i": 10,"subgroup": 57,"subgroupHM": "Pbcm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 11,"subgroup": 58,"subgroupHM": "Pnnm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 12,"subgroup": 59,"subgroupHM": "Pmmn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b;1/4,1/4,0" ] },{ "det": 1.0,"i": 13,"subgroup": 60,"subgroupHM": "Pbcn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 14,"subgroup": 62,"subgroupHM": "Pnma","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b;1/4,1/4,0","b:b,c,a" ] },{ "det": 3.0,"i": 15,"subgroup": 63,"subgroupHM": "Cmcm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_64.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_64.json new file mode 100755 index 000000000000..7bf1cc24e92c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_64.json @@ -0,0 +1 @@ +{ "HM": "Cmce","created": "Tue Apr 09 11:04:05 CDT 2024","nSettings": 24,"nSubgroups": 16,"sg": 64,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c" ] },{ "det": 0.5,"i": 2,"subgroup": 14,"subgroupHM": "P21/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,c,a" ] },{ "det": 1.0,"i": 3,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 4,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,0" ] },{ "det": 1.0,"i": 5,"subgroup": 36,"subgroupHM": "Cmc21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 39,"subgroupHM": "Aem2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,a,b;1/4,0,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 41,"subgroupHM": "Aea2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a" ] },{ "det": 1.0,"i": 8,"subgroup": 53,"subgroupHM": "Pmna","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 9,"subgroup": 54,"subgroupHM": "Pcca","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b;1/4,1/4,0" ] },{ "det": 1.0,"i": 10,"subgroup": 55,"subgroupHM": "Pbam","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 11,"subgroup": 56,"subgroupHM": "Pccn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b" ] },{ "det": 1.0,"i": 12,"subgroup": 57,"subgroupHM": "Pbcm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,1/4,0" ] },{ "det": 1.0,"i": 13,"subgroup": 60,"subgroupHM": "Pbcn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b;1/4,1/4,0" ] },{ "det": 1.0,"i": 14,"subgroup": 61,"subgroupHM": "Pbca","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 15,"subgroup": 62,"subgroupHM": "Pnma","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,0" ] },{ "det": 3.0,"i": 16,"subgroup": 64,"subgroupHM": "Cmce","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_65.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_65.json new file mode 100755 index 000000000000..50dd1296829a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_65.json @@ -0,0 +1 @@ +{ "HM": "Cmmm","created": "Tue Apr 09 11:04:06 CDT 2024","nSettings": 40,"nSubgroups": 18,"sg": 65,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a+1/2b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 38,"subgroupHM": "Amm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a","b:c,a,b" ] },{ "det": 1.0,"i": 6,"subgroup": 47,"subgroupHM": "Pmmm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 50,"subgroupHM": "Pban","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 8,"subgroup": 51,"subgroupHM": "Pmma","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,1/4,0","b:a,-c,b;1/4,1/4,0" ] },{ "det": 1.0,"i": 9,"subgroup": 53,"subgroupHM": "Pmna","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,-c,b","b:b,c,a" ] },{ "det": 1.0,"i": 10,"subgroup": 55,"subgroupHM": "Pbam","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 11,"subgroup": 59,"subgroupHM": "Pmmn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 2.0,"i": 12,"subgroup": 63,"subgroupHM": "Cmcm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c","c:-b,a,2c;0,0,1/2","d:-b,a,2c" ] },{ "det": 2.0,"i": 13,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 14,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 15,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 16,"subgroup": 71,"subgroupHM": "Immm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 17,"subgroup": 72,"subgroupHM": "Ibam","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 18,"subgroup": 74,"subgroupHM": "Imma","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,-2c,b;0,0,1/2","b:a,-2c,b","c:b,2c,a;0,0,1/2","d:b,2c,a" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_66.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_66.json new file mode 100755 index 000000000000..72abc11d1948 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_66.json @@ -0,0 +1 @@ +{ "HM": "Cccm","created": "Tue Apr 09 11:04:06 CDT 2024","nSettings": 24,"nSubgroups": 12,"sg": 66,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a+1/2b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 40,"subgroupHM": "Ama2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,0,1/4","b:c,a,b;0,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 48,"subgroupHM": "Pnnn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 7,"subgroup": 49,"subgroupHM": "Pccm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 8,"subgroup": 52,"subgroupHM": "Pnna","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,b,-a","b:c,a,b" ] },{ "det": 1.0,"i": 9,"subgroup": 53,"subgroupHM": "Pmna","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b;1/4,1/4,0","b:c,b,-a;1/4,1/4,0" ] },{ "det": 1.0,"i": 10,"subgroup": 56,"subgroupHM": "Pccn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 11,"subgroup": 58,"subgroupHM": "Pnnm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 12,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_67.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_67.json new file mode 100755 index 000000000000..30c87d4ef30e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_67.json @@ -0,0 +1 @@ +{ "HM": "Cmme","created": "Tue Apr 09 11:04:07 CDT 2024","nSettings": 40,"nSubgroups": 16,"sg": 67,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c","b:a,b,c;1/4,1/4,0" ] },{ "det": 0.5,"i": 2,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,c,a" ] },{ "det": 1.0,"i": 3,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,0" ] },{ "det": 1.0,"i": 4,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 39,"subgroupHM": "Aem2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a","b:c,a,b;1/4,0,0" ] },{ "det": 1.0,"i": 6,"subgroup": 49,"subgroupHM": "Pccm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b;1/4,1/4,0","b:b,c,a" ] },{ "det": 1.0,"i": 7,"subgroup": 51,"subgroupHM": "Pmma","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0","b:-b,a,c" ] },{ "det": 1.0,"i": 8,"subgroup": 54,"subgroupHM": "Pcca","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,-c,b","b:b,c,a;1/4,1/4,0" ] },{ "det": 1.0,"i": 9,"subgroup": 57,"subgroupHM": "Pbcm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,b,-a;1/4,1/4,0","b:c,a,b" ] },{ "det": 2.0,"i": 10,"subgroup": 64,"subgroupHM": "Cmce","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c","c:-b,a,2c;1/4,1/4,1/2","d:-b,a,2c;1/4,1/4,0" ] },{ "det": 2.0,"i": 11,"subgroup": 67,"subgroupHM": "Cmme","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 12,"subgroup": 67,"subgroupHM": "Cmme","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] },{ "det": 2.0,"i": 13,"subgroup": 68,"subgroupHM": "Ccce","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;1/4,1/4,1/2","b:a,b,2c;1/4,1/4,0" ] },{ "det": 2.0,"i": 14,"subgroup": 72,"subgroupHM": "Ibam","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:b,2c,a;0,0,1/2","b:b,2c,a","c:2c,a,b;1/4,1/4,0","d:2c,a,b;1/4,1/4,1/2" ] },{ "det": 2.0,"i": 15,"subgroup": 73,"subgroupHM": "Ibca","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 16,"subgroup": 74,"subgroupHM": "Imma","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_68.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_68.json new file mode 100755 index 000000000000..400ec515207d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_68.json @@ -0,0 +1 @@ +{ "HM": "Ccce","created": "Tue Apr 09 11:04:08 CDT 2024","nSettings": 24,"nSubgroups": 10,"sg": 68,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-1/2a+1/2b,c,a;1/4,1/4,0" ] },{ "det": 1.0,"i": 2,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,c;1/4,1/4,0","b:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 37,"subgroupHM": "Ccc2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,1/4" ] },{ "det": 1.0,"i": 5,"subgroup": 41,"subgroupHM": "Aea2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,1/4,1/4","b:c,a,b;0,1/4,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 50,"subgroupHM": "Pban","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:c,a,b;1/4,1/4,0","b:b,c,a" ] },{ "det": 1.0,"i": 7,"subgroup": 52,"subgroupHM": "Pnna","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","b:-b,a,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 8,"subgroup": 54,"subgroupHM": "Pcca","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,0","b:a,b,c" ] },{ "det": 1.0,"i": 9,"subgroup": 60,"subgroupHM": "Pbcn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,1/4,0","b:a,-c,b" ] },{ "det": 3.0,"i": 10,"subgroup": 68,"subgroupHM": "Ccce","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_69.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_69.json new file mode 100755 index 000000000000..53a8c09725cb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_69.json @@ -0,0 +1 @@ +{ "HM": "Fmmm","created": "Tue Apr 09 11:04:08 CDT 2024","nSettings": 40,"nSubgroups": 10,"sg": 69,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,1/2b+1/2c","b:a,b,-1/2a+1/2c","c:b,c,1/2a-1/2b" ] },{ "det": 1.0,"i": 2,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 42,"subgroupHM": "Fmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a","b:c,a,b","c:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 63,"subgroupHM": "Cmcm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,0,1/4","b:a,b,c;0,1/4,1/4","c:c,a,b;1/4,1/4,0","d:a,-c,b;0,1/4,1/4","e:b,c,a;1/4,0,1/4","f:c,b,-a;1/4,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 64,"subgroupHM": "Cmce","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","b:a,-c,b","c:-b,a,c","d:b,c,a","e:c,a,b","f:c,b,-a" ] },{ "det": 1.0,"i": 6,"subgroup": 65,"subgroupHM": "Cmmm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","b:c,a,b","c:b,c,a" ] },{ "det": 1.0,"i": 7,"subgroup": 66,"subgroupHM": "Cccm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;0,1/4,1/4","b:c,a,b;1/4,0,1/4","c:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 8,"subgroup": 67,"subgroupHM": "Cmme","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,0,1/4","b:c,a,b;1/4,1/4,0","c:a,b,c;0,1/4,1/4" ] },{ "det": 1.0,"i": 9,"subgroup": 68,"subgroupHM": "Ccce","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/4,1/4","b:c,a,b;1/4,1/4,0","c:c,b,-a;1/4,1/4,0" ] },{ "det": 3.0,"i": 10,"subgroup": 69,"subgroupHM": "Fmmm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_7.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_7.json new file mode 100755 index 000000000000..e8e4ec09f23f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_7.json @@ -0,0 +1 @@ +{ "HM": "Pc","created": "Tue Apr 09 11:03:44 CDT 2024","nSettings": 14,"nSubgroups": 4,"sg": 7,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,b,-2a+c","b:2a,b,c","c:a,2b,c;0,1/2,0","d:a,2b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,-2a+c","c:3a,b,c","d:a,b,3c","e:3a,b,-4a+c" ] },{ "det": 4.0,"i": 4,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:2a,2b,c;0,1/2,0","b:2a,2b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_70.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_70.json new file mode 100755 index 000000000000..f8283b6f8420 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_70.json @@ -0,0 +1 @@ +{ "HM": "Fddd","created": "Tue Apr 09 11:04:08 CDT 2024","nSettings": 16,"nSubgroups": 4,"sg": 70,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b,a,1/2b+1/2c","b:-c,b,1/2a+1/2c","c:b,c,1/2a-1/2b;0,1/4,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/8,1/8,1/8" ] },{ "det": 1.0,"i": 3,"subgroup": 43,"subgroupHM": "Fdd2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;0,3/8,3/8","b:c,a,b;3/8,0,3/8","c:a,b,c;3/8,3/8,0" ] },{ "det": 3.0,"i": 4,"subgroup": 70,"subgroupHM": "Fddd","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/4,1/4,0","a:a,b,3c;1/4,1/4,1","a:a,b,3c;1/4,1/4,2","b:a,3b,c;1/4,0,1/4","b:a,3b,c;1/4,1,1/4","b:a,3b,c;1/4,2,1/4","c:3a,b,c;0,1/4,1/4","c:3a,b,c;1,1/4,1/4","c:3a,b,c;2,1/4,1/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_71.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_71.json new file mode 100755 index 000000000000..a60ddcdb8887 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_71.json @@ -0,0 +1 @@ +{ "HM": "Immm","created": "Tue Apr 09 11:04:09 CDT 2024","nSettings": 24,"nSubgroups": 8,"sg": 71,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b+c,a,b","b:-a-c,b,a","c:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 23,"subgroupHM": "I222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 44,"subgroupHM": "Imm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a","b:c,a,b","c:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 47,"subgroupHM": "Pmmm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 48,"subgroupHM": "Pnnn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 58,"subgroupHM": "Pnnm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a","b:c,a,b","c:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 59,"subgroupHM": "Pmmn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:b,c,a;1/4,1/4,1/4","b:c,a,b;1/4,1/4,1/4","c:a,b,c;1/4,1/4,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 71,"subgroupHM": "Immm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_72.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_72.json new file mode 100755 index 000000000000..33caa107b446 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_72.json @@ -0,0 +1 @@ +{ "HM": "Ibam","created": "Tue Apr 09 11:04:09 CDT 2024","nSettings": 24,"nSubgroups": 12,"sg": 72,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b-c,a,c","b:a-c,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 23,"subgroupHM": "I222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 45,"subgroupHM": "Iba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 46,"subgroupHM": "Ima2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:c,b,-a;0,0,1/4","b:c,a,b;0,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 49,"subgroupHM": "Pccm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 7,"subgroup": 50,"subgroupHM": "Pban","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 8,"subgroup": 55,"subgroupHM": "Pbam","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 9,"subgroup": 56,"subgroupHM": "Pccn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 10,"subgroup": 57,"subgroupHM": "Pbcm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,1/4","b:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 11,"subgroup": 60,"subgroupHM": "Pbcn","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","b:-b,a,c" ] },{ "det": 3.0,"i": 12,"subgroup": 72,"subgroupHM": "Ibam","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_73.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_73.json new file mode 100755 index 000000000000..f6631b44f35a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_73.json @@ -0,0 +1 @@ +{ "HM": "Ibca","created": "Tue Apr 09 11:04:09 CDT 2024","nSettings": 24,"nSubgroups": 6,"sg": 73,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b-c,a,c","b:-a-c,b,a","c:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 24,"subgroupHM": "I212121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 45,"subgroupHM": "Iba2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a;0,0,1/4","b:c,a,b;1/4,0,0","c:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 4,"subgroup": 54,"subgroupHM": "Pcca","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4","b:b,c,a;1/4,1/4,1/4","c:c,a,b;1/4,1/4,1/4","d:a,-c,b","e:-b,a,c","f:c,b,-a" ] },{ "det": 1.0,"i": 5,"subgroup": 61,"subgroupHM": "Pbca","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,1/4","b:a,b,c" ] },{ "det": 3.0,"i": 6,"subgroup": 73,"subgroupHM": "Ibca","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_74.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_74.json new file mode 100755 index 000000000000..ba3fd6ebce8a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_74.json @@ -0,0 +1 @@ +{ "HM": "Imma","created": "Tue Apr 09 11:04:10 CDT 2024","nSettings": 24,"nSubgroups": 10,"sg": 74,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-b-c,a,c","b:-a-c,b,a;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 2,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 3,"subgroup": 24,"subgroupHM": "I212121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 1.0,"i": 4,"subgroup": 44,"subgroupHM": "Imm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,0" ] },{ "det": 1.0,"i": 5,"subgroup": 46,"subgroupHM": "Ima2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a","b:-a,c,b;1/4,0,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 51,"subgroupHM": "Pmma","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c","b:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 52,"subgroupHM": "Pnna","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c","b:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 8,"subgroup": 53,"subgroupHM": "Pmna","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c","b:-b,a,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 9,"subgroup": 62,"subgroupHM": "Pnma","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-b,a,c;1/4,1/4,1/4","b:a,b,c" ] },{ "det": 3.0,"i": 10,"subgroup": 74,"subgroupHM": "Imma","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2","b:a,3b,c","b:a,3b,c;0,1,0","b:a,3b,c;0,2,0","c:3a,b,c","c:3a,b,c;1,0,0","c:3a,b,c;2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_75.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_75.json new file mode 100755 index 000000000000..75bc090bea37 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_75.json @@ -0,0 +1 @@ +{ "HM": "P4","created": "Tue Apr 09 11:04:10 CDT 2024","nSettings": 8,"nSubgroups": 5,"sg": 75,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 2.0,"i": 2,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c","c:a,b,2c" ] },{ "det": 3.0,"i": 3,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 2.0,"i": 4,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 4.0,"i": 5,"subgroup": 79,"subgroupHM": "I4","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,0","b:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_76.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_76.json new file mode 100755 index 000000000000..bef886f85e33 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_76.json @@ -0,0 +1 @@ +{ "HM": "P41","created": "Tue Apr 09 11:04:10 CDT 2024","nSettings": 4,"nSubgroups": 3,"sg": 76,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 2.0,"i": 2,"subgroup": 76,"subgroupHM": "P41","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 78,"subgroupHM": "P43","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_77.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_77.json new file mode 100755 index 000000000000..6fbc1985beec --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_77.json @@ -0,0 +1 @@ +{ "HM": "P42","created": "Tue Apr 09 11:04:11 CDT 2024","nSettings": 8,"nSubgroups": 6,"sg": 77,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 2.0,"i": 2,"subgroup": 76,"subgroupHM": "P41","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 3,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 2.0,"i": 5,"subgroup": 78,"subgroupHM": "P43","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 4.0,"i": 6,"subgroup": 80,"subgroupHM": "I41","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,0,0","b:a-b,a+b,2c;0,1/2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_78.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_78.json new file mode 100755 index 000000000000..4fe43db7d777 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_78.json @@ -0,0 +1 @@ +{ "HM": "P43","created": "Tue Apr 09 11:04:11 CDT 2024","nSettings": 4,"nSubgroups": 3,"sg": 78,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 4,"subgroupHM": "P21","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 3.0,"i": 2,"subgroup": 76,"subgroupHM": "P41","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 2.0,"i": 3,"subgroup": 78,"subgroupHM": "P43","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_79.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_79.json new file mode 100755 index 000000000000..a0a7462bd4ac --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_79.json @@ -0,0 +1 @@ +{ "HM": "I4","created": "Tue Apr 09 11:04:11 CDT 2024","nSettings": 4,"nSubgroups": 4,"sg": 79,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/2,0,0" ] },{ "det": 3.0,"i": 4,"subgroup": 79,"subgroupHM": "I4","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_8.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_8.json new file mode 100755 index 000000000000..7d64b530f078 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_8.json @@ -0,0 +1 @@ +{ "HM": "Cm","created": "Tue Apr 09 11:03:45 CDT 2024","nSettings": 14,"nSubgroups": 6,"sg": 8,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 6,"subgroupHM": "Pm","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:-a-c,b,a;0,1/4,0" ] },{ "det": 2.0,"i": 4,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-2c,b,2c","b:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 8,"subgroupHM": "Cm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","c:a-4c,b,3c","d:a-2c,b,3c","e:a,b,3c" ] },{ "det": 2.0,"i": 6,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-2c,b,2c","b:a,b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_80.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_80.json new file mode 100755 index 000000000000..b26eee4780d1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_80.json @@ -0,0 +1 @@ +{ "HM": "I41","created": "Tue Apr 09 11:04:11 CDT 2024","nSettings": 4,"nSubgroups": 4,"sg": 80,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 76,"subgroupHM": "P41","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;3/4,1/4,0" ] },{ "det": 1.0,"i": 3,"subgroup": 78,"subgroupHM": "P43","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;3/4,3/4,0" ] },{ "det": 3.0,"i": 4,"subgroup": 80,"subgroupHM": "I41","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/2,0,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_81.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_81.json new file mode 100755 index 000000000000..b48fd4f8edf6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_81.json @@ -0,0 +1 @@ +{ "HM": "P-4","created": "Tue Apr 09 11:04:11 CDT 2024","nSettings": 10,"nSubgroups": 4,"sg": 81,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 3,"subgroupHM": "P2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 2.0,"i": 2,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c","c:a,b,2c;0,0,1/2","d:a,b,2c" ] },{ "det": 3.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 4,"subgroup": 82,"subgroupHM": "I-4","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;0,0,1/2","b:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_82.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_82.json new file mode 100755 index 000000000000..1e414b099fe7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_82.json @@ -0,0 +1 @@ +{ "HM": "I-4","created": "Tue Apr 09 11:04:12 CDT 2024","nSettings": 6,"nSubgroups": 3,"sg": 82,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 5,"subgroupHM": "C2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/2,0,1/4","b:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 82,"subgroupHM": "I-4","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_83.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_83.json new file mode 100755 index 000000000000..2a3adae8d50f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_83.json @@ -0,0 +1 @@ +{ "HM": "P4/m","created": "Tue Apr 09 11:04:12 CDT 2024","nSettings": 18,"nSubgroups": 8,"sg": 83,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 83,"subgroupHM": "P4/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c","c:a,b,2c;0,0,1/2","d:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 83,"subgroupHM": "P4/m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 84,"subgroupHM": "P42/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 7,"subgroup": 85,"subgroupHM": "P4/n","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,1/2,0","b:a-b,a+b,c;1/2,0,0" ] },{ "det": 4.0,"i": 8,"subgroup": 87,"subgroupHM": "I4/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,1/2","b:a-b,a+b,2c;1/2,1/2,0","c:a-b,a+b,2c;0,0,1/2","d:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_84.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_84.json new file mode 100755 index 000000000000..d17361a95267 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_84.json @@ -0,0 +1 @@ +{ "HM": "P42/m","created": "Tue Apr 09 11:04:12 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 84,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 10,"subgroupHM": "P2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:b,c,a" ] },{ "det": 1.0,"i": 2,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 2.0,"i": 4,"subgroup": 84,"subgroupHM": "P42/m","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 3.0,"i": 5,"subgroup": 84,"subgroupHM": "P42/m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 86,"subgroupHM": "P42/n","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,0,0","b:a-b,a+b,c;0,1/2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_85.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_85.json new file mode 100755 index 000000000000..10a456749001 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_85.json @@ -0,0 +1 @@ +{ "HM": "P4/n","created": "Tue Apr 09 11:04:12 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 85,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,c,-a-b;0,1/2,0" ] },{ "det": 1.0,"i": 2,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,3/4,0" ] },{ "det": 2.0,"i": 4,"subgroup": 85,"subgroupHM": "P4/n","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 85,"subgroupHM": "P4/n","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 86,"subgroupHM": "P42/n","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,1/2,1/2","b:a,b,2c;0,1/2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_86.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_86.json new file mode 100755 index 000000000000..f268fb094de1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_86.json @@ -0,0 +1 @@ +{ "HM": "P42/n","created": "Tue Apr 09 11:04:13 CDT 2024","nSettings": 10,"nSubgroups": 5,"sg": 86,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 13,"subgroupHM": "P2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,c,-a-b" ] },{ "det": 1.0,"i": 2,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;3/4,1/4,0" ] },{ "det": 1.0,"i": 3,"subgroup": 81,"subgroupHM": "P-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 3.0,"i": 4,"subgroup": 86,"subgroupHM": "P42/n","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 4.0,"i": 5,"subgroup": 88,"subgroupHM": "I41/a","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,1/2","b:a-b,a+b,2c;1/2,1/2,0","c:a-b,a+b,2c;0,0,1/2","d:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_87.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_87.json new file mode 100755 index 000000000000..68e7a86010a4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_87.json @@ -0,0 +1 @@ +{ "HM": "I4/m","created": "Tue Apr 09 11:04:13 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 87,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 12,"subgroupHM": "C2/m","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 79,"subgroupHM": "I4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 82,"subgroupHM": "I-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 83,"subgroupHM": "P4/m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 84,"subgroupHM": "P42/m","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 6,"subgroup": 85,"subgroupHM": "P4/n","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 1.0,"i": 7,"subgroup": 86,"subgroupHM": "P42/n","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 87,"subgroupHM": "I4/m","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_88.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_88.json new file mode 100755 index 000000000000..cd3f512a901c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_88.json @@ -0,0 +1 @@ +{ "HM": "I41/a","created": "Tue Apr 09 11:04:13 CDT 2024","nSettings": 6,"nSubgroups": 4,"sg": 88,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 15,"subgroupHM": "C2/c","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:-a-b,c,b" ] },{ "det": 1.0,"i": 2,"subgroup": 80,"subgroupHM": "I41","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/2,1/4,0" ] },{ "det": 1.0,"i": 3,"subgroup": 82,"subgroupHM": "I-4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,5/8" ] },{ "det": 3.0,"i": 4,"subgroup": 88,"subgroupHM": "I41/a","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/2,0,0","a:a,b,3c;1/2,0,1","a:a,b,3c;1/2,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_89.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_89.json new file mode 100755 index 000000000000..c63e3f4580c8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_89.json @@ -0,0 +1 @@ +{ "HM": "P422","created": "Tue Apr 09 11:04:14 CDT 2024","nSettings": 18,"nSubgroups": 8,"sg": 89,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 89,"subgroupHM": "P422","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c","c:a,b,2c;0,0,1/2","d:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 89,"subgroupHM": "P422","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 90,"subgroupHM": "P4212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c","b:a-b,a+b,c;1/2,1/2,0" ] },{ "det": 2.0,"i": 7,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 4.0,"i": 8,"subgroup": 97,"subgroupHM": "I422","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,1/2","b:a-b,a+b,2c;1/2,1/2,0","c:a-b,a+b,2c;0,0,1/2","d:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_9.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_9.json new file mode 100755 index 000000000000..bea28772fe26 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_9.json @@ -0,0 +1 @@ +{ "HM": "Cc","created": "Tue Apr 09 11:03:45 CDT 2024","nSettings": 10,"nSubgroups": 3,"sg": 9,"subgroups": [ { "det": 0.5,"i": 1,"subgroup": 1,"subgroupHM": "P1","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:1/2a-1/2b,1/2a+1/2b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 7,"subgroupHM": "Pc","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,-a+c;0,1/4,0","b:a,b,c" ] },{ "det": 3.0,"i": 3,"subgroup": 9,"subgroupHM": "Cc","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,3b,c","a:a,3b,c;0,1,0","a:a,3b,c;0,2,0","b:3a,b,c","c:a-4c,b,3c","d:a-2c,b,3c","e:a,b,3c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_90.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_90.json new file mode 100755 index 000000000000..6c221a06a9ef --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_90.json @@ -0,0 +1 @@ +{ "HM": "P4212","created": "Tue Apr 09 11:04:14 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 90,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 2.0,"i": 4,"subgroup": 90,"subgroupHM": "P4212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 90,"subgroupHM": "P4212","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 94,"subgroupHM": "P42212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c","b:a,b,2c;0,0,1/2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_91.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_91.json new file mode 100755 index 000000000000..44939235faf1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_91.json @@ -0,0 +1 @@ +{ "HM": "P4122","created": "Tue Apr 09 11:04:14 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 91,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 2.0,"i": 2,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,0,1/8" ] },{ "det": 1.0,"i": 3,"subgroup": 76,"subgroupHM": "P41","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 91,"subgroupHM": "P4122","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,3/8","b:a-b,a+b,c;0,0,3/8" ] },{ "det": 2.0,"i": 5,"subgroup": 92,"subgroupHM": "P41212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;0,0,1/4","b:a-b,a+b,c;1/2,1/2,1/4" ] },{ "det": 3.0,"i": 6,"subgroup": 95,"subgroupHM": "P4322","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_92.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_92.json new file mode 100755 index 000000000000..0226cc79ec11 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_92.json @@ -0,0 +1 @@ +{ "HM": "P41212","created": "Tue Apr 09 11:04:14 CDT 2024","nSettings": 6,"nSubgroups": 4,"sg": 92,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,3/8" ] },{ "det": 2.0,"i": 2,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 76,"subgroupHM": "P41","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 3.0,"i": 4,"subgroup": 96,"subgroupHM": "P43212","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_93.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_93.json new file mode 100755 index 000000000000..f8b4626f3c46 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_93.json @@ -0,0 +1 @@ +{ "HM": "P4222","created": "Tue Apr 09 11:04:15 CDT 2024","nSettings": 18,"nSubgroups": 9,"sg": 93,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 16,"subgroupHM": "P222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 91,"subgroupHM": "P4122","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 2.0,"i": 5,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,1/4","b:a-b,a+b,c;0,0,1/4" ] },{ "det": 3.0,"i": 6,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 7,"subgroup": 94,"subgroupHM": "P42212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 8,"subgroup": 95,"subgroupHM": "P4322","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 4.0,"i": 9,"subgroup": 98,"subgroupHM": "I4122","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,0,1/2","b:a-b,a+b,2c;1/2,0,0","c:a-b,a+b,2c;0,1/2,1/2","d:a-b,a+b,2c;0,1/2,0" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_94.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_94.json new file mode 100755 index 000000000000..18d500371cee --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_94.json @@ -0,0 +1 @@ +{ "HM": "P42212","created": "Tue Apr 09 11:04:15 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 94,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 18,"subgroupHM": "P21212","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 2.0,"i": 2,"subgroup": 21,"subgroupHM": "C222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 77,"subgroupHM": "P42","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 2.0,"i": 4,"subgroup": 92,"subgroupHM": "P41212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c;0,0,1/2","b:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 94,"subgroupHM": "P42212","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 6,"subgroup": 96,"subgroupHM": "P43212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c","b:a,b,2c;0,0,1/2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_95.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_95.json new file mode 100755 index 000000000000..2a6675442d4f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_95.json @@ -0,0 +1 @@ +{ "HM": "P4322","created": "Tue Apr 09 11:04:15 CDT 2024","nSettings": 10,"nSubgroups": 6,"sg": 95,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 17,"subgroupHM": "P2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,0,1/4" ] },{ "det": 2.0,"i": 2,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,0,3/8" ] },{ "det": 1.0,"i": 3,"subgroup": 78,"subgroupHM": "P43","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 4,"subgroup": 91,"subgroupHM": "P4122","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] },{ "det": 2.0,"i": 5,"subgroup": 95,"subgroupHM": "P4322","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,1/8","b:a-b,a+b,c;0,0,1/8" ] },{ "det": 2.0,"i": 6,"subgroup": 96,"subgroupHM": "P43212","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,1/4","b:a-b,a+b,c;0,0,1/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_96.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_96.json new file mode 100755 index 000000000000..e3399e446acb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_96.json @@ -0,0 +1 @@ +{ "HM": "P43212","created": "Tue Apr 09 11:04:16 CDT 2024","nSettings": 6,"nSubgroups": 4,"sg": 96,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 19,"subgroupHM": "P212121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;1/4,0,1/8" ] },{ "det": 2.0,"i": 2,"subgroup": 20,"subgroupHM": "C2221","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c;0,0,1/4" ] },{ "det": 1.0,"i": 3,"subgroup": 78,"subgroupHM": "P43","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 3.0,"i": 4,"subgroup": 92,"subgroupHM": "P41212","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_97.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_97.json new file mode 100755 index 000000000000..ff28bc0a93a1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_97.json @@ -0,0 +1 @@ +{ "HM": "I422","created": "Tue Apr 09 11:04:16 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 97,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 23,"subgroupHM": "I222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 79,"subgroupHM": "I4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 89,"subgroupHM": "P422","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 5,"subgroup": 90,"subgroupHM": "P4212","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,1/4" ] },{ "det": 1.0,"i": 6,"subgroup": 93,"subgroupHM": "P4222","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;0,1/2,0" ] },{ "det": 1.0,"i": 7,"subgroup": 94,"subgroupHM": "P42212","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c" ] },{ "det": 3.0,"i": 8,"subgroup": 97,"subgroupHM": "I422","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c","a:a,b,3c;0,0,1","a:a,b,3c;0,0,2" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_98.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_98.json new file mode 100755 index 000000000000..2a23039cf65c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_98.json @@ -0,0 +1 @@ +{ "HM": "I4122","created": "Tue Apr 09 11:04:16 CDT 2024","nSettings": 10,"nSubgroups": 8,"sg": 98,"subgroups": [ { "det": 2.0,"i": 1,"subgroup": 22,"subgroupHM": "F222","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 2,"subgroup": 24,"subgroupHM": "I212121","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c;0,1/4,3/8" ] },{ "det": 1.0,"i": 3,"subgroup": 80,"subgroupHM": "I41","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 1.0,"i": 4,"subgroup": 91,"subgroupHM": "P4122","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;3/4,1/4,3/8" ] },{ "det": 1.0,"i": 5,"subgroup": 92,"subgroupHM": "P41212","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,0" ] },{ "det": 1.0,"i": 6,"subgroup": 95,"subgroupHM": "P4322","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,1/4,3/8" ] },{ "det": 1.0,"i": 7,"subgroup": 96,"subgroupHM": "P43212","subgroupIndex": 2,"trSubtype": "ct","trType": "k","trm": [ "a:a,b,c;1/4,3/4,1/4" ] },{ "det": 3.0,"i": 8,"subgroup": 98,"subgroupHM": "I4122","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c;1/2,0,1/4","a:a,b,3c;1/2,0,5/4","a:a,b,3c;1/2,0,9/4" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_99.json b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_99.json new file mode 100755 index 000000000000..df1e7c952cae --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/json/sub_99.json @@ -0,0 +1 @@ +{ "HM": "P4mm","created": "Tue Apr 09 11:04:16 CDT 2024","nSettings": 16,"nSubgroups": 11,"sg": 99,"subgroups": [ { "det": 1.0,"i": 1,"subgroup": 25,"subgroupHM": "Pmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 2,"subgroup": 35,"subgroupHM": "Cmm2","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a-b,a+b,c" ] },{ "det": 1.0,"i": 3,"subgroup": 75,"subgroupHM": "P4","subgroupIndex": 2,"trSubtype": "","trType": "t","trm": [ "a:a,b,c" ] },{ "det": 2.0,"i": 4,"subgroup": 99,"subgroupHM": "P4mm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c","c:a,b,2c" ] },{ "det": 3.0,"i": 5,"subgroup": 99,"subgroupHM": "P4mm","subgroupIndex": 3,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,3c" ] },{ "det": 2.0,"i": 6,"subgroup": 100,"subgroupHM": "P4bm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,c;1/2,1/2,0","b:a-b,a+b,c" ] },{ "det": 2.0,"i": 7,"subgroup": 101,"subgroupHM": "P42cm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 8,"subgroup": 103,"subgroupHM": "P4cc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 2.0,"i": 9,"subgroup": 105,"subgroupHM": "P42mc","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a,b,2c" ] },{ "det": 4.0,"i": 10,"subgroup": 107,"subgroupHM": "I4mm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,0","b:a-b,a+b,2c" ] },{ "det": 4.0,"i": 11,"subgroup": 108,"subgroupHM": "I4cm","subgroupIndex": 2,"trSubtype": "eu","trType": "k","trm": [ "a:a-b,a+b,2c;1/2,1/2,0","b:a-b,a+b,2c" ] } ] } \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/missingSettings.txt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/missingSettings.txt new file mode 100755 index 000000000000..778b33d035bf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/missingSettings.txt @@ -0,0 +1,86 @@ +find ? +found c:\temp\bilbao\wyckoff\json\ita_75.json 0000854: ?.","set": 2,"sg": 75,"tm": "a-b,a+b,c","u": "C 4" +found c:\temp\bilbao\wyckoff\json\ita_76.json 0000532: ?.","set": 2,"sg": 76,"tm": "a-b,a+b,c","u": "C 41 +found c:\temp\bilbao\wyckoff\json\ita_77.json 0000925: ?.","set": 2,"sg": 77,"tm": "a-b,a+b,c","u": "C 42 +found c:\temp\bilbao\wyckoff\json\ita_78.json 0000532: ?.","set": 2,"sg": 78,"tm": "a-b,a+b,c","u": "C 43 +found c:\temp\bilbao\wyckoff\json\ita_79.json 0001043: ?.","set": 2,"sg": 79,"tm": "a-b,a+b,c","u": "F 4" +found c:\temp\bilbao\wyckoff\json\ita_80.json 0001023: ?.","set": 2,"sg": 80,"tm": "a-b,a+b,c","u": "F 41 +found c:\temp\bilbao\wyckoff\json\ita_81.json 0001329: ?.","set": 2,"sg": 81,"tm": "a-b,a+b,c","u": "C -4 +found c:\temp\bilbao\wyckoff\json\ita_82.json 0001513: ?.","set": 2,"sg": 82,"tm": "a-b,a+b,c","u": "F -4 +found c:\temp\bilbao\wyckoff\json\ita_83.json 0002077: ?.","set": 2,"sg": 83,"tm": "a-b,a+b,c","u": "C 4/ +found c:\temp\bilbao\wyckoff\json\ita_84.json 0002110: ?.","set": 2,"sg": 84,"tm": "a-b,a+b,c","u": "C 42 +found c:\temp\bilbao\wyckoff\json\ita_85.json 0003521: ?.","set": 4,"sg": 85,"tm": "a-b-1/4,a+b+1/4,c","u +found c:\temp\bilbao\wyckoff\json\ita_86.json 0003839: ?.","set": 4,"sg": 86,"tm": "a-b-1/4,a+b-1/4,c-1/4 +found c:\temp\bilbao\wyckoff\json\ita_87.json 0002278: ?.","set": 2,"sg": 87,"tm": "a-b,a+b,c","u": "F 4/ +found c:\temp\bilbao\wyckoff\json\ita_88.json 0002727: ?.","set": 3,"sg": 88,"tm": "a,b-1/4,c-1/8","u": " +found c:\temp\bilbao\wyckoff\json\ita_89.json 0002776: ?.","set": 2,"sg": 89,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_90.json 0001671: ?.","set": 2,"sg": 90,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_91.json 0001279: ?.","set": 2,"sg": 91,"tm": "a-b,a+b,c","u": "C 41 +found c:\temp\bilbao\wyckoff\json\ita_92.json 0001046: ?.","set": 2,"sg": 92,"tm": "a-b,a+b,c","u": "C 41 +found c:\temp\bilbao\wyckoff\json\ita_93.json 0002977: ?.","set": 2,"sg": 93,"tm": "a-b,a+b,c","u": "C 42 +found c:\temp\bilbao\wyckoff\json\ita_94.json 0001783: ?.","set":<20> 2,"sg": +found c:\temp\bilbao\wyckoff\json\ita_95.json 0001279: ?.","set": 2,"sg": 95,"tm": "a-b,a+b,c","u": "C 43 +found c:\temp\bilbao\wyckoff\json\ita_96.json 0001046: ?.","set": 2,"sg": 96,"tm": "a-b,a+b,c","u": "C 43 +found c:\temp\bilbao\wyckoff\json\ita_97.json 0002669: ?.","set": 2,"sg": 97,"tm": "a-b,a+b,c","u": "F 4 +found c:\temp\bilbao\wyckoff\json\ita_98.json 0002401: ?.","set": 2,"sg": 98,"tm": "a-b,a+b,c","u": "F 41 +found c:\temp\bilbao\wyckoff\json\ita_99.json 0001499: ?.","set": 2,"sg": 99,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_100.json 0001198: ?.","set": 2,"sg": 100,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_101.json 0001353: ?.","set": 2,"sg": 101,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_102.json 0001289: ?.","set": 2,"sg": 102,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_103.json 0001153: ?.","set": 2,"sg": 103,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_104.json 0001065: ?.","set": 2,"sg": 104,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_105.json 0001443: ?.","set": 2,"sg": 105,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_106.json 0001092: ?.","set": 2,"sg": 106,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_107.json 0001771: ?.","set":<20> 2,"sg":<20> 107,"tm":<20> " +found c:\temp\bilbao\wyckoff\json\ita_108.json 0001704: ?.","set": 2,"sg": 108,"tm": "a-b,a+b,c","u": "F 4 +found c:\temp\bilbao\wyckoff\json\ita_109.json 0001653: ?.","set": 2,"sg": 109,"tm": "a-b,a+b,c","u": "F 4 +found c:\temp\bilbao\wyckoff\json\ita_110.json 0001525: ?.","set": 2,"sg": 110,"tm": "a-b,a+b,c","u": "F 4 +found c:\temp\bilbao\wyckoff\json\ita_111.json 0002597: ?.", +found c:\temp\bilbao\wyckoff\json\ita_112.json 0002630: ?.","set": 2,"sg": 112,"tm": "a-b,a+b,c","u": "C - +found c:\temp\bilbao\wyckoff\json\ita_113.json 0001492: ?.","set": 2,"sg": 113,"tm": "a-b,a+b,c","u": "C - +found c:\temp\bilbao\wyckoff\json\ita_114.json 0001362: ?.","set": 2,"sg": 114,"tm": "a-b,a+b,c","u": "C - +found c:\temp\bilbao\wyckoff\json\ita_115.json 0002187: ?.","set": 2,"sg": 115,"tm": "a-b,a+b,c","u": "C - +found c:\temp\bilbao\wyckoff\json\ita_116.json 0002101: ?.","set": 2,"sg": 116,"tm": "a-b,a+b,c","u": "C - +found c:\temp\bilbao\wyckoff\json\ita_117.json 0001923: ?.","set": 2,"sg": 117,"tm": "a-b,a+b,c","u": "C - +found c:\temp\bilbao\wyckoff\json\ita_118.json 0002020: ?.","set": 2,"sg": 118,"tm": "a-b,a+b,c","u": "C - +found c:\temp\bilbao\wyckoff\json\ita_119.json 0002472: ?.","set": 2,"sg": 119,"tm": "a-b,a+b,c","u": "F - +found c:\temp\bilbao\wyckoff\json\ita_120.json 0002433: ?.","set": 2,"sg": 120,"tm": "a-b,a+b,c","u": "F - +found c:\temp\bilbao\wyckoff\json\ita_121.json 0002467: ?.","set": 2,"sg": 121,"tm": "a-b,a+b,c","u": "F - +found c:\temp\bilbao\wyckoff\json\ita_122.json 0001934: ?.","set": 2,"sg": 122,"tm": "a-b,a+b,c","u": "F - +found c:\temp\bilbao\wyckoff\json\ita_123.json 0004098: ?.","set": 2,"sg": 123,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_124.json 0003289: ?.","set": 2,"sg": 124,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_125.json 0003551: ?.","set": 2,"sg": 125,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_125.json 0008085: ?.","set": 4,"sg": 125,"tm": "a-b-1/4,a+b-1/4,c"," +found c:\temp\bilbao\wyckoff\json\ita_126.json 0003221: ?.","set": 2,"sg": 126,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_126.json 0007321: ?.","set": 4,"sg": 126,"tm": "a-b-1/4,a+b-1/4,c-1/ +found c:\temp\bilbao\wyckoff\json\ita_127.json 0003027: ?.","set": 2,"sg": 127,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_128.json 0002609: ?.","set": 2,"sg": 128,"tm": "a+b,-a+b,c","u": "C +found c:\temp\bilbao\wyckoff\json\ita_129.json 0003033: ?.","set": 2,"sg": 129,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_129.json 0006863: ?.","set": 4,"sg": 129,"tm": "a-b-1/4,a+b+1/4,c"," +found c:\temp\bilbao\wyckoff\json\ita_130.json 0002488: ?.","set": 2,"sg": 130,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_130.json 0005520: ?.","set": 4,"sg": 130,"tm": "a-b-1/4,a+b+1/4,c"," +found c:\temp\bilbao\wyckoff\json\ita_131.json 0003822: ?.","set": 2,"sg": 131,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_132.json 0003678: ?.","set": 2,"sg": 132,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_133.json 0003316: ?.","set": 2,"sg": 133,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_133.json 0007648: ?.","set": 4,"sg": 133,"tm": "a-b-1/4,a+b+1/4,c-1/ +found c:\temp\bilbao\wyckoff\json\ita_134.json 0003854: ?.","set": 2,"sg": 134,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_134.json 0008916: ?.","set": 4,"sg": 134,"tm": "a-b-1/4,a+b+1/4,c-1/ +found c:\temp\bilbao\wyckoff\json\ita_135.json 0002715: ?.","set": 2,"sg": 135,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_136.json 0003041: ?.","set": 2,"sg": 136,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_137.json 0002614: ?.","set": 2,"sg": 137,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_137.json 0005887: ?.","set": 4,"sg": 137,"tm": "a-b-1/4,a+b+1/4,c-1/ +found c:\temp\bilbao\wyckoff\json\ita_138.json 0003118: ?.","set": 2,"sg": 138,"tm": "a-b,a+b,c","u": "C 4 +found c:\temp\bilbao\wyckoff\json\ita_138.json 0007171: ?.","set": 4,"sg": 138,"tm": "a-b-1/4,a+b+1/4,c-1/ +found c:\temp\bilbao\wyckoff\json\ita_139.json 0004284: ?.","set": 2,"sg": 139,"tm": "a-b,a+b,c","u": "F 4 +found c:\temp\bilbao\wyckoff\json\ita_140.json 0004136: ?.","set": 2,"sg": 140,"tm": "a-b,a+b,c","u": "F 4 +found c:\temp\bilbao\wyckoff\json\ita_141.json 0003888: ?.","set": 2,"sg": 141,"tm": "a-b,a+b,c","u": "F 4 +found c:\temp\bilbao\wyckoff\json\ita_141.json 0009125: ?.","set": 4,"sg": 141,"tm": "a-b,a+b+1/4,c-1/8"," +found c:\temp\bilbao\wyckoff\json\ita_142.json 0003645: ?.","set": 2,"sg": 142,"tm": "a-b,a+b,c","u": "F 4 +found c:\temp\bilbao\wyckoff\json\ita_142.json 0008607: ?.","set":<20> 4,"sg":<20> 142,"tm":<20> "a-b,a+b+1 +found c:\temp\bilbao\wyckoff\json\ita_146.json 0000725: ?.","set": 2,"sg": 146,"tm": "2/3a+1/3b+1/3c,-1/3a +found c:\temp\bilbao\wyckoff\json\ita_148.json 0001529: ?.","set": 2,"sg": 148,"tm": "2/3a+1/3b+1/3c,-1/3a +found c:\temp\bilbao\wyckoff\json\ita_155.json 0001548: ?.","set": 2,"sg": 155,"tm": "2/3a+1/3b+1/3c,-1/3a +found c:\temp\bilbao\wyckoff\json\ita_160.json 0001170: ?.","set": 2,"sg": 160,"tm": "2/3a+1/3b+1/3c,-1/3a +found c:\temp\bilbao\wyckoff\json\ita_161.json 0001133: ?.","set": 2,"sg": 161,"tm": "2/3a+1/3b+1/3c,-1/3a +found c:\temp\bilbao\wyckoff\json\ita_166.json 0002649: ?.","set": 2,"sg": 166,"tm": "2/3a+1/3b+1/3c,-1/3a +found c:\temp\bilbao\wyckoff\json\ita_167.json 0002451: ?.","set": 2,"sg": 167,"tm": "2/3a+1/3b+1/3c,-1/3a diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/sggroups_ordered.txt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/sggroups_ordered.txt new file mode 100755 index 000000000000..a1e7d12ffdce --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/sggroups_ordered.txt @@ -0,0 +1,613 @@ +001 +002 +003:a +003:b +003:c +004:a +004:b +004:c +005:a1 +005:a2 +005:a3 +005:b1 +005:b2 +005:b3 +005:c1 +005:c2 +005:c3 +006:a +006:b +006:c +007:a1 +007:a2 +007:a3 +007:b1 +007:b2 +007:b3 +007:c1 +007:c2 +007:c3 +008:a1 +008:a2 +008:a3 +008:b1 +008:b2 +008:b3 +008:c1 +008:c2 +008:c3 +009:a1 +009:-a1 +009:a2 +009:-a2 +009:a3 +009:-a3 +009:b1 +009:-b1 +009:b2 +009:-b2 +009:b3 +009:-b3 +009:c1 +009:-c1 +009:c2 +009:-c2 +009:c3 +009:-c3 +010:a +010:b +010:c +011:a +011:b +011:c +012:a1 +012:a2 +012:a3 +012:b1 +012:b2 +012:b3 +012:c1 +012:c2 +012:c3 +013:a1 +013:a2 +013:a3 +013:b1 +013:b2 +013:b3 +013:c1 +013:c2 +013:c3 +014:a1 +014:a2 +014:a3 +014:b1 +014:b2 +014:b3 +014:c1 +014:c2 +014:c3 +015:a1 +015:-a1 +015:a2 +015:-a2 +015:a3 +015:-a3 +015:b1 +015:-b1 +015:b2 +015:-b2 +015:b3 +015:-b3 +015:c1 +015:-c1 +015:c2 +015:-c2 +015:c3 +015:-c3 +016 +017 +017:bca +017:cab +018 +018:bca +018:cab +019 +020 +020:bca +020:cab +021 +021:bca +021:cab +022 +023 +024 +025 +025:bca +025:cab +026 +026:a-cb +026:ba-c +026:bca +026:cab +026:-cba +027 +027:bca +027:cab +028 +028:a-cb +028:ba-c +028:bca +028:cab +028:-cba +029 +029:a-cb +029:ba-c +029:bca +029:cab +029:-cba +030 +030:a-cb +030:ba-c +030:bca +030:cab +030:-cba +031 +031:a-cb +031:ba-c +031:bca +031:cab +031:-cba +032 +032:bca +032:cab +033 +033:a-cb +033:ba-c +033:bca +033:cab +033:-cba +034 +034:bca +034:cab +035 +035:bca +035:cab +036 +036:a-cb +036:ba-c +036:bca +036:cab +036:-cba +037 +037:bca +037:cab +038 +038:a-cb +038:ba-c +038:bca +038:cab +038:-cba +039 +039:a-cb +039:ba-c +039:bca +039:cab +039:-cba +040 +040:a-cb +040:ba-c +040:bca +040:cab +040:-cba +041 +041:a-cb +041:ba-c +041:bca +041:cab +041:-cba +042 +042:bca +042:cab +043 +043:bca +043:cab +044 +044:bca +044:cab +045 +045:bca +045:cab +046 +046:a-cb +046:ba-c +046:bca +046:cab +046:-cba +047 +048:1 +048:2 +049 +049:bca +049:cab +050:1 +050:1bca +050:1cab +050:2 +050:2bca +050:2cab +051 +051:a-cb +051:ba-c +051:bca +051:cab +051:-cba +052 +052:a-cb +052:ba-c +052:bca +052:cab +052:-cba +053 +053:a-cb +053:ba-c +053:bca +053:cab +053:-cba +054 +054:a-cb +054:ba-c +054:bca +054:cab +054:-cba +055 +055:bca +055:cab +056 +056:bca +056:cab +057 +057:a-cb +057:ba-c +057:bca +057:cab +057:-cba +058 +058:bca +058:cab +059:1 +059:1bca +059:1cab +059:2 +059:2bca +059:2cab +060 +060:a-cb +060:ba-c +060:bca +060:cab +060:-cba +061 +061:ba-c +062 +062:a-cb +062:ba-c +062:bca +062:cab +062:-cba +063 +063:a-cb +063:ba-c +063:bca +063:cab +063:-cba +064 +064:a-cb +064:ba-c +064:bca +064:cab +064:-cba +065 +065:bca +065:cab +066 +066:bca +066:cab +067 +067:a-cb +067:ba-c +067:bca +067:cab +067:-cba +068:1 +068:1a-cb +068:1ba-c +068:1bca +068:1cab +068:1-cba +068:2 +068:2a-cb +068:2ba-c +068:2bca +068:2cab +068:2-cba +069 +070:1 +070:2 +071 +072 +072:bca +072:cab +073 +073:ba-c +074 +074:a-cb +074:ba-c +074:bca +074:cab +074:-cba +075 +075:c +076 +076:c +077 +077:c +078 +078:c +079 +079:f +080 +080:f +081 +081:c +082 +082:f +083 +083:f +084 +084:c +085:1 +085:2 +085:c1 +085:c2 +086:1 +086:2 +086:c1 +086:c2 +087 +087:f +088:1 +088:2 +088:f1 +088:f2 +089 +089:c +090 +090:c +091 +091:c +092 +092:c +093 +093:c +094 +094:c +095 +095:c +096 +096:c +097 +097:f +098 +098:f +099 +099:c +100 +100:c +101 +101:c +102 +102:c +103 +103:c +104 +104:c +105 +105:c +106 +106:c +107 +107:f +108 +108:f +109 +109:f +110 +110:f +111 +111:c +112 +112:c +113 +113:c +114 +114:c +115 +115:c +116 +116:c +117 +117:c +118 +118:c +119 +119:f +120 +120:f +121 +121:f +122 +122:f +123 +123:c +124 +124:c +125:1 +125:2 +125:c1 +125:c2 +126:1 +126:2 +126:c1 +126:c2 +127 +127:c +128 +128:c +129:1 +129:2 +129:c1 +129:c2 +130:1 +130:2 +130:c1 +130:c2 +131 +131:c +132 +132:c +133:1 +133:2 +133:c1 +133:c2 +134:1 +134:2 +134:c1 +134:c2 +135 +135:c +136 +136:c +137:1 +137:2 +137:c1 +137:c2 +138:1 +138:2 +138:c1 +138:c2 +139 +139:f +140 +140:f +141:1 +141:2 +141:f1 +141:f2 +142:1 +142:2 +142:f1 +142:f2 +143 +144 +145 +146:h +146:r +147 +148:h +148:r +149 +150 +151 +152 +152:_2 +153 +154 +154:_2 +155:h +155:r +156 +157 +158 +159 +160:h +160:r +161:h +161:r +162 +163 +164 +165 +166:h +166:r +167:h +167:r +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201:1 +201:2 +202 +203:1 +203:2 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222:1 +222:2 +223 +224:1 +224:2 +225 +226 +227:1 +227:2 +228:1 +228:2 +229 +230 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/sgmap.txt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/sgmap.txt new file mode 100755 index 000000000000..329d4c57d04a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/sgmap.txt @@ -0,0 +1,1033 @@ +1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 +0100000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101111000111111111111111111111111111111111111111111000111111111111111111111111111111111111111110000001111111011111111111110000000000000000111101010101110101000000000000000000000000000000000000000000000000000000000000000000001111010101101111010101011111011001011111011001011111010101010000011100000000000000000011111111000000011000000000000001111000001011011110000000000000010110111010111 +000010000000001110000000000000000000000000000000000000000010000000001110000000000000000000000000000000000001010100001011111010000000010010100000000010100000000010000000010010000000010010100010100010100010100010010010010010100011010011100001001000000000010100000010000000000010010000000000000000000000101000101111100000101111111000000110110000000101110011001111111111111010101011101011110000111100001111111111111111111111111111111111111111111111111111111110101001111110101010111110011010111110011010111110101010000000000000000000000000000000000010011001010011011000000110011100110110100111110001111101101101110101 +000000000101000000000000000000101000000110001001000000000000000101000000000000000000000000110001001000000000000000010010010000000000000000000000000000000000000000000000000010010100010000010100010100010100010111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000101000101000100100101000101000101000111000000000000010101010101010101010011001101001101010101010101010101010101010101010101010101010101010101010101010101010100110011010100110011010100110011010100110011010100110011000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000100000001110000000000000000000000000000000000000000000100000001110000000000000000000000000000000000000001001010000111111001000000001001010000000001010000000001000000001001000000001001010001010001010001010001001001001001010011001011100010000100000000101000000001000000000001001000000000000000000001010001010111010001010111111000000110101000001010000000000000000000000000000000000011011001100110011101000000000000000000000000100000000100000001001000110010111001000000100000100100001001000100010000110000100000000000000000000000000000000000000000000000000000000000000000011100110110100111110001111101101101110101 +001000001110000000000000000000000000000000000000000000001000001110000000000000000000000000000000000000000001100001010011111000100000000100001100000000001100000000100000000100100000000100001100001100001100001100100100100100001111000111100000110000000011000000000000100000000000100100000000000000000110000110000111001110000111111000000110100100110000000000000000000000000000000000000011010000100100001101000000000000000000000000100000000100000001001000110010101001000000110000100100001000000100010001110001100000000000000000000000000000000000000000000000000000000000000000011100110110100111110001111101101101110101 +000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000011000000000000010010000000000000000000000000000000000000000000000000010000000010000000000000000000000000010010000000000000000100000010000000000010101001000000000010000000000000010000000000000000000000010010100100000000101000000101110000000010010010001000101010101010110011001001001010000010100000101010101010101010101010101010101010101010101010101010101100101010101100110010101010110010101010110010100100010000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +000000000000000000010000000000000001110000000000000000000010000000001110000000000000000000000000000000000000000000000000000001100010100000000000000000000000010100000000000001100010100001011100000000000000000001100001100000000010010000000001001000000000010100000010000000000010001100000000000000000000101000101111100000101000000000000100110000000101000000000000000011110000000011000000000000000000000000000000000000000000000000000000000000000000000000111100000000111100000000111100000000111100000000111100000000000000000000000000000000000000000000000011000000000001010110000000100100100000000000000001001001100001 +0000000001000000000000000000000000000000000000000000000000000001000000000000000010000000000011000000000000000001001100100101000000000000000000000000000000000010000000000000000000000000000001000001000001000001001001000000000000000000000000000000000000000010010000100010000100000100000100000100000101000001001111000001000001010000100001100100100000100000000000000000000000000000000000011100000001000001010000000000000000000000000000100001000000010000000100001000011000101100000001000000001001000110010110001001000000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +000000000000101000000000000000000101000000000110001001000000000000101000000000000000000000000000110001001000000000000100110000000000000000000000000000000000000000000000000000100001100111000011000011000011000011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000011001001000011000011000011111000000000000000000000101000100000000000001001100000000000000000101000000000000000001010101000000000000000001010101000000000000000000000000000000000000000000000000010100110011000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000000001000000100000000000001000000101001000000000110000000001000000100000000000000000001001000000000110000000000001001010000000000000000000000000000000000000000000000000001001010001000101000101000101000101011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000010100010100010010010100010100010100111000000000000000000000101000100000000000001001100000000000000000101000000000000000001010101000000000000000001010101000000000000000000000000000000000000000000000000010100110011000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000000000000000001000000000001110000000000000000000000001000001110000000000000000000000000000000000000000000000000000000000011011000000000000000000000000011000000000000000011011000000011110000000000000000000011000011000000000010000100000000110000000011000000000000100000000000111000000000000000000110000110000111001110000000000000000100100100110000000000000000000000000000000000000000000000000000000000110001010000100011001000010000001000000010000100110000000000000010010000100100000010000110000001110001000000000000000000000000000000000000000000000000000000000000000000000000100100100000000000000001001001100001 +0000000000000001000000000000000000000000000000000000000000000000000001000000000000000010000000000000000011000000101010010101000000000000000000000000000000100000000000000000000000000000001000001000001000001000100100000000000000000000000000000000000000100000000001010001000010000010000000100101000000001001011100100000001000101000000011100010101000000000000001010001000000000000010110000000000000000001010000000000000000010101010000000000000000010101010000000000000000000000000000000000000000000000000101011001100000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +000000000000000000100000000000001110000000000000000000000100000001110000000000000000000000000000000000000000000000000000000010100101000000000000000000000000101000000000000010100101000010101100000000000000000010100010100000000010001000000010000100000000101000000001000000000001010100000000000000000001010001010111010001010000000000000100101000001010000000000000000000000000000000000000000000000000000000110001010000100011001000010000001000000010000100110000010000000010000000100100000011000110000000110000000000000000000000000000000000000000000000000000000000000000000000000000100100100000000000000001001001100001 +0000000000100100100000000000000100100100001100001100001100000000100100100000000000000000000001100001100001100000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111110000000010100010000000000000101100000000000000000010100000000000000000101010100000000000000000101010100000000000000000000000000000000000000000000000001010110011000000000000000000000000000000000000000000000000000000000000000001010000001010000100100100100000000000011 +0000000000000000000000000000001000000000011000000000000000000001000000000000000010000000000011000000000000000000000000000000000000000000000000010000000100000000100001000000100100000000000100000000000000111000110000000100000100000000100000000000000000000010010000100010000100000000000100000100000101000001001111000001000000101110100001000100100000100000000000000000000000000000000000000000000000000000000110010100000010011000100100000000001000001001000100100000001000000100000001100000101001000000010110000011000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000001000000000000000000000000000000000000000000000000000001000000000000000000010000000000010010000000000100000010010000000000000000000000000000000001000000000000000000000000000000010000010000010000010001001000000000000000000000000000000000000001000000001010000100000100010000000100001010000001000011101100000001000101000000010110010001010000000000000000000000000000000000000001110001000100010101000000000000000000000000000010000100000001000000010000110001100010100000000100000001100100011000011000100000000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +0000000000001000000000000000000000000000000000000000000000000000001000000000000000010000000000000011000000000000011001001101000000000000000000000000000000000100000000000000000000000000010000010000010000010000010010000000000000000000000000000000000000000100001000001100100000000001000000010100001000000101101100010000000100000110010001100001100001000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000001010000000000000000000001000001010000000000100100001001000100001001000000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +000000000000000000000000000100000000000000000000000011000000000000000000000000100000000000000000000000011000000000000000000000000000000000000000000000010101001000000000000000000000000000010100000000000001001001100000000000010100100010010000000000010101001000000000010000000000010010000000000000000000000010010100100000000010111000101100000000010010000000000000000001011100010001000000000000000000000000000000000000000000000000000000000000000000000000010111000100010111001100010101000100010101000100010100000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +000000000000000000000000000000001000000000000010010000000000000001000000000000000000010000000000010010000000000000000000000000000000000000000000001000000100000010010000000010000100000000000100000000000010101010100000010000000100000010000000000000000001000000001010000100000100000000000100001010000001000011101100000001000010111000010100010001010000000000000000000000000000000000000000000000000000000000011001010000001001100010010000000000100000100100010010010000100000000000000110000011100100000000011000001000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111001010101011101000000000000000000000000000000000000000000000111111111111111111111111111100000000111110101010000010011010000010011010111100101010000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001000101010001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111001010101011101000000000000000000000000000000000000000000000111111111111111111111111111100000000111110101010000010011010000010011010111100101010000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001000101010001 +000000000000001000000000000000000000000000000000000000000000000000001000000000000000000010000000000000010010000001000000110000000000000000000000000000000000100000000000000000000000000010000010000010000010000010010000000000000000000000000000000000000000100000010000101001000000000100000000101001000000001111001001000000001000011000100110000101001000000000000101000100000000000001001000000000000000000101000000000000000001010101000000000000000001010101000000000000000000000000000000000000000000000000010100100010000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +000000000000000000000000000000010000001100000000000000000000000010000000000000000100000001100000000000000000000000000000000000000000000000000000000000000000000000011000011000000110011000000000000011110000000000000011000000000001000000000000000000110000000000000000000000000011000000000001100110000001111000000000110000000000000001100000100100110000000000000000000000000000000000000000000000000000000000000000100110010010011000000100000000001010000000000100001000001000000001010000011000001000100000100101000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +0000000000000000000000000000000001000000000000011000000000000000001000000000000000010000000000000011000000000000000000000000000000000000000000001000100000000000001000001000001000010000100000000000000000001011101000000001100000000000001000000000000000000100001000001100100000000000000000010100001000000101101100010000000101111000010001000001100001000000000000000000000000000000000000000000000000000000000000000000010001010000000000000100000000000001000000000000010001000001110000000000000100001101000100000001000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000000000000000000000000000010000000001100000000000000000000010000000000000000100000000001100000000000000000000000000000000000000000000000000000000000000000000101010100010000110100000000000010101100000000000010100000000001000000000000000010000100000000000000000000000010100000001010000001010110101000000000101000000000000100001000101000001010000000000000000000000000000000000000000000000000000000000000100110010010011000000100000000001010000000000100001010001000000000010000111000001000000000100100000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +0000000000000000000000000000000000001000000000000000011000000000000001000000000000000010000000000000000011000000000000000000000000000000000000000001000010000000010010000000010000100000000010000000000000010101011000000010000010000000010000000000000000100000000001010001000010000000000000100101000000001001011100100000001001010110000011000010101000000000000000000000000000000010010100000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000100100000000100100101010001000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000000000000000000000001000000000010010000000000000000001000000000000000000010000000010010000000000000000000000000000000000000000000000010000000100000000001000010000001001000000000100000000000000011010011000000001000100000000001000000000000000000000110000001010000100000000000001000001000001010000011011010000010000101011100000100001001000001000000000000000000000000000000000000000000000000000000000000000001000101000000000000010000000000000100000000000011000100000110000000100000010000010100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000010000000000000000000000000000000000000000000000000000010000000000000000100000000000001100000000000010100001000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000010010010100000000000000000000001001000000000000000000000000001100000010100000000101111010000000000011000000000000010010000110000000101000100011010001000000000000010100000000101000001011010000000000000000010101010000000000000000010101010000000000000000000000000000000000000000000000000101010001000000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000100000000000000000000011000000000000000000000000000100000000000000000000011000000000000000000000000000000000000000000000000000101010000100000000000000000000000000101000000000000010000110100000000000101000100001001000000000101010000100000000001000000000001001000000000000000000000100001010010000000101011001010100000000100001000000000000000000000000000000000000000000000000000000000000000001000101000000000000010000000000000100000000000101000100000011000000000100010000110000010001000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +000000001000000000000000000000000000000000000000000000000000001000000000000000000010000000010010000000000000000010000001010000000000000000000000000000000000000100000000000000000000000000001000001000001000001000100100000000000000000000000000000000000000000110000001010000100000001000001000001000001010000011011010000010000010100100000110001001000001000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000101000000000000000010000100000100000000100010010000000100010000100000000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +0000000000000000000000100000000000000001001000000000000000000000000000000100000000000000001001000000000000000000000000000000000001000100000100000100000000000000000000000000000001000100000000111000000100000000000000000100000100000100000010000001000001000000001001000000010000000000000001000000000000010000000000001000001110000000010110000100100000100000000000000000000000000000000000000000000000000000000000100011000100001100100001000000100000001000000011000000000000000010010110000100000000001010000011000011000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +000000000000000000000100000000000000000011000000000000000000000000000000100000000000000000011000000000000000000000000000000000000000000000000000000011000000110000000000000000000000000011000000000000000000110011000000000011000000100000100100000011000000110000000000000100000000000100100000000000000000000001100001001000000111100110000100000000001100000000000000000000000000000000000000000000000000000000000000000001000101000000000000010000000000000100000000000111000100000010000000100100010000010000010000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +000000000010000000000000000000000000000000000000000000000000000010000000000000000100000001100000000000000000000000001100001000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000100100001100000000000000000000110000000000000000000000000011000000000001100110000001111000000000110000000000000001100000100100110000000000000000000000000000000000000000000001011000011000000000000000000000000000000000100001000000011000000100000000001000001011010000000000001010100010100101000010000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000110001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000010000000000000000000101000101000100100101000010111101000101000000000000000000000000000001011001000101000100000000000000000000000000000000000000000000000000000000000000000000010110010010010110011001010100100001010100100001010100010001000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +000000000000000000000001000000000000000000001000010000000000000000000000001000000000000000000001000010000000000000000000000000010000010000000100000100000000000000000000000000010000010000000010101000000100000000000000010000000100010000000100010000010000000010010000000000001000000000010000000000000100000000000000100010101000000110100000010001010000000000000000000000000000000000000000000000000000000000000010001100010000110010000100000010000000100000001100000010000000001000011000110000000000001000001100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000010000000000000000000000000000000000000000000000000000010000000000000000100000000001100000000000000000011000001000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000001001001010000000000000000000010000100000000000000000000000010100000001010000001010110101000000000101000000000000100001000101000001010000000000000000000000000000000000000000000011000001000000000000000000000000000000000100001000000011000000100000010001000001010010000100000001010000010100100000010000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000000000000001000000000000000010010000000000001000000000000000000010000000000000010010000000000000000000000000000000000000010001000000000000100001000000100000100001000000000000000000011101100000000101000000000000100000000000000000100000010000101001000000000000000000101001000000001111001001000000001111100000100100000101001000000000000000000000000000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000010010000000010010010100000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000011000000000000000000001010000000000000000000000000000000000000000000000000001000000001000000000000000000000000001001000000000000000100000001000000000101010000100000000001000000000000001000000000000000000000100001010010000000010100001010110000000100001000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000101000000000000000100000100000001000000000110010000100000010001100000000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +0000000000000000000000000000100000000000000000000001001000000000000000000000000100000000000000000000001001000000000000000000000010000010000010000010000000000000000000000000000010000010000000010101000010000000000000000010000010000010000001001000001000000000011000000000000001000000000010000000000000100000000000000101010100000001110000000010101000000000000000000000000000110001000100000000000000000000000000000000000000000000000000000000000000000000000000001100100000001100110000001000010000001000010000010001000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000011000000000000000000000000000110000000000000000000000000000000000000000000000000000100000000100000000000000000000000000100100000000000000100000000100000011000000110000000000000100000000000000100000000000000000000001100001001000000000011110000110000000001100000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000101000000000000000110000100000000000000100110010000000000010000100000000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +000000000000000000000000000000000000010000000000001100000000000000000010000000000000000100000000000001100000000000000000000000000000000000000000000000000000000000000010101100001001001100000000000001011100000000000001100000000001000000000000000001001000000000000000000000000001100000010100000000101111010000000000011000000000000010010000110000000101000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000010001000000010001000101000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +0000000000000000000000000100000000000000000001001000000000000000000000000000100000000000000000001001000000000000000000000000000000001001100000100000000000000000000000000000000000001001000000001011100000000000000000000001100000000001000100010000010000000000010001000000001000000000000000001000000000000010000000000011101000000000101010000001100001000000000000000000000000000000000000000000000000000000000001000000000000000100000000010000000000000000000000011000000100001100000000010000000000000000110001000001000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +000000000000000000000000001000000000000000000000001000010000000000000000000001000000000000000000000001000010000000000000000000000001000101000001000000000000000000000000000000000001000100000000011101000000000000000000000101000000000100001010000010000000000010001000000000010000000000000001000000000000010000000000001111000000000101010000000101001000000000000000000000000011000100000000000000000000000000000000000000000000000000000000000000000000000000000000110010000000110011000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100010011000101110000000000000000000000000010000001000000010000100110011101001000010000000011000000110001010000000110010010000000000000101001010000000000010100000000000010000100000011100100000000000000101010000000001100001000001 +0000000000000000000000000000000000000000000000000000000000000000000000000100000000000000001001000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010000001000001000000001001000000010000000000000001000000000000010000000000001000001110000000010110000100100000100000000000000000000000000000000000000010010100100100000000000000000000000000000010000000010000000100000011000000000000000000110110100000000000001000100011000001100000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +000000010000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000100000010000000000010100000000000010100000000000000000010100000000010100000000000000000000000000000000000000000000000000000000000000010100000000000000000000000010100000000001100000000010010101000000000000000010010000000000000000000000010010001100110000000000000000000000000000001111000011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100101100100110000001100000000000000000000000000000000000000000 +000000000000000000001000000000000000001000010000000000000000000000000001000000000000000001000010000000000000000000000000000000000010001000100000100000000000000000000000000000000010001000000011010000100000000000000000001000100000001000010000001000001000000000011000000010000000000000000010000000000000100000000000010001011000000000111000001001000001000000000000000000000000000000000000000000000000000000000100000000000000010000000001000000000000000000000001110000010000100000000001000001000000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100100011001001110000000000000000000000000010000001000000010000100110010101001000011000000011000000010001010000100110010000000000000001000000001000000001000010000000000010000000001100101000000000000000101010000000001100011001001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000010000010100000101000000000000000000000000000111111111111111111111111111111111111111111 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000010000010100000101000000000000000000000000000111111111111111111111111111111111111111111 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000001100000011000000000011000011000000000000001100111100001111000011110000000000000000000000000000111110101001111100000000000000000000000000000000111100000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000001100001000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000001100000011000000000011000011000000000000001100111100001111000011110000000000000000000000000000111110101001111100000000000000000000000000000000111100000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000001100001000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110010100000010011000100100000000100000001001000110000000000000001100000011000001000001000010100110000100000000000000000000000010001001000010000000000000000010100010101000000000000000000000001110001000111011001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110010100000010011000100100000000100000001001000110001000000000000100000011000001100001000010000110000110000000000000000000000100010000010100000000000000000010011000100100000000000000000000001110001000101010001 +000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000110001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000100000000000000000000011000011001001000011111100000011101000000000000000000000000000000000000001001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000010010000000010010010100010001000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +000000000000000000000000000000000000000000000000000000000000001000000100000000000000000001001000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000001000000000000000000010100010100010010010100101011010100101000000000000000000000000000000000000001001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000010010000000010010010100010001000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +0000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000001001000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001001000001000000000011000000000000001000000000010000000000000100000000000000101010100000001110000000010101000000000000000000000000000010001000100000000000000000000000000000000000000000000000000000000000000000000000000000100100000000100010000001000010000001000010000010001000000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000100100100000000000000000000001100001100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111110000000000000000000000001000100100000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000100010000000100010001010010001000000000000000000000000000000000000000000000000000000000000000000000100001010000000000000001001000000011 +000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000001000010000000100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100010000010000000010010000000000001000000000010000000000000100000000000000100010101000000110100000010001010000000000000000000000000000000000000000000000010000000000000000000000000000000000001000000001000000010000001100000010000000000010011010100000000000000010001100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000001001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100010000010000000000010001000000001000000000000000001000000000000010000000000011101000000000101010000001100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000100000000010000000100000100000000010100000000000000010001000001100000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100101101100000010111110101111101010000111110000111111111111100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100101101100000010111110101111101010000111110000111111111111100000000000000000000000000000000000000000 +000000100000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000010000001000000000001010000000000001010000000000000000001010000000001010000000000000000000000000000000000000000000000000000000000000101000000000000000000000000001010000000010100000000100001010100000000000000100001000000000000000000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010000000000000000010001010000000000010000000001000001000101000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101000010001001001000000000000000000000000000000000000000000000010101010101010101010101010110000000010100100010000000010010000000010010010100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101000010001001001000000000000000000000000000000000000000000000010101010101010101010101010110000000010100100010000000010010000000010010010100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110001010010001000000100001000000011000000100001100001000001010000101000000100010000010100100000010000000000000000000000000010000000100000000000000000000000000000000000000000000000000011100111000100111 +000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000010000100101000000000000000000000101000000000000000101000000000000000000000000001010000000010100000000100001010100000000000000100001000000000000000000000100001000000000000000000000000000000000000000000000000000000000100000000000000010000000001000000000000000000000000100000010001110000000000000000000001000011000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000001000000100000000000001100000000000001100000000000000000001100000000001100000000000000000000000000000000000000000000000000000000011000000000000000000000000000000001100000011000000000001100000011000000000000001100000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010000000000010000010001000000000000010001000001000000000100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001100100000110001001000000001000000010000001100000100000000000010100111000000000000000010001100000011000000000000000000001000100001001000000000000000001100100011000000000000000000000000000100010000100100 +000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000110011000000000000000000000011000000000000000011000000000000000000000000000000001100000011000000000001100000011000000000000001100000000000000000000000001100000000000000000000000000000000000000000000000000000000000100000000000000010000000001000000000000000000000000110000010001100000000000000001000001000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000010000000000000010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000001000001000000000011000000010000000000000000010000000000000100000000000010001011000000000111000001001000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010000000001010000010000000000000001010001000000000000000100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000010001000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000010000000000010001000000000010000000000000001000000000000010000000000001111000000000101010000000101001000000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110001010010001000000100001000000011000000100001000001000001110000100000000100011000010100100000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001100100000110001001000000001000000010000001100000000000000000110100110000000000001000010001100000010000000000000000000000100000100000000000000000000001010001010100000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000000010000100010000000000000011000001000000001100000010110100000000000000000000000000000000000000000000000000000010110001000011010001000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000000010000100010000000000000011000001000000001100000010110100000000000000000000000000000000000000000000000000000010110001000011010001000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000001001000010100000000000000000000010100000000000000010100000000000000000000000010100000000001100000000010010101000000000000000010010000000000000000000000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000101001100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100110110100111110001111101101101110101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100110110100111110001111101101101110101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100110110100111110001111101101101110101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000010001100100000010000100000001000000010010000000100011100000010000000000000000011100011000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100110110100111110001111101101101110101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100110110100111110001111101101101110101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100110110100111110001111101101101110101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000010001100100000010000100000001000000010011000000100010100000010000000100000000011000011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001001000000001000001100000000000000100010100000101000001010000000000000000000000000000010100100001010110001000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001001000000001000001100000000000000100010100000101000001010000000000000000000000000000010100100001010110001000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100001000000000000000000000000000000000100000010000000100000001100000100000000001000100101010000000000001000001100001001000000000000000000000000000001001000000000000000000000000011000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001001010000000000000000000000000000100000000001010000000000100000000001000000100000100011000100001000000100110000001000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000100000000001010000000000100000100001000000000000101011000100000000000100110000000000000000000000000000000000000000100000000000000000000000000000000000000000010010000000000011100100011 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000100000000000000000000000000000000100000010000000100000001100000000000000001100100100010000000001001000001100001000000000000000000000000000000100000000000000000000100000000010100000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100010001000100000000000000000000000000010000000000100000100100010001100001100000000000010010000110000000000000011000001000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000000010100000000000000000000000000000000000000000000000000000000000000010101010000000001000000000000000010100000000011000000000101000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000000010100000000000000000000000000000000000000000000000000000000000000010101010000000001000000000000000010100000000011000000000101000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000100000000000000000000000000010000000000100000100100010000100001100001000000010010000010000000000100011000011000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000001001000000000000000100000100000000010000000001010000000000000000000000000000000000000000000000000000000001010110000101010110010100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000001001000000000000000100000100000000010000000001010000000000000000000000000000000000000000000000000000000001010110000101010110010100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001001000000000000000000000000000000000000000000000000000000000000001010101000000000001000000000000000001000100000101000100010100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000101000000000000000000000000000000001011011110000000000000010110111010111 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001001000000000000000000000000000000000000000000000000000000000000001010101000000000001000000000000000001000100000101000100010100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000101000000000000000000000000000000001011011110000000000000010110111010111 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010110001100110011011101001100000011101001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000110000000000000000000000110000000000000011000000111100000000000000000000000000000000000000000000000000000000111100000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000110000000000000000000000110000000000000011000000111100000000000000000000000000000000000000000000000000000000111100000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000011001000000000000000100000100000000010000000001010000000000000000000000000000000000000000000000000000000000010010000100010010010100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000011001000000000000000100000100000000010000000001010000000000000000000000000000000000000000000000000000000000010010000100010010010100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000010001001000000000000000000000000000000000000000000000000000000000000001010101000000000001000000000000000000000000000100000000010100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000010001001000000000000000000000000000000000000000000000000000000000000001010101000000000001000000000000000000000000000100000000010100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100110000000000010100000000000011111100000011100100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100010001000000000000010000010000000000100000010000000000000000010000010000000000000100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100010001000000000000010000010000000000100000010000000000000000010000010000000000000100000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000001000100000000000000000101000000000000000001000100000000000000000010000100000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000001000100000000000000000101000000000000000001000100000000000000000010000100000000010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100010001000000000000010000010000000000100000010000000000000000010000010000000000000100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100010001000000000000010000010000000000100000010000000000000000010000010000000000000100000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000001000100000000000000000101000000000000000001000100000000000000000010000100000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000001000100000000000000000101000000000000000001000100000000000000000010000100000000010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001111101000000001100000000000000111100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001111101000000001100000000000000111100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111000001100000100100000001111110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110000001100000100100010011110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000000000000000000000000000000000000000000000001110001000111011001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000000011100111000100111 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000100000000000000000000000000000000010000000000000100000000000000000100000010000000000000000100010000010000010000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000100000000000000000000000000000000010000000000000100000000000000000100000010000000000000000100010000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000100000000000000000000000000000000010000000000000100000000000000000100000010000000000000000100010000010000010000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000100000000000000000000000000000000010000000000000100000000000000000100000010000000000000000100010000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000010000000000000000000010000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000011001100000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000000000000000000000000000000000000000000000001110001000111011001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000000011100111000100111 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000101010000000001100011001001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111100000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111100000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000010000000000000000000000000000000000000000000000000000000000000000000001000100000001100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000010000000000000000000000000000000000000000000000000000000000000000000001000100000001100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000010000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000011001100000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000101010000000001100011001001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110000001100000100100000001110100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010000000000010100000000000010000100000011100100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000100100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000001010000100100100100000000000011 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000001010000100100100100000000000011 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000010100000000000000000010011000100100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010010000000000001000000000000000010000000001100101000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100001001000000000000000001100100011000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000010010000000000011100100011 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000010100000000000000000010011000100100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000000000000010011000001100101000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100001001000000000000000001100100011000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000001000000000000000000000000000000010000100000000000000000010000000010000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000001000000000000000000000000000000010000100000000000000000010000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000001000000000000000000000000000000010000100000000000000000010000000010000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000001000000000000000000000000000000010000100000000000000000010000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000010010000000000011100100011 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001000101010001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001000101010001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001000101010001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000011100000000000000000000110000000110000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000011100000000000000000000001001000001001000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000100000000000000000010010000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000100000000001000000000010000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000011100000000000000000000001001000001001000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000011100000000000000000000110000000110000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100100000000000000001001001100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100100000000000000001001001100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100100000000000000001001001100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000100000000001000000000010000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000100000000000000000010010000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000011000000000000000000001000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100100000000000000001001001100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100100000000000000001001001100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100100000000000000001001001100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001000101010001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001000101010001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001000101010001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011100101000100101 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001000000000000000000000010100010101000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000100000000000000000000001010001010100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000001100001000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000001100001000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000001100001000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000010000010100000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000010000010100000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000010000010100000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000010000010100000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001010000011000000110000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000100110000001100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001000000000000000000000010100010101000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000100000000000000000000001010001010100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001010000011000000110000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000100110000001100000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000000000000001001000000011 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000010000010100000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000001000000000000000000001000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000010000010100000101000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000010000000000000000000001000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000001000000000000000000001000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000001100001000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000001100001000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000001100001000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000000000000001001000000011 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000001010110000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000001100100000000010100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000001010110000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000001000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000010011100000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110000000000000000000011000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000001101010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000000001100100001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000101001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000101001100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000101001100000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000001000000000000000000001000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000100000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000100100000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000010000010000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000000000000000000000011000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000000000000000110000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000001001000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000100000000010100000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000000000000000000000011000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100110 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001011000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001001000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000110000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000100000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000001010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001010 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010100 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000001000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000001000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000001000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000001000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000001000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/sgops_ordered.txt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/sgops_ordered.txt new file mode 100755 index 000000000000..7092d23e5412 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/sgops_ordered.txt @@ -0,0 +1,1030 @@ +x,y,z +-x,-y,-z +-x,-y,z +x+1/2,y+1/2,z +-x,y,-z +x,-y,-z +-x+1/2,-y+1/2,z +x,y,-z +x+1/2,-y+1/2,-z +x,y+1/2,z+1/2 +x+1/2,y,z+1/2 +-x,y,z +-x+1/2,-y,z+1/2 +x,-y,z +x+1/2,y+1/2,z+1/2 +-x+1/2,y+1/2,z +-x+1/2,y+1/2,-z +-x,y+1/2,-z+1/2 +x+1/2,y+1/2,-z +x+1/2,-y+1/2,z +y,-x,-z +-y,x,-z +-x,-y+1/2,z+1/2 +-x+1/2,y+1/2,z+1/2 +x,-y+1/2,z+1/2 +x+1/2,-y+1/2,z+1/2 +x+1/2,y,-z+1/2 +-x+1/2,y,z+1/2 +-x+1/2,-y+1/2,z+1/2 +x+1/2,-y,z+1/2 +x+1/2,-y,-z+1/2 +-x,y,z+1/2 +-x,y+1/2,z+1/2 +x+1/2,-y+1/2,-z+1/2 +-x+1/2,-y+1/2,-z +x,-y,z+1/2 +-x+1/2,y+1/2,-z+1/2 +x,y+1/2,-z+1/2 +-x+1/2,y,-z+1/2 +x,y+1/2,-z +x,-y+1/2,-z+1/2 +x+1/2,y+1/2,-z+1/2 +x+1/2,-y,z +x+1/2,y,-z +y,x,-z +x,-y,-z+1/2 +-x,-y,z+1/2 +-x,y+1/2,z +-y,-x,-z +y,z,x +z,x,y +y,-x,z +-y,x,z +y,x,z +-y,-x,z +-x,-y+1/2,-z+1/2 +-x+1/2,-y,-z+1/2 +-x,-y+1/2,z +-x+1/2,-y+1/2,-z+1/2 +-x,y,-z+1/2 +-x+1/2,y,-z +-x+y,-x,z +-y,x-y,z +-x,y+1/2,-z +y+1/2,-x+1/2,-z +-y+1/2,x+1/2,-z +y+1/2,x+1/2,z+1/2 +x,-y+1/2,z +x+1/2,-y,-z +-y,-x,z+1/2 +-x+1/2,y,z +x,-y+1/2,-z +-x+1/2,-y,z +-y+1/2,-x+1/2,z+1/2 +y,x,z+1/2 +y+1/2,-x+1/2,z+1/2 +-y+1/2,x+1/2,z+1/2 +x,y,-z+1/2 +y,-z,-x +-y,z,-x +-y,-z,x +-y+1/2,-x+1/2,z +z,-x,-y +-z,x,-y +-z,-x,y +y+1/2,x+1/2,z +y+1/2,-x+1/2,z +-y+1/2,x+1/2,z +y,x,-z+1/2 +y+1/2,x+1/2,-z+1/2 +-y+1/2,-x+1/2,-z+1/2 +-y,-x,-z+1/2 +-y+1/2,-x+1/2,-z +y+1/2,-x+1/2,-z+1/2 +-y+1/2,x+1/2,-z+1/2 +y+1/2,x+1/2,-z +y,-x+1/2,z+1/2 +-y+1/2,x,z+1/2 +-y,x+1/2,-z+1/2 +-y,-z,-x +-y,z+1/2,-x+1/2 +y+1/2,-x,-z+1/2 +-y+1/2,-z,x+1/2 +y+1/2,-z+1/2,-x +-z,-x,-y +-z,x+1/2,-y+1/2 +-z+1/2,-x,y+1/2 +z+1/2,-x+1/2,-y +y,-x,z+1/2 +-y,x,z+1/2 +-y,x+1/2,z+1/2 +y+1/2,-x,z+1/2 +y,-x+1/2,-z+1/2 +-y+1/2,x,-z+1/2 +x-y,-y,-z +y,x+1/2,z +-y,-x+1/2,z +y,x+1/2,z+1/2 +-y,-x+1/2,z+1/2 +y+1/2,x,z +-y+1/2,-x,z +y+1/2,x,z+1/2 +-y+1/2,-x,z+1/2 +x-y,x,-z +y,-x+y,-z +y,z+1/2,x+1/2 +y,-z+1/2,-x+1/2 +y+1/2,z,x+1/2 +-y+1/2,z,-x+1/2 +y+1/2,z+1/2,x +-y+1/2,-z+1/2,x +z,x+1/2,y+1/2 +z,-x+1/2,-y+1/2 +z+1/2,x,y+1/2 +-z+1/2,x,-y+1/2 +z+1/2,x+1/2,y +-z+1/2,-x+1/2,y +x,z,y +x+1/2,z+1/2,y+1/2 +y,x+1/2,-z+1/2 +-y,-x+1/2,-z+1/2 +y+1/2,x,-z+1/2 +-y+1/2,-x,-z+1/2 +-y+1/4,x+3/4,z+1/4 +z,y,x +z+1/2,y+1/2,x+1/2 +-x,-z,-y +y,-x,-z+1/2 +-y,x,-z+1/2 +y,-x+1/2,z +-y,-z+1/2,x+1/2 +-y+1/2,x,z +y+1/2,-z,-x+1/2 +-y+1/2,z+1/2,-x +y+1/4,-x+1/4,z+3/4 +-z,-x+1/2,y+1/2 +-z,-y,-x +z+1/2,-x,-y+1/2 +-z+1/2,x+1/2,-y +-x,-x+y,-z +-y,x+1/2,-z +y+1/2,-x,-z +y+1/2,z+1/2,x+1/2 +z+1/2,x+1/2,y+1/2 +x,x-y,z +x,x-y,-z +x,x-y,z+1/2 +-x+1/2,-z+1/2,-y+1/2 +-x+y,y,z +-x+y,y,-z +-x+y,y,z+1/2 +y,x+1/2,-z +-y,-x+1/2,-z +y+1/2,x,-z +-y+1/2,-x,-z +-z+1/2,-y+1/2,-x+1/2 +x,-z,-y +-x,z,-y +-x,-z,y +x+1/2,-z+1/2,-y+1/2 +-x+1/2,z+1/2,-y+1/2 +-x+1/2,-z+1/2,y+1/2 +-x+y,-x,z+1/3 +-x+y,-x,z+2/3 +y,-x+1/2,z+1/4 +-y,x+1/2,z+1/4 +-y,x-y,z+1/3 +-y,x-y,z+2/3 +y,z,-x +y,-z,x +-y,z,x +y+1/2,-x,z+3/4 +-y+1/2,x,z+3/4 +-y+1/4,-x+1/4,-z+1/4 +y+1/4,x+3/4,-z+3/4 +-y+3/4,x+1/4,z+3/4 +y+3/4,-x+3/4,z+1/4 +y+3/4,-x+3/4,z+3/4 +z,x,-y +z,-x,y +-z,x,y +z,-y,-x +-z,y,-x +-z,-y,x +z+1/2,-y+1/2,-x+1/2 +-z+1/2,y+1/2,-x+1/2 +-z+1/2,-y+1/2,x+1/2 +-x,-x+y,z +-x,-x+y,z+1/2 +x,z,-y +x,-z,y +-x,z,y +x+1/3,y+2/3,z+2/3 +x+1/4,-y+1/4,z+1/4 +-x+1/4,y+1/4,z+1/4 +x+1/4,-y+3/4,z+3/4 +-x+1/4,y+3/4,z+3/4 +x+2/3,y+1/3,z+1/3 +x+3/4,-y+1/4,z+3/4 +x+3/4,-y+3/4,z+1/4 +-x+3/4,y+3/4,z+1/4 +-x+y+1/3,-x+2/3,z+2/3 +-x+y+2/3,-x+1/3,z+1/3 +x-y,x,z +x-y,x,z+1/2 +x-y,-y,z +x-y,-y,z+1/2 +y,-x+y,z +y,-x+y,z+1/2 +-y+1/2,-z+1/2,-x+1/2 +-y+1/3,x-y+2/3,z+2/3 +y+1/4,-x+3/4,z+1/4 +-y+2/3,x-y+1/3,z+1/3 +y+3/4,x+1/4,-z+1/4 +-y+3/4,x+1/4,z+1/4 +-y+3/4,x+3/4,z+3/4 +-y+3/4,-x+3/4,-z+3/4 +z,y,-x +z,-y,x +-z,y,x +-z+1/2,-x+1/2,-y+1/2 +x+1/2,z+1/2,-y+1/2 +x+1/2,-z+1/2,y+1/2 +-x+1/2,z+1/2,y+1/2 +-x+1/4,-z+1/4,-y+1/4 +x+1/4,z+3/4,-y+3/4 +-x+3/4,y+1/4,z+3/4 +-x+3/4,z+1/4,y+3/4 +x+3/4,-z+3/4,y+1/4 +-x+y,-x,-z +-x+y,y,-z+1/2 +-y,x-y,-z +y,-z+1/2,x+1/2 +-y,z+1/2,x+1/2 +-y,-z+1/2,-x+1/2 +y+1/2,z,-x+1/2 +y+1/2,-z,x+1/2 +-y+1/2,-z,-x+1/2 +y+1/2,z+1/2,-x +-y+1/2,z+1/2,x +-y+1/2,-z+1/2,-x +-y+1/4,x+1/4,z+3/4 +z,-x+1/2,y+1/2 +-z,x+1/2,y+1/2 +-z,-x+1/2,-y+1/2 +z+1/2,x,-y+1/2 +z+1/2,-x,y+1/2 +-z+1/2,-x,-y+1/2 +z+1/2,x+1/2,-y +-z+1/2,x+1/2,y +-z+1/2,-x+1/2,-y +z+1/2,y+1/2,-x+1/2 +z+1/2,-y+1/2,x+1/2 +-z+1/2,y+1/2,x+1/2 +-z+1/4,-y+1/4,-x+1/4 +z+1/4,y+3/4,-x+3/4 +-z+3/4,y+1/4,x+3/4 +z+3/4,-y+3/4,x+1/4 +x,-y+1/4,-z+1/4 +-x,y+1/4,z+1/4 +x,-y+3/4,-z+3/4 +-x,y+3/4,z+3/4 +x+1/2,-y+3/4,-z+1/4 +-x+1/2,y+3/4,z+1/4 +x+1/4,-y,z+1/4 +-x+1/4,y,-z+1/4 +x+1/4,-y+1/2,z+3/4 +-x+1/4,y+1/2,-z+3/4 +x+1/4,y+1/4,-z+1/4 +x+1/4,y+3/4,-z+3/4 +x+3/4,-y,z+3/4 +-x+3/4,y,-z+3/4 +x+3/4,-y+1/2,z+1/4 +-x+3/4,y+1/2,-z+1/4 +x+3/4,y+1/4,-z+3/4 +x+3/4,y+3/4,-z+1/4 +-x+y,-x,-z+1/2 +-y,x+1/2,z +-y,x-y,-z+1/2 +y,-z,-x+1/2 +-y,-z+1/2,x +y+1/2,-x,z +-y+1/2,z,-x +y+1/2,z+1/2,-x+1/2 +y+1/2,-z+1/2,x+1/2 +y+1/2,-z+1/2,-x+1/2 +-y+1/2,z+1/2,x+1/2 +-y+1/2,z+1/2,-x+1/2 +-y+1/2,-z+1/2,x+1/2 +y+1/4,-x+1/4,-z +-y+1/4,x+1/4,z +y+1/4,-x+3/4,z +-y+1/4,x+3/4,-z +y+3/4,-x+1/4,z +-y+3/4,x+1/4,-z +y+3/4,-x+1/4,z+1/4 +y+3/4,x+1/4,-z+3/4 +y+3/4,-x+3/4,-z +-y+3/4,x+3/4,z +-y+3/4,-x+3/4,-z+1/4 +z,-x,-y+1/2 +-z,-x+1/2,y +-z+1/2,x,-y +z+1/2,x+1/2,-y+1/2 +z+1/2,-x+1/2,y+1/2 +z+1/2,-x+1/2,-y+1/2 +-z+1/2,x+1/2,y+1/2 +-z+1/2,x+1/2,-y+1/2 +-z+1/2,-x+1/2,y+1/2 +-x,-x+y,-z+1/2 +-x,-x+y,-z+1/3 +-x,-x+y,-z+2/3 +x,x-y,-z+1/2 +-x,-y+1/2,-z +x,z,y+1/2 +-x,-z,y+1/2 +x,z+1/2,y +-x,z+1/2,-y +x,z+1/2,y+1/2 +x,-z+1/2,-y+1/2 +-x+1/2,-y,-z +x+1/2,-y+1/4,-z+3/4 +-x+1/2,y+1/4,z+3/4 +x+1/2,z,y +x+1/2,-z,-y +x+1/2,z,y+1/2 +-x+1/2,z,-y+1/2 +x+1/2,z+1/2,y +-x+1/2,-z+1/2,y +x+1/4,y+1/4,-z +-x+1/4,-y+1/4,z +x+1/4,y+1/4,-z+3/4 +x+1/4,-y+1/4,z+3/4 +-x+1/4,y+1/4,z+3/4 +x+1/4,y+3/4,-z+1/2 +-x+1/4,-y+3/4,z+1/2 +x+1/4,y+3/4,-z+1/4 +x+1/4,-y+3/4,z+1/4 +-x+1/4,y+3/4,z+1/4 +-x+1/4,-y+3/4,-z+1/4 +x+3/4,y+1/4,-z+1/2 +-x+3/4,-y+1/4,z+1/2 +x+3/4,y+1/4,-z+1/4 +x+3/4,-y+1/4,z+1/4 +-x+3/4,-y+1/4,-z+1/4 +x+3/4,y+3/4,-z +-x+3/4,-y+3/4,z +x+3/4,y+3/4,-z+3/4 +x+3/4,-y+3/4,z+3/4 +-x+3/4,y+3/4,z+3/4 +-x+3/4,-y+3/4,-z+3/4 +x-y,-y,-z+1/2 +y,-x,z+1/4 +-y,x,z+1/4 +y,-x,z+3/4 +-y,x,z+3/4 +y,-x+1/2,-z +-y+1/2,x,-z +y+1/4,-x+1/4,-z+1/2 +-y+1/4,x+1/4,z+1/2 +y+1/4,x+1/4,-z+1/4 +y+1/4,-x+1/4,z+1/4 +-y+1/4,x+1/4,-z+3/4 +-y+1/4,-x+1/4,-z+3/4 +y+1/4,-x+3/4,z+1/2 +-y+1/4,x+3/4,-z+1/2 +y+1/4,x+3/4,-z+1/4 +y+1/4,-x+3/4,-z+1/4 +-y+1/4,x+3/4,z+3/4 +-y+1/4,-x+3/4,-z+3/4 +y+3/4,-x+1/4,z+1/2 +-y+3/4,x+1/4,-z+1/2 +y+3/4,-x+1/4,-z+3/4 +-y+3/4,-x+1/4,-z+3/4 +y+3/4,-x+3/4,-z+1/2 +-y+3/4,x+3/4,z+1/2 +y+3/4,x+3/4,-z+1/4 +-y+3/4,x+3/4,-z+1/4 +z,y,x+1/2 +-z,-y,x+1/2 +z,y+1/2,x +-z,y+1/2,-x +z,y+1/2,x+1/2 +z,-y+1/2,-x+1/2 +z+1/2,y,x +z+1/2,-y,-x +z+1/2,y,x+1/2 +-z+1/2,y,-x+1/2 +z+1/2,y+1/2,x +-z+1/2,-y+1/2,x +x,-y+1/2,-z+1/4 +-x,y+1/2,-z+1/4 +x,-z,-y+1/2 +-x,z,-y+1/2 +x,-z+1/2,-y +-x,-z+1/2,y +-x,z+1/2,y+1/2 +-x,z+1/2,-y+1/2 +-x,-z+1/2,y+1/2 +-x,-z+1/2,-y+1/2 +x+1/2,-y,-z+3/4 +-x+1/2,y,-z+3/4 +-x+1/2,z,-y +-x+1/2,-z,y +x+1/2,-z,y+1/2 +x+1/2,-z,-y+1/2 +-x+1/2,-z,y+1/2 +-x+1/2,-z,-y+1/2 +x+1/2,z+1/2,-y +x+1/2,-z+1/2,-y +-x+1/2,z+1/2,-y +-x+1/2,-z+1/2,-y +-x+1/3,-y+2/3,-z+2/3 +x+1/4,y+1/4,-z+1/2 +-x+1/4,-y+1/4,z+1/2 +-x+1/4,-y+1/4,-z+1/4 +-x+1/4,-y+1/4,-z+3/4 +x+1/4,y+3/4,-z +-x+1/4,-y+3/4,z +-x+1/4,-y+3/4,-z+3/4 +x+1/4,z+1/4,-y+1/4 +x+1/4,-z+1/4,y+1/4 +-x+1/4,z+1/4,y+1/4 +x+1/4,-z+1/4,y+3/4 +-x+1/4,z+3/4,y+1/4 +x+1/4,-z+3/4,y+3/4 +-x+1/4,z+3/4,y+3/4 +-x+1/4,-z+3/4,-y+3/4 +-x+2/3,-y+1/3,-z+1/3 +x+3/4,y+1/4,-z +-x+3/4,-y+1/4,z +-x+3/4,y+1/4,z+1/4 +-x+3/4,-y+1/4,-z+3/4 +x+3/4,y+3/4,-z+1/2 +-x+3/4,-y+3/4,z+1/2 +-x+3/4,-y+3/4,-z+1/4 +x+3/4,z+1/4,-y+1/4 +x+3/4,z+1/4,-y+3/4 +x+3/4,-z+1/4,y+3/4 +-x+3/4,-z+1/4,-y+3/4 +x+3/4,z+3/4,-y+1/4 +-x+3/4,z+3/4,y+1/4 +-x+3/4,-z+3/4,-y+1/4 +-x+3/4,-z+3/4,-y+3/4 +x-y+1/3,x+2/3,-z+2/3 +x-y+2/3,x+1/3,-z+1/3 +y,x,-z+1/3 +y,x,-z+2/3 +y,z+1/2,-x+1/2 +y,-z+1/4,-x+1/4 +-y,z+1/4,x+1/4 +y,-z+3/4,-x+3/4 +-y,z+3/4,x+3/4 +y+1/2,-x+1/2,z+1/4 +-y+1/2,x+1/2,z+1/4 +y+1/2,-x+1/2,z+3/4 +-y+1/2,x+1/2,z+3/4 +-y+1/2,z,x+1/2 +y+1/2,-z+1/2,x +y+1/2,-z+1/4,-x+3/4 +-y+1/2,z+1/4,x+3/4 +y+1/2,-z+3/4,-x+1/4 +-y+1/2,z+3/4,x+1/4 +y+1/3,-x+y+2/3,-z+2/3 +y+1/4,x+1/4,z +y+1/4,x+1/4,-z +-y+1/4,-x+1/4,z +-y+1/4,-x+1/4,-z +y+1/4,x+1/4,z+1/2 +y+1/4,x+1/4,-z+1/2 +-y+1/4,-x+1/4,z+1/2 +-y+1/4,-x+1/4,-z+1/2 +y+1/4,x+1/4,z+1/4 +-y+1/4,x+1/4,z+1/4 +y+1/4,x+1/4,-z+3/4 +y+1/4,x+3/4,z +y+1/4,x+3/4,-z +-y+1/4,-x+3/4,z +-y+1/4,-x+3/4,-z +y+1/4,x+3/4,z+1/2 +y+1/4,x+3/4,-z+1/2 +-y+1/4,-x+3/4,z+1/2 +-y+1/4,-x+3/4,-z+1/2 +-y+1/4,-x+3/4,-z+1/4 +y+1/4,-x+3/4,z+3/4 +-y+1/4,-x+3/4,z+3/4 +y+1/4,-z,x+1/4 +-y+1/4,z,-x+1/4 +y+1/4,-z+1/2,x+3/4 +-y+1/4,z+1/2,-x+3/4 +y+1/4,z+1/4,-x +-y+1/4,-z+1/4,x +y+1/4,z+3/4,-x+1/2 +-y+1/4,-z+3/4,x+1/2 +y+2/3,-x+y+1/3,-z+1/3 +y+3/4,x+1/4,z +y+3/4,x+1/4,-z +-y+3/4,-x+1/4,z +-y+3/4,-x+1/4,-z +y+3/4,x+1/4,z+1/2 +y+3/4,x+1/4,-z+1/2 +-y+3/4,-x+1/4,z+1/2 +-y+3/4,-x+1/4,-z+1/2 +-y+3/4,-x+1/4,z+1/4 +-y+3/4,-x+1/4,-z+1/4 +y+3/4,-x+1/4,z+3/4 +y+3/4,x+3/4,z +y+3/4,x+3/4,-z +-y+3/4,-x+3/4,z +-y+3/4,-x+3/4,-z +y+3/4,x+3/4,z+1/2 +y+3/4,x+3/4,-z+1/2 +-y+3/4,-x+3/4,z+1/2 +-y+3/4,-x+3/4,-z+1/2 +-y+3/4,x+3/4,z+1/4 +y+3/4,x+3/4,z+3/4 +y+3/4,x+3/4,-z+3/4 +y+3/4,-z,x+3/4 +-y+3/4,z,-x+3/4 +y+3/4,-z+1/2,x+1/4 +-y+3/4,z+1/2,-x+1/4 +y+3/4,z+1/4,-x+1/2 +-y+3/4,-z+1/4,x+1/2 +y+3/4,z+3/4,-x +-y+3/4,-z+3/4,x +z,x+1/2,-y+1/2 +z,-x+1/4,-y+1/4 +-z,x+1/4,y+1/4 +z,-x+3/4,-y+3/4 +-z,x+3/4,y+3/4 +z,-y,-x+1/2 +-z,y,-x+1/2 +z,-y+1/2,-x +-z,-y+1/2,x +-z,y+1/2,x+1/2 +-z,y+1/2,-x+1/2 +-z,-y+1/2,x+1/2 +-z,-y+1/2,-x+1/2 +-z+1/2,x,y+1/2 +z+1/2,-x+1/2,y +z+1/2,-x+1/4,-y+3/4 +-z+1/2,x+1/4,y+3/4 +z+1/2,-x+3/4,-y+1/4 +-z+1/2,x+3/4,y+1/4 +-z+1/2,y,-x +-z+1/2,-y,x +z+1/2,-y,x+1/2 +z+1/2,-y,-x+1/2 +-z+1/2,-y,x+1/2 +-z+1/2,-y,-x+1/2 +z+1/2,y+1/2,-x +z+1/2,-y+1/2,-x +-z+1/2,y+1/2,-x +-z+1/2,-y+1/2,-x +z+1/4,-x,y+1/4 +-z+1/4,x,-y+1/4 +z+1/4,-x+1/2,y+3/4 +-z+1/4,x+1/2,-y+3/4 +z+1/4,x+1/4,-y +-z+1/4,-x+1/4,y +z+1/4,x+3/4,-y+1/2 +-z+1/4,-x+3/4,y+1/2 +z+1/4,y+1/4,-x+1/4 +z+1/4,-y+1/4,x+1/4 +-z+1/4,y+1/4,x+1/4 +z+1/4,-y+1/4,x+3/4 +-z+1/4,y+3/4,x+1/4 +z+1/4,-y+3/4,x+3/4 +-z+1/4,y+3/4,x+3/4 +-z+1/4,-y+3/4,-x+3/4 +z+3/4,-x,y+3/4 +-z+3/4,x,-y+3/4 +z+3/4,-x+1/2,y+1/4 +-z+3/4,x+1/2,-y+1/4 +z+3/4,x+1/4,-y+1/2 +-z+3/4,-x+1/4,y+1/2 +z+3/4,x+3/4,-y +-z+3/4,-x+3/4,y +z+3/4,y+1/4,-x+1/4 +z+3/4,y+1/4,-x+3/4 +z+3/4,-y+1/4,x+3/4 +-z+3/4,-y+1/4,-x+3/4 +z+3/4,y+3/4,-x+1/4 +-z+3/4,y+3/4,x+1/4 +-z+3/4,-y+3/4,-x+1/4 +-z+3/4,-y+3/4,-x+3/4 +x,y+1/2,-z+1/4 +-x,-y+1/2,-z+1/4 +x,z,-y+1/2 +-x,-z,-y+1/2 +x,-z+1/2,y +-x,-z+1/2,-y +x,z+1/2,-y+1/2 +x,-z+1/2,y+1/2 +x+1/2,y,-z+3/4 +-x+1/2,-y,-z+3/4 +x+1/2,-y+1/2,-z+1/4 +-x+1/2,y+1/2,-z+1/4 +x+1/2,-y+1/2,-z+3/4 +-x+1/2,y+1/2,-z+3/4 +-x+1/2,z,y +-x+1/2,-z,-y +x+1/2,z,-y+1/2 +-x+1/2,z,y+1/2 +x+1/2,-z+1/2,y +-x+1/2,z+1/2,y +-x+1/3,-x+y+2/3,-z+2/3 +x+1/3,x-y+2/3,z+1/6 +x+1/3,x-y+2/3,z+2/3 +x+1/4,z+1/4,y+1/4 +-x+1/4,z+1/4,-y+3/4 +x+1/4,-z+3/4,-y+1/4 +-x+1/4,-z+3/4,y+3/4 +-x+2/3,-x+y+1/3,-z+1/3 +x+2/3,x-y+1/3,z+1/3 +x+2/3,x-y+1/3,z+5/6 +-x+3/4,-z+1/4,y+1/4 +x+3/4,-z+1/4,-y+3/4 +-x+3/4,z+3/4,-y+1/4 +x+3/4,z+3/4,y+3/4 +-x+y+1/3,y+2/3,z+1/6 +-x+y+1/3,y+2/3,z+2/3 +-x+y+2/3,y+1/3,z+1/3 +-x+y+2/3,y+1/3,z+5/6 +x-y,x,z+1/3 +x-y,x,z+1/6 +x-y,x,z+2/3 +x-y,x,z+5/6 +x-y+1/3,-y+2/3,-z+2/3 +x-y+2/3,-y+1/3,-z+1/3 +-y,-x,-z+1/3 +-y,-x,-z+2/3 +y,x+1/2,z+1/4 +-y,-x+1/2,z+1/4 +y,x+1/2,z+3/4 +-y,-x+1/2,z+3/4 +y,-x+1/4,z+3/4 +-y,x+1/4,-z+3/4 +y,-x+3/4,z+1/4 +-y,x+3/4,-z+1/4 +y,-x+y,z+1/3 +y,-x+y,z+1/6 +y,-x+y,z+2/3 +y,-x+y,z+5/6 +-y,z,x+1/2 +y,z+1/2,-x +y+1/2,x,z+1/4 +-y+1/2,-x,z+1/4 +y+1/2,x,z+3/4 +-y+1/2,-x,z+3/4 +y+1/2,-x+3/4,z+3/4 +-y+1/2,x+3/4,-z+3/4 +y+1/2,-x+5/4,z+1/4 +-y+1/2,x+5/4,-z+1/4 +y+1/2,-z,x +-y+1/3,-x+2/3,z+1/6 +y+1/3,x+2/3,-z+2/3 +-y+1/3,-x+2/3,z+2/3 +y+1/4,-x,-z+1/4 +-y+1/4,x,z+1/4 +y+1/4,-x+1/2,-z+3/4 +-y+1/4,x+1/2,z+3/4 +y+1/4,z+1/4,-x+1/4 +y+1/4,-z+1/4,x+1/4 +-y+1/4,z+1/4,x+1/4 +-y+1/4,-z+1/4,-x+1/4 +y+1/4,z+3/4,-x+3/4 +y+1/4,-z+3/4,x+3/4 +-y+1/4,z+3/4,x+3/4 +-y+1/4,-z+3/4,-x+3/4 +y+2/3,x+1/3,-z+1/3 +-y+2/3,-x+1/3,z+1/3 +-y+2/3,-x+1/3,z+5/6 +y+3/4,-x,-z+3/4 +-y+3/4,x,z+3/4 +y+3/4,-x+1/2,-z+1/4 +-y+3/4,x+1/2,z+1/4 +y+3/4,-x+5/4,z+1/4 +y+3/4,z+1/4,-x+3/4 +y+3/4,-z+1/4,x+3/4 +-y+3/4,z+1/4,x+3/4 +-y+3/4,-z+1/4,-x+3/4 +y+3/4,z+3/4,-x+1/4 +y+3/4,-z+3/4,x+1/4 +-y+3/4,z+3/4,x+1/4 +-y+3/4,-z+3/4,-x+1/4 +-z,x,y+1/2 +z,x+1/2,-y +z,y,-x+1/2 +-z,-y,-x+1/2 +z,-y+1/2,x +-z,-y+1/2,-x +z,y+1/2,-x+1/2 +z,-y+1/2,x+1/2 +z+1/2,-x,y +-z+1/2,y,x +-z+1/2,-y,-x +z+1/2,y,-x+1/2 +-z+1/2,y,x+1/2 +z+1/2,-y+1/2,x +-z+1/2,y+1/2,x +z+1/4,x+1/4,-y+1/4 +z+1/4,-x+1/4,y+1/4 +-z+1/4,x+1/4,y+1/4 +-z+1/4,-x+1/4,-y+1/4 +z+1/4,x+3/4,-y+3/4 +z+1/4,-x+3/4,y+3/4 +-z+1/4,x+3/4,y+3/4 +-z+1/4,-x+3/4,-y+3/4 +z+1/4,y+1/4,x+1/4 +-z+1/4,y+1/4,-x+3/4 +z+1/4,-y+3/4,-x+1/4 +-z+1/4,-y+3/4,x+3/4 +z+3/4,x+1/4,-y+3/4 +z+3/4,-x+1/4,y+3/4 +-z+3/4,x+1/4,y+3/4 +-z+3/4,-x+1/4,-y+3/4 +z+3/4,x+3/4,-y+1/4 +z+3/4,-x+3/4,y+1/4 +-z+3/4,x+3/4,y+1/4 +-z+3/4,-x+3/4,-y+1/4 +-z+3/4,-y+1/4,x+1/4 +z+3/4,-y+1/4,-x+3/4 +-z+3/4,y+3/4,-x+1/4 +z+3/4,y+3/4,x+3/4 +x,x-y,-z+1/3 +x,x-y,-z+1/6 +x,x-y,-z+2/3 +x,x-y,-z+5/6 +x,-y,-z+1/4 +-x,y,-z+1/4 +x,-y,-z+3/4 +-x,y,-z+3/4 +x,-y+1/2,-z+3/4 +-x,y+1/2,-z+3/4 +x,-y+1/4,z +-x,y+1/4,z +x,-y+1/4,-z+3/4 +-x,y+1/4,z+3/4 +x,y+3/4,-z+1/4 +x,-y+3/4,-z+1/4 +-x,y+3/4,z+1/4 +-x,-y+3/4,-z+1/4 +x,-z,y+1/2 +-x,z,y+1/2 +x,z+1/2,-y +-x,z+1/2,y +x,-z+1/4,-y+1/4 +-x,z+1/4,y+1/4 +x,-z+1/4,-y+3/4 +-x,z+1/4,y+3/4 +x,-z+3/4,-y+1/4 +-x,z+3/4,y+1/4 +x,-z+3/4,-y+3/4 +-x,z+3/4,y+3/4 +x+1/2,-y,-z+1/4 +-x+1/2,y,-z+1/4 +x+1/2,y+1/4,-z+3/4 +-x+1/2,-y+1/4,-z+3/4 +x+1/2,-y+3/4,z+1/2 +-x+1/2,y+3/4,z+1/2 +x+1/2,-y+3/4,-z+3/4 +-x+1/2,y+3/4,z+3/4 +x+1/2,-y+5/4,-z+1/4 +-x+1/2,y+5/4,z+1/4 +x+1/2,-y+5/4,-z+3/4 +-x+1/2,y+5/4,z+3/4 +x+1/2,z,-y +x+1/2,-z,y +x+1/2,-z+1/4,-y+1/4 +-x+1/2,z+1/4,y+1/4 +x+1/2,-z+1/4,-y+3/4 +-x+1/2,z+1/4,y+3/4 +x+1/2,-z+3/4,-y+1/4 +-x+1/2,z+3/4,y+1/4 +x+1/2,-z+3/4,-y+3/4 +-x+1/2,z+3/4,y+3/4 +-x+1/3,-x+y+2/3,-z+1/6 +x+1/4,-y,z+3/4 +-x+1/4,y,-z+3/4 +x+1/4,-y+1/2,z+1/4 +-x+1/4,y+1/2,-z+1/4 +-x+1/4,-y+5/4,-z+3/4 +x+1/4,-z,y+1/4 +-x+1/4,z,-y+1/4 +x+1/4,-z,y+3/4 +-x+1/4,z,-y+3/4 +x+1/4,-z+1/2,y+1/4 +-x+1/4,z+1/2,-y+1/4 +x+1/4,-z+1/2,y+3/4 +-x+1/4,z+1/2,-y+3/4 +x+1/4,z+1/4,-y +-x+1/4,-z+1/4,y +x+1/4,z+1/4,-y+1/2 +-x+1/4,-z+1/4,y+1/2 +x+1/4,z+3/4,-y +-x+1/4,-z+3/4,y +x+1/4,z+3/4,-y+1/2 +-x+1/4,-z+3/4,y+1/2 +-x+2/3,-x+y+1/3,-z+5/6 +x+3/4,-y,z+1/4 +-x+3/4,y,-z+1/4 +x+3/4,-y+1/2,z+3/4 +-x+3/4,y+1/2,-z+3/4 +-x+3/4,y+5/4,z+1/4 +-x+3/4,y+5/4,z+3/4 +x+3/4,-z,y+1/4 +-x+3/4,z,-y+1/4 +x+3/4,-z,y+3/4 +-x+3/4,z,-y+3/4 +x+3/4,-z+1/2,y+1/4 +-x+3/4,z+1/2,-y+1/4 +x+3/4,-z+1/2,y+3/4 +-x+3/4,z+1/2,-y+3/4 +x+3/4,z+1/4,-y +-x+3/4,-z+1/4,y +x+3/4,z+1/4,-y+1/2 +-x+3/4,-z+1/4,y+1/2 +x+3/4,z+3/4,-y +-x+3/4,-z+3/4,y +x+3/4,z+3/4,-y+1/2 +-x+3/4,-z+3/4,y+1/2 +-x+y,y,-z+1/3 +-x+y,y,-z+2/3 +x-y,-y,-z+1/3 +x-y,-y,-z+2/3 +x-y+1/3,-y+2/3,-z+1/6 +x-y+2/3,-y+1/3,-z+5/6 +y,x,-z+1/4 +-y,-x,-z+1/4 +-y,-x,-z+1/6 +y,x,-z+3/4 +-y,-x,-z+3/4 +-y,-x,-z+5/6 +y,x+1/2,-z+1/4 +-y,-x+1/2,-z+1/4 +y,x+1/2,-z+3/4 +y,-x+1/2,z+3/4 +-y,x+1/2,z+3/4 +-y,-x+1/2,-z+3/4 +y,-x+1/4,-z +-y,x+1/4,-z +y,-x+1/4,z+1/4 +y,-x+1/4,-z+1/4 +-y,x+1/4,z+1/4 +-y,x+1/4,-z+1/4 +y,-x+1/4,-z+3/4 +-y,x+1/4,z+3/4 +y,x+3/4,z+1/4 +y,-x+3/4,-z+1/4 +-y,x+3/4,z+1/4 +-y,-x+3/4,z+1/4 +y,-x+3/4,z+3/4 +y,-x+3/4,-z+3/4 +-y,x+3/4,z+3/4 +-y,x+3/4,-z+3/4 +y+1/2,x,-z+1/4 +y+1/2,-x,z+1/4 +-y+1/2,x,z+1/4 +-y+1/2,-x,-z+1/4 +y+1/2,x,-z+3/4 +-y+1/2,-x,-z+3/4 +y+1/2,-x+1/4,-z+1/4 +-y+1/2,x+1/4,z+1/4 +y+1/2,x+1/4,z+3/4 +y+1/2,-x+1/4,-z+3/4 +-y+1/2,x+1/4,z+3/4 +-y+1/2,-x+1/4,z+3/4 +y+1/2,-x+3/4,-z+1/2 +-y+1/2,x+3/4,-z+1/2 +y+1/2,-x+3/4,z+1/4 +y+1/2,-x+3/4,-z+1/4 +-y+1/2,x+3/4,z+1/4 +-y+1/2,x+3/4,-z+1/4 +y+1/2,-x+3/4,-z+3/4 +-y+1/2,x+3/4,z+3/4 +y+1/2,-x+5/4,z+3/4 +-y+1/2,x+5/4,-z+3/4 +y+1/3,x+2/3,-z+1/6 +y+1/4,-x,z+1/4 +-y+1/4,x,-z+1/4 +y+1/4,-x,z+3/4 +y+1/4,-x,-z+3/4 +-y+1/4,x,z+3/4 +-y+1/4,x,-z+3/4 +y+1/4,-x+1/2,z+1/4 +y+1/4,-x+1/2,-z+1/4 +-y+1/4,x+1/2,z+1/4 +-y+1/4,x+1/2,-z+1/4 +y+1/4,-x+1/2,z+3/4 +-y+1/4,x+1/2,-z+3/4 +y+1/4,-x+1/4,z+1/2 +-y+1/4,x+1/4,-z+1/2 +-y+1/4,x+1/4,-z+1/4 +y+1/4,x+1/4,z+3/4 +y+1/4,-x+3/4,-z+1/2 +-y+1/4,x+3/4,z+1/2 +-y+1/4,-x+3/4,z+1/4 +y+1/4,-x+3/4,-z+3/4 +y+1/4,-x+5/4,z+3/4 +-y+1/4,x+5/4,z+3/4 +y+1/4,z+1/4,-x+3/4 +y+1/4,-z+1/4,x+3/4 +-y+1/4,z+1/4,x+3/4 +-y+1/4,-z+1/4,-x+3/4 +y+1/4,z+3/4,-x+1/4 +y+1/4,-z+3/4,x+1/4 +-y+1/4,z+3/4,x+1/4 +-y+1/4,-z+3/4,-x+1/4 +y+2/3,x+1/3,-z+5/6 +y+3/4,-x,z+1/4 +y+3/4,-x,-z+1/4 +-y+3/4,x,z+1/4 +-y+3/4,x,-z+1/4 +y+3/4,-x,z+3/4 +-y+3/4,x,-z+3/4 +y+3/4,-x+1/2,z+1/4 +-y+3/4,x+1/2,-z+1/4 +y+3/4,-x+1/2,z+3/4 +y+3/4,-x+1/2,-z+3/4 +-y+3/4,x+1/2,z+3/4 +-y+3/4,x+1/2,-z+3/4 +y+3/4,-x+1/4,-z+1/2 +-y+3/4,x+1/4,z+1/2 +y+3/4,-x+1/4,-z+1/4 +-y+3/4,-x+1/4,z+3/4 +y+3/4,-x+3/4,z+1/2 +-y+3/4,x+3/4,-z+1/2 +y+3/4,x+3/4,z+1/4 +-y+3/4,x+3/4,-z+3/4 +-y+3/4,x+5/4,z+1/4 +y+3/4,z+1/4,-x+1/4 +y+3/4,-z+1/4,x+1/4 +-y+3/4,z+1/4,x+1/4 +-y+3/4,-z+1/4,-x+1/4 +y+3/4,z+3/4,-x+3/4 +y+3/4,-z+3/4,x+3/4 +-y+3/4,z+3/4,x+3/4 +-y+3/4,-z+3/4,-x+3/4 +z,-y,x+1/2 +-z,y,x+1/2 +z,y+1/2,-x +-z,y+1/2,x +z,-y+1/4,-x+1/4 +-z,y+1/4,x+1/4 +z,-y+1/4,-x+3/4 +-z,y+1/4,x+3/4 +z,-y+3/4,-x+1/4 +-z,y+3/4,x+1/4 +z,-y+3/4,-x+3/4 +-z,y+3/4,x+3/4 +z+1/2,y,-x +z+1/2,-y,x +z+1/2,-y+1/4,-x+1/4 +-z+1/2,y+1/4,x+1/4 +z+1/2,-y+1/4,-x+3/4 +-z+1/2,y+1/4,x+3/4 +z+1/2,-y+3/4,-x+1/4 +-z+1/2,y+3/4,x+1/4 +z+1/2,-y+3/4,-x+3/4 +-z+1/2,y+3/4,x+3/4 +z+1/4,x+1/4,-y+3/4 +z+1/4,-x+1/4,y+3/4 +-z+1/4,x+1/4,y+3/4 +-z+1/4,-x+1/4,-y+3/4 +z+1/4,x+3/4,-y+1/4 +z+1/4,-x+3/4,y+1/4 +-z+1/4,x+3/4,y+1/4 +-z+1/4,-x+3/4,-y+1/4 +z+1/4,-y,x+1/4 +-z+1/4,y,-x+1/4 +z+1/4,-y,x+3/4 +-z+1/4,y,-x+3/4 +z+1/4,-y+1/2,x+1/4 +-z+1/4,y+1/2,-x+1/4 +z+1/4,-y+1/2,x+3/4 +-z+1/4,y+1/2,-x+3/4 +z+1/4,y+1/4,-x +-z+1/4,-y+1/4,x +z+1/4,y+1/4,-x+1/2 +-z+1/4,-y+1/4,x+1/2 +z+1/4,y+3/4,-x +-z+1/4,-y+3/4,x +z+1/4,y+3/4,-x+1/2 +-z+1/4,-y+3/4,x+1/2 +z+3/4,x+1/4,-y+1/4 +z+3/4,-x+1/4,y+1/4 +-z+3/4,x+1/4,y+1/4 +-z+3/4,-x+1/4,-y+1/4 +z+3/4,x+3/4,-y+3/4 +z+3/4,-x+3/4,y+3/4 +-z+3/4,x+3/4,y+3/4 +-z+3/4,-x+3/4,-y+3/4 +z+3/4,-y,x+1/4 +-z+3/4,y,-x+1/4 +z+3/4,-y,x+3/4 +-z+3/4,y,-x+3/4 +z+3/4,-y+1/2,x+1/4 +-z+3/4,y+1/2,-x+1/4 +z+3/4,-y+1/2,x+3/4 +-z+3/4,y+1/2,-x+3/4 +z+3/4,y+1/4,-x +-z+3/4,-y+1/4,x +z+3/4,y+1/4,-x+1/2 +-z+3/4,-y+1/4,x+1/2 +z+3/4,y+3/4,-x +-z+3/4,-y+3/4,x +z+3/4,y+3/4,-x+1/2 +-z+3/4,-y+3/4,x+1/2 +-z+3/4,-y+3/4,x+1/2 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getAFLOW.spt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getAFLOW.spt new file mode 100755 index 000000000000..6eb99bae6635 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getAFLOW.spt @@ -0,0 +1,63 @@ + + +outdir = "c:/temp/bilbao/examples/"; +aflowroot = "https://www.aflowlib.org/prototype-encyclopedia/"; +aflowpages = ["triclinic_lattice.html","monoclinic_lattice.html","orthorhombic_lattice.html","tetragonal_lattice.html", +"trigonal_lattice.html","hexagonal_lattice.html","cubic_lattice.html"]; + +/* does not work +function getAFLOWPages() { + for (var page in aflowpages) { + var x = load(aflowroot + page); + write var x @{outdir + "data/aflow_" + page}; + } +} +*/ + +function createAFlowJSON() { + var out = {}; + for (var page in aflowpages) { + var fname = outdir + "data/aflow_" + page; + var aflowdata = load(fname).split('a href="'); + for (name in aflowdata) { + var aname = name; + if (aname[1] != "A") continue; + aname = aname.split(".html")[1]; + var sg = aname.split("_")[3]; + var sgs = out[sg]; + if (!sgs) { + sgs = []; + out[sg] = sgs; + } + sgs.push(aname); + } + } + out = out.format("JSON"); + write var out @{outdir + "aflow_structures.json"}; + +} + +aflowjson = ""; + +function showSG(n, i) { + + if (!aflowjson) { + aflowjson = load(outdir + "aflow_structures.json","JSON"); + } + var sgs = aflowjson["" + n]; + if (!i) i = 1; + var aname = sgs[i]; + + var url = aflowroot + "CIF/" + aname + ".cif"; + load @url packed; + draw spacegroup all; + set drawhover; + color {*} translucent; + set drawhover; +} + +showSG 200; +//draw off +//wireframe -0.1 +//draw *rot3* on + diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getITA.spt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getITA.spt new file mode 100755 index 000000000000..76168de75fb8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getITA.spt @@ -0,0 +1,535 @@ +// Bob Hanson hansonr@stolaf.edu + + +// getIta.spt +// +// 2023.10.24 Bob Hanson hansonr@stolaf.edu +// +// requires Jmol 16.2.5 or higher +// +// Create JSON of International Tables space group data, +// including all settings found using the getgen program +// for the settings (using &settings=ITA+Settings) +// and for general positions (using &what=text and mat=-y,-z,x-y) +// +// For generators and Wyckoff positions, we use trgen +// with flags what=gen and what=wpos. &trmat=c,-a-c,b is used rather than &trm=-y,-z,x-y +// +// for example: +// +// https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-getgen?gnum=7&what=text&mat=x,y,z +// https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-getgen?gnum=7&settings=ITA+Settings +// https://www.cryst.ehu.es/cgi-bin/cryst/programs//nph-trgen?gnum=51&what=gen&trmat=b,a,-c +// +// settings included are those from getgen, not wp-list: +// +// https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-wp-list?gnum=7&settings=ITA+Settings +// +// which are far more abundant. Note that with just a bit of modification, this script could be used to +// create files from any desired list of transformations. For now I a just using this simple list. +// +// General position coordinates for Wyckoff positions are skipped, as they are redundant. +// +// Output files are available in the src/org/jmol/symmetry/sg/json folder +// + +// a bit of hardwiring: + +targetDir = "c:/temp/bilbao/ita/"; + +// variables for the createJSONFiles call (below), after the functions + +issues = []; + +itadelay = 0.1; +itaFirst = 5; +itaLast = 230; +itaForceNew = false; +ncleg = 0; + +// only one function to run here: + +function createJSONFiles(n, forceNew) { + + // creates ita_.json, by space group + + // n option to start at a given number (-30), or only a certain number (30), or all (0) + // forceNew option true to overwrite local files; false to use them if they are there. + + var allSettings = []; + var allMore = []; + var allTransforms = [["i", "clegId","det","hm","hm_alt","hall", "more"]]; // , "xyz"]]; + var allOps = []; + for (var i = 1; i <= itaLast; i++) { + if (n < 0 && i < -n || n > 0 && i != n) { + continue; + } + _getAllOps(i, allOps); + var adata = _createJSONArray(i, forceNew, allSettings, allMore, allTransforms); + var thedata = adata.format("JSON"); + var fname = targetDir + "json/ita_" + i + ".json"; + write var thedata @fname; + } + if (n == 0 || n == -1) { + allSettings += allMore; + var thedata = allSettings.format("JSON"); + var fname = targetDir + "json/ita_all.json"; + write var thedata @fname; + thedata = allOps.format("JSON"); + fname = targetDir + "json/ops_all.json"; + write var thedata @fname; + for (var g in allSettings) { + if (g.gen) { + g.ngen = g.pop("gen").length; + g.ngp = g.pop("gp").length; + g.nwpos = g.pop("wpos").pos.length; + } + } + fname = targetDir + "json/ita_list.json"; + write var thedata @fname; + var thedata = allTransforms.join("\t",TRUE); + var fname = targetDir + "txt/cleg_settings.tab"; + write var thedata @fname; + + + print "done -- " + allSettings.length + " settings and " + allOps.length + " operations"; + } + print issues; +} + +function _getAllOps(sg, allOps) { + var y = _getITADataHTM(sg, 1, "gp_full", "", "", forceNew).split('")[2].split("

")[1].trim().replace("\n"," |"); + var ita = _fixName((y[i+1])[2][0].split("","_")); + allOps.push({"sg":i,"xyz":xyz,"ita":ita,"seitz":seitz,"m":m}); + } +} + +// all other functions are "private" to this script + +function _createJSONArray(i, forceNew, allSettings, allMore, allTransforms) { + + // Create ITA records for a specific space group. + + // start by getting the ITA settings using getgen + // some reordering is done for groups 48, 50, 59, 68, and 78, + // which for some reason are not presented with the default (a,b,c) transformation + // as the first setting on the list. + + var x = _getITADataHTM(i, 0, "", "", "", forceNew); + + var myTransforms = ""; + + var x = x.split("")[1]); + } + its.hm = _fixHM(its.hm); + if (its.hm.find(" (")) { + a = its.hm.replace(")", " (").split(" ("); + its.hm = a[2] + if(a[3];a[3];""); + its.hmAlt = a[1] + if(a[3];a[3];""); + } + its.id = its.hm.replace(" ","_").replace(":",""); + var tm = _getField(href, "trmat", 100); + if (!tm)tm = "a,b,c"; +// its.tm = tm; + its.trm = _toTransform(tm, true); + its.det = unitcell(its.trm,true)%1%2; + its.clegId = "" + i + ":" + its.trm; + its.set = j; + its.sg = i; + if (tm == "a,b,c" && j > 1 || outOfOrder) { + // out of order! -- we want origin 2 to be first here because it is the default + // space groups 48, 50, 59, 68, and 70 + if (!outOfOrder) { + for (var k = sg.its.length; k > 0; --k) { + var kk = k + x.length/2; + var itk = sg.its[k]; + sg.its[kk] = itk; + } + } + k0++; + sg.its[k0] = its; + outOfOrder = true; + } else { + sg.its.push(its); + } + var gdata = _getGPText(i, j, tm, its.hm, forceNew); + its.gp = _getGPJson(its, gdata); + gdata = _getITADataHTM(i, j, "gen", tm, "", forceNew); + its.gen = _getGeneratorJson(gdata); + gdata = _getITADataHTM(i, j, "wpos", tm, unconv, forceNew); + its.wpos = _getWyckoffJson(its, gdata); + } + for (var j = 1; j <= sg.its.length; j++) { + ns++; + var s = sg.its[j]; + s.set = j; + allSettings.push(s); + //var xyz = s.gp.join(";"); + var hall = if(j == 1;s.hall;""); + var atr = [++ncleg, s.clegId, s.det, s.hm, s.hmAlt, hall ]; + allTransforms.push(atr); + myTransforms += ";" + s.clegId + ";" + } + var more = _getWPListJSON(i, sg, myTransforms, allMore.length, allTransforms, forceNew); + if (more) { + for (var j = 1; j<= more.length; j++) { + more[j].set = sg.n + j; +print "" + j + " " + more[j].set + " " + sg.n; + sg.its.push(more[j]); + } + sg.n++; +print more; +// sg.its += more; + +print sg.its; + allMore += more; + //issues.push(more); + } + return sg; +} + +function _getWPListJSON(i, sg, myTransforms, nm, allTransforms, forceNew) { + var more = []; + print "getwplistJson " + nm; + var a = _getITADataHTM(i, 0, "wp-list", "", "", forceNew).split("trgen"); + for (var j = 2; j <= a.length; j++) { + var href = a[j].split('">')[1]; + var tm = _getField(href, "trmat", 100); + var trm = _toTransform(tm, true); + var clegId = "" + i + ":" + trm; + if (!myTransforms.find(";" + clegId + ";")) { + var unconv = _fixHM(_fixName(_getField(href, "unconv", 100))); + nm++; + var sm = { + "clegId":clegId, + "det": unitcell(trm,true)%1%2, + "more": true, + "hm":unconv, + "id": unconv.replace(" ","_").replace(":",""), +// "i": nm, +// "tm": tm, + "sg": i, + "trm": trm}; + more.push(sm); + var atr = [++ncleg, sm.clegId, sm.det, sm.hm, "", "", nm ]; + allTransforms.push(atr); + + } + } + return if(more.length ; more ; null); + + +} + +function _fixHM(hm) { + return hm.replace("[origin ",":").replace("[ cell choice ",":").replace("]","").trim(); +} + +function _getITADataHTM(i, j, what, trmat, unconv, forceNew) { + +// https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-wp-list?gnum=7&settings=ITA+Settings + + // the main function for retieving data from trgen or getgen + + var localFile = targetDir + "data/" + if(what ; what ; "its") + "_" + i + if(j;"_"+j+".html";".htm"); + var prog = if (what == "wp-list" ; what ; if(trmat ; "trgen" ; "getgen")); + var url = if(forceNew ; "https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-" + prog + + "?gnum=" + i + + if(what && what != "wp-list" ; "&what=" + what.split("_")[1] ; "&settings=ITA+Settings") + + if(trmat ; "&trmat=" + trmat ; "") + + if(unconv ; "&unconv=" + _fixURI(unconv) + "&from=ita" ; "") + ; localFile); + //print "getting " + url; + delay @itadelay; + var gdata = load(url); + if (forceNew) { + write var gdata @localFile; + } else if (gdata.find("FileNotFound")) { + gdata = _getITADataHTM(i, j, what, trmat, unconv, true); + } + return gdata; +} + +function _getGPText(i, j, trmat, hm, forceNew) { + + + var bcsCall = "https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-getgen" + + "?gnum=" + i + "&what=text&mat=" + _toXYZ(trmat); + + //issues.push("# " + i + " " + j + " " + hm + " " + trmat + " " + bcsCall); + + // specifically for retieving data from getgen for general position text + var localFile = targetDir + "data/gp_" + i + if(j;"_"+j+".html";".htm"); + var url = if(forceNew ; bcsCall ; localFile); + //print "getting " + url; + delay @itadelay; + var gdata = load(url); + if (forceNew) { + write var gdata @localFile; + } else if (gdata.find("FileNotFound")) { + gdata = _getGPText(i, j, trmat, true); + } + return gdata; +} + +function _getGPJson(its, gdata) { + + // just split the text on the tag + // normalize -n/m to +(1-n/m); "+1," to "," + + var gp = []; + var d = gdata.split(""); + var xyzlist = ""; + for (var j = 2; j <= d.length; j++) { + var xyz0 = d[j].split(" ")[2].split("<")[1]; + var xyz = _fixUnitXYZ(xyz0); + var key = ";" + xyz + ";"; + if (xyzlist.find(key)) { + //issues += "removed " + xyz0 + " in " + its.sg + "." + its.set; + continue; + } else if (xyz != xyz0) { + //issues += "replaced " + xyz0 + " with " + xyz + " in " + its.sg + "." + its.set; + } + xyzlist += key; + gp.push(xyz); + } + var xyz = gp.join(";"); + var sg = spacegroup(xyz); + if (sg && sg.type == "hash") { + its.jmolId = sg.jmolId; + its.hall = sg.HallSymbol; + } else { + its.jmolId = _newJmolEntry(its, gp, xyz); + //issues.push(e); + } + return gp; +} + +function _newJmolEntry(its, gp, xyz) { + var lc = its.hm %-9999; + var n = gp.count; + var key = "" + its.sg + ":" + lc[1]; + //var e = "\t\"" + key + ";" + n + ";-;" + lc + ";xyz;" + xyz + "\", // ITA " + its.sg + "." + its.set; + return key; +} + +function _fixURI(s) { + return s.replace(" ","%20"); +} + +function _fixUnitXYZ(xyz) { + // this only for translation + // ITA gives non-normalized transformed operations for several settings, particularly when + // rotating to F from I or C from P in tetragonals, h to r in trigonals, and I to F in cubics. + // normalizes the code and removes the duplicated operators in case those are created + return (xyz + ",").replace("-1/2","+1/2").replace("-3/2","+1/2").replace("+3/2","+1/2").replace("-1/4","+3/4").replace("-3/4","+1/4").replace("-1/3","+2/3").replace("-2/3","+1/3").replace("-1/6","+5/6").replace("-5/6","+1/6").replace("-1/8","+7/8").replace("-3/8","+5/8").replace("-7/8","+1/8").replace("-1/12","+11/12").replace("-5/12","+7/12").replace("-7/12","+5/12").replace("-11/12","+1/12").replace("+1,",",")[1][-1]; +} + +function _getGeneratorJson(gdata) { + + // parse the generator list using
tags. All cases return two columns here, + // so we always just skip the first column. + + var gen = []; + var y = gdata.split(""); + for (var j = 5; j <= y.length; j += 3) { + var coor = y[j++].split("")[1] + "," + y[j++].split("")[1] + "," + y[j++].split("")[1]; + gen.push(_fixUnitXYZ(coor)); + } + return gen; +} + +function _getWyckoffJson(its, gdata) { + // Wyckoff positions are a bit trickier. + // currently adding some Jmol-derived geometric elements here, just for the first member of the list. + var wyck = {}; + var isUnconv = gdata.find("Standard/Default setting"); + gdata = gdata.split("NOTE")[-1]; + var w = gdata.split("Wyck"); + var y = w[0].split("align=center>")[2][0]; + var pos = []; + wyck.pos = pos; + var n = 0; + var nctr = 0; + for (var j = 1; j <= y.length; j++) { + if (j == 1 && y[j].find("(")) { + if (isUnconv) { + // skip first column + j++; + } + var c = y[j].split(" 0) + wyck.cent = cent; + continue; + } + var d = {}; + d.mult = 0+y[j++].split("")[0]; + td = td.split(""); + var coor = []; + for (var k = 2; k <= td.length; k++) { + var t = td[k]; + if (t.find('(') == 1) { + t = '">' + t; + } + if (t.find('">') && t.find(')')) { + var p = t.split('">')[2].split("(")[2].split(")")[1]; + coor.push(p); + } + } + d.mult = coor.length * (nctr + 1); + if (++n == 1) { + // skip first, which is general positions in a transformed format + d.geom = "general"; + } else { + d.coord = coor; + d.geom = _getWyckoffElement(coor[1]); + } + pos.push(d); + } + return wyck; +} + + +function _getWyckoffElement(p) { + var xyz = p.split(","); + var n = 0; + var nxyz = ({}); + for (var i = 1; i <= 3; i++) { + if (xyz[i].find('x')) { + nxyz |= 1; + } + if (xyz[i].find('y')) { + nxyz |= 2; + } + if (xyz[i].find('z')) { + nxyz |= 3; + } + } + switch (nxyz.length) { + case 0: + return "point"; + case 1: + return "line"; + case 2: + return "plane"; + } + return "general"; +} + +// utility methods + +function _fixName(s) { + + // remove HTML markings, fix "unconv" :R + + return (s.trim() + .replace("","").replace("","") + .replace("","").replace("","") + .replace("","").replace("","") + .replace("|","|")).replace(" "," ").replace(":R",":r"); +} + +m40 = [[0 0 0 0][0 0 0 0][0 0 0 0][0 0 0 1]]; + +function _toTransform(xyz){ + // 1 0 -1 | 0 + // 0 1 0 | 0 + // 0 0 2 | 1/2 + // + // x-z,y,2z+1/2 to "a,b,-a+2c;0,0,1/2 (transposed) + // a,b,-a+2c+1/2 also to "a,b,-a+2c;0,0,1/2 (not transposed) + + // the function unitcell() runs org.jmol.symmetry.UnitCell.getMatrixAndUnitCell() + // unitcell() removes any embedded translations and puts the rotation in xyz-row,abc column format + // we get any embedded translation using symop() + + var m = -unitcell(xyz, true); + var abc = symop(m, "xyz").replace('x','a').replace('y','b').replace('z','c'); + + var t = symop(xyz, "matrix")%2; + if (t == 0) { + return abc; + } + return abc + ";" + symop(m40 + t, "xyz"); +} + +function _toXYZ(abc){ + + // getGen needs the transposed matrix, in xyz format. + // this does the trick, as -m4 is the transpose of m4, and symop(matrix, "xyz") + // will accept a,b,c and return x,y,z + // check for translation and don't transpose that + + var a = symop(abc, "matrix"); + var t = a%2; // get translation vector + if (1.0 * t == 0) { + // transpose if no translation + a = -a; + } else { + // remove translation from 4x4, transpose it, then return translation + a = -(a + -t) + t; + } + return symop(a, "xyz"); +} + +function _getField(gdata, field, max) { + + // get a &... field form a URL + + var i = gdata.find(field + "="); + return (i == 0 ? "" : (gdata[i+field.length + 1][i+max] + "&").split("&")[1]); +} + +createJSONFiles(itaFirst, itaForceNew); + + +/** +2024.04.09 fixing :R as :r in HM 146,148,155,160,166,167 +2024.03.23 adjusted to incorporate all ITA settings (611) plus all already in Jmol (total 689) +2024.04.18 its.cleg -> its.clegId and adds :a,b,c to default settings +2024.04.22 adds "more:true" settings (from wp-list) diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getSubgroups.spt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getSubgroups.spt new file mode 100755 index 000000000000..0356d5e7ddd8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/getSubgroups.spt @@ -0,0 +1,225 @@ +// Bob Hanson hansonr@stolaf.edu + +// 1604 subGroups; 3767 settings + +// a bit of hardwiring: + +targetDir = "c:/temp/bilbao/subgroups/"; + +// variables for the createJSONFiles call (below), after the functions + +itadelay = 0.1; +itaFirst = 0; +itaForceNew = false; +htmlOnly = true; +maxindex = 4; +nsubs = 0; +ntrm = 0; +// only one function to run here: +function createSubJSONFiles(n, forceNew) { + + nsubs = 0; + ntrm = 0; + + // creates ita_.json, by space group + + // n option to start at a given number (-30), or only a certain number (30), or all (0) + // forceNew option true to overwrite local files; false to use them if they are there. + + var allTransforms = [["i", "cleg", "tr_type", "tr_subtype" "det", "index", "conj_class"]] + for (var i = 1; i <= 230; i++) { + if (n < 0 && i < -n || n > 0 && i != n) { + continue; + } + var adata = {"sg":i, "created":now("").trim()}; + _getAllSubs(i, adata, allTransforms); + var thedata = adata.format("JSON"); + var fname = targetDir + "json/sub_" + i + ".json"; + write var thedata @fname; + + + } + + if (n == 0 || n == -1) { + + var thedata = allTransforms.join("\t",TRUE); + var fname = targetDir + "txt/cleg_subgroups.txt"; + write var thedata @fname; + + print "DONE " + nsubs + " subGroups; " + ntrm + " cleg"; + + } + +} + +function _getAllSubs(group, adata, allTransforms) { + var subs = []; + adata.subgroups = subs; + // split by buttons + var y = _getSubDataHTM(group, 0, "sub", "", forceNew).split(' maxIndex) continue; + isub++; + var subgroup = _getField(href, "sub"); + var stype = _getField(href, "type"); + var subtype = stype[2][0]; + stype = stype[1]; + var hm = _fixName(gdata.split("")[2].split("")[1]); + var a = {"i":0+isub, + "subgroup":0+subgroup, + "subgroupHM":hm, + "trType":stype, + "trSubtype": subtype, + "subgroupIndex":0+sindex};//, "url": "" + href}; + // name="trm" value="%31%2F%32x%2B%31%2F%32y%2C%2D%31%2F%32x%2B%31%2F%32y%2Cz" + var sdata = _getSubDataHTM(group, isub, "sub", href, forcenew).split('"trm"'); + var transforms = []; + + // Conjugacy class a + var s = sdata[1]; + var sdet; + for (var t = 2; t <= sdata.length; t++) { + nt++; + var ac = s.split("> Conjugacy class "); + if (ac[2]) + conjClass = ac[2].split("<")[1].trim(); + s = sdata[t]; + var xyz = _fixURI(_getField(s,"value")); + var tabc = _toTransform(xyz); + sdet = unitcell(tabc,true)%1%2; + var abc = conjClass + ":" + tabc;// + "=" + xyz; + transforms.push(abc); + allTransforms.push([ntrm + nt, "" + group + ">" + tabc + ">" + subgroup, stype, subtype, sdet, sindex, conjClass]); + } + a["det"] = sdet; + a["trm"] = transforms; + subs.push(a); + } + adata.HM = groupHM; + adata.nSubgroups = subs.length; + adata.nSettings = nt; + nsubs += subs.length; + ntrm = += nt; +} + +// all other functions are "private" to this script + +function _getSubDataHTM(i, j, what, url0, forceNew) { + +//https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-lxi?submit=choose+it&gnum=90 + + var localFile = targetDir + "data/" + what + "_" + i + if(j;"_"+j+".html";".htm"); + var url = if(url0;url0;"nph-lxi?submit=choose+it&gnum=" + i); + url = if(forceNew ; "https://www.cryst.ehu.es/cgi-bin/cryst/programs/" + url; localFile); + + print url; + delay @itadelay; + var gdata = load(url); + if (forceNew) { + write var gdata @localFile; + } else if (gdata.find("FileNotFound")) { + gdata = _getSubDataHTM(i, j, what, url0, true); + } + return gdata; +} + +function _getField(gdata, field, max) { + + if (!max) max = 0; + + // get a &... field form a URL + + var ret; + var i = gdata.find(field + "="); + if (i == 0) return ""; + gdata = gdata[i + field.length + 1][0]; + if (gdata[1] == '"') { + return gdata.split('"')[2]; + } + return (gdata[1][max] + "&").split("&")[1]; +} + +// utility methods + +function _fixName(s) { + + // remove HTML markings + + return (s.trim() + .replace("","").replace("","") + .replace("","").replace("","") + .replace("","").replace("","") + .replace("|","|")).replace(" "," "); +} + + +function _fixURI(s) { + s = s.replace('%3A',':').replace('%3B',';').replace('%3','').replace('%2F','/').replace('%2B','+').replace('%2C',',') + return s.replace('%2D','-').replace('%2E','.').replace('%28','(').replace('%29',')').replace('%20',' ') +} + +m40 = [[0 0 0 0][0 0 0 0][0 0 0 0][0 0 0 1]]; + +function _toTransform(xyz){ + // 1 0 -1 | 0 + // 0 1 0 | 0 + // 0 0 2 | 1/2 + // + // x-z,y,2z+1/2 to "a,b,-a+2c;0,0,1/2 (transposed) + // a,b,-a+2c+1/2 also to "a,b,-a+2c;0,0,1/2 (not transposed) + + // the function unitcell() runs org.jmol.symmetry.UnitCell.getMatrixAndUnitCell() + // unitcell() removes any embedded translations and puts the rotation in xyz-row,abc column format + // we get any embedded translation using symop() + + var m = -unitcell(xyz, true); + var abc = symop(m, "xyz").replace('x','a').replace('y','b').replace('z','c'); + + var t = symop(xyz, "matrix")%2; + if (t == 0) { + return abc; + } + return abc + ";" + symop(m40 + t, "xyz"); +} + +function _toXYZ(abc, asTrm){ + + // getGen needs the transposed matrix, in xyz format. + // this does the trick, as -m4 is the transpose of m4, and symop(matrix, "xyz") + // will accept a,b,c and return x,y,z + // check for translation and don't transpose that + + var a = symop(abc, "matrix"); + var t = a%2; // get translation vector + if (1.0 * t == 0) { + // transpose if no translation + a = -a; + } else { + // remove translation from 4x4, transpose it, then return translation + a = -(a + -t) + t; + } + return symop(a, "xyz"); +} + + +createSubJSONFiles(itaFirst, itaForceNew); + + + +/** + +function test() { +} + +test(subs) + +Lots missing, but no first setting at least. +First one missing is #75 (tetragonols) and last is #167 (trigonals, :r option never implemented in Jmol). + diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/sg.spt b/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/sg.spt new file mode 100755 index 000000000000..638b4f934ca6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/spt/sg.spt @@ -0,0 +1,39 @@ +// BH 2024.03.28 creates the list of space groups and all their operators for insertion into sg_all.xls +// this is the starting point for creating sg_all.txt and +x = spacegroup("all") +types = {"all":[1, 230]} + +issues = []; +found = ""; +for (name in types) { +lat = types[name] + +nsg = 0; +a = "" +for (var sg in x) { +print sg.jmolId + " " + sg.ita; + key = ";" + sg.jmolId + ";" + if (found.find(key) || sg.jmolId.find("*") > 0) { //|| sg.ita < lat[1] || sg.ita > lat[2]) { + print "dup " + sg.jmolId +issues += [sg.jmolId + " " + sg.ita + " " + sg.itaIndex] + continue + } + nsg++; + found += key; + var s = sg.jmolId.split(":") + var post = (s.length == 1 ? "" : ":" + s[2]) + var pre = "\n\"" + s[1].format("%03s")+post + "\"\t\"" + var list = sg.operationsXYZ + var n = sg.operationCount + for (var i = 1; i <= n; i++){ + a += pre + list[i] + "\"" + } +} + +write var a @{"c:/temp/sg_"+name} +print issues +print "" + nsg + " " + issues.length +} + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/cleg_settings.tab b/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/cleg_settings.tab new file mode 100755 index 000000000000..a600d9a59417 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/cleg_settings.tab @@ -0,0 +1,612 @@ +# cleg hm hall +1 1 P 1 P 1 +2 2 P -1 -P 1 +3 3 P 1 2 1 P 2y +4 3:c,a,b P 1 1 2 +5 3:b,c,a P 2 1 1 +6 4 P 1 21 1 P 2yb +7 4:c,a,b P 1 1 21 +8 4:b,c,a P 21 1 1 +9 5 C 1 2 1 C 2y +10 5:-a-c,b,a A 1 2 1 +11 5:c,b,-a-c I 1 2 1 +12 5:c,a,b A 1 1 2 +13 5:a,-a-c,b B 1 1 2 +14 5:-a-c,c,b I 1 1 2 +15 5:b,c,a B 2 1 1 +16 5:b,a,-a-c C 2 1 1 +17 5:b,-a-c,c I 2 1 1 +18 6 P 1 m 1 P -2y +19 6:c,a,b P 1 1 m +20 6:b,c,a P m 1 1 +21 7 P 1 c 1 P -2yc +22 7:-a-c,b,a P 1 n 1 +23 7:c,b,-a-c P 1 a 1 +24 7:c,a,b P 1 1 a +25 7:a,-a-c,b P 1 1 n +26 7:-a-c,c,b P 1 1 b +27 7:b,c,a P b 1 1 +28 7:b,a,-a-c P n 1 1 +29 7:b,-a-c,c P c 1 1 +30 8 C 1 m 1 C -2y +31 8:-a-c,b,a A 1 m 1 +32 8:c,b,-a-c I 1 m 1 +33 8:c,a,b A 1 1 m +34 8:a,-a-c,b B 1 1 m +35 8:-a-c,c,b I 1 1 m +36 8:b,c,a B m 1 1 +37 8:b,a,-a-c C m 1 1 +38 8:b,-a-c,c I m 1 1 +39 9 C 1 c 1 C -2yc +40 9:-a-c,b,a A 1 n 1 +41 9:c,b,-a-c I 1 a 1 +42 9:c,-b,a A 1 a 1 +43 9:a,-b,-a-c C 1 n 1 +44 9:-a-c,-b,c I 1 c 1 +45 9:c,a,b A 1 1 a +46 9:a,-a-c,b B 1 1 n +47 9:-a-c,c,b I 1 1 b +48 9:a,c,-b B 1 1 b +49 9:-a-c,a,-b A 1 1 n +50 9:c,-a-c,-b I 1 1 a +51 9:b,c,a B b 1 1 +52 9:b,a,-a-c C n 1 1 +53 9:b,-a-c,c I c 1 1 +54 9:-b,a,c C c 1 1 +55 9:-b,-a-c,a B n 1 1 +56 9:-b,c,-a-c I b 1 1 +57 10 P 1 2/m 1 -P 2y +58 10:c,a,b P 1 1 2/m +59 10:b,c,a P 2/m 1 1 +60 11 P 1 21/m 1 -P 2yb +61 11:c,a,b P 1 1 21/m +62 11:b,c,a P 21/m 1 1 +63 12 C 1 2/m 1 -C 2y +64 12:-a-c,b,a A 1 2/m 1 +65 12:c,b,-a-c I 1 2/m 1 +66 12:c,a,b A 1 1 2/m +67 12:a,-a-c,b B 1 1 2/m +68 12:-a-c,c,b I 1 1 2/m +69 12:b,c,a B 2/m 1 1 +70 12:b,a,-a-c C 2/m 1 1 +71 12:b,-a-c,c I 2/m 1 1 +72 13 P 1 2/c 1 -P 2yc +73 13:-a-c,b,a P 1 2/n 1 +74 13:c,b,-a-c P 1 2/a 1 +75 13:c,a,b P 1 1 2/a +76 13:a,-a-c,b P 1 1 2/n +77 13:-a-c,c,b P 1 1 2/b +78 13:b,c,a P 2/b 1 1 +79 13:b,a,-a-c P 2/n 1 1 +80 13:b,-a-c,c P 2/c 1 1 +81 14 P 1 21/c 1 -P 2ybc +82 14:-a-c,b,a P 1 21/n 1 +83 14:c,b,-a-c P 1 21/a 1 +84 14:c,a,b P 1 1 21/a +85 14:a,-a-c,b P 1 1 21/n +86 14:-a-c,c,b P 1 1 21/b +87 14:b,c,a P 21/b 1 1 +88 14:b,a,-a-c P 21/n 1 1 +89 14:b,-a-c,c P 21/c 1 1 +90 15 C 1 2/c 1 -C 2yc +91 15:-a-c,b,a A 1 2/n 1 +92 15:c,b,-a-c I 1 2/a 1 +93 15:c,-b,a A 1 2/a 1 +94 15:a,-b,-a-c C 1 2/n 1 +95 15:-a-c,-b,c I 1 2/c 1 +96 15:c,a,b A 1 1 2/a +97 15:a,-a-c,b B 1 1 2/n +98 15:-a-c,c,b I 1 1 2/b +99 15:a,c,-b B 1 1 2/b +100 15:-a-c,a,-b A 1 1 2/n +101 15:c,-a-c,-b I 1 1 2/a +102 15:b,c,a B 2/b 1 1 +103 15:b,a,-a-c C 2/n 1 1 +104 15:b,-a-c,c I 2/c 1 1 +105 15:-b,a,c C 2/c 1 1 +106 15:-b,-a-c,a B 2/n 1 1 +107 15:-b,c,-a-c I 2/b 1 1 +108 16 P 2 2 2 P 2 2 +109 17 P 2 2 21 P 2c 2 +110 17:c,a,b P 21 2 2 +111 17:b,c,a P 2 21 2 +112 18 P 21 21 2 P 2 2ab +113 18:c,a,b P 2 21 21 +114 18:b,c,a P 21 2 21 +115 19 P 21 21 21 P 2ac 2ab +116 20 C 2 2 21 C 2c 2 +117 20:c,a,b A 21 2 2 +118 20:b,c,a B 2 21 2 +119 21 C 2 2 2 C 2 2 +120 21:c,a,b A 2 2 2 +121 21:b,c,a B 2 2 2 +122 22 F 2 2 2 F 2 2 +123 23 I 2 2 2 I 2 2 +124 24 I 21 21 21 I 2b 2c +125 25 P m m 2 P 2 -2 +126 25:c,a,b P 2 m m +127 25:b,c,a P m 2 m +128 26 P m c 21 P 2c -2 +129 26:b,a,-c P c m 21 +130 26:c,a,b P 21 m a +131 26:-c,b,a P 21 a m +132 26:b,c,a P b 21 m +133 26:a,-c,b P m 21 b +134 27 P c c 2 P 2 -2c +135 27:c,a,b P 2 a a +136 27:b,c,a P b 2 b +137 28 P m a 2 P 2 -2a +138 28:b,a,-c P b m 2 +139 28:c,a,b P 2 m b +140 28:-c,b,a P 2 c m +141 28:b,c,a P c 2 m +142 28:a,-c,b P m 2 a +143 29 P c a 21 P 2c -2ac +144 29:b,a,-c P b c 21 +145 29:c,a,b P 21 a b +146 29:-c,b,a P 21 c a +147 29:b,c,a P c 21 b +148 29:a,-c,b P b 21 a +149 30 P n c 2 P 2 -2bc +150 30:b,a,-c P c n 2 +151 30:c,a,b P 2 n a +152 30:-c,b,a P 2 a n +153 30:b,c,a P b 2 n +154 30:a,-c,b P n 2 b +155 31 P m n 21 P 2ac -2 +156 31:b,a,-c P n m 21 +157 31:c,a,b P 21 m n +158 31:-c,b,a P 21 n m +159 31:b,c,a P n 21 m +160 31:a,-c,b P m 21 n +161 32 P b a 2 P 2 -2ab +162 32:c,a,b P 2 c b +163 32:b,c,a P c 2 a +164 33 P n a 21 P 2c -2n +165 33:b,a,-c P b n 21 +166 33:c,a,b P 21 n b +167 33:-c,b,a P 21 c n +168 33:b,c,a P c 21 n +169 33:a,-c,b P n 21 a +170 34 P n n 2 P 2 -2n +171 34:c,a,b P 2 n n +172 34:b,c,a P n 2 n +173 35 C m m 2 C 2 -2 +174 35:c,a,b A 2 m m +175 35:b,c,a B m 2 m +176 36 C m c 21 C 2c -2 +177 36:b,a,-c C c m 21 +178 36:c,a,b A 21 m a +179 36:-c,b,a A 21 a m +180 36:b,c,a B b 21 m +181 36:a,-c,b B m 21 b +182 37 C c c 2 C 2 -2c +183 37:c,a,b A 2 a a +184 37:b,c,a B b 2 b +185 38 A m m 2 A 2 -2 +186 38:b,a,-c B m m 2 +187 38:c,a,b B 2 m m +188 38:-c,b,a C 2 m m +189 38:b,c,a C m 2 m +190 38:a,-c,b A m 2 m +191 39 A e m 2 A 2 -2b +192 39:b,a,-c B m e 2 +193 39:c,a,b B 2 e m +194 39:-c,b,a C 2 m e +195 39:b,c,a C m 2 e +196 39:a,-c,b A e 2 m +197 40 A m a 2 A 2 -2a +198 40:b,a,-c B b m 2 +199 40:c,a,b B 2 m b +200 40:-c,b,a C 2 c m +201 40:b,c,a C c 2 m +202 40:a,-c,b A m 2 a +203 41 A e a 2 A 2 -2ab +204 41:b,a,-c B b e 2 +205 41:c,a,b B 2 e b +206 41:-c,b,a C 2 c e +207 41:b,c,a C c 2 e +208 41:a,-c,b A e 2 a +209 42 F m m 2 F 2 -2 +210 42:c,a,b F 2 m m +211 42:b,c,a F m 2 m +212 43 F d d 2 F 2 -2d +213 43:c,a,b F 2 d d +214 43:b,c,a F d 2 d +215 44 I m m 2 I 2 -2 +216 44:c,a,b I 2 m m +217 44:b,c,a I m 2 m +218 45 I b a 2 I 2 -2c +219 45:c,a,b I 2 c b +220 45:b,c,a I c 2 a +221 46 I m a 2 I 2 -2a +222 46:b,a,-c I b m 2 +223 46:c,a,b I 2 m b +224 46:-c,b,a I 2 c m +225 46:b,c,a I c 2 m +226 46:a,-c,b I m 2 a +227 47 P m m m -P 2 2 +228 48 P n n n [origin 2] -P 2ab 2bc +229 48:a,b,c;1/4,1/4,1/4 P n n n :1 +230 49 P c c m -P 2 2c +231 49:c,a,b P m a a +232 49:b,c,a P b m b +233 50 P b a n [origin 2] -P 2ab 2b +234 50:c,a,b P n c b :2 +235 50:b,c,a P c n a :2 +236 50:a,b,c;1/4,1/4,0 P b a n :1 +237 50:c,a,b;1/4,1/4,0 P n c b :1 +238 50:b,c,a;1/4,1/4,0 P c n a :1 +239 51 P m m a -P 2a 2a +240 51:b,a,-c P m m b +241 51:c,a,b P b m m +242 51:-c,b,a P c m m +243 51:b,c,a P m c m +244 51:a,-c,b P m a m +245 52 P n n a -P 2a 2bc +246 52:b,a,-c P n n b +247 52:c,a,b P b n n +248 52:-c,b,a P c n n +249 52:b,c,a P n c n +250 52:a,-c,b P n a n +251 53 P m n a -P 2ac 2 +252 53:b,a,-c P n m b +253 53:c,a,b P b m n +254 53:-c,b,a P c n m +255 53:b,c,a P n c m +256 53:a,-c,b P m a n +257 54 P c c a -P 2a 2ac +258 54:b,a,-c P c c b +259 54:c,a,b P b a a +260 54:-c,b,a P c a a +261 54:b,c,a P b c b +262 54:a,-c,b P b a b +263 55 P b a m -P 2 2ab +264 55:c,a,b P m c b +265 55:b,c,a P c m a +266 56 P c c n -P 2ab 2ac +267 56:c,a,b P n a a +268 56:b,c,a P b n b +269 57 P b c m -P 2c 2b +270 57:b,a,-c P c a m +271 57:c,a,b P m c a +272 57:-c,b,a P m a b +273 57:b,c,a P b m a +274 57:a,-c,b P c m b +275 58 P n n m -P 2 2n +276 58:c,a,b P m n n +277 58:b,c,a P n m n +278 59 P m m n [origin 2] -P 2ab 2a +279 59:c,a,b P n m m :2 +280 59:b,c,a P m n m :2 +281 59:a,b,c;1/4,1/4,0 P m m n :1 +282 59:c,a,b;1/4,1/4,0 P n m m :1 +283 59:b,c,a;1/4,1/4,0 P m n m :1 +284 60 P b c n -P 2n 2ab +285 60:b,a,-c P c a n +286 60:c,a,b P n c a +287 60:-c,b,a P n a b +288 60:b,c,a P b n a +289 60:a,-c,b P c n b +290 61 P b c a -P 2ac 2ab +291 61:b,a,-c P c a b +292 62 P n m a -P 2ac 2n +293 62:b,a,-c P m n b +294 62:c,a,b P b n m +295 62:-c,b,a P c m n +296 62:b,c,a P m c n +297 62:a,-c,b P n a m +298 63 C m c m -C 2c 2 +299 63:b,a,-c C c m m +300 63:c,a,b A m m a +301 63:-c,b,a A m a m +302 63:b,c,a B b m m +303 63:a,-c,b B m m b +304 64 C m c e -C 2ac 2 +305 64:b,a,-c C c m e +306 64:c,a,b A e m a +307 64:-c,b,a A e a m +308 64:b,c,a B b e m +309 64:a,-c,b B m e b +310 65 C m m m -C 2 2 +311 65:c,a,b A m m m +312 65:b,c,a B m m m +313 66 C c c m -C 2 2c +314 66:c,a,b A m a a +315 66:b,c,a B b m b +316 67 C m m a (C m m e) -C 2a 2 +317 67:b,a,-c C m m b (C m m e) +318 67:c,a,b A b m m (A e m m) +319 67:-c,b,a A c m m (A e m m) +320 67:b,c,a B m c m (B m e m) +321 67:a,-c,b B m a m (B m e m) +322 68 C c c a (C c c e) [origin 2] -C 2a 2ac +323 68:b,a,-c C c c b (C c c e) :2 +324 68:c,a,b A b a a (A e a a) :2 +325 68:-c,b,a A c a a (A e a a) :2 +326 68:b,c,a B b c b (B b e b) :2 +327 68:a,-c,b B b a b (B b e b) :2 +328 68:a,b,c;0,1/4,1/4 C c c a (C c c e) :1 +329 68:b,a,-c;0,1/4,1/4 C c c b (C c c e) :1 +330 68:c,a,b;0,1/4,1/4 A b a a (A e a a) :1 +331 68:-c,b,a;0,1/4,1/4 A c a a (A e a a) :1 +332 68:b,c,a;0,1/4,1/4 B b c b (B b e b) :1 +333 68:a,-c,b;0,1/4,1/4 B b a b (B b e b) :1 +334 69 F m m m -F 2 2 +335 70 F d d d [origin 2] -F 2uv 2vw +336 70:a,b,c;-1/8,-1/8,-1/8 F d d d :1 +337 71 I m m m -I 2 2 +338 72 I b a m -I 2 2c +339 72:c,a,b I m c b +340 72:b,c,a I c m a +341 73 I b c a -I 2b 2c +342 73:b,a,-c I c a b +343 74 I m m a -I 2b 2 +344 74:b,a,-c I m m b +345 74:c,a,b I b m m +346 74:-c,b,a I c m m +347 74:b,c,a I m c m +348 74:a,-c,b I m a m +349 75 P 4 P 4 +350 75:a-b,a+b,c C 4 +351 76 P 41 P 4w +352 76:a-b,a+b,c C 41 +353 77 P 42 P 4c +354 77:a-b,a+b,c C 42 +355 78 P 43 P 4cw +356 78:a-b,a+b,c C 43 +357 79 I 4 I 4 +358 79:a-b,a+b,c F 4 +359 80 I 41 I 4bw +360 80:a-b,a+b,c F 41 +361 81 P -4 P -4 +362 81:a-b,a+b,c C -4 +363 82 I -4 I -4 +364 82:a-b,a+b,c F -4 +365 83 P 4/m -P 4 +366 83:a-b,a+b,c C 4/m +367 84 P 42/m -P 4c +368 84:a-b,a+b,c C 42/m +369 85 P 4/n [origin 2] -P 4a +370 85:a-b,a+b,c C 4/e :2 +371 85:a,b,c;-1/4,1/4,0 P 4/n :1 +372 85:a-b,a+b,c;-1/4,1/4,0 C 4/e :1 +373 86 P 42/n [origin 2] -P 4bc +374 86:a-b,a+b,c C 42/e :2 +375 86:a,b,c;-1/4,-1/4,-1/4 P 42/n :1 +376 86:a-b,a+b,c;-1/4,-1/4,-1/4 C 42/e :1 +377 87 I 4/m -I 4 +378 87:a-b,a+b,c F 4/m +379 88 I 41/a [origin 2] -I 4ad +380 88:a-b,a+b,c F 41/d :2 +381 88:a,b,c;0,-1/4,-1/8 I 41/a :1 +382 88:a-b,a+b,c;0,-1/4,-1/8 F 41/d :1 +383 89 P 4 2 2 P 4 2 +384 89:a-b,a+b,c C 4 2 2 +385 90 P 4 21 2 P 4ab 2ab +386 90:a-b,a+b,c C 4 2 21 +387 91 P 41 2 2 P 4w 2c +388 91:a-b,a+b,c C 41 2 2 +389 92 P 41 21 2 P 4abw 2nw +390 92:a-b,a+b,c C 41 2 21 +391 93 P 42 2 2 P 4c 2 +392 93:a-b,a+b,c C 42 2 2 +393 94 P 42 21 2 P 4n 2n +394 94:a-b,a+b,c C 42 2 21 +395 95 P 43 2 2 P 4cw 2c +396 95:a-b,a+b,c C 43 2 2 +397 96 P 43 21 2 P 4nw 2abw +398 96:a-b,a+b,c C 43 2 21 +399 97 I 4 2 2 I 4 2 +400 97:a-b,a+b,c F 4 2 2 +401 98 I 41 2 2 I 4bw 2bw +402 98:a-b,a+b,c F 41 2 2 +403 99 P 4 m m P 4 -2 +404 99:a-b,a+b,c C 4 m m +405 100 P 4 b m P 4 -2ab +406 100:a-b,a+b,c C 4 m g1 +407 101 P 42 c m P 4c -2c +408 101:a-b,a+b,c C 42 m c +409 102 P 42 n m P 4n -2n +410 102:a-b,a+b,c C 42 m g2 +411 103 P 4 c c P 42 -2c +412 103:a-b,a+b,c C 4 c c +413 104 P 4 n c P 4 -2n +414 104:a-b,a+b,c C 4 c g2 +415 105 P 42 m c P 4c -2 +416 105:a-b,a+b,c C 42 c m +417 106 P 42 b c P 4c -2ab +418 106:a-b,a+b,c C 42 c g1 +419 107 I 4 m m I 4 -2 +420 107:a-b,a+b,c F 4 m m +421 108 I 4 c m I 4 -2c +422 108:a-b,a+b,c F 4 m c +423 109 I 41 m d I 4bw -2 +424 109:a-b,a+b,c F 41 d m +425 110 I 41 c d I 4bw -2c +426 110:a-b,a+b,c F 41 d c +427 111 P -4 2 m P -4 2 +428 111:a-b,a+b,c C -4 m 2 +429 112 P -4 2 c P -4 2c +430 112:a-b,a+b,c C -4 c 2 +431 113 P -4 21 m P -4 2ab +432 113:a-b,a+b,c C -4 m 21 +433 114 P -4 21 c P -4 2n +434 114:a-b,a+b,c C -4 c 21 +435 115 P -4 m 2 P -4 -2 +436 115:a-b,a+b,c C -4 2 m +437 116 P -4 c 2 P -4 -2c +438 116:a-b,a+b,c C -4 2 c +439 117 P -4 b 2 P -4 -2ab +440 117:a-b,a+b,c C -4 2 g1 +441 118 P -4 n 2 P -4 -2n +442 118:a-b,a+b,c C -4 2 g2 +443 119 I -4 m 2 I -4 -2 +444 119:a-b,a+b,c F -4 2 m +445 120 I -4 c 2 I -4 -2c +446 120:a-b,a+b,c F -4 2 c +447 121 I -4 2 m I -4 2 +448 121:a-b,a+b,c F -4 m 2 +449 122 I -4 2 d I -4 2bw +450 122:a-b,a+b,c F -4 d 2 +451 123 P 4/m m m -P 4 2 +452 123:a-b,a+b,c C 4/m m m +453 124 P 4/m c c -P 4 2c +454 124:a-b,a+b,c C 4/m c c +455 125 P 4/n b m [origin 2] -P 4a 2b +456 125:a-b,a+b,c C 4/e m g1 :2 +457 125:a,b,c;-1/4,-1/4,0 P 4/n b m :1 +458 125:a-b,a+b,c;-1/4,-1/4,0 C 4/e m g1 :1 +459 126 P 4/n n c [origin 2] -P 4a 2bc +460 126:a-b,a+b,c C 4/e c g2 :2 +461 126:a,b,c;-1/4,-1/4,-1/4 P 4/n n c :1 +462 126:a-b,a+b,c;-1/4,-1/4,-1/4 C 4/e c g2 :1 +463 127 P 4/m b m -P 4 2ab +464 127:a-b,a+b,c C 4/m m g1 +465 128 P 4/m n c -P 4 2n +466 128:a+b,-a+b,c C 4/m c g2 +467 129 P 4/n m m [origin 2] -P 4a 2a +468 129:a-b,a+b,c C 4/e m m :2 +469 129:a,b,c;-1/4,1/4,0 P 4/n m m :1 +470 129:a-b,a+b,c;-1/4,1/4,0 C 4/e m m :1 +471 130 P 4/n c c [origin 2] -P 4a 2ac +472 130:a-b,a+b,c C 4/e c c :2 +473 130:a,b,c;-1/4,1/4,0 P 4/n c c :1 +474 130:a-b,a+b,c;-1/4,1/4,0 C 4/e c c :1 +475 131 P 42/m m c -P 4c 2 +476 131:a-b,a+b,c C 42/m c m +477 132 P 42/m c m -P 4c 2c +478 132:a-b,a+b,c C 42/m m c +479 133 P 42/n b c [origin 2] -P 4ac 2b +480 133:a-b,a+b,c C 42/e c g1 :2 +481 133:a,b,c;-1/4,1/4,-1/4 P 42/n b c :1 +482 133:a-b,a+b,c;-1/4,1/4,-1/4 C 42/e c g1 :1 +483 134 P 42/n n m [origin 2] -P 4ac 2bc +484 134:a-b,a+b,c C 42/e m g2 :2 +485 134:a,b,c;-1/4,1/4,-1/4 P 42/n n m :1 +486 134:a-b,a+b,c;-1/4,1/4,-1/4 C 42/e m g2 :1 +487 135 P 42/m b c -P 4c 2ab +488 135:a-b,a+b,c C 42/m c g1 +489 136 P 42/m n m -P 4n 2n +490 136:a-b,a+b,c C 42/m m g2 +491 137 P 42/n m c [origin 2] -P 4ac 2a +492 137:a-b,a+b,c C 42/e c m :2 +493 137:a,b,c;-1/4,1/4,-1/4 P 42/n m c :1 +494 137:a-b,a+b,c;-1/4,1/4,-1/4 C 42/e c m :1 +495 138 P 42/n c m [origin 2] -P 4ac 2ac +496 138:a-b,a+b,c C 42/e m c :2 +497 138:a,b,c;-1/4,1/4,-1/4 P 42/n c m :1 +498 138:a-b,a+b,c;-1/4,1/4,-1/4 C 42/e m c :1 +499 139 I 4/m m m -I 4 2 +500 139:a-b,a+b,c F 4/m m m +501 140 I 4/m c m -I 4 2c +502 140:a-b,a+b,c F 4/m m c +503 141 I 41/a m d [origin 2] -I 4bd 2 +504 141:a-b,a+b,c F 41/d d m :2 +505 141:a,b,c;0,1/4,-1/8 I 41/a m d :1 +506 141:a-b,a+b,c;0,1/4,-1/8 F 41/d d m :1 +507 142 I 41/a c d [origin 2] -I 4bd 2c +508 142:a-b,a+b,c F 41/d d c :2 +509 142:a,b,c;0,1/4,-1/8 I 41/a c d :1 +510 142:a-b,a+b,c;0,1/4,-1/8 F 41/d d c :1 +511 143 P 3 P 3 +512 144 P 31 P 31 +513 145 P 32 P 32 +514 146 R 3 :h R 3 +515 146:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R 3 :R +516 147 P -3 -P 3 +517 148 R -3 :h -R 3 +518 148:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R -3 :R +519 149 P 3 1 2 P 3 2 +520 150 P 3 2 1 P 3 2" +521 151 P 31 1 2 P 31 2 (0 0 4) +522 152 P 31 2 1 P 31 2" +523 153 P 32 1 2 P 32 2 (0 0 2) +524 154 P 32 2 1 P 32 2" +525 155 R 3 2 :h R 3 2" +526 155:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R 3 2 :R +527 156 P 3 m 1 P 3 -2" +528 157 P 3 1 m P 3 -2 +529 158 P 3 c 1 P 3 -2"c +530 159 P 3 1 c P 3 -2c +531 160 R 3 m :h R 3 -2" +532 160:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R 3 m :R +533 161 R 3 c :h R 3 -2"c +534 161:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R 3 c :R +535 162 P -3 1 m -P 3 2 +536 163 P -3 1 c -P 3 2c +537 164 P -3 m 1 -P 3 2" +538 165 P -3 c 1 -P 3 2"c +539 166 R -3 m :h -R 3 2" +540 166:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R -3 m :R +541 167 R -3 c :h -R 3 2"c +542 167:2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R -3 c :R +543 168 P 6 P 6 +544 169 P 61 P 61 +545 170 P 65 P 65 +546 171 P 62 P 62 +547 172 P 64 P 64 +548 173 P 63 P 6c +549 174 P -6 P -6 +550 175 P 6/m -P 6 +551 176 P 63/m -P 6c +552 177 P 6 2 2 P 6 2 +553 178 P 61 2 2 P 61 2 (0 0 5) +554 179 P 65 2 2 P 65 2 (0 0 1) +555 180 P 62 2 2 P 62 2 (0 0 4) +556 181 P 64 2 2 P 64 2 (0 0 2) +557 182 P 63 2 2 P 6c 2c +558 183 P 6 m m P 6 -2 +559 184 P 6 c c P 6 -2c +560 185 P 63 c m P 6c -2 +561 186 P 63 m c P 6c -2c +562 187 P -6 m 2 P -6 2 +563 188 P -6 c 2 P -6c 2 +564 189 P -6 2 m P -6 -2 +565 190 P -6 2 c P -6c -2c +566 191 P 6/m m m -P 6 2 +567 192 P 6/m c c -P 6 2c +568 193 P 63/m c m -P 6c 2 +569 194 P 63/m m c -P 6c 2c +570 195 P 2 3 P 2 2 3 +571 196 F 2 3 F 2 2 3 +572 197 I 2 3 I 2 2 3 +573 198 P 21 3 P 2ac 2ab 3 +574 199 I 21 3 I 2b 2c 3 +575 200 P m -3 -P 2 2 3 +576 201 P n -3 [origin 2] -P 2ab 2bc 3 +577 201:a,b,c;-1/4,-1/4,-1/4 P n -3 :1 +578 202 F m -3 -F 2 2 3 +579 203 F d -3 [origin 2] -F 2uv 2vw 3 +580 203:a,b,c;-1/8,-1/8,-1/8 F d -3 :1 +581 204 I m -3 -I 2 2 3 +582 205 P a -3 -P 2ac 2ab 3 +583 206 I a -3 -I 2b 2c 3 +584 207 P 4 3 2 P 4 2 3 +585 208 P 42 3 2 P 4n 2 3 +586 209 F 4 3 2 F 4 2 3 +587 210 F 41 3 2 F 4d 2 3 +588 211 I 4 3 2 I 4 2 3 +589 212 P 43 3 2 P 4acd 2ab 3 +590 213 P 41 3 2 P 4bd 2ab 3 +591 214 I 41 3 2 I 4bd 2c 3 +592 215 P -4 3 m P -4 2 3 +593 216 F -4 3 m F -4 2 3 +594 217 I -4 3 m I -4 2 3 +595 218 P -4 3 n P -4n 2 3 +596 219 F -4 3 c F -4a 2 3 +597 220 I -4 3 d I -4bd 2c 3 +598 221 P m -3 m -P 4 2 3 +599 222 P n -3 n [origin 2] -P 4a 2bc 3 +600 222:a,b,c;-1/4,-1/4,-1/4 P n -3 n :1 +601 223 P m -3 n -P 4n 2 3 +602 224 P n -3 m [origin 2] -P 4bc 2bc 3 +603 224:a,b,c;-1/4,-1/4,-1/4 P n -3 m :1 +604 225 F m -3 m -F 4 2 3 +605 226 F m -3 c -F 4a 2 3 +606 227 F d -3 m [origin 2] -F 4vw 2vw 3 +607 227:a,b,c;-1/8,-1/8,-1/8 F d -3 m :1 +608 228 F d -3 c [origin 2] -F 4ud 2vw 3 +609 228:a,b,c;-3/8,-3/8,-3/8 F d -3 c :1 +610 229 I m -3 m -I 4 2 3 +611 230 I a -3 d -I 4bd 2c 3 diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/cleg_subgroups.tab b/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/cleg_subgroups.tab new file mode 100755 index 000000000000..146c7a2f43c1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/cleg_subgroups.tab @@ -0,0 +1,3768 @@ +# cleg index conj_class +1 1:2a,a+b,a+c>1 2 a +2 1:2a,a+b,c>1 2 b +3 1:2a,b,a+c>1 2 c +4 1:a,2b,b+c>1 2 d +5 1:a,b,2c>1 2 e +6 1:a,2b,c>1 2 f +7 1:2a,b,c>1 2 g +8 1:3a,2a+b,c>1 3 a +9 1:3a,a+b,c>1 3 b +10 1:3a,b,c>1 3 c +11 1:a,b,3c>1 3 d +12 1:a,3b,2b+c>1 3 e +13 1:a,3b,b+c>1 3 f +14 1:a,3b,c>1 3 g +15 1:3a,2a+b,2a+c>1 3 h +16 1:3a,a+b,2a+c>1 3 i +17 1:3a,2a+b,a+c>1 3 j +18 1:3a,a+b,a+c>1 3 k +19 1:3a,b,2a+c>1 3 l +20 1:3a,b,a+c>1 3 m +21 2:a,b,c>1 2 a +22 2:2a,b,a+c;1/2,0,0>2 2 a +23 2:2a,b,a+c>2 2 b +24 2:a,2b,b+c;0,1/2,0>2 2 c +25 2:a,2b,b+c>2 2 d +26 2:a,b,2c;0,0,1/2>2 2 e +27 2:a,b,2c>2 2 f +28 2:a,2b,c;0,1/2,0>2 2 g +29 2:a,2b,c>2 2 h +30 2:2a,a+b,a+c;1/2,0,0>2 2 i +31 2:2a,a+b,a+c>2 2 j +32 2:2a,a+b,c;1/2,0,0>2 2 k +33 2:2a,a+b,c>2 2 l +34 2:2a,b,c;1/2,0,0>2 2 m +35 2:2a,b,c>2 2 n +36 2:a,b,3c>2 3 a +37 2:a,b,3c;0,0,1>2 3 a +38 2:a,b,3c;0,0,2>2 3 a +39 2:a,3b,2b+c>2 3 b +40 2:a,3b,2b+c;0,1,0>2 3 b +41 2:a,3b,2b+c;0,2,0>2 3 b +42 2:a,3b,b+c>2 3 c +43 2:a,3b,b+c;0,1,0>2 3 c +44 2:a,3b,b+c;0,2,0>2 3 c +45 2:a,3b,c>2 3 d +46 2:a,3b,c;0,1,0>2 3 d +47 2:a,3b,c;0,2,0>2 3 d +48 2:3a,2a+b,2a+c>2 3 e +49 2:3a,2a+b,2a+c;1,0,0>2 3 e +50 2:3a,2a+b,2a+c;2,0,0>2 3 e +51 2:3a,a+b,2a+c>2 3 f +52 2:3a,a+b,2a+c;1,0,0>2 3 f +53 2:3a,a+b,2a+c;2,0,0>2 3 f +54 2:3a,2a+b,a+c>2 3 g +55 2:3a,2a+b,a+c;1,0,0>2 3 g +56 2:3a,2a+b,a+c;2,0,0>2 3 g +57 2:3a,a+b,a+c>2 3 h +58 2:3a,a+b,a+c;1,0,0>2 3 h +59 2:3a,a+b,a+c;2,0,0>2 3 h +60 2:3a,b,2a+c>2 3 i +61 2:3a,b,2a+c;1,0,0>2 3 i +62 2:3a,b,2a+c;2,0,0>2 3 i +63 2:3a,b,a+c>2 3 j +64 2:3a,b,a+c;1,0,0>2 3 j +65 2:3a,b,a+c;2,0,0>2 3 j +66 2:3a,2a+b,c>2 3 k +67 2:3a,2a+b,c;1,0,0>2 3 k +68 2:3a,2a+b,c;2,0,0>2 3 k +69 2:3a,a+b,c>2 3 l +70 2:3a,a+b,c;1,0,0>2 3 l +71 2:3a,a+b,c;2,0,0>2 3 l +72 2:3a,b,c>2 3 m +73 2:3a,b,c;1,0,0>2 3 m +74 2:3a,b,c;2,0,0>2 3 m +75 3:a,b,c>1 2 a +76 3:a-c,b,2c;0,0,1/2>3 2 a +77 3:a-c,b,2c>3 2 b +78 3:2a,b,c;1/2,0,0>3 2 c +79 3:2a,b,c>3 2 d +80 3:a,b,2c;0,0,1/2>3 2 e +81 3:a,b,2c>3 2 f +82 3:a,2b,c>3 2 g +83 3:3a,b,c>3 3 a +84 3:3a,b,c;1,0,0>3 3 a +85 3:3a,b,c;2,0,0>3 3 a +86 3:a-2c,b,3c>3 3 b +87 3:a-2c,b,3c;0,0,1>3 3 b +88 3:a-2c,b,3c;0,0,2>3 3 b +89 3:a-c,b,3c>3 3 c +90 3:a-c,b,3c;0,0,1>3 3 c +91 3:a-c,b,3c;0,0,2>3 3 c +92 3:a,b,3c>3 3 d +93 3:a,b,3c;0,0,1>3 3 d +94 3:a,b,3c;0,0,2>3 3 d +95 3:a,3b,c>3 3 e +96 3:a,2b,c>4 2 a +97 3:2a,2b,-a+c;1/2,0,0>5 2 a +98 3:2a,2b,-a+c>5 2 b +99 3:2c,2b,-a-2c;0,0,1/2>5 2 c +100 3:2c,2b,-a-2c>5 2 d +101 3:2a,2b,c;1/2,0,0>5 2 e +102 3:2a,2b,c>5 2 f +103 4:a,b,c>1 2 a +104 4:a-c,b,2c;0,0,1/2>4 2 a +105 4:a-c,b,2c>4 2 b +106 4:2a,b,c;1/2,0,0>4 2 c +107 4:2a,b,c>4 2 d +108 4:a,b,2c;0,0,1/2>4 2 e +109 4:a,b,2c>4 2 f +110 4:3a,b,c>4 3 a +111 4:3a,b,c;1,0,0>4 3 a +112 4:3a,b,c;2,0,0>4 3 a +113 4:a-2c,b,3c>4 3 b +114 4:a-2c,b,3c;0,0,1>4 3 b +115 4:a-2c,b,3c;0,0,2>4 3 b +116 4:a-c,b,3c>4 3 c +117 4:a-c,b,3c;0,0,1>4 3 c +118 4:a-c,b,3c;0,0,2>4 3 c +119 4:a,b,3c>4 3 d +120 4:a,b,3c;0,0,1>4 3 d +121 4:a,b,3c;0,0,2>4 3 d +122 4:a,3b,c>4 3 e +123 5:1/2a-1/2b,1/2a+1/2b,c>1 2 a +124 5:a,b,c>3 2 a +125 5:a,b,c;1/4,0,0>4 2 a +126 5:a-2c,b,2c;0,0,1/2>5 2 a +127 5:a-2c,b,2c>5 2 b +128 5:a,b,2c;0,0,1/2>5 2 c +129 5:a,b,2c>5 2 d +130 5:3a,b,c>5 3 a +131 5:3a,b,c;1,0,0>5 3 a +132 5:3a,b,c;2,0,0>5 3 a +133 5:a-4c,b,3c>5 3 b +134 5:a-4c,b,3c;0,0,1>5 3 b +135 5:a-4c,b,3c;0,0,2>5 3 b +136 5:a-2c,b,3c>5 3 c +137 5:a-2c,b,3c;0,0,1>5 3 c +138 5:a-2c,b,3c;0,0,2>5 3 c +139 5:a,b,3c>5 3 d +140 5:a,b,3c;0,0,1>5 3 d +141 5:a,b,3c;0,0,2>5 3 d +142 5:a,3b,c>5 3 e +143 6:a,b,c>1 2 a +144 6:a-c,b,2c>6 2 a +145 6:2a,b,c>6 2 b +146 6:a,b,2c>6 2 c +147 6:a,2b,c;0,1/2,0>6 2 d +148 6:a,2b,c>6 2 e +149 6:a,3b,c>6 3 a +150 6:a,3b,c;0,1,0>6 3 a +151 6:a,3b,c;0,2,0>6 3 a +152 6:a-c,b,3c>6 3 b +153 6:a,b,3c>6 3 c +154 6:3a,b,c>6 3 d +155 6:a-2c,b,3c>6 3 e +156 6:a-c,b,2c>7 2 a +157 6:-2a-c,b,2a>7 2 b +158 6:a,b,2c>7 2 c +159 6:2a,2b,-a+c;0,1/2,0>8 2 a +160 6:2a,2b,-a+c>8 2 b +161 6:2c,2b,-a-2c;0,1/2,0>8 2 c +162 6:2c,2b,-a-2c>8 2 d +163 6:2a,2b,c;0,1/2,0>8 2 e +164 6:2a,2b,c>8 2 f +165 7:a,b,c>1 2 a +166 7:2a,b,-2a+c>7 2 a +167 7:2a,b,c>7 2 b +168 7:a,2b,c;0,1/2,0>7 2 c +169 7:a,2b,c>7 2 d +170 7:a,3b,c>7 3 a +171 7:a,3b,c;0,1,0>7 3 a +172 7:a,3b,c;0,2,0>7 3 a +173 7:3a,b,-2a+c>7 3 b +174 7:3a,b,c>7 3 c +175 7:a,b,3c>7 3 d +176 7:3a,b,-4a+c>7 3 e +177 7:2a,2b,c;0,1/2,0>9 2 a +178 7:2a,2b,c>9 2 b +179 8:1/2a-1/2b,1/2a+1/2b,c>1 2 a +180 8:a,b,c>6 2 a +181 8:-a-c,b,a;0,1/4,0>7 2 a +182 8:a-2c,b,2c>8 2 a +183 8:a,b,2c>8 2 b +184 8:a,3b,c>8 3 a +185 8:a,3b,c;0,1,0>8 3 a +186 8:a,3b,c;0,2,0>8 3 a +187 8:3a,b,c>8 3 b +188 8:a-4c,b,3c>8 3 c +189 8:a-2c,b,3c>8 3 d +190 8:a,b,3c>8 3 e +191 8:a-2c,b,2c>9 2 a +192 8:a,b,2c>9 2 b +193 9:1/2a-1/2b,1/2a+1/2b,c>1 2 a +194 9:a,b,-a+c;0,1/4,0>7 2 a +195 9:a,b,c>7 2 b +196 9:a,3b,c>9 3 a +197 9:a,3b,c;0,1,0>9 3 a +198 9:a,3b,c;0,2,0>9 3 a +199 9:3a,b,c>9 3 b +200 9:a-4c,b,3c>9 3 c +201 9:a-2c,b,3c>9 3 d +202 9:a,b,3c>9 3 e +203 10:a,b,c>2 2 a +204 10:a,b,c>3 2 a +205 10:a,b,c>6 2 a +206 10:a-c,b,2c;0,0,1/2>10 2 a +207 10:a-c,b,2c>10 2 b +208 10:2a,b,c;1/2,0,0>10 2 c +209 10:2a,b,c>10 2 d +210 10:a,b,2c;0,0,1/2>10 2 e +211 10:a,b,2c>10 2 f +212 10:a,2b,c;0,1/2,0>10 2 g +213 10:a,2b,c>10 2 h +214 10:3a,b,c>10 3 a +215 10:3a,b,c;1,0,0>10 3 a +216 10:3a,b,c;2,0,0>10 3 a +217 10:a-2c,b,3c>10 3 b +218 10:a-2c,b,3c;0,0,1>10 3 b +219 10:a-2c,b,3c;0,0,2>10 3 b +220 10:a-c,b,3c>10 3 c +221 10:a-c,b,3c;0,0,1>10 3 c +222 10:a-c,b,3c;0,0,2>10 3 c +223 10:a,b,3c>10 3 d +224 10:a,b,3c;0,0,1>10 3 d +225 10:a,b,3c;0,0,2>10 3 d +226 10:a,3b,c>10 3 e +227 10:a,3b,c;0,1,0>10 3 e +228 10:a,3b,c;0,2,0>10 3 e +229 10:a,2b,c;0,1/2,0>11 2 a +230 10:a,2b,c>11 2 b +231 10:2a,2b,-a+c;0,1/2,0>12 2 a +232 10:2a,2b,-a+c>12 2 b +233 10:2c,2b,-a-2c;0,1/2,1/2>12 2 c +234 10:2c,2b,-a-2c;0,1/2,0>12 2 d +235 10:2c,2b,-a-2c;0,0,1/2>12 2 e +236 10:2c,2b,-a-2c>12 2 f +237 10:2a,2b,c;1/2,1/2,0>12 2 g +238 10:2a,2b,c;1/2,0,0>12 2 h +239 10:2a,2b,-a+c;1/2,1/2,0>12 2 i +240 10:2a,2b,-a+c;1/2,0,0>12 2 j +241 10:2a,2b,c;0,1/2,0>12 2 k +242 10:2a,2b,c>12 2 l +243 10:a-c,b,2c;0,0,1/2>13 2 a +244 10:a-c,b,2c>13 2 b +245 10:-2a-c,b,2a;1/2,0,0>13 2 c +246 10:-2a-c,b,2a>13 2 d +247 10:a,b,2c;0,0,1/2>13 2 e +248 10:a,b,2c>13 2 f +249 11:a,b,c>2 2 a +250 11:a,b,c>4 2 a +251 11:a,b,c;0,1/4,0>6 2 a +252 11:a-c,b,2c;0,0,1/2>11 2 a +253 11:a-c,b,2c>11 2 b +254 11:2a,b,c;1/2,0,0>11 2 c +255 11:2a,b,c>11 2 d +256 11:a,b,2c;0,0,1/2>11 2 e +257 11:a,b,2c>11 2 f +258 11:3a,b,c>11 3 a +259 11:3a,b,c;1,0,0>11 3 a +260 11:3a,b,c;2,0,0>11 3 a +261 11:a-2c,b,3c>11 3 b +262 11:a-2c,b,3c;0,0,1>11 3 b +263 11:a-2c,b,3c;0,0,2>11 3 b +264 11:a-c,b,3c>11 3 c +265 11:a-c,b,3c;0,0,1>11 3 c +266 11:a-c,b,3c;0,0,2>11 3 c +267 11:a,b,3c>11 3 d +268 11:a,b,3c;0,0,1>11 3 d +269 11:a,b,3c;0,0,2>11 3 d +270 11:a,3b,c>11 3 e +271 11:a,3b,c;0,1,0>11 3 e +272 11:a,3b,c;0,2,0>11 3 e +273 11:a-c,b,2c;0,0,1/2>14 2 a +274 11:a-c,b,2c>14 2 b +275 11:-2a-c,b,2a;1/2,0,0>14 2 c +276 11:-2a-c,b,2a>14 2 d +277 11:a,b,2c;0,0,1/2>14 2 e +278 11:a,b,2c>14 2 f +279 12:1/2a-1/2b,1/2a+1/2b,c>2 2 a +280 12:a,b,c>5 2 a +281 12:a,b,c>8 2 a +282 12:a,b,c>10 2 a +283 12:c,b,-a;1/4,1/4,0>11 2 a +284 12:a-2c,b,2c;0,0,1/2>12 2 a +285 12:a-2c,b,2c>12 2 b +286 12:a,b,2c;0,0,1/2>12 2 c +287 12:a,b,2c>12 2 d +288 12:3a,b,c>12 3 a +289 12:3a,b,c;1,0,0>12 3 a +290 12:3a,b,c;2,0,0>12 3 a +291 12:a-4c,b,3c>12 3 b +292 12:a-4c,b,3c;0,0,1>12 3 b +293 12:a-4c,b,3c;0,0,2>12 3 b +294 12:a-2c,b,3c>12 3 c +295 12:a-2c,b,3c;0,0,1>12 3 c +296 12:a-2c,b,3c;0,0,2>12 3 c +297 12:a,b,3c>12 3 d +298 12:a,b,3c;0,0,1>12 3 d +299 12:a,b,3c;0,0,2>12 3 d +300 12:a,3b,c>12 3 e +301 12:a,3b,c;0,1,0>12 3 e +302 12:a,3b,c;0,2,0>12 3 e +303 12:c,b,-a;1/4,1/4,0>13 2 a +304 12:c,b,-a>14 2 a +305 12:a-2c,b,2c;0,0,1/2>15 2 a +306 12:a-2c,b,2c>15 2 b +307 12:a,b,2c;0,0,1/2>15 2 c +308 12:a,b,2c>15 2 d +309 13:a,b,c>2 2 a +310 13:a,b,c;0,0,1/4>3 2 a +311 13:a,b,c>7 2 a +312 13:2a,b,-2a+c;1/2,0,0>13 2 a +313 13:2a,b,-2a+c>13 2 b +314 13:2a,b,c;1/2,0,0>13 2 c +315 13:2a,b,c>13 2 d +316 13:a,2b,c;0,1/2,0>13 2 e +317 13:a,2b,c>13 2 f +318 13:3a,b,-4a+c>13 3 a +319 13:3a,b,-4a+c;1,0,0>13 3 a +320 13:3a,b,-4a+c;2,0,0>13 3 a +321 13:3a,b,-2a+c>13 3 b +322 13:3a,b,-2a+c;1,0,0>13 3 b +323 13:3a,b,-2a+c;2,0,0>13 3 b +324 13:3a,b,c>13 3 c +325 13:3a,b,c;1,0,0>13 3 c +326 13:3a,b,c;2,0,0>13 3 c +327 13:a,b,3c>13 3 d +328 13:a,b,3c;0,0,1>13 3 d +329 13:a,b,3c;0,0,2>13 3 d +330 13:a,3b,c>13 3 e +331 13:a,3b,c;0,1,0>13 3 e +332 13:a,3b,c;0,2,0>13 3 e +333 13:a,2b,c;0,1/2,0>14 2 a +334 13:a,2b,c>14 2 b +335 13:2a,2b,c;1/2,1/2,0>15 2 a +336 13:2a,2b,c;1/2,0,0>15 2 b +337 13:2a,2b,c;0,1/2,0>15 2 c +338 13:2a,2b,c>15 2 d +339 14:a,b,c>2 2 a +340 14:a,b,c;0,0,1/4>4 2 a +341 14:a,b,c;0,1/4,0>7 2 a +342 14:2a,b,-2a+c;1/2,0,0>14 2 a +343 14:2a,b,-2a+c>14 2 b +344 14:2a,b,c;1/2,0,0>14 2 c +345 14:2a,b,c>14 2 d +346 14:3a,b,-4a+c>14 3 a +347 14:3a,b,-4a+c;1,0,0>14 3 a +348 14:3a,b,-4a+c;2,0,0>14 3 a +349 14:3a,b,-2a+c>14 3 b +350 14:3a,b,-2a+c;1,0,0>14 3 b +351 14:3a,b,-2a+c;2,0,0>14 3 b +352 14:3a,b,c>14 3 c +353 14:3a,b,c;1,0,0>14 3 c +354 14:3a,b,c;2,0,0>14 3 c +355 14:a,b,3c>14 3 d +356 14:a,b,3c;0,0,1>14 3 d +357 14:a,b,3c;0,0,2>14 3 d +358 14:a,3b,c>14 3 e +359 14:a,3b,c;0,1,0>14 3 e +360 14:a,3b,c;0,2,0>14 3 e +361 15:1/2a-1/2b,1/2a+1/2b,c>2 2 a +362 15:a,b,c;0,0,1/4>5 2 a +363 15:a,b,c>9 2 a +364 15:c,b,-a-c;1/4,1/4,0>13 2 a +365 15:a,b,c>13 2 b +366 15:a,b,c;1/4,1/4,0>14 2 a +367 15:c,b,-a-c>14 2 b +368 15:3a,b,c>15 3 a +369 15:3a,b,c;1,0,0>15 3 a +370 15:3a,b,c;2,0,0>15 3 a +371 15:a-4c,b,3c>15 3 b +372 15:a-4c,b,3c;0,0,1>15 3 b +373 15:a-4c,b,3c;0,0,2>15 3 b +374 15:a-2c,b,3c>15 3 c +375 15:a-2c,b,3c;0,0,1>15 3 c +376 15:a-2c,b,3c;0,0,2>15 3 c +377 15:a,b,3c>15 3 d +378 15:a,b,3c;0,0,1>15 3 d +379 15:a,b,3c;0,0,2>15 3 d +380 15:a,3b,c>15 3 e +381 15:a,3b,c;0,1,0>15 3 e +382 15:a,3b,c;0,2,0>15 3 e +383 16:c,a,b>3 2 a +384 16:a,b,c>3 2 b +385 16:b,c,a>3 2 c +386 16:a,b,2c;0,0,1/2>16 2 a +387 16:a,b,2c>16 2 b +388 16:a,2b,c;0,1/2,0>16 2 c +389 16:a,2b,c>16 2 d +390 16:2a,b,c;1/2,0,0>16 2 e +391 16:2a,b,c>16 2 f +392 16:a,b,3c>16 3 a +393 16:a,b,3c;0,0,1>16 3 a +394 16:a,b,3c;0,0,2>16 3 a +395 16:a,3b,c>16 3 b +396 16:a,3b,c;0,1,0>16 3 b +397 16:a,3b,c;0,2,0>16 3 b +398 16:3a,b,c>16 3 c +399 16:3a,b,c;1,0,0>16 3 c +400 16:3a,b,c;2,0,0>16 3 c +401 16:a,b,2c>17 2 a +402 16:a,b,2c;0,0,1/2>17 2 b +403 16:c,a,2b;0,1/2,0>17 2 c +404 16:c,a,2b>17 2 d +405 16:b,c,2a;1/2,0,0>17 2 e +406 16:b,c,2a>17 2 f +407 16:2a,2b,c;1/2,0,0>21 2 a +408 16:2a,2b,c>21 2 b +409 16:2c,2a,b;1/2,0,1/2>21 2 c +410 16:2c,2a,b;1/2,0,0>21 2 d +411 16:2c,2a,b;0,0,1/2>21 2 e +412 16:2c,2a,b>21 2 f +413 16:2b,2c,a;0,1/2,1/2>21 2 g +414 16:2b,2c,a;0,0,1/2>21 2 h +415 16:2a,2b,c;1/2,1/2,0>21 2 i +416 16:2a,2b,c;0,1/2,0>21 2 j +417 16:2b,2c,a;0,1/2,0>21 2 k +418 16:2b,2c,a>21 2 l +419 16:2a,2b,2c;1/2,0,0>22 2 a +420 16:2a,2b,2c;0,0,1/2>22 2 b +421 16:2a,2b,2c;0,1/2,0>22 2 c +422 16:2a,2b,2c>22 2 d +423 17:c,a,b>3 2 a +424 17:a,b,c;0,0,1/4>3 2 b +425 17:b,c,a>4 2 a +426 17:a,2b,c;0,1/2,0>17 2 a +427 17:a,2b,c>17 2 b +428 17:2a,b,c;1/2,0,0>17 2 c +429 17:2a,b,c>17 2 d +430 17:a,b,3c>17 3 a +431 17:a,b,3c;0,0,1>17 3 a +432 17:a,b,3c;0,0,2>17 3 a +433 17:a,3b,c>17 3 b +434 17:a,3b,c;0,1,0>17 3 b +435 17:a,3b,c;0,2,0>17 3 b +436 17:3a,b,c>17 3 c +437 17:3a,b,c;1,0,0>17 3 c +438 17:3a,b,c;2,0,0>17 3 c +439 17:2b,c,a>18 2 a +440 17:2b,c,a;0,1/2,0>18 2 b +441 17:c,2a,b;0,0,1/4>18 2 c +442 17:c,2a,b;1/2,0,1/4>18 2 d +443 17:2a,2b,c;1/2,1/2,0>20 2 a +444 17:2a,2b,c;0,1/2,0>20 2 b +445 17:2a,2b,c;1/2,0,0>20 2 c +446 17:2a,2b,c>20 2 d +447 18:b,c,a>3 2 a +448 18:c,a,b;0,1/4,0>4 2 a +449 18:a,b,c;1/4,0,0>4 2 b +450 18:a,b,2c;0,0,1/2>18 2 a +451 18:a,b,2c>18 2 b +452 18:a,b,3c>18 3 a +453 18:a,b,3c;0,0,1>18 3 a +454 18:a,b,3c;0,0,2>18 3 a +455 18:a,3b,c>18 3 b +456 18:a,3b,c;0,1,0>18 3 b +457 18:a,3b,c;0,2,0>18 3 b +458 18:3a,b,c>18 3 c +459 18:3a,b,c;1,0,0>18 3 c +460 18:3a,b,c;2,0,0>18 3 c +461 18:a,b,2c;1/4,0,0>19 2 a +462 18:a,b,2c;1/4,0,1/2>19 2 b +463 19:c,a,b;0,1/4,0>4 2 a +464 19:a,b,c;0,0,1/4>4 2 b +465 19:b,c,a;1/4,0,0>4 2 c +466 19:a,b,3c>19 3 a +467 19:a,b,3c;0,0,1>19 3 a +468 19:a,b,3c;0,0,2>19 3 a +469 19:a,3b,c>19 3 b +470 19:a,3b,c;0,1,0>19 3 b +471 19:a,3b,c;0,2,0>19 3 b +472 19:3a,b,c>19 3 c +473 19:3a,b,c;1,0,0>19 3 c +474 19:3a,b,c;2,0,0>19 3 c +475 20:1/2a+1/2b,c,1/2a-1/2b>4 2 a +476 20:-b,a,c>5 2 a +477 20:a,b,c;0,0,1/4>5 2 b +478 20:a,b,c>17 2 a +479 20:b,c,a;1/4,0,0>18 2 a +480 20:c,a,b;0,1/4,1/4>18 2 b +481 20:a,b,c;1/4,0,0>19 2 a +482 20:a,b,3c>20 3 a +483 20:a,b,3c;0,0,1>20 3 a +484 20:a,b,3c;0,0,2>20 3 a +485 20:a,3b,c>20 3 b +486 20:a,3b,c;0,1,0>20 3 b +487 20:a,3b,c;0,2,0>20 3 b +488 20:3a,b,c>20 3 c +489 20:3a,b,c;1,0,0>20 3 c +490 20:3a,b,c;2,0,0>20 3 c +491 21:1/2a+1/2b,c,1/2a-1/2b>3 2 a +492 21:-b,a,c>5 2 a +493 21:a,b,c>5 2 b +494 21:a,b,c>16 2 a +495 21:c,a,b;1/4,1/4,0>17 2 a +496 21:b,c,a;0,1/4,0>17 2 b +497 21:a,b,c>18 2 a +498 21:a,b,2c>20 2 a +499 21:a,b,2c;0,0,1/2>20 2 b +500 21:a,b,2c;0,0,1/2>21 2 a +501 21:a,b,2c>21 2 b +502 21:a,b,3c>21 3 a +503 21:a,b,3c;0,0,1>21 3 a +504 21:a,b,3c;0,0,2>21 3 a +505 21:a,3b,c>21 3 b +506 21:a,3b,c;0,1,0>21 3 b +507 21:a,3b,c;0,2,0>21 3 b +508 21:3a,b,c>21 3 c +509 21:3a,b,c;1,0,0>21 3 c +510 21:3a,b,c;2,0,0>21 3 c +511 21:a,b,2c;0,0,1/2>23 2 a +512 21:a,b,2c>23 2 b +513 21:a,b,2c;3/4,0,1/2>24 2 a +514 21:a,b,2c;3/4,0,0>24 2 b +515 22:c,a,1/2b-1/2c>5 2 a +516 22:a,b,-1/2a+1/2c>5 2 b +517 22:b,c,1/2a-1/2b>5 2 c +518 22:a,b,c;1/4,0,0>20 2 a +519 22:a,b,c;0,1/4,1/4>20 2 b +520 22:c,a,b;1/4,1/4,0>20 2 c +521 22:c,a,b;0,0,1/4>20 2 d +522 22:b,c,a;0,1/4,0>20 2 e +523 22:b,c,a;1/4,0,1/4>20 2 f +524 22:a,b,c;1/4,1/4,1/4>21 2 a +525 22:a,b,c>21 2 b +526 22:c,a,b;1/4,1/4,1/4>21 2 c +527 22:c,a,b>21 2 d +528 22:b,c,a;1/4,1/4,1/4>21 2 e +529 22:b,c,a>21 2 f +530 22:a,b,3c>22 3 a +531 22:a,b,3c;0,0,1>22 3 a +532 22:a,b,3c;0,0,2>22 3 a +533 22:a,3b,c>22 3 b +534 22:a,3b,c;0,1,0>22 3 b +535 22:a,3b,c;0,2,0>22 3 b +536 22:3a,b,c>22 3 c +537 22:3a,b,c;1,0,0>22 3 c +538 22:3a,b,c;2,0,0>22 3 c +539 23:-b-c,a,c>5 2 a +540 23:-a-c,b,a>5 2 b +541 23:-a-b,c,b>5 2 c +542 23:a,b,c>16 2 a +543 23:b,c,a;1/4,0,0>18 2 a +544 23:c,a,b;0,1/4,0>18 2 b +545 23:a,b,c;0,0,1/4>18 2 c +546 23:a,b,3c>23 3 a +547 23:a,b,3c;0,0,1>23 3 a +548 23:a,b,3c;0,0,2>23 3 a +549 23:a,3b,c>23 3 b +550 23:a,3b,c;0,1,0>23 3 b +551 23:a,3b,c;0,2,0>23 3 b +552 23:3a,b,c>23 3 c +553 23:3a,b,c;1,0,0>23 3 c +554 23:3a,b,c;2,0,0>23 3 c +555 24:-b-c,a,c;0,0,1/4>5 2 a +556 24:-a-c,b,a;1/4,0,0>5 2 b +557 24:-a-b,c,b;0,1/4,0>5 2 c +558 24:b,c,a;1/4,1/4,0>17 2 a +559 24:c,a,b;0,1/4,1/4>17 2 b +560 24:a,b,c;1/4,0,1/4>17 2 c +561 24:a,b,c>19 2 a +562 24:a,b,3c>24 3 a +563 24:a,b,3c;0,0,1>24 3 a +564 24:a,b,3c;0,0,2>24 3 a +565 24:a,3b,c>24 3 b +566 24:a,3b,c;0,1,0>24 3 b +567 24:a,3b,c;0,2,0>24 3 b +568 24:3a,b,c>24 3 c +569 24:3a,b,c;1,0,0>24 3 c +570 24:3a,b,c;2,0,0>24 3 c +571 25:b,c,a>3 2 a +572 25:c,a,b>6 2 a +573 25:a,b,c>6 2 b +574 25:a,b,2c>25 2 a +575 25:a,2b,c;0,1/2,0>25 2 b +576 25:a,2b,c>25 2 c +577 25:2a,b,c;1/2,0,0>25 2 d +578 25:2a,b,c>25 2 e +579 25:a,3b,c>25 3 a +580 25:a,3b,c;0,1,0>25 3 a +581 25:a,3b,c;0,2,0>25 3 a +582 25:3a,b,c>25 3 b +583 25:3a,b,c;1,0,0>25 3 b +584 25:3a,b,c;2,0,0>25 3 b +585 25:a,b,3c>25 3 c +586 25:-b,a,2c>26 2 a +587 25:a,b,2c>26 2 b +588 25:a,b,2c>27 2 a +589 25:-2b,a,c;0,1/2,0>28 2 a +590 25:-2b,a,c>28 2 b +591 25:2a,b,c;1/2,0,0>28 2 c +592 25:2a,b,c>28 2 d +593 25:2a,2b,c;1/2,1/2,0>35 2 a +594 25:2a,2b,c;0,1/2,0>35 2 b +595 25:2a,2b,c;1/2,0,0>35 2 c +596 25:2a,2b,c>35 2 d +597 25:-b,2a,2c;1/2,0,0>38 2 a +598 25:-b,2a,2c>38 2 b +599 25:a,2b,2c;0,1/2,0>38 2 c +600 25:a,2b,2c>38 2 d +601 25:-b,2a,2c;1/2,0,0>39 2 a +602 25:-b,2a,2c>39 2 b +603 25:a,2b,2c;0,1/2,0>39 2 c +604 25:a,2b,2c>39 2 d +605 25:2a,2b,2c;1/2,1/2,0>42 2 a +606 25:2a,2b,2c;0,1/2,0>42 2 b +607 25:2a,2b,2c;1/2,0,0>42 2 c +608 25:2a,2b,2c>42 2 d +609 26:b,c,a>4 2 a +610 26:c,a,b>6 2 a +611 26:a,b,c>7 2 a +612 26:a,2b,c;0,1/2,0>26 2 a +613 26:a,2b,c>26 2 b +614 26:2a,b,c;1/2,0,0>26 2 c +615 26:2a,b,c>26 2 d +616 26:a,3b,c>26 3 a +617 26:a,3b,c;0,1,0>26 3 a +618 26:a,3b,c;0,2,0>26 3 a +619 26:3a,b,c>26 3 b +620 26:3a,b,c;1,0,0>26 3 b +621 26:3a,b,c;2,0,0>26 3 b +622 26:a,b,3c>26 3 c +623 26:-2b,a,c;0,1/2,0>29 2 a +624 26:-2b,a,c>29 2 b +625 26:2a,b,c>31 2 a +626 26:2a,b,c;1/2,0,0>31 2 b +627 26:2a,2b,c;1/2,1/2,0>36 2 a +628 26:2a,2b,c;0,1/2,0>36 2 b +629 26:2a,2b,c;1/2,0,0>36 2 c +630 26:2a,2b,c>36 2 d +631 27:b,c,a>3 2 a +632 27:-b,a,c>7 2 a +633 27:a,b,c>7 2 b +634 27:a,2b,c;0,1/2,0>27 2 a +635 27:a,2b,c>27 2 b +636 27:2a,b,c;1/2,0,0>27 2 c +637 27:2a,b,c>27 2 d +638 27:a,3b,c>27 3 a +639 27:a,3b,c;0,1,0>27 3 a +640 27:a,3b,c;0,2,0>27 3 a +641 27:3a,b,c>27 3 b +642 27:3a,b,c;1,0,0>27 3 b +643 27:3a,b,c;2,0,0>27 3 b +644 27:a,b,3c>27 3 c +645 27:a,2b,c;0,1/2,0>30 2 a +646 27:a,2b,c>30 2 b +647 27:-b,2a,c;1/2,0,0>30 2 c +648 27:-b,2a,c>30 2 d +649 27:2a,2b,c;1/2,1/2,0>37 2 a +650 27:2a,2b,c;0,1/2,0>37 2 b +651 27:2a,2b,c;1/2,0,0>37 2 c +652 27:2a,2b,c>37 2 d +653 28:b,c,a>3 2 a +654 28:c,a,b;1/4,0,0>6 2 a +655 28:-a-c,b,a>7 2 a +656 28:a,b,2c>28 2 a +657 28:a,2b,c;0,1/2,0>28 2 b +658 28:a,2b,c>28 2 c +659 28:a,3b,c>28 3 a +660 28:a,3b,c;0,1,0>28 3 a +661 28:a,3b,c;0,2,0>28 3 a +662 28:3a,b,c>28 3 b +663 28:3a,b,c;1,0,0>28 3 b +664 28:3a,b,c;2,0,0>28 3 b +665 28:a,b,3c>28 3 c +666 28:a,b,2c>29 2 a +667 28:-b,a,2c>30 2 a +668 28:a,b,2c;1/4,0,0>31 2 a +669 28:a,2b,c;0,1/2,0>32 2 a +670 28:a,2b,c>32 2 b +671 28:a,2b,2c;0,1/2,0>40 2 a +672 28:a,2b,2c>40 2 b +673 28:a,2b,2c;0,1/2,0>41 2 a +674 28:a,2b,2c>41 2 b +675 29:b,c,a>4 2 a +676 29:-b,a,c;1/4,0,0>7 2 a +677 29:-a-c,b,a>7 2 b +678 29:a,2b,c;0,1/2,0>29 2 a +679 29:a,2b,c>29 2 b +680 29:a,3b,c>29 3 a +681 29:a,3b,c;0,1,0>29 3 a +682 29:a,3b,c;0,2,0>29 3 a +683 29:3a,b,c>29 3 b +684 29:3a,b,c;1,0,0>29 3 b +685 29:3a,b,c;2,0,0>29 3 b +686 29:a,b,3c>29 3 c +687 29:a,2b,c;0,1/2,0>33 2 a +688 29:a,2b,c>33 2 b +689 30:b,c,a>3 2 a +690 30:b,a,-b-c>7 2 a +691 30:a,b,c;0,1/4,0>7 2 b +692 30:2a,b,c;1/2,0,0>30 2 a +693 30:2a,b,c>30 2 b +694 30:a,3b,c>30 3 a +695 30:a,3b,c;0,1,0>30 3 a +696 30:a,3b,c;0,2,0>30 3 a +697 30:3a,b,c>30 3 b +698 30:3a,b,c;1,0,0>30 3 b +699 30:3a,b,c;2,0,0>30 3 b +700 30:a,b,3c>30 3 c +701 30:2a,b,c;1/2,0,0>34 2 a +702 30:2a,b,c>34 2 b +703 31:b,c,a;1/4,0,0>4 2 a +704 31:c,a,b>6 2 a +705 31:c,b,-a-c>7 2 a +706 31:a,2b,c;0,1/2,0>31 2 a +707 31:a,2b,c>31 2 b +708 31:a,3b,c>31 3 a +709 31:a,3b,c;0,1,0>31 3 a +710 31:a,3b,c;0,2,0>31 3 a +711 31:3a,b,c>31 3 b +712 31:3a,b,c;1,0,0>31 3 b +713 31:3a,b,c;2,0,0>31 3 b +714 31:a,b,3c>31 3 c +715 31:-2b,a,c;1/4,1/2,0>33 2 a +716 31:-2b,a,c;1/4,0,0>33 2 b +717 32:b,c,a>3 2 a +718 32:c,a,b;1/4,0,0>7 2 a +719 32:-a-c,b,a;0,1/4,0>7 2 b +720 32:a,b,2c>32 2 a +721 32:a,3b,c>32 3 a +722 32:a,3b,c;0,1,0>32 3 a +723 32:a,3b,c;0,2,0>32 3 a +724 32:3a,b,c>32 3 b +725 32:3a,b,c;1,0,0>32 3 b +726 32:3a,b,c;2,0,0>32 3 b +727 32:a,b,3c>32 3 c +728 32:-b,a,2c>33 2 a +729 32:a,b,2c>33 2 b +730 32:a,b,2c>34 2 a +731 33:b,c,a>4 2 a +732 33:b,a,-b-c;1/4,0,0>7 2 a +733 33:-a-c,b,a;0,1/4,0>7 2 b +734 33:a,3b,c>33 3 a +735 33:a,3b,c;0,1,0>33 3 a +736 33:a,3b,c;0,2,0>33 3 a +737 33:3a,b,c>33 3 b +738 33:3a,b,c;1,0,0>33 3 b +739 33:3a,b,c;2,0,0>33 3 b +740 33:a,b,3c>33 3 c +741 34:b,c,a>3 2 a +742 34:b,a,-b-c;1/4,0,0>7 2 a +743 34:c,b,-a-c;0,1/4,0>7 2 b +744 34:a,3b,c>34 3 a +745 34:a,3b,c;0,1,0>34 3 a +746 34:a,3b,c;0,2,0>34 3 a +747 34:3a,b,c>34 3 b +748 34:3a,b,c;1,0,0>34 3 b +749 34:3a,b,c;2,0,0>34 3 b +750 34:a,b,3c>34 3 c +751 34:2a,2b,2c;1/2,1/2,0>43 2 a +752 34:2a,2b,2c;0,1/2,0>43 2 b +753 34:2a,2b,2c;1/2,0,0>43 2 c +754 34:2a,2b,2c>43 2 d +755 35:1/2a+1/2b,c,1/2a-1/2b>3 2 a +756 35:-b,a,c>8 2 a +757 35:a,b,c>8 2 b +758 35:a,b,c>25 2 a +759 35:a,b,c;1/4,1/4,0>28 2 a +760 35:-b,a,c;1/4,1/4,0>28 2 b +761 35:a,b,c>32 2 a +762 35:a,b,2c>35 2 a +763 35:a,3b,c>35 3 a +764 35:a,3b,c;0,1,0>35 3 a +765 35:a,3b,c;0,2,0>35 3 a +766 35:3a,b,c>35 3 b +767 35:3a,b,c;1,0,0>35 3 b +768 35:3a,b,c;2,0,0>35 3 b +769 35:a,b,3c>35 3 c +770 35:-b,a,2c>36 2 a +771 35:a,b,2c>36 2 b +772 35:a,b,2c>37 2 a +773 35:a,b,2c>44 2 a +774 35:a,b,2c>45 2 a +775 35:-b,a,2c;1/4,1/4,0>46 2 a +776 35:a,b,2c;1/4,1/4,0>46 2 b +777 36:1/2a+1/2b,c,1/2a-1/2b>4 2 a +778 36:-b,a,c>8 2 a +779 36:a,b,c>9 2 a +780 36:a,b,c>26 2 a +781 36:-b,a,c;1/4,1/4,0>29 2 a +782 36:a,b,c;0,1/4,0>31 2 a +783 36:-b,a,c>33 2 a +784 36:a,3b,c>36 3 a +785 36:a,3b,c;0,1,0>36 3 a +786 36:a,3b,c;0,2,0>36 3 a +787 36:3a,b,c>36 3 b +788 36:3a,b,c;1,0,0>36 3 b +789 36:3a,b,c;2,0,0>36 3 b +790 36:a,b,3c>36 3 c +791 37:1/2a+1/2b,c,1/2a-1/2b>3 2 a +792 37:-b,a,c>9 2 a +793 37:a,b,c>9 2 b +794 37:a,b,c>27 2 a +795 37:-b,a,c;1/4,1/4,0>30 2 a +796 37:a,b,c;1/4,1/4,0>30 2 b +797 37:a,b,c>34 2 a +798 37:a,3b,c>37 3 a +799 37:a,3b,c;0,1,0>37 3 a +800 37:a,3b,c;0,2,0>37 3 a +801 37:3a,b,c>37 3 b +802 37:3a,b,c;1,0,0>37 3 b +803 37:3a,b,c;2,0,0>37 3 b +804 37:a,b,3c>37 3 c +805 38:b,c,a>5 2 a +806 38:1/2b+1/2c,a,1/2b-1/2c>6 2 a +807 38:c,b,-a-c>8 2 a +808 38:a,b,c>25 2 a +809 38:a,b,c;0,1/4,0>26 2 a +810 38:a,b,c>30 2 a +811 38:-b,a,c>31 2 a +812 38:2a,b,c;1/2,0,0>38 2 a +813 38:2a,b,c>38 2 b +814 38:a,3b,c>38 3 a +815 38:a,3b,c;0,1,0>38 3 a +816 38:a,3b,c;0,2,0>38 3 a +817 38:3a,b,c>38 3 b +818 38:3a,b,c;1,0,0>38 3 b +819 38:3a,b,c;2,0,0>38 3 b +820 38:a,b,3c>38 3 c +821 38:2a,b,c;1/2,0,0>40 2 a +822 38:2a,b,c>40 2 b +823 38:2a,b,c;1/2,0,0>44 2 a +824 38:2a,b,c>44 2 b +825 38:2a,b,c;1/2,0,0>46 2 a +826 38:2a,b,c>46 2 b +827 39:b,c,a>5 2 a +828 39:-1/2b+1/2c,a,b>7 2 a +829 39:c,b,-a-c;0,1/4,0>8 2 a +830 39:-b,a,c;0,1/4,0>26 2 a +831 39:a,b,c>27 2 a +832 39:-b,a,c>28 2 a +833 39:-b,a,c;0,1/4,0>29 2 a +834 39:2a,b,c;1/2,0,0>39 2 a +835 39:2a,b,c>39 2 b +836 39:a,3b,c>39 3 a +837 39:a,3b,c;0,1,0>39 3 a +838 39:a,3b,c;0,2,0>39 3 a +839 39:3a,b,c>39 3 b +840 39:3a,b,c;1,0,0>39 3 b +841 39:3a,b,c;2,0,0>39 3 b +842 39:a,b,3c>39 3 c +843 39:2a,b,c;1/2,0,0>41 2 a +844 39:2a,b,c>41 2 b +845 39:2a,b,c;1/2,0,0>45 2 a +846 39:2a,b,c>45 2 b +847 39:-b,2a,c;1/2,0,0>46 2 a +848 39:-b,2a,c>46 2 b +849 40:b,c,a>5 2 a +850 40:1/2b+1/2c,a,1/2b-1/2c;1/4,0,0>6 2 a +851 40:c,b,-a>9 2 a +852 40:a,b,c>28 2 a +853 40:a,b,c;1/4,1/4,0>31 2 a +854 40:a,b,c;0,1/4,0>33 2 a +855 40:a,b,c>34 2 a +856 40:a,3b,c>40 3 a +857 40:a,3b,c;0,1,0>40 3 a +858 40:a,3b,c;0,2,0>40 3 a +859 40:3a,b,c>40 3 b +860 40:3a,b,c;1,0,0>40 3 b +861 40:3a,b,c;2,0,0>40 3 b +862 40:a,b,3c>40 3 c +863 41:b,c,a>5 2 a +864 41:-1/2b+1/2c,a,b;1/4,0,0>7 2 a +865 41:c,b,-a;0,1/4,0>9 2 a +866 41:a,b,c;0,1/4,0>29 2 a +867 41:-b,a,c>30 2 a +868 41:a,b,c>32 2 a +869 41:-b,a,c;0,1/4,0>33 2 a +870 41:a,3b,c>41 3 a +871 41:a,3b,c;0,1,0>41 3 a +872 41:a,3b,c;0,2,0>41 3 a +873 41:3a,b,c>41 3 b +874 41:3a,b,c;1,0,0>41 3 b +875 41:3a,b,c;2,0,0>41 3 b +876 41:a,b,3c>41 3 c +877 42:b,c,1/2a-1/2b>5 2 a +878 42:c,a,1/2b-1/2c>8 2 a +879 42:a,b,-1/2a+1/2c>8 2 b +880 42:a,b,c>35 2 a +881 42:a,b,c;0,1/4,0>36 2 a +882 42:-b,a,c;1/4,0,0>36 2 b +883 42:a,b,c;1/4,1/4,0>37 2 a +884 42:-b,a,c>38 2 a +885 42:a,b,c>38 2 b +886 42:a,b,c;1/4,1/4,0>39 2 a +887 42:-b,a,c;1/4,1/4,0>39 2 b +888 42:-b,a,c;1/4,1/4,0>40 2 a +889 42:a,b,c;1/4,1/4,0>40 2 b +890 42:-b,a,c>41 2 a +891 42:a,b,c>41 2 b +892 42:a,3b,c>42 3 a +893 42:a,3b,c;0,1,0>42 3 a +894 42:a,3b,c;0,2,0>42 3 a +895 42:3a,b,c>42 3 b +896 42:3a,b,c;1,0,0>42 3 b +897 42:3a,b,c;2,0,0>42 3 b +898 42:a,b,3c>42 3 c +899 43:b,c,1/2a-1/2b>5 2 a +900 43:-b,a,1/2b+1/2c;1/8,1/2,1/2>9 2 a +901 43:-c,b,1/2a+1/2c;1/2,1/8,1/2>9 2 b +902 43:a,3b,c;1/4,1/4,0>43 3 a +903 43:a,3b,c;1/4,5/4,0>43 3 a +904 43:a,3b,c;1/4,9/4,0>43 3 a +905 43:3a,b,c;1/4,1/4,0>43 3 b +906 43:3a,b,c;5/4,1/4,0>43 3 b +907 43:3a,b,c;9/4,1/4,0>43 3 b +908 43:a,b,3c;1/4,1/4,0>43 3 c +909 44:-a-b,c,b>5 2 a +910 44:-b-c,a,c>8 2 a +911 44:-a-c,b,a>8 2 b +912 44:a,b,c>25 2 a +913 44:a,b,c;0,1/4,0>31 2 a +914 44:-b,a,c;1/4,0,0>31 2 b +915 44:a,b,c>34 2 a +916 44:a,3b,c>44 3 a +917 44:a,3b,c;0,1,0>44 3 a +918 44:a,3b,c;0,2,0>44 3 a +919 44:3a,b,c>44 3 b +920 44:3a,b,c;1,0,0>44 3 b +921 44:3a,b,c;2,0,0>44 3 b +922 44:a,b,3c>44 3 c +923 45:-a-b,c,b>5 2 a +924 45:-b-c,a,c>9 2 a +925 45:a-c,b,c>9 2 b +926 45:a,b,c>27 2 a +927 45:-b,a,c;1/4,1/4,0>29 2 a +928 45:a,b,c;1/4,1/4,0>29 2 b +929 45:a,b,c>32 2 a +930 45:a,3b,c>45 3 a +931 45:a,3b,c;0,1,0>45 3 a +932 45:a,3b,c;0,2,0>45 3 a +933 45:3a,b,c>45 3 b +934 45:3a,b,c;1,0,0>45 3 b +935 45:3a,b,c;2,0,0>45 3 b +936 45:a,b,3c>45 3 c +937 46:-a-b,c,b>5 2 a +938 46:-b-c,a,c;1/4,0,0>8 2 a +939 46:-a-c,b,a>9 2 a +940 46:a,b,c;1/4,1/4,0>26 2 a +941 46:a,b,c>28 2 a +942 46:a,b,c>30 2 a +943 46:a,b,c;1/4,1/4,0>33 2 a +944 46:a,3b,c>46 3 a +945 46:a,3b,c;0,1,0>46 3 a +946 46:a,3b,c;0,2,0>46 3 a +947 46:3a,b,c>46 3 b +948 46:3a,b,c;1,0,0>46 3 b +949 46:3a,b,c;2,0,0>46 3 b +950 46:a,b,3c>46 3 c +951 47:c,a,b>10 2 a +952 47:a,b,c>10 2 b +953 47:b,c,a>10 2 c +954 47:a,b,c>16 2 a +955 47:b,c,a>25 2 a +956 47:c,a,b>25 2 b +957 47:a,b,c>25 2 c +958 47:a,b,2c;0,0,1/2>47 2 a +959 47:a,b,2c>47 2 b +960 47:a,2b,c;0,1/2,0>47 2 c +961 47:a,2b,c>47 2 d +962 47:2a,b,c;1/2,0,0>47 2 e +963 47:2a,b,c>47 2 f +964 47:a,b,3c>47 3 a +965 47:a,b,3c;0,0,1>47 3 a +966 47:a,b,3c;0,0,2>47 3 a +967 47:a,3b,c>47 3 b +968 47:a,3b,c;0,1,0>47 3 b +969 47:a,3b,c;0,2,0>47 3 b +970 47:3a,b,c>47 3 c +971 47:3a,b,c;1,0,0>47 3 c +972 47:3a,b,c;2,0,0>47 3 c +973 47:a,b,2c;0,0,1/2>49 2 a +974 47:a,b,2c>49 2 b +975 47:c,a,2b;0,1/2,0>49 2 c +976 47:c,a,2b>49 2 d +977 47:b,c,2a;1/2,0,0>49 2 e +978 47:b,c,2a>49 2 f +979 47:2c,b,-a;0,0,1/2>51 2 a +980 47:2c,b,-a>51 2 b +981 47:-2b,a,c;0,1/2,0>51 2 c +982 47:-2b,a,c>51 2 d +983 47:2b,c,a;0,1/2,0>51 2 e +984 47:2b,c,a>51 2 f +985 47:2a,-c,b;1/2,0,0>51 2 g +986 47:2a,-c,b>51 2 h +987 47:2c,a,b;0,0,1/2>51 2 i +988 47:2c,a,b>51 2 j +989 47:2a,b,c;1/2,0,0>51 2 k +990 47:2a,b,c>51 2 l +991 47:2a,2b,c;1/2,0,0>65 2 a +992 47:2a,2b,c>65 2 b +993 47:2c,2a,b;0,0,1/2>65 2 c +994 47:2c,2a,b;1/2,0,1/2>65 2 d +995 47:2c,2a,b;1/2,0,0>65 2 e +996 47:2c,2a,b>65 2 f +997 47:2b,2c,a;0,1/2,0>65 2 g +998 47:2b,2c,a;0,1/2,1/2>65 2 h +999 47:2a,2b,c;0,1/2,0>65 2 i +1000 47:2a,2b,c;1/2,1/2,0>65 2 j +1001 47:2b,2c,a;0,0,1/2>65 2 k +1002 47:2b,2c,a>65 2 l +1003 47:2a,2b,c;0,1/2,0>67 2 a +1004 47:2a,2b,c;1/2,1/2,0>67 2 b +1005 47:2c,2a,b;0,0,1/2>67 2 c +1006 47:2c,2a,b;1/2,0,1/2>67 2 d +1007 47:2c,2a,b;1/2,0,0>67 2 e +1008 47:2c,2a,b>67 2 f +1009 47:2b,2c,a;0,1/2,0>67 2 g +1010 47:2b,2c,a;0,1/2,1/2>67 2 h +1011 47:2a,2b,c;1/2,0,0>67 2 i +1012 47:2a,2b,c>67 2 j +1013 47:2b,2c,a;0,0,1/2>67 2 k +1014 47:2b,2c,a>67 2 l +1015 47:2a,2b,2c;1/2,1/2,1/2>69 2 a +1016 47:2a,2b,2c;0,1/2,1/2>69 2 b +1017 47:2a,2b,2c;0,1/2,0>69 2 c +1018 47:2a,2b,2c;1/2,1/2,0>69 2 d +1019 47:2a,2b,2c;0,0,1/2>69 2 e +1020 47:2a,2b,2c;1/2,0,1/2>69 2 f +1021 47:2a,2b,2c;1/2,0,0>69 2 g +1022 47:2a,2b,2c>69 2 h +1023 48:-b,a,b+c>13 2 a +1024 48:c,b,-a-c>13 2 b +1025 48:a,c,-a-b>13 2 c +1026 48:a,b,c;1/4,1/4,1/4>16 2 a +1027 48:b,c,a;1/4,1/4,1/4>34 2 a +1028 48:c,a,b;1/4,1/4,1/4>34 2 b +1029 48:a,b,c;1/4,1/4,1/4>34 2 c +1030 48:a,b,3c>48 3 a +1031 48:a,b,3c;0,0,1>48 3 a +1032 48:a,b,3c;0,0,2>48 3 a +1033 48:a,3b,c>48 3 b +1034 48:a,3b,c;0,1,0>48 3 b +1035 48:a,3b,c;0,2,0>48 3 b +1036 48:3a,b,c>48 3 c +1037 48:3a,b,c;1,0,0>48 3 c +1038 48:3a,b,c;2,0,0>48 3 c +1039 48:2a,2b,2c;1/2,1/2,1/2>70 2 a +1040 48:2a,2b,2c;0,1/2,1/2>70 2 b +1041 48:2a,2b,2c;1/2,0,1/2>70 2 c +1042 48:2a,2b,2c;1/2,1/2,0>70 2 d +1043 48:2a,2b,2c;0,1/2,0>70 2 e +1044 48:2a,2b,2c;1/2,0,0>70 2 f +1045 48:2a,2b,2c;0,0,1/2>70 2 g +1046 48:2a,2b,2c>70 2 h +1047 49:b,c,a>10 2 a +1048 49:-b,a,c>13 2 a +1049 49:a,b,c>13 2 b +1050 49:a,b,c;0,0,1/4>16 2 a +1051 49:a,b,c>27 2 a +1052 49:c,b,-a;0,0,1/4>28 2 a +1053 49:c,a,b;0,0,1/4>28 2 b +1054 49:a,2b,c;0,1/2,0>49 2 a +1055 49:a,2b,c>49 2 b +1056 49:2a,b,c;1/2,0,0>49 2 c +1057 49:2a,b,c>49 2 d +1058 49:a,b,3c>49 3 a +1059 49:a,b,3c;0,0,1>49 3 a +1060 49:a,b,3c;0,0,2>49 3 a +1061 49:a,3b,c>49 3 b +1062 49:a,3b,c;0,1,0>49 3 b +1063 49:a,3b,c;0,2,0>49 3 b +1064 49:3a,b,c>49 3 c +1065 49:3a,b,c;1,0,0>49 3 c +1066 49:3a,b,c;2,0,0>49 3 c +1067 49:2b,c,a;0,1/2,0>50 2 a +1068 49:2b,c,a>50 2 b +1069 49:c,2a,b;1/2,0,0>50 2 c +1070 49:c,2a,b>50 2 d +1071 49:c,a,2b;0,1/2,0>53 2 a +1072 49:c,a,2b>53 2 b +1073 49:c,b,-2a;1/2,0,0>53 2 c +1074 49:c,b,-2a>53 2 d +1075 49:-2b,a,c;0,1/2,0>54 2 a +1076 49:-2b,a,c>54 2 b +1077 49:2a,b,c;1/2,0,0>54 2 c +1078 49:2a,b,c>54 2 d +1079 49:2a,2b,c;0,1/2,0>66 2 a +1080 49:2a,2b,c;1/2,1/2,0>66 2 b +1081 49:2a,2b,c;1/2,0,0>66 2 c +1082 49:2a,2b,c>66 2 d +1083 49:2a,2b,c;1/2,0,0>68 2 a +1084 49:2a,2b,c;0,1/2,0>68 2 b +1085 49:2a,2b,c;1/2,1/2,0>68 2 c +1086 49:2a,2b,c>68 2 d +1087 50:c,a,b>13 2 a +1088 50:-a-c,b,a>13 2 b +1089 50:a,c,-a-b>13 2 c +1090 50:a,b,c;1/4,1/4,0>16 2 a +1091 50:c,b,-a;1/4,1/4,0>30 2 a +1092 50:c,a,b;1/4,1/4,0>30 2 b +1093 50:a,b,c;1/4,1/4,0>32 2 a +1094 50:a,b,2c;0,0,1/2>48 2 a +1095 50:a,b,2c>48 2 b +1096 50:a,b,2c;0,0,1/2>50 2 a +1097 50:a,b,2c>50 2 b +1098 50:a,b,3c>50 3 a +1099 50:a,b,3c;0,0,1>50 3 a +1100 50:a,b,3c;0,0,2>50 3 a +1101 50:a,3b,c>50 3 b +1102 50:a,3b,c;0,1,0>50 3 b +1103 50:a,3b,c;0,2,0>50 3 b +1104 50:3a,b,c>50 3 c +1105 50:3a,b,c;1,0,0>50 3 c +1106 50:3a,b,c;2,0,0>50 3 c +1107 50:b,2c,a;0,0,1/2>52 2 a +1108 50:b,2c,a>52 2 b +1109 50:a,-2c,b;0,0,1/2>52 2 c +1110 50:a,-2c,b>52 2 d +1111 51:a,b,c>10 2 a +1112 51:c,a,b>11 2 a +1113 51:b,c,a>13 2 a +1114 51:b,c,a>17 2 a +1115 51:a,b,c;1/4,0,0>25 2 a +1116 51:b,c,a>26 2 a +1117 51:a,-c,b>28 2 a +1118 51:a,b,2c;0,0,1/2>51 2 a +1119 51:a,b,2c>51 2 b +1120 51:a,2b,c;0,1/2,0>51 2 c +1121 51:a,2b,c>51 2 d +1122 51:a,b,3c>51 3 a +1123 51:a,b,3c;0,0,1>51 3 a +1124 51:a,b,3c;0,0,2>51 3 a +1125 51:a,3b,c>51 3 b +1126 51:a,3b,c;0,1,0>51 3 b +1127 51:a,3b,c;0,2,0>51 3 b +1128 51:3a,b,c>51 3 c +1129 51:3a,b,c;1,0,0>51 3 c +1130 51:3a,b,c;2,0,0>51 3 c +1131 51:2b,c,a;0,1/2,0>53 2 a +1132 51:2b,c,a>53 2 b +1133 51:a,b,2c;0,0,1/2>54 2 a +1134 51:a,b,2c>54 2 b +1135 51:2c,a,b;0,0,1/2>55 2 a +1136 51:2c,a,b>55 2 b +1137 51:b,2c,a;0,0,1/2>57 2 a +1138 51:b,2c,a>57 2 b +1139 51:c,a,2b;0,1/2,0>57 2 c +1140 51:c,a,2b>57 2 d +1141 51:a,2b,c;0,1/2,0>59 2 a +1142 51:a,2b,c>59 2 b +1143 51:2b,2c,a;0,1/2,0>63 2 a +1144 51:2b,2c,a;0,1/2,1/2>63 2 b +1145 51:2b,2c,a;0,0,1/2>63 2 c +1146 51:2b,2c,a>63 2 d +1147 51:2b,2c,a;0,1/2,0>64 2 a +1148 51:2b,2c,a;0,1/2,1/2>64 2 b +1149 51:2b,2c,a;0,0,1/2>64 2 c +1150 51:2b,2c,a>64 2 d +1151 52:-b,a,b+c>13 2 a +1152 52:b,c,a>13 2 b +1153 52:c,b,-a-c>14 2 a +1154 52:c,a,b;1/4,0,1/4>17 2 a +1155 52:b,c,a;0,1/4,1/4>30 2 a +1156 52:a,-c,b;1/4,0,1/4>33 2 a +1157 52:a,b,c;1/4,0,0>34 2 a +1158 52:a,b,3c>52 3 a +1159 52:a,b,3c;0,0,1>52 3 a +1160 52:a,b,3c;0,0,2>52 3 a +1161 52:a,3b,c>52 3 b +1162 52:a,3b,c;0,1,0>52 3 b +1163 52:a,3b,c;0,2,0>52 3 b +1164 52:3a,b,c>52 3 c +1165 52:3a,b,c;1,0,0>52 3 c +1166 52:3a,b,c;2,0,0>52 3 c +1167 53:c,a,b>10 2 a +1168 53:c,b,-a-c>13 2 a +1169 53:b,c,a>14 2 a +1170 53:a,b,c;1/4,0,0>17 2 a +1171 53:a,-c,b;1/4,0,1/4>28 2 a +1172 53:b,c,a>30 2 a +1173 53:a,b,c>31 2 a +1174 53:2b,c,a;0,1/2,0>52 2 a +1175 53:2b,c,a>52 2 b +1176 53:a,2b,c;0,1/2,0>53 2 a +1177 53:a,2b,c>53 2 b +1178 53:a,b,3c>53 3 a +1179 53:a,b,3c;0,0,1>53 3 a +1180 53:a,b,3c;0,0,2>53 3 a +1181 53:a,3b,c>53 3 b +1182 53:a,3b,c;0,1,0>53 3 b +1183 53:a,3b,c;0,2,0>53 3 b +1184 53:3a,b,c>53 3 c +1185 53:3a,b,c;1,0,0>53 3 c +1186 53:3a,b,c;2,0,0>53 3 c +1187 53:2b,c,a;0,1/2,0>58 2 a +1188 53:2b,c,a>58 2 b +1189 53:c,a,2b;0,1/2,0>60 2 a +1190 53:c,a,2b>60 2 b +1191 54:a,b,c>13 2 a +1192 54:b,c,a>13 2 b +1193 54:-b,a,c>14 2 a +1194 54:b,c,a;0,0,1/4>17 2 a +1195 54:a,b,c;1/4,0,0>27 2 a +1196 54:c,b,-a;0,0,1/4>29 2 a +1197 54:a,-c,b;0,0,1/4>32 2 a +1198 54:c,a,2b;0,1/2,0>52 2 a +1199 54:c,a,2b>52 2 b +1200 54:a,2b,c;0,1/2,0>54 2 a +1201 54:a,2b,c>54 2 b +1202 54:a,b,3c>54 3 a +1203 54:a,b,3c;0,0,1>54 3 a +1204 54:a,b,3c;0,0,2>54 3 a +1205 54:a,3b,c>54 3 b +1206 54:a,3b,c;0,1,0>54 3 b +1207 54:a,3b,c;0,2,0>54 3 b +1208 54:3a,b,c>54 3 c +1209 54:3a,b,c;1,0,0>54 3 c +1210 54:3a,b,c;2,0,0>54 3 c +1211 54:a,2b,c;0,1/2,0>56 2 a +1212 54:a,2b,c>56 2 b +1213 54:2b,c,a;0,1/2,0>60 2 a +1214 54:2b,c,a>60 2 b +1215 55:b,c,a>10 2 a +1216 55:c,a,b>14 2 a +1217 55:-a-c,b,a>14 2 b +1218 55:a,b,c>18 2 a +1219 55:c,b,-a;0,1/4,0>26 2 a +1220 55:c,a,b;1/4,0,0>26 2 b +1221 55:a,b,c>32 2 a +1222 55:a,b,2c;0,0,1/2>55 2 a +1223 55:a,b,2c>55 2 b +1224 55:a,b,3c>55 3 a +1225 55:a,b,3c;0,0,1>55 3 a +1226 55:a,b,3c;0,0,2>55 3 a +1227 55:a,3b,c>55 3 b +1228 55:a,3b,c;0,1,0>55 3 b +1229 55:a,3b,c;0,2,0>55 3 b +1230 55:3a,b,c>55 3 c +1231 55:3a,b,c;1,0,0>55 3 c +1232 55:3a,b,c;2,0,0>55 3 c +1233 55:a,b,2c;0,0,1/2>58 2 a +1234 55:a,b,2c>58 2 b +1235 55:b,2c,a;0,0,1/2>62 2 a +1236 55:b,2c,a>62 2 b +1237 55:a,-2c,b;0,0,1/2>62 2 c +1238 55:a,-2c,b>62 2 d +1239 56:a,c,-a-b>13 2 a +1240 56:-b,a,c>14 2 a +1241 56:a,b,c>14 2 b +1242 56:a,b,c;1/4,1/4,1/4>18 2 a +1243 56:a,b,c;1/4,1/4,0>27 2 a +1244 56:c,b,-a;0,0,1/4>33 2 a +1245 56:c,a,b;0,0,1/4>33 2 b +1246 56:a,b,3c>56 3 a +1247 56:a,b,3c;0,0,1>56 3 a +1248 56:a,b,3c;0,0,2>56 3 a +1249 56:a,3b,c>56 3 b +1250 56:a,3b,c;0,1,0>56 3 b +1251 56:a,3b,c;0,2,0>56 3 b +1252 56:3a,b,c>56 3 c +1253 56:3a,b,c;1,0,0>56 3 c +1254 56:3a,b,c;2,0,0>56 3 c +1255 57:b,c,a>11 2 a +1256 57:c,a,b>13 2 a +1257 57:a,b,c>14 2 a +1258 57:b,c,a;0,1/4,0>18 2 a +1259 57:c,a,b;0,0,1/4>26 2 a +1260 57:c,b,-a;0,1/4,0>28 2 a +1261 57:-b,a,c>29 2 a +1262 57:2a,b,c;1/2,0,0>57 2 a +1263 57:2a,b,c>57 2 b +1264 57:a,b,3c>57 3 a +1265 57:a,b,3c;0,0,1>57 3 a +1266 57:a,b,3c;0,0,2>57 3 a +1267 57:a,3b,c>57 3 b +1268 57:a,3b,c;0,1,0>57 3 b +1269 57:a,3b,c;0,2,0>57 3 b +1270 57:3a,b,c>57 3 c +1271 57:3a,b,c;1,0,0>57 3 c +1272 57:3a,b,c;2,0,0>57 3 c +1273 57:c,2a,b;1/2,0,0>60 2 a +1274 57:c,2a,b>60 2 b +1275 57:2a,b,c;1/2,0,0>61 2 a +1276 57:2a,b,c>61 2 b +1277 57:b,c,2a;1/2,0,0>62 2 a +1278 57:b,c,2a>62 2 b +1279 58:b,c,a>10 2 a +1280 58:-b,a,b+c>14 2 a +1281 58:c,b,-a-c>14 2 b +1282 58:a,b,c;0,0,1/4>18 2 a +1283 58:-c,b,a;0,1/4,0>31 2 a +1284 58:c,a,b;1/4,0,0>31 2 b +1285 58:a,b,c>34 2 a +1286 58:a,b,3c>58 3 a +1287 58:a,b,3c;0,0,1>58 3 a +1288 58:a,b,3c;0,0,2>58 3 a +1289 58:a,3b,c>58 3 b +1290 58:a,3b,c;0,1,0>58 3 b +1291 58:a,3b,c;0,2,0>58 3 b +1292 58:3a,b,c>58 3 c +1293 58:3a,b,c;1,0,0>58 3 c +1294 58:3a,b,c;2,0,0>58 3 c +1295 59:c,a,b>11 2 a +1296 59:a,b,c>11 2 b +1297 59:a,c,-a-b>13 2 a +1298 59:a,b,c;1/4,1/4,0>18 2 a +1299 59:a,b,c;1/4,1/4,0>25 2 a +1300 59:b,c,a;1/4,1/4,0>31 2 a +1301 59:a,-c,b;1/4,1/4,0>31 2 b +1302 59:a,b,2c;0,0,1/2>56 2 a +1303 59:a,b,2c>56 2 b +1304 59:a,b,2c;0,0,1/2>59 2 a +1305 59:a,b,2c>59 2 b +1306 59:a,b,3c>59 3 a +1307 59:a,b,3c;0,0,1>59 3 a +1308 59:a,b,3c;0,0,2>59 3 a +1309 59:a,3b,c>59 3 b +1310 59:a,3b,c;0,1,0>59 3 b +1311 59:a,3b,c;0,2,0>59 3 b +1312 59:3a,b,c>59 3 c +1313 59:3a,b,c;1,0,0>59 3 c +1314 59:3a,b,c;2,0,0>59 3 c +1315 59:2c,a,b;0,0,1/2>62 2 a +1316 59:2c,a,b>62 2 b +1317 59:2c,b,-a;0,0,1/2>62 2 c +1318 59:2c,b,-a>62 2 d +1319 60:a,b,c>13 2 a +1320 60:c,a,b>14 2 a +1321 60:a,c,-a-b>14 2 b +1322 60:c,a,b;0,1/4,1/4>18 2 a +1323 60:-b,a,c;1/4,1/4,0>29 2 a +1324 60:c,a,b;0,0,1/4>30 2 a +1325 60:c,b,-a;0,1/4,0>33 2 a +1326 60:a,b,3c>60 3 a +1327 60:a,b,3c;0,0,1>60 3 a +1328 60:a,b,3c;0,0,2>60 3 a +1329 60:a,3b,c>60 3 b +1330 60:a,3b,c;0,1,0>60 3 b +1331 60:a,3b,c;0,2,0>60 3 b +1332 60:3a,b,c>60 3 c +1333 60:3a,b,c;1,0,0>60 3 c +1334 60:3a,b,c;2,0,0>60 3 c +1335 61:c,a,b>14 2 a +1336 61:a,b,c>14 2 b +1337 61:b,c,a>14 2 c +1338 61:a,b,c>19 2 a +1339 61:c,b,-a;0,1/4,0>29 2 a +1340 61:a,-c,b;0,0,1/4>29 2 b +1341 61:-b,a,c;1/4,0,0>29 2 c +1342 61:a,b,3c>61 3 a +1343 61:a,b,3c;0,0,1>61 3 a +1344 61:a,b,3c;0,0,2>61 3 a +1345 61:a,3b,c>61 3 b +1346 61:a,3b,c;0,1,0>61 3 b +1347 61:a,3b,c;0,2,0>61 3 b +1348 61:3a,b,c>61 3 c +1349 61:3a,b,c;1,0,0>61 3 c +1350 61:3a,b,c;2,0,0>61 3 c +1351 62:a,b,c>11 2 a +1352 62:-b,a,b+c>14 2 a +1353 62:b,c,a>14 2 b +1354 62:a,b,c;0,0,1/4>19 2 a +1355 62:b,c,a;0,1/4,1/4>26 2 a +1356 62:-b,a,c;1/4,1/4,0>31 2 a +1357 62:a,-c,b>33 2 a +1358 62:a,b,3c>62 3 a +1359 62:a,b,3c;0,0,1>62 3 a +1360 62:a,b,3c;0,0,2>62 3 a +1361 62:a,3b,c>62 3 b +1362 62:a,3b,c;0,1,0>62 3 b +1363 62:a,3b,c;0,2,0>62 3 b +1364 62:3a,b,c>62 3 c +1365 62:3a,b,c;1,0,0>62 3 c +1366 62:3a,b,c;2,0,0>62 3 c +1367 63:1/2a+1/2b,c,1/2a-1/2b>11 2 a +1368 63:-b,a,c>12 2 a +1369 63:a,b,c>15 2 a +1370 63:a,b,c>20 2 a +1371 63:a,b,c>36 2 a +1372 63:c,a,b;0,0,1/4>38 2 a +1373 63:c,b,-a>40 2 a +1374 63:c,a,b>51 2 a +1375 63:b,c,a;1/4,1/4,0>52 2 a +1376 63:a,b,c;1/4,1/4,0>57 2 a +1377 63:b,c,a>58 2 a +1378 63:c,a,b;1/4,1/4,0>59 2 a +1379 63:a,b,c>60 2 a +1380 63:c,a,b;1/4,1/4,0>62 2 a +1381 63:b,c,a>62 2 b +1382 63:a,b,3c>63 3 a +1383 63:a,b,3c;0,0,1>63 3 a +1384 63:a,b,3c;0,0,2>63 3 a +1385 63:a,3b,c>63 3 b +1386 63:a,3b,c;0,1,0>63 3 b +1387 63:a,3b,c;0,2,0>63 3 b +1388 63:3a,b,c>63 3 c +1389 63:3a,b,c;1,0,0>63 3 c +1390 63:3a,b,c;2,0,0>63 3 c +1391 64:-b,a,c>12 2 a +1392 64:-1/2a+1/2b,c,a>14 2 a +1393 64:a,b,c;1/4,1/4,0>15 2 a +1394 64:a,b,c;1/4,0,0>20 2 a +1395 64:a,b,c;0,1/4,0>36 2 a +1396 64:c,a,b;1/4,0,1/4>39 2 a +1397 64:c,b,-a>41 2 a +1398 64:a,b,c>53 2 a +1399 64:c,a,b;1/4,1/4,0>54 2 a +1400 64:b,c,a>55 2 a +1401 64:c,a,b>56 2 a +1402 64:b,c,a;1/4,1/4,0>57 2 a +1403 64:c,a,b;1/4,1/4,0>60 2 a +1404 64:a,b,c>61 2 a +1405 64:-b,a,c;1/4,1/4,0>62 2 a +1406 64:a,b,3c>64 3 a +1407 64:a,b,3c;0,0,1>64 3 a +1408 64:a,b,3c;0,0,2>64 3 a +1409 64:a,3b,c>64 3 b +1410 64:a,3b,c;0,1,0>64 3 b +1411 64:a,3b,c;0,2,0>64 3 b +1412 64:3a,b,c>64 3 c +1413 64:3a,b,c;1,0,0>64 3 c +1414 64:3a,b,c;2,0,0>64 3 c +1415 65:1/2a+1/2b,c,1/2a-1/2b>10 2 a +1416 65:-b,a,c>12 2 a +1417 65:a,b,c>12 2 b +1418 65:a,b,c>21 2 a +1419 65:a,b,c>35 2 a +1420 65:c,b,-a>38 2 a +1421 65:c,a,b>38 2 b +1422 65:a,b,c>47 2 a +1423 65:a,b,c;1/4,1/4,0>50 2 a +1424 65:b,c,a;1/4,1/4,0>51 2 a +1425 65:a,-c,b;1/4,1/4,0>51 2 b +1426 65:a,-c,b>53 2 a +1427 65:b,c,a>53 2 b +1428 65:a,b,c>55 2 a +1429 65:a,b,c;1/4,1/4,0>59 2 a +1430 65:a,b,2c;0,0,1/2>63 2 a +1431 65:a,b,2c>63 2 b +1432 65:-b,a,2c;0,0,1/2>63 2 c +1433 65:-b,a,2c>63 2 d +1434 65:a,b,2c;0,0,1/2>65 2 a +1435 65:a,b,2c>65 2 b +1436 65:a,b,3c>65 3 a +1437 65:a,b,3c;0,0,1>65 3 a +1438 65:a,b,3c;0,0,2>65 3 a +1439 65:a,3b,c>65 3 b +1440 65:a,3b,c;0,1,0>65 3 b +1441 65:a,3b,c;0,2,0>65 3 b +1442 65:3a,b,c>65 3 c +1443 65:3a,b,c;1,0,0>65 3 c +1444 65:3a,b,c;2,0,0>65 3 c +1445 65:a,b,2c;0,0,1/2>66 2 a +1446 65:a,b,2c>66 2 b +1447 65:a,b,2c;0,0,1/2>71 2 a +1448 65:a,b,2c>71 2 b +1449 65:a,b,2c;0,0,1/2>72 2 a +1450 65:a,b,2c>72 2 b +1451 65:a,-2c,b;0,0,1/2>74 2 a +1452 65:a,-2c,b>74 2 b +1453 65:b,2c,a;0,0,1/2>74 2 c +1454 65:b,2c,a>74 2 d +1455 66:1/2a+1/2b,c,1/2a-1/2b>10 2 a +1456 66:-b,a,c>15 2 a +1457 66:a,b,c>15 2 b +1458 66:a,b,c;0,0,1/4>21 2 a +1459 66:a,b,c>37 2 a +1460 66:c,b,-a;0,0,1/4>40 2 a +1461 66:c,a,b;0,0,1/4>40 2 b +1462 66:a,b,c;1/4,1/4,0>48 2 a +1463 66:a,b,c>49 2 a +1464 66:c,b,-a>52 2 a +1465 66:c,a,b>52 2 b +1466 66:c,a,b;1/4,1/4,0>53 2 a +1467 66:c,b,-a;1/4,1/4,0>53 2 b +1468 66:a,b,c;1/4,1/4,0>56 2 a +1469 66:a,b,c>58 2 a +1470 66:a,b,3c>66 3 a +1471 66:a,b,3c;0,0,1>66 3 a +1472 66:a,b,3c;0,0,2>66 3 a +1473 66:a,3b,c>66 3 b +1474 66:a,3b,c;0,1,0>66 3 b +1475 66:a,3b,c;0,2,0>66 3 b +1476 66:3a,b,c>66 3 c +1477 66:3a,b,c;1,0,0>66 3 c +1478 66:3a,b,c;2,0,0>66 3 c +1479 67:-b,a,c>12 2 a +1480 67:a,b,c;1/4,1/4,0>12 2 b +1481 67:-1/2a+1/2b,c,a>13 2 a +1482 67:a,b,c;1/4,0,0>21 2 a +1483 67:a,b,c;0,1/4,0>35 2 a +1484 67:c,b,-a>39 2 a +1485 67:c,a,b;1/4,0,0>39 2 b +1486 67:c,a,b;1/4,1/4,0>49 2 a +1487 67:b,c,a>49 2 b +1488 67:a,b,c;1/4,1/4,0>51 2 a +1489 67:-b,a,c>51 2 b +1490 67:a,-c,b>54 2 a +1491 67:b,c,a;1/4,1/4,0>54 2 b +1492 67:c,b,-a;1/4,1/4,0>57 2 a +1493 67:c,a,b>57 2 b +1494 67:a,b,2c;0,0,1/2>64 2 a +1495 67:a,b,2c>64 2 b +1496 67:-b,a,2c;1/4,1/4,1/2>64 2 c +1497 67:-b,a,2c;1/4,1/4,0>64 2 d +1498 67:a,b,2c;0,0,1/2>67 2 a +1499 67:a,b,2c>67 2 b +1500 67:a,b,3c>67 3 a +1501 67:a,b,3c;0,0,1>67 3 a +1502 67:a,b,3c;0,0,2>67 3 a +1503 67:a,3b,c>67 3 b +1504 67:a,3b,c;0,1,0>67 3 b +1505 67:a,3b,c;0,2,0>67 3 b +1506 67:3a,b,c>67 3 c +1507 67:3a,b,c;1,0,0>67 3 c +1508 67:3a,b,c;2,0,0>67 3 c +1509 67:a,b,2c;1/4,1/4,1/2>68 2 a +1510 67:a,b,2c;1/4,1/4,0>68 2 b +1511 67:b,2c,a;0,0,1/2>72 2 a +1512 67:b,2c,a>72 2 b +1513 67:2c,a,b;1/4,1/4,0>72 2 c +1514 67:2c,a,b;1/4,1/4,1/2>72 2 d +1515 67:a,b,2c;0,0,1/2>73 2 a +1516 67:a,b,2c>73 2 b +1517 67:a,b,2c;0,0,1/2>74 2 a +1518 67:a,b,2c>74 2 b +1519 68:-1/2a+1/2b,c,a;1/4,1/4,0>13 2 a +1520 68:-b,a,c;1/4,1/4,0>15 2 a +1521 68:a,b,c>15 2 b +1522 68:a,b,c;0,1/4,1/4>21 2 a +1523 68:a,b,c;1/4,0,1/4>37 2 a +1524 68:c,b,-a;0,1/4,1/4>41 2 a +1525 68:c,a,b;0,1/4,1/4>41 2 b +1526 68:c,a,b;1/4,1/4,0>50 2 a +1527 68:b,c,a>50 2 b +1528 68:a,b,c>52 2 a +1529 68:-b,a,c;1/4,1/4,0>52 2 b +1530 68:-b,a,c;1/4,1/4,0>54 2 a +1531 68:a,b,c>54 2 b +1532 68:b,c,a;1/4,1/4,0>60 2 a +1533 68:a,-c,b>60 2 b +1534 68:a,b,3c>68 3 a +1535 68:a,b,3c;0,0,1>68 3 a +1536 68:a,b,3c;0,0,2>68 3 a +1537 68:a,3b,c>68 3 b +1538 68:a,3b,c;0,1,0>68 3 b +1539 68:a,3b,c;0,2,0>68 3 b +1540 68:3a,b,c>68 3 c +1541 68:3a,b,c;1,0,0>68 3 c +1542 68:3a,b,c;2,0,0>68 3 c +1543 69:-b,a,1/2b+1/2c>12 2 a +1544 69:a,b,-1/2a+1/2c>12 2 b +1545 69:b,c,1/2a-1/2b>12 2 c +1546 69:a,b,c>22 2 a +1547 69:b,c,a>42 2 a +1548 69:c,a,b>42 2 b +1549 69:a,b,c>42 2 c +1550 69:-b,a,c;1/4,0,1/4>63 2 a +1551 69:a,b,c;0,1/4,1/4>63 2 b +1552 69:c,a,b;1/4,1/4,0>63 2 c +1553 69:a,-c,b;0,1/4,1/4>63 2 d +1554 69:b,c,a;1/4,0,1/4>63 2 e +1555 69:c,b,-a;1/4,1/4,0>63 2 f +1556 69:a,b,c>64 2 a +1557 69:a,-c,b>64 2 b +1558 69:-b,a,c>64 2 c +1559 69:b,c,a>64 2 d +1560 69:c,a,b>64 2 e +1561 69:c,b,-a>64 2 f +1562 69:a,b,c>65 2 a +1563 69:c,a,b>65 2 b +1564 69:b,c,a>65 2 c +1565 69:b,c,a;0,1/4,1/4>66 2 a +1566 69:c,a,b;1/4,0,1/4>66 2 b +1567 69:a,b,c;1/4,1/4,0>66 2 c +1568 69:b,c,a;1/4,0,1/4>67 2 a +1569 69:c,a,b;1/4,1/4,0>67 2 b +1570 69:a,b,c;0,1/4,1/4>67 2 c +1571 69:a,b,c;0,1/4,1/4>68 2 a +1572 69:c,a,b;1/4,1/4,0>68 2 b +1573 69:c,b,-a;1/4,1/4,0>68 2 c +1574 69:a,b,3c>69 3 a +1575 69:a,b,3c;0,0,1>69 3 a +1576 69:a,b,3c;0,0,2>69 3 a +1577 69:a,3b,c>69 3 b +1578 69:a,3b,c;0,1,0>69 3 b +1579 69:a,3b,c;0,2,0>69 3 b +1580 69:3a,b,c>69 3 c +1581 69:3a,b,c;1,0,0>69 3 c +1582 69:3a,b,c;2,0,0>69 3 c +1583 70:-b,a,1/2b+1/2c>15 2 a +1584 70:-c,b,1/2a+1/2c>15 2 b +1585 70:b,c,1/2a-1/2b;0,1/4,1/4>15 2 c +1586 70:a,b,c;1/8,1/8,1/8>22 2 a +1587 70:b,c,a;0,3/8,3/8>43 2 a +1588 70:c,a,b;3/8,0,3/8>43 2 b +1589 70:a,b,c;3/8,3/8,0>43 2 c +1590 70:a,b,3c;1/4,1/4,0>70 3 a +1591 70:a,b,3c;1/4,1/4,1>70 3 a +1592 70:a,b,3c;1/4,1/4,2>70 3 a +1593 70:a,3b,c;1/4,0,1/4>70 3 b +1594 70:a,3b,c;1/4,1,1/4>70 3 b +1595 70:a,3b,c;1/4,2,1/4>70 3 b +1596 70:3a,b,c;0,1/4,1/4>70 3 c +1597 70:3a,b,c;1,1/4,1/4>70 3 c +1598 70:3a,b,c;2,1/4,1/4>70 3 c +1599 71:-b+c,a,b>12 2 a +1600 71:-a-c,b,a>12 2 b +1601 71:-a-b,c,b>12 2 c +1602 71:a,b,c>23 2 a +1603 71:b,c,a>44 2 a +1604 71:c,a,b>44 2 b +1605 71:a,b,c>44 2 c +1606 71:a,b,c>47 2 a +1607 71:a,b,c;1/4,1/4,1/4>48 2 a +1608 71:b,c,a>58 2 a +1609 71:c,a,b>58 2 b +1610 71:a,b,c>58 2 c +1611 71:b,c,a;1/4,1/4,1/4>59 2 a +1612 71:c,a,b;1/4,1/4,1/4>59 2 b +1613 71:a,b,c;1/4,1/4,1/4>59 2 c +1614 71:a,b,3c>71 3 a +1615 71:a,b,3c;0,0,1>71 3 a +1616 71:a,b,3c;0,0,2>71 3 a +1617 71:a,3b,c>71 3 b +1618 71:a,3b,c;0,1,0>71 3 b +1619 71:a,3b,c;0,2,0>71 3 b +1620 71:3a,b,c>71 3 c +1621 71:3a,b,c;1,0,0>71 3 c +1622 71:3a,b,c;2,0,0>71 3 c +1623 72:-a-b,c,b>12 2 a +1624 72:-b-c,a,c>15 2 a +1625 72:a-c,b,c>15 2 b +1626 72:a,b,c;0,0,1/4>23 2 a +1627 72:a,b,c>45 2 a +1628 72:c,b,-a;0,0,1/4>46 2 a +1629 72:c,a,b;0,0,1/4>46 2 b +1630 72:a,b,c>49 2 a +1631 72:a,b,c;1/4,1/4,1/4>50 2 a +1632 72:a,b,c>55 2 a +1633 72:a,b,c;1/4,1/4,1/4>56 2 a +1634 72:-b,a,c;1/4,1/4,1/4>57 2 a +1635 72:a,b,c;1/4,1/4,1/4>57 2 b +1636 72:a,b,c>60 2 a +1637 72:-b,a,c>60 2 b +1638 72:a,b,3c>72 3 a +1639 72:a,b,3c;0,0,1>72 3 a +1640 72:a,b,3c;0,0,2>72 3 a +1641 72:a,3b,c>72 3 b +1642 72:a,3b,c;0,1,0>72 3 b +1643 72:a,3b,c;0,2,0>72 3 b +1644 72:3a,b,c>72 3 c +1645 72:3a,b,c;1,0,0>72 3 c +1646 72:3a,b,c;2,0,0>72 3 c +1647 73:-b-c,a,c>15 2 a +1648 73:-a-c,b,a>15 2 b +1649 73:-a-b,c,b>15 2 c +1650 73:a,b,c>24 2 a +1651 73:b,c,a;0,0,1/4>45 2 a +1652 73:c,a,b;1/4,0,0>45 2 b +1653 73:a,b,c;0,1/4,0>45 2 c +1654 73:a,b,c;1/4,1/4,1/4>54 2 a +1655 73:b,c,a;1/4,1/4,1/4>54 2 b +1656 73:c,a,b;1/4,1/4,1/4>54 2 c +1657 73:a,-c,b>54 2 d +1658 73:-b,a,c>54 2 e +1659 73:c,b,-a>54 2 f +1660 73:-b,a,c;1/4,1/4,1/4>61 2 a +1661 73:a,b,c>61 2 b +1662 73:a,b,3c>73 3 a +1663 73:a,b,3c;0,0,1>73 3 a +1664 73:a,b,3c;0,0,2>73 3 a +1665 73:a,3b,c>73 3 b +1666 73:a,3b,c;0,1,0>73 3 b +1667 73:a,3b,c;0,2,0>73 3 b +1668 73:3a,b,c>73 3 c +1669 73:3a,b,c;1,0,0>73 3 c +1670 73:3a,b,c;2,0,0>73 3 c +1671 74:-b-c,a,c>12 2 a +1672 74:-a-c,b,a;1/4,1/4,1/4>12 2 b +1673 74:-a-b,c,b>15 2 a +1674 74:a,b,c;0,0,1/4>24 2 a +1675 74:a,b,c;0,1/4,0>44 2 a +1676 74:b,c,a>46 2 a +1677 74:-a,c,b;1/4,0,1/4>46 2 b +1678 74:-b,a,c>51 2 a +1679 74:a,b,c;1/4,1/4,1/4>51 2 b +1680 74:-b,a,c>52 2 a +1681 74:a,b,c;1/4,1/4,1/4>52 2 b +1682 74:a,b,c>53 2 a +1683 74:-b,a,c;1/4,1/4,1/4>53 2 b +1684 74:-b,a,c;1/4,1/4,1/4>62 2 a +1685 74:a,b,c>62 2 b +1686 74:a,b,3c>74 3 a +1687 74:a,b,3c;0,0,1>74 3 a +1688 74:a,b,3c;0,0,2>74 3 a +1689 74:a,3b,c>74 3 b +1690 74:a,3b,c;0,1,0>74 3 b +1691 74:a,3b,c;0,2,0>74 3 b +1692 74:3a,b,c>74 3 c +1693 74:3a,b,c;1,0,0>74 3 c +1694 74:3a,b,c;2,0,0>74 3 c +1695 75:b,c,a>3 2 a +1696 75:a-b,a+b,c;1/2,1/2,0>75 2 a +1697 75:a-b,a+b,c>75 2 b +1698 75:a,b,2c>75 2 c +1699 75:a,b,3c>75 3 a +1700 75:a,b,2c>77 2 a +1701 75:a-b,a+b,2c;1/2,1/2,0>79 2 a +1702 75:a-b,a+b,2c>79 2 b +1703 76:b,c,a>4 2 a +1704 76:a-b,a+b,c;1/2,1/2,0>76 2 a +1705 76:a-b,a+b,c>76 2 b +1706 76:a,b,3c>78 3 a +1707 77:b,c,a>3 2 a +1708 77:a,b,2c>76 2 a +1709 77:a-b,a+b,c;1/2,1/2,0>77 2 a +1710 77:a-b,a+b,c>77 2 b +1711 77:a,b,3c>77 3 a +1712 77:a,b,2c>78 2 a +1713 77:a-b,a+b,2c;1/2,0,0>80 2 a +1714 77:a-b,a+b,2c;0,1/2,0>80 2 b +1715 78:b,c,a>4 2 a +1716 78:a,b,3c>76 3 a +1717 78:a-b,a+b,c;1/2,1/2,0>78 2 a +1718 78:a-b,a+b,c>78 2 b +1719 79:-a-b,c,b>5 2 a +1720 79:a,b,c>75 2 a +1721 79:a,b,c;1/2,0,0>77 2 a +1722 79:a,b,3c>79 3 a +1723 80:-a-b,c,b>5 2 a +1724 80:a,b,c;3/4,1/4,0>76 2 a +1725 80:a,b,c;3/4,3/4,0>78 2 a +1726 80:a,b,3c;1/2,0,0>80 3 a +1727 81:b,c,a>3 2 a +1728 81:a-b,a+b,c;1/2,1/2,0>81 2 a +1729 81:a-b,a+b,c>81 2 b +1730 81:a,b,2c;0,0,1/2>81 2 c +1731 81:a,b,2c>81 2 d +1732 81:a,b,3c>81 3 a +1733 81:a,b,3c;0,0,1>81 3 a +1734 81:a,b,3c;0,0,2>81 3 a +1735 81:a-b,a+b,2c;0,0,1/2>82 2 a +1736 81:a-b,a+b,2c>82 2 b +1737 82:-a-b,c,b>5 2 a +1738 82:a,b,c;1/2,0,1/4>81 2 a +1739 82:a,b,c>81 2 b +1740 82:a,b,3c>82 3 a +1741 82:a,b,3c;0,0,1>82 3 a +1742 82:a,b,3c;0,0,2>82 3 a +1743 83:b,c,a>10 2 a +1744 83:a,b,c>75 2 a +1745 83:a,b,c>81 2 a +1746 83:a-b,a+b,c;1/2,1/2,0>83 2 a +1747 83:a-b,a+b,c>83 2 b +1748 83:a,b,2c;0,0,1/2>83 2 c +1749 83:a,b,2c>83 2 d +1750 83:a,b,3c>83 3 a +1751 83:a,b,3c;0,0,1>83 3 a +1752 83:a,b,3c;0,0,2>83 3 a +1753 83:a,b,2c;0,0,1/2>84 2 a +1754 83:a,b,2c>84 2 b +1755 83:a-b,a+b,c;0,1/2,0>85 2 a +1756 83:a-b,a+b,c;1/2,0,0>85 2 b +1757 83:a-b,a+b,2c;1/2,1/2,1/2>87 2 a +1758 83:a-b,a+b,2c;1/2,1/2,0>87 2 b +1759 83:a-b,a+b,2c;0,0,1/2>87 2 c +1760 83:a-b,a+b,2c>87 2 d +1761 84:b,c,a>10 2 a +1762 84:a,b,c>77 2 a +1763 84:a,b,c;0,0,1/4>81 2 a +1764 84:a-b,a+b,c;1/2,1/2,0>84 2 a +1765 84:a-b,a+b,c>84 2 b +1766 84:a,b,3c>84 3 a +1767 84:a,b,3c;0,0,1>84 3 a +1768 84:a,b,3c;0,0,2>84 3 a +1769 84:a-b,a+b,c;1/2,0,0>86 2 a +1770 84:a-b,a+b,c;0,1/2,0>86 2 b +1771 85:a,c,-a-b;0,1/2,0>13 2 a +1772 85:a,b,c;1/4,1/4,0>75 2 a +1773 85:a,b,c;1/4,3/4,0>81 2 a +1774 85:a,b,2c;0,0,1/2>85 2 a +1775 85:a,b,2c>85 2 b +1776 85:a,b,3c>85 3 a +1777 85:a,b,3c;0,0,1>85 3 a +1778 85:a,b,3c;0,0,2>85 3 a +1779 85:a,b,2c;0,1/2,1/2>86 2 a +1780 85:a,b,2c;0,1/2,0>86 2 b +1781 86:a,c,-a-b>13 2 a +1782 86:a,b,c;3/4,1/4,0>77 2 a +1783 86:a,b,c;1/4,1/4,1/4>81 2 a +1784 86:a,b,3c>86 3 a +1785 86:a,b,3c;0,0,1>86 3 a +1786 86:a,b,3c;0,0,2>86 3 a +1787 86:a-b,a+b,2c;1/2,1/2,1/2>88 2 a +1788 86:a-b,a+b,2c;1/2,1/2,0>88 2 b +1789 86:a-b,a+b,2c;0,0,1/2>88 2 c +1790 86:a-b,a+b,2c>88 2 d +1791 87:-a-b,c,b>12 2 a +1792 87:a,b,c>79 2 a +1793 87:a,b,c>82 2 a +1794 87:a,b,c>83 2 a +1795 87:a,b,c;0,1/2,0>84 2 a +1796 87:a,b,c;1/4,1/4,1/4>85 2 a +1797 87:a,b,c;1/4,1/4,1/4>86 2 a +1798 87:a,b,3c>87 3 a +1799 87:a,b,3c;0,0,1>87 3 a +1800 87:a,b,3c;0,0,2>87 3 a +1801 88:-a-b,c,b>15 2 a +1802 88:a,b,c;1/2,1/4,0>80 2 a +1803 88:a,b,c;0,1/4,5/8>82 2 a +1804 88:a,b,3c;1/2,0,0>88 3 a +1805 88:a,b,3c;1/2,0,1>88 3 a +1806 88:a,b,3c;1/2,0,2>88 3 a +1807 89:a,b,c>16 2 a +1808 89:a-b,a+b,c>21 2 a +1809 89:a,b,c>75 2 a +1810 89:a-b,a+b,c;1/2,1/2,0>89 2 a +1811 89:a-b,a+b,c>89 2 b +1812 89:a,b,2c;0,0,1/2>89 2 c +1813 89:a,b,2c>89 2 d +1814 89:a,b,3c>89 3 a +1815 89:a,b,3c;0,0,1>89 3 a +1816 89:a,b,3c;0,0,2>89 3 a +1817 89:a-b,a+b,c>90 2 a +1818 89:a-b,a+b,c;1/2,1/2,0>90 2 b +1819 89:a,b,2c;0,0,1/2>93 2 a +1820 89:a,b,2c>93 2 b +1821 89:a-b,a+b,2c;1/2,1/2,1/2>97 2 a +1822 89:a-b,a+b,2c;1/2,1/2,0>97 2 b +1823 89:a-b,a+b,2c;0,0,1/2>97 2 c +1824 89:a-b,a+b,2c>97 2 d +1825 90:a,b,c>18 2 a +1826 90:a-b,a+b,c>21 2 a +1827 90:a,b,c;0,1/2,0>75 2 a +1828 90:a,b,2c;0,0,1/2>90 2 a +1829 90:a,b,2c>90 2 b +1830 90:a,b,3c>90 3 a +1831 90:a,b,3c;0,0,1>90 3 a +1832 90:a,b,3c;0,0,2>90 3 a +1833 90:a,b,2c>94 2 a +1834 90:a,b,2c;0,0,1/2>94 2 b +1835 91:a,b,c;0,0,1/4>17 2 a +1836 91:a-b,a+b,c;0,0,1/8>20 2 a +1837 91:a,b,c>76 2 a +1838 91:a-b,a+b,c;1/2,1/2,3/8>91 2 a +1839 91:a-b,a+b,c;0,0,3/8>91 2 b +1840 91:a-b,a+b,c;0,0,1/4>92 2 a +1841 91:a-b,a+b,c;1/2,1/2,1/4>92 2 b +1842 91:a,b,3c>95 3 a +1843 91:a,b,3c;0,0,1>95 3 a +1844 91:a,b,3c;0,0,2>95 3 a +1845 92:a,b,c;1/4,0,3/8>19 2 a +1846 92:a-b,a+b,c;0,0,1/4>20 2 a +1847 92:a,b,c;0,1/2,0>76 2 a +1848 92:a,b,3c>96 3 a +1849 92:a,b,3c;0,0,1>96 3 a +1850 92:a,b,3c;0,0,2>96 3 a +1851 93:a,b,c>16 2 a +1852 93:a-b,a+b,c;0,0,1/4>21 2 a +1853 93:a,b,c>77 2 a +1854 93:a,b,2c;0,0,1/2>91 2 a +1855 93:a,b,2c>91 2 b +1856 93:a-b,a+b,c;1/2,1/2,1/4>93 2 a +1857 93:a-b,a+b,c;0,0,1/4>93 2 b +1858 93:a,b,3c>93 3 a +1859 93:a,b,3c;0,0,1>93 3 a +1860 93:a,b,3c;0,0,2>93 3 a +1861 93:a-b,a+b,c;1/2,1/2,0>94 2 a +1862 93:a-b,a+b,c>94 2 b +1863 93:a,b,2c;0,0,1/2>95 2 a +1864 93:a,b,2c>95 2 b +1865 93:a-b,a+b,2c;1/2,0,1/2>98 2 a +1866 93:a-b,a+b,2c;1/2,0,0>98 2 b +1867 93:a-b,a+b,2c;0,1/2,1/2>98 2 c +1868 93:a-b,a+b,2c;0,1/2,0>98 2 d +1869 94:a,b,c;0,0,1/4>18 2 a +1870 94:a-b,a+b,c>21 2 a +1871 94:a,b,c;0,1/2,0>77 2 a +1872 94:a,b,2c;0,0,1/2>92 2 a +1873 94:a,b,2c>92 2 b +1874 94:a,b,3c>94 3 a +1875 94:a,b,3c;0,0,1>94 3 a +1876 94:a,b,3c;0,0,2>94 3 a +1877 94:a,b,2c>96 2 a +1878 94:a,b,2c;0,0,1/2>96 2 b +1879 95:a,b,c;0,0,1/4>17 2 a +1880 95:a-b,a+b,c;0,0,3/8>20 2 a +1881 95:a,b,c>78 2 a +1882 95:a,b,3c>91 3 a +1883 95:a,b,3c;0,0,1>91 3 a +1884 95:a,b,3c;0,0,2>91 3 a +1885 95:a-b,a+b,c;1/2,1/2,1/8>95 2 a +1886 95:a-b,a+b,c;0,0,1/8>95 2 b +1887 95:a-b,a+b,c;1/2,1/2,1/4>96 2 a +1888 95:a-b,a+b,c;0,0,1/4>96 2 b +1889 96:a,b,c;1/4,0,1/8>19 2 a +1890 96:a-b,a+b,c;0,0,1/4>20 2 a +1891 96:a,b,c;0,1/2,0>78 2 a +1892 96:a,b,3c>92 3 a +1893 96:a,b,3c;0,0,1>92 3 a +1894 96:a,b,3c;0,0,2>92 3 a +1895 97:a-b,a+b,c>22 2 a +1896 97:a,b,c>23 2 a +1897 97:a,b,c>79 2 a +1898 97:a,b,c>89 2 a +1899 97:a,b,c;0,1/2,1/4>90 2 a +1900 97:a,b,c;0,1/2,0>93 2 a +1901 97:a,b,c>94 2 a +1902 97:a,b,3c>97 3 a +1903 97:a,b,3c;0,0,1>97 3 a +1904 97:a,b,3c;0,0,2>97 3 a +1905 98:a-b,a+b,c>22 2 a +1906 98:a,b,c;0,1/4,3/8>24 2 a +1907 98:a,b,c>80 2 a +1908 98:a,b,c;3/4,1/4,3/8>91 2 a +1909 98:a,b,c;1/4,1/4,0>92 2 a +1910 98:a,b,c;1/4,1/4,3/8>95 2 a +1911 98:a,b,c;1/4,3/4,1/4>96 2 a +1912 98:a,b,3c;1/2,0,1/4>98 3 a +1913 98:a,b,3c;1/2,0,5/4>98 3 a +1914 98:a,b,3c;1/2,0,9/4>98 3 a +1915 99:a,b,c>25 2 a +1916 99:a-b,a+b,c>35 2 a +1917 99:a,b,c>75 2 a +1918 99:a-b,a+b,c;1/2,1/2,0>99 2 a +1919 99:a-b,a+b,c>99 2 b +1920 99:a,b,2c>99 2 c +1921 99:a,b,3c>99 3 a +1922 99:a-b,a+b,c;1/2,1/2,0>100 2 a +1923 99:a-b,a+b,c>100 2 b +1924 99:a,b,2c>101 2 a +1925 99:a,b,2c>103 2 a +1926 99:a,b,2c>105 2 a +1927 99:a-b,a+b,2c;1/2,1/2,0>107 2 a +1928 99:a-b,a+b,2c>107 2 b +1929 99:a-b,a+b,2c;1/2,1/2,0>108 2 a +1930 99:a-b,a+b,2c>108 2 b +1931 100:a,b,c>32 2 a +1932 100:a-b,a+b,c;0,1/2,0>35 2 a +1933 100:a,b,c>75 2 a +1934 100:a,b,2c>100 2 a +1935 100:a,b,3c>100 3 a +1936 100:a,b,2c;0,1/2,0>102 2 a +1937 100:a,b,2c>104 2 a +1938 100:a,b,2c>106 2 a +1939 101:a,b,c>27 2 a +1940 101:a-b,a+b,c>35 2 a +1941 101:a,b,c>77 2 a +1942 101:a,b,3c>101 3 a +1943 101:a-b,a+b,c;1/2,1/2,0>105 2 a +1944 101:a-b,a+b,c>105 2 b +1945 101:a-b,a+b,c;1/2,1/2,0>106 2 a +1946 101:a-b,a+b,c>106 2 b +1947 102:a,b,c>34 2 a +1948 102:a-b,a+b,c>35 2 a +1949 102:a,b,c;0,1/2,0>77 2 a +1950 102:a,b,3c>102 3 a +1951 102:a-b,a+b,2c;1/2,1/2,0>109 2 a +1952 102:a-b,a+b,2c>109 2 b +1953 102:a-b,a+b,2c;1/2,1/2,0>110 2 a +1954 102:a-b,a+b,2c>110 2 b +1955 103:a,b,c>27 2 a +1956 103:a-b,a+b,c>37 2 a +1957 103:a,b,c>75 2 a +1958 103:a-b,a+b,c;1/2,1/2,0>103 2 a +1959 103:a-b,a+b,c>103 2 b +1960 103:a,b,3c>103 3 a +1961 103:a-b,a+b,c;1/2,1/2,0>104 2 a +1962 103:a-b,a+b,c>104 2 b +1963 104:a,b,c>34 2 a +1964 104:a-b,a+b,c;0,1/2,0>37 2 a +1965 104:a,b,c>75 2 a +1966 104:a,b,3c>104 3 a +1967 105:a,b,c>25 2 a +1968 105:a-b,a+b,c>37 2 a +1969 105:a,b,c>77 2 a +1970 105:a-b,a+b,c;1/2,1/2,0>101 2 a +1971 105:a-b,a+b,c>101 2 b +1972 105:a-b,a+b,c>102 2 a +1973 105:a-b,a+b,c;1/2,1/2,0>102 2 b +1974 105:a,b,3c>105 3 a +1975 106:a,b,c>32 2 a +1976 106:a-b,a+b,c;0,1/2,0>37 2 a +1977 106:a,b,c>77 2 a +1978 106:a,b,3c>106 3 a +1979 107:a-b,a+b,c>42 2 a +1980 107:a,b,c>44 2 a +1981 107:a,b,c>79 2 a +1982 107:a,b,c>99 2 a +1983 107:a,b,c>102 2 a +1984 107:a,b,c>104 2 a +1985 107:a,b,c;0,1/2,0>105 2 a +1986 107:a,b,3c>107 3 a +1987 108:a-b,a+b,c;0,1/2,0>42 2 a +1988 108:a,b,c>45 2 a +1989 108:a,b,c>79 2 a +1990 108:a,b,c>100 2 a +1991 108:a,b,c;0,1/2,0>101 2 a +1992 108:a,b,c>103 2 a +1993 108:a,b,c;0,1/2,0>106 2 a +1994 108:a,b,3c>108 3 a +1995 109:a-b,a+b,c;0,1/2,0>43 2 a +1996 109:a,b,c>44 2 a +1997 109:a,b,c>80 2 a +1998 109:a,b,3c;1/2,0,0>109 3 a +1999 110:a-b,a+b,c>43 2 a +2000 110:a,b,c>45 2 a +2001 110:a,b,c>80 2 a +2002 110:a,b,3c;1/2,0,0>110 3 a +2003 111:a,b,c>16 2 a +2004 111:a-b,a+b,c>35 2 a +2005 111:a,b,c>81 2 a +2006 111:a,b,2c;0,0,1/2>111 2 a +2007 111:a,b,2c>111 2 b +2008 111:a,b,3c>111 3 a +2009 111:a,b,3c;0,0,1>111 3 a +2010 111:a,b,3c;0,0,2>111 3 a +2011 111:a,b,2c;0,0,1/2>112 2 a +2012 111:a,b,2c>112 2 b +2013 111:a-b,a+b,c;1/2,1/2,0>115 2 a +2014 111:a-b,a+b,c>115 2 b +2015 111:a-b,a+b,c;1/2,1/2,0>117 2 a +2016 111:a-b,a+b,c>117 2 b +2017 111:a-b,a+b,2c;0,0,1/2>119 2 a +2018 111:a-b,a+b,2c>119 2 b +2019 111:a-b,a+b,2c;0,0,1/2>120 2 a +2020 111:a-b,a+b,2c>120 2 b +2021 112:a,b,c;0,0,1/4>16 2 a +2022 112:a-b,a+b,c>37 2 a +2023 112:a,b,c>81 2 a +2024 112:a,b,3c>112 3 a +2025 112:a,b,3c;0,0,1>112 3 a +2026 112:a,b,3c;0,0,2>112 3 a +2027 112:a-b,a+b,c;1/2,1/2,0>116 2 a +2028 112:a-b,a+b,c>116 2 b +2029 112:a-b,a+b,c;1/2,1/2,0>118 2 a +2030 112:a-b,a+b,c>118 2 b +2031 113:a,b,c>18 2 a +2032 113:a-b,a+b,c;0,1/2,0>35 2 a +2033 113:a,b,c>81 2 a +2034 113:a,b,2c;0,0,1/2>113 2 a +2035 113:a,b,2c>113 2 b +2036 113:a,b,3c>113 3 a +2037 113:a,b,3c;0,0,1>113 3 a +2038 113:a,b,3c;0,0,2>113 3 a +2039 113:a,b,2c;0,0,1/2>114 2 a +2040 113:a,b,2c>114 2 b +2041 114:a,b,c;0,0,1/4>18 2 a +2042 114:a-b,a+b,c;0,1/2,0>37 2 a +2043 114:a,b,c>81 2 a +2044 114:a,b,3c>114 3 a +2045 114:a,b,3c;0,0,1>114 3 a +2046 114:a,b,3c;0,0,2>114 3 a +2047 115:a-b,a+b,c>21 2 a +2048 115:a,b,c>25 2 a +2049 115:a,b,c>81 2 a +2050 115:a-b,a+b,c;1/2,1/2,0>111 2 a +2051 115:a-b,a+b,c>111 2 b +2052 115:a-b,a+b,c;1/2,1/2,0>113 2 a +2053 115:a-b,a+b,c>113 2 b +2054 115:a,b,2c;0,0,1/2>115 2 a +2055 115:a,b,2c>115 2 b +2056 115:a,b,3c>115 3 a +2057 115:a,b,3c;0,0,1>115 3 a +2058 115:a,b,3c;0,0,2>115 3 a +2059 115:a,b,2c;0,0,1/2>116 2 a +2060 115:a,b,2c>116 2 b +2061 115:a-b,a+b,2c;1/2,1/2,1/2>121 2 a +2062 115:a-b,a+b,2c;1/2,1/2,0>121 2 b +2063 115:a-b,a+b,2c;0,0,1/2>121 2 c +2064 115:a-b,a+b,2c>121 2 d +2065 116:a-b,a+b,c;0,0,1/4>21 2 a +2066 116:a,b,c>27 2 a +2067 116:a,b,c>81 2 a +2068 116:a-b,a+b,c;1/2,1/2,0>112 2 a +2069 116:a-b,a+b,c>112 2 b +2070 116:a-b,a+b,c;1/2,1/2,0>114 2 a +2071 116:a-b,a+b,c>114 2 b +2072 116:a,b,3c>116 3 a +2073 116:a,b,3c;0,0,1>116 3 a +2074 116:a,b,3c;0,0,2>116 3 a +2075 117:a-b,a+b,c;0,1/2,0>21 2 a +2076 117:a,b,c>32 2 a +2077 117:a,b,c>81 2 a +2078 117:a,b,2c;0,0,1/2>117 2 a +2079 117:a,b,2c>117 2 b +2080 117:a,b,3c>117 3 a +2081 117:a,b,3c;0,0,1>117 3 a +2082 117:a,b,3c;0,0,2>117 3 a +2083 117:a,b,2c;0,0,1/2>118 2 a +2084 117:a,b,2c>118 2 b +2085 118:a-b,a+b,c;0,1/2,1/4>21 2 a +2086 118:a,b,c>34 2 a +2087 118:a,b,c>81 2 a +2088 118:a,b,3c>118 3 a +2089 118:a,b,3c;0,0,1>118 3 a +2090 118:a,b,3c;0,0,2>118 3 a +2091 118:a-b,a+b,2c;1/2,1/2,1/2>122 2 a +2092 118:a-b,a+b,2c;1/2,1/2,0>122 2 b +2093 118:a-b,a+b,2c;0,0,1/2>122 2 c +2094 118:a-b,a+b,2c>122 2 d +2095 119:a-b,a+b,c>22 2 a +2096 119:a,b,c>44 2 a +2097 119:a,b,c>82 2 a +2098 119:a,b,c;0,1/2,1/4>115 2 a +2099 119:a,b,c>115 2 b +2100 119:a,b,c;0,1/2,1/4>118 2 a +2101 119:a,b,c>118 2 b +2102 119:a,b,3c>119 3 a +2103 119:a,b,3c;0,0,1>119 3 a +2104 119:a,b,3c;0,0,2>119 3 a +2105 120:a-b,a+b,c;0,0,1/4>22 2 a +2106 120:a,b,c>45 2 a +2107 120:a,b,c>82 2 a +2108 120:a,b,c;0,1/2,1/4>116 2 a +2109 120:a,b,c>116 2 b +2110 120:a,b,c;0,1/2,1/4>117 2 a +2111 120:a,b,c>117 2 b +2112 120:a,b,3c>120 3 a +2113 120:a,b,3c;0,0,1>120 3 a +2114 120:a,b,3c;0,0,2>120 3 a +2115 121:a,b,c>23 2 a +2116 121:a-b,a+b,c>42 2 a +2117 121:a,b,c>82 2 a +2118 121:a,b,c>111 2 a +2119 121:a,b,c;0,1/2,1/4>112 2 a +2120 121:a,b,c;0,1/2,1/4>113 2 a +2121 121:a,b,c>114 2 a +2122 121:a,b,3c>121 3 a +2123 121:a,b,3c;0,0,1>121 3 a +2124 121:a,b,3c;0,0,2>121 3 a +2125 122:a,b,c;0,1/4,3/8>24 2 a +2126 122:a-b,a+b,c;0,1/2,0>43 2 a +2127 122:a,b,c>82 2 a +2128 122:a,b,3c;1/2,0,1/4>122 3 a +2129 122:a,b,3c;1/2,0,5/4>122 3 a +2130 122:a,b,3c;1/2,0,9/4>122 3 a +2131 123:a,b,c>47 2 a +2132 123:a-b,a+b,c>65 2 a +2133 123:a,b,c>83 2 a +2134 123:a,b,c>89 2 a +2135 123:a,b,c>99 2 a +2136 123:a,b,c>111 2 a +2137 123:a,b,c>115 2 a +2138 123:a-b,a+b,c;1/2,1/2,0>123 2 a +2139 123:a-b,a+b,c>123 2 b +2140 123:a,b,2c;0,0,1/2>123 2 c +2141 123:a,b,2c>123 2 d +2142 123:a,b,3c>123 3 a +2143 123:a,b,3c;0,0,1>123 3 a +2144 123:a,b,3c;0,0,2>123 3 a +2145 123:a,b,2c;0,0,1/2>124 2 a +2146 123:a,b,2c>124 2 b +2147 123:a-b,a+b,c;0,1/2,0>125 2 a +2148 123:a-b,a+b,c;1/2,0,0>125 2 b +2149 123:a-b,a+b,c;1/2,1/2,0>127 2 a +2150 123:a-b,a+b,c>127 2 b +2151 123:a-b,a+b,c;0,1/2,0>129 2 a +2152 123:a-b,a+b,c;1/2,0,0>129 2 b +2153 123:a,b,2c;0,0,1/2>131 2 a +2154 123:a,b,2c>131 2 b +2155 123:a,b,2c;0,0,1/2>132 2 a +2156 123:a,b,2c>132 2 b +2157 123:a-b,a+b,2c;1/2,1/2,1/2>139 2 a +2158 123:a-b,a+b,2c;1/2,1/2,0>139 2 b +2159 123:a-b,a+b,2c;0,0,1/2>139 2 c +2160 123:a-b,a+b,2c>139 2 d +2161 123:a-b,a+b,2c;1/2,1/2,1/2>140 2 a +2162 123:a-b,a+b,2c;1/2,1/2,0>140 2 b +2163 123:a-b,a+b,2c;0,0,1/2>140 2 c +2164 123:a-b,a+b,2c>140 2 d +2165 124:a,b,c>49 2 a +2166 124:a-b,a+b,c>66 2 a +2167 124:a,b,c>83 2 a +2168 124:a,b,c;0,0,1/4>89 2 a +2169 124:a,b,c>103 2 a +2170 124:a,b,c>112 2 a +2171 124:a,b,c>116 2 a +2172 124:a-b,a+b,c;1/2,1/2,0>124 2 a +2173 124:a-b,a+b,c>124 2 b +2174 124:a,b,3c>124 3 a +2175 124:a,b,3c;0,0,1>124 3 a +2176 124:a,b,3c;0,0,2>124 3 a +2177 124:a-b,a+b,c;0,1/2,0>126 2 a +2178 124:a-b,a+b,c;1/2,0,0>126 2 b +2179 124:a-b,a+b,c;1/2,1/2,0>128 2 a +2180 124:a-b,a+b,c>128 2 b +2181 124:a-b,a+b,c;0,1/2,0>130 2 a +2182 124:a-b,a+b,c;1/2,0,0>130 2 b +2183 125:a,b,c>50 2 a +2184 125:a-b,a+b,c;0,1/2,0>67 2 a +2185 125:a,b,c>85 2 a +2186 125:a,b,c;1/4,1/4,0>89 2 a +2187 125:a,b,c;1/4,1/4,0>100 2 a +2188 125:a,b,c;1/4,3/4,0>111 2 a +2189 125:a,b,c;1/4,3/4,0>117 2 a +2190 125:a,b,2c;0,0,1/2>125 2 a +2191 125:a,b,2c>125 2 b +2192 125:a,b,3c>125 3 a +2193 125:a,b,3c;0,0,1>125 3 a +2194 125:a,b,3c;0,0,2>125 3 a +2195 125:a,b,2c;0,0,1/2>126 2 a +2196 125:a,b,2c>126 2 b +2197 125:a,b,2c;0,0,1/2>133 2 a +2198 125:a,b,2c>133 2 b +2199 125:a,b,2c;0,0,1/2>134 2 a +2200 125:a,b,2c>134 2 b +2201 126:a,b,c>48 2 a +2202 126:a-b,a+b,c>68 2 a +2203 126:a,b,c>85 2 a +2204 126:a,b,c;1/4,1/4,1/4>89 2 a +2205 126:a,b,c;1/4,1/4,0>104 2 a +2206 126:a,b,c;1/4,3/4,0>112 2 a +2207 126:a,b,c;1/4,3/4,0>118 2 a +2208 126:a,b,3c>126 3 a +2209 126:a,b,3c;0,0,1>126 3 a +2210 126:a,b,3c;0,0,2>126 3 a +2211 127:a,b,c>55 2 a +2212 127:a-b,a+b,c;0,1/2,0>65 2 a +2213 127:a,b,c>83 2 a +2214 127:a,b,c;0,1/2,0>90 2 a +2215 127:a,b,c>100 2 a +2216 127:a,b,c>113 2 a +2217 127:a,b,c>117 2 a +2218 127:a,b,2c;0,0,1/2>127 2 a +2219 127:a,b,2c>127 2 b +2220 127:a,b,3c>127 3 a +2221 127:a,b,3c;0,0,1>127 3 a +2222 127:a,b,3c;0,0,2>127 3 a +2223 127:a,b,2c;0,0,1/2>128 2 a +2224 127:a,b,2c>128 2 b +2225 127:a,b,2c;0,0,1/2>135 2 a +2226 127:a,b,2c>135 2 b +2227 127:a,b,2c;0,1/2,1/2>136 2 a +2228 127:a,b,2c;0,1/2,0>136 2 b +2229 128:a,b,c>58 2 a +2230 128:a-b,a+b,c;0,1/2,0>66 2 a +2231 128:a,b,c>83 2 a +2232 128:a,b,c;0,1/2,1/4>90 2 a +2233 128:a,b,c>104 2 a +2234 128:a,b,c>114 2 a +2235 128:a,b,c>118 2 a +2236 128:a,b,3c>128 3 a +2237 128:a,b,3c;0,0,1>128 3 a +2238 128:a,b,3c;0,0,2>128 3 a +2239 129:a,b,c>59 2 a +2240 129:a-b,a+b,c>67 2 a +2241 129:a,b,c>85 2 a +2242 129:a,b,c;1/4,3/4,0>90 2 a +2243 129:a,b,c;1/4,1/4,0>99 2 a +2244 129:a,b,c;1/4,3/4,0>113 2 a +2245 129:a,b,c;1/4,3/4,0>115 2 a +2246 129:a,b,2c;0,0,1/2>129 2 a +2247 129:a,b,2c>129 2 b +2248 129:a,b,3c>129 3 a +2249 129:a,b,3c;0,0,1>129 3 a +2250 129:a,b,3c;0,0,2>129 3 a +2251 129:a,b,2c;0,0,1/2>130 2 a +2252 129:a,b,2c>130 2 b +2253 129:a,b,2c;0,0,1/2>137 2 a +2254 129:a,b,2c>137 2 b +2255 129:a,b,2c;0,0,1/2>138 2 a +2256 129:a,b,2c>138 2 b +2257 130:a,b,c>56 2 a +2258 130:a-b,a+b,c;0,1/2,0>68 2 a +2259 130:a,b,c>85 2 a +2260 130:a,b,c;1/4,3/4,1/4>90 2 a +2261 130:a,b,c;1/4,1/4,0>103 2 a +2262 130:a,b,c;1/4,3/4,0>114 2 a +2263 130:a,b,c;1/4,3/4,0>116 2 a +2264 130:a,b,3c>130 3 a +2265 130:a,b,3c;0,0,1>130 3 a +2266 130:a,b,3c;0,0,2>130 3 a +2267 131:a,b,c>47 2 a +2268 131:a-b,a+b,c>66 2 a +2269 131:a,b,c>84 2 a +2270 131:a,b,c>93 2 a +2271 131:a,b,c>105 2 a +2272 131:a,b,c;0,0,1/4>112 2 a +2273 131:a,b,c;0,0,1/4>115 2 a +2274 131:a,b,3c>131 3 a +2275 131:a,b,3c;0,0,1>131 3 a +2276 131:a,b,3c;0,0,2>131 3 a +2277 131:a-b,a+b,c;1/2,1/2,0>132 2 a +2278 131:a-b,a+b,c>132 2 b +2279 131:a-b,a+b,c;0,1/2,0>134 2 a +2280 131:a-b,a+b,c;1/2,0,0>134 2 b +2281 131:a-b,a+b,c;1/2,1/2,0>136 2 a +2282 131:a-b,a+b,c>136 2 b +2283 131:a-b,a+b,c;0,1/2,0>138 2 a +2284 131:a-b,a+b,c;1/2,0,0>138 2 b +2285 132:a,b,c>49 2 a +2286 132:a-b,a+b,c>65 2 a +2287 132:a,b,c>84 2 a +2288 132:a,b,c;0,0,1/4>93 2 a +2289 132:a,b,c>101 2 a +2290 132:a,b,c;0,0,1/4>111 2 a +2291 132:a,b,c;0,0,1/4>116 2 a +2292 132:a-b,a+b,c;1/2,1/2,0>131 2 a +2293 132:a-b,a+b,c>131 2 b +2294 132:a,b,3c>132 3 a +2295 132:a,b,3c;0,0,1>132 3 a +2296 132:a,b,3c;0,0,2>132 3 a +2297 132:a-b,a+b,c;0,1/2,0>133 2 a +2298 132:a-b,a+b,c;1/2,0,0>133 2 b +2299 132:a-b,a+b,c;1/2,1/2,0>135 2 a +2300 132:a-b,a+b,c>135 2 b +2301 132:a-b,a+b,c;0,1/2,0>137 2 a +2302 132:a-b,a+b,c;1/2,0,0>137 2 b +2303 133:a,b,c>50 2 a +2304 133:a-b,a+b,c>68 2 a +2305 133:a,b,c;0,1/2,0>86 2 a +2306 133:a,b,c;1/4,1/4,0>93 2 a +2307 133:a,b,c;1/4,1/4,0>106 2 a +2308 133:a,b,c;1/4,3/4,1/4>112 2 a +2309 133:a,b,c;1/4,3/4,1/4>117 2 a +2310 133:a,b,3c>133 3 a +2311 133:a,b,3c;0,0,1>133 3 a +2312 133:a,b,3c;0,0,2>133 3 a +2313 134:a,b,c>48 2 a +2314 134:a-b,a+b,c;0,1/2,0>67 2 a +2315 134:a,b,c;0,1/2,0>86 2 a +2316 134:a,b,c;1/4,1/4,1/4>93 2 a +2317 134:a,b,c;1/4,3/4,0>102 2 a +2318 134:a,b,c;1/4,3/4,1/4>111 2 a +2319 134:a,b,c;1/4,3/4,1/4>118 2 a +2320 134:a,b,3c>134 3 a +2321 134:a,b,3c;0,0,1>134 3 a +2322 134:a,b,3c;0,0,2>134 3 a +2323 134:a-b,a+b,2c;1/2,0,1/2>141 2 a +2324 134:a-b,a+b,2c;1/2,0,0>141 2 b +2325 134:a-b,a+b,2c;0,1/2,1/2>141 2 c +2326 134:a-b,a+b,2c;0,1/2,0>141 2 d +2327 134:a-b,a+b,2c;1/2,0,1/2>142 2 a +2328 134:a-b,a+b,2c;1/2,0,0>142 2 b +2329 134:a-b,a+b,2c;0,1/2,1/2>142 2 c +2330 134:a-b,a+b,2c;0,1/2,0>142 2 d +2331 135:a,b,c>55 2 a +2332 135:a-b,a+b,c;0,1/2,0>66 2 a +2333 135:a,b,c>84 2 a +2334 135:a,b,c;0,1/2,1/4>94 2 a +2335 135:a,b,c>106 2 a +2336 135:a,b,c;0,0,1/4>114 2 a +2337 135:a,b,c;0,0,1/4>117 2 a +2338 135:a,b,3c>135 3 a +2339 135:a,b,3c;0,0,1>135 3 a +2340 135:a,b,3c;0,0,2>135 3 a +2341 136:a,b,c>58 2 a +2342 136:a-b,a+b,c>65 2 a +2343 136:a,b,c;0,1/2,0>84 2 a +2344 136:a,b,c>94 2 a +2345 136:a,b,c>102 2 a +2346 136:a,b,c;0,1/2,1/4>113 2 a +2347 136:a,b,c;0,1/2,1/4>118 2 a +2348 136:a,b,3c>136 3 a +2349 136:a,b,3c;0,0,1>136 3 a +2350 136:a,b,3c;0,0,2>136 3 a +2351 137:a,b,c>59 2 a +2352 137:a-b,a+b,c;0,1/2,0>68 2 a +2353 137:a,b,c;0,1/2,0>86 2 a +2354 137:a,b,c;1/4,3/4,1/4>94 2 a +2355 137:a,b,c;1/4,1/4,0>105 2 a +2356 137:a,b,c;1/4,3/4,1/4>114 2 a +2357 137:a,b,c;1/4,3/4,1/4>115 2 a +2358 137:a,b,3c>137 3 a +2359 137:a,b,3c;0,0,1>137 3 a +2360 137:a,b,3c;0,0,2>137 3 a +2361 138:a,b,c>56 2 a +2362 138:a-b,a+b,c>67 2 a +2363 138:a,b,c;0,1/2,0>86 2 a +2364 138:a,b,c;1/4,3/4,0>94 2 a +2365 138:a,b,c;1/4,1/4,0>101 2 a +2366 138:a,b,c;1/4,3/4,1/4>113 2 a +2367 138:a,b,c;1/4,3/4,1/4>116 2 a +2368 138:a,b,3c>138 3 a +2369 138:a,b,3c;0,0,1>138 3 a +2370 138:a,b,3c;0,0,2>138 3 a +2371 139:a-b,a+b,c>69 2 a +2372 139:a,b,c>71 2 a +2373 139:a,b,c>87 2 a +2374 139:a,b,c>97 2 a +2375 139:a,b,c>107 2 a +2376 139:a,b,c>119 2 a +2377 139:a,b,c>121 2 a +2378 139:a,b,c>123 2 a +2379 139:a,b,c;1/4,1/4,1/4>126 2 a +2380 139:a,b,c>128 2 a +2381 139:a,b,c;1/4,1/4,1/4>129 2 a +2382 139:a,b,c;0,1/2,0>131 2 a +2383 139:a,b,c;1/4,3/4,1/4>134 2 a +2384 139:a,b,c>136 2 a +2385 139:a,b,c;1/4,3/4,1/4>137 2 a +2386 139:a,b,3c>139 3 a +2387 139:a,b,3c;0,0,1>139 3 a +2388 139:a,b,3c;0,0,2>139 3 a +2389 140:a-b,a+b,c;0,1/2,0>69 2 a +2390 140:a,b,c>72 2 a +2391 140:a,b,c>87 2 a +2392 140:a,b,c;0,0,1/4>97 2 a +2393 140:a,b,c>108 2 a +2394 140:a,b,c>120 2 a +2395 140:a,b,c;0,1/2,1/4>121 2 a +2396 140:a,b,c>124 2 a +2397 140:a,b,c;1/4,1/4,1/4>125 2 a +2398 140:a,b,c>127 2 a +2399 140:a,b,c;1/4,1/4,1/4>130 2 a +2400 140:a,b,c;0,1/2,0>132 2 a +2401 140:a,b,c;1/4,3/4,1/4>133 2 a +2402 140:a,b,c;0,1/2,0>135 2 a +2403 140:a,b,c;1/4,3/4,1/4>138 2 a +2404 140:a,b,3c>140 3 a +2405 140:a,b,3c;0,0,1>140 3 a +2406 140:a,b,3c;0,0,2>140 3 a +2407 141:a-b,a+b,c;1/4,3/4,1/4>70 2 a +2408 141:a,b,c>74 2 a +2409 141:a,b,c;0,1/2,0>88 2 a +2410 141:a,b,c;0,1/4,3/8>98 2 a +2411 141:a,b,c;0,1/4,0>109 2 a +2412 141:a,b,c;0,1/4,3/8>119 2 a +2413 141:a,b,c;0,1/4,3/8>122 2 a +2414 141:a,b,3c;1/2,0,0>141 3 a +2415 141:a,b,3c;1/2,0,1>141 3 a +2416 141:a,b,3c;1/2,0,2>141 3 a +2417 142:a-b,a+b,c;1/4,1/4,1/4>70 2 a +2418 142:a,b,c>73 2 a +2419 142:a,b,c;0,1/2,0>88 2 a +2420 142:a,b,c;0,1/4,1/8>98 2 a +2421 142:a,b,c;0,1/4,0>110 2 a +2422 142:a,b,c;0,1/4,3/8>120 2 a +2423 142:a,b,c;0,3/4,1/8>122 2 a +2424 142:a,b,3c;1/2,0,0>142 3 a +2425 142:a,b,3c;1/2,0,1>142 3 a +2426 142:a,b,3c;1/2,0,2>142 3 a +2427 143:a,b,c>1 3 a +2428 143:a,b,2c>143 2 a +2429 143:a-b,a+2b,c;1/3,2/3,0>143 3 a +2430 143:a-b,a+2b,c;2/3,1/3,0>143 3 b +2431 143:a-b,a+2b,c>143 3 c +2432 143:a,b,3c>143 3 d +2433 143:2a,2b,c>143 4 a +2434 143:2a,2b,c;1,0,0>143 4 a +2435 143:2a,2b,c;0,1,0>143 4 a +2436 143:2a,2b,c;1,1,0>143 4 a +2437 143:a,b,3c>144 3 a +2438 143:a,b,3c>145 3 a +2439 143:2a+b,-a+b,3c;1/3,2/3,0>146 3 a +2440 143:2a+b,-a+b,3c;2/3,1/3,0>146 3 b +2441 143:2a+b,-a+b,3c>146 3 c +2442 143:a-b,a+2b,3c;1/3,2/3,0>146 3 d +2443 143:a-b,a+2b,3c;2/3,1/3,0>146 3 e +2444 143:a-b,a+2b,3c>146 3 f +2445 144:a,b,c>1 3 a +2446 144:a-b,a+2b,c;1/3,2/3,0>144 3 a +2447 144:a-b,a+2b,c;2/3,1/3,0>144 3 b +2448 144:a-b,a+2b,c>144 3 c +2449 144:2a,2b,c>144 4 a +2450 144:2a,2b,c;1,0,0>144 4 a +2451 144:2a,2b,c;0,1,0>144 4 a +2452 144:2a,2b,c;1,1,0>144 4 a +2453 144:a,b,2c>145 2 a +2454 145:a,b,c>1 3 a +2455 145:a,b,2c>144 2 a +2456 145:a-b,a+2b,c;1/3,2/3,0>145 3 a +2457 145:a-b,a+2b,c;2/3,1/3,0>145 3 b +2458 145:a-b,a+2b,c>145 3 c +2459 145:2a,2b,c>145 4 a +2460 145:2a,2b,c;1,0,0>145 4 a +2461 145:2a,2b,c;0,1,0>145 4 a +2462 145:2a,2b,c;1,1,0>145 4 a +2463 146:a,b,-1/3a-2/3b+1/3c>1 3 a +2464 146:a,b,c>143 3 a +2465 146:a,b,c;1/3,1/3,0>144 3 a +2466 146:a,b,c;0,1/3,0>145 3 a +2467 146:-b,a+b,2c>146 2 a +2468 146:-2b,2a+2b,c>146 4 a +2469 146:-2b,2a+2b,c;1,0,0>146 4 a +2470 146:-2b,2a+2b,c;0,1,0>146 4 a +2471 146:-2b,2a+2b,c;1,1,0>146 4 a +2472 147:a,b,c>2 3 a +2473 147:a,b,c>143 2 a +2474 147:a,b,2c;0,0,1/2>147 2 a +2475 147:a,b,2c>147 2 b +2476 147:a-b,a+2b,c>147 3 a +2477 147:a-b,a+2b,c;1,0,0>147 3 a +2478 147:a-b,a+2b,c;2,0,0>147 3 a +2479 147:a,b,3c>147 3 b +2480 147:a,b,3c;0,0,1>147 3 b +2481 147:a,b,3c;0,0,2>147 3 b +2482 147:2a,2b,c>147 4 a +2483 147:2a,2b,c;1,0,0>147 4 a +2484 147:2a,2b,c;0,1,0>147 4 a +2485 147:2a,2b,c;1,1,0>147 4 a +2486 147:2a+b,-a+b,3c>148 3 a +2487 147:2a+b,-a+b,3c;0,0,1>148 3 a +2488 147:2a+b,-a+b,3c;0,0,2>148 3 a +2489 147:a-b,a+2b,3c>148 3 b +2490 147:a-b,a+2b,3c;0,0,1>148 3 b +2491 147:a-b,a+2b,3c;0,0,2>148 3 b +2492 148:a,b,-1/3a-2/3b+1/3c>2 3 a +2493 148:a,b,c>146 2 a +2494 148:a,b,c>147 3 a +2495 148:a,b,c;2/3,1/3,1/3>147 3 a +2496 148:a,b,c;1/3,2/3,2/3>147 3 a +2497 148:-b,a+b,2c;0,0,1/2>148 2 a +2498 148:-b,a+b,2c>148 2 b +2499 148:-2b,2a+2b,c>148 4 a +2500 148:-2b,2a+2b,c;1,0,0>148 4 a +2501 148:-2b,2a+2b,c;0,1,0>148 4 a +2502 148:-2b,2a+2b,c;1,1,0>148 4 a +2503 149:-a-b,a-b,c>5 3 a +2504 149:a,a+2b,c>5 3 a +2505 149:b,-2a-b,c>5 3 a +2506 149:a,b,c>143 2 a +2507 149:a,b,2c;0,0,1/2>149 2 a +2508 149:a,b,2c>149 2 b +2509 149:a,b,3c>149 3 a +2510 149:a,b,3c;0,0,1>149 3 a +2511 149:a,b,3c;0,0,2>149 3 a +2512 149:2a,2b,c>149 4 a +2513 149:2a,2b,c;1,0,0>149 4 a +2514 149:2a,2b,c;0,1,0>149 4 a +2515 149:2a,2b,c;1,1,0>149 4 a +2516 149:a-b,a+2b,c;1/3,2/3,0>150 3 a +2517 149:a-b,a+2b,c;4/3,2/3,0>150 3 a +2518 149:a-b,a+2b,c;7/3,2/3,0>150 3 a +2519 149:a-b,a+2b,c;2/3,1/3,0>150 3 b +2520 149:a-b,a+2b,c;2/3,4/3,0>150 3 b +2521 149:a-b,a+2b,c;2/3,7/3,0>150 3 b +2522 149:a-b,a+2b,c>150 3 c +2523 149:a-b,a+2b,c;1,0,0>150 3 c +2524 149:a-b,a+2b,c;1,1,0>150 3 c +2525 149:a,b,3c>151 3 a +2526 149:a,b,3c;0,0,1>151 3 a +2527 149:a,b,3c;0,0,2>151 3 a +2528 149:a,b,3c>153 3 a +2529 149:a,b,3c;0,0,1>153 3 a +2530 149:a,b,3c;0,0,2>153 3 a +2531 149:2a+b,-a+b,3c;1/3,2/3,0>155 3 a +2532 149:2a+b,-a+b,3c;1/3,2/3,1>155 3 a +2533 149:2a+b,-a+b,3c;1/3,2/3,2>155 3 a +2534 149:2a+b,-a+b,3c;2/3,1/3,0>155 3 b +2535 149:2a+b,-a+b,3c;2/3,1/3,1>155 3 b +2536 149:2a+b,-a+b,3c;2/3,1/3,2>155 3 b +2537 149:2a+b,-a+b,3c>155 3 c +2538 149:2a+b,-a+b,3c;0,0,1>155 3 c +2539 149:2a+b,-a+b,3c;0,0,2>155 3 c +2540 149:a-b,a+2b,3c;1/3,2/3,0>155 3 d +2541 149:a-b,a+2b,3c;1/3,2/3,1>155 3 d +2542 149:a-b,a+2b,3c;1/3,2/3,2>155 3 d +2543 149:a-b,a+2b,3c;2/3,1/3,0>155 3 e +2544 149:a-b,a+2b,3c;2/3,1/3,1>155 3 e +2545 149:a-b,a+2b,3c;2/3,1/3,2>155 3 e +2546 149:a-b,a+2b,3c>155 3 f +2547 149:a-b,a+2b,3c;0,0,1>155 3 f +2548 149:a-b,a+2b,3c;0,0,2>155 3 f +2549 150:-a+b,-a-b,c>5 3 a +2550 150:-a-2b,a,c>5 3 a +2551 150:2a+b,b,c>5 3 a +2552 150:a,b,c>143 2 a +2553 150:a-b,a+2b,c>149 3 a +2554 150:a,b,2c;0,0,1/2>150 2 a +2555 150:a,b,2c>150 2 b +2556 150:a,b,3c>150 3 a +2557 150:a,b,3c;0,0,1>150 3 a +2558 150:a,b,3c;0,0,2>150 3 a +2559 150:2a,2b,c>150 4 a +2560 150:2a,2b,c;1,0,0>150 4 a +2561 150:2a,2b,c;0,1,0>150 4 a +2562 150:2a,2b,c;1,1,0>150 4 a +2563 150:a,b,3c>152 3 a +2564 150:a,b,3c;0,0,1>152 3 a +2565 150:a,b,3c;0,0,2>152 3 a +2566 150:a,b,3c>154 3 a +2567 150:a,b,3c;0,0,1>154 3 a +2568 150:a,b,3c;0,0,2>154 3 a +2569 151:b,-2a-b,c>5 3 a +2570 151:-a-b,a-b,c;0,0,1/3>5 3 a +2571 151:a,a+2b,c;0,0,2/3>5 3 a +2572 151:a,b,c>144 2 a +2573 151:2a,2b,c>151 4 a +2574 151:2a,2b,c;1,0,0>151 4 a +2575 151:2a,2b,c;0,1,0>151 4 a +2576 151:2a,2b,c;1,1,0>151 4 a +2577 151:a-b,a+2b,c;1/3,-1/3,0>152 3 a +2578 151:a-b,a+2b,c;1/3,2/3,0>152 3 a +2579 151:a-b,a+2b,c;4/3,2/3,0>152 3 a +2580 151:a-b,a+2b,c;2/3,-2/3,0>152 3 b +2581 151:a-b,a+2b,c;2/3,1/3,0>152 3 b +2582 151:a-b,a+2b,c;2/3,4/3,0>152 3 b +2583 151:a-b,a+2b,c>152 3 c +2584 151:a-b,a+2b,c;1,0,0>152 3 c +2585 151:a-b,a+2b,c;1,1,0>152 3 c +2586 151:a,b,2c;0,0,1/2>153 2 a +2587 151:a,b,2c>153 2 b +2588 152:-a+b,-a-b,c>5 3 a +2589 152:-a-2b,a,c;0,0,1/3>5 3 a +2590 152:2a+b,b,c;0,0,2/3>5 3 a +2591 152:a,b,c>144 2 a +2592 152:a-b,a+2b,c;0,0,1/3>151 3 a +2593 152:2a,2b,c>152 4 a +2594 152:2a,2b,c;1,0,0>152 4 a +2595 152:2a,2b,c;0,1,0>152 4 a +2596 152:2a,2b,c;1,1,0>152 4 a +2597 152:a,b,2c;0,0,1/2>154 2 a +2598 152:a,b,2c>154 2 b +2599 153:b,-2a-b,c>5 3 a +2600 153:a,a+2b,c;0,0,1/3>5 3 a +2601 153:-a-b,a-b,c;0,0,2/3>5 3 a +2602 153:a,b,c>145 2 a +2603 153:a,b,2c;0,0,1/2>151 2 a +2604 153:a,b,2c>151 2 b +2605 153:2a,2b,c>153 4 a +2606 153:2a,2b,c;1,0,0>153 4 a +2607 153:2a,2b,c;0,1,0>153 4 a +2608 153:2a,2b,c;1,1,0>153 4 a +2609 153:a-b,a+2b,c;1/3,-1/3,0>154 3 a +2610 153:a-b,a+2b,c;1/3,2/3,0>154 3 a +2611 153:a-b,a+2b,c;4/3,2/3,0>154 3 a +2612 153:a-b,a+2b,c;2/3,-2/3,0>154 3 b +2613 153:a-b,a+2b,c;2/3,1/3,0>154 3 b +2614 153:a-b,a+2b,c;2/3,4/3,0>154 3 b +2615 153:a-b,a+2b,c>154 3 c +2616 153:a-b,a+2b,c;1,0,0>154 3 c +2617 153:a-b,a+2b,c;1,1,0>154 3 c +2618 154:-a+b,-a-b,c>5 3 a +2619 154:2a+b,b,c;0,0,1/3>5 3 a +2620 154:-a-2b,a,c;0,0,2/3>5 3 a +2621 154:a,b,c>145 2 a +2622 154:a,b,2c;0,0,1/2>152 2 a +2623 154:a,b,2c>152 2 b +2624 154:a-b,a+2b,c;0,0,1/6>153 3 a +2625 154:2a,2b,c>154 4 a +2626 154:2a,2b,c;1,0,0>154 4 a +2627 154:2a,2b,c;0,1,0>154 4 a +2628 154:2a,2b,c;1,1,0>154 4 a +2629 155:-1/3a+1/3b-2/3c,-a-b,c>5 3 a +2630 155:-1/3a-2/3b-2/3c,a,c>5 3 a +2631 155:2/3a+1/3b-2/3c,b,c>5 3 a +2632 155:a,b,c>146 2 a +2633 155:a,b,c>150 3 a +2634 155:a,b,c;2/3,1/3,1/3>150 3 a +2635 155:a,b,c;1/3,2/3,2/3>150 3 a +2636 155:a,b,c;1/3,1/3,0>152 3 a +2637 155:a,b,c;2/3,0,2/3>152 3 a +2638 155:a,b,c;0,2/3,1/3>152 3 a +2639 155:a,b,c;2/3,2/3,0>154 3 a +2640 155:a,b,c;1/3,0,1/3>154 3 a +2641 155:a,b,c;0,1/3,2/3>154 3 a +2642 155:-b,a+b,2c;0,0,1/2>155 2 a +2643 155:-b,a+b,2c>155 2 b +2644 155:-2b,2a+2b,c>155 4 a +2645 155:-2b,2a+2b,c;1,0,0>155 4 a +2646 155:-2b,2a+2b,c;0,1,0>155 4 a +2647 155:-2b,2a+2b,c;1,1,0>155 4 a +2648 156:-a+b,-a-b,c>8 3 a +2649 156:-a-2b,a,c>8 3 a +2650 156:2a+b,b,c>8 3 a +2651 156:a,b,c>143 2 a +2652 156:a,b,2c>156 2 a +2653 156:a,b,3c>156 3 a +2654 156:2a,2b,c>156 4 a +2655 156:2a,2b,c;1,0,0>156 4 a +2656 156:2a,2b,c;0,1,0>156 4 a +2657 156:2a,2b,c;1,1,0>156 4 a +2658 156:a-b,a+2b,c;1/3,-1/3,0>157 3 a +2659 156:a-b,a+2b,c;1/3,2/3,0>157 3 a +2660 156:a-b,a+2b,c;4/3,2/3,0>157 3 a +2661 156:a-b,a+2b,c;2/3,-2/3,0>157 3 b +2662 156:a-b,a+2b,c;2/3,1/3,0>157 3 b +2663 156:a-b,a+2b,c;2/3,4/3,0>157 3 b +2664 156:a-b,a+2b,c>157 3 c +2665 156:a-b,a+2b,c;1,0,0>157 3 c +2666 156:a-b,a+2b,c;1,1,0>157 3 c +2667 156:a,b,2c>158 2 a +2668 157:-a-b,a-b,c>8 3 a +2669 157:a,a+2b,c>8 3 a +2670 157:b,-2a-b,c>8 3 a +2671 157:a,b,c>143 2 a +2672 157:a-b,a+2b,c>156 3 a +2673 157:a,b,2c>157 2 a +2674 157:a,b,3c>157 3 a +2675 157:2a,2b,c>157 4 a +2676 157:2a,2b,c;1,0,0>157 4 a +2677 157:2a,2b,c;0,1,0>157 4 a +2678 157:2a,2b,c;1,1,0>157 4 a +2679 157:a,b,2c>159 2 a +2680 157:2a+b,-a+b,3c>160 3 a +2681 157:a-b,a+2b,3c>160 3 b +2682 158:-a+b,-a-b,c>9 3 a +2683 158:-a-2b,a,c>9 3 a +2684 158:2a+b,b,c>9 3 a +2685 158:a,b,c>143 2 a +2686 158:a,b,3c>158 3 a +2687 158:2a,2b,c>158 4 a +2688 158:2a,2b,c;1,0,0>158 4 a +2689 158:2a,2b,c;0,1,0>158 4 a +2690 158:2a,2b,c;1,1,0>158 4 a +2691 158:a-b,a+2b,c;1/3,-1/3,0>159 3 a +2692 158:a-b,a+2b,c;1/3,2/3,0>159 3 a +2693 158:a-b,a+2b,c;4/3,2/3,0>159 3 a +2694 158:a-b,a+2b,c;2/3,-2/3,0>159 3 b +2695 158:a-b,a+2b,c;2/3,1/3,0>159 3 b +2696 158:a-b,a+2b,c;2/3,4/3,0>159 3 b +2697 158:a-b,a+2b,c>159 3 c +2698 158:a-b,a+2b,c;1,0,0>159 3 c +2699 158:a-b,a+2b,c;1,1,0>159 3 c +2700 159:-a-b,a-b,c>9 3 a +2701 159:a,a+2b,c>9 3 a +2702 159:b,-2a-b,c>9 3 a +2703 159:a,b,c>143 2 a +2704 159:a-b,a+2b,c>158 3 a +2705 159:a,b,3c>159 3 a +2706 159:2a,2b,c>159 4 a +2707 159:2a,2b,c;1,0,0>159 4 a +2708 159:2a,2b,c;0,1,0>159 4 a +2709 159:2a,2b,c;1,1,0>159 4 a +2710 159:2a+b,-a+b,3c>161 3 a +2711 159:a-b,a+2b,3c>161 3 b +2712 160:-1/3a+1/3b-2/3c,-a-b,c>8 3 a +2713 160:-1/3a-2/3b-2/3c,a,c>8 3 a +2714 160:2/3a+1/3b-2/3c,b,c>8 3 a +2715 160:a,b,c>146 2 a +2716 160:a,b,c>156 3 a +2717 160:-b,a+b,2c>160 2 a +2718 160:-2b,2a+2b,c>160 4 a +2719 160:-2b,2a+2b,c;1,0,0>160 4 a +2720 160:-2b,2a+2b,c;0,1,0>160 4 a +2721 160:-2b,2a+2b,c;1,1,0>160 4 a +2722 160:-b,a+b,2c>161 2 a +2723 161:-1/3a+1/3b-2/3c,-a-b,c>9 3 a +2724 161:-1/3a-2/3b-2/3c,a,c>9 3 a +2725 161:2/3a+1/3b-2/3c,b,c>9 3 a +2726 161:a,b,c>146 2 a +2727 161:a,b,c>158 3 a +2728 161:-2b,2a+2b,c>161 4 a +2729 161:-2b,2a+2b,c;1,0,0>161 4 a +2730 161:-2b,2a+2b,c;0,1,0>161 4 a +2731 161:-2b,2a+2b,c;1,1,0>161 4 a +2732 162:-a-b,a-b,c>12 3 a +2733 162:a,a+2b,c>12 3 a +2734 162:b,-2a-b,c>12 3 a +2735 162:a,b,c>147 2 a +2736 162:a,b,c>149 2 a +2737 162:a,b,c>157 2 a +2738 162:a,b,2c;0,0,1/2>162 2 a +2739 162:a,b,2c>162 2 b +2740 162:a,b,3c>162 3 a +2741 162:a,b,3c;0,0,1>162 3 a +2742 162:a,b,3c;0,0,2>162 3 a +2743 162:2a,2b,c>162 4 a +2744 162:2a,2b,c;1,0,0>162 4 a +2745 162:2a,2b,c;0,1,0>162 4 a +2746 162:2a,2b,c;1,1,0>162 4 a +2747 162:a,b,2c;0,0,1/2>163 2 a +2748 162:a,b,2c>163 2 b +2749 162:a-b,a+2b,c>164 3 a +2750 162:a-b,a+2b,c;1,0,0>164 3 a +2751 162:a-b,a+2b,c;1,1,0>164 3 a +2752 162:2a+b,-a+b,3c>166 3 a +2753 162:2a+b,-a+b,3c;0,0,1>166 3 a +2754 162:2a+b,-a+b,3c;0,0,2>166 3 a +2755 162:a-b,a+2b,3c>166 3 b +2756 162:a-b,a+2b,3c;0,0,1>166 3 b +2757 162:a-b,a+2b,3c;0,0,2>166 3 b +2758 163:-a-b,a-b,c>15 3 a +2759 163:a,a+2b,c>15 3 a +2760 163:b,-2a-b,c>15 3 a +2761 163:a,b,c>147 2 a +2762 163:a,b,c;0,0,1/4>149 2 a +2763 163:a,b,c>159 2 a +2764 163:a,b,3c>163 3 a +2765 163:a,b,3c;0,0,1>163 3 a +2766 163:a,b,3c;0,0,2>163 3 a +2767 163:2a,2b,c>163 4 a +2768 163:2a,2b,c;1,0,0>163 4 a +2769 163:2a,2b,c;0,1,0>163 4 a +2770 163:2a,2b,c;1,1,0>163 4 a +2771 163:a-b,a+2b,c>165 3 a +2772 163:a-b,a+2b,c;1,0,0>165 3 a +2773 163:a-b,a+2b,c;1,1,0>165 3 a +2774 163:2a+b,-a+b,3c>167 3 a +2775 163:2a+b,-a+b,3c;0,0,1>167 3 a +2776 163:2a+b,-a+b,3c;0,0,2>167 3 a +2777 163:a-b,a+2b,3c>167 3 b +2778 163:a-b,a+2b,3c;0,0,1>167 3 b +2779 163:a-b,a+2b,3c;0,0,2>167 3 b +2780 164:-a+b,-a-b,c>12 3 a +2781 164:-a-2b,a,c>12 3 a +2782 164:2a+b,b,c>12 3 a +2783 164:a,b,c>147 2 a +2784 164:a,b,c>150 2 a +2785 164:a,b,c>156 2 a +2786 164:a-b,a+2b,c>162 3 a +2787 164:a-b,a+2b,c;1,0,0>162 3 a +2788 164:a-b,a+2b,c;1,1,0>162 3 a +2789 164:a,b,2c;0,0,1/2>164 2 a +2790 164:a,b,2c>164 2 b +2791 164:a,b,3c>164 3 a +2792 164:a,b,3c;0,0,1>164 3 a +2793 164:a,b,3c;0,0,2>164 3 a +2794 164:2a,2b,c>164 4 a +2795 164:2a,2b,c;1,0,0>164 4 a +2796 164:2a,2b,c;0,1,0>164 4 a +2797 164:2a,2b,c;1,1,0>164 4 a +2798 164:a,b,2c;0,0,1/2>165 2 a +2799 164:a,b,2c>165 2 b +2800 165:-a+b,-a-b,c>15 3 a +2801 165:-a-2b,a,c>15 3 a +2802 165:2a+b,b,c>15 3 a +2803 165:a,b,c>147 2 a +2804 165:a,b,c;0,0,1/4>150 2 a +2805 165:a,b,c>158 2 a +2806 165:a-b,a+2b,c>163 3 a +2807 165:a-b,a+2b,c;1,0,0>163 3 a +2808 165:a-b,a+2b,c;1,1,0>163 3 a +2809 165:a,b,3c>165 3 a +2810 165:a,b,3c;0,0,1>165 3 a +2811 165:a,b,3c;0,0,2>165 3 a +2812 165:2a,2b,c>165 4 a +2813 165:2a,2b,c;1,0,0>165 4 a +2814 165:2a,2b,c;0,1,0>165 4 a +2815 165:2a,2b,c;1,1,0>165 4 a +2816 166:-1/3a+1/3b-2/3c,-a-b,c>12 3 a +2817 166:-1/3a-2/3b-2/3c,a,c>12 3 a +2818 166:2/3a+1/3b-2/3c,b,c>12 3 a +2819 166:a,b,c>148 2 a +2820 166:a,b,c>155 2 a +2821 166:a,b,c>160 2 a +2822 166:a,b,c>164 3 a +2823 166:a,b,c;1/3,2/3,2/3>164 3 a +2824 166:a,b,c;2/3,1/3,1/3>164 3 a +2825 166:-b,a+b,2c;0,0,1/2>166 2 a +2826 166:-b,a+b,2c>166 2 b +2827 166:-2b,2a+2b,c>166 4 a +2828 166:-2b,2a+2b,c;1,0,0>166 4 a +2829 166:-2b,2a+2b,c;0,1,0>166 4 a +2830 166:-2b,2a+2b,c;1,1,0>166 4 a +2831 166:-b,a+b,2c;0,0,1/2>167 2 a +2832 166:-b,a+b,2c>167 2 b +2833 167:-1/3a+1/3b-2/3c,-a-b,c>15 3 a +2834 167:-1/3a-2/3b-2/3c,a,c>15 3 a +2835 167:2/3a+1/3b-2/3c,b,c>15 3 a +2836 167:a,b,c>148 2 a +2837 167:a,b,c;0,0,1/4>155 2 a +2838 167:a,b,c>161 2 a +2839 167:a,b,c>165 3 a +2840 167:a,b,c;1/3,2/3,2/3>165 3 a +2841 167:a,b,c;2/3,1/3,1/3>165 3 a +2842 167:-2b,2a+2b,c>167 4 a +2843 167:-2b,2a+2b,c;1,0,0>167 4 a +2844 167:-2b,2a+2b,c;0,1,0>167 4 a +2845 167:-2b,2a+2b,c;1,1,0>167 4 a +2846 168:b,c,a>3 3 a +2847 168:a,b,c>143 2 a +2848 168:a,b,2c>168 2 a +2849 168:a-b,a+2b,c>168 3 a +2850 168:a-b,a+2b,c;1,0,0>168 3 a +2851 168:a-b,a+2b,c;2,0,0>168 3 a +2852 168:a,b,3c>168 3 b +2853 168:2a,2b,c>168 4 a +2854 168:2a,2b,c;1,0,0>168 4 a +2855 168:2a,2b,c;0,1,0>168 4 a +2856 168:2a,2b,c;1,1,0>168 4 a +2857 168:a,b,3c>171 3 a +2858 168:a,b,3c>172 3 a +2859 168:a,b,2c>173 2 a +2860 169:b,c,a>4 3 a +2861 169:a,b,c>144 2 a +2862 169:a-b,a+2b,c>169 3 a +2863 169:a-b,a+2b,c;1,0,0>169 3 a +2864 169:a-b,a+2b,c;2,0,0>169 3 a +2865 169:2a,2b,c>169 4 a +2866 169:2a,2b,c;1,0,0>169 4 a +2867 169:2a,2b,c;0,1,0>169 4 a +2868 169:2a,2b,c;1,1,0>169 4 a +2869 170:b,c,a>4 3 a +2870 170:a,b,c>145 2 a +2871 170:a-b,a+2b,c>170 3 a +2872 170:a-b,a+2b,c;1,0,0>170 3 a +2873 170:a-b,a+2b,c;2,0,0>170 3 a +2874 170:2a,2b,c>170 4 a +2875 170:2a,2b,c;1,0,0>170 4 a +2876 170:2a,2b,c;0,1,0>170 4 a +2877 170:2a,2b,c;1,1,0>170 4 a +2878 171:b,c,a>3 3 a +2879 171:a,b,c>145 2 a +2880 171:a,b,2c>169 2 a +2881 171:a-b,a+2b,c>171 3 a +2882 171:a-b,a+2b,c;1,0,0>171 3 a +2883 171:a-b,a+2b,c;2,0,0>171 3 a +2884 171:2a,2b,c>171 4 a +2885 171:2a,2b,c;1,0,0>171 4 a +2886 171:2a,2b,c;0,1,0>171 4 a +2887 171:2a,2b,c;1,1,0>171 4 a +2888 171:a,b,2c>172 2 a +2889 172:b,c,a>3 3 a +2890 172:a,b,c>144 2 a +2891 172:a,b,2c>170 2 a +2892 172:a,b,2c>171 2 a +2893 172:a-b,a+2b,c>172 3 a +2894 172:a-b,a+2b,c;1,0,0>172 3 a +2895 172:a-b,a+2b,c;2,0,0>172 3 a +2896 172:2a,2b,c>172 4 a +2897 172:2a,2b,c;1,0,0>172 4 a +2898 172:2a,2b,c;0,1,0>172 4 a +2899 172:2a,2b,c;1,1,0>172 4 a +2900 173:b,c,a>4 3 a +2901 173:a,b,c>143 2 a +2902 173:a,b,3c>169 3 a +2903 173:a,b,3c>170 3 a +2904 173:a-b,a+2b,c>173 3 a +2905 173:a-b,a+2b,c;1,0,0>173 3 a +2906 173:a-b,a+2b,c;2,0,0>173 3 a +2907 173:a,b,3c>173 3 b +2908 173:2a,2b,c>173 4 a +2909 173:2a,2b,c;1,0,0>173 4 a +2910 173:2a,2b,c;0,1,0>173 4 a +2911 173:2a,2b,c;1,1,0>173 4 a +2912 174:b,c,a>6 3 a +2913 174:a,b,c>143 2 a +2914 174:a,b,2c;0,0,1/2>174 2 a +2915 174:a,b,2c>174 2 b +2916 174:a,b,3c>174 3 a +2917 174:a,b,3c;0,0,1>174 3 a +2918 174:a,b,3c;0,0,2>174 3 a +2919 174:a-b,a+2b,c;1/3,2/3,0>174 3 b +2920 174:a-b,a+2b,c;2/3,1/3,0>174 3 c +2921 174:a-b,a+2b,c>174 3 d +2922 174:2a,2b,c>174 4 a +2923 174:2a,2b,c;1,0,0>174 4 a +2924 174:2a,2b,c;0,1,0>174 4 a +2925 174:2a,2b,c;1,1,0>174 4 a +2926 175:b,c,a>10 3 a +2927 175:a,b,c>147 2 a +2928 175:a,b,c>168 2 a +2929 175:a,b,c>174 2 a +2930 175:a,b,2c;0,0,1/2>175 2 a +2931 175:a,b,2c>175 2 b +2932 175:a-b,a+2b,c>175 3 a +2933 175:a-b,a+2b,c;1,0,0>175 3 a +2934 175:a-b,a+2b,c;2,0,0>175 3 a +2935 175:a,b,3c>175 3 b +2936 175:a,b,3c;0,0,1>175 3 b +2937 175:a,b,3c;0,0,2>175 3 b +2938 175:2a,2b,c>175 4 a +2939 175:2a,2b,c;1,0,0>175 4 a +2940 175:2a,2b,c;0,1,0>175 4 a +2941 175:2a,2b,c;1,1,0>175 4 a +2942 175:a,b,2c;0,0,1/2>176 2 a +2943 175:a,b,2c>176 2 b +2944 176:b,c,a>11 3 a +2945 176:a,b,c>147 2 a +2946 176:a,b,c>173 2 a +2947 176:a,b,c;0,0,1/4>174 2 a +2948 176:a-b,a+2b,c>176 3 a +2949 176:a-b,a+2b,c;1,0,0>176 3 a +2950 176:a-b,a+2b,c;2,0,0>176 3 a +2951 176:a,b,3c>176 3 b +2952 176:a,b,3c;0,0,1>176 3 b +2953 176:a,b,3c;0,0,2>176 3 b +2954 176:2a,2b,c>176 4 a +2955 176:2a,2b,c;1,0,0>176 4 a +2956 176:2a,2b,c;0,1,0>176 4 a +2957 176:2a,2b,c;1,1,0>176 4 a +2958 177:a-b,a+b,c>21 3 a +2959 177:-a-2b,a,c>21 3 a +2960 177:2a+b,b,c>21 3 a +2961 177:a,b,c>149 2 a +2962 177:a,b,c>150 2 a +2963 177:a,b,c>168 2 a +2964 177:a,b,2c;0,0,1/2>177 2 a +2965 177:a,b,2c>177 2 b +2966 177:a-b,a+2b,c>177 3 a +2967 177:a-b,a+2b,c;1,0,0>177 3 a +2968 177:a-b,a+2b,c;2,0,0>177 3 a +2969 177:a,b,3c>177 3 b +2970 177:a,b,3c;0,0,1>177 3 b +2971 177:a,b,3c;0,0,2>177 3 b +2972 177:2a,2b,c>177 4 a +2973 177:2a,2b,c;1,0,0>177 4 a +2974 177:2a,2b,c;0,1,0>177 4 a +2975 177:2a,2b,c;1,1,0>177 4 a +2976 177:a,b,3c>180 3 a +2977 177:a,b,3c;0,0,1>180 3 a +2978 177:a,b,3c;0,0,2>180 3 a +2979 177:a,b,3c>181 3 a +2980 177:a,b,3c;0,0,1>181 3 a +2981 177:a,b,3c;0,0,2>181 3 a +2982 177:a,b,2c;0,0,1/2>182 2 a +2983 177:a,b,2c>182 2 b +2984 178:-a+b,-a-b,c;0,0,5/12>20 3 a +2985 178:-a-2b,a,c;0,0,3/4>20 3 a +2986 178:2a+b,b,c;0,0,1/12>20 3 a +2987 178:a,b,c;0,0,1/12>151 2 a +2988 178:a,b,c;0,0,1/6>152 2 a +2989 178:a,b,c>169 2 a +2990 178:a-b,a+2b,c;0,0,5/12>178 3 a +2991 178:a-b,a+2b,c;0,0,5/12>178 3 a +2992 178:a-b,a+2b,c;0,0,5/12>178 3 a +2993 178:2a,2b,c>178 4 a +2994 178:2a,2b,c;1,0,0>178 4 a +2995 178:2a,2b,c;0,1,0>178 4 a +2996 178:2a,2b,c;1,1,0>178 4 a +2997 179:-a+b,-a-b,c;0,0,1/12>20 3 a +2998 179:-a-2b,a,c;0,0,3/4>20 3 a +2999 179:2a+b,b,c;0,0,5/12>20 3 a +3000 179:a,b,c;0,0,5/12>153 2 a +3001 179:a,b,c;0,0,1/3>154 2 a +3002 179:a,b,c>170 2 a +3003 179:a-b,a+2b,c;0,0,7/12>179 3 a +3004 179:a-b,a+2b,c;0,0,7/12>179 3 a +3005 179:a-b,a+2b,c;0,0,7/12>179 3 a +3006 179:2a,2b,c>179 4 a +3007 179:2a,2b,c;1,0,0>179 4 a +3008 179:2a,2b,c;0,1,0>179 4 a +3009 179:2a,2b,c;1,1,0>179 4 a +3010 180:-a+b,-a-b,c;0,0,1/3>21 3 a +3011 180:-a-2b,a,c>21 3 a +3012 180:2a+b,b,c;0,0,2/3>21 3 a +3013 180:a,b,c;0,0,1/6>153 2 a +3014 180:a,b,c;0,0,1/3>154 2 a +3015 180:a,b,c>171 2 a +3016 180:a,b,2c;0,0,1/2>178 2 a +3017 180:a,b,2c>178 2 b +3018 180:a-b,a+2b,c;0,0,1/3>180 3 a +3019 180:a-b,a+2b,c;1,0,1/3>180 3 a +3020 180:a-b,a+2b,c;2,0,1/3>180 3 a +3021 180:2a,2b,c>180 4 a +3022 180:2a,2b,c;1,0,0>180 4 a +3023 180:2a,2b,c;0,1,0>180 4 a +3024 180:2a,2b,c;1,1,0>180 4 a +3025 180:a,b,2c;0,0,1/2>181 2 a +3026 180:a,b,2c>181 2 b +3027 181:-a+b,-a-b,c;0,0,2/3>21 3 a +3028 181:-a-2b,a,c>21 3 a +3029 181:2a+b,b,c;0,0,1/3>21 3 a +3030 181:a,b,c;0,0,1/3>151 2 a +3031 181:a,b,c;0,0,1/6>152 2 a +3032 181:a,b,c>172 2 a +3033 181:a,b,2c>179 2 a +3034 181:a,b,2c;0,0,1/2>179 2 b +3035 181:a,b,2c;0,0,1/2>180 2 a +3036 181:a,b,2c>180 2 b +3037 181:a-b,a+2b,c;0,0,1/6>181 3 a +3038 181:a-b,a+2b,c;1,0,1/6>181 3 a +3039 181:a-b,a+2b,c;2,0,1/6>181 3 a +3040 181:2a,2b,c>181 4 a +3041 181:2a,2b,c;1,0,0>181 4 a +3042 181:2a,2b,c;0,1,0>181 4 a +3043 181:2a,2b,c;1,1,0>181 4 a +3044 182:-a+b,-a-b,c;0,0,1/4>20 3 a +3045 182:-a-2b,a,c;0,0,1/4>20 3 a +3046 182:2a+b,b,c;0,0,1/4>20 3 a +3047 182:a,b,c;0,0,1/4>149 2 a +3048 182:a,b,c>150 2 a +3049 182:a,b,c>173 2 a +3050 182:a,b,3c>178 3 a +3051 182:a,b,3c;0,0,1>178 3 a +3052 182:a,b,3c;0,0,2>178 3 a +3053 182:a,b,3c>179 3 a +3054 182:a,b,3c;0,0,1>179 3 a +3055 182:a,b,3c;0,0,2>179 3 a +3056 182:a-b,a+2b,c;0,0,1/4>182 3 a +3057 182:a-b,a+2b,c;1,0,1/4>182 3 a +3058 182:a-b,a+2b,c;2,0,1/4>182 3 a +3059 182:a,b,3c>182 3 b +3060 182:a,b,3c;0,0,1>182 3 b +3061 182:a,b,3c;0,0,2>182 3 b +3062 182:2a,2b,c>182 4 a +3063 182:2a,2b,c;1,0,0>182 4 a +3064 182:2a,2b,c;0,1,0>182 4 a +3065 182:2a,2b,c;1,1,0>182 4 a +3066 183:-a+b,-a-b,c>35 3 a +3067 183:-a-2b,a,c>35 3 a +3068 183:2a+b,b,c>35 3 a +3069 183:a,b,c>156 2 a +3070 183:a,b,c>157 2 a +3071 183:a,b,c>168 2 a +3072 183:a,b,2c>183 2 a +3073 183:a-b,a+2b,c>183 3 a +3074 183:a-b,a+2b,c;1,0,0>183 3 a +3075 183:a-b,a+2b,c;2,0,0>183 3 a +3076 183:a,b,3c>183 3 b +3077 183:2a,2b,c>183 4 a +3078 183:2a,2b,c;1,0,0>183 4 a +3079 183:2a,2b,c;0,1,0>183 4 a +3080 183:2a,2b,c;1,1,0>183 4 a +3081 183:a,b,2c>184 2 a +3082 183:a,b,2c>185 2 a +3083 183:a,b,2c>186 2 a +3084 184:-a+b,-a-b,c>37 3 a +3085 184:-a-2b,a,c>37 3 a +3086 184:2a+b,b,c>37 3 a +3087 184:a,b,c>158 2 a +3088 184:a,b,c>159 2 a +3089 184:a,b,c>168 2 a +3090 184:a-b,a+2b,c>184 3 a +3091 184:a-b,a+2b,c;1,0,0>184 3 a +3092 184:a-b,a+2b,c;2,0,0>184 3 a +3093 184:a,b,3c>184 3 b +3094 184:2a,2b,c>184 4 a +3095 184:2a,2b,c;1,0,0>184 4 a +3096 184:2a,2b,c;0,1,0>184 4 a +3097 184:2a,2b,c;1,1,0>184 4 a +3098 185:-a+b,-a-b,c>36 3 a +3099 185:-a-2b,a,c>36 3 a +3100 185:2a+b,b,c>36 3 a +3101 185:a,b,c>157 2 a +3102 185:a,b,c>158 2 a +3103 185:a,b,c>173 2 a +3104 185:a,b,3c>185 3 a +3105 185:2a,2b,c>185 4 a +3106 185:2a,2b,c;1,0,0>185 4 a +3107 185:2a,2b,c;0,1,0>185 4 a +3108 185:2a,2b,c;1,1,0>185 4 a +3109 185:a-b,a+2b,c>186 3 a +3110 185:a-b,a+2b,c;1,0,0>186 3 a +3111 185:a-b,a+2b,c;1,1,0>186 3 a +3112 186:-a-b,a-b,c>36 3 a +3113 186:a,a+2b,c>36 3 a +3114 186:b,-2a-b,c>36 3 a +3115 186:a,b,c>156 2 a +3116 186:a,b,c>159 2 a +3117 186:a,b,c>173 2 a +3118 186:a-b,a+2b,c>185 3 a +3119 186:a-b,a+2b,c;1,0,0>185 3 a +3120 186:a-b,a+2b,c;1,1,0>185 3 a +3121 186:a,b,3c>186 3 a +3122 186:2a,2b,c>186 4 a +3123 186:2a,2b,c;1,0,0>186 4 a +3124 186:2a,2b,c;0,1,0>186 4 a +3125 186:2a,2b,c;1,1,0>186 4 a +3126 187:c,-a-b,a-b>38 3 a +3127 187:c,a,a+2b>38 3 a +3128 187:c,b,-2a-b>38 3 a +3129 187:a,b,c>149 2 a +3130 187:a,b,c>156 2 a +3131 187:a,b,c>174 2 a +3132 187:a,b,2c;0,0,1/2>187 2 a +3133 187:a,b,2c>187 2 b +3134 187:a,b,3c>187 3 a +3135 187:a,b,3c;0,0,1>187 3 a +3136 187:a,b,3c;0,0,2>187 3 a +3137 187:2a,2b,c>187 4 a +3138 187:2a,2b,c;1,0,0>187 4 a +3139 187:2a,2b,c;0,1,0>187 4 a +3140 187:2a,2b,c;1,1,0>187 4 a +3141 187:a,b,2c;0,0,1/2>188 2 a +3142 187:a,b,2c>188 2 b +3143 187:a-b,a+2b,c;1/3,2/3,0>189 3 a +3144 187:a-b,a+2b,c;4/3,2/3,0>189 3 a +3145 187:a-b,a+2b,c;7/3,2/3,0>189 3 a +3146 187:a-b,a+2b,c;2/3,1/3,0>189 3 b +3147 187:a-b,a+2b,c;2/3,4/3,0>189 3 b +3148 187:a-b,a+2b,c;2/3,7/3,0>189 3 b +3149 187:a-b,a+2b,c>189 3 c +3150 187:a-b,a+2b,c;1,0,0>189 3 c +3151 187:a-b,a+2b,c;1,1,0>189 3 c +3152 188:c,-a-b,a-b>40 3 a +3153 188:c,a,a+2b>40 3 a +3154 188:c,b,-2a-b>40 3 a +3155 188:a,b,c>149 2 a +3156 188:a,b,c>158 2 a +3157 188:a,b,c;0,0,1/4>174 2 a +3158 188:a,b,3c>188 3 a +3159 188:a,b,3c;0,0,1>188 3 a +3160 188:a,b,3c;0,0,2>188 3 a +3161 188:2a,2b,c>188 4 a +3162 188:2a,2b,c;1,0,0>188 4 a +3163 188:2a,2b,c;0,1,0>188 4 a +3164 188:2a,2b,c;1,1,0>188 4 a +3165 188:a-b,a+2b,c;1/3,-1/3,0>190 3 a +3166 188:a-b,a+2b,c;1/3,2/3,0>190 3 a +3167 188:a-b,a+2b,c;4/3,2/3,0>190 3 a +3168 188:a-b,a+2b,c;-1/3,1/3,0>190 3 b +3169 188:a-b,a+2b,c;2/3,1/3,0>190 3 b +3170 188:a-b,a+2b,c;2/3,4/3,0>190 3 b +3171 188:a-b,a+2b,c>190 3 c +3172 188:a-b,a+2b,c;1,0,0>190 3 c +3173 188:a-b,a+2b,c;1,1,0>190 3 c +3174 189:c,-a+b,-a-b>38 3 a +3175 189:c,-a-2b,a>38 3 a +3176 189:c,2a+b,b>38 3 a +3177 189:a,b,c>150 2 a +3178 189:a,b,c>157 2 a +3179 189:a,b,c>174 2 a +3180 189:a-b,a+2b,c>187 3 a +3181 189:a,b,2c;0,0,1/2>189 2 a +3182 189:a,b,2c>189 2 b +3183 189:a,b,3c>189 3 a +3184 189:a,b,3c;0,0,1>189 3 a +3185 189:a,b,3c;0,0,2>189 3 a +3186 189:2a,2b,c>189 4 a +3187 189:2a,2b,c;1,0,0>189 4 a +3188 189:2a,2b,c;0,1,0>189 4 a +3189 189:2a,2b,c;1,1,0>189 4 a +3190 189:a,b,2c;0,0,1/2>190 2 a +3191 189:a,b,2c>190 2 b +3192 190:c,-a+b,-a-b>40 3 a +3193 190:c,-a-2b,a>40 3 a +3194 190:c,2a+b,b>40 3 a +3195 190:a,b,c>150 2 a +3196 190:a,b,c>159 2 a +3197 190:a,b,c;0,0,1/4>174 2 a +3198 190:a-b,a+2b,c>188 3 a +3199 190:a,b,3c>190 3 a +3200 190:a,b,3c;0,0,1>190 3 a +3201 190:a,b,3c;0,0,2>190 3 a +3202 190:2a,2b,c>190 4 a +3203 190:2a,2b,c;1,0,0>190 4 a +3204 190:2a,2b,c;0,1,0>190 4 a +3205 190:2a,2b,c;1,1,0>190 4 a +3206 191:-a+b,-a-b,c>65 3 a +3207 191:-a-2b,a,c>65 3 a +3208 191:2a+b,b,c>65 3 a +3209 191:a,b,c>162 2 a +3210 191:a,b,c>164 2 a +3211 191:a,b,c>175 2 a +3212 191:a,b,c>177 2 a +3213 191:a,b,c>183 2 a +3214 191:a,b,c>187 2 a +3215 191:a,b,c>189 2 a +3216 191:a,b,2c;0,0,1/2>191 2 a +3217 191:a,b,2c>191 2 b +3218 191:a-b,a+2b,c>191 3 a +3219 191:a-b,a+2b,c;1,0,0>191 3 a +3220 191:a-b,a+2b,c;2,0,0>191 3 a +3221 191:a,b,3c>191 3 b +3222 191:a,b,3c;0,0,1>191 3 b +3223 191:a,b,3c;0,0,2>191 3 b +3224 191:2a,2b,c>191 4 a +3225 191:2a,2b,c;1,0,0>191 4 a +3226 191:2a,2b,c;0,1,0>191 4 a +3227 191:2a,2b,c;1,1,0>191 4 a +3228 191:a,b,2c;0,0,1/2>192 2 a +3229 191:a,b,2c>192 2 b +3230 191:a,b,2c;0,0,1/2>193 2 a +3231 191:a,b,2c>193 2 b +3232 191:a,b,2c;0,0,1/2>194 2 a +3233 191:a,b,2c>194 2 b +3234 192:-a+b,-a-b,c>66 3 a +3235 192:-a-2b,a,c>66 3 a +3236 192:2a+b,b,c>66 3 a +3237 192:a,b,c>163 2 a +3238 192:a,b,c>165 2 a +3239 192:a,b,c>175 2 a +3240 192:a,b,c;0,0,1/4>177 2 a +3241 192:a,b,c>184 2 a +3242 192:a,b,c;0,0,1/4>188 2 a +3243 192:a,b,c;0,0,1/4>190 2 a +3244 192:a-b,a+2b,c>192 3 a +3245 192:a-b,a+2b,c;1,0,0>192 3 a +3246 192:a-b,a+2b,c;2,0,0>192 3 a +3247 192:a,b,3c>192 3 b +3248 192:a,b,3c;0,0,1>192 3 b +3249 192:a,b,3c;0,0,2>192 3 b +3250 192:2a,2b,c>192 4 a +3251 192:2a,2b,c;1,0,0>192 4 a +3252 192:2a,2b,c;0,1,0>192 4 a +3253 192:2a,2b,c;1,1,0>192 4 a +3254 193:-a+b,-a-b,c>63 3 a +3255 193:-a-2b,a,c>63 3 a +3256 193:2a+b,b,c>63 3 a +3257 193:a,b,c>162 2 a +3258 193:a,b,c>165 2 a +3259 193:a,b,c>176 2 a +3260 193:a,b,c;0,0,1/4>182 2 a +3261 193:a,b,c>185 2 a +3262 193:a,b,c>188 2 a +3263 193:a,b,c;0,0,1/4>189 2 a +3264 193:a,b,3c>193 3 a +3265 193:a,b,3c;0,0,1>193 3 a +3266 193:a,b,3c;0,0,2>193 3 a +3267 193:2a,2b,c>193 4 a +3268 193:2a,2b,c;1,0,0>193 4 a +3269 193:2a,2b,c;0,1,0>193 4 a +3270 193:2a,2b,c;1,1,0>193 4 a +3271 193:a-b,a+2b,c>194 3 a +3272 193:a-b,a+2b,c;1,0,0>194 3 a +3273 193:a-b,a+2b,c;1,1,0>194 3 a +3274 194:-a-b,a-b,c>63 3 a +3275 194:a,a+2b,c>63 3 a +3276 194:b,-2a-b,c>63 3 a +3277 194:a,b,c>163 2 a +3278 194:a,b,c>164 2 a +3279 194:a,b,c>176 2 a +3280 194:a,b,c>182 2 a +3281 194:a,b,c>186 2 a +3282 194:a,b,c;0,0,1/4>187 2 a +3283 194:a,b,c>190 2 a +3284 194:a-b,a+2b,c>193 3 a +3285 194:a-b,a+2b,c;1,0,0>193 3 a +3286 194:a-b,a+2b,c;1,1,0>193 3 a +3287 194:a,b,3c>194 3 a +3288 194:a,b,3c;0,0,1>194 3 a +3289 194:a,b,3c;0,0,2>194 3 a +3290 194:2a,2b,c>194 4 a +3291 194:2a,2b,c;1,0,0>194 4 a +3292 194:2a,2b,c;0,1,0>194 4 a +3293 194:2a,2b,c;1,1,0>194 4 a +3294 195:a,b,c>16 3 a +3295 195:a-b,b-c,a+b+c>146 4 a +3296 195:-a-b,b+c,-a+b-c>146 4 a +3297 195:a+b,-b+c,a-b-c>146 4 a +3298 195:-a+b,-b-c,-a-b+c>146 4 a +3299 195:2a,2b,2c>196 2 a +3300 195:2a,2b,2c;1/2,1/2,1/2>197 4 a +3301 195:2a,2b,2c;3/2,1/2,1/2>197 4 a +3302 195:2a,2b,2c;1/2,3/2,1/2>197 4 a +3303 195:2a,2b,2c;1/2,1/2,3/2>197 4 a +3304 195:2a,2b,2c>197 4 b +3305 195:2a,2b,2c;1,0,0>197 4 b +3306 195:2a,2b,2c;0,1,0>197 4 b +3307 195:2a,2b,2c;0,0,1>197 4 b +3308 195:2a,2b,2c;1/2,1/2,1/2>199 4 a +3309 195:2a,2b,2c;3/2,1/2,1/2>199 4 a +3310 195:2a,2b,2c;1/2,3/2,1/2>199 4 a +3311 195:2a,2b,2c;1/2,1/2,3/2>199 4 a +3312 195:2a,2b,2c>199 4 b +3313 195:2a,2b,2c;1,0,0>199 4 b +3314 195:2a,2b,2c;0,1,0>199 4 b +3315 195:2a,2b,2c;0,0,1>199 4 b +3316 196:a,b,c>22 3 a +3317 196:-1/2a+1/2b,-1/2b+1/2c,a+b+c>146 4 a +3318 196:1/2a+1/2b,-1/2b-1/2c,-a+b-c>146 4 a +3319 196:-1/2a-1/2b,1/2b-1/2c,a-b-c>146 4 a +3320 196:1/2a-1/2b,1/2b+1/2c,-a-b+c>146 4 a +3321 196:a,b,c;1/4,1/4,1/4>195 4 a +3322 196:a,b,c;1/4,3/4,3/4>195 4 a +3323 196:a,b,c;3/4,3/4,1/4>195 4 a +3324 196:a,b,c;3/4,1/4,3/4>195 4 a +3325 196:a,b,c>195 4 b +3326 196:a,b,c;1/2,0,1/2>195 4 b +3327 196:a,b,c;1/2,1/2,0>195 4 b +3328 196:a,b,c;0,1/2,1/2>195 4 b +3329 196:a,b,c>198 4 a +3330 196:a,b,c;1/2,1/2,0>198 4 a +3331 196:a,b,c;1/2,0,1/2>198 4 a +3332 196:a,b,c;0,1/2,1/2>198 4 a +3333 196:a,b,c;1/4,1/4,1/4>198 4 b +3334 196:a,b,c;3/4,1/4,3/4>198 4 b +3335 196:a,b,c;1/4,3/4,3/4>198 4 b +3336 196:a,b,c;3/4,3/4,1/4>198 4 b +3337 197:a,b,c>23 3 a +3338 197:-a+b,-b+c,1/2a+1/2b+1/2c>146 4 a +3339 197:a+b,-b-c,-1/2a+1/2b-1/2c>146 4 a +3340 197:-a-b,b-c,1/2a-1/2b-1/2c>146 4 a +3341 197:a-b,b+c,-1/2a-1/2b+1/2c>146 4 a +3342 197:a,b,c>195 2 a +3343 198:a,b,c>19 3 a +3344 198:a-b,b-c,a+b+c>146 4 a +3345 198:-a-b,b+c,-a+b-c;0,1/2,1/2>146 4 a +3346 198:a+b,-b+c,a-b-c;1/2,1/2,0>146 4 a +3347 198:-a+b,-b-c,-a-b+c;1/2,0,1/2>146 4 a +3348 199:a,b,c>24 3 a +3349 199:-a+b,-b+c,1/2a+1/2b+1/2c>146 4 a +3350 199:a+b,-b-c,-1/2a+1/2b-1/2c;0,1/2,1/2>146 4 a +3351 199:-a-b,b-c,1/2a-1/2b-1/2c;1/2,1/2,0>146 4 a +3352 199:a-b,b+c,-1/2a-1/2b+1/2c;1/2,0,1/2>146 4 a +3353 199:a,b,c>198 2 a +3354 200:a,b,c>47 3 a +3355 200:a-b,b-c,a+b+c>148 4 a +3356 200:-a-b,b+c,-a+b-c>148 4 a +3357 200:a+b,-b+c,a-b-c>148 4 a +3358 200:-a+b,-b-c,-a-b+c>148 4 a +3359 200:a,b,c>195 2 a +3360 200:2a,2b,2c;1/2,1/2,1/2>202 2 a +3361 200:2a,2b,2c>202 2 b +3362 200:2a,2b,2c;1/2,1/2,1/2>204 4 a +3363 200:2a,2b,2c;3/2,1/2,1/2>204 4 a +3364 200:2a,2b,2c;1/2,3/2,1/2>204 4 a +3365 200:2a,2b,2c;3/2,3/2,1/2>204 4 a +3366 200:2a,2b,2c>204 4 b +3367 200:2a,2b,2c;1,0,0>204 4 b +3368 200:2a,2b,2c;0,1,0>204 4 b +3369 200:2a,2b,2c;0,0,1>204 4 b +3370 200:2a,2b,2c;1/2,1/2,1/2>206 4 a +3371 200:2a,2b,2c;3/2,1/2,1/2>206 4 a +3372 200:2a,2b,2c;1/2,3/2,1/2>206 4 a +3373 200:2a,2b,2c;3/2,3/2,1/2>206 4 a +3374 200:2a,2b,2c>206 4 b +3375 200:2a,2b,2c;1,0,0>206 4 b +3376 200:2a,2b,2c;0,1,0>206 4 b +3377 200:2a,2b,2c;1,1,0>206 4 b +3378 201:a,b,c>48 3 a +3379 201:a-b,b-c,a+b+c>148 4 a +3380 201:-a-b,b+c,-a+b-c;1/2,0,1/2>148 4 a +3381 201:a+b,-b+c,a-b-c;0,1/2,1/2>148 4 a +3382 201:-a+b,-b-c,-a-b+c;1/2,1/2,0>148 4 a +3383 201:a,b,c;1/4,1/4,1/4>195 2 a +3384 201:2a,2b,2c;1/2,1/2,1/2>203 2 a +3385 201:2a,2b,2c>203 2 b +3386 202:a,b,c>69 3 a +3387 202:-1/2a+1/2b,-1/2b+1/2c,a+b+c>148 4 a +3388 202:1/2a+1/2b,-1/2b-1/2c,-a+b-c>148 4 a +3389 202:-1/2a-1/2b,1/2b-1/2c,a-b-c>148 4 a +3390 202:1/2a-1/2b,1/2b+1/2c,-a-b+c>148 4 a +3391 202:a,b,c>196 2 a +3392 202:a,b,c>200 4 a +3393 202:a,b,c;1/2,0,1/2>200 4 a +3394 202:a,b,c;1/2,1/2,0>200 4 a +3395 202:a,b,c;0,1/2,1/2>200 4 a +3396 202:a,b,c>201 4 a +3397 202:a,b,c;0,1/2,1/2>201 4 a +3398 202:a,b,c;1/2,1/2,0>201 4 a +3399 202:a,b,c;1/2,0,1/2>201 4 a +3400 202:a,b,c>205 4 a +3401 202:a,b,c;1/2,1/2,0>205 4 a +3402 202:a,b,c;1/2,0,1/2>205 4 a +3403 202:a,b,c;0,1/2,1/2>205 4 a +3404 202:-b,a,c;1/2,1/2,0>205 4 b +3405 202:-b,a,c;0,1/2,1/2>205 4 b +3406 202:-b,a,c;1/2,0,1/2>205 4 b +3407 202:-b,a,c>205 4 b +3408 203:a,b,c>70 3 a +3409 203:-1/2a+1/2b,-1/2b+1/2c,a+b+c>148 4 a +3410 203:1/2a+1/2b,-1/2b-1/2c,-a+b-c;1/4,0,1/4>148 4 a +3411 203:-1/2a-1/2b,1/2b-1/2c,a-b-c;0,1/4,1/4>148 4 a +3412 203:1/2a-1/2b,1/2b+1/2c,-a-b+c;1/4,1/4,0>148 4 a +3413 203:a,b,c;1/8,1/8,1/8>196 2 a +3414 204:a,b,c>71 3 a +3415 204:-a+b,-b+c,1/2a+1/2b+1/2c>148 4 a +3416 204:a+b,-b-c,-1/2a+1/2b-1/2c>148 4 a +3417 204:-a-b,b-c,1/2a-1/2b-1/2c>148 4 a +3418 204:a-b,b+c,-1/2a-1/2b+1/2c>148 4 a +3419 204:a,b,c>197 2 a +3420 204:a,b,c>200 2 a +3421 204:a,b,c;1/4,1/4,1/4>201 2 a +3422 205:a,b,c>61 3 a +3423 205:a-b,b-c,a+b+c>148 4 a +3424 205:-a-b,b+c,-a+b-c;0,1/2,1/2>148 4 a +3425 205:a+b,-b+c,a-b-c;1/2,1/2,0>148 4 a +3426 205:-a+b,-b-c,-a-b+c;1/2,0,1/2>148 4 a +3427 205:a,b,c>198 2 a +3428 206:a,b,c>73 3 a +3429 206:-a+b,-b+c,1/2a+1/2b+1/2c>148 4 a +3430 206:a+b,-b-c,-1/2a+1/2b-1/2c;0,1/2,1/2>148 4 a +3431 206:-a-b,b-c,1/2a-1/2b-1/2c;1/2,1/2,0>148 4 a +3432 206:a-b,b+c,-1/2a-1/2b+1/2c;1/2,0,1/2>148 4 a +3433 206:a,b,c>199 2 a +3434 206:-b,a,c;3/4,3/4,1/4>205 2 a +3435 206:a,b,c>205 2 b +3436 207:a,b,c>89 3 a +3437 207:b,c,a>89 3 a +3438 207:c,a,b>89 3 a +3439 207:a-b,b-c,a+b+c>155 4 a +3440 207:-a-b,b+c,-a+b-c>155 4 a +3441 207:a+b,-b+c,a-b-c>155 4 a +3442 207:-a+b,-b-c,-a-b+c>155 4 a +3443 207:a,b,c>195 2 a +3444 207:2a,2b,2c;1/2,1/2,1/2>209 2 a +3445 207:2a,2b,2c>209 2 b +3446 207:2a,2b,2c;1/2,1/2,1/2>211 4 a +3447 207:2a,2b,2c;3/2,3/2,1/2>211 4 a +3448 207:2a,2b,2c;3/2,1/2,1/2>211 4 a +3449 207:2a,2b,2c;1/2,3/2,1/2>211 4 a +3450 207:2a,2b,2c>211 4 b +3451 207:2a,2b,2c;1,1,0>211 4 b +3452 207:2a,2b,2c;1,0,0>211 4 b +3453 207:2a,2b,2c;0,1,0>211 4 b +3454 208:a,b,c;0,1/2,0>93 3 a +3455 208:b,c,a;0,0,1/2>93 3 a +3456 208:c,a,b;1/2,0,0>93 3 a +3457 208:a-b,b-c,a+b+c;1/4,1/4,1/4>155 4 a +3458 208:-a-b,b+c,-a+b-c;-1/4,1/4,-1/4>155 4 a +3459 208:a+b,-b+c,a-b-c;1/4,-1/4,-1/4>155 4 a +3460 208:-a+b,-b-c,-a-b+c;-1/4,-1/4,1/4>155 4 a +3461 208:a,b,c>195 2 a +3462 208:2a,2b,2c;1/2,1/2,1/2>210 2 a +3463 208:2a,2b,2c>210 2 b +3464 208:2a,2b,2c;1/2,1/2,1/2>214 4 a +3465 208:2a,2b,2c;3/2,3/2,1/2>214 4 a +3466 208:2a,2b,2c;3/2,1/2,1/2>214 4 a +3467 208:2a,2b,2c;1/2,3/2,1/2>214 4 a +3468 208:2a,2b,2c>214 4 b +3469 208:2a,2b,2c;1,1,0>214 4 b +3470 208:2a,2b,2c;1,0,0>214 4 b +3471 208:2a,2b,2c;0,1,0>214 4 b +3472 209:1/2a-1/2b,1/2a+1/2b,c>97 3 a +3473 209:1/2b-1/2c,1/2b+1/2c,a>97 3 a +3474 209:-1/2a+1/2c,1/2a+1/2c,b>97 3 a +3475 209:-1/2a+1/2b,-1/2b+1/2c,a+b+c>155 4 a +3476 209:1/2a+1/2b,-1/2b-1/2c,-a+b-c>155 4 a +3477 209:-1/2a-1/2b,1/2b-1/2c,a-b-c>155 4 a +3478 209:1/2a-1/2b,1/2b+1/2c,-a-b+c>155 4 a +3479 209:a,b,c>196 2 a +3480 209:a,b,c>207 4 a +3481 209:a,b,c;1/2,1/2,0>207 4 a +3482 209:a,b,c;0,1/2,1/2>207 4 a +3483 209:a,b,c;1/2,0,1/2>207 4 a +3484 209:a,b,c;1/4,1/4,1/4>208 4 a +3485 209:a,b,c;3/4,1/4,3/4>208 4 a +3486 209:a,b,c;1/4,3/4,3/4>208 4 a +3487 209:a,b,c;3/4,3/4,1/4>208 4 a +3488 210:1/2a-1/2b,1/2a+1/2b,c>98 3 a +3489 210:1/2b-1/2c,1/2b+1/2c,a>98 3 a +3490 210:-1/2a+1/2c,1/2a+1/2c,b>98 3 a +3491 210:-1/2a+1/2b,-1/2b+1/2c,a+b+c;1/8,1/8,1/8>155 4 a +3492 210:1/2a+1/2b,-1/2b-1/2c,-a+b-c;3/8,1/8,3/8>155 4 a +3493 210:-1/2a-1/2b,1/2b-1/2c,a-b-c;1/8,3/8,3/8>155 4 a +3494 210:1/2a-1/2b,1/2b+1/2c,-a-b+c;3/8,3/8,1/8>155 4 a +3495 210:a,b,c>196 2 a +3496 210:a,b,c>212 4 a +3497 210:a,b,c;1/2,0,1/2>212 4 a +3498 210:a,b,c;0,1/2,1/2>212 4 a +3499 210:a,b,c;1/2,1/2,0>212 4 a +3500 210:a,b,c;1/4,1/4,1/4>213 4 a +3501 210:a,b,c;3/4,3/4,1/4>213 4 a +3502 210:a,b,c;1/4,3/4,3/4>213 4 a +3503 210:a,b,c;3/4,1/4,3/4>213 4 a +3504 211:a,b,c>97 3 a +3505 211:b,c,a>97 3 a +3506 211:c,a,b>97 3 a +3507 211:-a+b,-b+c,1/2a+1/2b+1/2c>155 4 a +3508 211:a+b,-b-c,-1/2a+1/2b-1/2c>155 4 a +3509 211:-a-b,b-c,1/2a-1/2b-1/2c>155 4 a +3510 211:a-b,b+c,-1/2a-1/2b+1/2c>155 4 a +3511 211:a,b,c>197 2 a +3512 211:a,b,c>207 2 a +3513 211:a,b,c>208 2 a +3514 212:a,b,c;1/4,0,3/8>96 3 a +3515 212:b,c,a;3/8,1/4,0>96 3 a +3516 212:c,a,b;0,3/8,1/4>96 3 a +3517 212:a-b,b-c,a+b+c;1/8,1/8,1/8>155 4 a +3518 212:-a-b,b+c,-a+b-c;7/8,5/8,3/8>155 4 a +3519 212:a+b,-b+c,a-b-c;5/8,3/8,7/8>155 4 a +3520 212:-a+b,-b-c,-a-b+c;3/8,7/8,5/8>155 4 a +3521 212:a,b,c>198 2 a +3522 213:a,b,c;1/4,1/2,1/8>92 3 a +3523 213:b,c,a;1/8,1/4,1/2>92 3 a +3524 213:c,a,b;1/2,1/8,1/4>92 3 a +3525 213:a-b,b-c,a+b+c;3/8,3/8,3/8>155 4 a +3526 213:-a-b,b+c,-a+b-c;5/8,7/8,1/8>155 4 a +3527 213:a+b,-b+c,a-b-c;7/8,1/8,5/8>155 4 a +3528 213:-a+b,-b-c,-a-b+c;1/8,5/8,7/8>155 4 a +3529 213:a,b,c>198 2 a +3530 214:a,b,c;0,1/4,1/8>98 3 a +3531 214:b,c,a;1/8,0,1/4>98 3 a +3532 214:c,a,b;1/4,1/8,0>98 3 a +3533 214:-a+b,-b+c,1/2a+1/2b+1/2c;1/8,1/8,1/8>155 4 a +3534 214:a+b,-b-c,-1/2a+1/2b-1/2c;7/8,5/8,3/8>155 4 a +3535 214:-a-b,b-c,1/2a-1/2b-1/2c;5/8,3/8,7/8>155 4 a +3536 214:a-b,b+c,-1/2a-1/2b+1/2c;3/8,7/8,5/8>155 4 a +3537 214:a,b,c>199 2 a +3538 214:a,b,c>212 2 a +3539 214:a,b,c>213 2 a +3540 215:a,b,c>111 3 a +3541 215:b,c,a>111 3 a +3542 215:c,a,b>111 3 a +3543 215:a-b,b-c,a+b+c>160 4 a +3544 215:-a-b,b+c,-a+b-c>160 4 a +3545 215:a+b,-b+c,a-b-c>160 4 a +3546 215:-a+b,-b-c,-a-b+c>160 4 a +3547 215:a,b,c>195 2 a +3548 215:2a,2b,2c>216 2 a +3549 215:2a,2b,2c;1/2,1/2,1/2>217 4 a +3550 215:2a,2b,2c;3/2,3/2,1/2>217 4 a +3551 215:2a,2b,2c;3/2,1/2,1/2>217 4 a +3552 215:2a,2b,2c;1/2,3/2,1/2>217 4 a +3553 215:2a,2b,2c>217 4 b +3554 215:2a,2b,2c;1,1,0>217 4 b +3555 215:2a,2b,2c;1,0,0>217 4 b +3556 215:2a,2b,2c;0,1,0>217 4 b +3557 215:2a,2b,2c>219 2 a +3558 216:1/2a-1/2b,1/2a+1/2b,c>119 3 a +3559 216:1/2b-1/2c,1/2b+1/2c,a>119 3 a +3560 216:-1/2a+1/2c,1/2a+1/2c,b>119 3 a +3561 216:-1/2a+1/2b,-1/2b+1/2c,a+b+c>160 4 a +3562 216:1/2a+1/2b,-1/2b-1/2c,-a+b-c>160 4 a +3563 216:-1/2a-1/2b,1/2b-1/2c,a-b-c>160 4 a +3564 216:1/2a-1/2b,1/2b+1/2c,-a-b+c>160 4 a +3565 216:a,b,c>196 2 a +3566 216:a,b,c;1/4,1/4,1/4>215 4 a +3567 216:a,b,c;3/4,1/4,3/4>215 4 a +3568 216:a,b,c;1/4,3/4,3/4>215 4 a +3569 216:a,b,c;3/4,3/4,1/4>215 4 a +3570 216:a,b,c>215 4 b +3571 216:a,b,c;1/2,1/2,0>215 4 b +3572 216:a,b,c;0,1/2,1/2>215 4 b +3573 216:a,b,c;1/2,0,1/2>215 4 b +3574 217:a,b,c>121 3 a +3575 217:b,c,a>121 3 a +3576 217:c,a,b>121 3 a +3577 217:-a+b,-b+c,1/2a+1/2b+1/2c>160 4 a +3578 217:a+b,-b-c,-1/2a+1/2b-1/2c>160 4 a +3579 217:-a-b,b-c,1/2a-1/2b-1/2c>160 4 a +3580 217:a-b,b+c,-1/2a-1/2b+1/2c>160 4 a +3581 217:a,b,c>197 2 a +3582 217:a,b,c>215 2 a +3583 217:a,b,c>218 2 a +3584 218:a,b,c;0,1/2,1/4>112 3 a +3585 218:b,c,a;1/4,0,1/2>112 3 a +3586 218:c,a,b;1/2,1/4,0>112 3 a +3587 218:a-b,b-c,a+b+c>161 4 a +3588 218:-a-b,b+c,-a+b-c>161 4 a +3589 218:a+b,-b+c,a-b-c>161 4 a +3590 218:-a+b,-b-c,-a-b+c>161 4 a +3591 218:a,b,c>195 2 a +3592 218:2a,2b,2c;1/2,1/2,1/2>220 4 a +3593 218:2a,2b,2c;3/2,3/2,1/2>220 4 a +3594 218:2a,2b,2c;3/2,1/2,1/2>220 4 a +3595 218:2a,2b,2c;1/2,3/2,1/2>220 4 a +3596 218:2a,2b,2c>220 4 b +3597 218:2a,2b,2c;1,1,0>220 4 b +3598 218:2a,2b,2c;1,0,0>220 4 b +3599 218:2a,2b,2c;0,1,0>220 4 b +3600 219:1/2a-1/2b,1/2a+1/2b,c;0,0,1/4>120 3 a +3601 219:1/2b-1/2c,1/2b+1/2c,a;1/4,0,0>120 3 a +3602 219:-1/2a+1/2c,1/2a+1/2c,b;0,1/4,0>120 3 a +3603 219:-1/2a+1/2b,-1/2b+1/2c,a+b+c>161 4 a +3604 219:1/2a+1/2b,-1/2b-1/2c,-a+b-c>161 4 a +3605 219:-1/2a-1/2b,1/2b-1/2c,a-b-c>161 4 a +3606 219:1/2a-1/2b,1/2b+1/2c,-a-b+c>161 4 a +3607 219:a,b,c>196 2 a +3608 219:a,b,c;1/4,1/4,1/4>218 4 a +3609 219:a,b,c;3/4,1/4,3/4>218 4 a +3610 219:a,b,c;1/4,3/4,3/4>218 4 a +3611 219:a,b,c;3/4,3/4,1/4>218 4 a +3612 219:a,b,c>218 4 b +3613 219:a,b,c;1/2,1/2,0>218 4 b +3614 219:a,b,c;0,1/2,1/2>218 4 b +3615 219:a,b,c;1/2,0,1/2>218 4 b +3616 220:a,b,c;1/2,1/4,1/8>122 3 a +3617 220:b,c,a;1/8,1/2,1/4>122 3 a +3618 220:c,a,b;1/4,1/8,1/2>122 3 a +3619 220:-a+b,-b+c,1/2a+1/2b+1/2c>161 4 a +3620 220:a+b,-b-c,-1/2a+1/2b-1/2c;0,1/2,1/2>161 4 a +3621 220:-a-b,b-c,1/2a-1/2b-1/2c;1/2,1/2,0>161 4 a +3622 220:a-b,b+c,-1/2a-1/2b+1/2c;1/2,0,1/2>161 4 a +3623 220:a,b,c>199 2 a +3624 221:a,b,c>123 3 a +3625 221:b,c,a>123 3 a +3626 221:c,a,b>123 3 a +3627 221:a-b,b-c,a+b+c>166 4 a +3628 221:-a-b,b+c,-a+b-c>166 4 a +3629 221:a+b,-b+c,a-b-c>166 4 a +3630 221:-a+b,-b-c,-a-b+c>166 4 a +3631 221:a,b,c>200 2 a +3632 221:a,b,c>207 2 a +3633 221:a,b,c>215 2 a +3634 221:2a,2b,2c;1/2,1/2,1/2>225 2 a +3635 221:2a,2b,2c>225 2 b +3636 221:2a,2b,2c;1/2,1/2,1/2>226 2 a +3637 221:2a,2b,2c>226 2 b +3638 221:2a,2b,2c;1/2,1/2,1/2>229 4 a +3639 221:2a,2b,2c;3/2,3/2,1/2>229 4 a +3640 221:2a,2b,2c;3/2,1/2,1/2>229 4 a +3641 221:2a,2b,2c;1/2,3/2,1/2>229 4 a +3642 221:2a,2b,2c>229 4 b +3643 221:2a,2b,2c;1,1,0>229 4 b +3644 221:2a,2b,2c;1,0,0>229 4 b +3645 221:2a,2b,2c;0,1,0>229 4 b +3646 222:a,b,c>126 3 a +3647 222:b,c,a>126 3 a +3648 222:c,a,b>126 3 a +3649 222:a-b,b-c,a+b+c>167 4 a +3650 222:-a-b,b+c,-a+b-c;1/2,0,1/2>167 4 a +3651 222:a+b,-b+c,a-b-c;0,1/2,1/2>167 4 a +3652 222:-a+b,-b-c,-a-b+c;1/2,1/2,0>167 4 a +3653 222:a,b,c>201 2 a +3654 222:a,b,c;1/4,1/4,1/4>207 2 a +3655 222:a,b,c;1/4,1/4,1/4>218 2 a +3656 223:a,b,c;0,1/2,0>131 3 a +3657 223:b,c,a;0,0,1/2>131 3 a +3658 223:c,a,b;1/2,0,0>131 3 a +3659 223:a-b,b-c,a+b+c>167 4 a +3660 223:-a-b,b+c,-a+b-c>167 4 a +3661 223:a+b,-b+c,a-b-c>167 4 a +3662 223:-a+b,-b-c,-a-b+c>167 4 a +3663 223:a,b,c>200 2 a +3664 223:a,b,c>208 2 a +3665 223:a,b,c>218 2 a +3666 223:2a,2b,2c;1/2,1/2,1/2>230 4 a +3667 223:2a,2b,2c;3/2,3/2,1/2>230 4 a +3668 223:2a,2b,2c;3/2,1/2,1/2>230 4 a +3669 223:2a,2b,2c;1/2,3/2,1/2>230 4 a +3670 223:2a,2b,2c>230 4 b +3671 223:2a,2b,2c;1,1,0>230 4 b +3672 223:2a,2b,2c;1,0,0>230 4 b +3673 223:2a,2b,2c;0,1,0>230 4 b +3674 224:a,b,c;0,1/2,0>134 3 a +3675 224:b,c,a;0,0,1/2>134 3 a +3676 224:c,a,b;1/2,0,0>134 3 a +3677 224:a-b,b-c,a+b+c>166 4 a +3678 224:-a-b,b+c,-a+b-c;1/2,0,1/2>166 4 a +3679 224:a+b,-b+c,a-b-c;0,1/2,1/2>166 4 a +3680 224:-a+b,-b-c,-a-b+c;1/2,1/2,0>166 4 a +3681 224:a,b,c>201 2 a +3682 224:a,b,c;1/4,1/4,1/4>208 2 a +3683 224:a,b,c;1/4,1/4,1/4>215 2 a +3684 224:2a,2b,2c;1/2,1/2,1/2>227 2 a +3685 224:2a,2b,2c>227 2 b +3686 224:2a,2b,2c;1/2,1/2,1/2>228 2 a +3687 224:2a,2b,2c>228 2 b +3688 225:1/2a-1/2b,1/2a+1/2b,c>139 3 a +3689 225:1/2b-1/2c,1/2b+1/2c,a>139 3 a +3690 225:-1/2a+1/2c,1/2a+1/2c,b>139 3 a +3691 225:-1/2a+1/2b,-1/2b+1/2c,a+b+c>166 4 a +3692 225:1/2a+1/2b,-1/2b-1/2c,-a+b-c>166 4 a +3693 225:-1/2a-1/2b,1/2b-1/2c,a-b-c>166 4 a +3694 225:1/2a-1/2b,1/2b+1/2c,-a-b+c>166 4 a +3695 225:a,b,c>202 2 a +3696 225:a,b,c>209 2 a +3697 225:a,b,c>216 2 a +3698 225:a,b,c>221 4 a +3699 225:a,b,c;1/2,1/2,0>221 4 a +3700 225:a,b,c;0,1/2,1/2>221 4 a +3701 225:a,b,c;1/2,0,1/2>221 4 a +3702 225:a,b,c>224 4 a +3703 225:a,b,c;1/2,0,1/2>224 4 a +3704 225:a,b,c;0,1/2,1/2>224 4 a +3705 225:a,b,c;1/2,1/2,0>224 4 a +3706 226:1/2a-1/2b,1/2a+1/2b,c;1/4,1/4,0>140 3 a +3707 226:1/2b-1/2c,1/2b+1/2c,a;0,1/4,1/4>140 3 a +3708 226:-1/2a+1/2c,1/2a+1/2c,b;1/4,0,1/4>140 3 a +3709 226:-1/2a+1/2b,-1/2b+1/2c,a+b+c>167 4 a +3710 226:1/2a+1/2b,-1/2b-1/2c,-a+b-c>167 4 a +3711 226:-1/2a-1/2b,1/2b-1/2c,a-b-c>167 4 a +3712 226:1/2a-1/2b,1/2b+1/2c,-a-b+c>167 4 a +3713 226:a,b,c>202 2 a +3714 226:a,b,c;1/4,1/4,1/4>209 2 a +3715 226:a,b,c>219 2 a +3716 226:a,b,c>222 4 a +3717 226:a,b,c;1/2,0,1/2>222 4 a +3718 226:a,b,c;0,1/2,1/2>222 4 a +3719 226:a,b,c;1/2,1/2,0>222 4 a +3720 226:a,b,c>223 4 a +3721 226:a,b,c;1/2,1/2,0>223 4 a +3722 226:a,b,c;0,1/2,1/2>223 4 a +3723 226:a,b,c;1/2,0,1/2>223 4 a +3724 227:1/2a-1/2b,1/2a+1/2b,c;1/4,1/4,0>141 3 a +3725 227:1/2b-1/2c,1/2b+1/2c,a;0,1/4,1/4>141 3 a +3726 227:-1/2a+1/2c,1/2a+1/2c,b;1/4,0,1/4>141 3 a +3727 227:-1/2a+1/2b,-1/2b+1/2c,a+b+c>166 4 a +3728 227:1/2a+1/2b,-1/2b-1/2c,-a+b-c;1/4,0,1/4>166 4 a +3729 227:-1/2a-1/2b,1/2b-1/2c,a-b-c;0,1/4,1/4>166 4 a +3730 227:1/2a-1/2b,1/2b+1/2c,-a-b+c;1/4,1/4,0>166 4 a +3731 227:a,b,c>203 2 a +3732 227:a,b,c;3/8,3/8,3/8>210 2 a +3733 227:a,b,c;1/8,1/8,1/8>216 2 a +3734 228:1/2a-1/2b,1/2a+1/2b,c>142 3 a +3735 228:1/2b-1/2c,1/2b+1/2c,a>142 3 a +3736 228:-1/2a+1/2c,1/2a+1/2c,b>142 3 a +3737 228:-1/2a+1/2b,-1/2b+1/2c,a+b+c>167 4 a +3738 228:1/2a+1/2b,-1/2b-1/2c,-a+b-c;1/4,0,1/4>167 4 a +3739 228:-1/2a-1/2b,1/2b-1/2c,a-b-c;0,1/4,1/4>167 4 a +3740 228:1/2a-1/2b,1/2b+1/2c,-a-b+c;1/4,1/4,0>167 4 a +3741 228:a,b,c>203 2 a +3742 228:a,b,c;1/8,1/8,1/8>210 2 a +3743 228:a,b,c;1/8,1/8,1/8>219 2 a +3744 229:a,b,c>139 3 a +3745 229:b,c,a>139 3 a +3746 229:c,a,b>139 3 a +3747 229:-a+b,-b+c,1/2a+1/2b+1/2c>166 4 a +3748 229:a+b,-b-c,-1/2a+1/2b-1/2c>166 4 a +3749 229:-a-b,b-c,1/2a-1/2b-1/2c>166 4 a +3750 229:a-b,b+c,-1/2a-1/2b+1/2c>166 4 a +3751 229:a,b,c>204 2 a +3752 229:a,b,c>211 2 a +3753 229:a,b,c>217 2 a +3754 229:a,b,c>221 2 a +3755 229:a,b,c;1/4,1/4,1/4>222 2 a +3756 229:a,b,c>223 2 a +3757 229:a,b,c;1/4,1/4,1/4>224 2 a +3758 230:a,b,c>142 3 a +3759 230:b,c,a>142 3 a +3760 230:c,a,b>142 3 a +3761 230:-a+b,-b+c,1/2a+1/2b+1/2c>167 4 a +3762 230:a+b,-b-c,-1/2a+1/2b-1/2c;0,1/2,1/2>167 4 a +3763 230:-a-b,b-c,1/2a-1/2b-1/2c;1/2,1/2,0>167 4 a +3764 230:a-b,b+c,-1/2a-1/2b+1/2c;1/2,0,1/2>167 4 a +3765 230:a,b,c>206 2 a +3766 230:a,b,c>214 2 a +3767 230:a,b,c>220 2 a diff --git a/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/ita_settings.tab b/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/ita_settings.tab new file mode 100755 index 000000000000..52eb6f334e2e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JS/sg/txt/ita_settings.tab @@ -0,0 +1,612 @@ +sg trm hm xyz +1 a,b,c P 1 x,y,z +2 a,b,c P -1 x,y,z;-x,-y,-z +3 a,b,c P 1 2 1 x,y,z;-x,y,-z +3 c,a,b P 1 1 2 x,y,z;-x,-y,z +3 b,c,a P 2 1 1 x,y,z;x,-y,-z +4 a,b,c P 1 21 1 x,y,z;-x,y+1/2,-z +4 c,a,b P 1 1 21 x,y,z;-x,-y,z+1/2 +4 b,c,a P 21 1 1 x,y,z;x+1/2,-y,-z +5 a,b,c C 1 2 1 x,y,z;-x,y,-z;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z +5 -a-c,b,a A 1 2 1 x,y,z;-x,y,-z;x,y+1/2,z+1/2;-x,y+1/2,-z+1/2 +5 c,b,-a-c I 1 2 1 x,y,z;-x,y,-z;x-1/2,y+1/2,z-1/2;-x-1/2,y+1/2,-z-1/2 +5 c,a,b A 1 1 2 x,y,z;-x,-y,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2 +5 a,-a-c,b B 1 1 2 x,y,z;-x,-y,z;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2 +5 -a-c,c,b I 1 1 2 x,y,z;-x,-y,z;x-1/2,y-1/2,z+1/2;-x-1/2,-y-1/2,z+1/2 +5 b,c,a B 2 1 1 x,y,z;x,-y,-z;x+1/2,y,z+1/2;x+1/2,-y,-z+1/2 +5 b,a,-a-c C 2 1 1 x,y,z;x,-y,-z;x+1/2,y+1/2,z;x+1/2,-y+1/2,-z +5 b,-a-c,c I 2 1 1 x,y,z;x,-y,-z;x+1/2,y-1/2,z-1/2;x+1/2,-y-1/2,-z-1/2 +6 a,b,c P 1 m 1 x,y,z;x,-y,z +6 c,a,b P 1 1 m x,y,z;x,y,-z +6 b,c,a P m 1 1 x,y,z;-x,y,z +7 a,b,c P 1 c 1 x,y,z;x,-y,z+1/2 +7 -a-c,b,a P 1 n 1 x,y,z;x-1/2,-y,z-1/2 +7 c,b,-a-c P 1 a 1 x,y,z;x+1/2,-y,z +7 c,a,b P 1 1 a x,y,z;x+1/2,y,-z +7 a,-a-c,b P 1 1 n x,y,z;x-1/2,y-1/2,-z +7 -a-c,c,b P 1 1 b x,y,z;x,y+1/2,-z +7 b,c,a P b 1 1 x,y,z;-x,y+1/2,z +7 b,a,-a-c P n 1 1 x,y,z;-x,y-1/2,z-1/2 +7 b,-a-c,c P c 1 1 x,y,z;-x,y,z+1/2 +8 a,b,c C 1 m 1 x,y,z;x,-y,z;x+1/2,y+1/2,z;x+1/2,-y+1/2,z +8 -a-c,b,a A 1 m 1 x,y,z;x,-y,z;x,y+1/2,z+1/2;x,-y+1/2,z+1/2 +8 c,b,-a-c I 1 m 1 x,y,z;x,-y,z;x-1/2,y+1/2,z-1/2;x-1/2,-y+1/2,z-1/2 +8 c,a,b A 1 1 m x,y,z;x,y,-z;x,y+1/2,z+1/2;x,y+1/2,-z+1/2 +8 a,-a-c,b B 1 1 m x,y,z;x,y,-z;x+1/2,y,z+1/2;x+1/2,y,-z+1/2 +8 -a-c,c,b I 1 1 m x,y,z;x,y,-z;x-1/2,y-1/2,z+1/2;x-1/2,y-1/2,-z+1/2 +8 b,c,a B m 1 1 x,y,z;-x,y,z;x+1/2,y,z+1/2;-x+1/2,y,z+1/2 +8 b,a,-a-c C m 1 1 x,y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,y+1/2,z +8 b,-a-c,c I m 1 1 x,y,z;-x,y,z;x+1/2,y-1/2,z-1/2;-x+1/2,y-1/2,z-1/2 +9 a,b,c C 1 c 1 x,y,z;x,-y,z+1/2;x+1/2,y+1/2,z;x+1/2,-y+1/2,z+1/2 +9 -a-c,b,a A 1 n 1 x,y,z;x-1/2,-y,z-1/2;x,y+1/2,z+1/2;x-1/2,-y+1/2,z +9 c,b,-a-c I 1 a 1 x,y,z;x+1/2,-y,z;x-1/2,y+1/2,z-1/2;x,-y+1/2,z-1/2 +9 c,-b,a A 1 a 1 x,y,z;x+1/2,-y,z;x,y-1/2,z+1/2;x+1/2,-y-1/2,z+1/2 +9 a,-b,-a-c C 1 n 1 x,y,z;x-1/2,-y,z-1/2;x+1/2,y-1/2,z;x,-y-1/2,z-1/2 +9 -a-c,-b,c I 1 c 1 x,y,z;x,-y,z+1/2;x-1/2,y-1/2,z-1/2;x-1/2,-y-1/2,z +9 c,a,b A 1 1 a x,y,z;x+1/2,y,-z;x,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2 +9 a,-a-c,b B 1 1 n x,y,z;x-1/2,y-1/2,-z;x+1/2,y,z+1/2;x,y-1/2,-z+1/2 +9 -a-c,c,b I 1 1 b x,y,z;x,y+1/2,-z;x-1/2,y-1/2,z+1/2;x-1/2,y,-z+1/2 +9 a,c,-b B 1 1 b x,y,z;x,y+1/2,-z;x+1/2,y,z-1/2;x+1/2,y+1/2,-z-1/2 +9 -a-c,a,-b A 1 1 n x,y,z;x-1/2,y-1/2,-z;x,y+1/2,z-1/2;x-1/2,y,-z-1/2 +9 c,-a-c,-b I 1 1 a x,y,z;x+1/2,y,-z;x-1/2,y-1/2,z-1/2;x,y-1/2,-z-1/2 +9 b,c,a B b 1 1 x,y,z;-x,y+1/2,z;x+1/2,y,z+1/2;-x+1/2,y+1/2,z+1/2 +9 b,a,-a-c C n 1 1 x,y,z;-x,y-1/2,z-1/2;x+1/2,y+1/2,z;-x+1/2,y,z-1/2 +9 b,-a-c,c I c 1 1 x,y,z;-x,y,z+1/2;x+1/2,y-1/2,z-1/2;-x+1/2,y-1/2,z +9 -b,a,c C c 1 1 x,y,z;-x,y,z+1/2;x-1/2,y+1/2,z;-x-1/2,y+1/2,z+1/2 +9 -b,-a-c,a B n 1 1 x,y,z;-x,y-1/2,z-1/2;x-1/2,y,z+1/2;-x-1/2,y-1/2,z +9 -b,c,-a-c I b 1 1 x,y,z;-x,y+1/2,z;x-1/2,y-1/2,z-1/2;-x-1/2,y,z-1/2 +10 a,b,c P 1 2/m 1 x,y,z;-x,y,-z;-x,-y,-z;x,-y,z +10 c,a,b P 1 1 2/m x,y,z;-x,-y,z;-x,-y,-z;x,y,-z +10 b,c,a P 2/m 1 1 x,y,z;x,-y,-z;-x,-y,-z;-x,y,z +11 a,b,c P 1 21/m 1 x,y,z;-x,y+1/2,-z;-x,-y,-z;x,-y+1/2,z +11 c,a,b P 1 1 21/m x,y,z;-x,-y,z+1/2;-x,-y,-z;x,y,-z+1/2 +11 b,c,a P 21/m 1 1 x,y,z;x+1/2,-y,-z;-x,-y,-z;-x+1/2,y,z +12 a,b,c C 1 2/m 1 x,y,z;-x,y,-z;-x,-y,-z;x,-y,z;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,-y+1/2,z +12 -a-c,b,a A 1 2/m 1 x,y,z;-x,y,-z;-x,-y,-z;x,-y,z;x,y+1/2,z+1/2;-x,y+1/2,-z+1/2;-x,-y+1/2,-z+1/2;x,-y+1/2,z+1/2 +12 c,b,-a-c I 1 2/m 1 x,y,z;-x,y,-z;-x,-y,-z;x,-y,z;x-1/2,y+1/2,z-1/2;-x-1/2,y+1/2,-z-1/2;-x-1/2,-y+1/2,-z-1/2;x-1/2,-y+1/2,z-1/2 +12 c,a,b A 1 1 2/m x,y,z;-x,-y,z;-x,-y,-z;x,y,-z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2 +12 a,-a-c,b B 1 1 2/m x,y,z;-x,-y,z;-x,-y,-z;x,y,-z;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,-y,-z+1/2;x+1/2,y,-z+1/2 +12 -a-c,c,b I 1 1 2/m x,y,z;-x,-y,z;-x,-y,-z;x,y,-z;x-1/2,y-1/2,z+1/2;-x-1/2,-y-1/2,z+1/2;-x-1/2,-y-1/2,-z+1/2;x-1/2,y-1/2,-z+1/2 +12 b,c,a B 2/m 1 1 x,y,z;x,-y,-z;-x,-y,-z;-x,y,z;x+1/2,y,z+1/2;x+1/2,-y,-z+1/2;-x+1/2,-y,-z+1/2;-x+1/2,y,z+1/2 +12 b,a,-a-c C 2/m 1 1 x,y,z;x,-y,-z;-x,-y,-z;-x,y,z;x+1/2,y+1/2,z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;-x+1/2,y+1/2,z +12 b,-a-c,c I 2/m 1 1 x,y,z;x,-y,-z;-x,-y,-z;-x,y,z;x+1/2,y-1/2,z-1/2;x+1/2,-y-1/2,-z-1/2;-x+1/2,-y-1/2,-z-1/2;-x+1/2,y-1/2,z-1/2 +13 a,b,c P 1 2/c 1 x,y,z;-x,y,-z+1/2;-x,-y,-z;x,-y,z+1/2 +13 -a-c,b,a P 1 2/n 1 x,y,z;-x-1/2,y,-z-1/2;-x,-y,-z;x-1/2,-y,z-1/2 +13 c,b,-a-c P 1 2/a 1 x,y,z;-x+1/2,y,-z;-x,-y,-z;x+1/2,-y,z +13 c,a,b P 1 1 2/a x,y,z;-x+1/2,-y,z;-x,-y,-z;x+1/2,y,-z +13 a,-a-c,b P 1 1 2/n x,y,z;-x-1/2,-y-1/2,z;-x,-y,-z;x-1/2,y-1/2,-z +13 -a-c,c,b P 1 1 2/b x,y,z;-x,-y+1/2,z;-x,-y,-z;x,y+1/2,-z +13 b,c,a P 2/b 1 1 x,y,z;x,-y+1/2,-z;-x,-y,-z;-x,y+1/2,z +13 b,a,-a-c P 2/n 1 1 x,y,z;x,-y-1/2,-z-1/2;-x,-y,-z;-x,y-1/2,z-1/2 +13 b,-a-c,c P 2/c 1 1 x,y,z;x,-y,-z+1/2;-x,-y,-z;-x,y,z+1/2 +14 a,b,c P 1 21/c 1 x,y,z;-x,y+1/2,-z+1/2;-x,-y,-z;x,-y+1/2,z+1/2 +14 -a-c,b,a P 1 21/n 1 x,y,z;-x-1/2,y+1/2,-z-1/2;-x,-y,-z;x-1/2,-y+1/2,z-1/2 +14 c,b,-a-c P 1 21/a 1 x,y,z;-x+1/2,y+1/2,-z;-x,-y,-z;x+1/2,-y+1/2,z +14 c,a,b P 1 1 21/a x,y,z;-x+1/2,-y,z+1/2;-x,-y,-z;x+1/2,y,-z+1/2 +14 a,-a-c,b P 1 1 21/n x,y,z;-x-1/2,-y-1/2,z+1/2;-x,-y,-z;x-1/2,y-1/2,-z+1/2 +14 -a-c,c,b P 1 1 21/b x,y,z;-x,-y+1/2,z+1/2;-x,-y,-z;x,y+1/2,-z+1/2 +14 b,c,a P 21/b 1 1 x,y,z;x+1/2,-y+1/2,-z;-x,-y,-z;-x+1/2,y+1/2,z +14 b,a,-a-c P 21/n 1 1 x,y,z;x+1/2,-y-1/2,-z-1/2;-x,-y,-z;-x+1/2,y-1/2,z-1/2 +14 b,-a-c,c P 21/c 1 1 x,y,z;x+1/2,-y,-z+1/2;-x,-y,-z;-x+1/2,y,z+1/2 +15 a,b,c C 1 2/c 1 x,y,z;-x,y,-z+1/2;-x,-y,-z;x,-y,z+1/2;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;x+1/2,-y+1/2,z+1/2 +15 -a-c,b,a A 1 2/n 1 x,y,z;-x-1/2,y,-z-1/2;-x,-y,-z;x-1/2,-y,z-1/2;x,y+1/2,z+1/2;-x-1/2,y+1/2,-z;-x,-y+1/2,-z+1/2;x-1/2,-y+1/2,z +15 c,b,-a-c I 1 2/a 1 x,y,z;-x+1/2,y,-z;-x,-y,-z;x+1/2,-y,z;x-1/2,y+1/2,z-1/2;-x,y+1/2,-z-1/2;-x-1/2,-y+1/2,-z-1/2;x,-y+1/2,z-1/2 +15 c,-b,a A 1 2/a 1 x,y,z;-x+1/2,y,-z;-x,-y,-z;x+1/2,-y,z;x,y-1/2,z+1/2;-x+1/2,y-1/2,-z+1/2;-x,-y-1/2,-z+1/2;x+1/2,-y-1/2,z+1/2 +15 a,-b,-a-c C 1 2/n 1 x,y,z;-x-1/2,y,-z-1/2;-x,-y,-z;x-1/2,-y,z-1/2;x+1/2,y-1/2,z;-x,y-1/2,-z-1/2;-x+1/2,-y-1/2,-z;x,-y-1/2,z-1/2 +15 -a-c,-b,c I 1 2/c 1 x,y,z;-x,y,-z+1/2;-x,-y,-z;x,-y,z+1/2;x-1/2,y-1/2,z-1/2;-x-1/2,y-1/2,-z;-x-1/2,-y-1/2,-z-1/2;x-1/2,-y-1/2,z +15 c,a,b A 1 1 2/a x,y,z;-x+1/2,-y,z;-x,-y,-z;x+1/2,y,-z;x,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2 +15 a,-a-c,b B 1 1 2/n x,y,z;-x-1/2,-y-1/2,z;-x,-y,-z;x-1/2,y-1/2,-z;x+1/2,y,z+1/2;-x,-y-1/2,z+1/2;-x+1/2,-y,-z+1/2;x,y-1/2,-z+1/2 +15 -a-c,c,b I 1 1 2/b x,y,z;-x,-y+1/2,z;-x,-y,-z;x,y+1/2,-z;x-1/2,y-1/2,z+1/2;-x-1/2,-y,z+1/2;-x-1/2,-y-1/2,-z+1/2;x-1/2,y,-z+1/2 +15 a,c,-b B 1 1 2/b x,y,z;-x,-y+1/2,z;-x,-y,-z;x,y+1/2,-z;x+1/2,y,z-1/2;-x+1/2,-y+1/2,z-1/2;-x+1/2,-y,-z-1/2;x+1/2,y+1/2,-z-1/2 +15 -a-c,a,-b A 1 1 2/n x,y,z;-x-1/2,-y-1/2,z;-x,-y,-z;x-1/2,y-1/2,-z;x,y+1/2,z-1/2;-x-1/2,-y,z-1/2;-x,-y+1/2,-z-1/2;x-1/2,y,-z-1/2 +15 c,-a-c,-b I 1 1 2/a x,y,z;-x+1/2,-y,z;-x,-y,-z;x+1/2,y,-z;x-1/2,y-1/2,z-1/2;-x,-y-1/2,z-1/2;-x-1/2,-y-1/2,-z-1/2;x,y-1/2,-z-1/2 +15 b,c,a B 2/b 1 1 x,y,z;x,-y+1/2,-z;-x,-y,-z;-x,y+1/2,z;x+1/2,y,z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y,-z+1/2;-x+1/2,y+1/2,z+1/2 +15 b,a,-a-c C 2/n 1 1 x,y,z;x,-y-1/2,-z-1/2;-x,-y,-z;-x,y-1/2,z-1/2;x+1/2,y+1/2,z;x+1/2,-y,-z-1/2;-x+1/2,-y+1/2,-z;-x+1/2,y,z-1/2 +15 b,-a-c,c I 2/c 1 1 x,y,z;x,-y,-z+1/2;-x,-y,-z;-x,y,z+1/2;x+1/2,y-1/2,z-1/2;x+1/2,-y-1/2,-z;-x+1/2,-y-1/2,-z-1/2;-x+1/2,y-1/2,z +15 -b,a,c C 2/c 1 1 x,y,z;x,-y,-z+1/2;-x,-y,-z;-x,y,z+1/2;x-1/2,y+1/2,z;x-1/2,-y+1/2,-z+1/2;-x-1/2,-y+1/2,-z;-x-1/2,y+1/2,z+1/2 +15 -b,-a-c,a B 2/n 1 1 x,y,z;x,-y-1/2,-z-1/2;-x,-y,-z;-x,y-1/2,z-1/2;x-1/2,y,z+1/2;x-1/2,-y-1/2,-z;-x-1/2,-y,-z+1/2;-x-1/2,y-1/2,z +15 -b,c,-a-c I 2/b 1 1 x,y,z;x,-y+1/2,-z;-x,-y,-z;-x,y+1/2,z;x-1/2,y-1/2,z-1/2;x-1/2,-y,-z-1/2;-x-1/2,-y-1/2,-z-1/2;-x-1/2,y,z-1/2 +16 a,b,c P 2 2 2 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z +17 a,b,c P 2 2 21 x,y,z;-x,-y,z+1/2;-x,y,-z+1/2;x,-y,-z +17 c,a,b P 21 2 2 x,y,z;x+1/2,-y,-z;-x+1/2,-y,z;-x,y,-z +17 b,c,a P 2 21 2 x,y,z;-x,y+1/2,-z;x,-y+1/2,-z;-x,-y,z +18 a,b,c P 21 21 2 x,y,z;-x,-y,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +18 c,a,b P 2 21 21 x,y,z;x,-y,-z;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2 +18 b,c,a P 21 2 21 x,y,z;-x,y,-z;x+1/2,-y,-z+1/2;-x+1/2,-y,z+1/2 +19 a,b,c P 21 21 21 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z +20 a,b,c C 2 2 21 x,y,z;-x,-y,z+1/2;-x,y,-z+1/2;x,-y,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z +20 c,a,b A 21 2 2 x,y,z;x+1/2,-y,-z;-x+1/2,-y,z;-x,y,-z;x,y+1/2,z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,z+1/2;-x,y+1/2,-z+1/2 +20 b,c,a B 2 21 2 x,y,z;-x,y+1/2,-z;x,-y+1/2,-z;-x,-y,z;x+1/2,y,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y,z+1/2 +21 a,b,c C 2 2 2 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +21 c,a,b A 2 2 2 x,y,z;x,-y,-z;-x,-y,z;-x,y,-z;x,y+1/2,z+1/2;x,-y+1/2,-z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2 +21 b,c,a B 2 2 2 x,y,z;-x,y,-z;x,-y,-z;-x,-y,z;x+1/2,y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;-x+1/2,-y,z+1/2 +22 a,b,c F 2 2 2 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +23 a,b,c I 2 2 2 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2 +24 a,b,c I 21 21 21 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-x+1/2,y,-z;x,-y,-z+1/2 +25 a,b,c P m m 2 x,y,z;-x,-y,z;x,-y,z;-x,y,z +25 c,a,b P 2 m m x,y,z;x,-y,-z;x,y,-z;x,-y,z +25 b,c,a P m 2 m x,y,z;-x,y,-z;-x,y,z;x,y,-z +26 a,b,c P m c 21 x,y,z;-x,-y,z+1/2;x,-y,z+1/2;-x,y,z +26 b,a,-c P c m 21 x,y,z;-x,-y,z-1/2;-x,y,z-1/2;x,-y,z +26 c,a,b P 21 m a x,y,z;x+1/2,-y,-z;x+1/2,y,-z;x,-y,z +26 -c,b,a P 21 a m x,y,z;x-1/2,-y,-z;x-1/2,-y,z;x,y,-z +26 b,c,a P b 21 m x,y,z;-x,y+1/2,-z;-x,y+1/2,z;x,y,-z +26 a,-c,b P m 21 b x,y,z;-x,y-1/2,-z;x,y-1/2,-z;-x,y,z +27 a,b,c P c c 2 x,y,z;-x,-y,z;x,-y,z+1/2;-x,y,z+1/2 +27 c,a,b P 2 a a x,y,z;x,-y,-z;x+1/2,y,-z;x+1/2,-y,z +27 b,c,a P b 2 b x,y,z;-x,y,-z;-x,y+1/2,z;x,y+1/2,-z +28 a,b,c P m a 2 x,y,z;-x,-y,z;x+1/2,-y,z;-x+1/2,y,z +28 b,a,-c P b m 2 x,y,z;-x,-y,z;-x,y+1/2,z;x,-y+1/2,z +28 c,a,b P 2 m b x,y,z;x,-y,-z;x,y+1/2,-z;x,-y+1/2,z +28 -c,b,a P 2 c m x,y,z;x,-y,-z;x,-y,z+1/2;x,y,-z+1/2 +28 b,c,a P c 2 m x,y,z;-x,y,-z;-x,y,z+1/2;x,y,-z+1/2 +28 a,-c,b P m 2 a x,y,z;-x,y,-z;x+1/2,y,-z;-x+1/2,y,z +29 a,b,c P c a 21 x,y,z;-x,-y,z+1/2;x+1/2,-y,z;-x+1/2,y,z+1/2 +29 b,a,-c P b c 21 x,y,z;-x,-y,z-1/2;-x,y+1/2,z;x,-y+1/2,z-1/2 +29 c,a,b P 21 a b x,y,z;x+1/2,-y,-z;x,y+1/2,-z;x+1/2,-y+1/2,z +29 -c,b,a P 21 c a x,y,z;x-1/2,-y,-z;x,-y,z+1/2;x-1/2,y,-z+1/2 +29 b,c,a P c 21 b x,y,z;-x,y+1/2,-z;-x,y,z+1/2;x,y+1/2,-z+1/2 +29 a,-c,b P b 21 a x,y,z;-x,y-1/2,-z;x+1/2,y,-z;-x+1/2,y-1/2,z +30 a,b,c P n c 2 x,y,z;-x,-y,z;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2 +30 b,a,-c P c n 2 x,y,z;-x,-y,z;-x+1/2,y,z-1/2;x+1/2,-y,z-1/2 +30 c,a,b P 2 n a x,y,z;x,-y,-z;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2 +30 -c,b,a P 2 a n x,y,z;x,-y,-z;x-1/2,-y+1/2,z;x-1/2,y+1/2,-z +30 b,c,a P b 2 n x,y,z;-x,y,-z;-x+1/2,y+1/2,z;x+1/2,y+1/2,-z +30 a,-c,b P n 2 b x,y,z;-x,y,-z;x,y-1/2,-z+1/2;-x,y-1/2,z+1/2 +31 a,b,c P m n 21 x,y,z;-x+1/2,-y,z+1/2;x+1/2,-y,z+1/2;-x,y,z +31 b,a,-c P n m 21 x,y,z;-x,-y+1/2,z-1/2;-x,y+1/2,z-1/2;x,-y,z +31 c,a,b P 21 m n x,y,z;x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x,-y,z +31 -c,b,a P 21 n m x,y,z;x-1/2,-y,-z+1/2;x-1/2,-y,z+1/2;x,y,-z +31 b,c,a P n 21 m x,y,z;-x,y+1/2,-z+1/2;-x,y+1/2,z+1/2;x,y,-z +31 a,-c,b P m 21 n x,y,z;-x+1/2,y-1/2,-z;x+1/2,y-1/2,-z;-x,y,z +32 a,b,c P b a 2 x,y,z;-x,-y,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +32 c,a,b P 2 c b x,y,z;x,-y,-z;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2 +32 b,c,a P c 2 a x,y,z;-x,y,-z;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2 +33 a,b,c P n a 21 x,y,z;-x,-y,z+1/2;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z+1/2 +33 b,a,-c P b n 21 x,y,z;-x,-y,z-1/2;-x+1/2,y+1/2,z;x+1/2,-y+1/2,z-1/2 +33 c,a,b P 21 n b x,y,z;x+1/2,-y,-z;x,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2 +33 -c,b,a P 21 c n x,y,z;x-1/2,-y,-z;x,-y+1/2,z+1/2;x-1/2,y+1/2,-z+1/2 +33 b,c,a P c 21 n x,y,z;-x,y+1/2,-z;-x+1/2,y,z+1/2;x+1/2,y+1/2,-z+1/2 +33 a,-c,b P n 21 a x,y,z;-x,y-1/2,-z;x+1/2,y,-z+1/2;-x+1/2,y-1/2,z+1/2 +34 a,b,c P n n 2 x,y,z;-x,-y,z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +34 c,a,b P 2 n n x,y,z;x,-y,-z;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2 +34 b,c,a P n 2 n x,y,z;-x,y,-z;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2 +35 a,b,c C m m 2 x,y,z;-x,-y,z;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +35 c,a,b A 2 m m x,y,z;x,-y,-z;x,y,-z;x,-y,z;x,y+1/2,z+1/2;x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2 +35 b,c,a B m 2 m x,y,z;-x,y,-z;-x,y,z;x,y,-z;x+1/2,y,z+1/2;-x+1/2,y,-z+1/2;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2 +36 a,b,c C m c 21 x,y,z;-x,-y,z+1/2;x,-y,z+1/2;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z +36 b,a,-c C c m 21 x,y,z;-x,-y,z-1/2;-x,y,z-1/2;x,-y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z-1/2;-x+1/2,y+1/2,z-1/2;x+1/2,-y+1/2,z +36 c,a,b A 21 m a x,y,z;x+1/2,-y,-z;x+1/2,y,-z;x,-y,z;x,y+1/2,z+1/2;x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x,-y+1/2,z+1/2 +36 -c,b,a A 21 a m x,y,z;x-1/2,-y,-z;x-1/2,-y,z;x,y,-z;x,y+1/2,z+1/2;x-1/2,-y+1/2,-z+1/2;x-1/2,-y+1/2,z+1/2;x,y+1/2,-z+1/2 +36 b,c,a B b 21 m x,y,z;-x,y+1/2,-z;-x,y+1/2,z;x,y,-z;x+1/2,y,z+1/2;-x+1/2,y+1/2,-z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y,-z+1/2 +36 a,-c,b B m 21 b x,y,z;-x,y-1/2,-z;x,y-1/2,-z;-x,y,z;x+1/2,y,z+1/2;-x+1/2,y-1/2,-z+1/2;x+1/2,y-1/2,-z+1/2;-x+1/2,y,z+1/2 +37 a,b,c C c c 2 x,y,z;-x,-y,z;x,-y,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +37 c,a,b A 2 a a x,y,z;x,-y,-z;x+1/2,y,-z;x+1/2,-y,z;x,y+1/2,z+1/2;x,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2 +37 b,c,a B b 2 b x,y,z;-x,y,-z;-x,y+1/2,z;x,y+1/2,-z;x+1/2,y,z+1/2;-x+1/2,y,-z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2 +38 a,b,c A m m 2 x,y,z;-x,-y,z;x,-y,z;-x,y,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2 +38 b,a,-c B m m 2 x,y,z;-x,-y,z;-x,y,z;x,-y,z;x+1/2,y,z-1/2;-x+1/2,-y,z-1/2;-x+1/2,y,z-1/2;x+1/2,-y,z-1/2 +38 c,a,b B 2 m m x,y,z;x,-y,-z;x,y,-z;x,-y,z;x+1/2,y,z+1/2;x+1/2,-y,-z+1/2;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2 +38 -c,b,a C 2 m m x,y,z;x,-y,-z;x,-y,z;x,y,-z;x-1/2,y+1/2,z;x-1/2,-y+1/2,-z;x-1/2,-y+1/2,z;x-1/2,y+1/2,-z +38 b,c,a C m 2 m x,y,z;-x,y,-z;-x,y,z;x,y,-z;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z;-x+1/2,y+1/2,z;x+1/2,y+1/2,-z +38 a,-c,b A m 2 m x,y,z;-x,y,-z;x,y,-z;-x,y,z;x,y-1/2,z+1/2;-x,y-1/2,-z+1/2;x,y-1/2,-z+1/2;-x,y-1/2,z+1/2 +39 a,b,c A e m 2 x,y,z;-x,-y,z;x,-y+1/2,z;-x,y+1/2,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;x,-y,z+1/2;-x,y,z+1/2 +39 b,a,-c B m e 2 x,y,z;-x,-y,z;-x+1/2,y,z;x+1/2,-y,z;x+1/2,y,z-1/2;-x+1/2,-y,z-1/2;-x,y,z-1/2;x,-y,z-1/2 +39 c,a,b B 2 e m x,y,z;x,-y,-z;x,y,-z+1/2;x,-y,z+1/2;x+1/2,y,z+1/2;x+1/2,-y,-z+1/2;x+1/2,y,-z;x+1/2,-y,z +39 -c,b,a C 2 m e x,y,z;x,-y,-z;x,-y+1/2,z;x,y+1/2,-z;x-1/2,y+1/2,z;x-1/2,-y+1/2,-z;x-1/2,-y,z;x-1/2,y,-z +39 b,c,a C m 2 e x,y,z;-x,y,-z;-x+1/2,y,z;x+1/2,y,-z;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z;-x,y+1/2,z;x,y+1/2,-z +39 a,-c,b A e 2 m x,y,z;-x,y,-z;x,y,-z+1/2;-x,y,z+1/2;x,y-1/2,z+1/2;-x,y-1/2,-z+1/2;x,y-1/2,-z;-x,y-1/2,z +40 a,b,c A m a 2 x,y,z;-x,-y,z;x+1/2,-y,z;-x+1/2,y,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +40 b,a,-c B b m 2 x,y,z;-x,-y,z;-x,y+1/2,z;x,-y+1/2,z;x+1/2,y,z-1/2;-x+1/2,-y,z-1/2;-x+1/2,y+1/2,z-1/2;x+1/2,-y+1/2,z-1/2 +40 c,a,b B 2 m b x,y,z;x,-y,-z;x,y+1/2,-z;x,-y+1/2,z;x+1/2,y,z+1/2;x+1/2,-y,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2 +40 -c,b,a C 2 c m x,y,z;x,-y,-z;x,-y,z+1/2;x,y,-z+1/2;x-1/2,y+1/2,z;x-1/2,-y+1/2,-z;x-1/2,-y+1/2,z+1/2;x-1/2,y+1/2,-z+1/2 +40 b,c,a C c 2 m x,y,z;-x,y,-z;-x,y,z+1/2;x,y,-z+1/2;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2 +40 a,-c,b A m 2 a x,y,z;-x,y,-z;x+1/2,y,-z;-x+1/2,y,z;x,y-1/2,z+1/2;-x,y-1/2,-z+1/2;x+1/2,y-1/2,-z+1/2;-x+1/2,y-1/2,z+1/2 +41 a,b,c A e a 2 x,y,z;-x,-y,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;x+1/2,-y,z+1/2;-x+1/2,y,z+1/2 +41 b,a,-c B b e 2 x,y,z;-x,-y,z;-x+1/2,y+1/2,z;x+1/2,-y+1/2,z;x+1/2,y,z-1/2;-x+1/2,-y,z-1/2;-x,y+1/2,z-1/2;x,-y+1/2,z-1/2 +41 c,a,b B 2 e b x,y,z;x,-y,-z;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2;x+1/2,y,z+1/2;x+1/2,-y,-z+1/2;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z +41 -c,b,a C 2 c e x,y,z;x,-y,-z;x,-y+1/2,z+1/2;x,y+1/2,-z+1/2;x-1/2,y+1/2,z;x-1/2,-y+1/2,-z;x-1/2,-y,z+1/2;x-1/2,y,-z+1/2 +41 b,c,a C c 2 e x,y,z;-x,y,-z;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z;-x,y+1/2,z+1/2;x,y+1/2,-z+1/2 +41 a,-c,b A e 2 a x,y,z;-x,y,-z;x+1/2,y,-z+1/2;-x+1/2,y,z+1/2;x,y-1/2,z+1/2;-x,y-1/2,-z+1/2;x+1/2,y-1/2,-z;-x+1/2,y-1/2,z +42 a,b,c F m m 2 x,y,z;-x,-y,z;x,-y,z;-x,y,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;x+1/2,-y,z+1/2;-x+1/2,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +42 c,a,b F 2 m m x,y,z;x,-y,-z;x,y,-z;x,-y,z;x+1/2,y,z+1/2;x+1/2,-y,-z+1/2;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2;x+1/2,y+1/2,z;x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z;x,y+1/2,z+1/2;x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2 +42 b,c,a F m 2 m x,y,z;-x,y,-z;-x,y,z;x,y,-z;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z;-x+1/2,y+1/2,z;x+1/2,y+1/2,-z;x,y+1/2,z+1/2;-x,y+1/2,-z+1/2;-x,y+1/2,z+1/2;x,y+1/2,-z+1/2;x+1/2,y,z+1/2;-x+1/2,y,-z+1/2;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2 +43 a,b,c F d d 2 x,y,z;-x,-y,z;x+1/4,-y+1/4,z+1/4;-x+1/4,y+1/4,z+1/4;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;x+1/4,-y+3/4,z+3/4;-x+1/4,y+3/4,z+3/4;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;x+3/4,-y+1/4,z+3/4;-x+3/4,y+1/4,z+3/4;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;x+3/4,-y+3/4,z+1/4;-x+3/4,y+3/4,z+1/4 +43 c,a,b F 2 d d x,y,z;x,-y,-z;x+1/4,y+1/4,-z+1/4;x+1/4,-y+1/4,z+1/4;x+1/2,y,z+1/2;x+1/2,-y,-z+1/2;x+3/4,y+1/4,-z+3/4;x+3/4,-y+1/4,z+3/4;x+1/2,y+1/2,z;x+1/2,-y+1/2,-z;x+3/4,y+3/4,-z+1/4;x+3/4,-y+3/4,z+1/4;x,y+1/2,z+1/2;x,-y+1/2,-z+1/2;x+1/4,y+3/4,-z+3/4;x+1/4,-y+3/4,z+3/4 +43 b,c,a F d 2 d x,y,z;-x,y,-z;-x+1/4,y+1/4,z+1/4;x+1/4,y+1/4,-z+1/4;x+1/2,y+1/2,z;-x+1/2,y+1/2,-z;-x+3/4,y+3/4,z+1/4;x+3/4,y+3/4,-z+1/4;x,y+1/2,z+1/2;-x,y+1/2,-z+1/2;-x+1/4,y+3/4,z+3/4;x+1/4,y+3/4,-z+3/4;x+1/2,y,z+1/2;-x+1/2,y,-z+1/2;-x+3/4,y+1/4,z+3/4;x+3/4,y+1/4,-z+3/4 +44 a,b,c I m m 2 x,y,z;-x,-y,z;x,-y,z;-x,y,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +44 c,a,b I 2 m m x,y,z;x,-y,-z;x,y,-z;x,-y,z;x+1/2,y+1/2,z+1/2;x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2 +44 b,c,a I m 2 m x,y,z;-x,y,-z;-x,y,z;x,y,-z;x+1/2,y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2 +45 a,b,c I b a 2 x,y,z;-x,-y,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;x,-y,z+1/2;-x,y,z+1/2 +45 c,a,b I 2 c b x,y,z;x,-y,-z;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2;x+1/2,y+1/2,z+1/2;x+1/2,-y+1/2,-z+1/2;x+1/2,y,-z;x+1/2,-y,z +45 b,c,a I c 2 a x,y,z;-x,y,-z;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2;x+1/2,y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;-x,y+1/2,z;x,y+1/2,-z +46 a,b,c I m a 2 x,y,z;-x,-y,z;x+1/2,-y,z;-x+1/2,y,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2 +46 b,a,-c I b m 2 x,y,z;-x,-y,z;-x,y+1/2,z;x,-y+1/2,z;x+1/2,y+1/2,z-1/2;-x+1/2,-y+1/2,z-1/2;-x+1/2,y,z-1/2;x+1/2,-y,z-1/2 +46 c,a,b I 2 m b x,y,z;x,-y,-z;x,y+1/2,-z;x,-y+1/2,z;x+1/2,y+1/2,z+1/2;x+1/2,-y+1/2,-z+1/2;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2 +46 -c,b,a I 2 c m x,y,z;x,-y,-z;x,-y,z+1/2;x,y,-z+1/2;x-1/2,y+1/2,z+1/2;x-1/2,-y+1/2,-z+1/2;x-1/2,-y+1/2,z;x-1/2,y+1/2,-z +46 b,c,a I c 2 m x,y,z;-x,y,-z;-x,y,z+1/2;x,y,-z+1/2;x+1/2,y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;-x+1/2,y+1/2,z;x+1/2,y+1/2,-z +46 a,-c,b I m 2 a x,y,z;-x,y,-z;x+1/2,y,-z;-x+1/2,y,z;x+1/2,y-1/2,z+1/2;-x+1/2,y-1/2,-z+1/2;x,y-1/2,-z+1/2;-x,y-1/2,z+1/2 +47 a,b,c P m m m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z +48 a,b,c P n n n [origin 2] x,y,z;-x+1/2,-y+1/2,z;-x+1/2,y,-z+1/2;x,-y+1/2,-z+1/2;-x,-y,-z;x+1/2,y+1/2,-z;x+1/2,-y,z+1/2;-x,y+1/2,z+1/2 +48 a,b,c;1/4,1/4,1/4 P n n n :1 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;-x-1/2,-y-1/2,-z-1/2;x+1/2,y+1/2,-z-1/2;x+1/2,-y-1/2,z+1/2;-x-1/2,y+1/2,z+1/2 +49 a,b,c P c c m x,y,z;-x,-y,z;-x,y,-z+1/2;x,-y,-z+1/2;-x,-y,-z;x,y,-z;x,-y,z+1/2;-x,y,z+1/2 +49 c,a,b P m a a x,y,z;x,-y,-z;-x+1/2,-y,z;-x+1/2,y,-z;-x,-y,-z;-x,y,z;x+1/2,y,-z;x+1/2,-y,z +49 b,c,a P b m b x,y,z;-x,y,-z;x,-y+1/2,-z;-x,-y+1/2,z;-x,-y,-z;x,-y,z;-x,y+1/2,z;x,y+1/2,-z +50 a,b,c P b a n [origin 2] x,y,z;-x+1/2,-y+1/2,z;-x+1/2,y,-z;x,-y+1/2,-z;-x,-y,-z;x+1/2,y+1/2,-z;x+1/2,-y,z;-x,y+1/2,z +50 c,a,b P n c b :2 x,y,z;x,-y+1/2,-z+1/2;-x,-y+1/2,z;-x,y,-z+1/2;-x,-y,-z;-x,y+1/2,z+1/2;x,y+1/2,-z;x,-y,z+1/2 +50 b,c,a P c n a :2 x,y,z;-x+1/2,y,-z+1/2;x,-y,-z+1/2;-x+1/2,-y,z;-x,-y,-z;x+1/2,-y,z+1/2;-x,y,z+1/2;x+1/2,y,-z +50 a,b,c;1/4,1/4,0 P b a n :1 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;-x-1/2,-y-1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y-1/2,z;-x-1/2,y+1/2,z +50 c,a,b;1/4,1/4,0 P n c b :1 x,y,z;x,-y,-z;-x,-y,z;-x,y,-z;-x,-y-1/2,-z-1/2;-x,y+1/2,z+1/2;x,y+1/2,-z-1/2;x,-y-1/2,z+1/2 +50 b,c,a;1/4,1/4,0 P c n a :1 x,y,z;-x,y,-z;x,-y,-z;-x,-y,z;-x-1/2,-y,-z-1/2;x+1/2,-y,z+1/2;-x-1/2,y,z+1/2;x+1/2,y,-z-1/2 +51 a,b,c P m m a x,y,z;-x+1/2,-y,z;-x,y,-z;x+1/2,-y,-z;-x,-y,-z;x+1/2,y,-z;x,-y,z;-x+1/2,y,z +51 b,a,-c P m m b x,y,z;-x,-y+1/2,z;x,-y,-z;-x,y+1/2,-z;-x,-y,-z;x,y+1/2,-z;-x,y,z;x,-y+1/2,z +51 c,a,b P b m m x,y,z;x,-y+1/2,-z;-x,-y,z;-x,y+1/2,-z;-x,-y,-z;-x,y+1/2,z;x,y,-z;x,-y+1/2,z +51 -c,b,a P c m m x,y,z;x,-y,-z+1/2;-x,y,-z;-x,-y,z+1/2;-x,-y,-z;-x,y,z+1/2;x,-y,z;x,y,-z+1/2 +51 b,c,a P m c m x,y,z;-x,y,-z+1/2;x,-y,-z;-x,-y,z+1/2;-x,-y,-z;x,-y,z+1/2;-x,y,z;x,y,-z+1/2 +51 a,-c,b P m a m x,y,z;-x+1/2,y,-z;-x,-y,z;x+1/2,-y,-z;-x,-y,-z;x+1/2,-y,z;x,y,-z;-x+1/2,y,z +52 a,b,c P n n a x,y,z;-x+1/2,-y,z;-x+1/2,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;-x,-y,-z;x+1/2,y,-z;x+1/2,-y+1/2,z+1/2;-x,y+1/2,z+1/2 +52 b,a,-c P n n b x,y,z;-x,-y+1/2,z;x+1/2,-y+1/2,-z-1/2;-x+1/2,y,-z-1/2;-x,-y,-z;x,y+1/2,-z;-x+1/2,y+1/2,z-1/2;x+1/2,-y,z-1/2 +52 c,a,b P b n n x,y,z;x,-y+1/2,-z;-x+1/2,-y+1/2,z+1/2;-x+1/2,y,-z+1/2;-x,-y,-z;-x,y+1/2,z;x+1/2,y+1/2,-z+1/2;x+1/2,-y,z+1/2 +52 -c,b,a P c n n x,y,z;x,-y,-z+1/2;-x-1/2,y+1/2,-z+1/2;-x-1/2,-y+1/2,z;-x,-y,-z;-x,y,z+1/2;x-1/2,-y+1/2,z+1/2;x-1/2,y+1/2,-z +52 b,c,a P n c n x,y,z;-x,y,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,z;-x,-y,-z;x,-y,z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z +52 a,-c,b P n a n x,y,z;-x+1/2,y,-z;-x+1/2,-y-1/2,z+1/2;x,-y-1/2,-z+1/2;-x,-y,-z;x+1/2,-y,z;x+1/2,y-1/2,-z+1/2;-x,y-1/2,z+1/2 +53 a,b,c P m n a x,y,z;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x,-y,-z;-x,-y,-z;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2;-x,y,z +53 b,a,-c P n m b x,y,z;-x,-y+1/2,z-1/2;x,-y+1/2,-z-1/2;-x,y,-z;-x,-y,-z;x,y+1/2,-z-1/2;-x,y+1/2,z-1/2;x,-y,z +53 c,a,b P b m n x,y,z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,z;-x,y,-z;-x,-y,-z;-x+1/2,y+1/2,z;x+1/2,y+1/2,-z;x,-y,z +53 -c,b,a P c n m x,y,z;x-1/2,-y,-z+1/2;-x-1/2,y,-z+1/2;-x,-y,z;-x,-y,-z;-x-1/2,y,z+1/2;x-1/2,-y,z+1/2;x,y,-z +53 b,c,a P n c m x,y,z;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;-x,-y,z;-x,-y,-z;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x,y,-z +53 a,-c,b P m a n x,y,z;-x+1/2,y-1/2,-z;-x+1/2,-y-1/2,z;x,-y,-z;-x,-y,-z;x+1/2,-y-1/2,z;x+1/2,y-1/2,-z;-x,y,z +54 a,b,c P c c a x,y,z;-x+1/2,-y,z;-x,y,-z+1/2;x+1/2,-y,-z+1/2;-x,-y,-z;x+1/2,y,-z;x,-y,z+1/2;-x+1/2,y,z+1/2 +54 b,a,-c P c c b x,y,z;-x,-y+1/2,z;x,-y,-z-1/2;-x,y+1/2,-z-1/2;-x,-y,-z;x,y+1/2,-z;-x,y,z-1/2;x,-y+1/2,z-1/2 +54 c,a,b P b a a x,y,z;x,-y+1/2,-z;-x+1/2,-y,z;-x+1/2,y+1/2,-z;-x,-y,-z;-x,y+1/2,z;x+1/2,y,-z;x+1/2,-y+1/2,z +54 -c,b,a P c a a x,y,z;x,-y,-z+1/2;-x-1/2,y,-z;-x-1/2,-y,z+1/2;-x,-y,-z;-x,y,z+1/2;x-1/2,-y,z;x-1/2,y,-z+1/2 +54 b,c,a P b c b x,y,z;-x,y,-z+1/2;x,-y+1/2,-z;-x,-y+1/2,z+1/2;-x,-y,-z;x,-y,z+1/2;-x,y+1/2,z;x,y+1/2,-z+1/2 +54 a,-c,b P b a b x,y,z;-x+1/2,y,-z;-x,-y-1/2,z;x+1/2,-y-1/2,-z;-x,-y,-z;x+1/2,-y,z;x,y-1/2,-z;-x+1/2,y-1/2,z +55 a,b,c P b a m x,y,z;-x,-y,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x,-y,-z;x,y,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +55 c,a,b P m c b x,y,z;x,-y,-z;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;-x,-y,-z;-x,y,z;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2 +55 b,c,a P c m a x,y,z;-x,y,-z;x+1/2,-y,-z+1/2;-x+1/2,-y,z+1/2;-x,-y,-z;x,-y,z;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2 +56 a,b,c P c c n x,y,z;-x+1/2,-y+1/2,z;-x,y+1/2,-z+1/2;x+1/2,-y,-z+1/2;-x,-y,-z;x+1/2,y+1/2,-z;x,-y+1/2,z+1/2;-x+1/2,y,z+1/2 +56 c,a,b P n a a x,y,z;x,-y+1/2,-z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y+1/2,-z;-x,-y,-z;-x,y+1/2,z+1/2;x+1/2,y,-z+1/2;x+1/2,-y+1/2,z +56 b,c,a P b n b x,y,z;-x+1/2,y,-z+1/2;x+1/2,-y+1/2,-z;-x,-y+1/2,z+1/2;-x,-y,-z;x+1/2,-y,z+1/2;-x+1/2,y+1/2,z;x,y+1/2,-z+1/2 +57 a,b,c P b c m x,y,z;-x,-y,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z;-x,-y,-z;x,y,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z +57 b,a,-c P c a m x,y,z;-x,-y,z-1/2;x+1/2,-y,-z-1/2;-x+1/2,y,-z;-x,-y,-z;x,y,-z-1/2;-x+1/2,y,z-1/2;x+1/2,-y,z +57 c,a,b P m c a x,y,z;x+1/2,-y,-z;-x+1/2,-y,z+1/2;-x,y,-z+1/2;-x,-y,-z;-x+1/2,y,z;x+1/2,y,-z+1/2;x,-y,z+1/2 +57 -c,b,a P m a b x,y,z;x-1/2,-y,-z;-x-1/2,y+1/2,-z;-x,-y+1/2,z;-x,-y,-z;-x-1/2,y,z;x-1/2,-y+1/2,z;x,y+1/2,-z +57 b,c,a P b m a x,y,z;-x,y+1/2,-z;x+1/2,-y+1/2,-z;-x+1/2,-y,z;-x,-y,-z;x,-y+1/2,z;-x+1/2,y+1/2,z;x+1/2,y,-z +57 a,-c,b P c m b x,y,z;-x,y-1/2,-z;-x,-y-1/2,z+1/2;x,-y,-z+1/2;-x,-y,-z;x,-y-1/2,z;x,y-1/2,-z+1/2;-x,y,z+1/2 +58 a,b,c P n n m x,y,z;-x,-y,z;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x,-y,-z;x,y,-z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +58 c,a,b P m n n x,y,z;x,-y,-z;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;-x,-y,-z;-x,y,z;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2 +58 b,c,a P n m n x,y,z;-x,y,-z;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,z+1/2;-x,-y,-z;x,-y,z;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2 +59 a,b,c P m m n [origin 2] x,y,z;-x+1/2,-y+1/2,z;-x,y+1/2,-z;x+1/2,-y,-z;-x,-y,-z;x+1/2,y+1/2,-z;x,-y+1/2,z;-x+1/2,y,z +59 c,a,b P n m m :2 x,y,z;x,-y+1/2,-z+1/2;-x,-y,z+1/2;-x,y+1/2,-z;-x,-y,-z;-x,y+1/2,z+1/2;x,y,-z+1/2;x,-y+1/2,z +59 b,c,a P m n m :2 x,y,z;-x+1/2,y,-z+1/2;x+1/2,-y,-z;-x,-y,z+1/2;-x,-y,-z;x+1/2,-y,z+1/2;-x+1/2,y,z;x,y,-z+1/2 +59 a,b,c;1/4,1/4,0 P m m n :1 x,y,z;-x,-y,z;-x-1/2,y+1/2,-z;x+1/2,-y-1/2,-z;-x-1/2,-y-1/2,-z;x+1/2,y+1/2,-z;x,-y,z;-x,y,z +59 c,a,b;1/4,1/4,0 P n m m :1 x,y,z;x,-y,-z;-x,-y-1/2,z+1/2;-x,y+1/2,-z-1/2;-x,-y-1/2,-z-1/2;-x,y+1/2,z+1/2;x,y,-z;x,-y,z +59 b,c,a;1/4,1/4,0 P m n m :1 x,y,z;-x,y,-z;x+1/2,-y,-z-1/2;-x-1/2,-y,z+1/2;-x-1/2,-y,-z-1/2;x+1/2,-y,z+1/2;-x,y,z;x,y,-z +60 a,b,c P b c n x,y,z;-x+1/2,-y+1/2,z+1/2;-x,y,-z+1/2;x+1/2,-y+1/2,-z;-x,-y,-z;x+1/2,y+1/2,-z+1/2;x,-y,z+1/2;-x+1/2,y+1/2,z +60 b,a,-c P c a n x,y,z;-x+1/2,-y+1/2,z-1/2;x,-y,-z-1/2;-x+1/2,y+1/2,-z;-x,-y,-z;x+1/2,y+1/2,-z-1/2;-x,y,z-1/2;x+1/2,-y+1/2,z +60 c,a,b P n c a x,y,z;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y,z;-x,y+1/2,-z+1/2;-x,-y,-z;-x+1/2,y+1/2,z+1/2;x+1/2,y,-z;x,-y+1/2,z+1/2 +60 -c,b,a P n a b x,y,z;x-1/2,-y+1/2,-z+1/2;-x-1/2,y,-z;-x,-y+1/2,z+1/2;-x,-y,-z;-x-1/2,y+1/2,z+1/2;x-1/2,-y,z;x,y+1/2,-z+1/2 +60 b,c,a P b n a x,y,z;-x+1/2,y+1/2,-z+1/2;x,-y+1/2,-z;-x+1/2,-y,z+1/2;-x,-y,-z;x+1/2,-y+1/2,z+1/2;-x,y+1/2,z;x+1/2,y,-z+1/2 +60 a,-c,b P c n b x,y,z;-x+1/2,y-1/2,-z+1/2;-x,-y-1/2,z;x+1/2,-y,-z+1/2;-x,-y,-z;x+1/2,-y-1/2,z+1/2;x,y-1/2,-z;-x+1/2,y,z+1/2 +61 a,b,c P b c a x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;-x,-y,-z;x+1/2,y,-z+1/2;x,-y+1/2,z+1/2;-x+1/2,y+1/2,z +61 b,a,-c P c a b x,y,z;-x,-y+1/2,z-1/2;x+1/2,-y,-z-1/2;-x+1/2,y+1/2,-z;-x,-y,-z;x,y+1/2,-z-1/2;-x+1/2,y,z-1/2;x+1/2,-y+1/2,z +62 a,b,c P n m a x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z;x+1/2,-y+1/2,-z+1/2;-x,-y,-z;x+1/2,y,-z+1/2;x,-y+1/2,z;-x+1/2,y+1/2,z+1/2 +62 b,a,-c P m n b x,y,z;-x,-y+1/2,z-1/2;x+1/2,-y,-z;-x+1/2,y+1/2,-z-1/2;-x,-y,-z;x,y+1/2,-z-1/2;-x+1/2,y,z;x+1/2,-y+1/2,z-1/2 +62 c,a,b P b n m x,y,z;x+1/2,-y+1/2,-z;-x,-y,z+1/2;-x+1/2,y+1/2,-z+1/2;-x,-y,-z;-x+1/2,y+1/2,z;x,y,-z+1/2;x+1/2,-y+1/2,z+1/2 +62 -c,b,a P c m n x,y,z;x-1/2,-y,-z+1/2;-x,y+1/2,-z;-x-1/2,-y+1/2,z+1/2;-x,-y,-z;-x-1/2,y,z+1/2;x,-y+1/2,z;x-1/2,y+1/2,-z+1/2 +62 b,c,a P m c n x,y,z;-x,y+1/2,-z+1/2;x+1/2,-y,-z;-x+1/2,-y+1/2,z+1/2;-x,-y,-z;x,-y+1/2,z+1/2;-x+1/2,y,z;x+1/2,y+1/2,-z+1/2 +62 a,-c,b P n a m x,y,z;-x+1/2,y-1/2,-z;-x,-y,z+1/2;x+1/2,-y-1/2,-z+1/2;-x,-y,-z;x+1/2,-y-1/2,z;x,y,-z+1/2;-x+1/2,y-1/2,z+1/2 +63 a,b,c C m c m x,y,z;-x,-y,z+1/2;-x,y,-z+1/2;x,-y,-z;-x,-y,-z;x,y,-z+1/2;x,-y,z+1/2;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z +63 b,a,-c C c m m x,y,z;-x,-y,z-1/2;x,-y,-z-1/2;-x,y,-z;-x,-y,-z;x,y,-z-1/2;-x,y,z-1/2;x,-y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z-1/2;x+1/2,-y+1/2,-z-1/2;-x+1/2,y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z-1/2;-x+1/2,y+1/2,z-1/2;x+1/2,-y+1/2,z +63 c,a,b A m m a x,y,z;x+1/2,-y,-z;-x+1/2,-y,z;-x,y,-z;-x,-y,-z;-x+1/2,y,z;x+1/2,y,-z;x,-y,z;x,y+1/2,z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;-x,-y+1/2,-z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2;x,-y+1/2,z+1/2 +63 -c,b,a A m a m x,y,z;x-1/2,-y,-z;-x-1/2,y,-z;-x,-y,z;-x,-y,-z;-x-1/2,y,z;x-1/2,-y,z;x,y,-z;x,y+1/2,z+1/2;x-1/2,-y+1/2,-z+1/2;-x-1/2,y+1/2,-z+1/2;-x,-y+1/2,z+1/2;-x,-y+1/2,-z+1/2;-x-1/2,y+1/2,z+1/2;x-1/2,-y+1/2,z+1/2;x,y+1/2,-z+1/2 +63 b,c,a B b m m x,y,z;-x,y+1/2,-z;x,-y+1/2,-z;-x,-y,z;-x,-y,-z;x,-y+1/2,z;-x,y+1/2,z;x,y,-z;x+1/2,y,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y,z+1/2;-x+1/2,-y,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y,-z+1/2 +63 a,-c,b B m m b x,y,z;-x,y-1/2,-z;-x,-y-1/2,z;x,-y,-z;-x,-y,-z;x,-y-1/2,z;x,y-1/2,-z;-x,y,z;x+1/2,y,z+1/2;-x+1/2,y-1/2,-z+1/2;-x+1/2,-y-1/2,z+1/2;x+1/2,-y,-z+1/2;-x+1/2,-y,-z+1/2;x+1/2,-y-1/2,z+1/2;x+1/2,y-1/2,-z+1/2;-x+1/2,y,z+1/2 +64 a,b,c C m c e x,y,z;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y,-z;-x,-y,-z;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2;-x+1/2,y+1/2,z +64 b,a,-c C c m e x,y,z;-x+1/2,-y,z-1/2;x+1/2,-y,-z-1/2;-x,y,-z;-x,-y,-z;x+1/2,y,-z-1/2;-x+1/2,y,z-1/2;x,-y,z;x+1/2,y+1/2,z;-x,-y+1/2,z-1/2;x,-y+1/2,-z-1/2;-x+1/2,y+1/2,-z;-x+1/2,-y+1/2,-z;x,y+1/2,-z-1/2;-x,y+1/2,z-1/2;x+1/2,-y+1/2,z +64 c,a,b A e m a x,y,z;x+1/2,-y,-z+1/2;-x+1/2,-y,z+1/2;-x,y,-z;-x,-y,-z;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2;x,-y,z;x,y+1/2,z+1/2;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,z;-x,y+1/2,-z+1/2;-x,-y+1/2,-z+1/2;-x+1/2,y+1/2,z;x+1/2,y+1/2,-z;x,-y+1/2,z+1/2 +64 -c,b,a A e a m x,y,z;x-1/2,-y+1/2,-z;-x-1/2,y+1/2,-z;-x,-y,z;-x,-y,-z;-x-1/2,y+1/2,z;x-1/2,-y+1/2,z;x,y,-z;x,y+1/2,z+1/2;x-1/2,-y,-z+1/2;-x-1/2,y,-z+1/2;-x,-y+1/2,z+1/2;-x,-y+1/2,-z+1/2;-x-1/2,y,z+1/2;x-1/2,-y,z+1/2;x,y+1/2,-z+1/2 +64 b,c,a B b e m x,y,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x,-y,z;-x,-y,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;x,y,-z;x+1/2,y,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;-x+1/2,-y,z+1/2;-x+1/2,-y,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y,-z+1/2 +64 a,-c,b B m e b x,y,z;-x,y-1/2,-z+1/2;-x,-y-1/2,z+1/2;x,-y,-z;-x,-y,-z;x,-y-1/2,z+1/2;x,y-1/2,-z+1/2;-x,y,z;x+1/2,y,z+1/2;-x+1/2,y-1/2,-z;-x+1/2,-y-1/2,z;x+1/2,-y,-z+1/2;-x+1/2,-y,-z+1/2;x+1/2,-y-1/2,z;x+1/2,y-1/2,-z;-x+1/2,y,z+1/2 +65 a,b,c C m m m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +65 c,a,b A m m m x,y,z;x,-y,-z;-x,-y,z;-x,y,-z;-x,-y,-z;-x,y,z;x,y,-z;x,-y,z;x,y+1/2,z+1/2;x,-y+1/2,-z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;-x,-y+1/2,-z+1/2;-x,y+1/2,z+1/2;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2 +65 b,c,a B m m m x,y,z;-x,y,-z;x,-y,-z;-x,-y,z;-x,-y,-z;x,-y,z;-x,y,z;x,y,-z;x+1/2,y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;-x+1/2,-y,z+1/2;-x+1/2,-y,-z+1/2;x+1/2,-y,z+1/2;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2 +66 a,b,c C c c m x,y,z;-x,-y,z;-x,y,-z+1/2;x,-y,-z+1/2;-x,-y,-z;x,y,-z;x,-y,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +66 c,a,b A m a a x,y,z;x,-y,-z;-x+1/2,-y,z;-x+1/2,y,-z;-x,-y,-z;-x,y,z;x+1/2,y,-z;x+1/2,-y,z;x,y+1/2,z+1/2;x,-y+1/2,-z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;-x,-y+1/2,-z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2 +66 b,c,a B b m b x,y,z;-x,y,-z;x,-y+1/2,-z;-x,-y+1/2,z;-x,-y,-z;x,-y,z;-x,y+1/2,z;x,y+1/2,-z;x+1/2,y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,-y,-z+1/2;x+1/2,-y,z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2 +67 a,b,c C m m a (C m m e) x,y,z;-x,-y+1/2,z;-x,y+1/2,-z;x,-y,-z;-x,-y,-z;x,y+1/2,-z;x,-y+1/2,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y,z;-x+1/2,y,-z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y,-z;x+1/2,-y,z;-x+1/2,y+1/2,z +67 b,a,-c C m m b (C m m e) x,y,z;-x+1/2,-y,z;x+1/2,-y,-z;-x,y,-z;-x,-y,-z;x+1/2,y,-z;-x+1/2,y,z;x,-y,z;x+1/2,y+1/2,z;-x,-y+1/2,z;x,-y+1/2,-z;-x+1/2,y+1/2,-z;-x+1/2,-y+1/2,-z;x,y+1/2,-z;-x,y+1/2,z;x+1/2,-y+1/2,z +67 c,a,b A b m m (A e m m) x,y,z;x,-y,-z+1/2;-x,-y,z+1/2;-x,y,-z;-x,-y,-z;-x,y,z+1/2;x,y,-z+1/2;x,-y,z;x,y+1/2,z+1/2;x,-y+1/2,-z;-x,-y+1/2,z;-x,y+1/2,-z+1/2;-x,-y+1/2,-z+1/2;-x,y+1/2,z;x,y+1/2,-z;x,-y+1/2,z+1/2 +67 -c,b,a A c m m (A e m m) x,y,z;x,-y+1/2,-z;-x,y+1/2,-z;-x,-y,z;-x,-y,-z;-x,y+1/2,z;x,-y+1/2,z;x,y,-z;x,y+1/2,z+1/2;x,-y,-z+1/2;-x,y,-z+1/2;-x,-y+1/2,z+1/2;-x,-y+1/2,-z+1/2;-x,y,z+1/2;x,-y,z+1/2;x,y+1/2,-z+1/2 +67 b,c,a B m c m (B m e m) x,y,z;-x+1/2,y,-z;x+1/2,-y,-z;-x,-y,z;-x,-y,-z;x+1/2,-y,z;-x+1/2,y,z;x,y,-z;x+1/2,y,z+1/2;-x,y,-z+1/2;x,-y,-z+1/2;-x+1/2,-y,z+1/2;-x+1/2,-y,-z+1/2;x,-y,z+1/2;-x,y,z+1/2;x+1/2,y,-z+1/2 +67 a,-c,b B m a m (B m e m) x,y,z;-x,y,-z+1/2;-x,-y,z+1/2;x,-y,-z;-x,-y,-z;x,-y,z+1/2;x,y,-z+1/2;-x,y,z;x+1/2,y,z+1/2;-x+1/2,y,-z;-x+1/2,-y,z;x+1/2,-y,-z+1/2;-x+1/2,-y,-z+1/2;x+1/2,-y,z;x+1/2,y,-z;-x+1/2,y,z+1/2 +68 a,b,c C c c a (C c c e) [origin 2] x,y,z;-x+1/2,-y,z;-x,y,-z+1/2;x+1/2,-y,-z+1/2;-x,-y,-z;x+1/2,y,-z;x,-y,z+1/2;-x+1/2,y,z+1/2;x+1/2,y+1/2,z;-x,-y+1/2,z;-x+1/2,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;x,y+1/2,-z;x+1/2,-y+1/2,z+1/2;-x,y+1/2,z+1/2 +68 b,a,-c C c c b (C c c e) :2 x,y,z;-x,-y+1/2,z;x,-y,-z-1/2;-x,y+1/2,-z-1/2;-x,-y,-z;x,y+1/2,-z;-x,y,z-1/2;x,-y+1/2,z-1/2;x+1/2,y+1/2,z;-x+1/2,-y,z;x+1/2,-y+1/2,-z-1/2;-x+1/2,y,-z-1/2;-x+1/2,-y+1/2,-z;x+1/2,y,-z;-x+1/2,y+1/2,z-1/2;x+1/2,-y,z-1/2 +68 c,a,b A b a a (A e a a) :2 x,y,z;x,-y+1/2,-z;-x+1/2,-y,z;-x+1/2,y+1/2,-z;-x,-y,-z;-x,y+1/2,z;x+1/2,y,-z;x+1/2,-y+1/2,z;x,y+1/2,z+1/2;x,-y,-z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y,-z+1/2;-x,-y+1/2,-z+1/2;-x,y,z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y,z+1/2 +68 -c,b,a A c a a (A e a a) :2 x,y,z;x,-y,-z+1/2;-x-1/2,y,-z;-x-1/2,-y,z+1/2;-x,-y,-z;-x,y,z+1/2;x-1/2,-y,z;x-1/2,y,-z+1/2;x,y+1/2,z+1/2;x,-y+1/2,-z;-x-1/2,y+1/2,-z+1/2;-x-1/2,-y+1/2,z;-x,-y+1/2,-z+1/2;-x,y+1/2,z;x-1/2,-y+1/2,z+1/2;x-1/2,y+1/2,-z +68 b,c,a B b c b (B b e b) :2 x,y,z;-x,y,-z+1/2;x,-y+1/2,-z;-x,-y+1/2,z+1/2;-x,-y,-z;x,-y,z+1/2;-x,y+1/2,z;x,y+1/2,-z+1/2;x+1/2,y,z+1/2;-x+1/2,y,-z;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,z;-x+1/2,-y,-z+1/2;x+1/2,-y,z;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,-z +68 a,-c,b B b a b (B b e b) :2 x,y,z;-x+1/2,y,-z;-x,-y-1/2,z;x+1/2,-y-1/2,-z;-x,-y,-z;x+1/2,-y,z;x,y-1/2,-z;-x+1/2,y-1/2,z;x+1/2,y,z+1/2;-x,y,-z+1/2;-x+1/2,-y-1/2,z+1/2;x,-y-1/2,-z+1/2;-x+1/2,-y,-z+1/2;x,-y,z+1/2;x+1/2,y-1/2,-z+1/2;-x,y-1/2,z+1/2 +68 a,b,c;0,1/4,1/4 C c c a (C c c e) :1 x,y,z;-x+1/2,-y-1/2,z;-x,y,-z;x+1/2,-y-1/2,-z;-x,-y-1/2,-z-1/2;x+1/2,y,-z-1/2;x,-y-1/2,z+1/2;-x+1/2,y,z+1/2;x+1/2,y+1/2,z;-x,-y,z;-x+1/2,y+1/2,-z;x,-y,-z;-x+1/2,-y,-z-1/2;x,y+1/2,-z-1/2;x+1/2,-y,z+1/2;-x,y+1/2,z+1/2 +68 b,a,-c;0,1/4,1/4 C c c b (C c c e) :1 x,y,z;-x-1/2,-y+1/2,z;x,-y,-z;-x-1/2,y+1/2,-z;-x-1/2,-y,-z+1/2;x,y+1/2,-z+1/2;-x-1/2,y,z-1/2;x,-y+1/2,z-1/2;x+1/2,y+1/2,z;-x,-y,z;x+1/2,-y+1/2,-z;-x,y,-z;-x,-y+1/2,-z+1/2;x+1/2,y,-z+1/2;-x,y+1/2,z-1/2;x+1/2,-y,z-1/2 +68 c,a,b;0,1/4,1/4 A b a a (A e a a) :1 x,y,z;x,-y+1/2,-z-1/2;-x,-y,z;-x,y+1/2,-z-1/2;-x-1/2,-y,-z-1/2;-x-1/2,y+1/2,z;x+1/2,y,-z-1/2;x+1/2,-y+1/2,z;x,y+1/2,z+1/2;x,-y,-z;-x,-y+1/2,z+1/2;-x,y,-z;-x-1/2,-y+1/2,-z;-x-1/2,y,z+1/2;x+1/2,y+1/2,-z;x+1/2,-y,z+1/2 +68 -c,b,a;0,1/4,1/4 A c a a (A e a a) :1 x,y,z;x,-y-1/2,-z+1/2;-x,y,-z;-x,-y-1/2,z+1/2;-x+1/2,-y-1/2,-z;-x+1/2,y,z+1/2;x-1/2,-y-1/2,z;x-1/2,y,-z+1/2;x,y+1/2,z+1/2;x,-y,-z;-x,y+1/2,-z+1/2;-x,-y,z;-x+1/2,-y,-z+1/2;-x+1/2,y+1/2,z;x-1/2,-y,z+1/2;x-1/2,y+1/2,-z +68 b,c,a;0,1/4,1/4 B b c b (B b e b) :1 x,y,z;-x-1/2,y,-z+1/2;x,-y,-z;-x-1/2,-y,z+1/2;-x-1/2,-y-1/2,-z;x,-y-1/2,z+1/2;-x-1/2,y+1/2,z;x,y+1/2,-z+1/2;x+1/2,y,z+1/2;-x,y,-z;x+1/2,-y,-z+1/2;-x,-y,z;-x,-y-1/2,-z+1/2;x+1/2,-y-1/2,z;-x,y+1/2,z+1/2;x+1/2,y+1/2,-z +68 a,-c,b;0,1/4,1/4 B b a b (B b e b) :1 x,y,z;-x+1/2,y,-z-1/2;-x,-y,z;x+1/2,-y,-z-1/2;-x,-y+1/2,-z-1/2;x+1/2,-y+1/2,z;x,y-1/2,-z-1/2;-x+1/2,y-1/2,z;x+1/2,y,z+1/2;-x,y,-z;-x+1/2,-y,z+1/2;x,-y,-z;-x+1/2,-y+1/2,-z;x,-y+1/2,z+1/2;x+1/2,y-1/2,-z;-x,y-1/2,z+1/2 +69 a,b,c F m m m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;-x+1/2,-y,-z+1/2;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2;-x+1/2,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +70 a,b,c F d d d [origin 2] x,y,z;-x+3/4,-y+3/4,z;-x+3/4,y,-z+3/4;x,-y+3/4,-z+3/4;-x,-y,-z;x+1/4,y+1/4,-z;x+1/4,-y,z+1/4;-x,y+1/4,z+1/4;x,y+1/2,z+1/2;-x+3/4,-y+1/4,z+1/2;-x+3/4,y+1/2,-z+1/4;x,-y+1/4,-z+1/4;-x,-y+1/2,-z+1/2;x+1/4,y+3/4,-z+1/2;x+1/4,-y+1/2,z+3/4;-x,y+3/4,z+3/4;x+1/2,y,z+1/2;-x+1/4,-y+3/4,z+1/2;-x+1/4,y,-z+1/4;x+1/2,-y+3/4,-z+1/4;-x+1/2,-y,-z+1/2;x+3/4,y+1/4,-z+1/2;x+3/4,-y,z+3/4;-x+1/2,y+1/4,z+3/4;x+1/2,y+1/2,z;-x+1/4,-y+1/4,z;-x+1/4,y+1/2,-z+3/4;x+1/2,-y+1/4,-z+3/4;-x+1/2,-y+1/2,-z;x+3/4,y+3/4,-z;x+3/4,-y+1/2,z+1/4;-x+1/2,y+3/4,z+1/4 +70 a,b,c;-1/8,-1/8,-1/8 F d d d :1 x,y,z;-x+505/12,-y+505/12,z;-x+505/12,y,-z+505/12;x,-y+505/12,-z+505/12;-x+124/3,-y+124/3,-z+124/3;x+1/4,y+1/4,-z+124/3;x+1/4,-y+124/3,z+1/4;-x+124/3,y+1/4,z+1/4;x,y+1/2,z+1/2;-x+505/12,-y+499/12,z+1/2;-x+505/12,y+1/2,-z+499/12;x,-y+499/12,-z+499/12;-x+124/3,-y+251/6,-z+251/6;x+1/4,y+3/4,-z+251/6;x+1/4,-y+251/6,z+3/4;-x+124/3,y+3/4,z+3/4;x+1/2,y,z+1/2;-x+499/12,-y+505/12,z+1/2;-x+499/12,y,-z+499/12;x+1/2,-y+505/12,-z+499/12;-x+251/6,-y+124/3,-z+251/6;x+3/4,y+1/4,-z+251/6;x+3/4,-y+124/3,z+3/4;-x+251/6,y+1/4,z+3/4;x+1/2,y+1/2,z;-x+499/12,-y+499/12,z;-x+499/12,y+1/2,-z+505/12;x+1/2,-y+499/12,-z+505/12;-x+251/6,-y+251/6,-z+124/3;x+3/4,y+3/4,-z+124/3;x+3/4,-y+251/6,z+1/4;-x+251/6,y+3/4,z+1/4 +71 a,b,c I m m m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +72 a,b,c I b a m x,y,z;-x,-y,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x,-y,-z;x,y,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x,y,-z+1/2;x,-y,-z+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x,-y,z+1/2;-x,y,z+1/2 +72 c,a,b I m c b x,y,z;x,-y,-z;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;-x,-y,-z;-x,y,z;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2;x+1/2,y+1/2,z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y,z;-x+1/2,y,-z;-x+1/2,-y+1/2,-z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y,-z;x+1/2,-y,z +72 b,c,a I c m a x,y,z;-x,y,-z;x+1/2,-y,-z+1/2;-x+1/2,-y,z+1/2;-x,-y,-z;x,-y,z;-x+1/2,y,z+1/2;x+1/2,y,-z+1/2;x+1/2,y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x,-y+1/2,-z;-x,-y+1/2,z;-x+1/2,-y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x,y+1/2,z;x,y+1/2,-z +73 a,b,c I b c a x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;-x,-y,-z;x+1/2,y,-z+1/2;x,-y+1/2,z+1/2;-x+1/2,y+1/2,z;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-x+1/2,y,-z;x,-y,-z+1/2;-x+1/2,-y+1/2,-z+1/2;x,y+1/2,-z;x+1/2,-y,z;-x,y,z+1/2 +73 b,a,-c I c a b x,y,z;-x,-y+1/2,z-1/2;x+1/2,-y,-z-1/2;-x+1/2,y+1/2,-z;-x,-y,-z;x,y+1/2,-z-1/2;-x+1/2,y,z-1/2;x+1/2,-y+1/2,z;x+1/2,y+1/2,z-1/2;-x+1/2,-y,z;x,-y+1/2,-z;-x,y,-z-1/2;-x+1/2,-y+1/2,-z-1/2;x+1/2,y,-z;-x,y+1/2,z;x,-y,z-1/2 +74 a,b,c I m m a x,y,z;-x,-y+1/2,z;-x,y+1/2,-z;x,-y,-z;-x,-y,-z;x,y+1/2,-z;x,-y+1/2,z;-x,y,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2;-x+1/2,y+1/2,z+1/2 +74 b,a,-c I m m b x,y,z;-x+1/2,-y,z;x+1/2,-y,-z;-x,y,-z;-x,-y,-z;x+1/2,y,-z;-x+1/2,y,z;x,-y,z;x+1/2,y+1/2,z-1/2;-x,-y+1/2,z-1/2;x,-y+1/2,-z-1/2;-x+1/2,y+1/2,-z-1/2;-x+1/2,-y+1/2,-z-1/2;x,y+1/2,-z-1/2;-x,y+1/2,z-1/2;x+1/2,-y+1/2,z-1/2 +74 c,a,b I b m m x,y,z;x,-y,-z+1/2;-x,-y,z+1/2;-x,y,-z;-x,-y,-z;-x,y,z+1/2;x,y,-z+1/2;x,-y,z;x+1/2,y+1/2,z+1/2;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z+1/2;-x+1/2,-y+1/2,-z+1/2;-x+1/2,y+1/2,z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z+1/2 +74 -c,b,a I c m m x,y,z;x,-y+1/2,-z;-x,y+1/2,-z;-x,-y,z;-x,-y,-z;-x,y+1/2,z;x,-y+1/2,z;x,y,-z;x-1/2,y+1/2,z+1/2;x-1/2,-y,-z+1/2;-x-1/2,y,-z+1/2;-x-1/2,-y+1/2,z+1/2;-x-1/2,-y+1/2,-z+1/2;-x-1/2,y,z+1/2;x-1/2,-y,z+1/2;x-1/2,y+1/2,-z+1/2 +74 b,c,a I m c m x,y,z;-x+1/2,y,-z;x+1/2,-y,-z;-x,-y,z;-x,-y,-z;x+1/2,-y,z;-x+1/2,y,z;x,y,-z;x+1/2,y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,-y+1/2,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,-z+1/2 +74 a,-c,b I m a m x,y,z;-x,y,-z+1/2;-x,-y,z+1/2;x,-y,-z;-x,-y,-z;x,-y,z+1/2;x,y,-z+1/2;-x,y,z;x+1/2,y-1/2,z+1/2;-x+1/2,y-1/2,-z;-x+1/2,-y-1/2,z;x+1/2,-y-1/2,-z+1/2;-x+1/2,-y-1/2,-z+1/2;x+1/2,-y-1/2,z;x+1/2,y-1/2,-z;-x+1/2,y-1/2,z+1/2 +75 a,b,c P 4 x,y,z;-x,-y,z;-y,x,z;y,-x,z +75 a-b,a+b,c C 4 x,y,z;-x,-y,z;-y,x,z;y,-x,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z +76 a,b,c P 41 x,y,z;-x,-y,z+1/2;-y,x,z+1/4;y,-x,z+3/4 +76 a-b,a+b,c C 41 x,y,z;-x,-y,z+1/2;-y,x,z+1/4;y,-x,z+3/4;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/4;y+1/2,-x+1/2,z+3/4 +77 a,b,c P 42 x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2 +77 a-b,a+b,c C 42 x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2 +78 a,b,c P 43 x,y,z;-x,-y,z+1/2;-y,x,z+3/4;y,-x,z+1/4 +78 a-b,a+b,c C 43 x,y,z;-x,-y,z+1/2;-y,x,z+3/4;y,-x,z+1/4;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+3/4;y+1/2,-x+1/2,z+1/4 +79 a,b,c I 4 x,y,z;-x,-y,z;-y,x,z;y,-x,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2 +79 a-b,a+b,c F 4 x,y,z;-x,-y,z;-y,x,z;y,-x,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z +80 a,b,c I 41 x,y,z;-x+1/2,-y+1/2,z+1/2;-y,x+1/2,z+1/4;y+1/2,-x,z+3/4;x+1/2,y+1/2,z+1/2;-x,-y,z;-y+1/2,x,z+3/4;y,-x+1/2,z+1/4 +80 a-b,a+b,c F 41 x,y,z;-x,-y+1/2,z+1/2;-y-1/4,x+1/4,z+1/4;y+1/4,-x+1/4,z+3/4;x,y+1/2,z+1/2;-x,-y,z;-y+1/4,x+1/4,z+3/4;y-1/4,-x+1/4,z+1/4;x+1/2,y+1/2,z;-y+1/4,x+3/4,z+1/4;y+3/4,-x+3/4,z+3/4;-x+1/2,-y+1/2,z;-y+3/4,x+3/4,z+3/4;y+1/4,-x+3/4,z+1/4 +81 a,b,c P -4 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z +81 a-b,a+b,c C -4 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +82 a,b,c I -4 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2 +82 a-b,a+b,c F -4 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +83 a,b,c P 4/m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z +83 a-b,a+b,c C 4/m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +84 a,b,c P 42/m x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-x,-y,-z;x,y,-z;y,-x,-z+1/2;-y,x,-z+1/2 +84 a-b,a+b,c C 42/m x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-x,-y,-z;x,y,-z;y,-x,-z+1/2;-y,x,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2 +85 a,b,c P 4/n [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z;y,-x+1/2,z;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z;-y,x+1/2,-z +85 a-b,a+b,c C 4/e :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z;y-1/4,-x+1/4,z;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z;-y-1/4,x+1/4,-z;x+1/2,y+1/2,z;-y+3/4,x+3/4,z;y+1/4,-x+3/4,z;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z;-y+1/4,x+3/4,-z +85 a,b,c;-1/4,1/4,0 P 4/n :1 x,y,z;-y+1/2,x-1/2,z;y+1/2,-x+1/2,z;-x+1/2,-y-1/2,-z;x+1/2,y+1/2,-z;-y,x,-z +85 a-b,a+b,c;-1/4,1/4,0 C 4/e :1 x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z;y,-x+1/2,z;-x+1/2,-y,-z;x,y+1/2,-z;y+1/2,-x+1/2,-z;-y,x,-z;x+1/2,y+1/2,z;-y+1/2,x+1/2,-z +86 a,b,c P 42/n [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y,x+1/2,z+1/2;y+1/2,-x,z+1/2;-x,-y,-z;x+1/2,y+1/2,-z;y,-x+1/2,-z+1/2;-y+1/2,x,-z+1/2 +86 a-b,a+b,c C 42/e :2 x,y,z;-x,-y+1/2,z;-y-1/4,x+1/4,z+1/2;y+1/4,-x+1/4,z+1/2;-x,-y,-z;x,y+1/2,-z;y-1/4,-x+1/4,-z+1/2;-y+1/4,x+1/4,-z+1/2;x+1/2,y+1/2,z;-y+1/4,x+3/4,z+1/2;y+3/4,-x+3/4,z+1/2;-x+1/2,-y+1/2,-z;y+1/4,-x+3/4,-z+1/2;-y+3/4,x+3/4,-z+1/2 +86 a,b,c;-1/4,-1/4,-1/4 P 42/n :1 x,y,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2 +86 a-b,a+b,c;-1/4,-1/4,-1/4 C 42/e :1 x,y,z;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+3/2,z +87 a,b,c I 4/m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2 +87 a-b,a+b,c F 4/m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +88 a,b,c I 41/a [origin 2] x,y,z;-x+1/2,-y,z+1/2;-y+3/4,x+1/4,z+1/4;y+3/4,-x+3/4,z+3/4;-x,-y,-z;x+1/2,y,-z+1/2;y+1/4,-x+3/4,-z+3/4;-y+1/4,x+1/4,-z+1/4;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-y+1/4,x+3/4,z+3/4;y+1/4,-x+1/4,z+1/4;-x+1/2,-y+1/2,-z+1/2;x,y+1/2,-z;y+3/4,-x+1/4,-z+1/4;-y+3/4,x+3/4,-z+3/4 +88 a-b,a+b,c F 41/d :2 x,y,z;-x+1/4,-y+1/4,z+1/2;-y+1/4,x+1/2,z+1/4;y,-x+3/4,z+3/4;-x,-y,-z;x+1/4,y+1/4,-z+1/2;y-1/4,-x+1/2,-z+3/4;-y,x+1/4,-z+1/4;x,y+1/2,z+1/2;-x-1/4,-y+1/4,z;-y-1/4,x+1/2,z+3/4;y,-x+1/4,z+1/4;-x,-y+1/2,-z+1/2;x-1/4,y+1/4,-z;y+1/4,-x+1/2,-z+1/4;-y,x+3/4,-z+3/4;x+1/2,y+1/2,z;-x+3/4,-y+3/4,z+1/2;y+1/2,-x+5/4,z+3/4;-x+1/2,-y+1/2,-z;x+3/4,y+3/4,-z+1/2;-y+1/2,x+3/4,-z+1/4;-x+1/4,-y+3/4,z;y+1/2,-x+3/4,z+1/4;x+1/4,y+3/4,-z;-y+1/2,x+5/4,-z+3/4 +88 a,b,c;0,-1/4,-1/8 I 41/a :1 x,y,z;-x+1/2,-y+42,z+1/2;-y+87/4,x+85/4,z+1/4;y-81/4,-x+87/4,z+3/4;-x,-y+42,-z+124/3;x+1/2,y,-z+251/6;y-83/4,-x+87/4,-z+505/12;-y+85/4,x+85/4,-z+499/12;x+1/2,y+1/2,z+1/2;-x,-y+85/2,z;-y+85/4,x+87/4,z+3/4;y-83/4,-x+85/4,z+1/4;-x+1/2,-y+85/2,-z+251/6;x,y+1/2,-z+124/3;y-81/4,-x+85/4,-z+499/12;-y+87/4,x+87/4,-z+505/12 +88 a-b,a+b,c;0,-1/4,-1/8 F 41/d :1 x,y,z;-x-83/4,-y+85/4,z+1/2;-y+1/4,x+43/2,z+1/4;y-21,-x+3/4,z+3/4;-x-21,-y+21,-z+124/3;x+1/4,y+1/4,-z+251/6;y-85/4,-x+1/2,-z+505/12;-y,x+85/4,-z+499/12;x,y+1/2,z+1/2;-x-85/4,-y+85/4,z;-y-1/4,x+43/2,z+3/4;y-21,-x+1/4,z+1/4;-x-21,-y+43/2,-z+251/6;x-1/4,y+1/4,-z+124/3;y-83/4,-x+1/2,-z+499/12;-y,x+87/4,-z+505/12;x+1/2,y+1/2,z;-x-81/4,-y+87/4,z+1/2;-y+3/4,x+22,z+1/4;y-41/2,-x+5/4,z+3/4;-x-41/2,-y+43/2,-z+124/3;x+3/4,y+3/4,-z+251/6;-y+1/2,x+87/4,-z+499/12;-x-83/4,-y+87/4,z;-y+1/4,x+22,z+3/4;y-41/2,-x+3/4,z+1/4;-x-41/2,-y+22,-z+251/6;x+1/4,y+3/4,-z+124/3;-y+1/2,x+89/4,-z+505/12 +89 a,b,c P 4 2 2 x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,y,-z;x,-y,-z;y,x,-z;-y,-x,-z +89 a-b,a+b,c C 4 2 2 x,y,z;-x,-y,z;-y,x,z;y,-x,z;-y,-x,-z;y,x,-z;-x,y,-z;x,-y,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +90 a,b,c P 4 21 2 x,y,z;-x,-y,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;y,x,-z;-y,-x,-z +90 a-b,a+b,c C 4 2 21 x,y,z;-x,-y,z;-y,x+1/2,z;y,-x+1/2,z;-y,-x+1/2,-z;y,x+1/2,-z;-x,y,-z;x,-y,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +91 a,b,c P 41 2 2 x,y,z;-x,-y,z+1/2;-y,x,z+1/4;y,-x,z+3/4;-x,y,-z;x,-y,-z+1/2;y,x,-z+3/4;-y,-x,-z+1/4 +91 a-b,a+b,c C 41 2 2 x,y,z;-x,-y,z+1/2;-y,x,z+1/4;y,-x,z+3/4;-y,-x,-z;y,x,-z+1/2;-x,y,-z+3/4;x,-y,-z+1/4;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/4;y+1/2,-x+1/2,z+3/4;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z+1/2;-x+1/2,y+1/2,-z+3/4;x+1/2,-y+1/2,-z+1/4 +92 a,b,c P 41 21 2 x,y,z;-x,-y,z+1/2;-y+1/2,x+1/2,z+1/4;y+1/2,-x+1/2,z+3/4;-x+1/2,y+1/2,-z+1/4;x+1/2,-y+1/2,-z+3/4;y,x,-z;-y,-x,-z+1/2 +92 a-b,a+b,c C 41 2 21 x,y,z;-x,-y,z+1/2;-y,x+1/2,z+1/4;y,-x+1/2,z+3/4;-y,-x+1/2,-z+1/4;y,x+1/2,-z+3/4;-x,y,-z;x,-y,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z+1/2 +93 a,b,c P 42 2 2 x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-x,y,-z;x,-y,-z;y,x,-z+1/2;-y,-x,-z+1/2 +93 a-b,a+b,c C 42 2 2 x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-y,-x,-z;y,x,-z;-x,y,-z+1/2;x,-y,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2 +94 a,b,c P 42 21 2 x,y,z;-x,-y,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;y,x,-z;-y,-x,-z +94 a-b,a+b,c C 42 2 21 x,y,z;-x,-y,z;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;-y,-x+1/2,-z+1/2;y,x+1/2,-z+1/2;-x,y,-z;x,-y,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +95 a,b,c P 43 2 2 x,y,z;-x,-y,z+1/2;-y,x,z+3/4;y,-x,z+1/4;-x,y,-z;x,-y,-z+1/2;y,x,-z+1/4;-y,-x,-z+3/4 +95 a-b,a+b,c C 43 2 2 x,y,z;-x,-y,z+1/2;-y,x,z+3/4;y,-x,z+1/4;-y,-x,-z;y,x,-z+1/2;-x,y,-z+1/4;x,-y,-z+3/4;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+3/4;y+1/2,-x+1/2,z+1/4;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z+1/2;-x+1/2,y+1/2,-z+1/4;x+1/2,-y+1/2,-z+3/4 +96 a,b,c P 43 21 2 x,y,z;-x,-y,z+1/2;-y+1/2,x+1/2,z+3/4;y+1/2,-x+1/2,z+1/4;-x+1/2,y+1/2,-z+3/4;x+1/2,-y+1/2,-z+1/4;y,x,-z;-y,-x,-z+1/2 +96 a-b,a+b,c C 43 2 21 x,y,z;-x,-y,z+1/2;-y,x+1/2,z+3/4;y,-x+1/2,z+1/4;-y,-x+1/2,-z+3/4;y,x+1/2,-z+1/4;-x,y,-z;x,-y,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z+1/2 +97 a,b,c I 4 2 2 x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,y,-z;x,-y,-z;y,x,-z;-y,-x,-z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2 +97 a-b,a+b,c F 4 2 2 x,y,z;-x,-y,z;-y,x,z;y,-x,z;-y,-x,-z;y,x,-z;-x,y,-z;x,-y,-z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;-y,-x+1/2,-z+1/2;y,x+1/2,-z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +98 a,b,c I 41 2 2 x,y,z;-x+1/2,-y+1/2,z+1/2;-y,x+1/2,z+1/4;y+1/2,-x,z+3/4;-x+1/2,y,-z+3/4;x,-y+1/2,-z+1/4;y+1/2,x+1/2,-z+1/2;-y,-x,-z;x+1/2,y+1/2,z+1/2;-x,-y,z;-y+1/2,x,z+3/4;y,-x+1/2,z+1/4;-x,y+1/2,-z+1/4;x+1/2,-y,-z+3/4;y,x,-z;-y+1/2,-x+1/2,-z+1/2 +98 a-b,a+b,c F 41 2 2 x,y,z;-x,-y+1/2,z+1/2;-y-1/4,x+1/4,z+1/4;y+1/4,-x+1/4,z+3/4;-y+1/4,-x+1/4,-z+3/4;y-1/4,x+1/4,-z+1/4;-x,y+1/2,-z+1/2;x,-y,-z;x,y+1/2,z+1/2;-x,-y,z;-y+1/4,x+1/4,z+3/4;y-1/4,-x+1/4,z+1/4;-y-1/4,-x+1/4,-z+1/4;y+1/4,x+1/4,-z+3/4;-x,y,-z;x,-y+1/2,-z+1/2;x+1/2,y+1/2,z;-y+1/4,x+3/4,z+1/4;y+3/4,-x+3/4,z+3/4;-y+3/4,-x+3/4,-z+3/4;y+1/4,x+3/4,-z+1/4;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,z;-y+3/4,x+3/4,z+3/4;y+1/4,-x+3/4,z+1/4;-y+1/4,-x+3/4,-z+1/4;y+3/4,x+3/4,-z+3/4;-x+1/2,y+1/2,-z +99 a,b,c P 4 m m x,y,z;-x,-y,z;-y,x,z;y,-x,z;x,-y,z;-x,y,z;-y,-x,z;y,x,z +99 a-b,a+b,c C 4 m m x,y,z;-x,-y,z;-y,x,z;y,-x,z;y,x,z;-y,-x,z;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +100 a,b,c P 4 b m x,y,z;-x,-y,z;-y,x,z;y,-x,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-y+1/2,-x+1/2,z;y+1/2,x+1/2,z +100 a-b,a+b,c C 4 m g1 x,y,z;-x,-y,z;-y,x,z;y,-x,z;y,x+1/2,z;-y,-x+1/2,z;x,-y+1/2,z;-x,y+1/2,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z +101 a,b,c P 42 c m x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;x,-y,z+1/2;-x,y,z+1/2;-y,-x,z;y,x,z +101 a-b,a+b,c C 42 m c x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;y,x,z+1/2;-y,-x,z+1/2;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +102 a,b,c P 42 n m x,y,z;-x,-y,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-y,-x,z;y,x,z +102 a-b,a+b,c C 42 m g2 x,y,z;-x,-y,z;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +103 a,b,c P 4 c c x,y,z;-x,-y,z;-y,x,z;y,-x,z;x,-y,z+1/2;-x,y,z+1/2;-y,-x,z+1/2;y,x,z+1/2 +103 a-b,a+b,c C 4 c c x,y,z;-x,-y,z;-y,x,z;y,-x,z;y,x,z+1/2;-y,-x,z+1/2;x,-y,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +104 a,b,c P 4 n c x,y,z;-x,-y,z;-y,x,z;y,-x,z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +104 a-b,a+b,c C 4 c g2 x,y,z;-x,-y,z;-y,x,z;y,-x,z;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z +105 a,b,c P 42 m c x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;x,-y,z;-x,y,z;-y,-x,z+1/2;y,x,z+1/2 +105 a-b,a+b,c C 42 c m x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;y,x,z;-y,-x,z;x,-y,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +106 a,b,c P 42 b c x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +106 a-b,a+b,c C 42 c g1 x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;y,x+1/2,z;-y,-x+1/2,z;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2 +107 a,b,c I 4 m m x,y,z;-x,-y,z;-y,x,z;y,-x,z;x,-y,z;-x,y,z;-y,-x,z;y,x,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +107 a-b,a+b,c F 4 m m x,y,z;-x,-y,z;-y,x,z;y,-x,z;y,x,z;-y,-x,z;x,-y,z;-x,y,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +108 a,b,c I 4 c m x,y,z;-x,-y,z;-y,x,z;y,-x,z;x,-y,z+1/2;-x,y,z+1/2;-y,-x,z+1/2;y,x,z+1/2;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-y+1/2,-x+1/2,z;y+1/2,x+1/2,z +108 a-b,a+b,c F 4 m c x,y,z;-x,-y,z;-y,x,z;y,-x,z;y,x,z+1/2;-y,-x,z+1/2;x,-y,z+1/2;-x,y,z+1/2;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;y,x+1/2,z;-y,-x+1/2,z;x,-y+1/2,z;-x,y+1/2,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +109 a,b,c I 41 m d x,y,z;-x+1/2,-y+1/2,z+1/2;-y,x+1/2,z+1/4;y+1/2,-x,z+3/4;x,-y,z;-x+1/2,y+1/2,z+1/2;-y,-x+1/2,z+1/4;y+1/2,x,z+3/4;x+1/2,y+1/2,z+1/2;-x,-y,z;-y+1/2,x,z+3/4;y,-x+1/2,z+1/4;x+1/2,-y+1/2,z+1/2;-x,y,z;-y+1/2,-x,z+3/4;y,x+1/2,z+1/4 +109 a-b,a+b,c F 41 d m x,y,z;-x,-y+1/2,z+1/2;-y-1/4,x+1/4,z+1/4;y+1/4,-x+1/4,z+3/4;y,x,z;-y,-x+1/2,z+1/2;x-1/4,-y+1/4,z+1/4;-x+1/4,y+1/4,z+3/4;x,y+1/2,z+1/2;-x,-y,z;-y+1/4,x+1/4,z+3/4;y-1/4,-x+1/4,z+1/4;y,x+1/2,z+1/2;-y,-x,z;x+1/4,-y+1/4,z+3/4;-x-1/4,y+1/4,z+1/4;x+1/2,y+1/2,z;-y+1/4,x+3/4,z+1/4;y+3/4,-x+3/4,z+3/4;y+1/2,x+1/2,z;x+1/4,-y+3/4,z+1/4;-x+3/4,y+3/4,z+3/4;-x+1/2,-y+1/2,z;-y+3/4,x+3/4,z+3/4;y+1/4,-x+3/4,z+1/4;-y+1/2,-x+1/2,z;x+3/4,-y+3/4,z+3/4;-x+1/4,y+3/4,z+1/4 +110 a,b,c I 41 c d x,y,z;-x+1/2,-y+1/2,z+1/2;-y,x+1/2,z+1/4;y+1/2,-x,z+3/4;x,-y,z+1/2;-x+1/2,y+1/2,z;-y,-x+1/2,z+3/4;y+1/2,x,z+1/4;x+1/2,y+1/2,z+1/2;-x,-y,z;-y+1/2,x,z+3/4;y,-x+1/2,z+1/4;x+1/2,-y+1/2,z;-x,y,z+1/2;-y+1/2,-x,z+1/4;y,x+1/2,z+3/4 +110 a-b,a+b,c F 41 d c x,y,z;-x,-y+1/2,z+1/2;-y-1/4,x+1/4,z+1/4;y+1/4,-x+1/4,z+3/4;y,x,z+1/2;-y,-x+1/2,z;x-1/4,-y+1/4,z+3/4;-x+1/4,y+1/4,z+1/4;x,y+1/2,z+1/2;-x,-y,z;-y+1/4,x+1/4,z+3/4;y-1/4,-x+1/4,z+1/4;y,x+1/2,z;-y,-x,z+1/2;x+1/4,-y+1/4,z+1/4;-x-1/4,y+1/4,z+3/4;x+1/2,y+1/2,z;-y+1/4,x+3/4,z+1/4;y+3/4,-x+3/4,z+3/4;y+1/2,x+1/2,z+1/2;x+1/4,-y+3/4,z+3/4;-x+3/4,y+3/4,z+1/4;-x+1/2,-y+1/2,z;-y+3/4,x+3/4,z+3/4;y+1/4,-x+3/4,z+1/4;-y+1/2,-x+1/2,z+1/2;x+3/4,-y+3/4,z+1/4;-x+1/4,y+3/4,z+3/4 +111 a,b,c P -4 2 m x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-x,y,-z;x,-y,-z;-y,-x,z;y,x,z +111 a-b,a+b,c C -4 m 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-y,-x,-z;y,x,-z;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +112 a,b,c P -4 2 c x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-x,y,-z+1/2;x,-y,-z+1/2;-y,-x,z+1/2;y,x,z+1/2 +112 a-b,a+b,c C -4 c 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-y,-x,-z+1/2;y,x,-z+1/2;x,-y,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z+1/2;y+1/2,x+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +113 a,b,c P -4 21 m x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-y+1/2,-x+1/2,z;y+1/2,x+1/2,z +113 a-b,a+b,c C -4 m 21 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-y,-x+1/2,-z;y,x+1/2,-z;x,-y+1/2,z;-x,y+1/2,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +114 a,b,c P -4 21 c x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +114 a-b,a+b,c C -4 c 21 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-y,-x+1/2,-z+1/2;y,x+1/2,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +115 a,b,c P -4 m 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x,-y,z;-x,y,z;y,x,-z;-y,-x,-z +115 a-b,a+b,c C -4 2 m x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;y,x,z;-y,-x,z;-x,y,-z;x,-y,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +116 a,b,c P -4 c 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x,-y,z+1/2;-x,y,z+1/2;y,x,-z+1/2;-y,-x,-z+1/2 +116 a-b,a+b,c C -4 2 c x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;y,x,z+1/2;-y,-x,z+1/2;-x,y,-z+1/2;x,-y,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2 +117 a,b,c P -4 b 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z +117 a-b,a+b,c C -4 2 g1 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;y,x+1/2,z;-y,-x+1/2,z;-x,y+1/2,-z;x,-y+1/2,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +118 a,b,c P -4 n 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2 +118 a-b,a+b,c C -4 2 g2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +119 a,b,c I -4 m 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x,-y,z;-x,y,z;y,x,-z;-y,-x,-z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2 +119 a-b,a+b,c F -4 2 m x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;y,x,z;-y,-x,z;-x,y,-z;x,-y,-z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z +120 a,b,c I -4 c 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;x,-y,z+1/2;-x,y,z+1/2;y,x,-z+1/2;-y,-x,-z+1/2;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z +120 a-b,a+b,c F -4 2 c x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;y,x,z+1/2;-y,-x,z+1/2;-x,y,-z+1/2;x,-y,-z+1/2;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;y,x+1/2,z;-y,-x+1/2,z;-x,y+1/2,-z;x,-y+1/2,-z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2 +121 a,b,c I -4 2 m x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-x,y,-z;x,-y,-z;-y,-x,z;y,x,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +121 a-b,a+b,c F -4 m 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-y,-x,-z;y,x,-z;x,-y,z;-x,y,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;-y,-x+1/2,-z+1/2;y,x+1/2,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +122 a,b,c I -4 2 d x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-x+1/2,y,-z+3/4;x+1/2,-y,-z+3/4;-y+1/2,-x,z+3/4;y+1/2,x,z+3/4;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;-x,y+1/2,-z+1/4;x,-y+1/2,-z+1/4;-y,-x+1/2,z+1/4;y,x+1/2,z+1/4 +122 a-b,a+b,c F -4 d 2 x,y,z;-x,-y,z;y,-x,-z;-y,x,-z;-y+1/4,-x+1/4,-z+3/4;y+1/4,x+1/4,-z+3/4;x+1/4,-y+1/4,z+3/4;-x+1/4,y+1/4,z+3/4;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;-y-1/4,-x+1/4,-z+1/4;y-1/4,x+1/4,-z+1/4;x-1/4,-y+1/4,z+1/4;-x-1/4,y+1/4,z+1/4;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;-y+3/4,-x+3/4,-z+3/4;y+3/4,x+3/4,-z+3/4;x+3/4,-y+3/4,z+3/4;-x+3/4,y+3/4,z+3/4;-y+1/4,-x+3/4,-z+1/4;y+1/4,x+3/4,-z+1/4;x+1/4,-y+3/4,z+1/4;-x+1/4,y+3/4,z+1/4 +123 a,b,c P 4/m m m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,y,-z;x,-y,-z;y,x,-z;-y,-x,-z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x,-y,z;-x,y,z;-y,-x,z;y,x,z +123 a-b,a+b,c C 4/m m m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-y,-x,-z;y,x,-z;-x,y,-z;x,-y,-z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;y,x,z;-y,-x,z;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +124 a,b,c P 4/m c c x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,y,-z+1/2;x,-y,-z+1/2;y,x,-z+1/2;-y,-x,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x,-y,z+1/2;-x,y,z+1/2;-y,-x,z+1/2;y,x,z+1/2 +124 a-b,a+b,c C 4/m c c x,y,z;-x,-y,z;-y,x,z;y,-x,z;-y,-x,-z+1/2;y,x,-z+1/2;-x,y,-z+1/2;x,-y,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;y,x,z+1/2;-y,-x,z+1/2;x,-y,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-y+1/2,-x+1/2,-z+1/2;y+1/2,x+1/2,-z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +125 a,b,c P 4/n b m [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z;y,-x+1/2,z;-x+1/2,y,-z;x,-y+1/2,-z;y,x,-z;-y+1/2,-x+1/2,-z;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z;-y,x+1/2,-z;x+1/2,-y,z;-x,y+1/2,z;-y,-x,z;y+1/2,x+1/2,z +125 a-b,a+b,c C 4/e m g1 :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z;y-1/4,-x+1/4,z;-y+1/4,-x+1/4,-z;y-1/4,x+1/4,-z;-x,y,-z;x,-y+1/2,-z;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z;-y-1/4,x+1/4,-z;y+1/4,x+1/4,z;-y-1/4,-x+1/4,z;x,-y,z;-x,y+1/2,z;x+1/2,y+1/2,z;-y+3/4,x+3/4,z;y+1/4,-x+3/4,z;-y+3/4,-x+3/4,-z;y+1/4,x+3/4,-z;-x+1/2,y+1/2,-z;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z;-y+1/4,x+3/4,-z;y+3/4,x+3/4,z;-y+1/4,-x+3/4,z;x+1/2,-y+1/2,z +125 a,b,c;-1/4,-1/4,0 P 4/n b m :1 x,y,z;y,x,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-y+1/2,-x+1/2,z;y+1/2,x+1/2,z +125 a-b,a+b,c;-1/4,-1/4,0 C 4/e m g1 :1 x,y,z;-y+1/2,x+1/2,z;y-1/2,-x+1/2,z;-y+1/2,-x+1/2,-z;y-1/2,x+1/2,-z;-x,y,-z;-x,-y+1/2,-z;x,y+1/2,-z;y,-x+1/2,-z;-y,x+1/2,-z;y,x+1/2,z;-y,-x+1/2,z;x,-y+1/2,z;-x,y+1/2,z;x+1/2,y+1/2,z;-x+1/2,-y+3/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+3/2,-z +126 a,b,c P 4/n n c [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z;y,-x+1/2,z;-x+1/2,y,-z+1/2;x,-y+1/2,-z+1/2;y,x,-z+1/2;-y+1/2,-x+1/2,-z+1/2;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z;-y,x+1/2,-z;x+1/2,-y,z+1/2;-x,y+1/2,z+1/2;-y,-x,z+1/2;y+1/2,x+1/2,z+1/2 +126 a-b,a+b,c C 4/e c g2 :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z;y-1/4,-x+1/4,z;-y+1/4,-x+1/4,-z+1/2;y-1/4,x+1/4,-z+1/2;-x,y,-z+1/2;x,-y+1/2,-z+1/2;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z;-y-1/4,x+1/4,-z;y+1/4,x+1/4,z+1/2;-y-1/4,-x+1/4,z+1/2;x,-y,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-y+3/4,x+3/4,z;y+1/4,-x+3/4,z;-y+3/4,-x+3/4,-z+1/2;y+1/4,x+3/4,-z+1/2;-x+1/2,y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z;-y+1/4,x+3/4,-z;y+3/4,x+3/4,z+1/2;-y+1/4,-x+3/4,z+1/2;x+1/2,-y+1/2,z+1/2 +126 a,b,c;-1/4,-1/4,-1/4 P 4/n n c :1 x,y,z;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +126 a-b,a+b,c;-1/4,-1/4,-1/4 C 4/e c g2 :1 x,y,z;-y+1/2,x+1/2,z;y-1/2,-x+1/2,z;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+3/2,z +127 a,b,c P 4/m b m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-y+1/2,-x+1/2,z;y+1/2,x+1/2,z +127 a-b,a+b,c C 4/m m g1 x,y,z;-x,-y,z;-y,x,z;y,-x,z;-y,-x+1/2,-z;y,x+1/2,-z;-x,y+1/2,-z;x,-y+1/2,-z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;y,x+1/2,z;-y,-x+1/2,z;x,-y+1/2,z;-x,y+1/2,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z +128 a,b,c P 4/m n c x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +128 a+b,-a+b,c C 4/m c g2 x,y,z;-x,-y,z;-y,x,z;y,-x,z;y+1/2,x,-z+1/2;-y+1/2,-x,-z+1/2;x+1/2,-y,-z+1/2;-x+1/2,y,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;-y+1/2,-x,z+1/2;y+1/2,x,z+1/2;-x+1/2,y,z+1/2;x+1/2,-y,z+1/2;x+1/2,y-1/2,z;-x+1/2,-y-1/2,z;-y+1/2,x-1/2,z;y+1/2,-x-1/2,z;-x+1/2,-y-1/2,-z;x+1/2,y-1/2,-z;y+1/2,-x-1/2,-z;-y+1/2,x-1/2,-z +129 a,b,c P 4/n m m [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z;y,-x+1/2,z;-x,y+1/2,-z;x+1/2,-y,-z;y+1/2,x+1/2,-z;-y,-x,-z;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z;-y,x+1/2,-z;x,-y+1/2,z;-x+1/2,y,z;-y+1/2,-x+1/2,z;y,x,z +129 a-b,a+b,c C 4/e m m :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z;y-1/4,-x+1/4,z;-y-1/4,-x+1/4,-z;y+1/4,x+1/4,-z;-x,y+1/2,-z;x,-y,-z;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z;-y-1/4,x+1/4,-z;y-1/4,x+1/4,z;-y+1/4,-x+1/4,z;x,-y+1/2,z;-x,y,z;x+1/2,y+1/2,z;-y+3/4,x+3/4,z;y+1/4,-x+3/4,z;-y+1/4,-x+3/4,-z;y+3/4,x+3/4,-z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z;-y+1/4,x+3/4,-z;y+1/4,x+3/4,z;-y+3/4,-x+3/4,z;-x+1/2,y+1/2,z +129 a,b,c;-1/4,1/4,0 P 4/n m m :1 x,y,z;-y+1/2,x-1/2,z;y+1/2,-x+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y-1/2,-z;-y,-x,-z;-x+1/2,-y-1/2,-z;x+1/2,y+1/2,-z;-y,x,-z;x,-y,z;-y+1/2,-x+1/2,z;y+1/2,x-1/2,z +129 a-b,a+b,c;-1/4,1/4,0 C 4/e m m :1 x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z;y,-x+1/2,z;-y,-x+1/2,-z;y+1/2,x,-z;-x+1/2,y+1/2,-z;x,-y,-z;-x+1/2,-y,-z;x,y+1/2,-z;y+1/2,-x+1/2,-z;-y,x,-z;y,x,z;-y+1/2,-x+1/2,z;x,-y+1/2,z;-x+1/2,y,z;x+1/2,y+1/2,z;x+1/2,-y+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z +130 a,b,c P 4/n c c [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z;y,-x+1/2,z;-x,y+1/2,-z+1/2;x+1/2,-y,-z+1/2;y+1/2,x+1/2,-z+1/2;-y,-x,-z+1/2;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z;-y,x+1/2,-z;x,-y+1/2,z+1/2;-x+1/2,y,z+1/2;-y+1/2,-x+1/2,z+1/2;y,x,z+1/2 +130 a-b,a+b,c C 4/e c c :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z;y-1/4,-x+1/4,z;-y-1/4,-x+1/4,-z+1/2;y+1/4,x+1/4,-z+1/2;-x,y+1/2,-z+1/2;x,-y,-z+1/2;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z;-y-1/4,x+1/4,-z;y-1/4,x+1/4,z+1/2;-y+1/4,-x+1/4,z+1/2;x,-y+1/2,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-y+3/4,x+3/4,z;y+1/4,-x+3/4,z;-y+1/4,-x+3/4,-z+1/2;y+3/4,x+3/4,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z;-y+1/4,x+3/4,-z;y+1/4,x+3/4,z+1/2;-y+3/4,-x+3/4,z+1/2;-x+1/2,y+1/2,z+1/2 +130 a,b,c;-1/4,1/4,0 P 4/n c c :1 x,y,z;-y+1/2,x-1/2,z;y+1/2,-x+1/2,z;-x+1/2,y+1/2,-z+1/2;x+1/2,-y-1/2,-z+1/2;-y,-x,-z+1/2;-x+1/2,-y-1/2,-z;x+1/2,y+1/2,-z;-y,x,-z;x,-y,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x-1/2,z+1/2 +130 a-b,a+b,c;-1/4,1/4,0 C 4/e c c :1 x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z;y,-x+1/2,z;-y,-x+1/2,-z+1/2;y+1/2,x,-z+1/2;-x+1/2,y+1/2,-z+1/2;x,-y,-z+1/2;-x+1/2,-y,-z;x,y+1/2,-z;y+1/2,-x+1/2,-z;-y,x,-z;y,x,z+1/2;-y+1/2,-x+1/2,z+1/2;x,-y+1/2,z+1/2;-x+1/2,y,z+1/2;x+1/2,y+1/2,z;x+1/2,-y+1/2,-z+1/2;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z+1/2 +131 a,b,c P 42/m m c x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-x,y,-z;x,-y,-z;y,x,-z+1/2;-y,-x,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z+1/2;-y,x,-z+1/2;x,-y,z;-x,y,z;-y,-x,z+1/2;y,x,z+1/2 +131 a-b,a+b,c C 42/m c m x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-y,-x,-z;y,x,-z;-x,y,-z+1/2;x,-y,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z+1/2;-y,x,-z+1/2;y,x,z;-y,-x,z;x,-y,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +132 a,b,c P 42/m c m x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-x,y,-z+1/2;x,-y,-z+1/2;y,x,-z;-y,-x,-z;-x,-y,-z;x,y,-z;y,-x,-z+1/2;-y,x,-z+1/2;x,-y,z+1/2;-x,y,z+1/2;-y,-x,z;y,x,z +132 a-b,a+b,c C 42/m m c x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-y,-x,-z+1/2;y,x,-z+1/2;-x,y,-z;x,-y,-z;-x,-y,-z;x,y,-z;y,-x,-z+1/2;-y,x,-z+1/2;y,x,z+1/2;-y,-x,z+1/2;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,-x+1/2,-z+1/2;y+1/2,x+1/2,-z+1/2;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +133 a,b,c P 42/n b c [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z+1/2;y,-x+1/2,z+1/2;-x+1/2,y,-z;x,-y+1/2,-z;y,x,-z+1/2;-y+1/2,-x+1/2,-z+1/2;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z+1/2;-y,x+1/2,-z+1/2;x+1/2,-y,z;-x,y+1/2,z;-y,-x,z+1/2;y+1/2,x+1/2,z+1/2 +133 a-b,a+b,c C 42/e c g1 :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z+1/2;y-1/4,-x+1/4,z+1/2;-y+1/4,-x+1/4,-z;y-1/4,x+1/4,-z;-x,y,-z+1/2;x,-y+1/2,-z+1/2;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z+1/2;-y-1/4,x+1/4,-z+1/2;y+1/4,x+1/4,z;-y-1/4,-x+1/4,z;x,-y,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-y+3/4,x+3/4,z+1/2;y+1/4,-x+3/4,z+1/2;-y+3/4,-x+3/4,-z;y+1/4,x+3/4,-z;-x+1/2,y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z+1/2;-y+1/4,x+3/4,-z+1/2;y+3/4,x+3/4,z;-y+1/4,-x+3/4,z;x+1/2,-y+1/2,z+1/2 +133 a,b,c;-1/4,1/4,-1/4 P 42/n b c :1 x,y,z;-y+1/2,x-1/2,z+1/2;y+1/2,-x+1/2,z+1/2;x,-y,-z+1/2;-x+1/2,-y-1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y-1/2,z;-x+1/2,y+1/2,z;-y,-x,z+1/2 +133 a-b,a+b,c;-1/4,1/4,-1/4 C 42/e c g1 :1 x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z+1/2;y,-x+1/2,z+1/2;-y+1/2,-x+1/2,-z+1/2;y,x,-z+1/2;-x+1/2,-y,-z+1/2;x,y+1/2,-z+1/2;y+1/2,x,z;-y,-x+1/2,z;x,-y,z+1/2;-x+1/2,y+1/2,z+1/2;x+1/2,y+1/2,z;y+1/2,x+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2 +134 a,b,c P 42/n n m [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z+1/2;y,-x+1/2,z+1/2;-x+1/2,y,-z+1/2;x,-y+1/2,-z+1/2;y,x,-z;-y+1/2,-x+1/2,-z;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z+1/2;-y,x+1/2,-z+1/2;x+1/2,-y,z+1/2;-x,y+1/2,z+1/2;-y,-x,z;y+1/2,x+1/2,z +134 a-b,a+b,c C 42/e m g2 :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z+1/2;y-1/4,-x+1/4,z+1/2;-y+1/4,-x+1/4,-z+1/2;y-1/4,x+1/4,-z+1/2;-x,y,-z;x,-y+1/2,-z;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z+1/2;-y-1/4,x+1/4,-z+1/2;y+1/4,x+1/4,z+1/2;-y-1/4,-x+1/4,z+1/2;x,-y,z;-x,y+1/2,z;x+1/2,y+1/2,z;-y+3/4,x+3/4,z+1/2;y+1/4,-x+3/4,z+1/2;-y+3/4,-x+3/4,-z+1/2;y+1/4,x+3/4,-z+1/2;-x+1/2,y+1/2,-z;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z+1/2;-y+1/4,x+3/4,-z+1/2;y+3/4,x+3/4,z+1/2;-y+1/4,-x+3/4,z+1/2;x+1/2,-y+1/2,z +134 a,b,c;-1/4,1/4,-1/4 P 42/n n m :1 x,y,z;-y+1/2,x-1/2,z+1/2;y+1/2,-x+1/2,z+1/2;y+1/2,x-1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;-x+1/2,-y-1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y-1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-y,-x,z +134 a-b,a+b,c;-1/4,1/4,-1/4 C 42/e m g2 :1 x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z+1/2;y,-x+1/2,z+1/2;-x+1/2,y,-z+1/2;x,-y+1/2,-z+1/2;-x+1/2,-y,-z+1/2;x,y+1/2,-z+1/2;y+1/2,x,z+1/2;-y,-x+1/2,z+1/2;x,-y,z;-x+1/2,y+1/2,z;x+1/2,y+1/2,z;x+1/2,-y+1/2,z +135 a,b,c P 42/m b c x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z+1/2;-y,x,-z+1/2;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +135 a-b,a+b,c C 42/m c g1 x,y,z;-x,-y,z;-y,x,z+1/2;y,-x,z+1/2;-y,-x+1/2,-z;y,x+1/2,-z;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z+1/2;-y,x,-z+1/2;y,x+1/2,z;-y,-x+1/2,z;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2 +136 a,b,c P 42/m n m x,y,z;-x,-y,z;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;y,x,-z;-y,-x,-z;-x,-y,-z;x,y,-z;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-y,-x,z;y,x,z +136 a-b,a+b,c C 42/m m g2 x,y,z;-x,-y,z;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;-y,-x+1/2,-z+1/2;y,x+1/2,-z+1/2;-x,y,-z;x,-y,-z;-x,-y,-z;x,y,-z;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;x,-y,z;-x,y,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +137 a,b,c P 42/n m c [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z+1/2;y,-x+1/2,z+1/2;-x,y+1/2,-z;x+1/2,-y,-z;y+1/2,x+1/2,-z+1/2;-y,-x,-z+1/2;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z+1/2;-y,x+1/2,-z+1/2;x,-y+1/2,z;-x+1/2,y,z;-y+1/2,-x+1/2,z+1/2;y,x,z+1/2 +137 a-b,a+b,c C 42/e c m :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z+1/2;y-1/4,-x+1/4,z+1/2;-y-1/4,-x+1/4,-z;y+1/4,x+1/4,-z;-x,y+1/2,-z+1/2;x,-y,-z+1/2;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z+1/2;-y-1/4,x+1/4,-z+1/2;y-1/4,x+1/4,z;-y+1/4,-x+1/4,z;x,-y+1/2,z+1/2;-x,y,z+1/2;x+1/2,y+1/2,z;-y+3/4,x+3/4,z+1/2;y+1/4,-x+3/4,z+1/2;-y+1/4,-x+3/4,-z;y+3/4,x+3/4,-z;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z+1/2;-y+1/4,x+3/4,-z+1/2;y+1/4,x+3/4,z;-y+3/4,-x+3/4,z;-x+1/2,y+1/2,z+1/2 +137 a,b,c;-1/4,1/4,-1/4 P 42/n m c :1 x,y,z;-y+1/2,x-1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y-1/2,-z+1/2;-x+1/2,-y-1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x,-y,z;-y+1/2,-x+1/2,z+1/2;y+1/2,x-1/2,z+1/2 +137 a-b,a+b,c;-1/4,1/4,-1/4 C 42/e c m :1 x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z+1/2;y,-x+1/2,z+1/2;-y,-x+1/2,-z+1/2;y+1/2,x,-z+1/2;-x+1/2,-y,-z+1/2;x,y+1/2,-z+1/2;y,x,z;-y+1/2,-x+1/2,z;x,-y+1/2,z+1/2;-x+1/2,y,z+1/2;x+1/2,y+1/2,z;y+1/2,x+1/2,z +138 a,b,c P 42/n c m [origin 2] x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z+1/2;y,-x+1/2,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y,-z+1/2;y+1/2,x+1/2,-z;-y,-x,-z;-x,-y,-z;x+1/2,y+1/2,-z;y+1/2,-x,-z+1/2;-y,x+1/2,-z+1/2;x,-y+1/2,z+1/2;-x+1/2,y,z+1/2;-y+1/2,-x+1/2,z;y,x,z +138 a-b,a+b,c C 42/e m c :2 x,y,z;-x,-y+1/2,z;-y+1/4,x+1/4,z+1/2;y-1/4,-x+1/4,z+1/2;-y-1/4,-x+1/4,-z+1/2;y+1/4,x+1/4,-z+1/2;-x,y+1/2,-z;x,-y,-z;-x,-y,-z;x,y+1/2,-z;y+1/4,-x+1/4,-z+1/2;-y-1/4,x+1/4,-z+1/2;y-1/4,x+1/4,z+1/2;-y+1/4,-x+1/4,z+1/2;x,-y+1/2,z;-x,y,z;x+1/2,y+1/2,z;-y+3/4,x+3/4,z+1/2;y+1/4,-x+3/4,z+1/2;-y+1/4,-x+3/4,-z+1/2;y+3/4,x+3/4,-z+1/2;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;y+3/4,-x+3/4,-z+1/2;-y+1/4,x+3/4,-z+1/2;y+1/4,x+3/4,z+1/2;-y+3/4,-x+3/4,z+1/2;-x+1/2,y+1/2,z +138 a,b,c;-1/4,1/4,-1/4 P 42/n c m :1 x,y,z;-y+1/2,x-1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-y,-x,-z+1/2;-x+1/2,-y-1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x,-y,z+1/2;-y+1/2,-x+1/2,z;y+1/2,x-1/2,z +138 a-b,a+b,c;-1/4,1/4,-1/4 C 42/e m c :1 x,y,z;-x+1/2,-y+1/2,z;-y+1/2,x,z+1/2;y,-x+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x,-y,-z+1/2;-x+1/2,-y,-z+1/2;x,y+1/2,-z+1/2;y,x,z+1/2;-y+1/2,-x+1/2,z+1/2;x,-y+1/2,z;-x+1/2,y,z;x+1/2,y+1/2,z;x+1/2,-y+1/2,-z+1/2;y+1/2,x+1/2,z+1/2 +139 a,b,c I 4/m m m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,y,-z;x,-y,-z;y,x,-z;-y,-x,-z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x,-y,z;-x,y,z;-y,-x,z;y,x,z;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2 +139 a-b,a+b,c F 4/m m m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-y,-x,-z;y,x,-z;-x,y,-z;x,-y,-z;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;y,x,z;-y,-x,z;x,-y,z;-x,y,z;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;-y,-x+1/2,-z+1/2;y,x+1/2,-z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-y+1/2,-x+1/2,-z;y+1/2,x+1/2,-z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z +140 a,b,c I 4/m c m x,y,z;-x,-y,z;-y,x,z;y,-x,z;-x,y,-z+1/2;x,-y,-z+1/2;y,x,-z+1/2;-y,-x,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;x,-y,z+1/2;-x,y,z+1/2;-y,-x,z+1/2;y,x,z+1/2;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;y+1/2,-x+1/2,z+1/2;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-y+1/2,-x+1/2,z;y+1/2,x+1/2,z +140 a-b,a+b,c F 4/m m c x,y,z;-x,-y,z;-y,x,z;y,-x,z;-y,-x,-z+1/2;y,x,-z+1/2;-x,y,-z+1/2;x,-y,-z+1/2;-x,-y,-z;x,y,-z;y,-x,-z;-y,x,-z;y,x,z+1/2;-y,-x,z+1/2;x,-y,z+1/2;-x,y,z+1/2;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-y,x+1/2,z+1/2;y,-x+1/2,z+1/2;-y,-x+1/2,-z;y,x+1/2,-z;-x,y+1/2,-z;x,-y+1/2,-z;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;y,x+1/2,z;-y,-x+1/2,z;x,-y+1/2,z;-x,y+1/2,z;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-y+1/2,x+1/2,z;y+1/2,-x+1/2,z;-y+1/2,-x+1/2,-z+1/2;y+1/2,x+1/2,-z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2 +141 a,b,c I 41/a m d [origin 2] x,y,z;-x+1/2,-y,z+1/2;-y+1/4,x+3/4,z+1/4;y+1/4,-x+1/4,z+3/4;-x+1/2,y,-z+1/2;x,-y,-z;y+1/4,x+3/4,-z+1/4;-y+1/4,-x+1/4,-z+3/4;-x,-y,-z;x+1/2,y,-z+1/2;y+3/4,-x+1/4,-z+3/4;-y+3/4,x+3/4,-z+1/4;x+1/2,-y,z+1/2;-x,y,z;-y+3/4,-x+1/4,z+3/4;y+3/4,x+3/4,z+1/4;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-y+3/4,x+1/4,z+3/4;y+3/4,-x+3/4,z+1/4;-x,y+1/2,-z;x+1/2,-y+1/2,-z+1/2;y+3/4,x+1/4,-z+3/4;-y+3/4,-x+3/4,-z+1/4;-x+1/2,-y+1/2,-z+1/2;x,y+1/2,-z;y+1/4,-x+3/4,-z+1/4;-y+1/4,x+1/4,-z+3/4;x,-y+1/2,z;-x+1/2,y+1/2,z+1/2;-y+1/4,-x+3/4,z+1/4;y+1/4,x+1/4,z+3/4 +141 a-b,a+b,c F 41/d d m :2 x,y,z;-x+1/4,-y+1/4,z+1/2;-y-1/4,x+1/2,z+1/4;y,-x+1/4,z+3/4;-y+1/4,-x+1/4,-z+1/2;y,x,-z;-x-1/4,y+1/2,-z+1/4;x,-y+1/4,-z+3/4;-x,-y,-z;x+1/4,y+1/4,-z+1/2;y+1/4,-x+1/2,-z+3/4;-y,x+3/4,-z+1/4;y+1/4,x+1/4,z+1/2;-y,-x,z;x+1/4,-y+1/2,z+3/4;-x,y+3/4,z+1/4;x,y+1/2,z+1/2;-x-1/4,-y+1/4,z;-y+1/4,x+1/2,z+3/4;y,-x+3/4,z+1/4;-y-1/4,-x+1/4,-z;y,x+1/2,-z+1/2;-x+1/4,y+1/2,-z+3/4;x,-y+3/4,-z+1/4;-x,-y+1/2,-z+1/2;x-1/4,y+1/4,-z;y-1/4,-x+1/2,-z+1/4;-y,x+1/4,-z+3/4;y-1/4,x+1/4,z;-y,-x+1/2,z+1/2;x-1/4,-y+1/2,z+1/4;-x,y+1/4,z+3/4;x+1/2,y+1/2,z;-x+3/4,-y+3/4,z+1/2;y+1/2,-x+3/4,z+3/4;-y+3/4,-x+3/4,-z+1/2;y+1/2,x+1/2,-z;x+1/2,-y+3/4,-z+3/4;-x+1/2,-y+1/2,-z;x+3/4,y+3/4,-z+1/2;-y+1/2,x+5/4,-z+1/4;y+3/4,x+3/4,z+1/2;-y+1/2,-x+1/2,z;-x+1/2,y+5/4,z+1/4;-x+1/4,-y+3/4,z;y+1/2,-x+5/4,z+1/4;-y+1/4,-x+3/4,-z;x+1/2,-y+5/4,-z+1/4;x+1/4,y+3/4,-z;-y+1/2,x+3/4,-z+3/4;y+1/4,x+3/4,z;-x+1/2,y+3/4,z+3/4 +141 a,b,c;0,1/4,-1/8 I 41/a m d :1 x,y,z;-x+1/2,-y-130/3,z+1/2;-y-21.41667,x-20.91667,z+1/4;y+21.91667,-x-21.41667,z+3/4;-x+1/2,y,-z+251/6;x,-y-130/3,-z+124/3;y+21.91667,x-20.91667,-z+499/12;-y-21.41667,-x-21.41667,-z+505/12;-x,-y-130/3,-z+124/3;x+1/2,y,-z+251/6;y+22.41667,-x-21.41667,-z+505/12;-y-20.91667,x-20.91667,-z+499/12;x+1/2,-y-130/3,z+1/2;-x,y,z;-y-20.91667,-x-21.41667,z+3/4;y+22.41667,x-20.91667,z+1/4;x+1/2,y+1/2,z+1/2;-x,-y-257/6,z;-y-20.91667,x-21.41667,z+3/4;y+22.41667,-x-20.91667,z+1/4;-x,y+1/2,-z+124/3;x+1/2,-y-257/6,-z+251/6;y+22.41667,x-21.41667,-z+505/12;-y-20.91667,-x-20.91667,-z+499/12;-x+1/2,-y-257/6,-z+251/6;x,y+1/2,-z+124/3;y+21.91667,-x-20.91667,-z+499/12;-y-21.41667,x-21.41667,-z+505/12;x,-y-257/6,z;-x+1/2,y+1/2,z+1/2;-y-21.41667,-x-20.91667,z+1/4;y+21.91667,x-21.41667,z+3/4 +141 a-b,a+b,c;0,1/4,-1/8 F 41/d d m :1 x,y,z;-x+21.91667,-y-21.41667,z+1/2;-y-1/4,x-21.16667,z+1/4;y+65/3,-x+1/4,z+3/4;-y+1/4,-x+1/4,-z+251/6;y+65/3,x-65/3,-z+124/3;-x+21.41667,y+1/2,-z+499/12;x,-y-21.41667,-z+505/12;-x+65/3,-y-65/3,-z+124/3;x+1/4,y+1/4,-z+251/6;y+21.91667,-x+1/2,-z+505/12;-y,x-20.91667,-z+499/12;y+21.91667,x-21.41667,z+1/2;-y,-x,z;x+1/4,-y-21.16667,z+3/4;-x+65/3,y+3/4,z+1/4;x,y+1/2,z+1/2;-x+21.41667,-y-21.41667,z;-y+1/4,x-21.16667,z+3/4;y+65/3,-x+3/4,z+1/4;-y-1/4,-x+1/4,-z+124/3;y+65/3,x-21.16667,-z+251/6;-x+21.91667,y+1/2,-z+505/12;x,-y-20.91667,-z+499/12;-x+65/3,-y-21.16667,-z+251/6;x-1/4,y+1/4,-z+124/3;y+21.41667,-x+1/2,-z+499/12;-y,x-21.41667,-z+505/12;y+21.41667,x-21.41667,z;-y,-x+1/2,z+1/2;x-1/4,-y-21.16667,z+1/4;-x+65/3,y+1/4,z+3/4;x+1/2,y+1/2,z;-x+22.41667,-y-20.91667,z+1/2;-y+1/4,x-62/3,z+1/4;y+22.16667,-x+3/4,z+3/4;-y+3/4,-x+3/4,-z+251/6;y+22.16667,x-21.16667,-z+124/3;x+1/2,-y-20.91667,-z+505/12;-x+22.16667,-y-21.16667,-z+124/3;x+3/4,y+3/4,-z+251/6;-y+1/2,x-20.41667,-z+499/12;y+22.41667,x-20.91667,z+1/2;-y+1/2,-x+1/2,z;x+3/4,-y-62/3,z+3/4;-x+22.16667,y+5/4,z+1/4;-x+21.91667,-y-20.91667,z;-y+3/4,x-62/3,z+3/4;y+22.16667,-x+5/4,z+1/4;-y+1/4,-x+3/4,-z+124/3;y+22.16667,x-62/3,-z+251/6;x+1/2,-y-20.41667,-z+499/12;-x+22.16667,-y-62/3,-z+251/6;x+1/4,y+3/4,-z+124/3;-y+1/2,x-20.91667,-z+505/12;y+21.91667,x-20.91667,z;x+1/4,-y-62/3,z+1/4;-x+22.16667,y+3/4,z+3/4 +142 a,b,c I 41/a c d [origin 2] x,y,z;-x+1/2,-y,z+1/2;-y+1/4,x+3/4,z+1/4;y+1/4,-x+1/4,z+3/4;-x+1/2,y,-z;x,-y,-z+1/2;y+1/4,x+3/4,-z+3/4;-y+1/4,-x+1/4,-z+1/4;-x,-y,-z;x+1/2,y,-z+1/2;y+3/4,-x+1/4,-z+3/4;-y+3/4,x+3/4,-z+1/4;x+1/2,-y,z;-x,y,z+1/2;-y+3/4,-x+1/4,z+1/4;y+3/4,x+3/4,z+3/4;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-y+3/4,x+1/4,z+3/4;y+3/4,-x+3/4,z+1/4;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;y+3/4,x+1/4,-z+1/4;-y+3/4,-x+3/4,-z+3/4;-x+1/2,-y+1/2,-z+1/2;x,y+1/2,-z;y+1/4,-x+3/4,-z+1/4;-y+1/4,x+1/4,-z+3/4;x,-y+1/2,z+1/2;-x+1/2,y+1/2,z;-y+1/4,-x+3/4,z+3/4;y+1/4,x+1/4,z+1/4 +142 a-b,a+b,c F 41/d d c :2 x,y,z;-x+1/4,-y+1/4,z+1/2;-y-1/4,x+1/2,z+1/4;y,-x+1/4,z+3/4;-y+1/4,-x+1/4,-z;y,x,-z+1/2;-x-1/4,y+1/2,-z+3/4;x,-y+1/4,-z+1/4;-x,-y,-z;x+1/4,y+1/4,-z+1/2;y+1/4,-x+1/2,-z+3/4;-y,x+3/4,-z+1/4;y+1/4,x+1/4,z;-y,-x,z+1/2;x+1/4,-y+1/2,z+1/4;-x,y+3/4,z+3/4;x,y+1/2,z+1/2;-x-1/4,-y+1/4,z;-y+1/4,x+1/2,z+3/4;y,-x+3/4,z+1/4;-y-1/4,-x+1/4,-z+1/2;y,x+1/2,-z;-x+1/4,y+1/2,-z+1/4;x,-y+3/4,-z+3/4;-x,-y+1/2,-z+1/2;x-1/4,y+1/4,-z;y-1/4,-x+1/2,-z+1/4;-y,x+1/4,-z+3/4;y-1/4,x+1/4,z+1/2;-y,-x+1/2,z;x-1/4,-y+1/2,z+3/4;-x,y+1/4,z+1/4;x+1/2,y+1/2,z;-x+3/4,-y+3/4,z+1/2;y+1/2,-x+3/4,z+3/4;-y+3/4,-x+3/4,-z;y+1/2,x+1/2,-z+1/2;x+1/2,-y+3/4,-z+1/4;-x+1/2,-y+1/2,-z;x+3/4,y+3/4,-z+1/2;-y+1/2,x+5/4,-z+1/4;y+3/4,x+3/4,z;-y+1/2,-x+1/2,z+1/2;-x+1/2,y+5/4,z+3/4;-x+1/4,-y+3/4,z;y+1/2,-x+5/4,z+1/4;-y+1/4,-x+3/4,-z+1/2;x+1/2,-y+5/4,-z+3/4;x+1/4,y+3/4,-z;-y+1/2,x+3/4,-z+3/4;y+1/4,x+3/4,z+1/2;-x+1/2,y+3/4,z+1/4 +142 a,b,c;0,1/4,-1/8 I 41/a c d :1 x,y,z;-x+1/2,-y-130/3,z+1/2;-y-21.41667,x-20.91667,z+1/4;y+21.91667,-x-21.41667,z+3/4;-x+1/2,y,-z+124/3;x,-y-130/3,-z+251/6;y+21.91667,x-20.91667,-z+505/12;-y-21.41667,-x-21.41667,-z+499/12;-x,-y-130/3,-z+124/3;x+1/2,y,-z+251/6;y+22.41667,-x-21.41667,-z+505/12;-y-20.91667,x-20.91667,-z+499/12;x+1/2,-y-130/3,z;-x,y,z+1/2;-y-20.91667,-x-21.41667,z+1/4;y+22.41667,x-20.91667,z+3/4;x+1/2,y+1/2,z+1/2;-x,-y-257/6,z;-y-20.91667,x-21.41667,z+3/4;y+22.41667,-x-20.91667,z+1/4;-x,y+1/2,-z+251/6;x+1/2,-y-257/6,-z+124/3;y+22.41667,x-21.41667,-z+499/12;-y-20.91667,-x-20.91667,-z+505/12;-x+1/2,-y-257/6,-z+251/6;x,y+1/2,-z+124/3;y+21.91667,-x-20.91667,-z+499/12;-y-21.41667,x-21.41667,-z+505/12;x,-y-257/6,z+1/2;-x+1/2,y+1/2,z;-y-21.41667,-x-20.91667,z+3/4;y+21.91667,x-21.41667,z+1/4 +142 a-b,a+b,c;0,1/4,-1/8 F 41/d d c :1 x,y,z;-x+21.91667,-y-21.41667,z+1/2;-y-1/4,x-21.16667,z+1/4;y+65/3,-x+1/4,z+3/4;-y+1/4,-x+1/4,-z+124/3;y+65/3,x-65/3,-z+251/6;-x+21.41667,y+1/2,-z+505/12;x,-y-21.41667,-z+499/12;-x+65/3,-y-65/3,-z+124/3;x+1/4,y+1/4,-z+251/6;y+21.91667,-x+1/2,-z+505/12;-y,x-20.91667,-z+499/12;y+21.91667,x-21.41667,z;-y,-x,z+1/2;x+1/4,-y-21.16667,z+1/4;-x+65/3,y+3/4,z+3/4;x,y+1/2,z+1/2;-x+21.41667,-y-21.41667,z;-y+1/4,x-21.16667,z+3/4;y+65/3,-x+3/4,z+1/4;-y-1/4,-x+1/4,-z+251/6;y+65/3,x-21.16667,-z+124/3;-x+21.91667,y+1/2,-z+499/12;x,-y-20.91667,-z+505/12;-x+65/3,-y-21.16667,-z+251/6;x-1/4,y+1/4,-z+124/3;y+21.41667,-x+1/2,-z+499/12;-y,x-21.41667,-z+505/12;y+21.41667,x-21.41667,z+1/2;-y,-x+1/2,z;x-1/4,-y-21.16667,z+3/4;-x+65/3,y+1/4,z+1/4;x+1/2,y+1/2,z;-x+22.41667,-y-20.91667,z+1/2;-y+1/4,x-62/3,z+1/4;y+22.16667,-x+3/4,z+3/4;-y+3/4,-x+3/4,-z+124/3;y+22.16667,x-21.16667,-z+251/6;x+1/2,-y-20.91667,-z+499/12;-x+22.16667,-y-21.16667,-z+124/3;x+3/4,y+3/4,-z+251/6;-y+1/2,x-20.41667,-z+499/12;y+22.41667,x-20.91667,z;-y+1/2,-x+1/2,z+1/2;x+3/4,-y-62/3,z+1/4;-x+22.16667,y+5/4,z+3/4;-x+21.91667,-y-20.91667,z;-y+3/4,x-62/3,z+3/4;y+22.16667,-x+5/4,z+1/4;-y+1/4,-x+3/4,-z+251/6;y+22.16667,x-62/3,-z+124/3;x+1/2,-y-20.41667,-z+505/12;-x+22.16667,-y-62/3,-z+251/6;x+1/4,y+3/4,-z+124/3;-y+1/2,x-20.91667,-z+505/12;y+21.91667,x-20.91667,z+1/2;x+1/4,-y-62/3,z+3/4;-x+22.16667,y+3/4,z+1/4 +143 a,b,c P 3 x,y,z;-y,x-y,z;-x+y,-x,z +144 a,b,c P 31 x,y,z;-y,x-y,z+1/3;-x+y,-x,z+2/3 +145 a,b,c P 32 x,y,z;-y,x-y,z+2/3;-x+y,-x,z+1/3 +146 a,b,c R 3 :h x,y,z;-y,x-y,z;-x+y,-x,z;x+2/3,y+1/3,z+1/3;-y+2/3,x-y+1/3,z+1/3;-x+y+2/3,-x+1/3,z+1/3;x+1/3,y+2/3,z+2/3;-y+1/3,x-y+2/3,z+2/3;-x+y+1/3,-x+2/3,z+2/3 +146 2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R 3 :R x,y,z;z,x,y;y,z,x +147 a,b,c P -3 x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,-z;y,-x+y,-z;x-y,x,-z +148 a,b,c R -3 :h x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,-z;y,-x+y,-z;x-y,x,-z;x+2/3,y+1/3,z+1/3;-y+2/3,x-y+1/3,z+1/3;-x+y+2/3,-x+1/3,z+1/3;-x+2/3,-y+1/3,-z+1/3;y+2/3,-x+y+1/3,-z+1/3;x-y+2/3,x+1/3,-z+1/3;x+1/3,y+2/3,z+2/3;-y+1/3,x-y+2/3,z+2/3;-x+y+1/3,-x+2/3,z+2/3;-x+1/3,-y+2/3,-z+2/3;y+1/3,-x+y+2/3,-z+2/3;x-y+1/3,x+2/3,-z+2/3 +148 2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R -3 :R x,y,z;z,x,y;y,z,x;-x,-y,-z;-z,-x,-y;-y,-z,-x +149 a,b,c P 3 1 2 x,y,z;-y,x-y,z;-x+y,-x,z;-y,-x,-z;-x+y,y,-z;x,x-y,-z +150 a,b,c P 3 2 1 x,y,z;-y,x-y,z;-x+y,-x,z;y,x,-z;x-y,-y,-z;-x,-x+y,-z +151 a,b,c P 31 1 2 x,y,z;-y,x-y,z+1/3;-x+y,-x,z+2/3;-y,-x,-z+2/3;-x+y,y,-z+1/3;x,x-y,-z +152 a,b,c P 31 2 1 x,y,z;-y,x-y,z+1/3;-x+y,-x,z+2/3;y,x,-z;x-y,-y,-z+2/3;-x,-x+y,-z+1/3 +153 a,b,c P 32 1 2 x,y,z;-y,x-y,z+2/3;-x+y,-x,z+1/3;-y,-x,-z+1/3;-x+y,y,-z+2/3;x,x-y,-z +154 a,b,c P 32 2 1 x,y,z;-y,x-y,z+2/3;-x+y,-x,z+1/3;y,x,-z;x-y,-y,-z+1/3;-x,-x+y,-z+2/3 +155 a,b,c R 3 2 :h x,y,z;-y,x-y,z;-x+y,-x,z;y,x,-z;x-y,-y,-z;-x,-x+y,-z;x+2/3,y+1/3,z+1/3;-y+2/3,x-y+1/3,z+1/3;-x+y+2/3,-x+1/3,z+1/3;y+2/3,x+1/3,-z+1/3;x-y+2/3,-y+1/3,-z+1/3;-x+2/3,-x+y+1/3,-z+1/3;x+1/3,y+2/3,z+2/3;-y+1/3,x-y+2/3,z+2/3;-x+y+1/3,-x+2/3,z+2/3;y+1/3,x+2/3,-z+2/3;x-y+1/3,-y+2/3,-z+2/3;-x+1/3,-x+y+2/3,-z+2/3 +155 2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R 3 2 :R x,y,z;z,x,y;y,z,x;-z,-y,-x;-y,-x,-z;-x,-z,-y +156 a,b,c P 3 m 1 x,y,z;-y,x-y,z;-x+y,-x,z;-y,-x,z;-x+y,y,z;x,x-y,z +157 a,b,c P 3 1 m x,y,z;-y,x-y,z;-x+y,-x,z;y,x,z;x-y,-y,z;-x,-x+y,z +158 a,b,c P 3 c 1 x,y,z;-y,x-y,z;-x+y,-x,z;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2 +159 a,b,c P 3 1 c x,y,z;-y,x-y,z;-x+y,-x,z;y,x,z+1/2;x-y,-y,z+1/2;-x,-x+y,z+1/2 +160 a,b,c R 3 m :h x,y,z;-y,x-y,z;-x+y,-x,z;-y,-x,z;-x+y,y,z;x,x-y,z;x+2/3,y+1/3,z+1/3;-y+2/3,x-y+1/3,z+1/3;-x+y+2/3,-x+1/3,z+1/3;-y+2/3,-x+1/3,z+1/3;-x+y+2/3,y+1/3,z+1/3;x+2/3,x-y+1/3,z+1/3;x+1/3,y+2/3,z+2/3;-y+1/3,x-y+2/3,z+2/3;-x+y+1/3,-x+2/3,z+2/3;-y+1/3,-x+2/3,z+2/3;-x+y+1/3,y+2/3,z+2/3;x+1/3,x-y+2/3,z+2/3 +160 2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R 3 m :R x,y,z;z,x,y;y,z,x;z,y,x;y,x,z;x,z,y +161 a,b,c R 3 c :h x,y,z;-y,x-y,z;-x+y,-x,z;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2;x+2/3,y+1/3,z+1/3;-y+2/3,x-y+1/3,z+1/3;-x+y+2/3,-x+1/3,z+1/3;-y+2/3,-x+1/3,z+5/6;-x+y+2/3,y+1/3,z+5/6;x+2/3,x-y+1/3,z+5/6;x+1/3,y+2/3,z+2/3;-y+1/3,x-y+2/3,z+2/3;-x+y+1/3,-x+2/3,z+2/3;-y+1/3,-x+2/3,z+1/6;-x+y+1/3,y+2/3,z+1/6;x+1/3,x-y+2/3,z+1/6 +161 2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R 3 c :R x,y,z;z,x,y;y,z,x;z+1/2,y+1/2,x+1/2;y+1/2,x+1/2,z+1/2;x+1/2,z+1/2,y+1/2;z+3/2,y+1/2,x+1/2;y+3/2,x+1/2,z+1/2;x+3/2,z+1/2,y+1/2;z+1/2,y+1/2,x-1/2;y+1/2,x+1/2,z-1/2;x+1/2,z+1/2,y-1/2 +162 a,b,c P -3 1 m x,y,z;-y,x-y,z;-x+y,-x,z;-y,-x,-z;-x+y,y,-z;x,x-y,-z;-x,-y,-z;y,-x+y,-z;x-y,x,-z;y,x,z;x-y,-y,z;-x,-x+y,z +163 a,b,c P -3 1 c x,y,z;-y,x-y,z;-x+y,-x,z;-y,-x,-z+1/2;-x+y,y,-z+1/2;x,x-y,-z+1/2;-x,-y,-z;y,-x+y,-z;x-y,x,-z;y,x,z+1/2;x-y,-y,z+1/2;-x,-x+y,z+1/2 +164 a,b,c P -3 m 1 x,y,z;-y,x-y,z;-x+y,-x,z;y,x,-z;x-y,-y,-z;-x,-x+y,-z;-x,-y,-z;y,-x+y,-z;x-y,x,-z;-y,-x,z;-x+y,y,z;x,x-y,z +165 a,b,c P -3 c 1 x,y,z;-y,x-y,z;-x+y,-x,z;y,x,-z+1/2;x-y,-y,-z+1/2;-x,-x+y,-z+1/2;-x,-y,-z;y,-x+y,-z;x-y,x,-z;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2 +166 a,b,c R -3 m :h x,y,z;-y,x-y,z;-x+y,-x,z;y,x,-z;x-y,-y,-z;-x,-x+y,-z;-x,-y,-z;y,-x+y,-z;x-y,x,-z;-y,-x,z;-x+y,y,z;x,x-y,z;x+2/3,y+1/3,z+1/3;-y+2/3,x-y+1/3,z+1/3;-x+y+2/3,-x+1/3,z+1/3;y+2/3,x+1/3,-z+1/3;x-y+2/3,-y+1/3,-z+1/3;-x+2/3,-x+y+1/3,-z+1/3;-x+2/3,-y+1/3,-z+1/3;y+2/3,-x+y+1/3,-z+1/3;x-y+2/3,x+1/3,-z+1/3;-y+2/3,-x+1/3,z+1/3;-x+y+2/3,y+1/3,z+1/3;x+2/3,x-y+1/3,z+1/3;x+1/3,y+2/3,z+2/3;-y+1/3,x-y+2/3,z+2/3;-x+y+1/3,-x+2/3,z+2/3;y+1/3,x+2/3,-z+2/3;x-y+1/3,-y+2/3,-z+2/3;-x+1/3,-x+y+2/3,-z+2/3;-x+1/3,-y+2/3,-z+2/3;y+1/3,-x+y+2/3,-z+2/3;x-y+1/3,x+2/3,-z+2/3;-y+1/3,-x+2/3,z+2/3;-x+y+1/3,y+2/3,z+2/3;x+1/3,x-y+2/3,z+2/3 +166 2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R -3 m :R x,y,z;z,x,y;y,z,x;-z,-y,-x;-y,-x,-z;-x,-z,-y;-x,-y,-z;-z,-x,-y;-y,-z,-x;z,y,x;y,x,z;x,z,y +167 a,b,c R -3 c :h x,y,z;-y,x-y,z;-x+y,-x,z;y,x,-z+1/2;x-y,-y,-z+1/2;-x,-x+y,-z+1/2;-x,-y,-z;y,-x+y,-z;x-y,x,-z;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2;x+2/3,y+1/3,z+1/3;-y+2/3,x-y+1/3,z+1/3;-x+y+2/3,-x+1/3,z+1/3;y+2/3,x+1/3,-z+5/6;x-y+2/3,-y+1/3,-z+5/6;-x+2/3,-x+y+1/3,-z+5/6;-x+2/3,-y+1/3,-z+1/3;y+2/3,-x+y+1/3,-z+1/3;x-y+2/3,x+1/3,-z+1/3;-y+2/3,-x+1/3,z+5/6;-x+y+2/3,y+1/3,z+5/6;x+2/3,x-y+1/3,z+5/6;x+1/3,y+2/3,z+2/3;-y+1/3,x-y+2/3,z+2/3;-x+y+1/3,-x+2/3,z+2/3;y+1/3,x+2/3,-z+1/6;x-y+1/3,-y+2/3,-z+1/6;-x+1/3,-x+y+2/3,-z+1/6;-x+1/3,-y+2/3,-z+2/3;y+1/3,-x+y+2/3,-z+2/3;x-y+1/3,x+2/3,-z+2/3;-y+1/3,-x+2/3,z+1/6;-x+y+1/3,y+2/3,z+1/6;x+1/3,x-y+2/3,z+1/6 +167 2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c R -3 c :R x,y,z;z,x,y;y,z,x;-z+1/2,-y+1/2,-x+1/2;-y+1/2,-x+1/2,-z+1/2;-x+1/2,-z+1/2,-y+1/2;-x,-y,-z;-z,-x,-y;-y,-z,-x;z+1/2,y+1/2,x+1/2;y+1/2,x+1/2,z+1/2;x+1/2,z+1/2,y+1/2;-z+3/2,-y+1/2,-x+1/2;-y+3/2,-x+1/2,-z+1/2;-x+3/2,-z+1/2,-y+1/2;z+3/2,y+1/2,x+1/2;y+3/2,x+1/2,z+1/2;x+3/2,z+1/2,y+1/2;-z+1/2,-y+1/2,-x-1/2;-y+1/2,-x+1/2,-z-1/2;-x+1/2,-z+1/2,-y-1/2;z+1/2,y+1/2,x-1/2;y+1/2,x+1/2,z-1/2;x+1/2,z+1/2,y-1/2 +168 a,b,c P 6 x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z;y,-x+y,z;x-y,x,z +169 a,b,c P 61 x,y,z;-y,x-y,z+1/3;-x+y,-x,z+2/3;-x,-y,z+1/2;y,-x+y,z+5/6;x-y,x,z+1/6 +170 a,b,c P 65 x,y,z;-y,x-y,z+2/3;-x+y,-x,z+1/3;-x,-y,z+1/2;y,-x+y,z+1/6;x-y,x,z+5/6 +171 a,b,c P 62 x,y,z;-y,x-y,z+2/3;-x+y,-x,z+1/3;-x,-y,z;y,-x+y,z+2/3;x-y,x,z+1/3 +172 a,b,c P 64 x,y,z;-y,x-y,z+1/3;-x+y,-x,z+2/3;-x,-y,z;y,-x+y,z+1/3;x-y,x,z+2/3 +173 a,b,c P 63 x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z+1/2;y,-x+y,z+1/2;x-y,x,z+1/2 +174 a,b,c P -6 x,y,z;-y,x-y,z;-x+y,-x,z;x,y,-z;-y,x-y,-z;-x+y,-x,-z +175 a,b,c P 6/m x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z;y,-x+y,z;x-y,x,z;-x,-y,-z;y,-x+y,-z;x-y,x,-z;x,y,-z;-y,x-y,-z;-x+y,-x,-z +176 a,b,c P 63/m x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z+1/2;y,-x+y,z+1/2;x-y,x,z+1/2;-x,-y,-z;y,-x+y,-z;x-y,x,-z;x,y,-z+1/2;-y,x-y,-z+1/2;-x+y,-x,-z+1/2 +177 a,b,c P 6 2 2 x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z;y,-x+y,z;x-y,x,z;y,x,-z;x-y,-y,-z;-x,-x+y,-z;-y,-x,-z;-x+y,y,-z;x,x-y,-z +178 a,b,c P 61 2 2 x,y,z;-y,x-y,z+1/3;-x+y,-x,z+2/3;-x,-y,z+1/2;y,-x+y,z+5/6;x-y,x,z+1/6;y,x,-z+1/3;x-y,-y,-z;-x,-x+y,-z+2/3;-y,-x,-z+5/6;-x+y,y,-z+1/2;x,x-y,-z+1/6 +179 a,b,c P 65 2 2 x,y,z;-y,x-y,z+2/3;-x+y,-x,z+1/3;-x,-y,z+1/2;y,-x+y,z+1/6;x-y,x,z+5/6;y,x,-z+2/3;x-y,-y,-z;-x,-x+y,-z+1/3;-y,-x,-z+1/6;-x+y,y,-z+1/2;x,x-y,-z+5/6 +180 a,b,c P 62 2 2 x,y,z;-y,x-y,z+2/3;-x+y,-x,z+1/3;-x,-y,z;y,-x+y,z+2/3;x-y,x,z+1/3;y,x,-z+2/3;x-y,-y,-z;-x,-x+y,-z+1/3;-y,-x,-z+2/3;-x+y,y,-z;x,x-y,-z+1/3 +181 a,b,c P 64 2 2 x,y,z;-y,x-y,z+1/3;-x+y,-x,z+2/3;-x,-y,z;y,-x+y,z+1/3;x-y,x,z+2/3;y,x,-z+1/3;x-y,-y,-z;-x,-x+y,-z+2/3;-y,-x,-z+1/3;-x+y,y,-z;x,x-y,-z+2/3 +182 a,b,c P 63 2 2 x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z+1/2;y,-x+y,z+1/2;x-y,x,z+1/2;y,x,-z;x-y,-y,-z;-x,-x+y,-z;-y,-x,-z+1/2;-x+y,y,-z+1/2;x,x-y,-z+1/2 +183 a,b,c P 6 m m x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z;y,-x+y,z;x-y,x,z;-y,-x,z;-x+y,y,z;x,x-y,z;y,x,z;x-y,-y,z;-x,-x+y,z +184 a,b,c P 6 c c x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z;y,-x+y,z;x-y,x,z;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2;y,x,z+1/2;x-y,-y,z+1/2;-x,-x+y,z+1/2 +185 a,b,c P 63 c m x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z+1/2;y,-x+y,z+1/2;x-y,x,z+1/2;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2;y,x,z;x-y,-y,z;-x,-x+y,z +186 a,b,c P 63 m c x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z+1/2;y,-x+y,z+1/2;x-y,x,z+1/2;-y,-x,z;-x+y,y,z;x,x-y,z;y,x,z+1/2;x-y,-y,z+1/2;-x,-x+y,z+1/2 +187 a,b,c P -6 m 2 x,y,z;-y,x-y,z;-x+y,-x,z;x,y,-z;-y,x-y,-z;-x+y,-x,-z;-y,-x,z;-x+y,y,z;x,x-y,z;-y,-x,-z;-x+y,y,-z;x,x-y,-z +188 a,b,c P -6 c 2 x,y,z;-y,x-y,z;-x+y,-x,z;x,y,-z+1/2;-y,x-y,-z+1/2;-x+y,-x,-z+1/2;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2;-y,-x,-z;-x+y,y,-z;x,x-y,-z +189 a,b,c P -6 2 m x,y,z;-y,x-y,z;-x+y,-x,z;x,y,-z;-y,x-y,-z;-x+y,-x,-z;y,x,-z;x-y,-y,-z;-x,-x+y,-z;y,x,z;x-y,-y,z;-x,-x+y,z +190 a,b,c P -6 2 c x,y,z;-y,x-y,z;-x+y,-x,z;x,y,-z+1/2;-y,x-y,-z+1/2;-x+y,-x,-z+1/2;y,x,-z;x-y,-y,-z;-x,-x+y,-z;y,x,z+1/2;x-y,-y,z+1/2;-x,-x+y,z+1/2 +191 a,b,c P 6/m m m x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z;y,-x+y,z;x-y,x,z;y,x,-z;x-y,-y,-z;-x,-x+y,-z;-y,-x,-z;-x+y,y,-z;x,x-y,-z;-x,-y,-z;y,-x+y,-z;x-y,x,-z;x,y,-z;-y,x-y,-z;-x+y,-x,-z;-y,-x,z;-x+y,y,z;x,x-y,z;y,x,z;x-y,-y,z;-x,-x+y,z +192 a,b,c P 6/m c c x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z;y,-x+y,z;x-y,x,z;y,x,-z+1/2;x-y,-y,-z+1/2;-x,-x+y,-z+1/2;-y,-x,-z+1/2;-x+y,y,-z+1/2;x,x-y,-z+1/2;-x,-y,-z;y,-x+y,-z;x-y,x,-z;x,y,-z;-y,x-y,-z;-x+y,-x,-z;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2;y,x,z+1/2;x-y,-y,z+1/2;-x,-x+y,z+1/2 +193 a,b,c P 63/m c m x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z+1/2;y,-x+y,z+1/2;x-y,x,z+1/2;y,x,-z+1/2;x-y,-y,-z+1/2;-x,-x+y,-z+1/2;-y,-x,-z;-x+y,y,-z;x,x-y,-z;-x,-y,-z;y,-x+y,-z;x-y,x,-z;x,y,-z+1/2;-y,x-y,-z+1/2;-x+y,-x,-z+1/2;-y,-x,z+1/2;-x+y,y,z+1/2;x,x-y,z+1/2;y,x,z;x-y,-y,z;-x,-x+y,z +194 a,b,c P 63/m m c x,y,z;-y,x-y,z;-x+y,-x,z;-x,-y,z+1/2;y,-x+y,z+1/2;x-y,x,z+1/2;y,x,-z;x-y,-y,-z;-x,-x+y,-z;-y,-x,-z+1/2;-x+y,y,-z+1/2;x,x-y,-z+1/2;-x,-y,-z;y,-x+y,-z;x-y,x,-z;x,y,-z+1/2;-y,x-y,-z+1/2;-x+y,-x,-z+1/2;-y,-x,z;-x+y,y,z;x,x-y,z;y,x,z+1/2;x-y,-y,z+1/2;-x,-x+y,z+1/2 +195 a,b,c P 2 3 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x +196 a,b,c F 2 3 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;z,x+1/2,y+1/2;z,-x+1/2,-y+1/2;-z,-x+1/2,y+1/2;-z,x+1/2,-y+1/2;y,z+1/2,x+1/2;-y,z+1/2,-x+1/2;y,-z+1/2,-x+1/2;-y,-z+1/2,x+1/2;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;z+1/2,x,y+1/2;z+1/2,-x,-y+1/2;-z+1/2,-x,y+1/2;-z+1/2,x,-y+1/2;y+1/2,z,x+1/2;-y+1/2,z,-x+1/2;y+1/2,-z,-x+1/2;-y+1/2,-z,x+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;z+1/2,x+1/2,y;z+1/2,-x+1/2,-y;-z+1/2,-x+1/2,y;-z+1/2,x+1/2,-y;y+1/2,z+1/2,x;-y+1/2,z+1/2,-x;y+1/2,-z+1/2,-x;-y+1/2,-z+1/2,x +197 a,b,c I 2 3 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;z+1/2,x+1/2,y+1/2;z+1/2,-x+1/2,-y+1/2;-z+1/2,-x+1/2,y+1/2;-z+1/2,x+1/2,-y+1/2;y+1/2,z+1/2,x+1/2;-y+1/2,z+1/2,-x+1/2;y+1/2,-z+1/2,-x+1/2;-y+1/2,-z+1/2,x+1/2 +198 a,b,c P 21 3 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2 +199 a,b,c I 21 3 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-x+1/2,y,-z;x,-y,-z+1/2;z+1/2,x+1/2,y+1/2;z,-x,-y+1/2;-z,-x+1/2,y;-z+1/2,x,-y;y+1/2,z+1/2,x+1/2;-y+1/2,z,-x;y,-z,-x+1/2;-y,-z+1/2,x +200 a,b,c P m -3 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;-z,-x,-y;-z,x,y;z,x,-y;z,-x,y;-y,-z,-x;y,-z,x;-y,z,x;y,z,-x +201 a,b,c P n -3 [origin 2] x,y,z;-x+1/2,-y+1/2,z;-x+1/2,y,-z+1/2;x,-y+1/2,-z+1/2;z,x,y;z,-x+1/2,-y+1/2;-z+1/2,-x+1/2,y;-z+1/2,x,-y+1/2;y,z,x;-y+1/2,z,-x+1/2;y,-z+1/2,-x+1/2;-y+1/2,-z+1/2,x;-x,-y,-z;x+1/2,y+1/2,-z;x+1/2,-y,z+1/2;-x,y+1/2,z+1/2;-z,-x,-y;-z,x+1/2,y+1/2;z+1/2,x+1/2,-y;z+1/2,-x,y+1/2;-y,-z,-x;y+1/2,-z,x+1/2;-y,z+1/2,x+1/2;y+1/2,z+1/2,-x +201 a,b,c;-1/4,-1/4,-1/4 P n -3 :1 x,y,z;z,x,y;y,z,x;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-z+1/2,-x+1/2,-y+1/2;-z+1/2,x+1/2,y+1/2;z+1/2,x+1/2,-y+1/2;z+1/2,-x+1/2,y+1/2;-y+1/2,-z+1/2,-x+1/2;y+1/2,-z+1/2,x+1/2;-y+1/2,z+1/2,x+1/2;y+1/2,z+1/2,-x+1/2 +202 a,b,c F m -3 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;-z,-x,-y;-z,x,y;z,x,-y;z,-x,y;-y,-z,-x;y,-z,x;-y,z,x;y,z,-x;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;z,x+1/2,y+1/2;z,-x+1/2,-y+1/2;-z,-x+1/2,y+1/2;-z,x+1/2,-y+1/2;y,z+1/2,x+1/2;-y,z+1/2,-x+1/2;y,-z+1/2,-x+1/2;-y,-z+1/2,x+1/2;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;-z,-x+1/2,-y+1/2;-z,x+1/2,y+1/2;z,x+1/2,-y+1/2;z,-x+1/2,y+1/2;-y,-z+1/2,-x+1/2;y,-z+1/2,x+1/2;-y,z+1/2,x+1/2;y,z+1/2,-x+1/2;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;z+1/2,x,y+1/2;z+1/2,-x,-y+1/2;-z+1/2,-x,y+1/2;-z+1/2,x,-y+1/2;y+1/2,z,x+1/2;-y+1/2,z,-x+1/2;y+1/2,-z,-x+1/2;-y+1/2,-z,x+1/2;-x+1/2,-y,-z+1/2;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2;-x+1/2,y,z+1/2;-z+1/2,-x,-y+1/2;-z+1/2,x,y+1/2;z+1/2,x,-y+1/2;z+1/2,-x,y+1/2;-y+1/2,-z,-x+1/2;y+1/2,-z,x+1/2;-y+1/2,z,x+1/2;y+1/2,z,-x+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;z+1/2,x+1/2,y;z+1/2,-x+1/2,-y;-z+1/2,-x+1/2,y;-z+1/2,x+1/2,-y;y+1/2,z+1/2,x;-y+1/2,z+1/2,-x;y+1/2,-z+1/2,-x;-y+1/2,-z+1/2,x;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-z+1/2,-x+1/2,-y;-z+1/2,x+1/2,y;z+1/2,x+1/2,-y;z+1/2,-x+1/2,y;-y+1/2,-z+1/2,-x;y+1/2,-z+1/2,x;-y+1/2,z+1/2,x;y+1/2,z+1/2,-x +203 a,b,c F d -3 [origin 2] x,y,z;-x+3/4,-y+3/4,z;-x+3/4,y,-z+3/4;x,-y+3/4,-z+3/4;z,x,y;z,-x+3/4,-y+3/4;-z+3/4,-x+3/4,y;-z+3/4,x,-y+3/4;y,z,x;-y+3/4,z,-x+3/4;y,-z+3/4,-x+3/4;-y+3/4,-z+3/4,x;-x,-y,-z;x+1/4,y+1/4,-z;x+1/4,-y,z+1/4;-x,y+1/4,z+1/4;-z,-x,-y;-z,x+1/4,y+1/4;z+1/4,x+1/4,-y;z+1/4,-x,y+1/4;-y,-z,-x;y+1/4,-z,x+1/4;-y,z+1/4,x+1/4;y+1/4,z+1/4,-x;x,y+1/2,z+1/2;-x+3/4,-y+1/4,z+1/2;-x+3/4,y+1/2,-z+1/4;x,-y+1/4,-z+1/4;z,x+1/2,y+1/2;z,-x+1/4,-y+1/4;-z+3/4,-x+1/4,y+1/2;-z+3/4,x+1/2,-y+1/4;y,z+1/2,x+1/2;-y+3/4,z+1/2,-x+1/4;y,-z+1/4,-x+1/4;-y+3/4,-z+1/4,x+1/2;-x,-y+1/2,-z+1/2;x+1/4,y+3/4,-z+1/2;x+1/4,-y+1/2,z+3/4;-x,y+3/4,z+3/4;-z,-x+1/2,-y+1/2;-z,x+3/4,y+3/4;z+1/4,x+3/4,-y+1/2;z+1/4,-x+1/2,y+3/4;-y,-z+1/2,-x+1/2;y+1/4,-z+1/2,x+3/4;-y,z+3/4,x+3/4;y+1/4,z+3/4,-x+1/2;x+1/2,y,z+1/2;-x+1/4,-y+3/4,z+1/2;-x+1/4,y,-z+1/4;x+1/2,-y+3/4,-z+1/4;z+1/2,x,y+1/2;z+1/2,-x+3/4,-y+1/4;-z+1/4,-x+3/4,y+1/2;-z+1/4,x,-y+1/4;y+1/2,z,x+1/2;-y+1/4,z,-x+1/4;y+1/2,-z+3/4,-x+1/4;-y+1/4,-z+3/4,x+1/2;-x+1/2,-y,-z+1/2;x+3/4,y+1/4,-z+1/2;x+3/4,-y,z+3/4;-x+1/2,y+1/4,z+3/4;-z+1/2,-x,-y+1/2;-z+1/2,x+1/4,y+3/4;z+3/4,x+1/4,-y+1/2;z+3/4,-x,y+3/4;-y+1/2,-z,-x+1/2;y+3/4,-z,x+3/4;-y+1/2,z+1/4,x+3/4;y+3/4,z+1/4,-x+1/2;x+1/2,y+1/2,z;-x+1/4,-y+1/4,z;-x+1/4,y+1/2,-z+3/4;x+1/2,-y+1/4,-z+3/4;z+1/2,x+1/2,y;z+1/2,-x+1/4,-y+3/4;-z+1/4,-x+1/4,y;-z+1/4,x+1/2,-y+3/4;y+1/2,z+1/2,x;-y+1/4,z+1/2,-x+3/4;y+1/2,-z+1/4,-x+3/4;-y+1/4,-z+1/4,x;-x+1/2,-y+1/2,-z;x+3/4,y+3/4,-z;x+3/4,-y+1/2,z+1/4;-x+1/2,y+3/4,z+1/4;-z+1/2,-x+1/2,-y;-z+1/2,x+3/4,y+1/4;z+3/4,x+3/4,-y;z+3/4,-x+1/2,y+1/4;-y+1/2,-z+1/2,-x;y+3/4,-z+1/2,x+1/4;-y+1/2,z+3/4,x+1/4;y+3/4,z+3/4,-x +203 a,b,c;-1/8,-1/8,-1/8 F d -3 :1 x,y,z;-x+505/12,-y+505/12,z;-x+505/12,y,-z+505/12;x,-y+505/12,-z+505/12;z,x,y;z,-x+505/12,-y+505/12;-z+505/12,-x+505/12,y;-z+505/12,x,-y+505/12;y,z,x;-y+505/12,z,-x+505/12;y,-z+505/12,-x+505/12;-y+505/12,-z+505/12,x;-x+124/3,-y+124/3,-z+124/3;x+1/4,y+1/4,-z+124/3;x+1/4,-y+124/3,z+1/4;-x+124/3,y+1/4,z+1/4;-z+124/3,-x+124/3,-y+124/3;-z+124/3,x+1/4,y+1/4;z+1/4,x+1/4,-y+124/3;z+1/4,-x+124/3,y+1/4;-y+124/3,-z+124/3,-x+124/3;y+1/4,-z+124/3,x+1/4;-y+124/3,z+1/4,x+1/4;y+1/4,z+1/4,-x+124/3;x,y+1/2,z+1/2;-x+505/12,-y+499/12,z+1/2;-x+505/12,y+1/2,-z+499/12;x,-y+499/12,-z+499/12;z,x+1/2,y+1/2;z,-x+499/12,-y+499/12;-z+505/12,-x+499/12,y+1/2;-z+505/12,x+1/2,-y+499/12;y,z+1/2,x+1/2;-y+505/12,z+1/2,-x+499/12;y,-z+499/12,-x+499/12;-y+505/12,-z+499/12,x+1/2;-x+124/3,-y+251/6,-z+251/6;x+1/4,y+3/4,-z+251/6;x+1/4,-y+251/6,z+3/4;-x+124/3,y+3/4,z+3/4;-z+124/3,-x+251/6,-y+251/6;-z+124/3,x+3/4,y+3/4;z+1/4,x+3/4,-y+251/6;z+1/4,-x+251/6,y+3/4;-y+124/3,-z+251/6,-x+251/6;y+1/4,-z+251/6,x+3/4;-y+124/3,z+3/4,x+3/4;y+1/4,z+3/4,-x+251/6;x+1/2,y,z+1/2;-x+499/12,-y+505/12,z+1/2;-x+499/12,y,-z+499/12;x+1/2,-y+505/12,-z+499/12;z+1/2,x,y+1/2;z+1/2,-x+505/12,-y+499/12;-z+499/12,-x+505/12,y+1/2;-z+499/12,x,-y+499/12;y+1/2,z,x+1/2;-y+499/12,z,-x+499/12;y+1/2,-z+505/12,-x+499/12;-y+499/12,-z+505/12,x+1/2;-x+251/6,-y+124/3,-z+251/6;x+3/4,y+1/4,-z+251/6;x+3/4,-y+124/3,z+3/4;-x+251/6,y+1/4,z+3/4;-z+251/6,-x+124/3,-y+251/6;-z+251/6,x+1/4,y+3/4;z+3/4,x+1/4,-y+251/6;z+3/4,-x+124/3,y+3/4;-y+251/6,-z+124/3,-x+251/6;y+3/4,-z+124/3,x+3/4;-y+251/6,z+1/4,x+3/4;y+3/4,z+1/4,-x+251/6;x+1/2,y+1/2,z;-x+499/12,-y+499/12,z;-x+499/12,y+1/2,-z+505/12;x+1/2,-y+499/12,-z+505/12;z+1/2,x+1/2,y;z+1/2,-x+499/12,-y+505/12;-z+499/12,-x+499/12,y;-z+499/12,x+1/2,-y+505/12;y+1/2,z+1/2,x;-y+499/12,z+1/2,-x+505/12;y+1/2,-z+499/12,-x+505/12;-y+499/12,-z+499/12,x;-x+251/6,-y+251/6,-z+124/3;x+3/4,y+3/4,-z+124/3;x+3/4,-y+251/6,z+1/4;-x+251/6,y+3/4,z+1/4;-z+251/6,-x+251/6,-y+124/3;-z+251/6,x+3/4,y+1/4;z+3/4,x+3/4,-y+124/3;z+3/4,-x+251/6,y+1/4;-y+251/6,-z+251/6,-x+124/3;y+3/4,-z+251/6,x+1/4;-y+251/6,z+3/4,x+1/4;y+3/4,z+3/4,-x+124/3 +204 a,b,c I m -3 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;-z,-x,-y;-z,x,y;z,x,-y;z,-x,y;-y,-z,-x;y,-z,x;-y,z,x;y,z,-x;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;z+1/2,x+1/2,y+1/2;z+1/2,-x+1/2,-y+1/2;-z+1/2,-x+1/2,y+1/2;-z+1/2,x+1/2,-y+1/2;y+1/2,z+1/2,x+1/2;-y+1/2,z+1/2,-x+1/2;y+1/2,-z+1/2,-x+1/2;-y+1/2,-z+1/2,x+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-z+1/2,-x+1/2,-y+1/2;-z+1/2,x+1/2,y+1/2;z+1/2,x+1/2,-y+1/2;z+1/2,-x+1/2,y+1/2;-y+1/2,-z+1/2,-x+1/2;y+1/2,-z+1/2,x+1/2;-y+1/2,z+1/2,x+1/2;y+1/2,z+1/2,-x+1/2 +205 a,b,c P a -3 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2;-x,-y,-z;x+1/2,y,-z+1/2;x,-y+1/2,z+1/2;-x+1/2,y+1/2,z;-z,-x,-y;-z+1/2,x+1/2,y;z+1/2,x,-y+1/2;z,-x+1/2,y+1/2;-y,-z,-x;y,-z+1/2,x+1/2;-y+1/2,z+1/2,x;y+1/2,z,-x+1/2 +206 a,b,c I a -3 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2;-x,-y,-z;x+1/2,y,-z+1/2;x,-y+1/2,z+1/2;-x+1/2,y+1/2,z;-z,-x,-y;-z+1/2,x+1/2,y;z+1/2,x,-y+1/2;z,-x+1/2,y+1/2;-y,-z,-x;y,-z+1/2,x+1/2;-y+1/2,z+1/2,x;y+1/2,z,-x+1/2;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-x+1/2,y,-z;x,-y,-z+1/2;z+1/2,x+1/2,y+1/2;z,-x,-y+1/2;-z,-x+1/2,y;-z+1/2,x,-y;y+1/2,z+1/2,x+1/2;-y+1/2,z,-x;y,-z,-x+1/2;-y,-z+1/2,x;-x+1/2,-y+1/2,-z+1/2;x,y+1/2,-z;x+1/2,-y,z;-x,y,z+1/2;-z+1/2,-x+1/2,-y+1/2;-z,x,y+1/2;z,x+1/2,-y;z+1/2,-x,y;-y+1/2,-z+1/2,-x+1/2;y+1/2,-z,x;-y,z,x+1/2;y,z+1/2,-x +207 a,b,c P 4 3 2 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,-z;-y,-x,-z;y,-x,z;-y,x,z;x,z,-y;-x,z,y;-x,-z,-y;x,-z,y;z,y,-x;z,-y,x;-z,y,x;-z,-y,-x +208 a,b,c P 42 3 2 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;x+1/2,z+1/2,-y+1/2;-x+1/2,z+1/2,y+1/2;-x+1/2,-z+1/2,-y+1/2;x+1/2,-z+1/2,y+1/2;z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,x+1/2;-z+1/2,-y+1/2,-x+1/2 +209 a,b,c F 4 3 2 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,-z;-y,-x,-z;y,-x,z;-y,x,z;x,z,-y;-x,z,y;-x,-z,-y;x,-z,y;z,y,-x;z,-y,x;-z,y,x;-z,-y,-x;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;z,x+1/2,y+1/2;z,-x+1/2,-y+1/2;-z,-x+1/2,y+1/2;-z,x+1/2,-y+1/2;y,z+1/2,x+1/2;-y,z+1/2,-x+1/2;y,-z+1/2,-x+1/2;-y,-z+1/2,x+1/2;y,x+1/2,-z+1/2;-y,-x+1/2,-z+1/2;y,-x+1/2,z+1/2;-y,x+1/2,z+1/2;x,z+1/2,-y+1/2;-x,z+1/2,y+1/2;-x,-z+1/2,-y+1/2;x,-z+1/2,y+1/2;z,y+1/2,-x+1/2;z,-y+1/2,x+1/2;-z,y+1/2,x+1/2;-z,-y+1/2,-x+1/2;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;z+1/2,x,y+1/2;z+1/2,-x,-y+1/2;-z+1/2,-x,y+1/2;-z+1/2,x,-y+1/2;y+1/2,z,x+1/2;-y+1/2,z,-x+1/2;y+1/2,-z,-x+1/2;-y+1/2,-z,x+1/2;y+1/2,x,-z+1/2;-y+1/2,-x,-z+1/2;y+1/2,-x,z+1/2;-y+1/2,x,z+1/2;x+1/2,z,-y+1/2;-x+1/2,z,y+1/2;-x+1/2,-z,-y+1/2;x+1/2,-z,y+1/2;z+1/2,y,-x+1/2;z+1/2,-y,x+1/2;-z+1/2,y,x+1/2;-z+1/2,-y,-x+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;z+1/2,x+1/2,y;z+1/2,-x+1/2,-y;-z+1/2,-x+1/2,y;-z+1/2,x+1/2,-y;y+1/2,z+1/2,x;-y+1/2,z+1/2,-x;y+1/2,-z+1/2,-x;-y+1/2,-z+1/2,x;y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z;y+1/2,-x+1/2,z;-y+1/2,x+1/2,z;x+1/2,z+1/2,-y;-x+1/2,z+1/2,y;-x+1/2,-z+1/2,-y;x+1/2,-z+1/2,y;z+1/2,y+1/2,-x;z+1/2,-y+1/2,x;-z+1/2,y+1/2,x;-z+1/2,-y+1/2,-x +210 a,b,c F 41 3 2 x,y,z;-x,-y+1/2,z+1/2;-x+1/2,y+1/2,-z;x+1/2,-y,-z+1/2;z,x,y;z+1/2,-x,-y+1/2;-z,-x+1/2,y+1/2;-z+1/2,x+1/2,-y;y,z,x;-y+1/2,z+1/2,-x;y+1/2,-z,-x+1/2;-y,-z+1/2,x+1/2;y+3/4,x+1/4,-z+3/4;-y+1/4,-x+1/4,-z+1/4;y+1/4,-x+3/4,z+3/4;-y+3/4,x+3/4,z+1/4;x+3/4,z+1/4,-y+3/4;-x+3/4,z+3/4,y+1/4;-x+1/4,-z+1/4,-y+1/4;x+1/4,-z+3/4,y+3/4;z+3/4,y+1/4,-x+3/4;z+1/4,-y+3/4,x+3/4;-z+3/4,y+3/4,x+1/4;-z+1/4,-y+1/4,-x+1/4;x,y+1/2,z+1/2;-x,-y,z;-x+1/2,y,-z+1/2;x+1/2,-y+1/2,-z;z,x+1/2,y+1/2;z+1/2,-x+1/2,-y;-z,-x,y;-z+1/2,x,-y+1/2;y,z+1/2,x+1/2;-y+1/2,z,-x+1/2;y+1/2,-z+1/2,-x;-y,-z,x;y+3/4,x+3/4,-z+1/4;-y+1/4,-x+3/4,-z+3/4;y+1/4,-x+1/4,z+1/4;-y+3/4,x+1/4,z+3/4;x+3/4,z+3/4,-y+1/4;-x+3/4,z+1/4,y+3/4;-x+1/4,-z+3/4,-y+3/4;x+1/4,-z+1/4,y+1/4;z+3/4,y+3/4,-x+1/4;z+1/4,-y+1/4,x+1/4;-z+3/4,y+1/4,x+3/4;-z+1/4,-y+3/4,-x+3/4;x+1/2,y,z+1/2;-x+1/2,-y+1/2,z;-x,y+1/2,-z+1/2;x,-y,-z;z+1/2,x,y+1/2;z,-x,-y;-z+1/2,-x+1/2,y;-z,x+1/2,-y+1/2;y+1/2,z,x+1/2;-y,z+1/2,-x+1/2;y,-z,-x;-y+1/2,-z+1/2,x;y+1/4,x+1/4,-z+1/4;-y+3/4,-x+1/4,-z+3/4;y+3/4,-x+3/4,z+1/4;-y+1/4,x+3/4,z+3/4;x+1/4,z+1/4,-y+1/4;-x+1/4,z+3/4,y+3/4;-x+3/4,-z+1/4,-y+3/4;x+3/4,-z+3/4,y+1/4;z+1/4,y+1/4,-x+1/4;z+3/4,-y+3/4,x+1/4;-z+1/4,y+3/4,x+3/4;-z+3/4,-y+1/4,-x+3/4;x+1/2,y+1/2,z;-x+1/2,-y,z+1/2;-x,y,-z;x,-y+1/2,-z+1/2;z+1/2,x+1/2,y;z,-x+1/2,-y+1/2;-z+1/2,-x,y+1/2;-z,x,-y;y+1/2,z+1/2,x;-y,z,-x;y,-z+1/2,-x+1/2;-y+1/2,-z,x+1/2;y+1/4,x+3/4,-z+3/4;-y+3/4,-x+3/4,-z+1/4;y+3/4,-x+1/4,z+3/4;-y+1/4,x+1/4,z+1/4;x+1/4,z+3/4,-y+3/4;-x+1/4,z+1/4,y+1/4;-x+3/4,-z+3/4,-y+1/4;x+3/4,-z+1/4,y+3/4;z+1/4,y+3/4,-x+3/4;z+3/4,-y+1/4,x+3/4;-z+1/4,y+1/4,x+1/4;-z+3/4,-y+3/4,-x+1/4 +211 a,b,c I 4 3 2 x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,-z;-y,-x,-z;y,-x,z;-y,x,z;x,z,-y;-x,z,y;-x,-z,-y;x,-z,y;z,y,-x;z,-y,x;-z,y,x;-z,-y,-x;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;z+1/2,x+1/2,y+1/2;z+1/2,-x+1/2,-y+1/2;-z+1/2,-x+1/2,y+1/2;-z+1/2,x+1/2,-y+1/2;y+1/2,z+1/2,x+1/2;-y+1/2,z+1/2,-x+1/2;y+1/2,-z+1/2,-x+1/2;-y+1/2,-z+1/2,x+1/2;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;x+1/2,z+1/2,-y+1/2;-x+1/2,z+1/2,y+1/2;-x+1/2,-z+1/2,-y+1/2;x+1/2,-z+1/2,y+1/2;z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,x+1/2;-z+1/2,-y+1/2,-x+1/2 +212 a,b,c P 43 3 2 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2;y+1/4,x+3/4,-z+3/4;-y+1/4,-x+1/4,-z+1/4;y+3/4,-x+3/4,z+1/4;-y+3/4,x+1/4,z+3/4;x+1/4,z+3/4,-y+3/4;-x+3/4,z+1/4,y+3/4;-x+1/4,-z+1/4,-y+1/4;x+3/4,-z+3/4,y+1/4;z+1/4,y+3/4,-x+3/4;z+3/4,-y+3/4,x+1/4;-z+3/4,y+1/4,x+3/4;-z+1/4,-y+1/4,-x+1/4 +213 a,b,c P 41 3 2 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2;y+3/4,x+1/4,-z+1/4;-y+3/4,-x+3/4,-z+3/4;y+1/4,-x+1/4,z+3/4;-y+1/4,x+3/4,z+1/4;x+3/4,z+1/4,-y+1/4;-x+1/4,z+3/4,y+1/4;-x+3/4,-z+3/4,-y+3/4;x+1/4,-z+1/4,y+3/4;z+3/4,y+1/4,-x+1/4;z+1/4,-y+1/4,x+3/4;-z+1/4,y+3/4,x+1/4;-z+3/4,-y+3/4,-x+3/4 +214 a,b,c I 41 3 2 x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2;y+3/4,x+1/4,-z+1/4;-y+3/4,-x+3/4,-z+3/4;y+1/4,-x+1/4,z+3/4;-y+1/4,x+3/4,z+1/4;x+3/4,z+1/4,-y+1/4;-x+1/4,z+3/4,y+1/4;-x+3/4,-z+3/4,-y+3/4;x+1/4,-z+1/4,y+3/4;z+3/4,y+1/4,-x+1/4;z+1/4,-y+1/4,x+3/4;-z+1/4,y+3/4,x+1/4;-z+3/4,-y+3/4,-x+3/4;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-x+1/2,y,-z;x,-y,-z+1/2;z+1/2,x+1/2,y+1/2;z,-x,-y+1/2;-z,-x+1/2,y;-z+1/2,x,-y;y+1/2,z+1/2,x+1/2;-y+1/2,z,-x;y,-z,-x+1/2;-y,-z+1/2,x;y+1/4,x+3/4,-z+3/4;-y+1/4,-x+1/4,-z+1/4;y+3/4,-x+3/4,z+1/4;-y+3/4,x+1/4,z+3/4;x+1/4,z+3/4,-y+3/4;-x+3/4,z+1/4,y+3/4;-x+1/4,-z+1/4,-y+1/4;x+3/4,-z+3/4,y+1/4;z+1/4,y+3/4,-x+3/4;z+3/4,-y+3/4,x+1/4;-z+3/4,y+1/4,x+3/4;-z+1/4,-y+1/4,-x+1/4 +215 a,b,c P -4 3 m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,z;-y,-x,z;y,-x,-z;-y,x,-z;x,z,y;-x,z,-y;-x,-z,y;x,-z,-y;z,y,x;z,-y,-x;-z,y,-x;-z,-y,x +216 a,b,c F -4 3 m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,z;-y,-x,z;y,-x,-z;-y,x,-z;x,z,y;-x,z,-y;-x,-z,y;x,-z,-y;z,y,x;z,-y,-x;-z,y,-x;-z,-y,x;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;z,x+1/2,y+1/2;z,-x+1/2,-y+1/2;-z,-x+1/2,y+1/2;-z,x+1/2,-y+1/2;y,z+1/2,x+1/2;-y,z+1/2,-x+1/2;y,-z+1/2,-x+1/2;-y,-z+1/2,x+1/2;y,x+1/2,z+1/2;-y,-x+1/2,z+1/2;y,-x+1/2,-z+1/2;-y,x+1/2,-z+1/2;x,z+1/2,y+1/2;-x,z+1/2,-y+1/2;-x,-z+1/2,y+1/2;x,-z+1/2,-y+1/2;z,y+1/2,x+1/2;z,-y+1/2,-x+1/2;-z,y+1/2,-x+1/2;-z,-y+1/2,x+1/2;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;z+1/2,x,y+1/2;z+1/2,-x,-y+1/2;-z+1/2,-x,y+1/2;-z+1/2,x,-y+1/2;y+1/2,z,x+1/2;-y+1/2,z,-x+1/2;y+1/2,-z,-x+1/2;-y+1/2,-z,x+1/2;y+1/2,x,z+1/2;-y+1/2,-x,z+1/2;y+1/2,-x,-z+1/2;-y+1/2,x,-z+1/2;x+1/2,z,y+1/2;-x+1/2,z,-y+1/2;-x+1/2,-z,y+1/2;x+1/2,-z,-y+1/2;z+1/2,y,x+1/2;z+1/2,-y,-x+1/2;-z+1/2,y,-x+1/2;-z+1/2,-y,x+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;z+1/2,x+1/2,y;z+1/2,-x+1/2,-y;-z+1/2,-x+1/2,y;-z+1/2,x+1/2,-y;y+1/2,z+1/2,x;-y+1/2,z+1/2,-x;y+1/2,-z+1/2,-x;-y+1/2,-z+1/2,x;y+1/2,x+1/2,z;-y+1/2,-x+1/2,z;y+1/2,-x+1/2,-z;-y+1/2,x+1/2,-z;x+1/2,z+1/2,y;-x+1/2,z+1/2,-y;-x+1/2,-z+1/2,y;x+1/2,-z+1/2,-y;z+1/2,y+1/2,x;z+1/2,-y+1/2,-x;-z+1/2,y+1/2,-x;-z+1/2,-y+1/2,x +217 a,b,c I -4 3 m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,z;-y,-x,z;y,-x,-z;-y,x,-z;x,z,y;-x,z,-y;-x,-z,y;x,-z,-y;z,y,x;z,-y,-x;-z,y,-x;-z,-y,x;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;z+1/2,x+1/2,y+1/2;z+1/2,-x+1/2,-y+1/2;-z+1/2,-x+1/2,y+1/2;-z+1/2,x+1/2,-y+1/2;y+1/2,z+1/2,x+1/2;-y+1/2,z+1/2,-x+1/2;y+1/2,-z+1/2,-x+1/2;-y+1/2,-z+1/2,x+1/2;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,z+1/2,y+1/2;-x+1/2,z+1/2,-y+1/2;-x+1/2,-z+1/2,y+1/2;x+1/2,-z+1/2,-y+1/2;z+1/2,y+1/2,x+1/2;z+1/2,-y+1/2,-x+1/2;-z+1/2,y+1/2,-x+1/2;-z+1/2,-y+1/2,x+1/2 +218 a,b,c P -4 3 n x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,z+1/2,y+1/2;-x+1/2,z+1/2,-y+1/2;-x+1/2,-z+1/2,y+1/2;x+1/2,-z+1/2,-y+1/2;z+1/2,y+1/2,x+1/2;z+1/2,-y+1/2,-x+1/2;-z+1/2,y+1/2,-x+1/2;-z+1/2,-y+1/2,x+1/2 +219 a,b,c F -4 3 c x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y+1/2,x+1/2,z+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,-x+1/2,-z+1/2;-y+1/2,x+1/2,-z+1/2;x+1/2,z+1/2,y+1/2;-x+1/2,z+1/2,-y+1/2;-x+1/2,-z+1/2,y+1/2;x+1/2,-z+1/2,-y+1/2;z+1/2,y+1/2,x+1/2;z+1/2,-y+1/2,-x+1/2;-z+1/2,y+1/2,-x+1/2;-z+1/2,-y+1/2,x+1/2;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;z,x+1/2,y+1/2;z,-x+1/2,-y+1/2;-z,-x+1/2,y+1/2;-z,x+1/2,-y+1/2;y,z+1/2,x+1/2;-y,z+1/2,-x+1/2;y,-z+1/2,-x+1/2;-y,-z+1/2,x+1/2;y+1/2,x,z;-y+1/2,-x,z;y+1/2,-x,-z;-y+1/2,x,-z;x+1/2,z,y;-x+1/2,z,-y;-x+1/2,-z,y;x+1/2,-z,-y;z+1/2,y,x;z+1/2,-y,-x;-z+1/2,y,-x;-z+1/2,-y,x;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;z+1/2,x,y+1/2;z+1/2,-x,-y+1/2;-z+1/2,-x,y+1/2;-z+1/2,x,-y+1/2;y+1/2,z,x+1/2;-y+1/2,z,-x+1/2;y+1/2,-z,-x+1/2;-y+1/2,-z,x+1/2;y,x+1/2,z;-y,-x+1/2,z;y,-x+1/2,-z;-y,x+1/2,-z;x,z+1/2,y;-x,z+1/2,-y;-x,-z+1/2,y;x,-z+1/2,-y;z,y+1/2,x;z,-y+1/2,-x;-z,y+1/2,-x;-z,-y+1/2,x;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;z+1/2,x+1/2,y;z+1/2,-x+1/2,-y;-z+1/2,-x+1/2,y;-z+1/2,x+1/2,-y;y+1/2,z+1/2,x;-y+1/2,z+1/2,-x;y+1/2,-z+1/2,-x;-y+1/2,-z+1/2,x;y,x,z+1/2;-y,-x,z+1/2;y,-x,-z+1/2;-y,x,-z+1/2;x,z,y+1/2;-x,z,-y+1/2;-x,-z,y+1/2;x,-z,-y+1/2;z,y,x+1/2;z,-y,-x+1/2;-z,y,-x+1/2;-z,-y,x+1/2 +220 a,b,c I -4 3 d x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2;y+1/4,x+1/4,z+1/4;-y+1/4,-x+3/4,z+3/4;y+3/4,-x+1/4,-z+3/4;-y+3/4,x+3/4,-z+1/4;x+1/4,z+1/4,y+1/4;-x+3/4,z+3/4,-y+1/4;-x+1/4,-z+3/4,y+3/4;x+3/4,-z+1/4,-y+3/4;z+1/4,y+1/4,x+1/4;z+3/4,-y+1/4,-x+3/4;-z+3/4,y+3/4,-x+1/4;-z+1/4,-y+3/4,x+3/4;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-x+1/2,y,-z;x,-y,-z+1/2;z+1/2,x+1/2,y+1/2;z,-x,-y+1/2;-z,-x+1/2,y;-z+1/2,x,-y;y+1/2,z+1/2,x+1/2;-y+1/2,z,-x;y,-z,-x+1/2;-y,-z+1/2,x;y+3/4,x+3/4,z+3/4;-y+3/4,-x+1/4,z+1/4;y+1/4,-x+3/4,-z+1/4;-y+1/4,x+1/4,-z+3/4;x+3/4,z+3/4,y+3/4;-x+1/4,z+1/4,-y+3/4;-x+3/4,-z+1/4,y+1/4;x+1/4,-z+3/4,-y+1/4;z+3/4,y+3/4,x+3/4;z+1/4,-y+3/4,-x+1/4;-z+1/4,y+1/4,-x+3/4;-z+3/4,-y+1/4,x+1/4 +221 a,b,c P m -3 m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,-z;-y,-x,-z;y,-x,z;-y,x,z;x,z,-y;-x,z,y;-x,-z,-y;x,-z,y;z,y,-x;z,-y,x;-z,y,x;-z,-y,-x;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;-z,-x,-y;-z,x,y;z,x,-y;z,-x,y;-y,-z,-x;y,-z,x;-y,z,x;y,z,-x;-y,-x,z;y,x,z;-y,x,-z;y,-x,-z;-x,-z,y;x,-z,-y;x,z,y;-x,z,-y;-z,-y,x;-z,y,-x;z,-y,-x;z,y,x +222 a,b,c P n -3 n [origin 2] x,y,z;-x+1/2,-y+1/2,z;-x+1/2,y,-z+1/2;x,-y+1/2,-z+1/2;z,x,y;z,-x+1/2,-y+1/2;-z+1/2,-x+1/2,y;-z+1/2,x,-y+1/2;y,z,x;-y+1/2,z,-x+1/2;y,-z+1/2,-x+1/2;-y+1/2,-z+1/2,x;y,x,-z+1/2;-y+1/2,-x+1/2,-z+1/2;y,-x+1/2,z;-y+1/2,x,z;x,z,-y+1/2;-x+1/2,z,y;-x+1/2,-z+1/2,-y+1/2;x,-z+1/2,y;z,y,-x+1/2;z,-y+1/2,x;-z+1/2,y,x;-z+1/2,-y+1/2,-x+1/2;-x,-y,-z;x+1/2,y+1/2,-z;x+1/2,-y,z+1/2;-x,y+1/2,z+1/2;-z,-x,-y;-z,x+1/2,y+1/2;z+1/2,x+1/2,-y;z+1/2,-x,y+1/2;-y,-z,-x;y+1/2,-z,x+1/2;-y,z+1/2,x+1/2;y+1/2,z+1/2,-x;-y,-x,z+1/2;y+1/2,x+1/2,z+1/2;-y,x+1/2,-z;y+1/2,-x,-z;-x,-z,y+1/2;x+1/2,-z,-y;x+1/2,z+1/2,y+1/2;-x,z+1/2,-y;-z,-y,x+1/2;-z,y+1/2,-x;z+1/2,-y,-x;z+1/2,y+1/2,x+1/2 +222 a,b,c;-1/4,-1/4,-1/4 P n -3 n :1 x,y,z;z,x,y;y,z,x;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-z+1/2,-x+1/2,-y+1/2;-z+1/2,x+1/2,y+1/2;z+1/2,x+1/2,-y+1/2;z+1/2,-x+1/2,y+1/2;-y+1/2,-z+1/2,-x+1/2;y+1/2,-z+1/2,x+1/2;-y+1/2,z+1/2,x+1/2;y+1/2,z+1/2,-x+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2;-y+1/2,x+1/2,-z+1/2;y+1/2,-x+1/2,-z+1/2;-x+1/2,-z+1/2,y+1/2;x+1/2,-z+1/2,-y+1/2;x+1/2,z+1/2,y+1/2;-x+1/2,z+1/2,-y+1/2;-z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,-x+1/2;z+1/2,y+1/2,x+1/2 +223 a,b,c P m -3 n x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;x+1/2,z+1/2,-y+1/2;-x+1/2,z+1/2,y+1/2;-x+1/2,-z+1/2,-y+1/2;x+1/2,-z+1/2,y+1/2;z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,x+1/2;-z+1/2,-y+1/2,-x+1/2;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;-z,-x,-y;-z,x,y;z,x,-y;z,-x,y;-y,-z,-x;y,-z,x;-y,z,x;y,z,-x;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2;-y+1/2,x+1/2,-z+1/2;y+1/2,-x+1/2,-z+1/2;-x+1/2,-z+1/2,y+1/2;x+1/2,-z+1/2,-y+1/2;x+1/2,z+1/2,y+1/2;-x+1/2,z+1/2,-y+1/2;-z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,-x+1/2;z+1/2,y+1/2,x+1/2 +224 a,b,c P n -3 m [origin 2] x,y,z;-x+1/2,-y+1/2,z;-x+1/2,y,-z+1/2;x,-y+1/2,-z+1/2;z,x,y;z,-x+1/2,-y+1/2;-z+1/2,-x+1/2,y;-z+1/2,x,-y+1/2;y,z,x;-y+1/2,z,-x+1/2;y,-z+1/2,-x+1/2;-y+1/2,-z+1/2,x;y+1/2,x+1/2,-z;-y,-x,-z;y+1/2,-x,z+1/2;-y,x+1/2,z+1/2;x+1/2,z+1/2,-y;-x,z+1/2,y+1/2;-x,-z,-y;x+1/2,-z,y+1/2;z+1/2,y+1/2,-x;z+1/2,-y,x+1/2;-z,y+1/2,x+1/2;-z,-y,-x;-x,-y,-z;x+1/2,y+1/2,-z;x+1/2,-y,z+1/2;-x,y+1/2,z+1/2;-z,-x,-y;-z,x+1/2,y+1/2;z+1/2,x+1/2,-y;z+1/2,-x,y+1/2;-y,-z,-x;y+1/2,-z,x+1/2;-y,z+1/2,x+1/2;y+1/2,z+1/2,-x;-y+1/2,-x+1/2,z;y,x,z;-y+1/2,x,-z+1/2;y,-x+1/2,-z+1/2;-x+1/2,-z+1/2,y;x,-z+1/2,-y+1/2;x,z,y;-x+1/2,z,-y+1/2;-z+1/2,-y+1/2,x;-z+1/2,y,-x+1/2;z,-y+1/2,-x+1/2;z,y,x +224 a,b,c;-1/4,-1/4,-1/4 P n -3 m :1 x,y,z;z,x,y;y,z,x;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;x+1/2,z+1/2,-y+1/2;-x+1/2,z+1/2,y+1/2;-x+1/2,-z+1/2,-y+1/2;x+1/2,-z+1/2,y+1/2;z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,x+1/2;-z+1/2,-y+1/2,-x+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-z+1/2,-x+1/2,-y+1/2;-z+1/2,x+1/2,y+1/2;z+1/2,x+1/2,-y+1/2;z+1/2,-x+1/2,y+1/2;-y+1/2,-z+1/2,-x+1/2;y+1/2,-z+1/2,x+1/2;-y+1/2,z+1/2,x+1/2;y+1/2,z+1/2,-x+1/2;y,x,z;x,z,y;z,y,x +225 a,b,c F m -3 m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,-z;-y,-x,-z;y,-x,z;-y,x,z;x,z,-y;-x,z,y;-x,-z,-y;x,-z,y;z,y,-x;z,-y,x;-z,y,x;-z,-y,-x;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;-z,-x,-y;-z,x,y;z,x,-y;z,-x,y;-y,-z,-x;y,-z,x;-y,z,x;y,z,-x;-y,-x,z;y,x,z;-y,x,-z;y,-x,-z;-x,-z,y;x,-z,-y;x,z,y;-x,z,-y;-z,-y,x;-z,y,-x;z,-y,-x;z,y,x;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;z,x+1/2,y+1/2;z,-x+1/2,-y+1/2;-z,-x+1/2,y+1/2;-z,x+1/2,-y+1/2;y,z+1/2,x+1/2;-y,z+1/2,-x+1/2;y,-z+1/2,-x+1/2;-y,-z+1/2,x+1/2;y,x+1/2,-z+1/2;-y,-x+1/2,-z+1/2;y,-x+1/2,z+1/2;-y,x+1/2,z+1/2;x,z+1/2,-y+1/2;-x,z+1/2,y+1/2;-x,-z+1/2,-y+1/2;x,-z+1/2,y+1/2;z,y+1/2,-x+1/2;z,-y+1/2,x+1/2;-z,y+1/2,x+1/2;-z,-y+1/2,-x+1/2;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;-z,-x+1/2,-y+1/2;-z,x+1/2,y+1/2;z,x+1/2,-y+1/2;z,-x+1/2,y+1/2;-y,-z+1/2,-x+1/2;y,-z+1/2,x+1/2;-y,z+1/2,x+1/2;y,z+1/2,-x+1/2;-y,-x+1/2,z+1/2;y,x+1/2,z+1/2;-y,x+1/2,-z+1/2;y,-x+1/2,-z+1/2;-x,-z+1/2,y+1/2;x,-z+1/2,-y+1/2;x,z+1/2,y+1/2;-x,z+1/2,-y+1/2;-z,-y+1/2,x+1/2;-z,y+1/2,-x+1/2;z,-y+1/2,-x+1/2;z,y+1/2,x+1/2;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;z+1/2,x,y+1/2;z+1/2,-x,-y+1/2;-z+1/2,-x,y+1/2;-z+1/2,x,-y+1/2;y+1/2,z,x+1/2;-y+1/2,z,-x+1/2;y+1/2,-z,-x+1/2;-y+1/2,-z,x+1/2;y+1/2,x,-z+1/2;-y+1/2,-x,-z+1/2;y+1/2,-x,z+1/2;-y+1/2,x,z+1/2;x+1/2,z,-y+1/2;-x+1/2,z,y+1/2;-x+1/2,-z,-y+1/2;x+1/2,-z,y+1/2;z+1/2,y,-x+1/2;z+1/2,-y,x+1/2;-z+1/2,y,x+1/2;-z+1/2,-y,-x+1/2;-x+1/2,-y,-z+1/2;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2;-x+1/2,y,z+1/2;-z+1/2,-x,-y+1/2;-z+1/2,x,y+1/2;z+1/2,x,-y+1/2;z+1/2,-x,y+1/2;-y+1/2,-z,-x+1/2;y+1/2,-z,x+1/2;-y+1/2,z,x+1/2;y+1/2,z,-x+1/2;-y+1/2,-x,z+1/2;y+1/2,x,z+1/2;-y+1/2,x,-z+1/2;y+1/2,-x,-z+1/2;-x+1/2,-z,y+1/2;x+1/2,-z,-y+1/2;x+1/2,z,y+1/2;-x+1/2,z,-y+1/2;-z+1/2,-y,x+1/2;-z+1/2,y,-x+1/2;z+1/2,-y,-x+1/2;z+1/2,y,x+1/2;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;z+1/2,x+1/2,y;z+1/2,-x+1/2,-y;-z+1/2,-x+1/2,y;-z+1/2,x+1/2,-y;y+1/2,z+1/2,x;-y+1/2,z+1/2,-x;y+1/2,-z+1/2,-x;-y+1/2,-z+1/2,x;y+1/2,x+1/2,-z;-y+1/2,-x+1/2,-z;y+1/2,-x+1/2,z;-y+1/2,x+1/2,z;x+1/2,z+1/2,-y;-x+1/2,z+1/2,y;-x+1/2,-z+1/2,-y;x+1/2,-z+1/2,y;z+1/2,y+1/2,-x;z+1/2,-y+1/2,x;-z+1/2,y+1/2,x;-z+1/2,-y+1/2,-x;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-z+1/2,-x+1/2,-y;-z+1/2,x+1/2,y;z+1/2,x+1/2,-y;z+1/2,-x+1/2,y;-y+1/2,-z+1/2,-x;y+1/2,-z+1/2,x;-y+1/2,z+1/2,x;y+1/2,z+1/2,-x;-y+1/2,-x+1/2,z;y+1/2,x+1/2,z;-y+1/2,x+1/2,-z;y+1/2,-x+1/2,-z;-x+1/2,-z+1/2,y;x+1/2,-z+1/2,-y;x+1/2,z+1/2,y;-x+1/2,z+1/2,-y;-z+1/2,-y+1/2,x;-z+1/2,y+1/2,-x;z+1/2,-y+1/2,-x;z+1/2,y+1/2,x +226 a,b,c F m -3 c x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;x+1/2,z+1/2,-y+1/2;-x+1/2,z+1/2,y+1/2;-x+1/2,-z+1/2,-y+1/2;x+1/2,-z+1/2,y+1/2;z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,x+1/2;-z+1/2,-y+1/2,-x+1/2;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;-z,-x,-y;-z,x,y;z,x,-y;z,-x,y;-y,-z,-x;y,-z,x;-y,z,x;y,z,-x;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2;-y+1/2,x+1/2,-z+1/2;y+1/2,-x+1/2,-z+1/2;-x+1/2,-z+1/2,y+1/2;x+1/2,-z+1/2,-y+1/2;x+1/2,z+1/2,y+1/2;-x+1/2,z+1/2,-y+1/2;-z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,-x+1/2;z+1/2,y+1/2,x+1/2;x,y+1/2,z+1/2;-x,-y+1/2,z+1/2;-x,y+1/2,-z+1/2;x,-y+1/2,-z+1/2;z,x+1/2,y+1/2;z,-x+1/2,-y+1/2;-z,-x+1/2,y+1/2;-z,x+1/2,-y+1/2;y,z+1/2,x+1/2;-y,z+1/2,-x+1/2;y,-z+1/2,-x+1/2;-y,-z+1/2,x+1/2;y+1/2,x,-z;-y+1/2,-x,-z;y+1/2,-x,z;-y+1/2,x,z;x+1/2,z,-y;-x+1/2,z,y;-x+1/2,-z,-y;x+1/2,-z,y;z+1/2,y,-x;z+1/2,-y,x;-z+1/2,y,x;-z+1/2,-y,-x;-x,-y+1/2,-z+1/2;x,y+1/2,-z+1/2;x,-y+1/2,z+1/2;-x,y+1/2,z+1/2;-z,-x+1/2,-y+1/2;-z,x+1/2,y+1/2;z,x+1/2,-y+1/2;z,-x+1/2,y+1/2;-y,-z+1/2,-x+1/2;y,-z+1/2,x+1/2;-y,z+1/2,x+1/2;y,z+1/2,-x+1/2;-y+1/2,-x,z;y+1/2,x,z;-y+1/2,x,-z;y+1/2,-x,-z;-x+1/2,-z,y;x+1/2,-z,-y;x+1/2,z,y;-x+1/2,z,-y;-z+1/2,-y,x;-z+1/2,y,-x;z+1/2,-y,-x;z+1/2,y,x;x+1/2,y,z+1/2;-x+1/2,-y,z+1/2;-x+1/2,y,-z+1/2;x+1/2,-y,-z+1/2;z+1/2,x,y+1/2;z+1/2,-x,-y+1/2;-z+1/2,-x,y+1/2;-z+1/2,x,-y+1/2;y+1/2,z,x+1/2;-y+1/2,z,-x+1/2;y+1/2,-z,-x+1/2;-y+1/2,-z,x+1/2;y,x+1/2,-z;-y,-x+1/2,-z;y,-x+1/2,z;-y,x+1/2,z;x,z+1/2,-y;-x,z+1/2,y;-x,-z+1/2,-y;x,-z+1/2,y;z,y+1/2,-x;z,-y+1/2,x;-z,y+1/2,x;-z,-y+1/2,-x;-x+1/2,-y,-z+1/2;x+1/2,y,-z+1/2;x+1/2,-y,z+1/2;-x+1/2,y,z+1/2;-z+1/2,-x,-y+1/2;-z+1/2,x,y+1/2;z+1/2,x,-y+1/2;z+1/2,-x,y+1/2;-y+1/2,-z,-x+1/2;y+1/2,-z,x+1/2;-y+1/2,z,x+1/2;y+1/2,z,-x+1/2;-y,-x+1/2,z;y,x+1/2,z;-y,x+1/2,-z;y,-x+1/2,-z;-x,-z+1/2,y;x,-z+1/2,-y;x,z+1/2,y;-x,z+1/2,-y;-z,-y+1/2,x;-z,y+1/2,-x;z,-y+1/2,-x;z,y+1/2,x;x+1/2,y+1/2,z;-x+1/2,-y+1/2,z;-x+1/2,y+1/2,-z;x+1/2,-y+1/2,-z;z+1/2,x+1/2,y;z+1/2,-x+1/2,-y;-z+1/2,-x+1/2,y;-z+1/2,x+1/2,-y;y+1/2,z+1/2,x;-y+1/2,z+1/2,-x;y+1/2,-z+1/2,-x;-y+1/2,-z+1/2,x;y,x,-z+1/2;-y,-x,-z+1/2;y,-x,z+1/2;-y,x,z+1/2;x,z,-y+1/2;-x,z,y+1/2;-x,-z,-y+1/2;x,-z,y+1/2;z,y,-x+1/2;z,-y,x+1/2;-z,y,x+1/2;-z,-y,-x+1/2;-x+1/2,-y+1/2,-z;x+1/2,y+1/2,-z;x+1/2,-y+1/2,z;-x+1/2,y+1/2,z;-z+1/2,-x+1/2,-y;-z+1/2,x+1/2,y;z+1/2,x+1/2,-y;z+1/2,-x+1/2,y;-y+1/2,-z+1/2,-x;y+1/2,-z+1/2,x;-y+1/2,z+1/2,x;y+1/2,z+1/2,-x;-y,-x,z+1/2;y,x,z+1/2;-y,x,-z+1/2;y,-x,-z+1/2;-x,-z,y+1/2;x,-z,-y+1/2;x,z,y+1/2;-x,z,-y+1/2;-z,-y,x+1/2;-z,y,-x+1/2;z,-y,-x+1/2;z,y,x+1/2 +227 a,b,c F d -3 m [origin 2] x,y,z;-x+3/4,-y+1/4,z+1/2;-x+1/4,y+1/2,-z+3/4;x+1/2,-y+3/4,-z+1/4;z,x,y;z+1/2,-x+3/4,-y+1/4;-z+3/4,-x+1/4,y+1/2;-z+1/4,x+1/2,-y+3/4;y,z,x;-y+1/4,z+1/2,-x+3/4;y+1/2,-z+3/4,-x+1/4;-y+3/4,-z+1/4,x+1/2;y+3/4,x+1/4,-z+1/2;-y,-x,-z;y+1/4,-x+1/2,z+3/4;-y+1/2,x+3/4,z+1/4;x+3/4,z+1/4,-y+1/2;-x+1/2,z+3/4,y+1/4;-x,-z,-y;x+1/4,-z+1/2,y+3/4;z+3/4,y+1/4,-x+1/2;z+1/4,-y+1/2,x+3/4;-z+1/2,y+3/4,x+1/4;-z,-y,-x;-x,-y,-z;x+1/4,y+3/4,-z+1/2;x+3/4,-y+1/2,z+1/4;-x+1/2,y+1/4,z+3/4;-z,-x,-y;-z+1/2,x+1/4,y+3/4;z+1/4,x+3/4,-y+1/2;z+3/4,-x+1/2,y+1/4;-y,-z,-x;y+3/4,-z+1/2,x+1/4;-y+1/2,z+1/4,x+3/4;y+1/4,z+3/4,-x+1/2;-y+1/4,-x+3/4,z+1/2;y,x,z;-y+3/4,x+1/2,-z+1/4;y+1/2,-x+1/4,-z+3/4;-x+1/4,-z+3/4,y+1/2;x+1/2,-z+1/4,-y+3/4;x,z,y;-x+3/4,z+1/2,-y+1/4;-z+1/4,-y+3/4,x+1/2;-z+3/4,y+1/2,-x+1/4;z+1/2,-y+1/4,-x+3/4;z,y,x;x,y+1/2,z+1/2;-x+3/4,-y+3/4,z;-x+1/4,y,-z+1/4;x+1/2,-y+1/4,-z+3/4;z,x+1/2,y+1/2;z+1/2,-x+1/4,-y+3/4;-z+3/4,-x+3/4,y;-z+1/4,x,-y+1/4;y,z+1/2,x+1/2;-y+1/4,z,-x+1/4;y+1/2,-z+1/4,-x+3/4;-y+3/4,-z+3/4,x;y+3/4,x+3/4,-z;-y,-x+1/2,-z+1/2;y+1/4,-x,z+1/4;-y+1/2,x+1/4,z+3/4;x+3/4,z+3/4,-y;-x+1/2,z+1/4,y+3/4;-x,-z+1/2,-y+1/2;x+1/4,-z,y+1/4;z+3/4,y+3/4,-x;z+1/4,-y,x+1/4;-z+1/2,y+1/4,x+3/4;-z,-y+1/2,-x+1/2;-x,-y+1/2,-z+1/2;x+1/4,y+1/4,-z;x+3/4,-y,z+3/4;-x+1/2,y+3/4,z+1/4;-z,-x+1/2,-y+1/2;-z+1/2,x+3/4,y+1/4;z+1/4,x+1/4,-y;z+3/4,-x,y+3/4;-y,-z+1/2,-x+1/2;y+3/4,-z,x+3/4;-y+1/2,z+3/4,x+1/4;y+1/4,z+1/4,-x;-y+1/4,-x+1/4,z;y,x+1/2,z+1/2;-y+3/4,x,-z+3/4;y+1/2,-x+3/4,-z+1/4;-x+1/4,-z+1/4,y;x+1/2,-z+3/4,-y+1/4;x,z+1/2,y+1/2;-x+3/4,z,-y+3/4;-z+1/4,-y+1/4,x;-z+3/4,y,-x+3/4;z+1/2,-y+3/4,-x+1/4;z,y+1/2,x+1/2;x+1/2,y,z+1/2;-x+1/4,-y+1/4,z;-x+3/4,y+1/2,-z+1/4;x,-y+3/4,-z+3/4;z+1/2,x,y+1/2;z,-x+3/4,-y+3/4;-z+1/4,-x+1/4,y;-z+3/4,x+1/2,-y+1/4;y+1/2,z,x+1/2;-y+3/4,z+1/2,-x+1/4;y,-z+3/4,-x+3/4;-y+1/4,-z+1/4,x;y+1/4,x+1/4,-z;-y+1/2,-x,-z+1/2;y+3/4,-x+1/2,z+1/4;-y,x+3/4,z+3/4;x+1/4,z+1/4,-y;-x,z+3/4,y+3/4;-x+1/2,-z,-y+1/2;x+3/4,-z+1/2,y+1/4;z+1/4,y+1/4,-x;z+3/4,-y+1/2,x+1/4;-z,y+3/4,x+3/4;-z+1/2,-y,-x+1/2;-x+1/2,-y,-z+1/2;x+3/4,y+3/4,-z;x+1/4,-y+1/2,z+3/4;-x,y+1/4,z+1/4;-z+1/2,-x,-y+1/2;-z,x+1/4,y+1/4;z+3/4,x+3/4,-y;z+1/4,-x+1/2,y+3/4;-y+1/2,-z,-x+1/2;y+1/4,-z+1/2,x+3/4;-y,z+1/4,x+1/4;y+3/4,z+3/4,-x;-y+3/4,-x+3/4,z;y+1/2,x,z+1/2;-y+1/4,x+1/2,-z+3/4;y,-x+1/4,-z+1/4;-x+3/4,-z+3/4,y;x,-z+1/4,-y+1/4;x+1/2,z,y+1/2;-x+1/4,z+1/2,-y+3/4;-z+3/4,-y+3/4,x;-z+1/4,y+1/2,-x+3/4;z,-y+1/4,-x+1/4;z+1/2,y,x+1/2;x+1/2,y+1/2,z;-x+1/4,-y+3/4,z+1/2;-x+3/4,y,-z+3/4;x,-y+1/4,-z+1/4;z+1/2,x+1/2,y;z,-x+1/4,-y+1/4;-z+1/4,-x+3/4,y+1/2;-z+3/4,x,-y+3/4;y+1/2,z+1/2,x;-y+3/4,z,-x+3/4;y,-z+1/4,-x+1/4;-y+1/4,-z+3/4,x+1/2;y+1/4,x+3/4,-z+1/2;-y+1/2,-x+1/2,-z;y+3/4,-x,z+3/4;-y,x+1/4,z+1/4;x+1/4,z+3/4,-y+1/2;-x,z+1/4,y+1/4;-x+1/2,-z+1/2,-y;x+3/4,-z,y+3/4;z+1/4,y+3/4,-x+1/2;z+3/4,-y,x+3/4;-z,y+1/4,x+1/4;-z+1/2,-y+1/2,-x;-x+1/2,-y+1/2,-z;x+3/4,y+1/4,-z+1/2;x+1/4,-y,z+1/4;-x,y+3/4,z+3/4;-z+1/2,-x+1/2,-y;-z,x+3/4,y+3/4;z+3/4,x+1/4,-y+1/2;z+1/4,-x,y+1/4;-y+1/2,-z+1/2,-x;y+1/4,-z,x+1/4;-y,z+3/4,x+3/4;y+3/4,z+1/4,-x+1/2;-y+3/4,-x+1/4,z+1/2;y+1/2,x+1/2,z;-y+1/4,x,-z+1/4;y,-x+3/4,-z+3/4;-x+3/4,-z+1/4,y+1/2;x,-z+3/4,-y+3/4;x+1/2,z+1/2,y;-x+1/4,z,-y+1/4;-z+3/4,-y+1/4,x+1/2;-z+1/4,y,-x+1/4;z,-y+3/4,-x+3/4;z+1/2,y+1/2,x +227 a,b,c;-1/8,-1/8,-1/8 F d -3 m :1 x,y,z;-x+505/12,-y+499/12,z+1/2;-x+499/12,y+1/2,-z+505/12;x+1/2,-y+505/12,-z+499/12;z,x,y;z+1/2,-x+505/12,-y+499/12;-z+505/12,-x+499/12,y+1/2;-z+499/12,x+1/2,-y+505/12;y,z,x;-y+499/12,z+1/2,-x+505/12;y+1/2,-z+505/12,-x+499/12;-y+505/12,-z+499/12,x+1/2;y+3/4,x+1/4,-z+251/6;-y+124/3,-x+124/3,-z+124/3;y+1/4,-x+251/6,z+3/4;-y+251/6,x+3/4,z+1/4;x+3/4,z+1/4,-y+251/6;-x+251/6,z+3/4,y+1/4;-x+124/3,-z+124/3,-y+124/3;x+1/4,-z+251/6,y+3/4;z+3/4,y+1/4,-x+251/6;z+1/4,-y+251/6,x+3/4;-z+251/6,y+3/4,x+1/4;-z+124/3,-y+124/3,-x+124/3;-x+124/3,-y+124/3,-z+124/3;x+1/4,y+3/4,-z+251/6;x+3/4,-y+251/6,z+1/4;-x+251/6,y+1/4,z+3/4;-z+124/3,-x+124/3,-y+124/3;-z+251/6,x+1/4,y+3/4;z+1/4,x+3/4,-y+251/6;z+3/4,-x+251/6,y+1/4;-y+124/3,-z+124/3,-x+124/3;y+3/4,-z+251/6,x+1/4;-y+251/6,z+1/4,x+3/4;y+1/4,z+3/4,-x+251/6;-y+499/12,-x+505/12,z+1/2;y,x,z;-y+505/12,x+1/2,-z+499/12;y+1/2,-x+499/12,-z+505/12;-x+499/12,-z+505/12,y+1/2;x+1/2,-z+499/12,-y+505/12;x,z,y;-x+505/12,z+1/2,-y+499/12;-z+499/12,-y+505/12,x+1/2;-z+505/12,y+1/2,-x+499/12;z+1/2,-y+499/12,-x+505/12;z,y,x;x,y+1/2,z+1/2;-x+505/12,-y+505/12,z;-x+499/12,y,-z+499/12;x+1/2,-y+499/12,-z+505/12;z,x+1/2,y+1/2;z+1/2,-x+499/12,-y+505/12;-z+505/12,-x+505/12,y;-z+499/12,x,-y+499/12;y,z+1/2,x+1/2;-y+499/12,z,-x+499/12;y+1/2,-z+499/12,-x+505/12;-y+505/12,-z+505/12,x;y+3/4,x+3/4,-z+124/3;-y+124/3,-x+251/6,-z+251/6;y+1/4,-x+124/3,z+1/4;-y+251/6,x+1/4,z+3/4;x+3/4,z+3/4,-y+124/3;-x+251/6,z+1/4,y+3/4;-x+124/3,-z+251/6,-y+251/6;x+1/4,-z+124/3,y+1/4;z+3/4,y+3/4,-x+124/3;z+1/4,-y+124/3,x+1/4;-z+251/6,y+1/4,x+3/4;-z+124/3,-y+251/6,-x+251/6;-x+124/3,-y+251/6,-z+251/6;x+1/4,y+1/4,-z+124/3;x+3/4,-y+124/3,z+3/4;-x+251/6,y+3/4,z+1/4;-z+124/3,-x+251/6,-y+251/6;-z+251/6,x+3/4,y+1/4;z+1/4,x+1/4,-y+124/3;z+3/4,-x+124/3,y+3/4;-y+124/3,-z+251/6,-x+251/6;y+3/4,-z+124/3,x+3/4;-y+251/6,z+3/4,x+1/4;y+1/4,z+1/4,-x+124/3;-y+499/12,-x+499/12,z;y,x+1/2,z+1/2;-y+505/12,x,-z+505/12;y+1/2,-x+505/12,-z+499/12;-x+499/12,-z+499/12,y;x+1/2,-z+505/12,-y+499/12;x,z+1/2,y+1/2;-x+505/12,z,-y+505/12;-z+499/12,-y+499/12,x;-z+505/12,y,-x+505/12;z+1/2,-y+505/12,-x+499/12;z,y+1/2,x+1/2;x+1/2,y,z+1/2;-x+499/12,-y+499/12,z;-x+505/12,y+1/2,-z+499/12;x,-y+505/12,-z+505/12;z+1/2,x,y+1/2;z,-x+505/12,-y+505/12;-z+499/12,-x+499/12,y;-z+505/12,x+1/2,-y+499/12;y+1/2,z,x+1/2;-y+505/12,z+1/2,-x+499/12;y,-z+505/12,-x+505/12;-y+499/12,-z+499/12,x;y+1/4,x+1/4,-z+124/3;-y+251/6,-x+124/3,-z+251/6;y+3/4,-x+251/6,z+1/4;-y+124/3,x+3/4,z+3/4;x+1/4,z+1/4,-y+124/3;-x+124/3,z+3/4,y+3/4;-x+251/6,-z+124/3,-y+251/6;x+3/4,-z+251/6,y+1/4;z+1/4,y+1/4,-x+124/3;z+3/4,-y+251/6,x+1/4;-z+124/3,y+3/4,x+3/4;-z+251/6,-y+124/3,-x+251/6;-x+251/6,-y+124/3,-z+251/6;x+3/4,y+3/4,-z+124/3;x+1/4,-y+251/6,z+3/4;-x+124/3,y+1/4,z+1/4;-z+251/6,-x+124/3,-y+251/6;-z+124/3,x+1/4,y+1/4;z+3/4,x+3/4,-y+124/3;z+1/4,-x+251/6,y+3/4;-y+251/6,-z+124/3,-x+251/6;y+1/4,-z+251/6,x+3/4;-y+124/3,z+1/4,x+1/4;y+3/4,z+3/4,-x+124/3;-y+505/12,-x+505/12,z;y+1/2,x,z+1/2;-y+499/12,x+1/2,-z+505/12;y,-x+499/12,-z+499/12;-x+505/12,-z+505/12,y;x,-z+499/12,-y+499/12;x+1/2,z,y+1/2;-x+499/12,z+1/2,-y+505/12;-z+505/12,-y+505/12,x;-z+499/12,y+1/2,-x+505/12;z,-y+499/12,-x+499/12;z+1/2,y,x+1/2;x+1/2,y+1/2,z;-x+499/12,-y+505/12,z+1/2;-x+505/12,y,-z+505/12;x,-y+499/12,-z+499/12;z+1/2,x+1/2,y;z,-x+499/12,-y+499/12;-z+499/12,-x+505/12,y+1/2;-z+505/12,x,-y+505/12;y+1/2,z+1/2,x;-y+505/12,z,-x+505/12;y,-z+499/12,-x+499/12;-y+499/12,-z+505/12,x+1/2;y+1/4,x+3/4,-z+251/6;-y+251/6,-x+251/6,-z+124/3;y+3/4,-x+124/3,z+3/4;-y+124/3,x+1/4,z+1/4;x+1/4,z+3/4,-y+251/6;-x+124/3,z+1/4,y+1/4;-x+251/6,-z+251/6,-y+124/3;x+3/4,-z+124/3,y+3/4;z+1/4,y+3/4,-x+251/6;z+3/4,-y+124/3,x+3/4;-z+124/3,y+1/4,x+1/4;-z+251/6,-y+251/6,-x+124/3;-x+251/6,-y+251/6,-z+124/3;x+3/4,y+1/4,-z+251/6;x+1/4,-y+124/3,z+1/4;-x+124/3,y+3/4,z+3/4;-z+251/6,-x+251/6,-y+124/3;-z+124/3,x+3/4,y+3/4;z+3/4,x+1/4,-y+251/6;z+1/4,-x+124/3,y+1/4;-y+251/6,-z+251/6,-x+124/3;y+1/4,-z+124/3,x+1/4;-y+124/3,z+3/4,x+3/4;y+3/4,z+1/4,-x+251/6;-y+505/12,-x+499/12,z+1/2;y+1/2,x+1/2,z;-y+499/12,x,-z+499/12;y,-x+505/12,-z+505/12;-x+505/12,-z+499/12,y+1/2;x,-z+505/12,-y+505/12;x+1/2,z+1/2,y;-x+499/12,z,-y+499/12;-z+505/12,-y+499/12,x+1/2;-z+499/12,y,-x+499/12;z,-y+505/12,-x+505/12;z+1/2,y+1/2,x +228 a,b,c F d -3 c [origin 2] x,y,z;-x+1/4,-y+3/4,z+1/2;-x+3/4,y+1/2,-z+1/4;x+1/2,-y+1/4,-z+3/4;z,x,y;z+1/2,-x+1/4,-y+3/4;-z+1/4,-x+3/4,y+1/2;-z+3/4,x+1/2,-y+1/4;y,z,x;-y+3/4,z+1/2,-x+1/4;y+1/2,-z+1/4,-x+3/4;-y+1/4,-z+3/4,x+1/2;y+3/4,x+1/4,-z;-y+1/2,-x+1/2,-z+1/2;y+1/4,-x,z+3/4;-y,x+3/4,z+1/4;x+3/4,z+1/4,-y;-x,z+3/4,y+1/4;-x+1/2,-z+1/2,-y+1/2;x+1/4,-z,y+3/4;z+3/4,y+1/4,-x;z+1/4,-y,x+3/4;-z,y+3/4,x+1/4;-z+1/2,-y+1/2,-x+1/2;-x,-y,-z;x+3/4,y+1/4,-z+1/2;x+1/4,-y+1/2,z+3/4;-x+1/2,y+3/4,z+1/4;-z,-x,-y;-z+1/2,x+3/4,y+1/4;z+3/4,x+1/4,-y+1/2;z+1/4,-x+1/2,y+3/4;-y,-z,-x;y+1/4,-z+1/2,x+3/4;-y+1/2,z+3/4,x+1/4;y+3/4,z+1/4,-x+1/2;-y+1/4,-x+3/4,z;y+1/2,x+1/2,z+1/2;-y+3/4,x,-z+1/4;y,-x+1/4,-z+3/4;-x+1/4,-z+3/4,y;x,-z+1/4,-y+3/4;x+1/2,z+1/2,y+1/2;-x+3/4,z,-y+1/4;-z+1/4,-y+3/4,x;-z+3/4,y,-x+1/4;z,-y+1/4,-x+3/4;z+1/2,y+1/2,x+1/2;x,y+1/2,z+1/2;-x+1/4,-y+1/4,z;-x+3/4,y,-z+3/4;x+1/2,-y+3/4,-z+1/4;z,x+1/2,y+1/2;z+1/2,-x+3/4,-y+1/4;-z+1/4,-x+1/4,y;-z+3/4,x,-y+3/4;y,z+1/2,x+1/2;-y+3/4,z,-x+3/4;y+1/2,-z+3/4,-x+1/4;-y+1/4,-z+1/4,x;y+3/4,x+3/4,-z+1/2;-y+1/2,-x,-z;y+1/4,-x+1/2,z+1/4;-y,x+1/4,z+3/4;x+3/4,z+3/4,-y+1/2;-x,z+1/4,y+3/4;-x+1/2,-z,-y;x+1/4,-z+1/2,y+1/4;z+3/4,y+3/4,-x+1/2;z+1/4,-y+1/2,x+1/4;-z,y+1/4,x+3/4;-z+1/2,-y,-x;-x,-y+1/2,-z+1/2;x+3/4,y+3/4,-z;x+1/4,-y,z+1/4;-x+1/2,y+1/4,z+3/4;-z,-x+1/2,-y+1/2;-z+1/2,x+1/4,y+3/4;z+3/4,x+3/4,-y;z+1/4,-x,y+1/4;-y,-z+1/2,-x+1/2;y+1/4,-z,x+1/4;-y+1/2,z+1/4,x+3/4;y+3/4,z+3/4,-x;-y+1/4,-x+1/4,z+1/2;y+1/2,x,z;-y+3/4,x+1/2,-z+3/4;y,-x+3/4,-z+1/4;-x+1/4,-z+1/4,y+1/2;x,-z+3/4,-y+1/4;x+1/2,z,y;-x+3/4,z+1/2,-y+3/4;-z+1/4,-y+1/4,x+1/2;-z+3/4,y+1/2,-x+3/4;z,-y+3/4,-x+1/4;z+1/2,y,x;x+1/2,y,z+1/2;-x+3/4,-y+3/4,z;-x+1/4,y+1/2,-z+3/4;x,-y+1/4,-z+1/4;z+1/2,x,y+1/2;z,-x+1/4,-y+1/4;-z+3/4,-x+3/4,y;-z+1/4,x+1/2,-y+3/4;y+1/2,z,x+1/2;-y+1/4,z+1/2,-x+3/4;y,-z+1/4,-x+1/4;-y+3/4,-z+3/4,x;y+1/4,x+1/4,-z+1/2;-y,-x+1/2,-z;y+3/4,-x,z+1/4;-y+1/2,x+3/4,z+3/4;x+1/4,z+1/4,-y+1/2;-x+1/2,z+3/4,y+3/4;-x,-z+1/2,-y;x+3/4,-z,y+1/4;z+1/4,y+1/4,-x+1/2;z+3/4,-y,x+1/4;-z+1/2,y+3/4,x+3/4;-z,-y+1/2,-x;-x+1/2,-y,-z+1/2;x+1/4,y+1/4,-z;x+3/4,-y+1/2,z+1/4;-x,y+3/4,z+3/4;-z+1/2,-x,-y+1/2;-z,x+3/4,y+3/4;z+1/4,x+1/4,-y;z+3/4,-x+1/2,y+1/4;-y+1/2,-z,-x+1/2;y+3/4,-z+1/2,x+1/4;-y,z+3/4,x+3/4;y+1/4,z+1/4,-x;-y+3/4,-x+3/4,z+1/2;y,x+1/2,z;-y+1/4,x,-z+3/4;y+1/2,-x+1/4,-z+1/4;-x+3/4,-z+3/4,y+1/2;x+1/2,-z+1/4,-y+1/4;x,z+1/2,y;-x+1/4,z,-y+3/4;-z+3/4,-y+3/4,x+1/2;-z+1/4,y,-x+3/4;z+1/2,-y+1/4,-x+1/4;z,y+1/2,x;x+1/2,y+1/2,z;-x+3/4,-y+1/4,z+1/2;-x+1/4,y,-z+1/4;x,-y+3/4,-z+3/4;z+1/2,x+1/2,y;z,-x+3/4,-y+3/4;-z+3/4,-x+1/4,y+1/2;-z+1/4,x,-y+1/4;y+1/2,z+1/2,x;-y+1/4,z,-x+1/4;y,-z+3/4,-x+3/4;-y+3/4,-z+1/4,x+1/2;y+1/4,x+3/4,-z;-y,-x,-z+1/2;y+3/4,-x+1/2,z+3/4;-y+1/2,x+1/4,z+1/4;x+1/4,z+3/4,-y;-x+1/2,z+1/4,y+1/4;-x,-z,-y+1/2;x+3/4,-z+1/2,y+3/4;z+1/4,y+3/4,-x;z+3/4,-y+1/2,x+3/4;-z+1/2,y+1/4,x+1/4;-z,-y,-x+1/2;-x+1/2,-y+1/2,-z;x+1/4,y+3/4,-z+1/2;x+3/4,-y,z+3/4;-x,y+1/4,z+1/4;-z+1/2,-x+1/2,-y;-z,x+1/4,y+1/4;z+1/4,x+3/4,-y+1/2;z+3/4,-x,y+3/4;-y+1/2,-z+1/2,-x;y+3/4,-z,x+3/4;-y,z+1/4,x+1/4;y+1/4,z+3/4,-x+1/2;-y+3/4,-x+1/4,z;y,x,z+1/2;-y+1/4,x+1/2,-z+1/4;y+1/2,-x+3/4,-z+3/4;-x+3/4,-z+1/4,y;x+1/2,-z+3/4,-y+3/4;x,z,y+1/2;-x+1/4,z+1/2,-y+1/4;-z+3/4,-y+1/4,x;-z+1/4,y+1/2,-x+1/4;z+1/2,-y+3/4,-x+3/4;z,y,x+1/2 +228 a,b,c;-3/8,-3/8,-3/8 F d -3 c :1 x,y,z;-x+126.91667,-y+127.41667,z+1/2;-x+127.41667,y+1/2,-z+126.91667;x+1/2,-y+126.91667,-z+127.41667;z,x,y;z+1/2,-x+126.91667,-y+127.41667;-z+126.91667,-x+127.41667,y+1/2;-z+127.41667,x+1/2,-y+126.91667;y,z,x;-y+127.41667,z+1/2,-x+126.91667;y+1/2,-z+126.91667,-x+127.41667;-y+126.91667,-z+127.41667,x+1/2;y+3/4,x+1/4,-z+380/3;-y+127.16667,-x+127.16667,-z+127.16667;y+1/4,-x+380/3,z+3/4;-y+380/3,x+3/4,z+1/4;x+3/4,z+1/4,-y+380/3;-x+380/3,z+3/4,y+1/4;-x+127.16667,-z+127.16667,-y+127.16667;x+1/4,-z+380/3,y+3/4;z+3/4,y+1/4,-x+380/3;z+1/4,-y+380/3,x+3/4;-z+380/3,y+3/4,x+1/4;-z+127.16667,-y+127.16667,-x+127.16667;-x+380/3,-y+380/3,-z+380/3;x+3/4,y+1/4,-z+127.16667;x+1/4,-y+127.16667,z+3/4;-x+127.16667,y+3/4,z+1/4;-z+380/3,-x+380/3,-y+380/3;-z+127.16667,x+3/4,y+1/4;z+3/4,x+1/4,-y+127.16667;z+1/4,-x+127.16667,y+3/4;-y+380/3,-z+380/3,-x+380/3;y+1/4,-z+127.16667,x+3/4;-y+127.16667,z+3/4,x+1/4;y+3/4,z+1/4,-x+127.16667;-y+126.91667,-x+127.41667,z;y+1/2,x+1/2,z+1/2;-y+127.41667,x,-z+126.91667;y,-x+126.91667,-z+127.41667;-x+126.91667,-z+127.41667,y;x,-z+126.91667,-y+127.41667;x+1/2,z+1/2,y+1/2;-x+127.41667,z,-y+126.91667;-z+126.91667,-y+127.41667,x;-z+127.41667,y,-x+126.91667;z,-y+126.91667,-x+127.41667;z+1/2,y+1/2,x+1/2;x,y+1/2,z+1/2;-x+126.91667,-y+126.91667,z;-x+127.41667,y,-z+127.41667;x+1/2,-y+127.41667,-z+126.91667;z,x+1/2,y+1/2;z+1/2,-x+127.41667,-y+126.91667;-z+126.91667,-x+126.91667,y;-z+127.41667,x,-y+127.41667;y,z+1/2,x+1/2;-y+127.41667,z,-x+127.41667;y+1/2,-z+127.41667,-x+126.91667;-y+126.91667,-z+126.91667,x;y+3/4,x+3/4,-z+127.16667;-y+127.16667,-x+380/3,-z+380/3;y+1/4,-x+127.16667,z+1/4;-y+380/3,x+1/4,z+3/4;x+3/4,z+3/4,-y+127.16667;-x+380/3,z+1/4,y+3/4;-x+127.16667,-z+380/3,-y+380/3;x+1/4,-z+127.16667,y+1/4;z+3/4,y+3/4,-x+127.16667;z+1/4,-y+127.16667,x+1/4;-z+380/3,y+1/4,x+3/4;-z+127.16667,-y+380/3,-x+380/3;-x+380/3,-y+127.16667,-z+127.16667;x+3/4,y+3/4,-z+380/3;x+1/4,-y+380/3,z+1/4;-x+127.16667,y+1/4,z+3/4;-z+380/3,-x+127.16667,-y+127.16667;-z+127.16667,x+1/4,y+3/4;z+3/4,x+3/4,-y+380/3;z+1/4,-x+380/3,y+1/4;-y+380/3,-z+127.16667,-x+127.16667;y+1/4,-z+380/3,x+1/4;-y+127.16667,z+1/4,x+3/4;y+3/4,z+3/4,-x+380/3;-y+126.91667,-x+126.91667,z+1/2;y+1/2,x,z;-y+127.41667,x+1/2,-z+127.41667;y,-x+127.41667,-z+126.91667;-x+126.91667,-z+126.91667,y+1/2;x,-z+127.41667,-y+126.91667;x+1/2,z,y;-x+127.41667,z+1/2,-y+127.41667;-z+126.91667,-y+126.91667,x+1/2;-z+127.41667,y+1/2,-x+127.41667;z,-y+127.41667,-x+126.91667;z+1/2,y,x;x+1/2,y,z+1/2;-x+127.41667,-y+127.41667,z;-x+126.91667,y+1/2,-z+127.41667;x,-y+126.91667,-z+126.91667;z+1/2,x,y+1/2;z,-x+126.91667,-y+126.91667;-z+127.41667,-x+127.41667,y;-z+126.91667,x+1/2,-y+127.41667;y+1/2,z,x+1/2;-y+126.91667,z+1/2,-x+127.41667;y,-z+126.91667,-x+126.91667;-y+127.41667,-z+127.41667,x;y+1/4,x+1/4,-z+127.16667;-y+380/3,-x+127.16667,-z+380/3;y+3/4,-x+380/3,z+1/4;-y+127.16667,x+3/4,z+3/4;x+1/4,z+1/4,-y+127.16667;-x+127.16667,z+3/4,y+3/4;-x+380/3,-z+127.16667,-y+380/3;x+3/4,-z+380/3,y+1/4;z+1/4,y+1/4,-x+127.16667;z+3/4,-y+380/3,x+1/4;-z+127.16667,y+3/4,x+3/4;-z+380/3,-y+127.16667,-x+380/3;-x+127.16667,-y+380/3,-z+127.16667;x+1/4,y+1/4,-z+380/3;x+3/4,-y+127.16667,z+1/4;-x+380/3,y+3/4,z+3/4;-z+127.16667,-x+380/3,-y+127.16667;-z+380/3,x+3/4,y+3/4;z+1/4,x+1/4,-y+380/3;z+3/4,-x+127.16667,y+1/4;-y+127.16667,-z+380/3,-x+127.16667;y+3/4,-z+127.16667,x+1/4;-y+380/3,z+3/4,x+3/4;y+1/4,z+1/4,-x+380/3;-y+127.41667,-x+127.41667,z+1/2;y,x+1/2,z;-y+126.91667,x,-z+127.41667;y+1/2,-x+126.91667,-z+126.91667;-x+127.41667,-z+127.41667,y+1/2;x+1/2,-z+126.91667,-y+126.91667;x,z+1/2,y;-x+126.91667,z,-y+127.41667;-z+127.41667,-y+127.41667,x+1/2;-z+126.91667,y,-x+127.41667;z+1/2,-y+126.91667,-x+126.91667;z,y+1/2,x;x+1/2,y+1/2,z;-x+127.41667,-y+126.91667,z+1/2;-x+126.91667,y,-z+126.91667;x,-y+127.41667,-z+127.41667;z+1/2,x+1/2,y;z,-x+127.41667,-y+127.41667;-z+127.41667,-x+126.91667,y+1/2;-z+126.91667,x,-y+126.91667;y+1/2,z+1/2,x;-y+126.91667,z,-x+126.91667;y,-z+127.41667,-x+127.41667;-y+127.41667,-z+126.91667,x+1/2;y+1/4,x+3/4,-z+380/3;-y+380/3,-x+380/3,-z+127.16667;y+3/4,-x+127.16667,z+3/4;-y+127.16667,x+1/4,z+1/4;x+1/4,z+3/4,-y+380/3;-x+127.16667,z+1/4,y+1/4;-x+380/3,-z+380/3,-y+127.16667;x+3/4,-z+127.16667,y+3/4;z+1/4,y+3/4,-x+380/3;z+3/4,-y+127.16667,x+3/4;-z+127.16667,y+1/4,x+1/4;-z+380/3,-y+380/3,-x+127.16667;-x+127.16667,-y+127.16667,-z+380/3;x+1/4,y+3/4,-z+127.16667;x+3/4,-y+380/3,z+3/4;-x+380/3,y+1/4,z+1/4;-z+127.16667,-x+127.16667,-y+380/3;-z+380/3,x+1/4,y+1/4;z+1/4,x+3/4,-y+127.16667;z+3/4,-x+380/3,y+3/4;-y+127.16667,-z+127.16667,-x+380/3;y+3/4,-z+380/3,x+3/4;-y+380/3,z+1/4,x+1/4;y+1/4,z+3/4,-x+127.16667;-y+127.41667,-x+126.91667,z;y,x,z+1/2;-y+126.91667,x+1/2,-z+126.91667;y+1/2,-x+127.41667,-z+127.41667;-x+127.41667,-z+126.91667,y;x+1/2,-z+127.41667,-y+127.41667;x,z,y+1/2;-x+126.91667,z+1/2,-y+126.91667;-z+127.41667,-y+126.91667,x;-z+126.91667,y+1/2,-x+126.91667;z+1/2,-y+127.41667,-x+127.41667;z,y,x+1/2 +229 a,b,c I m -3 m x,y,z;-x,-y,z;-x,y,-z;x,-y,-z;z,x,y;z,-x,-y;-z,-x,y;-z,x,-y;y,z,x;-y,z,-x;y,-z,-x;-y,-z,x;y,x,-z;-y,-x,-z;y,-x,z;-y,x,z;x,z,-y;-x,z,y;-x,-z,-y;x,-z,y;z,y,-x;z,-y,x;-z,y,x;-z,-y,-x;-x,-y,-z;x,y,-z;x,-y,z;-x,y,z;-z,-x,-y;-z,x,y;z,x,-y;z,-x,y;-y,-z,-x;y,-z,x;-y,z,x;y,z,-x;-y,-x,z;y,x,z;-y,x,-z;y,-x,-z;-x,-z,y;x,-z,-y;x,z,y;-x,z,-y;-z,-y,x;-z,y,-x;z,-y,-x;z,y,x;x+1/2,y+1/2,z+1/2;-x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,-z+1/2;z+1/2,x+1/2,y+1/2;z+1/2,-x+1/2,-y+1/2;-z+1/2,-x+1/2,y+1/2;-z+1/2,x+1/2,-y+1/2;y+1/2,z+1/2,x+1/2;-y+1/2,z+1/2,-x+1/2;y+1/2,-z+1/2,-x+1/2;-y+1/2,-z+1/2,x+1/2;y+1/2,x+1/2,-z+1/2;-y+1/2,-x+1/2,-z+1/2;y+1/2,-x+1/2,z+1/2;-y+1/2,x+1/2,z+1/2;x+1/2,z+1/2,-y+1/2;-x+1/2,z+1/2,y+1/2;-x+1/2,-z+1/2,-y+1/2;x+1/2,-z+1/2,y+1/2;z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,x+1/2;-z+1/2,-y+1/2,-x+1/2;-x+1/2,-y+1/2,-z+1/2;x+1/2,y+1/2,-z+1/2;x+1/2,-y+1/2,z+1/2;-x+1/2,y+1/2,z+1/2;-z+1/2,-x+1/2,-y+1/2;-z+1/2,x+1/2,y+1/2;z+1/2,x+1/2,-y+1/2;z+1/2,-x+1/2,y+1/2;-y+1/2,-z+1/2,-x+1/2;y+1/2,-z+1/2,x+1/2;-y+1/2,z+1/2,x+1/2;y+1/2,z+1/2,-x+1/2;-y+1/2,-x+1/2,z+1/2;y+1/2,x+1/2,z+1/2;-y+1/2,x+1/2,-z+1/2;y+1/2,-x+1/2,-z+1/2;-x+1/2,-z+1/2,y+1/2;x+1/2,-z+1/2,-y+1/2;x+1/2,z+1/2,y+1/2;-x+1/2,z+1/2,-y+1/2;-z+1/2,-y+1/2,x+1/2;-z+1/2,y+1/2,-x+1/2;z+1/2,-y+1/2,-x+1/2;z+1/2,y+1/2,x+1/2 +230 a,b,c I a -3 d x,y,z;-x+1/2,-y,z+1/2;-x,y+1/2,-z+1/2;x+1/2,-y+1/2,-z;z,x,y;z+1/2,-x+1/2,-y;-z+1/2,-x,y+1/2;-z,x+1/2,-y+1/2;y,z,x;-y,z+1/2,-x+1/2;y+1/2,-z+1/2,-x;-y+1/2,-z,x+1/2;y+3/4,x+1/4,-z+1/4;-y+3/4,-x+3/4,-z+3/4;y+1/4,-x+1/4,z+3/4;-y+1/4,x+3/4,z+1/4;x+3/4,z+1/4,-y+1/4;-x+1/4,z+3/4,y+1/4;-x+3/4,-z+3/4,-y+3/4;x+1/4,-z+1/4,y+3/4;z+3/4,y+1/4,-x+1/4;z+1/4,-y+1/4,x+3/4;-z+1/4,y+3/4,x+1/4;-z+3/4,-y+3/4,-x+3/4;-x,-y,-z;x+1/2,y,-z+1/2;x,-y+1/2,z+1/2;-x+1/2,y+1/2,z;-z,-x,-y;-z+1/2,x+1/2,y;z+1/2,x,-y+1/2;z,-x+1/2,y+1/2;-y,-z,-x;y,-z+1/2,x+1/2;-y+1/2,z+1/2,x;y+1/2,z,-x+1/2;-y+1/4,-x+3/4,z+3/4;y+1/4,x+1/4,z+1/4;-y+3/4,x+3/4,-z+1/4;y+3/4,-x+1/4,-z+3/4;-x+1/4,-z+3/4,y+3/4;x+3/4,-z+1/4,-y+3/4;x+1/4,z+1/4,y+1/4;-x+3/4,z+3/4,-y+1/4;-z+1/4,-y+3/4,x+3/4;-z+3/4,y+3/4,-x+1/4;z+3/4,-y+1/4,-x+3/4;z+1/4,y+1/4,x+1/4;x+1/2,y+1/2,z+1/2;-x,-y+1/2,z;-x+1/2,y,-z;x,-y,-z+1/2;z+1/2,x+1/2,y+1/2;z,-x,-y+1/2;-z,-x+1/2,y;-z+1/2,x,-y;y+1/2,z+1/2,x+1/2;-y+1/2,z,-x;y,-z,-x+1/2;-y,-z+1/2,x;y+1/4,x+3/4,-z+3/4;-y+1/4,-x+1/4,-z+1/4;y+3/4,-x+3/4,z+1/4;-y+3/4,x+1/4,z+3/4;x+1/4,z+3/4,-y+3/4;-x+3/4,z+1/4,y+3/4;-x+1/4,-z+1/4,-y+1/4;x+3/4,-z+3/4,y+1/4;z+1/4,y+3/4,-x+3/4;z+3/4,-y+3/4,x+1/4;-z+3/4,y+1/4,x+3/4;-z+1/4,-y+1/4,-x+1/4;-x+1/2,-y+1/2,-z+1/2;x,y+1/2,-z;x+1/2,-y,z;-x,y,z+1/2;-z+1/2,-x+1/2,-y+1/2;-z,x,y+1/2;z,x+1/2,-y;z+1/2,-x,y;-y+1/2,-z+1/2,-x+1/2;y+1/2,-z,x;-y,z,x+1/2;y,z+1/2,-x;-y+3/4,-x+1/4,z+1/4;y+3/4,x+3/4,z+3/4;-y+1/4,x+1/4,-z+3/4;y+1/4,-x+3/4,-z+1/4;-x+3/4,-z+1/4,y+1/4;x+1/4,-z+3/4,-y+1/4;x+3/4,z+3/4,y+3/4;-x+1/4,z+1/4,-y+3/4;-z+3/4,-y+1/4,x+1/4;-z+1/4,y+1/4,-x+3/4;z+1/4,-y+3/4,-x+1/4;z+3/4,y+3/4,x+3/4 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/AnnotationData.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/AnnotationData.js new file mode 100755 index 000000000000..f14d51f93949 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/AnnotationData.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "AnnotationData"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/AppletFrame.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/AppletFrame.js new file mode 100755 index 000000000000..59ffb4bf1e0c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/AppletFrame.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "AppletFrame"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/ExportInterface.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/ExportInterface.js new file mode 100755 index 000000000000..f6310ec5d97c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/ExportInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "ExportInterface", JSV.api.JSVExporter); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVAppInterface.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVAppInterface.js new file mode 100755 index 000000000000..c4cf4bc16dfc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVAppInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVAppInterface", JSV.api.JSVAppletInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVAppletInterface.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVAppletInterface.js new file mode 100755 index 000000000000..6b2c71fb9bbf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVAppletInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVAppletInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVExporter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVExporter.js new file mode 100755 index 000000000000..2aadca4159ae --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVExporter.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVExporter"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVFileDropper.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVFileDropper.js new file mode 100755 index 000000000000..eef2d7f52d26 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVFileDropper.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVFileDropper"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVFileHelper.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVFileHelper.js new file mode 100755 index 000000000000..a5ff1d7f803d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVFileHelper.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVFileHelper"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVMainPanel.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVMainPanel.js new file mode 100755 index 000000000000..cd682c02f488 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVMainPanel.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVMainPanel", JSV.api.JSVViewPanel); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPanel.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPanel.js new file mode 100755 index 000000000000..e5c7ad3e2359 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPanel.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVPanel", JSV.api.JSVViewPanel); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPdfWriter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPdfWriter.js new file mode 100755 index 000000000000..fd6bf4f599ad --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPdfWriter.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVPdfWriter"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPrintDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPrintDialog.js new file mode 100755 index 000000000000..1051c5f69eb7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVPrintDialog.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVPrintDialog"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTree.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTree.js new file mode 100755 index 000000000000..31bbea5aaef0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTree.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVTree"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTreeNode.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTreeNode.js new file mode 100755 index 000000000000..4eea1de6eabe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTreeNode.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVTreeNode"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTreePath.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTreePath.js new file mode 100755 index 000000000000..b06bce740a7b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVTreePath.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVTreePath"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVViewPanel.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVViewPanel.js new file mode 100755 index 000000000000..b59efb367c50 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVViewPanel.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVViewPanel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVZipInterface.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVZipInterface.js new file mode 100755 index 000000000000..5c37de4c615f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVZipInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVZipInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVZipReader.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVZipReader.js new file mode 100755 index 000000000000..cbea8c5b5fd2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/JSVZipReader.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "JSVZipReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/PanelListener.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/PanelListener.js new file mode 100755 index 000000000000..72add819abc4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/PanelListener.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "PanelListener"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/PlatformDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/PlatformDialog.js new file mode 100755 index 000000000000..4e15fd8aef11 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/PlatformDialog.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "PlatformDialog"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/ScriptInterface.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/ScriptInterface.js new file mode 100755 index 000000000000..52ea0906f14a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/ScriptInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "ScriptInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/SourceReader.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/SourceReader.js new file mode 100755 index 000000000000..68d4c468752d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/SourceReader.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "SourceReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/VisibleInterface.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/VisibleInterface.js new file mode 100755 index 000000000000..182bbf621a52 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/VisibleInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api"); +Clazz.declareInterface(JSV.api, "VisibleInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/js/JSVAppletObject.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/js/JSVAppletObject.js new file mode 100755 index 000000000000..7680ab811ecb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/js/JSVAppletObject.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api.js"); +Clazz.declareInterface(JSV.api.js, "JSVAppletObject", javajs.api.js.JSAppletObject); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/api/js/JSVToJSmolInterface.js b/config/plugins/visualizations/jmol/static/j2s/JSV/api/js/JSVToJSmolInterface.js new file mode 100755 index 000000000000..0b977f2ae952 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/api/js/JSVToJSmolInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.api.js"); +Clazz.declareInterface(JSV.api.js, "JSVToJSmolInterface", javajs.api.js.J2SObjectInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/app/GenericMouse.js b/config/plugins/visualizations/jmol/static/j2s/JSV/app/GenericMouse.js new file mode 100755 index 000000000000..7008a01a9f45 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/app/GenericMouse.js @@ -0,0 +1,180 @@ +Clazz.declarePackage("JSV.app"); +Clazz.load(["J.api.GenericMouseInterface"], "JSV.app.GenericMouse", ["JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pd = null; +this.jsvp = null; +this.xWhenPressed = 0; +this.yWhenPressed = 0; +this.modifiersWhenPressed10 = 0; +this.isMouseDown = false; +this.disposed = false; +Clazz.instantialize(this, arguments);}, JSV.app, "GenericMouse", null, J.api.GenericMouseInterface); +Clazz.makeConstructor(c$, +function(jsvp){ +this.jsvp = jsvp; +this.pd = jsvp.getPanelData(); +}, "JSV.api.JSVPanel"); +Clazz.overrideMethod(c$, "clear", +function(){ +}); +Clazz.overrideMethod(c$, "processEvent", +function(id, x, y, modifiers, time){ +if (this.pd == null) { +if (!this.disposed && id == 501 && (modifiers & 4) != 0) this.jsvp.showMenu(x, y); +return true; +}if (id != 507) modifiers = JSV.app.GenericMouse.applyLeftMouse(modifiers); +switch (id) { +case 507: +this.wheeled(time, x, modifiers | 32); +break; +case 501: +this.xWhenPressed = x; +this.yWhenPressed = y; +this.modifiersWhenPressed10 = modifiers; +this.pressed(time, x, y, modifiers, false); +break; +case 506: +this.dragged(time, x, y, modifiers); +break; +case 504: +this.entered(time, x, y); +break; +case 505: +this.exited(time, x, y); +break; +case 503: +this.moved(time, x, y, modifiers); +break; +case 502: +this.released(time, x, y, modifiers); +if (x == this.xWhenPressed && y == this.yWhenPressed && modifiers == this.modifiersWhenPressed10) { +this.clicked(time, x, y, modifiers, 1); +}break; +default: +return false; +} +return true; +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "mouseEntered", +function(e){ +this.entered(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseExited", +function(e){ +this.exited(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseMoved", +function(e){ +this.moved(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mousePressed", +function(e){ +this.pressed(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.isPopupTrigger()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseDragged", +function(e){ +var modifiers = e.getModifiers(); +if ((modifiers & 28) == 0) modifiers |= 16; +this.dragged(e.getWhen(), e.getX(), e.getY(), modifiers); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseReleased", +function(e){ +this.released(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseClicked", +function(e){ +this.clicked(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.getClickCount()); +}, "java.awt.event.MouseEvent"); +Clazz.defineMethod(c$, "mouseWheelMoved", +function(e){ +e.consume(); +this.wheeled(e.getWhen(), e.getWheelRotation(), e.getModifiers() | 32); +}, "java.awt.event.MouseWheelEvent"); +Clazz.defineMethod(c$, "keyTyped", +function(ke){ +if (this.pd == null) return; +var ch = ke.getKeyChar(); +var modifiers = ke.getModifiers(); +if (JU.Logger.debuggingHigh || true) JU.Logger.info("MouseManager keyTyped: " + ch + " " + (0 + ch.charCodeAt(0)) + " " + modifiers); +if (this.pd.keyTyped(ch.charCodeAt(0), modifiers)) ke.consume(); +}, "java.awt.event.KeyEvent"); +Clazz.defineMethod(c$, "keyPressed", +function(ke){ +if (this.pd != null && this.pd.keyPressed(ke.getKeyCode(), ke.getModifiers())) ke.consume(); +}, "java.awt.event.KeyEvent"); +Clazz.defineMethod(c$, "keyReleased", +function(ke){ +if (this.pd != null) this.pd.keyReleased(ke.getKeyCode()); +}, "java.awt.event.KeyEvent"); +Clazz.overrideMethod(c$, "processKeyEvent", +function(event){ +var e = event; +switch (e.getID()) { +case 401: +this.keyPressed(e); +break; +case 402: +this.keyReleased(e); +break; +case 400: +this.keyTyped(e); +break; +} +}, "~O"); +Clazz.defineMethod(c$, "entered", +function(time, x, y){ +if (this.pd != null) this.pd.mouseEnterExit(time, x, y, false); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "exited", +function(time, x, y){ +if (this.pd != null) this.pd.mouseEnterExit(time, x, y, true); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "clicked", +function(time, x, y, modifiers, clickCount){ +if (this.pd != null) this.pd.mouseAction(2, time, x, y, 1, modifiers); +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "moved", +function(time, x, y, modifiers){ +if (this.pd == null) return; +if (this.isMouseDown) this.pd.mouseAction(1, time, x, y, 0, JSV.app.GenericMouse.applyLeftMouse(modifiers)); + else this.pd.mouseAction(0, time, x, y, 0, modifiers & -29); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "wheeled", +function(time, rotation, modifiers){ +if (this.pd != null) this.pd.mouseAction(3, time, 0, rotation, 0, modifiers); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "pressed", +function(time, x, y, modifiers, isPopupTrigger){ +if (this.pd == null) { +if (!this.disposed) this.jsvp.showMenu(x, y); +return; +}this.isMouseDown = true; +this.pd.mouseAction(4, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "released", +function(time, x, y, modifiers){ +if (this.pd == null) return; +this.isMouseDown = false; +this.pd.mouseAction(5, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "dragged", +function(time, x, y, modifiers){ +if (this.pd == null) return; +if ((modifiers & 20) == 20) modifiers = modifiers & -5 | 2; +this.pd.mouseAction(1, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +c$.applyLeftMouse = Clazz.defineMethod(c$, "applyLeftMouse", +function(modifiers){ +return ((modifiers & 28) == 0) ? (modifiers | 16) : modifiers; +}, "~N"); +Clazz.overrideMethod(c$, "processTwoPointGesture", +function(touches){ +}, "~A"); +Clazz.overrideMethod(c$, "dispose", +function(){ +this.pd = null; +this.jsvp = null; +this.disposed = true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/app/JSVApp.js b/config/plugins/visualizations/jmol/static/j2s/JSV/app/JSVApp.js new file mode 100755 index 000000000000..898166e21f1a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/app/JSVApp.js @@ -0,0 +1,375 @@ +Clazz.declarePackage("JSV.app"); +Clazz.load(["JSV.api.JSVAppInterface", "$.PanelListener", "$.ScriptInterface"], "JSV.app.JSVApp", ["JU.Lst", "$.PT", "JSV.common.Coordinate", "$.JSVFileManager", "$.JSVersion", "$.JSViewer", "$.ScriptToken", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.appletFrame = null; +this.isNewWindow = false; +this.appletReadyCallbackFunctionName = null; +this.coordCallbackFunctionName = null; +this.loadFileCallbackFunctionName = null; +this.peakCallbackFunctionName = null; +this.syncCallbackFunctionName = null; +this.vwr = null; +this.prevPanel = null; +Clazz.instantialize(this, arguments);}, JSV.app, "JSVApp", null, [JSV.api.PanelListener, JSV.api.JSVAppInterface, JSV.api.ScriptInterface]); +Clazz.makeConstructor(c$, +function(appletFrame, isJS){ +this.appletFrame = appletFrame; +this.initViewer(isJS); +this.initParams(appletFrame.getParameter("script")); +}, "JSV.api.AppletFrame,~B"); +Clazz.defineMethod(c$, "initViewer", +function(isJS){ +this.vwr = new JSV.common.JSViewer(this, true, isJS); +this.appletFrame.setDropTargetListener(this.isSigned(), this.vwr); +var path = this.appletFrame.getDocumentBase(); +JSV.common.JSVFileManager.setDocumentBase(this.vwr, path); +}, "~B"); +Clazz.overrideMethod(c$, "isPro", +function(){ +return this.isSigned(); +}); +Clazz.overrideMethod(c$, "isSigned", +function(){ +{ +return true; +}}); +Clazz.defineMethod(c$, "getAppletFrame", +function(){ +return this.appletFrame; +}); +Clazz.defineMethod(c$, "dispose", +function(){ +try { +this.vwr.dispose(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "getPropertyAsJavaObject", +function(key){ +return this.vwr.getPropertyAsJavaObject(key); +}, "~S"); +Clazz.overrideMethod(c$, "getPropertyAsJSON", +function(key){ +return JU.PT.toJSON(null, this.getPropertyAsJavaObject(key)); +}, "~S"); +Clazz.overrideMethod(c$, "getCoordinate", +function(){ +return this.vwr.getCoordinate(); +}); +Clazz.overrideMethod(c$, "loadInline", +function(data){ +this.siOpenDataOrFile(data, "[inline]", null, null, -1, -1, true, null, null); +this.appletFrame.validateContent(3); +}, "~S"); +Clazz.overrideMethod(c$, "exportSpectrum", +function(type, n){ +return this.vwr.$export(type, n); +}, "~S,~N"); +Clazz.overrideMethod(c$, "setFilePath", +function(tmpFilePath){ +this.runScript("load " + JU.PT.esc(tmpFilePath)); +}, "~S"); +Clazz.overrideMethod(c$, "setSpectrumNumber", +function(n){ +this.runScript(JSV.common.ScriptToken.SPECTRUMNUMBER + " " + n); +}, "~N"); +Clazz.overrideMethod(c$, "reversePlot", +function(){ +this.toggle(JSV.common.ScriptToken.REVERSEPLOT); +}); +Clazz.overrideMethod(c$, "toggleGrid", +function(){ +this.toggle(JSV.common.ScriptToken.GRIDON); +}); +Clazz.overrideMethod(c$, "toggleCoordinate", +function(){ +this.toggle(JSV.common.ScriptToken.COORDINATESON); +}); +Clazz.overrideMethod(c$, "togglePointsOnly", +function(){ +this.toggle(JSV.common.ScriptToken.POINTSONLY); +}); +Clazz.overrideMethod(c$, "toggleIntegration", +function(){ +this.toggle(JSV.common.ScriptToken.INTEGRATE); +}); +Clazz.defineMethod(c$, "toggle", +function(st){ +if (this.vwr.selectedPanel != null) this.runScript(st + " TOGGLE"); +}, "JSV.common.ScriptToken"); +Clazz.overrideMethod(c$, "addHighlight", +function(x1, x2, r, g, b, a){ +this.runScript("HIGHLIGHT " + x1 + " " + x2 + " " + r + " " + g + " " + b + " " + a); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "removeHighlight", +function(x1, x2){ +this.runScript("HIGHLIGHT " + x1 + " " + x2 + " OFF"); +}, "~N,~N"); +Clazz.overrideMethod(c$, "removeAllHighlights", +function(){ +this.runScript("HIGHLIGHT OFF"); +}); +Clazz.overrideMethod(c$, "syncScript", +function(peakScript){ +this.vwr.syncScript(peakScript); +}, "~S"); +Clazz.overrideMethod(c$, "writeStatus", +function(msg){ +JU.Logger.info(msg); +}, "~S"); +Clazz.defineMethod(c$, "initParams", +function(params){ +this.vwr.parseInitScript(params); +this.newAppletPanel(); +this.vwr.setPopupMenu(this.vwr.allowMenu, this.vwr.parameters.getBoolean(JSV.common.ScriptToken.ENABLEZOOM)); +if (this.vwr.allowMenu) { +this.vwr.closeSource(null); +}this.runScriptNow(params); +}, "~S"); +Clazz.defineMethod(c$, "newAppletPanel", +function(){ +JU.Logger.info("newAppletPanel"); +this.appletFrame.createMainPanel(this.vwr); +}); +Clazz.overrideMethod(c$, "repaint", +function(){ +var applet = (this.vwr == null ? null : this.vwr.html5Applet); +if (JSV.common.JSViewer.jmolObject == null) { +this.appletFrame.repaint(); +} else if (applet != null) { +JSV.common.JSViewer.jmolObject.repaint(applet, true); +}}); +Clazz.defineMethod(c$, "updateJS", +function(width, height){ +}, "~N,~N"); +Clazz.overrideMethod(c$, "runScriptNow", +function(params){ +return this.vwr.runScriptNow(params); +}, "~S"); +Clazz.defineMethod(c$, "checkCallbacks", +function(){ +if (this.coordCallbackFunctionName == null && this.peakCallbackFunctionName == null) return; +var coord = new JSV.common.Coordinate(); +var actualCoord = (this.peakCallbackFunctionName == null ? null : new JSV.common.Coordinate()); +if (!this.vwr.pd().getPickedCoordinates(coord, actualCoord)) return; +var iSpec = this.vwr.mainPanel.getCurrentPanelIndex(); +if (actualCoord == null) this.appletFrame.callToJavaScript(this.coordCallbackFunctionName, Clazz.newArray(-1, [Double.$valueOf(coord.getXVal()), Double.$valueOf(coord.getYVal()), Integer.$valueOf(iSpec + 1)])); + else this.appletFrame.callToJavaScript(this.peakCallbackFunctionName, Clazz.newArray(-1, [Double.$valueOf(coord.getXVal()), Double.$valueOf(coord.getYVal()), Double.$valueOf(actualCoord.getXVal()), Double.$valueOf(actualCoord.getYVal()), Integer.$valueOf(iSpec + 1)])); +}); +Clazz.defineMethod(c$, "doAdvanced", +function(filePath){ +}, "~S"); +Clazz.overrideMethod(c$, "panelEvent", +function(eventObj){ +if (Clazz.instanceOf(eventObj,"JSV.common.PeakPickEvent")) { +this.vwr.processPeakPickEvent(eventObj, false); +} else if (Clazz.instanceOf(eventObj,"JSV.common.ZoomEvent")) { +} else if (Clazz.instanceOf(eventObj,"JSV.common.SubSpecChangeEvent")) { +}}, "~O"); +Clazz.overrideMethod(c$, "getSolnColour", +function(){ +return this.vwr.getSolutionColorStr(true); +}); +Clazz.defineMethod(c$, "updateJSView", +function(msg){ +var applet = this.vwr.html5Applet; +var panel = (applet == null ? null : this.vwr.selectedPanel); +{ +applet && applet._viewSet != null && applet._updateView(panel, msg); +}applet._updateView(panel, msg); +}, "~S"); +Clazz.overrideMethod(c$, "syncToJmol", +function(msg){ +this.updateJSView(msg); +if (this.syncCallbackFunctionName == null) return; +JU.Logger.info("JSVApp.syncToJmol JSV>Jmol " + msg); +this.appletFrame.callToJavaScript(this.syncCallbackFunctionName, Clazz.newArray(-1, [this.vwr.fullName, msg])); +}, "~S"); +Clazz.overrideMethod(c$, "setVisible", +function(b){ +this.appletFrame.setPanelVisible(b); +}, "~B"); +Clazz.overrideMethod(c$, "setCursor", +function(id){ +this.vwr.apiPlatform.setCursor(id, this.appletFrame); +}, "~N"); +Clazz.overrideMethod(c$, "runScript", +function(script){ +this.vwr.runScript(script); +}, "~S"); +Clazz.overrideMethod(c$, "getScriptQueue", +function(){ +return this.vwr.scriptQueue; +}); +Clazz.overrideMethod(c$, "siSetCurrentSource", +function(source){ +this.vwr.currentSource = source; +}, "JSV.source.JDXSource"); +Clazz.overrideMethod(c$, "siSendPanelChange", +function(){ +if (this.vwr.selectedPanel === this.prevPanel) return; +this.prevPanel = this.vwr.selectedPanel; +this.vwr.sendPanelChange(); +}); +Clazz.overrideMethod(c$, "siNewWindow", +function(isSelected, fromFrame){ +this.isNewWindow = isSelected; +if (fromFrame) { +if (this.vwr.jsvpPopupMenu != null) this.vwr.jsvpPopupMenu.setSelected("Window", false); +} else { +this.appletFrame.newWindow(isSelected); +}}, "~B,~B"); +Clazz.overrideMethod(c$, "siValidateAndRepaint", +function(isAll){ +var pd = this.vwr.pd(); +if (pd != null) pd.setTaintedAll(); +this.appletFrame.validate(); +this.repaint(); +}, "~B"); +Clazz.overrideMethod(c$, "siSyncLoad", +function(filePath){ +this.newAppletPanel(); +JU.Logger.info("JSVP syncLoad reading " + filePath); +this.siOpenDataOrFile(null, null, null, filePath, -1, -1, false, null, null); +this.appletFrame.validateContent(3); +}, "~S"); +Clazz.overrideMethod(c$, "siOpenDataOrFile", +function(data, name, specs, url, firstSpec, lastSpec, isAppend, script, id){ +switch (this.vwr.openDataOrFile(data, name, specs, url, firstSpec, lastSpec, isAppend, id)) { +case 0: +if (script != null) this.runScript(script); +break; +case -1: +return; +default: +this.siSetSelectedPanel(null); +return; +} +JU.Logger.info(this.appletFrame.getAppletInfo() + " File " + this.vwr.currentSource.getFilePath() + " Loaded Successfully"); +}, "~O,~S,JU.Lst,~S,~N,~N,~B,~S,~S"); +Clazz.overrideMethod(c$, "siProcessCommand", +function(scriptItem){ +this.vwr.runScriptNow(scriptItem); +}, "~S"); +Clazz.overrideMethod(c$, "siSetSelectedPanel", +function(jsvp){ +this.vwr.mainPanel.setSelectedPanel(this.vwr, jsvp, this.vwr.panelNodes); +this.vwr.selectedPanel = jsvp; +this.vwr.spectraTree.setSelectedPanel(this, jsvp); +if (jsvp == null) { +this.vwr.selectedPanel = jsvp = this.appletFrame.getJSVPanel(this.vwr, null); +this.vwr.mainPanel.setSelectedPanel(this.vwr, jsvp, null); +}this.appletFrame.validate(); +if (jsvp != null) { +jsvp.setEnabled(true); +jsvp.setFocusable(true); +}}, "JSV.api.JSVPanel"); +Clazz.overrideMethod(c$, "siExecSetCallback", +function(st, value){ +switch (st) { +case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME: +this.appletReadyCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +this.loadFileCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +this.peakCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +this.syncCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +this.coordCallbackFunctionName = value; +break; +} +}, "JSV.common.ScriptToken,~S"); +Clazz.overrideMethod(c$, "siLoaded", +function(value){ +if (this.loadFileCallbackFunctionName != null) this.appletFrame.callToJavaScript(this.loadFileCallbackFunctionName, Clazz.newArray(-1, [this.vwr.appletName, value])); +this.updateJSView(null); +return null; +}, "~S"); +Clazz.overrideMethod(c$, "siExecHidden", +function(b){ +}, "~B"); +Clazz.overrideMethod(c$, "siExecScriptComplete", +function(msg, isOK){ +if (!isOK) this.vwr.showMessage(msg); +this.siValidateAndRepaint(false); +}, "~S,~B"); +Clazz.overrideMethod(c$, "siUpdateBoolean", +function(st, TF){ +}, "JSV.common.ScriptToken,~B"); +Clazz.overrideMethod(c$, "siCheckCallbacks", +function(title){ +this.checkCallbacks(); +}, "~S"); +Clazz.overrideMethod(c$, "siNodeSet", +function(panelNode){ +this.appletFrame.validateContent(2); +this.siValidateAndRepaint(false); +}, "JSV.common.PanelNode"); +Clazz.overrideMethod(c$, "siSourceClosed", +function(source){ +}, "JSV.source.JDXSource"); +Clazz.overrideMethod(c$, "siGetNewJSVPanel", +function(spec){ +if (spec == null) { +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +return null; +}var specs = new JU.Lst(); +specs.addLast(spec); +var jsvp = this.appletFrame.getJSVPanel(this.vwr, specs); +jsvp.getPanelData().addListener(this); +this.vwr.parameters.setFor(jsvp, null, true); +return jsvp; +}, "JSV.common.Spectrum"); +Clazz.overrideMethod(c$, "siGetNewJSVPanel2", +function(specs){ +if (specs == null) { +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +return this.appletFrame.getJSVPanel(this.vwr, null); +}var jsvp = this.appletFrame.getJSVPanel(this.vwr, specs); +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +jsvp.getPanelData().addListener(this); +this.vwr.parameters.setFor(jsvp, null, true); +return jsvp; +}, "JU.Lst"); +Clazz.overrideMethod(c$, "siSetPropertiesFromPreferences", +function(jsvp, includeMeasures){ +this.vwr.checkAutoIntegrate(); +}, "JSV.api.JSVPanel,~B"); +Clazz.overrideMethod(c$, "siSetLoaded", +function(fileName, filePath){ +}, "~S,~S"); +Clazz.overrideMethod(c$, "siSetMenuEnables", +function(node, isSplit){ +}, "JSV.common.PanelNode,~B"); +Clazz.overrideMethod(c$, "siUpdateRecentMenus", +function(filePath){ +}, "~S"); +Clazz.overrideMethod(c$, "siExecTest", +function(value){ +var data = ""; +this.loadInline(data); +}, "~S"); +Clazz.overrideMethod(c$, "print", +function(fileName){ +return this.vwr.print(fileName); +}, "~S"); +Clazz.overrideMethod(c$, "checkScript", +function(script){ +return this.vwr.checkScript(script); +}, "~S"); +c$.getAppletInfo = Clazz.defineMethod(c$, "getAppletInfo", +function(){ +return "JSpecView Applet " + JSV.common.JSVersion.VERSION + "\n\n" + "Authors:\nProf. Robert M. Hanson,\nD. Facey, K. Bryan, C. Walters, Prof. Robert J. Lancashire and\nvolunteer developers through sourceforge."; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/app/JSVAppPro.js b/config/plugins/visualizations/jmol/static/j2s/JSV/app/JSVAppPro.js new file mode 100755 index 000000000000..98a7e67d7adc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/app/JSVAppPro.js @@ -0,0 +1,27 @@ +Clazz.declarePackage("JSV.app"); +Clazz.load(["JSV.app.JSVApp", "J.api.JSVInterface"], "JSV.app.JSVAppPro", null, function(){ +var c$ = Clazz.declareType(JSV.app, "JSVAppPro", JSV.app.JSVApp, J.api.JSVInterface); +Clazz.overrideMethod(c$, "isSigned", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "isPro", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "exitJSpecView", +function(withDialog, frame){ +this.appletFrame.doExitJmol(); +}, "~B,~O"); +Clazz.overrideMethod(c$, "siProcessCommand", +function(script){ +this.appletFrame.getApp().runScriptNow(script); +}, "~S"); +Clazz.overrideMethod(c$, "saveProperties", +function(properties){ +}, "java.util.Properties"); +Clazz.overrideMethod(c$, "setProperties", +function(properties){ +}, "java.util.Properties"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/appletjs/JSVApplet.js b/config/plugins/visualizations/jmol/static/j2s/JSV/appletjs/JSVApplet.js new file mode 100755 index 000000000000..ceb3e1c46722 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/appletjs/JSVApplet.js @@ -0,0 +1,295 @@ +Clazz.declarePackage("JSV.appletjs"); +Clazz.load(["javajs.api.JSInterface", "JSV.api.AppletFrame", "$.JSVAppletInterface"], "JSV.appletjs.JSVApplet", ["java.net.URL", "java.util.Hashtable", "JU.PT", "JSV.app.JSVApp", "JSV.js2d.JsMainPanel", "$.JsPanel", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.app = null; +this.viewer = null; +this.isStandalone = false; +this.viewerOptions = null; +this.htParams = null; +Clazz.instantialize(this, arguments);}, JSV.appletjs, "JSVApplet", null, [JSV.api.JSVAppletInterface, JSV.api.AppletFrame, javajs.api.JSInterface]); +Clazz.makeConstructor(c$, +function(viewerOptions){ +if (viewerOptions == null) viewerOptions = new java.util.Hashtable(); +this.viewerOptions = viewerOptions; +this.htParams = new java.util.Hashtable(); +for (var entry, $entry = viewerOptions.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.htParams.put(entry.getKey().toLowerCase(), entry.getValue()); + +this.init(); +}, "java.util.Map"); +Clazz.defineMethod(c$, "init", +function(){ +this.app = new JSV.app.JSVApp(this, true); +this.initViewer(); +if (this.app.appletReadyCallbackFunctionName != null && this.viewer.fullName != null) this.callToJavaScript(this.app.appletReadyCallbackFunctionName, Clazz.newArray(-1, [this.viewer.appletName, this.viewer.fullName, Boolean.TRUE, this])); +}); +Clazz.defineMethod(c$, "initViewer", +function(){ +this.viewer = this.app.vwr; +this.setLogging(); +this.viewerOptions.remove("debug"); +var o = this.viewerOptions.get("display"); +{ +o = document.getElementById(o); +}this.viewer.setDisplay(o); +JU.Logger.info(this.getAppletInfo()); +}); +Clazz.defineMethod(c$, "setLogging", +function(){ +var iLevel = ((this.getValue("logLevel", (this.getBooleanValue("debug", false) ? "5" : "4"))).charAt(0)).charCodeAt(0) - 48; +if (iLevel != 4) System.out.println("setting logLevel=" + iLevel + " -- To change, use script \"set logLevel [0-5]\""); +JU.Logger.setLogLevel(iLevel); +}); +Clazz.defineMethod(c$, "getParameter", +function(paramName){ +var o = this.htParams.get(paramName.toLowerCase()); +return (o == null ? null : o.toString()); +}, "~S"); +Clazz.defineMethod(c$, "getBooleanValue", +function(propertyName, defaultValue){ +var value = this.getValue(propertyName, defaultValue ? "true" : ""); +return (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("on") || value.equalsIgnoreCase("yes")); +}, "~S,~B"); +Clazz.defineMethod(c$, "getValue", +function(propertyName, defaultValue){ +var stringValue = this.getParameter(propertyName); +System.out.println("getValue " + propertyName + " = " + stringValue); +if (stringValue != null) return stringValue; +return defaultValue; +}, "~S,~S"); +Clazz.overrideMethod(c$, "isPro", +function(){ +return this.app.isPro(); +}); +Clazz.overrideMethod(c$, "isSigned", +function(){ +return this.app.isSigned(); +}); +Clazz.overrideMethod(c$, "destroy", +function(){ +this.app.dispose(); +this.app = null; +}); +Clazz.defineMethod(c$, "getParameter", +function(key, def){ +return this.isStandalone ? System.getProperty(key, def) : (this.getParameter(key) != null ? this.getParameter(key) : def); +}, "~S,~S"); +Clazz.overrideMethod(c$, "getAppletInfo", +function(){ +return JSV.app.JSVApp.getAppletInfo(); +}); +Clazz.overrideMethod(c$, "getSolnColour", +function(){ +return this.app.getSolnColour(); +}); +Clazz.overrideMethod(c$, "getCoordinate", +function(){ +return this.app.getCoordinate(); +}); +Clazz.overrideMethod(c$, "loadInline", +function(data){ +this.app.loadInline(data); +}, "~S"); +Clazz.defineMethod(c$, "$export", +function(type, n){ +return this.app.exportSpectrum(type, n); +}, "~S,~N"); +Clazz.overrideMethod(c$, "exportSpectrum", +function(type, n){ +return this.app.exportSpectrum(type, n); +}, "~S,~N"); +Clazz.overrideMethod(c$, "setFilePath", +function(tmpFilePath){ +this.app.setFilePath(tmpFilePath); +}, "~S"); +Clazz.overrideMethod(c$, "setSpectrumNumber", +function(i){ +this.app.setSpectrumNumber(i); +}, "~N"); +Clazz.overrideMethod(c$, "toggleGrid", +function(){ +this.app.toggleGrid(); +}); +Clazz.overrideMethod(c$, "toggleCoordinate", +function(){ +this.app.toggleCoordinate(); +}); +Clazz.overrideMethod(c$, "togglePointsOnly", +function(){ +this.app.togglePointsOnly(); +}); +Clazz.overrideMethod(c$, "toggleIntegration", +function(){ +this.app.toggleIntegration(); +}); +Clazz.overrideMethod(c$, "addHighlight", +function(x1, x2, r, g, b, a){ +this.app.addHighlight(x1, x2, r, g, b, a); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "removeAllHighlights", +function(){ +this.app.removeAllHighlights(); +}); +Clazz.overrideMethod(c$, "removeHighlight", +function(x1, x2){ +this.app.removeHighlight(x1, x2); +}, "~N,~N"); +Clazz.overrideMethod(c$, "reversePlot", +function(){ +this.app.reversePlot(); +}); +Clazz.defineMethod(c$, "script", +function(script){ +this.app.initParams(script); +}, "~S"); +Clazz.overrideMethod(c$, "runScript", +function(script){ +this.app.runScript(script); +}, "~S"); +Clazz.overrideMethod(c$, "syncScript", +function(peakScript){ +this.app.syncScript(peakScript); +}, "~S"); +Clazz.overrideMethod(c$, "writeStatus", +function(msg){ +this.app.writeStatus(msg); +}, "~S"); +Clazz.overrideMethod(c$, "getPropertyAsJavaObject", +function(key){ +return this.app.getPropertyAsJavaObject(key); +}, "~S"); +Clazz.overrideMethod(c$, "getPropertyAsJSON", +function(key){ +return this.app.getPropertyAsJSON(key); +}, "~S"); +Clazz.overrideMethod(c$, "runScriptNow", +function(script){ +return this.app.runScriptNow(script); +}, "~S"); +Clazz.overrideMethod(c$, "print", +function(fileName){ +return this.app.print(fileName); +}, "~S"); +Clazz.overrideMethod(c$, "setDropTargetListener", +function(isSigned, viewer){ +}, "~B,JSV.common.JSViewer"); +Clazz.overrideMethod(c$, "validateContent", +function(mode){ +}, "~N"); +Clazz.overrideMethod(c$, "createMainPanel", +function(viewer){ +viewer.mainPanel = new JSV.js2d.JsMainPanel(); +}, "JSV.common.JSViewer"); +Clazz.overrideMethod(c$, "newWindow", +function(isSelected){ +}, "~B"); +Clazz.overrideMethod(c$, "callToJavaScript", +function(callback, data){ +var tokens = JU.PT.split(callback, "."); +{ +try{ +var o = window[tokens[0]] +for (var i = 1; i < tokens.length; i++){ +o = o[tokens[i]] +} +return o(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9]); +} catch (e) { +System.out.println(callback + " failed " + e); +} +}}, "~S,~A"); +Clazz.overrideMethod(c$, "setPanelVisible", +function(b){ +}, "~B"); +Clazz.overrideMethod(c$, "getJSVPanel", +function(viewer, specs){ +return (specs == null ? JSV.js2d.JsPanel.getEmptyPanel(viewer) : JSV.js2d.JsPanel.getPanelMany(viewer, specs)); +}, "JSV.common.JSViewer,JU.Lst"); +Clazz.overrideMethod(c$, "setVisible", +function(b){ +}, "~B"); +Clazz.overrideMethod(c$, "getDocumentBase", +function(){ +try { +return new java.net.URL(Clazz.castNullAs("java.net.URL"), this.viewerOptions.get("documentBase"), null); +} catch (e) { +if (Clazz.exceptionOf(e,"java.net.MalformedURLException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "repaint", +function(){ +}); +Clazz.overrideMethod(c$, "validate", +function(){ +}); +Clazz.overrideMethod(c$, "doExitJmol", +function(){ +}); +Clazz.overrideMethod(c$, "getApp", +function(){ +return this.app; +}); +Clazz.overrideMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +return true; +}, "~N,~N,~N,~S,~A"); +Clazz.overrideMethod(c$, "cacheFileByName", +function(fileName, isAdd){ +return 0; +}, "~S,~B"); +Clazz.overrideMethod(c$, "cachePut", +function(key, data){ +}, "~S,~O"); +Clazz.overrideMethod(c$, "getFullName", +function(){ +return this.app.vwr.fullName; +}); +Clazz.overrideMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.app.vwr.processMouseEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "setDisplay", +function(canvas){ +this.app.vwr.setDisplay(canvas); +}, "~O"); +Clazz.overrideMethod(c$, "startHoverWatcher", +function(enable){ +}, "~B"); +Clazz.overrideMethod(c$, "update", +function(){ +this.app.vwr.updateJS(); +}); +Clazz.defineMethod(c$, "openFile", +function(fileName){ +this.app.vwr.openFile(fileName, true); +return null; +}, "~S"); +Clazz.overrideMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +this.app.vwr.openFileAsyncSpecial(fileName, flags); +}, "~S,~N"); +Clazz.overrideMethod(c$, "openFileAsyncSpecialType", +function(fileName, flags, type){ +this.openFileAsyncSpecial(fileName, flags); +}, "~S,~N,~S"); +Clazz.overrideMethod(c$, "processTwoPointGesture", +function(touches){ +this.app.vwr.processTwoPointGesture(touches); +}, "~A"); +Clazz.overrideMethod(c$, "setScreenDimension", +function(width, height){ +this.app.vwr.setScreenDimension(width, height); +}, "~N,~N"); +Clazz.overrideMethod(c$, "checkScript", +function(script){ +var s = this.app.checkScript(script); +if (s != null) System.out.println(s); +return s; +}, "~S"); +Clazz.overrideMethod(c$, "processKeyEvent", +function(event){ +}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/appletjs/JSVAppletPro.js b/config/plugins/visualizations/jmol/static/j2s/JSV/appletjs/JSVAppletPro.js new file mode 100755 index 000000000000..0381b100aecd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/appletjs/JSVAppletPro.js @@ -0,0 +1,29 @@ +Clazz.declarePackage("JSV.appletjs"); +Clazz.load(["JSV.appletjs.JSVApplet"], "JSV.appletjs.JSVAppletPro", ["JSV.app.JSVAppPro"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.app0 = null; +Clazz.instantialize(this, arguments);}, JSV.appletjs, "JSVAppletPro", JSV.appletjs.JSVApplet); +Clazz.overrideMethod(c$, "init", +function(){ +this.app = new JSV.app.JSVAppPro(this, false); +this.initViewer(); +}); +Clazz.overrideMethod(c$, "isPro", +function(){ +return true; +}); +Clazz.defineMethod(c$, "getAppletInfo", +function(){ +return Clazz.superCall(this, JSV.appletjs.JSVAppletPro, "getAppletInfo", []) + " (PRO)"; +}); +Clazz.overrideMethod(c$, "script", +function(script){ +this.runScript(script); +}, "~S"); +Clazz.overrideMethod(c$, "doExitJmol", +function(){ +this.app0.setVisible(true); +this.app = this.app0; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/Annotation.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Annotation.js new file mode 100755 index 000000000000..e5d4ff6d0ee7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Annotation.js @@ -0,0 +1,117 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.lang.Enum", "JSV.common.Coordinate"], "JSV.common.Annotation", ["JU.CU"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.text = ""; +this.$isPixels = false; +this.is2D = false; +this.offsetX = 0; +this.offsetY = 0; +this.spec = null; +Clazz.instantialize(this, arguments);}, JSV.common, "Annotation", JSV.common.Coordinate); +Clazz.defineMethod(c$, "setA", +function(x, y, spec, text, isPixels, is2D, offsetX, offsetY){ +this.set(x, y); +this.spec = spec; +this.text = text; +this.$isPixels = isPixels; +this.is2D = is2D; +this.offsetX = offsetX; +this.offsetY = offsetY; +return this; +}, "~N,~N,JSV.common.Spectrum,~S,~B,~B,~N,~N"); +Clazz.defineMethod(c$, "setSpec", +function(spec){ +this.spec = spec; +return this; +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "addSpecShift", +function(dx){ +this.setXVal(this.getXVal() + dx); +}, "~N"); +Clazz.defineMethod(c$, "isPixels", +function(){ +return this.$isPixels; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[" + this.getXVal() + ", " + this.getYVal() + "," + this.text + "]"; +}); +c$.getColoredAnnotation = Clazz.defineMethod(c$, "getColoredAnnotation", +function(g2d, spec, args, lastAnnotation){ +var arg; +var xPt = 0; +var yPt = 1; +var colorPt = 2; +var textPt = 3; +var nArgs = args.size(); +try { +switch (nArgs) { +default: +return null; +case 1: +arg = args.get(0); +xPt = yPt = -1; +if (arg.charAt(0) == '\"') { +textPt = 0; +colorPt = -1; +} else { +colorPt = 0; +textPt = -1; +}break; +case 2: +xPt = yPt = -1; +arg = args.get(0); +if (arg.charAt(0) == '\"') { +textPt = 0; +colorPt = 1; +} else { +colorPt = 0; +textPt = 1; +}break; +case 3: +case 4: +arg = args.get(2); +if (arg.charAt(0) == '\"') { +textPt = 2; +colorPt = (nArgs == 4 ? 3 : -1); +} else { +colorPt = 2; +textPt = (nArgs == 4 ? 3 : -1); +}arg = args.get(2); +if (arg.charAt(0) == '\"') { +textPt = 2; +colorPt = -1; +} else { +colorPt = 2; +textPt = -1; +}} +if (lastAnnotation == null && (xPt < 0 || yPt < 0 || textPt < 0 || colorPt < 0)) return null; +var x = (xPt < 0 ? lastAnnotation.getXVal() : Double.$valueOf(args.get(xPt)).doubleValue()); +var y = (yPt < 0 ? lastAnnotation.getYVal() : Double.$valueOf(args.get(yPt)).doubleValue()); +var color = (colorPt < 0 ? (lastAnnotation).getColor() : g2d.getColor1(JU.CU.getArgbFromString(args.get(colorPt)))); +var text; +if (textPt < 0) { +text = lastAnnotation.text; +} else { +text = args.get(textPt); +if (text.charAt(0) == '\"') text = text.substring(1, text.length - 1); +}return new JSV.common.ColoredAnnotation().setCA(x, y, spec, text, color, false, false, 0, 0); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "J.api.GenericGraphics,JSV.common.Spectrum,JU.Lst,JSV.common.Annotation"); +/*if2*/;(function(){ +var c$ = Clazz.declareType(JSV.common.Annotation, "AType", Enum); +Clazz.defineEnumConstant(c$, "Integration", 0, []); +Clazz.defineEnumConstant(c$, "PeakList", 1, []); +Clazz.defineEnumConstant(c$, "Measurements", 2, []); +Clazz.defineEnumConstant(c$, "OverlayLegend", 3, []); +Clazz.defineEnumConstant(c$, "Views", 4, []); +Clazz.defineEnumConstant(c$, "NONE", 5, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ColorParameters.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ColorParameters.js new file mode 100755 index 000000000000..1d1e0495d645 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ColorParameters.js @@ -0,0 +1,143 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.Parameters"], "JSV.common.ColorParameters", ["java.util.Hashtable", "$.StringTokenizer", "JU.CU", "$.Lst", "JSV.common.ScriptToken"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.titleFontName = null; +this.displayFontName = null; +this.elementColors = null; +this.plotColors = null; +this.isDefault = false; +Clazz.instantialize(this, arguments);}, JSV.common, "ColorParameters", JSV.common.Parameters); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.common.ColorParameters, []); +JSV.common.ColorParameters.BLACK = this.getColor3(0, 0, 0); +JSV.common.ColorParameters.RED = this.getColor3(255, 0, 0); +JSV.common.ColorParameters.LIGHT_GRAY = this.getColor3(200, 200, 200); +JSV.common.ColorParameters.DARK_GRAY = this.getColor3(80, 80, 80); +JSV.common.ColorParameters.BLUE = this.getColor3(0, 0, 255); +JSV.common.ColorParameters.WHITE = this.getColor3(255, 255, 255); +this.elementColors = new java.util.Hashtable(); +this.setColor(JSV.common.ScriptToken.TITLECOLOR, JSV.common.ColorParameters.BLACK); +this.setColor(JSV.common.ScriptToken.UNITSCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.SCALECOLOR, JSV.common.ColorParameters.BLACK); +this.setColor(JSV.common.ScriptToken.COORDINATESCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.GRIDCOLOR, JSV.common.ColorParameters.LIGHT_GRAY); +this.setColor(JSV.common.ScriptToken.PLOTCOLOR, JSV.common.ColorParameters.BLUE); +this.setColor(JSV.common.ScriptToken.PLOTAREACOLOR, JSV.common.ColorParameters.WHITE); +this.setColor(JSV.common.ScriptToken.BACKGROUNDCOLOR, this.getColor3(192, 192, 192)); +this.setColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.PEAKTABCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR, JSV.common.ColorParameters.DARK_GRAY); +for (var i = 0; i < 8; i++) JSV.common.ColorParameters.defaultPlotColors[i] = this.getColorFromString(JSV.common.ColorParameters.defaultPlotColorNames[i]); + +this.plotColors = new Array(8); +System.arraycopy(JSV.common.ColorParameters.defaultPlotColors, 0, this.plotColors, 0, 8); +}); +Clazz.defineMethod(c$, "setFor", +function(jsvp, ds, includeMeasures){ +if (ds == null) ds = this; +if (includeMeasures) jsvp.getPanelData().setBooleans(ds, null); +var pd = jsvp.getPanelData(); +if (pd.getCurrentPlotColor(1) != null) pd.setPlotColors(this.plotColors); +pd.setColorOrFont(ds, null); +}, "JSV.api.JSVPanel,JSV.common.ColorParameters,~B"); +Clazz.defineMethod(c$, "set", +function(pd, st, value){ +var param = null; +switch (st) { +default: +this.setP(pd, st, value); +return; +case JSV.common.ScriptToken.PLOTCOLORS: +if (pd == null) this.getPlotColors(value); + else pd.setPlotColors(this.getPlotColors(value)); +return; +case JSV.common.ScriptToken.BACKGROUNDCOLOR: +case JSV.common.ScriptToken.COORDINATESCOLOR: +case JSV.common.ScriptToken.GRIDCOLOR: +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +case JSV.common.ScriptToken.PEAKTABCOLOR: +case JSV.common.ScriptToken.PLOTAREACOLOR: +case JSV.common.ScriptToken.PLOTCOLOR: +case JSV.common.ScriptToken.SCALECOLOR: +case JSV.common.ScriptToken.TITLECOLOR: +case JSV.common.ScriptToken.UNITSCOLOR: +param = this.setColorFromString(st, value); +break; +case JSV.common.ScriptToken.TITLEFONTNAME: +case JSV.common.ScriptToken.DISPLAYFONTNAME: +param = this.getFontName(st, value); +break; +} +if (pd == null) return; +if (param != null) pd.setColorOrFont(this, st); +}, "JSV.common.PanelData,JSV.common.ScriptToken,~S"); +Clazz.defineMethod(c$, "getElementColor", +function(st){ +return this.elementColors.get(st); +}, "JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "setColor", +function(st, color){ +if (color != null) this.elementColors.put(st, color); +return color; +}, "JSV.common.ScriptToken,javajs.api.GenericColor"); +Clazz.defineMethod(c$, "copy", +function(){ +return this.copy(this.name); +}); +Clazz.defineMethod(c$, "setElementColors", +function(p){ +this.displayFontName = p.displayFontName; +for (var entry, $entry = p.elementColors.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setColor(entry.getKey(), entry.getValue()); + +return this; +}, "JSV.common.ColorParameters"); +Clazz.defineMethod(c$, "getColorFromString", +function(name){ +return this.getColor1(JU.CU.getArgbFromString(name)); +}, "~S"); +Clazz.defineMethod(c$, "getPlotColors", +function(plotColorsStr){ +if (plotColorsStr == null) { +this.plotColors[0] = this.getElementColor(JSV.common.ScriptToken.PLOTCOLOR); +return this.plotColors; +}var st = new java.util.StringTokenizer(plotColorsStr, ",;.- "); +var colors = new JU.Lst(); +try { +while (st.hasMoreTokens()) colors.addLast(this.getColorFromString(st.nextToken())); + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +return colors.toArray( new Array(colors.size())); +}, "~S"); +Clazz.defineMethod(c$, "setColorFromString", +function(st, value){ +return this.setColor(st, this.getColorFromString(value)); +}, "JSV.common.ScriptToken,~S"); +Clazz.defineMethod(c$, "getFontName", +function(st, value){ +var isValid = this.isValidFontName(value); +switch (st) { +case JSV.common.ScriptToken.TITLEFONTNAME: +return (isValid ? this.titleFontName = value : this.titleFontName); +case JSV.common.ScriptToken.DISPLAYFONTNAME: +return (isValid ? this.displayFontName = value : this.displayFontName); +} +return null; +}, "JSV.common.ScriptToken,~S"); +c$.BLACK = null; +c$.RED = null; +c$.LIGHT_GRAY = null; +c$.DARK_GRAY = null; +c$.BLUE = null; +c$.WHITE = null; +c$.defaultPlotColors = new Array(8); +c$.defaultPlotColorNames = Clazz.newArray(-1, ["black", "darkGreen", "darkred", "orange", "magenta", "cyan", "maroon", "darkGray"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ColoredAnnotation.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ColoredAnnotation.js new file mode 100755 index 000000000000..e3f43cef8c42 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ColoredAnnotation.js @@ -0,0 +1,21 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.Annotation"], "JSV.common.ColoredAnnotation", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.color = null; +Clazz.instantialize(this, arguments);}, JSV.common, "ColoredAnnotation", JSV.common.Annotation); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.common.ColoredAnnotation, []); +}); +Clazz.defineMethod(c$, "getColor", +function(){ +return this.color; +}); +Clazz.defineMethod(c$, "setCA", +function(x, y, spec, text, color, isPixels, is2D, offsetX, offsetY){ +this.setA(x, y, spec, text, isPixels, is2D, offsetX, offsetY); +this.color = color; +return this; +}, "~N,~N,JSV.common.Spectrum,~S,javajs.api.GenericColor,~B,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/CoordComparator.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/CoordComparator.js new file mode 100755 index 000000000000..4b6b1bce0c3c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/CoordComparator.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("JSV.common"); +(function(){ +var c$ = Clazz.declareType(JSV.common, "CoordComparator", null, java.util.Comparator); +Clazz.overrideMethod(c$, "compare", +function(c1, c2){ +return (c1.getXVal() > c2.getXVal() ? 1 : c1.getXVal() < c2.getXVal() ? -1 : 0); +}, "JSV.common.Coordinate,JSV.common.Coordinate"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/Coordinate.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Coordinate.js new file mode 100755 index 000000000000..b31c3b767329 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Coordinate.js @@ -0,0 +1,255 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.CoordComparator"], "JSV.common.Coordinate", ["java.util.Arrays", "$.StringTokenizer", "JU.Lst"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.xVal = 0; +this.yVal = 0; +Clazz.instantialize(this, arguments);}, JSV.common, "Coordinate", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "set", +function(x, y){ +this.xVal = x; +this.yVal = y; +return this; +}, "~N,~N"); +Clazz.defineMethod(c$, "getXVal", +function(){ +return this.xVal; +}); +Clazz.defineMethod(c$, "getYVal", +function(){ +return this.yVal; +}); +Clazz.defineMethod(c$, "setXVal", +function(val){ +this.xVal = val; +}, "~N"); +Clazz.defineMethod(c$, "setYVal", +function(val){ +this.yVal = val; +}, "~N"); +Clazz.defineMethod(c$, "copy", +function(){ +return new JSV.common.Coordinate().set(this.xVal, this.yVal); +}); +Clazz.defineMethod(c$, "equals", +function(coord){ +return (coord.xVal == this.xVal && coord.yVal == this.yVal); +}, "JSV.common.Coordinate"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[" + this.xVal + ", " + this.yVal + "]"; +}); +c$.isYInRange = Clazz.defineMethod(c$, "isYInRange", +function(xyCoords, min, max){ +return (JSV.common.Coordinate.getMinY(xyCoords, 0, xyCoords.length - 1) >= min && JSV.common.Coordinate.getMaxY(xyCoords, 0, xyCoords.length - 1) >= max); +}, "~A,~N,~N"); +c$.normalise = Clazz.defineMethod(c$, "normalise", +function(xyCoords, min, max){ +var newXYCoords = new Array(xyCoords.length); +var minY = JSV.common.Coordinate.getMinY(xyCoords, 0, xyCoords.length - 1); +var maxY = JSV.common.Coordinate.getMaxY(xyCoords, 0, xyCoords.length - 1); +var factor = (maxY - minY) / (max - min); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), ((xyCoords[i].getYVal() - minY) / factor) - min); + +return newXYCoords; +}, "~A,~N,~N"); +c$.reverse = Clazz.defineMethod(c$, "reverse", +function(x){ +var n = x.length; +for (var i = 0; i < n; i++) { +var v = x[i]; +x[i] = x[--n]; +x[n] = v; +} +return x; +}, "~A"); +c$.parseDSV = Clazz.defineMethod(c$, "parseDSV", +function(dataPoints, xFactor, yFactor){ +var point; +var xval = 0; +var yval = 0; +var xyCoords = new JU.Lst(); +var delim = " \t\n\r\f,;"; +var st = new java.util.StringTokenizer(dataPoints, delim); +var tmp1; +var tmp2; +while (st.hasMoreTokens()) { +tmp1 = st.nextToken().trim(); +tmp2 = st.nextToken().trim(); +xval = Double.parseDouble(tmp1); +yval = Double.parseDouble(tmp2); +point = new JSV.common.Coordinate().set(xval * xFactor, yval * yFactor); +xyCoords.addLast(point); +} +var coord = new Array(xyCoords.size()); +return xyCoords.toArray(coord); +}, "~S,~N,~N"); +c$.deltaX = Clazz.defineMethod(c$, "deltaX", +function(last, first, numPoints){ +return (last - first) / (numPoints - 1); +}, "~N,~N,~N"); +c$.removeScale = Clazz.defineMethod(c$, "removeScale", +function(xyCoords, xScale, yScale){ +JSV.common.Coordinate.applyScale(xyCoords, (1 / xScale), (1 / yScale)); +}, "~A,~N,~N"); +c$.applyScale = Clazz.defineMethod(c$, "applyScale", +function(xyCoords, xScale, yScale){ +if (xScale != 1 || yScale != 1) { +for (var i = 0; i < xyCoords.length; i++) { +xyCoords[i].setXVal(xyCoords[i].getXVal() * xScale); +xyCoords[i].setYVal(xyCoords[i].getYVal() * yScale); +} +}}, "~A,~N,~N"); +c$.getMinX = Clazz.defineMethod(c$, "getMinX", +function(coords, start, end){ +var min = 1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getXVal(); +if (tmp < min) min = tmp; +} +return min; +}, "~A,~N,~N"); +c$.getMinX = Clazz.defineMethod(c$, "getMinX", +function(spectra, vd){ +var min = 1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = JSV.common.Coordinate.getMinX(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)); +if (tmp < min) min = tmp; +} +return min; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMaxX = Clazz.defineMethod(c$, "getMaxX", +function(coords, start, end){ +var max = -1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getXVal(); +if (tmp > max) max = tmp; +} +return max; +}, "~A,~N,~N"); +c$.getMaxX = Clazz.defineMethod(c$, "getMaxX", +function(spectra, vd){ +var max = -1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = JSV.common.Coordinate.getMaxX(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)); +if (tmp > max) max = tmp; +} +return max; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMinY = Clazz.defineMethod(c$, "getMinY", +function(coords, start, end){ +var min = 1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getYVal(); +if (tmp < min) min = tmp; +} +return min; +}, "~A,~N,~N"); +c$.getMinYUser = Clazz.defineMethod(c$, "getMinYUser", +function(spectra, vd){ +var min = 1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var u = spectra.get(i).getUserYFactor(); +var yref = spectra.get(i).getYRef(); +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = (JSV.common.Coordinate.getMinY(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)) - yref) * u + yref; +if (tmp < min) min = tmp; +} +return min; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMaxY = Clazz.defineMethod(c$, "getMaxY", +function(coords, start, end){ +var max = -1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getYVal(); +if (tmp > max) max = tmp; +} +return max; +}, "~A,~N,~N"); +c$.getMaxYUser = Clazz.defineMethod(c$, "getMaxYUser", +function(spectra, vd){ +var max = -1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var u = spectra.get(i).getUserYFactor(); +var yref = spectra.get(i).getYRef(); +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = (JSV.common.Coordinate.getMaxY(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)) - yref) * u + yref; +if (tmp > max) max = tmp; +} +return max; +}, "JU.Lst,JSV.common.ViewData"); +c$.getYValueAt = Clazz.defineMethod(c$, "getYValueAt", +function(xyCoords, xPt){ +var i = JSV.common.Coordinate.getNearestIndexForX(xyCoords, xPt); +if (i == 0 || i == xyCoords.length) return NaN; +var x1 = xyCoords[i].getXVal(); +var x0 = xyCoords[i - 1].getXVal(); +var y1 = xyCoords[i].getYVal(); +var y0 = xyCoords[i - 1].getYVal(); +if (x1 == x0) return y1; +return y0 + (y1 - y0) / (x1 - x0) * (xPt - x0); +}, "~A,~N"); +c$.intoRange = Clazz.defineMethod(c$, "intoRange", +function(i, i0, i1){ +return Math.max(Math.min(i, i1), i0); +}, "~N,~N,~N"); +c$.getNearestIndexForX = Clazz.defineMethod(c$, "getNearestIndexForX", +function(xyCoords, xPt){ +var x = new JSV.common.Coordinate().set(xPt, 0); +var i = java.util.Arrays.binarySearch(xyCoords, x, JSV.common.Coordinate.c); +if (i < 0) i = -1 - i; +if (i < 0) return 0; +if (i > xyCoords.length - 1) return xyCoords.length - 1; +return i; +}, "~A,~N"); +c$.findXForPeakNearest = Clazz.defineMethod(c$, "findXForPeakNearest", +function(xyCoords, x, isMin){ +var pt = JSV.common.Coordinate.getNearestIndexForX(xyCoords, x); +var f = (isMin ? -1 : 1); +while (pt < xyCoords.length - 1 && f * (xyCoords[pt + 1].yVal - xyCoords[pt].yVal) > 0) pt++; + +while (pt >= 1 && f * (xyCoords[pt - 1].yVal - xyCoords[pt].yVal) > 0) pt--; + +if (pt == 0 || pt == xyCoords.length - 1) return xyCoords[pt].xVal; +return JSV.common.Coordinate.parabolicInterpolation(xyCoords, pt); +}, "~A,~N,~B"); +c$.parabolicInterpolation = Clazz.defineMethod(c$, "parabolicInterpolation", +function(xyCoords, pt){ +var alpha = xyCoords[pt - 1].yVal; +var beta = xyCoords[pt].yVal; +var gamma = xyCoords[pt + 1].yVal; +var p = (alpha - gamma) / 2 / (alpha - 2 * beta + gamma); +return xyCoords[pt].xVal + p * (xyCoords[pt + 1].xVal - xyCoords[pt].xVal); +}, "~A,~N"); +c$.getPickedCoordinates = Clazz.defineMethod(c$, "getPickedCoordinates", +function(coordsClicked, coordClicked, coord, actualCoord){ +if (coordClicked == null) return false; +var x = coordClicked.getXVal(); +coord.setXVal(x); +coord.setYVal(coordClicked.getYVal()); +if (actualCoord == null) return true; +var pt = JSV.common.Coordinate.getNearestIndexForX(coordsClicked, x); +actualCoord.setXVal(coordsClicked[pt].getXVal()); +actualCoord.setYVal(coordsClicked[pt].getYVal()); +return true; +}, "~A,JSV.common.Coordinate,JSV.common.Coordinate,JSV.common.Coordinate"); +c$.shiftX = Clazz.defineMethod(c$, "shiftX", +function(xyCoords, dx){ +for (var i = xyCoords.length; --i >= 0; ) xyCoords[i].xVal += dx; + +}, "~A,~N"); +c$.getNearestXWithYAbove = Clazz.defineMethod(c$, "getNearestXWithYAbove", +function(xyCoords, x, y, inverted, andGreaterThanX){ +var pt = JSV.common.Coordinate.getNearestIndexForX(xyCoords, x); +var f = (inverted ? -1 : 1); +if (andGreaterThanX) while (pt < xyCoords.length && f * (xyCoords[pt].yVal - y) < 0) pt++; + + else while (pt >= 0 && f * (xyCoords[pt].yVal - y) < 0) pt--; + +if (pt == -1 || pt == xyCoords.length) return NaN; +return JSV.common.Coordinate.findXForPeakNearest(xyCoords, xyCoords[pt].getXVal(), inverted); +}, "~A,~N,~N,~B,~B"); +c$.c = new JSV.common.CoordComparator(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ExportType.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ExportType.js new file mode 100755 index 000000000000..e725fdb832d3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ExportType.js @@ -0,0 +1,33 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.lang.Enum"], "JSV.common.ExportType", null, function(){ +var c$ = Clazz.declareType(JSV.common, "ExportType", Enum); +c$.getType = Clazz.defineMethod(c$, "getType", +function(type){ +type = type.toUpperCase(); +if (type.equalsIgnoreCase("Original...")) return JSV.common.ExportType.SOURCE; +if (type.startsWith("XML")) return JSV.common.ExportType.AML; +for (var mode, $mode = 0, $$mode = JSV.common.ExportType.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (mode.name().equals(type)) return mode; + +return JSV.common.ExportType.UNK; +}, "~S"); +c$.isExportMode = Clazz.defineMethod(c$, "isExportMode", +function(ext){ +return (JSV.common.ExportType.getType(ext) !== JSV.common.ExportType.UNK); +}, "~S"); +Clazz.defineEnumConstant(c$, "UNK", 0, []); +Clazz.defineEnumConstant(c$, "SOURCE", 1, []); +Clazz.defineEnumConstant(c$, "DIF", 2, []); +Clazz.defineEnumConstant(c$, "FIX", 3, []); +Clazz.defineEnumConstant(c$, "SQZ", 4, []); +Clazz.defineEnumConstant(c$, "PAC", 5, []); +Clazz.defineEnumConstant(c$, "XY", 6, []); +Clazz.defineEnumConstant(c$, "DIFDUP", 7, []); +Clazz.defineEnumConstant(c$, "PNG", 8, []); +Clazz.defineEnumConstant(c$, "JPG", 9, []); +Clazz.defineEnumConstant(c$, "SVG", 10, []); +Clazz.defineEnumConstant(c$, "SVGI", 11, []); +Clazz.defineEnumConstant(c$, "CML", 12, []); +Clazz.defineEnumConstant(c$, "AML", 13, []); +Clazz.defineEnumConstant(c$, "PDF", 14, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/GraphSet.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/GraphSet.js new file mode 100755 index 000000000000..785afc2373a6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/GraphSet.js @@ -0,0 +1,3011 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.XYScaleConverter", "java.util.Hashtable", "JU.BS", "$.Lst", "JSV.common.Coordinate"], "JSV.common.GraphSet", ["JU.DF", "$.PT", "JSV.common.Annotation", "$.ColorParameters", "$.ColoredAnnotation", "$.ImageView", "$.IntegralData", "$.Measurement", "$.MeasurementData", "$.PanelData", "$.Parameters", "$.PeakData", "$.PeakPickEvent", "$.PlotWidget", "$.ScaleData", "$.ScriptToken", "$.Spectrum", "$.ViewData", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.gs2dLinkedX = null; +this.gs2dLinkedY = null; +this.cur1D2Locked = false; +this.highlights = null; +this.spectra = null; +this.isSplittable = true; +this.allowStacking = true; +this.annotations = null; +this.selectedSpectrumMeasurements = null; +this.selectedSpectrumIntegrals = null; +this.lastAnnotation = null; +this.pendingMeasurement = null; +this.pendingIntegral = null; +this.graphsTemp = null; +this.widgets = null; +this.isLinked = false; +this.haveSingleYScale = false; +this.iSpectrumMovedTo = 0; +this.iSpectrumClicked = 0; +this.iSpectrumSelected = -1; +this.stackSelected = false; +this.bsSelected = null; +this.viewData = null; +this.reversePlot = false; +this.nSplit = 1; +this.yStackOffsetPercent = 0; +this.showAllStacked = true; +this.viewList = null; +this.imageView = null; +this.pd = null; +this.sticky2Dcursor = false; +this.nSpectra = 0; +this.fracX = 1; +this.fracY = 1; +this.fX0 = 0; +this.fY0 = 0; +this.zoomBox1D = null; +this.zoomBox2D = null; +this.pin1Dx0 = null; +this.pin1Dx1 = null; +this.pin1Dy0 = null; +this.pin1Dy1 = null; +this.pin1Dx01 = null; +this.pin1Dy01 = null; +this.pin2Dx0 = null; +this.pin2Dx1 = null; +this.pin2Dy0 = null; +this.pin2Dy1 = null; +this.pin2Dx01 = null; +this.pin2Dy01 = null; +this.cur2Dx0 = null; +this.cur2Dx1 = null; +this.cur1D2x1 = null; +this.cur1D2x2 = null; +this.cur2Dy = null; +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.xVArrows = 0; +this.xHArrows = 0; +this.yHArrows = 0; +this.xPixel00 = 0; +this.yPixel00 = 0; +this.xPixel11 = 0; +this.yPixel11 = 0; +this.yPixel000 = 0; +this.xPixels = 0; +this.yPixels = 0; +this.xPixel10 = 0; +this.xPixels0 = 0; +this.allowStackedYScale = true; +this.drawXAxisLeftToRight = false; +this.xAxisLeftToRight = true; +this.iPreviousSpectrumClicked = -1; +this.$haveSelectedSpectrum = false; +this.zoomEnabled = false; +this.currentZoomIndex = 0; +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +this.height = 0; +this.width = 0; +this.right = 0; +this.top = 0; +this.left = 0; +this.bottom = 0; +this.piMouseOver = null; +this.coordTemp = null; +this.FONT_PLAIN = 0; +this.FONT_BOLD = 1; +this.FONT_ITALIC = 2; +this.is2DSpectrum = false; +this.selectedMeasurement = null; +this.selectedIntegral = null; +this.lastXMax = NaN; +this.lastSpecClicked = -1; +this.inPlotMove = false; +this.xPixelMovedTo = -1; +this.xPixelMovedTo2 = -1; +this.yValueMovedTo = 0; +this.xValueMovedTo = 0; +this.haveLeftRightArrows = false; +this.xPixelPlot1 = 0; +this.xPixelPlot0 = 0; +this.yPixelPlot0 = 0; +this.yPixelPlot1 = 0; +this.nextClickForSetPeak = null; +this.closerX = 0; +this.closerY = 0; +this.splitterX = 0; +this.splitterY = 0; +this.mapX = null; +if (!Clazz.isClassDefined("JSV.common.GraphSet.Highlight")) { +JSV.common.GraphSet.$GraphSet$Highlight$ (); +} +this.widgetsAreSet = true; +this.lastIntDragX = 0; +this.nextClickMode = 0; +this.dialogs = null; +this.aIntegrationRatios = null; +this.jsvp = null; +this.image2D = null; +this.plotColors = null; +this.g2d = null; +this.gMain = null; +this.COLOR_GREY = -3; +this.COLOR_BLACK = -2; +this.COLOR_INTEGRAL = -1; +Clazz.instantialize(this, arguments);}, JSV.common, "GraphSet", null, JSV.common.XYScaleConverter); +Clazz.prepareFields (c$, function(){ +this.highlights = new JU.Lst(); +this.spectra = new JU.Lst(); +this.graphsTemp = new JU.Lst(); +this.bsSelected = new JU.BS(); +this.coordTemp = new JSV.common.Coordinate(); +this.mapX = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(pd){ +this.pd = pd; +this.jsvp = pd.jsvp; +this.g2d = pd.g2d; +}, "JSV.common.PanelData"); +Clazz.defineMethod(c$, "setSpectrumMovedTo", +function(i){ +return this.iSpectrumMovedTo = i; +}, "~N"); +Clazz.defineMethod(c$, "setSpectrumClicked", +function(i){ +this.stackSelected = this.showAllStacked; +if (i < 0 || this.iSpectrumClicked != i) { +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +}this.iSpectrumClicked = this.setSpectrumSelected(this.setSpectrumMovedTo(i)); +}, "~N"); +Clazz.defineMethod(c$, "setSpectrumSelected", +function(i){ +var isNew = (i != this.iSpectrumSelected); +this.iSpectrumSelected = i; +if (isNew) { +this.getCurrentView(); +}return this.iSpectrumSelected; +}, "~N"); +Clazz.defineMethod(c$, "closeDialogsExcept", +function(type){ +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (ad.isDialog() && (type === JSV.common.Annotation.AType.NONE || ad.getAType() !== type)) (ad).setVisible(false); +} +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "dispose", +function(){ +this.spectra = null; +this.viewData = null; +this.viewList = null; +this.annotations = null; +this.lastAnnotation = null; +this.pendingMeasurement = null; +this.imageView = null; +this.graphsTemp = null; +this.widgets = null; +this.disposeImage(); +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (ad.isDialog()) (ad).dispose(); +} +this.dialogs = null; +}); +Clazz.defineMethod(c$, "isDrawNoSpectra", +function(){ +return (this.iSpectrumSelected == -2147483648); +}); +Clazz.defineMethod(c$, "getFixedSelectedSpectrumIndex", +function(){ +return Math.max(this.iSpectrumSelected, 0); +}); +Clazz.defineMethod(c$, "getSpectrum", +function(){ +return this.getSpectrumAt(this.getFixedSelectedSpectrumIndex()).getCurrentSubSpectrum(); +}); +Clazz.defineMethod(c$, "getSpectrumAt", +function(index){ +return this.spectra.get(index); +}, "~N"); +Clazz.defineMethod(c$, "getSpectrumIndex", +function(spec){ +for (var i = this.spectra.size(); --i >= 0; ) if (this.spectra.get(i) === spec) return i; + +return -1; +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "addSpec", +function(spec){ +this.spectra.addLast(spec); +this.nSpectra++; +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "splitStack", +function(doSplit){ +if (doSplit && this.isSplittable) { +this.nSplit = this.nSpectra; +this.showAllStacked = false; +this.setSpectrumClicked(this.iSpectrumSelected); +this.pd.currentSplitPoint = this.iSpectrumSelected; +} else { +this.nSplit = 1; +this.showAllStacked = this.allowStacking && !doSplit; +this.setSpectrumClicked(this.iSpectrumSelected); +}this.stackSelected = false; +JSV.common.GraphSet.setFractionalPositions(this.pd, this.pd.graphSets, JSV.common.PanelData.LinkMode.NONE); +this.pd.setTaintedAll(); +}, "~B"); +Clazz.defineMethod(c$, "setPositionForFrame", +function(iSplit){ +if (iSplit < 0) iSplit = 0; +var marginalHeight = this.height - 50; +this.xPixel00 = Clazz.doubleToInt(this.width * this.fX0); +this.xPixel11 = Clazz.doubleToInt(this.xPixel00 + this.width * this.fracX - 1); +this.xHArrows = this.xPixel00 + 25; +this.xVArrows = this.xPixel11 - Clazz.doubleToInt(this.right / 2); +this.xPixel0 = this.xPixel00 + Clazz.doubleToInt(this.left * (1 - this.fX0)); +this.xPixel10 = this.xPixel1 = this.xPixel11 - this.right; +this.xPixels0 = this.xPixels = this.xPixel1 - this.xPixel0 + 1; +this.yPixel000 = (this.fY0 == 0 ? 25 : 0) + Clazz.doubleToInt(this.height * this.fY0); +this.yPixel00 = this.yPixel000 + Clazz.doubleToInt(marginalHeight * this.fracY * iSplit); +this.yPixel11 = this.yPixel00 + Clazz.doubleToInt(marginalHeight * this.fracY) - 1; +this.yHArrows = this.yPixel11 - 12; +this.yPixel0 = this.yPixel00 + Clazz.doubleToInt(this.top / 2); +this.yPixel1 = this.yPixel11 - Clazz.doubleToInt(this.bottom / 2); +this.yPixels = this.yPixel1 - this.yPixel0 + 1; +if (this.imageView != null && this.is2DSpectrum) { +this.setImageWindow(); +if (this.pd.display1D) { +var widthRatio = (this.pd.display1D ? 1.0 * (this.xPixels0 - this.imageView.xPixels) / this.xPixels0 : 1); +this.xPixels = Clazz.doubleToInt(Math.floor(widthRatio * this.xPixels0 * 0.8)); +this.xPixel1 = this.xPixel0 + this.xPixels - 1; +} else { +this.xPixels = 0; +this.xPixel1 = this.imageView.xPixel0 - 30; +}}}, "~N"); +Clazz.defineMethod(c$, "hasPoint", +function(xPixel, yPixel){ +return (xPixel >= this.xPixel00 && xPixel <= this.xPixel11 && yPixel >= this.yPixel000 && yPixel <= this.yPixel11 * this.nSplit); +}, "~N,~N"); +Clazz.defineMethod(c$, "isInPlotRegion", +function(xPixel, yPixel){ +return (xPixel >= this.xPixel0 && xPixel <= this.xPixel1 && yPixel >= this.yPixel0 && yPixel <= this.yPixel1); +}, "~N,~N"); +Clazz.defineMethod(c$, "getSplitPoint", +function(yPixel){ +return Math.max(0, Math.min((Clazz.doubleToInt((yPixel - this.yPixel000) / (this.yPixel11 - this.yPixel00))), this.nSplit - 1)); +}, "~N"); +Clazz.defineMethod(c$, "isSplitWidget", +function(xPixel, yPixel){ +return this.isFrameBox(xPixel, yPixel, this.splitterX, this.splitterY); +}, "~N,~N"); +Clazz.defineMethod(c$, "isCloserWidget", +function(xPixel, yPixel){ +return this.isFrameBox(xPixel, yPixel, this.closerX, this.closerY); +}, "~N,~N"); +Clazz.defineMethod(c$, "initGraphSet", +function(startIndex, endIndex){ +if (JSV.common.GraphSet.veryLightGrey == null) JSV.common.GraphSet.veryLightGrey = this.g2d.getColor3(200, 200, 200); +this.setPlotColors(JSV.common.ColorParameters.defaultPlotColors); +this.xAxisLeftToRight = this.getSpectrumAt(0).shouldDisplayXAxisIncreasing(); +this.setDrawXAxis(); +var startIndices = Clazz.newIntArray (this.nSpectra, 0); +var endIndices = Clazz.newIntArray (this.nSpectra, 0); +this.bsSelected.setBits(0, this.nSpectra); +this.allowStackedYScale = true; +if (endIndex <= 0) endIndex = 2147483647; +this.isSplittable = (this.nSpectra > 1); +this.allowStacking = (this.spectra.get(0).isStackable()); +this.showAllStacked = this.allowStacking && (this.nSpectra > 1); +for (var i = 0; i < this.nSpectra; i++) { +var iLast = this.spectra.get(i).getXYCoords().length - 1; +startIndices[i] = JSV.common.Coordinate.intoRange(startIndex, 0, iLast); +endIndices[i] = JSV.common.Coordinate.intoRange(endIndex, 0, iLast); +this.allowStackedYScale = new Boolean (this.allowStackedYScale & (this.spectra.get(i).getYUnits().equals(this.spectra.get(0).getYUnits()) && this.spectra.get(i).getUserYFactor() == this.spectra.get(0).getUserYFactor())).valueOf(); +} +this.getView(0, 0, 0, 0, startIndices, endIndices, null, null); +this.viewList = new JU.Lst(); +this.viewList.addLast(this.viewData); +}, "~N,~N"); +Clazz.defineMethod(c$, "getView", +function(x1, x2, y1, y2, startIndices, endIndices, viewScales, yScales){ +var graphs = (this.graphsTemp.size() == 0 ? this.spectra : this.graphsTemp); +var subspecs = this.getSpectrumAt(0).getSubSpectra(); +var dontUseSubspecs = (subspecs == null || subspecs.size() == 2 && subspecs.get(1).isImaginary()); +var is2D = !this.getSpectrumAt(0).is1D(); +var useFirstSubSpecOnly = false; +if (is2D && useFirstSubSpecOnly || dontUseSubspecs && y1 == y2) { +graphs = this.spectra; +} else if (y1 == y2) { +this.viewData = new JSV.common.ViewData(subspecs, y1, y2, this.getSpectrum().isContinuous()); +graphs = null; +}if (graphs != null) { +this.viewData = new JSV.common.ViewData(graphs, y1, y2, startIndices, endIndices, this.getSpectrumAt(0).isContinuous(), is2D); +if (x1 != x2) this.getScale().setXRange(x1, x2); +}if (viewScales != null) { +JSV.common.ScaleData.copyScaleFactors(viewScales, this.viewData.getScaleData()); +if (yScales != null) JSV.common.ScaleData.copyYScales(yScales, this.viewData.getScaleData()); +this.getCurrentView(); +}}, "~N,~N,~N,~N,~A,~A,~A,~A"); +Clazz.defineMethod(c$, "isNearby", +function(a1, a2, c, range){ +var x = a1.getXVal(); +var xp1 = c.toPixelX(x); +var yp1 = this.toPixelY(a1.getYVal()); +x = a2.getXVal(); +var xp2 = c.toPixelX(x); +var yp2 = this.toPixelY(a2.getYVal()); +return (Math.abs(xp1 - xp2) + Math.abs(yp1 - yp2) < range); +}, "JSV.common.Coordinate,JSV.common.Coordinate,JSV.common.XYScaleConverter,~N"); +Clazz.defineMethod(c$, "setReversePlot", +function(val){ +this.reversePlot = val; +if (this.reversePlot) this.closeDialogsExcept(JSV.common.Annotation.AType.NONE); +this.setDrawXAxis(); +}, "~B"); +Clazz.defineMethod(c$, "setDrawXAxis", +function(){ +this.drawXAxisLeftToRight = new Boolean (this.xAxisLeftToRight ^ this.reversePlot).valueOf(); +for (var i = 0; i < this.spectra.size(); i++) (this.spectra.get(i)).setExportXAxisDirection(this.drawXAxisLeftToRight); + +}); +Clazz.defineMethod(c$, "isInTopBar", +function(xPixel, yPixel){ +return (xPixel == this.fixX(xPixel) && yPixel > this.pin1Dx0.yPixel0 - 2 && yPixel < this.pin1Dx0.yPixel1); +}, "~N,~N"); +Clazz.defineMethod(c$, "isInTopBar2D", +function(xPixel, yPixel){ +return (this.imageView != null && xPixel == this.imageView.fixX(xPixel) && yPixel > this.pin2Dx0.yPixel0 - 2 && yPixel < this.pin2Dx0.yPixel1); +}, "~N,~N"); +Clazz.defineMethod(c$, "isInRightBar", +function(xPixel, yPixel){ +return (yPixel == this.fixY(yPixel) && xPixel > this.pin1Dy0.xPixel1 && xPixel < this.pin1Dy0.xPixel0 + 2); +}, "~N,~N"); +Clazz.defineMethod(c$, "isInRightBar2D", +function(xPixel, yPixel){ +return (this.imageView != null && yPixel == this.fixY(yPixel) && xPixel > this.pin2Dy0.xPixel1 && xPixel < this.pin2Dy0.xPixel0 + 2); +}, "~N,~N"); +Clazz.defineMethod(c$, "toX0", +function(xPixel){ +return this.viewList.get(0).getScale().toX0(this.fixX(xPixel), this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz.defineMethod(c$, "toY0", +function(yPixel){ +return this.viewList.get(0).getScale().toY0(this.fixY(yPixel), this.yPixel0, this.yPixel1); +}, "~N"); +Clazz.overrideMethod(c$, "toX", +function(xPixel){ +if (this.imageView != null && this.imageView.isXWithinRange(xPixel)) return this.imageView.toX(xPixel); +return this.getScale().toX(this.fixX(xPixel), this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz.overrideMethod(c$, "toY", +function(yPixel){ +return this.getScale().toY(yPixel, this.yPixel0); +}, "~N"); +Clazz.defineMethod(c$, "toPixelX", +function(dx){ +return this.getScale().toPixelX(dx, this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz.defineMethod(c$, "toPixelY", +function(yVal){ +return this.getScale().toPixelY(yVal, this.yPixel1); +}, "~N"); +Clazz.defineMethod(c$, "toPixelX0", +function(x){ +return this.viewList.get(0).getScale().toPixelX0(x, this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz.defineMethod(c$, "toPixelY0", +function(y){ +return this.fixY(this.viewList.get(0).getScale().toPixelY0(y, this.yPixel0, this.yPixel1)); +}, "~N"); +Clazz.defineMethod(c$, "fixX", +function(xPixel){ +return JSV.common.Coordinate.intoRange(xPixel, this.xPixel0, this.xPixel1); +}, "~N"); +Clazz.defineMethod(c$, "fixY", +function(yPixel){ +return JSV.common.Coordinate.intoRange(yPixel, this.yPixel0, this.yPixel1); +}, "~N"); +Clazz.defineMethod(c$, "getXPixel0", +function(){ +return this.xPixel0; +}); +Clazz.defineMethod(c$, "getXPixels", +function(){ +return this.xPixels; +}); +Clazz.overrideMethod(c$, "getYPixels", +function(){ +return this.yPixels; +}); +Clazz.defineMethod(c$, "getScale", +function(){ +return this.viewData.getScale(); +}); +Clazz.defineMethod(c$, "toPixelYint", +function(yVal){ +return this.yPixel1 - Clazz.doubleToInt(Double.isNaN(yVal) ? -2147483648 : this.yPixels * yVal); +}, "~N"); +Clazz.defineMethod(c$, "findAnnotation2D", +function(xy){ +for (var i = this.annotations.size(); --i >= 0; ) { +var a = this.annotations.get(i); +if (this.isNearby(a, xy, this.imageView, 10)) return a; +} +return null; +}, "JSV.common.Coordinate"); +Clazz.defineMethod(c$, "addAnnotation", +function(annotation, isToggle){ +if (this.annotations == null) this.annotations = new JU.Lst(); +var removed = false; +for (var i = this.annotations.size(); --i >= 0; ) if (annotation.is2D ? this.isNearby(this.annotations.get(i), annotation, this.imageView, 10) : annotation.equals(this.annotations.get(i))) { +removed = true; +this.annotations.removeItemAt(i); +} +if (annotation.text.length > 0 && (!removed || !isToggle)) this.annotations.addLast(annotation); +}, "JSV.common.Annotation,~B"); +Clazz.defineMethod(c$, "setImageWindow", +function(){ +this.imageView.setPixelWidthHeight(Clazz.doubleToInt((this.pd.display1D ? 0.6 : 1) * this.xPixels0), this.yPixels); +this.imageView.setXY0(this.getSpectrumAt(0), Clazz.doubleToInt(Math.floor(this.xPixel10 - this.imageView.xPixels)), this.yPixel0); +}); +Clazz.defineMethod(c$, "findNearestMaxMin", +function(){ +if (this.nSpectra > 1 && this.iSpectrumClicked < 0) return false; +this.xValueMovedTo = this.getSpectrum().findXForPeakNearest(this.xValueMovedTo); +this.setXPixelMovedTo(this.xValueMovedTo, 1.7976931348623157E308, 0, 0); +return !Double.isNaN(this.xValueMovedTo); +}); +Clazz.defineMethod(c$, "setXPixelMovedTo", +function(x1, x2, xPixel1, xPixel2){ +if (x1 == 1.7976931348623157E308 && x2 == 1.7976931348623157E308) { +this.xPixelMovedTo = xPixel1; +this.xPixelMovedTo2 = xPixel2; +if (this.isLinked && this.sticky2Dcursor) { +this.pd.setlinkedXMove(this, this.toX(this.xPixelMovedTo), false); +}return; +}if (x1 != 1.7976931348623157E308) { +this.xPixelMovedTo = this.toPixelX(x1); +if (this.fixX(this.xPixelMovedTo) != this.xPixelMovedTo) this.xPixelMovedTo = -1; +this.xPixelMovedTo2 = -1; +if (x1 != 1e10) this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex()); +}if (x2 != 1.7976931348623157E308) { +this.xPixelMovedTo2 = this.toPixelX(x2); +}}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "processPendingMeasurement", +function(xPixel, yPixel, clickCount){ +if (!this.isInPlotRegion(xPixel, yPixel) || this.is2dClick(xPixel, yPixel)) { +this.pendingMeasurement = null; +return; +}var x = this.toX(xPixel); +var y = this.toY(yPixel); +var x0 = x; +var m; +switch (clickCount) { +case 0: +this.pendingMeasurement.setPt2(this.toX(xPixel), this.toY(yPixel)); +break; +case 3: +case 2: +if (this.iSpectrumClicked < 0) return; +var spec = this.spectra.get(this.iSpectrumClicked); +this.setScale(this.iSpectrumClicked); +if (clickCount == 3) { +} else { +m = this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 1); +if (m != null) { +x = m.getXVal(); +y = m.getYVal(); +} else if ((m = this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 2)) != null) { +x = m.getXVal2(); +y = m.getYVal2(); +} else { +x = this.getNearestPeak(spec, x, y); +}}this.pendingMeasurement = new JSV.common.Measurement().setM1(x, y, spec); +this.pendingMeasurement.setPt2(x0, y); +this.pd.setTaintedAll(); +this.pd.repaint(); +break; +case 1: +case -2: +case -3: +var isOK = (this.pendingMeasurement != null && this.isVisible(this.getDialog(JSV.common.Annotation.AType.Measurements, -1))); +while (isOK) { +this.setScale(this.getSpectrumIndex(this.pendingMeasurement.spec)); +if (clickCount != 3) { +if (!this.findNearestMaxMin()) { +isOK = false; +break; +}xPixel = this.xPixelMovedTo; +}x = this.toX(xPixel); +y = this.toY(yPixel); +this.pendingMeasurement.setPt2(x, y); +if (this.pendingMeasurement.text.length == 0) { +isOK = false; +break; +}this.setMeasurement(this.pendingMeasurement); +if (clickCount != 1) { +isOK = false; +break; +}this.setSpectrumClicked(this.getSpectrumIndex(this.pendingMeasurement.spec)); +this.pendingMeasurement = new JSV.common.Measurement().setM1(x, y, this.pendingMeasurement.spec); +break; +} +if (!isOK) this.pendingMeasurement = null; +this.pd.setTaintedAll(); +this.pd.repaint(); +break; +case 5: +if (this.findNearestMaxMin()) { +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (Double.isNaN(this.lastXMax) || this.lastSpecClicked != iSpec || this.pendingMeasurement == null) { +this.lastXMax = this.xValueMovedTo; +this.lastSpecClicked = iSpec; +this.pendingMeasurement = new JSV.common.Measurement().setM1(this.xValueMovedTo, this.yValueMovedTo, this.spectra.get(iSpec)); +} else { +this.pendingMeasurement.setPt2(this.xValueMovedTo, this.yValueMovedTo); +if (this.pendingMeasurement.text.length > 0) this.setMeasurement(this.pendingMeasurement); +this.pendingMeasurement = null; +this.lastXMax = NaN; +}} else { +this.lastXMax = NaN; +}break; +} +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "checkIntegralNormalizationClick", +function(xPixel, yPixel){ +if (this.selectedSpectrumIntegrals == null) return false; +var integral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, -5); +if (integral == null) return false; +this.selectedIntegral = integral; +this.pd.normalizeIntegral(); +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +this.setSpectrumClicked(this.getSpectrumIndex(integral.spec)); +return true; +}, "~N,~N"); +Clazz.defineMethod(c$, "getNearestPeak", +function(spec, x, y){ +var x0 = JSV.common.Coordinate.getNearestXWithYAbove(spec.getXYCoords(), x, y, spec.isInverted(), false); +var x1 = JSV.common.Coordinate.getNearestXWithYAbove(spec.getXYCoords(), x, y, spec.isInverted(), true); +return (Double.isNaN(x0) ? x1 : Double.isNaN(x1) ? x0 : Math.abs(x0 - x) < Math.abs(x1 - x) ? x0 : x1); +}, "JSV.common.Spectrum,~N,~N"); +Clazz.defineMethod(c$, "findMeasurement", +function(measurements, xPixel, yPixel, iPt){ +if (measurements == null || measurements.size() == 0) return null; +if (iPt == 0) { +var m = this.findMeasurement(measurements, xPixel, yPixel, -1); +if (m != null || Clazz.instanceOf(measurements.get(0),"JSV.common.Integral")) return m; +return this.findMeasurement(measurements, xPixel, yPixel, -2); +}for (var i = measurements.size(); --i >= 0; ) { +var m = measurements.get(i); +var x1; +var x2; +var y1; +var y2; +if (Clazz.instanceOf(m,"JSV.common.Integral")) { +x1 = x2 = this.toPixelX(m.getXVal2()); +y1 = this.toPixelYint(m.getYVal()); +y2 = this.toPixelYint(m.getYVal2()); +} else { +x1 = this.toPixelX(m.getXVal()); +x2 = this.toPixelX(m.getXVal2()); +y1 = y2 = (iPt == -2 ? this.yPixel1 - 2 : this.toPixelY(m.getYVal())); +}switch (iPt) { +case 1: +if (Math.abs(xPixel - x1) + Math.abs(yPixel - y1) < 4) return m; +break; +case 2: +if (Math.abs(xPixel - x2) + Math.abs(yPixel - y2) < 4) return m; +break; +case -5: +y1 = y2 = Clazz.doubleToInt((y1 + y2) / 2); +x2 = x1 + 20; +default: +case -1: +case -2: +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x2, y2)) return m; +break; +} +} +return null; +}, "JSV.common.MeasurementData,~N,~N,~N"); +Clazz.defineMethod(c$, "setMeasurement", +function(m){ +var iSpec = this.getSpectrumIndex(m.spec); +var ad = this.getDialog(JSV.common.Annotation.AType.Measurements, iSpec); +if (ad == null) this.addDialog(iSpec, JSV.common.Annotation.AType.Measurements, ad = new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements, m.spec)); +ad.getData().addLast(m.copyM()); +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}, "JSV.common.Measurement"); +Clazz.defineMethod(c$, "checkArrowUpDownClick", +function(xPixel, yPixel){ +var ok = false; +var f = (this.isArrowClick(xPixel, yPixel, 3) ? JSV.common.GraphSet.RT2 : this.isArrowClick(xPixel, yPixel, 4) ? 1 / JSV.common.GraphSet.RT2 : 0); +if (f != 0) { +if (this.nSplit > 1) this.setSpectrumSelected(this.iSpectrumMovedTo); +if ((this.nSpectra == 1 || this.iSpectrumSelected >= 0) && this.spectra.get(this.getFixedSelectedSpectrumIndex()).isTransmittance()) f = 1 / f; +this.viewData.scaleSpectrum(this.imageView == null ? this.iSpectrumSelected : -2, f); +ok = true; +} else if (this.isArrowClick(xPixel, yPixel, -1)) { +this.resetViewCompletely(); +ok = true; +}if (ok) { +if (this.imageView != null) { +this.update2dImage(false); +this.resetPinsFromView(); +}this.pd.setTaintedAll(); +}return ok; +}, "~N,~N"); +Clazz.defineMethod(c$, "resetViewCompletely", +function(){ +this.clearViews(); +if (this.showAllStacked && !this.stackSelected) this.closeDialogsExcept(JSV.common.Annotation.AType.NONE); +this.viewData.resetScaleFactors(); +this.updateDialogs(); +}); +Clazz.defineMethod(c$, "checkArrowLeftRightClick", +function(xPixel, yPixel){ +if (this.haveLeftRightArrows) { +var dx = (this.isArrowClick(xPixel, yPixel, 1) ? -1 : this.isArrowClick(xPixel, yPixel, 2) ? 1 : 0); +if (dx != 0) { +var i = this.iSpectrumSelected + dx; +if (i < 0) i = this.nSpectra - 1; +this.setSpectrumClicked(i % this.nSpectra); +return true; +}if (this.isArrowClick(xPixel, yPixel, 0)) { +if (this.showAllStacked) { +this.showAllStacked = false; +this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex()); +return true; +}this.showAllStacked = this.allowStacking; +this.setSpectrumSelected(-1); +this.stackSelected = false; +}}return false; +}, "~N,~N"); +Clazz.defineMethod(c$, "isArrowClick", +function(xPixel, yPixel, type){ +var pt; +switch (type) { +case 3: +case 4: +case -1: +pt = Clazz.doubleToInt((this.yPixel00 + this.yPixel11) / 2) + (type == 3 ? -1 : type == 4 ? 1 : 0) * 15; +return (Math.abs(this.xVArrows - xPixel) < 10 && Math.abs(pt - yPixel) < 10); +case 1: +case 2: +case 0: +pt = this.xHArrows + (type == 1 ? -1 : type == 2 ? 1 : 0) * 15; +return (Math.abs(pt - xPixel) < 10 && Math.abs(this.yHArrows - yPixel) < 10); +} +return false; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setWidgetValueByUser", +function(pw){ +var sval; +if (pw === this.cur2Dy) sval = "" + this.imageView.toSubspectrumIndex(pw.yPixel0); + else if (pw === this.pin1Dx01) sval = "" + Math.min(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()) + " - " + Math.max(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()); + else if (pw === this.pin1Dy01) sval = "" + Math.min(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()) + " - " + Math.max(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()); + else if (pw === this.pin2Dx01) sval = "" + Math.min(this.pin2Dx0.getXVal(), this.pin2Dx1.getXVal()) + " - " + Math.max(this.pin2Dx0.getXVal(), this.pin2Dx1.getXVal()); + else if (pw === this.pin2Dy01) sval = "" + Clazz.doubleToInt(Math.min(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())) + " - " + Clazz.doubleToInt(Math.max(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())); + else sval = "" + pw.getValue(); +sval = this.pd.getInput("New value?", "Set Slider", sval); +if (sval == null) return; +sval = sval.trim(); +try { +if (pw === this.pin1Dx01 || pw === this.pin1Dy01 || pw === this.pin2Dx01 || pw === this.pin2Dy01) { +var pt = sval.indexOf("-", 1); +if (pt < 0) return; +var val1 = Double.$valueOf(sval.substring(0, pt)).doubleValue(); +var val2 = Double.$valueOf(sval.substring(pt + 1)).doubleValue(); +if (pw === this.pin1Dx01) { +this.doZoom(val1, this.pin1Dy0.getYVal(), val2, this.pin1Dy1.getYVal(), true, false, false, true, true); +} else if (pw === this.pin1Dy01) { +this.doZoom(this.pin1Dx0.getXVal(), val1, this.pin1Dx1.getXVal(), val2, this.imageView == null, this.imageView == null, false, false, true); +} else if (pw === this.pin2Dx01) { +this.imageView.setView0(this.imageView.toPixelX0(val1), this.pin2Dy0.yPixel0, this.imageView.toPixelX0(val2), this.pin2Dy1.yPixel0); +this.doZoom(val1, this.pin1Dy0.getYVal(), val2, this.pin1Dy1.getYVal(), false, false, false, true, true); +} else if (pw === this.pin2Dy01) { +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.toPixelY0(val1), this.pin2Dx1.xPixel0, this.imageView.toPixelY0(val2)); +this.doZoom(this.imageView.toX(this.imageView.xPixel0), this.getScale().minY, this.imageView.toX(this.imageView.xPixel0 + this.imageView.xPixels - 1), this.getScale().maxY, false, false, false, false, true); +}} else { +var val = Double.$valueOf(sval).doubleValue(); +if (pw.isXtype) { +var val2 = (pw === this.pin1Dx0 || pw === this.cur2Dx0 || pw === this.pin2Dx0 ? this.pin1Dx1.getXVal() : this.pin1Dx0.getXVal()); +this.doZoom(val, 0, val2, 0, !pw.is2D, false, false, true, true); +} else if (pw === this.cur2Dy) { +this.setCurrentSubSpectrum(Clazz.doubleToInt(val)); +} else if (pw === this.pin2Dy0 || pw === this.pin2Dy1) { +var val2 = (pw === this.pin2Dy0 ? this.pin2Dy1.yPixel0 : this.pin2Dy0.yPixel0); +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.subIndexToPixelY(Clazz.doubleToInt(val)), this.pin2Dx1.xPixel0, val2); +} else { +var val2 = (pw === this.pin1Dy0 ? this.pin1Dy1.getYVal() : this.pin1Dy0.getYVal()); +this.doZoom(this.pin1Dx0.getXVal(), val, this.pin1Dx1.getXVal(), val2, this.imageView == null, this.imageView == null, false, false, true); +}}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JSV.common.PlotWidget"); +Clazz.defineMethod(c$, "removeAllHighlights", +function(spec){ +if (spec == null) this.highlights.clear(); + else for (var i = this.highlights.size(); --i >= 0; ) if (this.highlights.get(i).spectrum === spec) this.highlights.removeItemAt(i); + +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "setCoordClicked", +function(xPixel, x, y){ +if (y == 0) this.nextClickForSetPeak = null; +if (Double.isNaN(x)) { +this.pd.coordClicked = null; +this.pd.coordsClicked = null; +return null; +}this.pd.coordClicked = new JSV.common.Coordinate().set(this.lastClickX = x, y); +this.pd.coordsClicked = this.getSpectrum().getXYCoords(); +this.pd.xPixelClicked = (this.lastPixelX = xPixel); +return this.pd.coordClicked; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setWidgets", +function(needNewPins, subIndex, doDraw1DObjects){ +if (needNewPins || this.pin1Dx0 == null) { +if (this.zoomBox1D == null) this.newPins(); + else this.resetPinPositions(); +}this.setDerivedPins(subIndex); +this.setPinSliderPositions(doDraw1DObjects); +}, "~B,~N,~B"); +Clazz.defineMethod(c$, "newPins", +function(){ +this.zoomBox1D = new JSV.common.PlotWidget("zoomBox1D"); +this.pin1Dx0 = new JSV.common.PlotWidget("pin1Dx0"); +this.pin1Dx1 = new JSV.common.PlotWidget("pin1Dx1"); +this.pin1Dy0 = new JSV.common.PlotWidget("pin1Dy0"); +this.pin1Dy1 = new JSV.common.PlotWidget("pin1Dy1"); +this.pin1Dx01 = new JSV.common.PlotWidget("pin1Dx01"); +this.pin1Dy01 = new JSV.common.PlotWidget("pin1Dy01"); +this.cur1D2x1 = new JSV.common.PlotWidget("cur1D2x1"); +this.cur1D2x1.color = JSV.common.ScriptToken.PEAKTABCOLOR; +this.cur1D2x2 = new JSV.common.PlotWidget("cur1D2x2"); +this.cur1D2x2.color = JSV.common.ScriptToken.PEAKTABCOLOR; +if (this.imageView != null) { +this.zoomBox2D = new JSV.common.PlotWidget("zoomBox2D"); +this.pin2Dx0 = new JSV.common.PlotWidget("pin2Dx0"); +this.pin2Dx1 = new JSV.common.PlotWidget("pin2Dx1"); +this.pin2Dy0 = new JSV.common.PlotWidget("pin2Dy0"); +this.pin2Dy1 = new JSV.common.PlotWidget("pin2Dy1"); +this.pin2Dx01 = new JSV.common.PlotWidget("pin2Dx01"); +this.pin2Dy01 = new JSV.common.PlotWidget("pin2Dy01"); +this.cur2Dx0 = new JSV.common.PlotWidget("cur2Dx0"); +this.cur2Dx1 = new JSV.common.PlotWidget("cur2Dx1"); +this.cur2Dy = new JSV.common.PlotWidget("cur2Dy"); +this.pin2Dy0.setY(0, this.imageView.toPixelY0(0)); +var n = this.getSpectrumAt(0).getSubSpectra().size(); +this.pin2Dy1.setY(n, this.imageView.toPixelY0(n)); +}this.setWidgetX(this.pin1Dx0, this.getScale().minX); +this.setWidgetX(this.pin1Dx1, this.getScale().maxX); +this.setWidgetY(this.pin1Dy0, this.getScale().minY); +this.setWidgetY(this.pin1Dy1, this.getScale().maxY); +this.widgets = Clazz.newArray(-1, [this.zoomBox1D, this.zoomBox2D, this.pin1Dx0, this.pin1Dx01, this.pin1Dx1, this.pin1Dy0, this.pin1Dy01, this.pin1Dy1, this.pin2Dx0, this.pin2Dx01, this.pin2Dx1, this.pin2Dy0, this.pin2Dy01, this.pin2Dy1, this.cur2Dx0, this.cur2Dx1, this.cur2Dy, this.cur1D2x1, this.cur1D2x2]); +}); +Clazz.defineMethod(c$, "setWidgetX", +function(pw, x){ +pw.setX(x, this.toPixelX0(x)); +}, "JSV.common.PlotWidget,~N"); +Clazz.defineMethod(c$, "setWidgetY", +function(pw, y){ +pw.setY(y, this.toPixelY0(y)); +}, "JSV.common.PlotWidget,~N"); +Clazz.defineMethod(c$, "resetPinsFromView", +function(){ +if (this.pin1Dx0 == null) return; +this.setWidgetX(this.pin1Dx0, this.getScale().minXOnScale); +this.setWidgetX(this.pin1Dx1, this.getScale().maxXOnScale); +this.setWidgetY(this.pin1Dy0, this.getScale().minYOnScale); +this.setWidgetY(this.pin1Dy1, this.getScale().maxYOnScale); +}); +Clazz.defineMethod(c$, "resetPinPositions", +function(){ +this.resetX(this.pin1Dx0); +this.resetY(this.pin1Dy0); +this.resetY(this.pin1Dy1); +if (this.imageView == null) { +if (this.gs2dLinkedX != null) this.resetX(this.cur1D2x1); +if (this.gs2dLinkedY != null) this.resetX(this.cur1D2x2); +} else { +this.pin2Dy0.setY(this.pin2Dy0.getYVal(), this.imageView.toPixelY0(this.pin2Dy0.getYVal())); +this.pin2Dy1.setY(this.pin2Dy1.getYVal(), this.imageView.toPixelY0(this.pin2Dy1.getYVal())); +}}); +Clazz.defineMethod(c$, "resetX", +function(p){ +this.setWidgetX(p, p.getXVal()); +}, "JSV.common.PlotWidget"); +Clazz.defineMethod(c$, "resetY", +function(p){ +this.setWidgetY(p, p.getYVal()); +}, "JSV.common.PlotWidget"); +Clazz.defineMethod(c$, "setPinSliderPositions", +function(doDraw1DObjects){ +this.pin1Dx0.yPixel0 = this.pin1Dx1.yPixel0 = this.pin1Dx01.yPixel0 = this.yPixel0 - 5; +this.pin1Dx0.yPixel1 = this.pin1Dx1.yPixel1 = this.pin1Dx01.yPixel1 = this.yPixel0; +this.cur1D2x1.yPixel1 = this.cur1D2x2.yPixel1 = this.yPixel0 - 5; +this.cur1D2x1.yPixel0 = this.cur1D2x2.yPixel0 = this.yPixel1 + 6; +if (this.imageView == null) { +this.pin1Dy0.xPixel0 = this.pin1Dy1.xPixel0 = this.pin1Dy01.xPixel0 = this.xPixel1 + 5; +this.pin1Dy0.xPixel1 = this.pin1Dy1.xPixel1 = this.pin1Dy01.xPixel1 = this.xPixel1; +} else { +this.pin1Dy0.xPixel0 = this.pin1Dy1.xPixel0 = this.pin1Dy01.xPixel0 = this.imageView.xPixel1 + 15; +this.pin1Dy0.xPixel1 = this.pin1Dy1.xPixel1 = this.pin1Dy01.xPixel1 = this.imageView.xPixel1 + 10; +this.pin2Dx0.yPixel0 = this.pin2Dx1.yPixel0 = this.pin2Dx01.yPixel0 = this.yPixel0 - 5; +this.pin2Dx0.yPixel1 = this.pin2Dx1.yPixel1 = this.pin2Dx01.yPixel1 = this.yPixel0; +this.pin2Dy0.xPixel0 = this.pin2Dy1.xPixel0 = this.pin2Dy01.xPixel0 = this.imageView.xPixel1 + 5; +this.pin2Dy0.xPixel1 = this.pin2Dy1.xPixel1 = this.pin2Dy01.xPixel1 = this.imageView.xPixel1; +this.cur2Dx0.yPixel0 = this.cur2Dx1.yPixel0 = this.yPixel1 + 6; +this.cur2Dx0.yPixel1 = this.cur2Dx1.yPixel1 = this.yPixel0 - 5; +this.cur2Dx0.yPixel0 = this.cur2Dx1.yPixel0 = this.yPixel1 + 6; +this.cur2Dx1.yPixel1 = this.cur2Dx1.yPixel1 = this.yPixel0 - 5; +this.cur2Dy.xPixel0 = (doDraw1DObjects ? Clazz.doubleToInt((this.xPixel1 + this.imageView.xPixel0) / 2) : this.imageView.xPixel0 - 6); +this.cur2Dy.xPixel1 = this.imageView.xPixel1 + 5; +}}, "~B"); +Clazz.defineMethod(c$, "setDerivedPins", +function(subIndex){ +this.widgetsAreSet = true; +if (this.gs2dLinkedX != null) this.cur1D2x1.setX(this.cur1D2x1.getXVal(), this.toPixelX(this.cur1D2x1.getXVal())); +if (this.gs2dLinkedY != null) this.cur1D2x2.setX(this.cur1D2x2.getXVal(), this.toPixelX(this.cur1D2x2.getXVal())); +this.pin1Dx01.setX(0, Clazz.doubleToInt((this.pin1Dx0.xPixel0 + this.pin1Dx1.xPixel0) / 2)); +this.pin1Dy01.setY(0, Clazz.doubleToInt((this.pin1Dy0.yPixel0 + this.pin1Dy1.yPixel0) / 2)); +this.pin1Dx01.setEnabled(Math.min(this.pin1Dx0.xPixel0, this.pin1Dx1.xPixel0) > this.xPixel0 || Math.max(this.pin1Dx0.xPixel0, this.pin1Dx1.xPixel0) < this.xPixel1); +this.pin1Dy01.setEnabled(Math.min(this.pin1Dy0.yPixel0, this.pin1Dy1.yPixel0) > Math.min(this.toPixelY(this.getScale().minY), this.toPixelY(this.getScale().maxY)) || Math.max(this.pin1Dy0.yPixel0, this.pin1Dy1.yPixel0) < Math.max(this.toPixelY(this.getScale().minY), this.toPixelY(this.getScale().maxY))); +if (this.imageView == null) return; +var x = this.pin1Dx0.getXVal(); +this.cur2Dx0.setX(x, this.imageView.toPixelX(x)); +x = this.pin1Dx1.getXVal(); +this.cur2Dx1.setX(x, this.imageView.toPixelX(x)); +x = this.imageView.toX(this.imageView.xPixel0); +this.pin2Dx0.setX(x, this.imageView.toPixelX0(x)); +x = this.imageView.toX(this.imageView.xPixel1); +this.pin2Dx1.setX(x, this.imageView.toPixelX0(x)); +this.pin2Dx01.setX(0, Clazz.doubleToInt((this.pin2Dx0.xPixel0 + this.pin2Dx1.xPixel0) / 2)); +var y = this.imageView.imageHeight - 1 - this.imageView.yView1; +this.pin2Dy0.setY(y, this.imageView.toPixelY0(y)); +y = this.imageView.imageHeight - 1 - this.imageView.yView2; +this.pin2Dy1.setY(y, this.imageView.toPixelY0(y)); +this.pin2Dy01.setY(0, Clazz.doubleToInt((this.pin2Dy0.yPixel0 + this.pin2Dy1.yPixel0) / 2)); +this.cur2Dy.yPixel0 = this.cur2Dy.yPixel1 = this.imageView.subIndexToPixelY(subIndex); +this.pin2Dx01.setEnabled(Math.min(this.pin2Dx0.xPixel0, this.pin2Dx1.xPixel0) != this.imageView.xPixel0 || Math.max(this.pin2Dx0.xPixel0, this.pin2Dx1.xPixel1) != this.imageView.xPixel1); +this.pin2Dy01.setEnabled(Math.min(this.pin2Dy0.yPixel0, this.pin2Dy1.yPixel0) != this.yPixel0 || Math.max(this.pin2Dy0.yPixel0, this.pin2Dy1.yPixel1) != this.yPixel1); +}, "~N"); +Clazz.defineMethod(c$, "doZoom", +function(initX, initY, finalX, finalY, is1D, is1DY, checkRange, checkLinked, addZoom){ +if (initX == finalX) { +initX = this.getScale().minXOnScale; +finalX = this.getScale().maxXOnScale; +} else if (this.isLinked && checkLinked) this.pd.doZoomLinked(this, initX, finalX, addZoom, checkRange, is1D); +if (initX > finalX) { +var tempX = initX; +initX = finalX; +finalX = tempX; +}if (initY > finalY) { +var tempY = initY; +initY = finalY; +finalY = tempY; +}var is2DGrayScaleChange = (!is1D && this.imageView != null && (this.imageView.minZ != initY || this.imageView.maxZ != finalY)); +if (!this.zoomEnabled && !is2DGrayScaleChange) return; +if (checkRange) { +if (!this.getScale().isInRangeX(initX) && !this.getScale().isInRangeX(finalX)) return; +if (!this.getScale().isInRangeX(initX)) { +initX = this.getScale().minX; +} else if (!this.getScale().isInRangeX(finalX)) { +finalX = this.getScale().maxX; +}} else { +}this.pd.setTaintedAll(); +var viewScales = this.viewData.getScaleData(); +var startIndices = Clazz.newIntArray (this.nSpectra, 0); +var endIndices = Clazz.newIntArray (this.nSpectra, 0); +this.graphsTemp.clear(); +var subspecs = this.getSpectrumAt(0).getSubSpectra(); +var dontUseSubspecs = (subspecs == null || subspecs.size() == 2); +var is2D = !this.getSpectrumAt(0).is1D(); +if (!is2D && !dontUseSubspecs) { +this.graphsTemp.addLast(this.getSpectrum()); +if (!JSV.common.ScaleData.setDataPointIndices(this.graphsTemp, initX, finalX, 3, startIndices, endIndices)) return; +} else { +if (!JSV.common.ScaleData.setDataPointIndices(this.spectra, initX, finalX, 3, startIndices, endIndices)) return; +}var y1 = initY; +var y2 = finalY; +var isXOnly = (y1 == y2); +if (isXOnly) { +var f = (!is2DGrayScaleChange && is1D ? f = this.getScale().spectrumScaleFactor : 1); +if (Math.abs(f - 1) < 0.0001) { +y1 = this.getScale().minYOnScale; +y2 = this.getScale().maxYOnScale; +}}var yScales = null; +if (isXOnly || is1DY) { +this.getCurrentView(); +yScales = this.viewData.getNewScales(this.iSpectrumSelected, isXOnly, y1, y2); +}this.getView(initX, finalX, y1, y2, startIndices, endIndices, viewScales, yScales); +this.setXPixelMovedTo(1E10, 1.7976931348623157E308, 0, 0); +this.setWidgetX(this.pin1Dx0, initX); +this.setWidgetX(this.pin1Dx1, finalX); +this.setWidgetY(this.pin1Dy0, y1); +this.setWidgetY(this.pin1Dy1, y2); +if (this.imageView == null) { +this.updateDialogs(); +} else { +var isub = this.getSpectrumAt(0).getSubIndex(); +var ifix = this.imageView.fixSubIndex(isub); +if (ifix != isub) this.setCurrentSubSpectrum(ifix); +if (is2DGrayScaleChange) this.update2dImage(false); +}if (addZoom) this.addCurrentZoom(); +}, "~N,~N,~N,~N,~B,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "updateDialogs", +function(){ +this.updateDialog(JSV.common.Annotation.AType.PeakList, -1); +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}); +Clazz.defineMethod(c$, "setCurrentSubSpectrum", +function(i){ +var spec0 = this.getSpectrumAt(0); +i = spec0.setCurrentSubSpectrum(i); +if (spec0.isForcedSubset()) this.viewData.setXRangeForSubSpectrum(this.getSpectrum().getXYCoords()); +this.pd.notifySubSpectrumChange(i, this.getSpectrum()); +}, "~N"); +Clazz.defineMethod(c$, "addCurrentZoom", +function(){ +if (this.viewList.size() > this.currentZoomIndex + 1) for (var i = this.viewList.size() - 1; i > this.currentZoomIndex; i--) this.viewList.removeItemAt(i); + +this.viewList.addLast(this.viewData); +this.currentZoomIndex++; +}); +Clazz.defineMethod(c$, "setZoomTo", +function(i){ +this.currentZoomIndex = i; +this.viewData = this.viewList.get(i); +this.resetPinsFromView(); +}, "~N"); +Clazz.defineMethod(c$, "clearViews", +function(){ +if (this.isLinked) { +this.pd.clearLinkViews(this); +}this.setZoom(0, 0, 0, 0); +for (var i = this.viewList.size(); --i >= 1; ) this.viewList.removeItemAt(i); + +}); +Clazz.defineMethod(c$, "drawAll", +function(gMain, gFront, gBack, iSplit, needNewPins, doAll, pointsOnly){ +this.g2d = this.pd.g2d; +this.gMain = gMain; +var spec0 = this.getSpectrumAt(0); +var subIndex = spec0.getSubIndex(); +this.is2DSpectrum = (!spec0.is1D() && (this.isLinked || this.pd.getBoolean(JSV.common.ScriptToken.DISPLAY2D)) && (this.imageView != null || this.get2DImage(spec0))); +if (this.imageView != null && doAll) { +if (this.pd.isPrinting && this.g2d !== this.pd.g2d0) this.g2d.newGrayScaleImage(gMain, this.image2D, this.imageView.imageWidth, this.imageView.imageHeight, this.imageView.getBuffer()); +if (this.is2DSpectrum) this.setPositionForFrame(iSplit); +this.draw2DImage(); +}var iSelected = (this.stackSelected || !this.showAllStacked ? this.iSpectrumSelected : -1); +var doYScale = (!this.showAllStacked || this.nSpectra == 1 || iSelected >= 0); +var doDraw1DObjects = (this.imageView == null || this.pd.display1D); +var n = (iSelected >= 0 ? 1 : 0); +var iSpectrumForScale = this.getFixedSelectedSpectrumIndex(); +if (doDraw1DObjects && doAll) { +this.fillBox(gMain, this.xPixel0, this.yPixel0, this.xPixel1, this.yPixel1, JSV.common.ScriptToken.PLOTAREACOLOR); +if (iSelected < 0) { +doYScale = true; +for (var i = 0; i < this.nSpectra; i++) if (this.doPlot(i, iSplit)) { +if (n++ == 0) continue; +doYScale = new Boolean (doYScale & this.viewData.areYScalesSame(i - 1, i)).valueOf(); +} +}}var iSpecForFrame = (this.nSpectra == 1 ? 0 : !this.showAllStacked ? this.iSpectrumMovedTo : this.iSpectrumSelected); +var g2 = (gBack === gMain ? gFront : gBack); +if (doAll) { +var addCurrentBox = (this.pd.getCurrentGraphSet() === this && !this.isLinked && (!this.isSplittable || (this.nSplit == 1 || this.pd.currentSplitPoint == iSplit))); +var drawUpDownArrows = (this.zoomEnabled && !this.isDrawNoSpectra() && this.pd.isCurrentGraphSet(this) && this.spectra.get(0).isScalable() && (addCurrentBox || this.nSpectra == 1) && (this.nSplit == 1 || this.pd.currentSplitPoint == this.iSpectrumMovedTo)); +var addSplitBox = this.isSplittable; +this.drawFrame(gMain, iSpecForFrame, addCurrentBox, addSplitBox, drawUpDownArrows); +}if (this.pd.isCurrentGraphSet(this) && iSplit == this.pd.currentSplitPoint && (n < 2 || this.iSpectrumSelected >= 0)) this.$haveSelectedSpectrum = true; +this.haveSingleYScale = (this.showAllStacked && this.nSpectra > 1 ? this.allowStackedYScale && doYScale : true); +if (doDraw1DObjects) { +var yOffsetPixels = Clazz.floatToInt(this.yPixels * (this.yStackOffsetPercent / 100)); +this.haveLeftRightArrows = false; +for (var i = 0, offset = 0; i < this.nSpectra; i++) { +if (!this.doPlot(i, iSplit)) continue; +var isGrey = (this.stackSelected && this.iSpectrumSelected >= 0 && this.iSpectrumSelected != i); +var ig = (!this.reversePlot && this.getShowAnnotation(JSV.common.Annotation.AType.Integration, i) && (!this.showAllStacked || this.iSpectrumSelected == i) ? this.getDialog(JSV.common.Annotation.AType.Integration, i).getData() : null); +this.setScale(i); +var spec = this.spectra.get(i); +if (this.nSplit > 1) { +iSpectrumForScale = i; +}var doDrawWidgets = !isGrey && (this.nSplit == 1 || this.showAllStacked || this.iSpectrumSelected == iSplit); +var doDraw1DY = (doDrawWidgets && this.$haveSelectedSpectrum && i == iSpectrumForScale); +if (doDrawWidgets) { +this.resetPinsFromView(); +this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, doDraw1DY, false); +}if (this.haveSingleYScale && i == iSpectrumForScale && doAll) { +this.drawGrid(gMain); +if (this.pd.isPrinting && this.nSplit > 1) this.drawSpectrumSource(gMain, i); +}if (doDrawWidgets) this.drawWidgets(gFront, g2, subIndex, false, doDraw1DObjects, doDraw1DY, true); +if (!this.isDrawNoSpectra() && (this.nSpectra == 1 || this.iSpectrumSelected >= 0) && (this.haveSingleYScale && i == iSpectrumForScale || this.showAllStacked && this.stackSelected && i == this.iSpectrumSelected)) this.drawHighlightsAndPeakTabs(gFront, g2, i); +if (doAll) { +if (n == 1 && this.iSpectrumSelected < 0 || this.iSpectrumSelected == i && this.pd.isCurrentGraphSet(this)) { +if (this.pd.titleOn && !this.pd.titleDrawn) { +this.pd.drawTitle(gMain, this.height, this.width, this.pd.getDrawTitle(this.pd.isPrinting)); +this.pd.titleDrawn = true; +}}if (this.haveSingleYScale && i == iSpectrumForScale) { +if (this.pd.getBoolean(JSV.common.ScriptToken.YSCALEON)) this.drawYScale(gMain, this); +if (this.pd.getBoolean(JSV.common.ScriptToken.YUNITSON)) this.drawYUnits(gMain); +}}var isContinuous = spec.isContinuous(); +var onSpectrum = ((this.nSplit > 1 ? i == this.iSpectrumMovedTo : this.isLinked || i == iSpectrumForScale) && !this.pd.isPrinting && isContinuous); +var hasPendingIntegral = (!isGrey && this.pendingIntegral != null && spec === this.pendingIntegral.spec); +if (doAll || hasPendingIntegral) { +this.drawPlot(hasPendingIntegral && !doAll ? gFront : gMain, i, spec, isContinuous, offset, isGrey, null, onSpectrum, hasPendingIntegral, pointsOnly); +}this.drawIntegration(gFront, i, offset, isGrey, ig, isContinuous, onSpectrum); +this.drawMeasurements(gFront, i); +if (this.pendingMeasurement != null && this.pendingMeasurement.spec === spec) this.drawMeasurement(gFront, this.pendingMeasurement); +if (onSpectrum && this.xPixelMovedTo >= 0) { +this.drawSpectrumPointer(gFront, spec, offset, ig); +}if (this.nSpectra > 1 && this.nSplit == 1 && this.pd.isCurrentGraphSet(this) && doAll) { +this.haveLeftRightArrows = true; +if (!this.pd.isPrinting) { +this.setScale(0); +iSpecForFrame = (this.iSpectrumSelected); +if (this.nSpectra != 2) { +this.setPlotColor(gMain, (iSpecForFrame + this.nSpectra - 1) % this.nSpectra); +this.fillArrow(gMain, 1, this.yHArrows, this.xHArrows - 9, true); +this.setCurrentBoxColor(gMain); +this.fillArrow(gMain, 1, this.yHArrows, this.xHArrows - 9, false); +}if (iSpecForFrame >= 0) { +this.setPlotColor(gMain, iSpecForFrame); +this.fillCircle(gMain, this.xHArrows, this.yHArrows, true); +}this.setCurrentBoxColor(gMain); +this.fillCircle(gMain, this.xHArrows, this.yHArrows, false); +this.setPlotColor(gMain, (iSpecForFrame + 1) % this.nSpectra); +this.fillArrow(gMain, 2, this.yHArrows, this.xHArrows + 9, true); +this.setCurrentBoxColor(gMain); +this.fillArrow(gMain, 2, this.yHArrows, this.xHArrows + 9, false); +}}offset -= yOffsetPixels; +} +if (doAll) { +if (this.pd.getBoolean(JSV.common.ScriptToken.XSCALEON)) this.drawXScale(gMain, this); +if (this.pd.getBoolean(JSV.common.ScriptToken.XUNITSON)) this.drawXUnits(gMain); +}} else { +if (doAll) { +if (this.pd.getBoolean(JSV.common.ScriptToken.XSCALEON)) this.drawXScale(gMain, this.imageView); +if (this.pd.getBoolean(JSV.common.ScriptToken.YSCALEON)) this.drawYScale(gMain, this.imageView); +if (subIndex >= 0) this.draw2DUnits(gMain); +}this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, true, false); +this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, true, true); +this.widgetsAreSet = true; +}if (this.annotations != null) this.drawAnnotations(gFront, this.annotations, null); +}, "~O,~O,~O,~N,~B,~B,~B"); +Clazz.defineMethod(c$, "drawSpectrumSource", +function(g, i){ +this.pd.printFilePath(g, this.pd.thisWidth - this.pd.right, this.yPixel0, this.spectra.get(i).getFilePath()); +}, "~O,~N"); +Clazz.defineMethod(c$, "doPlot", +function(i, iSplit){ +var isGrey = (this.stackSelected && this.iSpectrumSelected >= 0 && this.iSpectrumSelected != i); +var ok = (this.showAllStacked || this.iSpectrumSelected == -1 || this.iSpectrumSelected == i); +return (this.nSplit > 1 ? i == iSplit : ok && (!this.pd.isPrinting || !isGrey)); +}, "~N,~N"); +Clazz.defineMethod(c$, "drawSpectrumPointer", +function(gFront, spec, yOffset, ig){ +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +var iHandle = this.pd.integralShiftMode; +if (ig != null) { +if ((!this.pd.ctrlPressed || this.pd.isIntegralDrag) && !this.isOnSpectrum(this.pd.mouseX, this.pd.mouseY, -1)) { +ig = null; +} else if (iHandle == 0) { +iHandle = this.getShiftMode(this.pd.mouseX, this.pd.mouseY); +if (iHandle == 0) iHandle = 2147483647; +}}var y0 = this.yValueMovedTo; +this.yValueMovedTo = (ig == null ? spec.getYValueAt(this.xValueMovedTo) : ig.getPercentYValueAt(this.xValueMovedTo)); +this.setCoordStr(this.xValueMovedTo, this.yValueMovedTo); +if (iHandle != 0) { +this.setPlotColor(gFront, iHandle == 2147483647 ? -1 : 0); +if (iHandle < 0 || iHandle == 2147483647) { +this.drawHandle(gFront, this.xPixelPlot1, this.yPixelPlot0, 3, false); +}if (iHandle > 0) { +this.drawHandle(gFront, this.xPixelPlot0, this.yPixelPlot1, 3, false); +}if (iHandle != 2147483647) return; +}if (ig != null) this.g2d.setStrokeBold(gFront, true); +if (Double.isNaN(y0) || this.pendingMeasurement != null) { +this.g2d.drawLine(gFront, this.xPixelMovedTo, this.yPixel0, this.xPixelMovedTo, this.yPixel1); +if (this.xPixelMovedTo2 >= 0) this.g2d.drawLine(gFront, this.xPixelMovedTo2, this.yPixel0, this.xPixelMovedTo2, this.yPixel1); +this.yValueMovedTo = NaN; +} else { +var y = (ig == null ? yOffset + this.toPixelY(this.yValueMovedTo) : this.toPixelYint(this.yValueMovedTo / 100)); +if (y == this.fixY(y)) this.g2d.drawLine(gFront, this.xPixelMovedTo, y - 10, this.xPixelMovedTo, y + 10); +}if (ig != null) this.g2d.setStrokeBold(gFront, false); +}, "~O,JSV.common.Spectrum,~N,JSV.common.IntegralData"); +Clazz.defineMethod(c$, "setScale", +function(i){ +this.viewData.setScale(i, this.xPixels, this.yPixels, this.spectra.get(i).isInverted()); +}, "~N"); +Clazz.defineMethod(c$, "draw2DUnits", +function(g){ +var nucleusX = this.getSpectrumAt(0).nucleusX; +var nucleusY = this.getSpectrumAt(0).nucleusY; +this.setColorFromToken(g, JSV.common.ScriptToken.PLOTCOLOR); +this.drawUnits(g, nucleusX, this.imageView.xPixel1 + 5 * this.pd.scalingFactor, this.yPixel1, 1, 1.0); +this.drawUnits(g, nucleusY, this.imageView.xPixel0 - 5 * this.pd.scalingFactor, this.yPixel0, 1, 0); +}, "~O"); +Clazz.defineMethod(c$, "drawPeakTabs", +function(gFront, g2, spec){ +var list = (this.nSpectra == 1 || this.iSpectrumSelected >= 0 ? spec.getPeakList() : null); +if (list != null && list.size() > 0) { +if (this.piMouseOver != null && this.piMouseOver.spectrum === spec && this.pd.isMouseUp()) { +this.g2d.setGraphicsColor(g2, this.g2d.getColor4(240, 240, 240, 140)); +this.drawPeak(g2, this.piMouseOver, 0); +spec.setHighlightedPeak(this.piMouseOver); +} else { +spec.setHighlightedPeak(null); +}this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +for (var i = list.size(); --i >= 0; ) { +var p = list.get(i); +this.drawPeak(gFront, p, p === spec.getSelectedPeak() ? 14 : 7); +} +}}, "~O,~O,JSV.common.Spectrum"); +Clazz.defineMethod(c$, "drawPeak", +function(g, pi, tickSize){ +if (this.pd.isPrinting) return; +var xMin = pi.getXMin(); +var xMax = pi.getXMax(); +if (xMin == xMax) return; +this.drawBar(g, pi, xMin, xMax, null, tickSize); +}, "~O,JSV.common.PeakInfo,~N"); +Clazz.defineMethod(c$, "drawWidgets", +function(gFront, gBack, subIndex, needNewPins, doDraw1DObjects, doDraw1DY, postGrid){ +this.setWidgets(needNewPins, subIndex, doDraw1DObjects); +if (this.pd.isPrinting && (this.imageView == null ? !this.cur1D2Locked : this.sticky2Dcursor)) return; +if (!this.pd.isPrinting && !postGrid) { +if (doDraw1DObjects) { +this.fillBox(gFront, this.xPixel0, this.pin1Dx0.yPixel1, this.xPixel1, this.pin1Dx1.yPixel1 + 2, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin1Dx0.xPixel0, this.pin1Dx0.yPixel1, this.pin1Dx1.xPixel0, this.pin1Dx1.yPixel1 + 2, JSV.common.ScriptToken.PLOTCOLOR); +} else { +this.fillBox(gFront, this.imageView.xPixel0, this.pin2Dx0.yPixel1, this.imageView.xPixel1, this.pin2Dx0.yPixel1 + 2, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin2Dx0.xPixel0, this.pin2Dx0.yPixel1, this.pin2Dx1.xPixel0, this.pin2Dx1.yPixel1 + 2, JSV.common.ScriptToken.PLOTCOLOR); +this.fillBox(gFront, this.pin2Dy0.xPixel1, this.yPixel1, this.pin2Dy1.xPixel1 + 2, this.yPixel0, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin2Dy0.xPixel1, this.pin2Dy0.yPixel1, this.pin2Dy1.xPixel1 + 2, this.pin2Dy1.yPixel0, JSV.common.ScriptToken.PLOTCOLOR); +}this.fillBox(gFront, this.pin1Dy0.xPixel1, this.yPixel1, this.pin1Dy1.xPixel1 + 2, this.yPixel0, JSV.common.ScriptToken.GRIDCOLOR); +if (doDraw1DY) this.fillBox(gFront, this.pin1Dy0.xPixel1, this.pin1Dy0.yPixel1, this.pin1Dy1.xPixel1 + 2, this.pin1Dy1.yPixel0, JSV.common.ScriptToken.PLOTCOLOR); +}for (var i = 0; i < this.widgets.length; i++) { +var pw = this.widgets[i]; +if (pw == null || !pw.isPinOrCursor && !this.zoomEnabled) continue; +var isLockedCursor = (pw === this.cur1D2x1 || pw === this.cur1D2x2 || pw === this.cur2Dx0 || pw === this.cur2Dx1 || pw === this.cur2Dy); +if ((pw.isPin || !pw.isPinOrCursor) == postGrid) continue; +if (pw.is2D) { +if (pw === this.cur2Dx0 && !doDraw1DObjects) continue; +} else { +var isPin1Dy = (pw === this.pin1Dy0 || pw === this.pin1Dy1 || pw === this.pin1Dy01); +if ((this.imageView != null && doDraw1DObjects == isPin1Dy) || isPin1Dy && !doDraw1DY || pw === this.cur1D2x1 && this.gs2dLinkedX == null || pw === this.cur1D2x2 && this.gs2dLinkedY == null || pw === this.zoomBox1D && (this.pd.isIntegralDrag || this.pd.integralShiftMode != 0)) { +if (!this.isLinked || this.imageView != null) continue; +}}if (this.pd.isPrinting && !isLockedCursor) continue; +if (pw.isPinOrCursor) { +this.setColorFromToken(gFront, pw.color); +this.g2d.drawLine(gFront, pw.xPixel0, pw.yPixel0, pw.xPixel1, pw.yPixel1); +pw.isVisible = true; +if (pw.isPin) this.drawHandle(gFront, pw.xPixel0, pw.yPixel0, 2, !pw.isEnabled); +} else if (pw.xPixel1 != pw.xPixel0) { +this.fillBox(gBack, pw.xPixel0, pw.yPixel0, pw.xPixel1, pw.yPixel1, pw === this.zoomBox1D && this.pd.shiftPressed ? JSV.common.ScriptToken.ZOOMBOXCOLOR2 : JSV.common.ScriptToken.ZOOMBOXCOLOR); +}} +}, "~O,~O,~N,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "drawBar", +function(g, pi, xMin, xMax, whatColor, tickSize){ +var r = xMax + xMin; +var d = Math.abs(xMax - xMin); +var range = Math.abs(this.toX(this.xPixel1) - this.toX(this.xPixel0)); +if (false && tickSize > 0 && d > range / 20) { +d = range / 20; +xMin = r / 2 - d / 2; +xMax = r / 2 + d / 2; +}var x1 = this.toPixelX(xMin); +var x2 = this.toPixelX(xMax); +if (x1 > x2) { +var tmp = x1; +x1 = x2; +x2 = tmp; +}x1 = this.fixX(x1); +x2 = this.fixX(x2); +if (x2 - x1 < 3) { +x1 -= 2; +x2 += 2; +}if (pi != null) pi.setPixelRange(x1, x2); +if (tickSize == 0) { +this.fillBox(g, x1, this.yPixel0, x2, this.yPixel0 + this.yPixels, whatColor); +} else { +this.fillBox(g, x1, this.yPixel0 + 2, x2, this.yPixel0 + 5, whatColor); +if (pi != null) { +x1 = Clazz.doubleToInt((x1 + x2) / 2); +this.fillBox(g, x1 - 1, this.yPixel0 + 2, x1 + 1, this.yPixel0 + 2 + tickSize, whatColor); +}}}, "~O,JSV.common.PeakInfo,~N,~N,JSV.common.ScriptToken,~N"); +Clazz.defineMethod(c$, "drawIntegration", +function(gFront, index, yOffset, isGrey, iData, isContinuous, isSelected){ +if (iData != null) { +if (this.haveIntegralDisplayed(index)) this.drawPlot(gFront, index, this.spectra.get(index), true, yOffset, false, iData, true, false, false); +this.drawIntegralValues(gFront, index, yOffset); +}var ratios = this.getIntegrationRatios(index); +if (ratios != null) this.drawAnnotations(gFront, ratios, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +}, "~O,~N,~N,~B,JSV.common.IntegralData,~B,~B"); +Clazz.defineMethod(c$, "getMeasurements", +function(type, iSpec){ +var ad = this.getDialog(type, iSpec); +return (ad == null || ad.getData().size() == 0 || !ad.getState() ? null : ad.getData()); +}, "JSV.common.Annotation.AType,~N"); +Clazz.defineMethod(c$, "drawPlot", +function(g, index, spec, isContinuous, yOffset, isGrey, ig, isSelected, hasPendingIntegral, pointsOnly){ +var xyCoords = (ig == null ? spec.getXYCoords() : this.getIntegrationGraph(index).getXYCoords()); +var isIntegral = (ig != null); +var bsDraw = (isIntegral ? ig.getBitSet() : null); +var fillPeaks = (hasPendingIntegral || spec.fillColor != null && isSelected); +var iColor = (isGrey ? -2 : isIntegral ? -1 : !this.allowStacking ? 0 : index); +this.setPlotColor(g, iColor); +var plotOn = true; +var y0 = this.toPixelY(0); +if (isIntegral) fillPeaks = new Boolean (fillPeaks & (y0 == this.fixY(y0))).valueOf(); + else y0 = this.fixY(y0); +var cInt = (isIntegral || fillPeaks ? this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR) : null); +var cFill = (cInt == null || spec.fillColor == null ? cInt : spec.fillColor); +var iFirst = this.viewData.getStartingPointIndex(index); +var iLast = this.viewData.getEndingPointIndex(index); +if (isContinuous && !pointsOnly) { +iLast--; +var doLineTo = (isIntegral || this.pendingIntegral != null) && this.g2d.canDoLineTo(); +if (doLineTo) this.g2d.doStroke(g, true); +var isDown = false; +for (var i = iFirst; i <= iLast; i++) { +var point1 = xyCoords[i]; +var point2 = xyCoords[i + 1]; +var y1 = (isIntegral ? this.toPixelYint(point1.getYVal()) : this.toPixelY(point1.getYVal())); +if (y1 == -2147483648) continue; +var y2 = (isIntegral ? this.toPixelYint(point2.getYVal()) : this.toPixelY(point2.getYVal())); +if (y2 == -2147483648) continue; +var xv1 = point1.getXVal(); +var xv2 = point2.getXVal(); +var x1 = this.toPixelX(xv1); +var x2 = this.toPixelX(xv2); +y1 = this.fixY(yOffset + y1); +y2 = this.fixY(yOffset + y2); +if (isIntegral) { +if (i == iFirst) { +this.xPixelPlot1 = x1; +this.yPixelPlot0 = y1; +}this.xPixelPlot0 = x2; +this.yPixelPlot1 = y2; +}if (x2 == x1 && y1 == y2) continue; +if (fillPeaks && hasPendingIntegral && this.pendingIntegral.overlaps(xv1, xv2)) { +if (cFill != null) { +this.g2d.doStroke(g, false); +this.g2d.setGraphicsColor(g, cFill); +}this.g2d.fillRect(g, Math.min(x1, x2), Math.min(y0, y1), Math.max(1, Math.abs(x2 - x1)), Math.abs(y0 - y1)); +if (cFill != null) { +this.g2d.doStroke(g, false); +this.g2d.doStroke(g, true); +isDown = false; +this.setPlotColor(g, iColor); +}continue; +}if (y1 == y2 && (y1 == this.yPixel0)) { +continue; +}if (bsDraw != null && bsDraw.get(i) != plotOn) { +plotOn = bsDraw.get(i); +if (doLineTo && isDown) { +this.g2d.doStroke(g, false); +this.g2d.doStroke(g, true); +isDown = false; +}if (!this.pd.isPrinting && this.pd.integralShiftMode != 0) this.setPlotColor(g, 0); + else if (plotOn) this.setColorFromToken(g, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); + else this.setPlotColor(g, -3); +}if (this.pd.isPrinting && !plotOn) continue; +if (isDown) { +this.g2d.lineTo(g, x2, y2); +} else { +this.g2d.drawLine(g, x1, y1, x2, y2); +isDown = doLineTo; +}} +if (doLineTo) this.g2d.doStroke(g, false); +} else { +for (var i = iFirst; i <= iLast; i++) { +var point = xyCoords[i]; +var y2 = this.toPixelY(point.getYVal()); +if (y2 == -2147483648) continue; +var x1 = this.toPixelX(point.getXVal()); +var y1 = this.toPixelY(Math.max(this.getScale().minYOnScale, 0)); +y1 = this.fixY(yOffset + y1); +y2 = this.fixY(yOffset + y2); +if (y1 == y2 && (y1 == this.yPixel0 || y1 == this.yPixel1)) continue; +if (pointsOnly) this.g2d.fillRect(g, x1 - 1, y2 - 1, 3, 3); + else this.g2d.drawLine(g, x1, y1, x1, y2); +} +if (!pointsOnly && this.getScale().isYZeroOnScale()) { +var y = yOffset + this.toPixelY(this.getScale().spectrumYRef); +if (y == this.fixY(y)) this.g2d.drawLine(g, this.xPixel1, y, this.xPixel0, y); +}}}, "~O,~N,JSV.common.Spectrum,~B,~N,~B,JSV.common.IntegralData,~B,~B,~B"); +Clazz.defineMethod(c$, "drawFrame", +function(g, iSpec, addCurrentBox, addSplitBox, drawUpDownArrows){ +if (!this.pd.gridOn || this.pd.isPrinting) { +this.setColorFromToken(g, JSV.common.ScriptToken.GRIDCOLOR); +this.g2d.drawRect(g, this.xPixel0, this.yPixel0, this.xPixels, this.yPixels); +if (this.pd.isPrinting) return; +}this.setCurrentBoxColor(g); +if (drawUpDownArrows) { +if (iSpec >= 0) { +this.setPlotColor(g, iSpec); +this.fillArrow(g, 3, this.xVArrows, Clazz.doubleToInt((this.yPixel00 + this.yPixel11) / 2) - 9, true); +this.fillArrow(g, 4, this.xVArrows, Clazz.doubleToInt((this.yPixel00 + this.yPixel11) / 2) + 9, true); +this.setCurrentBoxColor(g); +}this.fillArrow(g, 3, this.xVArrows, Clazz.doubleToInt((this.yPixel00 + this.yPixel11) / 2) - 9, false); +this.fillCircle(g, this.xVArrows, Clazz.doubleToInt((this.yPixel00 + this.yPixel11) / 2), false); +this.fillArrow(g, 4, this.xVArrows, Clazz.doubleToInt((this.yPixel00 + this.yPixel11) / 2) + 9, false); +}if (this.imageView != null) return; +if (addCurrentBox) { +var x1 = this.xPixel00 + 10; +var x2 = this.xPixel11 - 10; +var y1 = this.yPixel00 + 1; +var y2 = this.yPixel11 - 2; +this.g2d.drawLine(g, x1, y1, x2, y1); +this.g2d.drawLine(g, x2, y1, x2, y2); +this.g2d.drawLine(g, x1, y2, x2, y2); +this.splitterX = this.closerX = -2147483648; +this.drawBox(g, x2 - 10, y1, x2, y1 + 10, null); +this.g2d.drawLine(g, x2 - 10, y1 + 10, x2, y1); +this.g2d.drawLine(g, x2, y1 + 10, x2 - 10, y1); +this.closerX = x2 - 10; +this.closerY = y1; +if (addSplitBox) { +x2 -= 10; +this.fillBox(g, x2 - 10, y1, x2, y1 + 10, null); +this.splitterX = x2 - 10; +this.splitterY = y1; +}}}, "~O,~N,~B,~B,~B"); +Clazz.defineMethod(c$, "drawGrid", +function(g){ +if (!this.pd.gridOn || this.imageView != null) return; +this.setColorFromToken(g, JSV.common.ScriptToken.GRIDCOLOR); +var lastX; +if (Double.isNaN(this.getScale().firstX)) { +lastX = this.getScale().maxXOnScale + this.getScale().steps[0] / 2; +for (var val = this.getScale().minXOnScale; val < lastX; val += this.getScale().steps[0]) { +var x = this.toPixelX(val); +this.g2d.drawLine(g, x, this.yPixel0, x, this.yPixel1); +} +} else { +lastX = this.getScale().maxXOnScale * 1.0001; +for (var val = this.getScale().firstX; val <= lastX; val += this.getScale().steps[0]) { +var x = this.toPixelX(val); +this.g2d.drawLine(g, x, this.yPixel0, x, this.yPixel1); +} +}for (var val = this.getScale().firstY; val < this.getScale().maxYOnScale + this.getScale().steps[1] / 2; val += this.getScale().steps[1]) { +var y = this.toPixelY(val); +if (y == this.fixY(y)) this.g2d.drawLine(g, this.xPixel0, y, this.xPixel1, y); +} +}, "~O"); +Clazz.defineMethod(c$, "drawXScale", +function(g, c){ +this.setColorFromToken(g, JSV.common.ScriptToken.SCALECOLOR); +if (this.pd.isPrinting) this.g2d.drawLine(g, c.getXPixel0(), this.yPixel1, c.getXPixel0() + c.getXPixels() - 1, this.yPixel1); +var precision = this.getScale().precision[0]; +var font = this.pd.setFont(g, c.getXPixels(), 0, this.pd.isPrinting ? 10 : 12, false); +var y1 = this.yPixel1; +var y2 = this.yPixel1 + 4 * this.pd.scalingFactor; +var y3 = this.yPixel1 + 2 * this.pd.scalingFactor; +var h = font.getHeight(); +var dx = c.toPixelX(this.getScale().steps[0]) - c.toPixelX(0); +var maxWidth = Math.abs(dx * 0.95); +var firstX = this.getScale().firstX - this.getScale().steps[0]; +var lastX = (this.getScale().maxXOnScale + this.getScale().steps[0]) * 1.0001; +for (var pass = 0; pass < 2; pass++) { +if (pass == 1) JSV.common.ScaleData.fixScale(this.mapX); +var prevX = 1e10; +for (var val = firstX; val <= lastX; val += this.getScale().steps[0]) { +var x = c.toPixelX(val); +var d = Double.$valueOf(val); +var s; +switch (pass) { +case 0: +s = JU.DF.formatDecimalDbl(val, precision); +this.mapX.put(d, s); +this.drawTick(g, x, y1, y2, c); +dx = Math.abs(prevX - val); +var ntick = this.getScale().minorTickCounts[0]; +if (ntick != 0) { +var step = dx / ntick; +for (var i = 1; i < ntick; i++) { +var x1 = val - i * step; +this.drawTick(g, c.toPixelX(x1), y1, y3, c); +} +}prevX = val; +continue; +case 1: +s = this.mapX.get(d); +if (s == null || x != c.fixX(x)) continue; +var w = this.pd.getStringWidth(s); +var n = (x + Clazz.doubleToInt(w / 2) == c.fixX(x + Clazz.doubleToInt(w / 2)) ? 2 : 0); +if (n > 0) this.g2d.drawString(g, s, x - Clazz.doubleToInt(w / n), y2 + h); +val += Math.floor(w / maxWidth) * this.getScale().steps[0]; +break; +} +} +} +this.mapX.clear(); +}, "~O,JSV.common.XYScaleConverter"); +Clazz.defineMethod(c$, "drawTick", +function(g, x, y1, y2, c){ +if (x == c.fixX(x)) this.g2d.drawLine(g, x, y1, x, y2); +}, "~O,~N,~N,~N,JSV.common.XYScaleConverter"); +Clazz.defineMethod(c$, "drawYScale", +function(g, c){ +var sd = c.getScale(); +var precision = sd.precision[1]; +var font = this.pd.setFont(g, c.getXPixels(), 0, this.pd.isPrinting ? 10 : 12, false); +var h = font.getHeight(); +var max = sd.maxYOnScale + sd.steps[1] / 2; +var yLast = -2147483648; +this.setColorFromToken(g, JSV.common.ScriptToken.SCALECOLOR); +for (var pass = 0; pass < 2; pass++) { +if (pass == 1) JSV.common.ScaleData.fixScale(this.mapX); +for (var val = sd.firstY; val < max; val += sd.steps[1]) { +var d = Double.$valueOf(val); +var x1 = c.getXPixel0(); +var y = c.toPixelY(val); +if (y != c.fixY(y)) continue; +var s; +if (pass == 0) this.g2d.drawLine(g, x1, y, x1 - 3 * this.pd.scalingFactor, y); +if (Math.abs(y - yLast) <= h) continue; +yLast = y; +switch (pass) { +case 0: +s = JU.DF.formatDecimalDbl(val, precision); +this.mapX.put(d, s); +break; +case 1: +s = this.mapX.get(d); +if (s == null) continue; +if (s.startsWith("0") && s.contains("E")) s = "0"; +this.g2d.drawString(g, s, (x1 - 4 * this.pd.scalingFactor - this.pd.getStringWidth(s)), y + Clazz.doubleToInt(h / 3)); +break; +} +} +} +this.mapX.clear(); +}, "~O,JSV.common.XYScaleConverter"); +Clazz.defineMethod(c$, "drawXUnits", +function(g){ +var units = this.spectra.get(0).getAxisLabel(true); +if (units != null) this.drawUnits(g, units, this.xPixel1 + 25 * this.pd.scalingFactor, this.yPixel1 + 5 * this.pd.scalingFactor, 1, 1); +}, "~O"); +Clazz.defineMethod(c$, "drawUnits", +function(g, s, x, y, hOff, vOff){ +this.setColorFromToken(g, JSV.common.ScriptToken.UNITSCOLOR); +this.pd.setFont(g, (this.imageView == null ? this : this.imageView).getXPixels(), 3, 10, false); +this.g2d.drawString(g, s, Clazz.doubleToInt(x - this.pd.getStringWidth(s) * hOff), Clazz.doubleToInt(y + this.pd.getFontHeight() * vOff)); +}, "~O,~S,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawYUnits", +function(g){ +var units = this.spectra.get(0).getAxisLabel(false); +if (units != null) this.drawUnits(g, units, (this.pd.isPrinting ? 30 : 5) * this.pd.scalingFactor, this.yPixel0 + (this.pd.isPrinting ? 0 : 5) * this.pd.scalingFactor, 0, -1); +}, "~O"); +Clazz.defineMethod(c$, "drawHighlightsAndPeakTabs", +function(gFront, gBack, iSpec){ +var md = this.getMeasurements(JSV.common.Annotation.AType.PeakList, iSpec); +var spec = this.spectra.get(iSpec); +if (this.pd.isPrinting) { +if (md != null) { +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +this.printPeakList(gFront, spec, md); +}return; +}if (md == null) { +for (var i = 0; i < this.highlights.size(); i++) { +var hl = this.highlights.get(i); +if (hl.spectrum === spec) { +this.pd.setHighlightColor(hl.color); +this.drawBar(gBack, null, hl.x1, hl.x2, JSV.common.ScriptToken.HIGHLIGHTCOLOR, 0); +}} +if (this.pd.peakTabsOn) this.drawPeakTabs(gFront, gBack, spec); +}var y; +if (md != null) { +y = (spec.isInverted() ? this.yPixel1 - 10 * this.pd.scalingFactor : this.yPixel0); +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +for (var i = md.size(); --i >= 0; ) { +var m = md.get(i); +var x = this.toPixelX(m.getXVal()); +this.g2d.drawLine(gFront, x, y, x, y + 10 * this.pd.scalingFactor); +} +if (this.isVisible(this.getDialog(JSV.common.Annotation.AType.PeakList, iSpec))) { +y = this.toPixelY((md).getThresh()); +if (y == this.fixY(y) && !this.pd.isPrinting) this.g2d.drawLine(gFront, this.xPixel0, y, this.xPixel1, y); +}}}, "~O,~O,~N"); +Clazz.defineMethod(c$, "printPeakList", +function(g, spec, data){ +var sdata = data.getMeasurementListArray(null); +if (sdata.length == 0) return; +this.pd.setFont(g, this.xPixels, 0, 8, false); +var h = this.pd.getFontHeight(); +var xs = Clazz.newIntArray (data.size(), 0); +var xs0 = Clazz.newIntArray (data.size(), 0); +var dx = 0; +var s5 = 5 * this.pd.scalingFactor; +var s10 = 10 * this.pd.scalingFactor; +var s15 = 15 * this.pd.scalingFactor; +var s25 = 25 * this.pd.scalingFactor; +for (var i = 0; i < sdata.length; i++) { +xs0[i] = this.toPixelX(Double.parseDouble(sdata[i][1])); +if (i == 0) { +xs[i] = xs0[i]; +continue; +}xs[i] = Math.max(xs[i - 1] + h, xs0[i] + h); +dx += (xs[i] - xs0[i]); +} +dx /= 2 * sdata.length; +if (xs[0] - dx < this.xPixel0 + s25) dx = xs[0] - (this.xPixel0 + s25); +for (var i = 0; i < sdata.length; i++) xs[i] -= dx; + +var inverted = spec.isInverted(); +var y4 = this.pd.getStringWidth("99.9999"); +var y2 = (sdata[0].length >= 6 ? this.pd.getStringWidth("99.99") : 0); +var f = (inverted ? -1 : 1); +var y = (inverted ? this.yPixel1 : this.yPixel0) + f * (y2 + y4 + s15); +for (var i = 0; i < sdata.length; i++) { +this.g2d.drawLine(g, xs[i], y, xs[i], y + s5 * f); +this.g2d.drawLine(g, xs[i], y + s5 * f, xs0[i], y + s10 * f); +this.g2d.drawLine(g, xs0[i], y + s10 * f, xs0[i], y + s15 * f); +if (y2 > 0 && sdata[i][4].length > 0) this.g2d.drawLine(g, Clazz.doubleToInt((xs[i] + xs[i - 1]) / 2), y - y4 + s5, Clazz.doubleToInt((xs[i] + xs[i - 1]) / 2), y - y4 - s5); +} +y -= f * 2 * this.pd.scalingFactor; +if (y2 > 0) { +this.drawStringRotated(g, -90, xs[0] - s15, y, " ppm"); +this.drawStringRotated(g, -90, xs[0] - s15, y - y4 - s5, " Hz"); +}for (var i = data.size(); --i >= 0; ) { +this.drawStringRotated(g, -90 * f, xs[i] + Clazz.doubleToInt(f * h / 3), y, sdata[i][1]); +if (y2 > 0 && sdata[i][4].length > 0) { +var x = Clazz.doubleToInt((xs[i] + xs[i - 1]) / 2) + Clazz.doubleToInt(h / 3); +this.drawStringRotated(g, -90, x, y - y4 - s5, sdata[i][4]); +}} +}, "~O,JSV.common.Spectrum,JSV.common.PeakData"); +Clazz.defineMethod(c$, "drawStringRotated", +function(g, angle, x, y, s){ +this.g2d.drawStringRotated(g, s, x, y, angle); +}, "~O,~N,~N,~N,~S"); +Clazz.defineMethod(c$, "drawAnnotations", +function(g, annotations, whatColor){ +this.pd.setFont(g, this.xPixels, 1, 18, false); +for (var i = annotations.size(); --i >= 0; ) { +var note = annotations.get(i); +this.setAnnotationColor(g, note, whatColor); +var c = (note.is2D ? this.imageView : this); +var x = c.toPixelX(note.getXVal()); +var y = (note.isPixels() ? Clazz.doubleToInt(this.yPixel0 + 10 + 10 * this.pd.scalingFactor - note.getYVal()) : note.is2D ? this.imageView.subIndexToPixelY(Clazz.doubleToInt(note.getYVal())) : this.toPixelY(note.getYVal())); +this.g2d.drawString(g, note.text, x + note.offsetX * this.pd.scalingFactor, y - note.offsetY * this.pd.scalingFactor); +} +}, "~O,JU.Lst,JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "drawIntegralValues", +function(g, iSpec, yOffset){ +var integrals = this.getMeasurements(JSV.common.Annotation.AType.Integration, iSpec); +if (integrals != null) { +if (this.pd.isPrinting) this.pd.setFont(g, this.xPixels, 0, 8, false); + else this.pd.setFont(g, this.xPixels, 1, 12, false); +this.setColorFromToken(g, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +var h = this.pd.getFontHeight(); +this.g2d.setStrokeBold(g, true); +for (var i = integrals.size(); --i >= 0; ) { +var $in = integrals.get(i); +if ($in.getValue() == 0) continue; +var x = this.toPixelX($in.getXVal2()); +var y1 = yOffset * this.pd.scalingFactor + this.toPixelYint($in.getYVal()); +var y2 = yOffset * this.pd.scalingFactor + this.toPixelYint($in.getYVal2()); +if (x != this.fixX(x) || y1 != this.fixY(y1) || y2 != this.fixY(y2)) continue; +if (!this.pd.isPrinting) this.g2d.drawLine(g, x, y1, x, y2); +var s = " " + $in.text; +this.g2d.drawString(g, s, x, Clazz.doubleToInt((y1 + y2) / 2) + Clazz.doubleToInt(h / 3)); +} +this.g2d.setStrokeBold(g, false); +}if (iSpec == this.getFixedSelectedSpectrumIndex()) this.selectedSpectrumIntegrals = integrals; +}, "~O,~N,~N"); +Clazz.defineMethod(c$, "drawMeasurements", +function(g, iSpec){ +var md = this.getMeasurements(JSV.common.Annotation.AType.Measurements, iSpec); +if (md != null) for (var i = md.size(); --i >= 0; ) this.drawMeasurement(g, md.get(i)); + +if (iSpec == this.getFixedSelectedSpectrumIndex()) this.selectedSpectrumMeasurements = md; +}, "~O,~N"); +Clazz.defineMethod(c$, "drawMeasurement", +function(g, m){ +if (m.text.length == 0 && m !== this.pendingMeasurement) return; +this.pd.setFont(g, this.xPixels, 1, 12, false); +this.g2d.setGraphicsColor(g, (m === this.pendingMeasurement ? this.pd.getColor(JSV.common.ScriptToken.PEAKTABCOLOR) : this.pd.BLACK)); +var x1 = this.toPixelX(m.getXVal()); +var y1 = this.toPixelY(m.getYVal()); +var x2 = this.toPixelX(m.getXVal2()); +if (Double.isNaN(m.getXVal()) || x1 != this.fixX(x1) || x2 != this.fixX(x2)) return; +var drawString = (Math.abs(x1 - x2) >= 2); +var drawBaseLine = this.getScale().isYZeroOnScale() && m.spec.isHNMR(); +var x = Clazz.doubleToInt((x1 + x2) / 2); +this.g2d.setStrokeBold(g, true); +if (drawString) this.g2d.drawLine(g, x1, y1, x2, y1); +if (drawBaseLine) this.g2d.drawLine(g, x1 + 1, this.yPixel1 - 1, x2, this.yPixel1 - 1); +this.g2d.setStrokeBold(g, false); +if (drawString) this.g2d.drawString(g, m.text, x + m.offsetX, y1 - m.offsetY); +if (drawBaseLine) { +this.g2d.drawLine(g, x1, this.yPixel1, x1, this.yPixel1 - 6 * this.pd.scalingFactor); +this.g2d.drawLine(g, x2, this.yPixel1, x2, this.yPixel1 - 6 * this.pd.scalingFactor); +}}, "~O,JSV.common.Measurement"); +Clazz.defineMethod(c$, "getPinSelected", +function(xPixel, yPixel){ +if (this.widgets != null) for (var i = 0; i < this.widgets.length; i++) { +if (this.widgets[i] != null && this.widgets[i].isPinOrCursor && this.widgets[i].selected(xPixel, yPixel)) { +return this.widgets[i]; +}} +return null; +}, "~N,~N"); +Clazz.defineMethod(c$, "set2DCrossHairs", +function(xPixel, yPixel){ +var x; +if (xPixel == this.imageView.fixX(xPixel) && yPixel == this.fixY(yPixel)) { +this.pin1Dx1.setX(x = this.imageView.toX(xPixel), this.toPixelX(x)); +this.cur2Dx1.setX(x, xPixel); +this.setCurrentSubSpectrum(this.imageView.toSubspectrumIndex(yPixel)); +if (this.isLinked) { +var y = this.imageView.toY(yPixel); +this.pd.set2DCrossHairsLinked(this, x, y, !this.sticky2Dcursor); +}}}, "~N,~N"); +Clazz.defineMethod(c$, "reset2D", +function(isX){ +if (isX) { +this.imageView.setView0(this.imageView.xPixel0, this.pin2Dy0.yPixel0, this.imageView.xPixel1, this.pin2Dy1.yPixel0); +this.doZoom(0, this.getScale().minY, 0, this.getScale().maxY, true, false, false, false, true); +} else { +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.yPixel0, this.pin2Dx1.xPixel0, this.imageView.yPixel1); +}}, "~B"); +Clazz.defineMethod(c$, "setAnnotationText", +function(a){ +var sval = this.pd.getInput("New text?", "Set Label", a.text); +if (sval == null) return false; +if (sval.length == 0) this.annotations.removeObj(a); + else a.text = sval; +return true; +}, "JSV.common.Annotation"); +Clazz.defineMethod(c$, "checkIntegral", +function(x1, x2, isFinal){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (ad == null) return false; +var integral = (ad.getData()).addIntegralRegion(x1, x2); +if (isFinal && ad.isDialog()) (ad).update(null, 0, 0); +if (Double.isNaN(x2)) return false; +this.pendingIntegral = (isFinal ? null : integral); +this.pd.isIntegralDrag = !isFinal; +this.selectedSpectrumIntegrals = null; +return true; +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "setToolTipForPixels", +function(xPixel, yPixel){ +if (this.iSpectrumMovedTo != this.iSpectrumClicked || this.pd.getCurrentGraphSet() !== this) { +this.pd.setToolTipText("click spectrum to activate"); +return; +}if (this.isSplitWidget(xPixel, yPixel)) { +this.pd.setToolTipText("click to " + (this.nSplit > 1 ? "combine" : "split")); +return; +}if (this.isCloserWidget(xPixel, yPixel)) { +this.pd.setToolTipText("click to close"); +return; +}var pw = this.getPinSelected(xPixel, yPixel); +var precisionX = this.getScale().precision[0]; +var precisionY = this.getScale().precision[1]; +if (pw != null) { +if (this.setStartupPinTip()) return; +var s; +if (pw === this.pin1Dx01 || pw === this.pin2Dx01) { +s = JU.DF.formatDecimalDbl(Math.min(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()), precisionX) + " - " + JU.DF.formatDecimalDbl(Math.max(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()), precisionX); +} else if (pw === this.pin1Dy01) { +s = JU.DF.formatDecimalDbl(Math.min(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()), precisionY) + " - " + JU.DF.formatDecimalDbl(Math.max(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()), precisionY); +} else if (pw === this.cur2Dy) { +var isub = this.imageView.toSubspectrumIndex(pw.yPixel0); +s = this.get2DYLabel(isub, precisionX); +} else if (pw === this.pin2Dy01) { +s = "" + Clazz.doubleToInt(Math.min(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())) + " - " + Clazz.doubleToInt(Math.max(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())); +} else if (pw.isXtype) { +s = JU.DF.formatDecimalDbl(pw.getXVal(), precisionX); +} else if (pw.is2D) { +s = "" + Clazz.doubleToInt(pw.getYVal()); +} else { +s = JU.DF.formatDecimalDbl(pw.getYVal(), precisionY); +}this.pd.setToolTipText(s); +return; +}var yPt; +if (this.imageView != null) { +if (this.imageView.fixX(xPixel) == xPixel && this.fixY(yPixel) == yPixel) { +var isub = this.imageView.toSubspectrumIndex(yPixel); +var s = "y=" + this.get2DYLabel(isub, precisionX) + " / x=" + JU.DF.formatDecimalDbl(this.imageView.toX(xPixel), precisionX) + " " + this.getSpectrum().getAxisLabel(true); +this.pd.setToolTipText(s); +this.pd.coordStr = s; +return; +}if (!this.pd.display1D) { +this.pd.setToolTipText(""); +this.pd.coordStr = ""; +return; +}}var xPt = this.toX(this.fixX(xPixel)); +yPt = (this.imageView != null && this.imageView.isXWithinRange(xPixel) ? this.imageView.toSubspectrumIndex(this.fixY(yPixel)) : this.toY(this.fixY(yPixel))); +var xx = this.setCoordStr(xPt, yPt); +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (!this.isInPlotRegion(xPixel, yPixel)) { +yPt = NaN; +} else if (this.nSpectra == 1) { +} else if (this.haveIntegralDisplayed(iSpec)) { +yPt = this.getIntegrationGraph(iSpec).getPercentYValueAt(xPt); +xx += ", " + JU.DF.formatDecimalDbl(yPt, 1); +}this.pd.setToolTipText((this.selectedIntegral != null ? "click to set value" : this.pendingMeasurement != null || this.selectedMeasurement != null ? (this.pd.hasFocus() ? "Press ESC to delete " + (this.selectedIntegral != null ? "integral, DEL to delete all visible, or N to normalize" : this.pendingMeasurement == null ? "\"" + this.selectedMeasurement.text + "\" or DEL to delete all visible" : "measurement") : "") : Double.isNaN(yPt) ? null : xx)); +}, "~N,~N"); +Clazz.defineMethod(c$, "isFrameBox", +function(xPixel, yPixel, boxX, boxY){ +return Math.abs(xPixel - (boxX + 5)) < 5 && Math.abs(yPixel - (boxY + 5)) < 5; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setCoordStr", +function(xPt, yPt){ +var xx = JU.DF.formatDecimalDbl(xPt, this.getScale().precision[0]); +this.pd.coordStr = "(" + xx + (this.haveSingleYScale || this.iSpectrumSelected >= 0 ? ", " + JU.DF.formatDecimalDbl(yPt, this.getScale().precision[1]) : "") + ")"; +return xx; +}, "~N,~N"); +Clazz.defineMethod(c$, "setStartupPinTip", +function(){ +if (this.pd.startupPinTip == null) return false; +this.pd.setToolTipText(this.pd.startupPinTip); +this.pd.startupPinTip = null; +return true; +}); +Clazz.defineMethod(c$, "get2DYLabel", +function(isub, precision){ +var spec = this.getSpectrumAt(0).getSubSpectra().get(isub); +return JU.DF.formatDecimalDbl(spec.getY2DPPM(), precision) + " PPM" + (spec.y2DUnits.equals("HZ") ? " (" + JU.DF.formatDecimalDbl(spec.getY2D(), precision) + " HZ) " : ""); +}, "~N,~N"); +Clazz.defineMethod(c$, "isOnSpectrum", +function(xPixel, yPixel, index){ +var xyCoords = null; +var isContinuous = true; +var isIntegral = (index < 0); +if (isIntegral) { +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (ad == null) return false; +xyCoords = (ad.getData()).getXYCoords(); +index = this.getFixedSelectedSpectrumIndex(); +} else { +this.setScale(index); +var spec = this.spectra.get(index); +xyCoords = spec.xyCoords; +isContinuous = spec.isContinuous(); +}var yOffset = index * Clazz.floatToInt(this.yPixels * (this.yStackOffsetPercent / 100)); +var ix0 = this.viewData.getStartingPointIndex(index); +var ix1 = this.viewData.getEndingPointIndex(index); +if (isContinuous) { +for (var i = ix0; i < ix1; i++) { +var point1 = xyCoords[i]; +var point2 = xyCoords[i + 1]; +var x1 = this.toPixelX(point1.getXVal()); +var x2 = this.toPixelX(point2.getXVal()); +var y1 = (isIntegral ? this.toPixelYint(point1.getYVal()) : this.toPixelY(point1.getYVal())); +var y2 = (isIntegral ? this.toPixelYint(point2.getYVal()) : this.toPixelY(point2.getYVal())); +if (y1 == -2147483648 || y2 == -2147483648) continue; +y1 = this.fixY(y1) - yOffset; +y2 = this.fixY(y2) - yOffset; +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x2, y2)) return true; +} +} else { +for (var i = ix0; i <= ix1; i++) { +var point = xyCoords[i]; +var y2 = this.toPixelY(point.getYVal()); +if (y2 == -2147483648) continue; +var x1 = this.toPixelX(point.getXVal()); +var y1 = this.toPixelY(Math.max(this.getScale().minYOnScale, 0)); +y1 = this.fixY(y1); +y2 = this.fixY(y2); +if (y1 == y2 && (y1 == this.yPixel0 || y1 == this.yPixel1)) continue; +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x1, y2)) return true; +} +}return false; +}, "~N,~N,~N"); +c$.distance = Clazz.defineMethod(c$, "distance", +function(dx, dy){ +return Math.sqrt(dx * dx + dy * dy); +}, "~N,~N"); +c$.findCompatibleGraphSet = Clazz.defineMethod(c$, "findCompatibleGraphSet", +function(graphSets, spec){ +for (var i = 0; i < graphSets.size(); i++) if (JSV.common.Spectrum.areXScalesCompatible(spec, graphSets.get(i).getSpectrum(), false, false)) return graphSets.get(i); + +return null; +}, "JU.Lst,JSV.common.Spectrum"); +c$.isGoodEvent = Clazz.defineMethod(c$, "isGoodEvent", +function(zOrP, p, asX){ +return (p == null ? (Math.abs(zOrP.xPixel1 - zOrP.xPixel0) > 5 && Math.abs(zOrP.yPixel1 - zOrP.yPixel0) > 5) : asX ? Math.abs(zOrP.xPixel0 - p.xPixel0) > 5 : Math.abs(zOrP.yPixel0 - p.yPixel0) > 5); +}, "JSV.common.PlotWidget,JSV.common.PlotWidget,~B"); +c$.isOnLine = Clazz.defineMethod(c$, "isOnLine", +function(xPixel, yPixel, x1, y1, x2, y2){ +var dx1 = Math.abs(x1 - xPixel); +if (dx1 < 2 && Math.abs(y1 - yPixel) < 2) return true; +var dx2 = x2 - xPixel; +if (Math.abs(dx2) < 2 && Math.abs(y2 - yPixel) < 2) return true; +var dy12 = y1 - y2; +if (Math.abs(dy12) > 2 && (y1 < yPixel) == (y2 < yPixel)) return false; +var dx12 = x1 - x2; +if (Math.abs(dx12) > 2 && (x1 < xPixel) == (x2 < xPixel)) return false; +return (JSV.common.GraphSet.distance(dx1, y1 - yPixel) + JSV.common.GraphSet.distance(dx2, yPixel - y2) < JSV.common.GraphSet.distance(dx12, dy12) + 2); +}, "~N,~N,~N,~N,~N,~N"); +c$.setFractionalPositions = Clazz.defineMethod(c$, "setFractionalPositions", +function(pd, graphSets, linkMode){ +var n = graphSets.size(); +var f = 0; +var n2d = 1; +var gs; +var y = 0; +pd.isLinked = (linkMode !== JSV.common.PanelData.LinkMode.NONE); +if (linkMode === JSV.common.PanelData.LinkMode.NONE) { +for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +f += (gs.getSpectrumAt(0).is1D() ? 1 : n2d) * gs.nSplit; +} +f = 1 / f; +for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +gs.isLinked = false; +var g = (gs.getSpectrumAt(0).is1D() ? f : n2d * f); +gs.fX0 = 0; +gs.fY0 = y; +gs.fracX = 1; +gs.fracY = g; +y += g * gs.nSplit; +} +} else { +var gs2d = null; +var i2d = -1; +if (n == 2 || n == 3) for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +if (!gs.getSpectrum().is1D()) { +gs2d = gs; +if (i2d >= 0) i = -2; +i2d = i; +break; +}} +if (i2d == -2 || i2d == -1 && n != 2) { +JSV.common.GraphSet.setFractionalPositions(pd, graphSets, JSV.common.PanelData.LinkMode.NONE); +return; +}for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +gs.isLinked = true; +var s1 = gs.getSpectrumAt(0); +var is1D = s1.is1D(); +if (is1D) { +if (gs2d != null) { +var s2 = gs2d.getSpectrumAt(0); +if (JSV.common.Spectrum.areLinkableX(s1, s2)) gs.gs2dLinkedX = gs2d; +if (JSV.common.Spectrum.areLinkableY(s1, s2)) gs.gs2dLinkedY = gs2d; +}gs.fX0 = 0; +gs.fY0 = y; +gs.fracX = (gs2d == null ? 1 : 0.5); +gs.fracY = (n == 3 || gs2d == null ? 0.5 : 1); +y += 0.5; +} else { +gs.fX0 = 0.5; +gs.fY0 = 0; +gs.fracX = 0.5; +gs.fracY = 1; +}} +}}, "JSV.common.PanelData,JU.Lst,JSV.common.PanelData.LinkMode"); +Clazz.defineMethod(c$, "addAnnotation", +function(args, title){ +if (args.size() == 0 || args.size() == 1 && args.get(0).equalsIgnoreCase("none")) { +this.annotations = null; +this.lastAnnotation = null; +return null; +}if (args.size() < 4 && this.lastAnnotation == null) this.lastAnnotation = this.getAnnotation((this.getScale().maxXOnScale + this.getScale().minXOnScale) / 2, (this.getScale().maxYOnScale + this.getScale().minYOnScale) / 2, title, false, false, 0, 0); +var annotation = this.getAnnotation(args, this.lastAnnotation); +if (annotation == null) return null; +if (this.annotations == null && args.size() == 1 && args.get(0).charAt(0) == '\"') { +var s = annotation.text; +this.getSpectrum().setTitle(s); +return s; +}this.lastAnnotation = annotation; +this.addAnnotation(annotation, false); +return null; +}, "JU.Lst,~S"); +Clazz.defineMethod(c$, "addHighlight", +function(x1, x2, spec, color){ +if (spec == null) spec = this.getSpectrumAt(0); +var hl = Clazz.innerTypeInstance(JSV.common.GraphSet.Highlight, this, null, x1, x2, spec, (color == null ? this.pd.getColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR) : color)); +if (!this.highlights.contains(hl)) this.highlights.addLast(hl); +}, "~N,~N,JSV.common.Spectrum,javajs.api.GenericColor"); +Clazz.defineMethod(c$, "addPeakHighlight", +function(peakInfo){ +for (var i = this.spectra.size(); --i >= 0; ) { +var spec = this.spectra.get(i); +this.removeAllHighlights(spec); +if (peakInfo == null || peakInfo.isClearAll() || spec !== peakInfo.spectrum) continue; +var peak = peakInfo.toString(); +if (peak == null) { +continue; +}var xMin = JU.PT.getQuotedAttribute(peak, "xMin"); +var xMax = JU.PT.getQuotedAttribute(peak, "xMax"); +if (xMin == null || xMax == null) return; +var x1 = JU.PT.parseFloat(xMin); +var x2 = JU.PT.parseFloat(xMax); +if (Float.isNaN(x1) || Float.isNaN(x2)) return; +this.pd.addHighlight(this, x1, x2, spec, 200, 140, 140, 100); +spec.setSelectedPeak(peakInfo); +if (this.getScale().isInRangeX(x1) || this.getScale().isInRangeX(x2) || x1 < this.getScale().minX && this.getScale().maxX < x2) { +} else { +this.setZoomTo(0); +}} +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "advanceSubSpectrum", +function(dir){ +var spec0 = this.getSpectrumAt(0); +var i = spec0.advanceSubSpectrum(dir); +if (spec0.isForcedSubset()) this.viewData.setXRangeForSubSpectrum(this.getSpectrum().getXYCoords()); +this.pd.notifySubSpectrumChange(i, this.getSpectrum()); +}, "~N"); +Clazz.defineMethod(c$, "checkSpectrumClickedEvent", +function(xPixel, yPixel, clickCount){ +if (this.nextClickForSetPeak != null) return false; +if (clickCount > 1 || this.pendingMeasurement != null || !this.isInPlotRegion(xPixel, yPixel)) return false; +if (clickCount == 0) { +var isOnIntegral = this.isOnSpectrum(xPixel, yPixel, -1); +this.pd.integralShiftMode = (isOnIntegral ? this.getShiftMode(xPixel, yPixel) : 0); +this.pd.isIntegralDrag = (this.pd.integralShiftMode == 0 && (isOnIntegral || this.haveIntegralDisplayed(-1) && this.findMeasurement(this.getIntegrationGraph(-1), xPixel, yPixel, 0) != null)); +if (this.pd.integralShiftMode != 0) return false; +}if (!this.showAllStacked) return false; +this.stackSelected = false; +for (var i = 0; i < this.nSpectra; i++) { +if (!this.isOnSpectrum(xPixel, yPixel, i)) continue; +this.setSpectrumClicked(this.iPreviousSpectrumClicked = i); +return false; +} +if (this.isDialogOpen()) return false; +this.setSpectrumClicked(-1); +return this.stackSelected = false; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getShiftMode", +function(xPixel, yPixel){ +return (this.isStartEndIntegral(xPixel, false) ? yPixel : this.isStartEndIntegral(xPixel, true) ? -yPixel : 0); +}, "~N,~N"); +Clazz.defineMethod(c$, "isDialogOpen", +function(){ +return (this.isVisible(this.getDialog(JSV.common.Annotation.AType.Integration, -1)) || this.isVisible(this.getDialog(JSV.common.Annotation.AType.Measurements, -1)) || this.isVisible(this.getDialog(JSV.common.Annotation.AType.PeakList, -1))); +}); +Clazz.defineMethod(c$, "isStartEndIntegral", +function(xPixel, isEnd){ +return (isEnd ? this.xPixelPlot1 - xPixel < 20 : xPixel - this.xPixelPlot0 < 20); +}, "~N,~B"); +Clazz.defineMethod(c$, "checkWidgetEvent", +function(xPixel, yPixel, isPress){ +if (!this.widgetsAreSet) return false; +this.widgetsAreSet = false; +var widget; +if (isPress) { +if (this.pd.clickCount == 2 && this.lastIntDragX != xPixel && !this.is2dClick(xPixel, yPixel)) { +if (this.pendingMeasurement == null) { +if (this.iSpectrumClicked == -1 && this.iPreviousSpectrumClicked >= 0) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +}this.processPendingMeasurement(xPixel, yPixel, 2); +return true; +}} else if (!this.is2dClick(xPixel, yPixel)) { +if (this.isOnSpectrum(xPixel, yPixel, -1)) { +this.checkIntegral(this.toX(xPixel), NaN, false); +}if (this.lastIntDragX == xPixel) { +this.pd.isIntegralDrag = true; +if (!this.checkIntegral(this.toX(xPixel), this.toX(xPixel), false)) return false; +}}if (this.pendingMeasurement != null) return true; +widget = this.getPinSelected(xPixel, yPixel); +if (widget == null) { +yPixel = this.fixY(yPixel); +if (xPixel < this.xPixel1) { +if (this.pd.shiftPressed) this.setSpectrumClicked(this.iPreviousSpectrumClicked); +xPixel = this.fixX(xPixel); +if (this.zoomBox1D == null) this.newPins(); +this.zoomBox1D.setX(this.toX(xPixel), xPixel); +this.zoomBox1D.yPixel0 = yPixel; +widget = this.zoomBox1D; +} else if (this.imageView != null && xPixel < this.imageView.xPixel1) { +this.zoomBox2D.setX(this.imageView.toX(xPixel), this.imageView.fixX(xPixel)); +this.zoomBox2D.yPixel0 = yPixel; +widget = this.zoomBox2D; +}}this.pd.thisWidget = widget; +return false; +}this.nextClickForSetPeak = null; +widget = this.pd.thisWidget; +if (widget == null) return false; +if (widget === this.zoomBox1D) { +this.zoomBox1D.xPixel1 = this.fixX(xPixel); +this.zoomBox1D.yPixel1 = this.fixY(yPixel); +if (this.pd.isIntegralDrag && this.zoomBox1D.xPixel0 != this.zoomBox1D.xPixel1) { +if ((this.lastIntDragX <= xPixel) != (this.zoomBox1D.xPixel0 <= xPixel)) { +this.zoomBox1D.xPixel0 = this.lastIntDragX; +this.zoomBox1D.xPixel1 = xPixel; +this.zoomBox1D.setXVal(this.toX(this.zoomBox1D.xPixel0)); +}this.lastIntDragX = xPixel; +this.checkIntegral(this.zoomBox1D.getXVal(), this.toX(this.zoomBox1D.xPixel1), false); +}return false; +}if (!this.zoomEnabled) return false; +if (widget === this.zoomBox2D) { +this.zoomBox2D.xPixel1 = this.imageView.fixX(xPixel); +this.zoomBox2D.yPixel1 = this.fixY(yPixel); +return true; +}if (widget === this.cur2Dy) { +yPixel = this.fixY(yPixel); +this.cur2Dy.yPixel0 = this.cur2Dy.yPixel1 = yPixel; +this.setCurrentSubSpectrum(this.imageView.toSubspectrumIndex(yPixel)); +return true; +}if (widget === this.cur2Dx0 || widget === this.cur2Dx1) { +return false; +}if (widget === this.pin1Dx0 || widget === this.pin1Dx1 || widget === this.pin1Dx01) { +xPixel = this.fixX(xPixel); +widget.setX(this.toX0(xPixel), xPixel); +if (widget === this.pin1Dx01) { +var dp = xPixel - (Clazz.doubleToInt((this.pin1Dx0.xPixel0 + this.pin1Dx1.xPixel0) / 2)); +var dp1 = (dp < 0 ? dp : dp); +var dp2 = (dp < 0 ? dp : dp); +xPixel = this.pin1Dx0.xPixel0 + dp2; +var xPixel1 = this.pin1Dx1.xPixel0 + dp1; +if (dp == 0 || this.fixX(xPixel) != xPixel || this.fixX(xPixel1) != xPixel1) return true; +this.pin1Dx0.setX(this.toX0(xPixel), xPixel); +this.pin1Dx1.setX(this.toX0(xPixel1), xPixel1); +}this.doZoom(this.pin1Dx0.getXVal(), 0, this.pin1Dx1.getXVal(), 0, true, false, false, true, false); +return true; +}if (widget === this.pin1Dy0 || widget === this.pin1Dy1 || widget === this.pin1Dy01) { +yPixel = this.fixY(yPixel); +widget.setY(this.toY0(yPixel), yPixel); +if (widget === this.pin1Dy01) { +var dp = yPixel - Clazz.doubleToInt((this.pin1Dy0.yPixel0 + this.pin1Dy1.yPixel0) / 2) + 1; +yPixel = this.pin1Dy0.yPixel0 + dp; +var yPixel1 = this.pin1Dy1.yPixel0 + dp; +var y0 = this.toY0(yPixel); +var y1 = this.toY0(yPixel1); +if (Math.min(y0, y1) == this.getScale().minY || Math.max(y0, y1) == this.getScale().maxY) return true; +this.pin1Dy0.setY(y0, yPixel); +this.pin1Dy1.setY(y1, yPixel1); +}this.doZoom(0, this.pin1Dy0.getYVal(), 0, this.pin1Dy1.getYVal(), this.imageView == null, this.imageView == null, false, false, false); +return true; +}if (widget === this.pin2Dx0 || widget === this.pin2Dx1 || widget === this.pin2Dx01) { +xPixel = this.imageView.fixX(xPixel); +widget.setX(this.imageView.toX0(xPixel), xPixel); +if (widget === this.pin2Dx01) { +var dp = xPixel - Clazz.doubleToInt((this.pin2Dx0.xPixel0 + this.pin2Dx1.xPixel0) / 2) + 1; +xPixel = this.pin2Dx0.xPixel0 + dp; +var xPixel1 = this.pin2Dx1.xPixel0 + dp; +if (this.imageView.fixX(xPixel) != xPixel || this.imageView.fixX(xPixel1) != xPixel1) return true; +this.pin2Dx0.setX(this.imageView.toX0(xPixel), xPixel); +this.pin2Dx1.setX(this.imageView.toX0(xPixel1), xPixel1); +}if (!JSV.common.GraphSet.isGoodEvent(this.pin2Dx0, this.pin2Dx1, true)) { +this.reset2D(true); +return true; +}this.imageView.setView0(this.pin2Dx0.xPixel0, this.pin2Dy0.yPixel0, this.pin2Dx1.xPixel0, this.pin2Dy1.yPixel0); +this.doZoom(this.pin2Dx0.getXVal(), this.getScale().minY, this.pin2Dx1.getXVal(), this.getScale().maxY, false, false, false, true, false); +return true; +}if (widget === this.pin2Dy0 || widget === this.pin2Dy1 || widget === this.pin2Dy01) { +yPixel = this.fixY(yPixel); +widget.setY(this.imageView.toSubspectrumIndex(yPixel), yPixel); +if (widget === this.pin2Dy01) { +var dp = yPixel - Clazz.doubleToInt((this.pin2Dy0.yPixel0 + this.pin2Dy1.yPixel0) / 2) + 1; +yPixel = this.pin2Dy0.yPixel0 + dp; +var yPixel1 = this.pin2Dy1.yPixel0 + dp; +if (yPixel != this.fixY(yPixel) || yPixel1 != this.fixY(yPixel1)) return true; +this.pin2Dy0.setY(this.imageView.toSubspectrumIndex(yPixel), yPixel); +this.pin2Dy1.setY(this.imageView.toSubspectrumIndex(yPixel1), yPixel1); +}if (!JSV.common.GraphSet.isGoodEvent(this.pin2Dy0, this.pin2Dy1, false)) { +this.reset2D(false); +return true; +}this.imageView.setView0(this.pin2Dx0.xPixel0, this.pin2Dy0.yPixel0, this.pin2Dx1.xPixel1, this.pin2Dy1.yPixel1); +return true; +}return false; +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "clearIntegrals", +function(){ +this.checkIntegral(NaN, 0, false); +}); +Clazz.defineMethod(c$, "clearMeasurements", +function(){ +this.removeDialog(this.getFixedSelectedSpectrumIndex(), JSV.common.Annotation.AType.Measurements); +}); +c$.createGraphSetsAndSetLinkMode = Clazz.defineMethod(c$, "createGraphSetsAndSetLinkMode", +function(pd, jsvp, spectra, startIndex, endIndex, linkMode){ +var graphSets = new JU.Lst(); +for (var i = 0; i < spectra.size(); i++) { +var spec = spectra.get(i); +var graphSet = (linkMode === JSV.common.PanelData.LinkMode.NONE ? JSV.common.GraphSet.findCompatibleGraphSet(graphSets, spec) : null); +if (graphSet == null) graphSets.addLast(graphSet = new JSV.common.GraphSet(jsvp.getPanelData())); +graphSet.addSpec(spec); +} +JSV.common.GraphSet.setFractionalPositions(pd, graphSets, linkMode); +for (var i = graphSets.size(); --i >= 0; ) { +graphSets.get(i).initGraphSet(startIndex, endIndex); +JU.Logger.info("JSVGraphSet " + (i + 1) + " nSpectra = " + graphSets.get(i).nSpectra); +} +return graphSets; +}, "JSV.common.PanelData,JSV.api.JSVPanel,JU.Lst,~N,~N,JSV.common.PanelData.LinkMode"); +Clazz.defineMethod(c$, "drawGraphSet", +function(gMain, gFront, gBack, width, height, left, right, top, bottom, isResized, taintedAll, pointsOnly){ +this.zoomEnabled = this.pd.getBoolean(JSV.common.ScriptToken.ENABLEZOOM); +this.height = height * this.pd.scalingFactor; +this.width = width * this.pd.scalingFactor; +this.left = left * this.pd.scalingFactor; +this.right = right * this.pd.scalingFactor; +this.top = top * this.pd.scalingFactor; +this.bottom = bottom * this.pd.scalingFactor; +this.$haveSelectedSpectrum = false; +this.selectedSpectrumIntegrals = null; +this.selectedSpectrumMeasurements = null; +if (!this.pd.isPrinting && this.widgets != null) for (var j = 0; j < this.widgets.length; j++) if (this.widgets[j] != null) this.widgets[j].isVisible = false; + +for (var iSplit = 0; iSplit < this.nSplit; iSplit++) { +this.setPositionForFrame(iSplit); +this.drawAll(gMain, gFront, gBack, iSplit, isResized || this.nSplit > 1, taintedAll, pointsOnly); +} +this.setPositionForFrame(this.nSplit > 1 ? this.pd.currentSplitPoint : 0); +if (this.pd.isPrinting) return; +}, "~O,~O,~O,~N,~N,~N,~N,~N,~N,~B,~B,~B"); +Clazz.defineMethod(c$, "escapeKeyPressed", +function(isDEL){ +if (this.zoomBox1D != null) this.zoomBox1D.xPixel0 = this.zoomBox1D.xPixel1 = 0; +if (this.zoomBox2D != null) this.zoomBox2D.xPixel0 = this.zoomBox2D.xPixel1 = 0; +if (!this.inPlotMove) return; +if (this.pendingMeasurement != null) { +this.pendingMeasurement = null; +return; +}this.pd.thisWidget = null; +this.pendingMeasurement = null; +if (this.selectedSpectrumMeasurements != null && this.selectedMeasurement != null) { +if (isDEL) this.selectedSpectrumMeasurements.clear(this.getScale().minXOnScale, this.getScale().maxXOnScale); + else this.selectedSpectrumMeasurements.removeObj(this.selectedMeasurement); +this.selectedMeasurement = null; +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}if (this.selectedSpectrumIntegrals != null && this.selectedIntegral != null) { +if (isDEL) this.selectedSpectrumIntegrals.clear(this.getScale().minXOnScale, this.getScale().maxXOnScale); + else this.selectedSpectrumIntegrals.removeObj(this.selectedIntegral); +this.selectedIntegral = null; +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +}}, "~B"); +c$.findGraphSet = Clazz.defineMethod(c$, "findGraphSet", +function(graphSets, xPixel, yPixel){ +for (var i = graphSets.size(); --i >= 0; ) if (graphSets.get(i).hasPoint(xPixel, yPixel)) return graphSets.get(i); + +return null; +}, "JU.Lst,~N,~N"); +Clazz.defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +var pi2 = null; +for (var i = 0; i < this.spectra.size(); i++) if ((pi2 = (this.spectra.get(i)).findMatchingPeakInfo(pi)) != null) break; + +return pi2; +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "getCurrentSpectrumIndex", +function(){ +return (this.nSpectra == 1 ? 0 : this.iSpectrumSelected); +}); +Clazz.defineMethod(c$, "getSelectedIntegral", +function(){ +return this.selectedIntegral; +}); +Clazz.defineMethod(c$, "getShowAnnotation", +function(type, i){ +var id = this.getDialog(type, i); +return (id != null && id.getState()); +}, "JSV.common.Annotation.AType,~N"); +Clazz.defineMethod(c$, "hasFileLoaded", +function(filePath){ +for (var i = this.spectra.size(); --i >= 0; ) if (this.spectra.get(i).getFilePathForwardSlash().equals(filePath)) return true; + +return false; +}, "~S"); +Clazz.defineMethod(c$, "haveSelectedSpectrum", +function(){ +return this.$haveSelectedSpectrum; +}); +Clazz.defineMethod(c$, "mouseClickedEvent", +function(xPixel, yPixel, clickCount, isControlDown){ +this.selectedMeasurement = null; +this.selectedIntegral = null; +var isNextClick = this.nextClickForSetPeak; +this.nextClickForSetPeak = null; +if (this.checkArrowUpDownClick(xPixel, yPixel) || this.checkArrowLeftRightClick(xPixel, yPixel)) return; +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +if (this.isSplitWidget(xPixel, yPixel)) { +this.splitStack(this.nSplit == 1); +return; +}if (this.isCloserWidget(xPixel, yPixel)) { +this.pd.closeSpectrum(); +return; +}var pw = this.getPinSelected(xPixel, yPixel); +if (pw != null) { +this.setWidgetValueByUser(pw); +return; +}var is2D = this.is2dClick(xPixel, yPixel); +if (clickCount == 2 && this.iSpectrumClicked == -1 && this.iPreviousSpectrumClicked >= 0) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +}if (!is2D && isControlDown) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, -3); +} else if (this.iSpectrumClicked >= 0) { +this.processPendingMeasurement(xPixel, yPixel, 3); +}return; +}this.lastXMax = NaN; +if (clickCount == 2) { +if (is2D) { +if (this.sticky2Dcursor) { +this.addAnnotation(this.getAnnotation(this.imageView.toX(xPixel), this.imageView.toSubspectrumIndex(yPixel), this.pd.coordStr, false, true, 5, 5), true); +}this.sticky2Dcursor = true; +this.set2DCrossHairs(xPixel, yPixel); +return; +}if (this.isInTopBar(xPixel, yPixel)) { +this.doZoom(this.toX0(this.xPixel0), 0, this.toX0(this.xPixel1), 0, true, false, false, true, true); +} else if (this.isInRightBar(xPixel, yPixel)) { +this.doZoom(this.getScale().minXOnScale, this.viewList.get(0).getScale().minYOnScale, this.getScale().maxXOnScale, this.viewList.get(0).getScale().maxYOnScale, true, true, false, false, false); +} else if (this.isInTopBar2D(xPixel, yPixel)) { +this.reset2D(true); +} else if (this.isInRightBar2D(xPixel, yPixel)) { +this.reset2D(false); +} else if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, -2); +} else if (this.iSpectrumClicked >= 0) { +this.processPendingMeasurement(xPixel, yPixel, 2); +}return; +}if (is2D) { +if (this.annotations != null) { +var xy = new JSV.common.Coordinate().set(this.imageView.toX(xPixel), this.imageView.toSubspectrumIndex(yPixel)); +var a = this.findAnnotation2D(xy); +if (a != null && this.setAnnotationText(a)) { +return; +}}if (clickCount == 1) this.sticky2Dcursor = false; +this.set2DCrossHairs(xPixel, yPixel); +return; +}if (this.isInPlotRegion(xPixel, yPixel)) { +if (this.selectedSpectrumIntegrals != null && this.checkIntegralNormalizationClick(xPixel, yPixel)) return; +if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, 1); +return; +}this.setCoordClicked(xPixel, this.toX(xPixel), this.toY(yPixel)); +this.updateDialog(JSV.common.Annotation.AType.PeakList, -1); +if (isNextClick != null) { +this.nextClickForSetPeak = isNextClick; +this.shiftSpectrum(4, NaN, NaN); +this.nextClickForSetPeak = null; +return; +}} else { +this.setCoordClicked(0, NaN, 0); +}this.pd.notifyPeakPickedListeners(null); +}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "is2dClick", +function(xPixel, yPixel){ +return (this.imageView != null && xPixel == this.imageView.fixX(xPixel) && yPixel == this.fixY(yPixel)); +}, "~N,~N"); +Clazz.defineMethod(c$, "updateDialog", +function(type, iSpec){ +var ad = this.getDialog(type, iSpec); +if (ad == null || !this.isVisible(ad)) return; +var xRange = this.toX(this.xPixel1) - this.toX(this.xPixel0); +var yOffset = (this.getSpectrum().isInverted() ? this.yPixel1 - this.pd.mouseY : this.pd.mouseY - this.yPixel0); +(ad).update(this.pd.coordClicked, xRange, yOffset); +}, "JSV.common.Annotation.AType,~N"); +Clazz.defineMethod(c$, "isVisible", +function(ad){ +return ad != null && (ad.isDialog() && ad.isVisible()); +}, "JSV.api.AnnotationData"); +Clazz.defineMethod(c$, "mousePressedEvent", +function(xPixel, yPixel, clickCount){ +this.checkWidgetEvent(xPixel, yPixel, true); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "mouseReleasedEvent", +function(xPixel, yPixel){ +if (this.pendingMeasurement != null) { +if (Math.abs(this.toPixelX(this.pendingMeasurement.getXVal()) - xPixel) < 2) this.pendingMeasurement = null; +this.processPendingMeasurement(xPixel, yPixel, -2); +this.setToolTipForPixels(xPixel, yPixel); +return; +}if (this.pd.integralShiftMode != 0) { +this.pd.integralShiftMode = 0; +this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0; +return; +}if (this.iSpectrumMovedTo >= 0) this.setScale(this.iSpectrumMovedTo); +var thisWidget = this.pd.thisWidget; +if (this.pd.isIntegralDrag) { +if (JSV.common.GraphSet.isGoodEvent(this.zoomBox1D, null, true)) { +this.checkIntegral(this.toX(this.zoomBox1D.xPixel0), this.toX(this.zoomBox1D.xPixel1), true); +}this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0 = 0; +this.pendingIntegral = null; +this.pd.isIntegralDrag = false; +} else if (thisWidget === this.zoomBox2D) { +if (!JSV.common.GraphSet.isGoodEvent(this.zoomBox2D, null, true)) return; +this.imageView.setZoom(this.zoomBox2D.xPixel0, this.zoomBox2D.yPixel0, this.zoomBox2D.xPixel1, this.zoomBox2D.yPixel1); +this.zoomBox2D.xPixel1 = this.zoomBox2D.xPixel0; +this.doZoom(this.imageView.toX(this.imageView.xPixel0), this.getScale().minY, this.imageView.toX(this.imageView.xPixel0 + this.imageView.xPixels - 1), this.getScale().maxY, false, false, false, true, true); +} else if (thisWidget === this.zoomBox1D) { +if (!JSV.common.GraphSet.isGoodEvent(this.zoomBox1D, null, true)) return; +var x1 = this.zoomBox1D.xPixel1; +var doY = (this.pd.shiftPressed); +this.doZoom(this.toX(this.zoomBox1D.xPixel0), (doY ? this.toY(this.zoomBox1D.yPixel0) : 0), this.toX(x1), (doY ? this.toY(this.zoomBox1D.yPixel1) : 0), true, doY, true, true, true); +this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0; +} else if (thisWidget === this.pin1Dx0 || thisWidget === this.pin1Dx1 || thisWidget === this.cur2Dx0 || thisWidget === this.cur2Dx1) { +this.addCurrentZoom(); +}}, "~N,~N"); +Clazz.defineMethod(c$, "mouseMovedEvent", +function(xPixel, yPixel){ +if (this.nSpectra > 1) { +var iFrame = this.getSplitPoint(yPixel); +this.setPositionForFrame(iFrame); +this.setSpectrumMovedTo(this.nSplit > 1 ? iFrame : this.iSpectrumSelected); +if (this.iSpectrumMovedTo >= 0) this.setScale(this.iSpectrumMovedTo); +}this.inPlotMove = this.isInPlotRegion(xPixel, yPixel); +this.setXPixelMovedTo(1.7976931348623157E308, 1.7976931348623157E308, (this.inPlotMove ? xPixel : -1), -1); +if (this.inPlotMove) { +this.xValueMovedTo = this.toX(this.xPixelMovedTo); +this.yValueMovedTo = this.getSpectrum().getYValueAt(this.xValueMovedTo); +}if (this.pd.integralShiftMode != 0) { +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +var xy = (ad.getData()).getXYCoords(); +var y = xy[this.pd.integralShiftMode > 0 ? xy.length - 1 : 0].getYVal(); +(ad.getData()).shiftY(this.pd.integralShiftMode, this.toPixelYint(y) + yPixel - (this.pd.integralShiftMode > 0 ? this.yPixelPlot1 : this.yPixelPlot0), this.yPixel0, this.yPixels); +} else if (this.pd.isIntegralDrag) { +} else if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, 0); +this.setToolTipForPixels(xPixel, yPixel); +} else { +this.selectedMeasurement = (this.inPlotMove && this.selectedSpectrumMeasurements != null ? this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 0) : null); +this.selectedIntegral = null; +if (this.inPlotMove && this.selectedSpectrumIntegrals != null && this.selectedMeasurement == null) { +this.selectedIntegral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, 0); +if (this.selectedIntegral == null) this.selectedIntegral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, -5); +}this.setToolTipForPixels(xPixel, yPixel); +if (this.imageView == null) { +this.piMouseOver = null; +var iSpec = (this.nSplit > 1 ? this.iSpectrumMovedTo : this.iSpectrumClicked); +if (!this.isDrawNoSpectra() && iSpec >= 0) { +var spec = this.spectra.get(iSpec); +if (spec.getPeakList() != null) { +this.coordTemp.setXVal(this.toX(xPixel)); +this.coordTemp.setYVal(this.toY(yPixel)); +this.piMouseOver = spec.findPeakByCoord(xPixel, this.coordTemp); +}}} else { +if (!this.pd.display1D && this.sticky2Dcursor) { +this.set2DCrossHairs(xPixel, yPixel); +}}}}, "~N,~N"); +Clazz.defineMethod(c$, "nextView", +function(){ +if (this.currentZoomIndex + 1 < this.viewList.size()) this.setZoomTo(this.currentZoomIndex + 1); +}); +Clazz.defineMethod(c$, "previousView", +function(){ +if (this.currentZoomIndex > 0) this.setZoomTo(this.currentZoomIndex - 1); +}); +Clazz.defineMethod(c$, "resetView", +function(){ +this.setZoomTo(0); +}); +Clazz.defineMethod(c$, "removeAllHighlights", +function(){ +this.removeAllHighlights(null); +}); +Clazz.defineMethod(c$, "removeHighlight", +function(index){ +this.highlights.removeItemAt(index); +}, "~N"); +Clazz.defineMethod(c$, "removeHighlight", +function(x1, x2){ +for (var i = this.highlights.size(); --i >= 0; ) { +var h = this.highlights.get(i); +if (h.x1 == x1 && h.x2 == x2) this.highlights.removeItemAt(i); +} +}, "~N,~N"); +Clazz.defineMethod(c$, "scaleYBy", +function(factor){ +if (this.imageView == null && !this.zoomEnabled) return; +this.viewData.scaleSpectrum(this.imageView == null ? this.iSpectrumSelected : -2, factor); +if (this.imageView != null) { +this.update2dImage(false); +this.resetPinsFromView(); +}this.pd.refresh(); +}, "~N"); +Clazz.defineMethod(c$, "selectSpectrum", +function(filePath, type, model){ +var haveFound = false; +for (var i = this.spectra.size(); --i >= 0; ) if ((filePath == null || this.getSpectrumAt(i).getFilePathForwardSlash().equals(filePath)) && (this.getSpectrumAt(i).matchesPeakTypeModel(type, model))) { +this.setSpectrumSelected(i); +if (this.nSplit > 1) this.splitStack(true); +haveFound = true; +} +if (this.nSpectra > 1 && !haveFound && this.iSpectrumSelected >= 0 && !this.pd.isCurrentGraphSet(this)) this.setSpectrumSelected(-2147483648); +return haveFound; +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +var pi; +for (var i = this.spectra.size(); --i >= 0; ) if ((pi = this.getSpectrumAt(i).selectPeakByFileIndex(filePath, index, atomKey)) != null) return pi; + +return null; +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "setSelected", +function(i){ +if (i < 0) { +this.bsSelected.clearAll(); +this.setSpectrumClicked(-1); +return; +}this.bsSelected.set(i); +this.setSpectrumClicked((this.bsSelected.cardinality() == 1 ? i : -1)); +if (this.nSplit > 1 && i >= 0) this.pd.currentSplitPoint = i; +}, "~N"); +Clazz.defineMethod(c$, "setSelectedIntegral", +function(val){ +var spec = this.selectedIntegral.getSpectrum(); +this.getIntegrationGraph(this.getSpectrumIndex(spec)).setSelectedIntegral(this.selectedIntegral, val); +}, "~N"); +Clazz.defineMethod(c$, "setShowAnnotation", +function(type, tfToggle){ +var id = this.getDialog(type, -1); +if (id == null) { +if (tfToggle != null && tfToggle !== Boolean.TRUE) return; +if (type === JSV.common.Annotation.AType.PeakList || type === JSV.common.Annotation.AType.Integration || type === JSV.common.Annotation.AType.Measurements) this.pd.showDialog(type); +return; +}if (tfToggle == null) { +if (id.isDialog()) (id).setVisible(!(id).isVisible()); + else this.pd.showDialog(type); +return; +}var isON = tfToggle.booleanValue(); +if (isON) id.setState(isON); +if (isON || id.isDialog()) this.pd.showDialog(type); +if (!isON && id.isDialog()) (id).setVisible(false); +}, "JSV.common.Annotation.AType,Boolean"); +Clazz.defineMethod(c$, "checkIntegralParams", +function(parameters, value){ +var spec = this.getSpectrum(); +if (!spec.canIntegrate() || this.reversePlot) return false; +var iSpec = this.getFixedSelectedSpectrumIndex(); +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (value == null) return true; +switch (JSV.common.IntegralData.IntMode.getMode(value.toUpperCase())) { +case JSV.common.IntegralData.IntMode.NA: +return false; +case JSV.common.IntegralData.IntMode.CLEAR: +this.integrate(iSpec, null); +this.integrate(iSpec, parameters); +break; +case JSV.common.IntegralData.IntMode.ON: +if (ad == null) this.integrate(iSpec, parameters); + else ad.setState(true); +break; +case JSV.common.IntegralData.IntMode.OFF: +if (ad != null) ad.setState(false); +break; +case JSV.common.IntegralData.IntMode.TOGGLE: +if (ad == null) this.integrate(iSpec, parameters); + else ad.setState(!ad.getState()); +break; +case JSV.common.IntegralData.IntMode.AUTO: +if (ad == null) { +this.checkIntegralParams(parameters, "ON"); +ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +}if (ad != null) (ad.getData()).autoIntegrate(); +break; +case JSV.common.IntegralData.IntMode.LIST: +this.pd.showDialog(JSV.common.Annotation.AType.Integration); +break; +case JSV.common.IntegralData.IntMode.MARK: +if (ad == null) { +this.checkIntegralParams(parameters, "ON"); +ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +}if (ad != null) (ad.getData()).addMarks(value.substring(4).trim()); +break; +case JSV.common.IntegralData.IntMode.MIN: +if (ad != null) { +try { +var val = Double.parseDouble(JSV.common.ScriptToken.getTokens(value).get(1)); +(ad.getData()).setMinimumIntegral(val); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}break; +case JSV.common.IntegralData.IntMode.UPDATE: +if (ad != null) (ad.getData()).update(parameters); +} +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +return true; +}, "JSV.common.Parameters,~S"); +Clazz.defineMethod(c$, "setSpectrum", +function(iSpec, fromSplit){ +if (fromSplit && this.nSplit > 1) { +if (this.nSplit > 1) this.setSpectrumClicked(iSpec); +} else { +this.setSpectrumClicked(iSpec); +this.stackSelected = false; +this.showAllStacked = false; +}if (iSpec >= 0) this.dialogsToFront(this.getSpectrum()); +}, "~N,~B"); +Clazz.defineMethod(c$, "setSpectrumJDX", +function(spec){ +var pt = this.getFixedSelectedSpectrumIndex(); +this.spectra.removeItemAt(pt); +this.spectra.add(pt, spec); +this.pendingMeasurement = null; +this.clearViews(); +this.viewData.newSpectrum(this.spectra); +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "setZoom", +function(x1, y1, x2, y2){ +this.setZoomTo(0); +if (x1 == 0 && x2 == 0 && y1 == 0 && y2 == 0) { +this.newPins(); +this.imageView = null; +x1 = this.getScale().minXOnScale; +x2 = this.getScale().maxXOnScale; +} else { +this.doZoom(x1, y1, x2, y2, true, (y1 != y2), false, true, true); +}}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "shiftSpectrum", +function(mode, xOld, xNew){ +var spec = this.getSpectrum(); +if (!spec.isNMR() || !spec.is1D()) return false; +var ok = null; +var dx = 0; +if (xNew == 1.7976931348623157E308) { +dx = -spec.addSpecShift(0); +} else { +switch (mode) { +case 3: +dx = xNew; +break; +case 1: +case 2: +this.nextClickMode = mode; +if (Double.isNaN(xOld)) { +ok = this.pd.getInput("Click on " + (mode == 1 ? "or beside a peak to set its chemical shift" : "the spectrum set the chemical shift at that point") + (xNew == -2147483648 ? "" : " to " + xNew) + ".", "Set Reference " + (mode == 1 ? "for Peak" : "at Point"), "OK"); +this.nextClickForSetPeak = ("OK".equals(ok) ? Double.$valueOf(xNew) : null); +return false; +}this.nextClickForSetPeak = null; +case 4: +if (this.nextClickForSetPeak != null) { +xNew = this.nextClickForSetPeak.doubleValue(); +this.nextClickForSetPeak = null; +}if (Double.isNaN(xOld)) xOld = this.lastClickX; +if (this.nextClickMode == 1) xOld = this.getNearestPeak(spec, xOld, this.toY(this.pd.mouseY)); +if (Double.isNaN(xNew)) try { +var s = this.pd.getInput("New chemical shift (set blank to reset)", "Set Reference", JU.DF.formatDecimalDbl(xOld, this.getScale().precision[0])).trim(); +if (s.length == 0) xNew = xOld - spec.addSpecShift(0); + else xNew = Double.parseDouble(s); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +dx = xNew - xOld; +break; +} +}if (dx == 0) return false; +spec.addSpecShift(dx); +if (this.annotations != null) for (var i = this.annotations.size(); --i >= 0; ) if (this.annotations.get(i).spec === spec) this.annotations.get(i).addSpecShift(dx); + +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getValue().getSpectrum() === spec) e.getValue().setSpecShift(dx); + +this.getScale().addSpecShift(dx); +if (!Double.isNaN(this.lastClickX)) this.lastClickX += dx; +this.updateDialogs(); +this.doZoom(0, this.getScale().minYOnScale, 0, this.getScale().maxYOnScale, true, true, false, true, false); +this.pd.setTaintedAll(); +this.pd.repaint(); +return true; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "toPeak", +function(istep){ +istep *= (this.drawXAxisLeftToRight ? 1 : -1); +if (Double.isNaN(this.lastClickX)) this.lastClickX = this.lastPixelX = 0; +var spec = this.getSpectrum(); +var coord = this.setCoordClicked(this.lastPixelX, this.lastClickX, 0); +var iPeak = spec.setNextPeak(coord, istep); +if (iPeak < 0) return; +var peak = spec.getPeakList().get(iPeak); +spec.setSelectedPeak(peak); +this.setCoordClicked(peak.getXPixel(), peak.getX(), 0); +this.pd.notifyPeakPickedListeners( new JSV.common.PeakPickEvent(this.jsvp, this.pd.coordClicked, peak)); +}, "~N"); +Clazz.defineMethod(c$, "scaleSelectedBy", +function(f){ +for (var i = this.bsSelected.nextSetBit(0); i >= 0; i = this.bsSelected.nextSetBit(i + 1)) this.viewData.scaleSpectrum(i, f); + +}, "~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "gs: " + this.nSpectra + " " + this.spectra + " " + this.spectra.get(0).getFilePath(); +}); +Clazz.defineMethod(c$, "setXPointer", +function(spec, x){ +if (spec != null) this.setSpectrumClicked(this.getSpectrumIndex(spec)); +this.xValueMovedTo = this.lastClickX = x; +this.lastPixelX = this.toPixelX(x); +this.setXPixelMovedTo(x, 1.7976931348623157E308, 0, 0); +this.yValueMovedTo = NaN; +}, "JSV.common.Spectrum,~N"); +Clazz.defineMethod(c$, "setXPointer2", +function(spec, x){ +if (spec != null) this.setSpectrumClicked(this.getSpectrumIndex(spec)); +this.setXPixelMovedTo(1.7976931348623157E308, x, 0, 0); +}, "JSV.common.Spectrum,~N"); +Clazz.defineMethod(c$, "hasCurrentMeasurement", +function(type){ +return ((type === JSV.common.Annotation.AType.Integration ? this.selectedSpectrumIntegrals : this.selectedSpectrumMeasurements) != null); +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "getDialog", +function(type, iSpec){ +if (iSpec == -1) iSpec = this.getCurrentSpectrumIndex(); +return (this.dialogs == null || iSpec < 0 ? null : this.dialogs.get(type + "_" + iSpec)); +}, "JSV.common.Annotation.AType,~N"); +Clazz.defineMethod(c$, "removeDialog", +function(iSpec, type){ +if (this.dialogs != null && iSpec >= 0) this.dialogs.remove(type + "_" + iSpec); +}, "~N,JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "addDialog", +function(iSpec, type, dialog){ +if (this.dialogs == null) this.dialogs = new java.util.Hashtable(); +var key = type + "_" + iSpec; +dialog.setGraphSetKey(key); +this.dialogs.put(key, dialog); +return dialog; +}, "~N,JSV.common.Annotation.AType,JSV.api.AnnotationData"); +Clazz.defineMethod(c$, "removeDialog", +function(dialog){ +var key = dialog.getGraphSetKey(); +this.dialogs.remove(key); +var data = dialog.getData(); +if (data != null) this.dialogs.put(key, data); +}, "JSV.dialog.JSVDialog"); +Clazz.defineMethod(c$, "getPeakListing", +function(iSpec, p, forceNew){ +if (iSpec < 0) iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) return null; +var dialog = this.getDialog(JSV.common.Annotation.AType.PeakList, -1); +if (dialog == null) { +if (!forceNew) return null; +this.addDialog(iSpec, JSV.common.Annotation.AType.PeakList, dialog = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.getSpectrum())); +}(dialog.getData()).setPeakList(p, -2147483648, this.viewData.getScale()); +if (dialog.isDialog()) (dialog).setFields(); +return dialog.getData(); +}, "~N,JSV.common.Parameters,~B"); +Clazz.defineMethod(c$, "setPeakListing", +function(tfToggle){ +var dialog = this.getDialog(JSV.common.Annotation.AType.PeakList, -1); +var ad = (dialog != null && dialog.isDialog() ? dialog : null); +var isON = (tfToggle == null ? ad == null || !ad.isVisible() : tfToggle.booleanValue()); +if (isON) { +this.pd.showDialog(JSV.common.Annotation.AType.PeakList); +} else { +if (dialog.isDialog()) (dialog).setVisible(false); +}}, "Boolean"); +Clazz.defineMethod(c$, "haveIntegralDisplayed", +function(i){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, i); +return (ad != null && ad.getState()); +}, "~N"); +Clazz.defineMethod(c$, "getIntegrationGraph", +function(i){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, i); +return (ad == null ? null : ad.getData()); +}, "~N"); +Clazz.defineMethod(c$, "setIntegrationRatios", +function(value){ +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (this.aIntegrationRatios == null) this.aIntegrationRatios = new Array(this.nSpectra); +this.aIntegrationRatios[iSpec] = JSV.common.IntegralData.getIntegrationRatiosFromString(this.getSpectrum(), value); +}, "~S"); +Clazz.defineMethod(c$, "getIntegrationRatios", +function(i){ +return (this.aIntegrationRatios == null ? null : this.aIntegrationRatios[i]); +}, "~N"); +Clazz.defineMethod(c$, "integrate", +function(iSpec, parameters){ +var spec = this.getSpectrumAt(iSpec); +if (parameters == null || !spec.canIntegrate()) { +this.removeDialog(iSpec, JSV.common.Annotation.AType.Integration); +return false; +}this.addDialog(iSpec, JSV.common.Annotation.AType.Integration, new JSV.common.IntegralData(spec, parameters)); +return true; +}, "~N,JSV.common.Parameters"); +Clazz.defineMethod(c$, "getIntegration", +function(iSpec, p, forceNew){ +if (iSpec < 0) iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) return null; +var dialog = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (dialog == null) { +if (!forceNew) return null; +dialog = this.addDialog(iSpec, JSV.common.Annotation.AType.Integration, new JSV.common.IntegralData(this.getSpectrum(), p)); +}return dialog.getData(); +}, "~N,JSV.common.Parameters,~B"); +Clazz.defineMethod(c$, "getMeasurementInfo", +function(type, iSpec){ +var md; +switch (type) { +case JSV.common.Annotation.AType.PeakList: +md = this.getPeakListing(iSpec, null, false); +break; +case JSV.common.Annotation.AType.Integration: +md = this.getIntegration(iSpec, null, false); +break; +default: +return null; +} +if (md == null) return null; +var info = new java.util.Hashtable(); +md.getInfo(info); +return info; +}, "JSV.common.Annotation.AType,~N"); +Clazz.defineMethod(c$, "getInfo", +function(key, iSpec){ +var spectraInfo = new java.util.Hashtable(); +if ("".equals(key)) { +spectraInfo.put("KEYS", "viewInfo spectra"); +} else if ("viewInfo".equalsIgnoreCase(key)) return this.getScale().getInfo(spectraInfo); +var specInfo = new JU.Lst(); +spectraInfo.put("spectra", specInfo); +for (var i = 0; i < this.nSpectra; i++) { +if (iSpec >= 0 && i != iSpec) continue; +var spec = this.spectra.get(i); +var info = spec.getInfo(key); +if (iSpec >= 0 && key != null && (info.size() == 2 || key.equalsIgnoreCase("id"))) { +if (info.size() == 2) info.remove("id"); +return info; +}JSV.common.Parameters.putInfo(key, info, "type", spec.getDataType()); +JSV.common.Parameters.putInfo(key, info, "titleLabel", spec.getTitleLabel()); +JSV.common.Parameters.putInfo(key, info, "filePath", spec.getFilePath().$replace('\\', '/')); +JSV.common.Parameters.putInfo(key, info, "PeakList", (JSV.common.Parameters.isMatch(key, "PeakList") ? this.getMeasurementInfo(JSV.common.Annotation.AType.PeakList, i) : null)); +JSV.common.Parameters.putInfo(key, info, "Integration", (JSV.common.Parameters.isMatch(key, "Integration") ? this.getMeasurementInfo(JSV.common.Annotation.AType.Integration, i) : null)); +if (iSpec >= 0) return info; +specInfo.addLast(info); +} +return spectraInfo; +}, "~S,~N"); +Clazz.defineMethod(c$, "getTitle", +function(forPrinting){ +return (this.nSpectra == 1 || this.iSpectrumSelected >= 0 && (!forPrinting || this.nSplit == 1) ? this.getSpectrum().getTitle() : null); +}, "~B"); +Clazz.defineMethod(c$, "getCurrentView", +function(){ +this.setScale(this.getFixedSelectedSpectrumIndex()); +return this.viewData.getScale(); +}); +Clazz.defineMethod(c$, "set2DXY", +function(x, y, isLocked){ +var p; +if (this.gs2dLinkedX != null) { +p = this.toPixelX(x); +if (p != this.fixX(p)) { +p = -2147483648; +x = 1.7976931348623157E308; +}this.cur1D2x1.setX(x, p); +}if (this.gs2dLinkedY != null) { +p = this.toPixelX(y); +if (p != this.fixX(p)) { +p = -2147483648; +y = 1.7976931348623157E308; +}this.cur1D2x2.setX(y, p); +}this.cur1D2Locked = isLocked; +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "dialogsToFront", +function(spec){ +if (this.dialogs == null) return; +if (spec == null) spec = this.getSpectrum(); +for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (this.isVisible(ad)) { +if (spec == null) (ad).setVisible(true); + else (ad).setFocus(ad.getSpectrum() === spec); +}} +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "setPlotColors", +function(oColors){ +var colors = oColors; +if (colors.length > this.nSpectra) { +var tmpPlotColors = new Array(this.nSpectra); +System.arraycopy(colors, 0, tmpPlotColors, 0, this.nSpectra); +colors = tmpPlotColors; +} else if (this.nSpectra > colors.length) { +var tmpPlotColors = new Array(this.nSpectra); +var numAdditionColors = this.nSpectra - colors.length; +System.arraycopy(colors, 0, tmpPlotColors, 0, colors.length); +for (var i = 0, j = colors.length; i < numAdditionColors; i++, j++) tmpPlotColors[j] = this.generateRandomColor(); + +colors = tmpPlotColors; +}this.plotColors = colors; +}, "~O"); +Clazz.defineMethod(c$, "disposeImage", +function(){ +{ +if (this.image2D != null) +this.image2D.parentNode.removeChild(this.image2D); +}this.image2D = null; +this.jsvp = null; +this.pd = null; +this.highlights = null; +this.plotColors = null; +}); +Clazz.defineMethod(c$, "generateRandomColor", +function(){ +while (true) { +var red = Clazz.doubleToInt(Math.random() * 255); +var green = Clazz.doubleToInt(Math.random() * 255); +var blue = Clazz.doubleToInt(Math.random() * 255); +var randomColor = this.g2d.getColor3(red, green, blue); +if (randomColor.getRGB() != 0) return randomColor; +} +}); +Clazz.defineMethod(c$, "setPlotColor0", +function(oColor){ +this.plotColors[0] = oColor; +}, "~O"); +Clazz.defineMethod(c$, "getPlotColor", +function(index){ +if (index >= this.plotColors.length) return null; +return this.plotColors[index]; +}, "~N"); +Clazz.defineMethod(c$, "setColorFromToken", +function(og, whatColor){ +if (whatColor != null) this.g2d.setGraphicsColor(og, whatColor === JSV.common.ScriptToken.PLOTCOLOR ? this.plotColors[0] : this.pd.getColor(whatColor)); +}, "~O,JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "setPlotColor", +function(og, i){ +var c; +switch (i) { +case -3: +c = JSV.common.GraphSet.veryLightGrey; +break; +case -2: +c = this.pd.BLACK; +break; +case -1: +c = this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +break; +default: +c = this.plotColors[i]; +break; +} +this.g2d.setGraphicsColor(og, c); +}, "~O,~N"); +Clazz.defineMethod(c$, "draw2DImage", +function(){ +if (this.imageView != null) this.g2d.drawGrayScaleImage(this.gMain, this.image2D, this.imageView.xPixel0, this.imageView.yPixel0, this.imageView.xPixel0 + this.imageView.xPixels - 1, this.imageView.yPixel0 + this.imageView.yPixels - 1, this.imageView.xView1, this.imageView.yView1, this.imageView.xView2, this.imageView.yView2); +}); +Clazz.defineMethod(c$, "get2DImage", +function(spec0){ +this.imageView = new JSV.common.ImageView(); +this.imageView.set(this.viewList.get(0).getScale()); +if (!this.update2dImage(true)) return false; +this.imageView.resetZoom(); +this.sticky2Dcursor = true; +return true; +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "update2dImage", +function(isCreation){ +this.imageView.set(this.viewData.getScale()); +var spec = this.getSpectrumAt(0); +var buffer = this.imageView.get2dBuffer(spec, !isCreation); +if (buffer == null) { +this.image2D = null; +this.imageView = null; +return false; +}if (isCreation) { +buffer = this.imageView.adjustView(spec, this.viewData); +this.imageView.resetView(); +}this.image2D = this.g2d.newGrayScaleImage(this.gMain, this.image2D, this.imageView.imageWidth, this.imageView.imageHeight, buffer); +this.setImageWindow(); +return true; +}, "~B"); +Clazz.defineMethod(c$, "getAnnotation", +function(x, y, text, isPixels, is2d, offsetX, offsetY){ +return new JSV.common.ColoredAnnotation().setCA(x, y, this.getSpectrum(), text, this.pd.BLACK, isPixels, is2d, offsetX, offsetY); +}, "~N,~N,~S,~B,~B,~N,~N"); +Clazz.defineMethod(c$, "getAnnotation", +function(args, lastAnnotation){ +return JSV.common.Annotation.getColoredAnnotation(this.g2d, this.getSpectrum(), args, lastAnnotation); +}, "JU.Lst,JSV.common.Annotation"); +Clazz.defineMethod(c$, "fillBox", +function(g, x0, y0, x1, y1, whatColor){ +this.setColorFromToken(g, whatColor); +this.g2d.fillRect(g, Math.min(x0, x1), Math.min(y0, y1), Math.abs(x0 - x1), Math.abs(y0 - y1)); +}, "~O,~N,~N,~N,~N,JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "drawBox", +function(g, x0, y0, x1, y1, whatColor){ +this.setColorFromToken(g, whatColor); +this.g2d.drawRect(g, Math.min(x0, x1), Math.min(y0, y1), Math.abs(x0 - x1) - 1, Math.abs(y0 - y1) - 1); +}, "~O,~N,~N,~N,~N,JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "drawHandle", +function(g, x, y, size, outlineOnly){ +if (outlineOnly) this.g2d.drawRect(g, x - size, y - size, size * 2, size * 2); + else this.g2d.fillRect(g, x - size, y - size, size * 2 + 1, size * 2 + 1); +}, "~O,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "setCurrentBoxColor", +function(g){ +this.g2d.setGraphicsColor(g, this.pd.BLACK); +}, "~O"); +Clazz.defineMethod(c$, "fillArrow", +function(g, type, x, y, doFill){ +var f = 1; +switch (type) { +case 1: +case 3: +f = -1; +break; +} +var axPoints = Clazz.newIntArray(-1, [x - 5, x - 5, x + 5, x + 5, x + 8, x, x - 8]); +var ayPoints = Clazz.newIntArray(-1, [y + 5 * f, y - f, y - f, y + 5 * f, y + 5 * f, y + 10 * f, y + 5 * f]); +switch (type) { +case 1: +case 2: +if (doFill) this.g2d.fillPolygon(g, ayPoints, axPoints, 7); + else this.g2d.drawPolygon(g, ayPoints, axPoints, 7); +break; +case 3: +case 4: +if (doFill) this.g2d.fillPolygon(g, axPoints, ayPoints, 7); + else this.g2d.drawPolygon(g, axPoints, ayPoints, 7); +} +}, "~O,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "fillCircle", +function(g, x, y, doFill){ +if (doFill) this.g2d.fillCircle(g, x - 4, y - 4, 8); + else this.g2d.drawCircle(g, x - 4, y - 4, 8); +}, "~O,~N,~N,~B"); +Clazz.defineMethod(c$, "setAnnotationColor", +function(g, note, whatColor){ +if (whatColor != null) { +this.setColorFromToken(g, whatColor); +return; +}var color = null; +if (Clazz.instanceOf(note,"JSV.common.ColoredAnnotation")) color = (note).getColor(); +if (color == null) color = this.pd.BLACK; +this.g2d.setGraphicsColor(g, color); +}, "~O,JSV.common.Annotation,JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "setSolutionColor", +function(vi, isNone, asFitted){ +for (var i = 0; i < this.nSpectra; i++) { +var spec = this.spectra.get(i); +var color = (isNone || !spec.canShowSolutionColor() ? -1 : vi.getColour(spec, asFitted)); +spec.setFillColor(color == -1 ? null : this.pd.vwr.parameters.getColor1(color)); +} +}, "JSV.api.VisibleInterface,~B,~B"); +Clazz.defineMethod(c$, "setIRMode", +function(mode, type){ +for (var i = 0; i < this.nSpectra; i++) { +var spec = this.spectra.get(i); +if (!spec.dataType.equals(type)) continue; +var spec2 = JSV.common.Spectrum.taConvert(spec, mode); +if (spec2 !== spec) this.pd.setSpecForIRMode(spec2); +} +}, "JSV.common.Spectrum.IRMode,~S"); +Clazz.defineMethod(c$, "getSpectrumCount", +function(){ +return 0; +}); +Clazz.defineMethod(c$, "invertYAxis", +function(){ +this.viewList.get(0).init(null, 0, 0, this.getSpectrum().invertYAxis().isContinuous()); +this.resetViewCompletely(); +}); +c$.$GraphSet$Highlight$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.x1 = 0; +this.x2 = 0; +this.color = null; +this.spectrum = null; +Clazz.instantialize(this, arguments);}, JSV.common.GraphSet, "Highlight", null); +Clazz.makeConstructor(c$, +function(x1, x2, spec, color){ +this.x1 = x1; +this.x2 = x2; +this.color = color; +this.spectrum = spec; +}, "~N,~N,JSV.common.Spectrum,javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "highlight " + this.x1 + " " + this.x2 + " " + this.spectrum; +}); +Clazz.overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz.instanceOf(obj,"JSV.common.GraphSet.Highlight"))) return false; +var hl = obj; +return ((hl.x1 == this.x1) && (hl.x2 == this.x2)); +}, "~O"); +/*eoif4*/})(); +}; +c$.RT2 = Math.sqrt(2.0); +c$.veryLightGrey = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ImageView.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ImageView.js new file mode 100755 index 000000000000..605b9291983b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ImageView.js @@ -0,0 +1,252 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.XYScaleConverter"], "JSV.common.ImageView", ["JSV.common.Coordinate", "$.ScaleData"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf2d = null; +this.grayFactorLast = 0; +this.averageGray = 0; +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.imageWidth = 0; +this.imageHeight = 0; +this.xPixels = 0; +this.yPixels = 0; +this.xPixelZoom1 = 0; +this.yPixelZoom1 = 0; +this.xPixelZoom2 = 0; +this.yPixelZoom2 = 0; +this.xView1 = 0; +this.yView1 = 0; +this.xView2 = 0; +this.yView2 = 0; +this.minX = NaN; +this.maxX = 0; +this.minY = 0; +this.maxY = 0; +this.minZ = 0; +this.maxZ = 0; +this.scaleData = null; +Clazz.instantialize(this, arguments);}, JSV.common, "ImageView", null, JSV.common.XYScaleConverter); +Clazz.defineMethod(c$, "set", +function(view){ +if (Double.isNaN(this.minX)) { +this.minX = view.minX; +this.maxX = view.maxX; +}this.minZ = view.minY; +this.maxZ = view.maxY; +this.scaleData = new JSV.common.ScaleData(); +}, "JSV.common.ScaleData"); +Clazz.defineMethod(c$, "setZoom", +function(xPixel1, yPixel1, xPixel2, yPixel2){ +this.xPixelZoom1 = Math.min(xPixel1, xPixel2); +this.yPixelZoom1 = Math.min(yPixel1, yPixel2); +this.xPixelZoom2 = Math.max(xPixel1, xPixel2); +this.yPixelZoom2 = Math.max(yPixel1, yPixel2); +this.setView(); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setXY0", +function(spec, xPixel, yPixel){ +this.xPixel0 = xPixel; +this.yPixel0 = yPixel; +this.xPixel1 = this.xPixel0 + this.xPixels - 1; +this.yPixel1 = this.yPixel0 + this.yPixels - 1; +this.setMinMaxY(spec); +}, "JSV.common.Spectrum,~N,~N"); +Clazz.defineMethod(c$, "setPixelWidthHeight", +function(xPixels, yPixels){ +this.xPixels = xPixels; +this.yPixels = yPixels; +}, "~N,~N"); +Clazz.defineMethod(c$, "resetView", +function(){ +this.xView1 = 0; +this.yView1 = 0; +this.xView2 = this.imageWidth - 1; +this.yView2 = this.imageHeight - 1; +}); +Clazz.defineMethod(c$, "setView", +function(){ +if (this.xPixelZoom1 == 0) this.resetZoom(); +var x1 = this.toImageX(this.xPixelZoom1); +var y1 = this.toImageY(this.yPixelZoom1); +var x2 = this.toImageX(this.xPixelZoom2); +var y2 = this.toImageY(this.yPixelZoom2); +this.xView1 = Math.min(x1, x2); +this.yView1 = Math.min(y1, y2); +this.xView2 = Math.max(x1, x2); +this.yView2 = Math.max(y1, y2); +this.setScaleData(); +this.resetZoom(); +}); +Clazz.defineMethod(c$, "resetZoom", +function(){ +this.xPixelZoom1 = this.xPixel0; +this.yPixelZoom1 = this.yPixel0; +this.xPixelZoom2 = this.xPixel1; +this.yPixelZoom2 = this.yPixel1; +}); +Clazz.defineMethod(c$, "toImageX", +function(xPixel){ +return this.xView1 + Clazz.doubleToInt(Math.floor((xPixel - this.xPixel0) / (this.xPixels - 1.0) * (this.xView2 - this.xView1))); +}, "~N"); +Clazz.defineMethod(c$, "toImageY", +function(yPixel){ +return this.yView1 + Clazz.doubleToInt(Math.floor((yPixel - this.yPixel0) / (this.yPixels - 1.0) * (this.yView2 - this.yView1))); +}, "~N"); +Clazz.defineMethod(c$, "toImageX0", +function(xPixel){ +return JSV.common.Coordinate.intoRange(Clazz.doubleToInt((1.0 * xPixel - this.xPixel0) / (this.xPixels - 1) * (this.imageWidth - 1)), 0, this.imageWidth - 1); +}, "~N"); +Clazz.defineMethod(c$, "toImageY0", +function(yPixel){ +return JSV.common.Coordinate.intoRange(Clazz.doubleToInt((1.0 * yPixel - this.yPixel0) / (this.yPixels - 1) * (this.imageHeight - 1)), 0, this.imageHeight - 1); +}, "~N"); +Clazz.defineMethod(c$, "isXWithinRange", +function(xPixel){ +return (xPixel >= this.xPixel0 - 5 && xPixel < this.xPixel0 + this.xPixels + 5); +}, "~N"); +Clazz.defineMethod(c$, "toSubspectrumIndex", +function(yPixel){ +return JSV.common.Coordinate.intoRange(this.imageHeight - 1 - this.toImageY(yPixel), 0, this.imageHeight - 1); +}, "~N"); +Clazz.defineMethod(c$, "toX0", +function(xPixel){ +return this.maxX + (this.minX - this.maxX) * (this.fixX(xPixel) - this.xPixel0) / (this.xPixels - 1); +}, "~N"); +Clazz.defineMethod(c$, "toPixelX0", +function(x){ +return this.xPixel1 - Clazz.doubleToInt((x - this.minX) / (this.maxX - this.minX) * (this.xPixels - 1)); +}, "~N"); +Clazz.defineMethod(c$, "toPixelY0", +function(ysub){ +return this.yPixel1 - Clazz.doubleToInt(ysub / (this.imageHeight - 1) * (this.yPixels - 1)); +}, "~N"); +Clazz.defineMethod(c$, "subIndexToPixelY", +function(subIndex){ +var f = 1.0 * (this.imageHeight - 1 - subIndex - this.yView1) / (this.yView2 - this.yView1); +var y = this.yPixel0 + Clazz.doubleToInt(f * (this.yPixels - 1)); +return y; +}, "~N"); +Clazz.defineMethod(c$, "fixSubIndex", +function(subIndex){ +return JSV.common.Coordinate.intoRange(subIndex, this.imageHeight - 1 - this.yView2, this.imageHeight - 1 - this.yView1); +}, "~N"); +Clazz.defineMethod(c$, "setView0", +function(xp1, yp1, xp2, yp2){ +var x1 = this.toImageX0(xp1); +var y1 = this.toImageY0(yp1); +var x2 = this.toImageX0(xp2); +var y2 = this.toImageY0(yp2); +this.xView1 = Math.min(x1, x2); +this.yView1 = Math.min(y1, y2); +this.xView2 = Math.max(x1, x2); +this.yView2 = Math.max(y1, y2); +this.resetZoom(); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "get2dBuffer", +function(spec, forceNew){ +var subSpectra = spec.getSubSpectra(); +if (subSpectra == null || !subSpectra.get(0).isContinuous()) return null; +var xyCoords = spec.getXYCoords(); +var nSpec = subSpectra.size(); +this.imageWidth = xyCoords.length; +this.imageHeight = nSpec; +var grayFactor = 255 / (this.maxZ - this.minZ); +if (!forceNew && this.buf2d != null && grayFactor == this.grayFactorLast) return this.buf2d; +this.grayFactorLast = grayFactor; +var pt = this.imageWidth * this.imageHeight; +var buf = (this.buf2d == null || this.buf2d.length != pt ? Clazz.newIntArray (pt, 0) : this.buf2d); +var totalGray = 0; +for (var i = 0; i < nSpec; i++) { +var points = subSpectra.get(i).xyCoords; +if (points.length != xyCoords.length) return null; +for (var j = 0; j < xyCoords.length; j++) { +var y = points[j].getYVal(); +var gray = 255 - JSV.common.Coordinate.intoRange(Clazz.doubleToInt((y - this.minZ) * grayFactor), 0, 255); +buf[--pt] = gray; +totalGray += gray; +} +} +this.averageGray = (1 - totalGray / (this.imageWidth * this.imageHeight) / 255); +System.out.println("Average gray = " + this.averageGray); +return (this.buf2d = buf); +}, "JSV.common.Spectrum,~B"); +Clazz.defineMethod(c$, "adjustView", +function(spec, view){ +var i = 0; +var isLow = false; +while (((isLow = (this.averageGray < 0.05)) || this.averageGray > 0.3) && i++ < 10) { +view.scaleSpectrum(-2, isLow ? 2 : 0.5); +this.set(view.getScale()); +this.get2dBuffer(spec, false); +} +return this.buf2d; +}, "JSV.common.Spectrum,JSV.common.ViewData"); +Clazz.defineMethod(c$, "getBuffer", +function(){ +return this.buf2d; +}); +Clazz.defineMethod(c$, "setMinMaxY", +function(spec){ +var subSpectra = spec.getSubSpectra(); +var spec0 = subSpectra.get(0); +this.maxY = spec0.getY2D(); +this.minY = subSpectra.get(subSpectra.size() - 1).getY2D(); +if (spec0.y2DUnits.equalsIgnoreCase("Hz")) { +this.maxY /= spec0.freq2dY; +this.minY /= spec0.freq2dY; +}this.setScaleData(); +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "setScaleData", +function(){ +this.scaleData.minY = this.minY; +this.scaleData.maxY = this.maxY; +this.scaleData.setYScale(this.toY(this.yPixel0), this.toY(this.yPixel1), false, false); +}); +Clazz.overrideMethod(c$, "fixX", +function(xPixel){ +return (xPixel < this.xPixel0 ? this.xPixel0 : xPixel > this.xPixel1 ? this.xPixel1 : xPixel); +}, "~N"); +Clazz.overrideMethod(c$, "fixY", +function(yPixel){ +return JSV.common.Coordinate.intoRange(yPixel, this.yPixel0, this.yPixel1); +}, "~N"); +Clazz.overrideMethod(c$, "getScale", +function(){ +return this.scaleData; +}); +Clazz.overrideMethod(c$, "toX", +function(xPixel){ +return this.maxX + (this.minX - this.maxX) * this.toImageX(this.fixX(xPixel)) / (this.imageWidth - 1); +}, "~N"); +Clazz.overrideMethod(c$, "toY", +function(yPixel){ +var isub = this.toSubspectrumIndex(yPixel); +return this.maxY + (this.minY - this.maxY) * isub / (this.imageHeight - 1); +}, "~N"); +Clazz.overrideMethod(c$, "toPixelX", +function(x){ +var x0 = this.toX(this.xPixel0); +var x1 = this.toX(this.xPixel1); +return this.xPixel0 + Clazz.doubleToInt((x - x0) / (x1 - x0) * (this.xPixels - 1)); +}, "~N"); +Clazz.overrideMethod(c$, "toPixelY", +function(y){ +var f = (y - this.scaleData.minYOnScale) / (this.scaleData.maxYOnScale - this.scaleData.minYOnScale); +return Clazz.doubleToInt(this.yPixel0 + f * this.yPixels); +}, "~N"); +Clazz.overrideMethod(c$, "getXPixels", +function(){ +return this.xPixels; +}); +Clazz.overrideMethod(c$, "getYPixels", +function(){ +return this.yPixels; +}); +Clazz.overrideMethod(c$, "getXPixel0", +function(){ +return this.xPixel0; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/Integral.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Integral.js new file mode 100755 index 000000000000..6031dd118972 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Integral.js @@ -0,0 +1,12 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.Measurement"], "JSV.common.Integral", null, function(){ +var c$ = Clazz.declareType(JSV.common, "Integral", JSV.common.Measurement); +Clazz.defineMethod(c$, "setInt", +function(x1, y1, spec, value, x2, y2){ +this.setA(x1, y1, spec, "", false, false, 0, 6); +this.setPt2(x2, y2); +this.setValue(value); +return this; +}, "~N,~N,JSV.common.Spectrum,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/IntegralComparator.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/IntegralComparator.js new file mode 100755 index 000000000000..01176112703c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/IntegralComparator.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("JSV.common"); +(function(){ +var c$ = Clazz.declareType(JSV.common, "IntegralComparator", null, java.util.Comparator); +Clazz.overrideMethod(c$, "compare", +function(m1, m2){ +return (m1.getXVal() < m2.getXVal() ? -1 : m1.getXVal() > m2.getXVal() ? 1 : 0); +}, "JSV.common.Measurement,JSV.common.Measurement"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/IntegralData.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/IntegralData.js new file mode 100755 index 000000000000..e66e3b32650f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/IntegralData.js @@ -0,0 +1,341 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.lang.Enum", "JSV.common.MeasurementData", "$.IntegralComparator"], "JSV.common.IntegralData", ["java.util.Collections", "$.StringTokenizer", "JU.AU", "$.BS", "$.DF", "$.Lst", "$.PT", "JSV.common.Annotation", "$.Coordinate", "$.Integral", "$.ScriptToken"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.percentMinY = 0; +this.percentOffset = 0; +this.intRange = 0; +this.normalizationFactor = 1; +this.percentRange = 0; +this.offset = 0; +this.integralTotal = 0; +this.haveRegions = false; +this.xyCoords = null; +Clazz.instantialize(this, arguments);}, JSV.common, "IntegralData", JSV.common.MeasurementData); +Clazz.makeConstructor(c$, +function(integralMinY, integralOffset, integralRange, spec){ +Clazz.superConstructor(this, JSV.common.IntegralData, [JSV.common.Annotation.AType.Integration, spec]); +this.percentMinY = integralMinY; +this.percentOffset = integralOffset; +this.percentRange = integralRange; +this.calculateIntegral(); +}, "~N,~N,~N,JSV.common.Spectrum"); +Clazz.makeConstructor(c$, +function(spec, p){ +Clazz.superConstructor(this, JSV.common.IntegralData, [JSV.common.Annotation.AType.Integration, spec]); +if (p == null) { +this.autoIntegrate(); +return; +}this.percentOffset = p.integralOffset; +this.percentRange = p.integralRange; +this.calculateIntegral(); +}, "JSV.common.Spectrum,JSV.common.Parameters"); +Clazz.defineMethod(c$, "getPercentMinimumY", +function(){ +return this.percentMinY; +}); +Clazz.defineMethod(c$, "getPercentOffset", +function(){ +return this.percentOffset; +}); +Clazz.defineMethod(c$, "getIntegralFactor", +function(){ +return this.intRange; +}); +Clazz.defineMethod(c$, "update", +function(parameters){ +this.update(parameters.integralMinY, parameters.integralOffset, parameters.integralRange); +}, "JSV.common.Parameters"); +Clazz.defineMethod(c$, "update", +function(integralMinY, integralOffset, integralRange){ +var percentRange0 = this.percentRange; +if (integralRange <= 0 || integralRange == this.percentRange && integralOffset == this.percentOffset) return; +this.percentOffset = integralOffset; +this.percentRange = integralRange; +this.checkRange(); +var intRangeNew = integralRange / 100 / this.integralTotal; +var offsetNew = integralOffset / 100; +for (var i = 0; i < this.xyCoords.length; i++) { +var y = this.xyCoords[i].getYVal(); +y = (y - this.offset) / this.intRange; +this.xyCoords[i].setYVal(y * intRangeNew + offsetNew); +} +if (this.normalizationFactor != 1) this.normalizationFactor *= percentRange0 / integralRange; +if (this.haveRegions) { +for (var i = this.size(); --i >= 0; ) { +var ir = this.get(i); +var y1 = this.getYValueAt(ir.getXVal()); +var y2 = this.getYValueAt(ir.getXVal2()); +ir.setYVal(y1); +ir.setYVal2(y2); +ir.setValue(Math.abs(y2 - y1) * 100 * this.normalizationFactor); +} +}this.intRange = intRangeNew; +this.offset = offsetNew; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getYValueAt", +function(x){ +return JSV.common.Coordinate.getYValueAt(this.xyCoords, x); +}, "~N"); +Clazz.defineMethod(c$, "addIntegralRegion", +function(x1, x2){ +if (Double.isNaN(x1)) { +this.haveRegions = false; +this.clear(); +return null; +}if (Double.isNaN(x2)) { +return this.splitIntegral(x1); +}if (x1 == x2) return null; +if (x1 < x2) { +this.clear(x1, x2); +return null; +}var y1 = this.getYValueAt(x1); +var y2 = this.getYValueAt(x2); +this.haveRegions = true; +var $in = new JSV.common.Integral().setInt(x1, y1, this.spec, Math.abs(y2 - y1) * 100 * this.normalizationFactor, x2, y2); +this.clear(x1, x2); +this.addLast($in); +java.util.Collections.sort(this, JSV.common.IntegralData.c); +return $in; +}, "~N,~N"); +Clazz.defineMethod(c$, "splitIntegral", +function(x){ +var i = this.find(x); +if (i < 0) return null; +var integral = this.removeItemAt(i); +var x0 = integral.getXVal(); +var x2 = integral.getXVal2(); +this.addIntegralRegion(x0, x); +return this.addIntegralRegion(x, x2); +}, "~N"); +Clazz.overrideMethod(c$, "setSpecShift", +function(dx){ +JSV.common.Coordinate.shiftX(this.xyCoords, dx); +for (var i = this.size(); --i >= 1; ) { +this.get(i).addSpecShift(dx); +} +}, "~N"); +Clazz.defineMethod(c$, "addMarks", +function(ppms){ +ppms = JU.PT.rep(" " + ppms, ",", " "); +ppms = JU.PT.rep(ppms, " -", " #"); +ppms = JU.PT.rep(ppms, "--", "-#"); +ppms = ppms.$replace('-', '^'); +ppms = ppms.$replace('#', '-'); +var tokens = JSV.common.ScriptToken.getTokens(ppms); +for (var i = 0; i < tokens.size(); i++) { +try { +var s = tokens.get(i); +var norm = 0; +var pt = s.indexOf('^'); +if (pt < 0) continue; +var pt2 = s.indexOf(':'); +if (pt2 > pt) { +norm = Double.$valueOf(s.substring(pt2 + 1).trim()).doubleValue(); +s = s.substring(0, pt2).trim(); +}var x2 = Double.$valueOf(s.substring(0, pt).trim()).doubleValue(); +var x1 = Double.$valueOf(s.substring(pt + 1).trim()).doubleValue(); +if (x1 == 0 && x2 == 0) this.clear(); +if (x1 == x2) continue; +var m = this.addIntegralRegion(Math.max(x1, x2), Math.min(x1, x2)); +if (m != null && norm > 0) this.setSelectedIntegral(m, norm); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +continue; +} else { +throw e; +} +} +} +}, "~S"); +Clazz.defineMethod(c$, "calculateIntegral", +function(){ +var specXyCoords = this.spec.getXYCoords(); +this.xyCoords = new Array(specXyCoords.length); +this.integralTotal = 0; +this.checkRange(); +var minY = 1E100; +for (var i = 0; i < specXyCoords.length; i++) { +var y = specXyCoords[i].getYVal(); +if (y < minY && y >= 0) minY = y; +} +var minI = 1E100; +var maxI = -1.0E100; +for (var i = 0; i < specXyCoords.length; i++) { +var y = specXyCoords[i].getYVal(); +this.integralTotal += (y - minY); +if (this.integralTotal < minI) minI = this.integralTotal; +if (this.integralTotal > maxI) maxI = this.integralTotal; +} +this.integralTotal = maxI - minI; +this.intRange = (this.percentRange / 100) / this.integralTotal; +this.offset = (this.percentOffset / 100); +var integral = 0; +for (var i = specXyCoords.length; --i >= 0; ) { +var y = specXyCoords[i].getYVal(); +integral += (y - minY); +this.xyCoords[i] = new JSV.common.Coordinate().set(specXyCoords[i].getXVal(), integral * this.intRange + this.offset); +} +return this.xyCoords; +}); +Clazz.defineMethod(c$, "checkRange", +function(){ +this.percentOffset = Math.max(5, this.percentOffset); +this.percentRange = Math.max(10, this.percentRange); +}); +c$.getIntegrationRatiosFromString = Clazz.defineMethod(c$, "getIntegrationRatiosFromString", +function(spec, key_values){ +var ratios = new JU.Lst(); +var allParamTokens = new java.util.StringTokenizer(key_values, ","); +while (allParamTokens.hasMoreTokens()) { +var token = allParamTokens.nextToken(); +var eachParam = new java.util.StringTokenizer(token, ":"); +var ratio = new JSV.common.Annotation().setA(Double.parseDouble(eachParam.nextToken()), 0.0, spec, eachParam.nextToken(), true, false, 0, 0); +ratios.addLast(ratio); +} +return ratios; +}, "JSV.common.Spectrum,~S"); +Clazz.defineMethod(c$, "getXYCoords", +function(){ +return this.xyCoords; +}); +Clazz.defineMethod(c$, "getPercentYValueAt", +function(x){ +return this.getYValueAt(x) * 100; +}, "~N"); +Clazz.defineMethod(c$, "dispose", +function(){ +this.spec = null; +this.xyCoords = null; +}); +Clazz.defineMethod(c$, "setSelectedIntegral", +function(integral, val){ +var val0 = integral.getValue(); +var factor = (val <= 0 ? 1 / this.normalizationFactor : val / val0); +this.factorAllIntegrals(factor, val <= 0); +}, "JSV.common.Measurement,~N"); +Clazz.defineMethod(c$, "factorAllIntegrals", +function(factor, isReset){ +for (var i = 0; i < this.size(); i++) { +var m = this.get(i); +m.setValue(factor * m.getValue()); +} +this.normalizationFactor = (isReset ? 1 : this.normalizationFactor * factor); +}, "~N,~B"); +Clazz.defineMethod(c$, "remove", +function(i){ +return this.removeItemAt(i); +}, "~N"); +Clazz.defineMethod(c$, "getBitSet", +function(){ +var bs = JU.BS.newN(this.xyCoords.length); +if (this.size() == 0) { +bs.setBits(0, this.xyCoords.length); +return bs; +}for (var i = this.size(); --i >= 0; ) { +var m = this.get(i); +var x1 = JSV.common.Coordinate.getNearestIndexForX(this.xyCoords, m.getXVal()); +var x2 = JSV.common.Coordinate.getNearestIndexForX(this.xyCoords, m.getXVal2()); +bs.setBits(Math.min(x1, x2), Math.max(x1, x2)); +} +return bs; +}); +Clazz.overrideMethod(c$, "getMeasurementListArray", +function(units){ +var data = new Array(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; ) data[pt++] = Clazz.newArray(-1, ["" + pt, JU.DF.formatDecimalDbl(this.get(i).getXVal(), 2), JU.DF.formatDecimalDbl(this.get(i).getXVal2(), 2), this.get(i).text]); + +return data; +}, "~S"); +Clazz.overrideMethod(c$, "getMeasurementListArrayReal", +function(units){ +var data = JU.AU.newDouble2(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; pt++) data[pt] = Clazz.newDoubleArray(-1, [this.get(i).getXVal(), this.get(i).getXVal2(), this.get(i).getValue()]); + +return data; +}, "~S"); +Clazz.overrideMethod(c$, "getDataHeader", +function(){ +return JSV.common.IntegralData.$HEADER; +}); +Clazz.defineMethod(c$, "shiftY", +function(yOld, yNew, yPixel0, yPixels){ +var pt = Clazz.doubleToInt(100.0 * (yPixel0 + yPixels - yNew) / yPixels); +if (yOld < 0) pt -= this.percentOffset; +if (yOld < 0) { +this.update(0, this.percentOffset, pt); +} else { +this.update(0, pt, this.percentRange); +}}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "autoIntegrate", +function(){ +if (this.xyCoords == null) this.calculateIntegral(); +if (this.xyCoords.length == 0) return; +this.clear(); +var iStart = -1; +var cutoff = 0.0001; +var nCount = 0; +var nMin = 20; +var y0 = this.xyCoords[this.xyCoords.length - 1].getYVal(); +for (var i = this.xyCoords.length - 1; --i >= 0; ) { +var y = this.xyCoords[i].getYVal(); +nCount++; +if ((y - y0) < cutoff && iStart < 0) { +if (y < y0) { +y0 = y; +nCount = 0; +}continue; +}if (iStart < 0) { +iStart = i + Math.min(nCount, nMin); +y0 = y; +nCount = 0; +continue; +}if ((y - y0) < cutoff) { +if (nCount == 1) y0 = y; +if (nCount >= nMin) { +this.addIntegralRegion(this.xyCoords[iStart].getXVal(), this.xyCoords[i].getXVal()); +iStart = -1; +y0 = y; +nCount = 0; +}} else { +nCount = 0; +y0 = y; +}} +var nH = this.spec.getHydrogenCount(); +if (nH > 0) this.factorAllIntegrals(nH / this.percentRange, false); +}); +Clazz.defineMethod(c$, "getInfo", +function(info){ +info.put("offset", Double.$valueOf(this.myParams.integralOffset)); +info.put("range", Double.$valueOf(this.myParams.integralRange)); +info.put("normalizationFactor", Double.$valueOf(this.normalizationFactor)); +info.put("integralTotal", Double.$valueOf(this.integralTotal)); +Clazz.superCall(this, JSV.common.IntegralData, "getInfo", [info]); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setMinimumIntegral", +function(val){ +for (var i = this.size(); --i >= 0; ) if (this.get(i).getValue() < val) this.removeItemAt(i); + +}, "~N"); +/*if2*/;(function(){ +var c$ = Clazz.declareType(JSV.common.IntegralData, "IntMode", Enum); +c$.getMode = Clazz.defineMethod(c$, "getMode", +function(value){ +for (var mode, $mode = 0, $$mode = JSV.common.IntegralData.IntMode.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (value.startsWith(mode.name())) return mode; + +return JSV.common.IntegralData.IntMode.NA; +}, "~S"); +Clazz.defineEnumConstant(c$, "OFF", 0, []); +Clazz.defineEnumConstant(c$, "ON", 1, []); +Clazz.defineEnumConstant(c$, "TOGGLE", 2, []); +Clazz.defineEnumConstant(c$, "AUTO", 3, []); +Clazz.defineEnumConstant(c$, "LIST", 4, []); +Clazz.defineEnumConstant(c$, "MARK", 5, []); +Clazz.defineEnumConstant(c$, "MIN", 6, []); +Clazz.defineEnumConstant(c$, "UPDATE", 7, []); +Clazz.defineEnumConstant(c$, "CLEAR", 8, []); +Clazz.defineEnumConstant(c$, "NA", 9, []); +/*eoif2*/})(); +c$.c = new JSV.common.IntegralComparator(); +c$.$HEADER = Clazz.newArray(-1, ["peak", "start/ppm", "end/ppm", "value"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVFileManager.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVFileManager.js new file mode 100755 index 000000000000..7c507a94c027 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVFileManager.js @@ -0,0 +1,526 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.util.Hashtable"], "JSV.common.JSVFileManager", ["java.io.BufferedInputStream", "$.BufferedReader", "$.InputStreamReader", "$.StringReader", "java.net.URL", "JU.AU", "$.BS", "$.Encoding", "$.JSJSONParser", "$.P3", "$.PT", "$.SB", "JSV.common.JSVersion", "$.JSViewer", "JSV.exception.JSVException", "JU.Logger"], function(){ +var c$ = Clazz.declareType(JSV.common, "JSVFileManager", null); +Clazz.defineMethod(c$, "isApplet", +function(){ +return (JSV.common.JSVFileManager.appletDocumentBase != null); +}); +c$.getFileAsString = Clazz.defineMethod(c$, "getFileAsString", +function(name){ +if (name == null) return null; +var br; +var sb = new JU.SB(); +try { +br = JSV.common.JSVFileManager.getBufferedReaderFromName(name, null); +var line; +while ((line = br.readLine()) != null) { +sb.append(line); +sb.appendC('\n'); +} +br.close(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +return sb.toString(); +}, "~S"); +c$.getBufferedReaderForInputStream = Clazz.defineMethod(c$, "getBufferedReaderForInputStream", +function($in){ +try { +return new java.io.BufferedReader( new java.io.InputStreamReader($in, "UTF-8")); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.getBufferedReaderForStringOrBytes = Clazz.defineMethod(c$, "getBufferedReaderForStringOrBytes", +function(stringOrBytes){ +return (stringOrBytes == null ? null : new java.io.BufferedReader( new java.io.StringReader((typeof(stringOrBytes)=='string') ? stringOrBytes : String.instantialize(stringOrBytes)))); +}, "~O"); +c$.getBufferedReaderFromName = Clazz.defineMethod(c$, "getBufferedReaderFromName", +function(name, startCode){ +if (name == null) throw new JSV.exception.JSVException("Cannot find " + name); +JU.Logger.info("JSVFileManager getBufferedReaderFromName " + name); +var path = JSV.common.JSVFileManager.getFullPathName(name); +if (!path.equals(name)) JU.Logger.info("JSVFileManager getBufferedReaderFromName " + path); +return JSV.common.JSVFileManager.getUnzippedBufferedReaderFromName(path, startCode); +}, "~S,~S"); +c$.getFullPathName = Clazz.defineMethod(c$, "getFullPathName", +function(name){ +try { +if (JSV.common.JSVFileManager.appletDocumentBase == null) { +if (JSV.common.JSVFileManager.isURL(name)) { +var url = new java.net.URL(Clazz.castNullAs("java.net.URL"), name, null); +return url.toString(); +}return JSV.common.JSVFileManager.viewer.apiPlatform.newFile(name).getFullPath(); +}if (name.indexOf(":\\") == 1 || name.indexOf(":/") == 1) name = "file:///" + name; + else if (name.startsWith("cache://")) return name; +var url = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, name, null); +return url.toString(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException("Cannot create path for " + name); +} else { +throw e; +} +} +}, "~S"); +c$.isURL = Clazz.defineMethod(c$, "isURL", +function(name){ +for (var i = JSV.common.JSVFileManager.urlPrefixes.length; --i >= 0; ) if (name.startsWith(JSV.common.JSVFileManager.urlPrefixes[i])) return true; + +return false; +}, "~S"); +c$.urlTypeIndex = Clazz.defineMethod(c$, "urlTypeIndex", +function(name){ +for (var i = 0; i < JSV.common.JSVFileManager.urlPrefixes.length; ++i) { +if (name.startsWith(JSV.common.JSVFileManager.urlPrefixes[i])) { +return i; +}} +return -1; +}, "~S"); +c$.isLocal = Clazz.defineMethod(c$, "isLocal", +function(fileName){ +if (fileName == null) return false; +var itype = JSV.common.JSVFileManager.urlTypeIndex(fileName); +return (itype < 0 || itype == 4); +}, "~S"); +c$.getUnzippedBufferedReaderFromName = Clazz.defineMethod(c$, "getUnzippedBufferedReaderFromName", +function(name, startCode){ +var subFileList = null; +if (name.indexOf("|") >= 0) { +subFileList = JU.PT.split(name, "|"); +if (subFileList != null && subFileList.length > 0) name = subFileList[0]; +}if (name.startsWith("http://SIMULATION/")) return JSV.common.JSVFileManager.getSimulationReader(name); +try { +var ret = JSV.common.JSVFileManager.getInputStream(name, true, null); +if (Clazz.instanceOf(ret,"JU.SB") || (typeof(ret)=='string')) return new java.io.BufferedReader( new java.io.StringReader(ret.toString())); +if (JSV.common.JSVFileManager.isAB(ret)) return new java.io.BufferedReader( new java.io.StringReader( String.instantialize(ret))); +var bis = new java.io.BufferedInputStream(ret); +var $in = bis; +if (JSV.common.JSVFileManager.isGzip(bis)) $in = (JSV.common.JSViewer.getInterface("JSV.common.JSVZipUtil")).newGZIPInputStream($in); +return new java.io.BufferedReader( new java.io.InputStreamReader($in, "UTF-8")); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw e; +} else { +throw e; +} +} +}, "~S,~S"); +c$.getAbbrSimulationFileName = Clazz.defineMethod(c$, "getAbbrSimulationFileName", +function(name){ +var type = JSV.common.JSVFileManager.getSimulationType(name); +var filename = JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, true); +return filename; +}, "~S"); +c$.getAbbreviatedSimulationName = Clazz.defineMethod(c$, "getAbbreviatedSimulationName", +function(name, type, addProtocol){ +return (name.indexOf("MOL=") >= 0 ? (addProtocol ? "http://SIMULATION/" : "") + "MOL=" + JSV.common.JSVFileManager.getSimulationHash(name, type) : name); +}, "~S,~S,~B"); +c$.getSimulationHash = Clazz.defineMethod(c$, "getSimulationHash", +function(name, type){ +var code = type + Math.abs(name.substring(name.indexOf("V2000") + 1).hashCode()); +if (JU.Logger.debugging) System.out.println("JSVFileManager hash for " + name + " = " + code); +return code; +}, "~S,~S"); +c$.getSimulationFileData = Clazz.defineMethod(c$, "getSimulationFileData", +function(name, type){ +return JSV.common.JSVFileManager.cacheGet(name.startsWith("MOL=") ? name.substring(4) : JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, false)); +}, "~S,~S"); +c$.cachePut = Clazz.defineMethod(c$, "cachePut", +function(name, data){ +if (JU.Logger.debugging) JU.Logger.debug("JSVFileManager cachePut " + data + " for " + name); +if (data != null) JSV.common.JSVFileManager.htCorrelationCache.put(name, data); +}, "~S,~S"); +c$.cacheGet = Clazz.defineMethod(c$, "cacheGet", +function(key){ +var data = JSV.common.JSVFileManager.htCorrelationCache.get(key); +if (JU.Logger.debugging) JU.Logger.info("JSVFileManager cacheGet " + data + " for " + key); +return data; +}, "~S"); +c$.getSimulationReader = Clazz.defineMethod(c$, "getSimulationReader", +function(name){ +var data = JSV.common.JSVFileManager.cacheGet(name); +if (data == null) JSV.common.JSVFileManager.cachePut(name, data = JSV.common.JSVFileManager.getNMRSimulationJCampDX(name.substring("http://SIMULATION/".length))); +return JSV.common.JSVFileManager.getBufferedReaderForStringOrBytes(data); +}, "~S"); +c$.isAB = Clazz.defineMethod(c$, "isAB", +function(x){ +return JU.AU.isAB(x); +}, "~O"); +c$.isZipFile = Clazz.defineMethod(c$, "isZipFile", +function(is){ +try { +var abMagic = Clazz.newByteArray (4, 0); +is.mark(5); +var countRead = is.read(abMagic, 0, 4); +is.reset(); +return (countRead == 4 && abMagic[0] == 0x50 && abMagic[1] == 0x4B && abMagic[2] == 0x03 && abMagic[3] == 0x04); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.isGzip = Clazz.defineMethod(c$, "isGzip", +function(is){ +try { +var abMagic = Clazz.newByteArray (4, 0); +is.mark(5); +var countRead = is.read(abMagic, 0, 4); +is.reset(); +return (countRead == 4 && abMagic[0] == 0x1F && abMagic[1] == 0x8B); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.getStreamAsBytes = Clazz.defineMethod(c$, "getStreamAsBytes", +function(bis, out){ +try { +var buf = Clazz.newByteArray (1024, 0); +var bytes = (out == null ? Clazz.newByteArray (4096, 0) : null); +var len = 0; +var totalLen = 0; +while ((len = bis.read(buf, 0, 1024)) > 0) { +totalLen += len; +if (out == null) { +if (totalLen >= bytes.length) bytes = JU.AU.ensureLengthByte(bytes, totalLen * 2); +System.arraycopy(buf, 0, bytes, totalLen - len, len); +} else { +out.write(buf, 0, len); +}} +bis.close(); +if (out == null) { +return JU.AU.arrayCopyByte(bytes, totalLen); +}return totalLen + " bytes"; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.BufferedInputStream,JU.OC"); +c$.postByteArray = Clazz.defineMethod(c$, "postByteArray", +function(fileName, bytes){ +var ret = null; +try { +ret = JSV.common.JSVFileManager.getInputStream(fileName, false, bytes); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +ret = e.toString(); +} else { +throw e; +} +} +if ((typeof(ret)=='string')) return ret; +try { +ret = JSV.common.JSVFileManager.getStreamAsBytes(ret, null); +} catch (e) { +if (Clazz.exceptionOf(e,"JSV.exception.JSVException")){ +try { +(ret).close(); +} catch (e1) { +if (Clazz.exceptionOf(e1, Exception)){ +} else { +throw e1; +} +} +} else { +throw e; +} +} +return (ret == null ? "" : JSV.common.JSVFileManager.fixUTF(ret)); +}, "~S,~A"); +c$.getUTFEncoding = Clazz.defineMethod(c$, "getUTFEncoding", +function(bytes){ +if (bytes.length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) return JU.Encoding.UTF8; +if (bytes.length >= 4 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == 0xFE && bytes[3] == 0xFF) return JU.Encoding.UTF_32BE; +if (bytes.length >= 4 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0 && bytes[3] == 0) return JU.Encoding.UTF_32LE; +if (bytes.length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) return JU.Encoding.UTF_16LE; +if (bytes.length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) return JU.Encoding.UTF_16BE; +return JU.Encoding.NONE; +}, "~A"); +c$.fixUTF = Clazz.defineMethod(c$, "fixUTF", +function(bytes){ +var encoding = JSV.common.JSVFileManager.getUTFEncoding(bytes); +if (encoding !== JU.Encoding.NONE) try { +var s = String.instantialize(bytes, encoding.name().$replace('_', '-')); +switch (encoding) { +case JU.Encoding.UTF8: +case JU.Encoding.UTF_16BE: +case JU.Encoding.UTF_16LE: +s = s.substring(1); +break; +default: +break; +} +return s; +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +JU.Logger.error("fixUTF error " + e); +} else { +throw e; +} +} +return String.instantialize(bytes); +}, "~A"); +c$.getInputStream = Clazz.defineMethod(c$, "getInputStream", +function(name, showMsg, postBytes){ +var isURL = JSV.common.JSVFileManager.isURL(name); +var isApplet = (JSV.common.JSVFileManager.appletDocumentBase != null); +var $in = null; +var post = null; +var iurl; +if (isURL && (iurl = name.indexOf("?POST?")) >= 0) { +post = name.substring(iurl + 6); +name = name.substring(0, iurl); +}if (isApplet || isURL) { +var url; +try { +url = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, name, null); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException("Cannot read " + name); +} else { +throw e; +} +} +JU.Logger.info("JSVFileManager opening URL " + url + (post == null ? "" : " with POST of " + post.length + " bytes")); +$in = JSV.common.JSVFileManager.viewer.apiPlatform.getURLContents(url, postBytes, post, false); +} else { +if (showMsg) JU.Logger.info("JSVFileManager opening file " + name); +$in = JSV.common.JSVFileManager.viewer.apiPlatform.getBufferedFileInputStream(name); +}if ((typeof($in)=='string')) throw new JSV.exception.JSVException($in); +return $in; +}, "~S,~B,~A"); +c$.getNMRSimulationJCampDX = Clazz.defineMethod(c$, "getNMRSimulationJCampDX", +function(name){ +var pt = 0; +var molFile = null; +var type = JSV.common.JSVFileManager.getSimulationType(name); +if (name.startsWith(type)) name = name.substring(type.length + 1); +var isInline = name.startsWith("MOL="); +if (isInline) { +name = name.substring(4); +pt = name.indexOf("/n__Jmol"); +if (pt > 0) name = name.substring(0, pt) + JU.PT.rep(name.substring(pt), "/n", "\n"); +molFile = name = JU.PT.rep(name, "\\n", "\n"); +}var key = "" + JSV.common.JSVFileManager.getSimulationHash(name, type); +if (JU.Logger.debugging) JU.Logger.info("JSVFileManager type=" + type + " key=" + key + " name=" + name); +var jcamp = JSV.common.JSVFileManager.cacheGet(key); +if (jcamp != null) return jcamp; +var src = (isInline ? null : JU.PT.rep(JSV.common.JSVFileManager.nciResolver, "%FILE", JU.PT.escapeUrl(name))); +if (!isInline && (molFile = JSV.common.JSVFileManager.getFileAsString(src)) == null || molFile.indexOf("= 0) { +JU.Logger.error("no MOL data returned by NCI"); +return null; +}var is13C = type.equals("C13"); +var url = (is13C ? JSV.common.JSVFileManager.nmrdbServerC13 : JSV.common.JSVFileManager.nmrdbServerH1); +var json = JSV.common.JSVFileManager.getFileAsString(url + molFile); +var map = ( new JU.JSJSONParser()).parseMap(json, true); +JSV.common.JSVFileManager.cachePut("json", json); +if (is13C) map = map.get("result"); +var jsonMolFile = map.get("molfile"); +if (jsonMolFile == null) { +System.out.println("JSVFileManager: no MOL file returned from EPFL"); +jsonMolFile = molFile; +} else { +System.out.println("JSVFileManager: MOL file hash=" + jsonMolFile.hashCode()); +}var atomMap = JSV.common.JSVFileManager.getAtomMap(jsonMolFile, molFile); +JSV.common.JSVFileManager.cachePut("mol", molFile); +{ +if (!isInline) Jmol.Cache.put("http://SIMULATION/" + type + +"/" + name + "#molfile", molFile.getBytes()); +}var xml = "\n"; +if (is13C) { +var spec = map.get("spectrum13C"); +jcamp = (spec.get("jcamp")).get("value"); +var lst = spec.get("predCSNuc"); +var sb = new JU.SB(); +for (var i = lst.size(); --i >= 0; ) { +map = lst.get(i); +sb.append("\n"); +} +sb.append(""); +xml += sb.toString(); +} else { +xml = JU.PT.rep(map.get("xml"), "", xml); +if (atomMap != null) { +var sb = new JU.SB(); +var signals = JU.PT.split(xml, " atoms=\""); +sb.append(signals[0]); +for (var i = 1; i < signals.length; i++) { +var s = signals[i]; +var a = JU.PT.parseInt(s); +sb.append(" atoms=\"").appendI(atomMap[a]).append(s.substring(s.indexOf("\""))); +} +xml = sb.toString(); +}xml = JU.PT.rep(xml, "<", ">\n<"); +xml = JU.PT.rep(xml, "\\\"", "\""); +jcamp = map.get("jcamp"); +}if (JU.Logger.debugging) JU.Logger.info(xml); +JSV.common.JSVFileManager.cachePut("xml", xml); +jcamp = "##TITLE=" + (isInline ? "JMOL SIMULATION/" + type : name) + "\n" + jcamp.substring(jcamp.indexOf("\n##") + 1); +pt = molFile.indexOf("\n"); +pt = molFile.indexOf("\n", pt + 1); +if (pt > 0 && pt == molFile.indexOf("\n \n")) molFile = molFile.substring(0, pt + 1) + "Created " + JSV.common.JSVFileManager.viewer.apiPlatform.getDateFormat("8824") + " by JSpecView " + JSV.common.JSVersion.VERSION + molFile.substring(pt + 1); +pt = 0; +pt = jcamp.indexOf("##."); +var id = JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, false); +var pt1 = id.indexOf("id='"); +if (isInline && pt1 > 0) id = id.substring(pt1 + 4, (id + "'").indexOf("'", pt1 + 4)); +jcamp = jcamp.substring(0, pt) + "##$MODELS=\n\n" + "\n" + molFile + "\n\n" + "##$SIGNALS=\n" + xml + "\n" + jcamp.substring(pt); +JSV.common.JSVFileManager.cachePut("jcamp", jcamp); +JSV.common.JSVFileManager.cachePut(key, jcamp); +return jcamp; +}, "~S"); +c$.getAtomMap = Clazz.defineMethod(c$, "getAtomMap", +function(jsonMolFile, jmolMolFile){ +var acJson = JSV.common.JSVFileManager.getCoord(jsonMolFile); +var acJmol = JSV.common.JSVFileManager.getCoord(jmolMolFile); +var n = acJson.length; +if (n != acJmol.length) return null; +var map = Clazz.newIntArray (n, 0); +var bs = new JU.BS(); +bs.setBits(0, n); +var haveMap = false; +for (var i = 0; i < n; i++) { +var a = acJson[i]; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +if (a.distanceSquared(acJmol[j]) < 0.1) { +bs.clear(j); +map[i] = j; +if (i != j) haveMap = true; +break; +}} +} +return (haveMap ? map : null); +}, "~S,~S"); +c$.getCoord = Clazz.defineMethod(c$, "getCoord", +function(mol){ +var lines = JU.PT.split(mol, "\n"); +var data = Clazz.newFloatArray (3, 0); +var n = Integer.parseInt(lines[3].substring(0, 3).trim()); +var pts = new Array(n); +for (var i = 0; i < n; i++) { +var line = lines[4 + i]; +JU.PT.parseFloatArrayInfested(JU.PT.getTokens(line.substring(0, 31)), data); +pts[i] = JU.P3.new3(data[0], data[1], data[2]); +} +return pts; +}, "~S"); +c$.setAttr = Clazz.defineMethod(c$, "setAttr", +function(sb, mykey, lucsKey, map){ +sb.append(mykey + "=\"").appendO(map.get(lucsKey)).append("\" "); +}, "JU.SB,~S,~S,java.util.Map"); +c$.getResource = Clazz.defineMethod(c$, "getResource", +function(object, fileName, error){ +var url = null; +try { +if ((url = object.getClass().getResource(fileName)) == null) error[0] = "Couldn't find file: " + fileName; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +error[0] = "Exception " + e + " in getResource " + fileName; +} else { +throw e; +} +} +return url; +}, "~O,~S,~A"); +c$.getResourceString = Clazz.defineMethod(c$, "getResourceString", +function(object, name, error){ +var url = JSV.common.JSVFileManager.getResource(object, name, error); +if (url == null) { +error[0] = "Error loading resource " + name; +return null; +}if ((typeof(url)=='string')) { +return JSV.common.JSVFileManager.getFileAsString(url); +}var sb = new JU.SB(); +try { +var br = new java.io.BufferedReader( new java.io.InputStreamReader((url).getContent(), "UTF-8")); +var line; +while ((line = br.readLine()) != null) sb.append(line).append("\n"); + +br.close(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +error[0] = e.toString(); +} else { +throw e; +} +} +return sb.toString(); +}, "~O,~S,~A"); +c$.getJmolFilePath = Clazz.defineMethod(c$, "getJmolFilePath", +function(filePath){ +try { +filePath = JSV.common.JSVFileManager.getFullPathName(filePath); +} catch (e) { +if (Clazz.exceptionOf(e,"JSV.exception.JSVException")){ +return null; +} else { +throw e; +} +} +return (JSV.common.JSVFileManager.appletDocumentBase == null ? filePath.$replace('\\', '/') : filePath); +}, "~S"); +c$.getTagName = Clazz.defineMethod(c$, "getTagName", +function(fileName){ +if (fileName == null) return "String" + (++JSV.common.JSVFileManager.stringCount); +if (JSV.common.JSVFileManager.isURL(fileName)) { +try { +if (fileName.startsWith("http://SIMULATION/")) return JSV.common.JSVFileManager.getAbbrSimulationFileName(fileName); +var name = ( new java.net.URL(Clazz.castNullAs("java.net.URL"), fileName, null)).getFile(); +return name.substring(name.lastIndexOf('/') + 1); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +return null; +} else { +throw e; +} +} +}return JSV.common.JSVFileManager.viewer.apiPlatform.newFile(fileName).getName(); +}, "~S"); +c$.setDocumentBase = Clazz.defineMethod(c$, "setDocumentBase", +function(v, documentBase){ +JSV.common.JSVFileManager.viewer = v; +JSV.common.JSVFileManager.appletDocumentBase = documentBase; +}, "JSV.common.JSViewer,java.net.URL"); +c$.getSimulationType = Clazz.defineMethod(c$, "getSimulationType", +function(filePath){ +return (filePath.indexOf("C13/") >= 0 ? "C13" : "H1"); +}, "~S"); +c$.appletDocumentBase = null; +c$.viewer = null; +c$.jsDocumentBase = ""; +c$.urlPrefixes = Clazz.newArray(-1, ["http:", "https:", "ftp:", "http://SIMULATION/", "file:"]); +c$.htCorrelationCache = new java.util.Hashtable(); +c$.nciResolver = "https://cactus.nci.nih.gov/chemical/structure/%FILE/file?format=sdf&get3d=True"; +c$.nmrdbServerH1 = "https://www.nmrdb.org/tools/jmol/predict.php?POST?molfile="; +c$.nmrdbServerC13 = "https://www.nmrdb.org/service/jsmol13c?POST?molfile="; +c$.stringCount = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVZipFileSequentialReader.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVZipFileSequentialReader.js new file mode 100755 index 000000000000..f8d8b41bf7c1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVZipFileSequentialReader.js @@ -0,0 +1,134 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.io.BufferedReader", "JSV.api.JSVZipReader"], "JSV.common.JSVZipFileSequentialReader", ["java.io.StringReader", "java.util.zip.ZipInputStream", "JU.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.subFileList = null; +this.zis = null; +this.ze = null; +this.ptMark = 0; +this.data = null; +this.startCode = null; +this.lineCount = 0; +this.buf = null; +this.len = 0; +this.pt = 0; +this.cr = '\0'; +Clazz.instantialize(this, arguments);}, JSV.common, "JSVZipFileSequentialReader", java.io.BufferedReader, JSV.api.JSVZipReader); +Clazz.prepareFields (c$, function(){ +this.buf = Clazz.newByteArray (1024, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JSV.common.JSVZipFileSequentialReader, [ new java.io.StringReader("")]); +}); +Clazz.overrideMethod(c$, "set", +function(bis, subFileList, startCode){ +this.subFileList = subFileList; +this.zis = new java.util.zip.ZipInputStream(bis); +this.startCode = startCode; +this.nextEntry(); +return this; +}, "java.io.InputStream,~A,~S"); +Clazz.overrideMethod(c$, "close", +function(){ +try { +this.zis.close(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "mark", +function(limit){ +this.ptMark = this.pt; +if (this.len == 0) { +this.readLine(); +this.pt = this.ptMark; +}}, "~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +this.pt = this.ptMark; +}); +Clazz.defineMethod(c$, "read", +function(chars, chPt, chLen){ +var l = Math.min(this.len - this.pt, chLen); +this.data.getChars(0, l, chars, chPt); +return l; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "readLine", +function(){ +while (this.ze != null) { +try { +var line = this.getEntryLine(); +if (line != null) return line; +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +break; +} else { +throw e; +} +} +this.nextEntry(); +} +return null; +}); +Clazz.defineMethod(c$, "nextEntry", +function(){ +this.len = this.pt = 0; +this.cr = '\0'; +this.lineCount = 0; +try { +while ((this.ze = this.zis.getNextEntry()) != null) if (this.isEntryOK(this.ze.getName())) return; + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.ze = null; +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "isEntryOK", +function(name){ +if (this.subFileList == null || this.subFileList.length == 1) return true; +for (var i = this.subFileList.length; --i >= 0; ) if (this.subFileList[i].equals(name)) { +JU.Logger.info("...reading zip entry " + name); +return true; +} +JU.Logger.info("...skipping zip entry " + name); +return false; +}, "~S"); +Clazz.defineMethod(c$, "getEntryLine", +function(){ +var line = null; +while (this.len >= 0 && (this.pt < this.len || this.zis.available() == 1)) { +var pt0 = this.pt; +var ch = ' '; +while (this.pt < this.len && ch != this.cr) { +switch ((ch = this.data.charAt(this.pt++)).charCodeAt(0)) { +case 10: +if (this.cr == '\r') { +pt0 = this.pt; +continue; +}this.cr = '\n'; +break; +case 13: +if (this.cr == '\n') continue; +this.cr = '\r'; +break; +} +} +if (line == null) line = new JU.SB(); +if (this.pt != pt0) line.append(this.data.substring(pt0, this.pt + (ch == this.cr ? -1 : 0))); +if (ch == this.cr || this.zis.available() != 1 || (this.len = this.zis.read(this.buf, 0, 1024)) < 0) { +if (this.lineCount++ == 0 && this.startCode != null && line.indexOf(this.startCode) < 0) return null; +return line.toString(); +}this.pt = 0; +this.data = String.instantialize(this.buf, 0, this.len); +if (this.data.indexOf('\0') >= 0) return null; +} +return (line == null ? null : line.toString()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVZipUtil.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVZipUtil.js new file mode 100755 index 000000000000..857fa891b6e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVZipUtil.js @@ -0,0 +1,13 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.api.JSVZipInterface"], "JSV.common.JSVZipUtil", ["java.util.zip.GZIPInputStream", "JSV.common.JSVZipFileSequentialReader"], function(){ +var c$ = Clazz.declareType(JSV.common, "JSVZipUtil", null, JSV.api.JSVZipInterface); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "newGZIPInputStream", +function(bis){ +return new java.util.zip.GZIPInputStream(bis, 512); +}, "java.io.InputStream"); +Clazz.overrideMethod(c$, "newJSVZipFileSequentialReader", +function($in, subFileList, startCode){ +return new JSV.common.JSVZipFileSequentialReader().set($in, subFileList, startCode); +}, "java.io.InputStream,~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVersion.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVersion.js new file mode 100755 index 000000000000..72830d5d68a5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSVersion.js @@ -0,0 +1,50 @@ +Clazz.declarePackage("JSV.common"); +(function(){ +var c$ = Clazz.declareType(JSV.common, "JSVersion", null); +{ +var tmpVersion = null; +var tmpDate = null; +{ +tmpVersion = Jmol.___JmolVersion; tmpDate = Jmol.___JmolDate; +}if (tmpDate != null) { +tmpDate = tmpDate.substring(7, 23); +}JSV.common.JSVersion.VERSION_SHORT = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +var mv = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JSV.common.JSVersion.date = (tmpDate != null ? tmpDate : ""); +JSV.common.JSVersion.VERSION = JSV.common.JSVersion.VERSION_SHORT + (JSV.common.JSVersion.date == null ? "" : " " + JSV.common.JSVersion.date); +var v = -1; +if (tmpVersion != null) try { +var s = JSV.common.JSVersion.VERSION_SHORT; +var major = ""; +var i = s.indexOf("."); +if (i < 0) { +v = 100000 * Integer.parseInt(s); +s = null; +}if (s != null) { +v = 100000 * Integer.parseInt(major = s.substring(0, i)); +s = s.substring(i + 1); +i = s.indexOf("."); +if (i < 0) { +v += 1000 * Integer.parseInt(s); +s = null; +}if (s != null) { +var m = s.substring(0, i); +major += "." + m; +mv = major; +v += 1000 * Integer.parseInt(m); +s = s.substring(i + 1); +i = s.indexOf("_"); +if (i >= 0) s = s.substring(0, i); +i = s.indexOf(" "); +if (i >= 0) s = s.substring(0, i); +v += Integer.parseInt(s); +}}} catch (e) { +if (Clazz.exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +JSV.common.JSVersion.majorVersion = mv; +JSV.common.JSVersion.versionInt = v; +}})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSViewer.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSViewer.js new file mode 100755 index 000000000000..4c3760a702bb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/JSViewer.js @@ -0,0 +1,1697 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["javajs.api.BytePoster", "J.api.PlatformViewer", "JSV.common.Spectrum"], "JSV.common.JSViewer", ["java.io.File", "java.net.URL", "java.util.Arrays", "$.Hashtable", "JU.CU", "$.Lst", "$.OC", "$.PT", "$.SB", "JSV.common.Annotation", "$.ExportType", "$.JSVFileManager", "$.PanelData", "$.PanelNode", "$.Parameters", "$.PeakInfo", "$.PrintLayout", "$.RepaintManager", "$.ScriptToken", "$.ScriptTokenizer", "JSV.source.JDXReader", "$.JDXSource", "JSV.tree.SimpleTree", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.si = null; +this.g2d = null; +this.spectraTree = null; +this.currentSource = null; +this.panelNodes = null; +this.parameters = null; +this.repaintManager = null; +this.selectedPanel = null; +this.mainPanel = null; +this.properties = null; +this.scriptQueue = null; +this.fileHelper = null; +this.jsvpPopupMenu = null; +this.dialogManager = null; +this.viewDialog = null; +this.overlayLegendDialog = null; +this.irMode = null; +this.loadImaginary = false; +this.interfaceOverlaid = false; +this.autoIntegrate = false; +this.autoShowLegend = false; +this.obscureTitleFromUser = null; +this.allowMenu = true; +this.initialStartIndex = -1; +this.initialEndIndex = -1; +this.isSingleThreaded = false; +this.isApplet = false; +this.isSigned = false; +this.recentScript = ""; +this.appletName = null; +this.fullName = null; +this.syncID = null; +this.html5Applet = null; +this.display = null; +this.maximumSize = 2147483647; +this.screenHeight = 0; +this.screenWidth = 0; +this.fileCount = 0; +this.nViews = 0; +this.scriptLevelCount = 0; +this.returnFromJmolModel = null; +this.integrationRatios = null; +this.apiPlatform = null; +this.popupAllowMenu = true; +this.popupZoomEnabled = true; +this.defaultLoadScript = null; +this.nmrMaxY = NaN; +this.overlayLegendVisible = false; +this.recentStackPercent = 5; +this.lastPrintLayout = null; +this.offWindowFrame = null; +this.recentOpenURL = "http://"; +this.recentURL = null; +this.recentSimulation = "tylenol"; +Clazz.instantialize(this, arguments);}, JSV.common, "JSViewer", null, [J.api.PlatformViewer, javajs.api.BytePoster]); +Clazz.prepareFields (c$, function(){ +this.irMode = JSV.common.Spectrum.IRMode.NO_CONVERT; +}); +Clazz.makeConstructor(c$, +function(si, isApplet, isJSApplet){ +this.si = si; +this.isApplet = isApplet; +JSV.common.JSViewer.isJS = isApplet && isJSApplet; +var jmol = null; +{ +self.Jmol && (jmol = Jmol); +}JSV.common.JSViewer.jmolObject = jmol; +this.isSigned = si.isSigned(); +this.apiPlatform = this.getPlatformInterface("Platform"); +this.apiPlatform.setViewer(this, this.display); +this.g2d = this.getPlatformInterface("G2D"); +this.spectraTree = new JSV.tree.SimpleTree(this); +this.parameters = this.getPlatformInterface("Parameters"); +this.parameters.setName("applet"); +this.fileHelper = (this.getPlatformInterface("FileHelper")).set(this); +this.isSingleThreaded = this.apiPlatform.isSingleThreaded(); +this.panelNodes = new JU.Lst(); +this.repaintManager = new JSV.common.RepaintManager(this); +if (!isApplet) this.setPopupMenu(true, true); +}, "JSV.api.ScriptInterface,~B,~B"); +Clazz.defineMethod(c$, "setProperty", +function(key, value){ +if (this.properties != null) this.properties.setProperty(key, value); +}, "~S,~S"); +Clazz.defineMethod(c$, "setNode", +function(node){ +if (node.jsvp !== this.selectedPanel) this.si.siSetSelectedPanel(node.jsvp); +this.si.siSendPanelChange(); +this.si.siNodeSet(node); +}, "JSV.common.PanelNode"); +Clazz.defineMethod(c$, "setPopupMenu", +function(allowMenu, zoomEnabled){ +this.popupAllowMenu = allowMenu; +this.popupZoomEnabled = zoomEnabled; +}, "~B,~B"); +Clazz.defineMethod(c$, "showMenu", +function(x, y){ +if (!this.popupAllowMenu) return; +if (this.jsvpPopupMenu == null) { +try { +this.jsvpPopupMenu = this.getPlatformInterface("Popup"); +this.jsvpPopupMenu.jpiInitialize(this, this.isApplet ? "appletMenu" : "appMenu"); +this.jsvpPopupMenu.setEnabled(this.popupAllowMenu, this.popupZoomEnabled); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error(e + " initializing popup menu"); +return; +} else { +throw e; +} +} +}this.jsvpPopupMenu.jpiShow(x, y); +}, "~N,~N"); +Clazz.defineMethod(c$, "runScriptNow", +function(script){ +System.out.println(this.checkScript(script)); +this.scriptLevelCount++; +if (script == null) script = ""; +script = script.trim(); +if (script.startsWith("!")) script = script.substring(1).trim(); + else if (script.startsWith(">")) { +JU.Logger.error(script); +return true; +}if (script.indexOf("= 0) { +this.syncScript(script); +return true; +}JU.Logger.info("RUNSCRIPT " + script); +var isOK = true; +var nErrorsLeft = 10; +var commandTokens = new JSV.common.ScriptTokenizer(script, true); +var msg = null; +while (commandTokens != null && commandTokens.hasMoreTokens() && nErrorsLeft > 0 && isOK) { +var token = commandTokens.nextToken(); +var eachParam = new JSV.common.ScriptTokenizer(token, false); +var key = JSV.common.ScriptToken.getKey(eachParam); +if (key == null) continue; +var st = JSV.common.ScriptToken.getScriptToken(key); +var value = JSV.common.ScriptToken.getValue(st, eachParam, token); +try { +switch (st) { +case JSV.common.ScriptToken.UNKNOWN: +JU.Logger.info("Unrecognized parameter: " + key); +--nErrorsLeft; +break; +default: +if (this.selectedPanel == null) break; +this.parameters.set(this.pd(), st, value); +this.si.siUpdateBoolean(st, JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +this.si.siExecSetCallback(st, value); +break; +case JSV.common.ScriptToken.DEFAULTLOADSCRIPT: +value = JU.PT.rep(value, "''", "\""); +this.defaultLoadScript = (value.length > 0 ? value : null); +break; +case JSV.common.ScriptToken.DEFAULTNMRNORMALIZATION: +this.nmrMaxY = JU.PT.parseFloat(value); +break; +case JSV.common.ScriptToken.AUTOINTEGRATE: +this.autoIntegrate = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.CLOSE: +this.execClose(value); +break; +case JSV.common.ScriptToken.DEBUG: +JU.Logger.setLogLevel(value.toLowerCase().equals("high") ? 6 : JSV.common.Parameters.isTrue(value) ? 5 : 4); +break; +case JSV.common.ScriptToken.GETPROPERTY: +var info = (this.selectedPanel == null ? null : this.getPropertyAsJavaObject(value)); +if (info != null) this.selectedPanel.showMessage(JU.PT.toJSON(null, info), value); +break; +case JSV.common.ScriptToken.HELP: +this.execHelp(value); +break; +case JSV.common.ScriptToken.HIDDEN: +this.si.siExecHidden(JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.INTEGRATIONRATIOS: +this.integrationRatios = value; +this.execIntegrate(null); +break; +case JSV.common.ScriptToken.INTERFACE: +this.interfaceOverlaid = this.checkOvelayInterface(value); +break; +case JSV.common.ScriptToken.INTEGRALOFFSET: +case JSV.common.ScriptToken.INTEGRALRANGE: +this.execSetIntegralParameter(st, Double.parseDouble(value)); +break; +case JSV.common.ScriptToken.INVERTY: +this.execZoom("invertY"); +break; +case JSV.common.ScriptToken.JMOL: +this.si.syncToJmol(value); +break; +case JSV.common.ScriptToken.JSV: +this.syncScript(JU.PT.trimQuotes(value)); +break; +case JSV.common.ScriptToken.LOAD: +if (value.length == 0) { +if (this.defaultLoadScript != null) this.runScriptNow(this.defaultLoadScript); +break; +}this.execLoad(value, (this.defaultLoadScript == null ? "" : this.defaultLoadScript + ";") + commandTokens.getRemainingScript()); +msg = (this.selectedPanel == null ? null : this.si.siLoaded(value)); +commandTokens = null; +break; +case JSV.common.ScriptToken.LOADIMAGINARY: +this.loadImaginary = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.PEAK: +this.execPeak(value); +break; +case JSV.common.ScriptToken.PEAKLIST: +this.execPeakList(value); +break; +case JSV.common.ScriptToken.SCALEBY: +this.scaleSelectedBy(this.panelNodes, value); +break; +case JSV.common.ScriptToken.SCRIPT: +if (value.equals("") || value.toLowerCase().startsWith("inline")) { +this.execScriptInline(value); +} else { +var s = JSV.common.JSVFileManager.getFileAsString(value); +if (s != null && this.scriptLevelCount < 100) this.runScriptNow(s); +}break; +case JSV.common.ScriptToken.SELECT: +this.execSelect(value); +break; +case JSV.common.ScriptToken.SPECTRUM: +case JSV.common.ScriptToken.SPECTRUMNUMBER: +if (!this.setSpectrum(value)) isOK = false; +break; +case JSV.common.ScriptToken.STACKOFFSETY: +this.execOverlayOffsetY(JU.PT.parseInt("" + JU.PT.parseFloat(value))); +break; +case JSV.common.ScriptToken.TEST: +this.si.siExecTest(value); +break; +case JSV.common.ScriptToken.OVERLAY: +case JSV.common.ScriptToken.VIEW: +this.execView(value, true); +break; +case JSV.common.ScriptToken.HIGHLIGHT: +isOK = this.highlight(token); +break; +case JSV.common.ScriptToken.FINDX: +case JSV.common.ScriptToken.GETSOLUTIONCOLOR: +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +case JSV.common.ScriptToken.IRMODE: +case JSV.common.ScriptToken.LABEL: +case JSV.common.ScriptToken.LINK: +case JSV.common.ScriptToken.OVERLAYSTACKED: +case JSV.common.ScriptToken.PRINT: +case JSV.common.ScriptToken.SETPEAK: +case JSV.common.ScriptToken.SETX: +case JSV.common.ScriptToken.SHIFTX: +case JSV.common.ScriptToken.SHOWERRORS: +case JSV.common.ScriptToken.SHOWMEASUREMENTS: +case JSV.common.ScriptToken.SHOWMENU: +case JSV.common.ScriptToken.SHOWKEY: +case JSV.common.ScriptToken.SHOWPEAKLIST: +case JSV.common.ScriptToken.SHOWINTEGRATION: +case JSV.common.ScriptToken.SHOWPROPERTIES: +case JSV.common.ScriptToken.SHOWSOURCE: +case JSV.common.ScriptToken.YSCALE: +case JSV.common.ScriptToken.WRITE: +case JSV.common.ScriptToken.ZOOM: +if (this.isClosed()) { +isOK = false; +break; +}switch (st) { +default: +break; +case JSV.common.ScriptToken.FINDX: +this.pd().findX(null, Double.parseDouble(value)); +break; +case JSV.common.ScriptToken.GETSOLUTIONCOLOR: +this.show("solutioncolor" + value.toLowerCase()); +break; +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +this.execIntegrate(value); +break; +case JSV.common.ScriptToken.IRMODE: +this.execIRMode(value); +break; +case JSV.common.ScriptToken.LABEL: +this.pd().addAnnotation(JSV.common.ScriptToken.getTokens(value)); +break; +case JSV.common.ScriptToken.LINK: +this.pd().linkSpectra(JSV.common.PanelData.LinkMode.getMode(value)); +break; +case JSV.common.ScriptToken.OVERLAYSTACKED: +this.pd().splitStack(!JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.PRINT: +msg = this.execWrite(null); +break; +case JSV.common.ScriptToken.SETPEAK: +case JSV.common.ScriptToken.SETX: +case JSV.common.ScriptToken.SHIFTX: +this.execShiftSpectrum(st, token); +break; +case JSV.common.ScriptToken.SHOWERRORS: +this.show("errors"); +break; +case JSV.common.ScriptToken.SHOWINTEGRATION: +this.pd().showAnnotation(JSV.common.Annotation.AType.Integration, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWKEY: +this.setOverlayLegendVisibility(JSV.common.Parameters.getTFToggle(value), true); +break; +case JSV.common.ScriptToken.SHOWMEASUREMENTS: +this.pd().showAnnotation(JSV.common.Annotation.AType.Measurements, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWMENU: +this.showMenu(-2147483648, 0); +break; +case JSV.common.ScriptToken.SHOWPEAKLIST: +this.pd().showAnnotation(JSV.common.Annotation.AType.PeakList, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWPROPERTIES: +this.show("properties"); +break; +case JSV.common.ScriptToken.SHOWSOURCE: +this.show("source"); +break; +case JSV.common.ScriptToken.YSCALE: +this.setYScale(value); +break; +case JSV.common.ScriptToken.WINDOW: +this.si.siNewWindow(JSV.common.Parameters.isTrue(value), false); +break; +case JSV.common.ScriptToken.WRITE: +msg = this.execWrite(value); +break; +case JSV.common.ScriptToken.ZOOM: +isOK = this.execZoom(value); +break; +} +break; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +msg = e.toString(); +JU.Logger.error(e.toString()); +isOK = false; +--nErrorsLeft; +} else { +throw e; +} +} +} +this.scriptLevelCount--; +this.si.siExecScriptComplete(msg, true); +return isOK; +}, "~S"); +Clazz.defineMethod(c$, "execShiftSpectrum", +function(st, script){ +var tokens = JSV.common.ScriptToken.getTokens(script); +var xOld = NaN; +var xNew = NaN; +switch (tokens.size()) { +case 2: +var value = tokens.get(1); +if (value.equals("")) value = "?"; +xNew = value.equalsIgnoreCase("NONE") ? 1.7976931348623157E308 : value.equalsIgnoreCase("?") ? NaN : Double.parseDouble(value); +break; +case 3: +xOld = Double.parseDouble(tokens.get(1)); +xNew = Double.parseDouble(tokens.get(2)); +break; +default: +Double.parseDouble(""); +} +var mode = 0; +switch (st) { +case JSV.common.ScriptToken.SETPEAK: +mode = 1; +break; +case JSV.common.ScriptToken.SETX: +mode = 2; +break; +case JSV.common.ScriptToken.SHIFTX: +mode = 3; +if (Double.isNaN(xNew)) Double.parseDouble(""); +break; +default: +return; +} +this.pd().shiftSpectrum(mode, xOld, xNew); +}, "JSV.common.ScriptToken,~S"); +Clazz.defineMethod(c$, "execClose", +function(value){ +var fromScript = (!value.startsWith("!")); +if (!fromScript) value = value.substring(1); +this.close(JU.PT.trimQuotes(value)); +if (!fromScript || this.panelNodes.size() == 0) this.si.siValidateAndRepaint(true); +}, "~S"); +Clazz.defineMethod(c$, "checkOvelayInterface", +function(value){ +return (value.equalsIgnoreCase("single") || value.equalsIgnoreCase("overlay")); +}, "~S"); +Clazz.defineMethod(c$, "execPeak", +function(value){ +try { +var tokens = JSV.common.ScriptToken.getTokens(JU.PT.rep(value, "#", "INDEX=")); +value = " type=\"" + tokens.get(0).toUpperCase() + "\" _match=\"" + JU.PT.trimQuotes(tokens.get(1).toUpperCase()) + "\""; +if (tokens.size() > 2 && tokens.get(2).equalsIgnoreCase("all")) value += " title=\"ALL\""; +this.processPeakPickEvent( new JSV.common.PeakInfo(value), false); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~S"); +Clazz.defineMethod(c$, "execPeakList", +function(value){ +var p = this.parameters; +var b = JSV.common.Parameters.getTFToggle(value); +if (value.indexOf("=") < 0) { +if (!this.isClosed()) this.pd().getPeakListing(null, b); +} else { +var tokens = JSV.common.ScriptToken.getTokens(value); +var threshold = p.peakListThreshold; +var interp = p.peakListInterpolation; +try { +for (var i = tokens.size(); --i >= 0; ) { +var token = tokens.get(i); +var pt = token.indexOf("="); +if (pt <= 0) continue; +var key = token.substring(0, pt); +value = token.substring(pt + 1); +if (key.startsWith("thr")) { +threshold = Double.$valueOf(value).doubleValue(); +} else if (key.startsWith("int")) { +interp = (value.equalsIgnoreCase("none") ? "NONE" : "parabolic"); +}} +p.peakListThreshold = threshold; +p.peakListInterpolation = interp; +if (!this.isClosed()) this.pd().getPeakListing(p, Boolean.TRUE); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}, "~S"); +Clazz.defineMethod(c$, "highlight", +function(value){ +var tokens = JSV.common.ScriptToken.getTokens(value); +var n = tokens.size(); +switch (n) { +case 3: +case 5: +case 6: +case 7: +break; +case 2: +case 4: +if (tokens.get(n - 1).equalsIgnoreCase("OFF")) break; +default: +return false; +} +if (!this.isClosed()) { +var x1 = JU.PT.parseFloat(n > 1 ? tokens.get(1) : ""); +var x2 = JU.PT.parseFloat(n > 2 ? tokens.get(2) : ""); +var r = this.getRGB(n > 3 ? tokens.get(3) : "100"); +var g = this.getRGB(n > 4 ? tokens.get(4) : "100"); +var b = this.getRGB(n > 5 ? tokens.get(5) : "100"); +var a = this.getRGB(n > 6 ? tokens.get(6) : "100"); +if (Float.isNaN(x1) || Float.isNaN(x2)) { +this.pd().removeAllHighlights(); +} else { +this.pd().removeHighlight(x1, x2); +if (a < 0) a = 150; +if (r >= 0 && g >= 0 && b >= 0) this.pd().addHighlight(null, x1, x2, null, r, g, b, a); +}this.repaint(true); +}return true; +}, "~S"); +Clazz.defineMethod(c$, "getRGB", +function(s){ +var f = JU.PT.parseFloat(s); +return Clazz.floatToInt(Float.isNaN(f) ? -1 : f > 1 ? f : f * 255); +}, "~S"); +Clazz.defineMethod(c$, "execZoom", +function(value){ +var x1 = 0; +var x2 = 0; +var y1 = 0; +var y2 = 0; +value = JU.PT.rep(value, " - ", " ").$replace(',', ' '); +var tokens = JSV.common.ScriptToken.getTokens(value); +switch (tokens.size()) { +default: +return false; +case 0: +var v = this.pd().getCurrentGraphSet().getCurrentView(); +value = Math.round(v.minXOnScale * 100) / 100 + "," + Math.round(v.maxXOnScale * 100) / 100; +value = this.selectedPanel.getInput("Enter zoom range x1 x2", "Zoom", value); +return (value == null || this.execZoom(value)); +case 1: +value = tokens.get(0); +if (value.equalsIgnoreCase("next")) { +this.pd().nextView(); +} else if (value.toLowerCase().startsWith("prev")) { +this.pd().previousView(); +} else if (value.equalsIgnoreCase("out")) { +this.pd().resetView(); +} else if (value.equalsIgnoreCase("clear")) { +this.pd().clearAllView(); +} else if (value.equalsIgnoreCase("invertY")) { +this.pd().getCurrentGraphSet().invertYAxis(); +}return true; +case 2: +x1 = Double.parseDouble(tokens.get(0)); +x2 = Double.parseDouble(tokens.get(1)); +break; +case 3: +var xy = tokens.get(0); +if (xy.equalsIgnoreCase("X")) { +x1 = Double.parseDouble(tokens.get(1)); +x2 = Double.parseDouble(tokens.get(2)); +} else if (xy.equalsIgnoreCase("Y")) { +y1 = Double.parseDouble(tokens.get(1)); +y2 = Double.parseDouble(tokens.get(2)); +}break; +case 4: +x1 = Double.parseDouble(tokens.get(0)); +y1 = Double.parseDouble(tokens.get(1)); +x2 = Double.parseDouble(tokens.get(2)); +y2 = Double.parseDouble(tokens.get(3)); +} +this.pd().setZoom(x1, y1, x2, y2); +return true; +}, "~S"); +Clazz.defineMethod(c$, "scaleSelectedBy", +function(nodes, value){ +try { +var f = Double.parseDouble(value); +for (var i = nodes.size(); --i >= 0; ) nodes.get(i).pd().scaleSelectedBy(f); + +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JU.Lst,~S"); +Clazz.defineMethod(c$, "pd", +function(){ +return (this.selectedPanel == null ? null : this.selectedPanel.getPanelData()); +}); +Clazz.defineMethod(c$, "isClosed", +function(){ +return (this.pd() == null); +}); +Clazz.defineMethod(c$, "execSelect", +function(value){ +if (value.startsWith("ID ")) { +if (!this.isClosed()) try { +this.pd().selectSpectrum(null, "ID", JU.PT.trimQuotes(value.substring(3)), true); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return; +}var nodes = this.panelNodes; +for (var i = nodes.size(); --i >= 0; ) nodes.get(i).pd().selectFromEntireSet(-2147483648); + +var speclist = new JU.Lst(); +this.fillSpecList(value, speclist, false); +}, "~S"); +Clazz.defineMethod(c$, "execView", +function(value, fromScript){ +if (value.equals("")) { +this.checkOverlay(); +return; +}var speclist = new JU.Lst(); +var strlist = this.fillSpecList(value, speclist, true); +if (speclist.size() > 0) this.si.siOpenDataOrFile(null, strlist, speclist, strlist, -1, -1, false, null, null); +if (!fromScript) { +this.si.siValidateAndRepaint(false); +}}, "~S,~B"); +Clazz.defineMethod(c$, "execIRMode", +function(value){ +var mode = JSV.common.Spectrum.IRMode.getMode(value); +var type = this.pd().getSpectrum().dataType; +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().setIRMode(mode, type); + +this.setIRmode(value); +}, "~S"); +Clazz.defineMethod(c$, "execIntegrate", +function(value){ +if (this.isClosed()) return; +this.pd().checkIntegral(this.parameters, value); +if (this.integrationRatios != null) this.pd().setIntegrationRatios(this.integrationRatios); +this.integrationRatios = null; +this.repaint(true); +}, "~S"); +Clazz.defineMethod(c$, "repaint", +function(andTaintAll){ +this.selectedPanel.doRepaint(andTaintAll); +}, "~B"); +Clazz.defineMethod(c$, "execSetIntegralParameter", +function(st, value){ +var p = this.parameters; +switch (st) { +case JSV.common.ScriptToken.INTEGRALRANGE: +p.integralRange = value; +break; +case JSV.common.ScriptToken.INTEGRALOFFSET: +p.integralOffset = value; +break; +} +if (!this.isClosed()) this.pd().checkIntegral(this.parameters, "update"); +}, "JSV.common.ScriptToken,~N"); +Clazz.defineMethod(c$, "setYScale", +function(value){ +var tokens = JSV.common.ScriptToken.getTokens(value); +var pt = 0; +var isAll = false; +if (tokens.size() > 1 && tokens.get(0).equalsIgnoreCase("ALL")) { +isAll = true; +pt++; +}var y1 = Double.parseDouble(tokens.get(pt++)); +var y2 = Double.parseDouble(tokens.get(pt)); +if (isAll) { +var spec = this.pd().getSpectrum(); +for (var i = this.panelNodes.size(); --i >= 0; ) { +var node = this.panelNodes.get(i); +if (node.source !== this.currentSource) continue; +if (JSV.common.Spectrum.areXScalesCompatible(spec, node.getSpectrum(), false, false)) node.pd().setZoom(0, y1, 0, y2); +} +} else { +this.pd().setZoom(0, y1, 0, y2); +}}, "~S"); +Clazz.defineMethod(c$, "setOverlayLegendVisibility", +function(tftoggle, doSet){ +if (doSet) this.overlayLegendVisible = (tftoggle == null ? !this.overlayLegendVisible : tftoggle === Boolean.TRUE); +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +for (var i = this.panelNodes.size(); --i >= 0; ) this.showOverlayLegend(this.panelNodes.get(i), this.panelNodes.get(i) === node && this.overlayLegendVisible); + +}, "Boolean,~B"); +Clazz.defineMethod(c$, "showOverlayLegend", +function(node, visible){ +var legend = node.legend; +if (legend == null && visible) { +legend = node.setLegend(node.pd().getNumberOfSpectraInCurrentSet() > 1 && node.pd().getNumberOfGraphSets() == 1 ? this.getDialog(JSV.common.Annotation.AType.OverlayLegend, null) : null); +}if (legend != null) legend.setVisible(visible); +}, "JSV.common.PanelNode,~B"); +Clazz.defineMethod(c$, "syncScript", +function(peakScript){ +if (peakScript.equals("TEST")) peakScript = JSV.common.JSViewer.testScript; +JU.Logger.info("JSViewer.syncScript Jmol>JSV " + peakScript); +if (peakScript.indexOf("= 0) this.syncPeaksAfterSyncScript(); +return; +}JU.Logger.info(">>toJSV>> " + peakScript); +var sourceID = JU.PT.getQuotedAttribute(peakScript, "sourceID"); +var type; +var model; +var file; +var jmolSource; +var index; +var atomKey; +if (sourceID == null) { +file = JU.PT.getQuotedAttribute(peakScript, "file"); +index = JU.PT.getQuotedAttribute(peakScript, "index"); +if (file == null || index == null) return; +file = JU.PT.rep(file, "#molfile", ""); +model = JU.PT.getQuotedAttribute(peakScript, "model"); +jmolSource = JU.PT.getQuotedAttribute(peakScript, "src"); +var modelSent = (jmolSource != null && jmolSource.startsWith("Jmol") ? null : this.returnFromJmolModel); +if (model != null && modelSent != null && !model.equals(modelSent)) { +JU.Logger.info("JSV ignoring model " + model + "; should be " + modelSent); +return; +}this.returnFromJmolModel = null; +if (this.panelNodes.size() == 0 || !this.checkFileAlreadyLoaded(file)) { +JU.Logger.info("file " + file + " not found -- JSViewer closing all and reopening"); +this.si.siSyncLoad(file); +}type = JU.PT.getQuotedAttribute(peakScript, "type"); +atomKey = null; +} else { +file = null; +index = model = sourceID; +atomKey = "," + JU.PT.getQuotedAttribute(peakScript, "atom") + ","; +type = "ID"; +jmolSource = sourceID; +}var pi = this.selectPanelByPeak(file, index, atomKey); +var pd = this.pd(); +pd.selectSpectrum(file, type, model, true); +this.si.siSendPanelChange(); +pd.addPeakHighlight(pi); +this.repaint(true); +if (jmolSource == null || (pi != null && pi.getAtoms() != null)) this.si.syncToJmol(this.jmolSelect(pi)); +}, "~S"); +Clazz.defineMethod(c$, "syncPeaksAfterSyncScript", +function(){ +var source = this.currentSource; +if (source == null) return; +try { +var file = "file=" + JU.PT.esc(source.getFilePath()); +var peaks = source.getSpectra().get(0).getPeakList(); +var sb = new JU.SB(); +sb.append("["); +var n = peaks.size(); +for (var i = 0; i < n; i++) { +var s = peaks.get(i).toString(); +s = s + " " + file; +sb.append(JU.PT.esc(s)); +if (i > 0) sb.append(","); +} +sb.append("]"); +this.si.syncToJmol("Peaks: " + sb); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "checkFileAlreadyLoaded", +function(fileName){ +if (this.isClosed()) return false; +if (this.pd().hasFileLoaded(fileName)) return true; +for (var i = this.panelNodes.size(); --i >= 0; ) if (this.panelNodes.get(i).pd().hasFileLoaded(fileName)) { +this.si.siSetSelectedPanel(this.panelNodes.get(i).jsvp); +return true; +} +return false; +}, "~S"); +Clazz.defineMethod(c$, "selectPanelByPeak", +function(file, index, atomKey){ +if (this.panelNodes == null) return null; +var pi = null; +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().addPeakHighlight(null); + +pi = this.pd().selectPeakByFileIndex(file, index, atomKey); +if (pi != null) { +this.setNode(JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes)); +} else { +for (var i = this.panelNodes.size(); --i >= 0; ) { +var node = this.panelNodes.get(i); +if ((pi = node.pd().selectPeakByFileIndex(file, index, atomKey)) != null) { +this.setNode(node); +break; +}} +}return pi; +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "processPeakPickEvent", +function(eventObj, isApp){ +var pi; +if (Clazz.instanceOf(eventObj,"JSV.common.PeakInfo")) { +pi = eventObj; +var pi2 = this.pd().findMatchingPeakInfo(pi); +if (pi2 == null) { +if (!"ALL".equals(pi.getTitle())) return; +var node = null; +for (var i = 0; i < this.panelNodes.size(); i++) if ((pi2 = this.panelNodes.get(i).pd().findMatchingPeakInfo(pi)) != null) { +node = this.panelNodes.get(i); +break; +} +if (node == null) return; +this.setNode(node); +}pi = pi2; +} else { +var e = (eventObj); +this.si.siSetSelectedPanel(e.getSource()); +pi = e.getPeakInfo(); +}this.pd().addPeakHighlight(pi); +this.syncToJmol(pi); +if (pi.isClearAll()) this.repaint(false); + else this.pd().selectSpectrum(pi.getFilePath(), pi.getType(), pi.getModel(), true); +this.si.siCheckCallbacks(pi.getTitle()); +}, "~O,~B"); +Clazz.defineMethod(c$, "newStructToJmol", +function(data){ +JU.Logger.info("sending new structure to Jmol:\n" + data); +this.si.syncToJmol("struct:" + data); +}, "~S"); +Clazz.defineMethod(c$, "syncToJmol", +function(pi){ +this.repaint(true); +this.returnFromJmolModel = pi.getModel(); +this.si.syncToJmol(this.jmolSelect(pi)); +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "sendPanelChange", +function(){ +var pd = this.pd(); +var spec = pd.getSpectrum(); +var pi = spec.getSelectedPeak(); +if (pi == null) pi = spec.getModelPeakInfoForAutoSelectOnLoad(); +if (pi == null) pi = spec.getBasePeakInfo(); +pd.addPeakHighlight(pi); +JU.Logger.info(Thread.currentThread() + "JSViewer sendFrameChange " + this.selectedPanel); +this.syncToJmol(pi); +}); +Clazz.defineMethod(c$, "jmolSelect", +function(pi){ +var script = ("IR".equals(pi.getType()) || "RAMAN".equals(pi.getType()) ? "vibration ON; selectionHalos OFF;" : "vibration OFF; selectionhalos " + (pi.getAtoms() == null ? "OFF" : "ON")); +return "Select: " + pi + " script=\"" + script + " \" sourceID=\"" + this.pd().getSpectrum().sourceID + "\""; +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "getPropertyAsJavaObject", +function(key){ +var map = new java.util.Hashtable(); +if ("SOURCEID".equalsIgnoreCase(key)) { +map.put(key, (this.pd() == null ? "" : this.pd().getSpectrum().sourceID)); +return map; +}if (key != null && key.startsWith("DATA_")) { +map.put(key, "" + JSV.common.JSVFileManager.cacheGet(key.substring(5))); +return map; +}var isAll = false; +if (key != null && key.toUpperCase().startsWith("ALL ") || "all".equalsIgnoreCase(key)) { +key = key.substring(3).trim(); +isAll = true; +}if ("".equals(key)) key = null; +if ("NAMES".equalsIgnoreCase(key) || "KEYS".equalsIgnoreCase(key)) key = ""; +var map0 = this.pd().getInfo(true, key); +if (!isAll && map0 != null) return map0; +if (map0 != null) map.put("current", map0); +var info = new JU.Lst(); +for (var i = 0; i < this.panelNodes.size(); i++) { +var jsvp = this.panelNodes.get(i).jsvp; +if (jsvp == null) continue; +info.addLast(this.panelNodes.get(i).getInfo(key)); +} +map.put("items", info); +return map; +}, "~S"); +Clazz.defineMethod(c$, "getCoordinate", +function(){ +if (!this.isClosed()) { +var coord = this.pd().getClickedCoordinate(); +if (coord != null) return coord.getXVal() + " " + coord.getYVal(); +}return ""; +}); +Clazz.defineMethod(c$, "fillSpecList", +function(value, speclist, isView){ +var prefix = "1."; +var list; +var list0 = null; +var isNone = (value.equalsIgnoreCase("NONE")); +if (isNone || value.equalsIgnoreCase("all")) value = "*"; +if (value.indexOf("*") < 0) { +var tokens = value.$plit(" "); +var sb = new JU.SB(); +for (var i = 0; i < tokens.length; i++) { +var pt = tokens[i].indexOf('.'); +if (pt != tokens[i].lastIndexOf('.')) tokens[i] = tokens[i].substring(0, pt + 1) + tokens[i].substring(pt + 1).$replace('.', '_'); +sb.append(tokens[i]).append(" "); +} +value = sb.toString().trim(); +}if (value.equals("*")) { +list = JSV.common.ScriptToken.getTokens(JSV.common.PanelNode.getSpectrumListAsString(this.panelNodes)); +} else if (value.startsWith("\"") || value.startsWith("'")) { +list = JSV.common.ScriptToken.getTokens(value); +} else { +value = JU.PT.rep(value, "_", " _ "); +value = JU.PT.rep(value, "-", " - "); +list = JSV.common.ScriptToken.getTokens(value); +list0 = JSV.common.ScriptToken.getTokens(JSV.common.PanelNode.getSpectrumListAsString(this.panelNodes)); +if (list0.size() == 0) return null; +}var id0 = (this.isClosed() ? prefix : JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes).id); +id0 = id0.substring(0, id0.indexOf(".") + 1); +var sb = new JU.SB(); +var n = list.size(); +var idLast = null; +for (var i = 0; i < n; i++) { +var id = list.get(i); +var userYFactor = NaN; +var isubspec = -1; +if (i + 1 < n && list.get(i + 1).equals("*")) { +i += 2; +userYFactor = Double.parseDouble(list.get(i)); +} else if (i + 1 < n && list.get(i + 1).equals("_")) { +i += 2; +isubspec = Integer.parseInt(list.get(i)); +}if (id.equals("-")) { +if (idLast == null) idLast = list0.get(0); +id = (i + 1 == n ? list0.get(list0.size() - 1) : list.get(++i)); +if (!id.contains(".")) id = id0 + id; +var pt = 0; +while (pt < list0.size() && !list0.get(pt).equals(idLast)) pt++; + +pt++; +while (pt < list0.size() && !idLast.equals(id)) { +var node = JSV.common.PanelNode.findNodeById((idLast = list0.get(pt++)), this.panelNodes); +speclist.addLast(node.pd().getSpectrumAt(0)); +sb.append(",").append(idLast); +} +continue; +}var node; +if (id.startsWith("'") && id.endsWith("'")) id = "\"" + JU.PT.trim(id, "'") + "\""; +if (id.startsWith("\"")) { +id = JU.PT.trim(id, "\""); +var pn = this.panelNodes.size(); +for (var j = 0; j < pn; j++) { +node = this.panelNodes.get(j); +if (node.fileName != null && node.fileName.startsWith(id) || node.frameTitle != null && node.frameTitle.startsWith(id)) { +this.addSpecToList(node.pd(), userYFactor, -1, speclist, isView); +sb.append(",").append(node.id); +}} +continue; +}if (!id.contains(".")) id = id0 + id; +node = JSV.common.PanelNode.findNodeById(id, this.panelNodes); +if (node == null) continue; +idLast = id; +this.addSpecToList(node.pd(), userYFactor, isubspec, speclist, isView); +sb.append(",").append(id); +if (isubspec > 0) sb.append(".").appendI(isubspec); +} +if (isView && speclist.size() > 0) { +var node = JSV.common.PanelNode.findNodeById(sb.substring(1), this.panelNodes); +if (node != null) { +this.setNode(node); +speclist.clear(); +}}return (isNone ? "NONE" : sb.length() > 0 ? sb.toString().substring(1) : null); +}, "~S,JU.Lst,~B"); +Clazz.defineMethod(c$, "addSpecToList", +function(pd, userYFactor, isubspec, list, isView){ +if (isView) { +var spec = pd.getSpectrumAt(0); +spec.setUserYFactor(Double.isNaN(userYFactor) ? 1 : userYFactor); +pd.addToList(isubspec - 1, list); +} else { +pd.selectFromEntireSet(isubspec - 1); +}}, "JSV.common.PanelData,~N,~N,JU.Lst,~B"); +Clazz.defineMethod(c$, "getSolutionColor", +function(asFitted){ +var spectrum = this.pd().getSpectrum(); +var vi = (spectrum.canShowSolutionColor() ? JSV.common.JSViewer.getInterface("JSV.common.Visible") : null); +return (vi == null ? -1 : vi.getColour(spectrum, asFitted)); +}, "~B"); +Clazz.defineMethod(c$, "openDataOrFile", +function(data, name, specs, strUrl, firstSpec, lastSpec, isAppend, id){ +if ("NONE".equals(name)) { +this.close("View*"); +return 0; +}this.si.writeStatus(""); +var filePath = null; +var newPath = null; +var fileName = null; +var isView = false; +if (strUrl != null && strUrl.startsWith("cache://")) { +{ +data = Jmol.Cache.get(name = strUrl); +}}var file = null; +if (data != null) { +try { +fileName = name; +newPath = filePath = JSV.common.JSVFileManager.getFullPathName(name); +} catch (e) { +if (Clazz.exceptionOf(e,"JSV.exception.JSVException")){ +} else { +throw e; +} +} +} else if (specs != null) { +isView = true; +newPath = fileName = filePath = "View" + (++this.nViews); +} else if (strUrl != null) { +try { +file = this.apiPlatform.newFile(strUrl); +var u = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, strUrl, null); +filePath = u.toString(); +this.recentURL = filePath; +fileName = JSV.common.JSVFileManager.getTagName(filePath); +} catch (e) { +if (Clazz.exceptionOf(e,"java.net.MalformedURLException")){ +fileName = file.getName(); +newPath = filePath = file.getFullPath(); +this.recentURL = null; +} else { +throw e; +} +} +}var pt = -1; +if ((pt = JSV.common.PanelNode.isOpen(this.panelNodes, filePath)) >= 0 || (pt = JSV.common.PanelNode.isOpen(this.panelNodes, strUrl)) >= 0) { +if (isView) { +--this.nViews; +this.setNode(this.panelNodes.get(pt)); +} else { +this.si.writeStatus(filePath + " is already open"); +}return -1; +}if (!isAppend && !isView) this.close("all"); +this.si.setCursor(3); +try { +this.si.siSetCurrentSource(isView ? JSV.source.JDXSource.createView(specs) : JSV.source.JDXReader.createJDXSource(file, data, filePath, this.obscureTitleFromUser === Boolean.TRUE, this.loadImaginary, firstSpec, lastSpec, this.nmrMaxY)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +{ +alert(e.toString()) +}this.si.setCursor(0); +if (this.isApplet) { +this.selectedPanel.showMessage(e.toString(), "Error Opening File"); +}return -3; +} else { +throw e; +} +} +this.si.setCursor(0); +System.gc(); +if (newPath == null) { +newPath = this.currentSource.getFilePath(); +if (newPath != null) fileName = newPath.substring(newPath.lastIndexOf("/") + 1); +} else { +this.currentSource.setFilePath(newPath); +}if (id == null && !isView) id = newPath; +if (id != null) this.currentSource.setID(id); +this.si.siSetLoaded(fileName, newPath); +var spec = this.currentSource.getJDXSpectrum(0); +if (spec == null) { +return -4; +}specs = this.currentSource.getSpectra(); +JSV.common.Spectrum.process(specs, this.irMode); +var autoOverlay = this.interfaceOverlaid || spec.isAutoOverlayFromJmolClick(); +var combine = isView || autoOverlay && this.currentSource.isCompoundSource; +if (combine) { +this.combineSpectra((isView ? strUrl : null)); +} else { +this.splitSpectra(); +}this.pd().setTaintedAll(); +if (!isView) this.si.siUpdateRecentMenus(filePath); +return 0; +}, "~O,~S,JU.Lst,~S,~N,~N,~B,~S"); +Clazz.defineMethod(c$, "close", +function(value){ +var n0 = 0; +var pt = (value == null ? -2 : value.indexOf(">")); +if (pt > 0) { +n0 = JU.PT.parseInt(value.substring(pt + 1).trim()); +value = value.substring(0, pt).trim(); +}if ("*".equals(value)) value = "all"; +var isAll = (value === "all"); +if (value == null || n0 == 0 && value.equalsIgnoreCase("all")) { +this.closeSource(null); +return; +}var isViews = value.equalsIgnoreCase("views"); +var list = new JU.Lst(); +var source; +value = value.$replace('\\', '/'); +var n = this.panelNodes.size(); +var nMax = n - n0; +if (value.endsWith("*")) { +value = value.substring(0, value.length - 1); +for (var i = n; --i >= 0; ) if (this.panelNodes.get(i).fileName.startsWith(value)) list.addLast(this.panelNodes.get(i).source); + +} else if (value.equalsIgnoreCase("selected")) { +var lastSource = null; +for (var i = n; --i >= 0; ) { +source = this.panelNodes.get(i).source; +if (this.panelNodes.get(i).isSelected && (lastSource == null || lastSource !== source)) list.addLast(source); +lastSource = source; +} +} else if (isAll || isViews || value.equalsIgnoreCase("simulations")) { +for (var n1 = 0, i = n; --i >= 0 && n1 < nMax; ) if (isAll ? true : isViews ? this.panelNodes.get(i).isView : this.panelNodes.get(i).isSimulation) { +list.addLast(this.panelNodes.get(i).source); +n1++; +} +} else { +source = (value.length == 0 ? this.currentSource : JSV.common.PanelNode.findSourceByNameOrId(value, this.panelNodes)); +if (source != null) list.addLast(source); +}for (var i = list.size(); --i >= 0; ) this.closeSource(list.get(i)); + +if (this.selectedPanel == null && this.panelNodes.size() > 0) this.si.siSetSelectedPanel(JSV.common.PanelNode.getLastFileFirstNode(this.panelNodes)); +}, "~S"); +Clazz.defineMethod(c$, "execLoad", +function(value, script){ +var applet = this.html5Applet; +var isID = false; +if (isID) { +applet._search(value); +return; +}var tokens = JSV.common.ScriptToken.getTokens(value); +var filename = tokens.get(0); +var id = null; +var pt = 0; +if (filename.equalsIgnoreCase("ID")) { +id = JU.PT.trimQuotes(tokens.get(1)); +filename = tokens.get(2); +pt = 2; +}var isAppend = filename.equalsIgnoreCase("APPEND"); +var isCheck = filename.equalsIgnoreCase("CHECK"); +if (isAppend || isCheck) pt++; +if (pt > 0) filename = tokens.get(pt); +if (script == null) script = this.defaultLoadScript; +if (filename.equals("?")) { +this.openFileFromDialog(isAppend, false, null, script); +return; +}if (filename.equals("http://?")) { +this.openFileFromDialog(isAppend, true, null, null); +return; +}if (filename.equals("$?") || filename.equals("$H1?")) { +this.openFileFromDialog(isAppend, true, "H1", null); +return; +}if (filename.equals("$C13?")) { +this.openFileFromDialog(isAppend, true, "C13", null); +return; +}var isH1 = filename.equalsIgnoreCase("MOL") || filename.equalsIgnoreCase("H1"); +var isC13 = filename.equalsIgnoreCase("C13"); +if (isH1 || isC13) filename = "http://SIMULATION/" + (isH1 ? "H1/" : "C13/") + "MOL=" + JU.PT.trimQuotes(tokens.get(++pt)); +if (!isCheck && !isAppend) { +if (filename.equals("\"\"") && this.currentSource != null) filename = this.currentSource.getFilePath(); +this.close("all"); +}filename = JU.PT.trimQuotes(filename); +var isSimulation = filename.startsWith("$"); +if (isSimulation) { +if (!filename.startsWith("$H1") && !filename.startsWith("$C13")) filename = "$H1/" + filename.substring(1); +filename = "http://SIMULATION/" + filename.substring(1); +}var firstSpec = (pt + 1 < tokens.size() ? Integer.$valueOf(tokens.get(++pt)).intValue() : -1); +var lastSpec = (pt + 1 < tokens.size() ? Integer.$valueOf(tokens.get(++pt)).intValue() : firstSpec); +this.si.siOpenDataOrFile(null, null, null, filename, firstSpec, lastSpec, isAppend, script, id); +if (isSimulation) { +this.close("views"); +this.execView("*", true); +}}, "~S,~S"); +Clazz.defineMethod(c$, "combineSpectra", +function(name){ +var source = this.currentSource; +var specs = source.getSpectra(); +var haveSimulation = false; +for (var i = specs.size(); --i >= 0; ) if (specs.get(i).isSimulation) { +haveSimulation = true; +break; +} +var jsvp = this.si.siGetNewJSVPanel2(specs); +jsvp.setTitle(source.getTitle()); +if (jsvp.getTitle().equals("")) { +jsvp.getPanelData().setViewTitle(source.getFilePath()); +jsvp.setTitle(name); +}this.si.siSetPropertiesFromPreferences(jsvp, true); +this.spectraTree.createTree(++this.fileCount, source, Clazz.newArray(-1, [jsvp])).getPanelNode().isView = true; +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +node.setFrameTitle(name); +node.isView = true; +if (this.autoShowLegend && this.pd().getNumberOfGraphSets() == 1) node.setLegend(this.getDialog(JSV.common.Annotation.AType.OverlayLegend, null)); +this.si.siSetMenuEnables(node, false); +if (haveSimulation) this.pd().splitStack(true); +}, "~S"); +Clazz.defineMethod(c$, "closeSource", +function(source){ +var rootNode = this.spectraTree.getRootNode(); +var fileName = (source == null ? null : source.getFilePath()); +var toDelete = new JU.Lst(); +var enume = rootNode.children(); +while (enume.hasMoreElements()) { +var node = enume.nextElement(); +if (fileName == null || node.getPanelNode().source.matchesFilePath(fileName)) { +JU.Logger.info("Closing " + node.getPanelNode().source.getFilePath()); +for (var e = node.children(); e.hasMoreElements(); ) { +var childNode = e.nextElement(); +toDelete.addLast(childNode); +this.panelNodes.removeObj(childNode.getPanelNode()); +} +toDelete.addLast(node); +if (fileName != null) break; +}} +this.spectraTree.deleteNodes(toDelete); +if (source == null) { +if (this.currentSource != null) this.currentSource.dispose(); +this.currentSource = null; +if (this.selectedPanel != null) this.selectedPanel.dispose(); +} else { +}if (this.currentSource === source) { +this.si.siSetSelectedPanel(null); +this.si.siSetCurrentSource(null); +}var max = 0; +for (var i = 0; i < this.panelNodes.size(); i++) { +var f = JU.PT.parseFloat(this.panelNodes.get(i).id); +if (f >= max + 1) max = Clazz.doubleToInt(Math.floor(f)); +} +this.fileCount = max; +System.gc(); +if (JU.Logger.debugging) JU.Logger.checkMemory(); +this.si.siSourceClosed(source); +}, "JSV.source.JDXSource"); +Clazz.defineMethod(c$, "setFrameAndTreeNode", +function(i){ +if (this.panelNodes == null || i < 0 || i >= this.panelNodes.size()) return; +this.setNode(this.panelNodes.get(i)); +}, "~N"); +Clazz.defineMethod(c$, "selectFrameNode", +function(jsvp){ +var node = JSV.common.PanelNode.findNode(jsvp, this.panelNodes); +if (node == null) return null; +this.spectraTree.setPath(this.spectraTree.newTreePath(node.treeNode.getPath())); +this.setOverlayLegendVisibility(null, false); +return node; +}, "JSV.api.JSVPanel"); +Clazz.defineMethod(c$, "setSpectrum", +function(value){ +if (value.indexOf('.') >= 0) { +var node = JSV.common.PanelNode.findNodeById(value, this.panelNodes); +if (node == null) return false; +this.setNode(node); +} else { +var n = JU.PT.parseInt(value); +if (n <= 0) { +this.checkOverlay(); +return false; +}this.setFrameAndTreeNode(n - 1); +}return true; +}, "~S"); +Clazz.defineMethod(c$, "splitSpectra", +function(){ +var source = this.currentSource; +var specs = source.getSpectra(); +var panels = new Array(specs.size()); +var jsvp = null; +for (var i = 0; i < specs.size(); i++) { +var spec = specs.get(i); +jsvp = this.si.siGetNewJSVPanel(spec); +this.si.siSetPropertiesFromPreferences(jsvp, true); +panels[i] = jsvp; +} +this.spectraTree.createTree(++this.fileCount, source, panels); +this.si.siGetNewJSVPanel(null); +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +this.si.siSetMenuEnables(node, true); +}); +Clazz.defineMethod(c$, "selectedTreeNode", +function(node){ +if (node == null) { +return; +}if (node.isLeaf()) { +this.setNode(node.getPanelNode()); +} else { +System.out.println("not a leaf"); +}this.si.siSetCurrentSource(node.getPanelNode().source); +}, "JSV.api.JSVTreeNode"); +Clazz.defineMethod(c$, "dispose", +function(){ +this.fileHelper = null; +if (this.viewDialog != null) this.viewDialog.dispose(); +this.viewDialog = null; +if (this.overlayLegendDialog != null) this.overlayLegendDialog.dispose(); +this.overlayLegendDialog = null; +if (this.jsvpPopupMenu != null) { +this.jsvpPopupMenu.jpiDispose(); +this.jsvpPopupMenu = null; +}if (this.panelNodes != null) for (var i = this.panelNodes.size(); --i >= 0; ) { +this.panelNodes.get(i).dispose(); +this.panelNodes.removeItemAt(i); +} +}); +Clazz.defineMethod(c$, "runScript", +function(script){ +if (this.scriptQueue == null) this.si.siProcessCommand(script); + else this.scriptQueue.addLast(script); +}, "~S"); +Clazz.defineMethod(c$, "requestRepaint", +function(){ +if (this.selectedPanel != null) this.repaintManager.refresh(); +}); +Clazz.defineMethod(c$, "repaintDone", +function(){ +this.repaintManager.repaintDone(); +}); +Clazz.defineMethod(c$, "checkOverlay", +function(){ +if (this.mainPanel != null) this.markSelectedPanels(this.panelNodes, this.mainPanel.getCurrentPanelIndex()); +this.viewDialog = this.getDialog(JSV.common.Annotation.AType.Views, null); +}); +Clazz.defineMethod(c$, "markSelectedPanels", +function(panelNodes, ip){ +for (var i = panelNodes.size(); --i >= 0; ) panelNodes.get(i).isSelected = (ip == i); + +}, "JU.Lst,~N"); +Clazz.defineMethod(c$, "execOverlayOffsetY", +function(offset){ +if (offset == -2147483648) { +if (this.selectedPanel == null) return; +var soffset = this.selectedPanel.getInput("Enter a vertical offset in percent for stacked plots", "Overlay", "" + this.recentStackPercent); +var f = JU.PT.parseFloat(soffset); +if (Float.isNaN(f)) return; +offset = Clazz.floatToInt(f); +}this.recentStackPercent = offset; +this.parameters.viewOffset = offset; +if (this.isClosed()) this.pd().setYStackOffsetPercent(offset); +}, "~N"); +Clazz.defineMethod(c$, "execScriptInline", +function(script){ +if (script.length > 0) script = script.substring(6).trim(); +if (script.length == 0) script = this.selectedPanel.getInput("Enter a JSpecView script", "Script", this.recentScript); +if (script == null) return; +this.recentScript = script; +this.runScriptNow(script); +}, "~S"); +Clazz.defineMethod(c$, "setDisplay", +function(canvas){ +this.apiPlatform.setViewer(this, this.display = canvas); +var wh = Clazz.newIntArray (2, 0); +this.apiPlatform.getFullScreenDimensions(canvas, wh); +this.setScreenDimension(wh[0], wh[1]); +}, "~O"); +Clazz.defineMethod(c$, "setScreenDimension", +function(width, height){ +height = Math.min(height, this.maximumSize); +width = Math.min(width, this.maximumSize); +if (this.screenWidth == width && this.screenHeight == height) return; +this.resizeImage(width, height); +}, "~N,~N"); +Clazz.defineMethod(c$, "resizeImage", +function(width, height){ +if (width > 0) { +this.screenWidth = width; +this.screenHeight = height; +} else { +width = (this.screenWidth == 0 ? this.screenWidth = 500 : this.screenWidth); +height = (this.screenHeight == 0 ? this.screenHeight = 500 : this.screenHeight); +}this.g2d.setWindowParameters(width, height); +}, "~N,~N"); +Clazz.defineMethod(c$, "updateJS", +function(){ +if (this.selectedPanel != null) this.selectedPanel.paintComponent(this.apiPlatform.getGraphics(null)); +}); +Clazz.defineMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return (this.selectedPanel != null && this.selectedPanel.processMouseEvent(id, x, y, modifiers, time)); +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "processTwoPointGesture", +function(touches){ +if (!this.isClosed()) this.selectedPanel.processTwoPointGesture(touches); +}, "~A"); +Clazz.defineMethod(c$, "getApplet", +function(){ +return this.html5Applet; +}); +Clazz.defineMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +var ans = (this.currentSource == null ? "NO" : this.getDialogManager().getDialogInput(this, "Do you want to append this file? (Answer NO to replace.)", "Drag/Drop Action", 3, null, null, "YES")); +if (ans == null) return; +var pre = (ans.toLowerCase().startsWith("y") ? "append" : ""); +var post = (pre === "" ? "" : "; view *"); +this.runScript("load " + pre + " \"" + fileName + "\"" + post); +}, "~S,~N"); +Clazz.defineMethod(c$, "getHeight", +function(){ +return this.screenHeight; +}); +Clazz.defineMethod(c$, "getWidth", +function(){ +return this.screenWidth; +}); +Clazz.defineMethod(c$, "getPlatformInterface", +function(type){ +return JSV.common.JSViewer.getInterface("JSV." + (JSV.common.JSViewer.isJS ? "js2d.Js" : "java.Awt") + type); +}, "~S"); +Clazz.defineMethod(c$, "getDialogManager", +function(){ +if (this.dialogManager != null) return this.dialogManager; +this.dialogManager = this.getPlatformInterface("DialogManager"); +return this.dialogManager.set(this); +}); +Clazz.defineMethod(c$, "getDialog", +function(type, spec){ +var root = "JSV.dialog."; +switch (type) { +case JSV.common.Annotation.AType.Integration: +return (JSV.common.JSViewer.getInterface(root + "IntegrationDialog")).setParams("Integration for " + spec, this, spec); +case JSV.common.Annotation.AType.Measurements: +return (JSV.common.JSViewer.getInterface(root + "MeasurementsDialog")).setParams("Measurements for " + spec, this, spec); +case JSV.common.Annotation.AType.PeakList: +return (JSV.common.JSViewer.getInterface(root + "PeakListDialog")).setParams("Peak List for " + spec, this, spec); +case JSV.common.Annotation.AType.OverlayLegend: +return this.overlayLegendDialog = (JSV.common.JSViewer.getInterface(root + "OverlayLegendDialog")).setParams(this.pd().getViewTitle(), this, null); +case JSV.common.Annotation.AType.Views: +return this.viewDialog = (JSV.common.JSViewer.getInterface(root + "ViewsDialog")).setParams("View/Combine/Close Spectra", this, null); +default: +return null; +} +}, "JSV.common.Annotation.AType,JSV.common.Spectrum"); +Clazz.defineMethod(c$, "show", +function(what){ +this.getDialogManager(); +if (what.equals("properties")) { +this.dialogManager.showProperties(null, this.pd().getSpectrum()); +} else if (what.equals("errors")) { +this.dialogManager.showSourceErrors(null, this.currentSource); +} else if (what.equals("source")) { +if (this.currentSource == null) { +if (this.panelNodes.size() > 0) this.dialogManager.showMessageDialog(null, "Please Select a Spectrum", "Select Spectrum", 0); +return; +}this.dialogManager.showSource(this, this.pd().getSpectrum()); +} else if (what.startsWith("solutioncolorfill")) { +if (what.indexOf("all") >= 0) { +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().setSolutionColor(what); + +} else { +this.pd().setSolutionColor(what); +}} else if (what.startsWith("solutioncolor")) { +var msg = this.getSolutionColorStr(what.indexOf("false") < 0); +msg = "background-color:rgb(" + msg + ")'>
Predicted Solution Colour- RGB(" + msg + ")

"; +if (JSV.common.JSViewer.isJS) { +this.dialogManager.showMessage(this, "
", "Predicted Colour"); +}}}, "~S"); +Clazz.defineMethod(c$, "getDialogPrint", +function(isJob){ +if (!JSV.common.JSViewer.isJS) try { +var pl = (this.getPlatformInterface("PrintDialog")).set(this.offWindowFrame, this.lastPrintLayout, isJob).getPrintLayout(); +if (pl != null) this.lastPrintLayout = pl; +return pl; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return new JSV.common.PrintLayout(this.pd()); +}, "~B"); +Clazz.defineMethod(c$, "setIRmode", +function(mode){ +if (mode.equals("AtoT")) { +this.irMode = JSV.common.Spectrum.IRMode.TO_TRANS; +} else if (mode.equals("TtoA")) { +this.irMode = JSV.common.Spectrum.IRMode.TO_ABS; +} else { +this.irMode = JSV.common.Spectrum.IRMode.getMode(mode); +}}, "~S"); +Clazz.defineMethod(c$, "getOptionFromDialog", +function(items, title, label){ +return this.getDialogManager().getOptionFromDialog(null, items, this.selectedPanel, title, label); +}, "~A,~S,~S"); +Clazz.defineMethod(c$, "print", +function(fileName){ +return this.execWrite("PDF \"" + fileName + "\""); +}, "~S"); +Clazz.defineMethod(c$, "execWrite", +function(value){ +if (JSV.common.JSViewer.isJS && value == null) value = "PDF"; +var msg = (JSV.common.JSViewer.getInterface("JSV.export.Exporter")).write(this, value == null ? null : JSV.common.ScriptToken.getTokens(value), false); +this.si.writeStatus(msg); +return msg; +}, "~S"); +Clazz.defineMethod(c$, "$export", +function(type, n){ +if (type == null) type = "XY"; +var pd = this.pd(); +var nMax = pd.getNumberOfSpectraInCurrentSet(); +if (n < -1 || n >= nMax) return "Maximum spectrum index (0-based) is " + (nMax - 1) + "."; +var spec = (n < 0 ? pd.getSpectrum() : pd.getSpectrumAt(n)); +try { +return (JSV.common.JSViewer.getInterface("JSV.export.Exporter")).exportTheSpectrum(this, JSV.common.ExportType.getType(type), null, spec, 0, spec.getXYCoords().length - 1, null, type.equalsIgnoreCase("PDF")); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return null; +} else { +throw e; +} +} +}, "~S,~N"); +Clazz.overrideMethod(c$, "postByteArray", +function(fileName, bytes){ +return JSV.common.JSVFileManager.postByteArray(fileName, bytes); +}, "~S,~A"); +Clazz.defineMethod(c$, "getOutputChannel", +function(fileName, isBinary){ +var os = null; +{ +while (fileName.startsWith("/")) fileName = +fileName.substring(1); +}return new JU.OC().setParams(this, fileName, !isBinary, os); +}, "~S,~B"); +c$.getInterface = Clazz.defineMethod(c$, "getInterface", +function(name){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz.defineMethod(c$, "showMessage", +function(msg){ +if (this.selectedPanel != null && msg != null) this.selectedPanel.showMessage(msg, null); +}, "~S"); +Clazz.defineMethod(c$, "openFileFromDialog", +function(isAppend, isURL, simulationType, script){ +var url = null; +if (simulationType != null) { +url = this.fileHelper.getUrlFromDialog("Enter the name or identifier of a compound", this.recentSimulation); +if (url == null) return; +this.recentSimulation = url; +url = "$" + simulationType + "/" + url; +} else if (isURL) { +url = this.fileHelper.getUrlFromDialog("Enter the URL of a JCAMP-DX File", this.recentURL == null ? this.recentOpenURL : this.recentURL); +if (url == null) return; +this.recentOpenURL = url; +} else { +var userData = Clazz.newArray(-1, [Boolean.$valueOf(isAppend), script]); +var file = this.fileHelper.showFileOpenDialog(this.mainPanel, userData); +if (file != null) url = file.getFullPath(); +}if (url != null) this.runScriptNow("load " + (isAppend ? "APPEND " : "") + "\"" + url + "\"" + (script == null ? "" : ";" + script)); +}, "~B,~B,~S,~S"); +Clazz.defineMethod(c$, "openFile", +function(fileName, closeFirst){ +if (closeFirst && this.panelNodes != null) { +var source = JSV.common.PanelNode.findSourceByNameOrId(( new java.io.File(fileName)).getAbsolutePath(), this.panelNodes); +if (source != null) this.closeSource(source); +}this.si.siOpenDataOrFile(null, null, null, fileName, -1, -1, true, this.defaultLoadScript, null); +}, "~S,~B"); +Clazz.defineMethod(c$, "selectPanel", +function(jsvp, panelNodes){ +var iPanel = -1; +if (panelNodes != null) { +for (var i = panelNodes.size(); --i >= 0; ) { +var j = panelNodes.get(i).jsvp; +if (j === jsvp) { +iPanel = i; +} else { +j.setEnabled(false); +j.setFocusable(false); +j.getPanelData().closeAllDialogsExcept(JSV.common.Annotation.AType.NONE); +}} +this.markSelectedPanels(panelNodes, iPanel); +}return iPanel; +}, "JSV.api.JSVPanel,JU.Lst"); +Clazz.defineMethod(c$, "checkAutoIntegrate", +function(){ +if (this.autoIntegrate) this.pd().integrateAll(this.parameters); +}); +Clazz.defineMethod(c$, "parseInitScript", +function(params){ +if (params == null) params = ""; +var allParamTokens = new JSV.common.ScriptTokenizer(params, true); +if (JU.Logger.debugging) { +JU.Logger.info("Running in DEBUG mode"); +}while (allParamTokens.hasMoreTokens()) { +var token = allParamTokens.nextToken(); +var eachParam = new JSV.common.ScriptTokenizer(token, false); +var key = eachParam.nextToken(); +if (key.equalsIgnoreCase("SET")) key = eachParam.nextToken(); +key = key.toUpperCase(); +var st = JSV.common.ScriptToken.getScriptToken(key); +var value = JSV.common.ScriptToken.getValue(st, eachParam, token); +JU.Logger.info("KEY-> " + key + " VALUE-> " + value + " : " + st); +try { +switch (st) { +default: +this.parameters.set(null, st, value); +break; +case JSV.common.ScriptToken.UNKNOWN: +break; +case JSV.common.ScriptToken.APPLETID: +this.fullName = this.appletName + "__" + (this.appletName = value) + "__"; +var applet = null; +{ +self.Jmol && (applet = Jmol._applets[value]); +}this.html5Applet = applet; +break; +case JSV.common.ScriptToken.AUTOINTEGRATE: +this.autoIntegrate = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.COMPOUNDMENUON: +break; +case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +this.si.siExecSetCallback(st, value); +break; +case JSV.common.ScriptToken.ENDINDEX: +this.initialEndIndex = Integer.parseInt(value); +break; +case JSV.common.ScriptToken.INTERFACE: +this.checkOvelayInterface(value); +break; +case JSV.common.ScriptToken.IRMODE: +this.setIRmode(value); +break; +case JSV.common.ScriptToken.MENUON: +this.allowMenu = Boolean.parseBoolean(value); +break; +case JSV.common.ScriptToken.OBSCURE: +if (this.obscureTitleFromUser == null) this.obscureTitleFromUser = Boolean.$valueOf(value); +break; +case JSV.common.ScriptToken.STARTINDEX: +this.initialStartIndex = Integer.parseInt(value); +break; +case JSV.common.ScriptToken.SYNCID: +this.fullName = this.appletName + "__" + (this.syncID = value) + "__"; +break; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +}, "~S"); +Clazz.defineMethod(c$, "getSolutionColorStr", +function(asFit){ +var pt = JU.CU.colorPtFromInt(this.getSolutionColor(asFit), null); +return Clazz.floatToInt(pt.x) + "," + Clazz.floatToInt(pt.y) + "," + Clazz.floatToInt(pt.z); +}, "~B"); +Clazz.defineMethod(c$, "checkCommandLineForTip", +function(c, cmd, oneLineOnly){ +var isHelp = (c == '\1'); +if (!isHelp && c != '\0') { +if (c != '\t' && (c == '\n' || c.charCodeAt(0) < 32 || c.charCodeAt(0) > 126)) return null; +cmd += (Character.isISOControl(c) ? "" : "" + c); +}var tip; +if (cmd.indexOf(";") >= 0) cmd = cmd.substring(cmd.lastIndexOf(";") + 1); +var ret = null; +while (cmd.startsWith(" ")) cmd = cmd.substring(1); + +if (cmd.length == 0 && !isHelp) { +tip = ""; +} else { +var tokens = JSV.common.ScriptToken.getTokens(cmd); +if (tokens.size() == 0 && !isHelp) return ""; +var isExact = (cmd.endsWith(" ") || tokens.size() > 1 && oneLineOnly); +var list = JSV.common.ScriptToken.getScriptTokenList(tokens.size() == 0 ? null : tokens.get(0), isExact); +switch (list.size()) { +case 0: +tip = "?"; +break; +case 1: +var st = list.get(0); +tip = st.getTip(); +try { +if (tip.indexOf("TRUE") >= 0) tip = " (" + this.parameters.getBoolean(st) + ")"; + else if (st.name().indexOf("COLOR") >= 0) tip = " (" + JU.CU.toRGBHexString(this.parameters.getElementColor(st)) + ")"; + else tip = ""; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +if (c == '\t' || isExact || !oneLineOnly) { +tip = st.name() + " " + st.getTip() + tip + " " + st.getDescription(); +if (c == '\t') ret = st.name() + " "; +break; +}tip = st.name() + " " + tip; +break; +default: +tip = JSV.common.ScriptToken.getNameList(list); +} +}if (oneLineOnly) { +this.si.writeStatus(tip); +} else { +ret = tip; +}return ret; +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "checkScript", +function(script){ +return this.checkCommandLineForTip('\0', script, false); +}, "~S"); +Clazz.defineMethod(c$, "execHelp", +function(value){ +var s = this.checkCommandLineForTip('\1', value, false); +if (s.indexOf(" ") < 0 && s.indexOf(",") > 0) { +var tokens = JU.PT.split(s, ","); +java.util.Arrays.sort(tokens); +s = ""; +for (var i = 0; i < tokens.length; i++) { +var st = JSV.common.ScriptToken.getScriptToken(tokens[i]); +s += tokens[i] + " " + st.getTip() + "\n " + st.getDescription() + "\n\n"; +} +this.getDialogManager().showMessage(null, s, "HELP " + value); +} else { +this.selectedPanel.showMessage(s, "Help " + value); +}System.out.println(s); +}, "~S"); +c$.testScript = " src=\"JPECVIEW\" file=\"http://SIMULATION/$caffeine\""; +c$.isJS = false; +c$.isSwingJS = false; +c$.jmolObject = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/Measurement.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Measurement.js new file mode 100755 index 000000000000..379c0a65bd14 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Measurement.js @@ -0,0 +1,75 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.Annotation", "$.Coordinate"], "JSV.common.Measurement", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pt2 = null; +this.value = 0; +Clazz.instantialize(this, arguments);}, JSV.common, "Measurement", JSV.common.Annotation); +Clazz.prepareFields (c$, function(){ +this.pt2 = new JSV.common.Coordinate(); +}); +Clazz.defineMethod(c$, "setM1", +function(x, y, spec){ +this.setA(x, y, spec, "", false, false, 0, 6); +this.setPt2(this.getXVal(), this.getYVal()); +return this; +}, "~N,~N,JSV.common.Spectrum"); +Clazz.defineMethod(c$, "copyM", +function(){ +var m = new JSV.common.Measurement(); +m.setA(this.getXVal(), this.getYVal(), this.spec, this.text, false, false, this.offsetX, this.offsetY); +m.setPt2(this.pt2.getXVal(), this.pt2.getYVal()); +return m; +}); +Clazz.defineMethod(c$, "setPt2", +function(spec, doSetPt2){ +this.spec = spec; +if (doSetPt2) this.setPt2(this.getXVal(), this.getYVal()); +return this; +}, "JSV.common.Spectrum,~B"); +Clazz.defineMethod(c$, "setPt2", +function(x, y){ +this.pt2.setXVal(x); +this.pt2.setYVal(y); +this.value = Math.abs(x - this.getXVal()); +this.text = this.spec.setMeasurementText(this); +}, "~N,~N"); +Clazz.defineMethod(c$, "getSpectrum", +function(){ +return this.spec; +}); +Clazz.defineMethod(c$, "setValue", +function(value){ +this.value = value; +this.text = this.spec.setMeasurementText(this); +}, "~N"); +Clazz.defineMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz.defineMethod(c$, "getXVal2", +function(){ +return this.pt2.getXVal(); +}); +Clazz.defineMethod(c$, "getYVal2", +function(){ +return this.pt2.getYVal(); +}); +Clazz.overrideMethod(c$, "addSpecShift", +function(dx){ +this.setXVal(this.getXVal() + dx); +this.pt2.setXVal(this.pt2.getXVal() + dx); +}, "~N"); +Clazz.defineMethod(c$, "setYVal2", +function(y2){ +this.pt2.setYVal(y2); +}, "~N"); +Clazz.defineMethod(c$, "overlaps", +function(x1, x2){ +return (Math.min(this.getXVal(), this.getXVal2()) < Math.max(x1, x2) && Math.max(this.getXVal(), this.getXVal2()) > Math.min(x1, x2)); +}, "~N,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return "[" + this.getXVal() + "," + this.pt2.getXVal() + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/MeasurementData.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/MeasurementData.js new file mode 100755 index 000000000000..fbd1bce0ebc4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/MeasurementData.js @@ -0,0 +1,142 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JU.Lst", "JSV.api.AnnotationData"], "JSV.common.MeasurementData", ["JU.AU", "$.DF", "JSV.common.Annotation", "$.Parameters"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.type = null; +this.spec = null; +this.units = null; +this.precision = 0; +this.myParams = null; +this.isON = true; +this.key = null; +Clazz.instantialize(this, arguments);}, JSV.common, "MeasurementData", JU.Lst, JSV.api.AnnotationData); +Clazz.makeConstructor(c$, +function(type, spec){ +Clazz.superConstructor (this, JSV.common.MeasurementData, []); +this.type = type; +this.spec = spec; +this.myParams = new JSV.common.Parameters().setName("MeasurementData"); +}, "JSV.common.Annotation.AType,JSV.common.Spectrum"); +Clazz.defineMethod(c$, "getMeasurements", +function(){ +return this; +}); +Clazz.overrideMethod(c$, "getAType", +function(){ +return this.type; +}); +Clazz.overrideMethod(c$, "getState", +function(){ +return this.isON; +}); +Clazz.overrideMethod(c$, "setState", +function(b){ +this.isON = b; +}, "~B"); +Clazz.defineMethod(c$, "setMeasurements", +function(measurements){ +}, "JU.Lst"); +Clazz.overrideMethod(c$, "getParameters", +function(){ +return this.myParams; +}); +Clazz.defineMethod(c$, "getDataHeader", +function(){ +return JSV.common.MeasurementData.HEADER; +}); +Clazz.defineMethod(c$, "getMeasurementListArray", +function(units){ +this.units = units; +var ddata = this.getMeasurementListArrayReal(units); +var precisionX = (this.spec.isNMR() ? 4 : 2); +var precisionDX = (this.spec.isHNMR() && units.equals("ppm") ? 4 : 2); +var data = new Array(this.size()); +for (var i = this.size(); --i >= 0; ) data[i] = Clazz.newArray(-1, ["" + (i + 1), JU.DF.formatDecimalDbl(ddata[i][0], precisionX), JU.DF.formatDecimalDbl(ddata[i][1], precisionX), JU.DF.formatDecimalDbl(ddata[i][2], precisionDX)]); + +return data; +}, "~S"); +Clazz.defineMethod(c$, "getMeasurementListArrayReal", +function(units){ +var toHz = this.spec.isNMR() && units.equalsIgnoreCase("HZ"); +var data = JU.AU.newDouble2(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; ) { +var y = this.get(i).getValue(); +if (toHz) y *= this.spec.getObservedFreq(); +data[pt++] = Clazz.newDoubleArray(-1, [this.get(i).getXVal(), this.get(i).getXVal2(), y]); +} +return data; +}, "~S"); +c$.checkParameters = Clazz.defineMethod(c$, "checkParameters", +function(md, p){ +if (md.size() == 0) return false; +var myParams = md.getParameters(); +switch (md.getAType()) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.PeakList: +return (p.peakListInterpolation.equals(myParams.peakListInterpolation) && p.peakListThreshold == myParams.peakListThreshold); +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +} +return false; +}, "JSV.common.MeasurementData,JSV.common.ColorParameters"); +Clazz.overrideMethod(c$, "getSpectrum", +function(){ +return this.spec; +}); +Clazz.overrideMethod(c$, "getData", +function(){ +return this; +}); +Clazz.defineMethod(c$, "clear", +function(x1, x2){ +for (var i = this.size(); --i >= 0; ) { +var $in = this.get(i); +if ($in.text.length == 0 || $in.overlaps(x1, x2)) { +this.removeItemAt(i); +}} +}, "~N,~N"); +Clazz.defineMethod(c$, "find", +function(x){ +for (var i = this.size(); --i >= 0; ) { +var $in = this.get(i); +if ($in.overlaps(x, x)) { +return i; +}} +return -1; +}, "~N"); +Clazz.overrideMethod(c$, "setSpecShift", +function(dx){ +for (var i = this.size(); --i >= 0; ) { +var m = this.get(i); +var x = m.getXVal() + dx; +m.setXVal(x); +m.setValue(x); +m.text = JU.DF.formatDecimalDbl(x, this.precision); +} +}, "~N"); +Clazz.overrideMethod(c$, "getGraphSetKey", +function(){ +return this.key; +}); +Clazz.overrideMethod(c$, "setGraphSetKey", +function(key){ +this.key = key; +}, "~S"); +Clazz.overrideMethod(c$, "isVisible", +function(){ +return true; +}); +Clazz.defineMethod(c$, "getInfo", +function(info){ +info.put("header", this.getDataHeader()); +info.put("table", this.getMeasurementListArrayReal("ppm")); +if (this.units != null) info.put("units", this.units); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "isDialog", +function(){ +return false; +}); +c$.HEADER = Clazz.newArray(-1, ["", "start", "end", "value"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PDFWriter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PDFWriter.js new file mode 100755 index 000000000000..891cf0374727 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PDFWriter.js @@ -0,0 +1,151 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.api.JSVPdfWriter", "J.api.GenericGraphics"], "JSV.common.PDFWriter", ["java.util.Hashtable", "javajs.export.PDFCreator", "JU.CU", "JSV.common.JSVersion"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g2d = null; +this.date = null; +this.pdf = null; +this.inPath = false; +this.rgb = null; +Clazz.instantialize(this, arguments);}, JSV.common, "PDFWriter", null, [J.api.GenericGraphics, JSV.api.JSVPdfWriter]); +Clazz.prepareFields (c$, function(){ +this.rgb = Clazz.newFloatArray (3, 0); +}); +Clazz.makeConstructor(c$, +function(){ +this.pdf = new javajs["export"].PDFCreator(); +}); +Clazz.overrideMethod(c$, "createPdfDocument", +function(panel, pl, os){ +var isLandscape = pl.layout.equals("landscape"); +this.date = pl.date; +this.pdf.setOutputStream(os); +this.g2d = panel.getPanelData().g2d; +try { +this.pdf.newDocument(pl.paperWidth, pl.paperHeight, isLandscape); +var ht = new java.util.Hashtable(); +ht.put("Producer", JSV.common.JSVersion.VERSION); +ht.put("Creator", "JSpecView " + JSV.common.JSVersion.VERSION); +ht.put("Author", "JSpecView"); +if (this.date != null) ht.put("CreationDate", this.date); +this.pdf.addInfo(ht); +panel.getPanelData().printPdf(this, pl); +this.pdf.closeDocument(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +panel.showMessage(e.toString(), "PDF Creation Error"); +} else { +throw e; +} +} +}, "JSV.api.JSVPanel,JSV.common.PrintLayout,java.io.OutputStream"); +Clazz.overrideMethod(c$, "canDoLineTo", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "doStroke", +function(g, isBegin){ +this.inPath = isBegin; +if (!this.inPath) this.pdf.stroke(); +}, "~O,~B"); +Clazz.overrideMethod(c$, "drawCircle", +function(g, x, y, diameter){ +this.pdf.doCircle(x, y, Clazz.doubleToInt(diameter / 2.0), false); +}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawLine", +function(g, x0, y0, x1, y1){ +this.pdf.moveto(x0, y0); +this.pdf.lineto(x1, y1); +if (!this.inPath) this.pdf.stroke(); +}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawPolygon", +function(g, axPoints, ayPoints, nPoints){ +this.pdf.doPolygon(axPoints, ayPoints, nPoints, false); +}, "~O,~A,~A,~N"); +Clazz.overrideMethod(c$, "drawRect", +function(g, x, y, width, height){ +this.pdf.doRect(x, y, width, height, false); +}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawString", +function(g, s, x, y){ +this.pdf.drawStringRotated(s, x, y, 0); +}, "~O,~S,~N,~N"); +Clazz.overrideMethod(c$, "drawStringRotated", +function(g, s, x, y, angle){ +this.pdf.drawStringRotated(s, x, y, Clazz.doubleToInt(angle)); +}, "~O,~S,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillBackground", +function(g, bgcolor){ +}, "~O,javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "fillCircle", +function(g, x, y, diameter){ +this.pdf.doCircle(x, y, Clazz.doubleToInt(diameter / 2.0), true); +}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.pdf.doPolygon(axPoints, ayPoints, nPoints, true); +}, "~O,~A,~A,~N"); +Clazz.overrideMethod(c$, "fillRect", +function(g, x, y, width, height){ +this.pdf.doRect(x, y, width, height, true); +}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "lineTo", +function(g, x, y){ +this.pdf.lineto(x, y); +}, "~O,~N,~N"); +Clazz.overrideMethod(c$, "setGraphicsColor", +function(g, c){ +JU.CU.toRGB3f(c.getRGB(), this.rgb); +this.pdf.setColor(this.rgb, true); +this.pdf.setColor(this.rgb, false); +}, "~O,javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "setFont", +function(g, font){ +var fname = "/Helvetica"; +switch (font.idFontStyle) { +case 1: +fname += "-Bold"; +break; +case 3: +fname += "-BoldOblique"; +break; +case 2: +fname += "-Oblique"; +break; +} +this.pdf.setFont(fname, font.fontSizeNominal); +return font; +}, "~O,JU.Font"); +Clazz.overrideMethod(c$, "setStrokeBold", +function(g, tf){ +this.pdf.setLineWidth(tf ? 2 : 1); +}, "~O,~B"); +Clazz.overrideMethod(c$, "translateScale", +function(g, x, y, scale){ +this.pdf.translateScale(x, y, scale); +}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "newGrayScaleImage", +function(g, image, width, height, buffer){ +this.pdf.addImageResource(image, width, height, buffer, false); +return image; +}, "~O,~O,~N,~N,~A"); +Clazz.overrideMethod(c$, "drawGrayScaleImage", +function(g, image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1){ +this.pdf.drawImage(image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1); +}, "~O,~O,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "setWindowParameters", +function(width, height){ +}, "~N,~N"); +Clazz.defineMethod(c$, "getColor1", +function(argb){ +return this.g2d.getColor1(argb); +}, "~N"); +Clazz.defineMethod(c$, "getColor3", +function(red, green, blue){ +return this.g2d.getColor3(red, green, blue); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "getColor4", +function(r, g, b, a){ +return this.g2d.getColor4(r, g, b, a); +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PanelData.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PanelData.js new file mode 100755 index 000000000000..c893330ede6b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PanelData.js @@ -0,0 +1,1217 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.lang.Enum", "J.api.EventManager", "java.util.Hashtable", "JU.Lst"], "JSV.common.PanelData", ["JU.CU", "JSV.common.Annotation", "$.Coordinate", "$.GraphSet", "$.JSVFileManager", "$.JSVersion", "$.JSViewer", "$.MeasurementData", "$.Parameters", "$.PeakPickEvent", "$.ScriptToken", "$.Spectrum", "$.SubSpecChangeEvent", "$.ZoomEvent", "JU.Font", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.g2d = null; +this.g2d0 = null; +this.vwr = null; +this.listeners = null; +this.currentGraphSet = null; +this.options = null; +this.jsvp = null; +this.graphSets = null; +this.currentSplitPoint = 0; +this.thisWidget = null; +this.coordClicked = null; +this.coordsClicked = null; +this.ctrlPressed = false; +this.shiftPressed = false; +this.drawXAxisLeftToRight = false; +this.isIntegralDrag = false; +this.xAxisLeftToRight = true; +this.scalingFactor = 1; +this.integralShiftMode = 0; +this.left = 60; +this.right = 50; +this.coordStr = ""; +this.startupPinTip = "Click to set."; +this.title = null; +this.clickCount = 0; +this.nSpectra = 0; +this.thisWidth = 0; +this.thisHeight = 0; +this.startIndex = 0; +this.endIndex = 0; +this.commonFilePath = null; +this.viewTitle = null; +this.displayFontName = null; +this.titleFontName = null; +this.isPrinting = false; +this.doReset = true; +this.printingFontName = null; +this.printGraphPosition = "default"; +this.titleDrawn = false; +this.display1D = false; +this.isLinked = false; +this.printJobTitle = null; +this.spectra = null; +this.taintedAll = true; +this.testingJavaScript = false; +this.currentFont = null; +this.mouseState = null; +this.gridOn = false; +this.titleOn = false; +this.peakTabsOn = false; +this.mouseX = 0; +this.mouseY = 0; +this.linking = false; +this.xPixelClicked = 0; +this.coordinatesColor = null; +this.gridColor = null; +this.integralPlotColor = null; +this.peakTabColor = null; +this.plotAreaColor = null; +this.scaleColor = null; +this.titleColor = null; +this.unitsColor = null; +this.highlightColor = null; +this.zoomBoxColor = null; +this.zoomBoxColor2 = null; +this.BLACK = null; +this.bgcolor = null; +this.optionsSaved = null; +this.gMain = null; +Clazz.instantialize(this, arguments);}, JSV.common, "PanelData", null, J.api.EventManager); +Clazz.prepareFields (c$, function(){ +this.listeners = new JU.Lst(); +this.options = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(panel, viewer){ +this.vwr = viewer; +this.jsvp = panel; +this.g2d = this.g2d0 = viewer.g2d; +this.BLACK = this.g2d.getColor1(0); +this.highlightColor = this.g2d.getColor4(255, 0, 0, 200); +this.zoomBoxColor = this.g2d.getColor4(150, 150, 100, 130); +this.zoomBoxColor2 = this.g2d.getColor4(150, 100, 100, 130); +}, "JSV.api.JSVPanel,JSV.common.JSViewer"); +Clazz.defineMethod(c$, "addListener", +function(listener){ +if (!this.listeners.contains(listener)) { +this.listeners.addLast(listener); +}}, "JSV.api.PanelListener"); +Clazz.defineMethod(c$, "getCurrentGraphSet", +function(){ +return this.currentGraphSet; +}); +Clazz.defineMethod(c$, "dispose", +function(){ +this.jsvp = null; +for (var i = 0; i < this.graphSets.size(); i++) this.graphSets.get(i).dispose(); + +this.graphSets = null; +this.currentFont = null; +this.currentGraphSet = null; +this.coordClicked = null; +this.coordsClicked = null; +this.thisWidget = null; +this.options = null; +this.listeners = null; +}); +Clazz.defineMethod(c$, "setViewTitle", +function(title){ +this.viewTitle = title; +}, "~S"); +Clazz.defineMethod(c$, "getViewTitle", +function(){ +return (this.viewTitle == null ? this.getTitle() : this.viewTitle); +}); +Clazz.defineMethod(c$, "getInfo", +function(selectedOnly, key){ +var info = new java.util.Hashtable(); +var sets = null; +if (selectedOnly) return this.currentGraphSet.getInfo(key, this.getCurrentSpectrumIndex()); +var entries = this.options.entrySet(); +if ("".equals(key)) { +var val = "type title nSets "; +for (var entry, $entry = entries.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) val += entry.getKey().name() + " "; + +info.put("KEYS", val); +} else { +for (var entry, $entry = entries.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) JSV.common.Parameters.putInfo(key, info, entry.getKey().name(), entry.getValue()); + +JSV.common.Parameters.putInfo(key, info, "type", this.getSpectrumAt(0).getDataType()); +JSV.common.Parameters.putInfo(key, info, "title", this.title); +JSV.common.Parameters.putInfo(key, info, "nSets", Integer.$valueOf(this.graphSets.size())); +}sets = new JU.Lst(); +for (var i = this.graphSets.size(); --i >= 0; ) sets.addLast(this.graphSets.get(i).getInfo(key, -1)); + +info.put("sets", sets); +return info; +}, "~B,~S"); +Clazz.defineMethod(c$, "setBooleans", +function(parameters, st){ +if (st == null) { +var booleans = parameters.getBooleans(); +for (var entry, $entry = booleans.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setBooleans(parameters, entry.getKey()); + +return; +}this.setBoolean(st, parameters.getBoolean(st)); +}, "JSV.common.Parameters,JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "setBoolean", +function(st, isTrue){ +this.setTaintedAll(); +if (st === JSV.common.ScriptToken.REVERSEPLOT) { +this.currentGraphSet.setReversePlot(isTrue); +return; +}this.options.put(st, Boolean.$valueOf(isTrue)); +switch (st) { +case JSV.common.ScriptToken.DISPLAY1D: +case JSV.common.ScriptToken.DISPLAY2D: +this.doReset = true; +break; +} +}, "JSV.common.ScriptToken,~B"); +Clazz.defineMethod(c$, "getBoolean", +function(st){ +if (st === JSV.common.ScriptToken.REVERSEPLOT) return this.currentGraphSet.reversePlot; +if (this.options == null) return false; +var b = this.options.get(st); +return (b != null && (Clazz.instanceOf(b, Boolean)) && (b) === Boolean.TRUE); +}, "JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "setFontName", +function(st, fontName){ +switch (st) { +case JSV.common.ScriptToken.DISPLAYFONTNAME: +this.displayFontName = fontName; +break; +case JSV.common.ScriptToken.TITLEFONTNAME: +this.titleFontName = fontName; +break; +} +if (fontName != null) this.options.put(st, fontName); +}, "JSV.common.ScriptToken,~S"); +Clazz.defineMethod(c$, "getDisplay1D", +function(){ +return this.display1D; +}); +Clazz.defineMethod(c$, "setTaintedAll", +function(){ +this.taintedAll = true; +}); +Clazz.defineMethod(c$, "initOne", +function(spectrum){ +this.spectra = new JU.Lst(); +this.spectra.addLast(spectrum); +this.initMany(this.spectra, 0, 0); +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "initMany", +function(spectra, startIndex, endIndex){ +this.startIndex = startIndex; +this.endIndex = endIndex; +this.nSpectra = spectra.size(); +this.spectra = spectra; +this.commonFilePath = spectra.get(0).getFilePath(); +for (var i = 0; i < this.nSpectra; i++) if (!this.commonFilePath.equalsIgnoreCase(spectra.get(i).getFilePath())) { +this.commonFilePath = null; +break; +} +this.setGraphSets(JSV.common.PanelData.LinkMode.NONE); +}, "JU.Lst,~N,~N"); +Clazz.defineMethod(c$, "setGraphSets", +function(linkMode){ +this.graphSets = JSV.common.GraphSet.createGraphSetsAndSetLinkMode(this, this.jsvp, this.spectra, this.startIndex, this.endIndex, linkMode); +this.currentGraphSet = this.graphSets.get(0); +this.title = this.getSpectrum().getTitleLabel(); +}, "JSV.common.PanelData.LinkMode"); +Clazz.defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +var pi2 = null; +for (var i = 0; i < this.graphSets.size(); i++) if ((pi2 = this.graphSets.get(i).findMatchingPeakInfo(pi)) != null) break; + +return pi2; +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "integrateAll", +function(parameters){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).integrate(-1, parameters); + +}, "JSV.common.ColorParameters"); +Clazz.defineMethod(c$, "getNumberOfGraphSets", +function(){ +return this.graphSets.size(); +}); +Clazz.defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz.defineMethod(c$, "refresh", +function(){ +this.doReset = true; +}); +Clazz.defineMethod(c$, "addAnnotation", +function(tokens){ +var title = this.currentGraphSet.addAnnotation(tokens, this.getTitle()); +if (title != null) this.title = title; +}, "JU.Lst"); +Clazz.defineMethod(c$, "addPeakHighlight", +function(peakInfo){ +for (var i = 0; i < this.graphSets.size(); i++) this.graphSets.get(i).addPeakHighlight(peakInfo); + +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +var pi = this.currentGraphSet.selectPeakByFileIndex(filePath, index, atomKey); +if (pi == null) for (var i = this.graphSets.size(); --i >= 0; ) if (this.graphSets.get(i) !== this.currentGraphSet && (pi = this.graphSets.get(i).selectPeakByFileIndex(filePath, index, atomKey)) != null) break; + +return pi; +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "setPlotColors", +function(colors){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setPlotColors(colors); + +}, "~A"); +Clazz.defineMethod(c$, "selectSpectrum", +function(filePath, type, model, andCurrent){ +if (andCurrent) this.currentGraphSet.selectSpectrum(filePath, type, model); +if ("ID".equals(type)) { +this.jumpToSpectrumIndex(this.getCurrentSpectrumIndex(), true); +return; +}for (var i = 0; i < this.graphSets.size(); i++) if (this.graphSets.get(i) !== this.currentGraphSet) this.graphSets.get(i).selectSpectrum(filePath, type, model); + +}, "~S,~S,~S,~B"); +Clazz.defineMethod(c$, "hasFileLoaded", +function(filePath){ +for (var i = this.graphSets.size(); --i >= 0; ) if (this.graphSets.get(i).hasFileLoaded(filePath)) return true; + +return false; +}, "~S"); +Clazz.defineMethod(c$, "clearAllView", +function(){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).resetViewCompletely(); + +}); +Clazz.defineMethod(c$, "drawGraph", +function(gMain, gFront, gRear, width, height, addFilePath){ +var withCoords; +this.gMain = gMain; +this.display1D = !this.isLinked && this.getBoolean(JSV.common.ScriptToken.DISPLAY1D); +var top = 40; +var bottom = 50; +var isResized = (this.isPrinting || this.doReset || this.thisWidth != width || this.thisHeight != height); +if (isResized) this.setTaintedAll(); +if (this.taintedAll) this.g2d.fillBackground(gRear, this.bgcolor); +if (gFront !== gMain) { +this.g2d.fillBackground(gFront, null); +if (gMain !== gRear) this.g2d.fillBackground(gMain, null); +this.g2d.setStrokeBold(gMain, false); +}if (this.isPrinting) { +top *= 3; +bottom *= 3; +this.scalingFactor = 10; +withCoords = false; +} else { +this.scalingFactor = 1; +withCoords = this.getBoolean(JSV.common.ScriptToken.COORDINATESON); +this.titleOn = this.getBoolean(JSV.common.ScriptToken.TITLEON); +this.gridOn = this.getBoolean(JSV.common.ScriptToken.GRIDON); +this.peakTabsOn = this.getBoolean(JSV.common.ScriptToken.PEAKTABSON); +}var pointsOnly = this.getBoolean(JSV.common.ScriptToken.POINTSONLY); +this.doReset = false; +this.titleDrawn = false; +this.thisWidth = width; +this.thisHeight = height; +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).drawGraphSet(gMain, gFront, gRear, width, height, this.left, this.right, top, bottom, isResized, this.taintedAll, pointsOnly); + +if (this.titleOn && !this.titleDrawn && this.taintedAll) this.drawTitle(gMain, height * this.scalingFactor, width * this.scalingFactor, this.getDrawTitle(this.isPrinting)); +if (withCoords && this.coordStr != null) this.drawCoordinates(gFront, top, this.thisWidth - this.right, top - 20); +if (addFilePath && this.taintedAll) { +this.printFilePath(gMain, this.left, height, this.commonFilePath != null ? this.commonFilePath : this.graphSets.size() == 1 && this.currentGraphSet.getTitle(true) != null ? this.getSpectrum().getFilePath() : null); +}if (this.isPrinting) { +this.printVersion(gMain, height); +}if (!this.testingJavaScript && (this.isPrinting || gMain === gFront)) this.setTaintedAll(); + else this.taintedAll = false; +}, "~O,~O,~O,~N,~N,~B"); +Clazz.defineMethod(c$, "drawCoordinates", +function(g, top, x, y){ +this.g2d.setGraphicsColor(g, this.coordinatesColor); +var font = this.setFont(g, this.jsvp.getWidth(), 1, 14, true); +this.g2d.drawString(g, this.coordStr, x - font.stringWidth(this.coordStr), y); +}, "~O,~N,~N,~N"); +Clazz.defineMethod(c$, "setFont", +function(g, width, style, size, isLabel){ +return this.g2d.setFont(g, this.getFont(g, width, style, size, isLabel)); +}, "~O,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "printFilePath", +function(g, x, y, s){ +if (s == null) return; +x *= this.scalingFactor; +y *= this.scalingFactor; +if (s.indexOf("?") > 0) s = s.substring(s.indexOf("?") + 1); +s = s.substring(s.lastIndexOf("/") + 1); +s = s.substring(s.lastIndexOf("\\") + 1); +this.g2d.setGraphicsColor(g, this.BLACK); +var font = this.setFont(g, 1000, 0, 9, true); +if (x != this.left * this.scalingFactor) x -= font.stringWidth(s); +this.g2d.drawString(g, s, x, y - font.getHeight()); +}, "~O,~N,~N,~S"); +Clazz.defineMethod(c$, "printVersion", +function(g, pageHeight){ +this.g2d.setGraphicsColor(g, this.BLACK); +var font = this.setFont(g, 100, 0, 12, true); +var s = this.jsvp.getApiPlatform().getDateFormat(null) + " JSpecView " + JSV.common.JSVersion.VERSION_SHORT; +var w = font.stringWidth(s); +this.g2d.drawString(g, s, (this.thisWidth - this.right) * this.scalingFactor - w, pageHeight * this.scalingFactor - font.getHeight() * 3); +}, "~O,~N"); +Clazz.defineMethod(c$, "drawTitle", +function(g, pageHeight, pageWidth, title){ +title = title.$replace('\n', ' '); +var font = this.getFont(g, pageWidth, this.isPrinting || this.getBoolean(JSV.common.ScriptToken.TITLEBOLDON) ? 1 : 0, 14, true); +var nPixels = font.stringWidth(title); +if (nPixels > pageWidth) { +var size = Clazz.doubleToInt(14.0 * pageWidth / nPixels); +if (size < 10) size = 10; +font = this.getFont(g, pageWidth, this.isPrinting || this.getBoolean(JSV.common.ScriptToken.TITLEBOLDON) ? 1 : 0, size, true); +}this.g2d.setGraphicsColor(g, this.titleColor); +this.setCurrentFont(this.g2d.setFont(g, font)); +this.g2d.drawString(g, title, (this.isPrinting ? this.left * this.scalingFactor : 5), pageHeight - Clazz.doubleToInt(font.getHeight() * (this.isPrinting ? 2 : 0.5))); +}, "~O,~N,~N,~S"); +Clazz.defineMethod(c$, "setCurrentFont", +function(font){ +this.currentFont = font; +}, "JU.Font"); +Clazz.defineMethod(c$, "getFontHeight", +function(){ +return this.currentFont.getAscent(); +}); +Clazz.defineMethod(c$, "getStringWidth", +function(s){ +return this.currentFont.stringWidth(s); +}, "~S"); +Clazz.defineMethod(c$, "selectFromEntireSet", +function(iSpec){ +for (var i = 0, pt = 0; i < this.graphSets.size(); i++) { +if (iSpec == -2147483648) { +this.graphSets.get(i).setSelected(-1); +continue; +}var specs = this.graphSets.get(i).spectra; +for (var j = 0; j < specs.size(); j++, pt++) if (iSpec < 0 || iSpec == pt) this.graphSets.get(i).setSelected(j); + +} +}, "~N"); +Clazz.defineMethod(c$, "addToList", +function(iSpec, list){ +for (var i = 0; i < this.spectra.size(); i++) if (iSpec < 0 || i == iSpec) list.addLast(this.spectra.get(i)); + +}, "~N,JU.Lst"); +Clazz.defineMethod(c$, "scaleSelectedBy", +function(f){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).scaleSelectedBy(f); + +}, "~N"); +Clazz.defineMethod(c$, "setCurrentGraphSet", +function(gs, yPixel){ +var splitPoint = (gs.nSplit > 1 ? gs.getSplitPoint(yPixel) : gs.getCurrentSpectrumIndex()); +var isNewSet = (this.currentGraphSet !== gs); +var isNewSplitPoint = (isNewSet || this.currentSplitPoint != splitPoint); +this.currentGraphSet = gs; +this.currentSplitPoint = splitPoint; +if (isNewSet || gs.nSplit > 1 && isNewSplitPoint) this.setSpectrum(splitPoint, true); +if (!isNewSet) { +isNewSet = gs.checkSpectrumClickedEvent(this.mouseX, this.mouseY, this.clickCount); +if (!isNewSet) return false; +this.currentSplitPoint = splitPoint = gs.getCurrentSpectrumIndex(); +this.setSpectrum(splitPoint, true); +}this.jumpToSpectrumIndex(splitPoint, isNewSet || gs.nSplit > 1 && isNewSplitPoint); +return isNewSet; +}, "JSV.common.GraphSet,~N"); +Clazz.defineMethod(c$, "jumpToSpectrum", +function(spec){ +var index = this.currentGraphSet.getSpectrumIndex(spec); +this.jumpToSpectrumIndex(index, true); +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "jumpToSpectrumIndex", +function(index, doSetSpec){ +if (index < 0 || index >= this.currentGraphSet.nSpectra) return; +this.currentSplitPoint = index; +if (doSetSpec) this.setSpectrum(this.currentSplitPoint, this.currentGraphSet.nSplit > 1); +var spec = this.getSpectrum(); +this.notifySubSpectrumChange(spec.getSubIndex(), spec); +}, "~N,~B"); +Clazz.defineMethod(c$, "splitStack", +function(doSplit){ +this.currentGraphSet.splitStack(doSplit); +}, "~B"); +Clazz.defineMethod(c$, "getNumberOfSpectraInCurrentSet", +function(){ +return this.currentGraphSet.nSpectra; +}); +Clazz.defineMethod(c$, "getSourceID", +function(){ +var id = this.getSpectrum().sourceID; +return (id == null ? this.getSpectrumAt(0).sourceID : id); +}); +Clazz.defineMethod(c$, "getStartingPointIndex", +function(index){ +return this.currentGraphSet.viewData.getStartingPointIndex(index); +}, "~N"); +Clazz.defineMethod(c$, "getEndingPointIndex", +function(index){ +return this.currentGraphSet.viewData.getEndingPointIndex(index); +}, "~N"); +Clazz.defineMethod(c$, "haveSelectedSpectrum", +function(){ +return this.currentGraphSet.haveSelectedSpectrum(); +}); +Clazz.defineMethod(c$, "getShowAnnotation", +function(type){ +return this.currentGraphSet.getShowAnnotation(type, -1); +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "showAnnotation", +function(type, tfToggle){ +this.currentGraphSet.setShowAnnotation(type, tfToggle); +}, "JSV.common.Annotation.AType,Boolean"); +Clazz.defineMethod(c$, "setYStackOffsetPercent", +function(offset){ +this.currentGraphSet.yStackOffsetPercent = offset; +}, "~N"); +Clazz.defineMethod(c$, "setSpectrum", +function(iSpec, isSplit){ +this.currentGraphSet.setSpectrum(iSpec, isSplit); +}, "~N,~B"); +Clazz.defineMethod(c$, "getSpectrum", +function(){ +return this.currentGraphSet.getSpectrum(); +}); +Clazz.defineMethod(c$, "setSpecForIRMode", +function(spec){ +this.setTaintedAll(); +var spec0 = this.currentGraphSet.getSpectrum(); +this.currentGraphSet.setSpectrumJDX(spec); +for (var i = 0; i < this.spectra.size(); i++) if (this.spectra.get(i) === spec0) this.spectra.set(i, spec); + +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "isShowAllStacked", +function(){ +return this.currentGraphSet.showAllStacked; +}); +Clazz.defineMethod(c$, "getCurrentSpectrumIndex", +function(){ +return this.currentGraphSet.getCurrentSpectrumIndex(); +}); +Clazz.defineMethod(c$, "getSpectrumAt", +function(index){ +if (this.currentGraphSet == null) return null; +return this.currentGraphSet.getSpectrumAt(index); +}, "~N"); +Clazz.defineMethod(c$, "addHighlight", +function(gs, x1, x2, spec, r, g, b, a){ +(gs == null ? this.currentGraphSet : gs).addHighlight(x1, x2, spec, this.g2d.getColor4(r, g, b, a)); +}, "JSV.common.GraphSet,~N,~N,JSV.common.Spectrum,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "removeHighlight", +function(x1, x2){ +this.currentGraphSet.removeHighlight(x1, x2); +}, "~N,~N"); +Clazz.defineMethod(c$, "removeAllHighlights", +function(){ +this.currentGraphSet.removeAllHighlights(); +}); +Clazz.defineMethod(c$, "setZoom", +function(x1, y1, x2, y2){ +this.currentGraphSet.setZoom(x1, y1, x2, y2); +this.doReset = true; +this.setTaintedAll(); +this.notifyListeners( new JSV.common.ZoomEvent()); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "resetView", +function(){ +this.currentGraphSet.resetView(); +}); +Clazz.defineMethod(c$, "previousView", +function(){ +this.currentGraphSet.previousView(); +}); +Clazz.defineMethod(c$, "nextView", +function(){ +this.currentGraphSet.nextView(); +}); +Clazz.defineMethod(c$, "getSelectedIntegral", +function(){ +return this.currentGraphSet.getSelectedIntegral(); +}); +Clazz.defineMethod(c$, "advanceSubSpectrum", +function(dir){ +this.currentGraphSet.advanceSubSpectrum(dir); +}, "~N"); +Clazz.defineMethod(c$, "setSelectedIntegral", +function(val){ +this.currentGraphSet.setSelectedIntegral(val); +}, "~N"); +Clazz.defineMethod(c$, "scaleYBy", +function(f){ +this.currentGraphSet.scaleYBy(f); +}, "~N"); +Clazz.defineMethod(c$, "toPeak", +function(i){ +this.currentGraphSet.toPeak(i); +}, "~N"); +Clazz.defineMethod(c$, "getClickedCoordinate", +function(){ +return this.coordClicked; +}); +Clazz.defineMethod(c$, "getPickedCoordinates", +function(coord, actualCoord){ +return JSV.common.Coordinate.getPickedCoordinates(this.coordsClicked, this.coordClicked, coord, actualCoord); +}, "JSV.common.Coordinate,JSV.common.Coordinate"); +Clazz.defineMethod(c$, "shiftSpectrum", +function(mode, xOld, xNew){ +return this.currentGraphSet.shiftSpectrum(mode, xOld, xNew); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "findX", +function(spec, d){ +this.currentGraphSet.setXPointer(spec, d); +}, "JSV.common.Spectrum,~N"); +Clazz.defineMethod(c$, "setXPointers", +function(spec, x1, spec2, x2){ +this.currentGraphSet.setXPointer(spec, x1); +this.currentGraphSet.setXPointer2(spec2, x2); +}, "JSV.common.Spectrum,~N,JSV.common.Spectrum,~N"); +Clazz.defineMethod(c$, "isCurrentGraphSet", +function(graphSet){ +return graphSet === this.currentGraphSet; +}, "JSV.common.GraphSet"); +Clazz.defineMethod(c$, "repaint", +function(){ +this.jsvp.doRepaint(false); +}); +Clazz.defineMethod(c$, "setToolTipText", +function(s){ +this.jsvp.setToolTipText(s); +}, "~S"); +Clazz.defineMethod(c$, "setHighlightColor", +function(color){ +this.setColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR, color); +}, "javajs.api.GenericColor"); +Clazz.defineMethod(c$, "getInput", +function(message, title, sval){ +return this.jsvp.getInput(message, title, sval); +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "getFont", +function(g, width, style, size, isLabel){ +size *= this.scalingFactor; +if (isLabel) { +if (width < 400) size = ((width * size) / 400); +} else { +if (width < 250) size = ((width * size) / 250); +}var face = this.jsvp.getFontFaceID(this.isPrinting ? this.printingFontName : this.displayFontName); +return this.currentFont = JU.Font.createFont3D(face, style, size, size, this.jsvp.getApiPlatform(), g); +}, "~O,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "notifySubSpectrumChange", +function(isub, spec){ +this.notifyListeners( new JSV.common.SubSpecChangeEvent(isub, (spec == null ? null : spec.getTitleLabel()))); +}, "~N,JSV.common.Spectrum"); +Clazz.defineMethod(c$, "notifyPeakPickedListeners", +function(p){ +if (p == null) { +p = new JSV.common.PeakPickEvent(this.jsvp, this.coordClicked, this.getSpectrum().getAssociatedPeakInfo(this.xPixelClicked, this.coordClicked)); +}this.notifyListeners(p); +}, "JSV.common.PeakPickEvent"); +Clazz.defineMethod(c$, "notifyListeners", +function(eventObj){ +for (var i = 0; i < this.listeners.size(); i++) if (this.listeners.get(i) != null) this.listeners.get(i).panelEvent(eventObj); + +}, "~O"); +Clazz.defineMethod(c$, "escapeKeyPressed", +function(isDEL){ +this.currentGraphSet.escapeKeyPressed(isDEL); +}, "~B"); +Clazz.defineMethod(c$, "hasFocus", +function(){ +return this.jsvp.hasFocus(); +}); +Clazz.defineMethod(c$, "isMouseUp", +function(){ +return (this.mouseState === JSV.common.PanelData.Mouse.UP); +}); +Clazz.defineMethod(c$, "doMouseMoved", +function(xPixel, yPixel){ +this.mouseX = xPixel; +this.mouseY = yPixel; +this.mouseState = JSV.common.PanelData.Mouse.UP; +this.clickCount = 0; +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +gs.mouseMovedEvent(xPixel, yPixel); +}, "~N,~N"); +Clazz.defineMethod(c$, "doMousePressed", +function(xPixel, yPixel){ +this.mouseState = JSV.common.PanelData.Mouse.DOWN; +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +this.setCurrentGraphSet(gs, yPixel); +this.clickCount = (++this.clickCount % 3); +this.currentGraphSet.mousePressedEvent(xPixel, yPixel, this.clickCount); +}, "~N,~N"); +Clazz.defineMethod(c$, "doMouseDragged", +function(xPixel, yPixel){ +this.isIntegralDrag = new Boolean (this.isIntegralDrag | this.ctrlPressed).valueOf(); +this.mouseState = JSV.common.PanelData.Mouse.DOWN; +if (JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel) !== this.currentGraphSet) return; +if (this.currentGraphSet.checkWidgetEvent(xPixel, yPixel, false)) this.setTaintedAll(); +this.currentGraphSet.mouseMovedEvent(xPixel, yPixel); +}, "~N,~N"); +Clazz.defineMethod(c$, "doMouseReleased", +function(xPixel, yPixel, isButton1){ +this.mouseState = JSV.common.PanelData.Mouse.UP; +if (this.thisWidget == null && this.currentGraphSet.pendingMeasurement == null || !isButton1) return; +this.currentGraphSet.mouseReleasedEvent(xPixel, yPixel); +this.thisWidget = null; +this.isIntegralDrag = false; +this.integralShiftMode = 0; +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "doMouseClicked", +function(xPixel, yPixel, isControlDown){ +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +this.setCurrentGraphSet(gs, yPixel); +gs.mouseClickedEvent(xPixel, yPixel, this.clickCount, isControlDown); +this.setTaintedAll(); +this.repaint(); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "hasCurrentMeasurements", +function(type){ +return this.currentGraphSet.hasCurrentMeasurement(type); +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "getDialog", +function(type){ +return this.currentGraphSet.getDialog(type, -1); +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "addDialog", +function(iSpec, type, dialog){ +this.currentGraphSet.addDialog(iSpec, type, dialog); +}, "~N,JSV.common.Annotation.AType,JSV.api.AnnotationData"); +Clazz.defineMethod(c$, "getPeakListing", +function(p, tfToggle){ +if (p != null) this.currentGraphSet.getPeakListing(-1, p, true); +this.currentGraphSet.setPeakListing(tfToggle); +}, "JSV.common.Parameters,Boolean"); +Clazz.defineMethod(c$, "checkIntegral", +function(parameters, value){ +this.currentGraphSet.checkIntegralParams(parameters, value); +}, "JSV.common.Parameters,~S"); +Clazz.defineMethod(c$, "setIntegrationRatios", +function(value){ +this.currentGraphSet.setIntegrationRatios(value); +}, "~S"); +Clazz.defineMethod(c$, "getView", +function(){ +return this.currentGraphSet.getCurrentView(); +}); +Clazz.defineMethod(c$, "closeAllDialogsExcept", +function(type){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).closeDialogsExcept(type); + +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "removeDialog", +function(dialog){ +this.currentGraphSet.removeDialog(dialog); +}, "JSV.dialog.JSVDialog"); +Clazz.defineMethod(c$, "normalizeIntegral", +function(){ +var integral = this.getSelectedIntegral(); +if (integral == null) return; +var sValue = integral.text; +if (sValue.length == 0) sValue = "" + integral.getValue(); +var newValue = this.getInput("Enter a new value for this integral", "Normalize Integral", sValue); +try { +this.setSelectedIntegral(Double.parseDouble(newValue)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "getDrawTitle", +function(isPrinting){ +var title = null; +if (isPrinting) title = this.printJobTitle; + else if (this.nSpectra == 1) { +title = this.getSpectrum().getPeakTitle(); +} else if (this.viewTitle != null) { +if (this.currentGraphSet.getTitle(false) != null) title = this.getSpectrum().getPeakTitle(); +if (title == null) title = this.viewTitle; +} else { +title = this.jsvp.getTitle().trim(); +}if (title.indexOf("\n") >= 0) title = title.substring(0, title.indexOf("\n")).trim(); +return title; +}, "~B"); +Clazz.defineMethod(c$, "getPrintJobTitle", +function(isPrinting){ +var title = null; +if (this.nSpectra == 1) { +title = this.getSpectrum().getTitle(); +} else if (this.viewTitle != null) { +if (this.graphSets.size() == 1) title = this.currentGraphSet.getTitle(isPrinting); +if (title == null) title = this.viewTitle; +} else { +title = this.jsvp.getTitle().trim(); +}if (title.indexOf("\n") >= 0) title = title.substring(0, title.indexOf("\n")).trim(); + else if (title.startsWith("$")) title = title.substring(1); +return title; +}, "~B"); +Clazz.defineMethod(c$, "linkSpectra", +function(mode){ +if (mode === JSV.common.PanelData.LinkMode.ALL) mode = (this.nSpectra == 2 ? JSV.common.PanelData.LinkMode.AB : this.nSpectra == 3 ? JSV.common.PanelData.LinkMode.ABC : JSV.common.PanelData.LinkMode.NONE); +if (mode !== JSV.common.PanelData.LinkMode.NONE && mode.toString().length != this.nSpectra) return; +this.setGraphSets(mode); +}, "JSV.common.PanelData.LinkMode"); +Clazz.defineMethod(c$, "doZoomLinked", +function(graphSet, initX, finalX, addZoom, checkRange, is1d){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrumAt(0); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrumAt(0), false, true)) gs.doZoom(initX, 0, finalX, 0, is1d, false, checkRange, false, addZoom); +} +this.linking = false; +}, "JSV.common.GraphSet,~N,~N,~B,~B,~B"); +Clazz.defineMethod(c$, "clearLinkViews", +function(graphSet){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrum(); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrum(), false, true)) gs.clearViews(); +} +this.linking = false; +}, "JSV.common.GraphSet"); +Clazz.defineMethod(c$, "setlinkedXMove", +function(graphSet, x, isX2){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrum(); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrum(), false, true)) { +if (gs.imageView == null) if (isX2) { +gs.setXPixelMovedTo(1.7976931348623157E308, x, 0, 0); +} else { +gs.setXPixelMovedTo(x, 1.7976931348623157E308, 0, 0); +}}} +this.linking = false; +}, "JSV.common.GraphSet,~N,~B"); +Clazz.defineMethod(c$, "set2DCrossHairsLinked", +function(graphSet, x, y, isLocked){ +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet) gs.set2DXY(x, y, isLocked); +} +}, "JSV.common.GraphSet,~N,~N,~B"); +Clazz.defineMethod(c$, "dialogsToFront", +function(spec){ +this.currentGraphSet.dialogsToFront(spec); +}, "JSV.common.Spectrum"); +Clazz.defineMethod(c$, "setColor", +function(st, color){ +if (color != null) this.options.put(st, JU.CU.toRGBHexString(color)); +switch (st) { +case JSV.common.ScriptToken.COORDINATESCOLOR: +this.coordinatesColor = color; +return; +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +this.highlightColor = color; +if (this.highlightColor.getOpacity255() == 255) this.highlightColor.setOpacity255(150); +return; +case JSV.common.ScriptToken.ZOOMBOXCOLOR: +this.zoomBoxColor = color; +return; +case JSV.common.ScriptToken.ZOOMBOXCOLOR2: +this.zoomBoxColor2 = color; +return; +case JSV.common.ScriptToken.BACKGROUNDCOLOR: +this.jsvp.setBackgroundColor(this.bgcolor = color); +break; +case JSV.common.ScriptToken.GRIDCOLOR: +this.gridColor = color; +break; +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +this.integralPlotColor = color; +break; +case JSV.common.ScriptToken.PEAKTABCOLOR: +this.peakTabColor = color; +break; +case JSV.common.ScriptToken.PLOTCOLOR: +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setPlotColor0(color); + +break; +case JSV.common.ScriptToken.PLOTAREACOLOR: +this.plotAreaColor = color; +break; +case JSV.common.ScriptToken.SCALECOLOR: +this.scaleColor = color; +break; +case JSV.common.ScriptToken.TITLECOLOR: +this.titleColor = color; +break; +case JSV.common.ScriptToken.UNITSCOLOR: +this.unitsColor = color; +break; +default: +JU.Logger.warn("AwtPanel --- unrecognized color: " + st); +return; +} +this.taintedAll = true; +}, "JSV.common.ScriptToken,javajs.api.GenericColor"); +Clazz.defineMethod(c$, "getColor", +function(whatColor){ +switch (whatColor) { +default: +JU.Logger.error("awtgraphset missing color " + whatColor); +return this.BLACK; +case JSV.common.ScriptToken.ZOOMBOXCOLOR2: +return this.zoomBoxColor2; +case JSV.common.ScriptToken.ZOOMBOXCOLOR: +return this.zoomBoxColor; +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +return this.highlightColor; +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +return this.integralPlotColor; +case JSV.common.ScriptToken.GRIDCOLOR: +return this.gridColor; +case JSV.common.ScriptToken.PEAKTABCOLOR: +return this.peakTabColor; +case JSV.common.ScriptToken.PLOTAREACOLOR: +return this.plotAreaColor; +case JSV.common.ScriptToken.SCALECOLOR: +return this.scaleColor; +case JSV.common.ScriptToken.TITLECOLOR: +return this.titleColor; +case JSV.common.ScriptToken.UNITSCOLOR: +return this.unitsColor; +} +}, "JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "getOverlayLegendData", +function(){ +var numSpectra = this.currentGraphSet.nSpectra; +var data = new Array(numSpectra); +var f1 = this.getSpectrumAt(0).getFilePath(); +var f2 = this.getSpectrumAt(numSpectra - 1).getFilePath(); +var useFileName = f1 != null && f2 != null && !f1.equals(f2); +for (var index = 0; index < numSpectra; index++) { +var cols = new Array(3); +var spectrum = this.getSpectrumAt(index); +this.title = spectrum.getTitle(); +if (useFileName) this.title = JSV.common.JSVFileManager.getTagName(spectrum.getFilePath()) + " - " + this.title; +var plotColor = this.getCurrentPlotColor(index); +cols[0] = new Integer(index + 1); +cols[1] = plotColor; +cols[2] = " " + this.title; +data[index] = cols; +} +return data; +}); +Clazz.defineMethod(c$, "setColorOrFont", +function(params, st){ +if (st == null) { +var colors = params.elementColors; +for (var entry, $entry = colors.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setColorOrFont(params, entry.getKey()); + +this.setColorOrFont(params, JSV.common.ScriptToken.DISPLAYFONTNAME); +this.setColorOrFont(params, JSV.common.ScriptToken.TITLEFONTNAME); +return; +}switch (st) { +case JSV.common.ScriptToken.DISPLAYFONTNAME: +this.setFontName(st, params.displayFontName); +return; +case JSV.common.ScriptToken.TITLEFONTNAME: +this.setFontName(st, params.titleFontName); +return; +} +this.setColor(st, params.getElementColor(st)); +}, "JSV.common.ColorParameters,JSV.common.ScriptToken"); +Clazz.defineMethod(c$, "getCurrentPlotColor", +function(i){ +return this.currentGraphSet.getPlotColor(i); +}, "~N"); +Clazz.defineMethod(c$, "setPrint", +function(pl, fontName){ +if (pl == null) { +this.options.putAll(this.optionsSaved); +this.optionsSaved = null; +return; +}this.printJobTitle = pl.title; +this.printingFontName = fontName; +this.printGraphPosition = pl.position; +this.optionsSaved = new java.util.Hashtable(); +this.optionsSaved.putAll(this.options); +this.gridOn = pl.showGrid; +this.titleOn = pl.showTitle; +this.setBoolean(JSV.common.ScriptToken.XSCALEON, pl.showXScale); +this.setBoolean(JSV.common.ScriptToken.XUNITSON, pl.showXScale); +this.setBoolean(JSV.common.ScriptToken.YSCALEON, pl.showYScale); +this.setBoolean(JSV.common.ScriptToken.YUNITSON, pl.showYScale); +}, "JSV.common.PrintLayout,~S"); +Clazz.defineMethod(c$, "setDefaultPrintOptions", +function(pl){ +pl.showGrid = this.gridOn; +pl.showXScale = this.getBoolean(JSV.common.ScriptToken.XSCALEON); +pl.showYScale = this.getBoolean(JSV.common.ScriptToken.YSCALEON); +pl.showTitle = this.titleOn; +}, "JSV.common.PrintLayout"); +Clazz.defineMethod(c$, "showDialog", +function(type){ +var ad = this.getDialog(type); +this.closeAllDialogsExcept(type); +if (ad != null && Clazz.instanceOf(ad,"JSV.dialog.JSVDialog")) return (ad).reEnable(); +var iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) { +this.jsvp.showMessage("To enable " + type + " first select a spectrum by clicking on it.", "" + type); +return null; +}var spec = this.getSpectrum(); +var dialog = this.vwr.getDialog(type, spec); +if (ad == null && type === JSV.common.Annotation.AType.Measurements) ad = new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements, spec); +if (ad != null) dialog.setData(ad); +this.addDialog(iSpec, type, dialog); +dialog.reEnable(); +return dialog; +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "printPdf", +function(pdfCreator, pl){ +var isPortrait = !pl.layout.equals("landscape"); +this.print(pdfCreator, (isPortrait ? pl.imageableHeight : pl.imageableWidth), (isPortrait ? pl.imageableWidth : pl.imageableHeight), pl.imageableX, pl.imageableY, pl.paperHeight, pl.paperWidth, isPortrait, 0); +}, "J.api.GenericGraphics,JSV.common.PrintLayout"); +Clazz.defineMethod(c$, "print", +function(g, height, width, x, y, paperHeight, paperWidth, isPortrait, pi){ +this.g2d = this.g2d0; +if (pi == 0) { +this.isPrinting = true; +var addFilePath = false; +if (Clazz.instanceOf(g,"J.api.GenericGraphics")) { +this.g2d = g; +g = this.gMain; +}if (this.printGraphPosition.equals("default")) { +if (isPortrait) { +height = 450; +width = 280; +} else { +height = 280; +width = 450; +}} else if (this.printGraphPosition.equals("fit to page")) { +addFilePath = true; +} else { +if (isPortrait) { +height = 450; +width = 280; +x = Clazz.doubleToInt(Clazz.doubleToInt(paperWidth - width) / 2); +y = Clazz.doubleToInt(Clazz.doubleToInt(paperHeight - height) / 2); +} else { +height = 280; +width = 450; +y = Clazz.doubleToInt(Clazz.doubleToInt(paperWidth - 280) / 2); +x = Clazz.doubleToInt(Clazz.doubleToInt(paperHeight - 450) / 2); +}}this.g2d.translateScale(g, x, y, 0.1); +this.setTaintedAll(); +this.drawGraph(g, g, g, Clazz.doubleToInt(width), Clazz.doubleToInt(height), addFilePath); +this.isPrinting = false; +return 0; +}this.isPrinting = false; +return 1; +}, "~O,~N,~N,~N,~N,~N,~N,~B,~N"); +Clazz.overrideMethod(c$, "keyPressed", +function(code, modifiers){ +if (this.isPrinting) return false; +this.checkKeyControl(code, true); +switch (code) { +case 27: +case 127: +case 8: +this.escapeKeyPressed(code != 27); +this.isIntegralDrag = false; +this.setTaintedAll(); +this.repaint(); +return true; +} +var scaleFactor = 0; +var doConsume = false; +if (modifiers == 0) { +switch (code) { +case 37: +case 39: +this.doMouseMoved((code == 39 ? ++this.mouseX : --this.mouseX), this.mouseY); +this.repaint(); +doConsume = true; +break; +case 33: +case 34: +scaleFactor = (code == 33 ? JSV.common.GraphSet.RT2 : 1 / JSV.common.GraphSet.RT2); +doConsume = true; +break; +case 40: +case 38: +var dir = (code == 40 ? -1 : 1); +if (this.getSpectrumAt(0).getSubSpectra() == null) { +this.notifySubSpectrumChange(dir, null); +} else { +this.advanceSubSpectrum(dir); +this.setTaintedAll(); +this.repaint(); +}doConsume = true; +break; +} +} else if (this.checkMod(code, 2)) { +switch (code) { +case 40: +case 38: +case 45: +case 61: +scaleFactor = (code == 61 || code == 38 ? JSV.common.GraphSet.RT2 : 1 / JSV.common.GraphSet.RT2); +doConsume = true; +break; +case 37: +case 39: +this.toPeak(code == 39 ? 1 : -1); +doConsume = true; +break; +} +}if (scaleFactor != 0) { +this.scaleYBy(scaleFactor); +this.setTaintedAll(); +this.repaint(); +}return doConsume; +}, "~N,~N"); +Clazz.overrideMethod(c$, "keyReleased", +function(keyCode){ +if (this.isPrinting) return; +this.checkKeyControl(keyCode, false); +}, "~N"); +Clazz.overrideMethod(c$, "keyTyped", +function(ch, mods){ +if (this.isPrinting) return false; +switch (ch) { +case 110: +if (mods != 0) break; +this.normalizeIntegral(); +return true; +case 26: +if (mods != 2) break; +this.previousView(); +this.setTaintedAll(); +this.repaint(); +return true; +case 25: +if (mods != 2) break; +this.nextView(); +this.setTaintedAll(); +this.repaint(); +return true; +} +return false; +}, "~N,~N"); +Clazz.overrideMethod(c$, "mouseAction", +function(mode, time, x, y, countIgnored, buttonMods){ +if (this.isPrinting) return; +switch (mode) { +case 4: +if (!this.checkMod(buttonMods, 16)) return; +this.doMousePressed(x, y); +break; +case 5: +this.doMouseReleased(x, y, this.checkMod(buttonMods, 16)); +this.setTaintedAll(); +this.repaint(); +break; +case 1: +this.doMouseDragged(x, y); +this.repaint(); +break; +case 0: +this.jsvp.getFocusNow(false); +if ((buttonMods & 28) != 0) { +this.doMouseDragged(x, y); +this.repaint(); +return; +}this.doMouseMoved(x, y); +if (this.coordStr != null) this.repaint(); +break; +case 2: +if (this.checkMod(buttonMods, 4)) { +this.jsvp.showMenu(x, y); +return; +}this.ctrlPressed = false; +this.doMouseClicked(x, y, this.updateControlPressed(buttonMods)); +break; +} +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "checkMod", +function(buttonMods, mask){ +return ((buttonMods & mask) == mask); +}, "~N,~N"); +Clazz.defineMethod(c$, "checkKeyControl", +function(keyCode, isPressed){ +switch (keyCode) { +case 17: +case 157: +this.ctrlPressed = isPressed; +break; +case 16: +this.shiftPressed = isPressed; +break; +} +}, "~N,~B"); +Clazz.defineMethod(c$, "updateControlPressed", +function(mods){ +return (this.ctrlPressed = new Boolean (this.ctrlPressed |(this.checkMod(mods, 2) || this.checkMod(mods, 20))).valueOf()); +}, "~N"); +Clazz.overrideMethod(c$, "mouseEnterExit", +function(time, x, y, isExit){ +if (isExit) { +this.thisWidget = null; +this.isIntegralDrag = false; +this.integralShiftMode = 0; +} else { +try { +this.jsvp.getFocusNow(false); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("pd " + this + " cannot focus"); +} else { +throw e; +} +} +}}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "setSolutionColor", +function(what){ +var isNone = (what.indexOf("none") >= 0); +var asFitted = (what.indexOf("false") < 0); +if (what.indexOf("all") < 0) { +var color = (isNone ? -1 : this.vwr.getSolutionColor(asFitted)); +this.getSpectrum().setFillColor(color == -1 ? null : this.vwr.parameters.getColor1(color)); +} else { +var vi = JSV.common.JSViewer.getInterface("JSV.common.Visible"); +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setSolutionColor(vi, isNone, asFitted); + +}}, "~S"); +Clazz.defineMethod(c$, "setIRMode", +function(mode, type){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setIRMode(mode, type); + +}, "JSV.common.Spectrum.IRMode,~S"); +Clazz.defineMethod(c$, "closeSpectrum", +function(){ +this.vwr.close("views"); +this.vwr.close(this.getSourceID()); +this.vwr.execView("*", true); +}); +/*if2*/;(function(){ +var c$ = Clazz.declareType(JSV.common.PanelData, "LinkMode", Enum); +c$.getMode = Clazz.defineMethod(c$, "getMode", +function(abc){ +if (abc.equals("*")) return JSV.common.PanelData.LinkMode.ALL; +for (var mode, $mode = 0, $$mode = JSV.common.PanelData.LinkMode.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (mode.name().equalsIgnoreCase(abc)) return mode; + +return JSV.common.PanelData.LinkMode.NONE; +}, "~S"); +Clazz.defineEnumConstant(c$, "ALL", 0, []); +Clazz.defineEnumConstant(c$, "NONE", 1, []); +Clazz.defineEnumConstant(c$, "AB", 2, []); +Clazz.defineEnumConstant(c$, "ABC", 3, []); +/*eoif2*/})(); +/*if2*/;(function(){ +var c$ = Clazz.declareType(JSV.common.PanelData, "Mouse", Enum); +Clazz.defineEnumConstant(c$, "UP", 0, []); +Clazz.defineEnumConstant(c$, "DOWN", 1, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PanelNode.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PanelNode.js new file mode 100755 index 000000000000..994846e6e3aa --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PanelNode.js @@ -0,0 +1,124 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(null, "JSV.common.PanelNode", ["JU.SB", "JSV.common.Parameters"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.treeNode = null; +this.source = null; +this.fileName = null; +this.jsvp = null; +this.id = null; +this.legend = null; +this.isSelected = false; +this.isView = false; +this.isSimulation = false; +this.frameTitle = null; +Clazz.instantialize(this, arguments);}, JSV.common, "PanelNode", null); +Clazz.makeConstructor(c$, +function(id, fileName, source, jsvp){ +this.id = id; +this.source = source; +this.fileName = fileName; +this.isSimulation = (source.getFilePath().indexOf("http://SIMULATION/") >= 0); +this.jsvp = jsvp; +if (jsvp != null) { +this.pd().getSpectrumAt(0).setId(id); +this.frameTitle = jsvp.getTitle(); +}}, "~S,~S,JSV.source.JDXSource,JSV.api.JSVPanel"); +Clazz.defineMethod(c$, "setTreeNode", +function(node){ +this.treeNode = node; +}, "JSV.api.JSVTreeNode"); +Clazz.defineMethod(c$, "getTreeNode", +function(){ +return this.treeNode; +}); +Clazz.defineMethod(c$, "dispose", +function(){ +this.source.dispose(); +if (this.jsvp != null) this.jsvp.dispose(); +this.source = null; +this.jsvp = null; +this.legend = null; +}); +Clazz.defineMethod(c$, "pd", +function(){ +return this.jsvp.getPanelData(); +}); +Clazz.defineMethod(c$, "getSpectrum", +function(){ +return this.pd().getSpectrum(); +}); +Clazz.defineMethod(c$, "setLegend", +function(legend){ +if (this.legend != null) this.legend.dispose(); +this.legend = legend; +return legend; +}, "JSV.dialog.JSVDialog"); +Clazz.overrideMethod(c$, "toString", +function(){ +return ((this.id == null ? "" : this.id + ": ") + (this.frameTitle == null ? this.fileName : this.frameTitle)); +}); +c$.findSourceByNameOrId = Clazz.defineMethod(c$, "findSourceByNameOrId", +function(id, panelNodes){ +for (var i = panelNodes.size(); --i >= 0; ) { +var node = panelNodes.get(i); +if (id.equals(node.id) || id.equals(node.source.getSpectra().get(0).sourceID) || node.source.matchesFilePath(id)) return node.source; +} +for (var i = panelNodes.size(); --i >= 0; ) { +var node = panelNodes.get(i); +if (id.equals(node.fileName)) return node.source; +} +return null; +}, "~S,JU.Lst"); +c$.findNodeById = Clazz.defineMethod(c$, "findNodeById", +function(id, panelNodes){ +if (id != null) for (var i = panelNodes.size(); --i >= 0; ) if (id.equals(panelNodes.get(i).id) || id.equals(panelNodes.get(i).frameTitle)) return panelNodes.get(i); + +return null; +}, "~S,JU.Lst"); +c$.findNode = Clazz.defineMethod(c$, "findNode", +function(jsvp, panelNodes){ +for (var i = panelNodes.size(); --i >= 0; ) if (panelNodes.get(i).jsvp === jsvp) return panelNodes.get(i); + +return null; +}, "JSV.api.JSVPanel,JU.Lst"); +c$.getSpectrumListAsString = Clazz.defineMethod(c$, "getSpectrumListAsString", +function(panelNodes){ +var sb = new JU.SB(); +for (var i = 0; i < panelNodes.size(); i++) { +var node = panelNodes.get(i); +if (!node.isView) sb.append(" ").append(node.id); +} +return sb.toString().trim(); +}, "JU.Lst"); +c$.isOpen = Clazz.defineMethod(c$, "isOpen", +function(panelNodes, filePath){ +var pt = -1; +if (filePath != null) for (var i = panelNodes.size(); --i >= 0; ) { +if (panelNodes.get(i).source.matchesFilePath(filePath) || filePath.equals(panelNodes.get(i).frameTitle)) return pt; +} +return -1; +}, "JU.Lst,~S"); +Clazz.defineMethod(c$, "setFrameTitle", +function(name){ +this.frameTitle = name; +}, "~S"); +c$.getLastFileFirstNode = Clazz.defineMethod(c$, "getLastFileFirstNode", +function(panelNodes){ +var n = panelNodes.size(); +var node = (n == 0 ? null : panelNodes.get(n - 1)); +for (var i = n - 1; --i >= 0; ) { +if (panelNodes.get(i).source !== node.source) break; +node = panelNodes.get(i); +} +return (node == null ? null : node.jsvp); +}, "JU.Lst"); +Clazz.defineMethod(c$, "getInfo", +function(key){ +var info = this.pd().getInfo(false, key); +JSV.common.Parameters.putInfo(key, info, "panelId", this.id); +JSV.common.Parameters.putInfo(key, info, "panelFileName", this.fileName); +JSV.common.Parameters.putInfo(key, info, "panelSource", this.source.getFilePath()); +return info; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/Parameters.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Parameters.js new file mode 100755 index 000000000000..36b19a4ff7ef --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Parameters.js @@ -0,0 +1,108 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(null, "JSV.common.Parameters", ["java.util.Hashtable", "JSV.common.ScriptToken"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.name = null; +this.integralMinY = 0.1; +this.integralRange = 50.0; +this.integralOffset = 30.0; +this.integralDrawAll = false; +this.viewOffset = 0; +this.peakListThreshold = NaN; +this.peakListInterpolation = "parabolic"; +this.precision = 2; +this.htBooleans = null; +Clazz.instantialize(this, arguments);}, JSV.common, "Parameters", null); +Clazz.makeConstructor(c$, +function(){ +this.htBooleans = new java.util.Hashtable(); +this.setBoolean(JSV.common.ScriptToken.TITLEON, true); +this.setBoolean(JSV.common.ScriptToken.ENABLEZOOM, true); +this.setBoolean(JSV.common.ScriptToken.DISPLAY2D, true); +this.setBoolean(JSV.common.ScriptToken.COORDINATESON, true); +this.setBoolean(JSV.common.ScriptToken.PEAKTABSON, true); +this.setBoolean(JSV.common.ScriptToken.POINTSONLY, false); +this.setBoolean(JSV.common.ScriptToken.GRIDON, true); +this.setBoolean(JSV.common.ScriptToken.XSCALEON, true); +this.setBoolean(JSV.common.ScriptToken.YSCALEON, true); +this.setBoolean(JSV.common.ScriptToken.XUNITSON, true); +this.setBoolean(JSV.common.ScriptToken.YUNITSON, true); +}); +Clazz.defineMethod(c$, "setName", +function(name){ +this.name = name; +return this; +}, "~S"); +Clazz.defineMethod(c$, "getBooleans", +function(){ +return this.htBooleans; +}); +Clazz.defineMethod(c$, "setBoolean", +function(st, val){ +this.htBooleans.put(st, Boolean.$valueOf(val)); +return val; +}, "JSV.common.ScriptToken,~B"); +Clazz.defineMethod(c$, "getBoolean", +function(t){ +return Boolean.TRUE === this.htBooleans.get(t); +}, "JSV.common.ScriptToken"); +c$.isTrue = Clazz.defineMethod(c$, "isTrue", +function(value){ +return (value.length == 0 || Boolean.parseBoolean(value)); +}, "~S"); +c$.getTFToggle = Clazz.defineMethod(c$, "getTFToggle", +function(value){ +return (value.equalsIgnoreCase("TOGGLE") ? null : JSV.common.Parameters.isTrue(value) ? Boolean.TRUE : Boolean.FALSE); +}, "~S"); +Clazz.defineMethod(c$, "setP", +function(pd, st, value){ +switch (st) { +default: +return; +case JSV.common.ScriptToken.COORDINATESON: +case JSV.common.ScriptToken.DISPLAY1D: +case JSV.common.ScriptToken.DISPLAY2D: +case JSV.common.ScriptToken.ENABLEZOOM: +case JSV.common.ScriptToken.GRIDON: +case JSV.common.ScriptToken.POINTSONLY: +case JSV.common.ScriptToken.PEAKTABSON: +case JSV.common.ScriptToken.REVERSEPLOT: +case JSV.common.ScriptToken.TITLEON: +case JSV.common.ScriptToken.TITLEBOLDON: +case JSV.common.ScriptToken.XSCALEON: +case JSV.common.ScriptToken.XUNITSON: +case JSV.common.ScriptToken.YSCALEON: +case JSV.common.ScriptToken.YUNITSON: +var tfToggle = JSV.common.Parameters.getTFToggle(value); +if (tfToggle != null) { +this.setBoolean(st, tfToggle.booleanValue()); +break; +}if (pd == null) return; +var b = !pd.getBoolean(st); +switch (st) { +default: +break; +case JSV.common.ScriptToken.XSCALEON: +this.setBoolean(JSV.common.ScriptToken.XUNITSON, b); +pd.setBoolean(JSV.common.ScriptToken.XUNITSON, b); +break; +case JSV.common.ScriptToken.YSCALEON: +this.setBoolean(JSV.common.ScriptToken.YUNITSON, b); +pd.setBoolean(JSV.common.ScriptToken.YUNITSON, b); +break; +} +this.setBoolean(st, b); +break; +} +if (pd == null) return; +pd.setBooleans(this, st); +}, "JSV.common.PanelData,JSV.common.ScriptToken,~S"); +c$.isMatch = Clazz.defineMethod(c$, "isMatch", +function(match, key){ +return match == null || key.equalsIgnoreCase(match); +}, "~S,~S"); +c$.putInfo = Clazz.defineMethod(c$, "putInfo", +function(match, info, key, value){ +if (value != null && JSV.common.Parameters.isMatch(match, key)) info.put(match == null ? key : match, value); +}, "~S,java.util.Map,~S,~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakData.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakData.js new file mode 100755 index 000000000000..703ee59b1852 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakData.js @@ -0,0 +1,85 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.MeasurementData"], "JSV.common.PeakData", ["JU.DF", "JSV.common.Coordinate", "$.PeakPick"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.thresh = 0; +this.minY = 0; +this.maxY = 0; +Clazz.instantialize(this, arguments);}, JSV.common, "PeakData", JSV.common.MeasurementData); +Clazz.defineMethod(c$, "getThresh", +function(){ +return this.thresh; +}); +Clazz.overrideMethod(c$, "getDataHeader", +function(){ +return (this.spec.isHNMR() ? JSV.common.PeakData.HNMR_HEADER : Clazz.newArray(-1, ["peak", this.spec.getXUnits(), this.spec.getYUnits()])); +}); +Clazz.overrideMethod(c$, "getMeasurementListArray", +function(units){ +var data = new Array(this.size()); +var last = Clazz.newDoubleArray(-1, [-1.0E100, 1e100, 1e100]); +var ddata; +for (var pt = 0, i = this.size(); --i >= 0; pt++) { +ddata = this.spec.getPeakListArray(this.get(i), last, this.maxY); +if (ddata.length == 2) data[pt] = Clazz.newArray(-1, ["" + (pt + 1), JU.DF.formatDecimalDbl(ddata[0], 2), JU.DF.formatDecimalDbl(ddata[1], 4)]); + else data[pt] = Clazz.newArray(-1, ["" + (pt + 1), JU.DF.formatDecimalDbl(ddata[0], 4), JU.DF.formatDecimalDbl(ddata[1], 4), JU.DF.formatDecimalDbl(ddata[2], 2), (ddata[3] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[3], 2)), (ddata[4] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[4], 2)), (ddata[5] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[5], 2))]); +} +return data; +}, "~S"); +Clazz.overrideMethod(c$, "getMeasurementListArrayReal", +function(units){ +var data = Clazz.newDoubleArray (this.size(), 0); +var last = Clazz.newDoubleArray(-1, [-1.0E100, 1e100, 1e100]); +for (var pt = 0, i = this.size(); --i >= 0; pt++) data[pt] = this.spec.getPeakListArray(this.get(i), last, this.maxY); + +return data; +}, "~S"); +Clazz.defineMethod(c$, "getInfo", +function(info){ +info.put("interpolation", this.myParams.peakListInterpolation); +info.put("threshold", Double.$valueOf(this.myParams.peakListThreshold)); +Clazz.superCall(this, JSV.common.PeakData, "getInfo", [info]); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setPeakList", +function(p, precision, view){ +this.precision = (precision == -2147483648 ? this.spec.getDefaultUnitPrecision() : precision); +var xyCoords = this.spec.getXYCoords(); +if (xyCoords.length < 3) return; +this.clear(); +if (p != null) { +this.myParams.peakListInterpolation = p.peakListInterpolation; +this.myParams.peakListThreshold = p.peakListThreshold; +}var doInterpolate = (this.myParams.peakListInterpolation.equals("parabolic")); +var isInverted = this.spec.isInverted(); +this.minY = view.minYOnScale; +this.maxY = view.maxYOnScale; +var minX = view.minXOnScale; +var maxX = view.maxXOnScale; +this.thresh = this.myParams.peakListThreshold; +if (Double.isNaN(this.thresh)) this.thresh = this.myParams.peakListThreshold = (this.minY + this.maxY) / 2; +var yLast = 0; +var y3 = Clazz.newDoubleArray(-1, [xyCoords[0].getYVal(), yLast = xyCoords[1].getYVal(), 0]); +var n = 0; +if (isInverted) for (var i = 2; i < xyCoords.length; i++) { +var y = y3[i % 3] = xyCoords[i].getYVal(); +if (yLast < this.thresh && y3[(i - 2) % 3] > yLast && yLast < y) { +var x = (doInterpolate ? JSV.common.Coordinate.parabolicInterpolation(xyCoords, i - 1) : xyCoords[i - 1].getXVal()); +if (x >= minX || x <= maxX) { +var m = new JSV.common.PeakPick().setValue(x, y, this.spec, null, 0); +this.addLast(m); +if (++n == 100) break; +}}yLast = y; +} + else for (var i = 2; i < xyCoords.length; i++) { +var y = y3[i % 3] = xyCoords[i].getYVal(); +if (yLast > this.thresh && y3[(i - 2) % 3] < yLast && yLast > y) { +var x = (doInterpolate ? JSV.common.Coordinate.parabolicInterpolation(xyCoords, i - 1) : xyCoords[i - 1].getXVal()); +if (x >= minX && x <= maxX) { +var m = new JSV.common.PeakPick().setValue(x, y, this.spec, JU.DF.formatDecimalDbl(x, precision), x); +this.addLast(m); +if (++n == 100) break; +}}yLast = y; +} +}, "JSV.common.Parameters,~N,JSV.common.ScaleData"); +c$.HNMR_HEADER = Clazz.newArray(-1, ["peak", "shift/ppm", "intens", "shift/hz", "diff/hz", "2-diff", "3-diff"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakInfo.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakInfo.js new file mode 100755 index 000000000000..2d7b27591d37 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakInfo.js @@ -0,0 +1,160 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(null, "JSV.common.PeakInfo", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.xMin = 0; +this.xMax = 0; +this.yMin = 0; +this.yMax = 0; +this.px0 = 0; +this.px1 = 0; +this.stringInfo = null; +this.type = null; +this.type2 = null; +this.index = null; +this.file = null; +this.filePathForwardSlash = null; +this.title = null; +this.model = null; +this.atoms = null; +this.id = null; +this.spectrum = null; +this._match = null; +this.atomKey = null; +Clazz.instantialize(this, arguments);}, JSV.common, "PeakInfo", null); +/*LV!1824 unnec constructor*/Clazz.makeConstructor(c$, +function(s){ +this.stringInfo = s; +this.type = JU.PT.getQuotedAttribute(s, "type"); +if (this.type == null) this.type = ""; +this.type = this.type.toUpperCase(); +var pt = this.type.indexOf('/'); +this.type2 = (pt < 0 ? "" : JSV.common.PeakInfo.fixType(this.type.substring(this.type.indexOf('/') + 1))); +if (pt >= 0) this.type = JSV.common.PeakInfo.fixType(this.type.substring(0, pt)) + "/" + this.type2; + else this.type = JSV.common.PeakInfo.fixType(this.type); +this.id = JU.PT.getQuotedAttribute(s, "id"); +this.index = JU.PT.getQuotedAttribute(s, "index"); +this.file = JU.PT.getQuotedAttribute(s, "file"); +System.out.println("pi file=" + this.file); +this.filePathForwardSlash = (this.file == null ? null : this.file.$replace('\\', '/')); +this.model = JU.PT.getQuotedAttribute(s, "model"); +var isBaseModel = s.contains("baseModel=\"\""); +if (!isBaseModel) this.atoms = JU.PT.getQuotedAttribute(s, "atoms"); +this.atomKey = "," + this.atoms + ","; +this.title = JU.PT.getQuotedAttribute(s, "title"); +this._match = JU.PT.getQuotedAttribute(s, "_match"); +this.xMax = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "xMax")); +this.xMin = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "xMin")); +this.yMax = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "yMax")); +this.yMin = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "yMin")); +}, "~S"); +Clazz.defineMethod(c$, "isClearAll", +function(){ +return (this.spectrum == null); +}); +Clazz.defineMethod(c$, "getType", +function(){ +return this.type; +}); +Clazz.defineMethod(c$, "getAtoms", +function(){ +return this.atoms; +}); +Clazz.defineMethod(c$, "getXMax", +function(){ +return this.xMax; +}); +Clazz.defineMethod(c$, "getXMin", +function(){ +return this.xMin; +}); +Clazz.defineMethod(c$, "getYMin", +function(){ +return this.yMin; +}); +Clazz.defineMethod(c$, "getYMax", +function(){ +return this.yMax; +}); +Clazz.defineMethod(c$, "getX", +function(){ +return (this.xMax + this.xMin) / 2; +}); +Clazz.defineMethod(c$, "getMatch", +function(){ +return this._match; +}); +c$.fixType = Clazz.defineMethod(c$, "fixType", +function(type){ +return (type.equals("HNMR") ? "1HNMR" : type.equals("CNMR") ? "13CNMR" : type); +}, "~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.stringInfo; +}); +Clazz.defineMethod(c$, "getIndex", +function(){ +return this.index; +}); +Clazz.defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz.defineMethod(c$, "checkFileIndex", +function(filePath, sIndex, sAtomKey){ +return (sAtomKey != null ? this.atomKey.indexOf(sAtomKey) >= 0 : sIndex.equals(this.index) && (filePath.equals(this.file) || filePath.equals(this.filePathForwardSlash))); +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "checkFileTypeModel", +function(filePath, type, model){ +return filePath.equals(this.file) && this.checkModel(model) && this.type.endsWith(type); +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "checkTypeModel", +function(type, model){ +return this.checkType(type) && this.checkModel(model); +}, "~S,~S"); +Clazz.defineMethod(c$, "checkModel", +function(model){ +return (model != null && model.equals(this.model)); +}, "~S"); +Clazz.defineMethod(c$, "checkType", +function(type){ +return (type.endsWith(this.type)); +}, "~S"); +Clazz.defineMethod(c$, "checkTypeMatch", +function(pi){ +return (this.checkType(pi.type) && (this.checkId(pi._match) || this.checkModel(pi._match) || this.title.toUpperCase().indexOf(pi._match) >= 0)); +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "checkId", +function(match){ +if (match == null) return false; +return (this.id != null && match.toUpperCase().startsWith("ID=") && match.substring(3).equals(this.id) || (match = match.toUpperCase()).startsWith("INDEX=") && match.equals("INDEX=" + this.index) || match.startsWith("#=") && match.equals("#=" + this.index)); +}, "~S"); +Clazz.defineMethod(c$, "getModel", +function(){ +return this.model; +}); +Clazz.defineMethod(c$, "getFilePath", +function(){ +return this.file; +}); +Clazz.defineMethod(c$, "autoSelectOnLoad", +function(){ +return (this.type.startsWith("GC")); +}); +Clazz.defineMethod(c$, "setPixelRange", +function(x0, x1){ +this.px0 = x0; +this.px1 = x1; +}, "~N,~N"); +Clazz.defineMethod(c$, "checkRange", +function(xPixel, xVal){ +if (xPixel != 2147483647 ? (this.px0 <= xPixel && this.px1 >= xPixel) : xVal >= this.xMin && xVal <= this.xMax) { +return Math.abs(xVal - this.getX()); +}return 1e100; +}, "~N,~N"); +Clazz.defineMethod(c$, "getXPixel", +function(){ +return Clazz.doubleToInt((this.px0 + this.px1) / 2); +}); +c$.nullPeakInfo = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakPick.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakPick.js new file mode 100755 index 000000000000..693f488d6393 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakPick.js @@ -0,0 +1,16 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.Measurement"], "JSV.common.PeakPick", null, function(){ +var c$ = Clazz.declareType(JSV.common, "PeakPick", JSV.common.Measurement); +Clazz.defineMethod(c$, "setValue", +function(x, y, spec, text, value){ +if (text == null) { +this.set(x, y); +this.setPt2(spec, false); +} else { +this.setA(x, y, spec, text, false, false, 0, 6); +this.value = value; +this.setPt2(this.getXVal(), this.getYVal()); +}return this; +}, "~N,~N,JSV.common.Spectrum,~S,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakPickEvent.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakPickEvent.js new file mode 100755 index 000000000000..80d740124e16 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PeakPickEvent.js @@ -0,0 +1,26 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.util.EventObject"], "JSV.common.PeakPickEvent", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.coord = null; +this.peakInfo = null; +Clazz.instantialize(this, arguments);}, JSV.common, "PeakPickEvent", java.util.EventObject); +Clazz.makeConstructor(c$, +function(source, coord, peakInfo){ +Clazz.superConstructor(this, JSV.common.PeakPickEvent, [source]); +this.coord = coord; +this.peakInfo = (peakInfo == null ? null : peakInfo); +}, "~O,JSV.common.Coordinate,JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "getCoord", +function(){ +return this.coord; +}); +Clazz.defineMethod(c$, "getPeakInfo", +function(){ +return this.peakInfo; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return (this.peakInfo == null ? null : this.peakInfo.toString()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PlotWidget.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PlotWidget.js new file mode 100755 index 000000000000..5feb348c6fcd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PlotWidget.js @@ -0,0 +1,58 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.common.Coordinate", "$.ScriptToken"], "JSV.common.PlotWidget", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.isPin = false; +this.isPinOrCursor = false; +this.isXtype = false; +this.is2D = false; +this.is2Donly = false; +this.isEnabled = true; +this.isVisible = false; +this.name = null; +this.color = null; +Clazz.instantialize(this, arguments);}, JSV.common, "PlotWidget", JSV.common.Coordinate); +Clazz.prepareFields (c$, function(){ +this.color = JSV.common.ScriptToken.PLOTCOLOR; +}); +Clazz.makeConstructor(c$, +function(name){ +Clazz.superConstructor (this, JSV.common.PlotWidget, []); +this.name = name; +this.isPin = (name.charAt(0) == 'p'); +this.isPinOrCursor = (name.charAt(0) != 'z'); +this.isXtype = (name.indexOf("x") >= 0); +this.is2D = (name.indexOf("2D") >= 0); +this.is2Donly = (this.is2D && name.charAt(0) == 'p'); +}, "~S"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.name + (!this.isPinOrCursor ? "" + this.xPixel0 + " " + this.yPixel0 + " / " + this.xPixel1 + " " + this.yPixel1 : " x=" + this.getXVal() + "/" + this.xPixel0 + " y=" + this.getYVal() + "/" + this.yPixel0); +}); +Clazz.defineMethod(c$, "selected", +function(xPixel, yPixel){ +return (this.isVisible && Math.abs(xPixel - this.xPixel0) < 5 && Math.abs(yPixel - this.yPixel0) < 5); +}, "~N,~N"); +Clazz.defineMethod(c$, "setX", +function(x, xPixel){ +this.setXVal(x); +this.xPixel0 = this.xPixel1 = xPixel; +}, "~N,~N"); +Clazz.defineMethod(c$, "setY", +function(y, yPixel){ +this.setYVal(y); +this.yPixel0 = this.yPixel1 = yPixel; +}, "~N,~N"); +Clazz.defineMethod(c$, "getValue", +function(){ +return (this.isXtype ? this.getXVal() : this.getYVal()); +}); +Clazz.defineMethod(c$, "setEnabled", +function(enabled){ +this.isEnabled = enabled; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/PrintLayout.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PrintLayout.js new file mode 100755 index 000000000000..d71d3aad528e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/PrintLayout.js @@ -0,0 +1,35 @@ +Clazz.declarePackage("JSV.common"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.imageableX = 0; +this.imageableY = 0; +this.paperHeight = 0; +this.paperWidth = 0; +this.imageableHeight = 0; +this.imageableWidth = 0; +this.layout = "landscape"; +this.position = "fit to page"; +this.showGrid = true; +this.showXScale = true; +this.showYScale = true; +this.showTitle = true; +this.font = "Helvetica"; +this.paper = null; +this.asPDF = true; +this.title = null; +this.date = null; +Clazz.instantialize(this, arguments);}, JSV.common, "PrintLayout", null); +Clazz.prepareFields (c$, function(){ +this.paperHeight = Clazz.floatToInt(Math.min(11, 11.69) * 72); +this.paperWidth = Clazz.floatToInt(Math.min(8.5, 8.27) * 72); +this.imageableHeight = this.paperHeight; +this.imageableWidth = this.paperWidth; +}); +Clazz.makeConstructor(c$, +function(pd){ +if (pd != null) { +this.asPDF = true; +pd.setDefaultPrintOptions(this); +}}, "JSV.common.PanelData"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/RepaintManager.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/RepaintManager.js new file mode 100755 index 000000000000..1121c2e4c047 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/RepaintManager.js @@ -0,0 +1,31 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(null, "JSV.common.RepaintManager", ["JSV.common.JSViewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.repaintPending = false; +this.vwr = null; +Clazz.instantialize(this, arguments);}, JSV.common, "RepaintManager", null); +Clazz.makeConstructor(c$, +function(viewer){ +this.vwr = viewer; +}, "JSV.common.JSViewer"); +Clazz.defineMethod(c$, "refresh", +function(){ +if (this.repaintPending) { +return false; +}this.repaintPending = true; +var applet = this.vwr.html5Applet; +var jmol = (JSV.common.JSViewer.isJS && !JSV.common.JSViewer.isSwingJS ? JSV.common.JSViewer.jmolObject : null); +if (jmol == null) { +this.vwr.selectedPanel.repaint(); +} else { +jmol.repaint(applet, false); +this.repaintDone(); +}return true; +}); +Clazz.defineMethod(c$, "repaintDone", +function(){ +this.repaintPending = false; +this.notify(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScaleData.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScaleData.js new file mode 100755 index 000000000000..b206cbb2bddc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScaleData.js @@ -0,0 +1,312 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(null, "JSV.common.ScaleData", ["JSV.common.Coordinate"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.initMinYOnScale = 0; +this.initMaxYOnScale = 0; +this.initMinY = 0; +this.initMaxY = 0; +this.startDataPointIndex = 0; +this.endDataPointIndex = 0; +this.pointCount = 0; +this.minX = 0; +this.maxX = 0; +this.firstX = NaN; +this.minXOnScale = 0; +this.maxXOnScale = 0; +this.specShift = 0; +this.precision = null; +this.exportPrecision = null; +this.steps = null; +this.minorTickCounts = null; +this.minYOnScale = 0; +this.maxYOnScale = 0; +this.minY = 0; +this.maxY = 0; +this.isShiftZoomedY = false; +this.spectrumScaleFactor = 1; +this.spectrumYRef = 0; +this.userYFactor = 1; +this.firstY = 0; +this.minY2D = 0; +this.maxY2D = 0; +this.xFactorForScale = 0; +this.yFactorForScale = 0; +Clazz.instantialize(this, arguments);}, JSV.common, "ScaleData", null); +Clazz.prepareFields (c$, function(){ +this.precision = Clazz.newIntArray (2, 0); +this.exportPrecision = Clazz.newIntArray (2, 0); +this.steps = Clazz.newDoubleArray (2, 0); +this.minorTickCounts = Clazz.newIntArray (2, 0); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.makeConstructor(c$, +function(iStart, iEnd){ +this.startDataPointIndex = iStart; +this.endDataPointIndex = iEnd; +this.pointCount = this.endDataPointIndex - this.startDataPointIndex + 1; +}, "~N,~N"); +Clazz.makeConstructor(c$, +function(coords, start, end, isContinuous, isInverted){ +this.minX = JSV.common.Coordinate.getMinX(coords, start, end); +this.maxX = JSV.common.Coordinate.getMaxX(coords, start, end); +this.minY = JSV.common.Coordinate.getMinY(coords, start, end); +if (this.minY > 0 && !isContinuous) this.minY = 0; +this.maxY = JSV.common.Coordinate.getMaxY(coords, start, end); +this.setScale(isContinuous, isInverted); +}, "~A,~N,~N,~B,~B"); +Clazz.defineMethod(c$, "setScale", +function(isContinuous, isInverted){ +this.setXScale(); +if (!isContinuous) this.maxXOnScale += this.steps[0] / 2; +this.setYScale(this.minY, this.maxY, true, isInverted); +}, "~B,~B"); +Clazz.defineMethod(c$, "setXScale", +function(){ +var xStep = this.setScaleParams(this.minX, this.maxX, 0); +this.firstX = Math.floor(this.minX / xStep) * xStep; +if (Math.abs((this.minX - this.firstX) / xStep) > 0.0001) this.firstX += xStep; +this.minXOnScale = this.minX; +this.maxXOnScale = this.maxX; +}); +Clazz.defineMethod(c$, "isYZeroOnScale", +function(){ +return (this.minYOnScale < this.spectrumYRef && this.maxYOnScale > this.spectrumYRef); +}); +Clazz.defineMethod(c$, "setYScale", +function(minY, maxY, setScaleMinMax, isInverted){ +if (minY == 0 && maxY == 0) maxY = 1; +if (this.isShiftZoomedY) { +minY = this.minYOnScale; +maxY = this.maxYOnScale; +}var yStep = this.setScaleParams(minY, maxY, 1); +var dy = (isInverted ? yStep / 2 : yStep / 4); +var dy2 = (isInverted ? yStep / 4 : yStep / 2); +if (!this.isShiftZoomedY) { +this.minYOnScale = (minY == 0 ? 0 : setScaleMinMax ? dy * Math.floor(minY / dy) : minY); +this.maxYOnScale = (setScaleMinMax ? dy2 * Math.ceil(maxY * 1.05 / dy2) : maxY); +}this.firstY = (minY == 0 ? 0 : Math.floor(minY / dy) * dy); +if (this.minYOnScale < 0 && this.maxYOnScale > 0) { +this.firstY = 0; +while (this.firstY - yStep > this.minYOnScale) this.firstY -= yStep; + +} else if (this.minYOnScale != 0 && Math.abs((minY - this.firstY) / dy) > 0.0001) { +this.firstY += dy; +}if (setScaleMinMax) { +this.initMinYOnScale = this.minYOnScale; +this.initMaxYOnScale = this.maxYOnScale; +this.initMinY = minY; +this.initMaxY = maxY; +}}, "~N,~N,~B,~B"); +Clazz.defineMethod(c$, "scale2D", +function(f){ +var dy = this.maxY - this.minY; +if (f == 1) { +this.maxY = this.initMaxY; +this.minY = this.initMinY; +return; +}this.maxY = this.minY + dy / f; +}, "~N"); +Clazz.defineMethod(c$, "setXRange", +function(x1, x2){ +this.minX = x1; +this.maxX = x2; +this.setXScale(); +}, "~N,~N"); +c$.getXRange = Clazz.defineMethod(c$, "getXRange", +function(i, xyCoords, initX, finalX, iStart, iEnd, startIndices, endIndices){ +var index = 0; +var ptCount = 0; +for (index = iStart; index <= iEnd; index++) { +if (xyCoords[index].getXVal() >= initX) { +startIndices[i] = index; +ptCount = 1; +break; +}} +while (++index <= iEnd && xyCoords[index].getXVal() <= finalX) { +ptCount++; +} +endIndices[i] = startIndices[i] + ptCount - 1; +return ptCount; +}, "~N,~A,~N,~N,~N,~N,~A,~A"); +Clazz.defineMethod(c$, "setScaleParams", +function(min, max, i){ +var dx = (max == min ? 1 : Math.abs(max - min) / 14); +var log = Math.log10(Math.abs(dx)); +var exp = Clazz.doubleToInt(Math.floor(log)); +this.exportPrecision[i] = exp; +this.precision[i] = (exp <= 0 ? Math.min(8, 1 - exp) : exp > 3 ? -2 : 0); +var j = 0; +var dec = Math.pow(10, log - exp); +while (dec > JSV.common.ScaleData.NTICKS[j]) { +j++; +} +this.steps[i] = Math.pow(10, exp) * JSV.common.ScaleData.NTICKS[j]; +log = Math.log10(Math.abs(this.steps[i] * 1.0001e5)); +var mantissa = log - Math.floor(log); +var n = 0; +for (j = 0; j < JSV.common.ScaleData.NTICKS.length; j++) if (Math.abs(mantissa - JSV.common.ScaleData.LOGTICKS[j]) < 0.001) { +n = JSV.common.ScaleData.NTICKS[j]; +break; +} +this.minorTickCounts[i] = n; +return this.steps[i]; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "isInRangeX", +function(x){ +return (x >= this.minX && x <= this.maxX); +}, "~N"); +Clazz.defineMethod(c$, "addSpecShift", +function(dx){ +this.specShift += dx; +this.minX += dx; +this.maxX += dx; +this.minXOnScale += dx; +this.maxXOnScale += dx; +this.firstX += dx; +}, "~N"); +Clazz.defineMethod(c$, "getInfo", +function(info){ +info.put("specShift", Double.$valueOf(this.specShift)); +info.put("minX", Double.$valueOf(this.minX)); +info.put("maxX", Double.$valueOf(this.maxX)); +info.put("minXOnScale", Double.$valueOf(this.minXOnScale)); +info.put("maxXOnScale", Double.$valueOf(this.maxXOnScale)); +info.put("minY", Double.$valueOf(this.minY)); +info.put("maxY", Double.$valueOf(this.maxY)); +info.put("minYOnScale", Double.$valueOf(this.minYOnScale)); +info.put("maxYOnScale", Double.$valueOf(this.maxYOnScale)); +info.put("minorTickCountX", Integer.$valueOf(this.minorTickCounts[0])); +info.put("xStep", Double.$valueOf(this.steps[0])); +return info; +}, "java.util.Map"); +Clazz.defineMethod(c$, "setMinMax", +function(minX, maxX, minY, maxY){ +this.minX = minX; +this.maxX = maxX; +this.minY = minY; +this.maxY = maxY; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "toX", +function(xPixel, xPixel1, drawXAxisLeftToRight){ +return this.toXScaled(xPixel, xPixel1, drawXAxisLeftToRight, this.xFactorForScale); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "toX0", +function(xPixel, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toXScaled(xPixel, xPixel1, drawXAxisLeftToRight, (this.maxXOnScale - this.minXOnScale) / (xPixel1 - xPixel0)); +}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "toXScaled", +function(xPixel, xPixel1, drawXAxisLeftToRight, factor){ +return (drawXAxisLeftToRight ? this.maxXOnScale - (xPixel1 - xPixel) * factor : this.minXOnScale + (xPixel1 - xPixel) * factor); +}, "~N,~N,~B,~N"); +Clazz.defineMethod(c$, "toPixelX", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toPixelXScaled(dx, xPixel0, xPixel1, drawXAxisLeftToRight, this.xFactorForScale); +}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "toPixelX0", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toPixelXScaled(dx, xPixel0, xPixel1, drawXAxisLeftToRight, (this.maxXOnScale - this.minXOnScale) / (xPixel1 - xPixel0)); +}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "toPixelXScaled", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight, factor){ +var x = Clazz.doubleToInt((dx - this.minXOnScale) / factor); +return (drawXAxisLeftToRight ? xPixel0 + x : xPixel1 - x); +}, "~N,~N,~N,~B,~N"); +Clazz.defineMethod(c$, "toY", +function(yPixel, yPixel0){ +return this.maxYOnScale + (yPixel0 - yPixel) * this.yFactorForScale; +}, "~N,~N"); +Clazz.defineMethod(c$, "toY0", +function(yPixel, yPixel0, yPixel1){ +var factor = (this.maxYOnScale - this.minYOnScale) / (yPixel1 - yPixel0); +var y = this.maxYOnScale + (yPixel0 - yPixel) * factor; +return Math.max(this.minYOnScale, Math.min(y, this.maxYOnScale)); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "toPixelY", +function(yVal, yPixel1){ +return (Double.isNaN(yVal) ? -2147483648 : yPixel1 - Clazz.doubleToInt(((yVal - this.spectrumYRef) * this.userYFactor + this.spectrumYRef - this.minYOnScale) / this.yFactorForScale)); +}, "~N,~N"); +Clazz.defineMethod(c$, "toPixelY0", +function(y, yPixel0, yPixel1){ +var factor = (this.maxYOnScale - this.minYOnScale) / (yPixel1 - yPixel0); +return Clazz.doubleToInt(yPixel0 + (this.maxYOnScale - y) / factor); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setXYScale", +function(xPixels, yPixels, isInverted){ +var yRef = this.spectrumYRef; +var f = this.spectrumScaleFactor; +var useInit = (f != 1 || this.isShiftZoomedY); +var minY = (useInit ? this.initMinYOnScale : this.minY); +var maxY = (useInit ? this.initMaxYOnScale : this.maxY); +if (useInit && yRef < minY) yRef = minY; +if (useInit && yRef > maxY) yRef = maxY; +this.setYScale((minY - yRef) / f + yRef, (maxY - yRef) / f + yRef, f == 1, isInverted); +this.xFactorForScale = (this.maxXOnScale - this.minXOnScale) / (xPixels - 1); +this.yFactorForScale = (this.maxYOnScale - this.minYOnScale) / (yPixels - 1); +}, "~N,~N,~B"); +c$.copyScaleFactors = Clazz.defineMethod(c$, "copyScaleFactors", +function(sdFrom, sdTo){ +for (var i = 0; i < sdFrom.length; i++) { +sdTo[i].spectrumScaleFactor = sdFrom[i].spectrumScaleFactor; +sdTo[i].spectrumYRef = sdFrom[i].spectrumYRef; +sdTo[i].userYFactor = sdFrom[i].userYFactor; +sdTo[i].specShift = sdFrom[i].specShift; +sdTo[i].isShiftZoomedY = sdFrom[i].isShiftZoomedY; +} +}, "~A,~A"); +c$.copyYScales = Clazz.defineMethod(c$, "copyYScales", +function(sdFrom, sdTo){ +for (var i = 0; i < sdFrom.length; i++) { +sdTo[i].initMinYOnScale = sdFrom[i].initMinYOnScale; +sdTo[i].initMaxYOnScale = sdFrom[i].initMaxYOnScale; +sdTo[i].minY = sdFrom[i].minY; +sdTo[i].maxY = sdFrom[i].maxY; +if (sdFrom[i].isShiftZoomedY) { +sdTo[i].isShiftZoomedY = true; +sdTo[i].minYOnScale = sdFrom[i].minYOnScale; +sdTo[i].maxYOnScale = sdFrom[i].maxYOnScale; +}} +}, "~A,~A"); +c$.setDataPointIndices = Clazz.defineMethod(c$, "setDataPointIndices", +function(graphsTemp, initX, finalX, minPoints, startIndices, endIndices){ +var nSpectraOK = 0; +var nSpectra = graphsTemp.size(); +for (var i = 0; i < nSpectra; i++) { +var xyCoords = graphsTemp.get(i).getXYCoords(); +if (JSV.common.ScaleData.getXRange(i, xyCoords, initX, finalX, 0, xyCoords.length - 1, startIndices, endIndices) >= minPoints) nSpectraOK++; +} +return (nSpectraOK == nSpectra); +}, "JU.Lst,~N,~N,~N,~A,~A"); +c$.fixScale = Clazz.defineMethod(c$, "fixScale", +function(map){ +if (map.isEmpty()) return; +while (true) { +for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var s = entry.getValue(); +var pt = s.indexOf("E"); +if (pt >= 0) s = s.substring(0, pt); +if (s.indexOf(".") < 0) return; +if (!s.endsWith("0") && !s.endsWith(".")) return; +} +for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var s = entry.getValue(); +var pt = s.indexOf("E"); +if (pt >= 0) entry.setValue(s.substring(0, pt - 1) + s.substring(pt)); + else entry.setValue(s.substring(0, s.length - 1)); +} +} +}, "java.util.Map"); +Clazz.defineMethod(c$, "scaleBy", +function(f){ +if (this.isShiftZoomedY) { +var center = (this.isYZeroOnScale() ? this.spectrumYRef : (this.minYOnScale + this.maxYOnScale) / 2); +this.minYOnScale = center - (center - this.minYOnScale) / f; +this.maxYOnScale = center - (center - this.maxYOnScale) / f; +} else { +this.spectrumScaleFactor *= f; +}}, "~N"); +c$.NTICKS = Clazz.newIntArray(-1, [2, 5, 10, 10]); +c$.LOGTICKS = Clazz.newDoubleArray(-1, [Math.log10(2), Math.log10(5), 0, 1]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScriptToken.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScriptToken.js new file mode 100755 index 000000000000..67b9e18746ca --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScriptToken.js @@ -0,0 +1,210 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.lang.Enum"], "JSV.common.ScriptToken", ["java.util.Hashtable", "JU.Lst", "$.PT", "$.SB", "JSV.common.ScriptTokenizer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tip = null; +this.description = null; +Clazz.instantialize(this, arguments);}, JSV.common, "ScriptToken", Enum); +Clazz.defineMethod(c$, "getTip", +function(){ +return " " + (this.tip === "T" ? "TRUE/FALSE/TOGGLE" : this.tip === "TF" ? "TRUE or FALSE" : this.tip === "C" ? "COLOR" : this.tip); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.makeConstructor(c$, +function(tip){ +this.tip = tip; +this.description = ""; +}, "~S"); +Clazz.makeConstructor(c$, +function(tip, description){ +this.tip = tip; +this.description = "-- " + description; +}, "~S,~S"); +c$.getParams = Clazz.defineMethod(c$, "getParams", +function(){ +if (JSV.common.ScriptToken.htParams == null) { +JSV.common.ScriptToken.htParams = new java.util.Hashtable(); +for (var item, $item = 0, $$item = JSV.common.ScriptToken.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) JSV.common.ScriptToken.htParams.put(item.name(), item); + +}return JSV.common.ScriptToken.htParams; +}); +c$.getScriptToken = Clazz.defineMethod(c$, "getScriptToken", +function(name){ +var st = JSV.common.ScriptToken.getParams().get(name.toUpperCase()); +return (st == null ? JSV.common.ScriptToken.UNKNOWN : st); +}, "~S"); +c$.getScriptTokenList = Clazz.defineMethod(c$, "getScriptTokenList", +function(name, isExact){ +if (name != null) name = name.toUpperCase(); +var list = new JU.Lst(); +if (isExact) { +var st = JSV.common.ScriptToken.getScriptToken(name); +if (st != null) list.addLast(st); +} else { +for (var entry, $entry = JSV.common.ScriptToken.getParams().entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) if ((name == null || entry.getKey().startsWith(name)) && entry.getValue().tip != null) list.addLast(entry.getValue()); + +}return list; +}, "~S,~B"); +c$.getValue = Clazz.defineMethod(c$, "getValue", +function(st, params, cmd){ +if (!params.hasMoreTokens()) return ""; +switch (st) { +default: +return JSV.common.ScriptTokenizer.nextStringToken(params, true); +case JSV.common.ScriptToken.CLOSE: +case JSV.common.ScriptToken.GETPROPERTY: +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +case JSV.common.ScriptToken.JMOL: +case JSV.common.ScriptToken.LABEL: +case JSV.common.ScriptToken.LOAD: +case JSV.common.ScriptToken.PEAK: +case JSV.common.ScriptToken.PLOTCOLORS: +case JSV.common.ScriptToken.YSCALE: +case JSV.common.ScriptToken.WRITE: +return JSV.common.ScriptToken.removeCommandName(cmd); +case JSV.common.ScriptToken.SELECT: +case JSV.common.ScriptToken.OVERLAY: +case JSV.common.ScriptToken.VIEW: +case JSV.common.ScriptToken.ZOOM: +return JSV.common.ScriptToken.removeCommandName(cmd).$replace(',', ' ').trim(); +} +}, "JSV.common.ScriptToken,JSV.common.ScriptTokenizer,~S"); +c$.removeCommandName = Clazz.defineMethod(c$, "removeCommandName", +function(cmd){ +var pt = cmd.indexOf(" "); +if (pt < 0) return ""; +return cmd.substring(pt).trim(); +}, "~S"); +c$.getKey = Clazz.defineMethod(c$, "getKey", +function(eachParam){ +var key = eachParam.nextToken(); +if (key.startsWith("#") || key.startsWith("//")) return null; +if (key.equalsIgnoreCase("SET")) key = eachParam.nextToken(); +return key.toUpperCase(); +}, "JSV.common.ScriptTokenizer"); +c$.getTokens = Clazz.defineMethod(c$, "getTokens", +function(value){ +if (value.startsWith("'") && value.endsWith("'")) value = "\"" + JU.PT.trim(value, "'") + "\""; +var tokens = new JU.Lst(); +var st = new JSV.common.ScriptTokenizer(value, false); +while (st.hasMoreTokens()) { +var s = JSV.common.ScriptTokenizer.nextStringToken(st, false); +if (s.startsWith("//") || s.startsWith("#")) break; +tokens.addLast(s); +} +return tokens; +}, "~S"); +c$.getNameList = Clazz.defineMethod(c$, "getNameList", +function(list){ +if (list.size() == 0) return ""; +var sb = new JU.SB(); +for (var i = 0; i < list.size(); i++) sb.append(",").append(list.get(i).toString()); + +return sb.toString().substring(1); +}, "JU.Lst"); +Clazz.defineMethod(c$, "getDescription", +function(){ +return this.description; +}); +c$.htParams = null; +Clazz.defineEnumConstant(c$, "UNKNOWN", 0, []); +Clazz.defineEnumConstant(c$, "APPLETID", 1, []); +Clazz.defineEnumConstant(c$, "APPLETREADYCALLBACKFUNCTIONNAME", 2, []); +Clazz.defineEnumConstant(c$, "AUTOINTEGRATE", 3, ["TF", "automatically integrate an NMR spectrum"]); +Clazz.defineEnumConstant(c$, "BACKGROUNDCOLOR", 4, ["C", "set the background color"]); +Clazz.defineEnumConstant(c$, "CLOSE", 5, ["spectrumId or fileName or ALL or VIEWS or SIMULATIONS", "close one or more views or simulations"]); +Clazz.defineEnumConstant(c$, "COMPOUNDMENUON", 6, []); +Clazz.defineEnumConstant(c$, "COORDCALLBACKFUNCTIONNAME", 7, []); +Clazz.defineEnumConstant(c$, "COORDINATESCOLOR", 8, ["C", "set the color of the coordinates shown in the upper right-hand corner"]); +Clazz.defineEnumConstant(c$, "COORDINATESON", 9, ["T", "turn on or off the coordinates shown in the upper right-hand corner"]); +Clazz.defineEnumConstant(c$, "DEBUG", 10, ["TF", "turn debugging on and off"]); +Clazz.defineEnumConstant(c$, "DEFAULTLOADSCRIPT", 11, ["\"script...\"", "set the script to be run after each file is loaded"]); +Clazz.defineEnumConstant(c$, "DEFAULTNMRNORMALIZATION", 12, ["maxYvalue", "set the value to be given the largest peak in an HMR spectrum"]); +Clazz.defineEnumConstant(c$, "DISPLAYFONTNAME", 13, []); +Clazz.defineEnumConstant(c$, "DISPLAY1D", 14, ["T", "turn on or off display of 1D spectra when 1D and 2D spectra are loaded"]); +Clazz.defineEnumConstant(c$, "DISPLAY2D", 15, ["T", "turn on or off display of the 2D spectrum when 1D and 2D spectra are loaded"]); +Clazz.defineEnumConstant(c$, "ENABLEZOOM", 16, ["T", "allow or disallow zooming"]); +Clazz.defineEnumConstant(c$, "ENDINDEX", 17, []); +Clazz.defineEnumConstant(c$, "FINDX", 18, ["value", "move the vertical-line cursor to a specific x-axis value"]); +Clazz.defineEnumConstant(c$, "GETPROPERTY", 19, ["[propertyName] or ALL or NAMES", "get a property value or all property values as key/value pairs, or a list of names"]); +Clazz.defineEnumConstant(c$, "GETSOLUTIONCOLOR", 20, [" FILL or FILLNONE or FILLALL or FILLALLNONE", "estimate the solution color for UV/VIS spectra"]); +Clazz.defineEnumConstant(c$, "GRIDCOLOR", 21, ["C", "color of the grid"]); +Clazz.defineEnumConstant(c$, "GRIDON", 22, ["T", "turn the grid lines on or off"]); +Clazz.defineEnumConstant(c$, "HELP", 23, ["[command]", "get this listing or help for a specific command"]); +Clazz.defineEnumConstant(c$, "HIDDEN", 24, []); +Clazz.defineEnumConstant(c$, "HIGHLIGHTCOLOR", 25, ["C", "set the highlight color"]); +Clazz.defineEnumConstant(c$, "HIGHLIGHT", 26, ["OFF or X1 X2 [OFF] or X1 X2 r g b [a]", "turns on or off a highlight color, possibily setting its color, where r g b a are 0-255 or 0.0-1.0"]); +Clazz.defineEnumConstant(c$, "INTEGRALOFFSET", 27, ["percent", "sets the integral offset from baseline"]); +Clazz.defineEnumConstant(c$, "INTEGRALRANGE", 28, ["percent", "sets the height of the total integration"]); +Clazz.defineEnumConstant(c$, "INTEGRATE", 29, ["", "see INTEGRATION"]); +Clazz.defineEnumConstant(c$, "INTEGRATION", 30, ["ON/OFF/TOGGLE/AUTO/CLEAR/MIN value/MARK ppm1-ppm2:norm,ppm3-ppm4,...", "show/hide integration or set integrals (1D 1H NMR only)"]); +Clazz.defineEnumConstant(c$, "INTEGRALPLOTCOLOR", 31, ["C", "color of the integration line"]); +Clazz.defineEnumConstant(c$, "INTEGRATIONRATIOS", 32, ["'x:value,x:value,..'", "annotate the spectrum with numbers or text at specific x values"]); +Clazz.defineEnumConstant(c$, "INTERFACE", 33, ["SINGLE or OVERLAY", "set how multiple spectra are displayed"]); +Clazz.defineEnumConstant(c$, "INVERTY", 34, ["", "invert the Y axis"]); +Clazz.defineEnumConstant(c$, "IRMODE", 35, ["A or T or TOGGLE", "set the IR mode to absorption or transmission"]); +Clazz.defineEnumConstant(c$, "JMOL", 36, ["...Jmol command...", "send a command to Jmol (if present)"]); +Clazz.defineEnumConstant(c$, "JSV", 37, []); +Clazz.defineEnumConstant(c$, "LABEL", 38, ["x y [color and/or \"text\"]", "add a text label"]); +Clazz.defineEnumConstant(c$, "LINK", 39, ["AB or ABC or NONE or ALL", "synchronize the crosshair of a 2D spectrum with 1D cursors"]); +Clazz.defineEnumConstant(c$, "LOAD", 40, ["[APPEND] \"fileName\" [first] [last]; use \"\" for current file; $H1/name or $C13/name for simulation", "load a specturm"]); +Clazz.defineEnumConstant(c$, "LOADFILECALLBACKFUNCTIONNAME", 41, []); +Clazz.defineEnumConstant(c$, "LOADIMAGINARY", 42, ["TF", "set TRUE to load imaginary NMR component"]); +Clazz.defineEnumConstant(c$, "MENUON", 43, []); +Clazz.defineEnumConstant(c$, "OBSCURE", 44, []); +Clazz.defineEnumConstant(c$, "OVERLAY", 45, []); +Clazz.defineEnumConstant(c$, "OVERLAYSTACKED", 46, ["TF", "whether viewed spectra are shown separately, in a stack"]); +Clazz.defineEnumConstant(c$, "PEAK", 47, ["[IR,CNMR,HNMR,MS] [#nnn or ID=xxx or text] [ALL], for example: PEAK HNMR #3", "highlights a peak based on its number or title text, optionally checking all loade spectra"]); +Clazz.defineEnumConstant(c$, "PEAKCALLBACKFUNCTIONNAME", 48, []); +Clazz.defineEnumConstant(c$, "PEAKLIST", 49, ["[THRESHOLD=n] [INTERPOLATE=PARABOLIC or NONE]", "creates a peak list based on a threshold value and parabolic or no interpolation"]); +Clazz.defineEnumConstant(c$, "PEAKTABCOLOR", 50, ["C", "sets the color of peak marks for a peak listing"]); +Clazz.defineEnumConstant(c$, "PEAKTABSON", 51, ["T", "show peak tabs for simulated spectra"]); +Clazz.defineEnumConstant(c$, "PLOTAREACOLOR", 52, ["C", "sets the color of the plot background"]); +Clazz.defineEnumConstant(c$, "PLOTCOLOR", 53, ["C", "sets the color of the graph line"]); +Clazz.defineEnumConstant(c$, "PLOTCOLORS", 54, ["color,color,color,...", "sets the colors of multiple plots"]); +Clazz.defineEnumConstant(c$, "POINTSONLY", 55, ["TF", "show points only for all data"]); +Clazz.defineEnumConstant(c$, "PRINT", 56, ["", "prints the current spectrum"]); +Clazz.defineEnumConstant(c$, "REVERSEPLOT", 57, ["T", "reverses the x-axis of a spectrum"]); +Clazz.defineEnumConstant(c$, "SCALEBY", 58, ["factor", "multiplies the y-scale of the spectrum by a factor"]); +Clazz.defineEnumConstant(c$, "SCALECOLOR", 59, ["C", "sets the color of the x-axis and y-axis scales"]); +Clazz.defineEnumConstant(c$, "SCRIPT", 60, ["filename.jsv", "runs a script from a file"]); +Clazz.defineEnumConstant(c$, "SELECT", 61, ["spectrumID, spectrumID,...", "selects one or more spectra based on IDs"]); +Clazz.defineEnumConstant(c$, "SETPEAK", 62, ["xNew, xOld xNew, ?, or NONE", "sets nearest peak to xOld ppm to a new value; NONE resets (1D NMR only)"]); +Clazz.defineEnumConstant(c$, "SETX", 63, ["xNew, xOld xNew, ?, or NONE", "sets an old ppm position in the spectrum to a new value; NONE resets (1D NMR only)"]); +Clazz.defineEnumConstant(c$, "SHIFTX", 64, ["dx or NONE", "shifts the x-axis of a 1D NMR spectrum by the given ppm; NONE resets (1D NMR only)"]); +Clazz.defineEnumConstant(c$, "SHOWERRORS", 65, ["shows recent errors"]); +Clazz.defineEnumConstant(c$, "SHOWINTEGRATION", 66, ["T", "shows an integration listing"]); +Clazz.defineEnumConstant(c$, "SHOWKEY", 67, ["T", "shows a color key when multiple spectra are displayed"]); +Clazz.defineEnumConstant(c$, "SHOWMEASUREMENTS", 68, ["T", "shows a listing of measurements"]); +Clazz.defineEnumConstant(c$, "SHOWMENU", 69, ["displays the popup menu"]); +Clazz.defineEnumConstant(c$, "SHOWPEAKLIST", 70, ["T", "shows a listing for peak picking"]); +Clazz.defineEnumConstant(c$, "SHOWPROPERTIES", 71, ["displays the header information of a JDX file"]); +Clazz.defineEnumConstant(c$, "SHOWSOURCE", 72, ["displays the source JDX file associated with the selected data"]); +Clazz.defineEnumConstant(c$, "SPECTRUM", 73, ["id", "displays a specific spectrum, where id is a number 1, 2, 3... or a file.spectrum number such as 2.1"]); +Clazz.defineEnumConstant(c$, "SPECTRUMNUMBER", 74, ["n", "displays the nth spectrum loaded"]); +Clazz.defineEnumConstant(c$, "STACKOFFSETY", 75, ["percent", "sets the y-axis offset of stacked spectra"]); +Clazz.defineEnumConstant(c$, "STARTINDEX", 76, []); +Clazz.defineEnumConstant(c$, "SYNCCALLBACKFUNCTIONNAME", 77, []); +Clazz.defineEnumConstant(c$, "SYNCID", 78, []); +Clazz.defineEnumConstant(c$, "TEST", 79, []); +Clazz.defineEnumConstant(c$, "TITLEON", 80, ["T", "turns the title in the bottom left corner on or off"]); +Clazz.defineEnumConstant(c$, "TITLEBOLDON", 81, ["T", "makes the title bold"]); +Clazz.defineEnumConstant(c$, "TITLECOLOR", 82, ["C", "sets the color of the title"]); +Clazz.defineEnumConstant(c$, "TITLEFONTNAME", 83, ["fontName", "sets the title font"]); +Clazz.defineEnumConstant(c$, "UNITSCOLOR", 84, ["C", "sets the color of the x-axis and y-axis units"]); +Clazz.defineEnumConstant(c$, "VERSION", 85, []); +Clazz.defineEnumConstant(c$, "VIEW", 86, ["spectrumID, spectrumID, ... Example: VIEW 3.1, 3.2 or VIEW \"acetophenone\"", "creates a view of one or more spectra"]); +Clazz.defineEnumConstant(c$, "XSCALEON", 87, ["T", "set FALSE to turn off the x-axis scale"]); +Clazz.defineEnumConstant(c$, "XUNITSON", 88, ["T", "set FALSE to turn off the x-axis units"]); +Clazz.defineEnumConstant(c$, "YSCALE", 89, ["[ALL] lowValue highValue"]); +Clazz.defineEnumConstant(c$, "YSCALEON", 90, ["T", "set FALSE to turn off the y-axis scale"]); +Clazz.defineEnumConstant(c$, "YUNITSON", 91, ["T", "set FALSE to turn off the y-axis units"]); +Clazz.defineEnumConstant(c$, "WINDOW", 92, []); +Clazz.defineEnumConstant(c$, "WRITE", 93, ["[XY,DIF,DIFDUP,PAC,FIX,SQZ,AML,CML,JPG,PDF,PNG,SVG] \"filename\"", "writes a file in the specified format"]); +Clazz.defineEnumConstant(c$, "ZOOM", 94, ["OUT or PREVIOUS or NEXT or x1,x2 or x1,y1 x2,y2", "sets the zoom"]); +Clazz.defineEnumConstant(c$, "ZOOMBOXCOLOR", 95, []); +Clazz.defineEnumConstant(c$, "ZOOMBOXCOLOR2", 96, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScriptTokenizer.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScriptTokenizer.js new file mode 100755 index 000000000000..dd376f7dc960 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ScriptTokenizer.js @@ -0,0 +1,71 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(null, "JSV.common.ScriptTokenizer", ["JU.PT"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.str = null; +this.pt = -1; +this.len = 0; +this.isCmd = false; +this.doCheck = true; +Clazz.instantialize(this, arguments);}, JSV.common, "ScriptTokenizer", null); +Clazz.makeConstructor(c$, +function(str, isCmd){ +this.str = str; +this.len = str.length; +this.isCmd = isCmd; +}, "~S,~B"); +c$.nextStringToken = Clazz.defineMethod(c$, "nextStringToken", +function(eachParam, removeQuotes){ +var s = eachParam.nextToken(); +return (removeQuotes && s.charAt(0) == '"' && s.endsWith("\"") && s.length > 1 ? JU.PT.trimQuotes(s) : s); +}, "JSV.common.ScriptTokenizer,~B"); +Clazz.defineMethod(c$, "nextToken", +function(){ +if (this.doCheck) this.hasMoreTokens(); +var pt0 = this.pt; +var inQuote = (this.str.charAt(this.pt) == '"'); +while (++this.pt < this.len) { +switch ((this.str.charAt(this.pt)).charCodeAt(0)) { +case 34: +if (inQuote) { +if (this.isCmd) { +inQuote = false; +continue; +}this.pt++; +break; +}if (this.isCmd) inQuote = true; +continue; +case 32: +if (!this.isCmd && !inQuote) break; +continue; +case 59: +case 10: +if (this.isCmd && !inQuote) break; +continue; +default: +continue; +} +break; +} +this.doCheck = true; +return this.str.substring(pt0, this.pt); +}); +Clazz.defineMethod(c$, "hasMoreTokens", +function(){ +while (++this.pt < this.len) { +switch ((this.str.charAt(this.pt)).charCodeAt(0)) { +case 32: +case 59: +case 10: +continue; +} +break; +} +this.doCheck = false; +return (this.pt < this.len); +}); +Clazz.defineMethod(c$, "getRemainingScript", +function(){ +return this.str.substring(this.pt); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/Spectrum.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Spectrum.js new file mode 100755 index 000000000000..0b7c9034e78c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Spectrum.js @@ -0,0 +1,478 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["java.lang.Enum", "JSV.source.JDXDataObject", "JU.Lst"], "JSV.common.Spectrum", ["java.util.Hashtable", "JU.PT", "JSV.common.Coordinate", "$.Parameters", "$.PeakInfo", "JSV.source.JDXSourceStreamTokenizer", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.id = ""; +this.fillColor = null; +this.subSpectra = null; +this.peakList = null; +this.peakXLabel = null; +this.peakYLabel = null; +this.selectedPeak = null; +this.highlightedPeak = null; +this.convertedSpectrum = null; +this.specShift = 0; +this.userYFactor = 1; +this.currentSubSpectrumIndex = 0; +this.$isForcedSubset = false; +this.exportXAxisLeftToRight = false; +this.titleLabel = null; +Clazz.instantialize(this, arguments);}, JSV.common, "Spectrum", JSV.source.JDXDataObject); +Clazz.prepareFields (c$, function(){ +this.peakList = new JU.Lst(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.common.Spectrum, []); +this.headerTable = new JU.Lst(); +this.xyCoords = new Array(0); +this.parent = this; +}); +Clazz.defineMethod(c$, "dispose", +function(){ +}); +Clazz.defineMethod(c$, "isForcedSubset", +function(){ +return this.$isForcedSubset; +}); +Clazz.defineMethod(c$, "setId", +function(id){ +this.id = id; +}, "~S"); +Clazz.defineMethod(c$, "copy", +function(){ +var newSpectrum = new JSV.common.Spectrum(); +this.copyTo(newSpectrum); +newSpectrum.setPeakList(this.peakList, this.peakXLabel, null); +newSpectrum.fillColor = this.fillColor; +return newSpectrum; +}); +Clazz.defineMethod(c$, "getXYCoords", +function(){ +return this.getCurrentSubSpectrum().xyCoords; +}); +Clazz.defineMethod(c$, "getPeakList", +function(){ +return this.peakList; +}); +Clazz.defineMethod(c$, "setPeakList", +function(list, peakXLabel, peakYLabel){ +this.peakList = list; +this.peakXLabel = peakXLabel; +this.peakYLabel = peakYLabel; +for (var i = list.size(); --i >= 0; ) this.peakList.get(i).spectrum = this; + +if (JU.Logger.debugging) JU.Logger.info("Spectrum " + this.getTitle() + " peaks: " + list.size()); +return list.size(); +}, "JU.Lst,~S,~S"); +Clazz.defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +if (this.peakList != null && this.peakList.size() > 0 && (atomKey == null || this.sourceID.equals(index))) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkFileIndex(filePath, index, atomKey)) { +System.out.println("selecting peak by FileIndex " + this + " " + this.peakList.get(i)); +return (this.selectedPeak = this.peakList.get(i)); +} +return null; +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "selectPeakByFilePathTypeModel", +function(filePath, type, model){ +if (this.peakList != null && this.peakList.size() > 0) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkFileTypeModel(filePath, type, model)) { +System.out.println("selecting peak byFilePathTypeModel " + this + " " + this.peakList.get(i)); +return (this.selectedPeak = this.peakList.get(i)); +} +return null; +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "matchesPeakTypeModel", +function(type, model){ +if (type.equals("ID")) return (this.sourceID.equalsIgnoreCase(model)); +if (this.peakList != null && this.peakList.size() > 0) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkTypeModel(type, model)) return true; + +return false; +}, "~S,~S"); +Clazz.defineMethod(c$, "setSelectedPeak", +function(peak){ +this.selectedPeak = peak; +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "setHighlightedPeak", +function(peak){ +this.highlightedPeak = peak; +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "getSelectedPeak", +function(){ +return this.selectedPeak; +}); +Clazz.defineMethod(c$, "getModelPeakInfoForAutoSelectOnLoad", +function(){ +if (this.peakList != null) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).autoSelectOnLoad()) return this.peakList.get(i); + +return null; +}); +Clazz.defineMethod(c$, "getAssociatedPeakInfo", +function(xPixel, coord){ +this.selectedPeak = this.findPeakByCoord(xPixel, coord); +return (this.selectedPeak == null ? this.getBasePeakInfo() : this.selectedPeak); +}, "~N,JSV.common.Coordinate"); +Clazz.defineMethod(c$, "findPeakByCoord", +function(xPixel, coord){ +if (coord != null && this.peakList != null && this.peakList.size() > 0) { +var xVal = coord.getXVal(); +var iBest = -1; +var dBest = 1e100; +for (var i = 0; i < this.peakList.size(); i++) { +var d = this.peakList.get(i).checkRange(xPixel, xVal); +if (d < dBest) { +dBest = d; +iBest = i; +}} +if (iBest >= 0) return this.peakList.get(iBest); +}return null; +}, "~N,JSV.common.Coordinate"); +Clazz.defineMethod(c$, "getPeakTitle", +function(){ +return (this.selectedPeak != null ? this.selectedPeak.getTitle() : this.highlightedPeak != null ? this.highlightedPeak.getTitle() : this.getTitleLabel()); +}); +Clazz.defineMethod(c$, "getTitleLabel", +function(){ +if (this.titleLabel != null) return this.titleLabel; +var type = (this.peakList == null || this.peakList.size() == 0 ? this.getQualifiedDataType() : this.peakList.get(0).getType()); +if (type != null && type.startsWith("NMR")) { +if (this.nucleusY != null && !this.nucleusY.equals("?")) { +type = "2D" + type; +} else { +type = JSV.source.JDXDataObject.getNominalSpecFreq(this.nucleusX, this.getObservedFreq()) + " MHz " + this.nucleusX + " " + type; +}}return this.titleLabel = (type != null && type.length > 0 ? type + " " : "") + this.getTitle(); +}); +Clazz.defineMethod(c$, "setNextPeak", +function(coord, istep){ +if (this.peakList == null || this.peakList.size() == 0) return -1; +var x0 = coord.getXVal() + istep * 0.000001; +var ipt1 = -1; +var ipt2 = -1; +var dmin1 = 1.7976931348623157E308 * istep; +var dmin2 = 0; +for (var i = this.peakList.size(); --i >= 0; ) { +var x = this.peakList.get(i).getX(); +if (istep > 0) { +if (x > x0 && x < dmin1) { +ipt1 = i; +dmin1 = x; +} else if (x < x0 && x - x0 < dmin2) { +ipt2 = i; +dmin2 = x - x0; +}} else { +if (x < x0 && x > dmin1) { +ipt1 = i; +dmin1 = x; +} else if (x > x0 && x - x0 > dmin2) { +ipt2 = i; +dmin2 = x - x0; +}}} +if (ipt1 < 0) { +if (ipt2 < 0) return -1; +ipt1 = ipt2; +}return ipt1; +}, "JSV.common.Coordinate,~N"); +Clazz.defineMethod(c$, "getPercentYValueAt", +function(x){ +if (!this.isContinuous()) return NaN; +return this.getYValueAt(x); +}, "~N"); +Clazz.defineMethod(c$, "getYValueAt", +function(x){ +return JSV.common.Coordinate.getYValueAt(this.xyCoords, x); +}, "~N"); +Clazz.defineMethod(c$, "setUserYFactor", +function(userYFactor){ +this.userYFactor = userYFactor; +}, "~N"); +Clazz.defineMethod(c$, "getUserYFactor", +function(){ +return this.userYFactor; +}); +Clazz.defineMethod(c$, "getConvertedSpectrum", +function(){ +return this.convertedSpectrum; +}); +Clazz.defineMethod(c$, "setConvertedSpectrum", +function(spectrum){ +this.convertedSpectrum = spectrum; +}, "JSV.common.Spectrum"); +c$.taConvert = Clazz.defineMethod(c$, "taConvert", +function(spectrum, mode){ +if (!spectrum.isContinuous()) return spectrum; +switch (mode) { +case JSV.common.Spectrum.IRMode.NO_CONVERT: +return spectrum; +case JSV.common.Spectrum.IRMode.TO_ABS: +if (!spectrum.isTransmittance()) return spectrum; +break; +case JSV.common.Spectrum.IRMode.TO_TRANS: +if (!spectrum.isAbsorbance()) return spectrum; +break; +case JSV.common.Spectrum.IRMode.TOGGLE: +break; +} +var spec = spectrum.getConvertedSpectrum(); +return (spec != null ? spec : spectrum.isAbsorbance() ? JSV.common.Spectrum.toT(spectrum) : JSV.common.Spectrum.toA(spectrum)); +}, "JSV.common.Spectrum,JSV.common.Spectrum.IRMode"); +c$.toT = Clazz.defineMethod(c$, "toT", +function(spectrum){ +if (!spectrum.isAbsorbance()) return null; +var xyCoords = spectrum.getXYCoords(); +var newXYCoords = new Array(xyCoords.length); +if (!JSV.common.Coordinate.isYInRange(xyCoords, 0, 4.0)) xyCoords = JSV.common.Coordinate.normalise(xyCoords, 0, 4.0); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), JSV.common.Spectrum.toTransmittance(xyCoords[i].getYVal())); + +return JSV.common.Spectrum.newSpectrum(spectrum, newXYCoords, "TRANSMITTANCE"); +}, "JSV.common.Spectrum"); +c$.toA = Clazz.defineMethod(c$, "toA", +function(spectrum){ +if (!spectrum.isTransmittance()) return null; +var xyCoords = spectrum.getXYCoords(); +var newXYCoords = new Array(xyCoords.length); +var isPercent = JSV.common.Coordinate.isYInRange(xyCoords, -2, 2); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), JSV.common.Spectrum.toAbsorbance(xyCoords[i].getYVal(), isPercent)); + +return JSV.common.Spectrum.newSpectrum(spectrum, newXYCoords, "ABSORBANCE"); +}, "JSV.common.Spectrum"); +c$.newSpectrum = Clazz.defineMethod(c$, "newSpectrum", +function(spectrum, newXYCoords, units){ +var specNew = spectrum.copy(); +specNew.setOrigin("JSpecView Converted"); +specNew.setOwner("JSpecView Generated"); +specNew.setXYCoords(newXYCoords); +specNew.setYUnits(units); +spectrum.setConvertedSpectrum(specNew); +specNew.setConvertedSpectrum(spectrum); +return specNew; +}, "JSV.common.Spectrum,~A,~S"); +c$.toAbsorbance = Clazz.defineMethod(c$, "toAbsorbance", +function(x, isPercent){ +return (Math.min(4.0, isPercent ? 2 - JSV.common.Spectrum.log10(x) : -JSV.common.Spectrum.log10(x))); +}, "~N,~B"); +c$.toTransmittance = Clazz.defineMethod(c$, "toTransmittance", +function(x){ +return (x <= 0 ? 1 : Math.pow(10, -x)); +}, "~N"); +c$.log10 = Clazz.defineMethod(c$, "log10", +function(value){ +return Math.log(value) / Math.log(10); +}, "~N"); +c$.process = Clazz.defineMethod(c$, "process", +function(specs, irMode){ +if (irMode === JSV.common.Spectrum.IRMode.TO_ABS || irMode === JSV.common.Spectrum.IRMode.TO_TRANS) for (var i = 0; i < specs.size(); i++) specs.set(i, JSV.common.Spectrum.taConvert(specs.get(i), irMode)); + +return true; +}, "JU.Lst,JSV.common.Spectrum.IRMode"); +Clazz.defineMethod(c$, "getSubSpectra", +function(){ +return this.subSpectra; +}); +Clazz.defineMethod(c$, "getCurrentSubSpectrum", +function(){ +return (this.subSpectra == null ? this : this.subSpectra.get(this.currentSubSpectrumIndex)); +}); +Clazz.defineMethod(c$, "advanceSubSpectrum", +function(dir){ +return this.setCurrentSubSpectrum(this.currentSubSpectrumIndex + dir); +}, "~N"); +Clazz.defineMethod(c$, "setCurrentSubSpectrum", +function(n){ +return (this.currentSubSpectrumIndex = JSV.common.Coordinate.intoRange(n, 0, this.subSpectra.size() - 1)); +}, "~N"); +Clazz.defineMethod(c$, "addSubSpectrum", +function(spectrum, forceSub){ +if (!forceSub && (this.is1D() || this.blockID != spectrum.blockID) || !JSV.common.Spectrum.allowSubSpec(this, spectrum)) return false; +this.$isForcedSubset = forceSub; +if (this.subSpectra == null) { +this.subSpectra = new JU.Lst(); +this.addSubSpectrum(this, true); +}this.subSpectra.addLast(spectrum); +spectrum.parent = this; +return true; +}, "JSV.common.Spectrum,~B"); +Clazz.defineMethod(c$, "getSubIndex", +function(){ +return (this.subSpectra == null ? -1 : this.currentSubSpectrumIndex); +}); +Clazz.defineMethod(c$, "setExportXAxisDirection", +function(leftToRight){ +this.exportXAxisLeftToRight = leftToRight; +}, "~B"); +Clazz.defineMethod(c$, "isExportXAxisLeftToRight", +function(){ +return this.exportXAxisLeftToRight; +}); +Clazz.defineMethod(c$, "getInfo", +function(key){ +var info = new java.util.Hashtable(); +if ("id".equalsIgnoreCase(key)) { +info.put(key, this.id); +return info; +}var keys = null; +if ("".equals(key)) { +keys = "id specShift header"; +}info.put("id", this.id); +JSV.common.Parameters.putInfo(key, info, "specShift", Double.$valueOf(this.specShift)); +var justHeader = ("header".equals(key)); +if (!justHeader && key != null && keys == null) { +for (var i = this.headerTable.size(); --i >= 0; ) { +var entry = this.headerTable.get(i); +if (entry[0].equalsIgnoreCase(key) || entry[2].equalsIgnoreCase(key)) { +info.put(key, entry[1]); +return info; +}} +}var head = new java.util.Hashtable(); +var list = this.getHeaderRowDataAsArray(); +for (var i = 0; i < list.length; i++) { +var label = JSV.source.JDXSourceStreamTokenizer.cleanLabel(list[i][0]); +if (keys != null) { +keys += " " + label; +continue; +}if (key != null && !justHeader && !label.equals(key)) continue; +var val = JSV.common.Spectrum.fixInfoValue(list[i][1]); +if (key == null) { +var data = new java.util.Hashtable(); +data.put("value", val); +data.put("index", Integer.$valueOf(i + 1)); +info.put(label, data); +} else { +info.put(label, val); +}} +if (head.size() > 0) info.put("header", head); +if (!justHeader) { +if (keys != null) { +keys += " titleLabel type isHZToPPM subSpectrumCount"; +} else { +JSV.common.Parameters.putInfo(key, info, "titleLabel", this.getTitleLabel()); +JSV.common.Parameters.putInfo(key, info, "type", this.getDataType()); +JSV.common.Parameters.putInfo(key, info, "isHZToPPM", Boolean.$valueOf(this.isHZtoPPM())); +JSV.common.Parameters.putInfo(key, info, "subSpectrumCount", Integer.$valueOf(this.subSpectra == null ? 0 : this.subSpectra.size())); +}}if (keys != null) info.put("KEYS", keys); +return info; +}, "~S"); +c$.fixInfoValue = Clazz.defineMethod(c$, "fixInfoValue", +function(info){ +try { +return (Integer.$valueOf(info)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +try { +return (Double.$valueOf(info)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return info; +}, "~S"); +Clazz.defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkTypeMatch(pi)) return this.peakList.get(i); + +return null; +}, "JSV.common.PeakInfo"); +Clazz.defineMethod(c$, "getBasePeakInfo", +function(){ +return (this.peakList.size() == 0 ? new JSV.common.PeakInfo() : new JSV.common.PeakInfo(" baseModel=\"\" " + this.peakList.get(0))); +}); +Clazz.defineMethod(c$, "getAxisLabel", +function(isX){ +var label = (isX ? this.peakXLabel : this.peakYLabel); +if (label == null) label = (isX ? this.xLabel : this.yLabel); +if (label == null) label = (isX ? this.xUnits : this.yUnits); +return (label == null ? "" : label.equalsIgnoreCase("WAVENUMBERS") ? "1/cm" : label.equalsIgnoreCase("nanometers") ? "nm" : label); +}, "~B"); +Clazz.defineMethod(c$, "findXForPeakNearest", +function(x){ +return JSV.common.Coordinate.findXForPeakNearest(this.xyCoords, x, this.isInverted()); +}, "~N"); +Clazz.defineMethod(c$, "addSpecShift", +function(dx){ +if (dx != 0) { +this.specShift += dx; +JSV.common.Coordinate.shiftX(this.xyCoords, dx); +if (this.subSpectra != null) for (var i = this.subSpectra.size(); --i >= 0; ) { +var spec = this.subSpectra.get(i); +if (spec !== this && spec !== this.parent) spec.addSpecShift(dx); +} +}return this.specShift; +}, "~N"); +c$.allowSubSpec = Clazz.defineMethod(c$, "allowSubSpec", +function(s1, s2){ +return (s1.is1D() == s2.is1D() && s1.xUnits.equalsIgnoreCase(s2.xUnits) && s1.isHNMR() == s2.isHNMR()); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +c$.areXScalesCompatible = Clazz.defineMethod(c$, "areXScalesCompatible", +function(s1, s2, isSubspecCheck, isLinkCheck){ +var isNMR1 = s1.isNMR(); +if (isNMR1 != s2.isNMR() || s1.isContinuous() != s2.isContinuous() || !isLinkCheck && !JSV.common.Spectrum.areUnitsCompatible(s1.xUnits, s2.xUnits)) return false; +if (isSubspecCheck) { +if (s1.is1D() != s2.is1D()) return false; +} else if (isLinkCheck) { +if (!isNMR1) return true; +} else if (!s1.is1D() || !s2.is1D()) { +return false; +}return (!isNMR1 || s2.is1D() && s1.parent.nucleusX.equals(s2.parent.nucleusX)); +}, "JSV.common.Spectrum,JSV.common.Spectrum,~B,~B"); +c$.areUnitsCompatible = Clazz.defineMethod(c$, "areUnitsCompatible", +function(u1, u2){ +if (u1.equalsIgnoreCase(u2)) return true; +u1 = u1.toUpperCase(); +u2 = u2.toUpperCase(); +return (u1.equals("HZ") && u2.equals("PPM") || u1.equals("PPM") && u2.equals("HZ")); +}, "~S,~S"); +c$.areLinkableX = Clazz.defineMethod(c$, "areLinkableX", +function(s1, s2){ +return (s1.isNMR() && s2.isNMR() && s1.nucleusX.equals(s2.nucleusX)); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +c$.areLinkableY = Clazz.defineMethod(c$, "areLinkableY", +function(s1, s2){ +return (s1.isNMR() && s2.isNMR() && s1.nucleusX.equals(s2.nucleusY)); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +Clazz.defineMethod(c$, "getPeakWidth", +function(){ +var w = this.getLastX() - this.getFirstX(); +return (w / 100); +}); +Clazz.defineMethod(c$, "setSimulated", +function(filePath){ +this.isSimulation = true; +var s = this.sourceID; +if (s.length == 0) s = JU.PT.rep(filePath, "http://SIMULATION/", ""); +if (s.indexOf("MOL=") >= 0) s = ""; +this.title = "SIMULATED " + JU.PT.rep(s, "$", ""); +}, "~S"); +Clazz.defineMethod(c$, "setFillColor", +function(color){ +this.fillColor = color; +if (this.convertedSpectrum != null) this.convertedSpectrum.fillColor = color; +}, "javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.getTitleLabel() + (this.xyCoords == null ? "" : " xyCoords.length=" + this.xyCoords.length); +}); +/*if2*/;(function(){ +var c$ = Clazz.declareType(JSV.common.Spectrum, "IRMode", Enum); +c$.getMode = Clazz.defineMethod(c$, "getMode", +function(value){ +switch ((value == null ? 'I' : value.toUpperCase().charAt(0)).charCodeAt(0)) { +case 65: +return JSV.common.Spectrum.IRMode.TO_ABS; +case 84: +return (value.equalsIgnoreCase("TOGGLE") ? JSV.common.Spectrum.IRMode.TOGGLE : JSV.common.Spectrum.IRMode.TO_TRANS); +case 78: +return JSV.common.Spectrum.IRMode.NO_CONVERT; +default: +return JSV.common.Spectrum.IRMode.TOGGLE; +} +}, "~S"); +Clazz.defineEnumConstant(c$, "NO_CONVERT", 0, []); +Clazz.defineEnumConstant(c$, "TO_TRANS", 1, []); +Clazz.defineEnumConstant(c$, "TO_ABS", 2, []); +Clazz.defineEnumConstant(c$, "TOGGLE", 3, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/SubSpecChangeEvent.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/SubSpecChangeEvent.js new file mode 100755 index 000000000000..2c35a824cd1c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/SubSpecChangeEvent.js @@ -0,0 +1,25 @@ +Clazz.declarePackage("JSV.common"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isub = 0; +this.title = null; +Clazz.instantialize(this, arguments);}, JSV.common, "SubSpecChangeEvent", null); +Clazz.makeConstructor(c$, +function(isub, title){ +this.isub = isub; +this.title = title; +}, "~N,~S"); +Clazz.defineMethod(c$, "isValid", +function(){ +return (this.title != null); +}); +Clazz.defineMethod(c$, "getSubIndex", +function(){ +return this.isub; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.title; +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ViewData.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ViewData.js new file mode 100755 index 000000000000..0b7529a798ac --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ViewData.js @@ -0,0 +1,143 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(null, "JSV.common.ViewData", ["JSV.common.Coordinate", "$.ScaleData"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.scaleData = null; +this.thisScale = null; +this.nSpectra = 0; +this.iThisScale = 0; +this.spectra = null; +Clazz.instantialize(this, arguments);}, JSV.common, "ViewData", null); +Clazz.makeConstructor(c$, +function(spectra, yPt1, yPt2, startList, endList, isContinuous, is2D){ +this.nSpectra = (is2D ? 1 : spectra.size()); +this.scaleData = new Array(this.nSpectra); +for (var j = 0; j < this.nSpectra; j++) this.scaleData[j] = new JSV.common.ScaleData(startList[j], endList[j]); + +this.init(spectra, yPt1, yPt2, isContinuous); +}, "JU.Lst,~N,~N,~A,~A,~B,~B"); +Clazz.makeConstructor(c$, +function(spectra, yPt1, yPt2, isContinuous){ +this.nSpectra = spectra.size(); +var n = spectra.get(0).getXYCoords().length; +this.scaleData = new Array(1); +this.scaleData[0] = new JSV.common.ScaleData(0, n - 1); +this.init(spectra, yPt1, yPt2, isContinuous); +}, "JU.Lst,~N,~N,~B"); +Clazz.defineMethod(c$, "getScaleData", +function(){ +return this.scaleData; +}); +Clazz.defineMethod(c$, "getScale", +function(){ +return this.thisScale; +}); +Clazz.defineMethod(c$, "init", +function(spectra, yPt1, yPt2, isContinuous){ +if (spectra == null) spectra = this.spectra; + else this.spectra = spectra; +this.thisScale = this.scaleData[this.iThisScale = 0]; +for (var i = 0; i < this.scaleData.length; i++) { +this.scaleData[i].userYFactor = spectra.get(i).getUserYFactor(); +this.scaleData[i].spectrumYRef = spectra.get(i).getYRef(); +} +this.resetScaleFactors(); +var minX = JSV.common.Coordinate.getMinX(spectra, this); +var maxX = JSV.common.Coordinate.getMaxX(spectra, this); +var minY = JSV.common.Coordinate.getMinYUser(spectra, this); +var maxY = JSV.common.Coordinate.getMaxYUser(spectra, this); +if (yPt1 != yPt2) { +minY = yPt1; +maxY = yPt2; +if (minY > maxY) { +var t = minY; +minY = maxY; +maxY = t; +}}var isInverted = spectra.get(0).isInverted(); +for (var i = 0; i < this.scaleData.length; i++) { +this.scaleData[i].setMinMax(minX, maxX, minY, maxY); +this.scaleData[i].setScale(isContinuous, isInverted); +} +}, "JU.Lst,~N,~N,~B"); +Clazz.defineMethod(c$, "newSpectrum", +function(spectra){ +this.init(spectra, 0, 0, false); +}, "JU.Lst"); +Clazz.defineMethod(c$, "setXRangeForSubSpectrum", +function(xyCoords){ +this.setXRange(0, xyCoords, this.scaleData[0].minX, this.scaleData[0].maxX, 0, xyCoords.length - 1); +}, "~A"); +Clazz.defineMethod(c$, "setXRange", +function(i, xyCoords, initX, finalX, iStart, iEnd){ +var index = 0; +var ptCount = 0; +for (index = iStart; index <= iEnd; index++) { +var x = xyCoords[index].getXVal(); +if (x >= initX) { +this.scaleData[i % this.scaleData.length].startDataPointIndex = index; +break; +}} +for (; index <= iEnd; index++) { +var x = xyCoords[index].getXVal(); +ptCount++; +if (x >= finalX) { +break; +}} +this.scaleData[i % this.scaleData.length].endDataPointIndex = index; +return ptCount; +}, "~N,~A,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getStartingPointIndex", +function(i){ +return this.scaleData[i % this.scaleData.length].startDataPointIndex; +}, "~N"); +Clazz.defineMethod(c$, "getEndingPointIndex", +function(i){ +return this.scaleData[i % this.scaleData.length].endDataPointIndex; +}, "~N"); +Clazz.defineMethod(c$, "areYScalesSame", +function(i, j){ +i %= this.scaleData.length; +j %= this.scaleData.length; +return (this.scaleData[i].minYOnScale == this.scaleData[j].minYOnScale && this.scaleData[i].maxYOnScale == this.scaleData[j].maxYOnScale); +}, "~N,~N"); +Clazz.defineMethod(c$, "setScale", +function(i, xPixels, yPixels, isInverted){ +this.iThisScale = i % this.scaleData.length; +this.thisScale = this.scaleData[this.iThisScale]; +this.thisScale.setXYScale(xPixels, yPixels, isInverted); +}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "resetScaleFactors", +function(){ +for (var i = 0; i < this.scaleData.length; i++) this.scaleData[i].spectrumScaleFactor = 1; + +}); +Clazz.defineMethod(c$, "scaleSpectrum", +function(i, f){ +if (f <= 0 || i >= this.nSpectra) return; +if (i == -2) { +this.thisScale.scale2D(f); +return; +}if (i < 0) for (i = 0; i < this.scaleData.length; i++) this.scaleData[i].scaleBy(f); + + else this.scaleData[i % this.scaleData.length].scaleBy(f); +}, "~N,~N"); +Clazz.defineMethod(c$, "getNewScales", +function(iSelected, isXOnly, y1, y2){ +if (isXOnly) return this.scaleData; +iSelected %= this.scaleData.length; +var f1 = (y1 - this.thisScale.minYOnScale) / (this.thisScale.maxYOnScale - this.thisScale.minYOnScale); +var f2 = (y2 - this.thisScale.minYOnScale) / (this.thisScale.maxYOnScale - this.thisScale.minYOnScale); +var sd = new Array(this.scaleData.length); +for (var i = 0; i < this.scaleData.length; i++) sd[i] = (iSelected >= 0 && i != iSelected ? this.scaleData[i] : new JSV.common.ScaleData()); + +JSV.common.ScaleData.copyScaleFactors(this.scaleData, sd); +JSV.common.ScaleData.copyYScales(this.scaleData, sd); +for (var i = 0; i < this.scaleData.length; i++) { +if (iSelected >= 0 && i != iSelected) continue; +sd[i].isShiftZoomedY = true; +sd[i].minYOnScale = this.scaleData[i].minYOnScale * (1 - f1) + f1 * this.scaleData[i].maxYOnScale; +sd[i].maxYOnScale = this.scaleData[i].minYOnScale * (1 - f2) + f2 * this.scaleData[i].maxYOnScale; +} +return sd; +}, "~N,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/Visible.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Visible.js new file mode 100755 index 000000000000..d08b5cd66dc4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/Visible.js @@ -0,0 +1,50 @@ +Clazz.declarePackage("JSV.common"); +Clazz.load(["JSV.api.VisibleInterface"], "JSV.common.Visible", ["JU.CU"], function(){ +var c$ = Clazz.declareType(JSV.common, "Visible", null, JSV.api.VisibleInterface); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "getColour", +function(spec, useFitted){ +var xyCoords = spec.getXYCoords(); +var isAbsorbance = spec.isAbsorbance(); +var xyzd = Clazz.newDoubleArray (4, 0); +JSV.common.Visible.getXYZfitted(xyCoords, isAbsorbance, xyzd); +xyzd[0] /= xyzd[3]; +xyzd[1] /= xyzd[3]; +xyzd[2] /= xyzd[3]; +var rgb = Clazz.newDoubleArray(-1, [xyzd[0] * 3.2410 + xyzd[1] * -1.5374 + xyzd[2] * -0.4986, xyzd[0] * -0.9692 + xyzd[1] * 1.8760 + xyzd[2] * 0.0416, xyzd[0] * 0.0556 + xyzd[1] * -0.204 + xyzd[2] * 1.0570]); +var gamma = 2.4; +for (var i = 0; i < 3; i++) rgb[i] = (rgb[i] > 0.00304 ? 1.055 * Math.pow(rgb[i], 1 / gamma) - 0.055 : 12.92 * rgb[i]); + +var c = JU.CU.rgb(JSV.common.Visible.fix(rgb[0]), JSV.common.Visible.fix(rgb[1]), JSV.common.Visible.fix(rgb[2])); +return c; +}, "JSV.common.Spectrum,~B"); +c$.fix = Clazz.defineMethod(c$, "fix", +function(d){ +return (d <= 0 ? 0 : d >= 1 ? 255 : Math.round(255 * d)); +}, "~N"); +c$.getXYZfitted = Clazz.defineMethod(c$, "getXYZfitted", +function(xyCoords, isAbsorbance, xyzd){ +var cie; +var xb; +var yb; +var zb; +for (var i = xyCoords.length; --i >= 0; ) { +var x = xyCoords[i].getXVal(); +if (x < 400 || x > 700) continue; +cie = JSV.common.Visible.gauss(15.2438, 4.99542E-03, x - 412.281) + JSV.common.Visible.gauss(92.747, 1.12996E-05, x - 540.046) + JSV.common.Visible.gauss(13.8872, 5.16966E-04, x - 525.74) + JSV.common.Visible.gauss(16.7377, 5.55018E-03, x - 448.038) + JSV.common.Visible.gauss(23.9973, 1.28306E-03, x - 469.107) + JSV.common.Visible.gauss(5.68614, 1.03616E-02, x - 672.024); +xb = JSV.common.Visible.gauss(1.06561, 0.000500819, x - 598.623) + JSV.common.Visible.gauss(0.283831, 0.00292745, x - 435.734) + JSV.common.Visible.gauss(0.113771, 0.00192849, x - 549.271) + JSV.common.Visible.gauss(0.239103, 0.00255944, x - 460.547); +yb = JSV.common.Visible.gauss(0.239617, 0.00117296, x - 530.517) + JSV.common.Visible.gauss(0.910377, 0.000300984, x - 565.635) + JSV.common.Visible.gauss(0.0311013, 0.00152386, x - 463.833); +zb = JSV.common.Visible.gauss(0.988366, 0.00220336, x - 456.345) + JSV.common.Visible.gauss(0.381551, 0.000848554, x - 450.871) + JSV.common.Visible.gauss(0.355693, 0.000628546, x - 470.668) + JSV.common.Visible.gauss(0.81862, 0.00471059, x - 433.144); +var y = xyCoords[i].getYVal(); +if (isAbsorbance) y = Math.pow(10, -Math.max(y, 0)); +xyzd[0] += y * xb * cie; +xyzd[1] += y * yb * cie; +xyzd[2] += y * zb * cie; +xyzd[3] += yb * cie; +} +}, "~A,~B,~A"); +c$.gauss = Clazz.defineMethod(c$, "gauss", +function(a, b, x){ +return a * Math.exp(-b * x * x); +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/XYScaleConverter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/XYScaleConverter.js new file mode 100755 index 000000000000..fe71a1b44769 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/XYScaleConverter.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.common"); +Clazz.declareInterface(JSV.common, "XYScaleConverter"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/common/ZoomEvent.js b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ZoomEvent.js new file mode 100755 index 000000000000..96c3fea85b45 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/common/ZoomEvent.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JSV.common"); +(function(){ +var c$ = Clazz.declareType(JSV.common, "ZoomEvent", null); +/*LV!1824 unnec constructor*/})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/DialogManager.js b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/DialogManager.js new file mode 100755 index 000000000000..f9d23fd79208 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/DialogManager.js @@ -0,0 +1,97 @@ +Clazz.declarePackage("JSV.dialog"); +Clazz.load(null, "JSV.dialog.DialogManager", ["java.util.Hashtable", "JU.PT", "JSV.common.JSVFileManager", "$.JSViewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.htSelectors = null; +this.htDialogs = null; +this.options = null; +Clazz.instantialize(this, arguments);}, JSV.dialog, "DialogManager", null); +Clazz.defineMethod(c$, "set", +function(viewer){ +this.vwr = viewer; +this.htSelectors = new java.util.Hashtable(); +this.htDialogs = new java.util.Hashtable(); +return this; +}, "JSV.common.JSViewer"); +Clazz.defineMethod(c$, "registerDialog", +function(jsvDialog){ +var id = jsvDialog.optionKey; +if (!id.endsWith("!")) id += " " + ("" + Math.random()).substring(3); +if (this.htDialogs.containsKey(id)) this.htDialogs.get(id).dispose(); +this.htDialogs.put(id, jsvDialog); +return id; +}, "JSV.dialog.JSVDialog"); +Clazz.defineMethod(c$, "registerSelector", +function(selectorName, columnSelector){ +this.htSelectors.put(columnSelector, selectorName); +}, "~S,~O"); +Clazz.defineMethod(c$, "getSelectorName", +function(selector){ +return this.htSelectors.get(selector); +}, "~O"); +Clazz.defineMethod(c$, "showSourceErrors", +function(frame, currentSource){ +if (currentSource == null) { +this.showMessageDialog(frame, "Please Select a Spectrum.", "Select Spectrum", 2); +return; +}var errorLog = currentSource.getErrorLog(); +if (errorLog != null && errorLog.length > 0) this.showMessage(frame, errorLog, JSV.dialog.DialogManager.fixTitle(currentSource.getFilePath())); + else this.showMessageDialog(frame, "No errors found.", "Error Log", 1); +}, "~O,JSV.source.JDXSource"); +Clazz.defineMethod(c$, "showSource", +function(frame, spec){ +var filePath = spec.getFilePath(); +if (filePath == null) { +this.showMessageDialog(frame, "Please Select a Spectrum", "Select Spectrum", 2); +return; +}if (filePath === "[inline]") { +this.showMessage(null, spec.getInlineData(), "Inline data"); +return; +}try { +var s = JSV.common.JSVFileManager.getFileAsString(filePath); +if (JSV.common.JSViewer.isJS) s = JU.PT.rep(s, "<", "<"); +this.showMessage(null, s, JSV.dialog.DialogManager.fixTitle(filePath)); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.showMessageDialog(frame, "File Not Found", "SHOWSOURCE", 0); +} else { +throw ex; +} +} +}, "~O,JSV.common.Spectrum"); +Clazz.defineMethod(c$, "processClick", +function(eventId){ +var pt = eventId.lastIndexOf("/"); +var id = eventId.substring(pt + 1); +var dialog = eventId.substring(0, pt); +this.dialogCallback(dialog, id, null); +}, "~S"); +Clazz.defineMethod(c$, "processTableEvent", +function(eventId, index1, index2, adjusting){ +var pt = eventId.lastIndexOf("/"); +var dialog = eventId.substring(0, pt); +var selector = eventId.substring(pt + 1); +var msg = "&selector=" + selector + "&index=" + index1 + (index2 < 0 ? "&adjusting=" + adjusting : "&index2=" + index2); +this.dialogCallback(dialog, "tableSelect", msg); +}, "~S,~N,~N,~B"); +Clazz.defineMethod(c$, "processWindowClosing", +function(dialogId){ +this.dialogCallback(dialogId, "windowClosing", null); +this.htDialogs.remove(dialogId); +}, "~S"); +Clazz.defineMethod(c$, "dialogCallback", +function(dialogId, id, msg){ +var jsvDialog = this.htDialogs.get(dialogId); +if (jsvDialog != null) jsvDialog.callback(id, msg); +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "getDialogOptions", +function(){ +if (this.options == null) this.options = new java.util.Hashtable(); +return this.options; +}); +c$.fixTitle = Clazz.defineMethod(c$, "fixTitle", +function(title){ +return (title.length > 50 ? title.substring(0, 50) + "..." : title); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/DialogParams.js b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/DialogParams.js new file mode 100755 index 000000000000..21e8f2583d02 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/DialogParams.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JSV.dialog"); +(function(){ +var c$ = Clazz.declareType(JSV.dialog, "DialogParams", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/IntegrationDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/IntegrationDialog.js new file mode 100755 index 000000000000..f4d423b404f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/IntegrationDialog.js @@ -0,0 +1,80 @@ +Clazz.declarePackage("JSV.dialog"); +Clazz.load(["JSV.dialog.JSVDialog"], "JSV.dialog.IntegrationDialog", ["JU.DF", "JSV.common.Annotation"], function(){ +var c$ = Clazz.declareType(JSV.dialog, "IntegrationDialog", JSV.dialog.JSVDialog); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.dialog.IntegrationDialog, []); +this.type = JSV.common.Annotation.AType.Integration; +}); +Clazz.overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.IntegrationDialog.posXY; +}); +Clazz.defineMethod(c$, "addUniqueControls", +function(){ +this.txt1 = this.dialog.addTextField("txtBaselineOffset", "Baseline Offset", null, "%", "" + this.vwr.parameters.integralOffset, true); +this.txt2 = this.dialog.addTextField("txtScale", "Scale", null, "%", "" + this.vwr.parameters.integralRange, true); +this.dialog.addButton("btnApply", "Apply"); +this.addApplyBtn = false; +this.dialog.addButton("btnAuto", "Auto"); +this.dialog.addButton("btnDelete", "Delete"); +this.dialog.addButton("btnNormalize", "Normalize"); +}); +Clazz.overrideMethod(c$, "applyFromFields", +function(){ +this.apply( Clazz.newArray(-1, [this.dialog.getText(this.txt1), this.dialog.getText(this.txt2)])); +}); +Clazz.overrideMethod(c$, "callback", +function(id, msg){ +var val; +try { +if (id.equals("SHOWSELECTION")) { +for (var i = 0; i < this.xyData.size(); i++) if (JU.DF.formatDecimalDbl(this.xyData.get(i).getXVal(), 2).equals(msg)) { +this.iSelected = i; +this.jsvp.getPanelData().setXPointers(this.$spec, this.xyData.get(i).getXVal(), this.$spec, this.xyData.get(i).getXVal2()); +this.jsvp.doRepaint(true); +break; +} +return true; +}if (!id.equals("windowClosing") && !id.equals("FOCUS")) { +if (id.equals("btnAuto") || this.xyData == null || this.xyData.size() == 0) { +this.vwr.runScript("integrate auto"); +this.eventApply(); +return true; +}this.setFocus(true); +}if (id.equals("btnDelete")) { +this.deleteIntegral(); +} else if (id.equals("btnNormalize")) { +if (!this.checkSelectedIntegral()) return true; +var ret = this.manager.getDialogInput(this.dialog, "Enter a normalization factor", "Normalize", 3, null, null, "" + this.lastNorm); +val = Double.parseDouble(ret); +if (val > 0) (this.xyData).setSelectedIntegral(this.xyData.get(this.iSelected), this.lastNorm = val); +this.eventApply(); +} else { +return this.callbackAD(id, msg); +}} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +} else { +throw ex; +} +} +return true; +}, "~S,~S"); +Clazz.defineMethod(c$, "checkSelectedIntegral", +function(){ +if (this.iSelected < 0) { +this.showMessage("Select a line on the table first, then click this button.", "Integration", 1); +return false; +}return true; +}); +Clazz.defineMethod(c$, "deleteIntegral", +function(){ +if (!this.checkSelectedIntegral()) return; +this.xyData.removeItemAt(this.iSelected); +this.iSelected = -1; +this.iRowColSelected = -1; +this.applyFromFields(); +}); +c$.posXY = Clazz.newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/JSVDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/JSVDialog.js new file mode 100755 index 000000000000..485b8a964f64 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/JSVDialog.js @@ -0,0 +1,664 @@ +Clazz.declarePackage("JSV.dialog"); +Clazz.load(["JSV.api.AnnotationData", "JSV.common.Annotation"], "JSV.dialog.JSVDialog", ["JU.DF", "$.PT", "JSV.common.IntegralData", "$.PeakData", "JSV.dialog.DialogManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.optionKey = null; +this.options = null; +this.type = null; +this.title = null; +this.vwr = null; +this.$spec = null; +this.manager = null; +this.dialog = null; +this.jsvp = null; +this.txt1 = null; +this.txt2 = null; +this.txt3 = null; +this.combo1 = null; +this.xyData = null; +this.myParams = null; +this.precision = 1; +this.loc = null; +this.showHideButton = null; +this.addClearBtn = false; +this.addCombo1 = false; +this.addApplyBtn = false; +this.isNumeric = false; +this.defaultVisible = false; +this.subType = null; +this.graphSetKey = null; +this.tableData = null; +this.addUnits = false; +this.unitOptions = null; +this.formatOptions = null; +this.unitPtr = null; +this.isON = true; +this.lastNorm = 1; +this.iRowColSelected = -1; +this.iSelected = -1; +this.skipCreate = false; +this.iRowSelected = -1; +this.iColSelected = -1; +Clazz.instantialize(this, arguments);}, JSV.dialog, "JSVDialog", JSV.common.Annotation, JSV.api.AnnotationData); +Clazz.overrideMethod(c$, "isDialog", +function(){ +return true; +}); +Clazz.defineMethod(c$, "setParams", +function(title, viewer, spec){ +title = JSV.dialog.DialogManager.fixTitle(title); +this.title = title; +this.vwr = viewer; +this.$spec = spec; +this.manager = viewer.getDialogManager(); +this.jsvp = viewer.selectedPanel; +this.myParams = (viewer.getPlatformInterface("Parameters")).setName("dialogParams"); +this.subType = (spec == null ? "!" : spec.getTypeLabel()); +this.optionKey = this.type + "_" + this.subType; +this.options = this.manager.getDialogOptions(); +if (spec != null) { +var specOptions = spec.getDefaultAnnotationInfo(this.type); +this.options.put(this.optionKey, specOptions); +this.unitOptions = specOptions[0]; +this.formatOptions = specOptions[1]; +this.unitPtr = this.options.get(this.optionKey + "_unitPtr"); +if (this.unitPtr == null) this.unitPtr = specOptions[2]; +}switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.isNumeric = true; +this.addClearBtn = true; +this.defaultVisible = true; +this.addApplyBtn = true; +break; +case JSV.common.Annotation.AType.Measurements: +this.isNumeric = true; +this.addClearBtn = true; +this.addCombo1 = true; +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.PeakList: +this.isNumeric = true; +this.addApplyBtn = true; +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.Views: +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.NONE: +break; +} +this.initDialog(); +return this; +}, "~S,JSV.common.JSViewer,JSV.common.Spectrum"); +Clazz.defineMethod(c$, "initDialog", +function(){ +this.dialog = this.manager.getDialog(this); +this.restoreDialogPosition(this.jsvp, this.getPosXY()); +this.dialog.setTitle(this.title); +this.layoutDialog(); +}); +Clazz.defineMethod(c$, "layoutDialog", +function(){ +this.dialog.startLayout(); +this.addUniqueControls(); +if (this.isNumeric) { +this.getUnitOptions(); +if (this.addCombo1) this.combo1 = this.dialog.addSelectOption("cmbUnits", "Units", this.unitOptions, this.unitPtr.intValue(), this.addUnits); +if (this.addApplyBtn) this.dialog.addButton("btnApply", "Apply"); +this.showHideButton = this.dialog.addButton("btnShow", "Show"); +if (this.addClearBtn) this.dialog.addButton("btnClear", "Clear"); +}this.dialog.endLayout(); +this.checkEnables(); +this.dialog.setVisible(this.defaultVisible); +}); +Clazz.defineMethod(c$, "callbackAD", +function(id, msg){ +if (id.equals("FOCUS")) { +this.eventFocus(); +} else if (id.equals("tableSelect")) { +this.tableSelect(msg); +} else if (id.equals("btnClear")) { +this.clear(); +} else if (id.equals("btnApply")) { +this.eventApply(); +} else if (id.equals("btnShow")) { +var label = this.dialog.getText(this.showHideButton); +this.eventShowHide(label.equals("Show")); +} else if (id.equals("cmbUnits")) { +this.setPrecision(this.dialog.getSelectedIndex(this.combo1)); +} else if (id.startsWith("txt")) { +this.eventApply(); +} else if (id.equals("windowClosing")) { +this.done(); +return true; +}if (this.jsvp != null) this.jsvp.doRepaint(true); +return true; +}, "~S,~S"); +Clazz.defineMethod(c$, "addUniqueControls", +function(dialogHelper){ +}, "JSV.dialog.DialogManager"); +Clazz.overrideMethod(c$, "getAType", +function(){ +return this.type; +}); +Clazz.overrideMethod(c$, "getGraphSetKey", +function(){ +return this.graphSetKey; +}); +Clazz.overrideMethod(c$, "setGraphSetKey", +function(key){ +this.graphSetKey = key; +}, "~S"); +Clazz.overrideMethod(c$, "getSpectrum", +function(){ +return this.$spec; +}); +Clazz.overrideMethod(c$, "getState", +function(){ +return this.isON; +}); +Clazz.overrideMethod(c$, "setState", +function(b){ +this.isON = b; +}, "~B"); +Clazz.defineMethod(c$, "checkEnables", +function(){ +var isShow = this.checkVisible(); +this.dialog.setText(this.showHideButton, isShow ? "Hide" : "Show"); +}); +Clazz.defineMethod(c$, "createTable", +function(data, header, widths){ +this.tableData = data; +this.dialog.createTable(data, header, widths); +}, "~A,~A,~A"); +Clazz.defineMethod(c$, "setTableSelectionEnabled", +function(enabled){ +this.dialog.setCellSelectionEnabled(enabled); +}, "~B"); +Clazz.defineMethod(c$, "getParameters", +function(){ +return this.myParams; +}); +Clazz.defineMethod(c$, "showMessage", +function(msg, title, msgType){ +this.manager.showMessageDialog(this.dialog, msg, title, msgType); +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "setThreshold", +function(y){ +this.dialog.setText(this.txt1, this.getThreasholdText(y)); +}, "~N"); +Clazz.defineMethod(c$, "setComboSelected", +function(i){ +this.dialog.setSelectedIndex(this.combo1, i); +}, "~N"); +Clazz.defineMethod(c$, "applyFromFields", +function(){ +this.apply(null); +}); +Clazz.defineMethod(c$, "reEnable", +function(){ +this.paramsReEnable(); +return this; +}); +Clazz.defineMethod(c$, "dispose", +function(){ +this.dialog.dispose(); +}); +Clazz.defineMethod(c$, "setVisible", +function(visible){ +this.dialog.setVisible(visible); +}, "~B"); +Clazz.overrideMethod(c$, "isVisible", +function(){ +return this.dialog.isVisible(); +}); +Clazz.defineMethod(c$, "selectTableRow", +function(i){ +this.dialog.selectTableRow(i); +}, "~N"); +Clazz.defineMethod(c$, "repaint", +function(){ +this.dialog.repaint(); +}); +Clazz.defineMethod(c$, "setFields", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.myParams = this.xyData.getParameters(); +this.setThreshold(this.myParams.peakListThreshold); +this.setComboSelected(this.myParams.peakListInterpolation.equals("none") ? 1 : 0); +this.createData(); +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz.defineMethod(c$, "setFocus", +function(tf){ +this.dialog.setFocus(tf); +}, "~B"); +Clazz.defineMethod(c$, "update", +function(clicked, xRange, yOffset){ +this.selectTableRow(-1); +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.loadData(); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.Measurements: +this.loadData(); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +if (yOffset > 20) this.applyFromFields(); +if (this.xyData == null || clicked == null || yOffset > 20) return; +var ipt = 0; +var dx0 = 1e100; +var xval = clicked.getXVal(); +var md = this.xyData; +var min = Math.abs(xRange / 20); +for (var i = md.size(); --i >= 0; ) { +var dx = Math.abs(xval - md.get(i).getXVal()); +if (dx < dx0) { +dx0 = dx; +ipt = i; +}} +if (dx0 < min) { +this.selectTableRow(md.size() - 2 - ipt); +this.repaint(); +}break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}, "JSV.common.Coordinate,~N,~N"); +Clazz.defineMethod(c$, "getPeakData", +function(){ +var md = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.$spec); +md.setPeakList(this.myParams, this.precision, this.jsvp.getPanelData().getView()); +this.xyData = md; +return null; +}); +Clazz.overrideMethod(c$, "getData", +function(){ +if (this.xyData == null) this.createData(); +return this.xyData; +}); +Clazz.defineMethod(c$, "setData", +function(data){ +this.myParams = data.getParameters(); +this.xyData = data; +}, "JSV.api.AnnotationData"); +Clazz.overrideMethod(c$, "setSpecShift", +function(dx){ +if (this.xyData != null) this.xyData.setSpecShift(dx); +}, "~N"); +Clazz.defineMethod(c$, "setType", +function(type){ +this.type = type; +switch (type) { +case JSV.common.Annotation.AType.Measurements: +this.addUnits = true; +break; +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.PeakList: +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +case JSV.common.Annotation.AType.NONE: +break; +} +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "apply", +function(objects){ +try { +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +var offset = Double.parseDouble(objects[0]); +var scale = Double.parseDouble(objects[1]); +this.myParams.integralOffset = offset; +this.myParams.integralRange = scale; +this.myParams.integralDrawAll = false; +(this.getData()).update(this.myParams); +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +return; +case JSV.common.Annotation.AType.PeakList: +if (!this.skipCreate) { +this.setThreshold(NaN); +this.createData(); +}this.skipCreate = false; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +this.vwr.parameters.viewOffset = Double.parseDouble(objects[0]); +break; +} +this.loadData(); +this.checkEnables(); +this.jsvp.doRepaint(true); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A"); +Clazz.defineMethod(c$, "done", +function(){ +if (this.jsvp != null && this.$spec != null) this.jsvp.getPanelData().removeDialog(this); +if (this.xyData != null) this.xyData.setState(this.isON); +this.saveDialogPosition(this.getPosXY()); +this.dispose(); +this.jsvp.doRepaint(true); +}); +Clazz.defineMethod(c$, "restoreDialogPosition", +function(panel, posXY){ +if (panel != null) { +if (posXY[0] == -2147483648) { +posXY[0] = 0; +posXY[1] = -20; +}var pt = this.manager.getLocationOnScreen(panel); +var height = panel.getHeight(); +this.loc = Clazz.newIntArray(-1, [Math.max(0, pt[0] + posXY[0]), Math.max(0, pt[1] + height + posXY[1])]); +this.dialog.setIntLocation(this.loc); +}}, "JSV.api.JSVPanel,~A"); +Clazz.defineMethod(c$, "saveDialogPosition", +function(posXY){ +try { +var pt = this.manager.getLocationOnScreen(this.dialog); +posXY[0] += pt[0] - this.loc[0]; +posXY[1] += pt[1] - this.loc[1]; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A"); +Clazz.defineMethod(c$, "getThreasholdText", +function(y){ +if (Double.isNaN(y)) { +var pd = this.jsvp.getPanelData(); +var f = (pd.getSpectrum().isInverted() ? 0.1 : 0.9); +var c = pd.getClickedCoordinate(); +y = (c == null ? (pd.getView().minYOnScale * f + pd.getView().maxYOnScale) * (1 - f) : c.getYVal()); +}var sy = JU.DF.formatDecimalDbl(y, y < 1000 ? 2 : -2); +return " " + sy; +}, "~N"); +Clazz.defineMethod(c$, "checkVisible", +function(){ +return this.vwr.pd().getShowAnnotation(this.type); +}); +Clazz.defineMethod(c$, "getUnitOptions", +function(){ +var key = this.optionKey + "_format"; +var format = this.options.get(key); +if (format == null) this.options.put(key, format = Integer.$valueOf(this.formatOptions[this.unitPtr == null ? 0 : this.unitPtr.intValue()])); +}); +Clazz.defineMethod(c$, "eventFocus", +function(){ +if (this.$spec != null) this.jsvp.getPanelData().jumpToSpectrum(this.$spec); +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +if (this.iRowSelected >= 0) { +this.iRowSelected++; +this.tableCellSelect(-1, -1); +}break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.createData(); +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz.defineMethod(c$, "eventApply", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.createData(); +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +this.applyFromFields(); +}); +Clazz.defineMethod(c$, "eventShowHide", +function(isShow){ +this.isON = isShow; +if (isShow) this.eventApply(); +this.jsvp.doRepaint(true); +this.checkEnables(); +}, "~B"); +Clazz.defineMethod(c$, "clear", +function(){ +this.setState(true); +if (this.xyData != null) { +this.xyData.clear(); +this.applyFromFields(); +}}); +Clazz.defineMethod(c$, "paramsReEnable", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +this.setVisible(true); +this.isON = true; +this.applyFromFields(); +}); +Clazz.defineMethod(c$, "tableCellSelect", +function(iRow, iCol){ +System.out.println(iRow + " jSVDial " + iCol); +if (iRow < 0) { +iRow = Clazz.doubleToInt(this.iRowColSelected / 1000); +iCol = this.iRowColSelected % 1000; +this.iRowColSelected = -1; +}var value = this.tableData[iRow][1]; +var icolrow = iRow * 1000 + iCol; +if (icolrow == this.iRowColSelected) return; +this.iRowColSelected = icolrow; +System.out.println("Setting rc = " + this.iRowColSelected + " " + this.$spec); +this.selectTableRow(this.iRowSelected); +try { +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.callback("SHOWSELECTION", value.toString()); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +try { +switch (iCol) { +case 6: +case 5: +case 4: +var x1 = Double.parseDouble(value); +var x2 = Double.parseDouble(this.tableData[iRow + 3 - iCol][1]); +this.jsvp.getPanelData().setXPointers(this.$spec, x1, this.$spec, x2); +break; +default: +this.jsvp.getPanelData().findX(this.$spec, Double.parseDouble(value)); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.jsvp.getPanelData().findX(this.$spec, 1E100); +} else { +throw e; +} +} +this.jsvp.doRepaint(false); +break; +case JSV.common.Annotation.AType.OverlayLegend: +this.jsvp.getPanelData().setSpectrum(iRow, false); +break; +case JSV.common.Annotation.AType.Views: +break; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~N,~N"); +Clazz.defineMethod(c$, "loadData", +function(){ +var data; +var header; +var widths; +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +if (this.xyData == null) this.createData(); +this.iSelected = -1; +data = (this.xyData).getMeasurementListArray(null); +header = this.xyData.getDataHeader(); +widths = Clazz.newIntArray(-1, [40, 65, 65, 50]); +this.createTable(data, header, widths); +break; +case JSV.common.Annotation.AType.Measurements: +if (this.xyData == null) return; +data = this.xyData.getMeasurementListArray(this.dialog.getSelectedItem(this.combo1).toString()); +header = this.xyData.getDataHeader(); +widths = Clazz.newIntArray(-1, [40, 65, 65, 50]); +this.createTable(data, header, widths); +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +if (this.xyData == null) this.createData(); +data = (this.xyData).getMeasurementListArray(null); +header = (this.xyData).getDataHeader(); +widths = Clazz.newIntArray(-1, [40, 65, 50, 50, 50, 50, 50]); +this.createTable(data, header, widths); +this.setTableSelectionEnabled(true); +break; +case JSV.common.Annotation.AType.OverlayLegend: +header = Clazz.newArray(-1, ["No.", "Plot Color", "Title"]); +data = this.vwr.selectedPanel.getPanelData().getOverlayLegendData(); +widths = Clazz.newIntArray(-1, [30, 60, 250]); +this.createTable(data, header, widths); +this.setTableSelectionEnabled(true); +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz.defineMethod(c$, "createData", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.xyData = new JSV.common.IntegralData(this.$spec, this.myParams); +this.iSelected = -1; +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +try { +var thresh = Double.parseDouble(this.dialog.getText(this.txt1)); +this.myParams.peakListThreshold = thresh; +this.myParams.peakListInterpolation = this.dialog.getSelectedItem(this.combo1).toString(); +this.myParams.precision = this.precision; +var md = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.$spec); +md.setPeakList(this.myParams, this.precision, this.jsvp.getPanelData().getView()); +this.xyData = md; +this.loadData(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz.defineMethod(c$, "setPrecision", +function(i){ +this.precision = this.formatOptions[i]; +}, "~N"); +Clazz.defineMethod(c$, "tableSelect", +function(url){ +var isAdjusting = "true".equals(this.getField(url, "adjusting")); +if (isAdjusting) { +this.iColSelected = this.iRowSelected = -1; +System.out.println("adjusting" + url); +return; +}var index = JU.PT.parseInt(this.getField(url, "index")); +switch ("ROW COL ROWCOL".indexOf(this.getField(url, "selector"))) { +case 8: +this.iColSelected = JU.PT.parseInt(this.getField(url, "index2")); +case 0: +this.iRowSelected = index; +System.out.println("r set to " + index); +break; +case 4: +this.iColSelected = index; +System.out.println("c set to " + index); +break; +} +if (this.iColSelected >= 0 && this.iRowSelected >= 0) { +this.tableCellSelect(this.iRowSelected, this.iColSelected); +}}, "~S"); +Clazz.defineMethod(c$, "getField", +function(url, name){ +url += "&"; +var key = "&" + name + "="; +var pt = url.indexOf(key); +return (pt < 0 ? null : url.substring(pt + key.length, url.indexOf("&", pt + 1))); +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/MeasurementsDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/MeasurementsDialog.js new file mode 100755 index 000000000000..c38d23dd9b14 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/MeasurementsDialog.js @@ -0,0 +1,22 @@ +Clazz.declarePackage("JSV.dialog"); +Clazz.load(["JSV.dialog.JSVDialog"], "JSV.dialog.MeasurementsDialog", ["JSV.common.Annotation"], function(){ +var c$ = Clazz.declareType(JSV.dialog, "MeasurementsDialog", JSV.dialog.JSVDialog); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.dialog.MeasurementsDialog, []); +this.type = JSV.common.Annotation.AType.Measurements; +}); +Clazz.defineMethod(c$, "addUniqueControls", +function(){ +}); +Clazz.overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.MeasurementsDialog.posXY; +}); +Clazz.overrideMethod(c$, "callback", +function(id, msg){ +return this.callbackAD(id, msg); +}, "~S,~S"); +c$.posXY = Clazz.newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/OverlayLegendDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/OverlayLegendDialog.js new file mode 100755 index 000000000000..ddfdd5c06d4b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/OverlayLegendDialog.js @@ -0,0 +1,22 @@ +Clazz.declarePackage("JSV.dialog"); +Clazz.load(["JSV.dialog.JSVDialog"], "JSV.dialog.OverlayLegendDialog", ["JSV.common.Annotation"], function(){ +var c$ = Clazz.declareType(JSV.dialog, "OverlayLegendDialog", JSV.dialog.JSVDialog); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.dialog.OverlayLegendDialog, []); +this.type = JSV.common.Annotation.AType.OverlayLegend; +}); +Clazz.overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.OverlayLegendDialog.posXY; +}); +Clazz.defineMethod(c$, "addUniqueControls", +function(){ +}); +Clazz.overrideMethod(c$, "callback", +function(id, msg){ +return false; +}, "~S,~S"); +c$.posXY = Clazz.newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/PeakListDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/PeakListDialog.js new file mode 100755 index 000000000000..2926fd5ebbde --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/PeakListDialog.js @@ -0,0 +1,27 @@ +Clazz.declarePackage("JSV.dialog"); +Clazz.load(["JSV.dialog.JSVDialog"], "JSV.dialog.PeakListDialog", ["JSV.common.Annotation"], function(){ +var c$ = Clazz.declareType(JSV.dialog, "PeakListDialog", JSV.dialog.JSVDialog); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.dialog.PeakListDialog, []); +this.type = JSV.common.Annotation.AType.PeakList; +}); +Clazz.overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.PeakListDialog.posXY; +}); +Clazz.defineMethod(c$, "addUniqueControls", +function(){ +this.txt1 = this.dialog.addTextField("txtThreshold", "Threshold", null, "", "", true); +this.dialog.setPreferredSize(780, 350); +this.setThreshold(NaN); +this.combo1 = this.dialog.addSelectOption("cmbInterpolation", "Interpolation", Clazz.newArray(-1, ["parabolic", "none"]), 0, true); +}); +Clazz.overrideMethod(c$, "callback", +function(id, msg){ +if (id.equals("cmbInterpolation") || id.equals("txtThreshold")) id = "btnApply"; +return this.callbackAD(id, msg); +}, "~S,~S"); +c$.posXY = Clazz.newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/ViewsDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/ViewsDialog.js new file mode 100755 index 000000000000..2e64f22e9c5b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/dialog/ViewsDialog.js @@ -0,0 +1,168 @@ +Clazz.declarePackage("JSV.dialog"); +Clazz.load(["JSV.dialog.JSVDialog"], "JSV.dialog.ViewsDialog", ["JU.Lst", "$.PT", "$.SB", "JSV.common.Annotation"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.treeNodes = null; +this.checkBoxes = null; +this.closeSelectedButton = null; +this.combineSelectedButton = null; +this.viewSelectedButton = null; +this.checking = false; +Clazz.instantialize(this, arguments);}, JSV.dialog, "ViewsDialog", JSV.dialog.JSVDialog); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.dialog.ViewsDialog, []); +this.type = JSV.common.Annotation.AType.Views; +}); +Clazz.overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.ViewsDialog.posXY; +}); +Clazz.defineMethod(c$, "addUniqueControls", +function(){ +this.checkBoxes = new JU.Lst(); +this.treeNodes = new JU.Lst(); +this.dialog.addButton("btnSelectAll", "Select All"); +this.dialog.addButton("btnSelectNone", "Select None"); +this.txt2 = this.dialog.addTextField("txtOffset", "Offset", "" + this.vwr.parameters.viewOffset, "%", null, true); +this.viewSelectedButton = this.dialog.addButton("btnViewSelected", "View Selected"); +this.combineSelectedButton = this.dialog.addButton("btnCombineSelected", "Combine Selected"); +this.closeSelectedButton = this.dialog.addButton("btnCloseSelected", "Close Selected"); +this.dialog.addButton("btnDone", "Done"); +this.dialog.setPreferredSize(800, 350); +this.txt1 = this.dialog.addCheckBox(null, null, 0, false); +this.addCheckBoxes(this.vwr.spectraTree.getRootNode(), 0, true); +this.addCheckBoxes(this.vwr.spectraTree.getRootNode(), 0, false); +}); +Clazz.defineMethod(c$, "addCheckBoxes", +function(rootNode, level, isViews){ +var enume = rootNode.children(); +while (enume.hasMoreElements()) { +var treeNode = enume.nextElement(); +var node = treeNode.getPanelNode(); +if (node.isView != isViews) continue; +var title = node.toString(); +if (title.indexOf("\n") >= 0) title = title.substring(0, title.indexOf('\n')); +var name = "chkBox" + this.treeNodes.size(); +var cb = this.dialog.addCheckBox(name, title, level, node.isSelected); +treeNode.setIndex(this.treeNodes.size()); +this.treeNodes.addLast(treeNode); +this.checkBoxes.addLast(cb); +this.addCheckBoxes(treeNode, level + 1, isViews); +} +}, "JSV.api.JSVTreeNode,~N,~B"); +Clazz.overrideMethod(c$, "checkEnables", +function(){ +var n = 0; +for (var i = 0; i < this.checkBoxes.size(); i++) { +if (this.dialog.isSelected(this.checkBoxes.get(i)) && this.treeNodes.get(i).getPanelNode().jsvp != null) { +n++; +}} +System.out.println("viewsdialog n=" + n); +this.dialog.setEnabled(this.closeSelectedButton, n > 0); +this.dialog.setEnabled(this.combineSelectedButton, n > 1); +this.dialog.setEnabled(this.viewSelectedButton, n == 1); +}); +Clazz.defineMethod(c$, "check", +function(name){ +var i = JU.PT.parseInt(name.substring(name.indexOf("_") + 1)); +var node = this.treeNodes.get(i); +var cb = this.checkBoxes.get(i); +var isSelected = this.dialog.isSelected(cb); +if (node.getPanelNode().jsvp == null) { +if (!this.checking && isSelected && this.dialog.getText(cb).startsWith("Overlay")) { +this.checking = true; +this.selectAll(false); +this.dialog.setSelected(cb, true); +node.getPanelNode().isSelected = true; +this.checking = false; +}var enume = node.children(); +while (enume.hasMoreElements()) { +var treeNode = enume.nextElement(); +this.dialog.setSelected(this.checkBoxes.get(treeNode.getIndex()), isSelected); +treeNode.getPanelNode().isSelected = isSelected; +node.getPanelNode().isSelected = isSelected; +} +} else { +node.getPanelNode().isSelected = isSelected; +}if (isSelected) for (i = this.treeNodes.size(); --i >= 0; ) if (this.treeNodes.get(i).getPanelNode().isView != node.getPanelNode().isView) { +this.dialog.setSelected(this.checkBoxes.get(this.treeNodes.get(i).getIndex()), false); +this.treeNodes.get(i).getPanelNode().isSelected = false; +} +this.checkEnables(); +}, "~S"); +Clazz.defineMethod(c$, "selectAll", +function(mode){ +for (var i = this.checkBoxes.size(); --i >= 0; ) { +this.dialog.setSelected(this.checkBoxes.get(i), mode); +this.treeNodes.get(i).getPanelNode().isSelected = mode; +} +this.checkEnables(); +}, "~B"); +Clazz.defineMethod(c$, "combineSelected", +function(){ +}); +Clazz.defineMethod(c$, "viewSelected", +function(){ +var sb = new JU.SB(); +var thisNode = null; +var n = 0; +for (var i = 0; i < this.checkBoxes.size(); i++) { +var cb = this.checkBoxes.get(i); +var node = this.treeNodes.get(i).getPanelNode(); +if (this.dialog.isSelected(cb) && node.jsvp != null) { +if (node.isView) { +thisNode = node; +n = 2; +break; +}n++; +var label = this.dialog.getText(cb); +sb.append(" ").append(label.substring(0, label.indexOf(":"))); +}} +var script = null; +if (n > 1) { +this.eventApply(); +script = "STACKOFFSETY " + this.vwr.parameters.viewOffset; +}if (thisNode == null) { +this.vwr.execView(sb.toString().trim(), false); +this.layoutDialog(); +} else { +this.vwr.setNode(thisNode); +}if (script != null) this.vwr.runScript(script); +}); +Clazz.defineMethod(c$, "closeSelected", +function(){ +this.vwr.runScript("close !selected"); +this.layoutDialog(); +}); +Clazz.overrideMethod(c$, "callback", +function(id, msg){ +if (id.equals("btnSelectAll")) { +this.selectAll(true); +} else if (id.equals("btnSelectNone")) { +this.selectAll(false); +} else if (id.equals("btnViewSelected")) { +this.viewSelected(); +} else if (id.equals("btnCombineSelected")) { +this.viewSelected(); +} else if (id.equals("btnCloseSelected")) { +this.closeSelected(); +} else if (id.equals("btnDone")) { +this.viewSelected(); +this.dispose(); +this.done(); +} else if (id.equals("txtOffset")) { +this.eventApply(); +this.viewSelected(); +} else if (id.startsWith("chk")) { +this.checkEnables(); +} else { +return this.callbackAD(id, msg); +}return true; +}, "~S,~S"); +Clazz.overrideMethod(c$, "applyFromFields", +function(){ +this.apply( Clazz.newArray(-1, [this.dialog.getText(this.txt2)])); +}); +c$.posXY = Clazz.newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/exception/JSVException.js b/config/plugins/visualizations/jmol/static/j2s/JSV/exception/JSVException.js new file mode 100755 index 000000000000..64af99859132 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/exception/JSVException.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JSV.exception"); +Clazz.load(["java.lang.Exception"], "JSV.exception.JSVException", null, function(){ +var c$ = Clazz.declareType(JSV.exception, "JSVException", Exception); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/AMLExporter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/AMLExporter.js new file mode 100755 index 000000000000..534e0a8a1ab5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/AMLExporter.js @@ -0,0 +1,24 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(["JSV.export.XMLExporter"], "JSV.export.AMLExporter", null, function(){ +var c$ = Clazz.declareType(JSV["export"], "AMLExporter", JSV["export"].XMLExporter); +Clazz.overrideMethod(c$, "exportTheSpectrum", +function(viewer, mode, out, spec, startIndex, endIndex, pd, asBase64){ +if (!this.setup(viewer, spec, out, startIndex, endIndex)) return null; +if (this.solvName == null || this.solvName.equals("")) this.solvName = "unknown"; +if (this.datatype.contains("MASS")) { +this.spectypeInitials = "MS"; +} else if (this.datatype.contains("INFRARED")) { +this.spectypeInitials = "IR"; +} else if (this.datatype.contains("UV") || (this.datatype.contains("VIS"))) { +this.spectypeInitials = "UV"; +} else if (this.datatype.contains("NMR")) { +this.spectypeInitials = "NMR"; +}this.pathlength = (this.pathlength.equals("") && this.spectypeInitials.equals("UV") ? "1.0" : "-1"); +if (this.vendor == null || this.vendor.equals("")) this.vendor = "not available from JCAMP-DX file"; +if (this.model == null || this.model.equals("")) this.model = "not available from JCAMP-DX file"; +if (this.resolution == null || this.resolution.equals("")) this.resolution = "not available in JCAMP-DX file"; +this.setContext(); +return this.writeFormType("animl"); +}, "JSV.common.JSViewer,JSV.common.ExportType,JU.OC,JSV.common.Spectrum,~N,~N,JSV.common.PanelData,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/CMLExporter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/CMLExporter.js new file mode 100755 index 000000000000..a3a8df8b3c74 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/CMLExporter.js @@ -0,0 +1,23 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(["JSV.export.XMLExporter"], "JSV.export.CMLExporter", null, function(){ +var c$ = Clazz.declareType(JSV["export"], "CMLExporter", JSV["export"].XMLExporter); +Clazz.overrideMethod(c$, "exportTheSpectrum", +function(viewer, mode, out, spec, startIndex, endIndex, pd, asBase64){ +if (!this.setup(viewer, spec, out, startIndex, endIndex)) return null; +if (this.model == null || this.model.equals("")) this.model = "unknown"; +if (this.datatype.contains("MASS")) this.spectypeInitials = "massSpectrum"; + else if (this.datatype.contains("INFRARED")) { +this.spectypeInitials = "infrared"; +} else if (this.datatype.contains("UV") || (this.datatype.contains("VIS"))) { +this.spectypeInitials = "UV/VIS"; +} else if (this.datatype.contains("NMR")) { +this.spectypeInitials = "NMR"; +}this.ident = this.spectypeInitials + "_" + this.title.substring(0, Math.min(10, this.title.length)); +if (this.xUnits.toLowerCase().equals("m/z")) this.xUnits = "moverz"; + else if (this.xUnits.toLowerCase().equals("1/cm")) this.xUnits = "cm-1"; + else if (this.xUnits.toLowerCase().equals("nanometers")) this.xUnits = "nm"; +this.setContext(); +return this.writeFormType("cml"); +}, "JSV.common.JSViewer,JSV.common.ExportType,JU.OC,JSV.common.Spectrum,~N,~N,JSV.common.PanelData,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/ExportInterface.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/ExportInterface.js new file mode 100755 index 000000000000..18eec949c30b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/ExportInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JSV.export"); +Clazz.declareInterface(JSV["export"], "ExportInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/Exporter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/Exporter.js new file mode 100755 index 000000000000..3f9fb4c7eeb1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/Exporter.js @@ -0,0 +1,242 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(["JSV.api.ExportInterface"], "JSV.export.Exporter", ["JU.OC", "$.PT", "JSV.common.ExportType", "$.JSVFileManager", "$.JSViewer"], function(){ +var c$ = Clazz.declareType(JSV["export"], "Exporter", null, JSV.api.ExportInterface); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "write", +function(viewer, tokens, forInkscape){ +if (tokens == null) return this.printPDF(viewer, null, false); +var type = null; +var fileName = null; +var eType; +var out; +var jsvp = viewer.selectedPanel; +try { +switch (tokens.size()) { +default: +return "WRITE what?"; +case 1: +fileName = JU.PT.trimQuotes(tokens.get(0)); +if (fileName.indexOf(".") >= 0) type = "XY"; +if (jsvp == null) return null; +eType = JSV.common.ExportType.getType(fileName); +switch (eType) { +case JSV.common.ExportType.PDF: +case JSV.common.ExportType.PNG: +case JSV.common.ExportType.JPG: +return this.exportTheSpectrum(viewer, eType, null, null, -1, -1, null, false); +default: +viewer.fileHelper.setFileChooser(eType); +var items = this.getExportableItems(viewer, eType.equals(JSV.common.ExportType.SOURCE)); +var index = (items == null ? -1 : viewer.getOptionFromDialog(items, "Export", "Choose a spectrum to export")); +if (index == -2147483648) return null; +var file = viewer.fileHelper.getFile(this.getSuggestedFileName(viewer, eType), jsvp, true); +if (file == null) return null; +out = viewer.getOutputChannel(file.getFullPath(), false); +var msg = this.exportSpectrumOrImage(viewer, eType, index, out); +var isOK = msg.startsWith("OK"); +if (isOK) viewer.si.siUpdateRecentMenus(file.getFullPath()); +out.closeChannel(); +return msg; +} +case 2: +type = tokens.get(0).toUpperCase(); +fileName = JU.PT.trimQuotes(tokens.get(1)); +break; +} +var ext = fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase(); +if (ext.equals("BASE64")) { +fileName = ";base64,"; +} else if (ext.equals("JDX")) { +if (type == null) type = "XY"; +} else if (JSV.common.ExportType.isExportMode(ext)) { +type = ext; +} else if (JSV.common.ExportType.isExportMode(type)) { +fileName += "." + type; +}eType = JSV.common.ExportType.getType(type); +if (forInkscape && eType === JSV.common.ExportType.SVG) eType = JSV.common.ExportType.SVGI; +out = viewer.getOutputChannel(fileName, false); +return this.exportSpectrumOrImage(viewer, eType, -1, out); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e); +return null; +} else { +throw e; +} +} +}, "JSV.common.JSViewer,JU.Lst,~B"); +Clazz.defineMethod(c$, "exportSpectrumOrImage", +function(viewer, eType, index, out){ +var spec; +var pd = viewer.pd(); +if (index < 0 && (index = pd.getCurrentSpectrumIndex()) < 0) return "Error exporting spectrum: No spectrum selected"; +spec = pd.getSpectrumAt(index); +var startIndex = pd.getStartingPointIndex(index); +var endIndex = pd.getEndingPointIndex(index); +var msg = null; +try { +var asBase64 = out.isBase64(); +msg = this.exportTheSpectrum(viewer, eType, out, spec, startIndex, endIndex, pd, asBase64); +if (asBase64) return msg; +if (msg.startsWith("OK")) return "OK - Exported " + eType.name() + ": " + out.getFileName() + msg.substring(2); +} catch (ioe) { +if (Clazz.exceptionOf(ioe, Exception)){ +msg = ioe.toString(); +} else { +throw ioe; +} +} +return "Error exporting " + out.getFileName() + ": " + msg; +}, "JSV.common.JSViewer,JSV.common.ExportType,~N,JU.OC"); +Clazz.defineMethod(c$, "exportTheSpectrum", +function(viewer, mode, out, spec, startIndex, endIndex, pd, asBase64){ +var jsvp = viewer.selectedPanel; +var type = mode.name(); +switch (mode) { +case JSV.common.ExportType.AML: +case JSV.common.ExportType.CML: +case JSV.common.ExportType.SVG: +case JSV.common.ExportType.SVGI: +break; +case JSV.common.ExportType.DIF: +case JSV.common.ExportType.DIFDUP: +case JSV.common.ExportType.FIX: +case JSV.common.ExportType.PAC: +case JSV.common.ExportType.SQZ: +case JSV.common.ExportType.XY: +type = "JDX"; +break; +case JSV.common.ExportType.JPG: +case JSV.common.ExportType.PNG: +if (jsvp == null) return null; +viewer.fileHelper.setFileChooser(mode); +var name = this.getSuggestedFileName(viewer, mode); +var file = viewer.fileHelper.getFile(name, jsvp, true); +if (file == null) return null; +return jsvp.saveImage(type.toLowerCase(), file, out); +case JSV.common.ExportType.PDF: +return this.printPDF(viewer, "PDF", asBase64); +case JSV.common.ExportType.SOURCE: +if (jsvp == null) return null; +var data = jsvp.getPanelData().getSpectrum().getInlineData(); +if (data != null) { +out.append(data); +out.closeChannel(); +return "OK " + out.getByteCount() + " bytes"; +}var path = jsvp.getPanelData().getSpectrum().getFilePath(); +return JSV["export"].Exporter.fileCopy(path, out); +case JSV.common.ExportType.UNK: +return null; +} +return (JSV.common.JSViewer.getInterface("JSV.export." + type.toUpperCase() + "Exporter")).exportTheSpectrum(viewer, mode, out, spec, startIndex, endIndex, null, false); +}, "JSV.common.JSViewer,JSV.common.ExportType,JU.OC,JSV.common.Spectrum,~N,~N,JSV.common.PanelData,~B"); +Clazz.defineMethod(c$, "printPDF", +function(viewer, pdfFileName, isBase64){ +var isJob = (pdfFileName == null || pdfFileName.length == 0); +if (!isBase64 && !viewer.si.isSigned()) return "Error: Applet must be signed for the PRINT command."; +var pd = viewer.pd(); +if (pd == null) return null; +var useDialog = false; +var pl; +{ +useDialog = false; +}pl = viewer.getDialogPrint(isJob); +if (pl == null) return null; +if (!useDialog) pl.asPDF = true; +if (isJob && pl.asPDF) { +isJob = false; +pdfFileName = "PDF"; +}var jsvp = viewer.selectedPanel; +if (!isBase64 && !isJob) { +var helper = viewer.fileHelper; +helper.setFileChooser(JSV.common.ExportType.PDF); +if (pdfFileName.equals("?") || pdfFileName.equalsIgnoreCase("PDF")) pdfFileName = this.getSuggestedFileName(viewer, JSV.common.ExportType.PDF); +var file = helper.getFile(pdfFileName, jsvp, true); +if (file == null) return null; +if (!JSV.common.JSViewer.isJS) viewer.setProperty("directoryLastExportedFile", helper.setDirLastExported(file.getParentAsFile().getFullPath())); +pdfFileName = file.getFullPath(); +}var s = null; +try { +var out = (isJob ? null : isBase64 ? new JU.OC().setParams(null, ";base64,", false, null) : viewer.getOutputChannel(pdfFileName, true)); +var printJobTitle = pd.getPrintJobTitle(true); +if (pl.showTitle) { +printJobTitle = jsvp.getInput("Title?", "Title for Printing", printJobTitle); +if (printJobTitle == null) return null; +}jsvp.printPanel(pl, out, printJobTitle); +s = out.toString(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +jsvp.showMessage(e.toString(), "File Error"); +} else { +throw e; +} +} +return s; +}, "JSV.common.JSViewer,~S,~B"); +Clazz.defineMethod(c$, "getExportableItems", +function(viewer, isSameType){ +var pd = viewer.pd(); +var isView = viewer.currentSource.isView; +var nSpectra = pd.getNumberOfSpectraInCurrentSet(); +if (nSpectra == 1 || !isView && isSameType || pd.getCurrentSpectrumIndex() >= 0) return null; +var items = new Array(nSpectra); +for (var i = 0; i < nSpectra; i++) items[i] = pd.getSpectrumAt(i).getTitle(); + +return items; +}, "JSV.common.JSViewer,~B"); +Clazz.defineMethod(c$, "getSuggestedFileName", +function(viewer, imode){ +var pd = viewer.pd(); +var sourcePath = pd.getSpectrum().getFilePath(); +var newName = JSV.common.JSVFileManager.getTagName(sourcePath); +if (newName.startsWith("$")) newName = newName.substring(1); +var pt = newName.lastIndexOf("."); +var name = (pt < 0 ? newName : newName.substring(0, pt)); +var ext = ".jdx"; +var isPrint = false; +switch (imode) { +case JSV.common.ExportType.XY: +case JSV.common.ExportType.FIX: +case JSV.common.ExportType.PAC: +case JSV.common.ExportType.SQZ: +case JSV.common.ExportType.DIF: +case JSV.common.ExportType.DIFDUP: +case JSV.common.ExportType.SOURCE: +if (!(name.endsWith("_" + imode))) name += "_" + imode; +ext = ".jdx"; +break; +case JSV.common.ExportType.AML: +ext = ".xml"; +break; +case JSV.common.ExportType.JPG: +case JSV.common.ExportType.PNG: +case JSV.common.ExportType.PDF: +isPrint = true; +default: +ext = "." + imode.toString().toLowerCase(); +} +if (viewer.currentSource.isView) name = pd.getPrintJobTitle(isPrint); +name += ext; +return name; +}, "JSV.common.JSViewer,JSV.common.ExportType"); +c$.fileCopy = Clazz.defineMethod(c$, "fileCopy", +function(name, out){ +try { +var br = JSV.common.JSVFileManager.getBufferedReaderFromName(name, null); +var line = null; +while ((line = br.readLine()) != null) { +out.append(line); +out.append(JSV["export"].Exporter.newLine); +} +out.closeChannel(); +return "OK " + out.getByteCount() + " bytes"; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return e.toString(); +} else { +throw e; +} +} +}, "~S,JU.OC"); +c$.newLine = System.getProperty("line.separator"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/FormContext.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/FormContext.js new file mode 100755 index 000000000000..79d4d314f1d4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/FormContext.js @@ -0,0 +1,319 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(["java.util.Hashtable", "JU.Lst"], "JSV.export.FormContext", ["JU.DF", "$.PT", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.tokens = null; +this.context = null; +this.formTokens = null; +this.commandLevel = 0; +this.cmds = null; +this.strError = null; +if (!Clazz.isClassDefined("JSV.export.FormContext.FormToken")) { +JSV.export.FormContext.$FormContext$FormToken$ (); +} +Clazz.instantialize(this, arguments);}, JSV["export"], "FormContext", null); +Clazz.prepareFields (c$, function(){ +this.context = new java.util.Hashtable(); +this.cmds = new JU.Lst(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "put", +function(key, value){ +if (value == null) value = ""; +this.context.put(key, value); +}, "~S,~O"); +Clazz.defineMethod(c$, "setTemplate", +function(template){ +var errMsg = this.getFormTokens(template); +if (errMsg != null) return errMsg; +return null; +}, "~S"); +Clazz.defineMethod(c$, "getFormTokens", +function(template){ +this.formTokens = new JU.Lst(); +if (template.indexOf("\r\n") >= 0) template = JU.PT.replaceAllCharacters(template, "\r\n", "\n"); +template = template.$replace('\r', '\n'); +var lines = template.$plit("\n"); +var token = ""; +for (var i = 0; i < lines.length && this.strError == null; i++) { +var line = lines[i]; +var m = line.length; +var ch; +while (--m >= 0 && ((ch = line.charAt(m)) == ' ' || ch == '\t')) { +} +line = line.substring(0, m + 1); +if (line.length == 0) continue; +var firstChar = -1; +var nChar = line.length; +while (++firstChar < nChar && Character.isWhitespace(line.charAt(firstChar))) { +} +if (line.indexOf("#") == firstChar) { +if (token.length > 0) { +Clazz.innerTypeInstance(JSV["export"].FormContext.FormToken, this, null, token, 0); +token = ""; +}if (this.strError != null) break; +Clazz.innerTypeInstance(JSV["export"].FormContext.FormToken, this, null, line, firstChar); +continue; +}token += line + "\n"; +} +if (token.length > 0 && this.strError == null) { +Clazz.innerTypeInstance(JSV["export"].FormContext.FormToken, this, null, token, 0); +}return this.strError; +}, "~S"); +Clazz.defineMethod(c$, "merge", +function(out){ +var ptr; +for (var i = 0; i < this.formTokens.size() && this.strError == null; i++) { +var vt = this.formTokens.get(i); +switch (vt.cmdType) { +case 0: +var data = this.fillData(vt.data); +out.append(data); +continue; +case 1: +if (this.evaluate(vt.data, true)) { +vt.endPtr = -vt.endPtr; +} else { +i = vt.endPtr - 1; +}continue; +case 2: +case 3: +if ((ptr = this.formTokens.get(vt.cmdPtr).endPtr) < 0) { +this.formTokens.get(vt.cmdPtr).endPtr = -ptr; +while ((vt = this.formTokens.get(vt.endPtr)).cmdType != 4) { +} +i = vt.ptr; +continue; +}if (vt.cmdType == 3) { +if (this.evaluate(vt.data, true)) { +vt.endPtr = -vt.endPtr; +} else { +i = vt.endPtr - 1; +}}continue; +case 5: +this.foreach(vt); +case 4: +if ((vt = this.formTokens.get(vt.cmdPtr)).cmdType != 5) continue; +if (vt.vc == null) continue; +if (++vt.pointCount == vt.vc.size()) { +i = vt.endPtr; +continue; +}var varData = vt.vc.get(vt.pointCount); +if (Clazz.instanceOf(varData,"JSV.common.Coordinate")) { +var c = varData; +this.context.put("pointCount", new Integer(vt.pointCount)); +this.context.put(vt.$var + ".xVal", new Double(c.getXVal())); +this.context.put(vt.$var + ".yVal", new Double(c.getYVal())); +this.context.put(vt.$var + ".getXString()", this.getXString(c)); +this.context.put(vt.$var + ".getYString()", this.getYString(c)); +} else if (Clazz.instanceOf(varData,"java.util.Map")) { +for (var entry, $entry = (varData).entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.context.put(vt.$var + "." + entry.getKey(), entry.getValue()); + +}i = vt.cmdPtr; +continue; +} +} +return (this.strError != null ? this.strError : out != null ? out.toString() : null); +}, "JU.OC"); +Clazz.defineMethod(c$, "getXString", +function(c){ +return JU.DF.formatDecimalTrimmed0(c.getXVal(), 8); +}, "JSV.common.Coordinate"); +Clazz.defineMethod(c$, "getYString", +function(c){ +return JU.DF.formatDecimalTrimmed0(c.getYVal(), 8); +}, "JSV.common.Coordinate"); +Clazz.defineMethod(c$, "foreach", +function(vt){ +var data = vt.data; +data = data.$replace('(', ' '); +data = data.$replace(')', ' '); +var tokens = JU.PT.getTokens(data); +if (tokens.length != 4) { +return; +}vt.$var = tokens[1].substring(1); +var vc = this.context.get(tokens[3].substring(1)); +if (Clazz.instanceOf(vc,"JU.Lst")) vt.vc = vc; +vt.cmdPtr = vt.ptr; +vt.pointCount = -1; +}, "JSV.export.FormContext.FormToken"); +c$.findOp = Clazz.defineMethod(c$, "findOp", +function(op){ +for (var i = JSV["export"].FormContext.ops.length; --i >= 0; ) if (JSV["export"].FormContext.ops[i].equals(op)) return i; + +return -1; +}, "~S"); +Clazz.defineMethod(c$, "evaluate", +function(data, isIf){ +var pt = data.indexOf("("); +if (pt < 0) { +this.strError = "missing ( in " + data; +return false; +}data = data.substring(pt + 1); +pt = data.lastIndexOf(")"); +if (pt < 0) { +this.strError = "missing ) in " + data; +return false; +}data = data.substring(0, pt); +data = JU.PT.rep(data, "=", " = "); +data = JU.PT.rep(data, "!", " ! "); +data = JU.PT.rep(data, "<", " < "); +data = JU.PT.rep(data, ">", " > "); +data = JU.PT.rep(data, "= =", "=="); +data = JU.PT.rep(data, "< =", "<="); +data = JU.PT.rep(data, "> =", ">="); +data = JU.PT.rep(data, "! =", "!="); +var tokens = JU.PT.getTokens(data); +var key = tokens[0].substring(1); +var isNot = false; +var x = false; +var value = null; +var compare = ""; +try { +switch (tokens.length) { +case 1: +value = this.getValue(key); +return (!value.equals("") && !value.equals("false")); +case 2: +if (key.equals("!")) { +key = JU.PT.trim(tokens[1], "$ "); +value = this.getValue(key); +return (value.equals("false") || value.equals("")); +}break; +case 3: +key = JU.PT.trim(tokens[0], "$ "); +value = this.getValue(key); +compare = JU.PT.trim(tokens[2], " \""); +switch (JSV["export"].FormContext.findOp(tokens[1])) { +case 2: +case 0: +return (value.equals(compare)); +case 1: +return (!value.equals(compare)); +default: +JU.Logger.warn("???? " + key + " " + compare + " " + value); +} +break; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.warn(e.toString() + " in VelocityContext.merge"); +} else { +throw e; +} +} +return isNot ? !x : x; +}, "~S,~B"); +Clazz.defineMethod(c$, "getValue", +function(key){ +return (this.context.containsKey(key) ? this.context.get(key).toString() : ""); +}, "~S"); +Clazz.defineMethod(c$, "fillData", +function(data){ +var i = 0; +var ccData = data.length; +while (i < ccData) { +while (i < ccData && data.charAt(i++) != '$') { +} +if (i == ccData) break; +var j = i; +var ch; +while (++j < ccData && (Character.isLetterOrDigit(ch = data.charAt(j)) || ch == '.' || ch == '_')) { +} +if (j < ccData && data.charAt(j) == '(') j += 2; +var key = data.substring(i, j); +if (this.context.containsKey(key)) { +var value = this.context.get(key); +var strValue; +if (Clazz.instanceOf(value,"JSV.common.Coordinate")) { +strValue = value.toString(); +} else { +strValue = value.toString(); +}data = data.substring(0, i - 1) + strValue + data.substring(j); +ccData = data.length; +i += strValue.length; +}} +return data; +}, "~S"); +c$.$FormContext$FormToken$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.hasVariable = false; +this.cmdType = 0; +this.cmdPtr = -1; +this.endPtr = -1; +this.ptr = 0; +this.$var = null; +this.vc = null; +this.pointCount = 0; +this.data = null; +Clazz.instantialize(this, arguments);}, JSV["export"].FormContext, "FormToken", null); +Clazz.makeConstructor(c$, +function(token, firstChar){ +this.hasVariable = token.indexOf("$") >= 0; +this.data = token; +if (token.indexOf("#") != firstChar) { +this.b$["JSV.export.FormContext"].formTokens.addLast(this); +return; +}this.ptr = this.b$["JSV.export.FormContext"].formTokens.size(); +var checkIf = false; +if (token.indexOf("#end") == firstChar) { +this.cmdType = 4; +this.endPtr = this.ptr; +this.b$["JSV.export.FormContext"].commandLevel--; +if (this.b$["JSV.export.FormContext"].commandLevel < 0) { +this.b$["JSV.export.FormContext"].strError = "misplaced #end"; +return; +}this.cmdPtr = this.b$["JSV.export.FormContext"].cmds.removeItemAt(0).intValue(); +this.b$["JSV.export.FormContext"].formTokens.get(this.cmdPtr).endPtr = this.ptr; +} else { +this.b$["JSV.export.FormContext"].commandLevel++; +if (token.indexOf("#if") == firstChar) { +this.cmdType = 1; +this.b$["JSV.export.FormContext"].cmds.add(0, new Integer(this.ptr)); +} else if (token.indexOf("#foreach") == firstChar) { +this.cmdType = 5; +this.b$["JSV.export.FormContext"].cmds.add(0, new Integer(this.ptr)); +this.cmdPtr = this.ptr; +if (token.indexOf("#end") > 0) { +var pt = token.indexOf(")") + 1; +this.data = token.substring(0, pt); +this.b$["JSV.export.FormContext"].formTokens.addLast(this); +Clazz.innerTypeInstance(JSV["export"].FormContext.FormToken, this, null, token.substring(pt, token.indexOf("#end")), 0); +Clazz.innerTypeInstance(JSV["export"].FormContext.FormToken, this, null, "#end", 0); +return; +}} else if (token.indexOf("#elseif") == firstChar) { +if (this.b$["JSV.export.FormContext"].cmds.size() == 0) { +this.b$["JSV.export.FormContext"].strError = "misplaced #elseif"; +return; +}this.cmdType = 3; +this.cmdPtr = this.b$["JSV.export.FormContext"].cmds.removeItemAt(0).intValue(); +var vt = this.b$["JSV.export.FormContext"].formTokens.get(this.cmdPtr); +checkIf = true; +vt.endPtr = this.ptr; +this.b$["JSV.export.FormContext"].cmds.add(0, new Integer(this.ptr)); +} else if (token.indexOf("#else") == firstChar) { +if (this.b$["JSV.export.FormContext"].cmds.size() == 0) { +this.b$["JSV.export.FormContext"].strError = "misplaced #else"; +return; +}this.cmdType = 2; +checkIf = true; +this.cmdPtr = this.b$["JSV.export.FormContext"].cmds.removeItemAt(0).intValue(); +this.b$["JSV.export.FormContext"].formTokens.get(this.cmdPtr).endPtr = this.ptr; +this.b$["JSV.export.FormContext"].cmds.add(0, new Integer(this.ptr)); +} else { +JU.Logger.warn("??? " + token); +}if (checkIf) { +var vt = this.b$["JSV.export.FormContext"].formTokens.get(this.cmdPtr); +if (vt.cmdType != 1 && vt.cmdType != 3) { +this.b$["JSV.export.FormContext"].strError = "misplaced " + token.trim(); +return; +}}}this.b$["JSV.export.FormContext"].formTokens.addLast(this); +}, "~S,~N"); +/*eoif4*/})(); +}; +c$.ops = Clazz.newArray(-1, ["==", "!=", "="]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/FormExporter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/FormExporter.js new file mode 100755 index 000000000000..ea3bc94200f6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/FormExporter.js @@ -0,0 +1,39 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(["JSV.api.JSVExporter", "JSV.export.FormContext"], "JSV.export.FormExporter", ["JSV.common.JSVFileManager", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.context = null; +this.errMsg = null; +this.currentTime = null; +this.out = null; +this.vwr = null; +Clazz.instantialize(this, arguments);}, JSV["export"], "FormExporter", null, JSV.api.JSVExporter); +Clazz.prepareFields (c$, function(){ +this.context = new JSV["export"].FormContext(); +}); +Clazz.defineMethod(c$, "initForm", +function(viewer, out){ +this.vwr = viewer; +this.out = out; +this.currentTime = viewer.apiPlatform.getDateFormat(null); +}, "JSV.common.JSViewer,JU.OC"); +Clazz.defineMethod(c$, "writeForm", +function(templateFile){ +var error = new Array(1); +var template = JSV.common.JSVFileManager.getResourceString(this, "resources/" + templateFile, error); +if (template == null) { +JU.Logger.error(error[0]); +return error[0]; +}this.errMsg = this.context.setTemplate(template); +if (this.errMsg != null) { +JU.Logger.error(this.errMsg); +return this.errMsg; +}this.errMsg = this.context.merge(this.out); +if (this.out == null) return this.errMsg; +if (this.errMsg != null) { +JU.Logger.error(this.errMsg); +throw new java.io.IOException(this.errMsg); +}this.out.closeChannel(); +return "OK " + this.out.getByteCount() + " bytes"; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/JDXCompressor.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/JDXCompressor.js new file mode 100755 index 000000000000..7d1ced0bc142 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/JDXCompressor.js @@ -0,0 +1,153 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(null, "JSV.export.JDXCompressor", ["JU.DF", "$.SB", "JSV.export.Exporter", "JU.Logger"], function(){ +var c$ = Clazz.declareType(JSV["export"], "JDXCompressor", null); +c$.compressDIF = Clazz.defineMethod(c$, "compressDIF", +function(xyCoords, startIndex, endIndex, step, xFactor, yFactor, isDIFDUP){ +var yStr = new JU.SB(); +var buffer = new JU.SB(); +for (var i = startIndex; i != endIndex; ) { +buffer.append(JSV["export"].JDXCompressor.fixIntNoExponent(xyCoords[i].getXVal() / xFactor)); +yStr.setLength(0); +if (JU.Logger.debugging) JU.Logger.info("" + i + '\t' + xyCoords[i].getXVal() + '\t' + xyCoords[i].getYVal()); +var y1 = Math.round(xyCoords[i].getYVal() / yFactor); +yStr.append(JSV["export"].JDXCompressor.makeSQZ(y1)); +var lastDif = ""; +var nDif = 0; +i += step; +if (i == endIndex) { +i -= step; +} else { +while (i + step != endIndex && yStr.length() < 50) { +var y2 = Math.round(xyCoords[i].getYVal() / yFactor); +var temp = JSV["export"].JDXCompressor.makeDIF(y2 - y1); +if (isDIFDUP && temp.equals(lastDif)) { +nDif++; +} else { +lastDif = temp; +if (nDif > 0) { +yStr.append(JSV["export"].JDXCompressor.makeDUP(nDif + 1)); +nDif = 0; +}yStr.append(temp); +}if (JU.Logger.debugging) JU.Logger.info("" + i + '\t' + xyCoords[i].getXVal() + '\t' + xyCoords[i].getYVal() + '\t' + y2 + '\t' + nDif + '\t' + yStr); +y1 = y2; +i += step; +} +if (nDif > 0) yStr.append(JSV["export"].JDXCompressor.makeDUP(nDif + 1)); +yStr.append(JSV["export"].JDXCompressor.makeSQZ(xyCoords[i], yFactor)); +if (JU.Logger.debugging) JU.Logger.info("" + i + '\t' + xyCoords[i].getXVal() + '\t' + xyCoords[i].getYVal() + '\t' + nDif + '\t' + yStr); +}buffer.append(yStr.toString()).append(JSV.export.Exporter.newLine); +i += step; +} +buffer.append(JSV["export"].JDXCompressor.fixIntNoExponent(xyCoords[endIndex].getXVal() / xFactor)).append(JSV["export"].JDXCompressor.makeSQZ(xyCoords[endIndex], yFactor)); +buffer.append(" $$checkpoint").append(JSV.export.Exporter.newLine); +return buffer.toString(); +}, "~A,~N,~N,~N,~N,~N,~B"); +c$.compressFIX = Clazz.defineMethod(c$, "compressFIX", +function(xyCoords, startIndex, endIndex, step, xFactor, yFactor){ +endIndex += step; +var buffer = new JU.SB(); +for (var i = startIndex; i != endIndex; ) { +JSV["export"].JDXCompressor.leftJustify(buffer, " ", JSV["export"].JDXCompressor.fixIntNoExponent(xyCoords[i].getXVal() / xFactor)); +for (var j = 0; j < 6 && i != endIndex; j++) { +JSV["export"].JDXCompressor.rightJustify(buffer, " ", "" + Math.round(xyCoords[i].getYVal() / yFactor)); +buffer.append(" "); +i += step; +} +buffer.append(JSV.export.Exporter.newLine); +} +return buffer.toString(); +}, "~A,~N,~N,~N,~N,~N"); +c$.leftJustify = Clazz.defineMethod(c$, "leftJustify", +function(s, s1, s2){ +s.append(s2); +var n = s1.length - s2.length; +if (n > 0) s.append(s1.substring(0, n)); +}, "JU.SB,~S,~S"); +c$.rightJustify = Clazz.defineMethod(c$, "rightJustify", +function(s, s1, s2){ +var n = s1.length - s2.length; +if (n > 0) s.append(s1.substring(0, n)); +s.append(s2); +}, "JU.SB,~S,~S"); +c$.compressSQZ = Clazz.defineMethod(c$, "compressSQZ", +function(xyCoords, startIndex, endIndex, step, xFactor, yFactor){ +var yStr = new JU.SB(); +endIndex += step; +var buffer = new JU.SB(); +for (var i = startIndex; i == startIndex || i != endIndex; ) { +buffer.append(JSV["export"].JDXCompressor.fixIntNoExponent(xyCoords[i].getXVal() / xFactor)); +yStr.setLength(0); +yStr.append(JSV["export"].JDXCompressor.makeSQZ(xyCoords[i], yFactor)); +i += step; +while ((yStr.length() < 60) && i != endIndex) { +yStr.append(JSV["export"].JDXCompressor.makeSQZ(xyCoords[i], yFactor)); +i += step; +} +buffer.append(yStr.toString()).append(JSV.export.Exporter.newLine); +} +return buffer.toString(); +}, "~A,~N,~N,~N,~N,~N"); +c$.compressPAC = Clazz.defineMethod(c$, "compressPAC", +function(xyCoords, startIndex, endIndex, step, xFactor, yFactor){ +var buffer = new JU.SB(); +endIndex += step; +for (var i = startIndex; i != endIndex; ) { +buffer.append(JSV["export"].JDXCompressor.fixIntNoExponent(xyCoords[i].getXVal() / xFactor)).append(JSV["export"].JDXCompressor.fixPacY(xyCoords[i].getYVal() / yFactor)); +i += step; +for (var j = 0; j < 4 && i != endIndex; j++) { +buffer.append(JSV["export"].JDXCompressor.fixPacY(xyCoords[i].getYVal() / yFactor)); +i += step; +} +buffer.append(JSV.export.Exporter.newLine); +} +return buffer.toString(); +}, "~A,~N,~N,~N,~N,~N"); +c$.fixPacY = Clazz.defineMethod(c$, "fixPacY", +function(y){ +return (y < 0 ? "" : " ") + JSV["export"].JDXCompressor.fixIntNoExponent(y); +}, "~N"); +c$.makeSQZ = Clazz.defineMethod(c$, "makeSQZ", +function(pt, yFactor){ +return JSV["export"].JDXCompressor.makeSQZ(Math.round(pt.getYVal() / yFactor)); +}, "JSV.common.Coordinate,~N"); +c$.makeSQZ = Clazz.defineMethod(c$, "makeSQZ", +function(y){ +return JSV["export"].JDXCompressor.compress(y, "@ABCDEFGHI", "abcdefghi"); +}, "~N"); +c$.makeDIF = Clazz.defineMethod(c$, "makeDIF", +function(dy){ +return JSV["export"].JDXCompressor.compress(dy, "%JKLMNOPQR", "jklmnopqr"); +}, "~N"); +c$.makeDUP = Clazz.defineMethod(c$, "makeDUP", +function(y){ +return JSV["export"].JDXCompressor.compress(y, "0STUVWXYZs", ""); +}, "~N"); +c$.compress = Clazz.defineMethod(c$, "compress", +function(y, strPos, strNeg){ +var negative = false; +var yStr = String.valueOf(y); +var ch = yStr.charAt(0); +if (ch == '-') { +negative = true; +yStr = yStr.substring(1); +ch = yStr.charAt(0); +}var yStrArray = yStr.toCharArray(); +yStrArray[0] = (negative ? strNeg.charAt(ch.charCodeAt(0) - 49) : strPos.charAt(ch.charCodeAt(0) - 48)); +return String.instantialize(yStrArray); +}, "~N,~S,~S"); +c$.getXYList = Clazz.defineMethod(c$, "getXYList", +function(xyCoords, startIndex, endIndex, step){ +endIndex += step; +var buffer = new JU.SB(); +for (var i = startIndex; i != endIndex; i += step) { +var point = xyCoords[i]; +buffer.append(JSV["export"].JDXCompressor.fixIntNoExponent(point.getXVal())).append(", ").append(JSV["export"].JDXCompressor.fixIntNoExponent(point.getYVal())).append(JSV.export.Exporter.newLine); +} +return buffer.toString(); +}, "~A,~N,~N,~N"); +c$.fixIntNoExponent = Clazz.defineMethod(c$, "fixIntNoExponent", +function(x){ +return (x == Math.floor(x) ? String.valueOf(Clazz.doubleToInt(x)) : JU.DF.formatDecimalTrimmed(x, 10)); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/JDXExporter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/JDXExporter.js new file mode 100755 index 000000000000..27e089faeb53 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/JDXExporter.js @@ -0,0 +1,153 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(["JSV.api.JSVExporter"], "JSV.export.JDXExporter", ["JU.DF", "$.PT", "JSV.common.Coordinate", "$.ExportType", "JSV.export.JDXCompressor", "JSV.source.JDXReader"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.out = null; +this.type = null; +this.spectrum = null; +this.vwr = null; +Clazz.instantialize(this, arguments);}, JSV["export"], "JDXExporter", null, JSV.api.JSVExporter); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "exportTheSpectrum", +function(viewer, type, out, spectrum, startIndex, endIndex, pd, asBase64){ +this.out = out; +this.type = type; +this.spectrum = spectrum; +this.vwr = viewer; +this.toStringAux(startIndex, endIndex); +out.closeChannel(); +return "OK " + out.getByteCount() + " bytes"; +}, "JSV.common.JSViewer,JSV.common.ExportType,JU.OC,JSV.common.Spectrum,~N,~N,JSV.common.PanelData,~B"); +Clazz.defineMethod(c$, "toStringAux", +function(startIndex, endIndex){ +var newXYCoords = this.spectrum.getXYCoords(); +var tabDataSet = ""; +var tmpDataClass = "XYDATA"; +if (this.spectrum.isHZtoPPM()) { +var xyCoords = newXYCoords; +newXYCoords = new Array(xyCoords.length); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = xyCoords[i].copy(); + +JSV.common.Coordinate.applyScale(newXYCoords, this.spectrum.getObservedFreq(), 1); +}var xCompFactor = this.spectrum.getXFactor(); +var isIntegerX = JSV["export"].JDXExporter.areIntegers(newXYCoords, startIndex, endIndex, 1.0, true); +if (!isIntegerX && !JSV["export"].JDXExporter.areIntegers(newXYCoords, startIndex, endIndex, xCompFactor, true)) xCompFactor = 1; +var minY = JSV.common.Coordinate.getMinY(newXYCoords, startIndex, endIndex); +var maxY = JSV.common.Coordinate.getMaxY(newXYCoords, startIndex, endIndex); +var yCompFactor = this.spectrum.getYFactor(); +switch (this.type) { +case JSV.common.ExportType.XY: +yCompFactor = 1; +tmpDataClass = (this.spectrum.isContinuous() ? "XYDATA" : "XYPOINTS"); +break; +case JSV.common.ExportType.PAC: +yCompFactor = 1; +break; +default: +var isIntegerY = JSV["export"].JDXExporter.areIntegers(newXYCoords, startIndex, endIndex, 1.0, false); +if (!isIntegerY && !JSV["export"].JDXExporter.areIntegers(newXYCoords, startIndex, endIndex, yCompFactor, false)) { +yCompFactor = (maxY - minY) / 1000000.0; +}break; +} +var step = 1; +if (this.spectrum.isExportXAxisLeftToRight() != (this.spectrum.getFirstX() < this.spectrum.getLastX())) { +var t = startIndex; +startIndex = endIndex; +endIndex = t; +step = -1; +}switch (this.type) { +case JSV.common.ExportType.DIF: +case JSV.common.ExportType.DIFDUP: +tabDataSet = JSV["export"].JDXCompressor.compressDIF(newXYCoords, startIndex, endIndex, step, xCompFactor, yCompFactor, this.type === JSV.common.ExportType.DIFDUP); +break; +case JSV.common.ExportType.FIX: +tabDataSet = JSV["export"].JDXCompressor.compressFIX(newXYCoords, startIndex, endIndex, step, xCompFactor, yCompFactor); +break; +case JSV.common.ExportType.PAC: +tabDataSet = JSV["export"].JDXCompressor.compressPAC(newXYCoords, startIndex, endIndex, step, xCompFactor, yCompFactor); +break; +case JSV.common.ExportType.SQZ: +tabDataSet = JSV["export"].JDXCompressor.compressSQZ(newXYCoords, startIndex, endIndex, step, xCompFactor, yCompFactor); +break; +case JSV.common.ExportType.XY: +tabDataSet = JSV["export"].JDXCompressor.getXYList(newXYCoords, startIndex, endIndex, step); +break; +default: +break; +} +var varList = JSV.source.JDXReader.getVarList(tmpDataClass); +this.getHeaderString(tmpDataClass, minY, maxY, xCompFactor, yCompFactor, startIndex, endIndex); +this.out.append("##" + tmpDataClass + "= " + varList + JSV["export"].JDXExporter.newLine); +this.out.append(tabDataSet); +this.out.append("##END="); +}, "~N,~N"); +Clazz.defineMethod(c$, "getHeaderString", +function(tmpDataClass, minY, maxY, tmpXFactor, tmpYFactor, startIndex, endIndex){ +this.out.append("##TITLE= ").append(this.spectrum.getTitle()).append(JSV["export"].JDXExporter.newLine); +this.out.append("##JCAMP-DX= 5.01").append(JSV["export"].JDXExporter.newLine); +this.out.append("##DATA TYPE= ").append(this.spectrum.getDataType()).append(JSV["export"].JDXExporter.newLine); +this.out.append("##DATA CLASS= ").append(tmpDataClass).append(JSV["export"].JDXExporter.newLine); +this.out.append("##ORIGIN= ").append(this.spectrum.getOrigin()).append(JSV["export"].JDXExporter.newLine); +this.out.append("##OWNER= ").append(this.spectrum.getOwner()).append(JSV["export"].JDXExporter.newLine); +var d = this.spectrum.getDate(); +var longdate = ""; +var currentTime = this.vwr.apiPlatform.getDateFormat(null); +if (this.spectrum.getLongDate().equals("") || d.length != 8) { +longdate = currentTime + " $$ export date from JSpecView"; +} else if (d.length == 8) { +longdate = (d.charAt(0) < '5' ? "20" : "19") + d + " " + this.spectrum.getTime(); +} else { +longdate = this.spectrum.getLongDate(); +}this.out.append("##LONGDATE= ").append(longdate).append(JSV["export"].JDXExporter.newLine); +var headerTable = this.spectrum.getHeaderTable(); +for (var i = 0; i < headerTable.size(); i++) { +var entry = headerTable.get(i); +var label = entry[0]; +var dataSet = entry[1]; +var nl = (dataSet.startsWith("<") && dataSet.contains(" 1e-8); +}, "~N"); +c$.fixExponentInt = Clazz.defineMethod(c$, "fixExponentInt", +function(x){ +return (x == Math.floor(x) ? String.valueOf(Clazz.doubleToInt(x)) : JU.PT.rep(JSV["export"].JDXExporter.fixExponent(x), "E+00", "")); +}, "~N"); +c$.fixExponent = Clazz.defineMethod(c$, "fixExponent", +function(x){ +var s = JU.DF.formatDecimalDbl(x, -7); +var pt = s.indexOf("E"); +if (pt < 0) { +return s; +}if (s.length == pt + 3) s = s.substring(0, pt + 2) + "0" + s.substring(pt + 2); +return s; +}, "~N"); +c$.newLine = System.getProperty("line.separator"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/SVGExporter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/SVGExporter.js new file mode 100755 index 000000000000..b1028efd99f8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/SVGExporter.js @@ -0,0 +1,237 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(["JSV.export.FormExporter"], "JSV.export.SVGExporter", ["java.util.Hashtable", "JU.CU", "$.DF", "$.Lst", "JSV.common.ColorParameters", "$.ExportType", "$.ScaleData", "$.ScriptToken", "JU.Logger"], function(){ +var c$ = Clazz.declareType(JSV["export"], "SVGExporter", JSV["export"].FormExporter); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV["export"].SVGExporter, []); +}); +Clazz.overrideMethod(c$, "exportTheSpectrum", +function(viewer, mode, out, spec, startIndex, endIndex, pd, asBase64){ +this.initForm(viewer, out); +if (pd == null) pd = viewer.pd(); +var plotAreaColor; +var backgroundColor; +var plotColor; +var gridColor; +var titleColor; +var scaleColor; +var unitsColor; +if (pd == null) { +plotAreaColor = backgroundColor = JSV.common.ColorParameters.LIGHT_GRAY; +plotColor = JSV.common.ColorParameters.BLUE; +gridColor = titleColor = scaleColor = unitsColor = JSV.common.ColorParameters.BLACK; +} else { +plotAreaColor = pd.getColor(JSV.common.ScriptToken.PLOTAREACOLOR); +backgroundColor = pd.bgcolor; +plotColor = pd.getCurrentPlotColor(0); +gridColor = pd.getColor(JSV.common.ScriptToken.GRIDCOLOR); +titleColor = pd.getColor(JSV.common.ScriptToken.TITLECOLOR); +scaleColor = pd.getColor(JSV.common.ScriptToken.SCALECOLOR); +unitsColor = pd.getColor(JSV.common.ScriptToken.UNITSCOLOR); +}var xyCoords = spec.getXYCoords(); +var scaleData = new JSV.common.ScaleData(xyCoords, startIndex, endIndex, spec.isContinuous(), spec.isInverted()); +var maxXOnScale = scaleData.maxXOnScale; +var minXOnScale = scaleData.minXOnScale; +var maxYOnScale = scaleData.maxYOnScale; +var minYOnScale = scaleData.minYOnScale; +var xStep = scaleData.steps[0]; +var yStep = scaleData.steps[1]; +var plotAreaWidth = JSV["export"].SVGExporter.svgWidth - JSV["export"].SVGExporter.leftInset - JSV["export"].SVGExporter.rightInset; +var plotAreaHeight = JSV["export"].SVGExporter.svgHeight - JSV["export"].SVGExporter.topInset - JSV["export"].SVGExporter.bottomInset; +var xScaleFactor = (plotAreaWidth / (maxXOnScale - minXOnScale)); +var yScaleFactor = (plotAreaHeight / (maxYOnScale - minYOnScale)); +var leftPlotArea = JSV["export"].SVGExporter.leftInset; +var rightPlotArea = JSV["export"].SVGExporter.leftInset + plotAreaWidth; +var topPlotArea = JSV["export"].SVGExporter.topInset; +var bottomPlotArea = JSV["export"].SVGExporter.topInset + plotAreaHeight; +var titlePosition = bottomPlotArea + 60; +this.context.put("titlePosition", new Integer(titlePosition)); +var xPt; +var yPt; +var xStr; +var yStr; +var vertGridCoords = new JU.Lst(); +var horizGridCoords = new JU.Lst(); +for (var i = minXOnScale; i < maxXOnScale + xStep / 2; i += xStep) { +xPt = leftPlotArea + ((i - minXOnScale) * xScaleFactor); +yPt = topPlotArea; +xStr = JSV["export"].SVGExporter.formatDecimalTrimmed(xPt, 6); +yStr = JSV["export"].SVGExporter.formatDecimalTrimmed(yPt, 6); +var hash = new java.util.Hashtable(); +hash.put("xVal", xStr); +hash.put("yVal", yStr); +vertGridCoords.addLast(hash); +} +for (var i = minYOnScale; i < maxYOnScale + yStep / 2; i += yStep) { +xPt = leftPlotArea; +yPt = topPlotArea + ((i - minYOnScale) * yScaleFactor); +xStr = JSV["export"].SVGExporter.formatDecimalTrimmed(xPt, 6); +yStr = JSV["export"].SVGExporter.formatDecimalTrimmed(yPt, 6); +var hash = new java.util.Hashtable(); +hash.put("xVal", xStr); +hash.put("yVal", yStr); +horizGridCoords.addLast(hash); +} +var xScaleList = new JU.Lst(); +var xScaleListReversed = new JU.Lst(); +var yScaleList = new JU.Lst(); +var precisionX = scaleData.precision[0]; +var precisionY = scaleData.precision[1]; +for (var i = minXOnScale; i < (maxXOnScale + xStep / 2); i += xStep) { +xPt = leftPlotArea + ((i - minXOnScale) * xScaleFactor); +xPt -= 10; +yPt = bottomPlotArea + 15; +xStr = JSV["export"].SVGExporter.formatDecimalTrimmed(xPt, 6); +yStr = JSV["export"].SVGExporter.formatDecimalTrimmed(yPt, 6); +var iStr = JU.DF.formatDecimalDbl(i, precisionX); +var hash = new java.util.Hashtable(); +hash.put("xVal", xStr); +hash.put("yVal", yStr); +hash.put("number", iStr); +xScaleList.addLast(hash); +} +for (var i = minXOnScale, j = maxXOnScale; i < (maxXOnScale + xStep / 2); i += xStep, j -= xStep) { +xPt = leftPlotArea + ((j - minXOnScale) * xScaleFactor); +xPt -= 10; +yPt = bottomPlotArea + 15; +xStr = JSV["export"].SVGExporter.formatDecimalTrimmed(xPt, 6); +yStr = JSV["export"].SVGExporter.formatDecimalTrimmed(yPt, 6); +var iStr = JU.DF.formatDecimalDbl(i, precisionX); +var hash = new java.util.Hashtable(); +hash.put("xVal", xStr); +hash.put("yVal", yStr); +hash.put("number", iStr); +xScaleListReversed.addLast(hash); +} +for (var i = minYOnScale; (i < maxYOnScale + yStep / 2); i += yStep) { +xPt = leftPlotArea - 55; +yPt = bottomPlotArea - ((i - minYOnScale) * yScaleFactor); +yPt += 3; +xStr = JSV["export"].SVGExporter.formatDecimalTrimmed(xPt, 6); +yStr = JSV["export"].SVGExporter.formatDecimalTrimmed(yPt, 6); +var iStr = JU.DF.formatDecimalDbl(i, precisionY); +var hash = new java.util.Hashtable(); +hash.put("xVal", xStr); +hash.put("yVal", yStr); +hash.put("number", iStr); +yScaleList.addLast(hash); +} +var firstTranslateX; +var firstTranslateY; +var secondTranslateX; +var secondTranslateY; +var scaleX; +var scaleY; +var increasing = (pd != null && pd.getBoolean(JSV.common.ScriptToken.REVERSEPLOT)); +if (increasing) { +firstTranslateX = leftPlotArea; +firstTranslateY = bottomPlotArea; +scaleX = xScaleFactor; +scaleY = -yScaleFactor; +secondTranslateX = -1 * minXOnScale; +secondTranslateY = -1 * minYOnScale; +} else { +firstTranslateX = rightPlotArea; +firstTranslateY = bottomPlotArea; +scaleX = -xScaleFactor; +scaleY = -yScaleFactor; +secondTranslateX = -minXOnScale; +secondTranslateY = -minYOnScale; +}var yTickA = minYOnScale - (yStep / 2); +var yTickB = yStep / 5; +this.context.put("plotAreaColor", JSV["export"].SVGExporter.toRGBHexString(plotAreaColor)); +this.context.put("backgroundColor", JSV["export"].SVGExporter.toRGBHexString(backgroundColor)); +this.context.put("plotColor", JSV["export"].SVGExporter.toRGBHexString(plotColor)); +this.context.put("gridColor", JSV["export"].SVGExporter.toRGBHexString(gridColor)); +this.context.put("titleColor", JSV["export"].SVGExporter.toRGBHexString(titleColor)); +this.context.put("scaleColor", JSV["export"].SVGExporter.toRGBHexString(scaleColor)); +this.context.put("unitsColor", JSV["export"].SVGExporter.toRGBHexString(unitsColor)); +this.context.put("svgHeight", new Integer(JSV["export"].SVGExporter.svgHeight)); +this.context.put("svgWidth", new Integer(JSV["export"].SVGExporter.svgWidth)); +this.context.put("leftPlotArea", new Integer(leftPlotArea)); +this.context.put("rightPlotArea", new Integer(rightPlotArea)); +this.context.put("topPlotArea", new Integer(topPlotArea)); +this.context.put("bottomPlotArea", new Integer(bottomPlotArea)); +this.context.put("plotAreaHeight", new Integer(plotAreaHeight)); +this.context.put("plotAreaWidth", new Integer(plotAreaWidth)); +this.context.put("minXOnScale", new Double(minXOnScale)); +this.context.put("maxXOnScale", new Double(maxXOnScale)); +this.context.put("minYOnScale", new Double(minYOnScale)); +this.context.put("maxYOnScale", new Double(maxYOnScale)); +this.context.put("yTickA", new Double(yTickA)); +this.context.put("yTickB", new Double(yTickB)); +this.context.put("xScaleFactor", new Double(xScaleFactor)); +this.context.put("yScaleFactor", new Double(yScaleFactor)); +this.context.put("increasing", new Boolean(increasing)); +this.context.put("verticalGridCoords", vertGridCoords); +this.context.put("horizontalGridCoords", horizGridCoords); +var newXYCoords = new JU.Lst(); +for (var i = startIndex; i <= endIndex; i++) newXYCoords.addLast(xyCoords[i]); + +var firstX; +var firstY; +var lastX; +firstX = xyCoords[startIndex].getXVal(); +firstY = xyCoords[startIndex].getYVal(); +lastX = xyCoords[endIndex].getXVal(); +System.out.println("SVG " + spec.isXIncreasing() + " " + spec.shouldDisplayXAxisIncreasing() + " " + firstX + " " + lastX + " " + startIndex + " " + endIndex + " " + newXYCoords.get(0).toString() + " " + increasing); +this.context.put("title", spec.getTitle()); +this.context.put("xyCoords", newXYCoords); +this.context.put("continuous", new Boolean(spec.isContinuous())); +this.context.put("firstTranslateX", new Double(firstTranslateX)); +this.context.put("firstTranslateY", new Double(firstTranslateY)); +this.context.put("scaleX", new Double(scaleX)); +this.context.put("scaleY", new Double(scaleY)); +this.context.put("secondTranslateX", new Double(secondTranslateX)); +this.context.put("secondTranslateY", new Double(secondTranslateY)); +this.context.put("plotStrokeWidth", this.getPlotStrokeWidth(scaleX, scaleY)); +if (increasing) { +this.context.put("xScaleList", xScaleList); +this.context.put("xScaleListReversed", xScaleListReversed); +} else { +this.context.put("xScaleList", xScaleListReversed); +this.context.put("xScaleListReversed", xScaleList); +}this.context.put("yScaleList", yScaleList); +this.context.put("xUnits", spec.getXUnits()); +this.context.put("yUnits", spec.getYUnits()); +this.context.put("firstX", Double.$valueOf(firstX)); +this.context.put("firstY", Double.$valueOf(firstY)); +this.context.put("lastX", Double.$valueOf(lastX)); +var xUnitLabelX = rightPlotArea - 50; +var xUnitLabelY = bottomPlotArea + 30; +var yUnitLabelX = leftPlotArea - 80; +var yUnitLabelY = Clazz.doubleToInt(bottomPlotArea / 2); +var tempX = yUnitLabelX; +yUnitLabelX = -yUnitLabelY; +yUnitLabelY = tempX; +this.context.put("xUnitLabelX", "" + xUnitLabelX); +this.context.put("xUnitLabelY", "" + xUnitLabelY); +this.context.put("yUnitLabelX", "" + yUnitLabelX); +this.context.put("yUnitLabelY", "" + yUnitLabelY); +this.context.put("numDecimalPlacesX", new Integer(Math.abs(scaleData.exportPrecision[0]))); +this.context.put("numDecimalPlacesY", new Integer(Math.abs(scaleData.exportPrecision[1]))); +var vm = (mode === JSV.common.ExportType.SVGI ? "plot_ink.vm" : "plot.vm"); +JU.Logger.info("SVGExporter using " + vm); +return this.writeForm(vm); +}, "JSV.common.JSViewer,JSV.common.ExportType,JU.OC,JSV.common.Spectrum,~N,~N,JSV.common.PanelData,~B"); +Clazz.defineMethod(c$, "getPlotStrokeWidth", +function(scaleX, scaleY){ +var s = JSV["export"].SVGExporter.formatDecimalTrimmed(Math.abs(scaleY / 1e12 * 2), 10); +return s; +}, "~N,~N"); +c$.toRGBHexString = Clazz.defineMethod(c$, "toRGBHexString", +function(c){ +return "#" + JU.CU.toRGBHexString(c); +}, "javajs.api.GenericColor"); +c$.formatDecimalTrimmed = Clazz.defineMethod(c$, "formatDecimalTrimmed", +function(x, precision){ +return JU.DF.formatDecimalTrimmed0(x, precision); +}, "~N,~N"); +c$.svgWidth = 850; +c$.svgHeight = 400; +c$.leftInset = 100; +c$.rightInset = 200; +c$.bottomInset = 80; +c$.topInset = 20; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/XMLExporter.js b/config/plugins/visualizations/jmol/static/j2s/JSV/export/XMLExporter.js new file mode 100755 index 000000000000..7380168087b3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/XMLExporter.js @@ -0,0 +1,198 @@ +Clazz.declarePackage("JSV.export"); +Clazz.load(["JSV.export.FormExporter", "JU.Lst"], "JSV.export.XMLExporter", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.continuous = false; +this.title = null; +this.ident = null; +this.state = null; +this.xUnits = null; +this.yUnits = null; +this.xUnitFactor = ""; +this.xUnitExponent = "1"; +this.xUnitLabel = null; +this.yUnitLabel = null; +this.datatype = null; +this.owner = null; +this.origin = null; +this.spectypeInitials = ""; +this.longdate = null; +this.date = null; +this.time = null; +this.vendor = ""; +this.model = ""; +this.resolution = ""; +this.pathlength = ""; +this.molform = ""; +this.bp = ""; +this.mp = ""; +this.casRN = ""; +this.casName = ""; +this.obNucleus = ""; +this.obFreq = 0; +this.firstX = 0; +this.lastX = 0; +this.deltaX = 0; +this.solvRef = ""; +this.solvName = ""; +this.startIndex = 0; +this.endIndex = 0; +this.xyCoords = null; +this.npoints = 0; +this.newXYCoords = null; +Clazz.instantialize(this, arguments);}, JSV["export"], "XMLExporter", JSV["export"].FormExporter); +Clazz.prepareFields (c$, function(){ +this.newXYCoords = new JU.Lst(); +}); +Clazz.defineMethod(c$, "setup", +function(viewer, spec, out, startIndex, endIndex){ +this.startIndex = startIndex; +this.endIndex = endIndex; +this.initForm(viewer, out); +return this.setParameters(spec); +}, "JSV.common.JSViewer,JSV.common.Spectrum,JU.OC,~N,~N"); +Clazz.defineMethod(c$, "setParameters", +function(spec){ +this.continuous = spec.isContinuous(); +if (!this.continuous) return false; +this.xyCoords = spec.getXYCoords(); +this.npoints = this.endIndex - this.startIndex + 1; +for (var i = this.startIndex; i <= this.endIndex; i++) this.newXYCoords.addLast(this.xyCoords[i]); + +this.title = spec.getTitle(); +this.xUnits = spec.getXUnits().toUpperCase(); +this.yUnits = spec.getYUnits().toUpperCase(); +if (this.xUnits.equals("1/CM")) { +this.xUnitLabel = "1/cm"; +this.xUnitFactor = "0.01"; +this.xUnitExponent = "-1"; +} else if (this.xUnits.equals("UM") || this.xUnits.equals("MICROMETERS")) { +this.xUnitLabel = "um"; +this.xUnitFactor = "0.000001"; +} else if (this.xUnits.equals("NM") || this.xUnits.equals("NANOMETERS") || this.xUnits.equals("WAVELENGTH")) { +this.xUnitLabel = "nm"; +this.xUnitFactor = "0.000000001"; +} else if (this.xUnits.equals("PM") || this.xUnits.equals("PICOMETERS")) { +this.xUnitLabel = "pm"; +this.xUnitFactor = "0.000000000001"; +} else { +this.xUnitLabel = "Arb. Units"; +this.xUnitFactor = ""; +}this.yUnitLabel = (this.yUnits.equals("A") || this.yUnits.equals("ABS") || this.yUnits.equals("ABSORBANCE") || this.yUnits.equals("AU") || this.yUnits.equals("AUFS") || this.yUnits.equals("OPTICAL DENSITY") ? "Absorbance" : this.yUnits.equals("T") || this.yUnits.equals("TRANSMITTANCE") ? "Transmittance" : this.yUnits.equals("COUNTS") || this.yUnits.equals("CTS") ? "Counts" : "Arb. Units"); +this.owner = spec.getOwner(); +this.origin = spec.getOrigin(); +this.time = spec.getTime(); +this.longdate = spec.getLongDate(); +this.date = spec.getDate(); +if ((this.longdate.equals("")) || (this.date.equals(""))) this.longdate = this.currentTime; +if ((this.date.length == 8) && (this.date.charAt(0) < '5')) this.longdate = "20" + this.date + " " + this.time; +if ((this.date.length == 8) && (this.date.charAt(0) > '5')) this.longdate = "19" + this.date + " " + this.time; +this.obFreq = spec.getObservedFreq(); +this.firstX = this.xyCoords[this.startIndex].getXVal(); +this.lastX = this.xyCoords[this.endIndex].getXVal(); +this.deltaX = spec.getDeltaX(); +this.datatype = spec.getDataType(); +if (this.datatype.contains("NMR")) { +this.firstX *= this.obFreq; +this.lastX *= this.obFreq; +this.deltaX *= this.obFreq; +}this.setParams(spec.getHeaderTable()); +return true; +}, "JSV.common.Spectrum"); +c$.getParamIndex = Clazz.defineMethod(c$, "getParamIndex", +function(label){ +for (var i = 0; i < JSV["export"].XMLExporter.params.length; i++) if (JSV["export"].XMLExporter.params[i].equalsIgnoreCase(label)) return i; + +return -1; +}, "~S"); +Clazz.defineMethod(c$, "setParams", +function(table){ +for (var i = 0; i < table.size(); i++) { +var entry = table.get(i); +var val = entry[1]; +switch (JSV["export"].XMLExporter.getParamIndex(entry[0])) { +case 0: +this.state = val; +break; +case 1: +this.resolution = val; +break; +case 2: +this.model = val; +break; +case 3: +this.vendor = val; +break; +case 4: +this.molform = val; +break; +case 5: +this.casRN = val; +break; +case 6: +this.casName = val; +break; +case 7: +this.mp = val; +break; +case 8: +this.bp = val; +break; +case 9: +this.obNucleus = val; +break; +case 10: +this.solvName = val; +break; +case 11: +this.solvRef = val; +break; +} +} +}, "JU.Lst"); +Clazz.defineMethod(c$, "setContext", +function(){ +this.context.put("continuous", Boolean.$valueOf(this.continuous)); +this.context.put("file", this.out.getFileName() + ""); +this.context.put("title", this.title); +this.context.put("ident", this.ident); +this.context.put("state", this.state); +this.context.put("firstX", new Double(this.firstX)); +this.context.put("lastX", new Double(this.lastX)); +this.context.put("xyCoords", this.newXYCoords); +this.context.put("xdata_type", "Float32"); +this.context.put("ydata_type", "Float32"); +this.context.put("npoints", Integer.$valueOf(this.npoints)); +this.context.put("xencode", "avs"); +this.context.put("yencode", "ivs"); +this.context.put("xUnits", this.xUnits); +this.context.put("yUnits", this.yUnits); +this.context.put("xUnitLabel", this.xUnitLabel); +this.context.put("yUnitLabel", this.yUnitLabel); +this.context.put("specinits", this.spectypeInitials); +this.context.put("deltaX", new Double(this.deltaX)); +this.context.put("owner", this.owner); +this.context.put("origin", this.origin); +this.context.put("timestamp", this.longdate); +this.context.put("DataType", this.datatype); +this.context.put("currenttime", this.currentTime); +this.context.put("resolution", this.resolution); +this.context.put("pathlength", this.pathlength); +this.context.put("molform", this.molform); +this.context.put("CASrn", this.casRN); +this.context.put("CASn", this.casName); +this.context.put("mp", this.mp); +this.context.put("bp", this.bp); +this.context.put("ObFreq", new Double(this.obFreq)); +this.context.put("ObNucleus", this.obNucleus); +this.context.put("SolvName", this.solvName); +this.context.put("SolvRef", this.solvRef); +this.context.put("vendor", this.vendor); +this.context.put("model", this.model); +}); +Clazz.defineMethod(c$, "writeFormType", +function(type){ +return this.writeForm(type + (this.datatype.contains("NMR") ? "_nmr" : "_tmp") + ".vm"); +}, "~S"); +c$.params = Clazz.newArray(-1, ["##STATE", "##RESOLUTION", "##SPECTROMETER", "##$MANUFACTURER", "##MOLFORM", "##CASREGISTRYNO", "##CASNAME", "##MP", "##BP", "##.OBSERVENUCLEUS", "##.SOLVENTNAME", "##.SOLVENTREFERENCE"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/animl_nmr.vm b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/animl_nmr.vm new file mode 100755 index 000000000000..3cd674e92d35 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/animl_nmr.vm @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $title + +#if($molform !="") + + $molform + +#end +#if($CASrn !="") + + $CASrn + +#end +#if($CASn !="") + + $CASn + +#end +#if($state !="") + + + $state + +#end +#if($samplingproc !="") + + $samplingproc + +#end + + $owner + +#if($temp !="") + + $temp + +#end +#if($bp !="") + + + $bp + + + 101325.01 + + m + kg + s + + + +#end +#if($mp !="") + + + $mp + + + 101325.01 + + m + kg + s + + + +#end + + + + + + + + + + + $SolvName + + + Liquid? + + + + + + + + + + + $origin + $owner + + $timestamp + + + + + + + + + + $vendor + + + $model + + + unknown + + + + + + + + + +#foreach ($coord in $xyCoords) +<$ydata_type>$coord.getYString() +#end + + + + + + + <$xdata_type>$firstX + + + <$xdata_type>$deltaX + + + + + + + + + + $title + + + $ObNucleus + + + $ObFreq + + s + + + + 0 + + + + 0 + + s + + + + 0 + + + 0 + + + + + + + + + 1 + + + unknown + + + unknown + + + + + + + + + + + + + $timestamp + + AnIML exporter 1.0 JSpecView http://jspecview.sf.net + + created + Conversion from JCAMP-DX file - $file + There may be additional header items in the JCAMP-DX file that have not been converted to XML + + + + + + + + + + + + + + + + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/animl_tmp.vm b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/animl_tmp.vm new file mode 100755 index 000000000000..3352427c9c94 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/animl_tmp.vm @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + $title + +#if($molform !="") + + $molform + +#end +#if($CASrn !="") + + $CASrn + +#end +#if($CASn !="") + + $CASn + +#end +#if($state !="") + + + $state + +#end +#if($samplingproc !="") + + $samplingproc + +#end + + $owner + +#if($temp !="") + + $temp + +#end +#if($bp !="") + + + $bp + + + 101325.01 + + m + kg + s + + + +#end +#if($mp !="") + + + $mp + + + 101325.01 + + m + kg + s + + + +#end + + + + + + + + + + + $origin + $owner + + $timestamp + + + + + + + + + $vendor + + + $model + + + + + + + + +#if($yencode=="ivs") + +#foreach ($coord in $xyCoords) +<$ydata_type>$coord.getYString() +#end + + + 1 + + + +#if($xencode=="avs") + + + <$xdata_type>$firstX + + + <$xdata_type>$deltaX + + +#end + +#if($xUnitFactor != "") + m +#end + + + + + + + + $title + + + $pathlength + + m + + + + Spectrum + + + + + + + + + $resolution + + + + + + + + + + + + + $currenttime + + AnIML exporter 1.0 JSpecView http://jspecview.sf.net + + created + Conversion from JCAMP-DX file to: $file + There may be additional header items in the JCAMP-DX file that have not been converted to XML + + + + + + + + + + + + + + + + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/cml_nmr.vm b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/cml_nmr.vm new file mode 100755 index 000000000000..0be4aa71eaac --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/cml_nmr.vm @@ -0,0 +1,65 @@ + + + + $ObFreq + + + + + + + +#if($model !="") + $model +#end + + $ObFreq + + $ObNucleus + + + +#if($molform !="") + +#end +#if($CASrn !="") + $CASrn +#end + + +#if($continuous) + + + + + + +#foreach ($coord in $xyCoords)$coord.getYString() #end + + + +#end +#if (!$continuous) + +#foreach ($coord in $xyCoords)#end + +#end + + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/cml_tmp.vm b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/cml_tmp.vm new file mode 100755 index 000000000000..b18cc29c11c1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/cml_tmp.vm @@ -0,0 +1,57 @@ + + + + + + + + $model +#if($resolution !="") + + $resolution + +#end + + + +#if($molform !="") + +#end +#if($CASrn !="") + $CASrn +#end + + +#if($continuous) + + + + + + +#foreach ($coord in $xyCoords)$coord.getYString() #end + + + +#end +#if (!$continuous) + +#foreach ($coord in $xyCoords)#end + +#end + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/plot.vm b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/plot.vm new file mode 100755 index 000000000000..cf32773c538e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/plot.vm @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + +$title + + + +Toggle Grid +Toggle Background +Toggle Coordinates +Reverse Plot + + + + + + + + + +#foreach ($item in $xScaleList) + $item.number +#end + + + +#foreach ($item in $yScaleList) + $item.number +#end + + + + +$xUnits +$yUnits + + + +#if($continuous) + #if($overlaid) + #foreach ($coordList in $xyCoords) + + #end + #else + + #end +#else + #if($overlaid) + #foreach ($coordList in $xyCoords) + + #end + #else + + + #end +#end + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/plot_ink.vm b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/plot_ink.vm new file mode 100755 index 000000000000..cece136f2e8f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/export/resources/plot_ink.vm @@ -0,0 +1,103 @@ + + + version="1.1"image/svg+xml + + + + + +#if($continuous) + #if($overlaid) + #foreach ($coordList in $xyCoords) + + #end + #else + + #end +#else + #if($overlaid) + #foreach ($coordList in $xyCoords) + + #end + #else + + #end +#end + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/DialogTableModel.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/DialogTableModel.js new file mode 100755 index 000000000000..436fdddb6cea --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/DialogTableModel.js @@ -0,0 +1,83 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["JS.AbstractTableModel"], "JSV.js2d.DialogTableModel", ["JU.CU"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.columnNames = null; +this.data = null; +this.asString = false; +this.widths = null; +this.thisCol = 0; +this.tableCellAlignLeft = false; +Clazz.instantialize(this, arguments);}, JSV.js2d, "DialogTableModel", null, JS.AbstractTableModel); +Clazz.makeConstructor(c$, +function(columnNames, data, asString, tableCellAlignLeft){ +this.columnNames = columnNames; +this.data = data; +this.asString = asString; +this.widths = (data.length == 0 ? Clazz.newIntArray (0, 0) : Clazz.newIntArray (data[0].length, 0)); +this.tableCellAlignLeft = tableCellAlignLeft; +}, "~A,~A,~B,~B"); +Clazz.defineMethod(c$, "getColumnCount", +function(){ +return this.columnNames.length; +}); +Clazz.defineMethod(c$, "getRowCount", +function(){ +return this.data.length; +}); +Clazz.defineMethod(c$, "getColumnName", +function(col){ +return this.columnNames[col]; +}, "~N"); +Clazz.defineMethod(c$, "getValueAt", +function(row, col){ +var o = this.data[row][col]; +return (this.asString ? " " + o + " " : o); +}, "~N,~N"); +Clazz.overrideMethod(c$, "getColumn", +function(i){ +this.thisCol = i; +return this; +}, "~N"); +Clazz.overrideMethod(c$, "setPreferredWidth", +function(n){ +this.widths[this.thisCol] = n; +}, "~N"); +Clazz.overrideMethod(c$, "toHTML", +function(sb, id, selectedRows){ +if (this.data == null || this.data[0] == null || this.data[0].length == 0) return; +var nrows = this.data.length; +var ncols = this.columnNames.length; +for (var i = -1; i < nrows; i++) { +var rowid = id + "_" + i; +sb.append("\n"); +for (var j = 0; j < ncols; j++) { +if (i == -1) this.getCellHtml(sb, id + "_h" + j, i, j, this.columnNames[j], false); + else this.getCellHtml(sb, rowid + "_" + j, i, j, this.data[i][j], selectedRows.get(i)); +} +sb.append(""); +} +}, "JU.SB,~S,JU.BS"); +Clazz.defineMethod(c$, "getCellHtml", +function(sb, id, iRow, iCol, o, isSelected){ +var style = this.getCellStyle(id, iRow, iCol, o, isSelected); +sb.append("" + o + ""); +}, "JU.SB,~S,~N,~N,~O,~B"); +Clazz.defineMethod(c$, "getCellStyle", +function(id, iRow, iCol, o, isSelected){ +var style = "padding:1px 1px 1px 1px"; +if (iRow < 0) { +style += ";font-weight:bold"; +} else { +if (Clazz.instanceOf(o,"javajs.api.GenericColor")) { +style += ";background-color:" + JU.CU.toCSSString(o); +} else { +if (this.asString) o = " " + o + " "; +style += ";text-align:"; +if (this.tableCellAlignLeft) style += "left"; + else if (iCol == 0) style += "center"; + else style += "right"; +style += ";border:" + (isSelected ? 3 : 1) + "px solid #000"; +}}return " style='" + style + "'"; +}, "~S,~N,~N,~O,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/Display.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/Display.js new file mode 100755 index 000000000000..44a711c33705 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/Display.js @@ -0,0 +1,41 @@ +Clazz.declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz.declareType(JSV.js2d, "Display", null); +c$.getFullScreenDimensions = Clazz.defineMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +{ +widthHeight[0] = canvas.width; +widthHeight[1] = canvas.height; +}}, "~O,~A"); +c$.hasFocus = Clazz.defineMethod(c$, "hasFocus", +function(canvas){ +return true; +}, "~O"); +c$.requestFocusInWindow = Clazz.defineMethod(c$, "requestFocusInWindow", +function(canvas){ +}, "~O"); +c$.repaint = Clazz.defineMethod(c$, "repaint", +function(canvas){ +}, "~O"); +c$.renderScreenImage = Clazz.defineMethod(c$, "renderScreenImage", +function(viewer, g, size){ +{ +}}, "J.api.PlatformViewer,~O,~O"); +c$.setTransparentCursor = Clazz.defineMethod(c$, "setTransparentCursor", +function(canvas){ +}, "~O"); +c$.setCursor = Clazz.defineMethod(c$, "setCursor", +function(c, canvas){ +}, "~N,~O"); +c$.prompt = Clazz.defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +{ +var s = prompt(label, data); +if (s != null)return s; +}return "null"; +}, "~S,~S,~A,~B"); +c$.convertPointFromScreen = Clazz.defineMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +}, "~O,JU.P3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/Image.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/Image.js new file mode 100755 index 000000000000..43a397c02cf7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/Image.js @@ -0,0 +1,74 @@ +Clazz.declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz.declareType(JSV.js2d, "Image", null); +c$.getWidth = Clazz.defineMethod(c$, "getWidth", +function(canvas){ +{ +return (canvas.imageWidth ? canvas.imageWidth : canvas.width); +}}, "~O"); +c$.getHeight = Clazz.defineMethod(c$, "getHeight", +function(canvas){ +{ +return (canvas.imageHeight ? canvas.imageHeight : canvas.height); +}}, "~O"); +c$.grabPixels = Clazz.defineMethod(c$, "grabPixels", +function(context, width, height){ +var data = null; +{ +if (context._buf32) return context._buf32; // non-canvas internal buffer for image writing +data = context.getImageData(0, 0, width, height).data; +}return JSV.js2d.Image.toIntARGB(data); +}, "~O,~N,~N"); +c$.toIntARGB = Clazz.defineMethod(c$, "toIntARGB", +function(imgData){ +var n = Clazz.doubleToInt(imgData.length / 4); +var iData = Clazz.newIntArray (n, 0); +for (var i = 0, j = 0; i < n; j++) { +iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | 0xFF000000; +} +return iData; +}, "~A"); +c$.fromIntARGB = Clazz.defineMethod(c$, "fromIntARGB", +function(buf32, buf8){ +var n = buf8.length >> 2; +for (var i = 0, j = 0; i < n; i++) { +buf8[j++] = (buf32[i] >> 16) & 0xFF; +buf8[j++] = (buf32[i] >> 8) & 0xFF; +buf8[j++] = buf32[i] & 0xFF; +buf8[j++] = 0xFF; +} +}, "~A,~A"); +c$.getTextPixels = Clazz.defineMethod(c$, "getTextPixels", +function(text, font3d, context, width, height, ascent){ +{ +context.fillStyle = "#000000"; +context.fillRect(0, 0, width, height); +context.fillStyle = "#FFFFFF"; +context.font = font3d.font; +context.fillText(text, 0, ascent); +}return JSV.js2d.Image.grabPixels(context, width, height); +}, "~S,JU.Font,~O,~N,~N,~N"); +c$.allocateRgbImage = Clazz.defineMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, canvas){ +{ +if (canvas == null) +canvas = {width:windowWidth,height:windowHeight}; +canvas.buf32 = pBuffer; +}}, "~N,~N,~A,~N,~B,~O"); +c$.getStaticGraphics = Clazz.defineMethod(c$, "getStaticGraphics", +function(canvas, backgroundTransparent){ +return JSV.js2d.Image.getGraphics(canvas); +}, "~O,~B"); +c$.getGraphics = Clazz.defineMethod(c$, "getGraphics", +function(canvas){ +{ +return canvas.getContext("2d"); +}}, "~O"); +c$.drawImage = Clazz.defineMethod(c$, "drawImage", +function(context, canvas, x, y, width, height){ +{ +this.fromIntARGB(canvas.buf32, canvas.buf8); +context.putImageData(canvas.imgdata,x,y); +}}, "~O,~O,~N,~N,~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsDialog.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsDialog.js new file mode 100755 index 000000000000..7973612270b0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsDialog.js @@ -0,0 +1,237 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["JSV.api.PlatformDialog", "JS.JDialog", "$.Insets"], "JSV.js2d.JsDialog", ["java.util.Hashtable", "JSV.common.Annotation", "JSV.js2d.DialogTableModel", "JS.Color", "$.Dimension", "$.FlowLayout", "$.GridBagConstraints", "$.GridBagLayout", "$.JButton", "$.JCheckBox", "$.JComboBox", "$.JLabel", "$.JPanel", "$.JScrollPane", "$.JSplitPane", "$.JTable", "$.JTextField"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.optionKey = null; +this.registryKey = null; +this.options = null; +this.manager = null; +this.type = null; +this.leftPanel = null; +this.mainSplitPane = null; +this.rightPanel = null; +this.thisPanel = null; +this.dataTable = null; +this.iRow = 0; +this.haveColors = false; +this.tableCellAlignLeft = false; +this.haveTwoPanels = true; +this.buttonInsets = null; +this.panelInsets = null; +this.selectedRow = -1; +Clazz.instantialize(this, arguments);}, JSV.js2d, "JsDialog", JS.JDialog, JSV.api.PlatformDialog); +Clazz.prepareFields (c$, function(){ +this.buttonInsets = new JS.Insets(5, 5, 5, 5); +this.panelInsets = new JS.Insets(0, 0, 2, 2); +}); +Clazz.makeConstructor(c$, +function(manager, jsvDialog, registryKey){ +Clazz.superConstructor(this, JSV.js2d.JsDialog); +this.defaultHeight = 350; +this.manager = manager; +this.registryKey = registryKey; +this.optionKey = jsvDialog.optionKey; +this.type = jsvDialog.getAType(); +this.options = jsvDialog.options; +if (this.options == null) this.options = new java.util.Hashtable(); +this.getContentPane().setBackground(JS.Color.get3(230, 230, 230)); +this.toFront(); +}, "JSV.dialog.DialogManager,JSV.dialog.JSVDialog,~S"); +Clazz.defineMethod(c$, "onFocus", +function(){ +this.toFront(); +}); +Clazz.overrideMethod(c$, "setFocus", +function(tf){ +if (tf) { +this.toFront(); +}}, "~B"); +Clazz.overrideMethod(c$, "addButton", +function(name, text){ +var btn = new JS.JButton(); +btn.setPreferredSize( new JS.Dimension(120, 25)); +btn.setText(text); +btn.setName(this.registryKey + "/" + name); +btn.addActionListener(this.manager); +this.thisPanel.add(btn, new JS.GridBagConstraints(0, this.iRow++, 3, 1, 0.0, 0.0, 10, 0, this.buttonInsets, 0, 0)); +return btn; +}, "~S,~S"); +Clazz.overrideMethod(c$, "addCheckBox", +function(name, title, level, isSelected){ +if (name == null) { +this.iRow = 0; +this.thisPanel = this.rightPanel; +return null; +}var cb = new JS.JCheckBox(); +cb.setSelected(isSelected); +cb.setText(title); +cb.setName(this.registryKey + "/" + name); +cb.addActionListener(this.manager); +var insets = new JS.Insets(0, 20 * level, 2, 2); +this.thisPanel.add(cb, new JS.GridBagConstraints(0, this.iRow++, 1, 1, 0.0, 0.0, 17, 0, insets, 0, 0)); +return cb; +}, "~S,~S,~N,~B"); +Clazz.defineMethod(c$, "addPanelLine", +function(name, label, obj, units){ +this.thisPanel.add( new JS.JLabel(label == null ? name : label), new JS.GridBagConstraints(0, this.iRow, 1, 1, 0.0, 0.0, 13, 0, this.panelInsets, 0, 0)); +if (units == null) { +this.thisPanel.add(obj, new JS.GridBagConstraints(1, this.iRow, 2, 1, 0.0, 0.0, 17, 0, this.panelInsets, 0, 0)); +} else { +this.thisPanel.add(obj, new JS.GridBagConstraints(1, this.iRow, 1, 1, 0.0, 0.0, 10, 0, this.panelInsets, 0, 0)); +this.thisPanel.add( new JS.JLabel(units), new JS.GridBagConstraints(2, this.iRow, 1, 1, 0.0, 0.0, 17, 0, this.panelInsets, 0, 0)); +}this.iRow++; +}, "~S,~S,JS.JComponent,~S"); +Clazz.overrideMethod(c$, "addSelectOption", +function(name, label, info, iPt, visible){ +var combo = new JS.JComboBox(info); +combo.setSelectedIndex(iPt); +combo.setName(this.registryKey + "/" + name); +if (visible) { +combo.addActionListener(this.manager); +this.addPanelLine(name, label, combo, null); +}return combo; +}, "~S,~S,~A,~N,~B"); +Clazz.overrideMethod(c$, "addTextField", +function(name, label, value, units, defaultValue, visible){ +var key = this.optionKey + "_" + name; +if (value == null) { +value = this.options.get(key); +if (value == null) this.options.put(key, (value = defaultValue)); +}var obj = new JS.JTextField(value); +obj.setName(this.registryKey + "/" + name); +if (visible) { +obj.setPreferredSize( new JS.Dimension(45, 15)); +obj.addActionListener(this.manager); +this.addPanelLine(name, label, obj, units); +}return obj; +}, "~S,~S,~S,~S,~S,~B"); +Clazz.overrideMethod(c$, "createTable", +function(data, header, widths){ +try { +var scrollPane = new JS.JScrollPane(this.dataTable = this.getDataTable(data, header, widths, (this.leftPanel == null ? this.defaultHeight : this.leftPanel.getHeight() - 50))); +if (this.mainSplitPane == null) { +this.getContentPane().add(scrollPane); +} else { +this.mainSplitPane.setRightComponent(scrollPane); +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.validate(); +this.repaint(); +}, "~A,~A,~A"); +Clazz.overrideMethod(c$, "endLayout", +function(){ +this.getContentPane().removeAll(); +this.getContentPane().add(this.mainSplitPane); +this.pack(); +}); +Clazz.defineMethod(c$, "getDataTable", +function(data, columnNames, columnWidths, height){ +this.selectedRow = -1; +var tableModel = new JSV.js2d.DialogTableModel(columnNames, data, !this.haveColors, this.tableCellAlignLeft); +var table = new JS.JTable(tableModel); +var selector = table.getSelectionModel(); +selector.addListSelectionListener(this.manager); +this.manager.registerSelector(this.registryKey + "/ROW", selector); +selector = table.getColumnModel().getSelectionModel(); +selector.addListSelectionListener(this.manager); +this.manager.registerSelector(this.registryKey + "/COLUMN", selector); +var n = 0; +for (var i = 0; i < columnNames.length; i++) { +table.getColumnModel().getColumn(i).setPreferredWidth(columnWidths[i]); +n += columnWidths[i]; +} +return table; +}, "~A,~A,~A,~N"); +Clazz.overrideMethod(c$, "getSelectedIndex", +function(c){ +return (c).getSelectedIndex(); +}, "~O"); +Clazz.overrideMethod(c$, "getSelectedItem", +function(combo){ +return (combo).getSelectedItem(); +}, "~O"); +Clazz.defineMethod(c$, "getText", +function(o){ +return (o).getText(); +}, "~O"); +Clazz.overrideMethod(c$, "isSelected", +function(chkbox){ +return (chkbox).isSelected(); +}, "~O"); +Clazz.overrideMethod(c$, "selectTableRow", +function(i){ +this.selectedRow = i; +this.dataTable.clearSelection(); +if (this.selectedRow >= 0) { +this.dataTable.setRowSelectionAllowed(true); +this.dataTable.setRowSelectionInterval(this.selectedRow, this.selectedRow + 1); +this.repaint(); +}}, "~N"); +Clazz.overrideMethod(c$, "setCellSelectionEnabled", +function(enabled){ +this.dataTable.setCellSelectionEnabled(enabled); +}, "~B"); +Clazz.defineMethod(c$, "setEnabled", +function(btn, b){ +(btn).setEnabled(b); +}, "~O,~B"); +Clazz.overrideMethod(c$, "setIntLocation", +function(loc){ +var d = new JS.Dimension(0, 0); +{ +SwingController.getScreenDimensions(d); +}loc[0] = Math.min(d.width - 50, loc[0]); +loc[1] = Math.min(d.height - 50, loc[1]); +this.setLocation(loc); +}, "~A"); +Clazz.defineMethod(c$, "setPreferredSize", +function(width, height){ +this.setPreferredSize( new JS.Dimension(width, height)); +}, "~N,~N"); +Clazz.overrideMethod(c$, "setSelected", +function(chkbox, b){ +(chkbox).setSelected(b); +}, "~O,~B"); +Clazz.overrideMethod(c$, "setSelectedIndex", +function(combo, i){ +(combo).setSelectedIndex(i); +}, "~O,~N"); +Clazz.defineMethod(c$, "setText", +function(o, text){ +(o).setText(text); +}, "~O,~S"); +Clazz.overrideMethod(c$, "startLayout", +function(){ +this.setPreferredSize( new JS.Dimension(600, 370)); +this.getContentPane().removeAll(); +this.thisPanel = this.rightPanel = new JS.JPanel( new JS.FlowLayout()); +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +case JSV.common.Annotation.AType.Measurements: +case JSV.common.Annotation.AType.PeakList: +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.OverlayLegend: +this.tableCellAlignLeft = true; +this.haveColors = true; +this.haveTwoPanels = false; +break; +case JSV.common.Annotation.AType.Views: +this.rightPanel = new JS.JPanel( new JS.GridBagLayout()); +} +if (this.haveTwoPanels) { +this.thisPanel = this.leftPanel = new JS.JPanel( new JS.GridBagLayout()); +this.leftPanel.setMinimumSize( new JS.Dimension(200, 300)); +this.mainSplitPane = new JS.JSplitPane(1); +this.mainSplitPane.setLeftComponent(this.leftPanel); +this.mainSplitPane.setRightComponent( new JS.JScrollPane(this.rightPanel)); +}}); +Clazz.defineMethod(c$, "getColumnCentering", +function(column){ +return this.tableCellAlignLeft ? 2 : column == 0 ? 0 : 4; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsDialogManager.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsDialogManager.js new file mode 100755 index 000000000000..e6053e8f335b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsDialogManager.js @@ -0,0 +1,75 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["JSV.dialog.DialogManager"], "JSV.js2d.JsDialogManager", ["JU.PT", "JSV.js2d.DialogTableModel", "$.JsDialog", "JS.Dimension", "$.JDialog", "$.JEditorPane", "$.JLabel", "$.JScrollPane", "$.JTable"], function(){ +var c$ = Clazz.declareType(JSV.js2d, "JsDialogManager", JSV.dialog.DialogManager); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.js2d.JsDialogManager, []); +}); +Clazz.overrideMethod(c$, "getDialog", +function(jsvDialog){ +return new JSV.js2d.JsDialog(this, jsvDialog, this.registerDialog(jsvDialog)); +}, "JSV.dialog.JSVDialog"); +Clazz.overrideMethod(c$, "getDialogInput", +function(parentComponent, phrase, title, msgType, icon, objects, defaultStr){ +{ +return prompt(phrase, defaultStr); +}}, "~O,~S,~S,~N,~O,~A,~S"); +Clazz.overrideMethod(c$, "showMessageDialog", +function(parentComponent, msg, title, msgType){ +{ +alert(msg); +}}, "~O,~S,~S,~N"); +Clazz.overrideMethod(c$, "getLocationOnScreen", +function(component){ +return Clazz.newIntArray (2, 0); +}, "~O"); +Clazz.overrideMethod(c$, "getOptionFromDialog", +function(frame, items, jsvp, dialogName, labelName){ +return this.vwr.html5Applet.getOption(items, dialogName, labelName); +}, "~O,~A,JSV.api.JSVPanel,~S,~S"); +Clazz.overrideMethod(c$, "showProperties", +function(frame, spectrum){ +var dialog = new JS.JDialog(); +dialog.setTitle("Header Information"); +var rowData = spectrum.getHeaderRowDataAsArray(); +var columnNames = Clazz.newArray(-1, ["Label", "Description"]); +var tableModel = new JSV.js2d.DialogTableModel(columnNames, rowData, false, true); +var table = new JS.JTable(tableModel); +table.setPreferredScrollableViewportSize( new JS.Dimension(400, 195)); +var scrollPane = new JS.JScrollPane(table); +dialog.getContentPane().add(scrollPane); +dialog.pack(); +dialog.setVisible(true); +dialog.toFront(); +}, "~O,JSV.common.Spectrum"); +Clazz.overrideMethod(c$, "showMessage", +function(frame, text, title){ +var dialog = new JS.JDialog(); +{ +dialog.manager = this; +}dialog.setTitle(title); +var pane; +if (text.indexOf("
") >= 0) { +pane = new JS.JLabel(text); +} else { +pane = new JS.JEditorPane(); +pane.setText(text); +}dialog.getContentPane().add(pane); +dialog.pack(); +dialog.setVisible(true); +dialog.toFront(); +}, "~O,~S,~S"); +Clazz.defineMethod(c$, "actionPerformed", +function(eventId){ +var pt = eventId.indexOf("/JT"); +if (pt >= 0) { +var pt2 = eventId.lastIndexOf("_"); +var pt1 = eventId.lastIndexOf("_", pt2 - 1); +var irow = JU.PT.parseInt(eventId.substring(pt1 + 1, pt2)); +var icol = JU.PT.parseInt(eventId.substring(pt2 + 1)); +this.processTableEvent(eventId.substring(0, pt) + "/ROWCOL", irow, icol, false); +return; +}this.processClick(eventId); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFile.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFile.js new file mode 100755 index 000000000000..07df3f73c3c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFile.js @@ -0,0 +1,56 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["J.api.GenericFileInterface"], "JSV.js2d.JsFile", ["JU.PT", "JSV.common.JSVFileManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.name = null; +this.fullName = null; +Clazz.instantialize(this, arguments);}, JSV.js2d, "JsFile", null, J.api.GenericFileInterface); +Clazz.makeConstructor(c$, +function(name){ +this.name = name.$replace('\\', '/'); +this.fullName = name; +if (!this.fullName.startsWith("/") && JSV.common.JSVFileManager.urlTypeIndex(name) < 0) this.fullName = JSV.common.JSVFileManager.jsDocumentBase + "/" + this.fullName; +this.fullName = JU.PT.rep(this.fullName, "/./", "/"); +name = name.substring(name.lastIndexOf("/") + 1); +}, "~S"); +c$.newFile = Clazz.defineMethod(c$, "newFile", +function(name){ +return new JSV.js2d.JsFile(name); +}, "~S"); +Clazz.overrideMethod(c$, "getParentAsFile", +function(){ +var pt = this.fullName.lastIndexOf("/"); +return (pt < 0 ? null : new JSV.js2d.JsFile(this.fullName.substring(0, pt))); +}); +Clazz.overrideMethod(c$, "getFullPath", +function(){ +return this.fullName; +}); +Clazz.overrideMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz.overrideMethod(c$, "isDirectory", +function(){ +return this.fullName.endsWith("/"); +}); +Clazz.overrideMethod(c$, "length", +function(){ +return 0; +}); +c$.getURLContents = Clazz.defineMethod(c$, "getURLContents", +function(url, outputBytes, post){ +try { +var conn = url.openConnection(); +if (outputBytes != null) conn.outputBytes(outputBytes); + else if (post != null) conn.outputString(post); +return conn.getContents(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return e.toString(); +} else { +throw e; +} +} +}, "java.net.URL,~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFileHelper.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFileHelper.js new file mode 100755 index 000000000000..53373edc0e9a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFileHelper.js @@ -0,0 +1,51 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["JSV.api.JSVFileHelper"], "JSV.js2d.JsFileHelper", ["JU.PT", "JSV.common.JSViewer", "JSV.js2d.JsFile"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +Clazz.instantialize(this, arguments);}, JSV.js2d, "JsFileHelper", null, JSV.api.JSVFileHelper); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "set", +function(viewer){ +this.vwr = viewer; +return this; +}, "JSV.common.JSViewer"); +Clazz.overrideMethod(c$, "getFile", +function(fileName, panelOrFrame, isSave){ +var f = null; +fileName = JU.PT.rep(fileName, "=", "_"); +{ +f = prompt("Enter a file name:", fileName); +}return (f == null ? null : new JSV.js2d.JsFile(f)); +}, "~S,~O,~B"); +Clazz.overrideMethod(c$, "setDirLastExported", +function(name){ +return name; +}, "~S"); +Clazz.overrideMethod(c$, "setFileChooser", +function(pdf){ +}, "JSV.common.ExportType"); +Clazz.overrideMethod(c$, "showFileOpenDialog", +function(panelOrFrame, userData){ +JSV.common.JSViewer.jmolObject.loadFileAsynchronously(this, this.vwr.html5Applet, "?", userData); +return null; +}, "~O,~A"); +Clazz.defineMethod(c$, "setData", +function(fileName, data, userInfo){ +if (fileName == null) return; +if (data == null) { +this.vwr.selectedPanel.showMessage(fileName, "File Open Error"); +return; +}var script = (userInfo == null ? null : ""); +var isAppend = false; +{ +isAppend = userInfo[0]; +script = userInfo[1]; +}this.vwr.si.siOpenDataOrFile( String.instantialize(data), "cache://" + fileName, null, null, -1, -1, isAppend, null, null); +if (script != null) this.vwr.runScript(script); +}, "~S,~O,~A"); +Clazz.overrideMethod(c$, "getUrlFromDialog", +function(info, msg){ +{ +return prompt(info, msg); +}}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFont.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFont.js new file mode 100755 index 000000000000..a526df148df8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsFont.js @@ -0,0 +1,39 @@ +Clazz.declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz.declareType(JSV.js2d, "JsFont", null); +c$.newFont = Clazz.defineMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize, type){ +fontFace = (fontFace.equals("Monospaced") ? "Courier" : fontFace.startsWith("Sans") ? "Sans-Serif" : "Serif"); +return (isBold ? "bold " : "") + (isItalic ? "italic " : "") + fontSize + type + " " + fontFace; +}, "~S,~B,~B,~N,~S"); +c$.getFontMetrics = Clazz.defineMethod(c$, "getFontMetrics", +function(font, context){ +{ +if (context.font != font.font) { +context.font = font.font; +font.font = context.font; +context._fontAscent = Math.ceil(font.fontSize); //pt, not px +// the descent is actually (px - pt) +// but I know of no way of getting access to the drawn height +context._fontDescent = Math.ceil(font.fontSize * 0.25);//approx +} +}return context; +}, "JU.Font,~O"); +c$.getAscent = Clazz.defineMethod(c$, "getAscent", +function(context){ +{ +return Math.ceil(context._fontAscent); +}}, "~O"); +c$.getDescent = Clazz.defineMethod(c$, "getDescent", +function(context){ +{ +return Math.ceil(context._fontDescent); +}}, "~O"); +c$.stringWidth = Clazz.defineMethod(c$, "stringWidth", +function(font, text){ +{ +font.fontMetrics.font = font.font; +return Math.ceil(font.fontMetrics.measureText(text).width); +}}, "JU.Font,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsG2D.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsG2D.js new file mode 100755 index 000000000000..973f33561d4d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsG2D.js @@ -0,0 +1,180 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["J.api.GenericGraphics"], "JSV.js2d.JsG2D", ["JU.CU", "JSV.common.JSViewer", "JS.Color"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.windowWidth = 0; +this.windowHeight = 0; +this.isShifted = false; +this.inPath = false; +Clazz.instantialize(this, arguments);}, JSV.js2d, "JsG2D", null, J.api.GenericGraphics); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "getColor4", +function(r, g, b, a){ +return JS.Color.get4(r, g, b, a); +}, "~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "getColor3", +function(r, g, b){ +return JS.Color.get3(r, g, b); +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "getColor1", +function(rgb){ +return JS.Color.get1(rgb); +}, "~N"); +Clazz.overrideMethod(c$, "newGrayScaleImage", +function(context, image, width, height, grayBuffer){ +return JSV.common.JSViewer.jmolObject.newGrayScaleImage(context, image, width, height, grayBuffer); +}, "~O,~O,~N,~N,~A"); +Clazz.overrideMethod(c$, "drawGrayScaleImage", +function(g, image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1){ +var iw; +var ih; +{ +iw = image.w; +ih = image.h; +}var dw = (destX1 - destX0 + 1); +var dh = (destY1 - destY0 + 1); +var sw = (srcX1 - srcX0 + 1); +var sh = (srcY1 - srcY0 + 1); +var x = -srcX0 * dw / sw; +var w = iw * dw / sw; +var y = -srcY0 * dh / sh; +var h = ih * dh / sh; +{ +image.width = w; +image.height = h; +var div = image.div; +var layer = image.layer; +layer.style.left = destX0 + "px"; +layer.style.top = destY0 + "px"; +layer.style.width = dw + "px"; +layer.style.height = dh+ "px"; +div.style.left= x + "px"; +div.style.top = y + "px"; +div.style.width = w + "px"; +div.style.height = h + "px"; +}}, "~O,~O,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawLine", +function(g, x0, y0, x1, y1){ +var inPath = this.inPath; +{ +if (!inPath) g.beginPath(); +g.moveTo(x0, y0); +g.lineTo(x1, y1); +if (!inPath) g.stroke(); +}}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawCircle", +function(g, x, y, diameter){ +{ +var r = diameter/2; +g.beginPath(); +g.arc(x + r, y + r, r, 0, 2 * Math.PI, false); +g.stroke(); +}}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.doPoly(g, ayPoints, axPoints, nPoints, false); +}, "~O,~A,~A,~N"); +Clazz.defineMethod(c$, "doPoly", +function(g, axPoints, ayPoints, nPoints, doFill){ +{ +g.beginPath(); +g.moveTo(axPoints[0], ayPoints[0]); +for (var i = 1; i < nPoints; i++) +g.lineTo(axPoints[i], ayPoints[i]); +if (doFill) +g.fill(); +else +g.stroke(); +}}, "~O,~A,~A,~N,~B"); +Clazz.overrideMethod(c$, "drawRect", +function(g, x, y, width, height){ +{ +g.beginPath(); +g.rect(x ,y, width, height); +g.stroke(); +}}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "drawString", +function(g, s, x, y){ +{ +g.fillText(s,x,y); +}}, "~O,~S,~N,~N"); +Clazz.overrideMethod(c$, "drawStringRotated", +function(g, s, x, y, angle){ +}, "~O,~S,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillBackground", +function(g, bgcolor){ +if (bgcolor == null) { +{ +if (!this.isShifted) { +g.translate(-0.5, -0.5); +this.isShifted = true; +} +g.clearRect(0,0, this.windowWidth, this.windowHeight); +return; +}}this.setGraphicsColor(g, bgcolor); +this.fillRect(g, 0, 0, this.windowWidth, this.windowHeight); +}, "~O,javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "fillCircle", +function(g, x, y, diameter){ +{ +var r = diameter/2; +g.beginPath(); +g.arc(x + r, y + r, r, 0, 2 * Math.PI, false); +g.fill(); +}}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "fillPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.doPoly(g, ayPoints, axPoints, nPoints, true); +}, "~O,~A,~A,~N"); +Clazz.overrideMethod(c$, "fillRect", +function(g, x, y, width, height){ +{ +g.fillRect(x, y, width, height); +}}, "~O,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "setGraphicsColor", +function(g, c){ +var s = JU.CU.toCSSString(c); +{ +g.fillStyle = g.strokeStyle = s; +}}, "~O,javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "setFont", +function(g, font){ +var s = font.getInfo(); +var pt = s.indexOf(" "); +s = s.substring(0, pt) + "px" + s.substring(pt); +{ +g.font = s; +}return font; +}, "~O,JU.Font"); +Clazz.overrideMethod(c$, "setStrokeBold", +function(g, tf){ +{ +g.lineWidth = (tf ? 2 : 1); +}}, "~O,~B"); +Clazz.overrideMethod(c$, "setWindowParameters", +function(width, height){ +this.windowWidth = width; +this.windowHeight = height; +}, "~N,~N"); +Clazz.overrideMethod(c$, "translateScale", +function(g, x, y, scale){ +}, "~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "canDoLineTo", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "doStroke", +function(g, isBegin){ +this.inPath = isBegin; +{ +if (isBegin) { +g.beginPath(); +} else { +g.stroke(); +} +}}, "~O,~B"); +Clazz.overrideMethod(c$, "lineTo", +function(g, x2, y2){ +{ +g.lineTo(x2, y2); +}}, "~O,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsMainPanel.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsMainPanel.js new file mode 100755 index 000000000000..86509bc50083 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsMainPanel.js @@ -0,0 +1,62 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["JSV.api.JSVMainPanel"], "JSV.js2d.JsMainPanel", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.selectedPanel = null; +this.currentPanelIndex = 0; +this.title = null; +this.visible = false; +this.focusable = false; +this.enabled = false; +Clazz.instantialize(this, arguments);}, JSV.js2d, "JsMainPanel", null, JSV.api.JSVMainPanel); +Clazz.overrideMethod(c$, "getCurrentPanelIndex", +function(){ +return this.currentPanelIndex; +}); +Clazz.overrideMethod(c$, "dispose", +function(){ +}); +Clazz.overrideMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz.overrideMethod(c$, "setTitle", +function(title){ +this.title = title; +}, "~S"); +Clazz.overrideMethod(c$, "setSelectedPanel", +function(viewer, jsvp, panelNodes){ +if (jsvp !== this.selectedPanel) this.selectedPanel = jsvp; +var i = viewer.selectPanel(jsvp, panelNodes); +if (i >= 0) this.currentPanelIndex = i; +this.visible = true; +}, "JSV.common.JSViewer,JSV.api.JSVPanel,JU.Lst"); +Clazz.defineMethod(c$, "getHeight", +function(){ +return (this.selectedPanel == null ? 0 : this.selectedPanel.getHeight()); +}); +Clazz.defineMethod(c$, "getWidth", +function(){ +return (this.selectedPanel == null ? 0 : this.selectedPanel.getWidth()); +}); +Clazz.overrideMethod(c$, "isEnabled", +function(){ +return this.enabled; +}); +Clazz.overrideMethod(c$, "isFocusable", +function(){ +return this.focusable; +}); +Clazz.overrideMethod(c$, "isVisible", +function(){ +return this.visible; +}); +Clazz.overrideMethod(c$, "setEnabled", +function(b){ +this.enabled = b; +}, "~B"); +Clazz.overrideMethod(c$, "setFocusable", +function(b){ +this.focusable = b; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPanel.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPanel.js new file mode 100755 index 000000000000..4734d0f8a62a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPanel.js @@ -0,0 +1,197 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["JSV.api.JSVPanel"], "JSV.js2d.JsPanel", ["JSV.common.JSViewer", "$.PanelData", "JU.Font", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.apiPlatform = null; +this.pd = null; +this.mouse = null; +this.vwr = null; +this.name = null; +this.bgcolor = null; +Clazz.instantialize(this, arguments);}, JSV.js2d, "JsPanel", null, JSV.api.JSVPanel); +Clazz.makeConstructor(c$, +function(viewer, withPd){ +this.vwr = viewer; +this.pd = (withPd ? new JSV.common.PanelData(this, viewer) : null); +this.apiPlatform = viewer.apiPlatform; +this.mouse = this.apiPlatform.getMouseManager(0, this); +}, "JSV.common.JSViewer,~B"); +Clazz.overrideMethod(c$, "getApiPlatform", +function(){ +return this.apiPlatform; +}); +Clazz.overrideMethod(c$, "getPanelData", +function(){ +return this.pd; +}); +c$.getEmptyPanel = Clazz.defineMethod(c$, "getEmptyPanel", +function(viewer){ +var p = new JSV.js2d.JsPanel(viewer, false); +p.pd = null; +return p; +}, "JSV.common.JSViewer"); +c$.getPanelMany = Clazz.defineMethod(c$, "getPanelMany", +function(viewer, spectra){ +var p = new JSV.js2d.JsPanel(viewer, true); +p.pd.initMany(spectra, viewer.initialStartIndex, viewer.initialEndIndex); +return p; +}, "JSV.common.JSViewer,JU.Lst"); +Clazz.overrideMethod(c$, "getTitle", +function(){ +return this.pd.getTitle(); +}); +Clazz.overrideMethod(c$, "dispose", +function(){ +if (this.pd != null) this.pd.dispose(); +this.pd = null; +this.mouse.dispose(); +this.mouse = null; +}); +Clazz.overrideMethod(c$, "setTitle", +function(title){ +this.pd.title = title; +this.name = title; +}, "~S"); +Clazz.defineMethod(c$, "setColorOrFont", +function(ds, st){ +this.pd.setColorOrFont(ds, st); +}, "JSV.common.ColorParameters,JSV.common.ScriptToken"); +Clazz.overrideMethod(c$, "setBackgroundColor", +function(color){ +this.bgcolor = color; +}, "javajs.api.GenericColor"); +Clazz.overrideMethod(c$, "getInput", +function(message, title, sval){ +var ret = null; +{ +ret = prompt(message, sval); +}this.getFocusNow(true); +return ret; +}, "~S,~S,~S"); +Clazz.overrideMethod(c$, "showMessage", +function(msg, title){ +JU.Logger.info(msg); +var applet = this.vwr.html5Applet; +{ +applet._showStatus(msg, title); +}this.getFocusNow(true); +}, "~S,~S"); +Clazz.overrideMethod(c$, "getFocusNow", +function(asThread){ +if (this.pd != null) this.pd.dialogsToFront(null); +}, "~B"); +Clazz.overrideMethod(c$, "getFontFaceID", +function(name){ +return JU.Font.getFontFaceID("SansSerif"); +}, "~S"); +Clazz.overrideMethod(c$, "doRepaint", +function(andTaintAll){ +if (this.pd == null) return; +if (andTaintAll) this.pd.setTaintedAll(); +if (!this.pd.isPrinting) this.vwr.requestRepaint(); +}, "~B"); +Clazz.overrideMethod(c$, "paintComponent", +function(context){ +var contextFront = null; +var contextRear = null; +{ +contextFront = context.canvas.frontLayer.getContext("2d"); +contextRear = context; +}if (this.vwr == null) return; +if (this.pd == null) { +if (this.bgcolor == null) this.bgcolor = this.vwr.g2d.getColor1(-1); +this.vwr.g2d.fillBackground(context, this.bgcolor); +this.vwr.g2d.fillBackground(contextRear, this.bgcolor); +this.vwr.g2d.fillBackground(contextFront, this.bgcolor); +return; +}if (this.pd.graphSets == null || this.pd.isPrinting) return; +this.pd.g2d = this.pd.g2d0; +this.pd.drawGraph(context, contextFront, contextRear, this.getWidth(), this.getHeight(), false); +this.vwr.repaintDone(); +}, "~O"); +Clazz.overrideMethod(c$, "printPanel", +function(pl, os, title){ +pl.title = title; +pl.date = this.apiPlatform.getDateFormat("8824"); +this.pd.setPrint(pl, "Helvetica"); +try { +(JSV.common.JSViewer.getInterface("JSV.common.PDFWriter")).createPdfDocument(this, pl, os); +} catch (ex) { +if (Clazz.exceptionOf(ex, Exception)){ +this.showMessage(ex.toString(), "creating PDF"); +} else { +throw ex; +} +} finally { +this.pd.setPrint(null, null); +} +}, "JSV.common.PrintLayout,java.io.OutputStream,~S"); +Clazz.overrideMethod(c$, "saveImage", +function(type, file, out){ +var fname = file.getName(); +if (out != null) out.cancel(); +JSV.common.JSViewer.jmolObject.saveImage(this.vwr.html5Applet, "png", fname); +return "OK"; +}, "~S,J.api.GenericFileInterface,JU.OC"); +Clazz.overrideMethod(c$, "hasFocus", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "repaint", +function(){ +}); +Clazz.overrideMethod(c$, "setToolTipText", +function(s){ +var x = this.pd.mouseX; +var y = this.pd.mouseY; +var applet = this.vwr.html5Applet; +{ +applet._showTooltip && applet._showTooltip(s, x, y); +}}, "~S"); +Clazz.overrideMethod(c$, "getHeight", +function(){ +return this.vwr.getHeight(); +}); +Clazz.overrideMethod(c$, "getWidth", +function(){ +return this.vwr.getWidth(); +}); +Clazz.overrideMethod(c$, "isEnabled", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "isFocusable", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "isVisible", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "setEnabled", +function(b){ +}, "~B"); +Clazz.overrideMethod(c$, "setFocusable", +function(b){ +}, "~B"); +Clazz.overrideMethod(c$, "toString", +function(){ +return (this.pd == null ? "" : "" + this.pd.getSpectrumAt(0)); +}); +Clazz.overrideMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.mouse != null && this.mouse.processEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz.overrideMethod(c$, "processTwoPointGesture", +function(touches){ +if (this.mouse != null) this.mouse.processTwoPointGesture(touches); +}, "~A"); +Clazz.overrideMethod(c$, "processKeyEvent", +function(event){ +if (this.mouse != null) this.mouse.processKeyEvent(event); +}, "~O"); +Clazz.overrideMethod(c$, "showMenu", +function(x, y){ +this.vwr.showMenu(x, y); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsParameters.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsParameters.js new file mode 100755 index 000000000000..f3eec746dee7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsParameters.js @@ -0,0 +1,25 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["JSV.common.ColorParameters"], "JSV.js2d.JsParameters", ["JS.Color"], function(){ +var c$ = Clazz.declareType(JSV.js2d, "JsParameters", JSV.common.ColorParameters); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.js2d.JsParameters, []); +}); +Clazz.overrideMethod(c$, "isValidFontName", +function(name){ +return true; +}, "~S"); +Clazz.overrideMethod(c$, "getColor1", +function(rgb){ +return JS.Color.get1(rgb); +}, "~N"); +Clazz.overrideMethod(c$, "getColor3", +function(r, g, b){ +return JS.Color.get3(r, g, b); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "copy", +function(newName){ +return ( new JSV.js2d.JsParameters().setName(newName)).setElementColors(this); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPlatform.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPlatform.js new file mode 100755 index 000000000000..27cae4cf4fa6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPlatform.js @@ -0,0 +1,240 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["J.api.GenericPlatform"], "JSV.js2d.JsPlatform", ["java.net.URL", "JU.AjaxURLStreamHandlerFactory", "$.Rdr", "JSV.app.GenericMouse", "JSV.js2d.Display", "$.Image", "$.JsFile", "$.JsFont"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.canvas = null; +this.viewer = null; +this.context = null; +Clazz.instantialize(this, arguments);}, JSV.js2d, "JsPlatform", null, J.api.GenericPlatform); +Clazz.overrideMethod(c$, "setViewer", +function(viewer, canvas){ +var context = ""; +this.viewer = viewer; +this.canvas = canvas; +{ +if (canvas != null) { +context = canvas.getContext("2d"); +canvas.imgdata = context.getImageData(0, 0, canvas.width, canvas.height); +canvas.buf8 = canvas.imgdata.data; +} +}if (context !== "") this.context = context; +try { +java.net.URL.setURLStreamHandlerFactory( new JU.AjaxURLStreamHandlerFactory()); +} catch (e) { +} +}, "J.api.PlatformViewer,~O"); +Clazz.overrideMethod(c$, "isSingleThreaded", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "getJsObjectInfo", +function(jsObject, method, args){ +{ +return (method == null ? null : method == "localName" ? jsObject[0]["nodeName"] : args == null ? jsObject[0][method] : jsObject[0][method](args[0])); +}}, "~A,~S,~A"); +Clazz.overrideMethod(c$, "isHeadless", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "getMouseManager", +function(privateKey, jsvp){ +return new JSV.app.GenericMouse(jsvp); +}, "~N,~O"); +Clazz.overrideMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +JSV.js2d.Display.convertPointFromScreen(canvas, ptTemp); +}, "~O,JU.P3"); +Clazz.overrideMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +JSV.js2d.Display.getFullScreenDimensions(canvas, widthHeight); +}, "~O,~A"); +Clazz.overrideMethod(c$, "getMenuPopup", +function(menuStructure, type){ +return null; +}, "~S,~S"); +Clazz.overrideMethod(c$, "hasFocus", +function(canvas){ +return JSV.js2d.Display.hasFocus(canvas); +}, "~O"); +Clazz.overrideMethod(c$, "prompt", +function(label, data, list, asButtons){ +return JSV.js2d.Display.prompt(label, data, list, asButtons); +}, "~S,~S,~A,~B"); +Clazz.overrideMethod(c$, "renderScreenImage", +function(context, size){ +JSV.js2d.Display.renderScreenImage(this.viewer, context, size); +}, "~O,~O"); +Clazz.overrideMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +JSV.js2d.Image.drawImage(context, canvas, x, y, width, height); +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz.overrideMethod(c$, "requestFocusInWindow", +function(canvas){ +JSV.js2d.Display.requestFocusInWindow(canvas); +}, "~O"); +Clazz.overrideMethod(c$, "repaint", +function(canvas){ +JSV.js2d.Display.repaint(canvas); +}, "~O"); +Clazz.overrideMethod(c$, "setTransparentCursor", +function(canvas){ +JSV.js2d.Display.setTransparentCursor(canvas); +}, "~O"); +Clazz.overrideMethod(c$, "setCursor", +function(c, canvas){ +JSV.js2d.Display.setCursor(c, canvas); +}, "~N,~O"); +Clazz.overrideMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, isImageWrite){ +return JSV.js2d.Image.allocateRgbImage(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, (isImageWrite ? null : this.canvas)); +}, "~N,~N,~A,~N,~B,~B"); +Clazz.overrideMethod(c$, "notifyEndOfRendering", +function(){ +}); +Clazz.overrideMethod(c$, "createImage", +function(data){ +return null; +}, "~O"); +Clazz.overrideMethod(c$, "disposeGraphics", +function(gOffscreen){ +}, "~O"); +Clazz.overrideMethod(c$, "grabPixels", +function(canvas, width, height, pixels){ +{ +if (canvas.image && (width != canvas.width || height != canvas.height)) +Jmol._setCanvasImage(canvas, width, height); +if (canvas.buf32) return canvas.buf32; +}var buf = JSV.js2d.Image.grabPixels(JSV.js2d.Image.getGraphics(canvas), width, height); +{ +canvas.buf32 = buf; +}return buf; +}, "~O,~N,~N,~A"); +Clazz.overrideMethod(c$, "drawImageToBuffer", +function(gOffscreen, imageOffscreen, canvas, width, height, bgcolor){ +return this.grabPixels(canvas, width, height, null); +}, "~O,~O,~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "getTextPixels", +function(text, font3d, context, image, width, height, ascent){ +return JSV.js2d.Image.getTextPixels(text, font3d, context, width, height, ascent); +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz.overrideMethod(c$, "flushImage", +function(imagePixelBuffer){ +}, "~O"); +Clazz.overrideMethod(c$, "getGraphics", +function(canvas){ +return (canvas == null ? this.context : (this.context = JSV.js2d.Image.getGraphics(this.canvas = canvas))); +}, "~O"); +Clazz.overrideMethod(c$, "getImageHeight", +function(canvas){ +return (canvas == null ? -1 : JSV.js2d.Image.getHeight(canvas)); +}, "~O"); +Clazz.overrideMethod(c$, "getImageWidth", +function(canvas){ +return (canvas == null ? -1 : JSV.js2d.Image.getWidth(canvas)); +}, "~O"); +Clazz.overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return JSV.js2d.Image.getStaticGraphics(image, backgroundTransparent); +}, "~O,~B"); +Clazz.overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +{ +if (self.Jmol && Jmol._getHiddenCanvas) +return Jmol._getHiddenCanvas(this.vwr.html5Applet, "stereoImage", w, h); +}return null; +}, "~O,~N,~N"); +Clazz.overrideMethod(c$, "newOffScreenImage", +function(w, h){ +{ +if (self.Jmol && Jmol._getHiddenCanvas) +return Jmol._getHiddenCanvas(this.vwr.html5Applet, "textImage", w, h); +}return null; +}, "~N,~N"); +Clazz.overrideMethod(c$, "waitForDisplay", +function(echoNameAndPath, zipBytes){ +return false; +}, "~O,~O"); +Clazz.overrideMethod(c$, "fontStringWidth", +function(font, text){ +return JSV.js2d.JsFont.stringWidth(font, text); +}, "JU.Font,~S"); +Clazz.overrideMethod(c$, "getFontAscent", +function(context){ +return JSV.js2d.JsFont.getAscent(context); +}, "~O"); +Clazz.overrideMethod(c$, "getFontDescent", +function(context){ +return JSV.js2d.JsFont.getDescent(context); +}, "~O"); +Clazz.overrideMethod(c$, "getFontMetrics", +function(font, context){ +return JSV.js2d.JsFont.getFontMetrics(font, context); +}, "JU.Font,~O"); +Clazz.overrideMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize){ +return JSV.js2d.JsFont.newFont(fontFace, isBold, isItalic, fontSize, "px"); +}, "~S,~B,~B,~N"); +Clazz.overrideMethod(c$, "getDateFormat", +function(isoType){ +{ +if (isoType == null) { +} else if (isoType.indexOf("8824") >= 0) { +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + d.getMonth(); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} else if (isoType.indexOf("8601") >= 0){ +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + d.getMonth(); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} +return ("" + (new Date())).split(" (")[0]; +}}, "~S"); +Clazz.overrideMethod(c$, "newFile", +function(name){ +return new JSV.js2d.JsFile(name); +}, "~S"); +Clazz.overrideMethod(c$, "getBufferedFileInputStream", +function(name){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "getURLContents", +function(url, outputBytes, post, asString){ +var ret = JSV.js2d.JsFile.getURLContents(url, outputBytes, post); +try { +return (!asString ? ret : (typeof(ret)=='string') ? ret : Clazz.instanceOf(ret,"JU.SB") ? (ret).toString() : Clazz.instanceOf(ret,Array) ? String.instantialize(ret) : String.instantialize(JU.Rdr.getStreamAsBytes(ret, null))); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return "" + e; +} else { +throw e; +} +} +}, "java.net.URL,~A,~S,~B"); +Clazz.overrideMethod(c$, "getLocalUrl", +function(fileName){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "getImageDialog", +function(title, imageMap){ +return null; +}, "~S,java.util.Map"); +Clazz.overrideMethod(c$, "forceAsyncLoad", +function(filename){ +return false; +}, "~S"); +Clazz.overrideMethod(c$, "getInChI", +function(){ +return null; +}); +Clazz.overrideMethod(c$, "confirm", +function(msg, msgNo){ +var ok = false; +if (ok) return 0; +if (msgNo != null) ok = false; +return (ok ? 1 : 2); +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPopup.js b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPopup.js new file mode 100755 index 000000000000..875bd39669ff --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/js2d/JsPopup.js @@ -0,0 +1,33 @@ +Clazz.declarePackage("JSV.js2d"); +Clazz.load(["JSV.popup.JSVGenericPopup"], "JSV.js2d.JsPopup", ["JSV.popup.JSVPopupResourceBundle", "J.awtjs2d.JSPopupHelper"], function(){ +var c$ = Clazz.declareType(JSV.js2d, "JsPopup", JSV.popup.JSVGenericPopup); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.js2d.JsPopup, []); +this.helper = new J.awtjs2d.JSPopupHelper(this); +}); +Clazz.overrideMethod(c$, "jpiInitialize", +function(viewer, menu){ +var bundle = new JSV.popup.JSVPopupResourceBundle(); +this.initialize(viewer, bundle, menu); +}, "J.api.PlatformViewer,~S"); +Clazz.overrideMethod(c$, "menuShowPopup", +function(popup, x, y){ +try { +(popup).show(this.isTainted ? this.vwr.getApplet() : null, x, y); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "J.api.SC,~N,~N"); +Clazz.overrideMethod(c$, "getImageIcon", +function(fileName){ +return null; +}, "~S"); +Clazz.overrideMethod(c$, "menuFocusCallback", +function(name, actionCommand, b){ +}, "~S,~S,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/popup/JSVGenericPopup.js b/config/plugins/visualizations/jmol/static/j2s/JSV/popup/JSVGenericPopup.js new file mode 100755 index 000000000000..6478d11a0b5f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/popup/JSVGenericPopup.js @@ -0,0 +1,203 @@ +Clazz.declarePackage("JSV.popup"); +Clazz.load(["J.popup.GenericPopup"], "JSV.popup.JSVGenericPopup", ["JU.PT", "JSV.common.JSVersion", "$.JSViewer", "JSV.popup.JSVPopupResourceBundle"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.updateMode = 0; +this.cnmrPeaks = null; +this.hnmrPeaks = null; +this.aboutComputedMenuBaseCount = 0; +this.allowMenu = false; +this.zoomEnabled = false; +this.pd = null; +this.thisJsvp = null; +Clazz.instantialize(this, arguments);}, JSV.popup, "JSVGenericPopup", J.popup.GenericPopup); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.popup.JSVGenericPopup, []); +}); +Clazz.defineMethod(c$, "initialize", +function(viewer, bundle, title){ +this.vwr = viewer; +this.initSwing(title, bundle, viewer.getApplet(), JSV.common.JSViewer.isJS, viewer.isSigned, false); +}, "JSV.common.JSViewer,J.popup.PopupResource,~S"); +Clazz.defineMethod(c$, "jpiDispose", +function(){ +this.vwr = null; +Clazz.superCall(this, JSV.popup.JSVGenericPopup, "jpiDispose", []); +}); +Clazz.overrideMethod(c$, "jpiGetMenuAsObject", +function(){ +return this.popupMenu; +}); +Clazz.overrideMethod(c$, "jpiShow", +function(x, y){ +this.show(x, y, false); +this.appRestorePopupMenu(); +this.menuShowPopup(this.popupMenu, this.thisx, this.thisy); +}, "~N,~N"); +Clazz.overrideMethod(c$, "jpiUpdateComputedMenus", +function(){ +if (this.updateMode == -1) return; +this.updateMode = 0; +this.getViewerData(); +this.updateFileMenu(); +this.updateFileTypeDependentMenus(); +this.updateMode = 1; +this.updateAboutSubmenu(); +}); +Clazz.overrideMethod(c$, "appCheckItem", +function(item, newMenu){ +}, "~S,J.api.SC"); +Clazz.overrideMethod(c$, "appFixLabel", +function(label){ +if (label.startsWith("_")) label = label.substring(label.indexOf("_", 2) + 1); + else if (label.equals("VERSION")) label = JSV.common.JSVersion.VERSION; +label = JU.PT.rep(label, "JAVA", ""); +label = JU.PT.rep(label, "CB", ""); +label = JU.PT.rep(label, "Menu", ""); +label = JU.PT.rep(label, "_", " "); +return label; +}, "~S"); +Clazz.overrideMethod(c$, "getScriptForCallback", +function(source, id, script){ +return script; +}, "J.api.SC,~S,~S"); +Clazz.overrideMethod(c$, "appGetMenuAsString", +function(title){ +return ( new JSV.popup.JSVPopupResourceBundle()).getMenuAsText(title); +}, "~S"); +Clazz.overrideMethod(c$, "appGetBooleanProperty", +function(name){ +return false; +}, "~S"); +Clazz.overrideMethod(c$, "appRunSpecialCheckBox", +function(item, basename, what, TF){ +return false; +}, "J.api.SC,~S,~S,~B"); +Clazz.overrideMethod(c$, "appRestorePopupMenu", +function(){ +this.thisPopup = this.popupMenu; +}); +Clazz.overrideMethod(c$, "appRunScript", +function(script){ +this.vwr.runScript(script); +}, "~S"); +Clazz.overrideMethod(c$, "appUpdateForShow", +function(){ +this.thisJsvp = this.vwr.selectedPanel; +this.setEnables(this.thisJsvp); +if (this.updateMode == -1) return; +this.getViewerData(); +this.updateMode = 2; +this.updateSpectraMenu(); +this.updateAboutSubmenu(); +}); +Clazz.overrideMethod(c$, "appUpdateSpecialCheckBoxValue", +function(item, what, TF){ +}, "J.api.SC,~S,~B"); +Clazz.defineMethod(c$, "getViewerData", +function(){ +}); +Clazz.defineMethod(c$, "updateFileTypeDependentMenus", +function(){ +}); +Clazz.defineMethod(c$, "updateFileMenu", +function(){ +var menu = this.htMenus.get("fileMenu"); +if (menu == null) return; +}); +Clazz.defineMethod(c$, "updateSpectraMenu", +function(){ +var menuh = this.htMenus.get("hnmrMenu"); +var menuc = this.htMenus.get("cnmrMenu"); +if (menuh != null) this.menuRemoveAll(menuh, 0); +if (menuc != null) this.menuRemoveAll(menuc, 0); +var menu = this.htMenus.get("spectraMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +var isOK = new Boolean (this.setSpectraMenu(menuh, this.hnmrPeaks) | this.setSpectraMenu(menuc, this.cnmrPeaks)).valueOf(); +if (isOK) { +if (menuh != null) this.menuAddSubMenu(menu, menuh); +if (menuc != null) this.menuAddSubMenu(menu, menuc); +}this.menuEnable(menu, isOK); +}); +Clazz.defineMethod(c$, "setSpectraMenu", +function(menu, peaks){ +if (menu == null) return false; +this.menuEnable(menu, false); +var n = (peaks == null ? 0 : peaks.size()); +if (n == 0) return false; +for (var i = 0; i < n; i++) { +var peak = peaks.get(i); +var title = JU.PT.getQuotedAttribute(peak, "title"); +var atoms = JU.PT.getQuotedAttribute(peak, "atoms"); +if (atoms != null) this.menuCreateItem(menu, title, "select visible & (@" + JU.PT.rep(atoms, ",", " or @") + ")", "Focus" + i); +} +this.menuEnable(menu, true); +return true; +}, "J.api.SC,JU.Lst"); +Clazz.defineMethod(c$, "updateAboutSubmenu", +function(){ +var menu = this.htMenus.get("aboutComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, this.aboutComputedMenuBaseCount); +}); +Clazz.defineMethod(c$, "setEnabled", +function(allowMenu, zoomEnabled){ +this.allowMenu = allowMenu; +this.zoomEnabled = zoomEnabled; +this.enableMenus(); +}, "~B,~B"); +Clazz.defineMethod(c$, "enableMenus", +function(){ +this.setItemEnabled("_SIGNED_FileMenu", this.allowMenu); +this.setItemEnabled("ViewMenu", this.pd != null && this.allowMenu); +this.setItemEnabled("Open_File...", this.allowMenu); +this.setItemEnabled("Open_Simulation...", this.allowMenu); +this.setItemEnabled("Open_URL...", this.allowMenu); +this.setItemEnabled("Save_AsMenu", this.pd != null && this.allowMenu); +this.setItemEnabled("Export_AsMenu", this.pd != null && this.allowMenu); +this.setItemEnabled("Append_File...", this.pd != null && this.allowMenu); +this.setItemEnabled("Append_Simulation...", this.pd != null && this.allowMenu); +this.setItemEnabled("Append_URL...", this.pd != null && this.allowMenu); +this.setItemEnabled("Views...", this.pd != null && this.allowMenu); +this.setItemEnabled("Script", this.allowMenu); +this.setItemEnabled("Print...", this.pd != null && this.allowMenu); +this.setItemEnabled("ZoomMenu", this.pd != null && this.zoomEnabled); +}); +Clazz.defineMethod(c$, "setEnables", +function(jsvp){ +this.pd = (jsvp == null ? null : jsvp.getPanelData()); +var spec0 = (this.pd == null ? null : this.pd.getSpectrum()); +var isOverlaid = this.pd != null && this.pd.isShowAllStacked(); +var isSingle = this.pd != null && this.pd.haveSelectedSpectrum(); +this.setItemEnabled("Integration", this.pd != null && this.pd.getSpectrum().canIntegrate()); +this.setItemEnabled("Measurements", true); +this.setItemEnabled("Peaks", this.pd != null && this.pd.getSpectrum().is1D()); +this.setItemEnabled("Predicted_Solution_Colour_(fitted)", isSingle && spec0.canShowSolutionColor()); +this.setItemEnabled("Predicted_Solution_Colour_(interpolated)", isSingle && spec0.canShowSolutionColor()); +this.setItemEnabled("Toggle_Trans/Abs", isSingle && spec0.canConvertTransAbs()); +this.setItemEnabled("Show_Overlay_Key", isOverlaid && this.pd.getNumberOfGraphSets() == 1); +this.setItemEnabled("Overlay_Offset...", isOverlaid); +this.setItemEnabled("JDXMenu", this.pd != null && spec0.canSaveAsJDX()); +this.setItemEnabled("Export_AsMenu", this.pd != null); +this.enableMenus(); +}, "JSV.api.JSVPanel"); +Clazz.defineMethod(c$, "setItemEnabled", +function(key, TF){ +this.menuEnable(this.htMenus.get(key), TF); +}, "~S,~B"); +Clazz.defineMethod(c$, "setSelected", +function(key, TF){ +var item = this.htMenus.get(key); +if (item == null || item.isSelected() == TF) return; +this.menuEnable(item, false); +item.setSelected(TF); +this.menuEnable(item, true); +}, "~S,~B"); +Clazz.overrideMethod(c$, "getUnknownCheckBoxScriptToRun", +function(item, name, what, TF){ +return null; +}, "J.api.SC,~S,~S,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/popup/JSVPopupResourceBundle.js b/config/plugins/visualizations/jmol/static/j2s/JSV/popup/JSVPopupResourceBundle.js new file mode 100755 index 000000000000..1fb3cf66394a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/popup/JSVPopupResourceBundle.js @@ -0,0 +1,29 @@ +Clazz.declarePackage("JSV.popup"); +Clazz.load(["J.popup.PopupResource"], "JSV.popup.JSVPopupResourceBundle", null, function(){ +var c$ = Clazz.declareType(JSV.popup, "JSVPopupResourceBundle", J.popup.PopupResource); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, JSV.popup.JSVPopupResourceBundle, [null, null]); +}); +Clazz.overrideMethod(c$, "getMenuName", +function(){ +return "appMenu"; +}); +Clazz.overrideMethod(c$, "buildStructure", +function(menuStructure){ +this.addItems(JSV.popup.JSVPopupResourceBundle.menuContents); +this.addItems(JSV.popup.JSVPopupResourceBundle.structureContents); +if (menuStructure != null) this.setStructure(menuStructure, null); +}, "~S"); +Clazz.overrideMethod(c$, "getWordContents", +function(){ +return Clazz.newArray(-1, []); +}); +Clazz.overrideMethod(c$, "getMenuAsText", +function(title){ +return this.getStuctureAsText(title, JSV.popup.JSVPopupResourceBundle.menuContents, JSV.popup.JSVPopupResourceBundle.structureContents); +}, "~S"); +c$.menuContents = Clazz.newArray(-1, [ Clazz.newArray(-1, ["appMenu", "_SIGNED_FileMenu Spectra... ShowMenu OptionsMenu ZoomMenu - Integration Peaks Measurements - Script... Properties"]), Clazz.newArray(-1, ["appletMenu", "_SIGNED_FileMenu Spectra... - OptionsMenu ZoomMenu - Integration Peaks Measurements - Script... - Print... - AboutMenu"]), Clazz.newArray(-1, ["_SIGNED_FileMenu", "Open_File... Open_Simulation... Open_URL... - Add_File... Add_Simulation... Add_URL... - Save_AsMenu Export_AsMenu - Close_Views Close_Simulations Close_All"]), Clazz.newArray(-1, ["Save_AsMenu", "Original... JDXMenu CML XML(AnIML)"]), Clazz.newArray(-1, ["JDXMenu", "XY DIF DIFDUP FIX PAC SQZ"]), Clazz.newArray(-1, ["Export_AsMenu", "PDF - JPG PNG SVG"]), Clazz.newArray(-1, ["ShowMenu", "Show_Header Show_Source Show_Overlay_Key"]), Clazz.newArray(-1, ["OptionsMenu", "Toggle_Grid Toggle_X_Axis Toggle_Y_Axis Toggle_Coordinates Toggle_Trans/Abs Reverse_Plot - Predicted_Solution_Colour Fill_Solution_Colour_(all) Fill_Solution_Colour_(none)"]), Clazz.newArray(-1, ["ZoomMenu", "Next_Zoom Previous_Zoom Reset_Zoom - Set_X_Scale... Reset_X_Scale"]), Clazz.newArray(-1, ["AboutMenu", "VERSION"])]); +c$.structureContents = Clazz.newArray(-1, [ Clazz.newArray(-1, ["Open_File...", "load ?"]), Clazz.newArray(-1, ["Open_URL...", "load http://?"]), Clazz.newArray(-1, ["Open_Simulation...", "load $?"]), Clazz.newArray(-1, ["Add_File...", "load append ?"]), Clazz.newArray(-1, ["Add_URL...", "load append http://?"]), Clazz.newArray(-1, ["Add_Simulation...", "load append $?; view \"1HNMR\""]), Clazz.newArray(-1, ["Close_All", "close all"]), Clazz.newArray(-1, ["Close_Views", "close views"]), Clazz.newArray(-1, ["Close Simulations", "close simulations"]), Clazz.newArray(-1, ["Show_Header", "showProperties"]), Clazz.newArray(-1, ["Show_Source", "showSource"]), Clazz.newArray(-1, ["Show_Overlay_Key...", "showKey"]), Clazz.newArray(-1, ["Next_Zoom", "zoom next;showMenu"]), Clazz.newArray(-1, ["Previous_Zoom", "zoom prev;showMenu"]), Clazz.newArray(-1, ["Reset_Zoom", "zoom clear"]), Clazz.newArray(-1, ["Reset_X_Scale", "zoom out"]), Clazz.newArray(-1, ["Set_X_Scale...", "zoom"]), Clazz.newArray(-1, ["Spectra...", "view"]), Clazz.newArray(-1, ["Overlay_Offset...", "stackOffsetY"]), Clazz.newArray(-1, ["Script...", "script INLINE"]), Clazz.newArray(-1, ["Properties", "showProperties"]), Clazz.newArray(-1, ["Toggle_X_Axis", "XSCALEON toggle;showMenu"]), Clazz.newArray(-1, ["Toggle_Y_Axis", "YSCALEON toggle;showMenu"]), Clazz.newArray(-1, ["Toggle_Grid", "GRIDON toggle;showMenu"]), Clazz.newArray(-1, ["Toggle_Coordinates", "COORDINATESON toggle;showMenu"]), Clazz.newArray(-1, ["Reverse_Plot", "REVERSEPLOT toggle;showMenu"]), Clazz.newArray(-1, ["Measurements", "SHOWMEASUREMENTS"]), Clazz.newArray(-1, ["Peaks", "SHOWPEAKLIST"]), Clazz.newArray(-1, ["Integration", "SHOWINTEGRATION"]), Clazz.newArray(-1, ["Toggle_Trans/Abs", "IRMODE TOGGLE"]), Clazz.newArray(-1, ["Predicted_Solution_Colour", "GETSOLUTIONCOLOR"]), Clazz.newArray(-1, ["Fill_Solution_Colour_(all)", "GETSOLUTIONCOLOR fillall"]), Clazz.newArray(-1, ["Fill_Solution_Colour_(none)", "GETSOLUTIONCOLOR fillallnone"]), Clazz.newArray(-1, ["Print...", "print"]), Clazz.newArray(-1, ["Original...", "write SOURCE"]), Clazz.newArray(-1, ["CML", "write CML"]), Clazz.newArray(-1, ["XML(AnIML)", "write XML"]), Clazz.newArray(-1, ["XY", "write XY"]), Clazz.newArray(-1, ["DIF", "write DIF"]), Clazz.newArray(-1, ["DIFDUP", "write DIFDUP"]), Clazz.newArray(-1, ["FIX", "write FIX"]), Clazz.newArray(-1, ["PAC", "write PAC"]), Clazz.newArray(-1, ["SQZ", "write SQZ"]), Clazz.newArray(-1, ["JPG", "write JPG"]), Clazz.newArray(-1, ["SVG", "write SVG"]), Clazz.newArray(-1, ["PNG", "write PNG"]), Clazz.newArray(-1, ["PDF", "write PDF"])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/AnIMLReader.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/AnIMLReader.js new file mode 100755 index 000000000000..b67eab95e2ab --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/AnIMLReader.js @@ -0,0 +1,193 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(["JSV.source.XMLReader"], "JSV.source.AnIMLReader", ["JU.BC", "$.Base64", "JSV.source.JDXSource"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.inResult = false; +Clazz.instantialize(this, arguments);}, JSV.source, "AnIMLReader", JSV.source.XMLReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.source.AnIMLReader, []); +}); +Clazz.overrideMethod(c$, "getXML", +function(br){ +try { +this.source = new JSV.source.JDXSource(0, this.filePath); +this.getSimpleXmlReader(br); +this.parser.nextEvent(); +this.processXML(0, 3); +if (!this.checkPointCount()) return null; +this.xFactor = 1; +this.yFactor = 1; +this.populateVariables(); +} catch (pe) { +if (Clazz.exceptionOf(pe, Exception)){ +System.err.println("That file may be empty..."); +this.errorLog.append("That file may be empty... \n"); +} else { +throw pe; +} +} +this.processErrors("anIML"); +try { +br.close(); +} catch (e1) { +if (Clazz.exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +return this.source; +}, "java.io.BufferedReader"); +Clazz.overrideMethod(c$, "processTag", +function(tagId){ +switch (tagId) { +case 0: +this.processAuditTrail(); +return true; +case 1: +this.processExperimentStepSet(); +return true; +case 2: +this.processSampleSet(); +return true; +case 11: +this.processAuthor(); +return true; +case 3: +this.inResult = true; +return true; +default: +System.out.println("AnIMLReader not processing tag " + JSV.source.XMLReader.tagNames[tagId]); +return false; +} +}, "~N"); +Clazz.overrideMethod(c$, "processEndTag", +function(tagId){ +switch (tagId) { +case 3: +case 1: +this.inResult = false; +break; +} +}, "~N"); +Clazz.defineMethod(c$, "processAuditTrail", +function(){ +if (this.tagName.equals("user")) { +this.parser.qualifiedValue(); +} else if (this.tagName.equals("timestamp")) { +this.parser.qualifiedValue(); +}}); +Clazz.defineMethod(c$, "processSampleSet", +function(){ +if (this.tagName.equals("sample")) this.samplenum++; + else if (this.tagName.equals("parameter")) { +this.attrList = this.parser.getAttrValueLC("name"); +if (this.attrList.equals("name")) { +this.parser.qualifiedValue(); +} else if (this.attrList.equals("owner")) { +this.parser.qualifiedValue(); +} else if (this.attrList.equals("molecular formula")) { +this.molForm = this.parser.qualifiedValue(); +} else if (this.attrList.equals("cas registry number")) { +this.casRN = this.parser.qualifiedValue(); +}}}); +Clazz.defineMethod(c$, "processExperimentStepSet", +function(){ +if (this.tagName.equals("result")) { +this.inResult = true; +} else if (this.tagName.equals("sampleref")) { +if (this.parser.getAttrValueLC("role").contains("samplemeasurement")) this.sampleID = this.parser.getAttrValue("sampleID"); +} else if (this.tagName.equals("author")) { +this.process(11, true); +} else if (this.tagName.equals("timestamp")) { +this.LongDate = this.parser.thisValue(); +} else if (this.tagName.equals("technique")) { +this.techname = this.parser.getAttrValue("name").toUpperCase() + " SPECTRUM"; +} else if (this.tagName.equals("vectorset") || this.tagName.equals("seriesset") && this.inResult) { +this.npoints = Integer.parseInt(this.parser.getAttrValue("length")); +this.xaxisData = Clazz.newDoubleArray (this.npoints, 0); +this.yaxisData = Clazz.newDoubleArray (this.npoints, 0); +} else if (this.tagName.equals("vector") || this.tagName.equals("series") && this.inResult) { +var axisLabel = this.parser.getAttrValue("name"); +var dependency = this.parser.getAttrValueLC("dependency"); +if (dependency.equals("independent")) { +this.xUnits = axisLabel; +this.getXValues(); +} else if (dependency.equals("dependent")) { +this.yUnits = axisLabel; +this.getYValues(); +}} else if (this.tagName.equals("parameter")) { +if ((this.attrList = this.parser.getAttrValueLC("name")).equals("identifier")) { +this.title = this.parser.qualifiedValue(); +} else if (this.attrList.equals("nucleus")) { +this.obNucleus = this.parser.qualifiedValue(); +} else if (this.attrList.equals("observefrequency")) { +this.StrObFreq = this.parser.qualifiedValue(); +this.obFreq = Double.parseDouble(this.StrObFreq); +} else if (this.attrList.equals("referencepoint")) { +this.refPoint = Double.parseDouble(this.parser.qualifiedValue()); +} else if (this.attrList.equals("sample path length")) { +this.pathlength = this.parser.qualifiedValue(); +} else if (this.attrList.equals("scanmode")) { +this.parser.thisValue(); +} else if (this.attrList.equals("manufacturer")) { +this.vendor = this.parser.thisValue(); +} else if (this.attrList.equals("model name")) { +this.modelType = this.parser.thisValue(); +} else if (this.attrList.equals("resolution")) { +this.resolution = this.parser.qualifiedValue(); +}}}); +Clazz.defineMethod(c$, "getXValues", +function(){ +this.parser.nextTag(); +if (this.parser.getTagName().equals("autoincrementedvalueset")) { +this.parser.nextTag(); +if (this.parser.getTagName().equals("startvalue")) this.firstX = Double.parseDouble(this.parser.qualifiedValue()); +this.nextStartTag(); +if (this.parser.getTagName().equals("increment")) this.deltaX = Double.parseDouble(this.parser.qualifiedValue()); +}if (!this.inResult) { +this.nextStartTag(); +this.xUnits = this.parser.getAttrValue("label"); +}this.increasing = (this.deltaX > 0 ? true : false); +this.continuous = true; +for (var j = 0; j < this.npoints; j++) this.xaxisData[j] = this.firstX + (this.deltaX * j); + +this.lastX = this.xaxisData[this.npoints - 1]; +}); +Clazz.defineMethod(c$, "nextStartTag", +function(){ +this.parser.nextStartTag(); +while (this.parser.getTagType() == 6) { +this.parser.nextStartTag(); +} +}); +Clazz.defineMethod(c$, "getYValues", +function(){ +var vectorType = this.parser.getAttrValueLC("type"); +if (vectorType.length == 0) vectorType = this.parser.getAttrValueLC("vectorType"); +this.parser.nextTag(); +this.tagName = this.parser.getTagName(); +if (this.tagName.equals("individualvalueset")) { +for (var ii = 0; ii < this.npoints; ii++) this.yaxisData[ii] = Double.parseDouble(this.parser.qualifiedValue()); + +} else if (this.tagName.equals("encodedvalueset")) { +this.attrList = this.parser.getCharacters(); +var dataArray = JU.Base64.decodeBase64(this.attrList); +if (dataArray.length != 0) { +if (vectorType.equals("float64")) { +for (var i = 0, pt = 0; i < this.npoints; i++, pt += 8) this.yaxisData[i] = JU.BC.bytesToDoubleToFloat(dataArray, pt, false); + +} else { +for (var i = 0, pt = 0; i < this.npoints; i++, pt += 4) this.yaxisData[i] = JU.BC.bytesToFloat(dataArray, pt, false); + +}}}this.parser.nextStartTag(); +this.tagName = this.parser.getTagName(); +this.yUnits = this.parser.getAttrValue("label"); +this.firstY = this.yaxisData[0]; +}); +Clazz.defineMethod(c$, "processAuthor", +function(){ +if (this.tagName.equals("name")) this.owner = this.parser.thisValue(); + else if (this.tagName.contains("location")) this.origin = this.parser.thisValue(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/BrukerReader.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/BrukerReader.js new file mode 100755 index 000000000000..c9ef4ed47ebf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/BrukerReader.js @@ -0,0 +1,245 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(null, "JSV.source.BrukerReader", ["java.io.BufferedInputStream", "$.ByteArrayInputStream", "$.File", "java.util.Hashtable", "java.util.zip.ZipInputStream", "JU.BinaryDocument", "$.Lst", "$.Rdr", "JSV.common.Coordinate", "$.Spectrum", "JSV.source.JDXReader", "$.JDXSource"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.allowPhasing = false; +Clazz.instantialize(this, arguments);}, JSV.source, "BrukerReader", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "readBrukerZip", +function(bytes, fullPath){ +try { +var zis = new java.util.zip.ZipInputStream(bytes == null ? new java.io.FileInputStream(fullPath) : new java.io.ByteArrayInputStream(bytes)); +var ze; +var map = new java.util.Hashtable(); +var data1r = Clazz.newByteArray (0, 0); +var data1i = Clazz.newByteArray (0, 0); +var data2rr = Clazz.newByteArray (0, 0); +var root = null; +var title = null; +out : while ((ze = zis.getNextEntry()) != null) { +var zeName = ze.getName(); +System.out.println(zeName); +var pt = zeName.lastIndexOf('/'); +var zeShortName = zeName.substring(pt + 1); +if (root == null) { +root = zeName.substring(0, pt + 1); +pt = root.indexOf("/pdata/"); +if (pt >= 0) root = root.substring(0, pt + 1); +}if (!zeName.startsWith(root)) break out; +var isacq = false; +if (zeShortName.equals("title")) { +title = String.instantialize(this.getBytes(zis, ze.getSize(), false)); +map.put("##title", title); +} else if (zeShortName.equals("1r")) { +data1r = this.getBytes(zis, ze.getSize(), false); +} else if (zeShortName.equals("1i")) { +if (this.allowPhasing) data1i = this.getBytes(zis, ze.getSize(), false); +} else if (zeShortName.equals("2rr")) { +data2rr = this.getBytes(zis, ze.getSize(), false); +} else if (zeShortName.equals("proc2s") || zeShortName.equals("acqu2s")) { +JSV.source.JDXReader.getHeaderMapS( new java.io.ByteArrayInputStream(this.getBytes(zis, ze.getSize(), false)), map, "_2"); +} else if (zeShortName.equals("procs") || (isacq = zeShortName.equals("acqus"))) { +if (isacq) { +root = zeName.substring(0, pt + 1); +}JSV.source.JDXReader.getHeaderMap( new java.io.ByteArrayInputStream(this.getBytes(zis, ze.getSize(), false)), map); +}} +zis.close(); +map.put("##TITLE", (title == null ? "" : title)); +return this.getSource(fullPath, map, data1r, data1i, data2rr); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~A,~S"); +Clazz.defineMethod(c$, "readBrukerDir", +function(fullPath){ +var dir = new java.io.File(fullPath); +if (!dir.isDirectory()) { +dir = dir.getParentFile(); +}var procs = new java.io.File(dir, "procs"); +if (!procs.exists()) procs = new java.io.File(dir, "pdata/1/procs"); +var pdata = procs.getParentFile(); +var brukerDir = pdata.getParentFile().getParentFile(); +var map = new java.util.Hashtable(); +this.mapParameters(brukerDir, "acqus", map, null); +this.mapParameters(brukerDir, "acqu2s", map, "_2"); +this.mapParameters(pdata, "procs", map, null); +this.mapParameters(pdata, "proc2s", map, "_2"); +map.put("##TITLE", String.instantialize(this.getFileContentsAsBytes( new java.io.File(pdata, "title")))); +var data1r = this.getFileContentsAsBytes( new java.io.File(procs.getParent(), "1r")); +var data1i = (this.allowPhasing ? this.getFileContentsAsBytes( new java.io.File(procs.getParent(), "1i")) : Clazz.newByteArray (0, 0)); +var data2rr = this.getFileContentsAsBytes( new java.io.File(procs.getParent(), "2rr")); +return this.getSource(brukerDir.toString(), map, data1r, data1i, data2rr); +}, "~S"); +Clazz.defineMethod(c$, "mapParameters", +function(dir, fname, map, suffix){ +var f = new java.io.File(dir, fname); +if (!f.exists()) return; +var is = new java.io.FileInputStream(f); +JSV.source.JDXReader.getHeaderMapS(is, map, suffix); +is.close(); +}, "java.io.File,~S,java.util.Map,~S"); +Clazz.defineMethod(c$, "getSource", +function(brukerDir, map, data1r, data1i, data2rr){ +var dtypp = Integer.parseInt(map.get("##$DTYPP")); +var byteorp = (dtypp == 0 ? Integer.parseInt(map.get("##$BYTORDP")) : 2147483647); +if (dtypp == -2147483648 || byteorp == -2147483648) return null; +var source = null; +if (data1r.length > 0) { +source = new JSV.source.JDXSource((data1i.length == 0 ? 0 : 2), brukerDir); +this.setSource(this.getData(data1r, dtypp, byteorp), this.getData(data1i, dtypp, byteorp), map, source, false); +} else if (data2rr.length > 0) { +source = new JSV.source.JDXSource(2, brukerDir); +this.setSource(this.getData(data2rr, dtypp, byteorp), null, map, source, true); +}return source; +}, "~S,java.util.Map,~A,~A,~A"); +Clazz.defineMethod(c$, "setSource", +function(datar, datai, map, source, is2D){ +var LDRTable = new JU.Lst(); +var spectrum0 = new JSV.common.Spectrum(); +spectrum0.setTitle(map.get("##TITLE")); +spectrum0.setJcampdx(is2D ? "6.0" : "5.1"); +spectrum0.setDataClass("XYDATA"); +spectrum0.setDataType(is2D ? "nD NMR SPECTRUM" : "NMR SPECTRUM"); +spectrum0.setContinuous(true); +spectrum0.setIncreasing(false); +spectrum0.setLongDate(map.get("##$DATE")); +spectrum0.setOrigin("Bruker BioSpin GmbH/JSpecView"); +spectrum0.setOwner(map.get("##OWNER")); +var freq = JSV.source.BrukerReader.parseDouble(map.get("##$SFO1")); +var ref = JSV.source.BrukerReader.parseDouble(map.get("##$ABSF1")); +if (ref == 0) { +ref = JSV.source.BrukerReader.parseDouble(map.get("##$OFFSET")); +}var nuc1 = this.cleanJDXValue(map.get("##$NUC1")); +var nuc2 = this.cleanJDXValue(map.get("##$NUC2")); +if (nuc2.length == 0) nuc2 = nuc1; +var sw_hz = JSV.source.BrukerReader.parseDouble(map.get("##$SWP")); +var sw = sw_hz / freq; +var shift = ref - sw; +var solvent = this.cleanJDXValue(map.get("##$SOLVENT")); +var shiftType = "INTERNAL"; +JSV.source.JDXReader.addHeader(LDRTable, "##.SHIFTREFERENCE", shiftType + ", " + solvent + ", 1, " + ref); +JSV.source.JDXReader.addHeader(LDRTable, "##.OBSERVEFREQUENCY", "" + freq); +JSV.source.JDXReader.addHeader(LDRTable, "##.OBSERVENUCLEUS", nuc1); +JSV.source.JDXReader.addHeader(LDRTable, "##SPECTROMETER/DATA SYSTEM", this.cleanJDXValue(map.get("##$INSTRUM"))); +spectrum0.setHeaderTable(LDRTable); +spectrum0.setObservedNucleus(nuc1); +spectrum0.setObservedFreq(freq); +spectrum0.setHZtoPPM(true); +if (is2D) { +source.isCompoundSource = true; +spectrum0.setNumDim(2); +spectrum0.setNucleusAndFreq(nuc2, false); +var si0 = Integer.parseInt(map.get("##$SI")); +var si1 = Integer.parseInt(map.get("##$SI_2")); +var ref1 = JSV.source.BrukerReader.parseDouble(map.get("##$ABSF1_2")); +if (ref1 == 0) { +ref1 = JSV.source.BrukerReader.parseDouble(map.get("##$OFFSET")); +}var freq1 = JSV.source.BrukerReader.parseDouble(map.get("##$SFO1_2")); +var sw_hz1 = JSV.source.BrukerReader.parseDouble(map.get("##$SWP_2")); +var npoints = si0; +var xfactor = sw_hz / npoints; +var xfactor1 = sw_hz1 / si1; +var freq2 = freq1; +freq1 = ref1 * freq1 - xfactor1; +spectrum0.fileNPoints = npoints; +spectrum0.fileFirstX = sw_hz - xfactor; +spectrum0.fileLastX = 0; +var f = 1; +for (var j = 0, pt = 0; j < si1; j++) { +var spectrum = new JSV.common.Spectrum(); +spectrum0.copyTo(spectrum); +spectrum.setTitle(spectrum0.getTitle()); +spectrum.setY2D(freq1); +spectrum.blockID = Math.random(); +spectrum0.fileNPoints = npoints; +spectrum0.fileFirstX = sw_hz - xfactor; +spectrum0.fileLastX = 0; +spectrum.setY2DUnits("HZ"); +spectrum.setXFactor(1); +spectrum.setYFactor(1); +spectrum.setObservedNucleus(nuc2); +spectrum.setObservedFreq(freq2); +var xyCoords = new Array(npoints); +for (var i = 0; i < npoints; i++) { +xyCoords[npoints - i - 1] = new JSV.common.Coordinate().set((npoints - i) * xfactor / freq + shift, datar[pt++] * f); +} +spectrum.setXYCoords(xyCoords); +source.addJDXSpectrum(null, spectrum, j > 0); +freq1 -= xfactor1; +} +} else { +var npoints = datar.length; +var xfactor = sw_hz / npoints; +spectrum0.fileFirstX = sw_hz - xfactor; +spectrum0.fileLastX = 0; +spectrum0.fileNPoints = npoints; +var xyCoords = new Array(npoints); +for (var i = 0; i < npoints; i++) { +xyCoords[npoints - i - 1] = new JSV.common.Coordinate().set((npoints - i - 1) * xfactor / freq + shift, datar[i]); +} +spectrum0.setXYCoords(xyCoords); +spectrum0.fileNPoints = npoints; +spectrum0.setXFactor(xfactor); +spectrum0.setYFactor(1); +spectrum0.setXUnits("ppm"); +spectrum0.setYUnits("ARBITRARY UNITS"); +spectrum0.setNumDim(1); +if (spectrum0.getMaxY() >= 10000) spectrum0.normalizeSimulation(1000); +source.addJDXSpectrum(null, spectrum0, false); +}}, "~A,~A,java.util.Map,JSV.source.JDXSource,~B"); +c$.parseDouble = Clazz.defineMethod(c$, "parseDouble", +function(val){ +return (val == null || val.length == 0 ? NaN : Double.parseDouble(val)); +}, "~S"); +Clazz.defineMethod(c$, "getData", +function(bytes, dtypp, byteorp){ +var len = Clazz.doubleToInt(bytes.length / (dtypp == 0 ? 4 : 8)); +var doc = new JU.BinaryDocument(); +doc.setStream( new java.io.BufferedInputStream( new java.io.ByteArrayInputStream(bytes)), byteorp != 0); +var ad = Clazz.newDoubleArray (len, 0); +var d = 0; +var dmin = 1.7976931348623157E308; +var dmax = -1.7976931348623157E308; +if (dtypp == 0) { +for (var i = 0; i < len; i++) { +var f = 1; +ad[i] = d = doc.readInt() * f; +if (d < dmin) dmin = d; +if (d > dmax) dmax = d; +} +} else { +for (var i = 0; i < len; i++) { +ad[i] = d = doc.readDouble(); +if (d < dmin) dmin = d; +if (d > dmax) dmax = d; +} +}doc.close(); +return ad; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "cleanJDXValue", +function(val){ +var s = (val == null ? "" : val.startsWith("<") ? val.substring(1, val.length - 1) : val); +return (s.equals("off") ? "" : s); +}, "~S"); +Clazz.defineMethod(c$, "getFileContentsAsBytes", +function(file){ +if (!file.exists()) return Clazz.newByteArray (0, 0); +var len = file.length(); +return this.getBytes( new java.io.FileInputStream(file), len, true); +}, "java.io.File"); +Clazz.defineMethod(c$, "getBytes", +function($in, len, andClose){ +try { +return JU.Rdr.getLimitedStreamBytes($in, len); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return Clazz.newByteArray (0, 0); +}, "java.io.InputStream,~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/CMLReader.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/CMLReader.js new file mode 100755 index 000000000000..36c78ea202f4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/CMLReader.js @@ -0,0 +1,245 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(["JSV.source.XMLReader"], "JSV.source.CMLReader", ["java.util.Vector", "JU.PT", "JSV.source.JDXSource"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.specfound = false; +this.Ydelim = ""; +this.peakData = null; +Clazz.instantialize(this, arguments);}, JSV.source, "CMLReader", JSV.source.XMLReader); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JSV.source.CMLReader, []); +}); +Clazz.overrideMethod(c$, "getXML", +function(br){ +try { +this.source = new JSV.source.JDXSource(0, this.filePath); +this.getSimpleXmlReader(br); +this.processXML(4, 10); +if (!this.checkPointCount()) return null; +this.populateVariables(); +} catch (pe) { +if (Clazz.exceptionOf(pe, Exception)){ +System.err.println("Error: " + pe); +} else { +throw pe; +} +} +this.processErrors("CML"); +try { +br.close(); +} catch (e1) { +if (Clazz.exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +return this.source; +}, "java.io.BufferedReader"); +Clazz.overrideMethod(c$, "processTag", +function(tagId){ +switch (tagId) { +case 4: +this.processSpectrum(); +return false; +case 9: +this.processSpectrumData(); +return true; +case 10: +this.processPeaks(); +return false; +case 8: +this.processSample(); +return true; +case 5: +this.processMetadataList(); +return true; +case 6: +this.processConditionList(); +return true; +case 7: +this.processParameterList(); +return true; +case 12: +this.processPeakList(); +return true; +default: +System.out.println("CMLSource not processing tag " + JSV.source.XMLReader.tagNames[tagId]); +return false; +} +}, "~N"); +Clazz.overrideMethod(c$, "processEndTag", +function(tagId){ +}, "~N"); +Clazz.defineMethod(c$, "processSpectrum", +function(){ +if (this.attrList.contains("title")) this.title = this.parser.getAttrValue("title"); + else if (this.attrList.contains("id")) this.title = this.parser.getAttrValue("id"); +if (this.attrList.contains("type")) this.techname = this.parser.getAttrValue("type").toUpperCase() + " SPECTRUM"; +}); +Clazz.defineMethod(c$, "processMetadataList", +function(){ +if (this.tagName.equals("metadata")) { +this.tagName = this.parser.getAttrValueLC("name"); +if (this.tagName.contains(":origin")) { +if (this.attrList.contains("content")) this.origin = this.parser.getAttrValue("content"); + else this.origin = this.parser.thisValue(); +} else if (this.tagName.contains(":owner")) { +if (this.attrList.contains("content")) this.owner = this.parser.getAttrValue("content"); + else this.owner = this.parser.thisValue(); +} else if (this.tagName.contains("observenucleus")) { +if (this.attrList.contains("content")) this.obNucleus = this.parser.getAttrValue("content"); + else this.obNucleus = this.parser.thisValue(); +}}}); +Clazz.defineMethod(c$, "processParameterList", +function(){ +if (this.tagName.equals("parameter")) { +var title = this.parser.getAttrValueLC("title"); +if (title.equals("nmr.observe frequency")) { +this.StrObFreq = this.parser.qualifiedValue(); +this.obFreq = Double.parseDouble(this.StrObFreq); +} else if (title.equals("nmr.observe nucleus")) { +this.obNucleus = this.parser.getAttrValue("value"); +} else if (title.equals("spectrometer/data system")) { +this.modelType = this.parser.getAttrValue("value"); +} else if (title.equals("resolution")) { +this.resolution = this.parser.qualifiedValue(); +}}}); +Clazz.defineMethod(c$, "processConditionList", +function(){ +if (this.tagName.equals("scalar")) { +var dictRef = this.parser.getAttrValueLC("dictRef"); +if (dictRef.contains(":field")) { +this.StrObFreq = this.parser.thisValue(); +if ((this.StrObFreq.charAt(0)).charCodeAt(0) > 47 && (this.StrObFreq.charAt(0)).charCodeAt(0) < 58) this.obFreq = Double.parseDouble(this.StrObFreq); +}}}); +Clazz.defineMethod(c$, "processSample", +function(){ +if (this.tagName.equals("formula")) { +if (this.attrList.contains("concise")) this.molForm = this.parser.getAttrValue("concise"); + else if (this.attrList.contains("inline")) this.molForm = this.parser.getAttrValue("inline"); +} else if (this.tagName.equals("name")) { +this.casName = this.parser.thisValue(); +}}); +Clazz.defineMethod(c$, "processSpectrumData", +function(){ +if (this.tagName.equals("xaxis")) { +if (this.attrList.contains("multipliertodata")) this.xFactor = Double.parseDouble(this.parser.getAttrValue("multiplierToData")); +this.parser.nextTag(); +this.tagName = this.parser.getTagName(); +this.attrList = this.parser.getAttributeList(); +if (this.tagName.equals("array")) { +this.xUnits = JSV.source.CMLReader.checkUnits(this.parser.getAttrValue("units")); +this.npoints = Integer.parseInt(this.parser.getAttrValue("size")); +this.xaxisData = Clazz.newDoubleArray (this.npoints, 0); +if (this.attrList.contains("start")) { +this.firstX = Double.parseDouble(this.parser.getAttrValue("start")); +this.lastX = Double.parseDouble(this.parser.getAttrValue("end")); +this.deltaX = (this.lastX - this.firstX) / (this.npoints - 1); +this.increasing = this.deltaX > 0 ? true : false; +this.continuous = true; +for (var j = 0; j < this.npoints; j++) this.xaxisData[j] = this.firstX + (this.deltaX * j); + +} else { +var posDelim = 0; +var jj = -1; +var tempX = ""; +this.Ydelim = " "; +this.attrList = this.parser.getCharacters().$replace('\n', ' ').$replace('\r', ' ').trim(); +do { +jj++; +posDelim = this.attrList.indexOf(this.Ydelim); +tempX = this.attrList.substring(0, posDelim); +this.xaxisData[jj] = Double.parseDouble(tempX) * this.xFactor; +this.attrList = this.attrList.substring(posDelim + 1, this.attrList.length).trim(); +posDelim = this.attrList.indexOf(this.Ydelim); +while (posDelim > 0) { +jj++; +tempX = this.attrList.substring(0, posDelim); +this.xaxisData[jj] = Double.parseDouble(tempX) * this.xFactor; +this.attrList = this.attrList.substring(posDelim + 1, this.attrList.length).trim(); +posDelim = this.attrList.indexOf(this.Ydelim); +} +if (jj < this.npoints - 1) { +jj++; +this.xaxisData[jj] = Double.parseDouble(this.attrList) * this.xFactor; +}} while (jj < this.npoints - 1); +this.firstX = this.xaxisData[0]; +this.lastX = this.xaxisData[this.npoints - 1]; +this.continuous = true; +}}} else if (this.tagName.equals("yaxis")) { +if (this.attrList.contains("multipliertodata")) this.yFactor = Double.parseDouble(this.parser.getAttrValue("multiplierToData")); +this.parser.nextTag(); +this.tagName = this.parser.getTagName(); +this.attrList = this.parser.getAttributeList(); +if (this.tagName.equals("array")) { +this.yUnits = JSV.source.CMLReader.checkUnits(this.parser.getAttrValue("units")); +var npointsY = Integer.$valueOf(this.parser.getAttrValue("size")); +if (this.npoints != npointsY.intValue()) System.err.println("npoints variation between X and Y arrays"); +this.yaxisData = Clazz.newDoubleArray (this.npoints, 0); +this.Ydelim = this.parser.getAttrValue("delimeter"); +if (this.Ydelim.equals("")) this.Ydelim = " "; +var posDelim = 0; +var jj = -1; +var tempY = ""; +this.attrList = this.parser.getCharacters().$replace('\n', ' ').$replace('\r', ' ').trim(); +do { +jj++; +posDelim = this.attrList.indexOf(this.Ydelim); +tempY = this.attrList.substring(0, posDelim); +this.yaxisData[jj] = Double.parseDouble(tempY) * this.yFactor; +this.attrList = this.attrList.substring(posDelim + 1, this.attrList.length).trim(); +posDelim = this.attrList.indexOf(this.Ydelim); +while (posDelim > 0) { +jj++; +tempY = this.attrList.substring(0, posDelim); +this.yaxisData[jj] = Double.parseDouble(tempY) * this.yFactor; +this.attrList = this.attrList.substring(posDelim + 1, this.attrList.length).trim(); +posDelim = this.attrList.indexOf(this.Ydelim); +} +if (jj < this.npoints - 1) { +jj++; +this.yaxisData[jj] = Double.parseDouble(this.attrList) * this.yFactor; +}} while (jj < this.npoints - 1); +}this.firstY = this.yaxisData[0]; +this.specfound = true; +}}); +Clazz.defineMethod(c$, "processPeaks", +function(){ +if (this.specfound) return; +this.peakData = new java.util.Vector(); +this.process(12, true); +this.npoints = this.peakData.size(); +this.xaxisData = Clazz.newDoubleArray (this.npoints, 0); +this.yaxisData = Clazz.newDoubleArray (this.npoints, 0); +for (var i = 0; i < this.npoints; i++) { +var xy = this.peakData.get(i); +this.xaxisData[i] = xy[0]; +this.yaxisData[i] = xy[1]; +} +this.peakData = null; +this.firstX = this.xaxisData[0]; +this.lastX = this.xaxisData[this.npoints - 1]; +this.firstY = this.yaxisData[0]; +this.increasing = (this.lastX > this.firstX); +this.continuous = false; +}); +Clazz.defineMethod(c$, "processPeakList", +function(){ +if (this.tagName.equals("peak")) { +if (this.attrList.contains("xvalue")) { +var xy = Clazz.newDoubleArray (2, 0); +xy[1] = 50; +xy[0] = Double.parseDouble(this.parser.getAttrValue("xValue")); +if (this.attrList.contains("xunits")) this.xUnits = JSV.source.CMLReader.checkUnits(this.parser.getAttrValue("xUnits")); +if (this.attrList.contains("yvalue")) xy[1] = Double.parseDouble(this.parser.getAttrValue("yValue")); +if (this.attrList.contains("yunits")) this.yUnits = JSV.source.CMLReader.checkUnits(this.parser.getAttrValue("yUnits")); +if (this.attrList.contains("atomrefs")) xy[1] = 49 * JU.PT.getTokens(this.parser.getAttrValue("atomRefs")).length; +this.peakData.add(xy); +}}}); +c$.checkUnits = Clazz.defineMethod(c$, "checkUnits", +function(units){ +units = units.substring(units.indexOf(":") + 1).toUpperCase(); +return (units.equals("RELABUNDANCE") ? "RELATIVE ABUNDANCE" : units.contains("ARBITRARY") ? "ARBITRARY UNITS" : units.equals("MOVERZ") ? "M/Z" : units.equals("CM-1") ? "1/CM" : units.equals("NM") ? "NANOMETERS" : units); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXDataObject.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXDataObject.js new file mode 100755 index 000000000000..e46869dff7cb --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXDataObject.js @@ -0,0 +1,551 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(["JSV.source.JDXHeader", "java.util.Hashtable"], "JSV.source.JDXDataObject", ["JU.DF", "$.PT", "JSV.common.Annotation", "$.Coordinate", "JSV.exception.JSVException", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sourceID = ""; +this.isSimulation = false; +this.blockID = 0; +this.filePath = null; +this.filePathForwardSlash = null; +this.inlineData = null; +this.fileShiftRef = 1.7976931348623157E308; +this.fileShiftRefType = -1; +this.fileShiftRefDataPt = -1; +this.minX = NaN; +this.minY = NaN; +this.maxX = NaN; +this.maxY = NaN; +this.deltaX = NaN; +this.xyCoords = null; +this.continuous = false; +this.$isHZtoPPM = false; +this.xIncreases = true; +this.fileFirstX = 1.7976931348623157E308; +this.fileLastX = 1.7976931348623157E308; +this.fileNPoints = -1; +this.xFactor = 1.7976931348623157E308; +this.yFactor = 1.7976931348623157E308; +this.nucleusX = null; +this.nucleusY = "?"; +this.freq2dX = NaN; +this.freq2dY = NaN; +this.y2DUnits = ""; +this.parent = null; +this.xUnits = ""; +this.yUnits = ""; +this.xLabel = null; +this.yLabel = null; +this.varName = ""; +this.observedNucl = ""; +this.observedFreq = 1.7976931348623157E308; +this.numDim = 1; +this.nH = 0; +this.y2D = NaN; +Clazz.instantialize(this, arguments);}, JSV.source, "JDXDataObject", JSV.source.JDXHeader); +Clazz.defineMethod(c$, "setInlineData", +function(data){ +this.inlineData = data; +}, "~S"); +Clazz.defineMethod(c$, "getInlineData", +function(){ +return this.inlineData; +}); +Clazz.defineMethod(c$, "setFilePath", +function(filePath){ +if (filePath != null) this.filePathForwardSlash = (this.filePath = filePath.trim()).$replace('\\', '/'); +}, "~S"); +Clazz.defineMethod(c$, "getFilePath", +function(){ +return this.filePath; +}); +Clazz.defineMethod(c$, "getFilePathForwardSlash", +function(){ +return this.filePathForwardSlash; +}); +Clazz.defineMethod(c$, "setBlockID", +function(id){ +this.blockID = id; +}, "~N"); +Clazz.defineMethod(c$, "checkJDXRequiredTokens", +function(){ +var missingTag = (this.fileFirstX == 1.7976931348623157E308 ? "##FIRSTX" : this.fileLastX == 1.7976931348623157E308 ? "##LASTX" : this.fileNPoints == -1 ? "##NPOINTS" : this.xFactor == 1.7976931348623157E308 ? "##XFACTOR" : this.yFactor == 1.7976931348623157E308 ? "##YFACTOR" : null); +if (missingTag != null) throw new JSV.exception.JSVException("Error Reading Data Set: " + missingTag + " not found"); +}); +Clazz.defineMethod(c$, "setXFactor", +function(xFactor){ +this.xFactor = xFactor; +}, "~N"); +Clazz.defineMethod(c$, "getXFactor", +function(){ +return this.xFactor; +}); +Clazz.defineMethod(c$, "setYFactor", +function(yFactor){ +this.yFactor = yFactor; +}, "~N"); +Clazz.defineMethod(c$, "getYFactor", +function(){ +return this.yFactor; +}); +Clazz.defineMethod(c$, "setVarName", +function(name){ +this.varName = name; +}, "~S"); +Clazz.defineMethod(c$, "isImaginary", +function(){ +return this.varName.contains("IMAG"); +}); +Clazz.defineMethod(c$, "setXUnits", +function(xUnits){ +this.xUnits = xUnits; +}, "~S"); +Clazz.defineMethod(c$, "getXUnits", +function(){ +return this.xUnits; +}); +Clazz.defineMethod(c$, "setYUnits", +function(yUnits){ +if (yUnits.equals("PPM")) yUnits = "ARBITRARY UNITS"; +this.yUnits = yUnits; +}, "~S"); +Clazz.defineMethod(c$, "getYUnits", +function(){ +return this.yUnits; +}); +Clazz.defineMethod(c$, "setXLabel", +function(value){ +this.xLabel = value; +}, "~S"); +Clazz.defineMethod(c$, "setYLabel", +function(value){ +this.yLabel = value; +}, "~S"); +Clazz.defineMethod(c$, "setObservedNucleus", +function(value){ +this.observedNucl = value; +if (this.is1D()) this.parent.nucleusX = this.nucleusX = this.fixNucleus(value); +}, "~S"); +Clazz.defineMethod(c$, "getObservedNucleus", +function(){ +return this.observedNucl; +}); +Clazz.defineMethod(c$, "setObservedFreq", +function(observedFreq){ +this.observedFreq = observedFreq; +}, "~N"); +Clazz.defineMethod(c$, "getObservedFreq", +function(){ +return this.observedFreq; +}); +Clazz.defineMethod(c$, "setHydrogenCount", +function(nH){ +this.nH = nH; +}, "~N"); +Clazz.defineMethod(c$, "getHydrogenCount", +function(){ +return this.nH; +}); +Clazz.defineMethod(c$, "is1D", +function(){ +return this.numDim == 1; +}); +Clazz.defineMethod(c$, "getNumDim", +function(){ +return this.numDim; +}); +Clazz.defineMethod(c$, "setNumDim", +function(n){ +this.numDim = n; +}, "~N"); +Clazz.defineMethod(c$, "setY2D", +function(d){ +this.y2D = d; +}, "~N"); +Clazz.defineMethod(c$, "getY2D", +function(){ +return this.y2D; +}); +Clazz.defineMethod(c$, "setY2DUnits", +function(units){ +this.y2DUnits = units; +}, "~S"); +Clazz.defineMethod(c$, "getY2DPPM", +function(){ +var d = this.y2D; +if (this.y2DUnits.equals("HZ")) d /= this.freq2dY; +return d; +}); +Clazz.defineMethod(c$, "setNucleusAndFreq", +function(nuc, isX){ +nuc = this.fixNucleus(nuc); +if (isX) this.nucleusX = nuc; + else this.nucleusY = nuc; +var freq; +if (this.observedNucl.indexOf(nuc) >= 0) { +freq = this.observedFreq; +} else { +var g1 = JSV.source.JDXDataObject.getGyromagneticRatio(this.fixNucleus(this.observedNucl)); +var g2 = JSV.source.JDXDataObject.getGyromagneticRatio(nuc); +freq = this.observedFreq * g2 / g1; +}if (isX) this.freq2dX = freq; + else this.freq2dY = freq; +JU.Logger.info("Freq for " + nuc + " = " + freq); +}, "~S,~B"); +Clazz.defineMethod(c$, "fixNucleus", +function(nuc){ +return JU.PT.rep(JU.PT.trim(nuc, "[]^<>"), "NUC_", ""); +}, "~S"); +c$.getNominalSpecFreq = Clazz.defineMethod(c$, "getNominalSpecFreq", +function(nuc, freq){ +var d = freq * JSV.source.JDXDataObject.getGyromagneticRatio("1H") / JSV.source.JDXDataObject.getGyromagneticRatio(nuc); +var century = Math.round(d / 100) * 100; +return (Double.isNaN(d) ? -1 : Math.abs(d - century) < 2 ? century : Math.round(d)); +}, "~S,~N"); +c$.getGyromagneticRatio = Clazz.defineMethod(c$, "getGyromagneticRatio", +function(nuc){ +var v = null; +try { +v = JSV.source.JDXDataObject.gyroMap.get(nuc); +if (v != null) return v.doubleValue(); +var pt = 0; +while (pt < nuc.length && Character.isDigit(nuc.charAt(pt))) pt++; + +v = JSV.source.JDXDataObject.gyroMap.get(nuc.substring(0, pt)); +if (v != null) JSV.source.JDXDataObject.gyroMap.put(nuc, v); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return (v == null ? NaN : v.doubleValue()); +}, "~S"); +Clazz.defineMethod(c$, "isTransmittance", +function(){ +var s = this.yUnits.toLowerCase(); +return (s.equals("transmittance") || s.contains("trans") || s.equals("t")); +}); +Clazz.defineMethod(c$, "isAbsorbance", +function(){ +var s = this.yUnits.toLowerCase(); +return (s.equals("absorbance") || s.contains("abs") || s.equals("a")); +}); +Clazz.defineMethod(c$, "canSaveAsJDX", +function(){ +return this.getDataClass().equals("XYDATA"); +}); +Clazz.defineMethod(c$, "canIntegrate", +function(){ +return (this.continuous && (this.isHNMR() || this.isGC()) && this.is1D()); +}); +Clazz.defineMethod(c$, "isAutoOverlayFromJmolClick", +function(){ +return (this.isGC()); +}); +Clazz.defineMethod(c$, "isGC", +function(){ +return this.dataType.startsWith("GC") || this.dataType.startsWith("GAS"); +}); +Clazz.defineMethod(c$, "isMS", +function(){ +return this.dataType.startsWith("MASS") || this.dataType.startsWith("MS"); +}); +Clazz.defineMethod(c$, "isStackable", +function(){ +return !this.isMS(); +}); +Clazz.defineMethod(c$, "isScalable", +function(){ +return true; +}); +Clazz.defineMethod(c$, "getYRef", +function(){ +return (!this.isTransmittance() ? 0.0 : JSV.common.Coordinate.getMaxY(this.xyCoords, 0, this.xyCoords.length - 1) < 2 ? 1.0 : 100.0); +}); +Clazz.defineMethod(c$, "isInverted", +function(){ +return this.isTransmittance(); +}); +Clazz.defineMethod(c$, "canConvertTransAbs", +function(){ +return (this.continuous && (this.yUnits.toLowerCase().contains("abs")) || this.yUnits.toLowerCase().contains("trans")); +}); +Clazz.defineMethod(c$, "canShowSolutionColor", +function(){ +return (this.isContinuous() && this.canConvertTransAbs() && (this.xUnits.toLowerCase().contains("nanometer") || this.xUnits.equalsIgnoreCase("nm")) && this.getFirstX() < 401 && this.getLastX() > 699 && this.xyCoords.length >= 30); +}); +Clazz.defineMethod(c$, "isHZtoPPM", +function(){ +return this.$isHZtoPPM; +}); +Clazz.defineMethod(c$, "setHZtoPPM", +function(val){ +this.$isHZtoPPM = val; +}, "~B"); +Clazz.defineMethod(c$, "setIncreasing", +function(val){ +this.xIncreases = val; +}, "~B"); +Clazz.defineMethod(c$, "isXIncreasing", +function(){ +return this.xIncreases; +}); +Clazz.defineMethod(c$, "shouldDisplayXAxisIncreasing", +function(){ +var dt = this.dataType.toUpperCase(); +var xu = this.xUnits.toUpperCase(); +if (dt.contains("NMR") && !dt.contains("FID")) { +return false; +} else if (dt.contains("LINK") && xu.contains("CM")) { +return false; +} else if (dt.startsWith("IR") || dt.contains("INFRA") && xu.contains("CM")) { +return false; +} else if (dt.contains("RAMAN") && xu.contains("CM")) { +return false; +} else if (dt.contains("VIS") && xu.contains("NANOMETERS")) { +return true; +}return this.xIncreases; +}); +Clazz.defineMethod(c$, "setContinuous", +function(val){ +this.continuous = val; +}, "~B"); +Clazz.defineMethod(c$, "isContinuous", +function(){ +return this.continuous; +}); +Clazz.defineMethod(c$, "getHeaderRowDataAsArray", +function(){ +var n = 8; +if (this.observedFreq != 1.7976931348623157E308) n++; +if (this.observedNucl !== "") n++; +var rowData = this.getHeaderRowDataAsArray(true, n); +var i = rowData.length - n; +if (this.observedFreq != 1.7976931348623157E308) rowData[i++] = Clazz.newArray(-1, ["##.OBSERVE FREQUENCY", "" + this.observedFreq]); +if (this.observedNucl !== "") rowData[i++] = Clazz.newArray(-1, ["##.OBSERVE NUCLEUS", this.observedNucl]); +rowData[i++] = Clazz.newArray(-1, ["##XUNITS", this.$isHZtoPPM ? "HZ" : this.xUnits]); +rowData[i++] = Clazz.newArray(-1, ["##YUNITS", this.yUnits]); +var x = (this.xIncreases ? this.getFirstX() : this.getLastX()); +rowData[i++] = Clazz.newArray(-1, ["##FIRSTX", String.valueOf(this.isHZtoPPM() ? x * this.observedFreq : x)]); +x = (this.xIncreases ? this.getLastX() : this.getFirstX()); +rowData[i++] = Clazz.newArray(-1, ["##FIRSTY", String.valueOf(this.xIncreases ? this.getFirstY() : this.getLastY())]); +rowData[i++] = Clazz.newArray(-1, ["##LASTX", String.valueOf(this.isHZtoPPM() ? x * this.observedFreq : x)]); +rowData[i++] = Clazz.newArray(-1, ["##XFACTOR", String.valueOf(this.getXFactor())]); +rowData[i++] = Clazz.newArray(-1, ["##YFACTOR", String.valueOf(this.getYFactor())]); +rowData[i++] = Clazz.newArray(-1, ["##NPOINTS", String.valueOf(this.xyCoords.length)]); +return rowData; +}); +Clazz.defineMethod(c$, "getDefaultUnitPrecision", +function(){ +return 2; +}); +Clazz.defineMethod(c$, "setMeasurementText", +function(m){ +var dx = m.getValue(); +if (Double.isNaN(dx)) return ""; +var precision = 1; +var units = ""; +if (this.isNMR()) { +if (this.is1D()) { +var isIntegral = (Clazz.instanceOf(m,"JSV.common.Integral")); +if (this.isHNMR() || isIntegral) { +if (!isIntegral) { +dx *= this.observedFreq; +units = " Hz"; +}} else { +units = " ppm"; +precision = 2; +}} else { +return ""; +}}return (dx < 0.1 ? "" : JU.DF.formatDecimalDbl(dx, precision) + units); +}, "JSV.common.Measurement"); +Clazz.defineMethod(c$, "isNMR", +function(){ +return (this.dataType.toUpperCase().indexOf("NMR") >= 0); +}); +Clazz.defineMethod(c$, "isHNMR", +function(){ +return (this.isNMR() && this.observedNucl.toUpperCase().indexOf("H") >= 0); +}); +Clazz.defineMethod(c$, "setXYCoords", +function(coords){ +this.xyCoords = coords; +}, "~A"); +Clazz.defineMethod(c$, "invertYAxis", +function(){ +for (var i = this.xyCoords.length; --i >= 0; ) { +this.xyCoords[i].setYVal(-this.xyCoords[i].getYVal()); +} +var d = this.minY; +this.minY = -this.maxY; +this.maxY = -d; +return this; +}); +Clazz.defineMethod(c$, "getFirstX", +function(){ +return this.xyCoords[0].getXVal(); +}); +Clazz.defineMethod(c$, "getFirstY", +function(){ +return this.xyCoords[0].getYVal(); +}); +Clazz.defineMethod(c$, "getLastX", +function(){ +return this.xyCoords[this.xyCoords.length - 1].getXVal(); +}); +Clazz.defineMethod(c$, "getLastY", +function(){ +return this.xyCoords[this.xyCoords.length - 1].getYVal(); +}); +Clazz.defineMethod(c$, "getMinX", +function(){ +return (Double.isNaN(this.minX) ? (this.minX = JSV.common.Coordinate.getMinX(this.xyCoords, 0, this.xyCoords.length - 1)) : this.minX); +}); +Clazz.defineMethod(c$, "getMinY", +function(){ +return (Double.isNaN(this.minY) ? (this.minY = JSV.common.Coordinate.getMinY(this.xyCoords, 0, this.xyCoords.length - 1)) : this.minY); +}); +Clazz.defineMethod(c$, "getMaxX", +function(){ +return (Double.isNaN(this.maxX) ? (this.maxX = JSV.common.Coordinate.getMaxX(this.xyCoords, 0, this.xyCoords.length - 1)) : this.maxX); +}); +Clazz.defineMethod(c$, "getMaxY", +function(){ +return (Double.isNaN(this.maxY) ? (this.maxY = JSV.common.Coordinate.getMaxY(this.xyCoords, 0, this.xyCoords.length - 1)) : this.maxY); +}); +Clazz.defineMethod(c$, "normalizeSimulation", +function(max){ +if (!this.isNMR() || !this.is1D()) return; +var f = max / this.getMaxY(); +this.maxY = NaN; +JSV.common.Coordinate.applyScale(this.xyCoords, 1, f); +JU.Logger.info("Y values have been scaled by a factor of " + f); +}, "~N"); +Clazz.defineMethod(c$, "getDeltaX", +function(){ +return (Double.isNaN(this.deltaX) ? (this.deltaX = JSV.common.Coordinate.deltaX(this.getLastX(), this.getFirstX(), this.xyCoords.length)) : this.deltaX); +}); +Clazz.defineMethod(c$, "copyTo", +function(newObj){ +newObj.setTitle(this.title); +newObj.setJcampdx(this.jcampdx); +newObj.setOrigin(this.origin); +newObj.setOwner(this.owner); +newObj.setDataClass(this.dataClass); +newObj.setDataType(this.dataType); +newObj.setHeaderTable(this.headerTable); +newObj.setXFactor(this.xFactor); +newObj.setYFactor(this.yFactor); +newObj.setXUnits(this.xUnits); +newObj.setYUnits(this.yUnits); +newObj.setXLabel(this.xLabel); +newObj.setYLabel(this.yLabel); +newObj.setXYCoords(this.xyCoords); +newObj.setContinuous(this.continuous); +newObj.setIncreasing(this.xIncreases); +newObj.observedFreq = this.observedFreq; +newObj.observedNucl = this.observedNucl; +newObj.fileShiftRef = this.fileShiftRef; +newObj.fileShiftRefDataPt = this.fileShiftRefDataPt; +newObj.fileShiftRefType = this.fileShiftRefType; +newObj.$isHZtoPPM = this.$isHZtoPPM; +newObj.numDim = this.numDim; +newObj.nucleusX = this.nucleusX; +newObj.nucleusY = this.nucleusY; +newObj.freq2dX = this.freq2dX; +newObj.freq2dY = this.freq2dY; +newObj.setFilePath(this.filePath); +newObj.nH = this.nH; +}, "JSV.source.JDXDataObject"); +Clazz.defineMethod(c$, "getTypeLabel", +function(){ +return (this.isNMR() ? this.nucleusX + "NMR" : this.dataType); +}); +Clazz.defineMethod(c$, "getDefaultAnnotationInfo", +function(type){ +var s1; +var s2; +var isNMR = this.isNMR(); +switch (type) { +case JSV.common.Annotation.AType.Integration: +return Clazz.newArray(-1, [null, Clazz.newIntArray(-1, [1]), null]); +case JSV.common.Annotation.AType.Measurements: +s1 = (isNMR ? Clazz.newArray(-1, ["Hz", "ppm"]) : Clazz.newArray(-1, [""])); +s2 = (this.isHNMR() ? Clazz.newIntArray(-1, [1, 4]) : Clazz.newIntArray(-1, [1, 3])); +return Clazz.newArray(-1, [s1, s2, Integer.$valueOf(0)]); +case JSV.common.Annotation.AType.PeakList: +s1 = (isNMR ? Clazz.newArray(-1, ["Hz", "ppm"]) : Clazz.newArray(-1, [""])); +s2 = (this.isHNMR() ? Clazz.newIntArray(-1, [1, 2]) : Clazz.newIntArray(-1, [1, 1])); +return Clazz.newArray(-1, [s1, s2, Integer.$valueOf(isNMR ? 1 : 0)]); +case JSV.common.Annotation.AType.NONE: +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +return null; +}, "JSV.common.Annotation.AType"); +Clazz.defineMethod(c$, "getPeakListArray", +function(m, last, maxY){ +var x = m.getXVal(); +var y = m.getYVal(); +if (this.isNMR()) y /= maxY; +var dx = Math.abs(x - last[0]); +last[0] = x; +var ddx = dx + last[1]; +last[1] = dx; +var dddx = ddx + last[2]; +last[2] = ddx; +if (this.isNMR()) { +return Clazz.newDoubleArray(-1, [x, y, x * this.observedFreq, (dx * this.observedFreq > 20 ? 0 : dx * this.observedFreq), (ddx * this.observedFreq > 20 ? 0 : ddx * this.observedFreq), (dddx * this.observedFreq > 20 ? 0 : dddx * this.observedFreq)]); +}return Clazz.newDoubleArray(-1, [x, y]); +}, "JSV.common.Measurement,~A,~N"); +Clazz.defineMethod(c$, "finalizeCoordinates", +function(){ +var freq = (Double.isNaN(this.freq2dX) ? this.observedFreq : this.freq2dX); +var isHz = (freq != 1.7976931348623157E308 && this.getXUnits().toUpperCase().equals("HZ")); +if (this.fileShiftRef != 1.7976931348623157E308 && freq != 1.7976931348623157E308 && this.dataType.toUpperCase().contains("SPECTRUM") && this.jcampdx.indexOf("JEOL") < 0) { +this.applyShiftReference(isHz ? freq : 1, this.fileShiftRef); +}if (this.fileFirstX > this.fileLastX) JSV.common.Coordinate.reverse(this.xyCoords); +if (isHz) { +JSV.common.Coordinate.applyScale(this.xyCoords, (1.0 / freq), 1); +this.setXUnits("PPM"); +this.setHZtoPPM(true); +}}); +Clazz.defineMethod(c$, "setShiftReference", +function(shift, pt, type){ +this.fileShiftRef = shift; +this.fileShiftRefDataPt = (pt > 0 ? pt : 1); +this.fileShiftRefType = type; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "isShiftTypeSpecified", +function(){ +return (this.fileShiftRefType != -1); +}); +Clazz.defineMethod(c$, "applyShiftReference", +function(referenceFreq, shift){ +if (this.fileShiftRefDataPt > this.xyCoords.length || this.fileShiftRefDataPt < 0) return; +var coord; +switch (this.fileShiftRefType) { +case 0: +shift = this.xyCoords[this.fileShiftRefDataPt - 1].getXVal() - shift * referenceFreq; +break; +case 1: +shift = this.fileFirstX - shift * referenceFreq; +break; +case 2: +shift = this.fileLastX + shift; +break; +} +for (var index = 0; index < this.xyCoords.length; index++) { +coord = this.xyCoords[index]; +coord.setXVal(coord.getXVal() - shift); +this.xyCoords[index] = coord; +} +}, "~N,~N"); +c$.gyroData = Clazz.newDoubleArray(-1, [1, 42.5774806, 2, 6.53590131, 3, 45.4148, 3, 32.436, 6, 6.2661, 7, 16.5483, 9, 5.9842, 10, 4.5752, 11, 13.663, 13, 10.70839657, 14, 3.07770646, 15, 4.31726570, 17, 5.7742, 19, 40.07757016, 21, 3.3631, 23, 11.26952167, 25, 2.6083, 27, 11.1031, 29, 8.4655, 31, 17.25144090, 33, 3.2717, 35, 4.1765, 37, 3.4765, 37, 5.819, 39, 3.46, 39, 1.9893, 40, 2.4737, 41, 1.0919, 43, 2.8688, 45, 10.3591, 47, 2.4041, 49, 2.4048, 50, 4.2505, 51, 11.2133, 53, 2.4115, 55, 10.5763, 57, 1.3816, 59, 10.077, 61, 3.8114, 63, 11.2982, 65, 12.103, 67, 2.6694, 69, 10.2478, 71, 13.0208, 73, 1.4897, 75, 7.315, 77, 8.1571, 79, 10.7042, 81, 11.5384, 83, 1.6442, 85, 4.1254, 87, 13.9811, 87, 1.8525, 89, 2.0949, 91, 3.9748, 93, 10.4523, 95, 2.7874, 97, 2.8463, 99, 9.6294, 99, 1.9553, 101, 2.1916, 103, 1.3477, 105, 1.957, 107, 1.7331, 109, 1.9924, 111, 9.0692, 113, 9.4871, 113, 9.3655, 115, 9.3856, 115, 14.0077, 117, 15.261, 119, 15.966, 121, 10.2551, 123, 5.5532, 123, 11.2349, 125, 13.5454, 127, 8.5778, 129, 11.8604, 131, 3.5159, 133, 5.6234, 135, 4.2582, 137, 4.7634, 138, 5.6615, 139, 6.0612, 137, 4.88, 139, 5.39, 141, 2.37, 141, 13.0359, 143, 2.319, 145, 1.429, 143, 11.59, 147, 5.62, 147, 1.7748, 149, 14631, 151, 10.5856, 153, 4.6745, 155, 1.312, 157, 1.72, 159, 10.23, 161, 1.4654, 163, 2.0508, 165, 9.0883, 167, 1.2281, 169, 3.531, 171, 7.5261, 173, 2.073, 175, 4.8626, 176, 3.451, 177, 1.7282, 179, 1.0856, 180, 4.087, 181, 5.1627, 183, 1.7957, 185, 9.7176, 187, 9.817, 187, 0.9856, 189, 3.3536, 191, 0.7658, 191, 0.8319, 195, 9.2922, 197, 0.7406, 199, 7.7123, 201, 2.8469, 203, 24.7316, 205, 24.9749, 207, 9.034, 209, 6.963, 209, 11.7, 211, 9.16, 223, 5.95, 223, 1.3746, 225, 11.187, 227, 5.6, 229, 1.4, 231, 10.2, 235, 0.83, 237, 9.57, 239, 3.09, 243, 4.6, 1E100]); +c$.gyroMap = new java.util.Hashtable(); +{ +for (var i = 0, n = JSV.source.JDXDataObject.gyroData.length - 1; i < n; i += 2) JSV.source.JDXDataObject.gyroMap.put("" + Clazz.doubleToInt(JSV.source.JDXDataObject.gyroData[i]), Double.$valueOf(JSV.source.JDXDataObject.gyroData[i + 1])); + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXDecompressor.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXDecompressor.js new file mode 100755 index 000000000000..eb2938e563d2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXDecompressor.js @@ -0,0 +1,328 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(["java.util.Iterator"], "JSV.source.JDXDecompressor", ["JSV.common.Coordinate", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.xFactor = 0; +this.yFactor = 0; +this.nPoints = 0; +this.ich = 0; +this.t = null; +this.firstX = 0; +this.lastX = 0; +this.maxY = 4.9E-324; +this.minY = 1.7976931348623157E308; +this.debugging = false; +this.xyCoords = null; +this.line = null; +this.lineLen = 0; +this.errorLog = null; +this.lastDif = -2147483648; +this.dupCount = 0; +this.nptsFound = 0; +this.lastY = 0; +this.isDIF = true; +Clazz.instantialize(this, arguments);}, JSV.source, "JDXDecompressor", null, java.util.Iterator); +Clazz.makeConstructor(c$, +function(t, firstX, lastX, xFactor, yFactor, nPoints){ +this.t = t; +this.firstX = firstX; +this.lastX = lastX; +this.xFactor = xFactor; +this.yFactor = yFactor; +this.nPoints = nPoints; +this.debugging = JU.Logger.isActiveLevel(6); +}, "JSV.source.JDXSourceStreamTokenizer,~N,~N,~N,~N,~N"); +Clazz.makeConstructor(c$, +function(line, lastY){ +this.line = line.trim(); +this.lineLen = line.length; +this.lastY = lastY; +}, "~S,~N"); +Clazz.defineMethod(c$, "getMinY", +function(){ +return this.minY; +}); +Clazz.defineMethod(c$, "getMaxY", +function(){ +return this.maxY; +}); +Clazz.defineMethod(c$, "decompressData", +function(errorLog){ +this.errorLog = errorLog; +var deltaXcalc = JSV.common.Coordinate.deltaX(this.lastX, this.firstX, this.nPoints); +if (this.debugging) this.logError("firstX=" + this.firstX + " lastX=" + this.lastX + " xFactor=" + this.xFactor + " yFactor=" + this.yFactor + " deltaX=" + deltaXcalc + " nPoints=" + this.nPoints); +this.xyCoords = new Array(this.nPoints); +var difFracMax = 0.5; +var prevXcheck = 0; +var prevIpt = 0; +var lastXExpected = this.lastX; +var x = this.lastX = this.firstX; +var lastLine = null; +var ipt = 0; +var yval = 0; +var haveWarned = false; +var lineNumber = this.t.labelLineNo; +try { +while ((this.line = this.t.readLineTrimmed()) != null && this.line.indexOf("##") < 0) { +lineNumber++; +if ((this.lineLen = this.line.length) == 0) continue; +this.ich = 0; +var isCheckPoint = this.isDIF; +var xcheck = this.readSignedFloat() * this.xFactor; +yval = this.nextValue(yval); +if (!isCheckPoint && ipt > 0) x += deltaXcalc; +if (this.debugging) this.logError("Line: " + lineNumber + " isCP=" + isCheckPoint + "\t>>" + this.line + "<<\n x, xcheck " + x + " " + x / this.xFactor + " " + xcheck / this.xFactor + " " + deltaXcalc / this.xFactor); +var y = yval * this.yFactor; +var point = new JSV.common.Coordinate().set(x, y); +if (ipt == 0 || !isCheckPoint) { +this.addPoint(point, ipt++); +} else if (ipt < this.nPoints) { +var lastY = this.xyCoords[ipt - 1].getYVal(); +if (y != lastY) { +this.xyCoords[ipt - 1] = point; +this.logError(lastLine + "\n" + this.line + "\nY-value Checkpoint Error! Line " + lineNumber + " for y=" + y + " yLast=" + lastY); +}if (xcheck == prevXcheck || (xcheck < prevXcheck) != (deltaXcalc < 0)) { +this.logError(lastLine + "\n" + this.line + "\nX-sequence Checkpoint Error! Line " + lineNumber + " order for xCheck=" + xcheck + " after prevXCheck=" + prevXcheck); +}var xcheckDif = Math.abs(xcheck - prevXcheck); +var xiptDif = Math.abs((ipt - prevIpt) * deltaXcalc); +var fracDif = Math.abs((xcheckDif - xiptDif)) / xcheckDif; +if (this.debugging) System.err.println("JDXD fracDif = " + xcheck + "\t" + prevXcheck + "\txcheckDif=" + xcheckDif + "\txiptDif=" + xiptDif + "\tf=" + fracDif); +if (fracDif > difFracMax) { +this.logError(lastLine + "\n" + this.line + "\nX-value Checkpoint Error! Line " + lineNumber + " expected " + xiptDif + " but X-Sequence Check difference reads " + xcheckDif); +}}prevIpt = (ipt == 1 ? 0 : ipt); +prevXcheck = xcheck; +var nX = 0; +while (this.hasNext()) { +var ich0 = this.ich; +if (this.debugging) this.logError("line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(this.ich)); +if (Double.isNaN(yval = this.nextValue(yval))) { +this.logError("There was an error reading line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(ich0)); +} else { +x += deltaXcalc; +if (yval == 1.7976931348623157E308) { +yval = 0; +this.logError("Point marked invalid '?' for line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(ich0)); +}this.addPoint( new JSV.common.Coordinate().set(x, yval * this.yFactor), ipt++); +if (this.debugging) this.logError("nx=" + ++nX + " " + x + " " + x / this.xFactor + " yval=" + yval); +}} +this.lastX = x; +if (!haveWarned && ipt > this.nPoints) { +this.logError("! points overflow nPoints!"); +haveWarned = true; +}lastLine = this.line; +} +} catch (ioe) { +if (Clazz.exceptionOf(ioe,"java.io.IOException")){ +ioe.printStackTrace(); +} else { +throw ioe; +} +} +this.checkZeroFill(ipt, lastXExpected); +return this.xyCoords; +}, "JU.SB"); +Clazz.defineMethod(c$, "checkZeroFill", +function(ipt, lastXExpected){ +this.nptsFound = ipt; +if (this.nPoints == this.nptsFound) { +if (Math.abs(lastXExpected - this.lastX) > 0.00001) this.logError("Something went wrong! The last X value was " + this.lastX + " but expected " + lastXExpected); +} else { +this.logError("Decompressor did not find " + this.nPoints + " points -- instead " + this.nptsFound + " xyCoords.length set to " + this.nPoints); +for (var i = this.nptsFound; i < this.nPoints; i++) this.addPoint( new JSV.common.Coordinate().set(0, NaN), i); + +}}, "~N,~N"); +Clazz.defineMethod(c$, "addPoint", +function(pt, ipt){ +if (ipt >= this.nPoints) return; +this.xyCoords[ipt] = pt; +var y = pt.getYVal(); +if (y > this.maxY) this.maxY = y; + else if (y < this.minY) this.minY = y; +if (this.debugging) this.logError("Coord: " + ipt + pt); +}, "JSV.common.Coordinate,~N"); +Clazz.defineMethod(c$, "logError", +function(s){ +if (this.debugging) JU.Logger.debug(s); +System.err.println(s); +this.errorLog.append(s).appendC('\n'); +}, "~S"); +Clazz.defineMethod(c$, "nextValue", +function(yval){ +if (this.dupCount > 0) return this.getDuplicate(yval); +var ch = this.skipUnknown(); +switch (JSV.source.JDXDecompressor.actions[ch.charCodeAt(0)]) { +case 1: +this.isDIF = true; +return yval + (this.lastDif = this.readNextInteger(ch == '%' ? 0 : ch <= 'R' ? ch.charCodeAt(0) - 73 : 105 - ch.charCodeAt(0))); +case 2: +this.dupCount = this.readNextInteger((ch == 's' ? 9 : ch.charCodeAt(0) - 82)) - 1; +return this.getDuplicate(yval); +case 3: +yval = this.readNextSqueezedNumber(ch); +break; +case 4: +this.ich--; +yval = this.readSignedFloat(); +break; +case -1: +yval = 1.7976931348623157E308; +break; +default: +yval = NaN; +break; +} +this.isDIF = false; +return yval; +}, "~N"); +Clazz.defineMethod(c$, "skipUnknown", +function(){ +var ch = '\u0000'; +while (this.ich < this.lineLen && JSV.source.JDXDecompressor.actions[(ch = this.line.charAt(this.ich++)).charCodeAt(0)] == 0) { +} +return ch; +}); +Clazz.defineMethod(c$, "readSignedFloat", +function(){ +var ich0 = this.ich; +var ch = '\u0000'; +while (this.ich < this.lineLen && " ,\t\n".indexOf(ch = this.line.charAt(this.ich)) >= 0) this.ich++; + +var factor = 1; +switch ((ch).charCodeAt(0)) { +case 45: +factor = -1; +case 43: +ich0 = ++this.ich; +break; +} +if (this.scanToNonnumeric() == 'E' && this.ich + 3 < this.lineLen) { +switch ((this.line.charAt(this.ich + 1)).charCodeAt(0)) { +case 45: +case 43: +this.ich += 4; +if (this.ich < this.lineLen && (ch = this.line.charAt(this.ich)) >= '0' && ch <= '9') this.ich++; +break; +} +}return factor * Double.parseDouble(this.line.substring(ich0, this.ich)); +}); +Clazz.defineMethod(c$, "getDuplicate", +function(yval){ +this.dupCount--; +return (this.isDIF ? yval + this.lastDif : yval); +}, "~N"); +Clazz.defineMethod(c$, "readNextInteger", +function(n){ +var c = String.fromCharCode(0); +while (this.ich < this.lineLen && (c = this.line.charAt(this.ich)) >= '0' && c <= '9') { +n = n * 10 + (n < 0 ? 48 - c.charCodeAt(0) : c.charCodeAt(0) - 48); +this.ich++; +} +return n; +}, "~N"); +Clazz.defineMethod(c$, "readNextSqueezedNumber", +function(ch){ +var ich0 = this.ich; +this.scanToNonnumeric(); +return Double.parseDouble((ch.charCodeAt(0) > 0x60 ? 0x60 - ch.charCodeAt(0) : ch.charCodeAt(0) - 0x40) + this.line.substring(ich0, this.ich)); +}, "~S"); +Clazz.defineMethod(c$, "scanToNonnumeric", +function(){ +var ch = String.fromCharCode(0); +while (this.ich < this.lineLen && ((ch = this.line.charAt(this.ich)) == '.' || ch >= '0' && ch <= '9')) this.ich++; + +return (this.ich < this.lineLen ? ch : '\0'); +}); +Clazz.defineMethod(c$, "getNPointsFound", +function(){ +return this.nptsFound; +}); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return (this.ich < this.lineLen || this.dupCount > 0); +}); +Clazz.overrideMethod(c$, "next", +function(){ +return (this.hasNext() ? Double.$valueOf(this.lastY = this.nextValue(this.lastY)) : null); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +}); +c$.actions = Clazz.newIntArray (255, 0); +{ +for (var i = 0x25; i <= 0x73; i++) { +var c = String.fromCharCode(i); +switch ((c).charCodeAt(0)) { +case 37: +case 74: +case 75: +case 76: +case 77: +case 78: +case 79: +case 80: +case 81: +case 82: +case 106: +case 107: +case 108: +case 109: +case 110: +case 111: +case 112: +case 113: +case 114: +JSV.source.JDXDecompressor.actions[i] = 1; +break; +case 43: +case 45: +case 46: +case 48: +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +case 55: +case 56: +case 57: +JSV.source.JDXDecompressor.actions[i] = 4; +break; +case 63: +JSV.source.JDXDecompressor.actions[i] = -1; +break; +case 64: +case 65: +case 66: +case 67: +case 68: +case 69: +case 70: +case 71: +case 72: +case 73: +case 97: +case 98: +case 99: +case 100: +case 101: +case 102: +case 103: +case 104: +case 105: +JSV.source.JDXDecompressor.actions[i] = 3; +break; +case 83: +case 84: +case 85: +case 86: +case 87: +case 88: +case 89: +case 90: +case 115: +JSV.source.JDXDecompressor.actions[i] = 2; +break; +} +} +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXHeader.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXHeader.js new file mode 100755 index 000000000000..5ebed5b4395e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXHeader.js @@ -0,0 +1,133 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(["JU.Lst"], "JSV.source.JDXHeader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.title = ""; +this.jcampdx = "5.01"; +this.dataType = ""; +this.dataClass = ""; +this.origin = ""; +this.owner = "PUBLIC DOMAIN"; +this.longDate = ""; +this.date = ""; +this.time = ""; +this.qualifiedType = null; +this.headerTable = null; +Clazz.instantialize(this, arguments);}, JSV.source, "JDXHeader", null); +Clazz.prepareFields (c$, function(){ +this.headerTable = new JU.Lst(); +}); +Clazz.defineMethod(c$, "setTitle", +function(title){ +this.title = title; +}, "~S"); +Clazz.defineMethod(c$, "setJcampdx", +function(versionNum){ +this.jcampdx = versionNum; +}, "~S"); +Clazz.defineMethod(c$, "setDataType", +function(dataType){ +this.dataType = dataType; +}, "~S"); +Clazz.defineMethod(c$, "setDataClass", +function(dataClass){ +this.dataClass = dataClass; +}, "~S"); +Clazz.defineMethod(c$, "setOrigin", +function(origin){ +this.origin = origin; +}, "~S"); +Clazz.defineMethod(c$, "setOwner", +function(owner){ +this.owner = owner; +}, "~S"); +Clazz.defineMethod(c$, "setLongDate", +function(longDate){ +this.longDate = longDate; +}, "~S"); +Clazz.defineMethod(c$, "setDate", +function(date){ +this.date = date; +}, "~S"); +Clazz.defineMethod(c$, "setTime", +function(time){ +this.time = time; +}, "~S"); +Clazz.defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +c$.getTypeName = Clazz.defineMethod(c$, "getTypeName", +function(type){ +type = type.toUpperCase(); +for (var i = 0; i < JSV.source.JDXHeader.typeNames.length; i++) if (JSV.source.JDXHeader.typeNames[i].startsWith(type)) { +return JSV.source.JDXHeader.typeNames[i].substring(18); +} +return type; +}, "~S"); +Clazz.defineMethod(c$, "getQualifiedDataType", +function(){ +return (this.qualifiedType == null ? (this.qualifiedType = JSV.source.JDXHeader.getTypeName(this.dataType)) : this.qualifiedType); +}); +Clazz.defineMethod(c$, "getJcampdx", +function(){ +return this.jcampdx; +}); +Clazz.defineMethod(c$, "getDataType", +function(){ +return this.dataType; +}); +Clazz.defineMethod(c$, "getOrigin", +function(){ +return this.origin; +}); +Clazz.defineMethod(c$, "getOwner", +function(){ +return this.owner; +}); +Clazz.defineMethod(c$, "getLongDate", +function(){ +return this.longDate; +}); +Clazz.defineMethod(c$, "getDate", +function(){ +return this.date; +}); +Clazz.defineMethod(c$, "getTime", +function(){ +return this.time; +}); +Clazz.defineMethod(c$, "getDataClass", +function(){ +return this.dataClass; +}); +Clazz.defineMethod(c$, "setHeaderTable", +function(table){ +this.headerTable = table; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getHeaderTable", +function(){ +return this.headerTable; +}); +Clazz.defineMethod(c$, "getHeaderRowDataAsArray", +function(addDataClass, nMore){ +var rowData = new Array((addDataClass ? 6 : 5) + this.headerTable.size() + nMore); +var i = 0; +rowData[i++] = Clazz.newArray(-1, ["##TITLE", this.title]); +rowData[i++] = Clazz.newArray(-1, ["##JCAMP-DX", this.jcampdx]); +rowData[i++] = Clazz.newArray(-1, ["##DATA TYPE", this.dataType]); +if (addDataClass) rowData[i++] = Clazz.newArray(-1, ["##DATA CLASS", this.dataClass]); +rowData[i++] = Clazz.newArray(-1, ["##ORIGIN", this.origin]); +rowData[i++] = Clazz.newArray(-1, ["##OWNER", this.owner]); +for (var j = 0; j < this.headerTable.size(); j++) rowData[i++] = this.getRow(j); + +return rowData; +}, "~B,~N"); +Clazz.defineMethod(c$, "getRow", +function(j){ +var s = this.headerTable.get(j); +{ +return [s[0], JU.PT.rep(s[1], "<", "<")]; +}}, "~N"); +c$.typeNames = Clazz.newArray(-1, ["ND NMR SPECTRUM NMR", "NMR SPECTRUM NMR", "INFRARED SPECTRUM IR", "MASS SPECTRUM MS", "RAMAN SPECTRUM RAMAN", "GAS CHROMATOGRAM GC", "UV/VIS SPECTRUM UV/VIS"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXReader.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXReader.js new file mode 100755 index 000000000000..fb07a05cc5ae --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXReader.js @@ -0,0 +1,735 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(["J.api.JmolJDXMOLReader"], "JSV.source.JDXReader", ["java.io.BufferedReader", "$.StringReader", "java.util.Hashtable", "$.LinkedHashMap", "$.StringTokenizer", "javajs.api.Interface", "JU.AU", "$.Lst", "$.PT", "$.Rdr", "$.SB", "JSV.common.Coordinate", "$.JSVFileManager", "$.JSViewer", "$.PeakInfo", "$.Spectrum", "JSV.exception.JSVException", "JSV.source.JDXDecompressor", "$.JDXSource", "$.JDXSourceStreamTokenizer", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.nmrMaxY = NaN; +this.source = null; +this.t = null; +this.errorLog = null; +this.obscure = false; +this.done = false; +this.isZipFile = false; +this.filePath = null; +this.loadImaginary = true; +this.isSimulation = false; +this.ignoreShiftReference = false; +this.ignorePeakTables = false; +this.lastErrPath = null; +this.isTabularData = false; +this.firstSpec = 0; +this.lastSpec = 0; +this.nSpec = 0; +this.blockID = 0; +this.mpr = null; +this.reader = null; +this.modelSpectrum = null; +this.acdAssignments = null; +this.acdMolFile = null; +this.peakData = null; +Clazz.instantialize(this, arguments);}, JSV.source, "JDXReader", null, J.api.JmolJDXMOLReader); +Clazz.makeConstructor(c$, +function(filePath, obscure, loadImaginary, iSpecFirst, iSpecLast, nmrNormalization){ +filePath = JU.PT.trimQuotes(filePath); +this.isSimulation = (filePath != null && filePath.startsWith("http://SIMULATION/")); +if (this.isSimulation) { +this.nmrMaxY = (Float.isNaN(nmrNormalization) ? 10000 : nmrNormalization); +}this.filePath = filePath; +this.obscure = obscure; +this.firstSpec = iSpecFirst; +this.lastSpec = iSpecLast; +this.loadImaginary = loadImaginary; +}, "~S,~B,~B,~N,~N,~N"); +c$.getVarList = Clazz.defineMethod(c$, "getVarList", +function(dataClass){ +var index = JSV.source.JDXReader.VAR_LIST_TABLE[0].indexOf(dataClass); +return JSV.source.JDXReader.VAR_LIST_TABLE[1].substring(index + 1, index + 12).trim(); +}, "~S"); +c$.createJDXSourceFromStream = Clazz.defineMethod(c$, "createJDXSourceFromStream", +function($in, obscure, loadImaginary, nmrMaxY){ +return JSV.source.JDXReader.createJDXSource(null, $in, "stream", obscure, loadImaginary, -1, -1, nmrMaxY); +}, "java.io.InputStream,~B,~B,~N"); +c$.getHeaderMap = Clazz.defineMethod(c$, "getHeaderMap", +function($in, map){ +return JSV.source.JDXReader.getHeaderMapS($in, map, null); +}, "java.io.InputStream,java.util.Map"); +c$.getHeaderMapS = Clazz.defineMethod(c$, "getHeaderMapS", +function($in, map, suffix){ +if (map == null) map = new java.util.LinkedHashMap(); +var hlist = JSV.source.JDXReader.createJDXSource(null, $in, null, false, false, 0, -1, 0).getJDXSpectrum(0).headerTable; +for (var i = 0, n = hlist.size(); i < n; i++) { +var h = hlist.get(i); +map.put((suffix == null ? h[2] : h[2] + suffix), h[1]); +} +return map; +}, "java.io.InputStream,java.util.Map,~S"); +c$.createJDXSource = Clazz.defineMethod(c$, "createJDXSource", +function(file, $in, filePath, obscure, loadImaginary, iSpecFirst, iSpecLast, nmrMaxY){ +var isHeaderOnly = (iSpecLast < iSpecFirst); +var data = null; +var br; +var bytes = null; +if (JU.AU.isAB($in)) { +bytes = $in; +if (JU.Rdr.isZipB(bytes)) { +return JSV.source.JDXReader.readBrukerFileZip(bytes, file == null ? filePath : file.getFullPath()); +}}if ((typeof($in)=='string') || bytes != null) { +if ((typeof($in)=='string')) data = $in; +br = JSV.common.JSVFileManager.getBufferedReaderForStringOrBytes($in); +} else if (Clazz.instanceOf($in,"java.io.InputStream")) { +br = JSV.common.JSVFileManager.getBufferedReaderForInputStream($in); +} else { +br = $in; +}var header = null; +var source = null; +try { +if (br == null) { +if (file != null && file.isDirectory()) return JSV.source.JDXReader.readBrukerFileDir(file.getFullPath()); +br = JSV.common.JSVFileManager.getBufferedReaderFromName(filePath, "##TITLE"); +}if (!isHeaderOnly) { +br.mark(400); +var chs = Clazz.newCharArray (400, '\0'); +br.read(chs, 0, 400); +br.reset(); +header = String.instantialize(chs); +if (header.startsWith("PK")) { +br.close(); +return JSV.source.JDXReader.readBrukerFileZip(null, file.getFullPath()); +}if (header.indexOf('\0') >= 0 || header.indexOf("##TITLE= Parameter file") == 0 || header.indexOf("##TITLE= Audit trail") == 0) { +br.close(); +return JSV.source.JDXReader.readBrukerFileDir(file.getParentAsFile().getFullPath()); +}var pt1 = header.indexOf('#'); +var pt2 = header.indexOf('<'); +if (pt1 < 0 || pt2 >= 0 && pt2 < pt1) { +var xmlType = header.toLowerCase(); +xmlType = (xmlType.contains(""); +break; +}continue; +}if (!isHeaderOnly) { +if (label.equals("##DATATYPE") && value.toUpperCase().equals("LINK")) { +this.getBlockSpectra(dataLDRTable); +spectrum = null; +continue; +}if (label.equals("##NTUPLES") || label.equals("##VARNAME")) { +this.getNTupleSpectra(dataLDRTable, spectrum, label); +spectrum = null; +continue; +}}if (label.equals("##JCAMPDX")) { +this.setVenderSpecificValues(this.t.rawLine); +}if (spectrum == null) spectrum = new JSV.common.Spectrum(); +this.processLabel(spectrum, dataLDRTable, label, value, isHeaderOnly); +} +if (isHeaderOnly && spectrum != null) this.addSpectrum(spectrum, false); +} +if (!isOK) throw new JSV.exception.JSVException("##TITLE record not found"); +this.source.setErrorLog(this.errorLog.toString()); +return this.source; +}, "~O,~B"); +Clazz.defineMethod(c$, "processLabel", +function(spectrum, dataLDRTable, label, value, isHeaderOnly){ +if (!this.readDataLabel(spectrum, label, value, this.errorLog, this.obscure, isHeaderOnly) && !isHeaderOnly) return; +JSV.source.JDXReader.addHeader(dataLDRTable, this.t.rawLabel, value); +if (!isHeaderOnly) this.checkCustomTags(spectrum, label, value); +}, "JSV.common.Spectrum,JU.Lst,~S,~S,~B"); +Clazz.defineMethod(c$, "logError", +function(err){ +this.errorLog.append(this.filePath == null || this.filePath.equals(this.lastErrPath) ? "" : this.filePath).append("\n").append(err).append("\n"); +this.lastErrPath = this.filePath; +}, "~S"); +Clazz.defineMethod(c$, "setVenderSpecificValues", +function(rawLine){ +if (rawLine.indexOf("JEOL") >= 0) { +System.out.println("Skipping ##SHIFTREFERENCE for JEOL " + rawLine); +this.ignoreShiftReference = true; +}if (rawLine.indexOf("MestReNova") >= 0) { +this.ignorePeakTables = true; +}}, "~S"); +Clazz.defineMethod(c$, "getValue", +function(label){ +var value = (this.isTabularDataLabel(label) ? "" : this.t.getValue()); +return ("##END".equals(label) ? null : value); +}, "~S"); +Clazz.defineMethod(c$, "isTabularDataLabel", +function(label){ +return (this.isTabularData = ("##DATATABLE##PEAKTABLE##XYDATA##XYPOINTS#".indexOf(label + "#") >= 0)); +}, "~S"); +Clazz.defineMethod(c$, "addSpectrum", +function(spectrum, forceSub){ +if (!this.loadImaginary && spectrum.isImaginary()) { +JU.Logger.info("FileReader skipping imaginary spectrum -- use LOADIMAGINARY TRUE to load this spectrum."); +return true; +}if (this.acdAssignments != null) { +if (!spectrum.dataType.equals("MASS SPECTRUM") && !spectrum.isContinuous()) { +JU.Logger.info("Skipping ACD Labs line spectrum for " + spectrum); +return true; +}if (this.acdAssignments.size() > 0) { +try { +this.mpr.setACDAssignments(spectrum.title, spectrum.getTypeLabel(), this.source.peakCount, this.acdAssignments, this.acdMolFile); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info("Failed to create peak data: " + e); +} else { +throw e; +} +} +}if (this.acdMolFile != null) JSV.common.JSVFileManager.cachePut("mol", this.acdMolFile); +}if (!Float.isNaN(this.nmrMaxY)) spectrum.normalizeSimulation(this.nmrMaxY); + else if (spectrum.getMaxY() >= 10000) spectrum.normalizeSimulation(1000); +if (this.isSimulation) spectrum.setSimulated(this.filePath); +this.nSpec++; +if (this.firstSpec > 0 && this.nSpec < this.firstSpec) return true; +if (this.lastSpec > 0 && this.nSpec > this.lastSpec) return !(this.done = true); +spectrum.setBlockID(this.blockID); +this.source.addJDXSpectrum(null, spectrum, forceSub); +return true; +}, "JSV.common.Spectrum,~B"); +Clazz.defineMethod(c$, "getBlockSpectra", +function(sourceLDRTable){ +JU.Logger.debug("--JDX block start--"); +var label = ""; +var value = null; +var isNew = (this.source.type == 0); +var forceSub = false; +while ((label = this.t.getLabel()) != null && !label.equals("##TITLE")) { +value = this.getValue(label); +if (isNew && !JSV.source.JDXReader.readHeaderLabel(this.source, label, value, this.errorLog, this.obscure)) JSV.source.JDXReader.addHeader(sourceLDRTable, this.t.rawLabel, value); +if (label.equals("##BLOCKS")) { +var nBlocks = JU.PT.parseInt(value); +if (nBlocks > 100 && this.firstSpec <= 0) forceSub = true; +}} +value = this.getValue(label); +if (!"##TITLE".equals(label)) throw new JSV.exception.JSVException("Unable to read block source"); +if (isNew) this.source.setHeaderTable(sourceLDRTable); +this.source.type = 1; +this.source.isCompoundSource = true; +var dataLDRTable; +var spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +this.readDataLabel(spectrum, label, value, this.errorLog, this.obscure, false); +try { +var tmp; +while ((tmp = this.t.getLabel()) != null) { +if ((value = this.getValue(tmp)) == null && "##END".equals(label)) { +JU.Logger.debug("##END= " + this.t.getValue()); +break; +}label = tmp; +if (this.isTabularData) { +this.processTabularData(spectrum, dataLDRTable, label, false); +continue; +}if (label.equals("##DATATYPE")) { +if (value.toUpperCase().equals("LINK")) { +this.getBlockSpectra(dataLDRTable); +spectrum = null; +label = null; +} else if (value.toUpperCase().startsWith("NMR PEAK")) { +if (this.ignorePeakTables) { +this.done = true; +return this.source; +}}} else if (label.equals("##NTUPLES") || label.equals("##VARNAME")) { +this.getNTupleSpectra(dataLDRTable, spectrum, label); +spectrum = null; +label = ""; +}if (this.done) break; +if (spectrum == null) { +spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +if (label === "") continue; +if (label == null) { +label = "##END"; +continue; +}}if (value == null) { +if (spectrum.getXYCoords().length > 0 && !this.addSpectrum(spectrum, forceSub)) return this.source; +spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +continue; +}this.processLabel(spectrum, dataLDRTable, label, value, false); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (!JSV.common.JSViewer.isJS) e.printStackTrace(); +throw new JSV.exception.JSVException(e.getMessage()); +} else { +throw e; +} +} +this.addErrorLogSeparator(); +this.source.setErrorLog(this.errorLog.toString()); +JU.Logger.debug("--JDX block end--"); +return this.source; +}, "JU.Lst"); +Clazz.defineMethod(c$, "addErrorLogSeparator", +function(){ +if (this.errorLog.length() > 0 && this.errorLog.lastIndexOf("=====================\n") != this.errorLog.length() - "=====================\n".length) this.logError("=====================\n"); +}); +Clazz.defineMethod(c$, "getNTupleSpectra", +function(sourceLDRTable, spectrum0, label){ +var minMaxY = Clazz.newDoubleArray(-1, [1.7976931348623157E308, 4.9E-324]); +this.blockID = Math.random(); +var isOK = true; +if (this.firstSpec > 0) spectrum0.setNumDim(1); +var isVARNAME = label.equals("##VARNAME"); +if (!isVARNAME) { +label = ""; +}var nTupleTable = new java.util.Hashtable(); +var plotSymbols = new Array(2); +var isNew = (this.source.type == 0); +if (isNew) { +this.source.type = 2; +this.source.isCompoundSource = true; +this.source.setHeaderTable(sourceLDRTable); +}while (!(label = (isVARNAME ? label : this.t.getLabel())).equals("##PAGE")) { +isVARNAME = false; +var st = new java.util.StringTokenizer(this.t.getValue(), ","); +var attrList = new JU.Lst(); +while (st.hasMoreTokens()) attrList.addLast(st.nextToken().trim()); + +nTupleTable.put(label, attrList); +} +var symbols = nTupleTable.get("##SYMBOL"); +if (!label.equals("##PAGE")) throw new JSV.exception.JSVException("Error Reading NTuple Source"); +var page = this.t.getValue(); +var spectrum = null; +var isFirst = true; +while (!this.done) { +if ((label = this.t.getLabel()).equals("##ENDNTUPLES")) { +this.t.getValue(); +break; +}if (label.equals("##PAGE")) { +page = this.t.getValue(); +continue; +}if (spectrum == null) { +spectrum = new JSV.common.Spectrum(); +spectrum0.copyTo(spectrum); +spectrum.setTitle(spectrum0.getTitle()); +if (!spectrum.is1D()) { +var pt = page.indexOf('='); +if (pt >= 0) try { +spectrum.setY2D(this.parseAFFN(page.substring(0, pt), page.substring(pt + 1).trim())); +var y2dUnits = page.substring(0, pt).trim(); +var i = symbols.indexOf(y2dUnits); +if (i >= 0) spectrum.setY2DUnits(nTupleTable.get("##UNITS").get(i)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}var dataLDRTable = new JU.Lst(); +spectrum.setHeaderTable(dataLDRTable); +while (!label.equals("##DATATABLE")) { +JSV.source.JDXReader.addHeader(dataLDRTable, this.t.rawLabel, this.t.getValue()); +label = this.t.getLabel(); +} +var continuous = true; +var line = this.t.flushLine(); +if (line.trim().indexOf("PEAKS") > 0) continuous = false; +var index1 = line.indexOf('('); +var index2 = line.lastIndexOf(')'); +if (index1 == -1 || index2 == -1) throw new JSV.exception.JSVException("Variable List not Found"); +var varList = line.substring(index1, index2 + 1); +var countSyms = 0; +for (var i = 0; i < symbols.size(); i++) { +var sym = symbols.get(i).trim(); +if (varList.indexOf(sym) != -1) { +plotSymbols[countSyms++] = sym; +}if (countSyms == 2) break; +} +this.setTabularDataType(spectrum, "##" + (continuous ? "XYDATA" : "PEAKTABLE")); +if (!this.readNTUPLECoords(spectrum, nTupleTable, plotSymbols, minMaxY)) throw new JSV.exception.JSVException("Unable to read Ntuple Source"); +if (!spectrum.nucleusX.equals("?")) spectrum0.nucleusX = spectrum.nucleusX; +spectrum0.nucleusY = spectrum.nucleusY; +spectrum0.freq2dX = spectrum.freq2dX; +spectrum0.freq2dY = spectrum.freq2dY; +spectrum0.y2DUnits = spectrum.y2DUnits; +for (var i = 0; i < sourceLDRTable.size(); i++) { +var entry = sourceLDRTable.get(i); +var key = JSV.source.JDXSourceStreamTokenizer.cleanLabel(entry[0]); +if (!key.equals("##TITLE") && !key.equals("##DATACLASS") && !key.equals("##NTUPLES")) dataLDRTable.addLast(entry); +} +if (isOK) this.addSpectrum(spectrum, !isFirst); +isFirst = false; +spectrum = null; +} +this.addErrorLogSeparator(); +this.source.setErrorLog(this.errorLog.toString()); +JU.Logger.info("NTUPLE MIN/MAX Y = " + minMaxY[0] + " " + minMaxY[1]); +return this.source; +}, "JU.Lst,JSV.source.JDXDataObject,~S"); +Clazz.defineMethod(c$, "readDataLabel", +function(spectrum, label, value, errorLog, obscure, isHeaderOnly){ +if (!JSV.source.JDXReader.readHeaderLabel(spectrum, label, value, errorLog, obscure)) return false; +label += " "; +if (("##MINX ##MINY ##MAXX ##MAXY ##FIRSTY ##DELTAX ##DATACLASS ").indexOf(label) >= 0) return false; +switch (("##FIRSTX ##LASTX ##NPOINTS ##XFACTOR ##YFACTOR ##XUNITS ##YUNITS ##XLABEL ##YLABEL ##NUMDIM ##OFFSET ").indexOf(label)) { +case 0: +spectrum.fileFirstX = this.parseAFFN(label, value); +return false; +case 10: +spectrum.fileLastX = this.parseAFFN(label, value); +return false; +case 20: +spectrum.fileNPoints = Integer.parseInt(value); +return false; +case 30: +spectrum.setXFactor(this.parseAFFN(label, value)); +return false; +case 40: +spectrum.yFactor = this.parseAFFN(label, value); +return false; +case 50: +spectrum.setXUnits(value); +return false; +case 60: +spectrum.setYUnits(value); +return false; +case 70: +spectrum.setXLabel(value); +return true; +case 80: +spectrum.setYLabel(value); +return true; +case 90: +spectrum.setNumDim(Integer.parseInt(value)); +return false; +case 100: +if (!spectrum.isShiftTypeSpecified()) { +spectrum.setShiftReference(this.parseAFFN(label, value), 1, 1); +}return false; +default: +if (label.length < 17) return true; +if (label.equals("##.OBSERVEFREQUENCY ")) { +spectrum.setObservedFreq(this.parseAFFN(label, value)); +return false; +}if (label.equals("##.OBSERVENUCLEUS ")) { +spectrum.setObservedNucleus(value); +return false; +}if (label.equals("##$REFERENCEPOINT ") && !spectrum.isShiftTypeSpecified()) { +var pt = value.indexOf(" "); +if (pt > 0) value = value.substring(0, pt); +spectrum.setShiftReference(this.parseAFFN(label, value), 1, 2); +return false; +}if (label.equals("##.SHIFTREFERENCE ")) { +if (this.ignoreShiftReference || !(spectrum.dataType.toUpperCase().contains("SPECTRUM"))) return false; +value = JU.PT.replaceAllCharacters(value, ")(", ""); +var srt = new java.util.StringTokenizer(value, ","); +if (srt.countTokens() != 4) return false; +try { +srt.nextToken(); +srt.nextToken(); +var pt = Integer.parseInt(srt.nextToken().trim()); +var shift = this.parseAFFN(label, srt.nextToken().trim()); +spectrum.setShiftReference(shift, pt, 0); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return false; +}return true; +} +}, "JSV.source.JDXDataObject,~S,~S,JU.SB,~B,~B"); +c$.readHeaderLabel = Clazz.defineMethod(c$, "readHeaderLabel", +function(jdxHeader, label, value, errorLog, obscure){ +switch (("##TITLE#####JCAMPDX###ORIGIN####OWNER#####DATATYPE##LONGDATE##DATE######TIME####").indexOf(label + "#")) { +case 0: +jdxHeader.setTitle(obscure || value == null || value.equals("") ? "Unknown" : value); +return false; +case 10: +jdxHeader.jcampdx = value; +var version = JU.PT.parseFloat(value); +if (version >= 6.0 || Float.isNaN(version)) { +if (errorLog != null) errorLog.append("Warning: JCAMP-DX version may not be fully supported: " + value); +}return false; +case 20: +jdxHeader.origin = (value != null && !value.equals("") ? value : "Unknown"); +return false; +case 30: +jdxHeader.owner = (value != null && !value.equals("") ? value : "Unknown"); +return false; +case 40: +jdxHeader.dataType = value; +return false; +case 50: +jdxHeader.longDate = value; +return false; +case 60: +jdxHeader.date = value; +return false; +case 70: +jdxHeader.time = value; +return false; +} +return true; +}, "JSV.source.JDXHeader,~S,~S,JU.SB,~B"); +Clazz.defineMethod(c$, "setTabularDataType", +function(spectrum, label){ +if (label.equals("##PEAKASSIGNMENTS")) spectrum.setDataClass("PEAKASSIGNMENTS"); + else if (label.equals("##PEAKTABLE")) spectrum.setDataClass("PEAKTABLE"); + else if (label.equals("##XYDATA")) spectrum.setDataClass("XYDATA"); + else if (label.equals("##XYPOINTS")) spectrum.setDataClass("XYPOINTS"); +}, "JSV.source.JDXDataObject,~S"); +Clazz.defineMethod(c$, "processTabularData", +function(spec, table, label, isHeaderOnly){ +this.setTabularDataType(spec, label); +spec.setHeaderTable(table); +if (spec.dataClass.equals("XYDATA")) { +spec.checkJDXRequiredTokens(); +if (!isHeaderOnly) this.decompressData(spec, null); +return; +}if (spec.dataClass.equals("PEAKTABLE") || spec.dataClass.equals("XYPOINTS")) { +spec.setContinuous(spec.dataClass.equals("XYPOINTS")); +try { +this.t.readLineTrimmed(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +var xyCoords; +if (spec.xFactor != 1.7976931348623157E308 && spec.yFactor != 1.7976931348623157E308) { +var data = this.t.getValue(); +xyCoords = JSV.common.Coordinate.parseDSV(data, spec.xFactor, spec.yFactor); +} else { +xyCoords = JSV.common.Coordinate.parseDSV(this.t.getValue(), 1, 1); +}spec.setXYCoords(xyCoords); +var fileDeltaX = JSV.common.Coordinate.deltaX(xyCoords[xyCoords.length - 1].getXVal(), xyCoords[0].getXVal(), xyCoords.length); +spec.setIncreasing(fileDeltaX > 0); +return; +}throw new JSV.exception.JSVException("Unable to read JDX file tabular data for line " + this.t.labelLineNo); +}, "JSV.source.JDXDataObject,JU.Lst,~S,~B"); +Clazz.defineMethod(c$, "readNTUPLECoords", +function(spec, nTupleTable, plotSymbols, minMaxY){ +var list; +var label; +if (spec.dataClass.equals("XYDATA")) { +list = nTupleTable.get("##SYMBOL"); +var index1 = list.indexOf(plotSymbols[0]); +var index2 = list.indexOf(plotSymbols[1]); +list = nTupleTable.get("##VARNAME"); +spec.setVarName(list.get(index2).toUpperCase()); +list = nTupleTable.get(label = "##FACTOR"); +spec.setXFactor(this.parseAFFN(label, list.get(index1))); +spec.setYFactor(this.parseAFFN(label, list.get(index2))); +list = nTupleTable.get(label = "##LAST"); +spec.fileLastX = this.parseAFFN(label, list.get(index1)); +list = nTupleTable.get(label = "##FIRST"); +spec.fileFirstX = this.parseAFFN(label, list.get(index1)); +list = nTupleTable.get("##VARDIM"); +spec.fileNPoints = Integer.parseInt(list.get(index1)); +list = nTupleTable.get("##UNITS"); +spec.setXUnits(list.get(index1)); +spec.setYUnits(list.get(index2)); +if (spec.nucleusX == null && (list = nTupleTable.get("##.NUCLEUS")) != null) { +spec.setNucleusAndFreq(list.get(0), false); +spec.setNucleusAndFreq(list.get(index1), true); +} else { +if (spec.nucleusX == null) spec.nucleusX = "?"; +}this.decompressData(spec, minMaxY); +return true; +}if (spec.dataClass.equals("PEAKTABLE") || spec.dataClass.equals("XYPOINTS")) { +spec.setContinuous(spec.dataClass.equals("XYPOINTS")); +list = nTupleTable.get("##SYMBOL"); +var index1 = list.indexOf(plotSymbols[0]); +var index2 = list.indexOf(plotSymbols[1]); +list = nTupleTable.get("##UNITS"); +spec.setXUnits(list.get(index1)); +spec.setYUnits(list.get(index2)); +spec.setXYCoords(JSV.common.Coordinate.parseDSV(this.t.getValue(), spec.xFactor, spec.yFactor)); +return true; +}return false; +}, "JSV.source.JDXDataObject,java.util.Map,~A,~A"); +Clazz.defineMethod(c$, "parseAFFN", +function(label, val){ +var pt = val.indexOf("E"); +if (pt > 0) { +var len = val.length; +var ch; +switch (len - pt) { +case 2: +case 3: +this.logError("Warning - " + label + " value " + val + " is not of the format xxxE[+/-]nn or xxxE[+/-]nnn (spec. 4.5.3) -- warning only; accepted"); +break; +case 4: +case 5: +if ((ch = val.charAt(pt + 1)) == '+' || ch == '-') break; +default: +this.logError("Error - " + label + " value " + val + " is not of the format xxxE[+/-]nn or xxxE[+/-]nnn (spec. 4.5.3) -- " + val.substring(pt) + " ignored!"); +val = val.substring(0, pt); +} +}return Double.parseDouble(val); +}, "~S,~S"); +Clazz.defineMethod(c$, "decompressData", +function(spec, minMaxY){ +var errPt = this.errorLog.length(); +spec.setIncreasing(spec.fileLastX > spec.fileFirstX); +spec.setContinuous(true); +var decompressor = new JSV.source.JDXDecompressor(this.t, spec.fileFirstX, spec.fileLastX, spec.xFactor, spec.yFactor, spec.fileNPoints); +var t = System.currentTimeMillis(); +var xyCoords = decompressor.decompressData(this.errorLog); +if (JU.Logger.debugging) JU.Logger.debug("decompression time = " + (System.currentTimeMillis() - t) + " ms"); +spec.setXYCoords(xyCoords); +var d = decompressor.getMinY(); +if (minMaxY != null) { +if (d < minMaxY[0]) minMaxY[0] = d; +d = decompressor.getMaxY(); +if (d > minMaxY[1]) minMaxY[1] = d; +}spec.finalizeCoordinates(); +if (this.errorLog.length() != errPt) { +var fileDeltaX = JSV.common.Coordinate.deltaX(spec.fileLastX, spec.fileFirstX, spec.fileNPoints); +this.logError(spec.getTitle()); +this.logError("firstX from Header " + spec.fileFirstX); +this.logError("lastX from Header " + spec.fileLastX + " Found " + decompressor.lastX); +this.logError("deltaX from Header " + fileDeltaX); +this.logError("Number of points in Header " + spec.fileNPoints + " Found " + decompressor.getNPointsFound()); +} else { +}if (JU.Logger.debugging) { +System.err.println(this.errorLog.toString()); +}}, "JSV.source.JDXDataObject,~A"); +c$.addHeader = Clazz.defineMethod(c$, "addHeader", +function(table, label, value){ +var entry = null; +for (var i = 0; i < table.size(); i++) if ((entry = table.get(i))[0].equals(label)) { +entry[1] = value; +return; +} +table.addLast( Clazz.newArray(-1, [label, value, JSV.source.JDXSourceStreamTokenizer.cleanLabel(label)])); +}, "JU.Lst,~S,~S"); +Clazz.defineMethod(c$, "checkCustomTags", +function(spectrum, label, value){ +if (label.length > 10) label = label.substring(0, 10); +if (spectrum == null) System.out.println(label); + else this.modelSpectrum = spectrum; +var pt = "##$MODELS ##$PEAKS ##$SIGNALS##$MOLFILE##PEAKASSI##$UVIRASS##$MSFRAGM".indexOf(label); +if (pt < 0) return false; +this.getMpr().set(this, this.filePath, null); +try { +this.reader = new java.io.BufferedReader( new java.io.StringReader(value)); +switch (pt) { +case 0: +this.mpr.readModels(); +break; +case 10: +case 20: +this.peakData = new JU.Lst(); +this.source.peakCount += this.mpr.readPeaks(pt == 20, this.source.peakCount); +break; +case 30: +this.acdAssignments = new JU.Lst(); +this.acdMolFile = JU.PT.rep(value, "$$ Empty String", ""); +break; +case 40: +case 50: +case 60: +this.acdAssignments = this.mpr.readACDAssignments((spectrum).fileNPoints, pt == 40); +break; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.getMessage()); +} else { +throw e; +} +} finally { +this.reader = null; +} +return true; +}, "JSV.common.Spectrum,~S,~S"); +Clazz.defineMethod(c$, "getMpr", +function(){ +return (this.mpr == null ? this.mpr = JSV.common.JSViewer.getInterface("J.jsv.JDXMOLParser") : this.mpr); +}); +Clazz.overrideMethod(c$, "rd", +function(){ +return this.reader.readLine(); +}); +Clazz.overrideMethod(c$, "setSpectrumPeaks", +function(nH, peakXLabel, peakYlabel){ +this.modelSpectrum.setPeakList(this.peakData, peakXLabel, peakYlabel); +if (this.modelSpectrum.isNMR()) this.modelSpectrum.setHydrogenCount(nH); +}, "~N,~S,~S"); +Clazz.overrideMethod(c$, "addPeakData", +function(info){ +if (this.peakData == null) this.peakData = new JU.Lst(); +this.peakData.addLast( new JSV.common.PeakInfo(info)); +}, "~S"); +Clazz.overrideMethod(c$, "processModelData", +function(id, data, type, base, last, modelScale, vibScale, isFirst){ +}, "~S,~S,~S,~S,~S,~N,~N,~B"); +Clazz.overrideMethod(c$, "discardLinesUntilContains", +function(containsMatch){ +var line; +while ((line = this.rd()) != null && line.indexOf(containsMatch) < 0) { +} +return line; +}, "~S"); +Clazz.overrideMethod(c$, "discardLinesUntilContains2", +function(s1, s2){ +var line; +while ((line = this.rd()) != null && line.indexOf(s1) < 0 && line.indexOf(s2) < 0) { +} +return line; +}, "~S,~S"); +Clazz.overrideMethod(c$, "discardLinesUntilNonBlank", +function(){ +var line; +while ((line = this.rd()) != null && line.trim().length == 0) { +} +return line; +}); +c$.VAR_LIST_TABLE = Clazz.newArray(-1, ["PEAKTABLE XYDATA XYPOINTS", " (XY..XY) (X++(Y..Y)) (XY..XY) "]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXSource.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXSource.js new file mode 100755 index 000000000000..80008a22f964 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXSource.js @@ -0,0 +1,98 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(["JSV.source.JDXHeader"], "JSV.source.JDXSource", ["JU.Lst"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.type = 0; +this.isCompoundSource = false; +this.jdxSpectra = null; +this.errors = ""; +this.filePath = null; +this.peakCount = 0; +this.isView = false; +this.inlineData = null; +Clazz.instantialize(this, arguments);}, JSV.source, "JDXSource", JSV.source.JDXHeader); +Clazz.makeConstructor(c$, +function(type, filePath){ +Clazz.superConstructor (this, JSV.source.JDXSource, []); +this.type = type; +this.setFilePath(filePath); +this.headerTable = new JU.Lst(); +this.jdxSpectra = new JU.Lst(); +this.isCompoundSource = (type != 0); +}, "~N,~S"); +Clazz.defineMethod(c$, "dispose", +function(){ +this.headerTable = null; +this.jdxSpectra = null; +}); +Clazz.defineMethod(c$, "getJDXSpectrum", +function(index){ +return (this.jdxSpectra.size() <= index ? null : this.jdxSpectra.get(index)); +}, "~N"); +Clazz.defineMethod(c$, "addJDXSpectrum", +function(filePath, spectrum, forceSub){ +if (filePath == null) filePath = this.filePath; +spectrum.setFilePath(filePath); +if (this.inlineData != null) spectrum.setInlineData(this.inlineData); +var n = this.jdxSpectra.size(); +if (n == 0 || !this.jdxSpectra.get(n - 1).addSubSpectrum(spectrum, forceSub)) this.jdxSpectra.addLast(spectrum); +}, "~S,JSV.common.Spectrum,~B"); +Clazz.defineMethod(c$, "getNumberOfSpectra", +function(){ +return this.jdxSpectra.size(); +}); +Clazz.defineMethod(c$, "getSpectra", +function(){ +return this.jdxSpectra; +}); +Clazz.defineMethod(c$, "getSpectraAsArray", +function(){ +return (this.jdxSpectra == null ? null : this.jdxSpectra.toArray()); +}); +Clazz.defineMethod(c$, "getErrorLog", +function(){ +return this.errors; +}); +Clazz.defineMethod(c$, "setErrorLog", +function(errors){ +this.errors = errors; +}, "~S"); +Clazz.defineMethod(c$, "setFilePath", +function(filePath){ +this.filePath = filePath; +}, "~S"); +Clazz.defineMethod(c$, "getFilePath", +function(){ +return this.filePath; +}); +c$.createView = Clazz.defineMethod(c$, "createView", +function(specs){ +var source = new JSV.source.JDXSource(-2, "view"); +source.isView = true; +for (var i = 0; i < specs.size(); i++) source.addJDXSpectrum(specs.get(i).getFilePath(), specs.get(i), false); + +return source; +}, "JU.Lst"); +Clazz.defineMethod(c$, "getHeaderRowDataAsArray", +function(addDataClass, rowData){ +if (rowData == null) rowData = Clazz.newArray(0, 0, null); +var data = this.getHeaderRowDataAsArray(addDataClass, rowData.length); +for (var i = rowData.length; --i >= 0; ) data[data.length - rowData.length + i] = rowData[i]; + +return data; +}, "~B,~A"); +Clazz.defineMethod(c$, "setID", +function(id){ +this.jdxSpectra.get(0).sourceID = id; +}, "~S"); +Clazz.defineMethod(c$, "matchesFilePath", +function(filePath){ +return this.filePath.equals(filePath) || this.filePath.$replace('\\', '/').equals(filePath); +}, "~S"); +Clazz.defineMethod(c$, "setInlineData", +function(data){ +this.inlineData = data; +if (this.jdxSpectra != null) for (var i = this.jdxSpectra.size(); --i >= 0; ) this.jdxSpectra.get(i).setInlineData(data); + +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXSourceStreamTokenizer.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXSourceStreamTokenizer.js new file mode 100755 index 000000000000..23d803fe8cda --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/JDXSourceStreamTokenizer.js @@ -0,0 +1,172 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(null, "JSV.source.JDXSourceStreamTokenizer", ["JU.SB", "JU.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.br = null; +this.rawLabel = null; +this.value = null; +this.labelLineNo = 0; +this.line = null; +this.lineNo = 0; +this.rawLine = null; +Clazz.instantialize(this, arguments);}, JSV.source, "JDXSourceStreamTokenizer", null); +Clazz.makeConstructor(c$, +function(br){ +this.br = br; +}, "java.io.BufferedReader"); +Clazz.defineMethod(c$, "peakLabel", +function(){ +return this.nextLabel(false); +}); +Clazz.defineMethod(c$, "getLabel", +function(){ +return this.nextLabel(true); +}); +Clazz.defineMethod(c$, "nextLabel", +function(isGet){ +this.rawLabel = null; +this.value = null; +while (this.line == null || this.line.length == 0) { +try { +this.readLine(); +if (this.line == null) { +this.line = ""; +return null; +}this.line = this.line.trim(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +this.line = ""; +return null; +} else { +throw e; +} +} +if (this.line.startsWith("##")) break; +this.line = null; +} +this.rawLine = this.line; +var pt = this.line.indexOf("="); +if (pt < 0) { +if (isGet) JU.Logger.info("BAD JDX LINE -- no '=' (line " + this.lineNo + "): " + this.line); +this.rawLabel = this.line; +if (!isGet) this.line = ""; +} else { +this.rawLabel = this.line.substring(0, pt).trim(); +if (isGet) this.line = this.line.substring(pt + 1); +}this.labelLineNo = this.lineNo; +if (JU.Logger.debugging) JU.Logger.info(this.rawLabel); +return JSV.source.JDXSourceStreamTokenizer.cleanLabel(this.rawLabel); +}, "~B"); +c$.cleanLabel = Clazz.defineMethod(c$, "cleanLabel", +function(label){ +if (label == null) return null; +var i; +var str = new JU.SB(); +for (i = 0; i < label.length; i++) { +switch ((label.charAt(i)).charCodeAt(0)) { +case 47: +case 92: +case 32: +case 45: +case 95: +break; +default: +str.appendC(label.charAt(i)); +break; +} +} +return str.toString().toUpperCase(); +}, "~S"); +Clazz.defineMethod(c$, "getValue", +function(){ +if (this.value != null) return this.value; +var sb = new JU.SB().append(this.line); +if (sb.length() > 0) sb.appendC('\n'); +try { +while (this.readLine() != null) { +if (this.line.indexOf("##") >= 0 && this.line.trim().startsWith("##")) break; +sb.append(this.line).appendC('\n'); +} +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +JU.Logger.info(e.toString()); +} else { +throw e; +} +} +this.value = (this.rawLabel.startsWith("##$") ? sb.toString().trim() : JSV.source.JDXSourceStreamTokenizer.trimLines(sb)); +if (JU.Logger.debugging) JU.Logger.info(this.value); +return this.value; +}); +Clazz.defineMethod(c$, "readLineTrimmed", +function(){ +this.readLine(); +if (this.line == null) return null; +if (this.line.indexOf("$$") < 0) return this.line.trim(); +var sb = new JU.SB().append(this.line); +return JSV.source.JDXSourceStreamTokenizer.trimLines(sb); +}); +Clazz.defineMethod(c$, "flushLine", +function(){ +var sb = new JU.SB().append(this.line); +this.line = null; +return JSV.source.JDXSourceStreamTokenizer.trimLines(sb); +}); +Clazz.defineMethod(c$, "readLine", +function(){ +this.line = this.br.readLine(); +this.lineNo++; +return this.line; +}); +c$.trimLines = Clazz.defineMethod(c$, "trimLines", +function(v){ +var n = v.length(); +var ilast = n - 1; +var vpt = JSV.source.JDXSourceStreamTokenizer.ptNonWhite(v, 0, n); +if (vpt >= n) return ""; +var buffer = Clazz.newCharArray (n - vpt, '\0'); +var pt = 0; +for (; vpt < n; vpt++) { +var ch; +switch ((ch = v.charAt(vpt)).charCodeAt(0)) { +case 13: +if (vpt < ilast && v.charAt(vpt + 1) == '\n') continue; +ch = '\n'; +break; +case 10: +if (pt > 0 && buffer[pt - 1] != '\n') pt -= vpt - JSV.source.JDXSourceStreamTokenizer.ptNonSpaceRev(v, vpt) - 1; +vpt = JSV.source.JDXSourceStreamTokenizer.ptNonSpace(v, ++vpt, n) - 1; +break; +case 36: +if (vpt < ilast && v.charAt(vpt + 1) == '$') { +vpt++; +while (++vpt < n && "\n\r".indexOf(v.charAt(vpt)) < 0) { +} +continue; +}break; +} +if (ch == '\n' && pt > 0 && buffer[pt - 1] == '\n') continue; +buffer[pt++] = ch; +} +if (pt > 0 && buffer[pt - 1] == '\n') --pt; +return ( String.instantialize(buffer)).substring(0, pt).trim(); +}, "JU.SB"); +c$.ptNonWhite = Clazz.defineMethod(c$, "ptNonWhite", +function(v, pt, n){ +while (pt < n && Character.isWhitespace(v.charAt(pt))) pt++; + +return pt; +}, "JU.SB,~N,~N"); +c$.ptNonSpace = Clazz.defineMethod(c$, "ptNonSpace", +function(v, pt, n){ +while (pt < n && (v.charAt(pt) == ' ' || v.charAt(pt) == '\t')) pt++; + +return pt; +}, "JU.SB,~N,~N"); +c$.ptNonSpaceRev = Clazz.defineMethod(c$, "ptNonSpaceRev", +function(v, pt){ +while (--pt >= 0 && (v.charAt(pt) == ' ' || v.charAt(pt) == '\t')) { +} +return pt; +}, "JU.SB,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JSV/source/XMLParser.js b/config/plugins/visualizations/jmol/static/j2s/JSV/source/XMLParser.js new file mode 100755 index 000000000000..869fdd8cfc8f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JSV/source/XMLParser.js @@ -0,0 +1,357 @@ +Clazz.declarePackage("JSV.source"); +Clazz.load(null, "JSV.source.XMLParser", ["java.util.Hashtable", "JU.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.thisEvent = null; +this.buffer = null; +if (!Clazz.isClassDefined("JSV.source.XMLParser.DataBuffer")) { +JSV.source.XMLParser.$XMLParser$DataBuffer$ (); +} +if (!Clazz.isClassDefined("JSV.source.XMLParser.DataString")) { +JSV.source.XMLParser.$XMLParser$DataString$ (); +} +if (!Clazz.isClassDefined("JSV.source.XMLParser.XmlEvent")) { +JSV.source.XMLParser.$XMLParser$XmlEvent$ (); +} +if (!Clazz.isClassDefined("JSV.source.XMLParser.Tag")) { +JSV.source.XMLParser.$XMLParser$Tag$ (); +} +Clazz.instantialize(this, arguments);}, JSV.source, "XMLParser", null); +Clazz.prepareFields (c$, function(){ +this.thisEvent = Clazz.innerTypeInstance(JSV.source.XMLParser.XmlEvent, this, null, 0); +}); +Clazz.makeConstructor(c$, +function(br){ +this.buffer = Clazz.innerTypeInstance(JSV.source.XMLParser.DataBuffer, this, null, br); +}, "java.io.BufferedReader"); +Clazz.defineMethod(c$, "getBufferData", +function(){ +return (this.buffer == null ? null : this.buffer.data.toString().substring(0, this.buffer.ptr)); +}); +Clazz.defineMethod(c$, "thisValue", +function(){ +return this.buffer.nextEvent().toString().trim(); +}); +Clazz.defineMethod(c$, "qualifiedValue", +function(){ +this.buffer.nextTag(); +var value = this.buffer.nextEvent().toString().trim(); +this.buffer.nextTag(); +return value; +}); +Clazz.defineMethod(c$, "peek", +function(){ +this.thisEvent = this.buffer.peek(); +return this.thisEvent.getEventType(); +}); +Clazz.defineMethod(c$, "hasNext", +function(){ +return this.buffer.hasNext(); +}); +Clazz.defineMethod(c$, "nextTag", +function(){ +while ((this.thisEvent = this.buffer.nextTag()).eventType == 6) { +} +}); +Clazz.defineMethod(c$, "nextEvent", +function(){ +this.thisEvent = this.buffer.nextEvent(); +return this.thisEvent.getEventType(); +}); +Clazz.defineMethod(c$, "nextStartTag", +function(){ +this.thisEvent = this.buffer.nextTag(); +while (!this.thisEvent.isStartElement()) this.thisEvent = this.buffer.nextTag(); + +}); +Clazz.defineMethod(c$, "getTagName", +function(){ +return this.thisEvent.getTagName(); +}); +Clazz.defineMethod(c$, "getTagType", +function(){ +return this.thisEvent.getTagType(); +}); +Clazz.defineMethod(c$, "getEndTag", +function(){ +return this.thisEvent.getTagName(); +}); +Clazz.defineMethod(c$, "nextValue", +function(){ +this.buffer.nextTag(); +return this.buffer.nextEvent().toString().trim(); +}); +Clazz.defineMethod(c$, "getAttributeList", +function(){ +return this.thisEvent.toString().toLowerCase(); +}); +Clazz.defineMethod(c$, "getAttrValueLC", +function(key){ +return this.getAttrValue(key).toLowerCase(); +}, "~S"); +Clazz.defineMethod(c$, "getAttrValue", +function(name){ +var a = this.thisEvent.getAttributeByName(name); +return (a == null ? "" : a); +}, "~S"); +Clazz.defineMethod(c$, "getCharacters", +function(){ +var sb = new JU.SB(); +this.thisEvent = this.buffer.peek(); +var eventType = this.thisEvent.getEventType(); +while (eventType != 4) this.thisEvent = this.buffer.nextEvent(); + +while (eventType == 4) { +this.thisEvent = this.buffer.nextEvent(); +eventType = this.thisEvent.getEventType(); +if (eventType == 4) sb.append(this.thisEvent.toString()); +} +return sb.toString(); +}); +Clazz.defineMethod(c$, "requiresEndTag", +function(){ +var tagType = this.thisEvent.getTagType(); +return tagType != 3 && tagType != 6; +}); +c$.$XMLParser$DataBuffer$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +Clazz.instantialize(this, arguments);}, JSV.source.XMLParser, "DataBuffer", JSV.source.XMLParser.DataString, null, Clazz.innerTypeInstance(JSV.source.XMLParser.DataString, this, null, Clazz.inheritArgs)); +Clazz.makeConstructor(c$, +function(br){ +Clazz.superConstructor (this, JSV.source.XMLParser.DataBuffer, []); +this.reader = br; +}, "java.io.BufferedReader"); +Clazz.defineMethod(c$, "hasNext", +function(){ +if (this.ptr == this.ptEnd) try { +this.readLine(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +return this.ptr < this.ptEnd; +}); +Clazz.overrideMethod(c$, "readLine", +function(){ +var s = this.reader.readLine(); +if (s == null) { +return false; +}this.data.append(s + "\n"); +this.ptEnd = this.data.length(); +return true; +}); +Clazz.defineMethod(c$, "peek", +function(){ +if (this.ptEnd - this.ptr < 2) try { +this.readLine(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return Clazz.innerTypeInstance(JSV.source.XMLParser.XmlEvent, this, null, 8); +} else { +throw e; +} +} +var pt0 = this.ptr; +var e = Clazz.innerTypeInstance(JSV.source.XMLParser.XmlEvent, this, null, this); +this.ptr = pt0; +return e; +}); +Clazz.defineMethod(c$, "nextTag", +function(){ +this.flush(); +this.skipTo('<', false); +var e = Clazz.innerTypeInstance(JSV.source.XMLParser.XmlEvent, this, null, this); +return e; +}); +Clazz.defineMethod(c$, "nextEvent", +function(){ +this.flush(); +return Clazz.innerTypeInstance(JSV.source.XMLParser.XmlEvent, this, null, this); +}); +/*eoif4*/})(); +}; +c$.$XMLParser$DataString$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.data = null; +this.reader = null; +this.ptr = 0; +this.ptEnd = 0; +Clazz.instantialize(this, arguments);}, JSV.source.XMLParser, "DataString", null); +Clazz.makeConstructor(c$, +function(){ +this.data = new JU.SB(); +}); +Clazz.makeConstructor(c$, +function(data){ +this.data = data; +this.ptEnd = data.length(); +}, "JU.SB"); +Clazz.defineMethod(c$, "getNCharactersRemaining", +function(){ +return this.ptEnd - this.ptr; +}); +Clazz.defineMethod(c$, "flush", +function(){ +if (this.data.length() < 1000 || this.ptEnd - this.ptr > 100) return; +this.data = new JU.SB().append(this.data.substring(this.ptr)); +this.ptr = 0; +this.ptEnd = this.data.length(); +}); +Clazz.defineMethod(c$, "substring", +function(i, j){ +return this.data.toString().substring(i, j); +}, "~N,~N"); +Clazz.defineMethod(c$, "skipOver", +function(c, inQuotes){ +if (this.skipTo(c, inQuotes) > 0 && this.ptr != this.ptEnd) { +this.ptr++; +}return this.ptr; +}, "~S,~B"); +Clazz.defineMethod(c$, "skipTo", +function(toWhat, inQuotes){ +if (this.data == null) return -1; +var ch; +if (this.ptr == this.ptEnd) { +if (this.reader == null) return -1; +this.readLine(); +}var ptEnd1 = this.ptEnd - 1; +while (this.ptr < this.ptEnd && (ch = this.data.charAt(this.ptr)) != toWhat) { +if (inQuotes && ch == '\\' && this.ptr < ptEnd1) { +if ((ch = this.data.charAt(this.ptr + 1)) == '"' || ch == '\\') this.ptr++; +} else if (ch == '"') { +this.ptr++; +if (this.skipTo('"', true) < 0) return -1; +}if (++this.ptr == this.ptEnd) { +if (this.reader == null) return -1; +this.readLine(); +}} +return this.ptr; +}, "~S,~B"); +Clazz.defineMethod(c$, "readLine", +function(){ +return false; +}); +/*eoif4*/})(); +}; +c$.$XMLParser$XmlEvent$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.eventType = 0; +this.ptr = 0; +this.tag = null; +this.data = null; +Clazz.instantialize(this, arguments);}, JSV.source.XMLParser, "XmlEvent", null); +Clazz.makeConstructor(c$, +function(eventType){ +this.eventType = eventType; +}, "~N"); +Clazz.makeConstructor(c$, +function(b){ +this.ptr = b.ptr; +var n = b.getNCharactersRemaining(); +this.eventType = (n == 0 ? 8 : n == 1 || b.data.charAt(b.ptr) != '<' ? 4 : b.data.charAt(b.ptr + 1) != '/' ? 1 : 2); +if (this.eventType == 8) return; +if (this.eventType == 4) { +b.skipTo('<', false); +this.data = b.data.toString().substring(this.ptr, b.ptr); +} else { +b.skipOver('>', false); +var s = b.data.toString().substring(this.ptr, b.ptr); +if (s.startsWith(" " + names[0]); +}if (isFullLoad && JU.OC.isLocal(names[0])) { +var path = names[0]; +if (file == null) path = JU.PT.trim(names[0].substring(names[0].indexOf(":") + 1), "/"); +var pt = path.length - names[1].length - 1; +if (pt > 0) { +path = path.substring(0, pt); +JV.FileManager.setLocalPath(this.vwr, path, true); +}}return names; +}, "~S,~B"); +c$.addDirectory = Clazz.defineMethod(c$, "addDirectory", +function(defaultDirectory, name){ +if (defaultDirectory.length == 0 || defaultDirectory.equals(".")) return name; +var ch = (name.length > 0 ? name.charAt(0) : ' '); +var s = defaultDirectory.toLowerCase(); +if ((s.endsWith(".zip") || s.endsWith(".tar")) && ch != '|' && ch != '/') defaultDirectory += "|"; +return defaultDirectory + (ch == '/' || ch == '/' || (ch = defaultDirectory.charAt(defaultDirectory.length - 1)) == '|' || ch == '/' ? "" : "/") + name; +}, "~S,~S"); +Clazz.defineMethod(c$, "getDefaultDirectory", +function(name){ +var names = this.getClassifiedName(name, true); +if (names == null) return ""; +name = JV.FileManager.fixPath(names[0]); +return (name == null ? "" : name.substring(0, name.lastIndexOf("/"))); +}, "~S"); +c$.fixPath = Clazz.defineMethod(c$, "fixPath", +function(path){ +path = JV.FileManager.fixDOSName(path); +path = JU.PT.rep(path, "/./", "/"); +var pt = path.lastIndexOf("//") + 1; +if (pt < 1) pt = path.indexOf(":/") + 1; +if (pt < 1) pt = path.indexOf("/"); +if (pt < 0) return null; +var protocol = path.substring(0, pt); +path = path.substring(pt); +while ((pt = path.lastIndexOf("/../")) >= 0) { +var pt0 = path.substring(0, pt).lastIndexOf("/"); +if (pt0 < 0) return JU.PT.rep(protocol + path, "/../", "/"); +path = path.substring(0, pt0) + path.substring(pt + 3); +} +if (path.length == 0) path = "/"; +return protocol + path; +}, "~S"); +Clazz.defineMethod(c$, "getFilePath", +function(name, addUrlPrefix, asShortName){ +var names = this.getClassifiedName(name, false); +return (names == null || names.length == 1 ? "" : asShortName ? names[1] : addUrlPrefix ? names[2] : names[0] == null ? "" : JV.FileManager.fixDOSName(names[0])); +}, "~S,~B,~B"); +c$.getLocalDirectory = Clazz.defineMethod(c$, "getLocalDirectory", +function(vwr, forDialog){ +var localDir = vwr.getP(forDialog ? "currentLocalPath" : "defaultDirectoryLocal"); +if (forDialog && localDir.length == 0) localDir = vwr.getP("defaultDirectoryLocal"); +if (localDir.length == 0) return (vwr.isApplet ? null : vwr.apiPlatform.newFile(System.getProperty("user.dir", "."))); +if (vwr.isApplet && localDir.indexOf("file:/") == 0) localDir = localDir.substring(6); +var f = vwr.apiPlatform.newFile(localDir); +try { +return f.isDirectory() ? f : f.getParentAsFile(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "JV.Viewer,~B"); +c$.setLocalPath = Clazz.defineMethod(c$, "setLocalPath", +function(vwr, path, forDialog){ +while (path.endsWith("/") || path.endsWith("\\")) path = path.substring(0, path.length - 1); + +vwr.setStringProperty("currentLocalPath", path); +if (!forDialog) vwr.setStringProperty("defaultDirectoryLocal", path); +}, "JV.Viewer,~S,~B"); +c$.getLocalPathForWritingFile = Clazz.defineMethod(c$, "getLocalPathForWritingFile", +function(vwr, file, forDialog){ +if (file.startsWith("http://") || file.startsWith("https://")) return file; +file = JU.PT.rep(file, "?", ""); +if (file.indexOf("file:/") == 0) return file.substring(6); +if (file.indexOf("/") == 0 || file.indexOf(":") >= 0) return file; +var dir = null; +try { +dir = JV.FileManager.getLocalDirectory(vwr, forDialog); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return (dir == null ? file : JV.FileManager.fixPath(dir.toString() + "/" + file)); +}, "JV.Viewer,~S,~B"); +c$.fixDOSName = Clazz.defineMethod(c$, "fixDOSName", +function(fileName){ +return (fileName.indexOf(":\\") >= 0 ? fileName.$replace('\\', '/') : fileName); +}, "~S"); +c$.stripPath = Clazz.defineMethod(c$, "stripPath", +function(name){ +var pt = Math.max(name.lastIndexOf("|"), name.lastIndexOf("/")); +return name.substring(pt + 1); +}, "~S"); +c$.isScriptType = Clazz.defineMethod(c$, "isScriptType", +function(fname){ +return JU.PT.isOneOf(fname.toLowerCase().substring(fname.lastIndexOf(".") + 1), ";pse;spt;png;pngj;jmol;zip;"); +}, "~S"); +c$.determineSurfaceFileType = Clazz.defineMethod(c$, "determineSurfaceFileType", +function(bufferedReader){ +var line = null; +if (Clazz.instanceOf(bufferedReader,"JU.Rdr.StreamReader")) { +var is = (bufferedReader).getStream(); +if (is.markSupported()) { +try { +is.mark(300); +var buf = Clazz.newByteArray (300, 0); +is.read(buf, 0, 300); +is.reset(); +if ((buf[0] & 0xFF) == 0x83) { +if (buf[10] == 68 && buf[11] == 101 && buf[12] == 110) return "BCifDensity"; +}if (buf[0] == 80 && buf[1] == 77 && buf[2] == 1 && buf[3] == 0) return "Pmesh"; +if (buf[208] == 77 && buf[209] == 65 && buf[210] == 80) return "Mrc"; +if (buf[0] == 20 && buf[1] == 0 && buf[2] == 0 && buf[3] == 0) return "DelPhi"; +if (buf[36] == 0 && buf[37] == 100) return "Dsn6"; +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}}var br = null; +try { +br = new JU.LimitedLineReader(bufferedReader, 16000); +line = br.getHeader(0); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (br == null || line == null || line.length == 0) return null; +var pt0 = line.indexOf('\0'); +if (pt0 >= 0) { +if ((line.charAt(0)).charCodeAt(0) == 0x83) return "BCifDensity"; +if (line.indexOf("PM\u0001\u0000") == 0) return "Pmesh"; +if (line.indexOf("MAP ") == 208) return "Mrc"; +if (line.indexOf("\u0014\u0000\u0000\u0000") == 0) return "DelPhi"; +if (line.length > 37 && ((line.charAt(36)).charCodeAt(0) == 0 && (line.charAt(37)).charCodeAt(0) == 100 || (line.charAt(36)).charCodeAt(0) == 0 && (line.charAt(37)).charCodeAt(0) == 100)) { +return "Dsn6"; +}}switch ((line.charAt(0)).charCodeAt(0)) { +case 64: +if (line.indexOf("@text") == 0) return "Kinemage"; +break; +case 35: +if (line.indexOf(".obj") >= 0) return "Obj"; +if (line.indexOf("MSMS") >= 0) return "Msms"; +if (line.indexOf("Menu") >= 0) return "MENU"; +break; +case 38: +if (line.indexOf("&plot") == 0) return "Jaguar"; +break; +case 13: +case 10: +if (line.indexOf("ZYX") >= 0) return "Xplor"; +break; +} +if (line.indexOf("Here is your gzipped map") >= 0) return "UPPSALA" + line; +if (line.startsWith("data_SERVER")) return "CifDensity"; +if (line.startsWith("4MESHC")) return "Pmesh4"; +if (line.indexOf("! nspins") >= 0) return "CastepDensity"; +if (line.indexOf("= 0 && line.indexOf("= 0) return "JvxlXml"; +if (line.indexOf("#JVXL+") >= 0) return "Jvxl+"; +if (line.indexOf("#JVXL") >= 0) return "Jvxl"; +if (line.indexOf("#JmolPmesh") >= 0) return "Pmesh"; +if (line.indexOf("#obj") >= 0) return "Obj"; +if (line.indexOf("#pmesh") >= 0) return "Obj"; +if (line.indexOf("= 0) return "Efvet"; +if (line.indexOf("usemtl") >= 0) return "Obj"; +if (line.indexOf("# object with") == 0) return "Nff"; +if (line.indexOf("PRIMVEC") >= 0 || line.indexOf("BEGIN_DATAGRID_3D") >= 0 || line.indexOf("BEGIN_BANDGRID_3D") >= 0) return "Xsf"; +if (line.indexOf("tiles in x, y") >= 0) return "Ras3D"; +if (line.indexOf(" 0.00000e+00 0.00000e+00 0 0\n") >= 0) return "Uhbd"; +line = br.readLineWithNewline(); +if (line.indexOf("object 1 class gridpositions counts") == 0) return "Apbs"; +var tokens = JU.PT.getTokens(line); +var line2 = br.readLineWithNewline(); +if (tokens.length == 2 && JU.PT.parseInt(tokens[0]) == 3 && JU.PT.parseInt(tokens[1]) != -2147483648) { +tokens = JU.PT.getTokens(line2); +if (tokens.length == 3 && JU.PT.parseInt(tokens[0]) != -2147483648 && JU.PT.parseInt(tokens[1]) != -2147483648 && JU.PT.parseInt(tokens[2]) != -2147483648) return "PltFormatted"; +}var line3 = br.readLineWithNewline(); +if (line.startsWith("v ") && line2.startsWith("v ") && line3.startsWith("v ")) return "Obj"; +var nAtoms = JU.PT.parseInt(line3); +if (nAtoms == -2147483648) return (line3.indexOf("+") == 0 ? "Jvxl+" : null); +tokens = JU.PT.getTokens(line3); +if (tokens[0].indexOf(".") > 0) return (line3.length >= 60 || tokens.length != 3 ? null : "VaspChgcar"); +if (nAtoms >= 0) return (tokens.length == 4 || tokens.length == 5 && tokens[4].equals("1") ? "Cube" : null); +nAtoms = -nAtoms; +for (var i = 4 + nAtoms; --i >= 0; ) if ((line = br.readLineWithNewline()) == null) return null; + +var nSurfaces = JU.PT.parseInt(line); +if (nSurfaces == -2147483648) return null; +return (nSurfaces < 0 ? "Jvxl" : "Cube"); +}, "java.io.BufferedReader"); +c$.getManifestScriptPath = Clazz.defineMethod(c$, "getManifestScriptPath", +function(manifest){ +if (manifest.indexOf("$SCRIPT_PATH$") >= 0) return ""; +var ch = (manifest.indexOf('\n') >= 0 ? "\n" : "\r"); +if (manifest.indexOf(".spt") >= 0) { +var s = JU.PT.split(manifest, ch); +for (var i = s.length; --i >= 0; ) if (s[i].indexOf(".spt") >= 0) return "|" + JU.PT.trim(s[i], "\r\n \t"); + +}return null; +}, "~S"); +c$.getFileReferences = Clazz.defineMethod(c$, "getFileReferences", +function(script, fileList, fileListUTF){ +for (var ipt = 0; ipt < JV.FileManager.scriptFilePrefixes.length; ipt++) { +var tag = JV.FileManager.scriptFilePrefixes[ipt]; +var i = -1; +while ((i = script.indexOf(tag, i + 1)) >= 0) { +var s = JU.PT.getQuotedStringAt(script, i); +if (s.indexOf("\\u") >= 0) s = JU.Escape.unescapeUnicode(s); +fileList.addLast(s); +if (fileListUTF != null) { +if (s.indexOf("\\u") >= 0) s = JU.Escape.unescapeUnicode(s); +fileListUTF.addLast(s); +}} +} +}, "~S,JU.Lst,JU.Lst"); +c$.setScriptFileReferences = Clazz.defineMethod(c$, "setScriptFileReferences", +function(script, localPath, remotePath, scriptPath){ +if (localPath != null) script = JV.FileManager.setScriptFileRefs(script, localPath, true); +if (remotePath != null) script = JV.FileManager.setScriptFileRefs(script, remotePath, false); +script = JU.PT.rep(script, "\1\"", "\""); +if (scriptPath != null) { +while (scriptPath.endsWith("/")) scriptPath = scriptPath.substring(0, scriptPath.length - 1); + +for (var ipt = 0; ipt < JV.FileManager.scriptFilePrefixes.length; ipt++) { +var tag = JV.FileManager.scriptFilePrefixes[ipt]; +script = JU.PT.rep(script, tag + ".", tag + scriptPath); +} +}return script; +}, "~S,~S,~S,~S"); +c$.setScriptFileRefs = Clazz.defineMethod(c$, "setScriptFileRefs", +function(script, dataPath, isLocal){ +if (dataPath == null) return script; +var noPath = (dataPath.length == 0); +var fileNames = new JU.Lst(); +JV.FileManager.getFileReferences(script, fileNames, null); +var oldFileNames = new JU.Lst(); +var newFileNames = new JU.Lst(); +var nFiles = fileNames.size(); +for (var iFile = 0; iFile < nFiles; iFile++) { +var name0 = fileNames.get(iFile); +var name = name0; +var pt = name.indexOf("::"); +var type = ""; +if (pt >= 0) { +type = name.substring(pt + 2); +name = name.substring(pt + 2); +}if (isLocal == JU.OC.isLocal(name)) { +pt = (noPath ? -1 : name.indexOf("/" + dataPath + "/")); +if (pt >= 0) { +name = name.substring(pt + 1); +} else { +pt = name.lastIndexOf("/"); +if (pt < 0 && !noPath) name = "/" + name; +if (pt < 0 || noPath) pt++; +name = dataPath + name.substring(pt); +}}name = type + name; +JU.Logger.info("FileManager substituting " + name0 + " --> " + name); +oldFileNames.addLast("\"" + name0 + "\""); +newFileNames.addLast("\1\"" + name + "\""); +} +return JU.PT.replaceStrings(script, oldFileNames, newFileNames); +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "cachePut", +function(key, data){ +key = JV.FileManager.fixDOSName(key); +if (JU.Logger.debugging) JU.Logger.debug("cachePut " + key); +if (data == null || "".equals(data)) { +this.cache.remove(key); +return; +}this.cache.put(key, data); +this.getCachedPngjBytes(key); +}, "~S,~O"); +Clazz.defineMethod(c$, "cacheGet", +function(key, bytesOnly){ +key = JV.FileManager.fixDOSName(key); +var pt = key.indexOf("|"); +if (pt >= 0 && !key.endsWith("##JmolSurfaceInfo##")) key = key.substring(0, pt); +key = this.getFilePath(key, true, false); +var data = null; +{ +(data = Jmol.Cache.get(key)) || (data = this.cache.get(key)); +}return (bytesOnly && ((typeof(data)=='string')) ? null : data); +}, "~S,~B"); +Clazz.defineMethod(c$, "cacheClear", +function(){ +JU.Logger.info("cache cleared"); +this.cache.clear(); +if (this.pngjCache == null) return; +this.pngjCache = null; +JU.Logger.info("PNGJ cache cleared"); +}); +Clazz.defineMethod(c$, "cacheFileByNameAdd", +function(fileName, isAdd){ +if (fileName == null || !isAdd && fileName.equalsIgnoreCase("")) { +this.cacheClear(); +return -1; +}var data; +if (isAdd) { +fileName = JV.JC.fixProtocol(this.vwr.resolveDatabaseFormat(fileName)); +data = this.getFileAsBytes(fileName, null); +if ((typeof(data)=='string')) return 0; +this.cachePut(fileName, data); +} else { +if (fileName.endsWith("*")) return JU.AU.removeMapKeys(this.cache, fileName.substring(0, fileName.length - 1)); +data = this.cache.remove(JV.FileManager.fixDOSName(fileName)); +}return (data == null ? 0 : (typeof(data)=='string') ? (data).length : (data).length); +}, "~S,~B"); +Clazz.defineMethod(c$, "cacheList", +function(){ +var map = new java.util.Hashtable(); +for (var entry, $entry = this.cache.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) map.put(entry.getKey(), Integer.$valueOf(JU.AU.isAB(entry.getValue()) ? (entry.getValue()).length : entry.getValue().toString().length)); + +return map; +}); +Clazz.defineMethod(c$, "getCanonicalName", +function(pathName){ +var names = this.getClassifiedName(pathName, true); +return (names == null ? pathName : names[2]); +}, "~S"); +Clazz.defineMethod(c$, "recachePngjBytes", +function(fileName, bytes){ +if (this.pngjCache == null || !this.pngjCache.containsKey(fileName)) return; +this.pngjCache.put(fileName, bytes); +JU.Logger.info("PNGJ recaching " + fileName + " (" + bytes.length + ")"); +}, "~S,~A"); +Clazz.defineMethod(c$, "getPngjOrDroppedBytes", +function(fullName, name){ +var bytes = this.getCachedPngjBytes(fullName); +return (bytes == null ? this.cacheGet(name, true) : bytes); +}, "~S,~S"); +Clazz.defineMethod(c$, "getCachedPngjBytes", +function(pathName){ +return (pathName == null || this.pngjCache == null || pathName.indexOf(".png") < 0 ? null : this.getJzu().getCachedPngjBytes(this, pathName)); +}, "~S"); +Clazz.overrideMethod(c$, "postByteArray", +function(fileName, bytes){ +if (fileName.startsWith("cache://")) { +this.cachePut(fileName, bytes); +return "OK " + bytes.length + "cached"; +}var ret = this.getBufferedInputStreamOrErrorMessageFromName(fileName, null, false, false, bytes, false, true); +if ((typeof(ret)=='string')) return ret; +try { +ret = JU.Rdr.getStreamAsBytes(ret, null); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +try { +(ret).close(); +} catch (e1) { +if (Clazz.exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +} else { +throw e; +} +} +return (ret == null ? "" : JU.Rdr.fixUTF(ret)); +}, "~S,~A"); +c$.isJmolType = Clazz.defineMethod(c$, "isJmolType", +function(type){ +return (type.equals("PNG") || type.equals("PNGJ") || type.equals("JMOL") || type.equals("ZIP") || type.equals("ZIPALL")); +}, "~S"); +c$.isEmbeddable = Clazz.defineMethod(c$, "isEmbeddable", +function(type){ +var pt = type.lastIndexOf('.'); +if (pt >= 0) type = type.substring(pt + 1); +type = type.toUpperCase(); +return (JV.FileManager.isJmolType(type) || JU.PT.isOneOf(type, ";JPG;JPEG;POV;IDTF;")); +}, "~S"); +Clazz.defineMethod(c$, "getEmbeddedFileState", +function(fileName, allowCached, sptName){ +if (!JV.FileManager.isEmbeddable(fileName)) return ""; +var dir = this.getZipDirectory(fileName, false, allowCached); +if (dir.length == 0) { +var state = this.vwr.getFileAsString4(fileName, -1, false, true, false, "file"); +return (state.indexOf("**** Jmol Embedded Script ****") < 0 ? "" : JV.FileManager.getEmbeddedScript(state)); +}for (var i = 0; i < dir.length; i++) if (dir[i].indexOf(sptName) >= 0) { +var data = Clazz.newArray(-1, [fileName + "|" + dir[i], null]); +this.getFileDataAsString(data, -1, false, false, false); +return data[1]; +} +return ""; +}, "~S,~B,~S"); +c$.stripTypePrefix = Clazz.defineMethod(c$, "stripTypePrefix", +function(fileName){ +var pt = fileName.indexOf("::"); +return (pt < 0 || pt >= 20 ? fileName : fileName.substring(pt + 2)); +}, "~S"); +c$.getEmbeddedScript = Clazz.defineMethod(c$, "getEmbeddedScript", +function(s){ +if (s == null) return s; +var pt = s.indexOf("**** Jmol Embedded Script ****"); +if (pt < 0) return s; +var pt1 = s.lastIndexOf("/*", pt); +var pt2 = s.indexOf((s.charAt(pt1 + 2) == '*' ? "*" : "") + "*/", pt); +if (pt1 >= 0 && pt2 >= pt) s = s.substring(pt + "**** Jmol Embedded Script ****".length, pt2) + "\n"; +while ((pt1 = s.indexOf(" #Jmol...\u0000")) >= 0) s = s.substring(0, pt1) + s.substring(pt1 + " #Jmol...\u0000".length + 4); + +if (JU.Logger.debugging) JU.Logger.debug(s); +return s; +}, "~S"); +Clazz.defineMethod(c$, "isZipStream", +function(br){ +return this.vwr.getJzt().isZipStream(br); +}, "~O"); +c$.SIMULATION_PROTOCOL = "http://SIMULATION/"; +c$.scriptFilePrefixes = Clazz.newArray(-1, ["/*file*/\"", "FILE0=\"", "FILE1=\""]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/GlobalSettings.js b/config/plugins/visualizations/jmol/static/j2s/JV/GlobalSettings.js new file mode 100755 index 000000000000..2b807aeaddb1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/GlobalSettings.js @@ -0,0 +1,811 @@ +Clazz.declarePackage("JV"); +Clazz.load(["java.util.Hashtable", "JU.P3", "J.c.CBK"], "JV.GlobalSettings", ["JU.DF", "$.PT", "$.SB", "J.c.STR", "JS.SV", "JU.Escape", "$.Logger", "JV.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.htNonbooleanParameterValues = null; +this.htBooleanParameterFlags = null; +this.htPropertyFlagsRemoved = null; +this.htUserVariables = null; +this.zDepth = 0; +this.zShadePower = 3; +this.zSlab = 50; +this.slabByMolecule = false; +this.slabByAtom = false; +this.allowEmbeddedScripts = true; +this.appendNew = true; +this.appletProxy = ""; +this.applySymmetryToBonds = false; +this.atomTypes = ""; +this.autoBond = true; +this.axesOrientationRasmol = false; +this.bondRadiusMilliAngstroms = 150; +this.bondTolerance = 0.45; +this.defaultDirectory = ""; +this.defaultStructureDSSP = true; +this.ptDefaultLattice = null; +this.defaultLoadScript = ""; +this.defaultLoadFilter = ""; +this.defaultDropScript = "zap; load SYNC \"%FILE\";if (%ALLOWCARTOONS && _loadScript == \'\' && defaultLoadScript == \'\' && _filetype == \'Pdb\') {if ({(protein or nucleic)&*/1.1} && {*/1.1}[1].groupindex != {*/1.1}[0].groupindex){select protein or nucleic;cartoons only;}if ({visible && cartoons > 0}){color structure}else{wireframe -0.1};if (!{visible}){spacefill 23%};select *}"; +this.forceAutoBond = false; +this.fractionalRelative = true; +this.inlineNewlineChar = '|'; +this.loadFormat = null; +this.pdbLoadFormat = null; +this.pdbLoadLigandFormat = null; +this.nmrUrlFormat = null; +this.nmrPredictFormat = null; +this.smilesUrlFormat = null; +this.nihResolverFormat = null; +this.pubChemFormat = null; +this.macroDirectory = null; +this.resolverResolver = null; +this.checkCIR = false; +this.minBondDistance = 0.4; +this.minPixelSelRadius = 6; +this.pdbAddHydrogens = false; +this.pdbGetHeader = false; +this.pdbSequential = false; +this.percentVdwAtom = 23; +this.smallMoleculeMaxAtoms = 40000; +this.smartAromatic = true; +this.zeroBasedXyzRasmol = false; +this.legacyAutoBonding = false; +this.legacyHAddition = false; +this.legacyJavaFloat = false; +this.doublePrecision = false; +this.jmolInJSpecView = true; +this.modulateOccupancy = true; +this.allowRotateSelected = false; +this.allowMoveAtoms = false; +this.dotSolvent = false; +this.defaultAngleLabel = "%VALUE %UNITS"; +this.defaultDistanceLabel = "%VALUE %UNITS"; +this.defaultTorsionLabel = "%VALUE %UNITS"; +this.justifyMeasurements = false; +this.measureAllModels = false; +this.minimizationSteps = 100; +this.minimizationRefresh = true; +this.minimizationSilent = false; +this.minimizationCriterion = 0.001; +this.minimizationMaxAtoms = 200; +this.minimizationReportSteps = 10; +this.infoFontSize = 20; +this.antialiasDisplay = false; +this.antialiasImages = true; +this.imageState = true; +this.antialiasTranslucent = true; +this.displayCellParameters = true; +this.dotsSelectedOnly = false; +this.dotSurface = true; +this.dotDensity = 3; +this.dotScale = 1; +this.meshScale = 1; +this.greyscaleRendering = false; +this.isosurfaceKey = false; +this.isosurfacePropertySmoothing = true; +this.isosurfacePropertySmoothingPower = 7; +this.platformSpeed = 10; +this.repaintWaitMs = 1000; +this.showHiddenSelectionHalos = false; +this.showKeyStrokes = true; +this.showMeasurements = true; +this.showTiming = false; +this.zoomLarge = true; +this.zoomHeight = false; +this.backgroundImageFileName = null; +this.partialDots = false; +this.bondModeOr = false; +this.hbondsBackbone = false; +this.hbondsAngleMinimum = 90; +this.hbondNODistanceMaximum = 3.25; +this.hbondHXDistanceMaximum = 2.5; +this.hbondsRasmol = true; +this.hbondsSolid = false; +this.modeMultipleBond = 2; +this.showHydrogens = true; +this.showMultipleBonds = true; +this.ssbondsBackbone = false; +this.multipleBondSpacing = -1; +this.multipleBondRadiusFactor = 0; +this.multipleBondBananas = false; +this.nboCharges = true; +this.cartoonBaseEdges = false; +this.cartoonRockets = false; +this.cartoonBlockHeight = 0.5; +this.cartoonBlocks = false; +this.cartoonSteps = false; +this.cartoonFancy = false; +this.cartoonLadders = false; +this.cartoonRibose = false; +this.chainCaseSensitive = false; +this.cipRule6Full = false; +this.hermiteLevel = 0; +this.highResolutionFlag = false; +this.rangeSelected = false; +this.rasmolHydrogenSetting = true; +this.rasmolHeteroSetting = true; +this.ribbonAspectRatio = 16; +this.ribbonBorder = false; +this.rocketBarrels = false; +this.sheetSmoothing = 1; +this.traceAlpha = true; +this.translucent = true; +this.twistedSheets = false; +this.autoplayMovie = true; +this.allowAudio = true; +this.allowGestures = false; +this.allowModelkit = true; +this.allowMultiTouch = true; +this.allowKeyStrokes = false; +this.hiddenLinesDashed = false; +this.animationFps = 10; +this.atomPicking = true; +this.autoFps = false; +this.axesMode = 603979809; +this.axesScale = 2; +this.axesOffset = 0; +this.starWidth = 0.05; +this.bondPicking = false; +this.dataSeparator = "~~~"; +this.debugScript = false; +this.defaultDrawArrowScale = 0.5; +this.defaultLabelXYZ = "%a"; +this.defaultLabelPDB = "%m%r"; +this.defaultTranslucent = 0.5; +this.delayMaximumMs = 0; +this.dipoleScale = 1; +this.drawFontSize = 16.0; +this.disablePopupMenu = false; +this.dragSelected = false; +this.drawHover = false; +this.drawPicking = false; +this.dsspCalcHydrogen = true; +this.elementKey = false; +this.energyUnits = "kJ"; +this.exportScale = 0; +this.helpPath = "https://chemapps.stolaf.edu/jmol/docs/index.htm"; +this.fontScaling = false; +this.fontCaching = true; +this.forceField = "MMFF"; +this.helixStep = 1; +this.hideNameInPopup = false; +this.hoverDelayMs = 500; +this.labelPointerWidth = 2; +this.loadAtomDataTolerance = 0.01; +this.logCommands = false; +this.logGestures = false; +this.measureDistanceUnits = "nanometers"; +this.measurementLabels = true; +this.messageStyleChime = false; +this.monitorEnergy = false; +this.modulationScale = 1; +this.multiProcessor = true; +this.particleRadius = 20; +this.pickingSpinRate = 10; +this.pickLabel = ""; +this.pointGroupDistanceTolerance = 0.2; +this.pointGroupLinearTolerance = 8.0; +this.preserveState = true; +this.propertyColorScheme = "roygb"; +this.quaternionFrame = "p"; +this.saveProteinStructureState = true; +this.showModVecs = false; +this.showUnitCellDetails = true; +this.solventProbeRadius = 1.2; +this.scriptDelay = 0; +this.selectAllModels = true; +this.statusReporting = true; +this.strandCountForStrands = 5; +this.strandCountForMeshRibbon = 7; +this.strutSpacing = 6; +this.strutLengthMaximum = 7.0; +this.strutDefaultRadius = 0.3; +this.strutsMultiple = false; +this.symmetryHermannMauguin = false; +this.useMinimizationThread = true; +this.useNumberLocalization = true; +this.useScriptQueue = true; +this.waitForMoveTo = true; +this.noDelay = false; +this.vectorScale = 1; +this.vectorSymmetry = false; +this.vectorsCentered = false; +this.vectorTrail = 0; +this.vibrationPeriod = 1; +this.vibrationScale = 1; +this.wireframeRotation = false; +this.hideNavigationPoint = false; +this.navigationMode = false; +this.navigationPeriodic = false; +this.navigationSpeed = 5; +this.showNavigationPointAlways = false; +this.stereoState = null; +this.modelKitMode = false; +this.objColors = null; +this.objStateOn = null; +this.objMad10 = null; +this.ellipsoidAxes = false; +this.ellipsoidDots = false; +this.ellipsoidArcs = false; +this.ellipsoidArrows = false; +this.ellipsoidFill = false; +this.ellipsoidBall = true; +this.ellipsoidDotCount = 200; +this.ellipsoidAxisDiameter = 0.02; +this.testFlag1 = false; +this.testFlag2 = false; +this.testFlag3 = false; +this.testFlag4 = false; +this.structureList = null; +this.haveSetStructureList = false; +this.bondingVersion = 0; +Clazz.instantialize(this, arguments);}, JV, "GlobalSettings", null); +Clazz.prepareFields (c$, function(){ +this.htUserVariables = new java.util.Hashtable(); +this.ptDefaultLattice = new JU.P3(); +this.objColors = Clazz.newIntArray (7, 0); +this.objStateOn = Clazz.newBooleanArray(7, false); +this.objMad10 = Clazz.newIntArray (7, 0); +this.structureList = new java.util.Hashtable(); +{ +this.structureList.put(J.c.STR.TURN, Clazz.newFloatArray(-1, [30, 90, -15, 95])); +this.structureList.put(J.c.STR.SHEET, Clazz.newFloatArray(-1, [-180, -10, 70, 180, -180, -45, -180, -130, 140, 180, 90, 180])); +this.structureList.put(J.c.STR.HELIX, Clazz.newFloatArray(-1, [-160, 0, -100, 45])); +}}); +Clazz.makeConstructor(c$, +function(vwr, g, clearUserVariables){ +this.vwr = vwr; +this.htNonbooleanParameterValues = new java.util.Hashtable(); +this.htBooleanParameterFlags = new java.util.Hashtable(); +this.htPropertyFlagsRemoved = new java.util.Hashtable(); +this.loadFormat = this.pdbLoadFormat = JV.JC.databases.get("pdb"); +this.pdbLoadLigandFormat = JV.JC.databases.get("ligand"); +this.nmrUrlFormat = JV.JC.databases.get("nmr"); +this.nmrPredictFormat = JV.JC.databases.get("nmrdb"); +this.pubChemFormat = JV.JC.databases.get("pubchem"); +this.resolverResolver = JV.JC.databases.get("resolverresolver"); +this.macroDirectory = "https://chemapps.stolaf.edu/jmol/macros"; +if (g == null) { +this.setB("undoAuto", !vwr.isApplet); +} else { +this.setB("undoAuto", vwr.getBooleanProperty("undoAuto")); +if (!clearUserVariables) { +this.setO("_pngjFile", g.getParameter("_pngjFile", false)); +this.htUserVariables = g.htUserVariables; +}this.debugScript = g.debugScript; +this.disablePopupMenu = g.disablePopupMenu; +this.messageStyleChime = g.messageStyleChime; +this.measureDistanceUnits = g.measureDistanceUnits; +this.defaultDirectory = g.defaultDirectory; +this.autoplayMovie = g.autoplayMovie; +this.allowAudio = g.allowAudio; +this.allowGestures = g.allowGestures; +this.allowModelkit = g.allowModelkit; +this.allowMultiTouch = g.allowMultiTouch; +this.allowKeyStrokes = g.allowKeyStrokes; +this.legacyAutoBonding = g.legacyAutoBonding; +this.legacyHAddition = g.legacyHAddition; +this.legacyJavaFloat = g.legacyJavaFloat; +this.minimizationReportSteps = g.minimizationReportSteps; +this.doublePrecision = g.doublePrecision; +this.bondingVersion = g.bondingVersion; +this.platformSpeed = g.platformSpeed; +this.useScriptQueue = g.useScriptQueue; +this.showTiming = g.showTiming; +this.wireframeRotation = g.wireframeRotation; +this.testFlag1 = g.testFlag1; +this.testFlag2 = g.testFlag2; +this.testFlag3 = g.testFlag3; +this.testFlag4 = g.testFlag4; +this.nihResolverFormat = g.nihResolverFormat; +}if (this.nihResolverFormat == null) this.nihResolverFormat = JV.JC.databases.get("nci"); +this.setCIR(this.nihResolverFormat, false); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) this.resetValue(item.name() + "Callback", g); + +this.setF("cameraDepth", 3.0); +this.setI("undoMax", vwr.stm.getUndoMax()); +this.setI("contextDepthMax", 100); +this.setI("depth", 0); +this.setF("gestureSwipeFactor", 1.0); +this.setB("hideNotSelected", false); +this.setI("historyLevel", 0); +this.setO("hoverLabel", ""); +this.setB("isKiosk", vwr.isKiosk()); +this.setO("logFile", vwr.getLogFileName()); +this.setI("logLevel", JU.Logger.getLogLevel()); +this.setF("mouseWheelFactor", 1.15); +this.setF("mouseDragFactor", 1.0); +this.setI("navFps", 10); +this.setI("navigationDepth", 0); +this.setI("navigationSlab", 0); +this.setI("navX", 0); +this.setI("navY", 0); +this.setI("navZ", 0); +this.setO("pathForAllFiles", ""); +this.setB("perspectiveDepth", true); +this.setI("perspectiveModel", 11); +this.setO("picking", "identify"); +this.setO("pickingStyle", "toggle"); +this.setB("refreshing", true); +this.setI("rotationRadius", 0); +this.setI("scaleAngstromsPerInch", 0); +this.setI("scriptReportingLevel", 0); +this.setB("selectionHalos", false); +this.setB("showaxes", false); +this.setB("showboundbox", false); +this.setB("showfrank", false); +this.setB("showUnitcell", false); +this.setI("slab", 100); +this.setB("slabEnabled", false); +this.setF("slabrange", 0); +this.setI("spinX", 0); +this.setI("spinY", 30); +this.setI("spinZ", 0); +this.setI("spinFps", 30); +this.setF("visualRange", 5.0); +this.setI("stereoDegrees", -5); +this.setB("syncScript", vwr.sm.syncingScripts); +this.setB("syncMouse", vwr.sm.syncingMouse); +this.setB("syncStereo", vwr.sm.stereoSync); +this.setB("windowCentered", true); +this.setB("zoomEnabled", true); +this.setI("_version", JV.JC.versionInt); +this.setO("_versionDate", JV.Viewer.getJmolVersion()); +this.setB("axesWindow", true); +this.setB("axesMolecular", false); +this.setB("axesPosition", false); +this.setB("axesUnitcell", false); +this.setI("backgroundModel", 0); +this.setB("colorRasmol", false); +this.setO("currentLocalPath", ""); +this.setO("defaultLattice", "{0 0 0}"); +this.setO("defaultColorScheme", "Jmol"); +this.setO("defaultDirectoryLocal", ""); +this.setO("defaults", "Jmol"); +this.setO("defaultVDW", "Jmol"); +this.setO("exportDrivers", "Idtf;Maya;Povray;Vrml;X3d;Stl;Tachyon;Obj"); +this.setI("propertyAtomNumberColumnCount", 0); +this.setI("propertyAtomNumberField", 0); +this.setI("propertyDataColumnCount", 0); +this.setI("propertyDataField", 0); +this.setI("undoMax", vwr.stm.getUndoMax()); +this.setB("allowEmbeddedScripts", this.allowEmbeddedScripts); +this.setB("allowGestures", this.allowGestures); +this.setB("allowKeyStrokes", this.allowKeyStrokes); +this.setB("allowModelkit", this.allowModelkit); +this.setB("allowMultiTouch", this.allowMultiTouch); +this.setB("allowRotateSelected", this.allowRotateSelected); +this.setB("allowMoveAtoms", this.allowMoveAtoms); +this.setI("animationFps", this.animationFps); +this.setB("antialiasImages", this.antialiasImages); +this.setB("antialiasDisplay", this.antialiasDisplay); +this.setB("antialiasTranslucent", this.antialiasTranslucent); +this.setB("appendNew", this.appendNew); +this.setO("appletProxy", this.appletProxy); +this.setB("applySymmetryToBonds", this.applySymmetryToBonds); +this.setB("atomPicking", this.atomPicking); +this.setO("atomTypes", this.atomTypes); +this.setB("autoBond", this.autoBond); +this.setB("autoFps", this.autoFps); +this.setI("axesMode", this.axesMode == 603979808 ? 2 : this.axesMode == 603979804 ? 1 : 0); +this.setF("axesScale", this.axesScale); +this.setF("axesOffset", this.axesOffset); +this.setB("axesOrientationRasmol", this.axesOrientationRasmol); +this.setF("cartoonBlockHeight", this.cartoonBlockHeight); +this.setB("cartoonBlocks", this.cartoonBlocks); +this.setB("cartoonSteps", this.cartoonSteps); +this.setB("bondModeOr", this.bondModeOr); +this.setB("bondPicking", this.bondPicking); +this.setI("bondRadiusMilliAngstroms", this.bondRadiusMilliAngstroms); +this.setF("bondTolerance", this.bondTolerance); +this.setB("cartoonBaseEdges", this.cartoonBaseEdges); +this.setB("cartoonFancy", this.cartoonFancy); +this.setB("cartoonLadders", this.cartoonLadders); +this.setB("cartoonLadders", this.cartoonRibose); +this.setB("cartoonRockets", this.cartoonRockets); +this.setB("chainCaseSensitive", this.chainCaseSensitive); +this.setB("cipRule6Full", this.cipRule6Full); +this.setI("bondingVersion", this.bondingVersion); +this.setO("dataSeparator", this.dataSeparator); +this.setB("debugScript", this.debugScript); +this.setO("defaultAngleLabel", this.defaultAngleLabel); +this.setF("defaultDrawArrowScale", this.defaultDrawArrowScale); +this.setO("defaultDirectory", this.defaultDirectory); +this.setO("defaultDistanceLabel", this.defaultDistanceLabel); +this.setO("defaultDropScript", this.defaultDropScript); +this.setO("defaultLabelPDB", this.defaultLabelPDB); +this.setO("defaultLabelXYZ", this.defaultLabelXYZ); +this.setO("defaultLoadFilter", this.defaultLoadFilter); +this.setO("defaultLoadScript", this.defaultLoadScript); +this.setB("defaultStructureDSSP", this.defaultStructureDSSP); +this.setO("defaultTorsionLabel", this.defaultTorsionLabel); +this.setF("defaultTranslucent", this.defaultTranslucent); +this.setI("delayMaximumMs", this.delayMaximumMs); +this.setF("dipoleScale", this.dipoleScale); +this.setB("disablePopupMenu", this.disablePopupMenu); +this.setB("displayCellParameters", this.displayCellParameters); +this.setI("dotDensity", this.dotDensity); +this.setI("dotScale", this.dotScale); +this.setB("dotsSelectedOnly", this.dotsSelectedOnly); +this.setB("dotSurface", this.dotSurface); +this.setB("dragSelected", this.dragSelected); +this.setB("drawHover", this.drawHover); +this.setF("drawFontSize", this.drawFontSize); +this.setB("drawPicking", this.drawPicking); +this.setB("dsspCalculateHydrogenAlways", this.dsspCalcHydrogen); +this.setB("elementkey", this.elementKey); +this.setB("ellipsoidArcs", this.ellipsoidArcs); +this.setB("ellipsoidArrows", this.ellipsoidArrows); +this.setB("ellipsoidAxes", this.ellipsoidAxes); +this.setF("ellipsoidAxisDiameter", this.ellipsoidAxisDiameter); +this.setB("ellipsoidBall", this.ellipsoidBall); +this.setI("ellipsoidDotCount", this.ellipsoidDotCount); +this.setB("ellipsoidDots", this.ellipsoidDots); +this.setB("ellipsoidFill", this.ellipsoidFill); +this.setO("energyUnits", this.energyUnits); +this.setF("exportScale", this.exportScale); +this.setB("doublePrecision", this.doublePrecision); +this.setB("fontScaling", this.fontScaling); +this.setB("fontCaching", this.fontCaching); +this.setB("forceAutoBond", this.forceAutoBond); +this.setO("forceField", this.forceField); +this.setB("fractionalRelative", this.fractionalRelative); +this.setF("particleRadius", this.particleRadius); +this.setB("greyscaleRendering", this.greyscaleRendering); +this.setF("hbondsAngleMinimum", this.hbondsAngleMinimum); +this.setF("hbondHXDistanceMaximum", this.hbondHXDistanceMaximum); +this.setF("hbondsDistanceMaximum", this.hbondNODistanceMaximum); +this.setB("hbondsBackbone", this.hbondsBackbone); +this.setB("hbondsRasmol", this.hbondsRasmol); +this.setB("hbondsSolid", this.hbondsSolid); +this.setI("helixStep", this.helixStep); +this.setO("helpPath", this.helpPath); +this.setI("hermiteLevel", this.hermiteLevel); +this.setB("hideNameInPopup", this.hideNameInPopup); +this.setB("hideNavigationPoint", this.hideNavigationPoint); +this.setB("hiddenLinesDashed", this.hiddenLinesDashed); +this.setB("highResolution", this.highResolutionFlag); +this.setF("hoverDelay", this.hoverDelayMs / 1000); +this.setB("imageState", this.imageState); +this.setI("infoFontSize", this.infoFontSize); +this.setB("isosurfaceKey", this.isosurfaceKey); +this.setB("isosurfacePropertySmoothing", this.isosurfacePropertySmoothing); +this.setI("isosurfacePropertySmoothingPower", this.isosurfacePropertySmoothingPower); +this.setB("jmolInJSpecView", this.jmolInJSpecView); +this.setI("labelPointerWidth", this.labelPointerWidth); +this.setB("justifyMeasurements", this.justifyMeasurements); +this.setB("legacyAutoBonding", this.legacyAutoBonding); +this.setB("legacyHAddition", this.legacyHAddition); +this.setB("legacyJavaFloat", this.legacyJavaFloat); +this.setF("loadAtomDataTolerance", this.loadAtomDataTolerance); +this.setO("loadFormat", this.loadFormat); +this.setO("loadLigandFormat", this.pdbLoadLigandFormat); +this.setB("logCommands", this.logCommands); +this.setB("logGestures", this.logGestures); +this.setB("measureAllModels", this.measureAllModels); +this.setB("measurementLabels", this.measurementLabels); +this.setO("measurementUnits", this.measureDistanceUnits); +this.setI("meshScale", this.meshScale); +this.setB("messageStyleChime", this.messageStyleChime); +this.setF("minBondDistance", this.minBondDistance); +this.setI("minPixelSelRadius", this.minPixelSelRadius); +this.setI("minimizationReportSteps", this.minimizationReportSteps); +this.setI("minimizationSteps", this.minimizationSteps); +this.setB("minimizationRefresh", this.minimizationRefresh); +this.setB("minimizationSilent", this.minimizationSilent); +this.setF("minimizationCriterion", this.minimizationCriterion); +this.setB("modelKitMode", this.modelKitMode); +this.setF("modulationScale", this.modulationScale); +this.setB("monitorEnergy", this.monitorEnergy); +this.setF("multipleBondRadiusFactor", this.multipleBondRadiusFactor); +this.setB("multipleBondBananas", this.multipleBondBananas); +this.setF("multipleBondSpacing", this.multipleBondSpacing); +this.setB("multiProcessor", this.multiProcessor && (JV.Viewer.nProcessors > 1)); +this.setB("navigationMode", this.navigationMode); +this.setB("navigationPeriodic", this.navigationPeriodic); +this.setF("navigationSpeed", this.navigationSpeed); +this.setB("nboCharges", this.nboCharges); +this.setB("noDelay", this.noDelay); +this.setO("nmrPredictFormat", this.nmrPredictFormat); +this.setO("nmrUrlFormat", this.nmrUrlFormat); +this.setB("partialDots", this.partialDots); +this.setB("pdbAddHydrogens", this.pdbAddHydrogens); +this.setB("pdbGetHeader", this.pdbGetHeader); +this.setB("pdbSequential", this.pdbSequential); +this.setI("percentVdwAtom", this.percentVdwAtom); +this.setI("pickingSpinRate", this.pickingSpinRate); +this.setO("pickLabel", this.pickLabel); +this.setI("platformSpeed", this.platformSpeed); +this.setF("pointGroupLinearTolerance", this.pointGroupLinearTolerance); +this.setF("pointGroupDistanceTolerance", this.pointGroupDistanceTolerance); +this.setB("preserveState", this.preserveState); +this.setO("propertyColorScheme", this.propertyColorScheme); +this.setO("quaternionFrame", this.quaternionFrame); +this.setB("rangeSelected", this.rangeSelected); +this.setI("repaintWaitMs", this.repaintWaitMs); +this.setI("ribbonAspectRatio", this.ribbonAspectRatio); +this.setB("ribbonBorder", this.ribbonBorder); +this.setB("rocketBarrels", this.rocketBarrels); +this.setB("saveProteinStructureState", this.saveProteinStructureState); +this.setB("scriptqueue", this.useScriptQueue); +this.setB("selectAllModels", this.selectAllModels); +this.setB("selectHetero", this.rasmolHeteroSetting); +this.setB("selectHydrogen", this.rasmolHydrogenSetting); +this.setF("sheetSmoothing", this.sheetSmoothing); +this.setB("showHiddenSelectionHalos", this.showHiddenSelectionHalos); +this.setB("showHydrogens", this.showHydrogens); +this.setB("showKeyStrokes", this.showKeyStrokes); +this.setB("showMeasurements", this.showMeasurements); +this.setB("showModulationVectors", this.showModVecs); +this.setB("showMultipleBonds", this.showMultipleBonds); +this.setB("showNavigationPointAlways", this.showNavigationPointAlways); +this.setI("showScript", this.scriptDelay); +this.setB("showtiming", this.showTiming); +this.setB("slabByMolecule", this.slabByMolecule); +this.setB("slabByAtom", this.slabByAtom); +this.setB("smartAromatic", this.smartAromatic); +this.setI("minimizationMaxAtoms", this.minimizationMaxAtoms); +this.setI("smallMoleculeMaxAtoms", this.smallMoleculeMaxAtoms); +this.setO("smilesUrlFormat", this.smilesUrlFormat); +this.setO("macroDirectory", this.macroDirectory); +this.setO("nihResolverFormat", this.nihResolverFormat); +this.setO("pubChemFormat", this.pubChemFormat); +this.setB("showUnitCellDetails", this.showUnitCellDetails); +this.setB("solventProbe", this.dotSolvent); +this.setF("solventProbeRadius", this.solventProbeRadius); +this.setB("ssbondsBackbone", this.ssbondsBackbone); +this.setF("starWidth", this.starWidth); +this.setB("statusReporting", this.statusReporting); +this.setI("strandCount", this.strandCountForStrands); +this.setI("strandCountForStrands", this.strandCountForStrands); +this.setI("strandCountForMeshRibbon", this.strandCountForMeshRibbon); +this.setF("strutDefaultRadius", this.strutDefaultRadius); +this.setF("strutLengthMaximum", this.strutLengthMaximum); +this.setI("strutSpacing", this.strutSpacing); +this.setB("strutsMultiple", this.strutsMultiple); +this.setB("symmetryhermannmauguin", this.symmetryHermannMauguin); +this.setB("testFlag1", this.testFlag1); +this.setB("testFlag2", this.testFlag2); +this.setB("testFlag3", this.testFlag3); +this.setB("testFlag4", this.testFlag4); +this.setB("traceAlpha", this.traceAlpha); +this.setB("translucent", this.translucent); +this.setB("twistedSheets", this.twistedSheets); +this.setB("useMinimizationThread", this.useMinimizationThread); +this.setB("useNumberLocalization", this.useNumberLocalization); +this.setB("vectorsCentered", this.vectorsCentered); +this.setF("vectorScale", this.vectorScale); +this.setB("vectorSymmetry", this.vectorSymmetry); +this.setI("vectorTrail", this.vectorTrail); +this.setF("vibrationPeriod", this.vibrationPeriod); +this.setF("vibrationScale", this.vibrationScale); +this.setB("waitForMoveTo", this.waitForMoveTo); +this.setB("wireframeRotation", this.wireframeRotation); +this.setI("zDepth", this.zDepth); +this.setB("zeroBasedXyzRasmol", this.zeroBasedXyzRasmol); +this.setB("zoomHeight", this.zoomHeight); +this.setB("zoomLarge", this.zoomLarge); +this.setI("zShadePower", this.zShadePower); +this.setI("zSlab", this.zSlab); +}, "JV.Viewer,JV.GlobalSettings,~B"); +Clazz.defineMethod(c$, "clear", +function(){ +var e = this.htUserVariables.keySet().iterator(); +while (e.hasNext()) { +var key = e.next(); +if (key.charAt(0) == '@' || key.startsWith("site_")) e.remove(); +} +this.vwr.setPicked(-1, false); +this.setI("_atomhovered", -1); +this.setO("_pickinfo", ""); +this.setB("selectionhalos", false); +this.setB("hidenotselected", false); +this.setB("measurementlabels", this.measurementLabels = true); +this.setB("drawHover", this.drawHover = false); +this.vwr.stm.saveScene("DELETE", null); +}); +Clazz.defineMethod(c$, "setUnits", +function(units){ +var mu = this.measureDistanceUnits; +var eu = this.energyUnits; +if (units.equalsIgnoreCase("angstroms")) this.measureDistanceUnits = "angstroms"; + else if (units.equalsIgnoreCase("nanometers") || units.equalsIgnoreCase("nm")) this.measureDistanceUnits = "nanometers"; + else if (units.equalsIgnoreCase("picometers") || units.equalsIgnoreCase("pm")) this.measureDistanceUnits = "picometers"; + else if (units.equalsIgnoreCase("bohr") || units.equalsIgnoreCase("au")) this.measureDistanceUnits = "au"; + else if (units.equalsIgnoreCase("vanderwaals") || units.equalsIgnoreCase("vdw")) this.measureDistanceUnits = "vdw"; + else if (units.toLowerCase().endsWith("hz") || units.toLowerCase().endsWith("khz")) this.measureDistanceUnits = units.toLowerCase(); + else if (units.equalsIgnoreCase("kj")) this.energyUnits = "kJ"; + else if (units.equalsIgnoreCase("kcal")) this.energyUnits = "kcal"; +if (!mu.equalsIgnoreCase(this.measureDistanceUnits)) this.setO("measurementUnits", this.measureDistanceUnits); + else if (!eu.equalsIgnoreCase(this.energyUnits)) this.setO("energyUnits", this.energyUnits); +}, "~S"); +Clazz.defineMethod(c$, "isJmolVariable", +function(key){ +return key.charAt(0) == '_' || this.htNonbooleanParameterValues.containsKey(key = key.toLowerCase()) || this.htBooleanParameterFlags.containsKey(key) || JV.GlobalSettings.unreportedProperties.indexOf(";" + key + ";") >= 0; +}, "~S"); +Clazz.defineMethod(c$, "resetValue", +function(name, g){ +this.setO(name, g == null ? "" : g.getParameter(name, true)); +}, "~S,JV.GlobalSettings"); +Clazz.defineMethod(c$, "setB", +function(name, value){ +name = name.toLowerCase(); +if (this.htNonbooleanParameterValues.containsKey(name)) return; +this.htBooleanParameterFlags.put(name, value ? Boolean.TRUE : Boolean.FALSE); +}, "~S,~B"); +Clazz.defineMethod(c$, "setI", +function(name, value){ +if (value != 2147483647) this.setO(name, Integer.$valueOf(value)); +}, "~S,~N"); +Clazz.defineMethod(c$, "setF", +function(name, value){ +if (!Float.isNaN(value)) this.setO(name, Float.$valueOf(value)); +}, "~S,~N"); +Clazz.defineMethod(c$, "setO", +function(name, value){ +name = name.toLowerCase(); +if (value == null || this.htBooleanParameterFlags.containsKey(name)) return; +this.htNonbooleanParameterValues.put(name, value); +}, "~S,~O"); +Clazz.defineMethod(c$, "removeParam", +function(key){ +key = key.toLowerCase(); +if (this.htBooleanParameterFlags.containsKey(key)) { +this.htBooleanParameterFlags.remove(key); +if (!this.htPropertyFlagsRemoved.containsKey(key)) this.htPropertyFlagsRemoved.put(key, Boolean.FALSE); +return; +}if (this.htNonbooleanParameterValues.containsKey(key)) this.htNonbooleanParameterValues.remove(key); +}, "~S"); +Clazz.defineMethod(c$, "setUserVariable", +function(key, $var){ +if ($var != null) { +key = key.toLowerCase(); +this.htUserVariables.put(key, $var.setName(key)); +}return $var; +}, "~S,JS.SV"); +Clazz.defineMethod(c$, "unsetUserVariable", +function(key){ +if (key.equals("all") || key.equals("variables")) { +this.htUserVariables.clear(); +JU.Logger.info("all user-defined variables deleted"); +} else if (this.htUserVariables.containsKey(key)) { +JU.Logger.info("variable " + key + " deleted"); +this.htUserVariables.remove(key); +}}, "~S"); +Clazz.defineMethod(c$, "removeUserVariable", +function(key){ +this.htUserVariables.remove(key); +}, "~S"); +Clazz.defineMethod(c$, "getUserVariable", +function(name){ +if (name == null) return null; +name = name.toLowerCase(); +return this.htUserVariables.get(name); +}, "~S"); +Clazz.defineMethod(c$, "getParameterEscaped", +function(name, nMax){ +name = name.toLowerCase(); +if (this.htNonbooleanParameterValues.containsKey(name)) { +var v = this.htNonbooleanParameterValues.get(name); +return JV.StateManager.varClip(name, JU.Escape.e(v), nMax); +}if (this.htBooleanParameterFlags.containsKey(name)) return this.htBooleanParameterFlags.get(name).toString(); +if (this.htUserVariables.containsKey(name)) return this.htUserVariables.get(name).escape(); +if (this.htPropertyFlagsRemoved.containsKey(name)) return "false"; +return ""; +}, "~S,~N"); +Clazz.defineMethod(c$, "getParameter", +function(name, nullAsString){ +var v = this.getParam(name, false); +return (v == null && nullAsString ? "" : v); +}, "~S,~B"); +Clazz.defineMethod(c$, "getAndSetNewVariable", +function(name, doSet){ +if (name == null || name.length == 0) name = "x"; +var v = this.getParam(name, true); +return (v == null && doSet && name.charAt(0) != '_' ? this.setUserVariable(name, JS.SV.newV(4, "")) : JS.SV.getVariable(v)); +}, "~S,~B"); +Clazz.defineMethod(c$, "getParam", +function(name, asVariable){ +name = name.toLowerCase(); +if (name.equals("_memory")) { +var bTotal = 0; +var bFree = 0; +{ +}var value = JU.DF.formatDecimal(bTotal - bFree, 1) + "/" + JU.DF.formatDecimal(bTotal, 1); +this.htNonbooleanParameterValues.put("_memory", value); +}if (this.htNonbooleanParameterValues.containsKey(name)) return this.htNonbooleanParameterValues.get(name); +if (this.htBooleanParameterFlags.containsKey(name)) return this.htBooleanParameterFlags.get(name); +if (this.htPropertyFlagsRemoved.containsKey(name)) return Boolean.FALSE; +if (this.htUserVariables.containsKey(name)) { +var v = this.htUserVariables.get(name); +return (asVariable ? v : JS.SV.oValue(v)); +}return null; +}, "~S,~B"); +Clazz.defineMethod(c$, "getVariableList", +function(){ +return JV.StateManager.getVariableList(this.htUserVariables, 0, true, false); +}); +Clazz.defineMethod(c$, "setStructureList", +function(list, type){ +this.haveSetStructureList = true; +this.structureList.put(type, list); +}, "~A,J.c.STR"); +Clazz.defineMethod(c$, "getStructureList", +function(){ +return this.structureList; +}); +c$.doReportProperty = Clazz.defineMethod(c$, "doReportProperty", +function(name){ +return (name.charAt(0) != '_' && JV.GlobalSettings.unreportedProperties.indexOf(";" + name + ";") < 0); +}, "~S"); +Clazz.defineMethod(c$, "getAllVariables", +function(){ +var map = new java.util.Hashtable(); +map.putAll(this.htBooleanParameterFlags); +map.putAll(this.htNonbooleanParameterValues); +map.putAll(this.htUserVariables); +return map; +}); +Clazz.defineMethod(c$, "getLoadState", +function(htParams){ +var str = new JU.SB(); +this.app(str, "set allowEmbeddedScripts false"); +if (this.allowEmbeddedScripts) this.setB("allowEmbeddedScripts", true); +this.app(str, "set appendNew " + this.appendNew); +this.app(str, "set appletProxy " + JU.PT.esc(this.appletProxy)); +this.app(str, "set applySymmetryToBonds " + this.applySymmetryToBonds); +if (this.atomTypes.length > 0) this.app(str, "set atomTypes " + JU.PT.esc(this.atomTypes)); +this.app(str, "set autoBond " + this.autoBond); +if (this.axesOrientationRasmol) this.app(str, "set axesOrientationRasmol true"); +this.app(str, "set bondRadiusMilliAngstroms " + this.bondRadiusMilliAngstroms); +this.app(str, "set bondTolerance " + this.bondTolerance); +this.app(str, "set defaultLattice " + JU.Escape.eP(this.ptDefaultLattice)); +this.app(str, "set defaultLoadFilter " + JU.PT.esc(this.defaultLoadFilter)); +this.app(str, "set defaultLoadScript \"\""); +if (this.defaultLoadScript.length > 0) this.setO("defaultLoadScript", this.defaultLoadScript); +this.app(str, "set defaultStructureDssp " + this.defaultStructureDSSP); +var sMode = this.vwr.getDefaultVdwNameOrData(-2147483648, null, null); +this.app(str, "set defaultVDW " + sMode); +if (sMode.equals("User")) this.app(str, this.vwr.getDefaultVdwNameOrData(2147483647, null, null)); +this.app(str, "set forceAutoBond " + this.forceAutoBond); +this.app(str, "#set defaultDirectory " + JU.PT.esc(this.defaultDirectory)); +this.app(str, "#set loadFormat " + JU.PT.esc(this.loadFormat)); +this.app(str, "#set loadLigandFormat " + JU.PT.esc(this.pdbLoadLigandFormat)); +this.app(str, "#set smilesUrlFormat " + JU.PT.esc(this.smilesUrlFormat)); +this.app(str, "#set nihResolverFormat " + JU.PT.esc(this.nihResolverFormat)); +this.app(str, "#set pubChemFormat " + JU.PT.esc(this.pubChemFormat)); +this.app(str, "set bondingVersion " + this.bondingVersion); +this.app(str, "set legacyAutoBonding " + this.legacyAutoBonding); +this.app(str, "set legacyAutoBonding " + this.legacyAutoBonding); +this.app(str, "set legacyHAddition " + this.legacyHAddition); +this.app(str, "set legacyJavaFloat " + this.legacyJavaFloat); +this.app(str, "set minBondDistance " + this.minBondDistance); +this.app(str, "set minimizationCriterion " + this.minimizationCriterion); +this.app(str, "set minimizationSteps " + this.minimizationSteps); +this.app(str, "set multipleBondBananas false"); +this.app(str, "set pdbAddHydrogens " + (htParams != null && htParams.get("pdbNoHydrogens") !== Boolean.TRUE ? this.pdbAddHydrogens : false)); +this.app(str, "set pdbGetHeader " + this.pdbGetHeader); +this.app(str, "set pdbSequential " + this.pdbSequential); +this.app(str, "set percentVdwAtom " + this.percentVdwAtom); +this.app(str, "set smallMoleculeMaxAtoms " + this.smallMoleculeMaxAtoms); +this.app(str, "set smartAromatic " + this.smartAromatic); +if (this.zeroBasedXyzRasmol) this.app(str, "set zeroBasedXyzRasmol true"); +return str.toString(); +}, "java.util.Map"); +Clazz.defineMethod(c$, "app", +function(s, cmd){ +if (cmd.length == 0) return; +s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz.defineMethod(c$, "setCIR", +function(template, notify){ +if (template == null || template.equals(this.nihResolverFormat) && this.smilesUrlFormat != null) return; +var pt = template.indexOf("/structure"); +if (pt > 0) { +this.nihResolverFormat = template.substring(0, pt + 10); +this.smilesUrlFormat = this.nihResolverFormat + "/%FILE/file?format=sdf&get3d=true"; +if (notify) JU.Logger.info("CIR resolver set to " + this.nihResolverFormat + " template=" + template); +}}, "~S,~B"); +c$.unreportedProperties = (";ambientpercent;animationfps;antialiasdisplay;antialiasimages;antialiastranslucent;appendnew;axescolor;axesposition;axesmolecular;axesorientationrasmol;axesunitcell;axeswindow;axis1color;axis2color;axis3color;backgroundcolor;backgroundmodel;bondsymmetryatoms;boundboxcolor;cameradepth;bondingversion;ciprule6full;contextdepthmax;debug;debugscript;defaultlatttice;defaults;defaultdropscript;diffusepercent;;exportdrivers;exportscale;_filecaching;_filecache;fontcaching;fontscaling;forcefield;language;hbondsDistanceMaximum;hbondsangleminimum;jmolinJSV;legacyautobonding;legacyhaddition;legacyjavafloat;loglevel;logfile;loggestures;logcommands;measurestylechime;loadformat;loadligandformat;macrodirectory;mkaddhydrogens;minimizationmaxatoms;smilesurlformat;pubchemformat;nihresolverformat;edsurlformat;edsurlcutoff;multiprocessor;navigationmode;;nodelay;pathforallfiles;perspectivedepth;phongexponent;perspectivemodel;platformspeed;preservestate;refreshing;repaintwaitms;rotationradius;selectallmodels;showaxes;showaxis1;showaxis2;showaxis3;showboundbox;showfrank;showtiming;showunitcell;slabenabled;slab;slabrange;depth;zshade;zshadepower;specular;specularexponent;specularpercent;celshading;celshadingpower;specularpower;stateversion;statusreporting;stereo;stereostate;vibrationperiod;unitcellcolor;visualrange;windowcentered;zerobasedxyzrasmol;zoomenabled;mousedragfactor;mousewheelfactor;scriptqueue;scriptreportinglevel;syncscript;syncmouse;syncstereo;defaultdirectory;currentlocalpath;defaultdirectorylocal;ambient;bonds;colorrasmol;diffuse;fractionalrelative;frank;hetero;hidenotselected;hoverlabel;hydrogen;languagetranslation;measurementunits;navigationdepth;navigationslab;picking;pickingstyle;propertycolorscheme;radius;rgbblue;rgbgreen;rgbred;scaleangstromsperinch;selectionhalos;showscript;showselections;solvent;strandcount;spinx;spiny;spinz;spinfps;navx;navy;navz;navfps;" + J.c.CBK.getNameList() + ";undo;undoauto;undomax;atompicking;drawpicking;bondpicking;pickspinrate;picklabel" + ";modelkitmode;autoplaymovie;allowaudio;allowgestures;allowkeystrokes;allowmultitouch;allowmodelkit" + ";dodrop;hovered;historylevel;imagestate;iskiosk;useminimizationthread" + ";checkcir;resolverresolver;showkeystrokes;saveproteinstructurestate;testflag1;testflag2;testflag3;testflag4" + ";selecthetero;selecthydrogen" + ";pointgrouplineartolerance;pointgroupdistancetolerance" + ";minimizationreportsteps;elementkey;symmetryhermannmauguin;").toLowerCase(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/JC.js b/config/plugins/visualizations/jmol/static/j2s/JV/JC.js new file mode 100755 index 000000000000..7f591a8622e6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/JC.js @@ -0,0 +1,388 @@ +Clazz.declarePackage("JV"); +Clazz.load(["java.util.Hashtable", "JU.SB", "$.V3", "JU.Elements"], "JV.JC", ["JU.PT", "J.i18n.GT", "JU.Logger"], function(){ +var c$ = Clazz.declareType(JV, "JC", null); +c$.getNBOTypeFromName = Clazz.defineMethod(c$, "getNBOTypeFromName", +function(nboType){ +var pt = ";AO;;;;PNAO;;NAO;;;PNHO;;NHO;;;PNBO;;NBO;;;PNLMO;NLMO;;MO;;;;NO;;;;;;;;;;PRNBO;RNBO;;;;;;;;".indexOf(";" + nboType + ";"); +return (pt < 0 ? pt : Clazz.doubleToInt(pt / 6) + 31); +}, "~S"); +c$.getCIPChiralityName = Clazz.defineMethod(c$, "getCIPChiralityName", +function(flags){ +switch (flags) { +case 13: +return "Z"; +case 5: +return "z"; +case 14: +return "E"; +case 6: +return "e"; +case 17: +return "M"; +case 18: +return "P"; +case 1: +return "R"; +case 2: +return "S"; +case 9: +return "r"; +case 10: +return "s"; +case 25: +return "m"; +case 26: +return "p"; +case 7: +return "?"; +case 3: +case 0: +default: +return ""; +} +}, "~N"); +c$.getCIPRuleName = Clazz.defineMethod(c$, "getCIPRuleName", +function(i){ +return JV.JC.ruleNames[i]; +}, "~N"); +c$.getCIPChiralityCode = Clazz.defineMethod(c$, "getCIPChiralityCode", +function(c){ +switch ((c).charCodeAt(0)) { +case 90: +return 13; +case 122: +return 5; +case 69: +return 14; +case 101: +return 6; +case 82: +return 1; +case 83: +return 2; +case 114: +return 9; +case 115: +return 10; +case 63: +return 7; +default: +return 0; +} +}, "~S"); +c$.fixOptimadeCall = Clazz.defineMethod(c$, "fixOptimadeCall", +function(url){ +var pt = url.indexOf("response_fields=") + 16; +var a = ",chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species,"; +if (pt < 16) { +var ptQ = url.indexOf("?"); +url += (ptQ < 0 ? "?" : "&") + "response_fields=" + a.substring(1, a.length - 1); +} else { +var fields = "," + url.substring(pt, (url + "&").indexOf('&', pt)) + ","; +var flen = fields.length; +for (var i = 0, b = 0; i >= 0; i = b) { +b = a.indexOf(',', i + 1); +if (b < 0) break; +var k = a.substring(i, b + 1); +if (fields.indexOf(k) < 0) { +fields += k.substring(1); +}} +url = url.substring(0, pt) + fields.substring(1, fields.length - 1) + url.substring(pt + flen - 2); +}return url; +}, "~S"); +c$.resolveDataBase = Clazz.defineMethod(c$, "resolveDataBase", +function(database, id, format){ +if (format == null) { +if ((format = JV.JC.databases.get(database.toLowerCase())) == null) return null; +var pt = id.indexOf("/"); +if (pt < 0) { +if (database.equals("pubchem")) id = "name/" + id; + else if (database.equals("nci")) id += "/file?format=sdf&get3d=true"; +}if (format.startsWith("'")) { +pt = id.indexOf("."); +var n = (pt > 0 ? JU.PT.parseInt(id.substring(pt + 1)) : 0); +if (pt > 0) id = id.substring(0, pt); +format = JU.PT.rep(format, "%n", "" + n); +}} else if (id.indexOf(".") >= 0 && format.indexOf("%FILE.") >= 0) { +format = format.substring(0, format.indexOf("%FILE")); +}if (format.indexOf("%c") >= 0) for (var i = 1, n = id.length; i <= n; i++) if (format.indexOf("%c" + i) >= 0) format = JU.PT.rep(format, "%c" + i, id.substring(i - 1, i).toLowerCase()); + +return (format.indexOf("%FILE") >= 0 ? JU.PT.rep(format, "%FILE", id) : format.indexOf("%file") >= 0 ? JU.PT.rep(format, "%file", id.toLowerCase()) : format + id); +}, "~S,~S,~S"); +c$.fixProtocol = Clazz.defineMethod(c$, "fixProtocol", +function(name){ +var isHttp = (name != null && name.indexOf("http") >= 0); +var newname = (name == null || !isHttp ? name : name.indexOf("http://www.rcsb.org/pdb/files/") == 0 ? JV.JC.resolveDataBase(name.indexOf("/ligand/") >= 0 ? "ligand" : "pdb", name.substring(name.lastIndexOf("/") + 1), null) : name.indexOf("http://www.ebi") == 0 || name.indexOf("http://rruff") == 0 || name.indexOf("http://pubchem") == 0 || name.indexOf("http://cactus") == 0 || name.indexOf("http://www.materialsproject") == 0 ? "https://" + name.substring(7) : name.indexOf("optimade") > 0 ? JV.JC.fixOptimadeCall(name) : name); +if (newname !== name) JU.Logger.info("JC.fixProtocol " + name + " --> " + newname); +return newname; +}, "~S"); +c$.embedScript = Clazz.defineMethod(c$, "embedScript", +function(s){ +return "\n/**" + "**** Jmol Embedded Script ****" + " \n" + s + "\n**/"; +}, "~S"); +c$.getShapeVisibilityFlag = Clazz.defineMethod(c$, "getShapeVisibilityFlag", +function(shapeID){ +return 16 << Math.min(shapeID, 26); +}, "~N"); +c$.shapeTokenIndex = Clazz.defineMethod(c$, "shapeTokenIndex", +function(tok){ +switch (tok) { +case 1153433601: +case 1073741859: +return 0; +case 1677721602: +case 659488: +return 1; +case 1613238294: +return 2; +case 1611141176: +return 3; +case 659482: +return 4; +case 1825200146: +return 5; +case 1745489939: +case 537006096: +return 6; +case 1112152076: +return 7; +case 1112152070: +return 8; +case 1114249217: +return 9; +case 1112152078: +return 10; +case 1112152066: +return 11; +case 1649022989: +return 12; +case 1112152071: +return 13; +case 1112152073: +return 14; +case 1112152074: +return 15; +case 1112150019: +return 16; +case 135175: +return 17; +case 135198: +return 18; +case 1112150021: +return 19; +case 1112150020: +return 20; +case 1275203608: +return 21; +case 135174: +return 23; +case 135176: +return 22; +case 135180: +return 24; +case 134353926: +return 25; +case 135182: +return 26; +case 1073877010: +return 27; +case 1073877011: +return 28; +case 135188: +return 29; +case 135190: +return 30; +case 537022465: +return 31; +case 1611272194: +return 34; +case 1812599299: +return 32; +case 1814695966: +return 33; +case 544771: +return 35; +case 1611272202: +return 36; +} +return -1; +}, "~N"); +c$.getShapeClassName = Clazz.defineMethod(c$, "getShapeClassName", +function(shapeID, isRenderer){ +if (shapeID < 0) return JV.JC.shapeClassBases[~shapeID]; +return "J." + (isRenderer ? "render" : "shape") + (shapeID >= 9 && shapeID < 16 ? "bio." : shapeID >= 16 && shapeID < 23 ? "special." : shapeID >= 24 && shapeID < 30 ? "surface." : shapeID == 23 ? "cgo." : ".") + JV.JC.shapeClassBases[shapeID]; +}, "~N,~B"); +c$.getEchoName = Clazz.defineMethod(c$, "getEchoName", +function(type){ +return JV.JC.echoNames[type]; +}, "~N"); +c$.setZPosition = Clazz.defineMethod(c$, "setZPosition", +function(offset, pos){ +return (offset & -49) | pos; +}, "~N,~N"); +c$.setPointer = Clazz.defineMethod(c$, "setPointer", +function(offset, pointer){ +return (offset & -4) | pointer; +}, "~N,~N"); +c$.getPointer = Clazz.defineMethod(c$, "getPointer", +function(offset){ +return offset & 3; +}, "~N"); +c$.getPointerName = Clazz.defineMethod(c$, "getPointerName", +function(pointer){ +return ((pointer & 1) == 0 ? "" : (pointer & 2) > 0 ? "background" : "on"); +}, "~N"); +c$.isOffsetAbsolute = Clazz.defineMethod(c$, "isOffsetAbsolute", +function(offset){ +return ((offset & 64) != 0); +}, "~N"); +c$.getOffset = Clazz.defineMethod(c$, "getOffset", +function(xOffset, yOffset, isAbsolute){ +xOffset = Math.min(Math.max(xOffset, -500), 500); +yOffset = (Math.min(Math.max(yOffset, -500), 500)); +var offset = ((xOffset & 1023) << 21) | ((yOffset & 1023) << 11) | (isAbsolute ? 64 : 0); +if (offset == JV.JC.LABEL_DEFAULT_OFFSET) offset = 0; + else if (!isAbsolute && (xOffset == 0 || yOffset == 0)) offset |= 256; +return offset; +}, "~N,~N,~B"); +c$.getXOffset = Clazz.defineMethod(c$, "getXOffset", +function(offset){ +if (offset == 0) return 4; +var x = (offset >> 21) & 1023; +x = (x > 500 ? x - 1023 - 1 : x); +return x; +}, "~N"); +c$.getYOffset = Clazz.defineMethod(c$, "getYOffset", +function(offset){ +if (offset == 0) return 4; +var y = (offset >> 11) & 1023; +return (y > 500 ? y - 1023 - 1 : y); +}, "~N"); +c$.getAlignment = Clazz.defineMethod(c$, "getAlignment", +function(offset){ +return (offset & 12); +}, "~N"); +c$.setHorizAlignment = Clazz.defineMethod(c$, "setHorizAlignment", +function(offset, hAlign){ +return (offset & -13) | hAlign; +}, "~N,~N"); +c$.getHorizAlignmentName = Clazz.defineMethod(c$, "getHorizAlignmentName", +function(align){ +return JV.JC.hAlignNames[(align >> 2) & 3]; +}, "~N"); +c$.isSmilesCanonical = Clazz.defineMethod(c$, "isSmilesCanonical", +function(options){ +return (options != null && JU.PT.isOneOf(options.toLowerCase(), ";/cactvs///;/cactus///;/nci///;/canonical///;")); +}, "~S"); +c$.getServiceCommand = Clazz.defineMethod(c$, "getServiceCommand", +function(script){ +return (script.length < 7 ? -1 : ("JSPECVIPEAKS: SELECT:JSVSTR:H1SIMULC13SIMUNBO:MODNBO:RUNNBO:VIENBO:SEANBO:CONNONESIM").indexOf(script.substring(0, 7).toUpperCase())); +}, "~S"); +c$.getUnitIDFlags = Clazz.defineMethod(c$, "getUnitIDFlags", +function(type){ +var i = 14; +if (type.indexOf("-") == 0) { +if (type.indexOf("m") > 0) i |= 1; +if (type.indexOf("a") < 0) i ^= 4; +if (type.indexOf("t") > 0) i |= 16; +}return i; +}, "~S"); +c$.getBoolName = Clazz.defineMethod(c$, "getBoolName", +function(g){ +return JV.JC.globalBooleans[g]; +}, "~N"); +c$.isSpaceGroupInfoKey = Clazz.defineMethod(c$, "isSpaceGroupInfoKey", +function(key){ +return (key.indexOf("nitCell") >= 0 || key.equals("coordinatesAreFractional") || key.startsWith("spaceGroup") || key.indexOf("ymmet") >= 0 || key.startsWith("lattice") || key.startsWith("intlTable")); +}, "~S"); +c$.getMenuScript = Clazz.defineMethod(c$, "getMenuScript", +function(type){ +if (type === "openPDB") { +return "var x__id__ = _modelTitle; if (x__id__.length != 4) { x__id__ = '1crn'};x__id__ = prompt('" + J.i18n.GT.$("Enter a four-digit PDB model ID or \"=\" and a three-digit ligand ID") + "',x__id__);if (!x__id__) { quit }; load @{'=' + x__id__}"; +}if (type === "openMOL") { +return "var x__id__ = _smilesString; if (!x__id__) { x__id__ = 'tylenol'};x__id__ = prompt('" + J.i18n.GT.$("Enter the name or identifier (SMILES, InChI, CAS) of a compound. Preface with \":\" to load from PubChem; otherwise Jmol will use the NCI/NIH Resolver.") + "',x__id__);if (!x__id__) { quit }; load @{(x__id__[1]==':' ? x__id__ : '$' + x__id__)}"; +}return null; +}, "~S"); +c$.axisLabels = Clazz.newArray(-1, ["+X", "+Y", "+Z", null, null, null, "a", "b", "c", "X", "Y", "Z", null, null, null, "X", null, "Z", null, "(Y)", null]); +c$.axesTypes = Clazz.newArray(-1, ["a", "b", "c", "x", "y", "z"]); +c$.ruleNames = Clazz.newArray(-1, ["", "1a", "1b", "2", "3", "4a", "4b", "4c", "5", "6"]); +c$.databaseArray = Clazz.newArray(-1, ["itatable", "https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-getgen?gnum=$FILE&what=gp&list=Standard%2FDefault+Setting", "itadiagram", "https://onlinelibrary.wiley.com/iucr/itc/Ac/ch2o3v0001/sgtable2o3o%FILE", "aflowbin", "http://aflowlib.mems.duke.edu/users/jmolers/binary_new/%FILE.aflow_binary", "aflowlib", "https://aflow.org/p/%FILE.cif", "aflowpro", "$aflowlib", "ams", "'https://rruff.geo.arizona.edu/AMS/viewJmol.php?'+(0+'%file'==0? 'mineral':('%file'.length==7? 'amcsd':'id'))+'=%file&action=showcif#_DOCACHE_'", "dssr", "http://dssr-jmol.x3dna.org/report.php?id=%FILE&opts=--json=ebi", "dssrModel", "http://dssr-jmol.x3dna.org/report.php?POST?opts=--json=ebi&model=", "iucr", "http://scripts.iucr.org/cgi-bin/sendcif_yard?%FILE", "cod", "http://www.crystallography.net/cod/cif/%c1/%c2%c3/%c4%c5/%FILE.cif", "nmr", "https://www.nmrdb.org/new_predictor?POST?molfile=", "nmrdb", "https://www.nmrdb.org/service/predictor?POST?molfile=", "nmrdb13", "https://www.nmrdb.org/service/jsmol13c?POST?molfile=", "magndata", "http://webbdcrista1.ehu.es/magndata/mcif/%FILE.mcif", "rna3d", "http://rna.bgsu.edu/rna3dhub/%TYPE/download/%FILE", "mmtf", "https://mmtf.rcsb.org/v1.0/full/%FILE", "bcif", "https://models.rcsb.org/%file.bcif", "chebi", "https://www.ebi.ac.uk/chebi/saveStructure.do?defaultImage=true&chebiId=%file%2D%", "ligand", "https://files.rcsb.org/ligands/download/%FILE.cif", "mp", "https://www.materialsproject.org/materials/mp-%FILE/cif#_DOCACHE_", "nci", "https://cactus.nci.nih.gov/chemical/structure/", "pdb", "https://files.rcsb.org/download/%FILE.pdb", "pdb0", "https://files.rcsb.org/download/%FILE.pdb", "pdbe", "https://www.ebi.ac.uk/pdbe/entry-files/download/%FILE.cif", "pdbe2", "https://www.ebi.ac.uk/pdbe/static/entry/%FILE_updated.cif", "pubchem", "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/%FILE/SDF?record_type=3d", "map", "https://www.ebi.ac.uk/pdbe/api/%TYPE/%FILE?pretty=false&metadata=true", "pdbemap", "https://www.ebi.ac.uk/pdbe/coordinates/files/%file.ccp4", "pdbemapdiff", "https://www.ebi.ac.uk/pdbe/coordinates/files/%file_diff.ccp4", "pdbemapserver", "https://www.ebi.ac.uk/pdbe/densities/x-ray/%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif", "pdbemapdiffserver", "https://www.ebi.ac.uk/pdbe/densities/x-ray/%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif&diff=1", "emdbmap", "https://www.ebi.ac.uk/pdbe/densities/emd/emd-%file/cell?detail=6&space=cartesian&encoding=bcif", "emdbquery", "https://www.ebi.ac.uk/emdb/api/search/fitted_pdbs:%file?fl=emdb_id,map_contour_level_value&wt=csv", "emdbmapserver", "https://www.ebi.ac.uk/pdbe/densities/emd/emd-%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif", "xxxresolverResolver", "https://chemapps.stolaf.edu/resolver", "smiles2d", "https://cirx.chemicalcreatures.com/chemical/structure/%FILE/file?format=sdf&get3d=false", "smiles3d", "https://cirx.chemicalcreatures.com/chemical/structure/%FILE/file?format=sdf&get3d=true"]); +c$.databases = new java.util.Hashtable(); +{ +for (var i = 0; i < JV.JC.databaseArray.length; i += 2) { +var target = JV.JC.databaseArray[i + 1]; +if (target.charAt(0) == '$') { +target = JV.JC.databases.get(target.substring(1)); +}JV.JC.databases.put(JV.JC.databaseArray[i].toLowerCase(), target); +} +}c$.majorVersion = null; +{ +var tmpVersion = null; +var tmpDate = null; +{ +tmpVersion = Jmol.___JmolVersion; tmpDate = Jmol.___JmolDate; +}if (tmpDate != null) { +tmpDate = tmpDate.substring(7, 23); +}JV.JC.version = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JV.JC.majorVersion = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JV.JC.date = (tmpDate != null ? tmpDate : "(Unknown_date)"); +var v = -1; +try { +var s = JV.JC.version; +var major = ""; +var i = s.indexOf("."); +if (i < 0) { +v = 100000 * Integer.parseInt(s); +s = null; +}if (s != null) { +v = 100000 * Integer.parseInt(major = s.substring(0, i)); +s = s.substring(i + 1); +i = s.indexOf("."); +if (i < 0) { +v += 1000 * Integer.parseInt(s); +s = null; +}if (s != null) { +var m = s.substring(0, i); +major += "." + m; +JV.JC.majorVersion = major; +v += 1000 * Integer.parseInt(m); +s = s.substring(i + 1); +i = s.indexOf("_"); +if (i >= 0) s = s.substring(0, i); +i = s.indexOf(" "); +if (i >= 0) s = s.substring(0, i); +v += Integer.parseInt(s); +}}} catch (e) { +if (Clazz.exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +JV.JC.versionInt = v; +}c$.center = JU.V3.new3(0, 0, 0); +c$.axisX = JU.V3.new3(1, 0, 0); +c$.axisY = JU.V3.new3(0, 1, 0); +c$.axisZ = JU.V3.new3(0, 0, 1); +c$.axisNX = JU.V3.new3(-1, 0, 0); +c$.axisNY = JU.V3.new3(0, -1, 0); +c$.axisNZ = JU.V3.new3(0, 0, -1); +c$.unitAxisVectors = Clazz.newArray(-1, [JV.JC.axisX, JV.JC.axisY, JV.JC.axisZ, JV.JC.axisNX, JV.JC.axisNY, JV.JC.axisNZ]); +c$.altArgbsCpk = Clazz.newIntArray(-1, [0xFFFF1493, 0xFFBFA6A6, 0xFFFFFF30, 0xFF57178F, 0xFFFFFFC0, 0xFFFFFFA0, 0xFFD8D8D8, 0xFF505050, 0xFF404040, 0xFF105050]); +c$.FORMAL_CHARGE_COLIX_RED = JU.Elements.elementSymbols.length + JV.JC.altArgbsCpk.length; +c$.argbsFormalCharge = Clazz.newIntArray(-1, [0xFFFF0000, 0xFFFF4040, 0xFFFF8080, 0xFFFFC0C0, 0xFFFFFFFF, 0xFFD8D8FF, 0xFFB4B4FF, 0xFF9090FF, 0xFF6C6CFF, 0xFF4848FF, 0xFF2424FF, 0xFF0000FF]); +c$.PARTIAL_CHARGE_COLIX_RED = JV.JC.FORMAL_CHARGE_COLIX_RED + JV.JC.argbsFormalCharge.length; +c$.argbsRwbScale = Clazz.newIntArray(-1, [0xFFFF0000, 0xFFFF1010, 0xFFFF2020, 0xFFFF3030, 0xFFFF4040, 0xFFFF5050, 0xFFFF6060, 0xFFFF7070, 0xFFFF8080, 0xFFFF9090, 0xFFFFA0A0, 0xFFFFB0B0, 0xFFFFC0C0, 0xFFFFD0D0, 0xFFFFE0E0, 0xFFFFFFFF, 0xFFE0E0FF, 0xFFD0D0FF, 0xFFC0C0FF, 0xFFB0B0FF, 0xFFA0A0FF, 0xFF9090FF, 0xFF8080FF, 0xFF7070FF, 0xFF6060FF, 0xFF5050FF, 0xFF4040FF, 0xFF3030FF, 0xFF2020FF, 0xFF1010FF, 0xFF0000FF]); +c$.PARTIAL_CHARGE_RANGE_SIZE = JV.JC.argbsRwbScale.length; +c$.argbsRoygbScale = Clazz.newIntArray(-1, [0xFFFF0000, 0xFFFF2000, 0xFFFF4000, 0xFFFF6000, 0xFFFF8000, 0xFFFFA000, 0xFFFFC000, 0xFFFFE000, 0xFFFFF000, 0xFFFFFF00, 0xFFF0F000, 0xFFE0FF00, 0xFFC0FF00, 0xFFA0FF00, 0xFF80FF00, 0xFF60FF00, 0xFF40FF00, 0xFF20FF00, 0xFF00FF00, 0xFF00FF20, 0xFF00FF40, 0xFF00FF60, 0xFF00FF80, 0xFF00FFA0, 0xFF00FFC0, 0xFF00FFE0, 0xFF00FFFF, 0xFF00E0FF, 0xFF00C0FF, 0xFF00A0FF, 0xFF0080FF, 0xFF0060FF, 0xFF0040FF, 0xFF0020FF, 0xFF0000FF]); +c$.predefinedVariable = Clazz.newArray(-1, ["@_1H _H & !(_2H,_3H)", "@_12C _C & !(_13C,_14C)", "@_14N _N & !(_15N)", "@solvent water, (_g>=45 & _g<48)", "@ligand _g=0|!(_g<46,protein,nucleic,water)", "@turn structure=1", "@sheet structure=2", "@helix structure=3", "@helix310 substructure=7", "@helixalpha substructure=8", "@helixpi substructure=9", "@bulges within(dssr,'bulges')", "@coaxStacks within(dssr,'coaxStacks')", "@hairpins within(dssr,'hairpins')", "@hbonds within(dssr,'hbonds')", "@helices within(dssr,'helices')", "@iloops within(dssr,'iloops')", "@isoCanonPairs within(dssr,'isoCanonPairs')", "@junctions within(dssr,'junctions')", "@kissingLoops within(dssr,'kissingLoops')", "@multiplets within(dssr,'multiplets')", "@nonStack within(dssr,'nonStack')", "@nts within(dssr,'nts')", "@pairs within(dssr,'pairs')", "@ssSegments within(dssr,'ssSegments')", "@stacks within(dssr,'stacks')", "@stems within(dssr,'stems')"]); +c$.predefinedStatic = Clazz.newArray(-1, ["@amino _g>0 & _g<=23", "@acidic asp,glu", "@basic arg,his,lys", "@charged acidic,basic", "@negative acidic", "@positive basic", "@neutral amino&!(acidic,basic)", "@polar amino&!hydrophobic", "@peptide protein&within(chain,monomer>1)&!within(chain,monomer>12)", "@cyclic his,phe,pro,trp,tyr", "@acyclic amino&!cyclic", "@aliphatic ala,gly,ile,leu,val", "@aromatic his,phe,trp,tyr", "@cystine within(group,(cys,cyx)&atomname=sg&connected((cys,cyx)&atomname=sg))", "@buried ala,cys,ile,leu,met,phe,trp,val", "@surface amino&!buried", "@hydrophobic ala,gly,ile,leu,met,phe,pro,trp,tyr,val", "@mainchain backbone", "@small ala,gly,ser", "@medium asn,asp,cys,pro,thr,val", "@large arg,glu,gln,his,ile,leu,lys,met,phe,trp,tyr", "@c nucleic & ([C] or [DC] or within(group,_a=42))", "@g nucleic & ([G] or [DG] or within(group,_a=43))", "@cg c,g", "@a nucleic & ([A] or [DA] or within(group,_a=44))", "@t nucleic & ([T] or [DT] or within(group,_a=45 | _a=49))", "@at a,t", "@i nucleic & ([I] or [DI] or within(group,_a=46) & !g)", "@u nucleic & ([U] or [DU] or within(group,_a=47) & !t)", "@tu nucleic & within(group,_a=48)", "@ions _g>=46&_g<48", "@alpha _a=2", "@_bb protein&(_a>=1&_a<6|_a=64) | nucleic&(_a>=6&_a<14|_a>=73&&_a<=79||_a==99||_a=100)", "@backbone _bb | _H && connected(single, _bb)", "@spine protein&_a>=1&_a<4|nucleic&(_a>=6&_a<11|_a=13)", "@sidechain (protein,nucleic) & !backbone", "@base nucleic & !backbone", "@dynamic_flatring search('[a]')", "@nonmetal _H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn", "@metal !nonmetal && !_Xx", "@alkaliMetal _Li,_Na,_K,_Rb,_Cs,_Fr", "@alkalineEarth _Be,_Mg,_Ca,_Sr,_Ba,_Ra", "@nobleGas _He,_Ne,_Ar,_Kr,_Xe,_Rn", "@metalloid _B,_Si,_Ge,_As,_Sb,_Te", "@transitionMetal elemno>=21&elemno<=30|elemno=57|elemno=89|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112", "@lanthanide elemno>57&elemno<=71", "@actinide elemno>89&elemno<=103"]); +c$.shapeClassBases = Clazz.newArray(-1, ["Balls", "Sticks", "Hsticks", "Sssticks", "Struts", "Labels", "Measures", "Stars", "Halos", "Backbone", "Trace", "Cartoon", "Strands", "MeshRibbon", "Ribbons", "Rockets", "Dots", "Dipoles", "Vectors", "GeoSurface", "Ellipsoids", "Polyhedra", "Draw", "CGO", "Isosurface", "Contact", "LcaoCartoon", "MolecularOrbital", "NBO", "Pmesh", "Plot3D", "Echo", "Bbcage", "Uccage", "Axes", "Hover", "Frank"]); +{ +{ +}}c$.LABEL_DEFAULT_OFFSET = 8396800; +c$.echoNames = Clazz.newArray(-1, ["top", "bottom", "middle", "xy", "xyz"]); +c$.hAlignNames = Clazz.newArray(-1, ["", "left", "center", "right"]); +c$.READER_NOT_FOUND = "File reader was not found:"; +c$.globalBooleans = Clazz.newArray(-1, ["someModelsHaveFractionalCoordinates", "someModelsHaveSymmetry", "someModelsHaveUnitcells", "someModelsHaveCONECT", "isPDB", "someModelsHaveDomains", "someModelsHaveValidations", "isSupercell", "someModelsHaveAromaticBonds", "someModelsAreModulated"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/Jmol.properties b/config/plugins/visualizations/jmol/static/j2s/JV/Jmol.properties new file mode 100755 index 000000000000..a3e681e05902 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/Jmol.properties @@ -0,0 +1,18994 @@ +Jmol.___JmolDate="$Date: 2024-06-07 15:31:04 +0100 (Fri, 07 Jun 2024) $" +Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties" + +# THIS IS THE TRUNK - for development and release + + +# Developers: to add a description of changes you have made, +# add it on a line below the "Jmol.___JmolVersion=..." line. +# Don't use Jmol.___ in your text, as that is the key for stripping out +# the information saved in the JAR version of this file. +# The quotes above look odd for a parameter file, but they are +# important for the JavaScript version of Jmol. +# +# A full Jmol/JSpecView/JSmol release requires the following: +# +# 1. Generate a new version number. This should be done as in the following examples, +# listed in order of appearance: +# +# previous new +# +# 14.8.10 14.8.11-beta-2016-12-20 a beta release of 14.8.11 with a timestamp for Dec 20, 2016 +# 14.8.10 14.8.11 bug fixes only - patch level +# 14.8.10 14.9.1 new features - minor version level (tag for Maven, create branch) +# 14.8.10 15.1.1 new features - major version level (tag for Maven, create branch) +# +# The distinction between major and minor is arbitrary. +# +# Note that -beta releases will be to https://sourceforge.net/projects/jmol/files/Jmol-beta +# while full releases will be to https://sourceforge.net/projects/jmol/files/Jmol. +# +# 2. Create a new Jmol.___... line and remove "Jmol.___" from the line for the +# previous release; failure to do remove this line will use the original release number, +# not the new one, since this is a property file. +# +# 3. If this is legacy Jmol (SourceForge) run the Ant task build-1-unzip-jsmol-to-site.xml +# and then do a clean build of the project (Eclipse Project...clean...Jmol) +# +# 4. You should be able to test the JavaScript in JSmol.htm in the /site directory. +# +# 5. Now run build-2-jsmol.zip.xml to create the full jsmol.zip file in the appletweb/ folder. +# This creates the compressed files; you can test now the HTML in the site/jsmol directory. +# +# 6. Run jmol build.xml (including dist, which also initiates a release now) +# +# 7. For legacy Jmol, you will have to go to SourceForge and manually create +# a new release directory and drop the three zip files and this jmol.propertiese file into it. +# They will be in the build/release/version... subfolder +# (or figure out how to do that with a private key, because I couldn't) +# +# TODO: fix UNDO +# TODO: check RN=X=NR stereo +# TODO: should suppress painting during adding of hydrogens +# TODO: SMILES adding a stereocenter if the preceding chain matches a future chain. +# FEATURE REQUEST: dock/undock consoles to main window. +# TODO: allow FIXED to work with MODELKIT MINIMIZE + +Jmol.___JmolVersion="16.2.17" // (legacy) also 16.2.18 (swingJS) + +new feature: SHELX reader adds support for PART + -- *.altloc set by PART number + -- use display config=1 to show PARTS 0+1, config=2 to show PARTS 0+2 + -- noting that OpenBabel 3.1.1 does not write disorder to CIF when reading PART and writes invalid CIF when CIF->CIF + +new feature: WRITE CIF adds altloc + -- _atom_site_disorder_assembly A + -- _atom_site_disorder_group [altLoc value] + +bug fix: SHELX reader does not apply LATT > 0 (centrosymmetric) operation + +bug fix: SHELX reader not reading occupancy + +bug fix: CIF writer may gernerate P1 when space group is from file loading rather than structure creation + +bug fix: CIF reader fails to bond molecules properly when the structure has an _atom_site_aniso block + +bug fix: STL exporter makes isosurface meshes too thick + +bug fix: DRAW SYMOP should not draw "wings" on screw axes, since it draws curved angle arrow already + +bug fix: {"y": z.x}.format("JSON") fails when z is a map + +bug fix: Wyckoff position b not found for CSD XAZTAW and BROFRM05 + The problem is what to do with xx.yyyyy(zz) for precision. + I had given that 5 places, but more consideration suggests that + the presence of error value should limit the precision to 4. + This worked in both of these cases. + (All this is somewhat of an approximation.) + Precision can also be set using a load filter: + + load xxxx.cif ... filter "precision=3" + + +JmolVersion="16.2.15" // (legacy) also 16.2.16 (swingJS) + +bug fix: x = symop(n) broken for n a symmetry operator number + +bug fix: draw symop [4x4 matrix] not working + +bug fix: MODELKIT DRAW SPACEGROUP should use prefix "sg" not "sym" + +bug fix: various minor aspects of DRAW SPACEGROUP ALL and MODELKIT DRAW SPACEGROUP + -- new color coding for n-axes + -- new color coding and larger icons for n-bar axes + -- missing split planes (mirror+glide and glide+glide) + -- missing additional 2-fold rotations tangent to corners in hexagonal groups + + +JmolVersion="16.2.13" // (legacy) also 16.2.14 (swingJS) + +bug fix: select UNITCELL should be inclusive, [0,1] (broken in 14.32.18) + -- not the same as within(unitcell), which is [0,1) exclusive + +bug fix: polyhedra COLLAPSED EDGES does not just act on current polyhedra + +bug fix: polyhedra POINTS miscolors isotopes + +bug fix: atom color change using color not reflected in element key + +bug fix: MODELKIT SET KEY not working correctly (broken in 16.2.1) + -- had been changed to "ELEMENTKEY" without documentation + -- now just an alias for MODELKIT SET ELEMENTKEY + -- not supposed to persist through ZAP + +new feature: SET ELEMENTKEY ON/OFF (actually introduced in 16.2.1) + -- adds or removes an element key in the upper right for ALL models + -- key is a list of a colored DRAW point and a b/w ECHO with ids "_!_elkey__*" + -- overrides current settings from MODELKIT SET ELEMENTKEY + -- only visible when just a single model is visible + -- recognizes different isotope colors + -- does not appear if atoms of the same element or isotope have different colors + -- setting itself is not explicitly saved in the state + -- presence of DRAW objects in a state sets MODELKIT SET ELEMENTKEY ON + for associated models when restored, preserving the key for those + models that had them when saved + -- persistent through ZAP + +new feature: MODELKIT SET ELEMENTKEY ON/OFF (actually introduced in 16.2.1) + -- adds or removes an element key as per SET ELEMENTKEY ON/OFF, but only for the CURRENT model only + -- indirectly saved in state as the presence of the associated DRAW objects + -- key does NOT persist through ZAP + +new feature: frank (bottom right corner "Jmol") displays "JmolD" for JmolD.jar and JmolDataD.jar + + +JmolVersion="16.2.11" // (legacy) also 16.2.12 (swingJS) + +bug fix: various minor issues with DRAW SPACEGROUP ALL + +NOTE: Introducing here the idea of a "3D interactive space group symmetry model". + Something like a space group diagram or a general position + diagram, but in 3D. Symmetry elements can be filtered out + to reveal patterns in the remaining subset; aspects of + group-subgroup relationships can be depicted, either from a + purely symmetry-related perspective or in the context of an + actual structure or a set of related structures. Specific atom-atom + symmetry relationships can be explored. + +new feature: MODELKIT DRAW SPACEGROUP [name or number] [packed] + -- clears the model with ZAP, then creates the space group symmetry model + -- draws the full set of symmetry elements + -- optionally (if PACKED), adds a nitrogen atom in the default general position + -- shortcut for + + zap; + modelkit spacegroup ... ; + draw spacegroup ALL; + modelkit add N; + + -- coding example: + + function showAllSpaceGroups() { + for (var i = 1; i <= 230; i++) { + modelkit draw spacegroup @i packed; + set echo top right; + echo @i; + refresh; + } + } + + showAllSpaceGroups; // note that some cubics take quite a bit of time + + function makeSpaceGroupMovie() { +     zap; +     background white; +     capture "spaceGroupMovie.gif"; +     for (var i = 1; i <= 230; i++) { +          modelkit draw spacegroup @i packed; +          set echo top right; +          echo @i; +          refresh; +     } +     capture end; + } + + makeSpaceGroupMovie() + + +new feature: SHOW SPACEGROUP TABLE + -- displays space group tables from Bilbao Crystallographic Server the user's browser + -- https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-getgen?gnum=110&what=gp&list=Standard%2FDefault+Setting + -- adds to SHOW SPACEGROUP DIAGRAM (see 16.2.9 release, below) + -- optional may be a space group name or number + -- default is to use the current space group + -- example: + + show spacegroup table + show spacegroup table 13 + show spacegroup table P2/c + +new feature: syncCallback for mouse-following + -- allows actions to take place + set syncmouse + sync on + set synccallback "jmolscript:color atoms property sz" + +JmolVersion="16.2.9" // (legacy) also 16.2.10 (swingJS) + +bug fix: fixes a miscalculation of glide 'g' vs. 'n' in SHOW SYMOP and in colors for DRAW SPACEGROUP + +bug fix: DRAW SPACEGROUP failing after SHOW SYMOP + +feature change: DRAW SPACEGROUP display adds triangles, squares, and hexagons at tail of rotation arrows + +feature change: new colors and styles for axes + -- axes with order > 2 now show their order and screw-pitch using pictograms similar to ITA: + + 2-fold no pictogram; red for 2, grey for 21 + 3-fold triangle red for 3, orange for 3{+) < 1/2, blue for 3{+) > 1/2 + spinner cw for 3{+) < 1/2, ccw for 3{+) > 1/2 + 4-fold square red for 4, orange for 4{+) < 1/2, blue for 4{+) >= 1/2 + spinner cw for 4{+) < 1/2, ccw for 4{+) > 1/2 + 6-fold hexagon red for 6, orange for 6(+) < 1/2, blue for 6(+) >= 1/2 + spinner cw for 6{+) < 1/2, ccw for 6{+) > 1/2 + + -- good examples are space groups 76-80, 151-180 + +feature change: new color scheme for planes + -- note how name first letter correlates with type: + + mirror magenta + a-glide azure + b-glide blue + c-glide cyan + d-glide gray (colorless, like a diamond) + e-glide (split color for a+b, b+c, a+c (still working on getting all of these -- see SG 64) + g-glide green + n-glide orange (esp: naranja) + + -- nice examples: + -- m+n (SG 65, 69) + -- a, b, and c (SG 72, 73) + -- a, b, n, and mirror (SG 74) + -- d (SG 43, 70, 122) + -- m, n, d (SG 109) + -- a, b, c, d (SG 110) + +new feature: SHOW SPACEGROUP DIAGRAM xxx + -- displays International Tables space group diagram for specified + space group by number or Hermann-Mauguin name in user's browser. + -- specified origin might be lower on the page. + -- for example: + + show spacegroup diagram P4/mmm + + opens https://onlinelibrary.wiley.com/iucr/itc/Ac/ch2o3v0001/sgtable2o3o123 + +new feature: DRAW *xxx* ONLY + -- shortcut for DRAW * OFF; DRAW *xxx* ON + -- very convenient for turning on and off aspects of complicated DRAW SPACEGROUP ALL: + + DRAW *X_g* ONLY // X = a, b, c, d, g, n (e is a combination of a/b, a/c, b/c; see Group 68) + DRAW *bar_N* ONLY // N = 3, 4, 6 + DRAW *rot_N* ONLY // N = 2, 3, 4, 6 + DRAW *screw_N* ONLY // N = 2, 3, 4 + DRAW *inv* ONLY // inversion centers + DRAW *mirror* ONLY // mirror planes only + + -- note that a six-fold axis will contain three arrows: 2-fold, 3-fold, and 6-fold + -- likewise for 6-bar/3-fold and 4-fold-2-fold, 4-bar/2-fold + + +new feature: MODELKIT ZAP... + -- same as ZAP; MODELKIT ... + + +JmolVersion="16.2.7" // (legacy) also 16.2.8 (swingJS) + +bug fix: three nonstandard settings not showing correct JmolID. + +bug fix: Wyckoff positions for nonstandard space group settings not available + -- Jmol now calculates Wyckoff positions for any nonstandard setting + -- 134 additional nondefault settings (from BCS wp-list) added + +bug fix: ++x; and --x; never fully implemented; + -- specifically the stand-alone statements + +bug fix: using map1["x"] = ++map["y"] does not properly make a copy + -- later incrementing of one value was also changing the other + +bug fix: zap; modelkit spacegroup 5:a,-b,-a-c should work + +bug fix: Starting with Jmol 16.1.32, Jmol should accept CIF files with duplicate atom_site_label entries, but it doesn't + - it will add numbers if two identical atom_site_label values are found + - an warning message is reported in the Java console only. + +feature change: AFLOWLIB database updated + -- now "https://www.aflowlib.org/p/%AFLOWID%.cif" + -- still no AJAX CORS access + -- should be no effect on usability + +new feature: dropping requirement for double quotes in MODELKIT SPACEGROUP ... + -- just isn't necessary generally + -- if spaces are present, then quotes are required + -- semicolon will be incorporated provide there is no space after it + -- for example: + + zap; modelkit spacegroup 5:a,-b,-a-c;0,0,0 packed + zap; modelkit spacegroup "P 2/m" + +new feature: MODELKIT SPACEGROUP + -- full CLEG implementation for subgroups. + -- for example: + + modelkit spacegroup "C 2 2 21 >> P 21 21 2 >> P1 21 1" + + same as + + modelkit spacegroup "20>b,c,a;1/4,0,0>18>c,a,b;1/4,0,0>4" + + or, in this case, because they are default settings and the first-listed subgroups: + + modelkit spacegroup 20>>18>>4 + + -- reports overall transformation, in this case: + + a,b,c;1/4,0,1/4 + 20>b,c,a;1/4,0,0>18>c,a,b;1/4,0,0>4 + basis=({0:3}) + + -- sample script function: + + function showSubgroup(i1, i2, p1,p2) { + var tr = ""; + if (!i2) { + if (i1.type == "integer") { + print spacegroup(i1,0,"subgroups") + return; + } + tr = i1; + i1 = tr.split(">")[1]; + } + if (!tr) { + var sub = "sub"; + if (p2) { + sub = spacegroup(i1,i2,p1,p2); + } else if (p1.type == "string" && p1.length > 0) { + sub = p1; + } else { + sub = spacegroup(i1,i2,1,1); + } + if (sub[0] == "!") { + print "can't do that " + sub; + return; + } + tr = "" + i1 + ">" + sub + ">" + i2; + } + save orientation o1 + zap + set echo bottom left + echo @tr + set scriptreportinglevel = 3; + modelkit spacegroup @i1 + restore orientation o1 + draw uc1 unitcell color red + draw sg1 spacegroup all + modelkit add P wyckoff "G" + modelkit spacegroup @tr packed + set scriptreportinglevel = 0; + color property site + draw uc2 unitcell color yellow + draw sg2 spacegroup all + flash = false; + if (flash) { + delay 2 + for (var i = 0; i < 3; i++) { + delay 1 + draw sg1* on + draw sg2* off + delay 1 + draw sg1* off + draw sg2* on + } + } else { + draw sg1* translucent 0.8 + } + } + + showsubgroup "20>>18>>4" + + +JmolVersion="16.2.5" // (legacy) also 16.2.6 (swingJS) + +bug fix: Some SHELX files not reading + -- not clear why some and not others. But it is fixed. + +bug fix: "standard" PNG and JPG files created by Jmol not readable back into Jmol + -- embedded state scripts were not being checked + -- note: Jmol automatically saves its state within standard JPG and PNG files + unlike PNGJ files, where the state and all necessary files are saved + Generally not recommended, since any loaded files still must be retrieved again. + But with MODELKIT SPACEGROUP, there is no model file to read; + so these standard PNG and JPG files should be readable. + +bug fix: JPG file drop improperly resolved as MMTF + -- JPG should be read for its embedded script file, not as MMTF + +bug fix: load =aflowlib/62.3 spacegroup "x,y,z;x,-y,z" does not set display name correctly in upper left information + +bug fix: unit cell not read from state after use of MODELKIT SPACEGROUP specifcally when atoms are present + +bug fix: x = spacegroup("Pnma") failing + -- specifically for Hermann-Mauguin names, Hall names, and AFLOW/n.m + +bug fix: AFLOWLIB database changed + -- now "https://www.aflowlib.org/prototype-encyclopedia/%AFLOWID%/findsym.cif" + -- no problem for saved PNGJ files + -- load =AFLOWLIB/n.m requires this fix + +new feature: load =aflowlib/ + -- allows reading of specific AFLOW Encyclopedia of Crystallographic Prototypes by ID + -- for example: + + load =aflowlib/A3BC_tP5_99_ac_b_a-002 packed + +new feature: x = spacegroup("AFLOW/A3B14C2D3*") + -- note that the ID starts with the empirical cell formula ending with "_" + -- returns an array of "=aflowlib/n.mAFLOWID" entries + which can be split to give either the load string or the AFLOW iD + -- for example: + + $ print spacegroup("AFLOW/A7B2_*") + =aflowlib/63.34 A7B2_oC36_63_cgh_f-001 + =aflowlib/164.13 A7B2_hP9_164_ac2d_d-001 + =aflowlib/164.14 A7B2_hP9_164_ai_d-001 + =aflowlib/166.44 A7B2_hR18_166_a2cdh_2c-001 + =aflowlib/227.18 A7B2_cF144_227_2ef_e-001 + + $ print spacegroup("AFLOW/A7B2_*").split("\t",true).col(1) + =aflowlib/63.34 + =aflowlib/164.13 + =aflowlib/164.14 + =aflowlib/166.44 + =aflowlib/227.18 + + $ print spacegroup("AFLOW/A7B2_*").split("\t",true).col(2) + A7B2_oC36_63_cgh_f-001 + A7B2_hP9_164_ac2d_d-001 + A7B2_hP9_164_ai_d-001 + A7B2_hR18_166_a2cdh_2c-001 + A7B2_cF144_227_2ef_e-001 + + -- check of empirical cell formula: + + $ load =aflowlib/63.34 packed + $ print {cell=555}.find("CELLFORMULA", true) + Ca 2 Ag 7 + $ print {cell=555}.find("CELLFORMULA") + Ca 8 Ag 28 + +new feature: x = spacegroup("AFLOW/all") + -- returns array of arrays of information maintained in org/jmol/symmetry/sg/json/aflow_structures.json + -- note that whenever there is an AFLOW Encyclopedia update, this information could go stale + and "=aflow/3.10" might change. However, it is unlikely that the AFLOW ID will change. + +new feature: load ... centroid 0.5 + -- expands the centroid limit in fractions of a unit direction + -- same as load ... packed 0.5 centroid, but more intuitive + + +JmolVersion="16.2.3" // (legacy) also 16.2.4 (swingJS) + +demo page: https://chemapps.stolaf.edu/jmol/jsmol/iucrdemo + -- supplement to a forthcoming publication + -- lots of examples of using the MODELKIT SPACEGROUP command + +note: completion of the MODELKIT SPACEGROUP implementation initiated in 15.2.30/14.2.30 + +bug fix: (JavaScript) no spinner showing at startup. + Jmol_spinner.gif was missing in site/jsmol/j2s/img + +bug fix: (JavaScript chemapps) the php/jsmol.php AJAX relay was failing due to + the presence of both header('Access-Control-Allow-Origin: *') in jsmol.php + and .htaccess file in site/, causing a "multiple header" error. + The .htaccess file was kept, and the php header was removed. + +bug fix: (legacy JavaScript only) right-click on pop-up menu throws background error + and fails to place submenu correctly + (traced to minor jMenu incompatibility with jQuery 3.7.1) + +bug fix: (JavaScript) Jmol javascript command containing call back to Jmol.script() + fails to execute callback script + +bug fix: (JavaScript) JSpecView and other pages fail to open due to Enum and + ArrayList coding bugs recently introduced that are only used in JSpecView + +bug fix: animation range not responsive to load append + +bug fix: PDB reader needs to allow PDB files with BIOMT but no CRYST1/SCALE headers + +bug fix: SHELX reader fails due to LATT processing failure + +bug fix: display of symmetry elements in SHOW and DRAW minor issues + +bug fix: DRAW UNITCELL with {555 666 1} notation should show all interior edges of + block of cells + +bug fix: more work on subgroup-group relations + - still finalizing code for using transformations such as "a+b,a-b,c;1/2,1/2,0" + - for example, to create a group, add atoms, and display a packed subgroup, coloring by site: + + zap + modelkit spacegroup 18 + draw unitcell color red + modelkit add P wyckoff "G" + modelkit spacegroup "18 >c,a,b;0,1/4,0>4" packed + color property site + draw spacegroup all + + +feature change: DRAW UNITCELL default changed to MESH NOFILL + - was normal default of FILL NOMESH, but this is much better + - overridden by explicit NOMESH or FILL + - does not affect states, as they are explicit, not default + +feature change: x = spacegroup("153") or x = spacegroup(153) + - one parameter, just a number from 1 to 230 + - was Jmol's idiocyncratic Hall-notation-derived operator list + - now ITA standard list + - same list; just a different order + - spacegroup() by itself shows current, possibly file-derived, operators. + +new feature: x = spacegroup("153:") + - with colon + - returns Jmol's internal setting and original listing + +new feature: DRAW UNITCELL AXES + - draws axes red/green/blue (no labels) with unit cell. + +new feature: spacegroup(g1,g2,i1,i2) + - same as spacegroup(g1,g2,i1,i2,"subgroups") + - "subgroups" is unnecessary + +new feature: x = spacegroup("Hall:p 32 2\" (0 0 2)") + - translates Hall notation to XYZ list + - outputs a map similar to x = spacegroup(154) with at least + keys HallSymbol, operationCount, and operationsXYZ; + possibly, if known, also: + + HermannMauguinSymbol + clegId + crystalClass + ita + itaIndex + jmolId + + +new feature: x = {*}.rxyz + - returns rational fraction if within +/- 0.001 of n/2,3,4,6,8,12,24,48 + - returns rounded to 0.001 if not + - string value with parentheses: "(1/2 1/2 1/2)" + +new feature: fpt.rxyz + - returns rational of fractional. + - {1/2 1/2 1/2}.rxyz == "(1/2 1/2 1/2)" + +new feature: x = matrix(...) + - creates a 3x3 or 4x4 matrix + - options include (by example): + matrix("x-y+1/2,x+y,z") // row-based + matrix("a+b+1/2,b-a,c") // column-based + matrix("a+b,b-a,c;1/2,0,0") // ITA transform notation, col-based + matrix([1,2,3,4,5,6,7,8,9]) // 3x3 from array[9] + matrix([1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6]) // 4x4 from array[16] + matrix([1,2,3] [4,5,6] [7,8,9]) // 3x3 from array[3][3] + matrix([1,2,3,4] [5,6,7,8] [9,0,1,2] [3,4,5,6]) // 4x4 from array[4][4] + + P = matrix("c,a,b;1/2,0,0"); + f = {0.5 0.25 0.5}; + print P*f; + + {0.75 0.5 0.5} + +new feature: x = matrix(..., "abc") +new feature: x = matrix(..., "xyz") + - returns the string form of a 4x4 matrix, either in abc-column format or xyz-row format + +new feature: MODELKIT SPACEGROUP + - Jmol will automatically adjust unit cell if necessary. + - should be used after ZAP or LOAD + - for example: + + function test(n,i) { + if (!i) { + load @{"=aflowlib/" + n} + " packed"; + center unitcell; + print "nSettings=" + spacegroup("ITA/" + n).n; + test(n,1); + } else { + draw delete; + modelkit spacegroup @{"" + n + "."+i} packed; + draw ID @{"sg"+i} spacegroup all; + center visible; + axes 0.1; + connect auto; + moveto axis c1; + } + } + + test(23) + + opens an example AFLOW Encyclopedia of Crystallographic Prototypes, then + switches to a one of the available settings, packing the new unit cell + and displays all symmetry operations. Finally, does some clean up and + goes to the standard ITA "c1" axis view. (looing toward 0 along c axis in the top left corner) + +new feature: MODELKIT SPACEGROUP "n >sub> m" + - switch from crystallographic group to maximal subgroup + - uses (unpublished) CLEG notation (more details to follow) + - chooses first-listed transformation + - typically a translationengleichen (translation-preserving) transformation + + - for example: MODELKIT SPACEGROUP 13 >sub> 10 + + function showSubgroup(i1, i2) { + if (!i2) { + print spacegroup(i1,0,"subgroups"); + return; + } + save orientation o1; + zap; + modelkit spacegroup @i1; + restore orientation o1; + center unitcell; + draw uc1 unitcell color red; + draw sg1 spacegroup all; + modelkit add P wyckoff "G"; + modelkit spacegroup @{"" + i1 + ">sub>" + i2} packed; + color property site; + draw uc2 unitcell color yellow; + draw sg2 spacegroup all; + delay 2; + for (var i = 0; i < 10; i++) { + delay 1; + draw sg1* on; + draw sg2* off; + delay 1; + draw sg1* off; + draw sg2* on; + } + draw sg1* on; + draw sg2* on; + } + + showSubgroup 107 + showSubgroup 107 42 + +new feature: unitcell NONE + - removes unit cell and spacegroup + - removes unit cell and spacegroup information from model auxiliary info _M + - allows nonperiodic manipulation of atom positions + +new feature: SHELX reader returns Q-peaks as "Xx" (unknown atom); was returning "C" + +new feature: x = spacegroup("ITA/4:c,a,b") + - finds the ITA spacegroup setting with this specific transformation. + - text match so must be exact form: + [rotation;translation], e.g. a,b,c;0,0,0 + "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c" + "a+b,-a+b,c;-1/4,-1/4,-1/4" + +new feature: x = spacegroup(itaNo, itaFrom, index1, index2, "subgroups") + - returns information on group-subgroup relationships + - based on Bilbao Crystallographic Server public data + - uses set of JSON data files - see + - return depends upon values: + + spacegroup(4,"subgroups") // all maximal subgroup data for space group 4 + spacegroup(4,0,"subgroups") // an array of known subgroup numbers + spacegroup(4,5,"subgroups") // list of all 4 >> 5 + spacegroup(4,5,1,"subgroups") // first-listed 4 >> 5 as a map + spacegroup(4,0,2,"subgroups") // second listed subgroup as a map + spacegroup(4,0,2,1,"subgroups") // second listed subgroup, first transformation + spacegroup(4,5,1,2,"subgroups") // first listing for 4>>5, second transformation + spacegroup(4,0,0,0,"subgroups") // an array of arrays of [isub, ntrm, subIndex, type] + + where + + * [ isub, ntrm, subIndex, idet, trType ] + * + * isub: subgroup ITA number + * ntrm: transformation count + * subIndex: index of this group-subgroup relationship + * idet: determinant if determinant >= 1; -1/determinant if determinant < 1 + * trType: 1 translationengelieche, + * 3 klassengleiche "ct" loss of centering translation, + * 4 klassengleiche "eu" enlarged unit cell + + +JmolVersion="16.2.1" // (legacy) also 16.2.2 (swingJS) + +bug fix: when unit cells are modified, Symmetry should not be assumed to be unchanged. + +bug fix: unit cell information should only show space group if symmetry if the unit cell is appropriate + +bug fix: with set picking SYMMETRY, double-clicks should not start measurements + +bug fix: LOAD SUPERCELL should retain symmetry-relataed cell as "conventional" + +new feature: "contrast" color + -- for LABEL and ECHO, particularly + -- chooses WHITE or BLACK, depending upon the Jmol window background color + -- saved in the state as [xfedcba] + +new feature: set picking SYMMETRY now aliased with set picking SYMOP + +new feature: MODELKIT SPACEGROUP "HALL:xx xx xx" will create a space group from a Hall or extended Hall description + -- future enhancement will allow any HALL description + -- see "Space-group notation with an explicit origin", S. R. Hall, Acta Cryst. (1981). A37, 517-525 https://doi.org/10.1107/S0567739481001228 + http://macxray.chem.upenn.edu/LATT.pdf thank you, Patrick Carroll + http://cci.lbl.gov/sginfo/hall_symbols.html + http://cci.lbl.gov/cctbx/explore_symmetry.html + +new feature: MODELKIT SPACEGROUP ... UNITCELL [a b c alpha beta gamma] PACKED + -- after ZAP, creates a new space group with the given unit cell + -- optionally packing it, if not after ZAP + -- if the unit cell is incompatible with the space group, a similar compatible cell is used + + +version: Version 16.2 represents a major advance in capability for Jmol, particularly in the + area of space groups and symmetry in relation to 16.1.1, released 2023.01.24. + The following is the listing of 90 new features since then, culled from this file and sorted. + More detail on these can be found below. + +new feature: CONFIGURATION -n +new feature: CONFIGURATION "A" +new feature: "contrast" color +new feature: crystal structure set picking dragMolecule with ALT implemented +new feature: DRAW "xxx...." +new feature: DRAW boundbox $[isosurface id] +new feature: DRAW boundbox BEST $[isosurface id] +new feature: DRAW HOVERLABEL "xxx" +new feature: DRAW SPACEGROUP @a n +new feature: DRAW SPACEGROUP @n +new feature: DRAW SPACEGROUP ALL +new feature: DRAW SYMOP [3,4,5] @1 +new feature: ECHO/DRAW with ID starting with "_!_" +new feature: Jmol application -A --scriptarguments flag +new feature: LOAD "$?" load structure from NCI/CADD with prompt +new feature: LOAD "*?" load PDB ID from EBI with prompt +new feature: LOAD ":?" load structure from pubChem with prompt +new feature: LOAD "=?" load PDB ID from RCSB with prompt +new feature: LOAD "==?" load chemical component from RCSB with prompt +new feature: LOAD .... fill "rhombohedral" +new feature: LOAD .... fill "trigonal" +new feature: LOAD =aflowlib/155.2 +new feature: LOAD...FILTER "lowPrecision" +new feature: LOAD...FILTER "PRECISION=n" where n is up to 16 digits +new feature: LOAD - allow CIFReader to ignore COD 2107628 unmodulated operations in presence of modulated +new feature: LOAD - AMS reader +new feature: LOAD - BilbaoReader allows LOAD ... spacegroup ":n" to force origin, where n is 1 or 2 +new feature: LOAD - Binary CIF file structure reading. The BinaryCIF file format +new feature: LOAD - CIFReader "ignoreGeomBond" (was SwingJS only) +new feature: LOAD - CIFReader FILTER option NOWYCKOFF +new feature: LOAD - CIFReader reads atom_site_wyckoff_label +new feature: LOAD - CrystalMaker CMDF (binary) file reader +new feature: LOAD - Jmol will accept CIF files with duplicate atom_site_label entries +new feature: MACRO AFLOW adds SHOWSG(n,i,addSymmetry) +new feature: MEASURE .... "default" +new feature: MEASURE SELECT ALL +new feature: MEASURE SELECT... +new feature: MEASURE SELECTED +new feature: MEASURE SELECTED ... +new feature: MINIMIZE GROUP {atoms} +new feature: MINIMIZE ONLY {atoms} +new feature: MINIMIZE SELECT {atoms} +new feature: MODELKIT ADD WYCKOFF +new feature: MODELKIT MINIMIZE +new feature: MODELKIT MOVETO @atoms @points +new feature: MODELKIT SET KEY ON/OFF +new feature: MODELKIT SPACEGROUP "HALL:xxxxx" will create a space group from a Hall or extended Hall description +new feature: MODELKIT SPACEGROUP "x,y,z;x,-y,z;..." +new feature: MODELKIT SPACEGROUP ... UNITCELL ... +new feature: MODELKIT VIBRATION WYCKOFF; VIBRATION ON +new feature: POLYHEDRA OFFSET {x, y, z} WIGNERSEITZ +new feature: POLYHEDRA OFFSET 1.0 BRILLOUIN n where n > 1 +new feature: POLYHEDRON LIST +new feature: popup menu adds "atom picking..." Drag Atom and Drag Molecule +new feature: RESTORE UNITCELL name +new feature: SAVE UNITCELL name +new feature: SELECT CONFIG=0 +new feature: SET minimizationReportSteps +new feature: SET picking DRAGMOLECULE for crystal structures +new feature: SET picking SYMMETRY now aliased with set picking SYMOP +new feature: SET symmetryHM TRUE +new feature: SMILES/ALLCOMPONENTS flag for generation of SMILES having multiple components +new feature: threaded symmetry-aware UFF minimization of crystal structures. +new feature: UFF minimization with application of symmetry for +new feature: UNITCELL [a,b,c,alpha,beta,gamma] +new feature: UNITCELL RHOMBOHEDRAL and UNITCELL TRIGONAL (or HEXAGONAL - same) +new feature: ZAP;MODELKIT SPACEGROUP ... UNITCELL [a b c alpha beta gamma] PACKED +new feature: x = (array of SMILES strings).find("SMARTS" or "SMILES", pattern) +new feature: x = _args() and _args(n) +new feature: x = _arguments and _argumentCount added to SET CALLBACK "jmolscript:..." +new feature: x = {*}.find("spacegroup", "parent") +new feature: x = {atomset}.atoms and {atomset}.label("%[atoms]") +new feature: x = 3x3matrix%1 +new feature: x = 3x3matrix%2 +new feature: x = atomset.search(pat) +new feature: x = compare(A, B, map) and compare(A, B, map, "stddev") +new feature: x = function special variables _caller, _callers, _name +new feature: x = pattern() +new feature: x = search(target, pattern) +new feature: x = spacegroup("ITA/155.1") +new feature: x = spacegroup("ITA/ALL") +new feature: x = symop("count") +new feature: x = symop(matrix,option) +new feature: x = symop("wyckoff") +new feature: x = symop("wyckoff", "c") +new feature: x = symop("wyckoff","C") +new feature: x = symop("wyckoff","G") +new feature: x = symop("wyckoff","S") +new feature: x = @@3.symop("wyckoff",option) +new feature: x = {atom}.wyckoff, label %[wyckoff], color PROPERTY WYCKOFF +new feature: x = string.pop() +new feature: x = string.push("xx") + +This extends the initial set of 85 new crystallographic features introduced in version 15.2: + +new feature: CALCULATE POINTGROUP {atoms} +new feature: CALCULATE SPACEGROUP +new feature: CALCULATE SPACEGROUP {atoms} +new feature: CENTER UNITCELL +new feature: DRAW HKL {1 1 1 x.x} +new feature: DRAW HKL {1 1 1} OFFSET x.x +new feature: DRAW INTERCEPT UNITCELL xxx LATTICE {na nb nc}... HKL .... +new feature: DRAW intersection [unitcell or boundbox description] [line or plane description] +new feature: DRAW intersection [unitcell or boundbox description] LINE @1 @2 +new feature: DRAW intersection [unitcell or boundbox description] ON [line or plane description] +new feature: DRAW POINTGROUP {atoms} CENTER xx +new feature: DRAW UNITCELL xxx LATTICE {na nb nc} +new feature: GETPROPERTY unitCellInfo +new feature: ISOSURFACE SLAB designations "a=" "b=" "c=" "-a=" "-b=" "-c=" "ab" "bc" "ac" "-ab" "-bc" "-ac" +new feature: LOAD .... SPACEGROUP "Hall:P 2y" +new feature: LOAD [some crystal structure] filter "POLYMERX" +new feature: LOAD [some crystal structure] filter "SLABXY" +new feature: LOAD spacegroup 213 unitcell [5 5 5 90 90 90] +new feature: LOAD xxxx.mol FILTER "no3D" +new feature: LOAD xxxx.mol FILTER "noHydrogen" (Or just "NOH") +new feature: MINIMIZE now works (minimally) with a crystal structure. +new feature: MODELKIT ON/OFF +new feature: MODELKIT ADD "C" point [PACKED] +new feature: MODELKIT ADD "Cl" {1/2 1/3 1/3} +new feature: MODELKIT ADD "Cl" {1/2 1/3 1/3} PACKED +new feature: MODELKIT ADD @1 +new feature: MODELKIT ADD @1 "Cl" {1/2 1/3 1/3} +new feature: MODELKIT ADD @1 "Cl" {1/2 1/3 1/3} PACKED +new feature: MODELKIT ADD @1 "N" +new feature: MODELKIT ADD @1 "N" PACKED +new feature: MODELKIT ADD @1 PACKED +new feature: MODELKIT ADD @2 "C" [PACKED] +new feature: MODELKIT ADD @2 [PACKED] +new feature: MODELKIT ADD {xxx} PACKED +new feature: MODELKIT ADD C [array of points] +new feature: MODELKIT ADD/DELETE/MOVETO +new feature: MODELKIT CONNECT @1 @2 [0,1,2,3,4,5,p,m] (default 1) +new feature: MODELKIT DELETE {atoms} +new feature: MODELKIT FIXED NONE +new feature: MODELKIT FIXED PLANE plane +new feature: MODELKIT FIXED VECTOR point1 point2 +new feature: MODELKIT MOVETO @1 {1/2 0 0} +new feature: MODELKIT MUTATE +new feature: MODELKIT PACKED +new feature: MODELKIT ROTATE axis1 axis2 {atoms} degrees +new feature: MODELKIT SET autobond true +new feature: MODELKIT SET hidden true +new feature: MODELKIT SPACEGROUP +new feature: MODELKIT SPACEGROUP "P1" +new feature: MODELKIT SPACEGROUP 123 +new feature: MODELKIT SPACEGROUP 123 packed +new feature: MODELKIT SPACEGROUP ... UNITCELL [a b c alpha beta gamma] PACKED +new feature: MODELKIT SPACEGROUP "ITA/itno.setting" (e.g. "ITA/155.2") +new feature: MODELKIT SPACEGROUP "HALL:xx xx xx" +new feature: MODELKIT UNDO/REDO +new feature: MODELKIT UNITCELL [unitcell description] +new feature: ModelKitCallback +new feature: MOVETO AXES [-][ab, bc, ca, ba, cb, ac][1, 2, 3, 4] +new feature: plane designations "ab" "ab1" "ac "ac1" "bc" bc1" short for {0 0 1/1 0} {0 0 1/1 c} etc. +new feature: set picking dragAtom TRUE now recognizes symmetry for crystal structures +new feature: UNITCELL FILL {na nb nc} +new feature: UNITCELL OFFSET @1; UNITCELL OFFSET {atoms} +new feature: UNITCELL SUPERCELL {na nb nc} +new feature: UNITCELL SURFACE {h k l} [height | scale%] [offset or offset%] [TOP] +new feature: x = @@1.symop(2, "invariant") +new feature: x = @1.pointgroup("spacegroup") +new feature: x = @1.symop("invariant") +new feature: x = [{point},{point},...].find("equivalent", flags) { +new feature: x = {*}.find("spacegroup") -- discovers the space group for a model +new feature: x = {*}.find("spacegroup","x,y,-z") +new feature: x = {*}.inchi("fixedh?") +new feature: x = {*}.inchi("standard") +new feature: x = {1/2 1/2 1/2}.symop("invariant") +new feature: x = {1/2 1/2 1/2}.symop(2, "invariant") +new feature: x = {atoms}.pointGroup() +new feature: x = hkl(1 0 0 0.3) to produce plane offset by 0.3 Angstroms from the origin. +new feature: x = load(filename, asbinary, async) or load(filename, nbytesMax, async) or load(filename, "JSON", async) +new feature: x = search(atomset) +new feature: x = spacegroup("123") or spacegroup(123) +new feature: x = spacegroup("x,y,z&-x,y,z") or spacegroup("&x,y,z;-x,y,z") or spacegroup("x,y,z;-x,y,z&") +new feature: x = spacegroup("x,y,z;-x,y,z") +new feature: x = spacegroup("x,y,z;-x,y,z", [a, b, c, alpha, beta, gamma]) +new feature: x = spacegroup(6, [a, b, c, alpha, beta, gamma]) +new feature: x = symop(2, "invariant") +new feature: x = symop(3,@1,"array") adds "xyzNormalized" +new feature: ZOOM UNITCELL 0 +new feature: ZOOMTO UNITCELL 0 + +bug fix: changing unit cell using just UNITCELL rather than MODELKIT UNITCELL improperly retains symmetry + -- when the unit cell is offset, symmetry should drop to P1 + -- when the unit cell is RESET or otherwise returned to the one associated + with the space group, symmetry should be returned + +bug fix: unit cell information displayed should represent the space group accurately + -- file-based symmetry initially should reflect the opertors from the file + -- after MODELKIT SPACEGROUP, the information should reflect a specific + setting in Jmol and ITA, if found. + +new feature: MODELKIT SPACEGROUP ... UNITCELL ... + -- adds the ability to set the space group and unit cell at the same time + -- unit cell parameters must be compatible with the space group, or the action is aborted + -- unit cell can be expressed in one of three formats: + -- as the array [a b c alpha beta gamma] + -- as the array of cartesian vectors [origin, va, vb, vc} + -- as the setting transtormation string "a,b,c;0,0,0" + +new feature: set symmetryHM TRUE + -- for show/calculate/draw POINTGROUP + -- TRUE switches to Hermann-Mauguin (2m, 2/m2/m2/m) notation + -- FALSE switches back to the default Schoenflies (C2v, D2h) notation + +example script: + + -- creating a group-subgroup comparison, where the transform between settings is known + -- based on information at https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-tranmax?way=up&super=20&sub=4&index=2&client=maxsub&what=&path=&series=&conj=all&type=t + + zap + modelkit spacegroup 20 + draw u20 unitcell color orange mesh nofill "uc-20" + modelkit add P Wyckoff G + // switching to sg 4 -- note that the listed transform matrix + // is for subgroup to supergroup; we need the opposite here, thus the "!" prefix + modelkit spacegroup 4 unitcell "!1/2a+1/2b,c,1/2a-1/2b" + // drawing unit cell and operations + draw uc4 unitcell diameter 0.01 color orange mesh nofill "uc-4" + color property site + draw id "s12" symop @1 @2 + draw id "s43" symop @4 @3 + draw id "s56" symop @5 @6 + draw id "s87" symop @8 @7 + draw id "sg4" spacegroup all + //write c:\\temp\\iucr\\g20-sg4-w-4-draw.png as PNGJ + // switching back to sg 20: + modelkit spacegroup 20 unitcell "1/2a+1/2b,c,1/2a-1/2b" + print symop("wyckoff") + print {*}.wyckoff.pivot; + // switching to sg 4: + modelkit spacegroup 4 unitcell "!1/2a+1/2b,c,1/2a-1/2b" + print symop("wyckoff") + print {*}.wyckoff.pivot; + + +JmolVersion="16.1.63" // (legacy) also 16.1.64 (swingJS) + +bug fix: (legacy JavaScript only) secondary structure reading broken in 16.1.59 + +bug fix (legacy JavaScript only) script fails when referencing undeclared variable + +bug fix: PDB file with all UNK residues considered "not PDB" and skips reading sequence number + -- logic changed to also check for only one residue number + +new feature: MODELKIT VIBRATION WYCKOFF; VIBRATION ON + -- atoms "rattle" in their Wyckoff position + -- just for fun; not a real vibration + +new feature: MODELKIT SET KEY ON/OFF + -- adds an element key in the upper right corner + -- must be individually added per frame and after file loading + -- only visible when only a single model is visible + -- element symbols colors use black/white contrasting with background + -- recognizes different isotope colors + -- does not get created appear if atoms of the same element have different colors + -- automatically updated if MODELKIT ADD/ASSIGN/DELETE are used + +new feature: ECHO/DRAW with ID starting with "_!_" + -- reserved for "single-model-only" echo and draw + -- hidden when more than one frame is visible + -- used by element key so that keys do not overlap + bug fix: PWMAT reader failing with SUPERCELL option + +bug fix: SHOW DATA * fails +bug fix: SHOW DATA TYPES fails + +bug fix: saved state for draw [x y %] ignored when read back in. + +bug fix: modelkit moveto @8 {2 3 4} not working properly + -- should behave the way modelkit ADD C {3 3 3} works, + which is whether or not there is a cyrstal structure + -- should adhere to modelkit SET ADDHYDROGEN setting of true or false + +bug fix: CIF reader should only check repeated atom label within a given blocks + -- problem was with files that have anisotropic parameters before _atom_site + -- solution is to only check for duplicates within single loop blocks + -- test case: LOAD =COD/2004513 centroid; wireframe only ; ellipsoids on + +bug fix: (Java only) Jmol Script Console completion of file names starting with " + double quote adding "null" when no match is found; should just terminate with "/" + +bug fix: crystallographic set picking draw molecule does not work if a fragment is found + -- should expand/move selection to the largest molecule with the same set of sites + +documentation correction: getproperty "dataInfo" not getProperty "data", and description + is incorrect. This should read: + + x=getProperty("dataInfo", "types") or GETPROPERTY DATAINFO TYPES + + returns an array of two strings: ["types",] + where is a string that is a comma-separated list of data names + + x=getProperty("dataInfo", "*") or GETPROPERTY DATAINFO * + + returns the array of data names + + x=getProperty("dataInfo", "property_xxx") // case ignored + + return an array that consists of: + + [1] the exact-case name of the property + [2] the array of values + [3] a bitset indicating the associated atoms + [4] an integer used internally + [5] a string that will be non-null if the value is from the loaded file + + getProperty("DATAINFO") and GETPROPERTY DATAINFO both default to "TYPES" + + +bug fix: set echo ID "X" {0 0 0} does not place the echo at {0 0 0} + +bug fix: set echo ID "X" offset {0 0 0} results in a very tiny font with SET FONTSCALING TRUE + +bug fix: echo @x with trailing space gives "@x" instead of the value of variable x + +bug fix: echo "\\@{...}" loses "\\" when saved in state + +bug fix: POLYHEDRA command should allow keywords following center specification: POLYHEDRA @6 COLLAPSED + +bug fix: (legacy only) dragging a molecule around to rotate it should continue + after the mouse leaves the applet space (Fix was in JSmolCore.js, part of JSmol.min.js) + +bug fix: print symop("wyckoff") only prints the {x,y,z} general coordinate; should print all + +bug fix: print symop("wyckoff", label) should include centering + -- for example: + + $ modelkit spacegroup 20 + $ print symop("wyckoff", "a") + (x,0,0) (-x,0,1/2) (x+1/2,1/2,0) (-x+1/2,1/2,1/2) + +feature change: (legacy only) now using jQuery 3.7.1 + -- previous version of jQuery (jQuery 1.11.0) is still there is needed + +new feature: symop("wyckoff","C") + -- returns centering as an array, possibly empty + -- for example: + + $ modelkit spacegroup 20 + $ print symop("wyckoff", "C") + {0.5, 0.5, 0} + +new feature: symop("wyckoff","S") + -- returns centering as a string + -- for example: + + $ modelkit spacegroup 20 + $ print symop("wyckoff", "C") + (1/2,1/2,0) + +new feature: symop("wyckoff","G") + -- returns general position coordinates as a string + -- for example: + + $ modelkit spacegroup 20 + $ print symop("wyckoff", "G") + (x,y,z) (-x,-y,z+1/2) (-x,y,-z+1/2) (x,-y,-z) (x+1/2,y+1/2,z) (-x+1/2,-y+1/2,z+1/2) (-x+1/2,y+1/2,-z+1/2) (x+1/2,-y+1/2,-z) + + +JmolVersion="16.1.61" // (legacy) also 16.1.62 (swingJS) + +-- release deleted -- see 16.1.63 + +JmolVersion="16.1.59" // (legacy) also 16.1.60 (swingJS) + +-- release deleted -- see 16.1.63 + +JmolVersion="16.1.57" // (legacy) also 16.1.58 (swingJS) + +bug fix: (legacy only) bad release 16.1.55 removed. (accidentally put 16.1.57 in 16.1.55 folder) + +new feature: x = symop("count") + -- returns the number of symmetry operators + + +JmolVersion="16.1.55" // (legacy) also 16.1.56 (swingJS) + +bug fix: (JavaScript, legacy) ellipsoids do not render + -- 16.1.53 release was flawed + +bug fix: (JavaScript, legacy) BCIF file format not recognized as binary by JSmol file reader + -- legacy JSmol only (Jmol-SwingJS reads all files as binary) + -- solution was to add .bcif to Jmol._binaryTypes string in JSmolCore.js (part of JSmol.min.js) + +bug fix: (Legacy JavaScript only) SET LANGUAGE does not work + -- jsmol/idioma directory is no longer necessary, but JS native code was still + pointing to it + -- JavaScript and Java now both use org/jmol/translation/JmolApplet/*.po + +bug fix; FRAME ALIGN {*} first model is incorrectly offset + +bug fix: Binary CIF Reader not adding secondary structure fields + +bug fix: MODELKIT SPACEGROUP xxx does not set atom site correctly. + +bug fix: POLYHEDRON BRILLOUIN not fully functional + +new feature: POLYHEDRON LIST + -- provides information about current polyhedra + +new feature: POLYHEDRA OFFSET 1.0 BRILLOUIN n where n > 1 + -- produces an "exploded view" of 1st-nth BRILLOUIN zones + +new feature: POLYHEDRA OFFSET {x, y, z} WIGNERSEITZ + -- creates a Wigner-Seitz unit cell that is centered on the given point + -- accepts fractional coordinates such as {1/2 1/2 1/2} or {1 1 1/1} + +new feature: UNITCELL [a,b,c,alpha,beta,gamma] + -- sets unit cell to the array of parameters, with no offset + -- same as UNITCELL "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." + +new feature: SAVE UNITCELL name + -- name is optional and defaults to "" + -- saves the current unit cell with the given name + -- names are preserved across file loading and ZAP + +new feature: RESTORE UNITCELL name + -- restores the saved unit cell with the given name + -- if no name is given, uses last saved name + +new feature: crystal structure set picking dragMolecule with ALT implemented + -- rotates all equivalent molecules appropriately around their centers + -- all molecules will be locked if any of their atoms will break symmetry by moving + -- example (space group #41 Aba2): + + load "https://chemapps.stolaf.edu/jmol/jsmol/data/k04041.cif" {1 1 1}; + set picking dragMolecule + + or open + + https://chemapps.stolaf.edu/jmol/jsmol/simple.htm?%20%20load%20%22data/k04041.cif%22%20{1%201%201};%20set%20picking%20dragMolecule + + Now drag or alt-drag a molecule. All molecules will move appropriately + according to their symmetry. + + Challenge: Can you figure out the symmetry elements for this + space group just by moving the molecules? If not, try: + + draw spacegroup all + + and then move them some more. Where are the C2 axes? The glide planes? + How are each pair of molecules related by a symmetry operation? + + +JmolVersion="16.1.53" // (legacy) also 16.1.54 (swingJS) + +bug fix: (legacy only) build issue with jsmol.zip prevents JSmol from working + +bug fix: jsmol.php fails to relay HashMap.js + - wrong content header for utf-8 characters; j2smol.php updated + - removed utf-8 characters in HashMap.js, Hashtable.js, and LinkedHashMap.js + - removed HashMap dependency in SymmetryOperation added in 16.1.43/44 + - removed LinkedHashMap dependency in BCIFReader + +bug fix: CIF reader unnecessarily adding atom label numbers (broken in 16.1.51/52 + +bug fix: script queue is clearing prematurely; only the first-queued script runs (broken in 16.1.47/48) + +bug fix: modulated structure CIF reader never implemented PACKING x.x + +bug fix: magCIF files fail to load after CIF precision adjustment + +bug fix: load SUPERCELL can double size of supercell + +bug fix: load SUPERCELL misassigns atom site, making set picking dragMolecule not work properly + +new feature: set picking DRAGMOLECULE for crystal structures + -- allows dragging ONLY if the selected molecule's symmetry allows all atoms to be translated + -- includes all equivalent molecules for which symmetry allows this translation + +feature change: {*}.find("spacegroup") should not automatically reduce to the parent unit cell if currently a supercell + -- change to 15.2.20/14.32.20 + +new feature: {*}.find("spacegroup", "parent") + -- reduces to the parent unit cell if currently a supercell + -- for example, to show the parent cell of a supercell: + + unitcell @{{*}.find("spacegroup", "parent").unitcell} + + +JmolVersion="16.1.51" // (legacy) also 16.1.52 (swingJS) + +new feature: Binary CIF file structure reading. The BinaryCIF file format + https://github.com/molstar/BinaryCIF "BinaryCIF is a data format that + stores text based CIF files using a more efficient binary encoding. + It enables both lossless and lossy compression of the original CIF file." + + - Prior to this release, BCIF was only supported in Jmol for molecular + electron density map files. + - Shortcut =xxxx.bcif goes to https://models.rcsb.org/xxxx.bcif + - VERY large files can be loaded successfully. Recommendation is + to use SET AUTOBOND FALSE and to load with filter "*.C" for backbone only: + + t = now() + set autobond false; + load =8glv.bcif filter "*.C"; + spacefill on; + color chain; + print now(t) + + - times for transfer and display can be less than 1/2 of that for CIF files + +feature adjustment: SCALE improved + +bug fix: packing range using LOAD ... PACKED 0.3 broken in 16.1.49/50 + + +JmolVersion="16.1.49" // (legacy) also 16.1.50 (swingJS) + +bug fix: DRAW ID "xx" SYMOP... does not recognize ID + +bug fix: DRAW ID "xx" SPACEGROUP does not recognize ID + +bug fix: load of crystal structure should adjust field of view to full unit cell + +bug fix: American Minerologist Society (load =ams/quartz) now https, not http + - Jmol will automatically convert http to https in old scripts. + - older installations will need updating. + +bug fix: echo ID xx {x y z} does not default to LEFT, instead a 2-angstrom shift to the right. + +bug fix: (16.1.47 only) DRAW SPACEGROUP 150 ALL fails + +bug fix: (JSpecView) error reading files with (c) symbol or other non-UTF-8 special characters. + +buf fix: (JavaScript Legacy only) refactoring of Hashtable to use JavaScript Map in legacy transpiler + - should be considerably faster + +bug fix: (JavaScript only) fixes CIF writer with SET DOUBLEPRECISION + +bug fix: CIF writer does not respect originating precision of CIF data. + - problem 1 was that garbage was being added to CIF fractional coordinate + output due to digital representations of numbers. + - problem 2 was that imprecise description of twelfths in CIF input ("0.3333") + were not being represented as their fraction. + - problem 3 was that due to this misrepresentation, packing could be off, + calculation of space group, and determination of Wyckoff positions all + could be off. + +bug fix: (JmolD only) double precision output truncating for XYZ file + - changed from 10.5 to 16.10 format. + +bug fix: (JavaScript and JmolD only) double precision output for CIF file truncating. + +new feature: print @@3.symop("wyckoff",option) + - returns a string of wyckoff information depending upon the option + - uses Bilbao Crystallographic Database WYCKOFF results + - see https://github.com/BobHanson/Jmol-SwingJS/blob/master/src/org/jmol/symmetry/sg/json + - option absent, null, "", or "label" + - return wyckoff position label calculated for this atom, such as "g" + - compare with {atom}.wyckoff, which will calculate the Wyckoff position + only if not found in the CIF file. (Note that AFLOW Encyclopedia files + for example, LOAD =aflowlib/125.1, do contain _atom_site_Wyckoff_label) + - option "coord" + - returns the Wyckoff position coordinate string, such as "(0,x,y)" + - if centering was needed, that centering is added: "(1/4,0,3/4)+(1/2,0,1/2)" + - option "coords" + - returns the list of coordinates for this atom's Wyckoff position label + including space-separated label, centerings, and positions + - for example: + $ zap + $ modelkit spacegroup 225 + $ modelkit add Ti wyckoff d + $ print @@2.symop("wyckoff","coords") + d +(0,1/2,1/2)+(1/2,0,1/2)+(1/2,1/2,0) (0,1/4,1/4) (0,3/4,1/4) (1/4,0,1/4) (1/4,0,3/4) (1/4,1/4,0) (3/4,1/4,0) + - option "*" + - returns the full set Wyckoff information for this space group + as set of lines, starting with the centering and then listing the + Wyckoff position labels and coordinates in order of precedence (a,b,...) + - same as just symop("wyckoff"). + + - for example: + $ load =aflowlib/225.1 packed filter "precision=3" + $ print {*}.wyckoff.pivot + { + "a" : 14 + "i" : 72 + } + $ print @1.wyckoff + a + + $ print @7.symop("wyckoff") + a + + $ print @1.symop("wyckoff","coord") + (0,1/4,1/4) + + $ print @7.fxyz + + $ print @60.symop("wyckoff","coord") + (-y,y,1/2)+(1/2,0,1/2) + + $ print @2.symop("wyckoff","coords") + d +(0,1/2,1/2)+(1/2,0,1/2)+(1/2,1/2,0) (0,1/4,1/4) (0,3/4,1/4) (1/4,0,1/4) (1/4,0,3/4) (1/4,1/4,0) (3/4,1/4,0) + + $ print @2.symop("wyckoff","*") // or $ print symop("wyckoff") + + +(0,1/2,1/2)+(1/2,0,1/2)+(1/2,1/2,0) + a (0,0,0) + b (1/2,1/2,1/2) + c (1/4,1/4,1/4) (1/4,1/4,3/4) + d (0,1/4,1/4) (0,3/4,1/4) (1/4,0,1/4) (1/4,0,3/4) (1/4,1/4,0) (3/4,1/4,0) + e (x,0,0) (-x,0,0) (0,x,0) (0,-x,0) (0,0,x) (0,0,-x) + f (x,x,x) (-x,-x,x) (-x,x,-x) (x,-x,-x) (x,x,-x) (-x,-x,-x) (x,-x,x) (-x,x,x) + g (x,1/4,1/4) (-x,3/4,1/4) (1/4,x,1/4) (1/4,-x,3/4) (1/4,1/4,x) (3/4,1/4,-x) (1/4,x,3/4) (3/4,-x,3/4) (x,1/4,3/4) (-x,1/4,1/4) (1/4,1/4,-x) (1/4,3/4,x) + h (0,y,y) (0,-y,y) (0,y,-y) (0,-y,-y) (y,0,y) (y,0,-y) (-y,0,y) (-y,0,-y) (y,y,0) (-y,y,0) (y,-y,0) (-y,-y,0) + i (1/2,y,y) (1/2,-y,y) (1/2,y,-y) (1/2,-y,-y) (y,1/2,y) (y,1/2,-y) (-y,1/2,y) (-y,1/2,-y) (y,y,1/2) (-y,y,1/2) (y,-y,1/2) (-y,-y,1/2) + j (0,y,z) (0,-y,z) (0,y,-z) (0,-y,-z) (z,0,y) (z,0,-y) (-z,0,y) (-z,0,-y) (y,z,0) (-y,z,0) (y,-z,0) (-y,-z,0) (y,0,-z) (-y,0,-z) (y,0,z) (-y,0,z) (0,z,-y) (0,z,y) (0,-z,-y) (0,-z,y) (z,y,0) (z,-y,0) (-z,y,0) (-z,-y,0) + k (x,x,z) (-x,-x,z) (-x,x,-z) (x,-x,-z) (z,x,x) (z,-x,-x) (-z,-x,x) (-z,x,-x) (x,z,x) (-x,z,-x) (x,-z,-x) (-x,-z,x) (x,x,-z) (-x,-x,-z) (x,-x,z) (-x,x,z) (x,z,-x) (-x,z,x) (-x,-z,-x) (x,-z,x) (z,x,-x) (z,-x,x) (-z,x,x) (-z,-x,-x) + l (x,y,z) + +new feature: symop("wyckoff") + - retrieves full list of current space group's Wyckoff positions + - same as but simpler than {*}.symop("wyckoff") + +new feature: symop("wyckoff", "c") + - just gives the list of coordinates for the "c" Wyckoff position + +new feature: LOAD...FILTER "lowPrecision" + - precision set to 4 (+/-0.0001) for fractional coordinates + - specifies that crystal structure readers should not attempt to raise the + precision to single- or double-precision even if the file contains double-precision data + - also sets PACKED 0.0001 rather than the standard default value of 0.02 + (which tends to allow too many atoms to be included) + +new feature: LOAD...FILTER "PRECISION=n" where n is up to 16 digits + - specifies the precision to use for a given CIF file + - can also be used to lower the precision + For example, AFLOWLIB files tend to have their precision hidden by padding + with zeros: + + U1 U 4 a 0.00000 0.00000 0.00000 1.00000 + B1 B 48 i 0.50000 0.66600 0.66600 1.00000 + + This could cause trouble with some edge cases, so one could use FILTER "PRECISION=3" + in thise case to explicitly ignore the padding and turn, "0.666" into "0.66666667". + +Note regarding precision: + + The issue of double or float (aka "single") precision has a long history in Jmol. + Early on, using floats seemed reasonable, as it was the more memory-efficient than + using double. And it seemed unnecessary to do anything more precise. + + But it has always been a problem (and boon!) that JavaScript is DOUBLE precision by + design. This resulted in very slight differences between Java and JavaScript in Jmol, + particularly for loading crystal structures, where there is often a very thin line + between being "in" the unit cell and being "out" or being close to a symmetry element + or not. Or being the same atom produced by two different symmetry operations or not. + The problem was largely solved in 2014 for Jmol 14.3.5 by trimming float and double + precision in both Java and JavaScript down to common level during the reading of + crystal structures. This normalization of coordinates and other key values in file + reading allowed Java and JavaScript to load files identically. + + Ah, but then in 2022 we started to see crystal structures derived from computation, + where full double precision is expected. The question was how to get JavaScript + working in double precision even if its originating Java was in float precision. + This was a significant challenge. The solution was to create the "doublePrecision" + setting in Jmol 14.32.42 (2022.03.24), which specifically allows Jmol legacy + JavaScript to retain its full double precision without doing anything in Java. + Of course, that meant that PNGJ files and other scripts might read a structure + differently in Java than in JavaScript, particularly if there are atoms present + that are very close to a unit cell face when LOAD...PACKED is used. But that was + still a good solution for browser based applications such as the Q-Studio crystal + building web interface we were developing for PWMAT. + + The problem has been that of not finding all the places where Jmol was normalizing + the double values of JavaScript with the float values of Java. + + Thus the above bug fixes. + + The current situation is as follows: + + "legacy" JSmol JavaScript will handle double precision properly after + + SET doublePrecision TRUE + + "legacy" Java Jmol cannot process crystal structures in full double precision. + The default value of doublePrecision for legacy Java Jmol is FALSE, and it cannot + be changed. + + Jmol-SwingJS (Java "JavaD.jar" and JavaScript) is completely double-precision + and is unaffected by this setting. Its default is TRUE, and that value cannot + be changed. + + So this is all about legacy JavaScript JSmol. + + Two file readers, CIF and PMAT, will set doublePrecision automatically. + These readers detect the precision of the data from the number of decimal + places in the fractional coordinates. "0.6667" would indicate four digits + of precision, for example. If a CIF file has 10 or more decimal digits, + doublePrecision will be set TRUE while reading. In addition, if a PWMAT file + is read, doublePrecision will always be set TRUE. These are temporary settings, + only for file reading. So if this is all you are using it for, you do not need + to set doublePrecision TRUE yourself. + + In addition, if you are using legacy JavaScript, you should set this value true + when you start up Jmol in any of the following situations: + + * You are finding the space group for a structure using CALCULATE SPACEGROUP. + * You are building a crystal structure using the Jmol ModelKit + * You are setting the space group using MODELKIT SPACEGROUP. + * You are dragging symmetry-equivalent atoms of a crystal structure using set DRAGATOM. + * You are labeling atoms or selecting them using Wyckoff positions. + + All of these crystal structure-related operations are best done with the + lowest tolerances possible -- that is, the highest precision. But it is also + quite possible that you will not notice any particular issue here. + + The problem occurs because experimentally based CIF files by nature have low + precision -- perhaps only four or five significant digits. For these structures, + we do NOT want to have high precision all the time. If we did, the values in the + files might not be mathematically close enough to the ideal to make these functions + work reliably. + + +JmolVersion="16.1.47" // (legacy) also 16.1.48 (swingJS) + +bug fix: MODELKIT SPACEGROUP ... for no-atom structure does not properly set unit cell lengths + +bug fix: LOAD ==HEM (PDB ligand) loading broken in 16.1.45 (2023.11.06) + +bug fix: LOAD =ams/quartz broken in 16.1.45 + +bug fix: CIFReader may misread incommensurately modulated files that have multiple structures + +bug fix: SCALE maximum length 1/2 what it should be with set antialiasDisplay off + +bug fix: fixes DRAW SPACEGROUP ALL for unit glide in #88, missing planes in #156 + +bug fix: fixes DRAW SPACEGROUP (ALL) diamond glides of +/-3/4 listed as "g" instead of "d" + +bug fix: fixes DRAW SPACEGROUP (ALL) diamond glides of +/-3/4 instead of -/+1/4 + +new feature: LOAD .... fill unitcell rhombohedral + - fills a rhombohedral unit cell for a structure that is trigonal in file + - ignored unless the symmetry is trigonal + - does NOT transform operators -- for that, follow this with MODELKIT SPACEGROUP "..." + +new feature: LOAD .... fill unitcell trigonal + - fills a trigonal unit cell for a structure that is rhombohedral in file + - ignored unless the symmetry is trigonal + - does NOT transform operators -- for that, follow this with MODELKIT SPACEGROUP "..." + +new feature: LOAD ... fill unitcell "2a,a-b,..." + - allows generic fill of specified unit cell + - can be used with any space group + - will accept packing lattice such as {2 2 2} just before FILL + - does not transform operators -- for that, follow this with MODELKIT SPACEGROUP "..." + - for example: + + load =aflowlib/148.1 fill unitcell "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c" + modelkit spacegroup "148:r" + draw spacegroup all + +new feature: LOAD =aflowlib/155.2 + - loads the second AFLOW prototype in spacegroup 155 at https://www.aflowlib.org/prototype-encyclopedia + - full listing of thes AFLOW codes codes employed is in + - https://github.com/BobHanson/Jmol-SwingJS/tree/master/src/org/jmol/symmetry/sg/json/aflow_structures.json + + +JmolVersion="16.1.45" // (legacy) also 16.1.46 (swingJS) + +bug fix: GaussianReader misreading high-level spherical MO data (9G, 11H, 13I) + +new feature: x = spacegroup("ITA/ALL") + - provides detailed information about general positions, generators, and Wyckoff positions + for all space groups and their additional ITA settings (611 in all) as found using + https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-getgen + - keys include: + gen array of generators + gp array of general positions + id HM name such as P23 + jmolId full ITA name, with setting, such as 8:b1 or 227:2; may be "ita?." + set setting index in this space group: 1, 2, 3, ... + sg space group number: 1, 2, 3, ... + tm transformation matix descriptor for this setting: "a,b,c" or "a-3/8,b-3/8,c-3/8" + u unabridged ITA title, such as "P n -3 m [origin 2]" + wpos Wyckoff positions, a map with keys: + cent an array of centerings (if applicable) + pos the Wyckoff position; an array of maps with keys: + desc the ITA description, such as "1" or "m.." + geom the type of position, one of "point", "line" or "plane" + label the single-character label [a-zA] + mult the multiplicity + +new feature: x = spacegroup("ITA/155.1") + - retrieves the first JSON structure in org/jmol/symmetry/sg/json/ita_155.json + +new feature: UNITCELL RHOMBOHEDRAL and UNITCELL TRIGONAL (or HEXAGONAL - same) + - allows switching back and forth between rhombohedral and hexagonal unit cells. + - does not change the space group (assumes currently rhombohedral if trigonal or hexangonal is chosen + and vice versa) + - does not check to see that this is reasonable + - applies for rhombohedral: UNITCELL "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c" + - applies for trigonal: UNITCELL "a-b,b-c,a+b+c" + +new feature: MODELKIT ADD WYCKOFF + - adds an atom in a representative position for the given Wyckoff position. + - generates all symmetry-equivalent atoms. + - for example: modelkit add C wyckoff d + - the "seed" position is at the relatively arbitrary position of (2.3/5, 2.3/7, 2.3/9). + - this point is projected onto the specified Wyckoff position element (point, line, or plane). + - after generation, this point can be moved within the confines of the Wyckoff position + constraint using SET PICKING DRAGATOM + + +JmolVersion="16.1.43" // (legacy) also 16.1.44 (swingJS) + +new feature: MACRO AFLOW adds SHOWSG(n,i,addSymmetry) + - displays example i of every space group (n) -- though not every setting + - taps https://www.aflowlib.org/prototype-encyclopedia/ + - see AFLOW Encyclopedia of Crystallographic Prototypes, + https://www.aflowlib.org/prototype-encyclopedia; + M. J. Mehl, D. Hicks, C. Toher, O. Levy, R. M. Hanson, + G. L. W. Hart, and S. Curtarolo, + The AFLOW Library of Crystallographic Prototypes: Part 1, + Comp. Mat. Sci. 136, S1-S828 (2017). + (doi=10.1016/j.commatsci.2017.01.017) and related publications + - n is space group number, from 1 to 230 + - i is index 1-m where m is the number of space groups in the encyclopedia for that number + - addSymmetry TRUE to add DRAW SPACEGROUP ALL to show operations + +bug fix: MODELKIT SPACEGROUP does not work if there are no atoms + - now creates a generally satisfactory unit cell when no atoms are present + - unit cells are not adjusted to have different a,b,c for "unique origin" groups + +bug fix: (SwingJS only) SHOW SPACEGROUP loses operator translations in SHOW SPACEGROUP + +bug fix: show Symmetry/SpaceGroup/Symop will show g-glide, not d-glide for cubic 3/4,1/4,1/4 glides + +bug fix: (undocumented) -matrix (unary minus; 3x3 or 4x4) should transpose, not + - careful -- 4x4 transpose is all four rows for columns + +feature change: DRAW SPACEGROUP simplified (was basically unusable) + - just shows geometric elements, not targets + +feature change: DRAW SYMOP n and DRAW SYMOP "x,-y,z" no longer default to using the first atom. + - new default is the origin, {0 0 0} + - allows for consistency after MODEL SPACEGROUP xxx, when there are no atoms. + +new feature: 3x3matrix%1 + - returns trace + +new feature: 3x3matrix%2 + - returns determinant + +new feature: x = symop(matrix,option) + - allows introduction of a matrix as a symmetry operation + - accepts various options such as "xyz"; default is still matrix + +new feature: MODELKIT SPACEGROUP "x,y,z;x,-y,z;..." + - allows creating a space group from a full operation list + +new feature: DRAW SPACEGROUP ALL + - displays all "additional geometric elements" (planes, axes, points) + resulting from adding translations to the described symmetry operation + +new feature: DRAW HOVERLABEL "xxx" + - allows for a hover label that appears whether or not drawHover is on. + +new feature: DRAW "xxx...." + - used for saving the hover label in a state + (or, at least it allows no error in earlier versions; will show up as text) + +new feature: CIFReader reads atom_site_wyckoff_label + +new feature: CIFReader FILTER option NOWYCKOFF + - to skip reading atom_site_wyckoff_label (for Jmol development testing purposes, primariy) + +new feature: {atom}.wyckoff, label %[wyckoff], color PROPERTY WYCKOFF + +JmolVersion="16.1.41" // (legacy) also 16.1.42 (swingJS) + +new feature: AMS reader + - adds Atomic charge as partial charge for last model and all vibrations + +bug fix: select config='' fails for residue-order alternate locations + - when all 'A' listed first, then all 'B' for a residue + +bug fix: select config=-n fails for residue-order alternate locations + +bug fix: select config=0 fails for residue-order alternate locations + +JmolVersion="16.1.39" // (legacy) also 16.1.40 (swingJS) + +new feature: string.push("xx") + -- appends a string to a string + +new feature: string.pop() + -- pops a character off a string + +new feature: {atomset}.atoms and {atomset}.label("%[atoms]") + -- same as {atomset}.label("[%n]%r:%c.%a") + -- specifically does not include altloc + -- can be used to identify associated altlocs efficiently + -- example use: + + history off + load =5pol + altlocKeys = {} + altlocAtoms = {}; + theatoms = {altloc!=''} + for (var a in theatoms){ + var name = a.atom; + if (!altlocKeys[name]) { + altlocKeys[name] = ""; + altlocAtoms[name] = ({}); + } + altlocKeys[name].push(a.altloc); + altlocAtoms[name] |= a.atomIndex; + } + history on + + resulting in the creation of the arrays altlocKeys and altlocAtoms, which + group alternate location codes and atom sets by atom name: + + { + "[8RP]201:A.C1": "D", + ... + "[MET]23:B.SD" : "CD" + } + + and + + { + "[8RP]201:A.C1" : ({2093}), + ... + "[MET]23:B.SD" : ({1039 1040}) + } + +new feature: AMS reader + - version extension of ADF reader + - adds Atomic charge as partial charge for last model and all vibrations + +bug fix: patch #40 ADF/AMS output support (Diego Gayaga) + - support for ADF output files was not working + - for geometry optimizations, only the initial geometry was grabbed + without actually being able to visualize the optimized structure. + Moreover, vibrational displacements were being applied to this initial structure, + which was not consistent. + - newer versions of the ADF code are now named Amsterdam Modeling Suite (AMS) + instead of ADF; these files were also not properly supported. + - bonding energy as a model property is also added. + + +JmolVersion="16.1.37" // (legacy) also 16.1.38 (swingJS) + +bug fix: set picking dragAtom does not update measurements + +bug fix: MODELKIT MOVETO @1 {1/2 1/3 1/2} does not update measurements + +bug fix: UNITCELL SURFACE {h k l height offset} can fail to find 90-deg option + +bug fix: DRAW POINTGROUP or CALCULATE POINTGROUP can result in C2h instead of C2v + because it a check for linearity was not normalizing prior to taking the dot product + For example, (nonlinear) SO2. + +bug fix: export of X3D creates abnormally large unit cell lines due to error in passing width parameter to __CartesianExporter + +bug fix: GaussianReader -- Fixes need to detect pure/Cartesian formalism when basis set is read from chk file. (by marco-foscato) + +bug fix: CONNECT AROMATIC AUTO fails to generate double bonds for carbonyl groups + +bug fix: CONNECT AROMATIC AUTO fails to create triple bonds + +new feature: select CONFIG=0 + - selects for all atoms that have fewer than two alternate locations. + - these are the atoms that, using an atom-based (FirstGlance) rather than a residue-based (PDB spec) + interpretation of "conformation" will be included in every conformation. + - equivalent to {config=-1 & config=-2 & ... & config=-N} where N is the number of + altloc possibilities for a model, specifically {thismodel && altloc!=''}.altloc.pivot.keys.count + + + +JmolVersion="16.1.35" // (legacy) also 16.1.36 (swingJS) + +new feature: DRAW SPACEGROUP @a n + - draws just the nth non-identity operation for which + the specified atom @a (in the current model only, same as @@a) is invariant + - note that the identity operation is not included in this set + - If the the atom is in a general position or n is greater + than the number invariant operations, nothing is drawn. + - if n is absent or zero, all invariant operations are drawn. + - for example: + + load =ams/marcasite 1 packed + draw spacegroup @2 + + -x,y,z mirror plane + + draw spacegroup @3 + + -x,y,z mirror plane + x,-y,-z C2 axis + -x,-y,-z Ci: 0 0 0 + + draw spacegroup @3 2 + x,-y,-z C2 axis + + +bug fix: uc = unitcell("a=5.469,b=5.469,c=5.469,alpha=120,beta=90,gamma=90") fails + - (broken in Jmol 16.1.16); + + +JmolVersion="16.1.33" // (legacy) also 16.1.34 (swingJS) + +bug fix: LOAD "" not working after drag-drop of structure text into Jmol +bug fix: ROTATE(SELECTED) {atoms} [4x4 matrix] miscalculates translation + - when in the order [4x4 matrix] {atoms} it is fine, + but when it is {atoms} first, then the {atoms} are used only + as a center, and while the rotation is about {0 0 0}, the translation is + not done properly +bug fix: COMPARE ... SMILES does not accept multiple components + - when two molecules are selected, only one gets used + - now applies "/allcomponents" flag +bug fix: (JavaScript only) LOAD APPEND of CIF file containing _atom_type_radius_bond may fail to bond some atoms +bug fix: (JavaScript only) JSCONSOLE and JSCONSOLE CLEAR script commands broken. + +new feature: SMILES/ALLCOMPONENTS flag for generation of SMILES having multiple components + - without this flag, only single-component SMILES are created for salts, for example. + - additional components are separated by "." and no ring-connectors + +new feature: CONFIGURATION -n + - suggestion by Eric Martz + - specifically a negative number here + - allows checking specific lettered configurations based on their index in the string of altlocs + - allows checking specific lettered configurations + - atom-based configuration setting + - specifically for biomolecules: + --- for n from 1 to the number of alternative locations in a model + --- sets configuration to + (all atoms with nth altloc) + + (first listed entry for chain, residue, insertion code, and atom name + when altloc for this atom is not found) + - for non-biomolecules same as for positive value; just includes + (all atoms with no altloc) + (all atoms with nth altloc) + - note that for biomolecules, positive configuration number + gives the nth entry in the set of altlocs *for a given residue* + - note that selecting a configuration number greater than one and + greater than the number of altloc possibilities for a model + returns no atoms + +new feature: CONFIGURATION "A" + - suggestion by Eric Martz + - allows checking specific lettered configurations + - atom-based configuration setting + - specifically for biomolecules: + --- sets configuration to + (all atoms with specified altloc) + + (first listed entry for chain, residue, insertion code, and atom name + when specified altloc for this atom is not found) + - for non-biomolecules same as for positive value; just includes + (all atoms with no altloc) + (all atoms with this altloc) + - specifying "" or " " delivers all case without alternative locations + +new feature: BilbaoReader allows LOAD ... spacegroup ":n" to force origin, where n is 1 or 2 + - for example, in a case where the text is given as a different origin: + +#Exercise 2.1B (ZrSiO4: origin 1) +# Space Group ITA number +141 +# Lattice parameters +6.60 6.60 5.88 90 90 90 +# Number of independent atoms in the asymmetric unit +3 +# [atom type] [number] [WP] [x] [y] [z] +Zr 1 4a 0 0 0 +Si 1 4b 0 0 0.5 +O 1 16h 0 0.2 0.34 + + +JmolVersion="16.1.31" // (legacy) also 16.1.32 (swingJS) + +bug fix: WRITE CIF does not add occupancy +bug fix: SET PICKING DRAGSELECTED broken +bug fix: MINIMIZE GROUP not working correctly + +new feature: Jmol will accept CIF files with duplicate atom_site_label entries + - it will add numbers if two identical atom_site_label values are found + - an warning message is reported in the Java console only. + +new feature: function special variables _caller, _callers, _name + - _caller is only the direct calling JmolScript function + - _callers is the stack of all calling JmolScript functions + +new feature: _args() and _args(n) + - same as _arguments and _arguments[n], but better for callbacks + - more efficient access to jmolscript: callack arguments than _arguments + - does not require translation of all arguments into script variables; only as needed + - can be used for functions and scripts as well. + - consistent with syntax added in 14.32.58 but not yet documented + +new feature: allow CIFReader to ignore COD 2107628 unmodulated operations in presence of modulated + - _space_group_symop_ssg_operation_algebraic in preference to _space_group_symop_operation_xyz + - can this possibly be a valid CIF option, to have both of these??? + +new feature: CIFReader "ignoreGeomBond" (was SwingJS only) + - explicitly ignores all GEOM_BOND records + + +JmolVersion="16.1.29" // (legacy) also 16.1.30 (swingJS) + +new feature: _arguments and _argumentCount added to SET CALLBACK "jmolscript:..." + - similar to using parameters with scripts, as in SCRIPT "test.spt"(3,5) + - allows reading of parameters within callbacks within Java. (JavaScript has the parameters already) + - for example: + set loadStructCallback "jmolscript:print 'file is ' + _ARGUMENTS[2]" + set dragdropCallback "jmolScript:if (_ARGUMENTS[5].find('config')) dropFileType='pwmat'" + +bug fix: CONFIGURATION command with no parameters causes state save to fail +bug fix: CONFIGURATION command does not update shapes with nonzero hermiteLevel +bug fix: echoCallback should not be able to infinitely call itself. + + +JmolVersion="16.1.27" // (legacy) also 16.1.28 (swingJS) + +new feature: (array of SMILES strings).find("SMARTS" or "SMILES", pattern) + - efficiently searches each target SMILES in array for pattern + - returns array of same length with 1 (found) or 0 (not found) for each target SMILES + - for example: + $ print ["CCCC","C(O)CC","C(N)CC","CC(N)CC"].find("SMARTS","CCO").format("JSON") + [ 0,1,0,0 ] + $ print ["CCCC","C(O)CC","C(N)CC","CC(N)CC"].find("SMILES","CCCN").format("JSON") + [ 0,0,1,0 ] + +bug fix: modulated structure Crenel-only (no Lagrange or Fourier) fails to trigger occupational visualization +bug fix: ModelKit MINIMIZE command can use wrong symmetry operators with multiple structures +bug fix: Modelkit MINIMIZE command displays all models instead of just one after minimization +bug fix: Modelkit MINIMIZE fails if multiple models are displayed (should show error that it only works with one model displayed) + + +JmolVersion="16.1.25" // (legacy) also 16.1.26 (swingJS) + +bug fix: standard minimization does not refresh properly +bug fix: standard minimization does not set atom positions properly after dragMinimize +bug fix: JME 2D-MOL files do not properly indicate they are 2D in _M +bug fix: LOAD <2D mol file> FILTER "2D" may invert stereochemistry (broken in 14.31.53) + + +JmolVersion="16.1.23" // (legacy) also 16.1.24 (swingJS) + +new feature: threaded symmetry-aware UFF minimization of crystal structures. + - command: MODELKIT MINIMIZE [optional parameters] same as MINIMIZE command + - temporarily creates a new model in a hidden frame that expands the model + to a full 3x3 unit cell + - efficient minimization of just the asymmetric unit; other atoms are generated + - adds a 5-angstrom fixed set of atoms around that + (adjustable using the RANGE parameter of the MODELKIT MINIMIZE command) + - runs UFF exclusively + - threaded, so allows user interaction during minimization + (which should be minimal, but does allow MINIMIZATION STOP, for example) + - does not require a fully packed model. For example: + + load =ams/quartz 1; modelkit minimize; modelkit packed; connect auto + + gives the same structure as: + + load =ams/quartz 1 packed; modelkit minimize + + because all optimization of the asymmetric unit alone within + the context of a fully elaborated periodic structure. The actual + atoms do not need to exist. + + +JmolVersion="16.1.21" // (legacy) also 16.1.22 (swingJS) + +bug fix: popup menu File...Load...Open PDB for JavaScript does not work +bug fix: popup menu File...Load...Open MOL for JavaScript does not work +bug fix: compare({...}, {...}) and compare({...},{...},"stddev") broken in Jmol 14.31.55 +bug fix: load "?" broken for JavaScript + +new feature: compare(A, B, map) and compare(A, B, map, "stddev") + - A or B can be atom set or array of points + - map is an integer array indicating the ordering of A that matches B + - for example, if A is [@1,@2,@3] and B is in order [@2,@3,@1] + then the map array would be [2 3 1], since B[1](i.e. @2) matches a[2] + and B[2] matches A[3], and B[3] matches A[1]. + - A may have more elements than B, provided the map has the same elements as B + +new feature: load "=?" load PDB ID from RCSB with prompt +new feature: load "==?" load chemical component from RCSB with prompt +new feature: load "*?" load PDB ID from EBI with prompt +new feature: load "$?" load structure from NCI/CADD with prompt +new feature: load ":?" load structure from pubChem with prompt + + +JmolVersion="16.1.19" // (legacy) also 16.1.20 (swingJS) + +bug fix: JanaReader modulation fix (broken in 16.1.16) +bug fix: MSRdr (modulated structure reader) fix (broken in 16.1.16) +bug fix: @2.identify and ({2}) do not work (for single atom sets; broken in Jmol 12.3.2 Oct 2011!!) + - fix test: + $ load $caffeine + $ label %a + $ print @2.identify + C2 #2 + $ print @2.label() + C2 #2 + $ print @2.label("") + C2 + +bug fix: bondsets do not remain bondsets after operations + - fix test: + $ load $caffeine + $ x = connected({_C},{_O}) + $ print x + [{2 14}] + $ print x | 3 + [{2 3 14}] + $ print (x | 3) and ! ({14}) + [{2 3}] + +bug fix: color @bondset colors atoms, not bonds + - fix test: + $ load $caffeine + $ x = connected({_C},{_O}) + $ color @x yellow + +bug fix: bondset.identify and bonset.label() fail + - fix test: + $ load $caffeine + $ x = connected({_C},{_O}) + $ print x[1] + [{2}] + $ print x[1].identify // number, order, atoms, distance + 3 2 C3 #3 -- O4 #4 1.215961 + $ print x[1].label() // same + 3 2 C3 #3 -- O4 #4 1.215961 + $ print x[1].label("") // [atom1] distance [atom2] #number + [C3 #3] 1.216 [O4 #4] #3 + + +JmolVersion="16.1.17" // (legacy) also 16.1.18 (swingJS) + +bug fix: set picking assignatom_P (specifically phosphorus) fails (second try!) +bug fix: MINIMIZE crystal structure better optimization +bug fix: LOAD APPEND VAR does not work +bug fix: LOAD "" should return last actual file loaded, not "string" if LOAD VAR or LOAD INLINE was used + +new feature: MODELKIT MINIMIZE + - for crystal structures in the current model only + - does not need anything more than the asymmetric unit atoms + - carries out a minimization on the asymmetric unit within a 27-cell block {444 666 1} + - applies that minimization to all atoms in the current model + - temporarily creates a new CIF model, minimizes it, then deletes it + - can accept a limited number of additional parameters such as SILENT and + - Equivalent to + + function minimizeXtal() { + if (within("unitCell") == 0) return; + var m = {thisModel}; + var au = {thisModel & !symmetry}; + var x = write("cif"); + var usethread = useMinimizationThread; + var apnew = appendNew; + set useMinimizationThread false; + set appendNew true; + load append var x {444 666 1}; + frame last; + minimize; + set useMinimizationThread @usethread; + set appendNew @apnew; + var pts = {thisModel & symop=1555}.xyz.all; + zap {thisModel}; + frame @m; + modelkit moveto @au @pts; + } + +new feature: MODELKIT MOVETO @atoms @points + - bulk conversion of a set of atom positions, applying symmetry + - similar to MODELKIT MOVETO @atom @xyz, but for a set of atoms + - atoms may be just the asymmetric unit + - points is a set of points, same length as atoms + +JmolVersion="16.1.15" // (legacy) also 16.1.16 (swingJS) + +bug fix: draw SYMMETRY for linear molecules indicates C2 or D2 rather than C_infinity +bug fix: incommensurately modulated CIF files fail with certain Fourier coefficient methods + (broken when "id" was added to the registry keys for MSCIF file records). +bug fix: unitcell SURFACE fails in some cases + +new feature: MINIMIZE SELECT {atoms} + - Minimizes a set of atoms within the context of atoms around those atoms. + - The surrounding atoms will not be moved, but the forces they apply to + the selected atoms will be part of the calculation. + - for example: + + set appendnew false + load $water + load append $acetone + minimize SELECT {water} + + # The water molecule is moved away from + # the acetone molecule during minimization. + # The acetone molecule is not moved. + +new feature: MINIMIZE GROUP {atoms} + - minimizes a group such as CH3 ignoring all other atoms but without modifying the bond to its connecting atom + - for example: + + load $caffeine + minimize GROUP {within(smarts, "[C][H]")} + # the H atoms of the three CH3 groups will move ever so slightly + # the C atoms will not move + +new feature: MINIMIZE ONLY {atoms} + - Minimizes a set of atoms ignoring all other atoms. + - Useful if minimizing a small molecule near a surface, for example, + without having it drift away from the surface due to VDW repulsion. + + - If a molecular fragment, UFF force field will be used. + - Default option for MINIMIZE {atoms} + - for example: + + load $caffeine + minimize ONLY {within(smarts, "C=O")} + + # the C=O groups will be moved around as though + # they were not connected to the rest of the molecule + +NOTE: the MINIMIZE command has subtly different SELECT options: + + minimize ONLY {water} // atoms are minimized independently of any other atoms + minimize GROUP {water} // same as {water} but connected bonds are not changed + minimize SELECT {water} // atoms are minimized, but forces of nearby atoms are included + minimize {water} // same as minimize ONLY {water} + +new feature: UFF minimization with application of symmetry for + crystal structures. + - minimizes just the asymmetric unit, concurrently + transfering the changes to all equivalent atoms + - always uses the UFF force field (as adapted for better angle minimization) + - simply use MINIMIZE by itself + - for best results, load the structure with a padding of cells around the centeral + unit cell, for example: + + load =ams/quartz 1 {444 666 1} + minimize + write quartz-uff.cif + + (Note that the written CIF file will just have two atoms, minimized for the whole unit cell.) + +new feature: draw SYMOP [3,4,5] @1 + - draws the given array of symops (1-based) for atom 1 + +new feature: DRAW SPACEGROUP @n + - draws just the operations for which the specified atom + (in the current model only) is invariant + - If the the atom is in a general position, nothing is drawn. + - for example: + + load =ams/marcasite 1 packed + draw spacegroup @2 + + -x,y,z mirror plane + + draw spacegroup @3 + + -x,y,z mirror plane + x,-y,-z C2 axis + -x,-y,-z Ci: 0 0 0 + + +JmolVersion="16.1.13" // (legacy) also 16.1.14 (swingJS) + +bug fix: MINIMIZE {atoms} does not work with crystal structure + when atoms are added prior to changing space group using LOAD APPEND with SET APPENDNEW FALSE + load =ams/quartz 1 packed;set appendnew false;load append $water;modelkit spacegroup P1 + minimize {water} + +new feature: popup menu adds "atom picking..." Drag Atom and Drag Molecule + +new feature: Jmol application -A --scriptarguments flag + - used in conjunction with -s --script + - allows adding _arguments array variable to a script file on the command line + - example: + + jmol -s "test.spt" -A "2,3,4" + + where test.spt is + + print "" + _arguments[1] + " and " + _arguments [2] + " and " + _arguments[3] + + result is + + 2 and 3 and 4 + +new feature: draw boundbox $[isosurface id] + +new feature: draw boundbox BEST $[isosurface id] + +new feature: CIFReader "ignoreGeomBond" + - explicitly ignores all GEOM_BOND records + +bug fix: RESET should clear custom boundbox +bug fix: pdbAddHydrogens can create atomNo duplicates. +bug fix: mmCIF struct_conn with FILTER "addbonds" may miss bonds (6mqj, 7rfw) +bug fix: simple mutation 3-letter code fails, for example: mutate 33 LYS + + +JmolVersion="16.1.11" // (legacy) also 16.1.12 (swingJS) + +bug fix: incommensurately modulated CIF missing modulations when params split off into separate loops + +bug fix: CIF "_space_group_it_number" not recognized + +bug fix: WRITE CIF creates invalid CIF files that now cause failed reading + -- Problem was that Jmol was updated to require CIF standard + that all _atom_site_label must be unique. (OUCH!) + -- Corrected only such that CIF files starting with + "# primitive CIF file created by Jmol" will append a number to each label + thus allowing reading of these legacy files. + +bug fix: Jmol does not recognize ASCII CrystalMaker CMF files from EPINET + -- due to use of tab character after TITL + +new feature: CrystalMaker CMDF (binary) file reader + -- minimal reader; atoms, unit cell and symmetry only; does not read bonds or rendering + + +JmolVersion="16.1.9" // (legacy) also 16.1.10 (swingJS) + +bug fix: InChI from 2D MOL or SDF not recognizing stereochemistry + +bug fix: Incommensurately modulated CIF with two structures + with two different modulation dimensions will fail + (z034DL74QTM.cif) + +bug fix: measurements not correctly changing size dynamically with antialiasdisplay +bug fix: measurements not preserving explicitly set units in state +bug fix: measure 2.5 3.5 {_N} {_O} delete deletes all measures +bug fix: measures not retaining specific units + +new feature: measure SELECT... + -- selects the specified measures for actions without creating or removing it + -- if the described measure does not exist, the command is ignored + -- for example: + + load $caffeine + measure {_N} {_O} all + measure SELECT 4.5 {_N} {_O} + color measures yellow + measure SELECT 3.5 4.5 {_N} {_O} color green + +new feature: measure SELECT ALL + -- selects all measures + +new feature: measure SELECTED + -- list the currently selected measures + +new feature: measure SELECTED ... + -- carry out the change only on the currently selected measures + -- "default" (quoted) parameter sets the format string and units to default values + -- for example: + + load $caffeine + measure {_N} {_O} all + measure SELECT 4.5 {_N} {_O} color orange + measure SELECT 4.5 {_N} {_O} "pm" + measure SELECT 4.5 {_N} {_O} color orange "pm" + + or + + measure SELECT 4.5 {_N} {_O} + measure SELECTED color orange + measure SELECTED delete + +new feature: MEASURE .... "default" + - resets units and label format to null (indicating default units and format) + + +JmolVersion="16.1.9" // (legacy) also 16.1.10 (swingJS) + +bug fix: measurements not preserving explicitly set units in state + - note that if SET MEASUREMENTUNITS is used after a measurement is made, + then that measurement's units are explicitly set +bug fix: InChI from 2D MOL or SDF not recognizing stereochemistry + +JmolVersion="16.1.7" // (legacy) also 16.1.8 (swingJS) + +bug fix: load "" after load DATA .... fails to load string-based file data + +new feature: target = search(atomset) + - predefines a target for repetitive SMARTS searching +new feature: pat = pattern() + - compiles a SMARTS pattern for later use. +new feature: atomset.search(pat) + - search a set of atoms with a precompiled pattern +new feature: search(target, pattern) + - search a predefined target with a precompiled pattern + - example: + x = search({*}) + y = pattern('CCCC') + atoms = {*}.search(y) + print search(x, y) + +JmolVersion="16.1.5" // (legacy) also 16.1.6 (swingJS) + +bug fix: JVXL fails if the first surface voxel is the tenth voxel + -- in that case, the lead compression character for edge data is "-", leading to "--" + at the start of the buffer. But for reasons lost to history (sometime before 2012), + if the string has two minus signs at the start, those are removed. No idea why!!! + +JmolVersion="16.1.3" // (legacy) also 16.1.4 (swingJS) + +bug fix: draw symop +bug fix: symop(13,"angle") and "axisVector" return unexpected results + -- Although all is correct, vector may be downward and associated angle may be negative + -- Switching to convention where vector is upward and all angles are positive + +JmolVersion="16.1.1" // (legacy) also 16.1.2 (swingJS) + +note: switching to even tertiary version number for double-precision-only Jmol-SwingJS +note: switching to odd tertiary version number for legacy Jmol +note: use of Java JmolD.jar (SwingJS) recommended for general use Java version +note: use of SwingJS-compatible JavaScript works but does not yet utilize extensive packaging +note: leading to slower JavaScript loading of the SwingJS (GitHub) version of Jmol +note: release will be at SourceForge for both products + +new feature: adds JME 2-D Editor Tool (Java only; Tools top menu item) + -- drag-drop CDX and CDXML files for 2D rendering using legacy JME + -- convert to/from 3D + -- automatically cleans ill-positioned fragments and "nicknames", such as Ph, OTs, etc. + -- cleans fragments using NCI/CADD development server (cirx) with =smiles2D and =smiles3D + -- leverages JNIInChI to check structures + -- allows creation of 2D MOL and 2D CDXML files from any 2D or 3D model + + new feature: =smiles2d and =smiles3d + -- implements NCI/CADD development server + -- guaranteed 2D and 3D MOL file return + -- uses + =smiles2d as "https://cirx.chemicalcreatures.com/chemical/structure/%FILE/file?format=sdf&get3d=false" + =smiles3d as "https://cirx.chemicalcreatures.com/chemical/structure/%FILE/file?format=sdf&get3d=true" + -- allows for future modification of that pathway back to NCI/CADD home + -- example: + + load $$C(C)Cc2c(OC)c(Cl)ccc2 // 2D + load $$C(C)C1c2c(OC1)c(Cl)ccc2 // 3D ??? + load =smiles2d/C(C)C1c2c(OC1)c(Cl)ccc2 // 2D for sure + +bug fix: Sc in SMILES not read +bug fix: SMILES issue with kukule matching with aaaa smarts +bug fix: mdcrd topology file reader not reading bonding information +bug fix: (JavaScript only) mousemove should not trigger canvas.focus(), as that makes Chrome and Edge jump if the window is partially off screen +bug fix: "...smiles...".find("...smiles...") bug in treating aromatic pattern/target + -- proper behavior is that "c1ccccc1".find("C1=CC=CC=C1") should find nothing, + -- while "C1=CC=CC=C1".find("c1ccccc1") should work. The key here is that the + -- explicit pattern C1C=CC=CC=C1 is a literal request, which does not match generic structure c1ccccc1. + -- But "c1ccccc1" should generally find the aromatic character of the structure "C1=CC=CC=C1". + -- This highlights the issue that SMILES meant to be SMARTS *targets* should neve have aromatic "c". + -- This is because that would require a perfectly equivalent aromatic model in order to be found. + -- Any slight divergence of model causes the SMARTS search to fail. But if the target is in + -- Kekule form, the SMARTS algorithm should be able to match that using whatever algorithm it + -- uses for aromaticity. This bug was causing both searches to fail. + +JmolVersion="14.32.83" // also 15.2.83 +new feature: generalized FILTER "NOH" + -- for 2D structures (MOL, V3000, CDX, CDXML, JME + -- loads the structure as is, without adding H or converting to 3D + -- useful for processes that simply want to create SMILES or InChI + +new feature: generalized FILTER "NOMIN" + -- for 2D structures, loads the structure with added hydrogens but without converting to 3D + +new feature: ChemDraw CDXReader + -- reads CDX files to 2D or 3D + -- only minimal amount of information necessary for loading + -- cleans files of unattached "phantom" atoms + -- recognizes partial bonds and multiple-attachment bonds (e.g. ferrocene) + converting these to partial bonds + -- can be used to generate SMILES, InChI, InChIKey, 2D-MOL files + -- recognizes "either stereochemistry" wavy bond -- translates to InChI ? + +new feature: allowing @1.symop(@2,...) rather than @1.symop(@1, @2,...) + +bug fix: CDXML reader for multiple attachments, other upgrades +bug fix: CDXML reader connectivity for attachments within strings of characters +bug fix: axes do not retain font changes after rotation if both xyz and abc are present +bug fix: addition of H atoms to crystal structures when unit cell is showing + should not add H if it is out of unit cell periodic boundaries and no other + atom is already out of those boundaries. +bug fix: ModelKit not processing MODELKIT ADD @1 "N" {0 1/4 1/4} properly +bug fix: ModelKit not giving correct hover label after dragging to bond for crystal structure +bug fix: deleting atoms with measurements can cause rendering to fail + +bug fix: MMFF minimization using 2D instead of 3D parameters + +JmolVersion="14.32.82" // also 15.2.82 + +bug fix: ModelKit menu may not work on second click of an item +bug fix: V3000 MOL reading deleting H atoms inappropriately +bug fix: V3000 MOL should disregard any nonbonded Xx atom (as from a label) +bug fix: SMILES from model that has been converted from 2D may not show stereochemistry +bug fix: JNI-InChI not set up for 2D stereochemistry (wedge/hash). +bug fix: ChemDraw CDXML reader should allow for atom with invalid valence +bug fix: Java application File...New should not pass status listener on as userStatusListener + +new feature: In ModelKitMode, hovering over an atom and pressing keys can change element + -- for single-character symbols, just press the letter --- c o n etc. + -- for two-character symbols, hold down the shift key for BOTH letters --- NI OS LI etc + -- invalid element names are ignored silently + -- only for non-touchscreen context + +new feature: print {1.1}.find("SMILES","MF") + -- determines the molecular formula based on a SMILES string from the atomset + +new feature: print {1.1}.find("SMILES","MF", true) + -- determines the empirical formula based on a SMILES string from the atomset + +new feature: print "CCCC".find("SMILES","MF") + -- determines molecular formula of a SMILES string + +new feature: print "CCCC".find("SMILES","MF", true) + -- determines the empirical formula of a SMILES string + +new feature: LOAD xxxx.mol FILTER "noHydrogen" (Or just "NOH") + -- loads the model in 2D with no additional hydrogens and no minimization + -- allows for SMILES and InChI creation directly from the 2D model + +new feature: LOAD xxxx.mol FILTER "no3D" + -- loads the model in 2D with no conversion to 3D, particularly for V3000 and ChemDraw + -- no effect for standard 3D models + +JmolVersion="14.32.81" // also 15.2.81 + + +new feature: LCAOCARTOON create "anti-sp3a" +  -- adds a small anti-sense back-lobe to an sp3 cartoon. +  +new feature: LCAOCARTOON create "-anti-sp3a" +  -- with prefix minus sign reverses the direction of the orbital and adds a small back-lobe + +new feature: LCAOCARTOON REVERSE [optional TRUE|FALSE] (default TRUE) +  -- switches the color of two-lobe orbitals such as px and anti-sp3 +  -- as for other LCAOCARTOON parameters, REVERSE persists until changes +  -- for example: + + + load $1-bromo-2-butene; + lcaocartoon @1 reverse false color green yellow "-anti-sp3a"; + lcaocartoon @2 reverse true color green yellow "-anti-sp3a"; + + same as +  + load $1-bromo-2-butene; + lcaocartoon @1 color green yellow "-anti-sp3a"; + lcaocartoon @2 reverse "-anti-sp3a"; +  + same as +  + load $1-bromo-2-butene; + lcaocartoon reverse false color green yellow; + lcaocartoon @1 create "-anti-sp3a"; + lcaocartoon reverse; + lcaocartoon @2 create "-anti-sp3a"; + + +bug fix: modelkit sets boundbox to default value {-10 -10 -10} to {10 10 10} during adding H atoms +bug fix: minimizer does not fire StructureModifiedCallback; now does, with mode 3/-3 (coord change) +bug fix: PDBWriter does not properly identify CONECT records +bug fix: invertStereo fails for alkenes +bug fix: Pymol reader fails in relation to parent groups +bug fix: WebExport fails +bug fix: V3000 reader misreads continuation lines +bug fix: Automatic 2D->3D conversion for multi-model files fails (should minimize just first model) +bug fix: print x.select("properties where properties[2] == 3") does not work, because "properties" being turned into "property" +bug fix: map.format("JSON") should sort map items + + +JmolVersion="14.32.80" // also 15.32.80 + +new feature: write("PNGJ",TRUE) + -- TRUE indicates we want a byte array, not a map + -- besides "PNGJ" can be "ZIP", "JMOL" or "ZIPALL" + -- note that these bytes can be encoded as Base64 using format("base64",write("PNGJ",true)) + +bug fix: set picking rotateBond does not work in touch-only environment +bug fix: various modelkit menu issues + + +JmolVersion="14.32.79" // also 15.2.79 + +bug fix: ModelKit fixes for set picking rotateBond and hover labels when ModelKit is not ON +bug fix: CifReader can skip a line if loop processor is processing non-loop keys starting with "atom_" +bug fix: write("OBJ") does not fail gracefully +bug fix: Frank-click popup menu fails to open + +code: simplified pixelGrabber avoids Java issue causing annoying but caught NPE in sun OffscreenImageSource code + + +JmolVersion="14.32.78" // also 15.2.78 + +bug fix: 15.2.73/14.32.73 state script fix broke Proteopedia hack +bug fix: in certain cases, labels may not be cleared in state by LABEL "" +bug fix: Topology CIF reader fails to bond asymmetric unit atoms +bug fix: set picking invertstereo doesn't allow inversion at times that it should +bug fix: ModelKit increase/decrease charge broken (15.2.28) + +JmolVersion="14.32.77" // also 15.2.77 + +bug fix: CifReader should not totally ignore disorder set -n + -- supports up to 26 (A-Z) new altloc values, one for each symmetry operator + +bug fix: ISOSURFACE CUTOFF +xxxx does not work for volume data surfaces + +JmolVersion="14.32.76" // also 15.2.76 + +bug fix: SET PICKING DRAGMINIMIZE should generally + move attached H atoms even if ModelKit is not open as long as there is no unit cell. + +bug fix: ModelKit icons missing + +JmolVersion="14.32.75" // also 15.2.75 + +bug fix: WRITE ISOSURFACE incorrect for COLOR DENSITY CUTOFF [min,max] + +JmolVersion="14.32.74" // also 15.2.74 + +bug fix: load("cache://....") does not work for cached files +bug fix: ISOSURFACE TYPE "Xsf" [1, "rho1.xsf", 1, "rho2.xsf"] should apply type to both files +bug fix: WRITE ISOSURFACE does not save cutoff range for color density + +new feature: load(filename, asbinary, async) or load(filename, nbytesMax, async) or load(filename, "JSON", async) + -- 3rd parameter TRUE loads file asynchronously in HTML5 + + +JmolVersion="14.32.73" // also 15.2.73 + +bug fix: XSF surface files with over about 267 atoms not recognizing presence of surface data + +bug fix: scripts that include SCRIPT INLINE commands explicitly made from show("state") + + script inline "# Jmol state version 14.32.72 2022-08-17 10:30; + ... + + treated as though they themselves are state scripts, causing the bondingVersion to be + set to 1 upon exit of the script and resulting in unexpected changes in later calls to CONNECT AUTO. + +bug fix: reading file with 0 bytes should indicate EOF (end of file) exception, not wrong format message + +new feature: ModelKit SPACEGROUP "123" or ModelKit SPACEGROUP 123 + -- allows setting of the space group after loading + -- accepts any name of a space group accepted by the spacegroup() function or a number from 1 to 230 + -- note that some space group names have extensions: "6:a", "6:b", "6:c". If these are given + simply as "6" or the number 6, then one of these options will be used. + -- will not set the space group if the current unit cell is not appropriate for the given space group + -- can accept semicolon-separated Jones-Faithful operation listing: "x,y,z;-x,-y,-z" + which can be obtained for any space group by: + + x = spaceGroup(123).spaceGroupInfo.operationsXYZ.join(";") + + or for the current space group by + + x = _M.symmetryOperations.join(";") + + -- using operation lists is recommended over using names, as this covers all possible space groups + and avoids any ambiguity in settings + +new feature: ModelKit SPACEGROUP "123" packed + -- also packs the unit cell after assigning the space group + +new feature: ModelKit PACKED + -- packs the unit cell + +new feature: ModelKit ADD {xxx} PACKED + -- packs the unit cell just for the specified subset of atoms + +new feature: x = spacegroup("123") or spacegroup(123) + -- returns a map containing keys: + HallSymbol + HermannMauguinSymbol + crystalClass + ita + jmolId + operationCount + operationsXYZ + -- note that some space group names have extensions: "6:a", "6:b", "6:c". If these are given + simply as "6" or the number 6, then one of these options will be delivered. + -- if a space group name is given that is not recognized, such as "6:d" or "400", "?" will be returned. + +new feature: x = spacegroup("x,y,z;-x,y,z") + -- similar to spacegroup("123") but finds the space group with this set of operations + +new feature: x = spacegroup("x,y,z&-x,y,z") or spacegroup("&x,y,z;-x,y,z") or spacegroup("x,y,z;-x,y,z&") + -- use of "&" instead of ";" or adding "&" at the beginning or end of the string + -- gives an array of space group names for space groups that have AT LEAST these operators, maybe more + -- for example: + + $ print spacegroup("-x,-y,-z;-x,y,z;-x,-y,z;x,y,-z;-x,-y,-z;-x,-y,z;-y,-x,z+1/2&").format("JSON") + + [ "131","226" ] + +new feature: x = spacegroup(6, [a, b, c, alpha, beta, gamma]) + -- adding an array of unit cell parameters can sometimes help in distinguishing among space group settings, + at least for simple cases where the setting is dependent upon the "unique" axis + +new feature: x = spacegroup("x,y,z;-x,y,z", [a, b, c, alpha, beta, gamma]) + -- adding an array of unit cell parameters to an operator list will ensure that the returned space group + is consistent with the given unit cell. For example, + + $ print spaceGroup("&x,y+1/2,z+1/2", [5,5,5,90,90,90]).count + 64 + + $ print spaceGroup("&x,y+1/2,z+1/2", [5,5,6,90,90,90]).count + 50 + + $ print spaceGroup("&x,y+1/2,z+1/2", [5,5,6,90,90,120]).count + 0 + + because the second case does not include 14 matching cubic groups, and there are no hexaganol groups with this operation. + + +JmolVersion="14.32.72" // P also 15.2.72 + +bug fix: saving state after connect AUTO to ModelKit-added atoms uses H atom radius instead of final atom radius + + +JmolVersion="14.32.71" // P also 15.2.71 + +bug fix: isosurface slab designations "xy" "xz" "yz" "-xy", "-xz" "-yz" etc. are not correct + +new feature: isosurface slab designations "a=" "b=" "c=" "-a=" "-b=" "-c=" "ab" "bc" "ac" "-ab" "-bc" "-ac" + -- like x, y, and z, but for unit cell axes + for example: + load spacegroup 1 unitcell [3 3 3 60 60 60] + isosurface sphere 5.0 slab -a=1 + -- note that negative options and unit cell options are not documented + +new feature: color property xxxx [quoted schemeFileNameOrURL] + -- adds nine more standard color schemes, including five "universally readable" scientific + palettes (batlow,cividis,kry,thermal,viridis) as discussed in https://www.nature.com/articles/s41467-020-19160-7 + as well as four more (inferno,magma,plasma,turbo) that are from the R-Project viridis package + https://cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html + + for example: + + load *1crn + color property atomno "viridis" + + -- scheme palettes are located as *.lut.txt in the src/org/jmol/util/colorschemes/ directory + -- column format .lut.txt (three columns of r g b per line, either 0-255 or 0-1, or four columns where first column is the index 1-256) + -- also reads files using https://... from any online source in binary or ASCII formats: + binary [optional 32-bit header ignored][rrrr...(256)][gggg...(256)][bbbb...(256)] 768 or 800 bytes total + ASCIIt (either three columns of r g b per line, or four columns index r g b) + + for example: + + load *1crn + color property atomno "https://github.com/fiji/fiji/blob/master/luts/cool.lut?raw=true" + + -- filenames also work in the color() function: + + print color("viridis").colors + + print color("https://github.com/Image-Py/imagepy/blob/master/imagepy/data/luts/Others/morgenstemning.lut?raw=true").colors + + -- for more color palette look-up table files, see + https://github.com/fiji/fiji/tree/master/luts + https://github.com/Image-Py/imagepy/tree/master/imagepy/data/luts + https://sites.imagej.net/NeuroCyto-LUTs/luts + + +JmolVersion="14.32.70" // P also 15.2.70 + +bug fix: reading of gzipped jvxl files from PNGJ fails in JavaScript + -- when caching and reading a file from a zip collection, as in JSmol, FileManager does not unzip the gzipped stream + +JmolVersion="14.32.69" // P also 15.2.69 + +bug fix: WRITE GIF with text background black creates speckled pattern. + -- for transparent GIF, use background 0x040404 + +bug fix: SCALE HIDDEN removes units + +new feature: JSmol distribution site/jpge Jmol Point Group Explorer with quizzing and startup options + - https://chemapps.stolaf.edu/jmol/jsmol/jpge/explore.htm?QUIZMODE + - https://chemapps.stolaf.edu/jmol/jsmol/jpge/explore.htm?c60 + - https://chemapps.stolaf.edu/jmol/jsmol/jpge/explore.htm?c60&QUIZMODE + +JmolVersion="14.32.70" // P also 15.2.70 + +bug fix: reading of gzipped jvxl files from PNGJ fails in JavaScript + - when caching and reading a file from a zip collection, as in JSmol, FileManager does not unzip the gzipped stream + + + +JmolVersion="14.32.68" // P also 15.2.68 + +new feature: {atoms}.pointGroup() + - returns point group object for the specified atoms, for example {!_H} + - no limit for number of atoms + +new feature: CALCULATE POINTGROUP {atoms} + - allows subset of atoms to be checked, for example {!_H} + - reports the point group object for the specified atoms + +new feature: draw POINTGROUP {atoms} CENTER xx + - allows subset of atoms to be used, for example {!_H} + + +feature change: draw/show PointGroup no longer has atom number limitation -- just be advised! + +feature change: pointGroupDistanceTolerance and pointGroupLinearTolerance removed from state + +bug fix: MPJmolApp (Molecular Playground) broken by earlier refactoring of JmolPanel (broken in Jmol 14.31.0) + +JmolVersion="14.32.67" // P also 15.2.67 (re-released) + +bug fix: UNITCELL SURFACE {4 1 0 0} specifically fails for x=4; search fo plane/lattice intercept not sufficiently wide +bug fix: unitcell change should be preserved as "reset" value after issuing MOKELKIT SPACEGROUP P1 +bug fix: JME conversion fails for C=C (JME ethylene) + +new feature: JSONReader expanded to include JSON from Symmetry @ Otterbein + +clarification: Note that the + + ModelKit SPACEGROUP P1 + +command "sets" the unit cell to its current value, as modified, for example, by: + + uc=unitcell("a=5.286,b=4.086,c=4.086,alpha=90,beta=90,gamma=90"); + ModelKit unitcell @uc + +That is, anytime after issuing ModelKit SPACEGROUP P1, issuing + + unitcell RESET + +will reset to the unit cell to the value that it was when the spacegroup was set to P1. + + +JmolVersion="14.32.66" // P also 15.2.66 + +new feature: ORCA reading molecular orbitals; preliminary only, minimally tested + + +JmolVersion="14.32.65" // P also 15.2.65 + +bug fix: atom.site not properly incremented with load and appendnew false +bug fix: PWMAT/CIF writers may not remove all duplicate atoms before saving file +bug fix: scale units for SCALE should indicated in the SCALE command itself +bug fix: measurement units defined in MEASURE command should be preserved in state +bug fix: issuing a set measurementUnits command is supposed to reset labels for measurements involving selected atoms + +JmolVersion="14.32.64" // P also 15.2.64 (reissued2) + +new feature: ORCA input/output reader + +bug fix: MMCIF reader broken by 15.2.59 on 2022.06.01 +bug fix: invalid COMPARE with .... atoms {atomset1} and not atomset2 crashes Jmol +bug fix: COLOR ECHO TRANSLUCENT missing space char in state +bug fix: certain SCALE objects appear transparent with antialiasDisplay +bug fix: scale units should be in a state that includes echo "%SCALE" or the SCALE command (reverted in v..65) +bug fix: set FONTSIZE by itself crashes Jmol +bug fix: draw pointgroup does not draw planes + +JmolVersion="14.32.63" // P also 15.2.63 + +bug fix: draw [0 0] [100 100] broken LONG ago +bug fix: (JavaScript only) script callback during animation removes all delays (cyclohexne ring flip) - broken in Jmol 14.32.15 +bug fix: (JavaScript only) ModelKit bond assignment does not refresh automatically, appearing a though nothing happened. + +JmolVersion="14.32.62" // P also 15.2.62 + +new feature: implements ModelKit ROTATE axis1 axis2 {atoms} degrees + -- proper symmetry handling + -- will not move fixed atoms + +bug fix: (JavaScript only) ModelKit atom clicking does not work broken in 14.32.8 + +JmolVersion="14.32.61" // P also 15.2.61 + +new feature: (JavaScript only) implements Jmol._lastAppletID + - indicates that last applet that has taken ownership of the mouse (focus) + +bug fix: load PDB, then write CIF fails +bug fix: PWmatReader fix for "global" data blocks + - see _M.globalPWmatData +bug fix: crystal+dragAtom error for "implicit" planes + +JmolVersion="14.32.60" // P also 15.2.60 + +bug fix: x == y can fail for integers derived from arrays not a script itself + +new feature: Optimade reader + - https://github.com/Materials-Consortia/OPTIMADE/blob/master/optimade.rst + - adds required fields for Jmol: chemical_formula_descriptive,lattice_vectors,dimension_types,cartesian_site_positions,species_at_sites,species,"; + - example: load Optimade::https://optimade.materialsproject.org/v1/structures?filter=nelements=6&page_limit=1 + + load http://optimade.2dmatpedia.org/v1/structures + + load https://nomad-lab.eu/prod/rae/optimade/v1/structures?filter=nperiodic_dimensions=1 + + load https://crystallography.net/cod/optimade + +bug fix: CifReader _shelx_* tags can be skipped, as some are > 1 MB of text + + +JmolVersion="14.32.59" // P also 15.2.59 + +bug fix: OptimadeReader broken +bug fix: OptimadeReader requires Optimade:: prefix + - now checking for "optimade" or "api_version" +bug fix: CifReader should allow ADP definition before atom_site block + + +JmolVersion="14.32.58" // P also 15.2.58 + +new feature: PDB and related types FILTER "ALLHET" + -- by itself, does nothing + -- in conjunction with any other atom filter, such as /=2, *.CA, etc., + passes any HETATM regardless of that filter + +new feature ModelKit ADD C [array of points] + -- efficient adding of many points of the same type + -- for example: + load =ams/quartz 1 packed + polyhedra unitcell {_Si} + pts = {_Si}.polyhedra.all.select("(vertices)").join() + ModelKit ADD N @pts + +new feature: global user variables dropFileType and dropFileName + -- allows detecting filename within a dragDropCallback handler + -- allows setting the file type from within a dragDropCallback handler + -- method will get the file name, though not the data. + -- user variable dropFileType, initially equal to "" + can be changed to the desired file type with, for example, + + set dragdropCallback "jmolScript:if (_ARGS(5).find('config')) dropFileType='pwmat'" + + -- user variable dropFileName will hold the file name so that that can used + to help determine the type. + -- the actual file data are NOT available in Java, though they may be in + JavaScript, since that this point the file will have been cached in JavaScript. + -- user variable doDrop, initially set to TRUE can be set to FALSE to tell + Jmol to not load this file. + -- note that _ARGS() for this callback include: + [ "DRAGDROP", mode(0), x, y, fileName ] + so, in 1-based JmolScript, _ARGS(5) is the fileName; + in 0-based JavaScript, it is argument 4 + +bug fix: NaN should be a decimal and should be testable as such. +but fix: String "NaN" should be considered equal to NaN for direct comparison. +bug fix: some cases of modulation in Incommensurate CIF files missed +bug fix: @1.modulation("O",t) should report as 0-1 scale, unrounded not 0-100 rounded +bug fix: symop() function not distinguishing between point group and space group check "x,y,z" and "C2.1" + causing x = symop("x,y,-z", @3) to fail +bug fix: loading of CIF file with spaces in operations duplicates "x,y,z" + + +JmolVersion="14.32.57" // P also 15.2.57 + +new feature: symop(3,@1,"array") adds "xyzNormalized" + +bug fix: draw SYMOP 40 @1 @5 and show symop 40 @1 @5 should report actual operation, not space group operation +bug fix: draw SYMOP rotation inversion drawing of intermediate not correct; switched to rotation then inversion +but fix: show symop, show spacegroup can have "null" for operations + +JmolVersion="14.32.56" // P also 15.2.56 + +(into Jmol 14 only from precision branch) + +new feature: load spacegroup 213 unitcell [5 5 5 90 90 90] + -- creates an empty structure with the designated space group and unit cell + -- user is expected to match the correct type of unit cell to the given space group. + +bug fix: incommensurately and subsection modulated CIF can miss some parameters (14.31.61) +bug fix: MMCIF files with single entries rather than loops could fail +bug fix: MMCIF files with DSSR or RNA3D extensions could fail. + +bug fix: DRAW SYMOP broken + +JmolVersion="14.32.55" // P also 15.2.55 +(into Jmol 14 only from Jmol-SwingJS precision branch) + +feature change: axes POSITION [x y] "xyz" with symmetry + -- crystal structures only + -- switches to a second small axis set that is Cartesian + -- [x y] or [x y%] screen position + -- uses the specified label for the axes labels + -- label can be one, two, or three characters, for showing just x, + just xy, or xyz, respectively + -- cleared using AXES POSITION OFF (axes on unit cell only) + -- replaced with abc using "abc" instead of "xyz" (with no axes on unit cell itself) + +new feature: axes POSITION [x y] "xyzabc" + -- same as "xyz" but still shows unitcell axes + +new feature: global user variable dragDropFileType + -- allows setting the file type from within a dragDropCallback handler + -- method will get the file name, though not the data. + -- user variable dragDropFileType, initially set to "" can be set to the desired file type + -- user variable doDrop, initially set to TRUE can be set to FALSE to ignore the drop + +bug fix: deleting atoms from PDB fails +bug fix: ModelKit dragAtom does not update measurements +bug fix: DataManager can crash if atoms are created after making atom property arrays +bug fix: axes position show allow unit cell axes to be turned off + -- axes position [60 60] "abc" // just small abc + -- axes position [60 60] "xyz" // just small xyz + -- axes position [60 60] "xyzabc" // small xyz and unit cell abc + -- axes position off // just unitcell +bug fix: load append PWMAT file into structure (appendNew false) fails because no symmetry operators declared + +JmolVersion="14.32.54" // P also 15.2.54 + +(into Jmol 14 only from precision) +bug fix: COMPARE {atomset} ATOMS {at1} [coord1] {at2} [coord2] .... fails +bug fix: JavaScript negative int double missing minus sign + + +JmolVersion="14.32.53" // P also 15.2.53 + +(into Jmol 14 only from precision) +bug fix: PWmatReader fails to adjust atom properties for skipped atoms +bug fix: PWmatReader fails to retain properties after ModelKit ADD ... +bug fix: adding an atom removes atom properties +bug fix: filter "*.CA" does not work + +JmolVersion="14.32.52" // also 15.2.52p + +(into Jmol 14 only from precision) +bug fix: hkl(0 0 0) crashes Jmol (MathExt line 2869) +bug fix: openStringInline may have null htParams (Viewer line 3184) + +new feature: WRITE "pwslab" (cmdext line 4154 and others, propman line 1204, PWMATWriter line 57) + - like WRITE "pwmat" but does not pack {x y 0} layer to {x y 1} + + +JmolVersion="14.32.51" // also 15.2.51 + +bug fix: loading string line does not check for filter "filetype=xxx;" +bug fix: LOAD ... FILTER "NOPACK" not working properly (and never did?) +bug fix: unitcell scale {1/2 1 1} fractional should work +bug fix: LOAD ... SUPERCELL should set space group to P1 +bug fix: allow set picking dragMolecule with P1 space group + +code: JC.globalBooleans consolidated + +JmolVersion="14.32.50" // (b) also 15.2.50 + +bug fix: ModelKit not initializing to set picking assign_atom_C +bug fix: PWmatReader failing with trailing garbage + + +new feature: load [some crystal structure] filter "SLABXY" +new feature: load [some crystal structure] filter "POLYMERX" + -- loads a crystal structure as a slab or polymer + -- packs only in the periodic directions + -- compatible only with P1 symmetry + -- load =ams/quartz 1 packed;load inline @{write("CIFP1")} {3 3 1} filter "SLABXY" + +new feature: nonperiodic axes for slabs and polymers now dotted + +bug fix: OptimadeReader for slabs and polymers +bug fix: PWMatReader fix for header garbage + +code: Symmetry refactoring + +JmolVersion="14.32.49" // also 15.2.49 + +new feature: ECHO @1 + - sets the echo at atom 1 + +new feature: SCALE @1 + - sets the echo at atom 1 + - scale moves with atom and is correct even for set perspectiveDepth TRUE + +bug fix: SCALE command can crash Jmol - null pointer exception in ECHO +bug fix: background SCALE yellow does not cover full range of scale +bug fix: slow JavaScript LOAD FILTER due to debug comment left in + +JmolVersion="14.32.48" // also 15.2.48 + +new feature: Optimade reader + - https://github.com/Materials-Consortia/OPTIMADE/blob/master/optimade.rst + - requires qualifier Optimade:: because there is no identifying characteristic of the return + - example: load Optimade::https://optimade.materialsproject.org/v1/structures?filter=nelements=6&page_limit=1 + +new feature: zoom(to) UNITCELL + -- all options available as for atoms + +new feature: center UNITCELL + +bug fix: issues with PWMATWriter unitcell offset +bug fix: allow right-click option for popup_menu binding + +bug fix: load "" with qualifier xxx:: does not carry over qualifier + + +JmolVersion="14.32.47" // (b) also 15.2.47 + +bug fix: ModelKit add "Si" {0/1 0 0} packed; save state s1 + -does not save site change in state + +bug fix: removing difference between set fx, fux + -too confusing + -no differences for get, only set. + -poorly documented + +JmolVersion="14.32.46" // also 15.2.46 + +bug fix: load PDB filter "BMCHAINS=a" should work -- (lower-case issue) +bug fix: set structureModifiedCallback for attempt to move fixed atom should report "FAILED" +bug fix: {assoc array}.pivot.pivot() not working + +new feature: hkl(1 0 0 0.3) to produce plane offset by 0.3 Angstroms from the origin. + + +JmolVersion="14.32.45" // also 15.2.45 + +bug fix: PDBReader fails to treat chain case for filter biomolecule +bug fix: PDBReader can fail when making connections with filter biomolecule +bug fix: attempted LOAD of nonexistant PNGJ file (*.png) can crash Jmol +bug fix: CIFWriter and PWMATWriter do not round coordinates very close to 1.0000 + +new feature: SCALE command + -- a special category of ECHO + -- also ECHO "%SCALE (units)" + -- draws a |---| scale in the specified location + -- adjusts by decades -- 0.01, 0.1, 1, 10, 100, etc. + -- SCALE ON + -- turns scale on at bottom left + -- units dynamic, corresponding to SET measurementUnits + -- SCALE OFF + -- turns scale off + -- SCALE (units) + -- optional fixed units, where (units) can be one of: + "nanometers" ("nm") + "picometers" ("pm") + "angstroms" ("a" or "ang") + "bohr" ("atomicunits" or "au") + -- when perspectiveDepth TRUE, is for center of visible depth based on screen width + -- like FRANK, persists through file loading and ZAP + -- additional relevant options same as for SET ECHO command + -- examples: + SCALE angstroms bottom center + +new feature: COLOR SCALE ... + -- sets the color of the scale + +new feature: FONT SCALE ... + -- sets the font of the scale + + +new default properties: Jmol application (Java and JavaScript) adds two additional preferences: + -- antialiasDisplay TRUE + -- measurementUnits "angstroms" + -- PreferencesDialog will set these as "JmolDefaults" + +new feature: ECHO "%SCALE (units)" + -- same as SCALE (units) ... + + +JmolVersion="14.32.44" // also 15.2.44 + +bug fix: PDB reader with biomolecule filter does not properly select chains + -- broken in 14.32.25 + -- not relevant to mmCIF or MMTF + +bug fix: AMPAC archive ZMatrix reader fix + -- was not reading ZMatrix, only Cartesian listing + +bug fix: CONNECT DELETE ... + -- initial DELETE syntax should be OK (to be compatible with older Jmol versions) + +bug fix: POLYHEDRA COLLAPSED ... + -- initial COLLAPSED syntax without FaceOffset should be OK (to be compatible with older Jmol versions) + +bug fix: SET ECHO BOTTOM LEFT; ECHO "%SCALE" when perspective depth true + -- should be for center of visible depth based on screen width + +bug fix: ModelKit DELETE ... should adjust {thismodel}.site.all + +buf fix: better check for deleted atoms during atom selection + + +JmolVersion="14.32.43" // also 15.2.43 (second upload) + +bug fix: duplicate atom number after delete/add + +new feature: set echo bottom left; ECHO "%SCALE" + -- draws a |---| scale in the specified location + -- uses measurementUnits (angstroms, pm, nm, or au (Bohr)) + -- adjusts by decades -- 0.01, 0.1, 1, 10, 100, etc. + +new feature: axes POSITION [x y] "xyz" + -- crystal structures only + -- adds a second small axis set that is Cartesian + -- [x y] or [x y%] screen position + -- still shows unitcell axes + -- uses the specified label for the axes labels + -- label can be one, two, or three characters, for showing just x, + just xy, or xyz, respectively + -- cleared using AXES POSITION OFF (axes on unit cell only) + -- replaced with abc using "abc" instead of "xyz" (with no axes on unit cell itself) + +optimization: faster loading of very large (>100K atom) files + +JmolVersion="14.32.42" + also 15.2.42 + +new feature: set doublePrecision + -- for JavaScript specifically, particularly important for crystal structure + -- allows JavaScript to operate in full double precision mode with no rounding + -- returns to pre-14.3.5 behavior + -- disables all float/double reconciliation in Java and JavaScript + -- CAUTION! May result in state loading problems between Java and JavaScript + -- CAUTION! May result in problems loading older state scripts + -- CAUTION! PNGJ images may not load properly + +new feature: x = {atoms}.within(distance,[points]) + -- returns the subset of {atoms} that are within the specified distance + of any point in the array of points. + -- allows tracking groups of atoms by position after reloading files in a way + that might change atom indexes + +new feature: x = {atoms}.within(distance,{otheratoms}) + -- returns the subset of {atoms} that are within the specified distance + of any atom in {otheratoms}. Atoms in {otheratoms} are excluded. + -- compare to within(distance, {atoms}), which does not exclude other atoms + or within(distance, TRUE, {atoms}), which excludes other atoms but does not limit + return to the {atoms} subset. + + -- for example, easy check for atoms that have the same position using distance = 0.001 + +bug fix: set appendNew false; load append ... crystal structure ... + should transform atoms to cartesian coordinates and set space group to P1 + + +JmolVersion="14.32.41" + also 15.2.41 + +bug fix: crystal set picking dragatom fails for some space groups + +bug fix: SimpleUnitCell and PWMatReader not copied from Jmol-SwingJS + + + +JmolVersion="14.32.40" + also 15.2.40 + +bug fix: set picking dragatom with crystal structure fails to constrain to line intersecting two planes + +bug fix: ModelKit UNITCELL after atom deletion does not move all atoms + +bug fix: PWMatReader should propagate site data for property_pwm* throughout sites + when lattice or supercell is given in LOAD command + +bug fix: ModelKit ASSIGN BOND incorrectly reports bond index to callback + +JmolVersion="14.32.39" + also 15.2.39 + + +cleaner start for ModelKit xtal builder from scratch + +load =ams/quartz 1;delete *; +ModelKit add "P" {1/4 1/4 1/4} + +load =ams/halite 1;delete *; +ModelKit add "P" {0 1/2 0} + + + +JmolVersion="14.32.38" + also 15.2.38 + +bug fix: CrystalReader should recognize slab for topond output + +bug fix: BilbaoReader fix for comments + +bug fix: PWMatReader fix for broken positions when have constraints +bug fix: PWMatReader not loading constraints properly +bug fix: Resolver not recognizing PWMatReader options +bug fix: PWMATWriter not removing packing atoms in JavaScript +bug fix: PWMATWriter not rounding positions when very close to twelfths +bug fix: set picking dragatom with crystal not working due to same issue + +bug fix: LOAD ... SPACEGROUP "x,y,z;-x,-y,-z" broken when SET DEBUG TRUE + +JmolVersion="14.32.37" removed +JmolVersion="14.32.36" removed + + +bug fix: PWMatWriter not removing packing atoms in JavaScript +bug fix: PWMatWriter not rounding positions when very close to twelfths +bug fix: PWMatReader not loading constraints properly + +bug fix: CrystalReader should recognize slab for topond output + +JmolVersion="14.32.35" + also 15.2.35 + +bug fix: load "" PACKED broken in 14.32.33 + +JmolVersion="14.32.34" + also 15.2.34 + +bug fix: PWMatReader constraints default 1 1 1 +bug fix: PWMatReader resolver fix +bug fix: state saving after crystal ModelKit changes +bug fix: load SMILES ... should allow FILTER "..." +bug fix: last model set should be able to be zapped (untested) + +new feature: To get around CIR issue with missing imine stereochemistry: + -- {thismodel}.inchi("SMILES/imine") will convert InChI N to [17C] or [17c] + with [5H] to preserve stereochemistry when loading. + -- MolReader will convert [17C,17c] to imine N automatically + and remove any [5H] + -- tested on about 1000 compounds with 55 that were failing InChiI -> SMILES -> InChI round trip + +new feature: SMILES generator will NOT remove [H] from nitrogens. + +JmolVersion="14.32.33" + also 15.2.33 + +bug fix: ModelKit crystal constraint user dragAtom might lock atoms -- fixed +bug fix: InChI->SMILES generates ...N(=O)=O rather than ...[N+](=O)[O-] for nitro compounds +bug fix: Jmol not recognizing MENU files for drag-drop, instead treating them as script files, + which disables Jmol due to the redefinition of the COLOR command (use of @COLOR = in menu files) +bug fix: PWMatReader flexibility for whitespace before headings + + +JmolVersion="14.32.32" + also 15.2.32 + +bug fix: load ... filter "biomolecule" should not be reporting symmetry operators in menu +bug fix: SpaceGroupInfo for filter "biomolecule" should not report CIF2 style translation + +bug fix: "fixed" selection should not require explicit ModelKit HIDDEN +bug fix: "fixed" selection should not fix atoms due to colinear axes +bug fix: hidden ModelKit should not display CH4 by defuault after ZAP + + +JmolVersion="14.32.31" + also 15.2.31 + +bug fix: dragAtom screen coordinate transform not transformed correctly into 3D positions + +bug fix: select within(BOUNDBOX, atoms) can skip edge or corner atoms that were used to define it + -- e.g. load =ams/quartz 1 packed; select within(BOUDNBOX, _O) + +bug fix: DRAW SPACEGROUP missing last operation + +new feature: set picking dragAtom TRUE now recognizes symmetry for crystal structures + -- drags atoms only if symmetry-allowed + (that is, on an axis or plane) + -- does not move atoms if they are in fixed special positions + +new feature: {1/2 1/2 1/2}.symop("invariant") + -- similar to @@1.symop("invariant") + -- returns an array of symop numbers for axes, planes, and centers of inversion + for which this position is invariant. + +new feature: symop(2, "invariant") + -- delivers an object that describes the invariant nature of this symmetry operator. + -- for a plane, returns {a, b, c, d} for that plane's equation ax + by + cz + d = 0; + -- for an axis, returns [point, vector], where point is on the line, and vector is the unit vector for the axis + -- for a center of inversion or an n-bar axis, returns the center point + -- for any operation involving a translation, returns "none" + -- for the identity operation, returns "identity" + -- see also @@1.symop("invariant"), + which delivers an array of symop numbers for axes, planes, and centers of inversion + for which this atom's position is invariant. + +new feature: @@1.symop(2, "invariant") + -- same as symop(2, "invariant"), except adjusts return to be through the given atom + -- presumes the atom is in a special position and not fixed + -- returns the "true" plane or axis or center of inversion, not just the one for the generating operator + +new feature: {1/2 1/2 1/2}.symop(2, "invariant") + -- same as @@1.symop(2, "invariant"), but for a point rather than an atom + -- adjusts return to be through the given point + -- presumes the point is in a special position and not fixed + -- returns the "true" plane or axis or center of inversion, not just the one for the generating operator + + + +JmolVersion="14.32.30" + also 15.2.30 + +new feature: PWmatReader default to show centered magnetic vectors as SET VECTORSCENTERED; VECTORS 0.2; + +bug fix: CALCULATE SPACEGROUP should not limit atoms to within unitcell, just unitize and remove duplicates + +bug fix: ModelKit HIDDEN should implicitly set modelKitMode TRUE + +new feature: set picking dragAtom TRUE now recognizes + +new feature: ModelKit ADD @1 +new feature: ModelKit ADD @1 PACKED + -- complete the set of atoms in a unit cell, possibly changing element + +new feature: ModelKit ADD @1 "N" +new feature: ModelKit ADD @1 "N" PACKED + -- complete the set of atoms in a unit cell, possibly changing element + -- will not change space group + +new feature: ModelKit ADD "Cl" {1/2 1/3 1/3} +new feature: ModelKit ADD "Cl" {1/2 1/3 1/3} PACKED + -- adds a new atom at the specified position + -- complete the set of atoms in a unit cell + -- will not change space group + +new feature: ModelKit ADD @1 "Cl" {1/2 1/3 1/3} +new feature: ModelKit ADD @1 "Cl" {1/2 1/3 1/3} PACKED + -- adds a new atom at the specified position and connects it to @1 + -- complete the set of atoms in a unit cell + -- will not change space group + +new feature: ModelKit ADD/DELETE/MOVETO + -- all operable automatically from the ModelKit menu + -- enabled by the presence of symmetry + -- movement is constrained to "invariant" symmetry elements (axes or planes) + -- use ModelKit SPACEGROUP "P1" to disable all constraints + +new feature: select FIXED + -- selects all atoms that are locked by symmetry + +new feature: MINIMIZE now works (minimally) with a crystal structure. + -- use load ... {444 666 1}; minimize + -- no change in space group + -- asymmetric unit will be minimized with propagation to symmetry-related atoms + -- minimally effective; mostly to demonstrate constrained positions + + +JmolVersion="14.32.29" + also 15.2.29 + +bug fix: JavaScript for write CIFP1 fails for Math.abs(Integer.MIN_VALUE) < 0 in Java +bug fix: ModelKit add {*} packed not packing + +new feature: moveto AXES [-][ab, bc, ca, ba, cb, ac][1, 2, 3, 4] + -- similar to moveto AXES [a, -a, a1, -a1, a2, a3, a4, b, -b, ...] + -- allows views perpendicular to any unit cell face + -- XY1 (where X and Y are one of [a,b,c]) presents the XY face in the plane of the screen + with the origin on the bottom left, X to the right, and Y pointing up + -- XY2, XY3, and XY4 rotates the origin clockwise around the four corners: top left, top right, bottom right + -- default is 1, so ab is the same as ab1 + -- for rectilinear unit cells in particular, this equates: + AXIS bc2 with AXIS a and AXIS a1 + AXIS ca2 with AXIS b and AXIS b1 + AXIS ab and AXIS ab1 with AXIS c and AXIS c4 + + +JmolVersion="14.32.28" + also 15.2.28 + +bug fix: PWMAT reader/writer fixes + +new feature: PDB alpha-carbon-only sheet structure enabled + +new feature: ".pivot" function no longer needs ".all" for atom properties + -- print {*}.elemNo.pivot same as print {*}.elemNo.all.pivot + +new feature: ModelKit ADD @2 [PACKED] + -- completes the equivalent positions for an atom in a crystal + -- will add only as many atoms as necessary + -- updates {thismodel}.site values + -- optionally packs the unit cell + +new feature: ModelKit ADD @2 "C" [PACKED] + -- completes the equivalent positions for an atom in a crystal + -- will add only as many atoms as necessary + -- transforms all specified atom sites to this element + -- updates {thismodel}.atomName values ("O2" becomes "C2", for instance) + -- updates {thismodel}.site values + -- optionally packs the unit cell + +new feature: ModelKit ADD "C" point [PACKED] + -- completes the equivalent positions for an atom in a crystal + -- will add only as many atoms as necessary + -- positions based on the symmetry of the specified point + -- updates {thismodel}.atomName values ("O2" becomes "C2", for instance) + -- updates {thismodel}.site values + -- optionally packs the unit cell + +new feature: x = data("xxx*") + -- returns an array of data keys starting with "xxx" + -- for instance, x = data("property_MYKEYS_*") to retrieve all your custom keys + -- then y = data(x[1]) would return the data for the first item in the array of keys + +JmolVersion="14.32.27" + also 15.2.27 + +new feature: plane designations "ab" "ab1" "ac "ac1" "bc" bc1" short for {0 0 1/1 0} {0 0 1/1 c} etc. + +new feature: ModelKit MOVETO @1 {1/2 0 0} + -- moves the atom only if its invariant symmetry is unchanged (that is, doesn't create or destroy atoms) + +new feature: ModelKit FIXED VECTOR point1 point2 + -- constrains atom dragging to a given vector + -- atom will still not move if symmetry does not allow it + -- replaces any fixed plane + -- cleared by changing the value of set modelKitMode + +new feature: ModelKit FIXED PLANE plane + -- constrains atom dragging to a given plane + -- atom will still not move if symmetry does not allow it + -- replaces any fixed vector + -- cleared by changing the value of set modelKitMode + +new feature: ModelKit FIXED NONE + -- removes constraint + +new feature: @1.symop("invariant") + -- delivers an array of integers, the symmetry operator indexes other than identity + (numbers 2-N) for which the specified atom is unchanged in position when operated upon + -- for example, the position of an atom on a rotation element or on a mirror plane is unchanged + upon rotation or reflection, respectively + -- used internally to determine when ModelKit MOVETO can allow a change in position + +new feature: @1.pointgroup("spacegroup") + -- same as pointgroup("spacegroup", @1) + -- consistent with @1.spacegroup() + + +JmolVersion="14.32.26" + also 15.2.26 + +bug fix: CIFWriter fails for JavaScript/legacy; uses String.isEmpty() -- not included in legacy transpiler runtime JavaScript +bug fix: CIFWriter for CIFP1 should accept any atoms, unitizing them, and not limit itself to atoms to within(unitcell) + +bug fix: 3x3 and 4x4 matrix multiplication of a vector of points not working + +new feature: {atoms}.find("equivalent") { + -- returns all atoms with the same .site value as any of the atoms specified + -- these atoms may or may not be within the unit cell + -- returns at least all atoms in {atoms} + +new feature: {point}.find("equivalent") { + -- returns all equivalent positions by applying all symmetry operators to this point + -- these points will be only WITHIN the unit cell -- fractional coordinates [0,1) + -- may or may not return {point} itself + +new feature: {point}.find("equivalent", "packed") { + -- returns all equivalent positions by applying all symmetry operators to this point + -- these points will include points in the packing layer around the cell -- fractional coordinates [0,1] + -- may or may not return {point} itself + + +new feature: UNITCELL OFFSET @1; UNITCELL OFFSET {atoms} + -- quick offset to a specific atom or center of atoms + +new feature: LOAD .... SPACEGROUP "Hall:P 2y" + -- allows prefix "Hall:" to specify Hall notation + -- allong with SPACEGROOUP 3 or SPACEGROUP "10:b" + -- allows for experimentation with different space groups + +new feature: ModelKit ASSIGN SPACEGROUP "P1" + -- assign P1 to the space group for the selected model atoms (or model, if no atoms are selected) + -- can be reset (in most cases) using ModelKit ASSIGN SPACEGROUP + +new feature: ModelKit DELTE {atoms} + -- deletes all symmetry-equivalent atoms (all atoms with the same .site value as any atoms in this set) + -- use x = {atoms}.find("equivalentAtoms").length to check how many atoms this will be + +new feature: {atoms}.distance() + -- intuitive, useful + -- same as {atoms}.distance({0 0 0}) + -- note that {atoms}.length reports the number of atoms in the set + +new feature: {1 2 3}.distance() + -- consistent with {atoms}.distance() + -- same as {1 2 3}.distance({0 0 0}) + +feature change: {1 2 3}.length + -- was the useless "-8" and nonintuitive + -- same as {1 2 3}.distance({0 0 0}) + -- intuitive, expected -- like string, array, associative array, byte array, [{...}] (bond set), and ({...}) (atom set). + -- note that {1 2 3}.type reports "point", which is more intuitive as well + -- {1 2 3}.size and {1 2 3}.count still report -8 + +JmolVersion="14.32.25" + also 15.2.25 + +bug fix: PDB/mmCIF/MMTF biomolecule filter fails for simple chain selection (7OJP) + +bug fix: MMTF reading of biomolecule filter fails to bond atoms, resulting in no display + +bug fix: axes labels for origin not shown for unitcell + +bug fix: additional work on UNITCELL SURFACE + +new feature: DRAW UNITCELL xxx LATTICE {na nb nc} + -- draws a set of lattice points, including lattice centering + -- mostly for debugging; possibly useful + +new feature: DRAW INTERCEPT UNITCELL xxx LATTICE {na nb nc}... HKL .... + -- draws as set of lattice points that are on a given plane + -- mostly for debugging; possibly useful + +bug fix: UNITCELL SURFACE validation on silicon, iron, quartz + -- all typical Miller planes (1/0/-1, 1/0/-1, 1/0/-1) checked for + standard gamma >= 90, proper right-hand-rotation axes + using FCC, BCC, and primitives + -- can be followed by: u = unitCell(); LOAD "" FILL @u; UNITCELL @u + +new feature: SAVE STATE + -- by itself, loads the UNDO stack and clears the REDO stack + -- sets undoAuto FALSE, turning off Java Application Console automatic undo/redo + -- process is: SAVE STATE...UNDO REDO ...SAVE STATE...SAVE STATE...UNDO...UNDO... + +JmolVersion="14.32.24" + also 15.2.24 + +bug fix: ChemDraw CDXML reader was not tested in 15.2.23 + -- now loads proper compounds with (common) protecting groups. + -- 2D -> 3D enabled; adds "Nickname" nodes (minimized as fluorine) + +undocumented feature: filter "*.ca;/=3"; + +bug fix: bonds to transparent atoms should be flat ends, not open + +new feature: SET UNDOAUTO FALSE|TRUE + -- default value TRUE, enabling automatic saving of the state only in the Java application + -- setting false turns off Java application console automatic undo/redo + and allows user-defined undo/redo states + -- disabled by SET PRESERVESTATE FALSE + +new feature: SET UNDO + -- saves the current state on the UNDO stack. + -- clears the REDO stack + -- sets undoAuto FALSE + +new feature SET UNDOMAX n + -- sets the maximum number of saved states (default 20) with SET defaultAuto FALSE + -- setting this value to 0 clears both the UNDO and the REDO stacks + +new feature UNDO + -- when undoAuto is true, in the Jmol application console only, carries out an undo action + -- when undoAuto is false, or not in the Java application, restores the most recent + state saved using SET UNDO + +new feature REDO + -- when undoAuto is true, in the Jmol application console only, carries out a redo action + -- when undoAuto is false, or not in the Java application, restores the most recent + state prior to an UNDO operation + +new feature: SHOW UNDO + -- reports if undoAuto is true or false, and if it is false, reports the sizes of the user + UNDO and REDO stacks. + +new feature: ModelKit UNDO/REDO + -- a separate undo/redo stack specifically for the ModelKit + -- undoes or redoes a ModelKit action + -- disabled by SET PRESERVESTATE FALSE + + +new feature: UNITCELL SURFACE {h k l} [height | scale%] [offset or offset%] [TOP] + -- operates on current unit cell, so for repeat use, use unitcell reset + -- allows creating a unit cell based on a Miller plane + -- perpendicular to plane, with u = b/k - a/h, v = c/l - b/k (generally) + -- optional height in Angstroms or scaled relative to hkl distance to origin + -- optional offset in Angstroms or percent of unit cell height + -- default offset sets bottom of unit cell at origin + -- optional TOP parameter measure from the top of the new unit cell + -- examples: + + load =ams/halite 1 packed + unitcell reset;unitcell surface {1 1 1} 100% // between {0 0 0} and Miller plane + unitcell reset;unitcell surface {1 1 1} 100% // between {0 0 0} and Miller plane + unitcell reset;unitcell surface {1 1 1} 100% 50% // centers unit cell on Miller plane + unitcell reset;unitcell surface {1 1 1} 50% 150% // half-height cell centered on Miller plane + unitcell reset;unitcell surface {1 1 1} 100% -100% // top on {0 0 0} + unitcell reset;unitcell surface {1 1 1} 100% @{hkl(1 1 1).w} // same as 100% -100% + unitcell reset;unitcell surface {1 1 1} TOP // same as 100% -100% + unitcell reset;unitcell surface {1 1 1} 10 TOP // same as 50% -100% + +JmolVersion="14.32.23" + also 15.2.23 + +bug fix: LOAD filter for rejecting an element, for example, "!_H", not functional + + +JmolVersion="14.32.22" + also 15.2.22 + +new feature: Jmol*.jar upgraded to Java 8. + -- Note, however, that the legacy transpiler for 14.* versions will not handle Java8+ syntaxes. + -- so no switch(String) and no catch(Exception | Exception | Eception) and no try(resource) {...} + +bug fix: Jmol.jar/JmolData.jar -i silent flag not respected for CIR resolver resolution messages + +bug fix: JmolData.jar missing net.sf.jniinchi classes + +bug fix: ModelKit ASSIGN ATOM "Xx" {x y z} adds new atom "H", not "dummy atom" Xx + +bug fix: PDB/mmCIF/mmTF CONECT records between chains in different BIOMT blocks must be removed + -- sets the distance limit to 5 Angstroms, just to allow for hydrogen bonds + +new feature: {associative array}.pivot() + -- switches keys for values + -- result is an associative array of lists + -- allows quick filtering based on values of a simple associative array + -- for example: + + load =2fk3 + print {*}.chain.all.pivot.pivot() + +new feature: {associative array}.pivot("count") + -- switches keys for values and reports count of each list, not the list itself + -- allows quick filtering based on values of a simple associative array + -- for example: + + load =2fk3 + print {*}.chain.all.pivot.pivot() + +new feature: {associative array}.select("... WHEREIN VALUE...") + -- "WHEREIN VALUE" allows section of associative array items by value + -- especially handy as [array].pivot.pivot() + -- for example: + + load =1d66 + print {*}.chain.pivot.select("* wherein value > 40") + +new feature: {associative array}.select("... WHEREIN KEY...") + -- "WHEREIN KEY" allows section of associative array items by key + -- especially handy as [array].pivot.pivot() + -- can be combined with VALUE checke + -- for example: + + load =1d66 + print {*}.chain.pivot.select("(*) wherein key = 'B' or key = 'A' ").sum + + + +JmolVersion="14.32.21" + also 15.2.21 + +bug fix: CENTER {0 0 0} broken in 15.2.20 +bug fix: write PNGJ, ZIP, JMOL do not save internal path to files dropped in + Jmol/Java or otherwise having explicit type:: prefixes + +JmolVersion="14.32.20" + also 15.2.20 + +bug fix: load FILTER "bmchains" not working as advertised. + -- for PDB, mmCIF, MMTF + -- removes duplicate chain ids when applying BIOMOLECULE option + -- bmchains or bmchains=0 will append symmetry operator > 1 to chain id, so {A B A B A B} becomes {A B A2 B2 A3 B3} + -- bmchains=1 will increment chain ids past last identified chain, so {A B A B A B} becomes A B C D E F + -- bmchains=5 will increment chain ids starting 5 letters after last identified chain starting , so {A B A B A B} becomes A B G H I J + -- bmchains=a will increment chain ids starting with 'a' + -- overflow of [A-Za-z] will fall back to bmchains=0 option (load =1AUY filter "biomolecule 1;bmchains=1") + +bug fix: atom.fxyz, .uxyz should follow changes in unit cell size involving supercells. + +bug fix: CifWriter atom_site_label not unique + +new feature: UNITCELL FILL {na nb nc} + -- simple integer multiple unitcell option similar to RANGE {555 ijk 1} + (meaning show block with lines for each contained unit cell) + +new feature: UNITCELL SUPERCELL {na nb nc} + -- simple integer option similar to RANGE {555 ijk 0} + (meaning show as one large unit cell) + +new feature: {*}.find("spacegroup") -- discovers the space group for a model + -- using the current unit cell, finds a compatible spacegroup or returns P1 + -- uses a novel algorithm that efficiently scans all known operators to + rapidly iterate to the only compatible spacegroup for a given unit cell + -- automatically reduces to the parent unit cell if currently a supercell + -- assumes the specified atoms are within(unitcell) or packed as (cell=555) + -- returns one of 531 known space group settings as a map including keys: + + HallSymbol + HermannMauguinSymbol + basis + crystalClass + ita + jmolId + operationCount + operationsXYZ + supercell + unitcell + + -- returned basis value is the asymmetric unit atom set for this setting + -- returned supercell value is a point {na nb nc} indicating the block of + unit cells found, or {1 1 1} if no supercell was found. + -- use UNITCELL FILL @{x.supercell} to switch to a block of the smaller unitcells + -- or UNITCELL SUPERCELL @{x.supercell} to return to this supercell + -- return value unitcell is a parameter set [a b c alpha beta gamma va vb vc] + indicating the exact unit cell described by the supercell, if one was found + -- missing packed atoms or additional extraneous atoms will return P1 + -- will return P1 if the space group could not be determined. + +new feature: CALCULATE SPACEGROUP + -- report the space group for the current model + +new feature: CALCULATE SPACEGROUP {atoms} + -- report the space group for the specfied atoms + +new feature: ModelKit ASSIGN SPACEGROUP + -- find and set the space group for this model + -- models without unit cells will be given a nominal P1 space group with simple 10-Angstrom cubic cell + + + + +JmolVersion="14.32.19" + also 15.2.19 + + new feature: JSpecView Java application allows for headless batch script execution + + java -jar jspecview.jar -script "load \"C:/temp/10.zip\";write difdup \"testzip.jdx\";" -nodisplay + java -Djava.awt.headless=true -jar jspecview.jar -script "load \"C:/temp/10.zip\";write difdup \"testzip.jdx\";" + +JmolVersion="14.32.18" + also 15.2.18 + +-- Build 14.32.17 removed -- crystal structures broken due to bad build + +bug fix: GaussianReader tensor "csa" broken +bug fix: show UnitCell does not reflect UNITCELL command shifting or scaling +bug fix: axes incorrect for scaled unitcell + +undocumented: ELLIPSOID SET option + -- ellipsoid SET "csa" scale 0.5 + +new feature: write CIF "t.cif" + -- writes CIF with symmetry + -- reverts to P1 symmetry if individual atoms have been added + or unitcell has been moved to non-integral position or adjusted in size + +new feature: write CIFP1 "t.cif" + -- writes CIF as P1 symmetry, only including the periodic atoms + +new feature: getProperty unitCellInfo + -- for the current unitcell, including any offset + -- includes properties matCtoF, matFtoC, params, vectors, volume + +new feature: select within(unitcell) + -- uses the current unitcell, selecting atoms with fractional coordinates + within the range [0, 1) + -- effectively returns the set of points that are periodic + +new feature: select within(unitcell, u) + -- where u is the result of the unitcell() function + (that is, an array [o a b c] of origin and three vectors) + -- uses the specified unitcell, selecting atoms with fractional coordinates + within the range [0, 1) + + +JmolVersion="14.32.17" + also 15.2.17 + +bug fix: Show $s2 for isosurface reports first isosurface only +bug fix: _M.unitCellParams does not update after modifying the unit cell +bug fix: GausssianReader Tensor "csa" broken +bug fix: ScriptEditor many issues +bug fix: ... HKL {1 1 1} works, but HKL 1 1 1 fails, if not last in a command + +new feature: getproperty("atomInfo").select("fx,fy,fz") + -- adds fractional coordinates to atomInfo + +new feature: draw boundbox @1 @2 @3 @4... + -- draws a boundbox with edges in the x, y, and z directions through a set of points + +new feature: draw best boundbox @1 @2 @3 @4... + -- draws the best boundbox through a set of points + +new feature: draw best plane @1 @2 @3 @4... + -- draws the best plane through a set of points + +new feature: draw best line @1 @2 @3 @4... + -- draws the best line through a set of points + +new feature: draw intersection [unitcell or boundbox description] [line or plane description] + -- intersects all types of boundboxes and unitcells with any type of plane or line + +new feature: draw intersection [unitcell or boundbox description] ON [line or plane description] + -- projects a unitcell or boundbox on any plane + +new feature: draw intersection [unitcell or boundbox description] LINE @1 @2 + -- extends the specified line to intersect a unitcell or boundbox + +new feature: draw diameter -1 .... + -- for lines or mesh option + -- draws a simple line with 1-pixel width + +new feature: draw diameter -n .... + -- for lines or mesh option + -- draws a dotted 1-pixel line with alternating n on, n off pixels + +new feature: draw HKL {1 1 1 x.x} + -- offsets an HKL plane from the origin by x.x Angstroms + +new feature: draw HKL {1 1 1} OFFSET x.x + -- alternative to HCL {1 1 1 x.x} + +new feature: select on @{_M.asymmetricUnit} + -- _M.asymmetricUnit is the atom bitset for the asymmetric unit + -- empty string if there is no current unit cell + +new feature: select on @{_M.asymmetricUnit} + -- _M.asymmetricUnit is the atom bitset for the asymmetric unit + + + + +JmolVersion="14.32.16" + also 15.2.16 + +new feature: (JavaScript API) Jmol.setCallback(jmolApplet0, "xxx", function() {......}) + -- where "xxx" is one of the allowed callbacks, namely (case insensitive): + ANIMFRAME, APPLETREADY, ATOMMOVED, AUDIO, CLICK, DRAGDROP, ECHO, + ERROR, EVAL, HOVER, IMAGE, LOADSTRUCT, MEASURE, MESSAGE, MINIMIZATION, + ModelKit, PICK, RESIZE, SCRIPT, SELECT, SERVICE, STRUCTUREMODIFIED, SYNC + -- allows anonymous function setting for callbacks rather than using JmolScript SET xxxCallback "funcName" + +new feature: (JavaScript) Info = { .... , errorCallback: function{....},...} + + -- allows setting of functions rather than function names in Info parameters + +new feature: Drag-Drop into Java AppConsole assumed to be script and run + +new feature: Drag-Drop into JavaScript output console assumed to be script and run + +new feature: Drag-Drop into JavaScript input console displayed + + + +JmolVersion="14.32.16" + also 15.2.16 + +new feature: (JavaScript API) Jmol.setCallback(jmolApplet0, "xxx", function() {......}) + -- where "xxx" is one of the allowed callbacks, namely (case insensitive): + ANIMFRAME, APPLETREADY, ATOMMOVED, AUDIO, CLICK, DRAGDROP, ECHO, + ERROR, EVAL, HOVER, IMAGE, LOADSTRUCT, MEASURE, MESSAGE, MINIMIZATION, + ModelKit, PICK, RESIZE, SCRIPT, SELECT, SERVICE, STRUCTUREMODIFIED, SYNC + -- allows anonymous function setting for callbacks rather than using JmolScript SET xxxCallback "funcName" + +new feature: (JavaScript) Info = { .... , errorCallback: function{....},...} + + -- allows setting of functions rather than function names in Info parameters + +new feature: (JavaScript) Info = { .... , errorCallback: function{....},...} + + -- allows setting of functions rather than function names in Info parameters + +new feature: Drag-Drop into Java AppConsole assumed to be script and run + +new feature: Drag-Drop into JavaScript output console assumed to be script and run + +new feature: Drag-Drop into JavaScript input console displayed + + +JmolVersion="14.32.15" + also 15.2.15 + +new feature: JmolScript: callbacks have access to parameters of JavaScript callbacks + -- within the callback, _args() provides full list of arguments + -- _args(1) first argument, etc. + -- recommendation to NOT use _args()[0] "last" notation here, as future expansion may add parameters + +new feature: FONT DRAW + -- allows setting the font for (general) DRAW object text + +new feature: DRAW TITLE "xxx" + -- adds (optional) TITLE keyword + +new feature: DRAW TITLE COLOR red "xxx" + -- adds title color option + +new feature: DRAW TITLE FONT sansSerif bold 20 "xxx" + -- adds title color option + -- face and or style are optional; size is required + -- can use this after draw is already created + draw @1 @3 "test" + draw font 20 + +new feature FONT DRAW .... + -- allows setting the default font for DRAW objects + +new feature: set labelPointerWidth + -- sets the width of the line for SET LABELPOINTER ON + -- default 2 + +bug fix: label pointers not properly connecting to label for all offsets +bug fix: JavaScript float processing allowed to read full double precision +bug fix: measurements recently started showing artificial double precision when only single +bug fix: ModelKit ASSIGN ATOM fails when in xtal mode +bug fix: structureModifiedCallback not reporting fully +bug fix: SET FONTSIZE and FONT LABEL x.x should not reset font face or style +bug fix: spacefill -23% should indicate ONLY +bug fix: JmolScript: callbacks should not be asynchronous + +JmolVersion="14.32.14" + also 15.2.14 + +new feature: ModelKit UNITCELL [unitcell description] + -- same as the UNITCELL command, but also adjusts atom + coordinates to retain same fractional positions: + + var fxyz = {thismodel}.fxyz.all; + unitcell .... + {thismodel}.fxyz = fxyz; + +new feature: selectCallback parameters added: nSelected, indexFirst, indexLast+1 + +bug fix: PWMAT reader needs to allow text on first line +bug fix: unitcell() without atoms in a frame should still return frame's unitcell +bug fix: set labeloffset broken in 14.32.12 + +JmolVersion="14.32.13" + also 15.2.13 + +bug fix: VASP reader for Cartesian coords not converting automatically to fractional +bug fix: JavaScript getPropertyJSON broken for array data +bug fix: Release 14.32.12 faulty -- files removed. + +JmolVersion="14.32.12" + also 15.2.12 + +new feature: (Java only) inchiString.inchi("SMILES") converts InChI to SMILES. + -- utilizes JniInchi structure created from an InChI to generate SMILES strings. + -- net effect is that InChI strings can be converted to structures via SMILES. + -- passes tetrahedral, cumulene, and alkene stereochemistry tests + -- InChI does not implement atropisomer stereochemistry + -- InChI created using {*}.inchi("FixedH") will differentiate tautomers + + +new feature: Adds compare({1.1},{2.1},"isomer",TRUE) + -- TRUE indicates to also do a tautomer check. + -- compares InChI with InChI FixedH option + + +new feature: selectCallback + -- Fires after a scheduled script is completed if SELECT has been issued + +new feature: SELECT , ... (first parameter comma) + -- Fires selectCallback immediately, not after script is completed + +new feature: write XSF + -- writes XCrysDen files http://www.xcrysden.org/doc/XSF.html + -- selected atoms only + -- includes ANIMSTEPS for molecules and crystals + +new feature: write PWMAT + -- a simple pwmat input (atom.config) file format for just lattice and atoms + -- selected atoms only + +code: refactored org.jmol.adapter.writers.* from PropertyManager + +bug fix: CMLWriter broken; maybe never worked. +bug fix: format() did not allow for decimal places up to 12. +bug fix: POSCAR reader treating "T" constraint as "tritium" +bug fix: XCrystDen reader not reading animation properly + +JmolVersion="14.32.11" + +bug fix: dispose of popupmenu fails (15.2.8) +bug fix: JmolStatusListener should allow for user to also add listener + +retired code: Jmol applet, netscape jar and package, java.applet.Applet, and javax.swing.JApplet all moved to /unused/ + +JmolVersion="14.32.10" + also 15.2.10 + +bug fix: Amimation start during pause of previous animation will halt wrong animation thread. + +JmolVersion="14.32.9" + also 15.2.9 + +new feature: load FILTER "bmchains=0" or "bmchains=1" ("bmchains" by itself defaults to 0) + - for PDB, mmCIF, MMTF + - removes duplicate chain ids when applying BIOMOLECULE option + - bmchains=0 will append symmetry operator > 1 to chain id, so {A B A B A B} becomes {A B A2 B2 A3 B3} + - bmchains=1 will increment chain ids, so {A B A B A B} becomes A B C D E F + - expects chains to be of the type {A B C D ...} + + +JmolVersion="14.32.8" + also 15.2.8 + + bug fix: removing (deprecated, unnecessary) sun.audio.* references + bug fix: ModelKit creating allylic N not sp2; mouse action issues;better bond rotation + code: refactoring ModelKitPopup; adding ModelKit.java + +JmolVersion="14.32.7" + also 15.2.7 + +bug fix: JavaScript error on file reading can cause infinite loop +bug fix: toJSON for primitive arrays creating string arrays ["1","2"] +bug fix: dynamic PDB menu items not refreshing after file load if menu is not already created +bug fix: MUTATE with pdbAddHydrogens fails and crashes Jmol + +new feature: expanded MUTATE options + -- examples: + + mutate 33 LYS + mutate ALA34 G + mutate {ALA.CA}[2] G + mutate {1-3} GAL + mutate {1-3} A + mutate {1-3} ~LYS (that is, LEU-TYR-SER) + mutate {1-3} G_L + mutate {1-4} "GLY-AlA" + mutate ALA34 "myAla.pdb" (from a file) + mutate ALA34 "==SEP" (from RCSB) + mutate @3 @res (using variables) + + +new feature: MUTATE CREATE option + -- creates peptides with specified sequence and secondary structure (phi/psi) + -- examples: + mutate create aaaaaaa // defaults to alpha + mutate create "lys-ala-ser" // uses one-letter and three-letter codes + mutate create ppppp "3-10" // 16 pre-defined phi/psi sequences: + + "alpha" [ -65, -40 ] + "3-10" [ -74, -4 ] + "pi" [ -57.1, -69.7 ] + "alpha-L" [ 57.1, 4 ] + "helix-II" [ -79, 150 ] + "collagen" [ -51, 153 ] + "beta" [ -140, 130 ] + "beta-120" [ -120, 120 ] + "beta-135" [ -135, 135 ] + "extended" [ 180, 180 ] + "turn-I" [ -60, -30, -90, 0 ] + "turn-II" [ -60, 120, 80, 0 ] + "turn-III" [ -60, -30, -60, -30 ] + "turn-I'" [ 60, 30, 90, 0 ] + "turn-II'" [ 60, -120, -80, 0 ] + "turn-III'" [ 60, 30, 60, 30 ] + +new feature: ModelKit MUTATE + - same as MUTATE, but associated (and documented) with ModelKit + +new feature: ModelKit CONNECT @1 @2 [0,1,2,3,4,5,p,m] (default 1) + + + ModelKit [ON(nada)/OFF/DISPLAY/HIDE] + + ModelKit CENTER point or atoms (point can be fractional by adding "/1" to at least one coord) + + -- action options include alternatives to the given commands (assign is undocumented) + + ModelKit ASSIGN ATOM [symbol|pl|mi] point + ModelKit ASSIGN ATOM @1 [symbol|pl|mi] + ModelKit ASSIGN ATOM @1 [symbol|pl|mi] point + ModelKit ASSIGN BOND (integer) [0,1,2,3,4,5,p,m] (default P) + ModelKit ASSIGN BOND {atom1 atom2} [0,1,2,3,4,5,p,m] (default P) + ModelKit ASSIGN BOND @1 @2 [0,1,2,3,4,5,p,m] (default P) + + ModelKit CONNECT @1 @2 [0,1,2,3,4,5,p,m] (default 1) + + ModelKit ROTATE ... (same as ROTATE for example, ROTATE BOND @1 @2 degrees) + ModelKit ROTATESELECTED (same as ROTATESLECTED) + + view mode + ModelKit SYMOP [n] + ModelKit SYMOP "x,-y,z" + ModelKit SYMOP [[4x4 matrix]] + ModelKit OFFSET [{i j k}/NONE] + + -- configuration options include the following; CAPS is default: + + ModelKit SET addHydrogens [TRUE|false] + ModelKit SET autobond [true|FALSE] + ModelKit SET clickToSetElement [TRUE|false] + ModelKit SET showSymopInfo [TRUE|false] + ModelKit SET bondtype [0,1,2,3,4,5,p,m] + ModelKit SET element [name or symbol] + ModelKit SET MODE [molecular|view|edit] + ModelKit SET UNITCELL [EXTEND|PACKED] + + edit mode -- not implemented + + ModelKit SET SYMMETRY [APPLYFULL|APPLYLOCAL|RETAINLOCAL] // not implemented + ModelKit POINT point or atoms // not implemented + + -- configuration options can be given sequentially within one ModelKit command or in individual commands + -- examples: + + ModelKit set mode view symop 5 center @3 + ModelKit set mode view symop 5 center @3 offset {0 0 0} // unitized [0,1) + + +JmolVersion="14.32.6" + also 15.2.6 + +bug fix: (JavaScript only) insignificant script processing error reported in JavaScript console +bug fix: InChI for deutero compounds not working +bug fix: InChI failure should show "?" not SMILES + +JmolVersion="14.32.5" + also 15.2.5 + +bug fix: show INCHI broken in 14.32.5 + +new feature: hack added for reading invalid CIF files created by Materials Studio + +Apache Log4J vulnerability checked (not applicable) + +Confirming that Jmol.jar (any version) is not affected by the CVE-2021-45046: + Apache Log4j2 Thread Context Message Pattern and Context Lookup Pattern vulnerable to + a denial of service attack as described by Apache, or any other Log4j2 vulnerability. + +Several checks support this finding: + + 1) Jmol is compiled using Java 6. Log4j2.x requires at least Java 7. + 2) Jmol itself does not use Log4j. We use a much simpler, extremely streamlined custom class, + org.jmol.util.Logger, with only a very simple interface. + 3) Jmol does incorporate JNI-InChI 1.03_1, which does utilize Log4j. However, JNI-InChI 1.03_1 + utilizes Log4j1, not Log4j2. + 4) Log4j1.x is not impacted by this vulnerability. + 5) The suggested mitigation -- simply removing org/apache/logging/log4j/core/lookup/JndiLookup.class + from the distributed JAR file (Jmol.jar, JmolData.jar) is unnecessary, as Jmol.jar does not + contain even the org/apache/logging package, much less any class file that starts with "Jndi". + 6) As part of this version update the ANT task + + has been added to build.xml just in case any future version of any dependency might include that class. + + +JmolVersion="14.32.4" + also 15.2.4 + +feature change: ModelKit no longer by default does drag-to-bond with default autobonding + - autobonding leads to results unexpected by the user -- should not be the default setting + - use ModelKit SET AUTOBOND TRUE to re-enable this feature if desired + - easy enough to drag to bond atoms without this + +new feature: ModelKit set autobond true + -- when dragging to create a new bond to a new atom, automatically check vicinity of the new atom for bonding + -- default now set to FALSE + +new feature: ModelKit set hidden true + -- hides the ModelKit menu but retains the picking and hover highlights + +new feature: PWmat atom.config reader http://pwmatus.com/manual + +bug fix: ModelKit does not preserve setPicking setting in quiet mode +bug fix: ModelKit autobonding is too aggressive; needs to be settable + + +JmolVersion="14.32.3" + also 15.2.3 + +bug fix: (JavaScript only) insignificant script processing error reported in JavaScript console +bug fix: various ModelKit issues. + +JmolVersion="14.32.2" + also 15.2.2 + +bug fix: ModelKit shows wrong hover labels +bug fix: LOAD APPEND after adding atoms via ModelKit does not by default append new +bug fix: state saved after deleting atoms in modelKitMode uses appendNew true, creating several fragment models +bug fix: Java app ModelKit icon does not clear when a structure is loaded + +new feature: ModelKitCallback + -- String value is "ON" or "OFF" + -- for example: set ModelKitcallback "jmolScript:print 'modelKitMode=' + modelKitMode" + +new feature: ModelKit command + -- was introduced for 15.0.2 / 14.29.25, but was not documented + -- allows scripting of ModelKit functions + -- turning the ModelKit on/off - same as SET modelKitMode: + + ModelKit ON + ModelKit OFF + + -- note that the ModelKit does not have to be ON for the following functionality. + + -- note that the ModelKit does not have to be ON for the following functionality. + + -- configuration options include the following, where (xxx) is optional, CAPS is default: + + + ModelKit addHydrogens [TRUE|false] + -- setting this false turns off the automatic addition of hydrogens + ModelKit clickToSetElement [TRUE|false] + -- setting this removes the ability to change elements other than H by clicking on them + ModelKit showSymopInfo + -- setting this false stops the ModelKit from showing space group symmetry information + + -- configuration options can be given sequentially within one ModelKit command or in individual commands + + ModelKit addHydrogens FALSE clickToSetElement TRUE; + + -- ModelKit actions: + + ModelKit assign atom @3 "C" + -- changes atom 3 to carbon, with concomitant bond distance change and addition of H + ModelKit assign atom "C" {3 3 3} + -- adds a carbon at {3 3 3} but does not bond anything to it + ModelKit assign atom @25 "O" {3 4.2 3} + -- adds an O atom connected to @25 and at the default distance on the line between @25 and {3 4.2 3} + ModelKit assign bond @1 @2 + -- where type can be 0,1,2,3,4,5,p,m + - p indicates +, increment (cycles 1 2 3 1) + - m indicates -, decrement (stops at 0) + -- with associated changes in hydrogen count + ModelKit connect @25 @26 + -- connects two atoms, adjusting hydrogen atoms according to standard hybridization + + new feature: SHOW ModelKit addhydrogens + new feature: SHOW ModelKit clickToSetelement + new feature: SHOW ModelKit showSymOpInfo + + new feature: getProperty("ModelKitinfo") + -- delivers an associative array of information about the ModelKit + + +JmolVersion="14.31.61" + also 15.1.61 + +new feature: JSpecView reading Bruker NMR 1D and 2D directories and ZIP files + - drag any file from a Bruker directory or the directory itself into JSpecView + +new feature: allow select within(cell,555) + +new feature: symop(pointGroupOperation, atom, pointGroupInfoObject) + - where pointGroupOperation is of the form S6 or S6.1 or S6^3 or S6.1^3 + and ^n means nth power + and .i means ith element of this type + - return point result of operation of the point group operation on an atom + - for example: print symop("C2.1", @3) + - without atom, returns matrix + - for example: print symop("C2.1") + - without pointInfoGroupObject defaults to the point group of the current model, pointGroup() + +new feature: pointgroup() returns pointGroupInfo object same as getProperty("pointgroupinfo") + +bug fix: JmolTable.java example does not point to correct site +bug fix: CIFReader some first models 0 atoms + +JmolVersion="14.31.60" + also 15.1.60 + +fix for CIFReader not reading multi-model CIF files. + +JmolVersion="14.31.59" + also 15.1.59 + +bug fix: CIFReader should allow unlooped items for all needed tags +bug fix: JSpecView writer broken in 15.1.50 2021.08.10 + +JmolVersion="14.31.58" + also 15.1.58 + +bug fix: adjustments to TopoCifParser pre-release of Topology.dic + +JmolVersion="14.31.57" + also 15.1.57 + +bug fix: magCIF can not handle fractions 2/5, 3/10, etc. + +JmolVersion="14.31.56" + also 15.1.56 + +bug fix: compare({2.1}, {1.1}, "map", "H") broken + + +JmolVersion="14.31.55" + also 15.1.55 + +new feature: COMPARE {2.1} {1.1} BONDS SMILES HYDROGEN + - adds HYDROGEN check for aligning methyl and methylene groups properly + +bug fix: (-1.4567).format("%5.2f") missing minus sign +bug fix: UnitCell transform should be included in COMPARE FRAME +bug fix: CifReader fix for lack of case sensitivity in some GEOM_* records for some COD and CCDC files +bug fix: FilesReader fails with zip file pipe +bug fix: Polyhedra SMILES not working for chirality check -- was never fully tested +bug fix: Resolver can fail for certain CIF files resolved to MOL incorrectly +bug fix: TopoCif update + +new feature: COMPARE additions: + + // compare FRAMES + // compare {model1} {model2} POLYHEDRA + // compare {model1} {model2} SUBSET {polyhedra} POLYHEDRA + // compare {model1} {model2} ATOMS @atom1 @atom2 POLYHEDRA + // compare FRAMES POLYHEDRA + +new feature: compare() additions + + // A, B, int[] map + // A, B, int[] map, stddev + + +JmolVersion="14.31.54" + also 15.1.54 + +bug fix: TopoCifParser bugs + +new feature: load "xxx" filter "TOPOL" + -load _topol_* data + -no symmetry applied + -display net 1 by default + +new feature: load "xxx" {1 1 1} filter "TOPOL" + -load _topol_* data + -display the {1 1 1} unit cell, with symmetry (this could be fill or packed, etc.) + -display net 1 by default + +new feature: load "xxx" {1 1 1} filter "TOPOLNet=2" + -load _topol_* data + -display net.id==2 by default + +new feature: load "xxx" {1 1 1} filter "TOPOLNet=Net_2" + -load _topol_* data + -display net.label=='Net_2' by default + + +JmolVersion="14.31.53" + also 15.1.53 + +bug fix: TopoCifParser bugs fixed +bug fix: {metal} included Xx +bug fix: symop() function not relating file-based operators +bug fix: print symop(3,"xyzOriginal") does not show original (file-bsaed) symmetry operation +new feature: symop(3, [1 1 0]) adds specified "cif2-style" translation to symmetry operation. +new feature: symop(@1, @61, "cif2") returns the "cif2" format of this operation. + - developed for working with TopologyCIF data + - [i j k] + - For example: + + $ load =ams/quartz 1 packed + $ print symop(@1,@3,"cif2") + 2 [0 0 0] + 3 [0 0 0] + + $ print symop(@1,@13,"cif2") + 2 [1 0 0] + 3 [1 0 0] + +new feature: print symop(...."canonical") +new feature: print symop(n, [i j k], ...) + $ print symop(3, [1 0 1]) + + + + +JmolVersion="14.31.52" + also 15.1.52 + +bug fix: JavaScript does not return to correct scrpt level after DELAY + +JmolVersion="14.31.51" + also 15.1.51 (take 2) + +new feature: ISOSURFACE DENSITY option + - checks for cryo-EM data from EBI/EMDB and, if that exists, uses it; otherwise uses x-ray diffraction data +bug fix: problems with ISOSURFACE in 14.31.50 +bug fix: EM isosurface not saved in state. + +JmolVersion="14.31.50" + also 15.1.50 + +bug fix: JSpecView upgrade for misc. JDXReader issues +bug fix: Jmol file dropper not asking to resize (broken in 15.1.46/14.31.46) +bug fix: Jmol not reading EBI cryo-EM files from density server. +bug fix: Jmol not using EBI submap feature of density server for full-structure volumes + +new feature: ISOSURFACE *.../full + - returns the FULL EBI volume data, not just one localized around a structure + +JmolVersion="14.31.49" + also 15.1.49 + +bug fix: JSpecView not using ##FIRSTX for diff-dup x values after first. +bug fix: JSpecView version not showing + +new feature: isosurface "*em" + - same as *emdb, just simpler. + +JmolVersion="14.31.48" + also 15.1.48 + + bug fix: JavaScript isosurface asynchronous file loader + failing to finalize, causing refresh in later-called + function to not return. + + bug fix: Filenames and directories with unicode accents not saved in ZIP, PNGJ, JMOL files. + + bug fix: Locally loaded JavaScript files not save in ZIP, PNGJ, JMOL + +JmolVersion="14.31.47" + also 15.1.47 + +new feature: isosurface "*emdb/nnnn" + - retrieves the cryo-EM surface EMD-nnnn + - uses http://ftp.ebi.ac.uk/pub/databases/emdb/structures/EMD-%file/map/emd_%file.map.gz + (https did not work in Java due to certificate issues) + +new feature: isosurface "*emdb/=xxxx" + - looks up the EMDB id for the cryo-EM surface associated with pdb id xxxx + - first uses https://www.ebi.ac.uk/emdb/api/search/fitted_pdbs:%file?fl=emdb_id,map_contour_level_value&wt=csv + - then uses http://ftp.ebi.ac.uk/pub/databases/emdb/structures/EMD-%file/map/emd_%file.map.gz + +new feature: isosurface "*emdb" (or "*emdb/" or "*emdb/=") + - uses the current model's PDB ID with *emdb/=xxxx" + +JmolVersion="14.31.46" + also 15.1.46 + +bug fix: Drag-drop of PNGJ can fail due to SCRIPT command not accepting "spt::" type identifier + +JmolVersion="14.31.45" + also 15.1.45 + +bug fix: ModelKit changes for atomName and element not saved in state (since Jmol 14.28?) + +JmolVersion="14.31.44" + also 15.1.44 + +bug fix: Incorrect implementation of double value from string in JCAMP-DX format +bug fix: V3000 reader does not recognize 2D mol file setting +bug fix: 2D->3D can invert stereocenters having C-H bond. + +JmolVersion="14.31.43" + also 15.1.43 + +new feature: hbondHDistanceMaximum maximum O--H distance in hydrogen bonds + - only in the case of actual hydrogen bonds, not pseudo-hydrogen bonds + - hbondsDistanceMaximum now aliased to hbondNODistanceMaximum for clarity + +JmolVersion="14.31.42" + also 15.1.42 + +bug fix: GaussianReader fix for reading frequencies giving NullPointerException + +bug fix: mmCIF reader was requiring optional auth_XXXX fields + +bug fix: jspecview reading pimentoGCMS2.dx empty $$MODEL= causes NullPointerException + +bug fix: better MMFF94 and UFF for 2D -> 3D +new feature: adds MMFF2D and UFF2D forcefields that involve stronger + fields for no-hydrogen (UFF2D) and added-hydrogen (MMFF2D) minimization +new feature: adds set testflag2 TRUE to stop FILTER "2D" after first stage, before UFF2D+MMFF2D minimization + +JmolVersion="14.31.41" + also 15.1.41 + +bug fix: (JSmol only - not SwingJS) ModelKit bond assignment fails due to old transpiler bug + -- was failing to convert char to int and back properly + +JmolVersion="14.31.40" + also 15.1.40 + +bug fix: eval("JSON",json) fix to allow [...] or {...} +bug fix: ellipsoid ISO saved in state with wrong size + +new feature: set checkCIR + -- retrieves the NCI/CADD Chemical Identifier Resolver URL + -- currently contacts chemapps.stolaf.edu/resolver + -- places return JSON information into _.cirInfo (note that this is the model set auxiliary info, which is cleared with ZAP or LOAD) + { + "host" : "cactus.nci.nih.gov" + "rfc6570Template" : "https://cactus.nci.nih.gov/chemical/structure{/identifier,representation}{?format,get3d}" + "source" : "https://chemapps.stolaf.edu/resolver/index.php" + "sourceVersion" : "0.0.1_2021.05.26b" + "status" : "unavailable" + "testURL" : "https://cactus.nci.nih.gov/chemical/structure/methane/smiles?src=jmol-chemapps-resolver" +  } + -- stores the global read-only variable _cirStatus as "OK" if successful or "unavailable" if not + -- run automatically ONLY on the first call to NCR with load $.... + +new feature: Jmol's first load '$' or https://cactus.nci.nih/gov call does checkCIR + +new feature: Loading cactus.nic.nih/gov/chemical/structure file will resolve that name + +JmolVersion="14.31.39" + also 15.1.39 + +bug fix: GAMESS reader broken + +JmolVersion="14.31.38" + also 15.1.38 + +bug fix: TopoCIF 0.9.2 upgrade for _topol_node and _topol_net +bug fix: JSpecView SVG export missing in menu and broken + + +JmolVersion="14.31.37" + also 15.1.37 + +bug fix: removing default dependency for XmlUtils and PO + +JmolVersion="14.31.36" + also 15.1.36 + +bug fix: capture broken in 14.31.34 + +JmolVersion="14.31.35" + also 15.1.35 + +adds GamessReader MOPAC parameters from F90 files provided by Jimmy Stewart for MO reading + -- note that GAMESS uses only s and p orbitals for the MOPAC option +adds GamessReader MOPAC option + -- forces using MOPAC slaters rather than gaussian contraction when g.c. is present +adds MoldenReader [STO] ANGS and MOPAC options (zeta in 1/Angs; apply MOPAC scaling) + +JmolVersion="14.31.34" + also 15.1.34 + +bug fix: NBO type change not saved in state +bug fix: NBO auxiliary files (output.36, output.46, etc.) not saved in PNGJ,JMOL,ZIP files + +JmolVersion="14.31.33" + also 15.1.33 + +new feature: Allow replacement of PNG data in PNGJ + + x = load("toHenry2_pngj.png",true) + y = load("bob.png") + x._IMAGE_ = y._DATA + write var x "toHenryFromBob.png" + + +JmolVersion="14.31.32" + also 15.1.32 + +bug fix: isosourface MOLECULAR and SASURFACE should never drop below 1.5/(probe radius) +bug fix: (second release) getProperty("isosurfaceData") broken + +JmolVersion="14.31.31" + also 15.1.31 + +bug fix: isosurface ... NCI "" broken (in 14.5.2) +bug fix: plane definitions totally messed up in 14.31.26 + +JmolVersion="14.31.30" + also 15.1.30 + +bug fix: load ? outside of function duplicates next commands +bug fix: (JS) Safari 14 not downloading files using DataURI + +JmolVersion="14.31.29" + also 15.1.29 + +bug fix: FileDropper does not recognize .txt file as possible script + +JmolVersion="14.31.28" + also 15.1.28 + + +new feature: Jmol SMILES bond atropisomerism ^nm- and ^^nm- + -- indicates atropisomerism (bond chirality in biaryl systems) + -- ^ and ^^ for bonds similar to @ and and @@ for atoms + -- n and m are single-digit bond selectors, generally one of 1, 2, or 3 + -- n = 1/2/3 means "reference atom is first/second/third connection + to the atom on the left; m = 1/2/3 the same for the atom on the right. + -- ^- and ^^- same as ^22- and ^^22-, respectively + -- example: + + + load $biphenol + connect @2 @7 atropisomer + print {*}.find("SMARTS","c1(O)cccc{c1^^-c2}ccccc2O") + + ({1 6}) + + Here the "^^-" is short for "^^22- and refers to the two carbons with connected oxygen atoms: + +new feature: mol1.find(mol2, "MAP" + flags, format) + - creates a correlation map of atoms of mol1 to atoms of mol2 + - mol1 and mol2 are atom sets such as {1.1} and {1.2} + - uses SMILES; Jmol SMILES directive flags such as "hydrogen" or "open" can be added + - format indicates the format to use for the results + - can be "name", "index", "number" or any valid label, such as "%a %i" + - defaults to "number" + - returns a map (associative array) containing keys: + - smiles: the SMILES string used for the match + - BS1 : atomset for mol1 + - BS2 : atomset for mol2 + - SMILEStoBS1 : array correlating SMILES atoms to BS1 + - SMILEStoBS2 : array correlating SMILES atoms to BS2 + - BS1toBS2 : array correlating BS1 to BS2 (indexes are for mol1; values are mol2) + - MAP1to2 : array of [a,b] pairs, where a is format for mol1, b is format for mol2 + - key : format used in mapping + + - example: + + load files ":caffeine" "$caffeine" + info = {1.1}.find({2.1},"map", "name") + print info.SMILES + print info.key + ": " + info.MAP1to2.format("JSON") + + O=C1c2c3N(C)C(=O)N1C.[n]2(C)c[n]3 + + name: [ [ "O1","O14" ],[ "O2","O4" ],[ "N3","N5" ],[ "N4","N10" ],[ "N5","N1" ], + [ "N6","N8" ],[ "C7","C12" ],[ "C8","C7" ],[ "C9","C13" ],[ "C10","C3" ], + [ "C11","C9" ],[ "C12","C6" ],[ "C13","C11" ],[ "C14","C2" ] ] + + info = {1.1}.find({2.1},"map hydrogen", "number") + print info.SMILES + print info.key + ": " + info.MAP1to2.format("JSON") + + /hydrogen/O=C1c2c3N4[C@@]([H])([H])[H].N51[C@@]([H])([H])[H].C54=O.[n]62[C@]([H])([H])[H].c6([H])[n]3 + + number: [ [ 1,14 ],[ 2,4 ],[ 3,5 ],[ 4,10 ],[ 5,1 ],[ 6,8 ],[ 7,12 ], + [ 8,7 ],[ 9,13 ],[ 10,3 ],[ 11,9 ],[ 12,6 ],[ 13,11 ],[ 14,2 ],[ 15,21 ], + [ 16,18 ],[ 17,20 ],[ 18,19 ],[ 19,22 ],[ 20,23 ],[ 21,24 ],[ 22,15 ],[ 23,17 ],[ 24,16 ] ] + +bug fix: x.label("%a %D") wrong value for %D + +JmolVersion="14.31.27" + also 15.1.27 + +bug fix: {*}.bonds.length not working + +bug fix: array.find(n) should not do a string seach and return match. + - return array of array indices, 1-based. + - example: [11 3 1 2 1].find(1) == [3 5], not [1 3 5] + +newly documented: + +Polyhedra command allows for min and max radius + -- polyhedra 2.8 3.0 @3 + +setting DSSR on the fly: + + model 1 property dssr "1d66.dssr" // file containing data + model 1 property dssr @{load("1d66.dssr")} // actual data + select iloops + + +4-order bond in MOL file using 14 for bond order + -- Jmol extension for MOL file format to allow 4-bond + -- example: [Re2Cl8](2-) + -- see https://en.wikipedia.org/wiki/Quadruple_bond + +5-order bond in MOL file using 15 for bond order + -- Jmol extension for MOL file format to allow 5-bond + -- example: [Mo2Cl8](4-) + -- see https://en.wikipedia.org/wiki/Quintuple_bond + +6-order bond in MOL file using 16 for bond order + -- Jmol extension for MOL file format to allow 6-bond + -- example: Mo2 + -- see https://en.wikipedia.org/wiki/Sextuple_bond + + +DRAW polygon @face @points + -- draws a filled polygon based on arrays of atom indices + -- @face is an array of integers, not necessarily wound correctly + -- @points is an atom bitset or an array of points (optional, defaults to {*} + -- for example: + + load $p4 + x = {*}.find("*1**1","map"); + draw ID p4r polygon @{x[1]} color red + draw ID p4b polygon @{x[2]} color blue + draw ID p4y polygon @{x[3]} color yellow + draw ID p4g polygon @{x[4]} color green + + +DRAW polyhedron @faces @points + -- draws sets of polygons based on arrays of atom indices + -- @faces is an array of array of integers, not necessarily wound correctly + -- @points is an atom bitset or an array of points (optional, defaults to {*} + -- for example: + + load $caffeine + draw polyhedron @{{*}.find("*1****1||*1*****1","map")} + + load $p4 + draw ID p polyhedron @{{*}.find("*1**1","map")} color red + +POLYHEDRON ID xxx @faces @points + -- @faces is an array of array of integers, not necessarily wound correctly + -- @points is an atom bitset or an array of points (optional, defaults to {*} + + load $p4 + polyhedra ID p4 @{{*}.find("*1**1","map")} + +array.format(headings) Transform an array of arrays into an array of associative arrays based on "column" headings, and vice-versa. For example, if y = [[1,2],[3,4]], then z = y.format(["a","b"]) will set z to [ {{ "a": 1,"b": 2 }},{{ "a": 3, "b": 4 }} ]. And, in reverse, z.format(["a","b"]) will be back to [[1,2],[3,4]] +array.format("JSON") Formats a serial or associative array as JSON. +array.format("%5.3f\t%5s") Formats an array or array of arrays into a multiline string using sprintf format. + +arrayOfArrays.col(n) selects out the nth column from an array of arrays. + For example, retrieving the third column from CSV data: + col3 = load("data.csv").split("",true).col(3). + +SHOW CHEMICAL -- fully described NIH/CADD options + +SHOW xxxx /yyyy Adding "/xxxx" to the command, such as SHOW file/cell will filter + the output only to lines containing the text after the slash character. + +Jmol PolySMILES -- described + +JmolSQL -- more description; adds WHEREIN; replaces older ** notation + +load HISTORY "saved.his" -- loads command history with script in saved.his + +frame align [modelNo] [pt] -- FIXED is assumed; used in state; shifts a model by a specific amount after removing any current frame alignment + +x.dot(y) for point.dot(plane) + +CIF 2.0 file reader added + +set zshadePower 0 -- allows examination of depth buffer and writing to image for external processing + +Windows BMP image reading -- reads 24-bit (full color) as well as 16-, 8-, 4-, 2-, and 1-bit color palette modes + -- 14-byte and 40-byte headers only; does not read compressed modes + +Write and data({atomset},type) expanded to: CIF|CML|CFI|MOL|PDB|PQR|SDF|CD (ChemDoodle)|JSON|QCJSON|V2000|V3000|XYZ|XYZRN|XYZVIB + +x.find("SMILES","top") -- creates a topology SMILES, involving just * and connections; does not include stereochemistry; + -- allows comparison of connection patterns without respect to any other consideration. + -- can be used to check equivalences in inorganic crystal structures. + -- example: load $caffeine;$ print {*}.find("SMILES","top") => *1(*)*(*)*2*3*(*)*1*.*2(*)**3 + +load "" fill UNITCELL PRIMITIVE (for files that are conventional) +load "" fill UNITCELL CONVENTIONAL (for VASP files, which are primitive cells) + +polyhedra WIGNER // Wigner-Seitz cell +polyhedra BRILLOUIN // 1st Brillouin zone +polyhedra BRILLOUIN 1 // 1st Brillouin zone +polyhedra BRILLOUIN 2 // 2nd Brillouin zone +polyhedra BRILLOUIN -1 // Wigner-Seitz cell +polyhedra scale 3.0 BRILLOUIN 1 // scaled 1st Brillouin zone + +POLYHEDRA edgesOnly -- shows just edges; operates on ALL polyhedra, not just selected; complements edges, noEdges, frontEdges + +select within(d, $p1) where $p1 is a polyhedron ID + -- d = 0 is "on or within the polyhedron" + -- d < 0 is "-d angstroms within polyhedron" + -- d > 0 is "within d angstroms of polyhedron" + +LOAD will read BZ2-compressed files + +WRITE "SDF" implements atom value V nnn ... information + -- requires assigning the data property name "atom_values" in the model's molData property + -- for example: + + $ load $2,3-dichlorobutane + $ molData = {"atom_values":"chirality"} + $ model properties "molData" molData + $ write dcb.sdf + + -- note that if the model already has a molData property, then use the following to append to it: + + $ molData = (_M.molData ? _M.molData : {}) + $ molData.atom_values = "chirality" + $ model properties "molData" molData + +x = load("filename","JSON") -- loads JSON data into variable + +{atom}.chirality -- uses Cahn-Ingold-Prelog rules to assign R or S to a carbon center + -- ignores sulfur and nitrogen chirality, generally + +{atom}.cipRule -- CIP sequence rule deciding this center; one of 1a, 1b, 2, 3, 4a, 4b, 4c, 5, or blank + +load =chebi/nnnnnn -- chEBI 2D molecule load, with minimal 100-step minimization + +set debugHigh -- same as set loglevel 6 - debugging only + +x.split(true) -- does a white-space token split of the string value of x + +CALCULATE CHIRALITY {atom set} -- optionally limited to the given atom set (or the currently selected atoms by default) + +set jmolInJSpecView -- allows Jmol window to NOT be embedded in JSpecView when JSpecView is opened in Jmol; default TRUE + +WRITE ISOSURFACE "t.pmesh"; WRITE ISOSURFACE "t.pmb" + -- creates ASCII (.pmesh) or binary (.pmb) file (a Jmol-specific file format) + -- relatively compact format + -- can speed up loading of meshes and contours + -- for filled surfaces, use .jvxl instead + -- read back into Jmol using ISOSURFACE "t.pmesh"/"t.pmb" + -- note that binary files are NOT RECOMMENDED for JSmol because some platforms cannot read them locally + -- example: + + load $methane + isosurface plane {0 0 0 1} map vdw contours 20 + write ISOSURFACE contour.pmb + isosurface contour.pmb + +set labelfor {atomset} "value" + -- allows setting of label without changing current selection + -- uses same syntax as LABEL command after {atomset} + -- for example: + + set labelfor @atoms @myLabel + set labelfor {atomno <= 3} @{["a","b","c"]} + set labelfor {_C && chirality != ""} "%[atomname] %[chirality]" + +color NUCLEIC -- for nucleic only (others will be grey) -- based on DSSR nucleic color scheme: G green, C yellow, A red, T blue, U cyan + +set cartoonBlocks; set cartoonBlockHeight x.x -- for nucleic only -- uses DSSR data if present (using calculate structure DSSR or load =xxxx/dssr) + -- displays a DSSR block for each base based on dssr.nts.frame -- x.x is height of box in Angstroms (default 0.5) + +color property DSSR type + -- where type is one of: + bulges + coaxStacks + hairpins + hbonds + helicies + iloops + isoCanonPairs + junctions + kissingLoops + multiplets + nonStack + nts + pairs + ssSegments + stacks + stems + -- color is based on index into the list of the given structures + -- 0 (not of that structure), 1 (first entry), 2 (second entry), etc. + -- for example: + + load =4fe5/dssr + cartoons only;set cartoonSteps; + color property dssr junctions + +x = {*}.find(smartsString,"map") -- returns an array of arrays of atom indices (0-based) + -- indicates exact correlation between atoms in {*} and atoms of smartsString + -- only unique sets of atoms are found, not every possibility + -- for example: + + load $caffeine + s = show("smiles") // N1(C)C(=O)c2c3N(C)C1=O.[n]2(C)c[n]3 + print {*}.find(s,"map").format("JSON") + [ [ 0,1,12,13,11,6,4,5,2,3,9,10,8,7 ] ] + + load :caffeine + print {*}.find(s,"map").format("JSON") + [ [ 4,13,8,0,6,7,2,11,9,1,3,12,10,5 ] ] + + +MACRO bz; createWS("p1") (still not documented) + -- creates a Wigner-Seitz cell as polygon id "p1" + -- requires current unit cell to be primitive to work correctly + -- polyhedron can be shifted using POLYHEDRA OFFSET + -- default ID "pbz1_1_" for just CREATEWS() + + +POLYHEDRA UNITCELL + -- creates a polyhedron (12-gon in this case) around each of the + currerntly selected atoms that has that bonding environment + -- DOES NOT require atoms at these positions - can simply use the + unit cell and periodicity to find the relevant atom positions. + -- will check bonding as necessary using autobonding parameters + -- accepts all standard polyhedra options. For example: + + polyhedra 12,16 3.5 UNITCELL + +array.getProperty("xxxx") -- same as getproperty(array, "xxxx") + -- drills down into an array of associative arrays to get sublist + -- can be used with [SELECT ... WHERE] + +SELECT x where x is an array of integers or array of array of integers + +connect NBO + - connect atoms in the currently visible model using a resonance structure configuration found in an NBO .46 or .nbo file + - where is one of alpha|beta|46|46a|46b|nrtstr_n|nrtstra_n|rs_n|rsa_n|rsb_n + +label %[nbo]; + - label an atom using a resonance structure configuration found in an NBO .46 or .nbo file + - requires a previous connect NBO + +set nboCharges (default true) + - determines whether formal charges are also displayed with LABEL %[nbo] + +CONNECT for quintuple and sextuple bonds. + -- connect @1 @2 quintuple + -- connect @1 @2 sextuple + -- readily saved in state + -- saving in MOL file as bond type 15 and 16 + +set labelOffset [mode sx sy sz ax ay az] + set labelOffset [sx, sy, sz] + set labelOffset [mode, sx, sy, sz, ax, ay, az] + + where + + sx,sy,sz are screen coord offsets + -- applied after view rotation + -- sy > 0 LOWERS label + ax,ay,az are xyz position (in Angstroms; applied before view rotation) + mode == 0 indicates xyz position is absolute and sx sy sz are Angstroms + mode == 1 indicates xyz position is relative to atom position and sx sy sz are Angstroms + mode == 2 indicates xyz is absolute, and sx sy sz positions are screen pixels + mode == 3 indicates xyz is relative, and sx sy sz positions are screen pixels + defaults: mode == 1; ax = ay = az = 0 + +getProperty("cifInfo", "c:/temp/test.cif") + -- reads CIF file data in structured format + -- automatically uses CIF 1.0 or CIF 2.0, as needed. + -- if file name is missing, uses current model file + + +load AUDIO audiofilename + -- JavaScript can read WAV, MP3, and OGG files + -- application can read WAV files + +polyhedra AUTO ... + -- sets polyhedron radius automatically, using "MAXIMUM GAP" rule + -- see Zur Abgrenzung der Koordinationssphäre und Ermittlung der Koordinationszahl in Kristallstrukturen + G. O. Brunner, D. Schwarzenbach, Zeitschrift fur Kristallographie - Crystalline Materials, 1971, vol 133, issues 1-6 127-133 + http://www.degruyter.com/view/j/zkri.1971.133.issue-1-6/zkri.1971.133.16.127/zkri.1971.133.16.127.xml?rskey=sfBNTx&result=1 + +polyhedron -x.x .... + -- sets maximum radius for gap calculation to be x.x + +print @1.label("%[unitid]") + -- generates unit IDs for atoms or residues + -- unit IDs are a proposed general standard for representing atoms and residues in biomolecules + -- see http://rna.bgsu.edu/main/rna-3d-hub-help/unit-ids + -- options follow "-": + + $ print {atomno=3}.label("%[unitid]") // includes residue and atom + |1|A|G|1|OP1||| + + $ print {atomno=3}.label("%[unitid-r]") // residue only + |1|A|G|1|||| + + $ print {atomno=3}.label("%[unitid-mr]") // adds model id + 1EHZ|1|A|G|1|||| + + $ print {atomno=3}.label("%[unitid-mra]") // full unitID + 1EHZ|1|A|G|1|OP1||| + + $ print {atomno=3}.label("%[unitid-mrat]") // full unitID, right-trimmed + 1EHZ|1|A|G|1|OP1 + + -- Note that the full 8-line unit ID is produced under all circumstances. + This is important, because string-matching of unit ids will not work + without all fields completed. For example: + + |1|A|G|1 + + would match + + |1|A|G|11 + + without the closing "|". Likewise, + + |1|A|G|11 + + is not a match for the insertion residue + + |1|A|G|11|||3| + + -- [Editorial note: I agree that it was ill-advised to put the insertion + code at the end. This makes it impossible to efficiently match + residues in full-atom unit IDs.] + + -- Note that in an actual atom label, one needs to add "\n" at the end + and have the label in quotes in order to avoid having "|" mean "new line" + + label "%[unitid]\n" + + not just + + label %[unitid] + + This is a consequence of having defined "|" as new line early on in Jmol + development. + +select within("1ehz|1|A|G|45||||") +print within("1ehz|1|A|G|45||||") + -- unit IDs + -- see http://rna.bgsu.edu/main/rna-3d-hub-help/unit-ids + -- used for annotations, validations, dssr, and rna-3d processing + -- pdbid|model|chain|RESNAME|resno|ATOMNAME|altcode|inscode|symmetry + -- can truncate trailing (but not leading) pipe symbols + 1ehz|1|A|G|15, |1|A|G|15|C2 + -- requires at minimum a model number, chain, and residue number + |1|A||15 + -- ATOMNAME blank indicates full residue, with altcode indicating "this alt_id or no alt_id" (a configuration) + -- ATOMNAME nonblank indicates one atom, with altcode indicating "exactly this alt_id" (a location) + -- can be multiple, white space, comma, "]", "[", and double quote ignored + 1ehz|1|A|G|15||||,1ehz|1|A|U|59||||,1ehz|1|A|C|60||| + +select shortcuts for nucleic acid structures + -- for example: select junctions; select kissingloops + -- activated after load =xxxx/dssr or calculate structure dssr + -- includes: + "@bulges within(dssr,'bulges')", + "@coaxStacks within(dssr,'coaxStacks')", + "@hairpins within(dssr,'hairpins')", + "@hbonds within(dssr,'hbonds')", + "@helices within(dssr,'helices')", + "@iloops within(dssr,'iloops')", + "@isoCanonPairs within(dssr,'isoCanonPairs')", + "@junctions within(dssr,'junctions')", + "@kissingLoops within(dssr,'kissingLoops')", + "@multiplets within(dssr,'multiplets')", + "@nonStack within(dssr,'nonStack')", + "@nts within(dssr,'nts')", + "@naChains within(dssr,'naChains')", + "@pairs within(dssr,'pairs')", + "@ssSegments within(dssr,'ssSegments')", + "@stacks within(dssr,'stacks')", + "@stems within(dssr,'stems')", + + +mapOfMaps.array(k) + -- generates an array of maps from a map of maps by + storing all top-level map keys under key k in lower-level map + -- reversed by another .array(k) + -- causes a script exception if mapOfMaps is not a map of maps + +arrayOfMaps.array(k) + -- generates a map of maps from an array of maps by + removing each map's key k and using that as the key for that map value + -- reversed by another .array(k) + -- causes a script exception if arrayOfMaps is not an array of maps or key k is not present in all maps + +Jmol SMILES/SMARTS generic polySMILES polyhedron option @PHn + -- does a SMILES search for the local coordination environment around a center. + -- particularly valuable for inorganic compounds and metallic or intermetallic network crystal structures + +write CIF (only minimal) + + +@1.find("crystalClass", pt) + -- generates a list of points based on a model's crystal class (point group) + -- uses @1 just to find the unit cell and space group + -- optional pt is used as a generator (defaults to @1) + -- example: + load =ams/calcite 1 + x = @3.find("crystalClass") + print pointgroup(x).name + draw points @x + polyhedra ID p {0 0 0} to @x + + +pointgroup("spacegroup", @1) + -- analyzes the point group (crystal class) of a crystal. + -- uses three irrational-coordinate points to generate all possible operators + -- creates a map with keys (somewhat variable depending upon axes present): + + C2 + C3 + Ci + Cs + S6 + detail + distanceTolerance + linearTolerance + nAtoms + nC2 + nC3 + nCi + nCn + nCs + nS6 + nSn + nTotal + name + points + principalAxis + + + +x = pointgroup([array of points],center) + -- center is optional, defaulting to average of the points + -- returns a map: + pts = [ {-1.0132 0.585 0.0012999999},{1.0132 0.585 0.0012999999},{0.0 -1.17 0.0012999999} ] + print pointgroup(pts,{0 0 0}) + { + "C2" : + [ + {0.8660127 -0.50001717 0.0022222984} + {-0.8660127 -0.50001717 0.0022222984} + {0.0 0.99999756 0.002222217} + ] + "C3" : + [ + {0.0019245904 -0.0011111083 -0.99999756} + ] + "Cs" : + [ + {0.0019245904 -0.0011111085 -0.99999756} + {-0.49998164 -0.866036 0.0} + {0.49998164 -0.866036 0.0} + {1.0 0.0 0.0} + ] + "S3" : + [ + {0.0019245904 -0.0011111083 -0.99999756} + ] + "center" : {0.0 0.0 0.0} + "detail" : "# 3 atoms;" + "distanceTolerance" : 0.2 + "linearTolerance" : 8.0 + "nAtoms" : 3 + "nC2" : 3 + "nC3" : 1 + "nCi" : 0 + "nCn" : 4 + "nCs" : 4 + "nS3" : 1 + "nSn" : 1 + "nTotal" : 12 + "name" : "D3h" + "principalAxis" : {0.0019245904 -0.0011111083 -0.99999756} + "principalPlane" : {0.0019245904 -0.0011111085 -0.99999756} + } + + +calculate symmetry polyhedra {atomset} + -- selectively calculates polyhedra. + -- for example: calculate symmetry polyhedra {polyhedra(4)} + +calculate symmetry polyhedra id + -- selectively calculates polyhedra for a given ID. + -- for example: calculate symmetry polyhedra "poly1" + + +_hoverLabel + -- reports general hover label set by hover command + +_hoverEnabled + -- reports if hover is enabled or not + + /invertStereo/ flag for SMARTS search + -- allows quick check for enantiomers + -- example: select search("/invertStereo/C[C@H](Br)CC") will match (R)-2-bromobutane + even though it is for (S)-2-bromobutane + +{*}.find("SMILES/open") + -- generates OpenSMILES string for selected atoms + -- applies OpenSMILES aromaticity rules for 5-, 6-, and 7-membered rings + -- not chemical -- allows exocyclic c=C bonds and [nH] in 6-membered rings + -- also adds atom class if property_atomClass is nonzero + -- for example: + + $ load $2-butanol + $ @2.property_atomclass=2 + $ @3.property_atomclass=3 + $ @5.property_atomclass=5 + $ print {*}.find("smiles/open") + + C[C@H:2]([OH:5])[CH2:3]C + +set window width height +set window [width height] +set window "xxx.png" + + +point(unitcell, {i, j, k}) + -- returns the Cartesian point corresponding to a specific coordinate in a unit cell system. + -- unitcell is an array of the form [origin, va, vb, vc] + -- {i j k} is a point in the unit cell + -- for general use -- does not require actual setting of the model's unit cell + +UNITCELL TRANSFORM @m4x4 + -- direct 4x4 matrix transformation of a unit cell + +unitcell("a=...,b=...,c=...,alpha=...,beta=...,gamma=....") + - array of center and three vectors + - example: + $ print unitcell("a=10,b=10,c=20,alpha=90,beta=90,gamma=129") +{0.0 0.0 0.0} +{10.0 0.0 0.0} +{-6.293203 7.7714605 0.0} +{-8.742278E-7 -1.8328565E-6 20.0} + +load ... unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." + +unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." + -- only the numbers are read; everything else is ignored, so order is important here + -- uses the format created by show unitcell/a + +unitcell RECIPROCAL 2 + -- as integer, multiples of pi + +unitcell reciprocal x.x + -- allows scaling of reciprocal cell, similar to unitcell("reciprocal", x.x) + +expanded unitcell() function + -- adds additional types: "A", "B", "C", "I", "F" + -- default is the lattice type of the model's space group + -- not just cubic; "BCC" is converted to "I" + -- for example: + + load =ams/silicon 15 packed // Cmca + draw id "uc" diameter 0.1 unitcell mesh nofill color black + unitcell @{unitcell("primitive")} + color unitcell red + unitcell 0.1 + axes unitcell + axes on + + +calculate hydrogens TRUE + -- calculates hydrogens and multiple bonding + -- same as + + calculate hydrogens + connect aromatic modify + calculate aromatic + + -- similar to, but not identical to set pdbAddHydrogens + -- allows reasonable addition of multiple bonds to proteins after loading + + + + +JmolVersion="14.31.26" + also 15.1.26 + +new feature: $isosurface.getProperty("values"), $isosurface.getProperty("vertices") corrected for invalid vertices + +bug fix: getProperty("isosurfaceData.vertices") returning too many vertices + - retrieves only the vertices that are on the surface, not excluded vertices + - retrieves only vertices for selected sets if using SET or SUBSET + - works best with ISOSURFACE sasurface (much faster than SOLVENT or MOLECULAR) + - can be used with ISOSURFACE solvent or ISOSURFACE molecular + with careful adjustment of solvent probe diameter (1.2 recommended, not 1.4) + and RESOLUTION + - with 1.4, there is a tendency to get interior artifacts + - note that this function will return "null" if there is no isosurface or if + no single isosurface is selected (by issuing ISOSURFACE ID xxx ON, for instance) + +new feature: getProperty("isosurfaceData.allVertices") + - returns all vertices, even those excluded as interior artifacts or from unselected sets + +load =6nef +isosurface sasurface +x=$isosurface1.getproperty("vertices") +{*}.property_d = {*}.distance.min(x) +color property_d +slab 50; slab on +draw points @x // to visualize the surface points themselves + +bug fix: Cif2Reader should accept UTF-8 signature "BOM" of three bytes 0xEF 0xBB 0xBF (not 0xFEFF) + +JmolVersion="14.31.25" + also 15.1.25 + +bug fix: isosurface set 1 showing 2nd largest, should show largest +bug fix: save state for isosurface with one set off by one +bug fix: getProperty("isosurfaceData") fails for pocket cavities + +JmolVersion="14.31.24" + also 15.1.24 + +note: isosurface #sets is from print getProperty("shapeInfo.Isosurface[1].volume").length +bug fix: isosurface set 0 not working +bug fix: calculate surfacedistance fails -- wrong parameter in Java method call +bug fix: MoldenReader requires [MO] to be last tag +bug fix: MoldenReader should not report energy units (not always eV) +bug fix: DnD script into script console should run that script. +bug fix: AboutDialog using old splash image + +JmolVersion="14.31.23" + also 15.1.23 + +bug fix: STL and hermite display missing last two residues of trace + +JmolVersion="14.31.22" + also 15.1.22 + +new feature: isosurface subset [1 3 5] cavity vdw + - allows more than one set to be displayed + +new feature: isosurface cavity 1.2 50 vdw + - increases maximum envelope radius from 10 to 50 + - note that large envelope radii can produce artifacts for pocket cavities + - for example: + + load =1wp1 filter "biomolecule 1" + isosurface set 1 select {protein} only pocket cavity 3 20 + isosurface slab none slab plane x=0 + +JmolVersion="14.31.21" + also 15.1.21 + +new feature: InChIKey generation: + load $morphine; print {*}.find("inchi", "key"); + - can be combined with any other valid inchi flag: + load $morphine;print {*}.find("inchi","srel key"); + +new feature: {*}.inchi(options) same as {*}.find("inchi",options); + load $morphine; print {*}.inchi("key"); + +new feature: InChI or InChIKey from SMILES using .inchi(): + print "CCCC".inchi() // uses load("$CCCC") + print "CCCC".inchi("key") + +new feature: InChI or InChIKey from NCI or PubChem shortcut using .inchi(): + print "$caffeine".inchi(); + print "$CCCC".inchi(); + print ":caffeine".inchi("key"); + print ":smiles:CCCC".inchi(); + +new feature: InChI or InChIKey from any MOL file data source using .inchi(): + print load("foo.mol").inchi("key"); + +new feature: InChIKey from InChI: + + $ x = ":morphine".inchi() + $ print x + InChI=1S/C17H19NO3/c1-18-7-6-17-10-3-5-13(20)16(17)21-15-12(19)4-2-9(14(15)17)8-11(10)18/h2-5,10-11,13,16,19-20H,6-8H2,1H3/t10-,11+,13-,16-,17-/m0/s1 + $ print x.inchi("key") + BQJCRHHNABKAKU-KBQPJGBKSA-N + + + +bug: "xxx".find("sequence") assumes xxx is a set of one-character residue IDs + +new feature: adds "xxx".find("sequence",true) + - case-sensitive text search + +new feature: adds "xxx".find("sequence",false) + - case-insensitive text search + + +JmolVersion="14.31.20" + also 15.1.20 + +bug fix: GamessReader should read ENERGY, MP2, CSDD, and CSDD(T) energy types (Mark Perri) + - adds _M.EnergyType + +bug fix: VaspOutcarReader upgrade for Vasp6 + +new feature: initialize INCHI + - for JavaScript specifically, loads the inchi-wasm module asynchronously. + - allows the very first call to {*}.find("inchi") to be active. + - note that a very first call to Jmol.evaluateVar(applet,"{*}.find('inchi')") will still fail. + +new feature: {*}.find("inchi") +new feature: {*}.find("inchi",flags) + - generates InChIs from modelset atoms + - integrates jni-inchi-0.7-jar-with-dependencies.jar + - uses inchi-wasm for JavaScript (R.Apodaca https://github.com/rapodaca/inchi-wasm) + - flags include (https://www.inchi-trust.org/technical-faq-2): + perception flags: DoNotAddH SNon NEWPSOFF + stereo flags: SRel SRac SUCF + more flags: NEWPSOFF SUU SLUUD RecMet FixedH KET 15T + java-only flags: key outputsdf (Java only; still no InChIKey for JavaScript) + - JavaScript is InChI 1.05; Java is still 1.03 + - note: JavaScript-only directories _WASM and _ES6 should not be processed by Google Closure Compiler + +JmolVersion="14.31.19" + -- was released as an overwrite of 14.31.18 :( + +JmolVersion="14.31.18" + also 15.1.18 + + bug fix: MacSpartan Release 1.0.3 (ancient!) skips orientation and orbitals + bug fix: SHOW SPACEGROUP fails for nonstandard space group (=ams/quartz) + + + new feature: Topology CIF (TopoCifParser.java) reading of _topol_xxx records + topoCIF filter "topos_type=x" where x is v, vw, hb, or some concatentation of those using "+" + topoCIF filter "topos_ignore" skips reading of _topol records, reading as standard CIF + + undocumented: set hiddenLinesDashed (14.8.0) + + +JmolVersion="14.31.17" + also 15.1.17 + + bug fix: print 2 > 1.0 gives false. typo introduced 2020.10.02 causes int[>,<,>=,<=] float to fail + bug fix: minimizer step reports should be in user units, not native + bug fix: minimizer initial/final reports should state "/mol" for units + +JmolVersion="14.31.16" + also 15.1.16 + + new feature: (undocumented) now("message") + new feature: now("message","format") + + bug fix: print load("t.tar") should act as load("t.tar|.") to give directory + bug fix: MO linear combination should not show type in info + bug fix: MO squared should show ^2 in info + +// there is no 14.31.15 + +JmolVersion="14.31.14" + also 15.1.15 + +new feature: TAR file reader with zip-like entry loading + load "t.tar|guest/77317/output.log" + +new feature: GenNBOReader supports older NBO 3.0 output.properties rather than missing .46 labels file +new feature: NBO command expanded to allow named orbitals + NBO "C1-C2" + NBO TYPE PNBO "C1-C2" + +JmolVersion="14.31.13" + also 15.1.14 + +bug fix: MoldenReader fails to read [5F] if that record is after the [MO] block. +bug fix: GenNBOReader does not accept spherical s, p designations: 151 152 153 (wh6-a.31) + +JmolVersion="14.31.12" + also 15.1.14 + +bug fix: minimization constraint broken in 14.29.45 + +JmolVersion="14.31.11" + also 15.1.13 + +bug fix: adds fix in script compiler for nonbreaking + space nbsp; \u00a0 from clipping browser text + +JmolVersion="14.31.10" + also 15.1.12 + +bug fix: dots -1.0 does not imply ONLY + +JmolVersion="14.31.9" + also 15.1.11 + +bug fix: set pdbaddhydrogens does not work with PDB files that have some H atoms (but no multiple bonds) +bug fix: MOVETO quaternion jumps (seconds=0) if crude check for change fails + +JmolVersion="14.31.8" + also 15.1.10 + +new feature: point(["{1,2,3}","{2,3,4}",....]) +bug fix: large integer number != operator failure +bug fix: fuxyz vs. fxyz and uxyz +distribution: JSpecview not built in 14.31.5 + +JmolVersion="14.31.7" + also 15.1.9 + +bug fix: PSE file saved to PNGJ may not fully reload (missing surface, for example) +bug fix: atom.occupancy of 0.01 saved as 0.0 + +JmolVersion="14.31.6" + also 15.1.8 +bug fix: msCIF reader not reading ICDD Fourier modulated file. + +JmolVersion="14.31.5" + +bug fix: https for NMRDB +bug fix: JSpecview applies ##SHIFTREFERENCE as HZ for data in PPM +bug fix: JSpecview must ignore ##SHIFTREFERENCE for JEOL, at least for $$ JEOL NMR v1.10 + +JmolVersion="14.31.4" + +bug fix: print format("%0.-3s", "testing") "-" does nothing + +new feature: isosurface S1 VAL [points or atoms] SELECT.... + - calculates isosurface values for a set of points or atoms + - values are created during surface constructions, not after + - for solvent and molecular surfaces, negative value is "inside"; positive is "outside" + - surfaces that are not calculated will give 0 for all values + +new feature: $s1.getProperty("values"); + - retrieves the array of values produced by isosurface s1 VAL + - example: + + load $caffeine + isosurface s1 value {*} select {!_H} only vdw 50% translucent + {*}.property_d = $s1.getproperty("value") + color property_d + +bug fix: NWChem reader does not ignore file-save data block properly +bug fix: get property fileInfo initially or after ZAP throws exception +bug fix: isosurface map colorscheme "rwb" fails, whereas color isosurface "rwb" works + +JmolVersion="14.31.3" + +bug fix: Jmol app does not allow width smaller than about 350 pixels + +JmolVersion="14.31.2" + +bug fix: draw pointgroup C2 3 draws all C2 axes, not just the third + +JmolVersion="14.31.1" + +bug fix: SYNC/sockets should not automatically subscribe to CLICK (which includes drag events) +bug fix: "WRITE IMAGE width height" (with no file name) causes array out of bounds exception +bug fix: SYNC command sending not working with raw JSON or Jmol associative arrays + +JmolVersion="14.31.0" + +new feature: Switch to Java 7, allowing for string-based switch and Files.readAllBytes(). + +bug fix: ellipsoids "csa" scale 0.5 on does not scale +bug fix: implicit refresh required after translateSelected + +new feature: Gaussian reader reads NMR shielding tensors as "csa" +for example: + + load EtOH-nmr.out + frame 2; + wireframe only + ellipsoids set "csa" scale 0.5 + ellipsoids on + +new feature: Gaussian reader reads NMR_J_coupling data +new feature: atom properties can be float[][] arrays + -- for atom-atom values +new feature: MEASUREMENT property_xxx + -- for 2D float[][] properties +new feature: MEASUREMENT VALUE x.x + -- sets a fixed value for a standard measurement +new feature: measurement unit "+xxx" means abs(value) + -- specifically, "+hz" useful for calculation data +new feature: measurement "+hz" units automatically use property_J values +new feature: MEASUREMENT "" where is valid measurement unit +new feature: measure() allows "property_xxx" +new feature: measure() allows "" +for example: + +load EtOH-nmr.out +frame 2; +print @@3.property_J.format("JSON") + + >> [ [ 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-5.8511596,132.96,0.0,-2.16701,3.6352599,1.4761999,1.5346,-0.042426,-11.6895 ] ] + +print measure(@@2, {model=2}, "property_J", "").format("JSON") + + >> [ 124.307,0.0,132.96,119.271,9.69322,0.75008297,4.29308,-6.40836,115.875 ] + + +measure @@2 @@3 "+hz" // "+hz" for absolute value and indicates we want to use this property + +measure @@2 @@3 property_J "hz" + +print measure(@@2, @@3, "property_J", "hz") + + >> property_J 133.0 "133.0 hz" C2/2 #2 H3/2 #3 + +print measure(@@2, @@8, "property_J", "+hz") + + >> property_J 6.4 "6.4 hz" C2/2 #2 O8/2 #8 + + +new feature: SYNC sockets completely rewritten, allowing for substantially more + feedback and simpler JSON-based interface. Many features of the + Molecular Playground now implemented in Jmol itself. Features include: + - simplification of sockets, allowing for just one that is use for + input and outoput + - default short-message callbacks for all significant callbacks + - added set XxxxCallback SYNC:ON and SYNC:OFF for subscribing to + full callback Object[] data information. + - better JSON creation/parsing + - simpler class structure + - allows Molecular Playground-like gestures to be socket-defined. + + This from org.openscience.jmol.appl.jsonkiosk.JsonNioService: + +/** + * A class for interacting with Jmol over local sockets. + * + * See also org.molecularplayground.MPJmolApp.java for how this works. + * Note that this service does not require MPJmolApp -- it is a package + * in the standard Jmol app. + * + * Listens over a port on the local host for instructions on what to display. + * Instructions come in over the port as JSON strings. + * + * This class uses the Naga asynchronous socket network I/O package (NIO), the + * JSON.org JSON package and Jmol. + * + * http://code.google.com/p/naga/ + * + * Initial versions of this code, including the JSON-base protocol were created + * by Adam Williams, U-Mass Amherst see http://MolecularPlayground.org and + * org.openscience.jmol.molecularplayground.MPJmolApp.java + * + * + * + * Sequence of events: + * + * 1) Jmol initiates server listening on a port using the JmolScript + * command with an arbitrary negative port number. + * (-30000 used here just for an example): + * + * sync -30000 + * + * This can be done also through the command line using + * + * jmol -P -30000 + * + * or + * + * jmol --port -30000 + * + * Jmol will respond to System.out: + * + * JsonNioServerThread-JmolNioServer JsonNioServerSocket on 30000 + * + * + * 2) Client sends handshake to port 30000. As with all communications to this service, + * there must be no new-line characters (\n) ANYWHERE in the JSON being sent EXCEPT + * for a single message terminator: + * + * + * {"magic": "JmolApp", "role": "out"}\n + * + * where "out" here indicates that this socket is for Jmol (reply) output. + * + * Jmol will reply with the 30-byte response: + * + * {"type":"reply","reply":"OK"}\n + * + * (The client may see only 29 bytes, as it may or may not strip the final \n.) + * + * Optionally, the client may also indicate a specified port for Jmol input. + * But typically this is just the currently active port. + * + * {"magic": "JmolApp", "role": "in"}\n + * + * Jmol will reply with + * + * {"type": "reply", "reply": "OK"}\n; + * + * + * 3) Client sequentially sends Jmol script commands over the "in" socket: + * + * {"type": "command", "command": command} + * + * where required command is some JSON-escaped string such as "rotate x 30" or "load $caffeine". + * For example: + * + * {"type": "command", "command": "var atoms = {_C or _H};select atoms"}\n + * + * + * For the rest of this discussion, we will use the Jmol command that communicates with another Jmol instance + * rather than this JSON context: + * + * SYNC 30000 "var atoms = {_C or _H};select atoms" + * + * in this case. + * + * + * 4) Jmol throughout this process is sending replies that come + * from the Jmol Statuslistener class. For example: + * + * {"type":"reply","reply":"SCRIPT:script 8 started"} + * {"type":"reply","reply":"SCRIPT:Script completed"} + * {"type":"reply","reply":"SCRIPT:Jmol script terminated"} + * + * Note that your client will be subscribed to many of the Jmol status callbacks + * (see org.openscience.jmol.app.jmolpanel.StatusListener), including: + * + * LOADSTRUCT + * ANIMFRAME + * SCRIPT + * ECHO + * PICK + * CLICK + * RESIZE + * ERROR + * MINIMIZATION + * STRUCTUREMODIFIED + * + * All scripts and callback messages run in order but asynchronously in Jmol. You do not need + * to wait for one script to be finished before issuing another; there is a queue that handles that. + * If you want to be sure that a particular script has been run, simply add a MESSAGE command + * as its last part: + * + * sync 30000 "background blue;message The background is blue now" + * + * and it will appear as a SCRIPT callback: + * + * {"type":"reply","reply":"SCRIPT:The background is blue now"} + * + * after which you can handle that event appropriately. + * + * The SCRIPT callback can be particularly useful to monitor: + * + * sync 30000 "backgrund blue" + * + * {"type":"reply","reply":"SCRIPT:script compiler ERROR: command expected\n----\n >>>> backgrund blue <<<<"} + * + * Note that the ERROR callback does not fire for compile errors, + * only for errors found while running a parsed script: + * + * {"type":"reply","reply":"ERROR:ScriptException"} + * + * Note that all of these messages are "thumbnails" in the sense that they are just a message string. + * You can subscribe to a full report for any of these callbacks using 'SYNC:ON' for the + * callback function: + * + * set XxxxxCallback SYNC:ON + * + * For example, issuing + * + * sync 30000 "load $caffeine" + * + * gives the simple reply: + * + * {"type":"reply","reply":"LOADSTRUCT:https://cactus.nci.nih.gov/chemical/structure/caffeine/file?format=sdf&get3d=true"} + * + * but after + * + * sync 30000 "set LoadStructCallback 'SYNC:ON' + * + * we get additional details, an array of data with nine elements: + * + * {"type":"reply","reply":["LOADSTRUCT", + * "https://cactus.nci.nih.gov/chemical/structure/caffeine/file?format=sdf&get3d=true", + * "file?format=sdf&get3d=true", + * "C8H10N4O2", null, 3, "1.1", "1.1", null]} + * + * Exact specifications for these callbacks are not well documented. + * See org.jmol.viewer.StatusManager code for details. + * + * Remove the callback listener using + * + * set XxxxxCallback SYNC:OFF + * + * Note that unlike Java, you get only one SYNC callback; this is not an array of listeners. + * + * + * 5) Shutdown can be requested by sending + * + * {"type": "quit"}\n + * + * or by issuing the command + * + * sync 30000 "exitjmol" + * + * + * Note that the Molecular Playground implemented an extensive set of gesture-handling methods + * that are also available via this interface. Many of these methods utilize the JmolViewer.syncScript() + * method, which directly manipulates the display as though someone were using a mouse. + * + * {"type" : "move", "style" : "rotate", "x" : deltaX, "y", deltaY } + * {"type" : "move", "style" : "translate", "x" : deltaX, "y", deltaY } + * {"type" : "move", "style" : "zoom", "scale" : scale } (1.0 = 100%) + * {"type" : "sync", "sync" : syncText } + * {"type" : "touch", + * "eventType" : eventType, + * "touchID" : touchID, + * "iData" : idata, + * "time" : time, "x" : x, "y" : y, "z" : z } + * + * For details on the "touch" type, see org.jmol.viewer.ActionManagerMT::processEvent + * + * Note that all of the move and sync commands utilize the Jmol sync functionality originally + * intended for applets. So any valid sync command may be used with the "sync" style. These include + * essentially all the actions that a user can make with a mouse, including the + * following, where the notation <....> represents a number of a given type. These + * events interrupt any currently running script, just as with typical mouse actions. + * + * "centerAt " + * -- set {ptx,pty,ptz} at screen (x,y) + * "rotateMolecule " + * "rotateXYBy " + * "rotateZBy " + * "rotateZBy " (with center reset) + * "rotateArcBall " + * "spinXYBy " + * -- a "flick" gesture + * "translateXYBy " + * "zoomBy " + * "zoomByFactor " + * "zoomByFactor " (with center reset) + * + * + * + */ + +JmolVersion="14.30.3" + +new feature: FAHReader FAH:: reads FoldingAtHome Top.json and FrameNNN.json files + -- FAH:: is required for Frame files but not the Top file. + -- automatic calculation of structure using DSSP + -- Both files are required; three load options: + + LOAD FILES "ViewerTop.json" + "ViewerFrame22.json" // explicit joining to two files + + LOAD ViewerTop.json; + LOAD XYZ FAH::ViewerFrame22.json // first the atoms, then the coordinates + + LOAD FAH::ViewerFrame22.json // just the coordinates with associated ViewerTop.json assumed present + + -- Subsequent calls to LOAD XYZ will replace coordinates and recalculate DSSP only. + + +JmolVersion="14.30.2" + +bug fix: CrystalReader fails to read models in CRYSTAL17 double-walled nanotube file tn0.out + +JmolVersion="14.30.1" + +new feature: (undocumented) set picking dragMolecule + -- acts like set picking dragSelected + -- LEFT-drag to translate; ALT-LEFT-drag to rotate + -- useful for two more molecules (covalently bonded units) + +new feature: set picking dragModel + -- acts like set picking dragMolecule or dragSelected + -- LEFT-drag to translate; ALT-LEFT-drag to rotate + -- useful for two more models not loaded using set appendNew FALSE + + +JmolVersion="14.30.0" + + +bug fix: CrystalReader for slab nanotubes. + - note that we are not processing the nonstandard helical symmetry operations + +Note - The move to a new minor version (14.30) is due to changes in the +------ Jmol Java/SwingJS application, not the JavaScript version. In particular, +------ changes in the way the org.openscience.jmol.app classes are +------ organized required taking this step. + +new feature: set minimizationMaxAtoms + - maximum number of atoms allowed for MMFF minimization + - defaults to 200 + +new feature: MEASURE SEARCH "{[H]}CC{[H]}" + - uses SMARTS searching, selecting only the specified atoms + (in this case, all vicinal hydrogen atoms attached to carbon) + - actually available but undocumented since 2013 + +new feature: SET MEASUREMENTUNITS HZ + - for example, set measurementUnits HZ; MEASURE SEARCH "{[H]}CC{[H]}" will display all 1H-1H coupling constants for a model + - display calculated three-bond (standard vicinal) H-H J coupling constants (SMARTS {[H]}CC{[H]}) calculated + using Haasnoot-Altona-Karplus substituent electronegativity-adjusted algorithm instead of distances + - If there are fewer than three substituents on each central atom, or if + either central atom is not carbon, defaults to general Karplus equation. + - see org.jmol.quantum.NMRCalculation.java for algorithm and bibliographic details + - expanded from use in solid-state NMR to any model EXCEPT magres files, + which instead use HZ in association with solid-state tensors + +new feature: SET MEASUREMENTUNITS NOE_HZ + - adds NOE calculation for H atoms that are more then three bonds apart + along with vicinal and geminal + - not validated; from Janocchio 1.1 (https://sourceforge.net/projects/janocchio/) + +new feature: Janocchio application included as a plugin (preliminary) + - Java only; totally experimental; VERY preliminary + - org.openscience.jmol.app.janocchio + - required some refactoring of Jmol app classes + - commit number 22001! + +new feature: LOAD ... CENTROID + - for molecular crystal structures + - loads one or more unit cells (as specified by {nx ny nz}) + exploring covalent bonding so that molecules that have their centroid + (center of geometry) within the specified block of cells are built. + - available but undocumented since 2011 + - example: load =cod/1001253 {1 1 1} centroid + note that {1 1 1} here is unnecessary, as it is the default + +bug fix: "DOMReader" not "DOMReadaer" in File Manager + +JmolVersion="14.29.55" + +bug fix: show chemical image has no image +bug fix: dotted lines with antialiasing are too thin and half the spacing + +JmolVersion="14.29.54" + +new feature: ELLIPSOID ID xx axes [...] [...] [...] +new feature: ELLIPSOID ID xx axes [ [...][...][...] ] +new feature: ELLIPSOID ID xx axes [ pt pt pt ] +new feature: ELLIPSOID ID xx axes matrix3f +new feature: ELLIPSOID ID xx scale [ a b c ] +new feature: ELLIPSOID ID xx scale pt + +new feature: set macroDirectory [default: https://chemapps.stolaf.edu/jmol/macros] + - holds macros.json, which points to macro files + - no longer hard-coded into Jmol + +new feature: adds MACRO topond +new feature: adds MACRO crystal +new feature: adds MACRO topology +new feature: adds filter "topos" to load command to allow for hypothetical unit cells with dimension a=1. + +bug fix: symop(@1,@2,"matrix") should give an array of matricies, one for each relevant operation +bug fix: print (-0.0001).format("%3.2f") should print 0.00, not -0.00 +bug fix: CRYSTAL reader fixes for TOPOND output +bug fix: MOLDEN fix for allowing beta set to start with (nCoef + 1) + +JmolVersion="14.29.53" + +bug fix: PyMOL PSE reader broken for broken PyMOL 2.3.0 + +JmolVersion="14.29.52" + +bug fix: CASTEP reader broken by Siesta %block check in Resolver + + +JmolVersion="14.29.51" + +bug fix: (undocumented) measure ID "xx" ... buggy + + -fixes measure vertical center when using ID + -adds id, hidden, visible to getproperty measurementInfo + +JmolVersion="14.29.50" + +bug fix: SiestaReader upgrade +bug fix: load =3dna/val validation loading does not work + +JmolVersion="14.29.49" + +bug fix: isosurface cutoff +0.3 does not work to indicate positive only for difference electron density maps +bug fix: load =3dna/val validation loading does not work (same reason as 14.29.28) + +JmolVersion="14.29.48" + +bug fix: LOAD xxxx:: broken in 14.29.25 + +JmolVersion="14.29.47" + +bug fix: standard PDB files (no hydrogens and no multiple bonds) should not require /aromaticPlanar/ + in search() selection. + +JmolVersion="14.29.46" + +bug fix: ModelKit menu broken in 14.29.45 + +JmolVersion="14.29.45" + +bug fix: Java applet fails with class not found / static reference error +bug fix: Spartan reader files missing from applet JAR collection +bug fix: SDF writing should preserve order of user data + +bug fix: symop(@3, @4, "array") should return the full set of all the operators that map atom 3 to atom 4 + +new feature intersection(ptLine, vLine, ptCenter, radius) + -- intersection of a line with a sphere -- return list of 0, 1, or 2 points + +new feature: (array-of-hash).pivot(key) + -- turns an array of hashes into a hash of arrays of hashes + -- like a pivot table for an array, but based on the value of a hash + key within each hash element of the array, not the element itself + -- returns a (hash-of-arrays-of-hashes) of the array elements grouped + by the stringified values of the specified key. + -- for example: + + a = [ + {label:"C3", id:1}, + {label:"C3", id:2}, + {label:"C2", id:3} + ] + + a.pivot("label") = { + "C3":[{label:"C3", id:1}, {label:"C3", id:2}], + "C2":[{label:"C2", id:3}] + } + +new feature: (array-of-hash).pivot(key1, key2, ...,sep) + -- returns a (hash-of-array-of-hash) of the array elements grouped by the values of these keys, + combined as a string using the separator given as the last parameter + -- for example: + + $ load =ams/halite 1 packed + $ invariants = symop(@3,@3,"array") + $ uniqueOps = invariants.pivot("label", "axispoint", "axisVector", "+") + + This code is cataloging all of operators of space group #255 (F m 3 m) that + leave atom 3 unchanged -- invariant. There are 48 such operations, but some of + them are about the same axis. The two rotations for a given C3 or C4 are now combined + into one element of uniqueOps, since they both have the same label, axispoint, and axisVector, + just different rotations. + +new feature: SHOW xxxx/!whatever + -- show lines without whatever using /! + +new feature ModelKit command + -- particularly designed for crystallographic work + -- turning the ModelKit on/off - same as SET modelKitMode: + + ModelKit (ON) + ModelKit OFF + + -- configuration options include the following, where (xxx) is optional, CAPS is default: + + ModelKit addHydrogens [TRUE|false] + ModelKit clickToSetElement [TRUE|false] + ModelKit showSymopInfo [TRUE|false] + + ModelKit (mode) MOLECULAR + ModelKit (mode) view + ModelKit (mode) edit + ModelKit + ModelKit (unitcell) EXTEND + ModelKit (unitcell) packed + + ModelKit (edit) APPLYFULL + ModelKit (edit) applyLocal + ModelKit (edit) retainLocal + ModelKit ModelKit + ModelKit (view) symop [n] + ModelKit (view) symop "x,-y,z" + ModelKit (view) symop [[4x4 matrix]] + + ModelKit (view) offset {i j k} + + ModelKit center @n + ModelKit center {point} (can be fractional by adding "/1" to at least one coord) + ModelKit center {atoms} + + ModelKit (set) element [name or symbol] + + + -- configuration options can be given sequentially within one ModelKit command or in individual commands + + + -- examples: + + ModelKit mode view symop 5 center @3 + ModelKit mode view symop 5 center @3 offset {0 0 0} // unitized [0,1) + + -- action options include alternatives the commands in bold (ASSIGN is undocumented): + + ModelKit ROTATE ... (for example, ROTATE BOND @1 @2 degrees) + ModelKit ROTATESELECTED ... + ModelKit ASSIGN ATOM @1 [symbol|pl|mi] + ModelKit ASSIGN BOND @1 [0,1,2,3,4,5,p,m] + ModelKit ASSIGN CONNECT @1 @2 + +new feature DRAW SYMOP @2 OFFSET {1 0 0} + + -- allows lattice OFFSET, where {0 0 0} is always into the unitcell [0, 1) + + +bug fix: MINIMIZE CONSTRAINT for dihedral does not work. +new feature set mkAddHydrogens default true; set false to not add H atoms when working with modelKitMode + +JmolVersion="14.29.44" + +bug fix: 0 + {3.4, 0, 0} should give 3, not 0 +bug fix: + +JmolVersion="14.29.43" + +bug fix: navigate TRACE does not work in JavaScript +bug fix: navigate TRACE followed by "quit" in console will not restart + +JmolVersion="14.29.42" + +bug fix: MolReader not assigning _M.dimension to "2D" or "3D", just the overall auxiliaryInfo.dimension + +JmolVersion="14.29.41" + +bug fix: CrystalReader does not skip over INFORMATION or WARNING line in CRYSTAL output files + +bug fix: symop("x,y,z",{0 0 1}) does not return correct value for unit cells oriented by a b c axes + +bug fix: OutputManager and FileManager fix for WRITE PDB "https://..." sending information to a server + +bug fix: JSmolJME.js miscodings cause error message in JSME + +bug fix: nmr_predict_HC.htm not correlating signals to structure correctly + +bug fix: JSpecView peak tabs for simulation or correlation in JmolJDX not proper width + +JmolVersion="14.29.40" + +bug fix: centerAt AVERAGE fix + +JmolVersion="14.29.39" + +new feature: capture SCRIPT "some script" + - captures the given script +new feature: DELAY 1 while capturing inserts a one-second delay into the GIF animation + - thus, the following is a +/-20-degree looping rock + around the Y axis with a 2-second wait at each end: + + CAPTURE "t.gif" LOOP SCRIPT "rotate y 20 20;delay 2;rotate y -40 -40;delay 2;rotate y 20 20;" + +bug fix: JSpecView inline loading fails due to null file name assignment - now "[inline]" +bug fix: JSpecView inline loading does not save data needed for export SOURCE + + +JmolVersion="14.29.38" + +bug fix: ModelKit needs more slop for touch drag release and clicking + +new feature: CRYSTAL TOPOND TRHO and TLAT reader + -- reads critical point information in Bader analysis + +JmolVersion="14.29.37" + +new feature: MO titleformat "...%3.1E"..." allows rounding of energy value +bug fix: (Java only) Jmol console does not accept paste with first character = '\n' + +JmolVersion="14.29.36" + +bug fix: getProperty("filecontents",filename) does not work. + +JmolVersion="14.29.35" + +bug fix: Jmol.jar does not contain JSpecView class files + +JmolVersion="14.29.34" + +bug fix: processing of MagneticCIF _space_group_magn.transform_BNS_Pp_abc '-a+b,c,a+b;1/2,1,1/2' + fails + +JmolVersion="14.29.33" + +bug fix: (JavaScript only) in state creation for wireframe and measure + for integer Angstrom size, for example WIREFRAME 1.0 + +JmolVersion="14.29.32" + +bug fix: (JavaScript only) script with raw {...} expression fails to compile + +JmolVersion="14.29.31" + +bug fix: (JavaScript only) ModelKit checkboxes broken in atom submenu. (JSmol jsmoljs/JmolMenu.js) + +JmolVersion="14.29.30" + +RELEASE NOTE: JmolApplet*.jar Java files are no longer distributed in JSmol.zip. + See the main release zip file for these. + +bug fix: H--Y hydrogen bonds miscalculated due to length maximum miscoded in 14.29.27 + // JmolVersion="14.29.30" 01/27/2019 -- fixes bug of 10/29/2018 + +JmolVersion="14.29.29" + +new feature: print intersection(point vLine center radius) // 11/28/18 + - returns a list of 0 to 2 points representing the intersection of + - a line through point with vector vLine and a sphere of radius about center + - allows for 3D building with constraints of a screen coordinate and a + distance from an atom + +doc fix: intersection(point1 point2 point3) should be intersection(point1 vector1 point2) + - closest point to point2 on a line through point1 in the direction vector1 + +bug fix: intersection() function changes value of point2 + +bug fix: CrystalReader not reading vibration data for fragment calculation + +JmolVersion="14.29.28" + +bug fix: ModelKit appending broken in 14.29.25 10/10/18 + +new feature: assign atom "C" {2 2 2} + - adds an unbonded atom at the given position + +JmolVersion="14.29.27" + +new feature: CrystalReader auxiliary info: + * + * primitiveToCrystal M3 transforming primitive lattice to conventional lattice + * + * mat4PrimitiveToCrystal M4 for use in transforming symmetry operations + * + * mat4CrystalToPrimitive M4 convenience inverse of mat4PrimitiveToCrystal + * + * fileSymmetryOperations List symmetry operators (primitive) + * + * Drawing primitive unitcell operations: + * + * ops = _M.fileSystemOperations + * + * DRAW SYMOP @{ops[2]} + * + * If using the conventional cell, you can use its operators, or you can + * limit yourself this primitive subset using: + * + * mp2c = _M.mat4PrimitiveToCrystal + * + * mc2p = _M.mat4CrystalToPrimitive + * + * DRAW SYMOP @{mc2p * ops[2] * mp2c} + * +bug fix: CrystalReader not showing proper primitive cell with UNITCELL PRIMITIVE +bug fix: missing == for matrix3f and matrix4f +bug fix: draw symop with offset unitcell misses planes +bug fix: calculate hbond too generous for H--Y bond length -- max set at 2.2 Angstroms +bug fix: Jmol application "first frame" toolbar button broken +bug fix: script "inline" broken + +JmolVersion="14.29.26" + +bug fix: unitcell command with fractional translation fails +bug fix: CRYSTAL slab file can end up with emtpy-atom model + +JmolVersion="14.29.25" + +bug fix: MCIF (magnetic cif) reader does not handle symmetry operations with n/16. + +JmolVersion="14.29.24" + +bug fix: set language broken for Jmol application +bug fix: CRYSTAL reader can read one last 0-atom model +bug fix: 3-membered aziridine with non-H substituent should be chiral. +bug fix: isosurface "?" fails in JavaScript + +JmolVersion="14.29.23" + +bug fix: draw HKL {1 2 2} (undocumented) not working +bug fix: draw PLANE @pickedList not working +bug fix: draw intercept unitcell PLANE @pickedList not working + +JmolVersion="14.29.22" + +bug fix: (JSmol only) menu items that are checkboxes do not work + +https://sourceforge.net/p/jsmol/code/HEAD/tree/trunk/dist/tmp/coremenu.z.js?format=raw +https://sourceforge.net/p/jsmol/code/HEAD/tree/trunk/dist/tmp/corejsvmenu.z.js?format=raw + +can be placed in j2s/core as a quick fix + +JmolVersion="14.29.21" + +bug fix: set measurement 5 (integer; pixels) produces no line. +bug fix: polyhedra flat restored + +JmolVersion="14.29.20" + +feature change: removes (older, nonfunctional) NBO plug-in. (See GitHub Jmol-SwingJS) +new feature: allows plugin.properties to contain ";disabled", removing it from the Plug-In menu +new feature: adds ISOSURFACE [f1, filename1, f2, filename2, ...] + - allows linear combination of isosurfaces + - all grids must be identical (not checked internally - no error if this is not the case) + - example is comparing crystal surface struture with and without binding of a surface molecule + - e.g. ISOSURFACE [1, "PtO.cube", -1, "Pt.cube", -1, "O.cube"] + - can map a plane + - e.g. ISOSURFACE PLANE x=0.1 map [1, "PtO.cube", -1, "Pt.cube", -1, "O.cube"] + - recommend using ISOSURFACE CACHE to convert to JVXL before saving as PNGJ + + +JmolVersion="14.29.19" // 2018.08.31 + +bug fix: LOAD may not work (CrystalReader.java) +bug fix: LOAD ... supercell fails with multiple models (XtalSymmetry.java) +bug fix: state creation Spacefill output "2" not "2.0" (missing PT.escF(f) call in StateCreator.java) + +JmolVersion="14.29.18" // 2018.06.16 + +bug fix: (JavaScript) modulation vector state in PNGJ or state not read back correctly from data + ("1.4E-45" read as 1.399999...e-45) +bug fix: SHOW SPACEGROUP with group 167 will show too many n-glides; three are g-glides + +JmolVersion="14.29.17" // 2018.06.15 + +bug fix: magnetic modulations not factoring in static moment correctly +bug fix: symop(@1, @2, "id") does not return 1-N id of operation +bug fix: show spacegroup fails to show detailed operation list (broken in 14.20.5 8/30/17) +bug fix: getproperty spacegroupinfo broken for incommensurate cases +bug fix: unitcell "-a,-b,c;0,0,0.50482" not working +bug fix: unitcell("-a,-b,c;0,0,0.5") not working +bug fix: cif reader does not recognize PRIMITIVE keyword +bug fix: Guassian reader can fail if no lines are present after vibration section + +JmolVersion="14.29.16" // 2018.06.06 + +bug fix: unitcell("a=10 b=10,c=20,alpha=90,beta=90,gamma=129") crashes Jmol +bug fix: pointgroup(x) crashes Jmol when x is a set of points +bug fix: UNITCELL parent not working +bug fix: Brillouin Zone id set to "" for unknown reason +bug fix: SMILES allene R/S chirality broken for some connections + - print "C1.CC=[C@@]=[CH]1".find("smiles","chirality").join("") should be PP, not MM + +bug fix: undocumented unitcell {1500500500 1500500501 1} not working + - notation for expanding cell=555 to 1000 cells (1000jjjkkk-1999jjjkkk) + - due to large integer not being stored in float properly in Java + - related to 1505050 1505051, which does work (expands capability to 100 cells, 100jjkk-199jjkk) + +bug fix: load xxxx FILL UNITCELL broken (should not need "conventional" or "primitive") + +bug fix: MSCIFReader not recognizing atom_site_Fourier_wave_vector_q1_coef + +bug fix: Magnetic incommensurate files crashing unnecessarily + +new feature: getproperty spaceGroupInfo + + +JmolVersion="14.29.15" + +new feature: print {xxx}.find("SMILES/molecule","CC...") +new feature: print {xxx}.find("SMARTS/molecule","CC...") + - molecule-based SMILES or SMARTS + - returns an array of matching molecules in {xxx} + - array.count gives number of matching molecules + +bug fix: [array].distance.min([array]) does not work + +bug fix: Bilbao reader does not allow for a blank line that is " " + +bug fix: CrystalReader not reading vibrations properly for filter "CONV" + +bug fix: SMILES should allow [C@+1] + +JmolVersion="14.29.14" + +bug fix: MO calculation can truncate MO if moleule is shifted too far prior to creation of MO + +bug fix: MOL reader user data column-81 continuation '+' fix + +bug fix: LOAD OFFSET option can skip first atom + +bug fix: CIPChirality -- Rule 6 adds set ciprule6full option for rr bicyclo[2.2.2]octane in/out business +bug fix: CIPChirality -- Rule 5 adds needed S-ref +bug fix: CIPChirality -- Rule 4b/Rule 5 ordering correction +bug fix: CIPChirality -- should indicate M/P for allene-centered spiro case BH64_084 +bug fix: CIPChirality -- should indicate "e/z" instead of E/Z" for special cases of a single enantiomorphic pair +bug fix: CIPChirality -- duplicates and mass Rule 2 fix JL_008 + +JmolVersion="14.29.13" + +new feature: running CALCULATE CHIRALITY will generate + a CIPInfo entry in the model's auxiliary info + array indicating the decision + points in the stereochemical analysis: + + $ load $inositol + $ select @14 + $ calculate chirality + R + $ print _M.CIPInfo.C14 + O8 -------------- + 1a + C13 -------------- + (R)lll + 4b + (R)ll + C16 -------------- + 1a + H20 -------------- + + + - building of this structure disabled using SET TESTFLAG2 + + +new feature: "".find("smiles","chirality") + - creates an array indicating the stereochemical designator (R,S,r,s,M,P,m,p,E,Z) at each atom in the SMILES string + - no structure is necessary + - for example: + + $ load $1,4-dihydroxycyclohexane + $ calculate chirality + rr + $ show smiles + "O[C@@H]1CC[C@@H](O)CC1" + zap + $ print "O[C@@H]1CC[C@@H](O)CC1".find("smiles","chirality").format("JSON") + [ "","r","","","r","","","" ] + + $ print "[C@@H]1(C)CC[C@H]2C(C)C.C1[C@@H]2O".find("smiles","chirality").format("JSON") + [ "R","","","","S","","","","","S","" ] + +bug fix: CIP chirality did not recognize large conjugated rings as "mancude-like" +bug fix: ModelKit should not change selection when inverting a stereocenter + +bug fix: WRITE xxx.PDB not writing CONECT records + +JmolVersion="14.29.12" + +bug fix: jsmol.php security fix for sites implementing their own Info.serverURL + +bug fix: CrystalReader filer "conv" fix + +bug fix: MSCIFReader not recognizing atom_site_Fourier_wave_vector_q_coef +bug fix: MSCIFReader not recognizing atom_site_Fourier_wave_vector_q_coef and _x,_y,_z in same block + +bug fix: GaussianReader broken for high-precision frequency data (broken in 14.29.10) + +new feature: GaussianReader orientation filters (default is ALL) + -- filter 'orientation:input' (includes Z-Matrix) + -- filter 'orientation:standard' + -- filter 'orientation:all' + -- note that vibrations are only returned if orientation is ALL or STANDARD + +new feature: CrystalReader returns atom property_irreducible: + -- select property_irreducible > 0 + -- display property_irreducible > 0 + +new feature: CrystalReader adds ellipsoid set "raman" + + +JmolVersion="14.29.11" + +bug fix: CrystalReader not handling symmetry for filter "conv" +bug fix: CrystalReader not properly generating vibrational modes + +code: refactored for SwingJS +code: refactored CrystalReader + +JmolVersion="14.29.10" + +bug fix: GaussianReader for fixed atoms in freq calculation + +JmolVersion="14.29.9v" + +bug fix: NBO + +JmolVersion="14.29.9" + +bug fix: NBO -- normalizations validated using allyl.nn for all types + +code: total switch to javajs.util.BS from javajs.util.BS + +JmolVersion="14.29.8" + +bug fix: NBO + +JmolVersion="14.29.7" + +bug fix: NBO + + +JmolVersion="14.29.6" + +bug fix: Matrix4f, Matrix3f should be output in format consistent with an matrix, not an array + -- should not have space between opening and closing brackets + -- should not use commas (not a critical distinction) + + [[0.8362213 -0.5062382 0.21084802 52.988747] + [0.5394281 0.8285579 -0.15003058 20.076633] + [-0.09874859 0.23919612 0.96593684 46.393887] + [0.0 0.0 0.0 1.0]] + +bug fix: genNBO reader failing for G orbitals (even though we cannot process them, the reader at least load them + +new feature: set infoFontSize + -- for MO and NBO command + -- default 20 + +bug fix: red file load error message is too small to read + -- font size increased to 20 + +code: modular loading of F,G,H,I MO calculations only when needed + +JmolVersion="14.29.5" // released 2018.02.08 + +bug fix: (Java application only) Incorrect class file in Jmol.jar causes BOUNDBOX ON to fail + +JmolVersion="14.29.4" // released 2018.02.07 + +bug fix: set hbondsrasmol false fails with O atom-only HOH group +bug fix: calculate pointgroup does not change with new atom positions + +JmolVersion="14.29.3" // released 2018.02.03 + +bug fix: mac cut/paste enabled for Macs +bug fix: set autobond corrected +bug fix: changing an atom's element should delete all partial charges +bug fix: load AUDIO "xxx.wav" broken in Java +bug fix: load AUDIO "xxx.wav" broken in JavaScript +bug fix: loading of pdb file does not report HET = .... to console +bug fix: CONTACT leading to no contacts crashes Jmol. +bug fix: load FILES with filter does not work +bug fix: load =xxxx/val with filter does not save in state + solution was to change "+" to "-" to indicate special two-file loading in this case + +new feature: set label picking icon in application +new feature: set label picking does not require shift for drag +new feature: set label picking allows double-click to set the label + +new feature: drag-drop of PNGJ into script opens editor (for movie.spt; use not implemented) + +new feature: set allowAudio (default TRUE) + +new feature: AUDIOcallback + - used to continue after completion of an audio clip + - parameter is a hashtable with information about the audio clip + +new feature: load AUDIO "xxx.wav" FILTER "...options..." + - filter options include: + - id='....' an identifier for this audio clip + - loop loop until told to stop + - start='...', play='...', stop='...', ended='...' callback scripts allowed + - single word arguments allowed - for example, id=a2 ended=audioDone() + +note: These features will be included in a future AUDIO command + +JmolVersion="14.29.1" // released 2018.01.25 + +new feature: select peptide, defined as: + protein && within(chain,monomer>1)&!within(chain,monomer>12) + +bug fix: isosurface EDS not working for mmCIF files. + +JmolVersion="14.28.4" // released 2018.01.25 + +bug fix: script "minimize; calculate partialcharge" can cause exception + +bug fix: partial charges not reset to 0 after atom type change as with + {_N}[2].element = "O" + +bug fix: isosurface CACHE should store isosurface as byte[] not String + otherwise it is not saved in a subsequent WRITE xxx.PNG AS PNGJ + + +JmolVersion="14.28.3" // released 2018.01.19 + +bug fix: mmtf broken - needs "/v1.0/" +bug fix: BCIF/CIF volume reader not properly assigning axes in some cases +bug fix: GAMESS reader does not work with symmetry indicated in input deck + +JmolVersion="14.28.2" // released 2018.01.17 + +new feature: isosurface eds + - generates electron density surface 2fo-fc for current PDB model + - trimmed to structure + - note that isosurface eds AS "t.bcif" will save the full data block to a BCIF file + +new feature: isosurface within 3 {e20:A} eds + - generates electron density surface 2fo-fc for current PDB model + - localized to WITHIN specification + - note that adding AS "t.bcif" will save only the retrieved localized block to a BCIF file + +new feature: isosurface edsdiff + - generates electron density surface fo-fc for current PDB model + - trimmed to structure + +new feature: isosurface "=1eve/full" + - generates electron density surface 2fo-fc for 1eve + - reads and shows full data set, not trimmed to structure + +new feature: isosurface "=1eve/diff" + - generates electron density surface fo-fc for 1eve + +new feature: isosurface "=1eve/diff/full" + - generates electron density surface fo-fc for 1eve + - reads and shows full data set, not trimmed to structure + +bug fix: for BCIF/CIF EBI density server data, switch to sigma_sampled from sigma_source + +JmolVersion="14.28.1" // released 2018.01.14 + +new feature: WRITE CONTACT xxx.jvxl + - saves a JVXL file for a contact + - reload using ISOSURFACE xxx.jvxl, not CONTACT + +new feature: write contact "cache://t.jvxl" + - saves a contact as a jvxl file in the cache + +new feature: isosurface "cache://t.jvxl" + - loads an isosurface from a cached JVXL file + +new feature: generalized use of cache:// + - cache:// saves or retrieves files from the FileManager cache + - cleared upon ZAP + - for example, the following transfers a contact to an isosurface for saving to a PNGJ file + + load =1eve + zoom {e20:a} 0 + contact {e20:A} hbond + write contact cache://t.jvxl + isosurface cache://t.jvxl + contact delete + write t3.png as PNGJ + + +new feature: isosurface reads EBI density server files (BinaryCIF and CIF) + -- for example: + isosurface "https://www.ebi.ac.uk/pdbe/densities/x-ray/1eve/box/-3.434,55.646996,59.195/7.479,70.943,74.928?space=cartesian&encoding=bcif" + isosurface "https://www.ebi.ac.uk/pdbe/densities/x-ray/1eve/box/-3.434,55.646996,59.195/7.479,70.943,74.928?space=cartesian&encoding=cif" + +new feature: Jmol automatically uses EBI density server BinaryCIF files when "within" keyword is used. + -- for example: + + load =1eve + display e20 + zoom {displayed} 0 + isosurface within 4 {e20:A} "=1eve" + + -- allows testing of non-binary CIF electron density files using .cif: + + isosurface within 4 {e20:A} "=1eve.cif" + +bug fix: loading, modifying, and resaving a PNGJ file fails in Java +bug fix: JavaScript JSmol improperly saves a PNGJ file within a PNGJ file + +JmolVersion="14.27.2" + +new feature: frame MO + - goes to first frame with a molecular orbital + +bug fix: [UNK] missing in atom identities, even when part of actual structures such as 3A0B + +bug fix: polyhedra ID p1 @11 to {connected(@11)} not working + -- allows for $p1.getProperty(....) + +bug fix: load(filename, "JSON") should allow for files that start with "[" rather than "{" + +bug fix: JSJSON parser fails for leading whitespace in map values + +code: additions to QCJSONWriter and QCJSONReader + - working with Jmol-datafiles/qcjson/preliminary + - "QCJSON 0-0-0.Jmol_14.27.2__2017-12-11_09:38", + +JmolVersion="14.27.1" released 2017.12.11 + +new feature: functions write("zip") and write("jmol") + - allows creating a binary variable containing zip data + - does not include preview.png (unlike write xxx.zip or xxx.jmol) + - includes any local files (as for WRITE command) + - "zip" does not include remote-access files + - "jmol" DOES include remote-access files + - allows use of .pop() and .push() to remove, modify, or add files + - same as write xxx.zip; x = load("xxx.zip",true) -- except includes no preview.png + + - for example: + + load $caffeine + x = write("jmol") + x.push("mydata","testing") + write var x "test.zip" + y = load("test.zip", true) + print y.keys + ... + print y.mydata + + testing + + load test.zip + ... + + load $caffeine + x = write("jmol") + zap + load var x + + +bug fix: CIPChirality adds "mancude system" averaging of atomic numbers in Rule 1a + +JmolVersion="14.26.1" + +new feature: experimental qcjson write format - ALPHA only + +bug fix: decimal formatter failing for 9.9999999 to 5 digits +bug fix: Jaguar reader not reading MOs; (working, but still does not read STO-3G) + +bug fix: direct call to sun.audio on some systems fails; + -- moved to class openscience.jmol.jmolPanel.JmolAudio + -- accessed by reflection, so not loaded unless needed. + +code - synchronized with NBOServe project. (2017.11.10) + +JmolVersion="14.25.2" + +bug fix: DCD (trajectory) reader failing when periodic lattice info is present + +JmolVersion="14.25.1" + +new feature: polyhedra WIGNER // Wigner-Seitz cell +new feature: polyhedra BRILLOUIN // 1st Brillouin zone +new feature: polyhedra BRILLOUIN 1 // 1st Brillouin zone +new feature: polyhedra BRILLOUIN 2 // 2nd Brillouin zone +new feature: polyhedra BRILLOUIN -1 // Wigner-Seitz cell +new feature: polyhedra scale 3.0 BRILLOUIN 1 // scaled 1st Brillouin zone + +bug fix: MOL file reader should not autobond if number of bonds is 0. + +JmolVersion="14.24.2" // 2017.11.08 + +bug fix: invertSelected was not clearing chirality +bug fix: JmolAppletSigned0.jar fails -- missing org/apache/tools +bug fix: SHOW SMILES sometimes missing allene chirality +bug fix: hbondsDistanceMaximum should not be limited by 2.5 max; increased maximum to 3.5 +bug fix: hbondsDistanceMaximum and hbondsAngleMinimum should not be in state + +code: moved scriptEval.cmdInvertSelected to scriptext.cmdExt + +JmolVersion="14.24.1" // 2017.11.05 + +new feature: MACRO bz; createWS("p1") + -- creates a Wigner-Seitz cell as polygon id "p1" + -- requires current unit cell to be primitive to work correctly + -- polyhedron can be shifted using POLYHEDRA OFFSET + -- default ID "pbz1_1_" for just CREATEWS() + + +new feature POLYHEDRA edgesOnly + -- shows just edges + -- operates on ALL polyhedra + -- complements edges, noEdges, frontEdges + +new feature: select within(d, $p1) where $p1 is a polyhedron ID + -- d = 0 is "on or within the polyhedron" + -- d < 0 is "-d angstroms within polyhedron" + -- d > 0 is "within d angstroms of polyhedron" + +bug fix: POLYHEDRA edges should inherit color, not use black as default + +bug fix: calculate CHIRALITY may fail to show Z for some seqCis systems + +new macros: + + "aflow", "http://aflowlib.mems.duke.edu/users/jmolers/jmol/spt/AFLOW.spt", "AFLOW macros", + "bz", "http://aflowlib.mems.duke.edu/users/jmolers/jmol/spt/bz.spt", "Brillouin Zone/Wigner-Seitz macros" + + +code: biomodel classes are being loaded prematurely due to @cystine definition involving cys.sg instead of cys and atomname=sg + +JmolVersion="14.23.1" // 2017.11.02 + +new feature: load "" fill UNITCELL PRIMITIVE (for files that are conventional) +new feature: load "" fill UNITCELL CONVENTIONAL (for VASP files, which are primitive cells) + +bug fix: primitive unit cell incorrect for rhombohedral lattice space groups + (trigonal R...; 146, 148, 155, 160, 161, 166, 167) +bug fix: (AFLOW specific) CIF for trigonal and hexagonal cells (itn 143-194) should orient rotated 60 deg cw +bug fix: LOAD ... SUPERCELL {2 2 2} broken + +JmolVersion="14.22.2" + +bug fix: PubChem partial charges are only to 0.01 precision, so a test in dipole creation of + balanced charges must allow for more than that -- changed to 0.015. Case in point: :PF3. + +JmolVersion="14.22.1" // 2017.10.28 + +new feature: draw BOUNDBOX BEST + -- draws the best box around currently selected atoms + +bug fix: a.distance.min(b).min should not report 0 if a == b. (testing atom against itself should be skipped) +bug fix: SHOW BEST ROTATION just shows the current rotation, not the best rotation to use to get to the best view +bug fix: rotate BEST can fail with flat structures +bug fix: LOAD "" FILE BOUNDBOX does not include all atoms + +JmolVersion="14.21.1" // 2017.10.22 + +new feature: set noDelay true sets all time delays to 0 and forces all file operations to be synchronous + +bug fix: CIP adds S4 symmetry check in Rule 6 +bug fix: chirality broken for JavaScript in MSIE 11 due to range error +bug fix: Should be able to save PNGJ from menu even if zapped (because there might be a surface) + +JmolVersion="14.20.9" + +bug fix: JavaScript does not handle saving PNGJ from modified PNGJ +bug fix: JavaScript command SHOW NMR broken + +JmolVersion="14.20.8" // 2017.10.07 + +bug fix: STEREO DTI never implemented for Java, only JavaScript +bug fix: color property_xxxx broken +bug fix: platformSpeed not actuated for wheel zoom. + +JmolVersion="14.20.7" + +bug fix: calculate chirality broken for JSmol (missing Integer.compare) + +JmolVersion="14.20.6" + +bug fix: MO HOMO + n delivers HOMO + 2*n +code: more efficient CIPChirality using breadth-first scanning for chirality descriptors + +JmolVersion="14.20.5" // 2017.08.29 + +bug fix: isosurface intersect unitcell broken +bug fix: show spacegroup does not report H-M name + +JmolVersion="14.20.4" // 2017.08.09 + +bug fix: SpartanSMOL reader for iSpartan files does not read charges or vibrational mode data +bug fix: CIPChirality fix for BH64_075; adding Rule 3b. +bug fix: CIPChirality new Rule 6 covers all special spiro cases and C3-symmetry +bug fix: SMILES generator fails for [2H]/C=C/[1H] +bug fix: write SDF fails for 1H. (Must use M ISO.) + +JmolVersion="14.20.3" // 2017.07.20 + +bug fix: ROTATE should not stop spin if it does not initiate a spin +bug fix: CIPChirality tests for CIP1966#31,#32 douple spirans and C3 compounds +bug fix: CIPChirality for Rule 2 using atomic masses and not for duplicate atoms +bug fix: MOL file reading where isotope is indicated in atom line and V item +bug fix: MOL reader fails for H1, D, T isotopes indicated as symbols along with isotope difference + + +JmolVersion="14.20.2" // 2017.07.09 + +bug fix: CIPChirality adding presort for Rules 4a and 4c (test12.mol; 828 lines) +bug fix: write SDF and write MOL do not set atom parity field +bug fix: JavaScript JSmol broken for chirality due to bug in Clazz.clone(obj) + +bug fix: Upgrade of natural abundance average masses (no significant changes here): + + // all numbers except radionuclides from: + // Atomic weights of the elements 2013 (IUPAC Technical Report) + // Juris Meija, Tyler B. Coplen, Michael Berglund, Willi A. Brand, Paul De Bièvre, + // Manfred Gröning, Norman E. Holden, Johanna Irrgeher, Robert D. Loss, Thomas Walczyk, + // Thomas Prohaska Published Online: 2016-02-24 | DOI: https://doi.org/10.1515/pac-2015-0305 + // https://www.degruyter.com/view/j/pac.2016.88.issue-3/pac-2015-0305/pac-2015-0305.xml + + /* 1 H */ 1.008f, 4.002f, + /* 2 Li */ 6.9675f, 9.012f, 10.8135f, 12.0106f, 14.006f, 15.999f, 18.998f, 20.1797f, + /* 3 Na */ 22.989f, 24.307f, 26.981f, 28.084f, 30.973f, 32.059f, 35.4515f, 39.948f, + /* 4 K */ 39.0983f, 40.078f, 44.955f, 47.867f, 50.9415f, 51.9961f, 54.938f, 55.845f, 58.933f, 58.6934f, 63.546f, 65.38f, 69.723f, 72.63f, 74.921f, 78.971f, 79.904f, 83.798f, + /* 5 Rb */ 85.4678f, 87.62f, 88.905f, 91.224f, 92.906f, 95.95f, 98.91f, 101.07f, 102.905f, 106.42f, 107.8682f, 112.414f, 114.818f, 118.71f, 121.76f, 127.6f, 126.904f, 131.293f, + /* 6 Cs, Ba, actinides */132.905f, 137.327f, 138.905f, 140.116f, 140.907f, 144.242f, 144.9f, 150.36f, 151.964f, 157.25f, 158.925f, 162.5f, 164.93f, 167.259f, 168.934f, 173.054f, 174.9668f, + /* 6 Hf */ 178.49f,180.947f,183.84f,186.207f,190.23f,192.217f,195.084f,196.966f,200.592f,204.3835f,207.2f,208.98f,210f, 210f, 222f, + /* 7 Fr, Ra, lanthanides */ 223f, 226.03f, 227.03f, 232.0377f, 231.035f, 238.028f, 237.05f, 239.1f, 243.1f, 247.1f, 247.1f, 252.1f, 252.1f, 257.1f, 256.1f, 259.1f, 260.1f, + /* 7 Rf - Mt */ 261f, 262f, 263f, 262f, 265f, 268f + + +JmolVersion="14.20.1" // 2017.07.06 + +new feature: BZ2 compressed file reader + -- uses org.apache.tools.bzip2.CBZip2InputStream v. 1.9.6 + -- Apache license + +bug fix: ADF reader not accepting Xx.name atom ids + +bug fix: SMILES generator can show wrong @/@@ or stereochemical type for some allenes and cumulenes +bug fix: CIPChirality additional Rules 1b, 4b, and 4c fixes (substituted cubanes; multiple branched branches; 841 lines) + +JmolVersion="14.19.1" // 2017.06.25 + +new feature: WRITE "SDF" implements atom value V nnn ... information + -- requires assigning the data property name "atom_values" in the model's molData property + -- for example: + + $ load $2,3-dichlorobutane + $ molData = {"atom_values":"chirality"} + $ model properties "molData" molData + $ write dcb.sdf + + -- note that if the model already has a molData property, then use the following to append to it: + + $ molData = (_M.molData ? _M.molData : {}) + $ molData.atom_values = "chirality" + $ model properties "molData" molData + +new feature: x = load("filename","JSON") + -- loads JSON data into variable + +bug fix: CIPChirality: minor fixes for Rule 4b and 5 for BH64_012-015; better atropisomer check +bug fix; SPIN QUATERNION +bug fix: CENTERAT ABSOLUTE broken (since forever?) +bug fix: SPIN QUATERNION {0 0 -1 0} still does a positive, not negative, rotation + (solution is to apply a miniscule rotation of 1e-10 degrees) + +bug fix: script array context [3 -0] becomes [3], as in [3 - 0] + +bug fix: SET ANTIALIASDISPLAY requires click [via resizeImage()] +bug fix: CIP gives wrong alkene root distance for cyclopropene +bug fix: WRITE of structure file does not report number of atoms and warn if selected is different from this molecule +bug fix: WRITE MOL using format 10f.5 instead of 10f.4 for x, y, z coordinates +bug fix: MOL/SDF files should truncate lines at 80 characters. + +JmolVersion="14.18.1" // 2017.06.06 + +bug fix: CIP misses Rule 4b cases where a branching atom has R or S chirality. + -- see test_bt_P4.mol and test_bt_O3.mol (BH64.65 and BH64.66) + -- see AY236.179 (3D structure was diasteriomer, so I missed that) + +bug fix: WRITE MOL should not generate > because it is not SDF format +bug fix: WRITE SDF should generate > with a trailing space + +bug fix: (SMILES) targetString.find("SMILES",patternString) will fail for .[C@H]2 (new group and attached to a connection number) +bug fix: SHOW CHEMICAL SMILES fails when logLevel is set > 4 + +new feature: WRITE SDF writes > <.... user data + -- can be set using MODEL PROPERTY "molData" x where x is an associative array + -- can be read using _M.molData + +new feature: associativeArray.pop() -- clears associativeArray +new feature: assArray1.push(assArray2) -- adds all key/value entries in assArray2 to assArray1. +new feature: assArray1 + assArray2 -- adds all key/value entries into a new associative array. (Complements a1 - a2) + + +JmolVersion="14.17.2" // 2017.06.03 + +bug fix: WRITE FILE not working when file has been cached. +bug fix: array.find("regex...","") does not reset RegExp each time it runs RegExp.exec() so does not find all possibilities + +code: CIPChirality.java fully interfaced using SimpleNode and SimpleEdge + +JmolVersion="14.17.1" // 2017.05.27 + +new feature: atom property x.cipRule + -- CIP sequence rule deciding this center + -- one of 1a, 1b, 2, 3, 4a, 4b, 4c, 5, or blank + +bug fix: polyhedra broken in Jmol 14.10.0 + +bug fix: finalizing CIP algorithm + -- adding spiro chirality from P-93.5.3 + -- completing root path for auxiliary descriptors + +bug fix: JSmol: JSME/JSmol 2D->3D fails when one H of a CH2 is explicitly wedge and the other H is implicit (not shown at all). (JSmolJME.js) + +code: + +/** + * A full validated relatively efficient implementation of Cahn-Ingold-Prelog + * rules for assigning R/S, M/P, and E/Z stereochemical descriptors. Based on + * IUPAC Blue Book rules of 2013. + * https://iupac.org/projects/project-details/?project_nr=2001-043-1-800 + * + * Features include: + * + * - deeply validated + * + * - implemented in Java (Jmol) and JavaScript (JSmol) + * + * - only two Java classes; roughly 1000 lines + * + * - efficient, one-pass process for each center using a single finite digraph for all auxiliary descriptors + * + * - exhaustive processing of all 8 sequence rules (1a, 1b, 2, 3, 4a, 4b, 4c, 5) + * + * - includes R/S, r/s, M/P (axial, not planar), E/Z + * + * - covers any-length odd and even cumulenes + * + * - uses Jmol conformational SMARTS to detect atropisomers and helicenes + * + * - covers chiral phosphorus and sulfur, including trigonal pyramidal and tetrahedral + * + * - properly treats complex combinations of R/S, M/P, and seqCis/seqTrans centers (Rule 4b) + * + * - properly treats neutral-species resonance structures using fractional atomic mass and a modified Rule 1b + * + * - implements CIP spiro rule (BB P-93.5.3.1) + * + * - detects small rings (fewer than 8 members) and removes E/Z specifications for such + * + * - detects chiral bridgehead nitrogens + * + * - reports atom descriptor along with the rule that ultimately decided it + * + * Primary 236-compound Chapter-9 validation set (AY-236) provided by Andres + * Yerin, ACD/Labs (Moscow). + * + * Mikko Vainio also supplied a 64-compound testing suite (MV-64), which is + * available on SourceForge in the Jmol-datafiles directory. + * (https://sourceforge.net/p/jmol/code/HEAD/tree/trunk/Jmol-datafiles/cip). + * + * Additional test structures provided by John Mayfield. + * + * Additional thanks to the IUPAC Blue Book Revision project, specifically + * Karl-Heinz Hellwich for alerting me to the errata page for the 2013 IUPAC + * specs (http://www.chem.qmul.ac.uk/iupac/bibliog/BBerrors.html), Gerry Moss + * for discussions, Andres Yerin for discussion and digraph checking. + * + * Many thanks to the members of the BlueObelisk-Discuss group, particularly + * Mikko Vainio, John Mayfield (aka John May), Wolf Ihlenfeldt, and Egon Willighagen, for + * encouragement, examples, serious skepticism, and extremely helpful advice. + * + + +JmolVersion="14.16.1" // 2017.05.19 + +new feature: load =chebi/nnnnnn + -- chEBI 2D molecule load, with minimal 100-step minimization + -- + +bug fix: CML reader does not read 2D wedge/hash information + +bug fix: CIP fix for missing branch descriptors; 984 lines + +bug fix: CIP adds helicene M/P chirality + - validated using CCDC structures HEXHEL02 HEXHEL03 HEXHEL04 ODAGOS ODAHAF + - http://pubs.rsc.org/en/content/articlehtml/2017/CP/C6CP07552E + +code: CIP: additional simplification; +code: CIP status: implementation complete, including: + All subrules implemented fully: 1a, 1b, 2, 3, 4a, 4b, 4c, 5 + R/S, E/Z, M/P (odd-cumulene and helicene), r/s, seqCis/seqTrans (as Z/E) + fused benzenoid aromatic Mancude ring "Kekule weighted" atom number adjustments + + * Added logic to Rule 1b: The root distance for a Kekule-ambiguous duplicate + * atom is its own sphere, not the sphere of its duplicated atom. + * + * Stated more precisely: + * + * Proposed amended Sequence Rule 1: + * + * (1a) higher atomic number precedes lower; + * + * (1b) in comparing two duplicate nodes, lower root distance precedes higher + * root distance, where "root distance" is defined: + * + * (i) in the case of a duplicate atom for which the atomic number is averaged + * over two or more atoms in applying Rule 1a, the distance from the duplicate + * node itself to the root node; and + * + * (ii) in all other cases, the distance of its corresponding nonduplicated atom + * node to the root node. + * + +JmolVersion="14.15.4" // 2017-05-13 + +bug fix: INVERTSELECTED ATOM not documented; functionality of INVERTSTEREO SELECTED folded into it, and INVERTSELECTED STEREO deprecated + -- inverts ring or chain stereochemistry + -- adds that keyword ATOM is optional, so INVERTSELECTED @2 works + +bug fix: @n for "atom n" not working in several script-checking contexts where {atoms} works. + +bug fix: CIP full implementation; simplified algorithm - 984 lines +bug fix: CIP Rule 1b modification to ensure aromatic rings do not result in false positive for R/S (binap2) + -- specifically that the duplicate atom is given a root distance equal to its sphere, not that of its duplicated atom +bug fix: CIP chiral bridgehead N designations missing +bug fix: CIP Assignment of auxiliary r/s not functional (AY-236.201,202) +bug fix: CIP basic "mancude" atom number adjustment for heteroatoms + -- implemented for benzenoids (benzene, pyridine, pyrazine) and fused benzenoids only + +new feature: set debugHigh + -- same as set loglevel 6 - debugging only + -- debugging only; not considered significant enough to increment minor version + +JmolVersion="14.15.3" // 2017-05-08 + +bug fix: SMARTS search for atropisomeric bond that is in an alicyclic ring fails (Fred Ziegler) + - used for M/P chirality check + - for example: + load $c1cc2c3-c4c5CC2.c5ccc4C.c3(C)c1 + select on smarts("a-a") + calculate chirality + print {*}.chirality.join("") + + MM + +bug fix: use of the less preferred name of Jmol token that has two optional + forms ("fix" vs "fixed") as a VAR does not assign that variable name +bug fix: set cartoonRibose misses the C1'-O4' and O3'-P(+1) edges +bug fix: JVXL reader not reading Gaussian files with "1" in the third line, 5th field +bug fix: CIP M/P chirality + test: load "$2,2'-dibromobiphenyl"; calculate chirality; print {*}.chirality.join("") +bug fix: CIP chirality nearly fully validated on ACD/Labs AY-236 set, with some unimplemented aspects: + +var skip = ({27 229}) || // E/Z only; missing chirality + ({95 96 98 99 100 101 102 103 104 108 109 110 111 112 200}) || // trigonal planar, square planar, or hypervalent + ({32 33}) || // helicene // added in Jmol 14.15.5 + ({201 202})|| // spirocyclic central (redundant) atom designation missing (axial designation option) + ({212 213})|| // chiral conformation 1,4-benzene in a ring + ({38 84}) || // ignore -- 38: Mancude for cyclopentadienyl; 84: unknown error with P compound + ({203}) || // // chiral bridgehead amine // fixed in Jmol 14.15.5 + +Issue: Full implementation of the rules requires a slight modification of Rule 1b. +Specifically, aromatic duplicate atoms must reference the sphere of their own parent, not their +duplicated atom. + + Three structures appear to be in error in the IUPAC Blue Book 2013. + +,"147":"r,,,R,,,,r,,,S" // r,,,R,,,,r,,,R chiral phosphine -- I think Jmol is right; disagrees with BB P-93.5.1.1.2 for S vs R +,"227":"SrSEErS" // S,,,,,,,r,S,,,,,,,E,,r,r // -- I think Jmol is right; disagrees with BB P-93.5.7.2 for S vs. r +,"230":"@2D RrRsR" // r,,,R,,,,s,,,R // p 1282 -- I believe Jmol is correct, disagrees with BB P-93.6 + + One structure awaiting full implementation of Rule 4b across all chirality types, R/S, M/P, and seqCis/seqTrans + + ,"170":"Spp" // Jmol is missing the S -- mix of R/S and M/P for Rule 4b + + - 939 lines + +JmolVersion="14.15.2" // 4/29/17 + +bug fix: CIP chirality adds axial chirality (M/P[Ra/Sa], m/p[ra/sa]) for cumulenes +bug fix: CIP chirality adds atropisomer chirality (M/P[Ra/Sa], m/p[ra/sa]) for biaryls +bug fix: CIP chirality adds cumulene E/Z chirality + -- 816 lines + -- validation data are at https://sourceforge.net/p/jmol/code/HEAD/tree/trunk/Jmol-datafiles/cip/ + -- validates for 160 structures (some duplicates; both cip_examples.zip and stereo_test_cases.sdf) + -- validates for all cases considered: + -- simple R/S and E/Z + -- small-ring removal of E/Z + -- parallel-strand Rule 4b and Rule 5 (Mata) + -- pseudochiral r/s and m/p + -- odd and even cumulenes + -- atropisomers + -- P, S, As, Se, Sb, Te, Bi, Po trigonal pyramidal and tetrahedral + -- imine and diazine E/Z chirality + +JmolVersion="14.15.1" // 4/28/17 + +new feature: x.split(true) + -- does a white-space token split of the string value of x + +new feature: MOL/SDF reader reads M ISO lines for isotopes + +bug fix: CIP chirality adds P, S, As, Se, Sb, Te, Bi, Po trigonal pyramidal and tetrahedral +bug fix: CIP chirality adds imine and diazine E/Z chirality +bug fix: CIP chirality broken for carbonyl groups +bug fix: CIP chirality E/Z should not be indicated for rings of size < 8 + +bug fix: values not saved in state for cartoonBlockHeight, cartoonBlocks, and cartoonSteps +bug fix: write MO broken +bug fix: set cartoonBlockHeight (for DSSR nucleic acid rendering) fails + +code: CIPChirality.java 779 lines Rules 1-5 validated on 145 compounds + - see https://sourceforge.net/p/jmol/code/HEAD/tree/trunk/Jmol-datafiles/cip/ +code: CIP optimizations + +JmolVersion="14.14.1" // 4/19/17 + +new feature: CALCULATE CHIRALITY {atom set} + -- starts with basic CIP Rule 1-2 determination of R/S and E/Z. + -- continues with Rules 3-5, which require full-molecule analysis. + -- work in progress: + -- Rules 1 and 2 complete + -- Rule 3 (E/Z) implemented + -- Rule 4 partially implemented + -- simple linear sequences of R/S ok + -- Rule 5 implemented + -- caveates + -- no pseudochirality + -- not cyclitols + -- does not distinguish rings, so inserts "Z" into ring bonds + -- only validated on + + -- optionally limited to the given atom set (or the currently selected atoms by default) + +new feature: set jmolInJSpecView + -- allows Jmol window to NOT be embedded in JSpecView when JSpecView is opened in Jmol + -- default TRUE + +new feature: WRITE ISOSURFACE "t.pmesh"; WRITE ISOSURFACE "t.pmb" + -- creates ASCII (.pmesh) or binary (.pmb) file (a Jmol-specific file format) + -- relatively compact format + -- can speed up loading of meshes and contours + -- for filled surfaces, use .jvxl instead + -- read back into Jmol using ISOSURFACE "t.pmesh"/"t.pmb" + -- note that binary files are NOT RECOMMENDED for JSmol because some platforms cannot read them locally + -- example: + + load $methane + isosurface plane {0 0 0 1} map vdw contours 20 + write ISOSURFACE contour.pmb + isosurface contour.pmb + + +bug fix: mesh capper producing gaps +bug fix: CIP chirality fixed for rule ordering; validated for IUPAC Rules 1, 2, and 3 (though still some questions about Rule 3) +bug fix: print getProperty("cifinfo") without file name fails + + +JmolVersion="14.13.1" // 2017.04.09 + +new feature: MOL V2000 reader loads > blocks into _M.molData + +new feature: set labelfor {atomset} "value" + -- allows setting of label without changing current selection + -- uses same syntax as LABEL command after {atomset} + -- for example: + + set labelfor @atoms @myLabel + set labelfor {atomno <= 3} @{["a","b","c"]} + set labelfor {_C && chirality != ""} "%[atomname] %[chirality]" + +bug fix: {*}.chirality with triple bonds fails +bug fix: {*}.chirality fix for duplicate atoms check + +bug fix: dotted line has extra dot: measure ID m @1 @4 radius 0.1 +bug fix: NBO H-BOND and MODEL focus issues + + +JmolVersion="14.12.1" + +bug fix: NBO update +bug fix: JavaScript bug - missing Math.signum(f) - causes {atom}.chirality to not work in JSmol + +JmolVersion="14.12.0" // 2017-04-06 + +new feature: {atom}.chirality + -- uses Cahn-Ingold-Prelog rules to assign R or S to a carbon center + -- ignores sulfur chirality + -- may not fully implement high symmetry cases + -- not fully tested + -- Checked using: + +function checkchiral(m) { + if (m) load @m + background label yellow + color labels black + select _C + label %[atomname] + refresh + var b = {_C} + for (var a in b) { + var c = a.chirality; + print _smilesString + " " + a + c + if (c) { + select a + c = a.atomname + " " + c + label @c + } + } + select * +} + +checkchiral("$(R)-glycidol") +delay 1 +checkchiral("$glucose") +delay 1 +checkchiral("$(2S,3R)-2,3-oxiranediol") +delay 1 +checkchiral("$(S)-2-butanol") +delay 1 +checkchiral("$(R)-2-butanol") +delay 1 +checkchiral("$(2S,3R)-2,3-butanediol") +delay 1 +checkchiral("$(2S,3S)-2,3-butanediol") +delay 1 +checkchiral("$(2R,3R)-2,3-butanediol") +delay 1 +checkchiral("$(2R,3S)-2,3-butanediol") +delay 1 +checkchiral("$1,4-dimethylcyclohexane") +delay 1 +checkchiral("$cholesterol") // (3S,8S,9S,10R,13R,14S,17R) and sidechain R + + +JmolVersion="14.11.3" // 2017-04-06 + +bug fix: partial bond order for orders > 3 not working + -- for example: connect {_C} {_C} partial 5.3 +bug fix: NBO MODEL loading with no file name goes to wrong directory +bug fix: NBO job names need to be cleaned and set if necessary +bug fix: some sort of bad build for DSSR + +JmolVersion="14.11.2" // 2017-04-04 + +bug fix: NBO fixes +bug fix: backboneSteps moved to cartoonSteps + // order of checking for TRUE is: + // cartoonBlocks, cartoonBaseEdges, cartoonSteps, cartoonLadders, cartoonRibose + +JmolVersion="14.11.1" // 2017-04-03 + +bug fix: set cartoonBlocks; set cartoonBlockHeight x.x + -- needs to be cartoon, not backbone (needs to be single-monomer based) + -- replaces set backboneBlocks; set backboneBlockHeight x.x from 14.11.0 + -- for nucleic only + -- overrides set cartoonSteps and cartoonBaseEdges + -- uses DSSR data if present (using calculate structure DSSR or load =xxxx/dssr) + -- displays a DSSR block for each base based on dssr.nts.frame + -- x.x is height of box in Angstroms (default 0.5) + +bug fix: NBO communications upgrade - still has bug in NPA atom charge query + +JmolVersion="14.11.0" // released 4/1/2017 + +new feature: color NUCLEIC + -- for nucleic only (others will be grey) + -- based on DSSR nucleic color scheme: + G green, C yellow, A red, T blue, U cyan + +new feature: set backboneBlocks; set backboneBlockHeight x.x + -- but see bug fix above + -- for nucleic only + -- overrides set backboneSteps + -- uses DSSR data if present (using calculate structure DSSR or load =xxxx/dssr) + -- displays a DSSR block for each base based on dssr.nts.frame + -- x.x is height of box in Angstroms (default 0.5) + +new feature: color property DSSR type + -- where type is one of: + bulges + coaxStacks + hairpins + hbonds + helicies + iloops + isoCanonPairs + junctions + kissingLoops + multiplets + nonStack + nts + pairs + ssSegments + stacks + stems + -- color is based on index into the list of the given structures + -- 0 (not of that structure), 1 (first entry), 2 (second entry), etc. + -- for example: + + load =4fe5/dssr + backbone -0.5;set backboneSteps; + color property dssr junctions + color {color=red} grey // just making "not this type" grey instead of red + + [ most bases are grey, but one region is green and one region is blue ] + + +bug fix: drag-drop of PDB file with isolated nucleic acids gives odd unbonded look +bug fix: set drawPicking TRUE does not report pending measurement +bug fix: DSSR calculation should reset after atom coordinate changes +bug fix: using Jmol.scriptWait() within a callback will not work, as it will overwrite the currently running eval object + + +JmolVersion="14.10.0" // released 3/25/2017 + +new feature: x = {*}.find(smartsString,"map") + -- returns an array of arrays of atom indices (0-based) + -- indicates exact correlation between atoms in {*} and atoms of smartsString + -- only unique sets of atoms are found, not every possibility + -- for example: + + load $caffeine + print {*}.find("*1*****1", "map").format("JSON") + + [ [ 0,2,4,6,11,12 ] ] + +new feature: SELECT @x where x is an array of integers or array of array of integers + -- selects atoms from array rather than from a bitset + -- note that variable must be used, as SELECT [1,2,3] would look for PDB group "1,2,3" + -- for example: + + load $caffeine + x = {*}.find("*1*****1", "map")[0] + select @x + + 6 atoms selected + +new feature: DRAW polygon @face @points + -- draws a filled polygon based on arrays of atom indices + -- @face is an array of integers, not necessarily wound correctly + -- @points is an atom bitset or an array of points (optional, defaults to {*} + -- for example: + + load $p4 + x = {*}.find("*1**1","map"); + draw ID p4r polygon @{x[1]} color red + draw ID p4b polygon @{x[2]} color blue + draw ID p4y polygon @{x[3]} color yellow + draw ID p4g polygon @{x[4]} color green + + +new feature: DRAW polyhedron @faces @points + -- draws sets of polygons based on arrays of atom indices + -- @faces is an array of array of integers, not necessarily wound correctly + -- @points is an atom bitset or an array of points (optional, defaults to {*} + -- for example: + + load $caffeine + draw polyhedron @{{*}.find("*1****1||*1*****1","map")} + + load $p4 + draw ID p polyhedron @{{*}.find("*1**1","map")} color red + +new feature: POLYHEDRON ID xxx @faces @points + -- @faces is an array of array of integers, not necessarily wound correctly + -- @points is an atom bitset or an array of points (optional, defaults to {*} + + load $p4 + polyhedra ID p4 @{{*}.find("*1**1","map")} + +new feature: 4-order bond in MOL file using 14 for bond order + -- Jmol extension for MOL file format to allow 4-bond + -- example: [Re2Cl8](2-) + -- see https://en.wikipedia.org/wiki/Quadruple_bond + +new feature: 5-order bond in MOL file using 15 for bond order + -- Jmol extension for MOL file format to allow 5-bond + -- example: [Mo2Cl8](4-) + -- see https://en.wikipedia.org/wiki/Quintuple_bond + +new feature: 6-order bond in MOL file using 16 for bond order + -- Jmol extension for MOL file format to allow 6-bond + -- example: Mo2 + -- see https://en.wikipedia.org/wiki/Sextuple_bond + +new feature: load "=xxxx/dssr--xxx=yyy" + -- allows adding specialized options to dssr + -- --xxx=yyy added on to &opt= search item + +bug fix: DSSR fix for multi-model PDB file +bug fix: DSSR - 4fe5 HPA ligand causes set backboneSteps true to fail +bug fix: EXIT command with -n command line flag does not exit Jmol +bug fix: echo renderer may not show correct font size +bug fix: POLYHEDRA ID id OFFSET {x y z} broken +bug fix: ScriptManager debug output being sent even if -i (silent) command line option set. + +JmolVersion="14.9.1" released 2/19/2017 + + +bug fix: bad release file for 14.9.0 + +JmolVersion="14.9.0" + +new feature: connect NBO + - connect atoms in the currently visible model using a resonance structure configuration found in an NBO .46 or .nbo file + - where is one of alpha|beta|46|46a|46b|nrtstr_n|nrtstra_n|rs_n|rsa_n|rsb_n + +new feature: label %[nbo]; + - label an atom using a resonance structure configuration found in an NBO .46 or .nbo file + - requires a previous connect NBO + +new feature: set nboCharges (default true) + - determines whether formal charges are also displayed with LABEL %[nbo] + +new feature: quintuple and sextuple bonds. + -- connect @1 @2 quintuple + -- connect @1 @2 sextuple + -- readily saved in state + -- adding MOL file bond type 15 and 16 for these -- a bit of a hack, of course. + +new feature: Viewer.runScriptCautiously(String) replacement name for older Viewer.runScript(String) + +new feature: plugin main menu item. + - allows integrated additions to Jmol + - Just has NBO at this time; could have more, as it is a simple interface. + - created automatically from reading org/openscience/jmol/app/plugins/plugin.properties, + which just contains a list of name=class pairs: + + # plugin.properties + + NBO=org.gennbo.NBOPlugin + +new feature: startup options -U nbo or --plugin nbo + - starts Jmol in NBO mode, as if the Plugins...NBO menu item had been clicked + - could be generalized, but do not that more than just nbo in place at this time + - case insensitive + +new feature: NBO n BETA - for GenNBOReader nth beta orbital; could be expanded + +bug fix: SHOW CHEMICAL JME (from NCI CIR) does not properly return formal charges + +bug fix: JSpecView, when open in application, does not allow ZAP + +bug fix: draw POINTGROUP crashes Jmol if model is not first model + +bug fix: DRAW circle rendering broken (load $2-butene ; draw pointGroup) + +bug fix: NBO/ISOSURFACE command - Displaying BETA orbitals for NBO types (NHO, PNBO, etc.) that + are from a file other than the current file causes read failure and no orbital display. + +bug fix: Viewer.runScript(String) now uses evaluateExpression(T[]) + +Lesson learned: Never mix viewer.runScript() and viewer.runScriptQueued() calls. + What will happen is that the unqueued calls will corrupt the + queued calls. However, if you use viewer.evaluateExpression("script('....')"), + that is also synchronous, and it uses a new ScriptEval() to isolate it from + the script being queued. You still have the problem that the scripts could + mess up each other, but at least it will not cause catastrophic failure. + + +bug fix: *.CA should pick up calcium in a PDB file + +bug fix: cfi format (for NBOPro) writing broken + - from using the command + + x = data({*}, 'cfi') + +bug fix: La and Ac should be in transitionmetal + +bug fix: GenNBO reader not recognizing FILTER "BETA" + +code: NBO options extended using the NBO VIEW or NBO OPTIONS "..." command options + + protected boolean jmolOptionNOZAP = false; // do no zap between modules + protected boolean jmolOptionNOSET = false; // do not use NBO settings by default + protected boolean jmolOptionVIEW = false; // present only the VIEW option + protected boolean jmolOptionNONBO = false; // do not try to contact NBOServe + +noting previously undocumented: + + set fontscaling true; font label 10 arial plain 0.020 + + - last number is a fontscaling factor that allows one to set a font size for + - labels in angstroms. Roughly, this pointSize * factor is in Angstroms. + - if label is changed, one must use set fontscaling FALSE; label .... ; fontScaling TRUE; + + +JmolVersion="14.8.1" + +bug fix: isosurface color "user" as an equivalent to isosurface colorscheme "user" broken +bug fix: color isosurface range 1 122 ignores preset isosurface color scheme and just uses the default color scheme + + +JmolVersion="14.8.0" + +JmolVersion="14.8.0-beta-2016-12-17" + +Release Note: switching to semantic versioning (http://semver.org/) +Release Note: When releasing beta version, append "-beta-YYYYMMDD" + +Release Note: new features listed are since first release of 14.5.4 (2016.04.30) + +new feature: set echo OFFSET {sx sy sz} + -- sets the echo offset to a specific screen Angstrom offset + +new feature: set echo OFFSET [mode sx sy sz ax ay az] never implemented + -- see set labelOffset + +new feature: set labelOffset [mode sx sy sz ax ay az] (3.1.15, never documented) + + set labelOffset [sx, sy, sz] + set labelOffset [mode, sx, sy, sz, ax, ay, az] + + where + + sx,sy,sz are screen coord offsets + -- applied after view rotation + -- sy > 0 LOWERS label + ax,ay,az are xyz position (in Angstroms; applied before view rotation) + mode == 0 indicates xyz position is absolute and sx sy sz are Angstroms + mode == 1 indicates xyz position is relative to atom position and sx sy sz are Angstroms + mode == 2 indicates xyz is absolute, and sx sy sz positions are screen pixels + mode == 3 indicates xyz is relative, and sx sy sz positions are screen pixels + defaults: mode == 1; ax = ay = az = 0 + +new feature: fully implemented CIF 2.0 reader + +new feature: MagCIF reader upgraded to new IUCr standard + -- first CIF 2.0 format implemented by IUCr + -- see http://comcifs.github.io/magCIF.dic.html + +new feature: x = getProperty("cifInfo", "c:/temp/test.cif") + -- reads CIF file data in structured format + -- automatically uses CIF 1.0 or CIF 2.0, as needed. + -- if file name is missing, uses current model file + +new feature: autocalculation of MMFF94 partial charges + -- isosurface ... map MEP + -- DIPOLE MOLECULAR + -- no need to preface these with CALCULATE PARTIALCHARGE + +new feature: 3DPrinter-compatible VRML and STL writing. + -- mesh only; does not use high-level objects Cone, Cylinder, Sphere + -- extensive use of dEF and USE for small-footprint VMRL files + -- STL is binary generally, but will be ASCII using SET DEBUG TRUE + -- write t.wrl + -- write t.stl + +new feature: measure ID "test" radius 0.0 font 15.0 SansSerif Plain align CENTER @1 @2 "test" + -- radius 0.0 turns off line (optional) + -- font... sets font (optional) + -- align [left|right|center|none] sets text alignment (optional) + -- requires ID + +new feature: allowance for external app loading of binary (mmtf) files + or any other file using a simple interface: + Viewer.openReader(fullPathName, reader) + +new feature: Jmol reads PyMOL 1.8 PSE files with "set dump_binary, 1" + +new feature: load AUDIO audiofilename + -- Java and JavaScript applet can read WAV, MP3, and OGG files + -- application can read WAV files] + +new feature: settable chain string using {atomset}.chain = "xxx" + +new feature: set hiddenLinesDashed + -- when set TRUE, hidden lines in unit cells and boundbox are rendered as dashed lines. + -- default is FALSE + +new feature: polyhedron -x.x .... + -- sets maximum radius for gap calculation to be x.x + +new feature: $pbz1_1_.getProperty(x) where x is "info", + "faces", "faceTriangles", "faceCount", + "face_areas", "face_types", "face_points", + "vertices", ...more... + -- polyhedra informationoru + +new feature: unitcell("a=...,b=...,c=...,alpha=...,beta=...,gamma=....") + - array of center and three vectors + - example: + $ print unitcell("a=10,b=10,c=20,alpha=90,beta=90,gamma=129") +{0.0 0.0 0.0} +{10.0 0.0 0.0} +{-6.293203 7.7714605 0.0} +{-8.742278E-7 -1.8328565E-6 20.0} + +new feature: load ... unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." + +new feature: unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." + -- only the numbers are read; everything else is ignored, so order is important here + -- uses the format created by show unitcell/a + +new feature: unitcell RECIPROCAL 2 + -- as integer, multiples of pi + + +new feature: polyhedra AUTO ... + -- sets polyhedron radius automatically, using "MAXIMUM GAP" rule + -- see Zur Abgrenzung der Koordinationssphäre und Ermittlung der Koordinationszahl in Kristallstrukturen + G. O. Brunner, D. Schwarzenbach, Zeitschrift für Kristallographie - Crystalline Materials, 1971, vol 133, issues 1-6 127-133 + http://www.degruyter.com/view/j/zkri.1971.133.issue-1-6/zkri.1971.133.16.127/zkri.1971.133.16.127.xml?rskey=sfBNTx&result=1 + +new feature: unitcell reciprocal x.x + -- allows scaling of reciprocal cell, similar to unitcell("reciprocal", x.x) + +new feature: write CIF + -- just a very simple CIF file, P1 format + -- allows writing a simple CIF file with changed coordinates after a UNITCELL command + +new feature: full implementation of OpenSMILES and OpenSMARTS in Jmol + see http://opensmiles.org and http://www.moldb.net/opensmarts + +new feature: C13 NMR prediction from http://www.nmrdb.org/service/jsmol13c?smiles=CCCC + -- although we send MOL file, not SMILES here. + -- actuated with + + SHOW NMR H1 // H1 1H H or just SHOW NMR all default to this + SHOW NMR C13 // or C or 13C + SHOW NMR none // close JSpecView + +new feature: Jmol now implements a way of indicating atropisomer chirality. + -- measured dihedral angle is clockwise-positive front-to-back, as for Jmol dihedrals + -- matching with {*}.find("SMILES","...a^nm-a...") where n and m are 1, 2, or 3 + indicate first, second, or third, respectively, and indicate which bonds of + the biaryl bond, as written, are to the reference atoms. + -- for example: + + $ load $biphenol + $ connect @{@7|@8} @{@1|@2} atropisomer + $ print {*}.find("SMARTS","c1(O)ccccc1^23-c2c(O)cccc2") + + ({0:13}) + + Explained below. + +new feature: CONNECT {pair1} {pair2} ATROPISOMER + -- creates a new bond of type atropisomer (bond chirality in biaryl systems) + -- each pair must include the bonded atom and its reference connected atom + -- example: + + $ load $biphenol + $ connect @{@7|@8} @{@1|@2} atropisomer + $ getProperty bondinfo[7].type + + bondinfo[7].type "atropisomer_23" + +new feature: BONDORDER ATROPISOMER_nm + -- not for general use; will be found in state file + -- for example: + + select BONDS ({6}); + bondOrder atropisomer_23; + +new feature: Jmol SMILES bond atropisomerism ^nm- and ^^nm- + -- indicates atropisomerism (bond chirality in biaryl systems) + -- ^ and ^^ for bonds similar to @ and and @@ for atoms + -- n and m are single-digit bond selectors, generally one of 1, 2, or 3 + -- n = 1/2/3 means "reference atom is first/second/third bonded + -- ^- and ^^- same as ^22- and ^^22-, respectively + -- example: + + $ load $biphenol + $ connect @{@7|@8} @{@1|@2} atropisomer + $ print {*}.find("SMARTS","c1(O)cccc{c1^23-c2}c(O)cccc2") + + ({1 6}) + + Here the "^23-" refers to the two carbons with connected oxygen atoms, because the second + bond listed for the carbon on the left is to the c1(O) atom, and the third bond listed for + the carbon on the right is to the other c(O) atom. Note that bond numbering includes the + implicit bond to the atom coming from the atom on its left, which for the second carbon, + starts with the atropisomeric bond itself, at least in this case. + + 1*23 1*23 + c1(O)ccccc1^23-c2c(O)cccc2 + + +JmolVersion="14.7.5_2016.12.17" + +bug fix: incorrect referencing of pt.fxyz and pt.xyz when unit cells have offsets + +JmolVersion="14.7.5_2016.12.06" + +bug fix: DSSR final touches + + -- see https://chemapps.stolaf.edu/jmol/docs/misc/JmolSQLforDSSR.pdf + + After loading a file from the PDB with the /dssr attribute: + + LOAD =1ehz/dssr + + The associative array _M.dssr holds the DSSR information. This array has the following main keys and subkeys of interest to this discussion: + + bulges + coaxStacks + coaxStacks.stems + hairpins + hbonds + helicies + helicies.pairs + iloops + isoCanonPairs + junctions + kissingLoops + kissingLoops.hairpins + multiplets + nonStack + nts + pairs + ssSegments + stacks + stems + stems.pairs + + Each key or subkey is itself an array of associative arrays. For example, + + LOAD =1ehz/dssr + PRINT _M.dssr.stems.length + PRINT _M.dssr.stems[1].pairs.length + PRINT _M.dssr.stems[1].pairs[1] + PRINT _M.dssr.pairs.select("where name='Imino'") + PRINT _M.dssr.pairs.select("where name != 'WC'").count + PRINT _M.dssr.coaxStacks[1].stems.select("where strand1='GACAC' or strand2='GACAC'")[1].pairs.count + x = "GACAC" + PRINT _M.dssr.coaxStacks[1].stems.select("where strand1=x or strand2=x")[1].pairs.count + SELECT "|1|A|A|44||||" + SELECT @{_M.dssr.pairs.select("where name != 'WC'")} + SELECT ON within(dssr, "nts") + SELECT ON within(dssr, "nts[WHERE v0>17 and v1 <-39]") + SELECT ON within(dssr, "nts.2") + SELECT ON within(dssr, "nts[WHERE v0>1 and v1 <0].2") + +JmolVersion="14.7.5_2016.12.02" + +new feature: fully implemented CIF 2.0 reader + +new feature: x = getProperty("cifInfo", "c:/temp/test.cif") + -- reads CIF file data in structured format + -- automatically uses CIF 1.0 or CIF 2.0, as needed. + -- if file name is missing, uses current model file + +JmolVersion="14.7.4_2016.11.28" + +new feature: MagCIF reader upgraded to new IUCR standard + -- see http://comcifs.github.io/magCIF.dic.html + -- only required these two key changes: + + // old: _magnetic_space_group.transform_from_parent_Pp_abc + // new: _parent_space_group.child_transform_Pp_abc + + // old: _magnetic_space_group.transform_to_standard_Pp_abc + // new: _space_group_magn.transform_BNS_Pp_abc + +JmolVersion="14.7.4_2016.11.22" + +new feature: adds MagCIF reader based on http://comcifs.github.io/magCIF.dic.html +new feature: adds CIF array [...] reading (as a string only; reader needs to parse this) + +JmolVersion="14.7.4_2016.11.05" + +bug fix: miscalculates vector scale and direction for incommensurate modulation of magnetic spin +bug fix: MoleculeInfo.nElements incremented by number of elements on each subsequent call rather + rather than being properly reset to zero before recalculating. + +JmolVersion="14.7.4_2016.11.02" + +bug fix: load x.cif {1 1 1} (where that file has no unitcell) throws a loading error + +JmolVersion="14.7.4_2016.10.26" + +bug fix: POV-Ray output spheres too large -- somehow broken in 14.6.4_2016.10.15 + +JmolVersion="14.7.4_2016.10.23" + +code: netscape.jar references isolated to org.jmol.applet.Jmol + +JmolVersion="14.7.4_2016.10.21" + +bug fix: menu item for X3D export delivers STL; item for STL not functional +bug fix: X3D export includes extraneous VRML text +bug fix: load "@x" not saved in state properly +bug fix: IDTF exporter broken in Jmol 14.7.4_2016.10.02 + +JmolVersion="14.7.4_2016.10.15" + +bug fix: (JSmolJavaExt.js) JSmol/HTML5 WRITE xxx.stl not working. +bug fix: STL export can place two endcaps in the same location + +JmolVersion="14.7.4_2016.10.09" + +new feature: autocalculation of MMFF94 partial charges + -- isosurface ... map MEP + -- DIPOLE MOLECULAR + -- no need to preface these with CALCULATE PARTIALCHARGE + +bug fix: MOL and V3000 readers should add implicit partial charges of 0 when only some partial charges are given + +bug fix: fine lines or dots rendered around boxes in ROCKETS + +bug fix: SET MEASUREMENTS x.x is 10x too wide + +bug fix: MO command does not allow SQUARED with PLANE +bug fix: MO command SQUARED does not reset cutoff to its square +bug fix: MO command does not preserve SQUARED after PLANE command + +bug fix: MOLDEN reader does not accept [MOLDEN FORMAT] + +bug fix: WRL/X3D/STL surface closure for rockets, cartoons, polyhedra, ellipsoids, geosurface, draw +bug fix: triangle renderer miscalculates z-index, causing some hidden triangle bits to show + +code: refactoring of line rastering improves efficiency + +JmolVersion="14.7.4_2016.10.02" + +new feature: 3DPrinter-compatible VRML and STL writing. + -- mesh only; does not use high-level objects Cone, Cylinder, Sphere + -- extensive use of dEF and USE for small-footprint VMRL files + -- STL is binary generally, but will be ASCII using SET DEBUG TRUE + -- write t.wrl + -- write t.stl + +JmolVersion="14.7.3_2016.09.29" + +bug fix: COD CIF files have mixed-lower case atom labels (H5a) in bonds def, causing Jmol to miss bonds. +bug fix: rogue System.out.println for text rendering. + +JmolVersion="14.7.3_2016.09.21" + +bug fix: print compare({1.1}, {2.1}, "MAP", "H") broken in 14.6.0_2016.06.14 + +JmolVersion="14.7.3_2016.09.18" released + +new feature: show chemical formula reads formula from CIF + +bug fix: write MENU broken for non-English language (UTF-8 strings not correctly encoded using base64) +bug fix: write PNGJ should not store "#_DOCACHE_" in PNGJ file +bug fix: JSmol echo image loading from PNGJ can fail +bug fix: load "" after pasting in structure to load fails + +JmolVersion="14.7.2_2016.09.12" + +new feature: measure ID "test" radius 0.0 font 15.0 SansSerif Plain align CENTER @1 @2 "test" + -- radius 0.0 turns off line (optional) + -- font... sets font (optional) + -- align [left|right|center|none] sets text alignment (optional) + -- requires ID + +JmolVersion="14.7.2_2016.09.01" + +bug fix: show vdw USER broken +bug fix: COMPARE {1.1} {2.1} SMILES should be ignoring stereochemistry +bug fix: CIF subsystem reader broken + +JmolVersion="14.7.2_2016.08.30" + +bug fix: SMILES comparison of two strings will report incorrect stereochemistry + +JmolVersion="14.7.2_2016.08.29" + +bug fix: load FILES does not deliver _modelFileName for individual models +bug fix: NCI/CADD reader not escaping "\" in SMILES (javajs.util.PT.escapeUrl) + +JmolVersion="14.6.2_2016.08.28" +syncronized and released as 14.6.2_2016.08.28 + +new feature: allowance for external app loading of binary (mmtf) files + or any other file using a simple interface: + Viewer.openReader(fullPathName, reader) + +bug fix: RCSB -> https "https://files.rcsb.org/download/%FILE.pdb" + +bug fix: EBI sites to https +bug fix: Spartan 16 reader may have empty first model +bug fix: 2D model show SMILES uses @SP -- should be /nostereo/ based on _.dimension == "2D" +bug fix: NCI/CADD now requires "get3d=true" not "get3d=True" + +code: Unit test includes binary types PyMOL and MMTF + +JmolVersion="14.7.1_2016.08.20" + +feature change: updated links to EBI electron density maps (formerly Uppsala; for isosurface "*xxxx") + + "pdbemap", "http://www.ebi.ac.uk/pdbe/coordinates/files/%file.ccp4", + "pdbemapdiff", "http://www.ebi.ac.uk/pdbe/coordinates/files/%file_diff.ccp4" + +code: recoding in javajs.util.Measure.calculateQuaternionRotation (Andrew Hanson) + +JmolVersion="14.7.1_2016.08.11" + +bug fix: PyMOL dump_binary file reading fixes + +JmolVersion="14.7.1_2016.08.09" +sycnronized with Jmol 14.6.1 +bug fix: upgrade of RCSB mmtf format reading to version 0.2 specs + + load =2tbv.mmtf {1 1 1} filter "biomolecule 1;*.ca" + + +JmolVersion="14.7.1_2016.08.08" + +new feature: Jmol reads PyMOL 1.8 PSE files with "set dump_binary, 1" + +JmolVersion="14.7.1_2016.07.29" + +bug fix: COMPARE command can fail if an atom has no bonds + +JmolVersion="14.7.1_2016.07.24" + +bug fix: write x.pdb for multimodel file does not work. + +JmolVersion="14.7.1_2016.07.11" + +sychronized with Jmol 14.6 + +bug fix: Jmol SMILES not allowing for insertion-code search + -- adds "^" for insertion code: [G#129^A.*] + + +JmolVersion="14.7.0_2016.07.06" + +bug fix: Jmol can crash on point group calculation for small polyhedra + +JmolVersion="14.7.0_2016.06.30" + +bug fix: cartoon rendering broken in 2016.06.28 + +JmolVersion="14.7.0_2016.06.28" + +bug fix: using an exporter (write VRML, eg) with cartoonsFancy will break rendering after that +bug fix: after loading PNGJ data, using write FILE crashes Jmol + +JmolVersion="14.7.0_2016.06.27" + +new feature: load AUDIO audiofilename + -- Java and JavaScript applet can read WAV, MP3, and OGG files + -- application can read WAV files] + + +JmolVersion="14.7.0_2016.06.23" + +bug fix: nn.? and nn.* are not processed properly as float nn. + For example: print (35 == 35.? "yes" : "no") cause script exception + +JmolVersion="14.7.0_2016.06.22" + +new feature: settable chain string using {atomset}.chain = "xxx" + +bug fix: compare(a,b,"isomer") does not detect ENANTIOMER (broken in 14.5.5) +bug fix: missing error trap for unsettable property setting +bug fix: load models {0 0 1} ... fails in script compiler + +JmolVersion="14.7.0_2016.06.21" + +bug fix: x3d export shows partial bond as standard bond + +JmolVersion="14.7.0_2016.06.14" + +bug fix: reading of protein structure for a group that is not in a polymer causes null pointer exception + +new feature: set hiddenLinesDashed + -- when set TRUE, hidden lines in unit cells and boundbox are rendered as dashed lines. + -- default is FALSE + +JmolVersion="14.7.0_2016.05.27" + +new feature: polyhedron -x.x .... + -- sets maximum radius for gap calculation to be x.x + +JmolVersion="14.7.0_2016.05.26" + +bug fix: set hermiteLevel -4 allows hermite during mouse move but not spinning +bug fix: QchemReader not + +JmolVersion="14.7.0_2016.05.25" + +bug fix: polyhedron faces not generated correctly when postions are very close together (still) +bug fix: polyhedron face areas not calculated correctly + +new feature: $pbz1_1_.getProperty(x) where x is "info", + "faces", "faceTriangles", "faceCount", + "face_areas", "face_types", "face_points", + "vertices", ...more... + -- polyhedra information + +new feature: print unitcell("a=...,b=...,c=...,alpha=...,beta=...,gamma=....") +new feature: load ... unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." +new feature: unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." + -- only the numbers are read; everything else is ignored, so order is important here + -- uses the format created by show unitcell/a + +new feature: unitcell RECIPROCAL 2 + -- as integer, multiples of pi + +JmolVersion="14.7.0_2016.05.24" + +bug fix: localization broken due to too-old GNU msgfmt version. +bug fix: splash image not appearing in Jmol application Help...about Jmol +bug fix: Jmol application Help may not appear at all +bug fix: switching out of hermite "fancy" cartoons doesn't actually do that. + + +code: removing unnecessary J/api/JmolBioMeshRenderer.js + -- when I started working with Java2Script, I thought that + all references to a class had to be removed and an interface used instead + if modularization was to work in JavaScript. But it turns out only "new Xxx()" + will trigger that request. This might be something I changed in j2sjmol.js early + on; I cannot remember. + +new feature: polyhedra AUTO ... + -- sets polyhedron radius automatically, using "MAXIMUM GAP" rule + -- see Zur Abgrenzung der Koordinationssphäre und Ermittlung der Koordinationszahl in Kristallstrukturen + G. O. Brunner, D. Schwarzenbach, Zeitschrift für Kristallographie - Crystalline Materials, 1971, vol 133, issues 1-6 127-133 + http://www.degruyter.com/view/j/zkri.1971.133.issue-1-6/zkri.1971.133.16.127/zkri.1971.133.16.127.xml?rskey=sfBNTx&result=1 + +JmolVersion="14.7.0_2016.05.23" + +new feature: unitcell reciprocal x.x + -- allows scaling of reciprocal cell, similar to unitcell("reciprocal", x.x) + +new feature: write CIF + -- just a very simple CIF file, P1 format + -- allows writing a simple CIF file with changed coordinates after a UNITCELL command + +bug fix: calculate pointgroup polyhedra "xxx" does not work +bug fix: draw pointgroup $xxx does not work for named polyhedra +bug fix: named polyhedra set visibility broken +bug fix: colors light(and dark)grey and light(and dark)gray should be synonymous +bug fix: isosurface SILENT should pass that to readers + +popup menu: reorganization of color... submenu + +JmolVersion="14.7.0_2016.05.17" + +new feature: full implementation of OpenSMILES and OpenSMARTS in Jmol + see http://opensmiles.org and http://www.moldb.net/opensmarts + +code: unnecessary org.jmol.util.BNode removed; methods now part of org.jmol.util.Node + +new feature: C13 NMR prediction from http://www.nmrdb.org/service/jsmol13c?smiles=CCCC + -- although we send MOL file, not SMILES here. + -- actuated with + + SHOW NMR H1 // H1 1H H or just SHOW NMR all default to this + SHOW NMR C13 // or C or 13C + SHOW NMR none // close JSpecView + +new feature: Jmol now implements a way of indicating atropisomer chirality. + -- measured dihedral angle is clockwise-positive front-to-back, as for Jmol dihedrals + -- matching with {*}.find("SMILES","...a^nm-a...") where n and m are 1, 2, or 3 + indicate first, second, or third, respectively, and indicate which bonds of + the biaryl bond, as written, are to the reference atoms. + -- for example: + + $ load $biphenol + $ connect @{@7|@8} @{@1|@2} atropisomer + $ print {*}.find("SMARTS","c1(O)ccccc1^23-c2c(O)cccc2") + + ({0:13}) + + Explained below. + +new feature: CONNECT {pair1} {pair2} ATROPISOMER + -- creates a new bond of type atropisomer (bond chirality in biaryl systems) + -- each pair must include the bonded atom and its reference connected atom + -- example: + + $ load $biphenol + $ connect @{@7|@8} @{@1|@2} atropisomer + $ getProperty bondinfo[7].type + + bondinfo[7].type "atropisomer_23" + +new feature: BONDORDER ATROPISOMER_nm + -- not for general use; will be found in state file + -- for example: + + select BONDS ({6}); + bondOrder atropisomer_23; + +new feature: Jmol SMILES bond atropisomerism ^nm- and ^^nm- + -- indicates atropisomerism (bond chirality in biaryl systems) + -- ^ and ^^ for bonds similar to @ and and @@ for atoms + -- n and m are single-digit bond selectors, generally one of 1, 2, or 3 + -- n = 1/2/3 means "reference atom is first/second/third bonded + -- ^- and ^^- same as ^22- and ^^22-, respectively + -- example: + + $ load $biphenol + $ connect @{@7|@8} @{@1|@2} atropisomer + $ print {*}.find("SMARTS","c1(O)cccc{c1^23-c2}c(O)cccc2") + + ({1 6}) + + Here the "^23-" refers to the two carbons with connected oxygen atoms, because the second + bond listed for the carbon on the left is to the c1(O) atom, and the third bond listed for + the carbon on the right is to the other c(O) atom. Note that bond numbering includes the + implicit bond to the atom coming from the atom on its left, which for the second carbon, + starts with the atropisomeric bond itself, at least in this case. + + 1*23 1*23 + c1(O)ccccc1^23-c2c(O)cccc2 + +bug fix: MolPRO reader broken + +bug fix: Jmol SMILES directive /noaromatic/ should ignore ":" bond type +bug fix: Jmol SMILES directive /aromaticDouble/ not implemented for SMILES +buf fix; Jmol SMARTS measurements should be required to come after branches +bug fix: Jmol SMILES parser should require connection numbers to be placed prior to branches +bug fix: Jmol SMILES should not allow (.t!50,60,70,80) +bug fix: Jmol SMILES should treat search("[THR.*][THR.*]") should select all atoms in each group +bug fix: Jmol SMILES should return ({}) not ERROR if no atoms are involved + +code: StateCreator and Shape getStateInfo methods simplified and condensed + +JmolVersion="14.5.4_2016.04.30" + +new feature: 13C Simulated spectra (but without correlation yet) + +bug fix: bondorder command broken in 14.1.8_2014.02.17 +bug fix: polyhedra COLLAPSED option in conjunction with UNITCELL breaks rendering +bug fix: "axis" keyword dropped from vocabulary, disabling MOVETO AXIS... + +JmolVersion="14.5.4_2016.04.25" + +new feature: (JavaScript) Jmol.loadFileFromDialog(jmolApplet0) + -- asynchronous file loading on demand + -- can be model file, but can also be script, dssr data - anything + -- can be a local file or a URL + -- see dssr.htm + -- for example: + + Jmol.jmolButton("jmolApplet0", [function(){Jmol.loadFileFromDialog(jmolApplet0)}],"Open File") + +new feature: setting DSSR on the fly: + + model 1 property dssr "1d66.dssr" // file containing data + model 1 property dssr @{load("1d66.dssr")} // actual data + select iloops + +bug fix: show spaceGroup can crash after load ... filter "biomolecule 1" + +bug fix: load =1auy.cif {1 1 1} does not complete atoms in unit cell + for files with noncrystallographic symmetry operations (_struct_ncs...) such as viral capsids + +bug fix: load =1auy.cif {1 1 1} filter "BIOMOLECULE 1;*.ca" does not work + +code: =xxxx/DSSR path changed to http://dssr-jmol.x3dna.org from http://x3dna.bio.columbia.edu/dssr + + +JmolVersion="14.5.4_2016.04.24" + +new feature: show chemical xxx where xxx is one of the file types: + + alc cdxml cerius charmm cif cml ctx gjf gromacs hyperchem jme + maestro mol mol2 sybyl2 mrv pdb sdf sdf3000 sln smiles xyz + + retrieves this information for the currently selected set of atoms + from the the NCI CACTVS Resolver. + + Note that the PDB writer is nonstandard, and "SDF" no longer returns + the 2D mol file, only the 3D mol file. + + Can be used as the show() function: x = show("chemical jme") + + +new feature: print {*}.find("SMILES/hydrogen/") adds hydrogen atoms + +feature note: JSME upgraded to JSME_2015-12-06-2 + +bug fix: NCI switch to using /sdf for 3D rather than 2D, breaks jsv_predict2.html + -- requires converting mrv format to jme: + + function getJMEHs() { + var x= show("chemical mrv") + var x2 = x.split('x2="')[2].split('"')[1].split(' ') + var y2 = x.split('y2="')[2].split('"')[1].split(' ') + var el = x.split('elementType="')[2].split('"')[1].split(' ') + var s = '' + {*}.size + ' ' + {*}.bonds.size + ' ' + el.join(x2).join(y2).join(' ').replace('\n',' ') + var b = x.split("W<') ? -1 : bi.find('>H<') ? -2 : bi.split('order="')[2].split('"')[1]) + s += ' ' + at + ' ' + n + } + return s + } + load $morphine + x = getJMEHs() + print x + + +bug fix: show VARIABLES broken +bug fix: after load =xxxx/dssr, selection "naChains" is defined, but it is not an atom list +bug fix: hyperchem reader may not interpret aromatic correctly +bug fix: show chemical ... will not use the correct structure if it came from NCI and has been changed via modelKitMode. + +code: JmolBioModelSet and BioModel untangled +code: JmolBioModelSet moved to org.jmol.modelsetbio.BioModelSet +code: JmolBioModelSet changed from interface to class +code: unnecessary JmolBioResolver interface removed + +JmolVersion="14.5.4_2016.04.23" + +FEATURE CHANGE: Jmol 14.5.4_2016.04.23 by default will implement DSSP 2.0 as described in + Int. J. Mol. Sci. 2014, 15, 7841-7864; doi:10.3390/ijms15057841 + and implemented at http://www.cmbi.ru.nl/dssp.html. + This change only affects helices that have bulges, indicating them + more appropriately as pi helices rather than alpha helices. + + The original version of DSSP, "DSSP 1.0" will be available using + + calculate structure DSSP 1.0 + show DSSP 1.0 + load ... filter "DSSP1" + + This change is for 14.5 only, not 14.4, which remains DSSP 1.0 + +code: unnecessary org.jmol.modelset.JmolBioModel interface removed +code: unnecessary org.jmol.api.DSSPInterface removed +code: DSSP 1.0/2.0 switch in ModelLoader only necessary while 14.4 and 14.5 are being compiled in parallel + +JmolVersion="14.5.4_2016.04.22" + +bug fix: on loading, crystallographic file reading fails when applying symmetry +bug fix: on loading, user-defined space groups using Hall symbol fails +bug fix: SHELX reader broken + + +JmolVersion="14.5.4_2016.04.21" + +bug fix: CIF files with missing tags that Jmol needs fail to load at all. + (Not necessarily a bad thing, but it is not supposed to fail so dramatically.) +bug fix: mmCIF/mmTF reader does not complete symmetry for biomolecules when there is a lattice. + for example: + + load =2tbv.mmtf {1 1 1} filter "biomolecule 1;*.ca" + backbone off; spacefill 200% + color property symop + +bug fix: mmCIF, PDB, and mmTF readers with lattice indicated does not show unit cell + +JmolVersion="14.5.4_2016.04.19" + +new feature: preliminary MMTF reader + -- MacroMolecular Transmission Format (MMTF, from RTSB) + -- see https://github.com/rcsb/mmtf/blob/master/spec.md#overview + -- binary format for file transfer and molecule construction + -- uses MessagePack binary JSON format + -- entirely experimental; not for general consumption + -- biomolecule processing works + -- DSSP secondary structure is read + + * + * JmolData RCSB MMTF (macromolecular transmission format) file reader + * + * see https://github.com/rcsb/mmtf/blob/master/spec.md + * + * /full/ specification as of 2016.4.18 is implemented,including: + * + * reading atoms, bonds, and DSSR secondary structure + * + * load =1f88.mmtf + * + * + * reading space groups and unit cells, and using those as per other readers + * + * load =1crn.mmtf {1 1 1} + * + * reading bioassemblies (biomolecules) and applying those transformations + * + * load =1auy.mmtf FILTER "biomolecule 1;*.CA,*.P" + * + * reading biomolecules and lattices, and loading course-grained + * + * load =1auy.mmtf {2 2 1} filter "biomolecule 1;bychain";spacefill 30.0; color property symop + * + * + +bug fix: certain viral capsid CIF files will fail to load due to this line: XAU '(X0)(1-10,21-25)' A,B,C +bug fix: DSSR selection includes too many atoms +bug fix: PSE reader broken in JmolData.jar; no issue with Jmol.jar or JSmol +bug fix: PSE reader for Pymol 1.7.5 files may not set some models visible +bug fix: PSE reader not processing (sele) and related selections + +new feature: set window width height +new feature: set window [width height] +new feature: set window "xxx.png" + +new feature: getProperty("shapeInfo.echo") + -- a 1-length array (because all shapeInfo results are arrays + -- shapeInfo.echo[0] contains an associative array based on echo names + -- currently only include keys name, imageWidth, imageHeight, and imageFile + + $ set echo myecho image 'http://noys3.weizmann.ac.il/a2jb/browse?sn=testSet/dna-a/pymol.png' + $ print getProperty("shapeInfo.echo[0]") + { + "myecho" : + { + "imageFile" : "http://noys3.weizmann.ac.il/a2jb/browse?sn=testSet/dna-a/pymol.png" + "imageHeight" : 500 + "imageWidth" : 500 + "name" : "myecho" + } + } + + -- idea is to allow access to image dimensions for any file image + -- for example, for a MacPyMOL session file, because those do not contain width and height information, + we don't have the width and height we need to recreate the model window and associated Jmol image, + but we can also read the associated PyMOL-generated PNG file and get the dimensions that way + + load 'xxxx.pse' filter 'DORESIZE;DOCACHE' + set echo myecho image 'xxxx.png' + var a = getProperty('shapeInfo.echo[0].myecho') + set echo myecho off + write PNGJ @{a.imageWidth} @{a.imageHeight} 'xxxx-jmol.png' + + thus temporarily loading the PyMOL image just long enough to get its dimensions; not actually viewing it + +bug fix: SET nihResolverFormat does not work; using "=" does work. + (There should be no reason to set this; Jmol is automatically changing those to "https".) + +JmolVersion="14.5.4_2016.04.14" + +bug fix: Jmol 14.5.4_2016.04.13 will fail to read PDB files from scripts referencing http://www.rcsb.org/pdb/ + -- does not affect http://www.rcsb.org/pdb/ligand + -- does not affect load =xxxx or load ==xxx + -- does not affect PNGJ files + -- only affects scripts that specifically reference that site (e.g. state scripts created prior to 4/13/2016) + +bug fix: selection of dssr elements using select within(dssr,"pairs[where...]") is not working + -- example after fix: + $ load =1d66/dssr + $ print _M.dssr.pairs.select("where bp='G-C'")[1] + { + "DSSR" : "cW-W" + "LW" : "cWW" + "Saenger" : "19-XIX" + "bp" : "G-C" + "index" : 3 + "name" : "WC" + "nt1" : "|1|D|DG|3||||" + "nt2" : "|1|E|DC|36||||" + } + $ select within(dssr,"pairs") + 773 atoms selected + $ select within(dssr,"pairs[where bp='G-C']") + 243 atoms selected + $ select within(dssr,"pairs[where name='WC']") + 691 atoms selected + + -- Note that this works because SELECT can find unit ids ("|1|E|DC|36||||") in any string. + For example: + + $ select "|1|E|DC|36||||" + 19 atoms selected + + + +JmolVersion="14.5.4_2016.04.13" + +bug fix: JSmol cannot load RCSB ligand files +bug fix: "axis" unintentionally made reserved word in "14.4.4_2016.03.19" +bug fix: symop(@1 @2) broken +bug fix: symop() taking default unitcell from "current" -- should be that it + REQUIRES a prefix "{xxx}." if @1 or @2 are not indicated and there are + multiple models (because it is a general function, not a script command). + +bug fix: models from PyMOL reader do not save atom colors in state when balls are colored + +new feature: "$isosurface1".getProperty("atoms") + -- returns atoms associated with this surface + -- for example, the atoms used to make a molecular surface + + + +new feature: show xxx /yyy + -- filters any SHOW command for lines containing "yyy" (case insensitive) + -- examples: + + $ show symop/glide + $ show set/zoom + $ show state/draw + $ show file "test.xyz" /H + $ show file "/remark 900" + $ show variables/sym + +new feature: symop(3,@3,"atom") + -- returns target atom or atoms + +new feature: show symop 3 @3 "atom" + -- shows target atom or atoms + +JmolVersion="14.5.4_2016.04.11" + +new feature: symop() options: + symop(op) + -- returns the 4x4 matrix representation of this operator + symop(op, atom) + -- returns the point generated by operator op on atom + -- op may be a positive or negative integer indictating the operation (or its reverse) + to apply from the loaded space group -- for example, symop(3, @1) or symop(-4, {atomindex=16}) + -- op may be a string such as "x+1/2,1/2-y,z" representing a specific generic operation + symop(atom1, atom2) + -- returns the description of the first of possibly several operations that take atom1 to atom2, for example: + "2-fold screw axis|translation: 1/2 0 0" + symop(atom1, atom2, n) + -- returns the description of the nth operation that takes atom1 to atom2 + symop(...point...) + -- any place an atom can be used in symop(), one can substitute an xyz coordinate. + -- for example, symop(@1, {1/2 1/2 1/2}) + {atomset}.symop(...) + -- when more than one model is loaded, prepending any symop function with an atom set specifies which + atoms, space group, and unit cell are being referenced. For example, {2.1}.symop(5) operates only on + atoms in the first model of the second loaded file, using the appropriate space group and unit cell. + In this way, "@1" will designate one atom only, provided only one model is showing (using the FRAME/MODEL command). + If only one model has been loaded, there is no need to use this syntax; symop(...) will do the same. + symop(..., outputType) + -- All uses of symop() and {atomset}.symop() can be extended using a final parameter that + changes the default output described above to be something else. Options for outputType include: + + "draw" Returns the Jmol script illustrating this operation with DRAW commands. + + $ print symop(3,"draw") + draw ID draw_* delete + draw ID draw_frame1X diameter 0.15{5.5172 1.9683 2.7802}{6.5172 1.9683 2.7802} color red + ... + + "full" Returns the tab-separated Jones-Faithful string and descriptor for this operation. + + $ print symop(3,"full") + -x,-y,-z(mx,my,mz) Ci: 0 0 0 + + "lattice" Returns the lattice type associated with the space group involving this operation. + + "list" Specifically when two atoms or points are specified, returns a string list of all operations + taking the first to the second. + + $ print symop(@3,@21,"list") + 5 x+1/2,-y+1/2,-z+1/2(-mx,my,mz) 2-fold screw axis|translation: 1/2 0 0|time-reversed + 7 -x+1/2,y+1/2,z+1/2(-mx,my,mz) n-glide plane|translation: 0 1/2 1/2|time-reversed + + Note that this string can be turned into a standard array using .lines.split("\t",true): + + $ print symop(@3,@21,"list").lines.split("\t",true) + [ + 5 + x+1/2,-y+1/2,-z+1/2(-mx,my,mz) + 2-fold screw axis|translation: 1/2 0 0|time-reversed + ] + [ + 7 + -x+1/2,y+1/2,z+1/2(-mx,my,mz) + n-glide plane|translation: 0 1/2 1/2|time-reversed + ] + + "array" Returns an associative array that contains critical information relating to this operation. + + $ load =magndata/0.34 + $ print symop(3,"array") + { + "inversionCenter" : {0.0 0.0 0.0} + "label" : "Ci: 0 0 0" + "matrix" : + [ + [-1.0, 0.0, 0.0, 0.0] + [0.0, -1.0, 0.0, 0.0] + [0.0, 0.0, -1.0, 0.0] + [0.0, 0.0, 0.0, 1.0] ] + "timeReversal" : 1 + "xyz" : "-x,-y,-z(mx,my,mz)" + "xyzOriginal" : "-x,-y,-z,m" + } + +new feature: show spacegroup/xxxxx + + -- selects lines from a space group report similar to the way show state/xxxx works + -- example: + + load =ams/quartz 1 + show spacegroup/Class + +new feature: show/draw symop @1 @2 + -- gives full list of matching symmetry operations + -- example: + + $ load =magndata/1.23 {444 555 1} packed + $ show symop @153 @299 + + 1 x+2,y,z2(mx,my,mz) translation: 2 0 -2 + 5 -x,-y,-z(mx,my,mz) Ci: 0 0 0 + 11 x+2,-y,-z(-mx,my,mz) 2-fold screw axis|translation: 2 0 0|time-reversed + 15 -x,y,z2(-mx,my,mz) c-glide plane|translation: 0 0 -2|time-reversed + +new feature: show/draw symop @1 @2 n + -- shows or draws the nth symmetry operation relating atom 1 to atom 2 + -- example: + + $ load =magndata/1.23 {444 555 1} packed + $ show symop @153 @299 3 + + 11 x+2,-y,-z(-mx,my,mz) 2-fold screw axis|translation: 2 0 0|time-reversed + +new feature: print pointgroup("spacegroup", @1) + -- analyzes the point group (crystal class) of a crystal. + -- uses three irrational-coordinate points to generate all possible operators + -- creates a map with keys (somewhat variable depending upon axes present): + + C2 + C3 + Ci + Cs + S6 + detail + distanceTolerance + linearTolerance + nAtoms + nC2 + nC3 + nCi + nCn + nCs + nS6 + nSn + nTotal + name + points + principalAxis + +new feature: draw SPACEGROUP + -- draws all operations in space group + +new feature: draw POINTGROUP SPACEGROUP + -- draws crystal class symmetry operations for a space group + -- uses point group style, with circular planes + +new feature: @1.find("crystalClass", pt) + -- generates a list of points based on a model's crystal class (point group) + -- uses @1 just to find the unit cell and space group + -- optional pt is used as a generator (defaults to @1) + -- example: + load =ams/calcite 1 + x = @3.find("crystalClass") + print pointgroup(x).name + draw points @x + polyhedra ID p {0 0 0} to @x + +bug fix: qchem reader fails to switch to spherical D/F basis for second structure +bug fix: pointGroup secondary axis in yellow is too hard to see -- using "orange" instead + +JmolVersion="14.5.4_2016.04.05b" + +bug fix: unitcell primitive for A,B,C-centered lattices rotated 90 degrees from + NRL standard (Michael Mehl, U.S. Naval Research Laboratory) +bug fix: polyhedra COLLAPSED do not have correct normal vectors +bug fix: assocArray.bin() should allow "TRUE" option +bug fix: =mp/24972 not working after switch to https + +new feature: adds SHOW SMILES/bio and {*}.find("SMILES/bio") options: + /bio Jmol bioSMILES with header and chain comments + /bionocomments no chain comments (but still one header with comments) + /bioatomcomments full atom comments + /biocovalent indicates covalent S-S crosslinking using ":" notation + /biohbond indicates hydrogen bonds using ":" notation + /biounmatched allows unmatched rings + +new feature: SMILES/nonaromatic same as SMILES/noaromatic + +JmolVersion="14.5.4_2016.04.03" + +bug fix: draw SCALE x.x symop has no effect; good to be able to scale down the arrow +bug fix: draw symop can fail for second call + +JmolVersion="14.5.4_2016.03.31" + +bug fix: load $xxxx broken; http://cactus --> https://cactus +bug fix: _geom_bond_distance starting with "." halts CIF file reading + +JmolVersion="14.5.4_2016.03.29" + +code: ru.po updated (Angel Herraez) + +bug fix: SMILES generator still broken in 14.4.4_2016.03.25 +bug fix: smiles1.find("SMILES",smiles2) broken in 14.4.3_2016.03.06 + +new feature: Polyhedra command allows for min and max radius + -- polyhedra 2.8 3.0 @3 + +bug fix: unitcell PRIMITIVE for rhombohedral groups not implemented +bug fix: unitcell("primitive","R") not implemented + +bug fix: WRITE IMAGE with negative width or height should throw a Jmol ScriptException +bug fix: draw ... [x y] does not position properly with antialias true +bug fix: allow AXES TYPE "" or non-recognized to be same as "abc" +bug fix: AXES TYPE "ab" should also be allowed when offset or center is set +bug fix: labels should not change size when creating images of + different size than screen when angstromsPerInch != 0. +bug fix: if...BREAK|CONTINUE in unbracketed context does not properly + place implicit END IF when TRUE clause is on next line + AND next statement after that is another IF command: + if (xxxx) + break; + if (yyyy) + zzzz; + becomes + if (xxxx) { + break; + if (yyyy) { + zzzz; + } + } + instead of + if (xxxx) { + break; + } + if (yyyy) { + zzzz; + } + + +JmolVersion="14.5.4_2016.03.25" + +new feature: moveto AXIS coupled with <1|2|3|4> + -- indicates direction of axis ("-a" indicates "a pointing away") + -- and clockwise position 1(top left), 2(top right), 3(bottom right), and 4(bottom left) + -- defaults a == a1, b == -b1, c == c4 + -- slight modification of what was released in 03.21 + +bug fix: JavaScript Jmol.evaluateVar() does not properly escape JSON strings +bug fix: SMILES generator broken in 03.23 + +JmolVersion="14.5.4_2016.03.24b" + + +bug fix: axes/unitcell/boundbox appear 10x too thick after recalling from state + -- broken in JmolVersion="14.5.4_2016.03.21" + +bug fix: polyhedra fix for overlapping face triangles +bug fix: magnetic spin vector trail disappears when not vibrating +bug fix: magnetic spin vector trail does not reset if set vectorscale where is less than current + +JmolVersion="14.5.4_2016.03.24" + +bug fix: NCI requires stereochemistry to rings to be prior to a branch: + C\1(/C)=C\C=C.C/1=C not C(/C)\1=C\C=C.C/1=C + +new feature: x.bin() method allows return of an array listing both the bound and the count + -- example: + + $ print {*}.bonds.length.all.bin(1,2,0.1,TRUE).format("json") + [ [ 1.0,10.0 ],[ 1.1,0.0 ],[ 1.2,0.0 ],[ 1.3,3.0 ],[ 1.4,2.0 ],[ 1.5,1.0 ],[ 1.6,0.0 ],[ 1.7,0.0 ],[ 1.8,0.0 ],[ 1.9000001,0.0 ] ] + + +new feature: load =magndata/1.1.37 + -- links to the MAGNDATA database at http://webbdcrista1.ehu.es/magndata + -- "magndata", "http://webbdcrista1.ehu.es/magndata/mcif/%FILE.mcif", + +new feature: set vectorTrail n + -- adds a trail onto a modulating vector (as for an incommensurate magnetic spin) + -- n trails are made, typically in a fan-like pattern that trails the spinning vector + load =magndata/1.1.37 + set vectortrace 20 + set vibrationperiod 2 + vibration on + +bug fix: saving a state after using LOAD "" (empty quotes) + after pasting data directly into the application creates an unreadable state + +new feature: unitcell ON adds #nnn (international table number) to cell description if found + +bug fix: {*}.find("CHEMICAL","NAMES") only reports one name. + +code: more efficient identifying space group + +JmolVersion="14.5.4_2016.03.22" + +bug fix: select picking invertstereo broken + +bug fix: unitcell PRIMITIVE does not work as reported 3/21 +bug fix: unitcell("conventional","F") does not work +bug fix: crystal systems with translational symmetry may have duplication of symmetry operators + + +JmolVersion="14.5.4_2016.03.21" + +new feature: axes OFFSET x.x + -- applies offset of x.x in fractional coordinates in each axis direction + -- AXES OFFSET -0.1 same as AXES CENTER {-0.1 -0.1 -0.1/1} + +new feature: expanded unitcell() function + -- adds additional types: "A", "B", "C", "I", "F" + -- default is the lattice type of the model's space group + -- not just cubic; "BCC" is converted to "I" + -- for example: + + load =ams/silicon 15 packed // Cmca + draw id "uc" diameter 0.1 unitcell mesh nofill color black + unitcell @{unitcell("primitive")} + color unitcell red + unitcell 0.1 + axes unitcell + axes on + +new feature: expanded UNITCELL command to include PRIMITIVE option for any space group + +bug fix: SMILES matcher not allowing azulene to be aromatic + +bug fix: OpenSMILES matcher not allowing non-chemist Hueckel 4+2 interpretation + +bug fix: SMILES generator not adding "-" for biphenyl Ar-Ar bond + +bug fix: set picking invertSTEREO does not work on open-ring systems + +bug fix: SMARTS [R] matching all atoms + +bug fix: dashed lines not visible in measurements, unit cells, and axes + +bug fix: axes 0.01 produces thick 20-pixel-wide lines + -- solution was to drop that to 0.001 for this effect + +JmolVersion="14.5.4_2016.03.14" + +bug fix: Polyhedra with verticies that are also centers of polyhedra for atoms that were visible + but are no longer visible do not update screen positions properly + +JmolVersion="14.5.4_2016.03.13" + +new feature: polyhedra POINTS x.y + -- adds variable size spherical points at corners of polyhedra + -- color is that of element, or black + +new feature: show SMILES/xxxx + -- xxxx = open, strict, openstrict, mmff94 + +new feature: show chemical NAME + -- singular "name" gives just the first name; "names" gives full list + +new feature: full implementation of OpenSMILES aromatic model + +new feature: {*}.find("SMILES/open") + -- generates OpenSMILES string for selected atoms + -- applies OpenSMILES aromaticity rules for 5-, 6-, and 7-membered rings + -- not chemical -- allows exocyclic c=C bonds and [nH] in 6-membered rings + -- also adds atom class if property_atomClass is nonzero + -- for example: + + $ load $2-butanol + $ @2.property_atomclass=2 + $ @3.property_atomclass=3 + $ @5.property_atomclass=5 + $ print {*}.find("smiles/open") + + C[C@H:2]([OH:5])[CH2:3]C + +new feature: /open option for smiles.find("SMILES", pattern) + -- applies OpenSMILES model of aromaticity + -- finds aromaticity-normalized pattern "in" aromaticity-normalized smiles + -- can be after SMILES or as beginning of pattern + $ print "OC1=CC(N)=CC=C1".find("SMILES","NC1=CC(O)=CC=C1") + 0 + $ print "OC1=CC(N)=CC=C1".find("SMILES/open","NC1=CC(O)=CC=C1") + 8 + $ print "OC1=CC(N)=CC=C1".find("SMILES","/open/NC1=CC(O)=CC=C1") + 8 + +new feature: compare("smile1","/open/smiles2") + -- applies OpenSMILES model of aromaticity + -- checks for match of atom class if present (default value 0 matches "not present") + -- does aromaticity normalization on both strings + $ print compare("OC1=CC(N)=CC=C1", "NC1=CC(O)=CC=C1", "isomer") + CONSTITUTIONAL ISOMERS + $ print compare("OC1=CC(N)=CC=C1", "/open/NC1=CC(O)=CC=C1", "isomer") + IDENTICAL + +new feature: {*}.find("SMILES/strict") + -- generates OpenSMILES string for selected atoms + -- applies standard Hueckel aromaticity rules for 5-, 6-, and 7-membered rings + -- does not allow exocyclic c=C bonds or [nH] in 6-membered rings + -- does not create atom classes + -- also for compare() and search() + +new feature: {*}.find("SMILES/open strict") + -- same as just /strict, but also generates atom classes if present as property_atomClass + -- also for compare() and search() + +new feature: {*}.find("SMILES/mmff94") + -- applies a very STRICT, chemically meaningful Hueckel 4+2 Rule + -- adds allowance for only a 1-electron contribution to 6-membered rings (three double bonds) + -- also for compare() and search() + +new feature: optional processing of OpenSMILES [CH2:002] ":" atom class. + -- positive integer value only + -- checks the atom property property_atomclass + -- for SMARTS, [:0] means "without an atomclass" + -- for SMARTS, [!:0] means "any non-zero atomclass" + -- for SMARTS, same as [$(select property_atomclass=n)] + -- only enabled with Jmol SMILES directive "/open/"; otherwise ignored + -- for example: + + $ load $2-butanol + $ show smiles + + C[C@H](O)CC + + $ @2.property_atomclass=2 + $ @3.property_atomclass=3 + $ @5.property_atomclass=5 + + $ select * + 15 atoms selected + $ select on search("/open/[:3]") + 1 atoms selected + $ select on search("/open/[!:3]") + 14 atoms selected + $ select on search("/open/[:0]") + 12 atoms selected + $ select on search("/open/[!:0]") + 3 atoms selected + $ select on search("/open/[!:3 & !:0]") + 2 atoms selected + +new feature: UNITCELL TRANSFORM @m4x4 + -- direct 4x4 matrix transformation of a unit cell + +new feature: calculate symmetry polyhedra {atomset} + -- selectively calculates polyhedra. + -- for example: calculate symmetry polyhedra {polyhedra(4)} + +new feature: calculate symmetry polyhedra id + -- selectively calculates polyhedra for a given ID. + -- for example: calculate symmetry polyhedra "poly1" + + +new feature: atom set can be specified in polyhedra() function: + -- print {2.1}.polyhedra(3) + -- print {2.1}.polyhedra("....polySMILES string...") + +new feature: WRITE MOL67 xxx.mol + -- writes MOL format with bonds of type 6 or 7 (aromatic single/double; rarely significant) + + +bug fix: SMILES should not be returned with comments for internal processing or sending to PubChem or others + +bug fix: SHOW chemical SMILES can be off because it was using the name, not the SMILES string + -- sometimes - e.g. "menthol" - the name has no chirality, but the structure does (of course). + +bug fix: Jmol 14.3.16_2015.09.15 broke first-match-only flag in SMILES mapping + +bug fix: POLYHEDRA when selection halos are on, all have edges + +bug fix: moving of polyhedron will fail if corner of polyhedron is an atom + +bug fix: macro functions cannot be used later in same script as a MACRO command + -- presence of MACRO command now removes check for unknown command name exception + +bug fix: Tripos MOL2 reader does not read element symbols properly + +bug fix: default write MOL file should not indicate aromatic bond types 6 and 7 + -- corrects the fact that these bonds are reserved for queries + -- only affects cases where that bond type has been set (after calculate aromatic or loading of ligand CIF files + + +JmolVersion="14.5.4_2016.03.08" + +bug fix: OpenSMILES even-atom cumulene stereochemistry not implemented + -- examples (reporting "DIASTEREOMERS") + print compare("F/C=C=C=C/F","F/C=C=C=C\\F","isomer") + load $F-C=C=C=C-F;print compare("F/C=C=C=C\\F",{1.1},"isomer") + +bug fix: SMILES generator unnecessarily over-expressing double-bond / and \. + +new feature: (JSmol) standard InChI generator (see inchi.htm, inchi/*) + -- JavaScript library for generation of InChIs + -- runs completely in JavaScript + -- equivalent to SHOW CHEMICAL stdinchi + -- about 900 KB + + +JmolVersion="14.5.3_2016.03.06" + +bug fix: Inconsistent use of "DIASTEREOMERS" (preferred) and "DIASTERIOMERS" (incorrect) + +JmolVersion="14.5.3_2016.03.05" + +bug fix: SMILES TB trigonal bipyramidal stereochemistry not functional +bug fix: SMILES [@TBn] not recognizing n > 2 + +bug fix: SMILES OH octahedral stereochemistry error +bug fix: SMILES [@OHn] not recognizing n > 2 + +bug fix: SMILES SP square planar stereochemistry will report ENANTIOMERS rather than DIASTEREOMERS + +JmolVersion="14.5.3_2016.03.03b" + +bug fix: CIF reader _atom_site_cartn_x incompatible with _geom_bond + -- this fix now allows Jmol to read very simple CIF files that are equivalent to unlimited-atom MOL files + -- _ccdc_geom_bond_type is not required, defaulting to S + -- _ccdc_geom_bond_types include S, D, T, Q (quadruple), and A (aromatic) + + data_icosahedron + loop_ + _atom_site_label + _atom_site_Cartn_x + _atom_site_Cartn_y + _atom_site_Cartn_z + C01 0.0000000000 0.0000000000 9.5105651630 + C02 8.5065080835 0.0000000000 4.2532540418 + C03 2.6286555606 8.0901699437 4.2532540418 + C04 -6.8819096024 5.0000000000 4.2532540418 + C05 -6.8819096024 -5.0000000000 4.2532540418 + C06 2.6286555606 -8.0901699437 4.2532540418 + C07 6.8819096024 5.0000000000 -4.2532540418 + C08 -2.6286555606 8.0901699437 -4.2532540418 + C09 -8.5065080835 0.0000000000 -4.2532540418 + C10 -2.6286555606 -8.0901699437 -4.2532540418 + C11 6.8819096024 -5.0000000000 -4.2532540418 + C12 0.0000000000 0.0000000000 -9.5105651630 + loop_ + _geom_bond_atom_site_label_1 + _geom_bond_atom_site_label_2 + _ccdc_geom_bond_type + C01 C02 S + C01 C03 S + C01 C04 S + C01 C05 S + C01 C06 S + C02 C03 S + C03 C04 S + C04 C05 S + C05 C06 S + ...etc... + + +JmolVersion="14.5.3_2016.03.03" + +bug fix: after SET echo ALL, background echo ... changes text color, not background color + +JmolVersion="14.5.3_2016.03.02" + +bug fix: JavaScript reference to j2s for working gif does not recognize Info.j2sPath + +JmolVersion="14.5.3_2016.02.28" + +bug fix: cyclic peptides do not complete loop for cartoons, backbone, etc. (1SFI) + +JmolVersion="14.5.3_2016.02.27" + +bug fix: [function:"yyy",Function:"zzz"] fails to retain key capitalization after first entry for special names +bug fix: (JavaScript only) polyhedra not saved in state +bug fix: (Applet) broken image in coverImage +bug fix: polyhedra DELETE can crash Jmol if polyhedra are not colored + +JmolVersion="14.5.3_2016.02.17" + +bug fix: slab/depth SET do not behave properly +bug fix: select VISIBLE is not properly set based on slab/depth SET + +bug fix: _GEOM_BOND reading in CIF files nonfunctional. + -- broken in 13.3.4_dev_2013.08.21 + -- result is that between 8/21/2013 and 2/15/2016 the CIF reader + would not recognize _GEOM_BOND and so also not create whole molecules + as it was designed to do when those are present. + -- no impact on states created within this version range + -- no impact on mmCIF reader + -- only impact is upon Materials Studio-generated files such as + http://www.rsc.org/suppdata/cc/c2/c2cc34714h/c2cc34714h.txt + (supplemental mat. for http://pubs.rsc.org/en/Content/ArticleLanding/2012/CC/c2cc34714h) + See Jmol list discussion: https://sourceforge.net/p/jmol/mailman/message/31308577/ + + +JmolVersion="14.5.2_2016.02.14" + +FEATURE CHANGE: JSmol default for Info._disableInitialConsole changed to true + -- no longer necessary with JSmol_spinner.gif + +new feature: j2s/img/JSmol_spinner.gif implemented (Angel Herraez) + -- as default for Info._appletLoadingImage + -- use Info._appletLoadingImage = "none" to disable + +new feature: j2s/img/cursor_wait.gif animation implemented + +bug fix: STRUCTURE statement (utilized in RESTORE STRUCTURE) broken + -- broken in Jmol 14.4.0_2015.10.30 + +bug fix: EBI assembly CIF files that are multi-model files will be by chain, not by model. + -- result was that each chain became a new model + -- for example: see http://www.ebi.ac.uk/pdbe/static/entry/download/2lev-assembly-1.cif.gz + +bug fix: XmlMolProReader does not recognize FILTER "NOMO" + +bug fix: JSmol has never shown cursors + +JmolVersion="14.5.2_2016.02.09" + +new feature: invertselected ATOMS {ring atoms to invert} + -- inverts ring stereochemistry + -- requires prior selection of all atoms to be involved in the inversion + +bug fix: SMARTS pattern [ALA.*] not working without biological polymer type indication +bug fix: SMARTS pattern [r500] not working outside of MINIMIZE + + +JmolVersion="14.5.2_2016.02.06" + +new feature: isosurface BACKSHELL + -- displays just the back side of an isosurface + -- works by reversing the normals, then showing front only + -- similar to isosurface slab 50, but better if object is far from spherical + -- works with PMESH, MO, CONTACT as well + -- reverted using isosurface NOBACKSHELL + +new feature: isosurface "*xxxx" + -- accesses EBI test site for ED maps at http://wwwdev.ebi.ac.uk/pdbe/coordinates/files/%file.ccp4 + -- uses default sigma 1.0 + +new feature: isosurface "**xxxx" + -- accesses EBI test site for ED difference maps at http://wwwdev.ebi.ac.uk/pdbe/coordinates/files/%file_diff.ccp4 + -- uses default sigma 3.0 + +bug fix: JSmol not identifying .ccp4 file extension as binary +bug fix: isosurface "==xxxx" not setting default omap cutoff and sigma 3.0 +bug fix: small MRC map files mistaken for DELPHI files. +bug fix: MRC/CCP4 surface/map files still sometimes inside out. + +JmolVersion="14.5.2_2016.02.05" + + +bug fix: MRC/CCP4 surface/map files sometimes inside out. + +bug fix: LOAD $benzene; SHOW smiles should give c1ccccc1 not c1=cc=cc=c1 + +JmolVersion="14.5.2_2016.02.04" + +bug fix: JVXL files saved from models that involve full model rotate/translateSelected + do not get restored properly. + +bug fix: molecular orbitals do not move with atoms + when full molecule is moved using rotateSelected or translateSelected + +code: better loading of surfaces -- no longer requires javajs.util.XmlUtil +code: removal of unnecessary api interfaces MinimizerInterface, VolumeDataInterface, QuantumPlaneCalculationInterface, MOCalculationInterface, MepCalculationInterface + +JmolVersion="14.5.2_2016.02.03" + +bug fix: IboView/Molpro XML reader validated for multi-molecule XML files + -- to concatenate Molpro XML files, you must supply a new root tag as well as + remove all directives. + -- DOS CMD file example: + + catxml.bat ibo*.xml test.xml + + where catxml.bat is: + + copy /b %1 _temp + echo ^ > %2 + type _temp | find /V "> %2 + echo ^ >> %2 + + + +JmolVersion="14.5.1_2016.02.01" + +bug fix: IboView/Molpro XML Reader validated for reading orbitals + +code: new abstract reader XmlMOReader + + +JmolVersion="14.5.1_2016.01.28" + +bug fix: MOs need to move with atoms and be restored from state properly + after use of ROTATESELECTED. + -- note that fix for 14.4 does not include state saving, as that would break previous subversions + +code: JmolZipUtilities interface removed +code: JmolBinary reduced to just all Spartan-related methods + +JmolVersion="14.5.1_2016.01.25" + +bug fix: Spartan file reader not working properly after MacSpartan -> Spartan14 upgrade + +JmolVersion="14.5.1_2016.01.16" + +bug fix: mol, xyz readers not reporting model name like other readers + +new feature: variable _versionDate + $ show _versionDate + _versionDate = "14.4.1_2016.01.16 2016-01-15 17:25" + + +new feature: x = pointgroup([array of points],center) + -- center is optional, defaulting to average of the points + -- returns a map: + pts = [ {-1.0132 0.585 0.0012999999},{1.0132 0.585 0.0012999999},{0.0 -1.17 0.0012999999} ] + print pointgroup(pts,{0 0 0}) + { + "C2" : + [ + {0.8660127 -0.50001717 0.0022222984} + {-0.8660127 -0.50001717 0.0022222984} + {0.0 0.99999756 0.002222217} + ] + "C3" : + [ + {0.0019245904 -0.0011111083 -0.99999756} + ] + "Cs" : + [ + {0.0019245904 -0.0011111085 -0.99999756} + {-0.49998164 -0.866036 0.0} + {0.49998164 -0.866036 0.0} + {1.0 0.0 0.0} + ] + "S3" : + [ + {0.0019245904 -0.0011111083 -0.99999756} + ] + "center" : {0.0 0.0 0.0} + "detail" : "# 3 atoms;" + "distanceTolerance" : 0.2 + "linearTolerance" : 8.0 + "nAtoms" : 3 + "nC2" : 3 + "nC3" : 1 + "nCi" : 0 + "nCn" : 4 + "nCs" : 4 + "nS3" : 1 + "nSn" : 1 + "nTotal" : 12 + "name" : "D3h" + "principalAxis" : {0.0019245904 -0.0011111083 -0.99999756} + "principalPlane" : {0.0019245904 -0.0011111085 -0.99999756} + } + +code: polyhedra, pointgroup, load =ams/, load "xxxx#_DOCACHE_" features from 14.5 added to 14.4 + +JmolVersion="14.5.1_2016.01.15" + +bug fix: d = [start:1,end:10] fails due to reserved word "end" (also "select", "case", "default", "if", "for", etc.) +bug fix: color "chain" (with quotes) should work, allowing for x="chain"; color @x +bug fix: inappropriate use of REGEX in ["a","b"].find("x") +bug fix: ".xxx" should be allowed as a math continuation: + + print script("show spacegroup all") + .split() + .find("Hall symbol:") + +JmolVersion="14.5.1_2016.01.09" + +code: (JavaScript) refactoring to allow faster, cleaner load for biomodels + +JmolVersion="14.5.1_2016.01.08" + +bug fix: labels, echos, and measurements improperly shaded when z-shaded with nonblack background +bug fix: rendering error when set zshade followed by set antialiasdisplay + +code: (JavaScript) refactoring to reduce extraneous file download + +JmolVersion="14.5.1_2016.01.06" + +bug fix: labels, echos, and measurements disappear when z-shaded + +JmolVersion="14.5.1_2016.01.04" + +bug fix: (JvxlReader) Jmol 12 mapped isosurface jvxl files do not show mapped color +bug fix: setting default label properties using select none;.... fails +bug fix: setting cartoons on for phosphorus-only polymers fails +bug fix: undocumented model-based draw [array of points] broken + -- points only + -- selects from visible frames (frame *, for example) + -- load cyclohexane_movie.xyz; frame *; draw @{{C5}.split().sub({1,0,0}) + +JmolVersion="14.5.1_2016.01.01" + +bug fix: file dropping of JVXL files does not work +bug fix: Mesh capper not working for multiple cuts due to unclosed surface cut + -- for example: load maleic.cif 1;select on atomindex=6;lcaocartoon scale 1.0 CAP unitcell "cpk" +bug fix: Escape.e(P4) returns value for Escape.e(T3) -- only affects SurfaceTool +bug fix: (JSmol only) Java return (int) fValue(x); will return "NaN" instead of "0" for x NaN + -- JSmol script 0 + "test" will print "NaN" rather than "0" + +JmolVersion="14.5.1_2015.12.23b" + +bug fix: JavaScript error reporting uses alert() instead of just setting the error message +bug fix: PyMOL 1.8 PSE files cannot be read because of missing settings + +code: more efficient loading of PyMOL .pse session files + +JmolVersion="14.5.1_2015.12.23" + +bug fix: PyMOL 1.8 PSE files cannot be read +bug fix: dots broken when colored none +bug fix: color cartoons red blue not saved in state +bug fix: color cartoons red blue flipping red/blue in sheets + +JmolVersion="14.5.1_2015.12.21" + +bug fix: color [0xffffff] should not be case-sensitive -- [0Xffffff] should be OK +bug fix: set spin fps ... fails + +JmolVersion="14.5.1_2015.12.20" + +code: (JavaScript) adding use of array.slice and implementing Java byte[] as JavaScript Int8Array() + +bug fix: array handling for labels very inefficient +bug fix: y = javascript("x") only creates string equivalent of x, not actual numerical/object values +bug fix: y = javascript("x") draws "x" from wrapped anonymous function using eval() instead of global context using window.eval() + +JmolVersion="14.5.1_2015.12.14" + +bug fix: JSmol (JSmolCore.js) check for MS Edge browser, which does not support dataURI + +JmolVersion="14.5.0_2015.12.13" + + +new feature: "#_DOCACHE_" suffix for file name loading tells Jmol to insert full structure into any state + -- allows SPT files to preserve the original file (as in all PNGJ files) + -- for example: + load caffeine.xyz#_DOCACHE_ + show state + ... + function _setFileState() { + DATA "file_caffeine.xyz#_DOCACHE_" + 24 + + N 1.31200 -1.04790 0.00250 + C 2.24650 -2.17620 0.00310 + ... + H -4.16720 -0.83950 0.51680 + END "file_caffeine.xyz#_DOCACHE_"; + ... + load /*file*/"c:/jmol-dev/bobtest/caffeine.xyz#_DOCACHE_"; + } + ... + -- repeated calls to caffeine.xyz#_DOCACHE_ use the cached version, not the actual file + -- calls to caffeine.xyz still ignore the cache. + -- also addded to Jmol 14.4.0, but left undocumented + + +new feature: load =ams loads data from American Mineralogist Crystal Structure Database + -- many thanks given to Robert Downs and Alex Pires for enabling this functionality. + -- fetches data from http://rruff.geo.arizona.edu/AMS + -- employs "#_DOCACHE_" flag because some of these data files may change after database maintenance + -- three modes. Only the first, using _database_code_amcsd, is guaranteed to be stable over time, + =ams/ (seven-digit database code) loads that specific structure based on _database_code_amcsd + load =ams/0014673 + show _modelfile + _modelfile = "http://rruff.geo.arizona.edu/AMS/viewJmol.php?amcsd=14673&action=showcif#_DOCACHE_" + =ams/ (less than seven-digit id) loads that specific structure based on sequential id code + load =ams/10000 + show _modelfile + _modelfile = "http://rruff.geo.arizona.edu/AMS/viewJmol.php?id=10000&action=showcif#_DOCACHE_" + =ams/ loads all structures for a specified named mineral. + load =ams/diamond + show _modelfile + _modelfile = "http://rruff.geo.arizona.edu/AMS/viewJmol.php?mineral=diamond&action=showcif#_DOCACHE_" + -- thus, all of the following are equivalent as of 12/13/2015: + + load =ams/0008986 + load =ams/10000 + load =ams/srilankite 4 + + However, it is possible that new structures will be added to srilankite, making + this not the fourth structure, and the five-digit code 10000 can change after + database maintenance. + -- also addded to Jmol 14.4.0, but left undocumented + +new feature: drawing of spheres in 2D window + -- as percent position or absolute, as for ECHO + -- diameter is % if position is %; otherwise it is pixels + -- examples: + + draw d1 diameter 5 [90 90 %] color blue // percent position; 5% diameter + draw d2 diameter 15 [90 90] color blue // absolute position; 15-pixel diameter + draw dO diameter 2 [80 90 %] color @{ {_O}.color } + set echo eO [95 90 %]; echo "O" + + -- can be used in the context of an element key: + + background white + load $caffeine + function createElementKey() { + var y = 90 + for (var e in {*}.element.pivot){ + var c = {element=@e}.color + draw ID @{"d_"+ e} diameter 2 [90 @y %] color @c + set echo ID @{"e_" + e} [91 @{y-1} %] + echo @e + font echo 24 bold sansserif + color echo black + y -= 5 + } + } + createElementKey + + +new feature: additional predefined sets for periodic table: + "@nonmetal _H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn", + "@metal !nonmetal", + "@alkaliMetal _Li,_Na,_K,_Rb,_Cs,_Fr", + "@alkalineEarth _Be,_Mg,_Ca,_Sr,_Ba,_Ra", + "@nobleGas _He,_Ne,_Ar,_Kr,_Xe,_Rn", + "@metalloid _B,_Si,_Ge,_As,_Sb,_Te", + "@transitionMetal elemno>=21&elemno<=30|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112", + "@lanthanide elemno>=57&elemno<=71", + "@actinide elemno>=89&elemno<=103", + + note added: last three changed 1/28/17 as per advice of Frank Weinhold: + + // added La, Ac as per Frank Weinhold - these two are not f-block + "@transitionMetal elemno>=21&elemno<=30|elemno=57|elemno=89|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112", + // removed La + "@lanthanide elemno>57&elemno<=71", + // removed Ac + "@actinide elemno>89&elemno<=103", + + -- useful for removal of metal-metal bonds in inorganic systems + and for specifying polyhedra: + + connect {metal} {metal} delete + polyhedra bonds {metal} + +bug fix: zoomTo not setting time to 0 in the case of scriptWait +bug fix: set selectAllModels should restrict action of display/hide as well +bug fix: set selectAllModels not working appropriately +bug fix: set selectAllModels should not be saved in state +bug fix: JmolData.jar does not update atom screen positions upon REFRESH or select {visible} +bug fix: JmolData.jar -p flag does not work properly +bug fix: model 0 issued when more than one PDB file is open does not execute model * +bug fix: PDB reader broken for filter "biomolecule n" +bug fix: mmCIF reader can fail to pop up menu when biomolecule is present. +bug fix: JSON generation from arrays broken in HTML5 version due to browser changes in Array.toString(). +bug fix: DCD reader broken. +bug fix: getProperty("JSON", "variableInfo", "x") will fail if x is an array + -- was problem with JSV_predict2 failing to properly map atoms between Jmol and JSME +bug fix: {atomset}.sxyz gives incorrect screen coordinate when antialiased +bug fix: point(pt, true|false) also modifies pt itself +bug fix: point({atomset}, true) gives incorrect screen coordinate when antialiased. +bug fix: point({atomset}, false) gives incorrect Cartesian coordinate when antialiased. +bug fix: popup menu item "Surfaces...Off" resets atom selection +bug fix: files with names containing "[]" cannot be loaded. +bug fix: {cell=555}.find("cellFormula") can fail because of 2% slop involved in defining cell=555 +bug fix: {atomset}.split() [split atomset by model] returns array of strings, not array of atoms +bug fix: getproperty SHAPEINFO fails if CGO is present +bug fix: CGO from state deletes DRAW objects +bug fix: CGO not properly isolated to current model; "fixed" not implemented +bug fix: draw ARC|ARROW|CURVE|LINE|VERTICES @x where x is an array does not work +bug fix: loading mmCIF files where label_asym_id != auth_asym_id will apply biomolecule symmetry to wrong chain +bug fix: echo "" fails in applet +bug fix: 3x3 and 4x4 matrix multiplication of points changes the point itself. + +code: BSUtil.cardinalityOf cleanup. +code: synchronizing Jmol-NBO branch + +JmolVersion="14.5.0_2015.11.06" + +bug fix: restoring bonds to a model having fewer bonds than the model for which they were saved throws an exception +bug fix: CIF reader does not read incommensurately modulated magCIF files +bug fix: WRITE xxx.ZIP crashes Jmol +bug fix: POLYHEDRA ... {xxx} TO {yyy} not working + +JmolVersion="14.5.0_2015.11.03" + +bug fix: FOR without {} but with ";" after sole statement + followed immediately by second FOR improperly loops + for (var i from [1,5]) + print i; + for (var i from [1,5]) + print i + +bug fix: OXT missing from BACKBONE selection +bug fix: (JSmol) CIF parser fails to read CIF files containing only a single (non-loop) _struct_ref_seq_dif.align_id + +new feature: polyhedra ID xxx SCALE x.x + -- ID named polyhedra only + -- x.x is the scaling factor, initially 1 + -- x.x > 0 does normal scaling + -- x.x < 0 does "explode" from {0 0 0} (for higher-order Brillouin zones, for instance) + +bug fix: slabbing should reset area and volume of isosurface +bug fix: meshSlicer may fail to add edge to sliced pmesh + +FEATURE CHANGE: (Application only for now) PDB default for =xxxx + -- changed to + "pdb", "http://ftp.wwpdb.org/pub/pdb/data/structures/divided/pdb/%c2%c3/pdb%file.ent.gz" + -- will be complemented with file.ent for non-binary transfer, but that is not implemented yet at RCSB + -- mmCIF counterpart not implemented yet. + -- not HTML5 because for that we need the option to remove .gz + +new feature: set testflag3 TRUE gives random triangle effect to polyhedra + +new feature: POLYHEDRON ID "xxx" OFFSET {3 3 3} + -- allows cartesian offset of named polyhedra + +bug fix: bug fix: empty format crashes Jmol -- print "testing".format("") +bug fix: polyhedron volume will be incorrect if there is a + face triangle that has no edges visible (requires a six or more sided face) + +bug fix: nested if...{...if... } else {...} gives compiler syntax error: + + if (i=1) { + print "i=1" + if (j=1) + print "j != 1" + } else { // } closes if (j=1) instead of if (i=1) { + print "i != 1" + } + +JmolVersion="14.5.0_2015.10.29" + +bug fix: after CALCULATE HYDROGENS TRUE and then deleting hydrogens, hydrogens are not added to aromatic rings in PDB models +bug fix: reading saved state after adding hydrogen atoms results in infinite loop + +JmolVersion="14.5.0_2015.10.28" + +bug fix: XODYDATA file reader does not read bond info or formal charge // changes in 14.4.0_2015.10.28 + +FEATURE CHANGE: default RCSB/PDB load format (=xxxx) changed to http://ftp.wwpdb.org/pub/pdb/data/structures/divided/pdb/%c2%c3/pdb%file.ent.gz + +new feature: (JSmol) adding access-allow-origin status for cdn.rcsb.org and ftp.wwpdb.org. + +JmolVersion="14.5.0_2015.10.27" + +code: unnecessary FRAME commands removed from state +bug fix: polyhedra not read from state (14.5 only) + +JmolVersion="14.5.0_2015.10.24" + +bug fix: [{1,2,3},{4,5,6}].average fails +bug fix: [{1,2,3},{4,5,6}].pivot should return "NaN" + +JmolVersion="14.5.0_2015.10.22" + +bug fix: CIF parser fails to read CIF files containing only a single (non-loop) _struct_ref_seq_dif.align_id +bug fix: WRITE .... AS does not properly allow for unquoted file name + +JmolVersion="14.5.0_2015.10.21" + +bug fix: write c:/temp..... AS PNGJ does not work without quotes that way; it should + +JmolVersion="14.5.0_2015.10.20" + +new feature: polyhedra with arbitrary center and vertices, without atom center + -- for example: + polyhedra ID "myid" {0 0 0} TO [{1 1 -1}, {1 -1 1}, {-1 1 1}, {-1 -1 -1}] # tetrahedron around origin + polyhedra ID "myid" @{{*}.xyz} TO @{{*}.xyz.all} # polyhedron to center of all atoms + +bug fix: set platformSpeed 1 for pmesh fails +bug fix: polyhedron EDGES fails +bug fix: @{ {"hash":{0.1 0.1 0.1},...} } fails (attempts to turn "," into "OR") + -- solution is to not allow "," for OR within associative arrays + +JmolVersion="14.5.0_2015.10.18" + +new feature: x = within(0.01, [array of points]) + -- cleans points of duplicates with a tolerance of 0.001 Angstroms + -- allows multiple pmesh faces to be turned into polyhedra using: + + faces = [] + for (var i = 1; i <= nPlanes; i++) { + var f = ("$f" + i).getProperty("face") + faces.push(f) + } + polyhedra @1 to @{within(0.01, faces.join())} color white + +new feature: $pmeshID.getProperty("faces") + -- returns an array of points + -- cleaned so that it is one point per linear edge, regardless of how + it has been slabbed + +new feature: resolution 0.001 with PMESH and ISOSURFACE planes + -- allows for minimum number of triangles. + +bug fix: Polyhedra can have missing triangle for hexagonal faces +bug fix: calculate symmetry can break Jmol if unit cell has been changed +bug fix: DRAW POLYGON front/back nature of winding was reversed. + +JmolVersion="14.5.0_2015.10.17" + +bug fix: if (...) \n { .... not working (where brace is on next line) +bug fix: CIF reader will read empty second model for IUCr files with terminal data_global block +bug fix: polyhedra bonds unitcell can cause error in HTML5 +bug fix: nucleic backbone should include O atoms on P and C +bug fix: nucleic spine should not include C2' +bug fix: pmesh/isosurface RESOLUTION 0.0001 with plane can cause loss of some or all of the plane + -- resolution 0.0001 creates just a minimum of triangles to construct the plane. +bug fix: set testflag4;isosurface ... ; does not generate normals +bug fix: (Application) set refreshing false shows Jmol console in model frame (Java bug??) + +JmolVersion="14.5.0_2015.10.14" + +NOTE: GoDaddy's inadvertent forcing of revocation of the secure certificate for Jmol + has disabled ALL applets created since Oct 15, 2014. This is a mandatory upgrade. + + +bug fix: SHOW PROPERTY IDENTIFY crashes Jmol. + +JmolVersion="14.5.0_2015.10.13" +JmolVersion="14.4.0_2015.10.13" +JmolVersion="14.3.16_2015.10.13" + +code: compatibility checks with new brace-less if/for/while + +note: Use of multi-line IF/END IF, FOR/END FOR, WHILE/END WHILE + is not compatible with newer JavaScript-like single-line non-brace flow: + + Java/JavaScript style: + + function test () { + for (var i = 0; i < 5; i++) + if (i < 2) + print -i + } + + VB style: + + function test () + for (var i = 0; i < 5; i++) + if (i < 2) + print -i + end if + end for + end function + + The compiler is set to start with assumption that Java/JavaScript + is the active mode but switches to VB style if END XXX is found + +Note: Use of single-line if (...) ..... else ..... endif is allowed + in either mode. In this syntax, the final "endif" is optional + +Note: END DATA is not affected + +JmolVersion="14.3.16_2015.10.12" + +code fix: debug comments in isosurface solvent slowing it down significantly + +bug fix: PARALLEL/PROCESS not working +bug fix: SHOW DATA does not return model data +bug fix: draw CURVE pt1 pt2 does not work +bug fix: pmesh command cannot read files from zip files + because "binary" option is set, and FileManager is returning the wrong input stream + +new feature: unitcell() function + -- returns unitcell as an array in the form [origin, va, vb, vc] + -- first parameter is optional unitcell itself; absence uses current model's unit cell. + -- optional last parameter: scale + -- signatures: + unitcell() // uses current unit cell + unitcell(uc) // copies unit cell + unitcell(uc, "reciprocal") // reciprocal lattice for specified unit cell + unitcell("reciprocal") // reciprocal lattice for current model's unit cell + unitcell(ucconv, "primitive","BCC"|"FCC") // convert conventional to primitive + unitcell("primitive","BCC"|"FCC") + unitcell(ucprim, "conventional","BCC"|"FCC") // convert primitive to conventional + unitcell("conventional","BCC"|"FCC") + unitcell(origin, [va, vb, vc]) // user-defined unit cell; just produces [origin, va, vb, vc] + unitcell(origin, pta, ptb, ptc) // user-defined unit cell using four points + -- compatible with UNITCELL command: + + UNITCELL @{unitcell("reciprocal")} + draw unitcell + UNITCELL RESET + + +new feature: point(unitcell, {i, j, k}) + -- returns the Cartesian point corresponding to a specific coordinate in a unit cell system. + -- unitcell is an array of the form [origin, va, vb, vc] + -- {i j k} is a point in the unit cell + -- for general use -- does not require actual setting of the model's unit cell + +JmolVersion="14.3.16_2015.10.09" + +bug fix: print 'CCC'.find("SMILES") should throw a ScriptException, not a Java exception + +new feature: Gaussian log file reader reads spin density scalars as property_spin + +JmolVersion="14.3.16_2015.10.06" + +new feature: print within(distance, point, array_of_points) + -- point array distance iterator + -- returns subarray of points (in differing order, probably) of array_of_points + that are within distance of point. + +bug fix: MRC surface reader: new version of EMAN2 leaves out alpha,beta,gamma; does not load properly + +bug fix: for (a in {*}) with no VAR fails if a has already been defined as an integer + +bug fix: better error reporting + +new feature: load =aflow/AgAu + -- easy access to binary metal alloy CIF files + -- http://aflowlib.mems.duke.edu/users/jmolers/binary_new/%FILE.aflow_binary + +bug fix: braceless if/for fix from 10.04 + +JmolVersion="14.3.16_2015.10.04" + +bug fix: changing bond order of X-H using set picking assignBond_2 generates error messages and removes atoms + + +new feature: if, for, and while can all operate using no braces for single-line bodies + -- similar to JavaScript and Java + -- examples: + + for(var i = 0; i < 10; i++) + for(var j = 0; j < 10; j++) + print i*j + + if (i == 1) + print i + else + print 0 + +bug fix: translucent echo backgrounds not saved in state properly + + +JmolVersion="14.3.16_2015.10.01" + +bug fix: for (; i < 10; i++) not working +bug fix: for (;;i++) not working +bug fix: for (;;) not working + +JmolVersion="14.3.16_2015.10.01" + +bug fix: hydrogens added to backbone should be part of "backbone" definition + -- no-hydrogen definition is _bb + +NOTE: THIS NEXT NEVER WORKED WELL +new feature: calculate hydrogens TRUE + -- calculates hydrogens and multiple bonding + -- same as + + calculate hydrogens + connect aromatic modify + calculate aromatic + + -- similar to, but not identical to set pdbAddHydrogens + -- allows reasonable addition of multiple bonds to proteins after loading + +bug fix: connect aromatic should not touch H atoms or atoms with 4 or more covalent bonds +bug fix: calculate hydrogen should consider backbone N sp2 +bug fix: {backbone} should include attached H atoms +bug fix: calculate hydrogens should not place H atoms on water + +JmolVersion="14.3.16_2015.09.29" + +note: I am using "map" for "associative array" now + + +new feature: mapOfMaps.array(k) + -- generates an array of maps from a map of maps by + storing all top-level map keys under key k in lower-level map + -- reversed by another .array(k) + -- causes a script exception if mapOfMaps is not a map of maps + +new feature: arrayOfMaps.array(k) + -- generates a map of maps from an array of maps by + removing each map's key k and using that as the key for that map value + -- reversed by another .array(k) + -- causes a script exception if arrayOfMaps is not an array of maps or key k is not present in all maps + +JmolVersion="14.3.16_2015.09.28b" + +bug fix: draw ramachandran broken + +JmolVersion="14.3.16_2015.09.28" + +new feature: array.sort("key") + -- sorts an array of associative arrays by the specified associative array key. + -- example: + + load sf6.smol + x= _M.moData.mos.select("energy,index where energy<0") + x.sort("energy").reverse + print x + + { + "energy" : -0.67001194 + "index" : 35 + } + { + "energy" : -0.67001194 + "index" : 34 + } + { + "energy" : -0.67001194 + "index" : 33 + } + { + "energy" : -0.70143324 + "index" : 32 + } + ... + +new feature: JmolSQL xxxx.select(" WHEREIN ") + -- replaces ** idea + -- assumes values of xxxx are themselves associative arrays + -- indicates that the clause should be applied only to the values for the selected keys + -- returns an associative array that holds only those keys for which the clause is true *for them* + -- works also for array xxxx where each element of xxxx is an associative array, + in which case it returns a subarray of xxxx involving the matching values. + -- example: + + abc = [ A:[b:1], B:[b:2], C:[b:3, d:50], AA:[b:4] ] + print abc.select("A* wherein b>2").format("JSON") + + { "AA": { "b": 4 } } + + Compare this to the following, where we are are checking for validity of abc itself: + + abc = [ A:[b:1], B:[b:2], C:[b:3, d:50], AA:[b:4] ] + print abc.select("A* where B.b=2").format("JSON") + + { "A": { "b": 1 },"AA": { "b": 4 } } + + + abc2 = [ + [ A:[b:1], B:[b:2], C:[b:3, d:50], AA:[b:4] ], + [ A:[b:11], B:[b:22], C:[b:33, d:5050], AA:[b:40] ] + ] + print abc2.select("A* wherein b>2").format("JSON") + + [ { "AA": { "b": 4 } },{ "A": { "b": 11 },"AA": { "b": 40 } } ] + +new feature: JmolSQL xxxx.select("() WHERE/WHEREIN ") + -- parentheses around keys replaces ";" idea + -- indicates to return an array of values rather than a key/value pair + -- works also for array xxxx where each element of xxxx is an array or associative array, + in which case it returns an array of matching values, without keys. + -- example: + + load =1ehz/dssr + print _M.dssr.hbonds.select("distance where res_long like '*|C|72|*'") + { + "distance" : 2.832 + } + { + "distance" : 2.879 + } + { + "distance" : 2.838 + } + + print _M.dssr.hbonds.select("(distance) where res_long like '*|C|72|*'") + + 2.832 + 2.879 + 2.838 + + print _M.dssr.hbonds.select("(distance) where res_long like '*|C|72|*'").average + + 2.8496666 + + +JmolSQL + +JmolSQL is a Jmol math syntax that is designed to query information related to molecular structure. The idea is that associative arrays, with key/value pairs, and especially arrays of associative arrays, are data, and those arrays themselves can be thought of as a mini database. These sorts of data can be found in Jmol in the a model's auxiliary info (variable _M), including validation data returned from LOAD =xxxx/val (_M.validation), sequence domain data returned from LOAD =xxxx/dom (_M.domains), and secondary structure information returned from LOAD =xxxx/dssr (_M.dssr) or LOAD=xxxx/rna3d (_M.rna3d). In addition, the getProperty() function returns a wide variety of data relating to model attributes, including getProperty("atomInfo") and getProperty("bondInfo") among several others. + +The original conception of JmolSQL was in the context of the getProperty() function -- for example: + +load $caffeine +print getProperty("atomInfo[SELECT atomno,coord WHERE shape LIKE 'trigonal planar']") + + { "atomno" : 1 "coord" : {1.312 -1.0479 0.0025} } { "atomno" : 3 "coord" : {1.7906001 0.20809999 9.999999E-4} } ... +More recent development widens this use to any array data, and use of the .select() function rather than getProperty() is recommended for general use. Thus, alternatively we can use: + +print getProperty("atomInfo").select("atomno,coord WHERE shape LIKE 'trigonal planar' ") + + +object.SELECT("keys WHERE/WHEREIN phrase") +There are three parts to JmolSQL: object, keys, and an optional WHERE or WHEREIN phrase. The object can be either an associative array [key1:value1, key2:value2, key3:value3] or an array of associative arrays, usually all having the same set of keys. + +Associative Arrays +When the top-level object is an associative array, .select() can be used to select +out subsets of that array, either as a single associative array or as an array of values. + +abc.select("...") +The simplest form of .select() returns a subset of abc. Wild cards can be interspersed with additional keys, for example, "a*,b" or "*_id". In each such case, the case-sensitive LIKE operation is used to match keys. + +abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] +print abc.select("A").format("JSON") + +{ "A": { "b": 1 } } +abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] +print abc.select("A*").format("JSON") + +{ "A": { "b": 1 },"AA": { "b": 3,"d": 50 } } +abc.select("(...)") +Using parentheses around the list of keys delivers a list of values of b for only the the subset of xyz for which a=1: + +abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] +print abc.select("(A,B)").format("JSON") + +[ { "b": 2 },{ "b": 1 } ] + +Arrays of Associative Arrays +In addition to operating on an associative array directly, JmolSQL can operate on an array of associative arrays. Generally we assume here that the elements of that array are associative arrays that all have the same set of keys. This is the essence of a database. Whether or not the associative arrays have the same keys is not important for Jmol. For example, the getProperty("atomInfo") returns an array giving the information for each atom that is loaded: + +load $caffeine +x = getProperty("atomInfo") +print x.count + +24 +print x[1] + +{ "_ipt" : 0 "atomIndex" : 0 "atomno" : 1 "bondCount" : 3 "clickabilityFlags" : 48 "colix" : -32761 "color" : "[x3050f8]" "coord" : {1.312 -1.0479 0.0025} "element" : "nitrogen" "elemno" : 7 "formalCharge" : 0 "info" : "N1 #1" "model" : "1" "partialCharge" : 0.0 "radius" : 0.7416667 "shape" : "trigonal planar" "spacefill" : 0.3565 "sym" : "N" "visibilityFlags" : 63 "visible" : true "x" : 1.312 "y" : -1.0479 "z" : 0.0025 } +These data can be "queried" using JmolSQL. + +xyz.select("...") +Creates the sublist of associative arrays having the selected subset of keys: + +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("b").format("JSON") + +[ { "b": 11 },{ "b": 22 },{ "b": 33 } ] +print x.select("atomno,element") + { "atomno" : 1 "element" : "nitrogen" } { "atomno" : 2 "element" : "carbon" } { "atomno" : 3 "element" : "carbon" } { "atomno" : 4 "element" : "oxygen" } ... +xyz.select("(...)") +Adding parentheses creates a list of only the values for the specified keys: +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("(b)").format("JSON") + +[ 11,22,33 ] +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("(a,b)").format("JSON") + +[ 11,1,22,2,33,3 ] +load $caffeine +print getProperty("atomInfo").select("(element)").pivot +{ "carbon" : 8 "hydrogen" : 10 "nitrogen" : 4 "oxygen" : 2 } +The assumption when using (keys) is that you want to know all these values, +but you don't care what order they are in (because that will not be predictable) +and you don't care about their exact context. An example is a list of bonds for +which we just want to know all the atoms involved, but the atoms are listed +under "atom1" and "atom2" in each bond array. + +load =1ehz/dssr +select on @{_M.dssr.hbonds.select("(atom1_id,atom2_id)")} + +206 atoms selected + +Using WHERE +WHERE is used to select a subset of the elements of an array based on specific +key-value relationships. + +xyz.select("... WHERE ...") +Delivers all key/value pairs in the subset of xyz element associative arrays +for which the WHERE clause is true for that element. + +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("* where a<3 and b<20").format("JSON") + +[ { "b": 11,"a": 1 } ] +load $caffeine +print getProperty("atomInfo").select("atomno,element WHERE shape LIKE 'trigonal planar' ").format("JSON") + +[ { "element": "nitrogen","atomno": 1 },{ "element": "carbon","atomno": 3 },{ "element": "nitrogen","atomno": 5 },{ "element": "carbon","atomno": 7 },{ "element": "carbon","atomno": 9 },{ "element": "nitrogen","atomno": 10 },{ "element": "carbon","atomno": 12 },{ "element": "carbon","atomno": 13 } ] + + +xyz.select("(...) where ...") +Using parentheses around the list of keys delivers a list of +values for only the subset of xyz for which the WHERE clause is true: + +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("(b) where a>1").format("JSON") + +[ 22,33 ] +load $caffeine + print getProperty("atomInfo").select("(shape) WHERE shape").pivot +{ "bent" : 1 "tetrahedral" : 3 "trigonal planar" : 8 } +Note that "WHERE shape" here just excludes all cases where shape is the empty string, since empty strings in Jmol evaluate as FALSE. (In this case that involves hydrogen atoms.) + +For example, finding all the hydrogen bonds created by DSSR for a given residue: + +load =1ehz/dssr +x = _M.dssr.hbonds.select("(distance) where res_long like '*|A|C|72|*'"); +print x.format("JSON") +print format("%5.3f",x.average) + +[ 2.832,2.879,2.838 ] 2.850 +Array "Drilling" + +WHERE will "drill down" through arrays of arrays to find +elements that are associative arrays, returning a flat array of those objects: + +xyz = [ [[a:1,b:11], [a:0,b:0]],[[[a:2,b:22]]],[[a:3,b:33,aa:44]] ] +print xyz.select("a* where a>0").format("JSON") + +[ { "a": 1 },{ "a": 2 },{ "a": 3,"aa": 44 } ] +xyz = [ [[a:1,b:11], [a:0,b:0]],[[[a:2,b:22]]],[[a:3,b:33,aa:44]] ] +print xyz.select("(b) where a>0").format("JSON") + +[ 11,22,33 ] + +WHERE vs. WHEREIN +Starting with Jmol 14.4, JmolSQL includes an additional option, WHEREIN. This option +allows selecting specific key/value pairs for which the value is itself an associative +array, and *that array* has a specific set of key/value relationships. Thus, the +clause is checked one level deeper in the structure. + +For example, given the associative array + +abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] + +we can select out only those keys for which type='a': + +abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] +print abc.select("* WHEREIN type='a'").format("JSON"); + +{ "key_3": { "i": 3,"type": "a" },"key_1": { "i": 1,"type": "a" } } +All of the options that involve WHERE also apply to WHEREIN. For example, +multiple keys can be specified, and keys can be surrounded by parentheses +to return just the values instead of key/value pairs: + +abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] +print abc.select("(key_1,key2) WHEREIN type='a'").format("JSON"); + +[ { "i": 1,"type": "a" } ] +In addition, WHEREIN can be applied to arrays as well as associative arrays. +In this case, the WHEREIN phrase applies to the elements of that array, which +are assumed to be associative arrays. For example, we can get a list of just +the occupied orbitals produced by Gaussian that are of a given symmetry: + +load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" +print _M.moData.select("mos wherein occupancy>0").select("(symmetry)").pivot + +{ "(A1)--O" : 6 "(A2)--O" : 1 "(B1)--O" : 1 "(B2)--O" : 4 } +Note that this use of WHEREIN with arrays in this way can also be accomplished +more directly with WHERE: + +load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" +print _M.moData.mos.select("(symmetry) where occupancy>0").pivot + +{ "(A1)--O" : 6 "(A2)--O" : 1 "(B1)--O" : 1 "(B2)--O" : 4 } +load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" +x= _M.moData.select("mos wherein occupancy>0 and symmetry like '(B2)*' ") +print x.select("(index)").format("JSON") + +[ 1,5,8,10 ] + + + + +After taking a close look at this, I decided this was getting too cryptic. I think this is much simpler. This long email message summarizes the JmolSQL business, starting with Jmol 11.3.16_2015.09.28. See http://chemapps.stolaf.edu/jmol/zip/jmol-14.3.16_2015.09.28.zip + +JmolSQL +JmolSQL is a Jmol math syntax that is designed to query information related to molecular structure. The idea is that associative arrays, with key/value pairs, and especially arrays of associative arrays, are data, and those arrays themselves can be thought of as a mini database. These sorts of data can be found in Jmol in the a model's auxiliary info (variable _M), including validation data returned from LOAD =xxxx/val (_M.validation), sequence domain data returned from LOAD =xxxx/dom (_M.domains), and secondary structure information returned from LOAD =xxxx/dssr (_M.dssr) or LOAD=xxxx/rna3d (_M.rna3d). In addition, the getProperty() function returns a wide variety of data relating to model attributes, including getProperty("atomInfo") and getProperty("bondInfo") among several others. + +The original conception of JmolSQL was in the context of the getProperty() function -- for example: + +load $caffeine +print getProperty("atomInfo[SELECT atomno,coord WHERE shape LIKE 'trigonal planar']") + + { + "atomno" : 1 + "coord" : {1.312 -1.0479 0.0025} + } + { + "atomno" : 3 + "coord" : {1.7906001 0.20809999 9.999999E-4} + } + ... + +More recent development widens this use to any array data, and use of the .select() function rather than getProperty() is recommended for general use. Thus, alternatively we can use: + +print getProperty("atomInfo").select("atomno,coord WHERE shape LIKE 'trigonal planar' ") + + +object.SELECT("keys WHERE/WHEREIN phrase") +There are three parts to JmolSQL: object, keys, and an optional WHERE or WHEREIN phrase. The object can be either an associative array [key1:value1, key2:value2, key3:value3] or an array of associative arrays, usually all having the same set of keys. + +Associative Arrays +When the top-level object is an associative array, .select() can be used to select +out subsets of that array, either as a single associative array or as an array of values. + +abc.select("...") +The simplest form of .select() returns a subset of abc. Wild cards can be interspersed with additional keys, for example, "a*,b" or "*_id". In each such case, the case-sensitive LIKE operation is used to match keys. + +abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] +print abc.select("A").format("JSON") + +{ "A": { "b": 1 } } + +abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] +print abc.select("A*").format("JSON") + +{ "A": { "b": 1 },"AA": { "b": 3,"d": 50 } } + +abc.select("(...)") +Using parentheses around the list of keys delivers a list of values of b for only the the subset of xyz for which a=1: + +abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] +print abc.select("(A,B)").format("JSON") + +[ { "b": 2 },{ "b": 1 } ] + + +Arrays of Associative Arrays +In addition to operating on an associative array directly, JmolSQL can operate on an array of associative arrays. Generally we assume here that the elements of that array are associative arrays that all have the same set of keys. This is the essence of a database. Whether or not the associative arrays have the same keys is not important for Jmol. For example, the getProperty("atomInfo") returns an array giving the information for each atom that is loaded: + +load $caffeine +x = getProperty("atomInfo") +print x.count + +24 + +print x[1] + +{ + "_ipt" : 0 + "atomIndex" : 0 + "atomno" : 1 + "bondCount" : 3 + "clickabilityFlags" : 48 + "colix" : -32761 + "color" : "[x3050f8]" + "coord" : {1.312 -1.0479 0.0025} + "element" : "nitrogen" + "elemno" : 7 + "formalCharge" : 0 + "info" : "N1 #1" + "model" : "1" + "partialCharge" : 0.0 + "radius" : 0.7416667 + "shape" : "trigonal planar" + "spacefill" : 0.3565 + "sym" : "N" + "visibilityFlags" : 63 + "visible" : true + "x" : 1.312 + "y" : -1.0479 + "z" : 0.0025 + } + +These data can be "queried" using JmolSQL. + +xyz.select("...") +Creates the sublist of associative arrays having the selected subset of keys: + +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("b").format("JSON") + +[ { "b": 11 },{ "b": 22 },{ "b": 33 } ] + +print x.select("atomno,element") + { + "atomno" : 1 + "element" : "nitrogen" + } + { + "atomno" : 2 + "element" : "carbon" + } + { + "atomno" : 3 + "element" : "carbon" + } + { + "atomno" : 4 + "element" : "oxygen" + } + ... +xyz.select("(...)") +Adding parentheses creates a list of only the values for the specified keys: + +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("(b)").format("JSON") + +[ 11,22,33 ] + +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("(a,b)").format("JSON") + +[ 11,1,22,2,33,3 ] + +load $caffeine +print getProperty("atomInfo").select("(element)").pivot +{ + "carbon" : 8 + "hydrogen" : 10 + "nitrogen" : 4 + "oxygen" : 2 + } + +The assumption when using (keys) is that you want to know all these values, +but you don't care what order they are in (because that will not be predictable) +and you don't care about their exact context. An example is a list of bonds for +which we just want to know all the atoms involved, but the atoms are listed +under "atom1" and "atom2" in each bond array. + +load =1ehz/dssr +select on @{_M.dssr.hbonds.select("(atom1_id,atom2_id)")} + +206 atoms selected + + +Using WHERE +WHERE is used to select a subset of the elements of an array based on specific +key-value relationships. + +xyz.select("... WHERE ...") +Delivers all key/value pairs in the subset of xyz element associative arrays +for which the WHERE clause is true for that element. + +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("* where a<3 and b<20").format("JSON") + +[ { "b": 11,"a": 1 } ] + +load $caffeine +print getProperty("atomInfo").select("atomno,element WHERE shape LIKE 'trigonal planar' ").format("JSON") + +[ { "element": "nitrogen","atomno": 1 },{ "element": "carbon","atomno": 3 },{ "element": "nitrogen","atomno": 5 },{ "element": "carbon","atomno": 7 },{ "element": "carbon","atomno": 9 },{ "element": "nitrogen","atomno": 10 },{ "element": "carbon","atomno": 12 },{ "element": "carbon","atomno": 13 } ] + + +xyz.select("(...) where ...") +Using parentheses around the list of keys delivers a list of +values for only the subset of xyz for which the WHERE clause is true: + +xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] +print xyz.select("(b) where a>1").format("JSON") + +[ 22,33 ] + +load $caffeine + print getProperty("atomInfo").select("(shape) WHERE shape").pivot +{ + "bent" : 1 + "tetrahedral" : 3 + "trigonal planar" : 8 + } + +Note that "WHERE shape" here just excludes all cases where shape is the empty string, since empty strings in Jmol evaluate as FALSE. (In this case that involves hydrogen atoms.) + +For example, finding all the hydrogen bonds created by DSSR for a given residue: + +load =1ehz/dssr +x = _M.dssr.hbonds.select("(distance) where res_long like '*|A|C|72|*'"); +print x.format("JSON") +print format("%5.3f",x.average) + +[ 2.832,2.879,2.838 ] +2.850 + +Array "Drilling" + +WHERE will "drill down" through arrays of arrays to find +elements that are associative arrays, returning a flat array of those objects: + +xyz = [ [[a:1,b:11], [a:0,b:0]],[[[a:2,b:22]]],[[a:3,b:33,aa:44]] ] +print xyz.select("a* where a>0").format("JSON") + +[ { "a": 1 },{ "a": 2 },{ "a": 3,"aa": 44 } ] + +xyz = [ [[a:1,b:11], [a:0,b:0]],[[[a:2,b:22]]],[[a:3,b:33,aa:44]] ] +print xyz.select("(b) where a>0").format("JSON") + +[ 11,22,33 ] + + +WHERE vs. WHEREIN +Starting with Jmol 14.4, JmolSQL includes an additional option, WHEREIN. This option +allows selecting specific key/value pairs for which the value is itself an associative +array, and *that array* has a specific set of key/value relationships. Thus, the +clause is checked one level deeper in the structure. + +For example, given the associative array + +abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] + +we can select out only those keys for which type='a': + +abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] +print abc.select("* WHEREIN type='a'").format("JSON"); + +{ "key_3": { "i": 3,"type": "a" },"key_1": { "i": 1,"type": "a" } } + +All of the options that involve WHERE also apply to WHEREIN. For example, +multiple keys can be specified, and keys can be surrounded by parentheses +to return just the values instead of key/value pairs: + +abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] +print abc.select("(key_1,key2) WHEREIN type='a'").format("JSON"); + +[ { "i": 1,"type": "a" } ] + +In addition, WHEREIN can be applied to arrays as well as associative arrays. +In this case, the WHEREIN phrase applies to the elements of that array, which +are assumed to be associative arrays. For example, we can get a list of just +the occupied orbitals produced by Gaussian that are of a given symmetry: + +load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" +print _M.moData.select("mos wherein occupancy>0").select("(symmetry)").pivot + +{ + "(A1)--O" : 6 + "(A2)--O" : 1 + "(B1)--O" : 1 + "(B2)--O" : 4 + } + +Note that this use of WHEREIN with arrays in this way can also be accomplished +more directly with WHERE: + +load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" +print _M.moData.mos.select("(symmetry) where occupancy>0").pivot + +{ + "(A1)--O" : 6 + "(A2)--O" : 1 + "(B1)--O" : 1 + "(B2)--O" : 4 + } + +load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" +x= _M.moData.select("mos wherein occupancy>0 and symmetry like '(B2)*' ") +print x.select("(index)").format("JSON") + +[ 1,5,8,10 ] + + +JmolVersion="14.3.16_2015.09.25" + +bug fix: HBONDS DELETE broken since 14.1.2 + +JmolVersion="14.3.16_2015.09.23" + +bug fix: within(0.0, {0 0 0}) fails when no atoms in model + +JmolVersion="14.3.16_2015.09.22" + +bug fix: for(var x in ...) does not respect "var" + +bug fix: x.format("JSON") fails for recursive x + -- arrays or associative arrays can be recursive + -- detection of recursion during SHOW, x.format("JSON"), and @x (deep copy) + now delivers empty array or associative array + -- works also with expressions using @{...}: x = @{y.select("* where atomno > 10")} + + -- example: + + $ a = [[1,2],3] + $ a..2 = a + $ print a.format("JSON") + + [ [ 1,2 ],[ [ 1,2 ],[ ] ] ] + + $ a = [b:1] + $ a.b = a + $ print a.format("JSON") + + { "b": { "b": { } } } + + $ y = @x + $ show y + + y = { "b":{ "b":{ } } } + + +new feature: x = @a + -- deep copy for a = array or associative array + -- @a for string variable still gets the value of the variable named by variable a + -- math environment only, not SELECT + +new feature: for allows one continuation line, as in JavaScript and Java + -- for example: + for (i = 1; i <= 3; i++) + print i; + +bug fix: for (key in hash){...} fails upon functional iteration (deepCopy) + -- code was reusing the FOR variable when it should have been caching it in the context stack + +JmolVersion="14.3.16_2015.09.21" + +new feature: Raster3D triangle-only file reader (for DSSR cartoon-block representation) + -- see http://skuld.bmsc.washington.edu/raster3d/html/render.html + +bug fix: minor fixes for DSSR + +bug fix: print within(0, "XXX", ...) ignores the "XXX" entirely. Should throw an error (Ron Mignery) +bug fix: print within(0, "vdw", ...) ignores "vdw"; should accept that as "vanderwaal" +bug fix: print within(-1.0, "vanderwaal", ...) ignores "vanderwaal" and does a fractional-coordinate calculation + +JmolVersion="14.3.16_2015.09.20" + +FEATURE CHANGE: 3DNA DSSR has switched over to JSON; some array names are changed. + + +new feature: print @1.label("%[unitid]") + -- generates unit IDs for atoms or residues + -- unit IDs are a proposed general standard for representing atoms and residues in biomolecules + -- see http://rna.bgsu.edu/main/rna-3d-hub-help/unit-ids + -- options follow "-": + + $ print {atomno=3}.label("%[unitid]") // includes residue and atom + |1|A|G|1|OP1||| + + $ print {atomno=3}.label("%[unitid-r]") // residue only + |1|A|G|1|||| + + $ print {atomno=3}.label("%[unitid-mr]") // adds model id + 1EHZ|1|A|G|1|||| + + $ print {atomno=3}.label("%[unitid-mra]") // full unitID + 1EHZ|1|A|G|1|OP1||| + + $ print {atomno=3}.label("%[unitid-mrat]") // full unitID, right-trimmed + 1EHZ|1|A|G|1|OP1 + + -- Note that the full 8-line unit ID is produced under all circumstances. + This is important, because string-matching of unit ids will not work + without all fields completed. For example: + + |1|A|G|1 + + would match + + |1|A|G|11 + + without the closing "|". Likewise, + + |1|A|G|11 + + is not a match for the insertion residue + + |1|A|G|11|||3| + + -- [Editorial note: I agree that it was ill-advised to put the insertion + code at the end. This makes it impossible to efficiently match + residues in full-atom unit IDs.] + + -- Note that in an actual atom label, one needs to add "\n" at the end + and have the label in quotes in order to avoid having "|" mean "new line" + + label "%[unitid]\n" + + not just + + label %[unitid] + + This is a consequence of having defined "|" as new line early on in Jmol + development. + +bug fix: quoted labels containing \n are supposed to ignore | as new-line char + +new feature: select shortcuts for nucleic acid structures + -- for example: select junctions; select kissingloops + -- activated after load =xxxx/dssr or calculate structure dssr + -- includes: + "@bulges within(dssr,'bulges')", + "@coaxStacks within(dssr,'coaxStacks')", + "@hairpins within(dssr,'hairpins')", + "@hbonds within(dssr,'hbonds')", + "@helices within(dssr,'helices')", + "@iloops within(dssr,'iloops')", + "@isoCanonPairs within(dssr,'isoCanonPairs')", + "@junctions within(dssr,'junctions')", + "@kissingLoops within(dssr,'kissingLoops')", + "@multiplets within(dssr,'multiplets')", + "@nonStack within(dssr,'nonStack')", + "@nts within(dssr,'nts')", + "@naChains within(dssr,'naChains')", + "@pairs within(dssr,'pairs')", + "@ssSegments within(dssr,'ssSegments')", + "@stacks within(dssr,'stacks')", + "@stems within(dssr,'stems')", + +JmolVersion="14.3.16_2015.09.15" + +bug fix: JSME's noncanonical SMILES does not match Jmol's standard SMILES for aromatics + -- solution is to use /noncanonical/ with find(). + +bug fix: JSmol does not automatically start non-English language + +new feature: SMILES /noncanonical/ + -- matches Jmol's aromatic with JSME's "noncanonical" aromatic + $ load $aspirin + $ show smiles + c1=cc=cc2=c1C(O)=O.O2C(C)=O + $ print {*}.find("smiles", "/noncanonical/C1=CC=CC(OC(C)=O)=C1C(O)=O") + ({0:20}) + $ print "c1=cc=cc2=c1C(O)=O.O2C(C)=O".find("smiles", "/noncanonical/C1=CC=CC(OC(C)=O)=C1C(O)=O") + 13 + +new feature: {*}.find("SMILES", "NOAROMATIC") + -- creates nonaromatic (noncanonical) SMILES + +new feature: JmolSQL x.select("...") + -- shortcut for x.getProperty("[select ... ]") + -- x should by an associative array {key:value,..} or a sequential array [a,b,c,d] + + +>>NOTE: the does not work. Does it matter? +new feature: JmolSQL {associative array}.select("xxx** where...") + -- double * indicates desire to return full sub-arrays, with keys + -- "all keys starting with "xxx"; + -- uses LIKE + -- can be at beginning or end or both: xxx**, **xxx, **xxx** + -- WHERE clause is optional + -- similar to [array].select("** where + +JmolVersion="14.3.16_2015.09.14" + +bug fix: load data [2D mol structure...] filter "2D" not working +bug fix: Crystallographic Open Database CIF files have unusual atom_site_label ("MgT") + and no atom_site_type_symbol, leading to missing element assignments + +JmolVersion="14.3.16_2015.09.09" + +#ignore: +#new feature: SMILES/SMARTS atom designations [C(xxxx)] +# -- allows pointing to the same atom without connection numbers +# -- (xxxx) may be anything, including just () +# -- definition may be anywhere in bracketed atom specification +# -- any additional primitives in referring expression will be ignored +# -- involves only a very simple addition to parser code +# -- Jmol is not currently creating these strings, just interpreting them +# -- rationale: +# +# One basic aspect of SMILES is that it efficiently uses numbers to +# indicate connectivity using a process of "opening" bonds and "closing" them. +# Along with radical (.) notation, this is totally sufficient for describing +# any connected network of atoms, including situations where the ordering +# of connections is critical (e.g., in describing stereochemistry). Basically, +# one can simply list all the atoms in an arbitrary order as single-atom +# components (separated by "."), then assign bonds as desired, in whatever +# order is desired. +# +# The problem comes when attempting to indicate stereochemistry for +# centers with more than six substituents or with geometries that are +# outside the standard set of AL, TH, TP, SP, and OH. In such cases, +# there may arise situations where the ordering of unbonded substituents +# will be critical. An example is crystal structures of metals and metal +# alloys. In this situation there are no covalent bonds. The need is to +# be able to compare two such crystal structures. +# +# The solution is to create SMARTS and SMILES strings for complex +# "atomic environments" consisting of a central atom and any number of +# nearby atoms, using a cutoff radius rather than a bonding pattern. +# One possibility is to create a "pseudobond" that connects the central +# atom to all of its connected atoms, but this is not really necessary and +# slows processing significantly. Instead, the [@PHn] syntax proposed here +# allows the polyhedral environment to be specified only for the polyhedron +# itself, exclusive of the central atom. +# +# By providing a means of referring to a specific previously defined atom in a +# SMILES or SMARTS string, we can allow an atom in such an arrangement +# to be part of two different polyhedra. +# +# Thus, although isolated polySMARTS can be implemented without atom referents, +# extending that to more complex multi-atom polySMARTS searches requires them. +# +# -- example, simple branched organic +# +# $ load $t-butylmethylether +# $ select on search("[O][C(a)H0].[C(a)]C") +# +# 5 atoms selected +# +# same as +# +# $ select on search("[O][CH0](C)") +# +# -- note that [C(2)] and [O(2)] are not sensible and may be disallowed. +# + +code: javajs.util reconciled with swingjs project + +bug fix: polyhedra.stereoSmiles --> polyhedra.polySmiles + +new feature: polyhedron.polySmiles adds central atom + + -- example: + + load SF6.smol -1 + polyhedra + calculate symmetry polyhedra + x = {polyhedra}.polyhedra.polySmiles + print x + + //* S1 #1 *// [S@PH6]. + //* F6 #7 *// [F]1234. + //* F2 #3 *// [F]5672. + //* F3 #4 *// [F]849%10. + //* F4 #5 *// [F]%11%10%126. + //* F1 #2 *// [F]937%12. + //* F5 #6 *// [F]8%1151 + + print polyhedron(x).atomname + + S1 + +JmolVersion="14.3.16_2015.09.08" + +code: Efficient JSON parser javajs.util.JSONParser + -- requires object being parsed to be an object (bounded by "{" and "}") + +JmolVersion="14.3.16_2015.09.06" + +new feature: 3DNA DSSR JSON mode + -- http://x3dna.bio.columbia.edu/dssr/report.php?id=1ehz&opts=--more%20--json=ebi-no-str-id + -- uses unit ids + -- preliminary version is /dssr1 but will replace /dssr + + load =1ehz/dssr1 + cartoons only; + color @{within(dssr,"junctions")} blue + color @{within(dssr,"hairpins")} white + +new feature: JSON dssr loading and interpretation + load =1ehz + dssr = eval(load("1ehz.dssr.json")); + y = within(dssr.junctions) + color @y blue + +bug fix: dssr = "testing" works, but then print dssr just prints "DSSR" + -- was true for all within() function keywords, such as substructure, search, sequence, etc. + +new feature: select within("1ehz|1|A|G|45||||") +new feature: print within("1ehz|1|A|G|45||||") + -- unit IDs + -- see http://rna.bgsu.edu/main/rna-3d-hub-help/unit-ids + -- used for annotations, validations, dssr, and rna-3d processing + -- pdbid|model|chain|RESNAME|resno|ATOMNAME|altcode|inscode|symmetry + -- can truncate trailing (but not leading) pipe symbols + 1ehz|1|A|G|15, |1|A|G|15|C2 + -- requires at minimum a model number, chain, and residue number + |1|A||15 + -- ATOMNAME blank indicates full residue, with altcode indicating "this alt_id or no alt_id" (a configuration) + -- ATOMNAME nonblank indicates one atom, with altcode indicating "exactly this alt_id" (a location) + -- can be multiple, white space, comma, "]", "[", and double quote ignored + 1ehz|1|A|G|15||||,1ehz|1|A|U|59||||,1ehz|1|A|C|60||| + + // Unit Identifier Specification + // + // We describe the type and case sensitivity of each field in the list below. In addition, we list which item in the mmCIF the data for each field comes from. We also show several examples of the IDs and their interpretation at the end. + // + // Unit ids can also be used to identify atoms. When identifying entire residues, the atom field is left blank. + // + // PDB ID Code + // From PDBx/mmCIF item: _entry.id + // 4 characters, case-insensitive + // Model Number + // From PDBx/mmCIF item: _atom_site.pdbx_PDB_model_num + // integer, range 1-99 + // Chain ID + // From PDBx/mmCIF item: _atom_site.auth_asym_id + // <= 4 character, case-sensitive + // Residue/Nucleotide/Component Identifier + // From PDBx/mmCIF item: _atom_site.label_comp_id + // 1-3 characters, case-insensitive + // Residue/Nucleotide/Component Number + // From PDBx/mmCIF item: _atom_site.auth_seq_id + // integer, range: -999..9999 (there are negative residue numbers) + // Atom Name (Optional, default: blank) + // From PDBx/mmCIF item: _atom_site.label_atom_id + // 0-4 characters, case-insensitive + // blank means all atoms + // Alternate ID (Optional, default: blank) + // From PDBx/mmCIF item: _atom_site.label_alt_id + // Default value: blank + // One of ['A', 'B', '0'], case-insensitive + // Insertion Code (Optional, default: blank) + // From PDBx/mmCIF item: _atom_site.pdbx_PDB_ins_code + // 1 character, case-insensitive + // Symmetry Operation (Optional, default: 1_555) + // As defined in PDBx/mmCIF item: _pdbx_struct_oper_list.name + // 5-6 characters, case-insensitive + // For viral icosahedral structures, use \u201CP_\u201D + model number instead of symmetry operators. For example, 1A34|1|A|VAL|88|||P_1 + // + // Examples + // + // Chain A in 1ABC = \u201C1ABC|1|A\u201D + // Nucleotide U(10) chain B of 1ABC = \u201C1ABC|1|B|U|10\u201D + // Nucleotide U(15A) chain B, default symmetry operator = \u201C1ABC|1|B|U|15|||A\u201D + // Nucleotide C(25) chain D subject to symmetry operation 2_655 = \u201C1ABC|1|D|C|25||||2_655\u201D + // + // Unit ids for entire residues can contain 4, 7, or 8 string separators (|). + +bug fix: after atom deletion, atom iterator still finds atoms. + -- was not reinitializing the binary search after atom deletion + -- affects polyhedra, within() + $ load $caffeine + $ delete _N + 4 atoms deleted + $ print {*}.count + 20 + $ print within(14.0, {c6}).count + 24 + +JmolVersion="14.3.16_2015.09.05" + +new feature: POLYHEDRA + -- same as POLYHEDRA BONDS {selected} +new feature: POLYHEDRA 4 + -- same as POLYHEDRA 4 BONDS {selected} +new feature: POLYHEDRA OFFSET 1.4 + -- same as POLYHEDRA COLLAPSED faceCenterOffset 1.4 +new feature: POLYHEDRA COLLAPSED 1.4 + -- same as POLYHEDRA COLLAPSED faceCenterOffset 1.4 + +code: Polyhedra work, including more efficient algorithms for completing set of faces + +bug fix: tracking down thread-safe issue in application console +bug fix: in Java, mouse should not lose control if moved out of application + +JmolVersion="14.3.16_2015.09.04" + +bug fix: Mac OS does not add modifiers (left, right, ctrl, etc.) to drag operations + + +JmolVersion="14.3.16_2015.08.31" + +bug fix: MOVE command with 0 time does not work + +JmolVersion="14.3.16_2015.08.31" + +bug fix: plot property with nothing more throws Exception +bug fix: Gaussian Dialog does not add final line ending when saving + +new feature: Jmol SMILES/SMARTS generic polySMILES polyhedron option @PHn(....) + -- totally generic; will work with any number of connected atoms + -- suitable replacement for all TP, OH, etc. + -- standard equivalence to [C@] is [C@PH4(234)] + -- standard equivalence to [C@@] is [C@PH4(432)] + -- "reverse" option via "!": [C@PH4(!234)] + -- designation around any or all of the attached atoms is possible. For tetrahedra, this is + redundant, but for higher number of vertices, it may not be. This designation is + done using "." to separate atoms. + -- so [C@] is [C@PH4(234)] or [C@PH4(!432)] or [C@PH4(.134)] + -- implied H as in [CH@] will be atom 1 if this is the first atom; 2 if not -- Br[CH@].... + (same as in standard tetrahedral) + + -- not implemented yet for SMARTS searching of SMILES strings + + $ load $2-bromobutane + $ show smiles + Br[C@@H](C)CC + $ print {*}.find("Br[C@](C)(H)CC") + ({0:5}) + $ print {*}.find("Br[C@PH4(234)](C)(H)CC") + ({0:5}) + $ print {*}.find("Br[C@PH4(234)](H)(C)CC") + ({}) + $ print {*}.find("Br[C@PH4(432)](H)(C)CC") + ({0:5}) + $ print {*}.find("Br[CH@@](C)CC") + ({0:4}) + $ print {*}.find("Br[CH@PH4(.134)](C)CC") + ({0:4}) + $ print {*}.find("Br[CH@PH4(!.134)](C)CC") + ({}) + + -- :) + + +JmolVersion="14.3.16_2015.08.30" + +code: refactoring of smiles package + +new feature: preliminary no-limit SMILES polyhedron stereochemistry @PHn + -- very preliminary + -- the format relies on specifying the order of bonds, so it + creates a new component for each atom in the polyhedron, and it + then arranges all bonds listed in @/CCW or @@/CW rotation as projected + into the plane perpendicular to the line connecting the given (polygon vertex) + atom and the (central) reference atom. + -- example: + + $ load $methane + $ polyhedra 4 + $ calculate symmetry polyhedra + C1 #1 Td + + $ print @1.polyhedra.polySmiles + //* C1 #1 *// [C@PH4]. + //* H5 #5 *// [H]123. + //* H2 #2 *// [H]245. + //* H3 #3 *// [H]356. + //* H4 #4 *// [H]641 + + -- thus, stereochemistry is set based on the winding of the atom environment. + -- the reference atom is listed first, but it need not be connected to the other + atoms, and in fact for polyhedra we leave it out (note that it is not connected) + -- there is no limit to the number of connections any particular connecting atom + can have. So this covers all general SMILES stereochemistry. + -- a match is when the proper winding is found for all vertices. + + load $C(Br)(Cl)F + color chlorine blue + polyhedra 4 bonds distancefactor 3.0 + calculate symmetry polyhedra + print @1.polyhedra.polySmiles + + C1 #1 C1 + + //* C1 #1 *// [C@PH4]. + //* H5 #5 *// [H]123. + //* Br2 #2 *// [Br]245. + //* Cl3 #3 *// [Cl]356. + //* F4 #4 *// [F]641 + $ invertselected + $ polyhedra 4 bonds distancefactor 3.0 + calculate symmetry polyhedra + print @1.polyhedra.polySmiles + + C1 #1 C1 + + //* C1 #1 *// [C@PH4]. + //* H5 #5 *// [H]123. + //* Br2 #2 *// [Br]245. + //* Cl3 #3 *// [Cl]641. + //* F4 #4 *// [F]356 + + +new feature: Jmol SMILES and SMARTS accepts look-back bond targeting using (n) + where n is the sequential atom in the pattern. + -- for example: + + $load cyclopentane + print {*}.find("CCCCC(1)") # cyclopentane ring + + -- will be very important in building around [@PHn] stereochemistry, because these + components need to have no other connections, at least at the point of description. + Then if we need to attach to these, we can do so by connecting using this look-back + technique. + +bug fix: Jmol bioSMARTS string-based search not implemented correctly + -- for example, "~p~AC:A".find("SMARTS","~p~A:C", true) should give [[2,1]] + +new feature: Jmol SMILES trigonal pyramidal stereochemistry + -- same as tetrahedral, put without the fourth group. + +new feature: {*}.find("SEQ") +new feature: {*}.find("SEQ", true) +new feature: {*}.find("SEQ", "H") + -- no-comment Jmol bioSMILES: + + $ load =3ll2 + $ print {carbohydrate}.find("seq") + ~c~[MAN][MAN][MAN].~c~[MAN][MAN].~c~[MAN][MAN][MAN] + $ print {carbohydrate}.find("seq", true) + + + +code: much more efficient selection for groups, types of monomers, polymers, etc. + +bug fix: {*}.find("SMILES",true) should default to covalent crosslinks +bug fix: {*}.find("SEQUENCE",true) should not include hydrogen bonded crosslinks + +undocumented feature: Jmol bioSMILES includes ~c~ for carbohydrate + -- for example: + + $ load =3LL2 + SUGAR BINDING PROTEIN 28-JAN-10 3LL2 + MONOMERIC GRIFFITHSIN IN COMPLEX WITH A HIGH-MANNOSE BRANCHED + CARBOHYDRATE + found biomolecule 1: A + + $ select carbohydrate + 168 atoms selected + $ show smiles true + //* Jmol bioSMILES 14.3.16_2015.08.29 2015-08-29 12:03 1 *// + //* chain A CARBOHYDRATE 122 *// ~c~[MAN]:1[MAN]:2[MAN] //* 124 *//. + //* chain A CARBOHYDRATE 125 *// ~c~[MAN]:2[MAN] //* 126 *//. + //* chain A CARBOHYDRATE 127 *// ~c~[MAN]:1[MAN][MAN] //* 129 *// + + +new feature: show SMILES TRUE + -- shows bioSMILES +new feature: {*}.find("SEQUENCE","H") adds hydrogen-bonded crosslinks + +bug fix: select within(polymer, water) should select nothing +bug fix: select !within(polymer, *) should not select nothing + +bug fix: SMILES/SMARTS not accepting two separate processing directives such as /noaromatic/ /nostereo/ +new feature: GaussianReader reads high precision vibrational mode data + -- Gaussian input options must include Freq=(HPModes) +new feature: GaussianRedaer filter "NOHP" flag ignores high precision vibrational mode log info +new feature: Gaussian FCHK file reader reads vibrational modes + -- Gaussian input options must include Freq=(SaveNormalModes) + +JmolVersion="14.3.16_2015.08.26" + +new feature: SMARTS conformational search no longer limited to one range. + -- example: + + select on search("{[CH3]}(.t:50,70,-70,-50)CC{[CH3]}") + + +JmolVersion="14.3.16_2015.08.25b" + +bug fix: {3/, 2/, 1/} notation broken + +JmolVersion="14.3.16_2015.08.25" + + +bug fix: JmolThread should use setTimeout in resumeEval + +new feature: JmolSMILES $(.x:1,2,3,4,5,6,7,8) + -- x is oen of d,a,t + -- up to four ranges per measurement +new feature: print {2.1}.find("SMILES",{1.1}) + +bug fix: compare() function returning matrix with translation about center, not origin +bug fix: print compare({1.1},{2.1}, "SMILES", "stddev") broken +bug fix: select search("[$(select atomno < 5)]") broken +bug fix: select search("[$(select atomno < 5) or @5]") broken + +new feature: _hoverLabel + -- reports general hover label set by hover command + +new feature: _hoverEnabled + -- reports if hover is enabled or not + +bug fix: calculate partialCharge does not store result if all values are 0 (Otis Rothenberger) +bug fix: still problems with aTest = "testing"; x = [aTest:aTest] or a = [property_MYINFO:aTest] (Rolf Huehne) +bug fix: cross(a,b) broken +bug fix: write PDB broken; works without "PDB" keyword broken in 14.3.15_2015.06.18 + + +new feature: /invertStereo/ flag for SMARTS search + -- allows quick check for enantiomers + -- example: select search("/invertStereo/C[C@H](Br)CC") will match (R)-2-bromobutane + even though it is for (S)-2-bromobutane + +FEATURE CHANGE: Definitions of dna, rna, purine, and pyrimidine were ambiguous and + not particularly viable for group fragments. This is much clearer + now: Fragments and P-only and N-only monomers are identified by + name only: + + // These masks are only used for P-only and N-only polymers + // or cases where there are so few atoms that a monomer's type + // cannot be determined by checking actual atoms and connections. + // They are used for NucleicMonomer or AminoMonomer classes only as + // a last resort. + // + // I A G + // purine: 100101 = 0x25 + + // UT C + // pyrimidine: 011010 = 0x1A + // + // +IUTACGDIUTACG IUTACG + // rna: 110000 000000 110111 = 0x30037 + + // +IUTACGDIUTACG IUTACG + // dna: 001111 111111 001000 = 0x0FFC8 + + +bug fix: SMILES recognizes atom name [*.CA] but not residue name [ALA.*] +bug fix: Jmol BioSMILES broken + +bug fix: set cartoonLadders with phosphorus-only polymers crashes Jmol + +bug fix: protein and nucleic are not set properly for non-monomer groups (Eric Martz) + -- broken in Jmol 14.3.11 (12/13/2014) + -- general definition of protein is from having CA, C, and N. But there + are situations where we know it is protein from its group name (ALA,LEU..) + despite the fact that it is just one atom. Same for nucleic. + -- note that non-canonical (HETERO) amino acids or nucleic bases that do not have + the requisite atoms to identify them as such will still not test positive for + "protein" or "nucleic". + +JmolVersion="14.3.16_2015.08.21" + +bug fix: Tools...Spectra...JSpecView broken + +JmolVersion="14.3.16_2015.08.21" + +new feature: load var x + -- same as load "@x" + -- similar in syntax to write var x t.png + -- example: + + var x = load("quartz.cif") + load var x {1 1 1} + +bug fix: creating and running and saving binary hash from PNGJ fails + -- allows creating an associative binary array from a PNGJ file + then modifying it and loading that variable + then saving it as a new PNGJ file + -- initial PNGJ file is not necessary if binary array x is created by some other means + -- example: + + var x = load("test.png",true) + load "@x" + write test2.png as PNGJ + +bug fix: hover callback is not supposed to be stopped with HOVER OFF +bug fix: atom.sx and atom.sy and atom.sz report incorrectly when antialiasing is on +bug fix: write VAR x "test.png" creates a ZIP file instead of a PNGJ file when x is from load("test.png",true) +bug fix: write test.png as PNGJ (without initial quotes) fails + +JmolVersion="14.3.16_2015.08.19" + +bug fix: PyMOL reader does not load surface from PNGJ file +bug fix: PDB reader can skip assignments of secondary structure after first structure loaded during session + +JmolVersion="14.3.16_2015.08.18" + +bug fix: PyMOL reader not reading "H69" as "helix" (RGS-Ga_8pdb_structures_aligned_S90_20.5.15.pse) +bug fix: PyMOL labels offset in Y direction (down.pse) see http://noys3.weizmann.ac.il/a2jb/browse +bug fix: PyMOL session with isosurface cannot be read from state +known bug: RGS-Ga_8pdb_structures_aligned_S90_20.5.15.pse has two frames; showing frame 2 with no displayed atoms + +JmolVersion="14.3.16_2015.08.17" + +bug fix: select %? not working +bug fix: select ^? not working + + +JmolVersion="14.3.16_2015.08.17" +released + +bug fix: PDB reader cuts off long titles. +bug fix: slab setting by wheel can be unintentional +bug fix: wheeling slab could run range unintentionally way too high or low + +new feature: slab/depth setting. + + -- these enable wheel actions + + bindAction(SINGLE|CTRL|WHEEL, ActionManager.ACTION_wheelZoom); + bindAction(SINGLE|SHIFT|WHEEL, ActionManager.ACTION_wheelZoom); + bindAction(SINGLE|CTRL|SHIFT|WHEEL, ActionManager.ACTION_wheelZoom); + + -- these enable slab-wheel actions + + bindAction(SINGLE|CTRL|WHEEL, ActionManager.ACTION_slab); + bindAction(SINGLE|SHIFT|WHEEL, ActionManager.ACTION_depth); + bindAction(SINGLE|CTRL|SHIFT|WHEEL, ActionManager.ACTION_slabAndDepth); + + +JmolVersion="14.3.16_2015.08.16" + +run up to full documentation + +JmolVersion="14.3.16_2015.08.15" + +new feature: xxx.array + -- forces xxx if xxx is already an array, otherwise returns an array created from xxx. + -- matrix3f and matrix4f are converted to standard 3x3 or 4x4 arrays; others are returned as [ xxx ]. + -- can be used to force an array where a string or other single value will be returned. + -- particularly useful to force an array from a bitset operation that is evaluated for one atom. + -- example: + + print {altloc=='A'}.sort # causes an error if {altloc="A"} is one atom + print {altloc=='A'}.array.sort # forces an array [ "A" ] + +bug fix: x.array.pivot returns "NaN" for empty array -- should return an empty associative array + +JmolVersion="14.3.16_2015.08.14" + +bug fix: label "3%" reads "3null" +bug fix: {*}.label = ... resets offsets, fonts, and alignment +bug fix: label "3%%" is saved in the state as "3%" + +JmolVersion="14.3.16_2015.08.13" + +released + +JmolVersion="14.3.16_2015.08.12" + +released - but a bad build + +bug fix: set labeloffset 4 4 (specifically) just centers label +bug fix: var b = a..B fails (found by Rolf Huehne) + -- non-lower-case associative array name same as user variable name + turned into lower case and then looked up as a["b"] instead of a["B"], so not found + +bug fix: show xxx (variable) broken in 4.3.15_2015.06.13 + +JmolVersion="14.3.16_2015.08.11" + +released + +bug fix: a = {*}.label("%[xxx]") does not work. +bug fix: "".format([a,b]) crashes Jmol + +new feature: load filter "addBonds" + -- processes _struct_conn records + -- inter-group connections only + -- includes _struct_conn bond types: + covale covalent bond + covale_base covalent modification of a nucleotide base + covale_phosphate covalent modification of a nucleotide phosphate + covale_sugar covalent modification of a nucleotide sugar + disulf disulfide bridge + metalc metal coordination + -- ignores _struct_conn bond types: + hydrog hydrogen bond + mismat mismatched base pairs + modres covalent residue modification + saltbr ionic interaction + +new feature: load *1crn* + -- loads PDBe "updated" CIF files to allow CONECT-like bond creation + -- for example, http://www.ebi.ac.uk/pdbe/static/entry/1h68_updated.cif + -- suitable replacement for PDB CONECT + -- processes _chem_comp_bond and _struct_conn categories + -- presence of _chem_comp_bond will process _struct_conn as well, regardless of filter "addbonds" + (because _chem_comp bonds are only intra-group, and for full CONECT-like behavior, we need all bonds) + +JmolVersion="14.3.15_2015.08.09" + +bug fix: CML reader can fail (e.g. nsc244a.cml) + +code: refactoring of JmolDataManager + +JmolVersion="14.3.15_2015.08.08" + +new feature: atom property "monomer" same as %g +new feature: atom property "seqcode" same as %r +new feature: load "test.pdb" from write property atomno temperature now restores values for atomno and temperature for points on plot + +bug fix: label %g does not indicate group index in chain +bug fix: JSmol does not recognize label %W %g %r %O etc. with single digits where there is no %[xxx] equivalent + +bug fix: "print stateVersion" not reporting as documented. +bug fix: write property atomno temperature "test.pdb" does not preserve long residue names from CIF files or long atom names from other file types + +JmolVersion="14.3.15_2015.08.06" + +bug fix: stereo setting should not be saved in state. + -- though saved, it was not by default set to normal, + -- thus influencing later loads. + +bug fix: STEREO not implemented in JavaScript + +new feature: STEREO DTI + -- left/right dual panel, as just STEREO + -- compresses width by 50% for DTI mode (Dimension Technologies, Inc.) + +bug fix: calculate STRUTS broken for 3dfr, with peptide ligand MTX + +JmolVersion="14.3.15_2015.08.01" + +bug fix: SMARTS matching broken for [r5] ring designation + +bug fix: reference to functions as commands requires lower case: + -- for example: + function F(a){ print a } + F("test") // OK + f("test") // OK + f "test" // OK + F "test" // fails + + +JmolVersion="14.3.15_2015.07.30b" + +bug fix: JavaScript deletion of array elements fails for int[] arrays. + +JmolVersion="14.3.15_2015.07.30" + +new feature: set multipleBondBananas TRUE + -- displays multiple bonds as banana bonds + -- does not carry over after model loading + +new feature: set multipleBondSpacing 0.15; set multipleBondRadiusFactor -1.0 + -- positive number for spacing but negative for radiusFactor rotates fixed multiple bonds 90 degrees. + +bug fix: magnetic spin vectors do not render properly (broken in 14.3.13_2015.05.12) + +JmolVersion="14.3.15_2015.07.29" + +new feature: [Font] button added to ScriptEditor + +bug fix: config 2 and select config=2 may not work properly (still) +bug fix: minimization of PCl4 (==PC4) does not auto-switch to UFF from MMFF94 (bond key not set) + +FEATURE CHANGE: org.jmol.awtjs.swing.Dimension dependency removed from JmolViewer and JmolStatusListener interfaces + -- changed to int[] + +JmolVersion="14.3.15_2015.07.22" + +bug fix: config 1 does not work; listing is not complete. + +JmolVersion="14.3.15_2015.07.11" + +bug fix: format("%5.-5i") broken -- only shows right four digits if # digits is 5. +bug fix: write PDB broken for some systems (14.3.12) + +JmolVersion="14.3.15_2015.07.09" + +released as 14.2.15_2015.07.09 + + +bug fix: load "xxx" 1 {10 10 10} does not recognize lattice information when model number is given (broken in 07.07) + +JmolVersion="14.3.15_2015.07.08c" + +bug fix: load files "xxx.png|xxxx" "xxx.png|zzzz" not read from state properly +bug fix: polyhedra not saved in state property +bug fix: moving atoms with 4x4 matrix not saved in state +bug fix: moving of an atom having a polyhedron fails to move the polyhedron as well + + +new feature: smiles2.find("SMILES",smiles1, asMap, allMappings) + -- asMap = TRUE (default false) indicates you want an atom + correlation map indicating positions in smiles2 corresponding to smiles1 + -- allMappings = TRUE (default false) indicates you want + all mappings, not just the first found + -- returns a number, -1, 0, n>0 when asMap is false (allMappings ignored) + -- returns int[] when allMappings is false + -- returns int[][] when allMappings is true + -- example: + var s1 = atom1.polyhedron.getProperty("SMILES") + var coords = atom2.polyhedron.getProperty("vertices") + var s2 = atom2.polyhedron.getProperty("SMILES") + var coords2 = atom2.polyhedron.getProperty("vertices") + var map12 = s2.find("SMILES", s1, true, false) + var coords2Mapped = [] + for (var i in map12) coords2Mapped.push(coords2[i + 1]) + coords2 = coords2Mapped + var mat = compare(coords1, coords2) + select {1.1} + rotateselected @mat + +JmolVersion="14.3.15_2015.07.07c" + +bug fix: x.getProperty("[select name where composition[1] == 0.5]") + -- the [ there is tripping us up. True, ..1 could be used instead as well. + +JmolVersion="14.3.15_2015.07.07b" + +bug fix: 2015.07.06 breaks text writing in JSmol +bug fix: Crystal reader cannot handle TOTAL ENERGY CORRECTED... line + +new feature: JSmol Jmol._persistentMenu = true + -- allows menu to persist and not be removed + +new feature: JSmol
sets a place on the page for the JSmol console. + +new feature: load xxx filter "latticeScaling=1.2" + -- scales model based on a crystal lattice + -- allows volume matching for crystal comparison + +bug fix: SMARTS processing with "." may not find substructure + +JmolVersion="14.3.15_2015.07.03" + +bug fix: mmCIF reader does not recognize load MODEL ... +bug fix: PDB reader should be reading load "" [1 3 4] as MODEL record numbers, not sequential numbers +bug fix: load MODELS "" [1 3 4] does not work (although load "" [1 3 4], without with MODELS keyword, works) + +clarification: + + load "" 1 # loads the first model in a file when not PDB or mmCIF. + load "" 1 # loads the model with MODEL 1 record for a PDB file. + load "" 1 # loads the model with _atom_site.pdbx_PDB_model_num = 1 for an mmCIF file + load "" [1] # same as load "" 1; brackets allow for more than one model, for instance [1 3 5] + load MODELS ({1}) "" # always loads the SECOND model in a file + + + +JmolVersion="14.3.15_2015.06.30" + +bug fix: POVRay and VRML exporters mishandle label backgrounds +bug fix: exports not handling rockets correctly + +JmolVersion="14.3.15_2015.06.19c" + +bug fix: 1/{a b c} gives 0, not 1/length({a b c}) + +JmolVersion="14.3.15_2015.06.19b" + +new feature: MACRO command + -- runs predefined script, generally defining new functions of general use + -- contributions welcome! + -- will be expanded + + $ macro aflow + running http://aflowlib.mems.duke.edu/users/jmolers/jmol/spt/AFLOW.spt + aflowLoad(binaryAlloy) loaded + aflowBinaries loaded + aflowDualArray(binaryAlloy, a, b) loaded + aflowDualWrite loaded + aflowConvexHull(binaryAlloy) loaded + aflowCheckBinary(binaryAlloy) loaded + aflowGetPG(binaryAlloy, a, range1, range2,radius) loaded + $ aflowLoad("AgAu") + 294 models + + $ print aflowConvexHull + { + "Cb" : 0.0 + "Hf_eV_VASP" : 0.0 + "modelNumber" : 2 + } + { + "Cb" : 0.25 + "Hf_eV_VASP" : -0.0472733 + "modelNumber" : 26 + } + { + "Cb" : 0.5 + "Hf_eV_VASP" : -0.085589 + "modelNumber" : 180 + } + { + "Cb" : 0.75 + "Hf_eV_VASP" : -0.0463823 + "modelNumber" : 25 + } + { + "Cb" : 1.0 + "Hf_eV_VASP" : 0.0 + "modelNumber" : 260 + } + +bug fix: AFLOW binary file reader can fail with certain VASP formats containing + both in-line atom labels and atom elements prior to #elements line. (AlPd#5, for example) + +JmolVersion="14.3.15_2015.06.19" + +new feature: pt.distance(plane,ptRef) + -- returns a negative distance if pt and ptRef are on different sides of the plane + -- useful for constructing 3D convex hulls and polyhedra, where all points + must be on the same side of all planes + +new feature: removing empty array values using array.find() and opposite using array.find("") + -- "empty" means an entry that is "", [], or {} + -- for example: + + print [0 3 4 "" 5 {} [] 6].find() + + [0 3 4 5 6] + + print [0 3 4 "" 5 {} [] 6].find("") + [ "" {} [] ] + +bug fix: msCIF reader can hang if occupancy is not fractional +bug fix: JSmol applet not returning full set of parameters in animFrameCallback +bug fix: load FILL command can fail if base unit cell is not part of the needed set for the specified volume + +JmolVersion="14.3.15_2015.06.18" + +new feature: polyhedra ONLY + +new feature: calculate symmetry POLYHEDRA + -- sets values for ShapeInfo.Polyhedra.smiles, .smarts, and .pointGroup + +bug fix: wireframe ONLY (RESTRICT) executes polyhedral DELETE instead of OFF +bug fix: Polygons not indicating visibility when they are the only thing visible. +bug fix: x[++y] did not increment y. x[y++] and other contexts were fine + +JmolVersion="14.3.15_2015.06.17" + +new feature: extracting array of sequential arrays from array of associative arrays + -- pull out just the values desired into a sequential array + -- example, where b is an array of associative arrays [....., energy:..., pointGroup....] + + print b.format(["energy", "pointGroup"]) + +new feature: array of sequential arrays formatting using array.format("format") + -- example + + energy_pg = b.format(["energy", "pointGroup"]) + print energy_pg.format("%5.3f\t%5s") + +new feature: associative array binning: + -- creates a pivot table of the bins + -- adds keys "_bin", "_binMin", and "_binMax" to the initial array + -- example: + + + load "AgAu.aflow_binary" + polyhedra 4-24 3.65 unitcell translucent 0.2 + m = _("aflowInfo[Select modelNumber where Cb=0.5]") + b = {@1 and model=m}.polyhedra.all.getProperty("[select energy,pointGroup,modelNumber"); + c = b.bin(-0.1,0.1,0.02,"energy") + print b.format(["energy", "pointGroup"]).sort(1).reverse.format("%5.3f %5s") + + + +new feature: polyhedra highlight with select ON or set selectionHalos ON + +new feature: getProperty("ShapeInfo.polyhedra") includes keys + atomIndex + atomNumber + center + energy // from model auxiliaryInfo _m.Energy, if available + faceCount + faces + modelIndex + modelNumber + smarts + smiles + vertexCount + vertices + +new feature: polyhedra properties "smiles" and "smarts" + -- uses JmolSMILES, extending SMILES for periodic structures + -- smiles is a SMILES string for the polyhedron, not including its center atom. + -- smarts is smiles but replacing atom descriptors with * + -- can be searched for using x = polyhedron(s) where s is SMILES or SMARTS + + + +new feature: polyhedron(smiles) +new feature: polyhedron(smarts) + -- searches for a polyhedron (which must be already present) matching the given SMILES + -- for example: + + // load a set of binary alloy structures + load "AgAu.aflow_binary" + // generate all polyhedra on the first atom of each model + select @1 + polyhedra 4-24 3.65 unitcell translucent 0.2 + // find all SMARTS codes for 12-vertex polyhedra; taking the first + x= polyhedra(12).polyhedra.all.getProperty("smarts")[1] + // find central atoms for all similar polyhedra + y= polyhedra(x) + // get their model numbers + print y.model.all + z= y.model.all + // make the current frame set just those models + frame @z + + -- not fully worked out + +new feature: array.getProperty("xxxx") + -- same as getproperty(array, "xxxx") + -- drills down into an array of associative arrays to get sublist + -- can be used with [SELECT ... WHERE] + + +bug fix: ++x and x++ do not increment properly when in expressions + // no problem here because it is compiled as "x = x + 1" + x = 0 + x++ + print "x should be 1 " + x + + // x does not increment, but the test passes + x = 0 + if (++x) { + print "good" + } + print "x should be 1 " + x + + // x does not increment, but the test passes ("bad" is not printed) + x = 0 + if (x++) { + print "bad" + } + print "x should be 1 " + x + x = 0 + // works + x++ + // y is OK, but x does not increment + y = x++ + print "x should be 2 " + x + x = 0 + // z is OK, but x does not increment + z = ++x + print "x should be 1 " + x + + // result: + + x should be 1 1 + good + x should be 1 0 + x should be 1 0 + x should be 2 1 + x should be 1 0 + +JmolVersion="14.3.15_2015.06.16" +bug fix: msCIF reader failing for Legendre polynomials of order greater than 4 + -- JavaScript fix for new double[m + 1][] + -- must use AU.newDouble2(m + 1); + +JmolVersion="14.3.15_2015.06.14c" + +bug fix: var firstPARAM = "p1_b"; x = [FIRSTParam: "p1_a"]; results in lowering of case as [firstparam:....] +bug fix: set drawPicking draw;set drawpicking does not show handles +bug fix; point group not calculated when the selected atoms are a subset of a model +bug fix: x.find("SMILES") is incorrect for structures that have hypervalent atoms and branches such as inorganic nitrates +bug fix: msCIF reading with two models, and only one has displacement modulation causes "render error" crash +bug fix: msCIF reader failing for Legendre polynomials of order greater than 4 +bug fix: DRAW for quadrilateral broken when perspective depth is turned off. +bug fix: SET ECHO IMAGE broken in JavaScript version + + +new feature: POLYHEDRA 12 UNITCELL + -- creates a polyhedron (12-gon in this case) around each of the + currerntly selected atoms that has that bonding environment + -- DOES NOT require atoms at these positions - can simply use the + unit cell and periodicity to find the relevant atom positions. + -- will check bonding as necessary using autobonding parameters + -- accepts all standard polyhedra options. For example: + + polyhedra 12,16 3.5 UNITCELL + +new feature: POLYHEDRA 4-16 + -- allows a range of unit cell bonding patterns. + -- in this case, same as 4,5,6,7,8,9,10,11,12,13,14,15,16 + + polyhedra 4-16 3.5 UNITCELL + +new feature: getProperty shapeInfo.polyhedra + + print getProperty("shapeInfo.polyhedra[1]").keys + + _ipt + center + modelIndex + planeCount + polygons + vertexCount + vertices + +new feature: draw POINTS [ array of points ] + + draw diameter 0.2 points @{getProperty("shapeInfo.polyhedra[1].vertices")} + +new feature: show pointgroup POLYHEDRON + -- uses points from the polyhedron of the first selected atom + -- recommended to use specific atom reference in POLYHEDRA command: + + select @21 + polyhedron 3.5 UNITCELL + show pointgroup polyhedron + + +$ show pointgroup polyhedron +# 13 atoms + + +Oh Ci {2.1020985 -4.3122215 2.1430104} + +Oh nC4 3 2 +Oh C4_1 {0.99993926, -0.007795072, 0.0077921236} +Oh C4_2 {7.8514034E-7, -0.9997856, -0.020707628} +Oh C4_3 {7.619045E-7, 0.009661385, -0.9999533} + +Oh nC3 4 2 +Oh C3_1 {-0.58944535, 0.5712053, 0.57120806} +Oh C3_2 {-0.58944565, -0.5712049, -0.57120824} +Oh C3_3 {-0.5824926, -0.58349025, 0.5658989} +Oh C3_4 {0.5764604, -0.5864354, 0.5690228} + +Oh nC2 9 1 +Oh C2_1 {0.7004682, -0.71362424, -0.0092081865} +Oh C2_2 {0.7004673, 0.009209763, 0.7136251} +Oh C2_3 {0.99993926, -0.007795072, 0.0077921236} +Oh C2_4 {-0.70046806, -0.71362436, -0.009208187} +Oh C2_5 {-8.22445E-7, 0.7071046, -0.707109} +Oh C2_6 {7.8514034E-7, -0.9997856, -0.020707628} +Oh C2_7 {0.7056006, -0.019795598, -0.70833325} +Oh C2_8 {7.619045E-7, 0.009661385, -0.9999533} +Oh C2_9 {5.440252E-7, 0.70734024, 0.7068733} + +Oh nS6 4 2 +Oh S6_1 {-0.58944535, 0.5712053, 0.57120806} +Oh S6_2 {-0.58944565, -0.5712049, -0.57120824} +Oh S6_3 {-0.5824926, -0.58349025, 0.5658989} +Oh S6_4 {0.5764604, -0.5864354, 0.5690228} + +Oh nS4 2 2 +Oh S4_1 {0.99993926, -0.007795072, 0.0077921236} +Oh S4_2 {7.619045E-7, 0.009661385, -0.9999533} + +Oh nCs 9 1 +Oh Cs_1 {0.0, 0.7071068, -0.7071067} +Oh Cs_2 {0.0, -0.7071068, -0.7071068} +Oh Cs_3 {0.007949507, 0.020366998, -0.999761} +Oh Cs_4 {0.007952394, 0.999761, -0.020367} +Oh Cs_5 {1.0, 0.0, 0.0} +Oh Cs_6 {0.7030396, 0.014484465, 0.71100324} +Oh Cs_7 {0.7030395, 0.71100324, 0.014484464} +Oh Cs_8 {0.70023495, -0.008727634, -0.7138592} +Oh Cs_9 {0.7030395, -0.71100324, -0.014484464} + +Oh type nType nUnique +Oh E 1 1 +Oh Ci 1 1 +Oh Cs 9 9 +Oh Cn 16 23 +Oh Sn 6 12 +Oh TOTAL 46 + + + -- displays a table showing point group information. + -- notice that not all the operators may be found because of settings of + set pointGroupDistanceFactor 0.2 being too tight a restriction. + +new feature: draw POINTS +new feature: draw POLYGON -1 + -- these two are identical; POINTS is a bit nicer. + +load "=aflow/AgAu" 20 + +select @1 & 1.1 +polyhedra 4-16 3.7 unitcell + +x = within(4, true, "unitcell", {selected}) +print x; + +draw width 0.2 points @{x["points"]} color red mesh nofill translucent + + +new feature: select POLYHEDRA + -- selects central atoms of any atoms having polyhedra. + +new feature: select polyhedra(4) + -- selects central atoms of any atoms having tetrahedral polyhedra. + +new feature: x.find("SMILES","*") + -- creates a topology SMILES, involving just * and connections + -- does not include stereochemistry + -- allows comparison of connection patterns without respect to any other consideration. + -- can be used to check equivalences in inorganic crystal structures. + + +code: SMILES code cleaned up. +code: most image loading is now asynchronous. (Not BMP, not from PNGJ files with "|" in filename) +code: introducing interfaces to allow less use of @j2sNative and more traceability of method calls in Eclipse + + + +bug fix: polyhedra broken for number of vertices > 6. + -- needed smaller default distanceFactor (set to 1.5; formerly 1.85) + -- this setting is for any + +code: to be released 6/11/15 + +JmolVersion="14.3.14_2015.06.10c" + +bug fix: "transparent" PNG images as echos in front still hide pixels + +code : PNG images with partial transparency are not supported. + They COULD be supported, but currently the rendering is + in the first pass, but it could be in a later pass. + +code: g3d.ImageRenderer removed; code moved to g3d + +bug fix: GaussianDialog fails to write element symbols +bug fix: animation buttons go to wrong first frame for FRAME [3 2 1] + +bug fix: JSmol set echo IMAGE not working properly (Frieda Reichsman) + +new feature: {atomset}.bondcount({atomset2}) + -- counts bonds to a specific set of atoms + -- result is an array + +new feature: [array].pivot + -- creates a pivot table using strings, integers, or floats + -- result is a hash for which the keys are + +$ print {*}.label("%a").pivot +{ + "Ag" : 1561 + "Cd" : 1360 + } + + +$ load $caffeine +$ print {_N}.bondCount({_C}) + 3 + 3 + 2 + 3 + +$ print {_N}.bondCount({_C}).pivot +{ + "2" : 1 + "3" : 3 + } +$ + + +JmolVersion="14.3.14_2015.06.08" + +new feature: [Font] button added to Console + + + _ by itself, not as a function, is shorthand for getProperty("auxiliaryInfo") + + $ print _.keys + + boundbox + group3Counts + group3Lists + modelLoadNote + models + properties + someModelsHaveFractionalCoordinates + someModelsHaveSymmetry + someModelsHaveUnitcells + symmetryRange + + + _m by itself, not as a function, is shorthand for getProperty("auxiliaryInfo.models")[_currentFrame] + + $ print format("json",_m.unitCellParams) + + [ 0.0,0.0,0.0,0.0,0.0,0.0,0.0,-2.1660376,-2.1660376,0.0,-2.1660376,2.1660376,-4.10273,0.0,0.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN ] + + + {atomset}._ by itself delivers a subset array of auxiliaryInfo.models for all models in {atomset} + + $ print {*}._..1..aflowInfo + + (first model's aflowInfo) + + + _(key) prepends "auxiliaryInfo.models", delivering a modelCount-length array of information + + $ print _("aflowInfo[SELECT auid WHERE H__eV___VASP_ < 0]") + + + {atomset}._(key) selects for model Auxiliary info related to models of the specified atoms + + {atomset}.getProperty(key) defaults to atomInfo, but also allows key to start with "bondInfo" + + Examples: + + print _("aflowInfo[select sg where volume_cell > 70]") + + print {model>10}._("aflowInfo[select sg where volume_cell > 70]") + + +bug fix: [array].find("xxx") should always return a sub-array; previously if there was only one hit, it returned that hit +bug fix: [array].find("xxx") should not return string equivalent even if it uses that in the find. + +JmolVersion="14.3.14_2015.06.07" + +new feature: _m.xxx _m shortcut for @{getProperty("auxiliaryInfo.models[]")} + -- much easier syntax for getting auxiliary information + -- was not available, so this was not easily determined + -- for example - a dynamic echo with model-specific info that changes when the frame is changed + set echo top center + echo "@{_m.modelNumber} + +new feature: _.currentModelIndex _ shortcut for @{getProperty("auxiliaryInfo", "")} + -- much easier syntax for getting auxiliary information +new feature: + +new feature: {*}.getProperty("atomInfo.xxx") alternative for getProperty("atominfo.xxx", {*}) +new feature: {*}.getProperty("xxx") same as {*}.getProperty("atomInfo.xxx") +new feature: {*}.getProperty("bondInfo.xxx") alternative for getProperty("bondinfo.xxx", {*}) +new feature: {*}._(...) same as {*}._getProperty(...) + -- note that {*}.getProperty was present but undocumented and not useful + +bug fix: Console should be checking scripts after space-bar is pressed. +bug fix: script checking should not trigger screen refresh + +code: refactoring of vi ewer.JC for label/echo business + +new feature: set labeloffset range expanded to [-500,500] + +new feature: set labelOffsetAbsolute x y + -- was undocumented as "set labelOffsetExact" but used in state (still available) + -- sets label to specific value; same as set labelOffset, but allows 0 in x or y + -- range [-500,500] + +bug fix: dragging labels not working properly +bug fix: axisAngle (javajs.util.A4) not resetting angle to 0 --> wrong default orientation saved to state immediately after RESET (broken in 14.1.6_dev_2014.01.16c) + +JmolVersion="14.3.14_2015.06.05" + +new feature: load "...." FILL BOUNDBOX +new feature: load "...." FILL UNITCELL +new feature: load "...." FILL [o va vb vc] +new feature: load "...." FILL [o vabc] +new feature: load "...." FILL + + -- loads a crystal structure such that a given volume is packed + -- volume can be the current boundbox or the current unitcell + -- can specify origin and a,b,c vectors or origin and diagonal vector + -- no parameters --> {0 0 0} {10 10 10} + -- when not a crystal, just loads this model with the specified boundbox + -- simplification of initial idea (6/4/2015) + +JmolVersion="14.3.14_2015.06.04" + +new feature: _argCount, _arguments for functions and scripts + +new feature: _caller for functions + -- a hashtable of local VARs defined in the calling function + -- note that _caller._caller is not valid. But you can define + + var caller = _caller + + and then that will be exposed to the next level of function calls. + Or you could use use it as a parameter: + + function xx() { + .... + yyy(_caller) + ... + +given t.spt: + +function showme(a,b,c) { + var x = "showme" + print "c._arguments =" + (c ? format("json",c._arguments) : "") + print "_argCount = " + _argCount + "\nx = " + x + print "_caller.x = " + _caller.x + print "_caller.caller.x = " + _caller.caller.x + print "_arguments = " + format("json", _arguments) + print " " +} + +var x = "scriptlevel" +var caller = {} +showme(1) + +function show2() { + var x = "show2" + var caller = _caller + showme(5,6,_caller,7,8,9) +} +show2(4) + + +$ t.spt("testing" ,"here") +c._arguments = +_argCount = 1 +x = showme +_caller.x = scriptlevel +_caller.caller.x = +_arguments = [ 1 ] + +c._arguments = [ "testing","here" ] +_argCount = 6 +x = showme +_caller.x = show2 +_caller.caller.x = scriptlevel +_arguments = [ 5,6,{ "x": "scriptlevel","caller": { },"_arguments": [ "testing","here" ] },7,8,9 ] + + +JmolVersion="14.3.14_2015.06.03" + +new feature: AFLOW binary alloy file reader centers unit cells in all frames at the same point + +new feature; AFLOW binary alloy file reader can filter "list=xx" to produce a list of values start with xx. + + load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed filter "list=Hf_a" + + +new feature: AFLOW binary alloy file reader selective for a given composition: + + load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed filter "Ca=0.5" + +new feature: AFLOW binary alloy file reader reading -- DATA -- block into associative arrays: + + load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed + print getProperty("auxiliaryInfo.models.aflowInfo['Hf_atom (VASP)']") + + +bug fix: [SELECT ... WHERE ...] can fail with spaces or [ ] in key names. For example: + + print getProperty("auxiliaryInfo.models.aflowInfo[SELECT Cb,\"Hf_atom [eV](VASP)\" WHERE Cb > 0.4 and Cb< 0.6]") + + +The call to the AFLOWLIB API to do this in Jmol involves forcing use of the POST method. The following link will work only in Jmol: + + http://aflowlib.mems.duke.edu/php/apool.php?POST?job=awrapper_apool&lattice=all&alloy=AgAu + +Notice that when Jmol reads these files, it automatically catalogs the models along the lines of composition, and it translates their unit cells to be on a common center from frame to frame. + +Using a local file, requesting a listing of Hf_atom: + + load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed filter "list=Hf_a" + +FileManager opening 1 file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary +The Resolver thinks AFLOW +filtering with ;LIST=HF_A; +[AgCd] REFERENCE: S. Curtarolo, W. Setyawan, S. Wang, J. Xue, K. Yang, R. H. Taylor, L. J. Nelson, G. L. W. Hart, S. Sanvito, M. Buongiorno Nardelli, N. Mingo, and O. Levy, AFLOWLIB.ORG: a distributed materials properties repository from high-throughput ab initio calculations, Comp. Mat. Sci. 58, 227-235 (2012). +[AgCd] REFERENCE: S. Curtarolo, W. Setyawan, G. L. W. Hart, M. Jahnatek, R. V. Chepulskii, R. H. Taylor, S. Wang, J. Xue, K. Yang, O. Levy, M. Mehl, H. T. Stokes, D. O. Demchenko, and D. Morgan, AFLOW: an automatic framework for high-throughput materials discovery, Comp. Mat. Sci. 58, 218-226 (2012). +[AgCd] REFERENCE: S. Curtarolo, D. Morgan, and G. Ceder, Accuracy of ab-initio methods in predicting the crystal structures of metals: review of 80 binary alloys, Calphad 29, 163-211 (2005). +AgCd 0.00000000000000 11 Hf_atom [eV] (VASP) 0.0 +AgCd 0.04347826086957 1 Hf_atom [eV] (VASP) 0.0870304 +AgCd 0.07142857142857 1 Hf_atom [eV] (VASP) 0.15737298 +AgCd 0.11111111111111 1 Hf_atom [eV] (VASP) -0.011088 +AgCd 0.12500000000000 1 Hf_atom [eV] (VASP) -0.027350498 +AgCd 0.16666666666667 7 Hf_atom [eV] (VASP) -0.037070002 +AgCd 0.17241379310345 1 Hf_atom [eV] (VASP) 0.020694898 +AgCd 0.20000000000000 9 Hf_atom [eV] (VASP) -0.0460172 +AgCd 0.25000000000000 30 Hf_atom [eV] (VASP) -0.056237496 +AgCd 0.33333333333333 42 Hf_atom [eV] (VASP) -0.0609502 +AgCd 0.37500000000000 3 Hf_atom [eV] (VASP) -0.0589556 +AgCd 0.40000000000000 12 Hf_atom [eV] (VASP) -0.0618938 +AgCd 0.41379310344828 1 Hf_atom [eV] (VASP) 0.00122355 +AgCd 0.42857142857143 2 Hf_atom [eV] (VASP) -0.037301403 +AgCd 0.44444444444444 2 Hf_atom [eV] (VASP) -0.0335542 +AgCd 0.46153846153846 1 Hf_atom [eV] (VASP) -0.0150388 +AgCd 0.50000000000000 46 Hf_atom [eV] (VASP) -0.068898305 +AgCd 0.53846153846154 1 Hf_atom [eV] (VASP) 0.0721082 +AgCd 0.55555555555556 2 Hf_atom [eV] (VASP) -0.033519298 +AgCd 0.57142857142857 2 Hf_atom [eV] (VASP) -0.0333517 +AgCd 0.58620689655172 1 Hf_atom [eV] (VASP) -0.0124974 +AgCd 0.60000000000000 12 Hf_atom [eV] (VASP) -0.047418 +AgCd 0.61538461538462 1 Hf_atom [eV] (VASP) -0.06818979 +AgCd 0.62500000000000 3 Hf_atom [eV] (VASP) -0.040674802 +AgCd 0.66666666666667 42 Hf_atom [eV] (VASP) -0.0603182 +AgCd 0.75000000000000 29 Hf_atom [eV] (VASP) -0.0485616 +AgCd 0.80000000000000 9 Hf_atom [eV] (VASP) -0.0095262 +AgCd 0.82758620689655 1 Hf_atom [eV] (VASP) 0.033198204 +AgCd 0.83333333333333 7 Hf_atom [eV] (VASP) -0.025705501 +AgCd 0.87500000000000 1 Hf_atom [eV] (VASP) 0.0031846298 +AgCd 0.88888888888889 1 Hf_atom [eV] (VASP) 0.0286024 +AgCd 0.92857142857143 1 Hf_atom [eV] (VASP) 0.114186 +AgCd 0.95652173913043 1 Hf_atom [eV] (VASP) 0.065135606 +AgCd 1.00000000000000 12 Hf_atom [eV] (VASP) 0.0 +Time for openFile(file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary): 288 ms +reading 24509 atoms +297 models + +Notice that I could have used a different listing key. + +You can load just a single composition by filtering with "Ca=x" + + load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed filter "ca=0.5" + +[AgCd] REFERENCE: S. Curtarolo, W. Setyawan, S. Wang, J. Xue, K. Yang, R. H. Taylor, +L. J. Nelson, G. L. W. Hart, S. Sanvito, M. Buongiorno Nardelli, N. Mingo, and O. Levy, AFLOWLIB.ORG: a distributed materials properties repository from high-throughput ab initio calculations, Comp. Mat. Sci. 58, 227-235 (2012). +[AgCd] REFERENCE: S. Curtarolo, W. Setyawan, G. L. W. Hart, M. Jahnatek, R. V. Chepulskii, R. H. Taylor, S. Wang, J. Xue, K. Yang, O. Levy, M. Mehl, H. T. Stokes, D. O. Demchenko, and D. Morgan, AFLOW: an automatic framework for high-throughput materials discovery, Comp. Mat. Sci. 58, 218-226 (2012). +[AgCd] REFERENCE: S. Curtarolo, D. Morgan, and G. Ceder, Accuracy of ab-initio methods in predicting the crystal structures of metals: review of 80 binary alloys, Calphad 29, 163-211 (2005). + +46 models + + +The file loader parses all the -- DATA -- information into arrays, so that can all be accessed using getProperty(). For example: + + print getProperty("auxiliaryInfo.models.aflowInfo['space group POST']") print getProperty("auxiliaryInfo.models.aflowInfo['Hf_atom [eV] (VASP)']") + +JmolSQL selectors can be used to select out specific records. + + print getProperty("auxiliaryInfo.models.aflowInfo[SELECT Cb,'Hf_atom [eV] (VASP)' WHERE Cb > 0.4 and Cb< 0.6]") + + +Jmol adds two additional fields, "fileModelNumber" and "modelNumber": + + print getProperty("auxiliaryInfo.models.aflowInfo[SELECT modelNumber,Ca,'Hf_atom [eV] (VASP)' WHERE Cb > 0.4 and Cb< 0.6]") + + +JmolVersion="14.3.14_2015.06.01b" + +bug fix: unncessary dialog with LOAD ? when using JSmol/HTML5 + +JmolVersion="14.3.14_2015.06.01" + +new feature: preliminary AFLOW AaBb binary file reader + - see http://www.aflowlib.org/binary_alloys.php + +new feature: NBO cfi file writer + - print data({*}, "cfi") + +bug fix: draw pointgroup also draw arrow broken +bug fix: write("pdb") not returning string data and instead creating file "pdb" +bug fix: VASP reader for in-line atom labels +bug fix: measure pending dashed line does not appear + +JmolVersion="14.3.14_2015.05.25" + +release; synchronized with 14.2.14 + +JmolVersion="14.3.13_2015.05.23" + +bug fix: select conformation=1 broken for non-bio CIF data + +JmolVersion="14.3.13_2015.05.19" + +bug fix: CML reader not recognizing "fragment/join/fragment" sequence + from http://www.xml-cml.org/schema/schema3/schema.xsd (Stuart Chalk) + +JmolVersion="14.3.13_2015.05.14" + +new feature: set contextDepthMax + -- sets the maximum depth of contexts, including {}, if{} for{} while{} function{} + as well as the SCRIPT command and a number of expression-related situations + -- default 100 + -- minimum 10 + +bug fix; 05.12 breaks Jmol.evaluate and Jmol.evaluateVar and print getProperty("variableInfo", exp) +bug fix: using historyLevel = ... or scriptlevelMax = ... doesn't really set these +bug fix: a number of settings have not been excluded from state scripts, which + only should save critical information for the state, not general processing + -- no longer saved in state + -- no longer read using "set xxxxx" when that is in a state script + -- includes: historylevel;imagestate;iskiosk;useminimizationthread; + -- includes: showkeystrokes;saveproteinstructurestate;testflag1;testflag2;testflag3;testflag4 + +JmolVersion="14.3.13_2015.05.12" + +bug fix: re-entering functions loses if/else state +bug fix: more issues with low-resolution linear-z index lines. + Need to compromise for isosurfaces and nucleic cartoons and bonds + -- which became very slow to render with precision Z placement. + +JmolVersion="14.3.13_2015.05.08" + +bug fix: BIND can cause fault +bug fix: write "?" can cause fault when [x] box is pushed on window +bug fix: set picking dragMolecule, set picking dragMinimizeMolecule, set picking dragLigand broken + +JmolVersion="14.3.13_2015.05.07" + +bug fix: x = plane(@1 @2 @3) fails + +bug fix: isolated bio groups such as AMP, which are not part of biopolymers, can result in crashes + when colored or queried about their parameters (Hiroufmi Suzuki) + +bug fix: new JmolSQL ** feature needed a tweak + +JmolVersion="14.3.13_2015.05.06" + +new feature: JmolSQL "drilling" in associative arrays for sub arrays with a given property (Rolf Huehne) + -- NOTE ADDED: replaced by WHEREIN in Jmol 14.3.16 + -- uses "**" as the SELECT option, sort of the way ** sometimes means "subdirectories of" + -- returns an associative array or "" if no match + -- example: + + x = [key_1:[type:"a"],key_2:[type:"b"],key_3:[type:"a"]] + z = getProperty(x, "[SELECT ** WHERE type='a']"); + show z; + + z = { "key_1":{ "type":"a" },"key_3":{ "type":"a" } } + +JmolVersion="14.3.13_2015.05.05" + +bug fix: set structureModifiedCallback does not work with "JmolScript:...." + +JmolVersion="14.3.13_2015.05.03" + +new feature: for msCIF (modulated structure files), setting modulation or using vibration ON + now also indicates occupancy changes +bug fix: sawtooth and Legendre displacement modulations should set occupancy to 0 outside of their range. + +JmolVersion="14.3.13_2015.05.02" + +bug fix: color atoms property vxyz crashes Jmol if no vibrations +bug fix: with msCIF, select subsystem=1 does not select anything +bug fix: vibrations in trajectories not animating (14.3.6_2014.08.14) + +JmolVersion="14.3.13_2015.04.30d" + +bug fix: reading Molden file with no MOs crashes Jmol + +JmolVersion="14.3.13_2015.04.30c" + +bug fix: color $id [30 40 50] translucent 0.8 fails +bug fix: Jmol.jar was requiring Java 1.7 +bug fix: POV-Ray fixed for perspective and orthographic cameras using new z-depth formula. +thanks: Many thanks to Laurent Proville for motivating me to look in this issue. + +JmolVersion="14.3.13_2015.04.29" + +bug fix: perspective renderer was using the wrong formula for calculating Z depth of pixels: + + * Note added 4/2015 BH: + * + * Well, it turns out that the calculation of the intermediate pixel z value + * in all methods involving rasterization of lines is incorrect and has been + * incorrect since Jmol's inception. I noticed long ago that large triangles such as + * produced in DRAW could incorrectly overlay/underlay other objects, but I could + * never determine why. It turns out that the assumption that z-value is linear + * across a line when perspectiveDepth is TRUE is simply incorrect. + * + * Basically, the function z(x) is non-linear. Treating it as simply a + * linear function results in oddities where lines and planes + * -- particularly created using DRAW and large distances -- appear + * to be where they are not. + * + * Through Jmol 13.3.13 we had the standard linear relationship: + * + * z = (x - xa) / (xb - xa) * (zb - za) + za + * + * I worked it out, and, amazingly, it should be + * + * z = (xb - xa) * za * zb / ((xb - x) * zb + (x - xa) * za) + * + * Note that it is still true that when x = xb, z = zb + * and when x = xa, z = za, as required. + * + * This equation can be rearranged to + * + * z = a / (b - x) + * + * where + * + * a = (xb - xa) * za * (zb / (zb - za)) + * + * and + * + * b = (xb * zb - xa * za) / (zb - za) + * + * These values must be floats, not integers, to work properly, because + * these are extrapolations from long distances in some cases. So there is + * considerable overhead there. It will take some experimentation to figure this + * out. + * + * The practical implications are for line, cylinder, and triangle drawing. + * First-pass corrections are for axes and DRAW objects. They tend to be the + * larger objects that result in the issue. + * + * Also affected is POV-Ray output, because right now POV-Ray is created using + * perspective on and plotted as though it were orthographic, but although that + * works in x and y, it does not work in z! + * + + +JmolVersion="14.3.13_2015.04.27" + +bug fix: with set dragSelected, highlight does not recognize whole molecule + +JmolVersion="14.3.13_2015.04.25" + +code: integration of changes made for SwingJS into JSmol code + + +JmolVersion="14.3.13_2015.04.22" + +bug fix: loading mmCIF data in-line loses multi-character chain IDs + +bug fix: with set picking dragSelected with allowMoveAtoms FALSE and allowRotateSelected TRUE + rotating the atoms with ALT-left ignores setting of allowMoveAtoms + + // see footnotes below for ^, #, *, and $ + // + // settings:^ set picking dragSelected set dragSelected + // + // move:# drag alt-shift-drag + // rotate:#* alt-drag alt-drag + // z-shift:# shift-drag (n/a) + // + // double-click:$ (starts measurement) (sets selected if set picking SELECT) + // + // ^ set picking dragSelected overrules set dragSelected + // # all actions involve whole molecules unless set allowMoveAtoms TRUE + // * rotate requires set allowRotateSelected TRUE + // $ set dragSelected allows setting of a new molecule with double-click when set picking SELECT + // $ set picking dragSelected allows measurements with double-click, as usual + + +code: introduce use of (int... ) syntax in ActionManager simplifies logic + +JmolVersion="14.3.13_2015.04.17" + +bug fix: for in/from broken in 14.3.13_2015.04.05 + -- entering a FOR loop with empty has pops {...} context one level too far, exiting functions + +JmolVersion="14.3.13_2015.04.12" + +code: refactoring PT.isAxxx to AU.isAxxx (array type testing) + +JmolVersion="14.3.13_2015.04.09b" + +feature update: EBI validation site updated from wwwdev.ebi to www.ebi + -- for example, LOAD *1crn/val + +JmolVersion="14.3.13_2015.04.09" + +bug fix: MO calculation hanging when G orbitals are present + +JmolVersion="14.3.13_2015.04.08" + +bug fix: echo id myecho "testing" reports "myecho" instead of "testing" + +JmolVersion="14.3.13_2015.04.07" + +bug fix: Molden reader broken for Dalton2015 version + +JmolVersion="14.3.13_2015.04.05b" + +bug fix: language switching not working from popup menu; +bug fix: language bundles not processed in the correct order for variants + +JmolVersion="14.3.13_2015.04.05" + +code: rewriting FOR loop code to enhance performance + +new feature: set showScript -1 + -- turns off history (on when commands come from the keyboard) + -- stops every-second JavaScript interruptions -- Caution! + +new feature: for (var i FROM [a, b]) {...} + -- same as for (var i = a; i <= b; i++) when a < b + -- same as for (var i = a; i >= b; i--) when a > b + -- much more efficient + +bug fix: for (var i in hashArray) {....} broken (also in 14.2; not fixed there) + +JmolVersion="14.3.13_2015.04.02" + +bug fix: [3 4 5].min should give integer 3, not decimal 3.0 (same with .max) + +JmolVersion="14.3.13_2015.04.01b" + +bug fix: hash values created from named int variables do not clone properly +bug fix: hash[key1]..key2.push() does not work properly +bug fix: show hash where one of the elements is an empty hash ignores that key +bug fix: local var xxx with same name of ..xxx forces lower case xxx + +JmolVersion="14.3.13_2015.04.01" + +bug fix: local var xxx with same name of foo..xxx forces lower case xxx + +new feature: draw polygon [@1 @2 @3...] + -- fills polygon with triangles + -- order is important -- must be cw or ccw + -- does not have to be convex + -- indeterminate result if atoms are not coplanar + -- example: + + load $caffeine + draw polygon [@5 @7 @12 @13 @1 @3] + +new feature: ".[a]" notation extended to x.. and allows mixing with .a. + function a(){return 1} + x = [A:[1,2,3], a:[4,5,6]] + $ print x.a.[a()] + 4 + $ print x..a..[a()] + 4 + $ print x.a..[a()] + 4 + $ print x..a..[a()] + 4 + $ print x..a.[a()] + 4 + $ y = x.a[1][2]; show y + y = [ 4,5 ] + +JmolVersion="14.3.13_2015.03.30" + +bug fix: {hash}.Key = value will be stored as "key" rather than "Key" if "key" is also a user-defined function. +bug fix: {hash}.key will fail if "key" is also a user-defined function. +bug fix: print a where a is an associative arrays fails in JavaScript (since jmol-14.3.7_2014.08.25) + +JmolVersion="14.3.13_2015.03.27" + +new feature: "." notation extended to x.[a] + disambiguifies x[a][b][c]... + allows for variables and expressions in "." notation + i = 2 + x = [1,[2 3 4 [5 6 7]],3] + show x[2].[4].[i] + ==> "6" + x = [ 1,[ 2,3,4,[ 5,6,7 ],{ "testing":"now" } ],3 ] + x[i + 1].[5].["testing"] = "again" + show x + ==> x = [ 1,[ 2,3,4,[ 5,6,7 ],{ "testing":"again" } ],3 ] + + +JmolVersion="14.3.13_2015.03.25" + +bug fix: translate SELECTED {1 1 1} @1 not working (works fine without the SELECTED keyword) + +JmolVersion="14.3.13_2015.03.23" + +bug fix: isosurface solvent will fail if max volume is smaller than cavity max even though not cavity + +JmolVersion="14.3.13_2015.03.21" + +bug fix: JmolVersion="14.3.13_2015.03.20b" broke JSmol due to error in coding URL.js + +JmolVersion="14.3.13_2015.03.20b" + +bug fix: popup menu Symmetry broken +bug fix: PDB reader does not save unit cell on simple load + +JmolVersion="14.3.13_2015.03.20" + +bug fix: use of {*}.xxxx = for(i;{*};....) fails + +JmolVersion="14.3.13_2015.03.19" + +bug fix: VASP chgcar surface reader fails to recognize 10-per-line file format + +JmolVersion="14.3.13_2015.03.16" + +bug fix: label xxxx does not calculate stringwidth properly; set labeloffset 0 incorrect + +JmolVersion="14.3.13_2015.03.13" +released + +bug fix: fonts too small with antialiasDisplay (14.2.12) +bug fix: PNG generation uses iTXt instead of tEXt; problems with diacritical marks (German translation of "March" month in creation time) + +JmolVersion="14.3.13_2015.03.11" + +bug fix; pdb and mmcif readers not doing biomolecule 2 properly +bug fix: load filter "bychain" broken +bug fix: x.a.push(6) does not work +bug fix: (x.a).push(3) does not work +bug fix: (x.a)[3] = 5 does not work + +JmolVersion="14.3.13_2015.03.10" + +new feature: print command by itself clears JavaScript and Jmol consoles + +new feature: color polyhedra red blue (edge color blue) + +bug fix: show state/xxxx does not work + +JmolVersion="14.3.13_2015.03.07" +synchronized with 14.2.12_2015.03.07 + +bug fix: x[2] = y[2] fails + +new feature: NBO command with no arguments starts NBO panel (Java application only) + +JmolVersion="14.3.12_2015.03.05b" +synchronized with 14.2.13_2015.03.05 + +bug fix: reading legacy mapped plane (2ptn-molecular_slice1.jvxl.txt) crashes Jmol + +JmolVersion="14.3.12_2015.03.05" +synchronized with 14.2.13_2015.03.05 +released + +bug fix: (14.3 only) write VRML|MAYA|OBJ|POVRAY broken + +JmolVersion="14.3.12_2015.03.01" + +bug fix: late discovery of mmCIF format does not load secondary structure +bug fix: reading PNGJ file saved after load with /dssr or /rna3d annotations ignores annotations +bug fix: {*}.find("~d~G:C") broken (find with bioSMARTS) + +new feature: image # the current view as an image +new feature: image 300 400 # adjustable size +new feature: image "c:/temp/t.bmp" # image from a file + +new feature: image "" close # close the current view image +new feature: image "c:/temp/t.bmp" close # close image from a file +new feature: image CLOSE # close all + +new feature: image ID ... + -- id for IMAGE CLOSE; + -- displayed in title of frame + -- examples: + + image ID "test" + image ID "test" 400 500 + image ID "test" "bob.png" + image ID "test" close + +new feature: write IMAGE + -- same as IMAGE + +new feature: write IMAGE 500 500 + -- same as IMAGE 500 500 + +new feature: (JavaScript/HTML5; see JSmol_Console.java) + // page designer may indicate one of three divs for images on the page: + // _Image_app_holder for IMAGE command by itself (current app image) + // _Image__holder for IMAGE ID "xxx" ... or IMAGE "xxx" + // where cleaning is with .replace(/\W/g,"_") + // _Image_holder for all images not identified as above + // if a page div is not identified, then the image will be placed in a new floating div + + +note: experimental SHOW IMAGE now replaced by new command IMAGE + +JmolVersion="14.3.12_2015.02.26" + +bug fix: imageFontScaling integer instead of float; does not scale appropriately on resize +bug fix: writing image of MO fails to write info (Jmol 12 or before) + +JmolVersion="14.3.12_2015.02.25c" +bug fix: legacy non-XML JVXL files with color mapping should default to RGB color scheme +bug fix: Jmol 14.1.2_2013.12.13 disabled some mmCIF file reading for non-wwPDB mmCIF files + + +JmolVersion="14.3.12_2015.02.25b" + +new feature: random(low,high,seed) + -- provides a new seed for the random() function + -- seed may be any 48-bit integer. + -- x = random(0.0,1.0,121231223) + -- low and high are simply placeholders + -- does return the first number from this seed + -- note that Java and JavaScript will have DIFFERENT seedings + -- utilizes https://github.com/davidbau/seedrandom/blob/released/seedrandom.js + (appended to java.util.Random.js) + +JmolVersion="14.3.12_2015.02.25" + +new feature: show chemical drawing +new feature: show drawing + -- pops up window with drawing of model + -- service is from NCI + -- uses SMILES if structure was not loaded using $... (NCI) or :... (PubChem) + +JmolVersion="14.3.12_2015.02.24" + +// 02.28 removes "show " from these + +new feature: show IMAGE + -- pops up a frame with the current image + -- allows "Save As..." + +new feature: show IMAGE "filename" + -- pops up a frame with the image loaded from a file + -- allows "Save As..." + +new feature: show image 300 400 # adjustable size +new feature: show image none # closes all image panels +new feature: show image CLOSE # "all" presumed +new feature: show image CLOSE "" # the model image +new feature: show image CLOSE "c:/temp/t.bmp" # the image for this file + +new feature: write IMAGE + -- same as SHOW IMAGE + +new feature: write IMAGE 500 500 + -- same as SHOW IMAGE 500 500; allows customization of width and height + +new feature: Windows BMP image reading + -- reads 24-bit (full color) as well as 16-, 8-, 4-, 2-, and 1-bit color palette modes + -- 14-byte and 40-byte headers only + -- does not read compressed modes + +bug fix: restriction against getting SMILES string for biomolecule lifted +bug fix: end-on bonds may appear to disappear +bug fix: JavaScript -2.format("%8.3") gives 2.000 not -2.000 + +bug fix: minimizer treats hydrogen bonds as covalent single bonds + +code: javajs.img.BMPDecoder +code: org.openscience.jmol.app.jmolpanel.ImageDialog + +JmolVersion="14.3.12_2015.02.19" + +bug fix: CML reader does not show proper atom names for crystal structures +bug fix: POV-Ray renderer does not show proper backbone width (since forever) +bug fix: POV-Ray renderer with a translucent surface shows bonds that should be hidden (since 13.1) +bug fix: unitcell info for PDB file biomolecule does not show "biomolecule 1" + +JmolVersion="14.3.12_2015.02.18" + +bug fix: load filter "biomolecule 1" broken in 14.3.12_2015.02.14 + +JmolVersion="14.3.12_2015.02.17b" + +bug fix: writing to PNGJ data to .ZIP file should create a standard ZIP file. + -- especially useful now that some zip readers will not open PNGJ files as zip files + (with newer 7zip you can right-click file, then select 7zip...open archive...zip) + + var x = load("t.png", true) + write var x "t.zip" + + +bug fix: VASP POSCAR fix for atom symbols in header line + +JmolVersion="14.3.12_2015.02.17" + +new feature: set zshadePower 0 + -- allows examination of depth buffer and writing to image for external processing + + set zShadePower 0 + set zSlab 100 + set zDepth 0 + set zShade true + write z.jpg + set zShade false + write rgb.jpg + +JmolVersion="14.3.12_2015.02.16" + +new feature: x.dot(y) for planes and points -- was present but undocumented and not working correctly +new feature: (undocumented) x.distance.all(y) + +new feature: load MUTATE "==LYS" + -- loads using set appendNew false + -- bypasses regeneration of secondary structure + -- not to be documented + -- issued by MUTATE command only + +bug fix: write isosurface "./xxx.jvxl" broken -- concatenates "isosurface" with filename +bug fix: write ISOSURFACE by itself broken (similarly for write POINTGROUP and others) +bug fix: MUTATE command adjustments for saving state +bug fix: MUTATE command should not force recreation of shapes +bug fix: MUTATE command should not change backbone atoms +bug fix: x = measure(a,b) where b is {none} crashes Jmol +bug fix: compare({atomA},{atomsB}) should return standard 4x4 matrix, not one involving a rotation + about an atom center + -- (not adjusted when ROTATESELECTED was fixed in 14.3.11_2014.12.17; Angel Herraez) + +code: org.jmol.modelsetbio.BioExt + -- extracts struts, quaternion plots, polymerInfo, mutate into optional module + -- saves 15K in corebio.js + +JmolVersion="14.3.12_2015.02.11" + +bug fix: 14.3.12_2015.02.09 breaks MODEL "someTitle" syntax +bug fix: MUTATE not properly saved in state +bug fix: "USER MOD" not accepted at beginning of PDB file (MolProbity breaking PDB format here) +bug fix: 02.10 may break loading ligand files + +JmolVersion="14.3.12_2015.02.10" + +bug fix: color $contact1 "roygb" range -0.5 1.0; broken (in state after using CONTACT) +bug fix: mmCIF reader does not flag first model of a multimodel set as type PDB + + +JmolVersion="14.3.12_2015.02.09" + +new feature: frame align {atoms} FIXED + -- shifts atom positions in each frame to match first atom in {atoms} + -- unlike just frame align {atoms}, frame * will still show alignment + -- objects such as DRAW and ISOSURFACE will NOT be shifted + -- needs testing + +new feature: frame align [modelNo] [pt] + -- FIXED is assumed + -- used in state; shifts a model by a specific amount after removing any current frame alignment + +JmolVersion="14.3.12_2015.02.07" +released + +bug fix: set meshScale is not being applied to isosurface contours +bug fix: zoomTo{xxx} 0 does not center (broken in 13.1.16_dev_2013.05.23) +bug fix: appending a model to a model with data can fail +bug fix: 02.04 select conformation=1 broken +bug fix: 02.04 select within(chain,...) broken + +bug fix: hydrogen addition should not follow component file + ILE7 HG12 != ILE7 HG13 + ILE7 HG13 != ILE7 HG12 + + ARG10 HB2 != ARG10 HB3 + ARG10 HB3 != ARG10 HB2 + ARG10 HG2 != ARG10 HG3 + ARG10 HG3 != ARG10 HG2 + ARG10 HD2 != ARG10 HD3 + ARG10 HD3 != ARG10 HD2 + + LEU18 HB3 != LEU18 HB2 + LEU18 HB2 != LEU18 HB3 + + PRO19 HD2 != PRO19 HD3 + PRO19 HD3 != PRO19 HD2 + + ILE25 HG12 != ILE25 HG13 + ILE25 HG13 != ILE25 HG12 + + + +JmolVersion="14.3.12_2015.02.04" +released + +new feature: print data({*},"xyz") + -- (lower case) writes only atom data lines + +new feature: print data({*},"XYZ", true) + -- third parameter TRUE writes all trajectories + +bug fix: show mouse fails in JavaScript + -- we cannot test using AU.isAI() in org.jmol.viewer.binding.Binding + -- because of a Java2Script compiler creates standard array [...] + -- from new int[] {....} whereas it should create Clazz.newArray() and fill it +bug fix: writing of file formats was inconsistent between WRITE and data() (not fixed in 14.2) +bug fix: Jmol writing of PDB file data did not include TER records (not fixed in 14.2) +bug fix: label %r should print "1" for non-PDB file atoms +bug fix: 01.30 mutate {xxx} ~... skips first-listed replacement group identifier +bug fix: 01.29 breaks loading non-trajectory file after a trajectory is loaded + +JmolVersion="14.3.12_2015.01.30b" + +bug fix: select %w %x %y %z not implemented +bug fix; lcaoCartoon broken in 14.3.10_2014.11.27/14.2.12_2015.01.22 +bug fix: isosurface id surf1 solvent; select within(2.0, $surf1) broken + +JmolVersion="14.3.12_2015.01.30" + +new feature: MUTATE command + -- operates only on last model present if multiple models are loaded + -- replaces one or more amino acids group with others + -- can read from RCSB or from user-specified file + -- examples: + mutate 33 lys // replace resno=33 with lysine + mutate @3 arg // replaces group of atom 3 with arginine + mutate @r gly // replaces groups in variable r with glycine + mutate 22 "myfile.cif" // user-defined replacement + mutate {1-3} ala // replace first three residues with alanine + mutate {1-5} GLVAG // (sequence codes) replace residues 1-5 with gly-leu-val-ala-gly + mutate {1-3} ~LYS // (force 1-character sequence codes) replace 1-3 with leu-tyr-ser + mutate {1-3} A?L // replace 1 with ala, 3 with leu; skip 2 + mutate {within(sequence, "GAT")} GYT // replace locations of GAT with GYT (needs testing) + mutate 35 @fname // replaces resno=33 with file data (use "==ALA" or "~A" for RCSB) + mutate {r} his // same as above; r must be an atom selection + + +bug fix: code fixes relating to calculate structure in 01.29 + +JmolVersion="14.3.12_2015.01.29" + +bug fix: 01.28 version does not write correct PDB CONECT records +bug fix: 01.22 version may not correctly clear rasmol hydrogen bonds in trajectories +code: simplification of BioModel; extraction of legacy Chime messaging into ChimeMessenger class +code: extraction of org.jmol.modelset.Trajectory + +JmolVersion="14.3.12_2015.01.28" + +bug fix: write "t.pdb" now correctly sequences groups and atoms, even after mutation + +new feature: resno is user settable + +JmolVersion="14.3.12_2015.01.27" + +bug fix: select thisModel does not select all atoms in visible frame set + +new feature: @@3 for "atomno=3 and thisModel" + -- provides a function distinct from @3 when there are multiple models + -- includes all atoms in current frame set + -- example: + + load "cyclohexane_movie.xyz" + select @10 + 35 atoms selected + select @@10 + 1 atom selected + frame [1 2 4 6] + select @@10 + 4 atoms selected + @@10.label = "atom 10" + + +new feature: frame [1 3 5 6] + -- sets limited number of frames for animation and frame * + -- same as animation frame [1 3 5 6]; frame * + +new feature: CGO SCREEN option + -- CGO [SCREEN z ...] + -- reads CGO 2D VERTEX records as screen coordinates, installing them at a depth of z + - where z > 0 indicates a percent (0.01 far back; 100 front) + - z < 0 indicates an absolute screen z value as -z. + - uses 2D VERTEX and other CGO point elements, not 3D + -- example: a static border 20% from the back of the model + +cgo test2 [ SCREEN 20 + BEGIN LINE_LOOP + VERTEX 10 10 + VERTEX 90 10 + VERTEX 90 90 + VERTEX 10 90 + END +] + +new feature: CGO UVMAP option + -- CGO [UVMAP @origin @x @y x0 y0 x1 y1 scaleX scaleY ...] + -- 2D VERTEX records are scaled and mapped to a plane defined by @origin @x @y + -- example: a parallelogram based on atoms 1, 6, and 11 + +cgo test1a [ UVMAP @1 @6 @11 0 0 80 80 1 1 + BEGIN LINE_LOOP + VERTEX 0 0 + VERTEX 80 0 + VERTEX 80 80 + VERTEX 0 80 + END +] + +new feature: CGO PostScript option + -- CGO [ PS @origin @x @y ] data "PS" [primitive encapsulated postscript data] end "PS" + -- maps 2D EPS data onto a plane defined by an origin point, an x-axis point, and a y-axis point. + -- somewhat similar to UV mapping of textures in other programs + -- allows 2D data to be superimposed on a model. + -- a crude implementation still in development; doesn't properly implement stroke; + -- just for drawing lines; does not implement PS fill, gsave, grestore + -- just moveto, lineto, newpath, closepath, setlinewidth, scale + -- uses %%BoundingBox x0 y0 x1 y1 prolog record + to map [x0 y0] to @origin, [x1 0] to @x, and [0 y1] to @y + -- used for NBO contour mapping + +CGO[ PS @{point(-5,-5,0)} @{point(5,-5,0)} @{point(-5,5,0)] data "PS" +%!PS-Adobe-2.0 EPSF-1.2 +%%Creator: Bob Hanson (from NBO) +%%Title: nbo orbital slice +%%CreationDate: 1/26/2015 5:36 AM +%%DocumentFonts: Helvetica +%%BoundingBox: 211 300 428 518 +%% note: above numbers are from 0.24*881 0.24*1781 0.24*1256 0.24*2156 +%%EndComments +%%EndProlog + 0.2400 0.2400 scale + newpath + 3 setlinewidth + newpath + 881 1256 moveto + 1781 1256 lineto + 1781 2156 lineto + 881 2156 lineto + closepath + stroke + 1241 1717 moveto + 1250 1713 lineto +... + stroke +%%Trailer +showpage +end "PS" + +bug fix: CGO LINE_LOOP not closing +bug fix: configuration 1 broken +bug fix: display configuration=1 broken (in Jmol 12.0, 2011) + +JmolVersion="14.3.12_2015.01.25" + +bug fix: image echos broken + +JmolVersion="14.3.12_2015.01.24" + +new feature: load NBO CH3CH2CH3 + -- retrieves the stucture of propane (in this case) from a local NBO server. + -- including inorganics. For example: + + load nbo "Cr 3::acac" + load nbo "Cr 2:::Bz" + +code: new interface for "services" that can provide valuable information to Jmol + over ports or by running executable processes. + -- currently just NBO + + +bug fix: MOPAC reader loses two atoms in IRC calculation for MOPAC 2012 +bug fix: _slabPlane and _depthPlane not set immediately when slab and depth are set + +JmolVersion="14.3.12_2015.01.22" +released simultaneously with 14.2.12 + +bug fix: color rockets amino fails +bug fix: "color TRANSLUCENT -1" (screened translucency) restored; + -- had been removed in 14.3.12_2015.01.20 because broken in jmol-11.7.27_02-27-09 +bug fix: atom screened translucency not saved in state +bug fix: isosurfaces with screened translucency not restored from JVXL with that +bug fix: screened translucent bonds broken + +code: adding org.jmol.g3d.PixelatorScreened, PixelatorT + +JmolVersion="14.3.12_2015.01.21" + +new feature: load =cod/1000041 loads Crystallographic Open Database CIF files + +bug fix: load =xxx/..... (special database) fails +bug fix: (JavaScript) using "Helvetica Neue, Sans-serif" instead of just "Sans-serif" (org.jmol.awtjs2d.JSFont.java) + - gets around Safari bug in Safari v. 7 + + +JmolVersion="14.3.11_2015.01.20" +released simultaneously with 14.2.11 + +bug fix: Languages lost in Jmol Application + +new feature: select :"X" where quotes are used now forces case sensitivity + +bug fix: DIPOLE command broken in Jmol 14.3.10_2014.11.27 (OK in 14.2) + +bug fix: for old PDB files with no chain ID, "select :" fails + +JmolVersion="14.3.11_2015.01.18" + +new feature: Jmol Application Tools|NBO... (Experimental Only; requires NBOServer) + +bug fix: Typing select his and :A will set chain selection to be case sensitive due to a bug that + processes "his an" as "{his:}an". + + +JmolVersion="14.3.11_2015.01.15" + +bug fix: modulation x.x and modulation n not described correctly in documentation + +new feature: modulation T x.x +new feature: modulation Q n +new feature: modulation T {t1 t2 t3} +new feature: modulation Q {q1 q2 q3} + + +JmolVersion="14.3.11_2015.01.12" + +bug fix: color PMESH reader not working properly + +JmolVersion="14.3.11_2015.01.11" + +bug fix: JSpecView -- version/date not appearing in menu +bug fix: GIF images bleed into background. +bug fix: GIF writing of xxx.gif (three character name) broken. +bug fix: proper isosurface capping. Test code: + + function test(i) { + set echo top left + echo @i + isosurface slab none + isosurface cap plane {1 1 1 1} @i + refresh + } + + load 1crn.pdb + rotate y 60 + rotate y -120 + isosurface s1 vdw; + display none + center $s1 + for (var i = -2 ; i < 58; i++){test(i)} + + +JmolVersion="14.3.11_2014.12.21" + +code: major refactoring into BioModel of PDB-specific code in ModelSet + +new feature: CGO (undocumented command from Jmol 13.1.16; never tested) + +cgo test1a [ + BEGIN LINES + VERTEX 0 0 0 VERTEX 2 2 2 + VERTEX 2 2 2 VERTEX 3 2 0 + END +] + +cgo test1b [ + BEGIN LINE_LOOP + VERTEX 4 0 0 + VERTEX 6 2 2 + VERTEX 5 2 0 + END +] + +cgo test1c [ + BEGIN LINE_STRIP + VERTEX 4 0 0 + VERTEX 6 2 2 + VERTEX 5 2 0 + END +] + +cgo test2 [ + BEGIN POINTS + COLOR 255 0 0 + LINE 0 0 3 0 0 3 2 2 + COLOR 0 255 0 + LINE 0 0 3 2 2 4 2 0 + END +] + +cgo test2b [ + BEGIN LINE_LOOP + DIAMETER 0.3 + VERTEX 4 0 0 + VERTEX 6 2 2 + VERTEX 5 2 0 + END +] + + +new feature: NBO command + -- same as MO command, but allows TYPE keyword + -- to be developed with, perhaps, different defaults, 2D slices, etc. + +new feature: NBO TYPE + -- options AO, PNAO, NAO, PNHO, NHO, PNBO, NBO, PNLMO, NLMO, MO + -- results in immediate loading of .32-.41 file if present + -- generally after a .47 archive file has been loaded + +new feature: ... PLANE {pt1} {pt2} frac12 + -- wherever a PLANE parameter is required + -- perpendicular plane frac12 of the distance from pt1 to pt2 + +new feature: x = plane(pt1, pt2, frac12) + -- perpendicular plane frac12 of the distance from pt1 to pt2 + +JmolVersion="14.3.11_2014.12.19" + +bug fix: JavaScript connect broken + due to j2s failure to create bsAromatic when BondCollection created (14.3.7) + due to j2s bug in instantiating global definitions in super classes using Clazz_prepareFields + +bug fix: label, echo, and measurement text should not display when deeper + than zSlab with zShade is TRUE +bug fix: mmCIF reader load filter biomolecule 1 + broken for viruses with symmetry ranges listed as "1-60" with a hyphen +bug fix: mmCIF reader coarse-grain load filter bysymop broken +bug fix: mmCIF reader coarse-grain load filter bychain broken + +JmolVersion="14.3.11_2014.12.17" + +bug fix: rotate selected <4x4 matrix> should not rotate about center of atoms +bug fix: use of a subset command will change value of a variable bitset if "select x" is used + -- example: + x = {*} + subset {atomno < 10} + print x // just the first 9 + select x // just the first 9 + subset all + print x // but now x itself is truncated; this is not supposed to be the case + + +new feature: SYNC nnnn x + -- x is a math expression, possibly just a string, but also possibly an associative array. + +new feature: SYNC nnnn {type:"command", "command" : command, "var": vname, "data":vdata} + -- script command request, with optional definition of a Jmol user variable prior to execution) + -- for example: + x = {"type":"command","command":"background green; print y", "var": "y", "data":['an array',2]} + sync 3000 x + -- allows simple transfer of data via JSON strings between applications + + +JmolVersion="14.3.11_2014.12.15" + +FEATURE CHANGE: JmolViewer interface streamlined + -- many esoteric methods removed + -- can be reinstated upon request + -- many are available via public fields + -- for economy of performance and .js file size + +FEATURE CHANGE: "screened translucency TRANSLUCENT -1" removed (broken in jmol-11.7.27_02-27-09) + +bug fix: mol2 reader fails to read "THR1" as a PDB group + +bug fix: PyMOL reader should not reset user variables + +bug fix: show LIGHTING does not report a full list of settings + +new feature: reset LIGHTING + public void resetLighting() { + vwr.setIntProperty("ambientPercent", 45); + vwr.setIntProperty("celShadingPower", 10); + vwr.setIntProperty("diffusePercent", 84); + vwr.setIntProperty("phongExponent", 64); + vwr.setIntProperty("specularExponent", 6); // log2 of phongExponent + vwr.setIntProperty("specularPercent", 22); + vwr.setIntProperty("specularPower", 40); + vwr.setIntProperty("zDepth", 0); + vwr.setIntProperty("zShadePower", 3); + vwr.setIntProperty("zSlab", 50); + + vwr.setBooleanProperty("specular", true); + vwr.setBooleanProperty("celShading", false); + vwr.setBooleanProperty("zshade", false); + } + +code: moved PDB-related methods and constants in JC.java to org.jmol.modelsetbio.Resolver + -- allows 50K savings in core.z.js + +code: reduced method sets for Viewer, ModelSet, and several other classes + -- a bit contrary to standard practice, I know + -- direct access of class fields instead of using methods with just one or two references + -- direct access of class fields instead of using getXXX() and setXXX() + because these are NOT optimized in JavaScript. + +JmolVersion="14.3.11_2014.12.09" + +new feature: Castep reading of .ts files + +bug fix: array.add("\t",array) broken 2014.12.04 +bug fix: array.split("",true) doesn't handle CSV with new lines in quotes + +JmolVersion="14.3.11_2014.12.06" + +new feature: MODEL 1 PROPERTY "xxx" x + -- adds property to model's auxilliaryInfo + -- x may be any valid math expression, for example + model 1 property "test" {1.1}.temperature.mul(0.1) + -- if x is an array, then these become atom data accessible via %{...} + -- for example: + x = "1\n2\n3\n".lines + model 1 property "mydata" x + {model=1}.property_n = {*}.label("%{mydata}") // converts to numbers + + data "myd @x" // similar, but not model-based + label %{myd} + + +bug fix: format() function broken +bug fix: SHOW DATA should be cleared when a file is loaded + +JmolVersion="14.3.11_2014.12.04" + +new feature: "....".split("",true) // CSV split of string to array of arrays +new feature: [...].split("",true) // CSV split of array to array of arrays +new feature: "...".split("\t",true) // tab split of string to array of arrays +new feature: [...].split("\t",true) // tab split of array to array of arrays +new feature: [...][...].join("",true) // CSV join to array of lines +new feature: [...][...].join("\t",true) // tab join to array of lines + -- example: + x = load("test.csv").split("",true) //from CSV + print x.join("",true) // back to CSV + print x.join("\t",true) // to tab-separated +new feature: [...][...].col(n) + -- extracts nth column from an array of arrays + -- example: + x = load("test.csv").split("",true).col(3) //3rd column from CSV + + +JmolVersion="14.3.11_2014.12.02" + +bug fix: for (x in yUpperCase) fails +bug fix: draw SYMOP fails for incommensurate space groups +bug fix: incommensurate magnetic CIF reading does not apply magnetic spin operation to spin modulations +bug fix: CIF reader can cycle infinitely if loop_ keywords are not followed by any data + +new feature: Gaussian Input File creation defaults to "opt pop=full gfprint" to generate orbital information by default. +FEATURE CHANGE: Gaussian Input File creation moved to Tools menu rather than file...export + +JmolVersion="14.3.11_2014.11.28" + +new feature: readers for ESS input types: CFILE, VFILE, MOPAC, NWChem, Gaussian, GAMESS, Orca, PQS + -- CFILE and VFILE require CFI:: and VFI:: (or C:: and V::) + -- MOPAC requires MND:: + -- any of these could also use ZMATRIX:: or INPUT:: + + +bug fix: dynamicMeasurements deprecated in 14.1.1 but + not left in as a valid token to allow use + +JmolVersion="14.3.11_2014.11.27" + +new feature: GAMESS input reader +new feature: NBO .37 archive file coordinate reader (not MOs) +new feature: ZMatrixReader also serves as simple input file reader + for Q-Chem, Gaussian, Jaguar, MolPro, and ADF, as produced by NBO6Pro + + +JmolVersion="14.3.10_2014.11.27" + +released as 14.3.10 + +(note - these were not fixed in 14.2) + +bug fix: SPIN BRANCH {atomno=2} {atomno=1} does not work + +code: scriptExt.IsoExt splits CmdExt into two parts + -- (note this will require changes to build_03_tojs_stable) +code: simplification of SurfaceGenerator + +bug fix: JVXL files do not record selected contour +bug fix: isosurface CONTOUR -n broken (in Jmol 12) +bug fix: isosurface "t.jvxl" loading of contoured planes broken +bug fix: isosurface plane xy map property atomno broken every other time used + +new feature: isosurface contour 0 "t.jvxl" will override contour selected in JVXL file + +new feature: isosurface CONTOUR n i + -- n contours; i-th only + +FEATURE CHANGE: For the ISOSURFACE command, there is an undocumented + syntax that the CUTOFF keyword prior to a number is optional, + as in "ISOSURFACE 2.0". This was never documented and was never + shown in any examples. This change is to require the CUTOFF keyword + +new feature: isosurface LATTICE {i j k} FIXED + -- creates an isosurface from periodic volumetric data + with the specified number of unit cells + -- "fixed" in the sense that the operation is at load time + not at rendering, allowing slabbing and use of WITHIN + +new feature: isosurface UNITCELL x.x .... + -- for periodic lattices only + -- adjusts grid by x.x in fractional coordinates + -- caution is advised, as the grid is expanded in this process, + leading to more grid points and more memory required + -- negative x.x results in a selection of a subset of the data + centered on the center of the unit cell + +JmolVersion="14.3.10_2014.11.26" + +bug fix: hover OFF disables hover callback, but should not +bug fix: reading of JVXL file saved with noFill still does fill +bug fix: CASTEP DENSITY surface file reader does not do downsampling + +new feature: VASP CHGCAR default cutoff set to 0.5 +new feature: set edsUrlFormatDiff + -- specifies difference map location + +new feature: isosurface "==1blu" + -- difference map fo-fc + -- defaults to sigma=3 + -- automatically implements SIGN option + +new feature: isosurface RMSD (same as SIGMA) + +JmolVersion="14.3.9_2014.11.23" + +released as Jmol 14.3.9 and Jmol 14.2.9 + +bug fix: isosurface slab plane -xy not recognizing "-" +bug fix: PNGJ writing broken +bug fix: VASP CHGCAR reader not recognized for primitive cell +bug fix: Euler ZYZ and ZXZ for quaternion({0 0 1},theta) where theta < 0 in error + + +JmolVersion="14.3.9_2014.11.17" + +released as Jmol 14.3.9 and Jmol 14.2.9 + +new feature: VASP CHGCAR reader +new feature: VASP CHGCAR isosurface reader + +new feature: load HISTORY "saved.his" (Gabor Oszlanyi) + -- loads command history with script in saved.his + +new feature: CTRL-PAGE_UP CTRL-PAGE_DOWN in console (Gabor Oszlanyi) + -- searches for next instance of current start of command up or down command history + +new feature: capture END + -- closes capture without annoying popup message + -- also for capture CANCEL and just CAPTURE + +new feature: transparent GIF using WRITE GIFT "xxx.gif" +new feature: GIF images use dithering to approximate full palette. +new feature: CAPTURE "file.gif" 10 transparent + - or CAPTURE "file.gift" -- "gift" automatically changed to "gif" + +new feature: CAPTURE "filename0000.png" + -- captures set of PNG files + -- 0000 is not required + +new feature: CAPTURE "filename0000.gif" + -- captures set of GIF files + -- 0000 IS required in order to distinguish this from animated GIF + +bug fix: set labelOffset {1 2 3} or set labelOffset [1 2 3 4 5 6 7] + fails if selection does not contain a label at each selected atom + +bug fix: Molden reader fails to read orbitals if [GEOCONV] is present + +bug fix: JmolVersion 14.3.3_2014.07.27 broke ligand bond reading when fetching ligands. + -- mmCIF reader was not being selected by the Resolver + -- Requires an increment of version number to 14.3.9 + +bug fix: slightly better GIF processing + +bug fix: GIF writer not properly handling large numbers of colors + -- use of CIE L*a*b for color quantification + -- nearly identical to GIMP + -- uses MEAN_cut (not MEDIAN_cut) + -- uses Floyd-Steinberg dithering + -- will not discolor background (as GIMP will do) + +bug fix: GIF and PPM writing broken in JavaScript + -- initial putString improperly forces string buffer mode in OC (Output Channel) + +bug fix: WRITE command should remove "t" or "j" in WRITE xxx.PNGJ, WRITE xxx.PNGT, WRITE xxx.GIFT + -- specifically when no PNGJ, GIFT, or PNGT designation is made. + +bug fix: PDB reader limited to 20 connections per atom + +bug fix: up-arrow in console may not return command if contains unicode +bug fix: antialiasing can subtly change background color + +bug fix: working on GIF writer -- some success with 256 colors using median-cut with RGB + +bug fix: GIFT (transparent-background GIF) dithering transparent background + +bug fix: Legendre for U not implemented in msCIF reader - preliminary +bug fix: Legendre for D,U in Jana2006 reader not implemented - preliminary + +code: code clean-up in GData, Graphics3D, and Export3D +code: PDB reader CONECT efficiency + +released as Jmol 14.3.9 and Jmol 14.2.9 + +bug fix: set labelOffset {1 2 3} or set labelOffset [1 2 3 4 5 6 7] + fails if selection does not contain a label at each selected atom + + +JmolVersion="14.3.9_2014.11.15" + +new feature: VASP CHGCAR reader +new feature: VASP CHGCAR isosurface reader + +JmolVersion="14.3.9_2014.11.12" + +bug fix: Molden reader fails to read orbitals if [GEOCONV] is present + +JmolVersion="14.3.9_2014.11.11" + +bug fix: JmolVersion 14.3.3_2014.07.27 broke ligand bond reading when fetching ligands. + -- mmCIF reader was not being selected by the Resolver + -- Requires an increment of version number to 14.3.9 + +JmolVersion="14.3.8_2014.11.10" + +bug fix: slightly better GIF processing + +JmolVersion="14.3.8_2014.11.09" + +new feature: CAPTURE "filename0000.png" + -- captures set of PNG files + -- 0000 is not required + +new feature: CAPTURE "filename0000.gif" + -- captures set of GIF files + -- 0000 IS required in order to distinguish this from animated GIF + +bug fix: GIF writer not properly handling large numbers of colors + -- use of CIE L*a*b for color quantification + -- nearly identical to GIMP + -- uses MEAN_cut (not MEDIAN_cut) + -- uses Floyd-Steinberg dithering + -- will not discolor background (as GIMP will do) + +bug fix: GIF and PPM writing broken in JavaScript + -- initial putString improperly forces string buffer mode in OC (Output Channel) + +bug fix: WRITE command should remove "t" or "j" in WRITE xxx.PNGJ, WRITE xxx.PNGT, WRITE xxx.GIFT + -- specifically when no PNGJ, GIFT, or PNGT designation is made. + +bug fix: PDB reader limited to 20 connections per atom + +code: code clean-up in GData, Graphics3D, and Export3D +code: PDB reader CONECT efficiency + + +JmolVersion="14.3.8_2014.10.27" + +bug fix: up-arrow in console may not return command if contains unicode +bug fix: antialiasing can subtly change background color + +bug fix: working on GIF writer -- some success with 256 colors using median-cut with RGB + +new feature: load HISTORY "saved.his" (Gabor Oszlanyi) + -- loads command history with script in saved.his + +new feature: CTRL-PAGE_UP CTRL-PAGE_DOWN in console (Gabor Oszlanyi) + -- searches for next instance of current start of command up or down command history + +JmolVersion="14.3.8_2014.10.15b" + +bug fix: GIFT (transparent-background GIF) dithering transparent background + +JmolVersion="14.3.8_2014.10.15" + +new feature: capture END + -- closes capture without annoying popup message + -- also for capture CANCEL and just CAPTURE + +JmolVersion="14.3.8_2014.10.14" + +new feature: transparent GIF using WRITE GIFT "xxx.gif" +new feature: GIF images use dithering to approximate full palette. +new feature: CAPTURE "file.gif" 10 transparent + - or CAPTURE "file.gift" -- "gift" automatically changed to "gif" + +bug fix: Legendre for U not implemented in msCIF reader - preliminary +bug fix: Legendre for D,U in Jana2006 reader not implemented - preliminary + +JmolVersion="14.3.7_2014.10.13" + +new feature: modulation occupancy settable using {*}.occupancy = {*}.modulation('O',t) + -- for example: + + load "t3.cif" {20 1 1} packed 0.5 + connect {_Mn} {_Mn} delete + polyhedra bonds {_Mn} collapsed; + set echo top right; + capture "occ.gif" 120 + for (var i = 0; i <= 100; i++) { + var f = i/100. + modulation @f + {*}.occupancy = {*}.modulation("O",f); + display _Mn and occupancy > 0; + var t = "t=" + f + echo @t + refresh; + } + capture + +bug fix: msCIF reader superspace group operators with mixing of x1,x2,x3 into x4,x5 + was still not quite correct. + +bug fix: data "occupancy set" spelled wrong in state + +JmolVersion="14.3.7_2014.10.12" + +bug fix: JSmol/HTML5 SCRIPT command broken (forces async, which is not working yet) + -- since 14.3.7_2014.9.17 + +feature change: DSSR reference to "lonePairs" changed to "isolatedPairs" + -- select within(dssr,"isolatedPairs") preferred + -- select within(dssr,"lonePairs") still OK + +bug fix: msCIF reader incorrectly handling multiple Legendre orders +bug fix: msCIF reader incorrectly handling superspace operators with x1,x2,x3 mixed into x4,x5 +bug fix: CONTACT FULL does not report proper volume (Young ho Jhon) +bug fix: (Java only) write FILE fails for string (copy/pasted) data + +JmolVersion="14.3.7_2014.10.10" + +bug fix: set waitForMoveTo not controlling script for ROTATE x.x y.y (finite spin) +bug fix: capture command not waiting properly for full spin +bug fix: msCIF reader: wave vectors of the form {a -a 0} were being ignored. + (14.3.6_2014.08.16 and 14.2.6) + +JmolVersion="14.3.7_2014.10.05" + +bug fix: isosurface molecular reader misassigning voxel source atom +bug fix: JSpecView integration not displaying properly +bug fix: JSmol does not allow Info._coverImage + +JmolVersion="14.3.7_2014.09.30" + +bug fix: CGD reader for fractional coordinates; alternative EDGE syntax + +JmolVersion="14.3.7_2014.09.29" + +bug fix: JavaScript j2sjmol.js -- should not create object .isArray() method as it conflicts with + JavaScript Array.isArray + +bug fix: CGD reader space groups set to Bilbao (origin 2) setting. + + +JmolVersion="14.3.7_2014.09.28" + +bug fix: Molden reader overlaying MO info and unit cell info + +new feature: Molden reader adds [CellAxes] block + -- three vectors -- a, b, c + -- Angstroms assumed; no other option, actually + -- Use 0 0 0 for c to indicate slab + -- example + [CellAxes] (Angs) + 2.963407 0.0 0.0 + 0.0 6.513587 0.0 + 0.0 0.0 0.0 + + +JmolVersion="14.3.7_2014.09.27" + +bug fix: interpretation of space group I41 by name only, without operations, + drops second (centered) C2 axis. + + +JmolVersion="14.3.7_2014.09.26" + +new feature: TOPOS Crystal Graph Data (CGD) file reader + +JmolVersion="14.3.7_2014.09.24" + +bug fix: exporter generally not allowing creating meshes with PovRAY + +JmolVersion="14.3.7_2014.09.23" + +bug fix: Clazz.floatToLong not aliased as Clazz_floatToLong in corebottom2.js/coretop2.js + -- causes CAPTURE command to fail for JSmol/HTML5 + +new feature: {xxx}.find("MF","CH2O") + -- returns subset of {xxx} + -- first atoms that match formula; not necessarily sequential + +new feature: {*}.find("MF", TRUE) + -- calculates EMPIRICAL formula + -- example: + $ load $glucose + $ print {*}.find("MF") + H 12 C 6 O 6 + $ print {*}.find("MF",true) + H 2 C 1 O 1 + +new feature: {cell=555}.find("CellFormula"); + -- calculates cell formula for specified unit cell + -- weights interior 1, face 1/2, edge 1/4, vertex 1/8 + -- selection should be a single packed unit cell + -- fails with "?" if end result is not integral + -- example: + $ load quartz.cif packed + $ print {*}.find("cellFormula"); + O 6 Si 3 + +new feature: {cell=555}.find("CellFormula", TRUE); + -- calculates empirical cell formula for specified unit cell + -- weights interior 1, face 1/2, edge 1/4, vertex 1/8 + -- selection should be a single packed unit cell + -- fails with "?" if end result is not integral + -- example: + $ load quartz.cif packed + $ print {*}.find("cellFormula", true); + O 2 Si 1 + +new feature: label %O + -- lists all symmetry operators leading to this position (as a string) + -- if more than one operator (contains a comma), this is a special position + -- same as %[symmetry] but just a simple list of operators + +JmolVersion="14.3.7_2014.09.22" + +FEATURE CHANGE: atoms without vibration will no longer report out as vxyz = {0 0 0} or vx = 0 + -- print {atomno=3}.vxyz and {*}.vxyz.all will report -1 + instead of {vx vy vz} when atom does not have a vibration + -- print {atomno=3}.vx will report "NaN" (also vy and vz) + -- label %[vxyz] will be blank + -- label %[vx] will be blank (also vy and vz) + -- select vxyz >= 0 will select for atoms with vibrations of any magnitude + -- select vxyz < 0 will select for atoms without vibrations of any magnitude + -- select vx = 0 will NOT select atoms with no vibration vector + -- select vx != 0 will NOT select atoms with no vibration vector + -- select vx = 0 || vx != 0 will select for atoms with vibrations of any magnitude + -- same with modulations and modxyz, modx, mody, modz + +FEATURE CHANGE: {xxx}.vxyz = a, where a is an array + -- no longer throws an exception if a[i] is not a point + -- simply does not set that value. + -- allows for v = {*}.vxyz.all; {*}.vxyz = v; + + +JmolVersion="14.3.7_2014.09.21" + +bug fix: magCIF reading with symmetry scaling (-x+1/2,-2x+y,z+1/2,+1 mx,2mx-my,-mz) + improperly rotates moments (1.34.cif) + +JmolVersion="14.3.7_2014.09.20b" + +bug fix: array sorting broken in JavaScript + +code: magCIF change to _space_group_symop.magn_ssg_centering_algebraic +code: efficiencies in storage of CIF keys + +bug fix: CIF reader not reading magnetic lattice centering for incommensurately modulated structures +bug fix: {*}.modulation("M") not functional + +bug fix: script queue broken in 2014.09.17 + +JmolVersion="14.3.7_2014.09.17" + +bug fix: cartoon OFF does not remove nucleic bases from visible set +bug fix: select visible does not recalculate visible set + -- after RESTRICT, for instance; Eric Martz + -- at least since 14.1.14 + load =1d66 + cartoons only # if this is omitted, 'select visible' works correctly + refresh + restrict 28-36:B + print {visible} + +bug fix: x = {visible} does not COPY the visible set +bug fix: spin broken in WebGL + +code: further progress with fully asynchronous HTML5 + -- all initial script loading and program start-up + -- general LOAD and SCRIPT command processing + -- minimization (static resource loading) + -- PNGJ file loading + +JmolVersion="14.3.7_2014.09.16" + +bug fix: chainCaseSensitive ignored for select :a +bug fix: JmolData not reporting out properly + + +JmolVersion="14.3.7_2014.09.15b" + +bug fix: 14.3.7_2014.09.14 breaks nucleic acid rendering + +JmolVersion="14.3.7_2014.09.15" + +bug fix: CARTOON OFF does not remove visibility flag for alpha carbons + (introduced in jmol-14.1.17_2014.06.03) + +JmolVersion="14.3.7_2014.09.14" + +bug fix: JSmol/HTML5 fails to show rockets +bug fix: setting structures after displaying rockets does not reset rockets correctly + +bug fix: load *xxxx/val validation loading not working (14.3.7_2014.09.07) + +new feature: load =xxxx/rna3d + -- mmCIF only + -- fetches http://rna.bgsu.edu/rna3dhub/loops/download/xxxx + -- hairpinLoops, internalLoops, junctions + -- allows for such constructs as: + select within(rna3d,"hairpinLoops") + select within(rna3d,"hairpinLoops where index=5") + x = getproperty("auxiliaryInfo.models[1].rna3d.internalLoops.5") + x = getproperty("auxiliaryInfo.models[1].rna3d.internalLoops")[5] + print x + { + _atoms : ({3023:3062 3639:3706}) + _isres : true + _path : "internalLoops" + index : 5 + units : "1S72|1|0|C|153,1S72|1|0|C|154,1S72|1|0|G|182,1S72|1|0|A|183,1S72|1|0|G|184" + } + y = x._atoms + select y + +new feature: load =xxxx/val +new feature: load =xxxx/dom + -- extends PDBe validation/domain annotation to RCSB calls + +new feature: load *xxxx/dssr +new feature: load *xxxx/rna3d + -- DSSR analysis extended to PDBe calls + -- RNA3D analysis extended to RCSB calls + +JmolVersion="14.3.7_2014.09.12" + +bug fix: Draw broken in JSmol/HTML5 in 14.3.7_2014.09.07 + +JmolVersion="14.3.7_2014.09.11" + +bug fix: Unit cell display and other characteristics offset or wrong when + crystallographic coordinates include an intrinsic offset from + Cartesian coordinates, as in the case of ENT/mmCIF 1hbb and 2hhb. + +bug fix: PDB reader not reading SCALEn records; required in certain cases for load =xxxx {1 1 1} + + +JmolVersion="14.3.7_2014.09.10" + +bug fix: Pending measurements lost when dragging to reposition molecule +bug fix: EM files not allowing unit cell creation for PDB or mmCIF files + +JmolVersion="14.3.7_2014.09.08" + +bug fix: binary document reader can skip bytes if an http connection + fails to deliver the full set of requested bytes in one operation + (nonstandard MRC files and PyMOL files) + +JmolVersion="14.3.7_2014.09.07" + +code: note new Jmol. in front of ___xxx here + +code: further work on asynchronous file loading + -- uses script state machine to reset state + -- xhr used only for data files; DOM for scripts + -- caches data files + -- principal shown to work + -- works for package.js and corexxx.js files + -- works for most Java-class xxxx.js files + -- fails (requires multiple attempts) for some cases + -- animation/vibration/spin threads + -- PNGJ file loading + -- cleaned up j2sjsmol code + -- abandons complex j2s Clazz file loading methods; just uses jQuery + +new feature: Legendre polynomials for MSCIF file reading + +bug fix: adds correct dates for code versions of JSmol files +bug fix: load quartz.cif {1 1 1};draw symop @1 @5 does not work + due to refactoring error 7/9/2014 (14.3.3) +bug fix: dssr broken in 14.3.5 +bug fix: throw context prior to try/catch within function causes exception +bug fix: polyhedra not removed from rendering when central atoms are deleted + +code: refactoring symmetry info into org.jmol.symmetry.SymmetryDesc + +JmolVersion="14.3.7_2014.08.29" + +code: preliminary all-asynchronous JSmol/HTML5 + +JmolVersion="14.3.7_2014.08.25" + +bug fix: translation of atoms after deleting atoms having dots on crashes Jmol + +JmolVersion="14.3.7_2014.08.22" + +new feature: AXES TYPE "a"|"b"|"c"|"ab"|"ac"|"bc"|"abc" + -- for axes position [x y] only shows specified axes + +new feature: load quartz.cif supercell "2a,2b+a,c;1/2,0,0" + -- allows adjusting origin without changing symmetry operations + -- same as load quartz.cif filter "cell=2a,2b+a,c;1/2,0,0" + -- default lattice set to {555 555 -1} (i.e., PACKED) + -- sets packing range based on the supercell + -- packing can be avoided by specifying the lattice: + load quartz.cif {1 1 1} supercell "2a,2b+a,c;1/2,0,0" + +doc note: load ... SUPERCELL "2a,2b,2c" is the same as load ... SUPERCELL {2 2 2} + except that the packing will be based on the supercell dimensions, not the + original cell dimensions, with range 0.02. + This can be adjusted using PACKED x.x, which is still a fraction of the supercell dimensions. + load quartz.cif supercell "10a, 10b+5a,c" PACKED 0.002 + +doc note: load ... SUPERCELL ... defaults to PACKED, but simply adding a lattice overrides this: + load ... {1 1 1} SUPERCELL ... + + +bug fix: magnetic CIF files incompatible with displacement modulation +bug fix: write PNG xxx.png when xxx.png is currently loaded saves 0-length data files +bug fix: load ASYNC was documented for 14.1.12_2014.03.10 but never implemented + +JmolVersion="14.3.7_2014.08.18" + +bug fix: load quartz.cif supercell "2a,2b+a,c" not working properly + +JmolVersion="14.3.6_2014.08.17b" +released as Jmol 14.3.6 + +bug fix: modulated magnetic moment scaling by VECTORS MAX x.x not saved in state + for modulations that are 0,0,0. +bug fix: magnetic CIF reader not automatically showing modulation +bug fix: load SUPERCELL {x y z} not working correctly in terms of packing +bug fix: load SUPERCELL not working correctly with modulation or magnetic + +JmolVersion="14.3.6_2014.08.15" + +new feature: upgrade of application file...export...Gaussian Input File... + +new feature: pmesh files can contain triangle colors + +JmolVersion="14.3.6_2014.08.14" + +bug fix: JavaScript drag-drop clears cache inappropriately when spt file is dropped + +IMPORTANT NOTE: The problem described here only affects the reading of states that + have been created for crystallographic files, and then only if the + state was created in Java and then displayed in JavaScript, + or vice-versa. + + The problem is due to the fact that the Java implementation + of Jmol uses float values for atom coordinates, while JavaScript + is restricted to using only double values. The problem arises when + a comparison must be made between two decimal values. After symmetry + has been applied, it is possible for atom coordinates to be off in the + 4th-7th decimal digit for floats and 14th-17th for doubles in the + range -256 to 256. + + The problem is most acute for inorganic crystal systems where + symmetry has been applied and especially after the CONNECT NONE command + has been issued. + + Aspects where a problem might arise include: + -- packing of unit cells, where atoms are discarded + -- iterating over atoms, where atom order is important + -- autobonding, where distances and order are critical + -- comparing Cartesian or fractional coordinate values + + Solution to the problem is to automatically round all fractional + atom coordinates to a precision of 0.00001 and all Cartesian + atom coordinates to a precision of 0.0001. This forces both + double and float implementations to the same value and + results in no practical error, since these ranges are + well beyond the precision of atom coordinates in crystals. + Coincidence is assured for fractional coordinates up to + about 126 and for Cartesian coordinates up to about 838. + + This rounding is not implemented for state or PNGJ file + with state version v where + + v < 140206 || v >= 140300 && v < 140306 + + and in general only in the case where the file coordinates are + fractional. Thus, those files will be read exactly as in the + version they were created by. And they will have have the same + issues as well. + + The result is also much cleaner-looking atom coordinates. + For example, in JavaScript: + + print {*}.fxyz + + {0.33333328149215147 0.999999891271352 1.0000000000000024} + {0.6666666148254848 0.999999891271352 1.0000000000000024} + {0.9999999844017011 1.000000000000001 0} + {0.9999999616049127 0.9999999316096356 0.6290004156275991} + {0.9999999709556066 0.9999999596617175 0.3709995843724032} + {0.9999999481588181 0.999999891271352 1.0000000000000024} + + becomes: + + {0.33333 1 1} + {0.66667 1 1} + {1 1 0} + {1 1 0.629} + {1 1 0.371} + {1 1 1} + + +new feature: set legacyJavaFloat + -- set by Jmol when a state is read that is before 14.2.6 or in the range 14.3.0 - 14.3.5; + -- prevents fractional and cartesian coordinate rounding. + -- cleared by ZAP or LOAD or loading of any later state script + +new feature: MOLDEN extensions [SpaceGroup] [Operators] [Cell] + +JmolVersion="14.3.5_2014.08.10" + +code: static Txt functions moved to javajs.util.PT + +new feature: SHOW/WRITE PROPERTIES ... format "%s %i %f %f %f" + -- allows specifying the format for a set of up to three properties. + -- %s is atom name; %i is atom number + +bug fix: show PROPERTIES broken +bug fix: plot PROPERTIES changes axis settings + +JmolVersion="14.3.5_2014.08.09" + +bug fix: magCIF file reading broken for new file format + +new feature: magCIF file reading for incommensurately modulated magnetic structures + -- very preliminary only; not tested + +new feature: set showModulationVectors true/false + -- required now for showing modulation vectors rather than vibration vectors + +new feature: vibration max x.x +new feature: vector max x.x // alternative; the same + -- renormalizes all vibrations and vibration/spin vectors to have a maximum value of x.x + + + +JmolVersion="14.3.5_2014.08.08" + +bug fix: CIF operators with n/9 not supported + +JmolVersion="14.3.5_2014.08.05" + +bug fix: CIF reader broken for load xxx.cif 1 (14.1.17_2014.06.07) +bug fix: CONTACT command not functioning properly with multiple models + +JmolVersion="14.3.4_2014.08.03" +note: Sourceforge release of 14.3.4 and 14.2.4 + +bug fix: annotation atom sets not adjusted for added hydrogens +bug fix: 14.3.3_2014.08.02 broke mmCIF reader +bug fix: BinaryDocument (Spartan file) reading broken in 14.1.12_2014.03.18 + +JmolVersion="14.3.3_2014.08.02" +note: Sourceforge release of 14.3.3 and 14.2.3 + +new feature: point({x,y,z}, true) + -- TO screen coordinates + +new feature: point({sx,sy,sz}, false) + -- FROM screen coordinates + +JmolVersion="14.3.3_2014.08.01" + +bug fix: move+moveto/zoomto still an issue. + +summary of new features for annotations, July 17 - Aug 1 + +new feature: load *1cbs/dom + -- loads mmCIF file from EBI along with sequence domain data + -- uses URL http://wwwdev.ebi.ac.uk/pdbe/api/mappings/sequence_domains/1cbs?metadata=true&pretty=false + -- use example: + + load *1cbs/dom + + Domains loaded: + CATH 2.40.128.20 + GO GO:0001972 GO:0005215 GO:0005501 GO:0005634 GO:0005730 GO:0005737 GO:0005783 GO:0006355 GO:0006810 GO:0007165 GO:0008289 GO:0008544 GO:0016918 GO:0019841 GO:0035115 GO:0042573 GO:0070062 + InterPro IPR000463 IPR000566 IPR011038 IPR012674 + Pfam PF00061 + SCOP 50847 + UniProt P29373 + + Use SHOW DOMAINS for details. + + $ show domains + + metadata restapi_version=0.8 + metadata date=20140801 + metadata url=http://wwwdev.ebi.ac.uk/pdbe/api/mappings/1cbs?pretty=false&metadata=true + 1cbs SCOP 50847 identifier=Fatty acid binding protein-like + 1cbs SCOP 50847 fold description=Lipocalins + 1cbs SCOP 50847 fold sunid=50813 + 1cbs SCOP 50847 description=Fatty acid binding protein-like + 1cbs SCOP 50847 class description=All beta proteins + 1cbs SCOP 50847 class sunid=48724 + 1cbs SCOP 50847 superfamily description=Lipocalins + 1cbs SCOP 50847 superfamily sunid=50814 + 1cbs UniProt P29373 name=RABP2_HUMAN + 1cbs UniProt P29373 identifier=RABP2_HUMAN + 1cbs GO GO:0005215 name=transporter activity + 1cbs GO GO:0005215 identifier=transporter activity + 1cbs GO GO:0005215 definition=Enables the directed movement of substances (such as macromolecules, small molecules, ions) into, out of or within a cell, or between cells. + 1cbs GO GO:0005215 category=Molecular_function + ... + 1cbs CATH 2.40.128.20 architecture=Beta Barrel + 1cbs CATH 2.40.128.20 identifier=Lipocalin + 1cbs CATH 2.40.128.20 name=Cellular retinoic acid binding protein type ii. Chain: a. Engineered:yes + 1cbs CATH 2.40.128.20 homology=Lipocalin + 1cbs CATH 2.40.128.20 class=Mainly Beta + 1cbs CATH 2.40.128.20 topology=Lipocalin + 1cbs Pfam PF00061 identifier=Lipocalin / cytosolic fatty-acid binding protein family + 1cbs Pfam PF00061 description=Lipocalin / cytosolic fatty-acid binding protein family + 1cbs InterPro IPR012674 name=Calycin + 1cbs InterPro IPR012674 identifier=Calycin + 1cbs InterPro IPR000566 name=Lipocalin/cytosolic fatty-acid binding domain + 1cbs InterPro IPR000566 identifier=Lipocalin/cytosolic fatty-acid binding domain + 1cbs InterPro IPR011038 name=Calycin-like + 1cbs InterPro IPR011038 identifier=Calycin-like + 1cbs InterPro IPR000463 name=Cytosolic fatty-acid binding + 1cbs InterPro IPR000463 identifier=Cytosolic fatty-acid binding + + select within(domains,"InterPro where domain.identifier='calycin'") + +new feature: load *1cbs/val + -- loads mmCIF file from EBI along with validation data + -- use URL http://wwwdev.ebi.ac.uk/pdbe/api/validation/outliers/all/1cbs?metadata=true&pretty=false + -- places that data into property_xxxx arrays + -- use examples: + + load *2x9t/val + color property_rsrz "bwr" + display group within(5, property_rsrz > 0) + + found biomolecule 1: A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y + + Validations loaded: + property_sidechains (residues: 181) + property_rama (residues: 262) + property_rsrz (residues: 87, max: 10.6) + property_chirals (atoms: 1) + property_planes (residues: 21, max: 0.08) + property_RNA_suite (residues: 241) + property_RNA_pucker (residues: 33) + property_bond_angles (atoms: 31, max: 14.12) + property_clashes (atoms: 2655, max: 3.42) + + load *1d66/val + select on within(validation,"clashes") + +new feature: load *1cbs/all + -- loads mmCIF file from EBI along with validation and domain data + -- may be extended to more types as they arise. + +new feature: label %[validation.xxxx] + -- retrieves comma-separated validation values after load *yyyy/val + -- xxxx is an entry in the validation API return, such as clashes or rsrz + -- NOT a sum of absolute values, as %[property_xxxx] is for validation data + -- example: + load *1d66/val + select within(validation,"bond_angles") + label val=%[validation.bond_angles] + +new feature: set hoverlabel "%[validation.xxxx]" + -- allows customized hover based on validation data + -- example: + set hoverlabel "%[validation.bond_angles]" + +new feature: select within(validation, "clashes where value>3") + -- selects atoms from "outliers" array + -- similar to select within(domains, "....") + -- uses sum of absolute values for each atom + +new feature: print getProperty("validationInfo[select * where _type='clashes']", atomset) + -- WHERE close can contain any validation type (see SHOW VALIDATION) + -- second parameter can be atom set -- {2.1} for instance -- defaults to current model + -- allows uses SQL-like select phrases + -- example: + + set hoverlabel "@{getProperty(\"validationInfo[select value where _type='bond_angles' and (_atoms and {hovered})]\").join(',')}" + +new feature: print getProperty("domainInfo[select * where _type='SCOP']") + -- subset of auxiliaryInfo + -- assumes model of visible + -- second parameter can be atom set: {2.1} for instance + -- uses sum of absolute values for each atom + -- allows uses SQL-like select phrase: + + print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") + + +new feature: SQL NOCACHE flag + -- prevents caching when using outside variables or functions + -- can be anywhere in the clause + -- example: + select within(domains,"NOCACHE SCOP where myFunc(domain, _atoms)") + +new feature: SHOW DOMAINS "some info" + -- selects specific records + -- text-based matching in all fields and key names + -- dot-notation allowed + -- examples: + show domains name + show domains CATH + show domains InterPro.IPR002409 + show domains Gal4 + +new feature: SHOW DOMAINS " all" + -- shows JSON-like array data + -- will involve a circular reference because the domain key + points to the parent.parent entry in the main array + -- example: + load *1cbs/dom + show domains InterPro.IPR002409 all + + { + _atoms : ({15:204}) + _path : "InterPro.IPR000463" + chain_id : "A" + domain : + { + identifier : "Cytosolic fatty-acid binding" + mappings : "" + name : "Cytosolic fatty-acid binding" + } + end : + { + author_insertion_code : "" + author_residue_number : 25 + residue_number : 25 + } + entity_id : 1 + start : + { + author_insertion_code : "" + author_residue_number : 3 + residue_number : 3 + } + struct_asym_id : "A" + } + { + _atoms : ({32:185}) + _path : "InterPro.IPR000463" + chain_id : "A" + domain : + { + identifier : "Cytosolic fatty-acid binding" + mappings : "" + name : "Cytosolic fatty-acid binding" + } + ... + + + +JmolVersion="14.3.3_2014.07.27" + +bug fix: set pdbAddHydrogens incompatible with mmCIF *xxxx/val + +new feature: select within(validation, "clashes where value>3") + -- selects atoms from "outliers" array + -- similar to select within(domains, "....") + -- uses sum of absolute values for each atom + +new feature: print getProperty("validationInfo[select * where _type='clashes']") + -- subset of auxiliaryInfo + -- WHERE close can contain any validation type, currently including: + -- assumes model of visible + -- second parameter can be atom set: {2.1} for instance + -- allows uses SQL-like select phrase: + + print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") + + -- does NOT use abolute value; report is as an array when select value is used: + + set hoverlabel "@{getProperty(\\"validationInfo[select value where _type='bond_angles' and (_atoms and {hovered})]\\").join(',')}" + + +new feature: print getProperty("domainInfo[select * where _type='SCOP']") + -- subset of auxiliaryInfo + -- assumes model of visible + -- second parameter can be atom set: {2.1} for instance + -- uses sum of absolute values for each atom + -- allows uses SQL-like select phrase: + + print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") + + +JmolVersion="14.3.3_2014.07.26" + +code: refactoring dssr/domains/validation clases + +new feature: load *1crs/val + -- loads PDBe file with validation data + -- places that data into property_xxxx arrays + -- use examples: + + load *2x9t/val + color property_rsrz "bwr" + display group within(5, property_rsrz > 0) + +found biomolecule 1: A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y + +Validations loaded: + property_sidechains (residues: 181) + property_rama (residues: 262) + property_rsrz (residues: 87, max: 10.6) + property_chirals (atoms: 1) + property_planes (residues: 21, max: 0.08) + property_RNA_suite (residues: 241) + property_RNA_pucker (residues: 33) + property_bond_angles (atoms: 31, max: 14.12) + property_clashes (atoms: 2655, max: 3.42) + + + load *1d66/val + select on within(validation,"clashes") + + +JmolVersion="14.3.3_2014.07.23" + +bug fix: write PDB fails + +JmolVersion="14.3.3_2014.07.22" + +new feature: getProperty(x,"[select a,b,c .... + - selection of specific keys to report in getProperty command + - does not require star-slash, which could mark end-of-comment + +new feature: x.in(a,b,c,d...) # suggestion of Sameer Velankar +new feature: x.in([a,b,c,d]) + - returns 0 (x not in group) or position 1-n + +new feature: SQL NOCACHE flag + - prevents caching when using outside variables or functions + - can be anywhere in the clause + - example: + select within(domains,"NOCACHE ...") + +JmolVersion="14.3.3_2014.07.20" + +new feature: load *1cbs/dom + - loads domain info from EBI along with mmCIF file + - enables seqid (_atom_site.label_seq_id) required for animation + - ` information is in the JSON form (in all cases below, + additional key/value pairs are allowed): + + { "" : { } } + + where is a lower-case PDB id such as 1crs or 1d66 + and is one or more records: + + "" : { } + + is a database identifier such as: + "CATH", "SCOP", "InterPro", "UniProt", "GO", "EC" + + is one or more records of the form: + + "" : { } + + must at the very least contain: + + "identifier" : "" + "mappings" : [ array of ] + + must minimally be + + { "chain_id" : "" } + + but is more likely to contain start/end records: + + { "chain_id" : "", + "start" : , + "end" : + } + + must minimally be: + + { "residue_number" : } + + but usually also contains "author_residue_number" and "author_insertion_code". + + - reports to console: + + Domains loaded: + CATH 2.40.128.20 + EC + GO GO:0001972 GO:0005215 GO:0005501 GO:0005634 GO:0005730 GO:0005737 GO:0005783 GO:0006355 GO:0006810 GO:0007165 GO:0008289 GO:0008544 GO:0016918 GO:0019841 GO:0035115 GO:0042573 GO:0070062 + InterPro IPR000463 IPR000566 IPR011038 IPR012674 + Pfam PF00061 + SCOP 50847 + UniProt P29373 + Use SHOW DOMAINS for details. + +new feature: SHOW DOMAINS + - displays tab-separated annotation information + + 1cbs CATH 2.40.128.20 topology=Lipocalin + 1cbs Pfam PF00061 identifier=Lipocalin / cytosolic fatty-acid binding protein family + 1cbs Pfam PF00061 description=Lipocalin / cytosolic fatty-acid binding protein family + 1cbs InterPro IPR012674 name=Calycin + 1cbs InterPro IPR012674 identifier=Calycin + +new feature: SHOW DOMAINS "" + - selects specific records + - text-based matching in all fields + +new feature: SHOW DOMAINS " mappings" + - adds information about mapping + +new feature: select within(annotation, "") + + - allows selection of atoms based on annotations. + - can be: + - a databaseID: + + select within(domains,"InterPro") + + - a specific databaseID.entryID: + + select within(domains,"InterPro.IPR012674") + + - a specific databaseID, with WHERE clause: + + select within(domains,"InterPro where domain.identifier='calycin'") + select within(domains,"InterPro where identifier='calycin'") + select within(domains,"InterPro where identifier like '*-like*'") + + + + +note: "annotations" references changed to "domains" +bug fix: Jmol application starts in English regardless of language + +JmolVersion="14.3.3_2014.07.29" + +new feature: label %[validation.xxxx] + -- retrieves comma-separated validation values after load *yyyy/val + -- xxxx is an entry in the validation API return, such as clashes or rsrz + -- NOT a sum of absolute values, as %[property_xxxx] is for validation data + -- example: + load *1d66/val + select within(validation,"bond_angles") + label val=%[validation.bond_angles] + +new feature: set hoverlabel "%[validation.xxxx]" + -- allows customized hover based on validation data + -- example: + set hoverlabel "%[validation.bond_angles]" + +JmolVersion="14.3.3_2014.07.27" + +bug fix: set pdbAddHydrogens incompatible with mmCIF *xxxx/val + +new feature: select within(validation, "clashes where value>3") + -- selects atoms from "outliers" array + -- similar to select within(domains, "....") + -- uses sum of absolute values for each atom + +new feature: print getProperty("validationInfo[select * where _type='clashes']") + -- subset of auxiliaryInfo + -- WHERE close can contain any validation type, currently including: + -- assumes model of visible + -- second parameter can be atom set: {2.1} for instance + -- allows uses SQL-like select phrase: + + print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") + + -- does NOT use abolute value; report is as an array when select value is used: + + set hoverlabel "@{getProperty(\"validationInfo[select value where _type='bond_angles' and (_atoms and {hovered})]\").join(',')}" + + +new feature: print getProperty("domainInfo[select * where _type='SCOP']") + -- subset of auxiliaryInfo + -- assumes model of visible + -- second parameter can be atom set: {2.1} for instance + -- uses sum of absolute values for each atom + -- allows uses SQL-like select phrase: + + print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") + + +JmolVersion="14.3.3_2014.07.26" + +code: refactoring dssr/domains/validation clases + +new feature: load *1crs/val + -- loads PDBe file with validation data + -- places that data into property_xxxx arrays + -- use examples: + + load *2x9t/val + color property_rsrz "bwr" + display group within(5, property_rsrz > 0) + +found biomolecule 1: A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y + +Validations loaded: + property_sidechains (residues: 181) + property_rama (residues: 262) + property_rsrz (residues: 87, max: 10.6) + property_chirals (atoms: 1) + property_planes (residues: 21, max: 0.08) + property_RNA_suite (residues: 241) + property_RNA_pucker (residues: 33) + property_bond_angles (atoms: 31, max: 14.12) + property_clashes (atoms: 2655, max: 3.42) + + + load *1d66/val + select on within(validation,"clashes") + + +JmolVersion="14.3.3_2014.07.23" + +bug fix: write PDB fails + +JmolVersion="14.3.3_2014.07.22" + +new feature: getProperty(x,"[select a,b,c .... + - selection of specific keys to report in getProperty command + - does not require star-slash, which could mark end-of-comment + +new feature: x.in(a,b,c,d...) # suggestion of Sameer Velankar +new feature: x.in([a,b,c,d]) + - returns 0 (x not in group) or position 1-n + +new feature: SQL NOCACHE flag + - prevents caching when using outside variables or functions + - can be anywhere in the clause + - example: + select within(domains,"NOCACHE ...") + +JmolVersion="14.3.3_2014.07.20" + +new feature: load *1cbs/dom + - loads domain info from EBI along with mmCIF file + - enables seqid (_atom_site.label_seq_id) required for animation + - ` information is in the JSON form (in all cases below, + additional key/value pairs are allowed): + + { "" : { } } + + where is a lower-case PDB id such as 1crs or 1d66 + and is one or more records: + + "" : { } + + is a database identifier such as: + "CATH", "SCOP", "InterPro", "UniProt", "GO", "EC" + + is one or more records of the form: + + "" : { } + + must at the very least contain: + + "identifier" : "" + "mappings" : [ array of ] + + must minimally be + + { "chain_id" : "" } + + but is more likely to contain start/end records: + + { "chain_id" : "", + "start" : , + "end" : + } + + must minimally be: + + { "residue_number" : } + + but usually also contains "author_residue_number" and "author_insertion_code". + + - reports to console: + + Domains loaded: + CATH 2.40.128.20 + EC + GO GO:0001972 GO:0005215 GO:0005501 GO:0005634 GO:0005730 GO:0005737 GO:0005783 GO:0006355 GO:0006810 GO:0007165 GO:0008289 GO:0008544 GO:0016918 GO:0019841 GO:0035115 GO:0042573 GO:0070062 + InterPro IPR000463 IPR000566 IPR011038 IPR012674 + Pfam PF00061 + SCOP 50847 + UniProt P29373 + Use SHOW DOMAINS for details. + +new feature: SHOW DOMAINS + - displays tab-separated annotation information + + 1cbs CATH 2.40.128.20 topology=Lipocalin + 1cbs Pfam PF00061 identifier=Lipocalin / cytosolic fatty-acid binding protein family + 1cbs Pfam PF00061 description=Lipocalin / cytosolic fatty-acid binding protein family + 1cbs InterPro IPR012674 name=Calycin + 1cbs InterPro IPR012674 identifier=Calycin + +new feature: SHOW DOMAINS "" + - selects specific records + - text-based matching in all fields + +new feature: SHOW DOMAINS " mappings" + - adds information about mapping + +new feature: select within(annotation, "") + + - allows selection of atoms based on annotations. + - can be: + - a databaseID: + + select within(annotations,"InterPro") + + - a specific databaseID.entryID: + + select within(annotations,"InterPro.IPR012674 where identifier='calycin'") + + - a databaseID followed by a WHERE clause: + + select within(annotations,"InterPro where identifier='calycin'") + select within(annotations,"InterPro where identifier like '*-like*'") + + + + + any text information in the + SHOW ANNOTATION report. + +bug fix: 1-letter sequence for water showing as "I" not "?" +bug fix: SHOW SEQUENCE FALSE not giving 1-letter sequences +bug fix: for (i in x) where x is an associative array does not work + +JmolVersion="14.3.3_2014.07.17" + +new feature: load *1cbs/all + -- preliminary only + +new feature: show annotation + +bug fix: DSSP analysis not returning information to console + +JmolVersion="14.3.3_2014.07.13" + +code: refactoring of HTML5 Jmol, JSpecView, and AstexViewer for cleaner + interaction with web-page based JavaScript. All interations now + go directly through JS + +bug fix: move and moveto cannot be in the same session + +JmolVersion="14.3.3_2014.07.12" + +bug fix: x.func(y) as second operand in a boolean "and" operation + where the first operand evaluates to FALSE + (so that x.func(y) is never evaluated), triggers a script error. +bug fix: set atomPicking, setDrawPicking, pickLabel, pickingSpinRate + all should not be in state + +new feature: load /pdbe/xxxx + -- loads CIF file http://www.ebi.ac.uk/pdbe/entry-files/download/xxxx.cif + -- can be abbreviated as "*": + + load *1ai6 + + -- can be supplemented with annotations (TODO) + +new feature: {*}.seqid + -- mmCIF only + -- settable using {*}.seqid = .... + -- from _atom_site.label_seq_id + -- a pointer to _entity_poly_seq.num in the ENTITY_POLY_SEQ category. + Data items in the ENTITY_POLY_SEQ category specify the sequence + of monomers in a polymer. Allowance is made for the possibility + of microheterogeneity in a sample by allowing a given sequence + number to be correlated with more than one monomer id - the + corresponding ATOM_SITE entries should reflect this heterogeneity. + +bug fix: ModelKit menu does not allow setting of new element +bug fix: set atomPicking, setDrawPicking should not be in state + +JmolVersion="14.3.3_2014.07.09" + +new feature: eval(...) + +code: org.jmol.util.Measure moved to javajs.util.Measure + +JmolVersion="14.3.3_2014.07.02" + +bug fix: getproperty structureInfo can fail with phosphorus monomers +bug fix: PDB reader not placing compoundSource in model auxiliary info + +JmolVersion="14.3.2_2014.06.29" + +bug fix: MCIF reader misreads magnetic symmetry operators involving xyz scaling +bug fix: isosurface "=3hyd" AS "3hyd.omap" fails to save proper file + (error in seek() method of javajs.util.binaryDocument) + +JmolVersion="14.3.1_2014.06.28" + +bug fix: zz = write("coord") should write untransformed coordinates in XYZ format. It is writing untransformed coordinates in MOL format. +bug fix: zz = write("coord", "MOL") should write transformed coordinates in MOL format. It is writing untransformed coordinates. +bug fix: write COORD should display untransformed coordinates in XYZ format in the console, but it does not. It writes a JPG file named "coord". +bug fix: MCIF reader not reading magnetic centerings 1/3, 2/3 +bug fix: JSV jsvAddHighlight broken +bug fix: JSmol HTML5 console broken for Safari and Chrome +bug fix: CASTEP phonon .geom file reading broken + +JmolVersion="14.3.0_2014.06.13" + +RELEASE OF Jmol 14.2.0 Friday, June 13, 2014 + +new feature: readers with unit cells may load as trajectories + +bug fix: CASTEP reader broken for multiple cells and geometry optimization + +JmolVersion="14.1.17_2014.06.12" + +new feature: protein sidechain minimization + -- enabled by set picking dragMinimizeMolecule + -- proteins only + -- uses MMFF or UFF force field automatically + -- important to use set pdbAddHydrogens prior to loading + to avoid stereochemical switch (ILE, THR, e.g.) + or to be very careful about that + +JmolVersion="14.1.17_2014.06.11" + +bug fix: set pdbAddHydrogens fails for structures with ANISOU records +bug fix: select x < 0.3 reports error when checking, though it does run when executed +bug fix: SMILES for model with nonbonded atoms fails + +JmolVersion="14.1.17_2014.06.10" + +bug fix: 06.09 broke unitcell display +bug fix: WebPanel error trapping problem; too long file name for tar file + +synchonized with Jmol 14.0.17 June 9, 2014 + +bug fix: zoomto broken +bug fix: atoms turned off with restrict still clickable + +JmolVersion="14.1.17" +JmolVersion="14.1.17_2014.06.07" + +FEATURE CHANGE: jmolCommandInput 6th parameter added is default value + -- defaults to "help" + +FEATURE CHANGE: set useArcBall removed + -- no longer necessary; never documented + -- arcBall is always used anyway + +FEATURE CHANGE: removed UNITCELL "xxx" where xxx is an isosurface ID + -- undocumented + -- not necessary, as UNITCELL $xxx or UNITCELL isosurface xxx does as well + -- conflicts with new UNITCELL "parent" and other unit cell types + +FEATURE CHANGE: REMOVED: set fractionalRelative + -- an odd quantity -- related specifically to scripts commands + using {1/1 1/2 1/3} and cell=nnn + -- Its use with cell= was never documented. + -- It makes no sense to change the unit cell and not change the + meaning of {1/1 1/2 1/3} and cell=nnn + -- Only relates to situations where the unit cell has been offset. + -- Its presence caused unitcell [{origin} {a} {b} {c}] to fail. + -- It should never have been set in state, as it has nothing to do with the state + +FEATURE CHANGE: default space group names for Int. Tables # 39, 41, 64, 67, 68 added + +new feature: x= format("JSON", data) + -- simple way to generate JSON code. + +new feature: x = format("base64", data) + -- creates base64-encoding of the data + -- data can be an array, a byteArray, a string, or a base64-encoded array + -- prepends the string with ";base64," + +new feature: x = format("byteArray", data) + -- creates byte array from the data + -- data can be an array, a byteArray, a string, or a base64-encoded array + +new feature: x = format("array", data) + -- data can be an array, a byteArray, a string, or a base64-encoded array + -- turns byteArrays and strings into integer arrays + -- copies arrays if data is an array + +new feature: load xxxx filter "CELL=va,vb,vc;oa,ob,oc" + -- generic cell transformation during load + -- applicable to any crystallographic file + -- must be the LAST element of a filter + -- operators are applied BEFORE this transformation + -- can be expanded with {i j k} or {mmm nnn 1} + -- can be used to create a supercell with or without offset + -- reversed with "cell=!a,b,c:0,0,1/2" + -- forces packing, with range based on specified cell dimensions + -- example: + load t.mcif filter "cell=2a,2b,c:0,0,1/2" + +new feature: load xxxx filter "NOPACKCELL=va,vb,vc;oa,ob,oc" + -- same as CELL= except without any packing + +new feature: load filter "cell=parent" or "cell=standard" + -- for MCIF files (magnetic spin CIF files + -- later, UNITCELL "conventional" displays conventional cell + +new feature: set showUnitCellInfo TRUE (default) + -- set FALSE to hide unit cell information display + +new feature: unitcell "type" + -- type can be "standard" or "parent" for now + derived from CIF records + -- "primitive" may follow + unitcell "standard" + unitcell "parent" + unitcell "conventional" + +new feature: unitcell "abc_offset" + -- abc_offset is of the form "a,b,c;0,0,0" + where a, b, and c, can be any expression involving a, b, and c + and 0 can be an offset + -- numbers can be expressed fractionally or as decimals + -- offset is optional, but semicolon is not + -- effect is cumulative -- unit cell is NOT first restored + -- reversed using ! + -- examples: + + unitcell "a+b,a-b,c;1/4,1/4,1/4" + unitcell "!a+b,a-b,c;1/4,1/4,1/4" + unitcell "a+b,a-b,c;" + +new feature: unitcell {555 575 0} + -- 0 here means "draw these cells without internal lines" + -- (currently) .uxyz does not scale + +new feature: unitcell OFFSET and RANGE + -- explicit parameters for unitcell {i j k} and unitcell {nnn mmm x} + +new feature: unitcell BOUNDBOX + -- allows calculation of positions relative to boundbox using fractional coordinates + -- for example + + unitcell boundbox + draw {1/2 1/2 1/2} + unitcell reset + +new feature: x.push(key,value) for associative array + -- same as x.key = value; seems appropriate + +new feature: x.pop("key") for an associative array + -- same as x - "key"; just seems more appropriate + +new feature: load ORIENTATION or load DATA "...orientation..." ... + -- loads a file and preserves current orientation + -- creates saved orientation "preload" + -- shortcut for save orientation preload;load....;restore orientation preload + -- example: + load orientation "" // reload file with same orientation + +new feature: V3000 reading of DATA SGROUP records: + -- for example: + ... + M V30 BEGIN SGROUP + M V30 1 DAT 0 ATOMS=(1 1) FIELDNAME=pc FIELDDATA=-0.2344 + M V30 1 DAT 0 ATOMS=(1 2) FIELDNAME=pc FIELDDATA=0.3344 + M V30 1 DAT 0 ATOMS=(1 3) FIELDNAME=pc FIELDDATA=-0.4344 + M V30 END SGROUP + ... + then partialCharges, for example, can be set using: + {*}.partialCharge = {*}.property_pc.all + -- optionally, if FIELDNAME contains "partial" then the atom's partial charge + is automatically set instead of property_partialCharge + -- if more than one field starts with "partial" then the + first one indicated in the file is assigned to partialCharge + and the any others are left as property_partialXXXX + +new feature: moveTo AXIS [a,b,c,x,y,z] + -- for example: moveTo AXIS a + -- rotates the model smoothly to a crystallographic or cartesian axis. + -- in the case of abc, the rotation places the remaining two axes + to the right and down (International Tables standard) + -- in the case of xyz, the rotation places the remaining two axes + to the right and up (standard Cartesian orientation) + -- for abc, if no unit cell is available, a simple {1 1 1 90 90 90} unit cell is used + -- added to application and popup View menus + +new feature: JSmol: allow for a user callback for customization of menu + if (Jmol._showMenuCallback) + Jmol._showMenuCallback(menu, x, y); + +new feature: show(xxx) function + -- same as script("show " + xxx) + +new feature: set showUnitCellDetails TRUE (default) + -- FALSE removes a,b,c,alpha,beta,gamma lines + +new feature: unitcell RESET (or RESTORE) + -- returns unit cell to original values and removes offset and scaling + -- resets width to fine line + +new feature: restore UNITCELL + -- returns unit cell to original values and removes offset and scaling + +new feature: show symop n "fmatrix" +new feature: show symop @1 @2 "fmatrix" + -- gives rational fractional matrix + +new feature: BilbaoReader NONORM option -- reads displacements as actual values, not normalized + +new feature: load ... filter "symop=..." + -- list of numbers separated by space, for example: + load quartz.cif packed filter "symop=2" + load quartz.cif packed filter "symop=2 3" + +new feature: set echo depth x.x for standard echos + -- works for 3D echos now as well as 2D echos + -- values in percent of depth + -- x.x >= 1000 are (x.x % 1000) in front of the 3D position + -- x.x <= -1000 are (-x.x % 1000) behind the 3D position + +new feature: set starWidth + -- replaces set set starScale + +new feature: menu item color--atoms--by scheme--vectors + +new feature: load "filename" packed x.x + -- x.x is the range in fractional coordinates within which an atom + can be close to being in the 555 cell but not quite and still be + accepted by the atom loading filter. + -- default is 0.02 + -- in some cases, this adds too many atoms and can be reduced to 0.01 or 0.001 + -- modulation reader uses 0.001 strictly. + -- for example: + + load t2.bcs packed 0.01 + {1.1}.property_dist = {1.1}.distance.min({1.2}) + {1.1}.spacefill={1.1}.property_dist.all + color {1.1} property_dist "bwr" range 0 0.5 + select 1.2 + stars -0.3 + set starscale 0.1 + frame * + unitcell {1.2} + +new feature: Bilbao Crystallographic Server file reader + -- scrapes Bilbao HTML pages for Bilbao structure format + -- for example, http://www.cryst.ehu.es/cryst/compstru.html + or http://www.cryst.ehu.es/cryst/amplimodes.html + -- reads Bilbao standard setting data: + 15 + 13.800 5.691 9.420 90.0 102.3 90.0 + 7 + Pb 1 4e 0.0000 0.2910 0.2500 + Pb 2 8f 0.3170 0.3090 0.3520 + P 1 8f 0.5990 0.2410 0.4470 + O 1 8f 0.6430 0.0300 0.3920 + O 2 8f 0.6340 0.4640 0.3740 + O 3 8f 0.6420 0.2800 0.6120 + O 4 8f 0.4910 0.2220 0.4200 + -- identified by 1st and third line being a single integer only + (IT spacegroup number and atom count, respectively) + +new feature: dipole ID m1 ALL {...} + -- creates a molecular dipole set with ID + -- one dipole per molecule in specified range + -- connected to associated molecule in terms of visibility + +new feature: unit cell display includes k (mCIF) and q (CIF, Jana2006) vectors + +bug fix: cannot zap model for which atoms are all deleted +bug fix: isosurface "=1bna" does not work for zapped file +bug fix: label %[x] does not work +bug fix: show spacegroup not complete for magnetic and modulated structures +bug fix: legacy JVXL file data skipping broken in 14.1.13 +bug fix: MO file line includes full path; should be just the filename +bug fix: V3000 reader skips 2nd file in multiple files separated by $$$$ +bug fix: isosurface color density broken +bug fix: isosurface slab @1 @2 @3 broken +bug fix: (undocumented) isosurface slab @3 fails when isosurface has not been mapped +bug fix: console not properly handling TAB key +bug fix: double-click drag doesn't drag the model, and + since double-click is determined by time, not location, + it appears as though sometimes the model drags and + sometimes it does not. Solution is to + a) add a localization to double clicking. I think that + was removed because of touch interface problems. + b) add left-double-drag to left-single-drag for standard rotation + +bug fix: browser errant zero mouse move + causes collapse of rotation matrix + due to coding error in arcball routine + +bug fix: drag-drop followed by model building may fail. +bug fix: tm.matrixRotate protected from setting to all zeros (Chrome issue; reason unknown) +bug fix: JavaScript state creation not properly representing integral decimal numbers +bug fix: draw length pt1 pt2 only makes half the line +bug fix: color $m* green blue wild card coloring for isosurfaces doe not work +bug fix: {*}.trace = {*}.bfactor crashes Jmol (.bfactor does not exist) +bug fix: ramachandran plot scaling off +bug fix: color $isosurface1 "rwb" range 3.0 4.5 fails to set color scheme +bug fix: write VAR X fails if X is an associative array +bug fix: show NMR broken +bug fix: H1 simulation not happening in Jmol.jar +bug fix: write() function does not work for write("coords") +bug fix: vibration vectors may have incorrect length if vector scale and vibration scale are different +bug fix: LOAD ... SUPERCELL not saved in state +bug fix: CASTEP reader not handling supercell correctly (packing and phonons) + +bug fix: Jmol 14.1.12 broke atom.fxyz for models that have vibrations. + -- atom.fxyz SHOULD change with changes in unit cell, but when an update was + made to accommodate modulated subsystems, where different atoms in a + model may have different unit cells, this capability was lost for any + atom having any sort of vibration other than a modulation. + +bug fix: set hoverlabel will be ignored if no hover has already taken place + +bug fix: symmetry operation drawing/description with centering +bug fix: Bilbao uses 2nd origin for numerous spacegroups + +bug fix: magCIF reader using 4x4 determinant, not 3x3 + +bug fix: file drag-drop doing append if no atoms +bug fix: BilbaoReader amplimode correction +bug fix: polyhedra not vibrating +bug fix: application file open preview not working +bug fix: show file only shows file for model 1.1 +bug fix: signed applet not accepting drag-drop +bug fix: getProperty "fileInfo" for CIF should fix keys (lower case and change '.' to '_') +bug fix: problems reading PNGJ files for Jana2006 + +code: V3000 reader split off from MolReader; saves 2K or so. +code: faster calculations involving point-based atom properties such as fx +code: TransformManager clean-up; +code: Viewer/FileManager clean-up; image loading moved to jzu + + +JmolVersion="14.1.15" +JmolVersion="14.1.15_2014.05.08" + +bug fix: pubChem reader broken + +new feature: mCIF (magnetic CIF) file reader + -- preliminary reader for CIF format development testing + -- includes latest proposal in committee as of May 8, 2014 + +new feature: unitcell [ {origin} {a} {b} {c} ] + -- defines unit cell in terms of an origin and three vectors + -- just wasn't documented. + + +JmolVersion="14.1.15_2014.05.06" + +bug fix: CIF reader not filtering atoms by element +bug fix: structure command may not properly remove residues from structures (F. Reichmann) +bug fix: FRAME n setting frame to n - 1. (F. Reichmann) +bug fix: unitcell {0 0 0}; in state leaves unit cell on +bug fix: modulation of anisotropic parameters broken +bug fix: Jana2006 reader does not accept filter "MODAVE" +bug fix: msCIF with filter "MODAXES=X" broken + +JmolVersion="14.1.15_2014.05.04" + +new feature: reset PRINT + -- clears the output buffer (scriptWait, scriptEcho, evaluateVar +bug fix: color property x does not pass script check, so not allowed in web command box +bug fix: echo "@{xxx}" may fail +but fix: print @b fails for referred variable an array +bug fix: xxx.format("%8.-3p") does not work +bug fix: [array].format("%8.3p") does not work +bug fix: PDB Reader skips first ANISOU record +bug fix: SFTP not supported +bug fix: fix for measurements not updating with modulation x.x + +new feature: replace() + -- no arguments means "clean whitespace to single space and trim" + +new feature: replace(x, y, TRUE) + -- all occurrences of characters of x will be replaced with y. + +new feature: mCIF reader + -- Bilbao Crystallographic Server format + -- magnetic extension to CIF reader + +new feature: set vectorsCentered + -- centers vibration vector on atom + -- vector is never animated + -- useful for magnetic/spin properties + +new feature: select xyz > 1.0 + -- xyz, fxyz, fuxyz, uxyz, vxyz + -- uses length + +JmolVersion="14.1.14" +JmolVersion="14.1.14_2014.04.28" + +FEATURE CHANGE: Application Tools...Spectrum menu removed + -- Issue is that EPFL returns with a new 2D structure, + -- and Jmol would have to determine from that an atom selection map. + -- we are doing this with JSmol, but not yet with the application. + -- Bummer! + +new feature: getProperty(x, SQL_query) + -- Full SQL for any Jmol associative array. + -- Result is an array if x is an array. + -- example: + x = [ 1,2,3,{ "testing":"here","val":33 } ] + y = getProperty(x, "SELECT val WHERE testing LIKE 'here'") + show y + + [ 33 ] + + z = x[4] + show z + + z = { "testing":"here","val":33 } + + y = getProperty(z, "SELECT val WHERE testing LIKE 'here'") + show y + + 33 + +new feature: LIKE operator extended to atom expressions + --IS case-sensitive (unlike "=") + --examples: + load =1crn + select group like "G*" + print "x" like "X" // FALSE + +new feature: "like" operator, strings only: + a LIKE "x" a equals x + a LIKE "*x" a ends with x + a LIKE "x*" a starts with x + a LIKE "*x*" a contains x + +new feature: rich SQL logic in GETPROPERTY, getProperty(), and within(dssr,"xxxx.yyy..."): + -- syntax: [SELECT keys WHERE expression] + -- keys indicating only one key, such as "nt1", return just the value + -- keys may be a LIKE wildcard such as "nt*" or "*nt" or "*nt*" (but are NOT case sensitive) + also return just the value(s) + -- keys * or */* means "return all values as an associative array" + -- keys */nt1,nt2 means "return a new associative array including only keys nt1 and nt2" + -- keys */nt* means "return a new associative array including all keys starting with nt" + -- if drilling to this associative array from a list, * or */... returns an array of key/value pairs + -- expression may be any standard Jmol expression that does not involve actual Jmol variables + (instead, the variable names should all be the keys, and their values will be that given in the key:value pair) + -- example: + load files "=1ehz/dssr" + x = getProperty("auxiliaryInfo.models.1.dssr.basepairs"); + print getProperty(x,"[SELECT nt* WHERE bp='C-G']") + print getProperty(x, "[SELECT */nt* WHERE Saenger LIKE '19*']") + -- keys may be "dotted" -- modelProperties.FreqValue -- but in this case + the dotted key (FreqValue here) must be exact case. "modelProperties.freqvalue" would not work. + -- example: + load C6H6.smol + x = getProperty("modelInfo.models[select _ipt where modelProperties.PATH='Frequencies' and modelProperties.FreqValue > 3000]") + select modelIndex = x // 6 models selected + +new feature: JANA2006 reader adds M40 molecular group support + -- no TLS modulation + -- no local axes (third header line of pos# record) + +new feature: calculate structure dssr + -- fetches http://x3dna.bio.columbia.edu/dssr/?POST?opts=--hl%20--more&model=[pdb data] + -- builds auxiliaryInfo.models.n.dssr + -- displays summary report + -- complements calculate structure dssp, except it is done by the x3dna server at Columbia, not Jmol + +new feature: (application only) -a --autoAnimationDelay + -- delay time in seconds for press-and-hold operation of + toolbar animation buttons (default 0.2; set to 0 to disable) + +new feature: calculate hbonds structure + -- now includes DSSR-calculated bonds for nucleic acids + +new feature: select leadAtom + -- selects *.CA, *.P and terminal O in nucleotides + + +new feature: set backboneSteps TRUE + -- draws base pair steps between dssr-identified base pairs + +TRANSCRIPTION/DNA 06-MAR-92 1D66 +DNA RECOGNITION BY GAL4: STRUCTURE OF A PROTEIN/DNA COMPLEX +found biomolecule 1: D, E, A, B + +DSSR: a software program for Defining the Secondary +Structures of RNA from three-dimensional coordinates +v1.0.6-2014apr04, Xiang-Jun Lu (xiangjun@x3dna.org) +List of 19 base pairs +List of 1 helix +List of 4 stems +List of 1 coaxial stack +List of 3 internal loops + + +new feature: load =1msy/dssr + -- very simple RCSB/DSSR connection + -- loads both files: + FileManager opening 1 http://www.rcsb.org/pdb/files/1msy.pdb.gz + FileManager opening 1 http://x3dna.bio.columbia.edu/dssr?id=1msy + + load =1msy/dssr + set backboneSteps + backbone -0.2 + select within(dssr,"helices") + color blue + select within(dssr,"stems") + color red + select within (dssr,"singleStranded") + color white + select within (dssr,"multiplets") + color green + select within (dssr,"isolatedPairs") // was "lonePairs" + color orange + select leadatom + spacefill 1.5 + label %[group1] + font label 24 bold + set labeloffset 0 0 + color label grey + +new feature: select within(dssr,"subset") + -- subsets include + aMinorMotifs + basePairs + bulges + coaxialStacks + hairpinLoops + helices + internalLoops + junctions + kinkTurns + kissingLoops + lonePairs + multiplets + riboseZippers + singleStranded + stems + summary + -- optionally followed by ".n" where n is a number starting with 1 + -- optionally followed by ".linkedBy" for loops, bulges, and junctions + -- optionally followed by ".res1" or ".res2" + -- can accommodate SQL + -- results are cached for individual models + -- example: + + select within(dssr,"multiplets") + select within(dssr,"bulges.3") + select within(dssr,"bulges.3.linkedBy") + select within(dssr,"basePairs[SELECT res* WHERE twist > 1]") + +new feature: select x = [array or array variable] + -- implied OR + -- operators other than equals use implied AND + +new feature: DSSR server + -- load files "=1d66" + "=dssr/1d66" + + DSSR: a software program for Defining the Secondary + Structures of RNA from three-dimensional coordinates + v1.0.6-2014apr04, Xiang-Jun Lu (xiangjun@x3dna.org) + + -- uses new "concatenate" notation to combine data from two sources + -- after loading, try + + print getProperty("auxiliaryInfo.models.1.dssr") + + +new feature: array.keys.all + -- drills down in sequential or associative arrays + -- gives all keys as well as number of array elements: + + load files "=1d66" + "=dssr/1d66" + x=getProperty("auxiliaryInfo.models.1.dssr") + print x.keys.all + +basePairs +basePairs.19.DSSR +basePairs.19.LW +basePairs.19.Saenger +basePairs.19.bp +basePairs.19.id +basePairs.19.info +basePairs.19.name +basePairs.19.nt1 +basePairs.19.nt2 +coaxialStacks +coaxialStacks.1.helix +coaxialStacks.1.nts +coaxialStacks.1.nts.4.5.DSSR +coaxialStacks.1.nts.4.5.LW +coaxialStacks.1.nts.4.5.Saenger +coaxialStacks.1.nts.4.5.bp +coaxialStacks.1.nts.4.5.id +coaxialStacks.1.nts.4.5.info +coaxialStacks.1.nts.4.5.name +coaxialStacks.1.nts.4.5.nt1 +coaxialStacks.1.nts.4.5.nt2 +coaxialStacks.1.stemCount +helices +helices.1.basePairs +helices.1.basePairs.19.DSSR +helices.1.basePairs.19.LW +helices.1.basePairs.19.Saenger +helices.1.basePairs.19.bp +helices.1.basePairs.19.id +helices.1.basePairs.19.info +helices.1.basePairs.19.name +helices.1.basePairs.19.nt1 +helices.1.basePairs.19.nt2 +helices.1.info +internalLoops +internalLoops.3.count +internalLoops.3.dssrType +internalLoops.3.id +internalLoops.3.linkedBy +internalLoops.3.nts +internalLoops.3.nts.3.count +internalLoops.3.nts.3.nt +internalLoops.3.nts.3.seq +stems +stems.4.basePairs +stems.4.basePairs.5.DSSR +stems.4.basePairs.5.LW +stems.4.basePairs.5.Saenger +stems.4.basePairs.5.bp +stems.4.basePairs.5.id +stems.4.basePairs.5.info +stems.4.basePairs.5.name +stems.4.basePairs.5.nt1 +stems.4.basePairs.5.nt2 +stems.4.info + + + +new feature: array.join() + -- creates a flat array from an array of arrays: + -- example: + $x = [1,2,[3,4,5],[6,[7,8,9]]].join() + $show x + x = [ 1,2,3,4,5,6,7,8,9 ] + +new feature: DSSR output reading + -- Defining the (Secondary) Structures of RNA + -- see http://forum.x3dna.org/rna-structures/dssr-software-for-defining-the-%28secondary%29-structures-of-rna/ + -- brain-child of Xiang-Jun Lu (3dna.lu@gmail.com; Columbia University) + -- use system command x3d-dssr.exe --input=xxxx.pdb > xxxx.out + -- then in Jmol: + load files "xxxx.pdb" + "xxxx.out" + -- all DSSR information will be in auxiliaryInfo.models.dssr with the following keys: + + aMinorMotifs + basePairs + bulges + coaxialStacks + hairpinLoops + helices + internalLoops + junctions + kinkTurns + kissingLoops + lonePairs + multiplets + riboseZippers + singleStrandedSegments + stems + + -- all entries are lists. + -- most of these list entries have "nt" entries, and those + are nucleotide residue identifiers, so Jmol's + getProperty() "drill-down" capabilities allow for: + + x = getProperty("auxiliaryInfo.models.1.dssr.basepairs.nt") + select @{x} + +bug fix: x=3;select atomno=x can fail (E. Martz) +bug fix: JSmol deferred (image-covered) applet can produce unwanted multiple canvases (J. Gutow) + +bug fix: print "x" = "X" returns false; should be TRUE (broken in 14.0/1.10) +bug fix: script error in JavaScript xxx.spt stops all subsequent script processing (P. Bays) +bug fix: color property_x fails (broken in jmol-14.1.14_2014.04.16) (P. Bays) +bug fix: halos ON fails for small vdw radii (A. Herraez) +bug fix: CIF reader with bsModels fails + -- example: + load maleic.cif [3 5 7] +bug fix: reading concatenated files from PNGJ with model selected +bug fix: reading gzip files from PNGJ fails when concatenated +bug fix: group1 codes for nonstandard residues not read from mmCIF (_struct_ref_seq_dif.db_mon_id) or PDB (SEQADV) +bug fix: select group="ALA" fails due to select group ..... option +bug fix: getProperty("auxiliaryInfo") fails for JavaScript +bug fix: Gaussian FCHK file reader fails when no SP coefficients +bug fix: set defaultVDW not working (A. Herraez) +bug fix: color isosurface range broken (Lucy Cusinato) +bug fix: script compiler error: x.x*x.x requiring space: x.x * x.x (Alexander Rose) +bug fix: lost H atoms of PDB-designated water (E. Martz) +bug fix: mouse rotation can cause loss of model (E. Martz) +bug fix: Jana2006 reader not reading groups correctly +bug fix: functions called in script defined by script called by this script + must be lower case. (A. Rose) +bug fix: clickable atoms may not be considered visible for hover +bug fix: select color=red should be color="red" to allow + for variable after "color=" + +code: upgrade of Apache Commons CLI (Command Line Interface) to 1.2 from 1.0 + +code: T4 generalized as extending T3, allowing 4D mesh reading. +code: implementation of Andrew Hanson's 3D Ball Roll mouse algorithm + -- no significant practical improvement, but nicer mathematics + -- a bit more involved, but this is once per mouse move. Doesn't matter. + +JmolVersion="14.1.13" + +new feature: load files "xxx" + "yyy" + -- concatenates yyy onto xxx as a single string of file data + +new feature: Gaussian fchk file reader + +new feature: var x,y,z; + -- commas optional + -- similar to JavaScript + -- initializes the variable to "" + + +JmolVersion="14.1.13_2014.04.03c" + +bug fix: LOAD command cannot force XML types + -- load xmlvasp::vasprun.xml + -- load vasp::vasprun.xml + -- option without "xml" required only for Odyssey, as there are both Odyssey and XmlOdyssey +bug fix: application file open fails when preview is unchecked in Edit|Properties + +bug fix: vectors using vibration scale, not vector scale +bug fix: vector 0.01 misread as if integer "20" (pixel width) +bug fix: Gaussian fchk+freq needs to propagate bonding as well to modes +bug fix: JDX reading of older Chime-related ##PEAKASSIGNMENTS records + +bug fix: polyhedra display improperly when some vertex atoms are hidden (Nick Greeves) + +code: Huge refactoring for JavaScript and judicious post-Google Closure Compiler + editing serves to reduce code size by 5% -- to 1.38 MB for core.z.js + partially due to additional directory changes in JavaScript and + partially due to removing unnecessary final static variable defs. + (These are just constants that are never referred to.) + +JmolVersion="14.1.13_2014.04.02" + +code: JavaScript additional global reduction +new feature: load files "xxx" + "yyy" + -- concatenates yyy onto xxx as a single string of file data + +JmolVersion="14.1.13_2014.04.01d" + +bug fix: JmolAppletSigned0.jar missing export classes (POV-Ray, VRML, for example) +bug fix: Mac Spartan spardir reading + -- for web, use zipped up version of spardir + +new feature: Gaussian fchk file reader + +bug fix: A=[]; A[3] = 5 not working + +new feature: var x,y,z; + -- commas optional + -- similar to JavaScript + -- initializes the variable to "" + + +bug fix: var x not isolated to script context +bug fix: ellipsoid command broken + +JmolVersion="14.1.12" +JmolVersion="14.1.12_2014.03.30" + +changes since 14.1.11: + +new feature: JSpecView getSolutionColor fill/all/none/false + -- any combination of these four flags + -- fill: fill area under a VIS spectrum with color + -- none: remove fill + -- all: do this for all spectra, not just the selected spectrum + -- false: use interpolation method rather than curve fitting + (see jspecview.common.Visible.java for details) + +new feature: JSpecView PEAK command -- adds PEAK GC/MS "#1" + -- #1 here indicates "MS for first GC peak" + +summary: We now have general ZIP and image file (including PDF) creation in + JavaScript independent of Jmol itself. + +new feature; byteArray type + -- from format("byteArray", x) where + x is an integer array, or + x is a string starting with ";base64," + x is any other variable (converted to byte list of string equiv. + -- from binary associative arrays + +new feature: binary associative arrays + -- Any array containing "$_BINARY_$" as a key. + -- Values may contain raw byte array data, but need not. + -- Can be expanded or changed, just like any associative array. + -- Seen in string form when in a string context. + -- .type of elements will report "byteArray" + +new feature: x = write("PNGJ") + -- Creates a binary associative array equivalent to writing a PNGJ file + -- Contains keys "_IMAGE_", "JmolManifest.txt", "state.spt" + and all associated files. + +new feature: write VAR x "filename" + or write @x "filename" + -- Where x is a byteArray or a (possibly binary) associative array. + -- When x is a byteArray, writes binary data to a file. + -- When x is an associative array, creates a ZIP file + (or PNGJ file, if _IMAGE_ is present and is PNG format), + automatically converting strings starting with ";base64," to + byte arrays in the ZIP file. To do the same with x a binary + array, just use @{array(x)} instead of @x. + +new feature: x = load("myfile",true) + -- Creates a binary associative array variable x that contains the contents of + the file. + -- data are stored as byte arrays. + -- If the file is a standard file, the key "_DATA_" will hold the file data. + -- If the file is a PNGJ file, the key "_IMAGE_" will hold the image data, + and additional files are keyed by file name. + -- If the file is a zip file, the files are keyed by file name. + -- Note that x = load("myfile") without "true" loads the contents of + the file into x and, if the file is a PNGJ or ZIP file, just loads + the list of files in the collection, not the actual data. + +new feature: filter "ATOM" opposite of filter "HETATM" + +new feature: load ASYNC .... +new feature: script ASYNC .... + -- load and script ASYNC start a new asynchronous thread to load the file + and then continue after that. + -- JSmol/HTML5 only; others ignore + +new feature: Mol3D reader + -- using load "MOL3D::xxx.mol" one can force only 3D mol files to be read + -- 2D mol files will throw an error. + +new feature: show CHEMICAL STDINCHIKEY +new feature: show CHEMICAL STDINCHI + +new feature: load ":inchikey:xxxxx" + -- requires STANDARD InChIKey (as from {*}.find("chemical", "stdinchikey") + +new feature: x = {*}.find("chemical",type) + -- type is "smiles", "inchi", "stdinchi", "inchikey", "stdinchikey" + -- uses NCI/CADD CIR + -- Note that unlike SHOW CHEMICAL, "InChIKey=" and "InChI=" are dropped + -- Note that unlike SHOW CHEMICAL, trailing new line char is removed + +new feature: x = smilesString.find("chemical",type) + -- type is "smiles", "inchi", "stdinchi", "inchikey", "stdinchikey" + -- allows going directly from SMILES to other quantities + -- uses NCI/CADD CIR + -- Note that unlike SHOW CHEMICAL, "InChIKey=" and "InChI=" are dropped + -- Note that unlike SHOW CHEMICAL, trailing new line char is removed + +bug fix: NWChem reader broken +bug fix: JSpecView GC/MS issues +bug fix: JSmol callbacks should refer to "jmolApplet0" not "jmolApplet0_object" +bug fix: set cameraDepth not working + -- note that loading of PyMOL files affects this setting, which + is reset only using the INITIALIZE command +bug fix: getProperty() function does not recognize a list as a variable and returns it as a string +bug fix: Dsn6Reader.java misnamed, causing EDS map file load error + in JavaScript only. (I did not know that was even possible!) +bug fix: java.io.dataStreamReader.readShort() does not take into + account JavaScript equivalence of short and int, causing + "-1" to be read as 65535. +bug fix: minimum modulationScale set to 1; should be 0.1. +bug fix: translucent echo backgrounds broken +bug fix: filter "HETATM" does not work +bug fix: write XYZ broken by changes to the way arrays + are shown with the PRINT command +bug fix: x = adfjladj(3) crashes Jmol +bug fix: x[0] = "tst" "here" "now" should cause script exception +bug fix: isosurface MOLECULAR delivers wrong surface +bug fix: spacefill ionic not working +bug fix: set cameraDepth disabled +bug fix: some translations not being carried out. +bug fix: msCIF reader not accepting normalized commensurate Fourier vectors +bug fix: JSmol/HTML MSIE local installation AJAX working again (still no binary files) + +code: variable compression issues in Jmol and JSV +code: org.jmol.io and org.jmol.io2 consolidated +code: select water hard-coded for speed (2 x faster) +code: careful attention to loading of biomolecules results in 160K core bio load savings +code: JavaScript core load reduced by 2% (30KB) by changing high-frequency global name "viewer" to "vwr" +code: refactoring of image writing code to javajs.img for general use +code: refactoring of zip code into javajs.util for general use +code: refactoring of minimization code saves 10KB +code: isosurface MOLECULAR speed-up by a factor of 10. + -- better handling of constants during iteration + -- better identification of unnecessary edges and faces + + +JmolVersion="14.1.12_2014.03.27b" + +bug fix: NWChem reader broken + +new feature: JSpecView PEAK command -- adds PEAK GC/MS "#1" + -- #1 here indicates "MS for first GC peak" + +bug fix: JSpecView GC/MS issues +bug fix: JSmol callbacks should refer to "jmolApplet0" not "jmolApplet0_object" +bug fix: set cameraDepth not working + -- note that loading of PyMOL files affects this setting, which + is reset only using the INITIALIZE command + +code: variable compression issues in Jmol and JSV + +JmolVersion="14.1.12_2014.03.21" + +bug fix: getProperty() function does not recognize a list as a variable and returns it as a string + +code: org.jmol.io and org.jmol.io2 consolidated +code: select water hard-coded for speed (2 x faster) +code: careful attention to loading of biomolecules results in 160K core bio load savings +code: JavaScript core load reduced by 2% (30KB) by changing high-frequency global name "viewer" to "vwr" +code: refactoring of image writing code to javajs.img for general use +code: refactoring of zip code into javajs.util for general use +code: refactoring of minimization code saves 10KB + +summary: We now have general ZIP and image file (including PDF) creation in + JavaScript independent of Jmol itself. + + +JmolVersion="14.1.12_2014.03.19" + +new feature: x= format("JSON", data) + -- simple way to generate JSON code. + +new feature: x = format("base64", data) + -- creates base64-encoding of the data + -- prepends the string with ";base64," + +new feature; binary byte array + -- from array(s) where s starts with ";base64," + -- from binary associative arrays + +new feature: binary associative arrays + -- Any array containing "$_BINARY_$" as a key. + -- Values may contain raw byte array data, but need not. + -- Can be expanded or changed, just like any associative array. + -- Seen in string form when in a string context. + -- .type of elements will report "byteArray" + +new feature: x = write("PNGJ") + -- Creates a binary associative array equivalent to writing a PNGJ file + -- Contains keys "_IMAGE_", "JmolManifest.txt", "state.spt" + and all associated files. + +new feature: write VAR x "filename" + or write @x "filename" + -- Where x is a byteArray or a (possibly binary) associative array. + -- When x is a byteArray, writes binary data to a file. + -- When x is an associative array, creates a ZIP file + (or PNGJ file, if _IMAGE_ is present and is PNG format), + automatically converting strings starting with ";base64," to + byte arrays in the ZIP file. To do the same with x a binary + array, just use @{array(x)} instead of @x. + +new feature: x = load("myfile",true) + -- Creates a binary associative array variable x that contains the contents of + the file file. + -- data are stored as raw bytes. + -- If the file is a standard file, the key "_DATA_" will hold the file data. + -- If the file is a PNGJ file, the key "_IMAGE_" will hold the image data, + and additional files are keyed by file name. + -- If the file is a zip file, the files are keyed by file name. + -- Note that x = load("myfile") without "true" loads the contents of + the file into x and, if the file is a PNGJ or ZIP file, just loads + the list of files in the collection, not the actual data. + + + + +JmolVersion="14.1.12_2014.03.18" + +bug fix: Dsn6Reader.java misnamed, causing EDS map file load error + in JavaScript only. (I did not know that was even possible!) +bug fix: java.io.dataStreamReader.readShort() does not take into + account JavaScript equivalence of short and int, causing + "-1" to be read as 65535. + +JmolVersion="14.1.12_2014.03.17" + +bug fix: minimum modulationScale set to 1; should be 0.1. + +new feature: filter "ATOM" opposite of filter "HETATM" + +bug fix: translucent echo backgrounds broken +bug fix: filter "HETATM" does not work +bug fix: write XYZ broken by changes to the way arrays + are shown with the PRINT command +bug fix: x = adfjladj(3) crashes Jmol +bug fix: x[0] = "tst" "here" "now" should cause script exception + +JmolVersion="14.1.12_2014.03.16" + +code: isosurface MOLECULAR speed-up by a factor of 10. + -- better handling of constants during iteration + -- better identification of unnecessary edges and faces + +bug fix: isosurface MOLECULAR delivers wrong surface + +JmolVersion="14.1.12_2014.03.13" + +bug fix: spacefill ionic not working +bug fix: set cameraDepth disabled + +JmolVersion="14.1.12_2014.03.10" + +bug fix: some translations not being carried out. + +new feature: load ASYNC .... +new feature: script ASYNC .... + -- load and script ASYNC start a new asynchronous thread to load the file + and then continue after that. + -- JSmol/HTML5 only; others ignore + +bug fix: msCIF reader not accepting normalized commensurate Fourier vectors + +bug fix: JSmol/HTML MSIE local installation AJAX working again (still no binary files) + +new feature: Mol3D reader + +new feature: show CHEMICAL STDINCHIKEY +new feature: show CHEMICAL STDINCHI + +new feature: load ":inchikey:xxxxx" + -- requires STANDARD InChIKey (as from {*}.find("chemical", "stdinchikey") + +new feature: x = {*}.find("chemical",type) + -- type is "smiles", "inchi", "stdinchi", "inchikey", "stdinchikey" + -- uses NCI/CADD CIR + -- Note that unlike SHOW CHEMICAL, "InChIKey=" and "InChI=" are dropped + -- Note that unlike SHOW CHEMICAL, trailing new line char is removed + +new feature: x = smilesString.find("chemical",type) + -- type is "smiles", "inchi", "stdinchi", "inchikey", "stdinchikey" + -- allows going directly from SMILES to other quantities + -- uses NCI/CADD CIR + -- Note that unlike SHOW CHEMICAL, "InChIKey=" and "InChI=" are dropped + -- Note that unlike SHOW CHEMICAL, trailing new line char is removed + +JmolVersion="14.1.11" +JmolVersion="14.1.11_2014.03.08" + +FEATURE CHANGE: associative array .count, .length, .lines removed + -- specifically for associative arrays, nothing more + -- these were unnecessary equivalents of .size + -- change will not be incorporated into Jmol 14.0 + +new feature: JSpecView readers for ACD/Labs annotated MS, IR, Raman, and UV/VIS + -- displays fragments for MS (highlights atoms) + -- highlights atoms involved in an IR/Raman stretch + -- UV/VIS and Raman untested + +new feature: JSpecView and Jmol read ACD/Labs assigned spectra block JDX files. + -- 2D MOL files with missing hydrogens on hetero atoms. + -- fully synced + -- drag-drop enabled + +new feature: associative array standard "dot" notation + -- a.test = 33 + -- print a.test + -- caveat: cannot do this with a.keys, a.size, or a.type + -- not implemented in Jmol 14.0 because of the feature change + +new feature: associative array alternative ".." syntax + -- same as JavaScript and Java, but ".." instead of "." + -- for example: + a["test"] == a..test + +new feature: .covalentRadius added as more appropriate alias for .covalent + +new feature: .bondingRadius added as more appropriate alias for .ionic + +new feature: set bondingVersion + -- 0: Jmol default, from OpenBabel 1.100.1 + -- uses a mix of covalent and ionic radii for autobonding + + -- 1: Pyykko and Atsumi, 2009 + -- changes the distance criteria for autobonding to be specifically covalent + + -- saved in state only for file loading; should be unchanged after state loading. + +new feature: color(color1, color2, n, asHSL) + -- returns a color scheme as a string + -- colors can be of any nature -- string or point, name or rgb + -- n colors; simple interpolation from color1 to color2 + -- asHSL must be TRUE or FALSE; + -- when TRUE, uses hue/saturation/luminance instead of rgb gradient + + -- example: + + $ print color("white", "red", 5, false) + + [xffffff][xffbfbf][xff7f7f][xff3f3f][xff0000] + + $ print color("red", "blue", 5, true) + + [xff0000][xffff00][x00ff00][x00ffff][x0000ff] + + $ set propertyColorScheme color("yellow","black",50,true) + $ color property temperature + + +new feature: added simpler associative array notation: [key:value,...] + -- no quotes required + -- supplements {"key":value,...} where quotes are still required + due to conflict with atom set chain descriptors such as {a:b}. + +new feature: catchable THROW + + -- as in Java or JavaScript, allows a way of jumping + out of a process. + + -- outside of try/catch gives the expected error report: + + $ print "testing" + $ throw "testing here" + $ print "we will never see this" + + testing + script ERROR: testing here + ---- + throw >> "testing here" << + + -- passes a string as the variable thrown_value + + $ print thrown_value + + testing here + + -- can be trapped with try/catch: + + try{ + print "testing" + throw "testing here" + print "continuing" + } catch(e) { + print "thrown_value=" + thrown_value; + } + + results in: + + testing + thrown_value=testing here + +new feature: asynchronous resumable processes + + -- THROW CONTEXT contextName + + -- throws a catchable error, but in the process of doing so, + creates a script context that allows RESUMING + at the point of the throw, unlike anything in JavaScript + or Java (or perhaps like a debug mode). + + -- if within a try/catch phrase, is handled by catch. + in which case the error message is simply the context name. + + -- if not within a try/catch phrase just reports + + to resume, enter: &contextName + + -- essentially provides a callback into the running + script, so you could, for example, put a running script + on hold while you load a file, check variables, etc., + then continue. + + -- can be resumed using RESUME CONTEXT or just & followed + by the name of the context: + + &test + + resume context &test + + -- replaces PAUSE/RESUME, now deprecated. + + -- The current context returns to the highest level, however + the variables in the context that was thrown are + accessible as though the context variable was an + associative array. So, for example, if we have + + function f(a, b, c) { + var x = 5 + throw context testing + print "x=" + x + } + + f(1,2,3) + print "done" + + The context will be saved as the variable "testing", and + we can then test all the variables in that saved context, + (and change them before continuing): + + print testing["x"] + + 5 + + testing["x"]++ + + print testing + + _path : [script] >> function f + _retval : 0 + + a : 2 + b : 2 + c : 3 + x : 6 + + -- contexts can be restored using + + &contextName + + In the above case, we would get the report: + + x=6 + done + +new feature: SAVE CONTEXT contextName + -- similar to THROW, but does not stop processing. + So in the above example, if we change THROW to SAVE, + the processing continues, but after it has completed, + we can change context variables and run it again. + +new feature: show SAVED + -- same as show SAVE + +new feature: delete $SAVED savedName + + delete $SAVED Context_xxxx + + -- $ is important; case is not. + -- allows selective deletion of saved objects + -- Contexts always start with "Context_" but the subname + "xxxx" in this case will work as well. + +new feature: RESUME with arguments is synonymous with RESTORE + +new feature: Better idea for THROW: + throw "this is an error" + throw x + -- that is, throw is like PRINT, not LABEL + +bug fix: applet language localization skipping translations containing \" +bug fix: application language localization does not include defs defined for JmolApplet +bug fix: JSpecView/JSME connection with simulated and ACD/Labs annotated spectra +bug fix: JSpecView loading simulation now compatible with synced applets +bug fix: drag/drop not working for JSV applet +bug fix: solid-state NMR calc (Magres) should not apply "nearest-atom-only" + algorithm for measure ALL in dipolar coupling measurements +bug fix: state contains: zap;load /*data*/ data "append inline" +bug fix: zoomto without time goes over 2 seconds, not 1 second +bug fix: print "id" + "x" fails (back to 13.2 at least) +bug fix: animFrameCallback not reporting for each morph +bug fix: inline-if fails if not at end of statement + -- Bug goes back to at least 11.8 +bug fix: Jmol math fix for new . notation. + -- needs testing + -- examples: + + -- note that .. notation works with numbers + and in all expressions + + b = [1 2 3 [ 1 2 [1 2 [1 [testing:"here"] 3]]]] + print b..4..3..1 + b..2 = 34 + + b..2..1 = 33 + print b..2..1 + + -- alternative single dot notation also on both sides + -- associative arrays only + -- no numbers here + + b = [testing:"here"] + b.testing= 33 + print b.testing + + -- note that sequential brackets for arrays + work only on the left side of an assignment + + b = [ [2] 10 11 ] + b[1][2]= 33 + #NOT print b[1][2] (that's a range) + + b = [1 2 3 [ 1 2 [1 2 [1 [testing:"here"] 3]]]] + b[4][3][3][2].more = "yes" + #NOT print b[4][3] (that's a range) + + -- extends to matrices + + b = quaternion()%"matrix" + b[1] = [1 2 3] + b[-1] = [1 2 3] + b[2][3] = 2 + + -- extends to string + + b = "testing" + b[1] = "T" + b[1][3] = "T" + b["t"] = "T" + + -- extends to points + + p = {3 3 3} + p.x = 10 + p.y = 5 + p.z = 3 + + -- extends to bitsets + -- single dots only, not a["color"] or a..color + + a = {*} + a.color = "red" + a.property_x = {*}.temperature.all + + +bug fix: state reading broken in most recent version at chemapps +bug fix: ++/-- compatibility with no-comma arrays +bug fix: print ++b["test"] fails +bug fix: ++b["test"] fails +bug fix: a[6][8] = "q" not working correctly when a is a string +bug fix: {*}.covalent is misleading in that it is a mix of covalent and ionic bonding + distances. As such, I have replaced it with data at the Blue Obelisk Data Repository + which are from + + Pyykkö, P. and Atsumi, M. (2009), + Molecular Single-Bond Covalent Radii for Elements 1\u2013118. + Chem. Eur. J., 15: 186\u2013197. doi: 10.1002/chem.200800987 + +bug fix: try { ... throw ...} catch {....} continues through catch when resumed. +bug fix: anonymous context { ..... } not closed +bug fix: JSON of 4x4 matrix (M4) fails +bug fix: modelKitMode broken for Java in 14.1.10 + +code: unused obrador package removed from application +code: JavaScript org.jmol.modelset->JM, org.jmol.modelsetbio->JMB +code: org.jmol.util.Quaternion moved to javajs.util.Quat +code: Refactoring of script.ScriptEvaluator to make it more manageable: + + * ScriptEval -- entry point and script command code + * + * extends ScriptExpr -- expression parsing + * + * extends ScriptParam -- parameter parsing + * + * extends ScriptError -- error handling + * + * scriptext.CmdExt -- optionally loaded, less-used commands + * scriptext.MathExt -- optionally loaded, less-used functions + * scriptext.SmilesExt -- optionally loaded methods for cmds and math + +code: faster CONNECT [{...}] process for specified bonds + +JmolVersion="14.1.10" +JmolVersion="14.1.10_2014.02.20" + +new feature: THROW command + -- accepts unquoted string or @x simple variable substitution + -- examples: + throw this is an error + or + x = "this is an error" + throw @x + resulting in: + this is an error + ----line 3 command 3 of try: + throw >> "this is an error" << + ----line 10 command 1 of t.spt: + end + ---- + script "t.spt" + + +JmolVersion="14.1.10_2014.02.19" + +bug fix: color atoms formalcharge not saved in state +bug fix: averageAtomPosition never updated. +bug fix: load of model with one atom does not set center to that atom +bug fix: ==/!= comparison not appropriate for arrays or strings + -- string/string comparison should be case sensitive, but wasn't + -- (you can use x %9999 == y %9999 to force no-case comparison) + -- array/array comparison should be element by element and exact + -- assoc.array/assoc.array should be key/value by key/value and exact + -- int/decimal comparison should be simply numerical, always + -- decimal/decimal comparison should be able to be done without the < 1e-6 cutoff + -- you can now use [x] == [y] for exact numerical comparison + -- string/int and string/decimal comparison should also only be outside of arrays + -- all approximations for type1/type2 should be only outside the context of arrays + +bug fix: array/string assignment broken in 14.1.9 + -- a[2] = ... + -- a["testing"] = ... + +bug fix; HTML5 popup frank mini-menu not implemented +bug fix: HTML5 popup menu checkboxes not turning off +bug fix: zap or zap {atom expression} broken + -- does not affect ZAP command without parameters + +JmolVersion="14.1.9" +JmolVersion="14.1.9_2014.02.18" + +bug fix: recently released 14.0.8 introduced a math bug that caused + y = "test" + x.f() to be evaluated as ("test" + x).f() +bug fix: long-time multiple unary minus bug (at least 6 years!) + that print 3 +(- -3) evaluates to 0, not 6. + +new feature: WRITE "filename" AS type + -- allows setting type at end of WRITE command using AS + -- for example: + + write "t.png" as PNGJ + + -- meant only for very simple production; no additional parameters. + -- all parameterized cases must use standard notation + write PNGJ 300 300 "t.png" + + +JmolVersion="14.1.8_2014.02.17" + +bug fix: JSpecView issues with navigating through spectra +bug fix: PyMOL reader multiple bond view +bug fix: popup menu fixes +bug fix: bond/draw/isosurface picking broken +bug fix: [1 -5 6 -2] gives [1 (-5+6-2)] instead of [1 -5 6 -2] + +bug fix: set defaultLoadScript "{0 0 0}" actually sets that to {1 1 1} + -- goes way way back to early Jmol math where there were no point-type variables +bug fix: PyMOL reader update for Version 1700 lacking setting 83. +bug fix: -m option not working with Jmol.jar + +bug fix: PNGJ files within ZIP collections not being read. + -- full PNGJ models can be extracted from MS Word .docx files. + -- for example: + show file "t.docx" + [Content_Types].xml + _rels/.rels + word/_rels/document.xml.rels + word/document.xml + word/media/image1.png + word/theme/theme1.xml + word/settings.xml + word/webSettings.xml + docProps/core.xml + word/styles.xml + word/fontTable.xml + docProps/app.xml + load t.docx|word/media/image1.png + +new feature: JSmol Info.z, Info.zIndexBase +bug fix: tensor("efg", "value") should return sparce array, not dense for missing tensors +bug fix: JSmol now allows writing POVRAY, MAYA, IDTF, VRML, etc. + both from Java and from HTML5 +code: reworking of export classes +bug fix: label @{math expression...} not working +bug fix: interpretation of x and @x in select commands and {...} phrases + -- Variable substitution has been unintuitive and inconsistent. + For instance: + + x = "C or T" + + select @x -- works fine + print {@x} -- fails + + The problem is the use of @ to reference the variable NAMED BY another + variable within a math expression (print context) but not a select context. + For instance: + + y = 3 + x = "y" + print x --> "y" + print @x --> 3 + + Such referencing is important for math expressions, but the + extension of this to atom expressions is not necessary and + not generally useful. + -- The current situation is as follows: + + x = "A or T" + select @x --> all A and T groups + print {@x} --> nothing (because @x is "the contents of the variable 'A or T'") + + -- This fix simplifies the situation by not allowing variable-variable + referencing within atom expressions bounded by braces, just like + within implicit atom expression commands (select, display, hide, delete, etc.). + -- The result is much more consistent. The following do exactly what + you think they would do: + + x = "A or T" + select @x + print {@x} + + -- The current way of doing this, by defining a temporary atom + expression using the DEFINE (or @) command still works: + + x = "A or T" + @y @x + select y same as select @x + + -- Note that the difference between "select x" and "select @x" + may be significant: + + ala = "cys" + + select ala --> selects all alanines + select @ala --> selects all cysteines + + + +code: way more efficient for loop -- loop overhead decreased by > 80% +bug fix: for(i in ...) does not exit when i is assigned a value, as per documentation +bug fix: for(x in ...) command broken and also quite inefficient. + + +JmolVersion="14.1.8_dev_2014.02.06" + +new feature: set cartoonRibose + -- draws in ribose rings, with facets showing puckering + -- connects via C4'-C5'-O5'-P explicitly + -- shows C3'-O3' for reference. + -- disables cartoonBaseEdges (Leontis-Westhof Edges) + -- disabled by SET cartoonBaseEdges ON + -- suggested by Rick Spinney, Ohio State + +new feature: anim frame [a,b,c,d] works with negative numbers to indicate ranges: + -- anim frame [1, -5, 10, -6] --> [1,2,3,4,5,10,9,8,7,6] + -- read as "1 through 5 and then 10 through 6" + +new feature: Tinker file reader (and FoldingXYZ reader upgrade) + -- see http://dasher.wustl.edu/tinker/ + -- Can use Tinker:: but this is only required if first line is JUST an atomCount + -- accommodates older Tinker format with n-1 atoms for atomCount + -- allows for trajectories and desired model number + +new feature: (actually 13.1 but undocumented) animation frame [ 51 50 49 48 47 46 45 (etc) 27 1 2 3 4 5 6 7 (etc)....] + +new feature: x = compare({atomset1}, {atomset2}, "MAP") +new feature: x = compare({atomset1}, {atomset2}, "MAP", "all") +new feature: x = compare({atomset1}, {atomset2}, "MAP", "best") +new feature: x = compare({atomset1}, {atomset2}, "MAP", "H") +new feature: x = compare({atomset1}, {atomset2}, "MAP", "allH") +new feature: x = compare({atomset1}, {atomset2}, "MAP", "bestH") + -- generates one or more correlation lists based on non-aromatic SMILES + -- optionally includes H atoms + -- optionally generates all possible atom mappings + -- returns int[][] = [ [a1 b1],[a2 b2],[a3 b3],... ] + where an and bn are integer atom indices + or list when "all" option is chosen. + -- the following will generate one atom correlation + map for two structures including hydrogen atoms: + load files "a.mol" "b.mol" + x = compare({1.1} {2.1} "MAP" "H") + (useful for 2D/3D model atom matching) + -- the following compares the model of caffeine from NCI to that from PubChem: + load $caffeine;load append :caffeine;frame * + select 2.1; label %[atomIndex] + compare {1.1} {2.1} SMILES rotate translate + x = compare({1.1}, {2.1}, "MAP" "bestH") + for (a in x) {a1 = a[1];a2=a[2];select atomindex=a1;label @a2} + +new feature: compare {model1} {model2} SMILES + -- no need to give SMILES; Jmol can generate it from {model1} + +new feature: x = {*}.find("SMILES", "H") + -- generates SMILES with explicit H atoms + +bug fix: substructure() function using SMILES instead of SMARTS, so only full structures; +bug fix: better error trapping and messages in SMILES-related methods +bug fix: make webexport discovery of path to Jmol.jar and jsmol.zip more robust. +bug fix: getProperty extractModel not honoring subset +bug fix: set pdbGetHeader TRUE does not capture REMARK3 REMARK290 REMARK350 +bug fix: getProperty("JSON",....) should wrap value in {value:...} +bug fix: MO persistent translucency broken in 11.x +bug fix: show MENU write MENU load MENU all broken in 12.2 +bug fix: {*}[n] should be empty if nAtoms <=n +bug fix: abinit reader was nonfunctional +bug fix: assign atom into into PDB file loses atom names +bug fix: y = ([3])[1][1] should be [3] not 3 +bug fix: break n nonfunctional +bug fix: format() and label() functions limited to 4 arguments; should be unlimited +bug fix: errors in paths to js code in web export templates. + +code: JSmol: applying atom mapping between mol2D and mol3D for viewSets +code: refactoring to enable SWING in JavaScript for all menus +code: methods from jcampdxReader extracted to org.jmol.jsv.JDXMOLParser +code: reader overhaul for setting atom coordinates in a consistent fashion + + +JmolVersion="14.1.7" + +JmolVersion="14.1.7_dev_2014.01.20" + + bug fix: 14.0.6 fatally bugged -- unitcell and echo rendering, getProperty + +JmolVersion="14.1.6" + +bug fix: translucent geosurface was turned off; + +JmolVersion="14.1.6_dev_2014.01.19" + +bug fix: Jmol2.js should have commented lines in Jmol.Info but does not +bug fix: JSpecView cannot close "Options...Show Header" panel in HTML5 +bug fix: select visible not right after this sequence: + + load $C\C=C\CC + select _C + wireframe off + spacefill off + display !_H + select visible // 5 (but nothing is showing) + +bug fix: for (a in {displayed}) { a.property_x = 3 } construction fails +bug fix: FireFox browser in mode to open files in new tabs in the background + fails to load second applet of a page unless Jmol.__execDelay is more than 55 ms + and the user specifically right-clicks a link to open a page in a new tab. +bug fix: write ....?POST? fails +bug fix: getproperty broken in 14.1.6_dev_2014.01.15 +bug fix: GETPROPERTY command and function can return SV.toString() rather than property escaped value +bug fix: getProperty for certain arrays returns string "[object Array]" +bug fix: Jmol2.js not working when there is no jmolInitialize() +bug fix: _DirectDatabaseCalls not including NMR prediction site +bug fix: reading of *co*mmensurately modulated structures (e.g. Lilianite) working +bug fix: wrong name for coverimage in WebExport. + +code: refactored matrix classes javajs.util.M34/M3/M4 +code: JSpecView upgrade includes + -- operational applet from jnlp + -- append options from menus + -- file helper for local files using load ? + -- file helper for URL using load http://? + -- file helper for simulation using load $? + code: reader refactoring isolates symmetry aspects + +update: images and instructions for WebExport + +JmolVersion="14.1.5" +JmolVersion="14.1.5_dev_2014.01.09" + +bug fix: LCAOCartoon translucency broken +bug fix: translucent backbone broken +bug fix: pqr,p2n readers broken +bug fix: isosurface map property xxx can fail if surface is a + fragment that (somehow) has a point not associated with + an underlying atom. + + + +JmolVersion="14.1.4" +JmolVersion="14.1.4_dev_2014.01.05" + +bug fix: PDB byChain, bySymop not supported. + +//TODO: Add BSPF for symmetry distance checking in AtomSetCollection to speed special-position checking + +new feature: {xxx}.distance.all({yyy}) returns float[][] of values + +new feature: expanded unit cell ijk notation: + - 111 - 1000 --> center 5,5,5; range 0 to 9 or -5 to +4 + - 1000000 - 1999999 --> center 50,50,50; range 0 to 99 or -50 to +49 + - 1000000000 - 1999999999 --> center 500, 500, 500; range 0 to 999 or -500 to +499 + +JmolVersion="14.1.3" +JmolVersion="14.1.3_dev_2013.12.29" + +new feature: filter "MODCELL=x" + -- incommensurate composite readers Jana2006 and CIF + -- sets base cell to specified subsystem + +new feature: MSCIF reader now allowing up to d=10; was d=6 + +new feature: escape pressed cancels pending measurement + +new feature: {xxx}.getProperty("yyy") + -- only for FIRST atom + -- returns getProperty("atomInfo.yyy", {xxx})[1] (not xxx.yyy.all) + +new feature: unitcell {atomset} + -- unit cell based on first atom of atom set. + -- canceled by any unitcell {none} + or other unitcell command other than on/off and width + +new feature: altloc set for msCIF _atom_site_subsystem_code + -- sets % and also configuration + -- prevents covalent bonding between subsystems + +new feature: select ON ; select OFF + -- same as selectionHalos ON/OFF + -- deprecates selectionHalos command + +new feature: atomSet1.distance.min(atomSet2, TRUE) +new feature: atomSet1.distance.min(point, TRUE) +new feature: atomSet1.distance.max(atomSet2, TRUE) +new feature: atomSet1.distance.max(point, TRUE) + -- returns single closest/furthest atom in atomSet1 from point or atomSet2 + +bug fix: incommensurate composite structures not packed into unit cell properly +bug fix: incommensurate composite structures - wrong unit cell for d > 1 +bug fix: if load "" fails, last file name is lost +bug fix: print a (operator) b not processing string parameter B consistently across operators +bug fix: composite structures reading for JANA2006 M50/M40 files +bug fix: capture time slightly off; needs 50 ms addition. This may vary with rendering speeds. +bug fix: CIF reader goes into molecular mode even if geom_bond block is all "? ? ? ? ?" +bug fix: n-d incommensurate modulated composite structures (preliminary testing) +bug fix: getProperty atomInfo broken for modulated atoms +bug fix: x.distance.min(y) broken + +code: generic javajs.util.Matrix class added based on Jama code for inversion using L/U decomposition + +JmolVersion="14.1.2" +JmolVersion="14.1.2_2013.12.13" + +new feature: JavaScript: JSmol api Jmol.evaluateVar(applet, expression) + -- better than Jmol.evaluate because result is a JavaScript variable, not a string. + -- DEPRECATING JSmol api Jmol.evaluate(applet, expression) + +new feature: getProperty("JSON", ....) + -- returns JSON code for property + -- allows JavaScript: x = Jmol.getPropertyAsArray("variableInfo","some expression") + +new feature: getProperty variableInfo + -- allows retrieval of variables in Java or JSON format + -- evaluates expression + -- defaults to "all" + +new feature: modulation adjustable by q and t, up to d=3 + // modulation on/off (all atoms) + // moduation {atom set} on/off + // modulation int q-offset + // modulation x.x t-offset + // modulation {t1 t2 t3} + // modulation {q1 q2 q3} TRUE + +new feature: pickedList -- ordered array of recently picked atoms + -- can be used the same as the PICKED variable, + but that is ordered sequentially, not temporally + -- twice clicking off structure clears the list + -- @{pickedList}[0] last-picked atom + -- @{pickedList}[-1] next-to-last-picked atom + -- @{pickedList}[-1][0] last two picked atoms + +new feature: array.pop(), array.push() + -- similar to JavaScript + -- for example: + a=[];a.push("testing");print a.pop() + + // create a distance t-plot + + at = [] // t points + am = [] // distance measurements + + var p1 = a.modulation(1e10)[1] + var p2 = a2.modulation(1e10)[1] + for (var i = 0; i <= 50; i++) { + var t = i / 50.0; + at.push(t); + var b1 = a.modulation(t)[1]; + var b2 = b.modulation(t)[1]; + var m = distance((p1 + b1).xyz, (p2 + b2).xyz); + am.push(m); + } + d = at.add("\t", am) + +new feature: modulation scale x.x +new feature: caption "xxxxx" x.x -- number of seconds to run +new feature: modulation 0.2 // sets t-value + +new feature: select ON/OFF atom-set + -- turns selection halos on or off as well as doing the selection + -- convenience only + -- for example: + + select on _O2 + select off * + +new feature: pt1.mul3(pt2) + -- returns {pt1.x*pt2.x, pt1.y*pt2.y, pt1.z*pt2.z} + -- if both are not points, reverts to simple multiplication + +new freature: array.mul3(pt2) + -- applies mul3 to all elements of array + +new feature: {atomset}.modulation(type, t) + -- delivers P3 (displacement modulation) + -- implemented only for type="D" (optional) + -- optional t is 0 by default + -- if t is missing, the unmodulated displacement is returned + +bug fix: modulation not distinguishing between q and t; +bug fix: modulated measurements not working + +bug fix: not skipping set defaultLattice "{NaN NaN NaN}" +bug fix: isosurface map atomic orbital fails + +bug fix: vibrational display of modulation with distances doesn't update +bug fix: vibration off causes unnecessary warning in console +bug fix: draw symop broken + +bug fix: array.mul(matrix3f) crashes Jmol + +bug fix: select symop=1555 broken +bug fix: set picking dragSelected not working + +code: refactored CifReader, separating out MMCifReader and MSCifReader + +code: minor renaming/refactoring of methods in SV + +code: adds javajs.api.JSONEncodable interface + -- super-simple implementation in org.jmol.script.SV + -- allows implementations of javajs to deliver custom JSON results + +JmolVersion="14.1.1_2013.12.04" +JmolVersion="13.3.9_dev_2013.12.04" + + +new feature: Jmol._j2sLoadMonitorOpacity (default 55) + +new feature: load() function, as in print load("xxx"), limited local file reading in applet: + -- no root-directory files + -- no files without extension + -- no files with any "/." in path + +new feature: JAR files securely signed + +new feature: applet JAR files include JNLPs (Java Network Launch Protocols) for local file loading + +new feature: JSmol URL options _USE= _JAR= _J2S= overrides for Info data + +new feature: (was present but undocumented) print quaternion([array of quaternions]) + -- returns spherical mean a la Buss and Fillmore (http://www.math.ucsd.edu/~sbuss/ResearchWeb/spheremean/) + +new feature: print quaternion([array of quaternions], true) + -- returns standard deviation for spherical mean a la Buss and Fillmore (http://www.math.ucsd.edu/~sbuss/ResearchWeb/spheremean/) + -- units are angular degrees + +new feature: named quaternion modulus values + -- print quaternion(1,0,0,0)%"matrix" + -- options include w x y z normal eulerzxz eulerzyz vector theta axisx axisy axisz axisangle matrix + +new feature: set celShadingPower + -- sets strength of cel shading + -- integer values + -- default 10 is a thick line + -- 5 is a fine line + -- 0 turns cel shading off + -- negative value removes interior shading -- outline only + -- operates on pixel based on normal to light source (power > 0) or user (power < 0) + -- sets color to background contrast (black or white) when + normal_z < 1 - 2^-(|celShadingPower|/10) + +new feature: mmCIF reading reports _citation.title in Jmol scripting console + +new feature: minimize SELECT {atomset} ONLY + -- ONLY option excludes all other atoms + +new feature: minimize {atomset} + -- implicit SELECT and ONLY + +new feature: "extensions" directories in JSmol for contributed JS and SPT scripts + -- jsmol/js/ext + -- jsmol/spt/ext + +new feature: load ... filter "ADDHYDROGENS" + -- local set pdbAddHydrogens just for one load command + +new feature: compare {1.1} {2.1} BONDS SMILES + +new feature: list = compare({atomset1} {atomset2} "SMILES" "BONDS") +new feature: list = compare({atomset1} {atomset2} SmartsString "BONDS") + +new feature: write JSON xxx.json + +new feature: [#210] JSON {"mol":...} reader + -- example (penicillin; no actual line breaks) + {"mol":{ + "_is2D":false, + "_scale":{"x":1,"y":1,"z":1}, + "a":[{"x":3.9236999,"y":-0.9222,"z":0.1835},{"x":3.2479,"y":-3.2106004,"z":0.3821},{"x":5.1731,"y":-1.3284999,"z":-0.24640003},{"x":4.4973,"y":-3.6169,"z":-0.0478},{"x":5.4598002,"y":-2.6759,"z":-0.3623},{"x":1.599,"y":-1.4203,"z":0.9663},{"x":-4.2137,"y":0.8188001,"z":2.5929},{"x":-5.7525997,"y":0.1604,"z":0.70350003},{"l":"H","x":-0.92130005,"y":-0.6858,"z":0.8503},{"x":2.961,"y":-1.8632,"z":0.49760002},{"l":"O","x":-4.989,"y":2.5026002,"z":-1.2333001},{"l":"O","x":-1.2756001,"y":1.6640999,"z":-1.9360001},{"l":"O","x":1.104,"y":-1.4738001,"z":-1.3405999},{"l":"O","x":-4.604,"y":3.4702,"z":0.7158},{"x":-4.4305005,"y":2.47,"z":-0.1623},{"x":0.68810004,"y":-1.2541,"z":-0.2227},{"x":-3.5391,"y":1.3063,"z":0.1875},{"x":-1.4742,"y":-0.7,"z":-1.1997},{"x":-1.8847001,"y":0.7218999,"z":-1.4753001},{"l":"H","x":-5.185,"y":4.1949,"z":0.44660002},{"l":"N","x":-0.5887,"y":-0.86149997,"z":-0.043799996},{"x":-2.9578,"y":-0.84800005,"z":-0.8823999},{"x":-4.298,"y":0.3443,"z":1.1408},{"l":"S","x":-3.3189998,"y":-1.1949,"z":0.8809},{"l":"N","x":-3.159,"y":0.59889996,"z":-1.0386},{"l":"H","x":-2.6423,"y":1.6747,"z":0.6855},{"l":"H","x":-3.5207,"y":-1.4693998,"z":-1.5789001},{"l":"H","x":-4.6569,"y":1.8111,"z":2.6771998},{"l":"H","x":-4.7551003,"y":0.123500004,"z":3.2344003},{"l":"H","x":-3.1692,"y":0.86,"z":2.9017},{"l":"H","x":-5.7794,"y":-0.2569,"z":-0.3031},{"l":"H","x":-6.2558002,"y":-0.5187,"z":1.3918},{"l":"H","x":-6.2588997,"y":1.1256,"z":0.71029997},{"l":"H","x":-1.1443,"y":-1.2523,"z":-2.0796},{"l":"H","x":1.1846,"y":-2.1707997,"z":1.6393999},{"l":"H","x":1.6871,"y":-0.46960002,"z":1.4921},{"l":"H","x":3.7012,"y":0.1303,"z":0.2784},{"l":"H","x":2.4957001,"y":-3.9457002,"z":0.62750006},{"l":"H","x":5.9251003,"y":-0.5933,"z":-0.4921},{"l":"H","x":4.7215,"y":-4.6695,"z":-0.13759999},{"l":"H","x":6.4357004,"y":-2.9933,"z":-0.6989}], + "b":[{"b":10,"e":14,"o":2},{"b":13,"e":14},{"b":14,"e":16},{"b":16,"e":24},{"b":16,"e":22},{"b":21,"e":24},{"b":18,"e":24},{"b":6,"e":22},{"b":7,"e":22},{"b":22,"e":23},{"b":21,"e":23},{"b":17,"e":21},{"b":17,"e":18},{"b":11,"e":18,"o":2},{"b":17,"e":20},{"b":15,"e":20},{"b":5,"e":15},{"b":12,"e":15,"o":2},{"b":5,"e":9},{"b":0,"e":9,"o":2},{"b":1,"e":9},{"b":0,"e":2},{"b":1,"e":3,"o":2},{"b":2,"e":4,"o":2},{"b":3,"e":4},{"b":13,"e":19},{"b":16,"e":25},{"b":21,"e":26},{"b":6,"e":27},{"b":6,"e":28},{"b":6,"e":29},{"b":7,"e":30},{"b":7,"e":31},{"b":7,"e":32},{"b":17,"e":33},{"b":8,"e":20},{"b":5,"e":34},{"b":5,"e":35},{"b":0,"e":36},{"b":1,"e":37},{"b":2,"e":38},{"b":3,"e":39},{"b":4,"e":40}] + }} + -- is2D will trigger minimization + -- scale indicates overall scaling present in the "a" records + +new feature: set particleRadius + -- global radius for atoms over the max radius value (16.0) + -- defaults to 20.0 + +new feature: CIF and PDB filters "BYCHAIN" and "BYSYMOP" for virus particulation + -- creates just one atom per chain or per symop + -- size can be scaled larger than the max of 16 Angstroms using, for example: + set particleRadius 30; + spacefill 30; // any number over 16 here uses particleRadius instead + +new feature: symop() function allows symmetry from biomolecule filter for PDB and mmCIF + +new feature: isosurface SYMMETRY + -- applies symmetry operators to isosurface + -- more efficient rendering and creation + -- default selection is {symop=1} only + -- default coloring is to color by symop based on propertyColorScheme + -- example: + load 1stp filter "biomolecule 1" + color property symop + isosurface sa resolution 0.8 symmetry sasurface 0 + +new feature: new atom property: chainNo + -- sequentially from 1 for each model; + -- chainNo == 0 means "no chain" or chain = '' + +new feature: new propertyColorScheme "friendly" + -- color-blindness-friendly color scheme + -- used at RCSD + -- example: + + set propertyColorScheme "friendly" + color {chainNo > 0} property chainNo + +new feature: JSpecView completely Java-free; includes 2D nmr and PDF printing of spectra + +new feature: WRITE PDF "xxx.pdf" quality > 1 requests landscape mode + -- uses efficient custom PDF creation classes + -- sizes image to fit if too large + +new feature: JSpecView adds PDF and 2D NMR for JavaScript + +new feature: load "==xxx" FILTER "NOIDEAL" + -- chemical component load from PDB using the "nonideal" coordinate set + +bug fix: write CD removed; ChemDoodle has changed formats; use JSON instead +bug fix: PDB and CIF files indicated assemblies such as PAU as large negative number +bug fix: COMPARE with no rotation starts infinite loop +bug fix: looping problem with delay(-1) +bug fix: Mouse wheeling for Chrome in JavaScript +bug fix: JavaScript popup menu fix for language changes +bug fix: JavaScript core components not being processed; Jmol._debugCode not recognized +bug fix: unitcell offset incorrectly for biomolecules; origin incorrect for axes. +bug fix: isosurface/mo FRONTONLY broken +bug fix: language localization broken in JavaScript +bug fix: ADF reader not reading MO output from DIRAC Build 201304052106 +bug fix: Safari reports yellow Jmol info instead of asking to accept applet + -- tag needed to be +bug fix: CIF reader not handling _pdbx_struct_assembly_gen.assembly_id properly + -- wrong atom set for load =3fsx.cif filter "ASSEMBLY 1" +bug fix: [#558 Compatibility issue with ChemDoodle] JSmol error in definition of Number.toString() +bug fix: mouse wheel not working properly +bug fix: JavaScript J2S compiler error does not coerce int += float to integer +bug fix: JavaScript WEBGL option broken +bug fix: JavaScript NMRCalculation does not access resources +bug fix: JavaScript stereo not implemented +bug fix: MOL reader fix for multiple-model file (just 13.3.9_dev) +bug fix: MOL reader error with load APPEND -- does not continue atom numbers +bug fix: CIF modulation reader not reading linear combinations of cell wave vectors +bug fix: CIF reading with filter "BIOMOLECULE 1" fails if only the identity operation +bug fix: mmCIF reader not reading all _pdbx_struct_assembly_gen.oper_expression options +bug fix: PDB CRYST entry 1.0 1.0 1.0 90 90 90 should mean "no unit cell" regardless of biomolecule filter +bug fix: isosurface slab not adapting well for flat molecules such as HEM +bug fix: print userfunc() may fail (userfunc() by itself is fine) +bug fix: within(helix) not implemented for C-alpha-only polymers +bug fix: _modelTitle not updated when a new file is loaded or zapped +bug fix: {*}.symop.all not delivering symmetry operator appropriately +bug fix: for triple bond in SMILES in URLs +bug fix: build.xml missing PDF creation classes +bug fix: [#554] for + load http://sourceforge.net/p/jmol/code/18631/tree/trunk/Jmol-datafiles/xyz/3structs.xyz?format=raw; + zap model!=1.1; +bug fix: following Java update, adding proper path check for local signed applet +bug fix: {xxx}.property_xx not saved in state (broken 8/7/2013 rev 18518) +bug fix: Manifests updated for signed and unsigned applet JAR files +bug fix: write fails +bug fix: applet scriptWait() method broken +bug fix: PyMOL session may display unit cell after read from saved state +bug fix: MMCIF reader fails for multiple assembly types +bug fix: CIF reader "biomolecule 1" translating to "molecular" rather than "assembly" +bug fix: load trajectory with multiple files not working +bug fix: JS applet popup menu not closing properly upon language change +bug fix: HTML checkbox id attribute not assigned + + +code: refactoring of applet/appletjs code; org.jmol.util.GenericApplet +code: refactoring, simplification of buffered readers and buffered input streams. +code: JavaScript refactoring, better build_...xml +code: JavaScript Integer, Long, Short, Byte, Float, Double all reworked +code: disambiguation of GT._ +code: Refactored all unnecessarily inner classes to top level +code: isolated util/ModulationSet using api/JmolModulationSet +code: All applet language localization read from plain .po files + -- as for JavaScript already + -- no need to compile class files for applet languages + -- no language .jar files + -- new jsmol/idioma directory holds .po files for both Java and HTML5 +code: faster isosurface rendering adding implicit "frontonly" with select {xxx} ONLY +code: faster isosurface rendering with implicit "isosurfacepropertySmoothing FALSE" in relevant (integer) cases +code: JmolBinary.getBufferedReaderForResource() + -- consolidates all references to URL.getContent() and Class.getResource() +code: JavaScript work around for inner class problem with variable name reassignment +code: work-around for eval(functionName) not working in JavaScript. +code: experimenting with ambient occlusion +code: Required manifests added for Java Ju51 (January, 2014). +code: JmolOutputChannel moved to javajs.util.OutputChannel +code: jsmol.php fixed to allow " in saveFile method +code: refactoring Parser into javajs.util +code: DSSP moved to org.jmol.dssx, reducing JSmol bio load by 20K +code: iText package jettisoned, no longer nec, as I wrote my own PDF creator + + +JmolVersion="13.3.7" + +code; JavaScript comparison, 13.2.7 with 13.3.7. + +module 13.2.7 13.3.7 dBytes % + +core.z.js* 781,122 582,590 -198,532 75 +corebinary.z.js 10,958 10,852 -106 99 +corebio.z.js 199,251 199,249 -2 100 +coreconsole.z.js 13,421 13,421 0 100 +coremenu.z.js 105,606 107,832 2,226 102 +coremin.z.js 113,754 113,938 184 100 +coreprop.z.js 28,601 28,918 317 101 +corepymol.z.js 153,236 153,271 35 100 +corescript.z.js* 430,832 339,062 -91,770 79 +corescript2.z.js 159,078 159,078 +coresmiles.z.js 90,317 90,317 0 100 +corestate.z.js 60,478 49,667 -10,811 82 +coresurface.z.js 271,642 271,535 -107 100 +coresym.z.js 129,456 129,529 73 100 +coretext.z.js 46,033 46,033 +corezip.z.js 163,080 92,476 -70,604 57 + +*core+scripting 1,211,954 921,652 -290,302 76 +TOTAL 2,551,754 2,387,768 -163,986 94 + +JmolApplet0.jar 1,034,203 1,044,111 +JmolApplet.jar 2,757,469 2,766,400 + +JmolVersion="13.3.7_dev_2013.10.01" + +bug fix: Crystal reader not applying lattice translations +bug fix: translations incomplete +bug fix: state saving of echo "bottom left" instead does "top left" +bug fix: multiple-file crystal structures may fail to load if there is a lattice shift +bug fix: space group not being calculated automatically for user-defined space groups +bug fix: measures broken + +code: further consolidation: + -- uncompressed(former) gzipped + -- JSmol.min.nojq.js 134K 38K + -- core.z.js 1583K(1781K) 363K + -- corescript.z.js 339K (436K) 83K + + -- TOTAL 2056K(2217K) 484K + (7% reduction) + + -- JmolApplet0.jar 1038K 1005K + + +JmolVersion="13.3.7_dev_2013.09.30" + +JmolVersion="13.3.6" + +bug fix: angle measurements can end with "//nanometers" +bug fix: first pending measurement loses label + +JmolVersion="13.3.6_dev_2013.09.27" + +new feature: adds remote logging for applet and app via http:// and via function for applet using + jmolApplet0._applet.viewer.setLogfile(function(data) {......}) + +new feature compare {1.1} {2.1} BONDS "smiles" + -- does flexible fit based on dihedrals. + -- does internal rotation even if ROTATION TRANSLATION are not given + (considered a possible bug) + -- concatenation of: + list = compare({1.1},{2.1},"smiles","BONDS") + rotate branch @list 1 + compare {1.1} {2.1} SMARTS "smiles" rotate translate + + so, for example: + + load files "$tyrosine" "$lysergamide" + select 1.1; color bonds red + select 2.1; color bonds yellow + sm = "c1ccccc1CCN" + compare {1.1} {2.1} BONDS @sm rotate translate + +new feature: show BEST ROTATION / show BEST VOLUME (better than undocumented show rotation best, show rotation volume) + +new feature: set animationMode "ONCE" "LOOP" "PALINDROME" +new feature: show animationMode; x = animationMode + +new feature: CAPTURE command, including ROCK and SPIN + -- application and signed applet only (no JS) + -- creates animated GIF + -- uses ANIMATION FPS to determine play-back rate. + CAPTURE "filename" + -- starts capturing + -- uses ANIMATION MODE to determine looping + -- both PALINDROME and LOOP create looping; ONCE (default) does not + CAPTURE "filename" ROCK x|y|z degrees + -- does a clean rocking of the molecule about one of the three major axes + -- axis and degrees optional; y 5 assumed + -- based on: rotate Y 10 10;delay 2.0; rotate Y -10 -10; delay 2.0;rotate Y -10 -10; delay 2.0;rotate Y 10 10;delay 2.0 + -- uses LOOP mode + CAPTURE "filename" SPIN x|y|z + -- does a full spin of the molecule about one of the three major axes + -- axis optional; y assumed + -- based on: rotate Y 360 30;delay 15.0; + -- uses LOOP mode + CAPTURE off/on + -- temporarily disables/enables capturing + CAPTURE "" or just CAPTURE + -- end capturing + +new feature: set drawFontSize // defaults to 14.0 + +FEATURE CHANGE: added bindings: "drag" and "up" -- may affect power users who use BIND command + new: _center CTRL+SHIFT+LEFT+click + new: _reset SHIFT+LEFT+double+click + + mouse actions include one (each) of: + SINGLE DOUBLE + LEFT MIDDLE RIGHT WHEEL + DOWN DRAG UP CLICK + + for example: + SINGLE-RIGHT-CLICK + DOUBLE-LEFT-DRAG + + defaults are SINGLE, LEFT, and CLICK + + sequence is always: + + down + (drag,drag,drag...) + up + (click) (only if no drag) + + Any of these actions may be tapped using + + bind "" "" + + Note that adding "+:" to an action + + bind "" + + does not replace the Jmol action, just supplements it. + +$ show mouse +_assignNew LEFT+click assign/new atom or bond (requires set picking assignAtom_??/assignBond_?) +_center CTRL+SHIFT+LEFT+click center +_clickFrank LEFT+click pop up recent context menu (click on Jmol frank) +_pickConnect LEFT+click connect atoms (requires set picking CONNECT) +_deleteAtom LEFT+click delete atom (requires set picking DELETE ATOM) +_deleteBond LEFT+click delete bond (requires set picking DELETE BOND) +_depth CTRL+SHIFT+LEFT+double+drag adjust depth (back plane; requires SLAB ON) +_dragAtom LEFT+drag move atom (requires set picking DRAGATOM) +_dragDrawObject SHIFT+LEFT+drag move whole DRAW object (requires set picking DRAW) +_dragDrawPoint ALT+LEFT+drag move specific DRAW point (requires set picking DRAW) +_dragLabel SHIFT+LEFT+drag move label (requires set picking LABEL) +_dragMinimize LEFT+drag move atom and minimize molecule (requires set picking DRAGMINIMIZE) +_dragMinimizeMolecule LEFT+drag move and minimize molecule (requires set picking DRAGMINIMIZEMOLECULE) +_dragSelected ALT+SHIFT+LEFT+drag move selected atoms (requires set DRAGSELECTED) +_dragZ SHIFT+LEFT+drag drag atoms in Z direction (requires set DRAGSELECTED) +_navTranslate LEFT+drag translate navigation point (requires set NAVIGATIONMODE and set picking NAVIGATE) +_pickAtom LEFT+click pick an atom +_pickIsosurface LEFT+click pick an ISOSURFACE point (requires set DRAWPICKING +_pickLabel LEFT+click pick a label to toggle it hidden/displayed (requires set picking LABEL) +_pickMeasure LEFT+click pick an atom to include it in a measurement (after starting a measurement or after set picking DISTANCE/ANGLE/TORSION) +_pickNavigate CTRL+SHIFT+LEFT+click pick a point or atom to navigate to (requires set NAVIGATIONMODE) +_pickPoint LEFT+click pick a DRAW point (for measurements) (requires set DRAWPICKING +_popupMenu CTRL+LEFT+down, RIGHT+down pop up the full context menu +_reset SHIFT+LEFT+double+click, MIDDLE+double+click reset (when clicked off the model) +_rotate LEFT+drag rotate +_rotateBranch SHIFT+LEFT+drag rotate branch around bond (requires set picking ROTATEBOND) +_rotateSelected ALT+LEFT+drag rotate selected atoms (requires set DRAGSELECTED) +_rotateZ ALT+LEFT+drag, SHIFT+RIGHT+drag rotate Z +_rotateZorZoom SHIFT+LEFT+drag, MIDDLE+drag rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse) +_select LEFT+double+click select an atom (requires set pickingStyle EXTENDEDSELECT) +_selectToggleOr LEFT+click if all are selected, unselect all, otherwise add this group of atoms to the set of selected atoms (requires set pickingStyle DRAG) +_setMeasure LEFT+double+click pick an atom to initiate or conclude a measurement +_slab CTRL+SHIFT+LEFT+drag adjust slab (front plane; requires SLAB ON) +_slabAndDepth CTRL+ALT+SHIFT+LEFT+drag move slab/depth window (both planes; requires SLAB ON) +_slideZoom LEFT+drag zoom (along right edge of window) +_spinDrawObjectCCW LEFT+drag click on two points to spin around axis counterclockwise (requires set picking SPIN) +_spinDrawObjectCW SHIFT+LEFT+drag click on two points to spin around axis clockwise (requires set picking SPIN) +_stopMotion LEFT+double+click stop motion (requires set waitForMoveTo FALSE) +_swipe LEFT+drag spin model (swipe and release button and stop motion simultaneously) +_translate CTRL+ALT+LEFT+drag, CTRL+RIGHT+drag, SHIFT+LEFT+double+drag, MIDDLE+double+drag translate +_wheelZoom WHEEL zoom + +bug fix: JSON NIO port SYNC broken +bug fix: print getProperty("image", "width=200;height=300;type=png") not working + +bug fix: write IMAGE "t.png" not working +bug fix: rotate -10 -10 not working + +bug fix: mouse bindings not distinguishing DOWN/CLICK/DRAG/UP properly +bug fix: mouse bindings _center and _reset not working +bug fix: show MOUSE not including user-defined mouse bindings + +bug fix: chains improperly selected in JSmol/HTML5 +bug fix: JSmol/HTML5 not allowing drag-drop or file loading from a local drive. +bug fix: JSmol/HTML5 not allowing WRITE FILE ? +bug fix: JSmol/HTML5 not allowing WRITE xxx.pdb, xxx.mol, etc + +bug fix: platformSpeed persists but appears unreadable after loading a state +bug fix: JavaScript version InputStreamReader not processing non-UTF data correctly +bug fix: second reading of older PNG files with embedded script fails + due to improper png file caching + +code: overhaul of image creation methods + +code: careful attention to core functions yields results in 5% reduction in core download size: + -- uncompressed(former) gzipped + -- JSmol.min.nojq.js 134K 38K + -- core.z.js 1586K(1781K) 364K + -- corescript.z.js 378K (436K) 95K + + -- TOTAL 2098K(2217K) 497K + (5% reduction) + + -- JmolApplet0.jar 1038K 1005K + + -- Thus, the "real" transfer size -- based on server-side gzipping -- is half the size of Jmol/Java. + +code: continued refactoring of ScriptEvaluator to ScriptExt +code: refactoring to isolate LabelToken and Labels from core JavaScript load +code: refactoring, simplification of image output and export + -- folders created: org.jmol.image, org.jmol.dialog + -- JpgEncoder, Jpg64Encoder, PngEncoder brought to org.jmol.image + and made subclasses of ImageEncoder + -- PpmEncoder fixed + -- ImageEncoder stripped of all unnecessary ImageConsumer/producer business + -- org.jmol.export.image.ImageCreator and parts of org.jmol.viewer.stateCreator reorganized + into org.jmol.OutputManager, org.jmol.OutputManagerAwt, and org.jmol.OutputManagerJS + -- clipboard functions moved into org.jmol.awt and org.jmol.awtjs2d + -- org.jmol.io.JmolOutputChannel now serves for just about all output needs. + + +code: major simplification and consolidation of file I/O methods, including exporters, using JmolOutputChannel class. +code: only FileOutputStream reference is one reference in org.jmol.awt. + +code: code merge between 13.2 and 13.3 18 Sept 2013 +code: major clean-up of ActionManager + +JmolVersion="13.3.5" + +JmolVersion="13.3.5_dev_2013.09.06" + +new feature: show NMR taps into NMRDB directly + -- for now, application only + +bug fix: CRYSTAL reader not allowing vibration for conventional cell +bug fix: JavaScript binary for Safari and Opera +new feature: strutureModifiedCallback +bug fix: ID @id vector fails + +JmolVersion="13.3.4" + +bug fix: select 1-5 broken + +JmolVersion="13.3.4_dev_2013.08.21" + +bug fix: JANA2006 reader not processing occupancies + -- read now forced to "PACKED" in order to calculate site multiplicity +bug fix: CIF reader not reading _CCDC_GEOM_BOND_TYPE record +bug fix: File dialog problems with paths having space +bug fix: GAMESS reader not reading energies +bug fix: TRY failure in a load command followed by a successful load + having a loadScript will pop past the second TRY and crash Jmol + +new feature: _logfile holds full path to logfile + +code: Incommensurate modulated structure CIF and M50/40 file loading validation + -- includes d=1 and d=2 + -- Fourier, sawtooth, crenel + +bug fix: translation not read from state + +new feature: set platformSpeed [0 to 10] + -- basically an expanded "set wireframe OFF" with more options + -- only effected during model rotation + (including mouse dragging, spin, vibration, and animation) + -- default value is 10 (all features; no compromises) + -- value >= enables + 8 antialiasDisplay (and thus, all features) + 7 translucency + 6 meshes (contact, draw, isosurface, MO, pmesh, lcaocartoon, CGO) + 5 cartoons, rockets, trace, ribbon + 4 geosurfaces + 3 ellipsoids + 2 wireframe and balls + 1 none of the above (same as "set wireframeRotation off") + 0 [reserved for "auto"] + +FEATURE CHANGE: set wireframeRotation expanded + +new feature: show ROTATION BEST + -- operates on currently selected atoms + -- reports "{quaternion}" + +new feature: quaternion("best") + -- delivers actual quaternion + +new feature: show ROTATION VOLUME + -- calculates approximate best box (from 1495 quaternion-based alternatives) + -- reports " {dx dy dz}" + -- where is the volume, + -- and {dx dy dz} are the dimensions, where dx > dy > dz + +new feature: rotate BEST +new feature: rotate SELECTED BEST + +new feature: pop-up menu selection "view...best" + +bug fix: CIF reader does not find Hall name for space groups + +bug fix: binding names not included in SHOW MOUSE +bug fix: "single" touch can fire double-click +bug fix: {x}.tensor() command fails when no atom tensors +bug fix: isosurface slab not allowing two different slabs for two diffrent isosurfaces +bug fix: set wireframeRotation not working ("inMotion" flag not properly read in Viewer). +bug fix: screen repaints were being requested far too frequently + + *indicates when a refresh is made (external apps and applets only) + + external apps only + via loadInline(List)* + createModelSetAndReturnError + + openDOM, openReader, openFile, openFiles + via loadModelFromFileRepaint* + createModelSetAndReturnError + + loadInLine(String) via loadInLineScriptRepaint* + FileDropper (string drop) via openStringInline* + via openStringInlineParamsAppend + createModelSetAndReturnError + + external apps, applet only, via loadInline(String[])* + via openStringsInlineParamsAppend + createModelSetAndReturnError + + script LOAD + via loadModelFromFile + createModelSetAndReturnError + + script CALCULATE HYDROGENS, PLOT, ZAP (ModelKit) + via openStringInlineParamsAppend + createModelSetAndReturnError + + script LOAD DATA via loadFileFull and loadInlineScript + openStringsInlineParamsAppend + createModelSetAndReturnError + +new feature: incommensurate modulation of ADPs. +new feature: Jana2006 M40/M50 file reading + +bug fix: set loglevel 6 (debugHigh) not working +bug fix: {*}.tensor("", "id") not implemented +bug fix: {*}.tensor("") not implemented +bug fix: {*}.tensor("adp") fails +bug fix: {*}.symmetry fails when space group is P1 +bug fix: atom tensors lost when merging + +bug fix: Jsmol menu and console broken in 2013.08.07 when jQuery calls were all moved into JSmolCore.js + +bug fix: float parser broken in dev_2013.08.07 + +code: reorganization of ScriptEvaluator into two sections, one optional + +new feature: COMPARE {atoms} [coords] +new feature: COMPARE {atoms} ATOMS {subset1} [coords1] {subset2} [coords2] ... + +new feature: MODULATION command -- for modulated structures + -- operates on currently selected set of atoms + -- MODULATION ON + -- MODULATION OFF + -- MODULATION t + -- sets modulation "t" of selected atoms + -- MODULATION PLAY t1 t2 + -- animates a once-through sequence of t from t1 to t2 + -- MODULATION FPS x.x // may be < 1 + -- sets speed of animation + +bug fix: zoom setting lost in state + +code: incommensurate crystal work -- Uiso, preliminary Uij and subsystems +code: incommensurate crystal work -- occupancy Crenel, displacive sawtooths + +bug fix: shapeInfo not reporting visibility of isosurface + +code: pdb, cif readers separated into separate packages; p2n, pqr readers with pdb now + +new feature: Jana2006 reader -- reader for http://jana.fzu.cz/ +new feature: CIF reader reads incommensurate modulated structures + -- FILTER options include: + -- NOSPECIAL (include special atoms for debugging + -- MODAVERAGE (do not read modulation + -- MODAXES=xyz (select only specific axes -- x, y, and/or z) + -- NOSYM (no symmetry read) + +code: Even faster float parsing +bug fix: filter lost after CENTROID or PACKED load option +bug fix: set rangeSelected not functional + +new feature: msCIF file reading of incommensurate modulation data as vibration +new feature: msCIF file filter "MODAXES=xxx" where xxx = X,XY,XYZ,YZ,etc. +new feature: msCIF file filter "MODAVE" gives average structure with vibration vectors. + +bug fix: minimization can fail after MMFF switches to UFF. +bug fix: CIF reader fix for no element given "phenyl1" in ZjzxlegN.cif +JSmol: Jmol form moved to end of body +JSmol: All $(xx) references moved to JmolCore.js + +JmolVersion="13.3.3_dev_2013.07.27" + +code: reconfigured JSmol build no longer needs jsmol/make directory. + +bug fix: Gaussian cube format changed and not recognized (extra "1" in third line). +bug fix: PDB header don't do trim(); +bug fix: isosuface ID @x ... becomes isosurface ID "@x" +bug fix: color chain broken +bug fix: rockets with color chain +bug fix: filter ":X" broken +bug fix: O not 2- in PDB adding hydrogens +bug fix: NWChem reader error + + +bug fix: isosurface SLAB TRANSLUCENT 0.x color + -- inherits color of isosurface when color parameter is absent + +bug fix: JSmol 2-sided surface color problem due to Java2Script miscoding of Number.shortValue() +bug fix: PyMOLMeshReader code clean-up. + +JmolVersion="13.3.2_dev_2013.07.21" + +bug fix: PyMOL mesh reader broken for EDS files + +JmolVersion="13.3.1_dev_2013.07.20" + +bug fix: MMCIF_PDBX structures not being read + +bug fix: allow PyMOL PSE files reading as part of a set of files, not just by itself + +bug fix: quaternion plots not synched with originating structure +bug fix: 1skt.cif loses secondary structure (MMCIF_PDBX reader needed) + +new feature: calculate formalCharge + +bug fix: set showTiming not functional +bug fix: set pdbAddHydrogens does not set formal charge on O(1-) or "O" of H2O (2-) +bug fix: PNGJ files not properly caching, and PSE files with DOCACHE option + +JmolVersion="13.3.0" +JmolVersion="13.1.19_dev_2013.07.18" + +new feature: set exportScale x.x + -- adjusts export scale + -- only implemented for VRML and X3D exporters +new feature: unitcell center {atomset} +new feature: unitcell center {fx fy fz} +new feature: {*}.ms, {*}.cs %[ms] %[cs] magnetic shielding and chemical shift +new feature: label xxx +new feature: set shift_H xxx (ppm) +new feature: getProperty("nmrInfo") +new feature: NMR analysis tools: + -- x = measure({a} {b} "isc_hz") -- J coupling + -- x = measure({a} {b} "dc_khz") -- dipolar constant + -- MEASURE {a} {b} "2://dc_hz" -- dipolar constant + -- MEASURE {a} {b} "2:%3.2VALUE//dc_khz" -- dipolar constant + -- MEASURE {a} {b} "2://khz" -- defaults to dc_khz + -- MEASURE {a} {b} "2://hz" -- defaults to isc_hz + -- MEASURE {a} {b} "2://isc_1hz" + +new feature: {xxx}.tensor(type,what) + -- type = "temp", "ms", "efg", etc. + -- returns a list of data. isc-type returns a list of lists [index1, index2, value] + -- what = + "j" (isc-type only) + "chi" (efg only) + "dc" (dipolar coupling constant; type ignored) + "eigenvalues" float[v1,v2,v3] + "eigenvectors" P3[V1,V2,V3] + "value" Float (v3) + "asymMatrix" Matrix3f + "symMatrix" Matrix3f + "isotropy" Float v_iso=(v1 + v2 + v3)/3 + "anisotropy" Float v3 - (v1 + v2)/2 + "asymmetry" Float (v2 - v1)/(v3 - v_iso) + "eulerzxz" float[] + "eulerzyz" float[] + "quaternion" Quaternion + "indices" float[modelIndex,atomIndex1,atomIndex2] + "string" selected readable data + "type" + anything else -- all key/value pairs + +new feature: bind "+:" + -- added "+:" indicates to NOT unbind Jmol action + +new feature: ellipsoid OPTIONS "xxxx" + -- "xxxx" is a quoted string of options separated by semicolon: + "arcs;arrows;axes;ball;dots;fill;wireframe" + with optional "no" in front of each + +new feature: SET ECHO POINT {atom or point} + -- allows 2D and 3D echos to have pointers to atoms or points + + +bug fix: set shift_XX not saved in state +bug fix: JSmol menu not disappearing upon touch outside menu +bug fix: PyMOL surface map reading error +bug fix: magres measurement of dipole coupling constants do not reach just min-distance set +bug fix: "cs" for Cs symmetry broken in chemicalshift +bug fix: cartoons with too small nonzero size will not render anything + +code: org.jmol.quantum.NMRCalculation smoothly handles J-coupling and dipolar coupling constant display. +code: org.jmol.quantum.NMRCalculation implements org.jmol.api.JmolNMRCalculation: + public float getQuadrupolarConstant(Tensor efg); + public float getJCouplingHz(Atom a1, Atom a2, String type, Tensor t); + public float getDipolarConstantHz(Atom a1, Atom a2); + public float getDipolarCouplingHz(Atom a1, Atom a2, V3 vField); + public JmolList getInteractionTensorList(String type, BS bs); + public BS getUniqueTensorSet(BS bs); + public JmolList getTensorInfo(String tensorType, String infoType, BS bs); + public Map getMinDistances(MeasurementData md); + public boolean getState(SB sb); + public Object getInfo(String sym); + +JmolVersion="13.1.17_dev_2013.06.27" + +new feature: CASTEP reader filter option q=all +new feature: set picking DRAGLIGAND + -- won't move the protein +new feature: CIF reader upgrade to allow multicharacter chain specs. + -- See 1bgl_1bgm.cif + -- automatically switches to chainCaseSensitive if multi-character + or lower-case chains are read in a CIF file. + -- note that in certain cases quotation marks will be needed: + select chain=0123 NOT OK + select :0123 NOT OK + select chain="0123" OK + select :"0123" OK + select :"A*" or :"A'" or :'A"' or :"A\"" + +new feature: {atomset1}.distance.min({atomset2}) + -- returns an array + -- minimum distance of each atom in atomset1 to any atom in atomset2 +new feature: {atomset1}.distance.max({atomset2}) + -- returns an array + -- maximum distance of each atom in atomset1 to any atom in atomset2 + +note: much of the next compare/branch business was built into a + new COMPARE command for Jmol 13.3.6 + +new feature: list = compare({atomset1} {atomset2} "ccCCN" "BONDS") + -- determines the dihedrals that match atomset1 to atomset2 + -- returns arrays of length 6n, list[6n] + which lists six numbers for each dihedral in the comparison set, + including i1 i2 i3 i4 set1value set2value, where i1-i4 are + atom indices, and set1value and set2value are the dihedral angles + in sets 1 and 2, respectively. + -- feeds into the rotate BRANCH @list command + +new feature: BRANCH @list + -- takes a list of 6n numbers from compare function + -- rotates all dihedrals in the selected atom set to target values concurrently + + // application: flexible substructure fit using a SMARTS search + + load files "$tyrosine" "$lysergamide" + select 1.1; color bonds red + select 2.1; color bonds yellow + sm = "c1ccccc1CCN" + list = compare({1.1},{2.1},sm,"BONDS") + rotate branch @list 1 + compare {1.1} {2.1} SMARTS @sm rotate translate + // at this point the two models match almost perfectly among these key atoms. + +new feature: {1.1}.find("ccCCN", "BONDS") + -- finds the first match in the structure to the given SMARTS string + -- returns an n-length array of 4-length arrays, list[n][4] + -- each list[i] is a set of four atoms in bond-connected order + -- full list comprises all dihedrals in the found set of atoms. + +new feature: set translucent + -- default TRUE : translucent objects are fully translucent + -- FALSE: translucent objects are opaque to other translucent objects + +bug fix: CrystalReader broken by recent change to simpleReplace() +bug fix: PyMOL movie start frame +bug fix: PyMOL putty broken +bug fix: pdbAddHydrogens may miss O3' or O5' H atoms at end of DNA strands +bug fix: pdbAddHydrogens may miss H in first group of a chain +bug fix: set defaultDrawArrowScale broken +bug fix: "ligand" should include all _g=0 (nonPDB atoms) +bug fix: applet getpropertyAsArray("bondInfo") fails +bug fix: JSmol script/scriptWait nuance with moveto. + -- when using scriptWait with HTML5, there can be no threading +bug fix: invertSelected on trajectory causes nullPointerException +bug fix: POLYHEDRA with faceCenterOffset not saved in state properly; EDGES option nonfunctional +bug fix: JavaScript not returning arrays properly from Jmol.getPropertyXXXX() + -- very important to have {} after j2sNative directive! +bug fix: COMPARE could rotate to less-good fit with SMARTS search +bug fix: draw ARROW ATOM/BOND broken +bug fix: animation MORPH broken for non-PyMOL files + -- load trajectory ({0 6}) 1cdr.pdb + -- animation MORPH 10 + -- animation ON + -- load trajectory "test1.pdb" "test2.pdb" + -- animation MORPH 30 + -- animation ON +bug fix: draw ARROW ATOM/BOND broken +bug fix: draw ARROW with offset disallows set picking draw adjustments +bug fix: concurrent loading of two cif files by two different applets fails +bug fix: draw LINEDATA not operative (undocumented, for state; from draw xxx INTERSECT yyy) + -- needs revision to create DATA option; can be huge and very long to process state file +bug fix: load :2-butanone fails +bug fix: PyMOL volume map data saved from PyMOL 1.6 has slightly different data structure +bug fix: jvxl reader ignores jvxlVertexColorData +bug fix: ellipsoid rendering problems + +code: MagRes/CASTEP reader upgrades +code: color/translucent/opaque clean up in ScriptEvaluator + +============================================================================= + +JmolVersion="13.1.16_a" + +new feature: set defaults PyMOL + -- zoomHeight TRUE + -- measurementUnits ANGSTROMS + + new feature: color BALLS + -- distinct from color ATOMS because it doesn't get inherited + -- for PyMOL compatability with sphere_color + +new feature: restore SCENE "xxxx" nSec + +new feature: Scene menu + -- PyMOL scene names, in order + +new feature: added parameters to moveTo allows setting cameraDepth, cameraX, and cameraY +new feature: moveTo PYMOL [18-element standard PyMOL view matrix] + -- used for PSE file loading + -- to be used also for scenes + [0-8] are 3x3 rotation matrix (row/column inverted) + [9,10] are x,y translations (y negative) + [11] is distance from camera to center (negative) + [12-14] are rotation center coords + [15-16] are slab and depth distance from camera (0 to ignore) + [17] is field of view; positive for orthographic projection + -- internal use only; not documented + +new feature: cache CLEAR + -- same as cache REMOVE ALL + +new feature: load xxx.pse FILTER "DOCACHE" + -- specifically for editing large PSE files when included in a state + -- caches streamlined file that is still readable by PyMOL (needs testing!) + (no electron density map data, for instance -- see HupA_2.pse) + -- caches all isosurfaces, creating JVXL equivalents + -- should be followed with WRITE xxx.pngj or WRITE xxx.jmol or WRITE xxx.zip + -- for example: + before: + 04/07/2013 07:46 AM 11,929,507 HupA_2.pse + + $ zap;load "HupA_2.pse" filter 'docache' + $ write t.zip + + after: + Listing archive: t.zip + Physical Size = 395174 + + Date Time Attr Size Compressed Name + ------------------- ----- ------------ ------------ ------------------------ + 2013-05-17 06:46:36 ..... 1092432 219718 HupA_2.pse + 2013-05-17 06:46:36 ..... 1473760 6589 isosurface_level2 + 2013-05-17 06:46:36 ..... 25495 11624 state.spt + 2013-05-17 06:46:36 ..... 134 119 JmolManifest.txt + 2013-05-17 06:46:36 ..... 0 2 Jmol_version_13.1.16_dev_2013.05.17__2013-05-15_07.09 + 2013-05-17 06:46:36 ..... 158082 156316 preview.png + ------------------- ----- ------------ ------------ ------------------------ + 2749903 394368 6 files, 0 folders + +new feature: anim FRAMES [1, 3, 9, 9, 9, 3, 1] + -- arbitrary PyMOL-like model list + +new feature: FRAME n + -- same as MODEL n, unless we have PyMOL-like frames + -- if have frames, then FRAME 2 goes to the second frame (model 3 in this case) + -- MODEL n still always goes to a specific model. + -- all relative options -- FIRST LAST PREV NEXT -- refer to frames if there are frames + even if the MODEL command is given. + +new feature: pyMOL PSE state options: LOAD "FOO.PSE" state FILTER "xxxx" + -- [state not present; default] load all PyMOL states (one PyMOL state == one Jmol model) + -- state = 0 (load only the current PyMOL state) + -- state > 0 (load just a specific PyMOL state) + -- FILTER "nosurface" -- load PyMOL file without surfaces + +new feature: getProperty BONDINFO {atomset1} {atomset2} + +new feature: measurements with IDs and radius/diameter: + -- measure ID "xxx" ... + -- measure ID "xxx" RADIUS x.y (or DIAMETER x.y) + -- renders as dots + +new feature: set zoomHeight + -- FALSE by default + -- set TRUE for PyMOL-like resizing (scale only set by height adjustment) + +new feature: isosurface color density (decimal) + - variable decimal point size + +new feature: PyMOL CGOs as CGO command + - needs testing + - CGO ID "xxx" [ cgo data (float array) ] + - includes basic CGO methods + BEGIN + GL_POINTS + GL_LINES + GL_LINESTRIP + GL_TRIANGLE + GL_TRIANGLE_STRIP + GL_TRIANGLE_FAN + VERTEX + END + COLOR + NORMAL + SIMPLE_LINE + SAUSAGE + TRICOLOR_TRIANGLE + +popup: added menu for MEP range -0.1 0.1 + +PyMOL: uniqueBondSettings working + +PyMOL: better scene restore; + +PyMOL: adds SASURFACE option (surface_solvent ON), with "carving" (ProFusion_ABL.pse, scene F6) + +PyMOL: abstraction of scene setting from reader + +PyMOL: first phase of reader development complete (working with Jaime Prilusky) + -- 104 test models http://ispcsrv3.weizmann.ac.il/a2jmolb/browse + -- implementation of standard objects, including: + -- atoms with labels + -- bonds + -- standard PyMOL rendering, including: + -- lines + -- sticks + -- nonbonded (stars) + -- nb_spheres + -- cartoons of various types (not plank) + -- rockets + -- ribbon (backbone/trace) + -- putty (trace) + -- dots + -- measures + -- simple CGO objects + -- molecular surfaces + -- electron density as points and meshes + -- custom colors + -- fog and slab + -- morphing movies + -- JVXL caching of isosurfaces + +PyMOL: measurement font/offsets enabled + -- adds measure ID "xxx" FONT scale face style + -- adds measure ID "xxx" OFFSET [mode, sx, sy, sz, ax, ay, az] + -- adds measure ID "xxx" OFFSET {sx, sy, sz} + +PyMOL: perspective fix for translated center -- H115W.PinM.PSE + +PyMOL: preliminary scene implementation + -- view only + -- use RESTORE ORIENTATION xxxxx + +code: Text.java, Object2d.java moved from shapes to modelset + +bug fix: COMPARE move of group saved in state may not be correct when restored +bug fix: write command doesn't accept parameter sequence IMAGE PNGJ ... (broken in 13.1.14) +bug fix: load APPEND with PDB file loses structure (broken in 13.1.15) +bug fix: restore command broken +bug fix: JavaScript: adding SYNC +bug fix: antialiasing or resizing stray lines problem solved (introduced in 11.0, 08/2006!) +bug fix: "display add" by itself should not do anything +bug fix: Hall translation initialization problem +bug fix: JavaScript reading of old-style JVXL files +bug fix: Gaussian reader not splitting MO set by model +bug fix: polyhedron reading from state +bug fix: connect delete not saved in state +bug fix: rockets not working for alpha polymer (also in 13.0.16) +bug fix: GXL added to carbohydrates +bug fix: show state/anim turns "anim" into "animation" +bug fix: MoldenReader orbitals are not in energy order; use FILTER "NOSORT" to prevent sorting by energy +bug fix: simultaneous spin/animation broken in 13.1.13 +bug fix: MoldenReader fix for file blank lines and g,h,i orbitals - also for 13.0.16 +bug fix: COMPARE does not allow nSeconds at beginning, as described in documentation +bug fix: isosurface VOLUME/AREA SET n cannot return to full array reporting; SET -1 added. +bug fix: isosurface VOLUME/AREA always returns an array, possibly of length 0 +bug fix: isosurface molecular/solvent can give inappropriate inner surfaces +bug fix: show selected includes deleted atoms + +============================================================================= + +JmolVersion="13.1.15" + +FEATURE CHANGE: default JPEG quality set to 100 (was 75, which looks crappy) + +new feature: select command parameter completion using [TAB] includes variables + +new feature: PyMOL-like label offset options: + + set labelOffset [sx, sy, sz] + set labelOffset [mode, sx, sy, sz, ax, ay, az] + + where + + sx,sy,sz are screen coord offsets + -- in Angstroms + -- applied after view rotation + -- sy > 0 LOWERS label + ax,ay,az are xyz position (in Angstroms; applied before view rotation) + mode == 1 indicates xyz position is an offset to the atom position + mode != 1 indicates xyz position is absolute + defaults: mode == 1; ax = ay = az = 0 + + +new feature: CASTEP energy reading +new feature: XCrysDen file reader +new feature: VASP POSCAR reader + +new feature: set cartoonLadders -- no bases, like PyMOL + +new feature: model CREATE n + -- allows "empty" model creation without atoms + -- n = number of models to create + -- defaults to 1 + +new feature: "all frames" toolbar button starts/stops PyMOL movies: if(_isMovie){if (_animating) {animation off}else{animation play}} else {frame *} + +new feature: Jmol/JmolData application -I flag accepts input from System.in and command piping: + + type t.spt | jmol -I start Jmol with this script + + Note: if you use a pipe, be sure to make "exitJmol" the last command of the script + + Add -o for output to System.out. Without the pipe, we are going to control Jmol + from a Jmol> prompt on the command line console + + jmol -Io see messages on input console + ...messages from Jmol + Jmol> background red;load 1crn.pdb;.... + ...messages from Jmol + Jmol> exitJmol + + Add -n for headless operation (will not exit automatically). + + type t.spt | jmol -Ion + + Note: if you use a pipe, be sure to make "exitJmol" the last command of the script + + Add -i for silent operation (no writing to System.output). + + +new feature: dots IGNORE {atom set} ON; + +new feature: Jmol or JmolData with -g0x0 and load filter "DORESIZE" will automatically + resize the image to what is given in the PyMOL file as its default size: + JmolData -ns "load t.pse filter 'DORESIZE'" -g0x0 -w "PNGJ:t.png" +bug fix: isosurface map property may not reference correct atom +bug fix: set isosurfacekey may not work with slabbing +bug fix: deleting atoms does not remove bioshape rendering +bug fix: isosurface in multi-model context saved in state with wrong model number +bug fix: PyMOL label fix, including fonts +bug fix: PyMOL rockets, nucleic acid rendering +bug fix: write JPG not working in JavaScript +bug fix: isosurface ... map property colors not cleared entirely before next mapping +bug fix: MSMS reader broken +bug fix: labels lost upon z-shading +bug fix: isosurface property temperature default smoothing broken in 13.1.13. +bug fix: {xxx}.cartoon = {xxx}.temperature.all fails to use correct values (also backbone, trace, etc.) +bug fix: isosurface translucent level not re-zeroed properly +bug fix: IDTF exporter with translucency fails +bug fix: commands f.sort() and f.reverse() fail. +bug fix: {;...;} syntax does not work in 13.1 +bug fix: select dots > 0 does not work +bug fix: JmolData broken + +code: PyMOL work; CGO command and class CGO extends DRAW preliminary only; preliminary putty; fix for putty+sticks issue +code: PyMOL reader localSettings +code: PyMOL putty hack for Cover1.pse removed; colix index error fixed +code: PyMOL slab and depth; better field of view; even better zslab/zdepth +code: PyMOL reader "backbone" (really a trace -- fixed width?) +code: PyMOL reader isosurface solvent +code: PyMOL reader and full surfaces, mixed bigEndian/littleEndian Pickle reading +code: PyMOL reader: cartoon_ladder_mode approximation as cartoons +code: PyMOL reader: includes cartoon type 1,4,7 -> trace +code: String JmolViewer.runScript(String script) runs script immediately and returns output buffer +code: continued work on PyMOL PSE file reader +code: simplification of JmolViewer interface and access to global parameters: + + // several; methods were deprecated and removed in 13.1.15. All are accessible via "getXxxx" methods: + + abstract public float getFloat(int tok); + abstract public int getInt(int tok); + abstract public boolean getBoolean(int tok); + + //abstract public int getAnimationFps(); see getInt(T.animationFps) + //abstract public boolean getShowHydrogens(); see getBoolean(T.showhydrogens) + //abstract public boolean getShowMeasurements(); see getBoolean(T.showmeasurements) + //abstract public boolean getAxesOrientationRasmol(); see getBoolean(T.axesorientationrasmol) + //abstract public int getPercentVdwAtom(); see getInt(T.percentvdwatom) + //abstract public boolean getAutoBond(); see getBoolean(T.autobond)) + //abstract public boolean showModelSetDownload(); deprecated -- was just "true" + + + +============================================================================= + +JmolVersion="13.1.14" + +new feature: JVXL vertex-only data encoding "none" allows hand-coding of JVXL files +new feature: isosurface efvet reader data "0" is "indicated colors" + -- isosurface "test.efvet" 0 + +JavaScript: WebGL fix involving Collections.list calling ArrayList.add() +JavaScript: disambiguation of Mesh() +JavaScript: changing to utf-8 String nonbinary reading of .po files +JavaScript: localization working + +code: cleaning up of Escape and checks for array types +code: JavaScript does not need a visible canvas to create images -- could allow for "headless" JS operation + +bug fix: isosurface boundbox plane .... +bug fix: isosurface boundbox {pt1} {pt2} plane ... +bug fix: JVXL 1.0 format reading broken +bug fix: MOL2 reader not properly assigning element symbols +bug fix: isosurface slab translucent broken when saved in state +bug fix: isosurface slab translucent mesh broken when saved in state +bug fix: JavaScript minimization fix +bug fix: sync socket connections not working +bug fix: "navigate percent" broken +bug fix: isosurface area/volume broken +bug fix: JavaScript WRITE IMAGE with HTML5 does not allow change of width or height +bug fix: WRITE PNGJ does not allow sizing of image +bug fix: backbone/spine defs do not take into account phosphorylated proteins. Better: + "@backbone protein&(_a>=1&_a<6|_a>=64&_a<72)|nucleic&(_a>=6&_a<14|_a>=72)", + "@spine protein&_a>=1&_a<4|nucleic&_a>=6&_a<14&_a!=12", +bug fix: getProperty fileInfo fixed and documented +bug fix: assign atom does not update selections for elements +bug fix: FileDropper broken +bug fix: LcaoCartoon "-sp3d" not working +bug fix: PyMOL PSE files not accessible by Jmol app File...Open or drag/drop +bug fix: incorrect calculation of RMSD for COMPARE and SMILES +bug fix: ModelKit menu "SHIFT to rotate" should read "ALT to rotate" +bug fix: starting applet console takes two clicks +bug fix: JavaScript SMILES bug (String.replaceAll() does not work +bug fix: JavaScript LOOP command not implemented + +============================================================================= + +JmolVersion="13.1.13" + +FEATURE CHANGE: multiple applets no longer share the same lighting space + +new feature: animation DISPLAY {atomset} + - applies a filter to a running animation to display only a certain set of atoms. + - for example: + load test.pse + animation display {act_site} // defined in test.pse + +new feature: animation MORPH n + - where n is a number of frames to be inserted between trajectories + - requires previous LOAD TRAJECTORY + or the loading of a PyMOL PSE file having a movie (automatically a trajectory) + - Jmol will do a linear morph as the animation runs. + - for example: + load test.pse + animation morph 3 + - could be used for a linear morph between just two structures: + load trajectory "test1.pdb" "test2.pdb" + animation morph 32 // animation will run 33 frames + +new feature: frame -x.y + - negative decimals indicate a linear morph is requested between two + trajectory frames. + - for example: + load test.pse + frame -3.5 + +new feature: set celShading TRUE -- produces cel shading effect + - see http://en.wikipedia.org/wiki/Cel_shading + - introduced by N David Brown + +new Feature: Experimenting with ellipsoid {atom set} and ellipsoid $isosurfaceID + +new feature: PyMOL PSE reader enhancements -- labels, simple surfaces, measures + +new feature: isosurface xxxx MAP property COLOR + -- allows inheritance of color from underlying atom (as in PyMOL) + +new feature: UHBD grid file reader +new feature: DelPhi grid file reader + +new feature: load =xxx/ where xxx is a database code that can be set up in the future by a user. + -- currently including mp MaterialsProject http://www.materialsproject.org/materials/%FILE/cif + -- along with ligand, nci, nmr, pdb, pubchem + -- see JmolConstants.databases for the full list. + -- note that nci can take an additional tag such as /names after the name, and pubchem can take one before it: + + load =mp/1 + load =nci/caffeine + load =pubchem/caffeine + load =pubchem/cid/2345 + print(load('=nci/caffeine/names')) + +bug fix: set picking IDENT when picking is already ident can cancel a pending measurement +bug fix: applet does not refresh when mouse exits with pending measurement +bug fix: labels within fog should be hidden +bug fix: load CENTROID does not always work -- wrong implicit normalization flag (was -1 instead of 1) +bug fix: property_xxx does not work (since 10/3/12, 13.1.7) +bug fix: The "show history" command is supposed to clear out the "show history" command + itself, but only if it is a top-level command (from the console), + but it does more than that if it is part of script("show history"). + Probably true with all recent versions of Jmol. +bug fix: isosurface binary file reading (MRC, CCP4, O, binary PMESH, etc.) broken +bug fix: JavaScript: zoomTo [seconds > 0]... and restore rotation|orientation [name] [seconds > 0] not waiting + +code: Refactoring class names to reduce JSmol JavaScript footprint + ScriptVariable --> SV + Token --> T + BitSet --> BS + BitSetUtil --> BSUtil + Colix --> C + Point3f --> P3 + Point3fi --> P3i + StringXBuilder --> SB + Vector3f --> V3 + JmolConstants --> JC + +code: shader functions removed from Colix; Shader class made nonstatic +code: refactored to allow scriptless JavaScript. (reduces initial core code load size by 25%, to 2.5Mb) + +============================================================================= + +version="13.1.12" + +new feature: PDB reading of X-PLOR using hybrid-36 and NAMD files using hex + -- see https://www.schrodinger.com/AcrobatFile.php?type=supportdocs&type2=&ident=530 + -- see http://cci.lbl.gov/cctbx_sources/iotbx/pdb/hybrid_36.py + +new feature: load xxx.pdb filter "TYPE i,n" + -- loads custom text fields into the "atomType" property of an atom upon customized PDB file loading + where i is the number of the column (starting with 1) and n is the number of columns + -- text is trimmed + -- e.g. load xxx.pdb filter "TYPE 73,4" loads four characters starting at column 73 as "atomType" (segID) + -- to convert to a numerical value, convert that to .property_foo: + load xxx.pdb filter "type 22,4"; {*}.property_seqNo = {*}.atomType + +new feature: PDB filter "TYPE 73,4=xxx" + -- loads four characters starting at column 73 (1-based) as "atomType" + -- loads only those atoms with atom types starting with "xxx" + +new feature: axes labels "a" "b" "c" "xxx" where "xxx" is the label for the origin + +bug fix: PDB file reading of remediated 1A7Y and 1E9W error due to too many CONECT bonds + -- now reads HEADER columns 63-66 for 4-digit PDB ID. + -- only if this ID is absent will the number of CONECT bonds be checked in decision to autobond + +bug fix/update: revision of the pages that make the About menu (application) in each language. + -- Some changes that had been formerly applied to the English page are now in all. + (Removal of copyright date in text) + -- All About_xx.html files are now encoded and saved in UTF-8 w/o BOM, + except Chinese which is in GB2312/GB18030. + -- Extended characters in tr and zh that had become corrupt across revisions were restored from old ones. + -- Several html header tags updated or added (html5 doctype, charset, lang) + -- Hopefully all will display correctly after these changes! + +JavaScript: fix for SMILES matcher and compare({*},{*},"isomer") + -- j2s reminder: Can't use Java new int[n][]; must use org.jmol.util.ArrayUtil.newInt2(n) +JavaScript: going to Float64Array for all noninteger arrays -- all numbers double + Note that this could cause differences with Jmol, but I think we will have to live with that. + The problem was with (new Float32Array([13.48]))[0] != 13.48. So instead of trying to force + floats, it seems to make more sense to me to force doubles, using Float64Array instead of Float32Array. + Thanks given to Ira Hanson for clearing this up for me. +JavaScript: JSmol writes PNG, PNGJ, JMOL, ZIP files from a web page +JavaScript: JSmol writes text files from a web page + +============================================================================= + +version="13.1.11" + +new feature: Jmol app "recent files" recognizes if file was drag-dropped or opened via "File Open" +new feature: color cartoons red blue + -- front/back colors + -- preliminary - only for hermiteLevel = 0, not cartoonFancy + -- a bit rough at the edges + -- not in state + +bug fix: 13.1 does not calculate partial charges (mark/reset fault in reading resource files) +bug fix: MOPAC2012 files not recognized +bug fix: patch 3581394 - small fixes for cartoon meshes +bug fix: 13.1.8 does not display translucent bonds when only bonds are translucent +JavaScript: flat cartoons for WebGL using mesh +JavaScript: adds XML model file readers + -- tested: VASP, XODYDATA, CML, Chem3D, MolPro, XSD + +code: refactoring for JavaScript popup/ModelKit menus +code: GT optimization, refactoring +code: Naga sockets upgrade to Naga-3_0. (MolecularPlayground and jsonKiosk) + +============================================================================= + +version="13.1.10" + +FEATURE CHANGE: set perspectiveMode removed + -- nonlinear version 10 perspective mode no longer supported + +bug fix: !quit was not stopping animation and vibration +bug fix: slowed zoomTo in Java version of 13.1.9 +bug fix: PDB occupancies for first atoms may be 0.0 instead of 1.0 (broken in 11.7) +bug fix: select *W does not work +bug fix: setEllipsoid... options not implemented for nonthermal ellipsoids in 13.0 or 13.1 +bug fix: nonthermal ellipsoids broken in 13.1. + +JavaScript: !quit and navigation enabled +JavaScript: script queue enabled +JavaScript: move thread implemented; needs navigation threads + +code: JmolApplet0_Navigate.jar and JmolApplet0_Parallel.jar added +code: Navigator separated from TransformManager11 +code: TransformManager10 removed +code: TransformManager11 combined with TransformManager + + +============================================================================= + +version=13.1.9 + +new feature: MO or (ISOSURFACE MO) DENSITY + -- electron density + -- same as MO [1] SQUARED +new feature: MO HOMO|LUMO|NEXT|PREV|[c1 n2 c2 n2...] SQUARED + -- Squares wave functions as it combines them. + -- That is, displays the collective electron density (if occupied) + -- if [...] is not given, groups orbitals by energy + -- examples: + load c6h6.smol;mo homo squared // displays symmetric squared sum of two degenerate orbitals + load co2.smol; mo homo squared // displays cylindrical electron density + mo next squared // lumo, provided homo was just displayed + +bug fix: Molden reader tweaks +bug fix: Jmol application toolbar picking tool should not select none +bug fix: ellipsoid rendering fails +bug fix: translucent echo oddities in Jmol 13.1.8 +bug fix: lost volume rendering in 13.1.8 +bug fix: CASTEP density reader fails to reset origin to 0 0 0 in mapping +bug fix: UTF files with BOM (byte order marker) present not read correctly +bug fix: UTF files within GZIP or ZIP files not read correctly +bug fix: set picking draw no longer works in Jmol 13.0 or 13.1 +bug fix: translucent echo backgrounds lost in 13.1.8 +bug fix: select resno=@{n+3} fails in 12.2, 13.0, and 13.1 +bug fix: isosurface AtomicOrbital broken in 13.1.8 + +JavaScript: removing ambiguity in AtomObject in setColix(short, int, int) and (int, short, int) +JavaScript: binary Spartan SMOL reader enabled + - nice IEEE calculator: http://www.merlyn.demon.co.uk/js-exact.htm#DW4 +JavaScript: delay, hover, animation, vibration, moveto, spin, timeout +JavaScript: full binary loading for JavaScript -- tested only in Firefox, but specifically + designed for Chrome's insistence that synchronized AJAX processes must not be binary +JavaScript: base64 translation of encoded binary strings from JS file reading + prefix: ";base64," initiates decoding. +JavaScript: com.json JSON package removed due to licensing issues +JavaScript: JSmol -- all references to InputStream.read(byte[]) --> InputStream.read(byte[], 0, len) + to speed file reading processing +JavaScript: JSmol -- float[].clone(), int[].clone() not supported in Java2Script +JavaScript: java.text.DateFormat not supported in Java2Script +JavaScript: Note -- org.jmol.adapter.smarter.Atom is not fully cloned + (anisoBorU and ellipsoid are not copied + and their values must be considered "final") + +code: adding quotes to above properties allows them to be used in JavaScript; j2sNative in JmolConstants.java +code: refactoring org.jmol.util into org.jmol.io and org.jmol.io2 + + +============================================================================= + +version=13.1.8 + +new feature: much better text rendering using 3-bit translucency + +bug fix: boundbox $pmeshID, center $pmeshID, and zoomto $pmeshID not implemented +bug fix: stronger (bold) frame labels +bug fix: no automatic change to bold for antialiasDisplay or PovRAY +bug fix: try/catch not working when embedded in another context +bug fix: JmolData not producing output for PRINT commands +bug fix: JmolData setting haveDisplay true, then failing to get mouse manager +bug fix: MRC file reader not setting default cutoff correctly +bug fix: (13.1 only) MRC/DNS6 file readers fail +bug fix: MRC surface file reader with symmetry error +bug fix: (13.1 only) minimization broken + +code: clearing font cache upon zap. +code: HTML5-only JavaScript full text working +code: HTML5-only JavaScript version working + +============================================================================= + +version=13.1.7 + +FEATURE CHANGE: getProperty isosurfaceInfo no longer returns vertex data + +new feature: getProperty isosurfaceData returns vertex data +new feature: set cartoonFancy -- creates elliptical ribbon for cartoons + -- if ribbonAspectRatio is its default value of 16, it is reset to 4 while cartoonFancy = true. + +bug fix: (13.1 only) reading of states with select BONDS fails to select bonds broken in 13.1.6 +bug fix: (13.1 only) centered/right-aligned text only aligned after first line +bug fix: export WRL missing various objects requiring transformMatrixInv +bug fix: export may be missing protein cartoon turn +bug fix: set ribbonAspectRatio improperly widens ribbon +bug fix: zShadePower should not be static (affecting all applets/Jmol application frames) +bug fix: write OBJ xxx.obj not working (but write xxx.obj is fine) +bug fix: cartoons (with hermiteLevel > 1) adjusted to have smooth + normals between segments (Alexander Rose) + also, hermiteLevel >= 6 now gives ellipse cross-section + recommended settings: set hermiteLevel 6;set ribbonAspectRatio 4 +bug fix: JmolControls.js had broken radio buttons +bug fix: DRAW {x y z} "title" can fail in multimodel cases with translucency + +============================================================================= + +version=13.1.6 + +new feature: showTiming + +new feature: CIF reader reads assembly information + -- load =1vif.cif filter "ASSEMBLY 1" + -- load =1vif.cif filter "ASSEMBLY 1;$A" # just label_asym_id A + -- load =1vif.cif filter "ASSEMBLY 1;!$C" # just label_asym_id values not C +new feature: LOAD "xxx.cif" APPEND "appendedData" @x + -- specifically for CIF files, reads a CIF file, appending string in variable + -- intentionally not documented. + -- feature particularly for RCSB (John Westbrook), so, for example: + + Var x = load("test.txt") + load "1vif-early.cif" append "appendedData" @x FILTER "assembly 1;$A" + + -- or in one line: + load "1vif-early.cif" append "appendedData" @{load("test.txt")} FILTER "assembly 1;$A" + +_pdbx_struct_assembly_gen.assembly_id 1 +_pdbx_struct_assembly_gen.oper_expression 1,2,3,4 +_pdbx_struct_assembly_gen.asym_id_list A,B,C +# +loop_ +_pdbx_struct_oper_list.id +_pdbx_struct_oper_list.symmetry_operation +1 x,y,z +2 y,x,-z+1 +3 -x+1,-y+1,z +4 -y+1,-x+1,-z+1 +# + +new feature: LOAD "xxx.cif" APPEND DATA "appendedData" .... end "appendedData" + -- specifically for CIF files, reads a CIF file, appending string in lines of script + -- intentionally not documented + -- most important for saving the state: + +load "1vif-early.cif" append data "appendedData" +_pdbx_struct_assembly_gen.assembly_id 1 +_pdbx_struct_assembly_gen.oper_expression 1,2,3,4 +_pdbx_struct_assembly_gen.asym_id_list A,B,C +# +loop_ +_pdbx_struct_oper_list.id +_pdbx_struct_oper_list.symmetry_operation +1 x,y,z +2 y,x,-z+1 +3 -x+1,-y+1,z +4 -y+1,-x+1,-z+1 +# +end "appendedData" FILTER "assembly 1;$A" + + -- option reserved to allow different data names for different purposes + -- not general yet -- specific to CIF reader. + +bug fix: PDB 4B2Q, with faulty (incomplete) REMARK 350 not read + +code: successfully refactored for JavaScript + (see http://chemapps.stolaf.edu/jmol/jsmol-10-1/jsmol2.htm) + -- note that all code development is done in Jmol, then + Java src code is transferred to JSmol project + + -- adding: + javax.util.BitSet + javax.util.StringXBuilder + -- streamlining: + javax.vecmath... + -- removed all references to StringBuffer + -- StringXBuilder allows optimization of performance in JavaScript + -- workaround for Java2Script compiler bug setting "char x;" to 0 + -- Java2Script compiler is not distinguishing int[] from float[] when creating the array + -- StringXBuilder takes care of adding ".0" to floats and doubles, but + we need to be on the lookout for not places where we are constructing + a string where the difference between an int and a float is significant. + -- optimize class hierarchy return by cataloging classes + as org_jmol_xxxx in addition to org.jmol.xxxx + -- tie in graphics on JavaScript side + -- add fonts + -- add "billboard" objects such as labels, 3D echos, etc. + -- add 2D echos + -- ultimately write an asynchronous version of JSmol + +code: org.jmol.jvxl.readers classes accessed reflexively (for JavaScript optimization) +code: JSmol classes incorporated into Jmol code -- org.jmol.awtjs, org.jmol.appletjs, org.jmol.exportjs +code: refactored for JavaScript (mostly removing ambiguity in method names) + + +============================================================================= + +version=13.1.5 + +bug fix: CASTEP PHONON files not loading + +code: refactored for JavaScript + +============================================================================= + +version=13.1.4 + +new feature: ISOSURFACE PLANE ... MAP ... LATTICE {i j k} [volume data] + -- allows periodic volume data to be mapped to a plane + based on a specified translational lattice + -- for example: isosurface plane x=2 map LATTICE {1 2 2} "data.dat" + +new feature: POLYHEDRA {atom1} to {atoms_including_atom1} + -- polyhedra with or without central atom, but with a reference atom + +bug fix: translate selected x ... bug + +bug fix: ISOSURFACE saving in state broken 7/30/12 in 13.0.RC3 +bug fix: simple isosurface PLANE not saved in state +bug fix: isosurface command with MAP from state when saved to state may fail +bug fix: 13.1.2 offsets label positions incorrectly + +code: refactored for JavaScript + +============================================================================= + +version=13.1.3 + +bug fix: 13.1.2 breaks loading of ZIP files +bug fix: CUBE reader reading atom Z numbers as partial charge +bug fix: 13.1.2 breaks LOAD ? + +============================================================================= + +version=13.1.2 + +new feature: cache ADD "filename" + -- adds a file into the memory cache as a set of bytes +new feature: cache REMOVE "filename"|ALL + -- removes a file from the cache +new feature: show cache + -- displays the cache as an array +new feature: cache() function + -- returns the cache as an associative array {filename: nBytes, filename: nbytes,...} +new feature: write INLINE "xxxx" "filename" + for example: write INLINE "testing" "myfile.txt" + for example: write INLINE @{load("$caffeine")} "caffeine.mol" +new feature: set defaultDropScript for drag-drop and File|Open + +bug fix: translate x 0 does not recenter the model in the window +bug fix: PDB polymers of length 1 allow size to be set and appear {visible} but are not +bug fix: OPEN dialog doesn't allow for no PDB cartoons. +bug fix: open dialog for 1-residue PDB files does not show atoms. +bug fix: pngj storage of Spartan directory zip files or Spartan directories cannot be read + because the PNGJ files created do not contain the necessary files from the directory + +code: (JmolViewer) public void cacheFile(String fileName, byte[] bytes) + -- allows a mechanism for applets or embedding apps to deliver file content as bytes + -- for applets, first getPropertyAsJavaObject("Viewer") +code: refactored for Java2Script due to inner class bug there. + +============================================================================= + +version=13.0.1 + +APPLET: +-- a new OOP JavaScript interface (Jmol-JSO) + allowing nonJava options such as ChemDoodle and GLmol + as well as JME/JSpecView connectivity +-- JmolData full "headless" operation for server-side processing + +BIOPHYSICS: +-- COMPARE command + +FILE READING: +-- reading of JCAMP-DX files having structure/spectra assignment data + using ##$MODELS and ##$PEAKS (see http://chemapps.stolaf.edu/jmol/jspecview) +-- Gaussian log reading of Natural Transition Orbitals +-- automatic PNGJ file caching for immensely faster loading of PNGJ files from remote servers + +FILE WRITING: +-- write PNGJ files encapsulate all model file data into one PNG file +-- write image 400 400 PNGJ "http://....." POSTs JMOL or IMAGE or structure to a server as application/octet-stream +-- write MOL adds partial charge data as > in SDF format +-- multiple-scene PNGJ files allowing minimal or full data loading and scripted animations + +ISOSURFACES: +-- isosurface caching +-- isosurface MOVE [[...matrix4f...]] moves/rotates an isosurface (for the state) + +MINIMIZATION: +-- MMFF94/UFF minimization and energy calculation + +MOLECULAR DATA: +-- show CHEMICAL +-- show NMR + +MOLECULAR PLAYGROUND: +-- MolecularPlayground -- remote status and remote control + +SOLID-STATE PHYSICS: +-- solid state physics support + +SPECTROSCOPY: +-- integration of JSpecView into Jmol, including 2D spectral display and manipulation + +STRUCTURE SEARCHING: +-- extended Jmol SMARTS searching +-- PubChem search for name (which can be a CAS number), cid, or SMILES using ":" + +============================================================================= + +version=13.0.RC7_dev + +bug fix: isosurface CAVITY not saved in state + +============================================================================= + +version=13.0.RC6 + +bug fix: isosurface CAVITY not saved in state +bug fix: Gaussian reader not reading "AO basis set in the form of general basis input" properly ("Gen" keyword) +bug fix: Gaussian reader not reading "7D 0" correctly +bug fix: Trajectories still broken for PDB files + +code: all import foo.*; removed, specified + +============================================================================= + +version=13.0.RC5 + +bug fix: broke trajectories in 13.0.RC4 + +============================================================================= + +version=13.0.RC4 + +new feature: write SCENE PNG|PNGJ "xxxx.spt" option to create PNG or PNGJ files (same file, just different extension) +new feature: "menu" as sole contents of a script pops up the context menu + -- joins category of special commands, including "exit" "pause" and "quit" + +bug fix: load append TRAJECTORY (upper case) fails +bug fix: load append trajectory "$mannose" fails (loads two models) +bug fix: load trajectory "maleic.cif" fails with cryptic error message (not appropriate for trajectory loading) +bug fix: undocumented and inaccurate CALCULATE VOLUME removed + +============================================================================= + +version=13.0.RC3 + +new feature: automatic PNGJ file caching for immensely faster loading +new feature: write MOL adds partial charge data as > in SDF format +new feature: isosurface CACHE .... + -- parameter CACHE along with isosurface creation or alone instructs Jmol to + immediately create JVXL data for the specified surface and to load that data instead. + The surface remains in memory (in this version of Jmol) can can be used again + using cache://isosurface_ where is the isosurface ID such as "isosurface1". + -- The command ISOSURFACE CACHE alone will cache the current isosurface + -- If the cache is no longer needed, then RESET CACHE will release the memory used to hold the JVXL data for the isosurface + -- The result should be essentially equivalent to the original command. + (It is recommended that the original be a relatively simple command, because not all nuances + of an isosurface may be stored in the JVXL data.) + -- THIS OPTION IS NOT COMPATIBLE WITH SAVING THE STATE AS AN SPT FILE. + -- Instead, one needs to save the state in PNGJ or JMOL format, where the cached isosurface + can be reloaded from a file saved in the PNGJ or JMOL zip directory + +bug fix: load a model, then load append TRAJECTORY -- will fail +bug fix: load APPEND xxx where xxx is FILE, INLINE, SMILES, TRAJECTORY, MODEL + all save incorrect LOAD command in state +bug fix: shelx reader (.res) not assigning space group name or applying normalization + +============================================================================= + +version=13.0.RC2 + +bug fix: isosurface molecular producing artifacts +bug fix: isosurface select {...} molecular not excluding all other atoms for troughs +new feature: Gaussian log reading of Natural Transition Orbitals +new feature: isosurface MOVE [[...matrix4f...]] moves/rotates an isosurface (for the state) + +bug fix: isosurface moved by atom connection not saved correctly in state +bug fix: isosurface SET n not read properly from JVXL file. +ant fix: changing the way Jmol.properties is handled vis-a-vis # and underscores +bug fix: isosurface SOLVENT producing artifacts --- needed minimum resolution +bug fix: isosurface with selected set not delivering just those vertices for within distance calc +bug fix: isosurface CONNECT in documentation but never implemented +bug fix: isosurface SET n not saved in state or JVXL file. +bug fix: Gaussian reader fails for 2-digit basis orbital names such as "12XX" +bug fix: PNGJ creation not handling same-file or same-name issues. +bug fix: isosurface SOLVENT producing cavity-like artifacts +bug fix: SCENE writing with toggle (pause scene 2 ... pause scene 2) in error +bug fix: SCENE min spt script needs wrapping by pathForAllFiles +bug fix: isosurface MINSET or SET not compatible with SLAB +bug fix: show $d1 where d1 is a DRAW object broken +bug fix: calculate hydrogens incorrect for proteins + +============================================================================= + +version=13.0.RC1 + +-- a new OOP JavaScript interface allowing nonJava options and JME/JSpecView connectivity +-- MMFF94/UFF minimization and energy calculation +-- integration of JSpecView into Jmol, including 2D spectral display and manipulation +-- reading of JCAMP-DX files having structure/spectra assignment data + ##$MODELS and ##$PEAKS (see http://chemapps.stolaf.edu/jmol/jspecview) +-- multiple-scene PNGJ files allowing minimal or full data loading and scripted animations +-- write PNGJ files encapsulate all model file data into one PNG file +-- extended Jmol SMARTS searching +-- show CHEMICAL +-- show NMR +-- solid state physics support +-- MolecularPlayground -- remote status and remote control +-- COMPARE command +-- JmolData full "headless" operation for server-side processing +-- PubChem search for name (which can be a CAS number), cid, or SMILES using ":" +-- isosurface caching +-- write image 400 400 PNGJ "http://....." POSTs JMOL or IMAGE or structure to a server as application/octet-stream + +============================================================================= + +version=12.3.33 (13.0.RC1) + +new feature: full JSpecView support for NMR + -- integration, peak listing, measurements + -- printing with peak measurements +new feature: measure(a b "minArray") + -- measures minimum distance from atom set a to atom set b atom by atom + -- return array with number of elements corresponding to the number of selected atoms + -- for example: {1.1}.property_distTo12 = measure({1.1}, {1.2} "minArray"); color property_distTo12 +new feature: {x}.property_d = [....] + -- allows for [....] to have length of the number of atoms in {x} + in which case the values are assigned on a 1:1 basis +new feature: PDB reader reads gromacs-created "pdb_wide_format" files + and also automatically reads PQR based on gromacs REMARK + +bug fix: select within(1.0, withinallmodels, 1.1) and 1.2 causes exception +bug fix: script xxx(yyy).spt broken + +============================================================================= + +version=12.3.32 + +FEATURE CHANGE: LOAD "myfile.xxx" with no additional parameters + where xxx is "png" or "pngj" or "spt" + now assumes these are scripts and runs SCRIPT "myfile.spt" instead + +new feature: write SCENE "xxxx.spt" + -- creates pngj files + -- using "xxxx.png" will STILL USE "xxxx.spt" but will create PNGJ files with ".png" extensions + -- scene creation with linked PNGJ files + -- xxxx.spt should include "pause scene n" commands, which are then + used to separate the script into separate scenes. "n" must be an integer. + -- Two files are created for each scene (pngj unles: + xxxx_scene_n.min.pngj very small; does not contain anything more than + an image, JmolManifest.spt, and scene.spt + xxxx_scene_n.all.pngj adds all necessary files, plus script.spt + -- Either of these files can be used, but if x.min.pngj is used, + then x.all.pngj needs to be present as well in the same directory. + +new feature: drawHover displays ID for isosurface and reports to hoverCallback +new feature: load "$$xxxxx" loads 2D version, not 3D (used for JmolData connection with JME) + -- basically, use of two $ signs results in drop of "&get3d=True" from NCI call + +bug fix: compiler not synchronized; allows jmolEvaluate() to fail if two threads access it simultaneously +bug fix: getproperty isosurface after a "no-surface" isosurface call like load $water;isosurface sasurface fails +bug fix: color for hbonds/ssbonds backbone incorrect + +============================================================================= + +version=12.3.31 + +bug fix: isosurface plane ... within ... map ... fails +bug fix: write broken in 12.3.30 + +============================================================================= + +version=12.3.30 + +new feature: atom properties sx, sy, sz, and sxyz -- screen coordinates +new feature: app flag -r restricts file access + -- like -R, but allows reading of ".spt" files +new feature: load("http://.....?POST?_PNGJBIN_") + -- accompanies load("http://....?POST?_PNG_") and load("http://....?POST?_PNGJ_") + -- sends PNGJ image to server as byte array instead of as application/octet-stream + instead of Base64-encoded string and application/x-www-form-urlencoded + -- return value is whatever server is set up to send +new feature: select within(distance, $drawID) + +bug fix: isosurface plane... map property temperature not working +bug fix: PNG files written by Jmol from 12.3.7 - 12.3.29 have incorrect + checksum. Browsers do not seem to care, but Java does + when loading a background image in Jmol! +bug fix: background image NONE fails +bug fix: if(...) statement (no braces) broken in 12.3.21 + +============================================================================= + +version=12.3.29 + +new feature: (JmolCore.js/JmolApplet.js/JmolCD.js/JmolApi.js) + -- changes "useChemDoodleOnly" to "disableJmol" + in preparation for non-ChemDoodle plug-ins similar to JmolCD.js + -- allows for default values for Info + -- adds Info.src + -- similar to src in an tag + -- turned into LOAD "xxx.png" + -- more efficient coding +new feature: set MESHSCALE (default 1) also allows isosurface/mo mesh scaling + -- was DOTSCALE in 12.3.26, but that is not appropriate +new feature: Mopac archive reader, including internal coord. defs + -- use FILTER "NOCENTER" to NOT center atoms in unit cell + -- use CENTROID for complete molecules with centroids within unit cell + -- use PACKED CENTROID for complete molecules with any atoms within unit cell + -- properties stored in auxiliaryInfo + use getProperty auxiliaryInfo or x = getProperty("auxiliaryInfo".foo) to retrieve +new feature: set pathForAllFiles "..." + -- all files, local or remote, will be taken from the indicated path + -- the indicated path may be a zip file entry (ending with "|") + -- automatically reset to '' in case of an unrecoverable error in execution + -- used for creating JMOL files containing user scripts instead of a state + -- disallows all writing and image creation + -- scripts including prompts to read wildcard files (for example, "load ?") + will still prompt for those and read them properly +new feature: write SCRIPT ["scriptFileName", "filename2","filename3",...] PNGJ|JMOL... + -- syntax is WRITE SCRIPT followed by an array of file names + then whatever else is necessary to create the PNGJ or JMOL file + -- for example: write script ["wind.spt"] test.jmol + -- Creates a single PNGJ or JMOL file that instead of containing the state + contains the script and additional files listed by the user. + The first script is run, and it is presumed that the other files are + needed for full execution of that script. + -- Allows for creating PNGJ and JMOL files that run as animations, not just final states. + -- Jmol will automatically add any files current to the state, + but other files not indicated by the state (script files especially) + required for the script to run need to be indicated by the user. + -- When the script is executed, pathForAllFiles is set to the zip file + itself. Thus, even scripts containing references such as "script2.spt" or "=xxxx" + can be run, provided the user supplies script2.spt xxxx.pdb.gz as one of the required filenames. + -- Note that if a file is saved locally using LOAD =xxxx AS t.pdb, Jmol will automatically use + the local file reference to t.pdb, not the RCSB reference. + -- If the file is loaded using only LOAD =xxxx, then Jmol will reload the + remote file and store it in the PNGJ/JMOL file as xxxx.pdb.gz. + +bug fix: Jmol 12.3.28 breaks writing JMOL/PNGJ files + -- Jmol 12.3.28 release DELETED +bug fix: ModelKit mode creating atoms after load "@x" fails +bug fix: script javascript:xxxx() broken for Jmol object javascript +bug fix: JmolCore.js fix for getPropertyAsArray +bug fix: draw arrows not adjustable using set picking draw +bug fix: Exception for select within(molecule,...) when atoms have been deleted + +============================================================================= + +version=12.3.28 + +DELETED 6/10/2012 due to breaking of JMOL/PNGJ format + +new feature: isosurface ... map PERIODIC ... + -- allows mapping grid-based data beyond the unit cell defining its grid +new feature: write VIBRATION n + -- writes 20 * n frames + -- n periods + -- some issues with first frame and value of n +new feature: load PACKED CENTROID + -- only complete molecules having one or more atoms within or on the face of the unit cell + -- may not preserve # of atoms of unit cell + -- reverts to simple PACKED if this is a single-molecule solid (such as diamond) +new feature: unitcell $isosurfaceID +new feature: unitcell [{center}, {a}, {b}, {c}] + -- sets unit cell for current model only +new feature: "plot data" command by itself opens a new frame with just one atom in it, at (0,0,0) +new feature: isosurface SLAB BRILLOUIN (or WIGNERSEITZ) + -- transposes an isosurface into the Brillouin-zone/Wigner-Seitz unit cell + -- based on the isosurface's vectors if there is no unit cell for this model. + -- for creating isosurfaces of Fermi surfaces + +bug fix: LOAD with SPACEGROUP or RANGE or UNITCELL should default to {555 555 -1} (packed) lattice +bug fix: JVXL reading of mapped data does not use file's rendering option for lighting +bug fix: default measure dotted lines are too thin for export +bug fix: measures not offset correctly when given width in line. + +============================================================================= + +version=12.3.27 + +new feature: [menu] vibration [*,/] 2 +new feature: XSF isosurface reader +new feature: load CENTROID + -- only complete molecules having centroid in unit cell + -- preserves # of atoms of unit cell + +bug fix: write PNGJ broken in 12.3.26 +bug fix: 12.3.26 breaks Jmol/JspecView connection +bug fix: draw pointgroup scale x.x -- changing x.x does not revise point group +bug fix: reading of JVXL-version 1 (nonXML) files does not display colors +bug fix: translate y 10 works, but translate Y 10 does not + +============================================================================= + +version=12.3.26 + +new feature: Jmol SMARTS searching can include full Jmol selection syntax within + an atom primitive using the "atomType" option and "select:": + + load caffeine.xyz + print {*}.find('{c}$(select _N and connected(2, _C))') + +new feature: model ID "xxx" (or frame ID....) + -- sets the model's ID to "xxx" + -- can be used to switch to that model using model "xxx" + -- can be targeted file-specifically using "filename#xxx" + -- if two models have the same ID and no filename is given, + then the first model found becomes the current model + -- used for correlating non-Jmol synced applets +new feature: script "t.spt"(...variables...) + -- quotes are optional if file name does not include " " or "(" + -- "script" is optional if file name is quoted or ends with ".spt" + -- allows passing variables to a script much like a function call + -- variables will be in VAR named "_arguments" within that script (like JavaScript) + -- _arguments, like all arrays in Jmol, is 1-based, 0-terminated (unlike JavaScript) + -- _arguments is unsettable by the user + -- for standard script functions, _arguments will be [] + + -- for example, if test.spt is simply "show _arguments", then + load $caffeine + test.spt({*}, {*}.xyz ,35, [1,2,3,4]) + +will output: + + _arguments = [({0:23}),{-0.086670786 -0.02787502 5.6667876E-4},35,[1,2,3,4]] + +new feature: set forcefield "UFF" or "MMFF" + -- default is MMFF + -- automatically switches to UFF if atom types cannot be set + -- minimizationCallback reports actual force field used + +new feature: set energyUnits kJ|kcal +new feature: antialiased display and image creation uses larger mesh scaling for cleaner look + +code: adding empirical rules to MMFF94 calculation + +checkmm.spt;checkAllEnergies + +checking calculated energies for 761 models +1 COMKAQ E= -7.3250003 Eref= -7.6177 diff= 0.2926998 +2 DUVHUX10 E= 64.759995 Eref= 64.082855 diff= 0.6771393 +3 FORJIF E= 35.978 Eref= 35.833878 diff= 0.14412308 +4 JADLIJ E= 25.104 Eref= 24.7038 diff= 0.4001999 +5 PHOSLA10 E= 111.232994 Eref= 112.07078 diff= 0.8377838 +6 PHOSLB10 E= -93.479004 Eref= -92.64081 diff= 0.8381958 + +for 761 atoms, 6 have energy differences outside the range -0.1 to 0.1 +with a standard deviation of 0.05309403 + +bug fix: nested SMARTS strings can give incorrect response +load data "mol" +C:/jmol-dev/bobtest/t6.mol +__Jmol-12_05191218593D 1 1.00000 0.00000 0 +Jmol version 12.3.26 2012-05-19 18:34 EXTRACT: ({0 3 4}) + 3 2 0 0 0 0 1 V2000 + 2.89480 4.81990 0.01710 N 0 0 0 0 0 0 + 3.52580 2.75730 -0.17290 N 0 0 0 0 0 0 + 3.94370 4.03730 -0.25710 C 0 0 0 0 0 0 + 1 3 2 0 0 0 + 2 3 1 0 0 0 +M END +end "mol" +select search("$([#7][#6]([#7&!$([#7][O])])=[#7])") +show selected + was returning 1 atom, but should be 0 (because there are only two N atoms!) +bug fix: measurementUnits = "au" does not work +bug fix: select 1.0 fails +bug fix: COMPARE broken +bug fix: Writing file into .jmol file after reading it from another results in the whole + zip file being copied into the new .jmol file. + + +============================================================================= + +version=12.3.25 + +new feature: MMFF94 single point energy calculation and minimization + set forcefield "MMFF" + checkmm.spt + checkmm "AMHTAR01";minimize energy + AMHTAR01 Initial E = 66.180 kcal/mol # should be 66.18011 + checkmm "ARGIND11";minimize energy + ARGIND11 Initial E = -207.436 kcal/mol # should be -207.43598 + +validation complete. The following 13 structures (of 761) do not validate to within 0.1 kcal/mol + +1 COMKAQ E= -7.3250003 Eref= -7.6177 diff= 0.2926998 + -- MMFF94 ignores 1 of 5-membered ring torsions for a 1-oxo-2-oxa-bicyclo[3.2.0]heptane + -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate + +2 DUVHUX10 E= 64.759995 Eref= 64.082855 diff= 0.6771393 + -- MMFF94 ignores 5-membered ring issue for S-S-containing ring + -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate + +3 FORJIF E= 35.978 Eref= 35.833878 diff= 0.14412308 + -- MMFF94 uses some sort of undocumented empirical rule used for 1 torsion not found in tables + -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate + +4 JADLIJ E= 25.104 Eref= 24.7038 diff= 0.4001999 + -- ignores 5-membered ring for S (note, however, this is not the case in BODKOU) + -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate + +5 KEPKIZ E= 61.127 Eref= 61.816277 diff= 0.68927765 + -- MMFF94 requires empirical rule parameters + -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate + +6 PHOSLA10 E= 111.232994 Eref= 112.07078 diff= 0.8377838 + -- MMFF94 ignores all 5-membered ring torsions in ring with P + -- (note, however, this is not the case in CUVGAB) + -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate + +7 PHOSLB10 E= -93.479004 Eref= -92.64081 diff= 0.8381958 + -- MMFF94 ignores all 5-membered ring torsions in ring with P + -- (note, however, this is not the case in CUVGAB) + -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate + +empirical-rule-requiring models: (all are nonaromatic heterocycles) + +8 ERULE_01 E= -22.582 Eref= -21.515108 diff= 1.0668926 +9 ERULE_02 E= 29.407999 Eref= 29.799572 diff= 0.39157295 +10 ERULE_03 E= -3.326 Eref= -2.9351802 diff= 0.3908198 +11 ERULE_04 E= -2.572 Eref= -2.31007 diff= 0.26193 +12 ERULE_07 E= 2.873 Eref= 3.16775 diff= 0.29474998 (fixed in 123.3.26 by correcting angle calc) +13 ERULE_08 E= 33.734 Eref= 34.41382 diff= 0.6798172 + + +bug fix: compare {22-31} {7-16} subset {*.ca} should work without ATOMSET next +bug fix: compare {22-31} {7-16} should work, using {spine} as default +bug fix: isosurface molecular for certain flat models will fail to cap H atoms +bug fix: calculate partial charge fails after ModelKit changes + (because Bond[] bonds field not cleaned +bug fix: dipole command fails after ModelKit changes + +code: refactoring of minimize for generalization + +============================================================================= + +version=12.3.24 + +new feature: SMARTS search for atom type using quotes: ["37"]-["58"] +new feature: SMARTS option /aromaticdouble/ allows distinguishing between aromatic single and double bonds +new feature; SMARTS option /aromaticstrict/ checks 6-electron rule for aromatics +new feature: CALCULATE partialCharge does MMFF94 charge calculation + -- all atom types validated + -- charge values validated to +- 0.001001 over the 761-atom dative validation set +new feature: isosurface CACHE + -- creates a JVXL version of the surface (possibly outside of Jmol, but that's not implemented yet) + -- saved by write JMOL as a JVXL file "isosurface_ID" + (where ID is the original isosurface ID) within the JMOL zip collection + -- Warning! not saved using write SPT + ***ALWAYS*** use write JMOL or write PNGJ after using the CACHE option, not write SPT + -- invoked by isosurface file "cache://isosurface_ID" + -- cleared by reset CACHE + -- allows rapid recreation of an isosurface across file loads + -- possibly limited to a subset of surface types + -- not fully tested + +new feature: write ... "http://....." + -- POSTs JMOL or IMAGE or structure or whatever to a server as application/octet-stream + -- to be used in Proteopedia for saving a fully self-contained state + +new feature: load filter "CENTER" -- centers models on the first model as they are loaded +new feature: load filter "NAME=..." -- loads only those models with a name that contains ... +new feature: calculate partialcharge + -- works on currently selected set of atoms + -- uses MMFF94 charge calculation (unverified; most certainly not quite correct) + -- preliminary only; working on validation + +bug fix: x = {"c1": 3}; if(x["c1"]) should return TRUE +code: Simple way to assign MMFF94 atom types and partial charges +-- N,S-containing compounds not validated; CHO-containing compounds partially validated +bug fix: MOL2 reader assuming PDB for non-PDB format files (such as MMFF94-dative.mol2) +bug fix: label %W not working properly for non-PDB files +bug fix: write MOL does not save partial-single bond as type 8 ("ANY") +bug fix: set echo IMAGE fails (since 12.3.20) + +code: (applet) JmolCore.js free of need for JSON + +============================================================================= + +version=12.3.23 + +new feature: (applet) new interface for Jmol as an HTML object as well as full support on all platforms + using a ChemDoodle fall-back option for Java/Applet-challenged platforms (iPad,iPhone,Android) + + Note that Jmol.js is no longer required, but not all of the features of Jmol.js are in place yet + + allows Jmol applets to be created on a page with more flexibility and extendability + possibly using infrastructure of ChemDoodle for multiplatform doodlable structures + + required/optional libraries (preferably in the following order): + + jQuery.min.js -- required for ChemDoodle or any server-based options + gl-matrix-min.js -- required for ChemDoodle option + mousewheel.js -- required for ChemDoodle option + ChemDoodleWeb.js -- required for ChemDoodle option + JmolCore.js -- required + JmolApplet.js -- required + JmolCD.js -- required for ChemDoodle option + JmolApi.js -- required + + Allows Jmol-like objects to be displayed on Java-challenged (iPad/iPhone) + or applet-challenged (Android/iPhone) platforms, with automatic switching to + whatever is appropriate. You can specify "ChemDoodle-only", "Jmol-only", "Image-only" + or some combination of those -- and of course, you are free to rewrite the logic below! + + Allows ChemDoodle-like 3D and 3D-faked 2D canvases that can load files via a privately hosted + server that delivers raw data files rather than specialized JSON mol data. + Access to iChemLabs server is not required for simple file-reading operations and + database access. PubChem and image services are provided by a server-side PHP program + running JmolData.jar with flags -iR (at St. Olaf College). + For your installation, you should consider putting JmolData.jar and jmolcd.php + on your own server. Nothing more than these two files is needed on the server. + + The NCI and RCSB databases are accessed via direct AJAX if available (xhr2). + +new feature: PubChem search for name (which can be a CAS number), cid, or SMILES using ":" + from pubChemFormat = "http://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/%FILE/SDF?record_type=3d"; + (many thanks to Evan Bolton and Paul Thiessen (NIH) for their assistance on this. + load :name:tylenol # or load :tylenol + load :cas:103-90-2 # or load :103-90-2 + load :cid:1983 # or load :1983 + load :smiles:C/C=C/C + +bug fix: callback functions for modular calls: applet0.readCallback(....) +bug fix: Molden reader problems reading frequencies +bug fix: VASP reader with {n n n} and vibration vectors problem +bug fix: in 2bat, SIA was considered part of the carbohydrate chain because we were not checking bonding + +============================================================================= + +version=12.3.22 + +new feature: Jmol extensions to ChemDoodle allow display of Jmol, ChemDoodle-equivalent (simple model only), + or just an image with server-side JmolData.jar support. + + JmolCD.js -- Jmol ChemDoodle extension author: Bob Hanson, hansonr@stolaf.edu 4/16/2012 + + requires ChemDoodleWeb.js and ChemDoodleWeb-libs.js + prior to JmolCD.js + + allows Jmol applets to be created on a page with more flexibility and extendability + using much of the infrastructure of ChemDoodle. + + allows Jmol-like objects to be displayed on Java-challenged (iPad/iPhone) + or applet-challenged (Android/iPhone) platforms, with automatic switching to + whatever is appropriate. You can specify "ChemDoodle-only", "Jmol-only", "Image-only" + or some combination of those -- and of course, you are free to rewrite the logic below! + + allows ChemDoodle-like 2D and 3D canvases that can load files via a privately hosted + server that delivers raw data files rather than specialized JSON mol data. + access to iChemLabs server is not required for simple file-reading operations and + database access. Database and image services are provided by a server-side PHP program + running JmolData.jar with flags -iR. + + In this case, the NCI and RCSB databases are accessed via a St. Olaf College server, + but for your installation, you should consider putting JmolData.jar and jmolcd.php + on your own server. Nothing more than these two files is needed on the server. + +new feature: write CD (simple ChemDoodle JSON format -- atoms and bonds only) + For example: java -jar JmolData.jar -iRJ "load $tylenol;print write('cd')" + generates: {"mol":{"a":[{"x":0.20549999,"y":0.8303,"z":0.3823},{"x":0.6906,"y":-1.4656999,"z":-0.14220001},{"x":1.5485,"y":1.1359,"z":0.2829},{"x":2.0332,"y":-1.1585,"z":-0.24180001},{"x":-3.9799001,"y":-0.1617,"z":0.1295},{"l":"H","x":4.2731,"y":0.35680005,"z":0.7047},{"l":"H","x":-1.8655999,"y":-1.6522,"z":0.6012},{"x":-0.2273,"y":-0.4718,"z":0.17},{"x":2.4650002,"y":0.1425,"z":-0.029099999},{"l":"O","x":-2.1741998,"y":1.1759001,"z":-0.59169996},{"l":"O","x":3.7872,"y":0.4441,"z":-0.1268},{"x":-2.5170999,"y":0.1262,"z":-0.089999996},{"l":"N","x":-1.5898,"y":-0.78279996,"z":0.2712},{"l":"H","x":-0.50740004,"y":1.6029,"z":0.6296},{"l":"H","x":0.35450003,"y":-2.4786,"z":-0.3079},{"l":"H","x":1.8853,"y":2.1487997,"z":0.4477},{"l":"H","x":2.7472,"y":-1.9314001,"z":-0.485},{"l":"H","x":-4.3884,"y":-0.65880007,"z":-0.7504},{"l":"H","x":-4.0964003,"y":-0.8086,"z":0.9991},{"l":"H","x":-4.513,"y":0.7739,"z":0.2986}],"b":[{"b":8,"e":10},{"b":9,"e":11,"o":2},{"b":7,"e":12},{"b":11,"e":12},{"b":0,"e":7,"o":2},{"b":1,"e":7},{"b":0,"e":2},{"b":2,"e":8,"o":2},{"b":3,"e":8},{"b":1,"e":3,"o":2},{"b":4,"e":11},{"b":5,"e":10},{"b":6,"e":12},{"b":0,"e":13},{"b":1,"e":14},{"b":2,"e":15},{"b":3,"e":16},{"b":4,"e":17},{"b":4,"e":18},{"b":4,"e":19}]}} + (this ended up NOT being used in the Jmol extension to ChemDoodle) +new feature: (JmolData) -iR (silent, restricted) mode sends output from PRINT and ECHO commands to SYSOUT + and also restricts the application to no local file read/writing + +bug fix: "connect;" command in states saved prior to 11.9.24 and then read by versions after that + The order in which Jmol created bonds changed in 11.9.24. Due to this, Jmol must check for the + version number of Jmol used to create a state, and if it was before this point, it must + apply "legacy" autobonding methods. Unfortunately, if that state from pre-11.9.24 versions + contains the "connect;" command, which it would if someone used the CONNECT command by itself + to regenerate all bonds in a model PRIOR to saving the state (Proteopedia does this), then + those scripts will be misread in versions 11.9.24-12.2.21/12.3.21. +bug fix: antialiasDisplay does not show drag-box properly +bug fix: SMARTS syntax [${xxx}n] and [${xxx}m-n] changed to [$n{xxx}] and [$m-n{xxx}] + to avoid conflict with specifying isotope + +============================================================================= + +version=12.3.21 + +new feature: app flag -R restricts file access -- no local file reading; no writing, no logging + // disables WRITE, LOAD file:/, set logFile + // command line -g and -w options ARE available for final writing of image + // for use with headless operation +new feature: app flag -T headless timeout delay for "exitJmol" +note: Headless operation with image creation works perfectly using JmolData.jar + java -Djava.awt.headless=true -Xmx512m -jar "JmolData.jar" -RJ "load $tylenol;" -g1000x1000 -wJPG:t.jpg + see also: http://leshazlewood.com/2009/08/26/linux-javaawtheadless-and-the-display-environment-variable/ + // determined by GraphicsEnvironment.isHeadless() + // from java -Djava.awt.headless=true + // disables command threading + // disables DELAY, TIMEOUT, PAUSE, LOOP, GOTO, SPIN , ANIMATION ON + // turns SPIN into just ROTATE +new feature: JSpecView JCamp-MOL files can reference model="$xxxx" -- model retrieved from NCI + +bug fix: PDB reader + and state scripts created with 12.1.51-12.2.20 and 12.3.0-12.3.20 + state scripts prior to those versions with multiple models + and also select BOND commands will read the bond indexes incorrectly + and, in addition, will assign proper CONECT links only to the last model +bug fix: if (....) # comment fails +bug fix: Molden reader hack for bad Molden files with ** instead of atom number in [GTO] +bug fix: headless creation of JPG fails +bug fix: spin .... 30 takes 30 to be number of degrees, not rate + +version=12.3.20 -- skipped + +============================================================================= + +version=12.3.19 + +new feature: select baseModel for JSpecView +new feature; model {atomset} -- model of first atom in this set + +bug fix: set dragSelected disallows popup menu +bug fix: MOPAC (PUBLIC DOMAIN) output reader can fail on reading vibrations +bug fix: Spartan 10 archives have .gz and .carc files. This fix adds .gz reading; + work-around is that Spartan 10 allows saving of Archive without carc compression, + which is a proprietary format. From Wavefunction: + "If you want all files to use the "text" version, you can go to the + Options->Preferences->X-Platform pane and make sure "Use Binary Archive" is unchecked." +bug fix: rotateSelected of models that have had dots at one point retrieved from a state file fails +code: refactored org.jmol.g3d.[Normix3d,Shade3D] --> org.jmol.util.[Normix, Shader] +code: refactored org.jmol.geodesic.Geodesic --> org.jmol.util.Geodesic + +bug fix: Jmol defaults not being loaded with startup option -n (no display) +bug fix: UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName() + failed for non-graphics system, and even though it is an exception, it + isn't trapped by try/catch. +bug fix: point() function does not accept 3x1 array +bug fix: show x where x is a matrix does not have ',' before tabs, so it can't be clipped directly + back into Jmol +code: better coding for quaternions + +============================================================================= + +version=12.3.18 + +new feature: JSpecView reads and displays 2D spectra very quickly -- all + tested JCamp-DX 6.0 files readable. -- JSpecView 2.0.10176 + +bug fix: allow for alternating list/hash entry: + for example: print getproperty("jspecview","##TITLE")["items"][1]["spectra"][1]["id"] + instead of: print ((getproperty("jspecview","##TITLE")["items"][1])["spectra"][1])["id"] +bug fix: GaussianReader not reading "Natural Orbitals" section from + B3LYP 6-31g sp gfprint pop(full,NO) +bug fix: Jmol support for ZIP collection of JDX files read properly +bug fix: support for file reading with BOM UTF-8, UTF-16, or UTF-32 +bug fix: script processor not recognizing UTF-8 Binary Order Mark at start of script +bug fix: (undocumented) POLYHEDRA {...} to {...} with COLOR or TRANSLUCENT fails +bug fix: POLYHEDRA command or COLOR POLYHEDRA can change selection +bug fix: PDB reader doesn't recognize 16 LINK records at start of file +bug fix: script xxxx(xxx)xxx/xx.xxx fails at "(" due to revision 16201 2011-10-02 + +============================================================================= + +version=12.3.17 + +new feature: (JspecView 2.0.10033) new script commands (indicated with *) + UNKNOWN("?"), + APPLETID("APPLETID"), + APPLETREADYCALLBACKFUNCTIONNAME("APPLETREADYCALLBACKFUNCTIONNAME"), + AUTOINTEGRATE("AUTOINTEGRATE", "TF"), + BACKGROUNDCOLOR("BACKGROUNDCOLOR", "C"), +*CLOSE("CLOSE", "spectrumId or fileName or ALL"), + COMPOUNDMENUON("COMPOUNDMENUON", "TF"), + COORDCALLBACKFUNCTIONNAME("COORDCALLBACKFUNCTIONNAME"), + COORDINATESCOLOR("COORDINATESCOLOR", "C"), + COORDINATESON("COORDINATESON", "TF"), +*DEBUG("DEBUG", "TF"), + DISPLAYFONTNAME("DISPLAYFONTNAME", "fontName"), + ENABLEZOOM("ENABLEZOOM", "TF"), + ENDINDEX("ENDINDEX"), +*EXPORT("EXPORT", "[JPG,PNG,XY,...] \"filename\""), + GETSOLUTIONCOLOR("GETSOLUTIONCOLOR", ""), + GRIDCOLOR("GRIDCOLOR", "C"), + GRIDON("GRIDON", "TF"), +*INTEGRATE("INTEGRATE", ""), + INTEGRALPLOTCOLOR("INTEGRALPLOTCOLOR"), + INTEGRATIONRATIOS("INTEGRATIONRATIOS"), + INTERFACE("INTERFACE"), +*IRMODE("IRMODE", "A or T or ?"), +*LABEL("LABEL", "x y [color and/or \"text\"]"), +*LOAD("LOAD", "[APPEND] \"fileName\""), + MENUON("MENUON"), + OBSCURE("OBSCURE"), +*OVERLAY("OVERLAY", "spectrumID, spectrumID, ..."), + PEAKCALLBACKFUNCTIONNAME("PEAKCALLBACKFUNCTIONNAME"), + PLOTAREACOLOR("PLOTAREACOLOR", "C"), + PLOTCOLOR("PLOTCOLOR", "C"), + PLOTCOLORS("PLOTCOLORS"), + REVERSEPLOT("REVERSEPLOT", "TF"), + SCALECOLOR("SCALECOLOR", "C"), + SPECTRUM("SPECTRUM", "spectrumID"), + SPECTRUMNUMBER("SPECTRUMNUMBER"), + STARTINDEX("STARTINDEX"), + SYNCCALLBACKFUNCTIONNAME("SYNCCALLBACKFUNCTIONNAME"), + SYNCID("SYNCID"), + TITLEBOLDON("TITLEBOLDON", "TF"), + TITLECOLOR("TITLECOLOR", "C"), + TITLEFONTNAME("TITLEFONTNAME", "fontName"), + UNITSCOLOR("UNITSCOLOR", "C"), + VERSION("VERSION"), + XSCALEON("XSCALEON", "TF"), + XUNITSON("XUNITSON", "TF"), + YSCALEON("YSCALEON", "TF"), + YUNITSON("YUNITSON", "TF"), +*ZOOM("ZOOM", "OUT or x1,x2"); + +new feature: allows simpler color scheme definition + color property occupancy "myscheme=red green blue" + Var x = ["red","green","blue"]; color property occupancy @{"myscheme=" + x} + +bug fix: JCampDX reader resolving should allow spaces before "##TITLE" +bug fix: jvxl issue when color PHASE and translucent + -- upon reading JVXL doesn't handle translucency right + -- upon writing SPT doesn't preserve colors +bug fix: user variable lower case "x" not cleared by "X = none" +bug fix: draw HELIX fails for residue numbers < 0 +code: better Enum structure using name() + +============================================================================= + +version=12.3.16 + +new feature: (application) SYNC ON; sync * "JSpecView:..." sends commands to JSpecView +new feature: (JSpecView) accepts commands using public syncScript(script) + +bug fix: GAMESS-US reader error reading NBOs +bug fix: print [2, 3, 4].mul([3,4,5]) fails +bug fix: missing ANISOU records cause file-read error in PDB files +bug fix: JCAMP-DX reading by JSpecView for tiered BLOCK files + +============================================================================= + +version=12.3.15 + +new feature: JCAMP-DX file reading + -- reading of ##$MODELS and ##$PEAKS (see http://chemapps.stolaf.edu/jmol/jspecview) +new feature: context menu Spectra submenu +new feature: JSpecView integration into Jmol application + -- if model/peak-enhanced JDX file is read, clicking on an atom or switching + to an IR vibration or MS fragment displays the appropriately highlighted spectrum/fragment +new feature: sync ~ 'Select: xxx' + -- xxx can include file="xxx" model="xxx" atoms="xxx" select="xxx" script="xxx" + -- file and model combined as model ID "file#model" + -- will automatically load the file if the given file#model ID is not found + -- atoms = list of atom numbers separated by commas: 1,2,3 --> @1 or @2 or @3 + -- select is any valid selection such as THR or 1-30 + -- automatically adds "visible &" to atoms or select + -- requires sync ON +new feature: NFF neutral file format reader (http://paulbourke.net/dataformats/nff/nff1.html) + for electron microscopy data exported from IMOD +new feature: preliminary JCAMP-DX file reader, where is present +new feature: when picking struts or delete bond or measure, distance shows as per usual measurement + +bug fix: SLAB unit cell not showing all lines +bug fix: CRYSTAL reader needs to change to MOLECULAR when X(ANGSTROMS) found (fullerene slab) +bug fix: Popup Menu item hbond calculate should not require PDB + +============================================================================= + +version=12.3.14 + +bug fix: state after frame RANGE or frame 0 not saved properly (state saves "frame all" instead of "frame 0") +bug fix: frame n does not work properly after load APPEND +bug fix: measurement units may appear as full word "nanometers" instead of "nm" +bug fix: user bindings do not access _atomPicked + -- solution is to add _ATOM _BOND _POINT _OBJECT to user binding actions + +============================================================================= + +version=12.3.13 + +new feature: isosurface SCALE extends to volume file readers +new feature: zoom $isosurface1 0 -- scales to match isosurface boundbox + +bug fix: getProperty("bondinfo",[{13}]) gets info for atom 13 instead of bond 13 +bug fix: isosurface offset does not change boundbox or zoom/center points +note to Bob: jpe needs update of img/blank.js js/top_buttons.js htm1/quickvs.js,qv_msgs.js molview/JmolAppletSigned.jar + +============================================================================= + +version=12.3.12 + +bug fix: symmetry popup submenu not enabled +bug fix: show spacegroup not working +bug fix: lcaocartoon for allene central carbon py incorrect +bug fix: antialiasdisplay (and image writing) not compatible with scaleAngstromsPerInch +bug fix: last group of protein cartoon will not display if it is not helix and not sheet +bug fix: getproperty MENU does not work +bug fix: PDB reader of multiple-bond files with duplicated bonds does not ignore duplicate + +============================================================================= + +version=12.3.11 + +new feature: plot ramachandran -- now those points .phi and psi return values +-- load 1crn.pdb;plot ramachandran;print {2.1}.psi +new feature: LOAD .... filter "reverseModels" + -- does just that + -- for IRC calculation transition state -> minimum reversal +new feature: measures "2:%VALUE %UNITS//xx" + -- where xx is a specified unit such as nm or Angstroms + -- overrides set measurementUnits + -- fixes state problem when units or labels are changed after measurements are made + -- operates on selected measurements only (or all, if no measurements are selected) + +bug fix: frame 0 during animation can cause exception +bug fix: changes in defaultDistanceLabel not always preserved in state correctly +bug fix: parameters can be set to invalid values using xxx = ... instead of set xxx ... +bug fix: (Application) proper Edit...Preferences dialog action + +============================================================================= + +version=12.3.10 + +new feature: _animTimeSec +new feature: Application -- press and hold animation next/prev button to continuously run animation +new feature: write PDB adds CONECT records + -- for all multiple bonding and all HETATM bonds + -- uses CONECT i j j to indicate multiple bonding +new feature: compare {from} {to} FRAME + -- aligns frames automatically + -- particularly nice for IRC calculation animations + -- for example: compare {file=2} {1.1} FRAME + -- can be followed by quaternion, atom, or SMILES options + -- for example: compare {file=2} {1.1} FRAME ATOMS @1 @5 @2 @8 @3 @9 + (all of file 2 atoms moved) file 2 atoms 1,2,3 aligned + with file 1.1 atoms 5,8,9) + -- if {to} is a subset of {from}, then FRAME is unnecessary, + and if ATOMS is included, then just the list of alignment + atoms is necessary. For example: + compare {*} {1.1} + compare {*} {1.1} atoms @1 @2 @3 + -- see http://chemapps.stolaf.edu/jmol/docs/examples-12/mp for more examples + +bug fix: script @{x} fails +bug fix: Molecular Playground should allow for set allowGestures OFF to disallow swipe +bug fix: lcaoCartoon dual color p orbitals giving white for one lobe +new feature: set echo myecho SCALE 0.3 -- for image scaling +bug fix: after "ZAP; LOAD append" show orientation will have incorrect zyz script +bug fix: function call with @x or @1 in parameters fails +bug fix: PNGJ reading remote fails +bug fix: H5T should not be used as a lead atom ever, because of set showHydrogens FALSE +bug fix: adding H atoms to mol2 file faulty +bug fix: load xxx.png;write PNGJ xxx.png (to same file as loaded) fails + +============================================================================= + +version=12.3.9 + +new feature: FRAME DELAY x.y + -- specific delay (in seconds) in animation at a given frame + -- applies to all currently in-frame models +bug fix: set isKiosk should: + (a) not be reversible + (b) not allow file saves other than logging + (c) not allow prompt dialogs + (d) not allow console or popup menu or ScriptEditor +bug fix: background colors saved to state can be off very slightly +bug fix: draw PLANE with three vertices problems after save -- four-atom planes, not three +bug fix: x = file("?") fails on Cancel +bug fix: delay not allowed within try{...} + +============================================================================= + +version=12.3.8 + +new feature: MolecularPlayground -- remote status and remote control + -- see for example http://chemapps.stolaf.edu/jmol/mpstatus.php + -- set topic, subtopic, delay from a web page + -- set banner and image for website from Jmol +new feature: load("http://.....?POST?_PNG_") or load("http://....?POST?_PNGJ_") + -- sends PNG or PNGJ image to server + -- return value is whatever server is set up to send + -- used by MolecularPlayground at St. Olaf to send current state to web server +new feature: polyhedra FULLYLIT -- useful for zeolites along with COLLAPSED +new feature: ZMATRIX upgraded to allow all forms of Gaussian input + http://www.gaussian.com/g_tech/g_ur/c_zmat.htm + +bug fix: set picking DRAW does not work on polygon sets +bug fix: set picking DRAW does not report position change +bug fix: MPJmolApp (Molecular Playground) problems when navigation is on +bug fix: CifReader (molecular type, with GEOM_BOND records) adds + extra atoms when embedded in JMOL or PNGJ file or part load FILES command +bug fix: PdbReader -- crystallographic non-PDB files not checking special positions + +============================================================================= + +version=12.3.7 + +new feature: "Write PNG+JMOL" added to application and signed applet menu +code: dispensing with InputStream in favor of BufferedInputStream +new feature: write PNGJ + -- creates a PNG file with appended JMOL (zip) data containing + all necessary files, MANIFEST, and script file. + -- viewable in directories as an "icon" and readable by image readers + -- draggable back into Jmol and readable using LOAD + -- PNG file includes: + -- iTXt field "Jmol Type\0PNGJxxxxxxxxx+yyyyyyyyy" + where xxxxxxxxx is a pointer to the ZIP data + yyyyyyyyy is the number of ZIP data bytes + -- iTXt field "Software\0Jmol 12.3.7 2011-10-11 15:30" + -- iTXt field "Creation Time\0Tue, 24 Nov 2011 19:56:10 -0600" + -- yyyyyyyyy bytes of .JMOL zip data + -- show FILE "xxx.PNG" will show list of contained files. + -- show state FILE "xxx.PNG" will extract state + -- show FILE "xxx.PNG|1crn.pdb" for example will extract file + +new feature: simple Z-Matrix reader + -- invoked by ZMATRIX:: or file starting with #ZMATRIX + -- lines starting with # are comments, which can contain jmolscript: + -- blank lines are ignored + + #ZMATRIX -- methane + C + H 1 1.089000 + H 1 1.089000 2 109.4710 + H 1 1.089000 2 109.4710 3 120.0000 + H 1 1.089000 2 109.4710 3 -120.0000 + + -- allows bond order specification + + #ZMATRIX -- CO2 + C + O 1 1.3000 2 + O 1 1.3000 2 180 2 + + -- any position number may be replaced by a unique atom name, with number: + + #ZMATRIX -- CO2 + C1 + O1 C1 1.3000 2 + O2 C1 1.3000 O1 180 2 + + -- allows for dummy atoms Xn, allowing for positioning: + + #ZMATRIX -- CO2 + X1 + X2 X1 1.0 + C1 X1 1.0 X2 90 + O1 C1 1.3000 X2 90 X1 0 2 + O2 C1 1.3000 O1 180 X2 0 2 + + -- negative distance indicates that the second angle is a normal angle, not a dihedral + + #ZMATRIX -- NH3 (using simple angles only) + N1 + H1 N1 1.0 + H2 N1 1.0 H1 107 + H3 N1 -1.0 H1 107 H2 107 + + -- negative distance and one negative angle reverses the chirality + + #ZMATRIX -- NH3 (using simple angles only; reversed chirality) + N1 + H1 N1 1.0 + H2 N1 1.0 H1 107 + H3 N1 -1.0 H1 -107 H2 107 + + + -- symbolics may be used -- they may be listed first or last + + #ZMATRIX + + dist 1.0 + angle 107 + + N1 + H1 N1 dist + H2 N1 dist H1 angle + H3 N1 -dist H1 angle H2 angle + + -- If #ZMATRIX is not the start of the file, MOPAC style is assumed. + The first two lines will be considered to be comments and ignored: + + AM1 + Ethane + + C + C 1 r21 + H 2 r32 1 a321 + H 2 r32 1 a321 3 d4213 + H 2 r32 1 a321 3 -d4213 + H 1 r32 2 a321 3 60. + H 1 r32 2 a321 3 180. + H 1 r32 2 a321 3 d300 + + r21 1.5 + r32 1.1 + a321 109.5 + d4213 120.0 + d300 300.0 + +bug fix: show orientation shows incorrect zyz format if reset uses file-based orientation matrix (smol, Sygress) +bug fix: isosurface plane xy map mep +code: MPJmolApp work +bug fix: user variables should not be rest by INITIALIZE in an spt file +bug fix: x3d/vrml outputting unnecessary spheres + -- bond caps within opaque atoms removed (not precisely correct to do that) +bug fix: minimization broken +bug fix: contact still not quite right -- setting default to +0.0 instead of +0.25 + + +============================================================================= + +version=12.3.6 + +new feature: load files "xxx.tlsout" "xxxx.pdb" + -- loads REFMAC-style TLS data into xxxx.pdb + +new feature: contact SASURFACE + -- ignores solvent (as does CAP) + +bug fix: contact command hbond/clash cutoff not sensitive to H-O/N vs O/N-O/N + -- set to -1.2 for H-N/O, -1.0 for N/O-N/O +bug fix: contact command default probe radius should be 0.0 except for VDW (0.25) + +bug fix: minimize constraint CLEAR broken +bug fix: constraints not reported in show minimization +bug fix: set measures off broken +bug fix: contact color density broken +bug fix: contact volume report not correct for color density +bug fix: MO HOMO not set properly when using LUMO = "lowest E > 0" (GAMESS-US reader) +bug fix: zSlab settings not stored properly in parameters; should have default zSlab = 50 + +============================================================================= + +version=12.3.5 + +new feature: color isosurface PHASE color1 color2 + -- allows post-isosurface creation coloring by phase (atomicOrbitals) +bug fix: isosurface scale 0.5 plane... broken if no atoms present +bug fix: isosurface color density broken +bug fix: set PdbAddHydrogens does not transfer C atomSymmetry to H atoms +bug fix: contact() function not working when typed from console +bug fix: set axesOrientationRasmol not working properly (since 11.5.51) + +code: org.jmol.modelsetbio.BioModel localizes more bio-only code into modelsetbio package +code: removal of org.jmol.modelset.Polymer +code: refactoring and organizing RepaintManager and ShapeManager + +============================================================================= + +version=12.3.4 + +bug fix: frame x.y - y.z not working +bug fix: with antialiasDisplay, dragMolecule goes 1/2 speed of cursor +bug fix: nucleic acid residues with HO5' may render last group strangely (since 12.0.RC16, 6/6/2010) +bug fix: workaround for weird Mac Point3i(Point3i pt) class initializer bug +bug fix: array.bin(low,high,binSize) not documented and can cause exception +bug fix: MO readers can fail if inappropriate filter "TLS" is given +bug fix: PDB TLS error reading TLS data missing "NUMBER OF COMPONENTS" line + +============================================================================= + +version=12.3.3 + +new feature: ellipsoid SET 1; ellipsoid SET 2; + -- TLS ellipsoids are dual + -- TLS-S is SET 1; TLS-T is SET 2 + -- after issuing this command, further size or color commands affect only that set + -- needs verification by Ethan Merrit +new feature: load xxx.pdb filter "TLS" -- loads TLS data +new feature: atom property property_tlsGroup +new feature: MolecularPlayground now accepts messages to the banner: + message banner: xxxxxxx +new feature: MolecularPlayground fully functional. + This application (MPJmolApp) is part of a three-part suite + that runs on a Mac mini involving: + "Hub" [name] for overall control (Mac app; not open source yet) + MPKinectDriver for obtaining motion events (Mac app; not open source yet) + MPJmolApp for displaying the results (source here) + The Hub and MPJmolApp communicate over local port 31416, sending + JSON messages back and forth. (See note in org.jmol.app.jsonkiosk.JsonNioService.java) + For demonstrations of the installation at St. Olaf College, + see the following YouTube videos: + http://www.youtube.com/watch?v=iQRkuku8ry0 + http://www.youtube.com/watch?v=XCRrRZe1j6g + http://www.youtube.com/watch?v=FTTIVWGtFD0 + For details relating to the original Molecular Playground + installation at U. Mass.-Amherst, see + http://molecularPlayground.org + Note that all of the functionality of the original MP are + present in MPJmolApp +new feature: MolecularPLayground can now ignore all Hub requests for + commands and content changes, thus allowing its own configuration + script to drive the presentation instead of the Hub's. So the Hub + can be used simply as an interface to the Kinect driver. This just + allows a simpler development interface -- a simple three-column Excel file can + be used to drive a presentation. (see org.jmol.molecularplayground.biophysics.xlsx) + -- MPJmolApp looks for the file MpJmolAppConfig.spt + -- This file can override MPJmolApp's default parameters: + NIOContentPath + -- default: System.getProperty("user.dir").replace('\\', '/') + + "/Content-Cache/%ID%/%ID%.json" + -- ignored if NIOcontentDisabled ends up true (see below) + NIOterminatorMessage + -- default: "MP_DONE" + NIObannerEnabled + -- default: true + NIOcontentScript + -- default: (not present, setting NIOcontentDisabled=false) + NIOcontentDisabled + -- default: true if NIOcontentScript is present; false if not + NIOmotionDisabled + -- default: false + -- The script in MpJmolAppConfig.spt is run, along with whatever + default settings are generated by the above checks. + -- Parameters are set by querying the Viewer for those Jmol variables. + -- If NIOcontentDisabled is true, then all JSON messages from the Hub + of types "content", "command", and "banner" are ignored. It is still + important that the running script send "MP_DONE" messages periodically + (within every 6 minutes) so that the Hub knows that MPJmolApp is still + alive and does not try to restart it. + -- If NIOmotionDisabled is true, then all JSON messages from the Hub + of types "move", "sync", and "touch" are ignored. + -- These are checked every time a JSON command is received, so the + running script can specifically turn off motion detection if that + or content detection if that is desired. + -- Note that MPJmolApp has a full console and menu that are available + on the operator's screen, (which is just mirrored to the projector). + This allows for parameter setting and adjustments on the fly. + +new feature: show NMR + -- predicted NMR spectrum + -- uses http://www.nmrdb.org/predictor?smiles=xxxx + -- requires NCI SMILES due to bug at nmrdb not allowing "." + +bug fix: CRYSTAL reader not properly setting model properties +bug fix: userFunction(x,@y) should operate as per all math + -- parens - value of variable pointed to by y + -- x = myfunc(x, @y) same action as just myfunc(x, @y) +bug fix: userFunction x @y + -- no parens - should operate as value of x and value of y + -- @ is unnecessary but allowed +bug fix: set echo "myecho" [10 10%] not working +bug fix: apiPlatform not correctly accessed in JpegEncoder +bug fix: reading of JVXL files for color density fails to color properly +bug fix: .... vdw 100.0% --- should be OK with float there, even if it rounds. + +code: refactored for Molecular Playground and Jmol Android + -- several System.out. messages present. +code: refactoring adapter XML readers + +============================================================================= + +version=12.3.2 + +new feature: compare("XXX","XXXX","ISOMER") comparison now includes "AMBIGUOUS STEREOCHEMISTRY!" +new feature: show chemical XXXXX where XXXXX is any NCI Cactus information token: + stdinchikey Standard InChIKey + stdinchi Standard InChI + smiles SMILES + ficts FICTS Identifier + ficus FICuS Identifier + uuuuu uuuuu Identifier + hashisy Cactvs HASHISY + sdf SD File + names Names + iupac_name IUPAC Name + cas CAS Registry Number(s) + chemspider_id ChemSpider ID + mw Molecular Weight + formula Chemical Formula + h_bond_donor_count Number of Hydrogen Bond Donors + h_bond_acceptor_count Number of Hydrogen Bond Acceptors + h_bond_center_count Number of Hydrogen Bond Acceptors and Donors + rule_of_5_violation_count Number of Rule of 5 Violations + rotor_count Number of Freely Rotatable Bonds + effective_rotor_count Number of Effectively Rotatable Bonds + ring_count Number of Rings + ringsys_count Number of Ring Systems + +bug fix: array.bin(low,high,binSize) not documented and can cause exception +new feature: PQR write option +bug fix: load append twice can cause zap to be in wrong place in state file +bug fix: for (x IN {*}) ... makes x a bitset and leads to array[1] for x.atomName +bug fix: for (x IN {*}.bonds) does not work +bug fix: POV-Ray export of cartoons broken +bug fix: script javascript:xxxx() broken +new feature: set vectorSymmetry -- displays vibration vectors as double-ended arrows. +bug fix: SMILES comparison when the number of stereocenters is not the same is wrong +code: popup/ModelKit refactoring to isolate awt/Swing references +bug fix: connection deletion removes all measurements -- can't imagine why... +code: JmolModelKitInterface part of apiPlatform call +code: JmolPromptInterface replaced with apiPlatform call + +============================================================================= + +version=12.3.1 + +new feature: CASTEP reader (take 2) + -- reads Mulliken files by default, Hirshfield with filter "CHARGE=HIRSH" + -- reads spins into {*}.property_spin. label is %[property_spin] + -- reads Born charge tensors as atom ellipsoids + +bug fix: H2,H3 connected to terminal N of protein not backbone +bug fix: select PROTEIN selects non-PDB atoms +bug fix: Molden reader does not read "Sym=X" (missing space after '=') +bug fix: Molden reader does not read angstrom units +bug fix: color isosurface {atomset} does not work if isosurface has not already been mapped. +bug fix: PDB reader not reading Rasmol-style files with multiple bonding + CONECT 1 2 2 + or + CONECT 1 2 + CONECT 1 2 + means for Rasmol double bond between atoms 1 and 2 + +code: experimenting with fragmentation of applet core classes into _1b, _1c, _1d, _1e, _1f + +version=12.3.0 + +October 4, 2011 + + +====================================== + +some feature notes: + + +bug fix: var firstPARAM = "p1_b"; x = [FIRSTParam: "p1_a"]; results in lowering of case as [firstparam:....] +bug fix: set drawPicking draw;set drawpicking does not show handles +bug fix; point group not calculated when the selected atoms are a subset of a model +bug fix: x.find("SMILES") is incorrect for structures that have hypervalent atoms and branches such as inorganic nitrates +bug fix: msCIF reading with two models, and only one has displacement modulation causes "render error" crash +bug fix: msCIF reader failing for Legendre polynomials of order greater than 4 +bug fix: DRAW for quadrilateral broken when perspective depth is turned off. +bug fix: SET ECHO IMAGE broken in JavaScript version + + +feature note: Jmol 14.5.2 + +FEATURE NOTE: Prior to this version if the MO command was issued after use of + rotateSelected, the orbitals were calculated improperly, because the + basis functions always must be applied for the original file coordinate + frame, not the rotated frame. In addition, if MOs were calculated prior to + use of rotateSelected or translateSelected, then they would not "track" + with the modified atom positions. So MOs and rotate/translateSelected + were completely incompatible. Jmol 14.4.2 fixes this issue. It should be + possible now to produce correct MOs before or after use of rotateSelected. + Note that ALL atoms in a specified model must be moved in order for this + tracking of MOs to take place. This functionality was introduced in + 14.4.1_2016.01.28, but that version (never released) does not properly + check to see that ALL the atoms in a model have been involved in the rotation. + +FEATURE NOTE: If rotateSelected or translateSelected is used to move all atoms in a + model, and after that the state is saved, then Jmol 14.4.2 + will save a state that is not readable in 14.4.1. This is necessary + because of the added FRAME ORIENTATION command, which is used in the states + to indicate the relationship of a model to its file coordinates. The MO + reader requires this so that it can rotate the coordinates back to their + original position prior to doing its calculation. + +FEATURE NOTE: Jmol 14.5.4 now has a RELATIVELY COMPLETE set of analysis and visualization + tools for space group symmetry. All standard and magnetic space group operations + are covered. Features are concentrated in four command options and one function: + + LOAD .... SPACEGROUP .... UNITCELL .... + SHOW SYMOP .... + DRAW SYMOP .... + DRAW POINTGROUP SPACEGROUP + x = symop(....) + + With these features, you can: + + -- load any model while applying any actual or conceivable space group or subset of a space group + -- tabulate all space group operations associated with that model + -- retrieve an associative array indicating all aspects of the operation, including + point, rotation axis, plane, glide vector, lattice offset vector, and 4x4 matrix + -- visualize all aspects of an operation, including proper and improper rotations + inversion centers, mirror planes, glide planes, translations, and magnetic spin time reversal + -- apply any operation to any atom or any point in space + -- given any combination of two atoms or two points in space, determine and/or + depict the operation(s) that relate those to atoms or positions + + + +feature note: Jmol 14.3 introduces several very powerful and very different capabilities + to Jmol in the area of crystallography. Many of these features are nonexistent + in other programs. They involve: + + - an extension of SMILES to compare bonding topology irrespective of atom identity. + (Are these two atom environments both iscoahedral?) + + x = {@1 and 1.1 and connected(@1)}.find("SMILES", "*"} + y = {2.1}.find("SMARTS", x) + + - the generation of polyhedra in crystal structures for which only the central atom + may be loaded. + (What is the atom environment around Au3 in this crystal structure?) + + load t.cif // just the unit cell, maybe just one atom even + polyhedra 4-12 UNITECELL @1 + + - the ability to load a given block of space (such as a 10x10x10-Angstrom cube) + with a crystal structure irrespective of its given unit cell. + (Are these two structures that have totally different unit cells really that different?) + + load t.cif FILL + load t.cif FILL 20 + load t.cif FILL {20 10 10} + load t.cif FILL [{0 0 0} {5.2 5.2 0} {-5.2 5.5 0} {1.3 0 3.3}] + + - the ability to show and draw the point group of a polyhedron + + load t.cif + polyhedron 12 unitcell @1 + select @1 + show pointgroup POLYHEDRON + draw pointgroup POLYHEDRON + + - the ability to extract information about polyhedra + + print getProperty("shapeInfo.polyhedra[1]").keys + + _ipt + center + modelIndex + planeCount + polygons + vertexCount + vertices + + - the ability to select polyhedra + + select polyhedra + select polyhedra(4) + + print polyhedra() + print polyhedra(4) + + + - the ability to draw points from derived arrays + + draw diameter 0.2 points @{getProperty("shapeInfo.polyhedra[1].vertices")} + + +Jmol 14.3.15 + +new feature: MACRO command + -- runs predefined script, generally defining new functions of general use + -- contributions welcome! + -- will be expanded + + $ macro aflow + running http://aflowlib.mems.duke.edu/users/jmolers/jmol/spt/AFLOW.spt + aflowLoad(binaryAlloy) loaded + aflowBinaries loaded + aflowDualArray(binaryAlloy, a, b) loaded + aflowDualWrite loaded + aflowConvexHull(binaryAlloy) loaded + aflowCheckBinary(binaryAlloy) loaded + aflowGetPG(binaryAlloy, a, range1, range2,radius) loaded + $ aflowLoad("AgAu") + 294 models + + $ print aflowConvexHull + { + "Cb" : 0.0 + "Hf_eV_VASP" : 0.0 + "modelNumber" : 2 + } + { + "Cb" : 0.25 + "Hf_eV_VASP" : -0.0472733 + "modelNumber" : 26 + } + { + "Cb" : 0.5 + "Hf_eV_VASP" : -0.085589 + "modelNumber" : 180 + } + { + "Cb" : 0.75 + "Hf_eV_VASP" : -0.0463823 + "modelNumber" : 25 + } + { + "Cb" : 1.0 + "Hf_eV_VASP" : 0.0 + "modelNumber" : 260 + } + + + + + + diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/JmolAsyncException.js b/config/plugins/visualizations/jmol/static/j2s/JV/JmolAsyncException.js new file mode 100755 index 000000000000..07c3483c9a92 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/JmolAsyncException.js @@ -0,0 +1,16 @@ +Clazz.declarePackage("JV"); +Clazz.load(["java.io.IOException"], "JV.JmolAsyncException", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.fileName = null; +Clazz.instantialize(this, arguments);}, JV, "JmolAsyncException", java.io.IOException); +Clazz.makeConstructor(c$, +function(cacheName){ +Clazz.superConstructor (this, JV.JmolAsyncException, []); +this.fileName = cacheName; +}, "~S"); +Clazz.defineMethod(c$, "getFileName", +function(){ +return this.fileName; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/JmolChimeMessenger.js b/config/plugins/visualizations/jmol/static/j2s/JV/JmolChimeMessenger.js new file mode 100755 index 000000000000..f789c07e6a8c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/JmolChimeMessenger.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("JV"); +Clazz.declareInterface(JV, "JmolChimeMessenger"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/JmolStateCreator.js b/config/plugins/visualizations/jmol/static/j2s/JV/JmolStateCreator.js new file mode 100755 index 000000000000..6bad51bcbe2c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/JmolStateCreator.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("JV"); +(function(){ +var c$ = Clazz.declareType(JV, "JmolStateCreator", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/ModelManager.js b/config/plugins/visualizations/jmol/static/j2s/JV/ModelManager.js new file mode 100755 index 000000000000..8e7f59a29596 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/ModelManager.js @@ -0,0 +1,53 @@ +Clazz.declarePackage("JV"); +Clazz.load(null, "JV.ModelManager", ["JM.ModelLoader"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.modelSet = null; +this.modelSetPathName = null; +this.fileName = null; +Clazz.instantialize(this, arguments);}, JV, "ModelManager", null); +Clazz.makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "zap", +function(){ +this.modelSetPathName = this.fileName = null; + new JM.ModelLoader(this.vwr, this.vwr.getZapName(), null, null, null, null); +}); +Clazz.defineMethod(c$, "createModelSet", +function(fullPathName, fileName, loadScript, atomSetCollection, bsNew, isAppend){ +var modelSetName = null; +if (isAppend) { +modelSetName = this.modelSet.modelSetName; +if (modelSetName.equals("zapped")) modelSetName = null; + else if (modelSetName.indexOf(" (modified)") < 0) modelSetName += " (modified)"; +} else if (atomSetCollection == null) { +this.zap(); +} else { +this.modelSetPathName = fullPathName; +this.fileName = fileName; +}if (atomSetCollection != null) { +if (modelSetName == null) { +modelSetName = this.vwr.getModelAdapter().getAtomSetCollectionName(atomSetCollection); +if (modelSetName != null) { +modelSetName = modelSetName.trim(); +if (modelSetName.length == 0) modelSetName = null; +}if (modelSetName == null) modelSetName = JV.ModelManager.reduceFilename(fileName); +} new JM.ModelLoader(this.vwr, modelSetName, loadScript, atomSetCollection, (isAppend ? this.modelSet : null), bsNew); +}if (this.modelSet.ac == 0 && !this.modelSet.getMSInfoB("isPyMOL")) this.zap(); +}, "~S,~S,JU.SB,~O,JU.BS,~B"); +c$.reduceFilename = Clazz.defineMethod(c$, "reduceFilename", +function(fileName){ +if (fileName == null) return null; +var ichDot = fileName.indexOf('.'); +if (ichDot > 0) fileName = fileName.substring(0, ichDot); +if (fileName.length > 24) fileName = fileName.substring(0, 20) + " ..."; +return fileName; +}, "~S"); +Clazz.defineMethod(c$, "createAtomDataSet", +function(atomSetCollection, tokType){ +return JM.ModelLoader.createAtomDataSet(this.vwr, this.modelSet, tokType, atomSetCollection, this.vwr.bsA()); +}, "~O,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/MouseState.js b/config/plugins/visualizations/jmol/static/j2s/JV/MouseState.js new file mode 100755 index 000000000000..095254fd84f9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/MouseState.js @@ -0,0 +1,43 @@ +Clazz.declarePackage("JV"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.x = -1000; +this.y = -1000; +this.modifiers = 0; +this.time = -1; +this.name = null; +this.keybuf = 0; +Clazz.instantialize(this, arguments);}, JV, "MouseState", null); +Clazz.makeConstructor(c$, +function(name){ +this.name = name; +}, "~S"); +Clazz.defineMethod(c$, "set", +function(time, x, y, modifiers){ +this.time = time; +this.x = x; +this.y = y; +this.modifiers = modifiers; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setCurrent", +function(current, clickCount){ +this.time = current.time; +if (clickCount < 2) { +this.x = current.x; +this.y = current.y; +}this.modifiers = current.modifiers; +}, "JV.MouseState,~N"); +Clazz.defineMethod(c$, "inRange", +function(xyRange, x, y){ +return (Math.abs(this.x - x) <= xyRange && Math.abs(this.y - y) <= xyRange); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "check", +function(xyRange, x, y, modifiers, time, delayMax){ +return (this.modifiers == modifiers && (delayMax >= 2147483647 ? this.inRange(xyRange, x, y) : time - this.time < delayMax && time - this.time > 20)); +}, "~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "is", +function(current){ +return (current.x == this.x && current.y == this.y && current.time == this.time); +}, "JV.MouseState"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/OutputManager.js b/config/plugins/visualizations/jmol/static/j2s/JV/OutputManager.js new file mode 100755 index 000000000000..6af16250dd23 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/OutputManager.js @@ -0,0 +1,750 @@ +Clazz.declarePackage("JV"); +Clazz.load(null, "JV.OutputManager", ["java.util.Date", "$.Hashtable", "JU.AU", "$.Lst", "$.OC", "$.PT", "$.Rdr", "$.SB", "J.api.Interface", "J.i18n.GT", "JU.Logger", "JV.FileManager", "$.JC", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.privateKey = 0; +Clazz.instantialize(this, arguments);}, JV, "OutputManager", null); +Clazz.defineMethod(c$, "setViewer", +function(vwr, privateKey){ +this.vwr = vwr; +this.privateKey = privateKey; +return this; +}, "JV.Viewer,~N"); +Clazz.defineMethod(c$, "writeToOutputChannel", +function(params){ +var type = params.get("type"); +var fileName = params.get("fileName"); +var text = params.get("text"); +var bytes = params.get("bytes"); +var quality = JV.OutputManager.getInt(params, "quality", -2147483648); +var out = params.get("outputChannel"); +var closeStream = (out == null); +var len = -1; +var ret = null; +try { +if (!this.vwr.checkPrivateKey(this.privateKey)) return "ERROR: SECURITY"; +if (bytes != null) { +if (out == null) out = this.openOutputChannel(this.privateKey, fileName, false, false); +out.write(bytes, 0, bytes.length); +} else if (text != null && !type.equals("ZIPDATA") && !type.equals("BINARY")) { +if (out == null) out = this.openOutputChannel(this.privateKey, fileName, true, false); +out.append(text); +} else { +var errMsg = this.getOrSaveImage(params); +if (errMsg != null) return errMsg; +len = (params.get("byteCount")).intValue(); +}} catch (exc) { +if (Clazz.exceptionOf(exc, Exception)){ +JU.Logger.errorEx("IO Exception", exc); +return exc.toString(); +} else { +throw exc; +} +} finally { +if (out != null) { +if (closeStream) ret = out.closeChannel(); +len = out.getByteCount(); +}} +var pt = fileName.indexOf("?POST?"); +if (pt >= 0) fileName = fileName.substring(0, pt); +return (len < 0 ? "Creation of " + fileName + " failed: " + (ret == null ? this.vwr.getErrorMessageUn() : ret) : "OK " + type + " " + (len > 0 ? len + " " : "") + fileName + (quality == -2147483648 ? "" : "; quality=" + quality)); +}, "java.util.Map"); +Clazz.defineMethod(c$, "getOrSaveImage", +function(params){ +var bytes = null; +var errMsg = null; +var type = (params.get("type")).toUpperCase(); +var fileName = params.get("fileName"); +var scripts = params.get("scripts"); +var objImage = params.get("image"); +var rgbbuf = params.get("rgbbuf"); +var out = params.get("outputChannel"); +var asBytes = (out == null && fileName == null); +var closeChannel = (out == null && fileName != null); +var releaseImage = (objImage == null); +var image = (type.equals("BINARY") || type.equals("ZIPDATA") ? "" : rgbbuf != null ? rgbbuf : objImage != null ? objImage : this.vwr.getScreenImage()); +var isOK = false; +try { +if (image == null) return errMsg = this.vwr.getErrorMessage(); +if (fileName != null && fileName.startsWith("\1")) { +isOK = true; +var info = new java.util.Hashtable(); +info.put("_IMAGE_", image); +this.vwr.fm.loadImage(info, fileName, false); +return errMsg = "OK - viewing " + fileName.substring(1); +}var isPngj = type.equals("PNGJ"); +if (!isPngj) { +if (out == null && (out = this.openOutputChannel(this.privateKey, fileName, false, false)) == null) return errMsg = "ERROR: canceled"; +fileName = out.getFileName(); +}var comment = null; +var stateData = null; +params.put("date", this.vwr.apiPlatform.getDateFormat("8601")); +if (type.startsWith("JP")) { +type = JU.PT.rep(type, "E", ""); +if (type.equals("JPG64")) { +params.put("outputChannelTemp", this.getOutputChannel(null, null)); +comment = ""; +} else { +comment = (!asBytes ? this.getWrappedState(null, null, image, null) : ""); +}params.put("jpgAppTag", " #Jmol...\u0000"); +} else if (type.equals("PDF")) { +comment = ""; +} else if (type.startsWith("PNG")) { +comment = ""; +if (isPngj) { +var outTemp = this.getOutputChannel(null, null); +this.getWrappedState(fileName, scripts, image, outTemp); +stateData = outTemp.toByteArray(); +if (out == null && (out = this.openOutputChannel(this.privateKey, fileName, false, false)) == null) return errMsg = "ERROR: canceled"; +} else if (rgbbuf == null && !asBytes && !params.containsKey("captureMode")) { +stateData = (this.getWrappedState(null, scripts, image, null)).getBytes(); +}if (stateData != null) { +params.put("pngAppData", stateData); +params.put("pngAppPrefix", "Jmol Type"); +}}if (type.equals("PNGT") || type.equals("GIFT")) params.put("transparentColor", Integer.$valueOf(this.vwr.getBackgroundArgb())); +if (type.length == 4) type = type.substring(0, 3); +if (comment != null) params.put("comment", comment.length == 0 ? JV.Viewer.getJmolVersion() : comment); +var errRet = new Array(1); +isOK = this.createTheImage(image, type, out, params, errRet); +if (closeChannel) out.closeChannel(); +if (isOK) { +if (params.containsKey("captureMsg") && !params.containsKey("captureSilent")) this.vwr.prompt(params.get("captureMsg"), "OK", null, true); +if (asBytes) bytes = out.toByteArray(); + else if (params.containsKey("captureByteCount")) errMsg = "OK: " + params.get("captureByteCount").toString() + " bytes"; +} else { +errMsg = errRet[0]; +}} finally { +if (releaseImage) this.vwr.releaseScreenImage(); +if (bytes != null || out != null) params.put("byteCount", Integer.$valueOf(bytes != null ? bytes.length : isOK ? out.getByteCount() : -1)); +if (objImage != null) { +return fileName; +}} +return (errMsg == null ? bytes : errMsg); +}, "java.util.Map"); +Clazz.defineMethod(c$, "getWrappedState", +function(pngjName, scripts, objImage, pgjOut){ +var width = this.vwr.apiPlatform.getImageWidth(objImage); +var height = this.vwr.apiPlatform.getImageHeight(objImage); +if (width > 0 && !this.vwr.g.imageState && pgjOut == null || !this.vwr.g.preserveState) return ""; +var s = this.vwr.getStateInfo3(null, width, height); +if (pgjOut != null) { +return this.createZipSet(s, scripts, true, pgjOut, pngjName); +}try { +s = JV.JC.embedScript(JV.FileManager.setScriptFileReferences(s, ".", null, null)); +} catch (e) { +JU.Logger.error("state could not be saved: " + e.toString()); +s = "Jmol " + JV.Viewer.getJmolVersion(); +} +return s; +}, "~S,~A,~O,JU.OC"); +Clazz.defineMethod(c$, "createTheImage", +function(objImage, type, out, params, errRet){ +type = type.substring(0, 1) + type.substring(1).toLowerCase(); +var isZipData = type.equals("Zipdata"); +if (isZipData || type.equals("Binary")) { +var v = params.get("imageData"); +if (v.size() >= 2 && v.get(0).equals("_IMAGE_")) { +if (isZipData) { +errRet[0] = this.writeZipFile(out, v, "OK JMOL", null); +return true; +}objImage = null; +v.removeItemAt(0); +v.removeItemAt(0); +var bytes = v.removeItemAt(0); +if (JU.Rdr.isPngZipB(bytes)) { +params.put("pngImgData", bytes); +} else { +this.getImagePixels(this.vwr.fm.getImage(bytes, null, true), params); +}var oz = this.getOutputChannel(null, null); +errRet[0] = this.writeZipFile(oz, v, "OK JMOL", null); +params.put("type", "PNGJ"); +type = "Png"; +params.put("pngAppPrefix", "Jmol Type"); +params.put("pngAppData", oz.toByteArray()); +} else if (v.size() == 1) { +var b = v.removeItemAt(0); +out.write(b, 0, b.length); +return true; +} else { +errRet[0] = this.writeZipFile(out, v, "OK JMOL", null); +return true; +}}var ie = J.api.Interface.getInterface("javajs.img." + type + "Encoder", this.vwr, "file"); +if (ie == null) { +errRet[0] = "Image encoder type " + type + " not available"; +return false; +}var doClose = true; +try { +if (type.equals("Gif") && this.vwr.getBoolean(603979962)) params.put("reducedColors", Boolean.TRUE); +if (params.get("imagePixels") == null) this.getImagePixels(objImage, params); +params.put("logging", Boolean.$valueOf(JU.Logger.debugging)); +doClose = ie.createImage(type, out, params); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +errRet[0] = e.toString(); +out.cancel(); +doClose = true; +} else { +throw e; +} +} finally { +if (doClose) out.closeChannel(); +} +return (errRet[0] == null); +}, "~O,~S,JU.OC,java.util.Map,~A"); +Clazz.defineMethod(c$, "getImagePixels", +function(objImage, params){ +var w = objImage == null ? -1 : JU.AU.isAI(objImage) ? (params.get("width")).intValue() : this.vwr.apiPlatform.getImageWidth(objImage); +var h = objImage == null ? -1 : JU.AU.isAI(objImage) ? (params.get("height")).intValue() : this.vwr.apiPlatform.getImageHeight(objImage); +params.put("imageWidth", Integer.$valueOf(w)); +params.put("imageHeight", Integer.$valueOf(h)); +var pixels = this.encodeImage(w, h, objImage); +if (pixels != null) params.put("imagePixels", pixels); +}, "~O,java.util.Map"); +Clazz.defineMethod(c$, "encodeImage", +function(width, height, objImage){ +if (width < 0) return null; +var pixels; +if (JU.AU.isAI(objImage)) { +pixels = objImage; +} else { +{ +pixels = null; +}pixels = this.vwr.apiPlatform.grabPixels(objImage, width, height, pixels); +}return pixels; +}, "~N,~N,~O"); +Clazz.defineMethod(c$, "outputToFile", +function(params){ +return this.handleOutputToFile(params, true); +}, "java.util.Map"); +Clazz.defineMethod(c$, "getOutputChannel", +function(fileName, fullPath){ +if (!this.vwr.haveAccess(JV.Viewer.ACCESS.ALL)) return null; +var isRemote = JU.OC.isRemote(fileName); +if (fileName != null && !isRemote && !fileName.startsWith("cache://")) { +fileName = this.getOutputFileNameFromDialog(fileName, -2147483648, null); +if (fileName == null) return null; +}if (fullPath != null) fullPath[0] = fileName; +try { +return this.openOutputChannel(this.privateKey, fileName, false, false); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +JU.Logger.info(e.toString()); +return null; +} else { +throw e; +} +} +}, "~S,~A"); +Clazz.defineMethod(c$, "processWriteOrCapture", +function(params){ +var fileName = params.get("fileName"); +if (fileName == null) return this.vwr.clipImageOrPasteText(params.get("text")); +var bsFrames = params.get("bsFrames"); +var nVibes = JV.OutputManager.getInt(params, "nVibes", 0); +return (bsFrames != null || nVibes != 0 ? this.processMultiFrameOutput(fileName, bsFrames, nVibes, params) : this.handleOutputToFile(params, true)); +}, "java.util.Map"); +c$.getInt = Clazz.defineMethod(c$, "getInt", +function(params, key, def){ +var p = params.get(key); +return (p == null ? def : p.intValue()); +}, "java.util.Map,~S,~N"); +Clazz.defineMethod(c$, "processMultiFrameOutput", +function(fileName, bsFrames, nVibes, params){ +var info = ""; +var n = 0; +var quality = JV.OutputManager.getInt(params, "quality", -1); +fileName = this.setFullPath(params, this.getOutputFileNameFromDialog(fileName, quality, null)); +if (fileName == null) return null; +var rootExt = new Array(2); +JV.OutputManager.getRootExt(fileName, rootExt, 0); +var sb = new JU.SB(); +if (bsFrames == null) { +this.vwr.tm.vibrationOn = true; +sb = new JU.SB(); +for (var i = 0; i < nVibes; i++) { +for (var j = 0; j < 20; j++) { +this.vwr.tm.setVibrationT(j / 20 + 0.2501); +if (!this.writeFrame(++n, rootExt, params, sb)) return "ERROR WRITING FILE SET: \n" + info; +} +} +this.vwr.tm.setVibrationPeriod(0); +} else { +for (var i = bsFrames.nextSetBit(0); i >= 0; i = bsFrames.nextSetBit(i + 1)) { +this.vwr.setCurrentModelIndex(i); +if (!this.writeFrame(++n, rootExt, params, sb)) return "ERROR WRITING FILE SET: \n" + info; +} +}if (info.length == 0) info = "OK\n"; +return info + "\n" + n + " files created"; +}, "~S,JU.BS,~N,java.util.Map"); +c$.getRootExt = Clazz.defineMethod(c$, "getRootExt", +function(fileName, rootExt, n){ +if (fileName == null) { +fileName = "0000" + n; +return rootExt[0] + fileName.substring(fileName.length - 4) + rootExt[1]; +}var ptDot = fileName.lastIndexOf("."); +if (ptDot < 0) ptDot = fileName.length; +var froot = fileName.substring(0, ptDot); +if (froot.endsWith("0")) froot = JU.PT.trim(froot, "0"); +rootExt[0] = froot; +rootExt[1] = fileName.substring(ptDot); +return rootExt; +}, "~S,~A,~N"); +Clazz.defineMethod(c$, "setFullPath", +function(params, fileName){ +var fullPath = params.get("fullPath"); +if (fullPath != null) fullPath[0] = fileName; +if (fileName == null) return null; +params.put("fileName", fileName); +return fileName; +}, "java.util.Map,~S"); +Clazz.defineMethod(c$, "getOutputFromExport", +function(params){ +var width = JV.OutputManager.getInt(params, "width", 0); +var height = JV.OutputManager.getInt(params, "height", 0); +var fileName = params.get("fileName"); +if (fileName != null) { +fileName = this.setFullPath(params, this.getOutputFileNameFromDialog(fileName, -2147483648, null)); +if (fileName == null) return null; +}this.vwr.mustRender = true; +var saveWidth = this.vwr.screenWidth; +var saveHeight = this.vwr.screenHeight; +this.vwr.resizeImage(width, height, true, true, false); +this.vwr.setModelVisibility(); +var data = this.vwr.rm.renderExport(this.vwr.gdata, this.vwr.ms, params); +this.vwr.resizeImage(saveWidth, saveHeight, true, true, true); +return data; +}, "java.util.Map"); +Clazz.defineMethod(c$, "getImageAsBytes", +function(type, width, height, quality, errMsg){ +var saveWidth = this.vwr.screenWidth; +var saveHeight = this.vwr.screenHeight; +this.vwr.mustRender = true; +this.vwr.resizeImage(width, height, true, false, false); +this.vwr.setModelVisibility(); +this.vwr.creatingImage = true; +var bytes = null; +try { +var params = new java.util.Hashtable(); +params.put("type", type); +if (quality > 0) params.put("quality", Integer.$valueOf(quality)); +var bytesOrError = this.getOrSaveImage(params); +if ((typeof(bytesOrError)=='string')) errMsg[0] = bytesOrError; + else bytes = bytesOrError; +} catch (e$$) { +if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +errMsg[0] = e.toString(); +this.vwr.setErrorMessage("Error creating image: " + e, null); +} +} else if (Clazz.exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.vwr.handleError(er, false); +this.vwr.setErrorMessage("Error creating image: " + er, null); +errMsg[0] = this.vwr.getErrorMessage(); +} +} else { +throw e$$; +} +} +this.vwr.creatingImage = false; +this.vwr.resizeImage(saveWidth, saveHeight, true, false, true); +return bytes; +}, "~S,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "writeFileData", +function(fileName, type, modelIndex, plotParameters){ +var fullPath = new Array(1); +var out = this.getOutputChannel(fileName, fullPath); +if (out == null) return ""; +fileName = fullPath[0]; +var pathName = (type.equals("FILE") ? this.vwr.getParameter("_modelFile") : null); +var getStringData = (pathName != null && (pathName.equals("string") || pathName.equals("String[]") || pathName.equals("JSNode"))); +var asBytes = (pathName != null && !getStringData); +if (asBytes) { +if (this.vwr.getModelSetPathName() == null) return null; +}out.setType(type); +var msg = (type.startsWith("PDB") ? this.vwr.getPdbAtomData(null, out, false, false) : type.startsWith("PLOT") ? this.vwr.getPdbData(modelIndex, type.substring(5), null, plotParameters, out, true) : getStringData ? out.append(this.vwr.getCurrentFileAsString("write")).toString() : this.vwr.fm.getFileAsBytes(pathName, out)); +out.closeChannel(); +if (msg != null) msg = "OK " + msg + " " + fileName; +return msg; +}, "~S,~S,~N,~A"); +Clazz.defineMethod(c$, "writeFrame", +function(n, rootExt, params, sb){ +var fileName = JV.OutputManager.getRootExt(null, rootExt, n); +fileName = this.setFullPath(params, fileName); +if (fileName == null) return false; +var msg = this.handleOutputToFile(params, false); +this.vwr.scriptEcho(msg); +sb.append(msg).append("\n"); +return msg.startsWith("OK"); +}, "~N,~A,java.util.Map,JU.SB"); +Clazz.defineMethod(c$, "getOutputFileNameFromDialog", +function(fileName, quality, params){ +if (fileName == null || this.vwr.$isKiosk) return null; +var useDialog = fileName.startsWith("?"); +if (useDialog) fileName = fileName.substring(1); +useDialog = new Boolean (useDialog | (this.vwr.isApplet && fileName.indexOf("http:") != 0 && fileName.indexOf("https:") != 0)).valueOf(); +fileName = JV.FileManager.getLocalPathForWritingFile(this.vwr, fileName, useDialog); +if (this.vwr.isApplet) { +fileName = fileName.substring(fileName.lastIndexOf("/") + 1); +}if (useDialog) fileName = this.vwr.dialogAsk(quality == -2147483648 ? "Save" : "Save Image", fileName, params); +return fileName; +}, "~S,~N,java.util.Map"); +Clazz.defineMethod(c$, "handleOutputToFile", +function(params, doCheck){ +var fileName = params.get("fileName"); +var out = params.get("outputChannel"); +if (fileName == null && out == null) return null; +var sret = null; +var type = params.get("type"); +var text = params.get("text"); +var width = JV.OutputManager.getInt(params, "width", 0); +var height = JV.OutputManager.getInt(params, "height", 0); +var saveWidth = 0; +var saveHeight = 0; +var quality = JV.OutputManager.getInt(params, "quality", -2147483648); +var captureMode = params.get("captureMode"); +var is2D = params.get("is2D") === Boolean.TRUE; +var localName = null; +if (captureMode != null && !this.vwr.allowCapture()) return "ERROR: Cannot capture on this platform."; +var mustRender = (!is2D && quality != -2147483648); +if (captureMode != null) { +doCheck = false; +mustRender = false; +}if (out == null) { +if (!fileName.startsWith("\1")) { +if (doCheck) fileName = this.getOutputFileNameFromDialog(fileName, quality, params); +fileName = this.setFullPath(params, fileName); +}if (fileName == null) return null; +params.put("fileName", fileName); +if (JU.OC.isLocal(fileName)) localName = fileName; +saveWidth = this.vwr.screenWidth; +saveHeight = this.vwr.screenHeight; +this.vwr.creatingImage = true; +if (mustRender) { +this.vwr.mustRender = true; +this.vwr.resizeImage(width, height, true, false, false); +this.vwr.setModelVisibility(); +}}try { +if (type.equals("JMOL")) type = "ZIPALL"; +if (type.equals("ZIP") || type.equals("ZIPALL")) { +var scripts = params.get("scripts"); +if (scripts != null && type.equals("ZIP")) type = "ZIPALL"; +sret = this.createZipSet(text, scripts, type.equals("ZIPALL"), out == null ? this.getOutputChannel(fileName, null) : out, null); +} else if (type.equals("SCENE")) { +sret = this.createSceneSet(fileName, text, width, height); +} else { +var bytes = params.get("bytes"); +sret = this.vwr.sm.createImage(fileName, type, text, bytes, quality); +if (sret == null) { +var createImage = true; +var captureMsg = null; +if (captureMode != null) { +out = null; +var cparams = this.vwr.captureParams; +var imode = "ad on of en ca mo ".indexOf(captureMode.substring(0, 2)); +var rootExt; +if (imode == 15) { +if (cparams != null && cparams.containsKey("outputChannel")) (cparams.get("outputChannel")).closeChannel(); +var streaming = params.containsKey("streaming"); +if (streaming && (out = this.getOutputChannel(localName, null)) == null) { +sret = captureMsg = "ERROR: capture canceled"; +this.vwr.captureParams = null; +} else { +this.vwr.captureParams = params; +if (params.containsKey("captureRootExt")) { +imode = 0; +} else { +if (out != null) localName = out.getFileName(); +params.put("captureFileName", localName); +if (streaming) { +captureMsg = type + "_STREAM_OPEN " + localName; +params.put("captureMode", "movie"); +} else { +rootExt = new Array(2); +params.put("captureRootExt", JV.OutputManager.getRootExt(localName, rootExt, 0)); +localName = JV.OutputManager.getRootExt(null, rootExt, 1); +imode = -1; +cparams = params; +createImage = false; +}}if (!params.containsKey("captureCount")) params.put("captureCount", Integer.$valueOf(0)); +}}if (imode >= 0 && imode != 15) { +if (cparams == null) { +sret = captureMsg = "ERROR: capture not active"; +} else { +params = cparams; +switch (imode) { +default: +sret = captureMsg = "ERROR: CAPTURE MODE=" + captureMode + "?"; +break; +case 0: +if (Boolean.FALSE === params.get("captureEnabled")) { +sret = captureMsg = "capturing OFF; use CAPTURE ON/END/CANCEL to continue"; +} else { +var count = JV.OutputManager.getInt(params, "captureCount", 0); +params.put("captureCount", Integer.$valueOf(++count)); +if ((rootExt = params.get("captureRootExt")) != null) { +localName = JV.OutputManager.getRootExt(null, rootExt, count); +captureMsg = null; +createImage = true; +} else { +captureMsg = type + "_STREAM_ADD " + count; +}}break; +case 3: +case 6: +params = cparams; +params.put("captureEnabled", (captureMode.equals("on") ? Boolean.TRUE : Boolean.FALSE)); +sret = type + "_STREAM_" + (captureMode.equals("on") ? "ON" : "OFF"); +params.put("captureMode", "add"); +break; +case 9: +case 12: +params = cparams; +params.put("captureMode", captureMode); +fileName = params.get("captureFileName"); +captureMsg = type + "_STREAM_" + (captureMode.equals("end") ? "CLOSE " : "CANCEL ") + fileName; +this.vwr.captureParams = null; +params.put("captureMsg", J.i18n.GT.$("Capture") + ": " + (captureMode.equals("cancel") ? J.i18n.GT.$("canceled") : J.i18n.GT.o(J.i18n.GT.$("{0} saved"), fileName))); +if (params.containsKey("captureRootExt")) createImage = false; +break; +} +}}if (createImage && out != null) params.put("outputChannel", out); +}if (createImage) { +if (localName != null) params.put("fileName", localName); +if (sret == null) sret = this.writeToOutputChannel(params); +if (!is2D) { +this.vwr.sm.createImage(sret, type, null, null, quality); +if (captureMode != null) { +if (captureMsg == null) captureMsg = sret; + else captureMsg += " (" + params.get(params.containsKey("captureByteCount") ? "captureByteCount" : "byteCount") + " bytes)"; +}}}if (captureMsg != null) { +this.vwr.showString(captureMsg, false); +}}}} catch (er) { +er.printStackTrace(); +JU.Logger.error(this.vwr.setErrorMessage(sret = "ERROR creating image??: " + er, null)); +} finally { +this.vwr.creatingImage = false; +if (quality != -2147483648 && saveWidth > 0) this.vwr.resizeImage(saveWidth, saveHeight, true, false, true); +} +return sret; +}, "java.util.Map,~B"); +Clazz.defineMethod(c$, "setLogFile", +function(value){ +var path = null; +if (this.vwr.logFilePath == null || value.indexOf("\\") >= 0) { +value = null; +} else if (value.startsWith("http://") || value.startsWith("https://")) { +path = value; +} else if (value.indexOf("/") >= 0) { +value = null; +} else if (value.length > 0) { +if (!value.startsWith("JmolLog_")) value = "JmolLog_" + value; +path = this.getLogPath(this.vwr.logFilePath + value); +}if (path == null) value = null; + else JU.Logger.info(J.i18n.GT.o(J.i18n.GT.$("Setting log file to {0}"), path)); +if (value == null || !this.vwr.haveAccess(JV.Viewer.ACCESS.ALL)) { +JU.Logger.info(J.i18n.GT.$("Cannot set log file path.")); +value = null; +} else { +this.vwr.logFileName = path; +this.vwr.g.setO("_logFile", this.vwr.isApplet ? value : path); +}return value; +}, "~S"); +Clazz.defineMethod(c$, "logToFile", +function(data){ +try { +var doClear = (data.equals("$CLEAR$")); +if (data.indexOf("$NOW$") >= 0) data = JU.PT.rep(data, "$NOW$", this.vwr.apiPlatform.getDateFormat(null)); +if (this.vwr.logFileName == null) { +JU.Logger.info(data); +return; +}var out = (this.vwr.haveAccess(JV.Viewer.ACCESS.ALL) ? this.openOutputChannel(this.privateKey, this.vwr.logFileName, true, !doClear) : null); +if (!doClear) { +var ptEnd = data.indexOf('\0'); +if (ptEnd >= 0) data = data.substring(0, ptEnd); +out.append(data); +if (ptEnd < 0) out.append("\n"); +}var s = out.closeChannel(); +JU.Logger.info(s); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (JU.Logger.debugging) JU.Logger.debug("cannot log " + data); +} else { +throw e; +} +} +}, "~S"); +Clazz.defineMethod(c$, "createZipSet", +function(script, scripts, includeRemoteFiles, out, pngjName){ +var v = new JU.Lst(); +var fm = this.vwr.fm; +var fileNamesEscaped = new JU.Lst(); +var fileNamesUTF = new JU.Lst(); +var crcMap = new java.util.Hashtable(); +var haveSceneScript = (scripts != null && scripts.length == 3 && scripts[1].startsWith("###scene.spt###")); +var sceneScriptOnly = (haveSceneScript && scripts[2].equals("min")); +if (!sceneScriptOnly) { +JV.FileManager.getFileReferences(script, fileNamesEscaped, fileNamesUTF); +if (haveSceneScript) JV.FileManager.getFileReferences(scripts[1], fileNamesEscaped, fileNamesUTF); +}var haveScripts = (!haveSceneScript && scripts != null && scripts.length > 0); +if (haveScripts) { +script = this.wrapPathForAllFiles("script " + JU.PT.esc(scripts[0]), ""); +for (var i = 0; i < scripts.length; i++) fileNamesEscaped.addLast(scripts[i]); + +}var nFiles = fileNamesEscaped.size(); +var newFileNames = new JU.Lst(); +for (var iFile = 0; iFile < nFiles; iFile++) { +var name = fileNamesUTF.get(iFile); +var pt = name.indexOf("::"); +var type = ""; +if (pt >= 0) { +type = name.substring(0, pt + 2); +name = name.substring(pt + 2); +}var isLocal = JU.OC.isLocal(name); +var newName = name; +if (isLocal || includeRemoteFiles) { +var ptSlash = name.lastIndexOf("/"); +newName = (name.indexOf("?") > 0 && name.indexOf("|") < 0 ? JU.PT.replaceAllCharacters(name, "/:?\"'=&", "_") : JV.FileManager.stripPath(name)); +newName = JU.PT.replaceAllCharacters(newName, "[]", "_"); +newName = JU.PT.rep(newName, "#_DOCACHE_", ""); +newName = JU.PT.rep(newName, "localLOAD_", ""); +newName = JU.PT.rep(newName, "DROP_", ""); +var isSparDir = (fm.spardirCache != null && fm.spardirCache.containsKey(name)); +if (isLocal && name.indexOf("|") < 0 && !isSparDir) { +v.addLast(name); +v.addLast(newName); +v.addLast(null); +} else { +var ret = (isSparDir ? fm.spardirCache.get(name) : fm.getFileAsBytes(name, null)); +if (!JU.AU.isAB(ret)) return "ERROR: " + ret; +newName = this.addPngFileBytes(name, ret, iFile, crcMap, isSparDir, newName, ptSlash, v); +}name = type + "$SCRIPT_PATH$" + newName; +}crcMap.put(newName, newName); +newFileNames.addLast(JU.PT.escUnicode(name)); +} +if (!sceneScriptOnly) { +script = JU.PT.replaceQuotedStrings(script, fileNamesEscaped, newFileNames); +v.addLast("state.spt"); +v.addLast(null); +v.addLast(script.getBytes()); +}if (haveSceneScript) { +if (scripts[0] != null) { +v.addLast("animate.spt"); +v.addLast(null); +v.addLast(scripts[0].getBytes()); +}v.addLast("scene.spt"); +v.addLast(null); +script = JU.PT.replaceQuotedStrings(scripts[1], fileNamesEscaped, newFileNames); +v.addLast(script.getBytes()); +}var sname = (haveSceneScript ? "scene.spt" : "state.spt"); +v.addLast("JmolManifest.txt"); +v.addLast(null); +var sinfo = "# Jmol Manifest Zip Format 1.1\n# Created " + ( new java.util.Date()) + "\n" + "# JmolVersion " + JV.Viewer.getJmolVersion() + "\n" + sname; +v.addLast(sinfo.getBytes()); +v.addLast("Jmol_version_" + JV.Viewer.getJmolVersion().$replace(' ', '_').$replace(':', '.')); +v.addLast(null); +v.addLast( Clazz.newByteArray (0, 0)); +if (out.getFileName() != null) { +var bytes = this.vwr.getImageAsBytes("PNG", 0, 0, -1, null); +if (bytes != null) { +v.addLast("preview.png"); +v.addLast(null); +v.addLast(bytes); +}}return this.writeZipFile(out, v, "OK JMOL", pngjName); +}, "~S,~A,~B,JU.OC,~S"); +Clazz.defineMethod(c$, "addPngFileBytes", +function(name, ret, iFile, crcMap, isSparDir, newName, ptSlash, v){ +var crcValue = Integer.$valueOf(this.vwr.getJzt().getCrcValue(ret)); +if (crcMap.containsKey(crcValue)) { +newName = crcMap.get(crcValue); +} else { +if (isSparDir) newName = newName.$replace('.', '_'); +if (crcMap.containsKey(newName)) { +var pt = newName.lastIndexOf("."); +if (pt > ptSlash) newName = newName.substring(0, pt) + "[" + iFile + "]" + newName.substring(pt); + else newName = newName + "[" + iFile + "]"; +}v.addLast(name); +v.addLast(newName); +v.addLast(ret); +crcMap.put(crcValue, newName); +}return newName; +}, "~S,~A,~N,java.util.Hashtable,~B,~S,~N,JU.Lst"); +Clazz.defineMethod(c$, "writeZipFile", +function(out, fileNamesAndByteArrays, msg, pngjName){ +var buf = Clazz.newByteArray (1024, 0); +var nBytesOut = 0; +var nBytes = 0; +var outFileName = out.getFileName(); +if (pngjName != null && pngjName.startsWith("//")) pngjName = "file:" + pngjName.substring(1); +JU.Logger.info("creating zip file " + (outFileName == null ? "" : outFileName) + "..."); +var fileList = ""; +try { +var bos; +{ +bos = out; +}var fm = this.vwr.fm; +var zos = this.vwr.getJzt().getZipOutputStream(bos); +for (var i = 0; i < fileNamesAndByteArrays.size(); i += 3) { +var fname = fileNamesAndByteArrays.get(i); +var fnameShort = fileNamesAndByteArrays.get(i + 1); +var bytes = fileNamesAndByteArrays.get(i + 2); +var data = (bytes == null ? fm.cacheGet(fname, false) : null); +if (Clazz.instanceOf(data,"java.util.Map")) continue; +if (fname.indexOf("file:/") == 0) { +fname = fname.substring(5); +if (fname.length > 2 && fname.charAt(2) == ':') fname = fname.substring(1); +} else if (fname.indexOf("cache://") == 0) { +fname = fname.substring(8); +}if (fnameShort == null) fnameShort = fname; +if (data != null) bytes = (JU.AU.isAB(data) ? data : (data).getBytes()); +var key = ";" + fnameShort + ";"; +if (fileList.indexOf(key) >= 0) { +JU.Logger.info("duplicate entry"); +continue; +}fileList += key; +this.vwr.getJzt().addZipEntry(zos, fnameShort); +var nOut = 0; +if (bytes == null) { +var $in = this.vwr.getBufferedInputStream(fname); +var len; +if ($in != null) { +while ((len = $in.read(buf, 0, 1024)) > 0) { +zos.write(buf, 0, len); +nOut += len; +} +$in.close(); +}} else { +zos.write(bytes, 0, bytes.length); +if (pngjName != null) this.vwr.fm.recachePngjBytes(pngjName + "|" + fnameShort, bytes); +nOut += bytes.length; +}nBytesOut += nOut; +this.vwr.getJzt().closeZipEntry(zos); +JU.Logger.info("...added " + fname + " (" + nOut + " bytes)"); +} +zos.flush(); +zos.close(); +JU.Logger.info(nBytesOut + " bytes prior to compression"); +var ret = out.closeChannel(); +if (ret != null) { +if (ret.indexOf("Exception") >= 0) return ret; +msg += " " + ret; +}nBytes = out.getByteCount(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +JU.Logger.info(e.toString()); +return e.toString(); +} else { +throw e; +} +} +var fileName = out.getFileName(); +return (fileName == null ? null : msg + " " + nBytes + " " + fileName); +}, "JU.OC,JU.Lst,~S,~S"); +Clazz.defineMethod(c$, "wrapPathForAllFiles", +function(cmd, strCatch){ +var vname = "v__" + ("" + Math.random()).substring(3); +return "# Jmol script\n{\n\tVar " + vname + " = pathForAllFiles\n\tpathForAllFiles=\"$SCRIPT_PATH$\"\n\ttry{\n\t\t" + cmd + "\n\t}catch(e){" + strCatch + "}\n\tpathForAllFiles = " + vname + "\n}\n"; +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/OutputManagerAwt.js b/config/plugins/visualizations/jmol/static/j2s/JV/OutputManagerAwt.js new file mode 100755 index 000000000000..6c9e4f886a2e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/OutputManagerAwt.js @@ -0,0 +1,129 @@ +Clazz.declarePackage("JV"); +Clazz.load(["JV.OutputManager"], "JV.OutputManagerAwt", ["java.io.File", "$.FileOutputStream", "java.util.Hashtable", "JU.Lst", "$.OC", "$.PT", "$.SB", "JU.Logger", "JV.Viewer"], function(){ +var c$ = Clazz.declareType(JV, "OutputManagerAwt", JV.OutputManager); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JV.OutputManagerAwt, []); +}); +Clazz.overrideMethod(c$, "getLogPath", +function(fileName){ +return (this.vwr.isApplet ? fileName : ( new java.io.File(fileName).getAbsolutePath())); +}, "~S"); +Clazz.overrideMethod(c$, "clipImageOrPasteText", +function(text){ +var msg; +try { +if (text == null) { +var image = this.vwr.getScreenImage(); +J.awt.AwtClipboard.setClipboard(image); +msg = "OK image to clipboard: " + (image.getWidth(null) * image.getHeight(null)); +} else { +J.awt.AwtClipboard.setClipboard(text); +msg = "OK text to clipboard: " + text.length; +}} catch (er) { +if (Clazz.exceptionOf(er, Error)){ +msg = this.vwr.getErrorMessage(); +} else { +throw er; +} +} finally { +if (text == null) this.vwr.releaseScreenImage(); +} +return msg; +}, "~S"); +Clazz.overrideMethod(c$, "getClipboardText", +function(){ +return J.awt.AwtClipboard.getClipboardText(); +}); +Clazz.overrideMethod(c$, "openOutputChannel", +function(privateKey, fileName, asWriter, asAppend){ +var isLocal = JU.OC.isLocal(fileName); +if (asAppend && isLocal && fileName.indexOf("JmolLog_") < 0) asAppend = false; +return (fileName != null && !this.vwr.haveAccess(JV.Viewer.ACCESS.ALL) || !this.vwr.checkPrivateKey(privateKey) ? null : ( new JU.OC()).setParams(this.vwr.fm, fileName, asWriter, (isLocal ? new java.io.FileOutputStream(fileName, asAppend) : null))); +}, "~N,~S,~B,~B"); +Clazz.overrideMethod(c$, "createSceneSet", +function(sceneFile, type, width, height){ +var script0 = this.vwr.getFileAsString3(sceneFile, false, null); +if (script0 == null) return "no such file: " + sceneFile; +sceneFile = JU.PT.rep(sceneFile, ".spt", ""); +var fileRoot = sceneFile; +var fileExt = type.toLowerCase(); +var scenes = JU.PT.split(script0, "pause scene "); +var htScenes = new java.util.Hashtable(); +var list = new JU.Lst(); +var script = this.getSceneScript(scenes, htScenes, list); +if (JU.Logger.debugging) JU.Logger.debug(script); +script0 = JU.PT.rep(script0, "pause scene", "delay " + this.vwr.am.lastFrameDelay + " # scene"); +var str = Clazz.newArray(-1, [script0, script, null]); +this.vwr.stm.saveState("_scene0"); +var nFiles = 0; +if (scenes[0] !== "") this.vwr.zap(true, true, false); +var iSceneLast = -1; +for (var i = 0; i < scenes.length - 1; i++) { +try { +var iScene = list.get(i).intValue(); +if (iScene > iSceneLast) this.vwr.showString("Creating Scene " + iScene, false); +this.vwr.eval.runScript(scenes[i]); +if (iScene <= iSceneLast) continue; +iSceneLast = iScene; +str[2] = "all"; +var fileName = fileRoot + "_scene_" + iScene + ".all." + fileExt; +var params = new java.util.Hashtable(); +params.put("fileName", fileName); +params.put("type", "PNGJ"); +params.put("scripts", str); +params.put("width", Integer.$valueOf(width)); +params.put("height", Integer.$valueOf(height)); +var msg = this.handleOutputToFile(params, false); +str[0] = null; +str[2] = "min"; +fileName = fileRoot + "_scene_" + iScene + ".min." + fileExt; +params.put("fileName", fileName); +params.put("width", Integer.$valueOf(Math.min(width, 200))); +params.put("height", Integer.$valueOf(Math.min(height, 200))); +msg += "\n" + this.handleOutputToFile(params, false); +this.vwr.showString(msg, false); +nFiles += 2; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return "script error " + e.toString(); +} else { +throw e; +} +} +} +try { +this.vwr.eval.runScript(this.vwr.stm.getSavedState("_scene0")); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return "OK " + nFiles + " files created"; +}, "~S,~S,~N,~N"); +Clazz.defineMethod(c$, "getSceneScript", +function(scenes, htScenes, list){ +var iSceneLast = 0; +var iScene = 0; +var sceneScript = new JU.SB().append("###scene.spt###").append(" Jmol ").append(JV.Viewer.getJmolVersion()).append("\n{\nsceneScripts={"); +for (var i = 1; i < scenes.length; i++) { +scenes[i - 1] = JU.PT.trim(scenes[i - 1], "\t\n\r "); +var pt = Clazz.newIntArray (1, 0); +iScene = JU.PT.parseIntNext(scenes[i], pt); +if (iScene == -2147483648) return "bad scene ID: " + iScene; +scenes[i] = scenes[i].substring(pt[0]); +list.addLast(Integer.$valueOf(iScene)); +var key = iSceneLast + "-" + iScene; +htScenes.put(key, scenes[i - 1]); +if (i > 1) sceneScript.append(","); +sceneScript.appendC('\n').append(JU.PT.esc(key)).append(": ").append(JU.PT.esc(scenes[i - 1])); +iSceneLast = iScene; +} +sceneScript.append("\n}\n"); +if (list.size() == 0) return "no lines 'pause scene n'"; +sceneScript.append("\nthisSceneRoot = '$SCRIPT_PATH$'.split('_scene_')[1];\n").append("thisSceneID = 0 + ('$SCRIPT_PATH$'.split('_scene_')[2]).split('.')[1];\n").append("var thisSceneState = '$SCRIPT_PATH$'.replace('.min.png','.all.png') + 'state.spt';\n").append("var spath = ''+currentSceneID+'-'+thisSceneID;\n").append("print thisSceneRoot + ' ' + spath;\n").append("var sscript = sceneScripts[spath];\n").append("var isOK = true;\n").append("try{\n").append("if (thisSceneRoot != currentSceneRoot){\n").append(" isOK = false;\n").append("} else if (sscript != '') {\n").append(" isOK = true;\n").append("} else if (thisSceneID <= currentSceneID){\n").append(" isOK = false;\n").append("} else {\n").append(" sscript = '';\n").append(" for (var i = currentSceneID; i < thisSceneID; i++){\n").append(" var key = ''+i+'-'+(i + 1); var script = sceneScripts[key];\n").append(" if (script = '') {isOK = false;break;}\n").append(" sscript += ';'+script;\n").append(" }\n").append("}\n}catch(e){print e;isOK = false}\n").append("if (isOK) {" + this.wrapPathForAllFiles("script inline @sscript", "print e;isOK = false") + "}\n").append("if (!isOK){script @thisSceneState}\n").append("currentSceneRoot = thisSceneRoot; currentSceneID = thisSceneID;\n}\n"); +return sceneScript.toString(); +}, "~A,java.util.Map,JU.Lst"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/OutputManagerJS.js b/config/plugins/visualizations/jmol/static/j2s/JV/OutputManagerJS.js new file mode 100755 index 000000000000..907053c9c411 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/OutputManagerJS.js @@ -0,0 +1,29 @@ +Clazz.declarePackage("JV"); +Clazz.load(["JV.OutputManager"], "JV.OutputManagerJS", ["JU.OC"], function(){ +var c$ = Clazz.declareType(JV, "OutputManagerJS", JV.OutputManager); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JV.OutputManagerJS, []); +}); +Clazz.overrideMethod(c$, "getLogPath", +function(fileName){ +return fileName; +}, "~S"); +Clazz.overrideMethod(c$, "clipImageOrPasteText", +function(text){ +return "Clipboard not available"; +}, "~S"); +Clazz.overrideMethod(c$, "getClipboardText", +function(){ +return "Clipboard not available"; +}); +Clazz.overrideMethod(c$, "openOutputChannel", +function(privateKey, fileName, asWriter, asAppend){ +return ( new JU.OC()).setParams(this.vwr.fm, fileName, asWriter, null); +}, "~N,~S,~B,~B"); +Clazz.overrideMethod(c$, "createSceneSet", +function(sceneFile, type, width, height){ +return "ERROR: Not Available"; +}, "~S,~S,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/PropertyManager.js b/config/plugins/visualizations/jmol/static/j2s/JV/PropertyManager.js new file mode 100755 index 000000000000..825f9eaa28ad --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/PropertyManager.js @@ -0,0 +1,1413 @@ +Clazz.declarePackage("JV"); +Clazz.load(["J.api.JmolPropertyManager", "java.util.Hashtable"], "JV.PropertyManager", ["java.util.Arrays", "JU.AU", "$.BArray", "$.BS", "$.Base64", "$.Lst", "$.M3", "$.P3", "$.PT", "$.SB", "$.V3", "J.api.Interface", "JM.LabelToken", "JS.SV", "$.T", "JU.BSUtil", "$.C", "$.Edge", "$.Escape", "$.JmolMolecule", "$.Logger", "JV.ActionManager", "$.FileManager", "$.JC", "$.Viewer", "JV.binding.Binding"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.map = null; +Clazz.instantialize(this, arguments);}, JV, "PropertyManager", null, J.api.JmolPropertyManager); +Clazz.prepareFields (c$, function(){ +this.map = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +for (var i = 0, p = 0; i < JV.PropertyManager.propertyTypes.length; i += 3, p++) if (JV.PropertyManager.propertyTypes[i].length > 0) this.map.put(JV.PropertyManager.propertyTypes[i].toLowerCase(), Integer.$valueOf(p)); + +}, "JV.Viewer"); +Clazz.overrideMethod(c$, "getPropertyNumber", +function(infoType){ +var n = this.map.get(infoType == null ? "" : infoType.toLowerCase()); +return (n == null ? -1 : n.intValue()); +}, "~S"); +Clazz.overrideMethod(c$, "getDefaultPropertyParam", +function(propID){ +return (propID < 0 ? "" : JV.PropertyManager.propertyTypes[propID * 3 + 2]); +}, "~N"); +Clazz.overrideMethod(c$, "checkPropertyParameter", +function(name){ +var propID = this.getPropertyNumber(name); +var type = JV.PropertyManager.getParamType(propID); +return (type.length > 0 && type !== ""); +}, "~S"); +Clazz.overrideMethod(c$, "getProperty", +function(returnType, infoType, paramInfo){ +if (JV.PropertyManager.propertyTypes.length != 144) JU.Logger.warn("propertyTypes is not the right length: " + JV.PropertyManager.propertyTypes.length + " != " + 144); +var info; +if (infoType.indexOf(".") >= 0 || infoType.indexOf("[") >= 0) { +var args = this.getArguments(infoType); +var h = this.getPropertyAsObject(args[0].asString(), paramInfo, null); +info = this.extractProperty(h, args, 1, null, false); +} else { +info = this.getPropertyAsObject(infoType, paramInfo, returnType); +}if (returnType == null) return info; +var requestedReadable = returnType.equalsIgnoreCase("readable"); +if (requestedReadable) returnType = (JV.PropertyManager.isReadableAsString(infoType) ? "String" : "JSON"); +if (returnType.equalsIgnoreCase("String")) return (info == null ? "" : info.toString()); +if (requestedReadable) return JU.Escape.toReadable(infoType, info); +if (returnType.equalsIgnoreCase("JSON")) return JS.SV.safeJSON(infoType, info); +return info; +}, "~S,~S,~O"); +Clazz.defineMethod(c$, "getArguments", +function(propertyName){ +var lc = propertyName.toLowerCase(); +var pt = -1; +if (propertyName.indexOf('"') >= 0 || propertyName.indexOf('\'') >= 0) propertyName = this.fixSelectQuotes(propertyName); +while ((pt = lc.indexOf("[select ", ++pt)) >= 0) { +var pt2 = lc.indexOf(" where ", pt); +var pt2b = lc.indexOf(" wherein ", pt); +if (pt2b > 0 && pt2b < pt2) pt2 = pt2b; +var pt3 = lc.indexOf("][select ", pt); +if (pt3 < 0) pt3 = lc.lastIndexOf("]"); +pt2b = lc.indexOf("[", pt); +if (pt2b >= 0 && pt2b < pt3) pt2 = pt2b; +if (pt2 < 0 || pt2 > pt3) continue; +propertyName = propertyName.substring(0, pt + 1) + propertyName.substring(pt + 1, pt3).$replace('.', '\1').$replace('[', '\2').$replace(']', '\3') + propertyName.substring(pt3); +} +propertyName = JU.PT.rep(JU.PT.rep(propertyName.$replace(']', '\0').$replace('[', '\0'), "..", "\4").$replace('.', '\0').$replace('\1', '.').$replace('\2', '[').$replace('\3', ']'), "\4", ".."); +propertyName = JU.PT.rep(propertyName, "\0\0", "\0"); +var names = JU.PT.split(JU.PT.trim(propertyName, "\0"), "\0"); +var args = new Array(names.length); +for (var i = 0, n; i < names.length; i++) args[i] = (names[i].startsWith("'") || names[i].startsWith("\"") ? JS.SV.newS(JU.PT.trim(names[i], "'\"")) : (n = JU.PT.parseInt(names[i])) == -2147483648 ? JS.SV.newS(names[i]) : JS.SV.newI(n)); + +return args; +}, "~S"); +Clazz.defineMethod(c$, "fixSelectQuotes", +function(propertyName){ +var a = propertyName.toCharArray(); +var inQuotes = false; +var inQuotes1 = false; +var inQuotes2 = false; +for (var i = a.length; --i >= 0; ) { +switch ((a[i]).charCodeAt(0)) { +case 39: +if (!inQuotes2) inQuotes = inQuotes1 = !inQuotes; +break; +case 34: +if (!inQuotes1) inQuotes = inQuotes2 = !inQuotes; +break; +case 46: +if (inQuotes) a[i] = '\1'; +break; +case 91: +if (inQuotes) a[i] = '\2'; +break; +case 93: +if (inQuotes) a[i] = '\3'; +break; +} +} +propertyName = String.instantialize(a); +return propertyName; +}, "~S"); +Clazz.overrideMethod(c$, "extractProperty", +function(prop, args, ptr, v2, isCompiled){ +if (ptr < 0) { +args = this.getArguments(args); +ptr = 0; +}if (ptr >= (args).length) return prop; +if (!isCompiled) { +args = this.compileSelect(args); +var svargs = args; +for (var i = ptr, n = svargs.length; i < n; i++) { +if (svargs[i].tok == 1275082241) { +var a = new Array(i + 1); +for (var p = 0; p <= i; p++) a[p] = svargs[p]; + +prop = this.extractProperty(prop, a, ptr, null, true); +for (; ++i < n; ) { +a[a.length - 1] = svargs[i]; +prop = this.extractProperty(prop, a, a.length - 1, null, true); +} +return prop; +}} +args = svargs; +}var pt; +var arg = (args)[ptr++]; +var property = JS.SV.oValue(prop); +switch (arg.tok) { +case 2: +pt = arg.intValue - 1; +if (Clazz.instanceOf(property,"JU.Lst")) { +var v = property; +if (pt < 0) pt += v.size(); +return (pt >= 0 && pt < v.size() ? this.extractProperty(v.get(pt), args, ptr, null, true) : ""); +}if (Clazz.instanceOf(property,"JU.M3")) { +var m = property; +var f = Clazz.newArray(-1, [ Clazz.newFloatArray(-1, [m.m00, m.m01, m.m02]), Clazz.newFloatArray(-1, [m.m10, m.m11, m.m12]), Clazz.newFloatArray(-1, [m.m20, m.m21, m.m22])]); +if (pt < 0) pt += 3; +return (pt >= 0 && pt < 3 ? this.extractProperty(f, args, --ptr, null, true) : ""); +}if (Clazz.instanceOf(property,"JU.M4")) { +var m = property; +var f = Clazz.newArray(-1, [ Clazz.newFloatArray(-1, [m.m00, m.m01, m.m02, m.m03]), Clazz.newFloatArray(-1, [m.m10, m.m11, m.m12, m.m13]), Clazz.newFloatArray(-1, [m.m20, m.m21, m.m22, m.m23]), Clazz.newFloatArray(-1, [m.m30, m.m31, m.m32, m.m33])]); +if (pt < 0) pt += 4; +return (pt >= 0 && pt < 4 ? this.extractProperty(f, args, --ptr, null, true) : ""); +}if (JU.AU.isAI(property)) { +var ilist = property; +if (pt < 0) pt += ilist.length; +return (pt >= 0 && pt < ilist.length ? Integer.$valueOf(ilist[pt]) : ""); +}if (JU.AU.isAD(property)) { +var dlist = property; +if (pt < 0) pt += dlist.length; +return (pt >= 0 && pt < dlist.length ? Double.$valueOf(dlist[pt]) : ""); +}if (JU.AU.isAF(property)) { +var flist = property; +if (pt < 0) pt += flist.length; +return (pt >= 0 && pt < flist.length ? Float.$valueOf(flist[pt]) : ""); +}if (JU.AU.isAII(property)) { +var iilist = property; +if (pt < 0) pt += iilist.length; +return (pt >= 0 && pt < iilist.length ? this.extractProperty(iilist[pt], args, ptr, null, true) : ""); +}if (JU.AU.isAFF(property)) { +var fflist = property; +if (pt < 0) pt += fflist.length; +return (pt >= 0 && pt < fflist.length ? this.extractProperty(fflist[pt], args, ptr, null, true) : ""); +}if (JU.AU.isAS(property)) { +var slist = property; +if (pt < 0) pt += slist.length; +return (pt >= 0 && pt < slist.length ? slist[pt] : ""); +}if (Clazz.instanceOf(property,Array)) { +var olist = property; +if (pt < 0) pt += olist.length; +return (pt >= 0 && pt < olist.length ? olist[pt] : ""); +}break; +case 1275082241: +case 4: +if (Clazz.instanceOf(property,"java.util.Map")) { +var h = property; +var key; +var asMap = false; +var asArray = false; +var isCaseSensitive = false; +var keys = (arg.tok == 1275082241 ? (arg.value)[0] : null); +var whereArgs = null; +if (arg.tok == 1275082241) { +isCaseSensitive = true; +whereArgs = (arg.value)[1]; +key = arg.myName; +asArray = (key.indexOf(";") >= 0); +if (key.contains("**")) { +var isAll = keys.size() == 0; +var newKey = ""; +for (var e, $e = h.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +for (var i = (isAll ? 1 : keys.size()); --i >= 0; ) { +if (!isAll && !JU.PT.isLike(k, keys.get(i))) continue; +var o = e.getValue(); +var isList = false; +switch (Clazz.instanceOf(o,"JS.SV") ? (o).tok : 0) { +case 7: +isList = true; +o = (o).getList(); +break; +case 6: +case 14: +o = (o).getMap(); +break; +default: +if (!(Clazz.instanceOf(o,"java.util.Map")) && !(isList = (Clazz.instanceOf(o,"JU.Lst")))) { +if (isList || whereArgs == null) continue; +var map = new java.util.Hashtable(); +map.put("key", JS.SV.newS(k)); +map.put("value", e.getValue()); +if (this.vwr.checkSelect(map, whereArgs)) { +newKey += "," + k; +}continue; +}} +if (isList) { +if (v2 == null) v2 = new JU.Lst(); +var olst = o; +for (var n = olst.size(), j = 0; j < n; j++) { +o = olst.get(j); +if (!(Clazz.instanceOf(o,"JS.SV")) || (o = (o).getMap()) == null) continue; +if (whereArgs == null || this.vwr.checkSelect(o, whereArgs)) v2.addLast(o); +} +return v2; +}if (whereArgs == null || this.vwr.checkSelect(o, whereArgs)) newKey += "," + k; +} +} +if (newKey.length == 0) return new JU.Lst(); +key = newKey.substring(1); +asMap = !asArray; +keys = null; +} else if (whereArgs != null && !this.vwr.checkSelect(property, whereArgs)) return ""; +} else { +key = arg.asString(); +if (key.equalsIgnoreCase("keys")) { +var lst = new JU.Lst(); +for (var k, $k = h.keySet().iterator (); $k.hasNext()&& ((k = $k.next ()) || true);) lst.addLast(k); + +return this.extractProperty(lst, args, ptr, null, true); +}}var havePunctuation = (asArray || key.indexOf(",") >= 0 || key.indexOf(";") >= 0); +if (isCaseSensitive && !havePunctuation) { +havePunctuation = true; +key += ","; +}var isWild = (asArray || key.startsWith("*") || key.endsWith("*") || havePunctuation); +var wasV2 = (v2 != null); +if (isWild) { +if (!wasV2) v2 = new JU.Lst(); +if (!asArray && (keys == null ? key.length == 1 : keys.size() == 0)) { +if (ptr == (args).length) { +if (!wasV2) return property; +v2.addLast(property); +return v2; +}return this.extractProperty(property, args, ptr, v2, true); +}}if (key.contains("**")) key = JU.PT.rep(key, "**", "*"); +if (isWild && !havePunctuation) key += ","; +if (asMap || asArray || key.contains(",")) { +var mapNew = new java.util.Hashtable(); +if (keys != null && keys.size() == 0) { +keys = null; +key = "*"; +}asArray = new Boolean (asArray | (arg.index == 1)).valueOf(); +if (keys == null) { +var tokens = JU.PT.split(key, ","); +for (var i = tokens.length; --i >= 0; ) JV.PropertyManager.getMapSubset(h, tokens[i], mapNew, asArray ? v2 : null); + +} else { +for (var i = 0; i < keys.size(); i++) { +key = keys.get(i); +var index = null; +var pta = key.indexOf('['); +if (pta > 0 && key.endsWith("]")) { +index = key.substring(pta + 1, key.length - 1); +key = key.substring(0, pta); +index = JU.PT.trim(index, "'\""); +} else if ((pta = key.indexOf(".")) >= 0) { +index = key.substring(pta + 1); +key = key.substring(0, pta); +}var v2len0 = v2.size(); +JV.PropertyManager.getMapSubset(h, key, mapNew, asArray ? v2 : null); +if (index != null) { +for (var j = v2.size(); --j >= v2len0; ) { +var v = v2.get(j); +if (Clazz.instanceOf(v,"JS.SV")) { +var sv = v; +var m = sv.getMap(); +if (m != null) { +v = m.get(index); +} else { +var p = JU.PT.parseInt(index); +var l = sv.getList(); +if (p >= 0 && p < l.size()) v = l.get(p); + else v = null; +}if (v == null) v2.removeItemAt(j); + else v2.set(j, v); +}} +}} +}if (asMap && !wasV2) return mapNew; +if (ptr == (args).length) { +if (!asArray) { +if (!wasV2) return mapNew; +v2.addLast(mapNew); +}return v2; +}return this.extractProperty(mapNew, args, ptr, (wasV2 ? v2 : null), true); +}key = this.checkMap(h, key, isWild, v2, args, ptr, isCaseSensitive); +return (key != null && !isWild ? this.extractProperty(h.get(key), args, ptr, null, true) : !isWild ? "" : wasV2 ? v2 : v2); +}if (Clazz.instanceOf(property,"JU.Lst")) { +var v = property; +if (v2 == null) v2 = new JU.Lst(); +ptr--; +var isList = false; +for (pt = 0; pt < v.size(); pt++) { +var o = v.get(pt); +if (Clazz.instanceOf(o,"java.util.Map") || (isList = (Clazz.instanceOf(o,"JU.Lst"))) || (Clazz.instanceOf(o,"JS.SV")) && ((o).getMap() != null || (isList = ((o).getList() != null)))) { +if (isList || (arg.index == 1)) { +var ret = this.extractProperty(o, args, ptr, null, true); +if (ret !== "") v2.addLast(ret); +} else { +this.extractProperty(o, args, ptr, v2, true); +}}} +return v2; +}break; +} +return prop; +}, "~O,~O,~N,JU.Lst,~B"); +c$.getMapSubset = Clazz.defineMethod(c$, "getMapSubset", +function(h, key, h2, v2){ +if (key.startsWith("\"") || key.startsWith("'")) key = JU.PT.trim(key, "\"'"); +var val = h.get(key); +if (val != null) { +if (v2 == null) h2.put(key, val); + else v2.addLast(val); +return; +}for (var e, $e = h.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +if (JU.PT.isLike(k, key)) { +if (v2 == null) h2.put(k, e.getValue()); + else v2.addLast(e.getValue()); +}} +}, "java.util.Map,~S,java.util.Map,JU.Lst"); +Clazz.defineMethod(c$, "compileSelect", +function(args){ +var argsNew = null; +for (var i = args.length; --i >= 0; ) { +if (args[i].tok == 4) { +var key = args[i].value; +var ucKey = key.toUpperCase(); +if (ucKey.startsWith("WHERE")) ucKey = (key = "SELECT * " + key).toUpperCase(); +if (ucKey.startsWith("SELECT ")) { +if (argsNew == null) argsNew = JU.AU.arrayCopyObject(args, args.length); +ucKey = (key = key.substring(6).trim()).toUpperCase(); +if (ucKey.startsWith("WHERE ") || ucKey.startsWith("WHEREIN ")) ucKey = (key = "* " + key).toUpperCase(); +var pt = ucKey.indexOf(" WHEREIN "); +var ext = (pt < 0 ? "" : key.indexOf(";") >= 0 ? ";**" : ",**"); +if (pt < 0) pt = ucKey.indexOf(" WHERE "); +var select = key.substring(0, pt < 0 ? key.length : pt).trim(); +var index = 0; +if (select.startsWith("(") && select.endsWith(")")) { +select = select.substring(1, select.length - 1) + ";"; +} else if (select.startsWith("[") && select.endsWith("]")) { +select = select.substring(1, select.length - 1); +index = 1; +}if (pt < 0) { +argsNew[i] = JS.SV.newV(1275082241, Clazz.newArray(-1, [this.getKeys(select), null])); +argsNew[i].myName = select; +argsNew[i].index = index; +} else { +select += ext; +var exp = key.substring(pt + 6 + ext.length).trim(); +var list = this.vwr.compileExpr(exp); +var o = Clazz.newArray(-1, [this.getKeys(select), list]); +argsNew[i] = JS.SV.newV(1275082241, o); +argsNew[i].index = index; +argsNew[i].myName = select; +}}}} +return (argsNew == null ? args : argsNew); +}, "~A"); +Clazz.defineMethod(c$, "getKeys", +function(select){ +var keys = new JU.Lst(); +select = JU.PT.rep(JU.PT.rep(select, "**", "*"), ";", ",") + ","; +var pt0 = 0; +var pt1 = -1; +while ((pt1 = select.indexOf(",", pt1 + 1)) >= 0) { +if (pt1 > pt0) { +var key = select.substring(pt0, pt1); +if (key.equals("*")) { +if (keys.size() == 0) return keys; +continue; +}keys.addLast(key); +pt0 = pt1 + 1; +}} +return keys; +}, "~S"); +Clazz.defineMethod(c$, "checkMap", +function(h, key, isWild, v2, args, ptr, isCaseSensitive){ +var isOK = (v2 == null && h.containsKey(key)); +if (!isOK) { +var hasSemi = key.contains(";"); +var keys = (hasSemi ? JU.PT.split(key, ";") : null); +var lckey = (isWild && !isCaseSensitive ? key.toLowerCase() : null); +for (var k, $k = h.keySet().iterator (); $k.hasNext()&& ((k = $k.next ()) || true);) { +if (hasSemi) { +for (var i = keys.length; --i >= 0; key = null) { +key = keys[i]; +if (key.length == 0) continue; +if (isCaseSensitive) { +if (!JU.PT.isLike(k, key)) continue; +break; +}lckey = (key.indexOf("*") >= 0 ? key.toLowerCase() : null); +if (this.checkKey(k, key, lckey)) break; +} +if (key == null) continue; +} else if (isCaseSensitive ? !JU.PT.isLike(k, key) : !this.checkKey(k, key, lckey)) continue; +if (v2 == null) return k; +v2.addLast(this.extractProperty(h.get(k), args, ptr, null, true)); +if (!isWild && !hasSemi) return null; +} +}return (isOK ? key : null); +}, "java.util.Map,~S,~B,JU.Lst,~O,~N,~B"); +Clazz.defineMethod(c$, "checkKey", +function(k, key, lckey){ +return k.equalsIgnoreCase(key) || lckey != null && JU.PT.isLike(k.toLowerCase(), lckey); +}, "~S,~S,~S"); +c$.getPropertyName = Clazz.defineMethod(c$, "getPropertyName", +function(propID){ +return (propID < 0 ? "" : JV.PropertyManager.propertyTypes[propID * 3]); +}, "~N"); +c$.getParamType = Clazz.defineMethod(c$, "getParamType", +function(propID){ +return (propID < 0 ? "" : JV.PropertyManager.propertyTypes[propID * 3 + 1]); +}, "~N"); +c$.isReadableAsString = Clazz.defineMethod(c$, "isReadableAsString", +function(infoType){ +for (var i = JV.PropertyManager.readableTypes.length; --i >= 0; ) if (infoType.equalsIgnoreCase(JV.PropertyManager.readableTypes[i])) return true; + +return false; +}, "~S"); +Clazz.defineMethod(c$, "getPropertyAsObject", +function(infoType, paramInfo, returnType){ +if (infoType.equals("tokenList")) { +return JS.T.getTokensLike(paramInfo); +}var myParam = null; +var pt = infoType.indexOf("#"); +if (pt > 0) { +myParam = Clazz.newArray(-1, [infoType.substring(pt + 1), paramInfo]); +infoType = infoType.substring(0, pt); +}var id = this.getPropertyNumber(infoType); +var iHaveParameter = (myParam != null || paramInfo != null && paramInfo !== ""); +if (myParam == null) myParam = (iHaveParameter ? paramInfo : this.getDefaultPropertyParam(id)); +switch (id) { +case 47: +return this.getUnitCellInfo(); +case 46: +return this.vwr.getModelkitPropertySafely(myParam.toString()); +case 0: +return this.getAppletInfo(); +case 5: +return this.getAnimationInfo(); +case 14: +return this.getAllAtomInfo(this.vwr.getAtomBitSet(myParam)); +case 24: +return this.vwr.getModelSetAuxiliaryInfoForAtoms(myParam); +case 15: +return this.getAllBondInfo(myParam); +case 25: +return this.getBoundBoxInfo(); +case 10: +return this.vwr.tm.fixedRotationCenter; +case 16: +return this.getAllChainInfo(this.vwr.getAtomBitSet(myParam)); +case 37: +return this.vwr.getProperty("DATA_API", "consoleText", null); +case 26: +return this.vwr.getDataObj(myParam.toString(), null, -1); +case 33: +return this.vwr.getErrorMessageUn(); +case 28: +return this.vwr.evaluateExpression(myParam.toString()); +case 20: +return this.vwr.getModelExtract(myParam, true, false, "MOL"); +case 32: +return JV.PropertyManager.getFileInfo(this.vwr.getFileData(), myParam.toString()); +case 45: +return this.vwr.readCifData(myParam.toString(), null); +case 1: +return this.vwr.fm.getFullPathName(false); +case 2: +return this.vwr.getFileHeader(); +case 4: +case 3: +return (iHaveParameter ? this.vwr.getFileAsString3(myParam.toString(), true, null) : this.vwr.getCurrentFileAsString("prop")); +case 27: +var params = myParam.toString().toLowerCase(); +return this.getImage(params, params.indexOf("g64") < 0 && params.indexOf("base64") < 0 && (returnType == null || returnType.equalsIgnoreCase("java"))); +case 35: +return this.vwr.getShapeProperty(24, "info"); +case 36: +return this.vwr.getShapeProperty(24, "data"); +case 40: +return this.vwr.getNMRCalculation().getInfo(myParam.toString()); +case 41: +return this.getVariables(myParam.toString()); +case 21: +return this.vwr.getStatusChanged(myParam.toString()); +case 22: +return this.vwr; +case 38: +return this.vwr.getJspecViewProperties(myParam); +case 7: +return this.getLigandInfo(this.vwr.getAtomBitSet(myParam)); +case 9: +return this.getMeasurementInfo(); +case 29: +return this.vwr.getMenu(myParam.toString()); +case 23: +return this.vwr.sm.messageQueue; +case 30: +return this.vwr.getMinimizationInfo(); +case 6: +return this.getModelInfo(this.vwr.getAtomBitSet(myParam)); +case 18: +return this.getMoleculeInfo(this.vwr.getAtomBitSet(myParam)); +case 34: +return this.getMouseInfo(); +case 11: +return this.vwr.tm.getOrientationInfo(); +case 31: +return this.vwr.ms.getPointGroupInfo(this.vwr.getAtomBitSet(myParam)); +case 17: +return this.getAllPolymerInfo(this.vwr.getAtomBitSet(myParam)); +case 39: +return this.vwr.getScriptQueueInfo(); +case 8: +return this.getShapeInfo(); +case 19: +return this.vwr.getStateInfo3(myParam.toString(), 0, 0); +case 12: +return JU.M3.newM3(this.vwr.tm.matrixRotate); +case 42: +return this.getAnnotationInfo(myParam, 1073741925); +case 43: +return this.getAnnotationInfo(myParam, 1073742189); +case 44: +myParam = JS.SV.oValue(myParam); +var info = (Clazz.instanceOf(myParam,"java.util.Map") ? myParam : null); +return (info == null ? null : this.vwr.sm.processService(info)); +} +var data = new Array(48); +for (var i = 0; i < 48; i++) { +var paramType = JV.PropertyManager.getParamType(i); +var paramDefault = this.getDefaultPropertyParam(i); +var name = JV.PropertyManager.getPropertyName(i); +data[i] = (name.length == 0 || name.charAt(0) == 'X' ? "" : name + (paramType !== "" ? " " + JV.PropertyManager.getParamType(i) + (paramDefault !== "" ? " #default: " + this.getDefaultPropertyParam(i) : "") : "")); +} +java.util.Arrays.sort(data); +var info = new JU.SB(); +info.append("getProperty ERROR\n").append(infoType).append("?\nOptions include:\n"); +for (var i = 0; i < 48; i++) if (data[i].length > 0) info.append("\n getProperty ").append(data[i]); + +return info.toString(); +}, "~S,~O,~S"); +Clazz.defineMethod(c$, "getUnitCellInfo", +function(){ +var uc = this.vwr.getCurrentUnitCell(); +return (uc == null ? "" : uc.getUnitCellInfoMap()); +}); +Clazz.defineMethod(c$, "getImage", +function(params, asBytes){ +var height = -1; +var width = -1; +var pt; +if ((pt = params.indexOf("height=")) >= 0) height = JU.PT.parseInt(params.substring(pt + 7)); +if ((pt = params.indexOf("width=")) >= 0) width = JU.PT.parseInt(params.substring(pt + 6)); +if (width < 0 && height < 0) height = width = -1; + else if (width < 0) width = height; + else height = width; +var type = "JPG"; +if (params.indexOf("type=") >= 0) type = JU.PT.getTokens(JU.PT.replaceWithCharacter(params.substring(params.indexOf("type=") + 5), ";,", ' '))[0]; +var errMsg = new Array(1); +var bytes = this.vwr.getImageAsBytes(type.toUpperCase(), width, height, -1, errMsg); +return (errMsg[0] != null ? errMsg[0] : asBytes ? new JU.BArray(bytes) : JU.Base64.getBase64(bytes).toString()); +}, "~S,~B"); +Clazz.defineMethod(c$, "getVariables", +function(name){ +return (name.toLowerCase().equals("all") ? this.vwr.g.getAllVariables() : this.vwr.evaluateExpressionAsVariable(name)); +}, "~S"); +c$.getFileInfo = Clazz.defineMethod(c$, "getFileInfo", +function(objHeader, type){ +var ht = new java.util.Hashtable(); +if (objHeader == null) return ht; +var haveType = (type != null && type.length > 0); +if (Clazz.instanceOf(objHeader,"java.util.Map")) { +return (haveType ? (objHeader).get(type) : objHeader); +}var lines = JU.PT.split(objHeader, "\n"); +if (lines.length == 0 || lines[0].length < 7 || lines[0].charAt(6) != ' ' || !lines[0].substring(0, 6).equals(lines[0].substring(0, 6).toUpperCase())) { +ht.put("fileHeader", objHeader); +return ht; +}var keyLast = ""; +var sb = new JU.SB(); +if (haveType) type = type.toUpperCase(); +var key = ""; +for (var i = 0; i < lines.length; i++) { +var line = lines[i]; +if (line.length < 12) continue; +key = line.substring(0, 6).trim(); +var cont = line.substring(7, 10).trim(); +if (key.equals("REMARK")) { +key += cont; +}if (!key.equals(keyLast)) { +if (haveType && keyLast.equals(type)) return sb.toString(); +if (!haveType) { +ht.put(keyLast, sb.toString()); +sb = new JU.SB(); +}keyLast = key; +}if (!haveType || key.equals(type)) sb.append(line).appendC('\n'); +} +if (!haveType) { +ht.put(keyLast, sb.toString()); +}if (haveType) return (key.equals(type) ? sb.toString() : ""); +return ht; +}, "~O,~S"); +Clazz.defineMethod(c$, "getMoleculeInfo", +function(atomExpression){ +var bsAtoms = this.vwr.getAtomBitSet(atomExpression); +var molecules = this.vwr.ms.getMolecules(); +var V = new JU.Lst(); +var bsTemp = new JU.BS(); +for (var i = 0; i < molecules.length; i++) { +bsTemp = JU.BSUtil.copy(bsAtoms); +var m = molecules[i]; +bsTemp.and(m.atomList); +if (bsTemp.length() > 0) { +var info = new java.util.Hashtable(); +info.put("mf", m.getMolecularFormula(true, null, false)); +info.put("number", Integer.$valueOf(m.moleculeIndex + 1)); +info.put("modelNumber", this.vwr.ms.getModelNumberDotted(m.modelIndex)); +info.put("numberInModel", Integer.$valueOf(m.indexInModel + 1)); +info.put("nAtoms", Integer.$valueOf(m.ac)); +info.put("nElements", Integer.$valueOf(m.nElements)); +V.addLast(info); +}} +return V; +}, "~O"); +Clazz.overrideMethod(c$, "getModelInfo", +function(atomExpression){ +var bsModels = this.vwr.ms.getModelBS(this.vwr.getAtomBitSet(atomExpression), false); +var m = this.vwr.ms; +var info = new java.util.Hashtable(); +info.put("modelSetName", m.modelSetName); +info.put("modelIndex", Integer.$valueOf(this.vwr.am.cmi)); +info.put("modelCount", Integer.$valueOf(m.mc)); +info.put("isTainted", Boolean.$valueOf(m.tainted != null)); +info.put("canSkipLoad", Boolean.$valueOf(m.canSkipLoad)); +info.put("modelSetHasVibrationVectors", Boolean.$valueOf(m.modelSetHasVibrationVectors())); +if (m.modelSetProperties != null) { +info.put("modelSetProperties", m.modelSetProperties); +}info.put("modelCountSelected", Integer.$valueOf(bsModels.cardinality())); +info.put("modelsSelected", bsModels); +var vModels = new JU.Lst(); +m.getMolecules(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +var model = new java.util.Hashtable(); +model.put("_ipt", Integer.$valueOf(i)); +model.put("num", Integer.$valueOf(m.getModelNumber(i))); +model.put("file_model", m.getModelNumberDotted(i)); +model.put("name", m.getModelName(i)); +var s = m.getModelTitle(i); +if (s != null) model.put("title", s); +s = m.getModelFileName(i); +if (s != null) model.put("file", s); +s = m.getInfo(i, "modelID"); +if (s != null) model.put("id", s); +model.put("vibrationVectors", Boolean.$valueOf(this.vwr.modelHasVibrationVectors(i))); +var mi = m.am[i]; +model.put("atomCount", Integer.$valueOf(mi.act)); +model.put("bondCount", Integer.$valueOf(mi.getBondCount())); +model.put("groupCount", Integer.$valueOf(mi.getGroupCount())); +model.put("moleculeCount", Integer.$valueOf(mi.moleculeCount)); +if (mi.isBioModel) model.put("polymerCount", Integer.$valueOf((mi).getBioPolymerCount())); +model.put("chainCount", Integer.$valueOf(m.getChainCountInModelWater(i, true))); +if (mi.properties != null) { +model.put("modelProperties", mi.properties); +}var energy = m.getInfo(i, "Energy"); +if (energy != null) { +model.put("energy", energy); +}model.put("atomCount", Integer.$valueOf(mi.act)); +vModels.addLast(model); +} +info.put("models", vModels); +return info; +}, "~O"); +Clazz.overrideMethod(c$, "getLigandInfo", +function(atomExpression){ +var bsAtoms = this.vwr.getAtomBitSet(atomExpression); +var bsSolvent = this.vwr.getAtomBitSet("solvent"); +var info = new java.util.Hashtable(); +var ligands = new JU.Lst(); +info.put("ligands", ligands); +var ms = this.vwr.ms; +var bsExclude = JU.BSUtil.copyInvert(bsAtoms, ms.ac); +bsExclude.or(bsSolvent); +var atoms = ms.at; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) if (atoms[i].group.isProtein() || atoms[i].group.isDna() || atoms[i].group.isRna()) atoms[i].group.setAtomBitsAndClear(bsExclude, bsAtoms); + +var bsModelAtoms = new Array(ms.mc); +for (var i = ms.mc; --i >= 0; ) { +bsModelAtoms[i] = this.vwr.getModelUndeletedAtomsBitSet(i); +bsModelAtoms[i].andNot(bsExclude); +} +var molList = JU.JmolMolecule.getMolecules(atoms, bsModelAtoms, null, bsExclude); +for (var i = 0; i < molList.length; i++) { +var bs = molList[i].atomList; +var ligand = new java.util.Hashtable(); +ligands.addLast(ligand); +ligand.put("atoms", JU.Escape.eBS(bs)); +var names = ""; +var sep = ""; +var lastGroup = null; +var iChainLast = 0; +var sChainLast = null; +var reslist = ""; +var model = ""; +var resnolast = 2147483647; +var resnofirst = 2147483647; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +var atom = atoms[j]; +if (lastGroup === atom.group) continue; +lastGroup = atom.group; +var resno = atom.getResno(); +var chain = atom.getChainID(); +if (resnolast != resno - 1) { +if (reslist.length != 0 && resnolast != resnofirst) reslist += "-" + resnolast; +chain = -1; +resnofirst = resno; +}model = "/" + ms.getModelNumberDotted(atom.mi); +if (iChainLast != 0 && chain != iChainLast) reslist += ":" + sChainLast + model; +if (chain == -1) reslist += " " + resno; +resnolast = resno; +iChainLast = atom.getChainID(); +sChainLast = atom.getChainIDStr(); +names += sep + atom.getGroup3(false); +sep = "-"; +} +reslist += (resnofirst == resnolast ? "" : "-" + resnolast) + (iChainLast == 0 ? "" : ":" + sChainLast) + model; +ligand.put("groupNames", names); +ligand.put("residueList", reslist.substring(1)); +} +return info; +}, "~O"); +Clazz.overrideMethod(c$, "getAtomData", +function(atomExpression, type, allTrajectories){ +if (!atomExpression.startsWith("{")) atomExpression = "{" + atomExpression + "}"; +var isUser = type.toLowerCase().startsWith("user:"); +var isProp = type.toLowerCase().startsWith("property_"); +if (allTrajectories && !isUser && !isProp) type = type.toUpperCase(); +var exp = (isProp ? "%{" + type + "}" : isUser ? type.substring(5) : type.equals("xyzrn") ? "%-2e %8.3x %8.3y %8.3z %4.2[vdw] 1 [%n]%r.%a#%i" : type.equals("xyzvib") ? "%-2e %10.5x %10.5y %10.5z %10.5vx %10.5vy %10.5vz" : type.equals("pdb") ? "{selected and not hetero}.label(\"ATOM %5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \").lines+{selected and hetero}.label(\"HETATM%5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \").lines" : type.equals("xyz") ? "%-2e %10.5x %10.5y %10.5z" : type.equals("cfi") ? "print '$CFI from Jmol" + JV.Viewer.getJmolVersion() + "\n'+{selected}.count + ' ' + {selected}.bonds.count + '\n' + {selected}.format('%10.0[atomno] %10.0[elemno] %10.4[xyz]') + {selected}.bonds.format('%i1 %i2') + '\n' + {selected}.bonds.format('%ORDER')" : null); +if (exp == null) return this.getModelExtract(this.vwr.getAtomBitSet(atomExpression), false, false, type.toUpperCase(), allTrajectories); +if (exp.startsWith("print")) { +if (!atomExpression.equals("selected")) exp = JU.PT.rep(exp, "selected", atomExpression.substring(1, atomExpression.length - 1)); +return this.vwr.runScriptCautiously(exp); +}if (exp.indexOf("label") < 0) exp = atomExpression + ".label(\"" + exp + "\").lines"; + else if (!atomExpression.equals("selected")) exp = JU.PT.rep(exp, "selected", atomExpression.substring(1, atomExpression.length - 1)); +return this.vwr.evaluateExpression(exp); +}, "~S,~S,~B"); +Clazz.overrideMethod(c$, "getModelExtract", +function(bs, doTransform, isModelKit, type, allTrajectories){ +if (bs.nextSetBit(0) < 0) return ""; +var uc = type.toUpperCase(); +if (JU.PT.isOneOf(uc, ";CIF;QCJSON;XSF;PWMAT;")) return this.getModel(uc, bs, null, null); +if (uc.equals("PWSLAB")) return this.getModel("PWMAT", bs, Clazz.newArray(-1, ["slab"]), null); +if (uc.equals("CIFP1")) return this.getModel("CIF", bs, Clazz.newArray(-1, ["P1"]), null); +if (uc.equals("CML")) return this.getModelCml(bs, 2147483647, true, doTransform, allTrajectories); +if (uc.equals("PDB") || uc.equals("PQR")) return this.getPdbAtomData(bs, null, uc.equals("PQR"), doTransform, allTrajectories); +var asV3000 = uc.equals("V3000"); +var asSDF = uc.equals("SDF"); +var noAromatic = uc.equals("MOL"); +var asXYZVIB = (!doTransform && uc.equals("XYZVIB")); +var asXYZRN = uc.equals("XYZRN"); +var isXYZ = uc.startsWith("XYZ"); +var asJSON = uc.equals("JSON") || uc.equals("CD"); +var mol = new JU.SB(); +var ms = this.vwr.ms; +var bsModels = this.vwr.ms.getModelBS(bs, true); +var modelIndex = bsModels.nextSetBit(0); +var is2D = "2D".equals(this.vwr.ms.am[modelIndex].auxiliaryInfo.get("dimension")); +var atoms = ms.at; +var bsAtoms = JU.BSUtil.copy(bs); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (doTransform && atoms[i].isDeleted()) bsAtoms.clear(i); + +if (!asXYZVIB && bsAtoms.isEmpty()) return ""; +var bsBonds = JV.PropertyManager.getCovalentBondsForAtoms(ms.bo, ms.bondCount, bsAtoms); +var isOK = true; +if (ms.trajectory != null && !allTrajectories) ms.trajectory.selectDisplayed(bsModels); +var q = (doTransform ? this.vwr.tm.getRotationQ() : null); +if (isXYZ) { +this.writeXYZ(mol, bsAtoms, bsModels, q, asXYZVIB, asXYZRN); +} else { +var title = this.vwr.ms.getFrameTitle(bsModels.nextSetBit(0)); +title = (title != null ? title.$replace('\n', ' ') : isModelKit ? "Jmol Model Kit" : JV.FileManager.fixDOSName(this.vwr.fm.getFullPathName(false))); +var mw = (J.api.Interface.getInterface("J.adapter.writers.MOLWriter", this.vwr, "write")).setViewer(this.vwr); +if (asSDF) { +mol = new JU.SB(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +var bsTemp = JU.BSUtil.copy(bsAtoms); +bsTemp.and(ms.getModelAtomBitSetIncludingDeleted(i, false)); +bsBonds = JV.PropertyManager.getCovalentBondsForAtoms(ms.bo, ms.bondCount, bsTemp); +if (!(isOK = mw.addMolFile(title, i, mol, bsTemp, bsBonds, false, false, noAromatic, q, is2D))) break; +} +} else { +isOK = mw.addMolFile(title, -1, mol, bsAtoms, bsBonds, asV3000, asJSON, noAromatic, q, is2D); +}}return (isOK ? mol.toString() : "ERROR: Too many atoms or bonds -- use V3000 format."); +}, "JU.BS,~B,~B,~S,~B"); +Clazz.defineMethod(c$, "writeXYZ", +function(mol, bsAtoms, bsModels, q, asXYZVIB, asXYZRN){ +var ms = this.vwr.ms; +var atoms = ms.at; +var tokensXYZ = JM.LabelToken.compile(this.vwr, (asXYZRN ? "%-2e _XYZ_ %4.2[vdw] 1 [%n]%r.%a#%i\n" : "%-2e _XYZ_\n"), '\0', null); +var tokensVib = (asXYZVIB ? JM.LabelToken.compile(this.vwr, "%-2e _XYZ_ %12.5vx %12.5vy %12.5vz\n", '\0', null) : null); +var ptTemp = new JU.P3(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +var bsTemp = JU.BSUtil.copy(bsAtoms); +bsTemp.and(ms.getModelAtomBitSetIncludingDeleted(i, false)); +if (bsTemp.isEmpty()) continue; +mol.appendI(bsTemp.cardinality()).appendC('\n'); +var props = ms.am[i].properties; +mol.append("Model[" + (i + 1) + "]: "); +if (ms.frameTitles[i] != null && ms.frameTitles[i].length > 0) { +mol.append(ms.frameTitles[i].$replace('\n', ' ')); +} else if (props == null) { +mol.append("Jmol " + JV.Viewer.getJmolVersion()); +} else { +var sb = new JU.SB(); +var e = props.propertyNames(); +var path = null; +while (e.hasMoreElements()) { +var propertyName = e.nextElement(); +if (propertyName.equals(".PATH")) path = props.getProperty(propertyName); + else sb.append(";").append(propertyName).append("=").append(props.getProperty(propertyName)); +} +if (path != null) sb.append(";PATH=").append(path); +path = sb.substring(sb.length() > 0 ? 1 : 0); +mol.append(path.$replace('\n', ' ')); +}mol.appendC('\n'); +var o = Clazz.newArray(-1, [ptTemp]); +for (var j = bsTemp.nextSetBit(0); j >= 0; j = bsTemp.nextSetBit(j + 1)) { +var s = JM.LabelToken.formatLabelAtomArray(this.vwr, atoms[j], (asXYZVIB && ms.getVibration(j, false) != null ? tokensVib : tokensXYZ), '\0', null, ptTemp); +ms.getPointTransf(i, atoms[j], q, ptTemp); +s = JU.PT.rep(s, "_XYZ_", JU.PT.sprintf("%12.5p %12.5p %12.5p", "p", o)); +mol.append(s); +} +} +}, "JU.SB,JU.BS,JU.BS,JU.Quat,~B,~B"); +Clazz.defineMethod(c$, "getModel", +function(type, bs, data, out){ +var writer = J.api.Interface.getInterface("J.adapter.writers." + type + "Writer", this.vwr, "script"); +writer.set(this.vwr, out, data); +return writer.write(bs); +}, "~S,JU.BS,~A,JU.OC"); +c$.getCovalentBondsForAtoms = Clazz.defineMethod(c$, "getCovalentBondsForAtoms", +function(bonds, bondCount, bsAtoms){ +var bsBonds = new JU.BS(); +for (var i = 0; i < bondCount; i++) { +var bond = bonds[i]; +if (bsAtoms.get(bond.atom1.i) && bsAtoms.get(bond.atom2.i) && bond.isCovalent()) bsBonds.set(i); +} +return bsBonds; +}, "~A,~N,JU.BS"); +Clazz.overrideMethod(c$, "getChimeInfo", +function(tok, bs){ +switch (tok) { +case 1073741982: +var sb = new JU.SB(); +this.vwr.getChimeMessenger().getAllChimeInfo(sb); +return sb.appendC('\n').toString().substring(1); +case 1073741863: +return this.getBasePairInfo(bs); +default: +return this.getChimeInfoA(this.vwr.ms.at, tok, bs); +} +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getChimeInfoA", +function(atoms, tok, bs){ +var info = new JU.SB().append("\n"); +var s = ""; +var clast = null; +var glast = null; +var modelLast = -1; +var n = 0; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = atoms[i]; +switch (tok) { +default: +return ""; +case 1113589787: +s = a.getInfo(); +break; +case 1153433601: +s = "" + a.getAtomNumber(); +break; +case 1086324742: +s = a.getGroup3(false); +break; +case 1086326788: +case 1073742120: +case 1086324744: +case 1086324743: +var id = a.getChainID(); +s = (id == 0 ? " " : a.getChainIDStr()); +if (id >= 300) s = JU.PT.esc(s); +switch (tok) { +case 1073742120: +s = "[" + a.getGroup3(false) + "]" + a.group.getSeqcodeString() + ":" + s; +break; +case 1086324744: +case 1086324743: +if (a.mi != modelLast) { +info.appendC('\n'); +n = 0; +modelLast = a.mi; +info.append("Model " + a.getModelNumber()); +glast = null; +clast = null; +}if (a.group.chain !== clast) { +info.appendC('\n'); +n = 0; +clast = a.group.chain; +info.append("Chain " + s + ":\n"); +glast = null; +}var g = a.group; +if (g !== glast) { +glast = g; +if (tok == 1086324743) { +info.append(a.getGroup1('?')); +} else { +if ((n++) % 5 == 0 && n > 1) info.appendC('\n'); +JU.PT.leftJustify(info, " ", "[" + a.getGroup3(false) + "]" + a.getResno() + " "); +}}continue; +} +break; +} +if (info.indexOf("\n" + s + "\n") < 0) info.append(s).appendC('\n'); +} +if (tok == 1086324744) info.appendC('\n'); +return info.toString().substring(1); +}, "~A,~N,JU.BS"); +Clazz.overrideMethod(c$, "getModelFileInfo", +function(frames){ +var ms = this.vwr.ms; +var sb = new JU.SB(); +for (var i = 0; i < ms.mc; ++i) { +if (frames != null && !frames.get(i)) continue; +var s = "[\"" + ms.getModelNumberDotted(i) + "\"] = "; +sb.append("\n\nfile").append(s).append(JU.PT.esc(ms.getModelFileName(i))); +var id = ms.getInfo(i, "modelID"); +if (id != null) sb.append("\nid").append(s).append(JU.PT.esc(id)); +sb.append("\ntitle").append(s).append(JU.PT.esc(ms.getModelTitle(i))); +sb.append("\nname").append(s).append(JU.PT.esc(ms.getModelName(i))); +sb.append("\ntype").append(s).append(JU.PT.esc(ms.getModelFileType(i))); +} +return sb.toString(); +}, "JU.BS"); +Clazz.defineMethod(c$, "getAllAtomInfo", +function(bs){ +var V = new JU.Lst(); +var ptTemp = new JU.P3(); +var imodel = -1; +var ucell = null; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var mi = this.vwr.ms.at[i].getModelIndex(); +if (mi != imodel) { +ucell = this.vwr.ms.getUnitCell(mi); +imodel = mi; +}V.addLast(this.getAtomInfoLong(i, ptTemp, ucell)); +} +return V; +}, "JU.BS"); +Clazz.defineMethod(c$, "getAtomInfoLong", +function(i, ptTemp, ucell){ +var ms = this.vwr.ms; +var atom = ms.at[i]; +var info = new java.util.Hashtable(); +ms.getAtomIdentityInfo(i, info, ptTemp); +info.put("element", ms.getElementName(i)); +info.put("elemno", Integer.$valueOf(ms.at[i].getElementNumber())); +info.put("x", Float.$valueOf(atom.x)); +info.put("y", Float.$valueOf(atom.y)); +info.put("z", Float.$valueOf(atom.z)); +if (ucell != null) { +ptTemp.setT(atom); +ucell.toFractional(ptTemp, true); +info.put("fx", Float.$valueOf(ptTemp.x)); +info.put("fy", Float.$valueOf(ptTemp.y)); +info.put("fz", Float.$valueOf(ptTemp.z)); +}info.put("coord", JU.P3.newP(atom)); +if (ms.vibrations != null && ms.vibrations[i] != null) ms.vibrations[i].getInfo(info); +info.put("bondCount", Integer.$valueOf(atom.getCovalentBondCount())); +info.put("radius", Float.$valueOf((atom.getRasMolRadius() / 120.0))); +info.put("model", atom.getModelNumberForLabel()); +var shape = atom.atomPropertyString(this.vwr, 1086324748); +if (shape != null) info.put("shape", shape); +info.put("visible", Boolean.$valueOf(atom.checkVisible())); +info.put("clickabilityFlags", Integer.$valueOf(atom.clickabilityFlags)); +info.put("visibilityFlags", Integer.$valueOf(atom.shapeVisibilityFlags)); +info.put("spacefill", Float.$valueOf(atom.getRadius())); +var strColor = JU.Escape.escapeColor(this.vwr.gdata.getColorArgbOrGray(atom.colixAtom)); +if (strColor != null) info.put("color", strColor); +info.put("colix", Integer.$valueOf(atom.colixAtom)); +var isTranslucent = JU.C.isColixTranslucent(atom.colixAtom); +if (isTranslucent) info.put("translucent", Boolean.$valueOf(isTranslucent)); +info.put("formalCharge", Integer.$valueOf(atom.getFormalCharge())); +info.put("partialCharge", Float.$valueOf(atom.getPartialCharge())); +var d = atom.getSurfaceDistance100() / 100; +if (d >= 0) info.put("surfaceDistance", Float.$valueOf(d)); +if (ms.am[atom.mi].isBioModel) { +info.put("resname", atom.getGroup3(false)); +var insCode = atom.group.getInsertionCode(); +var seqNum = atom.getResno(); +if (seqNum > 0) info.put("resno", Integer.$valueOf(seqNum)); +if (insCode.charCodeAt(0) != 0) info.put("insertionCode", "" + insCode); +info.put("name", ms.at[i].getAtomName()); +info.put("chain", atom.getChainIDStr()); +info.put("atomID", Integer.$valueOf(atom.atomID)); +info.put("groupID", Integer.$valueOf(atom.group.groupID)); +if (atom.altloc != '\0') info.put("altLocation", "" + atom.altloc); +info.put("structure", Integer.$valueOf(atom.group.getProteinStructureType().getId())); +info.put("polymerLength", Integer.$valueOf(atom.group.getBioPolymerLength())); +info.put("occupancy", Integer.$valueOf(atom.getOccupancy100())); +var temp = atom.getBfactor100(); +info.put("temp", Integer.$valueOf(Clazz.doubleToInt(temp / 100))); +}return info; +}, "~N,JU.P3,J.api.SymmetryInterface"); +Clazz.defineMethod(c$, "getAllBondInfo", +function(bsOrArray){ +var v = new JU.Lst(); +var ms = this.vwr.ms; +var bondCount = ms.bondCount; +var bonds = ms.bo; +var bs1; +if ((typeof(bsOrArray)=='string')) { +bsOrArray = this.vwr.getAtomBitSet(bsOrArray); +}var ptTemp = new JU.P3(); +if (Clazz.instanceOf(bsOrArray,Array)) { +bs1 = (bsOrArray)[0]; +var bs2 = (bsOrArray)[1]; +for (var i = 0; i < bondCount; i++) { +var ia = bonds[i].atom1.i; +var ib = bonds[i].atom2.i; +if (bs1.get(ia) && bs2.get(ib) || bs2.get(ia) && bs1.get(ib)) v.addLast(this.getBondInfo(i, ptTemp)); +} +} else if (Clazz.instanceOf(bsOrArray,"JM.BondSet")) { +bs1 = bsOrArray; +for (var i = bs1.nextSetBit(0); i >= 0 && i < bondCount; i = bs1.nextSetBit(i + 1)) v.addLast(this.getBondInfo(i, ptTemp)); + +} else if (Clazz.instanceOf(bsOrArray,"JU.BS")) { +bs1 = bsOrArray; +var thisAtom = (bs1.cardinality() == 1 ? bs1.nextSetBit(0) : -1); +for (var i = 0; i < bondCount; i++) { +if (thisAtom >= 0 ? (bonds[i].atom1.i == thisAtom || bonds[i].atom2.i == thisAtom) : bs1.get(bonds[i].atom1.i) && bs1.get(bonds[i].atom2.i)) v.addLast(this.getBondInfo(i, ptTemp)); +} +}return v; +}, "~O"); +Clazz.defineMethod(c$, "getBondInfo", +function(i, ptTemp){ +var bond = this.vwr.ms.bo[i]; +var atom1 = bond.atom1; +var atom2 = bond.atom2; +var info = new java.util.Hashtable(); +info.put("_bpt", Integer.$valueOf(i)); +var infoA = new java.util.Hashtable(); +this.vwr.ms.getAtomIdentityInfo(atom1.i, infoA, ptTemp); +var infoB = new java.util.Hashtable(); +this.vwr.ms.getAtomIdentityInfo(atom2.i, infoB, ptTemp); +info.put("atom1", infoA); +info.put("atom2", infoB); +info.put("jmol_order", "0x" + Integer.toHexString(bond.getBondType())); +info.put("edge_type", Integer.$valueOf(bond.getBondType())); +info.put("order", Float.$valueOf(JU.Edge.getBondOrderNumberFromOrder(bond.getBondType()))); +info.put("type", JU.Edge.getBondOrderNameFromOrder(bond.getBondType())); +info.put("radius", Float.$valueOf((bond.mad / 2000.))); +info.put("length_Ang", Float.$valueOf(atom1.distance(atom2))); +info.put("visible", Boolean.$valueOf(bond.shapeVisibilityFlags != 0)); +var strColor = JU.Escape.escapeColor(this.vwr.gdata.getColorArgbOrGray(bond.colix)); +if (strColor != null) info.put("color", strColor); +info.put("colix", Integer.$valueOf(bond.colix)); +if (JU.C.isColixTranslucent(bond.colix)) info.put("translucent", Boolean.TRUE); +return info; +}, "~N,JU.P3"); +Clazz.defineMethod(c$, "getAllChainInfo", +function(bs){ +var finalInfo = new java.util.Hashtable(); +var modelVector = new JU.Lst(); +var modelCount = this.vwr.ms.mc; +for (var i = 0; i < modelCount; ++i) { +var modelInfo = new java.util.Hashtable(); +var info = this.getChainInfo(i, bs); +if (info.size() > 0) { +modelInfo.put("modelIndex", Integer.$valueOf(i)); +modelInfo.put("chains", info); +modelVector.addLast(modelInfo); +}} +finalInfo.put("models", modelVector); +return finalInfo; +}, "JU.BS"); +Clazz.defineMethod(c$, "getChainInfo", +function(modelIndex, bs){ +var model = this.vwr.ms.am[modelIndex]; +var nChains = model.getChainCount(true); +var infoChains = new JU.Lst(); +var ptTemp = new JU.P3(); +for (var i = 0; i < nChains; i++) { +var chain = model.getChainAt(i); +var infoChain = new JU.Lst(); +var nGroups = chain.groupCount; +var arrayName = new java.util.Hashtable(); +for (var igroup = 0; igroup < nGroups; igroup++) { +var group = chain.groups[igroup]; +if (bs.get(group.firstAtomIndex)) infoChain.addLast(group.getGroupInfo(igroup, ptTemp)); +} +if (!infoChain.isEmpty()) { +arrayName.put("residues", infoChain); +infoChains.addLast(arrayName); +}} +return infoChains; +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "getAllPolymerInfo", +function(bs){ +var info = new java.util.Hashtable(); +if (this.vwr.ms.bioModelset != null) this.vwr.ms.bioModelset.getAllPolymerInfo(bs, info); +return info; +}, "JU.BS"); +Clazz.defineMethod(c$, "getBasePairInfo", +function(bs){ +var info = new JU.SB(); +var vHBonds = new JU.Lst(); +this.vwr.ms.calcRasmolHydrogenBonds(bs, bs, vHBonds, true, 1, false, null); +for (var i = vHBonds.size(); --i >= 0; ) { +var b = vHBonds.get(i); +JV.PropertyManager.getAtomResidueInfo(info, b.atom1); +info.append(" - "); +JV.PropertyManager.getAtomResidueInfo(info, b.atom2); +info.append("\n"); +} +return info.toString(); +}, "JU.BS"); +c$.getAtomResidueInfo = Clazz.defineMethod(c$, "getAtomResidueInfo", +function(info, atom){ +info.append("[").append(atom.getGroup3(false)).append("]").append(atom.group.getSeqcodeString()).append(":"); +var id = atom.getChainID(); +info.append(id == 0 ? " " : atom.getChainIDStr()); +}, "JU.SB,JM.Atom"); +Clazz.defineMethod(c$, "getAppletInfo", +function(){ +var info = new java.util.Hashtable(); +info.put("htmlName", this.vwr.htmlName); +info.put("syncId", this.vwr.syncId); +info.put("fullName", this.vwr.fullName); +info.put("codeBase", "" + JV.Viewer.appletCodeBase); +if (this.vwr.isApplet) { +info.put("documentBase", JV.Viewer.appletDocumentBase); +info.put("registry", this.vwr.sm.getRegistryInfo()); +}info.put("version", JV.JC.version); +info.put("date", JV.JC.date); +info.put("javaVendor", JV.Viewer.strJavaVendor); +info.put("javaVersion", JV.Viewer.strJavaVersion + (!JV.Viewer.isJS ? "" : this.vwr.isWebGL ? "(WebGL)" : "(HTML5)")); +info.put("operatingSystem", JV.Viewer.strOSName); +return info; +}); +Clazz.defineMethod(c$, "getAnimationInfo", +function(){ +var am = this.vwr.am; +var info = new java.util.Hashtable(); +info.put("firstModelIndex", Integer.$valueOf(am.firstFrameIndex)); +info.put("lastModelIndex", Integer.$valueOf(am.lastFrameIndex)); +info.put("animationDirection", Integer.$valueOf(am.animationDirection)); +info.put("currentDirection", Integer.$valueOf(am.currentDirection)); +info.put("displayModelIndex", Integer.$valueOf(am.cmi)); +if (am.animationFrames != null) { +info.put("isMovie", Boolean.TRUE); +info.put("frames", JU.Escape.eAI(am.animationFrames)); +info.put("currentAnimationFrame", Integer.$valueOf(am.caf)); +}info.put("displayModelNumber", this.vwr.getModelNumberDotted(am.cmi)); +info.put("displayModelName", (am.cmi >= 0 ? this.vwr.getModelName(am.cmi) : "")); +info.put("animationFps", Integer.$valueOf(am.animationFps)); +info.put("animationReplayMode", JS.T.nameOf(am.animationReplayMode)); +info.put("firstFrameDelay", Float.$valueOf(am.firstFrameDelay)); +info.put("lastFrameDelay", Float.$valueOf(am.lastFrameDelay)); +info.put("animationOn", Boolean.$valueOf(am.animationOn)); +info.put("animationPaused", Boolean.$valueOf(am.animationPaused)); +return info; +}); +Clazz.defineMethod(c$, "getBoundBoxInfo", +function(){ +var pts = this.vwr.ms.getBoxInfo(null, 1).getBoundBoxPoints(true); +var info = new java.util.Hashtable(); +info.put("center", JU.P3.newP(pts[0])); +info.put("vector", JU.V3.newV(pts[1])); +info.put("corner0", JU.P3.newP(pts[2])); +info.put("corner1", JU.P3.newP(pts[3])); +return info; +}); +Clazz.defineMethod(c$, "getShapeInfo", +function(){ +var info = new java.util.Hashtable(); +var commands = new JU.SB(); +var shapes = this.vwr.shm.shapes; +if (shapes != null) for (var i = 0; i < 37; ++i) { +var shape = shapes[i]; +if (shape != null) { +var shapeType = JV.JC.shapeClassBases[i]; +var shapeDetail = shape.getShapeDetail(); +if (shapeDetail != null) info.put(shapeType, shapeDetail); +}} +if (commands.length() > 0) info.put("shapeCommands", commands.toString()); +return info; +}); +Clazz.defineMethod(c$, "getAnnotationInfo", +function(atomExpression, type){ +var bsAtoms = this.vwr.getAtomBitSet(atomExpression); +var iModel = this.vwr.ms.getModelBS(bsAtoms, false).nextSetBit(0); +if (iModel < 0) return null; +var modelinfo = this.vwr.ms.getModelAuxiliaryInfo(iModel); +var objAnn = modelinfo.get(type == 1073741925 ? "domains" : "validation"); +if (objAnn == null || objAnn.tok != 6) return null; +this.vwr.getAnnotationParser(false).initializeAnnotation(objAnn, type, iModel); +return objAnn.mapGet("_list"); +}, "~O,~N"); +Clazz.defineMethod(c$, "getMeasurementInfo", +function(){ +return this.vwr.getShapeProperty(6, "info"); +}); +Clazz.defineMethod(c$, "getMouseInfo", +function(){ +if (!this.vwr.haveDisplay) return null; +var info = new java.util.Hashtable(); +var list = new JU.Lst(); +var am = this.vwr.acm; +for (var obj, $obj = am.b.getBindings().values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (Clazz.instanceOf(obj, Boolean)) continue; +if (JU.AU.isAI(obj)) { +var binding = obj; +obj = Clazz.newArray(-1, [JV.binding.Binding.getMouseActionName(binding[0], false), JV.ActionManager.getActionName(binding[1])]); +}list.addLast(obj); +} +info.put("bindings", list); +info.put("bindingName", am.b.name); +info.put("actionNames", JV.ActionManager.actionNames); +info.put("actionInfo", JV.ActionManager.actionInfo); +info.put("bindingInfo", JU.PT.split(am.getBindingInfo(null), "\n")); +return info; +}); +Clazz.overrideMethod(c$, "getPdbAtomData", +function(bs, out, isPQR, doTransform, allTrajectories){ +if (this.vwr.ms.ac == 0 || bs.nextSetBit(0) < 0) return ""; +return this.getModel("PDB", bs, Clazz.newArray(-1, [new Boolean(isPQR), new Boolean(doTransform), new Boolean(allTrajectories)]), out); +}, "JU.BS,JU.OC,~B,~B,~B"); +Clazz.overrideMethod(c$, "getPdbData", +function(modelIndex, type, bsSelected, parameters, out, addStructure){ +if (this.vwr.ms.isJmolDataFrameForModel(modelIndex)) modelIndex = this.vwr.ms.getJmolDataSourceFrame(modelIndex); +if (modelIndex < 0) return ""; +var model = this.vwr.ms.am[modelIndex]; +var isPDB = model.isBioModel; +if (parameters == null && !isPDB) return null; +if (out == null) out = this.vwr.getOutputChannel(null, null); +var pdbCONECT = new JU.SB(); +var isDraw = (type.indexOf("draw") >= 0); +var bsAtoms = null; +var bsWritten = new JU.BS(); +var ctype = '\u0000'; +this.vwr.ms.getLabeler(); +var tokens = JM.LabelToken.compile(this.vwr, "ATOM %-6i%4a%1A%3.-3n %1c%4R%1E ", '\0', null); +if (parameters == null) { +ctype = (type.length > 11 && type.indexOf("quaternion ") >= 0 ? type.charAt(11) : 'R'); +(model).getPdbData(type, ctype, isDraw, bsSelected, out, tokens, pdbCONECT, bsWritten); +bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +} else { +bsAtoms = parameters[0]; +var dataX = parameters[1]; +var dataY = parameters[2]; +var dataZ = parameters[3]; +var haveY = (dataY != null); +var haveZ = (dataZ != null); +var minXYZ = parameters[4]; +var maxXYZ = parameters[5]; +var factors = parameters[6]; +var center = parameters[7]; +var format = parameters[8]; +var properties = parameters[9]; +var isPDBFormat = (factors != null && format == null); +var atoms = this.vwr.ms.at; +if (isPDBFormat) { +out.append("REMARK 6 Jmol PDB-encoded data: ").append(type).append("; ").append(JV.Viewer.getJmolVersion()).append("; ").append(this.vwr.apiPlatform.getDateFormat(null)).append("\n"); +out.append("REMARK 6 Jmol data").append(" min = ").append(JU.Escape.eP(minXYZ)).append(" max = ").append(JU.Escape.eP(maxXYZ)).append(" unScaledXyz = xyz * ").append(JU.Escape.eP(factors)).append(" + ").append(JU.Escape.eP(center)).append(";\n"); +var atomNames = null; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var name = "" + atoms[i].getAtomName(); +if (atomNames != null || name.length > 4) { +if (atomNames == null) { +atomNames = ""; +i = -1; +continue; +}atomNames += " " + name; +}} +if (atomNames != null) out.append("REMARK 6 Jmol atom names").append(atomNames).append("\n"); +var resNames = null; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var name = "" + atoms[i].getGroup3(true); +if (resNames != null || name.length > 3) { +if (resNames == null) { +resNames = ""; +i = -1; +continue; +}resNames += " " + name; +}} +if (resNames != null) out.append("REMARK 6 Jmol residue names").append(resNames).append("\n"); +for (var i = 0; i < properties.length; i++) if (properties[i] != null) out.append("REMARK 6 Jmol property ").append(properties[i]).append(";\n"); + +}var strExtra = ""; +var atomLast = null; +var ptTemp = new JU.P3(); +if (!isPDBFormat) { +if (format == null) format = "%-5i %-10s %-13.5f " + (haveZ ? "%-13.5f %-13.5f" : haveY ? "%-13.5f" : ""); +format += "\n"; +}for (var i = bsAtoms.nextSetBit(0), n = 0; i >= 0; i = bsAtoms.nextSetBit(i + 1), n++) { +var x = dataX[n]; +var y = (haveY ? dataY[n] : 0); +var z = (haveZ ? dataZ[n] : 0); +if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) continue; +var a = atoms[i]; +if (isPDBFormat) { +out.append(JM.LabelToken.formatLabelAtomArray(this.vwr, a, tokens, '\0', null, ptTemp)); +if (isPDB) bsWritten.set(i); +out.append(JU.PT.sprintf("%-8.2f%-8.2f%-10.2f %6.3f %2s %s\n", "ssF", Clazz.newArray(-1, [a.getElementSymbolIso(false).toUpperCase(), strExtra, Clazz.newFloatArray(-1, [x, y, z, 0])]))); +if (atomLast != null && atomLast.group.getBioPolymerIndexInModel() == a.group.getBioPolymerIndexInModel()) pdbCONECT.append("CONECT").append(JU.PT.formatStringI("%5i", "i", atomLast.getAtomNumber())).append(JU.PT.formatStringI("%5i", "i", a.getAtomNumber())).appendC('\n'); +} else if (haveZ) { +out.append(JU.PT.sprintf(format, "isF", Clazz.newArray(-1, [Integer.$valueOf(a.getAtomNumber()), a.getAtomName(), Clazz.newFloatArray(-1, [x, y, z])]))); +} else if (haveY) { +out.append(JU.PT.sprintf(format, "isF", Clazz.newArray(-1, [Integer.$valueOf(a.getAtomNumber()), a.getAtomName(), Clazz.newFloatArray(-1, [x, y])]))); +} else { +out.append(JU.PT.sprintf(format, "isF", Clazz.newArray(-1, [Integer.$valueOf(a.getAtomNumber()), a.getAtomName(), Clazz.newFloatArray(-1, [x])]))); +}atomLast = a; +} +}out.append(pdbCONECT.toString()); +if (isDraw) return out.toString(); +bsSelected.and(bsAtoms); +if (isPDB && addStructure) out.append("\n\n" + this.vwr.ms.getProteinStructureState(bsWritten, ctype == 'R' ? 4138 : 1073742086)); +return out.toString(); +}, "~N,~S,JU.BS,~A,JU.OC,~B"); +Clazz.overrideMethod(c$, "getModelCml", +function(bs, atomsMax, addBonds, doTransform, allTrajectories){ +return this.getModel("CML", bs, Clazz.newArray(-1, [new Integer(atomsMax), new Boolean(addBonds), new Boolean(doTransform), new Boolean(allTrajectories)]), null); +}, "JU.BS,~N,~B,~B,~B"); +Clazz.overrideMethod(c$, "fixJMEFormalCharges", +function(bsAtoms, jme){ +var haveCharges = false; +if (bsAtoms == null) return jme; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.vwr.ms.at[i]; +if (a.getFormalCharge() != 0) { +haveCharges = true; +break; +}} +if (!haveCharges) return jme; +var map = this.vwr.getSmilesMatcher().getMapForJME(jme, this.vwr.ms.at, bsAtoms); +if (map == null) return jme; +var jmeMap = map[0]; +var jmolMap = map[1]; +var tokens = JU.PT.getTokens(jme); +var nAtoms = JU.PT.parseInt(tokens[0]); +var mapjj = Clazz.newIntArray (nAtoms, 0); +for (var i = jmeMap.length; --i >= 0; ) { +mapjj[jmeMap[i]] = jmolMap[i] + 1; +} +var ipt = 0; +for (var pt = 2; pt < tokens.length; pt += 3) { +var jmeAtom = tokens[pt]; +if (JU.PT.parseInt(jmeAtom) != -2147483648) break; +jmeAtom = JU.PT.replaceAllCharacters(jmeAtom, "+-", ""); +var a = this.vwr.ms.at[mapjj[ipt++] - 1]; +var elem = a.getElementSymbol(); +if (!elem.equals(jmeAtom)) { +return jme; +}var charge = a.getFormalCharge(); +if (charge != 0) tokens[pt] = jmeAtom + (charge > 0 ? "+" : "-") + (Math.abs(charge) > 1 ? "" + Math.abs(charge) : ""); +} +return JU.PT.join(tokens, ' ', 0); +}, "JU.BS,~S"); +c$.getSDFDateLine = Clazz.defineMethod(c$, "getSDFDateLine", +function(version, is2d){ +var mol = JU.SB.newS((version + " ").substring(0, 10)); +var cMM; +var cDD; +var cYYYY; +var cHH; +var cmm; +{ +var c = new Date(); cMM = c.getMonth(); cDD = c.getDate(); +cYYYY = c.getFullYear(); cHH = c.getHours(); cmm = +c.getMinutes(); +}JU.PT.rightJustify(mol, "00", "" + (1 + cMM)); +JU.PT.rightJustify(mol, "00", "" + cDD); +mol.append(("" + cYYYY).substring(2, 4)); +JU.PT.rightJustify(mol, "00", "" + cHH); +JU.PT.rightJustify(mol, "00", "" + cmm); +mol.append(is2d ? "2" : "3").append("D 1 1.00000 0.00000 0"); +mol.append("\n"); +return mol.toString(); +}, "~S,~B"); +c$.propertyTypes = Clazz.newArray(-1, ["appletInfo", "", "", "fileName", "", "", "fileHeader", "", "", "fileContents", "", "", "fileContents", "", "", "animationInfo", "", "", "modelInfo", "", "{*}", "ligandInfo", "", "{*}", "shapeInfo", "", "", "measurementInfo", "", "", "centerInfo", "", "", "orientationInfo", "", "", "transformInfo", "", "", "", "", "", "atomInfo", "", "(visible)", "bondInfo", "", "(visible)", "chainInfo", "", "(visible)", "polymerInfo", "", "(visible)", "moleculeInfo", "", "(visible)", "stateInfo", "", "all", "extractModel", "", "(visible)", "jmolStatus", "statusNameList", "", "jmolViewer", "", "", "messageQueue", "", "", "auxiliaryInfo", "", "{*}", "boundBoxInfo", "", "", "dataInfo", "", "types", "image", "", "", "evaluate", "", "", "menu", "", "current", "minimizationInfo", "", "", "pointGroupInfo", "", "(visible)", "fileInfo", "", "", "errorMessage", "", "", "mouseInfo", "", "", "isosurfaceInfo", "", "", "isosurfaceData", "", "", "consoleText", "", "", "JSpecView", "", "", "scriptQueueInfo", "", "", "nmrInfo", " or 'all' or 'shifts'", "all", "variableInfo", "", "all", "domainInfo", "", "{visible}", "validationInfo", "", "{visible}", "service", "", "", "CIFInfo", "", "", "modelkitInfo", "", "data", "unitcellInfo", "", ""]); +c$.readableTypes = Clazz.newArray(-1, ["", "stateinfo", "extractmodel", "filecontents", "fileheader", "image", "menu", "minimizationInfo"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/SelectionManager.js b/config/plugins/visualizations/jmol/static/j2s/JV/SelectionManager.js new file mode 100755 index 000000000000..39c0b9d4d80f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/SelectionManager.js @@ -0,0 +1,254 @@ +Clazz.declarePackage("JV"); +Clazz.load(["JU.BS"], "JV.SelectionManager", ["JU.AU", "J.i18n.GT", "JU.BSUtil"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.listeners = null; +this.bsHidden = null; +this.bsSelection = null; +this.bsFixed = null; +this.bsSubset = null; +this.bsDeleted = null; +this.noneSelected = null; +this.empty = 1; +this.hideNotSelected = false; +this.bsTemp = null; +Clazz.instantialize(this, arguments);}, JV, "SelectionManager", null); +Clazz.prepareFields (c$, function(){ +this.listeners = new Array(0); +this.bsHidden = new JU.BS(); +this.bsSelection = new JU.BS(); +this.bsFixed = new JU.BS(); +this.bsTemp = new JU.BS(); +}); +Clazz.makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "processDeletedModelAtoms", +function(bsAtoms){ +JU.BSUtil.deleteBits(this.bsDeleted, bsAtoms); +JU.BSUtil.deleteBits(this.bsSubset, bsAtoms); +JU.BSUtil.deleteBits(this.bsFixed, bsAtoms); +JU.BSUtil.deleteBits(this.bsHidden, bsAtoms); +var bs = JU.BSUtil.copy(this.bsSelection); +JU.BSUtil.deleteBits(bs, bsAtoms); +this.setSelectionSet(bs, 0); +this.selectionChanged(false); +}, "JU.BS"); +Clazz.defineMethod(c$, "clear", +function(){ +this.clearSelection(true); +this.setSelectionSubset(null); +this.hide(null, null, 0, true); +this.bsDeleted = null; +this.setMotionFixedAtoms(null); +}); +Clazz.defineMethod(c$, "display", +function(modelSet, bs, addRemove, isQuiet){ +switch (addRemove) { +default: +var bsNotSubset = (this.bsSubset == null ? null : JU.BSUtil.andNot(JU.BSUtil.copy(this.bsHidden), this.bsSubset)); +var bsAll = modelSet.getModelAtomBitSetIncludingDeleted(-1, false); +this.bsHidden.or(bsAll); +if (bsNotSubset != null) { +this.bsHidden.and(this.bsSubset); +this.bsHidden.or(bsNotSubset); +}case 1275069441: +if (bs != null) this.bsHidden.andNot(bs); +break; +case 1073742119: +if (bs != null) this.bsHidden.or(bs); +break; +} +JU.BSUtil.andNot(this.bsHidden, this.bsDeleted); +modelSet.setBsHidden(this.bsHidden); +if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms hidden"), this.bsHidden.cardinality())); +}, "JM.ModelSet,JU.BS,~N,~B"); +Clazz.defineMethod(c$, "hide", +function(modelSet, bs, addRemove, isQuiet){ +var bsNotSubset = (addRemove == 0 || this.bsSubset == null ? null : JU.BSUtil.andNot(JU.BSUtil.copy(this.bsHidden), this.bsSubset)); +JV.SelectionManager.setBitSet(this.bsHidden, bs, addRemove); +if (bsNotSubset != null) this.bsHidden.or(bsNotSubset); +if (modelSet != null) modelSet.setBsHidden(this.bsHidden); +if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms hidden"), this.bsHidden.cardinality())); +}, "JM.ModelSet,JU.BS,~N,~B"); +Clazz.defineMethod(c$, "setSelectionSet", +function(set, addRemove){ +JV.SelectionManager.setBitSet(this.bsSelection, set, addRemove); +this.empty = -1; +}, "JU.BS,~N"); +c$.setBitSet = Clazz.defineMethod(c$, "setBitSet", +function(bsWhat, bs, addRemove){ +switch (addRemove) { +default: +bsWhat.clearAll(); +case 1275069441: +if (bs != null) bsWhat.or(bs); +break; +case 1073742119: +if (bs != null) bsWhat.andNot(bs); +break; +} +}, "JU.BS,JU.BS,~N"); +Clazz.defineMethod(c$, "getHiddenSet", +function(){ +return this.bsHidden; +}); +Clazz.defineMethod(c$, "getHideNotSelected", +function(){ +return this.hideNotSelected; +}); +Clazz.defineMethod(c$, "setHideNotSelected", +function(TF){ +this.hideNotSelected = TF; +if (TF) this.selectionChanged(false); +}, "~B"); +Clazz.defineMethod(c$, "isSelected", +function(atomIndex){ +return (atomIndex >= 0 && this.bsSelection.get(atomIndex)); +}, "~N"); +Clazz.defineMethod(c$, "select", +function(bs, addRemove, isQuiet){ +if (bs == null) { +this.selectAll(true); +if (!this.vwr.getBoolean(1612709900)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709900, null)); +if (!this.vwr.getBoolean(1612709894)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709894, null)); +} else { +this.setSelectionSet(bs, addRemove); +if (!this.vwr.getBoolean(1612709900)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709900, null)); +if (!this.vwr.getBoolean(1612709894)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709894, null)); +}this.selectionChanged(false); +var reportChime = this.vwr.getBoolean(603979879); +if (!reportChime && isQuiet) return; +var n = this.getSelectionCount(); +if (reportChime) this.vwr.getChimeMessenger().reportSelection(n); + else if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms selected"), n)); +}, "JU.BS,~N,~B"); +Clazz.defineMethod(c$, "selectAll", +function(isQuiet){ +var count = this.vwr.ms.ac; +this.empty = (count == 0) ? 1 : 0; +for (var i = count; --i >= 0; ) this.bsSelection.set(i); + +JU.BSUtil.andNot(this.bsSelection, this.bsDeleted); +this.selectionChanged(isQuiet); +}, "~B"); +Clazz.defineMethod(c$, "clearSelection", +function(isQuiet){ +this.setHideNotSelected(false); +this.bsSelection.clearAll(); +this.empty = 1; +this.selectionChanged(isQuiet); +}, "~B"); +Clazz.defineMethod(c$, "isAtomSelected", +function(atomIndex){ +return ((this.bsSubset == null || this.bsSubset.get(atomIndex)) && this.bsDeleted == null || !this.bsDeleted.get(atomIndex)) && this.bsSelection.get(atomIndex); +}, "~N"); +Clazz.defineMethod(c$, "setSelectedAtom", +function(atomIndex, TF){ +if (atomIndex < 0) { +this.selectionChanged(true); +return; +}if (this.bsSubset != null && !this.bsSubset.get(atomIndex) || this.bsDeleted != null && this.bsDeleted.get(atomIndex)) return; +this.bsSelection.setBitTo(atomIndex, TF); +if (TF) this.empty = 0; + else this.empty = -1; +}, "~N,~B"); +Clazz.defineMethod(c$, "setSelectionSubset", +function(bs){ +this.bsSubset = bs; +}, "JU.BS"); +Clazz.defineMethod(c$, "isInSelectionSubset", +function(atomIndex){ +return (atomIndex < 0 || this.bsSubset == null || this.bsSubset.get(atomIndex)); +}, "~N"); +Clazz.defineMethod(c$, "invertSelection", +function(){ +JU.BSUtil.invertInPlace(this.bsSelection, this.vwr.ms.ac); +this.empty = (this.bsSelection.length() > 0 ? 0 : 1); +this.selectionChanged(false); +}); +Clazz.defineMethod(c$, "excludeSelectionSet", +function(setExclude){ +if (setExclude == null || this.empty == 1) return; +this.bsSelection.andNot(setExclude); +this.empty = -1; +}, "JU.BS"); +Clazz.defineMethod(c$, "getSelectionCount", +function(){ +if (this.empty == 1) return 0; +this.empty = 1; +var bs; +if (this.bsSubset == null) { +bs = this.bsSelection; +} else { +this.bsTemp.clearAll(); +this.bsTemp.or(this.bsSubset); +this.bsTemp.and(this.bsSelection); +bs = this.bsTemp; +}var count = bs.cardinality(); +if (count > 0) this.empty = 0; +return count; +}); +Clazz.defineMethod(c$, "addListener", +function(listener){ +for (var i = this.listeners.length; --i >= 0; ) if (this.listeners[i] === listener) { +this.listeners[i] = null; +break; +} +var len = this.listeners.length; +for (var i = len; --i >= 0; ) if (this.listeners[i] == null) { +this.listeners[i] = listener; +return; +} +if (this.listeners.length == 0) this.listeners = new Array(1); + else this.listeners = JU.AU.doubleLength(this.listeners); +this.listeners[len] = listener; +}, "J.api.JmolSelectionListener"); +Clazz.defineMethod(c$, "selectionChanged", +function(isQuiet){ +if (this.hideNotSelected) this.hide(this.vwr.ms, JU.BSUtil.copyInvert(this.bsSelection, this.vwr.ms.ac), 0, isQuiet); +if (isQuiet || this.listeners.length == 0) return; +for (var i = this.listeners.length; --i >= 0; ) if (this.listeners[i] != null) this.listeners[i].selectionChanged(this.bsSelection); + +}, "~B"); +Clazz.defineMethod(c$, "deleteAtoms", +function(bs){ +var bsNew = JU.BSUtil.copy(bs); +if (this.bsDeleted == null) { +this.bsDeleted = bsNew; +} else { +bsNew.andNot(this.bsDeleted); +this.bsDeleted.or(bs); +}this.bsHidden.andNot(this.bsDeleted); +this.bsSelection.andNot(this.bsDeleted); +return bsNew.cardinality(); +}, "JU.BS"); +Clazz.defineMethod(c$, "getSelectedAtoms", +function(){ +if (this.bsSubset == null) return this.bsSelection; +var bs = JU.BSUtil.copy(this.bsSelection); +bs.and(this.bsSubset); +return bs; +}); +Clazz.defineMethod(c$, "getSelectedAtomsNoSubset", +function(){ +return JU.BSUtil.copy(this.bsSelection); +}); +Clazz.defineMethod(c$, "excludeAtoms", +function(bs, ignoreSubset){ +if (this.bsDeleted != null) bs.andNot(this.bsDeleted); +if (!ignoreSubset && this.bsSubset != null) (bs = JU.BSUtil.copy(bs)).and(this.bsSubset); +return bs; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "setMotionFixedAtoms", +function(bs){ +this.bsFixed.clearAll(); +if (bs != null) this.bsFixed.or(bs); +}, "JU.BS"); +Clazz.defineMethod(c$, "getMotionFixedAtoms", +function(){ +return this.bsFixed; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/ShapeManager.js b/config/plugins/visualizations/jmol/static/j2s/JV/ShapeManager.js new file mode 100755 index 000000000000..2723d8cfcefe --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/ShapeManager.js @@ -0,0 +1,401 @@ +Clazz.declarePackage("JV"); +Clazz.load(null, "JV.ShapeManager", ["JU.BS", "$.P3", "J.api.Interface", "J.c.PAL", "$.VDW", "JM.Atom", "JU.BSUtil", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ms = null; +this.shapes = null; +this.vwr = null; +this.scaleText = null; +this.bsRenderableAtoms = null; +this.bsSlabbedInternal = null; +this.navMinMax = null; +Clazz.instantialize(this, arguments);}, JV, "ShapeManager", null); +Clazz.prepareFields (c$, function(){ +this.navMinMax = Clazz.newIntArray (4, 0); +}); +Clazz.makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +this.bsRenderableAtoms = new JU.BS(); +this.bsSlabbedInternal = new JU.BS(); +}, "JV.Viewer"); +Clazz.defineMethod(c$, "findNearestShapeAtomIndex", +function(x, y, closest, bsNot){ +if (this.shapes != null) for (var i = 0; i < this.shapes.length && closest[0] == null; ++i) if (this.shapes[i] != null) this.shapes[i].findNearestAtomIndex(x, y, closest, bsNot); + +}, "~N,~N,~A,JU.BS"); +Clazz.defineMethod(c$, "getShapePropertyIndex", +function(shapeID, propertyName, index){ +if (this.shapes == null || this.shapes[shapeID] == null) return null; +this.vwr.setShapeErrorState(shapeID, "get " + propertyName); +var result = this.shapes[shapeID].getProperty(propertyName, index); +this.vwr.setShapeErrorState(-1, null); +return result; +}, "~N,~S,~N"); +Clazz.defineMethod(c$, "getShapePropertyData", +function(shapeID, propertyName, data){ +if (this.shapes == null || this.shapes[shapeID] == null) return false; +this.vwr.setShapeErrorState(shapeID, "get " + propertyName); +var result = this.shapes[shapeID].getPropertyData(propertyName, data); +this.vwr.setShapeErrorState(-1, null); +return result; +}, "~N,~S,~A"); +Clazz.defineMethod(c$, "getShapeIdFromObjectName", +function(objectName){ +if (this.shapes != null) for (var i = 16; i < 30; ++i) if (this.shapes[i] != null && this.shapes[i].getIndexFromName(objectName) >= 0) return i; + +if (this.shapes[6] != null && this.shapes[6].getIndexFromName(objectName) >= 0) { +return 6; +}return -1; +}, "~S"); +Clazz.defineMethod(c$, "loadDefaultShapes", +function(newModelSet){ +this.ms = newModelSet; +if (this.shapes != null) for (var i = 0; i < this.shapes.length; ++i) if (this.shapes[i] != null) this.shapes[i].setModelSet(newModelSet); + +this.loadShape(0); +this.loadShape(1); +}, "JM.ModelSet"); +Clazz.defineMethod(c$, "loadShape", +function(shapeID){ +if (this.shapes == null) return null; +if (this.shapes[shapeID] != null) return this.shapes[shapeID]; +if (shapeID == 2 || shapeID == 3 || shapeID == 4) return null; +var className = JV.JC.getShapeClassName(shapeID, false); +var shape; +if ((shape = J.api.Interface.getInterface(className, this.vwr, "shape")) == null) return null; +this.vwr.setShapeErrorState(shapeID, "allocate"); +shape.initializeShape(this.vwr, this.ms, shapeID); +this.vwr.setShapeErrorState(-1, null); +return this.shapes[shapeID] = shape; +}, "~N"); +Clazz.defineMethod(c$, "notifyAtomPositionsChanged", +function(baseModel, bs, mat){ +var Imodel = Integer.$valueOf(baseModel); +var bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(baseModel); +for (var i = 0; i < 37; i++) if (this.shapes[i] != null) this.setShapePropertyBs(i, "refreshTrajectories", Clazz.newArray(-1, [Imodel, bs, mat]), bsModelAtoms); + +}, "~N,JU.BS,JU.M4"); +Clazz.defineMethod(c$, "releaseShape", +function(shapeID){ +if (this.shapes != null) this.shapes[shapeID] = null; +}, "~N"); +Clazz.defineMethod(c$, "setScale", +function(){ +if (this.scaleText != null) { +this.loadShape(31); +this.setShapePropertyBs(31, "%SCALE", this.scaleText, null); +this.scaleText = null; +}}); +Clazz.defineMethod(c$, "resetShapes", +function(cacheScale){ +if (cacheScale) { +var data = new Array(1); +this.getShapePropertyData(31, "%SCALE", data); +this.scaleText = data[0]; +}this.shapes = new Array(37); +}, "~B"); +Clazz.defineMethod(c$, "setShapeProperties", +function(shapeID, values){ +this.vwr.setShapeErrorState(shapeID, "set properties"); +this.loadShape(shapeID).setProperties(values); +this.vwr.setShapeErrorState(-1, null); +}, "~N,~A"); +Clazz.defineMethod(c$, "setShapeSizeBs", +function(shapeID, size, rd, bsSelected){ +if (this.shapes == null) return; +if (bsSelected == null && (shapeID != 1 || size != 2147483647)) bsSelected = this.vwr.bsA(); +if (rd != null && rd.value != 0 && rd.vdwType === J.c.VDW.TEMP) this.ms.getBfactor100Lo(); +this.vwr.setShapeErrorState(shapeID, "set size"); +if (rd == null ? size != 0 : rd.value != 0) this.loadShape(shapeID); +if (this.shapes[shapeID] != null) { +this.shapes[shapeID].setShapeSizeRD(size, rd, bsSelected); +}this.vwr.setShapeErrorState(-1, null); +}, "~N,~N,J.atomdata.RadiusData,JU.BS"); +Clazz.defineMethod(c$, "setLabel", +function(strLabel, bsSelection){ +if (strLabel == null) { +if (this.shapes[5] == null) return; +} else { +this.loadShape(5); +this.setShapeSizeBs(5, 0, null, bsSelection); +}this.setShapePropertyBs(5, "label", strLabel, bsSelection); +}, "~O,JU.BS"); +Clazz.defineMethod(c$, "setShapePropertyBs", +function(shapeID, propertyName, value, bsSelected){ +if (this.shapes == null || this.shapes[shapeID] == null) return; +if (bsSelected == null) bsSelected = this.vwr.bsA(); +this.vwr.setShapeErrorState(shapeID, "set " + propertyName); +this.shapes[shapeID].setProperty(propertyName.intern(), value, bsSelected); +this.vwr.setShapeErrorState(-1, null); +}, "~N,~S,~O,JU.BS"); +Clazz.defineMethod(c$, "checkFrankclicked", +function(x, y){ +var frankShape = this.shapes[36]; +return (frankShape != null && frankShape.wasClicked(x, y)); +}, "~N,~N"); +Clazz.defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +var shape; +var map = null; +if (this.vwr.getPickingMode() == 2) { +return (this.shapes[5] == null ? null : this.shapes[5].checkObjectClicked(x, y, modifiers, bsVisible, false)); +}if (modifiers != 0 && this.vwr.getBondsPickable() && (map = this.shapes[1].checkObjectClicked(x, y, modifiers, bsVisible, false)) != null) return map; +for (var i = 0; i < JV.ShapeManager.clickableMax; i++) if ((shape = this.shapes[JV.ShapeManager.hoverable[i]]) != null && (map = shape.checkObjectClicked(x, y, modifiers, bsVisible, drawPicking)) != null) return map; + +return null; +}, "~N,~N,~N,JU.BS,~B"); +Clazz.defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, modifiers, bsVisible, iShape){ +var found = false; +var n = (iShape > 0 ? iShape + 1 : 37); +for (var i = iShape; !found && i < n; ++i) if (this.shapes[i] != null) found = this.shapes[i].checkObjectDragged(prevX, prevY, x, y, modifiers, bsVisible); + +return found; +}, "~N,~N,~N,~N,~N,JU.BS,~N"); +Clazz.defineMethod(c$, "checkObjectHovered", +function(x, y, bsVisible, checkBonds){ +var shape = this.shapes[1]; +if (checkBonds && shape != null && shape.checkObjectHovered(x, y, bsVisible)) return true; +for (var i = 0; i < JV.ShapeManager.hoverable.length; i++) { +shape = this.shapes[JV.ShapeManager.hoverable[i]]; +if (shape != null && shape.checkObjectHovered(x, y, bsVisible)) return true; +} +return false; +}, "~N,~N,JU.BS,~B"); +Clazz.defineMethod(c$, "deleteShapeAtoms", +function(value, bs){ +if (this.shapes != null) for (var j = 0; j < 37; j++) if (this.shapes[j] != null) this.setShapePropertyBs(j, "deleteModelAtoms", value, bs); + +}, "~A,JU.BS"); +Clazz.defineMethod(c$, "deleteVdwDependentShapes", +function(bs){ +if (bs == null) bs = this.vwr.bsA(); +this.setShapeAtomsSafely(24, "deleteVdw", bs); +this.setShapeAtomsSafely(25, "deleteVdw", bs); +}, "JU.BS"); +Clazz.defineMethod(c$, "setShapeAtomsSafely", +function(i, key, bs){ +if (this.shapes[i] != null) this.shapes[i].setProperty(key, null, bs); +}, "~N,~S,JU.BS"); +Clazz.defineMethod(c$, "notifyAtoms", +function(prop, atomsAndModels){ +switch (prop) { +case "atomsDeleted": +this.setShapeAtomsSafely(6, prop, atomsAndModels[0]); +this.vwr.setModelkitPropertySafely("updatemodelkeys", atomsAndModels); +break; +case "atomsMoved": +if (this.getShape(22) != null) this.vwr.setModelkitPropertySafely(prop, atomsAndModels[0]); +break; +} +}, "~S,~A"); +Clazz.defineMethod(c$, "getAtomShapeValue", +function(tok, group, atomIndex){ +var iShape = JV.JC.shapeTokenIndex(tok); +if (iShape < 0 || this.shapes[iShape] == null) return 0; +var mad = this.shapes[iShape].getSize(atomIndex); +if (mad == 0) { +if ((group.shapeVisibilityFlags & this.shapes[iShape].vf) == 0) return 0; +mad = this.shapes[iShape].getSizeG(group); +}return mad / 2000; +}, "~N,JM.Group,~N"); +Clazz.defineMethod(c$, "replaceGroup", +function(g0, g1){ +if (this.shapes == null) return; +for (var i = 9; i < 16; i++) if (this.shapes[i] != null) this.shapes[i].replaceGroup(g0, g1); + +}, "JM.Group,JM.Group"); +Clazz.defineMethod(c$, "getObjectMap", +function(map, withDollar){ +if (this.shapes == null) return; +var bDollar = Boolean.$valueOf(withDollar); +for (var i = 16; i < 30; ++i) this.getShapePropertyData(i, "getNames", Clazz.newArray(-1, [map, bDollar])); + +}, "java.util.Map,~B"); +Clazz.defineMethod(c$, "getProperty", +function(paramInfo){ +if (paramInfo.equals("getShapes")) return this.shapes; +return null; +}, "~O"); +Clazz.defineMethod(c$, "getShape", +function(i){ +return (this.shapes == null ? null : this.shapes[i]); +}, "~N"); +Clazz.defineMethod(c$, "resetBioshapes", +function(bsAllAtoms){ +if (this.shapes == null) return; +for (var i = 0; i < this.shapes.length; ++i) if (this.shapes[i] != null && this.shapes[i].isBioShape) { +this.shapes[i].setModelSet(this.ms); +this.shapes[i].setShapeSizeRD(0, null, bsAllAtoms); +this.shapes[i].setProperty("color", J.c.PAL.NONE, bsAllAtoms); +} +}, "JU.BS"); +Clazz.defineMethod(c$, "setAtomLabel", +function(strLabel, i){ +if (this.shapes != null) this.shapes[5].setProperty("label:" + strLabel, Integer.$valueOf(i), null); +}, "~S,~N"); +Clazz.defineMethod(c$, "setModelVisibility", +function(){ +var shapes = this.shapes; +if (shapes == null || shapes[0] == null) return; +var bs = this.vwr.getVisibleFramesBitSet(); +for (var i = 8; i < 33; i++) if (shapes[i] != null) shapes[i].setModelVisibilityFlags(bs); + +var showHydrogens = this.vwr.getBoolean(603979922); +var bsDeleted = this.vwr.slm.bsDeleted; +var atoms = this.ms.at; +this.ms.clearVisibleSets(); +if (atoms.length > 0) { +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (atom != null) atom.shapeVisibilityFlags &= -64; +if (bsDeleted != null && bsDeleted.get(i)) continue; +if (bs.get(atom.mi)) { +var f = 1; +if (!this.ms.isAtomHidden(i) && (showHydrogens || atom.getElementNumber() != 1)) { +f |= 8; +if (atom.madAtom != 0) f |= 16; +atom.setShapeVisibility(f, true); +}}} +}this.setShapeVis(); +}); +Clazz.defineMethod(c$, "setShapeVis", +function(){ +for (var i = 0; i < 37; ++i) { +var shape = this.shapes[i]; +if (shape != null) shape.setAtomClickability(); +} +}); +Clazz.defineMethod(c$, "finalizeAtoms", +function(bsTranslateSelected, finalizeParams){ +var vwr = this.vwr; +var tm = vwr.tm; +if (finalizeParams) vwr.finalizeTransformParameters(); +if (bsTranslateSelected != null) { +var ptCenter = this.ms.getAtomSetCenter(bsTranslateSelected); +var pt = new JU.P3(); +tm.transformPt3f(ptCenter, pt); +pt.add(tm.ptOffset); +tm.unTransformPoint(pt, pt); +pt.sub(ptCenter); +vwr.setAtomCoordsRelative(pt, bsTranslateSelected); +tm.ptOffset.set(0, 0, 0); +tm.bsSelectedAtoms = null; +}var bsOK = this.bsRenderableAtoms; +this.ms.getAtomsInFrame(bsOK); +var vibrationVectors = this.ms.vibrations; +var vibsOn = (vibrationVectors != null && tm.vibrationOn); +var checkOccupancy = (this.ms.bsModulated != null && this.ms.occupancies != null); +var atoms = this.ms.at; +var occ; +var haveMods = false; +var bsSlabbed = this.bsSlabbedInternal; +bsSlabbed.clearAll(); +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +var screen = (vibsOn && atom.hasVibration() ? tm.transformPtVib(atom, vibrationVectors[i]) : tm.transformPt(atom)); +if (screen.z == 1 && tm.internalSlab && tm.xyzIsSlabbedInternal(atom)) { +bsSlabbed.set(i); +}atom.sX = screen.x; +atom.sY = screen.y; +atom.sZ = screen.z; +var d = Math.abs(atom.madAtom); +if (d == JM.Atom.MAD_GLOBAL) d = Clazz.floatToInt(vwr.getFloat(1153433601) * 2000); +atom.sD = Clazz.floatToShort(vwr.tm.scaleToScreen(screen.z, d)); +if (checkOccupancy && vibrationVectors[i] != null && (occ = vibrationVectors[i].getOccupancy100(vibsOn)) != -2147483648) { +haveMods = true; +atom.setShapeVisibility(2, false); +if (occ >= 0 && occ < 50) atom.setShapeVisibility(24, false); + else atom.setShapeVisibility(8 | (atom.madAtom > 0 ? 16 : 0), true); +this.ms.occupancies[atom.i] = Math.abs(occ); +}} +if (haveMods) this.setShapeVis(); +var gdata = vwr.gdata; +if (tm.slabEnabled) { +var slabByMolecule = vwr.getBoolean(603979940); +var slabByAtom = vwr.getBoolean(603979939); +var minZ = gdata.slab; +var maxZ = gdata.depth; +if (slabByMolecule) { +var molecules = this.ms.getMolecules(); +var moleculeCount = this.ms.getMoleculeCountInModel(-1); +for (var i = 0; i < moleculeCount; i++) { +var m = molecules[i]; +var j = 0; +var pt = m.firstAtomIndex; +if (!bsOK.get(pt)) continue; +for (; j < m.ac; j++, pt++) if (gdata.isClippedZ(atoms[pt].sZ - (atoms[pt].sD >> 1))) break; + +if (j != m.ac) { +pt = m.firstAtomIndex; +for (var k = 0; k < m.ac; k++) { +bsOK.clear(pt); +atoms[pt++].sZ = 0; +} +}} +}for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (gdata.isClippedZ(atom.sZ - (slabByAtom ? atoms[i].sD >> 1 : 0))) { +atom.setClickable(0); +var r = Clazz.doubleToInt((slabByAtom ? -1 : 1) * atom.sD / 2); +if (atom.sZ + r < minZ || atom.sZ - r > maxZ || !gdata.isInDisplayRange(atom.sX, atom.sY)) { +bsOK.clear(i); +}}} +}if (this.ms.ac == 0 || !vwr.getShowNavigationPoint()) return null; +var minX = 2147483647; +var maxX = -2147483648; +var minY = 2147483647; +var maxY = -2147483648; +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (atom.sX < minX) minX = atom.sX; +if (atom.sX > maxX) maxX = atom.sX; +if (atom.sY < minY) minY = atom.sY; +if (atom.sY > maxY) maxY = atom.sY; +} +this.navMinMax[0] = minX; +this.navMinMax[1] = maxX; +this.navMinMax[2] = minY; +this.navMinMax[3] = maxY; +return this.navMinMax; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = modelSet; +}, "JM.ModelSet"); +Clazz.defineMethod(c$, "checkInheritedShapes", +function(){ +if (this.shapes[24] == null) return; +this.setShapePropertyBs(24, "remapInherited", null, null); +}); +Clazz.defineMethod(c$, "restrictSelected", +function(isBond, doInvert){ +var bsSelected = this.vwr.slm.getSelectedAtomsNoSubset(); +if (doInvert) { +this.vwr.slm.invertSelection(); +var bsSubset = this.vwr.slm.bsSubset; +if (bsSubset != null) { +bsSelected = this.vwr.slm.getSelectedAtomsNoSubset(); +bsSelected.and(bsSubset); +this.vwr.selectStatus(bsSelected, false, 0, true, false); +JU.BSUtil.invertInPlace(bsSelected, this.vwr.ms.ac); +bsSelected.and(bsSubset); +}}JU.BSUtil.andNot(bsSelected, this.vwr.slm.bsDeleted); +var bondmode = this.vwr.getBoolean(603979812); +if (!isBond) this.vwr.setBooleanProperty("bondModeOr", true); +this.setShapeSizeBs(1, 0, null, null); +this.setShapePropertyBs(1, "type", Integer.$valueOf(32768), null); +this.setShapeSizeBs(1, 0, null, null); +this.setShapePropertyBs(1, "type", Integer.$valueOf(1023), null); +var bs = this.vwr.bsA(); +for (var iShape = 21; --iShape >= 0; ) if (iShape != 6 && this.getShape(iShape) != null) this.setShapeSizeBs(iShape, 0, null, bs); + +if (this.getShape(21) != null) this.setShapePropertyBs(21, "off", bs, null); +this.setLabel(null, bs); +if (!isBond) this.vwr.setBooleanProperty("bondModeOr", bondmode); +this.vwr.selectStatus(bsSelected, false, 0, true, false); +}, "~B,~B"); +c$.hoverable = Clazz.newIntArray(-1, [31, 20, 25, 24, 22, 36]); +c$.clickableMax = JV.ShapeManager.hoverable.length - 1; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/StateCreator.js b/config/plugins/visualizations/jmol/static/j2s/JV/StateCreator.js new file mode 100755 index 000000000000..c7110aa2af81 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/StateCreator.js @@ -0,0 +1,1127 @@ +Clazz.declarePackage("JV"); +Clazz.load(["JV.JmolStateCreator", "java.util.Hashtable"], "JV.StateCreator", ["java.util.Arrays", "$.Date", "JU.BS", "$.Lst", "$.P3", "$.PT", "$.SB", "J.c.PAL", "$.STR", "$.VDW", "JM.AtomCollection", "$.Bond", "$.BondSet", "JS.T", "J.shape.Shape", "JU.BSUtil", "$.C", "$.ColorEncoder", "$.Edge", "$.Escape", "$.Font", "$.Logger", "JV.GlobalSettings", "$.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.undoWorking = false; +this.actionStates = null; +this.actionStatesRedo = null; +this.vwr = null; +this.temp = null; +this.temp2 = null; +this.temp3 = null; +Clazz.instantialize(this, arguments);}, JV, "StateCreator", JV.JmolStateCreator); +Clazz.prepareFields (c$, function(){ +this.temp = new java.util.Hashtable(); +this.temp2 = new java.util.Hashtable(); +this.temp3 = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JV.StateCreator, []); +this.actionStates = new JU.Lst(); +this.actionStatesRedo = new JU.Lst(); +}); +Clazz.overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz.overrideMethod(c$, "getStateScript", +function(type, width, height){ +var isAll = (type == null || type.equalsIgnoreCase("all")); +var s = new JU.SB(); +var sfunc = (isAll ? new JU.SB().append("function _setState() {\n") : null); +if (isAll) { +s.append("# Jmol state version " + JV.Viewer.getJmolVersion() + ";\n"); +if (this.vwr.isApplet) { +this.app(s, "# fullName = " + JU.PT.esc(this.vwr.fullName)); +this.app(s, "# documentBase = " + JU.PT.esc(JV.Viewer.appletDocumentBase)); +this.app(s, "# codeBase = " + JU.PT.esc(JV.Viewer.appletCodeBase)); +s.append("\n"); +}}var global = this.vwr.g; +if (isAll || type.equalsIgnoreCase("windowState")) s.append(this.getWindowState(sfunc, width, height)); +if (isAll || type.equalsIgnoreCase("fileState")) s.append(this.getFileState(sfunc)); +if (isAll || type.equalsIgnoreCase("definedState")) s.append(this.getDefinedState(sfunc, true)); +if (isAll || type.equalsIgnoreCase("variableState")) s.append(this.getParameterState(global, sfunc)); +if (isAll || type.equalsIgnoreCase("dataState")) s.append(this.getDataState(sfunc)); +if (isAll || type.equalsIgnoreCase("modelState")) s.append(this.getModelState(sfunc, true, this.vwr.getBooleanProperty("saveProteinStructureState"))); +if (isAll || type.equalsIgnoreCase("colorState")) s.append(this.getColorState(this.vwr.cm, sfunc)); +if (isAll || type.equalsIgnoreCase("frameState")) s.append(this.getAnimState(this.vwr.am, sfunc)); +if (isAll || type.equalsIgnoreCase("perspectiveState")) s.append(this.getViewState(this.vwr.tm, sfunc)); +if (isAll || type.equalsIgnoreCase("selectionState")) s.append(this.getSelectionState(this.vwr.slm, sfunc)); +if (sfunc != null) { +this.app(sfunc, "set refreshing true"); +this.app(sfunc, "set antialiasDisplay " + global.antialiasDisplay); +this.app(sfunc, "set antialiasTranslucent " + global.antialiasTranslucent); +this.app(sfunc, "set antialiasImages " + global.antialiasImages); +if (this.vwr.tm.spinOn) this.app(sfunc, "spin on"); +sfunc.append("}\n\n_setState;\n"); +}if (isAll) s.appendSB(sfunc); +return s.toString(); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "getDataState", +function(sfunc){ +var commands = new JU.SB(); +var haveData = false; +var atomProps = this.getAtomicPropertyState(-1, null); +if (atomProps.length > 0) { +haveData = true; +commands.append(atomProps); +}if (this.vwr.userVdws != null) { +var info = this.vwr.getDefaultVdwNameOrData(0, J.c.VDW.USER, this.vwr.bsUserVdws); +if (info.length > 0) { +haveData = true; +commands.append(info); +}}if (this.vwr.nmrCalculation != null) haveData = new Boolean (haveData | this.vwr.nmrCalculation.getState(commands)).valueOf(); +if (this.vwr.dm != null) haveData = new Boolean (haveData | this.vwr.dm.getDataState(this, commands)).valueOf(); +if (!haveData) return ""; +var cmd = ""; +if (sfunc != null) { +sfunc.append(" _setDataState;\n"); +cmd = "function _setDataState() {\n"; +commands.append("}\n\n"); +}return cmd + commands.toString(); +}, "JU.SB"); +Clazz.defineMethod(c$, "getDefinedState", +function(sfunc, isAll){ +var ms = this.vwr.ms; +var len = ms.stateScripts.size(); +if (len == 0) return ""; +var haveDefs = false; +var commands = new JU.SB(); +var cmd; +for (var i = 0; i < len; i++) { +var ss = ms.stateScripts.get(i); +if (ss.inDefinedStateBlock && (cmd = ss.toString()).length > 0) { +this.app(commands, cmd); +haveDefs = true; +}} +if (!haveDefs) return ""; +cmd = ""; +if (isAll && sfunc != null) { +sfunc.append(" _setDefinedState;\n"); +cmd = "function _setDefinedState() {\n\n"; +}if (sfunc != null) commands.append("\n}\n\n"); +return cmd + commands.toString(); +}, "JU.SB,~B"); +Clazz.overrideMethod(c$, "getModelState", +function(sfunc, isAll, withProteinStructure){ +var commands = new JU.SB(); +if (isAll && sfunc != null) { +sfunc.append(" _setModelState;\n"); +commands.append("function _setModelState() {\n"); +}var cmd; +var ms = this.vwr.ms; +var bonds = ms.bo; +var models = ms.am; +var modelCount = ms.mc; +if (isAll) { +var len = ms.stateScripts.size(); +for (var i = 0; i < len; i++) { +var ss = ms.stateScripts.get(i); +if (!ss.inDefinedStateBlock && (cmd = ss.toString()).length > 0) { +this.app(commands, cmd); +}} +var sb = new JU.SB(); +var loadUC = false; +if (ms.unitCells != null) { +var haveModulation = false; +for (var i = 0; i < modelCount; i++) { +var symmetry = ms.getUnitCell(i); +if (symmetry == null) continue; +sb.setLength(0); +if (symmetry.getState(ms, i, sb)) { +loadUC = true; +commands.append(" frame ").append(ms.getModelNumberDotted(i)).appendSB(sb).append(";\n"); +}haveModulation = new Boolean (haveModulation | (this.vwr.ms.getLastVibrationVector(i, 1275072532) >= 0)).valueOf(); +} +if (loadUC) this.vwr.shm.loadShape(33); +this.getShapeStatePriv(commands, isAll, 33); +if (haveModulation) { +var temp = new java.util.Hashtable(); +var ivib; +for (var i = modelCount; --i >= 0; ) { +if ((ivib = this.vwr.ms.getLastVibrationVector(i, 1275072532)) >= 0) for (var j = models[i].firstAtomIndex; j <= ivib; j++) { +var mset = ms.getModulation(j); +if (mset != null) JU.BSUtil.setMapBitSet(temp, j, j, mset.getState()); +} +} +commands.append(this.getCommands(temp, null, "select")); +}}sb.setLength(0); +for (var i = 0; i < ms.bondCount; i++) if (!models[bonds[i].atom1.mi].isModelKit) if (bonds[i].isHydrogen() || (bonds[i].order & 131072) != 0) { +var bond = bonds[i]; +var index = bond.atom1.i; +if (bond.atom1.group.isAdded(index)) index = -1 - index; +sb.appendI(index).appendC('\t').appendI(bond.atom2.i).appendC('\t').appendI(bond.order & 131071).appendC('\t').appendF(bond.mad / 1000).appendC('\t').appendF(bond.getEnergy()).appendC('\t').append(JU.Edge.getBondOrderNameFromOrder(bond.order)).append(";\n"); +} +if (sb.length() > 0) commands.append("data \"connect_atoms\"\n").appendSB(sb).append("end \"connect_atoms\";\n"); +commands.append("\n"); +}if (ms.haveHiddenBonds) { +var bs = new JM.BondSet(); +for (var i = ms.bondCount; --i >= 0; ) if (bonds[i].mad != 0 && (bonds[i].shapeVisibilityFlags & JM.Bond.myVisibilityFlag) == 0) bs.set(i); + +if (bs.isEmpty()) ms.haveHiddenBonds = false; + else commands.append(" hide ").append(JU.Escape.eBond(bs)).append(";\n"); +}this.vwr.setModelVisibility(); +if (withProteinStructure) commands.append(ms.getProteinStructureState(null, isAll ? 1073742327 : 1073742158)); +for (var i = 0; i < modelCount; i++) if (models[i].mat4 != null) commands.append(" frame orientation " + ms.getModelNumberDotted(i) + JU.Escape.matrixToScript(models[i].mat4) + ";\n"); + +this.getShapeStatePriv(commands, isAll, 2147483647); +if (isAll) { +var needOrientations = false; +for (var i = 0; i < modelCount; i++) if (models[i].isJmolDataFrame) { +needOrientations = true; +break; +} +var sb = new JU.SB(); +for (var i = 0; i < modelCount; i++) { +var m = models[i]; +sb.setLength(0); +var s = ms.getInfo(i, "modelID"); +if (s != null && !s.equals(ms.getInfo(i, "modelID0"))) sb.append(" frame ID ").append(JU.PT.esc(s)).append(";\n"); +var t = ms.frameTitles[i]; +if (t != null && t.length > 0) sb.append(" frame title ").append(JU.PT.esc(t)).append(";\n"); +if (needOrientations && m.orientation != null && !ms.isTrajectorySubFrame(i)) sb.append(" ").append(m.orientation.getMoveToText(false)).append(";\n"); +if (m.frameDelay != 0 && !ms.isTrajectorySubFrame(i)) sb.append(" frame delay ").appendF(m.frameDelay / 1000).append(";\n"); +if (m.simpleCage != null) { +sb.append(" unitcell ").append(JU.Escape.eAP(m.simpleCage.getUnitCellVectors())).append(";\n"); +this.getShapeStatePriv(sb, isAll, 33); +}if (sb.length() > 0) commands.append(" frame " + ms.getModelNumberDotted(i) + ";\n").appendSB(sb); +} +commands.append(" set fontScaling " + this.vwr.getBoolean(603979847) + ";\n"); +}if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JU.SB,~B,~B"); +Clazz.defineMethod(c$, "getWindowState", +function(sfunc, width, height){ +var global = this.vwr.g; +var str = new JU.SB(); +if (sfunc != null) { +sfunc.append(" initialize;\n set refreshing false;\n _setWindowState;\n"); +str.append("\nfunction _setWindowState() {\n"); +}if (width != 0) str.append("# preferredWidthHeight ").appendI(width).append(" ").appendI(height).append(";\n"); +str.append("# width ").appendI(width == 0 ? this.vwr.getScreenWidth() : width).append(";\n# height ").appendI(height == 0 ? this.vwr.getScreenHeight() : height).append(";\n"); +this.app(str, "stateVersion = " + JV.JC.versionInt); +this.app(str, "background " + JU.Escape.escapeColor(global.objColors[0])); +for (var i = 1; i < 7; i++) if (global.objColors[i] != 0) this.app(str, JV.StateManager.getObjectNameFromId(i) + "Color = \"" + JU.Escape.escapeColor(global.objColors[i]) + '"'); + +if (global.backgroundImageFileName != null) { +this.app(str, "background IMAGE " + (global.backgroundImageFileName.startsWith(";base64,") ? "" : "/*file*/") + JU.PT.esc(global.backgroundImageFileName)); +}str.append(this.getLightingState(false)); +if (sfunc != null) str.append("}\n\n"); +return str.toString(); +}, "JU.SB,~N,~N"); +Clazz.overrideMethod(c$, "getLightingState", +function(isAll){ +var str = new JU.SB(); +var g = this.vwr.gdata; +this.app(str, "set ambientPercent " + g.getAmbientPercent()); +this.app(str, "set diffusePercent " + g.getDiffusePercent()); +this.app(str, "set specular " + g.getSpecular()); +this.app(str, "set specularPercent " + g.getSpecularPercent()); +this.app(str, "set specularPower " + g.getSpecularPower()); +var se = g.getSpecularExponent(); +var pe = g.getPhongExponent(); +this.app(str, (Math.pow(2, se) == pe ? "set specularExponent " + se : "set phongExponent " + pe)); +this.app(str, "set celShading " + g.getCel()); +this.app(str, "set celShadingPower " + g.getCelPower()); +this.app(str, "set zShadePower " + this.vwr.g.zShadePower); +if (isAll) this.getZshadeState(str, this.vwr.tm, true); +return str.toString(); +}, "~B"); +Clazz.defineMethod(c$, "getFileState", +function(sfunc){ +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setFileState;\n"); +commands.append("function _setFileState() {\n\n"); +}if (commands.indexOf("append") < 0 && this.vwr.getModelSetFileName().equals("zapped")) commands.append(" zap;\n"); +this.appendLoadStates(commands); +if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JU.SB"); +Clazz.defineMethod(c$, "appendLoadStates", +function(cmds){ +var ligandModelSet = this.vwr.ligandModelSet; +if (ligandModelSet != null) { +for (var key, $key = ligandModelSet.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var data = this.vwr.ligandModels.get(key + "_data"); +if (data != null) cmds.append(" ").append(JU.Escape.encapsulateData("ligand_" + key, data.trim() + "\n", 0)); +data = this.vwr.ligandModels.get(key + "_file"); +if (data != null) cmds.append(" ").append(JU.Escape.encapsulateData("file_" + key, data.trim() + "\n", 0)); +} +}var commands = new JU.SB(); +var ms = this.vwr.ms; +var models = ms.am; +var modelCount = ms.mc; +for (var i = 0; i < modelCount; i++) { +if (ms.isJmolDataFrameForModel(i) || ms.isTrajectorySubFrame(i)) continue; +var m = models[i]; +var pt = commands.indexOf(m.loadState); +if (pt < 0 || pt != commands.lastIndexOf(m.loadState)) commands.append(models[i].loadState); +if (models[i].isModelKit) { +var bs = ms.getModelAtomBitSetIncludingDeleted(i, false); +if (ms.tainted != null) { +if (ms.tainted[2] != null) ms.tainted[2].andNot(bs); +if (ms.tainted[3] != null) ms.tainted[3].andNot(bs); +}m.loadScript = new JU.SB(); +this.getInlineData(commands, this.vwr.getModelExtract(bs, false, true, "MOL"), i > 0, null, null); +} else { +commands.appendSB(m.loadScript); +var auxFiles = m.auxiliaryInfo.get("auxFiles"); +if (auxFiles != null) { +for (var j = 0; j < auxFiles.size(); j++) commands.append(";#FILE1=" + JU.PT.esc(auxFiles.get(j)) + ";"); + +}}} +var s = commands.toString(); +if (s.indexOf("data \"append ") < 0) { +var i = s.indexOf("load /*data*/"); +var j = s.indexOf("load /*file*/"); +if (j >= 0 && j < i) i = j; +if ((j = s.indexOf("load \"@")) >= 0 && j < i) i = j; +if (i >= 0) s = s.substring(0, i) + "zap;" + s.substring(i); +}cmds.append(s); +}, "JU.SB"); +Clazz.overrideMethod(c$, "getInlineData", +function(loadScript, strModel, isAppend, appendToModelIndex, loadFilter){ +var tag = (isAppend ? "append" + (appendToModelIndex != null && appendToModelIndex.intValue() != this.vwr.ms.mc - 1 ? " modelindex=" + appendToModelIndex : "") : "model") + " inline"; +loadScript.append("load /*data*/ data \"").append(tag).append("\"\n").append(strModel).append("end \"").append(tag).append(loadFilter == null || loadFilter.length == 0 ? "" : " filter" + JU.PT.esc(loadFilter)).append("\";"); +}, "JU.SB,~S,~B,Integer,~S"); +Clazz.defineMethod(c$, "getColorState", +function(cm, sfunc){ +var s = new JU.SB(); +var n = this.getCEState(cm.ce, s); +if (n > 0 && sfunc != null) sfunc.append("\n _setColorState\n"); +return (n > 0 && sfunc != null ? "function _setColorState() {\n" + s.append("}\n\n").toString() : s.toString()); +}, "JV.ColorManager,JU.SB"); +Clazz.defineMethod(c$, "getCEState", +function(p, s){ +var n = 0; +for (var entry, $entry = p.schemes.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.length > 0 && !name.startsWith("=") && n++ >= 0) s.append("color \"" + name + "=" + JU.ColorEncoder.getColorSchemeList(entry.getValue()) + "\";\n"); +} +return n; +}, "JU.ColorEncoder,JU.SB"); +Clazz.defineMethod(c$, "getAnimState", +function(am, sfunc){ +var modelCount = this.vwr.ms.mc; +if (modelCount < 2) return ""; +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setFrameState;\n"); +commands.append("function _setFrameState() {\n"); +}commands.append("# frame state;\n"); +commands.append("# modelCount ").appendI(modelCount).append(";\n# first ").append(this.vwr.getModelNumberDotted(0)).append(";\n# last ").append(this.vwr.getModelNumberDotted(modelCount - 1)).append(";\n"); +if (am.backgroundModelIndex >= 0) this.app(commands, "set backgroundModel " + this.vwr.getModelNumberDotted(am.backgroundModelIndex)); +if (this.vwr.tm.bsFrameOffsets != null) { +this.app(commands, "frame align " + JU.Escape.eBS(this.vwr.tm.bsFrameOffsets)); +} else if (this.vwr.ms.translations != null) { +for (var i = modelCount; --i >= 0; ) { +var t = (this.vwr.ms.getTranslation(i)); +if (t != null) this.app(commands, "frame " + this.vwr.ms.getModelNumberDotted(i) + " align " + t); +} +}this.app(commands, "frame RANGE " + am.getModelSpecial(-1) + " " + am.getModelSpecial(1)); +this.app(commands, "animation DIRECTION " + (am.animationDirection == 1 ? "+1" : "-1")); +this.app(commands, "animation FPS " + am.animationFps); +this.app(commands, "animation MODE " + JS.T.nameOf(am.animationReplayMode) + " " + am.firstFrameDelay + " " + am.lastFrameDelay); +if (am.morphCount > 0) this.app(commands, "animation MORPH " + am.morphCount); +var showModel = true; +if (am.animationFrames != null) { +this.app(commands, "anim frames " + JU.Escape.eAI(am.animationFrames)); +var i = am.caf; +this.app(commands, "frame " + (i + 1)); +showModel = (am.cmi != am.modelIndexForFrame(i)); +}if (showModel) { +var s = am.getModelSpecial(0); +this.app(commands, s.equals("0") ? "frame *" : "model " + s); +}this.app(commands, "animation " + (!am.animationOn ? "OFF" : am.currentDirection == 1 ? "PLAY" : "PLAYREV")); +if (am.animationOn && am.animationPaused) this.app(commands, "animation PAUSE"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.AnimationManager,JU.SB"); +Clazz.defineMethod(c$, "getParameterState", +function(global, sfunc){ +var list = new Array(global.htBooleanParameterFlags.size() + global.htNonbooleanParameterValues.size()); +var commands = new JU.SB(); +var isState = (sfunc != null); +if (isState) { +sfunc.append(" _setParameterState;\n"); +commands.append("function _setParameterState() {\n\n"); +}var n = 0; +for (var key, $key = global.htBooleanParameterFlags.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (JV.GlobalSettings.doReportProperty(key)) list[n++] = "set " + key + " " + global.htBooleanParameterFlags.get(key); + +for (var key, $key = global.htNonbooleanParameterValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (JV.GlobalSettings.doReportProperty(key)) { +var value = global.htNonbooleanParameterValues.get(key); +if (key.charAt(0) == '=') { +key = key.substring(1); +} else { +key = (key.indexOf("default") == 0 ? " " : "") + "set " + key; +value = JU.Escape.e(value); +}list[n++] = key + " " + value; +} +switch (global.axesMode) { +case 603979808: +list[n++] = "set axes unitcell"; +break; +case 603979804: +list[n++] = "set axes molecular"; +break; +default: +list[n++] = "set axes window"; +} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) this.app(commands, list[i]); + +var s = JV.StateManager.getVariableList(global.htUserVariables, 0, false, true); +if (s.length > 0) { +commands.append("\n#user-defined atom sets; \n"); +commands.append(s); +}if (this.vwr.shm.getShape(5) != null) commands.append(this.getDefaultLabelState(this.vwr.shm.shapes[5])); +if (global.haveSetStructureList) { +var slist = global.structureList; +commands.append("struture HELIX set " + JU.Escape.eAF(slist.get(J.c.STR.HELIX))); +commands.append("struture SHEET set " + JU.Escape.eAF(slist.get(J.c.STR.SHEET))); +commands.append("struture TURN set " + JU.Escape.eAF(slist.get(J.c.STR.TURN))); +}if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JV.GlobalSettings,JU.SB"); +Clazz.defineMethod(c$, "getDefaultLabelState", +function(l){ +var s = new JU.SB().append("\n# label defaults;\n"); +this.app(s, "select none"); +this.app(s, J.shape.Shape.getColorCommand("label", l.defaultPaletteID, l.defaultColix, l.translucentAllowed)); +this.app(s, "background label " + J.shape.Shape.encodeColor(l.defaultBgcolix)); +this.app(s, "set labelOffset " + JV.JC.getXOffset(l.defaultOffset) + " " + (JV.JC.getYOffset(l.defaultOffset))); +var align = JV.JC.getHorizAlignmentName(l.defaultAlignment); +this.app(s, "set labelAlignment " + (align.length < 5 ? "left" : align)); +var pointer = JV.JC.getPointerName(l.defaultPointer); +this.app(s, "set labelPointer " + (pointer.length == 0 ? "off" : pointer)); +if ((l.defaultZPos & 32) != 0) this.app(s, "set labelFront"); + else if ((l.defaultZPos & 16) != 0) this.app(s, "set labelGroup"); +this.app(s, J.shape.Shape.getFontCommand("label", JU.Font.getFont3D(l.defaultFontId))); +return s.toString(); +}, "J.shape.Labels"); +Clazz.defineMethod(c$, "getSelectionState", +function(sm, sfunc){ +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setSelectionState;\n"); +commands.append("function _setSelectionState() {\n"); +}if (this.vwr.ms.trajectory != null) this.app(commands, this.vwr.ms.trajectory.getState()); +var temp = new java.util.Hashtable(); +var cmd = null; +this.addBs(commands, "hide ", sm.bsHidden); +this.addBs(commands, "subset ", sm.bsSubset); +this.addBs(commands, "delete ", sm.bsDeleted); +this.addBs(commands, "fix ", sm.bsFixed); +temp.put("-", this.vwr.slm.getSelectedAtomsNoSubset()); +cmd = this.getCommands(temp, null, "select"); +if (cmd == null) this.app(commands, "select none"); + else commands.append(cmd); +this.app(commands, "set hideNotSelected " + sm.hideNotSelected); +commands.append(this.vwr.getShapeProperty(1, "selectionState")); +if (this.vwr.getSelectionHalosEnabled()) this.app(commands, "SelectionHalos ON"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.SelectionManager,JU.SB"); +Clazz.defineMethod(c$, "getViewState", +function(tm, sfunc){ +var commands = new JU.SB(); +var moveToText = tm.getMoveToText(0, false); +if (sfunc != null) { +sfunc.append(" _setPerspectiveState;\n"); +commands.append("function _setPerspectiveState() {\n"); +}this.app(commands, "set perspectiveModel " + tm.perspectiveModel); +this.app(commands, "set scaleAngstromsPerInch " + tm.scale3DAngstromsPerInch); +this.app(commands, "set perspectiveDepth " + tm.perspectiveDepth); +this.app(commands, "set visualRange " + tm.visualRangeAngstroms); +if (!tm.isWindowCentered()) this.app(commands, "set windowCentered false"); +this.app(commands, "set cameraDepth " + tm.cameraDepth); +var navigating = (tm.mode == 1); +if (navigating) this.app(commands, "set navigationMode true"); +this.app(commands, this.vwr.ms.getBoundBoxCommand(false)); +this.app(commands, "center " + JU.Escape.eP(tm.fixedRotationCenter)); +commands.append(this.vwr.getOrientation(1073742034, null, null, null).toString()); +this.app(commands, moveToText); +if (!navigating && !tm.zoomEnabled) this.app(commands, "zoom off"); +commands.append(" slab ").appendI(tm.slabPercentSetting).append(";depth ").appendI(tm.depthPercentSetting).append(tm.slabEnabled && !navigating ? ";slab on" : "").append(";\n"); +commands.append(" set slabRange ").appendF(tm.slabRange).append(";\n"); +if (tm.slabPlane != null) commands.append(" slab plane ").append(JU.Escape.eP4(tm.slabPlane)).append(";\n"); +if (tm.depthPlane != null) commands.append(" depth plane ").append(JU.Escape.eP4(tm.depthPlane)).append(";\n"); +this.getZshadeState(commands, tm, false); +commands.append(this.getSpinState(true)).append("\n"); +if (this.vwr.ms.modelSetHasVibrationVectors() && tm.vibrationOn) this.app(commands, "set vibrationPeriod " + tm.vibrationPeriod + ";vibration on"); +var slabInternal = (tm.depthPlane != null || tm.slabPlane != null); +if (navigating) { +commands.append(tm.getNavigationState()); +}if (!tm.slabEnabled && slabInternal) commands.append(" slab off;\n"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.TransformManager,JU.SB"); +Clazz.defineMethod(c$, "getZshadeState", +function(s, tm, isAll){ +if (isAll) { +this.app(s, "set zDepth " + tm.zDepthPercentSetting); +this.app(s, "set zSlab " + tm.zSlabPercentSetting); +if (!tm.zShadeEnabled) this.app(s, "set zShade false"); +}if (tm.zShadeEnabled) this.app(s, "set zShade true"); +try { +if (tm.zSlabPoint != null) this.app(s, "set zSlab " + JU.Escape.eP(tm.zSlabPoint)); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JU.SB,JV.TransformManager,~B"); +Clazz.overrideMethod(c$, "getSpinState", +function(isAll){ +var tm = this.vwr.tm; +var s = " set spinX " + Clazz.floatToInt(tm.spinX) + "; set spinY " + Clazz.floatToInt(tm.spinY) + "; set spinZ " + Clazz.floatToInt(tm.spinZ) + "; set spinFps " + Clazz.floatToInt(tm.spinFps) + ";"; +if (!Float.isNaN(tm.navFps)) s += " set navX " + Clazz.floatToInt(tm.navX) + "; set navY " + Clazz.floatToInt(tm.navY) + "; set navZ " + Clazz.floatToInt(tm.navZ) + "; set navFps " + Clazz.floatToInt(tm.navFps) + ";"; +if (tm.navOn) s += " navigation on;"; +if (!tm.spinOn) return s; +var prefix = (tm.isSpinSelected ? "\n select " + JU.Escape.eBS(this.vwr.bsA()) + ";\n rotateSelected" : "\n "); +if (tm.isSpinInternal) { +var pt = JU.P3.newP(tm.internalRotationCenter); +pt.sub(tm.rotationAxis); +s += prefix + " spin " + tm.rotationRate + " " + JU.Escape.eP(tm.internalRotationCenter) + " " + JU.Escape.eP(pt); +} else if (tm.isSpinFixed) { +s += prefix + " spin axisangle " + JU.Escape.eP(tm.rotationAxis) + " " + tm.rotationRate; +} else { +s += " spin on"; +}return s + ";"; +}, "~B"); +Clazz.overrideMethod(c$, "getCommands", +function(htDefine, htMore, selectCmd){ +var s = new JU.SB(); +var setPrev = this.getCommands2(htDefine, s, null, selectCmd); +if (htMore != null) this.getCommands2(htMore, s, setPrev, "select"); +return s.toString(); +}, "java.util.Map,java.util.Map,~S"); +Clazz.defineMethod(c$, "getCommands2", +function(ht, s, setPrev, selectCmd){ +if (ht == null) return ""; +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var set = JU.Escape.eBS(entry.getValue()); +if (set.length < 5) continue; +set = selectCmd + " " + set; +if (!set.equals(setPrev)) this.app(s, set); +setPrev = set; +if (key.indexOf("-") != 0) this.app(s, key); +} +return setPrev; +}, "java.util.Map,JU.SB,~S,~S"); +Clazz.defineMethod(c$, "app", +function(s, cmd){ +if (cmd.length != 0) s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz.defineMethod(c$, "addBs", +function(sb, key, bs){ +if (bs == null || bs.length() == 0) return; +this.app(sb, key + JU.Escape.eBS(bs)); +}, "JU.SB,~S,JU.BS"); +Clazz.defineMethod(c$, "getFontState", +function(myType, font3d){ +var objId = JV.StateManager.getObjectIdFromName(myType.equalsIgnoreCase("axes") ? "axis" : myType); +if (objId < 0) return ""; +var mad = this.vwr.getObjectMad10(objId); +var s = new JU.SB().append("\n"); +this.app(s, myType + (mad == 0 ? " off" : mad == 1 ? " on" : mad == -1 ? " dotted" : mad < 20 ? " " + mad : " " + (mad / 20000))); +if (s.length() < 3) return ""; +var fcmd = J.shape.Shape.getFontCommand(myType, font3d); +if (fcmd.length > 0) fcmd = " " + fcmd + ";\n"; +return (s + fcmd); +}, "~S,JU.Font"); +Clazz.defineMethod(c$, "appendTickInfo", +function(myType, sb, t){ +sb.append(" "); +sb.append(myType); +JV.StateCreator.addTickInfo(sb, t, false); +sb.append(";\n"); +}, "~S,JU.SB,JM.TickInfo"); +c$.addTickInfo = Clazz.defineMethod(c$, "addTickInfo", +function(sb, tickInfo, addFirst){ +sb.append(" ticks ").appendC(tickInfo.type).append(" ").append(JU.Escape.eP(tickInfo.ticks)); +var isUnitCell = (tickInfo.scale != null && Float.isNaN(tickInfo.scale.x)); +if (isUnitCell) sb.append(" UNITCELL"); +if (tickInfo.tickLabelFormats != null) sb.append(" format ").append(JU.Escape.eAS(tickInfo.tickLabelFormats, false)); +if (!isUnitCell && tickInfo.scale != null) sb.append(" scale ").append(JU.Escape.eP(tickInfo.scale)); +if (addFirst && !Float.isNaN(tickInfo.first) && tickInfo.first != 0) sb.append(" first ").appendF(tickInfo.first); +if (tickInfo.reference != null) sb.append(" point ").append(JU.Escape.eP(tickInfo.reference)); +}, "JU.SB,JM.TickInfo,~B"); +Clazz.defineMethod(c$, "getMeasurementState", +function(shape){ +var mList = shape.measurements; +var measurementCount = shape.measurementCount; +var font3d = shape.font3d; +var ti = shape.defaultTickInfo; +var commands = new JU.SB(); +this.app(commands, "measures delete"); +for (var i = 0; i < measurementCount; i++) { +var m = mList.get(i); +var isProperty = (m.property != null); +if (isProperty && Float.isNaN(m.value)) continue; +var count = m.count; +var sb = new JU.SB().append("measure"); +if (m.thisID != null) sb.append(" ID ").append(JU.PT.esc(m.thisID)); +if (m.mad != 0) sb.append(" radius ").appendF(m.thisID == null || m.mad > 0 ? m.mad / 2000 : 0); +if (m.colix != 0) sb.append(" color ").append(JU.Escape.escapeColor(JU.C.getArgb(m.colix))); +if (m.text != null) { +if (m.text.font != null) sb.append(" font ").append(m.text.font.getInfo()); +if (m.text.align != 0) sb.append(" align ").append(JV.JC.getHorizAlignmentName(m.text.align)); +if (m.text.pymolOffset != null) sb.append(" offset ").append(JU.Escape.eAF(m.text.pymolOffset)); +}var tickInfo = m.tickInfo; +if (tickInfo != null) JV.StateCreator.addTickInfo(sb, tickInfo, true); +for (var j = 1; j <= count; j++) sb.append(" ").append(m.getLabel(j, true, true)); + +if (isProperty) { +sb.append(" " + m.property + " value " + (Double.isNaN(m.value) ? 0 : m.value)).append(" " + JU.PT.esc(m.getString())); +} else if (count == 2) { +var s = m.getDistanceFormatForState(); +if (s != null) sb.append(" ").append(JU.PT.esc(s)); +}if (!isProperty) { +sb.append("; # " + shape.getInfoAsString(i)); +}this.app(commands, sb.toString()); +} +this.app(commands, J.shape.Shape.getFontCommand("measures", font3d)); +var nHidden = 0; +var temp = new java.util.Hashtable(); +var bs = JU.BS.newN(measurementCount); +for (var i = 0; i < measurementCount; i++) { +var m = mList.get(i); +if (m.isHidden) { +nHidden++; +bs.set(i); +}if (shape.bsColixSet != null && shape.bsColixSet.get(i)) JU.BSUtil.setMapBitSet(temp, i, i, J.shape.Shape.getColorCommandUnk("measure", m.colix, shape.translucentAllowed)); +} +if (nHidden > 0) if (nHidden == measurementCount) this.app(commands, "measures off; # lines and numbers off"); + else for (var i = 0; i < measurementCount; i++) if (bs.get(i)) JU.BSUtil.setMapBitSet(temp, i, i, "measure off"); + +if (ti != null) { +commands.append(" measure "); +JV.StateCreator.addTickInfo(commands, ti, true); +commands.append(";\n"); +}if (shape.mad >= 0) commands.append(" set measurements ").appendF(shape.mad / 2000).append(";\n"); +var s = this.getCommands(temp, null, "select measures"); +if (s != null && s.length != 0) { +commands.append(s); +this.app(commands, "select measures ({null})"); +}return commands.toString(); +}, "J.shape.Measures"); +Clazz.defineMethod(c$, "getShapeStatePriv", +function(commands, isAll, iShape){ +var shapes = this.vwr.shm.shapes; +if (shapes == null) return; +var i; +var imax; +if (iShape == 2147483647) { +i = 0; +imax = 37; +} else { +imax = (i = iShape) + 1; +}for (; i < imax; ++i) { +var shape = shapes[i]; +if (shape != null && (isAll || i >= 9 && i < 16)) { +var cmd = this.getShapeState(shape); +if (cmd != null && cmd.length > 1) commands.append(cmd); +}} +commands.append(" select *;\n"); +}, "JU.SB,~B,~N"); +Clazz.defineMethod(c$, "getBondState", +function(shape){ +var bsOrderSet = shape.bsOrderSet; +var reportAll = shape.reportAll; +this.clearTemp(); +var modelSet = this.vwr.ms; +var haveTainted = false; +var bonds = modelSet.bo; +var bondCount = modelSet.bondCount; +var r; +if (reportAll || shape.bsSizeSet != null) { +var i0 = (reportAll ? bondCount - 1 : shape.bsSizeSet.nextSetBit(0)); +for (var i = i0; i >= 0; i = (reportAll ? i - 1 : shape.bsSizeSet.nextSetBit(i + 1))) JU.BSUtil.setMapBitSet(this.temp, i, i, "wireframe " + ((r = bonds[i].mad) == 1 ? "on" : "" + JU.PT.escF(r / 2000))); + +}if (reportAll || bsOrderSet != null) { +var i0 = (reportAll ? bondCount - 1 : bsOrderSet.nextSetBit(0)); +for (var i = i0; i >= 0; i = (reportAll ? i - 1 : bsOrderSet.nextSetBit(i + 1))) { +var bond = bonds[i]; +if (reportAll || (bond.order & 131072) == 0) JU.BSUtil.setMapBitSet(this.temp, i, i, "bondOrder " + JU.Edge.getBondOrderNameFromOrder(bond.order)); +} +}if (shape.bsColixSet != null) for (var i = shape.bsColixSet.nextSetBit(0); i >= 0; i = shape.bsColixSet.nextSetBit(i + 1)) { +var colix = bonds[i].colix; +if ((colix & -30721) == 2) JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommand("bonds", J.c.PAL.CPK.id, colix, shape.translucentAllowed)); + else JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommandUnk("bonds", colix, shape.translucentAllowed)); +} +var s = this.getCommands(this.temp, null, "select BONDS") + "\n" + (haveTainted ? this.getCommands(this.temp2, null, "select BONDS") + "\n" : ""); +this.clearTemp(); +return s; +}, "J.shape.Sticks"); +Clazz.defineMethod(c$, "clearTemp", +function(){ +this.temp.clear(); +this.temp2.clear(); +}); +Clazz.defineMethod(c$, "getShapeState", +function(shape){ +var s; +switch (shape.shapeID) { +case 34: +s = this.getAxesState(shape); +break; +case 33: +if (!this.vwr.ms.haveUnitCells) return ""; +var st = s = this.getFontLineShapeState(shape); +var iAtom = this.vwr.am.getUnitCellAtomIndex(); +if (iAtom >= 0) s += " unitcell ({" + iAtom + "});\n"; +var uc = this.vwr.getCurrentUnitCell(); +if (uc != null) { +s += uc.getUnitCellState(); +s += st; +}break; +case 32: +s = this.getFontLineShapeState(shape); +break; +case 36: +s = this.getFontState(shape.myType, (shape).baseFont3d); +break; +case 6: +s = this.getMeasurementState(shape); +break; +case 7: +case 18: +s = this.getAtomShapeState(shape); +break; +case 1: +s = this.getBondState(shape); +break; +case 31: +var es = shape; +var sb = new JU.SB(); +sb.append("\n set echo off;set echo \"%SCALE\" off;\n"); +this.getEchoState(sb, es.scaleObject); +var haveElementKey = false; +for (var t, $t = es.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) { +haveElementKey = new Boolean (haveElementKey | this.getEchoState(sb, t)).valueOf(); +} +if (haveElementKey) sb.append(" modelkit OFF;//to check for element keys\n"); +s = sb.toString(); +break; +case 8: +var hs = shape; +s = this.getAtomShapeState(hs) + (hs.colixSelection == 2 ? "" : hs.colixSelection == 0 ? " color SelectionHalos NONE;\n" : J.shape.Shape.getColorCommandUnk("selectionHalos", hs.colixSelection, hs.translucentAllowed) + ";\n"); +if (hs.bsHighlight != null) s += " set highlight " + JU.Escape.eBS(hs.bsHighlight) + "; " + J.shape.Shape.getColorCommandUnk("highlight", hs.colixHighlight, hs.translucentAllowed) + ";\n"; +break; +case 35: +this.clearTemp(); +var h = shape; +if (h.atomFormats != null) { +var at = this.vwr.ms.at; +for (var i = this.vwr.ms.ac; --i >= 0; ) { +if (at[i] == null) h.atomFormats[i] = null; +if (h.atomFormats[i] != null) { +JU.BSUtil.setMapBitSet(this.temp, i, i, "set hoverLabel " + JU.PT.esc(h.atomFormats[i])); +}} +}s = "\n hover " + JU.PT.esc((h.labelFormat == null ? "" : h.labelFormat)) + ";\n" + this.getCommands(this.temp, null, "select"); +this.clearTemp(); +break; +case 5: +var l = shape; +if (!l.isActive || l.bsSizeSet == null) return ""; +this.clearTemp(); +for (var i = l.bsSizeSet.nextSetBit(0); i >= 0; i = l.bsSizeSet.nextSetBit(i + 1)) { +var t = l.getLabel(i); +var cmd = "label "; +if (t == null) { +cmd += JU.PT.esc(l.formats[i]); +} else { +cmd += JU.PT.esc(t.textUnformatted); +if (t.pymolOffset != null) cmd += ";set labelOffset " + JU.Escape.eAF(t.pymolOffset); +}JU.BSUtil.setMapBitSet(this.temp, i, i, cmd); +if (l.bsColixSet != null && l.bsColixSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand("label", l.paletteIDs[i], l.colixes[i], l.translucentAllowed)); +if (l.bsBgColixSet != null && l.bsBgColixSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, "background label " + J.shape.Shape.encodeColor(l.bgcolixes[i])); +var text = l.getLabel(i); +var sppm = (text != null ? text.scalePixelsPerMicron : 0); +if (sppm > 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelScaleReference " + (10000 / sppm)); +if (l.offsets != null && l.offsets.length > i) { +var offsetFull = l.offsets[i]; +JU.BSUtil.setMapBitSet(this.temp2, i, i, "set " + (JV.JC.isOffsetAbsolute(offsetFull) ? "labelOffsetAbsolute " : "labelOffset ") + JV.JC.getXOffset(offsetFull) + " " + JV.JC.getYOffset(offsetFull)); +var align = JV.JC.getHorizAlignmentName(offsetFull >> 2); +var pointer = JV.JC.getPointerName(offsetFull); +if (pointer.length > 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelPointer " + pointer); +if ((offsetFull & 32) != 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelFront"); + else if ((offsetFull & 16) != 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelGroup"); +if (align.length > 0) JU.BSUtil.setMapBitSet(this.temp3, i, i, "set labelAlignment " + align); +}if (l.mads != null && l.mads[i] < 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set toggleLabel"); +if (l.bsFontSet != null && l.bsFontSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getFontCommand("label", JU.Font.getFont3D(l.fids[i]))); +} +s = this.getCommands(this.temp, this.temp2, "select") + this.getCommands(null, this.temp3, "select"); +this.temp3.clear(); +this.clearTemp(); +break; +case 0: +this.clearTemp(); +var ac = this.vwr.ms.ac; +var atoms = this.vwr.ms.at; +var balls = shape; +var colixes = balls.colixes; +var pids = balls.paletteIDs; +var r = 0; +for (var i = 0; i < ac; i++) { +if (atoms[i] == null) continue; +if (shape.bsSizeSet != null && shape.bsSizeSet.get(i)) { +if ((r = atoms[i].madAtom) < 0) JU.BSUtil.setMapBitSet(this.temp, i, i, "Spacefill on"); + else JU.BSUtil.setMapBitSet(this.temp, i, i, "Spacefill " + JU.PT.escF(r / 2000)); +}if (shape.bsColixSet != null && shape.bsColixSet.get(i)) { +var pid = atoms[i].paletteID; +if (pid != J.c.PAL.CPK.id || JU.C.isColixTranslucent(atoms[i].colixAtom)) JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommand("atoms", pid, atoms[i].colixAtom, shape.translucentAllowed)); +if (colixes != null && i < colixes.length) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand("balls", pids[i], colixes[i], shape.translucentAllowed)); +}} +s = this.getCommands(this.temp, this.temp2, "select"); +this.clearTemp(); +break; +default: +s = shape.getShapeState(); +break; +} +return s; +}, "J.shape.Shape"); +Clazz.defineMethod(c$, "getFontLineShapeState", +function(shape){ +var s = this.getFontState(shape.myType, shape.font3d); +if (shape.tickInfos == null) return s; +var isOff = (s.indexOf(" off") >= 0); +var sb = new JU.SB(); +sb.append(s); +for (var i = 0; i < 4; i++) if (shape.tickInfos[i] != null) this.appendTickInfo(shape.myType, sb, shape.tickInfos[i]); + +if (isOff) sb.append(" " + shape.myType + " off;\n"); +return sb.toString(); +}, "J.shape.FontLineShape"); +Clazz.defineMethod(c$, "getAxesState", +function(axes){ +var sb = new JU.SB(); +sb.append(this.getFontLineShapeState(axes)); +return axes.getAxesState(sb); +}, "J.shape.Axes"); +Clazz.overrideMethod(c$, "getAtomShapeState", +function(shape){ +if (!shape.isActive) return ""; +this.clearTemp(); +var type = JV.JC.shapeClassBases[shape.shapeID]; +var isVector = (shape.shapeID == 18); +var mad; +if (shape.bsSizeSet != null) for (var i = shape.bsSizeSet.nextSetBit(0); i >= 0; i = shape.bsSizeSet.nextSetBit(i + 1)) JU.BSUtil.setMapBitSet(this.temp, i, i, type + " " + ((mad = shape.mads[i]) < 0 ? (isVector && mad < -1 ? "" + -mad : "on") : JU.PT.escF(mad / 2000))); + +if (shape.bsColixSet != null) for (var i = shape.bsColixSet.nextSetBit(0); i >= 0; i = shape.bsColixSet.nextSetBit(i + 1)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand(type, shape.paletteIDs[i], shape.colixes[i], shape.translucentAllowed)); + +var s = this.getCommands(this.temp, this.temp2, "select"); +this.clearTemp(); +return s; +}, "J.shape.AtomShape"); +Clazz.defineMethod(c$, "getEchoState", +function(sb, t){ +var isScale = (t != null && t.barPixels > 0); +var text = (t == null ? null : isScale ? t.textUnformatted : t.getStateText()); +if (text == null || !t.isEcho || t.target.equals("error")) return false; +var isImage = (t.image != null); +var strOff = null; +var echoCmd = "set echo ID " + JU.PT.esc(t.target); +switch (t.valign) { +case 3: +if (t.movableXPercent == 2147483647 || t.movableYPercent == 2147483647) { +strOff = (t.movableXPercent == 2147483647 ? t.movableX + " " : t.movableXPercent + "% ") + (t.movableYPercent == 2147483647 ? t.movableY + "" : t.movableYPercent + "%"); +} else { +strOff = "[" + t.movableXPercent + " " + t.movableYPercent + "%]"; +}case 4: +if (strOff == null) strOff = JU.Escape.eP(t.xyz); +sb.append(" ").append(echoCmd).append(" ").append(strOff); +if (t.align != 4) sb.append("; ").append(echoCmd).append(" ").append(JV.JC.getHorizAlignmentName(t.align)); +break; +default: +sb.append(" set echo ").append(JV.JC.getEchoName(t.valign)).append(" ").append(JV.JC.getHorizAlignmentName(t.align)); +} +if (t.movableZPercent != 2147483647) sb.append("; ").append(echoCmd).append(" depth ").appendI(t.movableZPercent); +if (isImage) { +sb.append("; ").append(echoCmd).append(" IMAGE /*file*/"); +} else { +sb.append("; echo "); +}sb.append(JU.PT.esc(text)); +sb.append(";\n"); +if (isImage && t.imageScale != 1) sb.append(" ").append(echoCmd).append(" scale ").appendF(t.imageScale).append(";\n"); +if (t.script != null) sb.append(" ").append(echoCmd).append(" script ").append(JU.PT.esc(t.script)).append(";\n"); +if (t.modelIndex >= 0) sb.append(" ").append(echoCmd).append(" model ").append(this.vwr.getModelNumberDotted(t.modelIndex)).append(";\n"); +if (t.pointerPt != null) { +sb.append(" ").append(echoCmd).append(" point ").append(Clazz.instanceOf(t.pointerPt,"JM.Atom") ? "({" + (t.pointerPt).i + "})" : JU.Escape.eP(t.pointerPt)).append(";\n"); +}if (t.pymolOffset != null) { +sb.append(" ").append(echoCmd).append(" offset ").append(JU.Escape.escapeFloatA(t.pymolOffset, true)).append(";\n"); +}t.appendFontCmd(sb); +sb.append("; color echo"); +if (JU.C.isColixTranslucent(t.colix)) sb.append(" ").append(JU.C.getColixTranslucencyLabel(t.colix)); +sb.append(" ").append(JU.C.getHexCode(t.colix)); +if (t.bgcolix != 0) { +sb.append("; color echo background "); +if (JU.C.isColixTranslucent(t.bgcolix)) sb.append(JU.C.getColixTranslucencyLabel(t.bgcolix)).append(" "); +sb.append(JU.C.getHexCode(t.bgcolix)); +}sb.append(";\n"); +if (t.hidden) { +if (isScale) sb.append(" set echo \"%SCALE\" hidden;\n"); + else sb.append(" set echo ID ").append(JU.PT.esc(t.target)).append(" hidden;\n"); +}return (t.target.startsWith("_!_elkey_")); +}, "JU.SB,JM.Text"); +Clazz.overrideMethod(c$, "getAllSettings", +function(prefix){ +var g = this.vwr.g; +var commands = new JU.SB(); +var list = new Array(g.htBooleanParameterFlags.size() + g.htNonbooleanParameterValues.size() + g.htUserVariables.size()); +var n = 0; +var _prefix = "_" + prefix; +for (var key, $key = g.htBooleanParameterFlags.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (prefix == null || key.indexOf(prefix) == 0 || key.indexOf(_prefix) == 0) list[n++] = (key.indexOf("_") == 0 ? key + " = " : "set " + key + " ") + g.htBooleanParameterFlags.get(key); +} +for (var key, $key = g.htNonbooleanParameterValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (key.charAt(0) != '@' && (prefix == null || key.indexOf(prefix) == 0 || key.indexOf(_prefix) == 0)) { +var value = g.htNonbooleanParameterValues.get(key); +if ((typeof(value)=='string')) value = JV.StateCreator.chop(JU.PT.esc(value)); +list[n++] = (key.indexOf("_") == 0 ? key + " = " : "set " + key + " ") + value; +}} +for (var key, $key = g.htUserVariables.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (prefix == null || key.indexOf(prefix) == 0) { +var value = g.htUserVariables.get(key); +var s = value.escape(); +list[n++] = key + " " + (key.startsWith("@") ? "" : "= ") + (value.tok == 4 ? JV.StateCreator.chop(JU.PT.esc(s)) : s); +}} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) this.app(commands, list[i]); + +commands.append("\n"); +return commands.toString(); +}, "~S"); +c$.chop = Clazz.defineMethod(c$, "chop", +function(s){ +var len = s.length; +if (len < 512) return s; +var sb = new JU.SB(); +var sep = "\"\\\n + \""; +var pt = 0; +for (var i = 72; i < len; pt = i, i += 72) { +while (s.charAt(i - 1) == '\\') i++; + +sb.append((pt == 0 ? "" : sep)).append(s.substring(pt, i)); +} +sb.append(sep).append(s.substring(pt, len)); +return sb.toString(); +}, "~S"); +Clazz.overrideMethod(c$, "getFunctionCalls", +function(f){ +if (f == null) f = ""; +var s = new JU.SB(); +var pt = f.indexOf("*"); +var isGeneric = (pt >= 0); +var isStatic = JV.Viewer.isStaticFunction(f); +var namesOnly = (f.equalsIgnoreCase("names") || f.equalsIgnoreCase("static_names")); +if (namesOnly) f = ""; +if (isGeneric) f = f.substring(0, pt); +f = f.toLowerCase(); +if (isStatic || f.length == 0) this.addFunctions(s, JV.Viewer.staticFunctions, f, isGeneric, namesOnly); +if (!isStatic || f.length == 0) this.addFunctions(s, this.vwr.localFunctions, f, isGeneric, namesOnly); +return s.toString(); +}, "~S"); +Clazz.defineMethod(c$, "addFunctions", +function(s, ht, selectedFunction, isGeneric, namesOnly){ +var names = new Array(ht.size()); +var n = 0; +for (var name, $name = ht.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) if (selectedFunction.length == 0 && !name.startsWith("_") || name.equalsIgnoreCase(selectedFunction) || isGeneric && name.toLowerCase().indexOf(selectedFunction) == 0) names[n++] = name; + +java.util.Arrays.sort(names, 0, n); +for (var i = 0; i < n; i++) { +var f = ht.get(names[i]); +s.append(namesOnly ? f.getSignature() : f.toString()); +s.appendC('\n'); +} +}, "JU.SB,java.util.Map,~S,~B,~B"); +c$.isTainted = Clazz.defineMethod(c$, "isTainted", +function(tainted, atomIndex, type){ +return (tainted != null && tainted[type] != null && tainted[type].get(atomIndex)); +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "getAtomicPropertyState", +function(taintWhat, bsSelected){ +var bs; +var commands = new JU.SB(); +for (var type = 0; type < 18; type++) if (taintWhat < 0 || type == taintWhat) if ((bs = (bsSelected != null ? bsSelected : this.vwr.ms.getTaintedAtoms(type))) != null) this.getAtomicPropertyStateBuffer(commands, type, bs, null, null); + +return commands.toString(); +}, "~N,JU.BS"); +Clazz.overrideMethod(c$, "getAtomicPropertyStateBuffer", +function(commands, type, bs, label, fData){ +if (!this.vwr.g.preserveState) return; +var s = new JU.SB(); +var dataLabel = (label == null ? JM.AtomCollection.userSettableValues[type] : label) + " set"; +var n = 0; +var isDefault = (type == 2); +var atoms = this.vwr.ms.at; +var tainted = this.vwr.ms.tainted; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(atoms[i])) continue; +s.appendI(i + 1).append(" ").append(atoms[i].getElementSymbol()).append(" ").append(atoms[i].getInfo().$replace(' ', '_')).append(" "); +switch (type) { +case 18: +if (i < fData.length) s.appendF(fData[i]); +break; +case 13: +s.appendI(atoms[i].getAtomNumber()); +break; +case 16: +s.append(atoms[i].getChainIDStr()); +break; +case 15: +s.appendI(atoms[i].group.getResno()); +break; +case 14: +s.appendI(atoms[i].getSeqID()); +break; +case 0: +s.append(atoms[i].getAtomName()); +break; +case 1: +s.append(atoms[i].getAtomType()); +break; +case 2: +if (JV.StateCreator.isTainted(tainted, i, 2)) isDefault = false; +s.appendF(atoms[i].x).append(" ").appendF(atoms[i].y).append(" ").appendF(atoms[i].z); +break; +case 12: +var v = atoms[i].getVibrationVector(); +if (v == null) s.append("0 0 0"); + else if (Float.isNaN(v.modScale)) s.appendF(v.x).append(" ").appendF(v.y).append(" ").appendF(v.z); + else s.appendF(1.4E-45).append(" ").appendF(1.4E-45).append(" ").appendF(v.modScale); +break; +case 17: +s.appendI(atoms[i].getAtomSite()); +break; +case 3: +s.appendI(atoms[i].getAtomicAndIsotopeNumber()); +break; +case 4: +s.appendI(atoms[i].getFormalCharge()); +break; +case 6: +s.appendF(atoms[i].getBondingRadius()); +break; +case 7: +s.appendI(atoms[i].getOccupancy100()); +break; +case 8: +s.appendF(atoms[i].getPartialCharge()); +break; +case 9: +s.appendF(atoms[i].getBfactor100() / 100); +break; +case 10: +s.appendI(atoms[i].getValence()); +break; +case 11: +s.appendF(atoms[i].getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)); +break; +} +s.append(" ;\n"); +++n; +} +if (n == 0) return; +if (isDefault) dataLabel += "(default)"; +commands.append("\n DATA \"" + dataLabel + "\"\n").appendI(n).append(" ;\nJmol Property Data Format 1 -- Jmol ").append(JV.Viewer.getJmolVersion()).append(";\n"); +commands.appendSB(s); +commands.append(" end \"" + dataLabel + "\";\n"); +}, "JU.SB,~N,JU.BS,~S,~A"); +Clazz.overrideMethod(c$, "undoMoveAction", +function(action, n){ +switch (action) { +case 4165: +case 4140: +switch (n) { +case 1275068425: +return (action == 4165 ? this.actionStates : this.actionStatesRedo).size(); +case -2: +this.actionStates.clear(); +this.actionStatesRedo.clear(); +break; +case -1: +(action == 4165 ? this.actionStates : this.actionStatesRedo).clear(); +break; +case 0: +n = 2147483647; +default: +if (n > 100) n = (action == 4165 ? this.actionStates : this.actionStatesRedo).size(); +for (var i = 0; i < n; i++) this.undoMoveActionClear(0, action, true); + +} +break; +} +return 0; +}, "~N,~N"); +Clazz.overrideMethod(c$, "undoMoveActionClear", +function(taintedAtom, type, clearRedo){ +if (!this.vwr.g.preserveState) return; +var modelIndex = (taintedAtom >= 0 && this.vwr.ms.at[taintedAtom] != null ? this.vwr.ms.at[taintedAtom].mi : this.vwr.ms.mc - 1); +switch (type) { +case 4140: +case 4165: +this.vwr.stopMinimization(); +var s = ""; +var list1; +var list2; +switch (type) { +default: +case 4165: +list1 = this.actionStates; +list2 = this.actionStatesRedo; +break; +case 4140: +list1 = this.actionStatesRedo; +list2 = this.actionStates; +if (this.actionStatesRedo.size() == 1) return; +break; +} +if (list1.size() == 0 || this.undoWorking) return; +this.undoWorking = true; +list2.add(0, list1.removeItemAt(0)); +s = this.actionStatesRedo.get(0); +if (type == 4165 && list2.size() == 1) { +var pt = Clazz.newIntArray(-1, [1]); +type = JU.PT.parseIntNext(s, pt); +taintedAtom = JU.PT.parseIntNext(s, pt); +this.undoMoveActionClear(taintedAtom, type, false); +}if (this.vwr.ms.am[modelIndex].isModelKit || s.indexOf("zap ") < 0) { +if (JU.Logger.debugging) this.vwr.log(s); +this.vwr.evalStringQuiet(s); +} else { +this.actionStates.clear(); +}break; +default: +if (this.undoWorking && clearRedo) return; +this.undoWorking = true; +var bs; +var sb = new JU.SB(); +sb.append("#" + type + " " + taintedAtom + " " + ( new java.util.Date()) + "\n"); +if (taintedAtom >= 0) { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +this.vwr.ms.taintAtoms(bs, type); +sb.append(this.getAtomicPropertyState(-1, null)); +} else { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +sb.append("zap "); +sb.append(JU.Escape.eBS(bs)).append(";"); +this.getInlineData(sb, this.vwr.getModelExtract(bs, false, true, "MOL"), true, null, null); +sb.append("set refreshing false;").append(this.vwr.acm.getPickingState()).append(this.vwr.tm.getMoveToText(0, false)).append("set refreshing true;"); +}if (clearRedo) { +this.actionStates.add(0, sb.toString()); +this.actionStatesRedo.clear(); +} else { +this.actionStatesRedo.add(1, sb.toString()); +}if (this.actionStates.size() == 100) { +this.actionStates.removeItemAt(99); +}} +this.undoWorking = !clearRedo; +}, "~N,~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/StateManager.js b/config/plugins/visualizations/jmol/static/j2s/JV/StateManager.js new file mode 100755 index 000000000000..8d4ce7e4a68c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/StateManager.js @@ -0,0 +1,448 @@ +Clazz.declarePackage("JV"); +Clazz.load(["java.util.Hashtable"], ["JV.Connection", "$.Scene", "$.StateManager", "$.Connections"], ["java.util.Arrays", "JU.BS", "$.Lst", "$.SB", "JM.Orientation", "JU.BSUtil", "$.Escape"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.maxUndo = 20; +this.vwr = null; +this.saved = null; +this.lastOrientation = ""; +this.lastContext = ""; +this.lastConnections = ""; +this.lastScene = ""; +this.lastSelected = ""; +this.lastState = ""; +this.lastShape = ""; +this.lastCoordinates = ""; +this.lastUnitcell = ""; +this.undoStateStack = null; +this.redoStateStack = null; +Clazz.instantialize(this, arguments);}, JV, "StateManager", null); +Clazz.prepareFields (c$, function(){ +this.saved = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +c$.getVariableList = Clazz.defineMethod(c$, "getVariableList", +function(htVariables, nMax, withSites, definedOnly){ +var sb = new JU.SB(); +var n = 0; +var list = new Array(htVariables.size()); +for (var entry, $entry = htVariables.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var $var = entry.getValue(); +if ((withSites || !key.startsWith("site_")) && (!definedOnly || key.charAt(0) == '@')) list[n++] = key + (key.charAt(0) == '@' ? " " + $var.asString() : " = " + JV.StateManager.varClip(key, $var.escape(), nMax)); +} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) sb.append(" ").append(list[i]).append(";\n"); + +if (n == 0 && !definedOnly) sb.append("# --no global user variables defined--;\n"); +return sb.toString(); +}, "java.util.Map,~N,~B,~B"); +c$.getObjectIdFromName = Clazz.defineMethod(c$, "getObjectIdFromName", +function(name){ +if (name == null) return -1; +var objID = "background axis1 axis2 axis3 boundbox unitcell frank ".indexOf(name.toLowerCase()); +return (objID < 0 ? objID : Clazz.doubleToInt(objID / 11)); +}, "~S"); +c$.getObjectNameFromId = Clazz.defineMethod(c$, "getObjectNameFromId", +function(objId){ +if (objId < 0 || objId >= 7) return null; +return "background axis1 axis2 axis3 boundbox unitcell frank ".substring(objId * 11, objId * 11 + 11).trim(); +}, "~N"); +Clazz.defineMethod(c$, "clear", +function(global){ +this.vwr.setShowAxes(false); +this.vwr.setShowBbcage(false); +this.vwr.setShowUnitCell(false); +global.clear(); +}, "JV.GlobalSettings"); +Clazz.defineMethod(c$, "resetLighting", +function(){ +this.vwr.setIntProperty("ambientPercent", 45); +this.vwr.setIntProperty("celShadingPower", 10); +this.vwr.setIntProperty("diffusePercent", 84); +this.vwr.setIntProperty("phongExponent", 64); +this.vwr.setIntProperty("specularExponent", 6); +this.vwr.setIntProperty("specularPercent", 22); +this.vwr.setIntProperty("specularPower", 40); +this.vwr.setIntProperty("zDepth", 0); +this.vwr.setIntProperty("zShadePower", 3); +this.vwr.setIntProperty("zSlab", 50); +this.vwr.setBooleanProperty("specular", true); +this.vwr.setBooleanProperty("celShading", false); +this.vwr.setBooleanProperty("zshade", false); +}); +Clazz.defineMethod(c$, "setCrystallographicDefaults", +function(){ +this.vwr.setAxesMode(603979808); +this.vwr.setShowAxes(true); +this.vwr.setShowUnitCell(true); +this.vwr.setBooleanProperty("perspectiveDepth", false); +}); +Clazz.defineMethod(c$, "setCommonDefaults", +function(){ +this.vwr.setBooleanProperty("perspectiveDepth", true); +this.vwr.setFloatProperty("bondTolerance", 0.45); +this.vwr.setFloatProperty("minBondDistance", 0.4); +this.vwr.setIntProperty("bondingVersion", 0); +this.vwr.setBooleanProperty("translucent", true); +}); +Clazz.defineMethod(c$, "setJmolDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("defaultColorScheme", "Jmol"); +this.vwr.setBooleanProperty("axesOrientationRasmol", false); +this.vwr.setBooleanProperty("zeroBasedXyzRasmol", false); +this.vwr.setIntProperty("percentVdwAtom", 23); +this.vwr.setIntProperty("bondRadiusMilliAngstroms", 150); +this.vwr.setVdwStr("auto"); +}); +Clazz.defineMethod(c$, "setRasMolDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("defaultColorScheme", "RasMol"); +this.vwr.setBooleanProperty("axesOrientationRasmol", true); +this.vwr.setBooleanProperty("zeroBasedXyzRasmol", true); +this.vwr.setIntProperty("percentVdwAtom", 0); +this.vwr.setIntProperty("bondRadiusMilliAngstroms", 1); +this.vwr.setVdwStr("Rasmol"); +}); +Clazz.defineMethod(c$, "setPyMOLDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("measurementUnits", "ANGSTROMS"); +this.vwr.setBooleanProperty("zoomHeight", true); +}); +c$.getNoCase = Clazz.defineMethod(c$, "getNoCase", +function(saved, name){ +for (var e, $e = saved.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getKey().equalsIgnoreCase(name)) return e.getValue(); + +return null; +}, "java.util.Map,~S"); +Clazz.defineMethod(c$, "listSavedStates", +function(){ +var names = ""; +for (var name, $name = this.saved.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) names += "\n" + name; + +return names; +}); +Clazz.defineMethod(c$, "deleteSavedType", +function(type){ +var e = this.saved.keySet().iterator(); +while (e.hasNext()) if (e.next().startsWith(type)) e.remove(); + +}, "~S"); +Clazz.defineMethod(c$, "deleteSaved", +function(namelike){ +var e = this.saved.keySet().iterator(); +while (e.hasNext()) { +var name = e.next(); +if (name.startsWith(namelike) || name.endsWith("_" + namelike) && name.indexOf("_") == name.lastIndexOf("_" + namelike)) e.remove(); +} +}, "~S"); +Clazz.defineMethod(c$, "saveSelection", +function(saveName, bsSelected){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Selected_"); +return; +}saveName = this.lastSelected = "Selected_" + saveName; +this.saved.put(saveName, JU.BSUtil.copy(bsSelected)); +}, "~S,JU.BS"); +Clazz.defineMethod(c$, "restoreSelection", +function(saveName){ +var name = (saveName.length > 0 ? "Selected_" + saveName : this.lastSelected); +var bsSelected = JV.StateManager.getNoCase(this.saved, name); +if (bsSelected == null) { +this.vwr.selectStatus( new JU.BS(), false, 0, false, false); +return false; +}this.vwr.selectStatus(bsSelected, false, 0, false, false); +return true; +}, "~S"); +Clazz.defineMethod(c$, "saveUnitCell", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Unitcell_"); +return; +}saveName = this.lastUnitcell = "Unitcell_" + saveName; +var uc = this.vwr.getCurrentUnitCell(); +if (uc != null) { +var state = "UNITCELL " + JU.Escape.e(uc.getUnitCellVectors()); +this.saved.put(saveName, "unitcell reset;" + state); +}}, "~S"); +Clazz.defineMethod(c$, "getSavedUnitCell", +function(saveName){ +var name = (saveName.length > 0 ? "Unitcell_" + saveName : this.lastUnitcell); +var ucstate = JV.StateManager.getNoCase(this.saved, name); +return ucstate; +}, "~S"); +Clazz.defineMethod(c$, "restoreUnitCell", +function(saveName){ +var ucstate = this.getSavedUnitCell(saveName); +if (ucstate == null) { +this.vwr.ms.setModelCagePts(-1, null, null); +return false; +}this.vwr.runScript(ucstate); +return true; +}, "~S"); +Clazz.defineMethod(c$, "saveState", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("State_"); +this.clearStateStack(); +return; +}if (saveName.length == 0) { +this.vwr.setBooleanProperty("undoAuto", false); +this.appendState(this.getStack(603984065)); +this.redoStateStack.clear(); +return; +}saveName = this.lastState = "State_" + saveName; +this.saved.put(saveName, this.vwr.getStateInfo()); +}, "~S"); +Clazz.defineMethod(c$, "getSavedState", +function(saveName){ +if (saveName.length == 0) { +var stack = this.getStack(603984065); +return (stack.size() > 0 ? stack.get(stack.size() - 1) : null); +}var name = (saveName.length > 0 ? "State_" + saveName : this.lastState); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz.defineMethod(c$, "popStack", +function(type){ +var stack = this.getStack(type); +var state = (stack.size() > 0 ? stack.removeItemAt(stack.size() - 1) : null); +if (state != null) { +this.appendState(this.getStack(type == 603984065 ? 4139 : 603984065)); +}this.checkStack(this.getStack(603984065)); +return state; +}, "~N"); +Clazz.defineMethod(c$, "appendState", +function(stack){ +this.checkStack(stack); +if (this.maxUndo > 0) stack.addLast(this.vwr.getStateInfo()); +}, "JU.Lst"); +Clazz.defineMethod(c$, "checkStack", +function(stack){ +while (stack.size() > this.maxUndo) stack.removeItemAt(0); + +}, "JU.Lst"); +Clazz.defineMethod(c$, "getStack", +function(type){ +if (this.undoStateStack == null) { +this.undoStateStack = new JU.Lst(); +this.redoStateStack = new JU.Lst(); +}return (type == 603984065 ? this.undoStateStack : this.redoStateStack); +}, "~N"); +Clazz.defineMethod(c$, "clearStateStack", +function(){ +if (this.undoStateStack == null) return; +this.undoStateStack.clear(); +this.redoStateStack.clear(); +}); +Clazz.defineMethod(c$, "saveStructure", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Shape_"); +return; +}saveName = this.lastShape = "Shape_" + saveName; +this.saved.put(saveName, this.vwr.getStructureState()); +}, "~S"); +Clazz.defineMethod(c$, "getSavedStructure", +function(saveName){ +var name = (saveName.length > 0 ? "Shape_" + saveName : this.lastShape); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz.defineMethod(c$, "saveCoordinates", +function(saveName, bsSelected){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Coordinates_"); +return; +}saveName = this.lastCoordinates = "Coordinates_" + saveName; +this.saved.put(saveName, this.vwr.getCoordinateState(bsSelected)); +}, "~S,JU.BS"); +Clazz.defineMethod(c$, "getSavedCoordinates", +function(saveName){ +var name = (saveName.length > 0 ? "Coordinates_" + saveName : this.lastCoordinates); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz.defineMethod(c$, "getOrientation", +function(){ +return new JM.Orientation(this.vwr, false, null); +}); +Clazz.defineMethod(c$, "getSavedOrientationText", +function(saveName){ +var o; +if (saveName != null) { +o = this.getOrientationFor(saveName); +return (o == null ? "" : o.getMoveToText(true)); +}var sb = new JU.SB(); +for (var e, $e = this.saved.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (name.startsWith("Orientation_")) sb.append((e.getValue()).getMoveToText(true)); +} +return sb.toString(); +}, "~S"); +Clazz.defineMethod(c$, "saveScene", +function(saveName, scene){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Scene_"); +return; +}var o = new JV.Scene(scene); +o.saveName = this.lastScene = "Scene_" + saveName; +this.saved.put(o.saveName, o); +}, "~S,java.util.Map"); +Clazz.defineMethod(c$, "restoreScene", +function(saveName, timeSeconds){ +var o = JV.StateManager.getNoCase(this.saved, (saveName.length > 0 ? "Scene_" + saveName : this.lastScene)); +return (o != null && o.restore(this.vwr, timeSeconds)); +}, "~S,~N"); +Clazz.defineMethod(c$, "saveOrientation", +function(saveName, pymolView){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Orientation_"); +return; +}var o = new JM.Orientation(this.vwr, saveName.equalsIgnoreCase("default"), pymolView); +o.saveName = this.lastOrientation = "Orientation_" + saveName; +this.saved.put(o.saveName, o); +}, "~S,~A"); +Clazz.defineMethod(c$, "restoreOrientation", +function(saveName, timeSeconds, isAll){ +var o = this.getOrientationFor(saveName); +return (o != null && o.restore(timeSeconds, isAll)); +}, "~S,~N,~B"); +Clazz.defineMethod(c$, "getOrientationFor", +function(saveName){ +var name = (saveName.length > 0 ? "Orientation_" + saveName : this.lastOrientation); +return JV.StateManager.getNoCase(this.saved, name); +}, "~S"); +Clazz.defineMethod(c$, "saveContext", +function(saveName, context){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Context_"); +return; +}this.saved.put((this.lastContext = "Context_" + saveName), context); +}, "~S,~O"); +Clazz.defineMethod(c$, "getContext", +function(saveName){ +return this.saved.get(saveName.length == 0 ? this.lastContext : "Context_" + saveName); +}, "~S"); +Clazz.defineMethod(c$, "saveBonds", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Bonds_"); +return; +}var b = new JV.Connections(this.vwr); +b.saveName = this.lastConnections = "Bonds_" + saveName; +this.saved.put(b.saveName, b); +}, "~S"); +Clazz.defineMethod(c$, "restoreBonds", +function(saveName){ +this.vwr.clearModelDependentObjects(); +var name = (saveName.length > 0 ? "Bonds_" + saveName : this.lastConnections); +var c = JV.StateManager.getNoCase(this.saved, name); +return (c != null && c.restore()); +}, "~S"); +c$.varClip = Clazz.defineMethod(c$, "varClip", +function(name, sv, nMax){ +if (nMax > 0 && sv.length > nMax) sv = sv.substring(0, nMax) + " #...more (" + sv.length + " bytes -- use SHOW " + name + " or MESSAGE @" + name + " to view)"; +return sv; +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "getUndoMax", +function(){ +return this.maxUndo; +}); +Clazz.defineMethod(c$, "setUndoMax", +function(n){ +this.maxUndo = Math.max(n, 0); +this.checkStack(this.getStack(603984065)); +this.checkStack(this.getStack(4139)); +}, "~N"); +Clazz.defineMethod(c$, "getUndoRedoState", +function(tok){ +return this.popStack(tok); +}, "~N"); +Clazz.defineMethod(c$, "canDo", +function(type){ +return (this.maxUndo > 0 && this.vwr.getBoolean(603979898) && !this.getStack(type).isEmpty()); +}, "~N"); +Clazz.defineMethod(c$, "getUndoInfo", +function(){ +var auto = this.vwr.getBooleanProperty("undoAuto"); +return (this.vwr.getBoolean(603979898) ? "undoAuto=" + auto + (!auto ? "; user stack sizes: UNDO=" + this.getStack(603984065).size() + ", REDO=" + this.getStack(4139).size() : "") : "SET preserveState = FALSE -- undo/redo is disabled"); +}); +var c$ = Clazz.decorateAsClass(function(){ +this.saveName = null; +this.scene = null; +Clazz.instantialize(this, arguments);}, JV, "Scene", null); +Clazz.makeConstructor(c$, +function(scene){ +this.scene = scene; +}, "java.util.Map"); +Clazz.defineMethod(c$, "restore", +function(vwr, timeSeconds){ +var gen = this.scene.get("generator"); +if (gen != null) gen.generateScene(this.scene); +var pv = this.scene.get("pymolView"); +return (pv != null && vwr.tm.moveToPyMOL(vwr.eval, timeSeconds, pv)); +}, "JV.Viewer,~N"); +var c$ = Clazz.decorateAsClass(function(){ +this.saveName = null; +this.bondCount = 0; +this.connections = null; +this.vwr = null; +Clazz.instantialize(this, arguments);}, JV, "Connections", null); +Clazz.makeConstructor(c$, +function(vwr){ +var modelSet = vwr.ms; +if (modelSet == null) return; +this.vwr = vwr; +this.bondCount = modelSet.bondCount; +this.connections = new Array(this.bondCount + 1); +var bonds = modelSet.bo; +for (var i = this.bondCount; --i >= 0; ) { +var b = bonds[i]; +this.connections[i] = new JV.Connection(b.atom1.i, b.atom2.i, b.mad, b.colix, b.order, b.getEnergy(), b.shapeVisibilityFlags); +} +}, "JV.Viewer"); +Clazz.defineMethod(c$, "restore", +function(){ +var modelSet = this.vwr.ms; +if (modelSet == null) return false; +modelSet.deleteAllBonds(); +for (var i = this.bondCount; --i >= 0; ) { +var c = this.connections[i]; +var ac = modelSet.ac; +if (c.atomIndex1 >= ac || c.atomIndex2 >= ac) continue; +var b = modelSet.bondAtoms(modelSet.at[c.atomIndex1], modelSet.at[c.atomIndex2], c.order, c.mad, null, c.energy, false, true); +b.colix = c.colix; +b.shapeVisibilityFlags = c.shapeVisibilityFlags; +} +for (var i = modelSet.bondCount; --i >= 0; ) modelSet.bo[i].index = i; + +this.vwr.setShapeProperty(1, "reportAll", null); +return true; +}); +var c$ = Clazz.decorateAsClass(function(){ +this.atomIndex1 = 0; +this.atomIndex2 = 0; +this.mad = 0; +this.colix = 0; +this.order = 0; +this.energy = 0; +this.shapeVisibilityFlags = 0; +Clazz.instantialize(this, arguments);}, JV, "Connection", null); +Clazz.makeConstructor(c$, +function(atom1, atom2, mad, colix, order, energy, shapeVisibilityFlags){ +this.atomIndex1 = atom1; +this.atomIndex2 = atom2; +this.mad = mad; +this.colix = colix; +this.order = order; +this.energy = energy; +this.shapeVisibilityFlags = shapeVisibilityFlags; +}, "~N,~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/StatusManager.js b/config/plugins/visualizations/jmol/static/j2s/JV/StatusManager.js new file mode 100755 index 000000000000..765e34874b17 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/StatusManager.js @@ -0,0 +1,618 @@ +Clazz.declarePackage("JV"); +Clazz.load(["java.util.Hashtable"], "JV.StatusManager", ["JU.Lst", "$.PT", "J.api.Interface", "J.c.CBK", "JS.SV", "JU.BSUtil", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.jsl = null; +this.cbl = null; +this.statusList = ""; +this.allowStatusReporting = false; +this.messageQueue = null; +this.statusPtr = 0; +this.jmolScriptCallbacks = null; +this.imageMap = null; +this.echoing = false; +this.minSyncRepeatMs = 100; +this.syncingScripts = false; +this.syncingMouse = false; +this.drivingSync = false; +this.isSynced = false; +this.syncDisabled = false; +this.stereoSync = false; +this.qualityJPG = -1; +this.qualityPNG = -1; +this.imageType = null; +this.audios = null; +Clazz.instantialize(this, arguments);}, JV, "StatusManager", null); +Clazz.prepareFields (c$, function(){ +this.messageQueue = new java.util.Hashtable(); +this.jmolScriptCallbacks = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz.defineMethod(c$, "recordStatus", +function(statusName){ +return (this.allowStatusReporting && this.statusList.length > 0 && (this.statusList.equals("all") || this.statusList.indexOf(statusName) >= 0)); +}, "~S"); +Clazz.defineMethod(c$, "setStatusChanged", +function(statusName, intInfo, statusInfo, isReplace){ +if (!this.recordStatus(statusName)) return; +var msgRecord = new JU.Lst(); +msgRecord.addLast(Integer.$valueOf(++this.statusPtr)); +msgRecord.addLast(statusName); +msgRecord.addLast(Integer.$valueOf(intInfo)); +msgRecord.addLast(statusInfo); +var statusRecordSet = (isReplace ? null : this.messageQueue.get(statusName)); +if (statusRecordSet == null) this.messageQueue.put(statusName, statusRecordSet = new JU.Lst()); + else if (statusRecordSet.size() == JV.StatusManager.MAXIMUM_QUEUE_LENGTH) statusRecordSet.removeItemAt(0); +statusRecordSet.addLast(msgRecord); +}, "~S,~N,~O,~B"); +Clazz.defineMethod(c$, "getStatusChanged", +function(newStatusList){ +var isRemove = (newStatusList.length > 0 && newStatusList.charAt(0) == '-'); +var isAdd = (newStatusList.length > 0 && newStatusList.charAt(0) == '+'); +var getList = false; +if (isRemove) { +this.statusList = JU.PT.rep(this.statusList, newStatusList.substring(1, newStatusList.length), ""); +} else { +newStatusList = JU.PT.rep(newStatusList, "+", ""); +if (this.statusList.equals(newStatusList) || isAdd && this.statusList.indexOf(newStatusList) >= 0) { +getList = true; +} else { +if (!isAdd) this.statusList = ""; +this.statusList += newStatusList; +if (JU.Logger.debugging) JU.Logger.debug("StatusManager messageQueue = " + this.statusList); +}}var list = new JU.Lst(); +if (getList) for (var e, $e = this.messageQueue.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) list.addLast(e.getValue()); + +this.messageQueue.clear(); +this.statusPtr = 0; +return list; +}, "~S"); +Clazz.defineMethod(c$, "setCallbackFunction", +function(callbackType, callbackObject){ +var cbk = J.c.CBK.getCallback(callbackType); +var callbackFunction = ((typeof(callbackObject)=='string') ? callbackObject : null); +if (cbk != null) { +var callback = J.c.CBK.getCallback(callbackType).name(); +JU.Logger.info("StatusManager " + callback + "callback set f=" + callbackFunction); +var isSync = (callbackFunction != null && callbackFunction.startsWith("SYNC:")); +if (isSync) { +if (callbackFunction.toLowerCase().trim().equals("sync:off")) { +this.jmolScriptCallbacks.remove("SYNC:" + callback); +JU.Logger.info("SYNC callback for " + callback + " deactivated"); +} else { +this.jmolScriptCallbacks.put("SYNC:" + callback, "_"); +JU.Logger.info("SYNC callback for " + callback + " activated"); +return; +}} else { +var lc = ""; +var pt = (callbackFunction == null ? 0 : (lc = callbackFunction.toLowerCase()).startsWith("script:") ? 7 : lc.startsWith("jmolscript:") ? 11 : 0); +if (pt == 0) { +if (callbackObject == null) this.jmolScriptCallbacks.remove(callback); +} else { +this.jmolScriptCallbacks.put(callback, callbackFunction.substring(pt).trim()); +return; +}}}if (this.cbl != null) this.cbl.setCallbackFunction(callbackType, callbackObject); +}, "~S,~O"); +Clazz.defineMethod(c$, "notifyEnabled", +function(type){ +return this.cbl != null && this.cbl.notifyEnabled(type); +}, "J.c.CBK"); +Clazz.defineMethod(c$, "getJmolScriptCallback", +function(callback){ +return this.jmolScriptCallbacks.get(callback.name()); +}, "J.c.CBK"); +Clazz.defineMethod(c$, "fireJmolScriptCallback", +function(isEnabled, callback, o, doWait){ +var name = callback.name(); +if (o[0] != null) { +var params = new Array(o.length); +System.arraycopy(o, 0, params, 0, o.length); +var cmd = "try{\n" + params[0] + "\n}"; +params[0] = name; +this.vwr.evalCallback(cmd, params, doWait); +}if (this.jmolScriptCallbacks.containsKey("SYNC:" + callback.name())) o[0] = "SYNC"; +if (isEnabled) { +this.cbl.notifyCallback(callback, o); +}}, "~B,J.c.CBK,~A,~B"); +Clazz.defineMethod(c$, "setStatusAppletReady", +function(htmlName, isReady){ +var sJmol = (isReady ? this.getJmolScriptCallback(J.c.CBK.APPLETREADY) : null); +var isEnabled = this.notifyEnabled(J.c.CBK.APPLETREADY); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.APPLETREADY, Clazz.newArray(-1, [sJmol, htmlName, Boolean.$valueOf(isReady), null]), true); +}, "~S,~B"); +Clazz.defineMethod(c$, "setStatusAtomMoved", +function(bsMoved){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.ATOMMOVED); +this.setStatusChanged("atomMoved", -1, bsMoved, false); +var isEnabled = this.notifyEnabled(J.c.CBK.ATOMMOVED); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ATOMMOVED, Clazz.newArray(-1, [sJmol, bsMoved, Integer.$valueOf(bsMoved.cardinality())]), true); +}, "JU.BS"); +Clazz.defineMethod(c$, "setStatusSelect", +function(atoms){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.SELECT); +this.setStatusChanged("select", -1, atoms, false); +var isEnabled = this.notifyEnabled(J.c.CBK.SELECT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.SELECT, Clazz.newArray(-1, [sJmol, atoms, Integer.$valueOf(atoms.cardinality()), Integer.$valueOf(atoms.nextSetBit(0)), Integer.$valueOf(atoms.length())]), true); +}, "JU.BS"); +Clazz.defineMethod(c$, "setStatusStructureModified", +function(atomIndex, modelIndex, mode, msg, n, bsAtoms){ +if (atomIndex >= 0 && bsAtoms == null) bsAtoms = JU.BSUtil.newAndSetBit(atomIndex); +var sJmol = this.getJmolScriptCallback(J.c.CBK.STRUCTUREMODIFIED); +var isEnabled = this.notifyEnabled(J.c.CBK.STRUCTUREMODIFIED); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.STRUCTUREMODIFIED, Clazz.newArray(-1, [sJmol, Integer.$valueOf(mode), Integer.$valueOf(atomIndex), Integer.$valueOf(modelIndex), msg, Integer.$valueOf(n), bsAtoms]), true); +}, "~N,~N,~N,~S,~N,JU.BS"); +Clazz.defineMethod(c$, "setStatusAtomPicked", +function(atomIndex, strInfo, map){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.PICK); +JU.Logger.info("setStatusAtomPicked(" + atomIndex + "," + strInfo + ")"); +this.setStatusChanged("atomPicked", atomIndex, strInfo, false); +var isEnabled = this.notifyEnabled(J.c.CBK.PICK); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.PICK, Clazz.newArray(-1, [sJmol, strInfo, Integer.$valueOf(atomIndex), map]), true); +}, "~N,~S,java.util.Map"); +Clazz.defineMethod(c$, "setStatusClicked", +function(x, y, action, clickCount, mode){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.CLICK); +var m = Clazz.newIntArray(-1, [action, mode]); +var isEnabled = this.notifyEnabled(J.c.CBK.CLICK); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.CLICK, Clazz.newArray(-1, [sJmol, Integer.$valueOf(x), Integer.$valueOf(y), Integer.$valueOf(action), Integer.$valueOf(clickCount), m]), true); +return m[0]; +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setStatusResized", +function(width, height){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.RESIZE); +var isEnabled = this.notifyEnabled(J.c.CBK.RESIZE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.RESIZE, Clazz.newArray(-1, [sJmol, Integer.$valueOf(width), Integer.$valueOf(height)]), true); +}, "~N,~N"); +Clazz.defineMethod(c$, "haveHoverCallback", +function(){ +return (this.jmolScriptCallbacks.containsKey(J.c.CBK.HOVER.name()) || this.notifyEnabled(J.c.CBK.HOVER)); +}); +Clazz.defineMethod(c$, "setStatusAtomHovered", +function(iatom, strInfo){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.HOVER); +var isEnabled = this.notifyEnabled(J.c.CBK.HOVER); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.HOVER, Clazz.newArray(-1, [sJmol, strInfo, Integer.$valueOf(iatom)]), true); +}, "~N,~S"); +Clazz.defineMethod(c$, "setStatusObjectHovered", +function(id, strInfo, pt){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.HOVER); +var isEnabled = this.notifyEnabled(J.c.CBK.HOVER); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.HOVER, Clazz.newArray(-1, [sJmol, strInfo, Integer.$valueOf(-1), id, Float.$valueOf(pt.x), Float.$valueOf(pt.y), Float.$valueOf(pt.z)]), true); +}, "~S,~S,JU.T3"); +Clazz.defineMethod(c$, "showImage", +function(title, image){ +var a = JU.PT.split(title, "\1"); +title = (a.length < 2 ? "Jmol" : a.length < 3 || a[2].equals("null") ? a[1].substring(a[1].lastIndexOf("/") + 1) : a[2]); +var sJmol = this.getJmolScriptCallback(J.c.CBK.IMAGE); +var isEnabled = this.notifyEnabled(J.c.CBK.IMAGE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.IMAGE, Clazz.newArray(-1, [sJmol, title, image]), true); +if (Boolean.TRUE.equals(image)) { +if (this.imageMap == null) return; +var lst = new JU.Lst(); +for (var key, $key = this.imageMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) lst.addLast(key); + +for (var i = lst.size(); --i >= 0; ) this.imageMap.get(lst.get(i)).closeMe(); + +return; +}if (this.imageMap == null) this.imageMap = new java.util.Hashtable(); +var d = this.imageMap.get(title); +if (Boolean.FALSE.equals(image)) { +if (d != null) d.closeMe(); +return; +}if (d == null && image != null) d = this.vwr.apiPlatform.getImageDialog(title, this.imageMap); +if (d == null) return; +if (image == null) d.closeMe(); + else d.setImage(image); +}, "~S,~O"); +Clazz.defineMethod(c$, "setFileLoadStatus", +function(fullPathName, fileName, modelName, errorMsg, ptLoad, doCallback, isAsync){ +if (fullPathName == null && "resetUndo".equals(fileName)) { +var appConsole = this.vwr.getProperty("DATA_API", "getAppConsole", null); +if (appConsole != null) appConsole.zap(); +fileName = this.vwr.getZapName(); +}this.setStatusChanged("fileLoaded", ptLoad, fullPathName, false); +if (errorMsg != null) this.setStatusChanged("fileLoadError", ptLoad, errorMsg, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.LOADSTRUCT); +var isEnabled = doCallback && this.notifyEnabled(J.c.CBK.LOADSTRUCT); +if (isEnabled || sJmol != null) { +var name = this.vwr.getP("_smilesString"); +if (name.length != 0) fileName = name; +this.fireJmolScriptCallback(isEnabled, J.c.CBK.LOADSTRUCT, Clazz.newArray(-1, [sJmol, fullPathName, fileName, modelName, errorMsg, Integer.$valueOf(ptLoad), this.vwr.getP("_modelNumber"), this.vwr.getModelNumberDotted(this.vwr.ms.mc - 1), isAsync]), true); +}}, "~S,~S,~S,~S,~N,~B,Boolean"); +Clazz.defineMethod(c$, "setStatusModelKit", +function(istate){ +var state = (istate == 1 ? "ON" : "OFF"); +this.setStatusChanged("modelkit", istate, state, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.MODELKIT); +var isEnabled = this.notifyEnabled(J.c.CBK.MODELKIT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MODELKIT, Clazz.newArray(-1, [sJmol, state]), true); +}, "~N"); +Clazz.defineMethod(c$, "setStatusFrameChanged", +function(fileNo, modelNo, firstNo, lastNo, currentFrame, currentMorphModel, entryName){ +if (this.vwr.ms == null) return; +var animating = this.vwr.am.animationOn; +var frameNo = (animating ? -2 - currentFrame : currentFrame); +this.setStatusChanged("frameChanged", frameNo, (currentFrame >= 0 ? this.vwr.getModelNumberDotted(currentFrame) : ""), false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.ANIMFRAME); +var isEnabled = this.notifyEnabled(J.c.CBK.ANIMFRAME); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ANIMFRAME, Clazz.newArray(-1, [sJmol, Clazz.newIntArray(-1, [frameNo, fileNo, modelNo, firstNo, lastNo, currentFrame]), entryName, Float.$valueOf(currentMorphModel)]), false); +if (!animating && !this.vwr.isJSNoAWT) this.vwr.checkMenuUpdate(); +}, "~N,~N,~N,~N,~N,~N,~S"); +Clazz.defineMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +this.setStatusChanged("dragDrop", 0, "", false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.DRAGDROP); +var isEnabled = this.notifyEnabled(J.c.CBK.DRAGDROP); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.DRAGDROP, Clazz.newArray(-1, [sJmol, Integer.$valueOf(mode), Integer.$valueOf(x), Integer.$valueOf(y), fileName, retType]), true); +return isEnabled; +}, "~N,~N,~N,~S,~A"); +Clazz.defineMethod(c$, "setScriptEcho", +function(strEcho, isScriptQueued){ +if (strEcho == null || this.echoing) return; +this.echoing = true; +this.setStatusChanged("scriptEcho", 0, strEcho, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.ECHO); +var isEnabled = this.notifyEnabled(J.c.CBK.ECHO); +if (isEnabled || sJmol != null) { +this.fireJmolScriptCallback(isEnabled, J.c.CBK.ECHO, Clazz.newArray(-1, [sJmol, strEcho, Integer.$valueOf(isScriptQueued ? 1 : 0)]), true); +}this.echoing = false; +}, "~S,~B"); +Clazz.defineMethod(c$, "setStatusMeasuring", +function(status, intInfo, strMeasure, value){ +this.setStatusChanged(status, intInfo, strMeasure, false); +var sJmol = null; +if (status.equals("measureCompleted")) { +JU.Logger.info("measurement[" + intInfo + "] = " + strMeasure); +sJmol = this.getJmolScriptCallback(J.c.CBK.MEASURE); +} else if (status.equals("measurePicked")) { +this.setStatusChanged("measurePicked", intInfo, strMeasure, false); +JU.Logger.info("measurePicked " + intInfo + " " + strMeasure); +}var isEnabled = this.notifyEnabled(J.c.CBK.MEASURE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MEASURE, Clazz.newArray(-1, [sJmol, strMeasure, Integer.$valueOf(intInfo), status, Float.$valueOf(value)]), true); +}, "~S,~N,~S,~N"); +Clazz.defineMethod(c$, "notifyError", +function(errType, errMsg, errMsgUntranslated){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.ERROR); +var isEnabled = this.notifyEnabled(J.c.CBK.ERROR); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ERROR, Clazz.newArray(-1, [sJmol, errType, errMsg, this.vwr.getShapeErrorState(), errMsgUntranslated]), true); +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "notifyMinimizationStatus", +function(minStatus, minSteps, minEnergy, minEnergyDiff, ff){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.MINIMIZATION); +var isEnabled = this.notifyEnabled(J.c.CBK.MINIMIZATION); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MINIMIZATION, Clazz.newArray(-1, [sJmol, minStatus, minSteps, minEnergy, minEnergyDiff, ff]), true); +}, "~S,Integer,Float,Float,~S"); +Clazz.defineMethod(c$, "setScriptStatus", +function(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated){ +if (msWalltime < -1) { +var iscript = -2 - msWalltime; +this.setStatusChanged("scriptStarted", iscript, statusMessage, false); +strStatus = "script " + iscript + " started"; +} else if (strStatus == null) { +return; +}var sJmol = (msWalltime == 0 ? this.getJmolScriptCallback(J.c.CBK.SCRIPT) : null); +var isScriptCompletion = (strStatus === "Script completed"); +if (this.recordStatus("script")) { +var isError = (strErrorMessageUntranslated != null); +this.setStatusChanged((isError ? "scriptError" : "scriptStatus"), 0, strStatus, false); +if (isError || isScriptCompletion) this.setStatusChanged("scriptTerminated", 1, "Jmol script terminated" + (isError ? " unsuccessfully: " + strStatus : " successfully"), false); +}if (isScriptCompletion && this.vwr.getBoolean(603979879) && this.vwr.getBoolean(603979825)) strStatus = this.vwr.getChimeMessenger().scriptCompleted(this, statusMessage, strErrorMessageUntranslated); +var data = Clazz.newArray(-1, [sJmol, strStatus, statusMessage, Integer.$valueOf(isScriptCompletion ? -1 : msWalltime), strErrorMessageUntranslated]); +var isEnabled = this.notifyEnabled(J.c.CBK.SCRIPT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.SCRIPT, data, true); +this.processScript(data); +}, "~S,~S,~N,~S"); +Clazz.defineMethod(c$, "processScript", +function(data){ +var msWalltime = (data[3]).intValue(); +this.vwr.notifyScriptEditor(msWalltime, data); +if (msWalltime == 0) this.vwr.sendConsoleMessage(data[1] == null ? null : data[1].toString()); +}, "~A"); +Clazz.defineMethod(c$, "doSync", +function(){ +return (this.isSynced && this.drivingSync && !this.syncDisabled); +}); +Clazz.defineMethod(c$, "setSync", +function(mouseCommand){ +if (this.syncingMouse) { +if (mouseCommand != null) { +var sJmol = this.getJmolScriptCallback(J.c.CBK.SYNC); +if (sJmol != null) this.fireJmolScriptCallback(false, J.c.CBK.SYNC, Clazz.newArray(-1, [sJmol, mouseCommand, "sending mouseSync"]), true); +this.syncSend(mouseCommand, "*", 0); +}} else if (!this.syncingScripts) this.syncSend("!" + this.vwr.tm.getMoveToText(this.minSyncRepeatMs / 1000, false), "*", 0); +}, "~S"); +Clazz.defineMethod(c$, "setSyncDriver", +function(syncMode){ +if (this.stereoSync && syncMode != 4) { +this.syncSend("SET_GRAPHICS_OFF", "*", 0); +this.stereoSync = false; +}switch (syncMode) { +case 4: +if (!this.syncDisabled) return; +this.syncDisabled = false; +break; +case 3: +this.syncDisabled = true; +break; +case 5: +this.drivingSync = true; +this.isSynced = true; +this.stereoSync = true; +break; +case 1: +this.drivingSync = true; +this.isSynced = true; +break; +case 2: +this.drivingSync = false; +this.isSynced = true; +break; +default: +this.drivingSync = false; +this.isSynced = false; +} +if (JU.Logger.debugging) { +JU.Logger.debug(this.vwr.appletName + " sync mode=" + syncMode + "; synced? " + this.isSynced + "; driving? " + this.drivingSync + "; disabled? " + this.syncDisabled); +}}, "~N"); +Clazz.defineMethod(c$, "syncSend", +function(script, appletNameOrProp, port){ +if (port != 0 || this.notifyEnabled(J.c.CBK.SYNC)) { +var o = Clazz.newArray(-1, [null, script, appletNameOrProp, Integer.$valueOf(port)]); +if (this.cbl != null) this.cbl.notifyCallback(J.c.CBK.SYNC, o); +return o[0]; +}return null; +}, "~S,~O,~N"); +Clazz.defineMethod(c$, "processService", +function(info){ +var s = info.get("service"); +if (s == null) return null; +if (Clazz.instanceOf(s,"JS.SV")) { +var m = new java.util.Hashtable(); +for (var e, $e = info.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) m.put(e.getKey(), JS.SV.oValue(e.getValue())); + +info = m; +}if (this.notifyEnabled(J.c.CBK.SERVICE)) this.cbl.notifyCallback(J.c.CBK.SERVICE, Clazz.newArray(-1, [null, info])); +return info; +}, "java.util.Map"); +Clazz.defineMethod(c$, "getSyncMode", +function(){ +return (!this.isSynced ? 0 : this.drivingSync ? 1 : 2); +}); +Clazz.defineMethod(c$, "showUrl", +function(urlString){ +if (this.jsl != null) this.jsl.showUrl(urlString); +}, "~S"); +Clazz.defineMethod(c$, "clearConsole", +function(){ +this.vwr.sendConsoleMessage(null); +if (this.jsl != null) this.cbl.notifyCallback(J.c.CBK.MESSAGE, null); +}); +Clazz.defineMethod(c$, "functionXY", +function(functionName, nX, nY){ +return (this.jsl == null ? Clazz.newFloatArray (Math.abs(nX), Math.abs(nY), 0) : this.jsl.functionXY(functionName, nX, nY)); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "functionXYZ", +function(functionName, nX, nY, nZ){ +return (this.jsl == null ? Clazz.newFloatArray (Math.abs(nX), Math.abs(nY), Math.abs(nY), 0) : this.jsl.functionXYZ(functionName, nX, nY, nZ)); +}, "~S,~N,~N,~N"); +Clazz.defineMethod(c$, "jsEval", +function(strEval){ +return (this.jsl == null ? "" : this.jsl.eval(strEval)); +}, "~S"); +Clazz.defineMethod(c$, "createImage", +function(fileNameOrError, type, text, bytes, quality){ +return (this.jsl == null ? null : this.jsl.createImage(fileNameOrError, type, text == null ? bytes : text, quality)); +}, "~S,~S,~S,~A,~N"); +Clazz.defineMethod(c$, "getRegistryInfo", +function(){ +return (this.jsl == null ? null : this.jsl.getRegistryInfo()); +}); +Clazz.defineMethod(c$, "dialogAsk", +function(type, fileName, params){ +var isImage = type.equals("Save Image"); +var sd = J.api.Interface.getOption("dialog.Dialog", this.vwr, "status"); +if (sd == null) return null; +sd.setupUI(false); +if (isImage) sd.setImageInfo(this.qualityJPG, this.qualityPNG, this.imageType); +var outputFileName = sd.getFileNameFromDialog(this.vwr, type, fileName); +if (isImage && outputFileName != null) { +this.qualityJPG = sd.getQuality("JPG"); +this.qualityPNG = sd.getQuality("PNG"); +var sType = sd.getType(); +if (params != null) { +params.put("qualityJPG", Integer.$valueOf(this.qualityJPG)); +params.put("qualityPNG", Integer.$valueOf(this.qualityPNG)); +if (sType != null) params.put("dialogImageType", sType); +}if (sType != null) this.imageType = sType; +}return outputFileName; +}, "~S,~S,java.util.Map"); +Clazz.defineMethod(c$, "getJspecViewProperties", +function(myParam){ +return (this.jsl == null ? null : this.jsl.getJSpecViewProperty(myParam == null || myParam.length == 0 ? "" : ":" + myParam)); +}, "~S"); +Clazz.defineMethod(c$, "resizeInnerPanel", +function(width, height){ +return (this.jsl == null || width == this.vwr.getScreenWidth() && height == this.vwr.getScreenHeight() ? Clazz.newIntArray(-1, [width, height]) : this.jsl.resizeInnerPanel("preferredWidthHeight " + width + " " + height + ";")); +}, "~N,~N"); +Clazz.defineMethod(c$, "resizeInnerPanelString", +function(data){ +if (this.jsl != null) this.jsl.resizeInnerPanel(data); +}, "~S"); +Clazz.defineMethod(c$, "registerAudio", +function(id, htParams){ +this.stopAudio(id); +if (this.audios == null) this.audios = new java.util.Hashtable(); +if (htParams == null) this.audios.remove(id); + else this.audios.put(id, htParams.get("audioPlayer")); +}, "~S,java.util.Map"); +Clazz.defineMethod(c$, "stopAudio", +function(id){ +if (this.audios == null) return; +var player = this.audios.get(id); +if (player != null) player.action("kill"); +}, "~S"); +Clazz.defineMethod(c$, "playAudio", +function(htParams){ +if (!this.vwr.getBoolean(603979797)) { +if (htParams == null) return; +htParams.put("status", "close"); +JU.Logger.info("allowAudio is set false"); +this.notifyAudioStatus(htParams); +return; +}try { +var action = (htParams == null ? "close" : htParams.get("action")); +var id = (htParams == null ? null : htParams.get("id")); +if (action != null && action.length > 0) { +if (id == null || id.length == 0) { +if (this.audios == null || this.audios.isEmpty()) return; +if (action.equals("close")) { +for (var key, $key = this.audios.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var player = this.audios.remove(key); +player.action("close"); +} +}return; +}var player = this.audios.get(id); +if (player != null) { +player.action(action); +return; +}}try { +(J.api.Interface.getInterface("JU.JmolAudio", this.vwr, "script")).playAudio(this.vwr, htParams); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.info(e.getMessage()); +} else { +throw e; +} +} +} catch (t) { +} +}, "java.util.Map"); +Clazz.defineMethod(c$, "notifyAudioStatus", +function(htParams){ +var status = htParams.get("status"); +var script = htParams.get(status); +if (script != null) this.vwr.script(script); +if (status === "ended") this.registerAudio(htParams.get("id"), null); +var sJmol = this.getJmolScriptCallback(J.c.CBK.AUDIO); +var isEnabled = this.notifyEnabled(J.c.CBK.AUDIO); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.AUDIO, Clazz.newArray(-1, [sJmol, htParams, status]), true); +}, "java.util.Map"); +Clazz.defineMethod(c$, "syncScript", +function(script, applet, port){ +if ("GET_GRAPHICS".equalsIgnoreCase(script)) { +this.setSyncDriver(5); +this.syncSend(script, applet, 0); +this.vwr.setBooleanProperty("_syncMouse", false); +this.vwr.setBooleanProperty("_syncScript", false); +return; +}if ("=".equals(applet)) { +applet = "~"; +this.setSyncDriver(2); +}var disableSend = "~".equals(applet); +if (port > 0 || !disableSend && !".".equals(applet)) { +this.syncSend(script, applet, port); +if (!"*".equals(applet) || script.startsWith("{")) return; +}if (script.equalsIgnoreCase("on") || script.equalsIgnoreCase("true")) { +this.setSyncDriver(1); +return; +}if (script.equalsIgnoreCase("off") || script.equalsIgnoreCase("false")) { +this.setSyncDriver(0); +return; +}if (script.equalsIgnoreCase("slave")) { +this.setSyncDriver(2); +return; +}var syncMode = this.getSyncMode(); +if (syncMode == 0) return; +if (syncMode != 1) disableSend = false; +if (JU.Logger.debugging) JU.Logger.debug(this.vwr.htmlName + " syncing with script: " + script); +if (disableSend) this.setSyncDriver(3); +if (script.indexOf("Mouse: ") != 0) { +var serviceMode = JV.JC.getServiceCommand(script); +switch (serviceMode) { +case 70: +case 42: +case 49: +case 56: +case 63: +this.syncSend(script, ".", port); +return; +case -1: +break; +case 0: +case 77: +case 28: +case 35: +if (disableSend) return; +case 21: +case 7: +case 14: +if ((script = this.vwr.getJSV().processSync(script, serviceMode)) == null) return; +} +this.vwr.evalStringQuietSync(script, true, false); +return; +}this.mouseScript(script); +if (disableSend) this.vwr.setSyncDriver(4); +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "mouseScript", +function(script){ +var tokens = JU.PT.getTokens(script); +var key = tokens[1]; +try { +key = (key.toLowerCase() + "...............").substring(0, 15); +switch (("zoombyfactor...zoomby.........rotatezby......rotatexyby.....translatexyby..rotatemolecule.spinxyby.......rotatearcball..").indexOf(key)) { +case 0: +switch (tokens.length) { +case 3: +this.vwr.zoomByFactor(JU.PT.parseFloat(tokens[2]), 2147483647, 2147483647); +return; +case 5: +this.vwr.zoomByFactor(JU.PT.parseFloat(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseInt(tokens[4])); +return; +} +break; +case 15: +switch (tokens.length) { +case 3: +this.vwr.zoomBy(JU.PT.parseInt(tokens[2])); +return; +} +break; +case 30: +switch (tokens.length) { +case 3: +this.vwr.rotateZBy(JU.PT.parseInt(tokens[2]), 2147483647, 2147483647); +return; +case 5: +this.vwr.rotateZBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseInt(tokens[4])); +} +break; +case 45: +this.vwr.rotateXYBy(JU.PT.parseFloat(tokens[2]), JU.PT.parseFloat(tokens[3])); +return; +case 60: +this.vwr.translateXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3])); +return; +case 75: +this.vwr.rotateSelected(JU.PT.parseFloat(tokens[2]), JU.PT.parseFloat(tokens[3]), null); +return; +case 90: +this.vwr.spinXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseFloat(tokens[4])); +return; +case 105: +this.vwr.rotateXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3])); +return; +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.vwr.showString("error reading SYNC command: " + script, false); +}, "~S"); +c$.MAXIMUM_QUEUE_LENGTH = 16; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/TransformManager.js b/config/plugins/visualizations/jmol/static/j2s/JV/TransformManager.js new file mode 100755 index 000000000000..37d0b0ced090 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/TransformManager.js @@ -0,0 +1,1714 @@ +Clazz.declarePackage("JV"); +Clazz.load(["JU.A4", "$.M3", "$.M4", "$.P3", "$.P3i", "$.V3", "J.c.STER", "JU.Point3fi"], "JV.TransformManager", ["java.util.Hashtable", "JU.P4", "$.Quat", "$.SB", "J.api.Interface", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.vwr = null; +this.movetoThread = null; +this.vibrationThread = null; +this.spinThread = null; +this.perspectiveModel = 11; +this.cameraScaleFactor = 0; +this.referencePlaneOffset = 0; +this.aperatureAngle = 0; +this.cameraDistanceFromCenter = 0; +this.modelCenterOffset = 0; +this.modelRadius = 0; +this.modelRadiusPixels = 0; +this.navigationCenter = null; +this.navigationOffset = null; +this.navigationShiftXY = null; +this.navigationDepthPercent = 0; +this.matrixTemp = null; +this.vectorTemp = null; +this.haveNotifiedNaN = false; +this.spinX = 0; +this.spinY = 30; +this.spinZ = 0; +this.spinFps = 30; +this.navX = 0; +this.navY = 0; +this.navZ = 0; +this.navFps = NaN; +this.isSpinInternal = false; +this.isSpinFixed = false; +this.isSpinSelected = false; +this.doTransform4D = false; +this.fixedRotationOffset = null; +this.fixedRotationCenter = null; +this.perspectiveOffset = null; +this.perspectiveShiftXY = null; +this.rotationCenterDefault = null; +this.rotationRadiusDefault = 0; +this.fixedRotationAxis = null; +this.internalRotationAxis = null; +this.internalTranslation = null; +this.internalRotationCenter = null; +this.internalRotationAngle = 0; +this.matrixRotate = null; +this.matrixTemp3 = null; +this.matrixTemp4 = null; +this.axisangleT = null; +this.vectorT = null; +this.vectorT2 = null; +this.pointT2 = null; +this.rotationAxis = null; +this.rotationRate = 0; +this.fixedTranslation = null; +this.camera = null; +this.cameraSetting = null; +this.xTranslationFraction = 0.5; +this.yTranslationFraction = 0.5; +this.prevZoomSetting = 0; +this.previousX = 0; +this.previousY = 0; +this.zoomEnabled = true; +this.zmPct = 100; +this.zmPctSet = 100; +this.zoomRatio = 0; +this.slabEnabled = false; +this.zShadeEnabled = false; +this.internalSlab = false; +this.slabPercentSetting = 0; +this.depthPercentSetting = 0; +this.slabValue = 0; +this.depthValue = 0; +this.zSlabPercentSetting = 50; +this.zDepthPercentSetting = 0; +this.zSlabPoint = null; +this.zSlabValue = 0; +this.zDepthValue = 0; +this.slabRange = 0; +this.slabPlane = null; +this.depthPlane = null; +this.perspectiveDepth = true; +this.scale3D = false; +this.cameraDepth = 3; +this.cameraDepthSetting = 3; +this.visualRangeAngstroms = 0; +this.cameraDistance = 1000; +this.width = 0; +this.height = 0; +this.screenPixelCount = 0; +this.scalePixelsPerAngstrom = 0; +this.scaleDefaultPixelsPerAngstrom = 0; +this.scale3DAngstromsPerInch = 0; +this.antialias = false; +this.useZoomLarge = false; +this.zoomHeight = false; +this.screenWidth = 0; +this.screenHeight = 0; +this.matrixTransform = null; +this.matrixTransformInv = null; +this.fScrPt = null; +this.iScrPt = null; +this.ptVibTemp = null; +this.navigating = false; +this.mode = 0; +this.defaultMode = 0; +this.untransformedPoint = null; +this.ptTest1 = null; +this.ptTest2 = null; +this.ptTest3 = null; +this.aaTest1 = null; +this.matrixTest = null; +this.spinOn = false; +this.navOn = false; +this.spinIsGesture = false; +this.vibrationOn = false; +this.vibrationPeriod = 0; +this.vibrationPeriodMs = 0; +this.vibrationScale = 0; +this.vibrationT = null; +this.stereoMode = null; +this.stereoColors = null; +this.stereoDoubleDTI = false; +this.stereoDoubleFull = false; +this.stereoDegrees = NaN; +this.stereoRadians = 0; +this.stereoFrame = false; +this.matrixStereo = null; +this.windowCentered = false; +this.frameOffset = null; +this.frameOffsets = null; +this.bsFrameOffsets = null; +this.bsSelectedAtoms = null; +this.ptOffset = null; +this.navMode = 1; +this.zoomFactor = 3.4028235E38; +this.navigationSlabOffset = 0; +this.nav = null; +Clazz.instantialize(this, arguments);}, JV, "TransformManager", null); +Clazz.prepareFields (c$, function(){ +this.navigationCenter = new JU.P3(); +this.navigationOffset = new JU.P3(); +this.navigationShiftXY = new JU.P3(); +this.matrixTemp = new JU.M4(); +this.vectorTemp = new JU.V3(); +this.fixedRotationOffset = new JU.P3(); +this.fixedRotationCenter = new JU.P3(); +this.perspectiveOffset = new JU.P3(); +this.perspectiveShiftXY = new JU.P3(); +this.rotationCenterDefault = new JU.P3(); +this.fixedRotationAxis = new JU.A4(); +this.internalRotationAxis = new JU.A4(); +this.internalRotationCenter = JU.P3.new3(0, 0, 0); +this.matrixRotate = new JU.M3(); +this.matrixTemp3 = new JU.M3(); +this.matrixTemp4 = new JU.M4(); +this.axisangleT = new JU.A4(); +this.vectorT = new JU.V3(); +this.vectorT2 = new JU.V3(); +this.pointT2 = new JU.P3(); +this.rotationAxis = new JU.V3(); +this.fixedTranslation = new JU.P3(); +this.camera = new JU.P3(); +this.cameraSetting = new JU.P3(); +this.matrixTransform = new JU.M4(); +this.matrixTransformInv = new JU.M4(); +this.fScrPt = new JU.P3(); +this.iScrPt = new JU.P3i(); +this.ptVibTemp = new JU.Point3fi(); +this.untransformedPoint = new JU.P3(); +this.ptTest1 = new JU.P3(); +this.ptTest2 = new JU.P3(); +this.ptTest3 = new JU.P3(); +this.aaTest1 = new JU.A4(); +this.matrixTest = new JU.M3(); +this.vibrationT = new JU.P3(); +this.stereoMode = J.c.STER.NONE; +this.matrixStereo = new JU.M3(); +this.frameOffset = new JU.P3(); +this.ptOffset = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +c$.getTransformManager = Clazz.defineMethod(c$, "getTransformManager", +function(vwr, width, height, is4D){ +var me = (is4D ? J.api.Interface.getInterface("JV.TransformManager4D", vwr, "tm") : new JV.TransformManager()); +me.vwr = vwr; +me.setScreenParameters(width, height, true, false, true, true); +return me; +}, "JV.Viewer,~N,~N,~B"); +Clazz.defineMethod(c$, "setDefaultPerspective", +function(){ +this.setCameraDepthPercent(3.0, true); +this.setPerspectiveDepth(true); +this.setStereoDegrees(-5); +this.visualRangeAngstroms = 5.0; +this.setSpinOff(); +this.setVibrationPeriod(0); +}); +Clazz.defineMethod(c$, "homePosition", +function(resetSpin){ +if (resetSpin) this.setSpinOff(); +this.setNavOn(false); +this.navFps = 10; +this.navX = this.navY = this.navZ = 0; +this.rotationCenterDefault.setT(this.vwr.getBoundBoxCenter()); +this.setFixedRotationCenter(this.rotationCenterDefault); +this.rotationRadiusDefault = this.setRotationRadius(0, true); +this.windowCentered = true; +this.setRotationCenterAndRadiusXYZ(null, true); +this.resetRotation(); +var m = this.vwr.ms.getInfoM("defaultOrientationMatrix"); +if (m != null) this.setRotation(m); +this.setZoomEnabled(true); +this.zoomToPercent(this.vwr.g.modelKitMode ? 50 : 100); +this.zmPct = this.zmPctSet; +this.slabReset(); +this.resetFitToScreen(true); +if (this.vwr.isJmolDataFrame()) { +this.fixedRotationCenter.set(0, 0, 0); +} else { +if (this.vwr.g.axesOrientationRasmol) this.matrixRotate.setAsXRotation(3.141592653589793); +}this.vwr.stm.saveOrientation("default", null); +if (this.mode == 1) this.setNavigationMode(true); +}, "~B"); +Clazz.defineMethod(c$, "setRotation", +function(m){ +if (m.isRotation()) this.matrixRotate.setM3(m); + else this.resetRotation(); +}, "JU.M3"); +Clazz.defineMethod(c$, "resetRotation", +function(){ +this.matrixRotate.setScale(1); +}); +Clazz.defineMethod(c$, "clearThreads", +function(){ +this.clearVibration(); +this.clearSpin(); +this.setNavOn(false); +this.stopMotion(); +}); +Clazz.defineMethod(c$, "clear", +function(){ +this.fixedRotationCenter.set(0, 0, 0); +this.navigating = false; +this.slabPlane = null; +this.depthPlane = null; +this.zSlabPoint = null; +this.resetNavigationPoint(true); +}); +Clazz.defineMethod(c$, "setFixedRotationCenter", +function(center){ +if (center == null) return; +this.fixedRotationCenter.setT(center); +}, "JU.T3"); +Clazz.defineMethod(c$, "setRotationPointXY", +function(center){ +var newCenterScreen = this.transformPt(center); +this.fixedTranslation.set(newCenterScreen.x, newCenterScreen.y, 0); +}, "JU.P3"); +Clazz.defineMethod(c$, "spinXYBy", +function(xDelta, yDelta, speed){ +if (xDelta == 0 && yDelta == 0) { +if (this.spinThread != null && this.spinIsGesture) this.clearSpin(); +return; +}this.clearSpin(); +var pt1 = JU.P3.newP(this.fixedRotationCenter); +var ptScreen = new JU.P3(); +this.transformPt3f(pt1, ptScreen); +var pt2 = JU.P3.new3(-yDelta, xDelta, 0); +pt2.add(ptScreen); +this.unTransformPoint(pt2, pt2); +this.vwr.setInMotion(false); +this.rotateAboutPointsInternal(null, pt2, pt1, 10 * speed, NaN, false, true, null, true, null, null, null, null, false); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "rotateXYBy", +function(degX, degY, bsAtoms){ +this.rotate3DBall(degX, degY, bsAtoms); +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "rotateZBy", +function(zDelta, x, y){ +if (x != 2147483647 && y != 2147483647) this.resetXYCenter(x, y); +this.rotateZRadians((zDelta / 57.29577951308232)); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "applyRotation", +function(mNew, isInternal, bsAtoms, translation, translationOnly, m4, useModelKit){ +if (bsAtoms == null) { +this.matrixRotate.mul2(mNew, this.matrixRotate); +return; +}this.vwr.moveAtoms(m4, mNew, this.matrixRotate, translation, this.internalRotationCenter, isInternal, bsAtoms, translationOnly, useModelKit); +if (translation != null) { +this.internalRotationCenter.add(translation); +}}, "JU.M3,~B,JU.BS,JU.V3,~B,JU.M4,~B"); +Clazz.defineMethod(c$, "rotate3DBall", +function(xDeg, yDeg, bsAtoms){ +if (this.matrixTemp3.setAsBallRotation(0.017453292519943295, -yDeg, -xDeg)) this.applyRotation(this.matrixTemp3, false, bsAtoms, null, false, null, false); +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "rotateXRadians", +function(angleRadians, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAsXRotation(angleRadians), false, bsAtoms, null, false, null, false); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "rotateYRadians", +function(angleRadians, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAsYRotation(angleRadians), false, bsAtoms, null, false, null, false); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "rotateZRadians", +function(angleRadians){ +this.applyRotation(this.matrixTemp3.setAsZRotation(angleRadians), false, null, null, false, null, false); +}, "~N"); +Clazz.defineMethod(c$, "rotateAxisAngle", +function(rotAxis, radians){ +this.axisangleT.setVA(rotAxis, radians); +this.rotateAxisAngle2(this.axisangleT, null); +}, "JU.V3,~N"); +Clazz.defineMethod(c$, "rotateAxisAngle2", +function(axisAngle, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAA(axisAngle), false, bsAtoms, null, false, null, false); +}, "JU.A4,JU.BS"); +Clazz.defineMethod(c$, "rotateAxisAngleAtCenter", +function(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsAtoms){ +if (rotCenter != null) this.moveRotationCenter(rotCenter, true); +if (isSpin) this.setSpinOff(); +this.setNavOn(false); +if (this.vwr.headless) { +if (isSpin && endDegrees == 3.4028235E38) return false; +isSpin = false; +}if (Float.isNaN(degreesPerSecond) || degreesPerSecond == 0 || endDegrees == 0) return false; +if (rotCenter != null) { +this.setRotationPointXY(rotCenter); +}this.setFixedRotationCenter(rotCenter); +this.rotationAxis.setT(rotAxis); +this.rotationRate = degreesPerSecond; +if (isSpin) { +this.fixedRotationAxis.setVA(rotAxis, (degreesPerSecond * 0.017453292519943295)); +this.isSpinInternal = false; +this.isSpinFixed = true; +this.isSpinSelected = (bsAtoms != null); +this.setSpin(eval, true, endDegrees, null, null, bsAtoms, false); +return (endDegrees != 3.4028235E38); +}var radians = (endDegrees * 0.017453292519943295); +this.fixedRotationAxis.setVA(rotAxis, endDegrees); +this.rotateAxisAngleRadiansFixed(radians, bsAtoms); +return true; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.V3,~N,~N,~B,JU.BS"); +Clazz.defineMethod(c$, "rotateAxisAngleRadiansFixed", +function(angleRadians, bsAtoms){ +this.axisangleT.setAA(this.fixedRotationAxis); +this.axisangleT.angle = angleRadians; +this.rotateAxisAngle2(this.axisangleT, bsAtoms); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "rotateAboutPointsInternal", +function(eval, point1, point2, degreesPerSecond, endDegrees, isClockwise, isSpin, bsAtoms, isGesture, translation, finalPoints, dihedralList, m4, useModelKit){ +if (isSpin) this.setSpinOff(); +this.setNavOn(false); +if (dihedralList == null && (translation == null || translation.length() < 0.001) && (isSpin ? Float.isNaN(degreesPerSecond) || degreesPerSecond == 0 : endDegrees == 0)) return false; +var axis = null; +if (dihedralList == null) { +axis = JU.V3.newVsub(point2, point1); +if (isClockwise) axis.scale(-1.0); +this.internalRotationCenter.setT(point1); +this.rotationAxis.setT(axis); +this.internalTranslation = (translation == null ? null : JU.V3.newV(translation)); +}var isSelected = (bsAtoms != null); +if (isSpin) { +if (dihedralList == null) { +if (endDegrees == 0) endDegrees = NaN; +if (Float.isNaN(endDegrees)) { +this.rotationRate = degreesPerSecond; +} else { +var nFrames = Clazz.doubleToInt(Math.abs(endDegrees) / Math.abs(degreesPerSecond) * this.spinFps + 0.5); +this.rotationRate = degreesPerSecond = endDegrees / nFrames * this.spinFps; +if (translation != null) this.internalTranslation.scale(1 / nFrames); +}this.internalRotationAxis.setVA(axis, ((Float.isNaN(this.rotationRate) ? 0 : this.rotationRate) * 0.017453292519943295)); +this.isSpinInternal = true; +this.isSpinFixed = false; +this.isSpinSelected = isSelected; +} else { +endDegrees = degreesPerSecond; +}this.setSpin(eval, true, endDegrees, finalPoints, dihedralList, bsAtoms, isGesture); +return !Float.isNaN(endDegrees); +}var radians = (endDegrees * 0.017453292519943295); +this.internalRotationAxis.setVA(axis, radians); +this.rotateAxisAngleRadiansInternal(radians, bsAtoms, m4, useModelKit); +return false; +}, "J.api.JmolScriptEvaluator,JU.T3,JU.T3,~N,~N,~B,~B,JU.BS,~B,JU.V3,JU.Lst,~A,JU.M4,~B"); +Clazz.defineMethod(c$, "rotateAxisAngleRadiansInternal", +function(radians, bsAtoms, m4, useModelKit){ +this.internalRotationAngle = radians; +this.vectorT.set(this.internalRotationAxis.x, this.internalRotationAxis.y, this.internalRotationAxis.z); +this.matrixRotate.rotate2(this.vectorT, this.vectorT2); +this.axisangleT.setVA(this.vectorT2, radians); +this.applyRotation(this.matrixTemp3.setAA(this.axisangleT), true, bsAtoms, this.internalTranslation, radians > 1e6, m4, useModelKit); +if (bsAtoms == null) this.getNewFixedRotationCenter(); +}, "~N,JU.BS,JU.M4,~B"); +Clazz.defineMethod(c$, "getNewFixedRotationCenter", +function(){ +this.axisangleT.setAA(this.internalRotationAxis); +this.axisangleT.angle = -this.internalRotationAngle; +this.matrixTemp4.setToAA(this.axisangleT); +this.vectorT.setT(this.internalRotationCenter); +this.pointT2.sub2(this.fixedRotationCenter, this.vectorT); +var pt = this.matrixTemp4.rotTrans2(this.pointT2, new JU.P3()); +pt.add(this.vectorT); +this.setRotationCenterAndRadiusXYZ(pt, false); +}); +Clazz.defineMethod(c$, "setTranslationFractions", +function(){ +this.xTranslationFraction = this.fixedTranslation.x / this.width; +this.yTranslationFraction = this.fixedTranslation.y / this.height; +}); +Clazz.defineMethod(c$, "centerAt", +function(x, y, pt){ +if (pt == null) { +this.translateXYBy(x, y); +return; +}if (this.windowCentered) this.vwr.setBooleanProperty("windowCentered", false); +this.fixedTranslation.x = x; +this.fixedTranslation.y = y; +this.setFixedRotationCenter(pt); +}, "~N,~N,JU.P3"); +Clazz.defineMethod(c$, "percentToPixels", +function(xyz, percent){ +switch ((xyz).charCodeAt(0)) { +case 120: +return Clazz.doubleToInt(Math.floor(percent / 100 * this.width)); +case 121: +return Clazz.doubleToInt(Math.floor(percent / 100 * this.height)); +case 122: +return Clazz.doubleToInt(Math.floor(percent / 100 * this.screenPixelCount)); +} +return 0; +}, "~S,~N"); +Clazz.defineMethod(c$, "angstromsToPixels", +function(distance){ +return this.scalePixelsPerAngstrom * distance; +}, "~N"); +Clazz.defineMethod(c$, "translateXYBy", +function(xDelta, yDelta){ +this.fixedTranslation.x += xDelta; +this.fixedTranslation.y += yDelta; +this.setTranslationFractions(); +}, "~N,~N"); +Clazz.defineMethod(c$, "setCamera", +function(x, y){ +this.cameraSetting.set(x, y, (x == 0 && y == 0 ? 0 : 1)); +}, "~N,~N"); +Clazz.defineMethod(c$, "translateToPercent", +function(type, percent){ +switch ((type).charCodeAt(0)) { +case 120: +this.xTranslationFraction = 0.5 + percent / 100; +this.fixedTranslation.x = this.width * this.xTranslationFraction; +return; +case 121: +this.yTranslationFraction = 0.5 + percent / 100; +this.fixedTranslation.y = this.height * this.yTranslationFraction; +return; +case 122: +if (this.mode == 1) this.setNavigationDepthPercent(percent); +return; +} +}, "~S,~N"); +Clazz.defineMethod(c$, "getTranslationXPercent", +function(){ +return (this.width == 0 ? 0 : (this.fixedTranslation.x - this.width / 2) * 100 / this.width); +}); +Clazz.defineMethod(c$, "getTranslationYPercent", +function(){ +return (this.height == 0 ? 0 : (this.fixedTranslation.y - this.height / 2) * 100 / this.height); +}); +Clazz.defineMethod(c$, "getTranslationScript", +function(){ +var info = ""; +var f = this.getTranslationXPercent(); +if (f != 0.0) info += "translate x " + f + ";"; +f = this.getTranslationYPercent(); +if (f != 0.0) info += "translate y " + f + ";"; +return info; +}); +Clazz.defineMethod(c$, "getOrientationText", +function(type, isBest){ +switch (type) { +case 4129: +return this.getMoveToText(1, false); +case 1073742132: +var q = this.getRotationQ(); +if (isBest) q = q.inv(); +return q.toString(); +case 1073742178: +var sb = new JU.SB(); +var d = this.getTranslationXPercent(); +JV.TransformManager.truncate2(sb, (isBest ? -d : d)); +d = this.getTranslationYPercent(); +JV.TransformManager.truncate2(sb, (isBest ? -d : d)); +return sb.toString(); +default: +return this.getMoveToText(1, true) + "\n#OR\n" + this.getRotateZyzText(true); +} +}, "~N,~B"); +Clazz.defineMethod(c$, "getRotationQ", +function(){ +return JU.Quat.newM(this.matrixRotate); +}); +Clazz.defineMethod(c$, "getOrientationInfo", +function(){ +var info = new java.util.Hashtable(); +info.put("moveTo", this.getMoveToText(1, false)); +info.put("center", "center " + this.getCenterText()); +info.put("centerPt", this.fixedRotationCenter); +var aa = new JU.A4(); +aa.setM(this.matrixRotate); +info.put("axisAngle", aa); +info.put("quaternion", this.getRotationQ().toPoint4f()); +info.put("rotationMatrix", this.matrixRotate); +info.put("rotateZYZ", this.getRotateZyzText(false)); +info.put("rotateXYZ", this.getRotateXyzText()); +info.put("transXPercent", Float.$valueOf(this.getTranslationXPercent())); +info.put("transYPercent", Float.$valueOf(this.getTranslationYPercent())); +info.put("zoom", Float.$valueOf(this.zmPct)); +info.put("modelRadius", Float.$valueOf(this.modelRadius)); +if (this.mode == 1) { +info.put("navigationCenter", "navigate center " + JU.Escape.eP(this.navigationCenter)); +info.put("navigationOffsetXPercent", Float.$valueOf(this.getNavigationOffsetPercent('X'))); +info.put("navigationOffsetYPercent", Float.$valueOf(this.getNavigationOffsetPercent('Y'))); +info.put("navigationDepthPercent", Float.$valueOf(this.navigationDepthPercent)); +}return info; +}); +Clazz.defineMethod(c$, "getRotation", +function(m){ +m.setM3(this.matrixRotate); +}, "JU.M3"); +Clazz.defineMethod(c$, "setZoomHeight", +function(zoomHeight, zoomLarge){ +this.zoomHeight = zoomHeight; +this.scaleFitToScreen(false, zoomLarge, false, true); +}, "~B,~B"); +Clazz.defineMethod(c$, "zoomBy", +function(pixels){ +if (pixels > 20) pixels = 20; + else if (pixels < -20) pixels = -20; +var deltaPercent = pixels * this.zmPctSet / 50; +if (deltaPercent == 0) deltaPercent = (pixels > 0 ? 1 : (deltaPercent < 0 ? -1 : 0)); +this.zoomRatio = (deltaPercent + this.zmPctSet) / this.zmPctSet; +this.zmPctSet += deltaPercent; +}, "~N"); +Clazz.defineMethod(c$, "zoomByFactor", +function(factor, x, y){ +if (factor <= 0 || !this.zoomEnabled) return; +if (this.mode != 1) { +this.zoomRatio = factor; +this.zmPctSet *= factor; +this.resetXYCenter(x, y); +} else if (this.getNav()) { +this.nav.zoomByFactor(factor, x, y); +}}, "~N,~N,~N"); +Clazz.defineMethod(c$, "zoomToPercent", +function(percentZoom){ +this.zmPctSet = percentZoom; +this.zoomRatio = 0; +}, "~N"); +Clazz.defineMethod(c$, "translateZBy", +function(pixels){ +if (pixels >= this.screenPixelCount) return; +var sppa = this.scalePixelsPerAngstrom / (1 - pixels * 1.0 / this.screenPixelCount); +if (sppa >= this.screenPixelCount) return; +var newZoomPercent = sppa / this.scaleDefaultPixelsPerAngstrom * 100; +this.zoomRatio = newZoomPercent / this.zmPctSet; +this.zmPctSet = newZoomPercent; +}, "~N"); +Clazz.defineMethod(c$, "resetXYCenter", +function(x, y){ +if (x == 2147483647 || y == 2147483647) return; +if (this.windowCentered) this.vwr.setBooleanProperty("windowCentered", false); +var pt = new JU.P3(); +this.transformPt3f(this.fixedRotationCenter, pt); +pt.set(x, y, pt.z); +this.unTransformPoint(pt, pt); +this.fixedTranslation.set(x, y, 0); +this.setFixedRotationCenter(pt); +}, "~N,~N"); +Clazz.defineMethod(c$, "zoomByPercent", +function(percentZoom){ +var deltaPercent = percentZoom * this.zmPctSet / 100; +if (deltaPercent == 0) deltaPercent = (percentZoom < 0) ? -1 : 1; +this.zoomRatio = (deltaPercent + this.zmPctSet) / this.zmPctSet; +this.zmPctSet += deltaPercent; +}, "~N"); +Clazz.defineMethod(c$, "setScaleAngstromsPerInch", +function(angstromsPerInch){ +this.scale3D = (angstromsPerInch > 0); +if (this.scale3D) this.scale3DAngstromsPerInch = angstromsPerInch; +this.perspectiveDepth = !this.scale3D; +}, "~N"); +Clazz.defineMethod(c$, "setSlabRange", +function(value){ +this.slabRange = value; +}, "~N"); +Clazz.defineMethod(c$, "setSlabEnabled", +function(slabEnabled){ +this.vwr.g.setB("slabEnabled", this.slabEnabled = slabEnabled); +}, "~B"); +Clazz.defineMethod(c$, "setZShadeEnabled", +function(zShadeEnabled){ +this.zShadeEnabled = zShadeEnabled; +this.vwr.g.setB("zShade", zShadeEnabled); +}, "~B"); +Clazz.defineMethod(c$, "setZoomEnabled", +function(zoomEnabled){ +this.zoomEnabled = zoomEnabled; +this.vwr.g.setB("zoomEnabled", zoomEnabled); +}, "~B"); +Clazz.defineMethod(c$, "slabReset", +function(){ +this.slabToPercent(100); +this.depthToPercent(0); +this.depthPlane = null; +this.slabPlane = null; +this.setSlabEnabled(false); +this.setZShadeEnabled(false); +this.slabDepthChanged(); +}); +Clazz.defineMethod(c$, "getSlabPercentSetting", +function(){ +return this.slabPercentSetting; +}); +Clazz.defineMethod(c$, "slabDepthChanged", +function(){ +this.vwr.g.setI("slab", this.slabPercentSetting); +this.vwr.g.setI("depth", this.depthPercentSetting); +this.finalizeTransformParameters(); +}); +Clazz.defineMethod(c$, "slabByPercentagePoints", +function(percentage){ +this.slabPlane = null; +if (percentage < 0 ? this.slabPercentSetting <= Math.max(0, this.depthPercentSetting) : this.slabPercentSetting >= 100) return; +this.slabPercentSetting += percentage; +this.slabDepthChanged(); +if (this.depthPercentSetting >= this.slabPercentSetting) this.depthPercentSetting = this.slabPercentSetting - 1; +}, "~N"); +Clazz.defineMethod(c$, "depthByPercentagePoints", +function(percentage){ +this.depthPlane = null; +if (percentage < 0 ? this.depthPercentSetting <= 0 : this.depthPercentSetting >= Math.min(100, this.slabPercentSetting)) return; +this.depthPercentSetting += percentage; +if (this.slabPercentSetting <= this.depthPercentSetting) this.slabPercentSetting = this.depthPercentSetting + 1; +this.slabDepthChanged(); +}, "~N"); +Clazz.defineMethod(c$, "slabDepthByPercentagePoints", +function(percentage){ +this.slabPlane = null; +this.depthPlane = null; +if (percentage < 0 ? this.slabPercentSetting <= Math.max(0, this.depthPercentSetting) : this.depthPercentSetting >= Math.min(100, this.slabPercentSetting)) return; +this.slabPercentSetting += percentage; +this.depthPercentSetting += percentage; +this.slabDepthChanged(); +}, "~N"); +Clazz.defineMethod(c$, "slabToPercent", +function(percentSlab){ +this.slabPlane = null; +this.vwr.setFloatProperty("slabRange", 0); +this.slabPercentSetting = percentSlab; +if (this.depthPercentSetting >= this.slabPercentSetting) this.depthPercentSetting = this.slabPercentSetting - 1; +this.slabDepthChanged(); +}, "~N"); +Clazz.defineMethod(c$, "depthToPercent", +function(percentDepth){ +this.depthPlane = null; +this.vwr.g.setI("depth", percentDepth); +this.depthPercentSetting = percentDepth; +if (this.slabPercentSetting <= this.depthPercentSetting) this.slabPercentSetting = this.depthPercentSetting + 1; +this.slabDepthChanged(); +}, "~N"); +Clazz.defineMethod(c$, "zSlabToPercent", +function(percentSlab){ +this.zSlabPercentSetting = percentSlab; +if (this.zDepthPercentSetting > this.zSlabPercentSetting) this.zDepthPercentSetting = percentSlab; +}, "~N"); +Clazz.defineMethod(c$, "zDepthToPercent", +function(percentDepth){ +this.zDepthPercentSetting = percentDepth; +if (this.zDepthPercentSetting > this.zSlabPercentSetting) this.zSlabPercentSetting = percentDepth; +}, "~N"); +Clazz.defineMethod(c$, "slabInternal", +function(plane, isDepth){ +if (isDepth) { +this.depthPlane = plane; +this.depthPercentSetting = 0; +} else { +this.slabPlane = plane; +this.slabPercentSetting = 100; +}this.slabDepthChanged(); +}, "JU.P4,~B"); +Clazz.defineMethod(c$, "setSlabDepthInternal", +function(isDepth){ +if (isDepth) this.depthPlane = null; + else this.slabPlane = null; +this.finalizeTransformParameters(); +this.slabInternal(this.getSlabDepthPlane(isDepth), isDepth); +}, "~B"); +Clazz.defineMethod(c$, "getSlabDepthPlane", +function(isDepth){ +if (isDepth) { +if (this.depthPlane != null) return this.depthPlane; +} else if (this.slabPlane != null) { +return this.slabPlane; +}var m = this.matrixTransform; +var plane = JU.P4.new4(-m.m20, -m.m21, -m.m22, -m.m23 + (isDepth ? this.depthValue : this.slabValue)); +return plane; +}, "~B"); +Clazz.defineMethod(c$, "getCameraFactors", +function(){ +this.aperatureAngle = (Math.atan2(this.screenPixelCount / 2, this.referencePlaneOffset) * 2 * 180 / 3.141592653589793); +this.cameraDistanceFromCenter = this.referencePlaneOffset / this.scalePixelsPerAngstrom; +var ptRef = JU.P3.new3(Clazz.doubleToInt(this.screenWidth / 2), Clazz.doubleToInt(this.screenHeight / 2), this.referencePlaneOffset); +this.unTransformPoint(ptRef, ptRef); +var ptCamera = JU.P3.new3(Clazz.doubleToInt(this.screenWidth / 2), Clazz.doubleToInt(this.screenHeight / 2), 0); +this.unTransformPoint(ptCamera, ptCamera); +ptCamera.sub(this.fixedRotationCenter); +var pt = JU.P3.new3(Clazz.doubleToInt(this.screenWidth / 2), Clazz.doubleToInt(this.screenHeight / 2), this.cameraDistanceFromCenter * this.scalePixelsPerAngstrom); +this.unTransformPoint(pt, pt); +pt.sub(this.fixedRotationCenter); +ptCamera.add(pt); +return Clazz.newArray(-1, [ptRef, ptCamera, this.fixedRotationCenter, JU.P3.new3(this.cameraDistanceFromCenter, this.aperatureAngle, this.scalePixelsPerAngstrom)]); +}); +Clazz.defineMethod(c$, "setPerspectiveDepth", +function(perspectiveDepth){ +if (this.perspectiveDepth == perspectiveDepth) return; +this.perspectiveDepth = perspectiveDepth; +this.vwr.g.setB("perspectiveDepth", perspectiveDepth); +this.resetFitToScreen(false); +}, "~B"); +Clazz.defineMethod(c$, "getPerspectiveDepth", +function(){ +return this.perspectiveDepth; +}); +Clazz.defineMethod(c$, "setCameraDepthPercent", +function(percent, resetSlab){ +this.resetNavigationPoint(resetSlab); +var screenMultiples = (percent < 0 ? -percent / 100 : percent); +if (screenMultiples == 0) return; +this.cameraDepthSetting = screenMultiples; +this.vwr.g.setF("cameraDepth", this.cameraDepthSetting); +this.cameraDepth = NaN; +}, "~N,~B"); +Clazz.defineMethod(c$, "getCameraDepth", +function(){ +return this.cameraDepthSetting; +}); +Clazz.defineMethod(c$, "setScreenParameters0", +function(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom){ +if (screenWidth == 2147483647) return; +this.screenWidth = screenWidth; +this.screenHeight = screenHeight; +this.useZoomLarge = useZoomLarge; +this.antialias = antialias; +this.width = (antialias ? screenWidth * 2 : screenWidth); +this.height = (antialias ? screenHeight * 2 : screenHeight); +this.scaleFitToScreen(false, useZoomLarge, resetSlab, resetZoom); +}, "~N,~N,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "setAntialias", +function(TF){ +var isNew = (this.antialias != TF); +this.antialias = TF; +this.width = (this.antialias ? this.screenWidth * 2 : this.screenWidth); +this.height = (this.antialias ? this.screenHeight * 2 : this.screenHeight); +if (isNew) this.scaleFitToScreen(false, this.useZoomLarge, false, false); +}, "~B"); +Clazz.defineMethod(c$, "defaultScaleToScreen", +function(radius){ +return this.screenPixelCount / 2 / radius; +}, "~N"); +Clazz.defineMethod(c$, "resetFitToScreen", +function(andCenter){ +this.scaleFitToScreen(andCenter, this.vwr.g.zoomLarge, true, true); +}, "~B"); +Clazz.defineMethod(c$, "scaleFitToScreen", +function(andCenter, zoomLarge, resetSlab, resetZoom){ +if (this.width == 0 || this.height == 0) { +this.screenPixelCount = 1; +} else { +this.fixedTranslation.set(this.width * (andCenter ? 0.5 : this.xTranslationFraction), this.height * (andCenter ? 0.5 : this.yTranslationFraction), 0); +this.setTranslationFractions(); +if (andCenter) this.camera.set(0, 0, 0); +if (resetZoom) this.resetNavigationPoint(resetSlab); +if (this.zoomHeight) zoomLarge = (this.height > this.width); +this.screenPixelCount = (zoomLarge == (this.height > this.width) ? this.height : this.width); +}if (this.screenPixelCount > 2) this.screenPixelCount -= 2; +this.scaleDefaultPixelsPerAngstrom = this.defaultScaleToScreen(this.modelRadius); +}, "~B,~B,~B,~B"); +Clazz.defineMethod(c$, "scaleToScreen", +function(z, milliAngstroms){ +if (milliAngstroms == 0 || z < 2) return 0; +var pixelSize = this.scaleToPerspective(z, milliAngstroms * this.scalePixelsPerAngstrom / 1000); +return (pixelSize > 0 ? pixelSize : 1); +}, "~N,~N"); +Clazz.defineMethod(c$, "unscaleToScreen", +function(z, screenDistance){ +var d = screenDistance / this.scalePixelsPerAngstrom; +return (this.perspectiveDepth ? d / this.getPerspectiveFactor(z) : d); +}, "~N,~N"); +Clazz.defineMethod(c$, "scaleToPerspective", +function(z, sizeAngstroms){ +return (this.perspectiveDepth ? sizeAngstroms * this.getPerspectiveFactor(z) : sizeAngstroms); +}, "~N,~N"); +Clazz.defineMethod(c$, "setNavigationMode", +function(TF){ +this.mode = (TF ? 1 : this.defaultMode); +this.resetNavigationPoint(true); +}, "~B"); +Clazz.defineMethod(c$, "isNavigating", +function(){ +return this.navigating || this.navOn; +}); +Clazz.defineMethod(c$, "finalizeTransformParameters", +function(){ +this.haveNotifiedNaN = false; +this.fixedRotationOffset.setT(this.fixedTranslation); +this.camera.setT(this.cameraSetting); +this.internalSlab = this.slabEnabled && (this.slabPlane != null || this.depthPlane != null); +var newZoom = this.getZoomSetting(); +if (this.zmPct != newZoom) { +this.zmPct = newZoom; +if (!this.vwr.g.fontCaching) this.vwr.gdata.clearFontCache(); +}this.calcCameraFactors(); +this.calcTransformMatrix(); +if (this.mode == 1) this.calcNavigationPoint(); + else this.calcSlabAndDepthValues(); +}); +Clazz.defineMethod(c$, "getZoomSetting", +function(){ +if (this.zmPctSet < 5) this.zmPctSet = 5; +if (this.zmPctSet > 200000) this.zmPctSet = 200000; +return (this.zoomEnabled || this.mode == 1 ? this.zmPctSet : 100); +}); +Clazz.defineMethod(c$, "calcSlabAndDepthValues", +function(){ +if (this.slabRange < 1) this.slabValue = this.zValueFromPercent(this.slabPercentSetting); + else this.slabValue = Clazz.doubleToInt(Math.floor(this.modelCenterOffset * this.slabRange / (2 * this.modelRadius) * (this.zmPctSet / 100))); +this.depthValue = this.zValueFromPercent(this.depthPercentSetting); +if (this.zSlabPercentSetting == this.zDepthPercentSetting) { +this.zSlabValue = this.slabValue; +this.zDepthValue = this.depthValue; +} else { +this.zSlabValue = this.zValueFromPercent(this.zSlabPercentSetting); +this.zDepthValue = this.zValueFromPercent(this.zDepthPercentSetting); +}if (this.zSlabPoint != null) { +try { +this.transformPt3f(this.zSlabPoint, this.pointT2); +this.zSlabValue = Clazz.floatToInt(this.pointT2.z); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}this.vwr.g.setO("_slabPlane", JU.Escape.eP4(this.getSlabDepthPlane(false))); +this.vwr.g.setO("_depthPlane", JU.Escape.eP4(this.getSlabDepthPlane(true))); +if (this.slabEnabled) return; +this.slabValue = 0; +this.depthValue = 2147483647; +}); +Clazz.defineMethod(c$, "zValueFromPercent", +function(zPercent){ +return Clazz.doubleToInt(Math.floor((1 - zPercent / 50) * this.modelRadiusPixels + this.modelCenterOffset)); +}, "~N"); +Clazz.defineMethod(c$, "calcTransformMatrix", +function(){ +this.matrixTransform.setIdentity(); +this.vectorTemp.sub2(this.frameOffset, this.fixedRotationCenter); +this.matrixTransform.setTranslation(this.vectorTemp); +this.matrixTemp.setToM3(this.stereoFrame ? this.matrixStereo : this.matrixRotate); +this.matrixTransform.mul2(this.matrixTemp, this.matrixTransform); +this.matrixTemp.setIdentity(); +this.matrixTemp.m00 = this.matrixTemp.m11 = this.matrixTemp.m22 = this.scalePixelsPerAngstrom; +this.matrixTemp.m11 = this.matrixTemp.m22 = -this.scalePixelsPerAngstrom; +this.matrixTransform.mul2(this.matrixTemp, this.matrixTransform); +this.matrixTransform.m23 += this.modelCenterOffset; +try { +this.matrixTransformInv.setM4(this.matrixTransform).invert(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("ERROR INVERTING matrixTransform!"); +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "rotatePoint", +function(pt, ptRot){ +this.matrixRotate.rotate2(pt, ptRot); +ptRot.y = -ptRot.y; +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "getScreenTemp", +function(ptXYZ){ +this.matrixTransform.rotTrans2(ptXYZ, this.fScrPt); +}, "JU.T3"); +Clazz.defineMethod(c$, "transformPtScr", +function(ptXYZ, pointScreen){ +pointScreen.setT(this.transformPt(ptXYZ)); +}, "JU.T3,JU.P3i"); +Clazz.defineMethod(c$, "transformPtScrT3", +function(ptXYZ, pointScreen){ +this.transformPt(ptXYZ); +pointScreen.setT(this.fScrPt); +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "transformPt3f", +function(ptXYZ, screen){ +this.applyPerspective(ptXYZ, ptXYZ); +screen.setT(this.fScrPt); +}, "JU.T3,JU.P3"); +Clazz.defineMethod(c$, "transformPtNoClip", +function(ptXYZ, pointScreen){ +this.applyPerspective(ptXYZ, null); +pointScreen.setT(this.fScrPt); +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "transformPt", +function(ptXYZ){ +return this.applyPerspective(ptXYZ, this.internalSlab ? ptXYZ : null); +}, "JU.T3"); +Clazz.defineMethod(c$, "transformPtVib", +function(ptXYZ, v){ +this.ptVibTemp.setT(ptXYZ); +return this.applyPerspective(this.getVibrationPoint(v, this.ptVibTemp, NaN), ptXYZ); +}, "JU.P3,JU.Vibration"); +Clazz.defineMethod(c$, "getVibrationPoint", +function(v, pt, scale){ +return v.setCalcPoint(pt, this.vibrationT, (Float.isNaN(scale) ? this.vibrationScale : scale), this.vwr.g.modulationScale); +}, "JU.Vibration,JU.T3,~N"); +Clazz.defineMethod(c$, "transformPt2Df", +function(v, pt){ +if (v.z == -3.4028235E38 || v.z == 3.4028235E38) { +this.transformPt2D(v); +pt.set(this.iScrPt.x, this.iScrPt.y, this.iScrPt.z); +} else { +this.transformPt3f(v, pt); +}}, "JU.T3,JU.P3"); +Clazz.defineMethod(c$, "transformPtScrT32D", +function(v, pt){ +if (v.z == -3.4028235E38 || v.z == 3.4028235E38) { +this.transformPt2D(v); +pt.set(this.iScrPt.x, this.iScrPt.y, this.iScrPt.z); +} else { +this.transformPtScrT3(v, pt); +}}, "JU.T3,JU.P3"); +Clazz.defineMethod(c$, "transformPt2D", +function(ptXyp){ +if (ptXyp.z == -3.4028235E38) { +this.iScrPt.x = Clazz.doubleToInt(Math.floor(ptXyp.x / 100 * this.screenWidth)); +this.iScrPt.y = Clazz.doubleToInt(Math.floor((1 - ptXyp.y / 100) * this.screenHeight)); +} else { +this.iScrPt.x = Clazz.floatToInt(ptXyp.x); +this.iScrPt.y = (this.screenHeight - Clazz.floatToInt(ptXyp.y)); +}if (this.antialias) { +this.iScrPt.x <<= 1; +this.iScrPt.y <<= 1; +}this.matrixTransform.rotTrans2(this.fixedRotationCenter, this.fScrPt); +this.iScrPt.z = Clazz.floatToInt(this.fScrPt.z); +return this.iScrPt; +}, "JU.T3"); +Clazz.defineMethod(c$, "applyPerspective", +function(ptXYZ, ptRef){ +this.getScreenTemp(ptXYZ); +var z = this.fScrPt.z; +if (Float.isNaN(z)) { +if (!this.haveNotifiedNaN && JU.Logger.debugging) JU.Logger.debug("NaN seen in TransformPoint"); +this.haveNotifiedNaN = true; +z = this.fScrPt.z = 1; +} else if (z <= 0) { +z = this.fScrPt.z = 1; +}switch (this.mode) { +case 1: +this.fScrPt.x -= this.navigationShiftXY.x; +this.fScrPt.y -= this.navigationShiftXY.y; +break; +case 2: +this.fScrPt.x += this.perspectiveShiftXY.x; +this.fScrPt.y += this.perspectiveShiftXY.y; +break; +} +if (this.perspectiveDepth) { +var factor = this.getPerspectiveFactor(z); +this.fScrPt.x *= factor; +this.fScrPt.y *= factor; +}switch (this.mode) { +case 1: +this.fScrPt.x += this.navigationOffset.x; +this.fScrPt.y += this.navigationOffset.y; +break; +case 2: +this.fScrPt.x -= this.perspectiveShiftXY.x; +this.fScrPt.y -= this.perspectiveShiftXY.y; +case 0: +this.fScrPt.x += this.fixedRotationOffset.x; +this.fScrPt.y += this.fixedRotationOffset.y; +break; +} +if (Float.isNaN(this.fScrPt.x) && !this.haveNotifiedNaN) { +if (JU.Logger.debugging) JU.Logger.debug("NaN found in transformPoint "); +this.haveNotifiedNaN = true; +}this.iScrPt.set(Clazz.floatToInt(this.fScrPt.x), Clazz.floatToInt(this.fScrPt.y), Clazz.floatToInt(this.fScrPt.z)); +if (ptRef != null && this.xyzIsSlabbedInternal(ptRef)) this.fScrPt.z = this.iScrPt.z = 1; +return this.iScrPt; +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "xyzIsSlabbedInternal", +function(ptRef){ +return (this.slabPlane != null && ptRef.x * this.slabPlane.x + ptRef.y * this.slabPlane.y + ptRef.z * this.slabPlane.z + this.slabPlane.w > 0 || this.depthPlane != null && ptRef.x * this.depthPlane.x + ptRef.y * this.depthPlane.y + ptRef.z * this.depthPlane.z + this.depthPlane.w < 0); +}, "JU.T3"); +Clazz.defineMethod(c$, "move", +function(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps){ +this.movetoThread = J.api.Interface.getOption("thread.MoveToThread", this.vwr, "tm"); +this.movetoThread.setManager(this, this.vwr, Clazz.newArray(-1, [dRot, dTrans, Clazz.newFloatArray(-1, [dZoom, dSlab, floatSecondsTotal, fps])])); +if (floatSecondsTotal > 0) this.movetoThread.setEval(eval); +this.movetoThread.run(); +}, "J.api.JmolScriptEvaluator,JU.V3,~N,JU.V3,~N,~N,~N"); +Clazz.defineMethod(c$, "isInPosition", +function(axis, degrees){ +if (Float.isNaN(degrees)) return true; +this.aaTest1.setVA(axis, (degrees / 57.29577951308232)); +this.ptTest1.set(4.321, 1.23456, 3.14159); +this.getRotation(this.matrixTest); +this.matrixTest.rotate2(this.ptTest1, this.ptTest2); +this.matrixTest.setAA(this.aaTest1).rotate2(this.ptTest1, this.ptTest3); +return (this.ptTest3.distance(this.ptTest2) < 0.1); +}, "JU.V3,~N"); +Clazz.defineMethod(c$, "moveToPyMOL", +function(eval, floatSecondsTotal, pymolView){ +var m3 = JU.M3.newA9(pymolView); +m3.invert(); +var cameraX = pymolView[9]; +var cameraY = -pymolView[10]; +var pymolDistanceToCenter = -pymolView[11]; +var center = JU.P3.new3(pymolView[12], pymolView[13], pymolView[14]); +var pymolDistanceToSlab = pymolView[15]; +var pymolDistanceToDepth = pymolView[16]; +var fov = pymolView[17]; +var isOrtho = (fov >= 0); +this.setPerspectiveDepth(!isOrtho); +var theta = Math.abs(fov) / 2; +var tan = Math.tan(theta * 3.141592653589793 / 180); +var rotationRadius = pymolDistanceToCenter * tan; +var jmolCameraToCenter = 0.5 / tan; +var cameraDepth = jmolCameraToCenter - 0.5; +var f = 50 / rotationRadius; +if (pymolDistanceToSlab > 0) { +var slab = 50 + Clazz.floatToInt((pymolDistanceToCenter - pymolDistanceToSlab) * f); +var depth = 50 + Clazz.floatToInt((pymolDistanceToCenter - pymolDistanceToDepth) * f); +this.setSlabEnabled(true); +this.slabToPercent(slab); +this.depthToPercent(depth); +if (pymolView.length == 21) { +var depthCue = (pymolView[18] != 0); +var fog = (pymolView[19] != 0); +var fogStart = pymolView[20]; +this.setZShadeEnabled(depthCue); +if (depthCue) { +if (fog) { +this.vwr.setIntProperty("zSlab", Clazz.floatToInt(Math.min(100, slab + fogStart * (depth - slab)))); +} else { +this.vwr.setIntProperty("zSlab", Clazz.floatToInt((slab + depth) / 2)); +}this.vwr.setIntProperty("zDepth", depth); +}}}this.moveTo(eval, floatSecondsTotal, center, null, 0, m3, 100, NaN, NaN, rotationRadius, null, NaN, NaN, NaN, cameraDepth, cameraX, cameraY); +return true; +}, "J.api.JmolScriptEvaluator,~N,~A"); +Clazz.defineMethod(c$, "moveTo", +function(eval, floatSecondsTotal, center, rotAxis, degrees, matrixEnd, zoom, xTrans, yTrans, newRotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY){ +if (matrixEnd == null) { +matrixEnd = new JU.M3(); +var axis = JU.V3.newV(rotAxis); +if (Float.isNaN(degrees)) { +matrixEnd.m00 = NaN; +} else if (degrees < 0.01 && degrees > -0.01) { +matrixEnd.setScale(1); +} else { +if (axis.x == 0 && axis.y == 0 && axis.z == 0) { +return; +}var aaMoveTo = new JU.A4(); +aaMoveTo.setVA(axis, (degrees / 57.29577951308232)); +matrixEnd.setAA(aaMoveTo); +}}if (cameraX == this.cameraSetting.x) cameraX = NaN; +if (cameraY == this.cameraSetting.y) cameraY = NaN; +if (cameraDepth == this.cameraDepth) cameraDepth = NaN; +if (!Float.isNaN(cameraX)) xTrans = cameraX * 50 / newRotationRadius / this.width * this.screenPixelCount; +if (!Float.isNaN(cameraY)) yTrans = cameraY * 50 / newRotationRadius / this.height * this.screenPixelCount; +var pixelScale = (center == null ? this.scaleDefaultPixelsPerAngstrom : this.defaultScaleToScreen(newRotationRadius)); +if (floatSecondsTotal <= 0) { +this.setAll(center, matrixEnd, navCenter, zoom, xTrans, yTrans, newRotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY); +this.vwr.moveUpdate(floatSecondsTotal); +this.vwr.finalizeTransformParameters(); +return; +}try { +if (this.movetoThread == null) this.movetoThread = J.api.Interface.getOption("thread.MoveToThread", this.vwr, "tm"); +var nSteps = this.movetoThread.setManager(this, this.vwr, Clazz.newArray(-1, [center, matrixEnd, navCenter, Clazz.newFloatArray(-1, [floatSecondsTotal, zoom, xTrans, yTrans, newRotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY])])); +if (nSteps <= 0 || this.vwr.g.waitForMoveTo) { +if (nSteps > 0) this.movetoThread.setEval(eval); +this.movetoThread.run(); +if (!this.vwr.isSingleThreaded) this.movetoThread = null; +} else { +this.movetoThread.start(); +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "J.api.JmolScriptEvaluator,~N,JU.P3,JU.T3,~N,JU.M3,~N,~N,~N,~N,JU.P3,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "setAll", +function(center, m, navCenter, zoom, xTrans, yTrans, rotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY){ +if (!Float.isNaN(m.m00)) this.setRotation(m); +if (center != null) this.moveRotationCenter(center, !this.windowCentered); +if (navCenter != null && this.mode == 1) this.navigationCenter.setT(navCenter); +if (!Float.isNaN(cameraDepth)) this.setCameraDepthPercent(cameraDepth, false); +if (!Float.isNaN(cameraX) && !Float.isNaN(cameraY)) this.setCamera(cameraX, cameraY); +if (!Float.isNaN(zoom)) this.zoomToPercent(zoom); +if (!Float.isNaN(rotationRadius)) this.modelRadius = rotationRadius; +if (!Float.isNaN(pixelScale)) this.scaleDefaultPixelsPerAngstrom = pixelScale; +if (!Float.isNaN(xTrans) && !Float.isNaN(yTrans)) { +this.translateToPercent('x', xTrans); +this.translateToPercent('y', yTrans); +}if (this.mode == 1) { +if (!Float.isNaN(xNav) && !Float.isNaN(yNav)) this.navTranslatePercentOrTo(0, xNav, yNav); +if (!Float.isNaN(navDepth)) this.setNavigationDepthPercent(navDepth); +}}, "JU.P3,JU.M3,JU.P3,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "stopMotion", +function(){ +this.movetoThread = null; +}); +Clazz.defineMethod(c$, "getRotationText", +function(){ +this.axisangleT.setM(this.matrixRotate); +var degrees = (this.axisangleT.angle * 57.29577951308232); +var sb = new JU.SB(); +this.vectorT.set(this.axisangleT.x, this.axisangleT.y, this.axisangleT.z); +if (degrees < 0.01) return "{0 0 1 0}"; +this.vectorT.normalize(); +this.vectorT.scale(1000); +sb.append("{"); +JV.TransformManager.truncate0(sb, this.vectorT.x); +JV.TransformManager.truncate0(sb, this.vectorT.y); +JV.TransformManager.truncate0(sb, this.vectorT.z); +JV.TransformManager.truncate2(sb, degrees); +sb.append("}"); +return sb.toString(); +}); +Clazz.defineMethod(c$, "getMoveToText", +function(timespan, addComments){ +this.finalizeTransformParameters(); +var sb = new JU.SB(); +sb.append("moveto "); +if (addComments) sb.append("/* time, axisAngle */ "); +sb.appendF(timespan); +sb.append(" ").append(this.getRotationText()); +if (addComments) sb.append(" /* zoom, translation */ "); +JV.TransformManager.truncate2(sb, this.zmPctSet); +JV.TransformManager.truncate2(sb, this.getTranslationXPercent()); +JV.TransformManager.truncate2(sb, this.getTranslationYPercent()); +sb.append(" "); +if (addComments) sb.append(" /* center, rotationRadius */ "); +sb.append(this.getCenterText()); +sb.append(" ").appendF(this.modelRadius); +sb.append(this.getNavigationText(addComments)); +if (addComments) sb.append(" /* cameraDepth, cameraX, cameraY */ "); +JV.TransformManager.truncate2(sb, this.cameraDepth); +JV.TransformManager.truncate2(sb, this.cameraSetting.x); +JV.TransformManager.truncate2(sb, this.cameraSetting.y); +sb.append(";"); +return sb.toString(); +}, "~N,~B"); +Clazz.defineMethod(c$, "getCenterText", +function(){ +return JU.Escape.eP(this.fixedRotationCenter); +}); +Clazz.defineMethod(c$, "getRotateXyzText", +function(){ +var sb = new JU.SB(); +var m20 = this.matrixRotate.m20; +var rY = -(Math.asin(m20) * 57.29577951308232); +var rX; +var rZ; +if (m20 > .999 || m20 < -0.999) { +rX = -(Math.atan2(this.matrixRotate.m12, this.matrixRotate.m11) * 57.29577951308232); +rZ = 0; +} else { +rX = (Math.atan2(this.matrixRotate.m21, this.matrixRotate.m22) * 57.29577951308232); +rZ = (Math.atan2(this.matrixRotate.m10, this.matrixRotate.m00) * 57.29577951308232); +}sb.append("reset"); +sb.append(";center ").append(this.getCenterText()); +if (rX != 0) { +sb.append("; rotate x"); +JV.TransformManager.truncate2(sb, rX); +}if (rY != 0) { +sb.append("; rotate y"); +JV.TransformManager.truncate2(sb, rY); +}if (rZ != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ); +}sb.append(";"); +this.addZoomTranslationNavigationText(sb); +return sb.toString(); +}); +Clazz.defineMethod(c$, "addZoomTranslationNavigationText", +function(sb){ +if (this.zmPct != 100) { +sb.append(" zoom"); +JV.TransformManager.truncate2(sb, this.zmPct); +sb.append(";"); +}var tX = this.getTranslationXPercent(); +if (tX != 0) { +sb.append(" translate x"); +JV.TransformManager.truncate2(sb, tX); +sb.append(";"); +}var tY = this.getTranslationYPercent(); +if (tY != 0) { +sb.append(" translate y"); +JV.TransformManager.truncate2(sb, tY); +sb.append(";"); +}if (this.modelRadius != this.rotationRadiusDefault || this.modelRadius == 10) { +sb.append(" set rotationRadius"); +JV.TransformManager.truncate2(sb, this.modelRadius); +sb.append(";"); +}if (this.mode == 1) { +sb.append("navigate 0 center ").append(JU.Escape.eP(this.navigationCenter)); +sb.append(";navigate 0 translate"); +JV.TransformManager.truncate2(sb, this.getNavigationOffsetPercent('X')); +JV.TransformManager.truncate2(sb, this.getNavigationOffsetPercent('Y')); +sb.append(";navigate 0 depth "); +JV.TransformManager.truncate2(sb, this.navigationDepthPercent); +sb.append(";"); +}}, "JU.SB"); +Clazz.defineMethod(c$, "getRotateZyzText", +function(iAddComment){ +var sb = new JU.SB(); +var m = this.vwr.ms.getInfoM("defaultOrientationMatrix"); +if (m == null) { +m = this.matrixRotate; +} else { +m = JU.M3.newM3(m); +m.invert(); +m.mul2(this.matrixRotate, m); +}var m22 = m.m22; +var rY = (Math.acos(m22) * 57.29577951308232); +var rZ1; +var rZ2; +if (m22 > .999 || m22 < -0.999) { +rZ1 = (Math.atan2(m.m10, m.m11) * 57.29577951308232); +rZ2 = 0; +} else { +rZ1 = (Math.atan2(m.m21, -m.m20) * 57.29577951308232); +rZ2 = (Math.atan2(m.m12, m.m02) * 57.29577951308232); +}if (rZ1 != 0 && rY != 0 && rZ2 != 0 && iAddComment) sb.append("#Follows Z-Y-Z convention for Euler angles\n"); +sb.append("reset"); +sb.append(";center ").append(this.getCenterText()); +if (rZ1 != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ1); +}if (rY != 0) { +sb.append("; rotate y"); +JV.TransformManager.truncate2(sb, rY); +}if (rZ2 != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ2); +}sb.append(";"); +this.addZoomTranslationNavigationText(sb); +return sb.toString(); +}, "~B"); +c$.truncate0 = Clazz.defineMethod(c$, "truncate0", +function(sb, val){ +sb.appendC(' '); +sb.appendI(Math.round(val)); +}, "JU.SB,~N"); +c$.truncate2 = Clazz.defineMethod(c$, "truncate2", +function(sb, val){ +sb.appendC(' '); +sb.appendF(Math.round(val * 100) / 100); +}, "JU.SB,~N"); +Clazz.defineMethod(c$, "setSpinXYZ", +function(x, y, z){ +if (!Float.isNaN(x)) this.spinX = x; +if (!Float.isNaN(y)) this.spinY = y; +if (!Float.isNaN(z)) this.spinZ = z; +if (this.isSpinInternal || this.isSpinFixed) this.clearSpin(); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setSpinFps", +function(value){ +if (value <= 0) value = 1; + else if (value > 50) value = 50; +this.spinFps = value; +}, "~N"); +Clazz.defineMethod(c$, "setNavXYZ", +function(x, y, z){ +if (!Float.isNaN(x)) this.navX = x; +if (!Float.isNaN(y)) this.navY = y; +if (!Float.isNaN(z)) this.navZ = z; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "clearSpin", +function(){ +this.setSpinOff(); +this.setNavOn(false); +this.isSpinInternal = false; +this.isSpinFixed = false; +}); +Clazz.defineMethod(c$, "setSpinOn", +function(){ +this.setSpin(null, true, 3.4028235E38, null, null, null, false); +}); +Clazz.defineMethod(c$, "setSpinOff", +function(){ +this.setSpin(null, false, 3.4028235E38, null, null, null, false); +}); +Clazz.defineMethod(c$, "setSpin", +function(eval, spinOn, endDegrees, endPositions, dihedralList, bsAtoms, isGesture){ +if (this.navOn && spinOn) this.setNavOn(false); +if (this.spinOn == spinOn) return; +this.spinOn = spinOn; +this.vwr.g.setB("_spinning", spinOn); +if (spinOn) { +if (this.spinThread == null) { +this.spinThread = J.api.Interface.getOption("thread.SpinThread", this.vwr, "tm"); +this.spinThread.setManager(this, this.vwr, Clazz.newArray(-1, [Float.$valueOf(endDegrees), endPositions, dihedralList, bsAtoms, isGesture ? Boolean.TRUE : null])); +this.spinIsGesture = isGesture; +if ((Float.isNaN(endDegrees) || endDegrees == 3.4028235E38 || !this.vwr.g.waitForMoveTo)) { +this.spinThread.start(); +} else { +this.spinThread.setEval(eval); +this.spinThread.run(); +}}} else if (this.spinThread != null) { +this.spinThread.reset(); +this.spinThread = null; +}}, "J.api.JmolScriptEvaluator,~B,~N,JU.Lst,~A,JU.BS,~B"); +Clazz.defineMethod(c$, "setNavOn", +function(navOn){ +if (Float.isNaN(this.navFps)) return; +var wasOn = this.navOn; +if (navOn && this.spinOn) this.setSpin(null, false, 0, null, null, null, false); +this.navOn = navOn; +this.vwr.g.setB("_navigating", navOn); +if (!navOn) this.navInterrupt(); +if (navOn) { +if (this.navX == 0 && this.navY == 0 && this.navZ == 0) this.navZ = 1; +if (this.navFps == 0) this.navFps = 10; +if (this.spinThread == null) { +this.spinThread = J.api.Interface.getOption("thread.SpinThread", this.vwr, "tm"); +this.spinThread.setManager(this, this.vwr, null); +this.spinThread.start(); +}} else if (wasOn) { +if (this.spinThread != null) { +this.spinThread.interrupt(); +this.spinThread = null; +}}}, "~B"); +Clazz.defineMethod(c$, "setVibrationScale", +function(scale){ +this.vibrationScale = scale; +}, "~N"); +Clazz.defineMethod(c$, "setVibrationPeriod", +function(period){ +if (Float.isNaN(period)) { +period = this.vibrationPeriod; +} else if (period == 0) { +this.vibrationPeriod = 0; +this.vibrationPeriodMs = 0; +} else { +this.vibrationPeriod = Math.abs(period); +this.vibrationPeriodMs = Clazz.floatToInt(this.vibrationPeriod * 1000); +if (period > 0) return; +period = -period; +}this.setVibrationOn(period > 0 && (this.vwr.ms.getLastVibrationVector(this.vwr.am.cmi, 0) >= 0)); +}, "~N"); +Clazz.defineMethod(c$, "setVibrationT", +function(t){ +this.vibrationT.x = this.vibrationT.y = this.vibrationT.z = t; +if (this.vibrationScale == 0) this.vibrationScale = this.vwr.g.vibrationScale; +}, "~N"); +Clazz.defineMethod(c$, "isVibrationOn", +function(){ +return this.vibrationOn; +}); +Clazz.defineMethod(c$, "setVibrationOn", +function(vibrationOn){ +if (!vibrationOn) { +if (this.vibrationThread != null) { +this.vibrationThread.interrupt(); +this.vibrationThread = null; +}this.vibrationOn = false; +this.vibrationT.x = 0; +return; +}if (this.vwr.ms.mc < 1) { +this.vibrationOn = false; +this.vibrationT.x = 0; +return; +}if (this.vibrationThread == null) { +this.vibrationThread = J.api.Interface.getOption("thread.VibrationThread", this.vwr, "tm"); +this.vibrationThread.setManager(this, this.vwr, null); +this.vibrationThread.start(); +}this.vibrationOn = true; +}, "~B"); +Clazz.defineMethod(c$, "clearVibration", +function(){ +this.setVibrationOn(false); +this.vibrationScale = 0; +}); +Clazz.defineMethod(c$, "setStereoMode2", +function(twoColors){ +this.stereoMode = J.c.STER.CUSTOM; +this.stereoColors = twoColors; +}, "~A"); +Clazz.defineMethod(c$, "setStereoMode", +function(stereoMode){ +this.stereoColors = null; +this.stereoMode = stereoMode; +this.stereoDoubleDTI = (stereoMode === J.c.STER.DTI); +this.stereoDoubleFull = (stereoMode === J.c.STER.DOUBLE); +}, "J.c.STER"); +Clazz.defineMethod(c$, "setStereoDegrees", +function(stereoDegrees){ +this.stereoDegrees = stereoDegrees; +this.stereoRadians = (stereoDegrees * 0.017453292519943295); +}, "~N"); +Clazz.defineMethod(c$, "getStereoRotationMatrix", +function(stereoFrame){ +this.stereoFrame = stereoFrame; +if (!stereoFrame) return this.matrixRotate; +this.matrixTemp3.setAsYRotation(-this.stereoRadians); +this.matrixStereo.mul2(this.matrixTemp3, this.matrixRotate); +return this.matrixStereo; +}, "~B"); +Clazz.defineMethod(c$, "isWindowCentered", +function(){ +return this.windowCentered; +}); +Clazz.defineMethod(c$, "setWindowCentered", +function(TF){ +this.windowCentered = TF; +this.resetNavigationPoint(true); +}, "~B"); +Clazz.defineMethod(c$, "setRotationRadius", +function(angstroms, doAll){ +angstroms = (this.modelRadius = (angstroms <= 0 ? this.vwr.ms.calcRotationRadius(this.vwr.am.cmi, this.fixedRotationCenter, true) : angstroms)); +if (doAll) this.vwr.setRotationRadius(angstroms, false); +return angstroms; +}, "~N,~B"); +Clazz.defineMethod(c$, "setRotationCenterAndRadiusXYZ", +function(newCenterOfRotation, andRadius){ +this.resetNavigationPoint(false); +if (newCenterOfRotation == null) { +this.setFixedRotationCenter(this.rotationCenterDefault); +this.modelRadius = this.rotationRadiusDefault; +return; +}this.setFixedRotationCenter(newCenterOfRotation); +if (andRadius && this.windowCentered) this.modelRadius = this.vwr.ms.calcRotationRadius(this.vwr.am.cmi, this.fixedRotationCenter, true); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "setNewRotationCenter", +function(center, doScale){ +if (center == null) center = this.rotationCenterDefault; +if (this.windowCentered) { +this.translateToPercent('x', 0); +this.translateToPercent('y', 0); +this.setRotationCenterAndRadiusXYZ(center, true); +if (doScale) this.resetFitToScreen(true); +} else { +this.moveRotationCenter(center, true); +}}, "JU.P3,~B"); +Clazz.defineMethod(c$, "moveRotationCenter", +function(center, toXY){ +this.setRotationCenterAndRadiusXYZ(center, false); +if (toXY) this.setRotationPointXY(this.fixedRotationCenter); +}, "JU.P3,~B"); +Clazz.defineMethod(c$, "setCenter", +function(){ +this.setRotationCenterAndRadiusXYZ(this.fixedRotationCenter, true); +}); +Clazz.defineMethod(c$, "setCenterAt", +function(relativeTo, pt){ +var pt1 = JU.P3.newP(pt); +switch (relativeTo) { +case 1073741826: +break; +case 96: +pt1.add(this.vwr.ms.getAverageAtomPoint()); +break; +case 1812599299: +pt1.add(this.vwr.getBoundBoxCenter()); +break; +default: +pt1.setT(this.rotationCenterDefault); +break; +} +this.setRotationCenterAndRadiusXYZ(pt1, true); +this.resetFitToScreen(true); +}, "~N,JU.P3"); +Clazz.defineMethod(c$, "setFrameOffset", +function(modelIndex){ +if (this.frameOffsets == null || modelIndex < 0 || modelIndex >= this.frameOffsets.length) this.frameOffset.set(0, 0, 0); + else this.frameOffset.setT(this.frameOffsets[modelIndex]); +}, "~N"); +Clazz.defineMethod(c$, "setSelectedTranslation", +function(bsAtoms, xyz, xy, x){ +if (!this.perspectiveDepth) { +var v = new JU.V3(); +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +v.set(x, 0, 0); +break; +case 89: +case 121: +v.set(0, x, 0); +break; +case 90: +case 122: +v.set(0, 0, x); +break; +} +this.vwr.moveAtoms(null, null, this.matrixRotate, v, this.internalRotationCenter, false, bsAtoms, true, false); +return; +}this.bsSelectedAtoms = bsAtoms; +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +this.ptOffset.x += xy; +break; +case 89: +case 121: +this.ptOffset.y += xy; +break; +case 90: +case 122: +this.ptOffset.z += xy; +break; +} +}, "JU.BS,~S,~N,~N"); +Clazz.defineMethod(c$, "setNavFps", +function(navFps){ +this.navFps = navFps; +}, "~N"); +Clazz.defineMethod(c$, "calcCameraFactors", +function(){ +if (Float.isNaN(this.cameraDepth)) { +this.cameraDepth = this.cameraDepthSetting; +this.zoomFactor = 3.4028235E38; +}this.cameraDistance = this.cameraDepth * this.screenPixelCount; +this.referencePlaneOffset = this.cameraDistance + this.screenPixelCount / 2; +this.scalePixelsPerAngstrom = (this.scale3D && !this.perspectiveDepth && this.mode != 1 ? 72 / this.scale3DAngstromsPerInch * (this.antialias ? 2 : 1) : this.screenPixelCount / this.visualRangeAngstroms); +if (this.mode != 1) this.mode = (this.camera.z == 0 ? 0 : 2); +this.perspectiveShiftXY.set(this.camera.z == 0 ? 0 : this.camera.x * this.scalePixelsPerAngstrom / this.screenWidth * 100, this.camera.z == 0 ? 0 : this.camera.y * this.scalePixelsPerAngstrom / this.screenHeight * 100, 0); +this.modelRadiusPixels = this.modelRadius * this.scalePixelsPerAngstrom; +var offset100 = (2 * this.modelRadius) / this.visualRangeAngstroms * this.referencePlaneOffset; +if (this.mode == 1) { +this.calcNavCameraFactors(offset100); +return; +}this.zoomFactor = 3.4028235E38; +this.modelCenterOffset = this.referencePlaneOffset; +if (!this.scale3D || this.perspectiveDepth) this.scalePixelsPerAngstrom *= (this.modelCenterOffset / offset100) * this.zmPct / 100; +this.modelRadiusPixels = this.modelRadius * this.scalePixelsPerAngstrom; +}); +Clazz.defineMethod(c$, "calcNavCameraFactors", +function(offset100){ +if (this.zoomFactor == 3.4028235E38) { +if (this.zmPct > 10000) this.zmPct = 10000; +this.modelCenterOffset = offset100 * 100 / this.zmPct; +} else if (this.prevZoomSetting != this.zmPctSet) { +if (this.zoomRatio == 0) this.modelCenterOffset = offset100 * 100 / this.zmPctSet; + else this.modelCenterOffset += (1 - this.zoomRatio) * this.referencePlaneOffset; +this.navMode = -1; +}this.prevZoomSetting = this.zmPctSet; +this.zoomFactor = this.modelCenterOffset / this.referencePlaneOffset; +this.zmPct = (this.zoomFactor == 0 ? 10000 : offset100 / this.modelCenterOffset * 100); +}, "~N"); +Clazz.defineMethod(c$, "getPerspectiveFactor", +function(z){ +return (z <= 0 ? this.referencePlaneOffset : this.referencePlaneOffset / z); +}, "~N"); +Clazz.defineMethod(c$, "unTransformPoint", +function(screenPt, coordPt){ +this.untransformedPoint.setT(screenPt); +switch (this.mode) { +case 1: +this.untransformedPoint.x -= this.navigationOffset.x; +this.untransformedPoint.y -= this.navigationOffset.y; +break; +case 2: +this.fScrPt.x += this.perspectiveShiftXY.x; +this.fScrPt.y += this.perspectiveShiftXY.y; +case 0: +this.untransformedPoint.x -= this.fixedRotationOffset.x; +this.untransformedPoint.y -= this.fixedRotationOffset.y; +} +if (this.perspectiveDepth) { +var factor = this.getPerspectiveFactor(this.untransformedPoint.z); +this.untransformedPoint.x /= factor; +this.untransformedPoint.y /= factor; +}switch (this.mode) { +case 1: +this.untransformedPoint.x += this.navigationShiftXY.x; +this.untransformedPoint.y += this.navigationShiftXY.y; +break; +case 2: +this.untransformedPoint.x -= this.perspectiveShiftXY.x; +this.untransformedPoint.y -= this.perspectiveShiftXY.y; +break; +} +this.matrixTransformInv.rotTrans2(this.untransformedPoint, coordPt); +}, "JU.T3,JU.T3"); +Clazz.defineMethod(c$, "resetNavigationPoint", +function(doResetSlab){ +if (this.zmPct < 5 && this.mode != 1) { +this.perspectiveDepth = true; +this.mode = 1; +return; +}if (this.mode == 1) { +this.navMode = 1; +this.slabPercentSetting = 0; +this.perspectiveDepth = true; +} else if (doResetSlab) { +this.slabPercentSetting = 100; +}this.vwr.setFloatProperty("slabRange", 0); +if (doResetSlab) { +this.setSlabEnabled(this.mode == 1); +}this.zoomFactor = 3.4028235E38; +this.zmPctSet = this.zmPct; +}, "~B"); +Clazz.defineMethod(c$, "setNavigatePt", +function(pt){ +this.navigationCenter.setT(pt); +this.navMode = 3; +this.navigating = true; +this.finalizeTransformParameters(); +this.navigating = false; +}, "JU.P3"); +Clazz.defineMethod(c$, "setNavigationSlabOffsetPercent", +function(percent){ +this.vwr.g.setF("navigationSlab", percent); +this.calcCameraFactors(); +this.navigationSlabOffset = percent / 50 * this.modelRadiusPixels; +}, "~N"); +Clazz.defineMethod(c$, "getNavigationOffset", +function(){ +this.transformPt3f(this.navigationCenter, this.navigationOffset); +return this.navigationOffset; +}); +Clazz.defineMethod(c$, "getNavPtHeight", +function(){ +return this.height / 2; +}); +Clazz.defineMethod(c$, "getNavigationOffsetPercent", +function(XorY){ +this.getNavigationOffset(); +if (this.width == 0 || this.height == 0) return 0; +return (XorY == 'X' ? (this.navigationOffset.x - this.width / 2) * 100 / this.width : (this.navigationOffset.y - this.getNavPtHeight()) * 100 / this.height); +}, "~S"); +Clazz.defineMethod(c$, "getNavigationText", +function(addComments){ +var s = (addComments ? " /* navigation center, translation, depth */ " : " "); +if (this.mode != 1) return s + "{0 0 0} 0 0 0"; +this.getNavigationOffset(); +return s + JU.Escape.eP(this.navigationCenter) + " " + this.getNavigationOffsetPercent('X') + " " + this.getNavigationOffsetPercent('Y') + " " + this.navigationDepthPercent; +}, "~B"); +Clazz.defineMethod(c$, "setScreenParameters", +function(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom){ +var pt = (this.mode == 1 ? JU.P3.newP(this.navigationCenter) : null); +var ptoff = JU.P3.newP(this.navigationOffset); +ptoff.x = ptoff.x / this.width; +ptoff.y = ptoff.y / this.height; +this.setScreenParameters0(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom); +if (pt != null) { +this.navigationCenter.setT(pt); +this.navTranslatePercentOrTo(-1, ptoff.x * this.width, ptoff.y * this.height); +this.setNavigatePt(pt); +}}, "~N,~N,~B,~B,~B,~B"); +Clazz.defineMethod(c$, "navInterrupt", +function(){ +if (this.nav != null) this.nav.interrupt(); +}); +Clazz.defineMethod(c$, "getNav", +function(){ +if (this.nav != null) return true; +this.nav = J.api.Interface.getOption("navigate.Navigator", this.vwr, "tm"); +if (this.nav == null) return false; +this.nav.set(this, this.vwr); +return true; +}); +Clazz.defineMethod(c$, "navigateList", +function(eval, list){ +if (this.getNav()) this.nav.navigateList(eval, list); +}, "J.api.JmolScriptEvaluator,JU.Lst"); +Clazz.defineMethod(c$, "navigateAxis", +function(rotAxis, degrees){ +if (this.getNav()) this.nav.navigateAxis(rotAxis, degrees); +}, "JU.V3,~N"); +Clazz.defineMethod(c$, "setNavigationOffsetRelative", +function(){ +if (this.getNav()) this.nav.setNavigationOffsetRelative(); +}); +Clazz.defineMethod(c$, "navigateKey", +function(keyCode, modifiers){ +if (this.getNav()) this.nav.navigateKey(keyCode, modifiers); +}, "~N,~N"); +Clazz.defineMethod(c$, "setNavigationDepthPercent", +function(percent){ +if (this.getNav()) this.nav.setNavigationDepthPercent(percent); +}, "~N"); +Clazz.defineMethod(c$, "navTranslatePercentOrTo", +function(seconds, x, y){ +if (this.getNav()) this.nav.navTranslatePercentOrTo(seconds, x, y); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "calcNavigationPoint", +function(){ +if (this.getNav()) this.nav.calcNavigationPoint(); +}); +Clazz.defineMethod(c$, "getNavigationState", +function(){ +return (this.mode == 1 && this.getNav() ? this.nav.getNavigationState() : ""); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/TransformManager4D.js b/config/plugins/visualizations/jmol/static/j2s/JV/TransformManager4D.js new file mode 100755 index 000000000000..aad23e84afc0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/TransformManager4D.js @@ -0,0 +1,108 @@ +Clazz.declarePackage("JV"); +Clazz.load(["JV.TransformManager", "JU.M4", "$.P4", "$.V3"], "JV.TransformManager4D", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.is4D = false; +this.mouseMode = 3; +this.m2_rotate = null; +this.m3_toScreen = null; +this.zOffset = 0; +this.v1 = null; +this.m4 = null; +this.p4 = null; +this.zero = null; +Clazz.instantialize(this, arguments);}, JV, "TransformManager4D", JV.TransformManager); +Clazz.prepareFields (c$, function(){ +this.m3_toScreen = new JU.M4(); +this.v1 = new JU.V3(); +this.m4 = new JU.M4(); +this.p4 = new JU.P4(); +this.zero = new JU.V3(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JV.TransformManager4D, []); +}); +Clazz.overrideMethod(c$, "resetRotation", +function(){ +if (this.m2_rotate != null) this.m2_rotate.setIdentity(); +this.matrixRotate.setScale(1); +}); +Clazz.overrideMethod(c$, "rotateXYBy", +function(xDelta, yDelta, bsAtoms){ +this.rotate3DBall(xDelta, yDelta, bsAtoms); +switch (this.is4D && bsAtoms == null ? this.mouseMode : 0) { +case 0: +this.m2_rotate = null; +break; +case 1: +this.checkM2(); +this.rotate4DBall(0, xDelta, yDelta); +break; +case 2: +this.checkM2(); +this.rotate4DBall(xDelta, 0, yDelta); +break; +case 3: +this.checkM2(); +this.rotate4DBall(xDelta, yDelta, 0); +break; +} +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "rotate4DBall", +function(xDelta, yDelta, zDelta){ +var scale = 50; +this.setAsBallRotation(this.m4, scale, xDelta, yDelta, zDelta); +this.m2_rotate.mul2(this.m4, this.m2_rotate); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "setAsBallRotation", +function(m, scale, dx, dy, dz){ +var dxyz2 = dx * dx + dy * dy + dz * dz; +var sxyz = Math.sqrt(dxyz2); +var th = sxyz / scale; +var c = Math.cos(th); +var s = Math.sin(th); +var nx = dx / sxyz; +var ny = dy / sxyz; +var nz = dz / sxyz; +var c1 = c - 1; +m.m00 = 1 + c1 * nx * nx; +m.m11 = 1 + c1 * ny * ny; +m.m22 = 1 + c1 * nz * nz; +m.m33 = c; +m.m01 = m.m10 = c1 * nx * ny; +m.m02 = m.m20 = c1 * nx * nz; +m.m12 = m.m21 = c1 * ny * nz; +m.m30 = -(m.m03 = s * nx); +m.m31 = -(m.m13 = s * ny); +m.m32 = -(m.m23 = s * nz); +}, "JU.M4,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "checkM2", +function(){ +if (this.m2_rotate == null) this.m2_rotate = JU.M4.newMV(this.matrixRotate, this.zero); +}); +Clazz.defineMethod(c$, "calcTransformMatrix", +function(){ +Clazz.superCall(this, JV.TransformManager4D, "calcTransformMatrix", []); +this.doTransform4D = (this.is4D && !this.stereoFrame && this.mode != 1); +if (!this.doTransform4D) return; +this.v1.sub2(this.frameOffset, this.fixedRotationCenter); +this.checkM2(); +this.m3_toScreen.setIdentity(); +this.m3_toScreen.m00 = this.m3_toScreen.m11 = this.m3_toScreen.m22 = this.scalePixelsPerAngstrom; +this.m3_toScreen.m11 = this.m3_toScreen.m22 = -this.scalePixelsPerAngstrom; +System.out.println(this.m2_rotate); +this.zOffset = this.modelCenterOffset; +}); +Clazz.overrideMethod(c$, "getScreenTemp", +function(ptXYZ){ +if (this.doTransform4D && Clazz.instanceOf(ptXYZ,"JU.T4")) { +this.p4.add2(ptXYZ, this.v1); +this.m2_rotate.rotate(this.p4); +this.fScrPt.setT(this.p4); +this.m3_toScreen.rotTrans(this.fScrPt); +this.fScrPt.z += this.zOffset; +} else { +this.matrixTransform.rotTrans2(ptXYZ, this.fScrPt); +}}, "JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/Viewer.js b/config/plugins/visualizations/jmol/static/j2s/JV/Viewer.js new file mode 100755 index 000000000000..891b7bc09558 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/Viewer.js @@ -0,0 +1,7138 @@ +Clazz.declarePackage("JV"); +Clazz.load(["java.lang.Enum", "J.api.JmolViewer", "$.PlatformViewer", "J.atomdata.AtomDataServer", "java.util.Hashtable", "JU.P3"], "JV.Viewer", ["java.util.Arrays", "JU.AU", "$.BS", "$.CU", "$.DF", "$.Lst", "$.P3i", "$.PT", "$.Quat", "$.Rdr", "$.SB", "J.adapter.smarter.SmarterJmolAdapter", "J.api.Interface", "J.atomdata.RadiusData", "J.c.FIL", "$.STER", "$.VDW", "J.i18n.GT", "JM.Measurement", "$.ModelSet", "JS.SV", "$.T", "J.thread.TimeoutThread", "JU.BSUtil", "$.C", "$.CommandHistory", "$.Elements", "$.Escape", "$.GData", "$.JmolMolecule", "$.Logger", "$.Parser", "$.TempArray", "JV.ActionManager", "$.AnimationManager", "$.ColorManager", "$.FileManager", "$.GlobalSettings", "$.JC", "$.ModelManager", "$.SelectionManager", "$.ShapeManager", "$.StateManager", "$.StatusManager", "$.TransformManager", "JV.binding.Binding"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.testAsync = false; +this.autoExit = false; +this.haveDisplay = false; +this.isJSNoAWT = false; +this.isWebGL = false; +this.isSingleThreaded = false; +this.queueOnHold = false; +this.fullName = ""; +this.compiler = null; +this.definedAtomSets = null; +this.ms = null; +this.fm = null; +this.isApplet = false; +this.isJNLP = false; +this.isSyntaxAndFileCheck = false; +this.isSyntaxCheck = false; +this.listCommands = false; +this.mustRender = false; +this.htmlName = ""; +this.appletName = ""; +this.tryPt = 0; +this.insertedCommand = ""; +this.gdata = null; +this.html5Applet = null; +this.acm = null; +this.am = null; +this.cm = null; +this.dm = null; +this.shm = null; +this.slm = null; +this.rm = null; +this.g = null; +this.sm = null; +this.tm = null; +this.syncId = ""; +this.logFilePath = ""; +this.allowScripting = false; +this.isPrintOnly = false; +this.isSignedApplet = false; +this.isSignedAppletLocal = false; +this.isSilent = false; +this.multiTouch = false; +this.noGraphicsAllowed = false; +this.useCommandThread = false; +this.commandOptions = null; +this.vwrOptions = null; +this.display = null; +this.modelAdapter = null; +this.access = null; +this.commandHistory = null; +this.mm = null; +this.stm = null; +this.scm = null; +this.eval = null; +this.tempArray = null; +this.allowArrayDotNotation = false; +this.async = false; +this.executor = null; +this.screenWidth = 0; +this.screenHeight = 0; +this.defaultVdw = null; +this.rd = null; +this.chainMap = null; +this.chainList = null; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.privateKey = 0; +this.dataOnly = false; +this.maximumSize = 2147483647; +this.gRight = null; +this.isStereoSlave = false; +this.imageFontScaling = 1; +this.antialiased = false; +this.prevFrame = -2147483648; +this.prevMorphModel = 0; +this.haveJDX = false; +this.jsv = null; +this.outputManager = null; +this.jzt = null; +this.isPreviewOnly = false; +this.headless = false; +this.movableBitSet = null; +this.hasSelected = false; +this.mouse = null; +this.ligandModels = null; +this.ligandModelSet = null; +this.annotationParser = null; +this.dssrParser = null; +this.minimizer = null; +this.smilesMatcher = null; +this.jsc = null; +this.lastData = null; +this.motionEventNumber = 0; +this.inMotion = false; +this.refreshing = true; +this.axesAreTainted = false; +this.captureParams = null; +this.jsParams = null; +this.cirChecked = false; +this.hoverAtomIndex = -1; +this.hoverText = null; +this.hoverLabel = "%U"; +this.hoverEnabled = true; +this.currentCursor = 0; +this.ptTemp = null; +this.selectionHalosEnabled = false; +this.frankOn = true; +this.noFrankEcho = true; +this.scriptEditorVisible = false; +this.appConsole = null; +this.scriptEditor = null; +this.jmolpopup = null; +this.modelkit = null; +this.headlessImageParams = null; +this.pm = null; +this.isTainted = true; +this.movingSelected = false; +this.showSelected = false; +this.ptScreen = null; +this.ptScreenNew = null; +this.ptNew = null; +this.atomHighlighted = -1; +this.creatingImage = false; +this.bsUserVdws = null; +this.userVdws = null; +this.userVdwMars = null; +this.currentShapeID = -1; +this.currentShapeState = null; +this.localFunctions = null; +this.$isKiosk = false; +this.displayLoadErrors = true; +this.$isParallel = false; +this.stateScriptVersionInt = 2147483647; +this.jsExporter3D = null; +this.timeouts = null; +this.chainCaseSpecified = false; +this.nmrCalculation = null; +this.logFileName = null; +this.jbr = null; +this.jcm = null; +this.jsonParser = null; +this.triangulator = null; +this.nboParser = null; +this.macros = null; +this.consoleFontScale = 1; +Clazz.instantialize(this, arguments);}, JV, "Viewer", J.api.JmolViewer, [J.atomdata.AtomDataServer, J.api.PlatformViewer]); +Clazz.prepareFields (c$, function(){ +this.ptScreen = new JU.P3(); +this.ptScreenNew = new JU.P3(); +this.ptNew = new JU.P3(); +}); +Clazz.makeConstructor(c$, +function(info){ +Clazz.superConstructor (this, JV.Viewer, []); +this.commandHistory = new JU.CommandHistory(); +this.rd = new J.atomdata.RadiusData(null, 0, null, null); +this.defaultVdw = J.c.VDW.JMOL; +this.localFunctions = new java.util.Hashtable(); +this.privateKey = Math.random(); +this.chainMap = new java.util.Hashtable(); +this.chainList = new JU.Lst(); +this.setOptions(info); +}, "java.util.Map"); +Clazz.defineMethod(c$, "finalize", +function(){ +if (JU.Logger.debugging) JU.Logger.debug("vwr finalize " + this); +Clazz.superCall(this, JV.Viewer, "finalize", []); +}); +Clazz.defineMethod(c$, "setInsertedCommand", +function(strScript){ +this.insertedCommand = strScript; +}, "~S"); +c$.getJmolVersion = Clazz.overrideMethod(c$, "getJmolVersion", +function(){ +return (JV.Viewer.version_date == null ? JV.Viewer.version_date = JV.JC.version + " " + JV.JC.date : JV.Viewer.version_date); +}); +c$.allocateViewer = Clazz.defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, implementedPlatform){ +var info = new java.util.Hashtable(); +info.put("display", display); +info.put("adapter", modelAdapter); +info.put("statusListener", statusListener); +info.put("platform", implementedPlatform); +info.put("options", commandOptions); +info.put("fullName", fullName); +info.put("documentBase", documentBase); +info.put("codeBase", codeBase); +return new JV.Viewer(info); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform"); +Clazz.defineMethod(c$, "haveAccess", +function(a){ +return this.access === a; +}, "JV.Viewer.ACCESS"); +Clazz.overrideMethod(c$, "getModelAdapter", +function(){ +return (this.modelAdapter == null ? this.modelAdapter = new J.adapter.smarter.SmarterJmolAdapter() : this.modelAdapter); +}); +Clazz.overrideMethod(c$, "getSmartsMatch", +function(smarts, bsSelected){ +if (bsSelected == null) bsSelected = this.bsA(); +return this.getSmilesMatcher().getSubstructureSet(smarts, this.ms.at, this.ms.ac, bsSelected, 2); +}, "~S,JU.BS"); +Clazz.defineMethod(c$, "isSubstructure", +function(smarts, smiles){ +try { +var map = this.getSmilesMatcher().find(smarts, smiles, 10); +return map != null && map.length > 0; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~S,~S"); +Clazz.defineMethod(c$, "hasStructure", +function(pattern, smiles, isSmarts){ +try { +var ret = this.getSmilesMatcher().hasStructure(pattern, Clazz.newArray(-1, [smiles]), (isSmarts ? 2 : 1) | 8); +return ret[0] == 1; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "getSmartsMatchForNodes", +function(smarts, atoms){ +return this.getSmilesMatcher().getSubstructureSet(smarts, atoms, atoms.length, null, 2); +}, "~S,~A"); +Clazz.defineMethod(c$, "getSmartsMap", +function(smilesOrSmarts, bsSelected, flags){ +if (bsSelected == null) bsSelected = this.bsA(); +if (flags == 0) flags = 2; +return this.getSmilesMatcher().getCorrelationMaps(smilesOrSmarts, this.ms.at, this.ms.ac, bsSelected, flags); +}, "~S,JU.BS,~N"); +Clazz.defineMethod(c$, "setOptions", +function(info){ +this.vwrOptions = info; +if (JU.Logger.debugging) { +JU.Logger.debug("Viewer constructor " + this); +}this.modelAdapter = info.get("adapter"); +var statusListener = info.get("statusListener"); +this.fullName = info.get("fullName"); +if (this.fullName == null) this.fullName = ""; +var o = info.get("codePath"); +if (o == null) o = "../java/"; +JV.Viewer.appletCodeBase = o.toString(); +JV.Viewer.appletIdiomaBase = JV.Viewer.appletCodeBase.substring(0, JV.Viewer.appletCodeBase.lastIndexOf("/", JV.Viewer.appletCodeBase.length - 2) + 1) + "idioma"; +o = info.get("documentBase"); +JV.Viewer.appletDocumentBase = (o == null ? "" : o.toString()); +o = info.get("options"); +this.commandOptions = (o == null ? "" : o.toString()); +if (info.containsKey("debug") || this.commandOptions.indexOf("-debug") >= 0) JU.Logger.setLogLevel(5); +if (this.isApplet && info.containsKey("maximumSize")) this.setMaximumSize((info.get("maximumSize")).intValue()); +this.isJNLP = this.checkOption2("isJNLP", "-jnlp"); +if (this.isJNLP) JU.Logger.info("setting JNLP mode TRUE"); +this.isSignedApplet = this.isJNLP || this.checkOption2("signedApplet", "-signed"); +this.isApplet = this.isSignedApplet || this.checkOption2("applet", "-applet"); +this.allowScripting = !this.checkOption2("noscripting", "-noscripting"); +var i = this.fullName.indexOf("__"); +this.htmlName = (i < 0 ? this.fullName : this.fullName.substring(0, i)); +this.appletName = JU.PT.split(this.htmlName + "_", "_")[0]; +this.syncId = (i < 0 ? "" : this.fullName.substring(i + 2, this.fullName.length - 2)); +this.access = (this.checkOption2("access:READSPT", "-r") ? JV.Viewer.ACCESS.READSPT : this.checkOption2("access:NONE", "-R") ? JV.Viewer.ACCESS.NONE : JV.Viewer.ACCESS.ALL); +this.isPreviewOnly = info.containsKey("previewOnly"); +if (this.isPreviewOnly) info.remove("previewOnly"); +this.isPrintOnly = this.checkOption2("printOnly", "-p"); +this.dataOnly = this.checkOption2("isDataOnly", "\0"); +this.autoExit = this.checkOption2("exit", "-x"); +o = info.get("platform"); +var platform = "unknown"; +if (o == null) { +o = (this.commandOptions.contains("platform=") ? this.commandOptions.substring(this.commandOptions.indexOf("platform=") + 9) : "J.awt.Platform"); +}if ((typeof(o)=='string')) { +platform = o; +this.isWebGL = (platform.indexOf(".awtjs.") >= 0); +JV.Viewer.isJS = this.isJSNoAWT = this.isWebGL || (platform.indexOf(".awtjs2d.") >= 0); +this.async = !this.dataOnly && !this.autoExit && (this.testAsync || JV.Viewer.isJS && info.containsKey("async")); +var applet = null; +var jmol = null; +var javaver = "?"; +{ +if(self.Jmol) { jmol = Jmol; applet = +Jmol._applets[this.htmlName.split("_object")[0]]; javaver = +Jmol._version; } +}if (javaver != null) { +this.html5Applet = applet; +JV.Viewer.jmolObject = jmol; +JV.Viewer.strJavaVersion = javaver; +JV.Viewer.strJavaVendor = "Java2Script " + (this.isWebGL ? "(WebGL)" : "(HTML5)"); +}o = J.api.Interface.getInterface(platform, this, "setOptions"); +}this.apiPlatform = o; +this.display = info.get("display"); +this.isSingleThreaded = this.apiPlatform.isSingleThreaded(); +this.noGraphicsAllowed = this.checkOption2("noDisplay", "-n"); +this.headless = this.apiPlatform.isHeadless(); +this.haveDisplay = (this.isWebGL || this.display != null && !this.noGraphicsAllowed && !this.headless && !this.dataOnly); +this.noGraphicsAllowed = new Boolean (this.noGraphicsAllowed & (this.display == null)).valueOf(); +this.headless = new Boolean (this.headless | this.noGraphicsAllowed).valueOf(); +if (this.haveDisplay) { +this.mustRender = true; +this.multiTouch = this.checkOption2("multiTouch", "-multitouch"); +{ +if (!this.isWebGL) this.display = +document.getElementById(this.display); +}} else { +this.display = null; +}this.apiPlatform.setViewer(this, this.display); +o = info.get("graphicsAdapter"); +if (o == null && !this.isWebGL) o = J.api.Interface.getOption("g3d.Graphics3D", this, "setOptions"); +this.gdata = (o == null && (this.isWebGL || !JV.Viewer.isJS) ? new JU.GData() : o); +this.gdata.initialize(this, this.apiPlatform); +this.stm = new JV.StateManager(this); +this.cm = new JV.ColorManager(this, this.gdata); +this.sm = new JV.StatusManager(this); +var is4D = info.containsKey("4DMouse"); +this.tm = JV.TransformManager.getTransformManager(this, 2147483647, 0, is4D); +this.slm = new JV.SelectionManager(this); +if (this.haveDisplay) { +this.acm = (this.multiTouch ? J.api.Interface.getOption("multitouch.ActionManagerMT", null, null) : new JV.ActionManager()); +this.acm.setViewer(this, this.commandOptions + "-multitouch-" + info.get("multiTouch")); +this.mouse = this.apiPlatform.getMouseManager(this.privateKey, this.display); +if (this.multiTouch && !this.checkOption2("-simulated", "-simulated")) this.apiPlatform.setTransparentCursor(this.display); +}this.mm = new JV.ModelManager(this); +this.shm = new JV.ShapeManager(this); +this.tempArray = new JU.TempArray(); +this.am = new JV.AnimationManager(this); +o = info.get("repaintManager"); +if (o == null) o = J.api.Interface.getOption("render.RepaintManager", this, "setOptions"); +if (JV.Viewer.isJS || o != null && !o.equals("")) (this.rm = o).set(this, this.shm); +this.ms = new JM.ModelSet(this, null); +this.initialize(true, false); +this.fm = new JV.FileManager(this); +this.definedAtomSets = new java.util.Hashtable(); +this.setJmolStatusListener(statusListener); +if (this.isApplet) { +JU.Logger.info("vwrOptions: \n" + JU.Escape.escapeMap(this.vwrOptions)); +var path = this.vwrOptions.get("documentLocation"); +if (!JV.Viewer.isJS && path != null && path.startsWith("file:/")) { +path = path.substring(0, path.substring(0, (path + "?").indexOf("?")).lastIndexOf("/")); +JU.Logger.info("setting current directory to " + path); +this.cd(path); +}path = JV.Viewer.appletDocumentBase; +i = path.indexOf("#"); +if (i >= 0) path = path.substring(0, i); +i = path.lastIndexOf("?"); +if (i >= 0) path = path.substring(0, i); +i = path.lastIndexOf("/"); +if (i >= 0) path = path.substring(0, i); +JV.Viewer.jsDocumentBase = path; +this.fm.setAppletContext(JV.Viewer.appletDocumentBase); +var appletProxy = info.get("appletProxy"); +if (appletProxy != null) this.setStringProperty("appletProxy", appletProxy); +if (this.isSignedApplet) { +this.logFilePath = JU.PT.rep(JV.Viewer.appletCodeBase, "file://", ""); +this.logFilePath = JU.PT.rep(this.logFilePath, "file:/", ""); +if (this.logFilePath.indexOf("//") >= 0) this.logFilePath = null; + else this.isSignedAppletLocal = true; +} else if (!JV.Viewer.isJS) { +this.logFilePath = null; +} new J.i18n.GT(this, info.get("language")); +if (JV.Viewer.isJS) this.acm.createActions(); +} else { +this.gdata.setBackgroundTransparent(this.checkOption2("backgroundTransparent", "-b")); +this.isSilent = this.checkOption2("silent", "-i"); +if (this.isSilent) JU.Logger.setLogLevel(3); +if (this.headless && !this.isSilent) JU.Logger.info("Operating headless display=" + this.display + " nographicsallowed=" + this.noGraphicsAllowed); +this.isSyntaxAndFileCheck = this.checkOption2("checkLoad", "-C"); +this.isSyntaxCheck = this.isSyntaxAndFileCheck || this.checkOption2("check", "-c"); +this.listCommands = this.checkOption2("listCommands", "-l"); +this.cd("."); +if (this.headless) { +this.headlessImageParams = info.get("headlessImage"); +o = info.get("headlistMaxTimeMs"); +if (o == null) o = Integer.$valueOf(60000); +this.setTimeout("" + Math.random(), (o).intValue(), "exitJmol"); +}}this.useCommandThread = !this.headless && this.checkOption2("useCommandThread", "-threaded"); +this.setStartupBooleans(); +this.setIntProperty("_nProcessors", JV.Viewer.nProcessors); +if (!this.isSilent) { +JU.Logger.info("(C) 2015 Jmol Development" + "\nJmol Version: " + JV.Viewer.getJmolVersion() + "\njava.vendor: " + JV.Viewer.strJavaVendor + "\njava.version: " + JV.Viewer.strJavaVersion + "\nos.name: " + JV.Viewer.strOSName + "\nAccess: " + this.access + "\nmemory: " + this.getP("_memory") + "\nprocessors available: " + JV.Viewer.nProcessors + "\nuseCommandThread: " + this.useCommandThread + (!this.isApplet ? "" : "\nappletId:" + this.htmlName + (this.isSignedApplet ? " (signed)" : ""))); +}this.zap(false, true, false); +this.g.setO("language", J.i18n.GT.getLanguage()); +this.g.setO("_hoverLabel", this.hoverLabel); +this.stm.setJmolDefaults(); +JU.Elements.covalentVersion = 1; +this.allowArrayDotNotation = true; +if (this.allowScripting) this.getScriptManager(); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setMaximumSize", +function(x){ +this.maximumSize = Math.max(x, 100); +}, "~N"); +Clazz.defineMethod(c$, "setStereo", +function(isStereoSlave, gRight){ +this.isStereoSlave = isStereoSlave; +this.gRight = gRight; +}, "~B,~O"); +Clazz.defineMethod(c$, "getMenu", +function(type){ +this.getPopupMenu(); +if (type.equals("\0")) { +this.popupMenu(this.screenWidth - 120, 0, 'j'); +return "OK"; +}return (this.jmolpopup == null ? "" : this.jmolpopup.jpiGetMenuAsString("Jmol version " + JV.Viewer.getJmolVersion() + "|_GET_MENU|" + type)); +}, "~S"); +Clazz.overrideMethod(c$, "resizeInnerPanel", +function(width, height){ +if (!this.autoExit && this.haveDisplay) return this.sm.resizeInnerPanel(width, height); +this.setScreenDimension(width, height); +return Clazz.newIntArray(-1, [this.screenWidth, this.screenHeight]); +}, "~N,~N"); +Clazz.overrideMethod(c$, "setScreenDimension", +function(width, height){ +height = Math.min(height, this.maximumSize); +width = Math.min(width, this.maximumSize); +if (this.tm.stereoDoubleFull) width = Clazz.doubleToInt((width + 1) / 2); +if (this.screenWidth == width && this.screenHeight == height) return; +this.resizeImage(width, height, false, false, true); +}, "~N,~N"); +Clazz.defineMethod(c$, "resizeImage", +function(width, height, isImageWrite, isExport, isReset){ +if (!isImageWrite && this.creatingImage) return; +var wasAntialiased = this.antialiased; +this.antialiased = (isReset ? this.g.antialiasDisplay && this.checkMotionRendering(603979786) : isImageWrite && !isExport ? this.g.antialiasImages : false); +if (!isExport && !isImageWrite && (width > 0 || wasAntialiased != this.antialiased)) this.setShapeProperty(5, "clearBoxes", null); +this.imageFontScaling = (this.antialiased ? 2 : 1) * (isReset || this.tm.scale3D || width <= 0 ? 1 : (this.g.zoomLarge == (height > width) ? height : width) * 1 / this.getScreenDim()); +if (width > 0) { +this.screenWidth = width; +this.screenHeight = height; +if (!isImageWrite) { +this.g.setI("_width", width); +this.g.setI("_height", height); +}} else { +width = (this.screenWidth == 0 ? this.screenWidth = 500 : this.screenWidth); +height = (this.screenHeight == 0 ? this.screenHeight = 500 : this.screenHeight); +}this.tm.setScreenParameters(width, height, isImageWrite || isReset ? this.g.zoomLarge : false, this.antialiased, false, false); +this.gdata.setWindowParameters(width, height, this.antialiased); +this.setModelkitPropertySafely("frameresized", null); +if (width > 0 && !isImageWrite) this.setStatusResized(width, height); +}, "~N,~N,~B,~B,~B"); +Clazz.overrideMethod(c$, "getScreenWidth", +function(){ +return this.screenWidth; +}); +Clazz.overrideMethod(c$, "getScreenHeight", +function(){ +return this.screenHeight; +}); +Clazz.defineMethod(c$, "getScreenDim", +function(){ +return (this.g.zoomLarge == (this.screenHeight > this.screenWidth) ? this.screenHeight : this.screenWidth); +}); +Clazz.defineMethod(c$, "setWidthHeightVar", +function(){ +this.g.setI("_width", this.screenWidth); +this.g.setI("_height", this.screenHeight); +}); +Clazz.defineMethod(c$, "getBoundBoxCenterX", +function(){ +return Clazz.doubleToInt(this.screenWidth / 2); +}); +Clazz.defineMethod(c$, "getBoundBoxCenterY", +function(){ +return Clazz.doubleToInt(this.screenHeight / 2); +}); +Clazz.defineMethod(c$, "updateWindow", +function(width, height){ +if (!this.refreshing || this.creatingImage) return (this.refreshing ? false : !JV.Viewer.isJS); +if (this.isTainted || this.tm.slabEnabled) this.setModelVisibility(); +this.isTainted = false; +if (this.rm != null) { +if (width != 0) this.setScreenDimension(width, height); +}return true; +}, "~N,~N"); +Clazz.defineMethod(c$, "getImage", +function(isStereo, isImageWrite){ +var image = null; +try { +this.beginRendering(isStereo, isImageWrite); +this.render(); +this.gdata.endRendering(); +image = this.gdata.getScreenImage(isImageWrite); +} catch (e$$) { +if (Clazz.exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.gdata.getScreenImage(isImageWrite); +this.handleError(er, false); +this.setErrorMessage("Error during rendering: " + er, null); +} +} else if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.out.println("render error" + e); +} +} else { +throw e$$; +} +} +return image; +}, "~B,~B"); +Clazz.defineMethod(c$, "beginRendering", +function(isStereo, isImageWrite){ +this.gdata.beginRendering(this.tm.getStereoRotationMatrix(isStereo), this.g.translucent, isImageWrite, !this.checkMotionRendering(603979967)); +}, "~B,~B"); +Clazz.defineMethod(c$, "render", +function(){ +if (this.mm.modelSet == null || !this.mustRender || !this.refreshing && !this.creatingImage || this.rm == null) return; +var antialias2 = this.antialiased && this.g.antialiasTranslucent; +var navMinMax = this.shm.finalizeAtoms(this.tm.bsSelectedAtoms, true); +if (this.isWebGL) { +this.rm.renderExport(this.gdata, this.ms, this.jsParams); +this.notifyViewerRepaintDone(); +return; +}this.rm.render(this.gdata, this.ms, true, navMinMax); +if (this.gdata.setPass2(antialias2)) { +this.tm.setAntialias(antialias2); +this.rm.render(this.gdata, this.ms, false, null); +this.tm.setAntialias(this.antialiased); +}}); +Clazz.defineMethod(c$, "drawImage", +function(graphic, img, x, y, isDTI){ +if (graphic != null && img != null) { +this.apiPlatform.drawImage(graphic, img, x, y, this.screenWidth, this.screenHeight, isDTI); +}this.gdata.releaseScreenImage(); +}, "~O,~O,~N,~N,~B"); +Clazz.defineMethod(c$, "getScreenImage", +function(){ +return this.getScreenImageBuffer(null, true); +}); +Clazz.overrideMethod(c$, "getScreenImageBuffer", +function(g, isImageWrite){ +if (this.isWebGL) return (isImageWrite ? this.apiPlatform.allocateRgbImage(0, 0, null, 0, false, true) : null); +var isDouble = this.tm.stereoDoubleFull || this.tm.stereoDoubleDTI; +var isBicolor = this.tm.stereoMode.isBiColor(); +var mergeImages = (g == null && isDouble); +var imageBuffer; +if (isBicolor) { +this.beginRendering(true, isImageWrite); +this.render(); +this.gdata.endRendering(); +this.gdata.snapshotAnaglyphChannelBytes(); +this.beginRendering(false, isImageWrite); +this.render(); +this.gdata.endRendering(); +this.gdata.applyAnaglygh(this.tm.stereoMode, this.tm.stereoColors); +imageBuffer = this.gdata.getScreenImage(isImageWrite); +} else { +imageBuffer = this.getImage(isDouble, isImageWrite); +}var imageBuffer2 = null; +if (mergeImages) { +imageBuffer2 = this.apiPlatform.newBufferedImage(imageBuffer, (this.tm.stereoDoubleDTI ? this.screenWidth : this.screenWidth << 1), this.screenHeight); +g = this.apiPlatform.getGraphics(imageBuffer2); +}if (g != null) { +if (isDouble) { +if (this.tm.stereoMode === J.c.STER.DTI) { +this.drawImage(g, imageBuffer, this.screenWidth >> 1, 0, true); +imageBuffer = this.getImage(false, false); +this.drawImage(g, imageBuffer, 0, 0, true); +g = null; +} else { +this.drawImage(g, imageBuffer, this.screenWidth, 0, false); +imageBuffer = this.getImage(false, false); +}}if (g != null) this.drawImage(g, imageBuffer, 0, 0, false); +}return (mergeImages ? imageBuffer2 : imageBuffer); +}, "~O,~B"); +Clazz.defineMethod(c$, "evalStringWaitStatusQueued", +function(returnType, strScript, statusList, isQuiet, isQueued){ +return (this.getScriptManager() == null ? null : this.scm.evalStringWaitStatusQueued(returnType, strScript, statusList, isQuiet, isQueued)); +}, "~S,~S,~S,~B,~B"); +Clazz.defineMethod(c$, "popupMenu", +function(x, y, type){ +if (!this.haveDisplay || !this.refreshing || this.isPreviewOnly || this.g.disablePopupMenu) return; +switch ((type).charCodeAt(0)) { +case 106: +try { +this.getPopupMenu(); +this.jmolpopup.jpiShow(x, y); +} catch (e) { +JU.Logger.info(e.toString()); +this.g.disablePopupMenu = true; +} +break; +case 97: +case 98: +case 109: +if (this.getModelkit(true) == null) { +return; +}this.modelkit.showMenu(x, y); +break; +} +}, "~N,~N,~S"); +Clazz.defineMethod(c$, "getModelkit", +function(andShow){ +if (this.modelkit == null) { +(this.modelkit = J.api.Interface.getInterface("J.modelkit.ModelKit", this, "script")).setMenu(this.apiPlatform.getMenuPopup(null, 'm')); +} else if (andShow) { +this.modelkit.updateMenu(); +}return this.modelkit; +}, "~B"); +Clazz.defineMethod(c$, "getPopupMenu", +function(){ +if (this.g.disablePopupMenu) return null; +if (this.jmolpopup == null) { +this.jmolpopup = (this.allowScripting ? this.apiPlatform.getMenuPopup(this.menuStructure, 'j') : null); +if (this.jmolpopup == null) { +if (!this.async) this.g.disablePopupMenu = true; +return null; +}}if (this.isJSNoAWT) this.checkMenuUpdate(); +return this.jmolpopup.jpiGetMenuAsObject(); +}); +Clazz.overrideMethod(c$, "setMenu", +function(fileOrText, isFile){ +if (isFile) JU.Logger.info("Setting menu " + (fileOrText.length == 0 ? "to Jmol defaults" : "from file " + fileOrText)); +if (fileOrText.length == 0) fileOrText = null; + else if (isFile) fileOrText = this.getFileAsString3(fileOrText, false, null); +this.getProperty("DATA_API", "setMenu", fileOrText); +this.sm.setCallbackFunction("menu", fileOrText); +}, "~S,~B"); +Clazz.defineMethod(c$, "setStatusFrameChanged", +function(isVib, doNotify){ +if (isVib) { +this.prevFrame = -2147483648; +}this.tm.setVibrationPeriod(NaN); +var firstIndex = this.am.firstFrameIndex; +var lastIndex = this.am.lastFrameIndex; +var isMovie = this.am.isMovie; +var modelIndex = this.am.cmi; +if (firstIndex == lastIndex && !isMovie) modelIndex = firstIndex; +var frameID = this.getModelFileNumber(modelIndex); +var currentFrame = this.am.cmi; +var fileNo = frameID; +var modelNo = frameID % 1000000; +var firstNo = (isMovie ? firstIndex : this.getModelFileNumber(firstIndex)); +var lastNo = (isMovie ? lastIndex : this.getModelFileNumber(lastIndex)); +var strModelNo; +if (isMovie) { +strModelNo = "" + (currentFrame + 1); +} else if (fileNo == 0) { +strModelNo = this.getModelNumberDotted(firstIndex); +if (firstIndex != lastIndex) strModelNo += " - " + this.getModelNumberDotted(lastIndex); +if (Clazz.doubleToInt(firstNo / 1000000) == Clazz.doubleToInt(lastNo / 1000000)) fileNo = firstNo; +} else { +strModelNo = this.getModelNumberDotted(modelIndex); +}if (fileNo != 0) fileNo = (fileNo < 1000000 ? 1 : Clazz.doubleToInt(fileNo / 1000000)); +if (!isMovie) { +this.g.setI("_currentFileNumber", fileNo); +this.g.setI("_currentModelNumberInFile", modelNo); +}var currentMorphModel = this.am.currentMorphModel; +this.g.setI("_currentFrame", currentFrame); +this.g.setI("_morphCount", this.am.morphCount); +this.g.setF("_currentMorphFrame", currentMorphModel); +this.g.setI("_frameID", frameID); +this.g.setI("_modelIndex", modelIndex); +this.g.setO("_modelNumber", strModelNo); +this.g.setO("_modelName", (modelIndex < 0 ? "" : this.getModelName(modelIndex))); +var title = (modelIndex < 0 ? "" : this.ms.getModelTitle(modelIndex)); +this.g.setO("_modelTitle", title == null ? "" : title); +this.g.setO("_modelFile", (modelIndex < 0 ? "" : this.ms.getModelFileName(modelIndex))); +this.g.setO("_modelType", (modelIndex < 0 ? "" : this.ms.getModelFileType(modelIndex))); +if (currentFrame == this.prevFrame && currentMorphModel == this.prevMorphModel) return; +this.prevFrame = currentFrame; +this.prevMorphModel = currentMorphModel; +var entryName = this.getModelName(currentFrame); +if (isMovie) { +entryName = "" + (entryName === "" ? currentFrame + 1 : this.am.caf + 1) + ": " + entryName; +} else { +var script = "" + this.getModelNumberDotted(currentFrame); +if (!script.equals(entryName)) entryName = script + ": " + entryName; +}this.sm.setStatusFrameChanged(fileNo, modelNo, (this.am.animationDirection < 0 ? -firstNo : firstNo), (this.am.currentDirection < 0 ? -lastNo : lastNo), currentFrame, currentMorphModel, entryName); +if (this.doHaveJDX()) this.getJSV().setModel(modelIndex); +if (JV.Viewer.isJS) this.updateJSView(modelIndex, -1); +}, "~B,~B"); +Clazz.defineMethod(c$, "doHaveJDX", +function(){ +return (this.haveJDX || (this.haveJDX = this.getBooleanProperty("_JSpecView".toLowerCase()))); +}); +Clazz.defineMethod(c$, "getJSV", +function(){ +if (this.jsv == null) { +this.jsv = J.api.Interface.getOption("jsv.JSpecView", this, "script"); +this.jsv.setViewer(this); +}return this.jsv; +}); +Clazz.defineMethod(c$, "getJDXBaseModelIndex", +function(modelIndex){ +if (!this.doHaveJDX()) return modelIndex; +return this.getJSV().getBaseModelIndex(modelIndex); +}, "~N"); +Clazz.defineMethod(c$, "getJspecViewProperties", +function(myParam){ +var o = this.sm.getJspecViewProperties("" + myParam); +if (o != null) this.haveJDX = true; +return o; +}, "~O"); +Clazz.defineMethod(c$, "scriptEcho", +function(strEcho){ +if (!JU.Logger.isActiveLevel(4)) return; +if (JV.Viewer.isJS) System.out.println(strEcho); +this.sm.setScriptEcho(strEcho, this.isScriptQueued()); +if (this.listCommands && strEcho != null && strEcho.indexOf("$[") == 0) JU.Logger.info(strEcho); +}, "~S"); +Clazz.defineMethod(c$, "isScriptQueued", +function(){ +return this.scm != null && this.scm.isScriptQueued(); +}); +Clazz.defineMethod(c$, "notifyError", +function(errType, errMsg, errMsgUntranslated){ +this.g.setO("_errormessage", errMsgUntranslated); +this.sm.notifyError(errType, errMsg, errMsgUntranslated); +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "jsEval", +function(strEval){ +return "" + this.sm.jsEval(strEval); +}, "~S"); +Clazz.defineMethod(c$, "jsEvalSV", +function(strEval){ +return JS.SV.getVariable(JV.Viewer.isJS ? this.sm.jsEval(strEval) : this.jsEval(strEval)); +}, "~S"); +Clazz.defineMethod(c$, "setFileLoadStatus", +function(ptLoad, fullPathName, fileName, modelName, strError, isAsync){ +this.setErrorMessage(strError, null); +this.g.setI("_loadPoint", ptLoad.getCode()); +var doCallback = (ptLoad !== J.c.FIL.CREATING_MODELSET); +if (doCallback) this.setStatusFrameChanged(false, false); +this.sm.setFileLoadStatus(fullPathName, fileName, modelName, strError, ptLoad.getCode(), doCallback, isAsync); +if (doCallback) { +if (this.doHaveJDX()) this.getJSV().setModel(this.am.cmi); +if (JV.Viewer.isJS) this.updateJSView(this.am.cmi, -2); +}}, "J.c.FIL,~S,~S,~S,~S,Boolean"); +Clazz.defineMethod(c$, "getZapName", +function(){ +return (this.g.modelKitMode ? "Jmol Model Kit" : "zapped"); +}); +Clazz.defineMethod(c$, "setStatusMeasuring", +function(status, intInfo, strMeasure, value){ +this.sm.setStatusMeasuring(status, intInfo, strMeasure, value); +}, "~S,~N,~S,~N"); +Clazz.defineMethod(c$, "notifyMinimizationStatus", +function(){ +var step = this.getP("_minimizationStep"); +var ff = this.getP("_minimizationForceField"); +var minStatus = this.getP("_minimizationStatus"); +var starting = "starting".equals(minStatus); +var done = "done".equals(minStatus) || "failed".equals(minStatus); +var includeAtoms = (this.minimizer != null && (done || starting)); +var bsAtoms = (includeAtoms ? this.minimizer.bsAtoms : null); +var atomIndex = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +var modelIndex = (atomIndex >= 0 ? this.getModelIndexForAtom(atomIndex) : -1); +if (starting && atomIndex >= 0) { +this.sm.setStatusStructureModified(atomIndex, modelIndex, 3, "minimize:" + minStatus, bsAtoms.cardinality(), bsAtoms); +}this.sm.notifyMinimizationStatus(minStatus, (typeof(step)=='string') ? Integer.$valueOf(0) : step, this.getP("_minimizationEnergy"), (step.toString().equals("0") ? Float.$valueOf(0) : this.getP("_minimizationEnergyDiff")), ff); +if (done && atomIndex >= 0) { +this.sm.setStatusStructureModified(atomIndex, modelIndex, -3, "minimize:" + minStatus, bsAtoms.cardinality(), bsAtoms); +}}); +Clazz.defineMethod(c$, "setStatusAtomPicked", +function(atomIndex, info, map, andSelect){ +if (andSelect) this.setSelectionSet(JU.BSUtil.newAndSetBit(atomIndex)); +if (info == null) { +info = this.g.pickLabel; +info = (info.length == 0 ? this.getAtomInfoXYZ(atomIndex, this.g.messageStyleChime ? 4 : 2) + (this.getOperativeSymmetry() == null ? "" : " (" + this.getAtomInfoXYZ(atomIndex, 3) + ")") : this.ms.getAtomInfo(atomIndex, info, this.ptTemp)); +}this.setPicked(atomIndex, false); +if (atomIndex < 0) { +var m = this.getPendingMeasurement(); +if (m != null) info = info.substring(0, info.length - 1) + ",\"" + m.getString() + "\"]"; +}this.g.setO("_pickinfo", info); +this.sm.setStatusAtomPicked(atomIndex, info, map); +if (atomIndex < 0) return; +var syncMode = this.sm.getSyncMode(); +if (syncMode == 1 && this.doHaveJDX()) this.getJSV().atomPicked(atomIndex); +if (JV.Viewer.isJS) this.updateJSView(this.ms.at[atomIndex].mi, atomIndex); +}, "~N,~S,java.util.Map,~B"); +Clazz.overrideMethod(c$, "getProperty", +function(returnType, infoType, paramInfo){ +if (!"DATA_API".equals(returnType)) return this.getPropertyManager().getProperty(returnType, infoType, paramInfo); +switch (("scriptCheck.........consoleText.........scriptEditor........scriptEditorState...getAppConsole.......getScriptEditor.....setMenu.............spaceGroupInfo......disablePopupMenu....defaultDirectory....getPopupMenu........shapeManager........getPreference.......").indexOf(infoType)) { +case 0: +return this.scriptCheckRet(paramInfo, true); +case 20: +return (this.appConsole == null ? "" : this.appConsole.getText()); +case 40: +this.showEditor(paramInfo); +return null; +case 60: +this.scriptEditorVisible = (paramInfo).booleanValue(); +return null; +case 80: +if (this.$isKiosk) { +this.appConsole = null; +} else if (Clazz.instanceOf(paramInfo,"J.api.JmolAppConsoleInterface")) { +this.appConsole = paramInfo; +} else if (paramInfo != null && !(paramInfo).booleanValue()) { +this.appConsole = null; +} else if (this.appConsole == null && paramInfo != null && (paramInfo).booleanValue()) { +if (JV.Viewer.isJS) { +this.appConsole = J.api.Interface.getOption("consolejs.AppletConsole", this, "script"); +}{ +}if (this.appConsole != null) this.appConsole.start(this); +}this.scriptEditor = (JV.Viewer.isJS || this.appConsole == null ? null : this.appConsole.getScriptEditor()); +return this.appConsole; +case 100: +if (this.appConsole == null && paramInfo != null && (paramInfo).booleanValue()) { +this.getProperty("DATA_API", "getAppConsole", Boolean.TRUE); +this.scriptEditor = (this.appConsole == null ? null : this.appConsole.getScriptEditor()); +}return this.scriptEditor; +case 120: +if (this.jmolpopup != null) this.jmolpopup.jpiDispose(); +this.jmolpopup = null; +return this.menuStructure = paramInfo; +case 140: +return this.getSymTemp().getSpaceGroupInfo(this.ms, null, -1, false, null); +case 160: +this.g.disablePopupMenu = true; +return null; +case 180: +return this.g.defaultDirectory; +case 200: +if ((typeof(paramInfo)=='string')) return this.getMenu(paramInfo); +return this.getPopupMenu(); +case 220: +return this.shm.getProperty(paramInfo); +case 240: +return this.sm.syncSend("getPreference", paramInfo, 1); +} +JU.Logger.error("ERROR in getProperty DATA_API: " + infoType); +return null; +}, "~S,~S,~O"); +Clazz.defineMethod(c$, "notifyMouseClicked", +function(x, y, action, mode){ +var modifiers = JV.binding.Binding.getButtonMods(action); +var clickCount = JV.binding.Binding.getClickCount(action); +this.g.setI("_mouseX", x); +this.g.setI("_mouseY", this.screenHeight - y); +this.g.setI("_mouseAction", action); +this.g.setI("_mouseModifiers", modifiers); +this.g.setI("_clickCount", clickCount); +return this.sm.setStatusClicked(x, this.screenHeight - y, action, clickCount, mode); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getOutputManager", +function(){ +if (this.outputManager != null) return this.outputManager; +return (this.outputManager = J.api.Interface.getInterface("JV.OutputManager" + (JV.Viewer.isJS ? "JS" : "Awt"), this, "file")).setViewer(this, this.privateKey); +}); +Clazz.defineMethod(c$, "getJzt", +function(){ +return (this.jzt == null ? this.jzt = J.api.Interface.getInterface("JU.ZipTools", this, "zip") : this.jzt); +}); +Clazz.defineMethod(c$, "readFileAsMap", +function(bis, map, name){ +this.getJzt().readFileAsMap(bis, map, name); +}, "java.io.BufferedInputStream,java.util.Map,~S"); +Clazz.defineMethod(c$, "getZipDirectoryAsString", +function(fileName){ +var t = this.fm.getBufferedInputStreamOrErrorMessageFromName(fileName, fileName, false, false, null, false, true); +return this.getJzt().getZipDirectoryAsStringAndClose(t); +}, "~S"); +Clazz.overrideMethod(c$, "getImageAsBytes", +function(type, width, height, quality, errMsg){ +return this.getOutputManager().getImageAsBytes(type, width, height, quality, errMsg); +}, "~S,~N,~N,~N,~A"); +Clazz.overrideMethod(c$, "releaseScreenImage", +function(){ +this.gdata.releaseScreenImage(); +}); +Clazz.defineMethod(c$, "setDisplay", +function(canvas){ +this.display = canvas; +this.apiPlatform.setViewer(this, canvas); +}, "~O"); +Clazz.defineMethod(c$, "newMeasurementData", +function(id, points){ +return (J.api.Interface.getInterface("JM.MeasurementData", this, "script")).init(id, this, points); +}, "~S,JU.Lst"); +Clazz.defineMethod(c$, "getDataManager", +function(){ +return (this.dm == null ? (this.dm = (J.api.Interface.getInterface("JV.DataManager", this, "script")).set(this)) : this.dm); +}); +Clazz.defineMethod(c$, "getScriptManager", +function(){ +if (this.allowScripting && this.scm == null) { +this.scm = J.api.Interface.getInterface("JS.ScriptManager", this, "setOptions"); +if (JV.Viewer.isJS && this.scm == null) throw new NullPointerException(); +if (this.scm == null) { +this.allowScripting = false; +return null; +}this.eval = this.scm.setViewer(this); +if (this.useCommandThread) this.scm.startCommandWatcher(true); +}return this.scm; +}); +Clazz.defineMethod(c$, "checkOption2", +function(key1, key2){ +return (this.vwrOptions.containsKey(key1) && !this.vwrOptions.get(key1).toString().equals("false") || this.commandOptions.indexOf(key2) >= 0); +}, "~S,~S"); +Clazz.defineMethod(c$, "setStartupBooleans", +function(){ +this.setBooleanProperty("_applet", this.isApplet); +this.setBooleanProperty("_JSpecView".toLowerCase(), false); +this.setBooleanProperty("_signedApplet", this.isSignedApplet); +this.setBooleanProperty("_headless", this.headless); +this.setStringProperty("_restrict", "\"" + this.access + "\""); +this.setBooleanProperty("_useCommandThread", this.useCommandThread); +this.setBooleanPropertyTok("doubleprecision", 603979831, false); +}); +Clazz.defineMethod(c$, "getExportDriverList", +function(){ +return (this.haveAccess(JV.Viewer.ACCESS.ALL) ? this.g.getParameter("exportDrivers", true) : ""); +}); +Clazz.overrideMethod(c$, "dispose", +function(){ +this.gRight = null; +if (this.mouse != null) { +this.acm.dispose(); +this.mouse.dispose(); +this.mouse = null; +}this.clearScriptQueue(); +this.clearThreads(); +this.haltScriptExecution(); +if (this.scm != null) this.scm.clear(true); +this.gdata.destroy(); +if (this.jmolpopup != null) this.jmolpopup.jpiDispose(); +if (this.modelkit != null) this.modelkit.dispose(); +try { +if (this.appConsole != null) { +this.appConsole.dispose(); +this.appConsole = null; +}if (this.scriptEditor != null) { +this.scriptEditor.dispose(); +this.scriptEditor = null; +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "reset", +function(includingSpin){ +this.ms.setBoundBox(null, null, true, 0); +this.axesAreTainted = true; +this.tm.homePosition(includingSpin); +if (this.ms.setCrystallographicDefaults()) this.stm.setCrystallographicDefaults(); + else this.setAxesMode(603979809); +this.prevFrame = -2147483648; +if (!this.tm.spinOn) this.setSync(); +}, "~B"); +Clazz.overrideMethod(c$, "homePosition", +function(){ +this.evalString("reset spin"); +}); +Clazz.defineMethod(c$, "initialize", +function(clearUserVariables, isPyMOL){ +this.g = new JV.GlobalSettings(this, this.g, clearUserVariables); +this.setStartupBooleans(); +this.setWidthHeightVar(); +if (this.haveDisplay) { +this.g.setB("_is2D", JV.Viewer.isJS && !this.isWebGL); +this.g.setB("_multiTouchClient", this.acm.isMTClient()); +this.g.setB("_multiTouchServer", this.acm.isMTServer()); +}this.cm.setDefaultColors(false); +this.setObjectColor("background", "black"); +this.setObjectColor("axis1", "red"); +this.setObjectColor("axis2", "green"); +this.setObjectColor("axis3", "blue"); +this.am.setAnimationOn(false); +this.am.setAnimationFps(this.g.animationFps); +this.sm.playAudio(null); +this.sm.allowStatusReporting = this.g.statusReporting; +this.setBooleanPropertyTok("antialiasDisplay", 603979786, (isPyMOL ? true : this.g.antialiasDisplay)); +this.stm.resetLighting(); +this.tm.setDefaultPerspective(); +}, "~B,~B"); +Clazz.defineMethod(c$, "saveModelOrientation", +function(){ +this.ms.saveModelOrientation(this.am.cmi, this.stm.getOrientation()); +}); +Clazz.defineMethod(c$, "restoreModelOrientation", +function(modelIndex){ +var o = this.ms.getModelOrientation(modelIndex); +if (o != null) o.restore(-1, true); +}, "~N"); +Clazz.defineMethod(c$, "restoreModelRotation", +function(modelIndex){ +var o = this.ms.getModelOrientation(modelIndex); +if (o != null) o.restore(-1, false); +}, "~N"); +Clazz.defineMethod(c$, "getGLmolView", +function(){ +var tm = this.tm; +var center = tm.fixedRotationCenter; +var q = tm.getRotationQ(); +var xtrans = tm.xTranslationFraction; +var ytrans = tm.yTranslationFraction; +var scale = tm.scalePixelsPerAngstrom; +var zoom = tm.zmPctSet; +var cd = tm.cameraDistance; +var pc = tm.screenPixelCount; +var pd = tm.perspectiveDepth; +var width = tm.width; +var height = tm.height; +{ +return { center:center, quaternion:q, xtrans:xtrans, +ytrans:ytrans, scale:scale, zoom:zoom, cameraDistance:cd, +pixelCount:pc, perspective:pd, width:width, height:height }; +}}); +Clazz.defineMethod(c$, "setRotationRadius", +function(angstroms, doAll){ +if (doAll) angstroms = this.tm.setRotationRadius(angstroms, false); +if (this.ms.setRotationRadius(this.am.cmi, angstroms)) this.g.setF("rotationRadius", angstroms); +}, "~N,~B"); +Clazz.defineMethod(c$, "setCenterBitSet", +function(bsCenter, doScale){ +if (this.isJmolDataFrame()) return; +this.tm.setNewRotationCenter((JU.BSUtil.cardinalityOf(bsCenter) > 0 ? this.ms.getAtomSetCenter(bsCenter) : null), doScale); +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "setNewRotationCenter", +function(center){ +if (!this.isJmolDataFrame()) this.tm.setNewRotationCenter(center, true); +}, "JU.P3"); +Clazz.defineMethod(c$, "navigate", +function(keyWhere, modifiers){ +if (this.isJmolDataFrame()) return; +this.tm.navigateKey(keyWhere, modifiers); +if (!this.tm.vibrationOn && keyWhere != 0) this.refresh(1, "Viewer:navigate()"); +}, "~N,~N"); +Clazz.defineMethod(c$, "move", +function(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps){ +this.tm.move(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps); +this.moveUpdate(floatSecondsTotal); +}, "J.api.JmolScriptEvaluator,JU.V3,~N,JU.V3,~N,~N,~N"); +Clazz.defineMethod(c$, "moveTo", +function(eval, floatSecondsTotal, center, rotAxis, degrees, rotationMatrix, zoom, xTrans, yTrans, rotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY){ +if (!this.haveDisplay) floatSecondsTotal = 0; +this.setTainted(true); +this.tm.moveTo(eval, floatSecondsTotal, center, rotAxis, degrees, rotationMatrix, zoom, xTrans, yTrans, rotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY); +}, "J.api.JmolScriptEvaluator,~N,JU.P3,JU.V3,~N,JU.M3,~N,~N,~N,~N,JU.P3,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "moveUpdate", +function(floatSecondsTotal){ +if (floatSecondsTotal > 0) this.requestRepaintAndWait("moveUpdate"); + else if (floatSecondsTotal == 0) this.setSync(); +}, "~N"); +Clazz.defineMethod(c$, "navigatePt", +function(center){ +this.tm.setNavigatePt(center); +this.setSync(); +}, "JU.P3"); +Clazz.defineMethod(c$, "navigateAxis", +function(rotAxis, degrees){ +this.tm.navigateAxis(rotAxis, degrees); +this.setSync(); +}, "JU.V3,~N"); +Clazz.defineMethod(c$, "navTranslatePercent", +function(x, y){ +if (this.isJmolDataFrame()) return; +this.tm.navTranslatePercentOrTo(0, x, y); +this.setSync(); +}, "~N,~N"); +Clazz.defineMethod(c$, "zoomBy", +function(pixels){ +this.tm.zoomBy(pixels); +this.refresh(2, this.sm.syncingMouse ? "Mouse: zoomBy " + pixels : ""); +}, "~N"); +Clazz.defineMethod(c$, "zoomByFactor", +function(factor, x, y){ +this.tm.zoomByFactor(factor, x, y); +this.refresh(2, !this.sm.syncingMouse ? "" : "Mouse: zoomByFactor " + factor + (x == 2147483647 ? "" : " " + x + " " + y)); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "rotateXYBy", +function(degX, degY){ +this.tm.rotateXYBy(degX, degY, null); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateXYBy " + degX + " " + degY : ""); +}, "~N,~N"); +Clazz.defineMethod(c$, "spinXYBy", +function(xDelta, yDelta, speed){ +this.tm.spinXYBy(xDelta, yDelta, speed); +if (xDelta == 0 && yDelta == 0) return; +this.refresh(2, this.sm.syncingMouse ? "Mouse: spinXYBy " + xDelta + " " + yDelta + " " + speed : ""); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "rotateZBy", +function(zDelta, x, y){ +this.tm.rotateZBy(zDelta, x, y); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateZBy " + zDelta + (x == 2147483647 ? "" : " " + x + " " + y) : ""); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "rotateSelected", +function(deltaX, deltaY, bsSelected){ +if (this.isJmolDataFrame()) return; +this.tm.rotateXYBy(deltaX, deltaY, this.setMovableBitSet(bsSelected, true)); +this.refreshMeasures(true); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateMolecule " + deltaX + " " + deltaY : ""); +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "setMovableBitSet", +function(bsSelected, checkMolecule){ +if (bsSelected == null) bsSelected = this.bsA(); +bsSelected = JU.BSUtil.copy(bsSelected); +JU.BSUtil.andNot(bsSelected, this.getMotionFixedAtoms(null, null)); +if (checkMolecule && !this.g.allowMoveAtoms) bsSelected = this.ms.getMoleculeBitSet(bsSelected); +return this.movableBitSet = bsSelected; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "translateXYBy", +function(xDelta, yDelta){ +this.tm.translateXYBy(xDelta, yDelta); +this.refresh(2, this.sm.syncingMouse ? "Mouse: translateXYBy " + xDelta + " " + yDelta : ""); +}, "~N,~N"); +Clazz.overrideMethod(c$, "rotateFront", +function(){ +this.tm.resetRotation(); +this.refresh(1, "Viewer:rotateFront()"); +}); +Clazz.defineMethod(c$, "translate", +function(xyz, x, type, bsAtoms){ +var xy = (type == '\0' ? x : type == '%' ? this.tm.percentToPixels(xyz, x) : this.tm.angstromsToPixels(x * (type == 'n' ? 10 : 1))); +if (bsAtoms != null) { +if (x == 0) return; +this.tm.setSelectedTranslation(bsAtoms, xyz, xy, x); +} else { +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +if (type == '\0') this.tm.translateToPercent('x', x); + else this.tm.translateXYBy(Clazz.floatToInt(xy), 0); +break; +case 89: +case 121: +if (type == '\0') this.tm.translateToPercent('y', x); + else this.tm.translateXYBy(0, Clazz.floatToInt(xy)); +break; +case 90: +case 122: +if (type == '\0') this.tm.translateToPercent('z', x); + else this.tm.translateZBy(Clazz.floatToInt(xy)); +break; +} +}this.refresh(1, "Viewer:translate()"); +}, "~S,~N,~S,JU.BS"); +Clazz.defineMethod(c$, "slabByPixels", +function(pixels){ +this.tm.slabByPercentagePoints(pixels); +this.refresh(3, "slabByPixels"); +}, "~N"); +Clazz.defineMethod(c$, "depthByPixels", +function(pixels){ +this.tm.depthByPercentagePoints(pixels); +this.refresh(3, "depthByPixels"); +}, "~N"); +Clazz.defineMethod(c$, "slabDepthByPixels", +function(pixels){ +this.tm.slabDepthByPercentagePoints(pixels); +this.refresh(3, "slabDepthByPixels"); +}, "~N"); +Clazz.defineMethod(c$, "finalizeTransformParameters", +function(){ +this.tm.finalizeTransformParameters(); +this.gdata.setSlabAndZShade(this.tm.slabValue, this.tm.depthValue, (this.tm.zShadeEnabled ? this.tm.zSlabValue : 2147483647), this.tm.zDepthValue, this.g.zShadePower); +}); +Clazz.defineMethod(c$, "getScalePixelsPerAngstrom", +function(asAntialiased){ +return this.tm.scalePixelsPerAngstrom * (asAntialiased || !this.antialiased ? 1 : 0.5); +}, "~B"); +Clazz.defineMethod(c$, "setSpin", +function(key, value){ +if (!JU.PT.isOneOf(key, ";x;y;z;fps;X;Y;Z;FPS;")) return; +var i = "x;y;z;fps;X;Y;Z;FPS".indexOf(key); +switch (i) { +case 0: +this.tm.setSpinXYZ(value, NaN, NaN); +break; +case 2: +this.tm.setSpinXYZ(NaN, value, NaN); +break; +case 4: +this.tm.setSpinXYZ(NaN, NaN, value); +break; +case 6: +default: +this.tm.setSpinFps(value); +break; +case 10: +this.tm.setNavXYZ(value, NaN, NaN); +break; +case 12: +this.tm.setNavXYZ(NaN, value, NaN); +break; +case 14: +this.tm.setNavXYZ(NaN, NaN, value); +break; +case 16: +this.tm.setNavFps(value); +break; +} +this.g.setI((i < 10 ? "spin" : "nav") + key, value); +}, "~S,~N"); +Clazz.defineMethod(c$, "getSpinState", +function(){ +return this.getStateCreator().getSpinState(false); +}); +Clazz.defineMethod(c$, "getOrientation", +function(type, name, bs, points){ +switch (type) { +case 1312817669: +case 1814695966: +case 1073741864: +case 1111492629: +case 1111492630: +case 1111492631: +case 134221850: +if (bs == null) bs = this.bsA(); +if (bs.isEmpty()) return (type == 1312817669 ? "0" : type == 1814695966 || type == 1073741864 ? null : new JU.Quat()); +var q = this.ms.getBoundBoxOrientation(type, bs, points); +return (name === "best" && type != 1312817669 ? (q).div(this.tm.getRotationQ()) : q); +case 1073742034: +return this.stm.getSavedOrientationText(name); +default: +return this.tm.getOrientationText(type, name === "best"); +} +}, "~N,~S,JU.BS,~A"); +Clazz.defineMethod(c$, "getCurrentColorRange", +function(){ +return this.cm.getPropertyColorRange(); +}); +Clazz.defineMethod(c$, "setDefaultColors", +function(isRasmol){ +this.cm.setDefaultColors(isRasmol); +this.g.setB("colorRasmol", isRasmol); +this.g.setO("defaultColorScheme", (isRasmol ? "rasmol" : "jmol")); +}, "~B"); +Clazz.defineMethod(c$, "setElementArgb", +function(elementNumber, argb){ +this.g.setO("=color " + JU.Elements.elementNameFromNumber(elementNumber), JU.Escape.escapeColor(argb)); +this.cm.setElementArgb(elementNumber, argb); +}, "~N,~N"); +Clazz.overrideMethod(c$, "setVectorScale", +function(scale){ +this.g.setF("vectorScale", scale); +this.g.vectorScale = scale; +}, "~N"); +Clazz.overrideMethod(c$, "setVibrationScale", +function(scale){ +this.tm.setVibrationScale(scale); +this.g.vibrationScale = scale; +this.g.setF("vibrationScale", scale); +}, "~N"); +Clazz.overrideMethod(c$, "setVibrationPeriod", +function(period){ +if (Double.isNaN(period)) { +period = this.g.vibrationPeriod; +}this.tm.setVibrationPeriod(period); +period = Math.abs(period); +this.g.vibrationPeriod = period; +this.g.setF("vibrationPeriod", period); +}, "~N"); +Clazz.defineMethod(c$, "setObjectColor", +function(name, colorName){ +if (colorName == null || colorName.length == 0) return; +this.setObjectArgb(name, JU.CU.getArgbFromString(colorName)); +}, "~S,~S"); +Clazz.defineMethod(c$, "setObjectVisibility", +function(name, b){ +var objId = JV.StateManager.getObjectIdFromName(name); +if (objId >= 0) { +this.setShapeProperty(objId, "display", b ? Boolean.TRUE : Boolean.FALSE); +}}, "~S,~B"); +Clazz.defineMethod(c$, "setObjectArgb", +function(name, argb){ +var objId = JV.StateManager.getObjectIdFromName(name); +if (objId < 0) { +if (name.equalsIgnoreCase("axes")) { +this.setObjectArgb("axis1", argb); +this.setObjectArgb("axis2", argb); +this.setObjectArgb("axis3", argb); +}return; +}this.g.objColors[objId] = argb; +switch (objId) { +case 0: +this.gdata.setBackgroundArgb(argb); +this.cm.setColixBackgroundContrast(argb); +break; +} +this.g.setO(name + "Color", JU.Escape.escapeColor(argb)); +}, "~S,~N"); +Clazz.defineMethod(c$, "setBackgroundImage", +function(fileName, image){ +this.g.backgroundImageFileName = fileName; +this.gdata.setBackgroundImage(image); +}, "~S,~O"); +Clazz.defineMethod(c$, "getObjectColix", +function(objId){ +var argb = this.g.objColors[objId]; +return (argb == 0 ? this.cm.colixBackgroundContrast : JU.C.getColix(argb)); +}, "~N"); +Clazz.overrideMethod(c$, "setColorBackground", +function(colorName){ +this.setObjectColor("background", colorName); +}, "~S"); +Clazz.overrideMethod(c$, "getBackgroundArgb", +function(){ +return this.g.objColors[(0)]; +}); +Clazz.defineMethod(c$, "setObjectMad10", +function(iShape, name, mad10){ +var objId = JV.StateManager.getObjectIdFromName(name.equalsIgnoreCase("axes") ? "axis" : name); +if (objId < 0) return; +if (mad10 == -2 || mad10 == -4) { +var m = mad10 + 3; +mad10 = this.getObjectMad10(objId); +if (mad10 == 0) mad10 = m; +}this.g.setB("show" + name, mad10 != 0); +this.g.objStateOn[objId] = (mad10 != 0); +if (mad10 == 0) return; +this.g.objMad10[objId] = mad10; +this.setShapeSize(iShape, mad10, null); +}, "~N,~S,~N"); +Clazz.defineMethod(c$, "getObjectMad10", +function(objId){ +return (this.g.objStateOn[objId] ? this.g.objMad10[objId] : 0); +}, "~N"); +Clazz.defineMethod(c$, "setPropertyColorScheme", +function(scheme, isTranslucent, isOverloaded){ +this.g.propertyColorScheme = scheme; +if (scheme.startsWith("translucent ")) { +isTranslucent = true; +scheme = scheme.substring(12).trim(); +}this.cm.setPropertyColorScheme(scheme, isTranslucent, isOverloaded); +}, "~S,~B,~B"); +Clazz.defineMethod(c$, "getLightingState", +function(){ +return this.getStateCreator().getLightingState(true); +}); +Clazz.defineMethod(c$, "getColorPointForPropertyValue", +function(val){ +return JU.CU.colorPtFromInt(this.gdata.getColorArgbOrGray(this.cm.ce.getColorIndex(val)), null); +}, "~N"); +Clazz.defineMethod(c$, "select", +function(bs, isGroup, addRemove, isQuiet){ +if (isGroup) bs = this.getUndeletedGroupAtomBits(bs); +this.slm.select(bs, addRemove, isQuiet); +this.shm.setShapeSizeBs(1, 2147483647, null, null); +this.hasSelected = true; +}, "JU.BS,~B,~N,~B"); +Clazz.overrideMethod(c$, "setSelectionSet", +function(set){ +this.selectStatus(set, false, 0, true, true); +}, "JU.BS"); +Clazz.defineMethod(c$, "selectBonds", +function(bs){ +this.shm.setShapeSizeBs(1, 2147483647, null, bs); +}, "JU.BS"); +Clazz.defineMethod(c$, "displayAtoms", +function(bs, isDisplay, isGroup, addRemove, isQuiet){ +if (isGroup) bs = this.getUndeletedGroupAtomBits(bs); +if (isDisplay) this.slm.display(this.ms, bs, addRemove, isQuiet); + else this.slm.hide(this.ms, bs, addRemove, isQuiet); +}, "JU.BS,~B,~B,~N,~B"); +Clazz.defineMethod(c$, "getUndeletedGroupAtomBits", +function(bs){ +bs = this.ms.getAtoms(1086324742, bs); +JU.BSUtil.andNot(bs, this.slm.bsDeleted); +return bs; +}, "JU.BS"); +Clazz.defineMethod(c$, "reportSelection", +function(msg){ +if (this.selectionHalosEnabled) this.setTainted(true); +if (this.isScriptQueued() || this.g.debugScript) this.scriptStatus(msg); +}, "~S"); +Clazz.defineMethod(c$, "clearAtomSets", +function(){ +this.slm.setSelectionSubset(null); +this.definedAtomSets.clear(); +if (this.haveDisplay) this.acm.exitMeasurementMode("clearAtomSets"); +}); +Clazz.defineMethod(c$, "getDefinedAtomSet", +function(name){ +var o = this.definedAtomSets.get(name.toLowerCase()); +return (Clazz.instanceOf(o,"JU.BS") ? o : new JU.BS()); +}, "~S"); +Clazz.overrideMethod(c$, "selectAll", +function(){ +this.slm.selectAll(false); +}); +Clazz.overrideMethod(c$, "clearSelection", +function(){ +this.slm.clearSelection(true); +this.g.setB("hideNotSelected", false); +}); +Clazz.defineMethod(c$, "bsA", +function(){ +return this.slm.getSelectedAtoms(); +}); +Clazz.overrideMethod(c$, "addSelectionListener", +function(listener){ +this.slm.addListener(listener); +}, "J.api.JmolSelectionListener"); +Clazz.overrideMethod(c$, "removeSelectionListener", +function(listener){ +this.slm.addListener(listener); +}, "J.api.JmolSelectionListener"); +Clazz.defineMethod(c$, "getAtomBitSetEval", +function(eval, atomExpression){ +return (this.allowScripting ? this.getScriptManager().getAtomBitSetEval(eval, atomExpression) : new JU.BS()); +}, "J.api.JmolScriptEvaluator,~O"); +Clazz.defineMethod(c$, "processTwoPointGesture", +function(touches){ +this.mouse.processTwoPointGesture(touches); +}, "~A"); +Clazz.defineMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.mouse.processEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "processKeyEvent", +function(event){ +this.mouse.processKeyEvent(event); +}, "~O"); +Clazz.defineMethod(c$, "getRubberBandSelection", +function(){ +return (this.haveDisplay ? this.acm.getRubberBand() : null); +}); +Clazz.defineMethod(c$, "isBound", +function(mouseAction, jmolAction){ +return (this.haveDisplay && this.acm.bnd(mouseAction, [jmolAction])); +}, "~N,~N"); +Clazz.defineMethod(c$, "getCursorX", +function(){ +return (this.haveDisplay ? this.acm.getCurrentX() : 0); +}); +Clazz.defineMethod(c$, "getCursorY", +function(){ +return (this.haveDisplay ? this.acm.getCurrentY() : 0); +}); +Clazz.defineMethod(c$, "getDefaultDirectory", +function(){ +return this.g.defaultDirectory; +}); +Clazz.defineMethod(c$, "getLocalUrl", +function(fileName){ +return this.apiPlatform.getLocalUrl(fileName); +}, "~S"); +Clazz.defineMethod(c$, "getFileAsString", +function(fileName){ +return this.getAsciiFileOrNull(fileName); +}, "~S"); +Clazz.overrideMethod(c$, "getBufferedInputStream", +function(fullPathName){ +return this.fm.getBufferedInputStream(fullPathName); +}, "~S"); +Clazz.defineMethod(c$, "setLoadParameters", +function(htParams, isAppend){ +if (htParams == null) htParams = new java.util.Hashtable(); +htParams.put("vwr", this); +if (this.g.atomTypes.length > 0) htParams.put("atomTypes", this.g.atomTypes); +if (!htParams.containsKey("lattice")) htParams.put("lattice", this.g.ptDefaultLattice); +if (this.g.applySymmetryToBonds) htParams.put("applySymmetryToBonds", Boolean.TRUE); +if (this.g.pdbGetHeader) htParams.put("getHeader", Boolean.TRUE); +if (this.g.pdbSequential) htParams.put("isSequential", Boolean.TRUE); +if (this.g.legacyJavaFloat || this.g.doublePrecision) htParams.put("highPrecision", Boolean.TRUE); +if (!this.g.doublePrecision) htParams.put("lowPrecision", Boolean.TRUE); +htParams.put("stateScriptVersionInt", Integer.$valueOf(this.stateScriptVersionInt)); +if (!htParams.containsKey("filter")) { +var filter = this.g.defaultLoadFilter; +if (filter.length > 0) htParams.put("filter", filter); +}var merging = (isAppend && !this.g.appendNew && this.ms.ac > 0); +htParams.put("baseAtomIndex", Integer.$valueOf(isAppend ? this.ms.ac : 0)); +htParams.put("baseBondIndex", Integer.$valueOf(isAppend ? this.ms.bondCount : 0)); +htParams.put("baseModelIndex", Integer.$valueOf(this.ms.ac == 0 ? 0 : this.ms.mc + (merging ? -1 : 0))); +if (merging) htParams.put("merging", Boolean.TRUE); +return htParams; +}, "java.util.Map,~B"); +Clazz.overrideMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +this.getScriptManager().openFileAsync(fileName, flags, null); +}, "~S,~N"); +Clazz.overrideMethod(c$, "openFileAsyncSpecialType", +function(fileName, flags, fileType){ +this.getScriptManager().openFileAsync(fileName, flags, fileType); +}, "~S,~N,~S"); +Clazz.overrideMethod(c$, "openFile", +function(fileName){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(null, fileName, null, null); +}, "~S"); +Clazz.overrideMethod(c$, "openFiles", +function(fileNames){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(null, null, fileNames, null); +}, "~A"); +Clazz.defineMethod(c$, "openReader", +function(fullPathName, fileName, reader){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(fullPathName, fileName, null, reader); +}, "~S,~S,~O"); +Clazz.overrideMethod(c$, "openDOM", +function(DOMNode){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint("?", "?", null, DOMNode); +}, "~O"); +Clazz.defineMethod(c$, "loadModelFromFileRepaint", +function(fullPathName, fileName, fileNames, reader){ +var ret = this.loadModelFromFile(fullPathName, fileName, fileNames, reader, false, null, null, null, 0, " "); +this.refresh(1, "loadModelFromFileRepaint"); +return ret; +}, "~S,~S,~A,~O"); +Clazz.defineMethod(c$, "loadModelFromFile", +function(fullPathName, fileName, fileNames, reader, isAppend, htParams, loadScript, sOptions, tokType, filecat){ +if (htParams == null) htParams = this.setLoadParameters(null, isAppend); +if (tokType != 0) htParams.put("dataType", JS.T.nameOf(tokType)); +if (filecat !== " ") htParams.put("concatenate", Boolean.TRUE); +var atomSetCollection; +var saveInfo = this.fm.getFileInfo(); +if (fileNames != null) { +if (loadScript == null) { +loadScript = new JU.SB().append("load files"); +for (var i = 0; i < fileNames.length; i++) loadScript.append(i == 0 || filecat == null ? " " : filecat).append("/*file*/$FILENAME" + (i + 1) + "$"); + +if (sOptions.length() > 0) loadScript.append(" /*options*/ ").append(sOptions.toString()); +}var timeBegin = System.currentTimeMillis(); +atomSetCollection = this.fm.createAtomSetCollectionFromFiles(fileNames, this.setLoadParameters(htParams, isAppend), isAppend); +var ms = System.currentTimeMillis() - timeBegin; +JU.Logger.info("openFiles(" + fileNames.length + ") " + ms + " ms"); +fileNames = htParams.get("fullPathNames"); +var fileTypes = htParams.get("fileTypes"); +var s = loadScript.toString(); +for (var i = 0; i < fileNames.length; i++) { +var fname = fileNames[i]; +if (fileTypes != null && fileTypes[i] != null) fname = fileTypes[i] + "::" + fname; +s = JU.PT.rep(s, "$FILENAME" + (i + 1) + "$", JU.PT.esc(JV.FileManager.fixDOSName(fname))); +} +loadScript = new JU.SB().append(s); +} else if (reader == null) { +if (loadScript == null) loadScript = new JU.SB().append("load /*file*/$FILENAME$"); +atomSetCollection = this.openFileFull(fileName, isAppend, htParams, loadScript); +} else if (Clazz.instanceOf(reader,"java.io.Reader") || Clazz.instanceOf(reader,"java.io.BufferedInputStream") || JU.AU.isAB(reader)) { +atomSetCollection = this.fm.createAtomSetCollectionFromReader(fullPathName, fileName, reader, this.setLoadParameters(htParams, isAppend)); +} else { +return "ERROR - invalid reader"; +}if (tokType != 0) { +this.fm.setFileInfo(saveInfo); +return this.loadAtomDataAndReturnError(atomSetCollection, tokType); +}if (htParams.containsKey("isData")) return atomSetCollection; +if (loadScript != null && !((typeof(atomSetCollection)=='string'))) { +var fname = htParams.get("fullPathName"); +if (fname == null) fname = ""; +if (htParams.containsKey("loadScript")) loadScript = htParams.get("loadScript"); +htParams.put("loadScript", loadScript = new JU.SB().append(JU.PT.rep(loadScript.toString(), "$FILENAME$", JU.PT.esc(JV.FileManager.fixDOSName(fname))))); +}return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~S,~S,~A,~O,~B,java.util.Map,JU.SB,JU.SB,~N,~S"); +Clazz.defineMethod(c$, "setLigandModel", +function(key, data){ +if (this.ligandModels == null) this.ligandModels = new java.util.Hashtable(); +this.ligandModels.put(key, data); +}, "~S,~S"); +Clazz.defineMethod(c$, "getLigandModel", +function(id, prefix, suffix, terminator){ +if (id == null) { +if (this.ligandModelSet != null) { +var e = this.ligandModels.entrySet().iterator(); +while (e.hasNext()) { +var entry = e.next(); +if (Clazz.instanceOf(entry.getValue(), Boolean)) e.remove(); +} +}return null; +}id = id.$replace('\\', '/'); +var isLigand = prefix.equals("ligand_"); +id = (id.indexOf("/cif") >= 0 ? id : isLigand ? id.toUpperCase() : id.substring(id.lastIndexOf("/") + 1)); +if (this.ligandModelSet == null) this.ligandModelSet = new java.util.Hashtable(); +this.ligandModelSet.put(id, Boolean.TRUE); +if (this.ligandModels == null) this.ligandModels = new java.util.Hashtable(); +var pngPt = id.indexOf("|"); +if (pngPt >= 0) id = id.substring(id.indexOf("|") + 1); +var model = (terminator == null ? this.ligandModels.get(id) : null); +var data; +var fname = null; +if (Clazz.instanceOf(model, Boolean)) return null; +if (model == null && (terminator == null || pngPt >= 0)) model = this.ligandModels.get(id + suffix); +var isError = false; +var isNew = (model == null); +if (isNew) { +var s; +if (isLigand) { +fname = this.setLoadFormat(false, "#" + id, '#', false); +if (fname.length == 0) return null; +this.scriptEcho("fetching " + fname); +s = this.getFileAsString3(fname, false, null); +} else { +this.scriptEcho("fetching " + prefix); +s = this.getFileAsString3(prefix, false, null); +var pt = (terminator == null ? -1 : s.indexOf(terminator)); +if (pt >= 0) s = s.substring(0, pt); +}isError = (s.indexOf("java.") == 0); +model = s; +if (!isError) this.ligandModels.put(id + suffix, model); +}if (!isLigand) { +if (!isNew) this.scriptEcho(prefix + " loaded from cache"); +return model; +}if (!isError && (typeof(model)=='string')) { +data = model; +if (data.length != 0) { +var htParams = new java.util.Hashtable(); +htParams.put("modelOnly", Boolean.TRUE); +model = this.getModelAdapter().getAtomSetCollectionReader("ligand", null, JU.Rdr.getBR(data), htParams); +isError = ((typeof(model)=='string')); +if (!isError) { +model = this.getModelAdapter().getAtomSetCollection(model); +isError = ((typeof(model)=='string')); +if (fname != null && !isError) this.scriptEcho(this.getModelAdapter().getAtomSetCollectionAuxiliaryInfo(model).get("modelLoadNote")); +}}}if (isError) { +this.scriptEcho(model.toString()); +this.ligandModels.put(id, Boolean.FALSE); +return null; +}return model; +}, "~S,~S,~S,~S"); +Clazz.defineMethod(c$, "openFileFull", +function(fileName, isAppend, htParams, loadScript){ +if (fileName == null) return null; +if (fileName.equals("String[]")) { +return null; +}var atomSetCollection; +var msg = "openFile(" + fileName + ")"; +JU.Logger.startTimer(msg); +htParams = this.setLoadParameters(htParams, isAppend); +var isLoadVariable = fileName.startsWith("@"); +var haveFileData = (htParams.containsKey("fileData")); +if (fileName.indexOf('$') == 0) htParams.put("smilesString", fileName.substring(1)); +var isString = (fileName.equals("string") || fileName.equals("Jmol Model Kit")); +var strModel = null; +if (haveFileData) { +strModel = htParams.get("fileData"); +if (htParams.containsKey("isData")) { +var o = this.loadInlineScript(strModel, '\0', isAppend, htParams); +this.lastData = (this.g.preserveState ? this.getDataManager().createFileData(strModel) : null); +return o; +}} else if (isString) { +strModel = this.ms.getInlineData(-1); +if (strModel == null) if (this.g.modelKitMode) strModel = "5\n\nC 0 0 0\nH .63 .63 .63\nH -.63 -.63 .63\nH -.63 .63 -.63\nH .63 -.63 -.63"; + else return "cannot find string data"; +if (loadScript != null) htParams.put("loadScript", loadScript = new JU.SB().append(JU.PT.rep(loadScript.toString(), "/*file*/$FILENAME$", "/*data*/data \"model inline\"\n" + strModel + "end \"model inline\""))); +}if (strModel != null) { +if (!isAppend) this.zap(true, false, false); +if (!isLoadVariable && (!haveFileData || isString)) this.getStateCreator().getInlineData(loadScript, strModel, isAppend, htParams.get("appendToModelIndex"), this.g.defaultLoadFilter); +atomSetCollection = this.fm.createAtomSetCollectionFromString(strModel, htParams, isAppend); +} else { +atomSetCollection = this.fm.createAtomSetCollectionFromFile(fileName, htParams, isAppend); +}JU.Logger.checkTimer(msg, false); +return atomSetCollection; +}, "~S,~B,java.util.Map,JU.SB"); +Clazz.overrideMethod(c$, "openStringInline", +function(strModel){ +var ret = this.openStringInlineParamsAppend(strModel, null, false); +this.refresh(1, "openStringInline"); +return ret; +}, "~S"); +Clazz.defineMethod(c$, "loadInline", +function(strModel){ +return this.loadInlineScriptRepaint(strModel, this.g.inlineNewlineChar, false); +}, "~S"); +Clazz.defineMethod(c$, "loadInline", +function(strModel, newLine){ +return this.loadInlineScriptRepaint(strModel, newLine, false); +}, "~S,~S"); +Clazz.overrideMethod(c$, "loadInlineAppend", +function(strModel, isAppend){ +return this.loadInlineScriptRepaint(strModel, '\0', isAppend); +}, "~S,~B"); +Clazz.defineMethod(c$, "loadInlineScriptRepaint", +function(strModel, newLine, isAppend){ +var ret = this.loadInlineScript(strModel, newLine, isAppend, null); +this.refresh(1, "loadInlineScript"); +return ret; +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "loadInline", +function(arrayModels){ +return this.loadInline(arrayModels, false); +}, "~A"); +Clazz.defineMethod(c$, "loadInline", +function(arrayModels, isAppend){ +if (arrayModels == null || arrayModels.length == 0) return null; +var ret = this.openStringsInlineParamsAppend(arrayModels, new java.util.Hashtable(), isAppend); +this.refresh(1, "loadInline String[]"); +return ret; +}, "~A,~B"); +Clazz.defineMethod(c$, "loadInline", +function(arrayData, isAppend){ +if (arrayData == null || arrayData.size() == 0) return null; +if (!isAppend) this.zap(true, false, false); +var list = new JU.Lst(); +for (var i = 0; i < arrayData.size(); i++) list.addLast(arrayData.get(i)); + +var atomSetCollection = this.fm.createAtomSeCollectionFromArrayData(list, this.setLoadParameters(null, isAppend), isAppend); +var ret = this.createModelSetAndReturnError(atomSetCollection, isAppend, null, new java.util.Hashtable()); +this.refresh(1, "loadInline"); +return ret; +}, "java.util.List,~B"); +Clazz.defineMethod(c$, "loadInlineScript", +function(strModel, newLine, isAppend, htParams){ +if (strModel == null || strModel.length == 0) return null; +strModel = JV.Viewer.fixInlineString(strModel, newLine); +if (newLine.charCodeAt(0) != 0) JU.Logger.info("loading model inline, " + strModel.length + " bytes, with newLine character " + (newLine).charCodeAt(0) + " isAppend=" + isAppend); +if (JU.Logger.debugging) JU.Logger.debug(strModel); +var datasep = this.getDataSeparator(); +var i; +if (datasep != null && datasep !== "" && (i = strModel.indexOf(datasep)) >= 0 && strModel.indexOf("# Jmol state") < 0) { +var n = 2; +while ((i = strModel.indexOf(datasep, i + 1)) >= 0) n++; + +var strModels = new Array(n); +var pt = 0; +var pt0 = 0; +for (i = 0; i < n; i++) { +pt = strModel.indexOf(datasep, pt0); +if (pt < 0) pt = strModel.length; +strModels[i] = strModel.substring(pt0, pt); +pt0 = pt + datasep.length; +} +return this.openStringsInlineParamsAppend(strModels, htParams, isAppend); +}return this.openStringInlineParamsAppend(strModel, htParams, isAppend); +}, "~S,~S,~B,java.util.Map"); +c$.fixInlineString = Clazz.defineMethod(c$, "fixInlineString", +function(strModel, newLine){ +var i; +if (strModel.indexOf("\\/n") >= 0) { +strModel = JU.PT.rep(strModel, "\n", ""); +strModel = JU.PT.rep(strModel, "\\/n", "\n"); +newLine = String.fromCharCode( 0); +}if (newLine.charCodeAt(0) != 0 && newLine != '\n') { +var repEmpty = (strModel.indexOf('\n') >= 0); +var len = strModel.length; +for (i = 0; i < len && strModel.charAt(i) == ' '; ++i) { +} +if (i < len && strModel.charAt(i) == newLine) strModel = strModel.substring(i + 1); +if (repEmpty) strModel = JU.PT.rep(strModel, "" + newLine, ""); + else strModel = strModel.$replace(newLine, '\n'); +}return strModel; +}, "~S,~S"); +Clazz.defineMethod(c$, "openStringInlineParamsAppend", +function(strModel, htParams, isAppend){ +htParams = this.setLoadParameters(htParams, isAppend); +var type = this.getModelAdapter().getFileTypeName(htParams.get("filter")); +if (type == null && (type = this.getModelAdapter().getFileTypeName(JU.Rdr.getBR(strModel))) == null) return "unknown file type"; +if (type.equals("spt")) { +return "cannot open script inline"; +}var loadScript = htParams.get("loadScript"); +var isLoadCommand = htParams.containsKey("isData"); +if (loadScript == null) loadScript = new JU.SB(); +if (!isAppend) this.zap(true, false, false); +if (!isLoadCommand) this.getStateCreator().getInlineData(loadScript, strModel, isAppend, htParams.get("appendToModelIndex"), this.g.defaultLoadFilter); +var atomSetCollection = this.fm.createAtomSetCollectionFromString(strModel, htParams, isAppend); +return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~S,java.util.Map,~B"); +Clazz.defineMethod(c$, "openStringsInlineParamsAppend", +function(arrayModels, htParams, isAppend){ +var loadScript = new JU.SB(); +if (!isAppend) this.zap(true, false, false); +var atomSetCollection = this.fm.createAtomSeCollectionFromStrings(arrayModels, loadScript, this.setLoadParameters(htParams, isAppend), isAppend); +return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~A,java.util.Map,~B"); +Clazz.defineMethod(c$, "getInlineChar", +function(){ +return this.g.inlineNewlineChar; +}); +Clazz.defineMethod(c$, "getDataSeparator", +function(){ +return this.g.getParameter("dataseparator", true); +}); +Clazz.defineMethod(c$, "createModelSetAndReturnError", +function(atomSetCollection, isAppend, loadScript, htParams){ +JU.Logger.startTimer("creating model"); +var fullPathName = this.fm.getFullPathName(false); +var fileName = this.fm.getFileName(); +var errMsg; +if (loadScript == null) { +this.setBooleanPropertyTok("preserveState", 603979898, false); +loadScript = new JU.SB().append("load \"???\""); +}if ((typeof(atomSetCollection)=='string')) { +errMsg = atomSetCollection; +this.setFileLoadStatus(J.c.FIL.NOT_LOADED, fullPathName, null, null, errMsg, null); +if (this.displayLoadErrors && !isAppend && !errMsg.equals("#CANCELED#") && !errMsg.startsWith(JV.JC.READER_NOT_FOUND)) this.zapMsg(errMsg); +return errMsg; +}if (isAppend) this.clearAtomSets(); + else if (this.g.modelKitMode && !fileName.equals("Jmol Model Kit")) this.setModelKitMode(false); +this.setFileLoadStatus(J.c.FIL.CREATING_MODELSET, fullPathName, fileName, null, null, null); +this.pushHoldRepaintWhy("createModelSet"); +this.setErrorMessage(null, null); +try { +var bsNew = new JU.BS(); +this.mm.createModelSet(fullPathName, fileName, loadScript, atomSetCollection, bsNew, isAppend); +if (!bsNew.isEmpty()) { +var jmolScript = this.ms.getInfoM("jmolscript"); +if (this.ms.getMSInfoB("doMinimize")) { +try { +var eval = htParams.get("eval"); +var stereo = this.getAtomBitSet("_C & connected(3) & !connected(double)"); +stereo.and(bsNew); +if (stereo.nextSetBit(0) >= 0) { +bsNew.or(this.addHydrogens(stereo, 41)); +}this.minimize(eval, 2147483647, 0, bsNew, null, null, 0, 185); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} else { +this.addHydrogens(bsNew, 9); +}if (jmolScript != null) this.ms.msInfo.put("jmolscript", jmolScript); +}this.initializeModel(isAppend); +} catch (er) { +if (Clazz.exceptionOf(er, Error)){ +this.handleError(er, true); +errMsg = this.getShapeErrorState(); +errMsg = ("ERROR creating model: " + er + (errMsg.length == 0 ? "" : "|" + errMsg)); +this.zapMsg(errMsg); +this.setErrorMessage(errMsg, null); +} else { +throw er; +} +} +this.popHoldRepaint("createModelSet \u0001## REPAINT_IGNORE ##"); +errMsg = this.getErrorMessage(); +this.setFileLoadStatus(J.c.FIL.CREATED, fullPathName, fileName, this.ms.modelSetName, errMsg, htParams.get("async")); +if (isAppend) { +this.selectAll(); +this.setTainted(true); +this.axesAreTainted = true; +}atomSetCollection = null; +JU.Logger.checkTimer("creating model", false); +System.gc(); +return errMsg; +}, "~O,~B,JU.SB,java.util.Map"); +Clazz.defineMethod(c$, "loadAtomDataAndReturnError", +function(atomSetCollection, tokType){ +if ((typeof(atomSetCollection)=='string')) return atomSetCollection; +this.setErrorMessage(null, null); +try { +var script = this.mm.createAtomDataSet(atomSetCollection, tokType); +switch (tokType) { +case 1145047049: +if (script != null) this.runScriptCautiously(script); +break; +case 4166: +this.setStatusFrameChanged(true, false); +break; +case 1648363544: +this.shm.deleteVdwDependentShapes(null); +break; +} +} catch (er) { +if (Clazz.exceptionOf(er, Error)){ +this.handleError(er, true); +var errMsg = this.getShapeErrorState(); +errMsg = ("ERROR adding atom data: " + er + (errMsg.length == 0 ? "" : "|" + errMsg)); +this.zapMsg(errMsg); +this.setErrorMessage(errMsg, null); +this.setParallel(false); +} else { +throw er; +} +} +return this.getErrorMessage(); +}, "~O,~N"); +Clazz.defineMethod(c$, "getCurrentFileAsString", +function(state){ +var filename = this.fm.getFullPathName(false); +if (filename.equals("string") || filename.equals("Jmol Model Kit")) return this.ms.getInlineData(this.am.cmi); +if (filename.equals("String[]")) return filename; +if (filename === "JSNode") return ""; +return this.getFileAsString4(filename, -1, true, false, false, state); +}, "~S"); +Clazz.defineMethod(c$, "getFullPathNameOrError", +function(filename){ +var data = new Array(2); +this.fm.getFullPathNameOrError(filename, false, data); +return data; +}, "~S"); +Clazz.defineMethod(c$, "getFileAsString3", +function(name, checkProtected, state){ +return this.getFileAsString4(name, -1, false, false, checkProtected, state); +}, "~S,~B,~S"); +Clazz.defineMethod(c$, "getFileAsString4", +function(name, nBytesMax, doSpecialLoad, allowBinary, checkProtected, state){ +if (name == null) return this.getCurrentFileAsString(state); +var data = Clazz.newArray(-1, [name, null]); +this.fm.getFileDataAsString(data, nBytesMax, doSpecialLoad, allowBinary, checkProtected); +return data[1]; +}, "~S,~N,~B,~B,~B,~S"); +Clazz.defineMethod(c$, "getAsciiFileOrNull", +function(name){ +var data = Clazz.newArray(-1, [name, null]); +return (this.fm.getFileDataAsString(data, -1, false, false, false) ? data[1] : null); +}, "~S"); +Clazz.defineMethod(c$, "autoCalculate", +function(tokProperty, dataType){ +switch (tokProperty) { +case 1111490575: +this.ms.getSurfaceDistanceMax(); +break; +case 1111490574: +this.ms.calculateStraightnessAll(); +break; +case 1111490587: +this.ms.calculateDssrProperty(dataType); +} +}, "~N,~S"); +Clazz.defineMethod(c$, "calculateStraightness", +function(){ +this.ms.haveStraightness = false; +this.ms.calculateStraightnessAll(); +}); +Clazz.defineMethod(c$, "calculateSurface", +function(bsSelected, envelopeRadius){ +if (bsSelected == null) bsSelected = this.bsA(); +if (envelopeRadius == 3.4028235E38 || envelopeRadius == -1) this.ms.addStateScript("calculate surfaceDistance " + (envelopeRadius == 3.4028235E38 ? "FROM" : "WITHIN"), null, bsSelected, null, "", false, true); +return this.ms.calculateSurface(bsSelected, envelopeRadius); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "getStructureList", +function(){ +return this.g.getStructureList(); +}); +Clazz.defineMethod(c$, "setStructureList", +function(list, type){ +this.g.setStructureList(list, type); +this.ms.setStructureList(this.getStructureList()); +}, "~A,J.c.STR"); +Clazz.defineMethod(c$, "calculateStructures", +function(bsAtoms, asDSSP, setStructure, version){ +if (bsAtoms == null) bsAtoms = this.bsA(); +return this.ms.calculateStructures(bsAtoms, asDSSP, !this.am.animationOn, this.g.dsspCalcHydrogen, setStructure, version); +}, "JU.BS,~B,~B,~N"); +Clazz.defineMethod(c$, "getAnnotationParser", +function(isDSSR){ +return (isDSSR ? (this.dssrParser == null ? (this.dssrParser = J.api.Interface.getOption("dssx.DSSR1", this, "script")) : this.dssrParser) : (this.annotationParser == null ? (this.annotationParser = J.api.Interface.getOption("dssx.AnnotationParser", this, "script")) : this.annotationParser)); +}, "~B"); +Clazz.overrideMethod(c$, "getSelectedAtomIterator", +function(bsSelected, isGreaterOnly, modelZeroBased, isMultiModel){ +return this.ms.getSelectedAtomIterator(bsSelected, isGreaterOnly, modelZeroBased, false, isMultiModel); +}, "JU.BS,~B,~B,~B"); +Clazz.overrideMethod(c$, "setIteratorForAtom", +function(iterator, atomIndex, distance){ +this.ms.setIteratorForAtom(iterator, -1, atomIndex, distance, null); +}, "J.api.AtomIndexIterator,~N,~N"); +Clazz.overrideMethod(c$, "setIteratorForPoint", +function(iterator, modelIndex, pt, distance){ +this.ms.setIteratorForPoint(iterator, modelIndex, pt, distance); +}, "J.api.AtomIndexIterator,~N,JU.T3,~N"); +Clazz.overrideMethod(c$, "fillAtomData", +function(atomData, mode){ +atomData.programInfo = "Jmol Version " + JV.Viewer.getJmolVersion(); +atomData.fileName = this.fm.getFileName(); +this.ms.fillAtomData(atomData, mode); +}, "J.atomdata.AtomData,~N"); +Clazz.defineMethod(c$, "addStateScript", +function(script, addFrameNumber, postDefinitions){ +return this.ms.addStateScript(script, null, null, null, null, addFrameNumber, postDefinitions); +}, "~S,~B,~B"); +Clazz.defineMethod(c$, "getMinimizer", +function(createNew){ +return (this.minimizer == null && createNew ? (this.minimizer = J.api.Interface.getInterface("JM.Minimizer", this, "script")).setProperty("vwr", this) : this.minimizer); +}, "~B"); +Clazz.defineMethod(c$, "getSmilesMatcher", +function(){ +return (this.smilesMatcher == null ? (this.smilesMatcher = J.api.Interface.getInterface("JS.SmilesMatcher", this, "script")) : this.smilesMatcher); +}); +Clazz.defineMethod(c$, "clearModelDependentObjects", +function(){ +this.setFrameOffsets(null, false); +this.stopMinimization(); +this.minimizer = null; +this.smilesMatcher = null; +if (this.modelkit != null) this.modelkit.clearAtomConstraints(); +}); +Clazz.defineMethod(c$, "zap", +function(notify, resetUndo, zapModelKit){ +this.clearThreads(); +if (this.mm.modelSet == null) { +this.mm.zap(); +} else { +this.ligandModelSet = null; +this.clearModelDependentObjects(); +this.fm.clear(); +this.clearRepaintManager(-1); +this.am.clear(); +this.tm.clear(); +this.slm.clear(); +this.hasSelected = true; +this.clearAllMeasurements(); +this.clearMinimization(); +this.gdata.clear(); +this.mm.zap(); +if (this.scm != null) this.scm.clear(false); +if (this.nmrCalculation != null) this.getNMRCalculation().setChemicalShiftReference(null, 0); +if (this.haveDisplay) { +this.mouse.clear(); +this.clearTimeouts(); +this.acm.clear(); +}this.stm.clear(this.g); +this.tempArray.clear(); +this.chainMap.clear(); +this.chainList.clear(); +this.chainCaseSpecified = false; +this.definedAtomSets.clear(); +this.lastData = null; +if (this.dm != null) this.dm.clear(); +if (!this.g.doublePrecision && this.g.legacyJavaFloat) this.setBooleanPropertyTok("legacyjavafloat", 603979874, false); +if (resetUndo) { +if (zapModelKit) this.g.removeParam("_pngjFile"); +if (zapModelKit && this.g.modelKitMode) { +this.loadDefaultModelKitModel(null); +} else { +this.setPickingMode(null, 1); +}this.undoMoveAction(4165, -2); +}System.gc(); +}this.initializeModel(false); +if (notify) { +this.setFileLoadStatus(J.c.FIL.ZAPPED, null, (resetUndo ? "resetUndo" : this.getZapName()), null, null, null); +}if (JU.Logger.debugging) JU.Logger.checkMemory(); +}, "~B,~B,~B"); +Clazz.defineMethod(c$, "loadDefaultModelKitModel", +function(htParams){ +if (this.getModelkit(false).isHidden() || this.getOperativeSymmetry() != null) return; +this.openStringInlineParamsAppend(this.getModelkit(false).getDefaultModel(), htParams, true); +this.setRotationRadius(5.0, true); +this.setStringProperty("picking", "assignAtom_C"); +this.setStringProperty("picking", "assignBond_p"); +}, "java.util.Map"); +Clazz.defineMethod(c$, "zapMsg", +function(msg){ +this.zap(true, true, false); +this.echoMessage(msg); +}, "~S"); +Clazz.defineMethod(c$, "echoMessage", +function(msg){ +var iShape = 31; +this.shm.loadShape(iShape); +this.setShapeProperty(iShape, "font", this.getFont3D("SansSerif", "Plain", 20)); +this.setShapeProperty(iShape, "target", "error"); +this.setShapeProperty(iShape, "text", msg); +}, "~S"); +Clazz.defineMethod(c$, "initializeModel", +function(isAppend){ +this.clearThreads(); +if (isAppend) { +this.am.initializePointers(1); +return; +}this.reset(true); +this.selectAll(); +this.setModelkitPropertySafely("initializemodel", null); +this.movingSelected = false; +this.slm.noneSelected = Boolean.FALSE; +this.setHoverEnabled(true); +this.setSelectionHalosEnabled(false); +this.tm.setCenter(); +this.am.initializePointers(1); +this.setBooleanPropertyTok("multipleBondBananas", 603979886, false); +if (!this.ms.getMSInfoB("isPyMOL")) { +this.clearAtomSets(); +this.setCurrentModelIndex(0); +}this.setBackgroundModelIndex(-1); +this.setFrankOn(this.getShowFrank()); +this.shm.setScale(); +this.startHoverWatcher(true); +this.setTainted(true); +this.finalizeTransformParameters(); +}, "~B"); +Clazz.defineMethod(c$, "startHoverWatcher", +function(tf){ +if (tf && this.inMotion || !this.haveDisplay || tf && (!this.hoverEnabled && !this.sm.haveHoverCallback() || this.am.animationOn)) return; +this.acm.startHoverWatcher(tf); +}, "~B"); +Clazz.overrideMethod(c$, "getModelSetPathName", +function(){ +return this.mm.modelSetPathName; +}); +Clazz.overrideMethod(c$, "getModelSetFileName", +function(){ +return (this.mm.fileName == null ? this.getZapName() : this.mm.fileName); +}); +Clazz.defineMethod(c$, "getUnitCellInfoText", +function(){ +var c = this.getCurrentUnitCell(); +return (c == null ? "not applicable" : c.getUnitCellInfo(true)); +}); +Clazz.defineMethod(c$, "getUnitCellInfo", +function(infoType){ +var symmetry = this.getCurrentUnitCell(); +return (symmetry == null ? NaN : symmetry.getUnitCellInfoType(infoType)); +}, "~N"); +Clazz.defineMethod(c$, "getV0abc", +function(iModel, def){ +var uc = (iModel < 0 ? this.getCurrentUnitCell() : this.getUnitCell(iModel)); +if (uc == null) uc = this.getSymTemp(); +return (uc == null ? null : uc.getV0abc(def, null)); +}, "~N,~O"); +Clazz.defineMethod(c$, "getCurrentUnitCell", +function(){ +var iAtom = this.am.getUnitCellAtomIndex(); +return (iAtom >= 0 ? this.ms.getUnitCellForAtom(iAtom) : this.getUnitCell(this.am.cmi)); +}); +Clazz.defineMethod(c$, "getUnitCell", +function(modelIndex){ +if (modelIndex >= 0) return this.ms.getUnitCell(modelIndex); +var models = this.getVisibleFramesBitSet(); +var ucLast = null; +for (var i = models.nextSetBit(0); i >= 0; i = models.nextSetBit(i + 1)) { +var uc = this.ms.getUnitCell(i); +if (uc == null) continue; +if (ucLast == null) { +ucLast = uc; +continue; +}if (!ucLast.unitCellEquals(uc)) return null; +} +return ucLast; +}, "~N"); +Clazz.defineMethod(c$, "getPolymerPointsAndVectors", +function(bs, vList){ +this.ms.getPolymerPointsAndVectors(bs, vList, this.g.traceAlpha, this.g.sheetSmoothing); +}, "JU.BS,JU.Lst"); +Clazz.defineMethod(c$, "getHybridizationAndAxes", +function(atomIndex, z, x, lcaoType){ +return this.ms.getHybridizationAndAxes(atomIndex, 0, z, x, lcaoType, true, true, false, null); +}, "~N,JU.V3,JU.V3,~S"); +Clazz.defineMethod(c$, "getAllAtoms", +function(){ +return this.getModelUndeletedAtomsBitSet(-1); +}); +Clazz.defineMethod(c$, "getFrameAtoms", +function(){ +return this.getModelUndeletedAtomsBitSetBs(this.getVisibleFramesBitSet()); +}); +Clazz.overrideMethod(c$, "getVisibleFramesBitSet", +function(){ +var bs = JU.BSUtil.copy(this.am.bsVisibleModels); +if (this.ms.trajectory != null) this.ms.trajectory.selectDisplayed(bs); +return bs; +}); +Clazz.defineMethod(c$, "getModelUndeletedAtomsBitSet", +function(modelIndex){ +return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeleted(modelIndex, true), false); +}, "~N"); +Clazz.defineMethod(c$, "getModelUndeletedAtomsBitSetBs", +function(bsModels){ +return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeletedBs(bsModels), false); +}, "JU.BS"); +Clazz.overrideMethod(c$, "getBoundBoxCenter", +function(){ +return this.ms.getBoundBoxCenter(this.am.cmi); +}); +Clazz.defineMethod(c$, "calcBoundBoxDimensions", +function(bs, scale){ +this.ms.calcBoundBoxDimensions(bs, scale); +this.axesAreTainted = true; +}, "JU.BS,~N"); +Clazz.overrideMethod(c$, "getBoundBoxCornerVector", +function(){ +return this.ms.getBoundBoxCornerVector(); +}); +Clazz.overrideMethod(c$, "getModelSetProperties", +function(){ +return this.ms.modelSetProperties; +}); +Clazz.overrideMethod(c$, "getModelProperties", +function(modelIndex){ +return this.ms.am[modelIndex].properties; +}, "~N"); +Clazz.defineMethod(c$, "getModelForAtomIndex", +function(iatom){ +return this.ms.am[this.ms.at[iatom].mi]; +}, "~N"); +Clazz.defineMethod(c$, "getModelIndexForAtom", +function(iatom){ +return this.ms.at[iatom].mi; +}, "~N"); +Clazz.overrideMethod(c$, "getModelSetAuxiliaryInfo", +function(){ +return this.ms.getModelSetAuxiliaryInfo(null); +}); +Clazz.overrideMethod(c$, "getModelNumber", +function(modelIndex){ +return (modelIndex < 0 ? modelIndex : this.ms.getModelNumber(modelIndex)); +}, "~N"); +Clazz.defineMethod(c$, "getModelFileNumber", +function(modelIndex){ +return (modelIndex < 0 ? 0 : this.ms.modelFileNumbers[modelIndex]); +}, "~N"); +Clazz.overrideMethod(c$, "getModelNumberDotted", +function(modelIndex){ +return modelIndex < 0 ? "0" : this.ms.getModelNumberDotted(modelIndex); +}, "~N"); +Clazz.overrideMethod(c$, "getModelName", +function(modelIndex){ +return this.ms.getModelName(modelIndex); +}, "~N"); +Clazz.defineMethod(c$, "modelHasVibrationVectors", +function(modelIndex){ +return (this.ms.getLastVibrationVector(modelIndex, 4166) >= 0); +}, "~N"); +Clazz.defineMethod(c$, "getBondsForSelectedAtoms", +function(bsAtoms){ +return this.ms.getBondsForSelectedAtoms(bsAtoms, this.g.bondModeOr || JU.BSUtil.cardinalityOf(bsAtoms) == 1); +}, "JU.BS"); +Clazz.defineMethod(c$, "frankClicked", +function(x, y){ +return !this.g.disablePopupMenu && this.getShowFrank() && this.shm.checkFrankclicked(x, y); +}, "~N,~N"); +Clazz.defineMethod(c$, "frankClickedModelKit", +function(x, y){ +return !this.g.disablePopupMenu && this.isModelKitOpen() && x >= 0 && y >= 0 && x < 40 && y < 104; +}, "~N,~N"); +Clazz.overrideMethod(c$, "findNearestAtomIndex", +function(x, y){ +return this.findNearestAtomIndexMovable(x, y, false); +}, "~N,~N"); +Clazz.defineMethod(c$, "findNearestAtomIndexMovable", +function(x, y, mustBeMovable){ +return (!this.g.atomPicking ? -1 : this.ms.findNearestAtomIndex(x, y, mustBeMovable ? this.slm.getMotionFixedAtoms() : null, this.g.minPixelSelRadius)); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "toCartesian", +function(pt, ignoreOffset){ +this.toCartesianUC(null, pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "toCartesianUC", +function(unitCell, pt, ignoreOffset){ +if (unitCell == null) unitCell = this.getCurrentUnitCell(); +if (unitCell != null) { +unitCell.toCartesian(pt, ignoreOffset); +if (!this.g.legacyJavaFloat) JU.PT.fixPtFloats(pt, 10000.0); +}}, "J.api.SymmetryInterface,JU.T3,~B"); +Clazz.defineMethod(c$, "toFractional", +function(pt, ignoreOffset){ +this.toFractionalUC(null, pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz.defineMethod(c$, "toFractionalUC", +function(unitCell, pt, ignoreOffset){ +if (unitCell == null) unitCell = this.getCurrentUnitCell(); +if (unitCell != null) { +unitCell.toFractional(pt, ignoreOffset); +if (!this.g.legacyJavaFloat) JU.PT.fixPtFloats(pt, 100000.0); +}}, "J.api.SymmetryInterface,JU.T3,~B"); +Clazz.defineMethod(c$, "toUnitCell", +function(pt, offset){ +var unitCell = this.getCurrentUnitCell(); +if (unitCell != null) unitCell.toUnitCell(pt, offset); +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "setCurrentCage", +function(isosurfaceId){ +var data = Clazz.newArray(-1, [isosurfaceId, null]); +this.shm.getShapePropertyData(24, "unitCell", data); +this.ms.setModelCage(this.am.cmi, data[1]); +}, "~S"); +Clazz.defineMethod(c$, "addUnitCellOffset", +function(pt){ +var unitCell = this.getCurrentUnitCell(); +if (unitCell == null) return; +pt.add(unitCell.getCartesianOffset()); +}, "JU.P3"); +Clazz.defineMethod(c$, "setAtomData", +function(type, name, coordinateData, isDefault){ +this.ms.setAtomData(type, name, coordinateData, isDefault); +if (type == 2) this.checkCoordinatesChanged(null); +this.refreshMeasures(true); +}, "~N,~S,~S,~B"); +Clazz.overrideMethod(c$, "setCenterSelected", +function(){ +this.setCenterBitSet(this.bsA(), true); +}); +Clazz.defineMethod(c$, "setApplySymmetryToBonds", +function(TF){ +this.g.applySymmetryToBonds = TF; +}, "~B"); +Clazz.overrideMethod(c$, "setBondTolerance", +function(bondTolerance){ +this.g.setF("bondTolerance", bondTolerance); +this.g.bondTolerance = bondTolerance; +}, "~N"); +Clazz.overrideMethod(c$, "setMinBondDistance", +function(minBondDistance){ +this.g.setF("minBondDistance", minBondDistance); +this.g.minBondDistance = minBondDistance; +}, "~N"); +Clazz.defineMethod(c$, "getAtomsNearPt", +function(distance, coord, bs){ +if (bs == null) bs = new JU.BS(); +this.ms.getAtomsWithin(distance, coord, bs, -1); +return bs; +}, "~N,JU.P3,JU.BS"); +Clazz.defineMethod(c$, "getBranchBitSet", +function(atomIndex, atomIndexNot, allowCyclic){ +if (atomIndex < 0 || atomIndex >= this.ms.ac) return new JU.BS(); +return JU.JmolMolecule.getBranchBitSet(this.ms.at, atomIndex, this.getModelUndeletedAtomsBitSet(this.ms.at[atomIndex].mi), null, atomIndexNot, allowCyclic, true); +}, "~N,~N,~B"); +Clazz.overrideMethod(c$, "getElementsPresentBitSet", +function(modelIndex){ +return this.ms.getElementsPresentBitSet(modelIndex); +}, "~N"); +Clazz.defineMethod(c$, "getFileHeader", +function(){ +return this.ms.getFileHeader(this.am.cmi); +}); +Clazz.defineMethod(c$, "getFileData", +function(){ +return this.ms.getFileData(this.am.cmi); +}); +Clazz.defineMethod(c$, "getCifData", +function(modelIndex){ +return this.readCifData(this.ms.getModelFileName(modelIndex), this.ms.getModelFileType(modelIndex).toUpperCase()); +}, "~N"); +Clazz.defineMethod(c$, "readCifData", +function(fileName, type){ +var fname = (fileName == null ? this.ms.getModelFileName(this.am.cmi) : fileName); +if (type == null && fname != null && fname.toUpperCase().indexOf("BCIF") >= 0) { +var is = this.fm.getBufferedInputStream(fname); +try { +return (J.api.Interface.getInterface("JU.MessagePackReader", this, "script")).getMapForStream(is); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +e.printStackTrace(); +return new java.util.Hashtable(); +} else { +throw e; +} +} +}var data = (fileName == null || fileName.length == 0 ? this.getCurrentFileAsString("script") : this.getFileAsString3(fileName, false, null)); +if (data == null || data.length < 2) return null; +var rdr = JU.Rdr.getBR(data); +if (type == null) type = this.getModelAdapter().getFileTypeName(rdr); +return (type == null ? null : this.readCifData(null, rdr, type)); +}, "~S,~S"); +Clazz.defineMethod(c$, "readCifData", +function(fileName, rdrOrStringData, type){ +if (rdrOrStringData == null) rdrOrStringData = this.getFileAsString(fileName); +var rdr = (Clazz.instanceOf(rdrOrStringData,"java.io.BufferedReader") ? rdrOrStringData : JU.Rdr.getBR(rdrOrStringData)); +return JU.Rdr.readCifData(J.api.Interface.getInterface(("Cif2".equals(type) ? "J.adapter.readers.cif.Cif2DataParser" : "JU.CifDataParser"), this, "script"), rdr); +}, "~S,~O,~S"); +Clazz.defineMethod(c$, "getStateCreator", +function(){ +if (this.jsc == null) (this.jsc = J.api.Interface.getInterface("JV.StateCreator", this, "script")).setViewer(this); +return this.jsc; +}); +Clazz.defineMethod(c$, "getWrappedStateScript", +function(){ +return this.getOutputManager().getWrappedState(null, null, null, null); +}); +Clazz.overrideMethod(c$, "getStateInfo", +function(){ +return this.getStateInfo3(null, 0, 0); +}); +Clazz.defineMethod(c$, "getStateInfo3", +function(type, width, height){ +return (this.g.preserveState ? this.getStateCreator().getStateScript(type, width, height) : ""); +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "getStructureState", +function(){ +return this.getStateCreator().getModelState(null, false, true); +}); +Clazz.defineMethod(c$, "getCoordinateState", +function(bsSelected){ +return this.getStateCreator().getAtomicPropertyState(2, bsSelected); +}, "JU.BS"); +Clazz.defineMethod(c$, "setCurrentColorRange", +function(label){ +var data = this.getDataObj(label, null, 1); +var bs = (data == null ? null : (this.getDataObj(label, null, -1))[2]); +if (bs != null && this.g.rangeSelected) bs.and(this.bsA()); +this.cm.setPropertyColorRangeData(data, bs); +}, "~S"); +Clazz.defineMethod(c$, "setData", +function(key, data, dataType, matchField, matchFieldColumnCount, dataField, dataFieldColumnCount){ +this.getDataManager().setData(key, this.lastData = data, dataType, this.ms.ac, matchField, matchFieldColumnCount, dataField, dataFieldColumnCount); +}, "~S,~A,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getDataObj", +function(key, bsSelected, dataType){ +return (key == null && dataType == -2 ? this.lastData : this.getDataManager().getData(key, bsSelected, dataType)); +}, "~S,JU.BS,~N"); +Clazz.defineMethod(c$, "autoHbond", +function(bsFrom, bsTo, onlyIfHaveCalculated){ +if (bsFrom == null) bsFrom = bsTo = this.bsA(); +return this.ms.autoHbond(bsFrom, bsTo, onlyIfHaveCalculated); +}, "JU.BS,JU.BS,~B"); +Clazz.defineMethod(c$, "getDefaultMeasurementLabel", +function(nPoints){ +switch (nPoints) { +case 2: +return this.g.defaultDistanceLabel; +case 3: +return this.g.defaultAngleLabel; +default: +return this.g.defaultTorsionLabel; +} +}, "~N"); +Clazz.overrideMethod(c$, "getMeasurementCount", +function(){ +var count = this.getShapePropertyAsInt(6, "count"); +return count <= 0 ? 0 : count; +}); +Clazz.overrideMethod(c$, "getMeasurementStringValue", +function(i){ +return "" + this.shm.getShapePropertyIndex(6, "stringValue", i); +}, "~N"); +Clazz.defineMethod(c$, "getMeasurementInfoAsString", +function(){ +return this.getShapeProperty(6, "infostring"); +}); +Clazz.overrideMethod(c$, "getMeasurementCountPlusIndices", +function(i){ +return this.shm.getShapePropertyIndex(6, "countPlusIndices", i); +}, "~N"); +Clazz.defineMethod(c$, "setPendingMeasurement", +function(mp){ +this.shm.loadShape(6); +this.setShapeProperty(6, "pending", mp); +}, "JM.MeasurementPending"); +Clazz.defineMethod(c$, "getPendingMeasurement", +function(){ +return this.getShapeProperty(6, "pending"); +}); +Clazz.defineMethod(c$, "clearAllMeasurements", +function(){ +this.setShapeProperty(6, "clear", null); +}); +Clazz.overrideMethod(c$, "clearMeasurements", +function(){ +this.evalString("measures delete"); +}); +Clazz.defineMethod(c$, "setAnimation", +function(tok){ +switch (tok) { +case 1073742098: +this.am.reverseAnimation(); +case 1073742096: +case 4143: +if (!this.am.animationOn) this.am.resumeAnimation(); +return; +case 20487: +if (this.am.animationOn && !this.am.animationPaused) this.am.pauseAnimation(); +return; +case 1073742037: +this.am.setAnimationNext(); +return; +case 1073742108: +this.am.setAnimationPrevious(); +return; +case 1073741942: +case 1073742125: +this.am.rewindAnimation(); +return; +case 1073741993: +this.am.setAnimationLast(); +return; +} +}, "~N"); +Clazz.overrideMethod(c$, "setAnimationFps", +function(fps){ +this.am.setAnimationFps(fps); +}, "~N"); +Clazz.defineMethod(c$, "setAnimationMode", +function(mode){ +if (mode.equalsIgnoreCase("once")) { +this.am.setAnimationReplayMode(1073742070, 0, 0); +} else if (mode.equalsIgnoreCase("loop")) { +this.am.setAnimationReplayMode(528411, 1, 1); +} else if (mode.startsWith("pal")) { +this.am.setAnimationReplayMode(1073742082, 1, 1); +}}, "~S"); +Clazz.defineMethod(c$, "setAnimationOn", +function(animationOn){ +var wasAnimating = this.am.animationOn; +if (animationOn == wasAnimating) return; +this.am.setAnimationOn(animationOn); +}, "~B"); +Clazz.defineMethod(c$, "setAnimationRange", +function(modelIndex1, modelIndex2){ +this.am.setAnimationRange(modelIndex1, modelIndex2); +}, "~N,~N"); +Clazz.defineMethod(c$, "defineAtomSets", +function(info){ +this.definedAtomSets.putAll(info); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setAnimDisplay", +function(bs){ +this.am.setDisplay(bs); +if (!this.am.animationOn) this.am.morph(this.am.currentMorphModel + 1); +}, "JU.BS"); +Clazz.defineMethod(c$, "setCurrentModelIndex", +function(modelIndex){ +if (modelIndex == -2147483648) { +this.prevFrame = -2147483648; +this.setCurrentModelIndexClear(this.am.cmi, true); +return; +}this.am.setModel(modelIndex, true); +}, "~N"); +Clazz.defineMethod(c$, "getTrajectoryState", +function(){ +return (this.ms.trajectory == null ? "" : this.ms.trajectory.getState()); +}); +Clazz.defineMethod(c$, "setFrameOffsets", +function(bsAtoms, isFull){ +this.tm.bsFrameOffsets = null; +if (isFull) this.clearModelDependentObjects(); + else this.tm.bsFrameOffsets = bsAtoms; +this.tm.frameOffsets = this.ms.getFrameOffsets(bsAtoms, isFull); +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "setCurrentModelIndexClear", +function(modelIndex, clearBackground){ +this.am.setModel(modelIndex, clearBackground); +}, "~N,~B"); +Clazz.defineMethod(c$, "haveFileSet", +function(){ +return (this.ms.mc > 1 && this.getModelNumber(2147483647) > 2000000); +}); +Clazz.defineMethod(c$, "setBackgroundModelIndex", +function(modelIndex){ +this.am.setBackgroundModelIndex(modelIndex); +this.g.setO("backgroundModel", this.ms.getModelNumberDotted(modelIndex)); +}, "~N"); +Clazz.defineMethod(c$, "setFrameVariables", +function(){ +this.g.setO("animationMode", JS.T.nameOf(this.am.animationReplayMode)); +this.g.setI("animationFps", this.am.animationFps); +this.g.setO("_firstFrame", this.am.getModelSpecial(-1)); +this.g.setO("_lastFrame", this.am.getModelSpecial(1)); +this.g.setF("_animTimeSec", this.am.getAnimRunTimeSeconds()); +this.g.setB("_animMovie", this.am.isMovie); +}); +Clazz.defineMethod(c$, "getInMotion", +function(includeAnim){ +return (this.inMotion || includeAnim && this.am.animationOn); +}, "~B"); +Clazz.overrideMethod(c$, "getMotionEventNumber", +function(){ +return this.motionEventNumber; +}); +Clazz.overrideMethod(c$, "setInMotion", +function(inMotion){ +if ( new Boolean (this.inMotion ^ inMotion).valueOf()) { +this.inMotion = inMotion; +this.resizeImage(0, 0, false, false, true); +if (inMotion) { +this.startHoverWatcher(false); +++this.motionEventNumber; +} else { +this.startHoverWatcher(true); +this.refresh(3, "vwr setInMotion " + inMotion); +}}}, "~B"); +Clazz.defineMethod(c$, "setRefreshing", +function(TF){ +this.refreshing = TF; +}, "~B"); +Clazz.defineMethod(c$, "getRefreshing", +function(){ +return this.refreshing; +}); +Clazz.overrideMethod(c$, "pushHoldRepaint", +function(){ +this.pushHoldRepaintWhy(null); +}); +Clazz.defineMethod(c$, "pushHoldRepaintWhy", +function(why){ +if (this.rm != null) this.rm.pushHoldRepaint(why); +}, "~S"); +Clazz.overrideMethod(c$, "popHoldRepaint", +function(why){ +if (this.rm != null) { +this.rm.popHoldRepaint(why.indexOf("\u0001## REPAINT_IGNORE ##") < 0, why); +}}, "~S"); +Clazz.overrideMethod(c$, "refresh", +function(mode, strWhy){ +if (this.rm == null || !this.refreshing || mode == 6 && this.getInMotion(true) || !this.isWebGL && mode == 7) return; +if (this.isWebGL) { +switch (mode) { +case 1: +case 2: +case 7: +this.tm.finalizeTransformParameters(); +if (this.html5Applet == null) return; +this.html5Applet._refresh(); +if (mode == 7) return; +break; +} +} else { +this.rm.repaintIfReady("refresh " + mode + " " + strWhy); +}if (this.sm.doSync()) this.sm.setSync(mode == 2 ? strWhy : null); +}, "~N,~S"); +Clazz.defineMethod(c$, "requestRepaintAndWait", +function(why){ +if (this.rm == null) return; +if (!this.haveDisplay) { +this.setModelVisibility(); +this.shm.finalizeAtoms(null, true); +return; +}this.rm.requestRepaintAndWait(why); +this.setSync(); +}, "~S"); +Clazz.defineMethod(c$, "clearShapeRenderers", +function(){ +this.clearRepaintManager(-1); +}); +Clazz.defineMethod(c$, "isRepaintPending", +function(){ +return (this.rm == null ? false : this.rm.isRepaintPending()); +}); +Clazz.overrideMethod(c$, "notifyViewerRepaintDone", +function(){ +if (this.rm != null) this.rm.repaintDone(); +this.am.repaintDone(); +}); +Clazz.defineMethod(c$, "areAxesTainted", +function(){ +var TF = this.axesAreTainted; +this.axesAreTainted = false; +return TF; +}); +Clazz.overrideMethod(c$, "generateOutputForExport", +function(params){ +return (this.noGraphicsAllowed || this.rm == null ? null : this.getOutputManager().getOutputFromExport(params)); +}, "java.util.Map"); +Clazz.defineMethod(c$, "clearRepaintManager", +function(iShape){ +if (this.rm != null) this.rm.clear(iShape); +}, "~N"); +Clazz.defineMethod(c$, "renderScreenImage", +function(g, width, height){ +this.renderScreenImageStereo(g, false, width, height); +}, "~O,~N,~N"); +Clazz.defineMethod(c$, "renderScreenImageStereo", +function(gLeft, checkStereoSlave, width, height){ +if (this.updateWindow(width, height)) { +if (!checkStereoSlave || this.gRight == null) { +this.getScreenImageBuffer(gLeft, false); +} else { +this.drawImage(this.gRight, this.getImage(true, false), 0, 0, this.tm.stereoDoubleDTI); +this.drawImage(gLeft, this.getImage(false, false), 0, 0, this.tm.stereoDoubleDTI); +}}if (this.captureParams != null && Boolean.FALSE !== this.captureParams.get("captureEnabled")) { +this.captureParams.remove("imagePixels"); +var t = (this.captureParams.get("endTime")).longValue(); +if (t > 0 && System.currentTimeMillis() + 50 > t) this.captureParams.put("captureMode", "end"); +this.processWriteOrCapture(this.captureParams); +}this.notifyViewerRepaintDone(); +}, "~O,~B,~N,~N"); +Clazz.defineMethod(c$, "updateJS", +function(){ +if (this.isWebGL) { +if (this.jsParams == null) { +this.jsParams = new java.util.Hashtable(); +this.jsParams.put("type", "JS"); +}if (this.updateWindow(0, 0)) this.render(); +this.notifyViewerRepaintDone(); +} else { +if (this.isStereoSlave) return; +this.renderScreenImageStereo(this.apiPlatform.getGraphics(null), true, 0, 0); +}}); +Clazz.defineMethod(c$, "updateJSView", +function(imodel, iatom){ +if (this.html5Applet == null) return; +var applet = this.html5Applet; +var doViewPick = true; +{ +doViewPick = (applet != null && applet._viewSet != null); +}if (doViewPick) this.html5Applet._atomPickedCallback(imodel, iatom); +}, "~N,~N"); +Clazz.overrideMethod(c$, "evalFile", +function(strFilename){ +return this.evalFileArgs(strFilename, null); +}, "~S"); +Clazz.overrideMethod(c$, "evalFileArgs", +function(strFilename, args){ +return (this.allowScripting && this.getScriptManager() != null ? this.scm.evalFileArgs(strFilename, args) : null); +}, "~S,~S"); +Clazz.defineMethod(c$, "getInsertedCommand", +function(){ +var s = this.insertedCommand; +this.insertedCommand = ""; +if (JU.Logger.debugging && s !== "") JU.Logger.debug("inserting: " + s); +return s; +}); +Clazz.overrideMethod(c$, "script", +function(strScript){ +return this.evalStringQuietSync(strScript, false, true); +}, "~S"); +Clazz.overrideMethod(c$, "evalString", +function(strScript){ +return this.evalStringQuietSync(strScript, false, true); +}, "~S"); +Clazz.overrideMethod(c$, "evalStringQuiet", +function(strScript){ +return this.evalStringQuietSync(strScript, true, true); +}, "~S"); +Clazz.defineMethod(c$, "evalStringQuietSync", +function(strScript, isQuiet, allowSyncScript){ +return (this.getScriptManager() == null ? null : this.scm.evalStringQuietSync(strScript, isQuiet, allowSyncScript)); +}, "~S,~B,~B"); +Clazz.defineMethod(c$, "clearScriptQueue", +function(){ +if (this.scm != null) this.scm.clearQueue(); +}); +Clazz.defineMethod(c$, "setScriptQueue", +function(TF){ +this.g.useScriptQueue = TF; +if (!TF) this.clearScriptQueue(); +}, "~B"); +Clazz.overrideMethod(c$, "checkHalt", +function(str, isInsert){ +return (this.scm != null && this.scm.checkHalt(str, isInsert)); +}, "~S,~B"); +Clazz.overrideMethod(c$, "scriptWait", +function(strScript){ +return this.evalWait("JSON", strScript, "+scriptStarted,+scriptStatus,+scriptEcho,+scriptTerminated"); +}, "~S"); +Clazz.overrideMethod(c$, "scriptWaitStatus", +function(strScript, statusList){ +return this.evalWait("object", strScript, statusList); +}, "~S,~S"); +Clazz.defineMethod(c$, "evalWait", +function(returnType, strScript, statusList){ +if (this.getScriptManager() == null) return null; +this.scm.waitForQueue(); +var doTranslateTemp = J.i18n.GT.setDoTranslate(false); +var ret = this.evalStringWaitStatusQueued(returnType, strScript, statusList, false, false); +J.i18n.GT.setDoTranslate(doTranslateTemp); +return ret; +}, "~S,~S,~S"); +Clazz.defineMethod(c$, "exitJmol", +function(){ +if (this.isApplet && !this.isJNLP) return; +if (this.headlessImageParams != null) { +try { +if (this.headless) this.outputToFile(this.headlessImageParams); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}if (JU.Logger.debugging) JU.Logger.debug("exitJmol -- exiting"); +System.out.flush(); +System.exit(0); +}); +Clazz.defineMethod(c$, "scriptCheckRet", +function(strScript, returnContext){ +return (this.getScriptManager() == null ? null : this.scm.scriptCheckRet(strScript, returnContext)); +}, "~S,~B"); +Clazz.overrideMethod(c$, "scriptCheck", +function(strScript){ +return this.scriptCheckRet(strScript, false); +}, "~S"); +Clazz.overrideMethod(c$, "isScriptExecuting", +function(){ +return (this.eval != null && this.eval.isExecuting()); +}); +Clazz.overrideMethod(c$, "haltScriptExecution", +function(){ +if (this.eval != null) { +this.eval.haltExecution(); +this.eval.stopScriptThreads(); +}this.setStringPropertyTok("pathForAllFiles", 545259572, ""); +this.clearTimeouts(); +}); +Clazz.defineMethod(c$, "pauseScriptExecution", +function(){ +if (this.eval != null) this.eval.pauseExecution(true); +}); +Clazz.defineMethod(c$, "resolveDatabaseFormat", +function(fileName){ +return (JV.Viewer.hasDatabasePrefix(fileName) || fileName.indexOf("cactus.nci.nih.gov/chemical/structure") >= 0 ? this.setLoadFormat(false, fileName, fileName.charAt(0), false) : fileName); +}, "~S"); +c$.hasDatabasePrefix = Clazz.defineMethod(c$, "hasDatabasePrefix", +function(fileName){ +return (fileName.length != 0 && JV.Viewer.isDatabaseCode(fileName.charAt(0))); +}, "~S"); +c$.isDatabaseCode = Clazz.defineMethod(c$, "isDatabaseCode", +function(ch){ +return (ch == '*' || ch == '$' || ch == '=' || ch == ':'); +}, "~S"); +Clazz.defineMethod(c$, "setLoadFormat", +function(isSurface, name, type, withPrefix){ +var format = null; +var id = name.substring(1); +switch ((type).charCodeAt(0)) { +case 99: +return name; +case 104: +if (this.g.checkCIR) this.checkCIR(false); +return this.g.nihResolverFormat + name.substring(name.indexOf("/structure") + 10); +case 61: +if (name.startsWith("==")) { +id = id.substring(1); +if (id.equals("?") && (id = this.getDBID("chemical component from RCSB")) == null) return null; +type = '#'; +} else { +if (id.equals("?") && (id = this.getDBID("PDB ID from RCSB")) == null) return null; +if (id.indexOf("/") > 0) { +try { +var pt = id.indexOf("/"); +var database = id.substring(0, pt); +id = id.substring(pt + 1); +if (database.equalsIgnoreCase("aflowlib")) { +var index = 1; +pt = id.indexOf('.'); +if (pt >= 0) { +index = JU.PT.parseInt(id.substring(pt + 1)); +id = id.substring(0, pt); +}if (id.indexOf("_") < 0) id = this.getSymTemp().getSpaceGroupJSON(this, "AFLOW", id, index); +}id = JV.JC.resolveDataBase(database, id, null); +if (id != null && id.startsWith("'")) id = this.evaluateExpression(id).toString(); +return (id == null || id.length == 0 ? name : id); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return name; +} else { +throw e; +} +} +}if (!isSurface && id.endsWith(".bcif")) { +id = id.substring(0, id.indexOf(".bcif")); +return JV.JC.resolveDataBase("bcif", id.toLowerCase(), null); +}if (id.endsWith(".mmtf")) { +id = id.substring(0, id.indexOf(".mmtf")); +return JV.JC.resolveDataBase("mmtf", id.toUpperCase(), null); +}format = this.g.loadFormat; +}case 35: +if (format == null) format = this.g.pdbLoadLigandFormat; +return JV.JC.resolveDataBase(null, id, format); +case 42: +if (id.equals("?") && (id = this.getDBID("PDB ID from EBI")) == null) return null; +var pt = name.lastIndexOf("/"); +if (name.startsWith("*dom/")) { +id = name.substring(pt + 1); +format = (pt > 4 ? name.substring(5) : "mappings"); +return JU.PT.rep(JV.JC.resolveDataBase("map", id, null), "%TYPE", format); +} else if (name.startsWith("*val/")) { +id = name.substring(pt + 1); +format = (pt > 4 ? name.substring(5) : "validation/outliers/all"); +return JU.PT.rep(JV.JC.resolveDataBase("map", id, null), "%TYPE", format); +} else if (name.startsWith("*rna3d/")) { +id = name.substring(pt + 1); +format = (pt > 6 ? name.substring(6) : "loops"); +return JU.PT.rep(JV.JC.resolveDataBase("rna3d", id, null), "%TYPE", format); +} else if (name.startsWith("*dssr--")) { +id = name.substring(pt + 1); +id = JV.JC.resolveDataBase("dssr", id, null); +return id + "%20" + JU.PT.rep(name.substring(5, pt), " ", "%20"); +} else if (name.startsWith("*dssr/")) { +id = name.substring(pt + 1); +return JV.JC.resolveDataBase("dssr", id, null); +} else if (name.startsWith("*dssr1/")) { +id = name.substring(pt + 1); +return JV.JC.resolveDataBase("dssr1", id, null); +}var pdbe = "pdbe"; +if (id.length == 5 && id.charAt(4) == '*') { +pdbe = "pdbe2"; +id = id.substring(0, 4); +}return JV.JC.resolveDataBase(pdbe, id, null); +case 58: +format = this.g.pubChemFormat; +if (id.equals("?") && (id = this.getDBID("structure from PubChem")) == null) return null; +if (id === "") { +try { +id = "smiles:" + this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}var fl = id.toLowerCase(); +var fi = -2147483648; +try { +fi = Integer.parseInt(id); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (fi != -2147483648) { +id = "cid/" + fi; +} else { +if (fl.startsWith("smiles:")) { +format += "?POST?smiles=" + id.substring(7); +id = "smiles"; +} else if (id.startsWith("cid:") || id.startsWith("inchikey:") || id.startsWith("cas:")) { +id = id.$replace(':', '/'); +} else { +if (fl.startsWith("name:")) id = id.substring(5); +id = "name/" + JU.PT.escapeUrl(id); +}}return JU.PT.formatStringS(format, "FILE", id); +case 36: +this.checkCIR(false); +if (id.equals("?") && (id = this.getDBID("structure from NCI/CADD")) == null) return null; +if (name.equals("$")) { +try { +id = this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} else if (name.startsWith("$$")) { +id = id.substring(1); +if (id.length == 0) { +try { +id = this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}format = JU.PT.rep(this.g.smilesUrlFormat, "get3d", "get2d"); +return JU.PT.formatStringS(format, "FILE", JU.PT.escapeUrl(id)); +}case 77: +case 78: +case 50: +case 73: +case 75: +case 83: +case 84: +case 47: +id = JU.PT.escapeUrl(id); +switch ((type).charCodeAt(0)) { +case 77: +case 78: +format = this.g.nihResolverFormat + "/%FILE/names"; +break; +case 50: +format = this.g.nihResolverFormat + "/%FILE/image"; +break; +case 73: +case 84: +format = this.g.nihResolverFormat + "/%FILE/stdinchi"; +break; +case 75: +format = this.g.nihResolverFormat + "/%FILE/inchikey"; +break; +case 83: +format = this.g.nihResolverFormat + "/%FILE/stdinchikey"; +break; +case 47: +format = this.g.nihResolverFormat + "/%FILE/"; +break; +default: +format = this.g.smilesUrlFormat; +break; +} +return (withPrefix ? "MOL3D::" : "") + JU.PT.formatStringS(format, "FILE", id); +case 63: +case 45: +case 95: +var isDiff = id.startsWith("*") || id.startsWith("="); +if (isDiff) id = id.substring(1); +var ciftype = null; +pt = id.indexOf("."); +if (pt >= 0) { +ciftype = id.substring(pt + 1); +id = id.substring(0, pt); +}var checkXray = id.startsWith("density"); +if (checkXray) id = "em" + id.substring(7); +if (id.equals("emdb") || id.equals("em")) id += "/"; +if (id.startsWith("em/")) id = "emdb" + id.substring(2); +if (id.startsWith("emdb/")) { +id = id.substring(5); +if (id.length == 0) id = "="; + else if (id.startsWith("*")) id = "=" + id.substring(1); +var emdext = "#-sigma=10"; +if (id.startsWith("=")) { +id = (id.equals("=") ? this.getPdbID() : id.substring(1)); +if (id == null || type == '?') return id; +var q = JV.JC.resolveDataBase("emdbquery", id, null); +var data = this.fm.cacheGet(q, false); +if (data == null) { +this.showString("retrieving " + q, false); +data = this.getFileAsString(q); +if (data == null) { +this.showString("EM retrieve failed for " + id, false); +if (!checkXray) return null; +data = "FAILED"; +} else { +this.showString(data, false); +}this.fm.cachePut(q, data); +}pt = data.indexOf("EMD-"); +if (pt >= 0) { +id = data.substring(pt + 4); +pt = id.indexOf('\n'); +if (pt > 0) id = id.substring(0, pt); +pt = id.indexOf(","); +if (pt > 0) { +emdext = "#-cutoff=" + id.substring(pt + 1); +id = id.substring(0, pt); +}} else { +if (!checkXray) return null; +emdext = null; +}}if (emdext != null) return JV.JC.resolveDataBase("emdbmap" + (type == '-' ? "server" : ""), id, null) + emdext; +}id = JV.JC.resolveDataBase((isDiff ? "pdbemapdiff" : "pdbemap") + (type == '-' ? "server" : ""), id, null); +if ("cif".equals(ciftype)) { +id = id.$replace("bcif", "cif"); +}break; +} +return id; +}, "~B,~S,~S,~B"); +Clazz.defineMethod(c$, "getDBID", +function(type){ +return this.prompt("load a " + type, "", null, false); +}, "~S"); +Clazz.defineMethod(c$, "checkCIR", +function(forceCheck){ +if (this.cirChecked && !forceCheck || this.g.resolverResolver == null) return; +try { +this.g.removeParam("_cirStatus"); +var m = this.getModelSetAuxiliaryInfo(); +m.remove("cirInfo"); +var s = this.getFileAsString(this.g.resolverResolver); +System.out.println(s); +var map = this.parseJSONMap(s); +m.put("cirInfo", map); +this.ms.msInfo = m; +s = map.get("status"); +this.g.setO("_cirStatus", s); +this.g.setCIR(map.get("rfc6570Template"), !this.isSilent); +if (!this.isSilent) JU.Logger.info("Viewer.checkCIR _.cirInfo.status = " + s); +} catch (t) { +System.out.println("Viewer.checkCIR failed at " + this.g.resolverResolver + ": " + t); +} +this.cirChecked = true; +}, "~B"); +Clazz.defineMethod(c$, "getStandardLabelFormat", +function(type){ +switch (type) { +default: +case 0: +return "%[identify]"; +case 1: +return this.g.defaultLabelXYZ; +case 2: +return this.g.defaultLabelPDB; +} +}, "~N"); +Clazz.defineMethod(c$, "getAdditionalHydrogens", +function(bsAtoms, vConnections, flags){ +if (bsAtoms == null) bsAtoms = this.bsA(); +var nTotal = Clazz.newIntArray (1, 0); +var pts = this.ms.calculateHydrogens(bsAtoms, nTotal, vConnections, flags); +var points = new Array(nTotal[0]); +for (var i = 0, pt = 0; i < pts.length; i++) if (pts[i] != null) for (var j = 0; j < pts[i].length; j++) points[pt++] = pts[i][j]; + + +return points; +}, "JU.BS,JU.Lst,~N"); +Clazz.overrideMethod(c$, "setMarBond", +function(marBond){ +this.g.bondRadiusMilliAngstroms = marBond; +this.g.setI("bondRadiusMilliAngstroms", marBond); +this.setShapeSize(1, marBond * 2, JU.BSUtil.setAll(this.ms.ac)); +}, "~N"); +Clazz.defineMethod(c$, "setHoverLabel", +function(strLabel){ +this.shm.loadShape(35); +this.setShapeProperty(35, "label", strLabel); +this.setHoverEnabled(strLabel != null); +this.g.setO("_hoverLabel", this.hoverLabel = strLabel); +if (!this.hoverEnabled && !this.sm.haveHoverCallback()) this.startHoverWatcher(false); +}, "~S"); +Clazz.defineMethod(c$, "setHoverEnabled", +function(tf){ +this.hoverEnabled = tf; +this.g.setB("_hoverEnabled", tf); +}, "~B"); +Clazz.defineMethod(c$, "hoverOn", +function(atomIndex, isLabel){ +this.g.removeParam("_objecthovered"); +this.g.setI("_atomhovered", atomIndex); +this.g.setO("_hoverLabel", this.hoverLabel); +this.g.setUserVariable("hovered", JS.SV.getVariable(JU.BSUtil.newAndSetBit(atomIndex))); +if (this.sm.haveHoverCallback()) this.sm.setStatusAtomHovered(atomIndex, this.getAtomInfoXYZ(atomIndex, 2)); +if (!this.hoverEnabled || this.eval != null && this.isScriptExecuting() || atomIndex == this.hoverAtomIndex || this.g.hoverDelayMs == 0 || !this.slm.isInSelectionSubset(atomIndex)) return; +var label = (isLabel ? J.i18n.GT.$("Drag to move label") : this.isModelKitOpen() || this.isModelkitPickingActive() ? this.getModelkit(false).setProperty("hoverlabel", Integer.$valueOf(atomIndex)) : null); +this.shm.loadShape(35); +if (label != null && (!isLabel || this.ms.at[atomIndex].isVisible(512))) { +this.setShapeProperty(35, "specialLabel", label); +}this.setShapeProperty(35, "text", this.hoverText = null); +this.setShapeProperty(35, "target", Integer.$valueOf(this.hoverAtomIndex = atomIndex)); +this.refresh(3, "hover on atom"); +}, "~N,~B"); +Clazz.defineMethod(c$, "isModelkitPickingActive", +function(){ +if (this.acm.getAtomPickingMode() == 32) return true; +switch (this.acm.getBondPickingMode()) { +case 34: +case 33: +case 8: +case 35: +return this.g.bondPicking; +} +return false; +}); +Clazz.defineMethod(c$, "isModelkitPickingRotateBond", +function(){ +return (this.acm.getBondPickingMode() == 34); +}); +Clazz.defineMethod(c$, "hoverOnPt", +function(x, y, text, id, pt){ +if (this.eval != null && this.isScriptExecuting()) return; +this.g.setO("_hoverLabel", text); +if (id != null && pt != null) { +this.g.setO("_objecthovered", id); +this.g.setI("_atomhovered", -1); +this.g.setUserVariable("hovered", JS.SV.getVariable(pt)); +if (this.sm.haveHoverCallback()) this.sm.setStatusObjectHovered(id, text, pt); +}if (!this.hoverEnabled) return; +this.shm.loadShape(35); +if (this.gdata.antialiasEnabled) { +x <<= 1; +y <<= 1; +}this.setShapeProperty(35, "xy", JU.P3i.new3(x, y, 0)); +this.setShapeProperty(35, "target", null); +this.setShapeProperty(35, "specialLabel", null); +this.setShapeProperty(35, "text", text); +this.hoverAtomIndex = -1; +this.hoverText = text; +this.refresh(3, "hover on point"); +}, "~N,~N,~S,~S,JU.T3"); +Clazz.defineMethod(c$, "hoverOff", +function(){ +try { +if ((this.isModelKitOpen() || this.modelkit != null && this.modelkit.wasRotating()) && !this.isModelkitPickingRotateBond()) this.highlight(null); +if (!this.hoverEnabled) return; +var isHover = (this.hoverText != null || this.hoverAtomIndex >= 0); +if (this.hoverAtomIndex >= 0) { +this.setShapeProperty(35, "target", null); +this.hoverAtomIndex = -1; +}if (this.hoverText != null) { +this.setShapeProperty(35, "text", null); +this.hoverText = null; +}this.setShapeProperty(35, "specialLabel", null); +if (isHover) this.refresh(3, "hover off"); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "setDebugScript", +function(debugScript){ +this.g.debugScript = debugScript; +this.g.setB("debugScript", debugScript); +if (this.eval != null) this.eval.setDebugging(); +}, "~B"); +Clazz.defineMethod(c$, "clearClickCount", +function(){ +this.setTainted(true); +}); +Clazz.defineMethod(c$, "setCursor", +function(cursor){ +if (this.$isKiosk || this.currentCursor == cursor || this.multiTouch || !this.haveDisplay) return; +this.apiPlatform.setCursor(this.currentCursor = cursor, this.display); +}, "~N"); +Clazz.defineMethod(c$, "setPickingMode", +function(strMode, pickingMode){ +if (!this.haveDisplay) return; +var mode = this.acm.getAtomPickingMode(); +this.showSelected = false; +var option = null; +if (strMode != null) { +var pt = strMode.indexOf("_"); +if (pt >= 0) { +option = strMode.substring(pt + 1); +strMode = strMode.substring(0, pt); +}pickingMode = JV.ActionManager.getPickingMode(strMode); +}if (pickingMode < 0) pickingMode = 1; +this.acm.setPickingMode(pickingMode); +var name = JV.ActionManager.getPickingModeName(this.acm.getAtomPickingMode()); +this.g.setO("picking", name); +if (this.modelkit != null) { +this.modelkit.setProperty("atompickingmode", name); +this.acm.setPickingMode(pickingMode); +switch (pickingMode) { +case 1: +if (pickingMode != mode) this.setModelKitMode(false); +break; +case 8: +case 35: +this.modelkit.setProperty("bondpickingmode", strMode.toLowerCase()); +break; +} +}if (option == null || option.length == 0) return; +option = Character.toUpperCase(option.charAt(0)) + (option.length == 1 ? "" : option.substring(1, 2)); +switch (pickingMode) { +case 32: +this.getModelkit(false).setProperty("atomtype", option); +break; +case 33: +this.setBooleanPropertyTok("bondPicking", 603979814, true); +this.getModelkit(false).setProperty("bondtype", option); +break; +default: +JU.Logger.error("Bad picking mode: " + strMode + "_" + option); +} +}, "~S,~N"); +Clazz.defineMethod(c$, "getPickingMode", +function(){ +return (this.haveDisplay ? this.acm.getAtomPickingMode() : 0); +}); +Clazz.defineMethod(c$, "setPickingStyle", +function(style, pickingStyle){ +if (!this.haveDisplay) return; +if (style != null) pickingStyle = JV.ActionManager.getPickingStyleIndex(style); +if (pickingStyle < 0) pickingStyle = 0; +this.acm.setPickingStyle(pickingStyle); +this.g.setO("pickingStyle", JV.ActionManager.getPickingStyleName(this.acm.getPickingStyle())); +}, "~S,~N"); +Clazz.defineMethod(c$, "getDrawHover", +function(){ +return this.haveDisplay && this.g.drawHover; +}); +Clazz.defineMethod(c$, "getAtomInfo", +function(atomOrPointIndex){ +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +return (atomOrPointIndex >= 0 ? this.ms.getAtomInfo(atomOrPointIndex, null, this.ptTemp) : this.shm.getShapePropertyIndex(6, "pointInfo", -atomOrPointIndex)); +}, "~N"); +Clazz.defineMethod(c$, "getAtomInfoXYZ", +function(atomIndex, mode){ +var atom = this.ms.at[atomIndex]; +if (mode == 4) return this.getChimeMessenger().getInfoXYZ(atom); +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +return atom.getIdentityXYZ(this.ptTemp, mode); +}, "~N,~N"); +Clazz.defineMethod(c$, "setSync", +function(){ +if (this.sm.doSync()) this.sm.setSync(null); +}); +Clazz.overrideMethod(c$, "setJmolCallbackListener", +function(listener){ +this.sm.cbl = listener; +}, "J.api.JmolCallbackListener"); +Clazz.overrideMethod(c$, "setJmolStatusListener", +function(listener){ +this.sm.cbl = this.sm.jsl = listener; +}, "J.api.JmolStatusListener"); +Clazz.defineMethod(c$, "getStatusChanged", +function(statusNameList){ +return (statusNameList == null ? null : this.sm.getStatusChanged(statusNameList)); +}, "~S"); +Clazz.defineMethod(c$, "menuEnabled", +function(){ +return (!this.g.disablePopupMenu && this.getPopupMenu() != null); +}); +Clazz.defineMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +if (mode == 0) { +this.g.setO("_fileDropped", fileName); +this.g.setUserVariable("doDrop", JS.SV.vT); +this.g.setUserVariable("dropFileType", JS.SV.newS("")); +this.g.setUserVariable("dropFileName", JS.SV.newS(fileName)); +}var handled = this.sm.setStatusDragDropped(mode, x, y, fileName, retType); +var type = this.getP("dropFileType").toString(); +if (type.length > 0 && retType != null) { +retType[0] = type; +}return (!handled || this.getP("doDrop").toString().equals("true")); +}, "~N,~N,~N,~S,~A"); +Clazz.defineMethod(c$, "setStatusResized", +function(width, height){ +this.sm.setStatusResized(width, height); +}, "~N,~N"); +Clazz.defineMethod(c$, "scriptStatus", +function(strStatus){ +this.setScriptStatus(strStatus, "", 0, null); +}, "~S"); +Clazz.defineMethod(c$, "scriptStatusMsg", +function(strStatus, statusMessage){ +this.setScriptStatus(strStatus, statusMessage, 0, null); +}, "~S,~S"); +Clazz.defineMethod(c$, "setScriptStatus", +function(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated){ +this.sm.setScriptStatus(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated); +}, "~S,~S,~N,~S"); +Clazz.overrideMethod(c$, "showUrl", +function(urlString){ +if (urlString == null) return; +if (urlString.indexOf(":") < 0) { +var base = this.fm.getAppletDocumentBase(); +if (base === "") base = this.fm.getFullPathName(false); +if (base.indexOf("/") >= 0) { +base = base.substring(0, base.lastIndexOf("/") + 1); +} else if (base.indexOf("\\") >= 0) { +base = base.substring(0, base.lastIndexOf("\\") + 1); +}urlString = base + urlString; +}JU.Logger.info("showUrl:" + urlString); +this.sm.showUrl(urlString); +}, "~S"); +Clazz.defineMethod(c$, "setMeshCreator", +function(meshCreator){ +this.shm.loadShape(24); +this.setShapeProperty(24, "meshCreator", meshCreator); +}, "~O"); +Clazz.defineMethod(c$, "showConsole", +function(showConsole){ +if (!this.haveDisplay) return; +try { +if (this.appConsole == null && showConsole) this.getConsole(); +this.appConsole.setVisible(true); +} catch (e) { +} +}, "~B"); +Clazz.defineMethod(c$, "getConsole", +function(){ +this.getProperty("DATA_API", "getAppConsole", Boolean.TRUE); +return this.appConsole; +}); +Clazz.overrideMethod(c$, "getParameter", +function(key){ +return this.getP(key); +}, "~S"); +Clazz.defineMethod(c$, "getP", +function(key){ +return this.g.getParameter(key, true); +}, "~S"); +Clazz.defineMethod(c$, "getPOrNull", +function(key){ +return this.g.getParameter(key, false); +}, "~S"); +Clazz.defineMethod(c$, "unsetProperty", +function(key){ +key = key.toLowerCase(); +if (key.equals("all") || key.equals("variables")) this.fm.setPathForAllFiles(""); +this.g.unsetUserVariable(key); +}, "~S"); +Clazz.overrideMethod(c$, "notifyStatusReady", +function(isReady){ +System.out.println("Jmol applet " + this.fullName + (isReady ? " ready" : " destroyed")); +if (!isReady) this.dispose(); +this.sm.setStatusAppletReady(this.fullName, isReady); +}, "~B"); +Clazz.overrideMethod(c$, "getBooleanProperty", +function(key){ +key = key.toLowerCase(); +if (this.g.htBooleanParameterFlags.containsKey(key)) return this.g.htBooleanParameterFlags.get(key).booleanValue(); +if (key.endsWith("p!")) { +if (this.acm == null) return false; +var s = this.acm.getPickingState().toLowerCase(); +key = key.substring(0, key.length - 2) + ";"; +return (s.indexOf(key) >= 0); +}if (key.equalsIgnoreCase("executionPaused")) return (this.eval != null && this.eval.isPaused()); +if (key.equalsIgnoreCase("executionStepping")) return (this.eval != null && this.eval.isStepping()); +if (key.equalsIgnoreCase("haveBFactors")) return (this.ms.getBFactors() != null); +if (key.equalsIgnoreCase("colorRasmol")) return this.cm.isDefaultColorRasmol; +if (key.equalsIgnoreCase("frank")) return this.getShowFrank(); +if (key.equalsIgnoreCase("spinOn")) return this.tm.spinOn; +if (key.equalsIgnoreCase("isNavigating")) return this.tm.isNavigating(); +if (key.equalsIgnoreCase("showSelections")) return this.selectionHalosEnabled; +if (this.g.htUserVariables.containsKey(key)) { +var t = this.g.getUserVariable(key); +if (t.tok == 1073742335) return true; +if (t.tok == 1073742334) return false; +}JU.Logger.error("vwr.getBooleanProperty(" + key + ") - unrecognized"); +return false; +}, "~S"); +Clazz.overrideMethod(c$, "getInt", +function(tok){ +switch (tok) { +case 553648132: +return this.am.animationFps; +case 553648139: +return this.g.dotDensity; +case 553648140: +return this.g.dotScale; +case 553648142: +return this.g.helixStep; +case 553648145: +return this.g.infoFontSize; +case 553648147: +return this.g.labelPointerWidth; +case 553648149: +return this.g.meshScale; +case 553648150: +return this.g.minimizationReportSteps; +case 553648153: +return this.g.minPixelSelRadius; +case 553648154: +return this.g.percentVdwAtom; +case 553648157: +return this.g.pickingSpinRate; +case 553648166: +return this.g.ribbonAspectRatio; +case 536870922: +return this.g.scriptDelay; +case 553648152: +return this.g.minimizationMaxAtoms; +case 553648170: +return this.g.smallMoleculeMaxAtoms; +case 553648183: +return this.g.strutSpacing; +case 553648184: +return this.stm.getUndoMax(); +case 553648185: +return this.g.vectorTrail; +} +JU.Logger.error("viewer.getInt(" + JS.T.nameOf(tok) + ") - not listed"); +return 0; +}, "~N"); +Clazz.defineMethod(c$, "getDelayMaximumMs", +function(){ +return (this.haveDisplay ? this.g.delayMaximumMs : 1); +}); +Clazz.defineMethod(c$, "getHermiteLevel", +function(){ +return (this.tm.spinOn && this.g.hermiteLevel > 0 ? 0 : this.g.hermiteLevel); +}); +Clazz.defineMethod(c$, "getHoverDelay", +function(){ +return (this.isModelKitOpen() || this.isModelkitPickingActive() || this.getDrawHover() ? 20 : this.g.hoverDelayMs); +}); +Clazz.overrideMethod(c$, "getBoolean", +function(tok){ +switch (tok) { +case 603979970: +return this.g.useMinimizationThread; +case 603979891: +return this.g.nboCharges; +case 603979856: +return this.g.hiddenLinesDashed; +case 1073742086: +return this.ms.getMSInfoB(JV.JC.getBoolName(4)); +case 603979802: +return this.g.autoplayMovie; +case 603979797: +return !this.headless && this.g.allowAudio; +case 603979780: +return this.g.allowGestures; +case 603979784: +return this.g.allowMultiTouch; +case 603979785: +return this.g.allowRotateSelected; +case 603979792: +return this.g.appendNew; +case 603979794: +return this.g.applySymmetryToBonds; +case 603979796: +return this.g.atomPicking; +case 603979798: +return this.g.autoBond; +case 603979800: +return this.g.autoFps; +case 603979806: +return this.g.axesOrientationRasmol; +case 603979811: +return this.g.cartoonSteps; +case 603979810: +return this.g.cartoonBlocks; +case 603979821: +return this.g.checkCIR; +case 603979812: +return this.g.bondModeOr; +case 603979815: +return this.g.cartoonBaseEdges; +case 603979816: +return this.g.cartoonFancy; +case 603979817: +return this.g.cartoonLadders; +case 603979818: +return this.g.cartoonRibose; +case 603979819: +return this.g.cartoonRockets; +case 603979822: +return this.g.chainCaseSensitive || this.chainCaseSpecified; +case 603979823: +return this.g.cipRule6Full; +case 603979825: +return this.g.debugScript; +case 603979826: +return this.g.defaultStructureDSSP; +case 603979827: +return this.g.disablePopupMenu; +case 603979828: +return this.g.displayCellParameters; +case 603979830: +return this.g.dotSurface; +case 603979829: +return this.g.dotsSelectedOnly; +case 603979831: +return this.g.doublePrecision; +case 603979834: +return this.g.drawPicking; +case 603979838: +return this.g.elementKey; +case 603979846: +return this.g.fontCaching; +case 603979847: +return this.g.fontScaling; +case 603979848: +return this.g.forceAutoBond; +case 603979849: +return false; +case 603979850: +return this.g.greyscaleRendering; +case 603979852: +return this.g.hbondsBackbone; +case 603979853: +return this.g.hbondsRasmol; +case 603979854: +return this.g.hbondsSolid; +case 1612709894: +return this.g.rasmolHeteroSetting; +case 603979858: +return this.g.hideNameInPopup; +case 603979864: +return this.g.highResolutionFlag; +case 1612709900: +return this.g.rasmolHydrogenSetting; +case 603979867: +return this.g.isosurfaceKey; +case 603979869: +return this.g.jmolInJSpecView; +case 603979870: +return this.g.justifyMeasurements; +case 603979872: +return this.g.legacyAutoBonding; +case 603979873: +return this.g.legacyHAddition; +case 603979874: +return this.g.legacyJavaFloat; +case 603979876: +return this.g.logGestures; +case 603979877: +return this.g.measureAllModels; +case 603979878: +return this.g.measurementLabels; +case 603979879: +return this.g.messageStyleChime; +case 603983903: +return this.g.modelKitMode; +case 603979886: +return this.g.multipleBondBananas; +case 603979889: +return this.g.navigationMode; +case 603979890: +return this.g.navigationPeriodic; +case 603979893: +return this.g.partialDots; +case 603979894: +return this.g.pdbAddHydrogens; +case 603979896: +return this.g.pdbSequential; +case 603979898: +return this.g.preserveState; +case 603979900: +return this.refreshing; +case 603979901: +return this.g.ribbonBorder; +case 603979902: +return this.g.rocketBarrels; +case 603979892: +return this.g.noDelay; +case 603979906: +return this.g.selectAllModels; +case 603979920: +return this.g.showHiddenSelectionHalos; +case 603979922: +return this.g.showHydrogens; +case 603979926: +return this.g.showMeasurements; +case 603979927: +return this.g.showModVecs; +case 603979928: +return this.g.showMultipleBonds; +case 603979934: +return this.g.showTiming; +case 603979937: +return this.g.showUnitCellDetails; +case 603979939: +return this.g.slabByAtom; +case 603979940: +return this.g.slabByMolecule; +case 603979944: +return this.g.smartAromatic; +case 603979948: +return this.g.dotSolvent; +case 603979952: +return this.g.ssbondsBackbone; +case 603979955: +return this.g.strutsMultiple; +case 603979956: +return this.g.symmetryHermannMauguin; +case 603979960: +return this.g.testFlag1; +case 603979962: +return this.g.testFlag2; +case 603979964: +return this.g.testFlag3; +case 603979965: +return this.g.testFlag4; +case 603979966: +return this.g.traceAlpha; +case 603979967: +return this.g.translucent; +case 603979968: +return this.g.twistedSheets; +case 603979972: +return this.g.vectorsCentered; +case 603979973: +return this.g.vectorSymmetry; +case 603979975: +return this.g.waitForMoveTo; +case 603979978: +return this.g.zeroBasedXyzRasmol; +} +JU.Logger.error("viewer.getBoolean(" + JS.T.nameOf(tok) + ") - not listed"); +return false; +}, "~N"); +Clazz.defineMethod(c$, "allowEmbeddedScripts", +function(){ +return (this.g.allowEmbeddedScripts && !this.isPreviewOnly); +}); +Clazz.defineMethod(c$, "getDragSelected", +function(){ +return (this.g.dragSelected && !this.g.modelKitMode); +}); +Clazz.defineMethod(c$, "getBondsPickable", +function(){ +return (this.g.bondPicking || this.isModelkitPickingActive() || this.isModelKitOpen() && this.getModelkitPropertySafely("ismolecular") === Boolean.TRUE); +}); +Clazz.defineMethod(c$, "isModelKitOpen", +function(){ +return this.g.modelKitMode && this.modelkit != null && !this.modelkit.isHidden(); +}); +Clazz.defineMethod(c$, "useMinimizationThread", +function(){ +return (this.g.useMinimizationThread && !this.autoExit); +}); +Clazz.overrideMethod(c$, "getFloat", +function(tok){ +switch (tok) { +case 1153433601: +return this.g.particleRadius; +case 570425345: +return this.g.axesOffset; +case 570425346: +return this.g.axesScale; +case 570425348: +return this.g.bondTolerance; +case 570425353: +return this.g.defaultTranslucent; +case 570425352: +return this.g.defaultDrawArrowScale; +case 570425354: +return this.g.dipoleScale; +case 570425355: +return this.g.drawFontSize; +case 570425357: +return this.g.exportScale; +case 570425359: +return this.g.hbondsAngleMinimum; +case 570425361: +return this.g.hbondHXDistanceMaximum; +case 570425360: +return this.g.hbondNODistanceMaximum; +case 570425363: +return this.g.loadAtomDataTolerance; +case 570425364: +return this.g.minBondDistance; +case 1275072532: +return this.g.modulationScale; +case 570425370: +return this.g.multipleBondSpacing; +case 570425369: +return this.g.multipleBondRadiusFactor; +case 570425374: +return this.g.navigationSpeed; +case 570425382: +return this.g.pointGroupDistanceTolerance; +case 570425384: +return this.g.pointGroupLinearTolerance; +case 570425388: +return this.tm.modelRadius; +case 570425392: +return this.g.sheetSmoothing; +case 570425394: +return this.g.solventProbeRadius; +case 570425403: +return this.g.starWidth; +case 570425406: +return this.g.strutDefaultRadius; +case 570425408: +return this.g.strutLengthMaximum; +case 1648361473: +return this.g.vectorScale; +case 570425412: +return this.g.vibrationPeriod; +case 570425347: +return this.g.cartoonBlockHeight; +} +JU.Logger.error("viewer.getFloat(" + JS.T.nameOf(tok) + ") - not listed"); +return 0; +}, "~N"); +Clazz.overrideMethod(c$, "setStringProperty", +function(key, value){ +if (value == null || key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setO(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 603979776: +this.setBooleanPropertyTok(key, tok, JS.SV.newV(4, value).asBoolean()); +break; +case 553648128: +this.setIntPropertyTok(key, tok, JS.SV.newV(4, value).asInt()); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, JU.PT.parseFloat(value)); +break; +default: +this.setStringPropertyTok(key, tok, value); +} +}, "~S,~S"); +Clazz.defineMethod(c$, "setStringPropertyTok", +function(key, tok, value){ +switch (tok) { +case 545259567: +this.g.macroDirectory = value = (value == null || value.length == 0 ? "https://chemapps.stolaf.edu/jmol/macros" : value); +this.macros = null; +break; +case 545259570: +this.g.nihResolverFormat = value; +break; +case 545259521: +this.setAnimationMode(value); +return; +case 545259569: +this.g.nmrPredictFormat = value; +break; +case 545259548: +this.g.defaultDropScript = value; +break; +case 545259572: +value = this.fm.setPathForAllFiles(value); +break; +case 545259558: +this.setUnits(value, false); +return; +case 545259560: +if (!this.g.forceField.equals(value)) { +this.g.forceField = value = ("UFF".equalsIgnoreCase(value) ? "UFF" : "UFF2D".equalsIgnoreCase(value) ? "UFF2D" : "MMFF2D".equalsIgnoreCase(value) ? "MMFF2D" : "MMFF"); +this.minimizer = null; +}break; +case 545259571: +this.g.nmrUrlFormat = value; +break; +case 545259568: +this.setUnits(value, true); +return; +case 545259565: +this.g.pdbLoadLigandFormat = value; +break; +case 545259543: +this.g.defaultLabelPDB = value; +break; +case 545259544: +this.g.defaultLabelXYZ = value; +break; +case 545259549: +this.g.defaultLoadFilter = value; +break; +case 545259566: +value = this.getOutputManager().setLogFile(value); +if (value == null) return; +break; +case 545259559: +break; +case 545259524: +this.g.atomTypes = value; +break; +case 545259538: +break; +case 545259576: +this.g.pickLabel = value; +break; +case 545259580: +if (value.length == 2 && value.startsWith("R")) this.g.quaternionFrame = value.substring(0, 2); + else this.g.quaternionFrame = "" + (value.toLowerCase() + "p").charAt(0); +if (!JU.PT.isOneOf(this.g.quaternionFrame, "RC;RP;a;b;c;n;p;q;x;")) this.g.quaternionFrame = "p"; +this.ms.haveStraightness = false; +break; +case 545259555: +this.setVdwStr(value); +return; +case 545259563: + new J.i18n.GT(this, value); +var language = J.i18n.GT.getLanguage(); +this.modelkit = null; +if (this.jmolpopup != null) { +this.jmolpopup.jpiDispose(); +this.jmolpopup = null; +this.getPopupMenu(); +}this.sm.setCallbackFunction("language", language); +value = J.i18n.GT.getLanguage(); +break; +case 545259564: +this.g.loadFormat = value; +break; +case 545259534: +this.setObjectColor("background", value); +return; +case 545259528: +this.setObjectColor("axis1", value); +return; +case 545259530: +this.setObjectColor("axis2", value); +return; +case 545259532: +this.setObjectColor("axis3", value); +return; +case 545259536: +this.setObjectColor("boundbox", value); +return; +case 545259586: +this.setObjectColor("unitcell", value); +return; +case 545259578: +this.setPropertyColorScheme(value, false, false); +break; +case 545259562: +this.shm.loadShape(35); +this.setShapeProperty(35, "atomLabel", value); +break; +case 545259547: +this.g.defaultDistanceLabel = value; +break; +case 545259542: +this.g.defaultAngleLabel = value; +break; +case 545259554: +this.g.defaultTorsionLabel = value; +break; +case 545259550: +this.g.defaultLoadScript = value; +break; +case 545259522: +this.fm.setAppletProxy(value); +break; +case 545259546: +if (value == null) value = ""; +value = value.$replace('\\', '/'); +this.g.defaultDirectory = value; +break; +case 545259561: +this.g.helpPath = value; +break; +case 545259552: +if (!value.equalsIgnoreCase("RasMol") && !value.equalsIgnoreCase("PyMOL")) value = "Jmol"; +this.setDefaultsType(value); +break; +case 545259545: +this.setDefaultColors(value.equalsIgnoreCase("rasmol")); +return; +case 545259573: +this.setPickingMode(value, 0); +return; +case 545259574: +this.setPickingStyle(value, 0); +return; +case 545259540: +break; +default: +if (key.toLowerCase().endsWith("callback")) { +this.sm.setCallbackFunction(key, (value.length == 0 || value.equalsIgnoreCase("none") ? null : value)); +break; +}if (!this.g.htNonbooleanParameterValues.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.newV(4, value)); +return; +}break; +} +this.g.setO(key, value); +}, "~S,~N,~S"); +Clazz.overrideMethod(c$, "setFloatProperty", +function(key, value){ +if (key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setF(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, "" + value); +break; +case 603979776: +this.setBooleanPropertyTok(key, tok, value != 0); +break; +case 553648128: +this.setIntPropertyTok(key, tok, Clazz.floatToInt(value)); +break; +case 570425344: +if (Float.isNaN(value)) return; +default: +this.setFloatPropertyTok(key, tok, value); +} +}, "~S,~N"); +Clazz.defineMethod(c$, "setFloatPropertyTok", +function(key, tok, value){ +switch (tok) { +case 570425347: +this.g.cartoonBlockHeight = value; +break; +case 570425366: +this.ms.setModulation(null, false, null, false); +this.g.modulationScale = value = Math.max(0.1, value); +this.ms.setModulation(null, true, null, false); +break; +case 570425381: +this.g.particleRadius = Math.abs(value); +break; +case 570425355: +this.g.drawFontSize = value; +this.shm.setShapePropertyBs(22, "font", null, null); +break; +case 570425357: +this.g.exportScale = value; +break; +case 570425403: +this.g.starWidth = value; +break; +case 570425369: +this.g.multipleBondRadiusFactor = value; +break; +case 570425370: +this.g.multipleBondSpacing = value; +break; +case 570425393: +this.tm.setSlabRange(value); +break; +case 570425365: +this.g.minimizationCriterion = value; +break; +case 570425358: +if (this.haveDisplay) this.acm.setGestureSwipeFactor(value); +break; +case 570425367: +if (this.haveDisplay) this.acm.setMouseDragFactor(value); +break; +case 570425368: +if (this.haveDisplay) this.acm.setMouseWheelFactor(value); +break; +case 570425408: +this.g.strutLengthMaximum = value; +break; +case 570425406: +this.g.strutDefaultRadius = value; +break; +case 570425376: +this.setSpin("X", Clazz.floatToInt(value)); +break; +case 570425378: +this.setSpin("Y", Clazz.floatToInt(value)); +break; +case 570425380: +this.setSpin("Z", Clazz.floatToInt(value)); +break; +case 570425371: +if (Float.isNaN(value)) return; +this.setSpin("FPS", Clazz.floatToInt(value)); +break; +case 570425363: +this.g.loadAtomDataTolerance = value; +break; +case 570425359: +this.g.hbondsAngleMinimum = value; +break; +case 570425361: +this.g.hbondHXDistanceMaximum = value; +break; +case 570425360: +this.g.hbondNODistanceMaximum = value; +break; +case 570425382: +this.g.pointGroupDistanceTolerance = value; +break; +case 570425384: +this.g.pointGroupLinearTolerance = value; +break; +case 570425356: +this.g.ellipsoidAxisDiameter = value; +break; +case 570425398: +this.setSpin("x", Clazz.floatToInt(value)); +break; +case 570425400: +this.setSpin("y", Clazz.floatToInt(value)); +break; +case 570425402: +this.setSpin("z", Clazz.floatToInt(value)); +break; +case 570425396: +this.setSpin("fps", Clazz.floatToInt(value)); +break; +case 570425352: +this.g.defaultDrawArrowScale = value; +break; +case 570425353: +this.g.defaultTranslucent = value; +break; +case 570425345: +this.setAxesScale(tok, value); +break; +case 570425346: +this.setAxesScale(tok, value); +break; +case 570425416: +this.tm.visualRangeAngstroms = value; +this.refresh(1, "set visualRange"); +break; +case 570425372: +this.setNavigationDepthPercent(value); +break; +case 570425374: +this.g.navigationSpeed = value; +break; +case 570425373: +this.tm.setNavigationSlabOffsetPercent(value); +break; +case 570425350: +this.tm.setCameraDepthPercent(value, false); +this.refresh(1, "set cameraDepth"); +return; +case 570425388: +this.setRotationRadius(value, true); +return; +case 570425362: +this.g.hoverDelayMs = Clazz.floatToInt(value * 1000); +break; +case 570425392: +this.g.sheetSmoothing = value; +break; +case 570425354: +value = JV.Viewer.checkFloatRange(value, -10, 10); +this.g.dipoleScale = value; +break; +case 570425404: +this.tm.setStereoDegrees(value); +break; +case 1648361473: +this.setVectorScale(value); +return; +case 570425412: +this.setVibrationPeriod(value); +return; +case 570425414: +this.setVibrationScale(value); +return; +case 570425348: +this.setBondTolerance(value); +return; +case 570425364: +this.setMinBondDistance(value); +return; +case 570425390: +this.tm.setScaleAngstromsPerInch(value); +break; +case 570425394: +value = JV.Viewer.checkFloatRange(value, 0, 10); +this.g.solventProbeRadius = value; +break; +default: +if (!this.g.htNonbooleanParameterValues.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.newF(value)); +return; +}} +this.g.setF(key, value); +}, "~S,~N,~N"); +Clazz.overrideMethod(c$, "setIntProperty", +function(key, value){ +if (value == -2147483648 || key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setI(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, "" + value); +break; +case 603979776: +this.setBooleanPropertyTok(key, tok, value != 0); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, value); +break; +default: +this.setIntPropertyTok(key, tok, value); +} +}, "~S,~N"); +Clazz.defineMethod(c$, "setIntPropertyTok", +function(key, tok, value){ +switch (tok) { +case 553648150: +this.g.minimizationReportSteps = Math.min(Math.max(value, 1), 20); +break; +case 553648184: +this.stm.setUndoMax(value); +break; +case 553648147: +this.g.labelPointerWidth = value; +break; +case 553648152: +this.g.minimizationMaxAtoms = value; +break; +case 553648145: +this.g.infoFontSize = Math.max(0, value); +break; +case 553648167: +case 553648144: +case 553648168: +value = this.eval.setStatic(tok, value); +break; +case 553648185: +this.g.vectorTrail = value; +break; +case 553648136: +value = (value == 0 ? 0 : 1); +this.g.bondingVersion = JU.Elements.bondingVersion = value; +break; +case 553648135: +this.gdata.setCelPower(value); +break; +case 553648129: +this.gdata.setAmbientOcclusion(value); +break; +case 553648158: +this.g.platformSpeed = Math.min(Math.max(value, 0), 10); +break; +case 553648149: +this.g.meshScale = value; +break; +case 553648153: +this.g.minPixelSelRadius = value; +break; +case 553648146: +this.g.isosurfacePropertySmoothingPower = value; +break; +case 553648165: +this.g.repaintWaitMs = value; +break; +case 553648170: +this.g.smallMoleculeMaxAtoms = value; +break; +case 553648151: +this.g.minimizationSteps = value; +break; +case 553648183: +this.g.strutSpacing = value; +break; +case 553648156: +value = JV.Viewer.checkIntRange(value, 0, 1000); +this.gdata.setPhongExponent(value); +break; +case 553648142: +this.g.helixStep = value; +this.ms.haveStraightness = false; +break; +case 553648140: +this.g.dotScale = value; +break; +case 553648139: +this.g.dotDensity = value; +break; +case 553648137: +this.g.delayMaximumMs = value; +break; +case 553648148: +JU.Logger.setLogLevel(value); +JU.Logger.info("logging level set to " + value); +this.g.setI("logLevel", value); +if (this.eval != null) this.eval.setDebugging(); +return; +case 553648133: +this.setAxesMode(value == 2 ? 603979808 : value == 1 ? 603979804 : 603979809); +return; +case 553648178: +this.setStrandCount(0, value); +return; +case 553648182: +this.setStrandCount(12, value); +return; +case 553648180: +this.setStrandCount(13, value); +return; +case 553648155: +return; +case 536870922: +this.g.scriptDelay = value; +break; +case 553648176: +if (value < 0) value = JV.Viewer.checkIntRange(value, -10, -1); + else value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setSpecularPower(value); +break; +case 553648172: +value = JV.Viewer.checkIntRange(-value, -10, -1); +this.gdata.setSpecularPower(value); +break; +case 553648134: +this.setMarBond(value); +return; +case 536870924: +this.setBooleanPropertyTok(key, tok, value == 1); +return; +case 553648174: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setSpecularPercent(value); +break; +case 553648138: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setDiffusePercent(value); +break; +case 553648130: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setAmbientPercent(value); +break; +case 553648186: +this.tm.zDepthToPercent(value); +break; +case 553648188: +this.tm.zSlabToPercent(value); +break; +case 554176526: +this.tm.depthToPercent(value); +break; +case 554176565: +this.tm.slabToPercent(value); +break; +case 553648190: +this.g.zShadePower = value = Math.max(value, 0); +break; +case 553648166: +this.g.ribbonAspectRatio = value; +break; +case 553648157: +this.g.pickingSpinRate = (value < 1 ? 1 : value); +break; +case 553648132: +this.setAnimationFps(value); +return; +case 553648154: +this.setPercentVdwAtom(value); +break; +case 553648143: +this.g.hermiteLevel = value; +break; +case 553648141: +case 553648161: +case 553648160: +case 553648162: +case 553648164: +break; +default: +if (!this.g.htNonbooleanParameterValues.containsKey(key)) { +this.g.setUserVariable(key, JS.SV.newI(value)); +return; +}} +this.g.setI(key, value); +}, "~S,~N,~N"); +c$.checkIntRange = Clazz.defineMethod(c$, "checkIntRange", +function(value, min, max){ +return (value < min ? min : value > max ? max : value); +}, "~N,~N,~N"); +c$.checkFloatRange = Clazz.defineMethod(c$, "checkFloatRange", +function(value, min, max){ +return (value < min ? min : value > max ? max : value); +}, "~N,~N,~N"); +Clazz.overrideMethod(c$, "setBooleanProperty", +function(key, value){ +if (key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setB(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, ""); +break; +case 553648128: +this.setIntPropertyTok(key, tok, value ? 1 : 0); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, value ? 1 : 0); +break; +default: +this.setBooleanPropertyTok(key, tok, value); +} +}, "~S,~B"); +Clazz.defineMethod(c$, "setBooleanPropertyTok", +function(key, tok, value){ +var doRepaint = true; +switch (tok) { +case 603979838: +this.g.elementKey = value; +this.getModelkit(false).setProperty("setelementkey", Boolean.$valueOf(value)); +break; +case 603979956: +this.g.symmetryHermannMauguin = value; +break; +case 603979831: +value = new Boolean (value & JV.Viewer.isJS).valueOf(); +this.g.doublePrecision = value; +JV.Viewer.isHighPrecision = this.g.doublePrecision; +this.setBooleanPropertyTok("legacyJavaFloat", 603979874, value); +break; +case 603979821: +this.g.checkCIR = value; +if (value) { +this.checkCIR(true); +}break; +case 603979823: +this.g.cipRule6Full = value; +break; +case 603979802: +this.g.autoplayMovie = value; +break; +case 603979797: +value = false; +this.g.allowAudio = value; +break; +case 603979892: +this.g.noDelay = value; +break; +case 603979891: +this.g.nboCharges = value; +break; +case 603979856: +this.g.hiddenLinesDashed = value; +break; +case 603979886: +this.g.multipleBondBananas = value; +break; +case 603979884: +this.g.modulateOccupancy = value; +break; +case 603979874: +if (value || !this.g.doublePrecision) this.g.legacyJavaFloat = value; +value = this.g.legacyJavaFloat; +break; +case 603979927: +this.g.showModVecs = value; +break; +case 603979937: +this.g.showUnitCellDetails = value; +break; +case 603979849: +doRepaint = false; +break; +case 603979972: +this.g.vectorsCentered = value; +break; +case 603979810: +this.g.cartoonBlocks = value; +break; +case 603979811: +this.g.cartoonSteps = value; +break; +case 603979818: +this.g.cartoonRibose = value; +break; +case 603979840: +this.g.ellipsoidArrows = value; +break; +case 603979967: +this.g.translucent = value; +break; +case 603979817: +this.g.cartoonLadders = value; +break; +case 603979968: +var b = this.g.twistedSheets; +this.g.twistedSheets = value; +if (b != value) this.checkCoordinatesChanged(null); +break; +case 603979820: +this.gdata.setCel(value); +break; +case 603979816: +this.g.cartoonFancy = value; +break; +case 603979934: +this.g.showTiming = value; +break; +case 603979973: +this.g.vectorSymmetry = value; +break; +case 603979867: +this.g.isosurfaceKey = value; +break; +case 603979893: +this.g.partialDots = value; +break; +case 603979872: +this.g.legacyAutoBonding = value; +break; +case 603979826: +this.g.defaultStructureDSSP = value; +break; +case 603979835: +this.g.dsspCalcHydrogen = value; +break; +case 603979782: +this.g.allowModelkit = value; +if (!value) this.setModelKitMode(false); +break; +case 603983903: +this.setModelKitMode(value); +break; +case 603979887: +this.g.multiProcessor = value && (JV.Viewer.nProcessors > 1); +break; +case 603979885: +this.g.monitorEnergy = value; +break; +case 603979853: +this.g.hbondsRasmol = value; +break; +case 603979880: +this.g.minimizationRefresh = value; +break; +case 603979881: +this.g.minimizationSilent = value; +break; +case 603979866: +if (value) { +this.$isKiosk = true; +this.g.disablePopupMenu = true; +if (this.display != null) this.apiPlatform.setTransparentCursor(this.display); +}break; +case 603979975: +this.g.waitForMoveTo = value; +break; +case 603979875: +this.g.logCommands = true; +break; +case 603979876: +this.g.logGestures = true; +break; +case 603979784: +this.g.allowMultiTouch = value; +break; +case 603979898: +this.g.preserveState = value; +this.ms.setPreserveState(value); +this.undoMoveAction(4165, -2); +break; +case 603979955: +this.g.strutsMultiple = value; +break; +case 603979845: +break; +case 603979939: +this.g.slabByAtom = value; +break; +case 603979940: +this.g.slabByMolecule = value; +break; +case 603979903: +this.g.saveProteinStructureState = value; +break; +case 603979780: +this.g.allowGestures = value; +break; +case 603979865: +this.g.imageState = value; +break; +case 603979970: +this.g.useMinimizationThread = value; +break; +case 603979781: +this.g.allowKeyStrokes = value; +break; +case 603979832: +this.g.dragSelected = value; +this.showSelected = false; +break; +case 603979924: +this.g.showKeyStrokes = value; +break; +case 603979846: +this.g.fontCaching = value; +break; +case 603979796: +this.g.atomPicking = value; +break; +case 603979814: +this.highlight(null); +this.g.bondPicking = value; +break; +case 603979906: +this.g.selectAllModels = value; +if (value) this.slm.setSelectionSubset(null); + else this.am.setSelectAllSubset(false); +break; +case 603979879: +this.g.messageStyleChime = value; +break; +case 603979896: +this.g.pdbSequential = value; +break; +case 603979894: +this.g.pdbAddHydrogens = value; +break; +case 603979895: +this.g.pdbGetHeader = value; +break; +case 603979841: +this.g.ellipsoidAxes = value; +break; +case 603979839: +this.g.ellipsoidArcs = value; +break; +case 603979842: +this.g.ellipsoidBall = value; +break; +case 603979843: +this.g.ellipsoidDots = value; +break; +case 603979844: +this.g.ellipsoidFill = value; +break; +case 603979847: +this.g.fontScaling = value; +break; +case 603979957: +this.setSyncTarget(0, value); +break; +case 603979958: +this.setSyncTarget(1, value); +break; +case 603979977: +this.g.wireframeRotation = value; +break; +case 603979868: +this.g.isosurfacePropertySmoothing = value; +break; +case 603979834: +this.g.drawPicking = value; +break; +case 603979786: +case 603979790: +case 603979788: +this.setAntialias(tok, value); +break; +case 603979944: +this.g.smartAromatic = value; +break; +case 603979794: +this.setApplySymmetryToBonds(value); +break; +case 603979792: +this.g.appendNew = value; +break; +case 603979800: +this.g.autoFps = value; +break; +case 603979971: +JU.DF.setUseNumberLocalization(this.g.useNumberLocalization = value); +break; +case 603979918: +case 1611272202: +key = "showFrank"; +this.setFrankOn(value); +break; +case 1612709912: +key = "solventProbe"; +this.g.dotSolvent = value; +break; +case 603979948: +this.g.dotSolvent = value; +break; +case 603979785: +this.g.allowRotateSelected = value; +break; +case 603979783: +this.g.allowMoveAtoms = value; +this.showSelected = false; +break; +case 536870922: +this.setIntPropertyTok("showScript", tok, value ? 1 : 0); +return; +case 603979778: +this.g.allowEmbeddedScripts = value; +break; +case 603979890: +this.g.navigationPeriodic = value; +break; +case 603979984: +this.tm.setZShadeEnabled(value); +return; +case 603979833: +if (this.haveDisplay) this.g.drawHover = value; +break; +case 603979889: +this.setNavigationMode(value); +break; +case 603979888: +return; +case 603979860: +this.g.hideNavigationPoint = value; +break; +case 603979930: +this.g.showNavigationPointAlways = value; +break; +case 603979900: +this.setRefreshing(value); +break; +case 603979869: +this.g.jmolInJSpecView = value; +break; +case 603979870: +this.g.justifyMeasurements = value; +break; +case 603979952: +this.g.ssbondsBackbone = value; +break; +case 603979852: +this.g.hbondsBackbone = value; +break; +case 603979854: +this.g.hbondsSolid = value; +break; +case 536870924: +this.gdata.setSpecular(value); +break; +case 603979942: +this.tm.setSlabEnabled(value); +return; +case 603979980: +this.tm.setZoomEnabled(value); +return; +case 603979864: +this.g.highResolutionFlag = value; +break; +case 603979966: +this.g.traceAlpha = value; +break; +case 603979983: +this.g.zoomLarge = value; +this.tm.setZoomHeight(this.g.zoomHeight, value); +break; +case 603979982: +this.g.zoomHeight = value; +this.tm.setZoomHeight(value, this.g.zoomLarge); +break; +case 603979871: +J.i18n.GT.setDoTranslate(value); +break; +case 603979862: +this.slm.setHideNotSelected(value); +break; +case 603979904: +this.setScriptQueue(value); +break; +case 603979830: +this.g.dotSurface = value; +break; +case 603979829: +this.g.dotsSelectedOnly = value; +break; +case 1611141172: +this.setSelectionHalosEnabled(value); +break; +case 603979910: +this.g.rasmolHydrogenSetting = value; +break; +case 603979908: +this.g.rasmolHeteroSetting = value; +break; +case 603979928: +this.g.showMultipleBonds = value; +break; +case 603979920: +this.g.showHiddenSelectionHalos = value; +break; +case 603979976: +this.tm.setWindowCentered(value); +break; +case 603979828: +this.g.displayCellParameters = value; +break; +case 603979960: +this.g.testFlag1 = value; +break; +case 603979962: +this.g.testFlag2 = value; +break; +case 603979964: +this.g.testFlag3 = value; +break; +case 603979965: +this.jmolTest(); +this.g.testFlag4 = value; +break; +case 603979901: +this.g.ribbonBorder = value; +break; +case 603979815: +this.g.cartoonBaseEdges = value; +break; +case 603979819: +this.g.cartoonRockets = value; +break; +case 603979902: +this.g.rocketBarrels = value; +break; +case 603979850: +this.gdata.setGreyscaleMode(this.g.greyscaleRendering = value); +break; +case 603979878: +this.g.measurementLabels = value; +break; +case 603979809: +case 603979804: +case 603979808: +this.setAxesMode(tok); +return; +case 603979806: +this.setAxesOrientationRasmol(value); +return; +case 603979824: +this.setStringPropertyTok("defaultcolorscheme", 545259545, value ? "rasmol" : "jmol"); +return; +case 603979825: +this.setDebugScript(value); +return; +case 603979897: +this.setPerspectiveDepth(value); +return; +case 603979798: +this.setAutoBond(value); +return; +case 603979914: +this.setShowAxes(value); +return; +case 603979916: +this.setShowBbcage(value); +return; +case 603979922: +this.setShowHydrogens(value); +return; +case 603979926: +this.setShowMeasurements(value); +return; +case 603979936: +this.setShowUnitCell(value); +return; +case 603979812: +doRepaint = false; +this.g.bondModeOr = value; +break; +case 603979978: +doRepaint = false; +this.g.zeroBasedXyzRasmol = value; +this.reset(true); +break; +case 603979899: +doRepaint = false; +this.g.rangeSelected = value; +break; +case 603979877: +doRepaint = false; +this.g.measureAllModels = value; +break; +case 603979954: +doRepaint = false; +this.sm.allowStatusReporting = value; +break; +case 603979822: +doRepaint = false; +this.g.chainCaseSensitive = value; +break; +case 603979858: +doRepaint = false; +this.g.hideNameInPopup = value; +break; +case 603979827: +doRepaint = false; +this.g.disablePopupMenu = value; +break; +case 603979848: +doRepaint = false; +this.g.forceAutoBond = value; +break; +default: +if (!this.g.htBooleanParameterFlags.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.getBoolean(value)); +return; +}} +this.g.setB(key, value); +if (doRepaint) this.setTainted(true); +}, "~S,~N,~B"); +Clazz.defineMethod(c$, "setModelKitMode", +function(value){ +if (this.acm == null || !this.allowScripting) return; +if (value || this.g.modelKitMode) { +this.setPickingMode(null, value ? 33 : 1); +this.setPickingMode(null, value ? 32 : 1); +}var isChange = (this.g.modelKitMode != value); +this.g.modelKitMode = value; +this.g.setB("modelkitmode", value); +this.highlight(null); +if (isChange) { +this.setModelkitPropertySafely("constraint", null); +}if (value) { +this.setNavigationMode(false); +this.selectAll(); +this.setStringProperty("picking", "assignAtom_C"); +this.setStringProperty("picking", "assignBond_p"); +if (!this.isApplet) this.popupMenu(10, 0, 'm'); +if (isChange) this.sm.setStatusModelKit(1); +this.g.modelKitMode = true; +if (this.getOperativeSymmetry() != null) { +} else if (this.ms.ac == 0) { +this.zap(false, true, true); +} else if (this.am.cmi >= 0 && this.getModelUndeletedAtomsBitSet(this.am.cmi).isEmpty()) { +var htParams = new java.util.Hashtable(); +htParams.put("appendToModelIndex", Integer.$valueOf(this.am.cmi)); +this.loadDefaultModelKitModel(htParams); +}} else { +this.acm.setPickingMode(-1); +if (isChange) { +this.sm.setStatusModelKit(0); +} else if (!value) { +this.getModelkit(false).setProperty("hidemenu", null); +}}}, "~B"); +Clazz.defineMethod(c$, "setSmilesString", +function(s){ +if (s == null) this.g.removeParam("_smilesString"); + else this.g.setO("_smilesString", s); +}, "~S"); +Clazz.defineMethod(c$, "removeUserVariable", +function(key){ +this.g.removeUserVariable(key); +if (key.endsWith("callback")) this.sm.setCallbackFunction(key, null); +}, "~S"); +Clazz.defineMethod(c$, "jmolTest", +function(){ +}); +Clazz.defineMethod(c$, "showParameter", +function(key, ifNotSet, nMax){ +var sv = "" + this.g.getParameterEscaped(key, nMax); +if (ifNotSet || sv.indexOf("") < 0) this.showString(key + " = " + sv, false); +}, "~S,~B,~N"); +Clazz.defineMethod(c$, "showString", +function(str, isPrint){ +if (!JV.Viewer.isJS && this.isScriptQueued() && (!this.isSilent || isPrint) && !"\0".equals(str)) { +JU.Logger.warn(str); +}this.scriptEcho(str); +}, "~S,~B"); +Clazz.defineMethod(c$, "getAllSettings", +function(prefix){ +return this.getStateCreator().getAllSettings(prefix); +}, "~S"); +Clazz.defineMethod(c$, "getBindingInfo", +function(qualifiers){ +return (this.haveDisplay ? this.acm.getBindingInfo(qualifiers) : ""); +}, "~S"); +Clazz.defineMethod(c$, "getIsosurfacePropertySmoothing", +function(asPower){ +return (asPower ? this.g.isosurfacePropertySmoothingPower : this.g.isosurfacePropertySmoothing ? 1 : 0); +}, "~B"); +Clazz.defineMethod(c$, "setNavigationDepthPercent", +function(percent){ +this.tm.setNavigationDepthPercent(percent); +this.refresh(1, "set navigationDepth"); +}, "~N"); +Clazz.defineMethod(c$, "getShowNavigationPoint", +function(){ +if (!this.g.navigationMode) return false; +return (this.tm.isNavigating() && !this.g.hideNavigationPoint || this.g.showNavigationPointAlways || this.getInMotion(true)); +}); +Clazz.overrideMethod(c$, "setPerspectiveDepth", +function(perspectiveDepth){ +this.tm.setPerspectiveDepth(perspectiveDepth); +}, "~B"); +Clazz.overrideMethod(c$, "setAxesOrientationRasmol", +function(TF){ +this.g.setB("axesOrientationRasmol", TF); +this.g.axesOrientationRasmol = TF; +this.reset(true); +}, "~B"); +Clazz.defineMethod(c$, "setAxesScale", +function(tok, val){ +val = JV.Viewer.checkFloatRange(val, -100, 100); +if (tok == 570425345) this.g.axesOffset = val; + else this.g.axesScale = val; +this.axesAreTainted = true; +}, "~N,~N"); +Clazz.defineMethod(c$, "setAxesMode", +function(mode){ +this.g.axesMode = mode; +this.axesAreTainted = true; +switch (mode) { +case 603979808: +this.g.removeParam("axesmolecular"); +this.g.removeParam("axeswindow"); +this.g.setB("axesUnitcell", true); +mode = 2; +break; +case 603979804: +this.g.removeParam("axesunitcell"); +this.g.removeParam("axeswindow"); +this.g.setB("axesMolecular", true); +mode = 1; +break; +case 603979809: +this.g.removeParam("axesunitcell"); +this.g.removeParam("axesmolecular"); +this.g.setB("axesWindow", true); +mode = 0; +} +this.g.setI("axesMode", mode); +}, "~N"); +Clazz.defineMethod(c$, "getSelectionHalosEnabled", +function(){ +return this.selectionHalosEnabled; +}); +Clazz.defineMethod(c$, "setSelectionHalosEnabled", +function(TF){ +if (this.selectionHalosEnabled == TF) return; +this.g.setB("selectionHalos", TF); +this.shm.loadShape(8); +this.selectionHalosEnabled = TF; +}, "~B"); +Clazz.defineMethod(c$, "getShowSelectedOnce", +function(){ +var flag = this.showSelected; +this.showSelected = false; +return flag; +}); +Clazz.defineMethod(c$, "setStrandCount", +function(type, value){ +value = JV.Viewer.checkIntRange(value, 0, 20); +switch (type) { +case 12: +this.g.strandCountForStrands = value; +break; +case 13: +this.g.strandCountForMeshRibbon = value; +break; +default: +this.g.strandCountForStrands = value; +this.g.strandCountForMeshRibbon = value; +break; +} +this.g.setI("strandCount", value); +this.g.setI("strandCountForStrands", this.g.strandCountForStrands); +this.g.setI("strandCountForMeshRibbon", this.g.strandCountForMeshRibbon); +}, "~N,~N"); +Clazz.defineMethod(c$, "getStrandCount", +function(type){ +return (type == 12 ? this.g.strandCountForStrands : this.g.strandCountForMeshRibbon); +}, "~N"); +Clazz.defineMethod(c$, "setNavigationMode", +function(TF){ +this.g.navigationMode = TF; +this.tm.setNavigationMode(TF); +}, "~B"); +Clazz.overrideMethod(c$, "setAutoBond", +function(TF){ +this.g.setB("autobond", TF); +this.g.autoBond = TF; +}, "~B"); +Clazz.defineMethod(c$, "makeConnections", +function(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy){ +this.clearModelDependentObjects(); +this.clearMinimization(); +return this.ms.makeConnections(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy); +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N"); +Clazz.overrideMethod(c$, "rebond", +function(){ +this.rebondState(false); +}); +Clazz.defineMethod(c$, "rebondState", +function(isStateScript){ +this.clearModelDependentObjects(); +this.ms.deleteAllBonds(); +var isLegacy = isStateScript && this.g.legacyAutoBonding; +this.ms.autoBondBs4(null, null, null, null, this.getMadBond(), isLegacy, null); +this.addStateScript((isLegacy ? "set legacyAutoBonding TRUE;connect;set legacyAutoBonding FALSE;" : "connect;"), false, true); +}, "~B"); +Clazz.overrideMethod(c$, "setPercentVdwAtom", +function(value){ +this.g.setI("percentVdwAtom", value); +this.g.percentVdwAtom = value; +this.rd.value = value / 100; +this.rd.factorType = J.atomdata.RadiusData.EnumType.FACTOR; +this.rd.vdwType = J.c.VDW.AUTO; +this.shm.setShapeSizeBs(0, 0, this.rd, null); +}, "~N"); +Clazz.overrideMethod(c$, "getMadBond", +function(){ +return (this.g.bondRadiusMilliAngstroms * 2); +}); +Clazz.overrideMethod(c$, "setShowHydrogens", +function(TF){ +this.g.setB("showHydrogens", TF); +this.g.showHydrogens = TF; +}, "~B"); +Clazz.defineMethod(c$, "setShowBbcage", +function(value){ +this.setObjectMad10(32, "boundbox", (value ? -4 : 0)); +this.g.setB("showBoundBox", value); +}, "~B"); +Clazz.defineMethod(c$, "getShowBbcage", +function(){ +return this.getObjectMad10(4) != 0; +}); +Clazz.defineMethod(c$, "setShowUnitCell", +function(value){ +this.setObjectMad10(33, "unitcell", (value ? -2 : 0)); +this.g.setB("showUnitCell", value); +}, "~B"); +Clazz.defineMethod(c$, "getShowUnitCell", +function(){ +return this.getObjectMad10(5) != 0; +}); +Clazz.defineMethod(c$, "setShowAxes", +function(value){ +this.setObjectMad10(34, "axes", (value ? -2 : 0)); +this.g.setB("showAxes", value); +}, "~B"); +Clazz.defineMethod(c$, "getShowAxes", +function(){ +return this.getObjectMad10(1) != 0; +}); +Clazz.overrideMethod(c$, "setFrankOn", +function(TF){ +if (this.isPreviewOnly) TF = false; +this.frankOn = TF; +this.setObjectMad10(36, "frank", (TF ? 1 : 0)); +}, "~B"); +Clazz.defineMethod(c$, "getShowFrank", +function(){ +if (this.isPreviewOnly || this.isApplet && this.creatingImage) return false; +return (this.isSignedApplet && !this.isSignedAppletLocal && !JV.Viewer.isJS || this.frankOn); +}); +Clazz.overrideMethod(c$, "setShowMeasurements", +function(TF){ +this.g.setB("showMeasurements", TF); +this.g.showMeasurements = TF; +}, "~B"); +Clazz.defineMethod(c$, "setUnits", +function(units, isDistance){ +var isDefault = "default".equals(units); +if (!isDistance || !isDefault) this.g.setUnits(units); +if (isDistance) { +this.setShapeProperty(6, "reformatDistances", units); +}}, "~S,~B"); +Clazz.overrideMethod(c$, "setRasmolDefaults", +function(){ +this.setDefaultsType("RasMol"); +}); +Clazz.overrideMethod(c$, "setJmolDefaults", +function(){ +this.setDefaultsType("Jmol"); +}); +Clazz.defineMethod(c$, "setDefaultsType", +function(type){ +if (type.equalsIgnoreCase("RasMol")) { +this.stm.setRasMolDefaults(); +return; +}if (type.equalsIgnoreCase("PyMOL")) { +this.stm.setPyMOLDefaults(); +return; +}this.stm.setJmolDefaults(); +this.setIntProperty("bondingVersion", 0); +this.shm.setShapeSizeBs(0, 0, this.rd, this.getAllAtoms()); +}, "~S"); +Clazz.defineMethod(c$, "setAntialias", +function(tok, TF){ +var isChanged = false; +switch (tok) { +case 603979786: +isChanged = (this.g.antialiasDisplay != TF); +this.g.antialiasDisplay = TF; +break; +case 603979790: +isChanged = (this.g.antialiasTranslucent != TF); +this.g.antialiasTranslucent = TF; +break; +case 603979788: +this.g.antialiasImages = TF; +return; +} +if (isChanged) { +this.resizeImage(0, 0, false, false, true); +this.refresh(3, "Viewer:setAntialias()"); +}}, "~N,~B"); +Clazz.defineMethod(c$, "allocTempPoints", +function(size){ +return this.tempArray.allocTempPoints(size); +}, "~N"); +Clazz.defineMethod(c$, "freeTempPoints", +function(tempPoints){ +this.tempArray.freeTempPoints(tempPoints); +}, "~A"); +Clazz.defineMethod(c$, "allocTempScreens", +function(size){ +return this.tempArray.allocTempScreens(size); +}, "~N"); +Clazz.defineMethod(c$, "freeTempScreens", +function(tempScreens){ +this.tempArray.freeTempScreens(tempScreens); +}, "~A"); +Clazz.defineMethod(c$, "allocTempEnum", +function(size){ +return this.tempArray.allocTempEnum(size); +}, "~N"); +Clazz.defineMethod(c$, "freeTempEnum", +function(temp){ +this.tempArray.freeTempEnum(temp); +}, "~A"); +Clazz.defineMethod(c$, "getFont3D", +function(fontFace, fontStyle, fontSize){ +return this.gdata.getFont3DFSS(fontFace, fontStyle, fontSize); +}, "~S,~S,~N"); +Clazz.defineMethod(c$, "getAtomGroupQuaternions", +function(bsAtoms, nMax){ +return this.ms.getAtomGroupQuaternions(bsAtoms, nMax, this.getQuaternionFrame()); +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "setStereoMode", +function(twoColors, stereoMode, degrees){ +this.setFloatProperty("stereoDegrees", degrees); +this.setBooleanPropertyTok("greyscaleRendering", 603979850, stereoMode.isBiColor()); +if (twoColors != null) this.tm.setStereoMode2(twoColors); + else this.tm.setStereoMode(stereoMode); +}, "~A,J.c.STER,~N"); +Clazz.defineMethod(c$, "getChimeInfo", +function(tok){ +return this.getPropertyManager().getChimeInfo(tok, this.bsA()); +}, "~N"); +Clazz.defineMethod(c$, "getModelFileInfo", +function(){ +return this.getPropertyManager().getModelFileInfo(this.getVisibleFramesBitSet()); +}); +Clazz.defineMethod(c$, "getModelFileInfoAll", +function(){ +return this.getPropertyManager().getModelFileInfo(null); +}); +Clazz.defineMethod(c$, "showEditor", +function(file_text){ +var scriptEditor = this.getProperty("DATA_API", "getScriptEditor", Boolean.TRUE); +if (scriptEditor == null) return; +scriptEditor.show(file_text); +}, "~A"); +Clazz.defineMethod(c$, "getPropertyManager", +function(){ +if (this.pm == null) (this.pm = J.api.Interface.getInterface("JV.PropertyManager", this, "prop")).setViewer(this); +return this.pm; +}); +Clazz.defineMethod(c$, "setTainted", +function(TF){ +this.isTainted = this.axesAreTainted = (TF && (this.refreshing || this.creatingImage)); +}, "~B"); +Clazz.defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers){ +return this.shm.checkObjectClicked(x, y, modifiers, this.getVisibleFramesBitSet(), this.g.drawPicking); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "checkObjectHovered", +function(x, y){ +return (x >= 0 && this.shm != null && this.shm.checkObjectHovered(x, y, this.getVisibleFramesBitSet(), this.getBondsPickable())); +}, "~N,~N"); +Clazz.defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, action){ +var iShape = 0; +switch (this.getPickingMode()) { +case 2: +iShape = 5; +break; +case 4: +iShape = 22; +break; +} +if (this.shm.checkObjectDragged(prevX, prevY, x, y, action, this.getVisibleFramesBitSet(), iShape)) { +this.refresh(1, "checkObjectDragged"); +if (iShape == 22) this.scriptEcho(this.getShapeProperty(22, "command")); +return true; +}return false; +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "rotateAxisAngleAtCenter", +function(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsSelected){ +var isOK = this.tm.rotateAxisAngleAtCenter(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsSelected); +if (isOK) this.setSync(); +return isOK; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.V3,~N,~N,~B,JU.BS"); +Clazz.defineMethod(c$, "rotateAboutPointsInternal", +function(eval, point1, point2, degreesPerSecond, endDegrees, isSpin, bsSelected, translation, finalPoints, dihedralList, m4, useModelKit){ +if (eval == null) eval = this.eval; +if (this.headless) { +if (isSpin && endDegrees == 3.4028235E38) return false; +isSpin = false; +}var isOK = this.tm.rotateAboutPointsInternal(eval, point1, point2, degreesPerSecond, endDegrees, false, isSpin, bsSelected, false, translation, finalPoints, dihedralList, m4, useModelKit); +if (isOK) this.setSync(); +return isOK; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.P3,~N,~N,~B,JU.BS,JU.V3,JU.Lst,~A,JU.M4,~B"); +Clazz.defineMethod(c$, "startSpinningAxis", +function(pt1, pt2, isClockwise){ +if (this.tm.spinOn || this.tm.navOn) { +this.tm.setSpinOff(); +this.tm.setNavOn(false); +return; +}this.tm.rotateAboutPointsInternal(null, pt1, pt2, this.g.pickingSpinRate, 3.4028235E38, isClockwise, true, null, false, null, null, null, null, false); +}, "JU.T3,JU.T3,~B"); +Clazz.defineMethod(c$, "getModelDipole", +function(){ +return this.ms.getModelDipole(this.am.cmi); +}); +Clazz.defineMethod(c$, "calculateMolecularDipole", +function(bsAtoms){ +try { +return this.ms.calculateMolecularDipole(this.am.cmi, bsAtoms); +} catch (e) { +if (Clazz.exceptionOf(e,"JV.JmolAsyncException")){ +if (this.eval != null) this.eval.loadFileResourceAsync(e.getFileName()); +return null; +} else { +throw e; +} +} +}, "JU.BS"); +Clazz.defineMethod(c$, "setDefaultLattice", +function(p){ +if (!Float.isNaN(p.x + p.y + p.z)) this.g.ptDefaultLattice.setT(p); +this.g.setO("defaultLattice", JU.Escape.eP(p)); +}, "JU.P3"); +Clazz.defineMethod(c$, "getDefaultLattice", +function(){ +return this.g.ptDefaultLattice; +}); +Clazz.defineMethod(c$, "getModelExtract", +function(atomExpression, doTransform, isModelKit, type){ +return this.getPropertyManager().getModelExtract(this.getAtomBitSet(atomExpression), doTransform, isModelKit, type, false); +}, "~O,~B,~B,~S"); +Clazz.overrideMethod(c$, "getData", +function(atomExpression, type){ +return this.getModelFileData(atomExpression, type, true); +}, "~S,~S"); +Clazz.defineMethod(c$, "getModelFileData", +function(atomExpression, type, allTrajectories){ +return this.getPropertyManager().getAtomData(atomExpression, type, allTrajectories); +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "getModelCml", +function(bs, nAtomsMax, addBonds, doTransform){ +return this.getPropertyManager().getModelCml(bs, nAtomsMax, addBonds, doTransform, false); +}, "JU.BS,~N,~B,~B"); +Clazz.defineMethod(c$, "getPdbAtomData", +function(bs, out, asPQR, doTransform){ +return this.getPropertyManager().getPdbAtomData(bs == null ? this.bsA() : bs, out, asPQR, doTransform, false); +}, "JU.BS,JU.OC,~B,~B"); +Clazz.defineMethod(c$, "isJmolDataFrame", +function(){ +return this.ms.isJmolDataFrameForModel(this.am.cmi); +}); +Clazz.defineMethod(c$, "setFrameTitle", +function(modelIndex, title){ +this.ms.setFrameTitle(JU.BSUtil.newAndSetBit(modelIndex), title); +}, "~N,~S"); +Clazz.defineMethod(c$, "setFrameTitleObj", +function(title){ +this.shm.loadShape(31); +this.ms.setFrameTitle(this.getVisibleFramesBitSet(), title); +}, "~O"); +Clazz.defineMethod(c$, "getFrameTitle", +function(){ +return this.ms.getFrameTitle(this.am.cmi); +}); +Clazz.defineMethod(c$, "setAtomProperty", +function(bs, tok, iValue, fValue, sValue, values, list){ +if (tok == 1648363544) this.shm.deleteVdwDependentShapes(bs); +this.clearMinimization(); +this.ms.setAtomProperty(bs, tok, iValue, fValue, sValue, values, list); +switch (tok) { +case 1086326789: +this.setModelkitPropertySafely("updateatomkeys", bs); +case 1111492609: +case 1111492610: +case 1111492611: +case 1111492612: +case 1111492613: +case 1111492614: +case 1111490577: +case 1111490578: +case 1111490579: +this.refreshMeasures(true); +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz.defineMethod(c$, "checkCoordinatesChanged", +function(bsAtoms){ +this.ms.recalculatePositionDependentQuantities(bsAtoms, null); +this.refreshMeasures(true); +}, "JU.BS"); +Clazz.defineMethod(c$, "setAtomCoords", +function(bs, tokType, xyzValues){ +if (bs.isEmpty()) return; +var atom = this.ms.at[bs.nextSetBit(0)]; +var n = bs.cardinality(); +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "setAtomCoords", n, bs); +this.ms.setAtomCoords(bs, tokType, xyzValues); +this.setStatusAtomMoved(true, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +}, "JU.BS,~N,~O"); +Clazz.defineMethod(c$, "setAtomCoordsRelative", +function(offset, bs){ +if (bs == null) bs = this.bsA(); +if (bs.isEmpty()) return; +var doNotify = (offset.lengthSquared() != 0); +var atom = this.ms.at[bs.nextSetBit(0)]; +var n = bs.cardinality(); +if (doNotify) { +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "setAtomCoords", n, bs); +}this.ms.setAtomCoordsRelative(offset, bs); +this.checkMinimization(); +if (doNotify) { +this.setStatusAtomMoved(false, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +}}, "JU.T3,JU.BS"); +Clazz.defineMethod(c$, "invertAtomCoord", +function(pt, plane, bs, ringAtomIndex, isClick){ +if (ringAtomIndex >= 0) { +bs = JU.JmolMolecule.getBranchesForInversion(this.ms.at, ringAtomIndex, this.ms.getMoleculeBitSetForAtom(ringAtomIndex)); +var nb = bs.cardinality(); +switch (nb) { +case 0: +case 1: +return; +case 2: +break; +case 3: +case 4: +var lengths = Clazz.newIntArray (nb, 0); +var points = Clazz.newIntArray (nb, 0); +var ni = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), ni++) { +lengths[ni] = this.getBranchBitSet(i, ringAtomIndex, true).cardinality(); +points[ni] = i; +} +for (var j = 0; j < nb - 2; j++) { +var max = -2147483648; +var imax = 0; +for (var i = 0; i < nb; i++) if (lengths[i] >= max && bs.get(points[i])) { +imax = points[i]; +max = lengths[i]; +} +bs.clear(imax); +} +} +if (isClick && !bs.isEmpty()) this.undoMoveActionClear(ringAtomIndex, 2, true); +}var n = bs.cardinality(); +if (n == 0) return; +var atom = this.ms.at[bs.nextSetBit(0)]; +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "invertAtomCoords", n, bs); +this.ms.invertSelected(pt, plane, ringAtomIndex, bs); +this.setStatusAtomMoved(true, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +if (isClick) this.setStatusAtomPicked(ringAtomIndex, "inverted: " + JU.Escape.eBS(bs), null, false); +}, "JU.P3,JU.P4,JU.BS,~N,~B"); +Clazz.defineMethod(c$, "invertSelected", +function(pt, plane, iAtom, bsAtoms){ +if (bsAtoms == null) bsAtoms = this.bsA(); +if (bsAtoms.isEmpty()) return; +this.ms.invertSelected(pt, plane, iAtom, bsAtoms); +this.setStatusAtomMoved(true, bsAtoms); +}, "JU.P3,JU.P4,~N,JU.BS"); +Clazz.defineMethod(c$, "moveAtoms", +function(m4, mNew, rotation, translation, center, isInternal, bsAtoms, translationOnly, useModelKit){ +if (bsAtoms.isEmpty()) return; +var bsFixed = this.getMotionFixedAtoms(null, null); +if (bsAtoms.intersects(bsFixed)) return; +var uc = (useModelKit ? this.getOperativeSymmetry() : null); +var apos0 = null; +if (uc != null) { +apos0 = this.ms.saveAtomPositions(); +}this.ms.moveAtoms(m4, mNew, rotation, translation, bsAtoms, center, isInternal, translationOnly); +if (uc != null) { +this.getModelkit(false).checkMovedAtoms(bsFixed, bsAtoms, apos0); +}this.setStatusAtomMoved(true, bsAtoms); +}, "JU.M4,JU.M3,JU.M3,JU.V3,JU.P3,~B,JU.BS,~B,~B"); +Clazz.defineMethod(c$, "moveSelectedXY", +function(deltaX, deltaY, modifiers){ +this.moveSelected(deltaX, deltaY, -2147483648, -2147483648, -2147483648, null, null, null, false, false, modifiers); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "moveSelected", +function(deltaX, deltaY, deltaZ, x, y, bsSelected, ptOld, ptNew, isTranslation, asAtoms, modifiers){ +if (deltaZ == 0 && ptNew == null || this.isJmolDataFrame()) return 0; +if (ptNew == null) { +if (x == -2147483648 && this.modelkit != null) this.setModelkitPropertySafely("rotatebondindex", Integer.$valueOf(-2147483648)); +if (deltaX == -2147483648) { +this.showSelected = true; +this.movableBitSet = this.setMovableBitSet(null, !asAtoms); +this.shm.loadShape(8); +this.refresh(6, "moveSelected"); +return 0; +}if (deltaX == 2147483647) { +if (!this.showSelected) return 0; +this.showSelected = false; +this.movableBitSet = null; +this.refresh(6, "moveSelected"); +return 0; +}}if (this.movingSelected) return 0; +this.movingSelected = true; +this.stopMinimization(); +if (ptNew == null && x != -2147483648 && this.modelkit != null && this.modelkit.getProperty("rotatebondindex") != null) { +this.modelkit.actionRotateBond(deltaX, deltaY, x, y, (modifiers & 16) != 0); +} else { +if (bsSelected == null) bsSelected = this.bsA(); +var iatom = bsSelected.nextSetBit(0); +bsSelected = this.setMovableBitSet(bsSelected, !asAtoms); +if (bsSelected.isEmpty()) { +bsSelected.set(iatom); +this.sm.setStatusStructureModified(iatom, this.getModelIndexForAtom(iatom), -3, "FAILED", 1, bsSelected); +} else { +if (isTranslation) { +var ptCenter = (ptOld == null ? this.ms.getAtomSetCenter(bsSelected) : ptOld); +if (ptNew == null) { +this.tm.finalizeTransformParameters(); +var f = (this.g.antialiasDisplay ? 2 : 1); +this.tm.transformPt3f(ptCenter, this.ptScreen); +if (deltaZ != -2147483648) this.ptScreenNew.set(this.ptScreen.x, this.ptScreen.y, this.ptScreen.z + deltaZ); + else this.ptScreenNew.set(this.ptScreen.x + deltaX * f, this.ptScreen.y + deltaY * f, this.ptScreen.z); +this.tm.unTransformPoint(this.ptScreenNew, this.ptNew); +ptNew = this.ptNew; +var uc = this.getOperativeSymmetry(); +if (uc != null) { +ptNew.sub(ptCenter); +ptNew.add(this.ms.at[iatom]); +this.getModelkit(false).cmdAssignMoveAtoms(bsSelected, iatom, ptNew, null, true, !asAtoms); +}}if (!Float.isNaN(ptNew.x)) { +ptNew.sub(ptCenter); +this.setAtomCoordsRelative(ptNew, bsSelected); +}} else { +this.tm.rotateXYBy(deltaX, deltaY, bsSelected); +}}}this.refresh(2, ""); +this.movingSelected = false; +return (bsSelected == null ? 0 : bsSelected.cardinality()); +}, "~N,~N,~N,~N,~N,JU.BS,JU.P3,JU.P3,~B,~B,~N"); +Clazz.defineMethod(c$, "highlightBond", +function(index, closestAtomIndex, x, y){ +if (!this.hoverEnabled) return; +var bs = null; +if (index >= 0) { +var b = this.ms.bo[index]; +var i = b.atom2.i; +bs = JU.BSUtil.newAndSetBit(i); +bs.set(b.atom1.i); +}this.highlight(bs); +this.getModelkit(false); +this.setModelkitPropertySafely("screenxy", Clazz.newIntArray(-1, [x, y])); +this.setModelkitPropertySafely("bondindex", Integer.$valueOf(index)); +var text = this.setModelkitPropertySafely("hoverlabel", Integer.$valueOf(-2 - index)); +if (text != null) this.hoverOnPt(x, y, text, null, null); +this.refresh(3, "highlightBond"); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "highlight", +function(bs){ +this.atomHighlighted = (bs != null && bs.cardinality() == 1 ? bs.nextSetBit(0) : -1); +if (bs == null) { +this.setCursor(0); +} else { +this.shm.loadShape(8); +this.setCursor(12); +}this.setModelkitPropertySafely("highlight", bs); +this.setShapeProperty(8, "highlight", bs); +}, "JU.BS"); +Clazz.defineMethod(c$, "refreshMeasures", +function(andStopMinimization){ +this.setShapeProperty(6, "refresh", null); +this.setStatusMeasuring("refreshed", -3, "", 0); +if (andStopMinimization) this.stopMinimization(); +}, "~B"); +Clazz.defineMethod(c$, "functionXY", +function(functionName, nX, nY){ +var data = null; +if (functionName.indexOf("file:") == 0) data = this.getFileAsString3(functionName.substring(5), false, null); + else if (functionName.indexOf("data2d_") != 0) return this.sm.functionXY(functionName, nX, nY); +nX = Math.abs(nX); +nY = Math.abs(nY); +var fdata; +if (data == null) { +fdata = this.getDataObj(functionName, null, 2); +if (fdata != null) return fdata; +data = ""; +}fdata = Clazz.newFloatArray (nX, nY, 0); +var f = Clazz.newFloatArray (nX * nY, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, f); +for (var i = 0, n = 0; i < nX; i++) for (var j = 0; j < nY; j++) fdata[i][j] = f[n++]; + + +return fdata; +}, "~S,~N,~N"); +Clazz.defineMethod(c$, "functionXYZ", +function(functionName, nX, nY, nZ){ +var data = null; +if (functionName.indexOf("file:") == 0) data = this.getFileAsString3(functionName.substring(5), false, null); + else if (functionName.indexOf("data3d_") != 0) return this.sm.functionXYZ(functionName, nX, nY, nZ); +nX = Math.abs(nX); +nY = Math.abs(nY); +nZ = Math.abs(nZ); +var xyzdata; +if (data == null) { +xyzdata = this.getDataObj(functionName, null, 2); +if (xyzdata != null) return xyzdata; +data = ""; +}xyzdata = Clazz.newFloatArray (nX, nY, nZ, 0); +var f = Clazz.newFloatArray (nX * nY * nZ, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, f); +for (var i = 0, n = 0; i < nX; i++) for (var j = 0; j < nY; j++) for (var k = 0; k < nZ; k++) xyzdata[i][j][k] = f[n++]; + + + +return xyzdata; +}, "~S,~N,~N,~N"); +Clazz.overrideMethod(c$, "extractMolData", +function(what){ +if (what == null) { +var i = this.am.cmi; +if (i < 0 || this.ms.ac == 0) return null; +what = this.getModelNumberDotted(i); +}return this.getModelExtract(what, true, false, "V2000"); +}, "~S"); +Clazz.defineMethod(c$, "getNMRPredict", +function(type){ +type = type.toUpperCase(); +if (type.equals("H") || type.equals("1H") || type.equals("")) type = "H1"; + else if (type.equals("C") || type.equals("13C")) type = "C13"; +if (!type.equals("NONE")) { +if (!type.equals("C13") && !type.equals("H1")) return "Type must be H1 or C13"; +var molFile = this.getModelExtract("selected", true, false, "V2000"); +var pt = molFile.indexOf("\n"); +if (pt < 0) return null; +molFile = "Jmol " + JV.Viewer.version_date + molFile.substring(pt); +if (this.isApplet) { +this.showUrl(this.g.nmrUrlFormat + molFile); +return "opening " + this.g.nmrUrlFormat; +}}this.syncScript("true", "*", 0); +this.syncScript(type + "Simulate:", ".", 0); +return "sending request to JSpecView"; +}, "~S"); +Clazz.defineMethod(c$, "getHelp", +function(what){ +if (this.g.helpPath.indexOf("?") < 0) { +if (what.length > 0 && what.indexOf("?") != 0) what = "?search=" + JU.PT.rep(what, " ", "%20"); +what += (what.length == 0 ? "?ver=" : "&ver=") + JV.JC.majorVersion; +} else { +what = "&" + what; +}this.showUrl(this.g.helpPath + what); +}, "~S"); +Clazz.defineMethod(c$, "getChemicalInfo", +function(smiles, info, bsAtoms){ +info = info.toLowerCase(); +var type = '/'; +switch (";inchi;inchikey;stdinchi;stdinchikey;name;image;drawing;names;".indexOf(";" + info + ";")) { +case 0: +type = 'I'; +break; +case 6: +type = 'K'; +break; +case 15: +type = 'T'; +break; +case 24: +type = 'S'; +break; +case 36: +type = 'M'; +break; +case 41: +case 47: +type = '2'; +break; +case 55: +type = 'N'; +break; +} +var s = this.setLoadFormat(false, "_" + smiles, type, false); +if (type == '2') { +this.fm.loadImage(s, "\1" + smiles, false); +return s; +}if (type == '/') { +if (JU.PT.isOneOf(info, ";alc;cdxml;cerius;charmm;cif;cml;ctx;gjf;gromacs;hyperchem;jme;maestro;mol;mol2;sybyl2;mrv;pdb;sdf;sdf3000;sln;smiles;xyz")) s += "file?format=" + info; + else s += JU.PT.rep(info, " ", "%20"); +}s = this.getFileAsString4(s, -1, false, false, false, "file"); +if (type == 'M' && s.indexOf("\n") > 0) s = s.substring(0, s.indexOf("\n")); + else if (info.equals("jme")) s = this.getPropertyManager().fixJMEFormalCharges(bsAtoms, s); +return s; +}, "~S,~S,JU.BS"); +Clazz.defineMethod(c$, "addCommand", +function(command){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +if (command.startsWith("pause ") || command.equals("pause")) command = "resume"; +this.commandHistory.addCommand(JU.PT.replaceAllCharacters(command, "\r\n\t", " ")); +}, "~S"); +Clazz.defineMethod(c$, "pushState", +function(){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +this.commandHistory.pushState(this.getStateInfo()); +}); +Clazz.defineMethod(c$, "popState", +function(){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +var state = this.commandHistory.popState(); +if (state != null) this.evalStringQuiet(state); +}); +Clazz.defineMethod(c$, "removeCommand", +function(){ +return this.commandHistory.removeCommand(); +}); +Clazz.overrideMethod(c$, "getSetHistory", +function(howFarBack){ +return this.commandHistory.getSetHistory(howFarBack); +}, "~N"); +Clazz.defineMethod(c$, "historyFind", +function(cmd, dir){ +return this.commandHistory.find(cmd, dir); +}, "~S,~N"); +Clazz.defineMethod(c$, "setHistory", +function(fileName){ +this.commandHistory.getSetHistory(-2147483648); +this.commandHistory.addCommand(this.getFileAsString4(fileName, -1, false, false, true, null)); +}, "~S"); +Clazz.defineMethod(c$, "getOutputChannel", +function(localName, fullPath){ +return this.getOutputManager().getOutputChannel(localName, fullPath); +}, "~S,~A"); +Clazz.overrideMethod(c$, "writeTextFile", +function(fileName, data){ +return this.writeFile(fileName, data, "txt"); +}, "~S,~S"); +Clazz.defineMethod(c$, "writeFile", +function(fileName, data, type){ +var params = new java.util.Hashtable(); +params.put("fileName", fileName); +params.put("type", type); +params.put(((typeof(data)=='string') ? "text" : "bytes"), data); +return this.outputToFile(params); +}, "~S,~O,~S"); +Clazz.overrideMethod(c$, "clipImageOrPasteText", +function(text){ +if (!this.haveAccess(JV.Viewer.ACCESS.ALL)) return "no"; +return this.getOutputManager().clipImageOrPasteText(text); +}, "~S"); +Clazz.overrideMethod(c$, "getClipboardText", +function(){ +if (!this.haveAccess(JV.Viewer.ACCESS.ALL)) return "no"; +try { +return this.getOutputManager().getClipboardText(); +} catch (er) { +if (Clazz.exceptionOf(er, Error)){ +return J.i18n.GT.$("clipboard is not accessible -- use signed applet"); +} else { +throw er; +} +} +}); +Clazz.defineMethod(c$, "processWriteOrCapture", +function(params){ +return this.getOutputManager().processWriteOrCapture(params); +}, "java.util.Map"); +Clazz.defineMethod(c$, "createZip", +function(fileName, type, params){ +var state = this.getStateInfo(); +var data = params.get("data"); +if (fileName != null) params.put("fileName", fileName); +params.put("type", type); +params.put("text", state); +if (Clazz.instanceOf(data,Array)) params.put("scripts", data); + else if (Clazz.instanceOf(data,"JU.Lst")) params.put("imageData", data); +return this.getOutputManager().outputToFile(params); +}, "~S,~S,java.util.Map"); +Clazz.overrideMethod(c$, "outputToFile", +function(params){ +return this.getOutputManager().outputToFile(params); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setSyncTarget", +function(mode, TF){ +switch (mode) { +case 0: +this.sm.syncingMouse = TF; +break; +case 1: +this.sm.syncingScripts = TF; +break; +case 2: +this.sm.syncSend(TF ? "GET_GRAPHICS" : "SET_GRAPHICS_OFF", "*", 0); +if (Float.isNaN(this.tm.stereoDegrees)) this.setFloatProperty("stereoDegrees", -5); +if (TF) { +this.setBooleanProperty("_syncMouse", false); +this.setBooleanProperty("_syncScript", false); +}return; +} +if (!this.sm.syncingScripts && !this.sm.syncingMouse) this.setSync(); +}, "~N,~B"); +Clazz.overrideMethod(c$, "syncScript", +function(script, applet, port){ +this.sm.syncScript(script, applet, port); +}, "~S,~S,~N"); +Clazz.overrideMethod(c$, "getModelIndexFromId", +function(id){ +return this.ms.getModelIndexFromId(id); +}, "~S"); +Clazz.defineMethod(c$, "setSyncDriver", +function(mode){ +this.sm.setSyncDriver(mode); +}, "~N"); +Clazz.defineMethod(c$, "setProteinType", +function(type, bs){ +this.ms.setProteinType(bs == null ? this.bsA() : bs, type); +}, "J.c.STR,JU.BS"); +Clazz.defineMethod(c$, "getVanderwaalsMar", +function(i){ +return (this.defaultVdw === J.c.VDW.USER ? this.userVdwMars[i] : JU.Elements.getVanderwaalsMar(i, this.defaultVdw)); +}, "~N"); +Clazz.defineMethod(c$, "getVanderwaalsMarType", +function(atomicAndIsotopeNumber, type){ +if (type == null) type = this.defaultVdw; + else switch (type) { +case J.c.VDW.AUTO: +case J.c.VDW.AUTO_BABEL: +case J.c.VDW.AUTO_JMOL: +case J.c.VDW.AUTO_RASMOL: +if (this.defaultVdw !== J.c.VDW.AUTO) type = this.defaultVdw; +break; +default: +break; +} +if (type === J.c.VDW.USER && this.bsUserVdws == null) type = J.c.VDW.JMOL; +return (type === J.c.VDW.USER ? this.userVdwMars[atomicAndIsotopeNumber & 127] : JU.Elements.getVanderwaalsMar(atomicAndIsotopeNumber, type)); +}, "~N,J.c.VDW"); +Clazz.defineMethod(c$, "setVdwStr", +function(name){ +var type = J.c.VDW.getVdwType(name); +if (type == null) type = J.c.VDW.AUTO; +switch (type) { +case J.c.VDW.JMOL: +case J.c.VDW.BABEL: +case J.c.VDW.RASMOL: +case J.c.VDW.AUTO: +case J.c.VDW.USER: +break; +default: +type = J.c.VDW.JMOL; +} +if (type !== this.defaultVdw && type === J.c.VDW.USER && this.bsUserVdws == null) this.setUserVdw(this.defaultVdw); +this.defaultVdw = type; +this.g.setO("defaultVDW", type.getVdwLabel()); +}, "~S"); +Clazz.defineMethod(c$, "setUserVdw", +function(mode){ +this.userVdwMars = Clazz.newIntArray (JU.Elements.elementNumberMax, 0); +this.userVdws = Clazz.newFloatArray (JU.Elements.elementNumberMax, 0); +this.bsUserVdws = new JU.BS(); +if (mode === J.c.VDW.USER) mode = J.c.VDW.JMOL; +for (var i = 1; i < JU.Elements.elementNumberMax; i++) { +this.userVdwMars[i] = JU.Elements.getVanderwaalsMar(i, mode); +this.userVdws[i] = this.userVdwMars[i] / 1000; +} +}, "J.c.VDW"); +Clazz.defineMethod(c$, "getDefaultVdwNameOrData", +function(mode, type, bs){ +switch (mode) { +case -2147483648: +return this.defaultVdw.getVdwLabel(); +case 2147483647: +if ((bs = this.bsUserVdws) == null) return ""; +type = J.c.VDW.USER; +break; +} +if (type == null || type === J.c.VDW.AUTO) type = this.defaultVdw; +if (type === J.c.VDW.USER && this.bsUserVdws == null) this.setUserVdw(this.defaultVdw); +return this.getDataManager().getDefaultVdwNameOrData(type, bs); +}, "~N,J.c.VDW,JU.BS"); +Clazz.defineMethod(c$, "deleteAtoms", +function(bsAtoms, fullModels){ +var atomIndex = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +if (atomIndex < 0) return 0; +this.clearModelDependentObjects(); +var a = this.ms.at[atomIndex]; +if (a == null) return 0; +var mi = a.mi; +if (fullModels) { +return this.deleteModels(mi, bsAtoms); +}this.sm.setStatusStructureModified(atomIndex, a.mi, 4, "deleting atoms " + bsAtoms, bsAtoms.cardinality(), bsAtoms); +this.ms.deleteAtoms(bsAtoms); +var n = this.slm.deleteAtoms(bsAtoms); +this.setTainted(true); +this.sm.setStatusStructureModified(atomIndex, mi, -4, "OK", n, bsAtoms); +return n; +}, "JU.BS,~B"); +Clazz.defineMethod(c$, "deleteModels", +function(modelIndex, bsAtoms){ +var bsModels = (bsAtoms == null ? JU.BSUtil.newAndSetBit(modelIndex) : this.ms.getModelBS(bsAtoms, false)); +this.clearModelDependentObjects(); +bsAtoms = this.getModelUndeletedAtomsBitSetBs(bsModels); +var n = bsAtoms.cardinality(); +var currentModel = this.am.cmi; +this.setCurrentModelIndexClear(0, false); +this.am.setAnimationOn(false); +var bsD0 = JU.BSUtil.copy(this.slm.bsDeleted); +var bsDeleted = this.ms.deleteModels(bsModels); +if (bsDeleted == null) { +this.setCurrentModelIndexClear(currentModel, false); +return 0; +}this.sm.setStatusStructureModified(-1, modelIndex, 5, "deleting model " + this.getModelNumberDotted(modelIndex), n, bsAtoms); +this.slm.processDeletedModelAtoms(bsDeleted); +if (this.eval != null) this.eval.deleteAtomsInVariables(bsDeleted); +this.setAnimationRange(0, 0); +this.clearRepaintManager(-1); +this.am.clear(); +this.am.initializePointers(1); +this.setCurrentModelIndexClear(this.ms.mc > 1 ? -1 : 0, this.ms.mc > 1); +this.hoverAtomIndex = -1; +this.setFileLoadStatus(J.c.FIL.DELETED, null, null, null, null, null); +this.refreshMeasures(true); +if (bsD0 != null) bsDeleted.andNot(bsD0); +n = JU.BSUtil.cardinalityOf(bsDeleted); +this.sm.setStatusStructureModified(-1, modelIndex, -5, "OK", n, bsDeleted); +return n; +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "deleteBonds", +function(bsDeleted){ +var modelIndex = this.ms.bo[bsDeleted.nextSetBit(0)].atom1.mi; +var n = bsDeleted.cardinality(); +if (n == 0) return; +this.sm.setStatusStructureModified(-1, modelIndex, 2, "delete bonds " + JU.Escape.eBond(bsDeleted), bsDeleted.cardinality(), bsDeleted); +this.ms.deleteBonds(bsDeleted, false); +this.sm.setStatusStructureModified(-1, modelIndex, -2, "OK", bsDeleted.cardinality(), bsDeleted); +}, "JU.BS"); +Clazz.defineMethod(c$, "deleteModelAtoms", +function(modelIndex, firstAtomIndex, nAtoms, bsModelAtoms){ +var n = bsModelAtoms.cardinality(); +if (n == 0) return; +this.sm.setStatusStructureModified(-1, modelIndex, 7, "delete atoms " + JU.Escape.eBS(bsModelAtoms), n, bsModelAtoms); +JU.BSUtil.deleteBits(this.tm.bsFrameOffsets, bsModelAtoms); +this.getDataManager().deleteModelAtoms(firstAtomIndex, nAtoms, bsModelAtoms); +this.sm.setStatusStructureModified(-1, modelIndex, -7, "OK", n, bsModelAtoms); +}, "~N,~N,~N,JU.BS"); +Clazz.defineMethod(c$, "getQuaternionFrame", +function(){ +return this.g.quaternionFrame.charAt(this.g.quaternionFrame.length == 2 ? 1 : 0); +}); +Clazz.defineMethod(c$, "loadImageData", +function(image, nameOrError, echoName, sco){ +var sc = sco; +if (image == null && nameOrError != null) this.scriptEcho(nameOrError); +if (echoName == null) { +this.setBackgroundImage((image == null ? null : nameOrError), image); +} else if (echoName.startsWith("\1")) { +this.sm.showImage(echoName, image); +} else if (echoName.startsWith("\0")) { +if (image != null) { +this.setWindowDimensions( Clazz.newFloatArray(-1, [this.apiPlatform.getImageWidth(image), this.apiPlatform.getImageHeight(image)])); +}} else { +this.shm.loadShape(31); +this.setShapeProperty(31, "text", nameOrError); +if (image != null) this.setShapeProperty(31, "image", image); +}if (JV.Viewer.isJS && sc != null) { +sc.mustResumeEval = true; +this.eval.resumeEval(sc); +}return false; +}, "~O,~S,~S,~O"); +Clazz.defineMethod(c$, "cd", +function(dir){ +if (dir == null) { +dir = "."; +} else if (dir.length == 0) { +this.setStringProperty("defaultDirectory", ""); +dir = "."; +}dir = this.fm.getDefaultDirectory(dir + (dir.equals("=") ? "" : dir.endsWith("/") ? "X.spt" : "/X.spt")); +if (dir.length > 0) this.setStringProperty("defaultDirectory", dir); +var path = this.fm.getFilePath(dir + "/", true, false); +if (path.startsWith("file:/")) JV.FileManager.setLocalPath(this, dir, false); +return dir; +}, "~S"); +Clazz.defineMethod(c$, "setErrorMessage", +function(errMsg, errMsgUntranslated){ +this.errorMessageUntranslated = errMsgUntranslated; +if (errMsg != null) this.eval.stopScriptThreads(); +return (this.errorMessage = errMsg); +}, "~S,~S"); +Clazz.overrideMethod(c$, "getErrorMessage", +function(){ +return this.errorMessage; +}); +Clazz.overrideMethod(c$, "getErrorMessageUn", +function(){ +return this.errorMessageUntranslated == null ? this.errorMessage : this.errorMessageUntranslated; +}); +Clazz.defineMethod(c$, "setShapeErrorState", +function(shapeID, state){ +this.currentShapeID = shapeID; +this.currentShapeState = state; +}, "~N,~S"); +Clazz.defineMethod(c$, "getShapeErrorState", +function(){ +if (this.currentShapeID < 0) return ""; +this.shm.releaseShape(this.currentShapeID); +this.clearRepaintManager(this.currentShapeID); +return JV.JC.getShapeClassName(this.currentShapeID, false) + " " + this.currentShapeState; +}); +Clazz.defineMethod(c$, "handleError", +function(er, doClear){ +try { +if (doClear) this.zapMsg("" + er); +this.undoMoveAction(4165, -2); +if (JU.Logger.getLogLevel() == 0) JU.Logger.setLogLevel(4); +this.setCursor(0); +this.setBooleanPropertyTok("refreshing", 603979900, true); +this.fm.setPathForAllFiles(""); +JU.Logger.error("vwr handling error condition: " + er + " "); +this.notifyError("Error", "doClear=" + doClear + "; " + er, "" + er); +} catch (e1) { +try { +JU.Logger.error("Could not notify error " + er + ": due to " + e1); +} catch (er2) { +} +} +}, "Throwable,~B"); +Clazz.defineMethod(c$, "getFunctions", +function(isStatic){ +return (isStatic ? JV.Viewer.staticFunctions : this.localFunctions); +}, "~B"); +Clazz.defineMethod(c$, "removeFunction", +function(name){ +name = name.toLowerCase(); +var $function = this.getFunction(name); +if ($function == null) return; +JV.Viewer.staticFunctions.remove(name); +this.localFunctions.remove(name); +}, "~S"); +Clazz.defineMethod(c$, "getFunction", +function(name){ +if (name == null) return null; +var $function = (JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).get(name); +return ($function == null || $function.geTokens() == null ? null : $function); +}, "~S"); +c$.isStaticFunction = Clazz.defineMethod(c$, "isStaticFunction", +function(name){ +return name.startsWith("static_"); +}, "~S"); +Clazz.defineMethod(c$, "isFunction", +function(name){ +return (JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).containsKey(name); +}, "~S"); +Clazz.defineMethod(c$, "clearFunctions", +function(){ +JV.Viewer.staticFunctions.clear(); +this.localFunctions.clear(); +}); +Clazz.defineMethod(c$, "addFunction", +function($function){ +var name = $function.getName(); +(JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).put(name, $function); +}, "J.api.JmolScriptFunction"); +Clazz.defineMethod(c$, "getFunctionCalls", +function(selectedFunction){ +return this.getStateCreator().getFunctionCalls(selectedFunction); +}, "~S"); +Clazz.defineMethod(c$, "checkPrivateKey", +function(privateKey){ +return privateKey == this.privateKey; +}, "~N"); +Clazz.defineMethod(c$, "bindAction", +function(desc, name){ +if (this.haveDisplay) this.acm.bind(desc, name); +}, "~S,~S"); +Clazz.defineMethod(c$, "unBindAction", +function(desc, name){ +if (this.haveDisplay) this.acm.unbindAction(desc, name); +}, "~S,~S"); +Clazz.defineMethod(c$, "calculateStruts", +function(bs1, bs2){ +return this.ms.calculateStruts(bs1 == null ? this.bsA() : bs1, bs2 == null ? this.bsA() : bs2); +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "getPreserveState", +function(){ +return (this.g.preserveState && this.scm != null); +}); +Clazz.defineMethod(c$, "isKiosk", +function(){ +return this.$isKiosk; +}); +Clazz.defineMethod(c$, "hasFocus", +function(){ +return (this.haveDisplay && (this.$isKiosk || this.apiPlatform.hasFocus(this.display))); +}); +Clazz.defineMethod(c$, "setFocus", +function(){ +if (this.haveDisplay && !this.apiPlatform.hasFocus(this.display)) this.apiPlatform.requestFocusInWindow(this.display); +}); +Clazz.defineMethod(c$, "stopMinimization", +function(){ +if (this.minimizer != null) { +this.minimizer.setProperty("stop", null); +}}); +Clazz.defineMethod(c$, "clearMinimization", +function(){ +if (this.minimizer != null) this.minimizer.setProperty("clear", null); +}); +Clazz.defineMethod(c$, "getMinimizationInfo", +function(){ +return (this.minimizer == null ? "" : this.minimizer.getProperty("log", 0)); +}); +Clazz.defineMethod(c$, "checkMinimization", +function(){ +this.refreshMeasures(true); +if (!this.g.monitorEnergy) return; +try { +this.minimize(null, 0, 0, this.getFrameAtoms(), null, null, 0, 1); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.echoMessage(this.getP("_minimizationForceField") + " Energy = " + this.getP("_minimizationEnergy")); +}); +Clazz.defineMethod(c$, "minimize", +function(eval, steps, crit, bsSelected, bsFixed, bsInFrame, rangeFixed, flags){ +var isSelectionExplicit = (bsSelected != null); +if (isSelectionExplicit) { +flags |= 2; +}var addHydrogen = (flags & 16) != 0; +var isModelkitCmd = (flags & 256) != 0; +var isSilent = (flags & 1) != 0; +var isQuick = (flags & 8) != 0; +var groupSelected = (flags & 64) != 0; +var selectedOnly = groupSelected || (flags & 32) != 0; +var isFixExplicit = (bsFixed != null); +if (this.isModelKitOpen()) this.setModelkitPropertySafely("constraint", null); +if (bsInFrame == null) bsInFrame = this.getFrameAtoms(); +if (!isQuick && !addHydrogen && isSelectionExplicit && !isFixExplicit && !selectedOnly) { +var bs = JU.BSUtil.copy(bsInFrame); +bsFixed = JU.BSUtil.copy(bs); +bsFixed.andNot(bsSelected); +bsSelected = bs; +isFixExplicit = true; +}if (!isSelectionExplicit) { +bsSelected = this.getThisModelAtoms(); +if (selectedOnly) bsSelected.and(this.bsA()); +} else if (!isQuick) { +bsSelected.and(bsInFrame); +}if (bsSelected.isEmpty()) return; +var bsBasis = (isModelkitCmd || !selectedOnly ? JU.BSUtil.copy(this.ms.am[this.ms.at[bsSelected.nextSetBit(0)].mi].bsAsymmetricUnit) : null); +if (isModelkitCmd && bsBasis == null) { +this.scriptStatusMsg("MODELKIT MINIMIZE is only applicable to crystal structures.", "minimization: not a crystal structure"); +return; +}try { +if (isModelkitCmd) { +this.getModelkit(false).cmdMinimize(eval, bsBasis, steps, crit, rangeFixed, flags); +return; +}var ff = (bsBasis == null ? this.g.forceField : "UFF"); +this.getModelForAtomIndex(bsSelected.nextSetBit(0)).auxiliaryInfo.put("dimension", "3D"); +if (isQuick) { +bsInFrame = bsSelected; +}var bsMotionFixed = JU.BSUtil.copy(isFixExplicit ? bsFixed : this.slm.getMotionFixedAtoms()); +var haveFixed = !bsMotionFixed.isEmpty(); +if (haveFixed) bsSelected.andNot(bsMotionFixed); +var bsNearby = (bsBasis != null && isModelkitCmd ? this.getThisModelAtoms() : selectedOnly || !haveFixed ? new JU.BS() : this.ms.getAtomsWithinRadius((rangeFixed <= 0 ? 5.0 : rangeFixed), bsSelected, true, null, null)); +bsNearby.andNot(bsSelected); +if (haveFixed) { +bsMotionFixed.and(bsNearby); +} else { +bsMotionFixed = bsNearby; +}bsMotionFixed.and(bsInFrame); +flags |= ((haveFixed ? 4 : 0) | (this.getBooleanProperty("minimizationSilent") ? 1 : 0)); +if (isQuick && this.getBoolean(603979962)) return; +if (isQuick) { +{ +try { +if (!isSilent) JU.Logger.info("Minimizing " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).minimize(steps, crit, bsSelected, bsMotionFixed, null, flags, "UFF"); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +JU.Logger.error("Minimization error: " + e.toString()); +e.printStackTrace(); +} else { +throw e; +} +} +}}if (addHydrogen) { +var bsH = this.addHydrogens(bsSelected, flags); +if (!isQuick) bsSelected.or(bsH); +}var n = bsSelected.cardinality(); +if (ff.equals("MMFF") && n > this.g.minimizationMaxAtoms) { +this.scriptStatusMsg("Too many atoms for minimization (" + n + ">" + this.g.minimizationMaxAtoms + "); use 'set minimizationMaxAtoms' to increase this limit", "minimization: too many atoms"); +return; +}if (groupSelected) { +bsMotionFixed.or(this.ms.getConnectingAtoms(bsSelected, bsMotionFixed)); +bsSelected.andNot(bsMotionFixed); +}if (!isSilent) JU.Logger.info("Minimizing " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).minimize(steps, crit, bsSelected, bsMotionFixed, bsBasis, flags, (isQuick ? "MMFF" : ff)); +if (isQuick) { +this.g.forceField = "MMFF"; +this.setHydrogens(bsSelected); +var ffUsed = this.getMinimizer(false).getForceFieldUsed(); +if (ffUsed != null) this.showString("Minimized by Jmol using " + ffUsed, false); +}} catch (e$$) { +if (Clazz.exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +if (eval != null) eval.loadFileResourceAsync(e.getFileName()); +} +} else if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +JU.Logger.error("Minimization error: " + e.toString()); +e.printStackTrace(); +} +} else { +throw e$$; +} +} +}, "J.api.JmolScriptEvaluator,~N,~N,JU.BS,JU.BS,JU.BS,~N,~N"); +Clazz.defineMethod(c$, "setHydrogens", +function(bsAtoms){ +var nTotal = Clazz.newIntArray (1, 0); +var hatoms = this.ms.calculateHydrogens(bsAtoms, nTotal, null, 2056); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var pts = hatoms[i]; +if (pts == null || pts.length == 0) continue; +var a = this.ms.at[i]; +var b = a.bonds; +for (var j = 0, pt = 0, n = a.getBondCount(); j < n; j++) { +var h = b[j].getOtherAtom(a); +if (h.getAtomicAndIsotopeNumber() == 1) { +var p = pts[pt++]; +if (p != null) this.ms.setAtomCoord(h.i, p.x, p.y, p.z); +}} +} +this.ms.resetMolecules(); +}, "JU.BS"); +Clazz.defineMethod(c$, "setMotionFixedAtoms", +function(bs){ +this.slm.setMotionFixedAtoms(bs); +}, "JU.BS"); +Clazz.defineMethod(c$, "setMotionFixed", +function(bs){ +this.slm.setMotionFixedAtoms(bs); +}, "JU.BS"); +Clazz.defineMethod(c$, "getMotionFixedAtoms", +function(sym, bsFixed){ +if (this.am.cmi < 0) return new JU.BS(); +if (bsFixed == null) bsFixed = new JU.BS(); +bsFixed.or(this.slm.getMotionFixedAtoms()); +bsFixed.and(this.getThisModelAtoms()); +if (sym == null) sym = this.getOperativeSymmetry(); +if (sym != null && this.getModelkit(false) != null) this.modelkit.addLockedAtoms(sym, bsFixed); +return bsFixed; +}, "J.api.SymmetryInterface,JU.BS"); +Clazz.defineMethod(c$, "getAtomicPropertyState", +function(commands, type, bs, name, data){ +this.getStateCreator().getAtomicPropertyStateBuffer(commands, type, bs, name, data); +}, "JU.SB,~N,JU.BS,~S,~A"); +Clazz.defineMethod(c$, "getCenterAndPoints", +function(atomSets, addCenter){ +return this.ms.getCenterAndPoints(atomSets, addCenter); +}, "JU.Lst,~B"); +Clazz.defineMethod(c$, "writeFileData", +function(fileName, type, modelIndex, parameters){ +return this.getOutputManager().writeFileData(fileName, type, modelIndex, parameters); +}, "~S,~S,~N,~A"); +Clazz.defineMethod(c$, "getPdbData", +function(modelIndex, type, bsAtoms, parameters, oc, getStructure){ +return this.getPropertyManager().getPdbData(modelIndex, type, bsAtoms == null ? this.bsA() : bsAtoms, parameters, oc, getStructure); +}, "~N,~S,JU.BS,~A,JU.OC,~B"); +Clazz.defineMethod(c$, "getGroupsWithin", +function(nResidues, bs){ +return this.ms.getGroupsWithin(nResidues, bs); +}, "~N,JU.BS"); +Clazz.defineMethod(c$, "setShapeSize", +function(shapeID, madOrMad10, bsSelected){ +if (bsSelected == null) bsSelected = this.bsA(); +this.shm.setShapeSizeBs(shapeID, madOrMad10, null, bsSelected); +}, "~N,~N,JU.BS"); +Clazz.defineMethod(c$, "setShapeProperty", +function(shapeID, propertyName, value){ +if (shapeID >= 0) this.shm.setShapePropertyBs(shapeID, propertyName, value, null); +}, "~N,~S,~O"); +Clazz.defineMethod(c$, "getShapeProperty", +function(shapeType, propertyName){ +return this.shm.getShapePropertyIndex(shapeType, propertyName, -2147483648); +}, "~N,~S"); +Clazz.defineMethod(c$, "getShapePropertyAsInt", +function(shapeID, propertyName){ +var value = this.getShapeProperty(shapeID, propertyName); +return value == null || !(Clazz.instanceOf(value, Integer)) ? -2147483648 : (value).intValue(); +}, "~N,~S"); +Clazz.defineMethod(c$, "setModelVisibility", +function(){ +if (this.shm != null) this.shm.setModelVisibility(); +}); +Clazz.defineMethod(c$, "resetShapes", +function(andCreateNew){ +this.shm.resetShapes(!andCreateNew); +if (andCreateNew) { +this.shm.loadDefaultShapes(this.ms); +this.clearRepaintManager(-1); +}}, "~B"); +Clazz.defineMethod(c$, "setParallel", +function(TF){ +return (this.$isParallel = this.g.multiProcessor && TF); +}, "~B"); +Clazz.defineMethod(c$, "isParallel", +function(){ +return this.g.multiProcessor && this.$isParallel; +}); +Clazz.defineMethod(c$, "undoMoveAction", +function(action, n){ +return (this.g.preserveState ? this.getStateCreator().undoMoveAction(action, n) : 0); +}, "~N,~N"); +Clazz.defineMethod(c$, "undoMoveActionClear", +function(taintedAtom, type, clearRedo){ +if (this.g.preserveState && this.getOperativeSymmetry() == null) this.getStateCreator().undoMoveActionClear(taintedAtom, type, clearRedo); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "moveAtomWithHydrogens", +function(atomIndex, deltaX, deltaY, deltaZ, ptNew, bsAtoms){ +this.stopMinimization(); +var modelkitNoAddH = (ptNew != null && deltaX == 0); +var atom = this.ms.at[atomIndex]; +if (bsAtoms == null) { +bsAtoms = JU.BSUtil.newAndSetBit(atomIndex); +var addH = (this.getOperativeSymmetry() == null || this.isModelKitOpen() && !this.modelkit.hasConstraint(atomIndex, true, false)); +if (addH && !modelkitNoAddH) this.ms.addConnectedHAtoms(atom, bsAtoms); +}return this.moveSelected(deltaX, deltaY, deltaZ, -2147483648, -2147483648, bsAtoms, atom, ptNew, true, true, 0); +}, "~N,~N,~N,~N,JU.P3,JU.BS"); +Clazz.defineMethod(c$, "isModelPDB", +function(i){ +return this.ms.am[i].isBioModel; +}, "~N"); +Clazz.overrideMethod(c$, "deleteMeasurement", +function(i){ +this.setShapeProperty(6, "delete", Integer.$valueOf(i)); +}, "~N"); +Clazz.overrideMethod(c$, "getSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 16 | (bs == null && JU.Logger.debugging ? 131072 : 0), null); +}, "JU.BS"); +Clazz.overrideMethod(c$, "getOpenSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 5 | (bs == null && JU.Logger.debugging ? 131072 : 0), "/open///"); +}, "JU.BS"); +Clazz.defineMethod(c$, "getBioSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 3145728 | 5242880 | 17825792 | (JU.Logger.debugging ? 131072 : 0), null); +}, "JU.BS"); +Clazz.defineMethod(c$, "getSmilesOpt", +function(bsSelected, index1, index2, flags, options){ +var bioComment = ((flags & 17825792) == 17825792 ? JV.Viewer.getJmolVersion() + " " + this.getModelName(this.am.cmi) : options); +var atoms = this.ms.at; +if (bsSelected == null) { +if (index1 < 0 || index2 < 0) { +bsSelected = this.bsA(); +} else { +if ((flags & 1048576) == 1048576) { +if (index1 > index2) { +var i = index1; +index1 = index2; +index2 = i; +}index1 = atoms[index1].group.firstAtomIndex; +index2 = atoms[index2].group.lastAtomIndex; +}bsSelected = new JU.BS(); +bsSelected.setBits(index1, index2 + 1); +}}flags |= (this.isModel2D(bsSelected) ? 134217728 : 0); +var sm = this.getSmilesMatcher(); +if (JV.JC.isSmilesCanonical(options)) { +var smiles = sm.getSmiles(atoms, this.ms.ac, bsSelected, "/noAromatic/", flags); +return this.getChemicalInfo(smiles, "smiles", null).trim(); +}return sm.getSmiles(atoms, this.ms.ac, bsSelected, bioComment, flags); +}, "JU.BS,~N,~N,~N,~S"); +Clazz.defineMethod(c$, "isModel2D", +function(bs){ +var m = this.getModelForAtomIndex(bs.nextSetBit(0)); +return (m != null && "2D".equals(m.auxiliaryInfo.get("dimension"))); +}, "JU.BS"); +Clazz.defineMethod(c$, "alert", +function(msg){ +this.prompt(msg, null, null, true); +}, "~S"); +Clazz.defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +return (this.$isKiosk ? "null" : this.apiPlatform.prompt(label, data, list, asButtons)); +}, "~S,~S,~A,~B"); +Clazz.defineMethod(c$, "dialogAsk", +function(type, fileName, params){ +{ +return prompt(type, fileName); +}}, "~S,~S,java.util.Map"); +Clazz.defineMethod(c$, "initializeExporter", +function(params){ +var isJS = params.get("type").equals("JS"); +if (isJS) { +if (this.jsExporter3D != null) { +this.jsExporter3D.initializeOutput(this, this.privateKey, params); +return this.jsExporter3D; +}} else { +var fileName = params.get("fileName"); +var fullPath = params.get("fullPath"); +var out = this.getOutputChannel(fileName, fullPath); +if (out == null) return null; +params.put("outputChannel", out); +}var export3D = J.api.Interface.getOption("export.Export3D", this, "export"); +if (export3D == null) return null; +var exporter = export3D.initializeExporter(this, this.privateKey, this.gdata, params); +if (isJS && exporter != null) this.jsExporter3D = export3D; +return (exporter == null ? null : export3D); +}, "java.util.Map"); +Clazz.defineMethod(c$, "getMouseEnabled", +function(){ +return this.refreshing && !this.creatingImage; +}); +Clazz.overrideMethod(c$, "calcAtomsMinMax", +function(bs, boxInfo){ +this.ms.calcAtomsMinMax(bs, boxInfo); +}, "JU.BS,JU.BoxInfo"); +Clazz.defineMethod(c$, "getObjectMap", +function(map, c){ +switch ((c).charCodeAt(0)) { +case 123: +if (this.getScriptManager() != null) { +var m = map; +if (this.definedAtomSets != null) m.putAll(this.definedAtomSets); +JS.T.getTokensType(m, 2097152); +}return; +case 36: +case 48: +this.shm.getObjectMap(map, c == '$'); +return; +} +}, "java.util.Map,~S"); +Clazz.defineMethod(c$, "setPicked", +function(atomIndex, andReset){ +var pickedSet = null; +var pickedList = null; +if (atomIndex >= 0) { +if (andReset) this.setPicked(-1, false); +this.g.setI("_atompicked", atomIndex); +pickedSet = this.g.getParam("picked", true); +pickedList = this.g.getParam("pickedList", true); +}if (pickedSet == null || pickedSet.tok != 10) { +pickedSet = JS.SV.newV(10, new JU.BS()); +pickedList = JS.SV.getVariableList( new JU.Lst()); +this.g.setUserVariable("picked", pickedSet); +this.g.setUserVariable("pickedList", pickedList); +}if (atomIndex < 0) return; +JS.SV.getBitSet(pickedSet, false).set(atomIndex); +var p = pickedList.pushPop(null, null); +if (p.tok == 10) pickedList.pushPop(null, p); +if (p.tok != 10 || !(p.value).get(atomIndex)) pickedList.pushPop(null, JS.SV.newV(10, JU.BSUtil.newAndSetBit(atomIndex))); +}, "~N,~B"); +Clazz.overrideMethod(c$, "runScript", +function(script){ +return "" + this.evaluateExpression( Clazz.newArray(-1, [ Clazz.newArray(-1, [JS.T.tokenScript, JS.T.tokenLeftParen, JS.SV.newS(script), JS.T.tokenRightParen])])); +}, "~S"); +Clazz.overrideMethod(c$, "runScriptCautiously", +function(script){ +var outputBuffer = new JU.SB(); +try { +if (this.getScriptManager() == null) return null; +this.eval.runScriptBuffer(script, outputBuffer, false); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return this.eval.getErrorMessage(); +} else { +throw e; +} +} +return outputBuffer.toString(); +}, "~S"); +Clazz.defineMethod(c$, "setFrameDelayMs", +function(millis){ +this.ms.setFrameDelayMs(millis, this.getVisibleFramesBitSet()); +}, "~N"); +Clazz.defineMethod(c$, "getBaseModelBitSet", +function(){ +return this.ms.getModelAtomBitSetIncludingDeleted(this.getJDXBaseModelIndex(this.am.cmi), true); +}); +Clazz.defineMethod(c$, "clearTimeouts", +function(){ +if (this.timeouts != null) J.thread.TimeoutThread.clear(this.timeouts); +}); +Clazz.defineMethod(c$, "setTimeout", +function(name, mSec, script){ +if (!this.haveDisplay || this.headless || this.autoExit) return; +if (name == null) { +this.clearTimeouts(); +return; +}if (this.timeouts == null) { +this.timeouts = new java.util.Hashtable(); +}J.thread.TimeoutThread.setTimeout(this, this.timeouts, name, mSec, script); +}, "~S,~N,~S"); +Clazz.defineMethod(c$, "triggerTimeout", +function(name){ +if (!this.haveDisplay || this.timeouts == null) return; +J.thread.TimeoutThread.trigger(this.timeouts, name); +}, "~S"); +Clazz.defineMethod(c$, "clearTimeout", +function(name){ +this.setTimeout(name, 0, null); +}, "~S"); +Clazz.defineMethod(c$, "showTimeout", +function(name){ +return (this.haveDisplay ? J.thread.TimeoutThread.showTimeout(this.timeouts, name) : ""); +}, "~S"); +Clazz.defineMethod(c$, "getOrCalcPartialCharges", +function(bsSelected, bsIgnore){ +if (bsSelected == null) bsSelected = this.bsA(); +bsSelected = JU.BSUtil.copy(bsSelected); +JU.BSUtil.andNot(bsSelected, bsIgnore); +JU.BSUtil.andNot(bsSelected, this.ms.bsPartialCharges); +if (!bsSelected.isEmpty()) this.calculatePartialCharges(bsSelected); +return this.ms.getPartialCharges(); +}, "JU.BS,JU.BS"); +Clazz.defineMethod(c$, "calculatePartialCharges", +function(bsSelected){ +if (bsSelected == null || bsSelected.isEmpty()) bsSelected = this.getFrameAtoms(); +if (bsSelected.isEmpty()) return; +JU.Logger.info("Calculating MMFF94 partial charges for " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).calculatePartialCharges(this.ms, bsSelected, null); +}, "JU.BS"); +Clazz.defineMethod(c$, "setCurrentModelID", +function(id){ +var modelIndex = this.am.cmi; +if (modelIndex >= 0) this.ms.setInfo(modelIndex, "modelID", id); +}, "~S"); +Clazz.defineMethod(c$, "cacheClear", +function(){ +this.fm.cacheClear(); +this.ligandModelSet = null; +this.ligandModels = null; +this.ms.clearCache(); +this.cm.ce.clearCache(); +}); +Clazz.defineMethod(c$, "cachePut", +function(key, data){ +JU.Logger.info("Viewer cachePut " + key); +this.fm.cachePut(key, data); +}, "~S,~O"); +Clazz.defineMethod(c$, "cacheFileByName", +function(fileName, isAdd){ +if (fileName == null) { +this.cacheClear(); +return -1; +}return this.fm.cacheFileByNameAdd(fileName, isAdd); +}, "~S,~B"); +Clazz.defineMethod(c$, "clearThreads", +function(){ +if (this.eval != null) this.eval.stopScriptThreads(); +this.stopMinimization(); +this.tm.clearThreads(); +this.setAnimationOn(false); +}); +Clazz.defineMethod(c$, "getEvalContextAndHoldQueue", +function(eval){ +if (eval == null || !(JV.Viewer.isJS || this.testAsync)) return null; +eval.pushContextDown("getEvalContextAndHoldQueue"); +var sc = eval.getThisContext(); +sc.setMustResume(); +sc.isJSThread = true; +this.queueOnHold = true; +return sc; +}, "J.api.JmolScriptEvaluator"); +Clazz.defineMethod(c$, "getDefaultPropertyParam", +function(propertyID){ +return this.getPropertyManager().getDefaultPropertyParam(propertyID); +}, "~N"); +Clazz.defineMethod(c$, "getPropertyNumber", +function(name){ +return this.getPropertyManager().getPropertyNumber(name); +}, "~S"); +Clazz.defineMethod(c$, "checkPropertyParameter", +function(name){ +return this.getPropertyManager().checkPropertyParameter(name); +}, "~S"); +Clazz.defineMethod(c$, "extractProperty", +function(property, args, pt){ +return this.getPropertyManager().extractProperty(property, args, pt, null, false); +}, "~O,~O,~N"); +Clazz.defineMethod(c$, "addHydrogens", +function(bsAtoms, flags){ +var isSilent = ((flags & 1) == 1); +var isQuick = ((flags & 8) == 8); +var doAll = (bsAtoms == null); +if (bsAtoms == null) bsAtoms = this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().length() - 1); +var bsB = new JU.BS(); +if (bsAtoms.isEmpty()) return bsB; +var vConnections = new JU.Lst(); +var pts = this.getAdditionalHydrogens(bsAtoms, vConnections, flags | (doAll ? 256 : 0)); +var wasAppendNew = false; +wasAppendNew = this.g.appendNew; +if (pts.length > 0) { +this.clearModelDependentObjects(); +try { +bsB = (isQuick && vConnections.get(0).mi == this.ms.mc - 1 ? this.ms.addHydrogens(vConnections, pts) : this.addHydrogensInline(bsAtoms, vConnections, pts, null)); +this.setModelkitPropertySafely("updateatomkeys", bsAtoms); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +if (wasAppendNew) this.g.appendNew = true; +}if (!isSilent) this.scriptStatus(J.i18n.GT.i(J.i18n.GT.$("{0} hydrogens added"), pts.length)); +return bsB; +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "addHydrogensInline", +function(bsAtoms, vConnections, pts, htParams){ +if (this.getScriptManager() == null) return null; +return this.scm.addHydrogensInline(bsAtoms, vConnections, pts, htParams); +}, "JU.BS,JU.Lst,~A,java.util.Map"); +Clazz.overrideMethod(c$, "evalFunctionFloat", +function(func, params, values){ +return (this.getScriptManager() == null ? 0 : this.eval.evalFunctionFloat(func, params, values)); +}, "~O,~O,~A"); +Clazz.defineMethod(c$, "evalParallel", +function(context, shapeManager){ +this.displayLoadErrors = false; +var isOK = this.getScriptManager() != null && this.eval.evalParallel(context, (shapeManager == null ? this.shm : shapeManager)); +this.displayLoadErrors = true; +return isOK; +}, "JS.ScriptContext,JV.ShapeManager"); +Clazz.overrideMethod(c$, "evaluateExpression", +function(stringOrTokens){ +return (this.getScriptManager() == null ? null : this.eval.evaluateExpression(stringOrTokens, false, false)); +}, "~O"); +Clazz.overrideMethod(c$, "evaluateExpressionAsVariable", +function(stringOrTokens){ +return (this.getScriptManager() == null ? null : this.eval.evaluateExpression(stringOrTokens, true, false)); +}, "~O"); +Clazz.defineMethod(c$, "getAtomBitSet", +function(atomExpression){ +if (Clazz.instanceOf(atomExpression,"JU.BS")) return this.slm.excludeAtoms(atomExpression, false); +this.getScriptManager(); +return this.getAtomBitSetEval(this.eval, atomExpression); +}, "~O"); +Clazz.defineMethod(c$, "getScriptContext", +function(why){ +return (this.getScriptManager() == null ? null : this.eval.getScriptContext(why)); +}, "~S"); +Clazz.defineMethod(c$, "getAtomDefs", +function(names){ +var keys = new JU.Lst(); +for (var e, $e = names.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (Clazz.instanceOf(e.getValue(),"JU.BS")) keys.addLast("{" + e.getKey() + "} <" + (e.getValue()).cardinality() + " atoms>\n"); + +var n = keys.size(); +var k = new Array(n); +keys.toArray(k); +java.util.Arrays.sort(k); +var sb = new JU.SB(); +for (var i = 0; i < n; i++) sb.append(k[i]); + +return sb.append("\n").toString(); +}, "java.util.Map"); +Clazz.defineMethod(c$, "setCGO", +function(info){ +this.shm.loadShape(23); +this.shm.setShapePropertyBs(23, "setCGO", info, null); +}, "JU.Lst"); +Clazz.defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = this.mm.modelSet = modelSet; +}, "JM.ModelSet"); +Clazz.defineMethod(c$, "setObjectProp", +function(id, tokCommand){ +this.getScriptManager(); +if (id == null) id = "*"; +return (this.eval == null ? null : this.eval.setObjectPropSafe(id, tokCommand)); +}, "~S,~N"); +Clazz.defineMethod(c$, "setDihedrals", +function(dihedralList, bsBranches, rate){ +if (bsBranches == null) bsBranches = this.ms.getBsBranches(dihedralList); +this.ms.setDihedrals(dihedralList, bsBranches, rate); +}, "~A,~A,~N"); +Clazz.defineMethod(c$, "getChainID", +function(id, isAssign){ +var iboxed = this.chainMap.get(id); +if (iboxed != null) return iboxed.intValue(); +var i = (id.charAt(0)).charCodeAt(0); +if (id.length > 1) { +i = 300 + this.chainList.size(); +} else if ((isAssign || this.chainCaseSpecified) && 97 <= i && i <= 122) { +i += 159; +}if (i >= 256) { +iboxed = this.chainMap.get(id); +if (iboxed != null) return iboxed.intValue(); +this.chainCaseSpecified = new Boolean (this.chainCaseSpecified | isAssign).valueOf(); +this.chainList.addLast(id); +}iboxed = Integer.$valueOf(i); +this.chainMap.put(iboxed, id); +this.chainMap.put(id, iboxed); +return i; +}, "~S,~B"); +Clazz.defineMethod(c$, "getChainIDStr", +function(id){ +return this.chainMap.get(Integer.$valueOf(id)); +}, "~N"); +Clazz.defineMethod(c$, "getScriptQueueInfo", +function(){ +return (this.scm != null && this.scm.isQueueProcessing() ? Boolean.TRUE : Boolean.FALSE); +}); +Clazz.defineMethod(c$, "getNMRCalculation", +function(){ +return (this.nmrCalculation == null ? (this.nmrCalculation = J.api.Interface.getOption("quantum.NMRCalculation", this, "script")).setViewer(this) : this.nmrCalculation); +}); +Clazz.defineMethod(c$, "getDistanceUnits", +function(s){ +if (s == null) s = this.getDefaultMeasurementLabel(2); +var pt = s.indexOf("//"); +return (pt < 0 ? this.g.measureDistanceUnits : s.substring(pt + 2)); +}, "~S"); +Clazz.defineMethod(c$, "calculateFormalCharges", +function(bs){ +return this.ms.fixFormalCharges(bs == null ? this.bsA() : bs); +}, "JU.BS"); +Clazz.defineMethod(c$, "setModulation", +function(bs, isOn, t1, isQ){ +if (isQ) this.g.setO("_modt", JU.Escape.eP(t1)); +this.ms.setModulation(bs == null ? this.getAllAtoms() : bs, isOn, t1, isQ); +this.refreshMeasures(true); +}, "JU.BS,~B,JU.P3,~B"); +Clazz.defineMethod(c$, "checkInMotion", +function(state){ +switch (state) { +case 0: +this.setTimeout("_SET_IN_MOTION_", 0, null); +break; +case 1: +if (!this.inMotion) this.setTimeout("_SET_IN_MOTION_", this.g.hoverDelayMs * 2, "!setInMotion"); +break; +case 2: +this.setInMotion(true); +this.refresh(3, "timeoutThread set in motion"); +break; +} +}, "~N"); +Clazz.defineMethod(c$, "checkMotionRendering", +function(tok){ +if (!this.getInMotion(true) && !this.tm.spinOn && !this.tm.vibrationOn && !this.am.animationOn) return true; +if (this.g.wireframeRotation) return false; +var n = 0; +switch (tok) { +case 1677721602: +case 1153433601: +n = 2; +break; +case 1112150020: +n = 3; +break; +case 1112150021: +n = 4; +break; +case 1112152066: +n = 5; +break; +case 1073742018: +n = 6; +break; +case 603979967: +n = 7; +break; +case 603979786: +n = 8; +break; +} +return this.g.platformSpeed >= n; +}, "~N"); +Clazz.defineMethod(c$, "openExportChannel", +function(privateKey, fileName, asWriter){ +return this.getOutputManager().openOutputChannel(privateKey, fileName, asWriter, false); +}, "~N,~S,~B"); +Clazz.overrideMethod(c$, "log", +function(data){ +if (data != null) this.getOutputManager().logToFile(data); +}, "~S"); +Clazz.defineMethod(c$, "getLogFileName", +function(){ +return (this.logFileName == null ? "" : this.logFileName); +}); +Clazz.defineMethod(c$, "getCommands", +function(htDefine, htMore, select){ +return this.getStateCreator().getCommands(htDefine, htMore, select); +}, "java.util.Map,java.util.Map,~S"); +Clazz.defineMethod(c$, "allowCapture", +function(){ +return !this.isApplet || this.isSignedApplet; +}); +Clazz.defineMethod(c$, "compileExpr", +function(expr){ +var o = (this.getScriptManager() == null ? null : this.eval.evaluateExpression(expr, false, true)); +return (Clazz.instanceOf(o,Array) ? o : Clazz.newArray(-1, [JS.T.o(4, expr)])); +}, "~S"); +Clazz.defineMethod(c$, "checkSelect", +function(h, value){ +return this.getScriptManager() != null && this.eval.checkSelect(h, value); +}, "java.util.Map,~A"); +Clazz.defineMethod(c$, "getAnnotationInfo", +function(d, match, type){ +return this.getAnnotationParser(type == 1111490587).getAnnotationInfo(this, d, match, type, this.am.cmi); +}, "JS.SV,~S,~N"); +Clazz.defineMethod(c$, "getAtomValidation", +function(type, atom){ +return this.getAnnotationParser(false).getAtomValidation(this, type, atom); +}, "~S,JM.Atom"); +Clazz.defineMethod(c$, "dragMinimizeAtom", +function(iAtom){ +this.stopMinimization(); +var flags = 0; +var sym = this.getOperativeSymmetry(); +if (sym != null) { +flags = 256; +}var bs = (flags != 0 ? null : (this.getMotionFixedAtoms(sym, null).isEmpty() ? this.ms.getAtoms((this.ms.isAtomPDB(iAtom) ? 1086324742 : 1094713360), JU.BSUtil.newAndSetBit(iAtom)) : JU.BSUtil.setAll(this.ms.ac))); +try { +this.minimize(this.eval, 2147483647, 0, bs, null, null, 0, flags); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +if (!this.async) return; +var me = this; +var r = ((Clazz.isClassDefined("JV.Viewer$1") ? 0 : JV.Viewer.$Viewer$1$ ()), Clazz.innerTypeInstance(JV.Viewer$1, this, Clazz.cloneFinals("me", me, "iAtom", iAtom))); +{ +setTimeout(function(){r.run()}, 100); +}} else { +throw e; +} +} +}, "~N"); +Clazz.defineMethod(c$, "getJBR", +function(){ +return (this.jbr == null ? this.jbr = (J.api.Interface.getInterface("JM.BioResolver", this, "file")).setViewer(this) : this.jbr); +}); +Clazz.defineMethod(c$, "checkMenuUpdate", +function(){ +if (this.jmolpopup != null) this.jmolpopup.jpiUpdateComputedMenus(); +}); +Clazz.defineMethod(c$, "getChimeMessenger", +function(){ +return (this.jcm == null ? this.jcm = (J.api.Interface.getInterface("JV.ChimeMessenger", this, "script")).set(this) : this.jcm); +}); +Clazz.defineMethod(c$, "getModelSetAuxiliaryInfoForAtoms", +function(atomExpression){ +return this.ms.getModelSetAuxiliaryInfo(this.ms.getModelBS(this.getAtomBitSet(atomExpression), false)); +}, "~O"); +Clazz.defineMethod(c$, "getJSJSONParser", +function(){ +return (this.jsonParser == null ? this.jsonParser = J.api.Interface.getInterface("JU.JSJSONParser", this, "script") : this.jsonParser); +}); +Clazz.defineMethod(c$, "parseJSON", +function(str){ +return (str == null ? null : (str = str.trim()).startsWith("{") ? this.parseJSONMap(str) : this.parseJSONArray(str)); +}, "~S"); +Clazz.defineMethod(c$, "parseJSONMap", +function(jsonMap){ +return this.getJSJSONParser().parseMap(jsonMap, true); +}, "~S"); +Clazz.defineMethod(c$, "parseJSONArray", +function(jsonArray){ +return this.getJSJSONParser().parse(jsonArray, true); +}, "~S"); +Clazz.defineMethod(c$, "getSymTemp", +function(){ +return J.api.Interface.getSymmetry(this, "ms"); +}); +Clazz.defineMethod(c$, "getSymStatic", +function(){ +return (JV.Viewer.symStatic == null ? (JV.Viewer.symStatic = J.api.Interface.getSymmetry(this, "ms")) : JV.Viewer.symStatic); +}); +Clazz.defineMethod(c$, "setWindowDimensions", +function(dims){ +this.resizeInnerPanel(Clazz.floatToInt(dims[0]), Clazz.floatToInt(dims[1])); +}, "~A"); +Clazz.defineMethod(c$, "getTriangulator", +function(){ +return (this.triangulator == null ? (this.triangulator = J.api.Interface.getUtil("Triangulator", this, "script")) : this.triangulator); +}); +Clazz.defineMethod(c$, "getCurrentModelAuxInfo", +function(){ +return (this.am.cmi >= 0 ? this.ms.getModelAuxiliaryInfo(this.am.cmi) : null); +}); +Clazz.defineMethod(c$, "startNBO", +function(options){ +var htParams = new java.util.Hashtable(); +htParams.put("service", "nbo"); +htParams.put("action", "showPanel"); +htParams.put("options", options); +this.sm.processService(htParams); +}, "~S"); +Clazz.defineMethod(c$, "startPlugin", +function(plugin){ +if ("nbo".equalsIgnoreCase(plugin)) this.startNBO("all"); +}, "~S"); +Clazz.defineMethod(c$, "connectNBO", +function(type){ +if (this.am.cmi < 0) return; +this.getNBOParser().connectNBO(this.am.cmi, type); +}, "~S"); +Clazz.defineMethod(c$, "getNBOParser", +function(){ +return (this.nboParser == null ? this.nboParser = (J.api.Interface.getInterface("J.adapter.readers.quantum.NBOParser", this, "script")).set(this) : this.nboParser); +}); +Clazz.defineMethod(c$, "getNBOAtomLabel", +function(atom){ +return this.getNBOParser().getNBOAtomLabel(atom); +}, "JM.Atom"); +Clazz.defineMethod(c$, "calculateChirality", +function(bsAtoms){ +if (bsAtoms == null) bsAtoms = this.bsA(); +return this.ms.calculateChiralityForAtoms(bsAtoms, true); +}, "JU.BS"); +Clazz.defineMethod(c$, "getSubstructureSetArray", +function(pattern, bsSelected, flags){ +return this.getSmilesMatcher().getSubstructureSetArray(pattern, this.ms.at, this.ms.ac, bsSelected, null, flags); +}, "~S,JU.BS,~N"); +Clazz.defineMethod(c$, "getSubstructureSetArrayForNodes", +function(pattern, nodes, flags){ +return this.getSmilesMatcher().getSubstructureSetArray(pattern, nodes, nodes.length, null, null, flags); +}, "~S,~A,~N"); +Clazz.defineMethod(c$, "getSmilesAtoms", +function(smiles){ +return this.getSmilesMatcher().getAtoms(smiles); +}, "~S"); +Clazz.defineMethod(c$, "calculateChiralityForSmiles", +function(smiles){ +try { +return J.api.Interface.getSymmetry(this, "ms").calculateCIPChiralityForSmiles(this, smiles); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz.defineMethod(c$, "getPdbID", +function(){ +return (this.ms.getInfo(this.am.cmi, JV.JC.getBoolName(4)) === Boolean.TRUE ? this.ms.getInfo(this.am.cmi, "pdbID") : null); +}); +Clazz.defineMethod(c$, "getModelInfo", +function(key){ +return this.ms.getInfo(this.am.cmi, key); +}, "~S"); +Clazz.defineMethod(c$, "notifyScriptEditor", +function(msWalltime, data){ +if (this.scriptEditor != null) { +this.scriptEditor.notify(msWalltime, data); +}}, "~N,~A"); +Clazz.defineMethod(c$, "sendConsoleMessage", +function(msg){ +if (this.appConsole != null) this.appConsole.sendConsoleMessage(msg); +}, "~S"); +Clazz.defineMethod(c$, "getModelkitPropertySafely", +function(name){ +return (this.modelkit == null ? null : this.modelkit.getProperty(name)); +}, "~S"); +Clazz.defineMethod(c$, "setModelkitPropertySafely", +function(key, value){ +return (this.modelkit == null ? null : this.modelkit.setProperty(key, value)); +}, "~S,~O"); +Clazz.defineMethod(c$, "isModelKitOption", +function(type, value){ +return this.modelkit != null && this.modelkit.checkOption(type, value); +}, "~S,~S"); +Clazz.defineMethod(c$, "getSymmetryInfo", +function(iatom, xyz, iOp, translation, pt1, pt2, type, desc, scaleFactor, nth, options, opList){ +try { +return this.getSymTemp().getSymmetryInfoAtom(this.ms, iatom, xyz, iOp, translation, pt1, pt2, desc, type, scaleFactor, nth, options, opList); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("Exception in Viewer.getSymmetryInfo: " + e); +if (!JV.Viewer.isJS) e.printStackTrace(); +return null; +} else { +throw e; +} +} +}, "~N,~S,~N,JU.P3,JU.P3,JU.P3,~N,~S,~N,~N,~N,~A"); +Clazz.defineMethod(c$, "getMacro", +function(key){ +if (this.macros == null || this.macros.isEmpty()) { +try { +var s = this.getAsciiFileOrNull(this.g.macroDirectory + "/macros.json"); +this.macros = this.parseJSON(s); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.macros = new java.util.Hashtable(); +} else { +throw e; +} +} +}if (key == null) { +var s = new JU.SB(); +for (var k, $k = this.macros.keySet().iterator (); $k.hasNext()&& ((k = $k.next ()) || true);) { +var a = this.macros.get(k); +s.append(k).append("\t").appendO(a).append("\n"); +} +return s.toString(); +}key = key.toLowerCase(); +return this.macros.containsKey(key) ? (this.macros.get(key)).get("path").toString() : null; +}, "~S"); +Clazz.defineMethod(c$, "getConsoleFontScale", +function(){ +return this.consoleFontScale; +}); +Clazz.defineMethod(c$, "setConsoleFontScale", +function(scale){ +this.consoleFontScale = scale; +}, "~N"); +Clazz.defineMethod(c$, "confirm", +function(msg, msgNo){ +return this.apiPlatform.confirm(msg, msgNo); +}, "~S,~S"); +Clazz.defineMethod(c$, "evalStringGUI", +function(script){ +this.evalStringQuiet(script + "; ## GUI ##"); +}, "~S"); +Clazz.defineMethod(c$, "selectStatus", +function(bs, isGroup, addRemove, isQuiet, reportStatus){ +this.select(bs, isGroup, addRemove, isQuiet); +if (reportStatus) { +this.setStatusSelect(bs); +}}, "JU.BS,~B,~N,~B,~B"); +Clazz.defineMethod(c$, "setStatusSelect", +function(bs){ +this.hasSelected = false; +this.sm.setStatusSelect(bs == null ? this.bsA() : bs); +}, "JU.BS"); +Clazz.defineMethod(c$, "wasmInchiHack", +function(cmd){ +if (JV.Viewer.isJS && (cmd.indexOf("inchi") >= 0 || cmd.indexOf("INCHI") >= 0) || cmd.indexOf("TAUTOMER") >= 0 || cmd.indexOf("tautomer") >= 0) { +this.getInchi(null, null, null); +}return cmd; +}, "~S"); +Clazz.defineMethod(c$, "getInchi", +function(atoms, molData, options){ +try { +var inch = this.apiPlatform.getInChI(); +if (atoms == null && molData == null) { +return ""; +}if ((typeof(molData)=='string')) { +var data = molData; +if (data.startsWith("$") || data.startsWith(":")) { +molData = this.getFileAsString4(data, -1, false, false, true, "script"); +} else if (!data.startsWith("InChI=") && data.indexOf(" ") < 0) { +data = this.setLoadFormat(false, "$" + molData, '$', false); +molData = this.getFileAsString4(data, -1, false, false, true, "script"); +}}return inch.getInchi(this, atoms, molData, options); +} catch (t) { +return ""; +} +}, "JU.BS,~O,~S"); +Clazz.defineMethod(c$, "findSpaceGroup", +function(sym, bsAtoms, xyzList, unitCellParams, origin, oabc, flags){ +var ret = null; +if (bsAtoms == null && xyzList == null || (flags & 2) != 0) bsAtoms = this.getThisModelAtoms(); +if (xyzList == null) { +if (!bsAtoms.isEmpty()) { +var uc = (sym == null ? this.getOperativeSymmetry() : sym); +ret = (uc == null ? null : uc.findSpaceGroup(this, bsAtoms, null, unitCellParams, null, oabc, flags)); +}} else { +ret = this.getSymTemp().findSpaceGroup(this, bsAtoms, xyzList, unitCellParams, origin, oabc, flags); +}return (ret == null && (flags & 1) != 0 ? "" : ret); +}, "J.api.SymmetryInterface,JU.BS,~S,~A,JU.T3,~A,~N"); +Clazz.defineMethod(c$, "restrictToModel", +function(bs, mi){ +if (bs == null) bs = this.bsA(); +var isEmpty = bs.isEmpty(); +if (isEmpty && mi >= 0) return bs; +if (mi == -1) mi = this.am.cmi; +if (mi < 0) { +if (isEmpty) { +return this.getThisModelAtoms(); +}mi = this.ms.at[bs.nextSetBit(0)].getModelIndex(); +}var bsm = this.getModelUndeletedAtomsBitSet(mi); +bsm.and(bs); +return bsm; +}, "JU.BS,~N"); +Clazz.defineMethod(c$, "getThisModelAtoms", +function(){ +return this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().nextSetBit(0)); +}); +Clazz.defineMethod(c$, "getSymmetryEquivPoints", +function(pt, flags){ +var uc = this.getCurrentUnitCell(); +return (uc == null ? new JU.Lst() : uc.getEquivPoints(null, pt, flags)); +}, "JU.P3,~S"); +Clazz.defineMethod(c$, "getSymmetryEquivPointList", +function(pts, flags){ +var uc = this.getCurrentUnitCell(); +if (uc == null) return new JU.Lst(); +uc.getEquivPointList(pts, 0, flags.toLowerCase(), null); +return pts; +}, "JU.Lst,~S"); +Clazz.defineMethod(c$, "getOperativeSymmetry", +function(){ +var sg = this.getCurrentUnitCell(); +return (sg == null || sg.getSymmetryOperations() == null ? null : sg); +}); +Clazz.defineMethod(c$, "formatText", +function(text0){ +var i; +if ((i = text0.indexOf("@{")) < 0 && (i = text0.indexOf("%{")) < 0) return text0; +var text = text0; +var isEscaped = (text.indexOf("\\") >= 0); +if (isEscaped) { +text = JU.PT.rep(text, "\\%", "\1"); +text = JU.PT.rep(text, "\\@", "\2"); +isEscaped = !text.equals(text0); +}text = JU.PT.rep(text, "%{", "@{"); +var name; +while ((i = text.indexOf("@{")) >= 0) { +i++; +var i0 = i + 1; +var len = text.length; +var nP = 1; +var chFirst = '\u0000'; +var chLast = '\u0000'; +while (nP > 0 && ++i < len) { +var ch = text.charAt(i); +if (chFirst != '\0') { +if (chLast == '\\') { +ch = '\0'; +} else if (ch == chFirst) { +chFirst = '\0'; +}chLast = ch; +continue; +}switch ((ch).charCodeAt(0)) { +case 39: +case 34: +chFirst = ch; +break; +case 123: +nP++; +break; +case 125: +nP--; +break; +} +} +if (i >= len) return text; +name = text.substring(i0, i); +if (name.length == 0) return text; +var v = this.evaluateExpression(name); +if (Clazz.instanceOf(v,"JU.P3")) v = JU.Escape.eP(v); +text = text.substring(0, i0 - 2) + v.toString() + text.substring(i + 1); +} +if (isEscaped) { +text = JU.PT.rep(text, "\2", "@"); +text = JU.PT.rep(text, "\1", "%"); +}return text; +}, "~S"); +Clazz.defineMethod(c$, "getScaleText", +function(units, isAntialiased, min, ret){ +var relativeScale = 1; +var u = JM.Measurement.fixUnits(units.length > 0 ? ((units.startsWith("//") ? units.substring(2) : units).toLowerCase()) : this.g.measureDistanceUnits.equals("vdw") ? "angstroms" : this.g.measureDistanceUnits); +if (JM.Measurement.fromUnits(1, u) == 0) { +u = JM.Measurement.fixUnits(this.g.measureDistanceUnits); +}if (ret == null) return u; +var d = this.tm.modelRadius * this.tm.scaleDefaultPixelsPerAngstrom / this.tm.scalePixelsPerAngstrom / 4; +var af = (isAntialiased ? 2 : 1); +var m = 0; +var p = 0; +var e = 0; +var mp = 0; +min = min * this.imageFontScaling / af * relativeScale * 2; +while (p < min) { +e = JM.Measurement.toUnits(d, u, false); +m = Clazz.doubleToInt(Math.floor(Math.log10(e))); +mp = Math.pow(10, m); +e = JM.Measurement.fromUnits(mp + 0.000001, u); +p = Clazz.floatToInt(e * this.tm.scalePixelsPerAngstrom / af); +if (p < min) { +d *= 10; +}} +var se = (m >= 0 ? " " + Clazz.floatToInt(mp) + " " : " 0." + "000000000".substring(0, -1 - m) + "1 "); +ret[0] = p; +ret[1] = e; +return se + u; +}, "~S,~B,~N,~A"); +Clazz.defineMethod(c$, "setStatusAtomMoved", +function(andCheckMinimize, bs){ +if (andCheckMinimize) this.checkMinimization(); +this.sm.setStatusAtomMoved(bs); +}, "~B,JU.BS"); +Clazz.defineMethod(c$, "getFormulaForAtoms", +function(bs, type, isEmpirical){ +return JU.JmolMolecule.getMolecularFormulaAtoms(this.ms.at, bs, ("CELLFORMULA".equals(type) ? this.ms.getCellWeights(bs) : null), isEmpirical); +}, "JU.BS,~S,~B"); +Clazz.defineMethod(c$, "evalCallback", +function(cmd, params, doWait){ +if (this.getScriptManager() != null) this.scm.evalCallback(cmd, params, doWait); +}, "~S,~A,~B"); +Clazz.defineMethod(c$, "checkConsoleScript", +function(strScript){ +{ +if (strScript.indexOf("JSCONSOLE") == 0) { +this.html5Applet._showInfo(strScript.indexOf("CLOSE")<0); if +(strScript.indexOf("CLEAR") >= 0) +this.html5Applet._clearConsole(); return true; } +}return false; +}, "~S"); +c$.$Viewer$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(JV, "Viewer$1", null, Runnable); +Clazz.overrideMethod(c$, "run", +function(){ +this.f$.me.dragMinimizeAtom(this.f$.iAtom); +}); +/*eoif5*/})(); +}; +/*if2*/;(function(){ +var c$ = Clazz.declareType(JV.Viewer, "ACCESS", Enum); +Clazz.defineEnumConstant(c$, "NONE", 0, []); +Clazz.defineEnumConstant(c$, "READSPT", 1, []); +Clazz.defineEnumConstant(c$, "ALL", 2, []); +/*eoif2*/})(); +{ +{ +self.Jmol && Jmol.extend && Jmol.extend("vwr", +JV.Viewer.prototype); +}}c$.isJS = false; +c$.isSwingJS = false; +c$.appletDocumentBase = ""; +c$.appletCodeBase = ""; +c$.appletIdiomaBase = null; +c$.jsDocumentBase = ""; +c$.jmolObject = null; +c$.strJavaVendor = "Java: " + System.getProperty("java.vendor", "j2s"); +c$.strOSName = System.getProperty("os.name", ""); +c$.strJavaVersion = "Java " + System.getProperty("java.version", ""); +c$.version_date = null; +c$.staticFunctions = new java.util.Hashtable(); +c$.nProcessors = 1; +c$.isHighPrecision = false; +{ +{ +}}c$.symStatic = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/binding/Binding.js b/config/plugins/visualizations/jmol/static/j2s/JV/binding/Binding.js new file mode 100755 index 000000000000..1eb3570d9ba0 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/binding/Binding.js @@ -0,0 +1,238 @@ +Clazz.declarePackage("JV.binding"); +Clazz.load(["java.util.Hashtable"], "JV.binding.Binding", ["java.util.Arrays", "JU.AU", "$.Lst", "$.PT", "$.SB", "J.api.Interface", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.name = null; +this.bindings = null; +Clazz.instantialize(this, arguments);}, JV.binding, "Binding", null); +Clazz.prepareFields (c$, function(){ +this.bindings = new java.util.Hashtable(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +c$.getMouseAction = Clazz.defineMethod(c$, "getMouseAction", +function(clickCount, modifiers, mode){ +if (clickCount > 2) clickCount = 2; +switch (clickCount) { +case 0: +break; +case 1: +clickCount = 256; +break; +default: +clickCount = 512; +} +switch (mode) { +case 4: +mode = 4096; +break; +case 1: +mode = 8192; +break; +case 5: +mode = 16384; +break; +case 2: +mode = 32768; +break; +case 3: +mode = 32; +} +return (modifiers & 63) | clickCount | mode; +}, "~N,~N,~N"); +c$.getMouseActionStr = Clazz.defineMethod(c$, "getMouseActionStr", +function(desc){ +if (desc == null) return 0; +var mouseAction = 0; +desc = desc.toUpperCase(); +if (desc.indexOf("MIDDLE") >= 0) mouseAction = 8; + else if (desc.indexOf("RIGHT") >= 0) mouseAction = 4; + else if (desc.indexOf("WHEEL") >= 0) mouseAction = 32; + else mouseAction = 16; +if (desc.indexOf("DOWN") >= 0) mouseAction |= 4096; + else if (desc.indexOf("DRAG") >= 0) mouseAction |= 8192; + else if (desc.indexOf("UP") >= 0) mouseAction |= 16384; + else if (mouseAction != 32) mouseAction |= 32768; +if (mouseAction != 32 && desc.indexOf("DOUBLE") >= 0) mouseAction |= 512; + else if (mouseAction > 0) mouseAction |= 256; +if (mouseAction != (288) && desc.indexOf("ALT") >= 0) mouseAction |= 8; +if (desc.indexOf("CTRL") >= 0) mouseAction |= 2; +if (desc.indexOf("SHIFT") >= 0) mouseAction |= 1; +return mouseAction; +}, "~S"); +c$.getButtonMods = Clazz.defineMethod(c$, "getButtonMods", +function(mouseAction){ +return mouseAction & 63; +}, "~N"); +c$.getClickCount = Clazz.defineMethod(c$, "getClickCount", +function(mouseAction){ +return (mouseAction & 768) >> 8; +}, "~N"); +c$.getMouseActionName = Clazz.defineMethod(c$, "getMouseActionName", +function(mouseAction, addSortCode){ +var sb = new JU.SB(); +if (mouseAction == 0) return ""; +var isMiddle = (JV.binding.Binding.includes(mouseAction, 8) && !JV.binding.Binding.includes(mouseAction, 16) && !JV.binding.Binding.includes(mouseAction, 4)); +var code = " ".toCharArray(); +if (JV.binding.Binding.includes(mouseAction, 2)) { +sb.append("CTRL+"); +code[5] = 'C'; +}if (!isMiddle && JV.binding.Binding.includes(mouseAction, 8)) { +sb.append("ALT+"); +code[4] = 'A'; +}if (JV.binding.Binding.includes(mouseAction, 1)) { +sb.append("SHIFT+"); +code[3] = 'S'; +}if (JV.binding.Binding.includes(mouseAction, 16)) { +code[2] = 'L'; +sb.append("LEFT"); +} else if (JV.binding.Binding.includes(mouseAction, 4)) { +code[2] = 'R'; +sb.append("RIGHT"); +} else if (isMiddle) { +code[2] = 'M'; +sb.append("MIDDLE"); +} else if (JV.binding.Binding.includes(mouseAction, 32)) { +code[2] = 'W'; +sb.append("WHEEL"); +}if (JV.binding.Binding.includes(mouseAction, 512)) { +sb.append("+double"); +code[1] = '2'; +}if (JV.binding.Binding.includes(mouseAction, 4096)) { +sb.append("+down"); +code[0] = '1'; +} else if (JV.binding.Binding.includes(mouseAction, 8192)) { +sb.append("+drag"); +code[0] = '2'; +} else if (JV.binding.Binding.includes(mouseAction, 16384)) { +sb.append("+up"); +code[0] = '3'; +} else if (JV.binding.Binding.includes(mouseAction, 32768)) { +sb.append("+click"); +code[0] = '4'; +}return (addSortCode ? String.instantialize(code) + ":" + sb.toString() : sb.toString()); +}, "~N,~B"); +Clazz.defineMethod(c$, "getBindings", +function(){ +return this.bindings; +}); +Clazz.defineMethod(c$, "bindAction", +function(mouseAction, jmolAction){ +this.addBinding(mouseAction + "\t" + jmolAction, Clazz.newIntArray(-1, [mouseAction, jmolAction])); +}, "~N,~N"); +Clazz.defineMethod(c$, "bindName", +function(mouseAction, name){ +this.addBinding(mouseAction + "\t", Boolean.TRUE); +this.addBinding(mouseAction + "\t" + name, Clazz.newArray(-1, [JV.binding.Binding.getMouseActionName(mouseAction, false), name])); +}, "~N,~S"); +Clazz.defineMethod(c$, "unbindAction", +function(mouseAction, jmolAction){ +if (mouseAction == 0) this.unbindJmolAction(jmolAction); + else this.removeBinding(null, mouseAction + "\t" + jmolAction); +}, "~N,~N"); +Clazz.defineMethod(c$, "unbindName", +function(mouseAction, name){ +if (name == null) this.unbindMouseAction(mouseAction); + else this.removeBinding(null, mouseAction + "\t" + name); +}, "~N,~S"); +Clazz.defineMethod(c$, "unbindJmolAction", +function(jmolAction){ +var e = this.bindings.keySet().iterator(); +var skey = "\t" + jmolAction; +while (e.hasNext()) { +var key = e.next(); +if (key.endsWith(skey)) this.removeBinding(e, key); +} +}, "~N"); +Clazz.defineMethod(c$, "addBinding", +function(key, value){ +if (JU.Logger.debugging) JU.Logger.debug("adding binding " + key + "\t==\t" + JU.Escape.e(value)); +this.bindings.put(key, value); +}, "~S,~O"); +Clazz.defineMethod(c$, "removeBinding", +function(e, key){ +if (JU.Logger.debugging) JU.Logger.debug("removing binding " + key); +if (e == null) this.bindings.remove(key); + else e.remove(); +}, "java.util.Iterator,~S"); +Clazz.defineMethod(c$, "unbindUserAction", +function(script){ +var e = this.bindings.keySet().iterator(); +var skey = "\t" + script; +while (e.hasNext()) { +var key = e.next(); +if (key.endsWith(skey)) this.removeBinding(e, key); +} +}, "~S"); +Clazz.defineMethod(c$, "unbindMouseAction", +function(mouseAction){ +var e = this.bindings.keySet().iterator(); +var skey = mouseAction + "\t"; +while (e.hasNext()) { +var key = e.next(); +if (key.startsWith(skey)) this.removeBinding(e, key); +} +}, "~N"); +Clazz.defineMethod(c$, "isBound", +function(mouseAction, jmolAction){ +return this.bindings.containsKey(mouseAction + "\t" + jmolAction); +}, "~N,~N"); +Clazz.defineMethod(c$, "isUserAction", +function(mouseAction){ +return this.bindings.containsKey(mouseAction + "\t"); +}, "~N"); +Clazz.defineMethod(c$, "getBindingInfo", +function(actionInfo, actionNames, qualifiers){ +var sb = new JU.SB(); +var qlow = (qualifiers == null || qualifiers.equalsIgnoreCase("all") ? null : qualifiers.toLowerCase()); +var names = new Array(actionInfo.length); +var user = new JU.Lst(); +for (var obj, $obj = this.bindings.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (Clazz.instanceOf(obj, Boolean)) { +} else if (JU.AU.isAS(obj)) { +var action = (obj)[0]; +var script = (obj)[1]; +if (qlow == null || qlow.indexOf("user") >= 0 || action.indexOf(qlow) >= 0 || script.indexOf(qlow) >= 0) user.addLast(obj); +} else { +var info = obj; +var i = info[1]; +if (names[i] == null) names[i] = new JU.Lst(); +var name = JV.binding.Binding.getMouseActionName(info[0], true); +if (qlow == null || (actionNames[i] + ";" + actionInfo[i] + ";" + name).toLowerCase().indexOf(qlow) >= 0) names[i].addLast(name); +}} +for (var i = 0; i < actionInfo.length; i++) { +var n; +if (names[i] == null || (n = names[i].size()) == 0) continue; +this.addInfo(sb, names[i].toArray( new Array(n)), actionNames[i], actionInfo[i]); +} +for (var i = 0; i < user.size(); i++) { +var info = user.get(i); +this.addInfo(sb, Clazz.newArray(-1, ["USER:::" + info[0]]), "user-defined", info[1]); +} +return sb.toString(); +}, "~A,~A,~S"); +Clazz.defineMethod(c$, "addInfo", +function(sb, list, name, info){ +java.util.Arrays.sort(list); +JU.PT.leftJustify(sb, " ", name); +sb.append("\t"); +var sep = ""; +var len = sb.length(); +for (var j = 0; j < list.length; j++) { +sb.append(sep).append(list[j].substring(7)); +sep = ", "; +} +len = sb.length() - len; +if (len < 20) sb.append(" ".substring(0, 20 - len)); +sb.append("\t").append(info).appendC('\n'); +}, "JU.SB,~A,~S,~S"); +c$.includes = Clazz.defineMethod(c$, "includes", +function(mouseAction, mod){ +return ((mouseAction & mod) == mod); +}, "~N,~N"); +c$.newBinding = Clazz.defineMethod(c$, "newBinding", +function(vwr, name){ +return J.api.Interface.getInterface("JV.binding." + name + "Binding", vwr, "script"); +}, "JV.Viewer,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/binding/DragBinding.js b/config/plugins/visualizations/jmol/static/j2s/JV/binding/DragBinding.js new file mode 100755 index 000000000000..6bcc95f24406 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/binding/DragBinding.js @@ -0,0 +1,20 @@ +Clazz.declarePackage("JV.binding"); +Clazz.load(["JV.binding.JmolBinding"], "JV.binding.DragBinding", null, function(){ +var c$ = Clazz.declareType(JV.binding, "DragBinding", JV.binding.JmolBinding); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JV.binding.DragBinding, []); +this.set("drag"); +}); +Clazz.overrideMethod(c$, "setSelectBindings", +function(){ +this.bindAction(33040, 30); +this.bindAction(33041, 35); +this.bindAction(33048, 34); +this.bindAction(33049, 32); +this.bindAction(4368, 31); +this.bindAction(8464, 13); +this.bindAction(33040, 17); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/binding/JmolBinding.js b/config/plugins/visualizations/jmol/static/j2s/JV/binding/JmolBinding.js new file mode 100755 index 000000000000..d7e1974e5f62 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/binding/JmolBinding.js @@ -0,0 +1,77 @@ +Clazz.declarePackage("JV.binding"); +Clazz.load(["JV.binding.Binding"], "JV.binding.JmolBinding", null, function(){ +var c$ = Clazz.declareType(JV.binding, "JmolBinding", JV.binding.Binding); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JV.binding.JmolBinding, []); +this.set("toggle"); +}); +Clazz.defineMethod(c$, "set", +function(name){ +this.name = name; +this.setGeneralBindings(); +this.setSelectBindings(); +}, "~S"); +Clazz.defineMethod(c$, "setSelectBindings", +function(){ +this.bindAction(33296, 30); +this.bindAction(33040, 36); +}); +Clazz.defineMethod(c$, "setGeneralBindings", +function(){ +this.bindAction(8474, 45); +this.bindAction(8454, 45); +this.bindAction(8721, 45); +this.bindAction(8712, 45); +this.bindAction(8464, 25); +this.bindAction(8720, 25); +this.bindAction(8472, 28); +this.bindAction(8453, 28); +this.bindAction(8465, 29); +this.bindAction(8456, 29); +this.bindAction(288, 46); +this.bindAction(8464, 40); +this.bindAction(8464, 16); +this.bindAction(4370, 23); +this.bindAction(4356, 23); +this.bindAction(33040, 2); +this.bindAction(8467, 38); +this.bindAction(8723, 6); +this.bindAction(8475, 39); +this.bindAction(290, 46); +this.bindAction(289, 46); +this.bindAction(291, 46); +this.bindAction(290, 38); +this.bindAction(289, 6); +this.bindAction(291, 39); +this.bindAction(8464, 44); +this.bindAction(8464, 41); +this.bindAction(8465, 42); +this.bindAction(8473, 13); +this.bindAction(8465, 14); +this.bindAction(8472, 27); +this.bindAction(8465, 26); +this.bindAction(8464, 10); +this.bindAction(8472, 9); +this.bindAction(8465, 8); +this.bindAction(33297, 24); +this.bindAction(33288, 24); +this.bindAction(33296, 43); +this.bindAction(8464, 7); +this.bindAction(8464, 11); +this.bindAction(8464, 12); +this.bindAction(33040, 17); +this.bindAction(33040, 22); +this.bindAction(33040, 19); +this.bindAction(33040, 20); +this.bindAction(33296, 37); +this.bindAction(33040, 18); +this.bindAction(33043, 21); +this.bindAction(33040, 4); +this.bindAction(33040, 5); +this.bindAction(33040, 3); +this.bindAction(33040, 0); +this.bindAction(33043, 1); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/binding/PfaatBinding.js b/config/plugins/visualizations/jmol/static/j2s/JV/binding/PfaatBinding.js new file mode 100755 index 000000000000..56cfbc864616 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/binding/PfaatBinding.js @@ -0,0 +1,18 @@ +Clazz.declarePackage("JV.binding"); +Clazz.load(["JV.binding.JmolBinding"], "JV.binding.PfaatBinding", null, function(){ +var c$ = Clazz.declareType(JV.binding, "PfaatBinding", JV.binding.JmolBinding); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JV.binding.PfaatBinding, []); +this.set("extendedSelect"); +}); +Clazz.overrideMethod(c$, "setSelectBindings", +function(){ +this.bindAction(33040, 30); +this.bindAction(33040, 33); +this.bindAction(33041, 35); +this.bindAction(33049, 32); +this.bindAction(33048, 34); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/JV/binding/RasmolBinding.js b/config/plugins/visualizations/jmol/static/j2s/JV/binding/RasmolBinding.js new file mode 100755 index 000000000000..f83179ea9711 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/JV/binding/RasmolBinding.js @@ -0,0 +1,15 @@ +Clazz.declarePackage("JV.binding"); +Clazz.load(["JV.binding.JmolBinding"], "JV.binding.RasmolBinding", null, function(){ +var c$ = Clazz.declareType(JV.binding, "RasmolBinding", JV.binding.JmolBinding); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, JV.binding.RasmolBinding, []); +this.set("selectOrToggle"); +}); +Clazz.overrideMethod(c$, "setSelectBindings", +function(){ +this.bindAction(33040, 30); +this.bindAction(33041, 35); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/Jmol.properties b/config/plugins/visualizations/jmol/static/j2s/Jmol.properties new file mode 100755 index 000000000000..6b5e36f7f8a8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/Jmol.properties @@ -0,0 +1,3 @@ +Jmol.___JmolDate="$Date: 2024-06-07 15:31:04 +0100 (Fri, 07 Jun 2024) $" +Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties" +Jmol.___JmolVersion="16.2.17" // (legacy) also 16.2.18 (swingJS) diff --git a/config/plugins/visualizations/jmol/static/j2s/_ES6/molfile-to-inchi.js b/config/plugins/visualizations/jmol/static/j2s/_ES6/molfile-to-inchi.js new file mode 100755 index 000000000000..4c02966c74cf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/_ES6/molfile-to-inchi.js @@ -0,0 +1,104 @@ +import WASI from '../_WASM/wasi.esm.js'; +/* + * Creates [J2S|Jmol].molfileToInChI(molFileString) and .showInChIOptions() + * + * Based on Richard Apodaca + * https://github.com/rapodaca/inchi-wasm/blob/master/lib/molfile-to-inchi.js + * + * An LLVM-generated Web Assembly implementation of InChI + * + * + * Uses molfile_to_inchi.wasm and wasi.esm.js, from molfile_to_inchi.c + * and InChI 1.05 + * + * @author Rich Apodaca + * @author Bob Hanson 2020.12.12 + * + * + */ +const app = (self.J2S || self.Jmol || self); +const wasmPath = app.inchiPath || "."; +const memory = new WebAssembly.Memory({ initial: 10 }); +const inputMaxBytes = app.inchiMaxBytes || 0x8000; +const outputMaxBytes = 0x4000; +(async () => { + const response = await fetch(wasmPath + '/molfile_to_inchi.wasm'); + const bytes = await response.arrayBuffer(); + const wasi = new WASI(); + const { instance } = await WebAssembly.instantiate(bytes, { + env: { memory }, wasi_snapshot_preview1: wasi.wasiImport + }); + const pInput = instance.exports.malloc(inputMaxBytes); + const pOptions = instance.exports.malloc(0x100); + const pOutput = instance.exports.malloc(outputMaxBytes); + + app.showInChIOptions = () => { + var s = ""; + + // s += ("-RTrip Do a round trip test for each InChI generated\n"); + // s += ("-Key Generate InChIKey\n"); + s += ("-SNon Exclude stereo (default: include absolute stereo)\n"); + s += ("-SRel Relative stereo\n"); + s += ("-SRac Racemic stereo\n"); + // s += ("-SUCF Use Chiral Flag: On means Absolute stereo, Off - Relative\n"); + // s += ("-NEWPSOFF Both ends of wedge point to stereocenters (default: a narrow end)\n"); + s += ("-DoNotAddH All H are explicit (default: add H according to usual valences)\n"); + s += ("-SUU Always include omitted unknown/undefined stereo\n"); + s += ("-SLUUD Make labels for unknown and undefined stereo different\n"); + s += ("-FixedH Include Fixed H layer\n"); + s += ("-RecMet Include reconnected metals results\n"); + s += ("-KET Account for keto-enol tautomerism (experimental)\n"); + s += ("-15T Account for 1,5-tautomerism (experimental)\n"); + // s += ("-AuxNone Omit auxiliary information (default: Include)\n"); + // s += ("-WarnOnEmptyStructure Warn and produce empty InChI for empty structure\n"); + // s += ("-SaveOpt Save custom InChI creation options (non-standard InChI)\n"); + // s += ("-Wnumber Set time-out per structure in seconds; W0 means unlimited\n"); + // s += ("-LargeMolecules Treat molecules up to 32766 atoms (experimental)\n"); + alert(s); + }; + + app.molfileToInChI = (molfile,options) => { + options || (options = ""); + if (molfile.length + 1 > inputMaxBytes) { + alert("Model data is over the maximum of " + inputMaxBytes + " bytes. \nYou can set this as Jmol.inchiMaxBytes."); + return ""; + } + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const inputView = new Uint8Array(memory.buffer); + inputView.set(encoder.encode(molfile + "\0"), pInput); + molfile = ""; // BH this is just so we can debug easier. + inputView.set(encoder.encode(options + "\0"), pOptions); + + const result = instance.exports.molfile_to_inchi(pInput, pOptions, pOutput); + + const outputView = new Uint8Array(memory.buffer.slice(pOutput, pOutput + outputMaxBytes)); + const o = outputView.subarray(0, outputView.indexOf(0)); + const output = decoder.decode(o); + + if (result < 0 || result > 1) { + alert("Error code " + result + " " + output.length); + } + + return (options.toLowerCase().indexOf("key") >= 0 ? toKey(output) : output); + }; + + app.inchiToInchiKey = (inchi) => { + return toKey(inchi); + }; + + const toKey = (inchi) => { + const inputView = new Uint8Array(memory.buffer); + + inputView.set(new TextEncoder().encode(inchi + "\0"), pInput); + + const ret = instance.exports.inchi_to_inchikey(pInput, pOutput); + const outputView = new Uint8Array(memory.buffer.slice(pOutput, pOutput + outputMaxBytes)); + + return new TextDecoder().decode(outputView.subarray(0, outputView.indexOf(0))); + }; + + window.dispatchEvent(new Event('InChIReady')); + +})(); \ No newline at end of file diff --git a/config/plugins/visualizations/jmol/static/j2s/_WASM/molfile_to_inchi.wasm b/config/plugins/visualizations/jmol/static/j2s/_WASM/molfile_to_inchi.wasm new file mode 100755 index 0000000000000000000000000000000000000000..24f3badd76de31bfe6a3b508c3d64e49812d76be GIT binary patch literal 600856 zcmeFad$48KUEjGM=e^Ilci(51h7*4oMIu0EV5Ns@j?@6X?tq&M#C z-QYj2rLNuoD9h~0TDR2hc{GfL+~(YJN%becas5Vmokp))S-+{i600xX8u%^mjGAZM zkDGfnRE_L)*2mUyh-H65-~0;#16>`1Owr9)9rQH(dE^S(0ym~H1N%FC5BpOo7ruMXDB_3hy> z&n73<*Vk6pc6drJ#k4o;&t^1Av(uC1`Z~}}S5HlJS)sFZnDcPBGU*RzyR-b{U;w~$ z3V^`AHXWo{f5Q8~4~)CBw9JQVc}`E<Fq!0Q!*tT`uT6xwJf8@jmFblKPbZUfHZ5snw$eYfI$7o4srX;NPjUXd z?D_e0^1LjYXY*eF`MElu^z)69zVp0vOaXGl*tv^ZE)`y#GgSC@=P&J&ast%Y3 zasJ;aurOq5_(v@suI00$-#^*k5@f@*{%mEwnN6R!zENbW{gvGnh-GaJ%ngQH3}tJY z4%VQ8wZYcb)<%D8=_SH3eGQu4y#nvHlk7!F4x!y*_PK#9o< zfpRb@U)bQ5UiBYM1At)Qerx;e@XvnPm;O15Xy)Ac^OG0dcJBP`x1a0v({D)6o*j&k zEA>;qH!g-R&Ib>_?xBa?aDVa({qo^AJoL4%f9S#2UVFo9U;p*@f8FboPxjaBrY+fj z@UJCL^~ZlXP3p9G;j8}gtKXeJo_|mNUHSLs-<|(%`kwr~`48q#qYcSN~u4f203f{om>ThyLVeKJ~m0 z4!%6eE`+Sk59%9xRaR%Om{Fjjl|0GPqzFk!&SvEu+2%BDeuQ-Yj;t)|qQJ>Xu=P~4;Km0ptaKi)r^ZB~Pj@68iyj-T^^budqgSiPs0dF|{$ zefFZ7tkb=!7t-@da&eZ0Ec9NQBq6nn8tK&|-be%OT=a`>@2UE`^I=H1=O(wd)kHO@ zR}ZR0qwUwjX0-j4QIaGX{{dxoA>{NstkX-gq#oBjx(EkVZ+D*5PbGC3xEoFLMZHY* z20Xpp%In|#$c=eF@`Xf>bZ^>{u3Seon=bssbU%|+F_ctr!5)FF(T zarpDQ!tk!6&$2kix}1*$fHg2{OBrq~&6t@&eQ2mp((R%=T|kftg6t>+P(}SHGi<{I z_q~+?bCF;=6=4Edh`boU2;jm%GrU9rMV-$3Md%kFOw-;Cn)(;X-aO}>p5Ei%AiI#$ zsEF+G^s9J1sgpahyJ;~$n{oF_?r5|8w!_0i^^}%x)7`1iuhY9#U2i^-LWFm4VT?W6 z2i57`ychamus0t}lR}8<*MIX9$zHwra;V|ykK7Oyp3Oc=3um(*Ps@+IiB@+V*6$mo zyEndsZVn-*{VG3Ww;?^7O=*2YZb(d=th0xO z;NtI#$p754qB*JjA z{F{0TL;EX(@-hF-%M3MauT)%)Qj56&e?o!vv_ zUBj(W5n}=^yL;7XJx%oVbe)3v0+gK;wyM+N)E!wboDOR?MV*$zP$;>!SKr`?q$B;P zxzl^r)!j2BHNBq@LQXqEPB=p5&kO5e_u_0Ao)@++&C=fnN2Lo<4R#@OyGAR$BQ|hKNV|$Qgr4f_A|oWu;)hs@>I0*t_OS@de(-pN=&KV~#rhe4EXhX=2zd)FmPqZa z4toM%(?NbRv0pp8tH|);QrdDpz^dCS6AXEsNjIdTo8AignVHHY4PDAqsX$LbVKPS% z=Ea>tT3Tn3h0kV}`ISC`zOVbViNu4n5G-}VJLzrdHkjAjfK~jnG|g_**XKRsk+i-p z8zJ$Q%(}@LLv~G-FCz_m*XsKYK;`K@^p{}G1Pc%Et)RO4^h0!aTRN(remcQGfvC3i+l0~mt?JJHRdjpwW zd}W&6kXTRV5|P~Wm}d>a;NlgaTJ)STMDLu+v?*DW(mg%%>!5glN^=W6)pLraF4b%n zdSd%tUF?;=YV43SJf+!^HcP48JD(KdQlN2U7;K{NkYNWhp#nH$`)(BSqqLzeSA(b2 zfK`)rYWXKAK9{BA4w$)v38OKQ3`DfRuDp+E9JK8&v(# zv>FObZaeQqOV_$y6q43iL$yd}(pLFvHqc_hML;^Wr;t^A+L)PNO`m-e8->Ir%7!|2m*3|E=ym1>GnTd7V3qvBcF^B~`;Fngoa>*zGZNkfH* z3S>J(a&?|~cXWu&NI81P#Ac>JsnMRG3WbE)P>o;hlgo%ut zl`t}C7^DsWtXk2}6qTt)d-}0>cUos=DCJ0Gtn@x~G4Goe8iuJr@wXxHhUjT6JH4FXOdR8K>h1{6&-s}lOEgkKu+ zrcMqL!Z_NiP#vvL|GFodUhW`NIg=!a1j9~`Em zjyQI={HbeBqeE5fH{-D9{I@7=5)s85tJ1s3jUHSC@EDp-(AYiGwT#@ z-0hsb`abM0UXVU_^?eD9WRh*sx9*Fb-BmW{b*VWB#vNpANnn6f7BJi+Ye*_VlR5^0iaqkU#_cMhn$baPkCrAt#_dl)LkK|rDS%<6)EhJXFy-BmpZ z&1VO@R`#@Jr|r()&K?H1p2Vi=z~nX?vYAl0GU7D`sO`J1%Zh1A!iz$w+K6P)K5adwt|O9gC{t%Vov? znPM1$c@bnKj$^#%lhPdyXHlMNq#sUk5c2cMs{?;tRrU5=`hcPvM$!H*a{|ttSJf83 zk=ABkidyv~um2^k6qCA#$^ka+5WW^=g!@ATLNnaoXGk96tq;F>il3EVtH1E{)5C*D zcz_gL0G6Fg9uS@P%oq3#`D*g@%rr1Z>s!*a-w{f^GqBPjj9C9B0XPf10pHN(jv$tE zQVxvO=zLSREWcZ=+?ir2h~|kw^g)!^OOq8PNyms97T>;=mLR+) z^8ACu@DgFV{;?;xD}V5<{C%kxQ~2R-;rmpV!e8qazCRZJdbjY0V&T8;7XEN7{NKBU zABcq??H2ysSopba;Rj>k=evbJ5(|H;Tlk?^_;0#}e=ipPzum$gRUvvQ)0C%9Uj6gQ z1MWL>Hz+?Sgh*O8&j;s{`w_g@s7$_52KZ*O(Rclt&?Zu@{&jv5)j5~EYVNI5UzAaF z8aki6hF_XlE@Lj54jUvj>%%}~^6>ERN!$Yn765sdzeDwEZWX;fO`~ZGnHo&J!L-(k z*1(}Oq?)g0>c9{t{cOJ+Q?%HYIGVa8h9mV#U*-%&M9`f}C&d{Ig?(3}EeLe&AV~B5 zaf0AT13kxgV00=mX=8K(wGqVJ9#3d)3)j&vJzW2hb_rE3ZDFKd;uG*BJFhNRe((W(7Sb<@Z2T zG;&Ggs^3Q6`n_Slt4&dfW6*5YhBA#OMZ+t+RcraiAmUXhxB>mWxqJcCk}cRE+)O(Gp}jTV5U|$T9MO0_ zv0fs}8Nq?{IGSpFv04GzA??{j+Y~QuHzJ9P)r4xXxH014VJSuoVUX5KR%z0%NriydQWp8JQm@jsp2WZ`wXR2Mw5aYsw^ciRN+&egrU?CV!Ys_#I&6lcm zn#Eu9%4?cl{=7;ylBi$u!61|3y*LxKNJKc~QiEtUpg-(MBGAt83PS*-MU$IoQjpE% z)vPzucW_j2gY632b2HW-!`r2U16fC#dcqQgo&yOkMSX~&V~`jebowMxOg$Sw7h|`} zF9yvB1FSPOAW0=8tAU(%4e#CeEqZOZX{Zr+Tik%MSJg(C+`UHlXarNTlBEe+f2JuV z%D@C_78kuOqwNrR<#@~D2xfKmavwl#ayfL~)$A`&E-YyE&M5T$ z3|dJ?(ZsoKB#!2qK1#!k_)bKWl;2D1CJ;s%jaI)J+%eaP#t6D-nNA}9HA~c%Kvr!h z8jT=UbGl)8J_a8JDn^6PjpR-Cw6*1%4EAWr!M}?JN7v@lkYJecigSs*;wZw)7d+`j zDo#2TEntQzPIDln&R@YWjdyLLtI@?u0)Tlnd*R|02}DH>s*OW5uSn8Lb2FQwqOHEnJ%Q#dgzr3Klo` zA>1PfD91I;STBNA4iB>{xX2B^pHJ?tS6{J<;D8^+C>zNBz`FQ)qz(|ENnwEwIxS4V z(2Ds?_h?z3tQ%7(5>JY&*EebfosxTYEn=%UD^z8`!=GRrB+t_v_Nc#Eu{2)8&9L}w z783M~`C_;PnCF106x%xA1#o;gTi$eX(%Kl6`k9{H^ZmkH^9#tMmI~;gZ$) zcT`x^HZV|Mlz;G63edsDZ)8L*TA~RV^Rb65fpwt3zN6^}^mZkj3u*7wFY{?Y(UP@p z^(b5#;}a2{r7^xI7Iwy1kuYLSs}E~QOGR>vOlM{8zGpIU-RGp5w+;I$79}=zo$Rga z=NN+3)nW!mJXD6Lkg`Xja_>bxo*NZ%`CPPfcfY6&Bb^Ij6SOBUjxIugLrjVs0js|g zSrn)_yl#0yU^2S4Ecg&ZJ^_}MqA<^3m7IS)ho{Y7;0;{wOfIa9JUqb)`hKP2e1QxD zE+xa{vZGPX$3zk){DVE=Iruk>Fj>Z7sGul_(*oDb9o!Z8S`Ph)NJq7b#K^B<=hSCy zxr*-SDy}$P)w&07YwgWNQP46w;oYgb$eVR}AbElJuUHb%-$l6zl2t`D%P?Zi4lr++ zEz0_??56o9zqbH(E393aZ?oz;(qQLP8vz!mTHKajjZdKv!^on+^Aj<6N^c6(o@ijL zPN?tO(#>iIsGv^binP6hvN@=xyK}msfSa{&B5dkrGi-3n&4#2P_8%gSwQZm0Z4biF z!fMzOToEf3tMDbuMk-(HmJ_Kis~MUS@Jg1|6#`npk`bn-206XY_N$Qu9wLhRBaF>E z_BY^Z7p<^)haV&88-U@6xTr+1)1+pv{ya%6cz&qco|iz2z1`wBhv|0X z`9GQNSN$`G{O7Z3GHZ7nzKfUvOhjzI{rcZZFE-e+@GHrO9h}2MYff z-hu)(UZWZ+==N*Kc)3XmK%kv&OI~|t`mq!p`Z$1-0uwnIFSYlg^juY_?fR+fvcBD` znQ{Fd>aK8g?`BYc#=IMO7sP_Nyq3w7mqgymp#E&4d&9le>Si-+3WurTkgT-Z(iho}7ts+!jo;+7ZBevLQw9ty7Jn7*#s-gj zYf&8HTr_B6EG(jj;3Qb@k+frL%X-zGSe ztTWyLhpPnlfHrY6K>Y*1{P(8&G^JSq?q44r~3_;SgS5&CHXgMOGMSP zIzigbEdh3;-n~}8;EiEMUYkT5?Lso#NQ6h7vFdNat}`Y_f=!wI27`Ii z@C-|jkeiV$F0qlR9NE%9WgIEF0FTcd59x$axcT z-r|a|%b^t3qjB&=%DF1v>u=CgLG8;dv6kdYWky?E-V# zsF0Z#H3M?gt|!6?EibG>8?P3`RMYcq&!eEW5Pnl_MAoZ~v`OVwFKhMA-uwi;cy~=N zJBv5BF`d=$Ns2a|EKhk6Zx!ON`fS*~Eqz}a5WDY_|8AIG1EQV1`r|AvoFX04ZdS?6 z8(b+7`k4N@h6jWNmwgm z(=%la#xubwcwvd@GeK!<4!|KOHJC1xs}5yTY*2!kE_kMCHA;nlSG6dAMYCxk9j$PR zlT?4cqVYBGS28s#devJi!p==^b%#Wd4-%r89+7^tIczoaFyD)2)Uf#d3^9SRy>+1V z=sG_@N4SU}8rGyCXq0J?Xs|R1OQvc>!$6{eM1+9<&Sivw$EDP|og@SOiROT8(%V2V1MxwHynF$s`HC1!25N^Ew-8mp!#Fcdcg zN7^p-y$pQF@ukTQ(Mrg9204%R1v|LMjDW7MR#P`XfS*8RL(_}pLm$l0#FNGUq6d6* zFx?sq#%Qfy{79xe*+iRcgmSh7&6CIp3P=iR!bWWYZUTysrktV-yFOM+n@DOhM-kV7 zu(^<@f6y!V>LnF>>CR>^ ztH$?OtXbSHRX#JI3LwJFkTlK^sTNaPF~C=;qrE1CfQ$gZ8#-FcOiq?Eb=aP=2xMq* zbQC4JS!+6%YI#UWMRgG z7#{Oqk#~jCcsMDa5C|sJ9VQBUwFe0l%BBmc@K+CeWdQN&+M6uQ#6N1c?T+^N^2uY0sfOfF-%MTb3&D$iFhGKp~ zMjq&9QPG@if#!{u+kLDGjKWCRHXv^9CXRJe-DrTUComN6#`>I}(2$3% zToT-^D1t>A8Pr8g!3;smo2FK^*UcCEJgT5V#)7w0>=qxj?pr;o zo&=Zl5vGFvz*bi+f&sho%4H0e+;lzb3Frvra&F@znWW}T30;%cFpH=Pd9$cZ3$eCj zyJ{<;ls3?mKtxQ9>6AWf7HuS}BX~}<@=sb=F;qZ-I611QFnkUzu&CQeirHSL;-Mjn6-&jdE6=-R8T-{qKXe_|`NGs$Q!B|thJ_wc)j7h4ox%nbyX&NC< zD$^DZG)Uh^#0ri=VN4ILpdOV7uZR)$t!gUcpKi3{$m-Sq!CGq?T7#Y8WIblpdTfM< zL992~YdNa6{7rkXCKHdG3|%&%dzLfgliJ3uJgl>`oL{JCx(6j*hZuuxHHg0m5cJXSO|=ch-IVV*-Zyy;q!8l- zg;m+IGP8CJ71H%2T!U-un0AEIvM4-?d?sJgY~b5bfPz&DK+y$B z6G>t$e%eA6Zd+6kTRfe6z{{Gw(-DMjF+vP>k4(Xkw!o=$ERiJZGbiZ`!=bDk zrfMQfWh7GFVBWUtGgLdFgytSgWirpgiLdxW-(0-IEyD2dzQ4fypHM4M39DIJ?K9$} zy4(kPX(t-_MBgGgc|IZ|S_MQAjdu014mc1kXaUE@0z8<7RwuHGuSl|xFo7>U5NIj00|>N9Kvgx9qH z!?xiUzQCZ0hD%wvW|2#1$qwmB^K0;#M@-n#~DZYxpW50-mspgrQnq^hoj1~Q5 zZE{ZGFl#W8xxce`H$D1pIOg5c@m)MBH-|*4%wPQ~{051OpX#yIRnh^_@Mc6>{rXk- z3TB)3S&hMv(&-~anL$q^dCjARSI)?67&&5SMV^~#aw|`M%o{f4)IbT*1;f3U`cc4Z zIl%e>RYGQleZi6oZAk2Ek`UMIAygOu$uEL0+=@d!S=mH2WuAN6mn$vn3Yir5^lW-j ze@%~!E?%XTNt7zbR*>%ti-s!%yoS0EJQzR%vW-L-t|tw9%F~g%0K`&6&DJFkuDMdR zu^XDeHd^zhu@}pOCsMf>{FK3Kp+pm7SRkoPSg`%WhKe+zg6)oafI72)sUt%&*|TZ& zcF)&B;7W7pXn9}}R9hjzZ`;RA_Z5;+G|^?%lcl5i#Ez_!dq9bBp+yq8=Lm(dvIKF> z2gU!4BZCo&j#lUoGY&&LZn4a^AwK*5q%B&*nXV)2zSIkPXg&KntB(qfG{_a3o zQ*7@vyI)yWmT5rgs};8sH>}bEWN&I!KJgl5p1qF#j3GVRlWz4UH)s;V1PV3Eub8^k ztd@dHOBBWF#k6&#HwDTcnWH;czm%i0&@FPMwcNy6D7ug)q>E9RNfld}w1t-L;ve=3 zy4)t|q&gagnN}t!w1L{)tLr}`&r~ZGf64~S;%WWg5t&nL!N!|@QR7u?3@(;jVO~Tq zW4p3erScWCpAu$H4x8=pEI%lhI!yM8kImDaW(DraWWVa2k$nlxAEEjh+&?B-hEkq< zLey?CO{2GdeP{U=_>2gXOvhgRQW7$l0k%<%nnV>VY!1H|)NfH!Y{sH$le8(TK(eSq z3N@D79o{Xa{tihYiRlbDgB^!$Xm#AIkVEtM4H6x=JNLWm>Y0OmZIR&5s{xNhCjQo+ zwLqTkNS-3-!yPmYYbNFU-U^7?=SNGBPx<%tJKq1e?rmpC+tj(_KD&S2F-?fQ40<)> ztTRzJJKeh_Cj@CDli3x}Fg0_H3 zSZJ~g6Lf`XCrg8fY=VQQtisL;`Yg;^CW3~TjTzm_F(YQtWTk4uIgY+W()mR3tU9~6 zTa`YnQN*ZH#6a+m1Di0V7CbF^YwTRXJ7*fu-RDu+>ogz)R_$iKF_ z0$4G3SE1Q6a>ALl5!;9UiBIJn*^6({KD%8da$$+!`-oQgiDiW@W@ERR8EBq{ipU3& zjjKQ=n8FZVkdhYMv@vO9$vXA7iqlY#oeE?(0oQs&0(to}C1$es1|hAW8X+5r5?ZmG zC{VWMDY@e9K(ZM$Qx!77;-q_iE_3z(gsUCi=l00c5s1rlBD!7(@`gs~szZZErVSv* z+7b)|_rL^E5*GG^mEulqiWX6~wW_5`pF%c)GetP@Vq z70D%&`*FL}V$P%yoY$iEe{PJqvdow(<$^I8IBB5`;fv-mM49D|9IzfWzaERfj4*1I zH4rWmdLgofoKa$LOA1Tk=m;qo2P?hX#JVmIxO6{OtXE1>MHWi}RmGpEX#X~2F;g6Q zE73cIA~7QZsj)n{Dk4v+^IT`SaaLAKFzBRLRWm0Ug67~>6ym0>R^nR3xC3e{$^gO;gk#%{2MTA!_|FV#Vn>mJ`DvIna>2=T7HNRVO^#{E zbr;YnL!W$4QlP?&Gz*%FXO&@$xp_htCna8($0Oop%f$=Os851i*h0E9B0iQ=?eMln zsU4vc6B%%-HP=&fSI{daOk4RGxq`)y0V`$^DK<;nz8+mLS+Li98~ICU-qr_gPL}CC z0neH%%d8|1%eZ;9QGzTZp#)buN{|vMLFNgJVK`%pBHIX{OjI(sSgr1o^s!AY+I-vc z;)ynbGKN%`6?cU8MF~f#-|7B%itqiW8#CrBJR8MZr3J-{(na-T^ja`iR1b|xwF!Qb z;_y}sk52PZDq@U0Cz_v$<_X5q#)9TS*_O(XM91x8u`WB~3$51kqpiO9~hog4t> zyRukzq;$mq|Far^G}nTVqq4vXXkXYBbfMAYHGmmGBB%+*%jN_K^MqfS7|K$$}}S zS>p1=5c@zXO6uAzcfbGQEO++u_Uhw^-5Yaa;E)LuFHyYz7h?ba4YA81abkys7R25Q zYc}Ic#GW2&*?w`vJ`PivyGSLS4!n29UGXtdlCAoE;>l=YdQb+#$pt4NGR0ik5!N|W zK6uocwHh-0^xLvBNl)ldf2Yb8Hb)s98DIwt>XA4b)GrS*|U? z@M-;K_MqD@>Jc!pdTF!0fF=nPk|iuTO!!S(2lBXefU@?5*zhS2X*`G1S^k@)10?%C z^EMgu1i1YUxFHjKwZiwT7O)(w{eZ|`u&f2|NHtmUSgK<>iT|TP)XHai^=CN4h6IHV zDa1n?R%|8<*=nz;AYluR@b`WqLF8?Ej1XTNCC!;QdWA}QE$%_)?lOgz5sGoCg$nI; zX6Zw9V{vN5Auql&Wo6=z3K1v&urLx~QX`mM1{cSyJ7}8K8yrf==4m;GWPn~V4;=LE zk}jI$O0o^VE%cw6wJR-m{kTw^;Y{D>A+ z;om*<=xZsCh0ym^oH+(xzL=)8_;_cVAe)B<-oKs3G^An6$CYEJyK`S9tPV#xBuBcyE~)a8{s(@ig@RqENvR9wHQ z$%WN|nof4=BySOeY6gd&y)-!b^x?(9X{2P`8KOuX(B18_Lj)pmEA1U3#ib&_>$Y^~ zt9h`3rKNQhWaM^bqSA_4vsKbOXQ@vB7z9mecv!!{P`So(R>*V=c$hFAf{`?Tukt%A z#6~Wb@+-J#wT!$Ut9LedGwR5GXxUY^9)6WBw)Eaq@O5~vpfz=t(YJ}NaAAwCmK$~m zE08gCl0s4*WU@nsxgFf?i(MPx6lyIDEdZn?uL<3QpIMl&l*N(U!iUo5!0xVx=8|gH zd0|2ioOZ1w5Z1JI!-P~G4tIlcI8RN&11w_#4$av)p75gazm6o&w(+b>S@fhC<=}3|&#f_5(%qv*&W^}jUWWtTMvS_JUsF0S}rKXnT zzLPq~*>*VDRG&EfiE<791ER4*<{d`du$xzR3+Bb4*sEsZ zQdl-JFPkKddD%*_tzGr8IHA~-+CWOJ)TU)3{`^I$;o6u|(^*)`Bb={*OC2l?no^wN0DDwFXf9@FFr(t9gyBNaE`=!*Zxf`>?{A!$o# zmR1K-4BEWku82lJ0pTww$s9*OmwLl>l4rAB!zd5_jMq9Lem90wPBeh>!F|u8M-o z;uq_y*>t}ZR>hH^@H7!W0)4(0f8COz*resJYyry9IFdWH!ASu?B#y+Pv^zLc968Wa z4`#|-g}gob0abK3Qth@JsU=5Hxnu$jieK(==$$cOPYg&MDeBD%mo3p9Zk&~nXRWM5 z`)i!ZuhUE{mnMyYRnJY9VtU%9nLXk;#G+eUMBUgj?BS)o%*W+3D-*_u3hNjcDl-3jWQKTT?Z#A`sn`i4!SUU~)LTUP7) z)rQhfMu7{c)1y(KbX`=&9Y_XP5=K9iR`w|XR?peH8`ckkrx#17@ssJX-2j#p$eYv( zY)ipoKj6`(Yy~@`y!&Y6k0kxIDM&A&OErKI%!Lg1!we>f9_d6tZbgsOfyJ{Ic+IA1fshj;Cfn3mywFucNZIiY^fHuHD7hFJ; zxLb}2MtY7hU|ZqbS+b*9?GpsX&6bd7?bw~ZG(qI}q^a9qd+cbz&q_$3@XR18q#${YI z!oLV)XkZ|Lf#V3oX>}whcZX~WJ4eH&HmumtBl_B*yOseG7*Zg5IxrwYQA!d5#Gw(^ z0z^uUedB06VCA6Dc(dmV2V6Ao42f)Jb9l3k3scFN zjKfTXc@E)Xn1mFPid{^aZWaV>n94WTeA}s4bqaGR_8`0`kxg2AEie8m{_(=`ix9R> zw_Dzv*D0uwH@5(;e$sdD3M>=@TLt7*W(&J8FTT(_mK~q?)6I@C-uzrx(MR&1g%#~& zhZ;4&l>f=IVzWq-(BDlGX^9ErWd12*!goIxCTs_J3krAk^8x;GvfuyGPp5qSt9~rI zGySl_X@}p8R>P}CP3|bu@lhlZm%~&ka5!EAc&&Z`TM9pHp%=wFRT$%1^^I6Auk5Ba z7ghi19}LTnSOdgONeZqxqMLkjt+Pw^GDftzSiCnQ`ynfZHo1KHg=qO+-n zny_^i!R_ESPoj#IeMh9i;3Xlv9+&@E08|^Dti%nD7O~GdaW;dAGWSRUfSkwJFfXKg zinn3sk?$*j@e}4)y&FpUVmpil38anobiH^NA$HTa@}17(H+eHZJ;Yz9_k zP)6*nM)bsIz()?tZeT&wYQ+I~EvDF8I9e-?)@u>-inTJ@%3@ngCU&I}9O?{mTLoD< ztwf0xvwcSq@uWw|T;>9%*fh&PaPu@Et=k~q3Mc3J?Ib^MEC(TO}s8TPG=>(__pN z$%$$CCgmcY5_r>50fud4&(<&eW5^phkk8!jqVg^JWs~7^?3V$7|GQ=b!zbv8JzL5& z)Zys}H_uxhc<6JNd7Wwf2ZiQN?-+&+6(Wdn@>*p|ocleXW;uD>In%aAMKPH(7 zAbYOQtA$jjC}}OeUe`YOlJ6`UU_@!+*3l)f6=x=nA&A^AlhD>rO&!k&c**L2$Dmrh z8<9h5#lAiAGfUyq zdYbWgxyf7uPKf7Snd9Z(F-!udJf;)8Fw_rnuHXg{3E zFy%+L`%W>~=Lth0E9{Evk2X+YVw;JV8hlG$_RObhA>nz7t zbcYb<(#Xe{+2JamY+4hR;znZ!i2+V`os5(U9QXdSm;tXNgoa#UDn8$F#Rx?&HDt%h zd3NGaqs=(!*<{F5!@V=~cL;Kee~==~!33!za!Eu=ayfj(i@WxFSY{vvd>F!grng5*@&31$l{x*c7mKFJ?22mpI{M3>u`prC9B1!f^y1?!T zT2@!)@SuO0S)LJIyh|&9d|6{9oisY=F&311J|G4HB=X>lx3puPShIG_52dcP*T>v+ z6W~;aN&t~eUk~0Y%U{kv^)3gTe{J0q_#E+sGSLrh;}W&7aa2Jb8FU)n9ob9h_A%m% znv04^+eD9bkN~UQ{ILX~X*v|VF_9l~%w6zZOj81K0k+9UdttAM6$ zu?S9%<`$b}m@LMC)U?NA8wtlYak!Ai$u2+*Ncgmt-1<|F=}3iKb@?4UaJbt5c} z8cOthkL+vhND_{qHT$%ZuxhcUP=31rLs=@v*e7`kLao}djq5|VvDqW5Tm%)*s+aQL zYqp>n4c*vNK&nga84>~m=btgu8G|zK1nFQ1foUTSCNWW6v&x%>Qs!e)ew*PDJ+RDF z8X)JdQQ_^X04dlOTZ=8Rp6E#+^lH5iK%d9~>EOv>$PM-2Gz#7|dJJraDzbtyA7gC9 zu0?S*UmZOwMWot4d@X=k7W_AE0|O2!4Umiz$J)|U2sp;3}ogTLKYmRd|mNWsobxX~g?Krs58 zp=w0_F#yZRqkf68*hmwhaIFKV*}_n0IYU`lkG0`LKE=0zqLr4uJZGPV{zrwst{v*y zZz`f<#AXPv7$b9@3ON>nZ}{f}YNB0Uf1iYj*?2G@l=H*{w+CLKW87P9U>7QV zbFEnzIR0@Z0oT^foI-lRr&t@lG$>2L_z??3eMMV>r6gh~N*(LlFd#o)7OazdkboL5 zlB;KdQ~X`F_OejTXMY1WMoQU9CGY_Bu3_I)f^y~mbWJ`eyQ zN@g?&I@(6sw$Yp$B{mq~W6N972h?^^AH1*Tswvn`C6TohYR9{fCt?PyKUo1P%r6=5 zI%;W&yvw&@v;HVV&D*dKAIG%go^^(? zq)bY4viLE-1*00yXjJJbS{X>nPYWO|Km|n92LuL36@Qpc=LX8GeOKcaxGY-Y)bG)V zc7*Y>{uJM7ShPjQRti7VAD|vK7?6D7BR6W?d(A(h_VAlnsg%hbDR*4k_c!FwwDh;S zOn=RUBbqR4vE3ulkyXSpH#@+F7i}Yql3}%^&nuwx=+D22nT;`go6tM?pz6cq4am9U?UOg7( z7F>%<@?vvWB6j3dSOKr0|MiF&kr0crMr+E3y7U_7_G!(iLoA9kb%Yh5-kNPl4~#5_ zo)*j5z~oRb_yLxU{Ls@U_237I5SN6@J)?ZBXQL*$@Ic*T3?Qp6%U_D@?#B{8(_7u8r{ zmNyu?l0|5J(3N`Zbj4R5j~&jRKv!V<=B^}fd{oWBU<=Y)#-N7d_Ea$a`lSk+7s+^FVojP*k_dNh$^lbQFxrtGFj^tkV)qu>htPE# zCP^ixxom>ah`p=wN@&$g0JH(8ii`n3_+5b*0s#w zYK^t9Q~-mNRd}f%l^UV9$izSxmD)gJsn@3Yefx5uEqQyC!K;&*_nJqV3e3Mj^|cPbWWdC81?-SS$2AEW3^+&Vql-HX3>td za{wW&vDx0rno$)Nyx6t9RHYz|hWs|ArFdc#Kc}9SqX>)2_%@2*QL8G1rtkI87I0bs;CR?PBE3>2#3huI<7Ly6vk)POFLlGY=v@9eaSx9q2qx z7-+zzAwOtDgOYQ@fdsZq(wW*nU0F-4*-;ub8`;eQ!O~VvOBl$6!)CX`WjeXg9)Z%4 z{|?xYF?K*aZ74Vm-z$o8`ZoW?OFV!efbFzTq4q3d<&6!gxkKSrq!vN zX;r4MXjN{Grj2B1F84APr6EF3MxU6x%E;=_C%GYp^Z=#W-DOMNHq-w!^JQnKh-_$6 zG^!SyMp1)QP?}fgX)_VGMnA8a#Wva(y^+}XN1ucRO2OZ|M;!8_sT2r`;X?#z{b}YN z^!fL((&*JIrF`k>02O5%FG~STn*2GJfW$~tmsM)ag9*(5j7jk(Q3aGsJPG9^wQ6aJ z^3tFa8B18l*e*&eRonv2HP7gcTIP`2$=^C;*d|MAa*;}ndu(adV$PUmg9g}(hoI*5 zhl~^a(V9hI0_i^Jg)yF zj2WE~p~UMv$|EKVL)W@{{Gn3R8{43jn64E(GaCW5W{qEkyS zgIi#m#W=-!MwoKXmRcgfq7)<~DEw%0h_lD+l2Y<9VvduhdB!xgc_V!MZa0){w^uEt zrg)WZYROWSm|Ehsx~U}`XBQiS2$oYz_+*9|nrt}IX=H|?=bBo=R)uRab1k)`EIxWG zdd6Wqk}cIFMlEGaDRkCQF67vuT%0W>xLE8)i_)w7vw-IE8!`Eb(RzH`s)9PvD%b;z z(|o`V9%h?@U}`g=)ZPk0mIDw3&LvFf{FaOiBw^z3_97QB*w*u0>;sC5$9l@|pVe#$5V*|2YBIm`J_SaE8pc$wu!IzW1X8)e(` zeWRE&wLnz0VSOmAtAQ5v9?{g$v!$j)dX^c|rDxKu!p1Hn&8f?aN%2|>lD2I%vDQt* zI*P=q16f$U*{`oZY)IeH!Ldu(P2aGYscyD= zhGYB9O}-9szxp?^-7I`)niSm1Vv@_sR|l|(7rPqe^Yo;Su(THW)Y%2KY?Eu>JHYlh zM8Pj@xa=2S=##j=$on1m`nb?xS^7{}g>Cb)$OB6IsC>%+8ZKlatg)ZhPiH*kdqV0O)b`Yf8njfe|3QFX55;f7L))$I9Qu8Y*Z#XCTFt; z6pQMy$UvVaTAWD8b|`;DK`lPp4S>V?C0bpis+=rNIg}n&6Kz1FemoqozVmocOi=aA z>=jYfvTwB^2E_Nv|G^?<&APGN>*Hr~Bsh9z6?T9{EX4s-hwHlpH+iT_!aGsnQ_3ry^n z|L91Y$Ba1Z!r5qL!D($pIBT`G0QH~U)U1KpokW3Zy$e*(ml(YDdko{oztQ zxF+=2K4z_$jY)Dt2I)(rozv)95bkVH92f80AmcVt{*!!etB9mu)E`Gojzp-rf<^je zcBcJ;%R0~Wi*rFNHapG6Hl5c5Oq$Zx4eN{!5OmO@Ud2?avX2nASAo2x2z)h4wC*R|zp@k4jEz9tK}{ox0j z@Ez`i_gOcH-^K7$-Yv^gP?zd@U2@yD^6Cf$1}tWzPeL!Ymlw}Ln?l06K2yj?naINB zsRR=4HqYYcB-x~Deu4F8dJ@;ig6>+lNFS-T>q&%y+-D)H1J~vq*{28^aCDCHC)gjT zARAwRuv&LypVpNp5wSfBpT{+wSeY!$utPfyy2t4sb`FHj5DSBJe2ud~& zDn0GJDwWK3t01!v*ou%iVSB!Y*5-2-PB^yt*yP<%n+ep3jW5&hmzddLpRp8K)bX4NfCpP)uly;EKtsaw ze!{-aBbE+C({`9>ZC(olzT2x*H;tGw04RUjP`T(F5rL$jeM3(9_YGMgey&|Y#oV}u z;<=n=5NYH_lwc_~EfK)%s)Jur-fw4gtfoN{;5p6;FjBevxWO^(Ecx=e8KwOAZdsGK znDrehn=g&F!-~z6|JvcsO7nT|Hy z0i^Gr(1~aqsZE&y-QS=EFeTvU^he$Xnf-v^iL*n+8O2)14!Zo+hTgQ4V4s?bEg$+J zD74Ksdf`_`^ETw8j4}W9q;IC^45R#vHOb)XVyUD&QX>1q z9Cs6^(qhXM%$PS%2(2L#7w5(mB$2nT^M#Q^vwfx7^bFs%PUTied=e1HOhiQ6tN~PZ zF8Oa`56E#bkBku31QBdFaGF%ND6}FWlF2xIjulZL{U$rJSen`9&JKZKN^#~V*#-3Q$I__E zZTqMEpj@UG%XHFAKwga=(iZs1p4@~>)$khUO`eYLpmA7C(5T?9z@wEqEFN8M9+A&= zjfJPinBuLk@kc9YS3t`}VL3zBL8%IHAy8~&My@0OT$mPkM~lWq2W0z^LFzPA>zhZ| zz;~$JzEQ`B$u2nglo3=3gkI(L{;7~l zqR2UyQN`*nP+>BPI>9?HT3TA2>Aj^L!fk{O?;Yd5>OsOB2V-A6jNgIJl`og_Vvhr3 zew(8X{fnX6?Pi}3XVwWED=a9m=eyygE@lb@eX+j$8OcZ<+mC-FL1NnNw1g$!b{5Ob zPecBk1TueK;G@f&MQJK6Kc5WRw{sAu))ozD-*2GK18P8tu|Q(GxG-}G*nkMci|q~$ zr%|rE`!EzTfG)Trk`;1J(;yv}m$JLbqJ)UGLdQ~!R_J7lqkwfG(x}vO?ZV*#;fQKE zY(^8U6@g*QE@OF#g=U>=V1P(3U`RN(kh%csq+Kv>W3<5B^)62h2?b}%`z|>$@CBhUCM~YNYn}{3Py)(8|QFZ6ydb&VU4kn zkZ2`F@e^6vmt@7M$@tm{m1rLF&fcJPuT1jsWl`jqv5Zb{r5IC!K9%fKX(O2^C7Yuu zZDcE+3&)r?rHve<)INNn7SIanxOv13lQQWqER~))w)EVwrEEyj*|AAft|lQ#Gzn?> zNoiZH;qhe`em>RwgjDz$H#QN;lK8~s5%DF$=vj@`BxLdKA)i!(y89V^vH)e7vS(kr zu)H4Agm$cotx7910=iQ!1&h|Yay}VCK;mDG@DFu_yddFP^1@Olm_7biXyXl4$+*`s zVNAcR(D4Rdj+Qd*Br?|IM8W-Q5qhASAipOMIW!zX{isBjGFhdpc%ozc4wLdR$%Ruo zkq+4_mSRfw>igKXqM_xYV-!J*XWLIUH2KfIua$5_m`hiZIKI9+Zls(n01f&cOiu)~ z9ap4eb}e|J5w+;bx4pO7FU*B=#q`V$#IE>Q*tSkziN(CC^Mm~Su$iA9#6>fMb`^Qq zQ93%1Ox%J=sndkg_As#-5t+FT6Dzcr+cJ911C?IV+x{ge`_Uc>MvGWYv4Z`8Q>dL_ zxoL@RoA@^usS`BQj+pEkSX`IVfm|GaAX}edqvuT{IItUqi9)Edxrpp&sk8DeAtH|{ z+SH_)7N#visMTQP4e(&+b2CI}V#I()gr-5{A0#zVa6-{@%YzYxbEKP}{xu655`ehb zr*YpU_E7eG!O;%|6J<$Sk|x79lO;Ymn%oPTBZy}0p${9zUbO=c#t) zzS@EF#2yj{LdW}v1Z~psG2kd*5Ht0|ipteLAKg>f1YuFz@h$d?A&B}F;G+|_#8Ihw zmAH$9NGj6e3!OB_7e4#NYdI^j{sSUHO2JA|2ssw|FNoePu0`edK^oDe5AdU^5G-{M zy-BDhl#BF;4}0Y=>V0Ls42qx4$!n)+mr!EnUcF;noadCf&IkGTikB>U(ic&%)lnm` z<7is&tb+x3P9zquqXCqVOmptAf9OX){8Kk(VnAdgIz;73Xrzb&nK|{pkr}D_E*ut# z4e*q01nVv!O#PF5m@5~v+PwO*t=340zIkd`EVEjh zxAlU(G+UYU_%BJ*G|N$)AV5cd`N=2>Am(*Of%aYG^+D)Fb?944A?OvU(0^V3N;iAusVYx#( zvX`)8n>*5oVi{cjsgL!f01=|vdIUyN- zMwr~CTpcN-#6^0$_{a_}WJaGErxATWKoKB-RfluJ!HH{7eGM&yaEk7j7968+np=!{SpdA#eGz!aVV92?P$OjQI!Ezw zItW!cV;HQ$HQ1xicd4_Zgr1UDR>CT(-zZdXYg`ibgf9h=eu`RI%H`HQ4VlIu5JJs~ z7b`%Of?q@FhFaYSC#VbQoT!<-6KD;cl1A6s=9(W^JQ)%oXNV~{Nmau;t(q}qXZr!y zs?WI{um%JAH1IK9#ozd_mBgJ@A!F*QiophbV`!_>lcw#)n8Fnk2qk|dFwzRxknHfP z`p7~IsCIPJAjVjl_(>DtUo2bNM)ye@m5BAH#ar~%cN5+{V3d$(MRZ44SA9K_xTcb{ z1k9k&g#@pw2>4gKrl~~)L8kAHBq&PVzEPp^;Os%Qnh}I~hQ`$$DHgD=?%dU)zL1n* zABcH#eZacW189D^lVX)j2)VhOZuvM7t3V>Ucq<8yyXvXBCgYX-@Z!BXS1_#GMpK53 z!XmSbN`#KSuFOx@amNfg{o@~WJkwn8G<_vyvSb^n6Wb}~nW4`LwTCco&4}Dlp3XqZ8ZdqBDNKb-dUScF2|r8nj5!<=1qkKf(pozo zUqearm3RmYbYYO`awa4)?4|*#ft3^{u)7_1B;*B!9=;LnX_xwL@t#q-)-33A)I!b!XM@#0k5Aq8P4A&bU9od37V;^F#{;x>@qi+l{o?=0}2S4!7y|EhG81puKKaW{j zKp{AdULO`CXU_b03uq`#U|~K#X;t2O^ws$i9?glYwJ|xKL`*0F&CC)uv*Kql!M@rT zGYIVpA?Z?0jd&~)zLt5|cKEPp(2oix{;u!8&mggCOR7-QY4Z{1B7S8YaPPGbvNH~5 z);LF>lm;<;Nm>lr@wp9&joa-`H~T}RJQas!XW%O&kwWiU{my}{Zs|}DJ3L&oj8N;& zvM|-eFd-80Di^UQlpua(JH>K*LP;pr1d#+e2ORThzQ8SG5OiwN*A~y3AVpkBi$RJF z;YMHQkliMmQy-`2M;r0Pp;1HtvtK(g+G5T-<4t@Be~TbvC@ms@xu|B?f<;5}yNT=D z-6rEwo`9Zu7*!Dgt(Ea{4AFjR5`%>#MFv=lI=zStObG!Y3h2>@hJ{TBQ4CFoDvt+k zdt`vKmc{k)pzWy`Or%IBwyNQ@>*mhHLj0=)S*n@RWkFLDa28(U{Fv_f~_7>v(J zoN=F?X>m~IifE93ck^LQ&9qF1flWOzGFuk#l^^@1@4&HZFNqpl9svU$yB`8oJ~bP z^>s{DaR(#B5`8Y`Q)#2DVtZ_OB}AeHK?}T`+|{O95u!%MM@aA4Ek2pza+*nEBNnKp zJ3Uk-9cChfxGPO^?lSINt=(0li*@fBSKG6P>Sa6x>NMx(bHIymxHjNrISL1frf`?C zGPJPIdJOs~v&YO8=9g#;@x(LM>)gWStS!hHc}3T8ETlyv!frJdt?%W=BA*6;UgR zF%%z~FKy?xV;&e7xDNQ&7c|OWky&ZequdBtwhB+=42teB6g1qS z@_=p9;8xL#m2>vKM4+w0(p)5s_7Jv|siGx2)q}Sg^3hI>w(u0>$z>0-C~U{APCz38(jJl(cW7sdF?|ulx>;1$k(p5fP6f@1i2}Z2IC=c6(zQk>hbS zF4SuWxg^oBX#pRG#l*fkm?wJXJ{rEW>6C>L0Tw;fgpimb?G1o)!*XIUb+n9 zx%Ff3(L-)|zFB<(6fE9OU4uCQZ6h*ML_$VDq8e|6nXpE(t@PGv(rs32pd@SO;d!U(~o^Z2C3+~gjCU>(Eo z^wZZ5q@<<)2N&G+`Rd#0CQ&;A_jFs((lGEhoJ75c1;9+0r@qy@nPw z0)R3O7B%)3)R=X$VY7K^aVimFu9=U{9RtU9F>KG7LG8=2Eem|EZJrhs@Ck=QC$dDS z`b!4$UvfTAZKcesfK5v%5hjmm5OeG~H3$LdV<7aY>0!DSI7o}vpt*Q#@+OzVo1-K8 zc{EH2nt%ub(7q==E8i}joJ+2-e1S~VmJ?BoOfRJ5QbTeM|12YP!xeF+iBVWF7Svgt zYS0&1>fS8wPrytQd2QpKi`wxep+dE45clbydFvtV6GqXmr6hOM)TfH# z_5NMJR6SvaiO+z65P+sMY@B{E3>{kLp>(a0F%{vw%0MrPG; zKlEjVDRg{z$f1S$%ccM#b#Pjf9?HD?dx%Yt$UWgzk(UhlVUv5ymJnM^P|Nt<%&-Uo zCkhR1zO<>J5kQHaL7syd;AUc?!1*6FS*SF@$t%=~?w^Y$#UJRJV%y%*upxFivs?b2 zUIsUr^`ZdHqPXf|fHPl~AJEF-o`Sh7z9lkE#T@=WcmVNi=~iCP+9r*`f$9r+4wSO&pA{T+ z$S4I5M0h@tm(UkZ68HCAg93_AP?*Bv7b5`ogY6#B8kVFd6se#`fxZjQ$^E3 zyzN|~Y5D-KB=w0`%<>w{T&v&o#J6d)MXpp4!_dt&k!fD@ZN4pII8QYF=}MmWa`~I} zw;LQxArKh$K@&jhXjm7Mw5dtb5u^6?(c_;0 zC(O-1okWU_1pz?rHox#IT3xxdkz|Db`f+fQ*PEJ~wEkHDOu2rV&c}_O$yc`WEXyYO zg#QvUp7@V@q14-l3e8T%Nm5$@C_|@varQBfhOB8Epsn2|I;Mg^ms)7}OTLmhH~t`5 zur=MA5>ttB4okB?`&^_kkeg65#g5!;QmxOLXP2BQ%;O zC1h@*oGJm@D*tckn^WSHj;#HQ*n0~_o4Z!?_olESNQhR|E^TB{oQtO0HnQTM|Ch;- z*t~f%q!VQ_>)Ol)ST#)kKbno3R9~Gyd9sK)7OX^mdfrbpN~2MQJ$J*xC9_M+sJCdU zwzzcMgqoznc7r2K%taO7g#?w^nbf3sXSOiGp5(l+NE+fPK*Rw%!d2Dz4FiI zne$&wFP>IrBp=aD*!B{M3SUD1+fq(F_O zgVV36Hp?C@IwvlIII|`G>_UElH;_Q`dbJxA;YwA7UNHqVj}`d?lK-Y+c+Vo)O3e~8 zqkB45y&vC%sx^h0yNw^4t0#VJ8(k}M=q5iXOK2mxxT~$@QkBJDk(bvvVvSFgT|gPy z5*k+IuD(YS4b5EkE#4d;yVXeSo;IyEfU35@Op6!NY<9uCHeEoCS@$4CkkEjfwoy_1 z8BzJO`F4du_dR_j-J~kW%-9GFEU|B|cq(16@4|x;C4x|p61_{}yRr#bM)N6s;yp+uJci$O zSlB=y4>E({McnF*# zK-qa*_nq&1@AdlL>wdie-RQ}wlh#3P! zbTkP>LNX=OXJni4&>1>W5=v%bCXs#Uj51LsbcT)?hZ)fhJx7_toM;?QjwVNOwa8`Tg&$Z+VRdNQur6eEn^;+`4tQx^=5cs4Y?w0kBW)GK8th*u^X|G_v!OTZLR> z4JG_6ykR8@@Du)Y)Sqtkr-K4Uixw^AGEcS^!JhEAYEc(uWk<)w{*fQMJIGRSLKug@^>+= z=10duxJXVBt}$p6N2(@ieaI_;NLS19?!3#iMUD3?tUw4ZFmKFAvB!DWIDVdpfmMot zX%1n(Sm^9nH!)qPh^i?Nf2Z?tmaG}5Z@x*9IpebDpFlLBzj72aUtlc;-tLz~o=Ncg z=8E1LnuIL3coX*>vo$}Gj*L*b?ZIy&d-52;QyNU6*8W2ov#=%Su09M)kO7(#QY7@+ z`A2PPk;G;?z{FIHYj+Sv;DPa(=Mjj9Da^!!szQ3orF}IRhd4M$RclbBGBkVwCh8@W zegrtYLPmhX_!ad^oV3o$8=}?=232TPvdwsA!N;SxEs_8+Z>XLv_b}dV`x6ihGsS=z(O#@uNo<*cF~KSKPzd^ zYvu@Od92-#$}1tGcx5%Aa6v|+2~R*)EqI--qPxW$7NiZM2q)Gc?;9$Vb%EFC&DJBD zA(DY=#?>D-ZQh$YB*irKp4nYOBm`Od~BAFCK(_usRbsyxG*-}bt{MK_r z9E&2eN*$|GE&CAJ!;mMHg(a+r3Wf|S>k-RrYZuf90!xhYDG{Ev-zYC4d643i9v=gl z(nK8|Fn`p~ycgag2*Ybpo_38HUQK!UIG_%p!FaXvXMCpGI>Cir35%^AOWr}1%)Jty zD|%N8Y7(OJh;tlb-KaaB#8%a;sbGM#c^mhNi~Xb5wbsZc;nGO-^s@^OR4k&9 z?u*NXU=fWXKHzg2;wG)1F(XD|E7p<-l2H&{aTdsR&T@N6EM*zQOEPZ6L-co(6RBN+ zsAvnVHfiM0W1&}-z^kf6g58?p3Jp>f*@<=Q@*y@yFt{hF^Dh*m0?w?re6NiPXH2N6 zZ24goc+vq?Ol*Rs$aUJ*-1#Hp+)4yr+T@pz4Ca%!(=ZUqB_L3^6jJC)Tu>=u7o`Gv z>`)_#FNNX}XD*AeCnFMz#)OCrwxTm?YC+6GtYg{{3yo+_8i2IAT{>f^bK2FtX-lJY z#FzS5bS|_prClgU7Z&y?`idQ1lc!H4j3OWYv~X%q$iP3 z0d3^-uc4Wlz&xKRC@QpJ8M<3#Dz9=W5E9^MtQP@&w4xI9M4kJM>P+mBvH#Pb#4M1$ zKx+EE?T-LdAu0U-kUo#V%OXf@6VboJ7}r#_J6jAP0whj4ds$%9AcLvR9BI+N6*@66 zj2K`out|}^X2#Jwlq14r%Ma`CD8BfpPYN6}F+JS>8Ntq?O7(6_Jcb-s2gZ|zI=?3B zq{=242K7J*2(3Y5n61tfLhCTa%cOJkl>NNQ5JH>^0_y^+4^qTiz={cZE^Lk&t%Q4` zB)VuOncZ*U`%QJJCWvHs+3=c*@34UZ*9()Nx%1~B8K*PQ0kY`QtQcH7#)PJFyiL_2 zj=_cs+q8y;At6M(5z~b(Xh(Ty$g5bR^K`p9{E_kR*b)QU%MA)sXaXibQO$spGA^*f zwSbiPu6fiVE#vSQ_>hUpObb4;ahf>6h6=tvB?iBZh_xKtzxM{d>)jNea!e5u zp|gGD!vY7ymZ3HKKc}wGUu2Oei#(kk5R_UiZ(P)u$KH@`N2!f!>AX0?76igWY~{dQ zZ5Q641t3Rtbfj}Fl83PfEf6vGLf7v|g|01>(`(n7*|?6Jt9_gl$4`fj zE=G2&ev|*ON7*KlMPOQ20@UcB$US44NB*nqZopP9W zbRg}qF2qk}CrOPmEo2-jtx3cdWI1Lc9QuF;WD%x%l(>zdaeq%ED{q@kmAwpJTC(irua2o*5+JB`{x);`Bl zgm!6=(zS&_qQF^^wyQaEjG0B0wcO~|<6u)N`@*D-tzyE2Km&~%vp543WAGr)kJPBB z6da&~60HF=6= z^O5ldZ%sdZTfK$gxS{b7j7wE8#r>t`x5j|S2HMBinx<;aG^y&q1 zoQ)M#$m7h!JnfVx0HiW7Q#XRZi`i5Zq%3SQOVJkgvyVsrfBdA{wyJjIy{l_&1EP(= zmE81)w%-Kj&hA;C?~-E*Qn046%WKgfZ(it}C)I>baxh>f*-}#7FzMyST56`JuPK*~ ziAx6|^>GLpik!`C!4u^yWi~g)N#Fb%!b$Inhkf@(wM#n5r&wKN5_X)KTMbD8>udyG zJ0kcuN#7|)VnO}FPO7m4m0Ck>LY{S;mPL)DH0w__LrMrd`}XN(I@gwvN1(=KrxHe} zZeWi%>pQ|6YqCKl)$*~?GaCtcn}fHMHt)+gA4=*hw%OpJqektFHR(fZ)1;QTvzTAC z3EAGd$yK#g2&bjmgg&Bpw^gTSb=Q7JxYYnSQpjG1=23c#6=)b6u?b~mMZ%C6)dzAK zgH&}PduZ7~Z<+apspK%NvMythkr!{PTzaTxidO<~rS3mC*ioAL($tn)n}&N52gHHn znN4*OVHyVE$74h04ufARG8JlbaWXh1$%8~L?MbCFeMp`o zpQ6*+{5CfF3>q{PnQ#!tX&T&bCh&oZ6jUD+l^2PPr){K=}}j4 zNI~C}H3_5+fKuYCZ#@WX?5vrcHRu8CA=h+EZ0B;=EM^pNNFfrm57w%y^Fl ze89&JN?sbXsFX$~gM!p?0K;4qh%g!HHm^>$u#RQdiEUMToP9W^ z*pOw4w^I~9Bbua9`cdCh=#XHYP4vWVDurU;5q{ZTi_KZIlN8qu@KP24@*^v1UugF* zC+N0c!idgMud^12LW&1w18p}dIXB1`SA3$TAXjyd_cmL=j3|1*uNM zFx{xsSQNei08nbCNW#_5&j8xrt3T-skuQ)B9Wlp~MBjjKK}ZLJ9>o<3>ZaBp7jENUgP!P0y6N-qk8?sZ}d4$Kj;nUO;K*}+UECY_>7Su>*7c!?Sgs|Mrzqg+Ad zM4%wq-Vlw&R1nJ`&EpTmyp;+XYRK{QP=&=?V9nYU-r$gOCozR+#Qu~pfs`R2n?F+L zT5diUIW)vfR`~PSBaj&fncH?e#7&SRR?MT?~v>-^2pWWt=?v$Dh`u!nSE!6(ji`dN0gA7O`FF z0hY*PYt($m#ynB=&7|@{*MA358mfe%RVA)cgqAlKO@V)iF2Rd+f&#IL)Lnw#U?Ac_ zSw~Cws4?`^^H`*eQt2ys&EjmDX@3ns$TcpyW;0I>6b)|fbhIn1#Q0k*hF4w}R9A!U zh7KqOxM(pY#+5Tm*;FYn&BkD~r5PFltqBPoeBD~q&4~QBdDjR;U* z0NH#NU{G;2pA~_kJq8N<^697{jEN{J`EFoArw|iOqX**7%&}~VvG2dJEh`m#S8cSB zSYOq!!z(O`z+x%F7)pZ6FpZ&yiLvlg?X4Az_|zC}n`)@Fc`YqG_Qs4}*_g6gh+&_P z{pg^5wy`H@YgV<`h96dZM447WQj1orTV>a%rCs!-5$Ar*$rvH**JOAzAEFS`nPbS6 z$E=?uMPMi@#d{52MNquq$)_k2C2m~wwXHcISlxT;+wR-nLmTSKJkhOZ>E_U(;_qFk>J%>aE;aOVK(Gr+RwIg>im11M`j4Hk%xpnUB_OLx&)IArH7tct)rBHdYTaT zfUCh|sm3+XvpB$|Hok6mK3L3Ehz~gDVZDoJf7$4%gi%Y((p6@Jhl;NuV0ngZjMD>n1?Z4>$#=k|6-#E`BQvGqOyJJS zm&g~%SP7!Dh+O&Hk=TGr@VecJ48+SwGQopx1oiaCJ~tCI^GJrf@ZQYl_Mu+h9&89sBMMV$@rsQL~D-E2FTp z27wne5xWU%W(C1#$_ z-0_JmtN(1!jKr}w2ld9h6_`!-<|vG>MSJs|eF&4B*)=06QN6&MH;4lYrvF#Pp`z}B zM?R;$SKN7|NlwwcheWV)Ok-}5qwknYHgv7%xD0}TWOy4xB9LifTwp_8YWB2&&31+7 z>k7B3jmpWy_}DYGyd0HM2wP_Bidm&jeO9SzhjID18mo2Z(t#OyY?Bn5&%`1WdxVSt z22F-=!ZnUQZF{TN+R2M;m)%{PDZav-v79oeqX<-rg*VtsHqSu<;~$_SB}FlqGm2V}riT~dw2)bbg#f-J73z@_Pc5@2JqHcS+;k5dGb zb9JJC#4fW7Z z5o{0H2rZftv66I_%CLj^ED>=5{Xonb#&hR?iQvkcU?-pH<6DnC$e;SAg>U7Hi@Eg>`WWzrx?^+?s}k(?1W{BeMvi7S zECKnT6?VdocEB@PYx=R|(qf@+UuDSNU$VJTZ3?_wz65vua0!gNxG-|3bJhWOPZjAD znslA~1~!d~rKT8Pd(w*db^T|>{potcNYej;X=|!i6+F+OYrLIFx2Wh#_S%%$yH%=fjrsp+~e9RXs^nt+3et zLsjmtE?@cT4Kst1B2_MZz2UpH%O9;i_G)Y-St9E}<15f9Sjaw36`z zwfBF)?h$y*@uDFBK#bB%w^C#ZUBH);a{WKAbc^X$5e!~|Z}*syH*1WCH+oQq{DXxL z7x>`tC$tY4P5O2(Y?OgE9Yz>OZsH78KSpE=B4Vi}Lq&U|V`?+`(*Km|S->6GgZ4g7 zBO!vP^e&r2T3Lqy7GEPsqEwqv*{TUrhJs;EZA5KCrv3lHb7FbhF8A6(%^HbC21YDq z0N0jL8lHgELs2~9^ z>nVWzeGL%gH1Yw$LfD?};J2(sDWBI;LOoCpNjsFkteproa6uGBWhIh`fvrwc*Bx!x zf8uE1+ZlGGyQpS2)$HMVJ-@xY-^XvNbvW#m8UHRGZs37gmX&mgQ&BXtvy#3WI-itN zh`zXvI|Ur?mo`VfpdFrLa|I$eL>Ij&acBd~5;;Jp>+`c$eztD`0$y&O=>MvaP3HV% zf=uSRIs?jx*}RgIVHac1UC_`je;KZq-7d(O43$50C3_DBL3TihKsw8xt8eLzbjW0| zCCVe=MnMlV-6+`Um&iHkL1^pxPVqtRJ5QS4L=`udrN^1k8|WKJat}bsdi|dj=<(%2 z0BD`}S9h$WH-wvvRSOcy(!G}f5JfB2*IfLZla+x z)}uGl-Muj7d&m?S`njZfum5=L8p^tn_PG4-_5Xrivz)J*Hw`z-hH21{SS~2Fn!1Hwx$!ix8);cJObKiH-O4|B3;-)ew-)oInBddQ#9sttExDa;AszjL zq&Hz{=-3g~_y4kbCX?)Jq+1|Zl5Ih<pc}NvYQS1oj3yy#II<9*s_~((bJ}zA!yokU?m)QBs<`3I#9Ohma`I$3DL1L=E|c7~LX zoysParWdwLt@PAB2~|F`$$qH~y~b#wgzFK3Opi{(fKr*!Xm~d-ZUop;8r3ZZ6=p_^ zz+b|U36TWfEj2(^H&K@8EtJB3>E!*iSYQI0;XJk?(q5rK0oqmYG-gLX$Ik12);Qa! zcf0gA8(h=blbY+C4;v^;=62VXOiq%0-7%wx3qVF~ZhBa$qV$@s&e7BW4}VKftN3h3 z*eybXh?B6BpL3lkqR{WyX5@l@G5T9jpY_xZ^`)y|pmrmXssT=Y5WB1YjGCczS6AyQ zkOZskQvtBU?GqY~6(f5Pnh`P-)g?~|nws2uI^kW&J$}fxUf8NeO(VuBXASU%`N9n=aHR`o72K&Ge%XB)5|eA!ym#O`ru60RzF+FJsdZRU7$+ zE~Gp`J{7f^vPluY8}V$k|8ZG8h6T|+HqibsLlT?^%*}koOcs+}GNk58DqV-!R$7vf zrVxn#Q{!XYEz{9S)Z}%~4Jl9?cfp?2%a(YH#RnQ8qn*Ca`G0Cf2F)w}#mo?${z0<} zqk}KFHvpS-QnhBpO@bCs*%Q2mc-b$j3S6_0ED_RTkhyZa#&K{Fm)SbSXC`*uh=t@R zc%!OEvmus#IxbMg0pwMdFR+e9?sOQ7OGg3B7Jbg@t)r-1+T7LI97~YiKKWU?A-k!? z?rq{027#18WDQb8qcb@H39O(5T|&S-29p7Pw(#XS*p=f3>%iE?vN=#qR;%ht}~^TqH?-PFwx|ofS_SBKI#F zcN$Zc_hQWND8Ho5s}n2H2Qt_BmBfRI@TQlG(-34bOYA7DIQvu0eK7Dt)G%p)FlKz4 zKdw^yKf?y@a*e64wPzCqj>k4S>zL^j6^P`Fr1&nGIusZsLTH&PYxn=6ipW^9k6(~d z@aOADYeng6X@h&_Tb+M7#w>80J$bT8tcACPF2d*SgZ9hOdAh(0M#qf$<;VxUIK!AZ z5nre`xv+Ls&pDIT_$w8F!L?6G+KwjeLh9riwJZ}sbDpptKRP{z{{Zk_SD<9H_7l zDe|F}bN=KkPY-dl9Z&c*IKB87FXYD3`Ac(1wK*YPZiqSC_jcO1$D8KN40Sp2^&q8q zHyZE8gAOQqlJmV{2%7LYvZs+`V>vN+hRjI|?J*E5lzJ2+%Nr>4Y~DPlCK9hO?I&^K zb=loG$=PyE+|qQd^>HV>FS`a_$XBpTDAXDHR ze9fsaa>x(az(u?9;nJ5yq#7y0r~)Klb#%TuOL=uNE1UsoL&$q z7*zSo=FXsI?Y6aKMLg%qBwwx-*y42VsLfjWi;aOVFAY9&I!FabD}QzH@oR&R98O&p z%Te6*jNcr5uXiGTOsBtKdxtQS#O9j5>$NkROVaKY>Pe7t@! zUZ0ECXXEvmczsIOeaN`{8%g1+*8bhRST3I-{npb+qxwG!60l{PKJ7WAGgN3!A+LsV zZ>=;lQ=FCFCE2REDB6e%%h@%Kh|u^=S`E8Oj|uu2<@b5aF6Cz|`i5 zZm5H5BwH~BFuu4_0HOe;r}1g|8GFD!i;~f*aLWX9a|i}Y&TyaWtVaI7h8fLdo&;Of zz7{!{<*A@bPN{P8%phP;;FQDAQRP}Wigt4?ug?SnU>PtYq(T^2DHgkFIc5~=5syqq zQ8kPC7L17Mp2Ho=_qff=dkQJ>Nc+_iU_s&j+mL7&T2WCv{+_>uu28g8o#+ zZK~aG=6>VD*_L=pV^~%0Cgt3$KQcU3VbHPlN(DQkUvfyH|4U|<5g;aSRMV>6h&>{vU-ROQ8l`@z#rIWP>J;8t+b|OPk2Vro=vrb)M##2t5t+M)LVQN&! z=ztj#>hgd6U-~3wiQZ}`9Y*_qUC(s7anY9*Qa4Q?R1#A3#C%vFO(*{{!xXimI#FC&q$e51HZol9& z(CjZqR-Fh-(m=QRWuISyUuH=)L@BpYNCtIfV1p5|kTR+ZGLxEX{ok-AC3I%P8rEYD zV2+f|`CPul{K{}RiTtqo+)TWdPA>o%LE4VA6O1|hTw@V5pMN~p+oYwdnp?S4B30ZxP+CA%!EpJ>H) zL2SOot-4#*pCxIA^g6D$uHZIV%J;9NySVIIN!3Fr+&x@4SM7Q(_@DN2!M>z>q^{l- zGJU&&Cxj!T_9bK<uytN;w~RnmZLjFx3hcD6J_C>1NUoNB>H zE1!~`Am%`FW;Y4Kn>_Ru{Y&nHa=#zcAUl%+&&VPBT${jiv318d%$K1*wV9fsv_?4K z7hI8g+V7X^Jq~S;KkfF*F2C&b%XNNvccjop*cWb)0EX-uVXvsK5#AN44;NppyGOzf z!U_09jYq>mZf3&8?B?ixxP>pM;Ph6m7&AYF%|!f({fs053N>$oA-2N}%jqsVm=$?i&gDn37xgV7W61*otiNu1TSayyDqUijJClxv zP$EZUZn~~#qBEio!C~_g;N9L8{Q&YZA9CLd8J)T}EeF(t{EqOuiQnz~j`BOk?+#CU%_NMgC>xn{`~uWa ziL=AC`@D94BR4yzX6t)jiB{JnEJ|R>E3*yLhf;FcQM+QbI8< zoqD68t7A3c$D+9gFlIOy7<9dt+q?N4;&%_fd-=VO-+lb<=O+>K0KfP1W8T}kKwY6O zQP-%8)K#}hFjP|Rw%Yyi+Wm>J13NsCwY`$Pzck&{v8`}Ilz&`*ZquKW`g2HT*bfgF zRVQ7AKPlk-E0Rz1TX7%!8gWc@65U&zcKBPnYvTbOZV&fKJ$ zLbPM|Q=A45cG*oqCp93lC!jCK5NE>sWq8^9qv4E?DD1M&p8|<7+~&Cq;Zf3v0tMU6 z4rwR>c#JMIwm1WVeNIqgs_Ak}g-+D~PuhY?WWznkRW|f#uGr8Y;DQbP$GBiaKg0za z`j2zLPW~VlZ0H{WB|LqIC;ISDa6w%CNiN8+ALScKKFpIW>W^^6qW&>1Sk!-tOIS%i z$_0!1PqUy?)LFQdWJ!Z%SwQ@cc-mNd+PX&9Hl0r>NQzY-O>5G4&4~WQoBlF=9H5}u6Hxcp z?%yZGu9!xF_yB6KFc+gh@UUdxop}*Nn}s`5PP@LdH0SOK4;*6>{eJy{I{EFvP#>Py%uJyXk>%yW* z2f>!z7tSecsRYJ>fCd1=RoGn$QHhOI3kRw-2YJ_|iBD7A%bX8qRF_qq3is}5+|3DX zy$0pTBH4;G0w6abVS$tNXOluvCS{c{f|b!z>V0)wBb-xTySshn=183U^${ z?o~2KDNLt#t8?!uQx}{nd+cs<7_}cF^#jp=bbq|QugoGl<7(WTsq{ZBZ3uaxL8C_e zs1FAIRJcbt`>~Me@+YMn8{vcQx%lIrl7&RtOJ>jR7XkdxKGBK9oi3>M*`^o)!IqdKs0 zNLkN_^bYAnPjetZ?S3${48DoTc z717xoCq6psE`HKh z*5rF>a(YTqfME^(_68q})@YfUlHR3n^DE&l%>YOCKBK0oO-8qsg{*>crMP-Ow@QQF zcjef{m1kH(Z9Wk05AO@5s+5xK)zYb2NZ#0mEq>qeI;eBe9wh~kRUO-TDlf|BnoN|sT0*tWutlqq_QC07&( z{P)WBNka}apJ|2%Fu)WMR&DQiKL%MjMtdK&S@EFNq&905HL`f!4h~D-Ye!vd4^nLSpF zO)>qks?M{UvRj)p$@igS(j&f5sLSDv-8JV%)BfF*LbNQ}^f-L{3=Ck=h^hr$&ajhClUfPWw3Z z(=k_gQ+JC7gcCmEvXVLb7%e#kh2L(|Iu`7Uf1&iI9(8XjVy0jO+RkP*cvFwco4R|@ z5W1Q-wI98ys%tTPpk|F+;Z0q1YlI3hI|%4Bvo4~XBX(EFUs@MydQ%M~Tj4CjiGI3@ z;p9`y37+A>iJje7S|dKOWAt6|Z&L8@xv;`uznt6==XUa^R`c&W8#m%XU6X(Dl$r`U zmyY6xITIdC8(}wLI$L4SHLQ`sk|?H#VC{EeMqEv*tOeCAK$S%+;#dX zTUb6|FD#aH00DHvqBxNKVw$SPH*q!A=XDu~; z1-{iP9JHZ^>+ZPBD3qkE!Bu9!>ik;Y^iGhi;Pb1A@CAW^t^N+nm)PWYn%~+E`kK*e zZV3W`-g%YZzc+*c?t9hug*zc?YplGt?Jck)u;{=_N+py`YOHU>6Za_S4_Vo_(A#FRcf4JK|ODW$BMbOfS5R(HiP8t zI+dVsu;@uu*w&TtS_DizLG12ESvx6Z_hqzr?-`}%8}B+k`t?t4ql(rmbl`8Jl!1*5-oOwP_diR zy(U7G;CVvj4v>sWV@R$-cO}!9u0};1;0{ZI9mSq%0;X0?aG^7oGOZ2J-4ltyF1jK) z0fS2YL_!rRlx4=)$lEYfw%Y{vR$gx7x1ApYUL!*8YRBL|_}FyKvINC2>PMF2#mhjWgy*SUSrZ*lpA*xv+#7l?er z5PZy&5dRKZZ`VT-jz#9Kgjm7c|G&4GcHYiUQCsKuU1_69o$+B2mG+J-PGknfT)Rh* z9V|P3JJnFsZQ}T=3d6drdOP(Z2&xE}w`W`vD6 zRUUY&%2XG>tI`DD*v`p>JKHm*ZGM5@w1B)OVeTW~2>IWV^hmQNI(WapPoh|hhWY!I z-^GNSJ?UF{L5OMJ7ddV8E4l?mNgV!083`M&jKhz1ALhsE6a=JwO(V*f0z-Rs3g%tv zDHvz2PJvIQOksnDR)nBcy*DE#D!&T8XKOi0!5C{Gzr7kLLz+=-ENURdQ?)W|z%gIt zuw|zks%Pw{LIcZ|U@Kf+n31FQn~4>dTkF|&c#O-g^*pVbi*?mJ+fEScs?u#&-u2b9 zEhnF=o_8pJuX?^g&s(c!4Qs=;>UpQ0w^z@*^t@a>oA>*+>Ul}uk5|vOg!V-ByhYzn zR?h^HHo~dunWaz60aeeopXHs^vu*2nSM_XTjd-fA@MD3%dG+0vEF7tx&A)wn^=wY! zIMc8E_o@Ck3lut6m1{wKE7h~jEj(B~+t#}a@foxG z#bRA$SnL2nqyNhqd9brvXEsS5J<{m^wm2l?%aOspZ1 zk;eO!^9UL3zr#1SIPRDYbNs(UH?}x>q5OLJF?NqDKfb9ENR{?Ys~P@pQ@ZaGEW9+S z$G0K2AxENWhmSPwcC8WMjW@v|<0fp8u$T9s8T?nk+&BYwE36Mld$xB}}2QuE8+n8QDN_!sT& zBft5Z`4_TQ*~Z(gjjiX+Jz={6sy&xExL$kQsb@m_lE|m?RRD!h{s`S4IbrCYCnLD$(<3$5Jf?IB939p6^4v*lnlqs@Pm9E z`r-2&P{^*>-)!0OP)3&$!Xi;~a;V2`)Ts97zr!q;hL4O-&7~`gS{BK;x!K2qZ4Z&K z8s3)DcUb(+_zgMEke%h70K}_Hwvd!evI!*! zM?S3Sw7hYuSWm6Jco{jeZ6=Xr+5I2|D1C?y>4P{s~a|sis+fr?Y9sdBy|UP6K;FUzwM5$DU<8NFqQD)%Sy7yz|dT#N0A+b^C$rpxyLHN+F`Dff-FV0xo~ z>Dz04{dV#7;2Hqiw$GIN-L-Olx5)XOwZ49*_Xa>FWhdudns> z_2TP?)+qNwvD{bJ%K56KJR1w)G1eOFV4U! zc*PXR@lU%4yCFxr+0LH$vnrCg=i=+f+$40nKfDGlByTG`PTFKR;J##ANRsIX17+(_<`nUm7nVqu^cuI zEy{`YQ%!-njD+7+!s-oGeT_B{6FrtjWI!$!e+X-af7;HJ^ep4+UqU9q-JrU7k z4q`VCM7FDx3d@x8t(eC#)j#itjd>OuW#Y;&F$K_fR*zUKd^}*hr>l5T&AZ=Uf2rs{ zgGPkIE{`X&5nzY~j~4h5y6)j~9bKabnqu<6^#xt2`;0%nsDee=-oeqDWEZXz+8)0w zy&?*ld09MCy#d*}6I%ce32aHU{B}~4kD6W!el0pvwaJK?>uq*lgb)_4C_jOfG7PV6y zj9e-z(L}?CiUKugDZ(tNToO<+QkA|+p>HWG&Cs9B36u)mMMX$9`u~%LL%z#LQzrR8 zZzjW!VPR^ai1|ezYKfs%4oBwWag!v>aN-O|Hfn|_20weU@W}Q{v6~Y+=g2K`Hd}j$ zB8H2l0=mESAYId zFor=6aGYC9dJFlyC6W26a47*qNoXa^bZpTBiH%mMWOw6EZNS8x0NLGOzJw7<4kX;C z1itb`yI5)0)7n|=Ej`8vmXXD1;IfY41{cQ6x{PXNw|(li=Okb(YC^h&0U z)~Q9)R$)pv&7A$)*tE{K?@Kh0p#>`0&+ZncQgx-qgVTVo(`<8SfISA-Ht%7T+|^*p zw$lQ81R9AZfUrr9bq32iA2AL&80)qA(D%}0U1bIsn={N1mQ%7)M|+Jj{Ni9|L7`3K zLSlGS$;0ScjueB`boXnri>2Wxv#mQKpeoI_z-K$MqRC;jh=x&OtbB%c1cwA%sy5j->lDr5g@Lo;}V!fI%?@jLV}fMzF0 zLoC}TLhZCt2rIa_hWN=VnmTF+VX&pC8aSO!u`L>YC+Ms5`@{GuqQ`09*=%%44jPc4 zDPVI(0GHa|rTs}jzS%eY<2WLCi-*Y2m|4)78Pf#*AXSM1HG2+Y-U@cf+3%j!M~uwi9$E9F27=ZCAL2^aE zQA(```wBQNo82}XPZ`l^4^e9-`wv#_n-aBgmia*Y?3i+gpw@$B3w+y8sL1y5H8GB~ z9%T_&{5KmAj4cWDB}nEgQ>!-3>6d&Qr;3G{+gBBK(ouB6Y^J z3MXY$?cn6ZYGg=u%PcwS)o`Fmjy<|aWCCWI2nE(C-<73Nq^*4I9Rnd)6E@vd`4Y~{kNFqCLhdZWcOLZ3IR5p3sQYet%(mGjhMG$TQu zaXQmHb{LW#PcB`eNz`-$S$Jl1MIApH)O2mp#>ag;+pdyaiBVeM3)B@0cko}fNwETC zk5nR=FyJ&YhOEF+l&qjc{0=BR3mxidDU{ZanIc9SNfg*lsb2CcgC#3^N%^i;GX9IV zE}0gp5hiDKE?`MLyS>#UIe`S?VZO3#la2`Kt0V;r7>Sk}KTTFu;7NcOgfp%$ez z6AawN@@v*3u1+oK#m?vz9T@HUUgU1I<01WFfZVoNS?&+&g+Zw>-Rb`Syt;kBxsXH5 zjo3P{GcDd+)TM9JIh62v5@QB*2!N#eCU&x@$#Ih48TGJ&m?VA$>3A`oq*!&QWd@-t zMa%U!dH>>Hw{0jl+lOIx)8AMWF8FbRZ7Sb*flnI&^6f)KZ*#v-iJz3#sVcWO^g1}v z*QX)g&sk@Yj6iDY=jOQe+pPBK`-BTt6Mm9{oScO%pjB&INUI$zn1rV_>xG37H`d$~ zio2=uZew|;NS)NgxS_y;4s7d9;fq40T?~NKv`Sca0GIC-qA$#bnG2?*6kU{&Zx}*2 zpKZ0QY@sLgj^^JnPc0Leqqr+tZ>XF%P;!~n6@>c5NU%RHcS+)W&o;nQBNnjdFAe!x=?muUTU2!AZ zb(@=;bGm^p(tOkoFW|s-6__&Hmu&-0*^)|ydN}w-Lk7y%rKj?HR73eQHWXP*(d(^T z{)Nkzlk*&0V;$hf6%MupEw!oQwgtE>+aZ3Fe9V@ek|=x%J~_CeWdaJ}c=OXTbav8s zIR~07`&ua2GJec6D zq7#Hp{e}b)#MmxrOifZq6$nX}yk7&95imejB9W@!W2ox<~+U%y+!4a};K z*p;xNfyEy*BXi+50!{l!awC(aZHkF6unX-@Erp6@t_r_RxV2Hk@^IJ%@Qd`$?y!v^ zZ#!gs-`@Y*!VB`&gSGBE15e4h~Yg?18<#B-i*yxi{3>tIsAG8~%KpcU&$ynlB68JU;1orJIByHgksbL5s@2pUxY8 zxYQRIwt9O;7`TWiiXRwFF&GI2+Y5|k<`rD`cz0Q>SPv;(u(srA3)&lo&ag-OuNp@W zB4Q8;)}ax&1gHF!|FHeIzMnD4E5P@{*d@!-zyg9n{VdP1o49|IBVpg}hKzW9$&k~((i!w+Z6 zMpJY=;y$7&yUv*!IumI@8ke#i&d#JZ`r;Ed$FEByi>$-4PAt9Ts{*s4q=H7I zg37=gp;1mt3N9phFYL5}phW9=IhBnt7R2dBWdxE$I=&co3~>6gIGv;F7R2cbbzxg_ z`m%GnWALczhL1QvQGaM613dkKPQ(iQx!C_NB3ueQ(EM>(L^eDxM_}3>TLUlcmd$_* zyN^`n_{nSUK^+vQE*+{ANco!C2>)B;c>q)OLGq=+Jim)Tn zV5r)E$sY90+G?=U4SdG=+h48IaX$M$-^1Nl9^ZL9w#it2oYu5B^5asY;{!b_ zPJAA_PFGeR*_F9LGXP)qD?>Xqwd8oKB@&ofSVcYZr#K=o|w!@;uIq4E7xj zGyU6zE1xaKG*4*!47C=jcQ&eC25J_fz#1~nF=3Q;4b`gxpEK24;TD-!s9E?I3`(9o ztZlHOg81=L!4jDRUIsNR?g4NlF~}uq*jFOHUmMV{xFAi#;scc^Sxdv3&>7IMU36!m zVKvnRyA#D@>Wo`D#G;ou@2C(V9B3rTIy<0WtJcz0loE0F1M=1aj0cvkYks&?qAxRo zL^`TvU*opYqW@KR>Z<%S{R8n6aQ_kV(wD@BYavG}bi9TmZXuZ$BTrT|<62Yl5oax< za2?3R?F)8W_3f2flfI4gp$T221czB0e=fW|{^W4)ntcq7pe?V-p9{{PGz9qW*B>=L z8j3WG+dK6~;sxKQ{=AUXH0Kx1HA@{vICm03s6TQ$Xt9uH@Z>VMc6Ja7MO!G*+N$jzNwrCb(zFkObbO#~ zd8P3b{Hz8BJZbrLTg$C$@3h#uowG)}c&8%l1d}fV;dirj5jTZ)aald|lv7p0!bK9NKWS6nIb4l+7DR`o*Ae@7yjVmKw*{#UPt)QP zrjtA}z-?Ze+WL~Xj;35YWB#3~n2+@C)T*BGi8R7eQEt}%DGfMD=T=>n&aA6$_3V=& z)w8XVnJLOC{pF)j7mgps!~E&5cu#!~uYi}dw zHi;g&L^0Ss^79fbr7-T{{GTwZp^0gbnhw$5giGvh$h%5e+P*Mjmfu2URB{;Z|9w>} z9;a{(3h8YXq`CAMqtNa=sD?N=&D@kQz&jM~##vEJJB17VyjjWrBMxigrvW?v4*Qt3 z@{#jd^MU~7^UaE0_hk=HHj}oBZUNn3(OKIz5xAHQtu9<~3P=~i`e{8t8d($DqtK8x z)e06;z&b#rQ5^I0di}fh`rq2LkRWO1EWhRNzpuRkZr=Ps`6kAK_#8XU04cs3a*2Ru z&dF4{O-nTM|4`ksnzwlSuXGC_G#Z(^H~An~YU<-~U2h z3iKB#JK&5Ec@$$|7*MZ35X{T|_tyZZC4efL6hK1&BcNIlpq2wPB!JwEs{tf%er*68 zf3yH2fQjgDm3ZIZpp6A`vWBrh-cX2{_P20^qpl3Kc6~HYIxmeT^TiA%i))6RQ4L*9 z_uVNvklnTv@&V#$MHvAB2X%~}qy&2WCR(7`|1qN{W&k2?gmph~-gsKG>Y~4_h;z6@ zF(>SWb~fvWaYc(sw_~_^q>gd)l;+E)sbid<{A&c#DA0`er!~z-92HXjRIjBZbQEsE zDM5o$k9(xfg0aSNxr0xfXA-cRt~cgb?=m0J;gig&TK;tdFrL^rA1B=^27@k6V}!_--KURxE!V^M{a>;kn;g>gBqA$|O#E?UOdT-?ys3nfNCrj?wAaE*=ZV6znU64^ zdla5OaiCU=#3MNYfU+PkSLlWn=4ofC6xX4-)@K#y!7*#;oRb=DVF)QBOpZd_!fKO9 zYtcn8opE#HCr~?)?(O=hKVAY=oH#8P^8z6oS9Uab6O6;bn=J4_G-$@mc&vBa zSyzEo7%pA`M8)+y+;U0L=Z+R2iXbHie`zQ@f;Z15FN)9 zx&oC!a$??rJiMD562P4G}(g6uZ7 zo?x|Brc=^c&-6jzT>JBQ7y9wD^=AREF({H%gWXA2w?$bNP(zJG*8*CMizFyntbqHc zh9!z2y20oPby2XrLsW9Q3PETMaJp9UPe_T;Yv^?{sN@pNSF}$INBqzfZK3}p zodMrrE?BM<>+{8%4PiYK8RAi*%!+1U?Py$0DZPA%L%6w_#tOrmB4rG}Kp5EqVY!zw z^v=o!#RTWcY08-q`(%qsJj275Ka&yQI`c?=gNOntv62e?Gp)n26$kT!GA%Jpn3VmA>@ndmXVLG z&?3Q8$x*+`C|Qz7H>+HaB;KM)-*Pb(F>g;4f-*;u6d_CFLuX7#!=lZv$Vn&qHy~X zw^~2K?epfDvD+8qnd!Vg7IAA?#L=>dhszQ!l?5;t_hB!Jxj3yxiG?z#FH3zP>AYqZ zCzgzo+vOq`f;co6tg}xUpR~;=8w3C2(a==D*?7>osgn4_qtPoCaPMK`R1n%S2p*%a z2!2#NB9}}0b1Rg<R~iDk{$!exgE>$$($Wm%aFA-My;@vbBIpnmv;Y(dQ^Wbf zicD9WC+#51EM}E9=QT(Z${@#i+Qy?9DU_z&Uba%qhPE_fu8$ zY`PT(HLXlJ1XZ0kALeL~S@i{Ise`tm0F8AM*4`^YbIWyY(6#{@0U=~9K;typy~+9l zv{^*(D$urf7+35Fsi4P z((K9k{~TuubQ&=+D%cQPB-ig zv-rn_GN2+ZplA(ef3GH0Vu>fh^|B&FrD2DH7X|bV1)b~&>vVd}4%VtLim6tu)Ni*5 zs%^@60!c>>#%F>Nk|d5q+9sCM2x-7X-?|dEuP_rGh^WUwwaNZU7OfZq8zdWY0)2sI zK?WqBvUz$B^Km`2=jJ2E&xW%mQTT%SrkLnOx9{Ymn=tp>#vlo6PCI{rvCW7~(e7M5 z_G=VYlb%9>FzqIKwmCo&4d-Dc8cv8A`ZQa1rG{X09tUo3K|U*wJ{haww@G zRcFea4(J%KjhjJb+=yOx=I(0H2CBP04#AuqkDOzcHPqgf{GFr_)^s2SY*^COnu|)G z;X@V^Hz8Tnkd29uVk~)u+P?E8fvZQI#)6*blD2J z*3n}e1g{>qUSAg`)ejq8ND_xOASX;;TII+xO5aS<^(I_7)N)$4Mnx<_RA)<(nwp;~ zB{p}G*z4K)t8i^K)miZ+Nn>r< z5;2uR#+)N#oPo~<;@vSbFJ{~6Vo*Fyqva6Ero-HO8G6Xq0xSgygayP<2gN5O?w}!* zXGq-PNCa(DAv21jBtyiMJ8jIvGi`*%5)^BjBCG8VLfasZP?YYq0oNAM+?Fs4B6VmI z6_Qkva2Nq()oh^3qN)vVt16U!S(TeJM$}t0W-PDM(c`$JCsD2r}tZ0bQ531f9~MdCNN4yl3md_4+|#USAS(AqOa! z7UBp{>uLX-x3T24b-WoACUQ&>k0NgSZD>K(L!wAr9>Y#n6A zG1MrmMZH_=AUC?ykt8{8!+l%ZI>kayVGA$r$FP!cq985id>&>&A2yU9&=%@ZIu==G zGJh&4Z}H>;Ul`pG=Fdys;Z~^oqB#NJ|)ux3clOfLkkv$898cI_oT=JBV)z z+%SC+*N#F>jCuu~Dx(j*Bps|HVrcvNGnO@D>p*JoSEKVUTg*dM%d$GI#K>=Mf6B1= zi;1EPoQ)AEttnz*-7Sf9ug$vjszi#}6ip~L1x<2GqSCq~1UE<$ZD@>#WxW4Sswoi7 z2WnY2?3QKi&teYbWP(9p?`gB3?zhl zFshaTNnC(3AS^*hkH?|>;-Jn@pCqJ5HQB0Ll)3f4ybH0HrO}6D`RZ1+wX6XhUey3G zU@EMx!One+HB^gQDFssGcybyD<}6%A)1etNAY3E}#t{hO_2}hc{GS-cEAMT$^UE!! z)v692k5&pHa_S>nCX;n!{4!Z+Z}gxRP-lZgYU7^9qYx()R6IFIzNBY03}vp20s6^- zd?#bRJkjv4XH&L#%ft|nNO1#&l@Z@#Zf=-|3Br-Z-y)reN0c%I)Pw@{|2L;2JW{+G z-8&h=UYR`x>|P)#qKgu!Z!Kz5CVkRa(*?l(S!;96B8yN0av3F zCx+w6yan1z)3Iw~huI&Q7K$vCzu-~y`LTy!;lU4K^V`+6^}DRSPMd`1LFTRMCii8G<& zDgA-I{4LzeV>%XvQ63*{ifsWY#^??zRVky^RoNVEn8PxXh{G(!hi23yJ6*2css8^O zsWMCof!d@^=7?pEpkaKo_y+IsysrA4UIb+_(B-LGCUkhc?l;givpMLKB5g^V&oYxr z14weK{6%y5pT(3?BN>DVbC(Pg^UiP^lpIYCxa)C1hnche%bGc4tr=BV1u@X}!_u%b z8k-E@n-Mhyn4+_TVi++^ji;lu%;#s@LmRf)E{^t zW$e+3GB2b9m}&0kgFY%eMFK#o(%BH}n8_N!K(jOn%9c`i`GIsg;PRB_0};_GS%*iNYlFrF*`h?-JYcPhHQNAF!_7M2d#jwxBvtjm#jbpaBH1~74MpXdzy0Wc7AK1e3H5YEaTcY98Y z)_sicByRa?v!R{NzZp(8T!myA)=Q~knhi67R>@~D7p*D7AHI5*d{W>>zo-Qp-fN!J zbc%rQkKcGINb4T78bPk0B-ko^sEtf+r@OeppY!%7BsRN1XKSTH3ZLOzd<9 z@3TH4-Vi;ouYm!bvoAVBqw(4whTn;@C0phc>@nkkDQZV_A7YA9ulOZY!Zf76Z zMI(=FlhT?eO{ExBu2&B6-9}n9m)iJ8E8exp18d=b*Aly|D|;`>`;O#2eZVoHM7l($@LsD3O#KGef2lY4MOj&npUtbVn8HnL*VFQ5ew)(!dg*Z z2>Q)9vzU>fMtX>OaA!_-)8`GTn5tNzt(R6Zb7E>JxjyFzHcBIWIC2nU1Id3L&0E0EP>*J| znpH2wQHsPuQjVgGTe0&p$?R-gJ7qzcL_})GAB|*<@Q8mcMJ2*P+Fv7Y+iL|>8vl+) zcI~i33*Y6lV0>qTUMvi_r6aLVs)mg-zz};{(f^`3rkymH8&)fQ7a?}BJ1sixH2_D^ zrV$()N6?xI9JR>+7*>lP^?~f8V3)E61}ikRmeSWcR4kxwINeZ6P|ibvLKK&~;NL|b>T zHj?nl5=+&HP*gudkk#oF?Ge*8Wsm7pACfzXfbGLLUO)hUR4E9ouq_YiYHT~5sHt>J zZPa*IGyoXQYsNp3byPHmI;?#a$h@J5N7sN>%BX_4YT4yvt;DE>DsfZFa-exSn5rZd zZQa&Du_A`*iQY_zMgSgM=|RIn!hQR{ZlgKIMbKsWN#5Jx{%`mvi2>+Vf6!1Er&lDV zr2cPOVi;ZY9gFY()A~!VRYGE@|Bve*iqtRHUc$yz`r-a>RiBttN1`Z?$(#Nw_K8ir zPA%fe$Ruh^ppGH}MvJW@77gysk0i~?*JQH`a^MM5iH|W9iHfLei-`jfMpEG-i_D_2 zL5o}n1khr(TF--Eo<(HlL;7qBXO?n86eeT{B0#q0kFk$dgJ@U$DZ>;$Vp4NR#j6`! zW-1trtQLZ60irRuHU?MAty~mKJL4P!WXV2Nk&JCdTa8iG);f@(O~+IvtYFnCA|cbR zkkq9R;b3M;3_ghLLS1|g_&km- zxA^4Fs|pRN+&Jwei@66GL$ofz!-!(A0~RfmLKDEE2Jf7t@G_b&4b>+~(BgI)hBARa z6gMogOx`5-2iFgS>@uGpK5nz~Rz8cJgcp<+_7U1|5B z&S#p?S8Ngcu*DV`vBC~ca`?M0Wm=la1(faBj>sB6&F!=<1WH zoFodG88$LSQfoM64uWDpcMKhYf>YB=DuoruZ-}rF0CvV&k%Y7jMAC-?F?Y7^z{VBq zR)%kXI8K>q>oP$jJd_(_jdUJw!^ja2gvKP^v%&)iZy3|#|D3tYL>ikcv#TY~EuQng z^?3|gq$2*ymJNw5PjjN(pv*=m|J`4-?^^xy)6e=XD^vegyww=`?fnbQiP=WdYPN@l zM@GlSJKf&IWPfUUhAMt1R>5+j7ve2Tj{bJM<@lh_$6I!O`t$L&kMr#d4i2*98}W9c zlmD}L+w0{2INlP)`gh|kZtY)=w;XW$3-NZWlYchej&}0zIz}+(^ZzH_4tMf@6>o<+ z`Tr4bLCII+Ehzc>@wVB?zZh>56C3$I`1wbr1d>2Z7BdA5c0jma^REh#>?Z&JYCN$Z zrbzN%<4~T)SxyC5mG*Z$EesHoD{(nz-0Zy8WP3EILjel5n#A|kM>0VDdPhA!C!dY& zP|6ETBeAg-B1n7$33HjsdPpwhxA2UR?f;ZTh~wFXOfYr)S;wtGxGRWkl|&XKAUVjX zWYB$4r0BP;!mFC(Y`&SCqGf~D%cRJnbV_KPl0<<=(O;^C9Yc`;yeH1i>e zyL|lOO6N-wKQy5YRIU&eyJ_|g($kK5pcRX#M}e(zIIU9nApOP}f>h0z!Cl z3ngS5lJbc8UzTcXxstr)U2|S5on$4;EsF3aA;J;~lt3G@d)N_(=OF`G4hlXbHYFk0 zW$^J*Enpsk9#%SJl>nsk#wbnZq(4|rdqSTmr+QVpuwnPaV+_ZL9kwQ+4A@K=JR*3# zaa`p70U5{92POs)R>{CFeyydr^h?{U;qxN|Lu3D%7qb8`|p!_piUWd6R@8u>JZq6awd zC)-J{kiRUF8S^Gl+IarGBo&pL^M)&d^d4fty(Tv0bSXTtzDKWhC(?~sNIX%5Pk`}^ zAQ$m~){}Cv6?oIcRK?)3!;AiUwje_DIQ!!r0Wz$)R)hJlE;|& z=zm@^M;Mg);o14z_CjF4-$s{c$Cn#-WNhF!iL>D=jXM|+T2Y!K>Z_t+KTfT!m=aOR zms!oY0;*9x9UuYNf;5SFVoPGk9G9rnD399dM|m<)l+72APF^Y8k=inLn%BhuS}k@n z;s-;87}3@zPK23=9}&ld-rJtb6Kq4~c=Pwr)Qo5dKb0;cewyg0&IoAGb$wa?rMscu z`3E)HMiCE{gn;b;$rQt65p)zJ^q2o9O93x4kx8QQv$b@* zVhKsXCv8<=Qm~weDtG~>06ux-tMh`buF$@o2&Su+D=$7GQlziFsYUv>6=;q0N1${O zH(X$eI}uu?V}teYiAf~WrT-X1$(N$R6=Pm+mHa$cX_XKlr29}-T2KNp67buCUp=fT z(zmWlK5!j3r_D%_qmt1gq83$Z${+ubmZz4aI@)=uHX5jGMnIOaO;>lRy0P4x)t_bk z>FUpt{sdC!s9x=VnGjIOA8eAZtJk3nr15N~db4(PlS(5NrSWxRCXK`fepopWI|@%v z^OS-R`W=;`aizV)xeBG(P7y=J?9YJY{XJQ}PLx#Qz6Qw|4gJe~d7Wx)0i`CFd?dQ3 z@!#dGkBR+=(O~GD|7-UbX;4+93GLmDb7qAw8epw<^m?#6+z2$PJ<+A#lwC95R_>T) zOPNw^As7gRf?^aRr82AlB$~zFn=Y&>!t+!CBeURj2ZmwS05CX{F^R4XjPk4khRN%< z1g4R*EITw8wVfk#aE-j3cZ)}&>-81}-_vLtEc#=?)Cwjdt(7tDZ8pId}j z7>LRy39Y;7pE$0LjG!?*Q|~LR<7uuy1x*SJqvgaR&Cn+Z*k}O}Q+)DlVaNttqzYqr z&T=inHg(7f@!Zz6igIN?Xg#z*mw(OZSD@QVAX6bm*-ErGY4WUwgr;IA%(xH?Vy1TI z(?bKcOK-_-7eIG;s%U;D2|&T5&CsY|B5@)2sv?w!IL1t=2vAo^L{1TwzLGE`l(nTK zG0D-Qee%@;GK^cf<}Z@|e>N^>hId?KIL>=6wrsEfhDs0?tnAPK9F=lEs-Xga zX>j0bL4JkF7LwjLm;J(}y-3oRwfjIvr@|()BLs&#{TBDM2j>e!65~}GO zhA53ZtDy!tg<*Y?h~bXKTA&idImRr4f+Z1fDm9@@G$Ke?l@b>}fL{yD(0OLF)M3C1 zmreC*3k?k<<5b1Baa9tb)@_8@ykcIvRiaM)^ATv(e)J#Q| zl(KuQ^UM&l8iuSG*cYo8#~$fL0OQvExbS_VP-}8jJsx2S$DoStkJf3S-dFe3 zJ?n8=0+slwB+iTHpMn*MTd}w|`Ieu@uZGoz^Y|n7_9O5&G>N8Zi$v=yfbxD0M-es+ zWNp|3vFUJ0R%t!kIP6)#WT9r`u%hHa;p?}_H!uQy)L&zyn%wOfplnJ`V~RzppJD(k zfk4Og@;^lB^yDT43=ko43rQjS8|+b74hEaqfpe00v*8|*0hTmdBA~(-Y`n}O^&IM>lBUB?0iO(6r1j?+rEyR zx^>%kw_8D)-EKpGc5A9c6IDjj-qf^;Hz%5h{Y~u9#A}+fc6$HfT(|dl`yInk^ry27 zV}>gGq%Uau4p2X1(%}AjtYdKZM&Hps&c0kHDrfWJ8JIL$vF3)FP62P;-+*}nbKSmY zaQo!otEci;5^>jtKK#fa_w$3>X9piXH~4Tw9|~=@2^diyi3I0w?(t=be{sT&Nn^D7 zjAyHGC1%a^2bI}w1)PDPaF$tC;BEq?i=;ZAt z6jPESgQMx9m^rWqQHmyFSNb9qO>ozBj_$(JVrGg!J#8Z z4oJD0)|MPhv*;ML0!dOTI#7#RkAr-nQ)d=5d%V>03w z)QgKE?5%p74RvYpOlJhA7mjFBM;Fu5-OwBE76t+WGfnq@`iH3=8bnEBIeR;v0mOXb zB%W!okP9bw_*{~DFf=gL7r;$nWDLs_oftdZ&!TXVwmdb)t4}MVbi53E1wkxn5DsA) zIS_0f47G<1WzE5AlZ_HoJYvc1Bt}CMx7w#IhGHMwf$;7eT4HsIMD|8|Q|fNsEWGby z0Z%GcIMN*qb(-d_idwMBaDhZD{Bucad%P4y?Rgnw1ZCAkOz-S<8i5LK4taswFt=2? zUe0Apibum^k?JHZa06v+?2_QoK+v8`j)_Vy@QbpoFLa+eY$};JGFTeqA-C7EoPBC< zC>LOwa~E2KykL0e!Enftpm4nV-f~e>0=fDq#~XRURxGyAg3I$OI6qMKDQFa!(4ddQ%i^xnf(Sb z(aeEzPl(!0U>xw^;BD$^M2Qt(d8zT`Z!Rm>#Hd~q5e8BWuJNB(Rs2j?+5&exxNM-%5@O8&srgu&u-^EdDM-daO<39g4*tp>!k z>(H}3g9E#Js*N16J(7pbIB*Uitd=9fxY=p~p<2BIo`Q)GLU;da?Dv@Jumbjp0aN?% z6VQ}tKaqDB*c=fQ=S#_cX(!q>MK6H6rfQ_HEgVK)JqNDZQpHIjl5>;(9{ykR{=?dB zMR*?9Ut(%f>^)B^n{8u0tP011V-z4r83H=|YF=pR3n7_xa+~(s){@t!vU$iev)Bb> ziCo;;;1#iJlj0MEhGS-UL8|OQX)b0#C$zD7PL0FLYI=?VP|3IAa^_>yHRRydRAAk{Z@2fA zuVTe8U>y_ID}-H9FUn=$YV{>Is1|hZBOTiTeaZ3nKC9PgI$(*sQYdOYxRCh|J@`D4 z*n{!R@l`Ec7NlTHq`>`Z;V~FIsGFc(fm_CmffN~LKsdebI(%w30|Hdw4jQui#O;4= zoFhTF{m3X0K@`%7NVu_S6{=S~ zH>`sq(s6nTVaPBU+kCQCsB8T{u__xFQDenN7|T#}_=0HyC<3`~&pd(qMoWEdqosa# z&hVbsTnU6Lxb ziYof$Pa(x?WmR-wg>%~CR-^G(P*_{HQdm*mQHs8f!iqjLtg#N!nv@?AW)fB1N|8Gp zFKb#H(ii`KR^;T>4d?@-gk9AQ&&O&Gq`9n|2Wo{{OnTb-dG+PsMfDpqrAF1p)j_9& zA((6JM>^NdRc&l!18u>0-B1?z4{YIOK0zD3PSr zI~;~(I-+yu^JFjUd~D=^2S8&&1^#xK$^TLfxQU{8tG0eqY9f&64EXeabsAo>n7!c> zM>YZUp=u%noBdeXkaQ>Hg|*>r7WjTpc&AW--U=#IZxtfM^V{|Ow!t&gkP)^IthZZR zV8|SM?sn@+uKqo){*tR7+gJU4!_{-lJWGYcHK@j>dROP&;ckxW&My%zyX%JIfrFni zFGu|C$B$890pEYf%j?rmI7q!`{WGu0eg*REu-M?SVjXy^2 zvB$1e=^GVxCJ5GA6p@=B!u|7`S$`IHYPhh$hbwkmEgVYDDM4)_I|hTk>2es_UkgD&(ky<%x%iWX+|w|Y`?12ds5M~2d*#O0J@P* zV^faM%Qy=Aafj0TO%~9OuolU1jnaE(Bv0GE##Hh1@m@m&bhPh$?4Fj|09K8O_Kb=0 z+2gf*N`6}lq&$99z=Y9sFb=8C@ZzjqyIoDbk_>hemv72c|K~J@!kDg9Ef)%GNYK*Z zn2@dQRLDs6FjlP#t>2c`t>L2Ljn+r?gp(wL{qsMjPj_WTvSa*s_&jsA3BCniM$^%{mAMJf;9Ikgu${fLB73{NUsdJE)E-A*# zo={ciy1iORqD)l^IqQxl8eS`M5rd_w^ABiM;EE>aGz4ICS7AdGRAf1%U)n{2?{}<)wOwC zA)*4`$rG0Zm>c{-h}7ak`lInxD-MSP#o?wnxd^yOt(Ffp-L;P=HGr zDaZQ%VW?m){_}EE88^!*brF)m_2cmnM|{>1=y3IeRglUCOE*CqJW4jBz8Z%w3b>PI zl-i7T5dcz_pLG%!&ni?QQ#yVrPpBrbEhQRmsIMj>Rm~rb;fz8wBz1{8i$cXA>Ep{> znnm#7`!3`z)TLpUW?&u7<$lbfB;L=awi*lqHzQnt*7~Q{6Cz}|Nb5@Bg@Kk~V&NhZ zx!Md8ce}*KNbhI6?QuJ(2=;U(8NzT;?8~ZWwbb&_=tC=w^LxfmkEpnRLfgn)&bRng zvmD2(6N6XzHeONgI^JX$k;&w{sahuqzmzn^TCNlwfG49hD`GNkkLvUA7?0K==Z9J+ zXPR;2Iyy%zQwNYihZJNN^d2WL52wW!4#=TGzO!-<(U_7r?V+zwv9rM-k#{?^` zKfqQpI1A(=M5N^mt9yx~z$3ZozGD#e_VMt3@>`EPgXpz+yAn^zhgftL!A2y1H7Z1c?b@pW zJ0F_?%%;Z^G%nT$khM|GYJ_RuxxwGl2K;?;gs%8P_nj&jbk8JZSgPM zKq*)K;nL5idBA~y4l>GTtHhBicyGqUD=y9&jFlHOM4zKjN?qWmX5AhEQfY{#t`4YR zg>NE8$eyN}%uyMan^jM6SA1#~Vb_jcS-~sQxSe#}y2Uh+U)Q3Bb`Ww-ddjZmyOXi3 zWN7o8LUMC=qMVR8GI)Hv9=Hlk8Q8#$2D2rU9MR47a>_ur%Q9b27m|r~C+jjGsVCeA zoe3|J{k-fj4MeTW<^r|%0@S?FQvZyvd!TXNN2RIcX599U*Ed}=Bqkp@shW~*7CCZR zQqmEK?`DV*oi~>6ju^lbY<)`p*o+N3zG2> zJ2C(^R#Ib`?14E&(l95+wjf7$p*;4QKAKt^?Y?|P`ww2DY>029jN_I9nPgHG26Lrl ze558Cp4?9<_Vb(40CQ zloLFKNfGsZ2BOz|_sxW5q`?q%Xvj%bOa9rbcUdsI#JyQ}W+ueu+#Mb+M& zv%e}VLe!#tBQ!iVq&59TFCFe;1EW*^=9D?xFj#_bG(h7qsR)`|H+858aWfSW;5cP) zoMOBvuqk0EyIQH&5%(!WVo&9DQ4R1;ff%?ne@S{B1B5$ezQ=JNdtIcs zDsw0vje$+(3PYqjx~ZBZhm^C%1}$T5>LVsQ8Fv}Lt1|qXNX7R#~V+Adf5EiGW z#B0GZsX}*j0-A3-V}nMhxE)1`Iac>+lG5egizacQb;vV*zEgo+6{ua{8eQED6^K2P z6qVJzr*)_>kU{6nWgW@zu;G>TOe zduQt639o4nW%z-hGfY;{hDDB^I5O5Tag4-?oak$vb1WzN8i`#^6cyGc=BB-RPAY@} zMWhDOLPEe0@`JHd%evZ$>~7pg1h=MLeyH1pMu;D~THK4PYEz;eU`X^;iQ=!;9o3Qe zz*pV@V`i!yj5cnD_wt$|&SHVNr*)QwO^DEjz^uUp%+2r_GeMHG)*Q})d-_OU*dh_T zk#>Di3!}3jD|HChqfR5hS?RQm<$a>JCJZNnrnmt-sa5qP1h^t1Mjl+zW|ZE)k_DNh zg1J1kd&E6&>{LB1nJ~M<*2Vk}LIOXT4%$j?oa$=Y*Gesp9c>kS%q+QD$6m_@bhWHi zot5<)YnHNMd(eBfGto?%@>i@+WpFaYpe|eVbAwdNymBmlbG5`5K`^;6f+j=Wo3x0GS@Q>C!=~}46o;w z>|(V_IZ0jz1<^c&vN+n4ktH90l;`+3U{3v+6g@K!+YWt4Lxh54MH6)l74o=dh5r(_ z*E|;0G>rvq5e+1bU2`pPiUN|?dv1kNy?ZWNj;an? zqAb%gUO55mE#$7i1vscW=o-q@ERKveB;s?E?^?A+J|yUSj!Qh}JuWJgVI<~sWt3haC` z=x|37qMOmAW>V|Gs3^S(3D!(>F)R9`Wr!J`6W0&GZjQyGltgCGkC zfvg5-Oj1E#beb>l+<|S8RekV>dq0xJl8y*V;K+oe15B82q=8S`VgrU4=|@UJQ0tzb zk#aVhA!B4bF(G|Z7`It=RGJ%6;~bx5tm|M9Ar%X&JC)7bw3B!|+4>5fv^1nF8&W50 z$v3K_-?C6eUkstD#B5V-U2J14t08$sKy_#xWW13YPS#Sz#Y%WbIdM;G}m9dfU zFX_8WyL*L(#E=YHZ-l>3wqy(fuE-CnH7bH%T83&{?@(e0UG=a@Y)j~hFhc06Y4NUZ z60O0VK`pyK4aPwPBO`+;GKOiQ90P}C`ORTNJZp!&+H((cu*r;vh`}L5*(F3rd-p`R zwH9z<{Q57NWT3;O6#fmTT$CY%pQ~YD9Qt%m#{Gru`SfqFWtaXF&#(=Uz4H>R7uV_n z7zrP*N$?I0SWdiMl6Zsq!wvFC&C^A3a**6Yy`rV{?cNhJ?WG|pHFhEv>d{lLmpLZ1 zRL9r`kD#gVrZ_n8-@IG%RP8Wk;jaIS@ARw{QkxOK=wyyzHsTqw)n?6B$)a%iqeMIO z!I*NyD>_Q8+L^K)Swpct!UEuRM4hwTlX4xq-d z9F*S?;DgfWAUg}^9+0C11GOD-tvQ^K1ll3b4O}yWC{sIPs}gFEL0D9NnnAp23OTG8 zuLPCmxUzuyG!b{R9T?8py-X9$)>vdwNI!`Mjh*Bf1z}Y8=@A_kVN@p4L9v8Oot0b8 zfLUyQ($KBiAEP{^=1wT+h~ggNv*In}l;oND0R<6Oz)^B(vy7f~5I1GzL@$7P#}m7G zNY*OhOi~C{ZElacR2mPQD?=UbX?)Da3U2VvTmaxON1x%Kn&c>vgSa~4iF&3ITo0k7 z)!$|tL2i$Wr&={t2X|oI=Soa7If`>Qj65`nb1WACV-#>Clx)m1;Ln0^DdZ>@C`2J3 zAEv^wG!vgIdM~whs`rA=t$xJiH8MHB_QgBEugJ(d|D}}CY-&M_NY#xYGU!W6r56z~*D2Y% z$ekSmpSwMyZsUj9&@~$uMAxn=)3FCNg`JQH1sOnm$B7c0Itu(f@Lh(T-e*M3YyOKK zd?Fr}qkLDc0v!Bo&bv`bl&vXYO|XNYrILU){W~4dtMzO~=#tK`L4wJXK;8ih`1vn12QpGCmTXz(a z>P&SWI$yvPB?$>;B>9R-zXTL&bVoc+gwcA$!vmtDZ)<{!K13hkEAr3dH^(!f8w5_B z$PQsz=0j7fW1URp1W>ji9KgTw_4U_ z+V(`p_BGiRFF?MiCR91n``l`KzLv|+PjYH}7R;QGEv9#%`jy9bv~bwhN{ZGFvBkcK z5aaB&Rvo>&4`@mFe0z}ad4`wnZJNW*_6Ep^+VeopW~4j!$bp!q~*Y@JFf%7^_Kn zj02r$Hva=NTK*i2?+6=IahFmtPOXq6P4p$>$u7(|p7MRBm2XOYaw z(1*a1qc8|vV%`f0NJZ3JX!%H5CAcj3k2_&`EVhNg0fKU(wg!k<4a4sLxeA%rL^6 z+-c5%xCkuEWnn)4ubhW1%;x|r&F1>mk56i{LfUytat^(cB&V+uN}B}9PYT)|wJGsv zY*x3xSgp3mm85oYbl3@T3#Z2+Tn(URN*fN6*GD3KVZC|4;G3i3EhmJ`I!IR2CdQN|Lje5tr6~0g;zK0B7YGvdl@r`D zN4gJkWWW71mxCPQEBr@oBgYm{gxLxYj_??G@Z97sJW%hVWBQot5E=1{(fQVhpijOG zLTGbLAi$CPmj8pX%=pZlClm zW5U?v&%KnO@4pb0$x6f1Kb({eyJB;y1U1^17PgNAx$5}N3PXg5yH<@nnhvipD3XLE zR_U4_=65RA|9I{{>Sqqu>!XBWIFWWn5pUU1X1$zX3x;LSO-dx`_cNlyzEz#fBw$wh3|X?-ocwO^XNOKBu6O&HpZ5DbY0XTH(`2*U5Z{` zW9e7&kyO6@>O=`9bKIq;1waHnQi~Ru;44}GNdj&V9;{ZwuP5MLzaZsZ60wx_j5z4q zQEIpWHM)QWT}BK%&~z1!r6OqnRZ<*wc;8*h1s|#An>&$_@~u|)F&_%sSl7r7>Km!(;%kxtJN1;Zzd@{ z@F*^tN2-rCS&m4|552|RUPFz#bgaUV52Emc?Qf?%zEULataL5u=Dr;tqwzv_rzm(% zJ4MN*zf-KCvLcnPm#dmgbrY9qCSY7dT2iIB9YcMXc+eWyc=vLqj{^;N*Pu-XPQReY zK-H%^SxIDQnNoPNOk-H-G9E5 zj)?)o^0XYVbd3pGpHrNfaX!k%n=dn6*XUU%A^A92o6jEDA%|64Mpz)>a-{#y1%DJ&2_IOw<|R-Gl*3XbEi(OC z<}rw>=1YWD{%&qra)Q8EXDJuAIuF6Yxx9*WlJ3iQXF8Yf?z~paofgb%x=I_O1=exu zW@ySj*Z)E$S*tFDh}YDS`WRpd1j?WS!rZE)U7dh$^}ph8aS(-o5?i~ZIQTM;j)tg~ zmU&RF$dunLgkb!lVS@5#OB7@3n9^} zR{x&~R)y6yRf~S$4IbU<24B{VVK+0W_;`5pGL5O*!D`jFvK?08#$%|e7k=s;OyGx} zU|hYG-V1FR?zP}*8${~nLw{=HgzQ4L>Lc(pVI32v2K?_30gw7bA*^NkoFD88QeMh# z{#p|>wxaNX4%lMS&T4?qCXw}D=cdU@!dvFTyw9-`IZ#Aej*K2x;2mQu28>%5bu-k; z?SkxfTh=1>?=%LPl5HTWev&NmPsIj5<)f4Gkzgzm*a!w3Jll{3Ce9|yqpXinuiW7p z7dW_VvUmD?y#$G^_?n{YWiet2XTb z>%b_X(m!wG*AUPULdyRf+>$p#7YBZ#Hp+a|#R$k3@|+Jdvlkv@JHP66qZSCtgROE+ zqE{it02~&HaV{7*m4geId!fbbiyyuhx&U@QAF$TP3sp2NGV5aHO|tgEz2Vd>c<90^InUEq>vGwf z?g0{okFxh19!5mtf(ftoVYPI&(um43;f|n13-%zG*`R573MG*!ira)x9WE+Pz^Psh z^}|_Z9d0+JICiWgPl<<$-sH6$N4zisP3z=8MSitBVkMLKLYv}%lS2+MjEUfSPm~{soM2}H~!I5ZX!Gzz#&5#V3t~Qv*S*VPK zYzRF_KN~kVri+9kMx^+M%MA@ZvC*K$C6K zDK;b+Ht>fl6AE{bKFj(r;IRie_5n5^rZs|&ApT0%qh#;l0^mBlI&hIj460>ajAuka zMm2W1w4ksfMJuC3r!q>I741feDGjwzg4J%p%j~m7^$fcm-|C=OUR8A_kA5t@x=SVN zaY`FTW%ROI!1?;nh{k7ki5Vt|fxnH3{Z^!f1W)+)DsvcVH^FLwW8b6b0Rjv$HLbb-mY-6@K=7JX!ws2-0a`|YL$8{Nz;@=>4Y7ijsEs07Z zDl~^9V{xLX1uZOu4d@an1wu}fB5a0s4W=4jXEaPRg1B@Ef?KAdIl+y%%+S%!qrA|; zheb(G*V1v|6i8T}P~%Th+gduQ+D-(ivLC z8NNT0*5%)NB%N_10r?DXSj5do5bJbdNM|~g@(P*C?7~OVi^|$*MpVW{1a&~iDd#}{ z915#8Vrym^qcYs zNbVe%cMKewGiJPU#Sh2)fQEUjm)2Czn)xpyv0W6tCA=Pf7`bJUJuS!sKL)5Wj2aLh<(r!AIwMDsmAXN0oFkvu0)cenER`;?PlgVvp>cYk|m^mm^|4S2` zGuG~O(QKsW^B#=_Ws-hQ%yvgxZB~TwL(s$$i8YQ-8q0>L(vgH(IHEPZp zn$-L2)-v|!WOOBKWqOe{GRhQt5x_>JsEweENXBJFt&5_jg>VXQ_kOk=F2(deyWeQJ zRiaRGnc_hk#8+tC=m91>4!jE_7r)1IwJV^ssvlIHT_kQtBdd+}8d*GJL${TD(5P3f z)Vf*$AhVV?&C$fbJ>lGCRyWglNepu?zksRTE5pTu$i?Fl`kcbjGB(s!7n>?3-y9_Q4Di` zt4W|@@05YywgHJcFDnyaaCL70-J5O(I1Wl+G)foB0UETi{~l?pumUy0Z?(V;*aSb) zvRYaK2dlw+ZcnTl6tB~40k8~#Ld6IGN@fUP#9fy}8N9HZze*O?PN=_0LUj+|J{%2i z50!`v&HZ%~Rd%}orzs5?TWiCTfUW+IsXv9(#@-{DPc(xxA)lS0~L@;q*m(dM3AUxE4u=*_VHa?<^_&sYSaOgj8T15267s6U z6A%3xKLWg1hXfGO9cB_1a+PBgp?*o30-o{|7GYYm>g~upH2_Hdz8R&FDj#E^38s!+ z2qzmg4t_x67(g9~!w^6g92G95#xp@$jUiI@1RbC`1djv8d%l$ZBnb2tcBP0y8N1$3 zW|kopEJRC9D-n{zz=OeS)I{|(WiY2Iffrx|0b)8O`EF^KBmC=ZRCUE6LDdf47hn?O zNRhk0(>VbUB2(3W(I&nK5XW(6lo~Tt)Dz%RL!pWamK^XjX6JoZOxN$TA`U}WrqmUx z@IvclQ~E@^=qMKVT3RL(LS*DsDfc1igC)u;NUY<#F`vY2mpk+YO&cdQrjx1X4fB@B z0vA>u)Izu*N_+3e+ML;yXac3u3MPT7Sv_GsW46#y-x*DUEwt$cV{5@dM{B{6BVUz1 zsz-q`+%(VD)c|Y|x?oI{XhQn{OV!mplcV#sNk)ZG82BT&Ou zEC%XRb94p>S!jF~ayl{)>#t~il0W7j3~=b%7<yl>F*E|x$IaV5SaHg2HWW~&+ zHP;!6pJ6)X*$l*^)`Y(s7$rarC3O2gtNJvQ^iBBDj58;HGadHUjVMD6m=0irNuEms ztjVjG5vNd0M5Q_T3mLc!4HLdSFy_>$-7sczlwch2Wo9%4W84b&!59R9e@$l?<v@ z)c}wT&2bTX41qMddkDTEPrW@Ub_PHLKOJ7DeTDRC!xBBK;%&$?QD0DzhOO5daRUWXNj zawN8Q{(swsC)I{!yWoC}Mm#Ga#kiqn*&?TPl{~yMHg_td@{QUtI)*sXhawtk=0d!1 z2@BlS06jeoPB>D^95~kh8R=8 z>wQTlUV`(Izn*VEOX9W&dq%7JJ)9RNL47M=Q>iPQ7xFU=lS*dx>lBF_@3lc`LEDG3 zkYR+`yFSt92xHi7OYDsDKqzew@S%9@%C)AF%Vy?pUlfT2e>~$afky!mGT?9@Z&OL2 zmCAG`0jKiY%tWm9gBo!Bs6{^j`+&@F^_0LSE+C0VOa-0 z2Aar>tOb{*G|$sf{DeS2SRx+PN}+{4`?gjH+Z#($u^+NR)1h0M_=ddKESb-Z*kMo` z!_-6>3W`~A4w8%ltfNwpO=;wra_}l8=)*BSjEo7_ zZ^Qtqyc9}h%r72hD*hIBk-_nLpPd+tSh^bOiowagbJ@ryt7STpK}KkU!2|U{LfOg{ zTXtg(?t^tRt><|;eUmB=QrF}pWNau4cF+Kc7u}&3S`zc}aS!7=KoBxh0P~*VLf3a-sIR!^#P5O zRHc!$L606?)#SGcogW4Q2t~Hp(1;lz?C2$P zkH=%*bT+P{AiGBZ5Yu{1S>q8<3x(-=*|lI`$W_!7OI>g@7~vIG!zM*-LMNSk>jg_= zDi634=ri?`_jF9GpAIS(&#n&AZN-#eIlu=SgjYVw!Fn5q8_6~70kf!6HkOjE8tEB3 z`8L|K53A~_s7R4;5*T55#*_k+OB z1_51sa-OPV&!{TTs}N9-nhLv-ax*+Ya+zy4FoWThg#Tc2nmLls2uCV`T`*nFlXgGC z0HAIHnNIZ+R@P$9WN@J|De$24ipUaPr2$(_+W5@PVT_6FQ?;`l2Hh?!8p^WHE`2bq z)O@{kw@WQBGZa8Wd`NJ_<1R`i4$Cb6#vUohv_BSDByMngbFTQDjj#MW@Q9b|fVY?H zSRm3d>KQx%mo!HsXJYY3VJ4)K(VS+{^?Eo)grF048>A|GQpR9N znS`YOa>ya;AjHQv0Bd|=DR&P(g)AZyq@>}5u#m(&QbG%Yy@=kTL>a;4+Ouz-0nvfy*kGugi#Vl0c_^)2iH)9{o~25B$8l~D%J zC?X?gH^e9?&{3!%6a>r6eMcdIJJe6G%V=ow2K2hyMD?KCgC1+TKj^Wip89eD5vl1G z`&QIP^9J>8D*7fHi#n|frbzXziKeZc`%T|!bDR1Wg^R*4AE{hik>##ChXXj;oQ=21D=^Ov5FTD#MTrrrDrOjl4mH7T0Z&!3y)lh1NSA zK82fiRGdu8OBg+xux4&KmnAT*!w}-0N9<}!o1(uZNF7Dy)2h+7qeyP*A{lgw1cEUi z0L{>=!bMigrP4OSaEZPqBPhIltoMnw7pH>iBAigOl&6`4CO9?#*oIp#^WhPd-^sl) z2ky^4&Yk9+UAo-yc7E4w-g$rJu6L+7xlDV0=XbG4ijtP!$uqmIFW!YUqu2ZU9ogfh zATl8Y!JxPPb0RR(tdaI&rcOcR8G1mO;h))b|CeMnQx4f8_a$oDzAq7dYfv!kC))#5 zit)rPc2Eo1#w_Xc)epp~@l^oPOLbm$k(+eHc0|MhB-ic#ckUXdQS$Ff5Md1xs&?-U zTFBJOP)7*Cavf-^Ko*#PgX4N#3@#!YY+KYNv#s7Hnv=|OuSbJH7Hdo-bi)lGDuko}flH`0_T{wG)pbRnx+vFh>S`oNc8cwy#7ey6N;38c( zgghB^lBb$|sh@&OC7WK(JOqyYIo-KfUo98IU`_dp0$=Gy(qzeUsr@rJ_ep9Q4xIeb zel;TV3)@Q{Tez}NrcXBG`?*DW%6(z z%>XP6d3Hrfts6@P7pe#D8n)xHwppVC`T}lMP2X|j6!0mYnTr=e2awVT?}ilRsi)rm zBG9a&-l8zDC?+Zxm)d4X+CFV!VfOzPMGs+#u?UC~Kjf;PkJ0L}?q!2+OmL;q@ejz2 zwA!6f7|}5SibGGS6fs)FlM@$ZkZ^*=f^gY}C58rJGMnZyEVaqIfhAMP=xm1Nq+q#f zSWaeGYP1)D-K1d2@>~tealw)iA0`2!=Q3vdV96FN4k9Dt9?V zSy|D>KrG&)82sjDW4d^22231gsKtKawcP+jnZ!<9T>gq}Y(i2p_7=_BjVAM+*QlR)IV7h5 zl!2{uM%F53Te6l4hq;x4Wd{}X7~B-KYE1Pq=OGlbwV!%p&J~Nm0#?r}sCD|-6(DH` z=QcYmSz!0-H0&+@F-o4f?Jb4Is6ot0nN@}JL@q{(RlJEK5|k-_J$41vf96pp3Uq)^ zQ}3FMP(U3HP@>`JVl($htlQYAE+Th{-93q*i6%SKy=TYT(?fdO!A5WEfF$K1jJJSN z1S)q5Qo@k!l({r#A|POtGH~J~L5p;!6R7=84>)yuE}4N+Bf|OCJDB>8d+RunmSYtu zy!!QOA-C5rI3!kP1AN2TL)qdpxxz8qNw$2EYzK1yM~J>j+**WCOKS8-e1IVi5mj#KqE0l!!*L^zI>IdaY5~;L7wW$TM$0O|^95jAtC?URwN=2>b=GD*zBkHv&@jkTxIjL2uVY52L$4x^XW)TV-F`n_viVm z=NPV2K#$^kHOdWu=Dh&aKwKFWhT(=9rPC`+9VoG3P&JiDdRJf-u7N`i0$rdamNh$L9n*>;I`&7YoV5`&348+#J*q}{2*aD)ciC}0butP z$&E*MpwGHu??jQAcu+G*4msjPRv6VTDt|~+LnAfXOKMANPa)FuL|pk*bi?I?5UUrE zVvb`3HmEJj4{}%uxtBRd2@d=3$BQ-noXDk@C&}d+2)y`jjgKePcNJfr%J1N8`Q4f( zPxEOFFchcBc0%x2$MuJtr=@9)>tmJ4x7@9045IjvT*OH~V=cVE1x1GAOgQS3}7s2q;Y5iJ-`<5p4BF93USU~4s1xn!3(={!uxGduT)s7_P z5|u2bRYCfgLUkOEKyKY8q9*g(<5&ySBxTj7)-+2G=yp-^lBKLgT*Ru*b;>&UAT~Yp zig+f>hyu$XJjZyKt`$kjq#(vXTmc;z2VFd_dSVPm4UgrTSq*arse&l3@QTb8V54

MMKhbBk@hgD;5#<#o_zl7Esl0;~My-e?!Ipy@QEpqVBLp!vc9*eJ| z#Wb`Eq-!$f5Z#A($mU3WQYxU;l9nvUCaEi&;`XpTOCW<`QVrcD5mPB~D2q&Gmb@0E#OoS>n5)Y6Dtm`7W6m0ong+1knPj;V zyU8R=1fxA9Yp0}>V1i1f(KgM^gRp~8xMCn(o1cthw(*?;+lCTlj(lQ0Fh?fxi+o}$t-!m6= znnDToq(af8F?NB}s1cBuv>7<4S|+$DsI{kLOA#Aa3t$8QKTOrc1z+4v*Ea|)LT zu_lgJD>w^D9T3M4g-2#$y|0q2((?=#J4)@p+^NtB_O zu4&u=HOwuv7<&<9NxTxWdR6f-1s@L(VM7(9K&CLEv)mq;0RJA0_*me`aWpkqQ?b|= z2okL9Maj&T%Niy`F2t+U<)nvPX7W=Mph^8{nz4?`w=M;@gBXxUL+R=}%#@L?gPrJS zkb^-|i5PTeW$Y`@UBGxezEdWlUXpjIE^O5UTJ0iH#M$g~>yqr)Qk+l6&ZB!=pzezR z<*dPw(gjrP&gFCpn?O1%$}Bh1dE<;qotOK?MU|2^G^OBnySUh+e8%l8mGYQ8iKI+P zIP_9EP4L1NfOwv!-SJ%WW5voUDNHQ=4EMzbU_UFmunJgQ;4yaQOCv1K3j(zAV&j9o znP!UHn2z7h-yONZ>4Mv>0Sj7Fe1_;t^GeFThFCt98_tddQ7!o@-l;56ai_J7w+$M~@$fTMu8F`b~c|}WWp3b0w z51#Ine@64}u5>aT7obnXWvy!Ksf-IVxO>}7zBCq!=1P=zsjL_1Q$&N)Lo#-7*pv1= zIpH*;N|&R%hH<%7E81Je@dt|wGOV=Hg{xlmCihD4jSC4BNoRRUGpI7Aex8P^kFvDY=(Dr09YWLa(;amwS!zL@hsDzd0n;|yZCX2&>l$dYjT zP&ER|bqJDqhCViEUt|0aW*@7EDL*~L7kEU_^0c1L^#7$K<#H;7(TSF9WDG39+H{tf z1Lxfi?q9hA&<>(P6&rvnRU-{;Y{V>>clSXX;HzT^r3+FeF2X~Qw@6n&EwWhqc?!4ZrZx&W8Ez*H*|l_%^b_k+(;>Q?hcyyw(at~ z#ymGPT7AZ}m(D4Bi=n&-NXFir&R(r|?g|7hULo|(ZFSzLLt<~*pI4#rc|yH3?c+)h zQ{W~LIsOCb;!fH`cUmE=vzVIV7Y1Kr{5G@amST@=LO?hnh@LLyWX9yM)OVs8aKj2y zJ(-6e0swOvmo);m!)!2XV>(-&=?b=%+AGQvTO64oOSzZY@NJanQ90(M49HWAaJhKH|5P$17IWx>Y+Jzg~T& z1se0p9)oal3!H-MU$hV}@a>~X3WTHyp%;teHVGe31fp*R4A#JPOQoX{K+}oKNu&~& zQ%EH)r;$or*7^EO_cD}oEKJm|mUym*g8L*P<9O9tvFNS2<1Q)K9;zL#%!iZdtSA{Bu$C(q^n5HoiwFlY zMf)_44TOng%kjbErYdH@2Eybvgh>dJ$>L7X)aJloSVO`Db!G1>N(o*kXBv@r01Bb= zO-T|;wj{YTB*`5}lG~6Zx9^uEj=R}Ni;Z29WOI)sSx;+{9jD`RDn!W1xLA@9C{xY8 zw~h6!(qd1D6d6<+{=dZ>d<(CF`3kf6(X;`b-<7%lonYEL$MNx_jX+rh+_ql?=o3Db z21;2VYjA(by>F2FAEQYn_y`L|?Ky7#Z?rgG4P?NvbX+n3W{?MCnN(k_zS4#( zadaZ}VY)(pI|1&X1%X&l)bT*Wbgbd_m(%fWSgmbZd>$6ymO3vkPX))NVq%;SV>)Wa z6uio9!ubIPDPaH<`!9qXQpI2^-21NK+DCHj$I{V;iRaphWw0qG-qa5afTNiACQUg8 z4@k#{nfG;;7iawnro-2hBypPKVWsBrbj%y}C_vU)5`NUK|$|9!5d5Lo$ilVb5j6?4*rODW}C5Ig-stFPf>C2+pWmGol_j zsPcm&^Dj%^K{;c)VZ`5(yKq6-oSBHbGM9OLlDQmag^SB7wh1mH1##Ep(cDaKgt?4d z=0UrZ*C|ctA?QQkgSH4Tk?;Ta*0YY}QIi-xLj5+U!8~!3gD{u$N3cw;2u_7w|3*uH z-lfkqIMJqM*uGWl9Ach7ishj*sBU1;9DcLpV9Wrhx!q_RGio;d&23&idPL z0LJzll~-^x{&T&jF1BA$5BaCsoW+qbgHx&QZGW=OteVmM1OsWi8`eL&R%mGiG{&f< z6%wNI6GI>0ss+XrOW6W`@VZ;&?gmbooECgE-;xb?to~05F3{B>)U6_M!EC`@0jiaG z01p8p3_zbi*5MiYLlH@Z1llB5(H~I>`Q$G}ACKH8tlnciD^7G}CsQ<2<_%{0Cqy&c ztKkl+WfYa2FdY&HaZkTrmwVeEcgOE-e~cqE&~(d_Oj^se^>&K_Sk&F>yg-IT@Ms{j zK#`8xA$Yk=hx%J!+EVb*hA8%JiED>yJ$J{>t4iLcBeZDRTlEpmJ(!O7|E{{VtOPJ+ zq53auGFu=Nyna891I$A8G5@~6Z@@yvC@ni{@;26gr#`1IV|06AomQenR4sg{T;XP1 z+|_&AZ;Gckx}r^${b#C&>la+#P3x%IQAfEZh?9Avy{Yc`?oIS1?lK7V`i+7j3<(a) zH*i+c-X?PZhk|0QZ!<~)u>gD$Sd}L<|6NNbq-Buxt%=kQfvq)-Kb=Z!19f)5DE!!J zlV7}r+@C~pYl2tux30BdzRAF}E1ZY_I)3dT$V%&Ps`acxd6(yO87a@B<1-n*kTt0x zg-R{raZrK`0mYizM&a35aL!Y!bUs%z_?~7l6(|rV#qIpv!QY+y-NoOQabPo@#ootE z=NwApg|vA!f2#!?Yk7c$0qdkSDQ~4J#0rDijk>|jC0*{Ov^Al>jAx*~`iC7--)$t6 zo$KjbZkSZWg>*L`T?p&R$*s=!)0azRJz0%05&^sn!jrS(qn&QMH8wIT$X-f!h?efa zR_LeO^>jPBfS>Nv)15H}m(pE&x=T|TeYd5jtssU=y>uzvwvCN|m6<&higHQDO=}ak zF}c2dJKedR?%GaU+iLo4*n#Nl%jm;a)p`U8&(l4_{6oxZ-Ii~9bdS0toVgCfXotuU zQvUvE;~MYoBpoVEcX91z(f}UZ&Ej7fmc*=2vC_nE{iwMNCe8&qt8hg5A;u*Q?*ARP(#x0!!MC~o--`r=9HHtH z{CyjLFX!(ST{AxlIwAaRrBmF1`;tGxWHTN+BZ~COlS(x4CfW5-QAso%+Le`J_fd>13!dGKm+7nHWfa^O`arnhs~ z!ii3A=osp8K>O5W}M#IAB@vR9w))?NZnONopMhq zjfPXJM?;tE$QIX<+0zh6hd2}TCT*88ZnMNk9{I>JmM#fB(jTDGtFitWb%r3Ql#TxT z40M>v6TZO;=F-k-RDx+TAe1g%z7AM&d&+aDYg?V~BjsGJpS`(Zrbv3BfaX%?(%L<( z5iTUW_1?Di3)H$Z=x%9Ea#>(to(U57p`k)VNu~I9wZCl>5mTxwWX}0?UIJ>5%-Ne7k~F6_vNwd;aH>bXmQU=!!i4}Cg~H|+VK>8`rx%`m zSa-uUJF7MuMIi%oqu^bwHH|=srDgD4++9t_%>7*EpBQ8 zOt1EE@tc$s5t>oEUrXoqWFKa+_5!2gS7t2jNn&gl-|m_A(02rxNqfH|EmtEaA){|X z?>s$yK$H7`HDQVBTL)_zDl*R)cFXFz-E{KX_P1P`+HPTW_g?Dip$ciyQ`O2tiz%aK z&xYH6$n7hz?hqKzG!@^RUMjWn2xEu|pq3#_!E{Cps&_p*cYV^dxb7icG=G4 z0we5Evpk&&li5j_i;A_$Y`8gex>)a}(-onPy6N<6x83bnIkQF9x*5e$U~7mkrm)HAw+PC^rM8(V*E!o3ij_1cWSUcZmh1 z!ty65zA-EXYhm2=c*xo;ZJhDEiP@0JP4%hvcD8@7_x{haeY&=czldc#uZ2@SYX}0v zmzc|BOEwO`w3r=T*V94Sl37dK>U@D639|EQNs#PvQX$7>pn|%xq|Hukm!c%`lf&Ul zA-}kJZ9en9Wm(s!WMp5a6yhea4OvU7%nhnH%fhZjNQ{{n*zK{yofalvAT|xA_Tw}* zSuHt$6X(FTOpaq(qhwWPUdP#~T`*W}LShqX|G$Jg2Hn_bAEURtT`vo!Zob9OST+}% zWU;iS1bQZ9Ueh-U<;24_8avgOY65?2wHpJ|76VJWSb;d!$nn}5Yda4`;~!^hEsONB z#x4LEEIX{$+5(y{HhHM$r+Fj9`Zn(=QZ8|md6kMjeHL@!p=<(Wgk=I%V;4YzNpYfu zYyt&MSihrF*#s&)%fdOCh`t02E=uDwZY|l(?xL|0K*;*}7s6C2Yig;!xd{@&A{yj( zJ3v^iM2Bs8_e;C7HUI$eWH||JG%jLHT)3JshlTeVg<9xGH3Dg$Cf4>&GAfxYAgu5mn1o5>wQjUT?3?`$0xJ7@nmgoRJke@bK`~} zeSzk0@OOJy7)8&S$~*o4Td<=M7#BS%i#0csG3$V#JS=n%Fj<-%*lmpiGb~y#^l-87 ziOUyZ+$2#YzcGV6!FQ4g$C*6h)DDZ8ufEu>?T;sij9bEylZ*`uq4VnL7u)3>xLkpG zwm&ToY*Jb`IT=F8U|Tm}%G2TrTJO8ac$h~5p?O&TIzIYSSn}b!r#+=dym?ChtVL6y zDLn-t+G+MWHzg|psYn!vilZtJSSH0ghs#yRTWP&01nPC=Zn1>mwd0Jifvd#;SJ`+X zY!#k@>VSlsYzu>|D8~JU-VDcPNQ8#NLn4WvpX-?!<5SPffQ~z2V`r`kDB|T5bB)|M z#7}WoLt6l;xTn>jAHotD#>j@=egf+>_AisB@`1DsfFJ(w3b zV6mh*U0AeYtLp(QtA|2Gz;xME*}8R=6Hz7l3$Ecb>t-l46UgBirJ8=4rc<$uP)SCp z1e+D*H%2I2g=6Q7GD{fat12T@1{LljGC4KlaZ3`Z_0j|VuvWsk;RUah= zOe|TVzbA91OQ5M}9~boNfDE+dXP8-S>|s_LFe?RMH81{Jgge}eAl;lYAl^GN@y57I zma=wTc$(Irus#`2dWq3pr8 zVuIDS0IhC8l`!<9+_BzS$Qk+=_)^>fL7MB0fI1s02ShKx9~zE4BSEa|q^t@X=^m*m zLp)7kUPLbgv9FXnl#&-=YPJ^3UqhctJnjCJlzLVl^_>LB%w9G?EVq4Ks_Z&anadrX zNJ}-qDNMWs?gCrrrI*p#J=F+p1}#*@7xy+#dNQMBJ$dlC!w=b0ND^IyrXwST)ur@v zhMkG&nv`>HGqFgxr-DY9U_dF&eoCgzEw;soyb|wFjPrzNSl3MGnKmG_bw@@q&@~~V zCy508s3(JPnfyJSspn~CW)*=$pL?(LG<4)v_1jnpn7$tH-X4aQ9D^P8bol)sWb-}_4~i9FoBq6X^2cIe5t>YmOg>D%>ZfZ&4R3Gnm>XKhjB!VJd=@u!DrkR>w#GfbMq|mbxFbI zCiqS+jplg>EFOTwh1N$pOu%=TQMNNvLiqzm>^fvA*=^;ML;VkB!^Z%kYx37ydz8s4 zm`3aHip^nje5`%M&hefLCKm;>5#Y9=xejKY@-UVhMsZ4OfHDB|U#jQn+JtEtUMF!z zPi_Z}>Kkp`6=JI583$$MN4@)={tu~{fJB>^hUn%Z7)SLvkfK}QSv0_pqn9HXhhf9S z5ZC}i)taH!t3Kf~7+Xp^-2adoi^X1gw9e&#Hs-4r8+*%I?}w(^tDJWkGAyD#@Y#treI?bu3 z;R-&*uG4Zh?g>yPlyivo7RWru9~e`xN?BmvDh>f79Yzd*3nGOS3xb*8r~{Y8+Z2*a zA#6(=j8zGUsPeJv;NQu45J;n9I%!Aa^KIrToOb$#ydjSWYI%Y;2cGZ%7Ec=kmT?&s zlZ+F;6kDb|x?LVqEpzmEGEGb7;qt*JrO9X<=V1kJhEhGqL?xntv>JV*`S~E}NSPPi z$WfME-|R0x6mt{tAXG|i@f7C)-;Z$n8WI)ZCCxF>2NCBe((F7CG>5~46?91$z+O=eQd(6frVRyAgI4eq4Qv>B zkPi*=;ENn+atmz1p}$}sTG8P;N#nTJw$)MHfG~u7+mA5wHNps~gfJYKErdDDc=Q?0 z8e#h1I)vf8>p&O?fupK~6h;`|-3(#WkJ5bzgvpy$!-swsw!mU)Y|*d_TMi1)#+HLa z*aAU$(#IGZos`Ql-@zk*1~Ne=i$Wyeh(kL8b~Ms8T{uV=2GKciG<=WSew5uhK4x#|YZxaU2K9G^>r#C%fP);Fz zN_2pSdNIp&j=up1&2hX)lLa^2_&KSa`y>1*q!jVxy|Ig}B?UZy@oei%vtS2sI6K-o z_VO`Eqw)?v?(ls^i^j?PfS6e_^I&fj1XTU{F9FN`@4lN~+a|TAn!X*V{*wS#zevP^ z{%{)v>r@;i_ThG&>3`7I)ky#2@x3~})p-M&z_Ds{yZUIW|53f*gmT_|7Eim6`H}Jo zYy1X-PpA7m#CwkWxIfp@aZ~wqP0S`bI-H_@t2QuZgEo9c4XwtSHmGv!=&fq1|8sJc z-|Bp@Y41zUJ7{li=uqD0o4oJ(MU^|gt6aRLo4nu z@QXBC-MG=YR?OCKe|FE?x1*N~z5c+i*He0@Soa_iZT5Riz^w-oJF_Z`R-K6#0{!NS%0{{td9;i z7w+-WuRXqlUOHL5Wrwq_a-TjvoC%yiRKNKBT`$_j!TQA?4!@wZ{H}PC_2IbFh8^BrFc*SwV&Vf5}7l2`A2$*4YB3~ zMv-HIBK@a-gqKAb7;;P)($dlNsl30H|NCC0t#>}d@hPq9W15WCFE9VZ<@cA$`1zM! zdg(t_Z!}8QAHG<9Z=H{V-emSy{wn8{pjlIeLa9TYpK56ObHiN-M)HIrMtW?%Jp2;K ztky5y`5dhpqUodci(lCD#gY2OFYS4u;I*#fAMbgwQond&xDHyzVFn)-bAjVtm45Ux7vYKdyqFYKRYI3t( zw51$(E&~}whvPyK$WS}SbIXP&-;PxuRnx0h-So%#vLk?!>BDU;3aNiT{>wMXq^Ux@ z{-gb`Jt#h%XT18?zw#jj4!X43TCfu`1T2-bE5)xNVI(RgBASh(BZAKe@R3zJ4k1;4 zatY`RC=`XhJBFMlvvwUTnyEUhVlldu4UDD0j|7DIaC19ux8vZ34EpU|uy3ct7lwU& z@xvMhhQn8ceISnj?V(V8S-oPzGh?AqKhCFYIn46kZL0G~lrvt4cY2Zg=YeIfriU${ z&(ZUOKiw4U_~!G}i0DVeeX6~qV{qQOgCrAH9Ng;Mpi#>71yDoRyiE-L?}_LraXpE^ z)kYWq+je#Q8Y4|J+uV1r>1St!w}eDf%IZ$le{iM9?+Il!v2zW%3Px*3@JNkO_=D>h zU=JXCp$+zB6+%oRt8ibTLFw35=QpH8vot(%JQis4 z^Dg?7u+ChQM(_f|8+-9OX>P0Y9;q+t=(Eanpt^y;@Rqqw^|@dB>2CG85B+pE^;ek6 zQRvKdLcQtc5I1nwE7kmUazCT6fApqlHILw=AS6nA>G$8UqjrlP9AY!-5x;nW1`|_| zlD0Ze#d0fqDcOj=?4Y4z)vx}_Fv-wA%2*CkbnG{)drxs@jCuiia7&T-6`I>qdXbK9 zb)HoBR<}Cu({*aA!#=l`24)=9eLE}e?cRGwbuRC3eV9r`UG+b3jDRG}Vmj408?AVJ zp}SLbxo+-64Cgv0&FjogwA$lcV)u>M>NrwuN?MFmi7}p-J z%P1;_QWujEE={ol->PnOEH|jNy;HR6s>G-sb2R#HP{Cu>3%@~mB7F*kEWXJE+8%B7 z4Xst9Z`#_MHh(fVAEOV=C#V?)yJ+j6rNqs@<+uJu-zpG~7X1N9OC zWsbGl9Rg^1#D>7RFF}O~u7WR?DmQS@i=~4r zu>aIxF!mH_hQL{-zpLTr`g{5MJNas~=sn$Tk3J55{^mP&@>C0LMpG)T4a(QcG0SQ38pmcVS1|h9%v~)PGZ`)FM6Qo$9hCzUzoL!YnDDMJ z^WN%wd8+DSQekT{FzPCZG#qG-XEeks*eJT!tEGzbs8+7Q6h^OC7z9^f6ECU|fj1Uf z%4Ih5s(d0rkCaCsY8Aot39g!ZJ;_V)v>Uqe{61ab4o~FtXSnJ#ruXFQyK?%|T)(}2 zclY`H{FKU=g*Iy`1ze*K#?!L{(pS4{9) zs2ZSi+NJZImw98ZL^r!ec%^%BOVBxyY z9!f9U&V&YD?P}+nn};p4ft~EweI1)Vh=&O`PYbDCB5>gnf|h z$YGl4EDZt(XD+rc^U){mR7=vcJ_n1N_w*ndblp}%p-U2_BT^{oEXTCSnV6{b96{$R zYmo|A-n=AcCNEhLg6-EI5RBI!pgHI+na1fCebTd>P030>)a_-m!b=pP;sg{O+lN_W z!#{$x2E8?<*NXGvS72J9JWtFqZXnqe)|<&pG~?m|kWx&W z4gQ37LP0uG+{WMS;Kc3GHiAr(fX|9;j!P1U@lWF~orTgF-DQn#w|>U}EZ3@%(n4}H zo{q^tI){<+e%#114vhZM~uElullwCL5sv1#WMN;tYA>X|I6OH zM@x3y^__L9>ej7$>ptqYnDS;Vg9<; zlhCs8nl%e>XD~B{K+*wWOyZCRjK||Ku>#`lS=KB>Mt~Uv5!iqe8Y~zGOhy>-7%=vH zzTe;8=bWlrw_7dA&P-rQeb1?L_SyTlfBW~|zrDAIjz`r7(ZJ=L-$Yw z72QzYD(Ctpomde9K(Lghq5{caVlDyhXFBHqtlcS6`GYG|`G^+bkW)f^7-KmX~ z-ZHs?R$f(}MPdj&Us4T)qI)YW%<)e<{YIJBd?TCcPKlkD^TEw!86R-3zL8_?uY4gq zAfqlm585&;E&@RQg6jhpJhK5@Hjg%n%Vn9|0?|&{zmZSD zn1@TESk_GQ^bQ75Pi65mPj85)l8N;|Q?&;5Za}<2t+Hh^afzz;mI>Q?gh{CiDs02) ztIJob$-7kz<=JZ^%8v;ezh!cV%FE!Q{Hw}WspQ!NhK#c2>1jVLD=g1k(C`9=XzLED z)>hmGg^^lv)n$dvI=$N&R;7zm>})Q^o(H{s9B`s_JE~?QF?7-ofyky)e0(&t!!187Z`Ny(SFNud{?8M%i?# zaQbTQQlIV;uxjBoYW_9CW7Via*j;EYwD#y1InM zLr~!j6y-!Y2}v?2hSuQ)mQa{LC#2R-kWG$S*G4Z*!+EF#-C4SA0N~&Ugv~I*0q>Ub zmZryLg~6U5-RTd?3L`&1`jYerTRuNB%`hq${rOSQC|&JqL){CY@Rn-X%zX>}lT4dx z;nQJKO*_3Xq+(8J&Bl`e7I7ohG~|+MXUkVUG-0g-JLXMpFTaTTzL3-lx-z{b7!rqs z;iPkC^oOZ7ySN%&bwYsfOf+CrFAdo%zMsE8YN^M^O}{sm2We|MU?mztufk5LLEz1@_I7Wc(C#Gi1xuRi{>FjUDPg>r`V8QzBChH>#Qj!DVVAky|_P5e=`7J;R zF})YxKs`CmvJ>JKqyWBh4^EScRS5(?!AT*o#fl+c*cv=J<`NstulLUU68|^vp7k$c zAB<3ZeX;`2`4&9nTksmU4VMSNc4oX?K6}a&+LSJbkpbn?3Y^H_t3H{dQE~^LFxxnK zU}sRiFvAs5mFm;0cvGRpseifZ6Ue2vFOMoe0S?;#l|4|knk=;1Th6ww7t6`tm4$P> z91{Xs;YxJ>*%c!1|KP`zQ?TeLjq9+%q~ms*AC(X72@Jx+dl zFXUy@G?~vo<gJ`@+)eG%q1;GLTOHb};}j~LD|b=F-OUC=t)D)OeGxHN0SFTWkIK$C7*44kRivf2z7Te0_uQfplKKP^f;PDj#{u!vpDfq`Rh4*9nHi5zZ zoYhanZ(wC!SeCG6PMGOS<@p5};?fwR#{>l^eN<5VK%y1DER#Xi%Z0S->iR-UjTZ z444}a@Jb(qshiw~Z*X;^h5dLW_2W{z zAD5bbPXLH!y)7Kw$#sy?S5Wt`bjV8!egWAY{l6iyOUQ}-Kx-yLK{!A6X+Lk zRWR*#u5afz;S>p3(z*z~(5oA;-LO|IcpF@OpoJ?@>L)c=Ndr-e_Q;`FNWu$nN9`t0 zjR}eB3WV5GvYDj#_*q5E7tr=)Q~0G!=T|bF3*fWecl!C|5n3>AKS_`%cpz|!h}pji z2|XwIM&F+0Sc00DpB-j#s2P8>b}Z;rGwv^`ic_#U&SPyqyU8qPu$Bn zla!vauR%u-5pVHm7#Bj5==tgRV{bE)O-lENVl2wW>etcn<6o7jIAuMHPWEXYXluJK ziFtHImU@%Yg0ur+1a+R!-iYI0w@~X~tYM<%%3ft~0-&)@0Ug$_&V*S6917YIICKzC zksN`>KPx0fcm<6jH^UUF(tCjr(O)+>J)sR@Usayk(@*G2Cd&Bd)mcp&b*MrrMQ!yl z35dq?2+MA16N3gco5PyN%H%N zg0p2D(B{X7{Sp=uJDB7r41?(k;Y!a;`M8`|RhXSRiHOYv$d{E|nds#S{N`Kq>Xzz5 zEWbYWIu1Q8Z`qyjG-a4iFp5AQQ78r3IOAbot)WOwiNk#&G4zv_DO5Lk1!|U&efP`o?pq99m-3JR&LpHJ3yMpGc^=G(!bG2#C+3KT1Aknn+B(t1P z3A3L{pFcH&*;FP5`KbaNz2H>ILXnG2 zr(s*gFEpO;v|DFaOQkQlYR2G>#8i;sT@<+^uU*ox6(R*u!Pg0b>7+b8{wc9fywmhK zbwj$c-%n|&o11v1fSuHYJ{A#o%DV){U9<%lcle!$?8AwgpVXCtPv{D@Ki;P9#~TDP zPBW&hI#2OO+bZHwIv-9Ds4TVD-BpI|x%RL296npODk2VXM1Libit6LC*IV{> z3J`2UH5AuO4I8*1t(M)5Y&Q~M3LF}DR@d*+2SLN9f3HKS9&u?OD%0ozc26f`p zd0?_!dS(0+j0)+8;1{z>D2;zk;+XasC#-DCbtC^(%~uZRz?WkynxtJ!fYK|{9jP;n z^Wi-z&!ig5G*7Z4N%V!%&|%8n+8Klyn{?OgyQO#sZs)DKA8J`D3ts>5)n7l>dTlq! zRv4yW{~Fefe5ZL({#C28Y+!=+#>B)bCk0urK00Hc<0Y|HHF-$2c~1S;Yht!7^*KZH zw_mKG3GG8MkV*Jl;tTm)%Pm9mGAt3CbuHs-0ruJhIfp$YAy!L+Z|qmiFP&1f6qp$H zQxzdmZWXQ5xxNDJ$909ig!SR)3+rlBR<-`tM*hcNTHHU9aDSMt=^$MBm4g<$KRd|mZgLM# ztDwNFr*%LUd`N~*g@lxP$-rD%YON*a(C;VJ)*pa zTY8@+!x}?H3L_MJ%mgO||26`(XeddTuj0QB{4g#*33!lWMhOH?J&YbR*&!UG{igWX^3odjGwz22k2xs=Gp=i zX`X6!c;1$V=VE(!F4n`NFaK9%N=NP-KSGzT}rFR}5stH;kV_G-2c77<0iDIXzLB(EX#?jxWQLKpeX%4?) zg_GtdgXpw~zM=0{H14T;BqehWv z>oIR>Dx>n{We?YuodzCy2)iO?V1ZP#pHH!|O&vIYYAKuKXfZAAEcv$sITWnhV(%i1 z!vV9x9BO~f)hIe9nU-U5BjFzz-W%f&igff`Q_H;z{812`<8=kiF)iPER%uFw9r>RRJ>l#jmdf?ggf2&b*=*G0Er*pnw;?OH% z!oa2d3UK;NOez%xJ&E1uyViW_W9Y18%FZEDhd$=O z*L*b)7hyPlPo&(m_I8 zVplThG_g|?K!mzli9-x~Pr2hEA$x2aT(HO_q(Y{zKF)!g*?hn3~Os;l&Nx2?SwXJru8mT zZOro0-7=wgR@2O8c0AV)T70(O;_GMo88{Oyq`^A4IS6?+2V;&~rqR0G9<9rDcZ09y z5?!dNJkUZpSAQM0^;o37bDu&2B)ci_%_NqQ`0f!|Lt-?Bz z)Q+arCH9q6VmY#_%VQ(QOlF4xDc1CR0t2q4HjQSC^=z<2JNkQRG=8==UQ$+& zp4YLCIlnO>=kYdj9&eCiDLT(fod84nA6U@KC!em|F^$HtW?|vaOISjIXjKd6T3MIl8oIj7V`<*Yg&s#ojfN z*e_t%`F>t1w{Zd<{_q-jIBra!v(@*UIdJ(p`o5s2B!}jns{iz`nFv}u^eI9I23k`) zGevKHo*Ihw=2M2+7?Ekxnp60_jGaS8>FNxnJd!BoQkzmP)!15q3$kO|xKIz9X_T2B zp1Niaub0VxKlg5-l1P)hNu<9m_3UE1XBX?9+2)gkkU`OoP6rPhV3F+fB^F5{5Y&tC zCA-oWf3^yCSiTTbPT+4xe4zy(3z>*@kWUz)l-f};J6{L0%`+gcpN`jv+MSAYWDf(Y z9<@@#pK<$$Z<{D0q|Ay$xLy!QDuUq*4L5+wA z=FjGf&JzC92@y}VJNQ)H!2^_?o$l)s{y~c~7zsjq!5BGI$JZ04e|#NScp_op@irD7 zzb-7ysk_W^uydk;CO*Gd?j1&F}7eX!nA>-*#B_JD91_Qpa@RQZ# zqcwgO2!7T=SmLDqt5;1#d!|34tly+LXtummn8gXw&TS1iO4VjwGk&{UdLALKk-KQ@rM2$l)rX2De6V ziF#xpr6mAv~R+{~gFR+1bjJcrz#h{#+` zDY2G?tuO$xr4m&mS|~;C(Jr$baBWY3@2_DJekxPPq4YjG1^7s!kV|a}xl~h#AinH~ zhof9l;7UMLq)};)={ihT@_<1{>Lm=pMks`YV6Hx{d%LeE8?UEj9TIfsi#efrlI3PO zesN1Z*qLSDCh%`zwMrZOiw*b!a(XIu2qVwVpAFRtag3enDH$41bspSh+1kl{M*?Hl z2b{_`(3KOWZGP;Rr4letmh4@iwN`BLptLTickf)Mld?B?5NTr04wGmyc)pPjsS$&Yj+Ozcs3`|};qq=45w5IiEgxD?h2%K(x6mUM1vTU!k!Makn zA~G3HPoxpJg)A=Gx-#0IPLxr1Q@HlS02AN%D*7{7`1M`IjRJCP2IdxH(O zz$#(llXSJZ2eG1+dfIeD>uFq*QA^gQP=0D2<=VGK$VSg{9{my>2n0&TX_mRezHNi%rWz?50K&wk9qTSv(Fdl-R|7wrgL-XZXx^8HnLfokz#WsXCsoFqCK8^!212Kb7<4$qFT3{u2^(*5n*^K_EB~|7M1&hhvBPfDfpF4eNr0e z&hFRn{RdLJK$Y9Ax2qwgIM!JNTlRi65y z-tFK0z2ANBgCF?dKmF84{`J5Dzng*Rt{!<#XB$#I;@YJ3Ys$lzP<(}v18_q$tDUowijUXV`diYt6Exsod(mF&`~K`DkTiN6}eGWOn~*D#{?MrhxFOw@cGY1sS95L z93MzCTcAAm0LdFWj?D($&$pm{ye^G#G`p7?WucFOIR=W((bTYs&v(Q$L)IAM_=_y zT~e@a#$~ySW@s3^0b{pp zNj9jCNF)r(rINEXF6>UYvdO??nf=2MPy?G)OWwV|u4T$AZIb+tH90^Lt(>QUL2MXQ zvN2}4#0I63f_d-Vp0=dSPlpp0H}uLue%WtcA>`Q+lfrDJD!-*y{YB@VPN(!PuS@i0 zn4#xdw0h8G>KFKfti0VGTQjCjYOB{!g{q`O1r09=Fz-TpsvKxP{3Y##yP)G#I$zaa z1~?`2=A?SFrFduBO?KA6SV)adEfeVEo*Ja(@x|DMxTjsF;r3*W%BSg--GmC1Cb)3j zR(OGnUiG2Re7d+3Gzc@TU!!j;ih||G8evN=4=x9=R6e=T-UIjdYbV^!IX1D=o~)e! zmu+gjzNrgd2ueN|(`qU>WhO^Zb3beWu2%q8WHXwbRCyAWL7-r9^!036$r!PdYwQaQ zCCC*3?o#%COrlLaPuZUqkX*sj0os-i`sF|?+KNqy6n=R0X^&4|ze^Pq)<5pGzK1?{ zdCB=AUR=ohd3W?@OU03V3h;P;TAVQ-P#ZvKl>Rq)X;XFr?I3f%UYk63WezXt{ZKRw zd!!YU%X%@a79EVxnQWNs`X&1$YyuLOF}ih?@29JLR}NSNXHwXpB@UF?E7@{(k2li| z#y}QueLT#%2W&$j0lllv-tR5<%XNT6C2Zs`_3j*7345Dj8r0_GgL3u$DFU?IqG}aj zx4`N)E$`-_7N4u3%NPP1l_QmYfYV_FmtkY?b~YDWuYQ*uQ9Eq!>%G&qb!5x^FcCz_ zK81ULJsoq_hHC$Fme3WP$MW_5_3Qq%rlnIlOlg~jIDed8@*s}=*o+fD#`^XZ5;1GS zDQ7b2!jT=iY+AYqMPRZ5Df2-rVRHolXI1yrQ~?7k|(JcPk|z?oHMMPPL8*8G9^2nAVJu<{}errCcYgLA?zi zsesb!KrVcyei-s?$_#9OjoK;0Zzd{tr&O8-xP?zabz-5&$y_#2S_+@ zM-h_>g)m=OE=v}6k`q~^6)fzJ?sZfWXX7O5M?ayxVvUgqe0Wdl#F~>Xjr913l`-i< zs4zCY1TKl1-rjWS93ynw{d?2C7mgyVf}AwqU4F&zYrxq-Qj&%`mLP)|Ul?;Q(ZpBm zRV!>C?g}PLMv&ir14XNJ3d2O=PI&D3eKGp=KA`7aWI4LKA6#2@b*2VeRKT8O2eI+F zyN7jlemby_2MT_zLD+q^ljP5Mulh&D_(NuLidd(KyY)@dW9klEx|}wMXA9W1RJ$}w z>972O1A1UcHItYWwTdF->A79~Ff^9)`Mel#%W@?p_GPmAz+ws|NFH7W8a+? zGKZ;NA@V9fxz-w}z_)(VQz*XcalJS6Cz?8KmCKz|yxbovUym7p6&xo2&_Y-dfUvvnVPCIq2)4ihpp@$>*HyjG1iPnD^$0oMP+>uP zU&R9o^Y`xNOd1fApT2f4j;#3Zd%x`ue&q6>{_98o##e^}SWGr31TOC8a{E2SSCvSm zJ;V)cw|SE2(`SGPWXS)RWiNr?gCcxE@I`l6^}$rZ1(SERFx@n}84%jT!~^=n*^E-(7A> zEh5Ff3eid@g}Le#sY4jcuSKr=;Xc)kcPCra`HBblV|jHU>!R%_RBoar89Gj=gJZV@ zfmFBj!jZT=hq%05?7t$lup&9e&}{PG*1k#<_fO*nQ(#-mZjZzZt{dg{ezpVYV?1|v zWP@tNITmKKZhcI3)2(ttjSG%e%M7Yp2EwtFpPFCUqssA211mAmp)GYx039>t$dcKU z%DJ^RM^*%ao>EP~vXL#l^$L??9lc0a&RXj4TJV-q@?|QFp_!foztogH$*IlU;2Ju09d1ITKFQ z^5|`&Vw{D@Qz)qAcmu3Mn(N85ge9u)wJ)^FqX84=U73^GH_LmxM?{%+JaiI>Bg#@R_k)> z=Q`h9c%*fB6Sm7YQ+$&vQJ^swj=6#bIN*!J>gWW=)mapZ=GlBR9b~zx!*;O|sCc^^ z+*WiT^*Gs*6JC|_`2mfGP_1a9;JdB3eY)YI66M-7eNV0 zC%l$pDo&sDNYbUmv2t~S7zb0ho;ImDCkh7hSCkOR9V?G;ShZSd+UZu`EdOPE=^Obw z(I{*JC4(TaF^lc?VuhESSv%OPx_^H^>}-?(jbY2EQ1^88ubpnGD)Egx9DTt%HsHpw9lV(mY-7tf zh;zOoHAW4QHn_|*Pi_ne0_8{VqBS=`0~k!rhu@!A0YQ|Y^oJCozkk=JA3YvO6pnvT zSezW^9n6Nr0LAL|etDd65h9M?*}a3Re^7NM9$YPtY4-_E$}?U7^?yz+a-@xUPyXDh zB)T-w!Ebd&X!?|MMSnye%eo`>g(tFIb-xrixIA2aT2WGkKosmSe$E6)B@WvUI4HDS zmGg}rKD-i%)YVgOb;<;7!YCqz>2Wcl#{HcFCvx0%w%~$}k89|wA4?q{w_zwbC?N(E zPWU+gsS4)d5H5gD14P`uKGr;>%wPh%B5>OGQVKGjRzF{5ZqyH$j0n!zq zhb2UVc*CN>L3M`+0oneXg*rv?ihG@Y(Hm8N$|FjAz0NN&HT4i?oWaej-_n%;?;q)k zxYm_212wX)6G7qlhpV^$L?&*=y;~kN!l%ap4+2=VrqIHcH-?@l2m6j3%QV(z_~|?a z{o-Fk(k5s+0HWxOT{t5hvu3mU_CozZ?5jcKA?UePBz9JR&g_kU#-g9S?%Dt8Yc-HY z4+7_%@(^f8t+(3ZfCL>&dZ4XMDwt`DlY(iXR5Pdb=R|IciJn*tz>E>}qD@D&r#HY6 z;k%WIRS_U9;#=+nn)~xT>}yz3bLEC~+DT@WRuM8XnFq|kAUqn%qrQ{uW<)D}ZhfL* z3Br$l85^)$#N5h-#@UhPY}^q#J|iduLlzyH%%txdb>Fdjn916NjHBZOO9XJu-P>4- zlJwYAU&b*-eSU(6E7*$LSvQ)uZCz!4PTIoNtZ|f4d317I21%=flCs_mhT}KEn2AVt zXM7$TqdncNdT*JYu9h#b4>;y@GB(gX(;Jz=n!Ze3P`Og&CMq|j+(S|d9{ycDx=Ejw zy3;mF4^6)SO%J9?MZqnTsXExhCb`jkY9c9pl7i4xo}hM%4oL&)m<@PQlYoHk3So*-gs{JJtG8^3J&auEP$LBFi}PWP)} z`3E@Ej0#q&4@zo}Kk^Uwt94X2n#Rf@)WUqEh1~#%GCHRShaLDZx`2>lH!$^rvDR_8 z3T3uCvf&|UI-+GP8|nyYJ?@Bq0>_4y`5zFB8cssG)ISTSN6JgzK^10ucDju4|~ng;ur{ab$8hbTQ^17fdm=EU$TW> zp^d-`c6_@*|M*hV7R^sKZRwOZ?DA*ItEK@S+@z;xc6C}e+g_b42kT7WB=TnZIuwgYS?b57{uANep6)%(iu8!3;%{p6b#A zSvC-bJ_eXhIn*6lUtmEUp?;l0M)o){G0}FakvfDpUV*lrEmF7I<9x7ghnIXu^w_gE zgfaZi0Xq-@L`ImeT|q`C1(~KxY1WXZa_C`g%%uWA3QxG3Agf4TF?agJaubN8gCly} zu{l;Q%l+%}CqpqTZM>pt5ZEi}2lH2Z57kZ_NXCd{YA`0%2s48*`U(;R50X_!Idc&L zA>EE`NpN#NZhhzV7Z?`dMypKoU_rkOq{cQz?>?btpn{_xFEpXmi3u$YfrE|o^9{Q9 zCBNk)5RmO{3VDCGClnNPpcKKPj*xSAOn}|ZPw?V-D4yOSDlJs*4pFWqxiogGZ%VXe zytDJCNJ_Q5R@H=(~`?GF0|^wW_<97HC3wmhEoED zIxKxj6ah~_lAK(^g`ZsF6G9iRK=0N7hT+r{2ET6SPE-r$O}qjZl5^dB?$eXHGOTqp zDdTfica#P%4=F%W=(~PEpq}#$p1q&Sk}?Dk5uGRwhv3#4f-{RCpd(m{(QX$@aYFWl zQ9?|dX+gSG>Bvn;5faHnAl#Hou}gm#a(vYv{llVIW}+pDw@DW~^m>eC@-Mite0kVs z&A)X|1K*`?rcEf-hw$j6TniafdR{JlIh0DXgqP416N(o@m-r zCs5}*7L9QWp>!Z2)B`QOY=m~`KtiWVD}PkHJv(j;5>xQC$c-`B=y$qB95;DXyd|c` z9!|7?d7MT9YnhRtM!O=k0lBD#_^<5M^>i!h@xfYM)sqhLq#jS>byZJSumuTUWxUh} zk-G-zLcyGPn`u4KttUMoDAS0mEg?e0Y+((hmz{HLRWEvwT(%b?LSV3Xt_3wB`Km|f zKn}s*!qTNX`mci7T!Yvui;2Fb(oNDHfxD+rM{{lgZ|-hb7-S`uPb~bAf?Cte*d^w( zm(DmONk6cV1fC2z(Qq(!J${avUL=@WvR$qwaAHu}k3Srb-T#PkA#AJ9Zbn3xuqmc} zk+U-tQXgX?Kt0uyGAQ7SKbEsAIW1;oJ_;z(xe{*;!>avEf#pkiuCg4A9_>o1zBNux z6(x!?jnAar4nQxPvmj5g+?p3@0 z?X+9%zG;8jtFC~`$EnaUv#|2ZZkq4J*VvD_W*j(!HU1-+@>INxr!oG1&BEw8@@U`G z3~9b~^!=Y_jNP6w#t<8v0pNTt(6%bHtr~5&?^U;7C(>q-bYHN&%sh(=@v@i^nFotN z84PnGTn68w+3#w?MVj?Szh4x+%ypOHx_-@dOY;>g))e)V(8Nnj2v`y_RLMTFt1=fB zW3w9upc{o+YHpEI+5zvu4`qxq)7+tYB}&GCL<&L{y@1S}9a^X&-epeon+YC5r`%O6A}hpbA^j z2F{3AgX$O6p^W`gVn01s!X%C`=Gp~MP{3N$S>1A>y5)h1CW8o}O}5}Vg~AAaO=T-i z$uy*WM6!PLs;}`h1~He_>NB4$zI1mYG1a$oTht0ip-wNn!Jun;aF95 z4ug^cI&Y*iK}XBtqv42TMT6g9ole0*Lx$|P=}J7jOK=Q*8j$|5 zpxaWUUU@s5ZEqJ4pzbqF7iyr?(;mJh`>U*0w>m2)9BCP=pZ#p_f(memcN92x{{@-A zn6q+ggzZ7Dq#em%Vp=GiIL(1zy+)LLr|8S340OJ+ox>O8axuXM)!P?)gWmX ziNQXkCR2V>Q`6X!7AsvLQX{ikk&{Bx4c<^eD5QWWH%A=RI-AcNWH9JbOvFFUGAqFY zxYA1+6j2k(I;Q!8K+BQ$;#p4)sEC?rOHECzv~<+!=u)p(X>-OPI0OEHSh3i|6P~0S zddgBZ1uU@q5SQKpav$=XM1~6!{N{;bcQRJipfEI+!sQ)^ne3n(kOAq!$~wVu4K!g_ zM%2@JRDx>OC+qN}EEB#g*A>s=fyaUm?Jg=NZt4qo$~DC?y1UG4g;k)$BcWcP=d!f{NB<5;K?m)_aAyJtmrh31gv`#$=GjgaAK-y%s=Ej1C#)unm$#_$-GW z8l>Y8MLuW^N55RzAAQHDSj!`Fach5ijS;cvKYT>!xJfpV65~^iCz{Yj>MBXnEUv*) zzG-{FVAQG7%p_aDKZZMLgrdfx9LY)yV`~-i0iyzhV}Ih&g$vsm%d0CQ~(K$hKme zZzku^_}YjH0kvrdD%&VWw{?_bTais?O#w(##4_@MM?>Yldu&B%04(c@`bNGooX9mER_>`lQztsvEmbTPGPN}zKeP?-~O^q>@|fsZLfQY86- zJ)uDX<8n_Xe{f4!E$n>dY(NI1lbjAP%I0pF)CWLCVyvriRm^2*+=B8s zxMvlh%!jM9jKV83fgYEmc_z?X4bigt=-@Ct$s8~;Kk*G{PE6z4S_RzfIJhFUptPR3 z(oDPuV+0uT25j!>0N8#6&cb)BQL4n6{+83ZOW3aRZxQtjgyqItuWwH9ELcyO-+e; z`U5>Lmm{gzf>vb-MjuNNaTJLxBO*J&n;Q5*b@ra3)az2uyTYlS;)VQ%1mkNuQ~kQF z^K1G=Q5Ta^03s(X0gLp=05%Wm>n6fhEF=Mu3o>yPl2{fw6?8Uw{i1^<`7zawmgQO3 zGbp;*==M4|H-mCb6jYRMBm900E)S~PEZ10w5E@@G8Pz)rQy2#AGLEKD%n3Hu12sh5 zLcwP1iy9!Y`ypTm!07r67*M6OEQ+crP-{U*?*82d=3G==SB^MMsmf3hVIgJ}Av;_{ zFV7-dh~|89xuBbWCp0z=%RvjJT-{fAV9;`>mPfzbqGq{M*+enbDnG-?Y!}BVOD^bF zMu+KFR7CV(uH_(gh)LAB8q^7ChTRxrf371pR9MP)j#o(tHPn?YyfC~nWod|!&QtGM zsUnRdU`ncFsi4rau@R=c3B#@VL;Z}Fa}AETFbMV_^2293q#{&*tQxzF8q({2he&cc z@uFZ+JTg^jOGzY?AX`{(_FLAHz?9#z$X;FDwNlCi{*rXPhU_{zhlsKJd)=MFILNlT zhA9PRRLvp^2Q*5Iajh5z{F@ZFY?Nsx>gC4lCfwFCyP4hEAN^&w7-k8*fTk^ipBD+2 zkZ*}i2N^f1(aVrBwpC0|uay`}a`X|qX#SA4fzj7h?VE&UNOT)UtJATH!pT$#|5GIAg`Eh7@8TWuZ`9k{mOA9Ba|QI-=$ z*V-EP>gfO2QnB4e|58%D3h6MN;3YpeqTYbC!mOVVx=?Z>72)BaoS&xbM zgm7sx#vvi$IU`}TTk^p=!!RN!rwkE5S6T@3dt)xR)MO)T(r=q6SFiF{lOv7~PmbpL zH6*msqo>p5YUxYi-%X{JrsvBWgQZ@l=&ln189UdA16Gx4RBk(o>=gw$ebPPBbzHO* zYkI8G5+6YB5jb)6$CyJXiURxgsEjf!S28*hZ}&oZ9gi>g>bSx!Yt?56a1Tq)Zmd48 z{z_ab(5V^liNZhR5lBJx%v#cmJ%u3JRZoc=zL_(#SvLbHU4a>`s0Dr~;GE#0wj17} z()|n7C*7QUT=waxNKs^7peK*0$2z+=*HA}&5!lbQ9PwAPMbs1A5V=GAJMQF~QUz1U zUZ!0Bp8PPFWqQ0^-6B?Zu>%U#ug-&swdjmE z3V9r~X_q2Now+H2QxfYkmgUwf$sl}sQ>*5=nrQ&k;r{4H`o-3N6zcBbkeQxE-Skw{ z4Xtlgf2NU|Xe|Jf-pYwyo+E4GhC$IsYkFSlcROB_J)RsD9d9Xx`KWA1+fdL1^#tK& zqCOHdJ0;_q86is?Xk2Vr9-|V5=xBKizwtrn^@vlWr$>{-=clr-%zKG~gAf@=xreFh za$AIx>ZVFaBFLtzA=J3*;J{osQ3-h+nM%}!OeKJz+7fl~EgT~8qlx>C7dI# zNOmEMQBqLcgSJYw%^*We`=cM|F<+aU^v0_Z710a3{!R;mM#5oF8yqo(E`oj+_7U4z z;jlo7B#!dqg#P&P-_qUf`cvi&bhRJ`IU<=!LdImMQC92#-1$6Bn`M9?w& z6V5Un2$<3u-WeV=eUF%sOb`M~^4myHN8!mhaxz=Yx$5!wJ2eNZkX_0C%?h_Moy-p> ztJ|iwxf{?(tZI!sa{+KKZD?5*cqg0TVPdjgV)i!~@vb;7?Sdm)B(-05)oxD}@DamJ zzpXm4f7Ld#&v5}E#2Aei>ZVv&o3dmR$1RV3UCBymm~O|yNG}|9b7-R^A&verRSDza z2P(u7uBlPRmJKWh7T)9&!z4-yW}l zE|;)8X?2j9H^v#f(w_Fo=vMDY->@ViY6UO1r{0bJd{B(u8uA_R9T-ZyigwilWf9qb zCtc3$%e7Qkn+}6HTG4AK#`4-%UMr`SuQ8P$svuB8JSb)B>CM9}yEA|P^T2#ZB`&;$Z6d0d6rW!{>B z3d}L3$wB=Oe6BzX!kP9VP~6%m9SiHMsXRbuPn1pzLfp63i8(cRE59p1oCn{Qck((8==e;)MC`Z=wGfd@g@;HRLdS8(h-5dOy~Xrh$)0? zX1bLiR$dcE@M~Wiri1%unXaxWm~Os;%ycWr4H8=s%9-hgb4*uPlu&MvYG@aMQ@<<{ ztiHCHjyh-GiRmzL;B;dI8tFSX*A?&*d=l;u@wPvW$ByD=C^er1DUKrs=OOhgst?Mz zFQPXLjDnV2v}b{F2e}Cs*iK9pL6RM=7KEoG-$WG$s zblXV4>v7}?((v~9$h+*T6D;ZSYw41}4@KY)s$#Z^zqu-b4>W-qX4O;Vfrg~t_R+BY&0#idS)@{A-CGdUq(Dv%C)$cN3C4fma z&@04Q5WhFoKxAukj^zo%4@-2)lvU;;bXpDlzzwr^YdCla~}0INQBDQX8IRo zGt4xVvH-xN<~6W*9`Gy;Fk%cF7YQLEA%<+Mgped;+zz%}CL!`bq5>K<`B}587U1XG5t(8V>tu$hbidaQ1q|bw- zaW%Ayz^Pxd7lC2*)wEsco$H)^C$Y66fnrGlNr1sDO(a*4CU_4P6_zSJi?_gE!XnN| z*bLkdumHt@*Q{=>-^K~GTtRKN8F*Ec@ygfQW>|AQxrQwfRDt`qMJ=_>z*9-Ec$#bm z6mPZ}*5_=71z@ynh69ky*$fB1ZrKb6-a#x9X@mv5E>BLyXl+@n!J;uaol>6VP;83! zk^Hde7=}-8LBi{OxO?b&!oV0aQYF*EAw}4zC{lH7=U60|jE%^qv)eNqeQ1cWkqE72+Sg)JJd)(Qs+uw>zQ4-QG8J$l@o8m zpM;$&7jbPSsFso2qu3D#RpAIWWXgV`% zyq2P;W5KB?*CCvdIMsWsg_1R|9sxDrn)v)0R;yPCabJqHB#gx?th#}$g=T)9RnfC~ zWf>1CBy&br;z|ErmV1ax)#5ENRLMlUc?^5!0fk*>tS+cTfwL5#NUN^lzF_h2*5sE| zAq9$-qY>OH5)w!+q8Tap4L}I70X5Xl2)FL7fG;(p-5vjuycEn49-VQ!cCmQLLYDEr zu?r(n5|)JqfQ^5SDAbuEUIey&X{Fh&rK~fWQFnyrlmtrz=K%s7od+%;&Fs`1Vot+N z8e#rzL)e-MARazB#y`cNjU>Vk=9&&{m!81dz;)bB+KZAaxX`=n1Rb?b*F7sd%rfY z%4Ri2f?aG*C`h(7TBs9lcX~!kG8;ivn9sR#X=@HfhQ)1Vq z<(R=dI;zf&f7Bd=N;Sof%VPqA{Xq(9u+P9QGufI~AlGTG@Jsv$0y457nZliuj($oi0 z2>+99dvaGFGc}@3dAmu^`8t&5V;f9WA`rAY<^t2)j<4$vt_>i)cR>BmL08ocDp;S99xzY#$IOLEF#bq0ccrRWxfTgw;-V1lPPCeax zYq^zHKuea4d&C*aElpXlNsclV(r&Cr&pD7<8#Q)qu3^+TQ+L}jPcN!a^AUf)wfD{A#C3mFTcIQhLyHe zmc3v{wu*-3h1)7JzZTgl1hm6e;ihe?(C%N`Dly&i{A`s&jT6MPl5-$qKs;5M8oEI!G_EEFkEQCV|#5AhLWW$pELTS zG1jLuWBg*RneagsWWoajF1GENxF}Go@MR<5JSC#w7LBTHkFR&g zn-8I;olHknTfm7{Ii6gWqxRCGhUASMZ+T-!5d*-kLsmrZ3g{dOZ|v$_<&c`Icw=_F z>BjD6z41fvuD8tE+wuaLqVXx>~<49xJdh)}< z829zOY;fOsV7pPB03#Q1(E#(U2AB)-Mwi(E)~u4dC$G%8l1+EhrnMdnis3KoytCx1 zr8y|1krIE9ZoklDL6Zqd+qfh-7JD&8?ouPC2-JD?ndSnL5>FBD6wg>NAw=ZHNdY}l_-z<+*6@Zh@C3(aI>`X0$M3fjr9+;&S71ZyY+rn%ybt$)H z(8_J`m`B?V`O`MBx!mFc$dm%xe$NRShTK<+BQ`aVgT=SA?~tH^Pfj$f%HGl;k5(Hv zfgr_SV-l2_&)0WHeOG;-f-Tj%9dcPEWs)Ny6jCkfuqVLbdJ~D&aC#TgpI^lwuioPi z-|G)CkTrQmpyY5lEY98dt90(L{c7`lRTzE(TM8x+oZux z$nndQ_~SVZX1N}1v&Ui9U?(&ol}V-zo{P+BFy8mvV7i)Ql9k?mmjP>Qu#KP?b}h7a zi8(cXB@LFR=iAzf9(#Je{fw&7V9ttSx^4VK+XBzxFKY-Pa9%gCNv>#%)es`&+bhoo zaOeHPpzcEyR4P7YqfrbQZy+Ka%9dg5r5Kv(S8a-$KVtK-C`I~)RYT0~>66#$&)w;( zkN7M6;i7t<$-4c>sF8A>RH#vUVv}U_UZ;La zsb_6f=S?fSw0WIX9pL~{rn%-+ozq+_@z~+A9`~fi0Q+dfO|IIOifJUJ92tW|C)~}^ z0f@f_9q@Xd4vri`2Q{@kKRW0fpo3AyhZx>*%octkjv2b~#GGzSi5ZP+k_)rKm{f5Gg82YH8X|TnK+a#=usINMGm=IK-?Fjs}dYM5U0B0<6$- z+aJIyZ%fmK{(#FI^aq9^P1D;XO^3{w*V6R)`2(>zLb4v(;JrwHAiCDf&t!ivL};k9|2qJP1N@Rd(B zzA^(s>DabsOXflTP!_iR34i)ZX{rNXHicF6UbRwG|H?XVwycaQ)qP*NrcA8dhVK$^ zTMJr%j}b_sOxxZsTp$e>*xmy=P9Lw=CAzmxM@(U#LnMtlS?bRj{W&XpXFeqG!W2Y# zA}I)rEGr0mMa(3^O&WOf+F=T!@ru;_>y_-|kkLk&ZR^b7_fE6Ja&N@gjxzqUF}5V> zgF3G%u5NTCrR{P&UcsmHWzdXUHx9Zfijc z$YnTKav9rGaRgMQ3`HHIvA|-F8FE4_GPPS%-bc$7Wj58b(1X6h0AOtLqa*`!fOLl3zW4=cv0d&^o>pVlTcPzRjj*Z zc`U?8C1O-#x zLy+cGM-MQM9hl$0w+@pV=Q_qhzM1Lb*dp9BPQpDG8;B$0K9M*giD!%}t{ z5s!)UX$Sq;C{iPlf8npANRiU>A3ut8?@JIx`o$FzIA$H6+U>b|3YvtJj2`C6BOEMJ z;ve)kId)L35>lL>)+JJlg2ly2alu(tDyGr--F9)fW*6sps8ShaDTfQf=Twr&^Gd2T zR(<5?4P`B7T)s8sv128m)SX;Iz3PKgP8t`dwdy11h%HD#JKk2MZSWFkFEj-$y4F&q zDd$XSIpj#8N?95T!~0+igGxC^t?xsg5R}fXnhz@}WvwsJY*rr8Pfj3@-OHs`AfJWG#O3rYL=s`7UvWT4 zS|ocGTHvd8J-Rk5540YwHtA=Ikt-&!Y5&K{mKuWA%A+kULWWotxto+XrN@NF!fw|6 zV{?RAUAzgzVN*J0MO|AnZC__~TjgtPGt!!{__x#^1A;}VYMlo@pOGAJcFY?sTG@aL=8Nr zEBhL|DMd@Bj+XSX{gFJ8$HF{TF3VE*T(nz#U$-vXt;_l}iJ?t+?^_s=86t?OwW9hT z@@F&C$Pva#g*w%5FDNAWOf-PD6tyAnBl8sCGbbgl=&B(AIqT=^K#Psb!{?rXS>l%q z%%@8h#V=;=d2y7bjzE2GqbwM{XheW0u+e!NH)-`8sHm(g%)K zgku|m5($Q4dLC2gG^Wsedyr!g^AitZN6#E8dLH2$?GHn74Jwz}K~+D2N*B=?w_GBM zo}xAK9uhM2j@@`>WpU#xd~hh^66u%IXk=Zm?xTq91+^7+R|~BPt?MlJ+4VwHy)|n_ zl4ZF}S}e#|^523@WB`9!#|MO0+;S{MW^;?`zsqmQGO``nRgZFsK>gZ*nout;z4`$-t==X3xNj}7WAD>?Wh^H}YcJH4J9= z1%>p4CZL9nQ!Gb%Id4-#{o>;w*r4 zUS7TLEM(u)t!pT9S&=>=9a!wm4`I8yaXz9BH_ky|^Yz=P-bo=0=wfCJf^b{gEZDHx z3d%fWfMS6ZOLu0+Y1^ypwdiZEjq9lf^kX_Q@j)F||4tY{7b&!L6eSU9gGNVY#!g~J z%OuL24mMTrlt_dA^Bzw9@h{t~7Xy&sK=Qh5%dzrR{_V0hcX&yp$8|`KkaxB8z+&!u zeH>R%1MuOAhQ&QAJ#1a$UbuX?nVG)jqR5i9*hmFZ&~{tmBL{6IGt&M7^`}ClR_LW` z$c$|{o0+lNKqdg~Y_{I_QWd^hX6S&4kdS;{zpndefAjg#(mX9TG6Q6Yb#>^lJ=E>w z2~qC?`H=8;H1KCiu0b^ZEO!vQsV^1_BydID=%H0w!rV`?p%&yaneHIS1{g4Z&GW zp2McK$V-)FV4HB^6#IX&DYq&9RL41%kys%20dleGXE`7R-Y{4R0w@$*QdOf`AGx00gsuOo_fxZlNR zx5_eK6#L5hHO0Q3N3w72a7kv#WYvBRj(90J$bC@ywI{Zn(6F$hbq^2tP2+4cDoxi3 zstrlVGyt5>LH4g9bvR4|P3m7B=-TgcIP9u@0WsOb>f4{w0}ag4RyfQ_N6*9KI&3)I zeXo|R$2FGsVN3B%9S%!5zjiw2{jDbU^@|(DkrymdQEhhl;FUuYLZ6>pjYLqTE>V>x zs=?fBY(Gz=S$i;1m}TqALfN|VJkpn3raes_@}!<7x3sCJ$*((oX=a+dE&5+%`cibQ z728kC8Rnw{Zj12tH?Z1Sv^&uG~upa`v|8^4eMKfqFh=Y5QB@Rs~;-V8ZEWsb-lW9OyH^sCtLkc_Zp?!HTUYW zUDStHv?+@`!=WIOfp^WHYHDtkt_$N;d@9#B6ZV_cJW=KCm2+>Y{BGYNwoj<02bFfl z>Jzq!tvDv$KDb{vAFY^yXS)Wz9smfThP?&(w=aUcRdiH+`$EW*CTyEYKyX!&D#d!Q zHj`>+6G(b4nnVCr=|3)tQ*oJ%Q;7<*%#;{W+qNvOy6~ku-O47AE)>?8F!*0j#j zLiv;Yl(0&Uexxr#Ogc_#$q-<5svp%%RaBJYq!tKRuqkCVm;94llDKTD98N@IIOyu6 zswVvUqrJM?UWP<*n1s1j6jlV4k%K01Sk{#_VcCROqb`U}-yA=Holfd4=+v@zz=oRS=(o#Jm3PK7XQ-F6^F{5~8PwVNB00f8DZ?mbpw7-0ahBcu zd=Uqbt)`hUM{^X^nGXds)j@DLMo9}S6u2S4+C&F(M@3GQJ!Z)`J8Pt^9I!0-r<6ur zqL81;K!jy;c$k!tXaVnMI}xs7IBj#~t@wa8>jxDQZ+BgLN3#$PWoBSKgF1z}7Ohsf|Xd1@`H64eE z74SZMmL_e}$1F{`I{FUpYKzrX@4`*HX}z#&jVXPTsSUX^`Z*sEt8$G1B$aMCzAx+K48g|-sKtk=C zvV2}bZnTCm!KZb7YS|FY?%W+3I-nApM#bF>m-x&6cH`xz@TMNHyPR_<7w)Jj%3g0~ z#mjmVZJp-Io>4f*^e%8eOp+oeb-8b(W=TS5DMd{FK*CFkYw=bKt)a&#Q8Oa-rOh-` zeIj}Wz$Mq#Sz48=q9Fx{Hk36+Xjg~$ct=fbU&Vf!y`fHeY!xnCQ1VGo!P;t{a1muf z#!=x?D&s4Vd!csgeLubT)v}Gvwwtc?Q`c}?>aLk2HZ*!7*}O3}+wXZ+r-^Py;wW%n?%3EpQN40a>KDYi=0RiV66iXs(*-IsW=QF1#=Q8}M>F-4i)pAR{)Yy-^X$_|i|>sdfctfK$YbD{;_;tsTWE=XOBe}Fsio#)hj&&eEf&)FoW7m%+A=> zb{VRMtE8q-U~T0yO#9kBfY*|W$ml2%sAausi#JsTqTXfN!FB9keHy4uZxd=2Tdq;7 zedJR*gL%myMcW;>o9b!pv>>oDcnP$b#ChIx5MV;BK$o)Zg$dApS9dK1*UNS7gxM=M zxKxGr3=*+3q$z(Oj_{`QMOvj?0~?x&9Y2+9##7D(b^8T94X(0kj`QE z(cI7=7_sxj<^dQe--^cw+}m5oy)5XGVlP6v-aP{ zFF8c}D@`YPp1y`XY5vB0TCxik#v}`fEn9TtQEr62&D#pW774|gtSpgl(Hpx zi1w!>^XS2jc7KC*kI0P70+BLHsf@4LjBLHHbG%%K=sE581AK(NUB9Gd?vVxRc5Oor zV+$7&A{7*GwEuQkknMR2{Hh-R8gmj#%o01z>9k-b$sYx(}cB4fsV6YQj5ViArO};1b5B>n()d5oam*A{7TwW`;ZCa}0P5y1E zVye=5%|J!tDyw}QZAe{l5gVkGzWz3Kd<0*`R5}_U&=7sT(baTPM)u!Za#owd;i0H89I2|Tf>|vhxTtNYoYZXjSexq`4-Am+q zcl2Ku#aqD}C+o?^(FLug#Mogql-lH5t)IfzS*kdQ7jgd`J~{dkpB%kH$Q)UW_QcCX zL~V`#A6c$_NU|6rJec}u<2D=f5-(l$S0rB4tm%4q%Dc{p|loK zhrt)COZ_>zB>Hygew60a!CZREZhm|>{;;|!!ASU-yp8;mv8C-EGuGAJ_orb|30C~> zPLIb}?%YZJdHl1g^b}KGt9$9m&*=%f5`D5`P?cZRe75sn zbnXJHJ5W&IcL(j8pAF-#UEJlQ$#$yad*z9^JGECH*WFfi8lIG~0h*)p)1B1)z3NGy zUs-Klm~OqM^Ieh{${pCMRygveBHs9L^^X1pp@V}f?kS{9cJ3+2!_mrOANs2B-;Ob} zQ})ou^y0f9q8<8=>2t2bvC!<}Or6JboyVIx=@v*q%yM?L4pSAp+*Li%`aOkr^kV_I zB7U4s$%1k5|4#HJHxr|u#-Lo9>ymJyZw~2H1He|fqy|})Cm;Yy?RL-eUFy*I&qbg* z3kTHr#nwiT(38cLQe(x>P=IiCt^@BXEqeG4q^y zAmj>TY$&%%_R?PjKtVU8M{yE1XLo$sPme#u=5toiVf~3?j+-CeKz%Tt_mgLN9(?PX zYe2PNouOw2OWaa-%Qh60FLAR|%Iw|X^(G7;9r$Zv>ey+UPV7V;3M?Zky*H zf8t;UXA=p@!|LK^dP4d#q$EZxcnSp`h0(Qp8G2fRgaHn6C9<2jm4$;8I!>XU3jx&8 zy5JPClgR*BX^m3#r&HP{v{d$9(;*VbdGi4U;6N&y7hcn8;1QH+2B{)QW*V81G^}J8 zaD=?3p(b5=aI%LO1Z+_@dr$05c1dgL?M+ULZhHJP{V?~Z{+%vQ!zNJabfA-32O)l^ z1Nw6co|xX?-cNUK?Yxmg^~zm#i2&%DarMnHJ!^GwfYfKWeL?o>&GZJ<1v5B9z1-R8 z_7uf~#dJ2Yu*|Bx5ZAMUS$Y2D$`(|05oRWEp#9NLOgQYB9HiXK$$%brg{37%b3jvu z#tc0m2sjz=76hduWy_O$n#T(yVPVSa`o)SIjrI}SdAopMD4xL&Suk!?YAL8`Cp@aKL+ zA0^hy<++!m^itL9*x6(NN|`N{YY$-8;d&v_;8I}{znD=Iv5+)Zbnc{jhr1k#2D0$N z2BiQ7)Q36pd}^>(L&9(mX0nhWG=}h|mzZ_Hi%xo@ZS0jWXO01gK#8KOvY6|U8XNswQ4BapusXFD=O)({BJ8iqB@a$xCoZdmT&Wf4 zWz~o!W+zq@KFgu;B$pIr&kn2_bMF-kA*~2a&{LoZhU)9e)x;~50RYO-YHVJfx zv8nXuLDjChdMp1y5sdnGN}g0f{Tct!XHT(0HB?B)D^cp54r9zuddzcAmm24eMk(Y0pFo#?Yu-av_mxEh7U&-O& z@i#q0KN5a{1Ta;YVx_03^j)cB3lE=Uxi2)dMVz+GTCGe*xQ?jj>!nW3vu&v!mMrE=Twsm~f3o{ybXD_I! z2ZiTnEz>%ct}W}HENd)8`5jo+Rz!_uZHSGWs()2GQNm7rIM>0hLpZPNw=F}Ne_tC!T_h#ZxTj00zd~ zhTF59z1nay1Fi`vh8tL+m76an_&9Y!(Km^g|=xwXbX=;nS zJ)aT-Q(q_t!GnSi48U@0sBOE^xVvv;9s|^J_k9s5)Y#9tfP57nNYN=y!4@C46+_#$ zq4PD8rgyA-Ax)GEUt>wh%A)WXb4fG{?XqyQrdh+(tE9B0$#Of5A&P^7lZCL%JZzpJ z->HOW9vR?c)kE9%MB`+RT2d^@=|52}As8knX@~mMY0(pxTntuGb^NYfSf@?vLEy{v z>_$B{N)2=41KeOigOIMe=w{a+A%w6r(hDF)?>4pGNW*+6!8E?LQpznltI?H6O=!12%ag!&?bG6Z$fxaxPm3^O56`{HjTqVJQK}`4Y_D3va8I{Vd0`Am zk_i%ryiUS&TlH4du(`G=w+EX?t*viDF^83vi^*#zWWdgP#@8cYp(rZ*E(_Rq>aUEcIRX1k3NYy`!p+eKS6F|YESyV( z)3!pY!@COCA+#hyWZ{&{$;c@zTtifBm;LN*;$d{F?b=}`w^e5r+Ag){2o;H2Kilm@2Dw`3;BZ-d_eD$cd!XcPIw#6VaT613--ZgYHVyCFfllIA zVSG9Om2S&ADXPb@SLjgxTn8B>lNnE^8sad?tbMpT@wG5t^?q$Zz9%p&#@|k?iU7t1 z^X0P7UMqVKNhS7W1NHS%$NMp0hK;$gw-?jCGONC|nD#DIy$h6lymJAH_l4GUl&EMi zf`>NrFnrRloo1DS3P%5zL#!`nv3^XrSvGHhV8`D$Syl0DyP^4krZDY4M=i%x%c=61 zYS{%5)bge&Ybm(xHMM|dYUx$oTnm;*Gpl1kLCa;dNAhE6#o#xRJL8Au}xQrR9XTJnlHC^A(Vy)L!c=MYkQYL zM38ADb=?ku#`tj?0&QCYZOZ~}I|Ld|Wj08YK+}^jNKM2tN-WUo&-x+Ih`J|>v|kIf zek0JD;Qjdzl=my8k)?6OEP#jo4Bgai#e1-nWo{`VDw`LI5iJbMlV~na zGC|?3>7*33e4DgmXUarzw=5%cd2+(-WcLMzE=x(6U37Q~U4mKwVEa6Rq^ny@+tHlj zgXKv@Z*&@E9mK@gq0=Wcfg%Go#lBx=Wu`}i9K?K?3Bat<3S#b#{+2ia@d0AMfg&n| zF(ur{M@bnN@_hU{r(__{a@K(YiJ*+&NuNts>`Vj`Y>&QziAk&hSFEA1|HSF5t(bhQ277r^!B404`P9uA^5Nc;56j~9yQ81& zaa=?)jmG=ar85lRMP4F!8AY1_m=T{XBJ?I+u@(VAvNXseT8m?UnDK_s$RW|G=u+z& zd*ipu0#itwY|nD(wqj%IoD+IC)oGm5jYvx&8R+4Xuyc>eR3hZcB43klIUvvlH&6Mo z4zz1~ngX_BTQdwyHDh5b0=VQb!t}^J%;o|gt+C7wQah@q(EkQ#ZEyTPWq^jPAwyqjvBoEH{?ym_e?p(n&-;d?t!@RAm4w+<+p^M*Ho)q#D8mDBieNF=Qq73#!jqc9 zJHg9xF#d-cD<%7mzr}Z58kUun8z&6Ut&*eYgw{CV6NrmOim4}9EI|y5#y7#B+{gK5 zS1K1JyhAy~t826lM;|ZP`i+Jy95PM_#vzb}Qur8Fq4Db7^n&Bau;>)!h?GY`J?u#V z4FX=+pi`=s&e-Bpeg~Qfy}#SBj1_8#q-H)eN2#MLfGxG?FQ#kYRegrmmM0sO+mJLN zBcw1ZkR-}hOrk^**AS4Ns?k(aLyZC;&j)lzKep5)99- zjF{0_WnyOl^OWqLM^>d@Qf8(_g&y4^^An;RMdVXY3>?_mE7zH{l6@=;k%{-^>m5dS zjoMwY8lg3QweTVxn~JMimjNY)sSr5vWbs!tv#zmQ=8S322r`&z6(;l)R~L|^DVM5? zh(>-D`W3_zi;o!rmhb~IRdGN2?efgG9B-q|aVHRy(qkeP_goVs*1JeQjXne5 z+6itTu_WN)BC`-&^g|+6%&p2)SO%Ot2N~t)ne^e`lEJ9rAzWl;eEzez_U4i!L&8kUBp|1;!*wp^11 zuigKpj;Jf4CSyo#$!ec{ysxPQmG-;+(HTHdO*2)@ez`yT;+aCzTxBXYwVg$k`__xd z+wSh@yJfJc>b~3zUJ^)PN?JyQTgHsgPc5Cm0_ZWy^peblF>xWp0b>cibwNZ;uo6{6 zz&Mq`3U8Dh(s>yMMN2i=jlF)9B0WY-KXD6=PKP3-0+B(x9bFEzH$1#OgKYx?HzVN8 zjh*Y9XqwUw!Gx!#$$keTY0XzANYDUY$e@?y5Vzz^2dG6S-SIz_y`VUIYe>Rt+u)IK zGXBgr$)xzkqF55Sni7O6tTJO290@fFb`7w#L0BQ`HA2xg42^V;f-@i#%T8LS7u6`T zLp9hOnPk9ey4|130b@Q$sThO(2?+0uo-2wziR`K*T1PnIiP0NqQywed>$WWy%O2K- zJX3_&!w7;9MgbMhHFf32dy-EBI7-4xJYb0zeMWu+%%1))`wzOOozznYgsDe8br-28 zdTKSI!*h+dnVvR8D~CAsw7;K*i*5jcmD&y?A>&)?O3W+ce{L)9zr+ou>xmB&i6`ll zXuN3yXH_LTQ}n4K1t5wZaqW)(g=z}~e_>+mPU0Dth`QQ^N3U8?PS7<)GpwG}9Dk1i zZqeQ4L+MWZ0`5#)`=dMEkRU(W?r1$^E}MRdWcKc)U}yAeN(6*sdi+x$AKRl&gEFGf zOW2DVK4B25#VjgPl!Fy$`b-|H=^g(CxxS2p#L~51e1eNW1cq;&-@}Y|IF(Bh*ccH^ z!YSJVlGu}JBo#FKWK{$~*c4NM7zwJIX~U`H@pS}0l`#kn})~R#q zG54wjDw2|bu^yz7IxAgNC6z=#9!hr-X)A>OP8C8`3T{3-QY9AzY#(W_c9V!wRiXX7 zwh!#~fh{yaQSpj&L@q|e+l8-=w0d);MZ6;1-+zp`)?WKm1qsdfT|%9;_F8kzIp&yS zjyYa)OcYD4Q=u<;QJZ>@dE+93(5wjB0EUzh;arkdi^Ch%@`VS$E4VFH?^ zG20JA3x2~ABThTUZkmcss@ zDp@%L!PMGl4i3bir$KrM^;n!6SKBn%Vil5XM&2Qo6E3_rv;~|Qke^I1sRoaKEoV@{ zY%gi~Y9B7EylXYvPA*$lF+IZ`Q`xhJ#^1zEHH7HtaR}Sx4vW|du?5`AP-9niBp2#{ zxCe?=L9e`uvL>362$x$y!#^P9D<*@4JGMH|9?RR*waKjpaB8oSfq7jrl^Bdv#+@=F z1`y&hGYIvo;zl=8%`Zf%J7q!VwrAa7N{If#-RCRyAr6PUD~;KL zlPiG~VXf1QmSZ0sLK{J#2l;kp`Nu40e$Zd`0kWwKIclJOXitar9Vb)ld&pzBocCW+ zAJ}wpkP3TZw&N&}yGeE+UnqUMF3#>dmG4ZPVwzCE`g`z#g~eDe9$kDPnzA4ipw8ZB z#d1R%Mm<#sS7K*8c!s9v)eINLQA|+1nxj{9>Q$ybd57c-VKA}v-RfB#!%W?wfySGW zu$ifD6*lFJZeTOQUp>-*KItq|Q%h4hmR0XHxP}bPnTim+=kw~h8HB5b(3h=aPM+#N z(J*2SHV_CDLIEQ`Lcxro0P|Nwg~d#;4>qD=!sjjsuuv@ ziDn+X3dGRu9VcW4(YOY6tPYRFMkFwvYP=yaSEykca$*7W35_e`2_ajT+~?&32UVQV zoe$qce|rLcpUMW^{~i-=WuB8XC4M3^Bsbk+lA(|zJv|c_2+RWF(RzzHdGp&I_V#}H zkso@4rn#pfurusf@WkTI6#3wbT4$gwOs7~>{1*lqEgUjfGK+@{`7r07)DwsToKhKv z7-QZnK=Q`xH)LSis1V5`3C9S`LW_^7lzSmai}8=hy+-#~N$DWC(ZD-*kV*osEVLr@ z``;l+KN)5M!kCeRK%K~4o~VJziv*rW@sIVv3?kH9z?NBi=?()Xy}gC6Q!P!%o8?9Y zduW4Yds2XS)Vf7RX+bkdCemeq0e4u}H;P=5^stVc_!9wOkp_|n|B%NLg#RzD zpw*TDrCj(Eeq-P$|Cp=RBW&&xIhfx|V2cOZ6~=GP`21w~n8h1Z=TU|JouB5 z?9QyV+{JBcVv-ADZps!VXXMsgLMY0Q8Es)D8{5F%>`p%E{q zb}O+&kS7g%R6rVZq&xyYByXJo(JMzzgPJX2;g(Z4KAEp7KV{{nOPMsM$_3VH>@26& zpjeH?RJmwRTBp|fI~eznly4qkH0{`Xvc&kj z>EYuj*)2!GXQ$UG6@la%GY8)H$#!kfPtWZbBUYM)KcPOFuRg-{m@;uWY$6g1DxgMc0m%vexCWE- z#ZyBhdNZ1vDR;b{Y0rG$`Ff66x^JeHq-mCb5EHu!(-E-?vLdQ^DXSY4U&<4NeC91I$>fveKA%fjjE8qQ@Jh2u@s|2rtpWa&Z*QklT zwkZY5^wq}pa{jNe)F8fj5m{faHQjasI`3IDtn)}pEw`&RuKYj>Wp zxV&A4UDa5%Q)|Tlz(&UGh7R{q+$f?|qa7mB3=`3ot-tNQ~_?!QnhAIQJipPa*w z_N@F|dZE~IAb$nH=Svp}JzKtbo^@i&#q;khRt|sfU;h00zy0-h-*lWtB@U9xX07O7 zn`FOuz?cNLDYyGoA!N(#b=+<_oY?=KJXGDhpYOuTBgM)^wbY{--3bnkVCD`OEy%5> ztrtC7vAwOyF=~crH88L z<#CfBe!}vQl;RfmO9JSX)95W5VMaEfDS5J?5HT7vHh@pU9l$7DI+?zKB2rE4Bd#os zd}VWvcm(wT6+*j5TZo7%+~I1wNwMuDOxPa0Y9n$g8SNLK(V2=B=~F8%7>t_WbmNo33baR0Dl~N zDx%TmT&m7t#YOjoZW$jp=o{Lk2@s!JtTP+cIMUY%TE8D z-&S?Imp z$=KBtVd*A9teb9V24}%(jYDdR7bywoHH&YjJeQral~?DNo1G_L&+I>D3hna+H{HQc z8cNme1s~l-1&qKrLZ34HxEtOxCGnZ1qw$mACd*I2)RLI)`hu%!aqFBiN`W=WGVL(S z4~ZyKdB%Bj3j|pB(E7R=z-EG5KwhGER(EVzXO_0 zRFO(W+}ktM8S@arbZnmJqnRv8frH|AF{$i?2>&s01Ts-Jghd;lt<2tWlF-kK$ui{h(?@>>D-Piu-i1q$VcQVbBJkKYIwc4f$xGl_2 z6ZjQ&;IT2gGNZ7=Mq%(vszY{cd3nUk#Vlpnw!LP2Y{)gI%$jPrW7N=tYEnDG_A#vNLACW_u6L6pqKe*LWW0ivzc7+w4-f0|%%oiedX4l|9 zIe}vx+*Li?Q9T6AzICryQXIpu#9NaAd2)>V1a$$eQDy^Ps5)Ae6y4jMy$h&!XXjI7 zO}S655}^VWD}a77&Ub;Ql0AR?7$3gi=NN=0468!Ws!+w@9XUiw`^*P#A5#-Qw1-`n zqr_p-@}m9>to2sd+H9TlP@~rQG1fXrSPiqX{?T(diQ%%LrpFT$qT~)Y8@yh2f@hQp z34tP>$-muYHhhMLCI@Q#w%;ZE!W%JHxeJL>X??%jZGPdIQX4FH*>1DyIN!VmzWHA< zt}I5z`86d%_le=NSl&2p?OJ|ep(ClwiQ!c=$12Fwe0Tb47MxT{$)NlrKHdWXT>=ym z6@6{Iy>4UpY;M^`${o_8?s)wizmuu#xyG@JuQT3rJ>B|x{$Y=gT*KB1(T_#1ZWKHA zB=_39kUu_J=drHr%^tAHo1cds;G6l6E7tq-)W4PMKXBd4^$T40as49K{fwqU%i;=9 z91!behvD5t5MvjOVbmz#M>0A+51=#~S=f9ontWm!nZ}&iFM4%Z52Us?D6_@*@Z|1DA{KU7=G+*Wj8f{32ee_<5G%jww8RY zEjqx!#LaJ8qakCI&H2k$(DhDHn#7;xbfuQT2LBh%s8W{|zYOU5=ji&7E0X5$YOeBI z@!IU}2Lby={%LOv+k^Z+jhj@un(gbS6uve~P)`EMjaoj2fgcF}H??DVkb0tQrUkAhP9URcvrgI_ixze%lW=Djy96l7emIZ=j&rSkhff^9RMnzVrm z+h!&b_@LH5EGc2>M6tA&Z@_~UhjKXue9 z-bQ1>R=6qLB$UyZH&>x-eRxPHTYs2qt(<|fLlI>*P;ROPbD*rKP^O{rsTgk5th`bD z@Hi)>VWvEs#QzO%ZuDDxRxIge z>(u$-%>bu)K!45;579Gq(SGPw^I&Apf`8a%(*q0@3lb6-Y!lFsdDDb}HuNJ}!FQFk zq#wkA%_7d|m`9Vsegv;M*=-`(8a8;ZdMtaxrL^wkD`hQ^o{$`qAKq|O%23(B5o|z6 zUV;Om+#NzQ#`M?=B{%1Eb2B&h(?u9W8On=v`{s-1Yc_E$gAGWvCFRgPZlK`N#o@Z< z00Vi^h)j1rtj!S}u0vOR-!$cn50q0>$(B0?Y?m@HUa=qbSR<+2X!~I!S(AVhO6EIJ zIscS2i$t0l{$Rrzth5b3JVE>&VVD87nS!7>EPV8>7#|1i%*5TnR&qmqDD=_beHwsO zen1_CcppR0;on9qrW||WUioOcF&eE$(}M1cx*>P!UW0^!z6rJ*r^8(UFb{$%!nHBQ zimEYX>l<_-rQcD4fHyX@bh1T9mLWlPACQ-%N@EG+3DUiN^;DC_@Z}LdCP)AWVtp7o z>bB7oLd=ITY3uqS{Ekr8t~EFrxrA&Hu>KB(Byk)rbbPpzYNW6+3i-O2i+t3W=X}oC zlp6dyb`2y4@+UHygP@WO&VsS887Jzm*!_$7Zo+`4{Vg_$;?cMUg^3lRRXZo`Ls zVipyFCW*L8T^~BtT5&b9iOoW^4H?&Zw%Qi#wfeBa+7aq4@lDTEz+#&^i;QHMhmkco#<*Mf8P`nn2)4kT!#p11Yf)u#zP9Yy2to!Zs!)~Gp-hx|p zh9OgD?HERMfZ|Ri=?V}uMFwkG`~@mmJ5ivQxgrBnQ4F;Waiw@Kt@}}YG{a6Rzo9=Bm%Zgsv!GqVn;ZB zYP=&r8R7I%XSIHfk4XvcT>d{1MMIvAx6kd}f zr(Y7Y5EFo^=yCz=+aNDbC-sapfk_O(#(>o()PlFR!S(CPciCTrAhS}(%xy7V) z3%AcBqjG^_;Ov6raA2`Emz?x#kNPvMZjyGo{j$yXeDtAg8n@==4x_{y$z6tfA0F}b z%SwF3-8<~uZ}QRehaY}O|NEu)AIES5$Yb2G@&3>~(`}8R!EYYRO&z!bc!lJm(Nsaz z+|&N4=aP!ao*@qwckAL>zPaWEqKW-}n1Yji-`(Jnc;s~D6=p3N%6(+|fO0Wqc z7Nb7u?-SVtT^`RKHauMR_#Quo3;qwWN|O@?BL(+oCLq@gdR6B|t-d~tI196r#iSm} z$j#Bc5Fs`Xc(dRbb8JxcsHz6Pe0r0%q5zirdi)+b{FbS|`L&O~_|p(WM?tawzX6xm z)2brc<4h(yw8_>eIHUyvJZK8>*vC)R3qX>2tUhpxxW z1@cF4a_TQ*|CzLr*}zONU_1SfmBkZQ>jS_+r5*qrUmtv-trbIK*tCik--kzBcQPCo^UXWiKJ`YQmD#!bjEE>JT`9|#&i zrpze81tza*GIO;MH*TfWaB~;GV3B_?W{7f z*VkPr{)s%b<4^ZrC=TNj-}H3-Lh*e0%%2mk3(tiro?v^y`=xQAFBuztB73Mf;*;cA z`74H{+J7y|IhR|8COv#JdZ!ir7sXLMeqnLTh2qu&`P(%a%0LUp4&)E&$IaoU3&m{* z^7H(_{4=~=m$#*4kb#S0JQpOYqYQ@GCmxA3a#~v$Eo-mnm>sJ+8)Oll_LgQEV;31 zcpEhE+_1Fi=?jc9Ha{hBBfJ!9(Zct&^*762(<1TtBeUV=^0Zd{oYid%+h?f77S&G9`Saq9Esml%q3)S7|U)s#{`v@1CukcbQUl-)MtP&mUF1G+WqwVBM-E7 z=ZOs4QS9aS$?kT?;d||WUpRCxTIKxnPn`;maxk)gGOXl~%CBcKN{K>J?ktf6IQH;YRF+DnAn9(ErX;1P-)M~;6 zx$FqIm|khWUI{1|oU{nYk|^g*LV}mS%^m(Sjg$RwclgURt41~R z&YW=H#8u()2e~R-{&`%LCghtLg_ra10RQ&$Zy*0;6uW_cOK#M#NxT%c$sXUAJo$e=ros0f@*1!?wg+thtSrclrIF{;MhL`mm>LGrv7{M3krO@?inPEo zq{lPec8WzT%i7pl_e&JnAHD`%?3?9-*XFjMLp{uQ!rr%c5m>}CL^|dZRt!bj9Y2EgEF)PO1S9BH&uMi6-(RvhKNS zGAs{y4-*4*_y^^$a!1!b)xR$iITMIEXpM3Kx%)IBkm2yJXb8-1_i_`6!+v3~%#QH} zR21Rmf)?sH2I8VaUo{+XJJ`#Fj|u(K1s$*9*PjUAB(h;{TU5b>CemFBF(9gdA7kXs zxS+b6f;88#(}0*Q<=;W6FXQ?duHVGA{JxXl-^1^_xPF%3 zcXO5R^;@`pn(HgL${qdBDSwV~-^x`!+T&bR?jEkBpfop?e6yMjh~FZ_>OV%}|ipvkO zwWyey(gO523RSjITy2Sf`2CpwCagl-5KH$B>Eo=Fx=KqoQ>z0*^iz2W^Jri3(aZz3 z7}7AAb$L#$M9WPM9<|1C=su{GF@?bVJ*_m}b0WzTS@{70#k~F1Ph*r>ymeZZ(fXc_ z4@Hok!V>SW_0by&tPch_e~ConuSDhlpr%(vCl7K0wXGx*F#jb*h2y_oz7P88*=r-rC8hwu7K0BsE-Baiy$k7L*DY(s0aU$x;xMlaE4tiE$jNO` z^z*bbrc5w)hm3CuKx=p{(!BiH64)uUgOzYoAtZv=hI`O2E)=+9FA0(6AH0BF2>F{j z?)N(Gw>l_(e>h$hH!-{}ehxpgM0qdIRgLn&xioxh^#$U2qk*?(AOQ24bNAbR47Jh;xui zakFA~`QPU-LY=E@T2CI5t<&|c!-@UR9j~&BNmWDE+Jyma7u||a%;$P&JU?%bHN(#;_j;)l{z! zFXOF9w0CXtJD~O2?PKq|R%TkJ_(K@T+)L`I(QvH8Op=9A3rc)x%xo zJI+$itIF^F*|UVBiKFi-&ng?)E*|f44V@p#jLj3hUoM}c_cSe$;Q-E8{;~T4E&f1x z_Q-ITm0`{+?UvSU33E97b)i4uhSN6J|9N;t_?B=tEJO#!1ZFxQE{oOD0*sfxuvh-V zln1|}iORww#Cyn>#SSrk$Tzt74``adY9qYrJ{Qs?WV+NC?$QRG$1{a<-vwt3S3{SQ zCatRFYm)~&3<;;?Q&+XDu%<9C4hp`X4d=We`5rCt-v@h=u%!xdHyq?P+{qv0S`}S3 zDR(=A6JS$7*VQg+pHE?(EBuq%Q-lQzd`iS@74 zoU|V<*1u9rb?R26oEuGwxi?(H0zX^}U#E+N@FC6Z;-6v@=tsVev~slwVIhXS(h9nj z#K$P3SK>J@B%o(0v>yX{&`zLB1*}1m61FADL!Lg@X(nG>@XF8>m-LsR#+xmBm08#eC@HF~EzGD1OWm zQI!!vCo=`WDtKjhSsh4g5~_xDs*0IKXL_ZJ@r-lz(1xGN@I{9^O+^hm4T?2MEAL|c z-JR9ZviAzLj$spRbJ52rV0L`i^YAj4HDX(qzl2^=Jtl`cg)%N-moo0&sd?)X+{=lX z(_C`t?&Xp<@g)yEfYC%yroaDU;o+5zkP8U$8^f2QV<<{bd?s2vizu}z&sQmFFPt-0{WZ97IYSHl3*4pM*{r>eNvcU=rGYd)i{cku`5In-5*iY&1 znxB?TmMtMt6+mCwzmTR%@uNZ{Uss7e304uQl-yMZdE!VF38f*?Xz}OnBHNJIlxjlq zwwjP>oRFCXol-t-izcxvv^(?%!-VECDNQuudp31`R>TEUil+*E|-`3~34h3n^%D6a9}9IDa;K zfTU+as&`a*c&^{jjG17kCM!{!b9?U79--I=iVBZoQn-n~Y@<4t7TpWQ)XsEXWF9tE-#WCB#%W9fu}qZ%)aYP$zACfcK;)1^RqAP2uDL+hlN z4VcLl%BguZISbWqE?}G~<7uaCi`3YGbf)|{+psOgP~UrgXHrxt%$ZJ#%&?2-qZGEA zOXSGQBxDwJLo50f8{}4p0%3IP|8|WEg6!tt0a_)@Ca(kxga*T48qigQQMrN zwR2S*#x_0y0H-0CyJ8iZ%Gj*-P%)uBXcVW&m0q{?S}$8yeBIG&whA9k_@4~S?_!iK z#Tn*eorb}`<7>#r%Cu5#gX&*TTYH|(;(N9{jRbVgn9`NrO} zdzIYEX}Pt>Xe^T& zyJ}@po2~7k)S}H+U86p>hqK$kNYE>?-4PN?h^0}PT&if?qd3n7I`IWQLK!JJP|w0b z#8tFGoqZH`P@rA}wozybv6)&DLFh;y-S3y{tYwQW$eqJywylEw*YF0QvsS?4jLfE(UCD{+CO9pd92kUWHZ)WcYZQbiu6!B1(O zwL$DTf1k7k5FCg}cQ~+I@+zw&73*0V213e|Eh4ieEKI|&aDr_qOqCOW^lB{p_1G#p z)9eQ_fsr)WOkm!np)zi0*PjI1t@%2*Vas-07xkl(6+1d7XsfuklKz-yYpVsV3gaBN z;KzR0$jk)HljKN3mH`|k;o*c@TN~zOMVY8rz+@oFk?j}|fDj+AZ9leih{X1G(Ya3f zVHAx;55#|%6BaI2-K$VWhuXV)gHe^yVUSd)Z7 z2BYhYNMEZe24Pf*#(~l6JPY3$UE}(pv{=*iv9#ERYOoD?HC~tVW$u-LeSwM~YRm78zAc0>C6C;}h&ho1Vl00e!|isOT}Moc+QEplFqfhk2Ps zG?F+_?dPO7@IfK%JqcU#*NU1$&*Q0!c}H$xgTGpL|2QmZegyO?po(fM=%C_x;B7ns z-mxdS#+kM?V4KJ(4nEL(A1K0h=Z>}-MyGQG%65PulGPMu9a2$!t3>*Bcjo;|D8Q=m zZ4)-8VfCJ35+bL(GOGvfl~gg(5g4n8QNtqnj|e=rudxKjc5>mX5T4a4__Y#K_Efw@ zPY3p^8^ND!;M91T!1C&;wwMz=RN>|q<12DGSs*NQrwo3ggc|+T&HFW<2F14cJ4x8E zp^>>*NDyIR;dPhkU2K=2!ClyPQ3Fc^2vlyf;u5psBBaj*c_J-#u!!5Fc`_}wUp!ye z#Key^?X;R`br`6G$#TKl>R~(Hd7;>**FBp`;o=3gJAj$>8vR$(75s-BT4MwH22vMj z+w6{Ik^6}_j<6Ns_7da6*6nNZcc;Ulu0Ng*3ti8rvg9$#JTHJ3<%fo93T8%P7E8Cl zqJ9l18@?X`;I3N~@5j8rT~h3NzwK%!i%rdUw0wiNIMVPQMPsT;4F|~7uyn&3SmS0O zMrwE$sf#IXA|^mn7Cb(6_B*3H#zE{C#E}pptd3B#?GZ*sPiMrD>~0#=h-cdm9W)0n zSOBZk1)VV52VxMz3ftb;3A^@z7_r0h?U`7vIATdMcWW3*dln{qxFXjFGYxob{Zh57 zL?c1#+b^O?R0K+NWMt7I87)eLWTx8SXH4HCnVi8G*M~JsQim`mQd_k(fW}N126@zO zglVYrWyTo-8Vo5V1fp+HC|2tjJyB_eDoMZW6Q>|?Mb?vlyg2kenx>X@samsq#0^yu z8Q9=`_hO?(4365kP!aMaWd)J;QR9z!K~@kJQruDSJ6n@hHyP?ze}W|x;YK3v{X;|| zlD)|e!iL&$@R`rY6CCkpP>5$~M36t-&} zJN(jpYo9yuEtBiA7Qi1aj0&n3rZPoQ*z!4G`o#SEN{JF+^U3s~!@qsQ*?WKV{GT~d z*ed5j%~)~jaRDG~YlM>mR)cQ9;QxK<$0q;a1;23UxMQ%E)S7i6ez4n)$UwwCiHiS- z1h(9ez{nV6mIO&)O%?xX%3nU|C44Q!U67FZmoIx+lxi(|X}R|a|McapXn#N+u2%Ui z+NZLm$|fPP2{|3vj!XB{n)wikCgF;_Or~$iDdlhA+eFpk*tyzh)$9K%AqVTBa#NJg zDTiPToDr15l{)hix|KqolpJm<@p^EYH*Y{hOjNB%0iURT_PGhX3@JZEmY4shqaqYD z%~x_yvVTd*wUhE&;yvYr$-M)U#bLO5^8w|>!W>% z5#bK>mC=`N`?B5Em)Xojdt#z9iN?cir`76oiKfkFTCF^vfYbyRFY+vFwIR85W}=m* zE#8EjGD*^+jN7-!yRIBzx$>{~-jRQ?FX~g^Q`!3L>*;{-or)E7NC0Se2ywIU648M+8c*oCF$)xp_)OVg!=%2# z4Zac3docy6obJdy2+RnjN~9Mvkw82DmOcWw3`#Mlbj}!^rD&prI&P*DW2el7C3&Vx z%1_O2RBY>p^6zkKdYh@Ht@5wlpeKW$c=Ne)LPL<6b{0`98+=eAanY8=N#`O9n#KZ_ zN9$@^N9Qe6iDO2`WT|mlu9*fY?<}ib!o!Y)aDXQ#wP-WLCWhS(K~j1*2L;M@u9duJ z>9@JQ1~Ig%$+Ty))8$$$HBc~+PRuJ*^sTEJJ3hd^7E|v{0XqtxuC-ar2asB7$=NI$R_xI6c9%J}2qhSZR7hfm}Hv=k;3m z%K{k{5U$4`GK$F~O7=Lg!CTwOLVK-Z3sn&twN(C)C#QqjcytTf7O+~s1{(=^7r;_{ zDG_g6THr=d z(PeuC;P(yZ=>jrmASz4K=O5FLKQ60IS0lhbZLWWdIk)bkBte*Zbr9a{1IWEUPhqRIcfTVP2QacArmnwtu6~^|E+P|puXMN52~cbT6p}|`T@Ebh9)M5d0mnv(hB(s z02CTLoos0JSTGlZrOlg0aA_=!mK!0-n~?lcS`XoQZ<;QS4dL7Mc=HfG6d#Ta;luIa z*uea-J!}k1g+y!4k@yak>6icVG9>hf86#!zwc<$cDlXXtxk(aRf=xFCr2>K#L}oAjVjgPR8W=3|0;7Ee z7)%0qY8ZfE3iWbCXGW1pF@EmG` zrqux29mlF}Qw{N8?<+Tr7laSn)>?*OfW2BP&R83?plWsS21oNs($Y^(1>k3|-+v`e zVbBCctnh|&$5y#i6>!jSL27j0B5Marj^Pz5(yHm@>tms{K3NT!9}6w9_3ioC5oo!) zRv^Jvwyy7;9wutnGIy10Ii{|w3$^7w>EPAyVUr6LJykP_LF-ETn;6xI7xS({4oCSj z??#-Zm^_&%S{jZL;Y~pBL5HJTG;86C0?E^L@LrB%$?!Vy9YyfG0mUQ?Y&4rD+e zA+k#Wh^L04Yf!}IS>m0xC9!A{d(%)@0epZdj0iALqmvNwk=)Sg|LdI7)M$xLSvMT3 zz))3F_$-C+D+jaBQXSn5KjH12G3S1#%A;;48rcj-7(R|Q22R#PYM=s0qjw*2*2D=O zPwL4eO2mC~VX)etBq~)B3;at7>Jbsl=8qzT(C>nMB$ZtG*Okm(CqehP%E>RcRL(zS zAfD_cW`KUkU;Ct1)Qu|lHxFszR-5CWvo~6wCix?OkF=$7!VWFer=PI`uvYFr+qnOm z#{K`O@1fho^SL`KK?C`SMqBDvUjA)W&R2oFoRo#y1vKN+((%srFJ;Cjoe+gUPN%`? zgbPK z#~hyGpIGNX)2h%!mmRQG+C8Yf z|1l8My~^$l`+2D|vzQpB?h)Lu2=h>k177-V@)L1CAa8myoaWz*X+v1>6)9w=Y;m9h zO0;c}nI*>#2j%F%qREDZ18kbZi7=UE^WM)XVrIp@!E>2oRB0}N%8h3zSMM>0VZyiy;*U%B{CxFI*2F8 z5O&LU4u4;MA@w6*Fn3%2C7c{~{G~_bkv$e8!i*#;JFrJ7EkOf|$RthCeJ$KTI?Z4> zleCKz; zJ8VQoNSUmlq_NFJWYoBYB}3_OF>d%U6kAW2M-sQcHm*QUnXP$nS@R@uG=XDXff+{c z+dQu@)_fZ+@&>Nx)DI;PTrNEHFf1~nf|-9*V1ukFwkOleS zm<=4m#mei576nH%n{?39uqoOT(+XWXseN6gPiBA10AkJvN)a)HALkZRj_@NO13FHgEN&&|lsvjo{=wOcfY2A}od)5&^r9M=s$drIxTGDO3^jTJ7EKHf4 z44e(L=*N1vdEjQlEM%au-62Y#Vr{f#``#py11xzC_{7Igh*g{utAMkCFw#*=ssi%5 z1<;}ixv2%?@fyU)Cv-xvPfr*{3r1!L`eI^Sx;m4~WNnFYGtQpidXWawno=>%lKof| zBlbWw>N%B7Vt%DLD{pTEXU#5Xoim&O6IMH2u?;=sQ8A}eRXA{EMBEGlU5#rM;}4q_ z&Davi7x6OG9(nUGSf>nx*m;?=t&$06Vw$Z5tE(ty8d8X0%&I;f=iq-92ap(= z`~#3z4GrZDf3mYoyQ_f7X57Ah)2ZL!-tl!#P55FGk8JYE64&C$yClEP$0%WiX^6>L_&XU&!g$O+5@l$ZA9{65|DCLIJ5^JY8GC&V;a6+y%Ye0-)+8U z10`z`X~g$t$7rz;HRJnoUs-s8x>sOL zK(C`(9cYXhi}p@PrK*~#+CEwI)M4LY(kfR8z|=74iQ_~S2Dk!FAHmFIMU(-e=oN!e zut8AbA$Q+a%z(4$A;wcbOg0e3FB{2U!ER(T0&&A>)yu-6&SJd74ZNKi4P0}7aoCeZ*&7b10pDHlI+j_5KWQr|nU&F`m}DZT1@x)T{l z1EmlYu?^~K>Zb)mP-2*6(*MDkbWrJ@=hG8K-#LXkOxNu2>uEcD7f5+1gwGllSet|e zY&yg`t2qCrjc+4UYBlV`Yni-E|6)#(Kdgb@-0Dau+%b!uR{}8tAsk7>PX}S67g!_6 z6`Juc(2-PwJ=GaJh{=6i$)H`k4Fn;ZEI%rnl?=h!aiBNkNuY{nr-U>Qe&6`+RL#Wk zegvo*9;yLSor2VwK%kupbGNbiRagB(c--P8Ac0w(2g}!r5m(EG542o67Zphd6er|Hesn+w54xaJ>jEN2bnKW`cNHH*}yM z*~|g0+RY}1kOW|%O#Aj}-cXf_Szy7?;3$4wW9Er{>7R=eb3ReQgM-74Yzg{SrKvL} zSJFc$%?{-C{@03{8e?ztoH!RGGU}bpg%!FjX&y4Sm?W7O=53hf!-8nSO3?u`*f7cR zbr_^gv^j?lE^fLn^5{yjMT0FoEyZpaYMeHZ54YHuU_TMIfyWbmfPVyM#*~mwjVZXa z8W9|?N#$4r_!SNj3H=2a)Z$PZn)xQ#{f(zJ+kAn?B zD@@624x{3t?eRt|?3g$sO=T-T#RjymqNB~;0!n6YIYkN`skAzSvB^o6zp6|`oo6xu9Ydmvh6B%A_sv)jXME(#X)2psMpD-(v4w1PuCL9J1%_yf1DN2x7piVu4p7~)GvWn!?=BnOO z6s1}E0@oQM+rEO}qm(>l8&82N;oQEE@`p`!w8Kx_*Zhe;HApFcPH1~y)_;3PM=GO6 zM7@&=&xR6Kd#&k7;8<2o9=UyCvD^R$GnR zM!p#?QUWzbvR#SF%`&TrU-X^Aq=sqg*FBM}p_IgW-#~^rk|h-aFP3~@;V+{xf*42h z2qDbm&E=$Sfu7rn{#qpn#i(EEklwIH1c-@zeEMzf0kPh?9LzQdF=(CRn#qQf8wWm( zSJiN!Fb7OCvINiw97O_r(IO!kbss5OvZ9-(VhxP6g_tp+w{OET){BePZ3nNE4XsE9u@MYJB)0N(>r-2DMaQ~6 z{$71E1aoLS-FJ2_go0)rH^T@>@`qs)Y)13ieG7=8O+UFZjI?NUhAjd8fYyYf>T?Ey z3SwC>(kvQg@J=#y`hVXZIar95jQb?%hSYhB60mdLv8to9;!n|rJY(&p{a)0tXx~>c z<$Q`Sfx`w>Gm=VRjP$;8m7^@5OYtS~0{N4g%D-g-ceSHYra9VqNLF&>8dh{CmzRC;4JxNjyFoVd# zL*1NYs>>EcA1+AYx>PA7j7X3LE_d_zh(;YPx3#&3-N<=mJKTZda>lbp|-;%E`dSb&V^ zY!z758TEjt?8rihHx4(?dm$B=9Yme9KS{I(=Or?BPxy-cblo z{gQy480Dp@jo}H3WIP)2F_31}o%%(=6mA!-qk3a-!pctRhrw6w6plqES?T%BY?CNY!h;F5J{1BC6-0Prhjg6yHe{V3~Y~;2y*_LzPc8 z`MMIct}yvpwB2=5WuBfcT5Qm8@ z-tk3SPn)xnx?LNv562-K+br-D@lVFrN3B2&Bd&gz^YIw zw0NjQ^!g-qoGW*CDhJYCFxawd?0Z7Y7@p@&lZhA|Wuu)E0|)y+sespqM2r~A<>rXa z*AriFYPKT$<1|gsx~0!B1C$aqg$~OUmle{!__y@#mKV2J;liYN<`Fa$P}g%pJ{Uav z!Z4<_h;Pu$LhtLBb0a)uMwR5_`m? zKUfA7B#`w1ryc*bC)p3)jBBzPP&a&+okABk{H|j#gof-8KVl5jQ+o}TG$6Sql51I* zc%=k+x5RPfX(X`5wI37A>B0#8J<+el;S(res6gf00|~yK-Buzc>hkAUZd&e_nx)AF z*>-J5n39et4pPb~i0_x*ZpvtwW1?Wb3sZG%IxHLvAt%qeuI4AGQa?`z!W*zkSyOMk z59K>XieCBG=#tp3!lGqMKM6&A+yXt#`>V(JV!Wg3wCszhZT=sy_B>WW2_`h+Y?BtI zOsUe5Y;xsTbXLUCf=P)CBik?~Q?1fHjSo*|g)<>RbjaA~y~AcMgl zT^WYXR|kfyf?)(6pcR}YWBvDN7&8jfH92c=9iiwe^AHa>=3Lo^cto!a$GjUDMeDaF z-<%FwGrBxA&HmhZ8O=o&P>Cm&abqy^jwfatA?L5>U-mdFJDvM~wsGtjjL4VM_=tW9 zYyqSNNQ{fJRp29BA)0GT<)x`&6f8D{RMr;3lylvZM@lt5L9D2S1Zbi_tE3{|815j5 z45I?oiE_8{&3wSI9n3XHQ}Y}6t1EgJm4+U^5Q;76R$hX^9mZiaM@3g%=>f7k*05C_Ghmm(hBHJtSo+HXF zY**z**nFv$AtmFATd60A*rJ~+tk53d=E|E+#Uxc^O%rUzPXD6r2nG)xHNTaiL!Tq2 zf=#{=kIkK?;Bs@r?JzZCz#NMdsn32IE__-UE)3kur`ZS>6A>3W*pwbEY{JC?xWFC; zrPy>Kz2|K#-Wm^O5d|;=Qu+*IWSEYPO1M|bM`ZHujZ}3}M;fb{KnI@y8%&`py;NQYN1VH&2 zTPWu6a7;tb`WaYpsdh_9;mQhGdQ3Ie=1l;lU4087=qrx6{+QO5Y9(dm`u3B;jqH6= zf=s;0G-)wn&9Kh%G2tX2l%BU_E>Ix09jY>m-drTiE<*?2*j^1jhk(L%(!l*QVR*6+WyGYZvsG^w`juVWtl8ZP&I*C$X5}UO)YLiJ>uUi|0+TqlT8^*U^(~{vT5}eN#ruwR5n$< zi?XS-7hokYL8Kz1xQ#E-E5_g_UHqK%u!Bj7p9hP1iJzFe8BB?v@b4>&pHn7&5=fxo zh^_)Bwe@1MJojjFN@ORw^K?T-H}|p0nl_P{hBHT)Uo4}iiN(-l-z2~W#Ux2Y!5U8n zLONhwGC5SUYck5HHtf7#$k+KREEC4g93c8u_6a5s7E@L=x`id8o=e!jfxlR;+{Cui z0IHjUnD_*WwNE@=-d*4^Dqfjlj*^I>>L$nB+CB&s?8rdnQ( zo?b4%5h%}l_{1!{iJL8D9=UrXG%_+wFyJg5r^6|eC#S9B)8&5PlEFfoEp=wl^jhR- zfJN*=9J88FVJV?tlTXPhDL2ft@u@Hk@{vs@OR}1zHt!~-%uq&^VOjy$MPgV=GDJ(< z9y!l##|07!qpJkdVG)F}7Ab0)6ho+VJj)sQvt*HAm^Bdz5sD^lHuZN#rno0L2>1#P zrE1O*X{ZKl6V~{|V-Fy6)D{O(hiJ(WMU)p5!p|8A(5TEde!?69ZLS?sCA@J4^w`7A z6VG3Cs#(W+P*pMbc_|Wth%K6K7F8vK_xNL3R0lEwl{ulPUe6Eik z*W#hcK;j<}@tUpVDj@QNFFGMrdwD3x%(jWn%BHzYJc=ea0YlO{=R#LnCri_+o0bE|p7D-~CNyozrAzs1xl*RE&8wOWi05nsS5I zkyTm#Xh-XwjO+!I&Tftp{(V{t{*1DVqQ8yfMXj=qn6^!M+9R8BDBWZK-Lh^K8wc`h4_{$wY7wZe4-*RYAI z`iz4F%zOcuVPLJ=oTRrYBH8HqW}e~i?2C~h$$;jY5!=8NPiK71(~HPBSoy>_^g?Y6 zexc$g*tvNueqvxw1_cV(%CDn8VPE*G=^*o6EMQ9e`I(-Yn1p@fRCLjo=q9bKZ~$dI z)XqUq*2M!wM{vp9-lRe_00ps#VtI;W?_m~TgeZn>4BLOjD95CfUrEF-?HnZL;&+5t zi&rFCsN!PlA>;)TClS3Tsoml|*m%$pur8GJ!AJ;88TBkO$F}$+SHlFD~xrxmfkBS5!69iI1j*7Z4i!pI|dy=hiO8P>$x!4A2t#vubsz`7P zCN5nRUZLy(3ShF_%#@eyZY^Y~qnest%pfQh-7{s-tX36cWd7*p|%|YmJHV~6X!ni^a zDZoViO$ifNcg9~T7RlfLA9`=?3toCVO(&Rpt|m^09X2pk6vau?K#>J0g2YSsii|o| zl@0$+dD+NuxhMHLb_JoV0=d{In+@fUe@@tmSMS)6`9~dmteUo3_-Y`&nB2(1)Cg20 zQtd5P9s7WgY`#$x%cBqGN{J6da003<+LLMTTAYp{M9w6_{J~$By+gl$(4|1CMf6 z0gBWln*d-b0xli=uGt1gF(cS>#ZIW68E7K`@yYM$;AyNimmMo?Qdc!(r*#uUul%ha zdP6D3i~w)5c&(UZhcu~gsRS+Dq{#iTc3b7emcZcPcLYaOXr!x0btCfqyu8U~tnbM( z_7Ea_7(y%sle`$Qg@US~$p506g`G4M&K72DVr}OOT89pXyNpJLSMfbbdut|v1Et9% zx)qb?Hkbru8cf2r!IC?~nZ$2YEyFV8Y2$K_E|xt(@gSC(VQiWjY}hJv5+0GkXg#g1}j!Vl6YgM3KCO*SS1p2T%*_{Hr%eU z5?_~ne`SNsSqQYjXhgS#RO_o1jML))8Uam-l^|!|W;2>F{xH>GC0iiuO{_%w$#%zq zE3A#tB#g|2SrD1YP6{_UjWZLyA2E{{Ur(%-L@;M2TkJd@ZT%OoV0MZ_u)9I z+DU0ufr4!$CpjDTDlt9dCUnHM&nz>fyTZJ&674gR0i2x!TLRkdHh!8}T*1!`K+&zm zN|?=JCCC$-SP7ddU?sTb#7f8??($Lviy+}cu@W6L=d48ABYX{!k3=d3CgWKGx;P~9 z7`-%BvdAKc7wCwh@fVb+mOFM$OVg0W)c88=MXE6D#q+6K@ER6eX#gwg#y0&~v<`{8 zf0?YN_f)KgrYcr53#ioX;E%H!+XmENHQmT+OfL|pxap5K=D58zVsNYMeXr>}>Ex(v6RYx`; zB>D!{Qpy zbcMix8cSD4EIp%1Ju;zJ7I-Bz`LR^_p9}+o&%QCPX(a8uXpwc?kUUk`(}q!9Y+Qz1 zwFGSCsuQ41p6bvUxD5!nBxLh$HG;Ny+Cva;%yXF!NS*J zEuU)@L~Auflk`X75A?oK!$JWXbX*_^#sY!%~p)h|D-FImQF$K?f}C+T#|2U#--m>3J=AjHqm z(XWhyU@22iv}ZW(Di#-@e^0+Z|M1o7kG!W}X@AhR;`RZQwoRf26Fhnd#EGQs$RQo& zkP-i+^Dq*h<2^ARi|N56Jz|jxPp`Owv&EjV8Fp$^Y@jDLfG*mzIlP^#7^GBeHaHlA z#G6ucA4DRfCk0v7(-l_BbXByB7%yQT5}P$$w^q}2Yt8PAK^vgs^WUJOM;SNL2{a3UIV$+HNv7<4B z2(&EXAF``dcz#+y86yC(uT;ieS%VQ@Ija~K4a@DsMs(41`$udZh}$JtyP_AH+t%o| zJG$Lg-D1}IU=rCdAG1bWg z=BzRuVz4&G8?-wxv|=(aeQsipqU`Ez2Hcz}+VOiLa$B@$-lUekCY?n5THG=dW~w>{ z#7mp;lNQSSOwoyTVDm(c^V2-h?qzN6T&WIYg}e^R&?f;TQCfyGMK{(%@G6IhNWST) z7MABasaeKDdM-mBjVq%Gs|^_ElGhB_v1o3h0EK0q4c!00=z1J$mE}JZoVHP)LftF8gX|Uct*)sS zWa44Yze;N-zbPOYbHXr#eU`nP%B6|fn~W5K+4MNR=xFdq|ApL$+m7(cDOc+`J$uf~ zuwyg8iv%<}ttKM^<@2Dw-mIvec5flHhkTt9(v(FNh^SPWt0!?$@({F}F`%fTV~t6F zP=jhES2lWV=TYmDA%t?IfQ%3N4xWOAWtsGkW*FCYdG21gE^ z)XM=Q4`xukmE1}ZFy#(uz_#mnQJyO_W5cTu3reswNqG0%*Lo7jgxG3S~m$1QaDI<4+(hNTe`+Q3d&z0an7V17naXJtk^vfzFuG*jtfU842UdO z^Z{-{Ve#^mz)-P<6JHo(YU(6`KvZbfys5fEb_8s0h2N&h#|2C8%^29OKFZiL4#W%u zuQK<3+f2X-14}GXCsUrsQ0qq(o{_Ss60@E6cfx^epRv#b;`o(viN8+tev2f=HZP8Ui944evCo^Oo`AYEtE2cHCBt80$XUv>UAL}XHl{)&{A-X+DS{@=l z)fwF;oZoS#e780oZuEEC+bq6HIjBeRF@rOw%hv15&r97HD~KD^>d37iTU98SjThWz zHIhZv3Qn9Jt0maWR=KkRCbx!QMely!n*@(T3r4B}ozr4e@$DN^^7`)rN$0@)=mcN} zl3gGqnIwl9=jE2~_-*O}J%f$GXWmTNVO~yZCnQ7EDuZ|sUj*AI<%=1UoUsV`M)j$G z$AgIYjDdC;tN*27XmJePQ^P<`@2?UJf7(lDD?FSdEkirXf2`D}wP zx`SU6Fzn!{*JWiE`+VlnE8W-yDMEOjs`!5k9h8{{<*9yXS$aohh;|Xn9zF12)j53e z^uRV9DA3rpjT0TEVWN1iU|+Fg3kvCIPZ$isqE7-@;5y8u(z{DxE$Qe+#bWs*FzHS? zA-!m^e9(Syd~B*RI`6v0@)WC~X~nm7X4+|zWJ$_80GXP4$@;i$Is%@De{K0Xjp(KEh{JMM_|AjGO*5v9QsP|v3Bs_i&9x? zU5MXybQq6+E55{i*&F<*(GRV|{NSl(znfxH5)^S>w4~AZ1_U?`uVd5N=3?c}h+*>R zzVfF>MG33ZKm*IP3>K`m8f!2crbvTdBn}L}wO}FR(H8~_;$j{%|22=>c32;VVZC%j zB_@O-Z8^1gk-=ZT3Bro^|4saLSp9m!ej(SYs==SzFTyqK*Qf1Qk6$da{^&3CNL+*1 z3MmGpt&>cRlTcbfJMeBmQIh?XzhZ2tU9+K877}|ic%x8hV(X^fT*r`J)|qUb^N@Y^ z5+ATp{sRtXp$kM2pg4GoD)Ya@NRz^}?l|hc_nSxzf4EWZxdBAAWeFIefgg?q;PZF? z-FwNxBJBnVQT@_)>enZ|U(O>r{;t_6C^2#x9n$u@3CsezLzR{0%-XA*ilv z;uujyab+f6XXAAcuXW&YyF8a~L}uFQ|G?yk&9dA~#TPiIG}d-estJCv&q){Qnr zK0T9%nzN@8LY?`Ol0ZeVXXQDjF>{5S4N4Y1RW7OsZ)X8|AjYGXrVpl;U(%k@R>>qgBA5CN_qx+i?$CuGAq5(n*&|BVlnE*zoT(!`dQ-H5VQi!>Wp) zuSyzSGBq)W_o7|+zB%J-TeYd|I(vOxZ7>?;rtq*{QA^aCStyn;bXTxNLRaUjEe-?% z^Q%s)DiZUt6`VYJDF!_{7 zKrAKvu7;E?Z#-@l3ZYs&Ml`ZEjYB#=|B*K}NfnZ@4RL&pEy~pHIHzsw&7iLKukdb) zVN|P|3=BSzjmfZNfeqm&7RBPyXd*rwZ&wffE6_OjYfU+yY5t|=kO^SUCiWx}ib&+u z=#^?P)+db04?V@|6Isuo|F$k?j_h&~_)_acG4MBH7LY3B{z<|m#U?B&OoxT>n90cY zRdYKktc(V<ztbeg`gRREA|)@;e#yQiXV`^GblgVVx6^752<1OGlq5K7*J$iVqCB| zLkWn3-Ov(Zqz};lP*E@FWWi$nZZda?)*VsrUsWZr8Y-r>xgc6=} z2u*BFf-Dkq!0mu2LoAPeZIsGmE^Et2tlru3yM=_fI8n1=IhggI)cz=uW{(*58Nemx z3Of3mx<{fy$qiWS%#_HH9g;GwS8SkY_sdV{9gEfM*m_j{x*j8yo208#;Gk|&&>?LM z!h%|4a6Z}6heSHj^-VDG-Jc{dGWvk&MeCgf8mjvmADf%KOcLzdO#`)uYAmK}k<+BK z+%4dc9U2m--Ykl@4RDuQ8$RL5X?v%Vhf zj=YlFYe%<-_3Dk)A^eHAf$I3nryw~n@=kBg9MlI-`kiyq6r1E z^jPK$8_-m>Kd6)&Xy|%k1e^@ss6Lutf;~sPKN)<^22($=0qTSH82i_Pke8oAKfnmL zJA3rk-h7UcVzhb^qR`$xfyK5NzcP3p^?p1^uMhwNDjr7t?bso+#7T@swVnQ2FPn&S8Z#DP>`A zq++#Fc2EynSXD~aN0WcsSLf>OKLizu5jLAy)57H*qhFATPZ2+@|}86$++61AK2FC5^o%_uI1@SYFD5S17TAHD0X{IxgqTOdH2DvTxfJ!@{d7-*< z{-on|2``?AUr|MWrk&(@nrmNDI$RMaYH?xBZ4Xzph4}i7up%^BorI!sbe!c#jQtrz z3jD=J&&Akq770yoLWi#t zf8U)^mf4B_c}Kzasc+>Wxg~Z!FFEdaLAm$up{YNDA^1Kl3!P9jhP2``dTIx@c!FMb z=_puRR{0sRY#S9LY+jN=!!xoKmTHv~gDJ%JiDGu}lQ!pQ>~6~8jn;~cwxz?_kX~lW zOLoAg9XC&L9>AeADdsjTE@K8Na{U&N!knEq40~d=#IC%d)J zuVvw%i4%sV8w}r*(GCm|!if4hResFyK2?4YV_^zo%0#F$zA)4SEyjZP=1Q;RAh#$n zsXg#*dfO3duQJgW1OBfxY{8GR5>5CUinf6QmJi^H5;O||!L!^2{gGM>!SaX6t7Dws z^d|98J1-+E&q*>Ndryn;aNi7NocIuSGVR=8i%4GH&!Nfuseiv#zh7JZZqXhV#Zg*37WH?@Y!sI_jKrQ!lt|aH9Za|jY+5Q)> z*wOg(8I_1djmU7q)ZCtB%bqMB$0TR=EhKcrDF}jAi@vy$s34%1Nmk9z$e+ET|*Dz5AbPN-Ys_2a4LhY1!s{ah^~ z22O))tx@dIr@2S*2xr1#`ICs0{qlEz2WAN~r+V)93 z`bjn%eY;5{S;2NFzz!yznArIfR_hx->b3S@qfV&U+@ZuMg1uSBK^?`wNu}6Psa`l{ zB2xOYa?=Uh`^D)&(c?_bk*nNh)CZk1r`2t|R~h8d$a3wcTKi!pP5@Jhbc%5 zo;&joVw{vj358YkzzB6C?OLfi@B_Z32c}P6@iS<}NZv|q{w#P(Wh%HzOquD?Z1F1l zlmSQlWJD&+ZJP7&7&;#6h%mp~P!{$2MC+R@4vf;t(a3d1rP zg?&;vRb1bMI%`mcW!C*Nr~*}lARb#rulwGh%T6>ZXoK zkue=otE|fPKia}s9+JW1T1ufkDVn;-xMo^!6^UjQcQp%nH+6+~W|ZSy@F*wl{y*y8 zJ{xY|InlNz_}kk z)tq}s6TO~mBqcNuVvy#YGSV z?X|0_^FYqM-sID@)?RC_`51G&=a^%zn$JxDu06b&uv=2;CpEOf_CfYdg~WFj@AixV+JHo{6MsRpBYuk04D_< zGO(@oJCFsox9V!3ZFnOr&s>`d#lcdB&WOW7@8Boi&qXO6=%LHvj}ZE@Q}7NAO24T5sU^6_$rnPpN!=SK&& z{bWSZOXdDKE{YgaA`)fp#Yt)|3XY1Ew!B>i`20S;!PC!@P)|n$A)`^-aDInHk>)J< zhqx8~dH|K%Q`SA5Y{=IsskZD$%CRydb@PFi@drQ_rN`UOTf7FU7)p?0(X!Cy!vYF< zBol@zw+0YS(=2I_s*14x*)CAYEz}GfO=h?{i#cj0ki*u_T3nz{e$+BSUy7|UyKg%h z0WKBKqc8iuc2%%suaj2E`XGOTZ9a&(Oap+T%QgWBH#5B-g#l|E0v=htRm?L|lKV=- z8jH6{>#FS*v!I!#^Z`i;G*qRs{dxT%x_Bm;Z@P24P08gKd~D`&D1m`8Sm}dj>d&(j z(ZGXXyZ%fgZG-~RD}AZs?YKd3@q=^cielY+{_bFQL8fHdHz8r#oxfg#Oz23 zV?CyuSf#DLuBdyv;r3^A>=8c6SMNS)flF${7^ElWJBso6nLXN$Zv^eK_3)m zX|~~5d~pko;1Cv+lVJb!tf&d3_CbQA&8^PbYiRo4BTWz!-*V3)>m$j-$5c^?{K{P1 zm)(AeB?Z73c_66*N-4@`sw8Ipis9C+AyjKOCd}l5y4^dhdJ_`1?tz8Cw2R-F)kkQ7 zq?oG5H-bqh+oJpzb#jm=3Ye1Yvm~rp%*eFrfh)3M^jqt!1k7RH^vhRE2FjeI!>}LK zOhe{+wYBU#S$J+*Aeat!F%?z+pnyOzll)XdBP-H5J3&zn{|ClX7VrDip>s*Y9q&1fU@>>%D3;Xi;DyHhw^b*OSKs&R zIsL*TNeax3jeB0|UcBZ{hNLbK;kkLg$jyDi`sv&z?sT|MAwo!1)7vBe9vr)L_&&;$;cLDBHUTdt{R*#8$ zsx6^ORsc1fxp<=2$jcW!p0c*I4m-qia;w%_%`Jg6l|;RKr7FoC(+ok~fI)2>1P8@y z5VppO2b5aMSUUi1RromHNZR0GQ!q&ysd=Y3@Xi!b?Jk@|Ph)KbNrPi*D~3mGjS-7B z7S5x3_Ttgjq{f11MRUVyGL4neQj1_7Y87^Zu_SZOSHG^8aV&+KDj$tP5OrZ2)4VT% z(6vz6H_8I6z1&BOcv2Ex*jcY(QXXXLYMR$%m~dxh}wY!dsJiU10J!1)eBbH(kQ%x2eUNgum6A zz(*zFE~}SYPHViXo=XjYbPdq>b`L#_w$o1;k}IXTB~JDOtljOBNkIa_@=elbq>SrB z5{GJTnQ^ayL!ByF6C@j-V4*LP4)Z|505FIHU^0+Xc{?nec0Mh};Ih44Ba&_8sYtPY zIMZIO$O;LI+@ZBRK@R=>E3ZAj%*F=k@Pub$>^QTL#a{&=Q0%rCWP8GXe4mVI_gamZ z3esMC<;%s~8lVg8!eR`Pc+xMCyCqCMSDS(+MXji#T8M<3NbiHu;iKm7tK2tChF+S1 z*RjOooDN?t1W3sZ%(?@g(=rl`i7hjOV|02;8SI=<0S$-GM872)f}bG0xxi2%@}U-m7XLI<}5K~M0YSH8+* zZ>mRXcvHtbk?_xzyjCTO3<3g3TTy#%i@>JK&6`YB2b`;bUejmfF!n1^OUo-``Ack| z=azBE{Lqkx)`WtQ=6OC(5yBZ-(1YjL)=hsayighxVQzd1{aUf)PTGfdE2;5l&yJsC zW13|TP;96;R>42I4FtAn5!gG}{#!3Gr=ErxYJv!{MK*O+hR>bJ@X^vP{r$#he=Sj= zjc_Xge#4&*iAc-LVS0rGyymVQKZ8+Js4;R?jib-#@WERPe`$mS8u-o+#P*#<`9A4> z`oJ@5+YrfG3mHzvF@>Z#pO=uoQ$RlqI?yo;vbVU_D3rj*hSKzZCRIRuyVS}n-yF8} zq7k#%|=Ockqjr&0$P*@+*seL z`6Ry-nE~d_rv*vF!}x)J`F4J`7TiJVec36X(0SP@VvnL7n|k%mz@$m#;TFHy zFaG!%J*J(&lW^IJ+k;Jim#4`E#cGw|jYZT71)K+Ke8W8^ND!eJPC^QRD>hw-tMsv; zJ8fG-y`LX?-OEk4P%Os9GZxb4H8YE8DEA!JP{7=Hi$T)(b9E=QUYpf-Y;+9woD-_nU^+2S``Ish?EFX*S1OD5` zIYi-|VK%wfl$B`&vzH7TNih_5tgryV6ey@=;}q=hDcGR^Hk*JQwmJi+Ke3I}OS9eH z#Kbs-rXwL+2XsNbvn9tagV2c`VE*s4T%(d#FrmG;T{TYHF1&pNfuyiru9Dvtnu@pP zYvmiIsk9&7)jTXBUQZ#Kh|DVWMOj*ywwi&z@iq37Xp>5#A(8KFo0J zlUu(~z`zrR{K+k!X#cwYCGB4?dQbb;^WV|_b!g<*HNVwIS;Oiwhg`_32)e<(&d=YU)GkIk?6-4cc|?=;3}1C$Y{QM;KsbCGmj(V^ zVD2t}Xxx@m1XvB0aSZJN21=TRhQ|);Gu}HMZ=|iR8|z!Wqqld_g?ml=a9O=4yAh## z^Pfs|FxnM!IcN+#{^K{i#~v4>kMDWI2kmiZ^zk3R!8jxFnB7r?(&t>Trz_=e=_z3a0DdnK1-h=Tk?BD5uq;hwPF#PP zS9(+}2W_b7;~T2iOD#@oSy8V`PrL2&fAp2RuKVgMqe9)5upLLAOkz4GF+paS^Rk~2 z)NXU8WuOlxFHCFqYg-Ojk$ zkQ50CUwgV+1W{7d^tt5ayD5iFc6xAI>zI%dET9Y zcxdLGlZ6y7niLc3tAqdQ0pMpg?W}b4!!zJC6^gP5T_u#FYKaM2sul5{m|-`Nux5AS zc@ocI8PJz+NW2nmsFcJ=<3oFmnZYkFonrb;4l>*OSuurO3liX3P9m8X3IRPE zNfz+Pq*RGSRIGaB;6(qm+CXC8;rW#)QNg0T&YW0;nBtLQe%T=M5==UfHy0Mi5lBOaBmUr=HlC*dL?g0~R5~0<sl^*)=I|u ze>z@_UtL^vvUN1>KTvg3pM@#fSwY=-49X+Lx#Qq~+!9h5d757~kPC>dD>1vAyeZn8 zO7SAT58oe4?)bFyz5gGkX1C?VSTQy>))~wBpZ_u^+Qc_gQahrIZ6t+{1gE+JIv7b8 z--##yt@$-UP2i9~+Tp#%g4f=H4}s|czPDUFB#BAh zS38vaYRkUH2rN=du~|wtIIOuMKbC3&ayD#hhOyHOAB_oJY&Wki`cRBbXI1ZExz{t= z3=~^%wfeUw=qy5QkD?DG3Y0rQyKLHJ>ATUZ73c67kDjE#OZ`amI{|YZi+^VTx(8>f z$Z$&Air8%i@B^lXKpI@I!YhQX|f zvWqUh z;`a}ClvpHW7F(;SHuE<0Z>Xjd2+DK+Q_P>M(iUar@9pKW?|%2Im;UeVm#G3({Cnq; zvcwlATexf32n~uUw6L^e&%qf+-VC7d0Zc_Ug{~70pyX}Tti3iiT_Aeuk{K3E>N<=7 z4@a6-b9*r$fJr%iDSC2$&2J|AuWxNwBZN6$b^6AoBw|J729V|sC!~)J|AelU_qlRU zeSK((0GtMCfxCj*>%0~W(IBQ6s|W4lvDU{QN$gNqDOrgYgCa)VCB@?0902 zleMYMgx+%RKplpen$Si=s!91*KsGNrRldMxLQN`z5r66gO;cM za?5nX)RUaYYo^Oiv?)F1m=J%uQx|#9(ExGx^AVa4(#aq6<;bWNRbAjb)7dd z*uf$ZO|w5>7d1$UTROdi>zsP@V<$gu!t1vDroeMDoASqhAJGHOJ?2k(@Wvww(x2DH zX)S?Ld8zpy4jV0y|2uIAiS+I{7vegexv5%tGw0RJ+z__iaO9$Y_{Gm(^R90`{M0x7 zrz4dM2T&CvdGgr|62#=PaRK8&rd?hGt`pVfNbFSR_+yy|ZFX;hc zMBBo4s#``5u$sOcT4i7b+f$bx`B83%U@-qEZMU91RtwcO4qWG-wPnJf)l%J?4JAga zmuj)wJ+s@Xi+`%ikjeLdFNPiOelzVXzo}YG{XXl$XIb6N&#>*y)iI4qM27N$On5`cm+tqVKhbV;lzF{Z?( zIMq|{ve85*imXJ=G;#hecKoNI5HXXyAK9oTiF_xU63i^MLTN8+%82sfL+h4bCDn>} z?7yOu7wlCa7Nrs^t<#jKW)oLz6sY&<;e};Xt)J71U7A4QgM<5aCaVZJpl8%s?})I+ zZp&CBWS%Ib3Ir|)=M+MP({t6x!5YT#SYEIG4zL;Mo`PCv+y$mSUKLleYW8fbW^YRA z6!S-~VsBH${*6_fRaen{^eWD3syKIJ6`YkQ{1?D%AXrU`d9%@I0JazGmKK{u&4Z$g z{#*0W-H5GB_9>CD<`z$WJ^BB);ABr6KO}#7zjxF7l>H{XKWo$bw5=q)zhKk*3sU`v z%LgU0g+cdsi!Ks5nQ@0nAlO-znAOP9CbGC5YU~j9@Mt~6_t>yMpgJ&|88Y~xk|L73$MT-7vx zTFNC#6NHJKLvCeW$|y?mG>`8_E_OY+X-;UXPG?0GN#+f67{=VZDP+!B{|$A!q&V&M zvR)V59BXOV{Nxi?vGs}i#V>tnoXUD>zij=2rbd+RF;}|Lo$X70Sy^grMwLt&Y~&4N za?m!Gj7uC@GKGtr@ryG1&n=neSF&WrVNKRUQ=*1F9KWHei*B@J=%c+F+A+XuI9vn8 zxa=79{&17?t?0ifhZiM0S_h8`$0Gx5E>dq$2~q-yjt-H?nUz%OP74pP95QXbrTu+b z7Joz@9`(hnSrM*dhuFw^(~nO7lbyU*_v6SApJQ&hE^^ed)n1@Xad&O8&5hrpQ3+PpO=w0 zX;VY&aI(&LW0i7~=9g6yD-~;VyW`irLEnwV-l)Kfx{VGComw64kUg`!M!hCqtDe1* zUCmh>uUA?O>RJ47yQH1V9&c1Z_aEHvxAe2Swy~(ROfhaz{DxYZSEK~p{3^l{sFCd< z_lz_S^Avj|P_oWvly+Xk4j+t}W1@K}+&a?CX}A9-S*5Ton=wDz>Saqt~Y=|5>I zS)6rogQUYB70G)AzGylNZIyV3;0lPYwRr<2K^(H38|zuuvt_DNy_Eg0Yn9e5)7R)2 z1cFvwq2WHEAvNkPVIFdfm}{*6U)f!r&>yTz-Y}pcp9Rop5U+!k$Abpzu+HQenW)jA zH=J#}EA{5TFKMpo{dBU~Yv{nkUm}UKsp$>Pjy6hftWkjvM9=F$%K}C&9M9u7h7Cf3 znvh@rGj*ZajRyc%B=Lq_LHNC9yn{G--gw=e+lQc_Ah^_k!G1PC5Rj}#WQD0oZ%;#6 zU3@kV@8g8AYT}N_M51Br@b>#6*=8nzD-`dOHUhW(Zkj!cMm^V zuA2+p(>nXBiKo5&mQUPv^KB0d{ulFm)xTfR_)S)k4sFosRah z&rt$EUO|zDnsf@5TcGEK&Z1D%<{ALLb-^(&c!3HM#(GyFG)ebMx7PG`LVu>q!>Zi97ep8-w+l9-C)=7Lzr&5gwzamc;{%c& z0Y;7??sD7vDn-|t+GA2+k4e<#;eLC#-$X<6@LYR%E>cZ;y>KwGW8H3ne4kud7qN9diQv6GOa2V7;0>j+^QozoVBpe8rS2 zCVdYW$7R1?&SkEk(G~;k#@lNa0bM>=427bUyxLh`m}EDwv;_2W5EVhKi0L*pz+Z9f zhwhm@jIj2#m1I7YfNtWh9$E>jMXQ=Xw^`9nhB=SxxG!Tr;iCxnHsj>?X3RYr3~^0sc_=vJsuh;E z{Q03;dN`uQ-?Jwhn7Ki_)@HynSNlx)0mz1X7EfqBYRIVF8@7T+o8_aSQfLx{G|mC9 zq}QZ(>^&b}F$~i7zyfC6iJxor1Eyj+a#D5-7g)t%Hsktdn*nHwX`?ux3z3mh!GSn* zp>tj{qn0%KZoC`FG5g*4P-t;mJ-EXasV&~z%A0$){05ceIB%{$?wh-Kv!MsFBPCE@ zXoK3I4nf3Y^%kLSylQmp0CP}8IKKd?;};ls_sr~$5T7huGu|Mp9;~)JPGVSh2eDnA z601Y12K%9(!a+~JMvW;`fOrdP5u{)*?X%-oW(8HBVDDeq;&6q!LmD-Qah)zPO%c_T zSwm^o+8gf1<1QZVV;ORCxZ#cs9K#KFYQpSmeU89Bt#fNoj~l+m4( zM0g9USSB}1OQ4{{V5<_!)9dZ2EAefb|7N$TFpgXrAKQd^!)5`RMFL3i^>#w{jC@ww zZlSgQg0=n=u}^_@5kKXDPt^LV%_s;n?$mX}Il<^vjGwPK0pYx?@;VG)@d4{)V_9rj z-*WqdPumA=g=2FE`~zXHLEL0d#{EhbG$8O=Y z4rns_%itsmAx&=UusnG>kZ(JeGBOp3nI2naRQ-VP*WPo|YK4)TzhzldFi?KYg} z!LLk2A73s>B?0*C)ee=sQ7)HQ9dk*U&R>iVS=}#`F_`4!7uu~AF*l>f=m zLzc@uyc>qtGqv4hxrMiMBRyzjdAm1_EI+bAmfw9GS^oZ3KmN6{e0L+ufvpAT-x%t< z>vf0a{n~VWO%Q6HRT1IeB_asJL*Wv3YEL)5u4aCBZ`1%@TjTMjH#hRe`0%DTlJgth zu-{=E1P~{ti&Nee31Ji?!wdi(HDRa`Ho`Eo zwv9?m_(`Ye#@B2KC*@`7aVW@dOZb4$>vqd+(sBbHrk>MK7xJ1YdXbWvx{F@+omWO$u8#Z zOs34|9K%D_&58$IyQRa4gl@Iy$QzUpo#27h><73{$YxGE77-whF-o_oHQbh|oU);g zBsles-?#~yHTQ1;)1;0-`Nol9YIIwamRB1h(hh@`IgTD^t8sv=c-&}c>;5K2j7wRR z5nQoR*u5n;-uxI0h;|ja74e1?xEZ>8A#iDz;|Lt`Iq6*rT+xnme(pwF?6Gi-BkoK{ z>--!ajIi>x;k=9-!ahgm=gN6yxO!fuOj8^c$_f^+b`@7TqWfjKhO=_!jUPt>8Rc~1 zErMq)2w_djp9wow92v?LIMW+;JP-Wi_2 z@;}?)Up9;~a;ZaqSoqn>-tR?{FpXrub(S+G!+C&MG{dT1${%+~3z|rJZ`yjo3=r5UDf|~wC{FMzU=tMXkF1Pqe z^^dNZ9~*3~a382*lgsJ2PuZlVipY}yMB3hhSB`O9^(Hs1)j8@R=DW6k*cBIfN?a|}>yZi0=}<_DWf z7)E1iQ2rk~&Zb8&r$w?sNz#>gJ{ey++WI8mnzW!#-m3j^7DHaD_USOPtCNVx>2K@) zaCDvbN3I%(2KV@cYhB(WAq!3g1YDTF4~nbU(L@$sFWxZhkZI?~Yh!ApjmhDd6*p@m zw18nonb2^Gr_4XCGW|&5_@-7%TC@WXZMeUw;hG%Xx@~zy4Bm>;VtlQ(SrVhirI*jtNclj1pqg4W9hO$5j40YqYPW8! zdm6|-A{BiBVdy@Q-^BwQXXM7>{AX(1#y{s zW-1;&CXl3@RAdgo^|=ssa6|8Q#HXU80YIXe!py*1aF)b!IVU!ByTqf?QTYw$<_Quh_z31U9v`$9 z<4tWHtBn^UTmm?Bd66rb4)ql+aA*Bz+q$s_5bV2zKzP|#3{l)lP|mG4o%jq6yrXY{ zVG(8m__Q#(=Iaj~t@+}TK=(@fMy!}YnSnJKLHg$r0D&4~++Pq;~IK2Whp zOBr-YCNh7flj|3+P2T_aqy1JNqyTiRw6$B_Akv&+c6l*ia%7RpeVkUvJ5t&;Ai&{K zQ2)`kt=M3AB+bbIPX&qz^Dat<>i}_{r5*w>pxy>`o%&oM1s39FVfie`^v`DXMPO`T z%$hvdB|}B4FnTovv?hw~vReLc9n`OXqM!yAiyC)>I4QcT|LeI$2SyU!w$Bd*&$<*B zGA8V2*D3LOud{{?N3zI{%leTi7Mi#6O)4SSGM$D-88i)8iD*`U5y+sp2;LYfz+3uH z9(K%9PaIJV%!M*er2D$J|9_>PR|v{Ut!KwXXVnxa=W@bC*7?jg3Y<6z$>M%+D}dwW zO%8D8!ssn;(c8`T%AQPU82XuvPl&S; zqD2%A*w7J1h_f;ncBR=uCA;SYj;^ zPh8IR%UOQe@0Y!P*&`517}C6S4E`s;f?3Q*TCi4FlzEFiXXwf!$m7F$Ocazq zlXJt)TFT>>ynOw_$Tp8(+gO~nq{M$G;?RlE?SF`H$a+$apsdWU8g2_urNeUJ=vP8H z_y#ff$vR+|@tEi`lK^N~0SV^J_bn1au7k?>O2_8p@tfAmS*9v=lxN=_>Eo7dczkXG zk+;#=vW?Jc1MiGO30RPzUT7sXQRf~Ahh0cp7whx6*!eNWhSlIKL16Q3E9Cyv zDR`*CDFzrwcvpcn z2Ul@5dIxQBCfQq#y3yEY^u#YitP)d*Nepwind!(jOozSb36t2lVrY?#qJ=qdvXMD6RO6tF z2s-4zzJ*2@$wF;74VYW$)Cl;%1Rbw*vIF+6ogB5G`$Y_(RxeF1azrhMg9Cgim*XrZ zo}cdl^%lWEdyjRd=Z4YVC6I@0uik~wT{$z;Cz7k<;_@<&ud@hF^=QI|NggiFHn-{~ zKm)qMc^;P1bNgD@{@mCR;q5fM>-?CdWLVTtwXr+JRYj4+#YGCX`TXdon51qno`Y%|hDUj9I$a8dn|w&#q8 zT|bO|Iv$qwYsRY6>pXtmD0jT3+;pBJi~v^S@rmOICMQ^E`A8?9u0`S~B~RO)_DK_t z)zqM$w(YZ$N5~mI1nT4b5^i+Bj8VPl8M8*G{Q?pWX;CI&#>xR5oT_qW&H=wa={hoWtU|O6BM!rd$j}90lp=cR9i0$HO}ggFGyG+qvn&_3PkpYGu@$JQOMAppGk(?+TqNj7~Dr{ohlR`DHc zvuasDf2TK@fR3k0S!jDxG34sSSXT-2Ngjx9R*?hL1 zp+`_!riaXS+F2-I7pIi2rCZI|MV4pTesT78GO@YC@p!5DoM}AU_{bEsZ92|I$#CNX z&x2O@Y?gluOruV~VSX!^wsxU$@jai5Y`$FZP}wrRi~;QgNaQzxqRRMkuDf6*5^`cf zx|Z%aBxND<9d`1E+;RGAOcRI&{A7o7VEGY)<#arZN#&{yp}L44C3|%jjW&;x<3Kc} z6ht^o>8bfJ^RR#Nc%Pa;YO)^>7JZtW-s8z!SE4ojZwIG9onXfl7v4dC|DC zI;)x5$<90DG7#X|#X5n+)+fIIMC$K4ePR>%Iv-GcxJ6Z8FQ&kcGJYPcU!*&@PTQS0 zJ?;Zw+2t$e4;!>%oEIgcSR`-yb2(s2mI$zdDLiL$4<5-zdcbhY$Pv2`4=hk}()glr z@v;s-Gys82KkaaO25r0sxHVcAQOLnz3HQSdXQ;k2Yfk0adXLPKRd+2k4|xg6*#u4xH5{c%M<=@ds}D z^kWZP$5qwxTzHa>(9+QzhBW&(00RrfQ1)K~i!g-6DzNx+f<>sO{Rx1=7UCWS6hN?J zw9Mx8Mj6q$UeYCQ0>^ibs)-UlDcix$wz_BP$j*)G$bzdQBPDH}O6x0IHz4NFwmYO` z93L-1YggdBv%5w+n+-d=YqYbboGQs$t0{B!GB`7BHk5~o7kHIje!$rAZ=3Qm*a_j$ z1I{qtS-wqt$`)DRBphx{`6Vn9R$WGD1qu4EMh~H3Vhb#C#BVuzB$n`4xB*B^cg})# zZutNG@@8nZD)1-J)$F(6AoD>(6g}yZG3bzPtkZJYD zWd3mKEas1qKC_@FUKB;!^zjM9=f1NX9cg&=n&m-Y0Va-L!TCd+O^)d%_rh;I%%IV4 zhVF$)YEk{uCJ9luWbK=VX6oBT>eO`Isf^W0^WmU8N%i4a`arGDA7!Q0?0VX&v@YlI z&1!TAX+aA0&k~ObVAP3 zbYp6W{jaGZQ4v_fyDdOs$O9~Zi)3kAxfH#MZ{S<|8On^1{i zJ|S2SD|vjdenk4%dlCpBttSfW=`CP=Okg)yud8B*^}}kYhV`+gp+|+aqu--}IqmHd zRtnON7=oF-s3t|@TJ@Av7miFd#K>d$wnhFkVDF54oC_6Xg+!qOcAM!)usK%`*nU&f zD#gH@XD~wE3TNkxYJZy1-J{V$wbDN}qU;v)Z>aeoT+ab?AvJs=)iBgDXhl??1~^Tb z4LHdGdg3MUn;8{qAb`Kc2S3vc9hT z!{B-QUsMFo^Vv8O^7yILb!n(RcpEa-owx!AonkuwXN)vj`b&98&MCprAox)Dmmi@Gd4})x|WT(>dPZBA7+$(kolVr_F&2%Fa~x4 zQoZ1$t%|Y|+2ZpHEtnr`I-Y>dK|C9QUCOYM`1jl~i4Soqz3gQ>p}zm_-!tpVC5LcI zag#Nd5DJPgY=9GL2Xr}7=NpPT{ayHFUNscS7;p)^w^}fFfHX@v{kLED-fD69gdKtD z7nzps6y-6l+jZsfT_U=N)6DRFjh0O#STt%R)u3OrklNEPYWH8dTtlsqRt}|B*4wpH zx~{#Ev5cedXqlW7L-Ff|FZ2j3r|hvK`Bw6Sd<|={CmH+rc$$_S4yQp6Jp_+edY~Ct zdu{0fRolG9+lRtKs!rl(Y2e4@WsgHv+|drodtCpu1lyQT*suQ)d?sps$1}OUev<2Xda6 zW2qwA7BL3xgBb0Sb_A8Ss;}0Z-~i z9h=M_MSLp28*WC(5(hzOJq<0SRiY&5KCQCZA>4wik|$0IUS>)l^30Z}QRb6cx#9d! ztG-i`&W_LZj2ZTq4{Um=fgfXX1$lX4C@rQgEFf2P4RV0`87AFKF?@<@PGGj%`xQ#! zw;$z}ctsU>K;aJ~VJiy!UbQ8>{%v_aaW#$AF(${fq{C_`a>9ZdLq~I|Y%Phw5*11u zJHe1P-*|FUa)pN_e+b5AGEz}m*Y-oPWrBom7YMwx)O!VTgBhN%a2#<%^tE$t9@5+WRV6qsK5r0%CNLhnO2y(%)f?TzyH^W&5j^oV&y?8TBA7ndnvt zwxep}#U1)W#HfU$!V}VrcJi#_>mXW2CiNI!vVKc?g!%&&hrB5+ZAah}T6HtjRDvS3 z<)4LOWf|b2q<|JHK}k9Zy!a@>BLXMSS;FD|85vcmmAXF)UCFi3wXry8S@i$0$R}BI z7ZkyBKGk{x*vNW1XG#!6I!!opNA2X10RRPl;Xaqn!Y?SC5U(o-%7E$rQvplhz^H=tOdoIn6Zitq z^t8|ZSB9yq0ps=*sBnAv3NR$QBl%8vHzoYHbqV#GACNN_`%Z(QN_DX!%$$0u0bn#W z@W~|==_zQsMc#iahCo#?n~R%72yOFiIKk&hF+ji zn>OuJHT;Wqt>{ym{+T$<{s+!Y?{kLi_!UBiGIo^`R3cUZBLQ;TzZP%(!l88@qMpYwZSDI zR^U4IdiGq{rrF%dd!0LF9_;e%a?o5ngZ7>>T+a>cR388ApvCLbn~d4J>T+%)B=^A}S3C>SP6# zk~PqaF{rg_HK+l4iSNEHc8ZGaGH5)B{#E2bv;YMBv8kdtv5LWf`9GBed?)cQaKERc z$v8DyWa~+TAQ?Fsg4J(8p3^$XRN%6UZp0t-+!p)9wT6l6;x^!)D+7QU%(R0SXSqNpAB+uA= z3I3haL}Q&W2&acrR~Sf6A5InXJT>g0A(s0oe8~zw=9!w6!Jcr^;K}szq_Bf=NgfzR z^};H72cI+q3@2vv!YN_(K+J!M)QKmD%I;1ghowIY)b7u08Z!jYyIx>2m|NU2_vlB3 zkIWXPByNm6{>aH=NE;t}RNA1k{RH^1qJf?&<*5^%TmxanfH2cB;IGoB));8K1N0fV zxEcU~CzGJ8zvZ~*>T#(iK?Mq*lK|?3If))EBk1@DA*RjsTznlqOP^?AeJ(;-i`VCx zYK4m|Nv&Hli!n`IjjJ61_8kiVv4hW~tc9k@Z`gzK~5>+n- zZUeWlus#b8eWion6?Ortuz1j`)|f-7AL47TW?k(hy_k!y;C7%}mb%tL7EZKDI5Xd` zkc@3sa#^ppS;?T=`LIJJoh7u2OY1cFNGw66L+GR~6KkRFcDc~io($*3Fn3<|5`<+~ zU=je$oM>B&6tDv#+L`8ZMxM1A(!A6ZTT6)2NuZVxLm&2|NeHb(VQR4HKsaE|5~?{` zZ$OJ#|Gl}1O2b691(dJQN>Mc-&QmDF{LJ#OJ@G&{A_NKCGc|HzjiVotUu=sBy#ws- zGo=tkOwj{nO4Oy2p2Um`Et}j02=)<*B$4t2rUQe#{2MK%`F=Fi9lq1@2U|9|3q2$x z8mDhGr^Sx%4eWnBCmNA%Dia2sL7P))_CFk`CfOr%AoR#<&wE>o!YcDF%J*D%kw5&xP$$9?c4*Yg_d`jA#Fzxa~$CS`6fCJgrkmS| ztYy-j;LhqRbErrn-KS~w?t$A1F+Nvdv$M4Q@wr@3Z@LFvRY`mgpCO!>g?%Cl{@SJ= zHxr5qACruVW1RU)Wxg&h&z42s?3bP*Q{@Olj!GeV&mo2M5O-7Rj0Dc-))rO^^4~s7F4|Revf`Qc= zx(6Gy@GT`M_hm)Jb4-DVtDvJv5<6N~Zz3tW3Z@iL8+C0+yP#Ro~FKrJ@SBU`i<>4)-OO9|1zN3>2WlqEBml-^+% zm@e&3OkH@lx?m)-GmS+q&W|!<={N+1Bv_8Ir&jBg@RXAB__J&-hh z>DMe@9~|t^T%z6kgMtTu1;Ci&$Iw=gZ*v?e|4s)t1Q>w%amrds7vzjZ5+RV- z1k#*K-;Lp5d?QXhJEdL$YNn+!{}MSiRKOA@!3|8^rr^}bXPjbtUMAZJ@qj9#(2+Mw zr9Lm~@hzAnTe;pOL)9Cmql@pFG!6L`B#-$yA;r@xeIwok<(YY=$m%PoWFKnZWIX*6 zvO=AgJ=0)s_zuIv`tio(B~xP(1XCVH?vWtce>Q>$*0pDAplVcIPwi^NX0DteE$h)L zXG$6UXtn2M&l(v;Q`_H~)9f*-+fW&(=bfV+o&IfMn7*WpI6+czWF{`S^RoXq?7YLp z2JoY9>`lg{E8`Le-N&yBxvfWERc{a`cAD^H`~p8aXjoIy6*_LRcL!|bqxp+aj$|vs z+|GlMOopB3=lF>tCsa@I3fOOVC~5XBxWZVmF;r9&6iHeXYr0;-00B!{GaMp&)04aP3O6$kJb_OI3OLWXI;2pk_&;4bhcrZM0q*hTg zw-;_=ZfbP{WBc|KVr&eYkS2}wiSaMfYA0cP=9zVWyXIB@>#5mcPqa=tV?#ID*$pM3 zsv5dx2CvNd>ZLrDL(grRRfFft{)UM|GNAZ2ECa2INH)W0_UvOhl6N8J5Q6`8tzvt` zzq5H?iU|pq9Qnk~r%_`%92(B)S6wa)_QR?6onaC$Kr>t8b(fvY_0kS&mngb+(`+>| zz{L<=(D;{Lub<-1OlUTKd?k`yx-35_CgpelAB1ZeUmjpl1NB;EA^`0&x=e^9ym^Dr zT9LO=d2xvUAg+N^xPXqT76f;L+hq4cKx?kL;W6gF!L*_LvbnPOIgVlc$r;NR04J6{ zs=1=gGLhJcvelT-wYXoTRK}^aF2;Nk3C;#}UApv+$*o10W)(|75s=V!8Cfr62Fv(O zuFG84DSLt%k?TPJ^DH@!dd82tHOi0ySna|&DAbL69g)&gU`a*3MDH~0`KqfEZ@B2C zUw+q-Z`^nLQ=er!X&CR*D^meQ?kq|iNO6bM+GE^tuLN^CS7;8E0V@vA_S3ZjpcR8w zC#-|om`0^p9(jNiIH7(pe{e9b z?l1#W0F0r-xaqu`3ARAIS)L2ZpePsICAgA11xD))Uvz>4EXKJ=9U3^VgTwYN20Tlb zuveSqm^3ww3IZZKKkVL{{oLS5d|2XFKmqtUF2bW- zTph1=8=jrOZ*7}d;QAL_PYoxte6XQU!Z-`|uBPNKtVB@iI0!}kb4FZvEafhdQ#X{) zMiL@0(;~o7EEw_g+Z-z88d|D_s`c7=Guxm_QPBD0A8uxSPi z47-S82LNP_aRXWBB(CS2lh`2iK_&eN%PPmaUm1O+nLHuAdd}!8NV02sRKgwkvtX4F zx(xzcn6CDilY-vt!7Y&&nYlgWhcLJUNaqS5p-Fvr*lGBcoD*&UwL4Gn5B!>0G-u<~ z(Aju`X9GAPEFZvUwkAY!S&j2Xd}e{_q#|tUF>Yop(jh4v*I)U!L->Y0a+E+6nkw++ z=Y=bKv;P2l+8zI!hY!O&<1xR*$s3*o(0A|4dMfu!{dpDyfFem$GmAm+F2j=YR`GLH zv!STw8d_`@;$!)#NQ5rM9$0V)Vjx`YGV`ncTCJn4=8r_=P4 zXzq5u9OeNUz=F=o-*!d#KOj6LSeL@dc0F11DsE{ARY5Wm>uzifzRi=F$Ivo$&eG33cauGF6Kbu^d6%tu%lGLVM|As`I zIg@9M61k7@m#Ue``?oNqdz2=dZW96`s)`whY@ z(wdh|+(#?0`0~c2dep@{I>88iN-GQo5Q;GhX{>BgIXkCb;k$a5ko9Pmu=Va1wh9|a zy9kS7HccEZ1BOyh_CZUn08t-G%p#rwQ^t%V>*P}Pm}17q)B27{ z`bE6sD#@Cl#^Vjqxdzh%Q-DGkfIZL)Jq=ctD$E7DvGvjUPyzy#DF&m^kC{e zcC;i28#AL;j0}?Nbx;c(A*ZDQuUAgz}G$x1wam`%dZsAEh@znQ4&4ar?l z8#r!PY*V0{jo%r81T2&wA!CUkp<>ba?ZFK=h@g!W*varrv-J`y2z7-n2z;m63weg#_w3iHknr2l4} zJX6i~y7brS*Ti5KD_IJx@9l$Q%1vO4M6jR{-wyiBP8}b6Bx(QXNIFUOJ^oYhz~Q4_ zZ~Z@}f_qH*@f8Tq6WpEDk9Y8ctfIa8}0^f!Pzt z^^<4*+pOmvkVHYWGhGYhF-SenKg%n`Z(h+wp%i;*4ezy+6-<{xfZIrjgqnjAbpqQ1 zLtjr$F!w51IPInQi#~;oaz+XcETm=U*pQEnKD;SCX5atKeTiF=H2@G7{=7WN1` z-GU6^Jv=^319Yc)z4%~jPf>fU=;T~v)n#qf*Idf}TUr?}Sd8hV7w%{dV*xdSecZ4| zcu#VB(;Wsu*vmw6d5C_JgA*>v7xKFW7Sw@R7T^7MhcJm=u4Ohe&Ye++)9W?W4^&+t zrc(G*ezMlX3K{KE!H?AWr-&)zmATs_1{Km0p9+V2Dp^ml8_6~?&HKcNGIEc7P;6Gm zNc31HOy`#>NKt+!29>3aiJsDgRZomK-sbT;x&85K6~CtL<%;cLCC@7rk5lK~VxxP7 zMyD0F(9Ogz<7NZ1)Fz*eaq@$z#7&C~L8s1P+ZO;`Ub z6T{Pe9_bvY%6b~L3j6U6Qi>1nPuF`p5VB0@{G|zLkj%C})FIe!T=$_7pc4 zC>iQ574&~O-Cv{!mzB4w1!?SFzFc!xLm5BQsc-e<0rEakj31__?AWNWK+2ulNvq$qc+V%@EZs_hW}_RCka`*@f8Ct7|{9oK2!tfE2-Rq{C%W2Kw9y~sL1r}%X#TyV5%;nJ|HMf_l4 zriE)iop@9Gr!=zBfhYp}F$R+H5#ep^fsA(iDD-c7@^L%PqNR15CAhGyuF6qCT_?oD z0#eHOapt5`zE5KZ0T~&Fjm@~g#~j~9K=||(I>k?_UJ>tSuMet)sa0w{{*h6p^Gy4G z54cNVFz0$*1p!SX(F66!%P*+{juLJ4%^)i5AL$ZaW5Wko{j*xK2Y2e(pZDJI_jbTh z#9Qs}UG~=jgq)nA)3O}zWti9}AMcc3P}|GuDWiMH7)3`*cHahzy{Ag2_g>&UyRfhs(h4Kwou72(!6yLhYLe^d9jYDBQ92-M&%_t)HoC%oVAgs(@QuveLJ zlH-8mO!MTB=hWRj1%ce+JpRABaGkO2S%V)te;_Un(LnN&G!h+4zZI$l6C}Z9{ayMR z?OOOp85UkiO)04`4&Vs|xpc6=+~|MvU;#J=!`ZP^M`end1K+U{^i=B>zI%TMPqU{J zhs9?G9RYkk9wDIPt-o$Fl-EdG-Y-<(K`7&BQO(9z&tE~S^c2nRa+anw3%s5sVW#ov7AsK<5FeCR zSU?qkwa>KGUqQTFE+MiP9=XVgw;Gf7g{qM3CZ;0V&Um8f5Bi3#SsZ=PlfGL~Kvnvx zfdt55uz0&*0cscufj)BtwLEBCf}%z{>T}3~LyHg>=yX~F?>f>~5==N-vgQM?z%pUf z6PTt(LAb-1IK_WCmjC+SA3}F=9ukVDK}qX}h2@b{rkXSc2wjMGg29KkJ#e ze0`Z;9*Q&bqeXo6va%Odi&s=T0Gx2~QDuMvNYdx=-a@9iCbCrn$|tTFma%q%D1+Vf zy@qZx2uY%(L2Lx~ih~>8Is|to>=pseCCboXs8uI$aZnJ)&cMV47V<2FIVtfyGLYzl z6Eqk`YGJPqCxT3gGfVfx$Vzp=&722iSEn|@^G?*Kz)&$4msKZG-?GSQmPMBxkW5+= zk{(B}sxVwdP@%KxB$YcM5D3~Xx16FdR3zP=7-mIabKwMCcG~c`>&M?flw|R~zvHja zIK&%T4;F|<1#=$6cTf#S4=x}o1}8Hv1jk^NevQjc0!6N@2(LSZp>cTvAhZ)Bvb(29#{2-Fd|tk7vCX$HdPxI+1|8O3P;MQwRXJ`V zL)00kyRaHosoF|rMw2QYj1Y(hK6%5t9sI89WwmL+r~SRSqQ;X-sHU^5=Cj0Ev5ti2 zT;_a~9^^=$E@35@LFfb}S9eBPRU?pt#%FBVWvlAGs8Y6N zBOSK0`gII2Z+sMH_L-6B?Os;R^3@-T;09yq3e4bxcx?RfT>P+J`>&voTKsM*qB)>p z(z=W8d)|=wg~UmFB!>pdJ7#onmXIuUL=F@18U)`_cP$O2Nd~@gIAhJH&2XAW8;64d zmHORFSM}ATNQ=d-wkvx{G#$-fny zcx|akiE*9?WA*p`0+kW9toaLb#z}RH-Zo!;Kov0=o7m(JI-5KTuJuFwn{zg)4mf@NkTE4^ zw6yLu{*X)2>TJ;%>KhRskSQmWn3j1?{P35B{WiJrLEVS5Tx5uOWtUg8D+yI#=9pK+ z(S_NS!MU-BR*jYU;g!L8h>3H;dB#4A3q#$SVm0BhhE!}dl_E9MkDnX18O~W5oMiS1 zoF7+9e22Yzzx8Cs=u97R{xv*clr0$dHP%7UzZ@3M6^zb;=-z+tOjji&-T27p-L+5Z zzpNr8GLhACy6z0Krux-CN4UkJ5yP^IG~D7uaf=hZp>U$e>-?1g8iBaQ`OYn5Re0Y{ z6lVJ^y0-t{>iS~c-(lCAM;p7oqv`t2)YnD&wL=X!XILER`VQ;5MyDuKLHDxC6rttR z^<{Pa#1)nvEl>W5&KZVaHE_0x(pe`sJ|Fk5p@Y;k$q%^1vhxLgK&?BQ9}p{KFI?pf zv}!5x=EF%!tUDjhRbpME)w8(3O!kXb4K?(^akztbs{CvPV^?|lXc?^Z{|$z z$9}b@9?(1uawq11U7(&#aQOl4V72D4dgDJkcWT%Khwz%72oPbRs1_1q@X&@TMG9_R zdI48aB;Lu@DTTrw>7wEUJi zNM@}2-tS#XV@Ie_EB#_hO)Qkh8{yxyL5Aosu5JKps;nVFNet!rc(~awMb}G7rmABKcos6C-91xwV9Le=(vN@Ft5H_|qFS5X$f;v#X%jI^-i-If7SeH@7r#6ik!%m?h06rg%?st?1!V_7;=*n29Lu zG-Z65^6wB=u!i?s8`oKdo4eT3fhdw?&ajD6c-u@yLFG%piM4jclVQOev}u)YrTUSo z-76Z$5CBlh)LPn#mGG5fjQx?kEj%+f4IIlt)A%DswT+nlR}0<6#b&jn<^}8&AJT}0 z?d5Cr+Ribd9oGcIHps-bA`TCf@1O-L?L)5dA#6UZ=G z@N@}_=KLanyZHgVqyXilQE4C*RMo;Vg{8A?AjX4$wRH>{B+%oGoR81Qp9a+9 zefAT-`sD{D)Dpv>)0kU<_c-*GPFC~6w4r%)jc;gTfNazuP-VR5)z1?s%J{K#1N;dC zY2^I(&SvT?$zjf1(?+w7H3`N1#}IL@>vD#~$tEgdXx3C44DelX@=DY=;%lawZ6h(b zjIWovn+Sk7-;u&o&6gh&CHc2S*ak5sMW1P4A}D%MRWNq93~FOR6ut40pKWH-$5)qC zc)*gn4@wQ{d;8L@fPBOX(2DvB=tEHvyj9@~&&div=HP@{86Z`)nQhEZ5-(}%CK*}(meJOV7o1sN)3#TCMaJ7+>*TP)+`>Kv_ zHn;#3(MY$%5@F(Y#84^IpR`p-7wPiG8%Pl)U7n-7q|2AaD7gUg41&8>{bM=#OHv7z zSp%zksA`*&=*aTYI&9*B;y~43btPh={F-E>CQbh_N`@m7^tXq%9q#)fKg*$BY===5g@>l)Ip2|cZ|;J zTrzkTBSWXp$}dYgf(?w=2g3ji2o^9dvZi(5|8#j|`S{X-a=#&d4BsTh70AmrWsXey z1I@G;kd4q_g`2yJpA~L5cV*mRS|rb(K_Nh+G)n+WBVc=rW|Z1kc@ZYDDk@B>S6zhM z^f@JvwSB7^g1cAgA-lhYv6jSYqQX6{XkH&XEX{i)aO(yBSGp8tXUFm^%W^tGXht*1 z?51XNZNPjmO+jfPicQOggS3pLIz*0~QeP1S2V+|oqiO(;cS-Q38Hcy&WJ*><4~4Qq zI_+CBxS^(KhUWC4F7}J`MrM?1sE%ex5UD5BkUC@9gCU}+({c`PU0MmREF^>197rq$ zWD2+!APy;=Xji&w+SqWl1elOX*atRfo%w+}4IW3%ePnugiVJLZJkb?%d^BgnJS(P3 zyj8^anAxLkw*Zy5hYOG*cqA9u;VBgNvsJ)fzRG;e?0Dy~GRtN(nbvyIWD! zMb9*$0Pc#52NTvrf3}-tMQ%u{&?2w+GT$&i1?%x=Q}OhaDj;ozw)DL5v$p$CL2GOb z(D4{`kQ7as?#c%LrD~FD*qtI%g4>+SIMC5T0|1S;eD%<}qLn<-MVx^C(gEn?C5kK3 z#>Q+6(twA%c&VVZ^yYRS4o)D<3gC!kXjD zN6ah`YQ+y6`Vq%UlfKNJgZUq=1fef1@<~-2hYp#!MAij$(LLi8p?Y?8>e<4cd~bQLAyn9$?a{US@BBLNdXrH~!ic5<_HE zaCGAdh8`8)T*RxcIH(*E++_p6W9B#q?_v+@kB6*&_qkVC1e{kWWgZcRLm5D00_$Um zSpAZ1s>OPE$$FRjyOOpk90Nd0K0oN9Kx6cOpAo~v%%>y5)s*v!RaP0N?7rco4IL@W zaE0(_$MkZbpLF|QkNB8UGTIFBr-z8ots}lnErqu=h%dzXo^d}ig`uyA?MEX5DRG89 z;MWKdD7qB|#j(e%+y3#0z-IN%TtI4w0U~gK4@ux&iMC~-(kLDNn?zv4-Ow>?YauS7 zRSn{To>7RKYe>nzL*^IC zxTqSZeb>OJ($&JCH#`dCjX2<|%S>-~RhvN%ilmL(m+A3{2JU(+i~1T*2G$$RSxv?U zlkzWr8G549#&OIC@oB!2Fy5>rh!-#!mJEik-%1ow7N19=7yhF9O68V*G-Yj6#>A$} zf0A@ih%8bMU@FLt8{CAZX{j!j#|1S!!D-k6rMO!gJk#l=NqH~VJlY5zsmKloPL3iO zu;1I4>G247Bx^Y#S4A0K-S}n6XW{KCR1RZm1?3jlU{Co{#c=ve7i}+9Xv!##-Wac8 z(M{?ow}-ejHF8o*o1Qs`0HL#st59dqcz%TojNnQx_|cye;N*`STGyBCZB90X=71n* zm#_jIeoDBr@jm^;Pf7M=WB+Ow>(R?f7K}x?ZNAoq`>iL)Pmnh9c7=Qm#T|6!D$4n@FWuiT?JN2Tyy{H6Zu^2 z3Su+FOe%o&i=`|hSapg|*}?K=LE$jea)$huoGT9vq+Q{r#>Rj7F4B>;Kk+p_51keM z3C4ZOZW$3N>EA`fcP&*vIgvgh^J6r3DatQGZ;ULv6PfEJv zOwO-G>BJnwi2IQ~I~SNHfNxR0%{j5d>G+}1_U5(-!4 zx6}R#^_uWv6@uuS>F~)hXyJysy^f-kn~3jS>(V#AnnaP1;w)k87h2e00<2E67nj~n z&>#Es>QzqliFj6aNv8nL4p|AqB9Xg<`}y9e|7 z-=olrV3-G|DI1WfJ9H~SBjw=KtLeD@wL?Q{P}kM0{Mfbu%PRxL4YIlW0iBq<*CG=X zR%){9_GOvX`dh79jV$z*+NZVIQ6Za&yUh1r-yK=EoJ=n!hf9;}6(EcU9f2($Qx>V4 zr8T=?uLxSxte7_oPZPr|UnXahPm0(btDKwdV3nMxGB?<)j@@j#17Xob)YS>w4QQr) zH66b!7izr;t*s-eBOM@+rJUC!{->aV&KlJM7`DFP#3e0SgW9ucG zD*-Xhihzhbju`0MFte;y?py4jGBEGXl2=KuD)E|0j>m7Zr&jh3)RqgIsR4J_{S?RI0_<*Y5 zSDiRofjGk~M&{5>Mcr|zx)eGM731%VpV8+y8T+$Ekr(~=kbcL{S*3EKt_&uGtAFmr zB+Y1@ecbUuE7EB^6y7ds1-@v-9~fTLojm4+lP?3yST7R2DEyWkD$KNKRJNKJ!I-U# z>A2{6w!8hC#S9W|+f)`c+c1xmk{;+=<0O^RNO32AN;*GNvXf1@99gboxPm$efNgqz{ccpyn(Qcjqg&u z0#APmLO|QbtETHn^$V-rtGgSS)CqH^F zzCl%T+c-d>l$+Ykki$nj&o>}Ri?Ttm)Iqoi)&8acQK9Nu9L^J&X9h{n%ImxWr&-vD zfg!<_>6cTQxuaLfC6PwGzAgu~-T*2ij%u>JPbebCCpBBN;PLxNlE@bRgf=3YYs;s< z6Mes#s?@Rrf!8g3ev~@oM2~l~-xB<|%fxve+2G`z7fsW{rz>^0VZ~?sXl<59V_pE&uoE~m82RS!*}f*sn493&FK^y57h`OeDv*k-Nm__=xs3EkOF(H0gT za@f1j#<*_Jdou+N=VB`g6L|A2QQ*-*!{D=e@Zi9pXbqgex~&I3u7L}G=}Ir2Yj`rw zT}SCu%m98=Fz}U{HKe1{p8wvoXQI6|BW-f11?c1`EpV#IkQOZ3%b8XA&6+pqP_8G+ zn7|ZJ1Cs@JedgTCw0^b;vTQGVU z7|mnxXrm-SOtkj!AdCOTwo8NxM#2#-SPH(w=2-+)e z6m8;0PolX0vM!6)0y`T+zF4~$ygoH;ib5W;(~2&U7Qyb=CMv%L&lb*MVcYI@pM#LM zyVY|z9g1*Y<1huuGQhPw2oa?pBY?GHzklttj%7$R4H0rjPfSk=IV61Vb}pZE$jmeS zVyzcTGSck5WRJL4wQ~Pa?muexIv-1kDvqUJ4-qviRW%f{)HQhF*#gEyedH4g&4Yv` zfPv~T{}NktlcGyk9s1lPNU*9v=h}?XDrJlGm8123=CSLg$fMP(`HEVDdYBdXUU`G& zZP-z9Zw*IBg84x`URh;2^uwv@O7^me1)&|oWlWn#P=3V8Os>$p|Eu7G7N#8aSR;0* zkp>cLT4T3p2?N;GY)8Wqqc1XcDi|J2wnkafpU}7;6D26yuW>EtTulT;%0G$GK$s9h zMK)^D|IGs3kEB2yRci=j!&$1##xqDPg`6bmssK7ktF|XgDg+1%R3sTK zAdq@E)k}^B`>NtEs*HY+Ku}RpNLHD|$Ocu#^J%`f8>VR5Uu)ld|M%we>DoTVYuj1% zSU!M5t4!>4aiRWK6{J=ZC)G69yv!;d_aYR6!_g;hgcRx$YcFJs;#vHi`=my8bfwbx zKO`7D9W7<-&|s3dW%0IDjH`;>_>W%9w9uqvcxzw;wiL)f+l|MO;;$8!I9FIUVZy-{q-NAq+$RH8H%kcDqBGVDOAdRS0O&Y(0=j46ImEtM}6 z6Vxo@+JoTm&tQ)z`}MH5W_JV0r^6OhtmbtrEf}`c8FTPNx@+K$G$gJX(%+{cb^A=B zw7zHC$%ce6DM53BNb1!MpD=3G=BmeAxr?ljFWfh5mQWJuQjB((gF+DzJ;}V45nB$IubmAq^vVN;w4_FRYlYJlBMEr%|QkKn2hX6-EFO| zYVyHPK)}+R;`bgxeNlCkLZftjQqO@DW#iwg`^bDXfy2&(PlFhL)PUw1OtKn_b%-sJ znC@`dB^u*Pu?6exMz+wfH?98Bi<*xy60}DgJqTC^yhWSuXtjyD#pKG9&Uj655<{X* zDDq^xdK9|-V;%D}2V|vbn}DG^kojNmufsoFOev=+>TOaWXq<8~P$U;vby|V}!QL~i zKpo?2IRUx#V}_nUw$n+{6- zJQmVSGIhPa#eE8SFYPl(|L1i#Lv!4OrqTCEeBOp#f#>@7#fcy;-ZHzS!@d|lCaKC# zW{(4R{Yn?0EnJ1t_1fig-=|rM#DDbbchuY$ZSI#X1=m%xoGmaRu!lW7-PY_u>9Eq~ zGhguo#NbP!VYm3tVkcpg4yXE3aveZ_nbJyrjC`fH&xe4?8Z(R{xK(tkd?gCBX^t(l~wP?62pz_V?woVjm;a?u3Hn;A+(z2E#20lcB22klDAX9 z0!f`}PP_va%;Sg~fM@wYGYB-bhAd-T!eh?P+{d4@cCgio#LC}o@tVDK8@X2Gy34UDgHH&yyZ^~XCN8!t1D$Ek_yR1C$W{L2QNPMXzYY$Q z4;cz^32t$TqMkFQYs)~lv?!~s{6U&K|9YK7 zmN_dZ9V3!*mSwH4a!y8L?7b^RL($X3FbTMQR>L-uA^|lwPx1_|(uPEOH_e=}c_0#n zF@Rn;q$V$EB}GSLP-7Oxc4>JWiiH_#Yit~xGJ3oYO9J7IV~|W|l3Kny60h=NQ&8>t zZz$=%ID?rPg-mCCNLY<~t>q<&d#hynIqZd6AeuKAr8Kt85*Z{)s6bB=jp4kkI?2)Y5xD>wR`p^dN6%>LD{iIc`8FZkJ)L5)7kjjWZe%1;!SPI5mB5h-At6fRh7GkoL&yAiw8X1^PrFI_20fTj`elScYdE=Z zVG|64qEk_&XqRHrCBqCLSQGamm}dE?wEj(&@8fW1>Vc+-(Nxnj*3>Ws)|E{4e@xmr zkd=6z zyd~GkAcDAng45#z+e(i7L&hfNOk+!o?hAT-k40`YoPBKL!|{M(pjulcR=oWBke)>2 z4^L%N!iSvs;6z{pGxn!Xg+ekJ3W*sDI~;ow2CEDQkrn6WrvDv$Is-+a^FvM|c6M4s z(UujyxWNrOLI@{yG>vZQQU($Q$fHg22skEDz32!QAr++& z=cc?gL$CAca^q+#oZc7AG8C8~%?zhJZ`KRXn}N&7lV{2rpXZJ!n_(bm z_tj7pq)dDV<192hRrQiT_<%qleLE@c0z0>RaQB-O@Mkk0^P>y#1xq?GN!(tVh{0Ih z(#&a&)Up{#nyTbr8iM+kQU`_D1P0XLUgM}nt`-Yu;BiRD8F?w>mSU)iZb$zfgG!9a zl?Ykc*poKa8lB+@n}*gl=}g2YRh}CRHh^B8;4uWp$$U>BHsNAWJPw!v&e~wQU zK;q|7-Cwd9_#1XL5pS*jPq#5$7#|XJBpA83B&j=HYZ=lXW7|vXr8FI_nQR40en7`~ zOV6t9a6CZTP8T_edfI**i%Zydu_Q_hvcd;B<8-d2Cz{cCkM2#c!azCKanteUdQGA2 z$8~)YV*+1DuM{vd#J7Lk0`bETP0c2}H>T92>oiOHUz28|xuaWZiRWv@DhR0S`E>@L757#azg`=wdOwt;IY#a7;Qq7Lra9({rv16IR#D&gXKGEN z?0!hqcCbeG1se}6kTM>`M*gZi=ID8q6zi=yIjuxB>2+SD#&!A=b?F{`4+S_)`1ZBI z=Y?LkE+ALAhO6Nf((aP%Q7hoGhObdozzzIKskWXo7 z7g5={kh?xoGs>J{^KzR+&s@Gu!cJEQWhf40dkwx;VyAo#-BO@s*Hbma5Mg@cPC`4E z@R3+^&b0v>nJkQ(0b1f-fM&uDO|GJUtn!b5ROgf--p zNT<{Swqd)QF${i3RO=C_DC|3e3(Pp_54lO6-+cZn(6Z+QC7&=UuIcnb$rBPL-4O;?9q$1%IMxu&v z4@hcROv*clV_wWY_RzGfv<>#q^!uNg7@gg~J=aUq@t({qW0O<^`|1ICJuq1qir*4sp>qoIOGOVEsvJt2~L z)!q?83wR7e3uJyGF0r6A-X-l@roq_=+aa8SiDQED0PWJR6RE}PhDhHBdMqHMdrpSM zmix#SIXBn`Q%95KGb2@&GAC>x1|N})S1LNXN1G;=b~@L>Kkg)yjjEUBt&=!m-4jJk zn(Tuag1F>-K@dTYMR?*FYK(&TFY^+vnsCyKOxbYfzt+*!A)CLWrq>OV&Cic&`O@k) zZC62x#snFaT~snNhB%AcwrW;p``eN;7~zPbxhiqEn^2s#$0ZZ1tF%r#&FG z8jQPAO{Gm1U5>Dj@iHBBbt2^GRWrMuDX1@vzj`P0J0WQr<6G7ERvY6}x;|e7vdh%C zSHuYs?$xj`<@H4{^35CC!p~UOfz>?6mHE)658F-8+XEMxA@6iZhPX=?5F4hhfR2>* zEAkZr;Ic{9G(%E%dXy{W8<2#p!7CN%CHgSr)1xjNve@!bNq1=mU=cdw^^Vlqa+D9sr_yiHco5{Xll;6TZ&}QWf#@Oxe(u z%NHwRN}$NfpVU_lWB;*862Ve_^%=KvyALzplebvcM3N<%4;SooV9nJN+&@i!zk*gH zElYpzz|(E_M21-A5?$Fm{5h&WPat*b(%>D^D)Zg9DyMrlUu7tD(^=g#wf{R>6(6y& z9DKA_Fx;CY$nKC*yOb@teFSP2ESi{Aig6<{Mdde;wOm#yeM(lXe9tPLshTV3W4HR~ z(pvoaQidu;({28FT}1Puw~&TFN30NW9dT?9CqkG}5LtEp6^daEgCVTvz(YJ^F?K7! zDqfEa4uBU>6073~q85|m`;n9u4#h(ZGDCY|wDN6vPLV#~hg*^3P1m6$)#2OnobUN% zWTE;t*3*u_sw1BD*6#CVAU7tfVdiM9xC=B7ri@Eg-%yYUe&<^;IpF?|lPwliQ6OWM zeZ+@ehy#_$R$|twVO6S1ikmQG-IOPx*9r&y*JqKcJS{a+nc2|^QP~6{qwB5>UZz!h zH$BwTWG$BBoTg}f)W?sRT#L4t!6t1%{%eC*ZfHwp{t!3_TrH38Egd}b>3lRgz;x&U zrbqPFZZRX4kgBNMCcH>mR$QQik1Hcm?M#tIS!FU}F#u+AFX-LsG<*7NWIn1gC6W2^ zU`w!xw~qS$nmE3W4a+@8@x77xXnyQe`y6j8LkLv`cF}=GP_-62fYH5taHMu#1p+AS zd9dwT@iF(5PG_0rNW#j;+~dHz;_h|K9n%LRR<7dunEOQe zixz3sF?XQZ;lH-v+r>Abw7#ndK4tY?E$ED((dnAaIXCg9aa>JRxN-x+lM{7SFrTh~ z&_qO)Q$Vri2`AMj>6OM2F%9|x_+T9SI==hOR6K@=X~T+E!dHU&HP=LhQ)48g`%VsJ z834nLECVA%IEO(q%RnGvUOF{EH>jmuNB#f+?I1%zn{8~NK)F(lnqK+m2KrRWEg;%g zEeQ0FgEmrzDb)Xz=M;31jS5XhT6iYll8s8oO61a#G{jr+gOU`wr$($H^ShG9d8>c3 zY;8rb3_E4Z5;xeqUCByVR?BaFoFarI?Pl?S_Wx4t=V*0xOrN-wxWnJh!WXQjX;$+{ zey6PbLv}5D8q%y~w{)>otwY7wI7-{sSm2e#l~z$zmTYefX?l zyL{;#r$#*AF7Iyq^jhz=t1B_Fq3&Cob!8xN&HRo14{0v6-;QO#f=0(!@YLBi+9|KS zRi19W!0t=#3i6E0Tdc|PNXu3Gi1dpd0X*Rl>Uk+(J_nHO>?JbyZk6=~@jiIKz{SyU zoS-d9N;urBS(|pWy#?BhOL4Q`csXm%DoZTERO9 zTi;d=p03Yp*rz?g#Q6H{**(+ zrb<_(Ca!c7Y$zXW9d;9t@WIyA#qY`g8m(^%o%&aTwXirX>Zc317JYRKC)m#5$+iue-PK}Mb4gw88g;eHUF{n0irh8^FUAB7a2oMo z3qv=+yHKFyY8^V*dPJ&rxvT9}(IcyBk1F<^D9&>=7AChgH5v|)9no4}!^ua($vvFB zF&yP?IM})g@C@+M zRY}zBM#+>)0)tag(s%EVPQ72@-uJ8bLsjpODK0osT&NlBH|{R<3@+3RE(o#)3RsrB zb1*e?$*7r2t7a}MxXtBZqh=oFW*(+yvS@}G;&EG6l|}c26OYL(tIAST!I9n3B^gwi za}_d5Q)NL_=A+7X;DlkODmz?d#Z^{RWoJ~uI=*l%-=iwKU1g7}>`|4~sFJVc50m!~ zaPDA#f=JJxgl^(%n#Z%5@np&308xJRQYd7c<6bNI}IYcNBMA zj3AoiRxP!>+b!>omiMV-pG)>d$xtOjmkgt%P)XsEB1*{iw^Kb}`O*Wl!`SJyz{jFu z?p>vLhl}ZT$gEVnsGmo^vq- zze6r4hPT(l+Z)5XKqVKr7dA$D!P^h|v>q7SolQGilP{l(R4_(X{F9U@t#z#fVFcP&P)JxX@2Q43T%Lk+7 zN2=tJE_q~>JW3^xa>=8jdZi!XLDy*`Rr zsrcb8ez=Pv)JFn-6<_4yi(Cw$9t8X z_lOwYA(b3*$)PBDj7lEklE*~Jl`6T?C09ntRVum4C09ksVU-+q$>AuuS|wMz`2hmvmN?OO9vp(QNa!R`G3X=zchGzg;?cyWIT@G~4Y=fXfzG z^mvx971!$75x(zPD@uKTEYEMvk34OyeD!DF{PHe0+wgFCt@t;3cpZDztOsbsd7eL( zjIQ|+mb3h^dHZR%=8vV#Ouc08C37$3OJ4B%FPK~_uBR1j^&8a6jd+Nqr}9plcXsKW zU494UgOQaV`sxq9_50R}qr5Y_Ryhi8IYv8k^m8 zny>!Y8}9jjA!?Ip?m0m_OmmMKdxEEl#{Mt>nx8LFF6Zbd3yp~{XyOZ=IBJR}{sX`8 zqb~=O%V(MRo_gY>C-uZ>?yM94wI6x!omg_`Z8>o`Mi^(}3pBQ{>BN8Y>p%Bq@O%E2 z6Mrc9{p(-;+gHFM58HB@fnT6FA=u3blotw=3k{5KgyJ{<;P0OIOigGjjKk&3i3`+g zj86z96GjPkpiuG?Kl;FDphX3fKt4T_4|*Sb)5`aazCmChSmqkyVNMgD^Tg+3;_rRu z^S((u;2yLwpopOY{4hxLH)rDT4WF7g;tvtbJ)E_8m{()-Zfrgp`@nDh*V7R83>qJe zagc*%ux0cY#|G`_Q;l)iI`~yA&K%R6W10gsHgIED#X`xKK6&?-Xe{4sn%xt$1D?BT z3}RuL2twT%#@+?`CoV3eIXIiA`FWb(DB0igf)9U$2`!#w;@x`U6Q1~#nxnA+jZJB+ zQy%M7jP>_E@*981gqF6PII@9yIP2;Kp|8gJZmb`T{q9S?_zsv*$=o&&_SnQZ?_m7W z93z`zWE=7O;WK~xF1TdZmeXVf7JktO1-l*6g9-IOTtZ}@2zuiaZte1|7~ZYciFdw=qfFtRyA zkLVhVFz<5%@sB=y_njUPwt`lhbqa= z4aEmu`PP>re72TkpkzyqzU!`^d*?%vWT0eAj(*L3?| z#m5MWkJ=iF&;R7_f0^bVswg`*6hH8ncm6U$_MwWhb3^gx|MoZD1lvDUQFd-9zU?&+ z+)HCz-nfOt4#5Q!FO@sxQoBz zQwg*H?#l)4%MI?!4Q@PIS0YkXe3^?cbMeKHw*0bSVa)x$(M7*Qc)415S=<^gUwZE= z-osdwX>T(_XQUTZQgoyqY*a2^{=l98#S7b3pd3ljNw(3Y| z@~E!OkKovZJ|1EEc!cTWAiOAdKJ+oR8Do#sI27G+s2+Ok><%j(ZQ^{z84%kU=3 zhI_aHC)<=J#p!3vRJPglm+%7Fmwd{;w7?LMO5BT&z*)?I9_ax+QUmhN$Tb?yH5MAz zSZIhexy$$*2Fh38_r9(FcBeELn?4%Mw_{7={Cp&SUdD6C z<2e-LIlKvYWEG2}7cu1)H?^6~ z(B4l};z>mA%^zx90tAj&F1Rww-UYQMn6Ys0!zZphZ>D$?|Tg zDmur_W|DSJ_uh8maEtho@}4_Rootm?mS0l{*tNIP)s>H1%{#{jU%EpBUINVYSs8+cUFDSaDRnEr?3P!OvSf@Jt z7DuLh#N%*_Crp~x}*ezA6R?r|NXWXed8r}z3qWdr)%*> zm9@uy<%{q9gS&p>?|}~Jl_aN_(`l6#n0aph^pNPdj+XHSE zf{;4OfgDubzaXWDzNGb}JmU}auJD`7GBzCeL)Z*4KKR+DFtVAwz^e6IS%( zGP14E8K)lVY!`$^4yW2jI>hW$nJx&%(a8tBSieS+5ix!oztIVYwp&qPUlotUGaW|I zf6=SAUs6^D8id1QEZ^D)a0Q-o1R5LBq`EOphgSRV?q=IKT&2$7C!NC^j*`Fi@|J_d zLA-*hfDng9j+GB;2JIu|?{ar5P&n9{@ZqArSHvc9RG)D%`;r5fIA^|&M^8p7H~~v{ zvj80~mGKdi&-3Xl9ybqX%0HSMYIHi?GnaRU^L#F-aA5G`fvtu#FKBIxaV;vljRDK` zV4~(gBgMz)iI3>BeMH|UiX}y}F$L6@E2=MrV!4;ffo}7gEcwNyqbpQfA65qjqI?7ww*-#~W|W?&@C`{T58%n5Hr8s(&r z177G{XKOz370FFg7B-{yT)!?*zGDg z4p)oo04}EskyDF4(E`{fnX2N)Q(l`zjb%}tqdl;ju}FR?wZLWWVw*_VLWZaj9XOQ> ziK0XygpC{j&8#IK-;wRD7678KyCH`m6ynU6fxja#h50VaiK8rAHpIe_AobxR4C1bixC=m75D@9Vj1)EV z%|K=5#)2G49-__ zhCVV?OiDmhH5f`@myahy7A#3My;gE-gmWlSg|V7>)u4xJUGrB98Fd>xuKZH4e0?{X zu!<-+u2Vm}c+}^A%AXZ#yc!Bo#w)W!U0)cjgVet)bE05R|Co3^D}T;!GM@>c@O^8e z>J;5vcGV5v(xCWuODd~|M{X#FH(ALchDS*np5^2mW0z>=?qvVo#;0Lr$MNeM`krhw(98aHcFwche>0wEW?F~+IJ7%9;hUE3hk zS|+K!z^6vL#OMeg9U>b#M-Y!BfdzBb==3AW)5f)$5V|N~5?c!3Yw@#i8^lL{{ip0k@pZ%gr^{AP(h zMIBWKu(L+m>~!FF;LF4EdI*R`{Ag<=O!@)Db@u9Qc+ub*z;{(m%D@lf!}Rf{!#F}E^ja!n5;1o z(tjrceJLl!JH>Ham6!-C#mrr1;FOqmq!>Hn0i=ycly1v6&$dG}FI}!kCtV;SY!Zc0 z8J zxI?B0jgh5ee4;5n6vTY%=-8dmunM(cnM^SExGnLmz zWM%p;3aYxPmxW^|1SE{}nV`zI1l3$n%>`A?yb3nl?q|SC+0Cbh=i%WIK&9JJ(^(n_ zFpdlv1e)ws!!tyU0dm34Qo6d}K`B+B9bs4kFkz-aJ7_KvE8F9P_&xUeV}Zq>rXjK`8g6~xCSjXJS;>|tYfoP%U(JMTZ^IwTq*2^487t|~>t zLZyCD`3-!-salaUNXbcoZD6?%mJx^)rbVo}GqoYtNA-SXXPic1=(I?|MlWm$Vb-X~U>0Oy+AEv4~J3>}8)^3N$u z_?+e+HqZuR%*tvAeG7in*6#qgI>Ln0nuQ;%fYz^X8wOH#5jhZ{Ft}7Mac~}FY5UI?xRRh>Qn+PxkXq>js>-$`VM|UYol~D&8|22#rkLY9&38kZkW0)eB@Gl zcJisEP1z|r`LbcUD{z{xScYbd7H~-pO{7k|WCE|j+tdj_xz{}if|Z6#O2g6Oy`6&| zHT6%7R>XFR-%aIy=ffbjN?Q*H`A+wzi6bj9Bz&+{~JPBY&Eu`HF(St}=5d%&sWBsR8G zDIL|c2!yLGsw@a&CDZX%!>cpS=A9%6gT6XfBCAG56QZR+_zX z!-JQuRJo^9?A6c5R>dY|Ym9?R3I5iBO0~`kDzBxgv7E+%J2QTI99mp(Yw{O; zWu>-kR%*>f^V<}d3`8pzQPd4pvgv)HIX!n#W%sTKZr_fn2v!OOVW*4gA|Q$6F+OMA%4a%lj0?KH`uAmYQ+M}&DOENVv1J_EKxu{ zEbo<1s;W%&v7%+8C>4b@V0>06+Mauk;hbA$*@$?gsA|J5sq%1C#Sc;uWgB-)XC1r*9Bu7_9B3|-urIu!!&D=F=;ecYK z4#81qO}iR$l){D_-5K;(X{~Bz=ZOB|XUK*fmJR$xHteWn!;YqGs06LGn}(p}kh$VG zQ1M3OxDu2~2*3tP-JOVYOjwK&SR%_dI@~P`Mv`TWY{xW05`9UUFB9OsS`%!Pq2}rl zl$`He_bAb@uJrWnkJxV(@?#=~iwH&{MuM~7 zH%pjG+}J*^@ESsAJ6L>ZLdVJ~d%IFxlI%I>?16k!*q%k&{HvdRy)c6LX$hModN$0x zBUzqwCcb%BbzI7X&g2<4Sa}`3Wu{_~CL8Ws!}-RA=v%{lu&P`}u&npjLq+GHQL^N! z4eO46S5Bm*^0u|I7fLy<*kKQcKzF@jF4j&Or>J(gJv8;|FFW~M`H>whCPZ%RrG`3! zdLuvct(8BZk`CRQtZG*ZNOBL1boj6lt*(v?cDPx3X0e-h3AGeqC$>gkyP5oux7$uc zWgTk&ZfE-llbFbNRWTCFwGD1z@5l`c+Jy-WfmhywF@4la3_{Xwf-yB{Y+2&iV7{YX zI>z+da9IVq`v3CiLc*c-{db}ZHdu$7iL-;BP5E;?4BTkB!fHskVb5r!uAUt?#z2J| z|ESiCnw*Tw%Fvi#gdm$_;+an;U-7fy^t zJ{;@u4b~!uYf_}z!S1_4pEIYOi^+_rbxgK906FG25|g3QBqm$kjLBdk%`C9CyTMUs z!J4X`6>EO@PlUDIAp{;O*6^Cx984Al&Zmhv-}HTy4|8;qx(ffSq%LAEeuh285+6Uq zp6Vr=dtB-&YZt-oVjUa#2(14P3)}zkxVJ5zBw1np^ z_dk$awe(;$d!mzeG=)+29Q3R z+eT(sA_WxV!%E9$s6SX_;F8+`6ZU(w&oGkX<~02bIbQ!v?mNyN=wTSj#I#|Q zguk0J3EI1FVTQjJI)VheMhhjB!Pd-baD0-{;x>aBHFrlp0~|v|Z9V z=KWte#>4#QNqoc5Ko>|W4HIja(kP+MNY6bMY{0Sgcl&S$|65kGw&=0sh{vq_ z-*_XAk@hczVKao}*j2bXo?QOot?AX?nqKX#5!8}SK^x6+u-~{-Y+G%_4!8Glh}Tw( z8dkg531@GewN<+2u4Edxhh#(+Jtftb_mD3;lvJ9$m4b0?8SKb+o~U*x_`Y6+{P|k< zmwmBL_fHQ?l&|ANcEk-_IDm9ppUk1y2qy>IE@Cl&>W#(9sy4a+DdvfGEOAq<2I1+B zilX*UG1*Er<#1-c914pKgG$Zpjd_?VUwGxYuv!v7?5jFPSP{rvwSnQ1N{NjNoE=>= z=7ma@ZEenWnr3WLPnODUBi4H8JY|H9c&h$+7M{`#;NC;pl&8#qO%|F3)OGa@ER?Fl zBkvSyixqCThb+%a6g4A(+T)hqDO= zwu@F_;!Okt9gPcy+Mm!642q)OTrliuItj*v#@MFHw<;LYwpiuo8WRjl|ENwFM4?SZq0N^$->&$rgzS#cb;j{KQ}Q zX%lCBv0bueyY^Qd;K%plY^<#)ri?tfD^DwB*Pn&Uf(@GM9!!*&V?yg~?NY^`W{=`t zcyD{+Os)ST1|>#Ont&n_m-)BH47$uBx}88FZm+8}1K+YlswoyUZRJ}{*sXY#AxAI3 z|LT0F)5_50y1u-_3s^Y6c!gtFS)OWBlY0XQMBB;RyNCPoU962g?!tg~Rm9IeOb=h~ z0B~l{w2C*ll-z5YE!;!!EKdZYg;X05Z@oOan1m0LoNC|hL`Ckd_Ng%lmFNh{eAb8Q zhWsT`R_}Bp7-FN$!QewyFIiSk%(t^P*lH{B`2IL+JRlyumjWgE!ZtMev)15hXY4Hc zs*p@Z1Q5WoTt#G8=O1c@BWgJ!JnVX&6jqFDzwB2lC$f(u7Ar#LL}(DcXL}{;!|SE) zbOu*wEV5HljBdnxC=TCyOi=z}x^>Yy?RpnL)XEmb`c?|idz>`w zR^VpmbleO;=uEh8OD24S<9S$&ar3oq8=lhTwMmjh&n6xXlK4knSAcV4{2T@yb<4>{ zaRrQC51*lG>|IMr8ej`#-RL<6vu^aGW;Tr9k*{&49Z9t5_&GpZkDtkUZwU+u3kU^_ zT0#spN`PEuH;vDRL-w0t<4NnMGlKy`7;a3)XaEuD;Ww)Fm=B;D!v;Vprmpu@MeW!U zXQ7UG7`Vdm65*m{BQwCI*EFy*u=!ksREm;#3s>(jp|;%mDC$0Zkd>*t24J8edsiB=kb>R+DFi72RLdQv#Wb%ny*gN^l5}{d7568 z%j;EqF7rteQ$$9$d@Y~4H*FdUpj*)o=k#=}>D5X_1l+)K_y_2qU%r&mS%hjqat5uL z{qhx*U^#G#$_rPR^N%lf(Gm-g8iWd2PYoD=*CBx}f3&6|5C-qjRq}!XsRFuiir;AI zS2}8pSRyZmhr@|4Rb?QUq*}>{$c4bTA7&bvIym_}n%d1KsRSiKE$O$1$UtA&EYwY> z;D&j=p5lJ_20f%Cy(GVcmm=%2F?R(LJB>3{xs(XaZO6Oa(mFH^&# zLf}N922mF>H4kFmgP8Xqa9NE8F(bUWPZ$W)#VBTkz3M9n^w)@mGN@bmK=_ygt(*cG za;iiBfnXMn*s^WseIXA@W+T5o_D$E?-H!W{c3H?nQD;F}EG|1ExUqpRD?HPeX8r+XOZ$Spn#&1QO6$tPm*XcXgQFv^P3FKghQ+1%W|&(=;$b zZ|c<9F~~IWJ6Wb{!1=FjF~ZYYUY{-51LCC89IJE_I?@)5jS}22j&+4H4{&~d{SKIn z?>Ic;yVhUJ8eK=$KB8(#kfBgX148m~!^RrhYM!PVl7jIR6zQ|o;Kb1l{f|s!%eTi6 zOYUv@r~++S^IFX_(TAg$!p5oT!>y00E`^QL)rVUjPldm9>Qr?C`*7FFnj>JGMIV*0tLpPrK6U7~dbf#8AaAcylQBno4ifpBozgb{JD^+X@VW75ZpouUCv zAF)h(1Vag@FuOf#B~*=oz#)blqSlkqjWHNG$k#@Zm6FlRy#+@Y-HB-E=2&8GZ2W3dl9FJqDAA3qPGBz^j|d5oxVMLcAJ09KT#3}^UX3) zgz4WC@tV!Xn8(G2sGOX>79FP#O$4(SoIVY2iBDI@;$%0!zxqTJbCn7

1P$^3B+ zCXgU)eahhx)2f(HhKz|!4oUdPiH5>6L4`E_N!fRZp-Gv3++S=?nI8V*7CGiJU~_O_W+}0KcJn(W%ZD((8uzQ~6kM zp$;@6FVzSHqaS?ZR=1I^C{~^vjiFnfWMxwN?5{B)8DwN0a?%klxgO44*Yf`!`1N3H z4WsfKdtc=JWY9iWUa_e7^0;+~uU(>N*_1<;#Ex&*=*%ds9x3(J8;tL@@y1eio=$ ztnvZtH(bPFy)LV1kWp7bT)Z*})&zD(g)ln_uArOt)fpI)_vRJ>_NcrHsOi2B;h~CD4$J*V++dtsc>vT`CKX- zTTniq3da_dKTx44u_C@gr`rl&?#}VEiNQ~vq5{TG$M#rVYeIq;-3;Fb)P)ecbx3+C z+Tj5kpM3EZqGAW;Rvknq0|JzZ?(W9Y!)$Q3`pA_Y0TvbSc;ONDXqa!i z?-zAXGmMDn)EUl$tpJG@m>K;HSn8)&vVgaKV(cGm1yJ>qwhy)fa{7smd$1KS(@(E+ zhE`&SmX7Uf!Z~@N5QGarF$snSE2E^1*|vp%%KdbhdlEu(@i8ACtO`JY8tKG;oc|Le z@lD&wd^|aFPj#v_9(3W6?38JZM{rW|#N&n~y12ZJg5Fm36?N;5+v%GQC{^91lZbvK zoXfz%WjVgGp-^~oIbmsjfrVNvIN684t!vVBrlc4ht@U!;m{mGQfQ$SEIbBt&rq=kL zEaZ+>C@v|Kdfm3a1uiw%qz)6Msat4iM=8?Y+sbW3mpGYj0jv3Q9qV8stbov#c%bL!;G^&=D8;Kh3!bD+*{*{_TKYq(6 zgh^hdb%-A!f>f#cMg*>mKw0{1b+{2dI!b-DB5~(ZjH|S?OhJq~giZT`wAPzj03QxV zry!{suH>E30Ihmif(;exkl==;5^`@uyn36g8vP$`XOj&VNjk>uRC)-1rPAr@$85k8 z=(84s#kjc`0Cme}dXck4AmJqmasZ3ST8owG*@EO zX@H`80ZerJ(b04R7Jc0duz>~wxeY@k4J?a3pqi;f!%Xd)o@tC=W^~%$I}6I+g*ThG zg^`)DWCN_BiQU7qQegyK@F*aR$O0s)nGK$6@Ujl7sYx1(!~(h~vT~DGqf=P|3kyi{ zQiHj+upPVwA=}4zvU>tmQ#cZCCK~D~m=K~$xNTMYUJbi-s{g?3W}ZF4HxGgpe4l0S zIb|!P0K8o-X~S`q9KNFH0(X`2mJL206Ju=570+WTn00{`ijzMA9a^^?Tb&=+Y<2$f zW~=j8Hd~$lDiyxx)TxnO`PZp%%-H;YQeh(p*x}aSq{4ffuYWZaj#;%|ONH-m*8JO4 z_`zo3-=)I)nuT9ag&%1aej^nkpbQ=90f$?EuTnW(pcrXgk<$V5r=xUhEXi7Fz3mYB z5(oM8h}h@ku$!!ieVd4^B6ch4$nbS}q}CC8N*tAleR7Q0=TI+`^U!X@2C?&~N$jdw z5j%bs5j(;qkvLx}s;>su7*m0J8ZV-5krCxe+f?3~p>Eg?+9#ck8eB*Fa>UCu92-|& z_{hscMSw+eb4lOHe0sPP8b}BA%bFAEnF4%tNy=^FI9lAT+}7p|$#DdKuI(!S6cN4y z`%Wf~PVVFIrG;&guxgH-G1a5}ZEWJG5*x}p^KGj%Hrz$^K-3a*(g1yS1GSwrmol5~ z1?S8$5_9mH`bHC6U?~Ry!r$+f7qk#kZj6ggn8j zgoV_Tv{>mo~v@@a#%dbTZGr`%8``Kn=(R574#Dh6I;I=dOW@<@)wC|z+l z;5*+qn(fJv2@E*PBMi|1plFB*#*QsBBBp%6jFqmZi%%j%4l743mR6C?B79)R`Z;)> z;2AWh#%az5DF6uAk117rp)7LG~!&>p;Iiq|$cI?rACd$*9QCm8ZBo?S@tHeDwhY(*PM$P zP3F2E{fnPJ{nhvW?6*I8m7jC<&tt1a<5`(KP1*nrEvBCLA32lH9CLX-^V;EAde;1A z=sXdE(UC9Rc_v@H3#7~#75Tuw+0*UQq#>Jciy}e%G-Wf_ec$q1Z~WY|?!NZSna%q| zEn{%tbnqtaUNQESgV%l6*N3}~#QUxEzhkS{-T%PrZ@X;u-PfK@-#&WnU9T@@UX$i^ zf9cqfnYVbA;@a?&C!eWous!0dm;VzP)7S9dfN#d?(Y>*#Ao8_q&lD9z7O#8lYxKWg zy7mmV_3gu~a|EJa;2#>-5PN4B`KcGm0~mT9yE>34UVduT$;|fzcv&;^=~XRx65k4H zkPWGSHx=Dg`Rj6a8&@r$iSHg|egh&?$O!O^A^kMuc*QDz%&=x?hb=2GQ5S#h+PjLG zGe(Tei+5BYx%Nz+y<-HfGwjj5RZu2zaw;erbtWi1%uHu> zlQdXh8DNEv%%nCk9lK_AA^Dr|4>Nx_bhN2J+3(g-$^A2f0h%0F!>lY*j zoq~+)aoG@PGn#53^1=dEEo3#7vPu#8t5s-0Ry5s)Yt!jCS*b~Zm&{5rZ$;Wp9LNNd z2d<;Vy9UEF{xtM(GLn#@z4pivW=``?YXV7x=}ZGwl-TT-KaSb5y>m62U+x!&+{iO$ zN%qXsSK(%yh9WK2uIfCMAM^Tw;Jb=HazU~C8FD$#`u}ATM_of=Pp2muZA8ZdoZ63L zivYc;Z$AS3r4@V*D^J-TYvmOOA&_+3jWRX&+&XXc(1;h~>Gb zB^PH`r7ujE_W_Ruy_7HVijb)QE#9j`;ku9G9W)6MQZcDbc#x@}4Tt7w3%)YQw`&Yb zI#(Dyu-VTUQ#C6XLmyHIs@N#2K2rLceeuF@o2oJP0aUEUp#}!2gqTuY@&)VbOm&BX zRXksPSqhqm_e}83c?SnLljtpIo0wtk@8z@oy~pLxsH658W2{;MVt5g6VUUC4dI@dr zw)9d1awM^JB*GGFeF8;j$4L*-N-*Q$4!&^*OiZ3ZA{uu1wKP|C03|!!5aW=)t{ww1 z@|9Ok$M_~vrsqW_oH#$GEcJWKi0Wd8;Iv&DBsn9k8RF!YlWd36yMn3Y0*%b>71~r6 zg}HOw&Vi8qlcO<0q{j+{)QW(lzizK=AM3irQ7ZV$&uq^VD5=U!RUflrZ<{5{$yX4M zYY-68eiVR(i_5;pzP)YGL~;b@-nYU}rKq8kQ(@6p?8Vi=i}~bnLGKtSKgL`q(e5SQ zMtr)|zbez#lJ*obYaiH1XY~7-`u)s1ajUjj8!0%MspMpqir(1&%-nRA_NKbGcb+|Y z`^>XD6~~kEdomclULf;{cig4Cnn>2(aHjKYWrm&Z1 zo65oRI`h7A#IlZv7taB%O4l$Y}9f5!~lHx#>0i2Nq=9a_@o_*3k@vsk^V zvqIT+m1#Gp*mGyG_bP6-5P{i>C#Fbfq3*t`xatCtAgoYr&s81GU^U-!hWje_ow@V6 z*Ij()^Imty#IGJpD>)gqAv52i@}eIU^GyPrg z^sr#5WZYGi2d<4~2(;a&e)gm)gxwGG;h8f-RJA0T7xUe3JdOTaym7c&dda9!3To;Z z4%Phb>yG}+ue|mvpLo`{C%tBGzM8bPVt76k6uYt~-xp=W^JBvO{QR0yPv__7MSlL1 zSBrg(vVD0mnp-iwdODv%q1(4kq1*SC;eKfZq0sHuP|ssBrwh$baPkj9_Vkb=va9OkGRGmztSzMlkMG$*Iw#D6L-kakyGD8k|# zgZ4RgBhY77Nh-V#e*$0dFc=gwB2MnKPVg8o!fn!MW*GW5^uG($d&r!5?_dt8Ps+l%Kb*z||oc=nkmu+l=J; zz_CK+p)2rw=CObJn&*D- zW$*vc%irsJh-PFgG~+aGQ;1e359F{7Kj3|V&pJx;%1T%n(_K6G*aBzo*4qkQSL4nr z?W}RCip_Brdb!xU8g$o#W`jX4I_dN@PFs99Qn+mOe`bL=s-!qyUI)*j3b(^SEP#F5EhN5Q<7F`)&90)@dQjVi1B)|vNjvuZD-m@Rn7^xTNz6Nr3|@T_TNhdRQa>qXzQeJEKtiS$BReW18;VeZ z>bQ&rjjNb8B0PTV8f+h;j{uABOhX5_wPvC16H(u-JDtDim}x>woO_ zY1iHHB~APqB2(oXZWqBBN#F08PN8!%V_mfH9DiY+Q(P%QnL#pD{QXXqRlMDg2y|a z-3W|~IS5K2;zRAzL0&V-Aeq%HB9W(CpJe>@>l2RKkbaP$^(NRP(!TCcnRGJd`37f+Rm&G z3@!1gO@w7WwaKodVKe-bcSp+bTw-xDt`Yogg_Qn9xeBHYJGf|rkc5|FN-l?r?%31T zMO)z)SCA2Y1GroUjL(h%huEF~GC)2!9h2|?o5`XQ+Amr(&R&NM7x@r4273L_(qQa( zBie@_AHc>PwrY!*D+J_#zJOjE1N!ig=(ZgKM;Mi56YuwDt7U=R6;Yu6^0S=57 zSox`x9|WBP+*`CHT1Lcb(6>L0wj@g=N)oQ4$rdj;h`oib7-jv;Wb5Sd^(QzH^sf&`sYm;sJ? zY@z3~>p>N}ND3tYz!A2xEngbEO!m%h4g?su7RuuDFeJSAYFX|jQ7iq9YqAn|1c>EW zkR~u9m%N*{C??Wphkdg!Z}Z9i;Ve@`n)L&QPB09d&zjs(;~A!T?rRw`ou|s+c^Z#X zL7o1uOk@j0KbGu^zgU~yx|I-_(1=hw6b~qD1h^e)zg)E`Z0uJbYQH)aHukFzwO^kK z8(Y(d+NV=tV{7_Q`|ecO*qT1nesd~pY)v0(|5Pe$Y|9^N|7dDF%&FVk^&Z{RCGZ105RjmEM z?~X8ph>kdZqY{*`PDm}I`b25ym$QQ(@s0(ns}g_7LCdwv(>mwN?)B``N=}jZ1vKHu z^Q~X@`6xTOU9I{r@6WSTcRFqU*W!Qh`Scu;4;t)p2GEzy$(Ml-ND`a{M4@SB!1nAk ztJ07yF=~qQ zyH*NM(+aHZ<`G+70OK*ZjJfD4Pu+&W2>C`H3H}_9h_!D_!DA5t)Yb=_3S3N6df93k zvWX}8DxGS!l-1~LS9-T@nQI|!k{a%yYE@=8JtA2Yibc!9DgZ^i;r#J(EJ~9oEHqNu zU>5};P;@2FIZ#JUiShz)wj>|`jP)Z<;@|^!OIgZm!3Lx7mq~_5jLpWH1*6b1r?Il9 z7hLeDEp44~BdAwhAcV9=C?q16@}JLpQ>H3M+mflG$RftbtDz2Q$dx%inZ({y`UF-3 z`u8kYJ=6TzdCdTblBe?TCQg#$b576t22EeV)br&;D#Y`^UXk=L=`mU72ygSQq$fYo zonjj{GZ^E@-NaLrQj@!&*+XQgbm0lPjRY3Uc*SB*ly{C4wKAi{N!V(pYE^oMLn2xA zXiDwqfLB`}C?}qR0)BPIJOb2n>OnCSxRB#MCh!h;7%05oIRYkxYoR1TktQ_M=NO_g z5WJZV@jhKS%84%!tU6Q|u648q%az$ngSD#9DA*caz>`S5v@0;5_XQ^QB^Y?9Y$7Ru zp?WOeBvXQuq7|7744U(N8fgrgT`Jnw)_e4;1uyKkxO!4lpZ9304@!U-eJL!&-O;Np z9)Sq8C;($%hq{fZVRQf_F0`t`>CB#taMmM)L~`jAX14?#57|MOn+>^Ia%U3l!MNWs z=iq{RJidjgD685SwTzbB1F zGNbyM_mxBnHd8{GmafG?Dt7xXXlGpushSmVJeU9N70*$);t+8cv52A}y6ffMBJ618 z6DZ|>qPQjF0z~IFb6J5ztRWGhQwj3Qa%67-87Wx{l2|V-Gh2vUiXA^6OD6-w7Ev3q z3KTuQK!fZBK2rG@I9}q>Wy2OEfVTp2;~hK?VvZ0K8Us#=wPCaQT2q=tz*o^9ZRWv> z@EF83ZzwRTqq&)Hpn35PN|Wd0@oH3z*DsZ={)e)V^NRIp0}LHJ4Y6IpUK@W#Aq^TvB~Xx&68-t;8&)EcjJvRTtx+GyuM-qLA<_TVMqsc4T_L&g0kaHqV52=i~H`AY}>PL5kDkoY^1DvA~-_=;t0 z@bYLSYa+5G#$cW3^gq!aAzlDIQuWIB>(ciih~-T{y_^uVXOm}p&WXHeb93~?vr9H< z^ODr&6`MS}B0alilV{hYXGb@Ab~HUZvdOa}>DhIgJiE>WxH(BffG_Wk1)ulAlmYA$ zOb@{>&jli*{A4Rpn}hT$AG>9jQz?070Wnf_oKCGJ{{$u*3McBWASK_zK|7;b<)==a z!fSF$&JK}VtNir(0z9o%Wpv%@D|#+pr7I$QF~+4-R&p(!EbGcE7@k!e_v~30TwN>a zh7^|K!<5oQAa|wQ@CevY%Nr^Rj}Y7%nqKHVg=UaKO-4y9v93K>qI#*(%Ox(QD`|y% z*g1<+rkoj#_X=?@{k6rvnibEMbutfF zCl+Sa0>nZ-&sH{hwvwLh+2onolK1jWo>|`V?3zuUnT2?EJ&EsLYRxux^PWR zpJcV0jZAT@;4HlOdL|QTaKJ*O>jNKp*eK^RN#S5!>HdoL=u;iJMM!GY-T@Pgv;{^! zD!#IM(U_em^ZFs{%QaqKuwn|VQ0lR#6{ssxex*rS>jkvjZPM~BLCRk4wX_O3<>k)i&s5PMY(|;X*`SdQ zO*dKtIlzO%i-EOZKRaxy(<>c77ml0$_iATIt8q60P4$gaO_9EI?9(2L4%!p%NxzZ` z#Z6Ok?5Ee~2Q9V&&MY0QgZ^1pKdC;Kd5gW?Q&QP@RJrJc#GqW@@ zoA-DdqX3H*fBn;oIegP>E2v3~EBvC8Xlvz9d0&Hoqa4uI2xR9i$#nKMCB(j z&UEVR)tp+EVakTcFg*AKVK7`~W)X?uEXturHG`YH>sF9}<~F+=xhz@x@EmPWZ|u9{ z6u~LXf+mesYgP2cL?a}amZlhvU)C!PhYFc7R5Byr(Dw*9Gfa>0HO|!XMOP-HXtnSu zaKSaSys-I8y}|3nJ*)x!AIg&82Z5Se;j3zuW~u`SRdr1#m{_pPVzva=+kyK^Y;2S~7LUU3gULI=fpQJ0Tv1d^yGyd1C(POA$<4j|`x*Baz2DGU+O`gBIdw7gEG{;ipl z$WK!V!!PDq%@cvdowzYYE&u!;#P2jeLYAl^1K;!a&uY4qdG?$T7hT3A-4!lN;SoX0 zz~AVB3rrfKnmOAjmEW(PoC#?|N&oGlXtl!syM;tK5EUi_Ib3-0Lp`@{D%!aHVic<= zN*wzMFEf-hYzf`aHX^FQ_&PwB+Z)O^BHaljgop)m^#qv*eRpwLMo-2i1go~IBGwxU zqR0%}@BeRfM>}|AvLwWmUglPfVZ2H3{$hulQ2wEEY>&Y~pxkt>QrQp)W>lfLyv6D>7Ixe6yp zIfKrP;9e`g;0el(uod_v;gTlsm5@m!+9Ux=s&Qf!;YJle=q#A);VOesdXWTbI{~#<0d-~s)LsCU&1tL1 z+N&&ZcLY3VKoS5{dS^iU1VE|Jlm&qY_H!{Fj6)J-qI%7&ig*lVr8NZF+FVdbWChy( z>8_U^ZN%N9jVSFO0lf!K!9a=5XAZ?9iht;Nb@8G0yVGvgUykY?YTv6u5$dGvBw>vo zJ(DF1K#9K=LSP^AI9vh7N*EpPL;FSe>o}%4rRrLQYUwKeuK}M=!4H8>+Gc)YE{O=H zHbP$&oDDx|2Lnka;Gt}qJTa-E^b_V$n8O%mkQ{5sL9zs!zH8{Ek4muCq&oBjusnIo zziFDDaO?!NH;h8P0}7!(w!ol6h73PQY{&v`pMV1qz%p+qjtel80ET}6rYEtaA4L-7tGboGUok!cs&CX{lo@k{tQWe5cK> zD?6wVM6xeh<)vqRkI}GD*}N#*Ff|!7IMiwBK>9mcmvVxT(MM+_E7(~&0g&vz$KfJB z7fA82HPh*muo;v9Mcx6G>G@99VGkG+f=0>yCBkF9NxOZxvqCeYs#qTZJ~MbjHBpIK zHeV(cUL?jKAWFhc2b1$DHdVo@Bp=|-X9h3OTQr=aG(^^aqFf!Lg`~Zo?XZ*J9N-Q+ zLMOep;zg3e*hkR1q{ViuEov%2#mo%^S^4pVI>JxUDSrh81v5=?TAlKvU=?0)!~?Hs z!JmrsP5459MF+tK1X#{Rw@#!11TghxQ=7J!2ocMmls6K7v|H&ImO%20JOy+-T&*+hY}`u6T>-5kJ8RrZ=p$j=gaNe*@TpIyy%{f|pKq ztHV@B<|BsaDc(aEc9LCVzdh?}um7W&{3G-r^IK{k3cEB&o#os`nz5QB7*`-c{UCL9(WWC{aSpNMGWHX=}X0SHZn^_~oGH+`XS zXvzA3*Y}R#SN{H~Q;4j)q#+fUn0_QeNF&EDYpGgoh#4dZR+(TlC?VfcqVcqe1_7to z2xyJbJ3ShV8yZKw*pVDA=%M{|VDL`47s$prZZo8!v zzTxm+Yt4+1RZoD`FbQU1b%9QhS4PdW0x)ffBK;UK+N^V7BVdmDCTFG}dHcy_FU#!k{ z`r``=a_Oe zP|u6q`igF}iha)}?e)q!UcKM{E3L_zcg%~}%kNeICS=pD38q~U3|vOs<3z02ZG?pa znXvt9#ZtC-iHd;EXxpo)FtTVn3?`(j-n~V!g*_!>9rZ7?LeA!Cs7lD_Fvm9kw6Mb( zAO&WvkkYMY%eXdjwS~L5x?H%GC4duwaI?00DlN^lrQ zs^r$;)_utU39H1y>~QOMQsFN@uTk^EF8tD{Nca+;{$AA1xdZzn{u+jl+p6lgcZh~M zA61>ct#Yh(pjuny9*Yp^u+0*y8j3~OYxwSD^>J3GYp(f&PB!(=P1n$is9MR@IE%QE zuCqkfB=!(0M9;t}1$AMsS2V5InlAG9QNOtR`u) zP$iPavAB_>&2d4^cmS}OM9{1?T$!+uwEyL1fmqRSbdW%PhpGPm2^r_DN_JKHKqWIW z$qIl4AIreMJ-kp5+Bw0i=>fjxLXSH2pY8V>>#3=6)IB-KEPA46rNk?64OqQny*s=1 z5%#&Xn3{s=_1PPHMP1VT&7<8r?qT>hCRmy6VDF8A9_F4vIYaCfkd!S4%Y zFw6|=e2gY}w80^#MA{%9B!F_@PA2p+;E_v!{h3AD|jK-Z5I1n-#RqN6?geTgyvBT6E;;`-E!XvH1OB!M^SV|@$NWpCE|L+a|vHQ^xH>avV=V%X*;5jIBdf`of>JU|L@JX6>SQJc~(Fs%8yDF`r)-TS{C@T zAj>S^9t4GiqbIppqNae;|DQ}CY0oLy*AaM@v!Abl7NV56xjpEL`LsnQZ6ZVCp>G#|CE= z@C=hqf{E)e{88%$JCxDvLQeTHcrb)CefICfO8sAx%z_fMkyk%W)RdL)f6pnjo0r-R zk|xMBI!CApQEF*vdyU{Xs86H8O8{M!GlF8b{O()JUr)!FUsC+ z<%2(PdQRqKMRumpmT9mK#<1&$#hO612gL;R6+(bzrhR*ir;>_{#oSM2(F!MHB(8En zw9^<0^eI?LOm)YKajV*=Aj{pO7=lRgj$9d#D(XPBPYaPY1Wf=%eR>6Hr%3VCNqf8# z#u67KwlxMAV(c+8UOox+I@URQKDtN=0eW(){i|AI27@=|SrVYGnx)3Oz@j9xyl;s;RTd&28pAV0hnh#5Jj>~^LUUV&xShj=B&9jExS?oyccy#2HkEnh zHjEG?FHMB?>IFmDei^e;>_FvRxsNj~o&Djq?UeW6r_chd zema~$Yy8L?KXkqn$*7OZ<0EGT`%xUhf)xeP1%4oYqIarU6ADobFiYJ!o~mNH`iZo_ zaW#{Z%8|FEam*Tavp)6!a3@ResS7HTq$UO|I7gqhcf-P?Lf!A)<(yHauuuGH@7|xGT}OkMFZw$;iCj_X=2{QaewT7>gqm^s~>f#_9@% zYCvPwI;PXl0${OLoDbjT{FyEGvppt#`ht8f6Dls$dA|L5zE(Uezi_QMknf>XW!p8~ zu*Gx)i*YmL+^JG#%MUpGqPR%C&}wUVk@AFI#EOpLSUfzG1v$vHWyh=m6($U8T0SS6 zaE4MgaFUOVVd@Dvw*=Zv;^poF%C!*GeMO%q6@%@`k#+aroJVfrhD)MfXvZ4yqaRtU}{Py^P%4L8zR;7T)|CQ1J?`v;OzJ+fHq&rny-lK z_Dj&PmRL|I*(+ly`rcA(fo#d`S(V{TL$5j8;zGcxHeseLT6G#guxZ~g_@EbQEswyz zqda_R3Eqa4s(QW1Z$EPQKNZa?ZwlE9F$SA_K! zD*5*Tl!bDCvU&NPuSqEoL9Eo@2Gut`vZlkCaSmQG;4s?OYlU%17;|*^8RE24zIbj8 zCFZvTHpl%?#1LMtA-v|jr=;k=m_vW;Dloo`!Z%|`0p7vqy&ui{>wc4WZS48|>weSV zQ!t76_z%FuJKsaiih`%A95y@D{y!+VN9s~}vONO9Jsp+Y*C=^0xjS0rPc=#&z~twO z=GN$~`(*i%pr9@RSnYe6iazhj3@yc50to%Z7vjG8`}%pNqB6AVpMNd@((y$O!A%ZR zv=6v`xxminy9xbNgCCs$_@+BjeGT+)@MS@&)TxW|Pk2=t&Wnwn0N!f_WdQo;sz&mI z6u}!SuIiO-WRhQ!;+~1K$fB09L>7A|1W!Q z0$$f~-Fe=7-^2O<@___bP||%*WLt_wQMO}SrdlR%VIjZ;00D5F^e0m!BoW{WLbRMn zA{@zTb*FpciStctji*D>>Bw=U9%bp4d)jWvoqd~;r=7%^WE^Fjq@CEG!#M85i5+Wx z|5J6}0)n!{N&3soCrFp?E>-nEb?VfqQ>QkYMM9#*3(;P#U;Ga(k2TLRhUAem==l}HeG--e`b2x zgfOu_9$CS!=x5d{OlwYX#L>1cDs@I^oc}D;(ih&wAC-%}@eltCVp@A=vlB>< ztf>o*Y15K@(7smvm>l#!nik%B_8lHhA`SF61f90-T2GnMgJBdkrG?a{6YvoT=2c*x zX_`HDGC$bnRAhC+34@NkCAnh6w=w%dT(!ncH*%{nUuquWVbbi}*>H2#9G+yb>pZ@I zYD5OJmh)NrSN?J5-P^5 zZ;4rQ?Gr4?@Sx9E+sz>&YlG-URa(GV@0D=74Vh`$8U0xOXx#&IQ@Z$J@l88rC{it1 zZlTADgThhKe8q|e!$yzAInBKs#vnC`VtII*q8yoCWMdkF-c}i5Mb5m0XBg`pB%W0+d!Di-Kzm*KS|6EXgv# zWHM89U7a?Rge<>sfx67^O0*)?*O#^DzJwt&)0pq=$g-Yq0))A9ue{P`@%Xav?QJtz z+3JDnjNZI_lf9uHMASn#x3I9>-cS>m3AOw@T%rcF&dsWV%$upRYUVsTVosfZ&Gl3< zU_SW&pt`B3f`1d@ytJVZ*QqOcewKf48tR)j%`f8H3qh^qg~hP z7jb6VxKA;Zv{snQWpjh7H1vCI#T<9y_f=HTc%pUyrcHRQkRqGQjP@wiv`5+o7gSJ? zgEqOg93wGOA}z09i8L{%LdOj}w(i;9D5T_jL{2lkD_5ZxdQ6_p4=mlOMI+F!8>%YV zvrPFhI$F4(E-4rB4}mgAh;F)2AzCz(Y_AJ7uN#HBT|!L;>l%tJf*{6()!eWWYA>bY zm5FUpStv4$ppjIBx)#nv9!}MSI`KlS?Gb8(RuLgaO!VBSx+GXA-Leg)G^sy|Cs#t; z=BkMj!7R+RrPrm>aJ;T5RtCdhXRUov^ITJGx;4c{6jRAmJx}G=O~qktGo3P zAyhJX^JJP{_Jmn*ZqcL`lCsKGyUk6DEMcGYi$6$GR(o$rep&anGf@_~3-3&RUC-Pu zEIf`u@gipW&-*vnK1|y^b2j_@Cw}u2E$3Jz;NL3;pR3>gnB6Wc6#evCN*!JlvR~2) zUkwUEA%|3-MbT+Lba-*cJCe^UPA%gX^<>(_Q~P0ird2?{r8W~6L8MVe3se>*puu@h zK=EvTx=WpR>YrvGS8A2W>OEZ5%miD5K$?^g16G{!Yw8>MRISCN{=Cc}WQ^4(NOC3d zWEoq~PmFR>9%lDaIc8NwF>O_q8LVK?LItSh7~l3vkvb-d>Y3D2p2Z|&5uKQ#@|mog z1au@0KYbTd6*cWUg@Lsc8MewvR35yj&1l#67OU)5tud&PQ)Z{5n{rY}Gpwj#;7eqf zEL7Ev5c%XS(5!x1V1ti9A{vQllOj%LJ^FebDM5lveD}N0wA*(&%9^;U_sm(RylzQC z31Jl29nDz|gxQd1rN;MYj7HuFjZ<3z#1AZB!}daU=Zu$w8V@xZhCCWSMYKMAR3&be zND9WDsAB#a=Hy)h7HI`5X3>QOA^O!g@#YxJMVCuF@x(pOM`u`&j19=BNwH z7HOh!v-w`B)gqcv>bD1$J~LqKYkFF@_#{G$m-(oD#U|HJi4< z@RV2w+tT*s&`#Uqne4597Lci3L0DV!il3Lf{}p>xWpMB#R(bg*8rJtYR7;shEg&?x zSTyPkuR?;>z(_!AkSoZgSQH+vD}PItikOk>=~kH68ki?%pO`26yEH3nC&JxVAS2K~ zQgSy~gJdl6g=mbTIZ_Sq_Y`#K(-cChVr^YR^k84Bc&r%;(fxfby42B(q(ZU}0W__} zDtkZMNoQzu>|(k3MH+*xviu0qWfM!dVHA@0bQ(J9od!R1fRf*}UI{WE!*V1#tfxSa zuA|oFj*a)OCZ^m`rp|uB9xQ?ux^`;#lXay*mT+*cxT{Q@-FkwFmWfRj4NM4aSopnvH zwZ@v>@BzBL!pOh1QL@OE2Dfa5fl?`EkJ6b|uO*ba?rNPtO>FX=0`=kRMOv|})=H4< zY6eP`mRO=n>D79H-rlhKCi4;?_4`bm)lG+YUHqtgd`nU!bJoSMSu!`N7gg(G$bHh> z#jrQ^E{6Kg6lOygqs6)yB8ZiowvLRI*hpwY7Xzw{fDLJ@Je9DrUUm}eT0x=NESIJW zZKzb4#Y`ZxR(Pa?gtAy(nN;qSSF%MG)GNW~K(D0ednFi3C?mi6t;(%+N|@B4>T|<+ z^&{vFk$d&(e2=4wO^j(`GUu((MmTX%s1l%SH3`U%ngn{3wI)I2dj+ea$==zZlt#Q# z$}+{!)ZFq6-kkRA=4KXB zWO#|zlZ35-BrpTPQ9%;o*V*Hut0GHS@aibr8PRrhOfJ<%IQD~T5VfEt*GZ6TCUc)R zzf11lSR~gf@mBh+Uan~t8{}GNNPD@)b~6c*Tn9~Ka&5xij;$oy0J%=ob=JB}y3SPG znp{(IjdGoLl4pTPo2;qNO_|iCn_H7^=4YtuYtk)(6>4eeCS_I9CPX=l z1g!c*eQ77Q)j|2WOsCK>^_7nwRX#Nqa&pM|CA$L}!zjnSf(BWwxeNE|ANDa%4@Z-wN?ue zuSK=c-qdR$4V<+%bq5xHQ5;xE&KwKQg9A&=XLBtyS~jFDzA`pe!6HO4K$TMS3No-U z_TalpnDp{S#qzM0tb~jyn^HZp0vlz8La zM7m78I}mUD+YQ3qX~NxEvxt0P6K>YjdEqvT$OIVLyl@jt7Ez;cOVV@Uw$Dac(F-@! zOLTMLCQnxjH{KZQxciz1k#bdFUHA&v6>$=ZL(djeb+;4i!B9T z)rr_;4hqdVq$6dGFI>t87pgQ65--MasIRbA`_Uleq?h*-+UorT-#PJ1O%O@-6Nn-H z_`x3;LIAN%kQK4OX+#4_Ebb5utZOG{>LOhd_1{o$_UACx2CJ6FmGK>mn zl3`I0oDyD?^G>`z;<|*P|k6M&O2VLvcYABdoqD2Z6Xo|egw1+gp>VjRk zhF}+(1Y4ucH8H<_!G;ic1qDk8wh2<+!n}%LBfSlR&HgEiY?&a~fGjQ8d@#XA;ui_F z#=)-=*(Rxyag|Gz$#M|;r6Nj2HFb{>gJ@B1Dh%j#2gM9VdWXQfro|b&)|1)(p8oqES6{YldzAgI6L}UX@8@S+Y$~3>t`_ zACdTe1ifJyG&s@=Gzc|=hJG?k@jVF<4Iii}xj};jgnly0NM?nHpro6jg;}#{j240# z!)u)aD*@4HW{q!)yd#&P0K(dR8dDb5gRR7niDt!;mH|X;G(WL&_iw3m)YdDg6jj&F z(M0M@TcqSMBXM2WDZMNqQG0qyik*=K!Y6))hBwjGPH&Ft6DlaPFpUc?mWojnl|~~E zvW+Py^HPf@DON7f!z^=qQ$D|4wBoQA^Yh`E?1CodS-kRZ%UFm?c({HzW_})H1HY#? zDgU8=dj6>WJjg#$?%oqRi1GOPA zyZ2eB$U4>c&wsuC-R?scW3ojMp9?EgDqUf_&yC;oPX>!P$G=Pg?s>wvv0jy5FM6Tk zf|ap)A{YI2mlt4PVB(g$K&?xqCT0i2OBXk#bc?@Wf(^LmOt zLPQeUdlx=ZO>Hi<7eb|fi~hOIR?W!xMHy;sZr?m-*s#53a`k*AFCD3cyqK|Lw5~Ua$;*bJzY7Ategp?Ntl2m=&B**FDU)ezt`q=d}N(lK}Ang zmOk3zA=L|10=`Ucc#nyPGhIIz4@wlxLbtOM70FO(OIZAgH8~3uFKw?kT!4&Uv+J9m z?p~psEFnzX!o5ORX3lEd+@lCXE=5mx5yEZ!7ky#0(=zF_c4SVepjNSH zREx`$h3!xVeOkAqoP$uXJd&I(OGIgCaLiXW_(AJQSZP(GuTd-vpwJCOn2`n`%C}UB z6u->OIt>Gh5H)jZ_C9YO!3(AP>IKZcEb&G{E)Yr40BmPbXD#ks6<%$Q{LF3Lm9vfN zTE$icRj(S77P+;(NRraA`V71JjJ+I&riKiYd*GPwDpJ+_M%gbyDp~sVXo&gDMzPaU zcsNkFwa~7r+AxhTw(ZK;(L1F8%U?9nIa|+N9o8?KCWo{FRyf&)eB9hR)Z`Kl7Z{>1 zGu01jWZ#oDDn{U%FJsz4Y}F1XY6c;n%?iD2$tBXHL=-LZ)f{0${Q$3av#4X0 z=-H@X$s|)%RbSe6RonZjG~#L)w0jCY-#+%zqb`aS3d3e8st8mVTRHEU%rpW#{(-V~ z`e^twO=eYSc9w;yA!QkDPD;GgY706^+B>VE=vqtvZwu=2*IiJWfBzlIDafbfGE?O& z&Xhe)5Kn2#Ch0`7tbQUH%<5^%VpRH8%#!`35bI)aoAiyO#MmdlkOYS!jCR;GLOfxx zKJ>V4147&RxBOou99}3{W6xCXFZma0>~KRPDmk3?pldDu2OVAj&YLOZFThwrXwK5|%iy7cuJC1+{V(%Lw!H9$%E z%i=H1kY0P%A;0P{GS4Qq$$&7#KIg`q-xLu>5o~*=P5mUZDbmbup|G9M^uSg7Xd%_= z@}s>!=^x;hMp^lDXjyqHv9r_*YTV`js+){eyk7F5(bb?TlV78%BJZNMV~|4!y7J|2 z*1V#Uk?me7Nd~0Vm|jZo=!wfGf{vz|m#ZyCF)7tDuh+I67O8U2_S>^*QJJS+`>K{_ z-W*)y)4R|J3kS6ETG2izv|kX2O4dkbqMF(=69QmW;SkmuF=q6zp(DA`_LPzo&kYa9 zfnsn2J<-4o+*jfTTScBDmQIrMOcAxJx$wVs+$B`&HAv!yw(!XFX4|?Zv=*`UXTtY) zs?^STE;20CpV8S(OQ}0+2u%vg-;%gsjyE&~N$D=CV)ilVbIute%hv5-HH5FCcb5Ne zMbd-1ecPp}5UBDW>uu>LV@ySu6^oP147?Wui*NmeZ(ObbiFSUNu^gC~2ZHidYU8{W+_oyC9bn6p~>LFx)! zkL>3O&$4S--XWmIb?#(QE__ zb-rKP<4r+*Q504?*z0n(i7A3e>k6*2DGn|FBwDsf7Nm|-zzkf$JFN`e93_>N#K+}Z(1WS8nIU*t_sJdcjHwr5ZY$(lCbrYH?#aUs7c+{LE+c;ER*$4b8iiexk8T&KpM(6Yucv#t|ZCfh660SAi z_p)0OmGh=uBp0XgJoo?Xv%ZsSYh5`Wy0WG~wM^H{vGRRol^q=;h_G0xWb&PGw2SgMvn^%Ct!yJ7)fVBXWBXm|328B*Y^`>Ugj%NA&twaaXv~+hw_{FH zB(KY0i6Ls-0Nnt2D*II`32Sj8Ac|;N>aCAR01hRVl^-KIt7a>!(lyz_i@1Z<_&T=A zD229_##PEyqYES&7q-JX>%&9`8y;g;Py98=2mP%Av2e@9Vuvca^2J)OVFpyY< zB^bEYmV+s>9K8(;?9G|CR-3oQ0C?uv`@p!BfpIIvIF6<0rDe-*I&T!EYbEB2XBk@W z1u(9xgJPw@&)SsC8_RTD(%MFrt@SKhKa;L+WEoOO3Oar~W&?$lAW(HyroAM!UU^;b z*{0E}GVir%mG;e{8og^*w**Hd5pU~>lnFdnSRH0<58v5>sNLqX08eOijZ8>XPO#4vplJYlHUs)SZ z-oEc_b*&c3OTy5Ms{^w9E~+?X8U&)0H6fKz18!ILRr^Aw-idtWv|jr+Eib#X+|%7t zE|+`ie_gsQ`v_7;6_;ROqplb)W=o`~;d566TQJfTtH?_2qPlgNcw9{?6ZftzGA%A#=mbPm{{=~}suD<+1t{07g z)>2rPKUgG&{Ccx?UAy`!y%Ylt#A?>LR{EL5#o^X0u!Ql68a=tft3vU;P_mNz9~&`l~>g5&)5WyJ?QgJvo>;7HgY%|fDe zOb^)v(snkxBP3m@CEY}Fz)8|xcC4_L0M}V>T1Ij7(n!=&cNg}NKC>{=8y~6Oi2PAQ zY6a#caCNpI&lmcdFTd@JQZ?}Ny7i=kMp16)tK2}!qI#r=;Xg%!Zg{)V!JtBChex zLAp+5)vF4JYFTYnC0(7aqmBeQgiiW@X{}J9Pdm5tcF}rzuJKJrI^}F*V|Rv%5QKjm zy|YoSVGK4l?LP^iR9AON?D3$>rY`?i)m0=$-4&#e8u_yLmX`b2bU>-l2KNLd)ob+j zmH(wI&Fab-=*g=Nx^Z`Rn^Gr}yaDIcM=al&tFf|t(SyUdDy&RVj~wicroix^W3z%stPa@1>Ta_( z)^yX}!MNdWJ7E=Rd69K(Yl*NbEo8DBFc(q`IOnUu6%o)W%bv zR+{*%5bhvY>!si+Cu|<`E%>BJA-7p%JBGF+JzHI)I4iRSw$_t!foPN@CKZhU>)mbj z`$|n1wq)3*Bu_=vK_(cCTp=;bnX-r_>57>uh8GzpymfHQhVp!?Cq{9?s2(gZEuu1K z@LH*7H3dtt1l^rTfnUv%o+Vha=C!ee4J{PA+PefxdSMA|2P~0Ak~XkpO+zjqRpg>D z%C<5I*_7upUDvIq=*?*I6#ihcefnt5m%bNk3A(c_6aCD;MrfZ%%JMB9pZun@uggB+WXQtJ2GH2G0MC>ap-+#uG5_!E?O@mBC(GggPier>rn+r-1m3de-SG^(o1FLV>{~QvRxa9b9UNG$<1#Er zwmEwW@773jLA5m6x-l;#B&H$_nzwX#B#$LlqiH)q%RLv&IaP zG+puhr5ZOcS5i0?80dS^Hp0kDxTw}n8l|yB$wgT^=*IleaR8m0e9+MI;ojhpMi@OSS^DXSfd&xwo&%Jo#L4)S9TP>jt$aQ58ZT zzXsK@`tL?{V4$Fnt$W>|I#xGT>w1&3VNv5n`?6q;y(U$7hw4&OllvO-v;OZUKMhT8 zLw=f@+GjR@Z~R7fxuJECwlF=` zlX3Penh(Xf!8DkD3hJ}npo=rW)Y)3e>>+IZ6G-2|JlRL3c%+ zljV;+T)k2Kn;-u2?-ds4)!EIXkGz{e<&XrU25fQYdo8F)(nWjI)rTBX#HE$4VAZY< zF5d^rRVJ0^pgL=wgK|N@B{ZbjkaRJnEH`HBI40?oToLPVen9LjD!&8zJIDzxHuB;v zPkv;wn~mQWRJW*3*PO4c#jmtxULy(G@EcoI&Jncd1b>6jPp^HMu}+fSwyTf@P?WWY&5A2a#6JX32x;IyL#qEkj9m zk{KNVWkUlnL{ylpe{o_^)MOm4IyDR%$A7sWD6`3udd5FPGUhM^XUdQkjx%`4|{M5j8xZ=M8}Eh4H~S< z+EpIC=?!?9*m`j`d-9Vs)V+Z$Q3KmBnrEtXGbvzgWLRZy#I)xW4RX(k+2D{{BhIpE zr%Z`nx?)~x*I|lwN1?iH@2{k&M-v-}R4HoH+BIRun>t4^$45u{Q`l18a&N2L4AtUI ze7?GlvI`%sYzsHv*v8j&Lw)r}C}Di^X7RA1a;-|Wc{}GRtRb2A+Lm#>nwDObxY;|Y zj4>Kn2cbinG`&Hb6^dkH4G$pG z4aqvsaEqwvkqRlxN$-PfpAk87PBh4^iKT2_sumJN#P#V$`Ss=fmri2qEr{EgmQfEI zy%zN$a40Vw$c!xVWoDM&nSl7~=c?=aOaoDSqa8N*xXIK_j$ZvoWGeSjZ((qDS)QfV$st=+ zj2@eECRZtpv_3J`@S9Q@zOp1OzL~=i>CNF%`X(t<>H4-*nV{WK$d&0P>A#Bqa!%kp zQM8n%?{8IC^KMnz*W4FnP7WqOg1xvLha5=M6B4EDU(M%{ckuCfK-|?n zkF{n{+PZ~?4*uFE+oW!QHTFbR^T|RJsYnTVS1 zg~e14>%(|QPpf(dLF5{}iA(pmSc6XZUA*J=ob#poJDRC8`O*&V2}j+xxCW$(;( zp@XK%h**|={|sX5>@SmadA43QUQw+{H!$j^;xJ!kEqL}A6N%B0_3#8i4QX;EDj1zg zg)%+Ed&~I>sT8xbI*xbO>xi-qhJ7mt?NYPP`#=^|b7xbhAjUQAya1 z*d<(aziNg(&+naKzgmb@`-M7&V%Zez_3B^dw*E%d8vXN{x?vmtF1jrR@YD^Hnxw$Y zrHbzo<(JdX2jjKoilc|kzPh20@uL+sYS|(EmNPwg6xHe(hZw=r489<5vJZ0awfgO} za@NDA1*JmEVyMUJKzDgJomZ2&1PLi!Avx^vfg9zpr>Urde$9(Yp4+Cv!a%5HQm#X( zO9Iehg>qpyUWS1BI9JOb;@dN84O=ac4J~g}yR);Y_@$sXif~`{Yh?k@R7%eV5ujgT z9^*T#^zEPjb|N5=YY+kCz&nfUBGABy^i4E4Z)&KwB5PI`&Ajt#ZDU0*r zP9LDl0u=H9EL~X?plkt{z@sW$$kM9<^jd(HJOCTeE=qwJz7W}(2e{*^02?eoTOQ!f zs{*7Jpgj*D4N}8UE;sT$!4QN(%|)ohXb4S_!xls-YB~XP3U0xelj*q}u4hqwva?NH z)>c-vBrOoHv1VrJSTKl`uA^(+7i^dfHW_6DW+2 zO_Y6(yy?=EA2nU%XM-xB{<&)SX{r1K?*wZ8RZX$)l%EY&0XIk@8}idkHRV=k{vFgu zJev)6<09rSHCC3}jo*P-n`a?!_!7+5SlR2d8++&x*O*_|eNC(nqST=K7UibF3a*X( z^}aSy%B|p4OXOx1xoOaS4Xm&0KB+5eS3Xr%roLuHW>;$40WU9osu&?wIt`3!*@K;v zZ2!*xrSY;AJrPqO3N5W|?H!$^uI^>a%aFTh(omGf-<>e;LrZ6_{)Fr4TAyBfEbT?j z%5^OtP?s7+n`yE%;#=cuBEId~pYDjR8S5?0pI#R+i?aV6<9^2gwYgfai|yA=w*1!` z-N#hBy68~maJy965M?j^_6IQ6zw{UUTmFh7tj`w^{%l;IOuE2i(&9#&Oo|k;9srS} zyTA&0&1Tl-x$nRuRiyli*|*XEtbzjJ3{Md!;&`K6E0^AZuoknYH7S*;xI`%Gz?^p^ z19tn0Zke)d5-o>fgY-*5@vMGyksKAue<@`x4?apGUJPxEp#=A?ET;Wc>4*PO;1+H!?`NSo+Gta{`Q;i zojIE=5a6M+Bpl9YFUo1fc4XEQv$H4yt%*9p)?(TwbEz%U^Q767eA~yCMGPY_0;8{> z{L^7HZ?$qr@nYjK5!VjNQbb{ftRbQ>%VvTw&3)EZA(TE|;;>&6GF!pGOtQ5ZHoCeF(x!ev8=|c9`%ez6z!V z3@VZ;%DysrF~gI8YR{bRqP<;f&v@@d4nLF{3BpzF^J876BrJ0wz^!O!3Py^RfLd_m zS5G8i)h0ngl0vs2{3s9PJTZvvGS4`;}d)B*;%XXwC6Na0qW(%C(1GZ)Rdj(SWVe! zjMbbSInJB21Dzo|r^${NR+~boY;B3`ybJC&M<#}LSJ)b%$Mue-wXAH@9pb9VvD~$8 zjgV8_wQY@96{EZMt&tYmao4dm>hO1+Tcb{YSK69afUd2PE#cf8b#IM0sYWrDZH<=s zyX9M>^jrZjGwQLsHRF&Q3b?N#EHysf)h6nO<-(NG36bXS%pZEk`vmz;mUQ7*( z*1q(Mh0vDgn*hb^gUEU^td4{|By8dzDvs9DH@=chf}BGG=gnoxcQi06iAF6-(bBYp zJcVXc&(u_Y(8@Fip>U0>HIGwx(JDg}v2?ttQwvw%Rtr+8TaZ6`xt`SX_mAb3n5SRg!Wd=_o0K zgbPAeTVqks&^cDVb_hO5fBVfVEOB_hRFeQvfIyj5C8pAIZZa`pC#l!U%NS&(ZxzgI zexr(Ys!38{0U`{t7MCKi1~!dEJBvL1V`igq_7Ph|FV);U5+ z{=UQBXMCH5$|^RPq!EkAn=AS1Xd0K<>|y(!SZuWy#mr(8!LO0!hXP`gExm}iV@kZ; z6*CQ0D&sQW?5EfNl>JW^fzQ;Uov7VCP`f*pC#7OOo2{LbU7GkNGk&((>e46D*2kq) zwKgt>&8)1}iY?m@CEVeE3U_G9aF8PxK&MZLsG%j0#eB5 z$ZE4`D4u#NQc{Xps>5ZL2p21jB9av>$)y585W;LCACXvOM35Qnt6;{7$dk{CK=ftF zsXwo4rgT4ea=3#8Js}BV`c&zgalOmP-VcfIF-mS=uK1<`v1B=jOXUzw zg7z}#jSJ3>p3%}n$wz)HT%s3j^XA{z2$WVXoX<9##R#@-hcao5o6gRg1!(0Y(NuQq zc=R-qpT8% z2+}lG#0l1(haf|lsuH~AvnhGCFpx_5TN6V7)V>cXx2vkswaQW1kdTYJ5VKs%gp6!8 z2zk1pyFv|;rH^nz^$)7Z6kEM*TRN>SmNCh8`3Z6;eXiz&Z?>0+FHPGJg}O-_>XV?S z6CPTi#6Lio;^qaRr0d;Je@qFwf!#X9huPB4B&K(~$oRS=wMRLkN zkXOa^=o>^0K7=i5&pP8VurAwu_oM-zYyPDK=p{?9Q z1Yojv9}z7a*3F8A3N9N2BILT-3N0;u2apzMscM^2|1GJu^Nnqa=h@;K!R9kNn9Zkc zbD~LMa3)~{(brKUrbMXnxC7MpGQ+c4ASe%10eUh)H;_zH^&8_W_l0Vw0n$MuY4#Um z+c^QPou8}XCgTMp@SyEuc~ygwK7ccpxG>E6^sR9W8d;tr0!b)_>C%hsGrqNeMn2p6 zf8qPBmPJc(F(su}B_{2htJ)5R%6g3+YYao4Rb>7kO50Eia+9GPl`<5oO@*$_30f9AnpP#@a~5 ztRJ*^X9WscFJh3(>SoAz_2Dit<1LI zr>(F(m<|QXU7HDb_8U)e9kogt@V1K?bdITpf{+~p=pI^d3>F+V;;45xSqoky7IAEo z5}DlTa-@#K>%EA=4n2V$+1P)Q)zyr4UBqPVQenmA4_RCF?_(SeAVylAtU)!JIxE^j zg+N&W3d*_?NFX6$3JzO%i2#dWbQl#Dp;P#>K_OYqhh5{V;u=1jKNRZLKhl(}coEboL(g0L6xkbHb8#t``eTe{wpc zwr$B-00Ud-f}(g*+Z7wkm}1`dJf=Y&DYdWqwZN8b zJc@QPk)!Jdr8n(c-PR8r)L+7b>h8JCbgF2UqE8VVs-_M~Add1@o+nr+o98uwVcMWX5Q27r`JWzJK#mU{qdx+d`#bpC2mMJoUFt0~I>4rc>MUbQ}3z z`i~CZzsuyYT6V%&})hzd$DE4w-}`_v@t#!I&3e~lC*`E1UpQs#zw(u zQ1bt5fVo4j7xk&lDc)=3W8&T zgbj}%(H|nojtBDHn~@4pYL?0wlcNYTS?SZLW>>t? zpneU<;8ZAv0tG|Mhz-<^LQS9=*&xZ#RQS3G)Ea*gU3+bfKc=DRwGm7kt!dX; zZ7NBd*A9Y`3!TMw6$xe!C-KDj&d?h9`u^6p? zniwq}z--P(w7{>A+1NsC{3>R1v`~~YJA1iSzjw*W1H0c@ILMD?qL_!B147t#<~_P^ zxB3*1lOY^uv(KdQ0dC=Q8b3`DPnipyX)9BuzlsYC5^&jmJ!E_mfR5QRUh_Sj$a6sSUG)_9?BOFr|jHWzW@~I#dlH$xac+`lfJ2l6KeCwvxymM0z7ODt|{I^Nd?ZAEhGN)OkTYKoU=#nxH`*Gg`N7^N@yFE!69R^(B)3EBHAO{zOyH zuP+alMD|s39Q4~)Ny`fU_3^`}^9MvW$-JJ(LY6xjKeWzLyN>)Mw3A|qUley82^3VQ zR&peAy<9Ekk}(HgudiTQ@{C+B4Xt?sU%yTY+VTYc8quIF#$TNmjUVQh-s!fjYpE%c zVX8Bgg^=oxb^76N1(1J2EVU}t7|=RDomm)SFa30X6fIo%;s1dCN9}ttP`j<~RGwlI zspC&dQh7@NXZ7jwIwhd|Ve2u44(jW!WXO@`;^RM)O&_$(H!jEp5#X6q(2#HJmFrO> zz_8Vv`r;;atJDS=B%7LY-8 zSs``DjnQ-@Uv0%f6AM!-$H>YtTB00dZCcwog2t8D$Q9DaG3XR#{vWxyqp4O9qo#6Y zUrFV5O64kt410K$8;maMeF{(i5{j zncode8ndSN@PREe88pId!^loaVb;Q4h%&rxr|j55sUVcJn}sSSk3Yd=6UphjSWU!+ zqeSj@ZQ5h5jn=owUOQTuV{g0lwwUJBJh$yKOS9XazkJc`K3gzpN5<8Iyu3{x!DCyP zZkZ?YVw>B$xu{;fn0yhXUDg(x)wGoMGSW?h*;nnm??JqF(|%!k$3C(WQxo#med+Oz-h!pt+1vI>v{^$xJSai-*Q z`NGA9rSF*U%E3uP%OwZ0Gf9 z2^d$?5T1b8YW8($ikz>ea?FT@uodckGvmrOV*qR%pR6i^|Bn~94^>&#XJXWq*`B~` zR6rbUBCEH$<5^j+QG0bK>yxd+n9{SXa^~YP~Uf6{WA#L`ID{_@%?hK{q=DtmvzBlQA9lNeJ4k zKk{u>TCdg1n`$-hnIj1=mtRXrQ>r6XLSpP$NWxSnwUA5OL-a%_(WM%6#i?nnn#!Wa z>U8GjnjP6+Il3HzaYs0_0OhW#qPG_74*R&$bx6;{iwRS>aw6sqlaBMEy7YY7_Q_ge zQWTG#eC9Rl76Zw(3tHfH&@E}AY}WaWT-IqUN^^@%+^Y0aS&34hAxF{}ypaf0=~Rqi z+jJ7H1uaA&Y6Xhc%;HU8?QHkcsxPde>(FApwP_c+3VG<^hu72?>2vZcj#-v%a&(s` zp!Pmvw2zHxI5#ivnLht9D--V+q*cYw(v>|z1z=HUYj&eh7~N~&CZCD_C2bO@e(v+0 zy_Pw$p~Gg$t7Q)RQJH&4KCw2AGWlT^n;%a zC5bW?)^}lO!58!0X$8Bq774GAtBD^CqL!g7`@+lry0}aI9|p*ADQK*jMNO56*tTMc zSOu(gX!L_-)ri$=?uIAQ7Fwuo_kL}K!+yAmCKc38!xr|CqE*+&M<1b?L*voqp}IWn z89)oI)`TqbPbV8VQ_QMB!0ce|1SRIX1*tzgBF>J=#cg&s1gUpm6m_O%N#M=V(lNb~ z1V}rQHRzTNU;#}sc&FKY8g3JVa_-25BSQyc#v}(PA_-AE%zp^+O|DS<8SOB!wW7Sm zvsBc;7_o=;Q5JXLxk^3Cejo0tpX2Ye&Pesmf>UHZc%;;Q@K-+cslSdC-byGYn!QoH zR@x#oBOk1{3NyqJ>jhgvK{C^p^A)!FNLy?Ztb}5Lncfu+w3xFjT_&()gk*Mv*4n9( zA&;~pIc+@CtVGCT)F6-CBb1zAoUS;bWbMdaN)?L{HmoBJ%f9j2`$yOL6Q0;05=d*0 zXuqtcnWYmrrmP`4+B*wBFm=^8)8q|jsh41)f71M4H4ypRmb&4455|T+6~THms6Dg_){y zK`N+wzw&Rts!e}+kC8%_VG;tT(A3*}i>sHmT~3R>kD-9s!mkobC6WjDQd59>Dq>?E zhMq{CNbOx7Pa|0kcI`Io+8RfEMr--Iw~u0b8?^)@hyl-w>8eY%?FPDzKX&mEXT^4&PM_urSr=b%MQw{fv-7jw>coJG{IktOXpkD-!HkBA&+Z=FfksF}z~iK2Vc zNK<2*8hTL?`|_f}N%FosW%W6H_IXJn7(G8u(TJ*AR>(5wX9t@QI5EDEvjGW!mY zG(+j1ynIpFtTqtR+-Qq^-B0I4Xq0E6IOAQsX|eQM#iVHK902$3X8la5{IHzJzO5

na5!_!cmT0A9we{ARAP=>M9U0ZHMmyy zZ+`Ftzx_-9>B}FBCp~1qsx$dD11KB8o)#}^25uuW>3O8Bk5C^tHb%CGvmUbblCf=; zj?)l^p_bOtLR_!`hDXD|!WCv_B|+*SR)^NuPm!Fm#M)*fddDI!5d88}(qLW=WNlFJ z{Fi9NhUM18Vho5Ok19hVX>pvT+%&I=7G?*GLg{C_3WWQ3mV2`Y+PAXK9Hbln|B&hLbVEs zelUNv({wib&d_DUcV~-Q^1hNivA!Z}$DL(!emj}VT5Uq~>|9#<&?9+L4IML|s?Gu9 zaB0YpW??cnb;`5^b+tu(5eoG676^tkGmg9@#?S0AP~=j7{EH=T{}7f z12K7~+TkvIV1IXVJ>rM$)A4YHnG8NJEnYvgyQjbv_Bx#q5s+GPBwV*<}G zP*M=ZFjhG|TjflP(*EukaAur{gDuaxSK`NVE?x&Ao`=9RP^3&IAe0VVW&^ZnsvdjgsB{0Y9| z*Hy>Kf7|1va201X39%E-P()4N5RB`R;-*B%VUx`yBRDO%__1*`Wy*|fsgi3{d%iF= zh3s=vcp7sF@o#N5e@N=W!!${RBL@h7-M?C}*R9V~+dh!CJtEO-FMVI4vGImRtB^M+ zzR|*(kwwHLSv6XPT^lLy;@}oA3f8N6^X0=@Mamz}nH(14| zOaCrm0SqlnftYd^C;<#^i9lqd_?aESoovr2Ry)Bjgju-2?iDX^LZtGyElc+J8 z($cOAdYNq_Ld*v9u|2h(&tB9MJwk1TkO+6-Ia}Mx&33}RsQqy*y;@Y7Z-RB5&tA5u zc|x_6GuZ1>TA*hYM7a?gR+7Mq^GqGFt?u;%C3yn1^z#=u__f%pmO)Lyr>!WkS`-{c z&$JlK(u~SKsv;WoVEXAdju!OI~w9}~w(dTzI`F;92dg-I} zm7XjX;ztV?3J<5zr>n8s_T)O<*#4J zZ?>_bDe#%~6|el+w>1z;W+YZvSzjwK6e)u?`bb4NQy^m2DP6D+O)nNC5wG0dEW`hD5&6kl;7AUCv>A#Ka=z?_NkF z;W4{N%#SWtSuK8j)!mS*Fc?xOkK+peK{o>YVKL{aT?moY9*Z2LzHbU>c z`=yKbb^nxZPo=wm;Wq}K*X=8hML)E0)wah?n3aBA2CqS3nY4nKqMbPiZ}mC{a611sT5R z#s1UPL{j0!ff|q|Pgjd`!Y}{W6AKFx)x^CUu}RLtF$5}+Kvh{7Wutr~Z1Hoc!j^cN z*t~9ARxB`8zfcO|)bXMLsu0!1tuj-OfVr$S2wiJk=#bD?v|t9`aJZF&s4$;h%rhP2 zGkiz0c-c%@N}_@CS4&>rvLGB014o9jKt%M3S0Nw!h-X2iLka>nge0#+vToTcv_vr$ zb;nc7bC?bsv;%G5)BCo6^y8O4by4Nk@K|F5jQ5#%v7U+i<91(eKNQD>hjYQ*mQom( zt4VmKb6+i7s`aCI8kv3_`OKINF1s6S6tNuf09 zv~!ri-Z8D|HKl9~3z!&0V^~YemE@a-EG9b2>BmtpcCT9<+X6%{BNBAdusMDDa1u&v z;E7a+t0I{FuSAkXg{Ia@R{`-QH~GYXGw;4!U6nhT!jUhlKH(=Bt6U$dgmLL^c?MSn zmYn&_<%`wsMbWw!MWYxr`xkz|fBF>S)hf>?s81RggO+s1^Iut`e22QG?U}iGeZ1ixPi_&%f6A>o(K8qnP)<__x6?_ zWK@yEU}pTuEXy$Sng+Ff=0Nm=C_1#4#5FKLDrBlEZcld%`#7$U|sIM-Bz}+bGx+uQIH)H*_Su zZ~^6H8z1l zvMSE>WaDn0h~hEU$!5=_=-JOuxGLq<;nXEX@nAVKC7wDgy%1h$w-~F|s>7HP?Tm2F zXIFCl_B<*m@Fw!LQhEi7r9_sKB@_v1U7r$JE+w)YB~l_q?XWKon3pq6(^wXqw$+^1 zXEI47;No#ULnlyo4HaNg?JE{mo@cXG8-~i7lr3<pUTx5 zq#2d6%%M#Ss@rNGVCK$}-x&i;1|C5`-=44Z0JtMKC2KHzP%6bX}#w$_4C zq){|W-e_QW(6DF#2hj-4h7J`^)jZXj4r`y5OSX|APnp=^_x}@5jjzRJ#WZe&m&f%b!(^KOBemKMOsA+jYO)g zxB5sCsZjnN($}dErnnZRU&+lP8R-`pozwCJ_UF;r{2;n=sv zak}nZ1-7x)37;R=f=-*<;3cd+s73N-VVJyO^w&AqNI^Fg`0Cuy$~AIGj*0H42(z{i zKGJ!z(n6O1o{@aUO+POZ11(HV7Ljd6jAxv2t$}7+!=`760j%TKc=u*_$34D@mh8FO zxXo((Ql*QXt@2fGM&C&=_c1PXMPN$+^z0_h&ehbzo$%n%zzrXq1r+v>)@91fN z^XE1)Vcqibt)Kn@`@{oFn;}X{cf0juFIJ<0w;a89{gI!2>C+dhZJuWAkxTWr(465c z*No$anA;j+-o0eZyQv7;lc2>WsxLzBc(ES;r=^XOsY5h~zse(n$d8GeJ<${6{0?3aJ# zjk&PgeYx5}2U}9qn)RNi`x1THeYZR+%g@ecJ;Pxnt!+`8*7ga=sI`RJIY7R@RL)8v zy+_hX($S?VjpV?&Glkp#`MQtYb(znlOR2i_0hD;nh;Kz{(C~*UsmNr&M^tJxaf+D|GRwWn!OvhZg;lUK(PXMV zmJg^s_nGMN7pl>syhn@jPSeuzyec9yZUD5Z7}?($4sm|EteD^))$F8W>#u zabu#E28ztO+)3(K4r;HF!t%!zj?KL2#`u9s!>w&~8&d`;|FqW<)TmtklEV54#ed2c znAYF>zM*EIo?Q@a&*v1e1|p zMC;indc-8Q8w8=MGKaQ)RQIqA|9 zpiCbjr3?FP5RN4ublwVL3@xdxBW|VGL1N-(Ly=!b=zKQn(JgybQZVaGDX2qtt>}EO zE1vx}mekB1Sr+_hoJm~DRTH!39}Bvf8HF++3;Cyq9!?pD`tB#-m$FR%OpJZf{Pk(; z<1eV91YwRM`NAl^y?yNLmc%wAn9U zb={R7{L9m`KqPhL0sCiXU-m=GNsju3wiF_YqV!{H zqc{HE;J_Okc!L9PaNrFNyupDtIPeAs-r&F+9C(8RjU33HOG_{PA1z~1e>B?ge)O*K zyRvh4P2PLg*jFN8@ ziEK|ak&W&e8QpQu;KW2UGC9^iwr_OG9;UK=^#{H*J@3iJ>mR3%pPWul96xz{KAnE( z==Ail>0?Ujo?%O8a%ym5up!-SYHUwEuK()BMh7hLzH`%a>D=_$2dB@?PajL?r{_){ zKXqjO_~}#8#NZzCbB~W;f%~)F{f*DzQ-3x(HW~utcL(N9pSnLiJ(r$5e(v0HZjU}N zee(FxBPY`PPS2fu@Whd5-{`K&FAkyEEm&!=bRP9L2LD zI(PhxvUba+W4AWq+w<+W-yUr`7i~Ibg*rZWdY*viZcUFIgS}hkrca(e51acRI5Kzt z^ttrZ^n>$r!r|Q*1tI1=c%nj~FVzd2&W8+g10payv zG`5f8o){VJA0CNvaT}TB)!0NdNr-54@WA-w*w9ckFgA)z4GauNlM{ox`6ug-CinFZ zk*DKiW$46_`w8CgK%B{a`=Uu^M-4A7>!$f^DZM&4@whI=0;+IMPh`snHVPpKr*(^kA& z)9R*k)!RF%+CiF6-M=-xfBMw)oR2b;u(K~Yf$ng_L?maP`zW4b21L>Rk zPoF$9hb+D+q;dm3hn2h#a1pKC0?mgzod)hBo2-tD@*Jt{>pipPoMyuKf9{U%CG@*DrAC`Iq?p)o|(gv)q3!Ts%g<$NlezOV5AA{g=X}=dW=8XI$Un(qG5w zDC*)mAD-XD{da{c$G?N;ZCrZZ$!{aQqHhoH_J!~Ngx~jsOX;8D{w$Z`=#R3y$IHz< zwW9UUw>K5{+_Z_~y~j@+pMPJ}q|om%>C~&ucDH48Yjk?<`2Dn5Crse(IrZSld!;ZW z61VHq=2Q31MOy~9+M9c5>5iX2a$@?_(P@LDf~CM*QLLupCu#_s#siiR^1 z?<~LPxt{i==r}hthq)zjGyVeott8L9j{v|({ppcy&B{;audludEnSQKfoT1Zs&2+x#RqM zdvrRQjvkD*i6RVBZ!Teu982#Q2nLCy4$I~E{SVxGdM<)|W#?G5IeIe*W5c@sfx)32 z!y`L)?cOswHcm>lhIwmhNKMZ*c0^k@oe&+H&fN`FjG;xF-i&7FPya+)zBk&m`I!HI zb94(go4IZazqi^Ods47l_0R43jb7Uu-E7)?G|C=)Xynv=r|&j2asKdDBAg>x#k(!~ z@A$dzHvRKYqLKB;E7xwW39jv2JGch9_Hi|SSN(= z{C$c0Kjr$*T$Rmlevo24wwa5psjQ>#G8Vrjx`Sj%&}dGGx1FmPes!-)&${}fh|bTB z>1gtlIzW!c#{YSr|4)wn|76quPk8%_Ux7a`h)e%9{T1!6Q1t&XD$M_dh7kUHv9-{m ztA+0^P2Ux?5EW{FF$*LT=%~@{X;QGb_O5orTkiGONY?T<`F9$qRqt?|JdfnvzlP4A zLXkX>#3swSiK8)Yl7# za2z-e90!gA$ARO(ao{*`95@af2aW^Bf#bk&;5cv`I1ZeCaQeaN2d5vLesJh7Wc}dK zsm=Pq=?AADoPKcn!RZI5ADn)0`oZZ3ryrbtaQeaN2d5vLesKE1=?7;3oB?nKz!?B% z033P^*#J27IkEw82EZ8rX8@c5a0b8`0A~Q40dNMu832baMm7M>05}8S41hBL&Hy-r z;0%H@2+kllgWwE;GYHNgID_B}f-?vXJ)~?9oI!8~!5IW+5S&492Em~NlnsJ22+kll zgWwE;GYHNQI78qJfinco5IA(EvLSGWz!?H(2%I5shQJvDX9%1jaE8Dc0%r)EA#jGk z83JbroFQ;Pv6I6J`E0nQF^c7U@3oE_lo0A~j{JHXii&JJ*PfU^Uf z9pLN$X9qYtz}W%L4sdpWvjdzR;Oqcr7@T2nhQS#IXBeDeaE8Gd28XU^HVn=%IK$u! zgEI`yFgU~D41+Ta&M-K`;0%K^49+k(!{7{qGYrlMI3wVUfHMNl2sk6)jDRx&&ImXo z;EaGX0?r6HBjC{C%tpW&0cQl95pYJp83AVmoDpzFz!?E&1e~4V>;z{gI6J}F3C>P% zc7n4LoSoq81ZO8WJHgor&Q5T4g0mBxo#5;QXD2v2!PyDUPH=XDvlE=1;Oqov7dX4X z*#*unaCU*S3!Gix>;h*OIJ>~v1U8=T$X>;`8yIJ?2w4bE)_k*#piVaQ1++2b?|N>;Y#FID5d^1I`|B_JFeooIT*| z0cQ_5d%)QP&K_{~fU^gjJ>cvCXAd}gz!?Q+6r53TM!~_&k&S{g3eG4vqu`8!GYZZq zIHTZ-oH205z!?W;9Gr1*#=#i} zXB?byaK^zI2WK3dad5`L83$(^oN;i*!5If<9Gr1*K=!PyJWUU2q;vlpDb;OqrwFF1R_*$d8IaQ1?;7o5G|>;-2pID5gtO_S{fXD>K= z!PyJWUT`MBnE+=3oC$Cyz?lGN0-OnOCcv2hX9AoFa3;W+0A~W632-LB!TXs_fHMKk z1UM7mOn@^1&IC9U;7o!u3C<)qli*B(GYQTlIFsN^f-?!uBsi1cOoB5B&LlXK;7o!u z3C<)qli*B(GYQTlIFsN^f-?!u6gX4hOo1~6&J;LP;7oxt15RI8)$E zfinfp6gX4hOo1~6&J;LP;7oxt1=K?E_~YIQzia2hKil_JOkx zoPFTz17{yN`@q=;&OUJVfwK>sec<4n%l3h@4;=i4**WsaQ1_<4E*IQzlb56*sY_Jgw@oc-V&0OtTW z2f#T1&H-=^fO7zx1K=D0=Kwedz&QZU0dNk0a{!zJ;2Z$w05}K0IRMT9a1MZT0GtEh z902D4I0wODN9*h$I0wNw2+l!p4uW$KoP*#T1m_?)2f;ZA&OvYvf^!g@gWwzl=O8!- z!8r)dL2wR&a}b<^;2Z?!5IBdxIRwrja1McU2%JOU90KPMIETPF1kNFF4uNwBoI~Io z0_PAohrl@m&LMCPfpZ9)L*N_&=MXrDz&Q-gVQ>zEa~Pb%;2Z|$FgS<7ISkHWa1MiW z7@Wi490unwIETSG49;P24uf+ToWtN82Inw1hru}v&f&w6!ya|mqYiu2VUIfOQHMS1 zuty#CsKXw0*rN`6)M1Z0>`{k3>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW9rmch9(CBG z4tvyLk2>s8hdt`BM;-R4!ya|mqYiu2VUIfOQHMS1uty#CsKXw0*rN`6)M1Z0>`{k3 z>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW>8f&pgFWi7M;-R4!ya|mqYiu2VUIfOQHMS1 zuty#CsKXw0*rN`6)M1Z0>`{k3>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW9rmch9(CBG z4tvyLk2>s8hdt`BM;-R4!ya|mqYiu2VUIfOQHMS1uty#CsKXw0*rN`6)M1Z0>`{k3 z>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW@%?jwgFWi7M;-R4!ya|mqYiu2VUIfOQHMS1 zuty#CsKXw0*rN`6)M1Z0>`{k3>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW9rmch9(CBG z4tvyLk2>s8hdt`BM;-R4!ya|mqYiu2VUIfOQHMS1uty#CsKXw0*rN`6)M1Z0>`{k3 z>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW9rmch9(CBG4tvyLk2>s8hdt`BM;-R4!ya|m zqYiu2VUIfOQHMS1uty#CsKXw0*rN`6)M1Z0>`{k3>aa&0_Nc=ib=ad0d(>f%I_y!0 zJ?gMW9rmch9(CBG4tvyLk2>s8hdt`BM;-R4!ya|mqYiu2VUIfOQHMS1uty#CsKXw0 z*rN`6)M1Z0>`{k3>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW9rmch9(CBG4tvyLk2>s8 zhdt`BM;-R4!ya|mqYiu2VUIfOQHMS1uty#CsKXw0*rN`6)M1Z0>`{k3>aa&0_Nc=i zb=ad0d(>f%I_y!0J?gMW9rmch9(CBG4tvyLk2>s8hdt`BM;-R4!ya|mqYiu2VUIfO zQHMS1uty#CsKXw0*rN`6)M1Z0>`{k3>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW9rmch z9(CBG4tvyLk2>s8hdt`BM;-R4!ya|mqYiu2VUIfOQHMS1uty#CsKXw0*rN`6)M1Z0 z>`{k3>aa&0_Nc=ib=ad0d(>f%I_y!0J?gMW9roz|!_l2&%XT7B6r9_Iq;POYMSf*! z{u7ZsHFo=SZAEb5WjYk`gHXdy}+IZAa6Q%rN!=sHy8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@ zc(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj| zwDD-;(Z-{VM;ni}pYs$v+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj| zwDD-;(Z-{VM;nhe9`!Gc?C@yg(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_ zXyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0o zWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-; z(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G z#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0o>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehw zqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oW zjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{V zM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi# z8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IZASDcRxC#-oi# z8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%! zk2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`g zHXdy}+IY0_Xyehwqm4(~&k-^nZ9Lj|)af>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%! zk2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`g zHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|)G-s;;nBvUjYk`g zHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe z9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~ zZ9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{ zJlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy} z+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@ zc(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj| zwDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4) z@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_ zXyehwqm4%!k2W4{Jlc4)@o3}G#-oi#JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr z=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^ z(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM z&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|=+E)u z&ZC`2JCAlA?L69fwDV}^(axitM>~)9pCiFM+Ih6|Xy?(+qn$@Pk9HpIJlc7*^QZ$# zvcsdDM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM z&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+ zqn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oi zoku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axit zM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|=+6Q1&ZC`2JCAlA?L6wj4cXz*&ZC`2 zJCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@P zk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5 zb{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~(Y zzEpO2wDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpI zJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K z+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM}71lJ3QKX zwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7* z^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6| zXy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr z=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^ z(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM z&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+ zqn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oi zoku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axit zM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2 zJCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@P zk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5 zb{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p z9_>6jcy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW)C=g{>_f9Zev zzy6jT9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm z2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5W zj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC z4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7% z9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO z9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4j%Oxfb8(-;L*XOgGUFC4jvsm zI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7 zcy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXC zbnxil(ZQpGM+c7%9vwV7cy#dS;8CAH$_|eX9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O z=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS z;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil z(ZQpGM+c7%9vwXDOJ~{P(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8 zqk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XO zgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpG zM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm z2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5W zj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC z4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7% z9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO z9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9Ik zJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsm zI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7 zcy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXC zbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E z@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O z=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS z;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV%F^62Ez$)l4;Cy!1Zojf{ubn@ur z(aEEeM<SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v z@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET) z=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT z;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo z(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w z#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1E zql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#U zi$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>S zM_v9RJ3P90bn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ru zk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oa zE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS z9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF; zT|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifv zJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Px zx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@T zcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByY zbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v z@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET) z=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT z;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo z(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w z#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1E zql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#U zi$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>S zM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy z7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ru zk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Td35vW=F!cgn@2Z~ zZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd z9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--} z-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_ zJi2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{ zx_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{; zd35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^ zbo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w z^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ- z=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW z=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQ zqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cg zn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocq zM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqb{+Q9Uk30>Xvlb;nB^bn@2Z~ zZXVq{x_Q)<*|Nimgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_ zJi2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{ zx_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{; zd35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8||V zbJ^k1&7+$~H;--}-8|}Yec9pB&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW z=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u z(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqu!{L9Uk30x_NZ-=;qPQ zqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cg zn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocq zM>mgd9^E{;d35uro9AVRM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%J zk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ zZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd z9^E{;d35vW=F!cg!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W z!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1;W!K1GHmK`1q9t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E19t|E1 z9t|E19t|E19t|EnJbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh- z;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86 z(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u z!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`B zqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmR zher>O9v(eBdU*8k=+A>-her>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s z504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTi zj~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O z9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu4 z9z8sIc=Yh-;nBmRhetgvC_6lQc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9 zJbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eB zdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sI zc=Yh-;nBmRher>O9v(eBdU*8ksMl^}her>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa z@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k z=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv{1tMcLue!=r~s504%mJv@4N^zi86 z(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u z!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`B zqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmR zher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#M zM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s z504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTi zj~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O z9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu4 z9z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%m zJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9 zJbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eB zdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sI zc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=sl+y`rk7uK#Fg zYH2HUbd@SS{ifgbhyK)m^-F)rgTFj_dGzw=<<r^wlNFig5|%dhzJRqZf}}JbLly z#iJLGUOam7=*6QKk6t`_@#w{)7mr>%dhzJRqZf}}JbLly#iJLGUOam7=*6QKk6t`_ z@#w{)7mr>%dhzJRqZf}}JbLly#iJLGUOam7=*6QKk6t`_@#w{)7mr>%dhzJRqZf}} zJbLly#iJLGUOam7=*6QKk6t`_@#w{)7mr>%dhzJRqZf}}JbLly#iJLGUOam7=*6QK zk6t`_@#w{)7mr>%dhzJRqZf}}JbLly#iJLGUOam7=*6QKk6t`_@#w{)7mr>%dhzJR zqZf}}JbLly#iJLGUOam7=*6QKk6t`_@#w{)7mr>%dhzJRqZf}}JbLly#iJLGUOam7 z=*6QKk6t`_@#w{)7mr>%dhzJRqZf}}JbLly#iJLGUOam7=*6QKk6t`_@#w{)7mr>% zdhzJRqZf}}JbLly#iJLGUOam7=*6QKk6t`_@#w{)7mr>%dhzJRqZf}}JbLly#iJLG zUOam7=*6QKk6t`_@#w{)7mr>%dhzJRqZf}}JbLly#iJLGUOam7=*6QKk6t`_@#w{) z7mr>%dhzJRqZf}}JbLly#iJLGUOam7=*6QKk6t`_@#w{)7mr>%dhzJRqZf}}JbLly z#iJLGUOam7Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe z9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~ zZ9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{ zJlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy} z+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@ zc(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj| zwDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4) z@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_ zXyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0o zWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-; z(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G z#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehw zqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oW zjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{V zM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi# z8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%! zk2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`g zHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe z9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~ zZ9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{ zJlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy} z+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@ zc(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj| zwDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4) z@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_ zXyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-;(Z-{VM;nhe9&J3@c(n0o zWjYk`gHXdy}+IY0_Xyehwqm4%!k2W4{Jlc4)@o3}G#-oi#8;>>~Z9Lj|wDD-; z(Z-{VM;nhe9&J3@c(n0oWjYk`gHXdy}+IY0_Xyehwqm4%!k9HpIJlc7*^JwSM z&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+ zqn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oi zoku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axit zM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2 zJCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@P zk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5 zb{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p z9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA z?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpI zJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K z+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Z zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69f zwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7* z^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6| zXy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr z=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^ z(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM z&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+ zqn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oi zoku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axit zM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2 zJCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@P zk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5 zb{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p z9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwSM&ZC`2JCAlA z?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K+Ih6|Xy?(+qn$@Pk9HpI zJlc7*^JwSM&ZC`2JCAlA?L69fwDV}^(axitM>~&p9_>8Zd9?Fr=h4oioku&5b{_3K z+Ih6|Xy?(+qn$@Pk9HpIJlc7*^JwsB@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8@M!R8 z@M!R8@M!R8@M!R8@M!R8@M!R8@M!XA@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC@@VpC z@@VpC@@VpC@@VpC@@VpC@@VpC^61U{-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po z&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY z-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW z-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3 z{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p z%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po z&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY z-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW-_88p%-_xY-OS(3{N2po&HUZW z-_88p%-_&MLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEW zLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU z(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r- zH1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH z4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{l zLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t z&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu z^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@ zJv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe z4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEW zLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU z(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r- zH1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH z4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{l zLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t z&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu z^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@ zJv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe z4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEW zLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU z(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r- zH1yEWLqiV@Jv8*t&_hEH4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEWLqiV@Jv8*t&_hEH z4LvmU(9lCe4-Gvu^w7{lLk|r-H1yEm(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsm zI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7 zcy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXC zbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E z@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS;L*XOgGUFC4jvsmI(T&O z=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbnxil(ZQpGM+c7%9vwV7cy#dS z;L*XOgGUFC4jvsmI(T&O=-|=8qk~5Wj}9IkJUV!E@aW*t!J~sm2agUO9XvXCbns~L zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(A zXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz^(AXz}Re z(aEEeM<SM;DJS9$h@T zcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByY zbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v z@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET) z=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT z;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo z(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w z#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1E zql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#U zi$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>S zM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy z7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ru zk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oa zE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS z9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF; zT|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifv zJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Px zx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@T zcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByY zbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v z@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET) z=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT z;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo z(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w z#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#Ui$@oaE*@Pxx_ET)=;G1E zql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>SM;DJS9$h@Tcy#gT;?c#U zi$@oaE*@Pxx_ET)=;G1Eql-ruk1ifvJi2&v@#x~w#iNTy7mqF;T|ByYbn)oo(Z!>S zM;DJS9$h@Tcy#gT=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~ zH;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%J zk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ zZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd z9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--} z-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_ zJi2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{ zx_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{; zd35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^ zbo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w z^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ- z=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW z=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u z(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$ z&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQ zqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cg zn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocq zM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~ zH;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%J zk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ zZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd z9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--} z-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_ zJi2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{ zx_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{; zd35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w^XTT$&7+$~H;--}-8{N^ zbo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~ZXVq{x_NZ-=;qPQqnk%Jk8U2_Ji2*w z^XTT$&7+$~H;--}-8{N^bo1!u(aocqM>mgd9^E{;d35vW=F!cgn@2Z~9v(eBdU*8k z=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh- z;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86 z(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u z!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`B zqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmR zher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#M zM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s z504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTi zj~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O z9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu4 z9z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%m zJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9 zJbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eB zdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sI zc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N z^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa z@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k z=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh- z;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86 z(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u z!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`B zqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmR zher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#M zM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s z504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O9v(eBdU*8k=;6`BqlZTi zj~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu49z8sIc=Yh-;nBmRher>O z9v(eBdU*8k=;6`BqlZTij~*U9JbHNa@aW;u!=r~s504%mJv@4N^zi86(Zi#MM-Pu4 z9z8sIc=Yh-;nBmRher>O9v(eBdU*8kD2~!7jIt<-k|>CBD27rfgfb|C5-5Q3Cw|f= ze6lBck|%g_Cw5XNbTTJ$5+`u-CT`LuY_cY5k|t&KOtK_Ok|aoSBt}vsL^32o5+p$KBR5gpL+ z9L~`k%&{EGksQcz9L7-`#4#Mg5gfqr8@|ySys;a)ksG*i8@5p!v@sj95gV}a8m`eA ztg#xZks7FR8m3Viq%j(z5gMTJ8J^J@oUs|2kr|kA8J1BQlrb5S5gCy27>>~xjIkJs zkr;?^7=}?8gfSR`5g35+7k<$fe6bgLkr#Mz7j{t>bTJol5f^ar7H-iNY_S$@5DT#I3a-!!tgs5IkP4`93Z_sBq%aDi5DK9137*gioUjR+kO`P@ z36@X^lrRaB5DAd*2#(MQjIaobkO+uy2!>DygfIw#5D0+q2Y%28e6R<4kOz2h2X;^g zbT9{U5C?GZ25!&>Y_JAukOpXQ24+wOWH1I|5C&lI1zykvT(AXNkOf$91y)c6R6HI7 z=ukFCvN@2=acmA_a}=9{*c`*=5H?4!Ie^XaYYty?^qPa$9J}VwHAk*FaLsXR4qJOX z+Rwpvj*D~1nxn}a=;atJhetVb$w5Vq_i-qWqhuVw;@A?0eK;b+!4i&RaEO6-|GhEq zJ#%kod#Bl(z}}zr)~RWiLZ$Efvz>D@?Pxn%{ zSE0Q??6q4jt9r%Li;-R@^b(#|*SzrMH7PF_c_qh-EMEWc(u7wH1ijXl!3tG8>N?4# zhJ=cSzb+n--4;U_LR0MTCM$N%PEfAW|A>RRX-+%Sne|_)OuYbqqKl{^D<*-#@&3`QqiBGynYA=MO)9^2NjZkAM8^ z`NQ|#fAaB*FTQwq{`&o=pFDpZ55M^7i@Og#fBMbReDu>JQ-A}&y{PnXhKYzIY znRC3l|JlRqzj=6ge*gM!Uc9}(cOSXe_kZ|-JNDU=SNC7Mc=>Su`m-m`?>~6@_9Ay5 zJavmNA3lBYi|5b&-NW0j-oO6Umk%HQj<37rmk%$#Uc|>6eRJOXXV33{a{c&mwcI~> z_3GI#p1UTu_vHT7v**8fw|IBWJ%0J*i?^%MMO@jJFCShz$NLMvUEIed{qy@5FTb_8 z-@kwI^2HZVUO)Tv-D0;Fpa1HMhnM$XJ%9H4@z($O+Xv>{bDtaPu8!;mExckrV&cD06p1OvwzWABZvvYX$ z`pL_;8`^KrQ2y}E=3qBsZ0`QCt^b2pcYk*G`?uw9?Qni_e{UM@@9zKO@BAnK=|8&r zi+BJ2;79-Jlb_yyd=p1MdfXL#c>mKEk7xYucYX26&)zJ~YkRwwfA#S4*B;on=lQi! z^!vL#&HnW3yYe^~kK4_=Y5&uA*ZZx@eEn#Dv-W=LdOs8wKfL#|cOQQ(_~VDy5B~M{ z#mH|g?e~B9gEvF)xCy>n+{ZJ2eEs;xKl=Fg36%XAQ~uc1-~IXbzW-1Ei~sVU{a63> zci*jqk8T%1{?=%|UzE@7$zMNv@%+u!VdwdFv$}tHZm;*Lz0%uV*qaUZ&tARuXxl^B ztnIQMKNg6OtN8IYerusW`ew^}eBA$z75y6<+1>Bn6yGlKZ=Cl-sD`P(dyxO~#fzt+XMKDymL{>zIEKmPIKHTzl5D(CmCzHcqe zUp@TlPweErvNb$;_VV3Y{Pw)RTVaon+uygkzV$G_UB5rL82>ki;s=kVx-^xypS`k@yk-fr37%>SFs;dgK7AN{~If4$wjUHHHFNVt9M6%cz4 z7rlG)to8WxlRtdi6FxpA-6PTSPoF$Ky}g;off8TZR%`%o&qN_l?baU8OB}!Y^6`n> zH9WH8;g_Brzb4gBKN5Q%UqAWDkBry9xc}!Ly!sd4dHna2ANu$HgIC}A&YN5K&YchM z?(g3auKxVH_y0bBzH=w&?{0S=eE+Hc?(bddyI+6s_S3gtd2`+My*E#p_RAmq`FH>H zpZ@&Yf8T%bC*OZWK;>zhwJHs6u2;z@b^#J?X)&!0%tkG0uPycqN5&wu~t ze{lCdIQ@@K|C7`I?DW4l{jW|RDe=eO_4EUQ{{GM7`TsYk|J~{TaC&@^}(*1E+s%z0Q}9WBc77zTZ(l zeR%ch%V%HOQ@@e0bNF6+^77dmO9Z$+|Mc1C&(P35|L0E#^y!CppFMqjm+$BG!@ECw z`O)KFKY0A>;}7pX`s$aTJpcKNzqtFegA%6xam?R8=fC^rZ#|#i|LOthpS|5C-s~qI z$?$C{zFqQfaPWAhS6^S`acA`EjZ5C$#czG#2akKc-^Kg4SNUc?_DJ$~m;B}?-dxAm zH}PhvK7H}xr8{Ih|Fv8DyT13$^?mEYzZ>~)w&nXLU;Xm`AM?My_`g5&zn+9QYvI=+ zc=z#FU#K?wws+6!zy9s}Kl<(u|M>lr!_S{t$NK3{zIb>|j&CpU_BtP){o*sV@#fr* zkNX#IALYCI@BE{?Z+&`qfA<%6KZX5IKYRA_$>;B{_!|wqeE4ha@$6^DQGz}*VlN+) z<;C;6e`!=c*D6mRG|v}yuut!a_nR1ce_c;L$085i{fjqhd^0Y8dVhO!8Q1ju7w^yb zR0R6;t7or16A@p0sSBlt9quP@BIWDZzkhV+pMLP_{r@!BgIoUe;nge4aCiSlZ#JOk zZ=MFMs`uCAVox7^`@z$HV)y-+J-`1N-%-L6efjy5U#ZK-N8??6KRyNA|ITau_3L|F zyx+H!w$N89_c7S-{)r^CdLQop(uY5P_DlES@uO$&*#CHIfAs$MXKY97^`Q!8G+ammCNAv%+_ulbQ6M4Is1y-U6vc`P zhzQ90Ju~-iNrF$F_kI8QeLlbW zaKiLAfrY3XEHrT;dcRj4N&@oEA(T8hHk-rCbzJ4HQmW8-)djyCggV%%BUW3XSYfh*bmBDR1RGU(XUd)2j>cB*%s0$_>U3jt)Tq@dp z9ytt(;Rg*SoL|+ZbY%@rma2~njevqGl`wRns<075l{zNX2pfG(U2r2-#c2;uIj_%I zK0Dl=sx9a*T|GAE06p5cVr+y9cO5sF=l{{7+tYoWQt#y}-NJ2V6%bSa z1(Zgz3Xl}7z(u#vnxa-%nrEP# zU_Ibfz$<{40WSew1iS!P2Y4Rv9AGVA4PX!86Ts(yX8M+L0J|&I@2BuP z0QkT4`+siz#-je>0Q?&dkjtQ)qM{)sIVJsB?^#p=T}m-Eyb%ubs!aY3oo&^gtp=z4 zn9hdG(9{{$f0^LsR9c;7Rh}vZ^F!X!=}k74{=CK}9@Y6b=q3jr|6e^7^%>eHN9j{+ z?K7lLai3yGpAttO;xPjjGMIu;UH*A}*n?nRF*a8m1mh1jf#ESn z{&&zIC*`sS3kp)-&2QIQo}dsJehVO2D&oQB#d2kSBx>{N_DD<==z zv1$$OjT(fnX`}($Ff(sieG0%B`ThQtGeJ zfJz!{$FN9)Kwe7u$VVCFmQw*#6Mo89Xc!XjrlN8h;G)4c8Z?ed6dF>-lPS#|$<+z@ z#4?Iq;>!J3$7cT4kDpWdUzpRVg2-dw=dp@`-Ghr3*}rZ|+5B7|{;$Dr04)Q%TPGHJ zk7h<@^K*UpzX87yv<&QyeHA@tjXoh;ywv00ci?Be6$87qzwaAtO=z0UIc+E~q5o>< z{|E3#frNqGQzaMtH$=1&{45W`ohYTSKz;^)G>913J-z!%2{s$+@Mr2St zg$42}_+voB5OnRb`8h*H2!^@>f&XvdXZgjz?(tK@ew?lAn9a}4`5&A}unfe6*I-KU z@(1`6@XNsN$6Uf8FM_`jo*3BO z{@8nG+g-d)@Q2q4`-W8=Bj_^to8Xs$UCxI2JqBFpE%>$eV+b$xut4;AI%*0&26lHR zpZ_-f?>^c5oW%d&>Z&?{gP#ffE%3|0ZcJMF_=59&v-w%;e>#Jy0qKoU?bb*MXc~Y& z6Tb}XZu>6dsY8GD%jRdT{qZx^6$sE#;OBOtwUw>^yf@l#S57uif%eDG($xqA$QbZ* zJJH(8$Dfb*xyyyTY)Sv$|Hp&BEyx(y9i8*w1EVJ8iSmz>sF44)>p!tZ{PSnUPwa{K znXlVK-M~Kpul-fj9XEZ@;Kn{Ti}*G9 zQM=a%)71m~h2Z^<%HMo_?CdiWhh_7t#(xFTAvmrB|4n#eVE5KdHzdY~{2OR^uhg;Zw9o2idDF6D%p8?>%1$+$b?*91I zThE@C{PmGPh2ZCPECainUb_Ct^Swrh_<8&aZ-2Gr&rRUJ4RpL7W_M%9&lY`GE%|v) z5zb#r{J=p&%7G{!nfu@f=m9|{ZE@Es*&MmB={ZpEmcwD#x{xls`^$De;RP%>8~xn zMuEQ!bPVivE${#O>5c!wFUbP`M}vP1-Wb?@e__q<`>ID>DgIg&a3}a(;HwbanB09o zqunnXC4cSwhv$Y_Y~c6e*QfIL+|#G%lj_?={E5JYbLds7;7=*|6}&RAd*OBKy@xgi z`57l_UC&7mwm&UgC-}$1X95$#ef4DGGn>wj4#;1|1?5kTK;Y*BKd*+WnGo*MgJ%vO z=yiukKj)uajb0xXhzI*0!oaTW7sCtAKY6Fff9=+; zmAa(m{}aJK9lsB&sKXCma-6%tBKT|1pGEzL1#&m|9|11|yW_iG{EkLT{%E|15r@>j zAjZGR;GcnC26i(xRz#h@%OdKZ-)r#KYX4KgKNEBe>>L*_%!po6fBtFUp9Q{01vk;N zcWj7^*(B4?s2cIBRKcI=;C~#i4D9+=-?IAJW>!&t{QlqgXMlem=oT0{qLs%fRmD zibdm}JaVP@4YlfT0r*#dZ>8WS>f*)>@@{**<6jK^XTZxKoaa8{_9gY_Ukd(JV0>0( zC+6Q&fBxm*UjtqSc5Rvu?Rlb^qu%Ae68!7H_k!Ri`f`9_LiFbP^REK`i{NEoSEXMR z+2p9B-sQIz{I7s-z2HVW9F#iaKlhXh{@Ux8TGdDE!2cR}8QA?(keD%IspOBxdwBad z37XJrq{}%YSf|r5ahbQ{2 zJa)$w`D<0cX7FzZ9|OA+uig;<>(X*je~s`SUjDjT^5b3be+asr%naA+AInYg{hU`Q zzuN1UZQ$PxzCD5)^Y2wB3py{8{Mz~gg^&jqP1Om@b!G9FL4D7a^ZFl=)TPm`}OFjPW2mdk9F|aE=_pN35R}~`v5)=AA zyfv`TA@Co^F9W-c$CkJIINNmv{@UaJm*D>fd<^Ww{O8Ufe|U_wnjakl|4HyMuzRvQ zG^n~tQU3g1gTGe$KMwxyLC3&u&ajVvY5le9iu^St&8@{r?60r}4tTZtl_RHveg< zKmTvwKLB~i%#)BhWPt@`^D{1*@&13NPhKvqw^<3A7ni{N8m zH)(2@LC;R9KmSGW>ySwXb_yZcvc60stqro2sUIun!-uBOF zbiDrjao~>yF9W+jc>88w{rMAX#LvTb=Km0XN)7&}8h1Hz_5Z-14*oQxoq^patqz~R z$2#^3?MEe&q~d>L@Mi$cz;5h~4G*lCU4Q;&HTXNdvgFjN|A9Xf{LK(I1G@pQpT6|j zzWT?1RgL_MK<=zRe;e?(MBEJQ4y^Fr*f7~w@A7M3gI@%aP=Ef8;BSq%8Q8UsxbKO) z;`;M<0e^e&G6dYL`txUjzYTa90`AWG^Ir@8e{d@&9 zX*zKug_^ZOFU=;K0drjkn{>*9E0vZCN2aj0P#L=wcj=-%;z={st!Z}+8(j{;T2+eE zq+tfw4LLn0tD#Svi1QWz;WCo)`{?_19GG%r_pS|_L=3p8|8?<&ap{KaW;b-`+2TK) zn(8uJw{IC4lbY75bHep~qkD8~)FmgXSK?K9S-HJU#y0KR#$MC>+6IjalCK_w%obO{ z`c%RGKMu2%!S>Wz4U=%iF}6w^InBpGSlC5M3s2QJn(Z}%#%Wd;Odo);WcvLufMoM= z7;M5=(C%4Z zj21_c6&fK0(Q8Nd*i}>Y|!m)v)QbjKi@H3ujuhty3Hh*gvqDYA3sc zqvKOe72>Q%CyyIU;%KG}n)0<=iqb&HC^J}YvUM((85>5z7`8go>u~r&iq7w>gta6L z^}~rvtJuh|z@xw#Q~QCT=AG0w^MQ8@PxD|&l)x3TeAQk*oR0XR}8S_$(zD{&H^ z%TjiwN>sK5=f+`Nikzd7$+PlQh+gP-mO2rv4<^dvKs|`dmXEz#`SiZR=SYAZ>ceSf zo5!Wr7?*(>rds<7GKy14`3^n|B0IENNCuvED-E?anwqf7YplQ8Ct-b zvlOhRFm%v5nww$pO>5$%mP+oL974cTbRjiIq!EV4QH1LYJg_N7$FZZ_VZkNeLwiwO zJ<~1eLOY^*q=B1*l;W9+kV3%>6^rb0T&fW<3QNUts)ER%w6wVRm^>ftk;ivfMhAUE zv1n9iq@r2l+_4>^>EdqQ7IAin56Qz08iSA1 z=0scJObBTYtn9;lrieOq$i$h%Te?o5cJ3;dtGyhG_eR`1DwQ4)>+_-hPo%t+~qQL!&|W!zmM%W%kYuOVEJa{G93ZcVt1D*~w+=$4`-DPF5W#pTPFKe`|R zDB*zm-yG@KC?%pnWR%Ls*DA!tCnP2%r=+H(H_B+-q-nF}EizlSx=IrKH~;@F`v2dl zkso6NLxiSh8uFIKRQCLlevLZimt1K1L%+p;-nTDWIisUij}64Ld=}3>WWIeovZdmvP<;=<>+s*&bTSuRx4VLZH+kG|d!!2Tk z5noZ%kDaOM>`&;YX8%z8mz&bbzN_f$wNohntEaeP4ribK6Lc*e2QOSqQowzsNtwbsIo;R?Y*ZbMeS;fJL)#j($ap^=|?lY z*|v&K{PaHEIO%sf*Q)`|9`-O@sQ8guylke((KD&5VFXROIDme8u7Wb(-b+2tETV7L zG^0B#k5gom@92Sr4tgrZOf$2~Y4X9#)K(cx5fR;J=ZIALaJ52{j^9ZYGqzC1wt=*# zY%4{b{E}{+dJR1?ZW}$@bROluc!V-WenQXmHIb>oW$J!UKYB0gBrOlYW1&8QnFjC5^fIF8bX4H+Ahao>Ked(Q7F?Xluq2TDR>z z>WB;3VqhsT?d}2e&Dc(~c*i2@ZpFUKzPo7ss`+%?@XzT$-#=+ZLL(YH?jqTjTtnUi z&ynq}zi8r1BPl)gd)k8A?E36KM62$Gy_BDC47JIFEjr zN}G?Ng(EHW{DpyZ&%Fn!m16^Cot#eJy>lm>+O~&WJ)>xJzt1S`=mEN=&rv$McsA{8 z)sEUtJ4wfJb=8iYSrqwA8hv&5E=u1rlukEWMUB3?jXEdyps7h#np&Wvvya|J>t4E- zn*Zd5gI{?Z0{k?6mbZ@D7oMO?pJTAue36>Z-A&$)ex>BTXX)qPC)2CnZ>9JDYDaTS zbLri&eW`QQs}$Y;G(D8`Bt4foi8{Zwj0Vnrk0xbxp_t*7NMPB zS$&+&9Ggxj=gz0&-`!6OyUnMEeyJd{xhK7KDUJ#jt*5e;E*k60rJ19%Xj$qT^!AA; zn%S*2o%8piuBN6G8w1;@$a3oVEAB>IJB$3^>uJ;etLfa`&yu^qN6XSq(W7&prS*^h zNuS`dw!IDipv(o`>FiDS&?~lbI?~rn*`p2g!1Q}@Sz3F#&c1~z4<=AnK^ENxi}a$g zpW%8)H$_LiOV^xrQcCIP)V9GA8f_d(>-!w0AIEK{2hXQdVa46ltnHgL&)J@K?0%ls zrIgUD<74QdL({3FZzvg8Zl>`K=F;h|UMN!A(vM?TQ|Wt!WdG_$ntx;}t>`zO^5$Nm z*l9DUTh39M-D?RQ@y?+14c}Abu|AY~T?e{-@>4Ww@*GM?oK5j350Y#0i*)$%O?3UN zc)GRGII=#IN|s%3(fiXkQbP77+V_W%3ai@EPp|(;hg-cx4O7bWNh*ChTx$(vVF_p4r`-_|y!A&%9w@7-r8x?eoqHenB4 zb$%R8dc;W6(|xq#*<$jzkJG82a3%}4N^bjN1FbE6lg91cOP}bQ(aXPgq8SU{rLF76 z)3kyw=-lY1XvgF;^!#sK=*Z8DsNd~x)5k|EY1aEK=$gZ?(~8!;u@St8))mj8*GC$u zeW&$w)8u>Tiw3J`+}b#rbn9|TOS*=>+|Y^sK5>brAO44?Z@xs|j&o7Onv2wTvX>rk zr^1HjGPUd5fGlO*>6%8V(Vt$V$12_QL|HHD_Rei||A7MPdMu6J@03TaE!WbA z-jAs3t~cl%*Cp)bKTRgrw>0X=Q`FKkkgQ4jXyfholh;y66(hc)g~MR8H~czk{`m&# z{`)pccAIH**Kg^8&TFXID_d!KR!@rDu#$d!88YfzOM1-tEw#Noo?;A>A=f+6kUdXP z<}(ZF)u%tDE~6XL`t!Mz_{A=|d-KP%`0%^*T>2*3`Sg7hIp%iiJUkt?!Ncj^l;7y< z2Gb}d+D`LwX3~S3kJ1;HuAz$7uhXRIJ;-$WAKLiNQYs&Vi$AYfO+&VgqE3IkO$SCT zpfm43L9v5pQfBXGY2`>WrSyB5CSU&q?atKE*dx>E!=ta$J9nPNdM=T44Jv5HOV86Q zTRz5pkOkEILL5Ee+e#}U`p}l_YboN(N%U3!-Bi^6Z`!}}13Gy+hwic;rN#DxbZB!o zS~-6!jlbnHa(=U&e)}Ss-t2t?4QPbh6syd%Z_`52JvP({z@$Q-@KYm+sU7LQMlp0x>0HvaPorfM$I+!r zn{gxKDLRC)`{zT+^vIhVY1{mZ)NOTJ`rW;i=5Fsv2Um}v^{Zc_y}RQmX?iE}jO;-j zM@*-MAALjnGdEJj9c!uYHBVBac{g2({ttb9<^nz1r;?6O>qtL*c0XNQzlKiz`U!Qu z_CxB@%R<+;%%>)YKA`(9Hlz#x8ADx~9;D*+_fyfr8C240H(fLQOWLwyKSgKEqsHDh z$oYhw+KjrB`VIS)?oEuRGp{Am#a(Bq$J?C%ztYLkyXnXscT(A-i)nWEQ}ki_8)Ug< zF?~JqZMu2t4m#L3fsTwVpiWJX(2I?hQ_GIHmGSfeIy7+sEiKtXL#F*rBO)%+iRu?< zdaIsv{km3EHs?zkesV2MX>&d8{C+Xr9J`Vhc7K`H9Ec;Qsel}>{6_aaw2B@YG@s6Y z(vw=wew8Lo`427F+mf=EeMw&q98O>RdsEp@x%AJHV|2%7W|~yClHPoNA`SoZY3lIM zRh084E_`%HQp;QQ?Jbx;)|sY8tDM z4v%_)25z5559C>?<+MK3v3f2gSRSNn22G;L9UD{LJ4y6Vn^`pBhUv6=+qZP$@Fd#S z`#oxN=0`eLhBh$!9dfMbKsU~LnKs=OO)GEylG+}zk@M>#v}kSyt#1DWm4DQZqJCLV z`O7k?Xu(eMPO;HFcU?vC8?$KD*+(g5#P`(l_egpTa~jV*gXx)!o9VUl&(V})`)S@0 z3#IkcBhFJ@HG;PCKuq zoXMw6(c26yvS9-fN12ST%eAcM2v$xTLI}p=E+dCAgn*Syrg&&A`Fgtk_AiMI4XbkJT3q5nOc#V zFL6j{T&I_~b2Bk|F!p9}3!tKSDwCo)EkiB-a_GR4BZoqp#aT{C#>J_8+o=!tJ>tp$ zuLt^y)YfV_0GH#o=aoAuu>mmvw}Z+AAOz-3OM{9L_i*sN8#(?0c_T+|QE@uwjf+uY zxF8!vITiCLk>U(fp@I)!G;Z17<-|2TPz(=sRVjm=xC2De%X721-lqwNKg2goC~*5v z@VbWh3ZecjXxg+GH#YFiFGGAX`q0>$HA3RK0u@ehu3L6wPH*$n!MII<6Q<<&ODt9X zfqXNm(gH;wnn5USW|FlCTEr4h3H(aRMe}Hx0Edu;(zaE!NwXps{9fV_h#_tV zhuyZBRZT4W!N9J3byQ%n+8u+XxGBJZJimb8FdhMQ$Tyc+6+a!uh z>gIZ6gk~hi=EQBLLci`-u1&HQSQLrUF0JjE%D5rW%K7?FuyLDaRbIh$X)+Wv#IPW) zj}HbRnr^RjE*6>4Fv{L>*8Y5*u%b4BK3qm<1X^FaApsc(>3d4njj5s%(N1L5tBie< zWay!^{j{bFBwyC548g`*c2lj5aMKJl5jB{c6i#T({NyGEldo2KUJTzof-Y<3-HZHY zGWMdOY9XQlb3XIRvAN|?`Zt%vF28I>W>mJ>k1l2wl1Lelo}*s71wJVtWyctpTFZka zXF)QH7TG_uv<6a`UZYdl?ULd@H9XMDkz3^cCeh=EVV}8JY;kfW06i#~`yRw-G5U|g zBawrX@*P@Qv>1yLLUEk1A<20z3;-aMB3|^Pp=sermXg>IRc=n;d%0vb4+w!<6BH!&`xK(z8hiAQ8zQjClPHst-5Bo3gM`$UN+N7CGy zsI^0Pwb~R$C0o&MP=gTQf!=*vEW+ZQImvc=qOHheRPX^v)#YV6bJvP*&HM4sy85{N-aZ zf?)|Fv)iNIz*eEgUIXn)2y)=I9|TpY=51W5crA6uN(%MWqrGy%29iBeeP~F9K!~#L3Lm{ zf{qf5;-2QUeRv9!kE^_JiMiw6_!^SHdnh?R4D!g{1G+|`0SvbJAjJkaC%|i(Etij^KlfjbZNEynEP>E(?Dd! z*b!H-&8`e`U>D1rWzM>Gc1WGzZnWw-x|9HUp2y|!$$mdq7sqwLDRa6xz9)1kDnbgC zA*CXt^CUV@SRh3v>&CcE_t}d%8=J29oEEn~Yqc(lM>jWWrC^ONK|JH?>|zx8O^#}1t*)UuM&c&y=XA-4n-@GH zDh?Q9@AJBtLYD9)u;zjHI$cBYn#X1$FX$2jeuL2&xLjYzblg3M{TtIWgghe4)#g?jp3!z7VSV8ST2=u&H7^DtgJeDCVwhr4;C4$O|;(>3AJkhd7hC}0eu-WRNF z)wL`ZU-RHbqfV!gX!WvCiP)w~MYi(%C7y8nb{#L(7>~%py>{ptaiplMS~0$_YYeWN z_+uf`k4uTmhc7GsK$po=JK>8ev8e2!Bp>S1&`644yCnn$7T)M$+){Vy8o>iEVnr27 zpzPAM5X-j$%Q%NLEy845M50B!TbC)zQ(yyy7aH*%QBNTWmnE)+@R6=nT_J=M?bWra zD}UicA9H_0cks*d`6SS><+~Q)J{?acB~B}fp&sQ^(T8gkZS`k@n9UrkpnrkT6`@pr zE`*IF4oO7yeq96%Mh7cp2Xyi1uXy(OR4b{2xtC zu}5|BHNropYpjU~5OE_63F#|cI?L~@VCf9ur2uY6{#w_9eKg4+3DDrV`^%T(IOb>{F>u83nmsfSr-B|f>x8KcEo&4nJ?Dmk!SH)F9nJ` zgySEiM&>63DKs!1D5_wvbXnKLI^6AqWpj?d$m-+i=wOT2izIV0ChHrh)5H7p4TH18 zDSDZOT#<#T`ZSq^+^{StS@-Kj-el!Vk&wmetq1g(wG)*u%&4&N6UmyUPlg;Ht{_#O zN_1`+#)JA8C~!(Jj}g7_A$^?sI!q#_>!Vc!&vhOSc%y4`ZXVGms@{bP>x&pSL*G0Q z29JXpz7P{kj$4_jPpy;S(a_MD@-clQmGCBq!^`0aepb57(x-=oQCO;ZKdz5eeb5de zUuOs2k$t?+(Wj{XGRYhyhOW8#6rN%^?0Cj>)x#5hOw*pw(BiGcqx#O%N6U|DnZ16W zGGEU_BoqjONUT3t$INqMrTc<^@$9ispK(RbMfyxmkr*mOP`TAGT&`qM%JWK&Yq35) zoFwbXnwaiO^vOKQ!}1Rnx>%QrG-fTW3)_8JUDzH^>C62n*4Dt+@xl(pY1l!y+qhgFJlWRu~p);9}INzv{h#AMSKqrb(qM&Cp71{uotN}&uSgd%RY2%3>ocxM z`HCL11+Q5ViaM!V?D1+Cjw?s$v0k6V!^bd4HC5FIG5(q!6J}_*q=hAq&B#!t^140> z-9}C%Ht1t8vf}oAF(hTZ5%$_`qdroZi1IG6l)Z@_2Hg_}f+hZ2XeEjjWofQ-y3OvY zO0!MM;J5Wn3UFukP{fl_+ECJlPo2l^PM;RsnieW;H{FxuNreI(DT*aCZ(K9(PItTx#- zcgy#Dhx)!pAI1Lp4r~W~B%k|_MRDxai>Vn8j6CB*d;d5bGsI>8L@&0u3M9!seGG@B zaeS(e<5!*#NdM1d%z48`$oJ3Xdmxwl^@+@Yg5e^TGzS8>U^oY5z@SqjKBP}zMp?*` z?+bm`GR$agEE&1iNC|+3g0Gq>LOae4#>1bK;O4{F!}|6@DQDJBA+dOZpCZ~8lzj?{ z0jgNm)_$pvSI`T{H(8K09epE>?*-= zeFF}&*qil@_SF4bNhb4(`5jgoC-gB)rk0!XoxY*^3dZk4Ub>&uCu=^UKTGx>Bng@x zYT`$IER%>Y#Eio{@+W;_*gLnOpY?GXPVq3}mmrhEBjT?zjWQ4<3*ns7r)WIxaT3Lx zzsVv1CBOY1;43NPtw99!hfFdEWHCYOhUv>`eS#JJ9$0P_LVa^4$g82w26z!+AjCiQ zyep*VZAg^=s9sqz>`<@EYH9>d zOU-11O#QWzzGp~K_ZejB1x}-%Vn`ObRq53YiK&Kok88vf#uv^#g{m zB2WXFW{AGI%2A~%o*y(siZ|r@A@vcZJYA)M(1BX{VMCIjVUdf^e#%wkBL-eKV4&q< zEyia%XBaZDhb?42s=lbwGQo_4byl+v{xc1!@Z*sPdU|vB0RB;fs?i^-VCM9g0ZTXD z=}^X7yt54PH58bS8yeTZgeWp+8?LVD8JLKLkj*iq*Cc~76kj#CX|ADO3e)aS7&_Dp zArMjR3Ew<}SXBmR7@FpFz9EJM94C!qUtoyDDD36A-a6+vBR+;hHV~B$1+2b4FPd? z2~a3cp|JuPK#0lda)Vf229V0rhKw*OB_!AthSV@W5d!kLQl?wHLS_Q<4BEC97qn1{ z@DkGl45ZH*n#d_yAXc8n^X!8)l&cV!n7{>mR~uq^_z%3VF~o>@A*PZ%6JBeGa5}jS zJ{PPPR*^q%Xl%voU6?Y!Si+Gb<+|)->kJ82E`5yhka?`y?EZowo#`cZoJP(QkQWVU znoq7{Fl-E5ykLW7)e#H>aJ1kc99eH@w z5G}soVD|bv_U`KqMugt|HA4!>SYgsNU#4BmhF&+MqxVXLO(-_Ca5oqd6%5RZoKT|r zu?~2{(6o%zPuQX!kF|j6C%QWCeQ!h#3YFq2r(f6v@b{%WYKgsRh=kXW37GP|Wr*fL zCStV4gzarZQ%qZMR#Bu@4EQ`#v{b_a_3tsiVV~7sn*kVW*OOnvE z$i%)|hYw6)pptvfkfcCCX|{ysV5_1HSNrCI>lj z3kwpBWV<1S^X0*Jd$Aqpz<#X|bUO^m5P7m}g)}xpmR7zG`BNKfzNvr72as-c_+U_W z+Wa3Hc$nf=mF2Fg+-cw)Z}FC&vrBksW7cj%0*@Pb6>;*!bB}>nL~?XyWz9#1SZ;4< z%Xwm$+iOUv$-?RR*nsUhY5AlDu6$xh!s?gDC=b4S?6irdw9g>*#Z`WMkZhR4t3Yoc z&KG`afcBrQAov`)6EzqJ=Q9Wlh$y5&TD&Nq8(?ZCBa?|z_8Tx|^i{}YODl#02DY2x z?-vC#a}d3XcMSc59hjqGoyCdck~t(&CG1tgIleHk8Ck%COXRR2-UdO#lTkH2UmApA zM37UaAnS-Bg;P}%f7FmH;%7W3KvEwwV96z>%i?>$1p@mOBYhQG8A{5p4T+@?PG;2_ z1Y=~W=eVIsCAiU8ZP1(YR5#T38$)C6rGB+4!j;0`vcShGDm;=C24R=LQdIN!&d{9I z5!$Ov3>Lv!^HIKsgu`Z4R!_6+dVX`aleJJ;Kh#2X|FIUT$4`b9YFKtYE$BCwdVFT9 z)32Dbt~dKV=I%Xzz9Pl7NPx%Ov&S!n^fGYrXU(9IP|Bg57=uvC9TR@7<>SOAI{Tb5 zuo@rB*MdUq$MGm3o_{kml|zJFl6l#9MX3JdN4$SGVE@NrSHBzvMKv3VUs3$UQ9^8aaw=CMlU zI%i1aw=kB!46!otD$RL})tY9)JWh^9%HJ3vg28Z17YvDEY>c~TNMI@+X*q+8x@3qB z$@@QO^Ri4B$^JabDwhrMD!SP3b7QczPc|lm5DsuUT=x5nX~Dd)K_Y0YcwIZin5ueU z@GSE1Y(;oYH3mY3q~;xi`;E<2O4K3>FyF}u;BlBpi0o`(Vn5h%{0NcnVQdMGL5(Ry$)-2Sk!O-&#E8g?$^mm4V)Jx}2x zdc@eA8>DM66NtN5^ud|6BUisx{iv}?t;ju?Mu_oEdCZtu z(^n4huq#k$W*O5sQ7AfW{)H~OA2&9x$txPX_(=Bb+MYu83(q;VJqyGKjG1I^ZO;5p9Y;`5_V0(J*%0$6-^}I3jiXqwULI|xhw!acd z5U=VQUkIZWt7fE}Ww%NozNA*nA5v3ZG`6h8k1ZnXQDL|oS}fA|lJV-gX;_qE)ufWW zY;5kskjtifHb_auVJ^iGWbOtt90&rKv%g|&%Ciq%XGuZ~_3Ueb@)X{$8dY7i*hN$o zm0k1K8;W{B8u(}Zu4w&qK#}DjaQXowkD!Q zJ9hZIuqb0eg^j){q)mRA`%Pmq>|1$4C#)q@&$obV|Ho;*Fz*6sRW4dhh zp)5k3yvdk?SVY!&V(#(6Iu;Xx&BnB1ybh^QqjG4&@H-(PaVZP+pa^M;F}03#^`G#r zku6?ABYw}Az``6R>tev+ylpi$!-kqg?q@26?wbDFxbKUylDYI$Zr6ehq+*9L)hgN) zZ_q-tstZEpePd#Nl^1u{K+mmle_%|*CJ9z)HOuisV`@k_3ZVksna#1&*f@w+TdQb} z+yr)oc9T#~S?D~5?hbAGVI;EQamN%wbg;+1$Jn#(xUeF3__*bZZj7!YdI8F@QgOJ( zIh2n=`?MN~8H*%rV7gf+C~VvJ8n3Dqx*0Wubpu;#;`^YyQ2W?;O)V;!U$jtMYvNN7 zB!b3fvQPQMm@?eWbLwHNh>~W^Xm|UJZEJ;L&a1Y$psIppmEz#FDhH~3YHVJMQpAR- ziTL8_XU6O5CdkM4P;KQ}f>b>+ziMgwJgh?HCJqY`}q2NZLl7DUNP#{3vI|A()?xSBFWtfJ_d^FhTsY zF

JZ-G)j=l6@T4SK37W>Ksvnn!|Q5N_D>{Az4jhOt8xaG=ELH1Wx0#SDp!mJFIx z#%QJ7l4X{**S{HK#GA_UyXuJn2_F~#!x$wzZAw+;X=5|Cw}+|@bJy`^))9%_A2AZZ z{``zF4g1N6##L>WcgbM;i1+r-8e5d&EDv^@%vEkDmY$VnyU#M-ZT3v?Slo~~%AZEu zl~fl6?vb)1A=qd-XN+SKj~!<>#AN3$V}eigFBs>$VWbGl>GQ^hZXR$^DnkbUZA^w% z2us~Ct_wzJJGfVh)f>0@i$?7EYoB8dU@wWP&Z(@#7Fks#D;NI3GA2M5>T%f^gH|D= z71K>Ng@hNt-e-yraxV&uOh8>I+!;$O9B)H#U`|;$@~O zjvI|ln=vSlni}(f5zLH(_rTQ;*gs~<(3Tk5=dlBxvrJ7O2~|NK!i1QyL;1K#tklD{ zlxLfg#KI&DImgtH1+~P@HHn#=O28XK7}TCHv3ZflCb9EOLg}EAU{`IvDL%xT_t_Sh zgtDBo&TA+hQ;{gu24kTq(urI5&=bZlGDV5UQpCU56pc?im-#H%MscJeXx!oh-g8_fw`Mu2m~qy4hKZ4v6EY?&YQ?T!pL^=ur#3qp{$4c2e5Q3@< zdB!A`z3PY55vk_!tSQ4Sw3SGen7D=btujS%45AsXHf6|<+Sft1#w0Y`2$Z$qYfZ6G z_MEAygO|28Ve$ekrQF{3sVCB&H^pn->aOxSQ)7Qx5IC!e9Uo5TtENcKDOMi^ z>rKhfuBoOuEZKwzea(~+jzye`7uGutbJpt!uSkZ2W+#U64JM%%$9h|;ztx&}!<3>? z3Nm$~ywQ}Tp~W6eA+Jy0G^J}up|B15yk%;11)r?9O^vvOYR1bt?M+A}BtPb&6QQSv z&~cY-HZ`_;a1&y+7#c8yV+xAK#nwqaaR`uXv&{ew46yfqA6_wjf=~^3b$_>ye zt4!VwG$w(;mZ=j$?0xN>z488mDT*ZthUtRB4^1hUv0;IUbrdQM8z~}(J53oFR_#?b z2M&f|!Yt&o8Fz+aX|~IhF0{)wX`6|?9havJJ;~|XZBiF)LiX{-2CLjyyzDV0$+-dh zX!7PG6RcCA>*jQXs6hD!(7mRFN~u3&nJ#kku}M9U*kq07VT2~&hPK|k(0Q>=y;i0@4%j$_q7O}D*oU|_@&Ct zucu876w$6r&zNw)ABjfYqoh%#XHAi4Bcf#fG(~D>@Xnc{B|Sz=pW`o61Fr|>d%m*s zrVPHLPn}nxzd$`8F9mei|29R9Q{0m60z!4m2reR2HS$ZSP)DV$-1m=ssPtZz58mp@ z5e?wQ^N9N*m`HK>r$j^`WtdA$l@H~<`y-+`@wi&RhnprJkmyS9vW3oOEXSsJ-O~jM`=AdClp8(fkqDF@7`Ug-P_f?XneqvgkBTQRn$crSiR5sUvjmo( z9v49(?Ah|c@0$}Lo7-HbciAB7-O3XYM#yjHyafcs*F%dsE=txYM1$XF;+ zUd|0}5$6pp&?0U^T#UG|6@@9)lOhVg$G(JvhG=5^QWfc17SUk5&4(UoeJUbiJaple z*5wfm&`x=rcp5R{FxhyAZv{W0o*cfFoG6R?nFtgAWIY>UGNX!>RS^kh46Bu9uhWxd zcCoS3>Ik$a4Yh{puqnGX!T{>$B8;V#9{ckVCUn6G-gQU~I-%A5LWBV{)Hg~MHa;b?w>(6AX*1{r>}9`^0=a.length&&(a=void 0);return{value:a&&a[c++],done:!a}}}} +function da(a,b){var c="function"===typeof Symbol&&a[Symbol.iterator];if(!c)return a;a=c.call(a);var d,e=[];try{for(;(void 0===b||0a;++a)p[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[a],u["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(a)]=a;u[45]=62;u[95]=63} +function ma(a,b,c){for(var d=[],e=b;e>18&63]+p[b>>12&63]+p[b>>6&63]+p[b&63]);return d.join("")}function na(a){ja||ka();for(var b=a.length,c=b%3,d="",e=[],f=0,g=b-c;fg?g:f+16383));1===c?(a=a[b-1],d+=p[a>>2],d+=p[a<<4&63],d+="=="):2===c&&(a=(a[b-2]<<8)+a[b-1],d+=p[a>>10],d+=p[a>>4&63],d+=p[a<<2&63],d+="=");e.push(d);return e.join("")} +function oa(a,b,c,d,e){var f=8*e-d-1;var g=(1<>1,n=-7;e=c?e-1:0;var m=c?-1:1,r=a[b+e];e+=m;c=r&(1<<-n)-1;r>>=-n;for(n+=f;0>=-n;for(n+=d;0>1,r=23===e?Math.pow(2,-24)-Math.pow(2,-77):0;f=d?0:f-1;var q=d?1:-1,x=0>b||0===b&&0>1/b?1:0;b=Math.abs(b);isNaN(b)||Infinity===b?(b=isNaN(b)?1:0,d=n):(d=Math.floor(Math.log(b)/Math.LN2),1>b*(g=Math.pow(2,-d))&&(d--,g*=2),b=1<=d+m?b+r/g:b+r*Math.pow(2,1-m),2<=b*g&&(d++,g/=2),d+m>=n?(b=0,d=n):1<=d+m?(b=(b*g-1)*Math.pow(2,e),d+=m):(b=b*Math.pow(2,m-1)*Math.pow(2,e),d=0));for(;8<=e;a[c+f]=b&255,f+=q,b/=256,e-=8);d=d<c||b.byteLengtha)throw new RangeError('"size" argument must not be negative');}w.alloc=function(a,b,c){xa(a);a=0>=a?y(null,a):void 0!==b?"string"===typeof c?y(null,a).fill(b,c):y(null,a).fill(b):y(null,a);return a};function sa(a,b){xa(b);a=y(a,0>b?0:ya(b)|0);if(!w.TYPED_ARRAY_SUPPORT)for(var c=0;cb.length?0:ya(b.length)|0;a=y(a,c);for(var d=0;d=(w.TYPED_ARRAY_SUPPORT?2147483647:1073741823))throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+(w.TYPED_ARRAY_SUPPORT?2147483647:1073741823).toString(16)+" bytes");return a|0}w.isBuffer=za;function z(a){return!(null==a||!a._isBuffer)} +w.compare=function(a,b){if(!z(a)||!z(b))throw new TypeError("Arguments must be Buffers");if(a===b)return 0;for(var c=a.length,d=b.length,e=0,f=Math.min(c,d);e>>1;case "base64":return Ba(a).length; +default:if(d)return Aa(a).length;b=(""+b).toLowerCase();d=!0}}w.byteLength=va; +function Ca(a,b,c){var d=!1;if(void 0===b||0>b)b=0;if(b>this.length)return"";if(void 0===c||c>this.length)c=this.length;if(0>=c)return"";c>>>=0;b>>>=0;if(c<=b)return"";for(a||(a="utf8");;)switch(a){case "hex":a=b;b=c;c=this.length;if(!a||0>a)a=0;if(!b||0>b||b>c)b=c;d="";for(c=a;cd?"0"+d.toString(16):d.toString(16),d=a+d;return d;case "utf8":case "utf-8":return Da(this,b,c);case "ascii":a="";for(c=Math.min(this.length,c);b"}; +w.prototype.compare=function(a,b,c,d,e){if(!z(a))throw new TypeError("Argument must be a Buffer");void 0===b&&(b=0);void 0===c&&(c=a?a.length:0);void 0===d&&(d=0);void 0===e&&(e=this.length);if(0>b||c>a.length||0>d||e>this.length)throw new RangeError("out of range index");if(d>=e&&b>=c)return 0;if(d>=e)return-1;if(b>=c)return 1;b>>>=0;c>>>=0;d>>>=0;e>>>=0;if(this===a)return 0;var f=e-d,g=c-b,h=Math.min(f,g);d=this.slice(d,e);a=a.slice(b,c);for(b=0;bc&&(c=-2147483648);c=+c;isNaN(c)&&(c=e?0:a.length-1);0>c&&(c=a.length+c);if(c>=a.length){if(e)return-1;c=a.length-1}else if(0>c)if(e)c=0;else return-1;"string"===typeof b&&(b=w.from(b,d));if(z(b))return 0===b.length?-1:Ga(a,b,c,d,e);if("number"===typeof b)return b&=255,w.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?e?Uint8Array.prototype.indexOf.call(a,b,c): +Uint8Array.prototype.lastIndexOf.call(a,b,c):Ga(a,[b],c,d,e);throw new TypeError("val must be string, number or Buffer");} +function Ga(a,b,c,d,e){function f(a,b){return 1===g?a[b]:a.readUInt16BE(b*g)}var g=1,h=a.length,n=b.length;if(void 0!==d&&(d=String(d).toLowerCase(),"ucs2"===d||"ucs-2"===d||"utf16le"===d||"utf-16le"===d)){if(2>a.length||2>b.length)return-1;g=2;h/=2;n/=2;c/=2}if(e)for(d=-1;ch&&(c=h-n);0<=c;c--){h=!0;for(d=0;de)c=e;if(0c||0>b)||b>this.length)throw new RangeError("Attempt to write outside buffer bounds");d||(d="utf8");for(e=!1;;)switch(d){case "hex":a:{b= +Number(b)||0;d=this.length-b;c?(c=Number(c),c>d&&(c=d)):c=d;d=a.length;if(0!==d%2)throw new TypeError("Invalid hex string");c>d/2&&(c=d/2);for(d=0;d(e-=2));++g){var h=d.charCodeAt(g);a=h>>8;h%=256;f.push(h);f.push(a)}return Ha(f,this,b,c);default:if(e)throw new TypeError("Unknown encoding: "+d);d=(""+d).toLowerCase();e=!0}};w.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}}; +function Da(a,b,c){c=Math.min(a.length,c);for(var d=[];be&&(f=e);break;case 2:var h=a[b+1];128===(h&192)&&(e=(e&31)<<6|h&63,127e||57343e&&(f= +e))}null===f?(f=65533,g=1):65535>>10&1023|55296),f=56320|f&1023);d.push(f);b+=g}a=d.length;if(a<=Ja)d=String.fromCharCode.apply(String,d);else{c="";for(b=0;ba?(a+=c,0>a&&(a=0)):a>c&&(a=c);0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c);ba)throw new RangeError("offset is not uint");if(a+b>c)throw new RangeError("Trying to access beyond buffer length");} +w.prototype.readUIntLE=function(a,b,c){a|=0;b|=0;c||B(a,b,this.length);c=this[a];for(var d=1,e=0;++e=128*d&&(c-=Math.pow(2,8*b));return c}; +w.prototype.readIntBE=function(a,b,c){a|=0;b|=0;c||B(a,b,this.length);c=b;for(var d=1,e=this[a+--c];0=128*d&&(e-=Math.pow(2,8*b));return e};w.prototype.readInt8=function(a,b){b||B(a,1,this.length);return this[a]&128?-1*(255-this[a]+1):this[a]};w.prototype.readInt16LE=function(a,b){b||B(a,2,this.length);a=this[a]|this[a+1]<<8;return a&32768?a|4294901760:a}; +w.prototype.readInt16BE=function(a,b){b||B(a,2,this.length);a=this[a+1]|this[a]<<8;return a&32768?a|4294901760:a};w.prototype.readInt32LE=function(a,b){b||B(a,4,this.length);return this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24};w.prototype.readInt32BE=function(a,b){b||B(a,4,this.length);return this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]};w.prototype.readFloatLE=function(a,b){b||B(a,4,this.length);return oa(this,a,!0,23,4)}; +w.prototype.readFloatBE=function(a,b){b||B(a,4,this.length);return oa(this,a,!1,23,4)};w.prototype.readDoubleLE=function(a,b){b||B(a,8,this.length);return oa(this,a,!0,52,8)};w.prototype.readDoubleBE=function(a,b){b||B(a,8,this.length);return oa(this,a,!1,52,8)};function C(a,b,c,d,e,f){if(!z(a))throw new TypeError('"buffer" argument must be a Buffer instance');if(b>e||ba.length)throw new RangeError("Index out of range");} +w.prototype.writeUIntLE=function(a,b,c,d){a=+a;b|=0;c|=0;d||C(this,a,b,c,Math.pow(2,8*c)-1,0);d=1;var e=0;for(this[b]=a&255;++eb&&(b=65535+b+1);for(var e=0,f=Math.min(a.length-c,2);e>>8*(d?e:1-e)}w.prototype.writeUInt16LE=function(a,b,c){a=+a;b|=0;c||C(this,a,b,2,65535,0);w.TYPED_ARRAY_SUPPORT?(this[b]=a&255,this[b+1]=a>>>8):Ka(this,a,b,!0);return b+2};w.prototype.writeUInt16BE=function(a,b,c){a=+a;b|=0;c||C(this,a,b,2,65535,0);w.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a&255):Ka(this,a,b,!1);return b+2}; +function La(a,b,c,d){0>b&&(b=4294967295+b+1);for(var e=0,f=Math.min(a.length-c,4);e>>8*(d?e:3-e)&255}w.prototype.writeUInt32LE=function(a,b,c){a=+a;b|=0;c||C(this,a,b,4,4294967295,0);w.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=a&255):La(this,a,b,!0);return b+4}; +w.prototype.writeUInt32BE=function(a,b,c){a=+a;b|=0;c||C(this,a,b,4,4294967295,0);w.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a&255):La(this,a,b,!1);return b+4};w.prototype.writeIntLE=function(a,b,c,d){a=+a;b|=0;d||(d=Math.pow(2,8*c-1),C(this,a,b,c,d-1,-d));d=0;var e=1,f=0;for(this[b]=a&255;++da&&0===f&&0!==this[b+d-1]&&(f=1),this[b+d]=(a/e>>0)-f&255;return b+c}; +w.prototype.writeIntBE=function(a,b,c,d){a=+a;b|=0;d||(d=Math.pow(2,8*c-1),C(this,a,b,c,d-1,-d));d=c-1;var e=1,f=0;for(this[b+d]=a&255;0<=--d&&(e*=256);)0>a&&0===f&&0!==this[b+d+1]&&(f=1),this[b+d]=(a/e>>0)-f&255;return b+c};w.prototype.writeInt8=function(a,b,c){a=+a;b|=0;c||C(this,a,b,1,127,-128);w.TYPED_ARRAY_SUPPORT||(a=Math.floor(a));0>a&&(a=255+a+1);this[b]=a&255;return b+1}; +w.prototype.writeInt16LE=function(a,b,c){a=+a;b|=0;c||C(this,a,b,2,32767,-32768);w.TYPED_ARRAY_SUPPORT?(this[b]=a&255,this[b+1]=a>>>8):Ka(this,a,b,!0);return b+2};w.prototype.writeInt16BE=function(a,b,c){a=+a;b|=0;c||C(this,a,b,2,32767,-32768);w.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a&255):Ka(this,a,b,!1);return b+2}; +w.prototype.writeInt32LE=function(a,b,c){a=+a;b|=0;c||C(this,a,b,4,2147483647,-2147483648);w.TYPED_ARRAY_SUPPORT?(this[b]=a&255,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):La(this,a,b,!0);return b+4};w.prototype.writeInt32BE=function(a,b,c){a=+a;b|=0;c||C(this,a,b,4,2147483647,-2147483648);0>a&&(a=4294967295+a+1);w.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a&255):La(this,a,b,!1);return b+4}; +function Ma(a,b,c,d){if(c+d>a.length)throw new RangeError("Index out of range");if(0>c)throw new RangeError("Index out of range");}w.prototype.writeFloatLE=function(a,b,c){c||Ma(this,a,b,4);pa(this,a,b,!0,23,4);return b+4};w.prototype.writeFloatBE=function(a,b,c){c||Ma(this,a,b,4);pa(this,a,b,!1,23,4);return b+4};w.prototype.writeDoubleLE=function(a,b,c){c||Ma(this,a,b,8);pa(this,a,b,!0,52,8);return b+8};w.prototype.writeDoubleBE=function(a,b,c){c||Ma(this,a,b,8);pa(this,a,b,!1,52,8);return b+8}; +w.prototype.copy=function(a,b,c,d){c||(c=0);d||0===d||(d=this.length);b>=a.length&&(b=a.length);b||(b=0);0b)throw new RangeError("targetStart out of bounds");if(0>c||c>=this.length)throw new RangeError("sourceStart out of bounds");if(0>d)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length);a.length-be|| +!w.TYPED_ARRAY_SUPPORT)for(d=0;de&&(a=e)}if(void 0!==d&&"string"!==typeof d)throw new TypeError("encoding must be a string");if("string"===typeof d&&!w.isEncoding(d))throw new TypeError("Unknown encoding: "+d);}else"number"===typeof a&&(a&=255);if(0>b||this.length>>= +0;c=void 0===c?this.length:c>>>0;a||(a=0);if("number"===typeof a)for(d=b;dc){if(!e){if(56319c){-1<(b-=3)&&f.push(239,191,189);e=c;continue}c=(e-55296<<10|c-56320)+65536}else e&&-1<(b-=3)&&f.push(239,191,189);e=null;if(128>c){if(0>--b)break;f.push(c)}else if(2048>c){if(0>(b-=2))break;f.push(c>>6|192,c&63|128)}else if(65536>c){if(0>(b-=3))break; +f.push(c>>12|224,c>>6&63|128,c&63|128)}else if(1114112>c){if(0>(b-=4))break;f.push(c>>18|240,c>>12&63|128,c>>6&63|128,c&63|128)}else throw Error("Invalid code point");}return f}function Ia(a){for(var b=[],c=0;ca.length)a="";else for(;0!==a.length%4;)a+="=";ja||ka();var b=a.length;if(0>16&255;d[f++]=g>>8&255;d[f++]=g&255}2===c?(g=u[a.charCodeAt(b)]<<2| +u[a.charCodeAt(b+1)]>>4,d[f++]=g&255):1===c&&(g=u[a.charCodeAt(b)]<<10|u[a.charCodeAt(b+1)]<<4|u[a.charCodeAt(b+2)]>>2,d[f++]=g>>8&255,d[f++]=g&255);return d}function Ha(a,b,c,d){for(var e=0;e=b.length||e>=a.length);++e)b[e+c]=a[e];return e}function za(a){return null!=a&&(!!a._isBuffer||Oa(a)||"function"===typeof a.readFloatLE&&"function"===typeof a.slice&&Oa(a.slice(0,0)))}function Oa(a){return!!a.constructor&&"function"===typeof a.constructor.isBuffer&&a.constructor.isBuffer(a)} +var D=w,Pa="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:{};function Qa(a,b){return b={exports:{}},a(b,b.exports),b.exports}function Ra(){throw Error("setTimeout has not been defined");}function Sa(){throw Error("clearTimeout has not been defined");}var E=Ra,F=Sa;"function"===typeof l.setTimeout&&(E=setTimeout);"function"===typeof l.clearTimeout&&(F=clearTimeout); +function Ta(a){if(E===setTimeout)return setTimeout(a,0);if((E===Ra||!E)&&setTimeout)return E=setTimeout,setTimeout(a,0);try{return E(a,0)}catch(b){try{return E.call(null,a,0)}catch(c){return E.call(this,a,0)}}}function Ua(a){if(F===clearTimeout)return clearTimeout(a);if((F===Sa||!F)&&clearTimeout)return F=clearTimeout,clearTimeout(a);try{return F(a)}catch(b){try{return F.call(null,a)}catch(c){return F.call(this,a)}}}var G=[],Va=!1,H,Wa=-1; +function Xa(){Va&&H&&(Va=!1,H.length?G=H.concat(G):Wa=-1,G.length&&Ya())}function Ya(){if(!Va){var a=Ta(Xa);Va=!0;for(var b=G.length;b;){H=G;for(G=[];++Wab&&(c--,b+=1E9));return[c,b]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-cb)/1E3}},J=[],L=[],eb="undefined"!==typeof Uint8Array?Uint8Array:Array,fb=!1;function gb(){fb=!0;for(var a=0;64>a;++a)J[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[a],L["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(a)]=a;L[45]=62;L[95]=63} +function hb(a,b,c){for(var d=[],e=b;e>18&63]+J[b>>12&63]+J[b>>6&63]+J[b&63]);return d.join("")}function ib(a){fb||gb();for(var b=a.length,c=b%3,d="",e=[],f=0,g=b-c;fg?g:f+16383));1===c?(a=a[b-1],d+=J[a>>2],d+=J[a<<4&63],d+="=="):2===c&&(a=(a[b-2]<<8)+a[b-1],d+=J[a>>10],d+=J[a>>4&63],d+=J[a<<2&63],d+="=");e.push(d);return e.join("")} +function jb(a,b,c,d,e){var f=8*e-d-1;var g=(1<>1,n=-7;e=c?e-1:0;var m=c?-1:1,r=a[b+e];e+=m;c=r&(1<<-n)-1;r>>=-n;for(n+=f;0>=-n;for(n+=d;0>1,r=23===e?Math.pow(2,-24)-Math.pow(2,-77):0;f=d?0:f-1;var q=d?1:-1,x=0>b||0===b&&0>1/b?1:0;b=Math.abs(b);isNaN(b)||Infinity===b?(b=isNaN(b)?1:0,d=n):(d=Math.floor(Math.log(b)/Math.LN2),1>b*(g=Math.pow(2,-d))&&(d--,g*=2),b=1<=d+m?b+r/g:b+r*Math.pow(2,1-m),2<=b*g&&(d++,g/=2),d+m>=n?(b=0,d=n):1<=d+m?(b=(b*g-1)*Math.pow(2,e),d+=m):(b=b*Math.pow(2,m-1)*Math.pow(2,e),d=0));for(;8<=e;a[c+f]=b&255,f+=q,b/=256,e-=8);d=d<c||b.byteLengtha)throw new RangeError('"size" argument must not be negative');}M.alloc=function(a,b,c){ub(a);a=0>=a?N(null,a):void 0!==b?"string"===typeof c?N(null,a).fill(b,c):N(null,a).fill(b):N(null,a);return a};function pb(a,b){ub(b);a=N(a,0>b?0:vb(b)|0);if(!M.TYPED_ARRAY_SUPPORT)for(var c=0;cb.length?0:vb(b.length)|0;a=N(a,c);for(var d=0;d=(M.TYPED_ARRAY_SUPPORT?2147483647:1073741823))throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+(M.TYPED_ARRAY_SUPPORT?2147483647:1073741823).toString(16)+" bytes");return a|0}M.isBuffer=wb;function O(a){return!(null==a||!a._isBuffer)} +M.compare=function(a,b){if(!O(a)||!O(b))throw new TypeError("Arguments must be Buffers");if(a===b)return 0;for(var c=a.length,d=b.length,e=0,f=Math.min(c,d);e>>1;case "base64":return yb(a).length; +default:if(d)return xb(a).length;b=(""+b).toLowerCase();d=!0}}M.byteLength=sb; +function zb(a,b,c){var d=!1;if(void 0===b||0>b)b=0;if(b>this.length)return"";if(void 0===c||c>this.length)c=this.length;if(0>=c)return"";c>>>=0;b>>>=0;if(c<=b)return"";for(a||(a="utf8");;)switch(a){case "hex":a=b;b=c;c=this.length;if(!a||0>a)a=0;if(!b||0>b||b>c)b=c;d="";for(c=a;cd?"0"+d.toString(16):d.toString(16),d=a+d;return d;case "utf8":case "utf-8":return Ab(this,b,c);case "ascii":a="";for(c=Math.min(this.length,c);b"}; +M.prototype.compare=function(a,b,c,d,e){if(!O(a))throw new TypeError("Argument must be a Buffer");void 0===b&&(b=0);void 0===c&&(c=a?a.length:0);void 0===d&&(d=0);void 0===e&&(e=this.length);if(0>b||c>a.length||0>d||e>this.length)throw new RangeError("out of range index");if(d>=e&&b>=c)return 0;if(d>=e)return-1;if(b>=c)return 1;b>>>=0;c>>>=0;d>>>=0;e>>>=0;if(this===a)return 0;var f=e-d,g=c-b,h=Math.min(f,g);d=this.slice(d,e);a=a.slice(b,c);for(b=0;bc&&(c=-2147483648);c=+c;isNaN(c)&&(c=e?0:a.length-1);0>c&&(c=a.length+c);if(c>=a.length){if(e)return-1;c=a.length-1}else if(0>c)if(e)c=0;else return-1;"string"===typeof b&&(b=M.from(b,d));if(O(b))return 0===b.length?-1:Cb(a,b,c,d,e);if("number"===typeof b)return b&=255,M.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?e?Uint8Array.prototype.indexOf.call(a,b,c): +Uint8Array.prototype.lastIndexOf.call(a,b,c):Cb(a,[b],c,d,e);throw new TypeError("val must be string, number or Buffer");} +function Cb(a,b,c,d,e){function f(a,b){return 1===g?a[b]:a.readUInt16BE(b*g)}var g=1,h=a.length,n=b.length;if(void 0!==d&&(d=String(d).toLowerCase(),"ucs2"===d||"ucs-2"===d||"utf16le"===d||"utf-16le"===d)){if(2>a.length||2>b.length)return-1;g=2;h/=2;n/=2;c/=2}if(e)for(d=-1;ch&&(c=h-n);0<=c;c--){h=!0;for(d=0;de)c=e;if(0c||0>b)||b>this.length)throw new RangeError("Attempt to write outside buffer bounds");d||(d="utf8");for(e=!1;;)switch(d){case "hex":a:{b= +Number(b)||0;d=this.length-b;c?(c=Number(c),c>d&&(c=d)):c=d;d=a.length;if(0!==d%2)throw new TypeError("Invalid hex string");c>d/2&&(c=d/2);for(d=0;d(e-=2));++g){var h=d.charCodeAt(g);a=h>>8;h%=256;f.push(h);f.push(a)}return Db(f,this,b,c);default:if(e)throw new TypeError("Unknown encoding: "+d);d=(""+d).toLowerCase();e=!0}};M.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}}; +function Ab(a,b,c){c=Math.min(a.length,c);for(var d=[];be&&(f=e);break;case 2:var h=a[b+1];128===(h&192)&&(e=(e&31)<<6|h&63,127e||57343e&&(f= +e))}null===f?(f=65533,g=1):65535>>10&1023|55296),f=56320|f&1023);d.push(f);b+=g}a=d.length;if(a<=Fb)d=String.fromCharCode.apply(String,d);else{c="";for(b=0;ba?(a+=c,0>a&&(a=0)):a>c&&(a=c);0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c);ba)throw new RangeError("offset is not uint");if(a+b>c)throw new RangeError("Trying to access beyond buffer length");} +M.prototype.readUIntLE=function(a,b,c){a|=0;b|=0;c||Q(a,b,this.length);c=this[a];for(var d=1,e=0;++e=128*d&&(c-=Math.pow(2,8*b));return c}; +M.prototype.readIntBE=function(a,b,c){a|=0;b|=0;c||Q(a,b,this.length);c=b;for(var d=1,e=this[a+--c];0=128*d&&(e-=Math.pow(2,8*b));return e};M.prototype.readInt8=function(a,b){b||Q(a,1,this.length);return this[a]&128?-1*(255-this[a]+1):this[a]};M.prototype.readInt16LE=function(a,b){b||Q(a,2,this.length);a=this[a]|this[a+1]<<8;return a&32768?a|4294901760:a}; +M.prototype.readInt16BE=function(a,b){b||Q(a,2,this.length);a=this[a+1]|this[a]<<8;return a&32768?a|4294901760:a};M.prototype.readInt32LE=function(a,b){b||Q(a,4,this.length);return this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24};M.prototype.readInt32BE=function(a,b){b||Q(a,4,this.length);return this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]};M.prototype.readFloatLE=function(a,b){b||Q(a,4,this.length);return jb(this,a,!0,23,4)}; +M.prototype.readFloatBE=function(a,b){b||Q(a,4,this.length);return jb(this,a,!1,23,4)};M.prototype.readDoubleLE=function(a,b){b||Q(a,8,this.length);return jb(this,a,!0,52,8)};M.prototype.readDoubleBE=function(a,b){b||Q(a,8,this.length);return jb(this,a,!1,52,8)};function R(a,b,c,d,e,f){if(!O(a))throw new TypeError('"buffer" argument must be a Buffer instance');if(b>e||ba.length)throw new RangeError("Index out of range");} +M.prototype.writeUIntLE=function(a,b,c,d){a=+a;b|=0;c|=0;d||R(this,a,b,c,Math.pow(2,8*c)-1,0);d=1;var e=0;for(this[b]=a&255;++eb&&(b=65535+b+1);for(var e=0,f=Math.min(a.length-c,2);e>>8*(d?e:1-e)}M.prototype.writeUInt16LE=function(a,b,c){a=+a;b|=0;c||R(this,a,b,2,65535,0);M.TYPED_ARRAY_SUPPORT?(this[b]=a&255,this[b+1]=a>>>8):Gb(this,a,b,!0);return b+2};M.prototype.writeUInt16BE=function(a,b,c){a=+a;b|=0;c||R(this,a,b,2,65535,0);M.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a&255):Gb(this,a,b,!1);return b+2}; +function Hb(a,b,c,d){0>b&&(b=4294967295+b+1);for(var e=0,f=Math.min(a.length-c,4);e>>8*(d?e:3-e)&255}M.prototype.writeUInt32LE=function(a,b,c){a=+a;b|=0;c||R(this,a,b,4,4294967295,0);M.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=a&255):Hb(this,a,b,!0);return b+4}; +M.prototype.writeUInt32BE=function(a,b,c){a=+a;b|=0;c||R(this,a,b,4,4294967295,0);M.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a&255):Hb(this,a,b,!1);return b+4};M.prototype.writeIntLE=function(a,b,c,d){a=+a;b|=0;d||(d=Math.pow(2,8*c-1),R(this,a,b,c,d-1,-d));d=0;var e=1,f=0;for(this[b]=a&255;++da&&0===f&&0!==this[b+d-1]&&(f=1),this[b+d]=(a/e>>0)-f&255;return b+c}; +M.prototype.writeIntBE=function(a,b,c,d){a=+a;b|=0;d||(d=Math.pow(2,8*c-1),R(this,a,b,c,d-1,-d));d=c-1;var e=1,f=0;for(this[b+d]=a&255;0<=--d&&(e*=256);)0>a&&0===f&&0!==this[b+d+1]&&(f=1),this[b+d]=(a/e>>0)-f&255;return b+c};M.prototype.writeInt8=function(a,b,c){a=+a;b|=0;c||R(this,a,b,1,127,-128);M.TYPED_ARRAY_SUPPORT||(a=Math.floor(a));0>a&&(a=255+a+1);this[b]=a&255;return b+1}; +M.prototype.writeInt16LE=function(a,b,c){a=+a;b|=0;c||R(this,a,b,2,32767,-32768);M.TYPED_ARRAY_SUPPORT?(this[b]=a&255,this[b+1]=a>>>8):Gb(this,a,b,!0);return b+2};M.prototype.writeInt16BE=function(a,b,c){a=+a;b|=0;c||R(this,a,b,2,32767,-32768);M.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a&255):Gb(this,a,b,!1);return b+2}; +M.prototype.writeInt32LE=function(a,b,c){a=+a;b|=0;c||R(this,a,b,4,2147483647,-2147483648);M.TYPED_ARRAY_SUPPORT?(this[b]=a&255,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):Hb(this,a,b,!0);return b+4};M.prototype.writeInt32BE=function(a,b,c){a=+a;b|=0;c||R(this,a,b,4,2147483647,-2147483648);0>a&&(a=4294967295+a+1);M.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a&255):Hb(this,a,b,!1);return b+4}; +function Ib(a,b,c,d){if(c+d>a.length)throw new RangeError("Index out of range");if(0>c)throw new RangeError("Index out of range");}M.prototype.writeFloatLE=function(a,b,c){c||Ib(this,a,b,4);kb(this,a,b,!0,23,4);return b+4};M.prototype.writeFloatBE=function(a,b,c){c||Ib(this,a,b,4);kb(this,a,b,!1,23,4);return b+4};M.prototype.writeDoubleLE=function(a,b,c){c||Ib(this,a,b,8);kb(this,a,b,!0,52,8);return b+8};M.prototype.writeDoubleBE=function(a,b,c){c||Ib(this,a,b,8);kb(this,a,b,!1,52,8);return b+8}; +M.prototype.copy=function(a,b,c,d){c||(c=0);d||0===d||(d=this.length);b>=a.length&&(b=a.length);b||(b=0);0b)throw new RangeError("targetStart out of bounds");if(0>c||c>=this.length)throw new RangeError("sourceStart out of bounds");if(0>d)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length);a.length-be|| +!M.TYPED_ARRAY_SUPPORT)for(d=0;de&&(a=e)}if(void 0!==d&&"string"!==typeof d)throw new TypeError("encoding must be a string");if("string"===typeof d&&!M.isEncoding(d))throw new TypeError("Unknown encoding: "+d);}else"number"===typeof a&&(a&=255);if(0>b||this.length>>= +0;c=void 0===c?this.length:c>>>0;a||(a=0);if("number"===typeof a)for(d=b;dc){if(!e){if(56319c){-1<(b-=3)&&f.push(239,191,189);e=c;continue}c=(e-55296<<10|c-56320)+65536}else e&&-1<(b-=3)&&f.push(239,191,189);e=null;if(128>c){if(0>--b)break;f.push(c)}else if(2048>c){if(0>(b-=2))break;f.push(c>>6|192,c&63|128)}else if(65536>c){if(0>(b-=3))break; +f.push(c>>12|224,c>>6&63|128,c&63|128)}else if(1114112>c){if(0>(b-=4))break;f.push(c>>18|240,c>>12&63|128,c>>6&63|128,c&63|128)}else throw Error("Invalid code point");}return f}function Eb(a){for(var b=[],c=0;ca.length)a="";else for(;0!==a.length%4;)a+="=";fb||gb();var b=a.length;if(0>16&255;d[f++]=g>>8&255;d[f++]=g&255}2===c?(g=L[a.charCodeAt(b)]<<2| +L[a.charCodeAt(b+1)]>>4,d[f++]=g&255):1===c&&(g=L[a.charCodeAt(b)]<<10|L[a.charCodeAt(b+1)]<<4|L[a.charCodeAt(b+2)]>>2,d[f++]=g>>8&255,d[f++]=g&255);return d}function Db(a,b,c,d){for(var e=0;e=b.length||e>=a.length);++e)b[e+c]=a[e];return e}function wb(a){return null!=a&&(!!a._isBuffer||Kb(a)||"function"===typeof a.readFloatLE&&"function"===typeof a.slice&&Kb(a.slice(0,0)))}function Kb(a){return!!a.constructor&&"function"===typeof a.constructor.isBuffer&&a.constructor.isBuffer(a)} +var Lb=Object.freeze({__proto__:null,INSPECT_MAX_BYTES:50,kMaxLength:ob,Buffer:M,SlowBuffer:function(a){+a!=a&&(a=0);return M.alloc(+a)},isBuffer:wb}),Mb=Qa(function(a,b){function c(a,b){for(var c in a)b[c]=a[c]}function d(a,b,c){return e(a,b,c)}var e=Lb.Buffer;e.from&&e.alloc&&e.allocUnsafe&&e.allocUnsafeSlow?a.exports=Lb:(c(Lb,b),b.Buffer=d);d.prototype=Object.create(e.prototype);c(e,d);d.from=function(a,b,c){if("number"===typeof a)throw new TypeError("Argument must not be a number");return e(a, +b,c)};d.alloc=function(a,b,c){if("number"!==typeof a)throw new TypeError("Argument must be a number");a=e(a);void 0!==b?"string"===typeof c?a.fill(b,c):a.fill(b):a.fill(0);return a};d.allocUnsafe=function(a){if("number"!==typeof a)throw new TypeError("Argument must be a number");return e(a)};d.allocUnsafeSlow=function(a){if("number"!==typeof a)throw new TypeError("Argument must be a number");return Lb.SlowBuffer(a)}}),Nb=Qa(function(a,b){function c(){throw Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11"); +}function d(a,b){if("number"!==typeof a||a!==a)throw new TypeError("offset must be a number");if(a>q||0>a)throw new TypeError("offset must be a uint32");if(a>m||a>b)throw new RangeError("offset out of range");}function e(a,b,c){if("number"!==typeof a||a!==a)throw new TypeError("size must be a number");if(a>q||0>a)throw new TypeError("size must be a uint32");if(a+b>c||a>m)throw new RangeError("buffer too small");}function f(a,b,c,f){if(!(n.isBuffer(a)||a instanceof Pa.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array'); +if("function"===typeof b)f=b,b=0,c=a.length;else if("function"===typeof c)f=c,c=a.length-b;else if("function"!==typeof f)throw new TypeError('"cb" argument must be a function');d(b,a.length);e(c,b,a.length);return g(a,b,c,f)}function g(a,b,c,d){b=new Uint8Array(a.buffer,b,c);r.getRandomValues(b);if(d)Za(function(){d(null,a)});else return a}function h(a,b,c){"undefined"===typeof b&&(b=0);if(!(n.isBuffer(a)||a instanceof Pa.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array'); +d(b,a.length);void 0===c&&(c=a.length-b);e(c,b,a.length);return g(a,b,c)}var n=Mb.Buffer,m=Mb.kMaxLength,r=Pa.crypto||Pa.msCrypto,q=Math.pow(2,32)-1;r&&r.getRandomValues?(b.randomFill=f,b.randomFillSync=h):(b.randomFill=c,b.randomFillSync=c)}),Ob=Qa(function(a){a.exports=Nb}).randomFillSync,Pb=Math.floor(.001*(Date.now()-performance.now()));function S(a){if("string"!==typeof a)throw new TypeError("Path must be a string. Received "+JSON.stringify(a));} +function Qb(a,b){for(var c="",d=0,e=-1,f=0,g,h=0;h<=a.length;++h){if(hc.length||2!==d||46!==c.charCodeAt(c.length-1)||46!==c.charCodeAt(c.length-2))if(2h){if(47===b.charCodeAt(f+m))return b.slice(f+ +m+1);if(0===m)return b.slice(f+m)}else e>h&&(47===a.charCodeAt(c+m)?n=m:0===m&&(n=0));break}var r=a.charCodeAt(c+m),q=b.charCodeAt(f+m);if(r!==q)break;else 47===r&&(n=m)}e="";for(m=c+n+1;m<=d;++m)if(m===d||47===a.charCodeAt(m))e=0===e.length?e+"..":e+"/..";if(0=e;--m)if(c=a.charCodeAt(m),47===c){if(!n){g=m+1;break}}else-1===h&&(n=!1,h=m+1),46===c?-1===f?f=m:1!==r&&(r=1):-1!==f&&(r=-1);-1===f||-1===h||0===r||1===r&&f===h-1&&f===g+1?-1!==h&&(b.base=0=== +g&&d?b.name=a.slice(1,h):b.name=a.slice(g,h)):(0===g&&d?(b.name=a.slice(1,f),b.base=a.slice(1,h)):(b.name=a.slice(g,f),b.base=a.slice(g,h)),b.ext=a.slice(f,h));0b&&(c--,b+=1E9));return[c,b]}),exit:function(a){throw new Tb(a); +},kill:function(a){throw new Ub(a);},randomFillSync:Ob,isTTY:function(){return!0},path:Sb,fs:null},T,U=k(1),V=k(2),Xb=k(4),Yb=k(8),W=k(16),Zb=k(32),X=k(64),$b=k(128),ac=k(256),bc=k(512),cc=k(1024),dc=k(2048),ec=k(4096),fc=k(8192),gc=k(16384),kc=k(32768),lc=k(65536),mc=k(131072),nc=k(262144),oc=k(524288),pc=k(1048576),Y=k(2097152),qc=k(4194304),rc=k(8388608),sc=k(16777216),tc=k(33554432),uc=k(67108864),vc=k(134217728),wc=k(268435456),xc=U|V|Xb|Yb|W|Zb|X|$b|ac|bc|cc|dc|ec|fc|gc|kc|lc|mc|nc|oc|pc|Y| +rc|qc|sc|uc|tc|vc|wc,yc=U|V|Xb|Yb|W|Zb|X|$b|ac|Y|qc|rc|vc,zc=k(0),Ac=Yb|W|$b|bc|cc|dc|ec|fc|gc|kc|lc|mc|nc|oc|pc|Y|rc|sc|uc|tc|vc,Bc=Ac|yc,Cc=V|Yb|X|Y|vc|wc,Dc=V|Yb|X|Y|vc,Ec=k(0),Fc={E2BIG:1,EACCES:2,EADDRINUSE:3,EADDRNOTAVAIL:4,EAFNOSUPPORT:5,EALREADY:7,EAGAIN:6,EBADF:8,EBADMSG:9,EBUSY:10,ECANCELED:11,ECHILD:12,ECONNABORTED:13,ECONNREFUSED:14,ECONNRESET:15,EDEADLOCK:16,EDESTADDRREQ:17,EDOM:18,EDQUOT:19,EEXIST:20,EFAULT:21,EFBIG:22,EHOSTDOWN:23,EHOSTUNREACH:23,EIDRM:24,EILSEQ:25,EINPROGRESS:26,EINTR:27, +EINVAL:28,EIO:29,EISCONN:30,EISDIR:31,ELOOP:32,EMFILE:33,EMLINK:34,EMSGSIZE:35,EMULTIHOP:36,ENAMETOOLONG:37,ENETDOWN:38,ENETRESET:39,ENETUNREACH:40,ENFILE:41,ENOBUFS:42,ENODEV:43,ENOENT:44,ENOEXEC:45,ENOLCK:46,ENOLINK:47,ENOMEM:48,ENOMSG:49,ENOPROTOOPT:50,ENOSPC:51,ENOSYS:52,ENOTCONN:53,ENOTDIR:54,ENOTEMPTY:55,ENOTRECOVERABLE:56,ENOTSOCK:57,ENOTTY:59,ENXIO:60,EOVERFLOW:61,EOWNERDEAD:62,EPERM:63,EPIPE:64,EPROTO:65,EPROTONOSUPPORT:66,EPROTOTYPE:67,ERANGE:68,EROFS:69,ESPIPE:70,ESRCH:71,ESTALE:72,ETIMEDOUT:73, +ETXTBSY:74,EXDEV:75},Gc=(T={},T[6]="SIGHUP",T[8]="SIGINT",T[11]="SIGQUIT",T[7]="SIGILL",T[15]="SIGTRAP",T[0]="SIGABRT",T[2]="SIGBUS",T[5]="SIGFPE",T[9]="SIGKILL",T[20]="SIGUSR1",T[12]="SIGSEGV",T[21]="SIGUSR2",T[10]="SIGPIPE",T[1]="SIGALRM",T[14]="SIGTERM",T[3]="SIGCHLD",T[4]="SIGCONT",T[13]="SIGSTOP",T[16]="SIGTSTP",T[17]="SIGTTIN",T[18]="SIGTTOU",T[19]="SIGURG",T[23]="SIGXCPU",T[24]="SIGXFSZ",T[22]="SIGVTALRM",T),Hc=U|V|W|$b|Y|vc,Ic=U|X|W|$b|Y|vc; +function Jc(a){var b=Math.trunc(a);a=k(Math.round(1E3*(a-b)));return k(b)*k(1E3)+a}function Z(a){return function(){for(var b=[],c=0;ca.rights.base)return 63;c|=a.rights.inheriting;if(c>a.rights.inheriting)return 63;a.rights.base=b;a.rights.inheriting=c;return 0}),fd_filestat_get:Z(function(a,b){a=d(a,Y);var c=q.fstatSync(a.real); +g.refreshMemory();g.view.setBigUint64(b,k(c.dev),!0);b+=8;g.view.setBigUint64(b,k(c.ino),!0);b+=8;g.view.setUint8(b,a.filetype);b+=4;g.view.setUint32(b,Number(c.nlink),!0);b+=4;g.view.setBigUint64(b,k(c.size),!0);b+=8;g.view.setBigUint64(b,Jc(c.atimeMs),!0);b+=8;g.view.setBigUint64(b,Jc(c.mtimeMs),!0);g.view.setBigUint64(b+8,Jc(c.ctimeMs),!0);return 0}),fd_filestat_set_size:Z(function(a,b){a=d(a,qc);q.ftruncate(a.real,Number(b));return 0}),fd_filestat_set_times:Z(function(a,c,e,g){a=d(a,rc);var f= +b(2);q.futimesSync(a.real,2===(g&2)?f:c,8===(g&8)?f:e);return 0}),fd_prestat_get:Z(function(a,b){a=d(a,k(0));if(!a.path)return 28;g.refreshMemory();g.view.setUint8(b,0);g.view.setUint32(b+4,D.byteLength(a.fakePath),!0);return 0}),fd_prestat_dir_name:Z(function(a,b,c){a=d(a,k(0));if(!a.path)return 28;g.refreshMemory();D.from(g.memory.buffer).write(a.fakePath,b,c,"utf8");return 0}),fd_pwrite:Z(function(a,b,c,f,h){var v=d(a,X|Xb),t=0;e(b,c).forEach(function(a){for(var b=0;b=h+c)break;D.from(g.memory.buffer).write(n.name,b);b+=D.byteLength(n.name)}g.view.setUint32(f,b-h,!0);return 0}),fd_renumber:Z(function(a,b){d(a,k(0));d(b,k(0));q.closeSync(g.FD_MAP.get(a).real);g.FD_MAP.set(a,g.FD_MAP.get(b));g.FD_MAP.delete(b);return 0}),fd_seek:Z(function(a,b,c,e){a=d(a,Xb);g.refreshMemory();switch(c){case 0:a.offset=(a.offset?a.offset:k(0))+k(b);break;case 1:c=q.fstatSync(a.real).size;a.offset=k(c)+k(b);break;case 2:a.offset= +k(b)}g.view.setBigUint64(e,a.offset,!0);return 0}),fd_tell:Z(function(a,b){a=d(a,Zb);g.refreshMemory();a.offset||(a.offset=k(0));g.view.setBigUint64(b,a.offset,!0);return 0}),fd_sync:Z(function(a){a=d(a,W);q.fsyncSync(a.real);return 0}),path_create_directory:Z(function(a,b,c){a=d(a,bc);if(!a.path)return 28;g.refreshMemory();b=D.from(g.memory.buffer,b,c).toString();q.mkdirSync(x.resolve(a.path,b));return 0}),path_filestat_get:Z(function(a,b,c,e,f){a=d(a,nc);if(!a.path)return 28;g.refreshMemory();c= +D.from(g.memory.buffer,c,e).toString();c=q.statSync(x.resolve(a.path,c));g.view.setBigUint64(f,k(c.dev),!0);f+=8;g.view.setBigUint64(f,k(c.ino),!0);f+=8;g.view.setUint8(f,Mc(g,void 0,c).filetype);f+=4;g.view.setUint32(f,Number(c.nlink),!0);f+=4;g.view.setBigUint64(f,k(c.size),!0);f+=8;g.view.setBigUint64(f,Jc(c.atimeMs),!0);f+=8;g.view.setBigUint64(f,Jc(c.mtimeMs),!0);g.view.setBigUint64(f+8,Jc(c.ctimeMs),!0);return 0}),path_filestat_set_times:Z(function(a,c,e,f,h,n){a=d(a,pc);if(!a.path)return 28; +g.refreshMemory();var m=b(2),v=2===(c&2);c=8===(c&8);e=D.from(g.memory.buffer,e,f).toString();q.utimesSync(x.resolve(a.path,e),v?m:h,c?m:n);return 0}),path_link:Z(function(a,b,c,e,f,h,m){a=d(a,dc);f=d(f,ec);if(!a.path||!f.path)return 28;g.refreshMemory();c=D.from(g.memory.buffer,c,e).toString();h=D.from(g.memory.buffer,h,m).toString();q.linkSync(x.resolve(a.path,c),x.resolve(f.path,h));return 0}),path_open:Z(function(a,b,c,e,f,h,m,n,r){b=d(a,fc);h=k(h);m=k(m);a=(h&(V|gc))!==k(0);var v=(h&(U|X|ac| +qc))!==k(0);if(v&&a)var t=q.constants.O_RDWR;else a?t=q.constants.O_RDONLY:v&&(t=q.constants.O_WRONLY);a=h|fc;h|=m;0!==(f&1)&&(t|=q.constants.O_CREAT,a|=cc);0!==(f&2)&&(t|=q.constants.O_DIRECTORY);0!==(f&4)&&(t|=q.constants.O_EXCL);0!==(f&8)&&(t|=q.constants.O_TRUNC,a|=oc);0!==(n&1)&&(t|=q.constants.O_APPEND);0!==(n&2)&&(t=q.constants.O_DSYNC?t|q.constants.O_DSYNC:t|q.constants.O_SYNC,h|=U);0!==(n&4)&&(t|=q.constants.O_NONBLOCK);0!==(n&8)&&(t=q.constants.O_RSYNC?t|q.constants.O_RSYNC:t|q.constants.O_SYNC, +h|=W);0!==(n&16)&&(t|=q.constants.O_SYNC,h|=W);v&&0===(t&(q.constants.O_APPEND|q.constants.O_TRUNC))&&(h|=Xb);g.refreshMemory();c=D.from(g.memory.buffer,c,e).toString();c=x.resolve(b.path,c);if(x.relative(b.path,c).startsWith(".."))return 76;try{var K=q.realpathSync(c);if(x.relative(b.path,K).startsWith(".."))return 76}catch(jc){if("ENOENT"===jc.code)K=c;else throw jc;}t=q.openSync(K,t);c=ea(g.FD_MAP.keys()).reverse()[0]+1;g.FD_MAP.set(c,{real:t,filetype:void 0,rights:{base:a,inheriting:h},path:K}); +Lc(g,c);g.view.setUint32(r,c,!0);return 0}),path_readlink:Z(function(a,b,c,e,f,h){a=d(a,kc);if(!a.path)return 28;g.refreshMemory();b=D.from(g.memory.buffer,b,c).toString();b=x.resolve(a.path,b);b=q.readlinkSync(b);e=D.from(g.memory.buffer).write(b,e,f);g.view.setUint32(h,e,!0);return 0}),path_remove_directory:Z(function(a,b,c){a=d(a,tc);if(!a.path)return 28;g.refreshMemory();b=D.from(g.memory.buffer,b,c).toString();q.rmdirSync(x.resolve(a.path,b));return 0}),path_rename:Z(function(a,b,c,e,f,h){a= +d(a,lc);e=d(e,mc);if(!a.path||!e.path)return 28;g.refreshMemory();b=D.from(g.memory.buffer,b,c).toString();f=D.from(g.memory.buffer,f,h).toString();q.renameSync(x.resolve(a.path,b),x.resolve(e.path,f));return 0}),path_symlink:Z(function(a,b,c,e,f){c=d(c,sc);if(!c.path)return 28;g.refreshMemory();a=D.from(g.memory.buffer,a,b).toString();e=D.from(g.memory.buffer,e,f).toString();q.symlinkSync(a,x.resolve(c.path,e));return 0}),path_unlink_file:Z(function(a,b,c){a=d(a,uc);if(!a.path)return 28;g.refreshMemory(); +b=D.from(g.memory.buffer,b,c).toString();q.unlinkSync(x.resolve(a.path,b));return 0}),poll_oneoff:function(a,c,d,e){var f=0,h=0;g.refreshMemory();for(var m=0;mh?q:h);g.view.setBigUint64(c, +n,!0);c+=8;g.view.setUint16(c,v,!0);c+=2;g.view.setUint8(c,0);c+=1;c+=5;f+=1;break;case 1:case 2:a+=3;g.view.getUint32(a,!0);a+=4;g.view.setBigUint64(c,n,!0);c+=8;g.view.setUint16(c,52,!0);c+=2;g.view.setUint8(c,q);c+=1;c+=5;f+=1;break;default:return 28}}for(g.view.setUint32(e,f,!0);r.hrtime()> 16) & 0xffff; +}, "~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +this.s1 = 1; +this.s2 = 0; +}); +Clazz.overrideMethod(c$, "getValue", +function(){ +return ((this.s2 << 16) | this.s1); +}); +Clazz.overrideMethod(c$, "update", +function(buf, index, len){ +if (len == 1) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +this.s1 %= 65521; +this.s2 %= 65521; +return; +}var len1 = Clazz.doubleToInt(len / 5552); +var len2 = len % 5552; +while (len1-- > 0) { +var k = 5552; +len -= k; +while (k-- > 0) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +} +this.s1 %= 65521; +this.s2 %= 65521; +} +var k = len2; +len -= k; +while (k-- > 0) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +} +this.s1 %= 65521; +this.s2 %= 65521; +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "updateByteAsInt", +function(b){ +this.b1[0] = b; +this.update(this.b1, 0, 1); +}, "~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/CRC32.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/CRC32.js new file mode 100755 index 000000000000..84311a53df1e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/CRC32.js @@ -0,0 +1,36 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["com.jcraft.jzlib.Checksum"], "com.jcraft.jzlib.CRC32", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.crc = 0; +this.b1 = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "CRC32", null, com.jcraft.jzlib.Checksum); +Clazz.prepareFields (c$, function(){ +this.b1 = Clazz.newByteArray (1, 0); +}); +Clazz.overrideMethod(c$, "update", +function(buf, index, len){ +var c = ~this.crc; +while (--len >= 0) c = com.jcraft.jzlib.CRC32.crc_table[(c ^ buf[index++]) & 0xff] ^ (c >>> 8); + +this.crc = ~c; +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +this.crc = 0; +}); +Clazz.overrideMethod(c$, "resetLong", +function(vv){ +this.crc = (vv & 0xffffffff); +}, "~N"); +Clazz.overrideMethod(c$, "getValue", +function(){ +return this.crc & 0xffffffff; +}); +Clazz.overrideMethod(c$, "updateByteAsInt", +function(b){ +this.b1[0] = b; +this.update(this.b1, 0, 1); +}, "~N"); +c$.crc_table = Clazz.newIntArray(-1, [0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274, 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548, 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990, 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096, 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722, 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980, 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974, 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192, 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290, 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444, 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902, 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960, 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506, 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948, 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054, 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912, -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366, -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716, -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770, -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408, -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446, -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492, -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754, -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376, -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662, -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284, -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362, -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400, -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478, -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188, -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682, -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117]); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Checksum.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Checksum.js new file mode 100755 index 000000000000..fb23d44c6792 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Checksum.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.declareInterface(com.jcraft.jzlib, "Checksum"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Deflate.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Deflate.js new file mode 100755 index 000000000000..5eda7931992b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Deflate.js @@ -0,0 +1,911 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["com.jcraft.jzlib.Tree"], "com.jcraft.jzlib.Deflate", ["com.jcraft.jzlib.CRC32", "$.GZIPHeader", "$.StaticTree"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.strm = null; +this.status = 0; +this.pending_buf = null; +this.pending_buf_size = 0; +this.pending_out = 0; +this.pending = 0; +this.wrap = 1; +this.data_type = 0; +this.method = 0; +this.last_flush = 0; +this.w_size = 0; +this.w_bits = 0; +this.w_mask = 0; +this.window = null; +this.window_size = 0; +this.prev = null; +this.head = null; +this.ins_h = 0; +this.hash_size = 0; +this.hash_bits = 0; +this.hash_mask = 0; +this.hash_shift = 0; +this.block_start = 0; +this.match_length = 0; +this.prev_match = 0; +this.match_available = 0; +this.strstart = 0; +this.match_start = 0; +this.lookahead = 0; +this.prev_length = 0; +this.max_chain_length = 0; +this.max_lazy_match = 0; +this.level = 0; +this.strategy = 0; +this.good_match = 0; +this.nice_match = 0; +this.dyn_ltree = null; +this.dyn_dtree = null; +this.bl_tree = null; +this.l_desc = null; +this.d_desc = null; +this.bl_desc = null; +this.bl_count = null; +this.heap = null; +this.heap_len = 0; +this.heap_max = 0; +this.depth = null; +this.l_buf = 0; +this.lit_bufsize = 0; +this.last_lit = 0; +this.d_buf = 0; +this.opt_len = 0; +this.static_len = 0; +this.matches = 0; +this.last_eob_len = 0; +this.bi_buf = 0; +this.bi_valid = 0; +this.gheader = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "Deflate", null); +Clazz.prepareFields (c$, function(){ +this.l_desc = new com.jcraft.jzlib.Tree(); +this.d_desc = new com.jcraft.jzlib.Tree(); +this.bl_desc = new com.jcraft.jzlib.Tree(); +this.bl_count = Clazz.newShortArray (16, 0); +this.heap = Clazz.newIntArray (573, 0); +this.depth = Clazz.newByteArray (573, 0); +}); +Clazz.makeConstructor(c$, +function(strm){ +this.strm = strm; +this.dyn_ltree = Clazz.newShortArray (1146, 0); +this.dyn_dtree = Clazz.newShortArray (122, 0); +this.bl_tree = Clazz.newShortArray (78, 0); +}, "com.jcraft.jzlib.ZStream"); +Clazz.defineMethod(c$, "deflateInit", +function(level){ +return this.deflateInit2(level, 15); +}, "~N"); +Clazz.defineMethod(c$, "deflateInit2", +function(level, bits){ +return this.deflateInit5(level, 8, bits, 8, 0); +}, "~N,~N"); +Clazz.defineMethod(c$, "deflateInit3", +function(level, bits, memlevel){ +return this.deflateInit5(level, 8, bits, memlevel, 0); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "lm_init", +function(){ +this.window_size = 2 * this.w_size; +this.head[this.hash_size - 1] = 0; +for (var i = 0; i < this.hash_size - 1; i++) { +this.head[i] = 0; +} +this.max_lazy_match = com.jcraft.jzlib.Deflate.config_table[this.level].max_lazy; +this.good_match = com.jcraft.jzlib.Deflate.config_table[this.level].good_length; +this.nice_match = com.jcraft.jzlib.Deflate.config_table[this.level].nice_length; +this.max_chain_length = com.jcraft.jzlib.Deflate.config_table[this.level].max_chain; +this.strstart = 0; +this.block_start = 0; +this.lookahead = 0; +this.match_length = this.prev_length = 2; +this.match_available = 0; +this.ins_h = 0; +}); +Clazz.defineMethod(c$, "tr_init", +function(){ +this.l_desc.dyn_tree = this.dyn_ltree; +this.l_desc.stat_desc = com.jcraft.jzlib.StaticTree.static_l_desc; +this.d_desc.dyn_tree = this.dyn_dtree; +this.d_desc.stat_desc = com.jcraft.jzlib.StaticTree.static_d_desc; +this.bl_desc.dyn_tree = this.bl_tree; +this.bl_desc.stat_desc = com.jcraft.jzlib.StaticTree.static_bl_desc; +this.bi_buf = 0; +this.bi_valid = 0; +this.last_eob_len = 8; +this.init_block(); +}); +Clazz.defineMethod(c$, "init_block", +function(){ +for (var i = 0; i < 286; i++) this.dyn_ltree[i * 2] = 0; + +for (var i = 0; i < 30; i++) this.dyn_dtree[i * 2] = 0; + +for (var i = 0; i < 19; i++) this.bl_tree[i * 2] = 0; + +this.dyn_ltree[512] = 1; +this.opt_len = this.static_len = 0; +this.last_lit = this.matches = 0; +}); +Clazz.defineMethod(c$, "pqdownheap", +function(tree, k){ +var v = this.heap[k]; +var j = k << 1; +while (j <= this.heap_len) { +if (j < this.heap_len && com.jcraft.jzlib.Deflate.smaller(tree, this.heap[j + 1], this.heap[j], this.depth)) { +j++; +}if (com.jcraft.jzlib.Deflate.smaller(tree, v, this.heap[j], this.depth)) break; +this.heap[k] = this.heap[j]; +k = j; +j <<= 1; +} +this.heap[k] = v; +}, "~A,~N"); +c$.smaller = Clazz.defineMethod(c$, "smaller", +function(tree, n, m, depth){ +var tn2 = tree[n * 2]; +var tm2 = tree[m * 2]; +return (tn2 < tm2 || (tn2 == tm2 && depth[n] <= depth[m])); +}, "~A,~N,~N,~A"); +Clazz.defineMethod(c$, "scan_tree", +function(tree, max_code){ +var n; +var prevlen = -1; +var curlen; +var nextlen = tree[1]; +var count = 0; +var max_count = 7; +var min_count = 4; +if (nextlen == 0) { +max_count = 138; +min_count = 3; +}tree[(max_code + 1) * 2 + 1] = 0xffff; +for (n = 0; n <= max_code; n++) { +curlen = nextlen; +nextlen = tree[(n + 1) * 2 + 1]; +if (++count < max_count && curlen == nextlen) { +continue; +} else if (count < min_count) { +this.bl_tree[curlen * 2] += count; +} else if (curlen != 0) { +if (curlen != prevlen) this.bl_tree[curlen * 2]++; +this.bl_tree[32]++; +} else if (count <= 10) { +this.bl_tree[34]++; +} else { +this.bl_tree[36]++; +}count = 0; +prevlen = curlen; +if (nextlen == 0) { +max_count = 138; +min_count = 3; +} else if (curlen == nextlen) { +max_count = 6; +min_count = 3; +} else { +max_count = 7; +min_count = 4; +}} +}, "~A,~N"); +Clazz.defineMethod(c$, "build_bl_tree", +function(){ +var max_blindex; +this.scan_tree(this.dyn_ltree, this.l_desc.max_code); +this.scan_tree(this.dyn_dtree, this.d_desc.max_code); +this.bl_desc.build_tree(this); +for (max_blindex = 18; max_blindex >= 3; max_blindex--) { +if (this.bl_tree[com.jcraft.jzlib.Tree.bl_order[max_blindex] * 2 + 1] != 0) break; +} +this.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; +return max_blindex; +}); +Clazz.defineMethod(c$, "send_all_trees", +function(lcodes, dcodes, blcodes){ +var rank; +this.send_bits(lcodes - 257, 5); +this.send_bits(dcodes - 1, 5); +this.send_bits(blcodes - 4, 4); +for (rank = 0; rank < blcodes; rank++) { +this.send_bits(this.bl_tree[com.jcraft.jzlib.Tree.bl_order[rank] * 2 + 1], 3); +} +this.send_tree(this.dyn_ltree, lcodes - 1); +this.send_tree(this.dyn_dtree, dcodes - 1); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "send_tree", +function(tree, max_code){ +var n; +var prevlen = -1; +var curlen; +var nextlen = tree[1]; +var count = 0; +var max_count = 7; +var min_count = 4; +if (nextlen == 0) { +max_count = 138; +min_count = 3; +}for (n = 0; n <= max_code; n++) { +curlen = nextlen; +nextlen = tree[(n + 1) * 2 + 1]; +if (++count < max_count && curlen == nextlen) { +continue; +} else if (count < min_count) { +do { +this.send_code(curlen, this.bl_tree); +} while (--count != 0); +} else if (curlen != 0) { +if (curlen != prevlen) { +this.send_code(curlen, this.bl_tree); +count--; +}this.send_code(16, this.bl_tree); +this.send_bits(count - 3, 2); +} else if (count <= 10) { +this.send_code(17, this.bl_tree); +this.send_bits(count - 3, 3); +} else { +this.send_code(18, this.bl_tree); +this.send_bits(count - 11, 7); +}count = 0; +prevlen = curlen; +if (nextlen == 0) { +max_count = 138; +min_count = 3; +} else if (curlen == nextlen) { +max_count = 6; +min_count = 3; +} else { +max_count = 7; +min_count = 4; +}} +}, "~A,~N"); +Clazz.defineMethod(c$, "put_byte", +function(p, start, len){ +System.arraycopy(p, start, this.pending_buf, this.pending, len); +this.pending += len; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "put_byteB", +function(c){ +{ +this.pending_buf[this.pending++] = c&0xff; +}}, "~N"); +Clazz.defineMethod(c$, "put_short", +function(w){ +this.put_byteB((w)); +this.put_byteB((w >>> 8)); +}, "~N"); +Clazz.defineMethod(c$, "putShortMSB", +function(b){ +this.put_byteB((b >> 8)); +this.put_byteB((b)); +}, "~N"); +Clazz.defineMethod(c$, "send_code", +function(c, tree){ +var c2 = c * 2; +this.send_bits((tree[c2] & 0xffff), (tree[c2 + 1] & 0xffff)); +}, "~N,~A"); +Clazz.defineMethod(c$, "send_bits", +function(value, length){ +var len = length; +if (this.bi_valid > 16 - len) { +var val = value; +this.bi_buf |= ((val << this.bi_valid) & 0xffff); +this.put_short(this.bi_buf); +this.bi_buf = ((val >>> (16 - this.bi_valid)) & 0xffff); +this.bi_valid += len - 16; +} else { +this.bi_buf |= (((value) << this.bi_valid) & 0xffff); +this.bi_valid += len; +}}, "~N,~N"); +Clazz.defineMethod(c$, "_tr_align", +function(){ +this.send_bits(2, 3); +this.send_code(256, com.jcraft.jzlib.StaticTree.static_ltree); +this.bi_flush(); +if (1 + this.last_eob_len + 10 - this.bi_valid < 9) { +this.send_bits(2, 3); +this.send_code(256, com.jcraft.jzlib.StaticTree.static_ltree); +this.bi_flush(); +}this.last_eob_len = 7; +}); +Clazz.defineMethod(c$, "_tr_tally", +function(dist, lc){ +this.pending_buf[this.d_buf + this.last_lit * 2] = (dist >>> 8); +this.pending_buf[this.d_buf + this.last_lit * 2 + 1] = dist; +this.pending_buf[this.l_buf + this.last_lit] = lc; +this.last_lit++; +if (dist == 0) { +this.dyn_ltree[lc * 2]++; +} else { +this.matches++; +dist--; +this.dyn_ltree[(com.jcraft.jzlib.Tree._length_code[lc] + 256 + 1) * 2]++; +this.dyn_dtree[com.jcraft.jzlib.Tree.d_code(dist) * 2]++; +}if ((this.last_lit & 0x1fff) == 0 && this.level > 2) { +var out_length = this.last_lit * 8; +var in_length = this.strstart - this.block_start; +var dcode; +for (dcode = 0; dcode < 30; dcode++) { +out_length += this.dyn_dtree[dcode * 2] * (5 + com.jcraft.jzlib.Tree.extra_dbits[dcode]); +} +out_length >>>= 3; +if ((this.matches < (Clazz.doubleToInt(this.last_lit / 2))) && out_length < Clazz.doubleToInt(in_length / 2)) return true; +}return (this.last_lit == this.lit_bufsize - 1); +}, "~N,~N"); +Clazz.defineMethod(c$, "compress_block", +function(ltree, dtree){ +var dist; +var lc; +var lx = 0; +var code; +var extra; +if (this.last_lit != 0) { +do { +dist = ((this.pending_buf[this.d_buf + lx * 2] << 8) & 0xff00) | (this.pending_buf[this.d_buf + lx * 2 + 1] & 0xff); +lc = (this.pending_buf[this.l_buf + lx]) & 0xff; +lx++; +if (dist == 0) { +this.send_code(lc, ltree); +} else { +code = com.jcraft.jzlib.Tree._length_code[lc]; +this.send_code(code + 256 + 1, ltree); +extra = com.jcraft.jzlib.Tree.extra_lbits[code]; +if (extra != 0) { +lc -= com.jcraft.jzlib.Tree.base_length[code]; +this.send_bits(lc, extra); +}dist--; +code = com.jcraft.jzlib.Tree.d_code(dist); +this.send_code(code, dtree); +extra = com.jcraft.jzlib.Tree.extra_dbits[code]; +if (extra != 0) { +dist -= com.jcraft.jzlib.Tree.base_dist[code]; +this.send_bits(dist, extra); +}}} while (lx < this.last_lit); +}this.send_code(256, ltree); +this.last_eob_len = ltree[513]; +}, "~A,~A"); +Clazz.defineMethod(c$, "set_data_type", +function(){ +var n = 0; +var ascii_freq = 0; +var bin_freq = 0; +while (n < 7) { +bin_freq += this.dyn_ltree[n * 2]; +n++; +} +while (n < 128) { +ascii_freq += this.dyn_ltree[n * 2]; +n++; +} +while (n < 256) { +bin_freq += this.dyn_ltree[n * 2]; +n++; +} +this.data_type = (bin_freq > (ascii_freq >>> 2) ? 0 : 1); +}); +Clazz.defineMethod(c$, "bi_flush", +function(){ +if (this.bi_valid == 16) { +this.put_short(this.bi_buf); +this.bi_buf = 0; +this.bi_valid = 0; +} else if (this.bi_valid >= 8) { +this.put_byteB(this.bi_buf); +this.bi_buf >>>= 8; +this.bi_valid -= 8; +}}); +Clazz.defineMethod(c$, "bi_windup", +function(){ +if (this.bi_valid > 8) { +this.put_short(this.bi_buf); +} else if (this.bi_valid > 0) { +this.put_byteB(this.bi_buf); +}this.bi_buf = 0; +this.bi_valid = 0; +}); +Clazz.defineMethod(c$, "copy_block", +function(buf, len, header){ +this.bi_windup(); +this.last_eob_len = 8; +if (header) { +this.put_short(len); +this.put_short(~len); +}this.put_byte(this.window, buf, len); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "flush_block_only", +function(eof){ +this._tr_flush_block(this.block_start >= 0 ? this.block_start : -1, this.strstart - this.block_start, eof); +this.block_start = this.strstart; +this.strm.flush_pending(); +}, "~B"); +Clazz.defineMethod(c$, "deflate_stored", +function(flush){ +var max_block_size = 0xffff; +var max_start; +if (max_block_size > this.pending_buf_size - 5) { +max_block_size = this.pending_buf_size - 5; +}while (true) { +if (this.lookahead <= 1) { +this.fill_window(); +if (this.lookahead == 0 && flush == 0) return 0; +if (this.lookahead == 0) break; +}this.strstart += this.lookahead; +this.lookahead = 0; +max_start = this.block_start + max_block_size; +if (this.strstart == 0 || this.strstart >= max_start) { +this.lookahead = (this.strstart - max_start); +this.strstart = max_start; +this.flush_block_only(false); +if (this.strm.avail_out == 0) return 0; +}if (this.strstart - this.block_start >= this.w_size - 262) { +this.flush_block_only(false); +if (this.strm.avail_out == 0) return 0; +}} +this.flush_block_only(flush == 4); +if (this.strm.avail_out == 0) return (flush == 4) ? 2 : 0; +return flush == 4 ? 3 : 1; +}, "~N"); +Clazz.defineMethod(c$, "_tr_stored_block", +function(buf, stored_len, eof){ +this.send_bits((0) + (eof ? 1 : 0), 3); +this.copy_block(buf, stored_len, true); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "_tr_flush_block", +function(buf, stored_len, eof){ +var opt_lenb; +var static_lenb; +var max_blindex = 0; +if (this.level > 0) { +if (this.data_type == 2) this.set_data_type(); +this.l_desc.build_tree(this); +this.d_desc.build_tree(this); +max_blindex = this.build_bl_tree(); +opt_lenb = (this.opt_len + 3 + 7) >>> 3; +static_lenb = (this.static_len + 3 + 7) >>> 3; +if (static_lenb <= opt_lenb) opt_lenb = static_lenb; +} else { +opt_lenb = static_lenb = stored_len + 5; +}if (stored_len + 4 <= opt_lenb && buf != -1) { +this._tr_stored_block(buf, stored_len, eof); +} else if (static_lenb == opt_lenb) { +this.send_bits((2) + (eof ? 1 : 0), 3); +this.compress_block(com.jcraft.jzlib.StaticTree.static_ltree, com.jcraft.jzlib.StaticTree.static_dtree); +} else { +this.send_bits((4) + (eof ? 1 : 0), 3); +this.send_all_trees(this.l_desc.max_code + 1, this.d_desc.max_code + 1, max_blindex + 1); +this.compress_block(this.dyn_ltree, this.dyn_dtree); +}this.init_block(); +if (eof) { +this.bi_windup(); +}}, "~N,~N,~B"); +Clazz.defineMethod(c$, "fill_window", +function(){ +var n; +var m; +var p; +var more; +do { +more = (this.window_size - this.lookahead - this.strstart); +if (more == 0 && this.strstart == 0 && this.lookahead == 0) { +more = this.w_size; +} else if (more == -1) { +more--; +} else if (this.strstart >= this.w_size + this.w_size - 262) { +System.arraycopy(this.window, this.w_size, this.window, 0, this.w_size); +this.match_start -= this.w_size; +this.strstart -= this.w_size; +this.block_start -= this.w_size; +n = this.hash_size; +p = n; +do { +m = (this.head[--p] & 0xffff); +this.head[p] = (m >= this.w_size ? (m - this.w_size) : 0); +} while (--n != 0); +n = this.w_size; +p = n; +do { +m = (this.prev[--p] & 0xffff); +this.prev[p] = (m >= this.w_size ? (m - this.w_size) : 0); +} while (--n != 0); +more += this.w_size; +}if (this.strm.avail_in == 0) return; +n = this.strm.read_buf(this.window, this.strstart + this.lookahead, more); +this.lookahead += n; +if (this.lookahead >= 3) { +this.ins_h = this.window[this.strstart] & 0xff; +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[this.strstart + 1] & 0xff)) & this.hash_mask; +}} while (this.lookahead < 262 && this.strm.avail_in != 0); +}); +Clazz.defineMethod(c$, "deflate_fast", +function(flush){ +var hash_head = 0; +var bflush; +while (true) { +if (this.lookahead < 262) { +this.fill_window(); +if (this.lookahead < 262 && flush == 0) { +return 0; +}if (this.lookahead == 0) break; +}if (this.lookahead >= 3) { +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[(this.strstart) + (2)] & 0xff)) & this.hash_mask; +hash_head = (this.head[this.ins_h] & 0xffff); +this.prev[this.strstart & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = this.strstart; +}if (hash_head != 0 && ((this.strstart - hash_head) & 0xffff) <= this.w_size - 262) { +if (this.strategy != 2) { +this.match_length = this.longest_match(hash_head); +}}if (this.match_length >= 3) { +bflush = this._tr_tally(this.strstart - this.match_start, this.match_length - 3); +this.lookahead -= this.match_length; +if (this.match_length <= this.max_lazy_match && this.lookahead >= 3) { +this.match_length--; +do { +this.strstart++; +this.ins_h = ((this.ins_h << this.hash_shift) ^ (this.window[(this.strstart) + (2)] & 0xff)) & this.hash_mask; +hash_head = (this.head[this.ins_h] & 0xffff); +this.prev[this.strstart & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = this.strstart; +} while (--this.match_length != 0); +this.strstart++; +} else { +this.strstart += this.match_length; +this.match_length = 0; +this.ins_h = this.window[this.strstart] & 0xff; +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[this.strstart + 1] & 0xff)) & this.hash_mask; +}} else { +bflush = this._tr_tally(0, this.window[this.strstart] & 0xff); +this.lookahead--; +this.strstart++; +}if (bflush) { +this.flush_block_only(false); +if (this.strm.avail_out == 0) return 0; +}} +this.flush_block_only(flush == 4); +if (this.strm.avail_out == 0) { +if (flush == 4) return 2; +return 0; +}return flush == 4 ? 3 : 1; +}, "~N"); +Clazz.defineMethod(c$, "deflate_slow", +function(flush){ +var hash_head = 0; +var bflush; +while (true) { +if (this.lookahead < 262) { +this.fill_window(); +if (this.lookahead < 262 && flush == 0) { +return 0; +}if (this.lookahead == 0) break; +}if (this.lookahead >= 3) { +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[(this.strstart) + (2)] & 0xff)) & this.hash_mask; +hash_head = (this.head[this.ins_h] & 0xffff); +this.prev[this.strstart & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = this.strstart; +}this.prev_length = this.match_length; +this.prev_match = this.match_start; +this.match_length = 2; +if (hash_head != 0 && this.prev_length < this.max_lazy_match && ((this.strstart - hash_head) & 0xffff) <= this.w_size - 262) { +if (this.strategy != 2) { +this.match_length = this.longest_match(hash_head); +}if (this.match_length <= 5 && (this.strategy == 1 || (this.match_length == 3 && this.strstart - this.match_start > 4096))) { +this.match_length = 2; +}}if (this.prev_length >= 3 && this.match_length <= this.prev_length) { +var max_insert = this.strstart + this.lookahead - 3; +bflush = this._tr_tally(this.strstart - 1 - this.prev_match, this.prev_length - 3); +this.lookahead -= this.prev_length - 1; +this.prev_length -= 2; +do { +if (++this.strstart <= max_insert) { +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[(this.strstart) + (2)] & 0xff)) & this.hash_mask; +hash_head = (this.head[this.ins_h] & 0xffff); +this.prev[this.strstart & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = this.strstart; +}} while (--this.prev_length != 0); +this.match_available = 0; +this.match_length = 2; +this.strstart++; +if (bflush) { +this.flush_block_only(false); +if (this.strm.avail_out == 0) return 0; +}} else if (this.match_available != 0) { +bflush = this._tr_tally(0, this.window[this.strstart - 1] & 0xff); +if (bflush) { +this.flush_block_only(false); +}this.strstart++; +this.lookahead--; +if (this.strm.avail_out == 0) return 0; +} else { +this.match_available = 1; +this.strstart++; +this.lookahead--; +}} +if (this.match_available != 0) { +bflush = this._tr_tally(0, this.window[this.strstart - 1] & 0xff); +this.match_available = 0; +}this.flush_block_only(flush == 4); +if (this.strm.avail_out == 0) { +if (flush == 4) return 2; +return 0; +}return flush == 4 ? 3 : 1; +}, "~N"); +Clazz.defineMethod(c$, "longest_match", +function(cur_match){ +var chain_length = this.max_chain_length; +var scan = this.strstart; +var match; +var len; +var best_len = this.prev_length; +var limit = this.strstart > (this.w_size - 262) ? this.strstart - (this.w_size - 262) : 0; +var nice_match = this.nice_match; +var wmask = this.w_mask; +var strend = this.strstart + 258; +var scan_end1 = this.window[scan + best_len - 1]; +var scan_end = this.window[scan + best_len]; +if (this.prev_length >= this.good_match) { +chain_length >>= 2; +}if (nice_match > this.lookahead) nice_match = this.lookahead; +do { +match = cur_match; +if (this.window[match + best_len] != scan_end || this.window[match + best_len - 1] != scan_end1 || this.window[match] != this.window[scan] || this.window[++match] != this.window[scan + 1]) continue; +scan += 2; +match++; +do { +} while (this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && scan < strend); +len = 258 - (strend - scan); +scan = strend - 258; +if (len > best_len) { +this.match_start = cur_match; +best_len = len; +if (len >= nice_match) break; +scan_end1 = this.window[scan + best_len - 1]; +scan_end = this.window[scan + best_len]; +}} while ((cur_match = (this.prev[cur_match & wmask] & 0xffff)) > limit && --chain_length != 0); +if (best_len <= this.lookahead) return best_len; +return this.lookahead; +}, "~N"); +Clazz.defineMethod(c$, "deflateInit5", +function(level, method, windowBits, memLevel, strategy){ +var wrap = 1; +this.strm.msg = null; +if (level == -1) level = 6; +if (windowBits < 0) { +wrap = 0; +windowBits = -windowBits; +} else if (windowBits > 15) { +wrap = 2; +windowBits -= 16; +this.strm.checksum = new com.jcraft.jzlib.CRC32(); +}if (memLevel < 1 || memLevel > 9 || method != 8 || windowBits < 9 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > 2) { +return -2; +}this.strm.dstate = this; +this.wrap = wrap; +this.w_bits = windowBits; +this.w_size = 1 << this.w_bits; +this.w_mask = this.w_size - 1; +this.hash_bits = memLevel + 7; +this.hash_size = 1 << this.hash_bits; +this.hash_mask = this.hash_size - 1; +this.hash_shift = (Clazz.doubleToInt((this.hash_bits + 3 - 1) / 3)); +this.window = Clazz.newByteArray (this.w_size * 2, 0); +this.prev = Clazz.newShortArray (this.w_size, 0); +this.head = Clazz.newShortArray (this.hash_size, 0); +this.lit_bufsize = 1 << (memLevel + 6); +this.pending_buf = Clazz.newByteArray (this.lit_bufsize * 4, 0); +this.pending_buf_size = this.lit_bufsize * 4; +this.d_buf = Clazz.doubleToInt(this.lit_bufsize / 2); +this.l_buf = (3) * this.lit_bufsize; +this.level = level; +this.strategy = strategy; +this.method = method; +return this.deflateReset(); +}, "~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "deflateReset", +function(){ +this.strm.total_in = this.strm.total_out = 0; +this.strm.msg = null; +this.strm.data_type = 2; +this.pending = 0; +this.pending_out = 0; +if (this.wrap < 0) { +this.wrap = -this.wrap; +}this.status = (this.wrap == 0) ? 113 : 42; +this.strm.checksum.reset(); +this.last_flush = 0; +this.tr_init(); +this.lm_init(); +return 0; +}); +Clazz.defineMethod(c$, "deflateEnd", +function(){ +if (this.status != 42 && this.status != 113 && this.status != 666) { +return -2; +}this.pending_buf = null; +this.head = null; +this.prev = null; +this.window = null; +return this.status == 113 ? -3 : 0; +}); +Clazz.defineMethod(c$, "deflateParams", +function(_level, _strategy){ +var err = 0; +if (_level == -1) { +_level = 6; +}if (_level < 0 || _level > 9 || _strategy < 0 || _strategy > 2) { +return -2; +}if (com.jcraft.jzlib.Deflate.config_table[this.level].func != com.jcraft.jzlib.Deflate.config_table[_level].func && this.strm.total_in != 0) { +err = this.strm.deflate(1); +}if (this.level != _level) { +this.level = _level; +this.max_lazy_match = com.jcraft.jzlib.Deflate.config_table[this.level].max_lazy; +this.good_match = com.jcraft.jzlib.Deflate.config_table[this.level].good_length; +this.nice_match = com.jcraft.jzlib.Deflate.config_table[this.level].nice_length; +this.max_chain_length = com.jcraft.jzlib.Deflate.config_table[this.level].max_chain; +}this.strategy = _strategy; +return err; +}, "~N,~N"); +Clazz.defineMethod(c$, "deflateSetDictionary", +function(dictionary, dictLength){ +var length = dictLength; +var index = 0; +if (dictionary == null || this.status != 42) return -2; +this.strm.checksum.update(dictionary, 0, dictLength); +if (length < 3) return 0; +if (length > this.w_size - 262) { +length = this.w_size - 262; +index = dictLength - length; +}System.arraycopy(dictionary, index, this.window, 0, length); +this.strstart = length; +this.block_start = length; +this.ins_h = this.window[0] & 0xff; +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[1] & 0xff)) & this.hash_mask; +for (var n = 0; n <= length - 3; n++) { +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[(n) + (2)] & 0xff)) & this.hash_mask; +this.prev[n & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = n; +} +return 0; +}, "~A,~N"); +Clazz.defineMethod(c$, "deflate", +function(flush){ +var old_flush; +if (flush > 4 || flush < 0) { +return -2; +}if (this.strm.next_out == null || (this.strm.next_in == null && this.strm.avail_in != 0) || (this.status == 666 && flush != 4)) { +this.strm.msg = com.jcraft.jzlib.Deflate.z_errmsg[4]; +return -2; +}if (this.strm.avail_out == 0) { +this.strm.msg = com.jcraft.jzlib.Deflate.z_errmsg[7]; +return -5; +}old_flush = this.last_flush; +this.last_flush = flush; +if (this.status == 42) { +if (this.wrap == 2) { +this.getGZIPHeader().put(this); +this.status = 113; +this.strm.checksum.reset(); +} else { +var header = (8 + ((this.w_bits - 8) << 4)) << 8; +var level_flags = ((this.level - 1) & 0xff) >> 1; +if (level_flags > 3) level_flags = 3; +header |= (level_flags << 6); +if (this.strstart != 0) header |= 32; +header += 31 - (header % 31); +this.status = 113; +this.putShortMSB(header); +if (this.strstart != 0) { +var adler = this.strm.checksum.getValue(); +this.putShortMSB((adler >>> 16)); +this.putShortMSB((adler & 0xffff)); +}this.strm.checksum.reset(); +}}if (this.pending != 0) { +this.strm.flush_pending(); +if (this.strm.avail_out == 0) { +this.last_flush = -1; +return 0; +}} else if (this.strm.avail_in == 0 && flush <= old_flush && flush != 4) { +this.strm.msg = com.jcraft.jzlib.Deflate.z_errmsg[7]; +return -5; +}if (this.status == 666 && this.strm.avail_in != 0) { +this.strm.msg = com.jcraft.jzlib.Deflate.z_errmsg[7]; +return -5; +}if (this.strm.avail_in != 0 || this.lookahead != 0 || (flush != 0 && this.status != 666)) { +var bstate = -1; +switch (com.jcraft.jzlib.Deflate.config_table[this.level].func) { +case 0: +bstate = this.deflate_stored(flush); +break; +case 1: +bstate = this.deflate_fast(flush); +break; +case 2: +bstate = this.deflate_slow(flush); +break; +default: +} +if (bstate == 2 || bstate == 3) { +this.status = 666; +}if (bstate == 0 || bstate == 2) { +if (this.strm.avail_out == 0) { +this.last_flush = -1; +}return 0; +}if (bstate == 1) { +if (flush == 1) { +this._tr_align(); +} else { +this._tr_stored_block(0, 0, false); +if (flush == 3) { +for (var i = 0; i < this.hash_size; i++) this.head[i] = 0; + +}}this.strm.flush_pending(); +if (this.strm.avail_out == 0) { +this.last_flush = -1; +return 0; +}}}if (flush != 4) return 0; +if (this.wrap <= 0) return 1; +if (this.wrap == 2) { +var adler = this.strm.checksum.getValue(); +this.put_byteB((adler & 0xff)); +this.put_byteB(((adler >> 8) & 0xff)); +this.put_byteB(((adler >> 16) & 0xff)); +this.put_byteB(((adler >> 24) & 0xff)); +this.put_byteB((this.strm.total_in & 0xff)); +this.put_byteB(((this.strm.total_in >> 8) & 0xff)); +this.put_byteB(((this.strm.total_in >> 16) & 0xff)); +this.put_byteB(((this.strm.total_in >> 24) & 0xff)); +this.getGZIPHeader().setCRC(adler); +} else { +var adler = this.strm.checksum.getValue(); +this.putShortMSB((adler >>> 16)); +this.putShortMSB((adler & 0xffff)); +}this.strm.flush_pending(); +if (this.wrap > 0) this.wrap = -this.wrap; +return this.pending != 0 ? 0 : 1; +}, "~N"); +Clazz.defineMethod(c$, "getGZIPHeader", +function(){ +if (this.gheader == null) { +this.gheader = new com.jcraft.jzlib.GZIPHeader(); +}return this.gheader; +}); +Clazz.defineMethod(c$, "getBytesRead", +function(){ +return this.strm.total_in; +}); +Clazz.defineMethod(c$, "getBytesWritten", +function(){ +return this.strm.total_out; +}); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.good_length = 0; +this.max_lazy = 0; +this.nice_length = 0; +this.max_chain = 0; +this.func = 0; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib.Deflate, "Config", null); +Clazz.makeConstructor(c$, +function(good_length, max_lazy, nice_length, max_chain, func){ +this.good_length = good_length; +this.max_lazy = max_lazy; +this.nice_length = nice_length; +this.max_chain = max_chain; +this.func = func; +}, "~N,~N,~N,~N,~N"); +/*eoif3*/})(); +c$.config_table = null; +{ +com.jcraft.jzlib.Deflate.config_table = new Array(10); +com.jcraft.jzlib.Deflate.config_table[0] = new com.jcraft.jzlib.Deflate.Config(0, 0, 0, 0, 0); +com.jcraft.jzlib.Deflate.config_table[1] = new com.jcraft.jzlib.Deflate.Config(4, 4, 8, 4, 1); +com.jcraft.jzlib.Deflate.config_table[2] = new com.jcraft.jzlib.Deflate.Config(4, 5, 16, 8, 1); +com.jcraft.jzlib.Deflate.config_table[3] = new com.jcraft.jzlib.Deflate.Config(4, 6, 32, 32, 1); +com.jcraft.jzlib.Deflate.config_table[4] = new com.jcraft.jzlib.Deflate.Config(4, 4, 16, 16, 2); +com.jcraft.jzlib.Deflate.config_table[5] = new com.jcraft.jzlib.Deflate.Config(8, 16, 32, 32, 2); +com.jcraft.jzlib.Deflate.config_table[6] = new com.jcraft.jzlib.Deflate.Config(8, 16, 128, 128, 2); +com.jcraft.jzlib.Deflate.config_table[7] = new com.jcraft.jzlib.Deflate.Config(8, 32, 128, 256, 2); +com.jcraft.jzlib.Deflate.config_table[8] = new com.jcraft.jzlib.Deflate.Config(32, 128, 258, 1024, 2); +com.jcraft.jzlib.Deflate.config_table[9] = new com.jcraft.jzlib.Deflate.Config(32, 258, 258, 4096, 2); +}c$.z_errmsg = Clazz.newArray(-1, ["need dictionary", "stream end", "", "file error", "stream error", "data error", "insufficient memory", "buffer error", "incompatible version", ""]); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Deflater.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Deflater.js new file mode 100755 index 000000000000..f4112c490f08 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Deflater.js @@ -0,0 +1,58 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["com.jcraft.jzlib.ZStream"], "com.jcraft.jzlib.Deflater", ["com.jcraft.jzlib.Deflate"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$finished = false; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "Deflater", com.jcraft.jzlib.ZStream); +Clazz.defineMethod(c$, "init", +function(level, bits, nowrap){ +if (bits == 0) bits = 15; +this.$finished = false; +this.setAdler32(); +this.dstate = new com.jcraft.jzlib.Deflate(this); +this.dstate.deflateInit2(level, nowrap ? -bits : bits); +return this; +}, "~N,~N,~B"); +Clazz.overrideMethod(c$, "deflate", +function(flush){ +if (this.dstate == null) { +return -2; +}var ret = this.dstate.deflate(flush); +if (ret == 1) this.$finished = true; +return ret; +}, "~N"); +Clazz.overrideMethod(c$, "end", +function(){ +this.$finished = true; +if (this.dstate == null) return -2; +var ret = this.dstate.deflateEnd(); +this.dstate = null; +this.free(); +return ret; +}); +Clazz.defineMethod(c$, "params", +function(level, strategy){ +if (this.dstate == null) return -2; +return this.dstate.deflateParams(level, strategy); +}, "~N,~N"); +Clazz.defineMethod(c$, "setDictionary", +function(dictionary, dictLength){ +if (this.dstate == null) return -2; +return this.dstate.deflateSetDictionary(dictionary, dictLength); +}, "~A,~N"); +Clazz.overrideMethod(c$, "finished", +function(){ +return this.$finished; +}); +Clazz.defineMethod(c$, "finish", +function(){ +}); +Clazz.defineMethod(c$, "getBytesRead", +function(){ +return this.dstate.getBytesRead(); +}); +Clazz.defineMethod(c$, "getBytesWritten", +function(){ +return this.dstate.getBytesWritten(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/DeflaterOutputStream.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/DeflaterOutputStream.js new file mode 100755 index 000000000000..53213dbd921d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/DeflaterOutputStream.js @@ -0,0 +1,105 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["java.io.FilterOutputStream"], "com.jcraft.jzlib.DeflaterOutputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.deflater = null; +this.buffer = null; +this.closed = false; +this.syncFlush = false; +this.buf1 = null; +this.mydeflater = false; +this.close_out = true; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "DeflaterOutputStream", java.io.FilterOutputStream); +Clazz.prepareFields (c$, function(){ +this.buf1 = Clazz.newByteArray (1, 0); +}); +Clazz.defineMethod(c$, "jzSetDOS", +function(out, deflater, size, close_out){ +this.jzSetFOS(out); +if (size == 0) size = 512; +this.deflater = deflater; +this.buffer = Clazz.newByteArray (size, 0); +this.close_out = close_out; +}, "java.io.OutputStream,com.jcraft.jzlib.Deflater,~N,~B"); +Clazz.overrideMethod(c$, "writeByteAsInt", +function(b){ +this.buf1[0] = (b & 0xff); +this.write(this.buf1, 0, 1); +}, "~N"); +Clazz.defineMethod(c$, "write", +function(b, off, len){ +if (this.deflater.finished()) throw new java.io.IOException("finished"); +if ( new Boolean ( new Boolean (off < 0 | len < 0).valueOf() | off + len > b.length).valueOf()) throw new IndexOutOfBoundsException(); +if (len == 0) return; +var flush = this.syncFlush ? 2 : 0; +this.deflater.setInput(b, off, len, true); +while (this.deflater.avail_in > 0) { +var err = this.deflate(flush); +if (err == 1) break; +} +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "finish", +function(){ +while (!this.deflater.finished()) { +this.deflate(4); +} +}); +Clazz.overrideMethod(c$, "close", +function(){ +if (!this.closed) { +this.finish(); +if (this.mydeflater) { +this.deflater.end(); +}if (this.close_out) this.out.close(); +this.closed = true; +}}); +Clazz.defineMethod(c$, "deflate", +function(flush){ +this.deflater.setOutput(this.buffer, 0, this.buffer.length); +var err = this.deflater.deflate(flush); +switch (err) { +case 0: +case 1: +break; +case -5: +if (this.deflater.avail_in <= 0 && flush != 4) { +break; +}default: +throw new java.io.IOException("failed to deflate"); +} +var len = this.deflater.next_out_index; +if (len > 0) { +this.out.write(this.buffer, 0, len); +}return err; +}, "~N"); +Clazz.overrideMethod(c$, "flush", +function(){ +if (this.syncFlush && !this.deflater.finished()) { +while (true) { +var err = this.deflate(2); +if (this.deflater.next_out_index < this.buffer.length) break; +if (err == 1) break; +} +}this.out.flush(); +}); +Clazz.defineMethod(c$, "getTotalIn", +function(){ +return this.deflater.getTotalIn(); +}); +Clazz.defineMethod(c$, "getTotalOut", +function(){ +return this.deflater.getTotalOut(); +}); +Clazz.defineMethod(c$, "setSyncFlush", +function(syncFlush){ +this.syncFlush = syncFlush; +}, "~B"); +Clazz.defineMethod(c$, "getSyncFlush", +function(){ +return this.syncFlush; +}); +Clazz.defineMethod(c$, "getDeflater", +function(){ +return this.deflater; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPException.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPException.js new file mode 100755 index 000000000000..50ecd338d0dc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPException.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["java.io.IOException"], "com.jcraft.jzlib.GZIPException", null, function(){ +var c$ = Clazz.declareType(com.jcraft.jzlib, "GZIPException", java.io.IOException); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPHeader.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPHeader.js new file mode 100755 index 000000000000..8d0cfce5020f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPHeader.js @@ -0,0 +1,133 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(null, "com.jcraft.jzlib.GZIPHeader", ["com.jcraft.jzlib.ZStream"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.text = false; +this.fhcrc = false; +this.time = 0; +this.xflags = 0; +this.os = 255; +this.extra = null; +this.name = null; +this.comment = null; +this.hcrc = 0; +this.crc = 0; +this.done = false; +this.mtime = 0; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "GZIPHeader", null, Cloneable); +Clazz.defineMethod(c$, "setModifiedTime", +function(mtime){ +this.mtime = mtime; +}, "~N"); +Clazz.defineMethod(c$, "getModifiedTime", +function(){ +return this.mtime; +}); +Clazz.defineMethod(c$, "setOS", +function(os){ +if ((0 <= os && os <= 13) || os == 255) this.os = os; + else throw new IllegalArgumentException("os: " + os); +}, "~N"); +Clazz.defineMethod(c$, "getOS", +function(){ +return this.os; +}); +Clazz.defineMethod(c$, "setName", +function(name){ +this.name = com.jcraft.jzlib.ZStream.getBytes(name); +}, "~S"); +Clazz.defineMethod(c$, "getName", +function(){ +if (this.name == null) return ""; +try { +return String.instantialize(this.name, "ISO-8859-1"); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.UnsupportedEncodingException")){ +throw new InternalError(e.toString()); +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "setComment", +function(comment){ +this.comment = com.jcraft.jzlib.ZStream.getBytes(comment); +}, "~S"); +Clazz.defineMethod(c$, "getComment", +function(){ +if (this.comment == null) return ""; +try { +return String.instantialize(this.comment, "ISO-8859-1"); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.UnsupportedEncodingException")){ +throw new InternalError(e.toString()); +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "setCRC", +function(crc){ +this.crc = crc; +}, "~N"); +Clazz.defineMethod(c$, "getCRC", +function(){ +return this.crc; +}); +Clazz.defineMethod(c$, "put", +function(d){ +var flag = 0; +if (this.text) { +flag |= 1; +}if (this.fhcrc) { +flag |= 2; +}if (this.extra != null) { +flag |= 4; +}if (this.name != null) { +flag |= 8; +}if (this.comment != null) { +flag |= 16; +}var xfl = 0; +if (d.level == 1) { +xfl |= 4; +} else if (d.level == 9) { +xfl |= 2; +}d.put_short(0x8b1f); +d.put_byteB(8); +d.put_byteB(flag); +d.put_byteB(this.mtime); +d.put_byteB((this.mtime >> 8)); +d.put_byteB((this.mtime >> 16)); +d.put_byteB((this.mtime >> 24)); +d.put_byteB(xfl); +d.put_byteB(this.os); +if (this.extra != null) { +d.put_byteB(this.extra.length); +d.put_byteB((this.extra.length >> 8)); +d.put_byte(this.extra, 0, this.extra.length); +}if (this.name != null) { +d.put_byte(this.name, 0, this.name.length); +d.put_byteB(0); +}if (this.comment != null) { +d.put_byte(this.comment, 0, this.comment.length); +d.put_byteB(0); +}}, "com.jcraft.jzlib.Deflate"); +Clazz.defineMethod(c$, "clone", +function(){ +var gheader = Clazz.superCall(this, com.jcraft.jzlib.GZIPHeader, "clone", []); +var tmp; +if (gheader.extra != null) { +tmp = Clazz.newByteArray (gheader.extra.length, 0); +System.arraycopy(gheader.extra, 0, tmp, 0, tmp.length); +gheader.extra = tmp; +}if (gheader.name != null) { +tmp = Clazz.newByteArray (gheader.name.length, 0); +System.arraycopy(gheader.name, 0, tmp, 0, tmp.length); +gheader.name = tmp; +}if (gheader.comment != null) { +tmp = Clazz.newByteArray (gheader.comment.length, 0); +System.arraycopy(gheader.comment, 0, tmp, 0, tmp.length); +gheader.comment = tmp; +}return gheader; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPInputStream.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPInputStream.js new file mode 100755 index 000000000000..8c29e84c8802 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPInputStream.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +(function(){ +var c$ = Clazz.declareType(com.jcraft.jzlib, "GZIPInputStream", null); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPOutputStream.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPOutputStream.js new file mode 100755 index 000000000000..ba27654b7ac2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/GZIPOutputStream.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +(function(){ +var c$ = Clazz.declareType(com.jcraft.jzlib, "GZIPOutputStream", null); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfBlocks.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfBlocks.js new file mode 100755 index 000000000000..e5932ed56c44 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfBlocks.js @@ -0,0 +1,505 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["com.jcraft.jzlib.InfTree"], "com.jcraft.jzlib.InfBlocks", ["com.jcraft.jzlib.InfCodes"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mode = 0; +this.left = 0; +this.table = 0; +this.index = 0; +this.blens = null; +this.bb = null; +this.tb = null; +this.bl = null; +this.bd = null; +this.tl = null; +this.td = null; +this.tli = null; +this.tdi = null; +this.codes = null; +this.last = 0; +this.bitk = 0; +this.bitb = 0; +this.hufts = null; +this.window = null; +this.end = 0; +this.read = 0; +this.write = 0; +this.check = false; +this.inftree = null; +this.z = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "InfBlocks", null); +Clazz.prepareFields (c$, function(){ +this.bb = Clazz.newIntArray (1, 0); +this.tb = Clazz.newIntArray (1, 0); +this.bl = Clazz.newIntArray (1, 0); +this.bd = Clazz.newIntArray (1, 0); +this.tli = Clazz.newIntArray (1, 0); +this.tdi = Clazz.newIntArray (1, 0); +this.inftree = new com.jcraft.jzlib.InfTree(); +}); +Clazz.makeConstructor(c$, +function(z, w){ +this.z = z; +this.codes = new com.jcraft.jzlib.InfCodes(this.z, this); +this.hufts = Clazz.newIntArray (4320, 0); +this.window = Clazz.newByteArray (w, 0); +this.end = w; +this.check = (z.istate.wrap == 0) ? false : true; +this.mode = 0; +{ +this.tl = Clazz.newArray(1, null); +this.td = Clazz.newArray(1, null); +}this.reset(); +}, "com.jcraft.jzlib.ZStream,~N"); +Clazz.defineMethod(c$, "reset", +function(){ +if (this.mode == 6) { +this.codes.free(this.z); +}this.mode = 0; +this.bitk = 0; +this.bitb = 0; +this.read = this.write = 0; +if (this.check) { +this.z.checksum.reset(); +}}); +Clazz.defineMethod(c$, "proc", +function(r){ +var t; +var b; +var k; +var p; +var n; +var q; +var m; +{ +p = this.z.next_in_index; +n = this.z.avail_in; +b = this.bitb; +k = this.bitk; +}{ +q = this.write; +m = (q < this.read ? this.read - q - 1 : this.end - q); +}while (true) { +switch (this.mode) { +case 0: +while (k < (3)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +t = (b & 7); +this.last = t & 1; +switch (t >>> 1) { +case 0: +{ +b >>>= (3); +k -= (3); +}t = k & 7; +{ +b >>>= (t); +k -= (t); +}this.mode = 1; +break; +case 1: +com.jcraft.jzlib.InfTree.inflate_trees_fixed(this.bl, this.bd, this.tl, this.td, this.z); +this.codes.init(this.bl[0], this.bd[0], this.tl[0], 0, this.td[0], 0); +{ +b >>>= (3); +k -= (3); +}this.mode = 6; +break; +case 2: +{ +b >>>= (3); +k -= (3); +}this.mode = 3; +break; +case 3: +{ +b >>>= (3); +k -= (3); +}this.mode = 9; +this.z.msg = "invalid block type"; +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +} +break; +case 1: +while (k < (32)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +if ((((~b) >>> 16) & 0xffff) != (b & 0xffff)) { +this.mode = 9; +this.z.msg = "invalid stored block lengths"; +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}this.left = (b & 0xffff); +b = k = 0; +this.mode = this.left != 0 ? 2 : (this.last != 0 ? 7 : 0); +break; +case 2: +if (n == 0) { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}if (m == 0) { +if (q == this.end && this.read != 0) { +q = 0; +m = (q < this.read ? this.read - q - 1 : this.end - q); +}if (m == 0) { +this.write = q; +r = this.inflate_flush(r); +q = this.write; +m = (q < this.read ? this.read - q - 1 : this.end - q); +if (q == this.end && this.read != 0) { +q = 0; +m = (q < this.read ? this.read - q - 1 : this.end - q); +}if (m == 0) { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}}}r = 0; +t = this.left; +if (t > n) t = n; +if (t > m) t = m; +System.arraycopy(this.z.next_in, p, this.window, q, t); +p += t; +n -= t; +q += t; +m -= t; +if ((this.left -= t) != 0) break; +this.mode = this.last != 0 ? 7 : 0; +break; +case 3: +while (k < (14)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +this.table = t = (b & 0x3fff); +if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29) { +this.mode = 9; +this.z.msg = "too many length or distance symbols"; +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f); +if (this.blens == null || this.blens.length < t) { +this.blens = Clazz.newIntArray (t, 0); +} else { +for (var i = 0; i < t; i++) { +this.blens[i] = 0; +} +}{ +b >>>= (14); +k -= (14); +}this.index = 0; +this.mode = 4; +case 4: +while (this.index < 4 + (this.table >>> 10)) { +while (k < (3)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +this.blens[com.jcraft.jzlib.InfBlocks.border[this.index++]] = b & 7; +{ +b >>>= (3); +k -= (3); +}} +while (this.index < 19) { +this.blens[com.jcraft.jzlib.InfBlocks.border[this.index++]] = 0; +} +this.bb[0] = 7; +t = this.inftree.inflate_trees_bits(this.blens, this.bb, this.tb, this.hufts, this.z); +if (t != 0) { +r = t; +if (r == -3) { +this.blens = null; +this.mode = 9; +}this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}this.index = 0; +this.mode = 5; +case 5: +while (true) { +t = this.table; +if (!(this.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))) { +break; +}var i; +var j; +var c; +t = this.bb[0]; +while (k < (t)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +t = this.hufts[(this.tb[0] + (b & com.jcraft.jzlib.InfBlocks.inflate_mask[t])) * 3 + 1]; +c = this.hufts[(this.tb[0] + (b & com.jcraft.jzlib.InfBlocks.inflate_mask[t])) * 3 + 2]; +if (c < 16) { +b >>>= (t); +k -= (t); +this.blens[this.index++] = c; +} else { +i = c == 18 ? 7 : c - 14; +j = c == 18 ? 11 : 3; +while (k < (t + i)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +b >>>= (t); +k -= (t); +j += (b & com.jcraft.jzlib.InfBlocks.inflate_mask[i]); +b >>>= (i); +k -= (i); +i = this.index; +t = this.table; +if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || (c == 16 && i < 1)) { +this.blens = null; +this.mode = 9; +this.z.msg = "invalid bit length repeat"; +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}c = c == 16 ? this.blens[i - 1] : 0; +do { +this.blens[i++] = c; +} while (--j != 0); +this.index = i; +}} +this.tb[0] = -1; +{ +this.bl[0] = 9; +this.bd[0] = 6; +t = this.table; +t = this.inftree.inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), this.blens, this.bl, this.bd, this.tli, this.tdi, this.hufts, this.z); +if (t != 0) { +if (t == -3) { +this.blens = null; +this.mode = 9; +}r = t; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}this.codes.init(this.bl[0], this.bd[0], this.hufts, this.tli[0], this.hufts, this.tdi[0]); +}this.mode = 6; +case 6: +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +if ((r = this.codes.proc(r)) != 1) { +return this.inflate_flush(r); +}r = 0; +this.codes.free(this.z); +p = this.z.next_in_index; +n = this.z.avail_in; +b = this.bitb; +k = this.bitk; +q = this.write; +m = (q < this.read ? this.read - q - 1 : this.end - q); +if (this.last == 0) { +this.mode = 0; +break; +}this.mode = 7; +case 7: +this.write = q; +r = this.inflate_flush(r); +q = this.write; +m = (q < this.read ? this.read - q - 1 : this.end - q); +if (this.read != this.write) { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}this.mode = 8; +case 8: +r = 1; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +case 9: +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +default: +r = -2; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +} +} +}, "~N"); +Clazz.defineMethod(c$, "free", +function(){ +this.reset(); +this.window = null; +this.hufts = null; +}); +Clazz.defineMethod(c$, "set_dictionary", +function(d, start, n){ +System.arraycopy(d, start, this.window, 0, n); +this.read = this.write = n; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "sync_point", +function(){ +return this.mode == 1 ? 1 : 0; +}); +Clazz.defineMethod(c$, "inflate_flush", +function(r){ +var n; +var p; +var q; +p = this.z.next_out_index; +q = this.read; +n = ((q <= this.write ? this.write : this.end) - q); +if (n > this.z.avail_out) n = this.z.avail_out; +if (n != 0 && r == -5) r = 0; +this.z.avail_out -= n; +this.z.total_out += n; +if (this.check && n > 0) { +this.z.checksum.update(this.window, q, n); +}System.arraycopy(this.window, q, this.z.next_out, p, n); +p += n; +q += n; +if (q == this.end) { +q = 0; +if (this.write == this.end) this.write = 0; +n = this.write - q; +if (n > this.z.avail_out) n = this.z.avail_out; +if (n != 0 && r == -5) r = 0; +this.z.avail_out -= n; +this.z.total_out += n; +if (this.check && n > 0) { +this.z.checksum.update(this.window, q, n); +}System.arraycopy(this.window, q, this.z.next_out, p, n); +p += n; +q += n; +}this.z.next_out_index = p; +this.read = q; +return r; +}, "~N"); +c$.inflate_mask = Clazz.newIntArray(-1, [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]); +c$.border = Clazz.newIntArray(-1, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfCodes.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfCodes.js new file mode 100755 index 000000000000..eb9cd3ebaa95 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfCodes.js @@ -0,0 +1,505 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mode = 0; +this.len = 0; +this.tree = null; +this.tree_index = 0; +this.need = 0; +this.lit = 0; +this.get = 0; +this.dist = 0; +this.lbits = 0; +this.dbits = 0; +this.ltree = null; +this.ltree_index = 0; +this.dtree = null; +this.dtree_index = 0; +this.z = null; +this.s = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "InfCodes", null); +Clazz.makeConstructor(c$, +function(z, s){ +this.z = z; +this.s = s; +}, "com.jcraft.jzlib.ZStream,com.jcraft.jzlib.InfBlocks"); +Clazz.defineMethod(c$, "init", +function(bl, bd, tl, tl_index, td, td_index){ +this.mode = 0; +this.lbits = bl; +this.dbits = bd; +this.ltree = tl; +this.ltree_index = tl_index; +this.dtree = td; +this.dtree_index = td_index; +this.tree = null; +}, "~N,~N,~A,~N,~A,~N"); +Clazz.defineMethod(c$, "proc", +function(r){ +var j; +var tindex; +var e; +var b = 0; +var k = 0; +var p = 0; +var n; +var q; +var m; +var f; +p = this.z.next_in_index; +n = this.z.avail_in; +b = this.s.bitb; +k = this.s.bitk; +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +while (true) { +switch (this.mode) { +case 0: +if (m >= 258 && n >= 10) { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +r = this.inflate_fast(this.lbits, this.dbits, this.ltree, this.ltree_index, this.dtree, this.dtree_index, this.s, this.z); +p = this.z.next_in_index; +n = this.z.avail_in; +b = this.s.bitb; +k = this.s.bitk; +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +if (r != 0) { +this.mode = r == 1 ? 7 : 9; +break; +}}this.need = this.lbits; +this.tree = this.ltree; +this.tree_index = this.ltree_index; +this.mode = 1; +case 1: +j = this.need; +while (k < (j)) { +if (n != 0) r = 0; + else { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +tindex = (this.tree_index + (b & com.jcraft.jzlib.InfCodes.inflate_mask[j])) * 3; +b >>>= (this.tree[tindex + 1]); +k -= (this.tree[tindex + 1]); +e = this.tree[tindex]; +if (e == 0) { +this.lit = this.tree[tindex + 2]; +this.mode = 6; +break; +}if ((e & 16) != 0) { +this.get = e & 15; +this.len = this.tree[tindex + 2]; +this.mode = 2; +break; +}if ((e & 64) == 0) { +this.need = e; +this.tree_index = Clazz.doubleToInt(tindex / 3) + this.tree[tindex + 2]; +break; +}if ((e & 32) != 0) { +this.mode = 7; +break; +}this.mode = 9; +this.z.msg = "invalid literal/length code"; +r = -3; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +case 2: +j = this.get; +while (k < (j)) { +if (n != 0) r = 0; + else { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +this.len += (b & com.jcraft.jzlib.InfCodes.inflate_mask[j]); +b >>= j; +k -= j; +this.need = this.dbits; +this.tree = this.dtree; +this.tree_index = this.dtree_index; +this.mode = 3; +case 3: +j = this.need; +while (k < (j)) { +if (n != 0) r = 0; + else { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +tindex = (this.tree_index + (b & com.jcraft.jzlib.InfCodes.inflate_mask[j])) * 3; +b >>= this.tree[tindex + 1]; +k -= this.tree[tindex + 1]; +e = (this.tree[tindex]); +if ((e & 16) != 0) { +this.get = e & 15; +this.dist = this.tree[tindex + 2]; +this.mode = 4; +break; +}if ((e & 64) == 0) { +this.need = e; +this.tree_index = Clazz.doubleToInt(tindex / 3) + this.tree[tindex + 2]; +break; +}this.mode = 9; +this.z.msg = "invalid distance code"; +r = -3; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +case 4: +j = this.get; +while (k < (j)) { +if (n != 0) r = 0; + else { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +this.dist += (b & com.jcraft.jzlib.InfCodes.inflate_mask[j]); +b >>= j; +k -= j; +this.mode = 5; +case 5: +f = q - this.dist; +while (f < 0) { +f += this.s.end; +} +while (this.len != 0) { +if (m == 0) { +if (q == this.s.end && this.s.read != 0) { +q = 0; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +}if (m == 0) { +this.s.write = q; +r = this.s.inflate_flush(r); +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +if (q == this.s.end && this.s.read != 0) { +q = 0; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +}if (m == 0) { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}}}this.s.window[q++] = this.s.window[f++]; +m--; +if (f == this.s.end) f = 0; +this.len--; +} +this.mode = 0; +break; +case 6: +if (m == 0) { +if (q == this.s.end && this.s.read != 0) { +q = 0; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +}if (m == 0) { +this.s.write = q; +r = this.s.inflate_flush(r); +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +if (q == this.s.end && this.s.read != 0) { +q = 0; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +}if (m == 0) { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}}}r = 0; +this.s.window[q++] = this.lit; +m--; +this.mode = 0; +break; +case 7: +if (k > 7) { +k -= 8; +n++; +p--; +}this.s.write = q; +r = this.s.inflate_flush(r); +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +if (this.s.read != this.s.write) { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}this.mode = 8; +case 8: +r = 1; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +case 9: +r = -3; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +default: +r = -2; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +} +} +}, "~N"); +Clazz.defineMethod(c$, "free", +function(z){ +}, "com.jcraft.jzlib.ZStream"); +Clazz.defineMethod(c$, "inflate_fast", +function(bl, bd, tl, tl_index, td, td_index, s, z){ +var t; +var tp; +var tp_index; +var e; +var b; +var k; +var p; +var n; +var q; +var m; +var ml; +var md; +var c; +var d; +var r; +var tp_index_t_3; +p = z.next_in_index; +n = z.avail_in; +b = s.bitb; +k = s.bitk; +q = s.write; +m = q < s.read ? s.read - q - 1 : s.end - q; +ml = com.jcraft.jzlib.InfCodes.inflate_mask[bl]; +md = com.jcraft.jzlib.InfCodes.inflate_mask[bd]; +do { +while (k < (20)) { +n--; +b |= (z.next_in[p++] & 0xff) << k; +k += 8; +} +t = b & ml; +tp = tl; +tp_index = tl_index; +tp_index_t_3 = (tp_index + t) * 3; +if ((e = tp[tp_index_t_3]) == 0) { +b >>= (tp[tp_index_t_3 + 1]); +k -= (tp[tp_index_t_3 + 1]); +s.window[q++] = tp[tp_index_t_3 + 2]; +m--; +continue; +}do { +b >>= (tp[tp_index_t_3 + 1]); +k -= (tp[tp_index_t_3 + 1]); +if ((e & 16) != 0) { +e &= 15; +c = tp[tp_index_t_3 + 2] + (b & com.jcraft.jzlib.InfCodes.inflate_mask[e]); +b >>= e; +k -= e; +while (k < (15)) { +n--; +b |= (z.next_in[p++] & 0xff) << k; +k += 8; +} +t = b & md; +tp = td; +tp_index = td_index; +tp_index_t_3 = (tp_index + t) * 3; +e = tp[tp_index_t_3]; +do { +b >>= (tp[tp_index_t_3 + 1]); +k -= (tp[tp_index_t_3 + 1]); +if ((e & 16) != 0) { +e &= 15; +while (k < (e)) { +n--; +b |= (z.next_in[p++] & 0xff) << k; +k += 8; +} +d = tp[tp_index_t_3 + 2] + (b & com.jcraft.jzlib.InfCodes.inflate_mask[e]); +b >>= (e); +k -= (e); +m -= c; +if (q >= d) { +r = q - d; +if (q - r > 0 && 2 > (q - r)) { +s.window[q++] = s.window[r++]; +s.window[q++] = s.window[r++]; +c -= 2; +} else { +System.arraycopy(s.window, r, s.window, q, 2); +q += 2; +r += 2; +c -= 2; +}} else { +r = q - d; +do { +r += s.end; +} while (r < 0); +e = s.end - r; +if (c > e) { +c -= e; +if (q - r > 0 && e > (q - r)) { +do { +s.window[q++] = s.window[r++]; +} while (--e != 0); +} else { +System.arraycopy(s.window, r, s.window, q, e); +q += e; +r += e; +e = 0; +}r = 0; +}}if (q - r > 0 && c > (q - r)) { +do { +s.window[q++] = s.window[r++]; +} while (--c != 0); +} else { +System.arraycopy(s.window, r, s.window, q, c); +q += c; +r += c; +c = 0; +}break; +} else if ((e & 64) == 0) { +t += tp[tp_index_t_3 + 2]; +t += (b & com.jcraft.jzlib.InfCodes.inflate_mask[e]); +tp_index_t_3 = (tp_index + t) * 3; +e = tp[tp_index_t_3]; +} else { +z.msg = "invalid distance code"; +c = z.avail_in - n; +c = (k >> 3) < c ? k >> 3 : c; +n += c; +p -= c; +k -= c << 3; +s.bitb = b; +s.bitk = k; +z.avail_in = n; +z.total_in += p - z.next_in_index; +z.next_in_index = p; +s.write = q; +return -3; +}} while (true); +break; +}if ((e & 64) == 0) { +t += tp[tp_index_t_3 + 2]; +t += (b & com.jcraft.jzlib.InfCodes.inflate_mask[e]); +tp_index_t_3 = (tp_index + t) * 3; +if ((e = tp[tp_index_t_3]) == 0) { +b >>= (tp[tp_index_t_3 + 1]); +k -= (tp[tp_index_t_3 + 1]); +s.window[q++] = tp[tp_index_t_3 + 2]; +m--; +break; +}} else if ((e & 32) != 0) { +c = z.avail_in - n; +c = (k >> 3) < c ? k >> 3 : c; +n += c; +p -= c; +k -= c << 3; +s.bitb = b; +s.bitk = k; +z.avail_in = n; +z.total_in += p - z.next_in_index; +z.next_in_index = p; +s.write = q; +return 1; +} else { +z.msg = "invalid literal/length code"; +c = z.avail_in - n; +c = (k >> 3) < c ? k >> 3 : c; +n += c; +p -= c; +k -= c << 3; +s.bitb = b; +s.bitk = k; +z.avail_in = n; +z.total_in += p - z.next_in_index; +z.next_in_index = p; +s.write = q; +return -3; +}} while (true); +} while (m >= 258 && n >= 10); +c = z.avail_in - n; +c = (k >> 3) < c ? k >> 3 : c; +n += c; +p -= c; +k -= c << 3; +s.bitb = b; +s.bitk = k; +z.avail_in = n; +z.total_in += p - z.next_in_index; +z.next_in_index = p; +s.write = q; +return 0; +}, "~N,~N,~A,~N,~A,~N,com.jcraft.jzlib.InfBlocks,com.jcraft.jzlib.ZStream"); +c$.inflate_mask = Clazz.newIntArray(-1, [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfTree.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfTree.js new file mode 100755 index 000000000000..ac4e2b534116 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InfTree.js @@ -0,0 +1,218 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.hn = null; +this.v = null; +this.c = null; +this.r = null; +this.u = null; +this.x = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "InfTree", null); +Clazz.defineMethod(c$, "huft_build", +function(b, bindex, n, s, d, e, t, m, hp, hn, v){ +var a; +var f; +var g; +var h; +var i; +var j; +var k; +var l; +var mask; +var p; +var q; +var w; +var xp; +var y; +var z; +p = 0; +i = n; +do { +this.c[b[bindex + p]]++; +p++; +i--; +} while (i != 0); +if (this.c[0] == n) { +t[0] = -1; +m[0] = 0; +return 0; +}l = m[0]; +for (j = 1; j <= 15; j++) if (this.c[j] != 0) break; + +k = j; +if (l < j) { +l = j; +}for (i = 15; i != 0; i--) { +if (this.c[i] != 0) break; +} +g = i; +if (l > i) { +l = i; +}m[0] = l; +for (y = 1 << j; j < i; j++, y <<= 1) { +if ((y -= this.c[j]) < 0) { +return -3; +}} +if ((y -= this.c[i]) < 0) { +return -3; +}this.c[i] += y; +this.x[1] = j = 0; +p = 1; +xp = 2; +while (--i != 0) { +this.x[xp] = (j += this.c[p]); +xp++; +p++; +} +i = 0; +p = 0; +do { +if ((j = b[bindex + p]) != 0) { +v[this.x[j]++] = i; +}p++; +} while (++i < n); +n = this.x[g]; +this.x[0] = i = 0; +p = 0; +h = -1; +w = -l; +this.u[0] = 0; +q = 0; +z = 0; +for (; k <= g; k++) { +a = this.c[k]; +while (a-- != 0) { +while (k > w + l) { +h++; +w += l; +z = g - w; +z = (z > l) ? l : z; +if ((f = 1 << (j = k - w)) > a + 1) { +f -= a + 1; +xp = k; +if (j < z) { +while (++j < z) { +if ((f <<= 1) <= this.c[++xp]) break; +f -= this.c[xp]; +} +}}z = 1 << j; +if (hn[0] + z > 1440) { +return -3; +}this.u[h] = q = hn[0]; +hn[0] += z; +if (h != 0) { +this.x[h] = i; +this.r[0] = j; +this.r[1] = l; +j = i >>> (w - l); +this.r[2] = (q - this.u[h - 1] - j); +System.arraycopy(this.r, 0, hp, (this.u[h - 1] + j) * 3, 3); +} else { +t[0] = q; +}} +this.r[1] = (k - w); +if (p >= n) { +this.r[0] = 192; +} else if (v[p] < s) { +this.r[0] = (v[p] < 256 ? 0 : 96); +this.r[2] = v[p++]; +} else { +this.r[0] = (e[v[p] - s] + 16 + 64); +this.r[2] = d[v[p++] - s]; +}f = 1 << (k - w); +for (j = i >>> w; j < z; j += f) { +System.arraycopy(this.r, 0, hp, (q + j) * 3, 3); +} +for (j = 1 << (k - 1); (i & j) != 0; j >>>= 1) { +i ^= j; +} +i ^= j; +mask = (1 << w) - 1; +while ((i & mask) != this.x[h]) { +h--; +w -= l; +mask = (1 << w) - 1; +} +} +} +return y != 0 && g != 1 ? -5 : 0; +}, "~A,~N,~N,~N,~A,~A,~A,~A,~A,~A,~A"); +Clazz.defineMethod(c$, "inflate_trees_bits", +function(c, bb, tb, hp, z){ +var result; +this.initWorkArea(19); +this.hn[0] = 0; +result = this.huft_build(c, 0, 19, 19, null, null, tb, bb, hp, this.hn, this.v); +if (result == -3) { +z.msg = "oversubscribed dynamic bit lengths tree"; +} else if (result == -5 || bb[0] == 0) { +z.msg = "incomplete dynamic bit lengths tree"; +result = -3; +}return result; +}, "~A,~A,~A,~A,com.jcraft.jzlib.ZStream"); +Clazz.defineMethod(c$, "inflate_trees_dynamic", +function(nl, nd, c, bl, bd, tl, td, hp, z){ +var result; +this.initWorkArea(288); +this.hn[0] = 0; +result = this.huft_build(c, 0, nl, 257, com.jcraft.jzlib.InfTree.cplens, com.jcraft.jzlib.InfTree.cplext, tl, bl, hp, this.hn, this.v); +if (result != 0 || bl[0] == 0) { +if (result == -3) { +z.msg = "oversubscribed literal/length tree"; +} else if (result != -4) { +z.msg = "incomplete literal/length tree"; +result = -3; +}return result; +}this.initWorkArea(288); +result = this.huft_build(c, nl, nd, 0, com.jcraft.jzlib.InfTree.cpdist, com.jcraft.jzlib.InfTree.cpdext, td, bd, hp, this.hn, this.v); +if (result != 0 || (bd[0] == 0 && nl > 257)) { +if (result == -3) { +z.msg = "oversubscribed distance tree"; +} else if (result == -5) { +z.msg = "incomplete distance tree"; +result = -3; +} else if (result != -4) { +z.msg = "empty distance tree with lengths"; +result = -3; +}return result; +}return 0; +}, "~N,~N,~A,~A,~A,~A,~A,~A,com.jcraft.jzlib.ZStream"); +c$.inflate_trees_fixed = Clazz.defineMethod(c$, "inflate_trees_fixed", +function(bl, bd, tl, td, z){ +bl[0] = 9; +bd[0] = 5; +tl[0] = com.jcraft.jzlib.InfTree.fixed_tl; +td[0] = com.jcraft.jzlib.InfTree.fixed_td; +return 0; +}, "~A,~A,~A,~A,com.jcraft.jzlib.ZStream"); +Clazz.defineMethod(c$, "initWorkArea", +function(vsize){ +if (this.hn == null) { +this.hn = Clazz.newIntArray (1, 0); +this.v = Clazz.newIntArray (vsize, 0); +this.c = Clazz.newIntArray (16, 0); +this.r = Clazz.newIntArray (3, 0); +this.u = Clazz.newIntArray (15, 0); +this.x = Clazz.newIntArray (16, 0); +}if (this.v.length < vsize) { +this.v = Clazz.newIntArray (vsize, 0); +}for (var i = 0; i < vsize; i++) { +this.v[i] = 0; +} +for (var i = 0; i < 16; i++) { +this.c[i] = 0; +} +for (var i = 0; i < 3; i++) { +this.r[i] = 0; +} +System.arraycopy(this.c, 0, this.u, 0, 15); +System.arraycopy(this.c, 0, this.x, 0, 16); +}, "~N"); +c$.fixed_tl = Clazz.newIntArray(-1, [96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 160, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 218, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 217, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 163, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255]); +c$.fixed_td = Clazz.newIntArray(-1, [80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025, 85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193, 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5, 385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5, 24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90, 5, 3073, 86, 5, 193, 192, 5, 24577]); +c$.cplens = Clazz.newIntArray(-1, [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]); +c$.cplext = Clazz.newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112]); +c$.cpdist = Clazz.newIntArray(-1, [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577]); +c$.cpdext = Clazz.newIntArray(-1, [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Inflate.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Inflate.js new file mode 100755 index 000000000000..488a3531fddc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Inflate.js @@ -0,0 +1,556 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["java.lang.Exception"], "com.jcraft.jzlib.Inflate", ["com.jcraft.jzlib.Adler32", "$.CRC32", "$.GZIPHeader", "$.InfBlocks", "java.io.ByteArrayOutputStream"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mode = 0; +this.method = 0; +this.was = -1; +this.need = 0; +this.marker = 0; +this.wrap = 0; +this.wbits = 0; +this.blocks = null; +this.z = null; +this.flags = 0; +this.need_bytes = -1; +this.crcbuf = null; +this.gheader = null; +if (!Clazz.isClassDefined("com.jcraft.jzlib.Inflate.Return")) { +com.jcraft.jzlib.Inflate.$Inflate$Return$ (); +} +this.tmp_string = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "Inflate", null); +Clazz.prepareFields (c$, function(){ +this.crcbuf = Clazz.newByteArray (4, 0); +}); +Clazz.makeConstructor(c$, +function(z){ +this.z = z; +}, "com.jcraft.jzlib.ZStream"); +Clazz.defineMethod(c$, "reset", +function(){ +this.inflateReset(); +}); +Clazz.defineMethod(c$, "inflateReset", +function(){ +if (this.z == null) return -2; +this.z.total_in = this.z.total_out = 0; +this.z.msg = null; +this.mode = 14; +this.need_bytes = -1; +this.blocks.reset(); +return 0; +}); +Clazz.defineMethod(c$, "inflateEnd", +function(){ +if (this.blocks != null) { +this.blocks.free(); +}return 0; +}); +Clazz.defineMethod(c$, "inflateInit", +function(w){ +this.z.msg = null; +this.blocks = null; +this.wrap = 0; +if (w < 0) { +w = -w; +} else { +this.wrap = (w >> 4) + 1; +if (w < 48) w &= 15; +}if (w < 8 || w > 15) { +this.inflateEnd(); +return -2; +}if (this.blocks != null && this.wbits != w) { +this.blocks.free(); +this.blocks = null; +}this.wbits = w; +this.blocks = new com.jcraft.jzlib.InfBlocks(this.z, 1 << w); +this.inflateReset(); +return 0; +}, "~N"); +Clazz.defineMethod(c$, "inflate", +function(f){ +var r; +var b; +if (this.z == null || this.z.next_in == null) { +if (f == 4 && this.mode == 14) return 0; +return -2; +}f = f == 4 ? -5 : 0; +r = -5; +while (true) { +switch (this.mode) { +case 14: +if (this.wrap == 0) { +this.mode = 7; +break; +}try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if ((this.wrap & 2) != 0 && this.need == 0x8b1f) { +this.z.checksum = new com.jcraft.jzlib.CRC32(); +this.checksum(2, this.need); +if (this.gheader == null) this.gheader = new com.jcraft.jzlib.GZIPHeader(); +this.mode = 23; +break; +}this.flags = 0; +this.method = (this.need) & 0xff; +b = ((this.need >> 8)) & 0xff; +if ((this.wrap & 1) == 0 || (((this.method << 8) + b) % 31) != 0) { +this.mode = 13; +this.z.msg = "incorrect header check"; +break; +}if ((this.method & 0xf) != 8) { +this.mode = 13; +this.z.msg = "unknown compression method"; +break; +}if ((this.method >> 4) + 8 > this.wbits) { +this.mode = 13; +this.z.msg = "invalid window size"; +break; +}this.z.checksum = new com.jcraft.jzlib.Adler32(); +if ((b & 32) == 0) { +this.mode = 7; +break; +}this.mode = 2; +case 2: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need = ((this.z.next_in[this.z.next_in_index++] & 0xff) << 24) & 0xff000000; +this.mode = 3; +case 3: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 16) & 0xff0000; +this.mode = 4; +case 4: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 8) & 0xff00; +this.mode = 5; +case 5: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += (this.z.next_in[this.z.next_in_index++] & 0xff); +this.z.checksum.resetLong(this.need); +this.mode = 6; +return 2; +case 6: +this.mode = 13; +this.z.msg = "need dictionary"; +this.marker = 0; +return -2; +case 7: +r = this.blocks.proc(r); +if (r == -3) { +this.mode = 13; +this.marker = 0; +break; +}if (r == 0) { +r = f; +}if (r != 1) { +return r; +}r = f; +this.was = this.z.checksum.getValue(); +this.blocks.reset(); +if (this.wrap == 0) { +this.mode = 12; +break; +}this.mode = 8; +case 8: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need = ((this.z.next_in[this.z.next_in_index++] & 0xff) << 24) & 0xff000000; +this.mode = 9; +case 9: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 16) & 0xff0000; +this.mode = 10; +case 10: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 8) & 0xff00; +this.mode = 11; +case 11: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += (this.z.next_in[this.z.next_in_index++] & 0xff); +if (this.flags != 0) { +this.need = ((this.need & 0xff000000) >> 24 | (this.need & 0x00ff0000) >> 8 | (this.need & 0x0000ff00) << 8 | (this.need & 0x0000ffff) << 24) & 0xffffffff; +}if (((this.was)) != ((this.need))) { +this.z.msg = "incorrect data check"; +} else if (this.flags != 0 && this.gheader != null) { +this.gheader.crc = this.need; +}this.mode = 15; +case 15: +if (this.wrap != 0 && this.flags != 0) { +try { +r = this.readBytes(4, r, f); +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.z.msg != null && this.z.msg.equals("incorrect data check")) { +this.mode = 13; +this.marker = 5; +break; +}if (this.need != (this.z.total_out & 0xffffffff)) { +this.z.msg = "incorrect length check"; +this.mode = 13; +break; +}this.z.msg = null; +} else { +if (this.z.msg != null && this.z.msg.equals("incorrect data check")) { +this.mode = 13; +this.marker = 5; +break; +}}this.mode = 12; +case 12: +return 1; +case 13: +return -3; +case 23: +try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +this.flags = (this.need) & 0xffff; +if ((this.flags & 0xff) != 8) { +this.z.msg = "unknown compression method"; +this.mode = 13; +break; +}if ((this.flags & 0xe000) != 0) { +this.z.msg = "unknown header flags set"; +this.mode = 13; +break; +}if ((this.flags & 0x0200) != 0) { +this.checksum(2, this.need); +}this.mode = 16; +case 16: +try { +r = this.readBytes(4, r, f); +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.gheader != null) this.gheader.time = this.need; +if ((this.flags & 0x0200) != 0) { +this.checksum(4, this.need); +}this.mode = 17; +case 17: +try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.gheader != null) { +this.gheader.xflags = (this.need) & 0xff; +this.gheader.os = ((this.need) >> 8) & 0xff; +}if ((this.flags & 0x0200) != 0) { +this.checksum(2, this.need); +}this.mode = 18; +case 18: +if ((this.flags & 0x0400) != 0) { +try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.gheader != null) { +this.gheader.extra = Clazz.newByteArray ((this.need) & 0xffff, 0); +}if ((this.flags & 0x0200) != 0) { +this.checksum(2, this.need); +}} else if (this.gheader != null) { +this.gheader.extra = null; +}this.mode = 19; +case 19: +if ((this.flags & 0x0400) != 0) { +try { +r = this.readBytes(r, f); +if (this.gheader != null) { +var foo = this.tmp_string.toByteArray(); +this.tmp_string = null; +if (foo.length == this.gheader.extra.length) { +System.arraycopy(foo, 0, this.gheader.extra, 0, foo.length); +} else { +this.z.msg = "bad extra field length"; +this.mode = 13; +break; +}}} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +} else if (this.gheader != null) { +this.gheader.extra = null; +}this.mode = 20; +case 20: +if ((this.flags & 0x0800) != 0) { +try { +r = this.readString(r, f); +if (this.gheader != null) { +this.gheader.name = this.tmp_string.toByteArray(); +}this.tmp_string = null; +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +} else if (this.gheader != null) { +this.gheader.name = null; +}this.mode = 21; +case 21: +if ((this.flags & 0x1000) != 0) { +try { +r = this.readString(r, f); +if (this.gheader != null) { +this.gheader.comment = this.tmp_string.toByteArray(); +}this.tmp_string = null; +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +} else if (this.gheader != null) { +this.gheader.comment = null; +}this.mode = 22; +case 22: +if ((this.flags & 0x0200) != 0) { +try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz.exceptionOf(e,"com.jcraft.jzlib.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.gheader != null) { +this.gheader.hcrc = (this.need & 0xffff); +}if (this.need != (this.z.checksum.getValue() & 0xffff)) { +this.mode = 13; +this.z.msg = "header crc mismatch"; +this.marker = 5; +break; +}}this.z.checksum = new com.jcraft.jzlib.CRC32(); +this.mode = 7; +break; +default: +return -2; +} +} +}, "~N"); +Clazz.defineMethod(c$, "inflateSetDictionary", +function(dictionary, dictLength){ +if (this.z == null || (this.mode != 6 && this.wrap != 0)) { +return -2; +}var index = 0; +var length = dictLength; +if (this.mode == 6) { +var adler_need = this.z.checksum.getValue(); +this.z.checksum.reset(); +this.z.checksum.update(dictionary, 0, dictLength); +if (this.z.checksum.getValue() != adler_need) { +return -3; +}}this.z.checksum.reset(); +if (length >= (1 << this.wbits)) { +length = (1 << this.wbits) - 1; +index = dictLength - length; +}this.blocks.set_dictionary(dictionary, index, length); +this.mode = 7; +return 0; +}, "~A,~N"); +Clazz.defineMethod(c$, "inflateSync", +function(){ +var n; +var p; +var m; +var r; +var w; +if (this.z == null) return -2; +if (this.mode != 13) { +this.mode = 13; +this.marker = 0; +}if ((n = this.z.avail_in) == 0) return -5; +p = this.z.next_in_index; +m = this.marker; +while (n != 0 && m < 4) { +if (this.z.next_in[p] == com.jcraft.jzlib.Inflate.mark[m]) { +m++; +} else if (this.z.next_in[p] != 0) { +m = 0; +} else { +m = 4 - m; +}p++; +n--; +} +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.z.avail_in = n; +this.marker = m; +if (m != 4) { +return -3; +}r = this.z.total_in; +w = this.z.total_out; +this.inflateReset(); +this.z.total_in = r; +this.z.total_out = w; +this.mode = 7; +return 0; +}); +Clazz.defineMethod(c$, "inflateSyncPoint", +function(){ +if (this.z == null || this.blocks == null) return -2; +return this.blocks.sync_point(); +}); +Clazz.defineMethod(c$, "readBytes", +function(n, r, f){ +if (this.need_bytes == -1) { +this.need_bytes = n; +this.need = 0; +}while (this.need_bytes > 0) { +if (this.z.avail_in == 0) { +throw Clazz.innerTypeInstance(com.jcraft.jzlib.Inflate.Return, this, null, r); +}r = f; +this.z.avail_in--; +this.z.total_in++; +this.need = this.need | ((this.z.next_in[this.z.next_in_index++] & 0xff) << ((n - this.need_bytes) * 8)); +this.need_bytes--; +} +if (n == 2) { +this.need &= 0xffff; +} else if (n == 4) { +this.need &= 0xffffffff; +}this.need_bytes = -1; +return r; +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "readString", +function(r, f){ +if (this.tmp_string == null) { +this.tmp_string = new java.io.ByteArrayOutputStream(); +}var b = 0; +do { +if (this.z.avail_in == 0) { +throw Clazz.innerTypeInstance(com.jcraft.jzlib.Inflate.Return, this, null, r); +}r = f; +this.z.avail_in--; +this.z.total_in++; +b = this.z.next_in[this.z.next_in_index]; +if (b != 0) this.tmp_string.write(this.z.next_in, this.z.next_in_index, 1); +this.z.checksum.update(this.z.next_in, this.z.next_in_index, 1); +this.z.next_in_index++; +} while (b != 0); +return r; +}, "~N,~N"); +Clazz.defineMethod(c$, "readBytes", +function(r, f){ +if (this.tmp_string == null) { +this.tmp_string = new java.io.ByteArrayOutputStream(); +}while (this.need > 0) { +if (this.z.avail_in == 0) { +throw Clazz.innerTypeInstance(com.jcraft.jzlib.Inflate.Return, this, null, r); +}r = f; +this.z.avail_in--; +this.z.total_in++; +this.tmp_string.write(this.z.next_in, this.z.next_in_index, 1); +this.z.checksum.update(this.z.next_in, this.z.next_in_index, 1); +this.z.next_in_index++; +this.need--; +} +return r; +}, "~N,~N"); +Clazz.defineMethod(c$, "checksum", +function(n, v){ +for (var i = 0; i < n; i++) { +this.crcbuf[i] = (v & 0xff); +v >>= 8; +} +this.z.checksum.update(this.crcbuf, 0, n); +}, "~N,~N"); +Clazz.defineMethod(c$, "getGZIPHeader", +function(){ +return this.gheader; +}); +Clazz.defineMethod(c$, "inParsingHeader", +function(){ +switch (this.mode) { +case 14: +case 2: +case 3: +case 4: +case 5: +case 23: +case 16: +case 17: +case 18: +case 19: +case 20: +case 21: +case 22: +return true; +default: +return false; +} +}); +c$.$Inflate$Return$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.r = 0; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib.Inflate, "Return", Exception); +Clazz.makeConstructor(c$, +function(r){ +Clazz.superConstructor (this, com.jcraft.jzlib.Inflate.Return, []); +this.r = r; +}, "~N"); +/*eoif4*/})(); +}; +c$.mark = Clazz.newByteArray(-1, [0, 0, 0xff, 0xff]); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Inflater.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Inflater.js new file mode 100755 index 000000000000..4d0eee3cdbb6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Inflater.js @@ -0,0 +1,49 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["com.jcraft.jzlib.ZStream"], "com.jcraft.jzlib.Inflater", ["com.jcraft.jzlib.Inflate"], function(){ +var c$ = Clazz.declareType(com.jcraft.jzlib, "Inflater", com.jcraft.jzlib.ZStream); +Clazz.defineMethod(c$, "init", +function(w, nowrap){ +this.setAdler32(); +if (w == 0) w = 15; +this.istate = new com.jcraft.jzlib.Inflate(this); +this.istate.inflateInit(nowrap ? -w : w); +return this; +}, "~N,~B"); +Clazz.overrideMethod(c$, "inflate", +function(f){ +if (this.istate == null) return -2; +var ret = this.istate.inflate(f); +return ret; +}, "~N"); +Clazz.overrideMethod(c$, "end", +function(){ +if (this.istate == null) return -2; +var ret = this.istate.inflateEnd(); +return ret; +}); +Clazz.defineMethod(c$, "sync", +function(){ +if (this.istate == null) return -2; +return this.istate.inflateSync(); +}); +Clazz.defineMethod(c$, "syncPoint", +function(){ +if (this.istate == null) return -2; +return this.istate.inflateSyncPoint(); +}); +Clazz.defineMethod(c$, "setDictionary", +function(dictionary, dictLength){ +if (this.istate == null) return -2; +return this.istate.inflateSetDictionary(dictionary, dictLength); +}, "~A,~N"); +Clazz.overrideMethod(c$, "finished", +function(){ +return this.istate.mode == 12; +}); +Clazz.defineMethod(c$, "reset", +function(){ +this.avail_in = 0; +if (this.istate != null) this.istate.reset(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InflaterInputStream.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InflaterInputStream.js new file mode 100755 index 000000000000..9f3f972df1f8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/InflaterInputStream.js @@ -0,0 +1,164 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["java.io.FilterInputStream"], "com.jcraft.jzlib.InflaterInputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.inflater = null; +this.buf = null; +this.len = 0; +this.closed = false; +this.eof = false; +this.close_in = true; +this.myinflater = false; +this.byte1 = null; +this.b = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "InflaterInputStream", java.io.FilterInputStream); +Clazz.prepareFields (c$, function(){ +this.byte1 = Clazz.newByteArray (1, 0); +this.b = Clazz.newByteArray (512, 0); +}); +Clazz.makeConstructor(c$, +function($in, inflater, size, close_in){ +Clazz.superConstructor(this, com.jcraft.jzlib.InflaterInputStream, [$in]); +this.inflater = inflater; +this.buf = Clazz.newByteArray (size, 0); +this.close_in = close_in; +}, "java.io.InputStream,com.jcraft.jzlib.Inflater,~N,~B"); +Clazz.overrideMethod(c$, "readByteAsInt", +function(){ +if (this.closed) { +throw new java.io.IOException("Stream closed"); +}return this.read(this.byte1, 0, 1) == -1 ? -1 : this.byte1[0] & 0xff; +}); +Clazz.overrideMethod(c$, "read", +function(b, off, len){ +return this.readInf(b, off, len); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "readInf", +function(b, off, len){ +if (this.closed) { +throw new java.io.IOException("Stream closed"); +}if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +} else if (this.eof) { +return -1; +}var n = 0; +this.inflater.setOutput(b, off, len); +while (!this.eof) { +if (this.inflater.avail_in == 0) this.fill(); +var err = this.inflater.inflate(0); +n += this.inflater.next_out_index - off; +off = this.inflater.next_out_index; +switch (err) { +case -3: +throw new java.io.IOException(this.inflater.msg); +case 1: +case 2: +this.eof = true; +if (err == 2) return -1; +break; +default: +} +if (this.inflater.avail_out == 0) break; +} +return n; +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "available", +function(){ +if (this.closed) { +throw new java.io.IOException("Stream closed"); +}return (this.eof ? 0 : 1); +}); +Clazz.overrideMethod(c$, "skip", +function(n){ +if (n < 0) { +throw new IllegalArgumentException("negative skip length"); +}if (this.closed) { +throw new java.io.IOException("Stream closed"); +}var max = Math.min(n, 2147483647); +var total = 0; +while (total < max) { +var len = max - total; +if (len > this.b.length) { +len = this.b.length; +}len = this.read(this.b, 0, len); +if (len == -1) { +this.eof = true; +break; +}total += len; +} +return total; +}, "~N"); +Clazz.overrideMethod(c$, "close", +function(){ +if (!this.closed) { +if (this.myinflater) this.inflater.end(); +if (this.close_in) this.$in.close(); +this.closed = true; +}}); +Clazz.defineMethod(c$, "fill", +function(){ +if (this.closed) { +throw new java.io.IOException("Stream closed"); +}this.len = this.$in.read(this.buf, 0, this.buf.length); +if (this.len == -1) { +if (this.inflater.istate.wrap == 0 && !this.inflater.finished()) { +this.buf[0] = 0; +this.len = 1; +} else if (this.inflater.istate.was != -1) { +throw new java.io.IOException("footer is not found"); +} else { +throw new java.io.EOFException("Unexpected end of ZLIB input stream"); +}}this.inflater.setInput(this.buf, 0, this.len, true); +}); +Clazz.overrideMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz.defineMethod(c$, "getTotalIn", +function(){ +return this.inflater.getTotalIn(); +}); +Clazz.defineMethod(c$, "getTotalOut", +function(){ +return this.inflater.getTotalOut(); +}); +Clazz.defineMethod(c$, "getAvailIn", +function(){ +if (this.inflater.avail_in <= 0) return null; +var tmp = Clazz.newByteArray (this.inflater.avail_in, 0); +System.arraycopy(this.inflater.next_in, this.inflater.next_in_index, tmp, 0, this.inflater.avail_in); +return tmp; +}); +Clazz.defineMethod(c$, "readHeader", +function(){ +var empty = "".getBytes(); +this.inflater.setInput(empty, 0, 0, false); +this.inflater.setOutput(empty, 0, 0); +var err = this.inflater.inflate(0); +if (!this.inflater.istate.inParsingHeader()) { +return; +}var b1 = Clazz.newByteArray (1, 0); +do { +var i = this.$in.read(b1, 0, 1); +if (i <= 0) throw new java.io.IOException("no input"); +this.inflater.setInput(b1, 0, b1.length, false); +err = this.inflater.inflate(0); +if (err != 0) throw new java.io.IOException(this.inflater.msg); +} while (this.inflater.istate.inParsingHeader()); +}); +Clazz.defineMethod(c$, "getInflater", +function(){ +return this.inflater; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/JZlib.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/JZlib.js new file mode 100755 index 000000000000..f42db0aeb424 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/JZlib.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +(function(){ +var c$ = Clazz.declareType(com.jcraft.jzlib, "JZlib", null); +c$.version = Clazz.defineMethod(c$, "version", +function(){ +return "1.1.0"; +}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/StaticTree.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/StaticTree.js new file mode 100755 index 000000000000..bc689640262a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/StaticTree.js @@ -0,0 +1,24 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["com.jcraft.jzlib.Tree"], "com.jcraft.jzlib.StaticTree", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.static_tree = null; +this.extra_bits = null; +this.extra_base = 0; +this.elems = 0; +this.max_length = 0; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "StaticTree", null); +Clazz.makeConstructor(c$, +function(static_tree, extra_bits, extra_base, elems, max_length){ +this.static_tree = static_tree; +this.extra_bits = extra_bits; +this.extra_base = extra_base; +this.elems = elems; +this.max_length = max_length; +}, "~A,~A,~N,~N,~N"); +c$.static_ltree = Clazz.newShortArray(-1, [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8]); +c$.static_dtree = Clazz.newShortArray(-1, [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5]); +c$.static_l_desc = new com.jcraft.jzlib.StaticTree(com.jcraft.jzlib.StaticTree.static_ltree, com.jcraft.jzlib.Tree.extra_lbits, 257, 286, 15); +c$.static_d_desc = new com.jcraft.jzlib.StaticTree(com.jcraft.jzlib.StaticTree.static_dtree, com.jcraft.jzlib.Tree.extra_dbits, 0, 30, 15); +c$.static_bl_desc = new com.jcraft.jzlib.StaticTree(null, com.jcraft.jzlib.Tree.extra_blbits, 0, 19, 7); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Tree.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Tree.js new file mode 100755 index 000000000000..91bc4b924b58 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/Tree.js @@ -0,0 +1,147 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dyn_tree = null; +this.max_code = 0; +this.stat_desc = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "Tree", null); +c$.d_code = Clazz.defineMethod(c$, "d_code", +function(dist){ +return ((dist) < 256 ? com.jcraft.jzlib.Tree._dist_code[dist] : com.jcraft.jzlib.Tree._dist_code[256 + ((dist) >>> 7)]); +}, "~N"); +Clazz.defineMethod(c$, "gen_bitlen", +function(s){ +var tree = this.dyn_tree; +var stree = this.stat_desc.static_tree; +var extra = this.stat_desc.extra_bits; +var base = this.stat_desc.extra_base; +var max_length = this.stat_desc.max_length; +var h; +var n; +var m; +var bits; +var xbits; +var f; +var overflow = 0; +for (bits = 0; bits <= 15; bits++) s.bl_count[bits] = 0; + +tree[s.heap[s.heap_max] * 2 + 1] = 0; +for (h = s.heap_max + 1; h < 573; h++) { +n = s.heap[h]; +bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; +if (bits > max_length) { +bits = max_length; +overflow++; +}tree[n * 2 + 1] = bits; +if (n > this.max_code) continue; +s.bl_count[bits]++; +xbits = 0; +if (n >= base) xbits = extra[n - base]; +f = tree[n * 2]; +s.opt_len += f * (bits + xbits); +if (stree != null) s.static_len += f * (stree[n * 2 + 1] + xbits); +} +if (overflow == 0) return; +do { +bits = max_length - 1; +while (s.bl_count[bits] == 0) bits--; + +s.bl_count[bits]--; +s.bl_count[bits + 1] += 2; +s.bl_count[max_length]--; +overflow -= 2; +} while (overflow > 0); +for (bits = max_length; bits != 0; bits--) { +n = s.bl_count[bits]; +while (n != 0) { +m = s.heap[--h]; +if (m > this.max_code) continue; +if (tree[m * 2 + 1] != bits) { +s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; +tree[m * 2 + 1] = bits; +}n--; +} +} +}, "com.jcraft.jzlib.Deflate"); +Clazz.defineMethod(c$, "build_tree", +function(s){ +var tree = this.dyn_tree; +var stree = this.stat_desc.static_tree; +var elems = this.stat_desc.elems; +var n; +var m; +var max_code = -1; +var node; +s.heap_len = 0; +s.heap_max = 573; +for (n = 0; n < elems; n++) { +if (tree[n * 2] != 0) { +s.heap[++s.heap_len] = max_code = n; +s.depth[n] = 0; +} else { +tree[n * 2 + 1] = 0; +}} +while (s.heap_len < 2) { +node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); +tree[node * 2] = 1; +s.depth[node] = 0; +s.opt_len--; +if (stree != null) s.static_len -= stree[node * 2 + 1]; +} +this.max_code = max_code; +for (n = Clazz.doubleToInt(s.heap_len / 2); n >= 1; n--) s.pqdownheap(tree, n); + +node = elems; +do { +n = s.heap[1]; +s.heap[1] = s.heap[s.heap_len--]; +s.pqdownheap(tree, 1); +m = s.heap[1]; +s.heap[--s.heap_max] = n; +s.heap[--s.heap_max] = m; +tree[node * 2] = (tree[n * 2] + tree[m * 2]); +s.depth[node] = (Math.max(s.depth[n], s.depth[m]) + 1); +tree[n * 2 + 1] = tree[m * 2 + 1] = node; +s.heap[1] = node++; +s.pqdownheap(tree, 1); +} while (s.heap_len >= 2); +s.heap[--s.heap_max] = s.heap[1]; +this.gen_bitlen(s); +com.jcraft.jzlib.Tree.gen_codes(tree, max_code, s.bl_count); +}, "com.jcraft.jzlib.Deflate"); +c$.gen_codes = Clazz.defineMethod(c$, "gen_codes", +function(tree, max_code, bl_count){ +var code = 0; +var bits; +var n; +com.jcraft.jzlib.Tree.next_code[0] = 0; +for (bits = 1; bits <= 15; bits++) { +com.jcraft.jzlib.Tree.next_code[bits] = code = ((code + bl_count[bits - 1]) << 1); +} +for (n = 0; n <= max_code; n++) { +var len = tree[n * 2 + 1]; +if (len == 0) continue; +tree[n * 2] = (com.jcraft.jzlib.Tree.bi_reverse(com.jcraft.jzlib.Tree.next_code[len]++, len)); +} +}, "~A,~N,~A"); +c$.bi_reverse = Clazz.defineMethod(c$, "bi_reverse", +function(code, len){ +var res = 0; +do { +res |= code & 1; +code >>>= 1; +res <<= 1; +} while (--len > 0); +return res >>> 1; +}, "~N,~N"); +c$.extra_lbits = Clazz.newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]); +c$.extra_dbits = Clazz.newIntArray(-1, [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]); +c$.extra_blbits = Clazz.newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]); +c$.bl_order = Clazz.newByteArray(-1, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +c$._dist_code = Clazz.newByteArray(-1, [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29]); +c$._length_code = Clazz.newByteArray(-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28]); +c$.base_length = Clazz.newIntArray(-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0]); +c$.base_dist = Clazz.newIntArray(-1, [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576]); +c$.next_code = Clazz.newShortArray (16, 0); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/ZStream.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/ZStream.js new file mode 100755 index 000000000000..9bb16aba500a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/ZStream.js @@ -0,0 +1,125 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(null, "com.jcraft.jzlib.ZStream", ["com.jcraft.jzlib.Adler32"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.next_in = null; +this.next_in_index = 0; +this.avail_in = 0; +this.total_in = 0; +this.next_out = null; +this.next_out_index = 0; +this.avail_out = 0; +this.total_out = 0; +this.msg = null; +this.dstate = null; +this.istate = null; +this.data_type = 0; +this.checksum = null; +Clazz.instantialize(this, arguments);}, com.jcraft.jzlib, "ZStream", null); +Clazz.defineMethod(c$, "setAdler32", +function(){ +this.checksum = new com.jcraft.jzlib.Adler32(); +}); +Clazz.defineMethod(c$, "inflate", +function(f){ +if (this.istate == null) return -2; +return this.istate.inflate(f); +}, "~N"); +Clazz.defineMethod(c$, "deflate", +function(flush){ +if (this.dstate == null) { +return -2; +}return this.dstate.deflate(flush); +}, "~N"); +Clazz.defineMethod(c$, "flush_pending", +function(){ +var len = this.dstate.pending; +if (len > this.avail_out) len = this.avail_out; +if (len == 0) return; +System.arraycopy(this.dstate.pending_buf, this.dstate.pending_out, this.next_out, this.next_out_index, len); +this.next_out_index += len; +this.dstate.pending_out += len; +this.total_out += len; +this.avail_out -= len; +this.dstate.pending -= len; +if (this.dstate.pending == 0) { +this.dstate.pending_out = 0; +}}); +Clazz.defineMethod(c$, "read_buf", +function(buf, start, size){ +var len = this.avail_in; +if (len > size) len = size; +if (len == 0) return 0; +this.avail_in -= len; +if (this.dstate.wrap != 0) { +this.checksum.update(this.next_in, this.next_in_index, len); +}System.arraycopy(this.next_in, this.next_in_index, buf, start, len); +this.next_in_index += len; +this.total_in += len; +return len; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "getAdler", +function(){ +return this.checksum.getValue(); +}); +Clazz.defineMethod(c$, "free", +function(){ +this.next_in = null; +this.next_out = null; +this.msg = null; +}); +Clazz.defineMethod(c$, "setOutput", +function(buf, off, len){ +this.next_out = buf; +this.next_out_index = off; +this.avail_out = len; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "setInput", +function(buf, off, len, append){ +if (len <= 0 && append && this.next_in != null) return; +if (this.avail_in > 0 && append) { +var tmp = Clazz.newByteArray (this.avail_in + len, 0); +System.arraycopy(this.next_in, this.next_in_index, tmp, 0, this.avail_in); +System.arraycopy(buf, off, tmp, this.avail_in, len); +this.next_in = tmp; +this.next_in_index = 0; +this.avail_in += len; +} else { +this.next_in = buf; +this.next_in_index = off; +this.avail_in = len; +}}, "~A,~N,~N,~B"); +Clazz.defineMethod(c$, "getAvailIn", +function(){ +return this.avail_in; +}); +Clazz.defineMethod(c$, "getTotalOut", +function(){ +return this.total_out; +}); +Clazz.defineMethod(c$, "getTotalIn", +function(){ +return this.total_in; +}); +c$.getBytes = Clazz.defineMethod(c$, "getBytes", +function(s){ +{ +var x = []; +for (var i = 0; i < s.length;i++) { +var pt = s.charCodeAt(i); +if (pt <= 0x7F) { +x.push(pt); +} else if (pt <= 0x7FF) { +x.push(0xC0|((pt>>6)&0x1F)); +x.push(0x80|(pt&0x3F)); +} else if (pt <= 0xFFFF) { +x.push(0xE0|((pt>>12)&0xF)); +x.push(0x80|((pt>>6)&0x3F)); +x.push(0x80|(pt&0x3F)); +} else { +x.push(0x3F); // '?' +} +} +return (Int32Array != Array ? new Int32Array(x) : x); +}}, "~S"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/ZStreamException.js b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/ZStreamException.js new file mode 100755 index 000000000000..03a56f2a2396 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/com/jcraft/jzlib/ZStreamException.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("com.jcraft.jzlib"); +Clazz.load(["java.io.IOException"], "com.jcraft.jzlib.ZStreamException", null, function(){ +var c$ = Clazz.declareType(com.jcraft.jzlib, "ZStreamException", java.io.IOException); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corebinary.js b/config/plugins/visualizations/jmol/static/j2s/core/corebinary.js new file mode 100755 index 000000000000..c5258a6e036e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corebinary.js @@ -0,0 +1,742 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_load(["java.io.FilterInputStream"], "java.io.PushbackInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.pos = 0; +Clazz_instantialize(this, arguments);}, java.io, "PushbackInputStream", java.io.FilterInputStream); +Clazz_makeConstructor(c$, +function($in, size){ +Clazz_superConstructor(this, java.io.PushbackInputStream, [$in]); +if (size <= 0) { +throw new IllegalArgumentException("size <= 0"); +}this.buf = Clazz_newByteArray (size, 0); +this.pos = size; +}, "java.io.InputStream,~N"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.$in == null) throw new java.io.IOException("Stream closed"); +}); +Clazz_overrideMethod(c$, "readByteAsInt", +function(){ +this.ensureOpen(); +if (this.pos < this.buf.length) { +return this.buf[this.pos++] & 0xff; +}return this.$in.readByteAsInt(); +}); +Clazz_defineMethod(c$, "read", +function(b, off, len){ +this.ensureOpen(); +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var avail = this.buf.length - this.pos; +if (avail > 0) { +if (len < avail) { +avail = len; +}System.arraycopy(this.buf, this.pos, b, off, avail); +this.pos += avail; +off += avail; +len -= avail; +}if (len > 0) { +len = this.$in.read(b, off, len); +if (len == -1) { +return avail == 0 ? -1 : avail; +}return avail + len; +}return avail; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "unreadByte", +function(b){ +this.ensureOpen(); +if (this.pos == 0) { +throw new java.io.IOException("Push back buffer is full"); +}this.buf[--this.pos] = b; +}, "~N"); +Clazz_defineMethod(c$, "unread", +function(b, off, len){ +this.ensureOpen(); +if (len > this.pos) { +throw new java.io.IOException("Push back buffer is full"); +}this.pos -= len; +System.arraycopy(b, off, this.buf, this.pos, len); +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "available", +function(){ +this.ensureOpen(); +var n = this.buf.length - this.pos; +var avail = this.$in.available(); +return n > (2147483647 - avail) ? 2147483647 : n + avail; +}); +Clazz_overrideMethod(c$, "skip", +function(n){ +this.ensureOpen(); +if (n <= 0) { +return 0; +}var pskip = this.buf.length - this.pos; +if (pskip > 0) { +if (n < pskip) { +pskip = n; +}this.pos += pskip; +n -= pskip; +}if (n > 0) { +pskip += this.$in.skip(n); +}return pskip; +}, "~N"); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz_overrideMethod(c$, "close", +function(){ +if (this.$in == null) return; +this.$in.close(); +this.$in = null; +this.buf = null; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.DataInput", "$.FilterInputStream"], "java.io.DataInputStream", ["java.io.PushbackInputStream"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bytearr = null; +this.chararr = null; +this.readBuffer = null; +this.lineBuffer = null; +Clazz_instantialize(this, arguments);}, java.io, "DataInputStream", java.io.FilterInputStream, java.io.DataInput); +Clazz_prepareFields (c$, function(){ +this.bytearr = Clazz_newByteArray (80, 0); +this.chararr = String.fromCharCode( Clazz_newCharArray (80, '\0')); +this.readBuffer = Clazz_newByteArray (8, 0); +}); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.$in.read(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readDIS", +function(b, off, len){ +var is = this.$in; +{ +if (is.readBIS) return is.readBIS(b, off, len); +if (is.readBAIS) +return is.readBAIS(b, off, len); +}return is.read(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readFully", +function(b, off, len){ +if (len < 0) throw new IndexOutOfBoundsException(); +var n = 0; +while (n < len) { +var count = this.$in.read(b, off + n, len - n); +if (count < 0) throw new java.io.EOFException(); +n += count; +} +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skipBytes", +function(n){ +var total = 0; +var cur = 0; +while ((total < n) && ((cur = this.$in.skip(n - total)) > 0)) { +total += cur; +} +return total; +}, "~N"); +Clazz_overrideMethod(c$, "readBoolean", +function(){ +var ch = this.$in.readByteAsInt(); +if (ch < 0) throw new java.io.EOFException(); +return (ch != 0); +}); +Clazz_overrideMethod(c$, "readByte", +function(){ +var ch = this.$in.readByteAsInt(); +if (ch < 0) throw new java.io.EOFException(); +return (ch); +}); +Clazz_overrideMethod(c$, "readUnsignedByte", +function(){ +var ch = this.$in.readByteAsInt(); +if (ch < 0) throw new java.io.EOFException(); +return ch; +}); +Clazz_overrideMethod(c$, "readShort", +function(){ +var ch1 = this.$in.readByteAsInt(); +var ch2 = this.$in.readByteAsInt(); +if ((ch1 | ch2) < 0) throw new java.io.EOFException(); +var n = ((ch1 << 8) + (ch2 << 0)); +{ +return (n > 0x7FFF ? n - 0x10000 : n); +}}); +Clazz_defineMethod(c$, "readUnsignedShort", +function(){ +var ch1 = this.$in.readByteAsInt(); +var ch2 = this.$in.readByteAsInt(); +if ((ch1 | ch2) < 0) throw new java.io.EOFException(); +return (ch1 << 8) + (ch2 << 0); +}); +Clazz_overrideMethod(c$, "readChar", +function(){ +var ch1 = this.$in.readByteAsInt(); +var ch2 = this.$in.readByteAsInt(); +if ((ch1 | ch2) < 0) throw new java.io.EOFException(); +return String.fromCharCode((ch1 << 8) + (ch2 << 0)); +}); +Clazz_overrideMethod(c$, "readInt", +function(){ +var ch1 = this.$in.readByteAsInt(); +var ch2 = this.$in.readByteAsInt(); +var ch3 = this.$in.readByteAsInt(); +var ch4 = this.$in.readByteAsInt(); +if ((ch1 | ch2 | ch3 | ch4) < 0) throw new java.io.EOFException(); +var n = ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0)); +{ +return (n > 0x7FFFFFFF ? n - 0x100000000 : n); +}}); +Clazz_overrideMethod(c$, "readLong", +function(){ +this.readFully(this.readBuffer, 0, 8); +return ((this.readBuffer[0] << 56) + ((this.readBuffer[1] & 255) << 48) + ((this.readBuffer[2] & 255) << 40) + ((this.readBuffer[3] & 255) << 32) + ((this.readBuffer[4] & 255) << 24) + ((this.readBuffer[5] & 255) << 16) + ((this.readBuffer[6] & 255) << 8) + ((this.readBuffer[7] & 255) << 0)); +}); +Clazz_overrideMethod(c$, "readFloat", +function(){ +return Float.intBitsToFloat(this.readInt()); +}); +Clazz_overrideMethod(c$, "readDouble", +function(){ +return Double.longBitsToDouble(this.readLong()); +}); +Clazz_overrideMethod(c$, "readLine", +function(){ +var buf = this.lineBuffer; +if (buf == null) { +buf = this.lineBuffer = Clazz_newCharArray (128, '\0'); +}var room = buf.length; +var offset = 0; +var c; +loop : while (true) { +switch (c = this.$in.readByteAsInt()) { +case -1: +case 10: +break loop; +case 13: +var c2 = this.$in.readByteAsInt(); +if ((c2 != 10) && (c2 != -1)) { +if (!(Clazz_instanceOf(this.$in,"java.io.PushbackInputStream"))) { +this.$in = new java.io.PushbackInputStream(this.$in, 1); +}(this.$in).unreadByte(c2); +}break loop; +default: +if (--room < 0) { +buf = Clazz_newCharArray (offset + 128, '\0'); +room = buf.length - offset - 1; +System.arraycopy(this.lineBuffer, 0, buf, 0, offset); +this.lineBuffer = buf; +}buf[offset++] = String.fromCharCode(c); +break; +} +} +if ((c == -1) && (offset == 0)) { +return null; +}return String.copyValueOf(buf, 0, offset); +}); +Clazz_overrideMethod(c$, "readUTF", +function(){ +return java.io.DataInputStream.readUTFBytes(this, -1); +}); +c$.readUTFBytes = Clazz_defineMethod(c$, "readUTFBytes", +function($in, utflen){ +var isByteArray = (utflen >= 0); +if (!isByteArray) utflen = $in.readUnsignedShort(); +var bytearr = null; +var chararr = null; +if (Clazz_instanceOf($in,"java.io.DataInputStream")) { +var dis = $in; +if (dis.bytearr.length < utflen) { +dis.bytearr = Clazz_newByteArray (isByteArray ? utflen : utflen * 2, 0); +dis.chararr = Clazz_newCharArray (dis.bytearr.length, '\0'); +}chararr = dis.chararr; +bytearr = dis.bytearr; +} else { +bytearr = Clazz_newByteArray (utflen, 0); +chararr = Clazz_newCharArray (utflen, '\0'); +}var c; +var char2; +var char3; +var count = 0; +var chararr_count = 0; +$in.readFully(bytearr, 0, utflen); +while (count < utflen) { +c = bytearr[count] & 0xff; +if (c > 127) break; +count++; +chararr[chararr_count++] = String.fromCharCode(c); +} +while (count < utflen) { +c = bytearr[count] & 0xff; +switch (c >> 4) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +case 7: +count++; +chararr[chararr_count++] = String.fromCharCode(c); +break; +case 12: +case 13: +count += 2; +if (count > utflen) throw new java.io.UTFDataFormatException("malformed input: partial character at end"); +char2 = bytearr[count - 1]; +if ((char2 & 0xC0) != 0x80) throw new java.io.UTFDataFormatException("malformed input around byte " + count); +chararr[chararr_count++] = String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); +break; +case 14: +count += 3; +if (count > utflen) throw new java.io.UTFDataFormatException("malformed input: partial character at end"); +char2 = bytearr[count - 2]; +char3 = bytearr[count - 1]; +if (((char2 & 0xC0) != 0x80) || ((char3 & 0xC0) != 0x80)) throw new java.io.UTFDataFormatException("malformed input around byte " + (count - 1)); +chararr[chararr_count++] = String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)); +break; +default: +throw new java.io.UTFDataFormatException("malformed input around byte " + count); +} +} +return String.instantialize(chararr, 0, chararr_count); +}, "java.io.DataInput,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_declareType(JU, "BC", null); +/*LV!1824 unnec constructor*/c$.bytesToFloat = Clazz_defineMethod(c$, "bytesToFloat", +function(bytes, j, isBigEndian){ +return JU.BC.intToFloat(JU.BC.bytesToInt(bytes, j, isBigEndian)); +}, "~A,~N,~B"); +c$.bytesToShort = Clazz_defineMethod(c$, "bytesToShort", +function(bytes, j, isBigEndian){ +var n = (isBigEndian ? (bytes[j + 1] & 0xff) | (bytes[j] & 0xff) << 8 : (bytes[j++] & 0xff) | (bytes[j++] & 0xff) << 8); +return (n > 0x7FFF ? n - 0x10000 : n); +}, "~A,~N,~B"); +c$.bytesToInt = Clazz_defineMethod(c$, "bytesToInt", +function(bytes, j, isBigEndian){ +var n = (isBigEndian ? (bytes[j + 3] & 0xff) | (bytes[j + 2] & 0xff) << 8 | (bytes[j + 1] & 0xff) << 16 | (bytes[j] & 0xff) << 24 : (bytes[j++] & 0xff) | (bytes[j++] & 0xff) << 8 | (bytes[j++] & 0xff) << 16 | (bytes[j++] & 0xff) << 24); +{ +return (n > 0x7FFFFFFF ? n - 0x100000000 : n); +}}, "~A,~N,~B"); +c$.intToSignedInt = Clazz_defineMethod(c$, "intToSignedInt", +function(n){ +{ +return (n > 0x7FFFFFFF ? n - 0x100000000 : n); +}}, "~N"); +c$.intToFloat = Clazz_defineMethod(c$, "intToFloat", +function(x){ +{ +if (x == 0) return 0; +var o = JU.BC; +if (o.fracIEEE == null) +o.setFracIEEE(); +var m = ((x & 0x7F800000) >> 23); +return ((x & 0x80000000) == 0 ? 1 : -1) * o.shiftIEEE((x & 0x7FFFFF) | 0x800000, m - 149); +}}, "~N"); +c$.bytesToDoubleToFloat = Clazz_defineMethod(c$, "bytesToDoubleToFloat", +function(bytes, j, isBigEndian){ +{ +if (JU.BC.fracIEEE == null) JU.BC.setFracIEEE(); +{ +var o = JU.BC; +var b1, b2, b3, b4, b5; +if (isBigEndian) { +b1 = bytes[j] & 0xFF; +b2 = bytes[j + 1] & 0xFF; +b3 = bytes[j + 2] & 0xFF; +b4 = bytes[j + 3] & 0xFF; +b5 = bytes[j + 4] & 0xFF; +} else { +b1 = bytes[j + 7] & 0xFF; +b2 = bytes[j + 6] & 0xFF; +b3 = bytes[j + 5] & 0xFF; +b4 = bytes[j + 4] & 0xFF; +b5 = bytes[j + 3] & 0xFF; +} +var s = ((b1 & 0x80) == 0 ? 1 : -1); +var e = (((b1 & 0x7F) << 4) | (b2 >> 4)) - 1026; +b2 = (b2 & 0xF) | 0x10; +return s * (o.shiftIEEE(b2, e) + o.shiftIEEE(b3, e - 8) + o.shiftIEEE(b4, e - 16) ++ o.shiftIEEE(b5, e - 24)); +}}}, "~A,~N,~B"); +c$.setFracIEEE = Clazz_defineMethod(c$, "setFracIEEE", +function(){ +JU.BC.fracIEEE = Clazz_newFloatArray (270, 0); +for (var i = 0; i < 270; i++) JU.BC.fracIEEE[i] = Math.pow(2, i - 141); + +}); +c$.shiftIEEE = Clazz_defineMethod(c$, "shiftIEEE", +function(f, i){ +if (f == 0 || i < -140) return 0; +if (i > 128) return 3.4028235E38; +return f * JU.BC.fracIEEE[i + 140]; +}, "~N,~N"); +c$.fracIEEE = null; +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.GenericBinaryDocument", "JU.BC"], "JU.BinaryDocument", ["java.io.DataInputStream"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.stream = null; +this.isRandom = false; +this.isBigEndian = true; +this.bis = null; +this.nBytes = 0; +this.out = null; +this.t8 = null; +Clazz_instantialize(this, arguments);}, JU, "BinaryDocument", JU.BC, javajs.api.GenericBinaryDocument); +Clazz_prepareFields (c$, function(){ +this.t8 = Clazz_newByteArray (8, 0); +}); +Clazz_overrideMethod(c$, "close", +function(){ +if (this.stream != null) try { +this.stream.close(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +if (this.out != null) this.out.closeChannel(); +}); +Clazz_overrideMethod(c$, "setStream", +function(bis, isBigEndian){ +this.bis = bis; +if (bis != null) { +this.stream = new java.io.DataInputStream(bis); +}this.isBigEndian = isBigEndian; +return this; +}, "java.io.BufferedInputStream,~B"); +Clazz_overrideMethod(c$, "getInputStream", +function(){ +return this.bis; +}); +Clazz_overrideMethod(c$, "setStreamData", +function(stream, isBigEndian){ +if (stream != null) this.stream = stream; +this.isBigEndian = isBigEndian; +}, "java.io.DataInputStream,~B"); +Clazz_overrideMethod(c$, "setOutputChannel", +function(out){ +this.out = out; +}, "javajs.api.GenericOutputChannel"); +Clazz_defineMethod(c$, "setRandom", +function(TF){ +this.isRandom = TF; +}, "~B"); +Clazz_overrideMethod(c$, "readByte", +function(){ +this.nBytes++; +return this.ioReadByte(); +}); +Clazz_overrideMethod(c$, "readUInt8", +function(){ +this.nBytes++; +var b = this.stream.readUnsignedByte(); +if (this.out != null) this.out.writeByteAsInt(b); +return b; +}); +Clazz_defineMethod(c$, "ioReadByte", +function(){ +var b = this.stream.readByte(); +if (this.out != null) this.out.writeByteAsInt(b); +return b; +}); +Clazz_overrideMethod(c$, "readBytes", +function(n){ +var b = Clazz_newByteArray (n, 0); +this.readByteArray(b, 0, n); +return b; +}, "~N"); +Clazz_overrideMethod(c$, "readByteArray", +function(b, off, len){ +var n = this.ioRead(b, off, len); +this.nBytes += n; +return n; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "ioRead", +function(b, off, len){ +var m = 0; +while (len > 0) { +var n; +{ +if (this.stream.readDIS) { +n = this.stream.readDIS(b, off, len); +} else { +n = this.stream.read(b, off, len); +} +}m += n; +if (n > 0 && this.out != null) this.out.write(b, off, n); +if (n >= len) break; +off += n; +len -= n; +} +return m; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "readString", +function(nChar){ +var temp = Clazz_newByteArray (nChar, 0); +var n = this.readByteArray(temp, 0, nChar); +return String.instantialize(temp, 0, n, "UTF-8"); +}, "~N"); +Clazz_overrideMethod(c$, "readShort", +function(){ +this.nBytes += 2; +var n = (this.isBigEndian ? this.ioReadShort() : ((this.ioReadByte() & 0xff) | (this.ioReadByte() & 0xff) << 8)); +{ +return (n > 0x7FFF ? n - 0x10000 : n); +}}); +Clazz_defineMethod(c$, "ioReadShort", +function(){ +var b = this.stream.readShort(); +if (this.out != null) this.out.writeShort(b); +return b; +}); +Clazz_overrideMethod(c$, "readIntLE", +function(){ +this.nBytes += 4; +return this.readLEInt(); +}); +Clazz_overrideMethod(c$, "readInt", +function(){ +this.nBytes += 4; +return (this.isBigEndian ? this.ioReadInt() : this.readLEInt()); +}); +Clazz_defineMethod(c$, "ioReadInt", +function(){ +var i = this.stream.readInt(); +if (this.out != null) this.out.writeInt(i); +return i; +}); +Clazz_overrideMethod(c$, "swapBytesI", +function(n){ +return (((n >> 24) & 0xff) | ((n >> 16) & 0xff) << 8 | ((n >> 8) & 0xff) << 16 | (n & 0xff) << 24); +}, "~N"); +Clazz_overrideMethod(c$, "swapBytesS", +function(n){ +return ((((n >> 8) & 0xff) | (n & 0xff) << 8)); +}, "~N"); +Clazz_overrideMethod(c$, "readUnsignedShort", +function(){ +this.nBytes += 2; +var a = (this.ioReadByte() & 0xff); +var b = (this.ioReadByte() & 0xff); +return (this.isBigEndian ? (a << 8) + b : (b << 8) + a); +}); +Clazz_overrideMethod(c$, "readLong", +function(){ +this.nBytes += 8; +return (this.isBigEndian ? this.ioReadLong() : (((this.ioReadByte()) & 0xff) | ((this.ioReadByte()) & 0xff) << 8 | ((this.ioReadByte()) & 0xff) << 16 | ((this.ioReadByte()) & 0xff) << 24 | ((this.ioReadByte()) & 0xff) << 32 | ((this.ioReadByte()) & 0xff) << 40 | ((this.ioReadByte()) & 0xff) << 48 | ((this.ioReadByte()) & 0xff) << 54)); +}); +Clazz_defineMethod(c$, "ioReadLong", +function(){ +var b = this.stream.readLong(); +if (this.out != null) this.out.writeLong(b); +return b; +}); +Clazz_defineMethod(c$, "readLEInt", +function(){ +this.ioRead(this.t8, 0, 4); +return JU.BC.bytesToInt(this.t8, 0, false); +}); +Clazz_overrideMethod(c$, "readFloat", +function(){ +return JU.BC.intToFloat(this.readInt()); +}); +Clazz_overrideMethod(c$, "readDouble", +function(){ +{ +this.readByteArray(this.t8, 0, 8); +return this.bytesToDoubleToFloat(this.t8, 0, this.isBigEndian); +}}); +Clazz_defineMethod(c$, "ioReadDouble", +function(){ +var d = this.stream.readDouble(); +if (this.out != null) this.out.writeLong(Double.doubleToRawLongBits(d)); +return d; +}); +Clazz_defineMethod(c$, "readLELong", +function(){ +return (((this.ioReadByte()) & 0xff) | ((this.ioReadByte()) & 0xff) << 8 | ((this.ioReadByte()) & 0xff) << 16 | ((this.ioReadByte()) & 0xff) << 24 | ((this.ioReadByte()) & 0xff) << 32 | ((this.ioReadByte()) & 0xff) << 40 | ((this.ioReadByte()) & 0xff) << 48 | ((this.ioReadByte()) & 0xff) << 56); +}); +Clazz_overrideMethod(c$, "seek", +function(offset){ +try { +if (offset == this.nBytes) return; +if (offset < this.nBytes) { +this.stream.reset(); +if (this.out != null && this.nBytes != 0) this.out.reset(); +this.nBytes = 0; +} else { +offset -= this.nBytes; +}if (this.out == null) { +this.stream.skipBytes(offset); +} else { +this.readByteArray( Clazz_newByteArray (offset, 0), 0, offset); +}this.nBytes += offset; +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +System.out.println(e.toString()); +} else { +throw e; +} +} +}, "~N"); +Clazz_overrideMethod(c$, "getPosition", +function(){ +return this.nBytes; +}); +Clazz_overrideMethod(c$, "getAllDataFiles", +function(binaryFileList, firstFile){ +return null; +}, "~S,~S"); +Clazz_overrideMethod(c$, "getAllDataMapped", +function(replace, string, fileData){ +}, "~S,~S,java.util.Map"); +Clazz_overrideMethod(c$, "setBigEndian", +function(b){ +this.isBigEndian = b; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corebinary.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corebinary.z.js new file mode 100755 index 000000000000..966b6d49772c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corebinary.z.js @@ -0,0 +1,26 @@ +(function(g,y,z,A,B,C,q,r,m,n,p,D,E,u,F,s,G,v,w,t,x,j,H,I,J,K,L,M,N,O,P,Q,R,k,S,T,U,V,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,f,c){m(["java.io.FilterInputStream"],"java.io.PushbackInputStream",null,function(){var a=p(function(){this.buf=null;this.pos=0;n(this,arguments)},java.io,"PushbackInputStream",java.io.FilterInputStream);u(a,function(b,a){x(this,java.io.PushbackInputStream,[b]);if(0>=a)throw new IllegalArgumentException("size <= 0");this.buf=j(a,0);this.pos=a},"java.io.InputStream,~N"); +f(a,"ensureOpen",function(){if(null==this.$in)throw new java.io.IOException("Stream closed");});c(a,"readByteAsInt",function(){this.ensureOpen();return this.posa||0>d||d>b.length-a)throw new IndexOutOfBoundsException;if(0==d)return 0;var e=this.buf.length-this.pos;0this.pos)throw new java.io.IOException("Push back buffer is full");this.pos-=d;System.arraycopy(b,a,this.buf,this.pos,d)},"~A,~N,~N");c(a,"available",function(){this.ensureOpen();var b=this.buf.length-this.pos,a=this.$in.available(); +return b>2147483647-a?2147483647:b+a});c(a,"skip",function(b){this.ensureOpen();if(0>=b)return 0;var a=this.buf.length-this.pos;0d)throw new IndexOutOfBoundsException;for(var e=0;ec)throw new java.io.EOFException;e+=c}},"~A,~N,~N");c(a,"skipBytes",function(b){for(var a=0,d=0;ab)throw new java.io.EOFException;return 0!=b});c(a,"readByte",function(){var b=this.$in.readByteAsInt();if(0>b)throw new java.io.EOFException; +return b});c(a,"readUnsignedByte",function(){var b=this.$in.readByteAsInt();if(0>b)throw new java.io.EOFException;return b});c(a,"readShort",function(){var b=this.$in.readByteAsInt(),a=this.$in.readByteAsInt();if(0>(b|a))throw new java.io.EOFException;b=(b<<8)+(a<<0);return 32767(b|a))throw new java.io.EOFException;return(b<<8)+(a<<0)});c(a,"readChar",function(){var b=this.$in.readByteAsInt(), +a=this.$in.readByteAsInt();if(0>(b|a))throw new java.io.EOFException;return String.fromCharCode((b<<8)+(a<<0))});c(a,"readInt",function(){var b=this.$in.readByteAsInt(),a=this.$in.readByteAsInt(),d=this.$in.readByteAsInt(),e=this.$in.readByteAsInt();if(0>(b|a|d|e))throw new java.io.EOFException;b=(b<<24)+(a<<16)+(d<<8)+(e<<0);return 2147483647--a&&(b=k(d+128,"\x00"),a=b.length-d-1,System.arraycopy(this.lineBuffer,0,b,0,d),this.lineBuffer=b),b[d++]=String.fromCharCode(e)}return-1==e&&0==d?null:String.copyValueOf(b,0,d)});c(a,"readUTF",function(){return java.io.DataInputStream.readUTFBytes(this,-1)});a.readUTFBytes=f(a,"readUTFBytes",function(b,a){var d=0<=a;d|| +(a=b.readUnsignedShort());var e=null,c=null;r(b,"java.io.DataInputStream")?(b.bytearr.length>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:h++;c[l++]=String.fromCharCode(d);break;case 12:case 13:h+=2;if(h>a)throw new java.io.UTFDataFormatException("malformed input: partial character at end"); +f=e[h-1];if(128!=(f&192))throw new java.io.UTFDataFormatException("malformed input around byte "+h);c[l++]=String.fromCharCode((d&31)<<6|f&63);break;case 14:h+=3;if(h>a)throw new java.io.UTFDataFormatException("malformed input: partial character at end");f=e[h-2];g=e[h-1];if(128!=(f&192)||128!=(g&192))throw new java.io.UTFDataFormatException("malformed input around byte "+(h-1));c[l++]=String.fromCharCode((d&15)<<12|(f&63)<<6|(g&63)<<0);break;default:throw new java.io.UTFDataFormatException("malformed input around byte "+ +h);}return String.instantialize(c,0,l)},"java.io.DataInput,~N")});q("JU");g=w(JU,"BC",null);g.bytesToFloat=f(g,"bytesToFloat",function(a,b,c){return JU.BC.intToFloat(JU.BC.bytesToInt(a,b,c))},"~A,~N,~B");g.bytesToShort=f(g,"bytesToShort",function(a,b,c){a=c?a[b+1]&255|(a[b]&255)<<8:a[b++]&255|(a[b++]&255)<<8;return 32767>23)-149)},"~N");g.bytesToDoubleToFloat=f(g,"bytesToDoubleToFloat",function(a,b,c){null==JU.BC.fracIEEE&&JU.BC.setFracIEEE();var d=JU.BC,e,f,g;c?(c=a[b]&255,e=a[b+ +1]&255,f=a[b+2]&255,g=a[b+3]&255,a=a[b+4]&255):(c=a[b+7]&255,e=a[b+6]&255,f=a[b+5]&255,g=a[b+4]&255,a=a[b+3]&255);b=((c&127)<<4|e>>4)-1026;return(0==(c&128)?1:-1)*(d.shiftIEEE(e&15|16,b)+d.shiftIEEE(f,b-8)+d.shiftIEEE(g,b-16)+d.shiftIEEE(a,b-24))},"~A,~N,~B");g.setFracIEEE=f(g,"setFracIEEE",function(){JU.BC.fracIEEE=v(270,0);for(var a=0;270>a;a++)JU.BC.fracIEEE[a]=Math.pow(2,a-141)});g.shiftIEEE=f(g,"shiftIEEE",function(a,b){return 0==a||-140>b?0:128=d)break;c+=f;d-=f}return e},"~A,~N,~N");c(a,"readString",function(a){var c=j(a,0);a=this.readByteArray(c,0,a);return String.instantialize(c,0,a,"UTF-8")},"~N");c(a,"readShort",function(){this.nBytes+=2;var a=this.isBigEndian?this.ioReadShort():this.ioReadByte()&255|(this.ioReadByte()&255)<<8;return 32767>24&255|(a>>16&255)<<8|(a>>8&255)<<16|(a&255)<<24},"~N");c(a,"swapBytesS",function(a){return a>>8&255|(a&255)<<8},"~N");c(a,"readUnsignedShort",function(){this.nBytes+=2;var a=this.ioReadByte()& +255,c=this.ioReadByte()&255;return this.isBigEndian?(a<<8)+c:(c<<8)+a});c(a,"readLong",function(){this.nBytes+=8;return this.isBigEndian?this.ioReadLong():this.ioReadByte()&255|(this.ioReadByte()&255)<<8|(this.ioReadByte()&255)<<16|(this.ioReadByte()&255)<<24|(this.ioReadByte()&255)<<32|(this.ioReadByte()&255)<<40|(this.ioReadByte()&255)<<48|(this.ioReadByte()&255)<<54});f(a,"ioReadLong",function(){var a=this.stream.readLong();null!=this.out&&this.out.writeLong(a);return a});f(a,"readLEInt",function(){this.ioRead(this.t8, +0,4);return JU.BC.bytesToInt(this.t8,0,!1)});c(a,"readFloat",function(){return JU.BC.intToFloat(this.readInt())});c(a,"readDouble",function(){this.readByteArray(this.t8,0,8);return this.bytesToDoubleToFloat(this.t8,0,this.isBigEndian)});f(a,"ioReadDouble",function(){var a=this.stream.readDouble();null!=this.out&&this.out.writeLong(Double.doubleToRawLongBits(a));return a});f(a,"readLELong",function(){return this.ioReadByte()&255|(this.ioReadByte()&255)<<8|(this.ioReadByte()&255)<<16|(this.ioReadByte()& +255)<<24|(this.ioReadByte()&255)<<32|(this.ioReadByte()&255)<<40|(this.ioReadByte()&255)<<48|(this.ioReadByte()&255)<<56});c(a,"seek",function(a){try{a!=this.nBytes&&(a= 0) { +this.setFilterAtomTypeStr(tokens[1].substring(pt + 1).toUpperCase()); +} else { +pt = tokens[1].length; +}this.atomTypeLen = Integer.parseInt(tokens[1].substring(0, pt)); +}var conf = this.getFilter("CONF "); +if (conf != null) { +this.configurationPtr = this.parseIntStr(conf); +this.sbIgnored = new JU.SB(); +this.sbSelected = new JU.SB(); +}this.isLegacyModelType = (this.stateScriptVersionInt < 120000); +this.isConnectStateBug = (this.stateScriptVersionInt >= 120151 && this.stateScriptVersionInt <= 120220 || this.stateScriptVersionInt >= 120300 && this.stateScriptVersionInt <= 120320); +}); +Clazz_overrideMethod(c$, "checkLine", +function(){ +var ptOption = ((this.lineLength = this.line.length) < 6 ? -1 : "ATOM HETATM MODEL CONECT HELIX SHEET TURN HET HETNAM ANISOU SITE CRYST1 SCALE1 SCALE2 SCALE3 EXPDTA FORMUL REMARK HEADER COMPND SOURCE TITLE SEQADV ".indexOf(this.line.substring(0, 6))) >> 3; +var isAtom = (ptOption == 0 || ptOption == 1); +var isModel = (ptOption == 2); +this.serial = (isAtom ? this.getSerial(6, 11) : 0); +var forceNewModel = ((this.isTrajectory || this.isSequential) && !this.isMultiModel && isAtom && this.serial == 1); +if (this.getHeader) { +if (isAtom || isModel) this.getHeader = false; + else this.readHeader(false); +}if (isModel || forceNewModel) { +this.isMultiModel = isModel; +this.getHeader = false; +var modelNo = (forceNewModel ? this.modelNumber + 1 : this.getModelNumber()); +var modelName = this.getModelName(); +this.modelNumber = (this.useFileModelNumbers ? modelNo : this.modelNumber + 1); +if (!this.doGetModel(this.modelNumber, null)) { +this.handleTlsMissingModels(); +var isOK = this.checkLastModel(); +if (!isOK && this.isConcatenated) isOK = this.continuing = true; +return isOK; +}if (!this.isCourseGrained) this.connectAll(this.maxSerial, this.isConnectStateBug); +if (this.ac > 0) this.applySymmetryAndSetTrajectory(); +this.model(modelNo, modelName); +if (this.isLegacyModelType || !isAtom) return true; +}if (this.isMultiModel && !this.doProcessLines) { +return true; +}if (isAtom) { +this.getHeader = false; +this.atom(); +return true; +}switch (ptOption) { +case 3: +this.conect(); +return true; +case 4: +case 5: +case 6: +if (!this.ignoreStructure) this.structure(); +return true; +case 7: +this.het(); +return true; +case 8: +this.hetnam(); +return true; +case 9: +this.anisou(); +return true; +case 10: +this.site(); +return true; +case 11: +this.cryst1(); +return true; +case 12: +case 13: +case 14: +this.scale(ptOption - 11); +return true; +case 15: +this.expdta(); +return true; +case 16: +this.formul(); +return true; +case 17: +if (this.line.startsWith("REMARK 285")) return this.remark285(); +if (this.line.startsWith("REMARK 350")) return this.remark350(); +if (this.line.startsWith("REMARK 290")) return this.remark290(); +if (this.line.contains("This file does not adhere to the PDB standard")) { +this.gromacsWideFormat = true; +}if (this.getTlsGroups) { +if (this.line.indexOf("TLS DETAILS") > 0) return this.remarkTls(); +}this.checkRemark(); +return true; +case 18: +this.header(); +return true; +case 19: +case 20: +this.compnd(ptOption == 20); +return true; +case 21: +this.title(); +return true; +case 22: +this.seqAdv(); +return true; +} +return true; +}); +Clazz_defineMethod(c$, "checkRemark", +function(){ +this.checkCurrentLineForScript(); +}); +Clazz_defineMethod(c$, "seqAdv", +function(){ +var g1 = this.line.substring(39, 42).trim().toLowerCase(); +if (g1.length != 1) return; +if (this.htGroup1 == null) this.asc.setInfo("htGroup1", this.htGroup1 = new java.util.Hashtable()); +var g3 = this.line.substring(12, 15).trim(); +this.htGroup1.put(g3, g1); +}); +Clazz_defineMethod(c$, "readHeader", +function(getLine){ +if (getLine) { +this.rd(); +if (!this.getHeader) return this.line; +}this.pdbHeader.append(this.line).appendC('\n'); +return this.line; +}, "~B"); +Clazz_overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderPDB(); +}); +Clazz_defineMethod(c$, "finalizeReaderPDB", +function(){ +this.checkNotPDB(); +if (this.pdbID != null && this.pdbID.length > 0) { +if (!this.isMultiModel) this.asc.setAtomSetName(this.pdbID); +this.asc.setCurrentModelInfo("pdbID", this.pdbID); +}this.checkUnitCellParams(); +if (!this.isCourseGrained) this.connectAll(this.maxSerial, this.isConnectStateBug); +var symmetry; +if (this.vBiomolecules != null && this.vBiomolecules.size() > 0 && this.asc.ac > 0) { +this.asc.setCurrentModelInfo("biomolecules", this.vBiomolecules); +this.setBiomoleculeAtomCounts(); +if (this.thisBiomolecule != null && this.applySymmetry) { +this.asc.getXSymmetry().applySymmetryBio(this.thisBiomolecule, this.applySymmetryToBonds, this.filter); +this.vTlsModels = null; +this.asc.xtalSymmetry = null; +}}if (this.vTlsModels != null) { +symmetry = this.asc.newFileSymmetry(); +var n = this.asc.atomSetCount; +if (n == this.vTlsModels.size()) { +for (var i = n; --i >= 0; ) this.setTlsGroups(i, i, symmetry); + +} else { +JU.Logger.info(n + " models but " + this.vTlsModels.size() + " TLS descriptions"); +if (this.vTlsModels.size() == 1) { +JU.Logger.info(" -- assuming all models have the same TLS description -- check REMARK 3 for details."); +for (var i = n; --i >= 0; ) this.setTlsGroups(0, i, symmetry); + +}}this.checkForResidualBFactors(symmetry); +}if (this.sbTlsErrors != null) { +this.asc.setInfo("tlsErrors", this.sbTlsErrors.toString()); +this.appendLoadNote(this.sbTlsErrors.toString()); +}this.doCheckUnitCell = new Boolean (this.doCheckUnitCell &(this.iHaveUnitCell && this.doApplySymmetry)).valueOf(); +if (this.doCheckUnitCell && this.isbiomol) { +this.ignoreFileSpaceGroupName = true; +this.sgName = this.fileSgName; +this.fractionalizeCoordinates(true); +this.asc.setModelInfoForSet("biosymmetry", null, this.asc.iSet); +this.checkNearAtoms = false; +}if (this.latticeCells != null && this.latticeCells[0] != 0) this.addJmolScript("unitcell;axes on;axes unitcell;"); +this.finalizeReaderASCR(); +if (this.vCompnds != null) { +this.asc.setInfo("compoundSource", this.vCompnds); +for (var i = this.asc.iSet + 1; --i >= 0; ) this.asc.setModelInfoForSet("compoundSource", this.vCompnds, i); + +}if (this.htSites != null) { +this.addSites(this.htSites); +}if (this.pdbHeader != null) this.asc.setInfo("fileHeader", this.pdbHeader.toString()); +if (this.configurationPtr > 0) { +JU.Logger.info(this.sbSelected.toString()); +JU.Logger.info(this.sbIgnored.toString()); +}}); +Clazz_defineMethod(c$, "checkUnitCellParams", +function(){ +if (this.isbiomol && (this.unitCellParams == null || Double.isNaN(this.unitCellParams[0]))) { +this.setUnitCell(1, 1, 1, 90, 90, 90); +this.addSpaceGroupName("P1"); +}if (this.iHaveUnitCell) { +this.asc.setCurrentModelInfo("unitCellParams", this.unitCellParams); +if (this.sgName != null) this.asc.setCurrentModelInfo("spaceGroup", this.sgName); +}}); +Clazz_defineMethod(c$, "checkForResidualBFactors", +function(symmetry){ +var atoms = this.asc.atoms; +var isResidual = false; +for (var i = this.asc.ac; --i >= 0; ) { +var anisou = this.tlsU.get(atoms[i]); +if (anisou == null) continue; +var resid = anisou[7] - (anisou[0] + anisou[1] + anisou[2]) / 3; +if (resid < 0 || Float.isNaN(resid)) { +isResidual = true; +break; +}} +JU.Logger.info("TLS analysis suggests Bfactors are " + (isResidual ? "" : "NOT") + " residuals"); +for (var entry, $entry = this.tlsU.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var anisou = entry.getValue(); +var resid = anisou[7]; +if (resid == 0) continue; +if (!isResidual) resid -= (anisou[0] + anisou[1] + anisou[2]) / 3; +anisou[0] += resid; +anisou[1] += resid; +anisou[2] += resid; +entry.getKey().addTensor(symmetry.getTensor(this.vwr, anisou).setType(null), "TLS-R", false); +JU.Logger.info("TLS-U: " + JU.Escape.eAF(anisou)); +anisou = (entry.getKey().anisoBorU); +if (anisou != null) JU.Logger.info("ANISOU: " + JU.Escape.eAF(anisou)); +} +this.tlsU = null; +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "header", +function(){ +if (this.lineLength < 8) return; +this.appendLoadNote(this.line.substring(7).trim()); +if (this.lineLength == 80) this.maxLength = 72; +this.pdbID = (this.lineLength >= 66 ? this.line.substring(62, 66).trim() : ""); +if (this.pdbID.length == 4) { +this.asc.setCollectionName(this.pdbID); +this.asc.setInfo("havePDBHeaderName", Boolean.TRUE); +}if (this.lineLength > 50) this.line = this.line.substring(0, 50); +this.asc.setInfo("CLASSIFICATION", this.line.substring(7).trim()); +}); +Clazz_defineMethod(c$, "title", +function(){ +if (this.lineLength > 10) this.appendLoadNote(this.line.substring(10, Math.min(this.maxLength, this.line.length)).trim()); +}); +Clazz_defineMethod(c$, "compnd", +function(isSource){ +if (!isSource) { +if (this.$compnd == null) this.$compnd = ""; + else this.$compnd += " "; +var s = this.line; +if (this.lineLength > 62) s = s.substring(0, 62); +this.$compnd += s.substring(10).trim(); +this.asc.setInfo("COMPND", this.$compnd); +}if (this.vCompnds == null) { +if (isSource) return; +this.vCompnds = new JU.Lst(); +this.htMolIds = new java.util.Hashtable(); +this.currentCompnd = new java.util.Hashtable(); +this.currentCompnd.put("select", "(*)"); +this.currentKey = "MOLECULE"; +this.htMolIds.put("", this.currentCompnd); +}if (isSource && this.resetKey) { +this.resetKey = false; +this.currentKey = "SOURCE"; +this.currentCompnd = this.htMolIds.get(""); +}this.line = this.line.substring(10, Math.min(this.lineLength, 72)).trim(); +var pt = this.line.indexOf(":"); +if (pt < 0 || pt > 0 && this.line.charAt(pt - 1) == '\\') pt = this.line.length; +var key = this.line.substring(0, pt).trim(); +var value = (pt < this.line.length ? this.line.substring(pt + 1).trim() : null); +if (key.equals("MOL_ID")) { +if (value == null) return; +if (isSource) { +this.currentCompnd = this.htMolIds.remove(value); +return; +}this.currentCompnd = new java.util.Hashtable(); +this.vCompnds.addLast(this.currentCompnd); +this.htMolIds.put(value, this.currentCompnd); +}if (this.currentCompnd == null) return; +if (value == null) { +value = this.currentCompnd.get(this.currentKey); +if (value == null) value = ""; +value += key; +if (this.vCompnds.size() == 0) this.vCompnds.addLast(this.currentCompnd); +} else { +this.currentKey = key; +}if (value.endsWith(";")) value = value.substring(0, value.length - 1); +this.currentCompnd.put(this.currentKey, value); +if (this.currentKey.equals("CHAIN")) this.currentCompnd.put("select", "(:" + JU.PT.rep(JU.PT.rep(value, ", ", ",:"), " ", "") + ")"); +}, "~B"); +Clazz_defineMethod(c$, "setBiomoleculeAtomCounts", +function(){ +for (var i = this.vBiomolecules.size(); --i >= 0; ) { +var biomolecule = this.vBiomolecules.get(i); +var biomts = biomolecule.get("biomts"); +var biomtchains = biomolecule.get("chains"); +var nTransforms = biomts.size(); +var nAtoms = 0; +for (var k = nTransforms; --k >= 0; ) { +var chains = biomtchains.get(k); +for (var j = chains.length - 1; --j >= 0; ) if (chains.charAt(j) == ':') nAtoms += this.biomtChainAtomCounts[0 + (chains.charAt(j + 1)).charCodeAt(0)]; + +} +biomolecule.put("atomCount", Integer.$valueOf(nAtoms)); +} +}); +Clazz_defineMethod(c$, "remark350", +function(){ +var biomts = null; +var biomtchains = null; +this.vBiomolecules = new JU.Lst(); +this.biomtChainAtomCounts = Clazz_newIntArray (255, 0); +var title = ""; +var chainlist = ""; +var id = ""; +var needLine = true; +var info = null; +var nBiomt = 0; +var mIdent = JU.M4.newM4(null); +while (true) { +if (needLine) this.readHeader(true); + else needLine = true; +if (this.line == null || !this.line.startsWith("REMARK 350")) break; +try { +if (this.line.startsWith("REMARK 350 BIOMOLECULE:")) { +if (nBiomt > 0) JU.Logger.info("biomolecule " + id + ": number of transforms: " + nBiomt); +info = new java.util.Hashtable(); +id = this.line.substring(this.line.indexOf(":") + 1).trim(); +title = this.line.trim(); +info.put("name", "biomolecule " + id); +info.put("molecule", id.length == 3 ? id : Integer.$valueOf(this.parseIntStr(id))); +info.put("title", title); +info.put("chains", biomtchains = new JU.Lst()); +info.put("biomts", biomts = new JU.Lst()); +this.vBiomolecules.addLast(info); +nBiomt = 0; +}if (this.line.indexOf("APPLY THE FOLLOWING TO CHAINS:") >= 0) { +if (info == null) { +needLine = false; +this.line = "REMARK 350 BIOMOLECULE: 1 APPLY THE FOLLOWING TO CHAINS:"; +continue; +}var list = this.line.substring(41).trim(); +this.appendLoadNote("found biomolecule " + id + ": " + list); +chainlist = ":" + list.$replace(',', ';').$replace(' ', ':'); +needLine = false; +while (this.readHeader(true) != null && this.line.indexOf("BIOMT") < 0 && this.line.indexOf("350") == 7) chainlist += ":" + this.line.substring(11).trim().$replace(',', ';').$replace(' ', ':'); + +chainlist += ";"; +if (this.checkFilterKey("BIOMOLECULE " + id + ";") || this.checkFilterKey("BIOMOLECULE=" + id + ";")) { +this.setFilter(this.filterCased + chainlist); +JU.Logger.info("filter set to \"" + this.filter + "\""); +this.thisBiomolecule = info; +this.haveMappedSerials = this.applySymmetry; +}continue; +}if (this.line.startsWith("REMARK 350 BIOMT1 ")) { +nBiomt++; +var mat = Clazz_newFloatArray (16, 0); +for (var i = 0; i < 12; ) { +var tokens = this.getTokens(); +mat[i++] = this.parseFloatStr(tokens[4]); +mat[i++] = this.parseFloatStr(tokens[5]); +mat[i++] = this.parseFloatStr(tokens[6]); +mat[i++] = this.parseFloatStr(tokens[7]); +if (i == 4 || i == 8) this.readHeader(true); +} +mat[15] = 1; +var m4 = new JU.M4(); +m4.setA(mat); +if (m4.equals(mIdent)) { +biomts.add(0, m4); +biomtchains.add(0, chainlist); +} else { +biomts.addLast(m4); +biomtchains.addLast(chainlist); +}continue; +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.thisBiomolecule = null; +this.vBiomolecules = null; +return false; +} else { +throw e; +} +} +} +if (nBiomt > 0) JU.Logger.info("biomolecule " + id + ": number of transforms: " + nBiomt); +return false; +}); +Clazz_defineMethod(c$, "remark285", +function(){ +return true; +}); +Clazz_defineMethod(c$, "remark290", +function(){ +while (this.readHeader(true) != null && this.line.startsWith("REMARK 290")) { +if (this.line.indexOf("NNNMMM OPERATOR") >= 0) { +while (this.readHeader(true) != null) { +var tokens = this.getTokens(); +if (tokens.length < 4) break; +if (this.doApplySymmetry || this.isbiomol) this.setSymmetryOperator(tokens[3]); +} +}} +return false; +}); +Clazz_defineMethod(c$, "getSerial", +function(i, j){ +var c = this.line.charAt(i); +var isBase10 = (c == ' ' || this.line.charAt(j - 1) == ' '); +switch (this.serMode) { +default: +case 0: +if (isBase10) return this.parseIntRange(this.line, i, j); +try { +return this.serial = Integer.parseInt(this.line.substring(i, j)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.serMode = (JU.PT.isDigit(c) ? 1 : 2); +return this.getSerial(i, j); +} else { +throw e; +} +} +case 2: +return (isBase10 || JU.PT.isDigit(c) ? this.parseIntRange(this.line, i, j) : JU.PT.parseIntRadix(this.line.substring(i, j), 36) + (JU.PT.isUpperCase(c) ? -16696160 : 26973856)); +case 1: +if (!isBase10) return this.serial = JU.PT.parseIntRadix(this.line.substring(i, j), 16); +this.serMode = 0; +return this.getSerial(i, j); +} +}, "~N,~N"); +Clazz_defineMethod(c$, "getSeqNo", +function(i, j){ +var c = this.line.charAt(i); +var isBase10 = (c == ' ' || this.line.charAt(j - 1) == ' '); +switch (this.seqMode) { +default: +case 0: +if (isBase10) return this.parseIntRange(this.line, i, j); +try { +return Integer.parseInt(this.line.substring(i, j)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.seqMode = (JU.PT.isDigit(c) ? 1 : 2); +return this.getSeqNo(i, j); +} else { +throw e; +} +} +case 2: +return (isBase10 || JU.PT.isDigit(c) ? this.parseIntRange(this.line, i, j) : JU.PT.parseIntRadix(this.line.substring(i, j), 36) + (JU.PT.isUpperCase(c) ? -456560 : 756496)); +case 1: +if (!isBase10) return JU.PT.parseIntRadix(this.line.substring(i, j), 16); +this.seqMode = 0; +return this.getSeqNo(i, j); +} +}, "~N,~N"); +Clazz_defineMethod(c$, "processAtom", +function(atom, name, altID, group3, chainID, seqNo, insCode, isHetero, sym){ +atom.atomName = name; +if (altID != ' ') atom.altLoc = altID; +atom.group3 = (group3 == null ? "UNK" : group3); +atom.chainID = chainID; +if (this.biomtChainAtomCounts != null) this.biomtChainAtomCounts[chainID % 256]++; +atom.sequenceNumber = seqNo; +atom.insertionCode = J.api.JmolAdapter.canonizeInsertionCode(insCode); +atom.isHetero = isHetero; +atom.elementSymbol = sym; +return atom; +}, "J.adapter.smarter.Atom,~S,~S,~S,~N,~N,~S,~B,~S"); +Clazz_defineMethod(c$, "processAtom2", +function(atom, serial, x, y, z, charge){ +atom.atomSerial = serial; +if (serial > this.maxSerial) this.maxSerial = serial; +if (atom.group3 == null) { +if (this.currentGroup3 != null) { +this.currentGroup3 = null; +this.currentResno = -2147483648; +this.htElementsInCurrentGroup = null; +}} else if (!atom.group3.equals(this.currentGroup3) || atom.sequenceNumber != this.currentResno) { +this.currentGroup3 = atom.group3; +this.currentResno = atom.sequenceNumber; +this.htElementsInCurrentGroup = this.htFormul.get(atom.group3); +this.nRes++; +if (atom.group3.equals("UNK")) this.nUNK++; +}this.setAtomCoordXYZ(atom, x, y, z); +atom.formalCharge = charge; +this.setAdditionalAtomParameters(atom); +if (this.haveMappedSerials) this.asc.addAtomWithMappedSerialNumber(atom); + else this.asc.addAtom(atom); +if (this.ac++ == 0 && !this.isCourseGrained) this.setModelPDB(true); +if (atom.isHetero) { +if (this.htHetero != null) { +this.asc.setCurrentModelInfo("hetNames", this.htHetero); +this.htHetero = null; +}}}, "J.adapter.smarter.Atom,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "atom", +function(){ +var isHetero = this.line.startsWith("HETATM"); +var atom = this.processAtom( new J.adapter.smarter.Atom(), this.line.substring(12, 16).trim(), this.line.charAt(16), this.parseTokenRange(this.line, 17, 20), this.vwr.getChainID(this.line.substring(21, 22), true), this.getSeqNo(22, 26), this.line.charAt(26), isHetero, this.deduceElementSymbol(isHetero)); +if (this.atomTypeLen > 0) { +var s = this.line.substring(this.atomTypePt0, this.atomTypePt0 + this.atomTypeLen).trim(); +if (s.length > 0) atom.atomName += "\0" + s; +}if (!this.filterPDBAtom(atom, this.fileAtomIndex++)) return; +var charge = 0; +var x; +var y; +var z; +if (this.gromacsWideFormat) { +x = this.parseFloatRange(this.line, 30, 40); +y = this.parseFloatRange(this.line, 40, 50); +z = this.parseFloatRange(this.line, 50, 60); +} else { +if (this.lineLength >= 80) { +var chMagnitude = this.line.charAt(78); +var chSign = this.line.charAt(79); +if (chSign >= '0' && chSign <= '7') { +var chT = chSign; +chSign = chMagnitude; +chMagnitude = chT; +}if ((chSign == '+' || chSign == '-' || chSign == ' ') && chMagnitude >= '0' && chMagnitude <= '7') { +charge = chMagnitude.charCodeAt(0) - 48; +if (chSign == '-') charge = -charge; +}}x = this.parseFloatRange(this.line, 30, 38); +y = this.parseFloatRange(this.line, 38, 46); +z = this.parseFloatRange(this.line, 46, 54); +}this.processAtom2(atom, this.serial, x, y, z, charge); +}); +Clazz_defineMethod(c$, "filterPDBAtom", +function(atom, iAtom){ +if (!this.filterAtom(atom, iAtom)) return false; +if (this.configurationPtr > 0) { +if (atom.sequenceNumber != this.lastGroup || atom.insertionCode != this.lastInsertion) { +this.conformationIndex = this.configurationPtr - 1; +this.lastGroup = atom.sequenceNumber; +this.lastInsertion = atom.insertionCode; +this.lastAltLoc = '\0'; +}if (atom.altLoc != '\0') { +var msg = " atom [" + atom.group3 + "]" + atom.sequenceNumber + (atom.insertionCode == '\0' ? "" : "^" + atom.insertionCode) + (atom.chainID == 0 ? "" : ":" + this.vwr.getChainIDStr(atom.chainID)) + "." + atom.atomName + "%" + atom.altLoc + "\n"; +if (this.conformationIndex >= 0 && atom.altLoc != this.lastAltLoc) { +this.lastAltLoc = atom.altLoc; +this.conformationIndex--; +}if (this.conformationIndex < 0 && atom.altLoc != this.lastAltLoc) { +this.sbIgnored.append("ignoring").append(msg); +return false; +}this.sbSelected.append("loading").append(msg); +}}return true; +}, "J.adapter.smarter.Atom,~N"); +Clazz_defineMethod(c$, "setAdditionalAtomParameters", +function(atom){ +var floatOccupancy; +if (this.gromacsWideFormat) { +floatOccupancy = this.parseFloatRange(this.line, 60, 68); +atom.bfactor = J.adapter.readers.pdb.PdbReader.fixRadius(this.parseFloatRange(this.line, 68, 76)); +} else { +floatOccupancy = this.parseFloatRange(this.line, 54, 60); +atom.bfactor = this.parseFloatRange(this.line, 60, 66); +}atom.foccupancy = (Float.isNaN(floatOccupancy) ? 1 : floatOccupancy); +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "deduceElementSymbol", +function(isHetero){ +if (this.lineLength >= 78) { +var ch76 = this.line.charAt(76); +var ch77 = this.line.charAt(77); +if (ch76 == ' ' && J.adapter.smarter.Atom.isValidSym1(ch77)) return "" + ch77; +if (J.adapter.smarter.Atom.isValidSymNoCase(ch76, ch77)) return "" + ch76 + ch77; +}var ch12 = this.line.charAt(12); +var ch13 = this.line.charAt(13); +if ((this.htElementsInCurrentGroup == null || this.htElementsInCurrentGroup.get(this.line.substring(12, 14)) != null) && J.adapter.smarter.Atom.isValidSymNoCase(ch12, ch13)) return (isHetero || ch12 != 'H' ? "" + ch12 + ch13 : "H"); +if (ch12 == 'H') return "H"; +if ((this.htElementsInCurrentGroup == null || this.htElementsInCurrentGroup.get("" + ch13) != null) && J.adapter.smarter.Atom.isValidSym1(ch13)) return "" + ch13; +if (ch12 != ' ' && (this.htElementsInCurrentGroup == null || this.htElementsInCurrentGroup.get("" + ch12) != null) && J.adapter.smarter.Atom.isValidSym1(ch12)) return "" + ch12; +var ch14 = this.line.charAt(14); +if (ch12 == ' ' && ch13 != 'X' && (this.htElementsInCurrentGroup == null || this.htElementsInCurrentGroup.get(this.line.substring(13, 15)) != null) && J.adapter.smarter.Atom.isValidSymNoCase(ch13, ch14)) return "" + ch13 + ch14; +return "Xx"; +}, "~B"); +Clazz_defineMethod(c$, "conect", +function(){ +if (this.sbConect == null) { +this.sbConect = new JU.SB(); +this.sb = new JU.SB(); +} else { +this.sb.setLength(0); +}var sourceSerial = this.getSerial(6, 11); +if (sourceSerial < 0) return; +var order = 1; +var pt1 = this.line.trim().length; +if (pt1 > 56) pt1 = this.line.substring(0, 56).trim().length; +for (var pt = 11; pt < pt1; pt += 5) { +switch (pt) { +case 31: +order = 2048; +break; +case 41: +continue; +} +var targetSerial = this.getSerial(pt, pt + 5); +if (targetSerial < 0) continue; +var isDoubleBond = (sourceSerial == this.lastSourceSerial && targetSerial == this.lastTargetSerial); +if (isDoubleBond) this.haveDoubleBonds = true; +this.lastSourceSerial = sourceSerial; +this.lastTargetSerial = targetSerial; +var isSwapped = (targetSerial < sourceSerial); +var i1; +if (isSwapped) { +i1 = targetSerial; +targetSerial = sourceSerial; +} else { +i1 = sourceSerial; +}var st = ";" + i1 + " " + targetSerial + ";"; +if (this.sbConect.indexOf(st) >= 0 && !isDoubleBond) continue; +if (this.haveDoubleBonds) { +var st1 = "--" + st; +if (this.sbConect.indexOf(st1) >= 0) continue; +this.sb.append(st1); +}this.sbConect.append(st); +this.addConnection( Clazz_newIntArray(-1, [i1, targetSerial, order])); +} +this.sbConect.appendSB(this.sb); +}); +Clazz_defineMethod(c$, "structure", +function(){ +var structureType = J.c.STR.NONE; +var substructureType = J.c.STR.NONE; +var startChainIDIndex; +var startIndex; +var endChainIDIndex; +var endIndex; +var strandCount = 0; +if (this.line.startsWith("HELIX ")) { +structureType = J.c.STR.HELIX; +startChainIDIndex = 19; +startIndex = 21; +endChainIDIndex = 31; +endIndex = 33; +if (this.line.length >= 40) substructureType = J.adapter.smarter.Structure.getHelixType(this.parseIntRange(this.line, 38, 40)); +} else if (this.line.startsWith("SHEET ")) { +structureType = J.c.STR.SHEET; +startChainIDIndex = 21; +startIndex = 22; +endChainIDIndex = 32; +endIndex = 33; +strandCount = this.parseIntRange(this.line, 14, 16); +} else if (this.line.startsWith("TURN ")) { +structureType = J.c.STR.TURN; +startChainIDIndex = 19; +startIndex = 20; +endChainIDIndex = 30; +endIndex = 31; +} else return; +if (this.lineLength < endIndex + 4) return; +var structureID = this.line.substring(11, 15).trim(); +var serialID = this.line.substring(7, 10).trim(); +var startChainID = this.vwr.getChainID(this.line.substring(startChainIDIndex, startChainIDIndex + 1), true); +var startSequenceNumber = this.parseIntRange(this.line, startIndex, startIndex + 4); +var startInsertionCode = this.line.charAt(startIndex + 4); +var endChainID = this.vwr.getChainID(this.line.substring(endChainIDIndex, endChainIDIndex + 1), true); +var endSequenceNumber = this.parseIntRange(this.line, endIndex, endIndex + 4); +var endInsertionCode = ' '; +if (this.lineLength > endIndex + 4) endInsertionCode = this.line.charAt(endIndex + 4); +if (substructureType === J.c.STR.NONE) substructureType = structureType; +var structure = new J.adapter.smarter.Structure(-1, structureType, substructureType, structureID, serialID, strandCount, null); +structure.set(startChainID, startSequenceNumber, startInsertionCode, endChainID, endSequenceNumber, endInsertionCode, 0, 0); +this.asc.addStructure(structure); +}); +Clazz_defineMethod(c$, "getModelNumber", +function(){ +var startModelColumn = 6; +var endModelColumn = 14; +if (endModelColumn > this.lineLength) endModelColumn = this.lineLength; +var iModel = this.parseIntRange(this.line, startModelColumn, endModelColumn); +return (iModel == -2147483648 ? 0 : iModel); +}); +Clazz_defineMethod(c$, "getModelName", +function(){ +if (this.lineLength < 16) return null; +if (this.line.startsWith("ATOM")) return ""; +var name = this.line.substring(15, this.lineLength).trim(); +return (name.length == 0 ? null : name); +}); +Clazz_defineMethod(c$, "model", +function(modelNumber, name){ +this.checkNotPDB(); +if (name == null) name = this.pdbID; +this.haveMappedSerials = (this.thisBiomolecule != null && this.applySymmetry); +this.sbConect = null; +this.asc.newAtomSet(); +this.asc.setCurrentModelInfo("pdbID", this.pdbID); +if (this.asc.iSet == 0 || this.isTrajectory) this.asc.setAtomSetName(this.pdbID); +this.asc.setCurrentModelInfo("name", name); +this.checkUnitCellParams(); +if (!this.isCourseGrained) this.setModelPDB(true); +this.asc.setCurrentAtomSetNumber(modelNumber); +if (this.isCourseGrained) this.asc.setCurrentModelInfo("courseGrained", Boolean.TRUE); +}, "~N,~S"); +Clazz_defineMethod(c$, "checkNotPDB", +function(){ +var isPDB = (!this.isCourseGrained && (this.nRes == 0 || this.nUNK != this.nRes)); +this.checkNearAtoms = !isPDB; +this.setModelPDB(isPDB); +this.nUNK = this.nRes = 0; +this.currentGroup3 = null; +}); +Clazz_defineMethod(c$, "cryst1", +function(){ +var a = this.$cryst1 = this.getFloat(6, 9); +if (a == 1) a = NaN; +this.setUnitCell(a, this.getFloat(15, 9), this.getFloat(24, 9), this.getFloat(33, 7), this.getFloat(40, 7), this.getFloat(47, 7)); +this.addSpaceGroupName(JU.PT.parseTrimmedRange(this.line, 55, 66)); +}); +Clazz_defineMethod(c$, "addSpaceGroupName", +function(name){ +if (this.isbiomol) this.doConvertToFractional = false; +if (this.sgName == null || this.sgName.equals("unspecified!")) this.setSpaceGroupName(name); +this.fileSgName = this.sgName; +}, "~S"); +Clazz_defineMethod(c$, "getFloat", +function(ich, cch){ +return this.parseFloatRange(this.line, ich, ich + cch); +}, "~N,~N"); +Clazz_defineMethod(c$, "scale", +function(n){ +if (this.unitCellParams == null) return; +var pt = n * 4 + 2; +this.unitCellParams[0] = this.$cryst1; +this.setUnitCellItem(pt++, this.getFloat(10, 10)); +this.setUnitCellItem(pt++, this.getFloat(20, 10)); +this.setUnitCellItem(pt++, this.getFloat(30, 10)); +this.setUnitCellItem(pt++, this.getFloat(45, 10)); +if (this.isbiomol) this.doConvertToFractional = false; +}, "~N"); +Clazz_defineMethod(c$, "expdta", +function(){ +if (this.line.toUpperCase().indexOf("NMR") >= 0) this.asc.setInfo("isNMRdata", "true"); +}); +Clazz_defineMethod(c$, "formul", +function(){ +var groupName = this.parseTokenRange(this.line, 12, 15); +var formula = JU.PT.parseTrimmedRange(this.line, 19, 70); +var ichLeftParen = formula.indexOf('('); +if (ichLeftParen >= 0) { +var ichRightParen = formula.indexOf(')'); +if (ichRightParen < 0 || ichLeftParen >= ichRightParen || ichLeftParen + 1 == ichRightParen) return; +formula = JU.PT.parseTrimmedRange(formula, ichLeftParen + 1, ichRightParen); +}var htElementsInGroup = this.htFormul.get(groupName); +if (htElementsInGroup == null) this.htFormul.put(groupName, htElementsInGroup = new java.util.Hashtable()); +this.next[0] = 0; +var elementWithCount; +while ((elementWithCount = this.parseTokenNext(formula)) != null) { +if (elementWithCount.length < 2) continue; +var chFirst = elementWithCount.charAt(0); +var chSecond = elementWithCount.charAt(1); +if (J.adapter.smarter.Atom.isValidSymNoCase(chFirst, chSecond)) htElementsInGroup.put("" + chFirst + chSecond, Boolean.TRUE); + else if (J.adapter.smarter.Atom.isValidSym1(chFirst)) htElementsInGroup.put("" + chFirst, Boolean.TRUE); +} +}); +Clazz_defineMethod(c$, "het", +function(){ +if (this.line.length < 30) { +return; +}if (this.htHetero == null) { +this.htHetero = new java.util.Hashtable(); +}var groupName = this.parseTokenRange(this.line, 7, 10); +if (this.htHetero.containsKey(groupName)) { +return; +}var hetName = JU.PT.parseTrimmedRange(this.line, 30, 70); +this.htHetero.put(groupName, hetName); +}); +Clazz_defineMethod(c$, "hetnam", +function(){ +if (this.htHetero == null) { +this.htHetero = new java.util.Hashtable(); +}var groupName = this.parseTokenRange(this.line, 11, 14); +var hetName = JU.PT.parseTrimmedRange(this.line, 15, 70); +if (groupName == null) { +JU.Logger.error("ERROR: HETNAM record does not contain a group name: " + this.line); +return; +}var htName = this.htHetero.get(groupName); +if (htName != null) { +hetName = htName + hetName; +}this.htHetero.put(groupName, hetName); +this.appendLoadNote(groupName + " = " + hetName); +}); +Clazz_defineMethod(c$, "anisou", +function(){ +var data = Clazz_newFloatArray (8, 0); +data[6] = 1; +var serial = this.line.substring(6, 11).trim(); +if (!this.haveMappedSerials && this.asc.ac > 0) { +for (var i = this.asc.getAtomSetAtomIndex(this.asc.iSet); i < this.asc.ac; i++) { +var atomSerial = this.asc.atoms[i].atomSerial; +if (atomSerial != -2147483648) this.asc.atomSymbolicMap.put("" + atomSerial, this.asc.atoms[i]); +} +this.haveMappedSerials = true; +}var atom = this.asc.getAtomFromName(serial); +if (atom == null) { +return; +}for (var i = 28, pt = 0; i < 70; i += 7, pt++) data[pt] = this.parseFloatRange(this.line, i, i + 7); + +for (var i = 0; i < 6; i++) { +if (Float.isNaN(data[i])) { +JU.Logger.error("Bad ANISOU record: " + this.line); +return; +}data[i] /= 10000; +} +this.asc.setAnisoBorU(atom, data, 12); +}); +Clazz_defineMethod(c$, "site", +function(){ +if (this.htSites == null) { +this.htSites = new java.util.Hashtable(); +}var nResidues = this.parseIntRange(this.line, 15, 17); +var siteID = JU.PT.parseTrimmedRange(this.line, 11, 14); +var htSite = this.htSites.get(siteID); +if (htSite == null) { +htSite = new java.util.Hashtable(); +htSite.put("nResidues", Integer.$valueOf(nResidues)); +htSite.put("groups", ""); +this.htSites.put(siteID, htSite); +}var groups = htSite.get("groups"); +for (var i = 0; i < 4; i++) { +var pt = 18 + i * 11; +var resName = JU.PT.parseTrimmedRange(this.line, pt, pt + 3); +if (resName.length == 0) break; +var chainID = JU.PT.parseTrimmedRange(this.line, pt + 4, pt + 5); +var seq = JU.PT.parseTrimmedRange(this.line, pt + 5, pt + 9); +var iCode = JU.PT.parseTrimmedRange(this.line, pt + 9, pt + 10); +groups += (groups.length == 0 ? "" : ",") + "[" + resName + "]" + seq; +if (iCode.length > 0) groups += "^" + iCode; +if (chainID.length > 0) groups += ":" + chainID; +htSite.put("groups", groups); +} +}); +Clazz_defineMethod(c$, "remarkTls", +function(){ +var nGroups = 0; +var iGroup = 0; +var components = null; +var tlsGroups = null; +var tlsGroup = null; +var ranges = null; +var range = null; +var remark = this.line.substring(0, 11); +while (this.readHeader(true) != null && this.line.startsWith(remark)) { +try { +var tokens = JU.PT.getTokens(this.line.substring(10).$replace(':', ' ')); +if (tokens.length < 2) continue; +JU.Logger.info(this.line); +if (tokens[1].equalsIgnoreCase("GROUP")) { +tlsGroup = new java.util.Hashtable(); +ranges = new JU.Lst(); +tlsGroup.put("ranges", ranges); +tlsGroups.addLast(tlsGroup); +this.tlsGroupID = this.parseIntStr(tokens[tokens.length - 1]); +tlsGroup.put("id", Integer.$valueOf(this.tlsGroupID)); +} else if (tokens[0].equalsIgnoreCase("NUMBER")) { +if (tokens[2].equalsIgnoreCase("COMPONENTS")) { +} else { +nGroups = this.parseIntStr(tokens[tokens.length - 1]); +if (nGroups < 1) break; +if (this.vTlsModels == null) this.vTlsModels = new JU.Lst(); +tlsGroups = new JU.Lst(); +this.appendLoadNote(this.line.substring(11).trim()); +}} else if (tokens[0].equalsIgnoreCase("COMPONENTS")) { +components = this.line; +} else if (tokens[0].equalsIgnoreCase("RESIDUE")) { +range = new java.util.Hashtable(); +var chain1; +var chain2; +var res1; +var res2; +if (tokens.length == 6) { +chain1 = tokens[2].charAt(0); +chain2 = tokens[4].charAt(0); +res1 = this.parseIntStr(tokens[3]); +res2 = this.parseIntStr(tokens[5]); +} else { +var toC = components.indexOf(" C "); +var fromC = components.indexOf(" C ", toC + 4); +chain1 = this.line.charAt(fromC); +chain2 = this.line.charAt(toC); +res1 = this.parseIntRange(this.line, fromC + 1, toC); +res2 = this.parseIntStr(this.line.substring(toC + 1)); +}if (chain1 == chain2) { +range.put("chains", "" + chain1 + chain2); +if (res1 <= res2) { +range.put("residues", Clazz_newIntArray(-1, [res1, res2])); +ranges.addLast(range); +} else { +this.tlsAddError(" TLS group residues are not in order (range ignored)"); +}} else { +this.tlsAddError(" TLS group chains are different (range ignored)"); +}} else if (tokens[0].equalsIgnoreCase("SELECTION")) { +var chain = '\u0000'; +for (var i = 1; i < tokens.length; i++) { +if (tokens[i].toUpperCase().indexOf("CHAIN") >= 0) { +chain = tokens[++i].charAt(0); +continue; +}var resno = this.parseIntStr(tokens[i]); +if (resno == -2147483648) continue; +range = new java.util.Hashtable(); +range.put("residues", Clazz_newIntArray(-1, [resno, this.parseIntStr(tokens[++i])])); +if (chain != '\0') range.put("chains", "" + chain + chain); +ranges.addLast(range); +} +} else if (tokens[0].equalsIgnoreCase("ORIGIN")) { +var origin = new JU.P3(); +tlsGroup.put("origin", origin); +if (tokens.length == 8) { +origin.set(this.parseFloatStr(tokens[5]), this.parseFloatStr(tokens[6]), this.parseFloatStr(tokens[7])); +} else { +var n = this.line.length; +origin.set(this.parseFloatRange(this.line, n - 27, n - 18), this.parseFloatRange(this.line, n - 18, n - 9), this.parseFloatRange(this.line, n - 9, n)); +}if (Float.isNaN(origin.x) || Float.isNaN(origin.y) || Float.isNaN(origin.z)) { +origin.set(NaN, NaN, NaN); +this.tlsAddError("invalid origin: " + this.line); +}} else if (tokens[1].equalsIgnoreCase("TENSOR")) { +var tensorType = tokens[0].charAt(0); +var s = (this.readHeader(true).substring(10) + this.readHeader(true).substring(10) + this.readHeader(true).substring(10)).$replace(tensorType, ' ').$replace(':', ' '); +tokens = JU.PT.getTokens(s); +var data = Clazz_newFloatArray (3, 3, 0); +tlsGroup.put("t" + tensorType, data); +for (var i = 0; i < tokens.length; i++) { +var ti = (tokens[i].charAt(0)).charCodeAt(0) - 49; +var tj = (tokens[i].charAt(1)).charCodeAt(0) - 49; +data[ti][tj] = this.parseFloatStr(tokens[++i]); +if (ti < tj) data[tj][ti] = data[ti][tj]; +} +for (var i = 0; i < 3; i++) for (var j = 0; j < 3; j++) if (Float.isNaN(data[i][j])) this.tlsAddError("invalid tensor: " + JU.Escape.escapeFloatAA(data, false)); + + +if (tensorType == 'S' && ++iGroup == nGroups) { +JU.Logger.info(nGroups + " TLS groups read"); +this.readHeader(true); +break; +}}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(this.line + "\nError in TLS parser: "); +System.out.println(e.getMessage()); +tlsGroups = null; +break; +} else { +throw e; +} +} +} +if (tlsGroups != null) { +var tlsModel = new java.util.Hashtable(); +tlsModel.put("groupCount", Integer.$valueOf(nGroups)); +tlsModel.put("groups", tlsGroups); +this.vTlsModels.addLast(tlsModel); +}return (nGroups < 1); +}); +Clazz_defineMethod(c$, "handleTlsMissingModels", +function(){ +this.vTlsModels = null; +}); +Clazz_defineMethod(c$, "setTlsGroups", +function(iGroup, iModel, symmetry){ +JU.Logger.info("TLS model " + (iModel + 1) + " set " + (iGroup + 1)); +var tlsGroupInfo = this.vTlsModels.get(iGroup); +var groups = tlsGroupInfo.get("groups"); +var index0 = this.asc.getAtomSetAtomIndex(iModel); +var data = Clazz_newFloatArray (this.asc.getAtomSetAtomCount(iModel), 0); +var indexMax = index0 + data.length; +var atoms = this.asc.atoms; +var nGroups = groups.size(); +for (var i = 0; i < nGroups; i++) { +var group = groups.get(i); +var ranges = group.get("ranges"); +this.tlsGroupID = (group.get("id")).intValue(); +for (var j = ranges.size(); --j >= 0; ) { +var chains = ranges.get(j).get("chains"); +var residues = ranges.get(j).get("residues"); +var chain0 = 0 + (chains.charAt(0)).charCodeAt(0); +var chain1 = 0 + (chains.charAt(1)).charCodeAt(0); +var res0 = residues[0]; +var res1 = residues[1]; +var index1 = this.findAtomForRange(index0, indexMax, chain0, res0, false); +var index2 = (index1 >= 0 ? this.findAtomForRange(index1, indexMax, chain1, res1, false) : -1); +if (index2 < 0) { +JU.Logger.info("TLS processing terminated"); +return; +}JU.Logger.info("TLS ID=" + this.tlsGroupID + " model atom index range " + index1 + "-" + index2); +var isSameChain = (chain0 == chain1); +for (var iAtom = index0; iAtom < indexMax; iAtom++) { +var atom = atoms[iAtom]; +if (isSameChain ? atom.sequenceNumber >= res0 && atom.sequenceNumber <= res1 : atom.chainID > chain0 && atom.chainID < chain1 || atom.chainID == chain0 && atom.sequenceNumber >= res0 || atom.chainID == chain1 && atom.sequenceNumber <= res1) { +data[iAtom - index0] = this.tlsGroupID; +this.setTlsTensor(atom, group, symmetry); +}} +} +} +this.asc.setAtomProperties("tlsGroup", data, iModel, true); +this.asc.setModelInfoForSet("TLS", tlsGroupInfo, iModel); +this.asc.setTensors(); +}, "~N,~N,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "findAtomForRange", +function(atom1, atom2, chain, resno, isLast){ +var iAtom = this.findAtom(atom1, atom2, chain, resno, true); +return (isLast && iAtom >= 0 ? this.findAtom(iAtom, atom2, chain, resno, false) : iAtom); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "findAtom", +function(atom1, atom2, chain, resno, isTrue){ +var atoms = this.asc.atoms; +for (var i = atom1; i < atom2; i++) { +var atom = atoms[i]; +if ((atom.chainID == chain && atom.sequenceNumber == resno) == isTrue) return i; +} +if (isTrue) { +JU.Logger.warn("PdbReader findAtom chain=" + chain + " resno=" + resno + " not found"); +this.tlsAddError("atom not found: chain=" + chain + " resno=" + resno); +}return (isTrue ? -1 : atom2); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setTlsTensor", +function(atom, group, symmetry){ +var origin = group.get("origin"); +if (Float.isNaN(origin.x)) return; +var T = group.get("tT"); +var L = group.get("tL"); +var S = group.get("tS"); +if (T == null || L == null || S == null) return; +var x = ((atom.x - origin.x) * 0.017453292519943295); +var y = ((atom.y - origin.y) * 0.017453292519943295); +var z = ((atom.z - origin.z) * 0.017453292519943295); +var xx = x * x; +var yy = y * y; +var zz = z * z; +var xy = x * y; +var xz = x * z; +var yz = y * z; +this.dataT[0] = T[0][0]; +this.dataT[1] = T[1][1]; +this.dataT[2] = T[2][2]; +this.dataT[3] = T[0][1]; +this.dataT[4] = T[0][2]; +this.dataT[5] = T[1][2]; +this.dataT[6] = 12; +var anisou = Clazz_newFloatArray (8, 0); +var bresidual = (Float.isNaN(atom.bfactor) ? 0 : (atom.bfactor / 78.95683520871486)); +anisou[0] = this.dataT[0] + L[1][1] * zz + L[2][2] * yy - 2 * L[1][2] * yz + 2 * S[1][0] * z - 2 * S[2][0] * y; +anisou[1] = this.dataT[1] + L[0][0] * zz + L[2][2] * xx - 2 * L[2][0] * xz - 2 * S[0][1] * z + 2 * S[2][1] * x; +anisou[2] = this.dataT[2] + L[0][0] * yy + L[1][1] * xx - 2 * L[0][1] * xy - 2 * S[1][2] * x + 2 * S[0][2] * y; +anisou[3] = this.dataT[3] - L[2][2] * xy + L[1][2] * xz + L[2][0] * yz - L[0][1] * zz - S[0][0] * z + S[1][1] * z + S[2][0] * x - S[2][1] * y; +anisou[4] = this.dataT[4] - L[1][1] * xz + L[1][2] * xy - L[2][0] * yy + L[0][1] * yz + S[0][0] * y - S[2][2] * y + S[1][2] * z - S[1][0] * x; +anisou[5] = this.dataT[5] - L[0][0] * yz - L[1][2] * xx + L[2][0] * xy + L[0][1] * xz - S[1][1] * x + S[2][2] * x + S[0][1] * y - S[0][2] * z; +anisou[6] = 12; +anisou[7] = bresidual; +if (this.tlsU == null) this.tlsU = new java.util.Hashtable(); +this.tlsU.put(atom, anisou); +atom.addTensor(symmetry.getTensor(this.vwr, this.dataT).setType(null), "TLS-U", false); +}, "J.adapter.smarter.Atom,java.util.Map,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "tlsAddError", +function(error){ +if (this.sbTlsErrors == null) this.sbTlsErrors = new JU.SB(); +this.sbTlsErrors.append(this.fileName).appendC('\t').append("TLS group ").appendI(this.tlsGroupID).appendC('\t').append(error).appendC('\n'); +}, "~S"); +c$.fixRadius = Clazz_defineMethod(c$, "fixRadius", +function(r){ +return (r < 0.9 ? 1 : r); +}, "~N"); +Clazz_defineMethod(c$, "addConnection", +function(is){ +if (this.vConnect == null) { +this.connectLast = null; +this.vConnect = new JU.Lst(); +}if (this.connectLast != null) { +if (is[0] == this.connectLast[0] && is[1] == this.connectLast[1] && is[2] != 2048) { +this.connectLast[2]++; +return; +}}this.vConnect.addLast(this.connectLast = is); +}, "~A"); +Clazz_defineMethod(c$, "connectAllBad", +function(maxSerial){ +var firstAtom = this.connectNextAtomIndex; +for (var i = this.connectNextAtomSet; i < this.asc.atomSetCount; i++) { +var count = this.asc.getAtomSetAtomCount(i); +this.asc.setModelInfoForSet("PDB_CONECT_firstAtom_count_max", Clazz_newIntArray(-1, [firstAtom, count, maxSerial]), i); +if (this.vConnect != null) { +this.asc.setModelInfoForSet("PDB_CONECT_bonds", this.vConnect, i); +this.asc.setGlobalBoolean(3); +}firstAtom += count; +} +this.vConnect = null; +this.connectNextAtomSet = this.asc.iSet + 1; +this.connectNextAtomIndex = firstAtom; +}, "~N"); +Clazz_defineMethod(c$, "connectAll", +function(maxSerial, isConnectStateBug){ +var a = this.asc; +var index = a.iSet; +if (index < 0) return; +if (isConnectStateBug) { +this.connectAllBad(maxSerial); +return; +}a.setCurrentModelInfo("PDB_CONECT_firstAtom_count_max", Clazz_newIntArray(-1, [a.getAtomSetAtomIndex(index), a.getAtomSetAtomCount(index), maxSerial])); +if (this.vConnect == null) return; +var firstAtom = this.connectNextAtomIndex; +for (var i = a.atomSetCount; --i >= this.connectNextAtomSet; ) { +a.setModelInfoForSet("PDB_CONECT_bonds", this.vConnect, i); +a.setGlobalBoolean(3); +firstAtom += a.getAtomSetAtomCount(i); +} +this.vConnect = null; +this.connectNextAtomSet = index + 1; +this.connectNextAtomIndex = firstAtom; +}, "~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(null, "J.adapter.smarter.Structure", ["J.c.STR"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.structureType = null; +this.substructureType = null; +this.structureID = null; +this.strandID = null; +this.strandCount = 0; +this.startSequenceNumber = 0; +this.startChainID = 0; +this.startInsertionCode = '\0'; +this.endSequenceNumber = 0; +this.endChainID = 0; +this.endInsertionCode = '\0'; +this.atomStartEnd = null; +this.modelStartEnd = null; +this.bsAll = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "Structure", null, Cloneable); +Clazz_prepareFields (c$, function(){ +this.atomStartEnd = Clazz_newIntArray (2, 0); +this.modelStartEnd = Clazz_newIntArray(-1, [-1, -1]); +}); +Clazz_makeConstructor(c$, +function(modelIndex, structureType, substructureType, structureID, strandID, strandCount, bsAll){ +if (bsAll != null) { +this.modelStartEnd = Clazz_newIntArray(-1, [0, modelIndex]); +this.bsAll = bsAll; +return; +}this.structureType = structureType; +this.substructureType = substructureType; +if (structureID == null) return; +this.modelStartEnd[0] = this.modelStartEnd[1] = modelIndex; +this.structureID = structureID; +this.strandCount = strandCount; +this.strandID = strandID; +}, "~N,J.c.STR,J.c.STR,~S,~S,~N,~A"); +c$.getHelixType = Clazz_defineMethod(c$, "getHelixType", +function(type){ +switch (type) { +case 1: +return J.c.STR.HELIXALPHA; +case 3: +return J.c.STR.HELIXPI; +case 5: +return J.c.STR.HELIX310; +} +return J.c.STR.HELIX; +}, "~N"); +Clazz_defineMethod(c$, "set", +function(startChainID, startSequenceNumber, startInsertionCode, endChainID, endSequenceNumber, endInsertionCode, istart, iend){ +this.startChainID = startChainID; +this.startSequenceNumber = startSequenceNumber; +this.startInsertionCode = startInsertionCode; +this.endChainID = endChainID; +this.endSequenceNumber = endSequenceNumber; +this.endInsertionCode = endInsertionCode; +this.atomStartEnd[0] = istart; +this.atomStartEnd[1] = iend; +}, "~N,~N,~S,~N,~N,~S,~N,~N"); +Clazz_defineMethod(c$, "clone", +function(){ +var s = null; +try { +s = Clazz_superCall(this, J.adapter.smarter.Structure, "clone", []); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +} else { +throw e; +} +} +return s; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Group"], "JM.Monomer", ["JU.Measure", "$.P3", "$.Quat", "J.c.STR", "JM.BioResolver", "JU.Escape", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bioPolymer = null; +this.offsets = null; +this.monomerIndex = -1; +this.phi = NaN; +this.psi = NaN; +this.omega = NaN; +this.straightness = NaN; +this.mu = NaN; +this.theta = NaN; +this.backboneBlockVis = false; +Clazz_instantialize(this, arguments);}, JM, "Monomer", JM.Group); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JM.Monomer, []); +}); +c$.have = Clazz_defineMethod(c$, "have", +function(offsets, n){ +return (offsets[n] & 0xFF) != 0xFF; +}, "~A,~N"); +Clazz_defineMethod(c$, "set2", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, interestingAtomOffsets){ +this.setGroup(chain, group3, seqcode, firstAtomIndex, lastAtomIndex); +this.offsets = interestingAtomOffsets; +this.setLeadAtomIndex(); +return this; +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "setLeadAtomIndex", +function(){ +var offset = this.offsets[0] & 0xFF; +if (offset != 255) this.leadAtomIndex = this.firstAtomIndex + offset; +}); +Clazz_defineMethod(c$, "setBioPolymer", +function(polymer, index){ +this.bioPolymer = polymer; +this.monomerIndex = index; +}, "JM.BioPolymer,~N"); +Clazz_overrideMethod(c$, "getSelectedMonomerCount", +function(){ +return (this.bioPolymer == null ? 0 : this.bioPolymer.getSelectedMonomerCount()); +}); +Clazz_overrideMethod(c$, "getSelectedMonomerIndex", +function(){ +return (this.bioPolymer == null || !this.bioPolymer.isMonomerSelected(this.monomerIndex) ? -1 : this.monomerIndex); +}); +Clazz_overrideMethod(c$, "getBioPolymerLength", +function(){ +return (this.bioPolymer == null ? 0 : this.bioPolymer.monomerCount); +}); +Clazz_defineMethod(c$, "getMonomerIndex", +function(){ +return this.monomerIndex; +}); +Clazz_overrideMethod(c$, "getAtomIndex", +function(name, offset){ +if (this.bioPolymer != null) { +var groups = this.bioPolymer.monomers; +var ipt = this.monomerIndex + offset; +if (ipt >= 0 && ipt < groups.length) { +var m = groups[ipt]; +if (offset == 1 && !m.isConnectedPrevious()) return -1; +if ("\0".equals(name)) return m.leadAtomIndex; +var atoms = this.chain.model.ms.at; +for (var i = m.firstAtomIndex; i <= m.lastAtomIndex; i++) if (atoms[i] != null && (name == null || name.equalsIgnoreCase(atoms[i].getAtomName()))) return i; + +}}return -1; +}, "~S,~N"); +Clazz_defineMethod(c$, "getBioPolymerIndexInModel", +function(){ +return (this.bioPolymer == null ? -1 : this.bioPolymer.bioPolymerIndexInModel); +}); +c$.scanForOffsets = Clazz_defineMethod(c$, "scanForOffsets", +function(firstAtomIndex, specialAtomIndexes, interestingAtomIDs){ +var interestingCount = interestingAtomIDs.length; +var offsets = Clazz_newByteArray (interestingCount, 0); +for (var i = interestingCount; --i >= 0; ) { +var atomIndex; +var atomID = interestingAtomIDs[i]; +if (atomID < 0) { +atomIndex = specialAtomIndexes[~atomID]; +} else { +atomIndex = specialAtomIndexes[atomID]; +if (atomIndex < 0) return null; +}var offset; +if (atomIndex < 0) offset = 255; + else { +offset = atomIndex - firstAtomIndex; +if (offset < 0 || offset > 254) { +JU.Logger.warn("Monomer.scanForOffsets i=" + i + " atomID=" + atomID + " atomIndex:" + atomIndex + " firstAtomIndex:" + firstAtomIndex + " offset out of 0-254 range. Groups aren't organized correctly. Is this really a protein?: " + offset); +if (atomID < 0) { +offset = 255; +} else { +}}}offsets[i] = offset; +} +return offsets; +}, "~N,~A,~A"); +Clazz_overrideMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.NONE; +}); +Clazz_defineMethod(c$, "isHelix", +function(){ +return false; +}); +Clazz_defineMethod(c$, "isSheet", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "setStrucNo", +function(id){ +}, "~N"); +Clazz_defineMethod(c$, "getAtomFromOffsetIndex", +function(offsetIndex){ +if (offsetIndex > this.offsets.length) return null; +var offset = this.offsets[offsetIndex] & 0xFF; +return (offset == 255 ? null : this.chain.model.ms.at[this.firstAtomIndex + offset]); +}, "~N"); +Clazz_defineMethod(c$, "getSpecialAtom", +function(interestingIDs, specialAtomID){ +for (var i = interestingIDs.length; --i >= 0; ) { +var interestingID = interestingIDs[i]; +if (interestingID < 0) interestingID = -interestingID; +if (specialAtomID == interestingID) { +var offset = this.offsets[i] & 0xFF; +return (offset == 255 ? null : this.chain.model.ms.at[this.firstAtomIndex + offset]); +}} +return null; +}, "~A,~N"); +Clazz_defineMethod(c$, "getSpecialAtomPoint", +function(interestingIDs, specialAtomID){ +for (var i = interestingIDs.length; --i >= 0; ) { +var interestingID = interestingIDs[i]; +if (interestingID < 0) interestingID = -interestingID; +if (specialAtomID == interestingID) { +var offset = this.offsets[i] & 0xFF; +return (offset == 255 ? null : this.chain.model.ms.at[this.firstAtomIndex + offset]); +}} +return null; +}, "~A,~N"); +Clazz_overrideMethod(c$, "isLeadAtom", +function(atomIndex){ +return atomIndex == this.leadAtomIndex; +}, "~N"); +Clazz_overrideMethod(c$, "getLeadAtom", +function(){ +return this.getAtomFromOffsetIndex(0); +}); +Clazz_defineMethod(c$, "getWingAtom", +function(){ +return this.getAtomFromOffsetIndex(1); +}); +Clazz_defineMethod(c$, "getInitiatorAtom", +function(){ +return this.getLeadAtom(); +}); +Clazz_defineMethod(c$, "getTerminatorAtom", +function(){ +return this.getLeadAtom(); +}); +Clazz_defineMethod(c$, "findNearestAtomIndex", +function(x, y, closest, madBegin, madEnd){ +}, "~N,~N,~A,~N,~N"); +Clazz_defineMethod(c$, "getMyInfo", +function(ptTemp){ +var info = this.getGroupInfo(this.groupIndex, ptTemp); +info.put("chain", this.chain.getIDStr()); +var seqNum = this.getResno(); +if (seqNum > 0) info.put("sequenceNumber", Integer.$valueOf(seqNum)); +var insCode = this.getInsertionCode(); +if (insCode.charCodeAt(0) != 0) info.put("insertionCode", "" + insCode); +var f = this.getGroupParameter(1111490569); +if (!Float.isNaN(f)) info.put("phi", Float.$valueOf(f)); +f = this.getGroupParameter(1111490570); +if (!Float.isNaN(f)) info.put("psi", Float.$valueOf(f)); +f = this.getGroupParameter(1111490565); +if (!Float.isNaN(f)) info.put("mu", Float.$valueOf(f)); +f = this.getGroupParameter(1111490576); +if (!Float.isNaN(f)) info.put("theta", Float.$valueOf(f)); +var structure = this.getStructure(); +if (Clazz_instanceOf(structure,"JM.ProteinStructure")) { +info.put("structureId", Integer.$valueOf((structure).strucNo)); +info.put("structureType", (structure).type.getBioStructureTypeName(false)); +}info.put("shapeVisibilityFlags", Integer.$valueOf(this.shapeVisibilityFlags)); +return info; +}, "JU.P3"); +Clazz_overrideMethod(c$, "getStructureId", +function(){ +var structure = this.getStructure(); +return (Clazz_instanceOf(structure,"JM.ProteinStructure") ? (structure).type.getBioStructureTypeName(false) : ""); +}); +Clazz_defineMethod(c$, "updateOffsetsForAlternativeLocations", +function(atoms, bsSelected){ +var updated = false; +for (var offsetIndex = this.offsets.length; --offsetIndex >= 0; ) { +var offset = this.offsets[offsetIndex] & 0xFF; +if (offset == 255) continue; +var iThis = this.firstAtomIndex + offset; +var atom = atoms[iThis]; +var thisID = atom.atomID; +if (atom.altloc.charCodeAt(0) == 0) continue; +var nScan = this.lastAtomIndex - this.firstAtomIndex; +for (var i = 1; i <= nScan; i++) { +var iNew = iThis + i; +if (iNew > this.lastAtomIndex) iNew -= nScan + 1; +var offsetNew = iNew - this.firstAtomIndex; +if (offsetNew < 0 || offsetNew > 255 || iNew == iThis || !bsSelected.get(iNew)) continue; +var atomID = atoms[iNew].atomID; +if (atomID != thisID || atomID == 0 && !atoms[iNew].getAtomName().equals(atom.getAtomName())) continue; +this.offsets[offsetIndex] = offsetNew; +atoms[iNew].nBackbonesDisplayed = atom.nBackbonesDisplayed; +updated = true; +break; +} +} +this.setLeadAtomIndex(); +return updated; +}, "~A,JU.BS"); +Clazz_defineMethod(c$, "getMonomerSequenceAtoms", +function(bsInclude, bsResult){ +this.setAtomBits(bsResult); +bsResult.and(bsInclude); +}, "JU.BS,JU.BS"); +c$.checkOptional = Clazz_defineMethod(c$, "checkOptional", +function(offsets, atom, firstAtomIndex, index){ +if (JM.Monomer.have(offsets, atom)) return true; +if (index < 0) return false; +offsets[atom] = (index - firstAtomIndex); +return true; +}, "~A,~N,~N,~N"); +Clazz_defineMethod(c$, "getQuaternionFrameCenter", +function(qtype){ +return null; +}, "~S"); +Clazz_defineMethod(c$, "getHelixData2", +function(tokType, qType, mStep){ +if (this.monomerIndex < 0) return null; +var iPrev = this.monomerIndex - mStep; +var prev = (mStep < 1 || this.monomerIndex <= 0 ? null : this.bioPolymer.monomers[iPrev]); +var q2 = this.getQuaternion(qType); +var q1 = (mStep < 1 ? JU.Quat.getQuaternionFrameV(JV.JC.axisX, JV.JC.axisY, JV.JC.axisZ, false) : prev == null ? null : prev.getQuaternion(qType)); +if (q1 == null || q2 == null) return Clazz_superCall(this, JM.Monomer, "getHelixData", [tokType, qType, mStep]); +var a = (mStep < 1 ? JU.P3.new3(0, 0, 0) : prev.getQuaternionFrameCenter(qType)); +var b = this.getQuaternionFrameCenter(qType); +return (a == null || b == null ? this.getHelixData(tokType, qType, mStep) : JU.Escape.escapeHelical((tokType == 135176 ? "helixaxis" + this.getUniqueID() : null), tokType, a, b, JU.Measure.computeHelicalAxis(a, b, q2.div(q1)))); +}, "~N,~S,~N"); +Clazz_defineMethod(c$, "getUniqueID", +function(){ +var cid = this.chain.chainID; +var a = this.getLeadAtom(); +var id = (a == null ? "" : "_" + a.mi) + "_" + this.getResno() + (cid == 0 ? "" : "_" + cid); +var aid = (a == null ? '\0' : this.getLeadAtom().altloc); +if (aid != '\0') id += "_" + aid; +return id; +}); +Clazz_overrideMethod(c$, "isCrossLinked", +function(g){ +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) if (this.getCrossLinkGroup(i, null, g, true, true, false)) return true; + +return false; +}, "JM.Group"); +Clazz_overrideMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +var isNotCheck = (vReturn == null); +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) if (this.getCrossLinkGroup(i, vReturn, null, crosslinkCovalent, crosslinkHBond, isNotCheck) && isNotCheck) return true; + +return !isNotCheck && vReturn.size() > 0; +}, "JU.Lst,~B,~B"); +Clazz_defineMethod(c$, "getCrossLinkGroup", +function(i, vReturn, group, crosslinkCovalent, crosslinkHBond, isNotCheck){ +var atom = this.chain.model.ms.at[i]; +var bonds = atom.bonds; +var ibp = this.getBioPolymerIndexInModel(); +if (ibp < 0 || bonds == null) return false; +var haveCrossLink = false; +var checkPrevious = (!isNotCheck && vReturn == null && group == null); +for (var j = 0; j < bonds.length; j++) { +var b = bonds[j]; +if (b.isCovalent() ? !crosslinkCovalent : !crosslinkHBond) continue; +var a = b.getOtherAtom(atom); +var g = a.group; +if (group != null && g !== group) continue; +var iPolymer = g.getBioPolymerIndexInModel(); +var igroup = g.getMonomerIndex(); +if (checkPrevious) { +if (iPolymer == ibp && igroup == this.monomerIndex - 1) return true; +} else if (iPolymer >= 0 && igroup >= 0 && (iPolymer != ibp || igroup < this.monomerIndex - 1 || igroup > this.monomerIndex + 1)) { +haveCrossLink = true; +if (group != null || vReturn == null) break; +vReturn.addLast(Integer.$valueOf(i)); +vReturn.addLast(Integer.$valueOf(a.i)); +vReturn.addLast(Integer.$valueOf(g.leadAtomIndex)); +}} +return haveCrossLink; +}, "~N,JU.Lst,JM.Group,~B,~B,~B"); +Clazz_defineMethod(c$, "isConnectedPrevious", +function(){ +return true; +}); +Clazz_defineMethod(c$, "setGroupParameter", +function(tok, f){ +switch (tok) { +case 1111490569: +this.phi = f; +break; +case 1111490570: +this.psi = f; +break; +case 1111490568: +this.omega = f; +break; +case 1111490565: +this.mu = f; +break; +case 1111490576: +this.theta = f; +break; +case 1111490574: +this.straightness = f; +break; +} +}, "~N,~N"); +Clazz_overrideMethod(c$, "getGroupParameter", +function(tok){ +if (this.bioPolymer == null) return 0; +if (!this.bioPolymer.haveParameters) this.bioPolymer.calcParameters(); +switch (tok) { +case 1094713361: +return 1; +case 1111490568: +return this.omega; +case 1111490569: +return this.phi; +case 1111490570: +return this.psi; +case 1111490565: +return this.mu; +case 1111490576: +return this.theta; +case 1111490574: +return this.straightness; +} +return NaN; +}, "~N"); +Clazz_overrideMethod(c$, "getGroup1", +function(){ +return (this.groupID < JM.BioResolver.predefinedGroup1Names.length ? JM.BioResolver.predefinedGroup1Names[this.groupID] : this.group1.charCodeAt(0) > 1 ? this.group1 : this.group1.charCodeAt(0) == 1 ? '?' : (this.group1 = this.getGroup1b())); +}); +Clazz_defineMethod(c$, "getGroup1b", +function(){ +return '?'; +}); +Clazz_overrideMethod(c$, "setGroupID", +function(group3){ +this.groupID = JM.BioResolver.getGroupIdFor(group3); +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getGroup3() + "-" + this.getSeqcodeString() + " " + this.getStructure() + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Monomer"], "JM.AlphaMonomer", ["JU.Quat", "$.V3", "J.c.STR", "JM.Helix", "$.Sheet", "$.Turn"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.proteinStructure = null; +this.nitrogenHydrogenPoint = null; +Clazz_instantialize(this, arguments);}, JM, "AlphaMonomer", JM.Monomer); +Clazz_overrideConstructor(c$, +function(){ +}); +Clazz_overrideMethod(c$, "isProtein", +function(){ +return true; +}); +c$.validateAndAllocateA = Clazz_defineMethod(c$, "validateAndAllocateA", +function(chain, group3, seqcode, firstIndex, lastIndex, specialAtomIndexes){ +return (firstIndex != lastIndex || specialAtomIndexes[2] != firstIndex ? null : new JM.AlphaMonomer().set2(chain, group3, seqcode, firstIndex, lastIndex, JM.AlphaMonomer.alphaOffsets)); +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "isAlphaMonomer", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "getStructure", +function(){ +return this.proteinStructure; +}); +Clazz_defineMethod(c$, "setStructure", +function(ps){ +if ((this.proteinStructure = ps) == null) this.nitrogenHydrogenPoint = null; +}, "JM.ProteinStructure"); +Clazz_overrideMethod(c$, "setStrucNo", +function(n){ +if (this.proteinStructure != null) this.proteinStructure.strucNo = n; +}, "~N"); +Clazz_overrideMethod(c$, "getProteinStructureType", +function(){ +return this.proteinStructure == null ? J.c.STR.NONE : this.proteinStructure.type; +}); +Clazz_overrideMethod(c$, "getProteinStructureSubType", +function(){ +return this.proteinStructure == null ? J.c.STR.NONE : this.proteinStructure.subtype; +}); +Clazz_overrideMethod(c$, "getStrucNo", +function(){ +return this.proteinStructure != null ? this.proteinStructure.strucNo : 0; +}); +Clazz_overrideMethod(c$, "isHelix", +function(){ +return this.proteinStructure != null && this.proteinStructure.type === J.c.STR.HELIX; +}); +Clazz_overrideMethod(c$, "isSheet", +function(){ +return this.proteinStructure != null && this.proteinStructure.type === J.c.STR.SHEET; +}); +Clazz_overrideMethod(c$, "setProteinStructureType", +function(type, monomerIndexCurrent){ +if (this.proteinStructure != null) this.proteinStructure.removeMonomer(this.monomerIndex); +if (monomerIndexCurrent < 0 || monomerIndexCurrent > 0 && this.monomerIndex == 0) { +switch (type) { +case J.c.STR.HELIX: +case J.c.STR.HELIXALPHA: +case J.c.STR.HELIX310: +case J.c.STR.HELIXPI: +this.setStructure( new JM.Helix(this.bioPolymer, this.monomerIndex, 1, type)); +break; +case J.c.STR.SHEET: +this.setStructure( new JM.Sheet(this.bioPolymer, this.monomerIndex, 1, type)); +break; +case J.c.STR.TURN: +this.setStructure( new JM.Turn(this.bioPolymer, this.monomerIndex, 1)); +break; +case J.c.STR.NONE: +this.setStructure(null); +} +} else { +this.setStructure(this.bioPolymer.getProteinStructure(monomerIndexCurrent)); +if (this.proteinStructure != null) this.proteinStructure.addMonomer(this.monomerIndex); +}return this.monomerIndex; +}, "J.c.STR,~N"); +Clazz_defineMethod(c$, "getAtom", +function(specialAtomID){ +return (specialAtomID == 2 ? this.getLeadAtom() : null); +}, "~N"); +Clazz_defineMethod(c$, "getAtomPoint", +function(specialAtomID){ +return (specialAtomID == 2 ? this.getLeadAtom() : null); +}, "~N"); +Clazz_overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +var atom1 = this.getLeadAtom(); +var atom2 = possiblyPreviousMonomer.getLeadAtom(); +return atom1.isBonded(atom2) || atom1.distance(atom2) <= 4.2; +}, "JM.Monomer"); +Clazz_overrideMethod(c$, "getQuaternionFrameCenter", +function(qType){ +return this.getQuaternionFrameCenterAlpha(qType); +}, "~S"); +Clazz_overrideMethod(c$, "isWithinStructure", +function(type){ +return (this.proteinStructure != null && this.proteinStructure.type === type && this.proteinStructure.isWithin(this.monomerIndex)); +}, "J.c.STR"); +Clazz_defineMethod(c$, "getQuaternionFrameCenterAlpha", +function(qType){ +switch ((qType).charCodeAt(0)) { +case 98: +case 99: +case 67: +case 120: +return this.getLeadAtom(); +default: +case 97: +case 110: +case 112: +case 80: +case 113: +return null; +} +}, "~S"); +Clazz_overrideMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return this.getHelixData2(tokType, qType, mStep); +}, "~N,~S,~N"); +Clazz_overrideMethod(c$, "getQuaternion", +function(qType){ +return this.getQuaternionAlpha(qType); +}, "~S"); +Clazz_defineMethod(c$, "getQuaternionAlpha", +function(qType){ +if (this.monomerIndex < 0) return null; +var vA = new JU.V3(); +var vB = new JU.V3(); +var vC = null; +switch ((qType).charCodeAt(0)) { +default: +case 97: +case 110: +case 112: +case 113: +return null; +case 98: +case 99: +case 120: +if (this.monomerIndex == 0 || this.monomerIndex == this.bioPolymer.monomerCount - 1) return null; +var ptCa = this.getLeadAtom(); +var ptCaNext = this.bioPolymer.getLeadPoint(this.monomerIndex + 1); +var ptCaPrev = this.bioPolymer.getLeadPoint(this.monomerIndex - 1); +vA.sub2(ptCaNext, ptCa); +vB.sub2(ptCaPrev, ptCa); +break; +} +return JU.Quat.getQuaternionFrameV(vA, vB, vC, false); +}, "~S"); +c$.alphaOffsets = Clazz_newByteArray(-1, [0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Structure"], "JM.ProteinStructure", ["java.util.Hashtable", "JU.P3", "$.V3", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.type = null; +this.subtype = null; +this.structureID = null; +this.strucNo = 0; +this.serialID = null; +this.strandCount = 1; +this.id = 0; +this.nRes = 0; +this.apolymer = null; +this.monomerIndexFirst = 0; +this.monomerIndexLast = 0; +this.axisA = null; +this.axisB = null; +this.axisUnitVector = null; +this.vectorProjection = null; +this.segments = null; +this.resMap = null; +Clazz_instantialize(this, arguments);}, JM, "ProteinStructure", null, JM.Structure); +Clazz_makeConstructor(c$, +function(){ +this.incrementID(); +}); +Clazz_defineMethod(c$, "incrementID", +function(){ +this.id = ++JM.ProteinStructure.ids; +}); +Clazz_defineMethod(c$, "setupPS", +function(apolymer, type, monomerIndex, monomerCount){ +this.strucNo = ++JM.ProteinStructure.globalStrucNo; +this.apolymer = apolymer; +this.type = type; +this.vectorProjection = new JU.V3(); +this.monomerIndexFirst = monomerIndex; +this.addMonomer(monomerIndex + monomerCount - 1); +if (JU.Logger.debugging) JU.Logger.info("Creating ProteinStructure " + this.strucNo + " " + type.getBioStructureTypeName(false) + " from " + apolymer.monomers[this.monomerIndexFirst] + " through " + apolymer.monomers[this.monomerIndexLast] + " in polymer " + apolymer); +}, "JM.AlphaPolymer,J.c.STR,~N,~N"); +Clazz_defineMethod(c$, "addMonomer", +function(index){ +this.resMap = null; +this.resetAxes(); +this.monomerIndexFirst = Math.min(this.monomerIndexFirst, index); +this.monomerIndexLast = Math.max(this.monomerIndexLast, index); +this.nRes = this.monomerIndexLast - this.monomerIndexFirst + 1; +}, "~N"); +Clazz_defineMethod(c$, "removeMonomer", +function(index){ +this.resMap = null; +this.resetAxes(); +if (index > this.monomerIndexLast || index < this.monomerIndexFirst) return; +if (index == this.monomerIndexFirst) { +this.monomerIndexFirst++; +this.nRes--; +} else if (index == this.monomerIndexLast) { +this.monomerIndexLast--; +this.nRes--; +} else { +var n = this.monomerIndexLast - index; +this.monomerIndexLast = index - 1; +this.nRes = index - this.monomerIndexFirst; +var monomers = this.apolymer.monomers; +var type = monomers[++index].getProteinStructureType(); +var mLast = -1; +for (var i = 0, pt = index; i < n; i++, pt++) { +(monomers[pt]).setStructure(null); +mLast = monomers[pt].setProteinStructureType(type, mLast); +} +}}, "~N"); +Clazz_defineMethod(c$, "calcAxis", +function(){ +}); +Clazz_defineMethod(c$, "isWithin", +function(monomerIndex){ +return (monomerIndex > this.monomerIndexFirst && monomerIndex < this.monomerIndexLast); +}, "~N"); +Clazz_defineMethod(c$, "getIndex", +function(monomer){ +if (this.resMap == null) { +this.resMap = new java.util.Hashtable(); +for (var i = this.nRes; --i >= 0; ) this.resMap.put(this.apolymer.monomers[this.monomerIndexFirst + i], Integer.$valueOf(i)); + +}var ii = this.resMap.get(monomer); +return (ii == null ? -1 : ii.intValue()); +}, "JM.Monomer"); +Clazz_defineMethod(c$, "getSegments", +function(){ +if (this.segments == null) this.calcSegments(); +return this.segments; +}); +Clazz_defineMethod(c$, "getStructureMidPoint", +function(index){ +if (this.segments == null) this.calcSegments(); +return this.segments[index]; +}, "~N"); +Clazz_defineMethod(c$, "calcSegments", +function(){ +if (this.segments != null) return; +this.calcAxis(); +this.segments = new Array(this.nRes + 1); +this.segments[this.nRes] = this.axisB; +this.segments[0] = this.axisA; +var axis = JU.V3.newV(this.axisUnitVector); +axis.scale(this.axisB.distance(this.axisA) / this.nRes); +for (var i = 1; i < this.nRes; i++) { +var point = this.segments[i] = new JU.P3(); +point.add2(this.segments[i - 1], axis); +} +}); +Clazz_defineMethod(c$, "getAxisStartPoint", +function(){ +this.calcAxis(); +return this.axisA; +}); +Clazz_defineMethod(c$, "getAxisEndPoint", +function(){ +this.calcAxis(); +return this.axisB; +}); +Clazz_defineMethod(c$, "resetAxes", +function(){ +this.axisA = null; +this.segments = null; +}); +Clazz_overrideMethod(c$, "setAtomBits", +function(bs){ +var ms = this.apolymer.monomers; +for (var i = this.monomerIndexFirst; i <= this.monomerIndexLast; i++) ms[i].setAtomBits(bs); + +}, "JU.BS"); +Clazz_overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +var ms = this.apolymer.monomers; +for (var i = this.monomerIndexFirst; i <= this.monomerIndexLast; i++) ms[i].setAtomBitsAndClear(bs, bsOut); + +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "findMonomer", +function(bsAtoms, isFirst){ +var ms = this.apolymer.monomers; +if (this.monomerIndexFirst < 0) return null; +if (isFirst) { +for (var i = this.monomerIndexFirst; i <= this.monomerIndexLast; i++) if (bsAtoms == null || bsAtoms.get(ms[i].leadAtomIndex)) return ms[i]; + +} else { +for (var i = this.monomerIndexLast; i >= this.monomerIndexFirst; --i) if (bsAtoms == null || bsAtoms.get(ms[i].leadAtomIndex)) return ms[i]; + +}return null; +}, "JU.BS,~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.id + " " + this.type + (this.subtype == null ? "" : " " + this.subtype) + " (" + this.monomerIndexFirst + "-" + this.monomerIndexLast + ")]"; +}); +c$.ids = 0; +c$.globalStrucNo = 1000; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.ProteinStructure"], "JM.Helix", ["JU.Measure", "$.P3", "$.V3", "J.c.STR"], function(){ +var c$ = Clazz_declareType(JM, "Helix", JM.ProteinStructure); +Clazz_makeConstructor(c$, +function(apolymer, monomerIndex, monomerCount, subtype){ +Clazz_superConstructor (this, JM.Helix, []); +this.setupPS(apolymer, J.c.STR.HELIX, monomerIndex, monomerCount); +this.subtype = subtype; +}, "JM.AlphaPolymer,~N,~N,J.c.STR"); +Clazz_overrideMethod(c$, "calcAxis", +function(){ +if (this.axisA != null) return; +var points = new Array(this.nRes + 1); +for (var i = 0; i <= this.nRes; i++) this.apolymer.getLeadMidPoint(this.monomerIndexFirst + i, points[i] = new JU.P3()); + +this.axisA = new JU.P3(); +this.axisUnitVector = new JU.V3(); +JU.Measure.calcBestAxisThroughPoints(points, points.length, this.axisA, this.axisUnitVector, this.vectorProjection, 4); +this.axisB = JU.P3.newP(points[this.nRes]); +JU.Measure.projectOntoAxis(this.axisB, this.axisA, this.axisUnitVector, this.vectorProjection); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.ProteinStructure"], "JM.Sheet", ["JU.Measure", "$.P3", "$.V3", "J.c.STR"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.widthUnitVector = null; +this.heightUnitVector = null; +Clazz_instantialize(this, arguments);}, JM, "Sheet", JM.ProteinStructure); +Clazz_makeConstructor(c$, +function(apolymer, monomerIndex, monomerCount, subtype){ +Clazz_superConstructor (this, JM.Sheet, []); +this.incrementID(); +this.setupPS(apolymer, J.c.STR.SHEET, monomerIndex, monomerCount); +this.subtype = subtype; +}, "JM.AlphaPolymer,~N,~N,J.c.STR"); +Clazz_overrideMethod(c$, "calcAxis", +function(){ +if (this.axisA != null) return; +if (this.nRes == 2) { +this.axisA = this.apolymer.getLeadPoint(this.monomerIndexFirst); +this.axisB = this.apolymer.getLeadPoint(this.monomerIndexFirst + 1); +} else { +this.axisA = new JU.P3(); +this.apolymer.getLeadMidPoint(this.monomerIndexFirst + 1, this.axisA); +this.axisB = new JU.P3(); +this.apolymer.getLeadMidPoint(this.monomerIndexFirst + this.nRes - 1, this.axisB); +}this.axisUnitVector = new JU.V3(); +this.axisUnitVector.sub2(this.axisB, this.axisA); +this.axisUnitVector.normalize(); +var tempA = new JU.P3(); +this.apolymer.getLeadMidPoint(this.monomerIndexFirst, tempA); +if (this.notHelixOrSheet(this.monomerIndexFirst - 1)) JU.Measure.projectOntoAxis(tempA, this.axisA, this.axisUnitVector, this.vectorProjection); +var tempB = new JU.P3(); +this.apolymer.getLeadMidPoint(this.monomerIndexFirst + this.nRes, tempB); +if (this.notHelixOrSheet(this.monomerIndexFirst + this.nRes)) JU.Measure.projectOntoAxis(tempB, this.axisA, this.axisUnitVector, this.vectorProjection); +this.axisA = tempA; +this.axisB = tempB; +}); +Clazz_defineMethod(c$, "notHelixOrSheet", +function(i){ +return (i < 0 || i >= this.apolymer.monomerCount || !this.apolymer.monomers[i].isHelix() && !this.apolymer.monomers[i].isSheet()); +}, "~N"); +Clazz_defineMethod(c$, "calcSheetUnitVectors", +function(){ +if (!(Clazz_instanceOf(this.apolymer,"JM.AminoPolymer"))) return; +if (this.widthUnitVector == null) { +var vectorCO = new JU.V3(); +var vectorCOSum = new JU.V3(); +var amino = this.apolymer.monomers[this.monomerIndexFirst]; +vectorCOSum.sub2(amino.getCarbonylOxygenAtom(), amino.getCarbonylCarbonAtom()); +for (var i = this.nRes; --i > this.monomerIndexFirst; ) { +amino = this.apolymer.monomers[i]; +vectorCO.sub2(amino.getCarbonylOxygenAtom(), amino.getCarbonylCarbonAtom()); +if (vectorCOSum.angle(vectorCO) < 1.5707964) vectorCOSum.add(vectorCO); + else vectorCOSum.sub(vectorCO); +} +this.heightUnitVector = vectorCO; +this.heightUnitVector.cross(this.axisUnitVector, vectorCOSum); +this.heightUnitVector.normalize(); +this.widthUnitVector = vectorCOSum; +this.widthUnitVector.cross(this.axisUnitVector, this.heightUnitVector); +}}); +Clazz_defineMethod(c$, "setBox", +function(w, h, pt, vW, vH, ptC, scale){ +if (this.heightUnitVector == null) this.calcSheetUnitVectors(); +vW.setT(this.widthUnitVector); +vW.scale(scale * w); +vH.setT(this.heightUnitVector); +vH.scale(scale * h); +ptC.ave(vW, vH); +ptC.sub2(pt, ptC); +}, "~N,~N,JU.P3,JU.V3,JU.V3,JU.P3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.ProteinStructure"], "JM.Turn", ["J.c.STR"], function(){ +var c$ = Clazz_declareType(JM, "Turn", JM.ProteinStructure); +Clazz_makeConstructor(c$, +function(apolymer, monomerIndex, monomerCount){ +Clazz_superConstructor (this, JM.Turn, []); +this.setupPS(apolymer, J.c.STR.TURN, monomerIndex, monomerCount); +this.subtype = J.c.STR.TURN; +}, "JM.AlphaPolymer,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Structure", "JU.V3"], "JM.BioPolymer", ["JU.BS", "$.P3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.model = null; +this.monomers = null; +this.hasStructure = false; +this.leadMidpoints = null; +this.leadPoints = null; +this.controlPoints = null; +this.wingVectors = null; +this.leadAtomIndices = null; +this.type = 0; +this.bioPolymerIndexInModel = 0; +this.monomerCount = 0; +this.cyclicFlag = 0; +this.invalidLead = false; +this.invalidControl = false; +this.sheetSmoothing = 0; +this.hasWingPoints = false; +this.reversed = null; +this.twistedSheets = false; +this.unitVectorX = null; +this.selectedMonomerCount = 0; +this.bsSelectedMonomers = null; +this.haveParameters = false; +Clazz_instantialize(this, arguments);}, JM, "BioPolymer", null, JM.Structure); +Clazz_prepareFields (c$, function(){ +this.unitVectorX = JU.V3.new3(1, 0, 0); +}); +Clazz_makeConstructor(c$, +function(monomers, hasStructure){ +this.monomers = monomers; +this.hasStructure = hasStructure; +this.monomerCount = monomers.length; +for (var i = this.monomerCount; --i >= 0; ) monomers[i].setBioPolymer(this, i); + +this.model = monomers[0].getModel(); +}, "~A,~B"); +Clazz_overrideMethod(c$, "setAtomBits", +function(bs){ +this.getRange(bs, true); +}, "JU.BS"); +Clazz_overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +for (var i = this.monomerCount; --i >= 0; ) this.monomers[i].setAtomBitsAndClear(bs, bsOut); + +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getRange", +function(bs, isMutated){ +if (this.monomerCount == 0) return; +if (isMutated) { +for (var i = this.monomerCount; --i >= 0; ) this.monomers[i].setAtomBits(bs); + +} else { +bs.setBits(this.monomers[0].firstAtomIndex, this.monomers[this.monomerCount - 1].lastAtomIndex + 1); +}}, "JU.BS,~B"); +Clazz_defineMethod(c$, "clearStructures", +function(){ +}); +Clazz_defineMethod(c$, "getLeadAtomIndices", +function(){ +if (this.leadAtomIndices == null) { +this.leadAtomIndices = Clazz_newIntArray (this.monomerCount, 0); +this.invalidLead = true; +}if (this.invalidLead) { +for (var i = this.monomerCount; --i >= 0; ) this.leadAtomIndices[i] = this.monomers[i].leadAtomIndex; + +this.invalidLead = false; +}return this.leadAtomIndices; +}); +Clazz_defineMethod(c$, "getIndex", +function(chainID, seqcode, istart, iend){ +var i; +for (i = this.monomerCount; --i >= 0; ) { +var m = this.monomers[i]; +if (m.chain.chainID == chainID && m.seqcode == seqcode && (istart < 0 || istart == m.firstAtomIndex || iend == m.lastAtomIndex)) break; +} +return i; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getLeadPoint", +function(monomerIndex){ +return this.monomers[monomerIndex].getLeadAtom(); +}, "~N"); +Clazz_defineMethod(c$, "getInitiatorPoint", +function(){ +return this.monomers[0].getInitiatorAtom(); +}); +Clazz_defineMethod(c$, "getTerminatorPoint", +function(){ +return this.monomers[this.monomerCount - 1].getTerminatorAtom(); +}); +Clazz_defineMethod(c$, "getLeadMidPoint", +function(i, midPoint){ +if (i == this.monomerCount) { +--i; +} else if (i > 0) { +midPoint.ave(this.getLeadPoint(i), this.getLeadPoint(i - 1)); +return; +}midPoint.setT(this.getLeadPoint(i)); +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "getWingPoint", +function(polymerIndex){ +return this.monomers[polymerIndex].getWingAtom(); +}, "~N"); +Clazz_defineMethod(c$, "setConformation", +function(bsSelected){ +var atoms = this.model.ms.at; +var updated = false; +for (var i = this.monomerCount; --i >= 0; ) if (this.monomers[i].updateOffsetsForAlternativeLocations(atoms, bsSelected)) updated = true; + +if (updated) { +this.recalculateLeadMidpointsAndWingVectors(); +for (var i = 9; i < 16; i++) { +var s = this.model.ms.vwr.shm.shapes[i]; +if (s == null) continue; +for (var b = s.bioShapes.length; --b >= 0; ) { +var bi = s.bioShapes[b]; +if (bi.bioPolymer === this) bi.falsifyMesh(); +} +} +}}, "JU.BS"); +Clazz_defineMethod(c$, "recalculateLeadMidpointsAndWingVectors", +function(){ +this.invalidLead = this.invalidControl = true; +this.getLeadAtomIndices(); +this.resetHydrogenPoints(); +this.calcLeadMidpointsAndWingVectors(); +}); +Clazz_defineMethod(c$, "resetHydrogenPoints", +function(){ +}); +Clazz_defineMethod(c$, "getLeadMidpoints", +function(){ +if (this.leadMidpoints == null) this.calcLeadMidpointsAndWingVectors(); +return this.leadMidpoints; +}); +Clazz_defineMethod(c$, "getLeadPoints", +function(){ +if (this.leadPoints == null) this.calcLeadMidpointsAndWingVectors(); +return this.leadPoints; +}); +Clazz_defineMethod(c$, "getControlPoints", +function(isTraceAlpha, sheetSmoothing, invalidate){ +if (invalidate) this.invalidControl = true; +return (!isTraceAlpha ? this.leadMidpoints : sheetSmoothing == 0 ? this.leadPoints : this.getControlPoints2(sheetSmoothing)); +}, "~B,~N,~B"); +Clazz_defineMethod(c$, "getControlPoints2", +function(sheetSmoothing){ +if (!this.invalidControl && sheetSmoothing == this.sheetSmoothing) return this.controlPoints; +this.getLeadPoints(); +var v = new JU.V3(); +if (this.controlPoints == null) this.controlPoints = new Array(this.monomerCount + 1); +if (!Float.isNaN(sheetSmoothing)) this.sheetSmoothing = sheetSmoothing; +for (var i = 0; i < this.monomerCount; i++) this.controlPoints[i] = this.getControlPoint(i, v); + +this.controlPoints[this.monomerCount] = this.getTerminatorPoint(); +this.invalidControl = false; +return this.controlPoints; +}, "~N"); +Clazz_defineMethod(c$, "getControlPoint", +function(i, v){ +return this.leadPoints[i]; +}, "~N,JU.V3"); +Clazz_defineMethod(c$, "getWingVectors", +function(){ +if (this.leadMidpoints == null) this.calcLeadMidpointsAndWingVectors(); +return this.wingVectors; +}); +Clazz_defineMethod(c$, "calcLeadMidpointsAndWingVectors", +function(){ +if (this.leadMidpoints == null) { +this.leadMidpoints = new Array(this.monomerCount + 1); +this.leadPoints = new Array(this.monomerCount + 1); +this.wingVectors = new Array(this.monomerCount + 1); +this.sheetSmoothing = 1.4E-45; +}if (this.reversed == null) this.reversed = JU.BS.newN(this.monomerCount); + else this.reversed.clearAll(); +this.twistedSheets = this.model.ms.vwr.getBoolean(603979968); +var vectorA = new JU.V3(); +var vectorB = new JU.V3(); +var vectorC = new JU.V3(); +var vectorD = new JU.V3(); +var leadPointPrev; +var leadPoint; +this.leadMidpoints[0] = this.getInitiatorPoint(); +this.leadPoints[0] = leadPoint = this.getLeadPoint(0); +var previousVectorD = null; +for (var i = 1; i < this.monomerCount; ++i) { +leadPointPrev = leadPoint; +leadPoint = this.getLeadPoint(i); +if (leadPoint == null) { +return; +}this.leadPoints[i] = leadPoint; +var midpoint = new JU.P3(); +midpoint.ave(leadPoint, leadPointPrev); +this.leadMidpoints[i] = midpoint; +if (this.hasWingPoints) { +vectorA.sub2(leadPoint, leadPointPrev); +vectorB.sub2(leadPointPrev, this.getWingPoint(i - 1)); +vectorC.cross(vectorA, vectorB); +vectorD.cross(vectorA, vectorC); +vectorD.normalize(); +if (!this.twistedSheets && previousVectorD != null && previousVectorD.angle(vectorD) > 1.5707963267948966) { +this.reversed.set(i); +vectorD.scale(-1); +}previousVectorD = this.wingVectors[i] = JU.V3.newV(vectorD); +}} +this.leadPoints[this.monomerCount] = this.leadMidpoints[this.monomerCount] = this.getTerminatorPoint(); +if (!this.hasWingPoints) { +if (this.monomerCount < 3) { +this.wingVectors[1] = this.unitVectorX; +} else { +var previousVectorC = null; +for (var i = 1; i < this.monomerCount; ++i) { +vectorA.sub2(this.leadMidpoints[i], this.leadPoints[i]); +vectorB.sub2(this.leadPoints[i], this.leadMidpoints[i + 1]); +if (vectorB.length() == 0) { +vectorC = previousVectorC; +} else { +vectorC.cross(vectorA, vectorB); +vectorC.normalize(); +if (previousVectorC != null && previousVectorC.angle(vectorC) > 1.5707963267948966) vectorC.scale(-1); +}previousVectorC = this.wingVectors[i] = JU.V3.newV(vectorC); +} +}}this.wingVectors[0] = this.wingVectors[1]; +this.wingVectors[this.monomerCount] = this.wingVectors[this.monomerCount - 1]; +}); +Clazz_defineMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, mads, myVisibilityFlag, bsNot){ +for (var i = this.monomerCount; --i >= 0; ) { +if ((this.monomers[i].shapeVisibilityFlags & myVisibilityFlag) == 0) continue; +var a = this.monomers[i].getLeadAtom(); +if (!a.checkVisible() || bsNot != null && bsNot.get(a.i)) continue; +if (mads[i] > 0 || mads[i + 1] > 0) this.monomers[i].findNearestAtomIndex(xMouse, yMouse, closest, mads[i], mads[i + 1]); +} +}, "~N,~N,~A,~A,~N,JU.BS"); +Clazz_defineMethod(c$, "getSelectedMonomerCount", +function(){ +return this.selectedMonomerCount; +}); +Clazz_defineMethod(c$, "calcSelectedMonomersCount", +function(bsSelected){ +this.selectedMonomerCount = 0; +if (this.bsSelectedMonomers == null) this.bsSelectedMonomers = new JU.BS(); +this.bsSelectedMonomers.clearAll(); +for (var i = 0; i < this.monomerCount; i++) { +if (this.monomers[i].isSelected(bsSelected)) { +++this.selectedMonomerCount; +this.bsSelectedMonomers.set(i); +}} +}, "JU.BS"); +Clazz_defineMethod(c$, "isMonomerSelected", +function(i){ +return (i >= 0 && this.bsSelectedMonomers.get(i)); +}, "~N"); +Clazz_defineMethod(c$, "getPolymerPointsAndVectors", +function(last, bs, vList, isTraceAlpha, sheetSmoothing){ +var points = this.getControlPoints(isTraceAlpha, sheetSmoothing, false); +var vectors = this.getWingVectors(); +var count = this.monomerCount; +for (var j = 0; j < count; j++) if (bs.get(this.monomers[j].leadAtomIndex)) { +vList.addLast( Clazz_newArray(-1, [points[j], JU.P3.newP(vectors[j])])); +last = j; +} else if (last != 2147483646) { +vList.addLast( Clazz_newArray(-1, [points[j], JU.P3.newP(vectors[j])])); +last = 2147483646; +} +if (last + 1 < count) vList.addLast( Clazz_newArray(-1, [points[last + 1], JU.P3.newP(vectors[last + 1])])); +return last; +}, "~N,JU.BS,JU.Lst,~B,~N"); +Clazz_defineMethod(c$, "getSequence", +function(){ +var buf = Clazz_newCharArray (this.monomerCount, '\0'); +for (var i = 0; i < this.monomerCount; i++) buf[i] = this.monomers[i].getGroup1(); + +return String.valueOf(buf); +}); +Clazz_defineMethod(c$, "getPolymerSequenceAtoms", +function(group1, nGroups, bsInclude, bsResult){ +for (var i = Math.min(this.monomerCount, group1 + nGroups); --i >= group1; ) this.monomers[i].getMonomerSequenceAtoms(bsInclude, bsResult); + +}, "~N,~N,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getProteinStructure", +function(monomerIndex){ +return null; +}, "~N"); +Clazz_defineMethod(c$, "calcParameters", +function(){ +this.haveParameters = true; +return this.calcEtaThetaAngles() || this.calcPhiPsiAngles(); +}); +Clazz_defineMethod(c$, "calcEtaThetaAngles", +function(){ +return false; +}); +Clazz_defineMethod(c$, "calcPhiPsiAngles", +function(){ +return false; +}); +Clazz_defineMethod(c$, "calculateRamachandranHelixAngle", +function(m, qtype){ +return NaN; +}, "~N,~S"); +Clazz_defineMethod(c$, "isNucleic", +function(){ +return (this.monomerCount > 0 && Clazz_instanceOf(this,"JM.NucleicPolymer")); +}); +Clazz_defineMethod(c$, "getRangeGroups", +function(nResidues, bsAtoms, bsResult){ +var bsTemp = new JU.BS(); +for (var i = 0; i < this.monomerCount; i++) { +if (!this.monomers[i].isSelected(bsAtoms)) continue; +bsTemp.setBits(Math.max(0, i - nResidues), i + nResidues + 1); +i += nResidues - 1; +} +for (var i = bsTemp.nextSetBit(0); i >= 0 && i < this.monomerCount; i = bsTemp.nextSetBit(i + 1)) this.monomers[i].setAtomBits(bsResult); + +}, "~N,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "calcRasmolHydrogenBonds", +function(polymer, bsA, bsB, vHBonds, nMaxPerResidue, min, checkDistances, dsspIgnoreHydrogens){ +}, "JM.BioPolymer,JU.BS,JU.BS,JU.Lst,~N,~A,~B,~B"); +Clazz_defineMethod(c$, "getType", +function(){ +return this.type; +}); +Clazz_defineMethod(c$, "isCyclic", +function(){ +return ((this.cyclicFlag == 0 ? (this.cyclicFlag = (this.monomerCount >= 4 && this.monomers[0].isConnectedAfter(this.monomers[this.monomerCount - 1])) ? 1 : -1) : this.cyclicFlag) == 1); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[Polymer type " + this.type + " n=" + this.monomerCount + " " + (this.monomerCount > 0 ? this.monomers[0] + " " + this.monomers[this.monomerCount - 1] : "") + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["java.lang.Enum", "JM.BioPolymer"], "JM.AlphaPolymer", ["JU.Measure", "$.P3", "J.c.STR", "JM.Helix", "$.Sheet", "$.Turn", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pt0 = 0; +Clazz_instantialize(this, arguments);}, JM, "AlphaPolymer", JM.BioPolymer); +Clazz_makeConstructor(c$, +function(monomers, pt0){ +Clazz_superConstructor(this, JM.AlphaPolymer, [monomers, true]); +this.pt0 = pt0; +}, "~A,~N"); +Clazz_overrideMethod(c$, "getProteinStructure", +function(monomerIndex){ +return this.monomers[monomerIndex].getStructure(); +}, "~N"); +Clazz_overrideMethod(c$, "getControlPoint", +function(i, v){ +if (!this.monomers[i].isSheet()) return this.leadPoints[i]; +v.sub2(this.leadMidpoints[i], this.leadPoints[i]); +v.scale(this.sheetSmoothing); +var pt = JU.P3.newP(this.leadPoints[i]); +pt.add(v); +return pt; +}, "~N,JU.V3"); +Clazz_defineMethod(c$, "addStructure", +function(type, structureID, serialID, strandCount, startChainID, startSeqcode, endChainID, endSeqcode, istart, iend, bsAssigned){ +var i0 = -1; +var i1 = -1; +if (istart < iend) { +if (this.monomers[0].firstAtomIndex > iend || this.monomers[this.monomerCount - 1].lastAtomIndex < istart) return; +i0 = istart; +i1 = iend; +}var indexStart; +var indexEnd; +if ((indexStart = this.getIndex(startChainID, startSeqcode, i0, i1)) == -1 || (indexEnd = this.getIndex(endChainID, endSeqcode, i0, i1)) == -1) return; +if (istart >= 0 && bsAssigned != null) { +var pt = bsAssigned.nextSetBit(this.monomers[indexStart].firstAtomIndex); +if (pt >= 0 && pt < this.monomers[indexEnd].lastAtomIndex) return; +}if (this.addStructureProtected(type, structureID, serialID, strandCount, indexStart, indexEnd) && istart >= 0) bsAssigned.setBits(istart, iend + 1); +}, "J.c.STR,~S,~S,~N,~N,~N,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "addStructureProtected", +function(type, structureID, serialID, strandCount, indexStart, indexEnd){ +if (indexEnd < indexStart) { +JU.Logger.error("AlphaPolymer:addSecondaryStructure error: indexStart:" + indexStart + " indexEnd:" + indexEnd); +return false; +}var structureCount = indexEnd - indexStart + 1; +var ps = null; +switch (type) { +case J.c.STR.HELIX: +case J.c.STR.HELIXALPHA: +case J.c.STR.HELIX310: +case J.c.STR.HELIXPI: +ps = new JM.Helix(this, indexStart, structureCount, type); +break; +case J.c.STR.SHEET: +ps = new JM.Sheet(this, indexStart, structureCount, type); +break; +case J.c.STR.TURN: +ps = new JM.Turn(this, indexStart, structureCount); +break; +default: +JU.Logger.error("unrecognized secondary structure type"); +return false; +} +ps.structureID = structureID; +ps.serialID = serialID; +ps.strandCount = strandCount; +for (var i = indexStart; i <= indexEnd; ++i) (this.monomers[i]).setStructure(ps); + +return true; +}, "J.c.STR,~S,~S,~N,~N,~N"); +Clazz_overrideMethod(c$, "clearStructures", +function(){ +for (var i = 0; i < this.monomerCount; i++) (this.monomers[i]).setStructure(null); + +}); +Clazz_defineMethod(c$, "calculateStructures", +function(alphaOnly){ +if (this.monomerCount < 4) return; +var angles = this.calculateAnglesInDegrees(); +var codes = this.calculateCodes(angles); +this.checkBetaSheetAlphaHelixOverlap(codes, angles); +var tags = this.calculateRunsFourOrMore(codes); +this.extendRuns(tags); +this.searchForTurns(codes, angles, tags); +this.addStructuresFromTags(tags); +}, "~B"); +Clazz_defineMethod(c$, "calculateAnglesInDegrees", +function(){ +var angles = Clazz_newFloatArray (this.monomerCount, 0); +for (var i = this.monomerCount - 1; --i >= 2; ) angles[i] = JU.Measure.computeTorsion(this.monomers[i - 2].getLeadAtom(), this.monomers[i - 1].getLeadAtom(), this.monomers[i].getLeadAtom(), this.monomers[i + 1].getLeadAtom(), true); + +return angles; +}); +Clazz_defineMethod(c$, "calculateCodes", +function(angles){ +var codes = new Array(this.monomerCount); +for (var i = this.monomerCount - 1; --i >= 2; ) { +var degrees = angles[i]; +codes[i] = ((degrees >= 10 && degrees < 120) ? JM.AlphaPolymer.Code.RIGHT_HELIX : ((degrees >= 120 || degrees < -90) ? JM.AlphaPolymer.Code.BETA_SHEET : ((degrees >= -90 && degrees < 0) ? JM.AlphaPolymer.Code.LEFT_HELIX : JM.AlphaPolymer.Code.NADA))); +} +return codes; +}, "~A"); +Clazz_defineMethod(c$, "checkBetaSheetAlphaHelixOverlap", +function(codes, angles){ +for (var i = this.monomerCount - 2; --i >= 2; ) if (codes[i] === JM.AlphaPolymer.Code.BETA_SHEET && angles[i] <= 140 && codes[i - 2] === JM.AlphaPolymer.Code.RIGHT_HELIX && codes[i - 1] === JM.AlphaPolymer.Code.RIGHT_HELIX && codes[i + 1] === JM.AlphaPolymer.Code.RIGHT_HELIX && codes[i + 2] === JM.AlphaPolymer.Code.RIGHT_HELIX) codes[i] = JM.AlphaPolymer.Code.RIGHT_HELIX; + +}, "~A,~A"); +Clazz_defineMethod(c$, "calculateRunsFourOrMore", +function(codes){ +var tags = new Array(this.monomerCount); +var tag = J.c.STR.NONE; +var code = JM.AlphaPolymer.Code.NADA; +var runLength = 0; +for (var i = 0; i < this.monomerCount; ++i) { +if (codes[i] === code && code !== JM.AlphaPolymer.Code.NADA) { +++runLength; +if (runLength == 4) { +tag = (code === JM.AlphaPolymer.Code.BETA_SHEET ? J.c.STR.SHEET : J.c.STR.HELIX); +for (var j = 4; --j >= 0; ) tags[i - j] = tag; + +} else if (runLength > 4) tags[i] = tag; +} else { +runLength = 1; +code = codes[i]; +}} +return tags; +}, "~A"); +Clazz_defineMethod(c$, "extendRuns", +function(tags){ +for (var i = 1; i < this.monomerCount - 4; ++i) if (tags[i] === J.c.STR.NONE && tags[i + 1] !== J.c.STR.NONE) tags[i] = tags[i + 1]; + +tags[0] = tags[1]; +tags[this.monomerCount - 1] = tags[this.monomerCount - 2]; +}, "~A"); +Clazz_defineMethod(c$, "searchForTurns", +function(codes, angles, tags){ +for (var i = this.monomerCount - 1; --i >= 2; ) { +codes[i] = JM.AlphaPolymer.Code.NADA; +if (tags[i] == null || tags[i] === J.c.STR.NONE) { +var angle = angles[i]; +if (angle >= -90 && angle < 0) codes[i] = JM.AlphaPolymer.Code.LEFT_TURN; + else if (angle >= 0 && angle < 90) codes[i] = JM.AlphaPolymer.Code.RIGHT_TURN; +}} +for (var i = this.monomerCount - 1; --i >= 0; ) { +if (codes[i] !== JM.AlphaPolymer.Code.NADA && codes[i + 1] === codes[i] && tags[i] === J.c.STR.NONE) tags[i] = J.c.STR.TURN; +} +}, "~A,~A,~A"); +Clazz_defineMethod(c$, "addStructuresFromTags", +function(tags){ +var i = 0; +while (i < this.monomerCount) { +var tag = tags[i]; +if (tag == null || tag === J.c.STR.NONE) { +++i; +continue; +}var iMax; +for (iMax = i + 1; iMax < this.monomerCount && tags[iMax] === tag; ++iMax) { +} +this.addStructureProtected(tag, null, null, 0, i, iMax - 1); +i = iMax; +} +}, "~A"); +Clazz_defineMethod(c$, "setStructureBS", +function(count, dsspType, type, bs, doOffset){ +var offset = (doOffset ? this.pt0 : 0); +for (var pt = 0, i = bs.nextSetBit(offset), i2 = 0, n = this.monomerCount + offset; i >= 0 && i < n; i = bs.nextSetBit(i2 + 1)) { +if ((i2 = bs.nextClearBit(i)) < 0 || i2 > n) i2 = n; +this.addStructureProtected(type, JM.AlphaPolymer.dsspTypes[dsspType] + (++pt), "" + count++, (dsspType == 3 ? 1 : 0), i - offset, i2 - 1 - offset); +} +return count; +}, "~N,~N,J.c.STR,JU.BS,~B"); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JM.AlphaPolymer, "Code", Enum); +Clazz_defineEnumConstant(c$, "NADA", 0, []); +Clazz_defineEnumConstant(c$, "RIGHT_HELIX", 1, []); +Clazz_defineEnumConstant(c$, "BETA_SHEET", 2, []); +Clazz_defineEnumConstant(c$, "LEFT_HELIX", 3, []); +Clazz_defineEnumConstant(c$, "LEFT_TURN", 4, []); +Clazz_defineEnumConstant(c$, "RIGHT_TURN", 5, []); +/*eoif2*/})(); +c$.dsspTypes = Clazz_newArray(-1, ["H", null, "H", "S", "H", null, "T"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.AlphaMonomer"], "JM.AminoMonomer", ["JU.A4", "$.BS", "$.M3", "$.P3", "$.PT", "$.Quat", "$.V3", "J.c.STR", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.nhChecked = false; +this.ptTemp = null; +Clazz_instantialize(this, arguments);}, JM, "AminoMonomer", JM.AlphaMonomer); +Clazz_overrideConstructor(c$, +function(){ +}); +c$.validateAndAllocate = Clazz_defineMethod(c$, "validateAndAllocate", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes, atoms){ +var offsets = JM.Monomer.scanForOffsets(firstAtomIndex, specialAtomIndexes, JM.AminoMonomer.interestingAminoAtomIDs); +if (offsets == null) return null; +JM.Monomer.checkOptional(offsets, 1, firstAtomIndex, specialAtomIndexes[5]); +if (atoms[firstAtomIndex].isHetero() && !JM.AminoMonomer.isBondedCorrectly(firstAtomIndex, offsets, atoms)) return null; +return new JM.AminoMonomer().set2(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, offsets); +}, "JM.Chain,~S,~N,~N,~N,~A,~A"); +c$.isBondedCorrectlyRange = Clazz_defineMethod(c$, "isBondedCorrectlyRange", +function(offset1, offset2, firstAtomIndex, offsets, atoms){ +var atomIndex1 = firstAtomIndex + (offsets[offset1] & 0xFF); +var atomIndex2 = firstAtomIndex + (offsets[offset2] & 0xFF); +return (atomIndex1 != atomIndex2 && atoms[atomIndex1].isBonded(atoms[atomIndex2])); +}, "~N,~N,~N,~A,~A"); +c$.isBondedCorrectly = Clazz_defineMethod(c$, "isBondedCorrectly", +function(firstAtomIndex, offsets, atoms){ +return (JM.AminoMonomer.isBondedCorrectlyRange(2, 0, firstAtomIndex, offsets, atoms) && JM.AminoMonomer.isBondedCorrectlyRange(0, 3, firstAtomIndex, offsets, atoms) && (!JM.Monomer.have(offsets, 1) || JM.AminoMonomer.isBondedCorrectlyRange(3, 1, firstAtomIndex, offsets, atoms))); +}, "~N,~A,~A"); +Clazz_overrideMethod(c$, "getNitrogenAtom", +function(){ +return this.getAtomFromOffsetIndex(2); +}); +Clazz_defineMethod(c$, "getCarbonylCarbonAtom", +function(){ +return this.getAtomFromOffsetIndex(3); +}); +Clazz_overrideMethod(c$, "getCarbonylOxygenAtom", +function(){ +return this.getWingAtom(); +}); +Clazz_overrideMethod(c$, "getInitiatorAtom", +function(){ +return this.getNitrogenAtom(); +}); +Clazz_overrideMethod(c$, "getTerminatorAtom", +function(){ +return this.getAtomFromOffsetIndex(JM.Monomer.have(this.offsets, 4) ? 4 : 3); +}); +Clazz_defineMethod(c$, "hasOAtom", +function(){ +return JM.Monomer.have(this.offsets, 1); +}); +Clazz_overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +var other = possiblyPreviousMonomer; +return other.getCarbonylCarbonAtom().isBonded(this.getNitrogenAtom()); +}, "JM.Monomer"); +Clazz_overrideMethod(c$, "findNearestAtomIndex", +function(x, y, closest, madBegin, madEnd){ +var competitor = closest[0]; +var nitrogen = this.getNitrogenAtom(); +var marBegin = (Clazz_doubleToInt(madBegin / 2)); +if (marBegin < 1200) marBegin = 1200; +if (nitrogen.sZ == 0) return; +var radiusBegin = Clazz_floatToInt(this.scaleToScreen(nitrogen.sZ, marBegin)); +if (radiusBegin < 4) radiusBegin = 4; +var ccarbon = this.getCarbonylCarbonAtom(); +var marEnd = (Clazz_doubleToInt(madEnd / 2)); +if (marEnd < 1200) marEnd = 1200; +var radiusEnd = Clazz_floatToInt(this.scaleToScreen(nitrogen.sZ, marEnd)); +if (radiusEnd < 4) radiusEnd = 4; +var alpha = this.getLeadAtom(); +if (this.isCursorOnTopOf(alpha, x, y, Clazz_doubleToInt((radiusBegin + radiusEnd) / 2), competitor) || this.isCursorOnTopOf(nitrogen, x, y, radiusBegin, competitor) || this.isCursorOnTopOf(ccarbon, x, y, radiusEnd, competitor)) closest[0] = alpha; +}, "~N,~N,~A,~N,~N"); +Clazz_defineMethod(c$, "resetHydrogenPoint", +function(){ +this.nhChecked = false; +this.nitrogenHydrogenPoint = null; +}); +Clazz_defineMethod(c$, "getNitrogenHydrogenPoint", +function(){ +if (this.nitrogenHydrogenPoint == null && !this.nhChecked) { +this.nhChecked = true; +this.nitrogenHydrogenPoint = this.getExplicitNH(); +}return this.nitrogenHydrogenPoint; +}); +Clazz_defineMethod(c$, "getExplicitNH", +function(){ +var nitrogen = this.getNitrogenAtom(); +var h = null; +var bonds = nitrogen.bonds; +if (bonds != null) for (var i = 0; i < bonds.length; i++) if ((h = bonds[i].getOtherAtom(nitrogen)).getElementNumber() == 1) return h; + +return null; +}); +Clazz_defineMethod(c$, "getNHPoint", +function(aminoHydrogenPoint, vNH, jmolHPoint, dsspIgnoreHydrogens){ +if (this.monomerIndex <= 0 || this.groupID == 15) return false; +var nitrogenPoint = this.getNitrogenAtom(); +var nhPoint = this.getNitrogenHydrogenPoint(); +if (nhPoint != null && !dsspIgnoreHydrogens) { +vNH.sub2(nhPoint, nitrogenPoint); +aminoHydrogenPoint.setT(nhPoint); +return true; +}var prev = this.bioPolymer.monomers[this.monomerIndex - 1]; +if (jmolHPoint) { +vNH.sub2(nitrogenPoint, this.getLeadAtom()); +vNH.normalize(); +var v = JU.V3.newVsub(nitrogenPoint, prev.getCarbonylCarbonAtom()); +v.normalize(); +vNH.add(v); +} else { +var oxygen = prev.getCarbonylOxygenAtom(); +if (oxygen == null) return false; +vNH.sub2(prev.getCarbonylCarbonAtom(), oxygen); +}vNH.normalize(); +aminoHydrogenPoint.add2(nitrogenPoint, vNH); +this.nitrogenHydrogenPoint = JU.P3.newP(aminoHydrogenPoint); +if (JU.Logger.debugging) JU.Logger.debug("draw ID \"pta" + this.monomerIndex + "_" + nitrogenPoint.i + "\" " + JU.Escape.eP(nitrogenPoint) + JU.Escape.eP(aminoHydrogenPoint) + " # " + nitrogenPoint); +return true; +}, "JU.P3,JU.V3,~B,~B"); +Clazz_overrideMethod(c$, "getQuaternionFrameCenter", +function(qType){ +if (this.monomerIndex < 0) return null; +switch ((qType).charCodeAt(0)) { +default: +case 97: +case 98: +case 99: +case 67: +return this.getQuaternionFrameCenterAlpha(qType); +case 110: +return this.getNitrogenAtom(); +case 112: +case 80: +return this.getCarbonylCarbonAtom(); +case 113: +if (this.monomerIndex == this.bioPolymer.monomerCount - 1) return null; +var mNext = (this.bioPolymer.monomers[this.monomerIndex + 1]); +var pt = new JU.P3(); +pt.ave(this.getCarbonylCarbonAtom(), mNext.getNitrogenAtom()); +return pt; +} +}, "~S"); +Clazz_overrideMethod(c$, "getQuaternion", +function(qType){ +if (this.monomerIndex < 0) return null; +var ptC = this.getCarbonylCarbonAtom(); +var ptCa = this.getLeadAtom(); +var vA = new JU.V3(); +var vB = new JU.V3(); +var vC = null; +switch ((qType).charCodeAt(0)) { +case 97: +case 110: +if (this.monomerIndex == 0 || this.groupID == 15) return null; +vC = new JU.V3(); +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +this.getNHPoint(this.ptTemp, vC, true, false); +vB.sub2(ptCa, this.getNitrogenAtom()); +vB.cross(vC, vB); + new JU.M3().setAA(JU.A4.newVA(vB, -0.29670596)).rotate(vC); +vA.cross(vB, vC); +break; +case 98: +return this.getQuaternionAlpha('b'); +case 99: +vA.sub2(ptC, ptCa); +vB.sub2(this.getNitrogenAtom(), ptCa); +break; +case 112: +case 120: +if (this.monomerIndex == this.bioPolymer.monomerCount - 1) return null; +vA.sub2(ptCa, ptC); +vB.sub2((this.bioPolymer.monomers[this.monomerIndex + 1]).getNitrogenAtom(), ptC); +break; +case 113: +if (this.monomerIndex == this.bioPolymer.monomerCount - 1) return null; +var mNext = (this.bioPolymer.monomers[this.monomerIndex + 1]); +vB.sub2(mNext.getLeadAtom(), mNext.getNitrogenAtom()); +vA.sub2(ptCa, ptC); +break; +default: +return null; +} +return JU.Quat.getQuaternionFrameV(vA, vB, vC, false); +}, "~S"); +Clazz_overrideMethod(c$, "getStructureId", +function(){ +if (this.proteinStructure == null || this.proteinStructure.structureID == null) return ""; +return this.proteinStructure.structureID; +}); +Clazz_overrideMethod(c$, "getProteinStructureTag", +function(){ +if (this.proteinStructure == null || this.proteinStructure.structureID == null) return null; +var tag = "%3N %3ID"; +tag = JU.PT.formatStringS(tag, "N", this.proteinStructure.serialID); +tag = JU.PT.formatStringS(tag, "ID", this.proteinStructure.structureID); +if (this.proteinStructure.type === J.c.STR.SHEET) tag += JU.PT.formatStringI("%2SC", "SC", this.proteinStructure.strandCount); +return tag; +}); +Clazz_overrideMethod(c$, "getBSSideChain", +function(){ +var bs = new JU.BS(); +this.setAtomBits(bs); +this.clear(bs, this.getLeadAtom(), true); +this.clear(bs, this.getCarbonylCarbonAtom(), false); +this.clear(bs, this.getCarbonylOxygenAtom(), false); +this.clear(bs, this.getNitrogenAtom(), true); +return bs; +}); +Clazz_defineMethod(c$, "clear", +function(bs, a, andH){ +if (a == null) return; +bs.clear(a.i); +if (!andH) return; +var b = a.bonds; +var h; +for (var j = b.length; --j >= 0; ) if ((h = b[j].getOtherAtom(a)).getElementNumber() == 1) bs.clear(h.i); + +}, "JU.BS,JM.Atom,~B"); +c$.interestingAminoAtomIDs = Clazz_newByteArray(-1, [2, -5, 1, 3, -65]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.AlphaPolymer"], "JM.AminoPolymer", ["JU.Measure", "$.P3", "$.V3", "J.c.STR", "JM.HBond", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.structureList = null; +Clazz_instantialize(this, arguments);}, JM, "AminoPolymer", JM.AlphaPolymer); +Clazz_makeConstructor(c$, +function(monomers, pt0){ +Clazz_superConstructor(this, JM.AminoPolymer, [monomers, pt0]); +this.type = 1; +for (var i = 0; i < this.monomerCount; ++i) if (!(monomers[i]).hasOAtom()) return; + +this.hasWingPoints = true; +}, "~A,~N"); +Clazz_overrideMethod(c$, "resetHydrogenPoints", +function(){ +var ps; +var psLast = null; +for (var i = 0; i < this.monomerCount; i++) { +if ((ps = this.getProteinStructure(i)) != null && ps !== psLast) (psLast = ps).resetAxes(); +(this.monomers[i]).resetHydrogenPoint(); +} +}); +Clazz_overrideMethod(c$, "calcPhiPsiAngles", +function(){ +for (var i = 0; i < this.monomerCount - 1; ++i) this.calcPhiPsiAngles2(this.monomers[i], this.monomers[i + 1]); + +return true; +}); +Clazz_defineMethod(c$, "calcPhiPsiAngles2", +function(residue1, residue2){ +var nitrogen1 = residue1.getNitrogenAtom(); +var alphacarbon1 = residue1.getLeadAtom(); +var carbon1 = residue1.getCarbonylCarbonAtom(); +var nitrogen2 = residue2.getNitrogenAtom(); +var alphacarbon2 = residue2.getLeadAtom(); +var carbon2 = residue2.getCarbonylCarbonAtom(); +residue2.setGroupParameter(1111490569, JU.Measure.computeTorsion(carbon1, nitrogen2, alphacarbon2, carbon2, true)); +residue1.setGroupParameter(1111490570, JU.Measure.computeTorsion(nitrogen1, alphacarbon1, carbon1, nitrogen2, true)); +residue1.setGroupParameter(1111490568, JU.Measure.computeTorsion(alphacarbon1, carbon1, nitrogen2, alphacarbon2, true)); +}, "JM.AminoMonomer,JM.AminoMonomer"); +Clazz_overrideMethod(c$, "calculateRamachandranHelixAngle", +function(m, qtype){ +var psiLast = (m == 0 ? NaN : this.monomers[m - 1].getGroupParameter(1111490570)); +var psi = this.monomers[m].getGroupParameter(1111490570); +var phi = this.monomers[m].getGroupParameter(1111490569); +var phiNext = (m == this.monomerCount - 1 ? NaN : this.monomers[m + 1].getGroupParameter(1111490569)); +var psiNext = (m == this.monomerCount - 1 ? NaN : this.monomers[m + 1].getGroupParameter(1111490570)); +switch ((qtype).charCodeAt(0)) { +default: +case 112: +case 114: +case 80: +var dPhi = ((phiNext - phi) / 2 * 3.141592653589793 / 180); +var dPsi = ((psiNext - psi) / 2 * 3.141592653589793 / 180); +return (57.29577951308232 * 2 * Math.acos(Math.cos(dPsi) * Math.cos(dPhi) - Math.sin(dPsi) * Math.sin(dPhi) / 3)); +case 99: +case 67: +return (psi - psiLast + phiNext - phi); +} +}, "~N,~S"); +Clazz_overrideMethod(c$, "calcRasmolHydrogenBonds", +function(polymer, bsA, bsB, vHBonds, nMaxPerResidue, min, checkDistances, dsspIgnoreHydrogens){ +if (polymer == null) polymer = this; +if (!(Clazz_instanceOf(polymer,"JM.AminoPolymer"))) return; +var pt = new JU.P3(); +var vNH = new JU.V3(); +var source; +var min1 = (min == null ? Clazz_newIntArray (2, 3, 0) : null); +for (var i = 1; i < this.monomerCount; ++i) { +if (min == null) { +min1[0][0] = min1[1][0] = this.bioPolymerIndexInModel; +min1[0][1] = min1[1][1] = -2147483648; +min1[0][2] = min1[1][2] = 0; +} else { +min1 = min[i]; +}if ((source = (this.monomers[i])).getNHPoint(pt, vNH, checkDistances, dsspIgnoreHydrogens)) { +var isInA = (bsA == null || bsA.get(source.getNitrogenAtom().i)); +if (!isInA) continue; +if (!checkDistances && source.getCarbonylOxygenAtom() == null) continue; +this.checkRasmolHydrogenBond(source, polymer, i, pt, (isInA ? bsB : bsA), vHBonds, min1, checkDistances); +}} +}, "JM.BioPolymer,JU.BS,JU.BS,JU.Lst,~N,~A,~B,~B"); +Clazz_defineMethod(c$, "checkRasmolHydrogenBond", +function(source, polymer, indexDonor, hydrogenPoint, bsB, vHBonds, min, checkDistances){ +var sourceAlphaPoint = source.getLeadAtom(); +var sourceNitrogenPoint = source.getNitrogenAtom(); +var nitrogen = source.getNitrogenAtom(); +var m; +for (var i = polymer.monomerCount; --i >= 0; ) { +if (polymer === this && (i == indexDonor || i + 1 == indexDonor)) continue; +var target = polymer.monomers[i]; +var oxygen = target.getCarbonylOxygenAtom(); +if (oxygen == null || bsB != null && !bsB.get(oxygen.i)) continue; +var targetAlphaPoint = target.getLeadAtom(); +var dist2 = sourceAlphaPoint.distanceSquared(targetAlphaPoint); +if (dist2 >= 81.0) continue; +var energy = this.calcHbondEnergy(sourceNitrogenPoint, hydrogenPoint, target, checkDistances); +if (energy < min[0][2]) { +m = min[1]; +min[1] = min[0]; +min[0] = m; +} else if (energy < min[1][2]) { +m = min[1]; +} else { +continue; +}m[0] = polymer.bioPolymerIndexInModel; +m[1] = (energy < -500 ? i : -1 - i); +m[2] = energy; +} +if (vHBonds != null) for (var i = 0; i < 2; i++) if (min[i][1] >= 0) this.addResidueHydrogenBond(nitrogen, ((polymer).monomers[min[i][1]]).getCarbonylOxygenAtom(), (polymer === this ? indexDonor : -99), min[i][1], min[i][2] / 1000, vHBonds); + +}, "JM.AminoMonomer,JM.BioPolymer,~N,JU.P3,JU.BS,JU.Lst,~A,~B"); +Clazz_defineMethod(c$, "calcHbondEnergy", +function(nitrogenPoint, hydrogenPoint, target, checkDistances){ +var targetOxygenPoint = target.getCarbonylOxygenAtom(); +if (targetOxygenPoint == null) return 0; +var distON2 = targetOxygenPoint.distanceSquared(nitrogenPoint); +if (distON2 < 0.25) return 0; +var distOH2 = targetOxygenPoint.distanceSquared(hydrogenPoint); +if (distOH2 < 0.25) return 0; +var targetCarbonPoint = target.getCarbonylCarbonAtom(); +var distCH2 = targetCarbonPoint.distanceSquared(hydrogenPoint); +if (distCH2 < 0.25) return 0; +var distCN2 = targetCarbonPoint.distanceSquared(nitrogenPoint); +if (distCN2 < 0.25) return 0; +var distOH = Math.sqrt(distOH2); +var distCH = Math.sqrt(distCH2); +var distCN = Math.sqrt(distCN2); +var distON = Math.sqrt(distON2); +var energy = JM.HBond.calcEnergy(distOH, distCH, distCN, distON); +var isHbond = (energy < -500 && (!checkDistances || distCN > distCH && distOH <= 3.0)); +return (!isHbond && checkDistances || energy < -9900 ? 0 : energy); +}, "JU.P3,JU.P3,JM.AminoMonomer,~B"); +Clazz_defineMethod(c$, "addResidueHydrogenBond", +function(nitrogen, oxygen, indexAminoGroup, indexCarbonylGroup, energy, vHBonds){ +var order; +switch (indexAminoGroup - indexCarbonylGroup) { +case 2: +order = 6144; +break; +case 3: +order = 8192; +break; +case 4: +order = 10240; +break; +case 5: +order = 12288; +break; +case -3: +order = 14336; +break; +case -4: +order = 16384; +break; +default: +order = 4096; +} +vHBonds.addLast( new JM.HBond(nitrogen, oxygen, order, 1, 0, energy)); +}, "JM.Atom,JM.Atom,~N,~N,~N,JU.Lst"); +Clazz_overrideMethod(c$, "calculateStructures", +function(alphaOnly){ +if (alphaOnly) return; +if (this.structureList == null) this.structureList = this.model.ms.getStructureList(); +var structureTags = Clazz_newCharArray (this.monomerCount, '\0'); +for (var i = 0; i < this.monomerCount - 1; ++i) { +var leadingResidue = this.monomers[i]; +var trailingResidue = this.monomers[i + 1]; +var phi = trailingResidue.getGroupParameter(1111490569); +var psi = leadingResidue.getGroupParameter(1111490570); +if (this.isHelix(psi, phi)) { +structureTags[i] = (phi < 0 && psi < 25 ? '4' : '3'); +} else if (this.isSheet(psi, phi)) { +structureTags[i] = 's'; +} else if (this.isTurn(psi, phi)) { +structureTags[i] = 't'; +} else { +structureTags[i] = 'n'; +}if (JU.Logger.debugging) JU.Logger.debug((0 + this.monomers[0].chain.chainID) + " aminopolymer:" + i + " " + trailingResidue.getGroupParameter(1111490569) + "," + leadingResidue.getGroupParameter(1111490570) + " " + structureTags[i]); +} +for (var start = 0; start < this.monomerCount; ++start) { +if (structureTags[start] == '4') { +var end; +for (end = start + 1; end < this.monomerCount && structureTags[end] == '4'; ++end) { +} +end--; +if (end >= start + 3) { +this.addStructureProtected(J.c.STR.HELIX, null, null, 0, start, end); +}start = end; +}} +for (var start = 0; start < this.monomerCount; ++start) { +if (structureTags[start] == '3') { +var end; +for (end = start + 1; end < this.monomerCount && structureTags[end] == '3'; ++end) { +} +end--; +if (end >= start + 3) { +this.addStructureProtected(J.c.STR.HELIX, null, null, 0, start, end); +}start = end; +}} +for (var start = 0; start < this.monomerCount; ++start) { +if (structureTags[start] == 's') { +var end; +for (end = start + 1; end < this.monomerCount && structureTags[end] == 's'; ++end) { +} +end--; +if (end >= start + 2) { +this.addStructureProtected(J.c.STR.SHEET, null, null, 0, start, end); +}start = end; +}} +for (var start = 0; start < this.monomerCount; ++start) { +if (structureTags[start] == 't') { +var end; +for (end = start + 1; end < this.monomerCount && structureTags[end] == 't'; ++end) { +} +end--; +if (end >= start + 2) { +this.addStructureProtected(J.c.STR.TURN, null, null, 0, start, end); +}start = end; +}} +}, "~B"); +Clazz_defineMethod(c$, "isTurn", +function(psi, phi){ +return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.TURN), psi, phi); +}, "~N,~N"); +Clazz_defineMethod(c$, "isSheet", +function(psi, phi){ +return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.SHEET), psi, phi); +}, "~N,~N"); +Clazz_defineMethod(c$, "isHelix", +function(psi, phi){ +return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.HELIX), psi, phi); +}, "~N,~N"); +c$.checkPhiPsi = Clazz_defineMethod(c$, "checkPhiPsi", +function(list, psi, phi){ +for (var i = 0; i < list.length; i += 4) if (phi >= list[i] && phi <= list[i + 1] && psi >= list[i + 2] && psi <= list[i + 3]) return true; + +return false; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "setStructureList", +function(structureList){ +this.structureList = structureList; +}, "java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.BioModelSet", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.PT", "$.SB", "J.api.Interface", "J.c.STR", "JM.Group", "JM.BioResolver", "JS.T", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.ms = null; +this.ext = null; +this.unitIdSets = null; +Clazz_instantialize(this, arguments);}, JM, "BioModelSet", null); +Clazz_defineMethod(c$, "getBioExt", +function(){ +return (this.ext == null ? (this.ext = (J.api.Interface.getInterface("JM.BioExt", this.vwr, "script"))).set(this.vwr, this.vwr.ms) : this.ext); +}); +Clazz_defineMethod(c$, "set", +function(vwr, ms){ +this.vwr = vwr; +this.ms = ms; +this.unitIdSets = null; +if (this.ext != null) this.ext.set(vwr, ms); +return this; +}, "JV.Viewer,JM.ModelSet"); +Clazz_defineMethod(c$, "calcAllRasmolHydrogenBonds", +function(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, dsspVersion){ +var am = this.ms.am; +if (vHBonds == null) { +var bsAtoms = bsA; +if (bsB != null && !bsA.equals(bsB)) (bsAtoms = JU.BSUtil.copy(bsA)).or(bsB); +var bsDelete = new JU.BS(); +var bsOK = new JU.BS(); +var models = this.ms.am; +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if ((bond.order & 28672) == 0) continue; +if (bsAtoms.get(bond.atom1.i)) bsDelete.set(i); + else bsOK.set(models[bond.atom1.mi].trajectoryBaseIndex); +} +for (var i = this.ms.mc; --i >= 0; ) if (models[i].isBioModel) models[i].hasRasmolHBonds = bsOK.get(i); + +if (bsDelete.nextSetBit(0) >= 0) this.ms.deleteBonds(bsDelete, false); +}for (var i = this.ms.mc; --i >= 0; ) if (am[i].isBioModel && !this.ms.isTrajectorySubFrame(i)) (am[i]).getRasmolHydrogenBonds(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, dsspVersion); + +}, "JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS,~N"); +Clazz_defineMethod(c$, "calcSelectedMonomersCount", +function(){ +var bsSelected = this.vwr.bsA(); +for (var i = this.ms.mc; --i >= 0; ) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +for (var j = m.bioPolymerCount; --j >= 0; ) m.bioPolymers[j].calcSelectedMonomersCount(bsSelected); + +} +}); +Clazz_defineMethod(c$, "calculateAllPolymers", +function(groups, groupCount, baseGroupIndex, modelsExcluded){ +var checkConnections = !this.vwr.getBoolean(603979896); +if (groupCount < 0) groupCount = groups.length; +if (modelsExcluded != null) for (var j = 0; j < groupCount; ++j) { +var group = groups[j]; +if (Clazz_instanceOf(group,"JM.Monomer")) { +if ((group).bioPolymer != null && (!modelsExcluded.get(group.chain.model.modelIndex))) (group).setBioPolymer(null, -1); +}} +for (var i = 0, mc = this.ms.mc; i < mc; i++) if ((modelsExcluded == null || !modelsExcluded.get(i)) && this.ms.am[i].isBioModel) { +for (var pt = 0, j = baseGroupIndex; j < groupCount; ++j, pt++) { +var g = groups[j]; +var model = g.getModel(); +if (!model.isBioModel || !(Clazz_instanceOf(g,"JM.Monomer")) || g.getLeadAtom() == null) continue; +var doCheck = checkConnections && !this.ms.isJmolDataFrameForModel(this.ms.at[g.getLeadAtom().i].mi); +var bp = ((g).bioPolymer == null ? JM.BioResolver.allocateBioPolymer(groups, j, doCheck, pt) : null); +if (bp == null || bp.monomerCount == 0) continue; +var n = (model).addBioPolymer(bp); +j += n - 1; +pt += n - 1; +} +} +}, "~A,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "calculateAllStructuresExcept", +function(alreadyDefined, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version){ +var ret = ""; +var bsModels = JU.BSUtil.copyInvert(alreadyDefined, this.ms.mc); +if (setStructure) this.setAllDefaultStructure(bsModels); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (this.ms.am[i].isBioModel) ret += (this.ms.am[i]).calculateStructures(asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version); + +if (setStructure) this.ms.setStructureIndexes(); +return ret; +}, "JU.BS,~B,~B,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "calculateAllStuctures", +function(bsAtoms, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, version){ +if (version <= 0) version = 2; +var bsAllAtoms = new JU.BS(); +var bsModelsExcluded = JU.BSUtil.copyInvert(this.modelsOf(bsAtoms, bsAllAtoms), this.ms.mc); +if (!setStructure) return this.ms.calculateStructuresAllExcept(bsModelsExcluded, asDSSP, doReport, dsspIgnoreHydrogen, false, false, version); +this.ms.recalculatePolymers(bsModelsExcluded); +var ret = this.ms.calculateStructuresAllExcept(bsModelsExcluded, asDSSP, doReport, dsspIgnoreHydrogen, true, false, version); +this.vwr.shm.resetBioshapes(bsAllAtoms); +this.ms.setStructureIndexes(); +return ret; +}, "JU.BS,~B,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "calculateStraightnessAll", +function(){ +this.getBioExt().calculateStraightnessAll(); +}); +Clazz_defineMethod(c$, "calculateStruts", +function(bs1, bs2){ +return this.getBioExt().calculateAllstruts(this.vwr, this.ms, bs1, bs2); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getAllDefaultStructures", +function(bsAtoms, bsModified){ +var bsModels = this.modelsOf(bsAtoms, bsModified); +var ret = new JU.SB(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (this.ms.am[i].isBioModel && (this.ms.am[i]).defaultStructure != null) ret.append((this.ms.am[i]).defaultStructure); + +return ret.toString(); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getAllHeteroList", +function(modelIndex){ +var htFull = new java.util.Hashtable(); +var ok = false; +for (var i = this.ms.mc; --i >= 0; ) if (modelIndex < 0 || i == modelIndex) { +var ht = this.ms.getInfo(i, "hetNames"); +if (ht == null) continue; +ok = true; +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +htFull.put(key, entry.getValue()); +} +} +return (ok ? htFull : null); +}, "~N"); +Clazz_defineMethod(c$, "getAllPolymerInfo", +function(bs, info){ +this.getBioExt().getAllPolymerInfo(bs, info); +}, "JU.BS,java.util.Map"); +Clazz_defineMethod(c$, "getAllPolymerPointsAndVectors", +function(bs, vList, isTraceAlpha, sheetSmoothing){ +for (var i = 0; i < this.ms.mc; ++i) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +var last = 2147483646; +for (var ip = 0; ip < m.bioPolymerCount; ip++) last = m.bioPolymers[ip].getPolymerPointsAndVectors(last, bs, vList, isTraceAlpha, sheetSmoothing); + +} +}, "JU.BS,JU.Lst,~B,~N"); +Clazz_defineMethod(c$, "getAllSequenceBits", +function(specInfo, bsAtoms, bsResult){ +if (specInfo.length > 0) { +if (bsAtoms == null) bsAtoms = this.vwr.getAllAtoms(); +if (specInfo.indexOf('|') < specInfo.lastIndexOf('|')) return this.getAllUnitIds(specInfo, bsAtoms, bsResult); +var am = this.ms.am; +for (var i = this.ms.mc; --i >= 0; ) if (am[i].isBioModel) { +var m = am[i]; +var lenInfo = specInfo.length; +for (var ip = 0; ip < m.bioPolymerCount; ip++) { +var sequence = m.bioPolymers[ip].getSequence(); +var j = -1; +while ((j = sequence.indexOf(specInfo, ++j)) >= 0) m.bioPolymers[ip].getPolymerSequenceAtoms(j, lenInfo, bsAtoms, bsResult); + +} +} +}return bsResult; +}, "~S,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getAtomBitsBS", +function(tokType, bsInfo, bs){ +var at = this.ms.at; +var ac = this.ms.ac; +var i = 0; +var g; +switch (tokType) { +case 136314895: +case 2097184: +var type = (tokType == 136314895 ? J.c.STR.HELIX : J.c.STR.SHEET); +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isWithinStructure(type)) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097188: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isCarbohydrate()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097156: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isDna()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097166: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isNucleic()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097168: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isProtein()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097170: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isPurine()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097172: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isPyrimidine()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +case 2097174: +for (i = ac; --i >= 0; ) { +if (at[i] == null) continue; +if ((g = at[i].group).isRna()) g.setAtomBits(bs); +i = g.firstAtomIndex; +} +break; +} +if (i < 0) return bs; +var i0 = bsInfo.nextSetBit(0); +if (i0 < 0) return bs; +i = 0; +switch (tokType) { +case 1094713362: +for (i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) { +var iPolymer = at[i].group.getBioPolymerIndexInModel(); +if (iPolymer >= 0) (at[i].group).bioPolymer.setAtomBitsAndClear(bs, bsInfo); +} +break; +case 1639976963: +for (i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) { +var structure = at[i].group.getStructure(); +if (structure != null) structure.setAtomBitsAndClear(bs, bsInfo); +} +break; +} +if (i == 0) JU.Logger.error("MISSING getAtomBits entry for " + JS.T.nameOf(tokType)); +return bs; +}, "~N,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getAtomBitsStr", +function(tokType, specInfo, bs){ +switch (tokType) { +default: +return new JU.BS(); +case 1073741925: +return this.getAnnotationBits("domains", 1073741925, specInfo); +case 1073742189: +return this.getAnnotationBits("validation", 1073742189, specInfo); +case 1073742128: +return this.getAnnotationBits("rna3d", 1073742128, specInfo); +case 1073741863: +var s = specInfo; +bs = new JU.BS(); +return (s.length % 2 != 0 ? bs : this.ms.getAtomBitsMDa(1086324742, this.getAllBasePairBits(s), bs)); +case 1111490587: +return this.getAnnotationBits("dssr", 1111490587, specInfo); +case 1086324744: +return this.getAllSequenceBits(specInfo, null, bs); +} +}, "~N,~S,JU.BS"); +Clazz_defineMethod(c$, "getBioPolymerCountInModel", +function(modelIndex){ +if (modelIndex < 0) { +var polymerCount = 0; +for (var i = this.ms.mc; --i >= 0; ) if (!this.ms.isTrajectorySubFrame(i) && this.ms.am[i].isBioModel) polymerCount += (this.ms.am[i]).getBioPolymerCount(); + +return polymerCount; +}return (this.ms.isTrajectorySubFrame(modelIndex) || !this.ms.am[modelIndex].isBioModel ? 0 : (this.ms.am[modelIndex]).getBioPolymerCount()); +}, "~N"); +Clazz_defineMethod(c$, "getFullProteinStructureState", +function(bsAtoms, mode){ +var taintedOnly = (mode == 1073742327); +if (taintedOnly && !this.ms.proteinStructureTainted) return ""; +var scriptMode = (mode == 1073742158 || mode == 1073742327); +var atoms = this.ms.at; +var at0 = (bsAtoms == null ? this.vwr.getAllAtoms() : bsAtoms).nextSetBit(0); +if (at0 < 0) return ""; +if (bsAtoms != null && mode == 4138) { +bsAtoms = JU.BSUtil.copy(bsAtoms); +for (var i = this.ms.ac; --i >= 0; ) if (atoms[i] == null || Float.isNaN(atoms[i].group.getGroupParameter(1111490569)) || Float.isNaN(atoms[i].group.getGroupParameter(1111490570))) bsAtoms.clear(i); + +}var at1 = (bsAtoms == null ? this.vwr.getAllAtoms() : bsAtoms).length() - 1; +var im0 = atoms[at0].mi; +var im1 = atoms[at1].mi; +var lstStr = new JU.Lst(); +var map = new java.util.Hashtable(); +var cmd = new JU.SB(); +for (var im = im0; im <= im1; im++) { +if (!this.ms.am[im].isBioModel) continue; +var m = this.ms.am[im]; +if (taintedOnly && !m.structureTainted) continue; +var bsA = new JU.BS(); +bsA.or(m.bsAtoms); +bsA.andNot(m.bsAtomsDeleted); +var i0 = bsA.nextSetBit(0); +if (i0 < 0) continue; +if (scriptMode) { +cmd.append(" structure none ").append(JU.Escape.eBS(this.ms.getModelAtomBitSetIncludingDeleted(im, false))).append(" \t# model=" + this.ms.getModelNumberDotted(im)).append(";\n"); +}var ps; +for (var i = i0; i >= 0; i = bsA.nextSetBit(i + 1)) { +var a = atoms[i]; +if (a == null || !(Clazz_instanceOf(a.group,"JM.AlphaMonomer")) || (ps = (a.group).proteinStructure) == null || map.containsKey(ps)) continue; +lstStr.addLast(ps); +map.put(ps, Boolean.TRUE); +} +} +this.getStructureLines(bsAtoms, cmd, lstStr, J.c.STR.HELIX, scriptMode, mode); +this.getStructureLines(bsAtoms, cmd, lstStr, J.c.STR.SHEET, scriptMode, mode); +this.getStructureLines(bsAtoms, cmd, lstStr, J.c.STR.TURN, scriptMode, mode); +return cmd.toString(); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getGroupsWithinAll", +function(nResidues, bs){ +var bsResult = new JU.BS(); +var bsCheck = this.ms.getIterativeModels(false); +for (var iModel = this.ms.mc; --iModel >= 0; ) if (bsCheck.get(iModel) && this.ms.am[iModel].isBioModel) { +var m = this.ms.am[iModel]; +for (var i = m.bioPolymerCount; --i >= 0; ) m.bioPolymers[i].getRangeGroups(nResidues, bs, bsResult); + +} +return bsResult; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getIdentifierOrNull", +function(identifier){ +var len = identifier.length; +var pt = 0; +while (pt < len && JU.PT.isLetter(identifier.charAt(pt))) ++pt; + +var bs = this.ms.getSpecNameOrNull(identifier.substring(0, pt), false); +if (pt == len) return bs; +if (bs == null) bs = new JU.BS(); +var pt0 = pt; +while (pt < len && JU.PT.isDigit(identifier.charAt(pt))) ++pt; + +var seqNumber = 0; +try { +seqNumber = Integer.parseInt(identifier.substring(pt0, pt)); +} catch (nfe) { +if (Clazz_exceptionOf(nfe,"NumberFormatException")){ +return null; +} else { +throw nfe; +} +} +var insertionCode = ' '; +if (pt < len && identifier.charAt(pt) == '^') if (++pt < len) insertionCode = identifier.charAt(pt); +var seqcode = JM.Group.getSeqcodeFor(seqNumber, insertionCode); +var bsInsert = this.ms.getSeqcodeBits(seqcode, false); +if (bsInsert == null) { +if (insertionCode != ' ') bsInsert = this.ms.getSeqcodeBits(Character.toUpperCase(identifier.charAt(pt)).charCodeAt(0), false); +if (bsInsert == null) return null; +pt++; +}bs.and(bsInsert); +if (pt >= len) return bs; +if (pt != len - 1) return null; +bs.and(this.ms.getChainBits(identifier.charAt(pt).charCodeAt(0))); +return bs; +}, "~S"); +Clazz_defineMethod(c$, "mutate", +function(bs, group, sequence, alphaType, phipsi){ +return this.getBioExt().mutate(this.vwr, bs, group, sequence, alphaType, phipsi); +}, "JU.BS,~S,~A,~S,~A"); +Clazz_defineMethod(c$, "recalculateAllPolymers", +function(bsModelsExcluded, groups){ +for (var i = 0; i < this.ms.mc; i++) if (this.ms.am[i].isBioModel && !bsModelsExcluded.get(i)) (this.ms.am[i]).clearBioPolymers(); + +this.calculateAllPolymers(groups, -1, 0, bsModelsExcluded); +}, "JU.BS,~A"); +Clazz_defineMethod(c$, "recalculatePoints", +function(modelIndex){ +if (modelIndex < 0) { +for (var i = this.ms.mc; --i >= 0; ) if (!this.ms.isTrajectorySubFrame(i) && this.ms.am[i].isBioModel) (this.ms.am[i]).recalculateLeadMidpointsAndWingVectors(); + +return; +}if (!this.ms.isTrajectorySubFrame(modelIndex) && this.ms.am[modelIndex].isBioModel) (this.ms.am[modelIndex]).recalculateLeadMidpointsAndWingVectors(); +}, "~N"); +Clazz_defineMethod(c$, "setAllConformation", +function(bsAtoms){ +this.vwr.ms.recalculatePositionDependentQuantities(bsAtoms, null); +var bsModels = this.ms.getModelBS(bsAtoms, false); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +if (m.altLocCount > 0) for (var j = m.bioPolymerCount; --j >= 0; ) m.bioPolymers[j].setConformation(bsAtoms); + +} +}, "JU.BS"); +Clazz_defineMethod(c$, "setAllProteinType", +function(bs, type){ +var monomerIndexCurrent = -1; +var bsModels = this.ms.getModelBS(bs, false); +this.setAllDefaultStructure(bsModels); +var groups = this.ms.getGroups(); +var lastStrucNo = 0; +var lastResNo = -2147483648; +var lastPolymer = null; +var lastModel = null; +var isNone = (type === J.c.STR.NONE); +for (var i = 0; i < groups.length; i++) { +var g = groups[i]; +if (g.getBioPolymerLength() == 0 || !bs.get(g.firstAtomIndex)) continue; +var m = g.getModel(); +if (!isNone) { +if (m !== lastModel) { +lastModel = m; +lastStrucNo = 0; +lastPolymer = null; +}if (lastPolymer !== (g).bioPolymer) { +lastResNo = -2147483648; +lastPolymer = (g).bioPolymer; +}var resno = g.getResno(); +if (resno != lastResNo + 1) { +monomerIndexCurrent = -1; +}lastResNo = resno; +}monomerIndexCurrent = g.setProteinStructureType(type, monomerIndexCurrent); +if (g.getStrucNo() > 1000) g.setStrucNo(++lastStrucNo); +this.ms.proteinStructureTainted = m.structureTainted = true; +} +}, "JU.BS,J.c.STR"); +Clazz_defineMethod(c$, "setAllStructureList", +function(structureList){ +for (var iModel = this.ms.mc; --iModel >= 0; ) if (this.ms.am[iModel].isBioModel) { +var m = this.ms.am[iModel]; +m.bioPolymers = JU.AU.arrayCopyObject(m.bioPolymers, m.bioPolymerCount); +for (var i = m.bioPolymerCount; --i >= 0; ) { +var bp = m.bioPolymers[i]; +if (Clazz_instanceOf(bp,"JM.AminoPolymer")) (bp).setStructureList(structureList); +} +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "getAllBasePairBits", +function(specInfo){ +var bsA = null; +var bsB = null; +var vHBonds = new JU.Lst(); +if (specInfo.length == 0) { +bsA = bsB = this.vwr.getAllAtoms(); +this.calcAllRasmolHydrogenBonds(bsA, bsB, vHBonds, true, 1, false, null, 0); +} else { +for (var i = 0; i < specInfo.length; ) { +bsA = this.ms.getSequenceBits(specInfo.substring(i, ++i), null, new JU.BS()); +if (bsA.nextSetBit(0) < 0) continue; +bsB = this.ms.getSequenceBits(specInfo.substring(i, ++i), null, new JU.BS()); +if (bsB.nextSetBit(0) < 0) continue; +this.calcAllRasmolHydrogenBonds(bsA, bsB, vHBonds, true, 1, false, null, 0); +} +}var bsAtoms = new JU.BS(); +for (var i = vHBonds.size(); --i >= 0; ) { +var b = vHBonds.get(i); +bsAtoms.set(b.atom1.i); +bsAtoms.set(b.atom2.i); +} +return bsAtoms; +}, "~S"); +Clazz_defineMethod(c$, "getAllUnitIds", +function(specInfo, bsSelected, bsResult){ +var maps = this.unitIdSets; +if (maps == null) { +maps = this.unitIdSets = new Array(7); +for (var i = 0; i < 7; i++) maps[i] = new java.util.Hashtable(); + +for (var i = this.ms.mc; --i >= 0; ) { +var m = this.ms.am[i]; +if (!m.isBioModel) continue; +if (this.ms.isTrajectory(i)) m = this.ms.am[i = m.trajectoryBaseIndex]; +var num = "|" + this.ms.getInfo(i, "modelNumber"); +this.checkMap(maps[0], this.ms.getInfo(i, "modelName") + num, m.bsAtoms); +this.checkMap(maps[0], num, m.bsAtoms); +} +}var bsModelChain = null; +var lastModelChain = null; +var bsTemp = new JU.BS(); +var units = JU.PT.getTokens(JU.PT.replaceAllCharacters(specInfo, ", \t\n[]\"=", " ")); +var ptrs = Clazz_newIntArray (8, 0); +for (var i = units.length; --i >= 0; ) { +var unit = units[i] + "|"; +if (unit.length < 5) continue; +var bsPtr = 0; +for (var j = 0, n = 0, pt = unit.lastIndexOf('|') + 1; j < pt && n < 8; j++) { +if (unit.charAt(j) == '|') ptrs[n++] = j; + else bsPtr |= 1 << n; +} +if ((bsPtr & 0x16) != 0x16) continue; +bsTemp.clearAll(); +bsTemp.or(bsSelected); +var mchain = unit.substring(0, ptrs[2]); +if (lastModelChain != null && lastModelChain.equals(mchain)) { +bsTemp.and(bsModelChain); +} else { +if (!this.addUnit(1094717454, unit.substring(0, ptrs[1]).toUpperCase(), bsTemp, maps[0]) || !this.addUnit(1073742357, unit.substring(ptrs[1] + 1, ptrs[2]), bsTemp, maps[1])) continue; +bsModelChain = JU.BSUtil.copy(bsTemp); +lastModelChain = mchain; +}var haveAtom = ((bsPtr & (32)) != 0); +var haveAlt = ((bsPtr & (64)) != 0); +if (!this.addUnit(1094715412, unit.substring(ptrs[3] + 1, ptrs[4]), bsTemp, maps[2]) || !this.addUnit(5, ((bsPtr & (128)) == 0 ? "\0" : unit.substring(ptrs[6] + 1, ptrs[7])), bsTemp, maps[3]) || (haveAtom ? !this.addUnit(1086326786, unit.substring(ptrs[4] + 1, ptrs[5]).toUpperCase(), bsTemp, maps[4]) || !this.addUnit(1073742355, unit.substring(ptrs[5] + 1, ptrs[6]), bsTemp, maps[5]) : haveAlt && !this.addUnit(1094717448, unit.substring(ptrs[5] + 1, ptrs[6]), bsTemp, maps[6]))) continue; +bsResult.or(bsTemp); +} +return bsResult; +}, "~S,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "checkMap", +function(map, key, bsAtoms){ +var bs = JU.BSUtil.copy(bsAtoms); +var bs0 = map.get(key); +if (bs0 == null) map.put(key, bs0 = bs); + else bs0.or(bs); +return bs0; +}, "java.util.Map,~S,JU.BS"); +Clazz_defineMethod(c$, "addUnit", +function(tok, key, bsTemp, map){ +var bs = map.get(key); +if (bs == null) { +var o; +switch (tok) { +default: +return false; +case 1073742357: +o = Integer.$valueOf(this.vwr.getChainID(key, false)); +break; +case 1094715412: +o = Integer.$valueOf(JU.PT.parseInt(key)); +break; +case 5: +o = Integer.$valueOf(key.charAt(0).charCodeAt(0)); +break; +case 1094717448: +bs = this.ms.getAtomBitsMDa(tok = 1073742355, null, new JU.BS()); +case 1086326786: +o = key; +break; +case 1073742355: +o = (key.length == 0 ? null : key); +break; +} +map.put(key, bs = this.ms.getAtomBitsMDa(tok, o, (bs == null ? new JU.BS() : bs))); +}bsTemp.and(bs); +return (bsTemp.nextSetBit(0) >= 0); +}, "~N,~S,JU.BS,java.util.Map"); +Clazz_defineMethod(c$, "getAnnotationBits", +function(name, tok, specInfo){ +var bs = new JU.BS(); +var pa = this.vwr.getAnnotationParser(name.equals("dssr")); +var ann; +for (var i = this.ms.mc; --i >= 0; ) if ((ann = this.ms.getInfo(i, name)) != null) bs.or(pa.getAtomBits(this.vwr, specInfo, (this.ms.am[i]).getCachedAnnotationMap(name + " V ", ann), this.ms.am[i].dssrCache, tok, i, this.ms.am[i].bsAtoms)); + +return bs; +}, "~S,~N,~S"); +Clazz_defineMethod(c$, "getStructureLines", +function(bsAtoms, cmd, lstStr, type, scriptMode, mode){ +var showMode = (mode == 134222350); +var nHelix = 0; +var nSheet = 0; +var nTurn = 0; +var sid = null; +var bs = new JU.BS(); +var n = 0; +for (var i = 0, ns = lstStr.size(); i < ns; i++) { +var ps = lstStr.get(i); +if (ps.type !== type) continue; +var m1 = ps.findMonomer(bsAtoms, true); +var m2 = ps.findMonomer(bsAtoms, false); +if (m1 == null || m2 == null) continue; +var iModel = ps.apolymer.model.modelIndex; +var comment = (scriptMode ? " \t# model=" + this.ms.getModelNumberDotted(iModel) : null); +var res1 = m1.getResno(); +var res2 = m2.getResno(); +var subtype = ps.subtype; +switch (type) { +case J.c.STR.HELIX: +case J.c.STR.TURN: +case J.c.STR.SHEET: +n++; +if (scriptMode) { +bs.clearAll(); +ps.setAtomBits(bs); +var stype = subtype.getBioStructureTypeName(false); +cmd.append(" structure ").append(stype).append(" ").append(JU.Escape.eBS(bs)).append(comment).append(" & (" + res1 + " - " + res2 + ")").append(";\n"); +} else { +var str; +var nx; +switch (type) { +case J.c.STR.HELIX: +nx = ++nHelix; +sid = JU.PT.formatStringI("%3N %3N", "N", nx); +str = "HELIX %ID %3GROUPA %1CA %4RESA %3GROUPB %1CB %4RESB"; +var stype = null; +switch (subtype) { +case J.c.STR.HELIX: +case J.c.STR.HELIXALPHA: +stype = " 1"; +break; +case J.c.STR.HELIX310: +stype = " 5"; +break; +case J.c.STR.HELIXPI: +stype = " 3"; +break; +} +if (stype != null) str += stype; +break; +case J.c.STR.SHEET: +nx = ++nSheet; +sid = JU.PT.formatStringI("%3N %3A 0", "N", nx); +sid = JU.PT.formatStringS(sid, "A", "S" + nx); +str = "SHEET %ID %3GROUPA %1CA%4RESA %3GROUPB %1CB%4RESB"; +break; +case J.c.STR.TURN: +default: +nx = ++nTurn; +sid = JU.PT.formatStringI("%3N %3N", "N", nx); +str = "TURN %ID %3GROUPA %1CA%4RESA %3GROUPB %1CB%4RESB"; +break; +} +str = JU.PT.formatStringS(str, "ID", sid); +str = JU.PT.formatStringS(str, "GROUPA", m1.getGroup3()); +str = JU.PT.formatStringS(str, "CA", m1.getLeadAtom().getChainIDStr()); +str = JU.PT.formatStringI(str, "RESA", res1); +str = JU.PT.formatStringS(str, "GROUPB", m2.getGroup3()); +str = JU.PT.formatStringS(str, "CB", m2.getLeadAtom().getChainIDStr()); +str = JU.PT.formatStringI(str, "RESB", res2); +cmd.append(str); +if (showMode) cmd.append(" strucno= ").appendI(ps.strucNo); +cmd.append("\n"); +}} +} +if (n > 0) cmd.append("\n"); +return n; +}, "JU.BS,JU.SB,JU.Lst,J.c.STR,~B,~N"); +Clazz_defineMethod(c$, "modelsOf", +function(bsAtoms, bsAtomsRet){ +var bsModels = JU.BS.newN(this.ms.mc); +var isAll = (bsAtoms == null); +var i0 = (isAll ? this.ms.ac - 1 : bsAtoms.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsAtoms.nextSetBit(i + 1))) { +if (this.ms.at[i] == null) continue; +var modelIndex = this.ms.am[this.ms.at[i].mi].trajectoryBaseIndex; +if (this.ms.isJmolDataFrameForModel(modelIndex)) continue; +bsModels.set(modelIndex); +bsAtomsRet.set(i); +} +return bsModels; +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "setAllDefaultStructure", +function(bsModels){ +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (this.ms.am[i].isBioModel) { +var m = this.ms.am[i]; +if (m.defaultStructure == null) m.defaultStructure = this.getFullProteinStructureState(m.bsAtoms, 1073742158); +} +}, "JU.BS"); +Clazz_defineMethod(c$, "getAminoAcidValenceAndCharge", +function(s, atomName, aaRet){ +return this.getBioExt().getAminoAcidValenceAndCharge(s, atomName, aaRet); +}, "~S,~S,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Model"], "JM.BioModel", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.SB", "J.api.Interface", "JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.bioPolymerCount = 0; +this.bioPolymers = null; +this.isMutated = false; +this.defaultStructure = null; +Clazz_instantialize(this, arguments);}, JM, "BioModel", JM.Model); +Clazz_defineMethod(c$, "setBioModel", +function(modelSet, modelIndex, trajectoryBaseIndex, jmolData, properties, auxiliaryInfo){ +this.setupArrays(); +this.vwr = modelSet.vwr; +this.set(modelSet, modelIndex, trajectoryBaseIndex, jmolData, properties, auxiliaryInfo); +this.isBioModel = true; +this.vwr.getJBR().getBioModelSet(modelSet); +this.clearBioPolymers(); +modelSet.am[modelIndex] = this; +this.pdbID = auxiliaryInfo.get("name"); +return this; +}, "JM.ModelSet,~N,~N,~S,java.util.Properties,java.util.Map"); +Clazz_defineMethod(c$, "addBioPolymer", +function(polymer){ +if (this.bioPolymers.length == 0) this.clearBioPolymers(); +if (this.bioPolymerCount == this.bioPolymers.length) this.bioPolymers = JU.AU.doubleLength(this.bioPolymers); +polymer.bioPolymerIndexInModel = this.bioPolymerCount; +this.bioPolymers[this.bioPolymerCount++] = polymer; +return polymer.monomerCount; +}, "JM.BioPolymer"); +Clazz_defineMethod(c$, "addSecondaryStructure", +function(type, structureID, serialID, strandCount, startChainID, startSeqcode, endChainID, endSeqcode, istart, iend, bsAssigned){ +for (var i = this.bioPolymerCount; --i >= 0; ) if (Clazz_instanceOf(this.bioPolymers[i],"JM.AlphaPolymer")) (this.bioPolymers[i]).addStructure(type, structureID, serialID, strandCount, startChainID, startSeqcode, endChainID, endSeqcode, istart, iend, bsAssigned); + +}, "J.c.STR,~S,~S,~N,~N,~N,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "addStructureByBS", +function(count, dsspType, type, bs){ +for (var i = this.bioPolymerCount; --i >= 0; ) { +var b = this.bioPolymers[i]; +if (Clazz_instanceOf(b,"JM.AlphaPolymer")) count = (this.bioPolymers[i]).setStructureBS(++count, dsspType, type, bs, true); +} +}, "~N,~N,J.c.STR,JU.BS"); +Clazz_defineMethod(c$, "calculateDssx", +function(vHBonds, doReport, dsspIgnoreHydrogen, setStructure, version){ +var haveProt = false; +var haveNucl = false; +for (var i = 0; i < this.bioPolymerCount && !(haveProt && haveNucl); i++) { +if (this.bioPolymers[i].isNucleic()) haveNucl = true; + else if (Clazz_instanceOf(this.bioPolymers[i],"JM.AminoPolymer")) haveProt = true; +} +var s = ""; +if (haveProt) s += (J.api.Interface.getOption("dssx.DSSP", this.vwr, "ms")).calculateDssp(this.bioPolymers, this.bioPolymerCount, vHBonds, doReport, dsspIgnoreHydrogen, setStructure, version); +if (haveNucl && this.auxiliaryInfo.containsKey("dssr") && vHBonds != null) s += this.vwr.getAnnotationParser(true).getHBonds(this.ms, this.modelIndex, vHBonds, doReport); +return s; +}, "JU.Lst,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "calculateStructures", +function(asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version){ +if (this.bioPolymerCount == 0 || !setStructure && !asDSSP) return ""; +this.ms.proteinStructureTainted = this.structureTainted = true; +if (setStructure) for (var i = this.bioPolymerCount; --i >= 0; ) if (!asDSSP || this.bioPolymers[i].monomers[0].getNitrogenAtom() != null) this.bioPolymers[i].clearStructures(); + +if (!asDSSP || includeAlpha) for (var i = this.bioPolymerCount; --i >= 0; ) if (Clazz_instanceOf(this.bioPolymers[i],"JM.AlphaPolymer")) (this.bioPolymers[i]).calculateStructures(includeAlpha); + +return (asDSSP ? this.calculateDssx(null, doReport, dsspIgnoreHydrogen, setStructure, version) : ""); +}, "~B,~B,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "clearBioPolymers", +function(){ +this.bioPolymers = new Array(8); +this.bioPolymerCount = 0; +}); +Clazz_overrideMethod(c$, "fixIndices", +function(modelIndex, nAtomsDeleted, bsDeleted){ +this.fixIndicesM(modelIndex, nAtomsDeleted, bsDeleted); +this.recalculateLeadMidpointsAndWingVectors(); +}, "~N,~N,JU.BS"); +Clazz_overrideMethod(c$, "freeze", +function(){ +this.freezeM(); +this.bioPolymers = JU.AU.arrayCopyObject(this.bioPolymers, this.bioPolymerCount); +return true; +}); +Clazz_defineMethod(c$, "getBioBranches", +function(biobranches){ +var bsBranch; +for (var j = 0; j < this.bioPolymerCount; j++) { +bsBranch = new JU.BS(); +this.bioPolymers[j].getRange(bsBranch, this.isMutated); +var iAtom = bsBranch.nextSetBit(0); +if (iAtom >= 0) { +if (biobranches == null) biobranches = new JU.Lst(); +biobranches.addLast(bsBranch); +}} +return biobranches; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getBioPolymerCount", +function(){ +return this.bioPolymerCount; +}); +Clazz_defineMethod(c$, "getCachedAnnotationMap", +function(key, ann){ +var cache = (this.dssrCache == null && ann != null ? this.dssrCache = new java.util.Hashtable() : this.dssrCache); +if (cache == null) return null; +var annotv = cache.get(key); +if (annotv == null && ann != null) { +annotv = (Clazz_instanceOf(ann,"JS.SV") || Clazz_instanceOf(ann,"java.util.Hashtable") ? ann : this.vwr.parseJSONMap(ann)); +cache.put(key, annotv); +}return (Clazz_instanceOf(annotv,"JS.SV") || Clazz_instanceOf(annotv,"java.util.Hashtable") ? annotv : null); +}, "~S,~O"); +Clazz_defineMethod(c$, "getConformation", +function(conformationIndex0, doSet, bsAtoms, bsRet){ +var isConfig0 = (conformationIndex0 == 0); +if (this.altLocCount == 0) { +if (isConfig0) bsRet.or(bsAtoms); +return; +}var isFirst = (conformationIndex0 <= 0); +var atoms = this.ms.at; +var isSpace = (conformationIndex0 == -32); +var thisAltLoc = (isFirst && !isSpace ? String.fromCharCode(-conformationIndex0) : '\0'); +if (isFirst) { +var lastChain = -2147483648; +var lastIns = '\u0000'; +var lastRes = -2147483648; +var map = new java.util.Hashtable(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var atom = atoms[i]; +var chain = atom.getChainID(); +var res = atom.getResno(); +var ins = atom.getInsertionCode(); +if (res != lastRes || ins != lastIns || chain != lastChain) { +lastChain = chain; +lastRes = res; +lastIns = ins; +map.clear(); +}var name = atom.getAtomName(); +var locs = map.get(name); +if (locs == null) map.put(name, locs = Clazz_newIntArray (1, 0)); +var i0 = locs[0] - 1; +if (i0 < 0) { +if (i0 == -2) { +bsAtoms.clear(i); +continue; +}if (isSpace) { +if (atom.altloc != '\0') { +bsAtoms.clear(i); +}} else { +locs[0] = i + 1; +}continue; +}if (isConfig0) { +bsAtoms.clear(i); +locs[0] = -1; +} else if (atom.altloc == thisAltLoc) { +locs[0] = -1; +} else { +i0 = i; +}bsAtoms.clear(i0); +} +} else { +conformationIndex0--; +var g = null; +var ch = '\u0000'; +var conformationIndex = conformationIndex0; +var bsFound = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var atom = atoms[i]; +var altloc = atom.altloc; +if (altloc == '\0') continue; +if (atom.group !== g) { +g = atom.group; +ch = '\0'; +conformationIndex = conformationIndex0; +bsFound.clearAll(); +}if (conformationIndex >= 0 && altloc != ch && !bsFound.get(altloc.charCodeAt(0))) { +ch = altloc; +conformationIndex--; +bsFound.set(altloc.charCodeAt(0)); +}if (conformationIndex >= 0 || altloc != ch) bsAtoms.clear(i); +} +}if (bsAtoms.nextSetBit(0) >= 0) { +bsRet.or(bsAtoms); +if (doSet) for (var j = this.bioPolymerCount; --j >= 0; ) this.bioPolymers[j].setConformation(bsAtoms); + +}}, "~N,~B,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getDefaultLargePDBRendering", +function(sb, maxAtoms){ +var bs = new JU.BS(); +if (this.getBondCount() == 0) bs = this.bsAtoms; +if (bs !== this.bsAtoms) for (var i = 0; i < this.bioPolymerCount; i++) this.bioPolymers[i].getRange(bs, this.isMutated); + +if (bs.nextSetBit(0) < 0) return; +var bs2 = new JU.BS(); +if (bs === this.bsAtoms) { +bs2 = bs; +} else { +for (var i = 0; i < this.bioPolymerCount; i++) if (this.bioPolymers[i].getType() == 0) this.bioPolymers[i].getRange(bs2, this.isMutated); + +}if (bs2.nextSetBit(0) >= 0) sb.append("select ").append(JU.Escape.eBS(bs2)).append(";backbone only;"); +if (this.act <= maxAtoms) return; +sb.append("select ").append(JU.Escape.eBS(bs)).append(" & connected; wireframe only;"); +if (bs !== this.bsAtoms) { +bs2.clearAll(); +bs2.or(this.bsAtoms); +bs2.andNot(bs); +if (bs2.nextSetBit(0) >= 0) sb.append("select " + JU.Escape.eBS(bs2) + " & !connected;stars 0.5;spacefill off;"); +}}, "JU.SB,~N"); +Clazz_defineMethod(c$, "getFullPDBHeader", +function(){ +if (this.modelIndex < 0) return ""; +var info = this.auxiliaryInfo.get("fileHeader"); +if (info != null) return info; +return this.ms.bioModelset.getBioExt().getFullPDBHeader(this.auxiliaryInfo); +}); +Clazz_defineMethod(c$, "getPdbData", +function(type, ctype, isDraw, bsSelected, out, tokens, pdbCONECT, bsWritten){ +this.ms.bioModelset.getBioExt().getPdbDataM(this, this.vwr, type, ctype, isDraw, bsSelected, out, tokens, pdbCONECT, bsWritten); +}, "~S,~S,~B,JU.BS,JU.OC,~A,JU.SB,JU.BS"); +Clazz_defineMethod(c$, "getRasmolHydrogenBonds", +function(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, version){ +var doAdd = (vHBonds == null); +if (doAdd) vHBonds = new JU.Lst(); +if (nMax < 0) nMax = 2147483647; +var asDSSX = (bsB == null); +var bp; +var bp1; +if (asDSSX && this.bioPolymerCount > 0) { +this.calculateDssx(vHBonds, false, dsspIgnoreHydrogens, false, version); +} else { +for (var i = this.bioPolymerCount; --i >= 0; ) { +bp = this.bioPolymers[i]; +if (bp.monomerCount == 0) continue; +var type = bp.getType(); +var isRNA = false; +switch (type) { +case 1: +if (nucleicOnly) continue; +bp.calcRasmolHydrogenBonds(null, bsA, bsB, vHBonds, nMax, null, true, false); +break; +case 2: +isRNA = bp.monomers[0].isRna(); +break; +default: +continue; +} +for (var j = this.bioPolymerCount; --j >= 0; ) { +if ((bp1 = this.bioPolymers[j]) != null && (isRNA || i != j) && type == bp1.getType()) { +bp1.calcRasmolHydrogenBonds(bp, bsA, bsB, vHBonds, nMax, null, true, false); +}} +} +}if (vHBonds.size() == 0 || !doAdd) return; +this.hasRasmolHBonds = true; +for (var i = 0; i < vHBonds.size(); i++) { +var bond = vHBonds.get(i); +var atom1 = bond.atom1; +var atom2 = bond.atom2; +if (atom1.isBonded(atom2)) continue; +var index = this.ms.addHBond(atom1, atom2, bond.order, bond.getEnergy()); +if (bsHBonds != null) bsHBonds.set(index); +} +}, "JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS,~N"); +Clazz_defineMethod(c$, "getUnitID", +function(atom, flags){ +var sb = new JU.SB(); +var m = atom.group; +var noTrim = ((flags & 16) != 16); +var ch = ((flags & 8) == 8 ? m.getInsertionCode() : '\0'); +var isAll = (ch != '\0'); +if ((flags & 1) == 1 && (this.pdbID != null)) sb.append(this.pdbID); +sb.append("|").appendO(this.ms.getInfo(this.modelIndex, "modelNumber")).append("|").append(this.vwr.getChainIDStr(m.chain.chainID)).append("|").append(m.getGroup3()).append("|").appendI(m.getResno()); +if ((flags & 4) == 4) { +sb.append("|").append(atom.getAtomName()); +if (atom.altloc != '\0') sb.append("|").appendC(atom.altloc); + else if (noTrim || isAll) sb.append("|"); +} else if (noTrim || isAll) { +sb.append("||"); +}if (isAll) sb.append("|").appendC(ch); + else if (noTrim) sb.append("|"); +if (noTrim) sb.append("|"); +return sb.toString(); +}, "JM.Atom,~N"); +Clazz_defineMethod(c$, "recalculateLeadMidpointsAndWingVectors", +function(){ +for (var ip = 0; ip < this.bioPolymerCount; ip++) this.bioPolymers[ip].recalculateLeadMidpointsAndWingVectors(); + +}); +Clazz_defineMethod(c$, "resetRasmolBonds", +function(bs, dsspVersion){ +var bsDelete = new JU.BS(); +this.hasRasmolHBonds = false; +var am = this.ms.am; +var bo = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bo[i]; +if ((bond.order & 28672) != 0 && am[bond.atom1.mi].trajectoryBaseIndex == this.modelIndex) bsDelete.set(i); +} +if (bsDelete.nextSetBit(0) >= 0) this.ms.deleteBonds(bsDelete, false); +this.getRasmolHydrogenBonds(bs, bs, null, false, 2147483647, false, null, dsspVersion); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getAtomicDSSRData", +function(dssrData, dataType){ +if (this.auxiliaryInfo.containsKey("dssr")) this.vwr.getAnnotationParser(true).getAtomicDSSRData(this.ms, this.modelIndex, dssrData, dataType); +}, "~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["java.util.Hashtable", "J.c.STR"], "JM.BioResolver", ["java.util.Arrays", "JU.AU", "$.BS", "$.Measure", "$.P3", "$.P4", "$.PT", "$.SB", "$.V3", "JM.Group", "JM.AlphaMonomer", "$.AlphaPolymer", "$.AminoMonomer", "$.AminoPolymer", "$.BioModel", "$.BioModelSet", "$.CarbohydrateMonomer", "$.CarbohydratePolymer", "$.NucleicMonomer", "$.NucleicPolymer", "$.PhosphorusMonomer", "$.PhosphorusPolymer", "JU.BSUtil", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.vAB = null; +this.vNorm = null; +this.plane = null; +this.ml = null; +this.ms = null; +this.bsAddedMask = null; +this.haveHsAlready = false; +this.bsAddedHydrogens = null; +this.bsAtomsForHs = null; +this.htBondMap = null; +this.htGroupBonds = null; +this.hNames = null; +this.baseBondIndex = 0; +this.hasCONECT = false; +this.bsAssigned = null; +Clazz_instantialize(this, arguments);}, JM, "BioResolver", null, java.util.Comparator); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "setLoader", +function(modelLoader){ +this.ml = modelLoader; +this.bsAddedMask = null; +this.haveHsAlready = false; +if (modelLoader == null) { +this.ms = null; +this.bsAddedHydrogens = this.bsAtomsForHs = this.bsAssigned = null; +this.htBondMap = null; +this.htGroupBonds = null; +this.hNames = null; +} else { +JM.Group.specialAtomNames = JM.BioResolver.specialAtomNames; +this.ms = modelLoader.ms; +this.vwr = modelLoader.ms.vwr; +modelLoader.specialAtomIndexes = Clazz_newIntArray (JM.BioResolver.ATOMID_MAX, 0); +this.hasCONECT = (this.ms.getInfoM(JV.JC.getBoolName(3)) === Boolean.TRUE); +}return this; +}, "JM.ModelLoader"); +Clazz_defineMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +if (JM.Group.standardGroupList == null) { +var s = new JU.SB(); +for (var i = 1; i < 42; i++) s.append(",[").append(JM.BioResolver.predefinedGroup3Names[i]).append("]"); + +s.append(",[AHR],[ALL],[AMU],[ARA],[ARB],[BDF],[BDR],[BGC],[BMA],[FCA],[FCB],[FRU],[FUC],[FUL],[GAL],[GLA],[GLC],[GXL],[GUP],[LXC],[MAN],[RAM],[RIB],[RIP],[XYP],[XYS],[CBI],[CT3],[CTR],[CTT],[LAT],[MAB],[MAL],[MLR],[MTT],[SUC],[TRE],[GCU],[MTL],[NAG],[NDG],[RHA],[SOR],[SOL],[SOE],[XYL],[A2G],[LBT],[NGA],[SIA],[SLB],[AFL],[AGC],[GLB],[NAN],[RAA]"); +JM.BioResolver.group3Count = Clazz_doubleToInt(s.length() / 6); +JM.Group.standardGroupList = s.toString(); +for (var i = 0, n = JM.BioResolver.predefinedGroup3Names.length; i < n; ++i) JM.BioResolver.addGroup3Name(JM.BioResolver.predefinedGroup3Names[i].trim()); + +}return this; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "getBioModel", +function(modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo){ +return new JM.BioModel().setBioModel(this.ms, modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo); +}, "~N,~N,~S,java.util.Properties,java.util.Map"); +Clazz_defineMethod(c$, "distinguishAndPropagateGroup", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes, atoms){ +var mask = 0; +for (var i = JM.BioResolver.ATOMID_MAX; --i >= 0; ) specialAtomIndexes[i] = -2147483648; + +for (var i = lastAtomIndex; i >= firstAtomIndex; --i) { +var specialAtomID = atoms[i].atomID; +if (specialAtomID <= 0) continue; +if (specialAtomID < 14) { +mask |= (1 << specialAtomID); +}specialAtomIndexes[specialAtomID] = i; +} +var m = null; +if ((mask & 14) == 14) m = JM.AminoMonomer.validateAndAllocate(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes, atoms); + else if (mask == 4) m = JM.AlphaMonomer.validateAndAllocateA(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes); + else if (((mask & 8128) == 8128)) m = JM.NucleicMonomer.validateAndAllocate(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes); + else if (mask == 8192) m = JM.PhosphorusMonomer.validateAndAllocateP(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes); + else if (JM.BioResolver.checkCarbohydrate(group3)) m = JM.CarbohydrateMonomer.validateAndAllocate(chain, group3, seqcode, firstAtomIndex, lastAtomIndex); +return (m != null && m.leadAtomIndex >= 0 ? m : null); +}, "JM.Chain,~S,~N,~N,~N,~A,~A"); +Clazz_defineMethod(c$, "setHaveHsAlready", +function(b){ +this.haveHsAlready = b; +}, "~B"); +Clazz_defineMethod(c$, "initializeHydrogenAddition", +function(){ +this.baseBondIndex = this.ms.bondCount; +this.bsAddedHydrogens = new JU.BS(); +this.bsAtomsForHs = new JU.BS(); +this.htBondMap = new java.util.Hashtable(); +this.htGroupBonds = new java.util.Hashtable(); +this.hNames = new Array(3); +this.vAB = new JU.V3(); +this.vNorm = new JU.V3(); +this.plane = new JU.P4(); +}); +Clazz_defineMethod(c$, "addImplicitHydrogenAtoms", +function(adapter, iGroup, nH){ +var group3 = this.ml.getGroup3(iGroup); +var nH1; +if (this.haveHsAlready && this.hasCONECT || group3 == null || (nH1 = JM.BioResolver.getStandardPdbHydrogenCount(group3)) == 0) return; +nH = (nH1 < 0 ? -1 : nH1 + nH); +var model = null; +var iFirst = this.ml.getFirstAtomIndex(iGroup); +var ac = this.ms.ac; +if (nH < 0) { +if (ac - iFirst == 1) return; +model = this.vwr.getLigandModel(group3, "ligand_", "_data", null); +if (model == null) return; +nH = adapter.getHydrogenAtomCount(model); +if (nH < 1) return; +}this.getBondInfo(adapter, group3, model); +this.ms.am[this.ms.at[iFirst].mi].isPdbWithMultipleBonds = true; +if (this.haveHsAlready) return; +this.bsAtomsForHs.setBits(iFirst, ac); +this.bsAddedHydrogens.setBits(ac, ac + nH); +var isHetero = this.ms.at[iFirst].isHetero(); +var xyz = JU.P3.new3(NaN, NaN, NaN); +var a = this.ms.at[iFirst]; +for (var i = 0; i < nH; i++) this.ms.addAtom(a.mi, a.group, 1, "H", null, 0, a.getSeqID(), 0, xyz, NaN, null, 0, 0, 1, 0, null, isHetero, 0, null, NaN).$delete(null); + +}, "J.api.JmolAdapter,~N,~N"); +Clazz_defineMethod(c$, "getBondInfo", +function(adapter, group3, model){ +if (this.htGroupBonds.get(group3) != null) return; +var bondInfo = (model == null ? this.getPdbBondInfo(group3, this.vwr.getBoolean(603979873)) : this.getLigandBondInfo(adapter, model, group3)); +if (bondInfo == null) return; +this.htGroupBonds.put(group3, Boolean.TRUE); +for (var i = 0; i < bondInfo.length; i++) { +if (bondInfo[i] == null) continue; +if (bondInfo[i][1].charAt(0) == 'H') this.htBondMap.put(group3 + "." + bondInfo[i][0], bondInfo[i][1]); + else this.htBondMap.put(group3 + ":" + bondInfo[i][0] + ":" + bondInfo[i][1], bondInfo[i][2]); +} +}, "J.api.JmolAdapter,~S,~O"); +Clazz_defineMethod(c$, "getLigandBondInfo", +function(adapter, model, group3){ +var dataIn = adapter.getBondList(model); +var htAtoms = new java.util.Hashtable(); +var iterAtom = adapter.getAtomIterator(model); +while (iterAtom.hasNext()) htAtoms.put(iterAtom.getAtomName(), iterAtom.getXYZ()); + +var bondInfo = new Array(dataIn.length * 2); +var n = 0; +for (var i = 0; i < dataIn.length; i++) { +var b = dataIn[i]; +if (b[0].charAt(0) != 'H') bondInfo[n++] = Clazz_newArray(-1, [b[0], b[1], b[2], b[1].startsWith("H") ? "0" : "1"]); +if (b[1].charAt(0) != 'H') bondInfo[n++] = Clazz_newArray(-1, [b[1], b[0], b[2], b[0].startsWith("H") ? "0" : "1"]); +} +java.util.Arrays.sort(bondInfo, this); +var t; +for (var i = 0; i < n; ) { +t = bondInfo[i]; +var a1 = t[0]; +var nH = 0; +var nC = 0; +for (; i < n && (t = bondInfo[i])[0].equals(a1); i++) { +if (t[3].equals("0")) { +nH++; +continue; +}if (t[3].equals("1")) nC++; +} +var pt = i - nH - nC; +if (nH == 1) continue; +switch (nC) { +case 1: +var sep = (nH == 2 ? '@' : '|'); +for (var j = 1; j < nH; j++) { +bondInfo[pt][1] += sep + bondInfo[pt + j][1]; +bondInfo[pt + j] = null; +} +continue; +case 2: +if (nH != 2) continue; +var name = bondInfo[pt][0]; +var name1 = bondInfo[pt + nH][1]; +var name2 = bondInfo[pt + nH + 1][1]; +var factor = name1.compareTo(name2); +JU.Measure.getPlaneThroughPoints(htAtoms.get(name1), htAtoms.get(name), htAtoms.get(name2), this.vNorm, this.vAB, this.plane); +var d = JU.Measure.distanceToPlane(this.plane, htAtoms.get(bondInfo[pt][1])) * factor; +bondInfo[pt][1] = (d > 0 ? bondInfo[pt][1] + "@" + bondInfo[pt + 1][1] : bondInfo[pt + 1][1] + "@" + bondInfo[pt][1]); +bondInfo[pt + 1] = null; +} +} +for (var i = 0; i < n; i++) { +if ((t = bondInfo[i]) != null && t[1].charAt(0) != 'H' && t[0].compareTo(t[1]) > 0) { +bondInfo[i] = null; +continue; +}if (t != null) JU.Logger.info(" ligand " + group3 + ": " + bondInfo[i][0] + " - " + bondInfo[i][1] + " order " + bondInfo[i][2]); +} +return bondInfo; +}, "J.api.JmolAdapter,~O,~S"); +Clazz_overrideMethod(c$, "compare", +function(a, b){ +return (b == null ? (a == null ? 0 : -1) : a == null ? 1 : a[0].compareTo(b[0]) < 0 ? -1 : a[0].compareTo(b[0]) > 0 ? 1 : a[3].compareTo(b[3]) < 0 ? -1 : a[3].compareTo(b[3]) > 0 ? 1 : a[1].compareTo(b[1]) < 0 ? -1 : a[1].compareTo(b[1]) > 0 ? 1 : 0); +}, "~A,~A"); +Clazz_defineMethod(c$, "finalizeHydrogens", +function(){ +this.vwr.getLigandModel(null, null, null, null); +this.finalizePdbMultipleBonds(); +this.addHydrogens(); +}); +Clazz_defineMethod(c$, "addHydrogens", +function(){ +if (this.bsAddedHydrogens.nextSetBit(0) < 0) return; +this.bsAddedMask = JU.BSUtil.copy(this.bsAddedHydrogens); +this.finalizePdbCharges(); +var nTotal = Clazz_newIntArray (1, 0); +var pts = this.ms.calculateHydrogens(this.bsAtomsForHs, nTotal, null, 256); +var groupLast = null; +var ipt = 0; +var atom; +for (var i = 0; i < pts.length; i++) { +if (pts[i] == null || (atom = this.ms.at[i]) == null) continue; +var g = atom.group; +if (g !== groupLast) { +groupLast = g; +ipt = g.lastAtomIndex; +while (this.bsAddedHydrogens.get(ipt)) ipt--; + +}var gName = atom.getGroup3(false); +var aName = atom.getAtomName(); +var hName = this.htBondMap.get(gName + "." + aName); +if (hName == null) continue; +var isChiral = hName.contains("@"); +var isMethyl = (hName.endsWith("?") || hName.indexOf("|") >= 0); +var n = pts[i].length; +if (n == 3 && !isMethyl && hName.equals("H@H2")) { +hName = "H|H2|H3"; +isMethyl = true; +isChiral = false; +}if (isChiral && n == 3 || isMethyl != (n == 3)) { +JU.Logger.info("Error adding H atoms to " + gName + g.getResno() + ": " + pts[i].length + " atoms should not be added to " + aName); +continue; +}var pt = hName.indexOf("@"); +switch (pts[i].length) { +case 1: +if (pt > 0) hName = hName.substring(0, pt); +this.setHydrogen(i, ++ipt, hName, pts[i][0]); +break; +case 2: +var hName1; +var hName2; +var d = -1; +var bonds = atom.bonds; +if (bonds != null) switch (bonds.length) { +case 2: +var atom1 = bonds[0].getOtherAtom(atom); +var atom2 = bonds[1].getOtherAtom(atom); +var factor = atom1.getAtomName().compareTo(atom2.getAtomName()); +d = JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(atom1, atom, atom2, this.vNorm, this.vAB, this.plane), pts[i][0]) * factor; +break; +} +if (pt < 0) { +JU.Logger.info("Error adding H atoms to " + gName + g.getResno() + ": expected to only need 1 H but needed 2"); +hName1 = hName2 = "H"; +} else if (d < 0) { +hName2 = hName.substring(0, pt); +hName1 = hName.substring(pt + 1); +} else { +hName1 = hName.substring(0, pt); +hName2 = hName.substring(pt + 1); +}this.setHydrogen(i, ++ipt, hName1, pts[i][0]); +this.setHydrogen(i, ++ipt, hName2, pts[i][1]); +break; +case 3: +var pt1 = hName.indexOf('|'); +if (pt1 >= 0) { +var pt2 = hName.lastIndexOf('|'); +this.hNames[0] = hName.substring(0, pt1); +this.hNames[1] = hName.substring(pt1 + 1, pt2); +this.hNames[2] = hName.substring(pt2 + 1); +} else { +this.hNames[0] = hName.$replace('?', '1'); +this.hNames[1] = hName.$replace('?', '2'); +this.hNames[2] = hName.$replace('?', '3'); +}this.setHydrogen(i, ++ipt, this.hNames[0], pts[i][0]); +this.setHydrogen(i, ++ipt, this.hNames[1], pts[i][2]); +this.setHydrogen(i, ++ipt, this.hNames[2], pts[i][1]); +break; +} +} +this.deleteUnneededAtoms(); +this.ms.fixFormalCharges(JU.BSUtil.newBitSet2(this.ml.baseAtomIndex, this.ml.ms.ac)); +}); +Clazz_defineMethod(c$, "deleteUnneededAtoms", +function(){ +var bsBondsDeleted = new JU.BS(); +for (var i = this.bsAtomsForHs.nextSetBit(0); i >= 0; i = this.bsAtomsForHs.nextSetBit(i + 1)) { +var atom = this.ms.at[i]; +if (!atom.isHetero() || atom.getElementNumber() != 8 || atom.getFormalCharge() != 0 || atom.getCovalentBondCount() != 2) continue; +var bonds = atom.bonds; +var atom1 = bonds[0].getOtherAtom(atom); +var atomH = bonds[1].getOtherAtom(atom); +if (atom1.getElementNumber() == 1) { +var a = atom1; +atom1 = atomH; +atomH = a; +}if (atomH.getElementNumber() != 1) continue; +var bonds1 = atom1.bonds; +for (var j = 0; j < bonds1.length; j++) { +if (bonds1[j].order == 2) { +var atomO = bonds1[j].getOtherAtom(atom1); +if (atomO.getElementNumber() == 8) { +this.bsAddedHydrogens.set(atomH.i); +atomH.$delete(bsBondsDeleted); +break; +}}} +} +this.ms.deleteBonds(bsBondsDeleted, true); +this.deleteAtoms(this.bsAddedHydrogens); +}); +Clazz_defineMethod(c$, "deleteAtoms", +function(bsDeletedAtoms){ +var mapOldToNew = Clazz_newIntArray (this.ms.ac, 0); +var mapNewToOld = Clazz_newIntArray (this.ms.ac - bsDeletedAtoms.cardinality(), 0); +var n = this.ml.baseAtomIndex; +var models = this.ms.am; +var atoms = this.ms.at; +for (var i = this.ml.baseAtomIndex; i < this.ms.ac; i++) { +var a = atoms[i]; +if (a == null) continue; +models[a.mi].bsAtoms.clear(i); +models[a.mi].bsAtomsDeleted.clear(i); +if (bsDeletedAtoms.get(i)) { +mapOldToNew[i] = n - 1; +models[atoms[i].mi].act--; +} else { +mapNewToOld[n] = i; +mapOldToNew[i] = n++; +}} +this.ms.msInfo.put("bsDeletedAtoms", bsDeletedAtoms); +for (var i = this.ml.baseGroupIndex; i < this.ml.groups.length; i++) { +var g = this.ml.groups[i]; +if (g.firstAtomIndex >= this.ml.baseAtomIndex) { +g.firstAtomIndex = mapOldToNew[g.firstAtomIndex]; +g.lastAtomIndex = mapOldToNew[g.lastAtomIndex]; +if (g.leadAtomIndex >= 0) g.leadAtomIndex = mapOldToNew[g.leadAtomIndex]; +}} +this.ms.adjustAtomArrays(mapNewToOld, this.ml.baseAtomIndex, n); +this.ms.calcBoundBoxDimensions(null, 1); +this.ms.resetMolecules(); +this.ms.validateBspf(false); +this.bsAddedMask = JU.BSUtil.deleteBits(this.bsAddedMask, bsDeletedAtoms); +for (var i = this.ml.baseModelIndex; i < this.ms.mc; i++) { +this.fixAnnotations(i, "domains", 1073741925); +this.fixAnnotations(i, "validation", 1073742189); +} +}, "JU.BS"); +Clazz_defineMethod(c$, "fixAnnotations", +function(i, name, type){ +var o = this.ml.ms.getInfo(i, name); +if (o != null) { +var dbObj = (this.ms.am[i]).getCachedAnnotationMap(name, o); +if (dbObj != null) this.vwr.getAnnotationParser(false).fixAtoms(i, dbObj, this.bsAddedMask, type, 20); +}}, "~N,~S,~N"); +Clazz_defineMethod(c$, "finalizePdbCharges", +function(){ +var atoms = this.ms.at; +for (var i = this.bsAtomsForHs.nextSetBit(0); i >= 0; i = this.bsAtomsForHs.nextSetBit(i + 1)) { +var a = atoms[i]; +if (a.group.getNitrogenAtom() === a && a.getCovalentBondCount() == 1) a.setFormalCharge(1); +if ((i = this.bsAtomsForHs.nextClearBit(i + 1)) < 0) break; +} +}); +Clazz_defineMethod(c$, "finalizePdbMultipleBonds", +function(){ +var htKeysUsed = new java.util.Hashtable(); +var bondCount = this.ms.bondCount; +var bonds = this.ms.bo; +for (var i = this.baseBondIndex; i < bondCount; i++) { +var a1 = bonds[i].atom1; +var a2 = bonds[i].atom2; +var g = a1.group; +if (g !== a2.group) continue; +var key = new JU.SB().append(g.getGroup3()); +key.append(":"); +var n1 = a1.getAtomName(); +var n2 = a2.getAtomName(); +if (n1.compareTo(n2) > 0) key.append(n2).append(":").append(n1); + else key.append(n1).append(":").append(n2); +var skey = key.toString(); +var type = this.htBondMap.get(skey); +if (type == null) continue; +htKeysUsed.put(skey, Boolean.TRUE); +bonds[i].setOrder(JU.PT.parseInt(type)); +} +for (var key, $key = this.htBondMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (htKeysUsed.get(key) != null) continue; +if (key.indexOf(":") < 0) { +htKeysUsed.put(key, Boolean.TRUE); +continue; +}var value = this.htBondMap.get(key); +JU.Logger.info("bond " + key + " was not used; order=" + value); +if (this.htBondMap.get(key).equals("1")) { +htKeysUsed.put(key, Boolean.TRUE); +continue; +}} +var htKeysBad = new java.util.Hashtable(); +for (var key, $key = this.htBondMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (htKeysUsed.get(key) != null) continue; +htKeysBad.put(key.substring(0, key.lastIndexOf(":")), this.htBondMap.get(key)); +} +if (htKeysBad.isEmpty()) return; +for (var i = 0; i < bondCount; i++) { +var a1 = bonds[i].atom1; +var a2 = bonds[i].atom2; +if (a1.group === a2.group) continue; +var value; +if ((value = htKeysBad.get(a1.getGroup3(false) + ":" + a1.getAtomName())) == null && ((value = htKeysBad.get(a2.getGroup3(false) + ":" + a2.getAtomName())) == null)) continue; +bonds[i].setOrder(JU.PT.parseInt(value)); +JU.Logger.info("assigning order " + bonds[i].order + " to bond " + bonds[i]); +} +}); +Clazz_defineMethod(c$, "setHydrogen", +function(iTo, iAtom, name, pt){ +if (!this.bsAddedHydrogens.get(iAtom)) return; +var atoms = this.ms.at; +this.bsAddedHydrogens.clear(iAtom); +this.ms.setAtomName(iAtom, name, false); +atoms[iAtom].setT(pt); +atoms[iAtom].atomSymmetry = atoms[iTo].atomSymmetry; +this.ml.undeleteAtom(iAtom); +this.ms.bondAtoms(atoms[iTo], atoms[iAtom], 1, this.ms.getDefaultMadFromOrder(1), null, 0, true, false); +}, "~N,~N,~S,JU.P3"); +Clazz_defineMethod(c$, "fixPropertyValue", +function(bsAtoms, data, toHydrogens){ +var atoms = this.ms.at; +var fData = data; +var newData = Clazz_newFloatArray (bsAtoms.cardinality(), 0); +var lastData = 0; +for (var pt = 0, iAtom = 0, i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1), iAtom++) { +if (atoms[i].getElementNumber() == 1) { +if (!toHydrogens) continue; +} else { +lastData = fData[pt++]; +}newData[iAtom] = lastData; +} +return newData; +}, "JU.BS,~O,~B"); +c$.allocateBioPolymer = Clazz_defineMethod(c$, "allocateBioPolymer", +function(groups, firstGroupIndex, checkConnections, pt0){ +var previous = null; +var count = 0; +for (var i = firstGroupIndex; i < groups.length; ++i) { +var group = groups[i]; +var current; +if (!(Clazz_instanceOf(group,"JM.Monomer")) || (current = group).bioPolymer != null || previous != null && previous.getClass() !== current.getClass() || checkConnections && !current.isConnectedAfter(previous)) break; +previous = current; +count++; +} +if (count < 2) return null; +var monomers = new Array(count); +for (var j = 0; j < count; ++j) monomers[j] = groups[firstGroupIndex + j]; + +if (Clazz_instanceOf(previous,"JM.AminoMonomer")) return new JM.AminoPolymer(monomers, pt0); +if (Clazz_instanceOf(previous,"JM.AlphaMonomer")) return new JM.AlphaPolymer(monomers, pt0); +if (Clazz_instanceOf(previous,"JM.NucleicMonomer")) return new JM.NucleicPolymer(monomers); +if (Clazz_instanceOf(previous,"JM.PhosphorusMonomer")) return new JM.PhosphorusPolymer(monomers); +if (Clazz_instanceOf(previous,"JM.CarbohydrateMonomer")) return new JM.CarbohydratePolymer(monomers); +JU.Logger.error("Polymer.allocatePolymer() ... no matching polymer for monomor " + previous); +throw new NullPointerException(); +}, "~A,~N,~B,~N"); +Clazz_defineMethod(c$, "iterateOverAllNewStructures", +function(adapter, atomSetCollection){ +var iterStructure = adapter.getStructureIterator(atomSetCollection); +if (iterStructure == null) return; +var bs = iterStructure.getStructuredModels(); +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.ml.structuresDefinedInFile.set(this.ml.baseModelIndex + i); + +while (iterStructure.hasNext()) if (iterStructure.getStructureType() !== J.c.STR.TURN) this.setStructure(iterStructure); + +iterStructure = adapter.getStructureIterator(atomSetCollection); +while (iterStructure.hasNext()) if (iterStructure.getStructureType() === J.c.STR.TURN) this.setStructure(iterStructure); + +}, "J.api.JmolAdapter,~O"); +Clazz_defineMethod(c$, "setStructure", +function(iterStructure){ +var t = iterStructure.getSubstructureType(); +var id = iterStructure.getStructureID(); +var serID = iterStructure.getStrandID(); +var count = iterStructure.getStrandCount(); +var atomRange = iterStructure.getAtomIndices(); +var modelRange = iterStructure.getModelIndices(); +var bsAll = iterStructure.getBSAll(); +var m0; +var m1; +var models = this.ms.am; +if (this.ml.isTrajectory) { +m0 = m1 = modelRange[0]; +} else { +m0 = modelRange[0] + this.ml.baseModelIndex; +m1 = modelRange[1] + this.ml.baseModelIndex; +}this.ml.structuresDefinedInFile.setBits(m0, m1 + 1); +var bs; +var m; +if (bsAll != null) { +for (var i = m0, t0; i <= m1; i++) if (Clazz_instanceOf((m = models[i]),"JM.BioModel")) for (var j = 0; j < 5; j++) if ((bs = bsAll[t0 = JM.BioResolver.mytypes[j]]) != null && !bs.isEmpty()) (m).addStructureByBS(0, t0, JM.BioResolver.types[j], bs); + + +return; +}var startChainID = iterStructure.getStartChainID(); +var startSequenceNumber = iterStructure.getStartSequenceNumber(); +var startInsertionCode = iterStructure.getStartInsertionCode(); +var endSequenceNumber = iterStructure.getEndSequenceNumber(); +var endChainID = iterStructure.getEndChainID(); +var endInsertionCode = iterStructure.getEndInsertionCode(); +var type = (t === J.c.STR.NOT ? J.c.STR.NONE : t); +var startSeqCode = JM.Group.getSeqcodeFor(startSequenceNumber, startInsertionCode); +var endSeqCode = JM.Group.getSeqcodeFor(endSequenceNumber, endInsertionCode); +if (this.bsAssigned == null) this.bsAssigned = new JU.BS(); +for (var i = m0, i0 = 0; i <= m1; i++) if (Clazz_instanceOf((m = models[i]),"JM.BioModel")) (m).addSecondaryStructure(type, id, serID, count, startChainID, startSeqCode, endChainID, endSeqCode, (i0 = m.firstAtomIndex) + atomRange[0], i0 + atomRange[1], this.bsAssigned); + +}, "J.api.JmolAdapterStructureIterator"); +Clazz_defineMethod(c$, "setGroupLists", +function(ipt){ +this.ml.group3Lists[ipt + 1] = JM.Group.standardGroupList; +this.ml.group3Counts[ipt + 1] = Clazz_newIntArray (JM.BioResolver.group3Count + 10, 0); +if (this.ml.group3Lists[0] == null) { +this.ml.group3Lists[0] = JM.Group.standardGroupList; +this.ml.group3Counts[0] = Clazz_newIntArray (JM.BioResolver.group3Count + 10, 0); +}}, "~N"); +Clazz_defineMethod(c$, "isKnownPDBGroup", +function(g3, max){ +var pt = JM.BioResolver.knownGroupID(g3); +return (pt > 0 ? pt < max : max == 2147483647 && JM.BioResolver.checkCarbohydrate(g3)); +}, "~S,~N"); +Clazz_defineMethod(c$, "lookupSpecialAtomID", +function(name){ +if (JM.BioResolver.htSpecialAtoms == null) { +JM.BioResolver.htSpecialAtoms = new java.util.Hashtable(); +for (var i = JM.BioResolver.specialAtomNames.length; --i >= 0; ) { +var specialAtomName = JM.BioResolver.specialAtomNames[i]; +if (specialAtomName != null) JM.BioResolver.htSpecialAtoms.put(specialAtomName, Byte.$valueOf(i)); +} +}var boxedAtomID = JM.BioResolver.htSpecialAtoms.get(name); +return (boxedAtomID == null ? 0 : boxedAtomID.byteValue()); +}, "~S"); +Clazz_defineMethod(c$, "getPdbBondInfo", +function(group3, isLegacy){ +if (JM.BioResolver.htPdbBondInfo == null) JM.BioResolver.htPdbBondInfo = new java.util.Hashtable(); +var info = JM.BioResolver.htPdbBondInfo.get(group3); +if (info != null) return info; +var pt = JM.BioResolver.knownGroupID(group3); +if (pt < 0 || pt > JM.BioResolver.pdbBondInfo.length) return null; +var s = JM.BioResolver.pdbBondInfo[pt]; +if (isLegacy && (pt = s.indexOf("O3'")) >= 0) s = s.substring(0, pt); +var temp = JU.PT.getTokens(s); +info = new Array(Clazz_doubleToInt(temp.length / 2)); +for (var i = 0, p = 0; i < info.length; i++) { +var source = temp[p++]; +var target = temp[p++]; +if (target.length == 1) switch ((target.charAt(0)).charCodeAt(0)) { +case 78: +target = "H@H2"; +break; +case 66: +target = "HB3@HB2"; +break; +case 68: +target = "HD3@HD2"; +break; +case 71: +target = "HG3@HG2"; +break; +case 50: +target = "H2'@H2''"; +break; +case 53: +target = "H5''@H5'"; +break; +} +if (target.charAt(0) != 'H' && source.compareTo(target) > 0) { +s = target; +target = source; +source = s; +}info[i] = Clazz_newArray(-1, [source, target, (target.startsWith("H") ? "1" : "2")]); +} +JM.BioResolver.htPdbBondInfo.put(group3, info); +return info; +}, "~S,~B"); +c$.knownGroupID = Clazz_defineMethod(c$, "knownGroupID", +function(group3){ +if (group3 == null || group3.length == 0) return 0; +var boxedGroupID = JM.BioResolver.htGroup.get(group3); +return (boxedGroupID == null ? -1 : boxedGroupID.shortValue()); +}, "~S"); +c$.checkCarbohydrate = Clazz_defineMethod(c$, "checkCarbohydrate", +function(group3){ +return (group3 != null && ",[AHR],[ALL],[AMU],[ARA],[ARB],[BDF],[BDR],[BGC],[BMA],[FCA],[FCB],[FRU],[FUC],[FUL],[GAL],[GLA],[GLC],[GXL],[GUP],[LXC],[MAN],[RAM],[RIB],[RIP],[XYP],[XYS],[CBI],[CT3],[CTR],[CTT],[LAT],[MAB],[MAL],[MLR],[MTT],[SUC],[TRE],[GCU],[MTL],[NAG],[NDG],[RHA],[SOR],[SOL],[SOE],[XYL],[A2G],[LBT],[NGA],[SIA],[SLB],[AFL],[AGC],[GLB],[NAN],[RAA]".indexOf("[" + group3.toUpperCase() + "]") >= 0); +}, "~S"); +Clazz_defineMethod(c$, "isHetero", +function(group3){ +switch (group3.length) { +case 1: +group3 += " "; +break; +case 2: +group3 += " "; +break; +case 3: +break; +default: +return true; +} +var pt = JM.Group.standardGroupList.indexOf(group3); +return (pt < 0 || Clazz_doubleToInt(pt / 6) + 1 >= 42); +}, "~S"); +Clazz_defineMethod(c$, "toStdAmino3", +function(g1){ +if (g1.length == 0) return ""; +var s = new JU.SB(); +var pt = JM.BioResolver.knownGroupID("==A"); +if (pt < 0) { +for (var i = 1; i <= 20; i++) { +pt = JM.BioResolver.knownGroupID(JM.BioResolver.predefinedGroup3Names[i]); +JM.BioResolver.htGroup.put("==" + JM.BioResolver.predefinedGroup1Names[i], Short.$valueOf(pt)); +} +}for (var i = 0, n = g1.length; i < n; i++) { +var ch = g1.charAt(i); +pt = JM.BioResolver.knownGroupID("==" + ch); +if (pt < 0) pt = 23; +s.append(" ").append(JM.BioResolver.predefinedGroup3Names[pt]); +} +return s.toString().substring(1); +}, "~S"); +Clazz_defineMethod(c$, "getGroupID", +function(g3){ +return JM.BioResolver.getGroupIdFor(g3); +}, "~S"); +c$.getGroupIdFor = Clazz_defineMethod(c$, "getGroupIdFor", +function(group3){ +if (group3 != null) group3 = group3.trim(); +var groupID = JM.BioResolver.knownGroupID(group3); +return (groupID == -1 ? JM.BioResolver.addGroup3Name(group3) : groupID); +}, "~S"); +c$.addGroup3Name = Clazz_defineMethod(c$, "addGroup3Name", +function(group3){ +if (JM.BioResolver.group3NameCount == JM.Group.group3Names.length) JM.Group.group3Names = JU.AU.doubleLengthS(JM.Group.group3Names); +var groupID = JM.BioResolver.group3NameCount++; +JM.Group.group3Names[groupID] = group3; +JM.BioResolver.htGroup.put(group3, Short.$valueOf(groupID)); +return groupID; +}, "~S"); +c$.getStandardPdbHydrogenCount = Clazz_defineMethod(c$, "getStandardPdbHydrogenCount", +function(group3){ +var pt = JM.BioResolver.knownGroupID(group3); +return (pt < 0 || pt >= JM.BioResolver.pdbHydrogenCount.length ? -1 : JM.BioResolver.pdbHydrogenCount[pt]); +}, "~S"); +c$.getSpecialAtomName = Clazz_defineMethod(c$, "getSpecialAtomName", +function(atomID){ +return JM.BioResolver.specialAtomNames[atomID]; +}, "~N"); +Clazz_defineMethod(c$, "getArgbs", +function(tok){ +switch (tok) { +case 2097166: +return JM.BioResolver.argbsNucleic; +case 2097154: +return JM.BioResolver.argbsAmino; +case 1073742144: +return JM.BioResolver.argbsShapely; +case 1153433601: +return JM.BioResolver.argbsChainAtom; +case 1612709894: +return JM.BioResolver.argbsChainHetero; +} +return null; +}, "~N"); +Clazz_defineMethod(c$, "getBioModelSet", +function(modelSet){ +if (modelSet.bioModelset == null) modelSet.bioModelset = new JM.BioModelSet().set(this.vwr, modelSet); +return modelSet.bioModelset; +}, "JM.ModelSet"); +c$.htGroup = new java.util.Hashtable(); +c$.types = Clazz_newArray(-1, [J.c.STR.HELIXPI, J.c.STR.HELIXALPHA, J.c.STR.SHEET, J.c.STR.HELIX310, J.c.STR.TURN]); +c$.mytypes = Clazz_newIntArray(-1, [0, 2, 3, 4, 6]); +c$.htPdbBondInfo = null; +c$.pdbBondInfo = Clazz_newArray(-1, ["", "N N CA HA C O CB HB?", "N N CA HA C O CB B CG G CD D NE HE CZ NH1 NH1 HH11@HH12 NH2 HH22@HH21", "N N CA HA C O CB B CG OD1 ND2 HD21@HD22", "N N CA HA C O CB B CG OD1", "N N CA HA C O CB B SG HG", "N N CA HA C O CB B CG G CD OE1 NE2 HE22@HE21", "N N CA HA C O CB B CG G CD OE1", "N N CA HA2@HA3 C O", "N N CA HA C O CB B CG CD2 ND1 CE1 ND1 HD1 CD2 HD2 CE1 HE1 NE2 HE2", "N N CA HA C O CB HB CG1 HG13@HG12 CG2 HG2? CD1 HD1?", "N N CA HA C O CB B CG HG CD1 HD1? CD2 HD2?", "N N CA HA C O CB B CG G CD HD2@HD3 CE HE3@HE2 NZ HZ?", "N N CA HA C O CB B CG G CE HE?", "N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 CD2 HD2 CE1 CZ CE1 HE1 CE2 HE2 CZ HZ", "N H CA HA C O CB B CG G CD D", "N N CA HA C O CB B OG HG", "N N CA HA C O CB HB OG1 HG1 CG2 HG2?", "N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 NE1 HE1 CE3 CZ3 CE3 HE3 CZ2 CH2 CZ2 HZ2 CZ3 HZ3 CH2 HH2", "N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 CD2 HD2 CE1 CZ CE1 HE1 CE2 HE2 OH HH", "N N CA HA C O CB HB CG1 HG1? CG2 HG2?", "N N CA HA C O CB B", "N N CA HA C O CB B CG G", "", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 N2 H22@H21 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 C4 N4 H41@H42 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 N1 N6 H61@H62 C2 N3 C2 H2 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C7 H7? C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 C2 H2 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 N2 H22@H21 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 C4 N4 H41@H42 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 N1 N6 H61@H62 C2 N3 C2 H2 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C7 H7? C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 C2 H2 O3' HO3' O5' HO5'"]); +c$.pdbHydrogenCount = Clazz_newIntArray(-1, [0, 6, 16, 7, 6, 6, 9, 8, 4, 9, 12, 12, 14, 10, 10, 8, 6, 8, 11, 10, 10, 3, 5, 0, 13, 13, 13, -1, 12, 12, 13, 13, 13, 14, 12, 12]); +c$.group3Count = 0; +c$.predefinedGroup1Names = Clazz_newCharArray(-1, ['\0', 'A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P', 'S', 'T', 'W', 'Y', 'V', 'A', 'G', '?', 'G', 'C', 'A', 'T', 'U', 'I', 'G', 'C', 'A', 'T', 'U', 'I', 'G', 'C', 'A', 'T', 'U', 'I']); +c$.group3NameCount = 0; +c$.predefinedGroup3Names = Clazz_newArray(-1, [" ", "ALA", "ARG", "ASN", "ASP", "CYS", "GLN", "GLU", "GLY", "HIS", "ILE", "LEU", "LYS", "MET", "PHE", "PRO", "SER", "THR", "TRP", "TYR", "VAL", "ASX", "GLX", "UNK", "G ", "C ", "A ", "T ", "U ", "I ", "DG ", "DC ", "DA ", "DT ", "DU ", "DI ", "+G ", "+C ", "+A ", "+T ", "+U ", "+I ", "HOH", "DOD", "WAT", "UREA", "PO4", "SO4", "UNL"]); +c$.specialAtomNames = Clazz_newArray(-1, [null, "N", "CA", "C", "O", "O1", "O5'", "C5'", "C4'", "C3'", "O3'", "C2'", "C1'", "P", "OD1", "OD2", "OE1", "OE2", "SG", null, null, null, null, null, null, null, null, null, null, null, null, null, "N1", "C2", "N3", "C4", "C5", "C6", "O2", "N7", "C8", "N9", "N4", "N2", "N6", "C5M", "O6", "O4", "S4", "C7", "H1", "H2", "H3", null, null, null, null, null, null, null, null, null, null, null, "OXT", "H", "1H", "2H", "3H", "HA", "1HA", "2HA", "H5T", "O5T", "O1P", "OP1", "O2P", "OP2", "O4'", "O2'", "1H5'", "2H5'", "H4'", "H3'", "1H2'", "2H2'", "2HO'", "H1'", "H3T", "HO3'", "HO5'", "HA2", "HA3", "HA2", "H5'", "H5''", "H2'", "H2''", "HO2'", "O3P", "OP3"]); +c$.ATOMID_MAX = JM.BioResolver.specialAtomNames.length; +c$.htSpecialAtoms = null; +c$.argbsAmino = Clazz_newIntArray(-1, [0xFFBEA06E, 0xFFC8C8C8, 0xFF145AFF, 0xFF00DCDC, 0xFFE60A0A, 0xFFE6E600, 0xFF00DCDC, 0xFFE60A0A, 0xFFEBEBEB, 0xFF8282D2, 0xFF0F820F, 0xFF0F820F, 0xFF145AFF, 0xFFE6E600, 0xFF3232AA, 0xFFDC9682, 0xFFFA9600, 0xFFFA9600, 0xFFB45AB4, 0xFF3232AA, 0xFF0F820F, 0xFFFF69B4, 0xFFFF69B4, 0xFFBEA06E]); +c$.argbsNucleic = Clazz_newIntArray(-1, [0xFFBEA06E, 0xFFA0A0A0, 0xFF0F820F, 0xFFE6E600, 0xFFE60A0A, 0xFF145AFF, 0xFF00DCDC, 0xFF00DCDC, 0xFF0F820F, 0xFFE6E600, 0xFFE60A0A, 0xFF145AFF, 0xFF00DCDC, 0xFF00DCDC, 0xFF0F820F, 0xFFE6E600, 0xFFE60A0A, 0xFF145AFF, 0xFF00DCDC, 0xFF00DCDC]); +c$.argbsChainAtom = Clazz_newIntArray(-1, [0xFFffffff, 0xFFC0D0FF, 0xFFB0FFB0, 0xFFFFC0C8, 0xFFFFFF80, 0xFFFFC0FF, 0xFFB0F0F0, 0xFFFFD070, 0xFFF08080, 0xFFF5DEB3, 0xFF00BFFF, 0xFFCD5C5C, 0xFF66CDAA, 0xFF9ACD32, 0xFFEE82EE, 0xFF00CED1, 0xFF00FF7F, 0xFF3CB371, 0xFF00008B, 0xFFBDB76B, 0xFF006400, 0xFF800000, 0xFF808000, 0xFF800080, 0xFF008080, 0xFFB8860B, 0xFFB22222]); +c$.argbsChainHetero = Clazz_newIntArray(-1, [0xFFffffff, -7298865, -8335464, -3174224, -3158160, -3174193, -8339264, -3170208, -4173712, -3821949, -16734257, -4895668, -11094638, -7686870, -4296002, -16730463, -16724113, -13329567, -16777029, -5922981, -16739328, -5242880, -5197824, -5242704, -16731984, -1526253, -4050382]); +c$.argbsShapely = Clazz_newIntArray(-1, [0xFFFF00FF, 0xFF00007C, 0xFFFF7C70, 0xFF8CFF8C, 0xFFA00042, 0xFFFFFF70, 0xFFFF4C4C, 0xFF660000, 0xFFFFFFFF, 0xFF7070FF, 0xFF004C00, 0xFF455E45, 0xFF4747B8, 0xFF534C52, 0xFFB8A042, 0xFF525252, 0xFFFF7042, 0xFFB84C00, 0xFF4F4600, 0xFF8C704C, 0xFFFF8CFF, 0xFFFF00FF, 0xFFFF00FF, 0xFFFF00FF, 0xFFFF7070, 0xFFFF8C4B, 0xFFA0A0FF, 0xFFA0FFA0, 0xFFFF8080, 0xFF80FFFF, 0xFFFF7070, 0xFFFF8C4B, 0xFFA0A0FF, 0xFFA0FFA0, 0xFFFF8080, 0xFF80FFFF, 0xFFFF7070, 0xFFFF8C4B, 0xFFA0A0FF, 0xFFA0FFA0, 0xFFFF8080, 0xFF80FFFF]); +{ +{ +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Monomer"], "JM.CarbohydrateMonomer", ["J.c.STR"], function(){ +var c$ = Clazz_declareType(JM, "CarbohydrateMonomer", JM.Monomer); +Clazz_overrideConstructor(c$, +function(){ +}); +c$.validateAndAllocate = Clazz_defineMethod(c$, "validateAndAllocate", +function(chain, group3, seqcode, firstIndex, lastIndex){ +return new JM.CarbohydrateMonomer().set2(chain, group3, seqcode, firstIndex, lastIndex, JM.CarbohydrateMonomer.alphaOffsets); +}, "JM.Chain,~S,~N,~N,~N"); +Clazz_overrideMethod(c$, "isCarbohydrate", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.CARBOHYDRATE; +}); +Clazz_overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) for (var j = possiblyPreviousMonomer.firstAtomIndex; j <= possiblyPreviousMonomer.lastAtomIndex; j++) { +var a = this.chain.model.ms.at[i]; +var b = this.chain.model.ms.at[j]; +if (a != null && b != null && a.getElementNumber() + b.getElementNumber() == 14 && a.distanceSquared(b) < 3.24) return true; +} + +return false; +}, "JM.Monomer"); +Clazz_overrideMethod(c$, "findNearestAtomIndex", +function(x, y, closest, madBegin, madEnd){ +var competitor = closest[0]; +var anomericO = this.getLeadAtom(); +var marBegin = (Clazz_doubleToInt(madBegin / 2)); +if (marBegin < 1200) marBegin = 1200; +if (anomericO.sZ == 0) return; +var radiusBegin = Clazz_floatToInt(this.scaleToScreen(anomericO.sZ, marBegin)); +if (radiusBegin < 4) radiusBegin = 4; +if (this.isCursorOnTopOf(anomericO, x, y, radiusBegin, competitor)) closest[0] = anomericO; +}, "~N,~N,~A,~N,~N"); +Clazz_overrideMethod(c$, "isConnectedPrevious", +function(){ +if (this.monomerIndex <= 0) return false; +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) if (this.getCrossLinkGroup(i, null, null, true, false, false)) return true; + +return false; +}); +c$.alphaOffsets = Clazz_newByteArray(-1, [0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.BioPolymer"], "JM.CarbohydratePolymer", null, function(){ +var c$ = Clazz_declareType(JM, "CarbohydratePolymer", JM.BioPolymer); +Clazz_makeConstructor(c$, +function(monomers){ +Clazz_superConstructor(this, JM.CarbohydratePolymer, [monomers, false]); +this.type = 3; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Monomer"], "JM.PhosphorusMonomer", ["JU.Quat", "$.V3", "J.c.STR"], function(){ +var c$ = Clazz_declareType(JM, "PhosphorusMonomer", JM.Monomer); +Clazz_overrideConstructor(c$, +function(){ +}); +Clazz_overrideMethod(c$, "isNucleic", +function(){ +return true; +}); +c$.validateAndAllocateP = Clazz_defineMethod(c$, "validateAndAllocateP", +function(chain, group3, seqcode, firstIndex, lastIndex, specialAtomIndexes){ +return (firstIndex != lastIndex || specialAtomIndexes[13] != firstIndex ? null : new JM.PhosphorusMonomer().set2(chain, group3, seqcode, firstIndex, lastIndex, JM.PhosphorusMonomer.phosphorusOffsets)); +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz_overrideMethod(c$, "isDna", +function(){ +return this.isDnaByID(); +}); +Clazz_overrideMethod(c$, "isRna", +function(){ +return this.isRnaByID(); +}); +Clazz_overrideMethod(c$, "isPurine", +function(){ +return this.isPurineByID(); +}); +Clazz_overrideMethod(c$, "isPyrimidine", +function(){ +return this.isPyrimidineByID(); +}); +Clazz_overrideMethod(c$, "getStructure", +function(){ +return this.chain; +}); +Clazz_overrideMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.NONE; +}); +Clazz_overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +return this.isCA2(possiblyPreviousMonomer); +}, "JM.Monomer"); +Clazz_defineMethod(c$, "isCA2", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +var distance = this.getLeadAtom().distance(possiblyPreviousMonomer.getLeadAtom()); +return distance <= JM.PhosphorusMonomer.MAX_ADJACENT_PHOSPHORUS_DISTANCE; +}, "JM.Monomer"); +Clazz_overrideMethod(c$, "getQuaternion", +function(qType){ +return this.getQuaternionP(); +}, "~S"); +Clazz_defineMethod(c$, "getQuaternionP", +function(){ +var i = this.monomerIndex; +if (i <= 0 || i >= this.bioPolymer.monomerCount - 1) return null; +var ptP = this.bioPolymer.monomers[i].getAtomFromOffsetIndex(0); +var ptA; +var ptB; +ptA = this.bioPolymer.monomers[i + 1].getAtomFromOffsetIndex(0); +ptB = this.bioPolymer.monomers[i - 1].getAtomFromOffsetIndex(0); +if (ptP == null || ptA == null || ptB == null) return null; +var vA = new JU.V3(); +var vB = new JU.V3(); +vA.sub2(ptA, ptP); +vB.sub2(ptB, ptP); +return JU.Quat.getQuaternionFrameV(vA, vB, null, false); +}); +Clazz_overrideMethod(c$, "getQuaternionFrameCenter", +function(qType){ +return this.getAtomFromOffsetIndex(0); +}, "~S"); +Clazz_overrideMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return this.getHelixData2(tokType, qType, mStep); +}, "~N,~S,~N"); +c$.phosphorusOffsets = Clazz_newByteArray(-1, [0]); +c$.MAX_ADJACENT_PHOSPHORUS_DISTANCE = 8.0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.info = null; +this.g1 = null; +this.g2 = null; +Clazz_instantialize(this, arguments);}, JM, "BasePair", null); +/*LV!1824 unnec constructor*/c$.add = Clazz_defineMethod(c$, "add", +function(info, g1, g2){ +if (g1 == null || g2 == null) return null; +var bp = new JM.BasePair(); +bp.info = info; +(bp.g1 = g1).addBasePair(bp); +(bp.g2 = g2).addBasePair(bp); +return bp; +}, "java.util.Map,JM.NucleicMonomer,JM.NucleicMonomer"); +Clazz_defineMethod(c$, "getPartnerAtom", +function(g){ +return (g === this.g1 ? this.g2 : this.g1).getLeadAtom().i; +}, "JM.NucleicMonomer"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.info.toString(); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.PhosphorusMonomer"], "JM.NucleicMonomer", ["JU.A4", "$.Lst", "$.M3", "$.P3", "$.Quat", "$.V3", "J.c.STR", "JM.Group", "JM.NucleicPolymer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$isPurine = false; +this.$isPyrimidine = false; +this.hasRnaO2Prime = false; +this.baseCenter = null; +this.bps = null; +this.dssrBox = null; +this.dssrBoxHeight = 0; +this.dssrFrame = null; +Clazz_instantialize(this, arguments);}, JM, "NucleicMonomer", JM.PhosphorusMonomer); +Clazz_overrideConstructor(c$, +function(){ +}); +c$.validateAndAllocate = Clazz_defineMethod(c$, "validateAndAllocate", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, specialAtomIndexes){ +var offsets = JM.Monomer.scanForOffsets(firstAtomIndex, specialAtomIndexes, JM.NucleicMonomer.interestingNucleicAtomIDs); +if (offsets == null) return null; +if (!JM.Monomer.checkOptional(offsets, 19, firstAtomIndex, specialAtomIndexes[73])) return null; +JM.Monomer.checkOptional(offsets, 20, firstAtomIndex, specialAtomIndexes[89]); +JM.Monomer.checkOptional(offsets, 18, firstAtomIndex, specialAtomIndexes[90]); +JM.Monomer.checkOptional(offsets, 23, firstAtomIndex, specialAtomIndexes[75]); +JM.Monomer.checkOptional(offsets, 24, firstAtomIndex, specialAtomIndexes[77]); +return ( new JM.NucleicMonomer()).set4(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, offsets); +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "set4", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, offsets){ +this.set2(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, offsets); +if (!JM.Monomer.have(offsets, 15)) { +offsets[0] = offsets[19]; +this.setLeadAtomIndex(); +}this.hasRnaO2Prime = JM.Monomer.have(offsets, 2); +this.$isPyrimidine = JM.Monomer.have(offsets, 8); +this.$isPurine = JM.Monomer.have(offsets, 9) && JM.Monomer.have(offsets, 10) && JM.Monomer.have(offsets, 11); +return this; +}, "JM.Chain,~S,~N,~N,~N,~A"); +Clazz_overrideMethod(c$, "isNucleicMonomer", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "isDna", +function(){ +return !this.hasRnaO2Prime; +}); +Clazz_overrideMethod(c$, "isRna", +function(){ +return this.hasRnaO2Prime; +}); +Clazz_overrideMethod(c$, "isPurine", +function(){ +return this.$isPurine || !this.$isPyrimidine && this.isPurineByID(); +}); +Clazz_overrideMethod(c$, "isPyrimidine", +function(){ +return this.$isPyrimidine || !this.$isPurine && this.isPyrimidineByID(); +}); +Clazz_defineMethod(c$, "isGuanine", +function(){ +return JM.Monomer.have(this.offsets, 17); +}); +Clazz_overrideMethod(c$, "getProteinStructureType", +function(){ +return (this.hasRnaO2Prime ? J.c.STR.RNA : J.c.STR.DNA); +}); +Clazz_defineMethod(c$, "getP", +function(){ +return this.getAtomFromOffsetIndex(0); +}); +Clazz_defineMethod(c$, "getC1P", +function(){ +return this.getAtomFromOffsetIndex(25); +}); +Clazz_defineMethod(c$, "getC2", +function(){ +return this.getAtomFromOffsetIndex(5); +}); +Clazz_defineMethod(c$, "getC5", +function(){ +return this.getAtomFromOffsetIndex(3); +}); +Clazz_defineMethod(c$, "getC6", +function(){ +return this.getAtomFromOffsetIndex(1); +}); +Clazz_defineMethod(c$, "getC8", +function(){ +return this.getAtomFromOffsetIndex(10); +}); +Clazz_defineMethod(c$, "getC4P", +function(){ +return this.getAtomFromOffsetIndex(27); +}); +Clazz_defineMethod(c$, "getN1", +function(){ +return this.getAtomFromOffsetIndex(4); +}); +Clazz_defineMethod(c$, "getN3", +function(){ +return this.getAtomFromOffsetIndex(6); +}); +Clazz_defineMethod(c$, "getN2", +function(){ +return this.getAtomFromOffsetIndex(17); +}); +Clazz_defineMethod(c$, "getN4", +function(){ +return this.getAtomFromOffsetIndex(14); +}); +Clazz_defineMethod(c$, "getN6", +function(){ +return this.getAtomFromOffsetIndex(16); +}); +Clazz_defineMethod(c$, "getO2", +function(){ +return this.getAtomFromOffsetIndex(8); +}); +Clazz_defineMethod(c$, "getO4", +function(){ +return this.getAtomFromOffsetIndex(12); +}); +Clazz_defineMethod(c$, "getO6", +function(){ +return this.getAtomFromOffsetIndex(13); +}); +Clazz_overrideMethod(c$, "getTerminatorAtom", +function(){ +return this.getAtomFromOffsetIndex(JM.Monomer.have(this.offsets, 20) ? 20 : 21); +}); +Clazz_defineMethod(c$, "getBaseRing6Points", +function(pts){ +this.getPoints(JM.NucleicMonomer.ring6OffsetIndexes, pts); +}, "~A"); +Clazz_defineMethod(c$, "getPoints", +function(a, pts){ +for (var i = a.length; --i >= 0; ) pts[i] = this.getAtomFromOffsetIndex(a[i]); + +}, "~A,~A"); +Clazz_defineMethod(c$, "maybeGetBaseRing5Points", +function(pts){ +if (this.$isPurine) this.getPoints(JM.NucleicMonomer.ring5OffsetIndexes, pts); +return this.$isPurine; +}, "~A"); +Clazz_defineMethod(c$, "getRiboseRing5Points", +function(pts){ +this.getPoints(JM.NucleicMonomer.riboseOffsetIndexes, pts); +}, "~A"); +Clazz_overrideMethod(c$, "isConnectedAfter", +function(possiblyPreviousMonomer){ +if (possiblyPreviousMonomer == null) return true; +var myPhosphorusAtom = this.getAtomFromOffsetIndex(15); +if (myPhosphorusAtom == null) return false; +return ((possiblyPreviousMonomer).getAtomFromOffsetIndex(21).isBonded(myPhosphorusAtom) || this.isCA2(possiblyPreviousMonomer)); +}, "JM.Monomer"); +Clazz_overrideMethod(c$, "findNearestAtomIndex", +function(x, y, closest, madBegin, madEnd){ +var competitor = closest[0]; +var lead = this.getLeadAtom(); +var o5prime = this.getAtomFromOffsetIndex(19); +var c3prime = this.getAtomFromOffsetIndex(22); +var mar = (Clazz_doubleToInt(madBegin / 2)); +if (mar < 1900) mar = 1900; +var radius = Clazz_floatToInt(this.scaleToScreen(lead.sZ, mar)); +if (radius < 4) radius = 4; +if (this.isCursorOnTopOf(lead, x, y, radius, competitor) || this.isCursorOnTopOf(o5prime, x, y, radius, competitor) || this.isCursorOnTopOf(c3prime, x, y, radius, competitor)) closest[0] = lead; +}, "~N,~N,~A,~N,~N"); +Clazz_defineMethod(c$, "setRingsVisible", +function(isVisible){ +for (var i = 6; --i >= 0; ) this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring6OffsetIndexes[i]).setShapeVisibility(32768, isVisible); + +if (this.$isPurine) for (var i = 4; --i >= 1; ) this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring5OffsetIndexes[i]).setShapeVisibility(32768, isVisible); + +}, "~B"); +Clazz_defineMethod(c$, "setRingsClickable", +function(){ +for (var i = 6; --i >= 0; ) this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring6OffsetIndexes[i]).setClickable(32768); + +if (this.$isPurine) for (var i = 4; --i >= 1; ) this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring5OffsetIndexes[i]).setClickable(32768); + +}); +Clazz_defineMethod(c$, "getN0", +function(){ +return (this.getAtomFromOffsetIndex(this.$isPurine ? 11 : 4)); +}); +Clazz_overrideMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return this.getHelixData2(tokType, qType, mStep); +}, "~N,~S,~N"); +Clazz_overrideMethod(c$, "getQuaternionFrameCenter", +function(qType){ +switch ((qType).charCodeAt(0)) { +case 120: +case 97: +case 98: +case 112: +return this.getP(); +case 99: +if (this.baseCenter == null) { +var n = 0; +this.baseCenter = new JU.P3(); +for (var i = 0; i < JM.NucleicMonomer.heavyAtomIndexes.length; i++) { +var a = this.getAtomFromOffsetIndex(JM.NucleicMonomer.heavyAtomIndexes[i]); +if (a == null) continue; +this.baseCenter.add(a); +n++; +} +this.baseCenter.scale(1 / n); +}return this.baseCenter; +case 110: +default: +return this.getN0(); +} +}, "~S"); +Clazz_overrideMethod(c$, "getQuaternion", +function(qType){ +if (this.bioPolymer == null) return null; +var ptA = null; +var ptB = null; +var ptNorP; +var yBased = false; +var reverseY = false; +switch ((qType).charCodeAt(0)) { +case 97: +ptNorP = this.getP(); +if (this.monomerIndex == 0 || ptNorP == null) return null; +yBased = true; +ptA = (this.bioPolymer.monomers[this.monomerIndex - 1]).getC4P(); +ptB = this.getC4P(); +break; +case 120: +ptNorP = this.getP(); +if (this.monomerIndex == this.bioPolymer.monomerCount - 1 || ptNorP == null) return null; +ptA = (this.bioPolymer.monomers[this.monomerIndex + 1]).getP(); +ptB = this.getC4P(); +break; +case 98: +return this.getQuaternionP(); +case 99: +case 110: +ptNorP = this.getN0(); +if (ptNorP == null) return null; +yBased = true; +reverseY = true; +ptA = this.getAtomFromOffsetIndex(5); +ptB = this.getAtomFromOffsetIndex(25); +break; +case 112: +ptNorP = this.getP(); +if (ptNorP == null) return null; +var p1 = this.getAtomFromOffsetIndex(23); +var p2 = this.getAtomFromOffsetIndex(24); +var bonds = ptNorP.bonds; +if (bonds == null) return null; +var g = ptNorP.group; +for (var i = 0; i < bonds.length; i++) { +var atom = bonds[i].getOtherAtom(ptNorP); +if (p1 != null && atom.i == p1.i) continue; +if (p2 != null && atom.i == p2.i) continue; +if (atom.group === g) ptB = atom; + else ptA = atom; +} +break; +case 113: +return null; +default: +ptNorP = this.getN0(); +if (ptNorP == null) return null; +if (this.$isPurine) { +ptA = this.getAtomFromOffsetIndex(5); +ptB = this.getAtomFromOffsetIndex(9); +} else { +ptA = this.getAtomFromOffsetIndex(6); +ptB = this.getAtomFromOffsetIndex(1); +}break; +} +if (ptA == null || ptB == null) return null; +var vA = JU.V3.newVsub(ptA, ptNorP); +var vB = JU.V3.newVsub(ptB, ptNorP); +if (reverseY) vB.scale(-1); +return JU.Quat.getQuaternionFrameV(vA, vB, null, yBased); +}, "~S"); +Clazz_overrideMethod(c$, "isCrossLinked", +function(g){ +if (!(Clazz_instanceOf(g,"JM.NucleicMonomer")) || this.$isPurine == g.isPurine()) return false; +var otherNucleotide = (this.$isPurine ? g : this); +var myNucleotide = (this.$isPurine ? this : g); +var myN1 = myNucleotide.getN1(); +var otherN3 = otherNucleotide.getN3(); +return (myN1.isBonded(otherN3)); +}, "JM.Group"); +Clazz_overrideMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +if (!crosslinkHBond) return false; +var N = (this.$isPurine ? this.getN1() : this.getN3()); +var bonds = N.bonds; +if (bonds == null) return false; +for (var i = 0; i < bonds.length; i++) { +if (bonds[i].isHydrogen()) { +var N2 = bonds[i].getOtherAtom(N); +var g = N2.group; +if (!(Clazz_instanceOf(g,"JM.NucleicMonomer"))) continue; +var m = g; +if ((this.$isPurine ? m.getN3() : m.getN1()) === N2) { +if (vReturn == null) return true; +vReturn.addLast(Integer.$valueOf(N.i)); +vReturn.addLast(Integer.$valueOf(N2.i)); +vReturn.addLast(Integer.$valueOf(m.leadAtomIndex)); +}}} +return vReturn != null && vReturn.size() > 0; +}, "JU.Lst,~B,~B"); +Clazz_defineMethod(c$, "getEdgePoints", +function(pts){ +pts[0] = this.getLeadAtom(); +pts[1] = this.getC4P(); +pts[2] = pts[5] = this.getC1P(); +switch ((this.getGroup1()).charCodeAt(0)) { +case 67: +pts[3] = this.getO2(); +pts[4] = this.getN4(); +return true; +case 65: +pts[3] = this.getC2(); +pts[4] = this.getN6(); +return true; +case 71: +case 73: +pts[3] = this.getC2(); +pts[4] = this.getO6(); +return true; +case 84: +case 85: +pts[3] = this.getO2(); +pts[4] = this.getO4(); +return true; +default: +return false; +} +}, "~A"); +Clazz_defineMethod(c$, "addBasePair", +function(bp){ +if (this.bps == null) this.bps = new JU.Lst(); +this.bps.addLast(bp); +}, "JM.BasePair"); +Clazz_defineMethod(c$, "setGroup1", +function(g){ +if (this.group1 == '\0') this.group1 = g; +}, "~S"); +Clazz_defineMethod(c$, "getBasePairs", +function(){ +if (this.bioPolymer != null && !(this.bioPolymer).isDssrSet) this.bioPolymer.model.ms.vwr.getAnnotationParser(true).getBasePairs(this.bioPolymer.model.ms.vwr, this.bioPolymer.model.modelIndex); +return this.bps; +}); +Clazz_overrideMethod(c$, "getGroup1b", +function(){ +var g3 = JM.Group.group3Names[this.groupID]; +var g1 = (JM.NucleicPolymer.htGroup1 == null ? null : JM.NucleicPolymer.htGroup1.get(g3)); +return (g1 == null ? Character.toLowerCase(g3.charAt(g3.length - 1)) : g1.charAt(0)); +}); +Clazz_defineMethod(c$, "getDSSRFrame", +function(vwr){ +if (this.dssrFrame != null) return this.dssrFrame; +if (this.dssrNT != null) return this.dssrFrame = vwr.getAnnotationParser(true).getDSSRFrame(this.dssrNT); +var oxyz = this.dssrFrame = new Array(4); +for (var i = 4; --i >= 0; ) oxyz[i] = new JU.P3(); + +if (this.isPurine()) { +var v85 = JU.P3.newP(this.getC5()); +v85.sub(this.getC8()); +v85.normalize(); +oxyz[2].setT(v85); +oxyz[2].scale(-1); +oxyz[0].scaleAdd2(4.9, v85, this.getC8()); +var v89 = JU.P3.newP(this.getN0()); +v89.sub(this.getC8()); +oxyz[3].cross(v89, v85); +oxyz[3].normalize(); +} else { +var v61 = JU.P3.newP(this.getN0()); +v61.sub(this.getC6()); +var v65 = JU.P3.newP(this.getC5()); +v65.sub(this.getC6()); +oxyz[3].cross(v61, v65); +oxyz[3].normalize(); +oxyz[2].setT(v61); +oxyz[2].normalize(); +var aa = JU.A4.new4(oxyz[3].x, oxyz[3].y, oxyz[3].z, (1.1623892818282233)); +var m3 = new JU.M3(); +m3.setAA(aa); +m3.rotate(oxyz[2]); +oxyz[0].scaleAdd2(5.1, oxyz[2], this.getC6()); +oxyz[2].scale(-1); +}oxyz[1].cross(oxyz[2], oxyz[3]); +return this.dssrFrame; +}, "JV.Viewer"); +c$.interestingNucleicAtomIDs = Clazz_newByteArray(-1, [-14, 37, -80, 36, 32, 33, 34, 35, -39, -40, -41, -42, -48, -47, -43, -14, -45, -44, -73, -7, -89, 10, 9, -75, -77, -13, -12, -9, -79, -8]); +c$.ring6OffsetIndexes = Clazz_newByteArray(-1, [3, 1, 4, 5, 6, 7]); +c$.ring5OffsetIndexes = Clazz_newByteArray(-1, [3, 9, 10, 11, 7]); +c$.riboseOffsetIndexes = Clazz_newByteArray(-1, [25, 26, 22, 27, 28, 21, 29, 19, 0]); +c$.heavyAtomIndexes = Clazz_newByteArray(-1, [3, 1, 4, 5, 6, 7, 11, 10, 9, 16, 14, 8, 12, 17, 13]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.PhosphorusPolymer"], "JM.NucleicPolymer", ["JU.Measure", "$.P4", "$.V3", "JM.HBond"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isDssrSet = false; +Clazz_instantialize(this, arguments);}, JM, "NucleicPolymer", JM.PhosphorusPolymer); +Clazz_makeConstructor(c$, +function(monomers){ +Clazz_superConstructor(this, JM.NucleicPolymer, [monomers]); +this.type = 2; +this.hasWingPoints = true; +}, "~A"); +Clazz_defineMethod(c$, "getNucleicPhosphorusAtom", +function(monomerIndex){ +return this.monomers[monomerIndex].getLeadAtom(); +}, "~N"); +Clazz_overrideMethod(c$, "calcEtaThetaAngles", +function(){ +var eta = NaN; +for (var i = 0; i < this.monomerCount - 2; ++i) { +var m1 = this.monomers[i]; +var m2 = this.monomers[i + 1]; +var p1 = m1.getP(); +var c41 = m1.getC4P(); +var p2 = m2.getP(); +var c42 = m2.getC4P(); +if (i > 0) { +var m0 = this.monomers[i - 1]; +var c40 = m0.getC4P(); +eta = JU.Measure.computeTorsion(c40, p1, c41, p2, true); +}var theta = JU.Measure.computeTorsion(p1, c41, p2, c42, true); +if (eta < 0) eta += 360; +if (theta < 0) theta += 360; +m1.setGroupParameter(1111490565, eta); +m1.setGroupParameter(1111490576, theta); +} +return true; +}); +Clazz_overrideMethod(c$, "calcRasmolHydrogenBonds", +function(polymer, bsA, bsB, vAtoms, nMaxPerResidue, min, checkDistances, dsspIgnoreHydrogens){ +var other = polymer; +var vNorm = new JU.V3(); +var vAB = new JU.V3(); +for (var i = this.monomerCount; --i >= 0; ) { +var myNucleotide = this.monomers[i]; +if (!myNucleotide.isPurine()) continue; +var myN3 = myNucleotide.getN3(); +var isInA = bsA.get(myN3.i); +if (!isInA && !bsB.get(myN3.i)) continue; +var myN1 = myNucleotide.getN1(); +var myN9 = myNucleotide.getN0(); +var plane = JU.Measure.getPlaneThroughPoints(myN3, myN1, myN9, vNorm, vAB, new JU.P4()); +var bestN3 = null; +var minDist2 = 25; +var bestNucleotide = null; +for (var j = other.monomerCount; --j >= 0; ) { +var otherNucleotide = other.monomers[j]; +if (!otherNucleotide.$isPyrimidine) continue; +var otherN3 = otherNucleotide.getN3(); +if (isInA ? !bsB.get(otherN3.i) : !bsA.get(otherN3.i)) continue; +var otherN1 = otherNucleotide.getN0(); +var dist2 = myN1.distanceSquared(otherN3); +if (dist2 < minDist2 && myN9.distanceSquared(otherN1) > 50 && Math.abs(JU.Measure.distanceToPlane(plane, otherN3)) < 1) { +bestNucleotide = otherNucleotide; +bestN3 = otherN3; +minDist2 = dist2; +}} +var n = 0; +if (bestN3 != null) { +n += JM.NucleicPolymer.addHydrogenBond(vAtoms, myN1, bestN3); +if (n >= nMaxPerResidue) continue; +if (myNucleotide.isGuanine()) { +n += JM.NucleicPolymer.addHydrogenBond(vAtoms, myNucleotide.getN2(), bestNucleotide.getO2()); +if (n >= nMaxPerResidue) continue; +n += JM.NucleicPolymer.addHydrogenBond(vAtoms, myNucleotide.getO6(), bestNucleotide.getN4()); +if (n >= nMaxPerResidue) continue; +} else { +n += JM.NucleicPolymer.addHydrogenBond(vAtoms, myNucleotide.getN6(), bestNucleotide.getO4()); +}}} +}, "JM.BioPolymer,JU.BS,JU.BS,JU.Lst,~N,~A,~B,~B"); +c$.addHydrogenBond = Clazz_defineMethod(c$, "addHydrogenBond", +function(vAtoms, atom1, atom2){ +if (atom1 == null || atom2 == null) return 0; +vAtoms.addLast( new JM.HBond(atom1, atom2, 18432, 1, 0, 0)); +return 1; +}, "JU.Lst,JM.Atom,JM.Atom"); +c$.htGroup1 = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.info = null; +this.g1 = null; +this.g2 = null; +Clazz_instantialize(this, arguments);}, JM, "BasePair", null); +/*LV!1824 unnec constructor*/c$.add = Clazz_defineMethod(c$, "add", +function(info, g1, g2){ +if (g1 == null || g2 == null) return null; +var bp = new JM.BasePair(); +bp.info = info; +(bp.g1 = g1).addBasePair(bp); +(bp.g2 = g2).addBasePair(bp); +return bp; +}, "java.util.Map,JM.NucleicMonomer,JM.NucleicMonomer"); +Clazz_defineMethod(c$, "getPartnerAtom", +function(g){ +return (g === this.g1 ? this.g2 : this.g1).getLeadAtom().i; +}, "JM.NucleicMonomer"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.info.toString(); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.BioPolymer"], "JM.PhosphorusPolymer", null, function(){ +var c$ = Clazz_declareType(JM, "PhosphorusPolymer", JM.BioPolymer); +Clazz_makeConstructor(c$, +function(monomers){ +Clazz_superConstructor(this, JM.PhosphorusPolymer, [monomers, true]); +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.dssx"); +Clazz_load(null, "J.dssx.Bridge", ["JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.a = null; +this.b = null; +this.ladder = null; +this.isAntiparallel = false; +Clazz_instantialize(this, arguments);}, J.dssx, "Bridge", null); +Clazz_makeConstructor(c$, +function(a, b, htLadders){ +this.a = a; +this.b = b; +this.ladder = Clazz_newIntArray (2, 2, 0); +this.ladder[0][0] = this.ladder[0][1] = Math.min(a.i, b.i); +this.ladder[1][0] = this.ladder[1][1] = Math.max(a.i, b.i); +this.addLadder(htLadders); +}, "JM.Atom,JM.Atom,java.util.Map"); +Clazz_defineMethod(c$, "addBridge", +function(bridge, htLadders){ +if (bridge.isAntiparallel != this.isAntiparallel || !this.canAdd(bridge) || !bridge.canAdd(this)) return false; +this.extendLadder(bridge.ladder[0][0], bridge.ladder[1][0]); +this.extendLadder(bridge.ladder[0][1], bridge.ladder[1][1]); +bridge.ladder = this.ladder; +if (bridge.ladder !== this.ladder) { +htLadders.remove(bridge.ladder); +this.addLadder(htLadders); +}return true; +}, "J.dssx.Bridge,java.util.Map"); +Clazz_defineMethod(c$, "addLadder", +function(htLadders){ +htLadders.put(this.ladder, (this.isAntiparallel ? Boolean.TRUE : Boolean.FALSE)); +}, "java.util.Map"); +Clazz_defineMethod(c$, "canAdd", +function(bridge){ +var index1 = bridge.a.i; +var index2 = bridge.b.i; +return (this.isAntiparallel ? (index1 >= this.ladder[0][1] && index2 <= this.ladder[1][0] || index1 <= this.ladder[0][0] && index2 >= this.ladder[1][1]) : (index1 <= this.ladder[0][0] && index2 <= this.ladder[1][0] || index1 >= this.ladder[0][1] && index2 >= this.ladder[1][1])); +}, "J.dssx.Bridge"); +Clazz_defineMethod(c$, "extendLadder", +function(index1, index2){ +if (this.ladder[0][0] > index1) this.ladder[0][0] = index1; +if (this.ladder[0][1] < index1) this.ladder[0][1] = index1; +if (this.ladder[1][0] > index2) this.ladder[1][0] = index2; +if (this.ladder[1][1] < index2) this.ladder[1][1] = index2; +}, "~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return (this.isAntiparallel ? "a " : "p ") + this.a + " - " + this.b + "\t" + JU.Escape.e(this.ladder); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.dssx"); +Clazz_load(null, "J.dssx.DSSP", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.PT", "$.SB", "J.c.STR", "J.dssx.Bridge", "J.i18n.GT", "JM.HBond", "JU.Escape", "$.Logger", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bioPolymers = null; +this.vHBonds = null; +this.done = null; +this.doReport = false; +this.dsspIgnoreHydrogens = false; +this.setStructure = false; +this.labels = null; +this.bsBad = null; +this.bioPolymerCount = 0; +this.htBridges = null; +this.htLadders = null; +this.bridgesA = null; +this.bridgesP = null; +this.isDSSP2 = false; +this.sheetOffsets = null; +Clazz_instantialize(this, arguments);}, J.dssx, "DSSP", null); +Clazz_prepareFields (c$, function(){ +this.sheetOffsets = Clazz_newArray(-1, [ Clazz_newIntArray(-1, [0, -1, 1, 0, 1, 0, 0, -1]), Clazz_newIntArray(-1, [0, 0, 0, 0, 1, -1, 1, -1])]); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$, "calculateDssp", +function(objBioPolymers, bioPolymerCount, objVHBonds, doReport, dsspIgnoreHydrogens, setStructure, version){ +this.bioPolymers = objBioPolymers; +this.bioPolymerCount = bioPolymerCount; +this.vHBonds = objVHBonds; +this.doReport = doReport; +this.dsspIgnoreHydrogens = dsspIgnoreHydrogens; +this.setStructure = setStructure; +this.isDSSP2 = (version > 1); +var bsAmino = new JU.BS(); +for (var i = 0; i < bioPolymerCount; i++) if (Clazz_instanceOf(this.bioPolymers[i],"JM.AminoPolymer")) bsAmino.set(i); + +if (bsAmino.isEmpty()) return ""; +var m = this.bioPolymers[0].model; +var sb = new JU.SB(); +sb.append("Jmol ").append(JV.Viewer.getJmolVersion()).append(" DSSP analysis for model ").append(m.ms.getModelNumberDotted(m.modelIndex)).append(" - ").append(m.ms.getModelTitle(m.modelIndex)).append("\n"); +if (m.modelIndex == 0) sb.append("\nW. Kabsch and C. Sander, Biopolymers, vol 22, 1983, pp 2577-2637\n\nWe thank Wolfgang Kabsch and Chris Sander for writing the DSSP software,\nand we thank the CMBI for maintaining it to the extent that it was easy to\nre-engineer in Java for our purposes. \n\nSecond generation DSSP 2.0 is ").append(this.isDSSP2 ? "" : "NOT ").append("used in this analysis. See Int. J. Mol. Sci. 2014, 15, 7841-7864; doi:10.3390/ijms15057841.\n"); +if (setStructure && m.modelIndex == 0) sb.append("\nAll bioshapes have been deleted and must be regenerated.\n"); +if (m.altLocCount > 0) sb.append("\nNote: This model contains alternative locations. Use 'CONFIGURATION 1' to be consistent with CMBI DSSP.\n"); +this.labels = Clazz_newCharArray (bioPolymerCount, '\0'); +this.done = new Array(bioPolymerCount); +this.bsBad = new JU.BS(); +var haveWarned = false; +for (var i = bsAmino.nextSetBit(0); i >= 0; i = bsAmino.nextSetBit(i + 1)) { +var ap = this.bioPolymers[i]; +if (!haveWarned && (ap.monomers[0]).getExplicitNH() != null) { +if (dsspIgnoreHydrogens) sb.append(J.i18n.GT.o(J.i18n.GT.$("NOTE: Backbone amide hydrogen positions are present and will be ignored. Their positions will be approximated, as in standard DSSP analysis.\nUse {0} to not use this approximation.\n\n"), "SET dsspCalculateHydrogenAlways FALSE")); + else sb.append(J.i18n.GT.o(J.i18n.GT.$("NOTE: Backbone amide hydrogen positions are present and will be used. Results may differ significantly from standard DSSP analysis.\nUse {0} to ignore these hydrogen positions.\n\n"), "SET dsspCalculateHydrogenAlways TRUE")); +haveWarned = true; +}ap.recalculateLeadMidpointsAndWingVectors(); +var n = ap.monomerCount; +this.labels[i] = Clazz_newCharArray (n, '\0'); +this.done[i] = new JU.BS(); +for (var j = 0; j < n; j++) if ((ap.monomers[j]).getCarbonylOxygenAtom() == null) this.bsBad.set(ap.monomers[j].leadAtomIndex); + +} +var min = this.getDualHydrogenBondArray(); +this.bridgesA = new JU.Lst(); +this.bridgesP = new JU.Lst(); +this.htBridges = new java.util.Hashtable(); +this.htLadders = new java.util.Hashtable(); +this.getBridges(min); +this.getSheetStructures(); +var reports = new Array(bioPolymerCount); +for (var i = bsAmino.nextSetBit(0); i >= 0; i = bsAmino.nextSetBit(i + 1)) if (min[i] != null) reports[i] = this.findHelixes(i, min[i]); + +if (doReport) { +var sbSummary = new JU.SB(); +sb.append("\n------------------------------\n"); +for (var i = bsAmino.nextSetBit(0); i >= 0; i = bsAmino.nextSetBit(i + 1)) if (this.labels[i] != null) { +var ap = this.bioPolymers[i]; +sbSummary.append(this.dumpSummary(ap, this.labels[i])); +sb.append(reports[i]).append(this.dumpTags(ap, "$.1: " + String.valueOf(this.labels[i]), this.bsBad, 2)); +} +if (this.bsBad.nextSetBit(0) >= 0) sb.append("\nNOTE: '!' indicates a residue that is missing a backbone carbonyl oxygen atom.\n"); +sb.append("\n").append("SUMMARY:" + sbSummary); +}return sb.toString(); +}, "~A,~N,~O,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "getDualHydrogenBondArray", +function(){ +var min = JU.AU.newInt4(this.bioPolymerCount); +for (var i = 0; i < this.bioPolymerCount; i++) { +if (!(Clazz_instanceOf(this.bioPolymers[i],"JM.AminoPolymer"))) continue; +var n = this.bioPolymers[i].monomerCount; +min[i] = Clazz_newIntArray (n, 2, 3, 0); +for (var j = 0; j < n; ++j) { +min[i][j][0][1] = min[i][j][1][1] = -2147483648; +min[i][j][0][2] = min[i][j][1][2] = 0; +} +} +for (var i = 0; i < this.bioPolymerCount; i++) if (min[i] != null) for (var j = 0; j < this.bioPolymerCount; j++) if (min[j] != null) this.bioPolymers[i].calcRasmolHydrogenBonds(this.bioPolymers[j], null, null, null, 2, min[i], false, this.dsspIgnoreHydrogens); + + +return min; +}); +Clazz_defineMethod(c$, "getBridges", +function(min){ +var atoms = this.bioPolymers[0].model.ms.at; +var bridge = null; +var htTemp = new java.util.Hashtable(); +for (var p1 = 0; p1 < min.length; p1++) if (Clazz_instanceOf(this.bioPolymers[p1],"JM.AminoPolymer")) { +var ap1 = (this.bioPolymers[p1]); +var n = min[p1].length - 1; +for (var a = 1; a < n; a++) { +var ia = ap1.monomers[a].leadAtomIndex; +if (this.bsBad.get(ia)) continue; +for (var p2 = p1; p2 < min.length; p2++) if (Clazz_instanceOf(this.bioPolymers[p2],"JM.AminoPolymer")) for (var b = (p1 == p2 ? a + 3 : 1); b < min[p2].length - 1; b++) { +var ap2 = this.bioPolymers[p2]; +var ib = ap2.monomers[b].leadAtomIndex; +if (this.bsBad.get(ib)) continue; +if ((bridge = this.getBridge(min, p1, a, p2, b, this.bridgesP, atoms[ia], atoms[ib], ap1, ap2, htTemp, false)) != null) { +} else if ((bridge = this.getBridge(min, p1, a, p2, b, this.bridgesA, atoms[ia], atoms[ib], ap1, ap2, htTemp, true)) != null) { +bridge.isAntiparallel = true; +} else { +continue; +}if (JU.Logger.debugging) JU.Logger.debug("Bridge found " + bridge); +this.done[p1].set(a); +this.done[p2].set(b); +this.htBridges.put(ia + "-" + ib, bridge); +} + +} +} +}, "~A"); +Clazz_defineMethod(c$, "getBridge", +function(min, p1, a, p2, b, bridges, atom1, atom2, ap1, ap2, htTemp, isAntiparallel){ +var b1 = null; +var b2 = null; +var ipt = 0; +var offsets = (isAntiparallel ? this.sheetOffsets[1] : this.sheetOffsets[0]); +if ((b1 = this.isHbonded(a + offsets[0], b + offsets[1], p1, p2, min)) != null && (b2 = this.isHbonded(b + offsets[2], a + offsets[3], p2, p1, min)) != null || (b1 = this.isHbonded(a + offsets[ipt = 4], b + offsets[5], p1, p2, min)) != null && (b2 = this.isHbonded(b + offsets[6], a + offsets[7], p2, p1, min)) != null) { +var bridge = new J.dssx.Bridge(atom1, atom2, this.htLadders); +bridges.addLast(bridge); +if (this.vHBonds != null) { +var type = (isAntiparallel ? 14336 : 6144); +this.addHbond(ap1.monomers[a + offsets[ipt]], ap2.monomers[b + offsets[++ipt]], b1[2], type, htTemp); +this.addHbond(ap2.monomers[b + offsets[++ipt]], ap1.monomers[a + offsets[++ipt]], b2[2], type, htTemp); +}return bridge; +}return null; +}, "~A,~N,~N,~N,~N,JU.Lst,JM.Atom,JM.Atom,JM.AminoPolymer,JM.AminoPolymer,java.util.Map,~B"); +Clazz_defineMethod(c$, "addHbond", +function(donor, acceptor, iEnergy, type, htTemp){ +var nitrogen = (donor).getNitrogenAtom(); +var oxygen = (acceptor).getCarbonylOxygenAtom(); +if (htTemp != null) { +var key = nitrogen.i + " " + oxygen.i; +if (htTemp.containsKey(key)) return; +htTemp.put(key, Boolean.TRUE); +}this.vHBonds.addLast( new JM.HBond(nitrogen, oxygen, type, 1, 0, iEnergy / 1000)); +}, "JM.Monomer,JM.Monomer,~N,~N,java.util.Map"); +Clazz_defineMethod(c$, "getSheetStructures", +function(){ +if (this.bridgesA.size() == 0 && this.bridgesP.size() == 0) return; +this.createLadders(this.bridgesA, true); +this.createLadders(this.bridgesP, false); +var bsEEE = new JU.BS(); +var bsB = new JU.BS(); +for (var ladder, $ladder = this.htLadders.keySet().iterator (); $ladder.hasNext()&& ((ladder = $ladder.next ()) || true);) { +if (ladder[0][0] == ladder[0][1] && ladder[1][0] == ladder[1][1]) { +bsB.set(ladder[0][0]); +bsB.set(ladder[1][0]); +} else { +bsEEE.setBits(ladder[0][0], ladder[0][1] + 1); +bsEEE.setBits(ladder[1][0], ladder[1][1] + 1); +}} +var bsSheet = new JU.BS(); +var bsBridge = new JU.BS(); +for (var i = this.bioPolymers.length; --i >= 0; ) { +if (!(Clazz_instanceOf(this.bioPolymers[i],"JM.AminoPolymer"))) continue; +bsSheet.clearAll(); +bsBridge.clearAll(); +var ap = this.bioPolymers[i]; +for (var iStart = 0; iStart < ap.monomerCount; ) { +var index = ap.monomers[iStart].leadAtomIndex; +if (bsEEE.get(index)) { +var iEnd = iStart + 1; +while (iEnd < ap.monomerCount && bsEEE.get(ap.monomers[iEnd].leadAtomIndex)) iEnd++; + +bsSheet.setBits(iStart, iEnd); +iStart = iEnd; +} else { +if (bsB.get(index)) bsBridge.set(iStart); +++iStart; +}} +if (this.doReport) { +this.setTag(this.labels[i], bsBridge, 'B'); +this.setTag(this.labels[i], bsSheet, 'E'); +}if (this.setStructure) { +ap.setStructureBS(0, 3, J.c.STR.SHEET, bsSheet, false); +}this.done[i].or(bsSheet); +this.done[i].or(bsBridge); +} +}); +Clazz_defineMethod(c$, "createLadders", +function(bridges, isAntiparallel){ +var dir = (isAntiparallel ? -1 : 1); +var n = bridges.size(); +for (var i = 0; i < n; i++) this.checkBridge(bridges.get(i), isAntiparallel, 1, dir); + +for (var i = 0; i < n; i++) this.checkBulge(bridges.get(i), isAntiparallel, 1); + +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "checkBridge", +function(bridge, isAntiparallel, n1, n2){ +var b = this.htBridges.get(bridge.a.getOffsetResidueAtom("\0", n1) + "-" + bridge.b.getOffsetResidueAtom("\0", n2)); +return (b != null && bridge.addBridge(b, this.htLadders)); +}, "J.dssx.Bridge,~B,~N,~N"); +Clazz_defineMethod(c$, "checkBulge", +function(bridge, isAntiparallel, dir){ +var dir1 = (isAntiparallel ? -1 : 1); +for (var i = 0; i < 3; i++) for (var j = (i == 0 ? 1 : 0); j < 6; j++) { +this.checkBridge(bridge, isAntiparallel, i * dir, j * dir1); +if (j > i) this.checkBridge(bridge, isAntiparallel, j * dir, i * dir1); +} + +}, "J.dssx.Bridge,~B,~N"); +Clazz_defineMethod(c$, "dumpSummary", +function(ap, labels){ +var a = ap.monomers[0].getLeadAtom(); +var id = a.getChainID(); +var prefix = (id == 0 ? "" : a.getChainIDStr() + ":"); +var sb = new JU.SB(); +var lastChar = '\u0000'; +var insCode1 = '\u0000'; +var insCode2 = '\u0000'; +var firstResno = -1; +var lastResno = -1; +var n = ap.monomerCount; +var m = ap.monomers; +for (var i = 0; i <= n; i++) { +if (i == n || labels[i] != lastChar) { +if (lastChar != '\0') sb.appendC('\n').appendC(lastChar).append(" : ").append(prefix).appendI(firstResno).append(insCode1 == '\0' ? "" : String.valueOf(insCode1)).append("_").append(prefix).appendI(lastResno).append(insCode2 == '\0' ? "" : String.valueOf(insCode2)); +if (i == n) break; +lastChar = labels[i]; +firstResno = m[i].getResno(); +insCode1 = m[i].getInsertionCode(); +}lastResno = m[i].getResno(); +insCode2 = m[i].getInsertionCode(); +} +return sb.toString(); +}, "JM.AminoPolymer,~A"); +Clazz_defineMethod(c$, "dumpTags", +function(ap, lines, bsBad, mode){ +var prefix = ap.monomers[0].getLeadAtom().getChainID() + "." + (ap.bioPolymerIndexInModel + 1); +lines = JU.PT.rep(lines, "$", prefix); +var iFirst = ap.monomers[0].getResno(); +var pre = "\n" + prefix; +var sb = new JU.SB(); +var sb0 = new JU.SB().append(pre + ".8: "); +var sb1 = new JU.SB().append(pre + ".7: "); +var sb2 = new JU.SB().append(pre + ".6: "); +var sb3 = new JU.SB().append(pre + ".0: "); +var i = iFirst; +var n = ap.monomerCount; +for (var ii = 0; ii < n; ii++) { +i = ap.monomers[ii].getResno(); +sb0.append(i % 100 == 0 ? "" + ((Clazz_doubleToInt(i / 100)) % 100) : " "); +sb1.append(i % 10 == 0 ? "" + ((Clazz_doubleToInt(i / 10)) % 10) : " "); +sb2.appendI(i % 10); +sb3.appendC(bsBad.get(ap.monomers[ii].leadAtomIndex) ? '!' : ap.monomers[ii].getGroup1()); +} +if ((mode & 1) == 1) sb.appendSB(sb0).appendSB(sb1).appendSB(sb2); +sb.append("\n"); +sb.append(lines); +if ((mode & 2) == 2) { +sb.appendSB(sb3); +sb.append("\n\n"); +}return sb.toString().$replace('\0', '.'); +}, "JM.AminoPolymer,~S,JU.BS,~N"); +Clazz_defineMethod(c$, "isHbonded", +function(indexDonor, indexAcceptor, pDonor, pAcceptor, min){ +if (indexDonor < 0 || indexAcceptor < 0) return null; +var min1 = min[pDonor]; +var min2 = min[pAcceptor]; +if (indexDonor >= min1.length || indexAcceptor >= min2.length) return null; +return (min1[indexDonor][0][0] == pAcceptor && min1[indexDonor][0][1] == indexAcceptor ? min1[indexDonor][0] : min1[indexDonor][1][0] == pAcceptor && min1[indexDonor][1][1] == indexAcceptor ? min1[indexDonor][1] : null); +}, "~N,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "findHelixes", +function(iPolymer, min){ +var ap = this.bioPolymers[iPolymer]; +if (JU.Logger.debugging) for (var j = 0; j < ap.monomerCount; j++) JU.Logger.debug(iPolymer + "." + ap.monomers[j].getResno() + "\t" + JU.Escape.e(min[j])); + +var bsTurn = new JU.BS(); +var line3; +var line4; +var line5; +if (this.isDSSP2) { +line5 = this.findHelixes2(0, iPolymer, 5, min, J.c.STR.HELIXPI, 12288, bsTurn, true); +line4 = this.findHelixes2(2, iPolymer, 4, min, J.c.STR.HELIXALPHA, 10240, bsTurn, false); +line3 = this.findHelixes2(4, iPolymer, 3, min, J.c.STR.HELIX310, 8192, bsTurn, false); +} else { +line4 = this.findHelixes2(2, iPolymer, 4, min, J.c.STR.HELIXALPHA, 10240, bsTurn, true); +line3 = this.findHelixes2(4, iPolymer, 3, min, J.c.STR.HELIX310, 8192, bsTurn, false); +line5 = this.findHelixes2(0, iPolymer, 5, min, J.c.STR.HELIXPI, 12288, bsTurn, false); +}if (this.setStructure) ap.setStructureBS(0, 6, J.c.STR.TURN, bsTurn, false); +if (this.doReport) { +this.setTag(this.labels[iPolymer], bsTurn, 'T'); +return this.dumpTags(ap, "$.5: " + line5 + "\n" + "$.4: " + line4 + "\n" + "$.3: " + line3, this.bsBad, 1); +}return ""; +}, "~N,~A"); +Clazz_defineMethod(c$, "findHelixes2", +function(mmtfType, iPolymer, pitch, min, subtype, type, bsTurn, isFirst){ +var ap = this.bioPolymers[iPolymer]; +var bsStart = new JU.BS(); +var bsNNN = new JU.BS(); +var bsX = new JU.BS(); +var bsStop = new JU.BS(); +var bsHelix = new JU.BS(); +var bsDone = this.done[iPolymer]; +var warning = ""; +var n = ap.monomerCount; +for (var i = pitch; i < n; ++i) { +var i0 = i - pitch; +var bpt = 0; +if (min[i][0][0] == iPolymer && min[i][0][1] == i0 || min[i][bpt = 1][0] == iPolymer && min[i][1][1] == i0) { +var ia = ap.monomers[i0].leadAtomIndex; +var ipt = this.bsBad.nextSetBit(ia); +var m = ap.monomers[i]; +if (ipt >= ia && ipt <= m.leadAtomIndex) continue; +bsStart.set(i0); +bsNNN.setBits(i0 + 1, i); +bsStop.set(i); +ipt = bsDone.nextSetBit(i0); +var isClear = (ipt < 0 || ipt >= i); +var addH = false; +if (i0 > 0 && bsStart.get(i0 - 1) && (isFirst || isClear)) { +bsHelix.setBits(i0, i); +if (!isClear) warning += " WARNING! Bridge to helix at " + ap.monomers[ipt]; +addH = true; +} else if (isClear || bsDone.nextClearBit(ipt) < i) { +addH = true; +}if (bsStop.get(i0)) bsX.set(i0); +if (addH && this.vHBonds != null) { +this.addHbond(m, ap.monomers[i0], min[i][bpt][2], type, null); +}}} +var taglines; +if (this.doReport) { +taglines = Clazz_newCharArray (n, '\0'); +this.setTag(taglines, bsNNN, String.fromCharCode(48 + pitch)); +this.setTag(taglines, bsStart, '>'); +this.setTag(taglines, bsStop, '<'); +this.setTag(taglines, bsX, 'X'); +} else { +taglines = null; +}bsDone.or(bsHelix); +bsNNN.andNot(bsDone); +bsTurn.or(bsNNN); +bsTurn.andNot(bsHelix); +if (this.setStructure) ap.setStructureBS(0, mmtfType, subtype, bsHelix, false); +if (this.doReport) { +this.setTag(this.labels[iPolymer], bsHelix, String.fromCharCode(68 + pitch)); +return String.valueOf(taglines) + warning; +}return ""; +}, "~N,~N,~N,~A,J.c.STR,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "setTag", +function(tags, bs, ch){ +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) tags[i] = ch; + +}, "~A,JU.BS,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.G3DRenderer", "JU.P3", "$.V3"], "J.g3d.HermiteRenderer", ["JU.Lst", "$.P3i"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.gdata = null; +this.pLeft = null; +this.pRight = null; +this.sLeft = null; +this.sRight = null; +this.pTopLeft = null; +this.pTopRight = null; +this.pBotLeft = null; +this.pBotRight = null; +this.a1 = null; +this.a2 = null; +this.b1 = null; +this.b2 = null; +this.c1 = null; +this.c2 = null; +this.d1 = null; +this.d2 = null; +this.T1 = null; +this.T2 = null; +this.depth1 = null; +this.needToFill = null; +Clazz_instantialize(this, arguments);}, J.g3d, "HermiteRenderer", null, J.g3d.G3DRenderer); +Clazz_prepareFields (c$, function(){ +this.pLeft = new Array(16); +this.pRight = new Array(16); +this.sLeft = Clazz_newFloatArray (16, 0); +this.sRight = Clazz_newFloatArray (16, 0); +this.pTopLeft = new Array(16); +this.pTopRight = new Array(16); +this.pBotLeft = new Array(16); +this.pBotRight = new Array(16); +{ +for (var i = 16; --i >= 0; ) { +this.pLeft[i] = new JU.P3i(); +this.pRight[i] = new JU.P3i(); +this.pTopLeft[i] = new JU.P3(); +this.pTopRight[i] = new JU.P3(); +this.pBotLeft[i] = new JU.P3(); +this.pBotRight[i] = new JU.P3(); +} +}this.a1 = new JU.P3(); +this.a2 = new JU.P3(); +this.b1 = new JU.P3(); +this.b2 = new JU.P3(); +this.c1 = new JU.P3(); +this.c2 = new JU.P3(); +this.d1 = new JU.P3(); +this.d2 = new JU.P3(); +this.T1 = new JU.V3(); +this.T2 = new JU.V3(); +this.depth1 = new JU.V3(); +this.needToFill = Clazz_newBooleanArray(16, false); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_overrideMethod(c$, "set", +function(g3d, gdata){ +this.g3d = g3d; +this.gdata = gdata; +return this; +}, "J.api.JmolRendererInterface,JU.GData"); +Clazz_defineMethod(c$, "renderHermiteRope", +function(fill, tension, diameterBeg, diameterMid, diameterEnd, p0, p1, p2, p3){ +var z1 = Clazz_floatToInt(p1.z); +var z2 = Clazz_floatToInt(p2.z); +if (p0.z == 1 || z1 == 1 || z2 == 1 || p3.z == 1) return; +if (this.gdata.isClippedZ(z1) || this.gdata.isClippedZ(z2)) return; +var x1 = Clazz_floatToInt(p1.x); +var y1 = Clazz_floatToInt(p1.y); +var x2 = Clazz_floatToInt(p2.x); +var y2 = Clazz_floatToInt(p2.y); +var xT1 = Clazz_doubleToInt(((x2 - Clazz_floatToInt(p0.x)) * tension) / 8); +var yT1 = Clazz_doubleToInt(((y2 - Clazz_floatToInt(p0.y)) * tension) / 8); +var zT1 = Clazz_doubleToInt(((z2 - Clazz_floatToInt(p0.z)) * tension) / 8); +var xT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.x) - x1) * tension) / 8); +var yT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.y) - y1) * tension) / 8); +var zT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.z) - z1) * tension) / 8); +this.sLeft[0] = 0; +this.pLeft[0].set(x1, y1, z1); +this.sRight[0] = 1; +this.pRight[0].set(x2, y2, z2); +var sp = 0; +var dDiameterFirstHalf = 0; +var dDiameterSecondHalf = 0; +if (fill) { +dDiameterFirstHalf = 2 * (diameterMid - diameterBeg); +dDiameterSecondHalf = 2 * (diameterEnd - diameterMid); +}do { +var a = this.pLeft[sp]; +var b = this.pRight[sp]; +var dx = b.x - a.x; +if (dx >= -1 && dx <= 1) { +var dy = b.y - a.y; +if (dy >= -1 && dy <= 1) { +var s = this.sLeft[sp]; +if (fill) { +var d = (s < 0.5 ? diameterBeg + Clazz_floatToInt(dDiameterFirstHalf * s) : diameterMid + Clazz_floatToInt(dDiameterSecondHalf * (s - 0.5))); +this.g3d.fillSphereI(d, a); +} else { +this.g3d.plotPixelClippedP3i(a); +}--sp; +continue; +}}var s = (this.sLeft[sp] + this.sRight[sp]) / 2; +var s2 = s * s; +var s3 = s2 * s; +var h1 = 2 * s3 - 3 * s2 + 1; +var h2 = -2 * s3 + 3 * s2; +var h3 = s3 - 2 * s2 + s; +var h4 = s3 - s2; +if (sp >= 15) break; +var pMid = this.pRight[sp + 1]; +pMid.x = Clazz_doubleToInt(h1 * x1 + h2 * x2 + h3 * xT1 + h4 * xT2); +pMid.y = Clazz_doubleToInt(h1 * y1 + h2 * y2 + h3 * yT1 + h4 * yT2); +pMid.z = Clazz_doubleToInt(h1 * z1 + h2 * z2 + h3 * zT1 + h4 * zT2); +this.pRight[sp + 1] = this.pRight[sp]; +this.sRight[sp + 1] = this.sRight[sp]; +this.pRight[sp] = pMid; +this.sRight[sp] = s; +++sp; +this.pLeft[sp].setT(pMid); +this.sLeft[sp] = s; +} while (sp >= 0); +}, "~B,~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "renderHermiteRibbon", +function(fill, border, tension, p0, p1, p2, p3, p4, p5, p6, p7, aspectRatio, fillType){ +if (p0.z == 1 || p1.z == 1 || p2.z == 1 || p3.z == 1 || p4.z == 1 || p5.z == 1 || p6.z == 1 || p7.z == 1) return; +if (!fill) { +tension = Math.abs(tension); +this.renderParallelPair(fill, tension, p0, p1, p2, p3, p4, p5, p6, p7); +return; +}var isRev = (tension < 0); +if (isRev) tension = -tension; +var ratio = 1 / aspectRatio; +var x1 = Clazz_floatToInt(p1.x); +var y1 = Clazz_floatToInt(p1.y); +var z1 = Clazz_floatToInt(p1.z); +var x2 = Clazz_floatToInt(p2.x); +var y2 = Clazz_floatToInt(p2.y); +var z2 = Clazz_floatToInt(p2.z); +var xT1 = Clazz_doubleToInt(((x2 - Clazz_floatToInt(p0.x)) * tension) / 8); +var yT1 = Clazz_doubleToInt(((y2 - Clazz_floatToInt(p0.y)) * tension) / 8); +var zT1 = Clazz_doubleToInt(((z2 - Clazz_floatToInt(p0.z)) * tension) / 8); +var xT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.x) - x1) * tension) / 8); +var yT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.y) - y1) * tension) / 8); +var zT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.z) - z1) * tension) / 8); +this.pTopLeft[0].set(x1, y1, z1); +this.pTopRight[0].set(x2, y2, z2); +var x5 = Clazz_floatToInt(p5.x); +var y5 = Clazz_floatToInt(p5.y); +var z5 = Clazz_floatToInt(p5.z); +var x6 = Clazz_floatToInt(p6.x); +var y6 = Clazz_floatToInt(p6.y); +var z6 = Clazz_floatToInt(p6.z); +var xT5 = Clazz_doubleToInt(((x6 - Clazz_floatToInt(p4.x)) * tension) / 8); +var yT5 = Clazz_doubleToInt(((y6 - Clazz_floatToInt(p4.y)) * tension) / 8); +var zT5 = Clazz_doubleToInt(((z6 - Clazz_floatToInt(p4.z)) * tension) / 8); +var xT6 = Clazz_doubleToInt(((Clazz_floatToInt(p7.x) - x5) * tension) / 8); +var yT6 = Clazz_doubleToInt(((Clazz_floatToInt(p7.y) - y5) * tension) / 8); +var zT6 = Clazz_doubleToInt(((Clazz_floatToInt(p7.z) - z5) * tension) / 8); +this.pBotLeft[0].set(x5, y5, z5); +this.pBotRight[0].set(x6, y6, z6); +this.sLeft[0] = 0; +this.sRight[0] = 1; +this.needToFill[0] = true; +var sp = 0; +var closeEnd = false; +do { +var a = this.pTopLeft[sp]; +var b = this.pTopRight[sp]; +var dxTop = b.x - a.x; +var dxTop2 = dxTop * dxTop; +if (dxTop2 < 10) { +var dyTop = b.y - a.y; +var dyTop2 = dyTop * dyTop; +if (dyTop2 < 10) { +var c = this.pBotLeft[sp]; +var d = this.pBotRight[sp]; +var dxBot = d.x - c.x; +var dxBot2 = dxBot * dxBot; +if (dxBot2 < 8) { +var dyBot = d.y - c.y; +var dyBot2 = dyBot * dyBot; +if (dyBot2 < 8) { +if (border) { +this.g3d.fillSphereBits(3, a); +this.g3d.fillSphereBits(3, c); +}if (this.needToFill[sp]) { +if (aspectRatio > 0) { +this.T1.sub2(a, c); +this.T1.scale(ratio); +this.T2.sub2(a, b); +this.depth1.cross(this.T1, this.T2); +this.depth1.scale(this.T1.length() / this.depth1.length()); +this.a1.add2(a, this.depth1); +this.a2.sub2(a, this.depth1); +this.b1.add2(b, this.depth1); +this.b2.sub2(b, this.depth1); +this.c1.add2(c, this.depth1); +this.c2.sub2(c, this.depth1); +this.d1.add2(d, this.depth1); +this.d2.sub2(d, this.depth1); +this.g3d.fillQuadrilateral(this.a1, this.b1, this.d1, this.c1, false); +this.g3d.fillQuadrilateral(this.a2, this.b2, this.d2, this.c2, false); +this.g3d.fillQuadrilateral(this.a1, this.b1, this.b2, this.a2, false); +this.g3d.fillQuadrilateral(this.c1, this.d1, this.d2, this.c2, false); +closeEnd = true; +} else { +if (fillType == 0) { +if (isRev) this.g3d.fillQuadrilateral(c, d, b, a, false); + else this.g3d.fillQuadrilateral(a, b, d, c, false); +} else { +if (isRev) { +if (fillType != J.g3d.HermiteRenderer.isFront(a, b, d)) this.g3d.fillTriangle3f(a, b, d, false); +if (fillType != J.g3d.HermiteRenderer.isFront(a, d, c)) this.g3d.fillTriangle3f(a, d, c, false); +} else { +if (fillType == J.g3d.HermiteRenderer.isFront(a, b, d)) this.g3d.fillTriangle3f(a, b, d, false); +if (fillType == J.g3d.HermiteRenderer.isFront(a, d, c)) this.g3d.fillTriangle3f(a, d, c, false); +}}}this.needToFill[sp] = false; +}if (dxTop2 + dyTop2 < 2 && dxBot2 + dyBot2 < 2) { +--sp; +continue; +}}}}}var s = (this.sLeft[sp] + this.sRight[sp]) / 2; +var s2 = s * s; +var s3 = s2 * s; +var h1 = 2 * s3 - 3 * s2 + 1; +var h2 = -2 * s3 + 3 * s2; +var h3 = s3 - 2 * s2 + s; +var h4 = s3 - s2; +if (sp >= 15) break; +var spNext = sp + 1; +var pMidTop = this.pTopRight[spNext]; +pMidTop.x = (h1 * x1 + h2 * x2 + h3 * xT1 + h4 * xT2); +pMidTop.y = (h1 * y1 + h2 * y2 + h3 * yT1 + h4 * yT2); +pMidTop.z = (h1 * z1 + h2 * z2 + h3 * zT1 + h4 * zT2); +var pMidBot = this.pBotRight[spNext]; +pMidBot.x = (h1 * x5 + h2 * x6 + h3 * xT5 + h4 * xT6); +pMidBot.y = (h1 * y5 + h2 * y6 + h3 * yT5 + h4 * yT6); +pMidBot.z = (h1 * z5 + h2 * z6 + h3 * zT5 + h4 * zT6); +this.pTopRight[spNext] = this.pTopRight[sp]; +this.pTopRight[sp] = pMidTop; +this.pBotRight[spNext] = this.pBotRight[sp]; +this.pBotRight[sp] = pMidBot; +this.sRight[spNext] = this.sRight[sp]; +this.sRight[sp] = s; +this.needToFill[spNext] = this.needToFill[sp]; +this.pTopLeft[spNext].setT(pMidTop); +this.pBotLeft[spNext].setT(pMidBot); +this.sLeft[spNext] = s; +++sp; +} while (sp >= 0); +if (closeEnd) { +this.a1.z += 1; +this.c1.z += 1; +this.c2.z += 1; +this.a2.z += 1; +this.g3d.fillQuadrilateral(this.a1, this.c1, this.c2, this.a2, false); +}}, "~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N"); +c$.isFront = Clazz_defineMethod(c$, "isFront", +function(a, b, c){ +J.g3d.HermiteRenderer.vAB.sub2(b, a); +J.g3d.HermiteRenderer.vAC.sub2(c, a); +J.g3d.HermiteRenderer.vAB.cross(J.g3d.HermiteRenderer.vAB, J.g3d.HermiteRenderer.vAC); +return (J.g3d.HermiteRenderer.vAB.z < 0 ? -1 : 1); +}, "JU.P3,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "renderParallelPair", +function(fill, tension, p0, p1, p2, p3, p4, p5, p6, p7){ +var endPoints = Clazz_newArray(-1, [p2, p1, p6, p5]); +var points = new JU.Lst(); +var whichPoint = 0; +var numTopStrandPoints = 2; +var numPointsPerSegment = 5.0; +var interval = (1.0 / numPointsPerSegment); +var currentInt = 0.0; +var x1 = Clazz_floatToInt(p1.x); +var y1 = Clazz_floatToInt(p1.y); +var z1 = Clazz_floatToInt(p1.z); +var x2 = Clazz_floatToInt(p2.x); +var y2 = Clazz_floatToInt(p2.y); +var z2 = Clazz_floatToInt(p2.z); +var xT1 = Clazz_doubleToInt(((x2 - Clazz_floatToInt(p0.x)) * tension) / 8); +var yT1 = Clazz_doubleToInt(((y2 - Clazz_floatToInt(p0.y)) * tension) / 8); +var zT1 = Clazz_doubleToInt(((z2 - Clazz_floatToInt(p0.z)) * tension) / 8); +var xT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.x) - x1) * tension) / 8); +var yT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.y) - y1) * tension) / 8); +var zT2 = Clazz_doubleToInt(((Clazz_floatToInt(p3.z) - z1) * tension) / 8); +this.sLeft[0] = 0; +this.pLeft[0].set(x1, y1, z1); +this.sRight[0] = 1; +this.pRight[0].set(x2, y2, z2); +var sp = 0; +for (var strands = 2; strands > 0; strands--) { +if (strands == 1) { +x1 = Clazz_floatToInt(p5.x); +y1 = Clazz_floatToInt(p5.y); +z1 = Clazz_floatToInt(p5.z); +x2 = Clazz_floatToInt(p6.x); +y2 = Clazz_floatToInt(p6.y); +z2 = Clazz_floatToInt(p6.z); +xT1 = Clazz_doubleToInt(((x2 - Clazz_floatToInt(p4.x)) * tension) / 8); +yT1 = Clazz_doubleToInt(((y2 - Clazz_floatToInt(p4.y)) * tension) / 8); +zT1 = Clazz_doubleToInt(((z2 - Clazz_floatToInt(p4.z)) * tension) / 8); +xT2 = Clazz_doubleToInt(((Clazz_floatToInt(p7.x) - x1) * tension) / 8); +yT2 = Clazz_doubleToInt(((Clazz_floatToInt(p7.y) - y1) * tension) / 8); +zT2 = Clazz_doubleToInt(((Clazz_floatToInt(p7.z) - z1) * tension) / 8); +this.sLeft[0] = 0; +this.pLeft[0].set(x1, y1, z1); +this.sRight[0] = 1; +this.pRight[0].set(x2, y2, z2); +sp = 0; +}points.addLast(endPoints[whichPoint++]); +currentInt = interval; +do { +var a = this.pLeft[sp]; +var b = this.pRight[sp]; +var dx = b.x - a.x; +var dy = b.y - a.y; +var dist2 = dx * dx + dy * dy; +if (dist2 <= 2) { +var s = this.sLeft[sp]; +this.g3d.fillSphereI(3, a); +if (s < 1.0 - currentInt) { +var temp = new JU.P3(); +temp.set(a.x, a.y, a.z); +points.addLast(temp); +currentInt += interval; +if (strands == 2) { +numTopStrandPoints++; +}}--sp; +} else { +var s = (this.sLeft[sp] + this.sRight[sp]) / 2; +var s2 = s * s; +var s3 = s2 * s; +var h1 = 2 * s3 - 3 * s2 + 1; +var h2 = -2 * s3 + 3 * s2; +var h3 = s3 - 2 * s2 + s; +var h4 = s3 - s2; +if (sp >= 15) break; +var pMid = this.pRight[sp + 1]; +pMid.x = Clazz_doubleToInt(h1 * x1 + h2 * x2 + h3 * xT1 + h4 * xT2); +pMid.y = Clazz_doubleToInt(h1 * y1 + h2 * y2 + h3 * yT1 + h4 * yT2); +pMid.z = Clazz_doubleToInt(h1 * z1 + h2 * z2 + h3 * zT1 + h4 * zT2); +this.pRight[sp + 1] = this.pRight[sp]; +this.sRight[sp + 1] = this.sRight[sp]; +this.pRight[sp] = pMid; +this.sRight[sp] = s; +++sp; +this.pLeft[sp].setT(pMid); +this.sLeft[sp] = s; +}} while (sp >= 0); +points.addLast(endPoints[whichPoint++]); +} +var size = points.size(); +for (var top = 0; top < numTopStrandPoints && (top + numTopStrandPoints) < size; top++) this.g3d.drawLineAB(points.get(top), points.get(top + numTopStrandPoints)); + +}, "~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3"); +c$.vAB = new JU.V3(); +c$.vAC = new JU.V3(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shape.AtomShape"], "J.shapebio.BioShape", ["JU.AU", "$.BS", "$.PT", "J.c.PAL", "$.STR", "JU.BSUtil", "$.C", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modelIndex = 0; +this.modelVisibilityFlags = 0; +this.shape = null; +this.bioPolymer = null; +this.meshes = null; +this.meshReady = null; +this.colixesBack = null; +this.monomers = null; +this.wingVectors = null; +this.leadAtomIndices = null; +this.hasBfactorRange = false; +this.bfactorMin = 0; +this.bfactorMax = 0; +this.range = 0; +this.floatRange = 0; +Clazz_instantialize(this, arguments);}, J.shapebio, "BioShape", J.shape.AtomShape); +Clazz_makeConstructor(c$, +function(shape, modelIndex, bioPolymer){ +Clazz_superConstructor (this, J.shapebio.BioShape, []); +this.shape = shape; +this.modelIndex = modelIndex; +this.bioPolymer = bioPolymer; +this.isActive = shape.isActive; +this.bsSizeDefault = new JU.BS(); +this.monomerCount = bioPolymer.monomerCount; +if (this.monomerCount > 0) { +this.colixes = Clazz_newShortArray (this.monomerCount, 0); +this.paletteIDs = Clazz_newByteArray (this.monomerCount, 0); +this.mads = Clazz_newShortArray (this.monomerCount + 1, 0); +this.monomers = bioPolymer.monomers; +this.meshReady = Clazz_newBooleanArray(this.monomerCount, false); +this.meshes = new Array(this.monomerCount); +this.wingVectors = bioPolymer.getWingVectors(); +this.leadAtomIndices = bioPolymer.getLeadAtomIndices(); +}}, "J.shapebio.BioShapeCollection,~N,JM.BioPolymer"); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +this.setPropAS(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "calcBfactorRange", +function(){ +this.bfactorMin = this.bfactorMax = this.monomers[0].getLeadAtom().getBfactor100(); +for (var i = this.monomerCount; --i > 0; ) { +var bfactor = this.monomers[i].getLeadAtom().getBfactor100(); +if (bfactor < this.bfactorMin) this.bfactorMin = bfactor; + else if (bfactor > this.bfactorMax) this.bfactorMax = bfactor; +} +this.range = this.bfactorMax - this.bfactorMin; +this.floatRange = this.range; +this.hasBfactorRange = true; +}); +Clazz_defineMethod(c$, "calcMeanPositionalDisplacement", +function(bFactor100){ +return Clazz_doubleToShort(Math.sqrt(bFactor100 / 7895.6835208714865) * 1000); +}, "~N"); +Clazz_overrideMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, bsNot){ +this.bioPolymer.findNearestAtomIndex(xMouse, yMouse, closest, this.mads, this.shape.vf, bsNot); +}, "~N,~N,~A,JU.BS"); +Clazz_defineMethod(c$, "setMad", +function(mad, bsSelected, values){ +if (this.monomerCount < 2) return; +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var flag = this.shape.vf; +var setRingVis = (flag == 32768 && Clazz_instanceOf(this.bioPolymer,"JM.NucleicPolymer")); +for (var i = this.monomerCount; --i >= 0; ) { +var leadAtomIndex = this.leadAtomIndices[i]; +if (bsSelected.get(leadAtomIndex)) { +if (values != null && leadAtomIndex < values.length) { +if (Float.isNaN(values[leadAtomIndex])) continue; +mad = Clazz_floatToShort(values[leadAtomIndex] * 2000); +}var isVisible = ((this.mads[i] = this.getMad(i, mad)) > 0); +this.bsSizeSet.setBitTo(i, isVisible); +this.monomers[i].setShapeVisibility(flag, isVisible); +this.shape.atoms[leadAtomIndex].setShapeVisibility(flag, isVisible); +if (setRingVis) (this.monomers[i]).setRingsVisible(isVisible); +this.falsifyNearbyMesh(i); +}} +if (this.monomerCount > 1) this.mads[this.monomerCount] = this.mads[this.monomerCount - 1]; +}, "~N,JU.BS,~A"); +Clazz_defineMethod(c$, "getMad", +function(groupIndex, mad){ +this.bsSizeDefault.setBitTo(groupIndex, mad == -1 || mad == -2); +if (mad >= 0) return mad; +switch (mad) { +case -1: +case -2: +if (mad == -1 && this.shape.madOn >= 0) return this.shape.madOn; +switch (this.monomers[groupIndex].getProteinStructureType()) { +case J.c.STR.SHEET: +case J.c.STR.HELIX: +return this.shape.madHelixSheet; +case J.c.STR.DNA: +case J.c.STR.RNA: +return this.shape.madDnaRna; +default: +return this.shape.madTurnRandom; +} +case -3: +{ +if (!this.hasBfactorRange) this.calcBfactorRange(); +var atom = this.monomers[groupIndex].getLeadAtom(); +var bfactor100 = atom.getBfactor100(); +var scaled = bfactor100 - this.bfactorMin; +if (this.range == 0) return 0; +var percentile = scaled / this.floatRange; +if (percentile < 0 || percentile > 1) JU.Logger.error("Que ha ocurrido? " + percentile); +return Clazz_floatToShort((1750 * percentile) + 250); +}case -4: +{ +var atom = this.monomers[groupIndex].getLeadAtom(); +return (2 * this.calcMeanPositionalDisplacement(atom.getBfactor100())); +}} +JU.Logger.error("unrecognized setMad(" + mad + ")"); +return 0; +}, "~N,~N"); +Clazz_defineMethod(c$, "falsifyMesh", +function(){ +if (this.meshReady == null) return; +for (var i = 0; i < this.monomerCount; i++) this.meshReady[i] = false; + +}); +Clazz_defineMethod(c$, "falsifyNearbyMesh", +function(index){ +if (this.meshReady == null) return; +this.meshReady[index] = false; +if (index > 0) this.meshReady[index - 1] = false; +if (index < this.monomerCount - 1) this.meshReady[index + 1] = false; +}, "~N"); +Clazz_defineMethod(c$, "setColixBS", +function(colix, pid, bsSelected){ +this.isActive = true; +if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.monomerCount); +for (var i = this.monomerCount; --i >= 0; ) { +var atomIndex = this.leadAtomIndices[i]; +if (bsSelected.get(atomIndex)) { +this.colixes[i] = this.shape.getColixI(colix, pid, atomIndex); +if (this.colixesBack != null && this.colixesBack.length > i) this.colixesBack[i] = 0; +this.paletteIDs[i] = pid; +this.bsColixSet.setBitTo(i, this.colixes[i] != 0); +}} +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "setColixBack", +function(colix, bsSelected){ +if (this.colixesBack == null) this.colixesBack = Clazz_newShortArray (this.colixes.length, 0); +if (this.colixesBack.length < this.colixes.length) this.colixesBack = JU.AU.ensureLengthShort(this.colixesBack, this.colixes.length); +for (var i = this.monomerCount; --i >= 0; ) if (bsSelected.get(this.leadAtomIndices[i])) this.colixesBack[i] = colix; + +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setColixes", +function(atomColixes, bsSelected){ +this.isActive = true; +if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.monomerCount); +for (var i = this.monomerCount; --i >= 0; ) { +var atomIndex = this.leadAtomIndices[i]; +if (bsSelected.get(atomIndex) && i < this.colixes.length && atomIndex < atomColixes.length) { +this.colixes[i] = this.shape.getColixI(atomColixes[atomIndex], J.c.PAL.UNKNOWN.id, atomIndex); +if (this.colixesBack != null && i < this.colixesBack.length) this.colixesBack[i] = 0; +this.paletteIDs[i] = J.c.PAL.UNKNOWN.id; +this.bsColixSet.set(i); +}} +}, "~A,JU.BS"); +Clazz_defineMethod(c$, "setParams", +function(data, atomMap, bsSelected){ +if (this.monomerCount == 0) return; +var c = data[0]; +var atrans = data[1]; +this.isActive = true; +if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.monomerCount); +var n = atomMap.length; +for (var i = this.monomerCount; --i >= 0; ) { +var atomIndex = this.leadAtomIndices[i]; +if (bsSelected.get(atomIndex) && i < this.colixes.length && atomIndex < n) { +var pt = atomMap[atomIndex]; +var colix = (c == null ? 0 : c[pt]); +var f = (atrans == null ? 0 : atrans[pt]); +if (f > 0.01) colix = JU.C.getColixTranslucent3(colix, true, f); +this.colixes[i] = this.shape.getColixI(colix, J.c.PAL.UNKNOWN.id, atomIndex); +if (this.colixesBack != null && i < this.colixesBack.length) this.colixesBack[i] = 0; +this.paletteIDs[i] = J.c.PAL.UNKNOWN.id; +this.bsColixSet.set(i); +}} +}, "~A,~A,JU.BS"); +Clazz_defineMethod(c$, "setTranslucent", +function(isTranslucent, bsSelected, translucentLevel){ +this.isActive = true; +if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.monomerCount); +for (var i = this.monomerCount; --i >= 0; ) if (bsSelected.get(this.leadAtomIndices[i])) { +this.colixes[i] = JU.C.getColixTranslucent3(this.colixes[i], isTranslucent, translucentLevel); +if (this.colixesBack != null && this.colixesBack.length > i) this.colixesBack[i] = JU.C.getColixTranslucent3(this.colixesBack[i], isTranslucent, translucentLevel); +this.bsColixSet.setBitTo(i, this.colixes[i] != 0); +} +}, "~B,JU.BS,~N"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +if (!this.isActive || this.wingVectors == null || this.monomerCount == 0) return; +var setRingsClickable = (Clazz_instanceOf(this.bioPolymer,"JM.NucleicPolymer") && this.shape.shapeID == 11); +var setAlphaClickable = (Clazz_instanceOf(this.bioPolymer,"JM.AlphaPolymer") || this.shape.shapeID != 15); +var ms = this.monomers[0].chain.model.ms; +for (var i = this.monomerCount; --i >= 0; ) { +if (this.mads[i] <= 0) continue; +var iAtom = this.leadAtomIndices[i]; +if (ms.isAtomHidden(iAtom)) continue; +if (setAlphaClickable) ms.at[iAtom].setClickable(1040384); +if (setRingsClickable) (this.monomers[i]).setRingsClickable(); +} +}); +Clazz_defineMethod(c$, "getBioShapeState", +function(type, translucentAllowed, temp, temp2){ +if (this.monomerCount > 0) { +if (!this.isActive || this.bsSizeSet == null && this.bsColixSet == null) return; +for (var i = 0; i < this.monomerCount; i++) { +var atomIndex1 = this.monomers[i].firstAtomIndex; +var atomIndex2 = this.monomers[i].lastAtomIndex; +if (this.bsSizeSet != null && (this.bsSizeSet.get(i) || this.bsColixSet != null && this.bsColixSet.get(i))) { +if (this.bsSizeDefault.get(i)) { +JU.BSUtil.setMapBitSet(temp, atomIndex1, atomIndex2, type + (this.bsSizeSet.get(i) ? " on" : " off")); +} else { +JU.BSUtil.setMapBitSet(temp, atomIndex1, atomIndex2, type + " " + JU.PT.escF(this.mads[i] / 2000)); +}}if (this.bsColixSet == null || !this.bsColixSet.get(i)) continue; +var s = J.shape.Shape.getColorCommand(type, this.paletteIDs[i], this.colixes[i], translucentAllowed); +if (this.colixesBack != null && this.colixesBack.length > i && this.colixesBack[i] != 0) s += " " + JU.C.getHexCode(this.colixesBack[i]); +JU.BSUtil.setMapBitSet(temp2, atomIndex1, atomIndex2, s); +} +}}, "~S,~B,java.util.Map,java.util.Map"); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shape.Shape"], "J.shapebio.BioShapeCollection", ["java.util.Hashtable", "JU.AU", "J.c.PAL", "J.shapebio.BioShape", "JU.BSUtil", "$.C", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atoms = null; +this.madOn = -2; +this.madHelixSheet = 3000; +this.madTurnRandom = 800; +this.madDnaRna = 5000; +this.isActive = false; +this.bioShapes = null; +Clazz_instantialize(this, arguments);}, J.shapebio, "BioShapeCollection", J.shape.Shape); +Clazz_overrideMethod(c$, "initModelSet", +function(){ +this.isBioShape = true; +this.atoms = this.ms.at; +this.initialize(); +}); +Clazz_overrideMethod(c$, "initShape", +function(){ +}); +Clazz_overrideMethod(c$, "getSizeG", +function(group){ +var m = group; +var groupIndex = m.groupIndex; +var leadAtomIndex = m.getLeadAtom().i; +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +for (var j = 0; j < bioShape.monomerCount; j++) { +if (bioShape.monomers[j].groupIndex == groupIndex && bioShape.monomers[j].getLeadAtom().i == leadAtomIndex) return bioShape.mads[j]; +} +} +return 0; +}, "JM.Group"); +Clazz_overrideMethod(c$, "replaceGroup", +function(g0, g1){ +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +for (var j = 0; j < bioShape.monomerCount; j++) if (bioShape.monomers[j] === g0) { +bioShape.monomers[j] = g1; +break; +} +} +}, "JM.Group,JM.Group"); +Clazz_overrideMethod(c$, "setShapeSizeRD", +function(size, rd, bsSelected){ +var mad = size; +this.initialize(); +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +if (bioShape.monomerCount > 0) bioShape.setMad(mad, bsSelected, (rd == null ? null : rd.values)); +} +}, "~N,J.atomdata.RadiusData,JU.BS"); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +this.setPropBSC(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "setPropBSC", +function(propertyName, value, bsSelected){ +if (propertyName === "refreshTrajectories") { +var modelIndex = ((value)[0]).intValue(); +for (var i = this.bioShapes.length; --i >= 0; ) { +var b = this.bioShapes[i]; +if (b.modelIndex == modelIndex) b.falsifyMesh(); +} +return; +}if (propertyName === "deleteModelAtoms") { +this.atoms = (value)[1]; +var modelIndex = ((value)[2])[0]; +for (var i = this.bioShapes.length; --i >= 0; ) { +var b = this.bioShapes[i]; +if (b.modelIndex > modelIndex) { +b.modelIndex--; +b.leadAtomIndices = b.bioPolymer.getLeadAtomIndices(); +} else if (b.modelIndex == modelIndex) { +this.bioShapes = JU.AU.deleteElements(this.bioShapes, i, 1); +}} +return; +}this.initialize(); +if ("color" === propertyName) { +var pid = J.c.PAL.pidOf(value); +var colix = JU.C.getColixO(value); +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +if (bioShape.monomerCount > 0) bioShape.setColixBS(colix, pid, bsSelected); +} +return; +}if ("params" === propertyName) { +var n = bsSelected.length(); +var atomMap = Clazz_newIntArray (n, 0); +for (var pt = 0, i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1), pt++) atomMap[i] = pt; + +for (var i = this.bioShapes.length; --i >= 0; ) this.bioShapes[i].setParams(value, atomMap, bsSelected); + +return; +}if ("colorPhase" === propertyName) { +var twoColors = value; +var colixBack = JU.C.getColixO(twoColors[0]); +var colix = JU.C.getColixO(twoColors[1]); +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +if (bioShape.monomerCount > 0) { +bioShape.setColixBS(colix, 64, bsSelected); +bioShape.setColixBack(colixBack, bsSelected); +}} +return; +}if ("translucency" === propertyName) { +var isTranslucent = ("translucent".equals(value)); +for (var i = this.bioShapes.length; --i >= 0; ) { +var bioShape = this.bioShapes[i]; +if (bioShape.monomerCount > 0) bioShape.setTranslucent(isTranslucent, bsSelected, this.translucentLevel); +} +return; +}this.setPropS(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +var temp = new java.util.Hashtable(); +var temp2 = new java.util.Hashtable(); +var type = JV.JC.shapeClassBases[this.shapeID]; +for (var iShape = this.bioShapes.length; --iShape >= 0; ) this.bioShapes[iShape].getBioShapeState(type, this.translucentAllowed, temp, temp2); + +var s = "\n" + this.vwr.getCommands(temp, temp2, this.shapeID == 9 ? "Backbone" : "select"); +return s; +}); +Clazz_defineMethod(c$, "initialize", +function(){ +var modelCount = this.ms.mc; +var models = this.ms.am; +var n = this.ms.getBioPolymerCountInModel(-1); +var shapes = new Array(n--); +for (var i = modelCount; --i >= 0; ) for (var j = this.ms.getBioPolymerCountInModel(i); --j >= 0; n--) { +var bp = (models[i]).bioPolymers[j]; +shapes[n] = (this.bioShapes == null || this.bioShapes.length <= n || this.bioShapes[n] == null || this.bioShapes[n].bioPolymer !== bp ? new J.shapebio.BioShape(this, i, bp) : this.bioShapes[n]); +} + +this.bioShapes = shapes; +}); +Clazz_overrideMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, bsNot){ +for (var i = this.bioShapes.length; --i >= 0; ) this.bioShapes[i].findNearestAtomIndex(xMouse, yMouse, closest, bsNot); + +}, "~N,~N,~A,JU.BS"); +Clazz_overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +if (this.bioShapes == null) return; +bsModels = JU.BSUtil.copy(bsModels); +if (this.ms.trajectory != null) this.ms.trajectory.setBaseModels(bsModels); +for (var i = this.bioShapes.length; --i >= 0; ) { +var b = this.bioShapes[i]; +b.modelVisibilityFlags = (bsModels.get(b.modelIndex) ? this.vf : 0); +} +}, "JU.BS"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +if (this.bioShapes == null) return; +for (var i = this.bioShapes.length; --i >= 0; ) this.bioShapes[i].setAtomClickability(); + +}); +Clazz_defineMethod(c$, "getMpsShapeCount", +function(){ +return this.bioShapes.length; +}); +Clazz_defineMethod(c$, "getBioShape", +function(i){ +return this.bioShapes[i]; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shapebio.BioShapeCollection"], "J.shapebio.Rockets", null, function(){ +var c$ = Clazz_declareType(J.shapebio, "Rockets", J.shapebio.BioShapeCollection); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.setTurn(); +}); +Clazz_defineMethod(c$, "setTurn", +function(){ +this.madTurnRandom = 500; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shapebio.Rockets"], "J.shapebio.Cartoon", null, function(){ +var c$ = Clazz_declareType(J.shapebio, "Cartoon", J.shapebio.Rockets); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.setTurn(); +this.madDnaRna = 1000; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shapebio.BioShapeCollection"], "J.shapebio.Backbone", ["JU.BS"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bsSelected = null; +Clazz_instantialize(this, arguments);}, J.shapebio, "Backbone", J.shapebio.BioShapeCollection); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.madOn = 1; +this.madHelixSheet = 1500; +this.madTurnRandom = 500; +this.madDnaRna = 2000; +this.isActive = true; +}); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +if ("bitset" === propertyName) { +this.bsSelected = value; +return; +}this.setPropBSC(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "setShapeSizeRD", +function(size, rd, bsSelected){ +var mad = size; +this.initialize(); +var useThisBsSelected = (this.bsSelected != null); +if (useThisBsSelected) bsSelected = this.bsSelected; +for (var iShape = this.bioShapes.length; --iShape >= 0; ) { +var bioShape = this.bioShapes[iShape]; +if (bioShape.monomerCount == 0) continue; +var bondSelectionModeOr = this.vwr.getBoolean(603979812); +var atomIndices = bioShape.bioPolymer.getLeadAtomIndices(); +var isVisible = (mad != 0); +if (bioShape.bsSizeSet == null) bioShape.bsSizeSet = new JU.BS(); +bioShape.isActive = true; +var n = bioShape.monomerCount; +for (var i = n - (bioShape.bioPolymer.isCyclic() ? 0 : 1); --i >= 0; ) { +var index1 = atomIndices[i]; +var index2 = atomIndices[(i + 1) % n]; +var isAtom1 = bsSelected.get(index1); +var isAtom2 = bsSelected.get(index2); +if (isAtom1 && isAtom2 || useThisBsSelected && isAtom1 || bondSelectionModeOr && (isAtom1 || isAtom2)) { +bioShape.monomers[i].setShapeVisibility(this.vf, isVisible); +var atomA = this.ms.at[index1]; +if (rd != null) { +if (Float.isNaN(rd.values[index1]) || Float.isNaN(rd.values[index2])) continue; +mad = Clazz_floatToShort((rd.values[index1] + rd.values[index2]) * 1000); +isVisible = (mad != 0); +}var atomB = this.ms.at[index2]; +var wasVisible = (bioShape.mads[i] != 0); +if (wasVisible != isVisible) { +this.addDisplayedBackbone(atomA, isVisible); +this.addDisplayedBackbone(atomB, isVisible); +}bioShape.mads[i] = mad; +bioShape.bsSizeSet.setBitTo(i, isVisible); +bioShape.bsSizeDefault.setBitTo(i, mad == -1); +}} +} +if (useThisBsSelected) this.bsSelected = null; +}, "~N,J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "addDisplayedBackbone", +function(a, isVisible){ +a.nBackbonesDisplayed += (isVisible ? 1 : -1); +a.setShapeVisibility(this.vf, isVisible); +}, "JM.Atom,~B"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +if (this.bioShapes == null) return; +for (var iShape = this.bioShapes.length; --iShape >= 0; ) { +var bioShape = this.bioShapes[iShape]; +var atomIndices = bioShape.bioPolymer.getLeadAtomIndices(); +for (var i = bioShape.monomerCount; --i >= 0; ) { +var atom = this.ms.at[atomIndices[i]]; +if (atom.nBackbonesDisplayed > 0 && !this.ms.isAtomHidden(atom.i)) atom.setClickable(this.vf); +} +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shapebio.BioShapeCollection"], "J.shapebio.Strands", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isMesh = false; +Clazz_instantialize(this, arguments);}, J.shapebio, "Strands", J.shapebio.BioShapeCollection); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shapebio.BioShapeCollection"], "J.shapebio.Ribbons", null, function(){ +var c$ = Clazz_declareType(J.shapebio, "Ribbons", J.shapebio.BioShapeCollection); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shapebio.Strands"], "J.shapebio.MeshRibbon", null, function(){ +var c$ = Clazz_declareType(J.shapebio, "MeshRibbon", J.shapebio.Strands); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.isMesh = true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapebio"); +Clazz_load(["J.shapebio.BioShapeCollection"], "J.shapebio.Trace", ["J.atomdata.RadiusData", "J.c.VDW"], function(){ +var c$ = Clazz_declareType(J.shapebio, "Trace", J.shapebio.BioShapeCollection); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.madOn = 600; +this.madHelixSheet = 1500; +this.madTurnRandom = 500; +this.madDnaRna = 1500; +}); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +if (propertyName === "putty") { +this.setPutty(value, bsSelected); +return; +}this.setPropBSC(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "setPutty", +function(info, bsAtoms){ +var n = bsAtoms.cardinality(); +if (n == 0) return; +var data = Clazz_newFloatArray (bsAtoms.length(), 0); +var sum = 0.0; +var sumsq = 0.0; +var min = 3.4028235E38; +var max = 0; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var value = this.atoms[i].atomPropertyFloat(null, 1111492620, null); +sum += value; +sumsq += (value * value); +if (value < min) min = value; +if (value > max) max = value; +} +var mean = (sum / n); +var stdev = Math.sqrt((sumsq - (sum * sum / n)) / n); +var rad = info[1]; +var range = info[2]; +var scale_min = info[3]; +var scale_max = info[4]; +var power = info[5]; +var transform = Clazz_floatToInt(info[6]); +var data_range = max - min; +var nonlinear = false; +switch (transform) { +case 0: +case 1: +case 2: +case 3: +nonlinear = true; +break; +} +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var scale = this.atoms[i].atomPropertyFloat(null, 1111492620, null); +switch (transform) { +case 3: +case 7: +default: +break; +case 0: +case 4: +scale = 1 + (scale - mean) / range / stdev; +break; +case 1: +case 5: +scale = (scale - min) / data_range / range; +break; +case 2: +case 6: +scale /= range; +break; +case 8: +if (scale < 0.0) scale = 0.0; +scale = (Math.sqrt(scale / 8.0) / 3.141592653589793); +break; +} +if (scale < 0.0) scale = 0.0; +if (nonlinear) scale = Math.pow(scale, power); +if ((scale < scale_min) && (scale_min >= 0.0)) scale = scale_min; +if ((scale > scale_max) && (scale_max >= 0.0)) scale = scale_max; +data[i] = scale * rad; +} +var rd = new J.atomdata.RadiusData(data, 0, J.atomdata.RadiusData.EnumType.ABSOLUTE, J.c.VDW.AUTO); +this.setShapeSizeRD(0, rd, bsAtoms); +}, "~A,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(["J.render.ShapeRenderer", "JU.BS", "$.P3"], "J.renderbio.BioShapeRenderer", ["javajs.api.Interface", "J.c.STR", "JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.invalidateMesh = false; +this.invalidateSheets = false; +this.isTraceAlpha = false; +this.ribbonBorder = false; +this.haveControlPointScreens = false; +this.aspectRatio = 0; +this.hermiteLevel = 0; +this.sheetSmoothing = 0; +this.cartoonsFancy = false; +this.monomerCount = 0; +this.monomers = null; +this.isNucleic = false; +this.isPhosphorusOnly = false; +this.isCarbohydrate = false; +this.bsVisible = null; +this.ribbonTopScreens = null; +this.ribbonBottomScreens = null; +this.controlPoints = null; +this.controlPointScreens = null; +this.leadAtomIndices = null; +this.wingVectors = null; +this.mads = null; +this.colixes = null; +this.colixesBack = null; +this.structureTypes = null; +this.isHighRes = false; +this.wireframeOnly = false; +this.needTranslucent = false; +this.meshRenderer = null; +this.bioShape = null; +this.pointT = null; +this.iPrev = 0; +this.iNext = 0; +this.iNext2 = 0; +this.iNext3 = 0; +this.diameterBeg = 0; +this.diameterMid = 0; +this.diameterEnd = 0; +this.madBeg = 0; +this.madMid = 0; +this.madEnd = 0; +this.colixBack = 0; +this.reversed = null; +this.isCyclic = false; +this.screenArrowTop = null; +this.screenArrowTopPrev = null; +this.screenArrowBot = null; +this.screenArrowBotPrev = null; +Clazz_instantialize(this, arguments);}, J.renderbio, "BioShapeRenderer", J.render.ShapeRenderer); +Clazz_prepareFields (c$, function(){ +this.bsVisible = new JU.BS(); +this.pointT = new JU.P3(); +this.screenArrowTop = new JU.P3(); +this.screenArrowTopPrev = new JU.P3(); +this.screenArrowBot = new JU.P3(); +this.screenArrowBotPrev = new JU.P3(); +}); +Clazz_overrideMethod(c$, "render", +function(){ +if (this.shape == null) return false; +this.setGlobals(); +this.renderShapes(); +return this.needTranslucent; +}); +Clazz_defineMethod(c$, "setGlobals", +function(){ +this.invalidateMesh = false; +this.needTranslucent = false; +this.g3d.addRenderer(553648143); +var TF = (!this.isExport && !this.vwr.checkMotionRendering(1112152066)); +if (TF != this.wireframeOnly) this.invalidateMesh = true; +this.wireframeOnly = TF; +TF = (this.isExport || !this.wireframeOnly && this.vwr.getBoolean(603979864)); +if (TF != this.isHighRes) this.invalidateMesh = true; +this.isHighRes = TF; +TF = !this.wireframeOnly && (this.vwr.getBoolean(603979816) || this.isExport); +if (this.cartoonsFancy != TF) { +this.invalidateMesh = true; +this.cartoonsFancy = TF; +}var val1 = this.vwr.getHermiteLevel(); +val1 = (val1 <= 0 ? -val1 : this.vwr.getInMotion(true) ? 0 : val1); +if (this.cartoonsFancy && !this.wireframeOnly) val1 = Math.max(val1, 3); +if (val1 != this.hermiteLevel) this.invalidateMesh = true; +this.hermiteLevel = Math.min(val1, 8); +var val = this.vwr.getInt(553648166); +val = Math.min(Math.max(0, val), 20); +if (this.cartoonsFancy && val >= 16) val = 4; +if (this.wireframeOnly || this.hermiteLevel == 0) val = 0; +if (val != this.aspectRatio && val != 0 && val1 != 0) this.invalidateMesh = true; +this.aspectRatio = val; +if (this.aspectRatio > 0) { +if (this.meshRenderer == null) { +this.meshRenderer = javajs.api.Interface.getInterface("J.renderbio.BioMeshRenderer"); +this.meshRenderer.setViewerG3dShapeID(this.vwr, this.shape.shapeID); +}this.meshRenderer.setup(this.g3d, this.ms, this.shape); +}TF = this.vwr.getBoolean(603979966); +if (TF != this.isTraceAlpha) this.invalidateMesh = true; +this.isTraceAlpha = TF; +this.invalidateSheets = false; +var fval = this.vwr.getFloat(570425392); +if (fval != this.sheetSmoothing && this.isTraceAlpha) { +this.sheetSmoothing = fval; +this.invalidateMesh = true; +this.invalidateSheets = true; +}}); +Clazz_defineMethod(c$, "renderShapes", +function(){ +var mps = this.shape; +for (var c = mps.bioShapes.length; --c >= 0; ) { +this.bioShape = mps.getBioShape(c); +if ((this.bioShape.modelVisibilityFlags & this.myVisibilityFlag) == 0) continue; +if (this.bioShape.monomerCount >= 2 && this.initializePolymer(this.bioShape)) { +if (this.meshRenderer != null) this.meshRenderer.initBS(); +this.isCyclic = this.bioShape.bioPolymer.isCyclic(); +this.renderBioShape(this.bioShape); +if (this.meshRenderer != null) this.meshRenderer.renderMeshes(); +this.freeTempArrays(); +}} +}); +Clazz_defineMethod(c$, "setBioColix", +function(colix){ +if (this.g3d.setC(colix)) return true; +this.needTranslucent = true; +return false; +}, "~N"); +Clazz_defineMethod(c$, "freeTempArrays", +function(){ +if (this.haveControlPointScreens) this.vwr.freeTempPoints(this.controlPointScreens); +this.vwr.freeTempEnum(this.structureTypes); +}); +Clazz_defineMethod(c$, "initializePolymer", +function(bioShape){ +var bsDeleted = this.vwr.slm.bsDeleted; +if (this.ms.isJmolDataFrameForModel(bioShape.modelIndex)) { +this.controlPoints = bioShape.bioPolymer.getControlPoints(true, 0, false); +} else { +this.controlPoints = bioShape.bioPolymer.getControlPoints(this.isTraceAlpha, this.sheetSmoothing, this.invalidateSheets); +}this.monomerCount = bioShape.monomerCount; +this.monomers = bioShape.monomers; +this.reversed = bioShape.bioPolymer.reversed; +this.leadAtomIndices = bioShape.bioPolymer.getLeadAtomIndices(); +this.bsVisible.clearAll(); +var haveVisible = false; +if (this.invalidateMesh) bioShape.falsifyMesh(); +for (var i = this.monomerCount; --i >= 0; ) { +if ((this.monomers[i].shapeVisibilityFlags & this.myVisibilityFlag) == 0 || this.ms.isAtomHidden(this.leadAtomIndices[i]) || bsDeleted != null && bsDeleted.get(this.leadAtomIndices[i])) continue; +var lead = this.ms.at[this.leadAtomIndices[i]]; +if (!this.g3d.isInDisplayRange(lead.sX, lead.sY)) continue; +this.bsVisible.set(i); +haveVisible = true; +} +if (!haveVisible) return false; +this.ribbonBorder = this.vwr.getBoolean(603979901); +this.isNucleic = Clazz_instanceOf(bioShape.bioPolymer,"JM.NucleicPolymer"); +this.isPhosphorusOnly = !this.isNucleic && Clazz_instanceOf(bioShape.bioPolymer,"JM.PhosphorusPolymer"); +this.isCarbohydrate = Clazz_instanceOf(bioShape.bioPolymer,"JM.CarbohydratePolymer"); +this.haveControlPointScreens = false; +this.wingVectors = bioShape.wingVectors; +if (this.meshRenderer != null) this.meshRenderer.initialize(this, bioShape, this.monomerCount); +this.mads = bioShape.mads; +this.colixes = bioShape.colixes; +this.colixesBack = bioShape.colixesBack; +this.setStructureTypes(); +return true; +}, "J.shapebio.BioShape"); +Clazz_defineMethod(c$, "setStructureTypes", +function(){ +var types = this.structureTypes = this.vwr.allocTempEnum(this.monomerCount + 1); +for (var i = this.monomerCount; --i >= 0; ) if ((types[i] = this.monomers[i].getProteinStructureType()) === J.c.STR.TURN) types[i] = J.c.STR.NONE; + +types[this.monomerCount] = types[this.monomerCount - 1]; +}); +Clazz_defineMethod(c$, "calcScreenControlPoints", +function(){ +var count = this.monomerCount + 1; +var scr = this.controlPointScreens = this.vwr.allocTempPoints(count); +var points = this.controlPoints; +for (var i = count; --i >= 0; ) this.tm.transformPtScrT3(points[i], scr[i]); + +this.haveControlPointScreens = true; +}); +Clazz_defineMethod(c$, "calcScreens", +function(offsetFraction, mads){ +var count = this.controlPoints.length; +var screens = this.vwr.allocTempPoints(count); +if (offsetFraction == 0) { +for (var i = count; --i >= 0; ) this.tm.transformPtScrT3(this.controlPoints[i], screens[i]); + +} else { +var offset_1000 = offsetFraction / 1000; +for (var i = count; --i >= 0; ) this.calc1Screen(this.controlPoints[i], this.wingVectors[i], (mads[i] == 0 && i > 0 ? mads[i - 1] : mads[i]), offset_1000, screens[i]); + +}return screens; +}, "~N,~A"); +Clazz_defineMethod(c$, "calc1Screen", +function(center, vector, mad, offset_1000, screen){ +this.pointT.scaleAdd2(mad * offset_1000, vector, center); +this.tm.transformPtScrT3(this.pointT, screen); +}, "JU.P3,JU.V3,~N,~N,JU.P3"); +Clazz_defineMethod(c$, "getLeadColix", +function(i){ +return JU.C.getColixInherited(this.colixes[i], this.monomers[i].getLeadAtom().colixAtom); +}, "~N"); +Clazz_defineMethod(c$, "getLeadColixBack", +function(i){ +return (this.colixesBack == null || this.colixesBack.length <= i ? 0 : this.colixesBack[i]); +}, "~N"); +Clazz_defineMethod(c$, "setNeighbors", +function(i){ +if (this.isCyclic) { +i += this.monomerCount; +this.iPrev = (i - 1) % this.monomerCount; +this.iNext = (i + 1) % this.monomerCount; +this.iNext2 = (i + 2) % this.monomerCount; +this.iNext3 = (i + 3) % this.monomerCount; +} else { +this.iPrev = Math.max(i - 1, 0); +this.iNext = Math.min(i + 1, this.monomerCount); +this.iNext2 = Math.min(i + 2, this.monomerCount); +this.iNext3 = Math.min(i + 3, this.monomerCount); +}}, "~N"); +Clazz_defineMethod(c$, "setColix", +function(colix){ +this.colix = colix; +return this.g3d.setC(colix); +}, "~N"); +Clazz_defineMethod(c$, "setMads", +function(i, thisTypeOnly){ +this.madMid = this.madBeg = this.madEnd = this.mads[i]; +if (this.isTraceAlpha) { +if (!thisTypeOnly || this.structureTypes[i] === this.structureTypes[this.iNext]) { +this.madEnd = this.mads[this.iNext]; +if (this.madEnd == 0) { +if (Clazz_instanceOf(this,"J.renderbio.TraceRenderer")) { +this.madEnd = this.madBeg; +} else { +this.madEnd = this.madBeg; +}}this.madMid = ((this.madBeg + this.madEnd) >> 1); +}} else { +if (!thisTypeOnly || this.structureTypes[i] === this.structureTypes[this.iPrev]) this.madBeg = (((this.mads[this.iPrev] == 0 ? this.madMid : this.mads[this.iPrev]) + this.madMid) >> 1); +if (!thisTypeOnly || this.structureTypes[i] === this.structureTypes[this.iNext]) this.madEnd = (((this.mads[this.iNext] == 0 ? this.madMid : this.mads[this.iNext]) + this.madMid) >> 1); +}this.diameterBeg = Clazz_floatToInt(this.vwr.tm.scaleToScreen(Clazz_floatToInt(this.controlPointScreens[i].z), this.madBeg)); +this.diameterMid = Clazz_floatToInt(this.vwr.tm.scaleToScreen(this.monomers[i].getLeadAtom().sZ, this.madMid)); +this.diameterEnd = Clazz_floatToInt(this.vwr.tm.scaleToScreen(Clazz_floatToInt(this.controlPointScreens[this.iNext].z), this.madEnd)); +var doCap0 = (i == this.iPrev || !this.bsVisible.get(this.iPrev) || thisTypeOnly && this.structureTypes[i] !== this.structureTypes[this.iPrev]); +var doCap1 = (this.iNext == this.iNext2 || this.iNext2 == this.iNext3 || !this.bsVisible.get(this.iNext) || thisTypeOnly && this.structureTypes[i] !== this.structureTypes[this.iNext]); +return (this.aspectRatio > 0 && this.meshRenderer != null && this.meshRenderer.check(doCap0, doCap1)); +}, "~N,~B"); +Clazz_defineMethod(c$, "renderHermiteCylinder", +function(screens, i){ +this.colix = this.getLeadColix(i); +if (!this.setBioColix(this.colix)) return; +this.setNeighbors(i); +this.g3d.drawHermite4(this.isNucleic ? 4 : 7, screens[this.iPrev], screens[i], screens[this.iNext], screens[this.iNext2]); +}, "~A,~N"); +Clazz_defineMethod(c$, "renderHermiteConic", +function(i, thisTypeOnly, tension){ +this.setNeighbors(i); +this.colix = this.getLeadColix(i); +if (!this.setBioColix(this.colix)) return; +if (this.setMads(i, thisTypeOnly) || this.isExport) { +this.meshRenderer.setFancyConic(i, tension); +return; +}if (this.diameterBeg == 0 && this.diameterEnd == 0 || this.wireframeOnly) this.g3d.drawLineAB(this.controlPointScreens[i], this.controlPointScreens[this.iNext]); + else { +this.g3d.fillHermite(this.isNucleic ? 4 : 7, this.diameterBeg, this.diameterMid, this.diameterEnd, this.controlPointScreens[this.iPrev], this.controlPointScreens[i], this.controlPointScreens[this.iNext], this.controlPointScreens[this.iNext2]); +}}, "~N,~B,~N"); +Clazz_defineMethod(c$, "renderHermiteRibbon", +function(doFill, i, thisTypeOnly){ +this.setNeighbors(i); +var c0 = this.colix = this.getLeadColix(i); +if (!this.setBioColix(this.colix)) return; +var cb = this.colixBack = this.getLeadColixBack(i); +if (doFill && (this.aspectRatio != 0 || this.isExport)) { +if (this.setMads(i, thisTypeOnly) || this.isExport) { +this.meshRenderer.setFancyRibbon(i); +return; +}}var isReversed = this.reversed.get(i); +if (isReversed && this.colixBack != 0) { +this.setColix(this.colixBack); +cb = c0; +}this.g3d.drawHermite7(doFill, this.ribbonBorder, (isReversed ? -1 : 1) * (this.isNucleic ? 4 : 7), this.ribbonTopScreens[this.iPrev], this.ribbonTopScreens[i], this.ribbonTopScreens[this.iNext], this.ribbonTopScreens[this.iNext2], this.ribbonBottomScreens[this.iPrev], this.ribbonBottomScreens[i], this.ribbonBottomScreens[this.iNext], this.ribbonBottomScreens[this.iNext2], Clazz_floatToInt(this.aspectRatio), cb); +if (isReversed && this.colixBack != 0) { +this.setColix(c0); +cb = this.colixBack; +}}, "~B,~N,~B"); +Clazz_defineMethod(c$, "renderHermiteArrowHead", +function(i){ +this.colix = this.getLeadColix(i); +if (!this.setBioColix(this.colix)) return; +this.colixBack = this.getLeadColixBack(i); +this.setNeighbors(i); +if (this.setMads(i, false) || this.isExport) { +this.meshRenderer.setFancyArrowHead(i); +return; +}var cp = this.controlPoints[i]; +var wv = this.wingVectors[i]; +this.calc1Screen(cp, wv, this.madBeg, .0007, this.screenArrowTop); +this.calc1Screen(cp, wv, this.madBeg, -7.0E-4, this.screenArrowBot); +this.calc1Screen(cp, wv, this.madBeg, 0.001, this.screenArrowTopPrev); +this.calc1Screen(cp, wv, this.madBeg, -0.001, this.screenArrowBotPrev); +this.g3d.drawHermite7(true, this.ribbonBorder, this.isNucleic ? 4 : 7, this.screenArrowTopPrev, this.screenArrowTop, this.controlPointScreens[this.iNext], this.controlPointScreens[this.iNext2], this.screenArrowBotPrev, this.screenArrowBot, this.controlPointScreens[this.iNext], this.controlPointScreens[this.iNext2], Clazz_floatToInt(this.aspectRatio), this.colixBack); +this.g3d.setC(this.colix); +if (this.ribbonBorder && this.aspectRatio == 0) { +this.g3d.fillCylinderBits(3, 3, this.screenArrowTop, this.screenArrowBot); +}}, "~N"); +Clazz_defineMethod(c$, "drawSegmentAB", +function(atomA, atomB, colixA, colixB, max){ +var xA = atomA.sX; +var yA = atomA.sY; +var zA = atomA.sZ; +var xB = atomB.sX; +var yB = atomB.sY; +var zB = atomB.sZ; +var mad = this.mad; +if (max == 1000) mad = mad >> 1; +if (mad < 0) { +this.g3d.drawLine(colixA, colixB, xA, yA, zA, xB, yB, zB); +} else { +var width = Clazz_floatToInt(this.isExport ? mad : this.vwr.tm.scaleToScreen(Clazz_doubleToInt((zA + zB) / 2), mad)); +this.g3d.fillCylinderXYZ(colixA, colixB, 3, width, xA, yA, zA, xB, yB, zB); +}}, "JM.Atom,JM.Atom,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(["J.renderbio.BioShapeRenderer"], "J.renderbio.StrandsRenderer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.strandCount = 1; +this.strandSeparation = 0; +this.baseStrandOffset = 0; +Clazz_instantialize(this, arguments);}, J.renderbio, "StrandsRenderer", J.renderbio.BioShapeRenderer); +Clazz_overrideMethod(c$, "renderBioShape", +function(bioShape){ +this.renderStrandShape(); +}, "J.shapebio.BioShape"); +Clazz_defineMethod(c$, "renderStrandShape", +function(){ +if (!this.setStrandCount()) return; +this.renderStrands(); +}); +Clazz_defineMethod(c$, "setStrandCount", +function(){ +if (this.wingVectors == null) return false; +this.strandCount = (Clazz_instanceOf(this.shape,"J.shapebio.Strands") ? this.vwr.getStrandCount((this.shape).shapeID) : 10); +this.strandSeparation = (this.strandCount <= 1) ? 0 : 1 / (this.strandCount - 1); +this.baseStrandOffset = ((this.strandCount & 1) == 0 ? this.strandSeparation / 2 : this.strandSeparation); +return true; +}); +Clazz_defineMethod(c$, "renderStrands", +function(){ +var screens; +for (var i = this.strandCount >> 1; --i >= 0; ) { +var f = (i * this.strandSeparation) + this.baseStrandOffset; +screens = this.calcScreens(f, this.mads); +this.renderStrand(screens); +this.vwr.freeTempPoints(screens); +screens = this.calcScreens(-f, this.mads); +this.renderStrand(screens); +this.vwr.freeTempPoints(screens); +} +if (this.strandCount % 2 == 1) { +screens = this.calcScreens(0, this.mads); +this.renderStrand(screens); +this.vwr.freeTempPoints(screens); +}}); +Clazz_defineMethod(c$, "renderStrand", +function(screens){ +for (var i = this.bsVisible.nextSetBit(0); i >= 0; i = this.bsVisible.nextSetBit(i + 1)) this.renderHermiteCylinder(screens, i); + +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(["J.renderbio.MeshRibbonRenderer"], "J.renderbio.RibbonsRenderer", null, function(){ +var c$ = Clazz_declareType(J.renderbio, "RibbonsRenderer", J.renderbio.MeshRibbonRenderer); +Clazz_overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (this.wingVectors == null) return; +if (this.wireframeOnly) this.renderStrands(); + else this.render2Strand(true, this.isNucleic ? 1 : 0.5, this.isNucleic ? 0 : 0.5); +}, "J.shapebio.BioShape"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(["J.renderbio.StrandsRenderer"], "J.renderbio.MeshRibbonRenderer", null, function(){ +var c$ = Clazz_declareType(J.renderbio, "MeshRibbonRenderer", J.renderbio.StrandsRenderer); +Clazz_overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (this.wireframeOnly) this.renderStrands(); + else this.renderMeshRibbon(); +}, "J.shapebio.BioShape"); +Clazz_defineMethod(c$, "renderMeshRibbon", +function(){ +if (!this.setStrandCount()) return; +var offset = ((this.strandCount >> 1) * this.strandSeparation) + this.baseStrandOffset; +this.render2Strand(false, offset, offset); +this.renderStrands(); +}); +Clazz_defineMethod(c$, "render2Strand", +function(doFill, offsetTop, offsetBottom){ +this.calcScreenControlPoints(); +this.ribbonTopScreens = this.calcScreens(offsetTop, this.mads); +this.ribbonBottomScreens = this.calcScreens(-offsetBottom, this.mads); +for (var i = this.bsVisible.nextSetBit(0); i >= 0; i = this.bsVisible.nextSetBit(i + 1)) this.renderHermiteRibbon(doFill, i, false); + +this.vwr.freeTempPoints(this.ribbonTopScreens); +this.vwr.freeTempPoints(this.ribbonBottomScreens); +}, "~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(null, "J.renderbio.NucleicRenderer", ["JU.P3", "JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.cartoonBaseEdges = false; +this.cartoonBlocks = false; +this.blockHeight = 0; +this.cartoonLadders = false; +this.cartoonRibose = false; +this.rPt = null; +this.rPt5 = null; +this.rScr = null; +this.rScr5 = null; +this.basePt = null; +this.backbonePt = null; +this.baseScreen = null; +this.backboneScreen = null; +this.ptTemp = null; +this.vwr = null; +this.tm = null; +this.g3d = null; +this.bsr = null; +this.colix = 0; +this.cartoonSteps = false; +this.scrBox = null; +this.triangles = null; +Clazz_instantialize(this, arguments);}, J.renderbio, "NucleicRenderer", null); +Clazz_prepareFields (c$, function(){ +this.triangles = Clazz_newIntArray(-1, [1, 0, 3, 1, 3, 2, 0, 4, 7, 0, 7, 3, 4, 5, 6, 4, 6, 7, 5, 1, 2, 5, 2, 6, 2, 3, 7, 2, 7, 6, 0, 1, 5, 0, 5, 4]); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$, "renderNucleic", +function(renderer){ +if (this.vwr == null) { +this.rPt = new Array(10); +this.rScr = new Array(10); +this.rPt5 = new Array(5); +this.rScr5 = new Array(5); +this.backboneScreen = new JU.P3(); +this.backbonePt = new JU.P3(); +this.bsr = renderer; +this.tm = renderer.vwr.tm; +this.vwr = renderer.vwr; +}this.g3d = renderer.g3d; +var screens = renderer.controlPointScreens; +var pts = renderer.controlPoints; +this.cartoonBlocks = this.vwr.getBoolean(603979810); +this.cartoonBaseEdges = this.vwr.getBoolean(603979815); +this.cartoonSteps = this.vwr.getBoolean(603979811); +this.cartoonLadders = this.vwr.getBoolean(603979817); +this.cartoonRibose = this.vwr.getBoolean(603979818); +this.blockHeight = this.vwr.getFloat(570425347); +var isTraceAlpha = this.vwr.getBoolean(603979966); +var bsVisible = this.bsr.bsVisible; +for (var i = bsVisible.nextSetBit(0); i >= 0; i = bsVisible.nextSetBit(i + 1)) { +var scr = screens[i + 1]; +if (isTraceAlpha) { +this.backboneScreen.ave(screens[i], scr); +this.backbonePt.ave(pts[i], pts[i + 1]); +} else { +this.backboneScreen.setT(scr); +this.backbonePt.setT(pts[i + 1]); +}this.bsr.renderHermiteConic(i, false, 4); +this.colix = this.bsr.getLeadColix(i); +if (this.bsr.setBioColix(this.colix)) { +if (this.cartoonRibose && bsVisible.get(i + 1)) this.renderNucleicBaseStep(i, pts[i + 1], screens[i + 1]); + else this.renderNucleicBaseStep(i, null, null); +}} +}, "J.renderbio.BioShapeRenderer"); +Clazz_defineMethod(c$, "renderNucleicBaseStep", +function(im, ptPnext, scrPnext){ +if (this.bsr.isPhosphorusOnly) return; +var nucleotide = this.bsr.monomers[im]; +var thisMad = this.bsr.mad = this.bsr.mads[im]; +if (this.rScr[0] == null) { +for (var i = 10; --i >= 0; ) this.rScr[i] = new JU.P3(); + +for (var i = 5; --i >= 0; ) this.rScr5[i] = new JU.P3(); + +this.baseScreen = new JU.P3(); +this.basePt = new JU.P3(); +this.rPt[9] = new JU.P3(); +}if (this.cartoonBlocks) { +this.renderBlock(nucleotide); +return; +}if (this.cartoonBaseEdges) { +this.renderLeontisWesthofEdges(nucleotide); +return; +}if (this.cartoonSteps) { +this.renderSteps(nucleotide, im); +return; +}nucleotide.getBaseRing6Points(this.rPt); +this.transformPoints(6, this.rPt, this.rScr); +if (!this.cartoonLadders) this.renderRing6(); +var stepScreen; +var stepPt; +var pt; +var hasRing5 = nucleotide.maybeGetBaseRing5Points(this.rPt5); +if (hasRing5) { +if (this.cartoonLadders) { +stepScreen = this.rScr[2]; +stepPt = this.rPt[2]; +} else { +this.transformPoints(5, this.rPt5, this.rScr5); +this.renderRing5(); +stepScreen = this.rScr5[3]; +stepPt = this.rPt5[3]; +}} else { +pt = (this.cartoonLadders ? 4 : 2); +stepScreen = this.rScr[pt]; +stepPt = this.rPt[pt]; +}var mad = (thisMad > 1 ? Clazz_doubleToInt(thisMad / 2) : thisMad); +var r = mad / 2000; +var w = Clazz_floatToInt(this.vwr.tm.scaleToScreen(Clazz_floatToInt(this.backboneScreen.z), mad)); +if (this.cartoonLadders || !this.cartoonRibose) this.g3d.fillCylinderScreen3I(3, w, this.backboneScreen, stepScreen, this.backbonePt, stepPt, r); +if (this.cartoonLadders) return; +this.drawEdges(this.rScr, this.rPt, 6); +if (hasRing5) this.drawEdges(this.rScr5, this.rPt5, 5); + else this.renderEdge(this.rScr, this.rPt, 0, 5); +if (this.cartoonRibose) { +this.baseScreen.setT(stepScreen); +this.basePt.setT(stepPt); +nucleotide.getRiboseRing5Points(this.rPt); +var c = this.rPt[9]; +c.set(0, 0, 0); +for (var i = 0; i < 5; i++) c.add(this.rPt[i]); + +c.scale(0.2); +this.transformPoints(10, this.rPt, this.rScr); +this.renderRibose(); +this.renderEdge(this.rScr, this.rPt, 2, 5); +this.renderEdge(this.rScr, this.rPt, 3, 6); +this.renderEdge(this.rScr, this.rPt, 6, 7); +this.renderEdge(this.rScr, this.rPt, 7, 8); +this.renderEdge(this.rScr, this.rPt, 0, 4); +this.renderCyl(this.rScr[0], this.baseScreen, this.rPt[0], this.basePt); +if (ptPnext != null) this.renderCyl(this.rScr[5], scrPnext, this.rPt[5], ptPnext); +this.drawEdges(this.rScr, this.rPt, 5); +}}, "~N,JU.T3,JU.T3"); +Clazz_defineMethod(c$, "renderSteps", +function(g, i){ +var bps = g.getBasePairs(); +var atomA = g.getLeadAtom(); +var cA = JU.C.getColixInherited(this.colix, atomA.colixAtom); +if (bps != null) { +var checkPass2 = (!this.bsr.isExport && !this.vwr.gdata.isPass2); +var atoms = this.vwr.ms.at; +for (var j = bps.size(); --j >= 0; ) { +var iAtom = bps.get(j).getPartnerAtom(g); +if (iAtom > i) { +var atomB = atoms[iAtom]; +var cB = JU.C.getColixInherited(this.colix, atomB.colixAtom); +if (!checkPass2 || this.bsr.setBioColix(cA) || this.bsr.setBioColix(cB)) this.bsr.drawSegmentAB(atomA, atomB, cA, cB, 1000); +}} +}}, "JM.NucleicMonomer,~N"); +Clazz_defineMethod(c$, "transformPoints", +function(count, angstroms, screens){ +for (var i = count; --i >= 0; ) this.tm.transformPtScrT3(angstroms[i], screens[i]); + +}, "~N,~A,~A"); +Clazz_defineMethod(c$, "drawEdges", +function(scr, pt, n){ +for (var i = n; --i >= 0; ) scr[i].z--; + +for (var i = n; --i > 0; ) this.renderEdge(scr, pt, i, i - 1); + +}, "~A,~A,~N"); +Clazz_defineMethod(c$, "renderBlock", +function(g){ +var atomA = g.getLeadAtom(); +var cA = this.colix; +if (this.scrBox == null) { +this.scrBox = new Array(8); +for (var j = 0; j < 8; j++) this.scrBox[j] = new JU.P3(); + +}var oxyz = g.getDSSRFrame(this.vwr); +var box = g.dssrBox; +var lastHeight = g.dssrBoxHeight; +var isPurine = g.isPurine(); +if (box == null || lastHeight != this.blockHeight) { +g.dssrBoxHeight = this.blockHeight; +if (box == null) { +box = new Array(8); +for (var j = 8; --j >= 0; ) box[j] = new JU.P3(); + +g.dssrBox = box; +}var uc = this.vwr.getSymTemp().getUnitCell(oxyz, false, null); +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +this.ptTemp.setT(oxyz[0]); +uc.toFractional(this.ptTemp, true); +uc.setOffsetPt(JU.P3.new3(this.ptTemp.x - 2.25, this.ptTemp.y + 5, this.ptTemp.z - this.blockHeight / 2)); +var x = 4.5; +var y = (isPurine ? -4.5 : -3.0); +var z = this.blockHeight; +uc.toCartesian(box[0] = JU.P3.new3(0, 0, 0), false); +uc.toCartesian(box[1] = JU.P3.new3(x, 0, 0), false); +uc.toCartesian(box[2] = JU.P3.new3(x, y, 0), false); +uc.toCartesian(box[3] = JU.P3.new3(0, y, 0), false); +uc.toCartesian(box[4] = JU.P3.new3(0, 0, z), false); +uc.toCartesian(box[5] = JU.P3.new3(x, 0, z), false); +uc.toCartesian(box[6] = JU.P3.new3(x, y, z), false); +uc.toCartesian(box[7] = JU.P3.new3(0, y, z), false); +}for (var j = 0; j < 8; j++) this.vwr.tm.transformPt3f(box[j], this.scrBox[j]); + +for (var j = 0; j < 36; ) this.g3d.fillTriangle3f(this.scrBox[this.triangles[j++]], this.scrBox[this.triangles[j++]], this.scrBox[this.triangles[j++]], false); + +var atomB = g.getC1P(); +var atomC = g.getN0(); +if (atomB != null && atomC != null) { +this.bsr.drawSegmentAB(atomA, atomB, cA, cA, 1000); +this.bsr.drawSegmentAB(atomB, atomC, cA, cA, 1000); +}}, "JM.NucleicMonomer"); +Clazz_defineMethod(c$, "renderLeontisWesthofEdges", +function(nucleotide){ +if (!nucleotide.getEdgePoints(this.rPt)) return; +this.transformPoints(6, this.rPt, this.rScr); +this.renderTriangle(this.rScr, this.rPt, 2, 3, 4, true); +this.renderEdge(this.rScr, this.rPt, 0, 1); +this.renderEdge(this.rScr, this.rPt, 1, 2); +var isTranslucent = JU.C.isColixTranslucent(this.colix); +var tl = JU.C.getColixTranslucencyLevel(this.colix); +var colixSugarEdge = JU.C.getColixTranslucent3(10, isTranslucent, tl); +var colixWatsonCrickEdge = JU.C.getColixTranslucent3(11, isTranslucent, tl); +var colixHoogsteenEdge = JU.C.getColixTranslucent3(7, isTranslucent, tl); +this.g3d.setC(colixSugarEdge); +this.renderEdge(this.rScr, this.rPt, 2, 3); +this.g3d.setC(colixWatsonCrickEdge); +this.renderEdge(this.rScr, this.rPt, 3, 4); +this.g3d.setC(colixHoogsteenEdge); +this.renderEdge(this.rScr, this.rPt, 4, 5); +}, "JM.NucleicMonomer"); +Clazz_defineMethod(c$, "renderEdge", +function(scr, pt, i, j){ +this.renderCyl(scr[i], scr[j], pt[i], pt[j]); +}, "~A,~A,~N,~N"); +Clazz_defineMethod(c$, "renderCyl", +function(s1, s2, p1, p2){ +this.g3d.fillCylinderScreen3I(3, 3, s1, s2, p1, p2, 0.005); +}, "JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "renderTriangle", +function(scr, pt, i, j, k, doShade){ +this.g3d.fillTriangle3i(scr[i], scr[j], scr[k], pt[i], pt[j], pt[k], doShade); +}, "~A,~A,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "renderRing6", +function(){ +this.renderTriangle(this.rScr, this.rPt, 0, 2, 4, true); +this.renderTriangle(this.rScr, this.rPt, 0, 1, 2, false); +this.renderTriangle(this.rScr, this.rPt, 0, 4, 5, false); +this.renderTriangle(this.rScr, this.rPt, 2, 3, 4, false); +}); +Clazz_defineMethod(c$, "renderRing5", +function(){ +this.renderTriangle(this.rScr5, this.rPt5, 0, 1, 2, false); +this.renderTriangle(this.rScr5, this.rPt5, 0, 2, 3, false); +this.renderTriangle(this.rScr5, this.rPt5, 0, 3, 4, false); +}); +Clazz_defineMethod(c$, "renderRibose", +function(){ +this.renderTriangle(this.rScr, this.rPt, 0, 1, 9, true); +this.renderTriangle(this.rScr, this.rPt, 1, 2, 9, true); +this.renderTriangle(this.rScr, this.rPt, 2, 3, 9, true); +this.renderTriangle(this.rScr, this.rPt, 3, 4, 9, true); +this.renderTriangle(this.rScr, this.rPt, 4, 0, 9, true); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(["J.renderbio.StrandsRenderer"], "J.renderbio.RocketsRenderer", ["javajs.api.Interface", "JU.P3", "J.c.STR"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isRockets = false; +this.helixRockets = true; +this.renderArrowHeads = false; +this.cordMidPoints = null; +this.rr = null; +Clazz_instantialize(this, arguments);}, J.renderbio, "RocketsRenderer", J.renderbio.StrandsRenderer); +Clazz_overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (!this.setupRR(bioShape, true)) return; +this.calcRopeMidPoints(); +this.renderRockets(); +this.vwr.freeTempPoints(this.cordMidPoints); +}, "J.shapebio.BioShape"); +Clazz_defineMethod(c$, "renderRockets", +function(){ +if (this.rr == null) this.rr = (javajs.api.Interface.getInterface("J.renderbio.RocketRenderer")).set(this); +this.rr.renderRockets(); +}); +Clazz_defineMethod(c$, "setupRR", +function(bioShape, isRockets){ +this.isRockets = isRockets; +if (this.wireframeOnly) { +this.renderStrands(); +} else if (this.wingVectors != null && !this.isCarbohydrate && !(isRockets && this.isNucleic)) { +var val = !this.vwr.getBoolean(603979902); +if (!this.isNucleic && this.renderArrowHeads != val) { +bioShape.falsifyMesh(); +this.renderArrowHeads = val; +}return true; +}return false; +}, "J.shapebio.BioShape,~B"); +Clazz_defineMethod(c$, "calcRopeMidPoints", +function(){ +var midPointCount = this.monomerCount + 1; +this.cordMidPoints = this.vwr.allocTempPoints(midPointCount); +var proteinstructurePrev = null; +var point; +var ptLastRocket = -10; +var pt1 = new JU.P3(); +var pt2 = new JU.P3(); +for (var i = 0; i <= this.monomerCount; ++i) { +point = this.cordMidPoints[i]; +if (i < this.monomerCount && (this.helixRockets && this.structureTypes[i] === J.c.STR.HELIX || this.isRockets && this.structureTypes[i] === J.c.STR.SHEET)) { +var proteinstructure = this.monomers[i].getStructure(); +if (proteinstructure === proteinstructurePrev) { +pt1.add(pt2); +ptLastRocket = i; +} else { +proteinstructurePrev = proteinstructure; +pt1.setT(proteinstructure.getAxisStartPoint()); +pt2.sub2(proteinstructure.getAxisEndPoint(), pt1); +pt2.scale(1 / (proteinstructure.nRes - 1)); +if (ptLastRocket == i - 3) { +this.cordMidPoints[i - 1].ave(this.cordMidPoints[i - 2], pt1); +}}point.setT(pt1); +} else { +if (ptLastRocket == i - 1 && i > 1) this.cordMidPoints[i - 1].setT(this.cordMidPoints[i > 2 ? i - 3 : i - 2]); +point.setT(proteinstructurePrev == null ? this.controlPoints[i] : proteinstructurePrev.getAxisEndPoint()); +proteinstructurePrev = null; +}} +this.controlPoints = this.cordMidPoints; +this.calcScreenControlPoints(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(["J.renderbio.RocketsRenderer"], "J.renderbio.CartoonRenderer", ["J.api.Interface", "J.c.STR"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.nucleicRenderer = null; +Clazz_instantialize(this, arguments);}, J.renderbio, "CartoonRenderer", J.renderbio.RocketsRenderer); +Clazz_overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (!this.setupRR(bioShape, false)) return; +if (this.isNucleic || this.isPhosphorusOnly) { +if (this.nucleicRenderer == null) this.nucleicRenderer = J.api.Interface.getInterface("J.renderbio.NucleicRenderer", this.vwr, "render"); +this.calcScreenControlPoints(); +this.nucleicRenderer.renderNucleic(this); +return; +}var val = this.vwr.getBoolean(603979819); +if (this.helixRockets != val) { +bioShape.falsifyMesh(); +this.helixRockets = val; +}this.ribbonTopScreens = this.calcScreens(0.5, this.mads); +this.ribbonBottomScreens = this.calcScreens(-0.5, this.mads); +this.calcRopeMidPoints(); +this.renderProtein(); +this.vwr.freeTempPoints(this.cordMidPoints); +this.vwr.freeTempPoints(this.ribbonTopScreens); +this.vwr.freeTempPoints(this.ribbonBottomScreens); +}, "J.shapebio.BioShape"); +Clazz_defineMethod(c$, "renderProtein", +function(){ +var lastWasSheet = false; +var lastWasHelix = false; +var previousStructure = null; +var thisStructure; +var needRockets = (this.helixRockets || !this.renderArrowHeads); +var doRockets = false; +for (var i = this.monomerCount; --i >= 0; ) { +thisStructure = this.monomers[i].getStructure(); +if (thisStructure !== previousStructure) { +lastWasSheet = false; +}previousStructure = thisStructure; +var isHelix = (this.structureTypes[i] === J.c.STR.HELIX); +var isSheet = (this.structureTypes[i] === J.c.STR.SHEET); +if (this.bsVisible.get(i)) { +if (isHelix && needRockets) { +doRockets = true; +} else if (isSheet || isHelix) { +if (lastWasSheet && isSheet || lastWasHelix && isHelix) { +this.renderHermiteRibbon(true, i, true); +} else { +this.renderHermiteArrowHead(i); +}} else { +this.renderHermiteConic(i, true, 7); +}}lastWasSheet = isSheet; +lastWasHelix = isHelix && !this.helixRockets; +} +if (doRockets) this.renderRockets(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(["J.renderbio.BioShapeRenderer"], "J.renderbio.BackboneRenderer", ["JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isDataFrame = false; +Clazz_instantialize(this, arguments);}, J.renderbio, "BackboneRenderer", J.renderbio.BioShapeRenderer); +Clazz_overrideMethod(c$, "renderBioShape", +function(bioShape){ +var checkPass2 = (!this.isExport && !this.vwr.gdata.isPass2); +this.isDataFrame = this.ms.isJmolDataFrameForModel(bioShape.modelIndex); +var n = this.monomerCount; +var atoms = this.ms.at; +for (var i = this.bsVisible.nextSetBit(0); i >= 0; i = this.bsVisible.nextSetBit(i + 1)) { +var atomA = atoms[this.leadAtomIndices[i]]; +var cA = this.colixes[i]; +this.mad = this.mads[i]; +var i1 = (i + 1) % n; +var atomB = atoms[this.leadAtomIndices[i1]]; +var cB = this.colixes[i1]; +if (atomA.nBackbonesDisplayed > 0 && atomB.nBackbonesDisplayed > 0 && !this.ms.isAtomHidden(atomB.i) && (this.isDataFrame || atomA.distanceSquared(atomB) < 100)) { +cA = JU.C.getColixInherited(cA, atomA.colixAtom); +cB = JU.C.getColixInherited(cB, atomB.colixAtom); +if (!checkPass2 || this.setBioColix(cA) || this.setBioColix(cB)) this.drawSegmentAB(atomA, atomB, cA, cB, 100); +}} +}, "J.shapebio.BioShape"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.renderbio"); +Clazz_load(["J.renderbio.StrandsRenderer"], "J.renderbio.TraceRenderer", null, function(){ +var c$ = Clazz_declareType(J.renderbio, "TraceRenderer", J.renderbio.StrandsRenderer); +Clazz_overrideMethod(c$, "renderBioShape", +function(bioShape){ +if (this.wireframeOnly) this.renderStrands(); + else this.renderTrace(); +}, "J.shapebio.BioShape"); +Clazz_defineMethod(c$, "renderTrace", +function(){ +this.calcScreenControlPoints(); +for (var i = this.bsVisible.nextSetBit(0); i >= 0; i = this.bsVisible.nextSetBit(i + 1)) this.renderHermiteConic(i, false, 7); + +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corebio.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corebio.z.js new file mode 100755 index 000000000000..6c0bd5f7c4f7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corebio.z.js @@ -0,0 +1,383 @@ +(function(M,ia,ja,ka,w,la,s,r,t,y,z,n,ma,F,Z,$,D,N,H,X,R,K,na,ca,oa,pa,qa,P,ra,da,ea,sa,fa,aa,ta,ua,ba,va,ga,wa,xa,ya,za,Aa,Ba,Ca,Da,Ea,Fa,Ga,Ha,Ia,Ja,Ka,La,d,h){s("J.adapter.readers.pdb");t(["J.adapter.smarter.AtomSetCollectionReader","java.util.Hashtable"],"J.adapter.readers.pdb.PdbReader","JU.Lst $.M4 $.P3 $.PT $.SB J.adapter.smarter.Atom $.Structure J.api.JmolAdapter J.c.STR JU.Escape $.Logger".split(" "),function(){var b=z(function(){this.lineLength=this.serial=this.seqMode=this.serMode=0;this.pdbHeader= +null;this.gromacsWideFormat=this.isLegacyModelType=this.isConnectStateBug=this.haveMappedSerials=this.isMultiModel=this.getTlsGroups=this.applySymmetry=!1;this.sb=this.sbConect=this.sbSelected=this.sbIgnored=this.biomtChainAtomCounts=this.sbTlsErrors=this.vTlsModels=this.vBiomolecules=this.vCompnds=this.htMolIds=this.htElementsInCurrentGroup=this.htSites=this.htHetero=this.htFormul=null;this.nRes=this.nUNK=this.maxSerial=this.ac=0;this.currentKey=this.currentGroup3=this.currentCompnd=null;this.configurationPtr= +this.currentResno=-2147483648;this.resetKey=!0;this.$compnd=null;this.fileAtomIndex=this.conformationIndex=0;this.lastAltLoc="\x00";this.lastGroup=-2147483648;this.lastInsertion="\x00";this.lastTargetSerial=this.lastSourceSerial=-2147483648;this.atomTypeLen=this.atomTypePt0=this.tlsGroupID=0;this.isbiomol=this.isCourseGrained=!1;this.$cryst1=0;this.htGroup1=this.fileSgName=null;this.maxLength=80;this.pdbID=null;this.haveDoubleBonds=!1;this.vConnect=this.tlsU=this.dataT=null;this.connectNextAtomSet= +this.connectNextAtomIndex=0;this.connectLast=null;y(this,arguments)},J.adapter.readers.pdb,"PdbReader",J.adapter.smarter.AtomSetCollectionReader);X(b,function(){this.htFormul=new java.util.Hashtable;this.dataT=N(8,0)});h(b,"initializeReader",function(){this.allowPDBFilter=!0;this.pdbHeader=this.getHeader?new JU.SB:null;this.applySymmetry=!this.checkFilterKey("NOSYMMETRY");this.isDSSP1&&this.asc.setInfo("isDSSP1",Boolean.TRUE);this.getTlsGroups=this.checkFilterKey("TLS");this.checkFilterKey("ASSEMBLY")&& +(this.filter=JU.PT.rep(this.filter,"ASSEMBLY","BIOMOLECULE"));if(this.isbiomol=this.checkFilterKey("BIOMOLECULE"))this.filter=this.filter.$replace(":"," ");var a=this.isbiomol&&this.checkFilterKey("BYCHAIN"),e=this.isbiomol&&this.checkFilterKey("BYSYMOP");(this.isCourseGrained=a||e)||this.setIsPDB();this.isConcatenated=(new Boolean(this.isConcatenated|this.filePath.endsWith(".dssr"))).valueOf();this.htParams.containsKey("vTlsModels")&&(this.vTlsModels=this.htParams.remove("vTlsModels"));a=this.getFilter("TYPE "); +null!=a&&(a=JU.PT.getTokens(a.$replace(","," ")),this.atomTypePt0=Integer.parseInt(a[0])-1,e=a[1].indexOf("="),0<=e?this.setFilterAtomTypeStr(a[1].substring(e+1).toUpperCase()):e=a[1].length,this.atomTypeLen=Integer.parseInt(a[1].substring(0,e)));a=this.getFilter("CONF ");null!=a&&(this.configurationPtr=this.parseIntStr(a),this.sbIgnored=new JU.SB,this.sbSelected=new JU.SB);this.isLegacyModelType=12E4>this.stateScriptVersionInt;this.isConnectStateBug=120151<=this.stateScriptVersionInt&&120220>=this.stateScriptVersionInt|| +120300<=this.stateScriptVersionInt&&120320>=this.stateScriptVersionInt});h(b,"checkLine",function(){var a=(6>(this.lineLength=this.line.length)?-1:"ATOM HETATM MODEL CONECT HELIX SHEET TURN HET HETNAM ANISOU SITE CRYST1 SCALE1 SCALE2 SCALE3 EXPDTA FORMUL REMARK HEADER COMPND SOURCE TITLE SEQADV ".indexOf(this.line.substring(0,6)))>>3,e=0==a||1==a,c=2==a;this.serial=e?this.getSerial(6,11):0;var g=(this.isTrajectory||this.isSequential)&&!this.isMultiModel&&e&&1== +this.serial;this.getHeader&&(e||c?this.getHeader=!1:this.readHeader(!1));if(c||g){this.isMultiModel=c;this.getHeader=!1;c=g?this.modelNumber+1:this.getModelNumber();g=this.getModelName();this.modelNumber=this.useFileModelNumbers?c:this.modelNumber+1;if(!this.doGetModel(this.modelNumber,null))return this.handleTlsMissingModels(),a=this.checkLastModel(),!a&&this.isConcatenated&&(a=this.continuing=!0),a;this.isCourseGrained||this.connectAll(this.maxSerial,this.isConnectStateBug);0q||Float.isNaN(q)){c=!0;break}}}JU.Logger.info("TLS analysis suggests Bfactors are "+ +(c?"":"NOT")+" residuals");for(var b,e=this.tlsU.entrySet().iterator();e.hasNext()&&((b=e.next())||1);)f=b.getValue(),q=f[7],0!=q&&(c||(q-=(f[0]+f[1]+f[2])/3),f[0]+=q,f[1]+=q,f[2]+=q,b.getKey().addTensor(a.getTensor(this.vwr,f).setType(null),"TLS-R",!1),JU.Logger.info("TLS-U: "+JU.Escape.eAF(f)),f=b.getKey().anisoBorU,null!=f&&JU.Logger.info("ANISOU: "+JU.Escape.eAF(f)));this.tlsU=null},"J.adapter.smarter.XtalSymmetry.FileSymmetry");d(b,"header",function(){8>this.lineLength||(this.appendLoadNote(this.line.substring(7).trim()), +80==this.lineLength&&(this.maxLength=72),this.pdbID=66<=this.lineLength?this.line.substring(62,66).trim():"",4==this.pdbID.length&&(this.asc.setCollectionName(this.pdbID),this.asc.setInfo("havePDBHeaderName",Boolean.TRUE)),50c||0this.line.indexOf("BIOMT")&&7==this.line.indexOf("350");)g+=":"+this.line.substring(11).trim().$replace(",",";").$replace(" ",":");g+=";";if(this.checkFilterKey("BIOMOLECULE "+f+";")||this.checkFilterKey("BIOMOLECULE="+f+";"))this.setFilter(this.filterCased+ +g),JU.Logger.info('filter set to "'+this.filter+'"'),this.thisBiomolecule=b,this.haveMappedSerials=this.applySymmetry}else if(this.line.startsWith("REMARK 350 BIOMT1 ")){d++;for(var m=N(16,0),x=0;12>x;){var h=this.getTokens();m[x++]=this.parseFloatStr(h[4]);m[x++]=this.parseFloatStr(h[5]);m[x++]=this.parseFloatStr(h[6]);m[x++]=this.parseFloatStr(h[7]);(4==x||8==x)&&this.readHeader(!0)}m[15]=1;var A=new JU.M4;A.setA(m);A.equals(k)?(a.add(0,A),e.add(0,g)):(a.addLast(A),e.addLast(g))}}catch(u){if($(u, +Exception))return this.vBiomolecules=this.thisBiomolecule=null,!1;throw u;}}0a.length)break;(this.doApplySymmetry||this.isbiomol)&&this.setSymmetryOperator(a[3])}return!1});d(b,"getSerial", +function(a,e){var c=this.line.charAt(a),g=" "==c||" "==this.line.charAt(e-1);switch(this.serMode){default:case 0:if(g)return this.parseIntRange(this.line,a,e);try{return this.serial=Integer.parseInt(this.line.substring(a,e))}catch(f){if($(f,Exception))return this.serMode=JU.PT.isDigit(c)?1:2,this.getSerial(a,e);throw f;}case 2:return g||JU.PT.isDigit(c)?this.parseIntRange(this.line,a,e):JU.PT.parseIntRadix(this.line.substring(a,e),36)+(JU.PT.isUpperCase(c)?-16696160:26973856);case 1:if(!g)return this.serial= +JU.PT.parseIntRadix(this.line.substring(a,e),16);this.serMode=0;return this.getSerial(a,e)}},"~N,~N");d(b,"getSeqNo",function(a,e){var c=this.line.charAt(a),g=" "==c||" "==this.line.charAt(e-1);switch(this.seqMode){default:case 0:if(g)return this.parseIntRange(this.line,a,e);try{return Integer.parseInt(this.line.substring(a,e))}catch(f){if($(f,Exception))return this.seqMode=JU.PT.isDigit(c)?1:2,this.getSeqNo(a,e);throw f;}case 2:return g||JU.PT.isDigit(c)?this.parseIntRange(this.line,a,e):JU.PT.parseIntRadix(this.line.substring(a, +e),36)+(JU.PT.isUpperCase(c)?-456560:756496);case 1:if(!g)return JU.PT.parseIntRadix(this.line.substring(a,e),16);this.seqMode=0;return this.getSeqNo(a,e)}},"~N,~N");d(b,"processAtom",function(a,e,c,g,f,q,b,d,k){a.atomName=e;" "!=c&&(a.altLoc=c);a.group3=null==g?"UNK":g;a.chainID=f;null!=this.biomtChainAtomCounts&&this.biomtChainAtomCounts[f%256]++;a.sequenceNumber=q;a.insertionCode=J.api.JmolAdapter.canonizeInsertionCode(b);a.isHetero=d;a.elementSymbol=k;return a},"J.adapter.smarter.Atom,~S,~S,~S,~N,~N,~S,~B,~S"); +d(b,"processAtom2",function(a,e,c,g,f,q){a.atomSerial=e;e>this.maxSerial&&(this.maxSerial=e);if(null==a.group3)null!=this.currentGroup3&&(this.currentGroup3=null,this.currentResno=-2147483648,this.htElementsInCurrentGroup=null);else if(!a.group3.equals(this.currentGroup3)||a.sequenceNumber!=this.currentResno)this.currentGroup3=a.group3,this.currentResno=a.sequenceNumber,this.htElementsInCurrentGroup=this.htFormul.get(a.group3),this.nRes++,a.group3.equals("UNK")&&this.nUNK++;this.setAtomCoordXYZ(a, +c,g,f);a.formalCharge=q;this.setAdditionalAtomParameters(a);this.haveMappedSerials?this.asc.addAtomWithMappedSerialNumber(a):this.asc.addAtom(a);0==this.ac++&&!this.isCourseGrained&&this.setModelPDB(!0);a.isHetero&&null!=this.htHetero&&(this.asc.setCurrentModelInfo("hetNames",this.htHetero),this.htHetero=null)},"J.adapter.smarter.Atom,~N,~N,~N,~N,~N");d(b,"atom",function(){var a=this.line.startsWith("HETATM"),a=this.processAtom(new J.adapter.smarter.Atom,this.line.substring(12,16).trim(),this.line.charAt(16), +this.parseTokenRange(this.line,17,20),this.vwr.getChainID(this.line.substring(21,22),!0),this.getSeqNo(22,26),this.line.charAt(26),a,this.deduceElementSymbol(a));if(0=g&&(f=g,g=c,c=f),("+"==g||"-"==g||" "==g)&&"0"<=c&&"7">=c))e=c.charCodeAt(0)-48,"-"==g&&(e=-e);c=this.parseFloatRange(this.line,30,38);g=this.parseFloatRange(this.line,38,46);f=this.parseFloatRange(this.line,46,54)}this.processAtom2(a,this.serial,c,g,f,e)}});d(b,"filterPDBAtom",function(a,e){if(!this.filterAtom(a,e))return!1;if(0this.conformationIndex&&a.altLoc!= +this.lastAltLoc)return this.sbIgnored.append("ignoring").append(c),!1;this.sbSelected.append("loading").append(c)}}return!0},"J.adapter.smarter.Atom,~N");d(b,"setAdditionalAtomParameters",function(a){var e;this.gromacsWideFormat?(e=this.parseFloatRange(this.line,60,68),a.bfactor=J.adapter.readers.pdb.PdbReader.fixRadius(this.parseFloatRange(this.line,68,76))):(e=this.parseFloatRange(this.line,54,60),a.bfactor=this.parseFloatRange(this.line,60,66));a.foccupancy=Float.isNaN(e)?1:e},"J.adapter.smarter.Atom"); +d(b,"deduceElementSymbol",function(a){if(78<=this.lineLength){var e=this.line.charAt(76),c=this.line.charAt(77);if(" "==e&&J.adapter.smarter.Atom.isValidSym1(c))return""+c;if(J.adapter.smarter.Atom.isValidSymNoCase(e,c))return""+e+c}e=this.line.charAt(12);c=this.line.charAt(13);if((null==this.htElementsInCurrentGroup||null!=this.htElementsInCurrentGroup.get(this.line.substring(12,14)))&&J.adapter.smarter.Atom.isValidSymNoCase(e,c))return a||"H"!=e?""+e+c:"H";if("H"==e)return"H";if((null==this.htElementsInCurrentGroup|| +null!=this.htElementsInCurrentGroup.get(""+c))&&J.adapter.smarter.Atom.isValidSym1(c))return""+c;if(" "!=e&&(null==this.htElementsInCurrentGroup||null!=this.htElementsInCurrentGroup.get(""+e))&&J.adapter.smarter.Atom.isValidSym1(e))return""+e;a=this.line.charAt(14);return" "==e&&"X"!=c&&(null==this.htElementsInCurrentGroup||null!=this.htElementsInCurrentGroup.get(this.line.substring(13,15)))&&J.adapter.smarter.Atom.isValidSymNoCase(c,a)?""+c+a:"Xx"},"~B");d(b,"conect",function(){null==this.sbConect? +(this.sbConect=new JU.SB,this.sb=new JU.SB):this.sb.setLength(0);var a=this.getSerial(6,11);if(!(0>a)){var e=1,c=this.line.trim().length;56f)){var q=a==this.lastSourceSerial&&f==this.lastTargetSerial;q&&(this.haveDoubleBonds=!0);this.lastSourceSerial=a;this.lastTargetSerial=f;var b;fq+4&&(x=this.line.charAt(q+4)); +e===J.c.STR.NONE&&(e=a);a=new J.adapter.smarter.Structure(-1,a,e,d,k,b,null);a.set(c,p,g,f,m,x,0,0);this.asc.addStructure(a)}});d(b,"getModelNumber",function(){var a=14;a>this.lineLength&&(a=this.lineLength);a=this.parseIntRange(this.line,6,a);return-2147483648==a?0:a});d(b,"getModelName",function(){if(16>this.lineLength)return null;if(this.line.startsWith("ATOM"))return"";var a=this.line.substring(15,this.lineLength).trim();return 0==a.length?null:a});d(b,"model",function(a,e){this.checkNotPDB(); +null==e&&(e=this.pdbID);this.haveMappedSerials=null!=this.thisBiomolecule&&this.applySymmetry;this.sbConect=null;this.asc.newAtomSet();this.asc.setCurrentModelInfo("pdbID",this.pdbID);(0==this.asc.iSet||this.isTrajectory)&&this.asc.setAtomSetName(this.pdbID);this.asc.setCurrentModelInfo("name",e);this.checkUnitCellParams();this.isCourseGrained||this.setModelPDB(!0);this.asc.setCurrentAtomSetNumber(a);this.isCourseGrained&&this.asc.setCurrentModelInfo("courseGrained",Boolean.TRUE)},"~N,~S");d(b,"checkNotPDB", +function(){var a=!this.isCourseGrained&&(0==this.nRes||this.nUNK!=this.nRes);this.checkNearAtoms=!a;this.setModelPDB(a);this.nUNK=this.nRes=0;this.currentGroup3=null});d(b,"cryst1",function(){var a=this.$cryst1=this.getFloat(6,9);1==a&&(a=NaN);this.setUnitCell(a,this.getFloat(15,9),this.getFloat(24,9),this.getFloat(33,7),this.getFloat(40,7),this.getFloat(47,7));this.addSpaceGroupName(JU.PT.parseTrimmedRange(this.line,55,66))});d(b,"addSpaceGroupName",function(a){this.isbiomol&&(this.doConvertToFractional= +!1);(null==this.sgName||this.sgName.equals("unspecified!"))&&this.setSpaceGroupName(a);this.fileSgName=this.sgName},"~S");d(b,"getFloat",function(a,e){return this.parseFloatRange(this.line,a,a+e)},"~N,~N");d(b,"scale",function(a){null!=this.unitCellParams&&(a=4*a+2,this.unitCellParams[0]=this.$cryst1,this.setUnitCellItem(a++,this.getFloat(10,10)),this.setUnitCellItem(a++,this.getFloat(20,10)),this.setUnitCellItem(a++,this.getFloat(30,10)),this.setUnitCellItem(a++,this.getFloat(45,10)),this.isbiomol&& +(this.doConvertToFractional=!1))},"~N");d(b,"expdta",function(){0<=this.line.toUpperCase().indexOf("NMR")&&this.asc.setInfo("isNMRdata","true")});d(b,"formul",function(){var a=this.parseTokenRange(this.line,12,15),e=JU.PT.parseTrimmedRange(this.line,19,70),c=e.indexOf("(");if(0<=c){var g=e.indexOf(")");if(0>g||c>=g||c+1==g)return;e=JU.PT.parseTrimmedRange(e,c+1,g)}c=this.htFormul.get(a);null==c&&this.htFormul.put(a,c=new java.util.Hashtable);for(this.next[0]=0;null!=(g=this.parseTokenNext(e));)2> +g.length||(a=g.charAt(0),g=g.charAt(1),J.adapter.smarter.Atom.isValidSymNoCase(a,g)?c.put(""+a+g,Boolean.TRUE):J.adapter.smarter.Atom.isValidSym1(a)&&c.put(""+a,Boolean.TRUE))});d(b,"het",function(){if(!(30>this.line.length)){null==this.htHetero&&(this.htHetero=new java.util.Hashtable);var a=this.parseTokenRange(this.line,7,10);if(!this.htHetero.containsKey(a)){var e=JU.PT.parseTrimmedRange(this.line,30,70);this.htHetero.put(a,e)}}});d(b,"hetnam",function(){null==this.htHetero&&(this.htHetero=new java.util.Hashtable); +var a=this.parseTokenRange(this.line,11,14),e=JU.PT.parseTrimmedRange(this.line,15,70);if(null==a)JU.Logger.error("ERROR: HETNAM record does not contain a group name: "+this.line);else{var c=this.htHetero.get(a);null!=c&&(e=c+e);this.htHetero.put(a,e);this.appendLoadNote(a+" = "+e)}});d(b,"anisou",function(){var a=N(8,0);a[6]=1;var e=this.line.substring(6,11).trim();if(!this.haveMappedSerials&&0c;c+=7,g++)a[g]=this.parseFloatRange(this.line,c,c+7);for(c=0;6>c;c++){if(Float.isNaN(a[c])){JU.Logger.error("Bad ANISOU record: "+this.line);return}a[c]/=1E4}this.asc.setAnisoBorU(e,a,12)}});d(b,"site",function(){null==this.htSites&&(this.htSites=new java.util.Hashtable);var a=this.parseIntRange(this.line,15,17),e=JU.PT.parseTrimmedRange(this.line, +11,14),c=this.htSites.get(e);null==c&&(c=new java.util.Hashtable,c.put("nResidues",Integer.$valueOf(a)),c.put("groups",""),this.htSites.put(e,c));a=c.get("groups");for(e=0;4>e;e++){var g=18+11*e,f=JU.PT.parseTrimmedRange(this.line,g,g+3);if(0==f.length)break;var q=JU.PT.parseTrimmedRange(this.line,g+4,g+5),b=JU.PT.parseTrimmedRange(this.line,g+5,g+9),g=JU.PT.parseTrimmedRange(this.line,g+9,g+10),a=a+((0==a.length?"":",")+"["+f+"]"+b);0k.length))if(JU.Logger.info(this.line),k[1].equalsIgnoreCase("GROUP"))f=new java.util.Hashtable,q=new JU.Lst,f.put("ranges",q),g.addLast(f),this.tlsGroupID=this.parseIntStr(k[k.length-1]),f.put("id",Integer.$valueOf(this.tlsGroupID));else if(k[0].equalsIgnoreCase("NUMBER")){if(!k[2].equalsIgnoreCase("COMPONENTS")){a= +this.parseIntStr(k[k.length-1]);if(1>a)break;null==this.vTlsModels&&(this.vTlsModels=new JU.Lst);g=new JU.Lst;this.appendLoadNote(this.line.substring(11).trim())}}else if(k[0].equalsIgnoreCase("COMPONENTS"))c=this.line;else if(k[0].equalsIgnoreCase("RESIDUE")){var b=new java.util.Hashtable,p,m,x,h;if(6==k.length)p=k[2].charAt(0),m=k[4].charAt(0),x=this.parseIntStr(k[3]),h=this.parseIntStr(k[5]);else{var A=c.indexOf(" C "),u=c.indexOf(" C ",A+4);p=this.line.charAt(u);m=this.line.charAt(A);x=this.parseIntRange(this.line, +u+1,A);h=this.parseIntStr(this.line.substring(A+1))}p==m?(b.put("chains",""+p+m),x<=h?(b.put("residues",D(-1,[x,h])),q.addLast(b)):this.tlsAddError(" TLS group residues are not in order (range ignored)")):this.tlsAddError(" TLS group chains are different (range ignored)")}else if(k[0].equalsIgnoreCase("SELECTION"))for(var v="\x00",n=1;nn;n++)for(v=0;3>v;v++)Float.isNaN(C[n][v])&&this.tlsAddError("invalid tensor: "+ +JU.Escape.escapeFloatAA(C,!1));if("S"==t&&++e==a){JU.Logger.info(a+" TLS groups read");this.readHeader(!0);break}}}catch(z){if($(z,Exception)){JU.Logger.error(this.line+"\nError in TLS parser: ");System.out.println(z.getMessage());g=null;break}else throw z;}null!=g&&(e=new java.util.Hashtable,e.put("groupCount",Integer.$valueOf(a)),e.put("groups",g),this.vTlsModels.addLast(e));return 1>a});d(b,"handleTlsMissingModels",function(){this.vTlsModels=null});d(b,"setTlsGroups",function(a,e,c){JU.Logger.info("TLS model "+ +(e+1)+" set "+(a+1));a=this.vTlsModels.get(a);for(var g=a.get("groups"),f=this.asc.getAtomSetAtomIndex(e),q=N(this.asc.getAtomSetAtomCount(e),0),b=f+q.length,d=this.asc.atoms,k=g.size(),p=0;pt){JU.Logger.info("TLS processing terminated");return}JU.Logger.info("TLS ID="+this.tlsGroupID+" model atom index range "+s+"-"+t);s=v==n;for(t=f;t=w&&r.sequenceNumber<=u:r.chainID>v&&r.chainID=w||r.chainID==n&&r.sequenceNumber<=u)q[t-f]=this.tlsGroupID,this.setTlsTensor(r,m,c)}}}this.asc.setAtomProperties("tlsGroup",q,e,!0);this.asc.setModelInfoForSet("TLS",a,e);this.asc.setTensors()},"~N,~N,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +d(b,"findAtomForRange",function(a,e,c,g,f){a=this.findAtom(a,e,c,g,!0);return f&&0<=a?this.findAtom(a,e,c,g,!1):a},"~N,~N,~N,~N,~B");d(b,"findAtom",function(a,e,c,g,f){for(var q=this.asc.atoms;aa?1:a},"~N");d(b,"addConnection",function(a){null== +this.vConnect&&(this.connectLast=null,this.vConnect=new JU.Lst);null!=this.connectLast&&a[0]==this.connectLast[0]&&a[1]==this.connectLast[1]&&2048!=a[2]?this.connectLast[2]++:this.vConnect.addLast(this.connectLast=a)},"~A");d(b,"connectAllBad",function(a){for(var e=this.connectNextAtomIndex,c=this.connectNextAtomSet;cg))if(e)this.connectAllBad(a);else if(c.setCurrentModelInfo("PDB_CONECT_firstAtom_count_max",D(-1,[c.getAtomSetAtomIndex(g),c.getAtomSetAtomCount(g),a])),null!=this.vConnect){for(var f=this.connectNextAtomIndex,q=c.atomSetCount;--q>=this.connectNextAtomSet;)c.setModelInfoForSet("PDB_CONECT_bonds", +this.vConnect,q),c.setGlobalBoolean(3),f+=c.getAtomSetAtomCount(q);this.vConnect=null;this.connectNextAtomSet=g+1;this.connectNextAtomIndex=f}},"~N,~B")});s("J.adapter.smarter");t(null,"J.adapter.smarter.Structure",["J.c.STR"],function(){var b=z(function(){this.strandID=this.structureID=this.substructureType=this.structureType=null;this.startChainID=this.startSequenceNumber=this.strandCount=0;this.startInsertionCode="\x00";this.endChainID=this.endSequenceNumber=0;this.endInsertionCode="\x00";this.bsAll= +this.modelStartEnd=this.atomStartEnd=null;y(this,arguments)},J.adapter.smarter,"Structure",null,Cloneable);X(b,function(){this.atomStartEnd=D(2,0);this.modelStartEnd=D(-1,[-1,-1])});F(b,function(a,e,c,g,f,q,b){null!=b?(this.modelStartEnd=D(-1,[0,a]),this.bsAll=b):(this.structureType=e,this.substructureType=c,null!=g&&(this.modelStartEnd[0]=this.modelStartEnd[1]=a,this.structureID=g,this.strandCount=q,this.strandID=f))},"~N,J.c.STR,J.c.STR,~S,~S,~N,~A");b.getHelixType=d(b,"getHelixType",function(a){switch(a){case 1:return J.c.STR.HELIXALPHA; +case 3:return J.c.STR.HELIXPI;case 5:return J.c.STR.HELIX310}return J.c.STR.HELIX},"~N");d(b,"set",function(a,e,c,g,f,q,b,d){this.startChainID=a;this.startSequenceNumber=e;this.startInsertionCode=c;this.endChainID=g;this.endSequenceNumber=f;this.endInsertionCode=q;this.atomStartEnd[0]=b;this.atomStartEnd[1]=d},"~N,~N,~S,~N,~N,~S,~N,~N");d(b,"clone",function(){var a=null;try{a=ea(this,J.adapter.smarter.Structure,"clone",[])}catch(e){if(!$(e,"CloneNotSupportedException"))throw e;}return a})});s("JM"); +t(["JM.Group"],"JM.Monomer","JU.Measure $.P3 $.Quat J.c.STR JM.BioResolver JU.Escape $.Logger JV.JC".split(" "),function(){var b=z(function(){this.offsets=this.bioPolymer=null;this.monomerIndex=-1;this.theta=this.mu=this.straightness=this.omega=this.psi=this.phi=NaN;this.backboneBlockVis=!1;y(this,arguments)},JM,"Monomer",JM.Group);F(b,function(){R(this,JM.Monomer,[])});b.have=d(b,"have",function(a,e){return 255!=(a[e]&255)},"~A,~N");d(b,"set2",function(a,e,c,g,f,q){this.setGroup(a,e,c,g,f);this.offsets= +q;this.setLeadAtomIndex();return this},"JM.Chain,~S,~N,~N,~N,~A");d(b,"setLeadAtomIndex",function(){var a=this.offsets[0]&255;255!=a&&(this.leadAtomIndex=this.firstAtomIndex+a)});d(b,"setBioPolymer",function(a,e){this.bioPolymer=a;this.monomerIndex=e},"JM.BioPolymer,~N");h(b,"getSelectedMonomerCount",function(){return null==this.bioPolymer?0:this.bioPolymer.getSelectedMonomerCount()});h(b,"getSelectedMonomerIndex",function(){return null==this.bioPolymer||!this.bioPolymer.isMonomerSelected(this.monomerIndex)? +-1:this.monomerIndex});h(b,"getBioPolymerLength",function(){return null==this.bioPolymer?0:this.bioPolymer.monomerCount});d(b,"getMonomerIndex",function(){return this.monomerIndex});h(b,"getAtomIndex",function(a,e){if(null!=this.bioPolymer){var c=this.bioPolymer.monomers,g=this.monomerIndex+e;if(0<=g&&gb)q=e[~b];else if(q=e[b],0>q)return null;var d;if(0>q)d=255;else if(d=q-a,0>d||254b&&(d=255);f[g]=d}return f},"~N,~A,~A");h(b,"getProteinStructureType",function(){return J.c.STR.NONE});d(b,"isHelix",function(){return!1});d(b,"isSheet",function(){return!1});h(b,"setStrucNo",function(){},"~N");d(b,"getAtomFromOffsetIndex",function(a){if(a>this.offsets.length)return null;a=this.offsets[a]&255;return 255==a?null:this.chain.model.ms.at[this.firstAtomIndex+a]},"~N");d(b,"getSpecialAtom",function(a,e){for(var c=a.length;0<=--c;){var g=a[c];0>g&&(g=-g);if(e==g)return c=this.offsets[c]& +255,255==c?null:this.chain.model.ms.at[this.firstAtomIndex+c]}return null},"~A,~N");d(b,"getSpecialAtomPoint",function(a,e){for(var c=a.length;0<=--c;){var g=a[c];0>g&&(g=-g);if(e==g)return c=this.offsets[c]&255,255==c?null:this.chain.model.ms.at[this.firstAtomIndex+c]}return null},"~A,~N");h(b,"isLeadAtom",function(a){return a==this.leadAtomIndex},"~N");h(b,"getLeadAtom",function(){return this.getAtomFromOffsetIndex(0)});d(b,"getWingAtom",function(){return this.getAtomFromOffsetIndex(1)});d(b,"getInitiatorAtom", +function(){return this.getLeadAtom()});d(b,"getTerminatorAtom",function(){return this.getLeadAtom()});d(b,"findNearestAtomIndex",function(){},"~N,~N,~A,~N,~N");d(b,"getMyInfo",function(a){a=this.getGroupInfo(this.groupIndex,a);a.put("chain",this.chain.getIDStr());var e=this.getResno();0this.lastAtomIndex&&(p-=d+1);var m=p-this.firstAtomIndex;if(!(0>m||255g)return!1;a[e]=g-c;return!0},"~A,~N,~N,~N");d(b,"getQuaternionFrameCenter",function(){return null},"~S");d(b,"getHelixData2",function(a,e,c){if(0> +this.monomerIndex)return null;var g=this.monomerIndex-c,f=1>c||0>=this.monomerIndex?null:this.bioPolymer.monomers[g],g=this.getQuaternion(e),b=1>c?JU.Quat.getQuaternionFrameV(JV.JC.axisX,JV.JC.axisY,JV.JC.axisZ,!1):null==f?null:f.getQuaternion(e);if(null==b||null==g)return ea(this,JM.Monomer,"getHelixData",[a,e,c]);var f=1>c?JU.P3.new3(0,0,0):f.getQuaternionFrameCenter(e),j=this.getQuaternionFrameCenter(e);return null==f||null==j?this.getHelixData(a,e,c):JU.Escape.escapeHelical(135176==a?"helixaxis"+ +this.getUniqueID():null,a,f,j,JU.Measure.computeHelicalAxis(f,j,g.div(b)))},"~N,~S,~N");d(b,"getUniqueID",function(){var a=this.chain.chainID,e=this.getLeadAtom(),a=(null==e?"":"_"+e.mi)+"_"+this.getResno()+(0==a?"":"_"+a),e=null==e?"\x00":this.getLeadAtom().altloc;"\x00"!=e&&(a+="_"+e);return a});h(b,"isCrossLinked",function(a){for(var e=this.firstAtomIndex;e<=this.lastAtomIndex;e++)if(this.getCrossLinkGroup(e,null,a,!0,!0,!1))return!0;return!1},"JM.Group");h(b,"getCrossLinkVector",function(a,e, +c){for(var g=null==a,f=this.firstAtomIndex;f<=this.lastAtomIndex;f++)if(this.getCrossLinkGroup(f,a,null,e,c,g)&&g)return!0;return!g&&0k||null==d)return!1;var p=!1;b=!b&&null==e&&null==c;for(var m=0;mthis.monomerIndex+1)){p=!0;if(null!=c||null==e)break;e.addLast(Integer.$valueOf(a));e.addLast(Integer.$valueOf(x.i));e.addLast(Integer.$valueOf(h.leadAtomIndex))}}}}return p},"~N,JU.Lst,JM.Group,~B,~B,~B");d(b,"isConnectedPrevious",function(){return!0});d(b,"setGroupParameter",function(a,e){switch(a){case 1111490569:this.phi=e;break;case 1111490570:this.psi=e;break;case 1111490568:this.omega= +e;break;case 1111490565:this.mu=e;break;case 1111490576:this.theta=e;break;case 1111490574:this.straightness=e}},"~N,~N");h(b,"getGroupParameter",function(a){if(null==this.bioPolymer)return 0;this.bioPolymer.haveParameters||this.bioPolymer.calcParameters();switch(a){case 1094713361:return 1;case 1111490568:return this.omega;case 1111490569:return this.phi;case 1111490570:return this.psi;case 1111490565:return this.mu;case 1111490576:return this.theta;case 1111490574:return this.straightness}return NaN}, +"~N");h(b,"getGroup1",function(){return this.groupIDe||0=e.distance(a)},"JM.Monomer");h(b,"getQuaternionFrameCenter",function(a){return this.getQuaternionFrameCenterAlpha(a)},"~S");h(b,"isWithinStructure",function(a){return null!=this.proteinStructure&&this.proteinStructure.type===a&&this.proteinStructure.isWithin(this.monomerIndex)},"J.c.STR"); +d(b,"getQuaternionFrameCenterAlpha",function(a){switch(a.charCodeAt(0)){case 98:case 99:case 67:case 120:return this.getLeadAtom();default:case 97:case 110:case 112:case 80:case 113:return null}},"~S");h(b,"getHelixData",function(a,e,c){return this.getHelixData2(a,e,c)},"~N,~S,~N");h(b,"getQuaternion",function(a){return this.getQuaternionAlpha(a)},"~S");d(b,"getQuaternionAlpha",function(a){if(0>this.monomerIndex)return null;var e=new JU.V3,c=new JU.V3;switch(a.charCodeAt(0)){default:case 97:case 110:case 112:case 113:return null; +case 98:case 99:case 120:if(0==this.monomerIndex||this.monomerIndex==this.bioPolymer.monomerCount-1)return null;a=this.getLeadAtom();var g=this.bioPolymer.getLeadPoint(this.monomerIndex+1),f=this.bioPolymer.getLeadPoint(this.monomerIndex-1);e.sub2(g,a);c.sub2(f,a)}return JU.Quat.getQuaternionFrameV(e,c,null,!1)},"~S");b.alphaOffsets=K(-1,[0])});s("JM");t(["JM.Structure"],"JM.ProteinStructure",["java.util.Hashtable","JU.P3","$.V3","JU.Logger"],function(){var b=z(function(){this.structureID=this.subtype= +this.type=null;this.strucNo=0;this.serialID=null;this.strandCount=1;this.nRes=this.id=0;this.apolymer=null;this.monomerIndexLast=this.monomerIndexFirst=0;this.resMap=this.segments=this.vectorProjection=this.axisUnitVector=this.axisB=this.axisA=null;y(this,arguments)},JM,"ProteinStructure",null,JM.Structure);F(b,function(){this.incrementID()});d(b,"incrementID",function(){this.id=++JM.ProteinStructure.ids});d(b,"setupPS",function(a,e,c,g){this.strucNo=++JM.ProteinStructure.globalStrucNo;this.apolymer= +a;this.type=e;this.vectorProjection=new JU.V3;this.monomerIndexFirst=c;this.addMonomer(c+g-1);JU.Logger.debugging&&JU.Logger.info("Creating ProteinStructure "+this.strucNo+" "+e.getBioStructureTypeName(!1)+" from "+a.monomers[this.monomerIndexFirst]+" through "+a.monomers[this.monomerIndexLast]+" in polymer "+a)},"JM.AlphaPolymer,J.c.STR,~N,~N");d(b,"addMonomer",function(a){this.resMap=null;this.resetAxes();this.monomerIndexFirst=Math.min(this.monomerIndexFirst,a);this.monomerIndexLast=Math.max(this.monomerIndexLast, +a);this.nRes=this.monomerIndexLast-this.monomerIndexFirst+1},"~N");d(b,"removeMonomer",function(a){this.resMap=null;this.resetAxes();if(!(a>this.monomerIndexLast||athis.monomerIndexFirst&&athis.monomerIndexFirst)return null;if(e)for(var g=this.monomerIndexFirst;g<=this.monomerIndexLast;g++){if(null==a||a.get(c[g].leadAtomIndex))return c[g]}else for(g=this.monomerIndexLast;g>=this.monomerIndexFirst;--g)if(null==a||a.get(c[g].leadAtomIndex))return c[g];return null},"JU.BS,~B");h(b,"toString",function(){return"["+this.id+" "+this.type+(null==this.subtype?"":" "+this.subtype)+" ("+this.monomerIndexFirst+"-"+this.monomerIndexLast+ +")]"});b.ids=0;b.globalStrucNo=1E3});s("JM");t(["JM.ProteinStructure"],"JM.Helix",["JU.Measure","$.P3","$.V3","J.c.STR"],function(){var b=H(JM,"Helix",JM.ProteinStructure);F(b,function(a,e,c,g){R(this,JM.Helix,[]);this.setupPS(a,J.c.STR.HELIX,e,c);this.subtype=g},"JM.AlphaPolymer,~N,~N,J.c.STR");h(b,"calcAxis",function(){if(null==this.axisA){for(var a=Array(this.nRes+1),e=0;e<=this.nRes;e++)this.apolymer.getLeadMidPoint(this.monomerIndexFirst+e,a[e]=new JU.P3);this.axisA=new JU.P3;this.axisUnitVector= +new JU.V3;JU.Measure.calcBestAxisThroughPoints(a,a.length,this.axisA,this.axisUnitVector,this.vectorProjection,4);this.axisB=JU.P3.newP(a[this.nRes]);JU.Measure.projectOntoAxis(this.axisB,this.axisA,this.axisUnitVector,this.vectorProjection)}})});s("JM");t(["JM.ProteinStructure"],"JM.Sheet",["JU.Measure","$.P3","$.V3","J.c.STR"],function(){var b=z(function(){this.heightUnitVector=this.widthUnitVector=null;y(this,arguments)},JM,"Sheet",JM.ProteinStructure);F(b,function(a,e,c,g){R(this,JM.Sheet,[]); +this.incrementID();this.setupPS(a,J.c.STR.SHEET,e,c);this.subtype=g},"JM.AlphaPolymer,~N,~N,J.c.STR");h(b,"calcAxis",function(){if(null==this.axisA){2==this.nRes?(this.axisA=this.apolymer.getLeadPoint(this.monomerIndexFirst),this.axisB=this.apolymer.getLeadPoint(this.monomerIndexFirst+1)):(this.axisA=new JU.P3,this.apolymer.getLeadMidPoint(this.monomerIndexFirst+1,this.axisA),this.axisB=new JU.P3,this.apolymer.getLeadMidPoint(this.monomerIndexFirst+this.nRes-1,this.axisB));this.axisUnitVector=new JU.V3; +this.axisUnitVector.sub2(this.axisB,this.axisA);this.axisUnitVector.normalize();var a=new JU.P3;this.apolymer.getLeadMidPoint(this.monomerIndexFirst,a);this.notHelixOrSheet(this.monomerIndexFirst-1)&&JU.Measure.projectOntoAxis(a,this.axisA,this.axisUnitVector,this.vectorProjection);var e=new JU.P3;this.apolymer.getLeadMidPoint(this.monomerIndexFirst+this.nRes,e);this.notHelixOrSheet(this.monomerIndexFirst+this.nRes)&&JU.Measure.projectOntoAxis(e,this.axisA,this.axisUnitVector,this.vectorProjection); +this.axisA=a;this.axisB=e}});d(b,"notHelixOrSheet",function(a){return 0>a||a>=this.apolymer.monomerCount||!this.apolymer.monomers[a].isHelix()&&!this.apolymer.monomers[a].isSheet()},"~N");d(b,"calcSheetUnitVectors",function(){if(r(this.apolymer,"JM.AminoPolymer")&&null==this.widthUnitVector){var a=new JU.V3,e=new JU.V3,c=this.apolymer.monomers[this.monomerIndexFirst];e.sub2(c.getCarbonylOxygenAtom(),c.getCarbonylCarbonAtom());for(var g=this.nRes;--g>this.monomerIndexFirst;)c=this.apolymer.monomers[g], +a.sub2(c.getCarbonylOxygenAtom(),c.getCarbonylCarbonAtom()),1.5707964>e.angle(a)?e.add(a):e.sub(a);this.heightUnitVector=a;this.heightUnitVector.cross(this.axisUnitVector,e);this.heightUnitVector.normalize();this.widthUnitVector=e;this.widthUnitVector.cross(this.axisUnitVector,this.heightUnitVector)}});d(b,"setBox",function(a,e,c,g,f,b,j){null==this.heightUnitVector&&this.calcSheetUnitVectors();g.setT(this.widthUnitVector);g.scale(j*a);f.setT(this.heightUnitVector);f.scale(j*e);b.ave(g,f);b.sub2(c, +b)},"~N,~N,JU.P3,JU.V3,JU.V3,JU.P3,~N")});s("JM");t(["JM.ProteinStructure"],"JM.Turn",["J.c.STR"],function(){var b=H(JM,"Turn",JM.ProteinStructure);F(b,function(a,e,c){R(this,JM.Turn,[]);this.setupPS(a,J.c.STR.TURN,e,c);this.subtype=J.c.STR.TURN},"JM.AlphaPolymer,~N,~N")});s("JM");t(["JM.Structure","JU.V3"],"JM.BioPolymer",["JU.BS","$.P3"],function(){var b=z(function(){this.monomers=this.model=null;this.hasStructure=!1;this.leadAtomIndices=this.wingVectors=this.controlPoints=this.leadPoints=this.leadMidpoints= +null;this.cyclicFlag=this.monomerCount=this.bioPolymerIndexInModel=this.type=0;this.invalidControl=this.invalidLead=!1;this.sheetSmoothing=0;this.hasWingPoints=!1;this.reversed=null;this.twistedSheets=!1;this.unitVectorX=null;this.selectedMonomerCount=0;this.bsSelectedMonomers=null;this.haveParameters=!1;y(this,arguments)},JM,"BioPolymer",null,JM.Structure);X(b,function(){this.unitVectorX=JU.V3.new3(1,0,0)});F(b,function(a,e){this.monomers=a;this.hasStructure=e;for(var c=this.monomerCount=a.length;0<= +--c;)a[c].setBioPolymer(this,c);this.model=a[0].getModel()},"~A,~B");h(b,"setAtomBits",function(a){this.getRange(a,!0)},"JU.BS");h(b,"setAtomBitsAndClear",function(a,e){for(var c=this.monomerCount;0<=--c;)this.monomers[c].setAtomBitsAndClear(a,e)},"JU.BS,JU.BS");d(b,"getRange",function(a,e){if(0!=this.monomerCount)if(e)for(var c=this.monomerCount;0<=--c;)this.monomers[c].setAtomBits(a);else a.setBits(this.monomers[0].firstAtomIndex,this.monomers[this.monomerCount-1].lastAtomIndex+1)},"JU.BS,~B"); +d(b,"clearStructures",function(){});d(b,"getLeadAtomIndices",function(){null==this.leadAtomIndices&&(this.leadAtomIndices=D(this.monomerCount,0),this.invalidLead=!0);if(this.invalidLead){for(var a=this.monomerCount;0<=--a;)this.leadAtomIndices[a]=this.monomers[a].leadAtomIndex;this.invalidLead=!1}return this.leadAtomIndices});d(b,"getIndex",function(a,e,c,g){var f;for(f=this.monomerCount;0<=--f;){var b=this.monomers[f];if(b.chain.chainID==a&&b.seqcode==e&&(0>c||c==b.firstAtomIndex||g==b.lastAtomIndex))break}return f}, +"~N,~N,~N,~N");d(b,"getLeadPoint",function(a){return this.monomers[a].getLeadAtom()},"~N");d(b,"getInitiatorPoint",function(){return this.monomers[0].getInitiatorAtom()});d(b,"getTerminatorPoint",function(){return this.monomers[this.monomerCount-1].getTerminatorAtom()});d(b,"getLeadMidPoint",function(a,e){if(a==this.monomerCount)--a;else if(0g;g++)if(a=this.model.ms.vwr.shm.shapes[g],null!=a)for(e=a.bioShapes.length;0<=--e;)c=a.bioShapes[e],c.bioPolymer===this&&c.falsifyMesh()}},"JU.BS");d(b,"recalculateLeadMidpointsAndWingVectors",function(){this.invalidLead=this.invalidControl=!0;this.getLeadAtomIndices(); +this.resetHydrogenPoints();this.calcLeadMidpointsAndWingVectors()});d(b,"resetHydrogenPoints",function(){});d(b,"getLeadMidpoints",function(){null==this.leadMidpoints&&this.calcLeadMidpointsAndWingVectors();return this.leadMidpoints});d(b,"getLeadPoints",function(){null==this.leadPoints&&this.calcLeadMidpointsAndWingVectors();return this.leadPoints});d(b,"getControlPoints",function(a,e,c){c&&(this.invalidControl=!0);return!a?this.leadMidpoints:0==e?this.leadPoints:this.getControlPoints2(e)},"~B,~N,~B"); +d(b,"getControlPoints2",function(a){if(!this.invalidControl&&a==this.sheetSmoothing)return this.controlPoints;this.getLeadPoints();var e=new JU.V3;null==this.controlPoints&&(this.controlPoints=Array(this.monomerCount+1));Float.isNaN(a)||(this.sheetSmoothing=a);for(a=0;athis.monomerCount)this.wingVectors[1]=this.unitVectorX;else{g=null;for(d=1;d= +a;)this.monomers[e].getMonomerSequenceAtoms(c,g)},"~N,~N,JU.BS,JU.BS");d(b,"getProteinStructure",function(){return null},"~N");d(b,"calcParameters",function(){this.haveParameters=!0;return this.calcEtaThetaAngles()||this.calcPhiPsiAngles()});d(b,"calcEtaThetaAngles",function(){return!1});d(b,"calcPhiPsiAngles",function(){return!1});d(b,"calculateRamachandranHelixAngle",function(){return NaN},"~N,~S");d(b,"isNucleic",function(){return 0m||this.monomers[this.monomerCount-1].lastAtomIndexthis.monomerCount)){var a= +this.calculateAnglesInDegrees(),c=this.calculateCodes(a);this.checkBetaSheetAlphaHelixOverlap(c,a);var g=this.calculateRunsFourOrMore(c);this.extendRuns(g);this.searchForTurns(c,a,g);this.addStructuresFromTags(g)}},"~B");d(b,"calculateAnglesInDegrees",function(){for(var a=N(this.monomerCount,0),c=this.monomerCount-1;2<=--c;)a[c]=JU.Measure.computeTorsion(this.monomers[c-2].getLeadAtom(),this.monomers[c-1].getLeadAtom(),this.monomers[c].getLeadAtom(),this.monomers[c+1].getLeadAtom(),!0);return a}); +d(b,"calculateCodes",function(a){for(var c=Array(this.monomerCount),g=this.monomerCount-1;2<=--g;){var f=a[g];c[g]=10<=f&&120>f?JM.AlphaPolymer.Code.RIGHT_HELIX:120<=f||-90>f?JM.AlphaPolymer.Code.BETA_SHEET:-90<=f&&0>f?JM.AlphaPolymer.Code.LEFT_HELIX:JM.AlphaPolymer.Code.NADA}return c},"~A");d(b,"checkBetaSheetAlphaHelixOverlap",function(a,c){for(var g=this.monomerCount-2;2<=--g;)a[g]===JM.AlphaPolymer.Code.BETA_SHEET&&(140>=c[g]&&a[g-2]===JM.AlphaPolymer.Code.RIGHT_HELIX&&a[g-1]===JM.AlphaPolymer.Code.RIGHT_HELIX&& +a[g+1]===JM.AlphaPolymer.Code.RIGHT_HELIX&&a[g+2]===JM.AlphaPolymer.Code.RIGHT_HELIX)&&(a[g]=JM.AlphaPolymer.Code.RIGHT_HELIX)},"~A,~A");d(b,"calculateRunsFourOrMore",function(a){for(var c=Array(this.monomerCount),g=J.c.STR.NONE,f=JM.AlphaPolymer.Code.NADA,b=0,j=0;jb?a[f]=JM.AlphaPolymer.Code.LEFT_TURN:0<=b&&90>b&&(a[f]=JM.AlphaPolymer.Code.RIGHT_TURN)}for(f=this.monomerCount-1;0<=--f;)a[f]!==JM.AlphaPolymer.Code.NADA&&(a[f+1]=== +a[f]&&g[f]===J.c.STR.NONE)&&(g[f]=J.c.STR.TURN)},"~A,~A,~A");d(b,"addStructuresFromTags",function(a){for(var c=0;c(k=f.nextClearBit(d))||k>p)k=p;this.addStructureProtected(g, +JM.AlphaPolymer.dsspTypes[c]+ ++j,""+a++,3==c?1:0,d-b,k-1-b)}return a},"~N,~N,J.c.STR,JU.BS,~B");var a=H(JM.AlphaPolymer,"Code",Enum);Z(a,"NADA",0,[]);Z(a,"RIGHT_HELIX",1,[]);Z(a,"BETA_SHEET",2,[]);Z(a,"LEFT_HELIX",3,[]);Z(a,"LEFT_TURN",4,[]);Z(a,"RIGHT_TURN",5,[]);b.dsspTypes=P(-1,["H",null,"H","S","H",null,"T"])});s("JM");t(["JM.AlphaMonomer"],"JM.AminoMonomer","JU.A4 $.BS $.M3 $.P3 $.PT $.Quat $.V3 J.c.STR JU.Escape $.Logger".split(" "),function(){var b=z(function(){this.nhChecked=!1;this.ptTemp= +null;y(this,arguments)},JM,"AminoMonomer",JM.AlphaMonomer);ba(b,function(){});b.validateAndAllocate=d(b,"validateAndAllocate",function(a,e,c,g,f,b,d){var l=JM.Monomer.scanForOffsets(g,b,JM.AminoMonomer.interestingAminoAtomIDs);if(null==l)return null;JM.Monomer.checkOptional(l,1,g,b[5]);return d[g].isHetero()&&!JM.AminoMonomer.isBondedCorrectly(g,l,d)?null:(new JM.AminoMonomer).set2(a,e,c,g,f,l)},"JM.Chain,~S,~N,~N,~N,~A,~A");b.isBondedCorrectlyRange=d(b,"isBondedCorrectlyRange",function(a,e,c,g,f){a= +c+(g[a]&255);e=c+(g[e]&255);return a!=e&&f[a].isBonded(f[e])},"~N,~N,~N,~A,~A");b.isBondedCorrectly=d(b,"isBondedCorrectly",function(a,e,c){return JM.AminoMonomer.isBondedCorrectlyRange(2,0,a,e,c)&&JM.AminoMonomer.isBondedCorrectlyRange(0,3,a,e,c)&&(!JM.Monomer.have(e,1)||JM.AminoMonomer.isBondedCorrectlyRange(3,1,a,e,c))},"~N,~A,~A");h(b,"getNitrogenAtom",function(){return this.getAtomFromOffsetIndex(2)});d(b,"getCarbonylCarbonAtom",function(){return this.getAtomFromOffsetIndex(3)});h(b,"getCarbonylOxygenAtom", +function(){return this.getWingAtom()});h(b,"getInitiatorAtom",function(){return this.getNitrogenAtom()});h(b,"getTerminatorAtom",function(){return this.getAtomFromOffsetIndex(JM.Monomer.have(this.offsets,4)?4:3)});d(b,"hasOAtom",function(){return JM.Monomer.have(this.offsets,1)});h(b,"isConnectedAfter",function(a){return null==a?!0:a.getCarbonylCarbonAtom().isBonded(this.getNitrogenAtom())},"JM.Monomer");h(b,"findNearestAtomIndex",function(a,e,c,g,f){var b=c[0],d=this.getNitrogenAtom();g=w(g/2);1200> +g&&(g=1200);if(0!=d.sZ){g=n(this.scaleToScreen(d.sZ,g));4>g&&(g=4);var l=this.getCarbonylCarbonAtom();f=w(f/2);1200>f&&(f=1200);f=n(this.scaleToScreen(d.sZ,f));4>f&&(f=4);var k=this.getLeadAtom();if(this.isCursorOnTopOf(k,a,e,w((g+f)/2),b)||this.isCursorOnTopOf(d,a,e,g,b)||this.isCursorOnTopOf(l,a,e,f,b))c[0]=k}},"~N,~N,~A,~N,~N");d(b,"resetHydrogenPoint",function(){this.nhChecked=!1;this.nitrogenHydrogenPoint=null});d(b,"getNitrogenHydrogenPoint",function(){null==this.nitrogenHydrogenPoint&&!this.nhChecked&& +(this.nhChecked=!0,this.nitrogenHydrogenPoint=this.getExplicitNH());return this.nitrogenHydrogenPoint});d(b,"getExplicitNH",function(){var a=this.getNitrogenAtom(),e=null,c=a.bonds;if(null!=c)for(var g=0;g=this.monomerIndex||15==this.groupID)return!1;var f=this.getNitrogenAtom(),b=this.getNitrogenHydrogenPoint();if(null!=b&&!g)return e.sub2(b,f),a.setT(b),!0;g=this.bioPolymer.monomers[this.monomerIndex- +1];if(c)e.sub2(f,this.getLeadAtom()),e.normalize(),c=JU.V3.newVsub(f,g.getCarbonylCarbonAtom()),c.normalize(),e.add(c);else{c=g.getCarbonylOxygenAtom();if(null==c)return!1;e.sub2(g.getCarbonylCarbonAtom(),c)}e.normalize();a.add2(f,e);this.nitrogenHydrogenPoint=JU.P3.newP(a);JU.Logger.debugging&&JU.Logger.debug('draw ID "pta'+this.monomerIndex+"_"+f.i+'" '+JU.Escape.eP(f)+JU.Escape.eP(a)+" # "+f);return!0},"JU.P3,JU.V3,~B,~B");h(b,"getQuaternionFrameCenter",function(a){if(0>this.monomerIndex)return null; +switch(a.charCodeAt(0)){default:case 97:case 98:case 99:case 67:return this.getQuaternionFrameCenterAlpha(a);case 110:return this.getNitrogenAtom();case 112:case 80:return this.getCarbonylCarbonAtom();case 113:if(this.monomerIndex==this.bioPolymer.monomerCount-1)return null;a=this.bioPolymer.monomers[this.monomerIndex+1];var e=new JU.P3;e.ave(this.getCarbonylCarbonAtom(),a.getNitrogenAtom());return e}},"~S");h(b,"getQuaternion",function(a){if(0>this.monomerIndex)return null;var e=this.getCarbonylCarbonAtom(), +c=this.getLeadAtom(),g=new JU.V3,f=new JU.V3,b=null;switch(a.charCodeAt(0)){case 97:case 110:if(0==this.monomerIndex||15==this.groupID)return null;b=new JU.V3;null==this.ptTemp&&(this.ptTemp=new JU.P3);this.getNHPoint(this.ptTemp,b,!0,!1);f.sub2(c,this.getNitrogenAtom());f.cross(b,f);(new JU.M3).setAA(JU.A4.newVA(f,-0.29670596)).rotate(b);g.cross(f,b);break;case 98:return this.getQuaternionAlpha("b");case 99:g.sub2(e,c);f.sub2(this.getNitrogenAtom(),c);break;case 112:case 120:if(this.monomerIndex== +this.bioPolymer.monomerCount-1)return null;g.sub2(c,e);f.sub2(this.bioPolymer.monomers[this.monomerIndex+1].getNitrogenAtom(),e);break;case 113:if(this.monomerIndex==this.bioPolymer.monomerCount-1)return null;a=this.bioPolymer.monomers[this.monomerIndex+1];f.sub2(a.getLeadAtom(),a.getNitrogenAtom());g.sub2(c,e);break;default:return null}return JU.Quat.getQuaternionFrameV(g,f,b,!1)},"~S");h(b,"getStructureId",function(){return null==this.proteinStructure||null==this.proteinStructure.structureID?"": +this.proteinStructure.structureID});h(b,"getProteinStructureTag",function(){if(null==this.proteinStructure||null==this.proteinStructure.structureID)return null;var a;a=JU.PT.formatStringS("%3N %3ID","N",this.proteinStructure.serialID);a=JU.PT.formatStringS(a,"ID",this.proteinStructure.structureID);this.proteinStructure.type===J.c.STR.SHEET&&(a+=JU.PT.formatStringI("%2SC","SC",this.proteinStructure.strandCount));return a});h(b,"getBSSideChain",function(){var a=new JU.BS;this.setAtomBits(a);this.clear(a, +this.getLeadAtom(),!0);this.clear(a,this.getCarbonylCarbonAtom(),!1);this.clear(a,this.getCarbonylOxygenAtom(),!1);this.clear(a,this.getNitrogenAtom(),!0);return a});d(b,"clear",function(a,e,c){if(null!=e&&(a.clear(e.i),c)){c=e.bonds;for(var g,f=c.length;0<=--f;)1==(g=c[f].getOtherAtom(e)).getElementNumber()&&a.clear(g.i)}},"JU.BS,JM.Atom,~B");b.interestingAminoAtomIDs=K(-1,[2,-5,1,3,-65])});s("JM");t(["JM.AlphaPolymer"],"JM.AminoPolymer","JU.Measure $.P3 $.V3 J.c.STR JM.HBond JU.Logger".split(" "), +function(){var b=z(function(){this.structureList=null;y(this,arguments)},JM,"AminoPolymer",JM.AlphaPolymer);F(b,function(a,e){R(this,JM.AminoPolymer,[a,e]);this.type=1;for(var c=0;ch?x:-1-x;m[2]=h}}if(null!=b)for(x=0;2>x;x++)0<=d[x][1]&&this.addResidueHydrogenBond(a,e.monomers[d[x][1]].getCarbonylOxygenAtom(),e===this?c:-99,d[x][1],d[x][2]/1E3,b)},"JM.AminoMonomer,JM.BioPolymer,~N,JU.P3,JU.BS,JU.Lst,~A,~B");d(b,"calcHbondEnergy",function(a,e,c,g){var f=c.getCarbonylOxygenAtom();if(null==f)return 0;var b=f.distanceSquared(a);if(0.25>b)return 0;f=f.distanceSquared(e); +if(0.25>f)return 0;c=c.getCarbonylCarbonAtom();e=c.distanceSquared(e);if(0.25>e)return 0;c=c.distanceSquared(a);if(0.25>c)return 0;a=Math.sqrt(f);f=Math.sqrt(e);e=Math.sqrt(c);b=Math.sqrt(b);b=JM.HBond.calcEnergy(a,f,e,b);return!(-500>b&&(!g||e>f&&3>=a))&&g||-9900>b?0:b},"JU.P3,JU.P3,JM.AminoMonomer,~B");d(b,"addResidueHydrogenBond",function(a,e,c,g,f,b){switch(c-g){case 2:c=6144;break;case 3:c=8192;break;case 4:c=10240;break;case 5:c=12288;break;case -3:c=14336;break;case -4:c=16384;break;default:c= +4096}b.addLast(new JM.HBond(a,e,c,1,0,f))},"JM.Atom,JM.Atom,~N,~N,~N,JU.Lst");h(b,"calculateStructures",function(a){if(!a){null==this.structureList&&(this.structureList=this.model.ms.getStructureList());a=aa(this.monomerCount,"\x00");for(var e=0;ef&&25>b?"4":"3":this.isSheet(b,f)?"s":this.isTurn(b,f)?"t":"n";JU.Logger.debugging&&JU.Logger.debug(0+ +this.monomers[0].chain.chainID+" aminopolymer:"+e+" "+g.getGroupParameter(1111490569)+","+c.getGroupParameter(1111490570)+" "+a[e])}for(e=0;e=e+3&&this.addStructureProtected(J.c.STR.HELIX,null,null,0,e,c);e=c}for(e=0;e=e+3&&this.addStructureProtected(J.c.STR.HELIX,null,null,0,e,c);e=c}for(e=0;e=e+2&&this.addStructureProtected(J.c.STR.SHEET,null,null,0,e,c);e=c}for(e=0;e=e+2&&this.addStructureProtected(J.c.STR.TURN,null,null,0,e,c);e=c}}},"~B");d(b,"isTurn",function(a,e){return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.TURN),a,e)},"~N,~N");d(b,"isSheet",function(a,e){return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.SHEET), +a,e)},"~N,~N");d(b,"isHelix",function(a,e){return JM.AminoPolymer.checkPhiPsi(this.structureList.get(J.c.STR.HELIX),a,e)},"~N,~N");b.checkPhiPsi=d(b,"checkPhiPsi",function(a,e,c){for(var g=0;g=a[g]&&c<=a[g+1]&&e>=a[g+2]&&e<=a[g+3])return!0;return!1},"~A,~N,~N");d(b,"setStructureList",function(a){this.structureList=a},"java.util.Map")});s("JM");t(null,"JM.BioModelSet","java.util.Hashtable JU.AU $.BS $.Lst $.PT $.SB J.api.Interface J.c.STR JM.Group JM.BioResolver JS.T JU.BSUtil $.Escape $.Logger".split(" "), +function(){var b=z(function(){this.unitIdSets=this.ext=this.ms=this.vwr=null;y(this,arguments)},JM,"BioModelSet",null);d(b,"getBioExt",function(){return null==this.ext?(this.ext=J.api.Interface.getInterface("JM.BioExt",this.vwr,"script")).set(this.vwr,this.vwr.ms):this.ext});d(b,"set",function(a,e){this.vwr=a;this.ms=e;this.unitIdSets=null;null!=this.ext&&this.ext.set(a,e);return this},"JV.Viewer,JM.ModelSet");d(b,"calcAllRasmolHydrogenBonds",function(a,e,c,g,f,b,d,l){var k=this.ms.am;if(null==c){var p= +a;null!=e&&!a.equals(e)&&(p=JU.BSUtil.copy(a)).or(e);for(var m=new JU.BS,h=new JU.BS,n=this.ms.am,A=this.ms.bo,u=this.ms.bondCount;0<=--u;){var v=A[u];0!=(v.order&28672)&&(p.get(v.atom1.i)?m.set(u):h.set(n[v.atom1.mi].trajectoryBaseIndex))}for(u=this.ms.mc;0<=--u;)n[u].isBioModel&&(n[u].hasRasmolHBonds=h.get(u));0<=m.nextSetBit(0)&&this.ms.deleteBonds(m,!1)}for(u=this.ms.mc;0<=--u;)k[u].isBioModel&&!this.ms.isTrajectorySubFrame(u)&&k[u].getRasmolHydrogenBonds(a,e,c,g,f,b,d,l)},"JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS,~N"); +d(b,"calcSelectedMonomersCount",function(){for(var a=this.vwr.bsA(),e=this.ms.mc;0<=--e;)if(this.ms.am[e].isBioModel)for(var c=this.ms.am[e],g=c.bioPolymerCount;0<=--g;)c.bioPolymers[g].calcSelectedMonomersCount(a)});d(b,"calculateAllPolymers",function(a,e,c,g){var f=!this.vwr.getBoolean(603979896);0>e&&(e=a.length);if(null!=g)for(var b=0;b=b&&(b=2);var d=new JU.BS;a=JU.BSUtil.copyInvert(this.modelsOf(a,d),this.ms.mc);if(!f)return this.ms.calculateStructuresAllExcept(a,e,c,g,!1,!1,b);this.ms.recalculatePolymers(a);e=this.ms.calculateStructuresAllExcept(a,e,c,g,!0,!1,b);this.vwr.shm.resetBioshapes(d); +this.ms.setStructureIndexes();return e},"JU.BS,~B,~B,~B,~B,~N");d(b,"calculateStraightnessAll",function(){this.getBioExt().calculateStraightnessAll()});d(b,"calculateStruts",function(a,e){return this.getBioExt().calculateAllstruts(this.vwr,this.ms,a,e)},"JU.BS,JU.BS");d(b,"getAllDefaultStructures",function(a,e){for(var c=this.modelsOf(a,e),g=new JU.SB,f=c.nextSetBit(0);0<=f;f=c.nextSetBit(f+1))this.ms.am[f].isBioModel&&null!=this.ms.am[f].defaultStructure&&g.append(this.ms.am[f].defaultStructure); +return g.toString()},"JU.BS,JU.BS");d(b,"getAllHeteroList",function(a){for(var e=new java.util.Hashtable,c=!1,g=this.ms.mc;0<=--g;)if(0>a||g==a){var f=this.ms.getInfo(g,"hetNames");if(null!=f)for(var c=!0,b,f=f.entrySet().iterator();f.hasNext()&&((b=f.next())||1);){var d=b.getKey();e.put(d,b.getValue())}}return c?e:null},"~N");d(b,"getAllPolymerInfo",function(a,e){this.getBioExt().getAllPolymerInfo(a,e)},"JU.BS,java.util.Map");d(b,"getAllPolymerPointsAndVectors",function(a,e,c,g){for(var f=0;fb)return c;f=e.nextSetBit(0);if(0>f)return c;b=0;switch(a){case 1094713362:for(b=f;0<=b;b=e.nextSetBit(b+1))0<=g[b].group.getBioPolymerIndexInModel()&&g[b].group.bioPolymer.setAtomBitsAndClear(c,e);break;case 1639976963:for(b=f;0<=b;b=e.nextSetBit(b+1))f=g[b].group.getStructure(),null!=f&&f.setAtomBitsAndClear(c,e)}0==b&&JU.Logger.error("MISSING getAtomBits entry for "+JS.T.nameOf(a));return c},"~N,JU.BS,JU.BS");d(b, +"getAtomBitsStr",function(a,e,c){switch(a){default:return new JU.BS;case 1073741925:return this.getAnnotationBits("domains",1073741925,e);case 1073742189:return this.getAnnotationBits("validation",1073742189,e);case 1073742128:return this.getAnnotationBits("rna3d",1073742128,e);case 1073741863:return c=new JU.BS,0!=e.length%2?c:this.ms.getAtomBitsMDa(1086324742,this.getAllBasePairBits(e),c);case 1111490587:return this.getAnnotationBits("dssr",1111490587,e);case 1086324744:return this.getAllSequenceBits(e, +null,c)}},"~N,~S,JU.BS");d(b,"getBioPolymerCountInModel",function(a){if(0>a){a=0;for(var e=this.ms.mc;0<=--e;)!this.ms.isTrajectorySubFrame(e)&&this.ms.am[e].isBioModel&&(a+=this.ms.am[e].getBioPolymerCount());return a}return this.ms.isTrajectorySubFrame(a)||!this.ms.am[a].isBioModel?0:this.ms.am[a].getBioPolymerCount()},"~N");d(b,"getFullProteinStructureState",function(a,e){var c=1073742327==e;if(c&&!this.ms.proteinStructureTainted)return"";var g=1073742158==e||1073742327==e,b=this.ms.at,d=(null== +a?this.vwr.getAllAtoms():a).nextSetBit(0);if(0>d)return"";if(null!=a&&4138==e){a=JU.BSUtil.copy(a);for(var j=this.ms.ac;0<=--j;)(null==b[j]||Float.isNaN(b[j].group.getGroupParameter(1111490569))||Float.isNaN(b[j].group.getGroupParameter(1111490570)))&&a.clear(j)}for(var l=(null==a?this.vwr.getAllAtoms():a).length()-1,k=b[d].mi,d=b[l].mi,l=new JU.Lst,p=new java.util.Hashtable,m=new JU.SB;k<=d;k++)if(this.ms.am[k].isBioModel&&(j=this.ms.am[k],!c||j.structureTainted)){var h=new JU.BS;h.or(j.bsAtoms); +h.andNot(j.bsAtomsDeleted);j=h.nextSetBit(0);if(!(0>j)){g&&m.append(" structure none ").append(JU.Escape.eBS(this.ms.getModelAtomBitSetIncludingDeleted(k,!1))).append(" \t# model="+this.ms.getModelNumberDotted(k)).append(";\n");for(var n;0<=j;j=h.nextSetBit(j+1)){var A=b[j];if(!(null==A||!r(A.group,"JM.AlphaMonomer")||null==(n=A.group.proteinStructure)||p.containsKey(n)))l.addLast(n),p.put(n,Boolean.TRUE)}}}this.getStructureLines(a,m,l,J.c.STR.HELIX,g,e);this.getStructureLines(a,m,l,J.c.STR.SHEET, +g,e);this.getStructureLines(a,m,l,J.c.STR.TURN,g,e);return m.toString()},"JU.BS,~N");d(b,"getGroupsWithinAll",function(a,e){for(var c=new JU.BS,g=this.ms.getIterativeModels(!1),b=this.ms.mc;0<=--b;)if(g.get(b)&&this.ms.am[b].isBioModel)for(var d=this.ms.am[b],j=d.bioPolymerCount;0<=--j;)d.bioPolymers[j].getRangeGroups(a,e,c);return c},"~N,JU.BS");d(b,"getIdentifierOrNull",function(a){for(var e=a.length,c=0;c=e)return g;if(c!=e-1)return null;g.and(this.ms.getChainBits(a.charAt(c).charCodeAt(0))); +return g},"~S");d(b,"mutate",function(a,e,c,g,b){return this.getBioExt().mutate(this.vwr,a,e,c,g,b)},"JU.BS,~S,~A,~S,~A");d(b,"recalculateAllPolymers",function(a,e){for(var c=0;ca)for(a=this.ms.mc;0<=--a;)!this.ms.isTrajectorySubFrame(a)&&this.ms.am[a].isBioModel&&this.ms.am[a].recalculateLeadMidpointsAndWingVectors();else!this.ms.isTrajectorySubFrame(a)&& +this.ms.am[a].isBioModel&&this.ms.am[a].recalculateLeadMidpointsAndWingVectors()},"~N");d(b,"setAllConformation",function(a){this.vwr.ms.recalculatePositionDependentQuantities(a,null);for(var e=this.ms.getModelBS(a,!1),c=e.nextSetBit(0);0<=c;c=e.nextSetBit(c+1))if(this.ms.am[c].isBioModel){var g=this.ms.am[c];if(0e.nextSetBit(0)||(c=this.ms.getSequenceBits(a.substring(b,++b),null,new JU.BS),0>c.nextSetBit(0)||this.calcAllRasmolHydrogenBonds(e,c,g,!0,1,!1,null,0));a=new JU.BS;for(b=g.size();0<=--b;)e=g.get(b),a.set(e.atom1.i),a.set(e.atom2.i);return a},"~S");d(b,"getAllUnitIds",function(a,e,c){var g=this.unitIdSets;if(null==g){for(var g=this.unitIdSets=Array(7),b=0;7>b;b++)g[b]=new java.util.Hashtable;for(b=this.ms.mc;0<=--b;){var d=this.ms.am[b];if(d.isBioModel){this.ms.isTrajectory(b)&&(d=this.ms.am[b= +d.trajectoryBaseIndex]);var j="|"+this.ms.getInfo(b,"modelNumber");this.checkMap(g[0],this.ms.getInfo(b,"modelName")+j,d.bsAtoms);this.checkMap(g[0],j,d.bsAtoms)}}}var j=d=null,l=new JU.BS;a=JU.PT.getTokens(JU.PT.replaceAllCharacters(a,', \t\n[]"='," "));for(var k=D(8,0),b=a.length;0<=--b;){var p=a[b]+"|";if(!(5>p.length)){for(var m=0,h=0,n=0,A=p.lastIndexOf("|")+1;hn;h++)"|"==p.charAt(h)?k[n++]=h:m|=1<=a,j=this.ms.at,l=-32==a,k=d&&!l?String.fromCharCode(-a):"\x00";if(d){a=-2147483648;for(var p="\x00",m=-2147483648,h=new java.util.Hashtable,d=c.nextSetBit(0);0<=d;d=c.nextSetBit(d+1)){var n=j[d],A=n.getChainID(),u=n.getResno(),v=n.getInsertionCode();if(u!=m||v!=p||A!=a)a=A,m=u,p=v,h.clear();u=n.getAtomName();A=h.get(u);null==A&&h.put(u,A=D(1,0));u=A[0]-1;0>u?-2==u?c.clear(d):l?"\x00"!=n.altloc&&c.clear(d):A[0]=d+1:(f?(c.clear(d), +A[0]=-1):n.altloc==k?A[0]=-1:u=d,c.clear(u))}}else{a--;f=null;l="\x00";k=a;p=new JU.BS;for(d=c.nextSetBit(0);0<=d;d=c.nextSetBit(d+1))n=j[d],m=n.altloc,"\x00"!=m&&(n.group!==f&&(f=n.group,l="\x00",k=a,p.clearAll()),0<=k&&(m!=l&&!p.get(m.charCodeAt(0)))&&(l=m,k--,p.set(m.charCodeAt(0))),(0<=k||m!=l)&&c.clear(d))}if(0<=c.nextSetBit(0)&&(b.or(c),e))for(e=this.bioPolymerCount;0<=--e;)this.bioPolymers[e].setConformation(c)}},"~N,~B,JU.BS,JU.BS");d(b,"getDefaultLargePDBRendering",function(a,e){var c=new JU.BS; +0==this.getBondCount()&&(c=this.bsAtoms);if(c!==this.bsAtoms)for(var b=0;bc.nextSetBit(0))){var f=new JU.BS;if(c===this.bsAtoms)f=c;else for(b=0;bthis.modelIndex)return"";var a=this.auxiliaryInfo.get("fileHeader");return null!=a?a:this.ms.bioModelset.getBioExt().getFullPDBHeader(this.auxiliaryInfo)});d(b,"getPdbData",function(a,e,c,b,f,d,j,l){this.ms.bioModelset.getBioExt().getPdbDataM(this,this.vwr,a,e,c,b,f,d,j,l)},"~S,~S,~B,JU.BS,JU.OC,~A,JU.SB,JU.BS"); +d(b,"getRasmolHydrogenBonds",function(a,e,c,b,f,d,j,l){var k=null==c;k&&(c=new JU.Lst);0>f&&(f=2147483647);var p;if(null==e&&0a;a++)e.append(",[").append(JM.BioResolver.predefinedGroup3Names[a]).append("]");e.append(",[AHR],[ALL],[AMU],[ARA],[ARB],[BDF],[BDR],[BGC],[BMA],[FCA],[FCB],[FRU],[FUC],[FUL],[GAL],[GLA],[GLC],[GXL],[GUP],[LXC],[MAN],[RAM],[RIB],[RIP],[XYP],[XYS],[CBI],[CT3],[CTR],[CTT],[LAT],[MAB],[MAL],[MLR],[MTT],[SUC],[TRE],[GCU],[MTL],[NAG],[NDG],[RHA],[SOR],[SOL],[SOE],[XYL],[A2G],[LBT],[NGA],[SIA],[SLB],[AFL],[AGC],[GLB],[NAN],[RAA]"); +JM.BioResolver.group3Count=w(e.length()/6);JM.Group.standardGroupList=e.toString();a=0;for(e=JM.BioResolver.predefinedGroup3Names.length;a=b;--k){var p=j[k].atomID;0>=p||(14>p&&(l|=1<f?-1:f+c;f=null;e=this.ml.getFirstAtomIndex(e);var d=this.ms.ac;if(0>c){if(1==d-e)return;f=this.vwr.getLigandModel(b,"ligand_","_data",null);if(null==f)return;c=a.getHydrogenAtomCount(f);if(1>c)return}this.getBondInfo(a,b,f);this.ms.am[this.ms.at[e].mi].isPdbWithMultipleBonds=!0;if(!this.haveHsAlready){this.bsAtomsForHs.setBits(e,d);this.bsAddedHydrogens.setBits(d,d+c);a=this.ms.at[e].isHetero();b=JU.P3.new3(NaN,NaN,NaN);e=this.ms.at[e];for(f=0;f< +c;f++)this.ms.addAtom(e.mi,e.group,1,"H",null,0,e.getSeqID(),0,b,NaN,null,0,0,1,0,null,a,0,null,NaN).$delete(null)}}},"J.api.JmolAdapter,~N,~N");d(b,"getBondInfo",function(a,e,c){if(null==this.htGroupBonds.get(e)&&(a=null==c?this.getPdbBondInfo(e,this.vwr.getBoolean(603979873)):this.getLigandBondInfo(a,c,e),null!=a)){this.htGroupBonds.put(e,Boolean.TRUE);for(c=0;ca[0].compareTo(e[0])?-1:0a[3].compareTo(e[3])?-1:0a[1].compareTo(e[1])?-1:0this.bsAddedHydrogens.nextSetBit(0))){this.bsAddedMask=JU.BSUtil.copy(this.bsAddedHydrogens);this.finalizePdbCharges();for(var a=D(1,0),a=this.ms.calculateHydrogens(this.bsAtomsForHs,a,null,256),e=null,c=0,b,f=0;fl?(JU.Logger.info("Error adding H atoms to "+j+d.getResno()+": expected to only need 1 H but needed 2"),d=j="H"):0>p?(j=k.substring(0,l),d=k.substring(l+1)):(d=k.substring(0,l),j=k.substring(l+1));this.setHydrogen(f,++c,d,a[f][0]);this.setHydrogen(f,++c,j,a[f][1]);break;case 3:d=k.indexOf("|"),0<=d?(j=k.lastIndexOf("|"),this.hNames[0]=k.substring(0,d),this.hNames[1]=k.substring(d+1,j), +this.hNames[2]=k.substring(j+1)):(this.hNames[0]=k.$replace("?","1"),this.hNames[1]=k.$replace("?","2"),this.hNames[2]=k.$replace("?","3")),this.setHydrogen(f,++c,this.hNames[0],a[f][0]),this.setHydrogen(f,++c,this.hNames[1],a[f][2]),this.setHydrogen(f,++c,this.hNames[2],a[f][1])}}}this.deleteUnneededAtoms();this.ms.fixFormalCharges(JU.BSUtil.newBitSet2(this.ml.baseAtomIndex,this.ml.ms.ac))}});d(b,"deleteUnneededAtoms",function(){for(var a=new JU.BS,e=this.bsAtomsForHs.nextSetBit(0);0<=e;e=this.bsAtomsForHs.nextSetBit(e+ +1)){var c=this.ms.at[e];if(c.isHetero()&&!(8!=c.getElementNumber()||0!=c.getFormalCharge()||2!=c.getCovalentBondCount())){var b=c.bonds,f=b[0].getOtherAtom(c),c=b[1].getOtherAtom(c);1==f.getElementNumber()&&(b=f,f=c,c=b);if(1==c.getElementNumber())for(var b=f.bonds,d=0;d=this.ml.baseAtomIndex&&(f.firstAtomIndex=e[f.firstAtomIndex],f.lastAtomIndex=e[f.lastAtomIndex], +0<=f.leadAtomIndex&&(f.leadAtomIndex=e[f.leadAtomIndex]));this.ms.adjustAtomArrays(c,this.ml.baseAtomIndex,b);this.ms.calcBoundBoxDimensions(null,1);this.ms.resetMolecules();this.ms.validateBspf(!1);this.bsAddedMask=JU.BSUtil.deleteBits(this.bsAddedMask,a);for(j=this.ml.baseModelIndex;j(e=this.bsAtomsForHs.nextClearBit(e+1)))break}});d(b,"finalizePdbMultipleBonds",function(){for(var a=new java.util.Hashtable,e=this.ms.bondCount,c=this.ms.bo,b=this.baseBondIndex;b< +e;b++){var f=c[b].atom1,d=c[b].atom2,j=f.group;if(j===d.group){var l=(new JU.SB).append(j.getGroup3());l.append(":");f=f.getAtomName();d=d.getAtomName();0l.indexOf(":"))a.put(l,Boolean.TRUE);else{var k=this.htBondMap.get(l); +JU.Logger.info("bond "+l+" was not used; order="+k);this.htBondMap.get(l).equals("1")&&a.put(l,Boolean.TRUE)}j=new java.util.Hashtable;for(b=this.htBondMap.keySet().iterator();b.hasNext()&&((l=b.next())||1);)null==a.get(l)&&j.put(l.substring(0,l.lastIndexOf(":")),this.htBondMap.get(l));if(!j.isEmpty())for(b=0;bd)return null;c=Array(d);for(j=0;jc;c++)null!=(m=l[n=JM.BioResolver.mytypes[c]])&&!m.isEmpty()&&k.addStructureByBS(0,n,JM.BioResolver.types[c],m)}else{var l=a.getStartChainID(),s=a.getStartSequenceNumber(),A=a.getStartInsertionCode();n=a.getEndSequenceNumber();m=a.getEndChainID();a=a.getEndInsertionCode();e=e===J.c.STR.NOT?J.c.STR.NONE:e;s=JM.Group.getSeqcodeFor(s, +A);n=JM.Group.getSeqcodeFor(n,a);null==this.bsAssigned&&(this.bsAssigned=new JU.BS);a=k;for(A=0;a<=j;a++)if(r(k=h[a],"JM.BioModel"))k.addSecondaryStructure(e,c,b,f,l,s,m,n,(A=k.firstAtomIndex)+d[0],A+d[1],this.bsAssigned)}},"J.api.JmolAdapterStructureIterator");d(b,"setGroupLists",function(a){this.ml.group3Lists[a+1]=JM.Group.standardGroupList;this.ml.group3Counts[a+1]=D(JM.BioResolver.group3Count+10,0);null==this.ml.group3Lists[0]&&(this.ml.group3Lists[0]=JM.Group.standardGroupList,this.ml.group3Counts[0]= +D(JM.BioResolver.group3Count+10,0))},"~N");d(b,"isKnownPDBGroup",function(a,e){var c=JM.BioResolver.knownGroupID(a);return 0c||c>JM.BioResolver.pdbBondInfo.length)return null;var b=JM.BioResolver.pdbBondInfo[c];if(e&&0<=(c=b.indexOf("O3'")))b=b.substring(0,c);for(var f=JU.PT.getTokens(b),c=Array(w(f.length/2)),d=0,j=0;da||42<=w(a/6)+1},"~S");d(b,"toStdAmino3",function(a){if(0==a.length)return"";var e=new JU.SB,c=JM.BioResolver.knownGroupID("==A");if(0>c)for(var b=1;20>=b;b++)c=JM.BioResolver.knownGroupID(JM.BioResolver.predefinedGroup3Names[b]),JM.BioResolver.htGroup.put("=="+JM.BioResolver.predefinedGroup1Names[b],Short.$valueOf(c));for(var b=0,f=a.length;bc&&(c= +23),e.append(" ").append(JM.BioResolver.predefinedGroup3Names[c]);return e.toString().substring(1)},"~S");d(b,"getGroupID",function(a){return JM.BioResolver.getGroupIdFor(a)},"~S");b.getGroupIdFor=d(b,"getGroupIdFor",function(a){null!=a&&(a=a.trim());var e=JM.BioResolver.knownGroupID(a);return-1==e?JM.BioResolver.addGroup3Name(a):e},"~S");b.addGroup3Name=d(b,"addGroup3Name",function(a){JM.BioResolver.group3NameCount==JM.Group.group3Names.length&&(JM.Group.group3Names=JU.AU.doubleLengthS(JM.Group.group3Names)); +var e=JM.BioResolver.group3NameCount++;JM.Group.group3Names[e]=a;JM.BioResolver.htGroup.put(a,Short.$valueOf(e));return e},"~S");b.getStandardPdbHydrogenCount=d(b,"getStandardPdbHydrogenCount",function(a){a=JM.BioResolver.knownGroupID(a);return 0>a||a>=JM.BioResolver.pdbHydrogenCount.length?-1:JM.BioResolver.pdbHydrogenCount[a]},"~S");b.getSpecialAtomName=d(b,"getSpecialAtomName",function(a){return JM.BioResolver.specialAtomNames[a]},"~N");d(b,"getArgbs",function(a){switch(a){case 2097166:return JM.BioResolver.argbsNucleic; +case 2097154:return JM.BioResolver.argbsAmino;case 1073742144:return JM.BioResolver.argbsShapely;case 1153433601:return JM.BioResolver.argbsChainAtom;case 1612709894:return JM.BioResolver.argbsChainHetero}return null},"~N");d(b,"getBioModelSet",function(a){null==a.bioModelset&&(a.bioModelset=(new JM.BioModelSet).set(this.vwr,a));return a.bioModelset},"JM.ModelSet");b.htGroup=new java.util.Hashtable;b.types=P(-1,[J.c.STR.HELIXPI,J.c.STR.HELIXALPHA,J.c.STR.SHEET,J.c.STR.HELIX310,J.c.STR.TURN]);b.mytypes= +D(-1,[0,2,3,4,6]);b.htPdbBondInfo=null;b.pdbBondInfo=P(-1,";N N CA HA C O CB HB?;N N CA HA C O CB B CG G CD D NE HE CZ NH1 NH1 HH11@HH12 NH2 HH22@HH21;N N CA HA C O CB B CG OD1 ND2 HD21@HD22;N N CA HA C O CB B CG OD1;N N CA HA C O CB B SG HG;N N CA HA C O CB B CG G CD OE1 NE2 HE22@HE21;N N CA HA C O CB B CG G CD OE1;N N CA HA2@HA3 C O;N N CA HA C O CB B CG CD2 ND1 CE1 ND1 HD1 CD2 HD2 CE1 HE1 NE2 HE2;N N CA HA C O CB HB CG1 HG13@HG12 CG2 HG2? CD1 HD1?;N N CA HA C O CB B CG HG CD1 HD1? CD2 HD2?;N N CA HA C O CB B CG G CD HD2@HD3 CE HE3@HE2 NZ HZ?;N N CA HA C O CB B CG G CE HE?;N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 CD2 HD2 CE1 CZ CE1 HE1 CE2 HE2 CZ HZ;N H CA HA C O CB B CG G CD D;N N CA HA C O CB B OG HG;N N CA HA C O CB HB OG1 HG1 CG2 HG2?;N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 NE1 HE1 CE3 CZ3 CE3 HE3 CZ2 CH2 CZ2 HZ2 CZ3 HZ3 CH2 HH2;N N CA HA C O CB B CG CD1 CD1 HD1 CD2 CE2 CD2 HD2 CE1 CZ CE1 HE1 CE2 HE2 OH HH;N N CA HA C O CB HB CG1 HG1? CG2 HG2?;N N CA HA C O CB B;N N CA HA C O CB B CG G;;P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 N2 H22@H21 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 C4 N4 H41@H42 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 N1 N6 H61@H62 C2 N3 C2 H2 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C7 H7? C6 H6 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 C2 H2 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 N2 H22@H21 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 C4 N4 H41@H42 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 N1 N6 H61@H62 C2 N3 C2 H2 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C7 H7? C6 H6 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5';P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 N1 H1 C2 N3 C2 H2 O3' HO3' O5' HO5'".split(";")); +b.pdbHydrogenCount=D(-1,[0,6,16,7,6,6,9,8,4,9,12,12,14,10,10,8,6,8,11,10,10,3,5,0,13,13,13,-1,12,12,13,13,13,14,12,12]);b.group3Count=0;b.predefinedGroup1Names=aa(-1,"\x00ARNDCQEGHILKMFPSTWYVAG?GCATUIGCATUIGCATUI".split(""));b.group3NameCount=0;b.predefinedGroup3Names=P(-1," ;ALA;ARG;ASN;ASP;CYS;GLN;GLU;GLY;HIS;ILE;LEU;LYS;MET;PHE;PRO;SER;THR;TRP;TYR;VAL;ASX;GLX;UNK;G ;C ;A ;T ;U ;I ;DG ;DC ;DA ;DT ;DU ;DI ;+G ;+C ;+A ;+T ;+U ;+I ;HOH;DOD;WAT;UREA;PO4;SO4;UNL".split(";"));b.specialAtomNames= +P(-1,[null,"N","CA","C","O","O1","O5'","C5'","C4'","C3'","O3'","C2'","C1'","P","OD1","OD2","OE1","OE2","SG",null,null,null,null,null,null,null,null,null,null,null,null,null,"N1","C2","N3","C4","C5","C6","O2","N7","C8","N9","N4","N2","N6","C5M","O6","O4","S4","C7","H1","H2","H3",null,null,null,null,null,null,null,null,null,null,null,"OXT","H","1H","2H","3H","HA","1HA","2HA","H5T","O5T","O1P","OP1","O2P","OP2","O4'","O2'","1H5'","2H5'","H4'","H3'","1H2'","2H2'","2HO'","H1'","H3T","HO3'","HO5'","HA2", +"HA3","HA2","H5'","H5''","H2'","H2''","HO2'","O3P","OP3"]);b.ATOMID_MAX=JM.BioResolver.specialAtomNames.length;b.htSpecialAtoms=null;b.argbsAmino=D(-1,[4290682990,4291348680,4279524095,4278246620,4293265930,4293322240,4278246620,4293265930,4293651435,4286743250,4279206415,4279206415,4279524095,4293322240,4281479850,4292646530,4294612480,4294612480,4290009780,4281479850,4279206415,4294928820,4294928820,4290682990]);b.argbsNucleic=D(-1,[4290682990,4288716960,4279206415,4293322240,4293265930,4279524095, +4278246620,4278246620,4279206415,4293322240,4293265930,4279524095,4278246620,4278246620,4279206415,4293322240,4293265930,4279524095,4278246620,4278246620]);b.argbsChainAtom=D(-1,[4294967295,4290826495,4289789872,4294951112,4294967168,4294951167,4289786096,4294955120,4293951616,4294303411,4278239231,4291648604,4284927402,4288335154,4293821166,4278243025,4278255487,4282168177,4278190219,4290623339,4278215680,4286578688,4286611456,4286578816,4278222976,4290283019,4289864226]);b.argbsChainHetero=D(-1, +[4294967295,-7298865,-8335464,-3174224,-3158160,-3174193,-8339264,-3170208,-4173712,-3821949,-16734257,-4895668,-11094638,-7686870,-4296002,-16730463,-16724113,-13329567,-16777029,-5922981,-16739328,-5242880,-5197824,-5242704,-16731984,-1526253,-4050382]);b.argbsShapely=D(-1,[4294902015,4278190204,4294933616,4287430540,4288675906,4294967152,4294921292,4284874752,4294967295,4285559039,4278209536,4282736197,4282861496,4283649106,4290289730,4283585106,4294930498,4290268160,4283385344,4287393868,4294937855, +4294902015,4294902015,4294902015,4294930544,4294937675,4288717055,4288741280,4294934656,4286644223,4294930544,4294937675,4288717055,4288741280,4294934656,4286644223,4294930544,4294937675,4288717055,4288741280,4294934656,4286644223])});s("JM");t(["JM.Monomer"],"JM.CarbohydrateMonomer",["J.c.STR"],function(){var b=H(JM,"CarbohydrateMonomer",JM.Monomer);ba(b,function(){});b.validateAndAllocate=d(b,"validateAndAllocate",function(a,e,c,b,f){return(new JM.CarbohydrateMonomer).set2(a,e,c,b,f,JM.CarbohydrateMonomer.alphaOffsets)}, +"JM.Chain,~S,~N,~N,~N");h(b,"isCarbohydrate",function(){return!0});h(b,"getProteinStructureType",function(){return J.c.STR.CARBOHYDRATE});h(b,"isConnectedAfter",function(a){if(null==a)return!0;for(var e=this.firstAtomIndex;e<=this.lastAtomIndex;e++)for(var c=a.firstAtomIndex;c<=a.lastAtomIndex;c++){var b=this.chain.model.ms.at[e],f=this.chain.model.ms.at[c];if(null!=b&&null!=f&&14==b.getElementNumber()+f.getElementNumber()&&3.24>b.distanceSquared(f))return!0}return!1},"JM.Monomer");h(b,"findNearestAtomIndex", +function(a,e,c,b){var f=c[0],d=this.getLeadAtom();b=w(b/2);1200>b&&(b=1200);0!=d.sZ&&(b=n(this.scaleToScreen(d.sZ,b)),4>b&&(b=4),this.isCursorOnTopOf(d,a,e,b,f)&&(c[0]=d))},"~N,~N,~A,~N,~N");h(b,"isConnectedPrevious",function(){if(0>=this.monomerIndex)return!1;for(var a=this.firstAtomIndex;a<=this.lastAtomIndex;a++)if(this.getCrossLinkGroup(a,null,null,!0,!1,!1))return!0;return!1});b.alphaOffsets=K(-1,[0])});s("JM");t(["JM.BioPolymer"],"JM.CarbohydratePolymer",null,function(){var b=H(JM,"CarbohydratePolymer", +JM.BioPolymer);F(b,function(a){R(this,JM.CarbohydratePolymer,[a,!1]);this.type=3},"~A")});s("JM");t(["JM.Monomer"],"JM.PhosphorusMonomer",["JU.Quat","$.V3","J.c.STR"],function(){var b=H(JM,"PhosphorusMonomer",JM.Monomer);ba(b,function(){});h(b,"isNucleic",function(){return!0});b.validateAndAllocateP=d(b,"validateAndAllocateP",function(a,e,c,b,f,d){return b!=f||d[13]!=b?null:(new JM.PhosphorusMonomer).set2(a,e,c,b,f,JM.PhosphorusMonomer.phosphorusOffsets)},"JM.Chain,~S,~N,~N,~N,~A");h(b,"isDna",function(){return this.isDnaByID()}); +h(b,"isRna",function(){return this.isRnaByID()});h(b,"isPurine",function(){return this.isPurineByID()});h(b,"isPyrimidine",function(){return this.isPyrimidineByID()});h(b,"getStructure",function(){return this.chain});h(b,"getProteinStructureType",function(){return J.c.STR.NONE});h(b,"isConnectedAfter",function(a){return this.isCA2(a)},"JM.Monomer");d(b,"isCA2",function(a){return null==a?!0:this.getLeadAtom().distance(a.getLeadAtom())<=JM.PhosphorusMonomer.MAX_ADJACENT_PHOSPHORUS_DISTANCE},"JM.Monomer"); +h(b,"getQuaternion",function(){return this.getQuaternionP()},"~S");d(b,"getQuaternionP",function(){var a=this.monomerIndex;if(0>=a||a>=this.bioPolymer.monomerCount-1)return null;var e=this.bioPolymer.monomers[a].getAtomFromOffsetIndex(0),c;c=this.bioPolymer.monomers[a+1].getAtomFromOffsetIndex(0);a=this.bioPolymer.monomers[a-1].getAtomFromOffsetIndex(0);if(null==e||null==c||null==a)return null;var b=new JU.V3,f=new JU.V3;b.sub2(c,e);f.sub2(a,e);return JU.Quat.getQuaternionFrameV(b,f,null,!1)});h(b, +"getQuaternionFrameCenter",function(){return this.getAtomFromOffsetIndex(0)},"~S");h(b,"getHelixData",function(a,e,c){return this.getHelixData2(a,e,c)},"~N,~S,~N");b.phosphorusOffsets=K(-1,[0]);b.MAX_ADJACENT_PHOSPHORUS_DISTANCE=8});s("JM");M=z(function(){this.g2=this.g1=this.info=null;y(this,arguments)},JM,"BasePair",null);M.add=d(M,"add",function(b,a,e){if(null==a||null==e)return null;var c=new JM.BasePair;c.info=b;(c.g1=a).addBasePair(c);(c.g2=e).addBasePair(c);return c},"java.util.Map,JM.NucleicMonomer,JM.NucleicMonomer"); +d(M,"getPartnerAtom",function(b){return(b===this.g1?this.g2:this.g1).getLeadAtom().i},"JM.NucleicMonomer");d(M,"toString",function(){return this.info.toString()});s("JM");t(["JM.PhosphorusMonomer"],"JM.NucleicMonomer","JU.A4 $.Lst $.M3 $.P3 $.Quat $.V3 J.c.STR JM.Group JM.NucleicPolymer".split(" "),function(){var b=z(function(){this.hasRnaO2Prime=this.$isPyrimidine=this.$isPurine=!1;this.dssrBox=this.bps=this.baseCenter=null;this.dssrBoxHeight=0;this.dssrFrame=null;y(this,arguments)},JM,"NucleicMonomer", +JM.PhosphorusMonomer);ba(b,function(){});b.validateAndAllocate=d(b,"validateAndAllocate",function(a,e,c,b,f,d){var j=JM.Monomer.scanForOffsets(b,d,JM.NucleicMonomer.interestingNucleicAtomIDs);if(null==j||!JM.Monomer.checkOptional(j,19,b,d[73]))return null;JM.Monomer.checkOptional(j,20,b,d[89]);JM.Monomer.checkOptional(j,18,b,d[90]);JM.Monomer.checkOptional(j,23,b,d[75]);JM.Monomer.checkOptional(j,24,b,d[77]);return(new JM.NucleicMonomer).set4(a,e,c,b,f,j)},"JM.Chain,~S,~N,~N,~N,~A");d(b,"set4",function(a, +e,c,b,f,d){this.set2(a,e,c,b,f,d);JM.Monomer.have(d,15)||(d[0]=d[19],this.setLeadAtomIndex());this.hasRnaO2Prime=JM.Monomer.have(d,2);this.$isPyrimidine=JM.Monomer.have(d,8);this.$isPurine=JM.Monomer.have(d,9)&&JM.Monomer.have(d,10)&&JM.Monomer.have(d,11);return this},"JM.Chain,~S,~N,~N,~N,~A");h(b,"isNucleicMonomer",function(){return!0});h(b,"isDna",function(){return!this.hasRnaO2Prime});h(b,"isRna",function(){return this.hasRnaO2Prime});h(b,"isPurine",function(){return this.$isPurine||!this.$isPyrimidine&& +this.isPurineByID()});h(b,"isPyrimidine",function(){return this.$isPyrimidine||!this.$isPurine&&this.isPyrimidineByID()});d(b,"isGuanine",function(){return JM.Monomer.have(this.offsets,17)});h(b,"getProteinStructureType",function(){return this.hasRnaO2Prime?J.c.STR.RNA:J.c.STR.DNA});d(b,"getP",function(){return this.getAtomFromOffsetIndex(0)});d(b,"getC1P",function(){return this.getAtomFromOffsetIndex(25)});d(b,"getC2",function(){return this.getAtomFromOffsetIndex(5)});d(b,"getC5",function(){return this.getAtomFromOffsetIndex(3)}); +d(b,"getC6",function(){return this.getAtomFromOffsetIndex(1)});d(b,"getC8",function(){return this.getAtomFromOffsetIndex(10)});d(b,"getC4P",function(){return this.getAtomFromOffsetIndex(27)});d(b,"getN1",function(){return this.getAtomFromOffsetIndex(4)});d(b,"getN3",function(){return this.getAtomFromOffsetIndex(6)});d(b,"getN2",function(){return this.getAtomFromOffsetIndex(17)});d(b,"getN4",function(){return this.getAtomFromOffsetIndex(14)});d(b,"getN6",function(){return this.getAtomFromOffsetIndex(16)}); +d(b,"getO2",function(){return this.getAtomFromOffsetIndex(8)});d(b,"getO4",function(){return this.getAtomFromOffsetIndex(12)});d(b,"getO6",function(){return this.getAtomFromOffsetIndex(13)});h(b,"getTerminatorAtom",function(){return this.getAtomFromOffsetIndex(JM.Monomer.have(this.offsets,20)?20:21)});d(b,"getBaseRing6Points",function(a){this.getPoints(JM.NucleicMonomer.ring6OffsetIndexes,a)},"~A");d(b,"getPoints",function(a,e){for(var c=a.length;0<=--c;)e[c]=this.getAtomFromOffsetIndex(a[c])},"~A,~A"); +d(b,"maybeGetBaseRing5Points",function(a){this.$isPurine&&this.getPoints(JM.NucleicMonomer.ring5OffsetIndexes,a);return this.$isPurine},"~A");d(b,"getRiboseRing5Points",function(a){this.getPoints(JM.NucleicMonomer.riboseOffsetIndexes,a)},"~A");h(b,"isConnectedAfter",function(a){if(null==a)return!0;var e=this.getAtomFromOffsetIndex(15);return null==e?!1:a.getAtomFromOffsetIndex(21).isBonded(e)||this.isCA2(a)},"JM.Monomer");h(b,"findNearestAtomIndex",function(a,e,c,b){var f=c[0],d=this.getLeadAtom(), +j=this.getAtomFromOffsetIndex(19),l=this.getAtomFromOffsetIndex(22);b=w(b/2);1900>b&&(b=1900);b=n(this.scaleToScreen(d.sZ,b));4>b&&(b=4);if(this.isCursorOnTopOf(d,a,e,b,f)||this.isCursorOnTopOf(j,a,e,b,f)||this.isCursorOnTopOf(l,a,e,b,f))c[0]=d},"~N,~N,~A,~N,~N");d(b,"setRingsVisible",function(a){for(var e=6;0<=--e;)this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring6OffsetIndexes[e]).setShapeVisibility(32768,a);if(this.$isPurine)for(e=4;1<=--e;)this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring5OffsetIndexes[e]).setShapeVisibility(32768, +a)},"~B");d(b,"setRingsClickable",function(){for(var a=6;0<=--a;)this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring6OffsetIndexes[a]).setClickable(32768);if(this.$isPurine)for(a=4;1<=--a;)this.getAtomFromOffsetIndex(JM.NucleicMonomer.ring5OffsetIndexes[a]).setClickable(32768)});d(b,"getN0",function(){return this.getAtomFromOffsetIndex(this.$isPurine?11:4)});h(b,"getHelixData",function(a,e,b){return this.getHelixData2(a,e,b)},"~N,~S,~N");h(b,"getQuaternionFrameCenter",function(a){switch(a.charCodeAt(0)){case 120:case 97:case 98:case 112:return this.getP(); +case 99:if(null==this.baseCenter){a=0;this.baseCenter=new JU.P3;for(var e=0;ea&&(a+=360);0>f&&(f+=360);b.setGroupParameter(1111490565,a);b.setGroupParameter(1111490576,f)}return!0});h(b,"calcRasmolHydrogenBonds",function(a,e,b,g,f){for(var d=new JU.V3,j=new JU.V3,l=this.monomerCount;0<=--l;){var k=this.monomers[l];if(k.isPurine()){var h=k.getN3(),m=e.get(h.i);if(m||b.get(h.i)){for(var n=k.getN1(),s=k.getN0(),A=JU.Measure.getPlaneThroughPoints(h,n,s,d,j,new JU.P4),h=null,u=25,v=null,w=a.monomerCount;0<=--w;){var r=a.monomers[w];if(r.$isPyrimidine){var t=r.getN3(); +if(!(m?!b.get(t.i):!e.get(t.i))){var y=r.getN0(),E=n.distanceSquared(t);EMath.abs(JU.Measure.distanceToPlane(A,t)))&&(v=r,h=t,u=E)}}}m=0;null!=h&&(m+=JM.NucleicPolymer.addHydrogenBond(g,n,h),m>=f||(k.isGuanine()?(m+=JM.NucleicPolymer.addHydrogenBond(g,k.getN2(),v.getO2()),m>=f||JM.NucleicPolymer.addHydrogenBond(g,k.getO6(),v.getN4())):JM.NucleicPolymer.addHydrogenBond(g,k.getN6(),v.getO4())))}}}},"JM.BioPolymer,JU.BS,JU.BS,JU.Lst,~N,~A,~B,~B");b.addHydrogenBond=d(b, +"addHydrogenBond",function(a,e,b){if(null==e||null==b)return 0;a.addLast(new JM.HBond(e,b,18432,1,0,0));return 1},"JU.Lst,JM.Atom,JM.Atom");b.htGroup1=null});s("JM");M=z(function(){this.g2=this.g1=this.info=null;y(this,arguments)},JM,"BasePair",null);M.add=d(M,"add",function(b,a,e){if(null==a||null==e)return null;var c=new JM.BasePair;c.info=b;(c.g1=a).addBasePair(c);(c.g2=e).addBasePair(c);return c},"java.util.Map,JM.NucleicMonomer,JM.NucleicMonomer");d(M,"getPartnerAtom",function(b){return(b=== +this.g1?this.g2:this.g1).getLeadAtom().i},"JM.NucleicMonomer");d(M,"toString",function(){return this.info.toString()});s("JM");t(["JM.BioPolymer"],"JM.PhosphorusPolymer",null,function(){var b=H(JM,"PhosphorusPolymer",JM.BioPolymer);F(b,function(a){R(this,JM.PhosphorusPolymer,[a,!0])},"~A")});s("J.dssx");t(null,"J.dssx.Bridge",["JU.Escape"],function(){var b=z(function(){this.ladder=this.b=this.a=null;this.isAntiparallel=!1;y(this,arguments)},J.dssx,"Bridge",null);F(b,function(a,e,b){this.a=a;this.b= +e;this.ladder=D(2,2,0);this.ladder[0][0]=this.ladder[0][1]=Math.min(a.i,e.i);this.ladder[1][0]=this.ladder[1][1]=Math.max(a.i,e.i);this.addLadder(b)},"JM.Atom,JM.Atom,java.util.Map");d(b,"addBridge",function(a,e){if(a.isAntiparallel!=this.isAntiparallel||!this.canAdd(a)||!a.canAdd(this))return!1;this.extendLadder(a.ladder[0][0],a.ladder[1][0]);this.extendLadder(a.ladder[0][1],a.ladder[1][1]);a.ladder=this.ladder;a.ladder!==this.ladder&&(e.remove(a.ladder),this.addLadder(e));return!0},"J.dssx.Bridge,java.util.Map"); +d(b,"addLadder",function(a){a.put(this.ladder,this.isAntiparallel?Boolean.TRUE:Boolean.FALSE)},"java.util.Map");d(b,"canAdd",function(a){var e=a.a.i;a=a.b.i;return this.isAntiparallel?e>=this.ladder[0][1]&&a<=this.ladder[1][0]||e<=this.ladder[0][0]&&a>=this.ladder[1][1]:e<=this.ladder[0][0]&&a<=this.ladder[1][0]||e>=this.ladder[0][1]&&a>=this.ladder[1][1]},"J.dssx.Bridge");d(b,"extendLadder",function(a,e){this.ladder[0][0]>a&&(this.ladder[0][0]=a);this.ladder[0][1] +e&&(this.ladder[1][0]=e);this.ladder[1][1]f;f++)for(var q=0==f?1:0;6>q;q++)this.checkBridge(a,b,f*c,q*d),q>f&&this.checkBridge(a,b,q*c,f*d)},"J.dssx.Bridge,~B,~N");d(b,"dumpSummary",function(a,b){for(var c=a.monomers[0].getLeadAtom(),c=0==c.getChainID()?"":c.getChainIDStr()+":",d=new JU.SB,f="\x00",q="\x00",j="\x00",l=-1,k=-1,h=a.monomerCount,m=a.monomers,n=0;n<=h;n++){if(n==h||b[n]!=f){"\x00"!=f&&d.appendC("\n").appendC(f).append(" : ").append(c).appendI(l).append("\x00"==q?"":String.valueOf(q)).append("_").append(c).appendI(k).append("\x00"== +j?"":String.valueOf(j));if(n==h)break;f=b[n];l=m[n].getResno();q=m[n].getInsertionCode()}k=m[n].getResno();j=m[n].getInsertionCode()}return d.toString()},"JM.AminoPolymer,~A");d(b,"dumpTags",function(a,b,c,d){var f=a.monomers[0].getLeadAtom().getChainID()+"."+(a.bioPolymerIndexInModel+1);b=JU.PT.rep(b,"$",f);for(var q=a.monomers[0].getResno(),j="\n"+f,f=new JU.SB,l=(new JU.SB).append(j+".8: "),k=(new JU.SB).append(j+".7: "),h=(new JU.SB).append(j+".6: "),j=(new JU.SB).append(j+".0: "),m=a.monomerCount, +n=0;na||0>b)return null;c=f[c];f=f[d];return a>=c.length||b>=f.length? +null:c[a][0][0]==d&&c[a][0][1]==b?c[a][0]:c[a][1][0]==d&&c[a][1][1]==b?c[a][1]:null},"~N,~N,~N,~N,~A");d(b,"findHelixes",function(a,b){var c=this.bioPolymers[a];if(JU.Logger.debugging)for(var d=0;d=E&&B<=C.leadAtomIndex)){h.set(t);m.setBits(t+1,r);s.set(r);var B=u.nextSetBit(t),E=0>B||B>=r,z=!1;if(0"),this.setTag(d,s,"<"),this.setTag(d,n,"X")):d=null;u.or(A);m.andNot(u);j.or(m);j.andNot(A);this.setStructure&&k.setStructureBS(0,a,f,A,!1);return this.doReport?(this.setTag(this.labels[b],A,String.fromCharCode(68+c)),String.valueOf(d)+v):""},"~N,~N,~N,~A,J.c.STR,~N,JU.BS,~B");d(b,"setTag",function(a,b,c){for(var d=b.nextSetBit(0);0<=d;d=b.nextSetBit(d+1))a[d]=c},"~A,JU.BS,~S")});s("J.g3d");t(["J.g3d.G3DRenderer","JU.P3", +"$.V3"],"J.g3d.HermiteRenderer",["JU.Lst","$.P3i"],function(){var b=z(function(){this.needToFill=this.depth1=this.T2=this.T1=this.d2=this.d1=this.c2=this.c1=this.b2=this.b1=this.a2=this.a1=this.pBotRight=this.pBotLeft=this.pTopRight=this.pTopLeft=this.sRight=this.sLeft=this.pRight=this.pLeft=this.gdata=this.g3d=null;y(this,arguments)},J.g3d,"HermiteRenderer",null,J.g3d.G3DRenderer);X(b,function(){this.pLeft=Array(16);this.pRight=Array(16);this.sLeft=N(16,0);this.sRight=N(16,0);this.pTopLeft=Array(16); +this.pTopRight=Array(16);this.pBotLeft=Array(16);this.pBotRight=Array(16);for(var a=16;0<=--a;)this.pLeft[a]=new JU.P3i,this.pRight[a]=new JU.P3i,this.pTopLeft[a]=new JU.P3,this.pTopRight[a]=new JU.P3,this.pBotLeft[a]=new JU.P3,this.pBotRight[a]=new JU.P3;this.a1=new JU.P3;this.a2=new JU.P3;this.b1=new JU.P3;this.b2=new JU.P3;this.c1=new JU.P3;this.c2=new JU.P3;this.d1=new JU.P3;this.d2=new JU.P3;this.T1=new JU.V3;this.T2=new JU.V3;this.depth1=new JU.V3;this.needToFill=fa(16,!1)});F(b,function(){}); +h(b,"set",function(a,b){this.g3d=a;this.gdata=b;return this},"J.api.JmolRendererInterface,JU.GData");d(b,"renderHermiteRope",function(a,b,c,d,f,q,j,l,k){var h=n(j.z),m=n(l.z);if(!(1==q.z||1==h||1==m||1==k.z)&&!this.gdata.isClippedZ(h)&&!this.gdata.isClippedZ(m)){var s=n(j.x);j=n(j.y);var r=n(l.x);l=n(l.y);var t=w((r-n(q.x))*b/8),u=w((l-n(q.y))*b/8);q=w((m-n(q.z))*b/8);var v=w((n(k.x)-s)*b/8),y=w((n(k.y)-j)*b/8);b=w((n(k.z)-h)*b/8);this.sLeft[0]=0;this.pLeft[0].set(s,j,h);this.sRight[0]=1;this.pRight[0].set(r, +l,m);var z=k=0,D=0;a&&(z=2*(d-c),D=2*(f-d));do{var F=this.pLeft[k];f=this.pRight[k];var E=f.x-F.x;if(-1<=E&&1>=E&&(f=f.y-F.y,-1<=f&&1>=f)){f=this.sLeft[k];a?(f=0.5>f?c+n(z*f):d+n(D*(f-0.5)),this.g3d.fillSphereI(f,F)):this.g3d.plotPixelClippedP3i(F);--k;continue}f=(this.sLeft[k]+this.sRight[k])/2;var B=f*f,C=B*f,F=2*C-3*B+1,E=-2*C+3*B,H=C-2*B+f,B=C-B;if(15<=k)break;C=this.pRight[k+1];C.x=w(F*s+E*r+H*t+B*v);C.y=w(F*j+E*l+H*u+B*y);C.z=w(F*h+E*m+H*q+B*b);this.pRight[k+1]=this.pRight[k];this.sRight[k+ +1]=this.sRight[k];this.pRight[k]=C;this.sRight[k]=f;++k;this.pLeft[k].setT(C);this.sLeft[k]=f}while(0<=k)}},"~B,~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3");d(b,"renderHermiteRibbon",function(a,b,c,d,f,q,j,h,k,p,m,s,r){if(!(1==d.z||1==f.z||1==q.z||1==j.z||1==h.z||1==k.z||1==p.z||1==m.z))if(a){(a=0>c)&&(c=-c);var t=1/s,u=n(f.x),v=n(f.y);f=n(f.z);var y=n(q.x),z=n(q.y);q=n(q.z);var D=w((y-n(d.x))*c/8),F=w((z-n(d.y))*c/8);d=w((q-n(d.z))*c/8);var E=w((n(j.x)-u)*c/8),B=w((n(j.y)-v)*c/8);j=w((n(j.z)-f)*c/8);this.pTopLeft[0].set(u, +v,f);this.pTopRight[0].set(y,z,q);var C=n(k.x),H=n(k.y);k=n(k.z);var S=n(p.x),P=n(p.y);p=n(p.z);var Q=w((S-n(h.x))*c/8),N=w((P-n(h.y))*c/8);h=w((p-n(h.z))*c/8);var ha=w((n(m.x)-C)*c/8),K=w((n(m.y)-H)*c/8);c=w((n(m.z)-k)*c/8);this.pBotLeft[0].set(C,H,k);this.pBotRight[0].set(S,P,p);this.sLeft[0]=0;this.sRight[0]=1;this.needToFill[0]=!0;m=0;var M=!1;do{var L=this.pTopLeft[m],O=this.pTopRight[m],T=O.x-L.x,T=T*T;if(10>T){var U=O.y-L.y,U=U*U;if(10>U){var I=this.pBotLeft[m],G=this.pBotRight[m],V=G.x-I.x, +V=V*V;if(8>V){var W=G.y-I.y,W=W*W;if(8>W&&(b&&(this.g3d.fillSphereBits(3,L),this.g3d.fillSphereBits(3,I)),this.needToFill[m]&&(0T+U&&2>V+W)){--m;continue}}}}L=(this.sLeft[m]+this.sRight[m])/2;I=L*L;G=I*L;O=2*G-3*I+1;T=-2*G+3*I;U=G-2*I+L;I=G-I;if(15<=m)break;G=m+1;V=this.pTopRight[G];V.x=O*u+T*y+U*D+I*E;V.y=O*v+T*z+U*F+I*B;V.z=O*f+T*q+U*d+I*j;W=this.pBotRight[G];W.x=O*C+T*S+U*Q+I*ha;W.y=O*H+T*P+U*N+I*K;W.z=O*k+T*p+U*h+I*c;this.pTopRight[G]=this.pTopRight[m]; +this.pTopRight[m]=V;this.pBotRight[G]=this.pBotRight[m];this.pBotRight[m]=W;this.sRight[G]=this.sRight[m];this.sRight[m]=L;this.needToFill[G]=this.needToFill[m];this.pTopLeft[G].setT(V);this.pBotLeft[G].setT(W);this.sLeft[G]=L;++m}while(0<=m);M&&(this.a1.z+=1,this.c1.z+=1,this.c2.z+=1,this.a2.z+=1,this.g3d.fillQuadrilateral(this.a1,this.c1,this.c2,this.a2,!1))}else c=Math.abs(c),this.renderParallelPair(a,c,d,f,q,j,h,k,p,m)},"~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N");b.isFront= +d(b,"isFront",function(a,b,c){J.g3d.HermiteRenderer.vAB.sub2(b,a);J.g3d.HermiteRenderer.vAC.sub2(c,a);J.g3d.HermiteRenderer.vAB.cross(J.g3d.HermiteRenderer.vAB,J.g3d.HermiteRenderer.vAC);return 0>J.g3d.HermiteRenderer.vAB.z?-1:1},"JU.P3,JU.P3,JU.P3");d(b,"renderParallelPair",function(a,b,c,d,f,q,j,h,k,p){var m=P(-1,[f,d,k,h]);a=new JU.Lst;var s=0,r=2,t=0,u=n(d.x),v=n(d.y);d=n(d.z);var y=n(f.x),z=n(f.y);f=n(f.z);var D=w((y-n(c.x))*b/8),F=w((z-n(c.y))*b/8);c=w((f-n(c.z))*b/8);var E=w((n(q.x)-u)*b/8), +B=w((n(q.y)-v)*b/8);q=w((n(q.z)-d)*b/8);this.sLeft[0]=0;this.pLeft[0].set(u,v,d);this.sRight[0]=1;this.pRight[0].set(y,z,f);for(var C=0,H=2;0=Q*Q+M*M)Q=this.sLeft[C],this.g3d.fillSphereI(3,S),Q<1-t&&(Q=new JU.P3,Q.set(S.x,S.y,S.z),a.addLast(Q),t+=0.2,2==H&&r++),--C;else{var Q=(this.sLeft[C]+this.sRight[C])/2,N=Q*Q,K=N*Q,S=2*K-3*N+1,M=-2*K+3*N,R=K-2*N+Q,N=K-N;if(15<=C)break;K=this.pRight[C+1];K.x=w(S*u+M*y+R*D+N*E);K.y=w(S*v+M*z+R*F+N*B);K.z=w(S*d+M*f+R*c+N*q);this.pRight[C+1]=this.pRight[C];this.sRight[C+1]=this.sRight[C];this.pRight[C]=K;this.sRight[C]=Q;++C;this.pLeft[C].setT(K);this.sLeft[C]=Q}}while(0<=C);a.addLast(m[s++])}b= +a.size();for(j=0;jthis.bfactorMax&& +(this.bfactorMax=b)}this.floatRange=this.range=this.bfactorMax-this.bfactorMin;this.hasBfactorRange=!0});d(b,"calcMeanPositionalDisplacement",function(a){return ga(1E3*Math.sqrt(a/7895.6835208714865))},"~N");h(b,"findNearestAtomIndex",function(a,b,c,d){this.bioPolymer.findNearestAtomIndex(a,b,c,this.mads,this.shape.vf,d)},"~N,~N,~A,JU.BS");d(b,"setMad",function(a,b,c){if(!(2>this.monomerCount)){this.isActive=!0;null==this.bsSizeSet&&(this.bsSizeSet=new JU.BS);for(var d=this.shape.vf,f=32768==d&&r(this.bioPolymer, +"JM.NucleicPolymer"),h=this.monomerCount;0<=--h;){var j=this.leadAtomIndices[h];if(b.get(j)){if(null!=c&&jc||1d&&(this.colixesBack[d]=0),this.paletteIDs[d]=b,this.bsColixSet.setBitTo(d,0!=this.colixes[d]))}},"~N,~N,JU.BS");d(b,"setColixBack",function(a,b){null==this.colixesBack&&(this.colixesBack= +ca(this.colixes.length,0));this.colixesBack.lengthd&&(this.colixesBack[d]=JU.C.getColixTranslucent3(this.colixesBack[d],a,c)),this.bsColixSet.setBitTo(d,0!=this.colixes[d]))},"~B,JU.BS,~N");h(b,"setAtomClickability",function(){if(this.isActive&&!(null==this.wingVectors||0==this.monomerCount))for(var a=r(this.bioPolymer,"JM.NucleicPolymer")&&11==this.shape.shapeID,b=r(this.bioPolymer,"JM.AlphaPolymer")||15!=this.shape.shapeID,c=this.monomers[0].chain.model.ms,d=this.monomerCount;0<=--d;)if(!(0>= +this.mads[d])){var f=this.leadAtomIndices[d];c.isAtomHidden(f)||(b&&c.at[f].setClickable(1040384),a&&this.monomers[d].setRingsClickable())}});d(b,"getBioShapeState",function(a,b,c,d){if(0f&&0!=this.colixesBack[f])&&(l+=" "+JU.C.getHexCode(this.colixesBack[f]));JU.BSUtil.setMapBitSet(d,h,j,l)}}},"~S,~B,java.util.Map,java.util.Map");h(b,"getShapeState",function(){return null})});s("J.shapebio");t(["J.shape.Shape"], +"J.shapebio.BioShapeCollection","java.util.Hashtable JU.AU J.c.PAL J.shapebio.BioShape JU.BSUtil $.C JV.JC".split(" "),function(){var b=z(function(){this.atoms=null;this.madOn=-2;this.madHelixSheet=3E3;this.madTurnRandom=800;this.madDnaRna=5E3;this.isActive=!1;this.bioShapes=null;y(this,arguments)},J.shapebio,"BioShapeCollection",J.shape.Shape);h(b,"initModelSet",function(){this.isBioShape=!0;this.atoms=this.ms.at;this.initialize()});h(b,"initShape",function(){});h(b,"getSizeG",function(a){var b= +a.groupIndex;a=a.getLeadAtom().i;for(var c=this.bioShapes.length;0<=--c;)for(var d=this.bioShapes[c],f=0;fc?(b.modelIndex--, +b.leadAtomIndices=b.bioPolymer.getLeadAtomIndices()):b.modelIndex==c&&(this.bioShapes=JU.AU.deleteElements(this.bioShapes,a,1))}else if(this.initialize(),"color"===a){var d=J.c.PAL.pidOf(b),f=JU.C.getColixO(b);for(a=this.bioShapes.length;0<=--a;)b=this.bioShapes[a],0l&&(l=p)}var p=f/c,c=Math.sqrt((h-f*f/c)/c),f=a[1],h=a[2],m=a[3],r=a[4],s=a[5],t=n(a[6]),l=l-j,u=!1;switch(t){case 0:case 1:case 2:case 3:u=!0}for(k=b.nextSetBit(0);0<=k;k=b.nextSetBit(k+1)){var v=this.atoms[k].atomPropertyFloat(null,1111492620,null);switch(t){case 0:case 4:v=1+(v-p)/h/c;break;case 1:case 5:v=(v-j)/l/h;break;case 2:case 6:v/=h;break;case 8:0>v&&(v=0),v=Math.sqrt(v/8)/3.141592653589793}0>v&&(v=0);u&&(v=Math.pow(v,s));vr&&0<=r&&(v=r);d[k]=v*f}d=new J.atomdata.RadiusData(d, +0,J.atomdata.RadiusData.EnumType.ABSOLUTE,J.c.VDW.AUTO);this.setShapeSizeRD(0,d,b)}},"~A,JU.BS")});s("J.renderbio");t(["J.render.ShapeRenderer","JU.BS","$.P3"],"J.renderbio.BioShapeRenderer",["javajs.api.Interface","J.c.STR","JU.C"],function(){var b=z(function(){this.haveControlPointScreens=this.ribbonBorder=this.isTraceAlpha=this.invalidateSheets=this.invalidateMesh=!1;this.sheetSmoothing=this.hermiteLevel=this.aspectRatio=0;this.cartoonsFancy=!1;this.monomerCount=0;this.monomers=null;this.isCarbohydrate= +this.isPhosphorusOnly=this.isNucleic=!1;this.structureTypes=this.colixesBack=this.colixes=this.mads=this.wingVectors=this.leadAtomIndices=this.controlPointScreens=this.controlPoints=this.ribbonBottomScreens=this.ribbonTopScreens=this.bsVisible=null;this.needTranslucent=this.wireframeOnly=this.isHighRes=!1;this.pointT=this.bioShape=this.meshRenderer=null;this.colixBack=this.madEnd=this.madMid=this.madBeg=this.diameterEnd=this.diameterMid=this.diameterBeg=this.iNext3=this.iNext2=this.iNext=this.iPrev= +0;this.reversed=null;this.isCyclic=!1;this.screenArrowBotPrev=this.screenArrowBot=this.screenArrowTopPrev=this.screenArrowTop=null;y(this,arguments)},J.renderbio,"BioShapeRenderer",J.render.ShapeRenderer);X(b,function(){this.bsVisible=new JU.BS;this.pointT=new JU.P3;this.screenArrowTop=new JU.P3;this.screenArrowTopPrev=new JU.P3;this.screenArrowBot=new JU.P3;this.screenArrowBotPrev=new JU.P3});h(b,"render",function(){if(null==this.shape)return!1;this.setGlobals();this.renderShapes();return this.needTranslucent}); +d(b,"setGlobals",function(){this.needTranslucent=this.invalidateMesh=!1;this.g3d.addRenderer(553648143);var a=!this.isExport&&!this.vwr.checkMotionRendering(1112152066);a!=this.wireframeOnly&&(this.invalidateMesh=!0);this.wireframeOnly=a;a=this.isExport||!this.wireframeOnly&&this.vwr.getBoolean(603979864);a!=this.isHighRes&&(this.invalidateMesh=!0);this.isHighRes=a;a=!this.wireframeOnly&&(this.vwr.getBoolean(603979816)||this.isExport);this.cartoonsFancy!=a&&(this.invalidateMesh=!0,this.cartoonsFancy= +a);a=this.vwr.getHermiteLevel();a=0>=a?-a:this.vwr.getInMotion(!0)?0:a;this.cartoonsFancy&&!this.wireframeOnly&&(a=Math.max(a,3));a!=this.hermiteLevel&&(this.invalidateMesh=!0);this.hermiteLevel=Math.min(a,8);var b=this.vwr.getInt(553648166),b=Math.min(Math.max(0,b),20);this.cartoonsFancy&&16<=b&&(b=4);if(this.wireframeOnly||0==this.hermiteLevel)b=0;b!=this.aspectRatio&&(0!=b&&0!=a)&&(this.invalidateMesh=!0);this.aspectRatio=b;0>1}else{if(!b||this.structureTypes[a]===this.structureTypes[this.iPrev])this.madBeg=(0==this.mads[this.iPrev]?this.madMid:this.mads[this.iPrev])+this.madMid>>1;if(!b||this.structureTypes[a]===this.structureTypes[this.iNext])this.madEnd= +(0==this.mads[this.iNext]?this.madMid:this.mads[this.iNext])+this.madMid>>1}this.diameterBeg=n(this.vwr.tm.scaleToScreen(n(this.controlPointScreens[a].z),this.madBeg));this.diameterMid=n(this.vwr.tm.scaleToScreen(this.monomers[a].getLeadAtom().sZ,this.madMid));this.diameterEnd=n(this.vwr.tm.scaleToScreen(n(this.controlPointScreens[this.iNext].z),this.madEnd));var c=a==this.iPrev||!this.bsVisible.get(this.iPrev)||b&&this.structureTypes[a]!==this.structureTypes[this.iPrev],d=this.iNext==this.iNext2|| +this.iNext2==this.iNext3||!this.bsVisible.get(this.iNext)||b&&this.structureTypes[a]!==this.structureTypes[this.iNext];return 0>=1);0>p?this.g3d.drawLine(c,d,h,j,a,l,k,b):(f=n(this.isExport?p:this.vwr.tm.scaleToScreen(w((a+b)/2),p)),this.g3d.fillCylinderXYZ(c, +d,3,f,h,j,a,l,k,b))},"JM.Atom,JM.Atom,~N,~N,~N")});s("J.renderbio");t(["J.renderbio.BioShapeRenderer"],"J.renderbio.StrandsRenderer",null,function(){var b=z(function(){this.strandCount=1;this.baseStrandOffset=this.strandSeparation=0;y(this,arguments)},J.renderbio,"StrandsRenderer",J.renderbio.BioShapeRenderer);h(b,"renderBioShape",function(){this.renderStrandShape()},"J.shapebio.BioShape");d(b,"renderStrandShape",function(){this.setStrandCount()&&this.renderStrands()});d(b,"setStrandCount",function(){if(null== +this.wingVectors)return!1;this.strandCount=r(this.shape,"J.shapebio.Strands")?this.vwr.getStrandCount(this.shape.shapeID):10;this.strandSeparation=1>=this.strandCount?0:1/(this.strandCount-1);this.baseStrandOffset=0==(this.strandCount&1)?this.strandSeparation/2:this.strandSeparation;return!0});d(b,"renderStrands",function(){for(var a,b=this.strandCount>>1;0<=--b;){var c=b*this.strandSeparation+this.baseStrandOffset;a=this.calcScreens(c,this.mads);this.renderStrand(a);this.vwr.freeTempPoints(a);a= +this.calcScreens(-c,this.mads);this.renderStrand(a);this.vwr.freeTempPoints(a)}1==this.strandCount%2&&(a=this.calcScreens(0,this.mads),this.renderStrand(a),this.vwr.freeTempPoints(a))});d(b,"renderStrand",function(a){for(var b=this.bsVisible.nextSetBit(0);0<=b;b=this.bsVisible.nextSetBit(b+1))this.renderHermiteCylinder(a,b)},"~A")});s("J.renderbio");t(["J.renderbio.MeshRibbonRenderer"],"J.renderbio.RibbonsRenderer",null,function(){var b=H(J.renderbio,"RibbonsRenderer",J.renderbio.MeshRibbonRenderer); +h(b,"renderBioShape",function(){null!=this.wingVectors&&(this.wireframeOnly?this.renderStrands():this.render2Strand(!0,this.isNucleic?1:0.5,this.isNucleic?0:0.5))},"J.shapebio.BioShape")});s("J.renderbio");t(["J.renderbio.StrandsRenderer"],"J.renderbio.MeshRibbonRenderer",null,function(){var b=H(J.renderbio,"MeshRibbonRenderer",J.renderbio.StrandsRenderer);h(b,"renderBioShape",function(){this.wireframeOnly?this.renderStrands():this.renderMeshRibbon()},"J.shapebio.BioShape");d(b,"renderMeshRibbon", +function(){if(this.setStrandCount()){var a=(this.strandCount>>1)*this.strandSeparation+this.baseStrandOffset;this.render2Strand(!1,a,a);this.renderStrands()}});d(b,"render2Strand",function(a,b,c){this.calcScreenControlPoints();this.ribbonTopScreens=this.calcScreens(b,this.mads);this.ribbonBottomScreens=this.calcScreens(-c,this.mads);for(b=this.bsVisible.nextSetBit(0);0<=b;b=this.bsVisible.nextSetBit(b+1))this.renderHermiteRibbon(a,b,!1);this.vwr.freeTempPoints(this.ribbonTopScreens);this.vwr.freeTempPoints(this.ribbonBottomScreens)}, +"~B,~N,~N")});s("J.renderbio");t(null,"J.renderbio.NucleicRenderer",["JU.P3","JU.C"],function(){var b=z(function(){this.cartoonBlocks=this.cartoonBaseEdges=!1;this.blockHeight=0;this.cartoonRibose=this.cartoonLadders=!1;this.bsr=this.g3d=this.tm=this.vwr=this.ptTemp=this.backboneScreen=this.baseScreen=this.backbonePt=this.basePt=this.rScr5=this.rScr=this.rPt5=this.rPt=null;this.colix=0;this.cartoonSteps=!1;this.triangles=this.scrBox=null;y(this,arguments)},J.renderbio,"NucleicRenderer",null);X(b, +function(){this.triangles=D(-1,[1,0,3,1,3,2,0,4,7,0,7,3,4,5,6,4,6,7,5,1,2,5,2,6,2,3,7,2,7,6,0,1,5,0,5,4])});F(b,function(){});d(b,"renderNucleic",function(a){null==this.vwr&&(this.rPt=Array(10),this.rScr=Array(10),this.rPt5=Array(5),this.rScr5=Array(5),this.backboneScreen=new JU.P3,this.backbonePt=new JU.P3,this.bsr=a,this.tm=a.vwr.tm,this.vwr=a.vwr);this.g3d=a.g3d;var b=a.controlPointScreens;a=a.controlPoints;this.cartoonBlocks=this.vwr.getBoolean(603979810);this.cartoonBaseEdges=this.vwr.getBoolean(603979815); +this.cartoonSteps=this.vwr.getBoolean(603979811);this.cartoonLadders=this.vwr.getBoolean(603979817);this.cartoonRibose=this.vwr.getBoolean(603979818);this.blockHeight=this.vwr.getFloat(570425347);for(var c=this.vwr.getBoolean(603979966),d=this.bsr.bsVisible,f=d.nextSetBit(0);0<=f;f=d.nextSetBit(f+1)){var h=b[f+1];c?(this.backboneScreen.ave(b[f],h),this.backbonePt.ave(a[f],a[f+1])):(this.backboneScreen.setT(h),this.backbonePt.setT(a[f+1]));this.bsr.renderHermiteConic(f,!1,4);this.colix=this.bsr.getLeadColix(f); +this.bsr.setBioColix(this.colix)&&(this.cartoonRibose&&d.get(f+1)?this.renderNucleicBaseStep(f,a[f+1],b[f+1]):this.renderNucleicBaseStep(f,null,null))}},"J.renderbio.BioShapeRenderer");d(b,"renderNucleicBaseStep",function(a,b,c){if(!this.bsr.isPhosphorusOnly){var d=this.bsr.monomers[a],f=this.bsr.mad=this.bsr.mads[a];if(null==this.rScr[0]){for(var h=10;0<=--h;)this.rScr[h]=new JU.P3;for(h=5;0<=--h;)this.rScr5[h]=new JU.P3;this.baseScreen=new JU.P3;this.basePt=new JU.P3;this.rPt[9]=new JU.P3}if(this.cartoonBlocks)this.renderBlock(d); +else if(this.cartoonBaseEdges)this.renderLeontisWesthofEdges(d);else if(this.cartoonSteps)this.renderSteps(d,a);else{d.getBaseRing6Points(this.rPt);this.transformPoints(6,this.rPt,this.rScr);this.cartoonLadders||this.renderRing6();var j;(a=d.maybeGetBaseRing5Points(this.rPt5))?this.cartoonLadders?(h=this.rScr[2],j=this.rPt[2]):(this.transformPoints(5,this.rPt5,this.rScr5),this.renderRing5(),h=this.rScr5[3],j=this.rPt5[3]):(j=this.cartoonLadders?4:2,h=this.rScr[j],j=this.rPt[j]);var l=1h;h++)d.add(this.rPt[h]);d.scale(0.2); +this.transformPoints(10,this.rPt,this.rScr);this.renderRibose();this.renderEdge(this.rScr,this.rPt,2,5);this.renderEdge(this.rScr,this.rPt,3,6);this.renderEdge(this.rScr,this.rPt,6,7);this.renderEdge(this.rScr,this.rPt,7,8);this.renderEdge(this.rScr,this.rPt,0,4);this.renderCyl(this.rScr[0],this.baseScreen,this.rPt[0],this.basePt);null!=b&&this.renderCyl(this.rScr[5],c,this.rPt[5],b);this.drawEdges(this.rScr,this.rPt,5)}}}},"~N,JU.T3,JU.T3");d(b,"renderSteps",function(a,b){var c=a.getBasePairs(), +d=a.getLeadAtom(),f=JU.C.getColixInherited(this.colix,d.colixAtom);if(null!=c)for(var h=!this.bsr.isExport&&!this.vwr.gdata.isPass2,j=this.vwr.ms.at,l=c.size();0<=--l;){var k=c.get(l).getPartnerAtom(a);if(k>b){var k=j[k],n=JU.C.getColixInherited(this.colix,k.colixAtom);(!h||this.bsr.setBioColix(f)||this.bsr.setBioColix(n))&&this.bsr.drawSegmentAB(d,k,f,n,1E3)}}},"JM.NucleicMonomer,~N");d(b,"transformPoints",function(a,b,c){for(;0<=--a;)this.tm.transformPtScrT3(b[a],c[a])},"~N,~A,~A");d(b,"drawEdges", +function(a,b,c){for(var d=c;0<=--d;)a[d].z--;for(d=c;0<--d;)this.renderEdge(a,b,d,d-1)},"~A,~A,~N");d(b,"renderBlock",function(a){var b=a.getLeadAtom(),c=this.colix;if(null==this.scrBox){this.scrBox=Array(8);for(var d=0;8>d;d++)this.scrBox[d]=new JU.P3}var f=a.getDSSRFrame(this.vwr),h=a.dssrBox,d=a.dssrBoxHeight,j=a.isPurine();if(null==h||d!=this.blockHeight){a.dssrBoxHeight=this.blockHeight;if(null==h){h=Array(8);for(d=8;0<=--d;)h[d]=new JU.P3;a.dssrBox=h}d=this.vwr.getSymTemp().getUnitCell(f,!1, +null);null==this.ptTemp&&(this.ptTemp=new JU.P3);this.ptTemp.setT(f[0]);d.toFractional(this.ptTemp,!0);d.setOffsetPt(JU.P3.new3(this.ptTemp.x-2.25,this.ptTemp.y+5,this.ptTemp.z-this.blockHeight/2));f=j?-4.5:-3;j=this.blockHeight;d.toCartesian(h[0]=JU.P3.new3(0,0,0),!1);d.toCartesian(h[1]=JU.P3.new3(4.5,0,0),!1);d.toCartesian(h[2]=JU.P3.new3(4.5,f,0),!1);d.toCartesian(h[3]=JU.P3.new3(0,f,0),!1);d.toCartesian(h[4]=JU.P3.new3(0,0,j),!1);d.toCartesian(h[5]=JU.P3.new3(4.5,0,j),!1);d.toCartesian(h[6]=JU.P3.new3(4.5, +f,j),!1);d.toCartesian(h[7]=JU.P3.new3(0,f,j),!1)}for(d=0;8>d;d++)this.vwr.tm.transformPt3f(h[d],this.scrBox[d]);for(d=0;36>d;)this.g3d.fillTriangle3f(this.scrBox[this.triangles[d++]],this.scrBox[this.triangles[d++]],this.scrBox[this.triangles[d++]],!1);h=a.getC1P();a=a.getN0();null!=h&&null!=a&&(this.bsr.drawSegmentAB(b,h,c,c,1E3),this.bsr.drawSegmentAB(h,a,c,c,1E3))},"JM.NucleicMonomer");d(b,"renderLeontisWesthofEdges",function(a){if(a.getEdgePoints(this.rPt)){this.transformPoints(6,this.rPt,this.rScr); +this.renderTriangle(this.rScr,this.rPt,2,3,4,!0);this.renderEdge(this.rScr,this.rPt,0,1);this.renderEdge(this.rScr,this.rPt,1,2);var b=JU.C.isColixTranslucent(this.colix),c=JU.C.getColixTranslucencyLevel(this.colix);a=JU.C.getColixTranslucent3(10,b,c);var d=JU.C.getColixTranslucent3(11,b,c),b=JU.C.getColixTranslucent3(7,b,c);this.g3d.setC(a);this.renderEdge(this.rScr,this.rPt,2,3);this.g3d.setC(d);this.renderEdge(this.rScr,this.rPt,3,4);this.g3d.setC(b);this.renderEdge(this.rScr,this.rPt,4,5)}},"JM.NucleicMonomer"); +d(b,"renderEdge",function(a,b,c,d){this.renderCyl(a[c],a[d],b[c],b[d])},"~A,~A,~N,~N");d(b,"renderCyl",function(a,b,c,d){this.g3d.fillCylinderScreen3I(3,3,a,b,c,d,0.005)},"JU.P3,JU.P3,JU.P3,JU.P3");d(b,"renderTriangle",function(a,b,c,d,f,h){this.g3d.fillTriangle3i(a[c],a[d],a[f],b[c],b[d],b[f],h)},"~A,~A,~N,~N,~N,~B");d(b,"renderRing6",function(){this.renderTriangle(this.rScr,this.rPt,0,2,4,!0);this.renderTriangle(this.rScr,this.rPt,0,1,2,!1);this.renderTriangle(this.rScr,this.rPt,0,4,5,!1);this.renderTriangle(this.rScr, +this.rPt,2,3,4,!1)});d(b,"renderRing5",function(){this.renderTriangle(this.rScr5,this.rPt5,0,1,2,!1);this.renderTriangle(this.rScr5,this.rPt5,0,2,3,!1);this.renderTriangle(this.rScr5,this.rPt5,0,3,4,!1)});d(b,"renderRibose",function(){this.renderTriangle(this.rScr,this.rPt,0,1,9,!0);this.renderTriangle(this.rScr,this.rPt,1,2,9,!0);this.renderTriangle(this.rScr,this.rPt,2,3,9,!0);this.renderTriangle(this.rScr,this.rPt,3,4,9,!0);this.renderTriangle(this.rScr,this.rPt,4,0,9,!0)})});s("J.renderbio"); +t(["J.renderbio.StrandsRenderer"],"J.renderbio.RocketsRenderer",["javajs.api.Interface","JU.P3","J.c.STR"],function(){var b=z(function(){this.isRockets=!1;this.helixRockets=!0;this.renderArrowHeads=!1;this.rr=this.cordMidPoints=null;y(this,arguments)},J.renderbio,"RocketsRenderer",J.renderbio.StrandsRenderer);h(b,"renderBioShape",function(a){this.setupRR(a,!0)&&(this.calcRopeMidPoints(),this.renderRockets(),this.vwr.freeTempPoints(this.cordMidPoints))},"J.shapebio.BioShape");d(b,"renderRockets",function(){null== +this.rr&&(this.rr=javajs.api.Interface.getInterface("J.renderbio.RocketRenderer").set(this));this.rr.renderRockets()});d(b,"setupRR",function(a,b){this.isRockets=b;if(this.wireframeOnly)this.renderStrands();else if(null!=this.wingVectors&&!this.isCarbohydrate&&(!b||!this.isNucleic)){var c=!this.vwr.getBoolean(603979902);!this.isNucleic&&this.renderArrowHeads!=c&&(a.falsifyMesh(),this.renderArrowHeads=c);return!0}return!1},"J.shapebio.BioShape,~B");d(b,"calcRopeMidPoints",function(){this.cordMidPoints= +this.vwr.allocTempPoints(this.monomerCount+1);for(var a=null,b,c=-10,d=new JU.P3,f=new JU.P3,h=0;h<=this.monomerCount;++h)if(b=this.cordMidPoints[h],hf.distanceSquared(l)))h=JU.C.getColixInherited(h,f.colixAtom),j=JU.C.getColixInherited(j,l.colixAtom),(!b||this.setBioColix(h)||this.setBioColix(j))&&this.drawSegmentAB(f,l, +h,j,100)}},"J.shapebio.BioShape")});s("J.renderbio");t(["J.renderbio.StrandsRenderer"],"J.renderbio.TraceRenderer",null,function(){var b=H(J.renderbio,"TraceRenderer",J.renderbio.StrandsRenderer);h(b,"renderBioShape",function(){this.wireframeOnly?this.renderStrands():this.renderTrace()},"J.shapebio.BioShape");d(b,"renderTrace",function(){this.calcScreenControlPoints();for(var a=this.bsVisible.nextSetBit(0);0<=a;a=this.bsVisible.nextSetBit(a+1))this.renderHermiteConic(a,!1,7)})})})(Clazz,Clazz.getClassName, +Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coreconsole.js b/config/plugins/visualizations/jmol/static/j2s/core/coreconsole.js new file mode 100755 index 000000000000..08428acc231d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coreconsole.js @@ -0,0 +1,896 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("J.console"); +Clazz_declareInterface(J.console, "GenericTextArea"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.console"); +Clazz_load(["J.api.JmolAppConsoleInterface", "$.JmolCallbackListener", "java.util.Hashtable"], "J.console.GenericConsole", ["JU.PT", "J.c.CBK", "J.i18n.GT", "JS.T", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.input = null; +this.output = null; +this.vwr = null; +this.menuMap = null; +this.editButton = null; +this.runButton = null; +this.historyButton = null; +this.stateButton = null; +this.clearOutButton = null; +this.clearInButton = null; +this.loadButton = null; +this.defaultMessage = null; +this.label1 = null; +this.nTab = 0; +this.incompleteCmd = null; +Clazz_instantialize(this, arguments);}, J.console, "GenericConsole", null, [J.api.JmolAppConsoleInterface, J.api.JmolCallbackListener]); +Clazz_prepareFields (c$, function(){ +this.menuMap = new java.util.Hashtable(); +}); +Clazz_defineMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +if (J.console.GenericConsole.labels == null) { +var l = new java.util.Hashtable(); +l.put("title", J.i18n.GT.$("Jmol Script Console") + " " + JV.Viewer.getJmolVersion()); +this.setupLabels(l); +J.console.GenericConsole.labels = l; +}}, "JV.Viewer"); +Clazz_defineMethod(c$, "addButton", +function(b, label){ +b.addConsoleListener(this); +this.menuMap.put(label, b); +return b; +}, "J.api.JmolAbstractButton,~S"); +Clazz_defineMethod(c$, "getLabel1", +function(){ +return null; +}); +Clazz_defineMethod(c$, "setupLabels", +function(labels){ +labels.put("saveas", J.i18n.GT.$("&Save As...")); +labels.put("file", J.i18n.GT.$("&File")); +labels.put("close", J.i18n.GT.$("&Close")); +this.setupLabels0(labels); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setupLabels0", +function(labels){ +labels.put("help", J.i18n.GT.$("&Help")); +labels.put("search", J.i18n.GT.$("&Search...")); +labels.put("commands", J.i18n.GT.$("&Commands")); +labels.put("functions", J.i18n.GT.$("Math &Functions")); +labels.put("parameters", J.i18n.GT.$("Set &Parameters")); +labels.put("more", J.i18n.GT.$("&More")); +labels.put("Editor", J.i18n.GT.$("Editor")); +labels.put("State", J.i18n.GT.$("State")); +labels.put("Run", J.i18n.GT.$("Run")); +labels.put("Clear Output", J.i18n.GT.$("Clear Output")); +labels.put("Clear Input", J.i18n.GT.$("Clear Input")); +labels.put("History", J.i18n.GT.$("History")); +labels.put("Load", J.i18n.GT.$("Load")); +labels.put("label1", J.i18n.GT.$("press CTRL-ENTER for new line or paste model data and press Load")); +labels.put("default", J.i18n.GT.$("Messages will appear here. Enter commands in the box below. Click the console Help menu item for on-line help, which will appear in a new browser window.")); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setLabels", +function(){ +var doTranslate = J.i18n.GT.setDoTranslate(true); +this.editButton = this.setButton("Editor"); +this.stateButton = this.setButton("State"); +this.runButton = this.setButton("Run"); +this.clearOutButton = this.setButton("Clear Output"); +this.clearInButton = this.setButton("Clear Input"); +this.historyButton = this.setButton("History"); +this.loadButton = this.setButton("Load"); +this.defaultMessage = J.console.GenericConsole.getLabel("default"); +this.setTitle(); +J.i18n.GT.setDoTranslate(doTranslate); +}); +c$.getLabel = Clazz_defineMethod(c$, "getLabel", +function(key){ +return J.console.GenericConsole.labels.get(key); +}, "~S"); +Clazz_defineMethod(c$, "displayConsole", +function(){ +this.layoutWindow(null); +this.outputMsg(this.defaultMessage); +}); +Clazz_defineMethod(c$, "updateLabels", +function(){ +return; +}); +Clazz_defineMethod(c$, "completeCommand", +function(thisCmd){ +if (thisCmd.length == 0) return null; +var strCommand = (this.nTab <= 0 || this.incompleteCmd == null ? thisCmd : this.incompleteCmd); +this.incompleteCmd = strCommand; +var splitCmd = J.console.GenericConsole.splitCommandLine(thisCmd); +if (splitCmd == null) return null; +var asCommand = splitCmd[2] == null; +var inBrace = (splitCmd[3] != null); +var notThis = splitCmd[asCommand ? 1 : 2]; +var s = splitCmd[1]; +if (notThis.length == 0) return null; +var token = JS.T.getTokenFromName(s.trim().toLowerCase()); +var cmdtok = (token == null ? 0 : token.tok); +var isSelect = JS.T.tokAttr(cmdtok, 12288); +splitCmd = J.console.GenericConsole.splitCommandLine(strCommand); +var cmd = null; +if (!asCommand && (notThis.charAt(0) == '"' || notThis.charAt(0) == '\'')) { +var q = notThis.charAt(0); +notThis = JU.PT.trim(notThis, "\"\'"); +var stub = JU.PT.trim(splitCmd[2], "\"\'"); +cmd = this.nextFileName(stub, this.nTab); +if (cmd != null) cmd = splitCmd[0] + splitCmd[1] + q + cmd + q; +} else { +var map = null; +if (!asCommand) { +notThis = s; +if (inBrace || splitCmd[2].startsWith("$") || isSelect) { +map = new java.util.Hashtable(); +this.vwr.getObjectMap(map, inBrace || isSelect ? '{' : splitCmd[2].startsWith("$") ? '$' : '0'); +}}cmd = JS.T.completeCommand(map, s.equalsIgnoreCase("set "), asCommand, asCommand ? splitCmd[1] : splitCmd[2], this.nTab); +cmd = splitCmd[0] + (cmd == null ? notThis : asCommand ? cmd : splitCmd[1] + cmd); +}return (cmd == null || cmd.equals(strCommand) ? null : cmd); +}, "~S"); +Clazz_defineMethod(c$, "doAction", +function(source){ +if (source === this.runButton) { +this.execute(null); +} else if (source === this.editButton) { +this.vwr.getProperty("DATA_API", "scriptEditor", null); +} else if (source === this.historyButton) { +this.clearContent(this.vwr.getSetHistory(2147483647)); +} else if (source === this.stateButton) { +this.clearContent(this.vwr.getStateInfo()); +} else if (source === this.clearInButton) { +this.input.setText(""); +return; +}if (source === this.clearOutButton) { +this.output.setText(""); +return; +}if (source === this.loadButton) { +this.vwr.loadInlineAppend(this.input.getText(), false); +return; +}if (this.isMenuItem(source)) { +this.execute((source).getName()); +return; +}}, "~O"); +Clazz_defineMethod(c$, "execute", +function(strCommand){ +var cmd = (strCommand == null ? this.input.getText() : strCommand); +if (strCommand == null) this.input.setText(null); +var strErrorMessage = this.vwr.script(cmd + "; ## GUI ##\u0001## EDITOR_IGNORE ##; ## GUI ##"); +if (strErrorMessage != null && !strErrorMessage.equals("pending")) this.outputMsg(strErrorMessage); +}, "~S"); +Clazz_defineMethod(c$, "destroyConsole", +function(){ +if (this.vwr.isApplet) this.vwr.getProperty("DATA_API", "getAppConsole", Boolean.FALSE); +}); +c$.setAbstractButtonLabels = Clazz_defineMethod(c$, "setAbstractButtonLabels", +function(menuMap, labels){ +for (var key, $key = menuMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var m = menuMap.get(key); +var label = labels.get(key); +if (key.indexOf("Tip") == key.length - 3) { +m.setToolTipText(labels.get(key)); +} else { +var mnemonic = J.console.GenericConsole.getMnemonic(label); +if (mnemonic != ' ') m.setMnemonic(mnemonic); +label = J.console.GenericConsole.getLabelWithoutMnemonic(label); +m.setText(label); +}} +}, "java.util.Map,java.util.Map"); +c$.getLabelWithoutMnemonic = Clazz_defineMethod(c$, "getLabelWithoutMnemonic", +function(label){ +if (label == null) { +return null; +}var index = label.indexOf('&'); +if (index == -1) { +return label; +}return label.substring(0, index) + ((index < label.length - 1) ? label.substring(index + 1) : ""); +}, "~S"); +c$.getMnemonic = Clazz_defineMethod(c$, "getMnemonic", +function(label){ +if (label == null) { +return ' '; +}var index = label.indexOf('&'); +if ((index == -1) || (index == label.length - 1)) { +return ' '; +}return label.charAt(index + 1); +}, "~S"); +c$.map = Clazz_defineMethod(c$, "map", +function(button, key, label, menuMap){ +var mnemonic = J.console.GenericConsole.getMnemonic(label); +if (mnemonic != ' ') (button).setMnemonic(mnemonic); +if (menuMap != null) menuMap.put(key, button); +}, "~O,~S,~S,java.util.Map"); +Clazz_overrideMethod(c$, "notifyEnabled", +function(type){ +switch (type) { +case J.c.CBK.ECHO: +case J.c.CBK.MEASURE: +case J.c.CBK.MESSAGE: +case J.c.CBK.PICK: +return true; +case J.c.CBK.ANIMFRAME: +case J.c.CBK.APPLETREADY: +case J.c.CBK.ATOMMOVED: +case J.c.CBK.AUDIO: +case J.c.CBK.CLICK: +case J.c.CBK.DRAGDROP: +case J.c.CBK.ERROR: +case J.c.CBK.EVAL: +case J.c.CBK.HOVER: +case J.c.CBK.IMAGE: +case J.c.CBK.LOADSTRUCT: +case J.c.CBK.MINIMIZATION: +case J.c.CBK.MODELKIT: +case J.c.CBK.SERVICE: +case J.c.CBK.RESIZE: +case J.c.CBK.SCRIPT: +case J.c.CBK.SELECT: +case J.c.CBK.STRUCTUREMODIFIED: +case J.c.CBK.SYNC: +break; +} +return false; +}, "J.c.CBK"); +Clazz_overrideMethod(c$, "notifyCallback", +function(type, data){ +var strInfo = (data == null || data[1] == null ? null : data[1].toString()); +switch (type) { +case J.c.CBK.ECHO: +this.sendConsoleEcho(strInfo); +break; +case J.c.CBK.MEASURE: +var mystatus = data[3]; +if (mystatus.indexOf("Picked") >= 0 || mystatus.indexOf("Sequence") >= 0) this.sendConsoleMessage(strInfo); + else if (mystatus.indexOf("Completed") >= 0) this.sendConsoleEcho(strInfo); +break; +case J.c.CBK.MESSAGE: +this.sendConsoleMessage(data == null ? null : strInfo); +break; +case J.c.CBK.PICK: +this.sendConsoleMessage(strInfo); +break; +} +}, "J.c.CBK,~A"); +Clazz_overrideMethod(c$, "getText", +function(){ +return this.output.getText(); +}); +Clazz_overrideMethod(c$, "sendConsoleEcho", +function(strEcho){ +if (strEcho == null) { +this.updateLabels(); +this.outputMsg(null); +strEcho = this.defaultMessage; +} else if (strEcho.equals("\0")) { +{ +Clazz_Console.clear(); +}strEcho = null; +}this.outputMsg(strEcho); +}, "~S"); +Clazz_defineMethod(c$, "outputMsg", +function(message){ +var n = (message == null ? -1 : message.length); +switch (n) { +case -1: +this.output.setText(""); +return; +default: +if (message.charAt(n - 1) == '\n') break; +case 0: +message += "\n"; +} +this.output.append(message); +}, "~S"); +Clazz_defineMethod(c$, "clearContent", +function(text){ +this.output.setText(text); +}, "~S"); +Clazz_overrideMethod(c$, "sendConsoleMessage", +function(strInfo){ +if (strInfo != null && this.output.getText().startsWith(this.defaultMessage)) this.outputMsg(null); +this.outputMsg(strInfo); +}, "~S"); +Clazz_overrideMethod(c$, "setCallbackFunction", +function(callbackType, callbackFunction){ +}, "~S,~S"); +Clazz_overrideMethod(c$, "zap", +function(){ +}); +Clazz_defineMethod(c$, "recallCommand", +function(up, pageUp){ +var cmd = this.vwr.getSetHistory(up ? -1 : 1); +if (cmd != null) { +cmd = this.trimGUI(cmd); +this.input.setText(JU.PT.escUnicode(cmd)); +}}, "~B,~B"); +Clazz_defineMethod(c$, "trimGUI", +function(cmd){ +var pt = cmd.indexOf("\u0001##"); +if (pt >= 0) cmd = cmd.substring(0, pt); +pt = cmd.indexOf("; ## GUI ##"); +if (pt >= 0) cmd = cmd.substring(0, pt); +return JU.PT.trim(cmd, "; "); +}, "~S"); +Clazz_defineMethod(c$, "processKey", +function(kcode, kid, isControlDown){ +var mode = 0; +switch (kid) { +case 401: +switch (kcode) { +case 9: +var s = this.input.getText(); +if (s.endsWith("\n") || s.endsWith("\t")) return 0; +mode = 1; +if (this.input.getCaretPosition() == s.length) { +var cmd = this.completeCommand(s); +if (cmd != null) this.input.setText(JU.PT.escUnicode(cmd).$replace('\t', ' ')); +this.nTab++; +return mode; +}break; +case 27: +mode = 1; +this.input.setText(""); +break; +} +this.nTab = 0; +if (kcode == 10 && !isControlDown) { +this.execute(null); +return mode; +}if (kcode == 38 || kcode == 40) { +this.recallCommand(kcode == 38, false); +return mode; +}break; +case 402: +if (kcode == 10 && !isControlDown) return mode; +break; +} +return mode | 2; +}, "~N,~N,~B"); +c$.splitCommandLine = Clazz_defineMethod(c$, "splitCommandLine", +function(cmd){ +var sout = new Array(4); +var isEscaped1 = false; +var isEscaped2 = false; +var isEscaped = false; +if (cmd.length == 0) return null; +var ptQ = -1; +var ptCmd = 0; +var ptToken = 0; +var nBrace = 0; +var ch; +for (var i = 0; i < cmd.length; i++) { +switch ((ch = cmd.charAt(i)).charCodeAt(0)) { +case 34: +if (!isEscaped && !isEscaped1) { +isEscaped2 = !isEscaped2; +if (isEscaped2) ptQ = ptToken = i; +}break; +case 39: +if (!isEscaped && !isEscaped2) { +isEscaped1 = !isEscaped1; +if (isEscaped1) ptQ = ptToken = i; +}break; +case 92: +isEscaped = !isEscaped; +continue; +case 32: +if (!isEscaped && !isEscaped1 && !isEscaped2) { +ptToken = i + 1; +ptQ = -1; +}break; +case 59: +if (!isEscaped1 && !isEscaped2) { +ptCmd = ptToken = i + 1; +ptQ = -1; +nBrace = 0; +}break; +case 123: +case 125: +if (!isEscaped1 && !isEscaped2) { +nBrace += (ch == '{' ? 1 : -1); +ptToken = i + 1; +ptQ = -1; +}break; +default: +if (!isEscaped1 && !isEscaped2) ptQ = -1; +} +isEscaped = false; +} +sout[0] = cmd.substring(0, ptCmd); +sout[1] = (ptToken == ptCmd ? cmd.substring(ptCmd) : cmd.substring(ptCmd, (ptToken > ptQ ? ptToken : ptQ))); +sout[2] = (ptToken == ptCmd ? null : cmd.substring(ptToken)); +sout[3] = (nBrace > 0 ? "{" : null); +return sout; +}, "~S"); +c$.labels = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.consolejs"); +Clazz_load(["J.console.GenericConsole"], "J.consolejs.AppletConsole", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.jsConsole = null; +Clazz_instantialize(this, arguments);}, J.consolejs, "AppletConsole", J.console.GenericConsole); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.consolejs.AppletConsole, []); +}); +Clazz_overrideMethod(c$, "start", +function(vwr){ +this.setViewer(vwr); +this.setLabels(); +this.displayConsole(); +}, "JV.Viewer"); +Clazz_overrideMethod(c$, "layoutWindow", +function(enabledButtons){ +{ +this.jsConsole = new Jmol.Console.JSConsole(this); +}this.setTitle(); +}, "~S"); +Clazz_overrideMethod(c$, "setTitle", +function(){ +if (this.jsConsole != null) this.jsConsole.setTitle(J.console.GenericConsole.getLabel("title")); +}); +Clazz_overrideMethod(c$, "setVisible", +function(visible){ +this.jsConsole.setVisible(visible); +}, "~B"); +Clazz_overrideMethod(c$, "setButton", +function(text){ +{ +return new Jmol.Console.Button(text); +}}, "~S"); +Clazz_overrideMethod(c$, "dispose", +function(){ +this.setVisible(false); +}); +Clazz_overrideMethod(c$, "isMenuItem", +function(source){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "getScriptEditor", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "nextFileName", +function(stub, nTab){ +return null; +}, "~S,~N"); +Clazz_overrideMethod(c$, "newJMenu", +function(key){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "newJMenuItem", +function(key){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "regainFocus", +function(){ +}); +{ +{ +;Jmol.Console = { +buttons:{}, +buttonWidth:100, +click:function(id) { +Jmol.Console.buttons[id].console.appletConsole.doAction(Jmol.Console.buttons[id]); +} +} +Jmol.consoleGetImageDialog = function(vwr, title, imageMap) { +// JmolObjectInterface +return new Jmol.Console.Image(vwr, title, imageMap); +} +Jmol.Console.Image = function(vwr, title, imageMap) { +// page designer may indicate one of three divs for images on the page: +// _Image_app_holder for IMAGE command by itself (current app image) +// _Image__holder for IMAGE ID "xxx" ... or IMAGE "xxx" +// where cleaning is with .replace(/\W/g,"_") +// _Image_holder for all images not identified as above +// if a page div is not identified, then the image will be placed in a new floating div +this.vwr = vwr; +this.title = title; +this.imageMap = imageMap; +this.applet = vwr.html5Applet; +var id = this.applet._id + "_Image"; +this.id = id + "_" + (title == "" ? "app" : title).replace(/\W/g,"_"); +var jqobj = Jmol._$(this.id + "_holder"); +if (!jqobj[0] && (jqobj = Jmol._$(id + "_holder"))[0]) +this.id = id; +if (jqobj[0]) +this.div = jqobj; +else +Jmol.Console.createDOM(this, '

'); +System.out.println("image " + this.id + " created"); +var obj = imageMap.get(this.id); +if (obj) +obj.closeMe(); +imageMap.put(this.id, this); +imageMap.put(title, this); +} +Jmol.Console.Image.setCanvas = function(obj, canvas) { +// this method can be customized as desired +// it puts the canvas into a holder div +Jmol.$append(Jmol._$(obj.id + "_holder"), canvas); +Jmol.$html(obj.id + "_title", "
    close" + obj.title + " [" + canvas.width + " x " + canvas.height + "]
"); +} +Jmol.Console.Image.closeImage = function(obj) { +// this method can be customized as desired +obj.imageMap.remove(obj.title); +obj.imageMap.remove(obj.id); +if (obj.div) { +Jmol.$remove(obj.cid); +} else { +obj.dragBind(false); +Jmol.$remove(obj.id); +} +} +Jmol.Console.Image.prototype.setImage = function(canvas) { +// called by Jmol asynchronously after image is loaded +if (this.cid) +Jmol.$remove(this.cid); +var c = document.createElement("canvas"); +c.width = canvas.width; +c.height = canvas.height; +var cdx = c.getContext("2d"); +if (canvas.buf32) { +// image buffer from current view +// (note that buf32.length will be the same as buf8.length when images are antialiased) +var imgData = cdx.getImageData(0, 0, c.width, c.height); +var buf8 = imgData.data; +var buf32 = canvas.buf32; +var n = buf8.length >> 2; +for (var i = 0, j = 0; i < n; i++) { +buf8[j++] = (buf32[i] >> 16) & 0xFF; +buf8[j++] = (buf32[i] >> 8) & 0xFF; +buf8[j++] = buf32[i] & 0xFF; +buf8[j++] = 0xFF; +} +cdx.putImageData(imgData, 0, 0); +} else { +// asynchronous load of image from file +cdx.drawImage(canvas,0,0); +} +this.cid = c.id = this.id + "_image"; +Jmol.Console.Image.setCanvas(this, c); +} +Jmol.Console.Image.prototype.closeMe = function() { +// called by Jmol +Jmol.Console.Image.closeImage(this); +} +Jmol.Swing.setDraggable(Jmol.Console.Image); +Jmol.Console.createDOM = function(obj, s, userConsole) { +var id = obj.id; +Jmol.Console.buttons[id] = obj; +s = s.replace(/\$ID/g,id); +if (userConsole && userConsole[0]) { +Jmol.$html(userConsole,s); +} else { +Jmol.$after("body", s); +obj.setContainer(Jmol._$(id)); +obj.setPosition(); +obj.dragBind(true); +} +} +Jmol.Console.JSConsole = function(appletConsole) { +this.applet = appletConsole.vwr.html5Applet; +var id = this.id = this.applet._id+"_console"; +var console = this; +console.appletConsole = appletConsole; +console.input = appletConsole.input = new Jmol.Console.Input(console); +console.output = appletConsole.output = new Jmol.Console.Output(console); +// check to see if the user already has a div on the page with id such as "jmolApplet0_console" +var userConsole = Jmol.$("#" + id); +// set up this.appletConsole.input, this.appletconsole.output +// set up buttons, which are already made by this time: +// I would prefer NOT to use jQueryUI for this - just simple buttons with simple actions +// create and insert HTML code +var s = '
' +var w = 600, h = 362; +if (userConsole[0]) { +var dims = Jmol.$getSize(userConsole); +if (dims[0] == 0) +Jmol.$setSize(userConsole, w, h); +w = dims[0] || w; +h = dims[1] || h; +} else { +s = '
' + s + '
'; +} +Jmol.Console.createDOM(this, s, userConsole); +var setBtn = function(console, btn) { +btn.console = console; +btn.id = id + "_" + btn.label.replace(/\s/g,"_"); +Jmol.Console.buttons[btn.id] = btn; +return btn.html(); +} +s = setBtn(console, appletConsole.runButton) ++ setBtn(console, appletConsole.loadButton) ++ setBtn(console, appletConsole.clearInButton) ++ setBtn(console, appletConsole.clearOutButton) ++ setBtn(console, appletConsole.historyButton) ++ setBtn(console, appletConsole.stateButton); +Jmol.$html(id + "_buttondiv", s); +s = ""; +if (!userConsole[0]) +s += "    
close"; +s += "    help"; +Jmol.$html(id + "_label1", s); +if (userConsole[0]) { +// leaves a little slop for margins +w = w - 10; +h = (h - Jmol.$getSize(id + "_label1")[1] - Jmol.$getSize(id + "_buttondiv")[1] - 20)/3; +} else { +w = w - 10; +h = (h - 62)/3; +} +Jmol.$html(id + "_inputdiv", ''); +Jmol.$html(id + "_outputdiv", ''); +Jmol.Cache.setDragDrop(this.applet, "console_output"); +Jmol.Cache.setDragDrop(this.applet, "console_input"); +Jmol.$bind("#" + id + "_input", "keydown keypress keyup", function(event) { console.input.keyEvent(event) }); +Jmol.$bind("#" + id + "_input", "mousedown touchstart", function(event) { console.ignoreMouse=true }); +Jmol.$bind("#" + id + "_output", "mousedown touchstart", function(event) { console.ignoreMouse=true }); +console.setButton = function(text) { +return new Jmol.Console.Button(this, text); +} +console.setVisible = function(b) { +if (b) +this.container.show(); +else +this.container.hide(); +this.dragBind(b); +} +console.setTitle = function(title) { +//Jmol.$html(this.id + "_title", title); +} +console.setVisible(false); +} +Jmol.Swing.setDraggable(Jmol.Console.JSConsole); +Jmol.Console.Input = function(console) { +this.console = console; +this.id = console.id + "_input"; +// something like this.... +this.getText = function() { +return Jmol.$val(this.id); +} +this.setText = function(text) { +if (text == null) +text = ""; +Jmol.$val(this.id, text); +} +this.keyEvent = function(ev) { +// chrome/safari +// for left paren: +// keyCode which key originalEvent.keyIdentifier +// keydown 57 57 - U+0039 +// keypress 40 40 - Down // why Down?? +// +// for down arrow +// keydown 40 40 - Down +// ff, msie +// for left paren: +// keyCode which key originalEvent.keyIdentifier +// keydown 57 57 ( - +// keypress 0 40 ( - +// +// for down arrow +// keydown 40 40 Down - +// in all cases: normal keys (as well as backspace[8] and delete[46]) are keydown keypress keyup +// special keys just keydown keyup +// keyup is only once when repeated; same as keydown +// ff/msie delivers key, chrome/safari does not +// chrome/safari has "feature" that keyIdentifier for "(" is reported as "Down" and similar issues for many other keys +//System.out.println(ev.type + " key:" + (!ev.key) + " keyCode:" + ev.keyCode + " which:" + ev.which + " " + ev.key + "--" + ev.originalEvent.keyIdentifier); +var mode; +var type = ev.type; +var isCtrl = ev.ctrlKey; +var kcode = ev.keyCode; +if (kcode == 13) +kcode=10; +// keycode is deprecated, but is essential still +if (type == "keyup") { +mode = (kcode == 38 || kcode == 40 ? 1 : this.console.appletConsole.processKey(kcode, 402, isCtrl)); +if ((mode & 1) == 1) +ev.preventDefault(); +return; +} +// includes keypress and keydown +// only assign "key" for keydown, as keypress gives erroneous identifier in chrome/safari +var isKeydown = (type == "keydown"); +var key = (isKeydown ? (ev.key || ev.originalEvent.keyIdentifier) : ""); +switch (kcode) { +case 38: // up-arrow, possibly +case 40: // down-arrow, possibly +// must be keydown, not keypress to be arrow key +if (!isKeydown) +kcode = 0; +break; +case 8: // bs +case 9: // tab +case 10: // CR +case 27: // esc +// only these are of interest to Jmol +break; +default: +kcode = 0; // nothing to report +} +mode = this.console.appletConsole.processKey(kcode, 401, isCtrl); +if (isCtrl && kcode == 10) +this.setText(this.getText() + "\n") +if (mode == 0 && ev.keyCode == 9) { +var me = this; +setTimeout(function(){me.setText(me.getText() + "\t"); Jmol.$focus(me.id)},10); +} +// ignore if... +if ((mode & 1) == 1 // Jmol has handled the key press +|| key == "Up" || key == "Down" // up and down arrows +|| isKeydown && ev.keyCode != 8 && ev.keyCode < 32 // a special character other than backspace, when keyDown +) { +ev.preventDefault(); +} +} +this.getCaretPosition = function() { +var el = Jmol._$(this.id)[0]; +if('selectionStart' in el) +return el.selectionStart; +if(!('selection' in document)) +return 0; +el.focus(); +var sel = document.selection.createRange(); +var len = document.selection.createRange().text.length; +sel.moveStart('character', -el.value.length); +return sel.text.length - len; +} +} +Jmol.Console.Output = function(console) { +this.id = console.id + "_output"; +this.getText = function() { +return Jmol.$val(this.id); +} +this.setText = function(text) { +if (text == null) +text = ""; +Jmol.$val(this.id, text); +} +this.append = function(message, att) { +this.setText(this.getText() + message); +Jmol.$scrollTo(this.id, -1); +} +} +Jmol.Console.Button = function(text) { +this.label = text; +} +Jmol.Console.Button.prototype.addConsoleListener = function(appletConsole) { +this.appletConsole = appletConsole; +Jmol.Console.buttons[this.id] = this; +} +Jmol.Console.Button.prototype.html = function() { +var s = '' +return s; +} +; +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coreconsole.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coreconsole.z.js new file mode 100755 index 000000000000..a4ee093ff11a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coreconsole.z.js @@ -0,0 +1,33 @@ +(function(w,x,y,z,A,B,m,C,n,p,q,D,E,s,F,G,H,I,K,t,u,L,v,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa,e,k){m("J.console");v(J.console,"GenericTextArea");m("J.console");n(["J.api.JmolAppConsoleInterface","$.JmolCallbackListener","java.util.Hashtable"],"J.console.GenericConsole",["JU.PT","J.c.CBK","J.i18n.GT","JS.T","JV.Viewer"],function(){var b=q(function(){this.label1=this.defaultMessage=this.loadButton=this.clearInButton=this.clearOutButton=this.stateButton=this.historyButton= +this.runButton=this.editButton=this.menuMap=this.vwr=this.output=this.input=null;this.nTab=0;this.incompleteCmd=null;p(this,arguments)},J.console,"GenericConsole",null,[J.api.JmolAppConsoleInterface,J.api.JmolCallbackListener]);t(b,function(){this.menuMap=new java.util.Hashtable});e(b,"setViewer",function(a){this.vwr=a;null==J.console.GenericConsole.labels&&(a=new java.util.Hashtable,a.put("title",J.i18n.GT.$("Jmol Script Console")+" "+JV.Viewer.getJmolVersion()),this.setupLabels(a),J.console.GenericConsole.labels= +a)},"JV.Viewer");e(b,"addButton",function(a,c){a.addConsoleListener(this);this.menuMap.put(c,a);return a},"J.api.JmolAbstractButton,~S");e(b,"getLabel1",function(){return null});e(b,"setupLabels",function(a){a.put("saveas",J.i18n.GT.$("&Save As..."));a.put("file",J.i18n.GT.$("&File"));a.put("close",J.i18n.GT.$("&Close"));this.setupLabels0(a)},"java.util.Map");e(b,"setupLabels0",function(a){a.put("help",J.i18n.GT.$("&Help"));a.put("search",J.i18n.GT.$("&Search..."));a.put("commands",J.i18n.GT.$("&Commands")); +a.put("functions",J.i18n.GT.$("Math &Functions"));a.put("parameters",J.i18n.GT.$("Set &Parameters"));a.put("more",J.i18n.GT.$("&More"));a.put("Editor",J.i18n.GT.$("Editor"));a.put("State",J.i18n.GT.$("State"));a.put("Run",J.i18n.GT.$("Run"));a.put("Clear Output",J.i18n.GT.$("Clear Output"));a.put("Clear Input",J.i18n.GT.$("Clear Input"));a.put("History",J.i18n.GT.$("History"));a.put("Load",J.i18n.GT.$("Load"));a.put("label1",J.i18n.GT.$("press CTRL-ENTER for new line or paste model data and press Load")); +a.put("default",J.i18n.GT.$("Messages will appear here. Enter commands in the box below. Click the console Help menu item for on-line help, which will appear in a new browser window."))},"java.util.Map");e(b,"setLabels",function(){var a=J.i18n.GT.setDoTranslate(!0);this.editButton=this.setButton("Editor");this.stateButton=this.setButton("State");this.runButton=this.setButton("Run");this.clearOutButton=this.setButton("Clear Output");this.clearInButton=this.setButton("Clear Input");this.historyButton= +this.setButton("History");this.loadButton=this.setButton("Load");this.defaultMessage=J.console.GenericConsole.getLabel("default");this.setTitle();J.i18n.GT.setDoTranslate(a)});b.getLabel=e(b,"getLabel",function(a){return J.console.GenericConsole.labels.get(a)},"~S");e(b,"displayConsole",function(){this.layoutWindow(null);this.outputMsg(this.defaultMessage)});e(b,"updateLabels",function(){});e(b,"completeCommand",function(a){if(0==a.length)return null;var c=0>=this.nTab||null==this.incompleteCmd?a: +this.incompleteCmd;this.incompleteCmd=c;a=J.console.GenericConsole.splitCommandLine(a);if(null==a)return null;var f=null==a[2],r=null!=a[3],d=a[f?1:2],b=a[1];if(0==d.length)return null;a=JS.T.getTokenFromName(b.trim().toLowerCase());var h=JS.T.tokAttr(null==a?0:a.tok,12288);a=J.console.GenericConsole.splitCommandLine(c);var g=null;if(!f&&('"'==d.charAt(0)||"'"==d.charAt(0)))f=d.charAt(0),JU.PT.trim(d,"\"'"),d=JU.PT.trim(a[2],"\"'"),g=this.nextFileName(d,this.nTab),null!=g&&(g=a[0]+a[1]+f+g+f);else{g= +null;if(!f&&(d=b,r||a[2].startsWith("$")||h))g=new java.util.Hashtable,this.vwr.getObjectMap(g,r||h?"{":a[2].startsWith("$")?"$":"0");g=JS.T.completeCommand(g,b.equalsIgnoreCase("set "),f,f?a[1]:a[2],this.nTab);g=a[0]+(null==g?d:f?g:a[1]+g)}return null==g||g.equals(c)?null:g},"~S");e(b,"doAction",function(a){if(a===this.runButton)this.execute(null);else if(a===this.editButton)this.vwr.getProperty("DATA_API","scriptEditor",null);else if(a===this.historyButton)this.clearContent(this.vwr.getSetHistory(2147483647)); +else if(a===this.stateButton)this.clearContent(this.vwr.getStateInfo());else if(a===this.clearInButton){this.input.setText("");return}a===this.clearOutButton?this.output.setText(""):a===this.loadButton?this.vwr.loadInlineAppend(this.input.getText(),!1):this.isMenuItem(a)&&this.execute(a.getName())},"~O");e(b,"execute",function(a){var c=null==a?this.input.getText():a;null==a&&this.input.setText(null);a=this.vwr.script(c+"; ## GUI ##\u0001## EDITOR_IGNORE ##; ## GUI ##");null!=a&&!a.equals("pending")&& +this.outputMsg(a)},"~S");e(b,"destroyConsole",function(){this.vwr.isApplet&&this.vwr.getProperty("DATA_API","getAppConsole",Boolean.FALSE)});b.setAbstractButtonLabels=e(b,"setAbstractButtonLabels",function(a,c){for(var f,b=a.keySet().iterator();b.hasNext()&&((f=b.next())||1);){var d=a.get(f),j=c.get(f);if(f.indexOf("Tip")==f.length-3)d.setToolTipText(c.get(f));else{var h=J.console.GenericConsole.getMnemonic(j);" "!=h&&d.setMnemonic(h);j=J.console.GenericConsole.getLabelWithoutMnemonic(j);d.setText(j)}}}, +"java.util.Map,java.util.Map");b.getLabelWithoutMnemonic=e(b,"getLabelWithoutMnemonic",function(a){if(null==a)return null;var c=a.indexOf("&");return-1==c?a:a.substring(0,c)+(cj?g:j);c[2]=g==h?null:a.substring(g);c[3]=0
');System.out.println("image "+this.id+" created");(a=f.get(this.id))&& +a.closeMe();f.put(this.id,this);f.put(c,this)};Jmol.Console.Image.setCanvas=function(a,c){Jmol.$append(Jmol._$(a.id+"_holder"),c);Jmol.$html(a.id+"_title","
    close"+a.title+" ["+c.width+" x "+c.height+"]
")};Jmol.Console.Image.closeImage=function(a){a.imageMap.remove(a.title);a.imageMap.remove(a.id);a.div?Jmol.$remove(a.cid):(a.dragBind(!1), +Jmol.$remove(a.id))};Jmol.Console.Image.prototype.setImage=function(a){this.cid&&Jmol.$remove(this.cid);var c=document.createElement("canvas");c.width=a.width;c.height=a.height;var b=c.getContext("2d");if(a.buf32){var e=b.getImageData(0,0,c.width,c.height),d=e.data;a=a.buf32;for(var j=d.length>>2,h=0,g=0;h>16&255,d[g++]=a[h]>>8&255,d[g++]=a[h]&255,d[g++]=255;b.putImageData(e,0,0)}else b.drawImage(a,0,0);this.cid=c.id=this.id+"_image";Jmol.Console.Image.setCanvas(this,c)};Jmol.Console.Image.prototype.closeMe= +function(){Jmol.Console.Image.closeImage(this)};Jmol.Swing.setDraggable(Jmol.Console.Image);Jmol.Console.createDOM=function(a,c,b){var e=a.id;Jmol.Console.buttons[e]=a;c=c.replace(/\$ID/g,e);b&&b[0]?Jmol.$html(b,c):(Jmol.$after("body",c),a.setContainer(Jmol._$(e)),a.setPosition(),a.dragBind(!0))};Jmol.Console.JSConsole=function(a){this.applet=a.vwr.html5Applet;var c=this.id=this.applet._id+"_console",b=this;b.appletConsole=a;b.input=a.input=new Jmol.Console.Input(b);b.output=a.output=new Jmol.Console.Output(b); +var e=Jmol.$("#"+c),d='
',j=600,h=362;if(e[0]){var g=Jmol.$getSize(e);0==g[0]&&Jmol.$setSize(e,j,h);j=g[0]||j;h=g[1]||h}else d='
'+ +d+"
";Jmol.Console.createDOM(this,d,e);d=function(a,b){b.console=a;b.id=c+"_"+b.label.replace(/\s/g,"_");Jmol.Console.buttons[b.id]=b;return b.html()};d=d(b,a.runButton)+d(b,a.loadButton)+d(b,a.clearInButton)+d(b,a.clearOutButton)+d(b,a.historyButton)+d(b,a.stateButton);Jmol.$html(c+"_buttondiv",d);d="";e[0]||(d+="    close");d+='    help";Jmol.$html(c+"_label1",d);e[0]?(j-=10,h=(h-Jmol.$getSize(c+"_label1")[1]-Jmol.$getSize(c+"_buttondiv")[1]-20)/3):(j-=10,h=(h-62)/3);Jmol.$html(c+"_inputdiv",'');Jmol.$html(c+"_outputdiv",'');Jmol.Cache.setDragDrop(this.applet,"console_output");Jmol.Cache.setDragDrop(this.applet,"console_input");Jmol.$bind("#"+c+"_input","keydown keypress keyup", +function(a){b.input.keyEvent(a)});Jmol.$bind("#"+c+"_input","mousedown touchstart",function(){b.ignoreMouse=!0});Jmol.$bind("#"+c+"_output","mousedown touchstart",function(){b.ignoreMouse=!0});b.setButton=function(a){return new Jmol.Console.Button(this,a)};b.setVisible=function(a){a?this.container.show():this.container.hide();this.dragBind(a)};b.setTitle=function(){};b.setVisible(!1)};Jmol.Swing.setDraggable(Jmol.Console.JSConsole);Jmol.Console.Input=function(a){this.console=a;this.id=a.id+"_input"; +this.getText=function(){return Jmol.$val(this.id)};this.setText=function(a){null==a&&(a="");Jmol.$val(this.id,a)};this.keyEvent=function(a){var b;b=a.type;var e=a.ctrlKey,d=a.keyCode;13==d&&(d=10);if("keyup"==b)b=38==d||40==d?1:this.console.appletConsole.processKey(d,402,e),1==(b&1)&&a.preventDefault();else{var j="keydown"==b,h=j?a.key||a.originalEvent.keyIdentifier:"";switch(d){case 38:case 40:j||(d=0);break;case 8:case 9:case 10:case 27:break;default:d=0}b=this.console.appletConsole.processKey(d, +401,e);e&&10==d&&this.setText(this.getText()+"\n");if(0==b&&9==a.keyCode){var g=this;setTimeout(function(){g.setText(g.getText()+"\t");Jmol.$focus(g.id)},10)}(1==(b&1)||"Up"==h||"Down"==h||j&&8!=a.keyCode&&32>a.keyCode)&&a.preventDefault()}};this.getCaretPosition=function(){var a=Jmol._$(this.id)[0];if("selectionStart"in a)return a.selectionStart;if(!("selection"in document))return 0;a.focus();var b=document.selection.createRange(),e=document.selection.createRange().text.length;b.moveStart("character", +-a.value.length);return b.text.length-e}};Jmol.Console.Output=function(a){this.id=a.id+"_output";this.getText=function(){return Jmol.$val(this.id)};this.setText=function(a){null==a&&(a="");Jmol.$val(this.id,a)};this.append=function(a){this.setText(this.getText()+a);Jmol.$scrollTo(this.id,-1)}};Jmol.Console.Button=function(a){this.label=a};Jmol.Console.Button.prototype.addConsoleListener=function(a){this.appletConsole=a;Jmol.Console.buttons[this.id]=this};Jmol.Console.Button.prototype.html=function(){return'"}})})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor, +Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejmol.js b/config/plugins/visualizations/jmol/static/j2s/core/corejmol.js new file mode 100755 index 000000000000..e7e94b6d0f0d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejmol.js @@ -0,0 +1,60350 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Jmol.___JmolDate="$Date: 2024-06-07 15:31:04 +0100 (Fri, 07 Jun 2024) $" +Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties" +Jmol.___JmolVersion="16.2.17" // (legacy) also 16.2.18 (swingJS) +// JSmolJavaExt.js + +// contains class declarations for +// Integer, Byte, Short, Float, Double, Character +// EventObject, EventListenerProxy +// Throwable, Error +// and many others. If these classes have js files in java/, those files are unused + + +// This library will be wrapped by an additional anonymous function using ANT in +// build_03_tojs.xml. This task will also modify variable names. References +// to Clazz._ will not be changed, but other Clazz_xxx will be changed to +// (local scope) Clazz_xxx, allowing them to be further compressed using +// Google Closure Compiler in that same ANT task. + +// BH 2023.07.08 NaN.0 fix +// BH 10/16/2017 6:51:20 AM fixing range error for MSIE in prepareCallback setting arguments.length < 0 +// BH 10/13/2017 7:03:28 AM fix for String.initialize(bytes) applying bytes as arguments +// BH 9/18/2017 10:15:18 PM adding Integer.compare() +// BH 4/7/2017 10:48:50 AM adds Math.signum(f) +// BH 10/15/2016 9:28:13 AM adds Float.floatToIntBits(f) +// BH 3/9/2016 6:25:08 PM at least allow Error() by itself to work as before (inchi.js uses this) +// BH 12/21/2015 1:31:41 PM fixing String.instantialize for generic typed array +// BH 9/19/2015 11:05:45 PM Float.isInfinite(), Float.isNaN(), Double.isInfinite(), Double.isNaN() all not implemented +// BH 5/31/2015 5:53:04 PM Number.compareTo added +// BH 5/21/2015 5:46:30 PM Number("0xFFFFFFFF") is not -1 +// BH 4/23/2015 9:08:59 AM xx.getComponentType() is nonfunctional. Array.newInstance now defines a wrapper for .getClass().getComponentType() that works +// BH 4/12/2015 1:37:44 PM adding Math.rint = Math.round +// BH 1/16/2015 10:09:38 AM Chrome failure jqGrig due to new String("x").toString() not being a simple string +// BH 8/14/2014 6:49:22 PM Character class efficiencies +// BH 7/24/2014 9:02:18 AM most browsers do not support String.codePointAt() +// BH 7/11/2014 4:17:22 PM fix for Boolean.valueOf("false") not being false +// BH 5/27/2014 6:29:59 AM ensure floats and doubles have decimal point in toString +// BH 4/1/2014 12:23:41 PM Encoding moved to Clazz._Encoding; +// BH 4/1/2014 7:51:46 AM removing java.lang.B00lean +// BH 3/7/2014 9:17:10 AM removing Array.toString; moving that code here from j2sJmol.js +// BH 1/30/2014 9:04:25 AM adding Throwable.getStackTrace() as a STRING +// BH 12/4/2013 9:20:44 PM fix for reassigning Date.prototype.toString() +// BH 12/3/2013 11:43:10 AM bizarre Safari bug in reassigning Boolean (OK, I admit, we shouldn't have done that...) +// BH 12/1/2013 6:50:16 AM evit Number.prototype.toString assignment removed! +// BH 11/30/2013 1:46:31 PM fixing Byte, Short, Long, Integer, Float, Double to reflect proper bounds and error conditions +// BH 11/29/2013 8:58:49 PM removing Boolean.toString(boolean) +// BH 11/4/2013 7:34:26 AM changing "var nativeClazz" to "var nativeClass" to avoid ANT replacement of "nativeClazz_" to "nativeClazz_" +// BH 10/19/2013 1:29:27 PM fixed String.$replace() +// BH 10/18/2013 6:09:23 PM fixed (Double|Float).valueOf(NaN).valueOf(), which should return NaN, not throw an error +// BH 10/12/2013 11:18:44 AM fixed bug in Double(String) and Float(String) that was returning typeof "string" +// BH 10/10/2013 2:40:20 PM added Math.log10 +// BH 7/23/2013 7:24:01 AM fixing Number.shortValue() and Number.byteValue() for negative values +// BH 6/16/2013 1:31:30 PM adding /| in String.replace -- thank you David Koes +// BH 3/13/2013 12:49:23 PM setting Boolean.valueOf() "@" +// BH 3/2/2013 10:46:45 PM removed Double.valueOf(String) +// BH 11/6/2012 8:26:33 PM added instanceof Int32Array in String.instantialize +// BH 10/13/2012 11:38:07 PM corrected Integer.parseInt to allow only +-0123456789; created Integer.parseIntRadix +// BH 11/1/2012 added Short +// BH 9/10/2012 6:27:21 AM added java.net.URL... classes +// BH 1/7/2013 7:40:06 AM added Clazz_dateToString + +;(function(Clazz) { + +// moved here from package.js +// these classes will be created as objects prior to any others +// and are then available immediately + + Clazz._Loader.registerPackages("java", [ "io", "lang", "lang.reflect", "util" ]); + + var sJU = "java.util"; + + //var sJU = "JU"; + //Clazz._Loader.registerPackages (sJU, ["regex", "zip"]); + //var javautil = JU; + + var javautil = java.util; + + Clazz._Loader.ignore([ + "net.sf.j2s.ajax.HttpRequest", + sJU + ".MapEntry.Type", + "java.net.UnknownServiceException", // unnecessary for Jmol + "java.lang.Runtime", + "java.security.AccessController", + "java.security.PrivilegedExceptionAction", + "java.io.File", + "java.io.FileInputStream", + "java.io.FileWriter", + "java.io.OutputStreamWriter", +// sJU + ".Calendar", // bypassed in ModelCollection +// "java.text.SimpleDateFormat", // not used +// "java.text.DateFormat", // not used + sJU + ".concurrent.Executors" + ]) + +Math.rint = Math.round; + +Math.log10||(Math.log10=function(a){return Math.log(a)/2.302585092994046}); + +Math.signum||(Math.signum=function(d){return(d==0.0||isNaN(d))?d:d < 0 ? -1 : 1}); + +if(Clazz._supportsNativeObject){ + // Number and Array are special -- do not override prototype.toString -- "length - 2" here + for(var i=0;i 0 ? x - 0x10000 : x); +}); + +Clazz_defineMethod(Number,"byteValue", +function(){ +var x = Math.round(this)&0xff; +return (this < 0 && x > 0 ? x - 0x100 : x); +}); + +Clazz_defineMethod(Number,"intValue", +function(){ +return Math.round(this)&0xffffffff; +}); + +Clazz_defineMethod(Number,"longValue", +function(){ +return Math.round(this); +}); + +Clazz_defineMethod(Number,"floatValue", +function(){ +return this.valueOf(); +}); +Clazz_defineMethod(Number,"doubleValue", +function(){ +return parseFloat(this.valueOf()); +}); + +Clazz_overrideMethod(Number,"hashCode", +function(){ +return this.valueOf(); +}); + +java.lang.Integer=Integer=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Integer,"Integer",Number,Comparable,null,true); +Integer.prototype.valueOf=function(){return 0;}; +Integer.toString=Integer.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +} else if(this===Integer){ +return"class java.lang.Integer"; +} +return""+this.valueOf(); +}; + +/* + +Clazz_makeConstructor(Integer, +function(){ +this.valueOf=function(){ +return 0; +}; +}); +*/ + + +Clazz_overrideConstructor(Integer, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + this.valueOf=function(){return v;}; +}); //BH +/* +Clazz_makeConstructor(Integer, +function(s){ +var value=Integer.parseInt(s,10); +this.valueOf=function(){ +return value; +}; +},"String"); +*/ +Integer.MIN_VALUE=Integer.prototype.MIN_VALUE=-0x80000000; +Integer.MAX_VALUE=Integer.prototype.MAX_VALUE=0x7fffffff; +Integer.TYPE=Integer.prototype.TYPE=Integer; + + +Integer.compare = Clazz_defineMethod(Integer,"compare", +function(i,j) { + return (i < j ? -1 : i > j ? 1 : 0); +},"Number,Number"); + +Clazz_defineMethod(Integer,"bitCount", +function(i) { + i = i - ((i >>> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); + i = (i + (i >>> 4)) & 0x0f0f0f0f; + i = i + (i >>> 8); + i = i + (i >>> 16); + return i & 0x3f; +},"Number"); +Integer.bitCount=Integer.prototype.bitCount; + +Clazz_defineMethod(Integer,"numberOfLeadingZeros", +function(i) { + if (i == 0) return 32; + var n = 1; + if (i >>> 16 == 0) { n += 16; i <<= 16; } + if (i >>> 24 == 0) { n += 8; i <<= 8; } + if (i >>> 28 == 0) { n += 4; i <<= 4; } + if (i >>> 30 == 0) { n += 2; i <<= 2; } + n -= i >>> 31; + return n; +},"Number"); +Integer.numberOfLeadingZeros=Integer.prototype.numberOfLeadingZeros; + +Clazz_defineMethod(Integer,"numberOfTrailingZeros", +function(i) { + if (i == 0) return 32; + var n = 31; + var y = i <<16; if (y != 0) { n = n -16; i = y; } + y = i << 8; if (y != 0) { n = n - 8; i = y; } + y = i << 4; if (y != 0) { n = n - 4; i = y; } + y = i << 2; if (y != 0) { n = n - 2; i = y; } + return n - ((i << 1) >>> 31); +},"Number"); +Integer.numberOfTrailingZeros=Integer.prototype.numberOfTrailingZeros; + +Clazz_defineMethod(Integer,"parseIntRadix", +function(s,radix){ +if(s==null){ +throw new NumberFormatException("null"); +}if(radix<2){ +throw new NumberFormatException("radix "+radix+" less than Character.MIN_RADIX"); +}if(radix>36){ +throw new NumberFormatException("radix "+radix+" greater than Character.MAX_RADIX"); +} +if (radix == 10) { + for (var i = s.length; --i >= 0;) { + var c = s.charCodeAt(i); + if (c >= 48 && c <= 57) continue; + if (i > 0 || c != 43 && c != 45) + throw new NumberFormatException("Not a Number : "+s); + + } +} +var i=parseInt(s,radix); +if(isNaN(i)){ +throw new NumberFormatException("Not a Number : "+s); +} +return i; +},"String, Number"); +Integer.parseIntRadix=Integer.prototype.parseIntRadix; + +Clazz_defineMethod(Integer,"parseInt", +function(s){ +return Integer.parseIntRadix(s,10); +},"String"); +Integer.parseInt=Integer.prototype.parseInt; + +/* +Clazz_defineMethod(Integer,"$valueOf", +function(s){ +return new Integer(Integer.parseIntRadix(s,10)); +},"String"); +*/ + +Clazz_overrideMethod(Integer,"$valueOf", +function(s){ +return new Integer(s); +}); + +/* +Clazz_defineMethod(Integer,"$valueOf", +function(s,r){ +return new Integer(Integer.parseIntRadix(s,r)); +},"String, Number"); +*/ + +Integer.$valueOf=Integer.prototype.$valueOf; + + +Clazz_overrideMethod(Integer,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Integer)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Integer.toHexString=Integer.prototype.toHexString=function(d){ +if(d.valueOf)d=d.valueOf(); +if (d < 0) { +var b = d & 0xFFFFFF; +var c = ((d>>24)&0xFF); +return c._numberToString(16) + (b = "000000" + b._numberToString(16)).substring(b.length - 6); +} +return d._numberToString(16);}; +Integer.toOctalString=Integer.prototype.toOctalString=function(d){if(d.valueOf)d=d.valueOf();return d._numberToString(8);}; +Integer.toBinaryString=Integer.prototype.toBinaryString=function(d){if(d.valueOf)d=d.valueOf();return d._numberToString(2);}; + +Integer.decodeRaw=Clazz_defineMethod(Integer,"decodeRaw", function(n){ +if (n.indexOf(".") >= 0)n = ""; +var i = (n.startsWith("-") ? 1 : 0); +n = n.replace(/\#/, "0x").toLowerCase(); +var radix=(n.startsWith("0x", i) ? 16 : n.startsWith("0", i) ? 8 : 10); +// The general problem with parseInt is that is not strict -- ParseInt("10whatever") == 10. +// Number is strict, but Number("055") does not work, though ParseInt("055", 8) does. +// need to make sure negative numbers are negative +n = Number(n) & 0xFFFFFFFF; +return (radix == 8 ? parseInt(n, 8) : n); +},"~S"); + +Integer.decode=Clazz_defineMethod(Integer,"decode", function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < Integer.MIN_VALUE|| n > Integer.MAX_VALUE) + throw new NumberFormatException("Invalid Integer"); + return new Integer(n); +},"~S"); + +Clazz_overrideMethod(Integer,"hashCode", +function(){ +return this.valueOf(); +}); + +// Note that Long is problematic in JavaScript + +java.lang.Long=Long=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Long,"Long",Number,Comparable,null,true); +Long.prototype.valueOf=function(){return 0;}; +Long.toString=Long.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +}else if(this===Long){ +return"class java.lang.Long"; +} +return""+this.valueOf(); +}; + +Clazz_overrideConstructor(Long, function(v){ + v == null && (v = 0); + v = (typeof v == "number" ? Math.round(v) : Integer.parseIntRadix(v, 10)); +this.valueOf=function(){return v;}; +}); + +//Long.MIN_VALUE=Long.prototype.MIN_VALUE=-0x8000000000000000; +//Long.MAX_VALUE=Long.prototype.MAX_VALUE=0x7fffffffffffffff; +Long.TYPE=Long.prototype.TYPE=Long; + +Clazz_defineMethod(Long,"parseLong", +function(s,radix){ + return Integer.parseInt(s, radix || 10); +}); + +Long.parseLong=Long.prototype.parseLong; + +Clazz_overrideMethod(Long,"$valueOf", +function(s){ +return new Long(s); +}); +/* +Clazz_defineMethod(Long,"$valueOf", +function(s){ +return new Long(s); +},"Number"); + +Clazz_defineMethod(Long,"$valueOf", +function(s,r){ +return new Long(Long.parseLong(s,r)); +},"String, Number"); +*/ +Long.$valueOf=Long.prototype.$valueOf; +Clazz_overrideMethod(Long,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Long)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Long.toHexString=Long.prototype.toHexString=function(i){ +return i.toString(16); +}; +Long.toOctalString=Long.prototype.toOctalString=function(i){ +return i.toString(8); +}; +Long.toBinaryString=Long.prototype.toBinaryString=function(i){ +return i.toString(2); +}; + + +Long.decode=Clazz_defineMethod(Long,"decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n)) + throw new NumberFormatException("Invalid Long"); + return new Long(n); +},"~S"); + +java.lang.Short = Short = function () { +Clazz_instantialize (this, arguments); +}; +Clazz_decorateAsType (Short, "Short", Number, Comparable, null, true); +Short.prototype.valueOf = function () { return 0; }; +Short.toString = Short.prototype.toString = function () { + if (arguments.length != 0) { + return "" + arguments[0]; + } else if (this === Short) { + return "class java.lang.Short"; // Short.class.toString + } + return "" + this.valueOf (); +}; + +Clazz_overrideConstructor(Short, +function (v) { + v == null && (v = 0); + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + v = v.shortValue(); + this.valueOf = function () {return v;}; +}); + + +Short.MIN_VALUE = Short.prototype.MIN_VALUE = -32768; +Short.MAX_VALUE = Short.prototype.MAX_VALUE = 32767; +Short.TYPE = Short.prototype.TYPE = Short; + +Clazz_defineMethod(Short, "parseShortRadix", +function (s, radix) { +return Integer.parseIntRadix(s, radix).shortValue(); +}, "String, Number"); +Short.parseShortRadix = Short.prototype.parseShortRadix; + +Clazz_defineMethod(Short, "parseShort", +function (s) { +return Short.parseShortRadix (s, 10); +}, "String"); + +Short.parseShort = Short.prototype.parseShort; + +/* +Clazz_defineMethod(Short, "$valueOf", +function (s) { +return new Short(Short.parseShort (s, 10)); +}, "String"); + */ + +Clazz_overrideMethod(Short, "$valueOf", +function (s) { +return new Short(s); +}); + +/* +Clazz_defineMethod(Short, "$valueOf", +function (s, r) { +return new Short(Short.parseShort (s, r)); +}, "String, Number"); + */ + +Short.$valueOf = Short.prototype.$valueOf; +Clazz_overrideMethod(Short, "equals", +function (s) { +if(s == null || !Clazz_instanceOf(s, Short) ){ + return false; +} +return s.valueOf() == this.valueOf(); +}, "Object"); +Short.toHexString = Short.prototype.toHexString = function (i) { + return i.toString (16); +}; +Short.toOctalString = Short.prototype.toOctalString = function (i) { + return i.toString (8); +}; +Short.toBinaryString = Short.prototype.toBinaryString = function (i) { + return i.toString (2); +}; +Short.decode = Clazz_defineMethod(Short, "decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < -32768|| n > 32767) + throw new NumberFormatException("Invalid Short"); + return new Short(n); +}, "~S"); + +java.lang.Byte=Byte=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Byte,"Byte",Number,Comparable,null,true); +Byte.prototype.valueOf=function(){return 0;}; +Byte.toString=Byte.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +}else if(this===Byte){ +return"class java.lang.Byte"; +} +return""+this.valueOf(); +}; +Clazz_makeConstructor(Byte, +function(v){ + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + v = v.byteValue(); +this.valueOf=function(){ +return v; +}; +}); + +Byte.serialVersionUID=Byte.prototype.serialVersionUID=-7183698231559129828; +Byte.MIN_VALUE=Byte.prototype.MIN_VALUE=-128; +Byte.MAX_VALUE=Byte.prototype.MAX_VALUE=127; +Byte.SIZE=Byte.prototype.SIZE=8; +Byte.TYPE=Byte.prototype.TYPE=Byte; + +Clazz_defineMethod(Byte,"parseByteRadix", +function(s,radix){ + return Integer.parseIntRadix(s, radix).byteValue(); +},"String, Number"); +Byte.parseByteRadix=Byte.prototype.parseByteRadix; + +Clazz_defineMethod(Byte,"parseByte", +function(s){ +return Byte.parseByte(s,10); +},"String"); + +Byte.parseByte=Byte.prototype.parseByte; + +Clazz_overrideMethod(Byte, "$valueOf", +function (s) { +return new Byte(s); +}); + +Byte.$valueOf=Byte.prototype.$valueOf; +Clazz_overrideMethod(Byte,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Byte)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Byte.toHexString=Byte.prototype.toHexString=function(i){ +return i.toString(16); +}; +Byte.toOctalString=Byte.prototype.toOctalString=function(i){ +return i.toString(8); +}; +Byte.toBinaryString=Byte.prototype.toBinaryString=function(i){ +return i.toString(2); +}; +Byte.decode=Clazz_defineMethod(Byte,"decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < -128|| n > 127) + throw new NumberFormatException("Invalid Byte"); +return new Byte(n); +},"~S"); + +Clazz._floatToString = function(f) { + var s = ""+f + if (s.indexOf(".") < 0 && s.indexOf("e") < 0 && s != "NaN") + s += ".0"; + return s; +} + +java.lang.Float=Float=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Float,"Float",Number,Comparable,null,true); +Float.prototype.valueOf=function(){return 0;}; +Float.toString=Float.prototype.toString=function(){ +if(arguments.length!=0){ +return Clazz._floatToString(arguments[0]); +}else if(this===Float){ +return"class java.lang.Float"; +} +return Clazz._floatToString(this.valueOf()); +}; + +Clazz._a32 = null; + +Float.floatToIntBits = function(f) { +var a = Clazz._a32 || (Clazz._a32 = new Float32Array(1)); +a[0] = f; +return new Int32Array(a.buffer)[0]; +} + +Clazz_overrideConstructor(Float, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Number(v); + this.valueOf=function(){return v;} +}); + +Float.serialVersionUID=Float.prototype.serialVersionUID=-2671257302660747028; +Float.MIN_VALUE=Float.prototype.MIN_VALUE=1.4e-45; +Float.MAX_VALUE=Float.prototype.MAX_VALUE=3.4028235e+38; +Float.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY; +Float.POSITIVE_INFINITY=Number.POSITIVE_INFINITY; +Float.NaN=Number.NaN; +Float.TYPE=Float.prototype.TYPE=Float; + +Clazz_defineMethod(Float,"parseFloat", +function(s){ +if(s==null){ +throw new NumberFormatException("null"); +} +if (typeof s == "number")return s; // important -- typeof NaN is "number" and is OK here +var floatVal=Number(s); +if(isNaN(floatVal)){ +throw new NumberFormatException("Not a Number : "+s); +} +return floatVal; +},"String"); +Float.parseFloat=Float.prototype.parseFloat; + +Clazz_overrideMethod(Float,"$valueOf", +function(s){ +return new Float(s); +}); + +Float.$valueOf=Float.prototype.$valueOf; + +Clazz_defineMethod(Float,"isNaN", +function(num){ +return isNaN(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Float.isNaN=Float.prototype.isNaN; +Clazz_defineMethod(Float,"isInfinite", +function(num){ +return!isFinite(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Float.isInfinite=Float.prototype.isInfinite; + +Clazz_overrideMethod(Float,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Float)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); + +java.lang.Double=Double=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Double,"Double",Number,Comparable,null,true); +Double.prototype.valueOf=function(){return 0;}; +Double.toString=Double.prototype.toString=function(){ +if(arguments.length!=0){ +return Clazz._floatToString(arguments[0]); +}else if(this===Double){ +return"class java.lang.Double"; +} +return Clazz._floatToString(this.valueOf()); +}; + +Clazz_overrideConstructor(Double, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Double.parseDouble(v); + this.valueOf=function(){return v;}; +}); // BH + +Double.serialVersionUID=Double.prototype.serialVersionUID=-9172774392245257468; +Double.MIN_VALUE=Double.prototype.MIN_VALUE=4.9e-324; +Double.MAX_VALUE=Double.prototype.MAX_VALUE=1.7976931348623157e+308; +Double.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY; +Double.POSITIVE_INFINITY=Number.POSITIVE_INFINITY; +Double.NaN=Number.NaN; +Double.TYPE=Double.prototype.TYPE=Double; + +Clazz_defineMethod(Double,"isNaN", +function(num){ +return isNaN(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Double.isNaN=Double.prototype.isNaN; +Clazz_defineMethod(Double,"isInfinite", +function(num){ +return!isFinite(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Double.isInfinite=Double.prototype.isInfinite; + +Clazz_defineMethod(Double,"parseDouble", +function(s){ +if(s==null){ +throw new NumberFormatException("null"); +} +if (typeof s == "number")return s; // important -- typeof NaN is "number" and is OK here +var doubleVal=Number(s); +if(isNaN(doubleVal)){ +throw new NumberFormatException("Not a Number : "+s); +} +return doubleVal; +},"String"); +Double.parseDouble=Double.prototype.parseDouble; + +/* +Clazz_defineMethod(Double,"$valueOf", +function(s){ +return new Double(this.parseDouble(s)); +},"String"); +*/ + +Clazz_defineMethod(Double,"$valueOf", +function(v){ +return new Double(v); +},"Number"); + +Double.$valueOf=Double.prototype.$valueOf; + +Clazz_overrideMethod(Double,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Double)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); + + +//java.lang.B00lean = Boolean; ?? BH why this? +Boolean = java.lang.Boolean = Boolean || function () {Clazz_instantialize (this, arguments);}; +if (Clazz._supportsNativeObject) { + for (var i = 0; i < Clazz._extendedObjectMethods.length; i++) { + var p = Clazz._extendedObjectMethods[i]; + Boolean.prototype[p] = Clazz._O.prototype[p]; + } +} +Boolean.__CLASS_NAME__="Boolean"; +Clazz_implementOf(Boolean,[java.io.Serializable,java.lang.Comparable]); +Boolean.equals=Clazz._innerFunctions.equals; +Boolean.getName=Clazz._innerFunctions.getName; +Boolean.serialVersionUID=Boolean.prototype.serialVersionUID=-3665804199014368530; + +//Clazz_makeConstructor(Boolean, +//function(value){ +//this.valueOf=function(){ +//return value; +//}; +//},"~B"); + +Clazz_overrideConstructor(Boolean, +function(s){ + var b = ((typeof s == "string" ? Boolean.toBoolean(s) : s) ? true : false); + this.valueOf=function(){return b;}; +},"~O"); + +Boolean.parseBoolean=Clazz_defineMethod(Boolean,"parseBoolean", +function(s){ +return Boolean.toBoolean(s); +},"~S"); +Clazz_defineMethod(Boolean,"booleanValue", +function(){ +return this.valueOf(); +}); +Boolean.$valueOf=Clazz_overrideMethod(Boolean,"$valueOf", +function(b){ +return((typeof b == "string"? "true".equalsIgnoreCase(b) : b)?Boolean.TRUE:Boolean.FALSE); +}); + +/* +Boolean.toString=Clazz_defineMethod(Boolean,"toString", +function(b){ +return b?"true":"false"; +},"~B"); +*/ + +Clazz_overrideMethod(Boolean,"toString", +function(){ +return this.valueOf()?"true":"false"; +}); +Clazz_overrideMethod(Boolean,"hashCode", +function(){ +return this.valueOf()?1231:1237; +}); +Clazz_overrideMethod(Boolean,"equals", +function(obj){ +if(Clazz_instanceOf(obj,Boolean)){ +return this.booleanValue()==obj.booleanValue(); +}return false; +},"~O"); +Boolean.getBoolean=Clazz_defineMethod(Boolean,"getBoolean", +function(name){ +var result=false; +try{ +result=Boolean.toBoolean(System.getProperty(name)); +}catch(e){ +if(Clazz_instanceOf(e,IllegalArgumentException)){ +}else if(Clazz_instanceOf(e,NullPointerException)){ +}else{ +throw e; +} +} +return result; +},"~S"); +Clazz_overrideMethod(Boolean,"compareTo", +function(b){ +return(b.value==this.value?0:(this.value?1:-1)); +},"Boolean"); +Boolean.toBoolean=Clazz_defineMethod(Boolean,"toBoolean", +($fz=function(name){ +return((name!=null)&&name.equalsIgnoreCase("true")); +},$fz.isPrivate=true,$fz),"~S"); +Boolean.TRUE=Boolean.prototype.TRUE=new Boolean(true); +Boolean.FALSE=Boolean.prototype.FALSE=new Boolean(false); +Boolean.TYPE=Boolean.prototype.TYPE=Boolean; + + +Clazz._Encoding=new Object(); + +(function(Encoding) { + +Encoding.UTF8="utf-8"; +Encoding.UTF16="utf-16"; +Encoding.ASCII="ascii"; + + +Encoding.guessEncoding=function(str){ +if(str.charCodeAt(0)==0xEF&&str.charCodeAt(1)==0xBB&&str.charCodeAt(2)==0xBF){ +return Encoding.UTF8; +}else if(str.charCodeAt(0)==0xFF&&str.charCodeAt(1)==0xFE){ +return Encoding.UTF16; +}else{ +return Encoding.ASCII; +} +}; + +Encoding.guessEncodingArray=function(a){ +if(a[0]==0xEF&&a[1]==0xBB&&a[2]==0xBF){ +return Encoding.UTF8; +}else if(a[0]==0xFF&&a[1]==0xFE){ +return Encoding.UTF16; +}else{ +return Encoding.ASCII; +} +}; + +Encoding.readUTF8=function(str){ +if (typeof str != "string") return Encoding.readUTF8Array(str); +var encoding=Encoding.guessEncoding(str); +var startIdx=0; +if(encoding==Encoding.UTF8){ +startIdx=3; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} +var arrs=new Array(); +for(var i=startIdx;i0xc0&&charCode<0xe0){ +var c1=charCode&0x1f; +i++; +var c2=str.charCodeAt(i)&0x3f; +var c=(c1<<6)+c2; +arrs[arrs.length]=String.fromCharCode(c); +}else if(charCode>=0xe0){ +var c1=charCode&0x0f; +i++; +var c2=str.charCodeAt(i)&0x3f; +i++; +var c3=str.charCodeAt(i)&0x3f; +var c=(c1<<12)+(c2<<6)+c3; +arrs[arrs.length]=String.fromCharCode(c); +} +} +return arrs.join(''); +}; + +Encoding.readUTF8Array=function(a){ +var encoding=Encoding.guessEncodingArray(a); +var startIdx=0; +if(encoding==Encoding.UTF8){ +startIdx=3; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} +var arrs=new Array(); +for(var i=startIdx;i0xc0&&charCode<0xe0){ +var c1=charCode&0x1f; +var c2=a[++i]&0x3f; +var c=(c1<<6)+c2; +arrs[arrs.length]=String.fromCharCode(c); +}else if(charCode>=0xe0){ +var c1=charCode&0x0f; +var c2=a[++i]&0x3f; +var c3=a[++i]&0x3f; +var c=(c1<<12)+(c2<<6)+c3; +arrs[arrs.length]=String.fromCharCode(c); +} +} +return arrs.join(''); +}; + +Encoding.convert2UTF8=function(str){ +var encoding=this.guessEncoding(str); +var startIdx=0; +if(encoding==Encoding.UTF8){ +return str; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} + +var offset=0; +var arrs=new Array(offset+str.length-startIdx); + +for(var i=startIdx;i>6); +var c2=0x80+(charCode&0x003f); +arrs[offset+i-startIdx]=String.fromCharCode(c1)+String.fromCharCode(c2); +}else{ +var c1=0xe0+((charCode&0xf000)>>12); +var c2=0x80+((charCode&0x0fc0)>>6); +var c3=0x80+(charCode&0x003f); +arrs[offset+i-startIdx]=String.fromCharCode(c1)+String.fromCharCode(c2)+String.fromCharCode(c3); +} +} +return arrs.join(''); +}; +Encoding.base64Chars=new Array( +'A','B','C','D','E','F','G','H', +'I','J','K','L','M','N','O','P', +'Q','R','S','T','U','V','W','X', +'Y','Z','a','b','c','d','e','f', +'g','h','i','j','k','l','m','n', +'o','p','q','r','s','t','u','v', +'w','x','y','z','0','1','2','3', +'4','5','6','7','8','9','+','/' +); +Encoding.encodeBase64=function(str){ +if(str==null||str.length==0)return str; +var b64=Encoding.base64Chars; +var length=str.length; +var index=0; +var buf=[]; +var c0,c1,c2; +while(index>2]; +if(index>4)]; +if(index>6)]; +buf[buf.length]=b64[c2&0x3F]; +}else{ +buf[buf.length]=b64[((c1<<2)&0x3c)]; +buf[buf.length]='='; +} +}else{ +buf[buf.length]=b64[(c0<<4)&0x30]; +buf[buf.length]='='; +buf[buf.length]='='; +} +} +return buf.join(''); +}; +Encoding.decodeBase64=function(str){ +if(str==null||str.length==0)return str; +var b64=Encoding.base64Chars; +var xb64=Encoding.xBase64Chars; +if(Encoding.xBase64Chars==null){ +xb64=new Object(); +for(var i=0;i>4); +if(c2!=null){ +buf[buf.length]=String.fromCharCode(((c1<<4)&0xff)|c2>>2); +if(c3!=null){ +buf[buf.length]=String.fromCharCode(((c2<<6)&0xff)|c3); +} +} +} +return buf.join(''); +}; + +if(String.prototype.$replace==null){ +java.lang.String=String; +Clazz._setDeclared("String", String); + +if(Clazz._supportsNativeObject){ +for(var i=0;i= 0) c1 = "\\" + c1; + } else { + c1=c1.replace(/([\\\$\.\*\+\|\?\^\{\}\(\)\[\]])/g,function($0,$1){return"\\"+$1;}); + } + return this.replace(new RegExp(c1,"gm"),c2); +}; +sp.$generateExpFunction=function(str){ +var arr=[]; +var orders=[]; +var idx=0; +arr[0]=""; +var i=0; +for(;ithis.length-len)|| +(ooffset>other.length-len)){ +return false; +} +var s1=this.substring(toffset,toffset+len); +var s2=other.substring(ooffset,ooffset+len); +if(ignoreCase){ +s1=s1.toLowerCase(); +s2=s2.toLowerCase(); +} +return s1==s2; +}; + + + +sp.$plit=function(regex,limit){ +if (!limit && regex == " ") + return this.split(regex); + +if(limit!=null&&limit>0){ +if(limit==1){ +return this; +} +var regExp=new RegExp("("+regex+")","gm"); +var count=1; +var s=this.replace(regExp,function($0,$1){ +count++; +if(count==limit){ +return"@@_@@"; +}else if(count>limit){ +return $0; +}else{ +return $0; +} +}); +regExp=new RegExp(regex,"gm"); +var arr=this.split(regExp); +if(arr.length>limit){ +arr[limit-1]=s.substring(s.indexOf("@@_@@")+5); +arr.length=limit; +} +return arr; +}else{ +var regExp=new RegExp(regex,"gm"); +return this.split(regExp); +} +}; +/* +sp.trim=function(){ +var len=this.length; +var st=0; + +while((st0)||(lens.length-pc)){ +return false; +} +while(--pc>=0){ +if(s.charAt(to++)!=prefix.charAt(po++)){ +return false; +} +} +return true; +}; + +sp.startsWith=function(prefix){ +if(arguments.length==1){ +return sn(this,arguments[0],0); +}else if(arguments.length==2){ +return sn(this,arguments[0],arguments[1]); +}else{ +return false; +} +}; + +sp.endsWith=function(suffix){ +return sn(this, suffix,this.length-suffix.length); +}; + +} + +sp.equals=function(anObject){ +return this.valueOf()==anObject; +}; + +sp.equalsIgnoreCase=function(anotherString){ +return(anotherString==null)?false:(this==anotherString +||this.toLowerCase()==anotherString.toLowerCase()); +}; + + +sp.hash=0; + +sp.hashCode=function(){ +var h=this.hash; +if(h==0){ +var off=0; +var len=this.length; +for(var i=0;i255){ +arrs[ii]=0x1a; +arrs[ii+1]=c&0xff; +arrs[ii+2]=(c&0xff00)>>8; +ii+=2; +}else{ +arrs[ii]=c; +} +ii++; +} +return Clazz_newByteArray(arrs); +}; + +/* +sp.compareTo=function(anotherString){ +if(anotherString==null){ +throw new java.lang.NullPointerException(); +} +var len1=this.length; +var len2=anotherString.length; +var n=Math.min(len1,len2); +var k=0; +while(k= 0} // bh added +sp.compareTo = function(a){return this > a ? 1 : this < a ? -1 : 0} // bh added + + + +sp.toCharArray=function(){ +var result=new Array(this.length); +for(var i=0;is2){ +return 1; +}else{ +return-1; +} +} +}; + +sp.contentEquals=function(sb){ +if(this.length!=sb.length()){ +return false; +} +var v=sb.getValue(); +var i=0; +var j=0; +var n=this.length; +while(n--!=0){ +if(this.charCodeAt(i++)!=v[j++]){ +return false; +} +} +return true; +}; + +sp.getChars=function(srcBegin,srcEnd,dst,dstBegin){ +if(srcBegin<0){ +throw new StringIndexOutOfBoundsException(srcBegin); +} +if(srcEnd>this.length){ +throw new StringIndexOutOfBoundsException(srcEnd); +} +if(srcBegin>srcEnd){ +throw new StringIndexOutOfBoundsException(srcEnd-srcBegin); +} +if(dst==null){ +throw new NullPointerException(); +} +for(var i=0;ibytes.length){ + throw new IndexOutOfBoundsException(); + } + if(length>0){ + var isChar=(bytes[offset].length!=null); + if(isChar){ + for(var i=0;i0;){ + value[i]=String.fromCharCode(bytes[i+offset]&0xff); + } + }else{ + hibyte<<=8; + for(var i=count;i-->0;){ + value[i]=String.fromCharCode(hibyte|(bytes[i+offset]&0xff)); + } + } + return value.join(''); +default: + var s=""; + for(var i=0;i= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd || c == 0x1680 + || c >= 0x2000 && c != 0x2007 && (c <= 0x200b || c == 0x2028 || c == 0x2029 || c == 0x3000)); +},"~N"); +c$.isLetter=Clazz_defineMethod(c$,"isLetter", +function(c){ +c = c.charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122); +},"~N"); +c$.isLetterOrDigit=Clazz_defineMethod(c$,"isLetterOrDigit", +function(c){ +c = c.charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57); +},"~N"); +c$.isSpaceChar=Clazz_defineMethod(c$,"isSpaceChar", +function(c){ + var i = c.charCodeAt(0); +if(i==0x20||i==0xa0||i==0x1680)return true; +if(i<0x2000)return false; +return i<=0x200b||i==0x2028||i==0x2029||i==0x202f||i==0x3000; +},"~N"); +c$.digit=Clazz_defineMethod(c$,"digit", +function(c,radix){ +var i = c.charCodeAt(0); +if(radix >= 2 && radix <= 36){ + if(i < 128){ + var result = -1; + if(48 <= i && i <= 57){ + result = i - 48; + }else if(97 <= i && i <= 122){ + result = i - 87; + }else if(65 <= i && i <= 90){ + result=i-(55); + } + return (result < radix ? result : -1); + } +} +return -1; +},"~N,~N"); +Clazz_overrideMethod(c$,"toString", +function(){ +var buf=[this.value]; +return String.valueOf(buf); +}); +c$.toString=Clazz_overrideMethod(c$,"toString", +function(c){ +{ +if(this===Character){ +return"class java.lang.Character"; +} +}return String.valueOf(c); +},"~N"); +c$.TYPE=c$; + + + +Clazz._ArrayWrapper = function(a, type) { + return { + a: a, + __CLASS_NAME__:"Array", + superClazz: Array, + getComponentType: function() {return type}, + instanceOf: function(o) { return Clazz_instanceOf(type, o) }, + getName: function() { return this.__CLASS_NAME__ } + }; +} +c$=Clazz_declareType(java.lang.reflect,"Array"); +c$.newInstance=Clazz_defineMethod(c$,"newInstance", +function(componentType,size){ +var a = Clazz_newArray(size); + a.getClass = function() { return new Clazz._ArrayWrapper(this, componentType);}; +return a; +},"Class,~N"); + +c$.getLength = function(o){return o.length}; +c$.get = function(o, i){return o[i]}; + +javautil.Date=Date; +Date.TYPE="javautil.Date"; +Date.__CLASS_NAME__="Date"; +Clazz._setDeclared("java.util.Date", Date); +Clazz._setDeclared("Date", Date); +Clazz_implementOf(Date,[java.io.Serializable,java.lang.Comparable]); +Clazz_defineMethod(javautil.Date,"clone", +function(){ +return new Date(this.getTime()); +}); + +Clazz_defineMethod(javautil.Date,"before", +function(when){ +return this.getTime()when.getTime(); +},"javautil.Date"); +Clazz_defineMethod(javautil.Date,"equals", +function(obj){ +return Clazz_instanceOf(obj,javautil.Date)&&this.getTime()==(obj).getTime(); +},"Object"); +Clazz_defineMethod(javautil.Date,"compareTo", +function(anotherDate){ +if (anotherDate == null)return 1; +var thisTime=this.getTime(); +var anotherTime=anotherDate.getTime(); +return(thisTime>32)); +}); + +c$=Clazz_decorateAsClass(function(){ +this.source=null; +Clazz_instantialize(this,arguments); +},javautil,"EventObject",null,java.io.Serializable); +Clazz_makeConstructor(c$, +function(source){ +if(source!=null)this.source=source; +else throw new IllegalArgumentException(); +},"~O"); +Clazz_defineMethod(c$,"getSource", +function(){ +return this.source; +}); +Clazz_overrideMethod(c$,"toString", +function(){ +return this.getClass().getName()+"[source="+String.valueOf(this.source)+']'; +}); +Clazz_declareInterface(javautil,"EventListener"); + +c$=Clazz_decorateAsClass(function(){ +this.listener=null; +Clazz_instantialize(this,arguments); +},javautil,"EventListenerProxy",null,javautil.EventListener); +Clazz_makeConstructor(c$, +function(listener){ +this.listener=listener; +},"javautil.EventListener"); +Clazz_defineMethod(c$,"getListener", +function(){ +return this.listener; +}); +Clazz_declareInterface(javautil,"Iterator"); + +Clazz_declareInterface(javautil,"ListIterator",javautil.Iterator); +Clazz_declareInterface(javautil,"Enumeration"); +Clazz_declareInterface(javautil,"Collection",Iterable); + +Clazz_declareInterface(javautil,"Set",javautil.Collection); +Clazz_declareInterface(javautil,"Map"); +Clazz_declareInterface(javautil.Map,"Entry"); + +Clazz_declareInterface(javautil,"List",javautil.Collection); + +Clazz_declareInterface(javautil,"Queue",javautil.Collection); +Clazz_declareInterface(javautil,"RandomAccess"); +c$=Clazz_decorateAsClass(function(){ +this.detailMessage=null; +this.cause=null; +this.stackTrace=null; +Clazz_instantialize(this,arguments); +},java.lang,"Throwable",null,java.io.Serializable); +Clazz_prepareFields(c$,function(){ +this.cause=this; +//alert("e0 "+ arguments.callee.caller.caller.caller.caller.caller) +}); +Clazz_makeConstructor(c$, +function(){ +this.fillInStackTrace(); +}); +Clazz_makeConstructor(c$, +function(message,cause){ +this.fillInStackTrace(); +if (!cause && typeof message == "object") { + cause = message; + message = cause.toString(); +} +cause && (this.cause=cause); +this.detailMessage=message; +},"~S,Throwable"); + + + + +Clazz_defineMethod(c$,"getMessage", +function(){ +return (this.message || this.detailMessage || this.toString()); +}); +Clazz_defineMethod(c$,"getLocalizedMessage", +function(){ +return this.getMessage(); +}); +Clazz_defineMethod(c$,"getCause", +function(){ +return(this.cause===this?null:this.cause); +}); +Clazz_defineMethod(c$,"initCause", +function(cause){ +if(this.cause!==this)throw new IllegalStateException("Can't overwrite cause"); +if(cause===this)throw new IllegalArgumentException("Self-causation not permitted"); +this.cause=cause; +return this; +},"Throwable"); +Clazz_overrideMethod(c$,"toString", +function(){ +var s=this.getClass().getName(); +var message=this.message || this.detailMessage; +return(message ? s+": "+message : s); +}); +Clazz_defineMethod(c$,"printStackTrace", +function(){ +System.err.println(this.getStackTrace ? this.getStackTrace() : this.message + " " + Clazz_getStackTrace()); +}); + +Clazz_defineMethod(c$,"getStackTrace", +function(){ +var s = "" + this + "\n"; +for(var i=0;i-1||caller!=null){ +var clazzName=null; +var nativeClass=null; +if(!noLooping||caller==Clazz_tryToSearchAndExecute||caller==Clazz_superCall||caller==null){ +if(index<0){ +break; +} +noLooping=true; +superCaller=Clazz._callingStackTraces[index].caller; +nativeClass=Clazz._callingStackTraces[index].owner; +index--; +}else{ +superCaller=caller; +if(superCaller.claxxOwner!=null){ +nativeClass=superCaller.claxxOwner; +}else if(superCaller.exClazz!=null){ +nativeClass=superCaller.exClazz; +} +} +var st=new StackTraceElement( +((nativeClass!=null&&nativeClass.__CLASS_NAME__.length!=0)? +nativeClass.__CLASS_NAME__:"anonymous"), +((superCaller.exName==null)?"anonymous":superCaller.exName) ++" ("+Clazz_getParamsType(superCaller.arguments)+")", +null,-1); +st.nativeClazz=nativeClass; +this.stackTrace[this.stackTrace.length]=st; +for(var i=0;i":this.declaringClass; +}); +Clazz_defineMethod(c$,"getFileName", +function(){ +return this.fileName; +}); +Clazz_defineMethod(c$,"getLineNumber", +function(){ +return this.lineNumber; +}); +Clazz_defineMethod(c$,"getMethodName", +function(){ +return(this.methodName==null)?"":this.methodName; +}); +Clazz_overrideMethod(c$,"hashCode", +function(){ +if(this.methodName==null){ +return 0; +}return this.methodName.hashCode()^this.declaringClass.hashCode(); +}); +Clazz_defineMethod(c$,"isNativeMethod", +function(){ +return this.lineNumber==-2; +}); +Clazz_overrideMethod(c$,"toString", +function(){ +var buf = this.getClassName() + "." + this.getMethodName(); +if(this.isNativeMethod()){ +buf += ("(Native Method)"); +}else{ +var fName=this.getFileName(); +if(fName==null){ +buf += ("(Unknown Source)"); +}else{ +var lineNum=this.getLineNumber(); +buf += ('('); +buf += (fName); +if(lineNum>=0){ +buf += (':'); +buf = buf + lineNum; +}buf += (')'); +}}return buf; +}); +TypeError.prototype.getMessage || (TypeError.prototype.getMessage = function(){ return (this.message || this.toString()) + (this.getStackTrace ? this.getStackTrace() : Clazz_getStackTrace())}); + + +Clazz_Error = Error; + +Clazz_declareTypeError = function (prefix, name, clazzParent, interfacez, + parentClazzInstance, _declareType) { + var f = function () { + Clazz_instantialize (this, arguments); + return Clazz_Error(); + }; + return Clazz_decorateAsClass (f, prefix, name, clazzParent, interfacez, + parentClazzInstance); +}; + +// at least allow Error() by itself to work as before +Clazz._Error || (Clazz._Error = Error); +Clazz_decorateAsClass (function (){Clazz_instantialize(this, arguments);return Clazz._Error();}, java.lang, "Error", Throwable); + +//c$=Clazz_declareTypeError(java.lang,"Error",Throwable); + + +c$=Clazz_declareType(java.lang,"LinkageError",Error); + +c$=Clazz_declareType(java.lang,"IncompatibleClassChangeError",LinkageError); + +c$=Clazz_declareType(java.lang,"AbstractMethodError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"AssertionError",Error); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,AssertionError,["" + detailMessage,(Clazz_instanceOf(detailMessage,Throwable)?detailMessage:null)]); +},"~O"); + +c$=Clazz_declareType(java.lang,"ClassCircularityError",LinkageError); + +c$=Clazz_declareType(java.lang,"ClassFormatError",LinkageError); + +c$=Clazz_decorateAsClass(function(){ +this.exception=null; +Clazz_instantialize(this,arguments); +},java.lang,"ExceptionInInitializerError",LinkageError); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ExceptionInInitializerError); +this.initCause(null); +}); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,ExceptionInInitializerError,[detailMessage]); +this.initCause(null); +},"~S"); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,ExceptionInInitializerError); +this.exception=exception; +this.initCause(exception); +},"Throwable"); +Clazz_defineMethod(c$,"getException", +function(){ +return this.exception; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.exception; +}); + +c$=Clazz_declareType(java.lang,"IllegalAccessError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"InstantiationError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"VirtualMachineError",Error); + +c$=Clazz_declareType(java.lang,"InternalError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"NoClassDefFoundError",LinkageError); + +c$=Clazz_declareType(java.lang,"NoSuchFieldError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"NoSuchMethodError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"OutOfMemoryError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"StackOverflowError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"UnknownError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"UnsatisfiedLinkError",LinkageError); + +c$=Clazz_declareType(java.lang,"UnsupportedClassVersionError",ClassFormatError); + +c$=Clazz_declareType(java.lang,"VerifyError",LinkageError); + +c$=Clazz_declareType(java.lang,"ThreadDeath",Error); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ThreadDeath,[]); +}); + +c$=Clazz_declareType(java.lang,"Exception",Throwable); + +c$=Clazz_declareType(java.lang,"RuntimeException",Exception); + +c$=Clazz_declareType(java.lang,"ArithmeticException",RuntimeException); + +c$=Clazz_declareType(java.lang,"IndexOutOfBoundsException",RuntimeException); + +c$=Clazz_declareType(java.lang,"ArrayIndexOutOfBoundsException",IndexOutOfBoundsException); +Clazz_makeConstructor(c$, +function(index){ +Clazz_superConstructor(this,ArrayIndexOutOfBoundsException,["Array index out of range: "+index]); +},"~N"); + +c$=Clazz_declareType(java.lang,"ArrayStoreException",RuntimeException); + +c$=Clazz_declareType(java.lang,"ClassCastException",RuntimeException); + +c$=Clazz_decorateAsClass(function(){ +this.ex=null; +Clazz_instantialize(this,arguments); +},java.lang,"ClassNotFoundException",Exception); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ClassNotFoundException,[Clazz_castNullAs("Throwable")]); +}); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,ClassNotFoundException,[detailMessage,null]); +},"~S"); +Clazz_makeConstructor(c$, +function(detailMessage,exception){ +Clazz_superConstructor(this,ClassNotFoundException,[detailMessage]); +this.ex=exception; +},"~S,Throwable"); +Clazz_defineMethod(c$,"getException", +function(){ +return this.ex; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.ex; +}); + +c$=Clazz_declareType(java.lang,"CloneNotSupportedException",Exception); + +c$=Clazz_declareType(java.lang,"IllegalAccessException",Exception); + +c$=Clazz_declareType(java.lang,"IllegalArgumentException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,IllegalArgumentException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"IllegalMonitorStateException",RuntimeException); + +c$=Clazz_declareType(java.lang,"IllegalStateException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,IllegalStateException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"IllegalThreadStateException",IllegalArgumentException); + +c$=Clazz_declareType(java.lang,"InstantiationException",Exception); + +c$=Clazz_declareType(java.lang,"InterruptedException",Exception); + +c$=Clazz_declareType(java.lang,"NegativeArraySizeException",RuntimeException); + +c$=Clazz_declareType(java.lang,"NoSuchFieldException",Exception); + +c$=Clazz_declareType(java.lang,"NoSuchMethodException",Exception); + +c$=Clazz_declareType(java.lang,"NullPointerException",RuntimeException); + +c$=Clazz_declareType(java.lang,"NumberFormatException",IllegalArgumentException); + +c$=Clazz_declareType(java.lang,"SecurityException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,SecurityException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"StringIndexOutOfBoundsException",IndexOutOfBoundsException); +Clazz_makeConstructor(c$, +function(index){ +Clazz_superConstructor(this,StringIndexOutOfBoundsException,["String index out of range: "+index]); +},"~N"); + +c$=Clazz_declareType(java.lang,"UnsupportedOperationException",RuntimeException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,UnsupportedOperationException,[]); +}); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,UnsupportedOperationException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_decorateAsClass(function(){ +this.target=null; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"InvocationTargetException",Exception); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[Clazz_castNullAs("Throwable")]); +}); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[null,exception]); +this.target=exception; +},"Throwable"); +Clazz_makeConstructor(c$, +function(exception,detailMessage){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[detailMessage,exception]); +this.target=exception; +},"Throwable,~S"); +Clazz_defineMethod(c$,"getTargetException", +function(){ +return this.target; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.target; +}); + +c$=Clazz_decorateAsClass(function(){ +this.undeclaredThrowable=null; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"UndeclaredThrowableException",RuntimeException); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,java.lang.reflect.UndeclaredThrowableException); +this.undeclaredThrowable=exception; +this.initCause(exception); +},"Throwable"); +Clazz_makeConstructor(c$, +function(exception,detailMessage){ +Clazz_superConstructor(this,java.lang.reflect.UndeclaredThrowableException,[detailMessage]); +this.undeclaredThrowable=exception; +this.initCause(exception); +},"Throwable,~S"); +Clazz_defineMethod(c$,"getUndeclaredThrowable", +function(){ +return this.undeclaredThrowable; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.undeclaredThrowable; +}); + +c$=Clazz_declareType(java.io,"IOException",Exception); + + +c$=Clazz_declareType(java.io,"CharConversionException",java.io.IOException); + +c$=Clazz_declareType(java.io,"EOFException",java.io.IOException); + +c$=Clazz_declareType(java.io,"FileNotFoundException",java.io.IOException); + +c$=Clazz_decorateAsClass(function(){ +this.bytesTransferred=0; +Clazz_instantialize(this,arguments); +},java.io,"InterruptedIOException",java.io.IOException); + +c$=Clazz_declareType(java.io,"SyncFailedException",java.io.IOException); + +c$=Clazz_declareType(java.io,"UnsupportedEncodingException",java.io.IOException); + +c$=Clazz_declareType(java.io,"UTFDataFormatException",java.io.IOException); + +// ignore ObjectStream exceptions + +Clazz_defineMethod(c$,"getMessage", +function(){ +var msg=Clazz_superCall(this,java.io.WriteAbortedException,"getMessage",[]); +return (this.detail ? msg + "; "+this.detail.toString() : msg); +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.detail; +}); + +c$=Clazz_declareType(javautil,"ConcurrentModificationException",RuntimeException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,javautil.ConcurrentModificationException,[]); +}); + +c$=Clazz_declareType(javautil,"EmptyStackException",RuntimeException); + +c$=Clazz_decorateAsClass(function(){ +this.className=null; +this.key=null; +Clazz_instantialize(this,arguments); +},javautil,"MissingResourceException",RuntimeException); +Clazz_makeConstructor(c$, +function(detailMessage,className,resourceName){ +Clazz_superConstructor(this,javautil.MissingResourceException,[detailMessage]); +this.className=className; +this.key=resourceName; +},"~S,~S,~S"); +Clazz_defineMethod(c$,"getClassName", +function(){ +return this.className; +}); +Clazz_defineMethod(c$,"getKey", +function(){ +return this.key; +}); + +c$=Clazz_declareType(javautil,"NoSuchElementException",RuntimeException); + +c$=Clazz_declareType(javautil,"TooManyListenersException",Exception); + +c$=Clazz_declareType(java.lang,"Void"); +c$.TYPE = c$; + +Clazz_declareInterface(java.lang.reflect,"GenericDeclaration"); +Clazz_declareInterface(java.lang.reflect,"AnnotatedElement"); + +c$=Clazz_declareType(java.lang.reflect,"AccessibleObject",null,java.lang.reflect.AnnotatedElement); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$,"isAccessible", +function(){ +return false; +}); +c$.setAccessible=Clazz_defineMethod(c$,"setAccessible", +function(objects,flag){ +return; +},"~A,~B"); +Clazz_defineMethod(c$,"setAccessible", +function(flag){ +return; +},"~B"); +Clazz_overrideMethod(c$,"isAnnotationPresent", +function(annotationType){ +return false; +},"Class"); +Clazz_overrideMethod(c$,"getDeclaredAnnotations", +function(){ +return new Array(0); +}); +Clazz_overrideMethod(c$,"getAnnotations", +function(){ +return new Array(0); +}); +Clazz_overrideMethod(c$,"getAnnotation", +function(annotationType){ +return null; +},"Class"); +c$.marshallArguments=Clazz_defineMethod(c$,"marshallArguments", +function(parameterTypes,args){ +return null; +},"~A,~A"); +Clazz_defineMethod(c$,"invokeV", +function(receiver,args){ +return; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeL", +function(receiver,args){ +return null; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeI", +function(receiver,args){ +return 0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeJ", +function(receiver,args){ +return 0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeF", +function(receiver,args){ +return 0.0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeD", +function(receiver,args){ +return 0.0; +},"~O,~A"); +c$.emptyArgs=c$.prototype.emptyArgs=new Array(0); +Clazz_declareInterface(java.lang.reflect,"InvocationHandler"); +c$=Clazz_declareInterface(java.lang.reflect,"Member"); +c$=Clazz_declareType(java.lang.reflect,"Modifier"); + +Clazz_makeConstructor(c$, +function(){ +}); +c$.isAbstract=Clazz_defineMethod(c$,"isAbstract", +function(modifiers){ +return((modifiers&1024)!=0); +},"~N"); +c$.isFinal=Clazz_defineMethod(c$,"isFinal", +function(modifiers){ +return((modifiers&16)!=0); +},"~N"); +c$.isInterface=Clazz_defineMethod(c$,"isInterface", +function(modifiers){ +return((modifiers&512)!=0); +},"~N"); +c$.isNative=Clazz_defineMethod(c$,"isNative", +function(modifiers){ +return((modifiers&256)!=0); +},"~N"); +c$.isPrivate=Clazz_defineMethod(c$,"isPrivate", +function(modifiers){ +return((modifiers&2)!=0); +},"~N"); +c$.isProtected=Clazz_defineMethod(c$,"isProtected", +function(modifiers){ +return((modifiers&4)!=0); +},"~N"); +c$.isPublic=Clazz_defineMethod(c$,"isPublic", +function(modifiers){ +return((modifiers&1)!=0); +},"~N"); +c$.isStatic=Clazz_defineMethod(c$,"isStatic", +function(modifiers){ +return((modifiers&8)!=0); +},"~N"); +c$.isStrict=Clazz_defineMethod(c$,"isStrict", +function(modifiers){ +return((modifiers&2048)!=0); +},"~N"); +c$.isSynchronized=Clazz_defineMethod(c$,"isSynchronized", +function(modifiers){ +return((modifiers&32)!=0); +},"~N"); +c$.isTransient=Clazz_defineMethod(c$,"isTransient", +function(modifiers){ +return((modifiers&128)!=0); +},"~N"); +c$.isVolatile=Clazz_defineMethod(c$,"isVolatile", +function(modifiers){ +return((modifiers&64)!=0); +},"~N"); +c$.toString=Clazz_defineMethod(c$,"toString", +function(modifiers){ +var sb=new Array(0); +if(java.lang.reflect.Modifier.isPublic(modifiers))sb[sb.length]="public"; +if(java.lang.reflect.Modifier.isProtected(modifiers))sb[sb.length]="protected"; +if(java.lang.reflect.Modifier.isPrivate(modifiers))sb[sb.length]="private"; +if(java.lang.reflect.Modifier.isAbstract(modifiers))sb[sb.length]="abstract"; +if(java.lang.reflect.Modifier.isStatic(modifiers))sb[sb.length]="static"; +if(java.lang.reflect.Modifier.isFinal(modifiers))sb[sb.length]="final"; +if(java.lang.reflect.Modifier.isTransient(modifiers))sb[sb.length]="transient"; +if(java.lang.reflect.Modifier.isVolatile(modifiers))sb[sb.length]="volatile"; +if(java.lang.reflect.Modifier.isSynchronized(modifiers))sb[sb.length]="synchronized"; +if(java.lang.reflect.Modifier.isNative(modifiers))sb[sb.length]="native"; +if(java.lang.reflect.Modifier.isStrict(modifiers))sb[sb.length]="strictfp"; +if(java.lang.reflect.Modifier.isInterface(modifiers))sb[sb.length]="interface"; +if(sb.length>0){ +return sb.join(" "); +}return""; +},"~N"); + +c$=Clazz_decorateAsClass(function(){ +this.clazz=null; +this.parameterTypes=null; +this.exceptionTypes=null; +this.modifiers=0; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"Constructor",java.lang.reflect.AccessibleObject,[java.lang.reflect.GenericDeclaration,java.lang.reflect.Member]); +Clazz_makeConstructor(c$, +function(declaringClass,parameterTypes,checkedExceptions,modifiers){ +Clazz_superConstructor(this,java.lang.reflect.Constructor,[]); +this.clazz=declaringClass; +this.parameterTypes=parameterTypes; +this.exceptionTypes=checkedExceptions; +this.modifiers=modifiers; +},"Class,~A,~A,~N"); +Clazz_overrideMethod(c$,"getTypeParameters", +function(){ +return null; +}); +Clazz_defineMethod(c$,"toGenericString", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getGenericParameterTypes", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getGenericExceptionTypes", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getParameterAnnotations", +function(){ +return null; +}); +Clazz_defineMethod(c$,"isVarArgs", +function(){ +return false; +}); +Clazz_overrideMethod(c$,"isSynthetic", +function(){ +return false; +}); +Clazz_overrideMethod(c$,"equals", +function(object){ +if(object!=null&&Clazz_instanceOf(object,java.lang.reflect.Constructor)){ +var other=object; +if(this.getDeclaringClass()===other.getDeclaringClass()){ +var params1=this.parameterTypes; +var params2=other.parameterTypes; +if(params1.length==params2.length){ +for(var i=0;i 10 || newPriority < 1) { +throw new IllegalArgumentException(); +}this.priority = newPriority; +}, "~N"); +Clazz_defineMethod(c$, "getPriority", +function(){ +return this.priority; +}); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "getName", +function(){ +return String.valueOf(this.name); +}); +Clazz_defineMethod(c$, "getThreadGroup", +function(){ +return this.group; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +var group = this.getThreadGroup(); +if (group != null) { +return "Thread[" + this.getName() + "," + this.getPriority() + "," + group.getName() + "]"; +} else { +return "Thread[" + this.getName() + "," + this.getPriority() + "," + "" + "]"; +}}); +c$.J2S_THREAD = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.parent = null; +this.name = null; +this.maxPriority = 0; +Clazz_instantialize(this, arguments);}, java.lang, "ThreadGroup", null); +Clazz_makeConstructor(c$, +function(){ +this.name = "system"; +this.maxPriority = 10; +}); +Clazz_makeConstructor(c$, +function(name){ +this.construct (Thread.currentThread().getThreadGroup(), name); +}, "~S"); +Clazz_makeConstructor(c$, +function(parent, name){ +if (parent == null) { +throw new NullPointerException(); +}this.name = name; +this.parent = parent; +this.maxPriority = 10; +}, "ThreadGroup,~S"); +Clazz_defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_defineMethod(c$, "getParent", +function(){ +return this.parent; +}); +Clazz_defineMethod(c$, "getMaxPriority", +function(){ +return this.maxPriority; +}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.FilterInputStream"], "java.io.BufferedInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.count = 0; +this.pos = 0; +this.markpos = -1; +this.marklimit = 0; +Clazz_instantialize(this, arguments);}, java.io, "BufferedInputStream", java.io.FilterInputStream); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor(this, java.io.BufferedInputStream, [$in]); +this.buf = Clazz_newByteArray (8192, 0); +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "getInIfOpen", +function(){ +var input = this.$in; +if (input == null) throw new java.io.IOException("Stream closed"); +return input; +}); +Clazz_defineMethod(c$, "getBufIfOpen", +function(){ +var buffer = this.buf; +if (buffer == null) throw new java.io.IOException("Stream closed"); +return buffer; +}); +Clazz_overrideMethod(c$, "resetStream", +function(){ +}); +Clazz_defineMethod(c$, "fill", +function(){ +var buffer = this.getBufIfOpen(); +if (this.markpos < 0) this.pos = 0; + else if (this.pos >= buffer.length) if (this.markpos > 0) { +var sz = this.pos - this.markpos; +System.arraycopy(buffer, this.markpos, buffer, 0, sz); +this.pos = sz; +this.markpos = 0; +} else if (buffer.length >= this.marklimit) { +this.markpos = -1; +this.pos = 0; +} else { +var nsz = this.pos * 2; +if (nsz > this.marklimit) nsz = this.marklimit; +var nbuf = Clazz_newByteArray (nsz, 0); +System.arraycopy(buffer, 0, nbuf, 0, this.pos); +buffer = this.buf = nbuf; +}this.count = this.pos; +var n = this.isRead(buffer, this.pos, buffer.length - this.pos); +if (n > 0) this.count = n + this.pos; +}); +Clazz_overrideMethod(c$, "readByteAsInt", +function(){ +if (this.pos >= this.count) { +this.fill(); +if (this.pos >= this.count) return -1; +}return this.getBufIfOpen()[this.pos++] & 0xff; +}); +Clazz_defineMethod(c$, "read1", +function(b, off, len){ +var avail = this.count - this.pos; +if (avail <= 0) { +if (len >= this.getBufIfOpen().length && this.markpos < 0) { +return this.isRead(b, off, len); +}this.fill(); +avail = this.count - this.pos; +if (avail <= 0) return -1; +}var cnt = (avail < len) ? avail : len; +System.arraycopy(this.getBufIfOpen(), this.pos, b, off, cnt); +this.pos += cnt; +return cnt; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "isRead", +function(b, off, len){ +var is = this.getInIfOpen(); +{ +if (is.readBAIS) return is.readBAIS(b, off, len); +}return is.read(b, off, len); +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.readBIS(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readBIS", +function(b, off, len){ +this.getBufIfOpen(); +if ((off | len | (off + len) | (b.length - (off + len))) < 0) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var n = 0; +for (; ; ) { +var nread = this.read1(b, off + n, len - n); +if (nread <= 0) return (n == 0) ? nread : n; +n += nread; +if (n >= len) return n; +var input = this.$in; +if (input != null && input.available() <= 0) return n; +} +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(n){ +this.getBufIfOpen(); +if (n <= 0) { +return 0; +}var avail = this.count - this.pos; +if (avail <= 0) { +if (this.markpos < 0) return this.getInIfOpen().skip(n); +this.fill(); +avail = this.count - this.pos; +if (avail <= 0) return 0; +}var skipped = (avail < n) ? avail : n; +this.pos += skipped; +return skipped; +}, "~N"); +Clazz_overrideMethod(c$, "available", +function(){ +var n = this.count - this.pos; +var avail = this.getInIfOpen().available(); +return n > (2147483647 - avail) ? 2147483647 : n + avail; +}); +Clazz_overrideMethod(c$, "mark", +function(readlimit){ +this.marklimit = readlimit; +this.markpos = this.pos; +}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.getBufIfOpen(); +if (this.markpos < 0) throw new java.io.IOException("Resetting to invalid mark"); +this.pos = this.markpos; +}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "close", +function(){ +var input = this.$in; +this.$in = null; +if (input != null) input.close(); +return; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.BufferedReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +this.cb = null; +this.nChars = 0; +this.nextChar = 0; +this.markedChar = -1; +this.readAheadLimit = 0; +this.skipLF = false; +this.markedSkipLF = false; +Clazz_instantialize(this, arguments);}, java.io, "BufferedReader", java.io.Reader); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor(this, java.io.BufferedReader, [$in]); +this.$in = $in; +this.setSize(8192); +}, "java.io.Reader"); +Clazz_defineMethod(c$, "setSize", +function(sz){ +if (sz <= 0) throw new IllegalArgumentException("Buffer size <= 0"); +this.cb = Clazz_newCharArray (sz, '\0'); +this.nextChar = this.nChars = 0; +}, "~N"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.$in == null) throw new java.io.IOException("Stream closed"); +}); +Clazz_defineMethod(c$, "fill", +function(){ +var dst; +if (this.markedChar <= -1) { +dst = 0; +} else { +var delta = this.nextChar - this.markedChar; +if (delta >= this.readAheadLimit) { +this.markedChar = -2; +this.readAheadLimit = 0; +dst = 0; +} else { +if (this.readAheadLimit <= this.cb.length) { +System.arraycopy(this.cb, this.markedChar, this.cb, 0, delta); +this.markedChar = 0; +dst = delta; +} else { +var ncb = Clazz_newCharArray (this.readAheadLimit, '\0'); +System.arraycopy(this.cb, this.markedChar, ncb, 0, delta); +this.cb = ncb; +this.markedChar = 0; +dst = delta; +}this.nextChar = this.nChars = delta; +}}var n; +do { +n = this.$in.read(this.cb, dst, this.cb.length - dst); +} while (n == 0); +if (n > 0) { +this.nChars = dst + n; +this.nextChar = dst; +}}); +Clazz_defineMethod(c$, "read1", +function(cbuf, off, len){ +if (this.nextChar >= this.nChars) { +if (len >= this.cb.length && this.markedChar <= -1 && !this.skipLF) { +return this.$in.read(cbuf, off, len); +}this.fill(); +}if (this.nextChar >= this.nChars) return -1; +if (this.skipLF) { +this.skipLF = false; +if (this.cb[this.nextChar] == '\n') { +this.nextChar++; +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) return -1; +}}var n = Math.min(len, this.nChars - this.nextChar); +System.arraycopy(this.cb, this.nextChar, cbuf, off, n); +this.nextChar += n; +return n; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "read", +function(cbuf, off, len){ +{ +this.ensureOpen(); +if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var n = this.read1(cbuf, off, len); +if (n <= 0) return n; +while ((n < len) && this.$in.ready()) { +var n1 = this.read1(cbuf, off + n, len - n); +if (n1 <= 0) break; +n += n1; +} +return n; +}}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readLine1", +function(ignoreLF){ +var s = null; +var startChar; +{ +this.ensureOpen(); +var omitLF = ignoreLF || this.skipLF; +for (; ; ) { +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) { +if (s != null && s.length > 0) return s.toString(); +return null; +}var eol = false; +var c = String.fromCharCode(0); +var i; +if (omitLF && (this.cb[this.nextChar] == '\n')) this.nextChar++; +this.skipLF = false; +omitLF = false; +charLoop : for (i = this.nextChar; i < this.nChars; i++) { +c = this.cb[i]; +if ((c == '\n') || (c == '\r')) { +eol = true; +break charLoop; +}} +startChar = this.nextChar; +this.nextChar = i; +var str = String.instantialize(this.cb, startChar, i - startChar); +if (eol) { +if (s != null) { +s += str; +str = s; +}this.nextChar++; +if (c == '\r') { +this.skipLF = true; +}return str; +}if (s == null) s = ""; +s += str; +} +}}, "~B"); +Clazz_defineMethod(c$, "readLine", +function(){ +return this.readLine1(false); +}); +Clazz_overrideMethod(c$, "skip", +function(n){ +if (n < 0) { +throw new IllegalArgumentException("skip value is negative"); +}{ +this.ensureOpen(); +var r = n; +while (r > 0) { +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) break; +if (this.skipLF) { +this.skipLF = false; +if (this.cb[this.nextChar] == '\n') { +this.nextChar++; +}}var d = this.nChars - this.nextChar; +if (r <= d) { +this.nextChar += r; +r = 0; +break; +}r -= d; +this.nextChar = this.nChars; +} +return n - r; +}}, "~N"); +Clazz_defineMethod(c$, "ready", +function(){ +{ +this.ensureOpen(); +if (this.skipLF) { +if (this.nextChar >= this.nChars && this.$in.ready()) { +this.fill(); +}if (this.nextChar < this.nChars) { +if (this.cb[this.nextChar] == '\n') this.nextChar++; +this.skipLF = false; +}}return (this.nextChar < this.nChars) || this.$in.ready(); +}}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +if (readAheadLimit < 0) { +throw new IllegalArgumentException("Read-ahead limit < 0"); +}{ +this.ensureOpen(); +this.readAheadLimit = readAheadLimit; +this.markedChar = this.nextChar; +this.markedSkipLF = this.skipLF; +}}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +{ +this.ensureOpen(); +if (this.markedChar < 0) throw new java.io.IOException((this.markedChar == -2) ? "Mark invalid" : "Stream not marked"); +this.nextChar = this.markedChar; +this.skipLF = this.markedSkipLF; +}}); +Clazz_defineMethod(c$, "close", +function(){ +{ +if (this.$in == null) return; +this.$in.close(); +this.$in = null; +this.cb = null; +}}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Writer"], "java.io.BufferedWriter", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.out = null; +this.buf = null; +this.pos = 0; +this.lineSeparator = "\r\n"; +Clazz_instantialize(this, arguments);}, java.io, "BufferedWriter", java.io.Writer); +Clazz_makeConstructor(c$, +function(out){ +Clazz_superConstructor(this, java.io.BufferedWriter, [out]); +this.out = out; +this.buf = Clazz_newCharArray (8192, '\0'); +}, "java.io.Writer"); +Clazz_makeConstructor(c$, +function(out, size){ +Clazz_superConstructor(this, java.io.BufferedWriter, [out]); +if (size > 0) { +this.out = out; +this.buf = Clazz_newCharArray (size, '\0'); +} else { +throw new IllegalArgumentException(("K0058")); +}}, "java.io.Writer,~N"); +Clazz_defineMethod(c$, "close", +function(){ +{ +if (this.isOpen()) { +this.flush(); +this.out.close(); +this.buf = null; +this.out = null; +}}}); +Clazz_defineMethod(c$, "flush", +function(){ +{ +if (this.isOpen()) { +if (this.pos > 0) { +this.out.write(this.buf, 0, this.pos); +}this.pos = 0; +this.out.flush(); +} else { +throw new java.io.IOException(("K005d")); +}}}); +Clazz_defineMethod(c$, "isOpen", +function(){ +return this.out != null; +}); +Clazz_defineMethod(c$, "newLine", +function(){ +this.write("\r\n", 0, "\r\n".length); +}); +Clazz_defineMethod(c$, "write", +function(cbuf, offset, count){ +{ +if (!this.isOpen()) { +throw new java.io.IOException(("K005d")); +}if (offset < 0 || offset > cbuf.length - count || count < 0) { +throw new IndexOutOfBoundsException(); +}if (this.pos == 0 && count >= this.buf.length) { +this.out.write(cbuf, offset, count); +return; +}var available = this.buf.length - this.pos; +if (count < available) { +available = count; +}if (available > 0) { +System.arraycopy(cbuf, offset, this.buf, this.pos, available); +this.pos += available; +}if (this.pos == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +if (count > available) { +offset += available; +available = count - available; +if (available >= this.buf.length) { +this.out.write(cbuf, offset, available); +return; +}System.arraycopy(cbuf, offset, this.buf, this.pos, available); +this.pos += available; +}}}}, "~A,~N,~N"); +Clazz_defineMethod(c$, "write", +function(oneChar){ +{ +if (this.isOpen()) { +if (this.pos >= this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +}this.buf[this.pos++] = String.fromCharCode(oneChar); +} else { +throw new java.io.IOException(("K005d")); +}}}, "~N"); +Clazz_defineMethod(c$, "write", +function(str, offset, count){ +{ +if (!this.isOpen()) { +throw new java.io.IOException(("K005d")); +}if (count <= 0) { +return; +}if (offset > str.length - count || offset < 0) { +throw new StringIndexOutOfBoundsException(); +}if (this.pos == 0 && count >= this.buf.length) { +var chars = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + count, chars, 0); +this.out.write(chars, 0, count); +return; +}var available = this.buf.length - this.pos; +if (count < available) { +available = count; +}if (available > 0) { +str.getChars(offset, offset + available, this.buf, this.pos); +this.pos += available; +}if (this.pos == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +if (count > available) { +offset += available; +available = count - available; +if (available >= this.buf.length) { +var chars = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + available, chars, 0); +this.out.write(chars, 0, available); +return; +}str.getChars(offset, offset + available, this.buf, this.pos); +this.pos += available; +}}}}, "~S,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.InputStream"], "java.io.ByteArrayInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.pos = 0; +this.$mark = 0; +this.count = 0; +Clazz_instantialize(this, arguments);}, java.io, "ByteArrayInputStream", java.io.InputStream); +Clazz_makeConstructor(c$, +function(buf){ +Clazz_superConstructor (this, java.io.ByteArrayInputStream, []); +this.buf = buf; +this.pos = 0; +this.count = buf.length; +}, "~A"); +Clazz_overrideMethod(c$, "readByteAsInt", +function(){ +return (this.pos < this.count) ? (this.buf[this.pos++] & 0xff) : -1; +}); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.readBAIS(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readBAIS", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +}if (this.pos >= this.count) { +return -1; +}var avail = this.count - this.pos; +if (len > avail) { +len = avail; +}if (len <= 0) { +return 0; +}System.arraycopy(this.buf, this.pos, b, off, len); +this.pos += len; +return len; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(n){ +var k = this.count - this.pos; +if (n < k) { +k = n < 0 ? 0 : n; +}this.pos += k; +return k; +}, "~N"); +Clazz_overrideMethod(c$, "available", +function(){ +return this.count - this.pos; +}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +this.$mark = this.pos; +}, "~N"); +Clazz_overrideMethod(c$, "resetStream", +function(){ +}); +Clazz_overrideMethod(c$, "reset", +function(){ +this.pos = this.$mark; +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.OutputStream"], "java.io.ByteArrayOutputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.count = 0; +Clazz_instantialize(this, arguments);}, java.io, "ByteArrayOutputStream", java.io.OutputStream); +Clazz_makeConstructor(c$, +function(){ +this.construct (32); +}); +Clazz_makeConstructor(c$, +function(size){ +Clazz_superConstructor (this, java.io.ByteArrayOutputStream, []); +if (size < 0) { +throw new IllegalArgumentException("Negative initial size: " + size); +}this.buf = Clazz_newByteArray (size, 0); +}, "~N"); +Clazz_defineMethod(c$, "ensureCapacity", +function(minCapacity){ +if (minCapacity - this.buf.length > 0) this.grow(minCapacity); +}, "~N"); +Clazz_defineMethod(c$, "grow", +function(minCapacity){ +var oldCapacity = this.buf.length; +var newCapacity = oldCapacity << 1; +if (newCapacity - minCapacity < 0) newCapacity = minCapacity; +if (newCapacity < 0) { +if (minCapacity < 0) throw new OutOfMemoryError(); +newCapacity = minCapacity; +}this.buf = java.io.ByteArrayOutputStream.arrayCopyByte(this.buf, newCapacity); +}, "~N"); +c$.arrayCopyByte = Clazz_defineMethod(c$, "arrayCopyByte", +function(array, newLength){ +var t = Clazz_newByteArray (newLength, 0); +System.arraycopy(array, 0, t, 0, array.length < newLength ? array.length : newLength); +return t; +}, "~A,~N"); +Clazz_overrideMethod(c$, "writeByteAsInt", +function(b){ +this.ensureCapacity(this.count + 1); +this.buf[this.count] = b; +this.count += 1; +}, "~N"); +Clazz_defineMethod(c$, "write", +function(b, off, len){ +if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) - b.length > 0)) { +throw new IndexOutOfBoundsException(); +}this.ensureCapacity(this.count + len); +System.arraycopy(b, off, this.buf, this.count, len); +this.count += len; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "writeTo", +function(out){ +out.write(this.buf, 0, this.count); +}, "java.io.OutputStream"); +Clazz_defineMethod(c$, "reset", +function(){ +this.count = 0; +}); +Clazz_defineMethod(c$, "toByteArray", +function(){ +return (this.count == this.buf.length ? this.buf : java.io.ByteArrayOutputStream.arrayCopyByte(this.buf, this.count)); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.count; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return String.instantialize(this.buf, 0, this.count); +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.InputStream"], "java.io.FilterInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +Clazz_instantialize(this, arguments);}, java.io, "FilterInputStream", java.io.InputStream); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor (this, java.io.FilterInputStream, []); +this.$in = $in; +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "readByteAsInt", +function(){ +return this.$in.readByteAsInt(); +}); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.$in.read(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "skip", +function(n){ +return this.$in.skip(n); +}, "~N"); +Clazz_defineMethod(c$, "available", +function(){ +return this.$in.available(); +}); +Clazz_defineMethod(c$, "close", +function(){ +this.$in.close(); +}); +Clazz_defineMethod(c$, "mark", +function(readlimit){ +this.$in.mark(readlimit); +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +this.$in.reset(); +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return this.$in.markSupported(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable"], "java.io.InputStream", null, function(){ +var c$ = Clazz_declareType(java.io, "InputStream", null, java.io.Closeable); +Clazz_defineMethod(c$, "read", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var c = this.readByteAsInt(); +if (c == -1) { +return -1; +}b[off] = c; +var i = 1; +try { +for (; i < len; i++) { +c = this.readByteAsInt(); +if (c == -1) { +break; +}b[off + i] = c; +} +} catch (ee) { +if (Clazz_exceptionOf(ee,"java.io.IOException")){ +} else { +throw ee; +} +} +return i; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "skip", +function(n){ +var remaining = n; +var nr; +if (java.io.InputStream.skipBuffer == null) java.io.InputStream.skipBuffer = Clazz_newByteArray (2048, 0); +var localSkipBuffer = java.io.InputStream.skipBuffer; +if (n <= 0) { +return 0; +}while (remaining > 0) { +nr = this.read(localSkipBuffer, 0, Math.min(2048, remaining)); +if (nr < 0) { +break; +}remaining -= nr; +} +return n - remaining; +}, "~N"); +Clazz_defineMethod(c$, "available", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +Clazz_defineMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_defineMethod(c$, "resetStream", +function(){ +}); +c$.skipBuffer = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.InputStreamReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +this.isOpen = true; +this.charsetName = null; +this.isUTF8 = false; +this.bytearr = null; +this.pos = 0; +Clazz_instantialize(this, arguments);}, java.io, "InputStreamReader", java.io.Reader); +Clazz_makeConstructor(c$, +function($in, charsetName){ +Clazz_superConstructor(this, java.io.InputStreamReader, [$in]); +this.$in = $in; +this.charsetName = charsetName; +if (!(this.isUTF8 = "UTF-8".equals(charsetName)) && !"ISO-8859-1".equals(charsetName)) throw new NullPointerException("charsetName"); +}, "java.io.InputStream,~S"); +Clazz_defineMethod(c$, "getEncoding", +function(){ +return this.charsetName; +}); +Clazz_overrideMethod(c$, "read", +function(cbuf, offset, length){ +if (this.bytearr == null || this.bytearr.length < length) this.bytearr = Clazz_newByteArray (length, 0); +var c; +var char2; +var char3; +var byteCount = 0; +var charCount = offset; +var byteLen = this.$in.read(this.bytearr, this.pos, length - this.pos); +var nAvail = this.$in.available(); +if (byteLen < 0) return -1; +var nMax = byteLen; +while (byteCount < nMax) { +c = this.bytearr[byteCount] & 0xff; +if (this.isUTF8) switch (c >> 4) { +case 0xC: +case 0xD: +if (byteCount + 1 >= byteLen) { +if (nAvail >= 1) { +nMax = byteCount; +continue; +}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80) { +cbuf[charCount++] = String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); +byteCount += 2; +continue; +}this.isUTF8 = false; +break; +case 0xE: +if (byteCount + 2 >= byteLen) { +if (nAvail >= 2) { +nMax = byteCount; +continue; +}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80 && ((char3 = this.bytearr[byteCount + 2]) & 0xC0) == 0x80) { +cbuf[charCount++] = String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | (char3 & 0x3F)); +byteCount += 3; +continue; +}this.isUTF8 = false; +break; +} +byteCount++; +cbuf[charCount++] = String.fromCharCode(c); +} +this.pos = byteLen - byteCount; +for (var i = 0; i < this.pos; i++) { +this.bytearr[i] = this.bytearr[byteCount++]; +} +return charCount - offset; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "ready", +function(){ +return this.isOpen; +}); +Clazz_overrideMethod(c$, "close", +function(){ +this.$in.close(); +this.isOpen = false; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable", "$.Flushable"], "java.io.OutputStream", null, function(){ +var c$ = Clazz_declareType(java.io, "OutputStream", null, [java.io.Closeable, java.io.Flushable]); +Clazz_defineMethod(c$, "write", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return; +}for (var i = 0; i < len; i++) { +this.writeByteAsInt(b[off + i]); +} +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "flush", +function(){ +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable"], "java.io.Reader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.lock = null; +this.skipBuffer = String.fromCharCode(null); +Clazz_instantialize(this, arguments);}, java.io, "Reader", null, java.io.Closeable); +Clazz_makeConstructor(c$, +function(lock){ +if (lock == null) { +throw new NullPointerException(); +}this.lock = lock; +}, "~O"); +Clazz_defineMethod(c$, "skip", +function(n){ +if (n < 0) throw new IllegalArgumentException("skip value is negative"); +var nn = Math.min(n, 8192); +{ +if ((this.skipBuffer == null) || (this.skipBuffer.length < nn)) this.skipBuffer = Clazz_newCharArray (nn, '\0'); +var r = n; +while (r > 0) { +var nc = this.read(this.skipBuffer, 0, Math.min(r, nn)); +if (nc == -1) break; +r -= nc; +} +return n - r; +}}, "~N"); +Clazz_defineMethod(c$, "ready", +function(){ +return false; +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_defineMethod(c$, "mark", +function(readAheadLimit){ +throw new java.io.IOException("mark() not supported"); +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +throw new java.io.IOException("reset() not supported"); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.StringReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.str = null; +this.length = 0; +this.next = 0; +this.$mark = 0; +Clazz_instantialize(this, arguments);}, java.io, "StringReader", java.io.Reader); +Clazz_makeConstructor(c$, +function(s){ +Clazz_superConstructor(this, java.io.StringReader, [s]); +this.str = s; +this.length = s.length; +}, "~S"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.str == null) throw new java.io.IOException("Stream closed"); +}); +Clazz_overrideMethod(c$, "read", +function(cbuf, off, len){ +{ +this.ensureOpen(); +if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}if (this.next >= this.length) return -1; +var n = Math.min(this.length - this.next, len); +this.str.getChars(this.next, this.next + n, cbuf, off); +this.next += n; +return n; +}}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(ns){ +{ +this.ensureOpen(); +if (this.next >= this.length) return 0; +var n = Math.min(this.length - this.next, ns); +n = Math.max(-this.next, n); +this.next += n; +return n; +}}, "~N"); +Clazz_overrideMethod(c$, "ready", +function(){ +{ +this.ensureOpen(); +return true; +}}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +if (readAheadLimit < 0) { +throw new IllegalArgumentException("Read-ahead limit < 0"); +}{ +this.ensureOpen(); +this.$mark = this.next; +}}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +{ +this.ensureOpen(); +this.next = this.$mark; +}}); +Clazz_overrideMethod(c$, "close", +function(){ +this.str = null; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable", "$.Flushable", "java.lang.Appendable"], "java.io.Writer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.lock = null; +Clazz_instantialize(this, arguments);}, java.io, "Writer", null, [Appendable, java.io.Closeable, java.io.Flushable]); +Clazz_makeConstructor(c$, +function(){ +this.lock = this; +}); +Clazz_makeConstructor(c$, +function(lock){ +if (lock != null) { +this.lock = lock; +} else { +throw new NullPointerException(); +}}, "~O"); +Clazz_defineMethod(c$, "write", +function(buf){ +this.write(buf, 0, buf.length); +}, "~A"); +Clazz_defineMethod(c$, "write", +function(oneChar){ +{ +var oneCharArray = Clazz_newCharArray (1, '\0'); +oneCharArray[0] = String.fromCharCode(oneChar); +this.write(oneCharArray); +}}, "~N"); +Clazz_defineMethod(c$, "write", +function(str){ +var buf = Clazz_newCharArray (str.length, '\0'); +str.getChars(0, buf.length, buf, 0); +{ +this.write(buf); +}}, "~S"); +Clazz_defineMethod(c$, "write", +function(str, offset, count){ +if (count >= 0) { +var buf = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + count, buf, 0); +{ +this.write(buf); +}} else { +throw new StringIndexOutOfBoundsException(); +}}, "~S,~N,~N"); +Clazz_defineMethod(c$, "append", +function(c){ +this.write(c.charCodeAt(0)); +return this; +}, "~S"); +Clazz_defineMethod(c$, "append", +function(csq){ +if (null == csq) { +this.write("null"); +} else { +this.write(csq.toString()); +}return this; +}, "CharSequence"); +Clazz_defineMethod(c$, "append", +function(csq, start, end){ +if (null == csq) { +this.write("null".substring(start, end)); +} else { +this.write(csq.subSequence(start, end).toString()); +}return this; +}, "CharSequence,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.io.IOException"], "java.net.MalformedURLException", null, function(){ +var c$ = Clazz_declareType(java.net, "MalformedURLException", java.io.IOException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.net.MalformedURLException, []); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.io.IOException"], "java.net.UnknownServiceException", null, function(){ +var c$ = Clazz_declareType(java.net, "UnknownServiceException", java.io.IOException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.net.UnknownServiceException, []); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.util.Hashtable"], "java.net.URL", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.protocol = null; +this.host = null; +this.port = -1; +this.file = null; +this.query = null; +this.authority = null; +this.path = null; +this.userInfo = null; +this.ref = null; +this.handler = null; +this.$hashCode = -1; +Clazz_instantialize(this, arguments);}, java.net, "URL", null); +Clazz_makeConstructor(c$, +function(context, spec, handler){ +{ +switch (arguments.length) { +case 1: +spec = context;context = handler = null; +break; +case 2: +handler = null; +break; +case 3: +if (context == null || Clazz_instanceOf(context, java.net.URL)) +break; +default: +alert("java.net.URL constructor format not supported"); +break; +} +context && context.valueOf && context.valueOf() == null && (context = null); +}var original = spec; +var i; +var limit; +var c; +var start = 0; +var newProtocol = null; +var aRef = false; +var isRelative = false; +try { +limit = spec.length; +while ((limit > 0) && (spec.charAt(limit - 1) <= ' ')) { +limit--; +} +while ((start < limit) && (spec.charAt(start) <= ' ')) { +start++; +} +if (spec.regionMatches(true, start, "url:", 0, 4)) { +start += 4; +}if (start < spec.length && spec.charAt(start) == '#') { +aRef = true; +}for (i = start; !aRef && (i < limit) && ((c = (spec.charAt(i)).charCodeAt(0)) != 47); i++) { +if (c == 58) { +var s = spec.substring(start, i).toLowerCase(); +if (this.isValidProtocol(s)) { +newProtocol = s; +start = i + 1; +}break; +}} +this.protocol = newProtocol; +if ((context != null) && ((newProtocol == null) || newProtocol.equalsIgnoreCase(context.protocol))) { +if (handler == null) { +handler = context.handler; +}if (context.path != null && context.path.startsWith("/")) newProtocol = null; +if (newProtocol == null) { +this.protocol = context.protocol; +this.authority = context.authority; +this.userInfo = context.userInfo; +this.host = context.host; +this.port = context.port; +this.file = context.file; +this.path = context.path; +isRelative = true; +}}if (this.protocol == null) { +throw new java.net.MalformedURLException("no protocol: " + original); +}if (handler == null && (handler = java.net.URL.getURLStreamHandler(this.protocol)) == null) { +throw new java.net.MalformedURLException("unknown protocol: " + this.protocol); +}this.handler = handler; +i = spec.indexOf('#', start); +if (i >= 0) { +this.ref = spec.substring(i + 1, limit); +limit = i; +}if (isRelative && start == limit) { +this.query = context.query; +if (this.ref == null) { +this.ref = context.ref; +}}handler.parseURL(this, spec, start, limit); +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"java.net.MalformedURLException")){ +var e = e$$; +{ +throw e; +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +var exception = new java.net.MalformedURLException(e.getMessage()); +exception.initCause(e); +throw exception; +} +} else { +throw e$$; +} +} +}, "java.net.URL,~S,java.net.URLStreamHandler"); +Clazz_defineMethod(c$, "isValidProtocol", +function(protocol){ +var len = protocol.length; +if (len < 1) return false; +var c = protocol.charAt(0); +if (!Character.isLetter(c)) return false; +for (var i = 1; i < len; i++) { +c = protocol.charAt(i); +if (!Character.isLetterOrDigit(c) && c != '.' && c != '+' && c != '-') { +return false; +}} +return true; +}, "~S"); +Clazz_defineMethod(c$, "set5", +function(protocol, host, port, file, ref){ +{ +this.protocol = protocol; +this.host = host; +this.authority = port == -1 ? host : host + ":" + port; +this.port = port; +this.file = file; +this.ref = ref; +this.$hashCode = -1; +var q = file.lastIndexOf('?'); +if (q != -1) { +this.query = file.substring(q + 1); +this.path = file.substring(0, q); +} else this.path = file; +}}, "~S,~S,~N,~S,~S"); +Clazz_defineMethod(c$, "set", +function(protocol, host, port, authority, userInfo, path, query, ref){ +{ +this.protocol = protocol; +this.host = host; +this.port = port; +this.file = query == null ? path : path + "?" + query; +this.userInfo = userInfo; +this.path = path; +this.ref = ref; +this.$hashCode = -1; +this.query = query; +this.authority = authority; +}}, "~S,~S,~N,~S,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "getQuery", +function(){ +return this.query; +}); +Clazz_defineMethod(c$, "getPath", +function(){ +return this.path; +}); +Clazz_defineMethod(c$, "getUserInfo", +function(){ +return this.userInfo; +}); +Clazz_defineMethod(c$, "getAuthority", +function(){ +return this.authority; +}); +Clazz_defineMethod(c$, "getPort", +function(){ +return this.port; +}); +Clazz_defineMethod(c$, "getDefaultPort", +function(){ +return this.handler.getDefaultPort(); +}); +Clazz_defineMethod(c$, "getProtocol", +function(){ +return this.protocol; +}); +Clazz_defineMethod(c$, "getHost", +function(){ +return this.host; +}); +Clazz_defineMethod(c$, "getFile", +function(){ +return this.file; +}); +Clazz_defineMethod(c$, "getRef", +function(){ +return this.ref; +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz_instanceOf(obj,"java.net.URL"))) return false; +var u2 = obj; +return this.handler.equals2(this, u2); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +if (this.$hashCode != -1) return this.$hashCode; +this.$hashCode = this.handler.hashCode(this); +return this.$hashCode; +}); +Clazz_defineMethod(c$, "sameFile", +function(other){ +return this.handler.sameFile(this, other); +}, "java.net.URL"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.toExternalForm(); +}); +Clazz_defineMethod(c$, "toExternalForm", +function(){ +return this.handler.toExternalForm(this); +}); +Clazz_defineMethod(c$, "openConnection", +function(){ +return this.handler.openConnection(this); +}); +Clazz_defineMethod(c$, "openStream", +function(){ +return this.openConnection().getInputStream(); +}); +Clazz_defineMethod(c$, "getContent", +function(){ +return this.openConnection().getInputStream(); +}); +c$.setURLStreamHandlerFactory = Clazz_defineMethod(c$, "setURLStreamHandlerFactory", +function(fac){ +{ +if (java.net.URL.factory != null) { +throw new Error("factory already defined"); +}var security = System.getSecurityManager(); +if (security != null) { +security.checkSetFactory(); +}java.net.URL.handlers.clear(); +java.net.URL.factory = fac; +}}, "java.net.URLStreamHandlerFactory"); +c$.getURLStreamHandler = Clazz_defineMethod(c$, "getURLStreamHandler", +function(protocol){ +var handler = java.net.URL.handlers.get(protocol); +if (handler == null) { +if (java.net.URL.factory != null) { +handler = java.net.URL.factory.createURLStreamHandler(protocol); +}}return handler; +}, "~S"); +c$.factory = null; +c$.handlers = new java.util.Hashtable(); +c$.streamHandlerLock = new Clazz._O(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(null, "java.net.URLConnection", ["java.util.ArrayList"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.url = null; +this.doInput = true; +this.doOutput = false; +this.connected = false; +this.requests = null; +Clazz_instantialize(this, arguments);}, java.net, "URLConnection", null); +Clazz_makeConstructor(c$, +function(url){ +this.url = url; +}, "java.net.URL"); +Clazz_defineMethod(c$, "setDoInput", +function(doinput){ +if (this.connected) throw new IllegalStateException("Already connected"); +this.doInput = doinput; +}, "~B"); +Clazz_defineMethod(c$, "getDoInput", +function(){ +return this.doInput; +}); +Clazz_defineMethod(c$, "setDoOutput", +function(dooutput){ +if (this.connected) throw new IllegalStateException("Already connected"); +this.doOutput = dooutput; +}, "~B"); +Clazz_defineMethod(c$, "getDoOutput", +function(){ +return this.doOutput; +}); +Clazz_defineMethod(c$, "getURL", +function(){ +return this.url; +}); +Clazz_defineMethod(c$, "getInputStream", +function(){ +throw new java.net.UnknownServiceException("protocol doesn't support input"); +}); +Clazz_defineMethod(c$, "getOutputStream", +function(){ +throw new java.net.UnknownServiceException("protocol doesn't support output"); +}); +Clazz_defineMethod(c$, "setRequestProperty", +function(key, value){ +if (this.connected) throw new IllegalStateException("Already connected"); +if (key == null) throw new NullPointerException("key is null"); +if (this.requests == null) this.requests = new java.util.ArrayList(); +for (var i = this.requests.size(); --i >= 0; ) if (this.requests.get(i)[0].equals(key)) { +this.requests.get(i)[1] = value; +return; +} +this.requests.add( Clazz_newArray(-1, [key, value])); +}, "~S,~S"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +(function(){ +var c$ = Clazz_declareType(java.net, "URLEncoder", null); +c$.encode = Clazz_defineMethod(c$, "encode", +function(s){ +return encodeURIComponent(s); +}, "~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +(function(){ +var c$ = Clazz_declareType(java.net, "URLStreamHandler", null); +Clazz_defineMethod(c$, "openConnectionProxy", +function(u, p){ +throw new UnsupportedOperationException("Method not implemented."); +}, "java.net.URL,java.net.Proxy"); +Clazz_defineMethod(c$, "parseURL", +function(u, spec, start, limit){ +var protocol = u.getProtocol(); +var authority = u.getAuthority(); +var userInfo = u.getUserInfo(); +var host = u.getHost(); +var port = u.getPort(); +var path = u.getPath(); +var query = u.getQuery(); +var ref = u.getRef(); +var isRelPath = false; +var queryOnly = false; +if (start < limit) { +var queryStart = spec.indexOf('?'); +queryOnly = queryStart == start; +if ((queryStart != -1) && (queryStart < limit)) { +query = spec.substring(queryStart + 1, limit); +if (limit > queryStart) limit = queryStart; +spec = spec.substring(0, queryStart); +}}var i = 0; +var isUNCName = (start <= limit - 4) && (spec.charAt(start) == '/') && (spec.charAt(start + 1) == '/') && (spec.charAt(start + 2) == '/') && (spec.charAt(start + 3) == '/'); +if (!isUNCName && (start <= limit - 2) && (spec.charAt(start) == '/') && (spec.charAt(start + 1) == '/')) { +start += 2; +i = spec.indexOf('/', start); +if (i < 0) { +i = spec.indexOf('?', start); +if (i < 0) i = limit; +}host = authority = spec.substring(start, i); +var ind = authority.indexOf('@'); +if (ind != -1) { +userInfo = authority.substring(0, ind); +host = authority.substring(ind + 1); +} else { +userInfo = null; +}if (host != null) { +if (host.length > 0 && (host.charAt(0) == '[')) { +throw new IllegalArgumentException("Invalid host: " + host); +}ind = host.indexOf(':'); +port = -1; +if (ind >= 0) { +if (host.length > (ind + 1)) { +port = Integer.parseInt(host.substring(ind + 1)); +}host = host.substring(0, ind); +}} else { +host = ""; +}if (port < -1) throw new IllegalArgumentException("Invalid port number :" + port); +start = i; +if (authority.length > 0) path = ""; +}if (host == null) { +host = ""; +}if (start < limit) { +if (spec.charAt(start) == '/') { +path = spec.substring(start, limit); +} else if (path != null && path.length > 0) { +isRelPath = true; +var ind = path.lastIndexOf('/'); +var seperator = ""; +if (ind == -1 && authority != null) seperator = "/"; +path = path.substring(0, ind + 1) + seperator + spec.substring(start, limit); +} else { +var seperator = (authority != null) ? "/" : ""; +path = seperator + spec.substring(start, limit); +}} else if (queryOnly && path != null) { +var ind = path.lastIndexOf('/'); +if (ind < 0) ind = 0; +path = path.substring(0, ind) + "/"; +}if (path == null) path = ""; +if (isRelPath) { +while ((i = path.indexOf("/./")) >= 0) { +path = path.substring(0, i) + path.substring(i + 2); +} +i = 0; +while ((i = path.indexOf("/../", i)) >= 0) { +if (i > 0 && (limit = path.lastIndexOf('/', i - 1)) >= 0 && (path.indexOf("/../", limit) != 0)) { +path = path.substring(0, limit) + path.substring(i + 3); +i = 0; +} else { +i = i + 3; +}} +while (path.endsWith("/..")) { +i = path.indexOf("/.."); +if ((limit = path.lastIndexOf('/', i - 1)) >= 0) { +path = path.substring(0, limit + 1); +} else { +break; +}} +if (path.startsWith("./") && path.length > 2) path = path.substring(2); +if (path.endsWith("/.")) path = path.substring(0, path.length - 1); +}this.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~N,~N"); +Clazz_defineMethod(c$, "getDefaultPort", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "equals2", +function(u1, u2){ +var ref1 = u1.getRef(); +var ref2 = u2.getRef(); +return (ref1 === ref2 || (ref1 != null && ref1.equals(ref2))) && this.sameFile(u1, u2); +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "hashCode", +function(u){ +var h = 0; +var protocol = u.getProtocol(); +if (protocol != null) h += protocol.hashCode(); +h += u.toString().hashCode(); +var file = u.getFile(); +if (file != null) h += file.hashCode(); +if (u.getPort() == -1) h += this.getDefaultPort(); + else h += u.getPort(); +var ref = u.getRef(); +if (ref != null) h += ref.hashCode(); +return h; +}, "java.net.URL"); +Clazz_defineMethod(c$, "sameFile", +function(u1, u2){ +if (!((u1.getProtocol() === u2.getProtocol()) || (u1.getProtocol() != null && u1.getProtocol().equalsIgnoreCase(u2.getProtocol())))) return false; +if (!(u1.getFile() === u2.getFile() || (u1.getFile() != null && u1.getFile().equals(u2.getFile())))) return false; +var port1; +var port2; +port1 = (u1.getPort() != -1) ? u1.getPort() : u1.handler.getDefaultPort(); +port2 = (u2.getPort() != -1) ? u2.getPort() : u2.handler.getDefaultPort(); +if (port1 != port2) return false; +if (!this.hostsEqual(u1, u2)) return false; +return true; +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "hostsEqual", +function(u1, u2){ +if (u1.getHost() != null && u2.getHost() != null) return u1.getHost().equalsIgnoreCase(u2.getHost()); +return u1.getHost() == null && u2.getHost() == null; +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "toExternalForm", +function(u){ +return ""; +}, "java.net.URL"); +Clazz_defineMethod(c$, "setURL", +function(u, protocol, host, port, authority, userInfo, path, query, ref){ +if (this !== u.handler) { +throw new SecurityException("handler for url different from this handler"); +}u.set(u.getProtocol(), host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~S,~N,~S,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "setURLDeprecated", +function(u, protocol, host, port, file, ref){ +var authority = null; +var userInfo = null; +if (host != null && host.length != 0) { +authority = (port == -1) ? host : host + ":" + port; +var at = host.lastIndexOf('@'); +if (at != -1) { +userInfo = host.substring(0, at); +host = host.substring(at + 1); +}}var path = null; +var query = null; +if (file != null) { +var q = file.lastIndexOf('?'); +if (q != -1) { +query = file.substring(q + 1); +path = file.substring(0, q); +} else path = file; +}this.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~S,~N,~S,~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_declareInterface(java.net, "URLStreamHandlerFactory"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.text"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pattern = null; +Clazz_instantialize(this, arguments);}, java.text, "MessageFormat", null); +Clazz_makeConstructor(c$, +function(pattern){ +this.pattern = pattern; +}, "~S"); +Clazz_makeConstructor(c$, +function(pattern, locale){ +this.pattern = pattern; +}, "~S,java.util.Locale"); +c$.format = Clazz_defineMethod(c$, "format", +function(pattern, args){ +return pattern.replace (/\{(\d+)\}/g, function ($0, $1) { +var i = parseInt ($1); +if (args == null) return null; +return args[i]; +}); +}, "~S,~A"); +Clazz_defineMethod(c$, "format", +function(obj){ +return java.text.MessageFormat.format(this.pattern, Clazz_newArray(-1, [obj])); +}, "~O"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveNextNextGaussian = false; +this.seed = 0; +this.nextNextGaussian = 0; +Clazz_instantialize(this, arguments);}, java.util, "Random", null, java.io.Serializable); +Clazz_makeConstructor(c$, +function(){ +var seed = -2147483648; +{ +arguments.length == 1 && (seed = arguments[0]); +}if (seed == -2147483648) seed = System.currentTimeMillis(); +this.setSeed(seed); +}); +Clazz_defineMethod(c$, "next", +function(bits){ +this.seed = (this.seed * 25214903917 + 0xb) & (281474976710655); +return (this.seed >>> (48 - bits)); +}, "~N"); +Clazz_defineMethod(c$, "nextBoolean", +function(){ +{ +return Math.random () > 0.5; +}}); +Clazz_defineMethod(c$, "nextBytes", +function(buf){ +{ +var rand = 0; +var count = 0; +var loop = 0; +while (count < buf.length) { +if (loop == 0) { +rand = this.nextInt(); +loop = 3; +} else { +loop--; +}buf[count++] = rand; +rand >>= 8; +} +}}, "~A"); +Clazz_defineMethod(c$, "nextDouble", +function(){ +{ +return Math.random (); +}}); +Clazz_defineMethod(c$, "nextFloat", +function(){ +{ +return Math.random (); +}}); +Clazz_defineMethod(c$, "nextGaussian", +function(){ +if (this.haveNextNextGaussian) { +this.haveNextNextGaussian = false; +return this.nextNextGaussian; +}var v1; +var v2; +var s; +do { +v1 = 2 * this.nextDouble() - 1; +v2 = 2 * this.nextDouble() - 1; +s = v1 * v1 + v2 * v2; +} while (s >= 1); +var norm = Math.sqrt(-2 * Math.log(s) / s); +this.nextNextGaussian = v2 * norm; +this.haveNextNextGaussian = true; +return v1 * norm; +}); +Clazz_defineMethod(c$, "nextInt", +function(n){ +{ +if (arguments.length == 0) +return Math.random()*0x100000000 | 0; +}if (n <= 0) { +throw new IllegalArgumentException(); +}{ +return Math.random() * n|0 +}}, "~N"); +Clazz_defineMethod(c$, "nextLong", +function(){ +return (this.next(32) << 32) + this.next(32); +}); +Clazz_defineMethod(c$, "setSeed", +function(seed){ +{ +Math.seedrandom(seed); +}}, "~N"); +{ +{ +(function (pool, math, width, chunks, significance, overflow, startdenom) { +var copyright = "Copyright 2010 David Bau, all rights reserved. (BSD)" +// +// seedrandom() +// This is the seedrandom function described above. +// +math['seedrandom'] = function seedrandom(seed, use_entropy) { +var key = []; +var arc4; +// Flatten the seed string or build one from local entropy if needed. +seed = mixkey(flatten( +use_entropy ? [seed, pool] : +arguments.length ? seed : +[new Date().getTime(), pool, window], 3), key); +// Use the seed to initialize an ARC4 generator. +arc4 = new ARC4(key); +// Mix the randomness into accumulated entropy. +mixkey(arc4.S, pool); +// Override Math.random +// This function returns a random double in [0, 1) that contains +// randomness in every bit of the mantissa of the IEEE 754 value. +math['random'] = function random() { // Closure to return a random double: +var n = arc4.g(chunks); // Start with a numerator n < 2 ^ 48 +var d = startdenom; // and denominator d = 2 ^ 48. +var x = 0; // and no 'extra last byte'. +while (n < significance) { // Fill up all significant digits by +n = (n + x) * width; // shifting numerator and +d *= width; // denominator and generating a +x = arc4.g(1); // new least-significant-byte. +} +while (n >= overflow) { // To avoid rounding up, before adding +n /= 2; // last byte, shift everything +d /= 2; // right using integer math until +x >>>= 1; // we have exactly the desired bits. +} +return (n + x) / d; // Form the number within [0, 1). +}; +// Return the seed that was used +return seed; +}; +// +// ARC4 +// +// An ARC4 implementation. The constructor takes a key in the form of +// an array of at most (width) integers that should be 0 <= x < (width). +// +// The g(count) method returns a pseudorandom integer that concatenates +// the next (count) outputs from ARC4. Its return value is a number x +// that is in the range 0 <= x < (width ^ count). +// +function ARC4(key) { +var t, u, me = this, keylen = key.length; +var i = 0, j = me.i = me.j = me.m = 0; +me.S = []; +me.c = []; +// The empty key [] is treated as [0]. +if (!keylen) { key = [keylen++]; } +// Set up S using the standard key scheduling algorithm. +while (i < width) { me.S[i] = i++; } +for (i = 0; i < width; i++) { +t = me.S[i]; +j = lowbits(j + t + key[i % keylen]); +u = me.S[j]; +me.S[i] = u; +me.S[j] = t; +} +// The "g" method returns the next (count) outputs as one number. +me.g = function getnext(count) { +var s = me.S; +var i = lowbits(me.i + 1); var t = s[i]; +var j = lowbits(me.j + t); var u = s[j]; +s[i] = u; +s[j] = t; +var r = s[lowbits(t + u)]; +while (--count) { +i = lowbits(i + 1); t = s[i]; +j = lowbits(j + t); u = s[j]; +s[i] = u; +s[j] = t; +r = r * width + s[lowbits(t + u)]; +} +me.i = i; +me.j = j; +return r; +}; +// For robust unpredictability discard an initial batch of values. +// See http://www.rsa.com/rsalabs/node.asp?id=2009 +me.g(width); +} +// +// flatten() +// Converts an object tree to nested arrays of strings. +// +function flatten(obj, depth, result, prop) { +result = []; +if (depth && typeof(obj) == 'object') { +for (prop in obj) { +if (prop.indexOf('S') < 5) { // Avoid FF3 bug (local/sessionStorage) +try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} +} +} +} +return result.length ? result : '' + obj; +} +// +// mixkey() +// Mixes a string seed into a key that is an array of integers, and +// returns a shortened string seed that is equivalent to the result key. +// +function mixkey(seed, key, smear, j) { +seed += ''; // Ensure the seed is a string +smear = 0; +for (j = 0; j < seed.length; j++) { +key[lowbits(j)] = +lowbits((smear ^= key[lowbits(j)] * 19) + seed.charCodeAt(j)); +} +seed = ''; +for (j in key) { seed += String.fromCharCode(key[j]); } +return seed; +} +// +// lowbits() +// A quick "n mod width" for width a power of 2. +// +function lowbits(n) { return n & (width - 1); } +// +// The following constants are related to IEEE 754 limits. +// +startdenom = math.pow(width, chunks); +significance = math.pow(2, significance); +overflow = significance * 2; +// +// When seedrandom.js is loaded, we immediately mix a few bits +// from the built-in RNG into the entropy pool. Because we do +// not want to intefere with determinstic PRNG state later, +// seedrandom will not call math.random on its own again after +// initialization. +// +mixkey(math.random(), pool); +// End anonymous scope, and pass initial values. +})( +[], // pool: entropy pool starts empty +Math, // math: package containing random, pow, and seedrandom +256, // width: each RC4 output is 0 <= x < 256 +6, // chunks: at least six RC4 outputs for each double +52 // significance: there are 52 significant digits in a double +); +}}})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Collection"], "java.util.AbstractCollection", ["java.lang.reflect.Array"], function(){ +var c$ = Clazz_declareType(java.util, "AbstractCollection", null, java.util.Collection); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "addAll", +function(collection){ +var result = false; +var it = collection.iterator(); +while (it.hasNext()) { +if (this.add(it.next())) { +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +var it = this.iterator(); +while (it.hasNext()) { +it.next(); +it.remove(); +} +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +var it = this.iterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsAll", +function(collection){ +var it = collection.iterator(); +while (it.hasNext()) { +if (!this.contains(it.next())) { +return false; +}} +return true; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "remove", +function(object){ +var it = this.iterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +it.remove(); +return true; +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +it.remove(); +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +var result = false; +var it = this.iterator(); +while (it.hasNext()) { +if (collection.contains(it.next())) { +it.remove(); +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "retainAll", +function(collection){ +var result = false; +var it = this.iterator(); +while (it.hasNext()) { +if (!collection.contains(it.next())) { +it.remove(); +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_defineMethod(c$, "toArray", +function(){ +var size = this.size(); +var index = 0; +var it = this.iterator(); +var array = new Array(size); +while (index < size) { +array[index++] = it.next(); +} +return array; +}); +Clazz_defineMethod(c$, "toArray", +function(contents){ +var size = this.size(); +var index = 0; +if (size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, size); +}for (var entry, $entry = this.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +contents[index++] = entry; +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.isEmpty()) { +return "[]"; +}var buffer = "["; +var it = this.iterator(); +while (it.hasNext()) { +var next = it.next(); +if (next !== this) { +buffer += next; +} else { +buffer += ("(this Collection)"); +}if (it.hasNext()) { +buffer += (", "); +}} +buffer += (']'); +return buffer; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.Iterator", "$.List", "$.ListIterator", "$.RandomAccess"], "java.util.AbstractList", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modCount = 0; +Clazz_instantialize(this, arguments);}, java.util, "AbstractList", java.util.AbstractCollection, java.util.List); +Clazz_defineMethod(c$, "add", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +this.add(this.size(), object); +return true; +}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +var it = collection.iterator(); +while (it.hasNext()) { +this.add(location++, it.next()); +} +return !collection.isEmpty(); +}, "~N,java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.removeRange(0, this.size()); +}); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.List")) { +var list = object; +if (list.size() != this.size()) { +return false; +}var it1 = this.iterator(); +var it2 = list.iterator(); +while (it1.hasNext()) { +var e1 = it1.next(); +var e2 = it2.next(); +if (!(e1 == null ? e2 == null : e1.equals(e2))) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 1; +var it = this.iterator(); +while (it.hasNext()) { +var object = it.next(); +result = (31 * result) + (object == null ? 0 : object.hashCode()); +} +return result; +}); +Clazz_overrideMethod(c$, "indexOf", +function(object){ +var it = this.listIterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +return it.previousIndex(); +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +return it.previousIndex(); +}} +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return new java.util.AbstractList.SimpleListIterator(this); +}); +Clazz_overrideMethod(c$, "lastIndexOf", +function(object){ +var it = this.listIterator(this.size()); +if (object != null) { +while (it.hasPrevious()) { +if (object.equals(it.previous())) { +return it.nextIndex(); +}} +} else { +while (it.hasPrevious()) { +if (it.previous() == null) { +return it.nextIndex(); +}} +}return -1; +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +return new java.util.AbstractList.FullListIterator(this, location); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +throw new UnsupportedOperationException(); +}, "~N"); +Clazz_defineMethod(c$, "removeRange", +function(start, end){ +var it = this.listIterator(start); +for (var i = start; i < end; i++) { +it.next(); +it.remove(); +} +}, "~N,~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +if (0 <= start && end <= this.size()) { +if (start <= end) { +if (Clazz_instanceOf(this,"java.util.RandomAccess")) { +return new java.util.AbstractList.SubAbstractListRandomAccess(this, start, end); +}return new java.util.AbstractList.SubAbstractList(this, start, end); +}throw new IllegalArgumentException(); +}throw new IndexOutOfBoundsException(); +}, "~N,~N"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pos = -1; +this.expectedModCount = 0; +this.lastPosition = -1; +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.AbstractList, "SimpleListIterator", null, java.util.Iterator); +Clazz_makeConstructor(c$, +function(l){ +this.list = l; +this.expectedModCount = l.modCount; +}, "java.util.AbstractList"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.pos + 1 < this.list.size(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +var result = this.list.get(this.pos + 1); +this.lastPosition = ++this.pos; +return result; +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}throw new java.util.ConcurrentModificationException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.remove(this.lastPosition); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new IllegalStateException(); +} else { +throw e; +} +} +if (this.list.modCount != this.expectedModCount) { +this.expectedModCount++; +}if (this.pos == this.lastPosition) { +this.pos--; +}this.lastPosition = -1; +} else { +throw new java.util.ConcurrentModificationException(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.AbstractList, "FullListIterator", java.util.AbstractList.SimpleListIterator, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(list, start){ +Clazz_superConstructor(this, java.util.AbstractList.FullListIterator, [list]); +if (0 <= start && start <= list.size()) { +this.pos = start - 1; +} else { +throw new IndexOutOfBoundsException(); +}}, "java.util.AbstractList,~N"); +Clazz_overrideMethod(c$, "add", +function(object){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.add(this.pos + 1, object); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +this.pos++; +this.lastPosition = -1; +if (this.list.modCount != this.expectedModCount) { +this.expectedModCount++; +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +Clazz_overrideMethod(c$, "hasPrevious", +function(){ +return this.pos >= 0; +}); +Clazz_overrideMethod(c$, "nextIndex", +function(){ +return this.pos + 1; +}); +Clazz_overrideMethod(c$, "previous", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +var result = this.list.get(this.pos); +this.lastPosition = this.pos; +this.pos--; +return result; +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}throw new java.util.ConcurrentModificationException(); +}); +Clazz_overrideMethod(c$, "previousIndex", +function(){ +return this.pos; +}); +Clazz_overrideMethod(c$, "set", +function(object){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.set(this.lastPosition, object); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new IllegalStateException(); +} else { +throw e; +} +} +} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.AbstractList, "SubAbstractListRandomAccess", java.util.AbstractList.SubAbstractList, java.util.RandomAccess); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.fullList = null; +this.offset = 0; +this.$size = 0; +Clazz_instantialize(this, arguments);}, java.util.AbstractList, "SubAbstractList", java.util.AbstractList); +Clazz_makeConstructor(c$, +function(list, start, end){ +Clazz_superConstructor(this, java.util.AbstractList.SubAbstractList); +this.fullList = list; +this.modCount = this.fullList.modCount; +this.offset = start; +this.$size = end - start; +}, "java.util.AbstractList,~N,~N"); +Clazz_defineMethod(c$, "add", +function(location, object){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +this.fullList.add(location + this.offset, object); +this.$size++; +this.modCount = this.fullList.modCount; +} else { +throw new IndexOutOfBoundsException(); +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +var result = this.fullList.addAll(location + this.offset, collection); +if (result) { +this.$size += collection.size(); +this.modCount = this.fullList.modCount; +}return result; +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +if (this.modCount == this.fullList.modCount) { +var result = this.fullList.addAll(this.offset + this.$size, collection); +if (result) { +this.$size += collection.size(); +this.modCount = this.fullList.modCount; +}return result; +}throw new java.util.ConcurrentModificationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "get", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +return this.fullList.get(location + this.offset); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +return new java.util.AbstractList.SubAbstractList.SubAbstractListIterator(this.fullList.listIterator(location + this.offset), this, this.offset, this.$size); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +var result = this.fullList.remove(location + this.offset); +this.$size--; +this.modCount = this.fullList.modCount; +return result; +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_defineMethod(c$, "removeRange", +function(start, end){ +if (start != end) { +if (this.modCount == this.fullList.modCount) { +this.fullList.removeRange(start + this.offset, end + this.offset); +this.$size -= end - start; +this.modCount = this.fullList.modCount; +} else { +throw new java.util.ConcurrentModificationException(); +}}}, "~N,~N"); +Clazz_defineMethod(c$, "set", +function(location, object){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +return this.fullList.set(location + this.offset, object); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.$size; +}); +Clazz_defineMethod(c$, "sizeChanged", +function(increment){ +if (increment) { +this.$size++; +} else { +this.$size--; +}this.modCount = this.fullList.modCount; +}, "~B"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.subList = null; +this.iterator = null; +this.start = 0; +this.end = 0; +Clazz_instantialize(this, arguments);}, java.util.AbstractList.SubAbstractList, "SubAbstractListIterator", null, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(it, list, offset, length){ +this.iterator = it; +this.subList = list; +this.start = offset; +this.end = this.start + length; +}, "java.util.ListIterator,java.util.AbstractList.SubAbstractList,~N,~N"); +Clazz_defineMethod(c$, "add", +function(object){ +this.iterator.add(object); +this.subList.sizeChanged(true); +this.end++; +}, "~O"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.iterator.nextIndex() < this.end; +}); +Clazz_overrideMethod(c$, "hasPrevious", +function(){ +return this.iterator.previousIndex() >= this.start; +}); +Clazz_defineMethod(c$, "next", +function(){ +if (this.iterator.nextIndex() < this.end) { +return this.iterator.next(); +}throw new java.util.NoSuchElementException(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.iterator.nextIndex() - this.start; +}); +Clazz_defineMethod(c$, "previous", +function(){ +if (this.iterator.previousIndex() >= this.start) { +return this.iterator.previous(); +}throw new java.util.NoSuchElementException(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +var previous = this.iterator.previousIndex(); +if (previous >= this.start) { +return previous - this.start; +}return -1; +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.iterator.remove(); +this.subList.sizeChanged(false); +this.end--; +}); +Clazz_defineMethod(c$, "set", +function(object){ +this.iterator.set(object); +}, "~O"); +/*eoif3*/})(); +/*eoif3*/})(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Map"], "java.util.AbstractMap", ["java.util.AbstractCollection", "$.AbstractSet", "$.Iterator"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$keySet = null; +this.$values = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap", null, java.util.Map); +Clazz_overrideMethod(c$, "clear", +function(){ +this.entrySet().clear(); +}); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +if (key.equals(it.next().getKey())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next().getKey() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +var it = this.entrySet().iterator(); +if (value != null) { +while (it.hasNext()) { +if (value.equals(it.next().getValue())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next().getValue() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Map")) { +var map = object; +if (this.size() != map.size()) { +return false; +}var objectSet = map.entrySet(); +var it = this.entrySet().iterator(); +while (it.hasNext()) { +if (!objectSet.contains(it.next())) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +var entry = it.next(); +if (key.equals(entry.getKey())) { +return entry.getValue(); +}} +} else { +while (it.hasNext()) { +var entry = it.next(); +if (entry.getKey() == null) { +return entry.getValue(); +}} +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 0; +var it = this.entrySet().iterator(); +while (it.hasNext()) { +result += it.next().hashCode(); +} +return result; +}); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = ((Clazz_isClassDefined("java.util.AbstractMap$1") ? 0 : java.util.AbstractMap.$AbstractMap$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$1, this, null)); +}return this.$keySet; +}); +Clazz_overrideMethod(c$, "put", +function(key, value){ +throw new UnsupportedOperationException(); +}, "~O,~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +this.putAllAM(map); +}, "java.util.Map"); +Clazz_defineMethod(c$, "putAllAM", +function(map){ +if (!map.isEmpty()) for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +this.put(entry.getKey(), entry.getValue()); +} +}, "java.util.Map"); +Clazz_overrideMethod(c$, "remove", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +var entry = it.next(); +if (key.equals(entry.getKey())) { +it.remove(); +return entry.getValue(); +}} +} else { +while (it.hasNext()) { +var entry = it.next(); +if (entry.getKey() == null) { +it.remove(); +return entry.getValue(); +}} +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.entrySet().size(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.isEmpty()) { +return "{}"; +}var buffer = "{"; +var it = this.entrySet().iterator(); +while (it.hasNext()) { +var entry = it.next(); +var key = entry.getKey(); +if (key !== this) { +buffer += (key); +} else { +buffer += ("(this Map)"); +}buffer += ('='); +var value = entry.getValue(); +if (value !== this) { +buffer += (value); +} else { +buffer += ("(this Map)"); +}if (it.hasNext()) { +buffer += (", "); +}} +buffer += ('}'); +return buffer; +}); +Clazz_overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = ((Clazz_isClassDefined("java.util.AbstractMap$2") ? 0 : java.util.AbstractMap.$AbstractMap$2$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$2, this, null)); +}return this.$values; +}); +Clazz_defineMethod(c$, "clone", +function(){ +return this.cloneAM(); +}); +Clazz_defineMethod(c$, "cloneAM", +function(){ +var result; +{ +result = Clazz_clone(this); +}result.$keySet = null; +result.$values = null; +return result; +}); +c$.$AbstractMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "AbstractMap$1", java.util.AbstractSet); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.AbstractMap"].containsKey(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.b$["java.util.AbstractMap"].size(); +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.AbstractMap$1$1") ? 0 : java.util.AbstractMap.$AbstractMap$1$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$1$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.setIterator = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap$1$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.setIterator = this.b$["java.util.AbstractMap"].entrySet().iterator(); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.setIterator.hasNext(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.setIterator.next().getKey(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +this.setIterator.remove(); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "AbstractMap$2", java.util.AbstractCollection); +Clazz_overrideMethod(c$, "size", +function(){ +return this.b$["java.util.AbstractMap"].size(); +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.AbstractMap"].containsValue(object); +}, "~O"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.AbstractMap$2$1") ? 0 : java.util.AbstractMap.$AbstractMap$2$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$2$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$2$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.setIterator = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap$2$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.setIterator = this.b$["java.util.AbstractMap"].entrySet().iterator(); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.setIterator.hasNext(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.setIterator.next().getValue(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +this.setIterator.remove(); +}); +/*eoif5*/})(); +}; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.Set"], "java.util.AbstractSet", null, function(){ +var c$ = Clazz_declareType(java.util, "AbstractSet", java.util.AbstractCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Set")) { +var s = object; +return this.size() == s.size() && this.containsAll(s); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 0; +var it = this.iterator(); +while (it.hasNext()) { +var next = it.next(); +result += next == null ? 0 : next.hashCode(); +} +return result; +}); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +var result = false; +if (this.size() <= collection.size()) { +var it = this.iterator(); +while (it.hasNext()) { +if (collection.contains(it.next())) { +it.remove(); +result = true; +}} +} else { +var it = collection.iterator(); +while (it.hasNext()) { +result = this.remove(it.next()) || result; +} +}return result; +}, "java.util.Collection"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.List", "$.RandomAccess"], "java.util.ArrayList", ["java.util.Arrays"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.firstIndex = 0; +this.lastIndex = 0; +this.array = null; +Clazz_instantialize(this, arguments);}, java.util, "ArrayList", java.util.AbstractList, [java.util.List, Cloneable, java.io.Serializable, java.util.RandomAccess]); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.util.ArrayList, []); +this.setCapacity(0); +}); +Clazz_makeConstructor(c$, +function(capacity){ +Clazz_superConstructor (this, java.util.ArrayList, []); +this.setCapacity(capacity); +}, "~N"); +Clazz_makeConstructor(c$, +function(collection){ +this.firstIndex = this.lastIndex = 0; +var n = -1; +{ +if (!collection) { +n = 0; +} else if (typeof collection == "number") { +n = collection; +} +}if (n >= 0) { +this.setCapacity(n); +return; +}var size = collection.size(); +this.array = this.newElementArray(size + (Clazz_doubleToInt(size / 10))); +this.addAll(collection); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "setCapacity", +function(capacity){ +try { +this.array = this.newElementArray(capacity); +} catch (e) { +if (Clazz_exceptionOf(e,"NegativeArraySizeException")){ +throw new IllegalArgumentException(); +} else { +throw e; +} +} +}, "~N"); +Clazz_defineMethod(c$, "newElementArray", +function(size){ +return new Array(size); +}, "~N"); +Clazz_defineMethod(c$, "add", +function(location, object){ +this.add2(location, object); +}, "~N,~O"); +Clazz_defineMethod(c$, "add2", +function(location, object){ +var size = this.size(); +if (0 < location && location < size) { +if (this.firstIndex == 0 && this.lastIndex == this.array.length) { +this.growForInsert(location, 1); +} else if ((location < Clazz_doubleToInt(size / 2) && this.firstIndex > 0) || this.lastIndex == this.array.length) { +System.arraycopy(this.array, this.firstIndex, this.array, --this.firstIndex, location); +} else { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index + 1, size - location); +this.lastIndex++; +}this.array[location + this.firstIndex] = object; +} else if (location == 0) { +if (this.firstIndex == 0) { +this.growAtFront(1); +}this.array[--this.firstIndex] = object; +} else if (location == size) { +if (this.lastIndex == this.array.length) { +this.growAtEnd(1); +}this.array[this.lastIndex++] = object; +} else { +throw new IndexOutOfBoundsException(); +}this.modCount++; +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +return this.add1(object); +}, "~O"); +Clazz_defineMethod(c$, "add1", +function(object){ +if (this.lastIndex == this.array.length) { +this.growAtEnd(1); +}this.array[this.lastIndex++] = object; +this.modCount++; +return true; +}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +var size = this.size(); +if (location < 0 || location > size) { +throw new IndexOutOfBoundsException(); +}var growSize = collection.size(); +if (0 < location && location < size) { +if (this.array.length - size < growSize) { +this.growForInsert(location, growSize); +} else if ((location < Clazz_doubleToInt(size / 2) && this.firstIndex > 0) || this.lastIndex > this.array.length - growSize) { +var newFirst = this.firstIndex - growSize; +if (newFirst < 0) { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index - newFirst, size - location); +this.lastIndex -= newFirst; +newFirst = 0; +}System.arraycopy(this.array, this.firstIndex, this.array, newFirst, location); +this.firstIndex = newFirst; +} else { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index + growSize, size - location); +this.lastIndex += growSize; +}} else if (location == 0) { +this.growAtFront(growSize); +this.firstIndex -= growSize; +} else if (location == size) { +if (this.lastIndex > this.array.length - growSize) { +this.growAtEnd(growSize); +}this.lastIndex += growSize; +}if (growSize > 0) { +var it = collection.iterator(); +var index = location + this.firstIndex; +var end = index + growSize; +while (index < end) { +this.array[index++] = it.next(); +} +this.modCount++; +return true; +}return false; +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +var growSize = collection.size(); +if (growSize > 0) { +if (this.lastIndex > this.array.length - growSize) { +this.growAtEnd(growSize); +}var it = collection.iterator(); +var end = this.lastIndex + growSize; +while (this.lastIndex < end) { +this.array[this.lastIndex++] = it.next(); +} +this.modCount++; +return true; +}return false; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +if (this.firstIndex != this.lastIndex) { +java.util.Arrays.fill(this.array, this.firstIndex, this.lastIndex, null); +this.firstIndex = this.lastIndex = 0; +this.modCount++; +}}); +Clazz_defineMethod(c$, "clone", +function(){ +try { +var newList = Clazz_superCall(this, java.util.ArrayList, "clone", []); +newList.array = this.array.clone(); +return newList; +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +if (object != null) { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (object.equals(this.array[i])) { +return true; +}} +} else { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (this.array[i] == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_defineMethod(c$, "ensureCapacity", +function(minimumCapacity){ +if (this.array.length < minimumCapacity) { +if (this.firstIndex > 0) { +this.growAtFront(minimumCapacity - this.array.length); +} else { +this.growAtEnd(minimumCapacity - this.array.length); +}}}, "~N"); +Clazz_overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.size()) { +return this.array[this.firstIndex + location]; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz_defineMethod(c$, "growAtEnd", +function(required){ +var size = this.size(); +if (this.firstIndex >= required - (this.array.length - this.lastIndex)) { +var newLast = this.lastIndex - this.firstIndex; +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, this.array, 0, size); +var start = newLast < this.firstIndex ? this.firstIndex : newLast; +java.util.Arrays.fill(this.array, start, this.array.length, null); +}this.firstIndex = 0; +this.lastIndex = newLast; +} else { +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, newArray, this.firstIndex, size); +}this.array = newArray; +}}, "~N"); +Clazz_defineMethod(c$, "growAtFront", +function(required){ +var size = this.size(); +if (this.array.length - this.lastIndex >= required) { +var newFirst = this.array.length - size; +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, this.array, newFirst, size); +var length = this.firstIndex + size > newFirst ? newFirst : this.firstIndex + size; +java.util.Arrays.fill(this.array, this.firstIndex, length, null); +}this.firstIndex = newFirst; +this.lastIndex = this.array.length; +} else { +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, newArray, newArray.length - size, size); +}this.firstIndex = newArray.length - size; +this.lastIndex = newArray.length; +this.array = newArray; +}}, "~N"); +Clazz_defineMethod(c$, "growForInsert", +function(location, required){ +var size = this.size(); +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (location < Clazz_doubleToInt(size / 2)) { +var newFirst = newArray.length - (size + required); +System.arraycopy(this.array, location, newArray, location + increment, size - location); +System.arraycopy(this.array, this.firstIndex, newArray, newFirst, location); +this.firstIndex = newFirst; +this.lastIndex = newArray.length; +} else { +System.arraycopy(this.array, this.firstIndex, newArray, 0, location); +System.arraycopy(this.array, location, newArray, location + required, size - location); +this.firstIndex = 0; +this.lastIndex += required; +}this.array = newArray; +}, "~N,~N"); +Clazz_overrideMethod(c$, "indexOf", +function(object){ +if (object != null) { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (object.equals(this.array[i])) { +return i - this.firstIndex; +}} +} else { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (this.array[i] == null) { +return i - this.firstIndex; +}} +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.lastIndex == this.firstIndex; +}); +Clazz_overrideMethod(c$, "lastIndexOf", +function(object){ +if (object != null) { +for (var i = this.lastIndex - 1; i >= this.firstIndex; i--) { +if (object.equals(this.array[i])) { +return i - this.firstIndex; +}} +} else { +for (var i = this.lastIndex - 1; i >= this.firstIndex; i--) { +if (this.array[i] == null) { +return i - this.firstIndex; +}} +}return -1; +}, "~O"); +Clazz_defineMethod(c$, "remove", +function(location){ +{ +}return this._removeItemAt(location); +}, "~N"); +Clazz_defineMethod(c$, "_removeObject", +function(o){ +var i = this.indexOf(o); +if (i < 0) return false; +this._removeItemAt(i); +return true; +}, "~O"); +Clazz_defineMethod(c$, "_removeItemAt", +function(location){ +var result; +var size = this.size(); +if (0 <= location && location < size) { +if (location == size - 1) { +result = this.array[--this.lastIndex]; +this.array[this.lastIndex] = null; +} else if (location == 0) { +result = this.array[this.firstIndex]; +this.array[this.firstIndex++] = null; +} else { +var elementIndex = this.firstIndex + location; +result = this.array[elementIndex]; +if (location < Clazz_doubleToInt(size / 2)) { +System.arraycopy(this.array, this.firstIndex, this.array, this.firstIndex + 1, location); +this.array[this.firstIndex++] = null; +} else { +System.arraycopy(this.array, elementIndex + 1, this.array, elementIndex, size - location - 1); +this.array[--this.lastIndex] = null; +}}} else { +throw new IndexOutOfBoundsException(); +}this.modCount++; +return result; +}, "~N"); +Clazz_overrideMethod(c$, "removeRange", +function(start, end){ +if (start >= 0 && start <= end && end <= this.size()) { +if (start == end) { +return; +}var size = this.size(); +if (end == size) { +java.util.Arrays.fill(this.array, this.firstIndex + start, this.lastIndex, null); +this.lastIndex = this.firstIndex + start; +} else if (start == 0) { +java.util.Arrays.fill(this.array, this.firstIndex, this.firstIndex + end, null); +this.firstIndex += end; +} else { +System.arraycopy(this.array, this.firstIndex + end, this.array, this.firstIndex + start, size - end); +var newLast = this.lastIndex + start - end; +java.util.Arrays.fill(this.array, newLast, this.lastIndex, null); +this.lastIndex = newLast; +}this.modCount++; +} else { +throw new IndexOutOfBoundsException(); +}}, "~N,~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +if (0 <= location && location < this.size()) { +var result = this.array[this.firstIndex + location]; +this.array[this.firstIndex + location] = object; +return result; +}throw new IndexOutOfBoundsException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.lastIndex - this.firstIndex; +}); +Clazz_overrideMethod(c$, "toArray", +function(contents){ +var size = this.size(); +if (contents == null || size > contents.length) { +{ +return this.array.slice(this.firstIndex, this.firstIndex + size); +}}System.arraycopy(this.array, this.firstIndex, contents, 0, size); +if (size < contents.length) { +contents[size] = null; +}return contents; +}, "~A"); +Clazz_defineMethod(c$, "trimToSize", +function(){ +var size = this.size(); +var newArray = this.newElementArray(size); +System.arraycopy(this.array, this.firstIndex, newArray, 0, size); +this.array = newArray; +this.firstIndex = 0; +this.lastIndex = this.array.length; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.RandomAccess"], "java.util.Arrays", null, function(){ +var c$ = Clazz_declareType(java.util, "Arrays", null); +c$.fill = Clazz_defineMethod(c$, "fill", +function(a, fromIndex, toIndex, val){ +{ +if (arguments.length == 2) { +val = arguments[1]; +fromIndex = 0; +toIndex = a.length; +} +}java.util.Arrays.rangeCheck(a.length, fromIndex, toIndex); +for (var i = fromIndex; i < toIndex; i++) a[i] = val; + +}, "~A,~N,~N,~O"); +c$.asList = Clazz_defineMethod(c$, "asList", +function(a){ +return new java.util.Arrays.ArrayList(a); +}, "~A"); +c$.rangeCheck = Clazz_defineMethod(c$, "rangeCheck", +function(arrayLen, fromIndex, toIndex){ +if (fromIndex > toIndex) throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")"); +if (fromIndex < 0) throw new ArrayIndexOutOfBoundsException(fromIndex); +if (toIndex > arrayLen) throw new ArrayIndexOutOfBoundsException(toIndex); +}, "~N,~N,~N"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key){ +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +if (midVal < key) low = mid + 1; + else if (midVal > key) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~N"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key){ +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +var cmp = (midVal).compareTo(key); +if (cmp < 0) low = mid + 1; + else if (cmp > 0) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~O"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key, c){ +if (c == null) return java.util.Arrays.binarySearch(a, key); +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +var cmp = c.compare(midVal, key); +if (cmp < 0) low = mid + 1; + else if (cmp > 0) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~O,java.util.Comparator"); +c$.equals = Clazz_defineMethod(c$, "equals", +function(a, a2){ +if (a === a2) return true; +if (a == null || a2 == null) return false; +var length = a.length; +if (a2.length != length) return false; +for (var i = 0; i < length; i++) { +var o1 = a[i]; +var o2 = a2[i]; +{ +if(!(o1==null?o2==null:(o1.equals==null?o1==o2:o1.equals(o2))))return false; +}} +return true; +}, "~A,~A"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(a, fromIndex, toIndex, c){ +if (a.length < 2) return; +var n = 0; +var p = null; +{ +n = arguments.count; p = fromIndex; +}var temp = a; +var ret = null; +switch (n) { +case 1: +p = null; +case 2: +fromIndex = 0; +toIndex = a.length; +break; +case 3: +p = null; +case 4: +p = c; +if (fromIndex == 0 && toIndex == a.length) { +temp = a; +} else { +{ +temp = a.slice(fromIndex, toIndex); +}ret = a; +}break; +} +java.util.Arrays.rangeCheck(a.length, fromIndex, toIndex); +if (p == null) p = java.util.Arrays.comp; +c = p; +{ +temp.sort(c.compare); +}if (ret != null) { +System.arraycopy(temp, 0, ret, fromIndex, toIndex); +}}, "~A,~N,~N,java.util.Comparator"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.a = null; +Clazz_instantialize(this, arguments);}, java.util.Arrays, "ArrayList", java.util.AbstractList, [java.util.RandomAccess, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(array){ +Clazz_superConstructor (this, java.util.Arrays.ArrayList, []); +if (array == null) throw new NullPointerException(); +this.a = array; +}, "~A"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.a.length; +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.a.clone(); +}); +Clazz_overrideMethod(c$, "get", +function(index){ +return this.a[index]; +}, "~N"); +Clazz_overrideMethod(c$, "set", +function(index, element){ +var oldValue = this.a[index]; +this.a[index] = element; +return oldValue; +}, "~N,~O"); +Clazz_overrideMethod(c$, "indexOf", +function(o){ +if (o == null) { +for (var i = 0; i < this.a.length; i++) if (this.a[i] == null) return i; + +} else { +for (var i = 0; i < this.a.length; i++) if (o.equals(this.a[i])) return i; + +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.indexOf(o) != -1; +}, "~O"); +/*eoif3*/})(); +c$.comp = null; +{ +c$.comp = {compare: function (o1, o2) { +return (o1 == null ? (o2 == null ? 0 : -1) : o2 == null ? 1 +: typeof o1 == "number" ? o1 - o2 : o1.compareTo(o2))}}; +}}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.AbstractMap", "$.AbstractSet", "$.Collection", "$.Enumeration", "$.Iterator", "$.List", "$.ListIterator", "$.Map", "$.RandomAccess", "$.Set", "$.SortedMap", "$.SortedSet", "java.lang.reflect.Array"], "java.util.Collections", ["java.util.ArrayList", "$.Arrays", "java.util.Map.Entry", "java.util.Random"], function(){ +var c$ = Clazz_declareType(java.util, "Collections", null); +c$.emptyEnumeration = Clazz_defineMethod(c$, "emptyEnumeration", +function(){ +if (java.util.Collections.EMPTY_ENUMERATION == null) java.util.Collections.EMPTY_ENUMERATION = new java.util.Collections.EmptyEnumeration(); +return java.util.Collections.EMPTY_ENUMERATION; +}); +c$.emptyIterator = Clazz_defineMethod(c$, "emptyIterator", +function(){ +if (java.util.Collections.EMPTY_ITERATOR == null) { +java.util.Collections.EMPTY_ITERATOR = new java.util.Collections.EmptyIterator(); +}return java.util.Collections.EMPTY_ITERATOR; +}); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(list, object){ +if (list == null) { +throw new NullPointerException(); +}if (list.isEmpty()) { +return -1; +}var key = object; +if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var it = list.listIterator(); +while (it.hasNext()) { +var result; +if ((result = key.compareTo(it.next())) <= 0) { +if (result == 0) { +return it.previousIndex(); +}return -it.previousIndex() - 1; +}} +return -list.size() - 1; +}var low = 0; +var mid = list.size(); +var high = mid - 1; +var result = -1; +while (low <= high) { +mid = (low + high) >> 1; +if ((result = key.compareTo(list.get(mid))) > 0) { +low = mid + 1; +} else if (result == 0) { +return mid; +} else { +high = mid - 1; +}} +return -mid - (result < 0 ? 1 : 2); +}, "java.util.List,~O"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(list, object, comparator){ +if (comparator == null) { +return java.util.Collections.binarySearch(list, object); +}if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var it = list.listIterator(); +while (it.hasNext()) { +var result; +if ((result = comparator.compare(object, it.next())) <= 0) { +if (result == 0) { +return it.previousIndex(); +}return -it.previousIndex() - 1; +}} +return -list.size() - 1; +}var low = 0; +var mid = list.size(); +var high = mid - 1; +var result = -1; +while (low <= high) { +mid = (low + high) >> 1; +if ((result = comparator.compare(object, list.get(mid))) > 0) { +low = mid + 1; +} else if (result == 0) { +return mid; +} else { +high = mid - 1; +}} +return -mid - (result < 0 ? 1 : 2); +}, "java.util.List,~O,java.util.Comparator"); +c$.copy = Clazz_defineMethod(c$, "copy", +function(destination, source){ +if (destination.size() < source.size()) { +throw new ArrayIndexOutOfBoundsException(); +}var srcIt = source.iterator(); +var destIt = destination.listIterator(); +while (srcIt.hasNext()) { +try { +destIt.next(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.util.NoSuchElementException")){ +throw new ArrayIndexOutOfBoundsException(); +} else { +throw e; +} +} +destIt.set(srcIt.next()); +} +}, "java.util.List,java.util.List"); +c$.enumeration = Clazz_defineMethod(c$, "enumeration", +function(collection){ +var c = collection; +return ((Clazz_isClassDefined("java.util.Collections$1") ? 0 : java.util.Collections.$Collections$1$ ()), Clazz_innerTypeInstance(java.util.Collections$1, this, Clazz_cloneFinals("c", c))); +}, "java.util.Collection"); +c$.fill = Clazz_defineMethod(c$, "fill", +function(list, object){ +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(object); +} +}, "java.util.List,~O"); +c$.max = Clazz_defineMethod(c$, "max", +function(collection){ +var it = collection.iterator(); +var max = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (max.compareTo(next) < 0) { +max = next; +}} +return max; +}, "java.util.Collection"); +c$.max = Clazz_defineMethod(c$, "max", +function(collection, comparator){ +var it = collection.iterator(); +var max = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (comparator.compare(max, next) < 0) { +max = next; +}} +return max; +}, "java.util.Collection,java.util.Comparator"); +c$.min = Clazz_defineMethod(c$, "min", +function(collection){ +var it = collection.iterator(); +var min = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (min.compareTo(next) > 0) { +min = next; +}} +return min; +}, "java.util.Collection"); +c$.min = Clazz_defineMethod(c$, "min", +function(collection, comparator){ +var it = collection.iterator(); +var min = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (comparator.compare(min, next) > 0) { +min = next; +}} +return min; +}, "java.util.Collection,java.util.Comparator"); +c$.nCopies = Clazz_defineMethod(c$, "nCopies", +function(length, object){ +return new java.util.Collections.CopiesList(length, object); +}, "~N,~O"); +c$.reverse = Clazz_defineMethod(c$, "reverse", +function(list){ +var size = list.size(); +var front = list.listIterator(); +var back = list.listIterator(size); +for (var i = 0; i < Clazz_doubleToInt(size / 2); i++) { +var frontNext = front.next(); +var backPrev = back.previous(); +front.set(backPrev); +back.set(frontNext); +} +}, "java.util.List"); +c$.reverseOrder = Clazz_defineMethod(c$, "reverseOrder", +function(){ +return new java.util.Collections.ReverseComparator(); +}); +c$.reverseOrder = Clazz_defineMethod(c$, "reverseOrder", +function(c){ +if (c == null) { +return java.util.Collections.reverseOrder(); +}return new java.util.Collections.ReverseComparatorWithComparator(c); +}, "java.util.Comparator"); +c$.shuffle = Clazz_defineMethod(c$, "shuffle", +function(list){ +java.util.Collections.shuffle(list, new java.util.Random()); +}, "java.util.List"); +c$.shuffle = Clazz_defineMethod(c$, "shuffle", +function(list, random){ +if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var array = list.toArray(); +for (var i = array.length - 1; i > 0; i--) { +var index = random.nextInt() % (i + 1); +if (index < 0) { +index = -index; +}var temp = array[i]; +array[i] = array[index]; +array[index] = temp; +} +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +} else { +var rawList = list; +for (var i = rawList.size() - 1; i > 0; i--) { +var index = random.nextInt() % (i + 1); +if (index < 0) { +index = -index; +}rawList.set(index, rawList.set(i, rawList.get(index))); +} +}}, "java.util.List,java.util.Random"); +c$.singleton = Clazz_defineMethod(c$, "singleton", +function(object){ +return new java.util.Collections.SingletonSet(object); +}, "~O"); +c$.singletonList = Clazz_defineMethod(c$, "singletonList", +function(object){ +return new java.util.Collections.SingletonList(object); +}, "~O"); +c$.singletonMap = Clazz_defineMethod(c$, "singletonMap", +function(key, value){ +return new java.util.Collections.SingletonMap(key, value); +}, "~O,~O"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(list){ +var array = list.toArray(); +java.util.Arrays.sort(array); +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +}, "java.util.List"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(list, comparator){ +var array = list.toArray( new Array(list.size())); +java.util.Arrays.sort(array, comparator); +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +}, "java.util.List,java.util.Comparator"); +c$.swap = Clazz_defineMethod(c$, "swap", +function(list, index1, index2){ +if (list == null) { +throw new NullPointerException(); +}if (index1 == index2) { +return; +}var rawList = list; +rawList.set(index2, rawList.set(index1, rawList.get(index2))); +}, "java.util.List,~N,~N"); +c$.replaceAll = Clazz_defineMethod(c$, "replaceAll", +function(list, obj, obj2){ +var index; +var found = false; +while ((index = list.indexOf(obj)) > -1) { +found = true; +list.set(index, obj2); +} +return found; +}, "java.util.List,~O,~O"); +c$.rotate = Clazz_defineMethod(c$, "rotate", +function(lst, dist){ +var list = lst; +var size = list.size(); +if (size == 0) { +return; +}var normdist; +if (dist > 0) { +normdist = dist % size; +} else { +normdist = size - ((dist % size) * (-1)); +}if (normdist == 0 || normdist == size) { +return; +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +var temp = list.get(0); +var index = 0; +var beginIndex = 0; +for (var i = 0; i < size; i++) { +index = (index + normdist) % size; +temp = list.set(index, temp); +if (index == beginIndex) { +index = ++beginIndex; +temp = list.get(beginIndex); +}} +} else { +var divideIndex = (size - normdist) % size; +var sublist1 = list.subList(0, divideIndex); +var sublist2 = list.subList(divideIndex, size); +java.util.Collections.reverse(sublist1); +java.util.Collections.reverse(sublist2); +java.util.Collections.reverse(list); +}}, "java.util.List,~N"); +c$.indexOfSubList = Clazz_defineMethod(c$, "indexOfSubList", +function(list, sublist){ +var size = list.size(); +var sublistSize = sublist.size(); +if (sublistSize > size) { +return -1; +}if (sublistSize == 0) { +return 0; +}var firstObj = sublist.get(0); +var index = list.indexOf(firstObj); +if (index == -1) { +return -1; +}while (index < size && (size - index >= sublistSize)) { +var listIt = list.listIterator(index); +if ((firstObj == null) ? listIt.next() == null : firstObj.equals(listIt.next())) { +var sublistIt = sublist.listIterator(1); +var difFound = false; +while (sublistIt.hasNext()) { +var element = sublistIt.next(); +if (!listIt.hasNext()) { +return -1; +}if ((element == null) ? listIt.next() != null : !element.equals(listIt.next())) { +difFound = true; +break; +}} +if (!difFound) { +return index; +}}index++; +} +return -1; +}, "java.util.List,java.util.List"); +c$.lastIndexOfSubList = Clazz_defineMethod(c$, "lastIndexOfSubList", +function(list, sublist){ +var sublistSize = sublist.size(); +var size = list.size(); +if (sublistSize > size) { +return -1; +}if (sublistSize == 0) { +return size; +}var lastObj = sublist.get(sublistSize - 1); +var index = list.lastIndexOf(lastObj); +while ((index > -1) && (index + 1 >= sublistSize)) { +var listIt = list.listIterator(index + 1); +if ((lastObj == null) ? listIt.previous() == null : lastObj.equals(listIt.previous())) { +var sublistIt = sublist.listIterator(sublistSize - 1); +var difFound = false; +while (sublistIt.hasPrevious()) { +var element = sublistIt.previous(); +if (!listIt.hasPrevious()) { +return -1; +}if ((element == null) ? listIt.previous() != null : !element.equals(listIt.previous())) { +difFound = true; +break; +}} +if (!difFound) { +return listIt.nextIndex(); +}}index--; +} +return -1; +}, "java.util.List,java.util.List"); +c$.list = Clazz_defineMethod(c$, "list", +function(enumeration){ +var list = new java.util.ArrayList(); +while (enumeration.hasMoreElements()) { +list.add(enumeration.nextElement()); +} +return list; +}, "java.util.Enumeration"); +c$.synchronizedCollection = Clazz_defineMethod(c$, "synchronizedCollection", +function(collection){ +if (collection == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedCollection(collection); +}, "java.util.Collection"); +c$.synchronizedList = Clazz_defineMethod(c$, "synchronizedList", +function(list){ +if (list == null) { +throw new NullPointerException(); +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.SynchronizedRandomAccessList(list); +}return new java.util.Collections.SynchronizedList(list); +}, "java.util.List"); +c$.synchronizedMap = Clazz_defineMethod(c$, "synchronizedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedMap(map); +}, "java.util.Map"); +c$.synchronizedSet = Clazz_defineMethod(c$, "synchronizedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSet(set); +}, "java.util.Set"); +c$.synchronizedSortedMap = Clazz_defineMethod(c$, "synchronizedSortedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSortedMap(map); +}, "java.util.SortedMap"); +c$.synchronizedSortedSet = Clazz_defineMethod(c$, "synchronizedSortedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSortedSet(set); +}, "java.util.SortedSet"); +c$.unmodifiableCollection = Clazz_defineMethod(c$, "unmodifiableCollection", +function(collection){ +if (collection == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableCollection(collection); +}, "java.util.Collection"); +c$.unmodifiableList = Clazz_defineMethod(c$, "unmodifiableList", +function(list){ +if (list == null) { +throw new NullPointerException(); +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.UnmodifiableRandomAccessList(list); +}return new java.util.Collections.UnmodifiableList(list); +}, "java.util.List"); +c$.unmodifiableMap = Clazz_defineMethod(c$, "unmodifiableMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableMap(map); +}, "java.util.Map"); +c$.unmodifiableSet = Clazz_defineMethod(c$, "unmodifiableSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSet(set); +}, "java.util.Set"); +c$.unmodifiableSortedMap = Clazz_defineMethod(c$, "unmodifiableSortedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSortedMap(map); +}, "java.util.SortedMap"); +c$.unmodifiableSortedSet = Clazz_defineMethod(c$, "unmodifiableSortedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSortedSet(set); +}, "java.util.SortedSet"); +c$.frequency = Clazz_defineMethod(c$, "frequency", +function(c, o){ +if (c == null) { +throw new NullPointerException(); +}if (c.isEmpty()) { +return 0; +}var result = 0; +var itr = c.iterator(); +while (itr.hasNext()) { +var e = itr.next(); +if (o == null ? e == null : o.equals(e)) { +result++; +}} +return result; +}, "java.util.Collection,~O"); +c$.emptyList = Clazz_defineMethod(c$, "emptyList", +function(){ +return java.util.Collections.EMPTY_LIST; +}); +c$.emptySet = Clazz_defineMethod(c$, "emptySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +c$.emptyMap = Clazz_defineMethod(c$, "emptyMap", +function(){ +return java.util.Collections.EMPTY_MAP; +}); +c$.checkedCollection = Clazz_defineMethod(c$, "checkedCollection", +function(c, type){ +return new java.util.Collections.CheckedCollection(c, type); +}, "java.util.Collection,Class"); +c$.checkedMap = Clazz_defineMethod(c$, "checkedMap", +function(m, keyType, valueType){ +return new java.util.Collections.CheckedMap(m, keyType, valueType); +}, "java.util.Map,Class,Class"); +c$.checkedList = Clazz_defineMethod(c$, "checkedList", +function(list, type){ +if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.CheckedRandomAccessList(list, type); +}return new java.util.Collections.CheckedList(list, type); +}, "java.util.List,Class"); +c$.checkedSet = Clazz_defineMethod(c$, "checkedSet", +function(s, type){ +return new java.util.Collections.CheckedSet(s, type); +}, "java.util.Set,Class"); +c$.checkedSortedMap = Clazz_defineMethod(c$, "checkedSortedMap", +function(m, keyType, valueType){ +return new java.util.Collections.CheckedSortedMap(m, keyType, valueType); +}, "java.util.SortedMap,Class,Class"); +c$.checkedSortedSet = Clazz_defineMethod(c$, "checkedSortedSet", +function(s, type){ +return new java.util.Collections.CheckedSortedSet(s, type); +}, "java.util.SortedSet,Class"); +c$.addAll = Clazz_defineMethod(c$, "addAll", +function(c, a){ +var modified = false; +for (var i = 0; i < a.length; i++) { +modified = new Boolean (modified | c.add(a[i])).valueOf(); +} +return modified; +}, "java.util.Collection,~A"); +c$.disjoint = Clazz_defineMethod(c$, "disjoint", +function(c1, c2){ +if ((Clazz_instanceOf(c1,"java.util.Set")) && !(Clazz_instanceOf(c2,"java.util.Set")) || (c2.size()) > c1.size()) { +var tmp = c1; +c1 = c2; +c2 = tmp; +}var it = c1.iterator(); +while (it.hasNext()) { +if (c2.contains(it.next())) { +return false; +}} +return true; +}, "java.util.Collection,java.util.Collection"); +c$.checkType = Clazz_defineMethod(c$, "checkType", +function(obj, type){ +if (!type.isInstance(obj)) { +throw new ClassCastException("Attempt to insert " + obj.getClass() + " element into collection with element type " + type); +}return obj; +}, "~O,Class"); +c$.$Collections$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.it = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$1", null, java.util.Enumeration); +Clazz_prepareFields (c$, function(){ +this.it = this.f$.c.iterator(); +}); +Clazz_defineMethod(c$, "hasMoreElements", +function(){ +return this.it.hasNext(); +}); +Clazz_defineMethod(c$, "nextElement", +function(){ +return this.it.next(); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyEnumeration", null, java.util.Enumeration); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +throw new java.util.NoSuchElementException(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyIterator", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "next", +function(){ +throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new IllegalStateException(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.n = 0; +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CopiesList", java.util.AbstractList, java.io.Serializable); +Clazz_makeConstructor(c$, +function(length, object){ +Clazz_superConstructor (this, java.util.Collections.CopiesList, []); +if (length < 0) { +throw new IllegalArgumentException(); +}this.n = length; +this.element = object; +}, "~N,~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.n; +}); +Clazz_overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.n) { +return this.element; +}throw new IndexOutOfBoundsException(); +}, "~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyList", java.util.AbstractList, java.io.Serializable); +Clazz_overrideMethod(c$, "contains", +function(object){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "get", +function(location){ +throw new IndexOutOfBoundsException(); +}, "~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptySet", java.util.AbstractSet, java.io.Serializable); +Clazz_overrideMethod(c$, "contains", +function(object){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$EmptySet$1") ? 0 : java.util.Collections.EmptySet.$Collections$EmptySet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$EmptySet$1, this, null)); +}); +c$.$Collections$EmptySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$EmptySet$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "next", +function(){ +throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyMap", java.util.AbstractMap, java.io.Serializable); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "entrySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +Clazz_overrideMethod(c$, "get", +function(key){ +return null; +}, "~O"); +Clazz_overrideMethod(c$, "keySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +Clazz_overrideMethod(c$, "values", +function(){ +return java.util.Collections.EMPTY_LIST; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "ReverseComparator", null, [java.util.Comparator, java.io.Serializable]); +Clazz_overrideMethod(c$, "compare", +function(o1, o2){ +var c2 = o2; +return c2.compareTo(o1); +}, "~O,~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.comparator = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "ReverseComparatorWithComparator", null, [java.util.Comparator, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(comparator){ +this.comparator = comparator; +}, "java.util.Comparator"); +Clazz_defineMethod(c$, "compare", +function(o1, o2){ +return this.comparator.compare(o2, o1); +}, "~O,~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonSet", java.util.AbstractSet, java.io.Serializable); +Clazz_makeConstructor(c$, +function(object){ +Clazz_superConstructor (this, java.util.Collections.SingletonSet, []); +this.element = object; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonSet$1") ? 0 : java.util.Collections.SingletonSet.$Collections$SingletonSet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonSet$1, this, null)); +}); +c$.$Collections$SingletonSet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.$hasNext = true; +Clazz_instantialize(this, arguments);}, java.util, "Collections$SingletonSet$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.$hasNext; +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.$hasNext) { +this.$hasNext = false; +return this.b$["java.util.Collections.SingletonSet"].element; +}throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonList", java.util.AbstractList, java.io.Serializable); +Clazz_makeConstructor(c$, +function(object){ +Clazz_superConstructor (this, java.util.Collections.SingletonList, []); +this.element = object; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(location){ +if (location == 0) { +return this.element; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.k = null; +this.v = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonMap", java.util.AbstractMap, java.io.Serializable); +Clazz_makeConstructor(c$, +function(key, value){ +Clazz_superConstructor (this, java.util.Collections.SingletonMap, []); +this.k = key; +this.v = value; +}, "~O,~O"); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +return this.k == null ? key == null : this.k.equals(key); +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return this.v == null ? value == null : this.v.equals(value); +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +if (this.containsKey(key)) { +return this.v; +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "entrySet", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1") ? 0 : java.util.Collections.SingletonMap.$Collections$SingletonMap$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1, this, null)); +}); +c$.$Collections$SingletonMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$SingletonMap$1", java.util.AbstractSet); +Clazz_overrideMethod(c$, "contains", +function(object){ +if (Clazz_instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return this.b$["java.util.Collections.SingletonMap"].containsKey(entry.getKey()) && this.b$["java.util.Collections.SingletonMap"].containsValue(entry.getValue()); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1$1") ? 0 : java.util.Collections.$Collections$SingletonMap$1$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$Collections$SingletonMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.$hasNext = true; +Clazz_instantialize(this, arguments);}, java.util, "Collections$SingletonMap$1$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.$hasNext; +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.$hasNext) { +this.$hasNext = false; +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1$1$1") ? 0 : java.util.Collections.$Collections$SingletonMap$1$1$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1$1$1, this, null)); +}throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +c$.$Collections$SingletonMap$1$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$SingletonMap$1$1$1", null, java.util.Map.Entry); +Clazz_overrideMethod(c$, "equals", +function(object){ +return this.b$["java.util.Collections$SingletonMap$1"].contains(object); +}, "~O"); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.b$["java.util.Collections.SingletonMap"].k; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.b$["java.util.Collections.SingletonMap"].v; +}); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return (this.b$["java.util.Collections.SingletonMap"].k == null ? 0 : this.b$["java.util.Collections.SingletonMap"].k.hashCode()) ^ (this.b$["java.util.Collections.SingletonMap"].v == null ? 0 : this.b$["java.util.Collections.SingletonMap"].v.hashCode()); +}); +Clazz_overrideMethod(c$, "setValue", +function(value){ +throw new UnsupportedOperationException(); +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +this.mutex = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(collection){ +this.c = collection; +this.mutex = this; +}, "java.util.Collection"); +Clazz_makeConstructor(c$, +function(collection, mutex){ +this.c = collection; +this.mutex = mutex; +}, "java.util.Collection,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +{ +return this.c.add(object); +}}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +{ +return this.c.addAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "clear", +function(){ +{ +this.c.clear(); +}}); +Clazz_defineMethod(c$, "contains", +function(object){ +{ +return this.c.contains(object); +}}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(collection){ +{ +return this.c.containsAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +{ +return this.c.isEmpty(); +}}); +Clazz_defineMethod(c$, "iterator", +function(){ +{ +return this.c.iterator(); +}}); +Clazz_defineMethod(c$, "remove", +function(object){ +{ +return this.c.remove(object); +}}, "~O"); +Clazz_defineMethod(c$, "removeAll", +function(collection){ +{ +return this.c.removeAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "retainAll", +function(collection){ +{ +return this.c.retainAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "size", +function(){ +{ +return this.c.size(); +}}); +Clazz_defineMethod(c$, "toArray", +function(){ +{ +return this.c.toArray(); +}}); +Clazz_defineMethod(c$, "toString", +function(){ +{ +return this.c.toString(); +}}); +Clazz_defineMethod(c$, "toArray", +function(array){ +{ +return this.c.toArray(array); +}}, "~A"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "SynchronizedRandomAccessList", java.util.Collections.SynchronizedList, java.util.RandomAccess); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +{ +return new java.util.Collections.SynchronizedRandomAccessList(this.list.subList(start, end), this.mutex); +}}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedList", java.util.Collections.SynchronizedCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedList, [l]); +this.list = l; +}, "java.util.List"); +Clazz_makeConstructor(c$, +function(l, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedList, [l, mutex]); +this.list = l; +}, "java.util.List,~O"); +Clazz_defineMethod(c$, "add", +function(location, object){ +{ +this.list.add(location, object); +}}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +{ +return this.list.addAll(location, collection); +}}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "equals", +function(object){ +{ +return this.list.equals(object); +}}, "~O"); +Clazz_defineMethod(c$, "get", +function(location){ +{ +return this.list.get(location); +}}, "~N"); +Clazz_defineMethod(c$, "hashCode", +function(){ +{ +return this.list.hashCode(); +}}); +Clazz_defineMethod(c$, "indexOf", +function(object){ +{ +return this.list.indexOf(object); +}}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(object){ +{ +return this.list.lastIndexOf(object); +}}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +{ +return this.list.listIterator(); +}}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +{ +return this.list.listIterator(location); +}}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +{ +return this.list.remove(location); +}}, "~N"); +Clazz_defineMethod(c$, "set", +function(location, object){ +{ +return this.list.set(location, object); +}}, "~N,~O"); +Clazz_defineMethod(c$, "subList", +function(start, end){ +{ +return new java.util.Collections.SynchronizedList(this.list.subList(start, end), this.mutex); +}}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +this.mutex = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(map){ +this.m = map; +this.mutex = this; +}, "java.util.Map"); +Clazz_makeConstructor(c$, +function(map, mutex){ +this.m = map; +this.mutex = mutex; +}, "java.util.Map,~O"); +Clazz_defineMethod(c$, "clear", +function(){ +{ +this.m.clear(); +}}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +{ +return this.m.containsKey(key); +}}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +{ +return this.m.containsValue(value); +}}, "~O"); +Clazz_defineMethod(c$, "entrySet", +function(){ +{ +return new java.util.Collections.SynchronizedSet(this.m.entrySet(), this.mutex); +}}); +Clazz_defineMethod(c$, "equals", +function(object){ +{ +return this.m.equals(object); +}}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +{ +return this.m.get(key); +}}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +{ +return this.m.hashCode(); +}}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +{ +return this.m.isEmpty(); +}}); +Clazz_defineMethod(c$, "keySet", +function(){ +{ +return new java.util.Collections.SynchronizedSet(this.m.keySet(), this.mutex); +}}); +Clazz_defineMethod(c$, "put", +function(key, value){ +{ +return this.m.put(key, value); +}}, "~O,~O"); +Clazz_defineMethod(c$, "putAll", +function(map){ +{ +this.m.putAll(map); +}}, "java.util.Map"); +Clazz_defineMethod(c$, "remove", +function(key){ +{ +return this.m.remove(key); +}}, "~O"); +Clazz_defineMethod(c$, "size", +function(){ +{ +return this.m.size(); +}}); +Clazz_defineMethod(c$, "values", +function(){ +{ +return new java.util.Collections.SynchronizedCollection(this.m.values(), this.mutex); +}}); +Clazz_defineMethod(c$, "toString", +function(){ +{ +return this.m.toString(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "SynchronizedSet", java.util.Collections.SynchronizedCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +{ +return this.c.equals(object); +}}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +{ +return this.c.hashCode(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedSortedMap", java.util.Collections.SynchronizedMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(map){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedMap, [map]); +this.sm = map; +}, "java.util.SortedMap"); +Clazz_makeConstructor(c$, +function(map, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedMap, [map, mutex]); +this.sm = map; +}, "java.util.SortedMap,~O"); +Clazz_defineMethod(c$, "comparator", +function(){ +{ +return this.sm.comparator(); +}}); +Clazz_defineMethod(c$, "firstKey", +function(){ +{ +return this.sm.firstKey(); +}}); +Clazz_defineMethod(c$, "headMap", +function(endKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.headMap(endKey), this.mutex); +}}, "~O"); +Clazz_defineMethod(c$, "lastKey", +function(){ +{ +return this.sm.lastKey(); +}}); +Clazz_defineMethod(c$, "subMap", +function(startKey, endKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.subMap(startKey, endKey), this.mutex); +}}, "~O,~O"); +Clazz_defineMethod(c$, "tailMap", +function(startKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.tailMap(startKey), this.mutex); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedSortedSet", java.util.Collections.SynchronizedSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(set){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedSet, [set]); +this.ss = set; +}, "java.util.SortedSet"); +Clazz_makeConstructor(c$, +function(set, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedSet, [set, mutex]); +this.ss = set; +}, "java.util.SortedSet,~O"); +Clazz_defineMethod(c$, "comparator", +function(){ +{ +return this.ss.comparator(); +}}); +Clazz_defineMethod(c$, "first", +function(){ +{ +return this.ss.first(); +}}); +Clazz_defineMethod(c$, "headSet", +function(end){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.headSet(end), this.mutex); +}}, "~O"); +Clazz_defineMethod(c$, "last", +function(){ +{ +return this.ss.last(); +}}); +Clazz_defineMethod(c$, "subSet", +function(start, end){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.subSet(start, end), this.mutex); +}}, "~O,~O"); +Clazz_defineMethod(c$, "tailSet", +function(start){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.tailSet(start), this.mutex); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(collection){ +this.c = collection; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "addAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_defineMethod(c$, "contains", +function(object){ +return this.c.contains(object); +}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(collection){ +return this.c.containsAll(collection); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.c.isEmpty(); +}); +Clazz_defineMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableCollection$1") ? 0 : java.util.Collections.UnmodifiableCollection.$Collections$UnmodifiableCollection$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableCollection$1, this, null)); +}); +Clazz_overrideMethod(c$, "remove", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "retainAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "size", +function(){ +return this.c.size(); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.c.toArray(); +}); +Clazz_defineMethod(c$, "toArray", +function(array){ +return this.c.toArray(array); +}, "~A"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.c.toString(); +}); +c$.$Collections$UnmodifiableCollection$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableCollection$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableCollection"].c.iterator(); +}); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.iterator.next(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "UnmodifiableRandomAccessList", java.util.Collections.UnmodifiableList, java.util.RandomAccess); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.UnmodifiableRandomAccessList(this.list.subList(start, end)); +}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableList", java.util.Collections.UnmodifiableCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableList, [l]); +this.list = l; +}, "java.util.List"); +Clazz_defineMethod(c$, "add", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +throw new UnsupportedOperationException(); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.list.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(location){ +return this.list.get(location); +}, "~N"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.list.hashCode(); +}); +Clazz_defineMethod(c$, "indexOf", +function(object){ +return this.list.indexOf(object); +}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(object){ +return this.list.lastIndexOf(object); +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableList$1") ? 0 : java.util.Collections.UnmodifiableList.$Collections$UnmodifiableList$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableList$1, this, Clazz_cloneFinals("location", location))); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +throw new UnsupportedOperationException(); +}, "~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.UnmodifiableList(this.list.subList(start, end)); +}, "~N,~N"); +c$.$Collections$UnmodifiableList$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableList$1", null, java.util.ListIterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableList"].list.listIterator(this.f$.location); +}); +Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "hasPrevious", +function(){ +return this.iterator.hasPrevious(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.iterator.next(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.iterator.nextIndex(); +}); +Clazz_defineMethod(c$, "previous", +function(){ +return this.iterator.previous(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +return this.iterator.previousIndex(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_overrideMethod(c$, "set", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(map){ +this.m = map; +}, "java.util.Map"); +Clazz_overrideMethod(c$, "clear", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +return this.m.containsKey(key); +}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +return this.m.containsValue(value); +}, "~O"); +Clazz_defineMethod(c$, "entrySet", +function(){ +return new java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet(this.m.entrySet()); +}); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.m.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +return this.m.get(key); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.m.hashCode(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.m.isEmpty(); +}); +Clazz_defineMethod(c$, "keySet", +function(){ +return new java.util.Collections.UnmodifiableSet(this.m.keySet()); +}); +Clazz_overrideMethod(c$, "put", +function(key, value){ +throw new UnsupportedOperationException(); +}, "~O,~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +throw new UnsupportedOperationException(); +}, "java.util.Map"); +Clazz_overrideMethod(c$, "remove", +function(key){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "size", +function(){ +return this.m.size(); +}); +Clazz_defineMethod(c$, "values", +function(){ +return new java.util.Collections.UnmodifiableCollection(this.m.values()); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.m.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections.UnmodifiableMap, "UnmodifiableEntrySet", java.util.Collections.UnmodifiableSet); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1") ? 0 : java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.$Collections$UnmodifiableMap$UnmodifiableEntrySet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1, this, null)); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +var length = this.c.size(); +var result = new Array(length); +var it = this.iterator(); +for (var i = length; --i >= 0; ) { +result[i] = it.next(); +} +return result; +}); +Clazz_defineMethod(c$, "toArray", +function(contents){ +var size = this.c.size(); +var index = 0; +var it = this.iterator(); +if (size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, size); +}while (index < size) { +contents[index++] = it.next(); +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +c$.$Collections$UnmodifiableMap$UnmodifiableEntrySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableMap$UnmodifiableEntrySet$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet"].c.iterator(); +}); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return new java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.UnmodifiableMapEntry(this.iterator.next()); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mapEntry = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet, "UnmodifiableMapEntry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(entry){ +this.mapEntry = entry; +}, "java.util.Map.Entry"); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.mapEntry.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "getKey", +function(){ +return this.mapEntry.getKey(); +}); +Clazz_defineMethod(c$, "getValue", +function(){ +return this.mapEntry.getValue(); +}); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.mapEntry.hashCode(); +}); +Clazz_overrideMethod(c$, "setValue", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.mapEntry.toString(); +}); +/*eoif3*/})(); +/*eoif3*/})(); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "UnmodifiableSet", java.util.Collections.UnmodifiableCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +return this.c.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.c.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableSortedMap", java.util.Collections.UnmodifiableMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(map){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableSortedMap, [map]); +this.sm = map; +}, "java.util.SortedMap"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.sm.comparator(); +}); +Clazz_defineMethod(c$, "firstKey", +function(){ +return this.sm.firstKey(); +}); +Clazz_defineMethod(c$, "headMap", +function(before){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.headMap(before)); +}, "~O"); +Clazz_defineMethod(c$, "lastKey", +function(){ +return this.sm.lastKey(); +}); +Clazz_defineMethod(c$, "subMap", +function(start, end){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.subMap(start, end)); +}, "~O,~O"); +Clazz_defineMethod(c$, "tailMap", +function(after){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.tailMap(after)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableSortedSet", java.util.Collections.UnmodifiableSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(set){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableSortedSet, [set]); +this.ss = set; +}, "java.util.SortedSet"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.ss.comparator(); +}); +Clazz_defineMethod(c$, "first", +function(){ +return this.ss.first(); +}); +Clazz_defineMethod(c$, "headSet", +function(before){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.headSet(before)); +}, "~O"); +Clazz_defineMethod(c$, "last", +function(){ +return this.ss.last(); +}); +Clazz_defineMethod(c$, "subSet", +function(start, end){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.subSet(start, end)); +}, "~O,~O"); +Clazz_defineMethod(c$, "tailSet", +function(after){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.tailSet(after)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +this.type = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(c, type){ +if (c == null || type == null) { +throw new NullPointerException(); +}this.c = c; +this.type = type; +}, "java.util.Collection,Class"); +Clazz_defineMethod(c$, "size", +function(){ +return this.c.size(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.c.isEmpty(); +}); +Clazz_defineMethod(c$, "contains", +function(obj){ +return this.c.contains(obj); +}, "~O"); +Clazz_defineMethod(c$, "iterator", +function(){ +var i = this.c.iterator(); +if (Clazz_instanceOf(i,"java.util.ListIterator")) { +i = new java.util.Collections.CheckedListIterator(i, this.type); +}return i; +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.c.toArray(); +}); +Clazz_defineMethod(c$, "toArray", +function(arr){ +return this.c.toArray(arr); +}, "~A"); +Clazz_defineMethod(c$, "add", +function(obj){ +return this.c.add(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +Clazz_defineMethod(c$, "remove", +function(obj){ +return this.c.remove(obj); +}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(c1){ +return this.c.containsAll(c1); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "addAll", +function(c1){ +var size = c1.size(); +if (size == 0) { +return false; +}var arr = new Array(size); +var it = c1.iterator(); +for (var i = 0; i < size; i++) { +arr[i] = java.util.Collections.checkType(it.next(), this.type); +} +var added = false; +for (var i = 0; i < size; i++) { +added = new Boolean (added | this.c.add(arr[i])).valueOf(); +} +return added; +}, "java.util.Collection"); +Clazz_defineMethod(c$, "removeAll", +function(c1){ +return this.c.removeAll(c1); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "retainAll", +function(c1){ +return this.c.retainAll(c1); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "clear", +function(){ +this.c.clear(); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.c.toString(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.i = null; +this.type = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedListIterator", null, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(i, type){ +this.i = i; +this.type = type; +}, "java.util.ListIterator,Class"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.i.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.i.next(); +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.i.remove(); +}); +Clazz_defineMethod(c$, "hasPrevious", +function(){ +return this.i.hasPrevious(); +}); +Clazz_defineMethod(c$, "previous", +function(){ +return this.i.previous(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.i.nextIndex(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +return this.i.previousIndex(); +}); +Clazz_defineMethod(c$, "set", +function(obj){ +this.i.set(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +Clazz_defineMethod(c$, "add", +function(obj){ +this.i.add(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.l = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedList", java.util.Collections.CheckedCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l, type){ +Clazz_superConstructor(this, java.util.Collections.CheckedList, [l, type]); +this.l = l; +}, "java.util.List,Class"); +Clazz_defineMethod(c$, "addAll", +function(index, c1){ +var size = c1.size(); +if (size == 0) { +return false; +}var arr = new Array(size); +var it = c1.iterator(); +for (var i = 0; i < size; i++) { +arr[i] = java.util.Collections.checkType(it.next(), this.type); +} +return this.l.addAll(index, java.util.Arrays.asList(arr)); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "get", +function(index){ +return this.l.get(index); +}, "~N"); +Clazz_defineMethod(c$, "set", +function(index, obj){ +return this.l.set(index, java.util.Collections.checkType(obj, this.type)); +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(index, obj){ +this.l.add(index, java.util.Collections.checkType(obj, this.type)); +}, "~N,~O"); +Clazz_defineMethod(c$, "remove", +function(index){ +return this.l.remove(index); +}, "~N"); +Clazz_defineMethod(c$, "indexOf", +function(obj){ +return this.l.indexOf(obj); +}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(obj){ +return this.l.lastIndexOf(obj); +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return new java.util.Collections.CheckedListIterator(this.l.listIterator(), this.type); +}); +Clazz_defineMethod(c$, "listIterator", +function(index){ +return new java.util.Collections.CheckedListIterator(this.l.listIterator(index), this.type); +}, "~N"); +Clazz_defineMethod(c$, "subList", +function(fromIndex, toIndex){ +return java.util.Collections.checkedList(this.l.subList(fromIndex, toIndex), this.type); +}, "~N,~N"); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.l.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.l.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "CheckedRandomAccessList", java.util.Collections.CheckedList, java.util.RandomAccess); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "CheckedSet", java.util.Collections.CheckedCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(obj){ +return this.c.equals(obj); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.c.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +this.keyType = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(m, keyType, valueType){ +if (m == null || keyType == null || valueType == null) { +throw new NullPointerException(); +}this.m = m; +this.keyType = keyType; +this.valueType = valueType; +}, "java.util.Map,Class,Class"); +Clazz_defineMethod(c$, "size", +function(){ +return this.m.size(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.m.isEmpty(); +}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +return this.m.containsKey(key); +}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +return this.m.containsValue(value); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +return this.m.get(key); +}, "~O"); +Clazz_defineMethod(c$, "put", +function(key, value){ +return this.m.put(java.util.Collections.checkType(key, this.keyType), java.util.Collections.checkType(value, this.valueType)); +}, "~O,~O"); +Clazz_defineMethod(c$, "remove", +function(key){ +return this.m.remove(key); +}, "~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +var size = map.size(); +if (size == 0) { +return; +}var entries = new Array(size); +var it = map.entrySet().iterator(); +for (var i = 0; i < size; i++) { +var e = it.next(); +java.util.Collections.checkType(e.getKey(), this.keyType); +java.util.Collections.checkType(e.getValue(), this.valueType); +entries[i] = e; +} +for (var i = 0; i < size; i++) { +this.m.put(entries[i].getKey(), entries[i].getValue()); +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "clear", +function(){ +this.m.clear(); +}); +Clazz_defineMethod(c$, "keySet", +function(){ +return this.m.keySet(); +}); +Clazz_defineMethod(c$, "values", +function(){ +return this.m.values(); +}); +Clazz_defineMethod(c$, "entrySet", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntrySet(this.m.entrySet(), this.valueType); +}); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.m.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.m.hashCode(); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.m.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.e = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap, "CheckedEntry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(e, valueType){ +if (e == null) { +throw new NullPointerException(); +}this.e = e; +this.valueType = valueType; +}, "java.util.Map.Entry,Class"); +Clazz_defineMethod(c$, "getKey", +function(){ +return this.e.getKey(); +}); +Clazz_defineMethod(c$, "getValue", +function(){ +return this.e.getValue(); +}); +Clazz_defineMethod(c$, "setValue", +function(obj){ +return this.e.setValue(java.util.Collections.checkType(obj, this.valueType)); +}, "~O"); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.e.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.e.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.s = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap, "CheckedEntrySet", null, java.util.Set); +Clazz_makeConstructor(c$, +function(s, valueType){ +this.s = s; +this.valueType = valueType; +}, "java.util.Set,Class"); +Clazz_defineMethod(c$, "iterator", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntrySet.CheckedEntryIterator(this.s.iterator(), this.valueType); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +var thisSize = this.size(); +var array = new Array(thisSize); +var it = this.iterator(); +for (var i = 0; i < thisSize; i++) { +array[i] = it.next(); +} +return array; +}); +Clazz_defineMethod(c$, "toArray", +function(array){ +var thisSize = this.size(); +if (array.length < thisSize) { +var ct = array.getClass().getComponentType(); +array = java.lang.reflect.Array.newInstance(ct, thisSize); +}var it = this.iterator(); +for (var i = 0; i < thisSize; i++) { +array[i] = it.next(); +} +if (thisSize < array.length) { +array[thisSize] = null; +}return array; +}, "~A"); +Clazz_defineMethod(c$, "retainAll", +function(c){ +return this.s.retainAll(c); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "removeAll", +function(c){ +return this.s.removeAll(c); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "containsAll", +function(c){ +return this.s.containsAll(c); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "addAll", +function(c){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "remove", +function(o){ +return this.s.remove(o); +}, "~O"); +Clazz_defineMethod(c$, "contains", +function(o){ +return this.s.contains(o); +}, "~O"); +Clazz_overrideMethod(c$, "add", +function(o){ +throw new UnsupportedOperationException(); +}, "java.util.Map.Entry"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.s.isEmpty(); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.s.clear(); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.s.size(); +}); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.s.hashCode(); +}); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.s.equals(object); +}, "~O"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.i = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap.CheckedEntrySet, "CheckedEntryIterator", null, java.util.Iterator); +Clazz_makeConstructor(c$, +function(i, valueType){ +this.i = i; +this.valueType = valueType; +}, "java.util.Iterator,Class"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.i.hasNext(); +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.i.remove(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntry(this.i.next(), this.valueType); +}); +/*eoif3*/})(); +/*eoif3*/})(); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedSortedSet", java.util.Collections.CheckedSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(s, type){ +Clazz_superConstructor(this, java.util.Collections.CheckedSortedSet, [s, type]); +this.ss = s; +}, "java.util.SortedSet,Class"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.ss.comparator(); +}); +Clazz_defineMethod(c$, "subSet", +function(fromElement, toElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.subSet(fromElement, toElement), this.type); +}, "~O,~O"); +Clazz_defineMethod(c$, "headSet", +function(toElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.headSet(toElement), this.type); +}, "~O"); +Clazz_defineMethod(c$, "tailSet", +function(fromElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.tailSet(fromElement), this.type); +}, "~O"); +Clazz_defineMethod(c$, "first", +function(){ +return this.ss.first(); +}); +Clazz_defineMethod(c$, "last", +function(){ +return this.ss.last(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedSortedMap", java.util.Collections.CheckedMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(m, keyType, valueType){ +Clazz_superConstructor(this, java.util.Collections.CheckedSortedMap, [m, keyType, valueType]); +this.sm = m; +}, "java.util.SortedMap,Class,Class"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.sm.comparator(); +}); +Clazz_defineMethod(c$, "subMap", +function(fromKey, toKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.subMap(fromKey, toKey), this.keyType, this.valueType); +}, "~O,~O"); +Clazz_defineMethod(c$, "headMap", +function(toKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.headMap(toKey), this.keyType, this.valueType); +}, "~O"); +Clazz_defineMethod(c$, "tailMap", +function(fromKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.tailMap(fromKey), this.keyType, this.valueType); +}, "~O"); +Clazz_defineMethod(c$, "firstKey", +function(){ +return this.sm.firstKey(); +}); +Clazz_defineMethod(c$, "lastKey", +function(){ +return this.sm.lastKey(); +}); +/*eoif3*/})(); +c$.EMPTY_ENUMERATION = null; +c$.EMPTY_ITERATOR = null; +c$.EMPTY_LIST = new java.util.Collections.EmptyList(); +c$.EMPTY_SET = new java.util.Collections.EmptySet(); +c$.EMPTY_MAP = new java.util.Collections.EmptyMap(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_declareType(java.util, "Dictionary", null); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.AbstractSet", "$.Dictionary", "$.Enumeration", "$.Iterator", "$.Map"], "java.util.Hashtable", ["java.util.Collections"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.table = null; +this.count = 0; +this.threshold = 0; +this.loadFactor = 0; +this.modCount = 0; +this.$keySet = null; +this.$entrySet = null; +this.$values = null; +this.__m = null; +this.__allowJS = false; +Clazz_instantialize(this, arguments);}, java.util, "Hashtable", java.util.Dictionary, [java.util.Map, Cloneable]); +Clazz_makeConstructor(c$, +function(){ +this.initHT(); +}); +Clazz_defineMethod(c$, "initHT", +function(){ +var map = null; +var capacity = 11; +var loadFactor = 0.75; +{ +capacity = arguments[0]; +loadFactor = arguments[1]; +if (typeof capacity == "object") { +map = capacity; +capacity = Math.max(2*t.size(), 11); +this.__allowJS = map.__allowJS; +} else { +this.__allowJS = true; +} +capacity = (capacity || 11); +loadFactor = (loadFactor || 0.75); +}if (capacity < 0) throw new IllegalArgumentException("Illegal Capacity: " + capacity); +if (loadFactor <= 0 || Float.isNaN(loadFactor)) throw new IllegalArgumentException("Illegal Load: " + loadFactor); +if (capacity == 0) capacity = 1; +this.loadFactor = loadFactor; +this.table = new Array(capacity); +this.threshold = Clazz_floatToInt(Math.min(capacity * loadFactor, 2147483640)); +this.__setJS(); +if (map != null) this.putAll(map); +}); +Clazz_overrideMethod(c$, "size", +function(){ +var c = this.count; +{ +c = this.__m && this.__m.size || c; +}return c; +}); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "keys", +function(){ +return this.getEnumeration(0); +}); +Clazz_overrideMethod(c$, "elements", +function(){ +return this.getEnumeration(1); +}); +Clazz_defineMethod(c$, "contains", +function(value){ +if (value == null) { +throw new NullPointerException(); +}if (this.size() == 0) return false; +if (java.util.Hashtable.__isSimple(this)) { +var m = this.__m; +{ +var iter = m.values(); +for (var n = iter.next(); !n.done; n = iter.next()) { +if (n.value == value || n.value.equals(value)) { +return true; +} +} +}} else { +var tab = this.table; +for (var i = tab.length; i-- > 0; ) { +for (var e = tab[i]; e != null; e = e.next_) { +if (e.value.equals(value)) { +return true; +}} +} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return this.contains(value); +}, "~O"); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return false; +case 3: +return true; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +return true; +}} +return false; +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +if (key == null) return null; +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v = null; +{ +v = this.__m.get(key); +}return v; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +return e.value; +}} +return null; +}, "~O"); +Clazz_defineMethod(c$, "rehash", +function(){ +var oldCapacity = this.table.length; +var oldMap = this.table; +var newCapacity = (oldCapacity << 1) + 1; +if (newCapacity - 2147483639 > 0) { +if (oldCapacity == 2147483639) return; +newCapacity = 2147483639; +}var newMap = new Array(newCapacity); +this.modCount++; +this.threshold = Clazz_floatToInt(Math.min(newCapacity * this.loadFactor, 2147483640)); +this.table = newMap; +for (var i = oldCapacity; i-- > 0; ) { +for (var old = oldMap[i]; old != null; ) { +var e = old; +old = old.next_; +var index = (e.hash & 0x7FFFFFFF) % newCapacity; +e.next_ = newMap[index]; +newMap[index] = e; +} +} +}); +Clazz_defineMethod(c$, "addEntry", +function(hash, key, value, index){ +this.modCount++; +var tab = this.table; +if (this.count >= this.threshold) { +this.rehash(); +tab = this.table; +hash = key.hashCode(); +index = (hash & 0x7FFFFFFF) % tab.length; +}var e = tab[index]; +tab[index] = new java.util.Hashtable.Entry(hash, key, value, e); +this.count++; +}, "~N,~O,~O,~N"); +Clazz_overrideMethod(c$, "put", +function(key, value){ +if (value == null) { +throw new NullPointerException(); +}switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +{ +this.__m.set(key, value); +}++this.modCount; +return null; +case 3: +var v0 = null; +{ +v0 = this.__m.get(key); +this.__m.set(key, value); +}++this.modCount; +return v0; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var entry = tab[index]; +for (; entry != null; entry = entry.next_) { +if ((entry.hash == hash) && entry.key.equals(key)) { +var old = entry.value; +entry.value = value; +return old; +}} +this.addEntry(hash, key, value, index); +return null; +}, "~O,~O"); +Clazz_overrideMethod(c$, "remove", +function(key){ +if (key == null) throw new NullPointerException("Hashtable key may not be null"); +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v0 = null; +{ +v0 = this.__m.get(key); this.__m["delete"](key); +}++this.modCount; +return v0; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +this.modCount++; +if (prev != null) { +prev.next_ = e.next_; +} else { +tab[index] = e.next_; +}this.count--; +var oldValue = e.value; +e.value = null; +return oldValue; +}} +return null; +}, "~O"); +Clazz_overrideMethod(c$, "putAll", +function(t){ +var key = null; +var value = null; +if (java.util.Hashtable.__isSimple(t)) { +var me = this; +{ +t.__m.forEach(function(value, key) { me.put(key, value); }) +}return; +}for (var e, $e = t.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.put(e.getKey(), e.getValue()); + +}, "java.util.Map"); +Clazz_overrideMethod(c$, "clear", +function(){ +var tab = this.table; +this.modCount++; +if (java.util.Hashtable.__isSimple(this)) { +{ +this.__m.clear(); +}}this.__setJS(); +for (var index = tab.length; --index >= 0; ) tab[index] = null; + +this.count = 0; +}); +Clazz_defineMethod(c$, "clone", +function(){ +try { +var t = Clazz_superCall(this, java.util.Hashtable, "clone", []); +t.table = new Array(this.table.length); +for (var i = this.table.length; i-- > 0; ) { +t.table[i] = (this.table[i] != null) ? this.table[i].clone() : null; +} +t.$keySet = null; +t.$entrySet = null; +t.$values = null; +t.modCount = 0; +if (java.util.Hashtable.__isSimple(this)) { +t.__setJS(); +var me = this; +{ +me.__m.forEach(function(value, key) { +t.__m.set(key, value); t.modCount++; +}); +}} else { +t.__m = null; +}return t; +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +throw new InternalError(e); +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "toString", +function(){ +var max = this.size() - 1; +if (max == -1) return "{}"; +var it = this.entrySet().iterator(); +var sb = "{"; +for (var i = 0; ; i++) { +var e = it.next(); +var key = e.getKey(); +var value = e.getValue(); +sb += (key === this ? "(this Map)" : key.toString()); +sb += "="; +sb += (value === this ? "(this Map)" : value.toString()); +if (i == max) return sb + '}'; +sb += ", "; +} +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (o === this) return true; +if (!(Clazz_instanceOf(o,"java.util.Map"))) return false; +var t = o; +if (t.size() != this.size()) return false; +try { +var i = this.entrySet().iterator(); +while (i.hasNext()) { +var e = i.next(); +var key = e.getKey(); +var value = e.getValue(); +if (value == null) { +if (!(t.get(key) == null && t.containsKey(key))) return false; +} else { +if (!value.equals(t.get(key))) return false; +}} +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"ClassCastException")){ +var unused = e$$; +{ +return false; +} +} else if (Clazz_exceptionOf(e$$, NullPointerException)){ +var unused = e$$; +{ +return false; +} +} else { +throw e$$; +} +} +return true; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var h = 0; +if (this.count == 0 || this.loadFactor < 0) return h; +this.loadFactor = -this.loadFactor; +var tab = this.table; +for (var entry, $entry = 0, $$entry = tab; $entry < $$entry.length && ((entry = $$entry[$entry]) || true); $entry++) { +while (entry != null) { +h += entry.hashCode(); +entry = entry.next_; +} +} +this.loadFactor = -this.loadFactor; +return h; +}); +Clazz_defineMethod(c$, "getEnumeration", +function(type){ +if (this.size() == 0) { +return java.util.Collections.emptyEnumeration(); +} else { +return new java.util.Hashtable.Enumerator(this, type, false); +}}, "~N"); +Clazz_defineMethod(c$, "getIterator", +function(type){ +if (this.size() == 0) { +return java.util.Collections.emptyIterator(); +} else { +return new java.util.Hashtable.Enumerator(this, type, true); +}}, "~N"); +Clazz_overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) this.$keySet = new java.util.Hashtable.KeySet(this); +return this.$keySet; +}); +Clazz_overrideMethod(c$, "entrySet", +function(){ +if (this.$entrySet == null) this.$entrySet = new java.util.Hashtable.EntrySet(this); +return this.$entrySet; +}); +Clazz_overrideMethod(c$, "values", +function(){ +if (this.$values == null) this.$values = new java.util.Hashtable.ValueCollection(this); +return this.$values; +}); +Clazz_defineMethod(c$, "__setJS", +function(){ +if (this.__allowJS && java.util.Hashtable.USE_SIMPLE) { +var m = null; +{ +m = new Map(); +}this.__m = m; +} else { +this.__m = null; +}}); +c$.__get = Clazz_defineMethod(c$, "__get", +function(map, key){ +{ +return map.__m.get(key == null ? null : key + "") +}}, "~O,~O"); +c$.__set = Clazz_defineMethod(c$, "__set", +function(map, key, value){ +{ +map.__m.set(key == null ? null : key + "", value) +}}, "java.util.Map,~O,~O"); +c$.__hasKey = Clazz_defineMethod(c$, "__hasKey", +function(map, key){ +{ +return (!map.__m ? 0 : key != null && typeof key != "string" +? 1 : map.__m.has(key) ? 3 : 2); +}}, "java.util.Map,~O"); +c$.__isSimple = Clazz_defineMethod(c$, "__isSimple", +function(map){ +{ +return !!map.__m; +}}, "java.util.Map"); +c$.__ensureJavaMap = Clazz_defineMethod(c$, "__ensureJavaMap", +function(map){ +{ +if (map.__m) { +var m = map.__m; +map.__m = null; +m.forEach(function(value, key){map.put(key, value);}); +m.clear(); +} +}}, "java.util.Map"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.hash = 0; +this.key = null; +this.value = null; +this.next_ = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "Entry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(hash, key, value, next){ +this.hash = hash; +this.key = key; +this.value = value; +this.next_ = next; +}, "~N,~O,~O,java.util.Hashtable.Entry"); +Clazz_overrideMethod(c$, "clone", +function(){ +return new java.util.Hashtable.Entry(this.hash, this.key, this.value, (this.next_ == null ? null : this.next_.clone())); +}); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.key; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz_overrideMethod(c$, "setValue", +function(value){ +if (value == null) throw new NullPointerException(); +var oldValue = this.value; +this.value = value; +return oldValue; +}, "~O"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var e = o; +return (this.key == null ? e.getKey() == null : this.key.equals(e.getKey())) && (this.value == null ? e.getValue() == null : this.value.equals(e.getValue())); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.hash ^ (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.key.toString() + "=" + this.value.toString(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "KeySet", java.util.AbstractSet); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.KeySet, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(0); +}); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.ht.containsKey(o); +}, "~O"); +Clazz_overrideMethod(c$, "remove", +function(o){ +return this.ht.remove(o) != null; +}, "~O"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "EntrySet", java.util.AbstractSet); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.EntrySet, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(2); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var entry = o; +var key = entry.getKey(); +switch (java.util.Hashtable.__hasKey(this.ht, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this.ht); +break; +case 3: +var value = entry.getValue(); +var v = this.ht.get(key); +return (value === v || value != null && value.equals(key)); +case 2: +return false; +} +var tab = this.ht.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) if (e.hash == hash && e.equals(entry)) return true; + +return false; +}, "~O"); +Clazz_overrideMethod(c$, "remove", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var entry = o; +var key = entry.getKey(); +switch (java.util.Hashtable.__hasKey(this.ht, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this.ht); +break; +case 3: +var value = entry.getValue(); +if (value == null) return false; +var v = this.ht.get(key); +if (v === value || v.equals(value)) { +this.ht.remove(key); +return true; +}return false; +case 2: +return false; +} +var tab = this.ht.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if (e.hash == hash && e.equals(entry)) { +this.ht.modCount++; +if (prev != null) prev.next_ = e.next_; + else tab[index] = e.next_; +this.ht.count--; +e.value = null; +return true; +}} +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "ValueCollection", java.util.AbstractCollection); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.ValueCollection, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(1); +}); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.ht.containsValue(o); +}, "~O"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.table = null; +this.index = 0; +this.next_ = null; +this.current = null; +this.type = 0; +this.jsMapIterator = null; +this.ht = null; +this.isIterator = false; +this.expectedModCount = 0; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "Enumerator", null, [java.util.Enumeration, java.util.Iterator]); +Clazz_makeConstructor(c$, +function(ht, type, iterator){ +this.ht = ht; +this.table = ht.table; +this.index = ht.table.length; +this.type = type; +this.isIterator = iterator; +this.expectedModCount = ht.modCount; +if (java.util.Hashtable.__isSimple(ht)) { +var m = ht.__m; +{ +this.jsMapIterator = m.entries(); +this.next_ = this.jsMapIterator.next(); +}}}, "java.util.Hashtable,~N,~B"); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +if (java.util.Hashtable.__isSimple(this.ht)) { +var b = false; +{ +b = this.next_ && !this.next_.done +}return b; +} else { +var e = this.next_; +var i = this.index; +var t = this.table; +while (e == null && i > 0) { +e = t[--i]; +} +this.next_ = e; +this.index = i; +return e != null; +}}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +var node = this.next_; +if (java.util.Hashtable.__isSimple(this.ht)) { +var t = this.type; +this.current = node; +var n = null; +{ +n = this.jsMapIterator.next() || null; +}this.next_ = n; +if (node != null) { +var k = null; +var v = null; +var done = false; +{ +done = node.done; +if (!done) { +if (t < 2) return node.value[t]; +k = node.value[0]; +v = node.value[1]; +} +}if (!done) { +return ((Clazz_isClassDefined("java.util.Hashtable$Enumerator$1") ? 0 : java.util.Hashtable.Enumerator.$Hashtable$Enumerator$1$ ()), Clazz_innerTypeInstance(java.util.Hashtable$Enumerator$1, this, null, 0, k, v, null)); +}}} else { +var i = this.index; +var t = this.table; +while (node == null && i > 0) { +node = t[--i]; +} +this.next_ = node; +this.index = i; +if (node != null) { +var e = this.current = this.next_; +this.next_ = e.next_; +return this.type == 0 ? e.key : (this.type == 1 ? e.value : e); +}}throw new java.util.NoSuchElementException("Hashtable Enumerator"); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.hasMoreElements(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.ht.modCount != this.expectedModCount) throw new java.util.ConcurrentModificationException(); +return this.nextElement(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +if (!this.isIterator) throw new UnsupportedOperationException(); +var p = this.current; +if (p == null) throw new IllegalStateException("Hashtable Enumerator"); +if (this.ht.modCount != this.expectedModCount) throw new java.util.ConcurrentModificationException(); +if (java.util.Hashtable.__isSimple(this.ht)) { +var key = null; +{ +key = p.value[0]; +}this.ht.remove(key); +this.expectedModCount++; +} else { +{ +var tab = this.ht.table; +var index = (this.current.hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if (e === this.current) { +this.ht.modCount++; +this.expectedModCount++; +if (prev == null) tab[index] = e.next_; + else prev.next_ = e.next_; +this.ht.count--; +this.current = null; +return; +}} +throw new java.util.ConcurrentModificationException(); +}}}); +c$.$Hashtable$Enumerator$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Hashtable$Enumerator$1", java.util.Hashtable.Entry); +Clazz_overrideMethod(c$, "setValue", +function(value){ +var m = this.b$["java.util.Hashtable.Enumerator"].ht.modCount; +var v = this.b$["java.util.Hashtable.Enumerator"].ht.put(this.getKey(), value); +this.b$["java.util.Hashtable.Enumerator"].ht.modCount = m; +return v; +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +c$.USE_SIMPLE = true; +}); +;//5.0.1-v2 Sat Apr 06 02:47:40 CDT 2024 +Clazz_load(["java.util.Map"], "java.util.MapEntry", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.key = null; +this.value = null; +Clazz_instantialize(this, arguments);}, java.util, "MapEntry", null, [java.util.Map.Entry, Cloneable]); +Clazz_makeConstructor(c$, +function(theKey){ +this.key = theKey; +}, "~O"); +Clazz_makeConstructor(c$, +function(theKey, theValue){ +this.key = theKey; +this.value = theValue; +}, "~O,~O"); +Clazz_defineMethod(c$, "clone", +function(){ +try { +return Clazz_superCall(this, java.util.MapEntry, "clone", []); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return (this.key == null ? entry.getKey() == null : this.key.equals(entry.getKey())) && (this.value == null ? entry.getValue() == null : this.value.equals(entry.getValue())); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.key; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return (this.key == null ? 0 : this.key.hashCode()) ^ (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz_overrideMethod(c$, "setValue", +function(object){ +var result = this.value; +this.value = object; +return result; +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.key + "=" + this.value; +}); +Clazz_declareInterface(java.util.MapEntry, "Type"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Hashtable"], "java.util.Properties", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.builder = null; +this.defaults = null; +Clazz_instantialize(this, arguments);}, java.util, "Properties", java.util.Hashtable); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.util.Properties, []); +}); +Clazz_makeConstructor(c$, +function(properties){ +this.initHT(); +this.defaults = (properties == null ? null : properties); +}, "java.util.Properties"); +Clazz_defineMethod(c$, "dumpString", +function(buffer, string, key){ +var i = 0; +if (!key && i < string.length && string.charAt(i) == ' ') { +buffer += ("\\ "); +i++; +}for (; i < string.length; i++) { +var ch = string.charAt(i); +switch ((ch).charCodeAt(0)) { +case 9: +buffer += ("\\t"); +break; +case 10: +buffer += ("\\n"); +break; +case 12: +buffer += ("\\f"); +break; +case 13: +buffer += ("\\r"); +break; +default: +if ("\\#!=:".indexOf(ch) >= 0 || (key && ch == ' ')) { +buffer += ('\\'); +}if (ch >= ' ' && ch <= '~') { +buffer += (ch); +} else { +var hex = Integer.toHexString(ch.charCodeAt(0)); +buffer += ("\\u"); +for (var j = 0; j < 4 - hex.length; j++) { +buffer += ("0"); +} +buffer += (hex); +}} +} +return buffer; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getProperty", +function(name){ +var result = this.get(name); +var property = (typeof(result)=='string') ? result : null; +if (property == null && this.defaults != null) { +property = this.defaults.getProperty(name); +}return property; +}, "~S"); +Clazz_defineMethod(c$, "getProperty", +function(name, defaultValue){ +var result = this.get(name); +var property = (typeof(result)=='string') ? result : null; +if (property == null && this.defaults != null) { +property = this.defaults.getProperty(name); +}if (property == null) { +return defaultValue; +}return property; +}, "~S,~S"); +Clazz_defineMethod(c$, "list", +function(out){ +if (out == null) { +throw new NullPointerException(); +}var buffer = ""; +var keys = this.propertyNames(); +while (keys.hasMoreElements()) { +var key = keys.nextElement(); +buffer += (key); +buffer += ('='); +var property = this.get(key); +var def = this.defaults; +while (property == null) { +property = def.get(key); +def = def.defaults; +} +if (property.length > 40) { +buffer += (property.substring(0, 37)); +buffer += ("..."); +} else { +buffer += (property); +}out.println(buffer.toString()); +buffer = ""; +} +}, "java.io.PrintStream"); +Clazz_defineMethod(c$, "list", +function(writer){ +if (writer == null) { +throw new NullPointerException(); +}var buffer = ""; +var keys = this.propertyNames(); +while (keys.hasMoreElements()) { +var key = keys.nextElement(); +buffer += (key); +buffer += ('='); +var property = this.get(key); +var def = this.defaults; +while (property == null) { +property = def.get(key); +def = def.defaults; +} +if (property.length > 40) { +buffer += (property.substring(0, 37)); +buffer += ("..."); +} else { +buffer += (property); +}writer.println(buffer.toString()); +buffer = ""; +} +}, "java.io.PrintWriter"); +Clazz_defineMethod(c$, "load", +function($in){ + +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "propertyNames", +function(){ +if (this.defaults == null) { +return this.keys(); +}var set = new java.util.Hashtable(this.defaults.size() + this.size()); +var keys = this.defaults.propertyNames(); +while (keys.hasMoreElements()) { +set.put(keys.nextElement(), set); +} +keys = this.keys(); +while (keys.hasMoreElements()) { +set.put(keys.nextElement(), set); +} +return set.keys(); +}); +Clazz_defineMethod(c$, "save", +function(out, comment){ +try { +this.store(out, comment); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "setProperty", +function(name, value){ +return this.put(name, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "store", +function(out, comment){ + +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "loadFromXML", +function($in){ + +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "storeToXML", +function(os, comment){ + +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "storeToXML", +function(os, comment, encoding){ + +}, "java.io.OutputStream,~S,~S"); +Clazz_defineMethod(c$, "substitutePredefinedEntries", +function(s){ +return s.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\u0027", "'").replaceAll("\"", """); +}, "~S"); +c$.lineSeparator = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declareInterface(java.util, "SortedMap", java.util.Map); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declareInterface(java.util, "SortedSet", java.util.Set); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Enumeration"], "java.util.StringTokenizer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.string = null; +this.delimiters = null; +this.returnDelimiters = false; +this.position = 0; +Clazz_instantialize(this, arguments);}, java.util, "StringTokenizer", null, java.util.Enumeration); +Clazz_makeConstructor(c$, +function(string, delimiters, returnDelimiters){ +{ +switch (arguments.length) { +case 1: delimiters = " \t\n\r\f"; +case 2: returnDelimiters = false; +} +}if (string == null) throw new NullPointerException(); +this.string = string; +this.delimiters = delimiters; +this.returnDelimiters = returnDelimiters; +this.position = 0; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "countTokens", +function(){ +var count = 0; +var inToken = false; +for (var i = this.position, length = this.string.length; i < length; i++) { +if (this.delimiters.indexOf(this.string.charAt(i), 0) >= 0) { +if (this.returnDelimiters) count++; +if (inToken) { +count++; +inToken = false; +}} else { +inToken = true; +}} +if (inToken) count++; +return count; +}); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +return this.hasMoreTokens(); +}); +Clazz_defineMethod(c$, "hasMoreTokens", +function(){ +var length = this.string.length; +if (this.position < length) { +if (this.returnDelimiters) return true; +for (var i = this.position; i < length; i++) if (this.delimiters.indexOf(this.string.charAt(i), 0) == -1) return true; + +}return false; +}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +return this.nextToken(); +}); +Clazz_defineMethod(c$, "nextToken", +function(){ +{ +(arguments.length == 1) && (this.delimiters = arguments[0]); +}var i = this.position; +var length = this.string.length; +if (i < length) { +if (this.returnDelimiters) { +if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return String.valueOf(this.string.charAt(this.position++)); +for (this.position++; this.position < length; this.position++) if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return this.string.substring(i, this.position); + +return this.string.substring(i); +}while (i < length && this.delimiters.indexOf(this.string.charAt(i), 0) >= 0) i++; + +this.position = i; +if (i < length) { +for (this.position++; this.position < length; this.position++) if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return this.string.substring(i, this.position); + +return this.string.substring(i); +}}throw new java.util.NoSuchElementException(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "BytePoster"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericColor"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericFileInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericOutputChannel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "JSInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "JSONEncodable"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "ZInputStream"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api.js"); +Clazz_declareInterface(javajs.api.js, "J2SObjectInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericMouseInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(["J.api.FontManager"], "J.api.GenericPlatform", null, function(){ +var c$ = Clazz_declareInterface(J.api, "GenericPlatform", J.api.FontManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "PlatformViewer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "EventManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "FontManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Font", ["JU.AU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.fid = 0; +this.fontFace = null; +this.fontStyle = null; +this.fontSizeNominal = 0; +this.idFontFace = 0; +this.idFontStyle = 0; +this.fontSize = 0; +this.font = null; +this.fontMetrics = null; +this.manager = null; +this.ascent = 0; +this.descent = 0; +this.isBold = false; +this.isItalic = false; +Clazz_instantialize(this, arguments);}, JU, "Font", null); +Clazz_makeConstructor(c$, +function(manager, fid, idFontFace, idFontStyle, fontSize, fontSizeNominal, graphics){ +this.manager = manager; +this.fid = fid; +this.fontFace = JU.Font.fontFaces[idFontFace]; +this.fontStyle = JU.Font.fontStyles[idFontStyle]; +this.idFontFace = idFontFace; +this.idFontStyle = idFontStyle; +this.fontSize = fontSize; +this.isBold = (idFontStyle & 1) == 1; +this.isItalic = (idFontStyle & 2) == 2; +this.fontSizeNominal = fontSizeNominal; +this.font = manager.newFont(JU.Font.fontFaces[idFontFace], this.isBold, this.isItalic, fontSize); +this.fontMetrics = manager.getFontMetrics(this, graphics); +this.descent = manager.getFontDescent(this.fontMetrics); +this.ascent = manager.getFontAscent(this.fontMetrics); +}, "J.api.FontManager,~N,~N,~N,~N,~N,~O"); +c$.getFont3D = Clazz_defineMethod(c$, "getFont3D", +function(fontID){ +return JU.Font.font3ds[fontID]; +}, "~N"); +c$.createFont3D = Clazz_defineMethod(c$, "createFont3D", +function(fontface, fontstyle, fontsize, fontsizeNominal, manager, graphicsForMetrics){ +if (fontsize > 0xFF) fontsize = 0xFF; +var fontsizeX16 = (Clazz_floatToInt(fontsize)) << 4; +var fontkey = ((fontface & 3) | ((fontstyle & 3) << 2) | (fontsizeX16 << 4)); +for (var i = JU.Font.fontkeyCount; --i > 0; ) if (fontkey == JU.Font.fontkeys[i] && JU.Font.font3ds[i].fontSizeNominal == fontsizeNominal) return JU.Font.font3ds[i]; + +var fontIndexNext = JU.Font.fontkeyCount++; +if (fontIndexNext == JU.Font.fontkeys.length) { +JU.Font.fontkeys = JU.AU.arrayCopyI(JU.Font.fontkeys, fontIndexNext + 8); +JU.Font.font3ds = JU.AU.arrayCopyObject(JU.Font.font3ds, fontIndexNext + 8); +}var font3d = new JU.Font(manager, fontIndexNext, fontface, fontstyle, fontsize, fontsizeNominal, graphicsForMetrics); +JU.Font.font3ds[fontIndexNext] = font3d; +JU.Font.fontkeys[fontIndexNext] = fontkey; +return font3d; +}, "~N,~N,~N,~N,J.api.FontManager,~O"); +c$.getFontFaceID = Clazz_defineMethod(c$, "getFontFaceID", +function(fontface){ +return ("Monospaced".equalsIgnoreCase(fontface) ? 2 : "Serif".equalsIgnoreCase(fontface) ? 1 : 0); +}, "~S"); +c$.getFontStyleID = Clazz_defineMethod(c$, "getFontStyleID", +function(fontstyle){ +for (var i = 4; --i >= 0; ) if (JU.Font.fontStyles[i].equalsIgnoreCase(fontstyle)) return i; + +return -1; +}, "~S"); +Clazz_defineMethod(c$, "getAscent", +function(){ +return this.ascent; +}); +Clazz_defineMethod(c$, "getDescent", +function(){ +return this.descent; +}); +Clazz_defineMethod(c$, "getHeight", +function(){ +return this.getAscent() + this.getDescent(); +}); +Clazz_defineMethod(c$, "getFontMetrics", +function(){ +return this.fontMetrics; +}); +Clazz_defineMethod(c$, "stringWidth", +function(text){ +return this.manager.fontStringWidth(this, text); +}, "~S"); +Clazz_defineMethod(c$, "getInfo", +function(){ +return this.fontSizeNominal + " " + this.fontFace + " " + this.fontStyle; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getInfo() + "]"; +}); +c$.fontkeyCount = 1; +c$.fontkeys = Clazz_newIntArray (8, 0); +c$.font3ds = new Array(8); +c$.fontFaces = Clazz_newArray(-1, ["SansSerif", "Serif", "Monospaced", ""]); +c$.fontStyles = Clazz_newArray(-1, ["Plain", "Bold", "Italic", "BoldItalic"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["javajs.api.GenericColor"], "JS.Color", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.argb = 0; +Clazz_instantialize(this, arguments);}, JS, "Color", null, javajs.api.GenericColor); +Clazz_overrideMethod(c$, "getRGB", +function(){ +return this.argb & 0x00FFFFFF; +}); +Clazz_overrideMethod(c$, "getOpacity255", +function(){ +return ((this.argb >> 24) & 0xFF); +}); +Clazz_overrideMethod(c$, "setOpacity255", +function(a){ +this.argb = this.argb & 0xFFFFFF | ((a & 0xFF) << 24); +}, "~N"); +c$.get1 = Clazz_defineMethod(c$, "get1", +function(rgb){ +var c = new JS.Color(); +c.argb = rgb | 0xFF000000; +return c; +}, "~N"); +c$.get3 = Clazz_defineMethod(c$, "get3", +function(r, g, b){ +return new JS.Color().set4(r, g, b, 0xFF); +}, "~N,~N,~N"); +c$.get4 = Clazz_defineMethod(c$, "get4", +function(r, g, b, a){ +return new JS.Color().set4(r, g, b, a); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "set4", +function(r, g, b, a){ +this.argb = ((a << 24) | (r << 16) | (g << 8) | b) & 0xFFFFFFFF; +return this; +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +var s = ("00000000" + Integer.toHexString(this.argb)); +return "[0x" + s.substring(s.length - 8, s.length) + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.width = 0; +this.height = 0; +Clazz_instantialize(this, arguments);}, JS, "Dimension", null); +Clazz_makeConstructor(c$, +function(w, h){ +this.set(w, h); +}, "~N,~N"); +Clazz_defineMethod(c$, "set", +function(w, h){ +this.width = w; +this.height = h; +return this; +}, "~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs"); +(function(){ +var c$ = Clazz_declareType(J.awtjs, "Event", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericMenuInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P3"], "JU.A4", ["JU.T3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.angle = 0; +Clazz_instantialize(this, arguments);}, JU, "A4", JU.P3); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JU.A4, []); +this.z = 1.0; +}); +c$.new4 = Clazz_defineMethod(c$, "new4", +function(x, y, z, angle){ +var a = new JU.A4(); +a.set4(x, y, z, angle); +return a; +}, "~N,~N,~N,~N"); +c$.newAA = Clazz_defineMethod(c$, "newAA", +function(a1){ +var a = new JU.A4(); +a.set4(a1.x, a1.y, a1.z, a1.angle); +return a; +}, "JU.A4"); +c$.newVA = Clazz_defineMethod(c$, "newVA", +function(axis, angle){ +var a = new JU.A4(); +a.setVA(axis, angle); +return a; +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "setVA", +function(axis, angle){ +this.x = axis.x; +this.y = axis.y; +this.z = axis.z; +this.angle = angle; +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "set4", +function(x, y, z, angle){ +this.x = x; +this.y = y; +this.z = z; +this.angle = angle; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAA", +function(a){ +this.x = a.x; +this.y = a.y; +this.z = a.z; +this.angle = a.angle; +}, "JU.A4"); +Clazz_defineMethod(c$, "setM", +function(m1){ +this.setFromMat(m1.m00, m1.m01, m1.m02, m1.m10, m1.m11, m1.m12, m1.m20, m1.m21, m1.m22); +}, "JU.M3"); +Clazz_defineMethod(c$, "setFromMat", +function(m00, m01, m02, m10, m11, m12, m20, m21, m22){ +var cos = (m00 + m11 + m22 - 1.0) * 0.5; +this.x = (m21 - m12); +this.y = (m02 - m20); +this.z = (m10 - m01); +var sin = 0.5 * Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); +if (sin == 0 && cos == 1) { +this.x = this.y = 0; +this.z = 1; +this.angle = 0; +} else { +this.angle = Math.atan2(sin, cos); +}}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.x) ^ JU.T3.floatToIntBits(this.y) ^ JU.T3.floatToIntBits(this.z) ^ JU.T3.floatToIntBits(this.angle); +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.A4"))) return false; +var a1 = o; +return this.x == a1.x && this.y == a1.y && this.z == a1.z && this.angle == a1.angle; +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.angle + ")"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + "," + this.y + "," + this.z + "," + (this.angle * 180.0 / 3.141592653589793) + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLConnection"], "JU.AjaxURLConnection", ["JU.AU", "$.Rdr"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bytesOut = null; +this.postOut = ""; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLConnection", java.net.URLConnection); +Clazz_defineMethod(c$, "doAjax", +function(){ +var jmol = null; +{ +jmol = Jmol; +}return jmol.doAjax(this.url, this.postOut, this.bytesOut, false); +}); +Clazz_overrideMethod(c$, "connect", +function(){ +}); +Clazz_defineMethod(c$, "outputBytes", +function(bytes){ +this.bytesOut = bytes; +}, "~A"); +Clazz_defineMethod(c$, "outputString", +function(post){ +this.postOut = post; +}, "~S"); +Clazz_overrideMethod(c$, "getInputStream", +function(){ +var is = null; +var o = this.doAjax(); +if (JU.AU.isAB(o)) is = JU.Rdr.getBIS(o); + else if (Clazz_instanceOf(o,"JU.SB")) is = JU.Rdr.getBIS(JU.Rdr.getBytesFromSB(o)); + else if ((typeof(o)=='string')) is = JU.Rdr.getBIS((o).getBytes()); +return is; +}); +Clazz_defineMethod(c$, "getContents", +function(){ +return this.doAjax(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLStreamHandler"], "JU.AjaxURLStreamHandler", ["JU.AjaxURLConnection", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.protocol = null; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLStreamHandler", java.net.URLStreamHandler); +Clazz_makeConstructor(c$, +function(protocol){ +Clazz_superConstructor (this, JU.AjaxURLStreamHandler, []); +this.protocol = protocol; +}, "~S"); +Clazz_defineMethod(c$, "openConnection", +function(url){ +return new JU.AjaxURLConnection(url); +}, "java.net.URL"); +Clazz_overrideMethod(c$, "toExternalForm", +function(u){ +var result = new JU.SB(); +result.append(u.getProtocol()); +result.append(":"); +if (u.getAuthority() != null && u.getAuthority().length > 0) { +result.append("//"); +result.append(u.getAuthority()); +}if (u.getPath() != null) { +result.append(u.getPath()); +}if (u.getQuery() != null) { +result.append("?"); +result.append(u.getQuery()); +}if (u.getRef() != null) { +result.append("#"); +result.append(u.getRef()); +}return result.toString(); +}, "java.net.URL"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLStreamHandlerFactory", "java.util.Hashtable"], "JU.AjaxURLStreamHandlerFactory", ["JU.AjaxURLStreamHandler"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.htFactories = null; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLStreamHandlerFactory", null, java.net.URLStreamHandlerFactory); +Clazz_prepareFields (c$, function(){ +this.htFactories = new java.util.Hashtable(); +}); +Clazz_overrideMethod(c$, "createURLStreamHandler", +function(protocol){ +var fac = this.htFactories.get(protocol); +if (fac == null) this.htFactories.put(protocol, fac = new JU.AjaxURLStreamHandler(protocol)); +return (fac.protocol == null ? null : fac); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.AU", ["java.lang.reflect.Array", "java.util.Arrays", "JU.Lst"], function(){ +var c$ = Clazz_declareType(JU, "AU", null); +c$.ensureLength = Clazz_defineMethod(c$, "ensureLength", +function(array, minimumLength){ +return (array != null && JU.AU.getLength(array) >= minimumLength ? array : JU.AU.arrayCopyObject(array, minimumLength)); +}, "~O,~N"); +c$.ensureLengthS = Clazz_defineMethod(c$, "ensureLengthS", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyS(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthA = Clazz_defineMethod(c$, "ensureLengthA", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyF(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthI = Clazz_defineMethod(c$, "ensureLengthI", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyI(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthShort = Clazz_defineMethod(c$, "ensureLengthShort", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyShort(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthByte = Clazz_defineMethod(c$, "ensureLengthByte", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyByte(array, minimumLength)); +}, "~A,~N"); +c$.doubleLength = Clazz_defineMethod(c$, "doubleLength", +function(array){ +return JU.AU.arrayCopyObject(array, (array == null ? 16 : 2 * JU.AU.getLength(array))); +}, "~O"); +c$.doubleLengthS = Clazz_defineMethod(c$, "doubleLengthS", +function(array){ +return JU.AU.arrayCopyS(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthF = Clazz_defineMethod(c$, "doubleLengthF", +function(array){ +return JU.AU.arrayCopyF(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthI = Clazz_defineMethod(c$, "doubleLengthI", +function(array){ +return JU.AU.arrayCopyI(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthShort = Clazz_defineMethod(c$, "doubleLengthShort", +function(array){ +return JU.AU.arrayCopyShort(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthByte = Clazz_defineMethod(c$, "doubleLengthByte", +function(array){ +return JU.AU.arrayCopyByte(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthBool = Clazz_defineMethod(c$, "doubleLengthBool", +function(array){ +return JU.AU.arrayCopyBool(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.deleteElements = Clazz_defineMethod(c$, "deleteElements", +function(array, firstElement, nElements){ +if (nElements == 0 || array == null) return array; +var oldLength = JU.AU.getLength(array); +if (firstElement >= oldLength) return array; +var n = oldLength - (firstElement + nElements); +if (n < 0) n = 0; +var t = JU.AU.newInstanceO(array, firstElement + n); +if (firstElement > 0) System.arraycopy(array, 0, t, 0, firstElement); +if (n > 0) System.arraycopy(array, firstElement + nElements, t, firstElement, n); +return t; +}, "~O,~N,~N"); +c$.arrayCopyObject = Clazz_defineMethod(c$, "arrayCopyObject", +function(array, newLength){ +var oldLength = (array == null ? -1 : JU.AU.getLength(array)); +if (newLength < 0) newLength = oldLength; +if (newLength == oldLength) return array; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = JU.AU.newInstanceO(array, newLength); +if (oldLength > 0) System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +return t; +}, "~O,~N"); +c$.newInstanceO = Clazz_defineMethod(c$, "newInstanceO", +function(array, n){ +if (JU.AU.isAI(array)) return Clazz_newIntArray (n, 0); +{ +if (!array.getClass || !array.getClass().getComponentType) +return new Array(n); +}return java.lang.reflect.Array.newInstance(array.getClass().getComponentType(), n); +}, "~O,~N"); +c$.getLength = Clazz_defineMethod(c$, "getLength", +function(array){ +{ +return array.length +}}, "~O"); +c$.arrayCopyS = Clazz_defineMethod(c$, "arrayCopyS", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = new Array(newLength); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyII = Clazz_defineMethod(c$, "arrayCopyII", +function(array, newLength){ +var t = JU.AU.newInt2(newLength); +if (array != null) { +var oldLength = array.length; +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyPt = Clazz_defineMethod(c$, "arrayCopyPt", +function(array, newLength){ +if (newLength < 0) newLength = array.length; +var t = new Array(newLength); +if (array != null) { +var oldLength = array.length; +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyF = Clazz_defineMethod(c$, "arrayCopyF", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newFloatArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyI = Clazz_defineMethod(c$, "arrayCopyI", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newIntArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyRangeI = Clazz_defineMethod(c$, "arrayCopyRangeI", +function(array, i0, n){ +if (array == null) return null; +var oldLength = array.length; +if (n == -1) n = oldLength; +if (n == -2) n = Clazz_doubleToInt(oldLength / 2); +{ +return Clazz_newArray(-1, array, i0, n); +}}, "~A,~N,~N"); +c$.arrayCopyRangeRevI = Clazz_defineMethod(c$, "arrayCopyRangeRevI", +function(array, i0, n){ +if (array == null) return null; +{ +return Clazz_newArray(-1, array, i0, n).reverse(); +}}, "~A,~N,~N"); +c$.arrayCopyShort = Clazz_defineMethod(c$, "arrayCopyShort", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newShortArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyByte = Clazz_defineMethod(c$, "arrayCopyByte", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newByteArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyBool = Clazz_defineMethod(c$, "arrayCopyBool", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newBooleanArray(newLength, false); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.swapInt = Clazz_defineMethod(c$, "swapInt", +function(array, indexA, indexB){ +var t = array[indexA]; +array[indexA] = array[indexB]; +array[indexB] = t; +}, "~A,~N,~N"); +c$.dumpArray = Clazz_defineMethod(c$, "dumpArray", +function(msg, A, x1, x2, y1, y2){ +var s = "dumpArray: " + msg + "\n"; +for (var x = x1; x <= x2; x++) s += "\t*" + x + "*"; + +for (var y = y2; y >= y1; y--) { +s += "\n*" + y + "*"; +for (var x = x1; x <= x2; x++) s += "\t" + (x < A.length && y < A[x].length ? A[x][y] : NaN); + +} +return s; +}, "~S,~A,~N,~N,~N,~N"); +c$.dumpIntArray = Clazz_defineMethod(c$, "dumpIntArray", +function(A, n){ +var str = ""; +for (var i = 0; i < n; i++) str += " " + A[i]; + +return str; +}, "~A,~N"); +c$.sortedItem = Clazz_defineMethod(c$, "sortedItem", +function(v, n){ +if (v.size() == 0) return null; +if (v.size() == 1) return v.get(0); +var keys = v.toArray( new Array(v.size())); +java.util.Arrays.sort(keys); +return keys[n % keys.length]; +}, "JU.Lst,~N"); +c$.createArrayOfArrayList = Clazz_defineMethod(c$, "createArrayOfArrayList", +function(size){ +return new Array(size); +}, "~N"); +c$.createArrayOfHashtable = Clazz_defineMethod(c$, "createArrayOfHashtable", +function(size){ +return new Array(size); +}, "~N"); +c$.swap = Clazz_defineMethod(c$, "swap", +function(o, i, j){ +var oi = o[i]; +o[i] = o[j]; +o[j] = oi; +}, "~A,~N,~N"); +c$.newFloat2 = Clazz_defineMethod(c$, "newFloat2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newInt2 = Clazz_defineMethod(c$, "newInt2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newInt3 = Clazz_defineMethod(c$, "newInt3", +function(nx, ny){ +{ +return Clazz_newArray(nx, null); +}}, "~N,~N"); +c$.newFloat3 = Clazz_defineMethod(c$, "newFloat3", +function(nx, ny){ +{ +return Clazz_newArray(nx, null); +}}, "~N,~N"); +c$.newInt4 = Clazz_defineMethod(c$, "newInt4", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newShort2 = Clazz_defineMethod(c$, "newShort2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newByte2 = Clazz_defineMethod(c$, "newByte2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newDouble2 = Clazz_defineMethod(c$, "newDouble2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newDouble3n = Clazz_defineMethod(c$, "newDouble3n", +function(n){ +return Clazz_newDoubleArray (n, 0); +}, "~N"); +c$.removeMapKeys = Clazz_defineMethod(c$, "removeMapKeys", +function(map, root){ +var list = new JU.Lst(); +for (var key, $key = map.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (key.startsWith(root)) list.addLast(key); + +for (var i = list.size(); --i >= 0; ) map.remove(list.get(i)); + +return list.size(); +}, "java.util.Map,~S"); +c$.isAS = Clazz_defineMethod(c$, "isAS", +function(x){ +{ +return Clazz_isAS(x); +}}, "~O"); +c$.isASS = Clazz_defineMethod(c$, "isASS", +function(x){ +{ +return Clazz_isASS(x); +}}, "~O"); +c$.isAP = Clazz_defineMethod(c$, "isAP", +function(x){ +{ +return Clazz_isAP(x); +}}, "~O"); +c$.isAF = Clazz_defineMethod(c$, "isAF", +function(x){ +{ +return Clazz_isAF(x); +}}, "~O"); +c$.isAFloat = Clazz_defineMethod(c$, "isAFloat", +function(x){ +{ +return Clazz_isAFloat(x); +}}, "~O"); +c$.isAD = Clazz_defineMethod(c$, "isAD", +function(x){ +{ +return Clazz_isAF(x); +}}, "~O"); +c$.isADD = Clazz_defineMethod(c$, "isADD", +function(x){ +{ +return Clazz_isAFF(x); +}}, "~O"); +c$.isADDD = Clazz_defineMethod(c$, "isADDD", +function(x){ +{ +return Clazz_isAFFF(x); +}}, "~O"); +c$.isAB = Clazz_defineMethod(c$, "isAB", +function(x){ +{ +return Clazz_isAB(x); +}}, "~O"); +c$.isAI = Clazz_defineMethod(c$, "isAI", +function(x){ +{ +return Clazz_isAI(x); +}}, "~O"); +c$.isAII = Clazz_defineMethod(c$, "isAII", +function(x){ +{ +return Clazz_isAII(x); +}}, "~O"); +c$.isAFF = Clazz_defineMethod(c$, "isAFF", +function(x){ +{ +return Clazz_isAFF(x); +}}, "~O"); +c$.isAFFF = Clazz_defineMethod(c$, "isAFFF", +function(x){ +{ +return Clazz_isAFFF(x); +}}, "~O"); +c$.ensureSignedBytes = Clazz_defineMethod(c$, "ensureSignedBytes", +function(b){ +if (b != null) { +{ +for (var i = b.length; --i >= 0;) { var j = b[i] & 0xFF; if +(j >= 0x80) j -= 0x100; b[i] = j; } +}}return b; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Base64", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JU, "Base64", null); +c$.getBytes64 = Clazz_defineMethod(c$, "getBytes64", +function(bytes){ +return JU.Base64.getBase64(bytes).toBytes(0, -1); +}, "~A"); +c$.getBase64 = Clazz_defineMethod(c$, "getBase64", +function(bytes){ +var nBytes = bytes.length; +var sout = new JU.SB(); +if (nBytes == 0) return sout; +for (var i = 0, nPad = 0; i < nBytes && nPad == 0; ) { +if (i % 75 == 0 && i != 0) sout.append("\r\n"); +nPad = (i + 2 == nBytes ? 1 : i + 1 == nBytes ? 2 : 0); +var outbytes = ((bytes[i++] << 16) & 0xFF0000) | ((nPad == 2 ? 0 : bytes[i++] << 8) & 0x00FF00) | ((nPad >= 1 ? 0 : bytes[i++]) & 0x0000FF); +sout.appendC(JU.Base64.base64.charAt((outbytes >> 18) & 0x3F)); +sout.appendC(JU.Base64.base64.charAt((outbytes >> 12) & 0x3F)); +sout.appendC(nPad == 2 ? '=' : JU.Base64.base64.charAt((outbytes >> 6) & 0x3F)); +sout.appendC(nPad >= 1 ? '=' : JU.Base64.base64.charAt(outbytes & 0x3F)); +} +return sout; +}, "~A"); +c$.decodeBase64 = Clazz_defineMethod(c$, "decodeBase64", +function(strBase64){ +var nBytes = 0; +var ch; +var pt0 = strBase64.indexOf(";base64,") + 1; +if (pt0 > 0) pt0 += 7; +var chars64 = strBase64.toCharArray(); +var len64 = chars64.length; +if (len64 == 0) return Clazz_newByteArray (0, 0); +for (var i = len64; --i >= pt0; ) nBytes += ((ch = (chars64[i]).charCodeAt(0) & 0x7F) == 65 || JU.Base64.decode64[ch] > 0 ? 3 : 0); + +nBytes = nBytes >> 2; +var bytes = Clazz_newByteArray (nBytes, 0); +var offset = 18; +for (var i = pt0, pt = 0, b = 0; i < len64; i++) { +if (JU.Base64.decode64[ch = (chars64[i]).charCodeAt(0) & 0x7F] > 0 || ch == 65 || ch == 61) { +b |= JU.Base64.decode64[ch] << offset; +offset -= 6; +if (offset < 0) { +bytes[pt++] = ((b & 0xFF0000) >> 16); +if (pt < nBytes) bytes[pt++] = ((b & 0xFF00) >> 8); +if (pt < nBytes) bytes[pt++] = (b & 0xFF); +offset = 18; +b = 0; +}}} +return bytes; +}, "~S"); +c$.base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +c$.decode64 = Clazz_newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 62, 0, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 63, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.JSONEncodable"], "JU.BS", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.words = null; +this.wordsInUse = 0; +this.sizeIsSticky = false; +Clazz_instantialize(this, arguments);}, JU, "BS", null, [Cloneable, javajs.api.JSONEncodable]); +Clazz_makeConstructor(c$, +function(){ +this.initWords(32); +this.sizeIsSticky = false; +}); +c$.wordIndex = Clazz_defineMethod(c$, "wordIndex", +function(bitIndex){ +return bitIndex >> 5; +}, "~N"); +Clazz_defineMethod(c$, "recalculateWordsInUse", +function(){ +var i; +for (i = this.wordsInUse - 1; i >= 0; i--) if (this.words[i] != 0) break; + +this.wordsInUse = i + 1; +}); +c$.newN = Clazz_defineMethod(c$, "newN", +function(nbits){ +var bs = new JU.BS(); +bs.init(nbits); +return bs; +}, "~N"); +Clazz_defineMethod(c$, "init", +function(nbits){ +if (nbits < 0) throw new NegativeArraySizeException("nbits < 0: " + nbits); +this.initWords(nbits); +this.sizeIsSticky = true; +}, "~N"); +Clazz_defineMethod(c$, "initWords", +function(nbits){ +this.words = Clazz_newIntArray (JU.BS.wordIndex(nbits - 1) + 1, 0); +}, "~N"); +Clazz_defineMethod(c$, "ensureCapacity", +function(wordsRequired){ +if (this.words.length < wordsRequired) { +var request = Math.max(2 * this.words.length, wordsRequired); +this.setLength(request); +this.sizeIsSticky = false; +}}, "~N"); +Clazz_defineMethod(c$, "expandTo", +function(wordIndex){ +var wordsRequired = wordIndex + 1; +if (this.wordsInUse < wordsRequired) { +this.ensureCapacity(wordsRequired); +this.wordsInUse = wordsRequired; +}}, "~N"); +Clazz_defineMethod(c$, "set", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +this.expandTo(wordIndex); +this.words[wordIndex] |= (1 << bitIndex); +}, "~N"); +Clazz_defineMethod(c$, "setBitTo", +function(bitIndex, value){ +if (value) this.set(bitIndex); + else this.clear(bitIndex); +}, "~N,~B"); +Clazz_defineMethod(c$, "setBits", +function(fromIndex, toIndex){ +if (fromIndex == toIndex) return; +var startWordIndex = JU.BS.wordIndex(fromIndex); +var endWordIndex = JU.BS.wordIndex(toIndex - 1); +this.expandTo(endWordIndex); +var firstWordMask = -1 << fromIndex; +var lastWordMask = -1 >>> -toIndex; +if (startWordIndex == endWordIndex) { +this.words[startWordIndex] |= (firstWordMask & lastWordMask); +} else { +this.words[startWordIndex] |= firstWordMask; +for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = -1; + +this.words[endWordIndex] |= lastWordMask; +}}, "~N,~N"); +Clazz_defineMethod(c$, "clear", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +if (wordIndex >= this.wordsInUse) return; +this.words[wordIndex] &= ~(1 << bitIndex); +this.recalculateWordsInUse(); +}, "~N"); +Clazz_defineMethod(c$, "clearBits", +function(fromIndex, toIndex){ +if (fromIndex == toIndex) return; +var startWordIndex = JU.BS.wordIndex(fromIndex); +if (startWordIndex >= this.wordsInUse) return; +var endWordIndex = JU.BS.wordIndex(toIndex - 1); +if (endWordIndex >= this.wordsInUse) { +toIndex = this.length(); +endWordIndex = this.wordsInUse - 1; +}var firstWordMask = -1 << fromIndex; +var lastWordMask = -1 >>> -toIndex; +if (startWordIndex == endWordIndex) { +this.words[startWordIndex] &= ~(firstWordMask & lastWordMask); +} else { +this.words[startWordIndex] &= ~firstWordMask; +for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = 0; + +this.words[endWordIndex] &= ~lastWordMask; +}this.recalculateWordsInUse(); +}, "~N,~N"); +Clazz_defineMethod(c$, "clearAll", +function(){ +while (this.wordsInUse > 0) this.words[--this.wordsInUse] = 0; + +}); +Clazz_defineMethod(c$, "get", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +return (wordIndex < this.wordsInUse) && ((this.words[wordIndex] & (1 << bitIndex)) != 0); +}, "~N"); +Clazz_defineMethod(c$, "nextSetBit", +function(fromIndex){ +if (fromIndex < 0) throw new IndexOutOfBoundsException("fromIndex < 0: " + fromIndex); +var u = JU.BS.wordIndex(fromIndex); +if (u >= this.wordsInUse) return -1; +var word = this.words[u] & (-1 << fromIndex); +while (true) { +if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros(word); +if (++u == this.wordsInUse) return -1; +word = this.words[u]; +} +}, "~N"); +Clazz_defineMethod(c$, "nextClearBit", +function(fromIndex){ +if (fromIndex < 0) throw new IndexOutOfBoundsException("fromIndex < 0: " + fromIndex); +var u = JU.BS.wordIndex(fromIndex); +if (u >= this.wordsInUse) return fromIndex; +var word = ~this.words[u] & (-1 << fromIndex); +while (true) { +if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros(word); +if (++u == this.wordsInUse) return this.wordsInUse * 32; +word = ~this.words[u]; +} +}, "~N"); +Clazz_defineMethod(c$, "length", +function(){ +if (this.wordsInUse == 0) return 0; +return 32 * (this.wordsInUse - 1) + (32 - Integer.numberOfLeadingZeros(this.words[this.wordsInUse - 1])); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.wordsInUse == 0; +}); +Clazz_defineMethod(c$, "intersects", +function(set){ +for (var i = Math.min(this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) if ((this.words[i] & set.words[i]) != 0) return true; + +return false; +}, "JU.BS"); +Clazz_defineMethod(c$, "cardinality", +function(){ +var sum = 0; +for (var i = 0; i < this.wordsInUse; i++) sum += Integer.bitCount(this.words[i]); + +return sum; +}); +Clazz_defineMethod(c$, "and", +function(set){ +if (this === set) return; +while (this.wordsInUse > set.wordsInUse) this.words[--this.wordsInUse] = 0; + +for (var i = 0; i < this.wordsInUse; i++) this.words[i] &= set.words[i]; + +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_defineMethod(c$, "or", +function(set){ +if (this === set) return; +var wordsInCommon = Math.min(this.wordsInUse, set.wordsInUse); +if (this.wordsInUse < set.wordsInUse) { +this.ensureCapacity(set.wordsInUse); +this.wordsInUse = set.wordsInUse; +}for (var i = 0; i < wordsInCommon; i++) this.words[i] |= set.words[i]; + +if (wordsInCommon < set.wordsInUse) System.arraycopy(set.words, wordsInCommon, this.words, wordsInCommon, this.wordsInUse - wordsInCommon); +}, "JU.BS"); +Clazz_defineMethod(c$, "xor", +function(set){ +var wordsInCommon = Math.min(this.wordsInUse, set.wordsInUse); +if (this.wordsInUse < set.wordsInUse) { +this.ensureCapacity(set.wordsInUse); +this.wordsInUse = set.wordsInUse; +}for (var i = 0; i < wordsInCommon; i++) this.words[i] ^= set.words[i]; + +if (wordsInCommon < set.wordsInUse) System.arraycopy(set.words, wordsInCommon, this.words, wordsInCommon, set.wordsInUse - wordsInCommon); +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_defineMethod(c$, "andNot", +function(set){ +for (var i = Math.min(this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) this.words[i] &= ~set.words[i]; + +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var h = 1234; +for (var i = this.wordsInUse; --i >= 0; ) h ^= this.words[i] * (i + 1); + +return ((h >> 32) ^ h); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.words.length * 32; +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz_instanceOf(obj,"JU.BS"))) return false; +if (this === obj) return true; +var set = obj; +if (this.wordsInUse != set.wordsInUse) return false; +for (var i = 0; i < this.wordsInUse; i++) if (this.words[i] != set.words[i]) return false; + +return true; +}, "~O"); +Clazz_overrideMethod(c$, "clone", +function(){ +if (!this.sizeIsSticky && this.wordsInUse != this.words.length) this.setLength(this.wordsInUse); +return JU.BS.copy(this); +}); +Clazz_defineMethod(c$, "setLength", +function(n){ +{ +if (n == this.words.length) return; +if (n == this.wordsInUse) { +this.words = Clazz_newArray(-1, this.words, 0, n); +return; +} +}var a = Clazz_newIntArray (n, 0); +System.arraycopy(this.words, 0, a, 0, this.wordsInUse); +this.words = a; +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return JU.BS.escape(this, '(', ')'); +}); +c$.copy = Clazz_defineMethod(c$, "copy", +function(bitsetToCopy){ +var bs; +{ +bs = Clazz_clone(bitsetToCopy); +}var wordCount = bitsetToCopy.wordsInUse; +if (wordCount == 0) { +bs.words = JU.BS.emptyBitmap; +} else { +{ +bs.words = Clazz_newArray(-1, bitsetToCopy.words, 0, bs.wordsInUse = wordCount); +}}return bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "cardinalityN", +function(max){ +var n = this.cardinality(); +for (var i = this.length(); --i >= max; ) if (this.get(i)) n--; + +return n; +}, "~N"); +Clazz_overrideMethod(c$, "toJSON", +function(){ +var numBits = (this.wordsInUse > 128 ? this.cardinality() : this.wordsInUse * 32); +var b = JU.SB.newN(6 * numBits + 2); +b.appendC('['); +var i = this.nextSetBit(0); +if (i != -1) { +b.appendI(i); +for (i = this.nextSetBit(i + 1); i >= 0; i = this.nextSetBit(i + 1)) { +var endOfRun = this.nextClearBit(i); +do { +b.append(", ").appendI(i); +} while (++i < endOfRun); +} +}b.appendC(']'); +return b.toString(); +}); +c$.escape = Clazz_defineMethod(c$, "escape", +function(bs, chOpen, chClose){ +if (bs == null) return chOpen + "{}" + chClose; +var s = new JU.SB(); +s.append(chOpen + "{"); +var imax = bs.length(); +var iLast = -1; +var iFirst = -2; +var i = -1; +while (++i <= imax) { +var isSet = bs.get(i); +if (i == imax || iLast >= 0 && !isSet) { +if (iLast >= 0 && iFirst != iLast) s.append((iFirst == iLast - 1 ? " " : ":") + iLast); +if (i == imax) break; +iLast = -1; +}if (bs.get(i)) { +if (iLast < 0) { +s.append((iFirst == -2 ? "" : " ") + i); +iFirst = i; +}iLast = i; +}} +s.append("}").appendC(chClose); +return s.toString(); +}, "JU.BS,~S,~S"); +c$.unescape = Clazz_defineMethod(c$, "unescape", +function(str){ +var ch; +var len; +if (str == null || (len = (str = str.trim()).length) < 4 || str.equalsIgnoreCase("({null})") || (ch = str.charAt(0)) != '(' && ch != '[' || str.charAt(len - 1) != (ch == '(' ? ')' : ']') || str.charAt(1) != '{' || str.indexOf('}') != len - 2) return null; +len -= 2; +for (var i = len; --i >= 2; ) if (!JU.PT.isDigit(ch = str.charAt(i)) && ch != ' ' && ch != '\t' && ch != ':') return null; + +var lastN = len; +while (JU.PT.isDigit(str.charAt(--lastN))) { +} +if (++lastN == len) lastN = 0; + else try { +lastN = Integer.parseInt(str.substring(lastN, len)); +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +return null; +} else { +throw e; +} +} +var bs = JU.BS.newN(lastN); +lastN = -1; +var iPrev = -1; +var iThis = -2; +for (var i = 2; i <= len; i++) { +switch ((ch = str.charAt(i)).charCodeAt(0)) { +case 9: +case 32: +case 125: +if (iThis < 0) break; +if (iThis < lastN) return null; +lastN = iThis; +if (iPrev < 0) iPrev = iThis; +bs.setBits(iPrev, iThis + 1); +iPrev = -1; +iThis = -2; +break; +case 58: +iPrev = lastN = iThis; +iThis = -2; +break; +default: +if (JU.PT.isDigit(ch)) { +if (iThis < 0) iThis = 0; +iThis = (iThis * 10) + (ch.charCodeAt(0) - 48); +}} +} +return (iPrev >= 0 ? null : bs); +}, "~S"); +c$.emptyBitmap = Clazz_newIntArray (0, 0); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.Hashtable"], "JU.CU", ["JU.P3", "$.PT"], function(){ +var c$ = Clazz_declareType(JU, "CU", null); +c$.toRGBHexString = Clazz_defineMethod(c$, "toRGBHexString", +function(c){ +var rgb = c.getRGB(); +if (rgb == 0) return "000000"; +var r = "00" + Integer.toHexString((rgb >> 16) & 0xFF); +r = r.substring(r.length - 2); +var g = "00" + Integer.toHexString((rgb >> 8) & 0xFF); +g = g.substring(g.length - 2); +var b = "00" + Integer.toHexString(rgb & 0xFF); +b = b.substring(b.length - 2); +return r + g + b; +}, "javajs.api.GenericColor"); +c$.toCSSString = Clazz_defineMethod(c$, "toCSSString", +function(c){ +var opacity = c.getOpacity255(); +if (opacity == 255) return "#" + JU.CU.toRGBHexString(c); +var rgb = c.getRGB(); +return "rgba(" + ((rgb >> 16) & 0xFF) + "," + ((rgb >> 8) & 0xff) + "," + (rgb & 0xff) + "," + opacity / 255 + ")"; +}, "javajs.api.GenericColor"); +c$.getArgbFromString = Clazz_defineMethod(c$, "getArgbFromString", +function(strColor){ +var len = 0; +if (strColor == null || (len = strColor.length) == 0) return 0; +strColor = strColor.toLowerCase(); +if (strColor.charAt(0) == '[' && strColor.charAt(len - 1) == ']') { +var check; +if (strColor.indexOf(",") >= 0) { +var tokens = JU.PT.split(strColor.substring(1, strColor.length - 1), ","); +if (tokens.length != 3) return 0; +var red = JU.PT.parseFloat(tokens[0]); +var grn = JU.PT.parseFloat(tokens[1]); +var blu = JU.PT.parseFloat(tokens[2]); +return JU.CU.colorTriadToFFRGB(red, grn, blu); +}switch (len) { +case 9: +check = "x"; +break; +case 10: +check = "0x"; +break; +default: +return 0; +} +if (strColor.indexOf(check) != 1) return 0; +strColor = "#" + strColor.substring(len - 7, len - 1); +len = 7; +}if (len == 7 && strColor.charAt(0) == '#') { +try { +return JU.PT.parseIntRadix(strColor.substring(1, 7), 16) | 0xFF000000; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return 0; +} else { +throw e; +} +} +}var boxedArgb = JU.CU.mapJavaScriptColors.get(strColor); +return (boxedArgb == null ? 0 : boxedArgb.intValue()); +}, "~S"); +c$.colorTriadToFFRGB = Clazz_defineMethod(c$, "colorTriadToFFRGB", +function(x, y, z){ +if (x <= 1 && y <= 1 && z <= 1) { +if (x > 0) x = x * 256 - 1; +if (y > 0) y = y * 256 - 1; +if (z > 0) z = z * 256 - 1; +}return JU.CU.rgb(Clazz_floatToInt(x), Clazz_floatToInt(y), Clazz_floatToInt(z)); +}, "~N,~N,~N"); +c$.rgb = Clazz_defineMethod(c$, "rgb", +function(red, grn, blu){ +return 0xFF000000 | (red << 16) | (grn << 8) | blu; +}, "~N,~N,~N"); +c$.colorPtFromString = Clazz_defineMethod(c$, "colorPtFromString", +function(colorName){ +return JU.CU.colorPtFromInt(JU.CU.getArgbFromString(colorName), null); +}, "~S"); +c$.colorPtFromInt = Clazz_defineMethod(c$, "colorPtFromInt", +function(color, pt){ +if (pt == null) pt = new JU.P3(); +pt.set((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF); +return pt; +}, "~N,JU.P3"); +c$.colorPtToFFRGB = Clazz_defineMethod(c$, "colorPtToFFRGB", +function(pt){ +return JU.CU.colorTriadToFFRGB(pt.x, pt.y, pt.z); +}, "JU.T3"); +c$.toRGB3f = Clazz_defineMethod(c$, "toRGB3f", +function(c, f){ +f[0] = ((c >> 16) & 0xFF) / 255; +f[1] = ((c >> 8) & 0xFF) / 255; +f[2] = (c & 0xFF) / 255; +}, "~N,~A"); +c$.toFFGGGfromRGB = Clazz_defineMethod(c$, "toFFGGGfromRGB", +function(rgb){ +var grey = (Clazz_doubleToInt(((2989 * ((rgb >> 16) & 0xFF)) + (5870 * ((rgb >> 8) & 0xFF)) + (1140 * (rgb & 0xFF)) + 5000) / 10000)) & 0xFFFFFF; +return JU.CU.rgb(grey, grey, grey); +}, "~N"); +c$.rgbToHSL = Clazz_defineMethod(c$, "rgbToHSL", +function(rgb, doRound){ +var r = rgb.x / 255; +var g = rgb.y / 255; +var b = rgb.z / 255; +var min = Math.min(r, Math.min(g, b)); +var max = Math.max(r, Math.max(g, b)); +var p = (max + min); +var q = (max - min); +var h = (60 * ((q == 0 ? 0 : max == r ? ((g - b) / q + 6) : max == g ? (b - r) / q + 2 : (r - g) / q + 4))) % 360; +var s = q / (q == 0 ? 1 : p <= 1 ? p : 2 - p); +return (doRound ? JU.P3.new3(Math.round(h * 10) / 10, Math.round(s * 1000) / 10, Math.round(p * 500) / 10) : JU.P3.new3(h, s * 100, p * 50)); +}, "JU.P3,~B"); +c$.hslToRGB = Clazz_defineMethod(c$, "hslToRGB", +function(hsl){ +var h = Math.max(0, Math.min(360, hsl.x)) / 60; +var s = Math.max(0, Math.min(100, hsl.y)) / 100; +var l = Math.max(0, Math.min(100, hsl.z)) / 100; +var p = l - (l < 0.5 ? l : 1 - l) * s; +var q = 2 * (l - p); +var r = JU.CU.toRGB(p, q, h + 2); +var g = JU.CU.toRGB(p, q, h); +var b = JU.CU.toRGB(p, q, h - 2); +return JU.P3.new3(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)); +}, "JU.P3"); +c$.toRGB = Clazz_defineMethod(c$, "toRGB", +function(p, q, h){ +return ((h = (h + (h < 0 ? 6 : h > 6 ? -6 : 0))) < 1 ? p + q * h : h < 3 ? p + q : h < 4 ? p + q * (4 - h) : p); +}, "~N,~N,~N"); +c$.colorNames = Clazz_newArray(-1, ["contrast", "black", "pewhite", "pecyan", "pepurple", "pegreen", "peblue", "peviolet", "pebrown", "pepink", "peyellow", "pedarkgreen", "peorange", "pelightblue", "pedarkcyan", "pedarkgray", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgreen", "lightgrey", "lightgray", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "bluetint", "greenblue", "greentint", "grey", "gray", "pinktint", "redorange", "yellowtint"]); +c$.colorArgbs = Clazz_newIntArray(-1, [0xFFfedcba, 0xFF000000, 0xFFffffff, 0xFF00ffff, 0xFFd020ff, 0xFF00ff00, 0xFF6060ff, 0xFFff80c0, 0xFFa42028, 0xFFffd8d8, 0xFFffff00, 0xFF00c000, 0xFFffb000, 0xFFb0b0ff, 0xFF00a0a0, 0xFF606060, 0xFFF0F8FF, 0xFFFAEBD7, 0xFF00FFFF, 0xFF7FFFD4, 0xFFF0FFFF, 0xFFF5F5DC, 0xFFFFE4C4, 0xFFFFEBCD, 0xFF0000FF, 0xFF8A2BE2, 0xFFA52A2A, 0xFFDEB887, 0xFF5F9EA0, 0xFF7FFF00, 0xFFD2691E, 0xFFFF7F50, 0xFF6495ED, 0xFFFFF8DC, 0xFFDC143C, 0xFF00FFFF, 0xFF00008B, 0xFF008B8B, 0xFFB8860B, 0xFFA9A9A9, 0xFF006400, 0xFFBDB76B, 0xFF8B008B, 0xFF556B2F, 0xFFFF8C00, 0xFF9932CC, 0xFF8B0000, 0xFFE9967A, 0xFF8FBC8F, 0xFF483D8B, 0xFF2F4F4F, 0xFF00CED1, 0xFF9400D3, 0xFFFF1493, 0xFF00BFFF, 0xFF696969, 0xFF1E90FF, 0xFFB22222, 0xFFFFFAF0, 0xFF228B22, 0xFFFF00FF, 0xFFDCDCDC, 0xFFF8F8FF, 0xFFFFD700, 0xFFDAA520, 0xFF808080, 0xFF008000, 0xFFADFF2F, 0xFFF0FFF0, 0xFFFF69B4, 0xFFCD5C5C, 0xFF4B0082, 0xFFFFFFF0, 0xFFF0E68C, 0xFFE6E6FA, 0xFFFFF0F5, 0xFF7CFC00, 0xFFFFFACD, 0xFFADD8E6, 0xFFF08080, 0xFFE0FFFF, 0xFFFAFAD2, 0xFF90EE90, 0xFFD3D3D3, 0xFFD3D3D3, 0xFFFFB6C1, 0xFFFFA07A, 0xFF20B2AA, 0xFF87CEFA, 0xFF778899, 0xFFB0C4DE, 0xFFFFFFE0, 0xFF00FF00, 0xFF32CD32, 0xFFFAF0E6, 0xFFFF00FF, 0xFF800000, 0xFF66CDAA, 0xFF0000CD, 0xFFBA55D3, 0xFF9370DB, 0xFF3CB371, 0xFF7B68EE, 0xFF00FA9A, 0xFF48D1CC, 0xFFC71585, 0xFF191970, 0xFFF5FFFA, 0xFFFFE4E1, 0xFFFFE4B5, 0xFFFFDEAD, 0xFF000080, 0xFFFDF5E6, 0xFF808000, 0xFF6B8E23, 0xFFFFA500, 0xFFFF4500, 0xFFDA70D6, 0xFFEEE8AA, 0xFF98FB98, 0xFFAFEEEE, 0xFFDB7093, 0xFFFFEFD5, 0xFFFFDAB9, 0xFFCD853F, 0xFFFFC0CB, 0xFFDDA0DD, 0xFFB0E0E6, 0xFF800080, 0xFFFF0000, 0xFFBC8F8F, 0xFF4169E1, 0xFF8B4513, 0xFFFA8072, 0xFFF4A460, 0xFF2E8B57, 0xFFFFF5EE, 0xFFA0522D, 0xFFC0C0C0, 0xFF87CEEB, 0xFF6A5ACD, 0xFF708090, 0xFFFFFAFA, 0xFF00FF7F, 0xFF4682B4, 0xFFD2B48C, 0xFF008080, 0xFFD8BFD8, 0xFFFF6347, 0xFF40E0D0, 0xFFEE82EE, 0xFFF5DEB3, 0xFFFFFFFF, 0xFFF5F5F5, 0xFFFFFF00, 0xFF9ACD32, 0xFFAFD7FF, 0xFF2E8B57, 0xFF98FFB3, 0xFF808080, 0xFF808080, 0xFFFFABBB, 0xFFFF4500, 0xFFF6F675]); +c$.mapJavaScriptColors = new java.util.Hashtable(); +{ +for (var i = JU.CU.colorNames.length; --i >= 0; ) JU.CU.mapJavaScriptColors.put(JU.CU.colorNames[i], Integer.$valueOf(JU.CU.colorArgbs[i])); + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.DF", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz_declareType(JU, "DF", null); +c$.setUseNumberLocalization = Clazz_defineMethod(c$, "setUseNumberLocalization", +function(TF){ +JU.DF.useNumberLocalization[0] = (TF ? Boolean.TRUE : Boolean.FALSE); +}, "~B"); +c$.formatDecimalDbl = Clazz_defineMethod(c$, "formatDecimalDbl", +function(value, decimalDigits){ +if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Double.isNaN(value)) return "" + value; +return JU.DF.formatDecimal(value, decimalDigits); +}, "~N,~N"); +c$.formatDecimal = Clazz_defineMethod(c$, "formatDecimal", +function(value, decimalDigits){ +if (value == -Infinity || value == Infinity || Double.isNaN(value)) return "" + value; +if (decimalDigits == 2147483647) return "" + value; +var isNeg = (value < 0); +if (isNeg) value = -value; +var n; +if (decimalDigits < 0) { +decimalDigits = -decimalDigits; +if (decimalDigits > JU.DF.formattingStrings.length) decimalDigits = JU.DF.formattingStrings.length; +if (value == 0) return JU.DF.formattingStrings[decimalDigits - 1] + "E+0"; +n = 0; +var d; +if (Math.abs(value) < 1) { +n = 100; +d = value * 1e-100; +} else { +n = -100; +d = value * 1e100; +}var s = ("" + d).toUpperCase(); +var i1 = s.indexOf("E"); +var sf; +if (i1 < 0) { +sf = "" + value; +} else { +n = JU.PT.parseInt(s.substring(i1 + (s.indexOf("E+") == i1 ? 2 : 1))) + n; +var f = JU.PT.parseFloat(s.substring(0, i1)); +sf = JU.DF.formatDecimal(f, decimalDigits - 1); +if (sf.startsWith("10.")) { +sf = JU.DF.formatDecimal(1, decimalDigits - 1); +n++; +}}return (isNeg ? "-" : "") + sf + "E" + (n >= 0 ? "+" : "") + n; +}if (decimalDigits >= JU.DF.formattingStrings.length) decimalDigits = JU.DF.formattingStrings.length - 1; +var s1 = ("" + value).toUpperCase(); +var pt = s1.indexOf("."); +if (pt < 0) return (isNeg ? "-" : "") + s1 + JU.DF.formattingStrings[decimalDigits].substring(1); +var pt1 = s1.indexOf("E-"); +if (pt1 > 0) { +n = JU.PT.parseInt(s1.substring(pt1 + 1)); +s1 = "0." + "0000000000000000000000000000000000000000".substring(0, -n - 1) + s1.substring(0, 1) + s1.substring(2, pt1); +pt = 1; +}pt1 = s1.indexOf("E"); +if (pt1 > 0) { +n = JU.PT.parseInt(s1.substring(pt1 + 1)); +s1 = s1.substring(0, 1) + s1.substring(2, pt1) + "0000000000000000000000000000000000000000"; +s1 = s1.substring(0, n + 1) + "." + s1.substring(n + 1); +pt = s1.indexOf("."); +}var len = s1.length; +var pt2 = decimalDigits + pt + 1; +if (pt2 < len && s1.charAt(pt2) >= '5') { +return JU.DF.formatDecimal((isNeg ? -1 : 1) * (value + JU.DF.formatAdds[decimalDigits]), decimalDigits); +}var s0 = s1.substring(0, (decimalDigits == 0 ? pt : ++pt)); +var sb = JU.SB.newS(s0); +if (isNeg && s0.equals("0.") && decimalDigits + 2 <= len && s1.substring(2, 2 + decimalDigits).equals("0000000000000000000000000000000000000000".substring(0, decimalDigits))) isNeg = false; +for (var i = 0; i < decimalDigits; i++, pt++) { +if (pt < len) sb.appendC(s1.charAt(pt)); + else sb.appendC('0'); +} +s1 = (isNeg ? "-" : "") + sb; +return (Boolean.TRUE.equals(JU.DF.useNumberLocalization[0]) ? s1 : s1.$replace(',', '.')); +}, "~N,~N"); +c$.formatDecimalTrimmed = Clazz_defineMethod(c$, "formatDecimalTrimmed", +function(x, precision){ +var str = JU.DF.formatDecimalDbl(x, precision); +var m = str.length - 1; +var zero = '0'; +while (m >= 0 && str.charAt(m) == zero) m--; + +return str.substring(0, m + 1); +}, "~N,~N"); +c$.formatDecimalTrimmed0 = Clazz_defineMethod(c$, "formatDecimalTrimmed0", +function(x, precision){ +var str = JU.DF.formatDecimalDbl(x, precision); +var m = str.length - 1; +var pt = str.indexOf(".") + 1; +while (m > pt && str.charAt(m) == '0') m--; + +return str.substring(0, m + 1); +}, "~N,~N"); +c$.formattingStrings = Clazz_newArray(-1, ["0", "0.0", "0.00", "0.000", "0.0000", "0.00000", "0.000000", "0.0000000", "0.00000000", "0.000000000", "0.0000000000", "0.00000000000", "0.000000000000"]); +c$.formatAdds = Clazz_newDoubleArray(-1, [0.5, 0.05, 0.005, 0.0005, 0.00005, 0.000005, 0.0000005, 0.00000005, 0.000000005, 0.0000000005, 0.00000000005, 0.000000000005, 0.0000000000005]); +c$.useNumberLocalization = Clazz_newArray(-1, [Boolean.TRUE]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.lang.Enum"], "JU.Encoding", null, function(){ +var c$ = Clazz_declareType(JU, "Encoding", Enum); +Clazz_defineEnumConstant(c$, "NONE", 0, []); +Clazz_defineEnumConstant(c$, "UTF8", 1, []); +Clazz_defineEnumConstant(c$, "UTF_16BE", 2, []); +Clazz_defineEnumConstant(c$, "UTF_16LE", 3, []); +Clazz_defineEnumConstant(c$, "UTF_32BE", 4, []); +Clazz_defineEnumConstant(c$, "UTF_32LE", 5, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.ArrayList"], "JU.Lst", null, function(){ +var c$ = Clazz_declareType(JU, "Lst", java.util.ArrayList); +Clazz_defineMethod(c$, "addLast", +function(v){ +{ +return this.add1(v); +}}, "~O"); +Clazz_overrideMethod(c$, "add", +function(pos, v){ +{ +return this.add2(pos, v); +}}, "~N,~O"); +Clazz_defineMethod(c$, "removeItemAt", +function(location){ +{ +return this._removeItemAt(location); +}}, "~N"); +Clazz_defineMethod(c$, "removeObj", +function(v){ +{ +return this._removeObject(v); +}}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m00 = 0; +this.m01 = 0; +this.m02 = 0; +this.m10 = 0; +this.m11 = 0; +this.m12 = 0; +this.m20 = 0; +this.m21 = 0; +this.m22 = 0; +Clazz_instantialize(this, arguments);}, JU, "M34", null); +Clazz_defineMethod(c$, "setAA33", +function(a){ +var x = a.x; +var y = a.y; +var z = a.z; +var angle = a.angle; +var n = Math.sqrt(x * x + y * y + z * z); +n = 1 / n; +x *= n; +y *= n; +z *= n; +var c = Math.cos(angle); +var s = Math.sin(angle); +var omc = 1.0 - c; +this.m00 = (c + x * x * omc); +this.m11 = (c + y * y * omc); +this.m22 = (c + z * z * omc); +var tmp1 = x * y * omc; +var tmp2 = z * s; +this.m01 = (tmp1 - tmp2); +this.m10 = (tmp1 + tmp2); +tmp1 = x * z * omc; +tmp2 = y * s; +this.m02 = (tmp1 + tmp2); +this.m20 = (tmp1 - tmp2); +tmp1 = y * z * omc; +tmp2 = x * s; +this.m12 = (tmp1 - tmp2); +this.m21 = (tmp1 + tmp2); +}, "JU.A4"); +Clazz_defineMethod(c$, "rotate", +function(t){ +this.rotate2(t, t); +}, "JU.T3"); +Clazz_defineMethod(c$, "rotate2", +function(t, result){ +result.set(this.m00 * t.x + this.m01 * t.y + this.m02 * t.z, this.m10 * t.x + this.m11 * t.y + this.m12 * t.z, this.m20 * t.x + this.m21 * t.y + this.m22 * t.z); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "setM33", +function(m1){ +this.m00 = m1.m00; +this.m01 = m1.m01; +this.m02 = m1.m02; +this.m10 = m1.m10; +this.m11 = m1.m11; +this.m12 = m1.m12; +this.m20 = m1.m20; +this.m21 = m1.m21; +this.m22 = m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "clear33", +function(){ +this.m00 = this.m01 = this.m02 = this.m10 = this.m11 = this.m12 = this.m20 = this.m21 = this.m22 = 0.0; +}); +Clazz_defineMethod(c$, "set33", +function(row, col, v){ +switch (row) { +case 0: +switch (col) { +case 0: +this.m00 = v; +return; +case 1: +this.m01 = v; +return; +case 2: +this.m02 = v; +return; +} +break; +case 1: +switch (col) { +case 0: +this.m10 = v; +return; +case 1: +this.m11 = v; +return; +case 2: +this.m12 = v; +return; +} +break; +case 2: +switch (col) { +case 0: +this.m20 = v; +return; +case 1: +this.m21 = v; +return; +case 2: +this.m22 = v; +return; +} +break; +} +this.err(); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "get33", +function(row, col){ +switch (row) { +case 0: +switch (col) { +case 0: +return this.m00; +case 1: +return this.m01; +case 2: +return this.m02; +} +break; +case 1: +switch (col) { +case 0: +return this.m10; +case 1: +return this.m11; +case 2: +return this.m12; +} +break; +case 2: +switch (col) { +case 0: +return this.m20; +case 1: +return this.m21; +case 2: +return this.m22; +} +break; +} +this.err(); +return 0; +}, "~N,~N"); +Clazz_defineMethod(c$, "setRow33", +function(row, v){ +switch (row) { +case 0: +this.m00 = v[0]; +this.m01 = v[1]; +this.m02 = v[2]; +return; +case 1: +this.m10 = v[0]; +this.m11 = v[1]; +this.m12 = v[2]; +return; +case 2: +this.m20 = v[0]; +this.m21 = v[1]; +this.m22 = v[2]; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getRow33", +function(row, v){ +switch (row) { +case 0: +v[0] = this.m00; +v[1] = this.m01; +v[2] = this.m02; +return; +case 1: +v[0] = this.m10; +v[1] = this.m11; +v[2] = this.m12; +return; +case 2: +v[0] = this.m20; +v[1] = this.m21; +v[2] = this.m22; +return; +} +this.err(); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn33", +function(column, v){ +switch (column) { +case 0: +this.m00 = v[0]; +this.m10 = v[1]; +this.m20 = v[2]; +break; +case 1: +this.m01 = v[0]; +this.m11 = v[1]; +this.m21 = v[2]; +break; +case 2: +this.m02 = v[0]; +this.m12 = v[1]; +this.m22 = v[2]; +break; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn33", +function(column, v){ +switch (column) { +case 0: +v[0] = this.m00; +v[1] = this.m10; +v[2] = this.m20; +break; +case 1: +v[0] = this.m01; +v[1] = this.m11; +v[2] = this.m21; +break; +case 2: +v[0] = this.m02; +v[1] = this.m12; +v[2] = this.m22; +break; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "add33", +function(m1){ +this.m00 += m1.m00; +this.m01 += m1.m01; +this.m02 += m1.m02; +this.m10 += m1.m10; +this.m11 += m1.m11; +this.m12 += m1.m12; +this.m20 += m1.m20; +this.m21 += m1.m21; +this.m22 += m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "sub33", +function(m1){ +this.m00 -= m1.m00; +this.m01 -= m1.m01; +this.m02 -= m1.m02; +this.m10 -= m1.m10; +this.m11 -= m1.m11; +this.m12 -= m1.m12; +this.m20 -= m1.m20; +this.m21 -= m1.m21; +this.m22 -= m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "mul33", +function(x){ +this.m00 *= x; +this.m01 *= x; +this.m02 *= x; +this.m10 *= x; +this.m11 *= x; +this.m12 *= x; +this.m20 *= x; +this.m21 *= x; +this.m22 *= x; +}, "~N"); +Clazz_defineMethod(c$, "transpose33", +function(){ +var tmp = this.m01; +this.m01 = this.m10; +this.m10 = tmp; +tmp = this.m02; +this.m02 = this.m20; +this.m20 = tmp; +tmp = this.m12; +this.m12 = this.m21; +this.m21 = tmp; +}); +Clazz_defineMethod(c$, "setXRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = 1.0; +this.m01 = 0.0; +this.m02 = 0.0; +this.m10 = 0.0; +this.m11 = c; +this.m12 = -s; +this.m20 = 0.0; +this.m21 = s; +this.m22 = c; +}, "~N"); +Clazz_defineMethod(c$, "setYRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m01 = 0.0; +this.m02 = s; +this.m10 = 0.0; +this.m11 = 1.0; +this.m12 = 0.0; +this.m20 = -s; +this.m21 = 0.0; +this.m22 = c; +}, "~N"); +Clazz_defineMethod(c$, "setZRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m01 = -s; +this.m02 = 0.0; +this.m10 = s; +this.m11 = c; +this.m12 = 0.0; +this.m20 = 0.0; +this.m21 = 0.0; +this.m22 = 1.0; +}, "~N"); +Clazz_defineMethod(c$, "determinant3", +function(){ +return this.m00 * (this.m11 * this.m22 - this.m21 * this.m12) - this.m01 * (this.m10 * this.m22 - this.m20 * this.m12) + this.m02 * (this.m10 * this.m21 - this.m20 * this.m11); +}); +Clazz_defineMethod(c$, "err", +function(){ +throw new ArrayIndexOutOfBoundsException("matrix column/row out of bounds"); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.M34"], "JU.M3", ["JU.T3"], function(){ +var c$ = Clazz_declareType(JU, "M3", JU.M34, java.io.Serializable); +c$.newA9 = Clazz_defineMethod(c$, "newA9", +function(v){ +var m = new JU.M3(); +m.setA(v); +return m; +}, "~A"); +c$.newM3 = Clazz_defineMethod(c$, "newM3", +function(m1){ +var m = new JU.M3(); +if (m1 == null) { +m.setScale(1); +return m; +}m.m00 = m1.m00; +m.m01 = m1.m01; +m.m02 = m1.m02; +m.m10 = m1.m10; +m.m11 = m1.m11; +m.m12 = m1.m12; +m.m20 = m1.m20; +m.m21 = m1.m21; +m.m22 = m1.m22; +return m; +}, "JU.M3"); +Clazz_defineMethod(c$, "setScale", +function(scale){ +this.clear33(); +this.m00 = this.m11 = this.m22 = scale; +}, "~N"); +Clazz_defineMethod(c$, "setM3", +function(m1){ +this.setM33(m1); +}, "JU.M34"); +Clazz_defineMethod(c$, "setA", +function(m){ +this.m00 = m[0]; +this.m01 = m[1]; +this.m02 = m[2]; +this.m10 = m[3]; +this.m11 = m[4]; +this.m12 = m[5]; +this.m20 = m[6]; +this.m21 = m[7]; +this.m22 = m[8]; +}, "~A"); +Clazz_defineMethod(c$, "setElement", +function(row, col, v){ +this.set33(row, col, v); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getElement", +function(row, col){ +return this.get33(row, col); +}, "~N,~N"); +Clazz_defineMethod(c$, "setRow", +function(row, x, y, z){ +switch (row) { +case 0: +this.m00 = x; +this.m01 = y; +this.m02 = z; +return; +case 1: +this.m10 = x; +this.m11 = y; +this.m12 = z; +return; +case 2: +this.m20 = x; +this.m21 = y; +this.m22 = z; +return; +default: +this.err(); +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setRowV", +function(row, v){ +switch (row) { +case 0: +this.m00 = v.x; +this.m01 = v.y; +this.m02 = v.z; +return; +case 1: +this.m10 = v.x; +this.m11 = v.y; +this.m12 = v.z; +return; +case 2: +this.m20 = v.x; +this.m21 = v.y; +this.m22 = v.z; +return; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setRowA", +function(row, v){ +this.setRow33(row, v); +}, "~N,~A"); +Clazz_overrideMethod(c$, "getRow", +function(row, v){ +this.getRow33(row, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn3", +function(column, x, y, z){ +switch (column) { +case 0: +this.m00 = x; +this.m10 = y; +this.m20 = z; +break; +case 1: +this.m01 = x; +this.m11 = y; +this.m21 = z; +break; +case 2: +this.m02 = x; +this.m12 = y; +this.m22 = z; +break; +default: +this.err(); +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setColumnV", +function(column, v){ +switch (column) { +case 0: +this.m00 = v.x; +this.m10 = v.y; +this.m20 = v.z; +break; +case 1: +this.m01 = v.x; +this.m11 = v.y; +this.m21 = v.z; +break; +case 2: +this.m02 = v.x; +this.m12 = v.y; +this.m22 = v.z; +break; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "getColumnV", +function(column, v){ +switch (column) { +case 0: +v.x = this.m00; +v.y = this.m10; +v.z = this.m20; +break; +case 1: +v.x = this.m01; +v.y = this.m11; +v.z = this.m21; +break; +case 2: +v.x = this.m02; +v.y = this.m12; +v.z = this.m22; +break; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setColumnA", +function(column, v){ +this.setColumn33(column, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn", +function(column, v){ +this.getColumn33(column, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "add", +function(m1){ +this.add33(m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "sub", +function(m1){ +this.sub33(m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "transpose", +function(){ +this.transpose33(); +}); +Clazz_defineMethod(c$, "transposeM", +function(m1){ +this.setM33(m1); +this.transpose33(); +}, "JU.M3"); +Clazz_defineMethod(c$, "invertM", +function(m1){ +this.setM33(m1); +this.invert(); +}, "JU.M3"); +Clazz_defineMethod(c$, "invert", +function(){ +var s = this.determinant3(); +if (s == 0.0) return; +s = 1 / s; +this.set9(this.m11 * this.m22 - this.m12 * this.m21, this.m02 * this.m21 - this.m01 * this.m22, this.m01 * this.m12 - this.m02 * this.m11, this.m12 * this.m20 - this.m10 * this.m22, this.m00 * this.m22 - this.m02 * this.m20, this.m02 * this.m10 - this.m00 * this.m12, this.m10 * this.m21 - this.m11 * this.m20, this.m01 * this.m20 - this.m00 * this.m21, this.m00 * this.m11 - this.m01 * this.m10); +this.scale(s); +}); +Clazz_defineMethod(c$, "setAsXRotation", +function(angle){ +this.setXRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsYRotation", +function(angle){ +this.setYRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsZRotation", +function(angle){ +this.setZRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "scale", +function(scalar){ +this.mul33(scalar); +}, "~N"); +Clazz_defineMethod(c$, "mul", +function(m1){ +this.mul2(this, m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "mul2", +function(m1, m2){ +this.set9(m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22); +}, "JU.M3,JU.M3"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.M3"))) return false; +var m = o; +return this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.m00) ^ JU.T3.floatToIntBits(this.m01) ^ JU.T3.floatToIntBits(this.m02) ^ JU.T3.floatToIntBits(this.m10) ^ JU.T3.floatToIntBits(this.m11) ^ JU.T3.floatToIntBits(this.m12) ^ JU.T3.floatToIntBits(this.m20) ^ JU.T3.floatToIntBits(this.m21) ^ JU.T3.floatToIntBits(this.m22); +}); +Clazz_defineMethod(c$, "setZero", +function(){ +this.clear33(); +}); +Clazz_defineMethod(c$, "set9", +function(m00, m01, m02, m10, m11, m12, m20, m21, m22){ +this.m00 = m00; +this.m01 = m01; +this.m02 = m02; +this.m10 = m10; +this.m11 = m11; +this.m12 = m12; +this.m20 = m20; +this.m21 = m21; +this.m22 = m22; +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[\n [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "]" + "\n [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "]" + "\n [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "] ]"; +}); +Clazz_defineMethod(c$, "setAA", +function(a){ +this.setAA33(a); +return this; +}, "JU.A4"); +Clazz_defineMethod(c$, "setAsBallRotation", +function(responseFactor, dx, dy){ +var r = Math.sqrt(dx * dx + dy * dy); +var th = r * responseFactor; +if (th == 0) { +this.setScale(1); +return false; +}var c = Math.cos(th); +var s = Math.sin(th); +var nx = -dy / r; +var ny = dx / r; +var c1 = c - 1; +this.m00 = 1 + c1 * nx * nx; +this.m01 = this.m10 = c1 * nx * ny; +this.m20 = -(this.m02 = s * nx); +this.m11 = 1 + c1 * ny * ny; +this.m21 = -(this.m12 = s * ny); +this.m22 = c; +return true; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isRotation", +function(){ +return (Math.abs(this.determinant3() - 1) < 0.001); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.M34"], "JU.M4", ["JU.T3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m03 = 0; +this.m13 = 0; +this.m23 = 0; +this.m30 = 0; +this.m31 = 0; +this.m32 = 0; +this.m33 = 0; +Clazz_instantialize(this, arguments);}, JU, "M4", JU.M34); +c$.newA16 = Clazz_defineMethod(c$, "newA16", +function(v){ +var m = new JU.M4(); +m.m00 = v[0]; +m.m01 = v[1]; +m.m02 = v[2]; +m.m03 = v[3]; +m.m10 = v[4]; +m.m11 = v[5]; +m.m12 = v[6]; +m.m13 = v[7]; +m.m20 = v[8]; +m.m21 = v[9]; +m.m22 = v[10]; +m.m23 = v[11]; +m.m30 = v[12]; +m.m31 = v[13]; +m.m32 = v[14]; +m.m33 = v[15]; +return m; +}, "~A"); +c$.newM4 = Clazz_defineMethod(c$, "newM4", +function(m1){ +var m = new JU.M4(); +if (m1 == null) { +m.setIdentity(); +return m; +}m.setToM3(m1); +m.m03 = m1.m03; +m.m13 = m1.m13; +m.m23 = m1.m23; +m.m30 = m1.m30; +m.m31 = m1.m31; +m.m32 = m1.m32; +m.m33 = m1.m33; +return m; +}, "JU.M4"); +c$.newMV = Clazz_defineMethod(c$, "newMV", +function(m1, t){ +var m = new JU.M4(); +m.setMV(m1, t); +return m; +}, "JU.M3,JU.T3"); +Clazz_defineMethod(c$, "setZero", +function(){ +this.clear33(); +this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = this.m33 = 0.0; +}); +Clazz_defineMethod(c$, "setIdentity", +function(){ +this.setZero(); +this.m00 = this.m11 = this.m22 = this.m33 = 1.0; +}); +Clazz_defineMethod(c$, "setM4", +function(m1){ +this.setM33(m1); +this.m03 = m1.m03; +this.m13 = m1.m13; +this.m23 = m1.m23; +this.m30 = m1.m30; +this.m31 = m1.m31; +this.m32 = m1.m32; +this.m33 = m1.m33; +return this; +}, "JU.M4"); +Clazz_defineMethod(c$, "setMV", +function(m1, t){ +this.setM33(m1); +this.setTranslation(t); +this.m33 = 1; +}, "JU.M3,JU.T3"); +Clazz_defineMethod(c$, "setToM3", +function(m1){ +this.setM33(m1); +this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = 0.0; +this.m33 = 1.0; +}, "JU.M34"); +Clazz_defineMethod(c$, "setToAA", +function(a){ +this.setIdentity(); +this.setAA33(a); +}, "JU.A4"); +Clazz_defineMethod(c$, "setA", +function(m){ +this.m00 = m[0]; +this.m01 = m[1]; +this.m02 = m[2]; +this.m03 = m[3]; +this.m10 = m[4]; +this.m11 = m[5]; +this.m12 = m[6]; +this.m13 = m[7]; +this.m20 = m[8]; +this.m21 = m[9]; +this.m22 = m[10]; +this.m23 = m[11]; +this.m30 = m[12]; +this.m31 = m[13]; +this.m32 = m[14]; +this.m33 = m[15]; +}, "~A"); +Clazz_defineMethod(c$, "setTranslation", +function(trans){ +this.m03 = trans.x; +this.m13 = trans.y; +this.m23 = trans.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "setElement", +function(row, col, v){ +if (row < 3 && col < 3) { +this.set33(row, col, v); +return; +}if (row > 3 || col > 3) this.err(); +switch (row) { +case 0: +this.m03 = v; +return; +case 1: +this.m13 = v; +return; +case 2: +this.m23 = v; +return; +} +switch (col) { +case 0: +this.m30 = v; +return; +case 1: +this.m31 = v; +return; +case 2: +this.m32 = v; +return; +case 3: +this.m33 = v; +return; +} +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getElement", +function(row, col){ +if (row < 3 && col < 3) return this.get33(row, col); +if (row > 3 || col > 3) { +this.err(); +return 0; +}switch (row) { +case 0: +return this.m03; +case 1: +return this.m13; +case 2: +return this.m23; +default: +switch (col) { +case 0: +return this.m30; +case 1: +return this.m31; +case 2: +return this.m32; +default: +return this.m33; +} +} +}, "~N,~N"); +Clazz_defineMethod(c$, "getTranslation", +function(trans){ +trans.x = this.m03; +trans.y = this.m13; +trans.z = this.m23; +}, "JU.T3"); +Clazz_defineMethod(c$, "getRotationScale", +function(m1){ +m1.m00 = this.m00; +m1.m01 = this.m01; +m1.m02 = this.m02; +m1.m10 = this.m10; +m1.m11 = this.m11; +m1.m12 = this.m12; +m1.m20 = this.m20; +m1.m21 = this.m21; +m1.m22 = this.m22; +}, "JU.M3"); +Clazz_defineMethod(c$, "setRotationScale", +function(m1){ +this.m00 = m1.m00; +this.m01 = m1.m01; +this.m02 = m1.m02; +this.m10 = m1.m10; +this.m11 = m1.m11; +this.m12 = m1.m12; +this.m20 = m1.m20; +this.m21 = m1.m21; +this.m22 = m1.m22; +}, "JU.M3"); +Clazz_defineMethod(c$, "setRowA", +function(row, v){ +if (row < 3) this.setRow33(row, v); +switch (row) { +case 0: +this.m03 = v[3]; +return; +case 1: +this.m13 = v[3]; +return; +case 2: +this.m23 = v[3]; +return; +case 3: +this.m30 = v[0]; +this.m31 = v[1]; +this.m32 = v[2]; +this.m33 = v[3]; +return; +} +this.err(); +}, "~N,~A"); +Clazz_overrideMethod(c$, "getRow", +function(row, v){ +if (row < 3) this.getRow33(row, v); +switch (row) { +case 0: +v[3] = this.m03; +return; +case 1: +v[3] = this.m13; +return; +case 2: +v[3] = this.m23; +return; +case 3: +v[0] = this.m30; +v[1] = this.m31; +v[2] = this.m32; +v[3] = this.m33; +return; +} +this.err(); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn4", +function(column, x, y, z, w){ +if (column == 0) { +this.m00 = x; +this.m10 = y; +this.m20 = z; +this.m30 = w; +} else if (column == 1) { +this.m01 = x; +this.m11 = y; +this.m21 = z; +this.m31 = w; +} else if (column == 2) { +this.m02 = x; +this.m12 = y; +this.m22 = z; +this.m32 = w; +} else if (column == 3) { +this.m03 = x; +this.m13 = y; +this.m23 = z; +this.m33 = w; +} else { +this.err(); +}}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setColumnA", +function(column, v){ +if (column < 3) this.setColumn33(column, v); +switch (column) { +case 0: +this.m30 = v[3]; +return; +case 1: +this.m31 = v[3]; +return; +case 2: +this.m32 = v[3]; +return; +case 3: +this.m03 = v[0]; +this.m13 = v[1]; +this.m23 = v[2]; +this.m33 = v[3]; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn", +function(column, v){ +if (column < 3) this.getColumn33(column, v); +switch (column) { +case 0: +v[3] = this.m30; +return; +case 1: +v[3] = this.m31; +return; +case 2: +v[3] = this.m32; +return; +case 3: +v[0] = this.m03; +v[1] = this.m13; +v[2] = this.m23; +v[3] = this.m33; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "sub", +function(m1){ +this.sub33(m1); +this.m03 -= m1.m03; +this.m13 -= m1.m13; +this.m23 -= m1.m23; +this.m30 -= m1.m30; +this.m31 -= m1.m31; +this.m32 -= m1.m32; +this.m33 -= m1.m33; +}, "JU.M4"); +Clazz_defineMethod(c$, "add", +function(pt){ +this.m03 += pt.x; +this.m13 += pt.y; +this.m23 += pt.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "transpose", +function(){ +this.transpose33(); +var tmp = this.m03; +this.m03 = this.m30; +this.m30 = tmp; +tmp = this.m13; +this.m13 = this.m31; +this.m31 = tmp; +tmp = this.m23; +this.m23 = this.m32; +this.m32 = tmp; +}); +Clazz_defineMethod(c$, "invert", +function(){ +var s = this.determinant4(); +if (s == 0.0) return this; +s = 1 / s; +this.set(this.m11 * (this.m22 * this.m33 - this.m23 * this.m32) + this.m12 * (this.m23 * this.m31 - this.m21 * this.m33) + this.m13 * (this.m21 * this.m32 - this.m22 * this.m31), this.m21 * (this.m02 * this.m33 - this.m03 * this.m32) + this.m22 * (this.m03 * this.m31 - this.m01 * this.m33) + this.m23 * (this.m01 * this.m32 - this.m02 * this.m31), this.m31 * (this.m02 * this.m13 - this.m03 * this.m12) + this.m32 * (this.m03 * this.m11 - this.m01 * this.m13) + this.m33 * (this.m01 * this.m12 - this.m02 * this.m11), this.m01 * (this.m13 * this.m22 - this.m12 * this.m23) + this.m02 * (this.m11 * this.m23 - this.m13 * this.m21) + this.m03 * (this.m12 * this.m21 - this.m11 * this.m22), this.m12 * (this.m20 * this.m33 - this.m23 * this.m30) + this.m13 * (this.m22 * this.m30 - this.m20 * this.m32) + this.m10 * (this.m23 * this.m32 - this.m22 * this.m33), this.m22 * (this.m00 * this.m33 - this.m03 * this.m30) + this.m23 * (this.m02 * this.m30 - this.m00 * this.m32) + this.m20 * (this.m03 * this.m32 - this.m02 * this.m33), this.m32 * (this.m00 * this.m13 - this.m03 * this.m10) + this.m33 * (this.m02 * this.m10 - this.m00 * this.m12) + this.m30 * (this.m03 * this.m12 - this.m02 * this.m13), this.m02 * (this.m13 * this.m20 - this.m10 * this.m23) + this.m03 * (this.m10 * this.m22 - this.m12 * this.m20) + this.m00 * (this.m12 * this.m23 - this.m13 * this.m22), this.m13 * (this.m20 * this.m31 - this.m21 * this.m30) + this.m10 * (this.m21 * this.m33 - this.m23 * this.m31) + this.m11 * (this.m23 * this.m30 - this.m20 * this.m33), this.m23 * (this.m00 * this.m31 - this.m01 * this.m30) + this.m20 * (this.m01 * this.m33 - this.m03 * this.m31) + this.m21 * (this.m03 * this.m30 - this.m00 * this.m33), this.m33 * (this.m00 * this.m11 - this.m01 * this.m10) + this.m30 * (this.m01 * this.m13 - this.m03 * this.m11) + this.m31 * (this.m03 * this.m10 - this.m00 * this.m13), this.m03 * (this.m11 * this.m20 - this.m10 * this.m21) + this.m00 * (this.m13 * this.m21 - this.m11 * this.m23) + this.m01 * (this.m10 * this.m23 - this.m13 * this.m20), this.m10 * (this.m22 * this.m31 - this.m21 * this.m32) + this.m11 * (this.m20 * this.m32 - this.m22 * this.m30) + this.m12 * (this.m21 * this.m30 - this.m20 * this.m31), this.m20 * (this.m02 * this.m31 - this.m01 * this.m32) + this.m21 * (this.m00 * this.m32 - this.m02 * this.m30) + this.m22 * (this.m01 * this.m30 - this.m00 * this.m31), this.m30 * (this.m02 * this.m11 - this.m01 * this.m12) + this.m31 * (this.m00 * this.m12 - this.m02 * this.m10) + this.m32 * (this.m01 * this.m10 - this.m00 * this.m11), this.m00 * (this.m11 * this.m22 - this.m12 * this.m21) + this.m01 * (this.m12 * this.m20 - this.m10 * this.m22) + this.m02 * (this.m10 * this.m21 - this.m11 * this.m20)); +this.scale(s); +return this; +}); +Clazz_defineMethod(c$, "set", +function(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33){ +this.m00 = m00; +this.m01 = m01; +this.m02 = m02; +this.m03 = m03; +this.m10 = m10; +this.m11 = m11; +this.m12 = m12; +this.m13 = m13; +this.m20 = m20; +this.m21 = m21; +this.m22 = m22; +this.m23 = m23; +this.m30 = m30; +this.m31 = m31; +this.m32 = m32; +this.m33 = m33; +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "determinant4", +function(){ +return (this.m00 * this.m11 - this.m01 * this.m10) * (this.m22 * this.m33 - this.m23 * this.m32) - (this.m00 * this.m12 - this.m02 * this.m10) * (this.m21 * this.m33 - this.m23 * this.m31) + (this.m00 * this.m13 - this.m03 * this.m10) * (this.m21 * this.m32 - this.m22 * this.m31) + (this.m01 * this.m12 - this.m02 * this.m11) * (this.m20 * this.m33 - this.m23 * this.m30) - (this.m01 * this.m13 - this.m03 * this.m11) * (this.m20 * this.m32 - this.m22 * this.m30) + (this.m02 * this.m13 - this.m03 * this.m12) * (this.m20 * this.m31 - this.m21 * this.m30); +}); +Clazz_defineMethod(c$, "scale", +function(scalar){ +this.mul33(scalar); +this.m03 *= scalar; +this.m13 *= scalar; +this.m23 *= scalar; +this.m30 *= scalar; +this.m31 *= scalar; +this.m32 *= scalar; +this.m33 *= scalar; +}, "~N"); +Clazz_defineMethod(c$, "mul", +function(m1){ +this.mul2(this, m1); +}, "JU.M4"); +Clazz_defineMethod(c$, "mul2", +function(m1, m2){ +this.set(m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20 + m1.m03 * m2.m30, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21 + m1.m03 * m2.m31, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22 + m1.m03 * m2.m32, m1.m00 * m2.m03 + m1.m01 * m2.m13 + m1.m02 * m2.m23 + m1.m03 * m2.m33, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20 + m1.m13 * m2.m30, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21 + m1.m13 * m2.m31, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22 + m1.m13 * m2.m32, m1.m10 * m2.m03 + m1.m11 * m2.m13 + m1.m12 * m2.m23 + m1.m13 * m2.m33, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20 + m1.m23 * m2.m30, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21 + m1.m23 * m2.m31, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22 + m1.m23 * m2.m32, m1.m20 * m2.m03 + m1.m21 * m2.m13 + m1.m22 * m2.m23 + m1.m23 * m2.m33, m1.m30 * m2.m00 + m1.m31 * m2.m10 + m1.m32 * m2.m20 + m1.m33 * m2.m30, m1.m30 * m2.m01 + m1.m31 * m2.m11 + m1.m32 * m2.m21 + m1.m33 * m2.m31, m1.m30 * m2.m02 + m1.m31 * m2.m12 + m1.m32 * m2.m22 + m1.m33 * m2.m32, m1.m30 * m2.m03 + m1.m31 * m2.m13 + m1.m32 * m2.m23 + m1.m33 * m2.m33); +}, "JU.M4,JU.M4"); +Clazz_defineMethod(c$, "transform", +function(vec){ +this.transform2(vec, vec); +}, "JU.T4"); +Clazz_defineMethod(c$, "transform2", +function(vec, vecOut){ +vecOut.set4(this.m00 * vec.x + this.m01 * vec.y + this.m02 * vec.z + this.m03 * vec.w, this.m10 * vec.x + this.m11 * vec.y + this.m12 * vec.z + this.m13 * vec.w, this.m20 * vec.x + this.m21 * vec.y + this.m22 * vec.z + this.m23 * vec.w, this.m30 * vec.x + this.m31 * vec.y + this.m32 * vec.z + this.m33 * vec.w); +}, "JU.T4,JU.T4"); +Clazz_defineMethod(c$, "rotTrans", +function(point){ +this.rotTrans2(point, point); +}, "JU.T3"); +Clazz_defineMethod(c$, "rotTrans2", +function(point, pointOut){ +pointOut.set(this.m00 * point.x + this.m01 * point.y + this.m02 * point.z + this.m03, this.m10 * point.x + this.m11 * point.y + this.m12 * point.z + this.m13, this.m20 * point.x + this.m21 * point.y + this.m22 * point.z + this.m23); +return pointOut; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "setAsXYRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m22 = c; +this.m23 = -s; +this.m32 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsYZRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m03 = -s; +this.m30 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsXZRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m11 = c; +this.m13 = -s; +this.m31 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.M4"))) return false; +var m = o; +return (this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m03 == m.m03 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m13 == m.m13 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22 && this.m23 == m.m23 && this.m30 == m.m30 && this.m31 == m.m31 && this.m32 == m.m32 && this.m33 == m.m33); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.m00) ^ JU.T3.floatToIntBits(this.m01) ^ JU.T3.floatToIntBits(this.m02) ^ JU.T3.floatToIntBits(this.m03) ^ JU.T3.floatToIntBits(this.m10) ^ JU.T3.floatToIntBits(this.m11) ^ JU.T3.floatToIntBits(this.m12) ^ JU.T3.floatToIntBits(this.m13) ^ JU.T3.floatToIntBits(this.m20) ^ JU.T3.floatToIntBits(this.m21) ^ JU.T3.floatToIntBits(this.m22) ^ JU.T3.floatToIntBits(this.m23) ^ JU.T3.floatToIntBits(this.m30) ^ JU.T3.floatToIntBits(this.m31) ^ JU.T3.floatToIntBits(this.m32) ^ JU.T3.floatToIntBits(this.m33); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[\n [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "\t" + this.m03 + "]" + "\n [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "\t" + this.m13 + "]" + "\n [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "\t" + this.m23 + "]" + "\n [" + this.m30 + "\t" + this.m31 + "\t" + this.m32 + "\t" + this.m33 + "] ]"; +}); +Clazz_defineMethod(c$, "round", +function(f){ +this.m00 = this.rnd(this.m00, f); +this.m01 = this.rnd(this.m01, f); +this.m02 = this.rnd(this.m02, f); +this.m03 = this.rnd(this.m03, f); +this.m10 = this.rnd(this.m10, f); +this.m11 = this.rnd(this.m11, f); +this.m12 = this.rnd(this.m12, f); +this.m13 = this.rnd(this.m13, f); +this.m20 = this.rnd(this.m20, f); +this.m21 = this.rnd(this.m21, f); +this.m22 = this.rnd(this.m22, f); +this.m23 = this.rnd(this.m23, f); +this.m30 = this.rnd(this.m30, f); +this.m31 = this.rnd(this.m31, f); +this.m32 = this.rnd(this.m32, f); +this.m33 = this.rnd(this.m33, f); +return this; +}, "~N"); +Clazz_defineMethod(c$, "rnd", +function(n, f){ +return (Math.abs(n) < f ? 0 : n); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.io.OutputStream", "javajs.api.GenericOutputChannel"], "JU.OC", ["java.io.BufferedWriter", "$.ByteArrayOutputStream", "$.OutputStreamWriter", "JU.Base64", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bytePoster = null; +this.fileName = null; +this.bw = null; +this.isLocalFile = false; +this.byteCount = 0; +this.isCanceled = false; +this.closed = false; +this.os = null; +this.sb = null; +this.type = null; +this.$isBase64 = false; +this.os0 = null; +this.bytes = null; +this.bigEndian = true; +Clazz_instantialize(this, arguments);}, JU, "OC", java.io.OutputStream, javajs.api.GenericOutputChannel); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JU.OC, []); +}); +Clazz_makeConstructor(c$, +function(fileName){ +Clazz_superConstructor (this, JU.OC, []); +this.setParams(null, fileName, false, null); +}, "~S"); +Clazz_defineMethod(c$, "setParams", +function(bytePoster, fileName, asWriter, os){ +this.bytePoster = bytePoster; +this.$isBase64 = ";base64,".equals(fileName); +if (this.$isBase64) { +fileName = null; +this.os0 = os; +os = null; +}this.fileName = fileName; +this.os = os; +this.isLocalFile = (fileName != null && !JU.OC.isRemote(fileName)); +if (asWriter && !this.$isBase64 && os != null) this.bw = new java.io.BufferedWriter( new java.io.OutputStreamWriter(os)); +return this; +}, "javajs.api.BytePoster,~S,~B,java.io.OutputStream"); +Clazz_overrideMethod(c$, "isBigEndian", +function(){ +return this.bigEndian; +}); +Clazz_defineMethod(c$, "setBigEndian", +function(TF){ +this.bigEndian = TF; +}, "~B"); +Clazz_defineMethod(c$, "setBytes", +function(b){ +this.bytes = b; +return this; +}, "~A"); +Clazz_defineMethod(c$, "getFileName", +function(){ +return this.fileName; +}); +Clazz_defineMethod(c$, "getName", +function(){ +return (this.fileName == null ? null : this.fileName.substring(this.fileName.lastIndexOf("/") + 1)); +}); +Clazz_defineMethod(c$, "getByteCount", +function(){ +return this.byteCount; +}); +Clazz_defineMethod(c$, "setType", +function(type){ +this.type = type; +}, "~S"); +Clazz_defineMethod(c$, "getType", +function(){ +return this.type; +}); +Clazz_defineMethod(c$, "append", +function(s){ +try { +if (this.bw != null) { +this.bw.write(s); +} else if (this.os == null) { +if (this.sb == null) this.sb = new JU.SB(); +this.sb.append(s); +} else { +var b = s.getBytes(); +this.os.write(b, 0, b.length); +this.byteCount += b.length; +return this; +}} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +this.byteCount += s.length; +return this; +}, "~S"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.sb = null; +this.initOS(); +}); +Clazz_defineMethod(c$, "initOS", +function(){ +if (this.sb != null) { +var s = this.sb.toString(); +this.reset(); +this.append(s); +return; +}try { +{ +this.os = null; +}if (this.os == null) this.os = new java.io.ByteArrayOutputStream(); +if (this.bw != null) { +this.bw.close(); +this.bw = new java.io.BufferedWriter( new java.io.OutputStreamWriter(this.os)); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +this.byteCount = 0; +}); +Clazz_overrideMethod(c$, "writeByteAsInt", +function(b){ +if (this.os == null) this.initOS(); +{ +this.os.writeByteAsInt(b); +}this.byteCount++; +}, "~N"); +Clazz_overrideMethod(c$, "write", +function(buf, i, len){ +if (this.os == null) this.initOS(); +if (len < 0) len = buf.length - i; +try { +this.os.write(buf, i, len); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +this.byteCount += len; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "writeShort", +function(i){ +if (this.isBigEndian()) { +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i); +} else { +this.writeByteAsInt(i); +this.writeByteAsInt(i >> 8); +}}, "~N"); +Clazz_overrideMethod(c$, "writeLong", +function(b){ +if (this.isBigEndian()) { +this.writeInt(((b >> 32) & 0xFFFFFFFF)); +this.writeInt((b & 0xFFFFFFFF)); +} else { +this.writeByteAsInt((b >> 56)); +this.writeByteAsInt((b >> 48)); +this.writeByteAsInt((b >> 40)); +this.writeByteAsInt((b >> 32)); +this.writeByteAsInt((b >> 24)); +this.writeByteAsInt((b >> 16)); +this.writeByteAsInt((b >> 8)); +this.writeByteAsInt(b); +}}, "~N"); +Clazz_defineMethod(c$, "cancel", +function(){ +this.isCanceled = true; +this.closeChannel(); +}); +Clazz_overrideMethod(c$, "closeChannel", +function(){ +if (this.closed) return null; +try { +if (this.bw != null) { +this.bw.flush(); +this.bw.close(); +} else if (this.os != null) { +this.os.flush(); +this.os.close(); +}if (this.os0 != null && this.isCanceled) { +this.os0.flush(); +this.os0.close(); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (this.isCanceled) { +this.closed = true; +return null; +}if (this.fileName == null) { +if (this.$isBase64) { +var s = this.getBase64(); +if (this.os0 != null) { +this.os = this.os0; +this.append(s); +}this.sb = new JU.SB(); +this.sb.append(s); +this.$isBase64 = false; +return this.closeChannel(); +}return (this.sb == null ? null : this.sb.toString()); +}this.closed = true; +if (!this.isLocalFile) { +var ret = this.postByteArray(); +if (ret == null || ret.startsWith("java.net")) this.byteCount = -1; +return ret; +}var jmol = null; +var _function = null; +{ +jmol = self.J2S || Jmol; _function = (typeof this.fileName == +"function" ? this.fileName : null); +}if (jmol != null) { +var data = (this.sb == null ? this.toByteArray() : this.sb.toString()); +if (_function == null) jmol.doAjax(this.fileName, null, data, this.sb == null); + else jmol.applyFunc(this.fileName, data); +}return null; +}); +Clazz_defineMethod(c$, "isBase64", +function(){ +return this.$isBase64; +}); +Clazz_defineMethod(c$, "getBase64", +function(){ +return JU.Base64.getBase64(this.toByteArray()).toString(); +}); +Clazz_defineMethod(c$, "toByteArray", +function(){ +return (this.bytes != null ? this.bytes : Clazz_instanceOf(this.os,"java.io.ByteArrayOutputStream") ? (this.os).toByteArray() : null); +}); +Clazz_defineMethod(c$, "close", +function(){ +this.closeChannel(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.bw != null) try { +this.bw.flush(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +if (this.sb != null) return this.closeChannel(); +return this.byteCount + " bytes"; +}); +Clazz_defineMethod(c$, "postByteArray", +function(){ +var bytes = (this.sb == null ? this.toByteArray() : this.sb.toString().getBytes()); +return this.bytePoster.postByteArray(this.fileName, bytes); +}); +c$.isRemote = Clazz_defineMethod(c$, "isRemote", +function(fileName){ +if (fileName == null) return false; +var itype = JU.OC.urlTypeIndex(fileName); +return (itype >= 0 && itype < 4); +}, "~S"); +c$.isLocal = Clazz_defineMethod(c$, "isLocal", +function(fileName){ +return (fileName != null && !JU.OC.isRemote(fileName)); +}, "~S"); +c$.urlTypeIndex = Clazz_defineMethod(c$, "urlTypeIndex", +function(name){ +if (name == null) return -2; +for (var i = 0; i < JU.OC.urlPrefixes.length; ++i) { +if (name.startsWith(JU.OC.urlPrefixes[i])) { +return i; +}} +return -1; +}, "~S"); +Clazz_overrideMethod(c$, "writeInt", +function(i){ +if (this.bigEndian) { +this.writeByteAsInt(i >> 24); +this.writeByteAsInt(i >> 16); +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i); +} else { +this.writeByteAsInt(i); +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i >> 16); +this.writeByteAsInt(i >> 24); +}}, "~N"); +Clazz_defineMethod(c$, "writeFloat", +function(x){ +this.writeInt(x == 0 ? 0 : Float.floatToIntBits(x)); +}, "~N"); +c$.urlPrefixes = Clazz_newArray(-1, ["http:", "https:", "sftp:", "ftp:", "file:", "cache:"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.P3", null, function(){ +var c$ = Clazz_declareType(JU, "P3", JU.T3); +c$.newP = Clazz_defineMethod(c$, "newP", +function(t){ +var p = new JU.P3(); +p.x = t.x; +p.y = t.y; +p.z = t.z; +return p; +}, "JU.T3"); +c$.getUnlikely = Clazz_defineMethod(c$, "getUnlikely", +function(){ +return (JU.P3.unlikely == null ? JU.P3.unlikely = JU.P3.new3(3.141592653589793, 2.718281828459045, (8.539734222673566)) : JU.P3.unlikely); +}); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var p = new JU.P3(); +p.x = x; +p.y = y; +p.z = z; +return p; +}, "~N,~N,~N"); +c$.newA = Clazz_defineMethod(c$, "newA", +function(a){ +return JU.P3.new3(a[0], a[1], a[2]); +}, "~A"); +c$.unlikely = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3i"], "JU.P3i", null, function(){ +var c$ = Clazz_declareType(JU, "P3i", JU.T3i); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var pt = new JU.P3i(); +pt.x = x; +pt.y = y; +pt.z = z; +return pt; +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T4"], "JU.P4", null, function(){ +var c$ = Clazz_declareType(JU, "P4", JU.T4); +c$.new4 = Clazz_defineMethod(c$, "new4", +function(x, y, z, w){ +var pt = new JU.P4(); +pt.set4(x, y, z, w); +return pt; +}, "~N,~N,~N,~N"); +c$.newPt = Clazz_defineMethod(c$, "newPt", +function(value){ +var pt = new JU.P4(); +pt.set4(value.x, value.y, value.z, value.w); +return pt; +}, "JU.P4"); +Clazz_defineMethod(c$, "distance4", +function(p1){ +var dx = this.x - p1.x; +var dy = this.y - p1.y; +var dz = this.z - p1.z; +var dw = this.w - p1.w; +return Math.sqrt(dx * dx + dy * dy + dz * dz + dw * dw); +}, "JU.P4"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.PT", ["java.util.Arrays", "JU.AU", "$.DF", "$.SB"], function(){ +var c$ = Clazz_declareType(JU, "PT", null); +c$.parseInt = Clazz_defineMethod(c$, "parseInt", +function(str){ +return JU.PT.parseIntNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseIntNext = Clazz_defineMethod(c$, "parseIntNext", +function(str, next){ +var cch = str.length; +if (next[0] < 0 || next[0] >= cch) return -2147483648; +return JU.PT.parseIntChecked(str, cch, next); +}, "~S,~A"); +c$.parseIntChecked = Clazz_defineMethod(c$, "parseIntChecked", +function(str, ichMax, next){ +var digitSeen = false; +var value = 0; +var ich = next[0]; +if (ich < 0) return -2147483648; +var ch; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var negative = false; +if (ich < ichMax && (str.charAt(ich)).charCodeAt(0) == 45) { +negative = true; +++ich; +}while (ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +value = value * 10 + (ch - 48); +digitSeen = true; +++ich; +} +if (!digitSeen) value = -2147483648; + else if (negative) value = -value; +next[0] = ich; +return value; +}, "~S,~N,~A"); +c$.isWhiteSpace = Clazz_defineMethod(c$, "isWhiteSpace", +function(str, ich){ +var ch; +return (ich >= 0 && ((ch = str.charAt(ich)) == ' ' || ch == '\t' || ch == '\n')); +}, "~S,~N"); +c$.parseFloatChecked = Clazz_defineMethod(c$, "parseFloatChecked", +function(str, ichMax, next, isStrict){ +var digitSeen = false; +var ich = next[0]; +if (isStrict && str.indexOf('\n') != str.lastIndexOf('\n')) return NaN; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var negative = false; +if (ich < ichMax && str.charAt(ich) == '-') { +++ich; +negative = true; +}var ch = 0; +var ival = 0; +var ival2 = 0; +while (ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +ival = (ival * 10) + (ch - 48) * 1; +++ich; +digitSeen = true; +} +var isDecimal = false; +var iscale = 0; +var nzero = (ival == 0 ? -1 : 0); +if (ch == 46) { +isDecimal = true; +while (++ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +digitSeen = true; +if (nzero < 0) { +if (ch == 48) { +nzero--; +continue; +}nzero = -nzero; +}if (iscale < JU.PT.decimalScale.length) { +ival2 = (ival2 * 10) + (ch - 48) * 1; +iscale++; +}} +}var value; +if (!digitSeen) { +value = NaN; +} else if (ival2 > 0) { +value = ival2 * JU.PT.decimalScale[iscale - 1]; +if (nzero > 1) { +if (nzero - 2 < JU.PT.decimalScale.length) { +value *= JU.PT.decimalScale[nzero - 2]; +} else { +value *= Math.pow(10, 1 - nzero); +}} else { +value += ival; +}} else { +value = ival; +}var isExponent = false; +if (ich < ichMax && (ch == 69 || ch == 101 || ch == 68)) { +isExponent = true; +if (++ich >= ichMax) return NaN; +ch = (str.charAt(ich)).charCodeAt(0); +if ((ch == 43) && (++ich >= ichMax)) return NaN; +next[0] = ich; +var exponent = JU.PT.parseIntChecked(str, ichMax, next); +if (exponent == -2147483648) return NaN; +if (exponent > 0 && exponent <= JU.PT.tensScale.length) value *= JU.PT.tensScale[exponent - 1]; + else if (exponent < 0 && -exponent <= JU.PT.decimalScale.length) value *= JU.PT.decimalScale[-exponent - 1]; + else if (exponent != 0) value *= Math.pow(10, exponent); +} else { +next[0] = ich; +}if (negative) value = -value; +if (value == Infinity) value = 3.4028235E38; +return (!isStrict || (!isExponent || isDecimal) && JU.PT.checkTrailingText(str, next[0], ichMax) ? value : NaN); +}, "~S,~N,~A,~B"); +c$.checkTrailingText = Clazz_defineMethod(c$, "checkTrailingText", +function(str, ich, ichMax){ +var ch; +while (ich < ichMax && (JU.PT.isWhitespace(ch = str.charAt(ich)) || ch == ';')) ++ich; + +return (ich == ichMax); +}, "~S,~N,~N"); +c$.parseFloatArray = Clazz_defineMethod(c$, "parseFloatArray", +function(str){ +return JU.PT.parseFloatArrayNext(str, Clazz_newIntArray (1, 0), null, null, null); +}, "~S"); +c$.parseFloatArrayInfested = Clazz_defineMethod(c$, "parseFloatArrayInfested", +function(tokens, data){ +var len = data.length; +var nTokens = tokens.length; +var n = 0; +var max = 0; +for (var i = 0; i >= 0 && i < len && n < nTokens; i++) { +var f; +while (Float.isNaN(f = JU.PT.parseFloat(tokens[n++])) && n < nTokens) { +} +if (!Float.isNaN(f)) data[(max = i)] = f; +if (n == nTokens) break; +} +return max + 1; +}, "~A,~A"); +c$.parseFloatArrayNext = Clazz_defineMethod(c$, "parseFloatArrayNext", +function(str, next, f, strStart, strEnd){ +var n = 0; +var pt = next[0]; +if (pt >= 0) { +if (strStart != null) { +var p = str.indexOf(strStart, pt); +if (p >= 0) next[0] = p + strStart.length; +}str = str.substring(next[0]); +pt = (strEnd == null ? -1 : str.indexOf(strEnd)); +if (pt < 0) pt = str.length; + else str = str.substring(0, pt); +next[0] += pt + 1; +var tokens = JU.PT.getTokens(str); +if (f == null) f = Clazz_newFloatArray (tokens.length, 0); +n = JU.PT.parseFloatArrayInfested(tokens, f); +}if (f == null) return Clazz_newFloatArray (0, 0); +for (var i = n; i < f.length; i++) f[i] = NaN; + +return f; +}, "~S,~A,~A,~S,~S"); +c$.parseFloatRange = Clazz_defineMethod(c$, "parseFloatRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +if (next[0] < 0 || next[0] >= ichMax) return NaN; +return JU.PT.parseFloatChecked(str, ichMax, next, false); +}, "~S,~N,~A"); +c$.parseFloatNext = Clazz_defineMethod(c$, "parseFloatNext", +function(str, next){ +var cch = (str == null ? -1 : str.length); +return (next[0] < 0 || next[0] >= cch ? NaN : JU.PT.parseFloatChecked(str, cch, next, false)); +}, "~S,~A"); +c$.parseFloatStrict = Clazz_defineMethod(c$, "parseFloatStrict", +function(str){ +var cch = str.length; +if (cch == 0) return NaN; +return JU.PT.parseFloatChecked(str, cch, Clazz_newIntArray(-1, [0]), true); +}, "~S"); +c$.parseFloat = Clazz_defineMethod(c$, "parseFloat", +function(str){ +return JU.PT.parseFloatNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseIntRadix = Clazz_defineMethod(c$, "parseIntRadix", +function(s, i){ +{ +return Integer.parseIntRadix(s, i); +}}, "~S,~N"); +c$.getTokens = Clazz_defineMethod(c$, "getTokens", +function(line){ +return JU.PT.getTokensAt(line, 0); +}, "~S"); +c$.parseToken = Clazz_defineMethod(c$, "parseToken", +function(str){ +return JU.PT.parseTokenNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseTrimmed = Clazz_defineMethod(c$, "parseTrimmed", +function(str){ +return JU.PT.parseTrimmedRange(str, 0, str.length); +}, "~S"); +c$.parseTrimmedAt = Clazz_defineMethod(c$, "parseTrimmedAt", +function(str, ichStart){ +return JU.PT.parseTrimmedRange(str, ichStart, str.length); +}, "~S,~N"); +c$.parseTrimmedRange = Clazz_defineMethod(c$, "parseTrimmedRange", +function(str, ichStart, ichMax){ +var cch = str.length; +if (ichMax < cch) cch = ichMax; +if (cch < ichStart) return ""; +return JU.PT.parseTrimmedChecked(str, ichStart, cch); +}, "~S,~N,~N"); +c$.getTokensAt = Clazz_defineMethod(c$, "getTokensAt", +function(line, ich){ +if (line == null) return null; +var cchLine = line.length; +if (ich < 0 || ich > cchLine) return null; +var tokenCount = JU.PT.countTokens(line, ich); +var tokens = new Array(tokenCount); +var next = Clazz_newIntArray (1, 0); +next[0] = ich; +for (var i = 0; i < tokenCount; ++i) tokens[i] = JU.PT.parseTokenChecked(line, cchLine, next); + +return tokens; +}, "~S,~N"); +c$.countChar = Clazz_defineMethod(c$, "countChar", +function(line, c){ +var n = 0; +for (var i = line.lastIndexOf(c) + 1; --i >= 0; ) if (line.charAt(i) == c) n++; + +return n; +}, "~S,~S"); +c$.countTokens = Clazz_defineMethod(c$, "countTokens", +function(line, ich){ +var tokenCount = 0; +if (line != null) { +var ichMax = line.length; +while (true) { +while (ich < ichMax && JU.PT.isWhiteSpace(line, ich)) ++ich; + +if (ich == ichMax) break; +++tokenCount; +do { +++ich; +} while (ich < ichMax && !JU.PT.isWhiteSpace(line, ich)); +} +}return tokenCount; +}, "~S,~N"); +c$.parseTokenNext = Clazz_defineMethod(c$, "parseTokenNext", +function(str, next){ +var cch = str.length; +return (next[0] < 0 || next[0] >= cch ? null : JU.PT.parseTokenChecked(str, cch, next)); +}, "~S,~A"); +c$.parseTokenRange = Clazz_defineMethod(c$, "parseTokenRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +return (next[0] < 0 || next[0] >= ichMax ? null : JU.PT.parseTokenChecked(str, ichMax, next)); +}, "~S,~N,~A"); +c$.parseTokenChecked = Clazz_defineMethod(c$, "parseTokenChecked", +function(str, ichMax, next){ +var ich = next[0]; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var ichNonWhite = ich; +while (ich < ichMax && !JU.PT.isWhiteSpace(str, ich)) ++ich; + +next[0] = ich; +return (ichNonWhite == ich ? null : str.substring(ichNonWhite, ich)); +}, "~S,~N,~A"); +c$.parseTrimmedChecked = Clazz_defineMethod(c$, "parseTrimmedChecked", +function(str, ich, ichMax){ +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var ichLast = ichMax - 1; +while (ichLast >= ich && JU.PT.isWhiteSpace(str, ichLast)) --ichLast; + +return (ichLast < ich ? "" : str.substring(ich, ichLast + 1)); +}, "~S,~N,~N"); +c$.dVal = Clazz_defineMethod(c$, "dVal", +function(s){ +{ +if(s==null) +throw new NumberFormatException("null"); +var d=parseFloat(s); +if(isNaN(d)) +throw new NumberFormatException("Not a Number : "+s); +return d +}}, "~S"); +c$.fVal = Clazz_defineMethod(c$, "fVal", +function(s){ +{ +return this.dVal(s); +}}, "~S"); +c$.parseIntRange = Clazz_defineMethod(c$, "parseIntRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +return (next[0] < 0 || next[0] >= ichMax ? -2147483648 : JU.PT.parseIntChecked(str, ichMax, next)); +}, "~S,~N,~A"); +c$.parseFloatArrayData = Clazz_defineMethod(c$, "parseFloatArrayData", +function(tokens, data){ +JU.PT.parseFloatArrayDataN(tokens, data, data.length); +}, "~A,~A"); +c$.parseFloatArrayDataN = Clazz_defineMethod(c$, "parseFloatArrayDataN", +function(tokens, data, nData){ +for (var i = nData; --i >= 0; ) data[i] = (i >= tokens.length ? NaN : JU.PT.parseFloat(tokens[i])); + +}, "~A,~A,~N"); +c$.split = Clazz_defineMethod(c$, "split", +function(text, run){ +if (text.length == 0) return new Array(0); +var n = 1; +var i = text.indexOf(run); +var lines; +var runLen = run.length; +if (i < 0 || runLen == 0) { +lines = new Array(1); +lines[0] = text; +return lines; +}var len = text.length - runLen; +for (; i >= 0 && i < len; n++) i = text.indexOf(run, i + runLen); + +lines = new Array(n); +i = 0; +var ipt = 0; +var pt = 0; +for (; (ipt = text.indexOf(run, i)) >= 0 && pt + 1 < n; ) { +lines[pt++] = text.substring(i, ipt); +i = ipt + runLen; +} +if (text.indexOf(run, len) != len) len += runLen; +lines[pt] = text.substring(i, len); +return lines; +}, "~S,~S"); +c$.getQuotedStringAt = Clazz_defineMethod(c$, "getQuotedStringAt", +function(line, ipt0){ +var next = Clazz_newIntArray(-1, [ipt0]); +return JU.PT.getQuotedStringNext(line, next); +}, "~S,~N"); +c$.getQuotedStringNext = Clazz_defineMethod(c$, "getQuotedStringNext", +function(line, next){ +var i = next[0]; +if (i < 0 || (i = line.indexOf("\"", i)) < 0) return ""; +var pt = i + 1; +var len = line.length; +while (++i < len && line.charAt(i) != '"') if (line.charAt(i) == '\\') i++; + +next[0] = i + 1; +return line.substring(pt, i); +}, "~S,~A"); +c$.getQuotedOrUnquotedAttribute = Clazz_defineMethod(c$, "getQuotedOrUnquotedAttribute", +function(line, key){ +if (line == null || key == null) return null; +var pt = line.toLowerCase().indexOf(key.toLowerCase() + "="); +if (pt < 0 || (pt = pt + key.length + 1) >= line.length) return ""; +var c = line.charAt(pt); +switch ((c).charCodeAt(0)) { +case 39: +case 34: +pt++; +break; +default: +c = ' '; +line += " "; +} +var pt1 = line.indexOf(c, pt); +return (pt1 < 0 ? null : line.substring(pt, pt1)); +}, "~S,~S"); +c$.getCSVString = Clazz_defineMethod(c$, "getCSVString", +function(line, next){ +var i = next[1]; +if (i < 0 || (i = line.indexOf("\"", i)) < 0) return null; +var pt = next[0] = i; +var len = line.length; +var escaped = false; +var haveEscape = false; +while (++i < len && (line.charAt(i) != '"' || (escaped = (i + 1 < len && line.charAt(i + 1) == '"')))) if (escaped) { +escaped = false; +haveEscape = true; +i++; +} +if (i >= len) { +next[1] = -1; +return null; +}next[1] = i + 1; +var s = line.substring(pt + 1, i); +return (haveEscape ? JU.PT.rep(JU.PT.rep(s, "\"\"", "\0"), "\0", "\"") : s); +}, "~S,~A"); +c$.isOneOf = Clazz_defineMethod(c$, "isOneOf", +function(key, semiList){ +if (semiList.length == 0) return false; +if (semiList.charAt(0) != ';') semiList = ";" + semiList + ";"; +return key.indexOf(";") < 0 && semiList.indexOf(';' + key + ';') >= 0; +}, "~S,~S"); +c$.getQuotedAttribute = Clazz_defineMethod(c$, "getQuotedAttribute", +function(info, name){ +var i = info.indexOf(name + "="); +return (i < 0 ? null : JU.PT.getQuotedStringAt(info, i)); +}, "~S,~S"); +c$.approx = Clazz_defineMethod(c$, "approx", +function(f, n){ +return Math.round(f * n) / n; +}, "~N,~N"); +c$.rep = Clazz_defineMethod(c$, "rep", +function(str, strFrom, strTo){ +if (str == null || strFrom.length == 0 || str.indexOf(strFrom) < 0) return str; +var isOnce = (strTo.indexOf(strFrom) >= 0); +do { +str = str.$replace(strFrom, strTo); +} while (!isOnce && str.indexOf(strFrom) >= 0); +return str; +}, "~S,~S,~S"); +c$.formatF = Clazz_defineMethod(c$, "formatF", +function(value, width, precision, alignLeft, zeroPad){ +return JU.PT.formatS(JU.DF.formatDecimal(value, precision), width, 0, alignLeft, zeroPad); +}, "~N,~N,~N,~B,~B"); +c$.formatD = Clazz_defineMethod(c$, "formatD", +function(value, width, precision, alignLeft, zeroPad){ +return JU.PT.formatS(JU.DF.formatDecimal(value, -1 - precision), width, 0, alignLeft, zeroPad); +}, "~N,~N,~N,~B,~B"); +c$.formatS = Clazz_defineMethod(c$, "formatS", +function(value, width, precision, alignLeft, zeroPad){ +if (value == null) return ""; +var len = value.length; +if (precision != 2147483647 && precision > 0 && precision < len) value = value.substring(0, precision); + else if (precision < 0 && len + precision >= 0) value = value.substring(len + precision + 1); +var padLength = width - value.length; +if (padLength <= 0) return value; +var isNeg = (zeroPad && !alignLeft && value.charAt(0) == '-'); +var padChar = (zeroPad ? '0' : ' '); +var padChar0 = (isNeg ? '-' : padChar); +var sb = new JU.SB(); +if (alignLeft) sb.append(value); +sb.appendC(padChar0); +for (var i = padLength; --i > 0; ) sb.appendC(padChar); + +if (!alignLeft) sb.append(isNeg ? padChar + value.substring(1) : value); +return sb.toString(); +}, "~S,~N,~N,~B,~B"); +c$.replaceWithCharacter = Clazz_defineMethod(c$, "replaceWithCharacter", +function(str, strFrom, chTo){ +if (str == null) return null; +for (var i = strFrom.length; --i >= 0; ) str = str.$replace(strFrom.charAt(i), chTo); + +return str; +}, "~S,~S,~S"); +c$.replaceAllCharacters = Clazz_defineMethod(c$, "replaceAllCharacters", +function(str, strFrom, strTo){ +for (var i = strFrom.length; --i >= 0; ) { +var chFrom = strFrom.substring(i, i + 1); +str = JU.PT.rep(str, chFrom, strTo); +} +return str; +}, "~S,~S,~S"); +c$.trim = Clazz_defineMethod(c$, "trim", +function(str, chars){ +if (str == null || str.length == 0) return str; +if (chars.length == 0) return str.trim(); +var len = str.length; +var k = 0; +while (k < len && chars.indexOf(str.charAt(k)) >= 0) k++; + +var m = str.length - 1; +while (m > k && chars.indexOf(str.charAt(m)) >= 0) m--; + +return str.substring(k, m + 1); +}, "~S,~S"); +c$.trimQuotes = Clazz_defineMethod(c$, "trimQuotes", +function(value){ +return (value != null && value.length > 1 && value.startsWith("\"") && value.endsWith("\"") ? value.substring(1, value.length - 1) : value); +}, "~S"); +c$.isNonStringPrimitive = Clazz_defineMethod(c$, "isNonStringPrimitive", +function(info){ +{ +if(typeof info == "number" || typeof info == "boolean") { +return true; +} +}return Clazz_instanceOf(info, Number) || Clazz_instanceOf(info, Boolean); +}, "~O"); +c$.toJSON = Clazz_defineMethod(c$, "toJSON", +function(infoType, info){ +if (info == null) return JU.PT.packageJSON(infoType, null); +if (JU.PT.isNonStringPrimitive(info)) return JU.PT.packageJSON(infoType, info.toString()); +var s = null; +var sb = null; +while (true) { +if ((typeof(info)=='string')) { +s = info; +{ +if (typeof s == "undefined") s = "null" +}if (s.indexOf("{\"") != 0) { +s = JU.PT.esc(s); +}break; +}if (Clazz_instanceOf(info,"javajs.api.JSONEncodable")) { +if ((s = (info).toJSON()) == null) s = "null"; +break; +}sb = new JU.SB(); +if (Clazz_instanceOf(info,"java.util.Map")) { +sb.append("{ "); +var sep = ""; +var keys = (info).keySet(); +var skeys = keys.toArray( new Array(keys.size())); +java.util.Arrays.sort(skeys); +for (var i = 0, n = skeys.length; i < n; i++) { +var key = skeys[i]; +if (key == null) key = "null"; +sb.append(sep).append(JU.PT.packageJSON(key, JU.PT.toJSON(null, (info).get(key)))); +sep = ","; +} +sb.append(" }"); +break; +}if (Clazz_instanceOf(info,"JU.Lst")) { +sb.append("[ "); +var n = (info).size(); +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.append(JU.PT.toJSON(null, (info).get(i))); +} +sb.append(" ]"); +break; +}if (Clazz_instanceOf(info,"JU.M34")) { +var len = (Clazz_instanceOf(info,"JU.M4") ? 4 : 3); +var x = Clazz_newFloatArray (len, 0); +var m = info; +sb.appendC('['); +for (var i = 0; i < len; i++) { +if (i > 0) sb.appendC(','); +m.getRow(i, x); +sb.append(JU.PT.toJSON(null, x)); +} +sb.appendC(']'); +break; +}s = JU.PT.nonArrayString(info); +if (s == null) { +sb.append("["); +var n = JU.AU.getLength(info); +var o = null; +{ +o = info[0]; +typeof o != "number" && typeof 0 != "boolean" && (o = null); +}if (o != null) { +sb.appendO(info); +} else { +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.append(JU.PT.toJSON(null, JU.PT.arrayGet(info, i))); +} +}sb.append("]"); +break; +}info = info.toString(); +} +return JU.PT.packageJSON(infoType, (s == null ? sb.toString() : s)); +}, "~S,~O"); +c$.arrayGet = Clazz_defineMethod(c$, "arrayGet", +function(info, i){ +{ +return info[i]; +}}, "~O,~N"); +c$.nonArrayString = Clazz_defineMethod(c$, "nonArrayString", +function(x){ +{ +return (x.constructor == Array || x.BYTES_PER_ELEMENT ? null : x.toString()); +}}, "~O"); +c$.byteArrayToJSON = Clazz_defineMethod(c$, "byteArrayToJSON", +function(data){ +var sb = new JU.SB(); +sb.append("["); +var n = data.length; +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.appendI(data[i] & 0xFF); +} +sb.append("]"); +return sb.toString(); +}, "~A"); +c$.packageJSON = Clazz_defineMethod(c$, "packageJSON", +function(infoType, info){ +return (infoType == null ? info : "\"" + infoType + "\": " + info); +}, "~S,~S"); +c$.escapeUrl = Clazz_defineMethod(c$, "escapeUrl", +function(url){ +url = JU.PT.rep(url, "\n", ""); +url = JU.PT.rep(url, "%", "%25"); +url = JU.PT.rep(url, "#", "%23"); +url = JU.PT.rep(url, "[", "%5B"); +url = JU.PT.rep(url, "\\", "%5C"); +url = JU.PT.rep(url, "]", "%5D"); +url = JU.PT.rep(url, " ", "%20"); +return url; +}, "~S"); +c$.esc = Clazz_defineMethod(c$, "esc", +function(str){ +if (str == null || str.length == 0) return "\"\""; +var haveEscape = false; +var i = 0; +for (; i < "\\\\\tt\rr\nn\"\"".length; i += 2) if (str.indexOf("\\\\\tt\rr\nn\"\"".charAt(i)) >= 0) { +haveEscape = true; +break; +} +if (haveEscape) while (i < "\\\\\tt\rr\nn\"\"".length) { +var pt = -1; +var ch = "\\\\\tt\rr\nn\"\"".charAt(i++); +var ch2 = "\\\\\tt\rr\nn\"\"".charAt(i++); +var sb = new JU.SB(); +var pt0 = 0; +while ((pt = str.indexOf(ch, pt + 1)) >= 0) { +sb.append(str.substring(pt0, pt)).appendC('\\').appendC(ch2); +pt0 = pt + 1; +} +sb.append(str.substring(pt0, str.length)); +str = sb.toString(); +} +return "\"" + JU.PT.escUnicode(str) + "\""; +}, "~S"); +c$.escUnicode = Clazz_defineMethod(c$, "escUnicode", +function(str){ +for (var i = str.length; --i >= 0; ) if ((str.charAt(i)).charCodeAt(0) > 0x7F) { +var s = "0000" + Integer.toHexString(str.charAt(i).charCodeAt(0)); +str = str.substring(0, i) + "\\u" + s.substring(s.length - 4) + str.substring(i + 1); +} +return str; +}, "~S"); +c$.escF = Clazz_defineMethod(c$, "escF", +function(f){ +var sf = "" + f; +{ +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0 && sf.indexOf("N") < 0 && sf.indexOf("n") < 0) +sf += ".0"; +}return sf; +}, "~N"); +c$.join = Clazz_defineMethod(c$, "join", +function(s, c, i0){ +if (s.length < i0) return null; +var sb = new JU.SB(); +sb.append(s[i0++]); +for (var i = i0; i < s.length; i++) sb.appendC(c).append(s[i]); + +return sb.toString(); +}, "~A,~S,~N"); +c$.isLike = Clazz_defineMethod(c$, "isLike", +function(a, b){ +var areEqual = a.equals(b); +if (areEqual) return true; +var isStart = b.startsWith("*"); +var isEnd = b.endsWith("*"); +return (!isStart && !isEnd) ? areEqual : isStart && isEnd ? b.length == 1 || a.contains(b.substring(1, b.length - 1)) : isStart ? a.endsWith(b.substring(1)) : a.startsWith(b.substring(0, b.length - 1)); +}, "~S,~S"); +c$.getMapValueNoCase = Clazz_defineMethod(c$, "getMapValueNoCase", +function(h, key){ +if ("this".equals(key)) return h; +var val = h.get(key); +if (val == null) for (var e, $e = h.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getKey().equalsIgnoreCase(key)) return e.getValue(); + +return val; +}, "java.util.Map,~S"); +c$.clean = Clazz_defineMethod(c$, "clean", +function(s){ +return JU.PT.rep(JU.PT.replaceAllCharacters(s, " \t\n\r", " "), " ", " ").trim(); +}, "~S"); +c$.fdup = Clazz_defineMethod(c$, "fdup", +function(f, pt, n){ +var ch; +var count = 0; +for (var i = pt; --i >= 1; ) { +if (JU.PT.isDigit(ch = f.charAt(i))) continue; +switch ((ch).charCodeAt(0)) { +case 46: +if (count++ != 0) return f; +continue; +case 45: +if (i != 1 && f.charAt(i - 1) != '.') return f; +continue; +default: +return f; +} +} +var s = f.substring(0, pt + 1); +var sb = new JU.SB(); +for (var i = 0; i < n; i++) sb.append(s); + +sb.append(f.substring(pt + 1)); +return sb.toString(); +}, "~S,~N,~N"); +c$.formatString = Clazz_defineMethod(c$, "formatString", +function(strFormat, key, strT, floatT, doubleT, doOne){ +if (strFormat == null) return null; +if ("".equals(strFormat)) return ""; +var len = key.length; +if (strFormat.indexOf("%") < 0 || len == 0 || strFormat.indexOf(key) < 0) return strFormat; +var strLabel = ""; +var ich; +var ichPercent; +var ichKey; +for (ich = 0; (ichPercent = strFormat.indexOf('%', ich)) >= 0 && (ichKey = strFormat.indexOf(key, ichPercent + 1)) >= 0; ) { +if (ich != ichPercent) strLabel += strFormat.substring(ich, ichPercent); +ich = ichPercent + 1; +if (ichKey > ichPercent + 6) { +strLabel += '%'; +continue; +}try { +var alignLeft = false; +if (strFormat.charAt(ich) == '-') { +alignLeft = true; +++ich; +}var zeroPad = false; +if (strFormat.charAt(ich) == '0') { +zeroPad = true; +++ich; +}var ch; +var width = 0; +while ((ch = strFormat.charAt(ich)) >= '0' && (ch <= '9')) { +width = (10 * width) + (ch.charCodeAt(0) - 48); +++ich; +} +var precision = 2147483647; +var isExponential = false; +if (strFormat.charAt(ich) == '.') { +++ich; +if ((ch = strFormat.charAt(ich)) == '-') { +isExponential = true; +++ich; +}if ((ch = strFormat.charAt(ich)) >= '0' && ch <= '9') { +precision = ch.charCodeAt(0) - 48; +++ich; +if ((ch = strFormat.charAt(ich)) >= '0' && ch <= '9') { +precision = 10 * precision + (ch.charCodeAt(0) - 48); +++ich; +}}if (isExponential) precision = -precision; +}var st = strFormat.substring(ich, ich + len); +if (!st.equals(key)) { +ich = ichPercent + 1; +strLabel += '%'; +continue; +}ich += len; +if (!Float.isNaN(floatT)) strLabel += JU.PT.formatF(floatT, width, precision, alignLeft, zeroPad); + else if (strT != null) strLabel += JU.PT.formatS(strT, width, precision < 0 ? precision - 1 : precision, alignLeft, zeroPad); + else if (!Double.isNaN(doubleT)) strLabel += JU.PT.formatD(doubleT, width, precision - 1, alignLeft, zeroPad); +if (doOne) break; +} catch (ioobe) { +if (Clazz_exceptionOf(ioobe,"IndexOutOfBoundsException")){ +ich = ichPercent; +break; +} else { +throw ioobe; +} +} +} +strLabel += strFormat.substring(ich); +return strLabel; +}, "~S,~S,~S,~N,~N,~B"); +c$.formatStringS = Clazz_defineMethod(c$, "formatStringS", +function(strFormat, key, strT){ +return JU.PT.formatString(strFormat, key, strT, NaN, NaN, false); +}, "~S,~S,~S"); +c$.formatStringF = Clazz_defineMethod(c$, "formatStringF", +function(strFormat, key, floatT){ +return JU.PT.formatString(strFormat, key, null, floatT, NaN, false); +}, "~S,~S,~N"); +c$.formatStringI = Clazz_defineMethod(c$, "formatStringI", +function(strFormat, key, intT){ +return JU.PT.formatString(strFormat, key, "" + intT, NaN, NaN, false); +}, "~S,~S,~N"); +c$.sprintf = Clazz_defineMethod(c$, "sprintf", +function(strFormat, list, values){ +if (values == null) return strFormat; +var n = list.length; +if (n == values.length) try { +for (var o = 0; o < n; o++) { +if (values[o] == null) continue; +switch ((list.charAt(o)).charCodeAt(0)) { +case 115: +strFormat = JU.PT.formatString(strFormat, "s", values[o], NaN, NaN, true); +break; +case 102: +strFormat = JU.PT.formatString(strFormat, "f", null, (values[o]).floatValue(), NaN, true); +break; +case 105: +strFormat = JU.PT.formatString(strFormat, "d", "" + values[o], NaN, NaN, true); +strFormat = JU.PT.formatString(strFormat, "i", "" + values[o], NaN, NaN, true); +break; +case 100: +strFormat = JU.PT.formatString(strFormat, "e", null, NaN, (values[o]).doubleValue(), true); +break; +case 112: +var pVal = values[o]; +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.x, NaN, true); +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.y, NaN, true); +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.z, NaN, true); +break; +case 113: +var qVal = values[o]; +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.x, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.y, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.z, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.w, NaN, true); +break; +case 83: +var sVal = values[o]; +for (var i = 0; i < sVal.length; i++) strFormat = JU.PT.formatString(strFormat, "s", sVal[i], NaN, NaN, true); + +break; +case 70: +var fVal = values[o]; +for (var i = 0; i < fVal.length; i++) strFormat = JU.PT.formatString(strFormat, "f", null, fVal[i], NaN, true); + +break; +case 73: +var iVal = values[o]; +for (var i = 0; i < iVal.length; i++) strFormat = JU.PT.formatString(strFormat, "d", "" + iVal[i], NaN, NaN, true); + +for (var i = 0; i < iVal.length; i++) strFormat = JU.PT.formatString(strFormat, "i", "" + iVal[i], NaN, NaN, true); + +break; +case 68: +var dVal = values[o]; +for (var i = 0; i < dVal.length; i++) strFormat = JU.PT.formatString(strFormat, "e", null, NaN, dVal[i], true); + +} +} +return JU.PT.rep(strFormat, "%%", "%"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +System.out.println("TextFormat.sprintf error " + list + " " + strFormat); +return JU.PT.rep(strFormat, "%", "?"); +}, "~S,~S,~A"); +c$.formatCheck = Clazz_defineMethod(c$, "formatCheck", +function(strFormat){ +if (strFormat == null || strFormat.indexOf('p') < 0 && strFormat.indexOf('q') < 0) return strFormat; +strFormat = JU.PT.rep(strFormat, "%%", "\1"); +strFormat = JU.PT.rep(strFormat, "%p", "%6.2p"); +strFormat = JU.PT.rep(strFormat, "%q", "%6.2q"); +var format = JU.PT.split(strFormat, "%"); +var sb = new JU.SB(); +sb.append(format[0]); +for (var i = 1; i < format.length; i++) { +var f = "%" + format[i]; +var pt; +if (f.length >= 3) { +if ((pt = f.indexOf('p')) >= 0) f = JU.PT.fdup(f, pt, 3); +if ((pt = f.indexOf('q')) >= 0) f = JU.PT.fdup(f, pt, 4); +}sb.append(f); +} +return sb.toString().$replace('\1', '%'); +}, "~S"); +c$.leftJustify = Clazz_defineMethod(c$, "leftJustify", +function(s, s1, s2){ +s.append(s2); +var n = s1.length - s2.length; +if (n > 0) s.append(s1.substring(0, n)); +}, "JU.SB,~S,~S"); +c$.rightJustify = Clazz_defineMethod(c$, "rightJustify", +function(s, s1, s2){ +var n = s1.length - s2.length; +if (n > 0) s.append(s1.substring(0, n)); +s.append(s2); +}, "JU.SB,~S,~S"); +c$.safeTruncate = Clazz_defineMethod(c$, "safeTruncate", +function(f, n){ +if (f > -0.001 && f < 0.001) f = 0; +return (f + " ").substring(0, n); +}, "~N,~N"); +c$.isWild = Clazz_defineMethod(c$, "isWild", +function(s){ +return s != null && (s.indexOf("*") >= 0 || s.indexOf("?") >= 0); +}, "~S"); +c$.isMatch = Clazz_defineMethod(c$, "isMatch", +function(search, match, checkStar, allowInitialStar){ +if (search.equals(match)) return true; +var mLen = match.length; +if (mLen == 0) return false; +var isStar0 = (checkStar && allowInitialStar ? match.charAt(0) == '*' : false); +if (mLen == 1 && isStar0) return true; +var isStar1 = (checkStar && match.endsWith("*")); +var haveQ = (match.indexOf('?') >= 0); +if (!haveQ) { +if (isStar0) return (isStar1 ? (mLen < 3 || search.indexOf(match.substring(1, mLen - 1)) >= 0) : search.endsWith(match.substring(1))); + else if (isStar1) return search.startsWith(match.substring(0, mLen - 1)); +}var sLen = search.length; +var qqqq = "????"; +var nq = 4; +while (nq < sLen) { +qqqq += qqqq; +nq += 4; +} +if (checkStar) { +if (isStar0) { +match = qqqq + match.substring(1); +mLen += nq - 1; +}if (isStar1) { +match = match.substring(0, mLen - 1) + qqqq; +mLen += nq - 1; +}}if (mLen < sLen) return false; +var ich = 0; +while (mLen > sLen) { +if (allowInitialStar && match.charAt(ich) == '?') { +++ich; +} else if (match.charAt(ich + mLen - 1) != '?') { +return false; +}--mLen; +} +for (var i = sLen; --i >= 0; ) { +var chm = match.charAt(ich + i); +if (chm == '?') continue; +var chs = search.charAt(i); +if (chm != chs && (chm != '\1' || chs != '?')) return false; +} +return true; +}, "~S,~S,~B,~B"); +c$.replaceQuotedStrings = Clazz_defineMethod(c$, "replaceQuotedStrings", +function(s, list, newList){ +var n = list.size(); +for (var i = 0; i < n; i++) { +var name = list.get(i); +var newName = newList.get(i); +if (!newName.equals(name)) s = JU.PT.rep(s, "\"" + name + "\"", "\"" + newName + "\""); +} +return s; +}, "~S,JU.Lst,JU.Lst"); +c$.replaceStrings = Clazz_defineMethod(c$, "replaceStrings", +function(s, list, newList){ +var n = list.size(); +for (var i = 0; i < n; i++) { +var name = list.get(i); +var newName = newList.get(i); +if (!newName.equals(name)) s = JU.PT.rep(s, name, newName); +} +return s; +}, "~S,JU.Lst,JU.Lst"); +c$.isDigit = Clazz_defineMethod(c$, "isDigit", +function(ch){ +var c = (ch).charCodeAt(0); +return (48 <= c && c <= 57); +}, "~S"); +c$.isUpperCase = Clazz_defineMethod(c$, "isUpperCase", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90); +}, "~S"); +c$.isLowerCase = Clazz_defineMethod(c$, "isLowerCase", +function(ch){ +var c = (ch).charCodeAt(0); +return (97 <= c && c <= 122); +}, "~S"); +c$.isLetter = Clazz_defineMethod(c$, "isLetter", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122); +}, "~S"); +c$.isLetterOrDigit = Clazz_defineMethod(c$, "isLetterOrDigit", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57); +}, "~S"); +c$.isWhitespace = Clazz_defineMethod(c$, "isWhitespace", +function(ch){ +var c = (ch).charCodeAt(0); +return (c >= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd); +}, "~S"); +c$.fixPtFloats = Clazz_defineMethod(c$, "fixPtFloats", +function(pt, f){ +pt.x = Math.round(pt.x * f) / f; +pt.y = Math.round(pt.y * f) / f; +pt.z = Math.round(pt.z * f) / f; +}, "JU.T3,~N"); +c$.fixFloat = Clazz_defineMethod(c$, "fixFloat", +function(d, f){ +return (Math.round(d * f) / f); +}, "~N,~N"); +c$.fixDouble = Clazz_defineMethod(c$, "fixDouble", +function(d, f){ +return Math.round(d * f) / f; +}, "~N,~N"); +c$.parseFloatFraction = Clazz_defineMethod(c$, "parseFloatFraction", +function(s){ +var pt = s.indexOf("/"); +return (pt < 0 ? JU.PT.parseFloat(s) : JU.PT.parseFloat(s.substring(0, pt)) / JU.PT.parseFloat(s.substring(pt + 1))); +}, "~S"); +c$.tensScale = Clazz_newFloatArray(-1, [10, 100, 1000, 10000, 100000, 1000000]); +c$.decimalScale = Clazz_newFloatArray(-1, [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, 0.00000001, 0.000000001, 0.0000000001, 0.00000000001, 0.000000000001, 0.0000000000001, 0.00000000000001, 0.000000000000001]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sb = null; +this.s = null; +Clazz_instantialize(this, arguments);}, JU, "SB", null); +Clazz_makeConstructor(c$, +function(){ +{ +this.s = ""; +}}); +c$.newN = Clazz_defineMethod(c$, "newN", +function(n){ +{ +return new JU.SB(); +}}, "~N"); +c$.newS = Clazz_defineMethod(c$, "newS", +function(s){ +{ +var sb = new JU.SB(); +sb.s = s; +return sb; +}}, "~S"); +Clazz_defineMethod(c$, "append", +function(s){ +{ +this.s += s +}return this; +}, "~S"); +Clazz_defineMethod(c$, "appendC", +function(c){ +{ +this.s += c; +}return this; +}, "~S"); +Clazz_defineMethod(c$, "appendI", +function(i){ +{ +this.s += i +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendB", +function(b){ +{ +this.s += b +}return this; +}, "~B"); +Clazz_defineMethod(c$, "appendF", +function(f){ +{ +var sf = "" + f; +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0) +sf += ".0" ; +this.s += sf; +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendD", +function(d){ +{ +var sf = "" + d; +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0) +sf += ".0" ; +this.s += sf; +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendSB", +function(buf){ +{ +this.s += buf.s; +}return this; +}, "JU.SB"); +Clazz_defineMethod(c$, "appendO", +function(data){ +if (data != null) { +{ +this.s += data.toString(); +}}return this; +}, "~O"); +Clazz_defineMethod(c$, "appendCB", +function(cb, off, len){ +{ +this.s += cb.slice(off,off+len).join(""); +}}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +{ +return this.s; +}}); +Clazz_defineMethod(c$, "length", +function(){ +{ +return this.s.length; +}}); +Clazz_defineMethod(c$, "indexOf", +function(s){ +{ +return this.s.indexOf(s); +}}, "~S"); +Clazz_defineMethod(c$, "charAt", +function(i){ +{ +return this.s.charAt(i); +}}, "~N"); +Clazz_defineMethod(c$, "charCodeAt", +function(i){ +{ +return this.s.charCodeAt(i); +}}, "~N"); +Clazz_defineMethod(c$, "setLength", +function(n){ +{ +this.s = this.s.substring(0, n); +}}, "~N"); +Clazz_defineMethod(c$, "lastIndexOf", +function(s){ +{ +return this.s.lastIndexOf(s); +}}, "~S"); +Clazz_defineMethod(c$, "indexOf2", +function(s, i){ +{ +return this.s.indexOf(s, i); +}}, "~S,~N"); +Clazz_defineMethod(c$, "substring", +function(i){ +{ +return this.s.substring(i); +}}, "~N"); +Clazz_defineMethod(c$, "substring2", +function(i, j){ +{ +return this.s.substring(i, j); +}}, "~N,~N"); +Clazz_defineMethod(c$, "toBytes", +function(off, len){ +if (len == 0) return Clazz_newByteArray (0, 0); +var cs; +{ +cs = "UTF-8"; +}return (len > 0 ? this.substring2(off, off + len) : off == 0 ? this.toString() : this.substring2(off, this.length() - off)).getBytes(cs); +}, "~N,~N"); +Clazz_defineMethod(c$, "replace", +function(start, end, str){ +{ +this.s = this.s.substring(0, start) + str + this.s.substring(end); +}}, "~N,~N,~S"); +Clazz_defineMethod(c$, "insert", +function(offset, str){ +this.replace(offset, offset, str); +}, "~N,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.JSONEncodable"], "JU.T3", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +Clazz_instantialize(this, arguments);}, JU, "T3", null, [javajs.api.JSONEncodable, java.io.Serializable]); +Clazz_defineMethod(c$, "set", +function(x, y, z){ +this.x = x; +this.y = y; +this.z = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setA", +function(t){ +this.x = t[0]; +this.y = t[1]; +this.z = t[2]; +}, "~A"); +Clazz_defineMethod(c$, "setT", +function(t1){ +this.x = t1.x; +this.y = t1.y; +this.z = t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "add2", +function(t1, t2){ +this.x = t1.x + t2.x; +this.y = t1.y + t2.y; +this.z = t1.z + t2.z; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "add", +function(t1){ +this.x += t1.x; +this.y += t1.y; +this.z += t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "distanceSquared", +function(p1){ +var dx = this.x - p1.x; +var dy = this.y - p1.y; +var dz = this.z - p1.z; +return (dx * dx + dy * dy + dz * dz); +}, "JU.T3"); +Clazz_defineMethod(c$, "distance", +function(p1){ +return Math.sqrt(this.distanceSquared(p1)); +}, "JU.T3"); +Clazz_defineMethod(c$, "sub2", +function(t1, t2){ +this.x = t1.x - t2.x; +this.y = t1.y - t2.y; +this.z = t1.z - t2.z; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "sub", +function(t1){ +this.x -= t1.x; +this.y -= t1.y; +this.z -= t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "scale", +function(s){ +this.x *= s; +this.y *= s; +this.z *= s; +}, "~N"); +Clazz_defineMethod(c$, "add3", +function(a, b, c){ +this.x += a; +this.y += b; +this.z += c; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "scaleT", +function(p){ +this.x *= p.x; +this.y *= p.y; +this.z *= p.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "scaleAdd2", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3,JU.T3"); +Clazz_defineMethod(c$, "ave", +function(a, b){ +this.x = (a.x + b.x) / 2; +this.y = (a.y + b.y) / 2; +this.z = (a.z + b.z) / 2; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "dot", +function(v){ +return this.x * v.x + this.y * v.y + this.z * v.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "lengthSquared", +function(){ +return this.x * this.x + this.y * this.y + this.z * this.z; +}); +Clazz_defineMethod(c$, "length", +function(){ +return Math.sqrt(this.lengthSquared()); +}); +Clazz_defineMethod(c$, "normalize", +function(){ +var d = this.length(); +this.x /= d; +this.y /= d; +this.z /= d; +}); +Clazz_defineMethod(c$, "cross", +function(v1, v2){ +this.set(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x); +}, "JU.T3,JU.T3"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var bits = 1; +bits = 31 * bits + JU.T3.floatToIntBits(this.x); +bits = 31 * bits + JU.T3.floatToIntBits(this.y); +bits = 31 * bits + JU.T3.floatToIntBits(this.z); +return (bits ^ (bits >> 32)); +}); +c$.floatToIntBits = Clazz_defineMethod(c$, "floatToIntBits", +function(x){ +return (x == 0 ? 0 : Float.floatToIntBits(x)); +}, "~N"); +Clazz_overrideMethod(c$, "equals", +function(t1){ +if (!(Clazz_instanceOf(t1,"JU.T3"))) return false; +var t2 = t1; +return (this.x == t2.x && this.y == t2.y && this.z == t2.z); +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "{" + this.x + ", " + this.y + ", " + this.z + "}"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + "," + this.y + "," + this.z + "]"; +}); +Clazz_defineMethod(c$, "setP", +function(t){ +this.set(t.x, t.y, t.z); +return this; +}, "JU.T3"); +Clazz_defineMethod(c$, "putP", +function(t){ +t.set(this.x, this.y, this.z); +return t; +}, "JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +Clazz_instantialize(this, arguments);}, JU, "T3i", null, java.io.Serializable); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(x, y, z){ +this.x = x; +this.y = y; +this.z = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setT", +function(t1){ +this.x = t1.x; +this.y = t1.y; +this.z = t1.z; +}, "JU.T3i"); +Clazz_defineMethod(c$, "add", +function(t){ +this.x += t.x; +this.y += t.y; +this.z += t.z; +}, "JU.T3i"); +Clazz_defineMethod(c$, "scaleAdd", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3i,JU.T3i"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.x ^ this.y ^ this.z; +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.T3i"))) return false; +var t = o; +return (this.x == t.x && this.y == t.y && this.z == t.z); +}, "~O"); +Clazz_defineMethod(c$, "asString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ")"; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.asString(); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.T4", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.w = 0; +Clazz_instantialize(this, arguments);}, JU, "T4", JU.T3); +Clazz_defineMethod(c$, "set4", +function(x, y, z, w){ +this.x = x; +this.y = y; +this.z = z; +this.w = w; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "scale4", +function(s){ +this.scale(s); +this.w *= s; +}, "~N"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.x) ^ JU.T3.floatToIntBits(this.y) ^ JU.T3.floatToIntBits(this.z) ^ JU.T3.floatToIntBits(this.w); +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.T4"))) return false; +var t = o; +return (this.x == t.x && this.y == t.y && this.z == t.z && this.w == t.w); +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + ")"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.V3", null, function(){ +var c$ = Clazz_declareType(JU, "V3", JU.T3); +/*LV!1824 unnec constructor*/c$.newV = Clazz_defineMethod(c$, "newV", +function(t){ +return JU.V3.new3(t.x, t.y, t.z); +}, "JU.T3"); +c$.newVsub = Clazz_defineMethod(c$, "newVsub", +function(t1, t2){ +return JU.V3.new3(t1.x - t2.x, t1.y - t2.y, t1.z - t2.z); +}, "JU.T3,JU.T3"); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var v = new JU.V3(); +v.x = x; +v.y = y; +v.z = z; +return v; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "angle", +function(v1){ +var xx = this.y * v1.z - this.z * v1.y; +var yy = this.z * v1.x - this.x * v1.z; +var zz = this.x * v1.y - this.y * v1.x; +var cross = Math.sqrt(xx * xx + yy * yy + zz * zz); +return Math.abs(Math.atan2(cross, this.dot(v1))); +}, "JU.V3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericBinaryDocument", javajs.api.GenericBinaryDocumentReader); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericBinaryDocumentReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericZipTools"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericLineReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +(function(){ +var c$ = Clazz_declareInterface(javajs.api, "GenericCifDataParser"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +(function(){ +var c$ = Clazz_declareType(javajs.api, "Interface", null); +c$.getInterface = Clazz_defineMethod(c$, "getInterface", +function(name){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.data = null; +Clazz_instantialize(this, arguments);}, JU, "BArray", null); +Clazz_makeConstructor(c$, +function(data){ +this.data = data; +}, "~A"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (Clazz_instanceOf(o,"JU.BArray")) { +var d = (o).data; +if (d.length == this.data.length) { +for (var i = 0; i < d.length; i++) if (d[i] != this.data[i]) return false; + +return true; +}}return false; +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.data.hashCode(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return String.instantialize(this.data); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.cchBuf = 0; +this.ichCurrent = 0; +Clazz_instantialize(this, arguments);}, JU, "LimitedLineReader", null); +Clazz_makeConstructor(c$, +function(bufferedReader, readLimit){ +bufferedReader.mark(readLimit + 1); +this.buf = Clazz_newCharArray (readLimit, '\0'); +this.cchBuf = Math.max(bufferedReader.read(this.buf, 0, readLimit), 0); +this.ichCurrent = 0; +bufferedReader.reset(); +}, "java.io.BufferedReader,~N"); +Clazz_defineMethod(c$, "getHeader", +function(n){ +return (n == 0 ? String.instantialize(this.buf) : String.instantialize(this.buf, 0, Math.min(this.cchBuf, n))); +}, "~N"); +Clazz_defineMethod(c$, "readLineWithNewline", +function(){ +while (this.ichCurrent < this.cchBuf) { +var ichBeginningOfLine = this.ichCurrent; +var ch = String.fromCharCode(0); +while (this.ichCurrent < this.cchBuf && (ch = this.buf[this.ichCurrent++]) != '\r' && ch != '\n') { +} +if (ch == '\r' && this.ichCurrent < this.cchBuf && this.buf[this.ichCurrent] == '\n') ++this.ichCurrent; +var cchLine = this.ichCurrent - ichBeginningOfLine; +if (this.buf[ichBeginningOfLine] == '#') continue; +return String.instantialize(this.buf, ichBeginningOfLine, cchLine); +} +return ""; +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.a = null; +this.m = 0; +this.n = 0; +if (!Clazz_isClassDefined("JU.Matrix.LUDecomp")) { +JU.Matrix.$Matrix$LUDecomp$ (); +} +Clazz_instantialize(this, arguments);}, JU, "Matrix", null, Cloneable); +Clazz_makeConstructor(c$, +function(a, m, n){ +this.a = (a == null ? Clazz_newDoubleArray (m, n, 0) : a); +this.m = m; +this.n = n; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "getRowDimension", +function(){ +return this.m; +}); +Clazz_defineMethod(c$, "getColumnDimension", +function(){ +return this.n; +}); +Clazz_defineMethod(c$, "getArray", +function(){ +return this.a; +}); +Clazz_defineMethod(c$, "getArrayCopy", +function(){ +var x = Clazz_newDoubleArray (this.m, this.n, 0); +for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) x[i][j] = this.a[i][j]; + + +return x; +}); +Clazz_defineMethod(c$, "copy", +function(){ +var x = new JU.Matrix(null, this.m, this.n); +var c = x.a; +for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) c[i][j] = this.a[i][j]; + + +return x; +}); +Clazz_overrideMethod(c$, "clone", +function(){ +return this.copy(); +}); +Clazz_defineMethod(c$, "getSubmatrix", +function(i0, j0, nrows, ncols){ +var x = new JU.Matrix(null, nrows, ncols); +var xa = x.a; +for (var i = nrows; --i >= 0; ) for (var j = ncols; --j >= 0; ) xa[i][j] = this.a[i0 + i][j0 + j]; + + +return x; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getMatrixSelected", +function(r, n){ +var x = new JU.Matrix(null, r.length, n); +var xa = x.a; +for (var i = r.length; --i >= 0; ) { +var b = this.a[r[i]]; +for (var j = n; --j >= 0; ) xa[i][j] = b[j]; + +} +return x; +}, "~A,~N"); +Clazz_defineMethod(c$, "transpose", +function(){ +var x = new JU.Matrix(null, this.n, this.m); +var c = x.a; +for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) c[j][i] = this.a[i][j]; + + +return x; +}); +Clazz_defineMethod(c$, "add", +function(b){ +return this.scaleAdd(b, 1); +}, "JU.Matrix"); +Clazz_defineMethod(c$, "sub", +function(b){ +return this.scaleAdd(b, -1); +}, "JU.Matrix"); +Clazz_defineMethod(c$, "scaleAdd", +function(b, scale){ +var x = new JU.Matrix(null, this.m, this.n); +var xa = x.a; +var ba = b.a; +for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) xa[i][j] = ba[i][j] * scale + this.a[i][j]; + + +return x; +}, "JU.Matrix,~N"); +Clazz_defineMethod(c$, "mul", +function(b){ +if (b.m != this.n) return null; +var x = new JU.Matrix(null, this.m, b.n); +var xa = x.a; +var ba = b.a; +for (var j = b.n; --j >= 0; ) for (var i = this.m; --i >= 0; ) { +var arowi = this.a[i]; +var s = 0; +for (var k = this.n; --k >= 0; ) s += arowi[k] * ba[k][j]; + +xa[i][j] = s; +} + +return x; +}, "JU.Matrix"); +Clazz_defineMethod(c$, "inverse", +function(){ +return Clazz_innerTypeInstance(JU.Matrix.LUDecomp, this, null, this.m, this.n).solve(JU.Matrix.identity(this.m, this.m), this.n); +}); +Clazz_defineMethod(c$, "trace", +function(){ +var t = 0; +for (var i = Math.min(this.m, this.n); --i >= 0; ) t += this.a[i][i]; + +return t; +}); +c$.identity = Clazz_defineMethod(c$, "identity", +function(m, n){ +var x = new JU.Matrix(null, m, n); +var xa = x.a; +for (var i = Math.min(m, n); --i >= 0; ) xa[i][i] = 1; + +return x; +}, "~N,~N"); +Clazz_defineMethod(c$, "getRotation", +function(){ +return this.getSubmatrix(0, 0, this.m - 1, this.n - 1); +}); +Clazz_defineMethod(c$, "getTranslation", +function(){ +return this.getSubmatrix(0, this.n - 1, this.m - 1, 1); +}); +c$.newT = Clazz_defineMethod(c$, "newT", +function(r, asColumn){ +return (asColumn ? new JU.Matrix( Clazz_newArray(-1, [ Clazz_newDoubleArray(-1, [r.x]), Clazz_newDoubleArray(-1, [r.y]), Clazz_newDoubleArray(-1, [r.z])]), 3, 1) : new JU.Matrix( Clazz_newArray(-1, [ Clazz_newDoubleArray(-1, [r.x, r.y, r.z])]), 1, 3)); +}, "JU.T3,~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +var s = "[\n"; +for (var i = 0; i < this.m; i++) { +s += " ["; +for (var j = 0; j < this.n; j++) s += " " + this.a[i][j]; + +s += "]\n"; +} +s += "]"; +return s; +}); +c$.$Matrix$LUDecomp$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.LU = null; +this.piv = null; +this.pivsign = 0; +Clazz_instantialize(this, arguments);}, JU.Matrix, "LUDecomp", null); +Clazz_makeConstructor(c$, +function(m, n){ +this.LU = this.b$["JU.Matrix"].getArrayCopy(); +this.piv = Clazz_newIntArray (m, 0); +for (var i = m; --i >= 0; ) this.piv[i] = i; + +this.pivsign = 1; +var LUrowi; +var LUcolj = Clazz_newDoubleArray (m, 0); +for (var j = 0; j < n; j++) { +for (var i = m; --i >= 0; ) LUcolj[i] = this.LU[i][j]; + +for (var i = m; --i >= 0; ) { +LUrowi = this.LU[i]; +var kmax = Math.min(i, j); +var s = 0.0; +for (var k = kmax; --k >= 0; ) s += LUrowi[k] * LUcolj[k]; + +LUrowi[j] = LUcolj[i] -= s; +} +var p = j; +for (var i = m; --i > j; ) if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) p = i; + +if (p != j) { +for (var k = n; --k >= 0; ) { +var t = this.LU[p][k]; +this.LU[p][k] = this.LU[j][k]; +this.LU[j][k] = t; +} +var k = this.piv[p]; +this.piv[p] = this.piv[j]; +this.piv[j] = k; +this.pivsign = -this.pivsign; +}if ( new Boolean (j < m & this.LU[j][j] != 0.0).valueOf()) for (var i = m; --i > j; ) this.LU[i][j] /= this.LU[j][j]; + +} +}, "~N,~N"); +Clazz_defineMethod(c$, "solve", +function(b, n){ +for (var j = 0; j < n; j++) if (this.LU[j][j] == 0) return null; + +var nx = b.n; +var x = b.getMatrixSelected(this.piv, nx); +var a = x.a; +for (var k = 0; k < n; k++) for (var i = k + 1; i < n; i++) for (var j = 0; j < nx; j++) a[i][j] -= a[k][j] * this.LU[i][k]; + + + +for (var k = n; --k >= 0; ) { +for (var j = nx; --j >= 0; ) a[k][j] /= this.LU[k][k]; + +for (var i = k; --i >= 0; ) for (var j = nx; --j >= 0; ) a[i][j] -= a[k][j] * this.LU[i][k]; + + +} +return x; +}, "JU.Matrix,~N"); +/*eoif4*/})(); +}; +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P4"], "JU.Quat", ["JU.A4", "$.M3", "$.V3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.q0 = 0; +this.q1 = 0; +this.q2 = 0; +this.q3 = 0; +this.mat = null; +Clazz_instantialize(this, arguments);}, JU, "Quat", null); +Clazz_makeConstructor(c$, +function(){ +this.q0 = 1; +}); +c$.newQ = Clazz_defineMethod(c$, "newQ", +function(q){ +var q1 = new JU.Quat(); +q1.set(q); +return q1; +}, "JU.Quat"); +c$.newVA = Clazz_defineMethod(c$, "newVA", +function(v, theta){ +var q = new JU.Quat(); +q.setTA(v, theta); +return q; +}, "JU.T3,~N"); +c$.newM = Clazz_defineMethod(c$, "newM", +function(mat){ +var q = new JU.Quat(); +q.setM(JU.M3.newM3(mat)); +return q; +}, "JU.M3"); +c$.newAA = Clazz_defineMethod(c$, "newAA", +function(a){ +var q = new JU.Quat(); +q.setAA(a); +return q; +}, "JU.A4"); +c$.newP4 = Clazz_defineMethod(c$, "newP4", +function(pt){ +var q = new JU.Quat(); +q.setP4(pt); +return q; +}, "JU.P4"); +c$.new4 = Clazz_defineMethod(c$, "new4", +function(q1, q2, q3, q0){ +var q = new JU.Quat(); +if (q0 < -1) { +q.q0 = -1; +return q; +}if (q0 > 1) { +q.q0 = 1; +return q; +}q.q0 = q0; +q.q1 = q1; +q.q2 = q2; +q.q3 = q3; +return q; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "set", +function(q){ +this.q0 = q.q0; +this.q1 = q.q1; +this.q2 = q.q2; +this.q3 = q.q3; +}, "JU.Quat"); +Clazz_defineMethod(c$, "setP4", +function(pt){ +var factor = (pt == null ? 0 : pt.distance4(JU.Quat.qZero)); +if (factor == 0) { +this.q0 = 1; +return; +}this.q0 = pt.w / factor; +this.q1 = pt.x / factor; +this.q2 = pt.y / factor; +this.q3 = pt.z / factor; +}, "JU.P4"); +Clazz_defineMethod(c$, "setTA", +function(pt, theta){ +if (pt.x == 0 && pt.y == 0 && pt.z == 0) { +this.q0 = 1; +return; +}var fact = (Math.sin(theta / 2 * 0.017453292519943295) / Math.sqrt(pt.x * pt.x + pt.y * pt.y + pt.z * pt.z)); +this.q0 = (Math.cos(theta / 2 * 0.017453292519943295)); +this.q1 = (pt.x * fact); +this.q2 = (pt.y * fact); +this.q3 = (pt.z * fact); +}, "JU.T3,~N"); +Clazz_defineMethod(c$, "setAA", +function(a){ +var aa = JU.A4.newAA(a); +if (aa.angle == 0) aa.y = 1; +this.setM( new JU.M3().setAA(aa)); +}, "JU.A4"); +Clazz_defineMethod(c$, "setM", +function(mat){ +this.mat = mat; +var trace = mat.m00 + mat.m11 + mat.m22; +var temp; +var w; +var x; +var y; +var z; +if (trace >= 0.5) { +w = Math.sqrt(1.0 + trace); +x = (mat.m21 - mat.m12) / w; +y = (mat.m02 - mat.m20) / w; +z = (mat.m10 - mat.m01) / w; +} else if ((temp = mat.m00 + mat.m00 - trace) >= 0.5) { +x = Math.sqrt(1.0 + temp); +w = (mat.m21 - mat.m12) / x; +y = (mat.m10 + mat.m01) / x; +z = (mat.m20 + mat.m02) / x; +} else if ((temp = mat.m11 + mat.m11 - trace) >= 0.5 || mat.m11 > mat.m22) { +y = Math.sqrt(1.0 + temp); +w = (mat.m02 - mat.m20) / y; +x = (mat.m10 + mat.m01) / y; +z = (mat.m21 + mat.m12) / y; +} else { +z = Math.sqrt(1.0 + mat.m22 + mat.m22 - trace); +w = (mat.m10 - mat.m01) / z; +x = (mat.m20 + mat.m02) / z; +y = (mat.m21 + mat.m12) / z; +}this.q0 = (w * 0.5); +this.q1 = (x * 0.5); +this.q2 = (y * 0.5); +this.q3 = (z * 0.5); +}, "JU.M3"); +Clazz_defineMethod(c$, "setRef", +function(qref){ +if (qref == null) { +this.mul(this.getFixFactor()); +return; +}if (this.dot(qref) >= 0) return; +this.q0 *= -1; +this.q1 *= -1; +this.q2 *= -1; +this.q3 *= -1; +}, "JU.Quat"); +c$.getQuaternionFrame = Clazz_defineMethod(c$, "getQuaternionFrame", +function(center, x, xy){ +var vA = JU.V3.newV(x); +var vB = JU.V3.newV(xy); +if (center != null) { +vA.sub(center); +vB.sub(center); +}return JU.Quat.getQuaternionFrameV(vA, vB, null, false); +}, "JU.P3,JU.T3,JU.T3"); +c$.getQuaternionFrameV = Clazz_defineMethod(c$, "getQuaternionFrameV", +function(vA, vB, vC, yBased){ +if (vC == null) { +vC = new JU.V3(); +vC.cross(vA, vB); +if (yBased) vA.cross(vB, vC); +}var vBprime = new JU.V3(); +vBprime.cross(vC, vA); +vA.normalize(); +vBprime.normalize(); +vC.normalize(); +var mat = new JU.M3(); +mat.setColumnV(0, vA); +mat.setColumnV(1, vBprime); +mat.setColumnV(2, vC); +var q = JU.Quat.newM(mat); +return q; +}, "JU.V3,JU.V3,JU.V3,~B"); +Clazz_defineMethod(c$, "getMatrix", +function(){ +if (this.mat == null) this.setMatrix(); +return this.mat; +}); +Clazz_defineMethod(c$, "setMatrix", +function(){ +this.mat = new JU.M3(); +this.mat.m00 = this.q0 * this.q0 + this.q1 * this.q1 - this.q2 * this.q2 - this.q3 * this.q3; +this.mat.m01 = 2 * this.q1 * this.q2 - 2 * this.q0 * this.q3; +this.mat.m02 = 2 * this.q1 * this.q3 + 2 * this.q0 * this.q2; +this.mat.m10 = 2 * this.q1 * this.q2 + 2 * this.q0 * this.q3; +this.mat.m11 = this.q0 * this.q0 - this.q1 * this.q1 + this.q2 * this.q2 - this.q3 * this.q3; +this.mat.m12 = 2 * this.q2 * this.q3 - 2 * this.q0 * this.q1; +this.mat.m20 = 2 * this.q1 * this.q3 - 2 * this.q0 * this.q2; +this.mat.m21 = 2 * this.q2 * this.q3 + 2 * this.q0 * this.q1; +this.mat.m22 = this.q0 * this.q0 - this.q1 * this.q1 - this.q2 * this.q2 + this.q3 * this.q3; +}); +Clazz_defineMethod(c$, "add", +function(x){ +return JU.Quat.newVA(this.getNormal(), this.getTheta() + x); +}, "~N"); +Clazz_defineMethod(c$, "mul", +function(x){ +return (x == 1 ? JU.Quat.new4(this.q1, this.q2, this.q3, this.q0) : JU.Quat.newVA(this.getNormal(), this.getTheta() * x)); +}, "~N"); +Clazz_defineMethod(c$, "mulQ", +function(p){ +return JU.Quat.new4(this.q0 * p.q1 + this.q1 * p.q0 + this.q2 * p.q3 - this.q3 * p.q2, this.q0 * p.q2 + this.q2 * p.q0 + this.q3 * p.q1 - this.q1 * p.q3, this.q0 * p.q3 + this.q3 * p.q0 + this.q1 * p.q2 - this.q2 * p.q1, this.q0 * p.q0 - this.q1 * p.q1 - this.q2 * p.q2 - this.q3 * p.q3); +}, "JU.Quat"); +Clazz_defineMethod(c$, "divLeft", +function(p){ +return this.inv().mulQ(p); +}, "JU.Quat"); +Clazz_defineMethod(c$, "dot", +function(q){ +return this.q0 * q.q0 + this.q1 * q.q1 + this.q2 * q.q2 + this.q3 * q.q3; +}, "JU.Quat"); +Clazz_defineMethod(c$, "inv", +function(){ +return JU.Quat.new4(-this.q1, -this.q2, -this.q3, this.q0); +}); +Clazz_defineMethod(c$, "negate", +function(){ +return JU.Quat.new4(-this.q1, -this.q2, -this.q3, -this.q0); +}); +Clazz_defineMethod(c$, "getFixFactor", +function(){ +return (this.q0 < 0 || this.q0 == 0 && (this.q1 < 0 || this.q1 == 0 && (this.q2 < 0 || this.q2 == 0 && this.q3 < 0)) ? -1 : 1); +}); +Clazz_defineMethod(c$, "getVector", +function(i){ +return this.getVectorScaled(i, 1); +}, "~N"); +Clazz_defineMethod(c$, "getVectorScaled", +function(i, scale){ +if (i == -1) { +scale *= this.getFixFactor(); +return JU.V3.new3(this.q1 * scale, this.q2 * scale, this.q3 * scale); +}if (this.mat == null) this.setMatrix(); +var v = new JU.V3(); +this.mat.getColumnV(i, v); +if (scale != 1) v.scale(scale); +return v; +}, "~N,~N"); +Clazz_defineMethod(c$, "getNormal", +function(){ +var v = JU.Quat.getRawNormal(this); +v.scale(this.getFixFactor()); +return v; +}); +c$.getRawNormal = Clazz_defineMethod(c$, "getRawNormal", +function(q){ +var v = JU.V3.new3(q.q1, q.q2, q.q3); +if (v.length() == 0) return JU.V3.new3(0, 0, 1); +v.normalize(); +return v; +}, "JU.Quat"); +Clazz_defineMethod(c$, "getTheta", +function(){ +return (Math.acos(Math.abs(this.q0)) * 2 * 180 / 3.141592653589793); +}); +Clazz_defineMethod(c$, "getThetaRadians", +function(){ +return (Math.acos(Math.abs(this.q0)) * 2); +}); +Clazz_defineMethod(c$, "getNormalDirected", +function(v0){ +var v = this.getNormal(); +if (v.x * v0.x + v.y * v0.y + v.z * v0.z < 0) { +v.scale(-1); +}return v; +}, "JU.V3"); +Clazz_defineMethod(c$, "get3dProjection", +function(v3d){ +v3d.set(this.q1, this.q2, this.q3); +return v3d; +}, "JU.V3"); +Clazz_defineMethod(c$, "getThetaDirected", +function(axisAngle){ +var theta = this.getTheta(); +var v = this.getNormal(); +if (axisAngle.x * this.q1 + axisAngle.y * this.q2 + axisAngle.z * this.q3 < 0) { +v.scale(-1); +theta = -theta; +}axisAngle.set4(v.x, v.y, v.z, theta); +return axisAngle; +}, "JU.P4"); +Clazz_defineMethod(c$, "getThetaDirectedV", +function(vector){ +var theta = this.getTheta(); +var v = this.getNormal(); +if (vector.x * this.q1 + vector.y * this.q2 + vector.z * this.q3 < 0) { +v.scale(-1); +theta = -theta; +}return theta; +}, "JU.V3"); +Clazz_defineMethod(c$, "toPoint4f", +function(){ +return JU.P4.new4(this.q1, this.q2, this.q3, this.q0); +}); +Clazz_defineMethod(c$, "toAxisAngle4f", +function(){ +var theta = 2 * Math.acos(Math.abs(this.q0)); +var sinTheta2 = Math.sin(theta / 2); +var v = this.getNormal(); +if (sinTheta2 < 0) { +v.scale(-1); +theta = 3.141592653589793 - theta; +}return JU.A4.newVA(v, theta); +}); +Clazz_defineMethod(c$, "transform2", +function(pt, ptNew){ +if (this.mat == null) this.setMatrix(); +this.mat.rotate2(pt, ptNew); +return ptNew; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "leftDifference", +function(q2){ +var q2adjusted = (this.dot(q2) < 0 ? q2.negate() : q2); +return this.inv().mulQ(q2adjusted); +}, "JU.Quat"); +Clazz_defineMethod(c$, "rightDifference", +function(q2){ +var q2adjusted = (this.dot(q2) < 0 ? q2.negate() : q2); +return this.mulQ(q2adjusted.inv()); +}, "JU.Quat"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "{" + this.q1 + " " + this.q2 + " " + this.q3 + " " + this.q0 + "}"; +}); +Clazz_defineMethod(c$, "div", +function(p){ +return this.mulQ(p.inv()); +}, "JU.Quat"); +c$.arrayDiv = Clazz_defineMethod(c$, "arrayDiv", +function(data1, data2, nMax, isRelative){ +var n; +if (data1 == null || data2 == null || (n = Math.min(data1.length, data2.length)) == 0) return null; +if (nMax > 0 && n > nMax) n = nMax; +var dqs = new Array(n); +for (var i = 0; i < n; i++) { +if (data1[i] == null || data2[i] == null) return null; +dqs[i] = (isRelative ? data1[i].divLeft(data2[i]) : data1[i].div(data2[i])); +} +return dqs; +}, "~A,~A,~N,~B"); +c$.sphereMean = Clazz_defineMethod(c$, "sphereMean", +function(data, retStddev, criterion){ +if (data == null || data.length == 0) return new JU.Quat(); +if (retStddev == null) retStddev = Clazz_newFloatArray (1, 0); +if (data.length == 1) { +retStddev[0] = 0; +return JU.Quat.newQ(data[0]); +}var diff = 3.4028235E38; +var lastStddev = 3.4028235E38; +var qMean = JU.Quat.simpleAverage(data); +var maxIter = 100; +var iter = 0; +while (diff > criterion && lastStddev != 0 && iter < maxIter) { +qMean = JU.Quat.newMean(data, qMean); +retStddev[0] = JU.Quat.stdDev(data, qMean); +diff = Math.abs(retStddev[0] - lastStddev); +lastStddev = retStddev[0]; +} +return qMean; +}, "~A,~A,~N"); +c$.simpleAverage = Clazz_defineMethod(c$, "simpleAverage", +function(ndata){ +var mean = JU.V3.new3(0, 0, 1); +var v = ndata[0].getNormal(); +mean.add(v); +for (var i = ndata.length; --i >= 0; ) mean.add(ndata[i].getNormalDirected(mean)); + +mean.sub(v); +mean.normalize(); +var f = 0; +for (var i = ndata.length; --i >= 0; ) f += Math.abs(ndata[i].get3dProjection(v).dot(mean)); + +if (f != 0) mean.scale(f / ndata.length); +f = Math.sqrt(1 - mean.lengthSquared()); +if (Float.isNaN(f)) f = 0; +return JU.Quat.newP4(JU.P4.new4(mean.x, mean.y, mean.z, f)); +}, "~A"); +c$.newMean = Clazz_defineMethod(c$, "newMean", +function(data, mean){ +var sum = new JU.V3(); +var v; +var q; +var dq; +for (var i = data.length; --i >= 0; ) { +q = data[i]; +dq = q.div(mean); +v = dq.getNormal(); +v.scale(dq.getTheta()); +sum.add(v); +} +sum.scale(1 / data.length); +var dqMean = JU.Quat.newVA(sum, sum.length()); +return dqMean.mulQ(mean); +}, "~A,JU.Quat"); +c$.stdDev = Clazz_defineMethod(c$, "stdDev", +function(data, mean){ +var sum2 = 0; +var n = data.length; +for (var i = n; --i >= 0; ) { +var theta = data[i].div(mean).getTheta(); +sum2 += theta * theta; +} +return Math.sqrt(sum2 / n); +}, "~A,JU.Quat"); +Clazz_defineMethod(c$, "getEulerZYZ", +function(){ +var rA; +var rB; +var rG; +if (this.q1 == 0 && this.q2 == 0) { +var theta = this.getTheta(); +return Clazz_newFloatArray(-1, [this.q3 < 0 ? -theta : theta, 0, 0]); +}rA = Math.atan2(2 * (this.q2 * this.q3 + this.q0 * this.q1), 2 * (-this.q1 * this.q3 + this.q0 * this.q2)); +rB = Math.acos(this.q3 * this.q3 - this.q2 * this.q2 - this.q1 * this.q1 + this.q0 * this.q0); +rG = Math.atan2(2 * (this.q2 * this.q3 - this.q0 * this.q1), 2 * (this.q0 * this.q2 + this.q1 * this.q3)); +return Clazz_newFloatArray(-1, [(rA / 0.017453292519943295), (rB / 0.017453292519943295), (rG / 0.017453292519943295)]); +}); +Clazz_defineMethod(c$, "getEulerZXZ", +function(){ +var rA; +var rB; +var rG; +if (this.q1 == 0 && this.q2 == 0) { +var theta = this.getTheta(); +return Clazz_newFloatArray(-1, [this.q3 < 0 ? -theta : theta, 0, 0]); +}rA = Math.atan2(2 * (this.q1 * this.q3 - this.q0 * this.q2), 2 * (this.q0 * this.q1 + this.q2 * this.q3)); +rB = Math.acos(this.q3 * this.q3 - this.q2 * this.q2 - this.q1 * this.q1 + this.q0 * this.q0); +rG = Math.atan2(2 * (this.q1 * this.q3 + this.q0 * this.q2), 2 * (-this.q2 * this.q3 + this.q0 * this.q1)); +return Clazz_newFloatArray(-1, [(rA / 0.017453292519943295), (rB / 0.017453292519943295), (rG / 0.017453292519943295)]); +}); +c$.qZero = new JU.P4(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.io.BufferedReader", "javajs.api.GenericLineReader"], "JU.Rdr", ["java.io.BufferedInputStream", "$.ByteArrayInputStream", "$.InputStreamReader", "$.StringReader", "JU.AU", "$.Base64", "$.Encoding", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.reader = null; +Clazz_instantialize(this, arguments);}, JU, "Rdr", null, javajs.api.GenericLineReader); +Clazz_makeConstructor(c$, +function(reader){ +this.reader = reader; +}, "java.io.BufferedReader"); +Clazz_overrideMethod(c$, "readNextLine", +function(){ +return this.reader.readLine(); +}); +c$.readCifData = Clazz_defineMethod(c$, "readCifData", +function(parser, br){ +return parser.set(null, br, false).getAllCifData(); +}, "javajs.api.GenericCifDataParser,java.io.BufferedReader"); +c$.fixUTF = Clazz_defineMethod(c$, "fixUTF", +function(bytes){ +var encoding = JU.Rdr.getUTFEncoding(bytes); +if (encoding !== JU.Encoding.NONE) { +try { +var s = String.instantialize(bytes, encoding.name().$replace('_', '-')); +switch (encoding) { +case JU.Encoding.UTF8: +case JU.Encoding.UTF_16BE: +case JU.Encoding.UTF_16LE: +s = s.substring(1); +break; +default: +break; +} +return s; +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +System.out.println(e); +} else { +throw e; +} +} +}return String.instantialize(bytes); +}, "~A"); +c$.getUTFEncoding = Clazz_defineMethod(c$, "getUTFEncoding", +function(bytes){ +if (bytes.length >= 3 && (bytes[0] & 0xFF) == 0xEF && (bytes[1] & 0xFF) == 0xBB && (bytes[2] & 0xFF) == 0xBF) return JU.Encoding.UTF8; +if (bytes.length >= 4 && (bytes[0] & 0xFF) == 0 && (bytes[1] & 0xFF) == 0 && (bytes[2] & 0xFF) == 0xFE && (bytes[3] & 0xFF) == 0xFF) return JU.Encoding.UTF_32BE; +if (bytes.length >= 4 && (bytes[0] & 0xFF) == 0xFF && (bytes[1] & 0xFF) == 0xFE && (bytes[2] & 0xFF) == 0 && (bytes[3] & 0xFF) == 0) return JU.Encoding.UTF_32LE; +if (bytes.length >= 2 && (bytes[0] & 0xFF) == 0xFF && (bytes[1] & 0xFF) == 0xFE) return JU.Encoding.UTF_16LE; +if (bytes.length >= 2 && (bytes[0] & 0xFF) == 0xFE && (bytes[1] & 0xFF) == 0xFF) return JU.Encoding.UTF_16BE; +return JU.Encoding.NONE; +}, "~A"); +c$.getUTFEncodingForStream = Clazz_defineMethod(c$, "getUTFEncodingForStream", +function(is){ +{ +is.resetStream(); +}var abMagic = Clazz_newByteArray (4, 0); +abMagic[3] = 1; +try { +is.mark(5); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return JU.Encoding.NONE; +} else { +throw e; +} +} +is.read(abMagic, 0, 4); +is.reset(); +return JU.Rdr.getUTFEncoding(abMagic); +}, "java.io.BufferedInputStream"); +c$.isBase64 = Clazz_defineMethod(c$, "isBase64", +function(sb){ +return (sb.indexOf(";base64,") == 0); +}, "JU.SB"); +c$.isCompoundDocumentS = Clazz_defineMethod(c$, "isCompoundDocumentS", +function(is){ +return JU.Rdr.isCompoundDocumentB(JU.Rdr.getMagic(is, 8)); +}, "java.io.InputStream"); +c$.isCompoundDocumentB = Clazz_defineMethod(c$, "isCompoundDocumentB", +function(bytes){ +return (bytes.length >= 8 && (bytes[0] & 0xFF) == 0xD0 && (bytes[1] & 0xFF) == 0xCF && (bytes[2] & 0xFF) == 0x11 && (bytes[3] & 0xFF) == 0xE0 && (bytes[4] & 0xFF) == 0xA1 && (bytes[5] & 0xFF) == 0xB1 && (bytes[6] & 0xFF) == 0x1A && (bytes[7] & 0xFF) == 0xE1); +}, "~A"); +c$.isBZip2S = Clazz_defineMethod(c$, "isBZip2S", +function(is){ +return JU.Rdr.isBZip2B(JU.Rdr.getMagic(is, 3)); +}, "java.io.InputStream"); +c$.isGzipS = Clazz_defineMethod(c$, "isGzipS", +function(is){ +return JU.Rdr.isGzipB(JU.Rdr.getMagic(is, 2)); +}, "java.io.InputStream"); +c$.isBZip2B = Clazz_defineMethod(c$, "isBZip2B", +function(bytes){ +return (bytes != null && bytes.length >= 3 && (bytes[0] & 0xFF) == 0x42 && (bytes[1] & 0xFF) == 0x5A && (bytes[2] & 0xFF) == 0x68); +}, "~A"); +c$.isGzipB = Clazz_defineMethod(c$, "isGzipB", +function(bytes){ +return (bytes != null && bytes.length >= 2 && (bytes[0] & 0xFF) == 0x1F && (bytes[1] & 0xFF) == 0x8B); +}, "~A"); +c$.isPickleS = Clazz_defineMethod(c$, "isPickleS", +function(is){ +return JU.Rdr.isPickleB(JU.Rdr.getMagic(is, 2)); +}, "java.io.InputStream"); +c$.isPickleB = Clazz_defineMethod(c$, "isPickleB", +function(bytes){ +return (bytes != null && bytes.length >= 2 && (bytes[0] & 0xFF) == 0x7D && (bytes[1] & 0xFF) == 0x71); +}, "~A"); +c$.isMessagePackS = Clazz_defineMethod(c$, "isMessagePackS", +function(is){ +return JU.Rdr.isMessagePackB(JU.Rdr.getMagic(is, 2)); +}, "java.io.InputStream"); +c$.isMessagePackB = Clazz_defineMethod(c$, "isMessagePackB", +function(bytes){ +var b; +return (bytes != null && bytes.length >= 1 && (((b = bytes[0] & 0xFF)) == 0xDE || (b & 0xE0) == 0x80 && bytes[1] != 0x50)); +}, "~A"); +c$.isPngZipStream = Clazz_defineMethod(c$, "isPngZipStream", +function(is){ +return JU.Rdr.isPngZipB(JU.Rdr.getMagic(is, 55)); +}, "java.io.InputStream"); +c$.isPngZipB = Clazz_defineMethod(c$, "isPngZipB", +function(bytes){ +return (bytes[50] == 0 && bytes[51] == 0x50 && bytes[52] == 0x4E && bytes[53] == 0x47 && bytes[54] == 0x4A); +}, "~A"); +c$.isZipS = Clazz_defineMethod(c$, "isZipS", +function(is){ +return JU.Rdr.isZipB(JU.Rdr.getMagic(is, 4)); +}, "java.io.InputStream"); +c$.isZipB = Clazz_defineMethod(c$, "isZipB", +function(bytes){ +return (bytes.length >= 4 && bytes[0] == 0x50 && bytes[1] == 0x4B && bytes[2] == 0x03 && bytes[3] == 0x04); +}, "~A"); +c$.getMagic = Clazz_defineMethod(c$, "getMagic", +function(is, n){ +var abMagic = (n > 264 ? Clazz_newByteArray (n, 0) : JU.Rdr.b264 == null ? (JU.Rdr.b264 = Clazz_newByteArray (265, 0)) : JU.Rdr.b264); +{ +is.resetStream(); +}try { +abMagic[264] = -1; +is.mark(n + 1); +var i = is.read(abMagic, 0, n); +if (i < n) { +abMagic[0] = abMagic[264] = 0; +}} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +try { +is.reset(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +return abMagic; +}, "java.io.InputStream,~N"); +c$.guessMimeTypeForBytes = Clazz_defineMethod(c$, "guessMimeTypeForBytes", +function(bytes){ +switch (bytes.length < 2 ? -1 : bytes[1]) { +case 0: +return "image/jpg"; +case 0x49: +return "image/gif"; +case 0x4D: +return "image/BMP"; +case 0x50: +return "image/png"; +default: +return "image/unknown"; +} +}, "~A"); +c$.getBIS = Clazz_defineMethod(c$, "getBIS", +function(bytes){ +return new java.io.BufferedInputStream( new java.io.ByteArrayInputStream(bytes)); +}, "~A"); +c$.getBR = Clazz_defineMethod(c$, "getBR", +function(string){ +return new java.io.BufferedReader( new java.io.StringReader(string)); +}, "~S"); +c$.getUnzippedInputStream = Clazz_defineMethod(c$, "getUnzippedInputStream", +function(jzt, bis){ +while (JU.Rdr.isGzipS(bis)) bis = new java.io.BufferedInputStream(jzt.newGZIPInputStream(bis)); + +return bis; +}, "javajs.api.GenericZipTools,java.io.BufferedInputStream"); +c$.getUnzippedInputStreamBZip2 = Clazz_defineMethod(c$, "getUnzippedInputStreamBZip2", +function(jzt, bis){ +while (JU.Rdr.isBZip2S(bis)) bis = new java.io.BufferedInputStream(jzt.newBZip2InputStream(bis)); + +return bis; +}, "javajs.api.GenericZipTools,java.io.BufferedInputStream"); +c$.getBytesFromSB = Clazz_defineMethod(c$, "getBytesFromSB", +function(sb){ +return (JU.Rdr.isBase64(sb) ? JU.Base64.decodeBase64(sb.substring(8)) : sb.toBytes(0, -1)); +}, "JU.SB"); +c$.getStreamAsBytes = Clazz_defineMethod(c$, "getStreamAsBytes", +function(bis, out){ +var buf = Clazz_newByteArray (1024, 0); +var bytes = (out == null ? Clazz_newByteArray (4096, 0) : null); +var len = 0; +var totalLen = 0; +while ((len = bis.read(buf, 0, 1024)) > 0) { +totalLen += len; +if (out == null) { +if (totalLen >= bytes.length) bytes = JU.AU.ensureLengthByte(bytes, totalLen * 2); +System.arraycopy(buf, 0, bytes, totalLen - len, len); +} else { +out.write(buf, 0, len); +}} +bis.close(); +if (out == null) { +return JU.AU.arrayCopyByte(bytes, totalLen); +}return totalLen + " bytes"; +}, "java.io.BufferedInputStream,JU.OC"); +c$.getBufferedReader = Clazz_defineMethod(c$, "getBufferedReader", +function(bis, charSet){ +if (JU.Rdr.getUTFEncodingForStream(bis) === JU.Encoding.NONE) return new JU.Rdr.StreamReader(bis, charSet); +var bytes = JU.Rdr.getLimitedStreamBytes(bis, -1); +bis.close(); +return JU.Rdr.getBR(charSet == null ? JU.Rdr.fixUTF(bytes) : String.instantialize(bytes, charSet)); +}, "java.io.BufferedInputStream,~S"); +c$.getLimitedStreamBytes = Clazz_defineMethod(c$, "getLimitedStreamBytes", +function(is, n){ +var buflen = (n > 0 && n < 1024 ? n : 1024); +var buf = Clazz_newByteArray (buflen, 0); +var bytes = Clazz_newByteArray (n < 0 ? 4096 : n, 0); +var len = 0; +var totalLen = 0; +if (n < 0) n = 2147483647; +while (totalLen < n && (len = is.read(buf, 0, buflen)) > 0) { +totalLen += len; +if (totalLen > bytes.length) bytes = JU.AU.ensureLengthByte(bytes, totalLen * 2); +System.arraycopy(buf, 0, bytes, totalLen - len, len); +if (n != 2147483647 && totalLen + buflen > bytes.length) buflen = bytes.length - totalLen; +} +if (totalLen == bytes.length) return bytes; +buf = Clazz_newByteArray (totalLen, 0); +System.arraycopy(bytes, 0, buf, 0, totalLen); +return buf; +}, "java.io.InputStream,~N"); +c$.streamToUTF8String = Clazz_defineMethod(c$, "streamToUTF8String", +function(bis){ +var data = new Array(1); +try { +JU.Rdr.readAllAsString(JU.Rdr.getBufferedReader(bis, "UTF-8"), -1, true, data, 0); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +return data[0]; +}, "java.io.BufferedInputStream"); +c$.readAllAsString = Clazz_defineMethod(c$, "readAllAsString", +function(br, nBytesMax, allowBinary, data, i){ +try { +var sb = JU.SB.newN(8192); +var line; +if (nBytesMax < 0) { +line = br.readLine(); +if (allowBinary || line != null && line.indexOf('\0') < 0 && (line.length != 4 || (line.charAt(0)).charCodeAt(0) != 65533 || line.indexOf("PNG") != 1)) { +sb.append(line).appendC('\n'); +while ((line = br.readLine()) != null) sb.append(line).appendC('\n'); + +}} else { +var n = 0; +var len; +while (n < nBytesMax && (line = br.readLine()) != null) { +if (nBytesMax - n < (len = line.length) + 1) line = line.substring(0, nBytesMax - n - 1); +sb.append(line).appendC('\n'); +n += len + 1; +} +}br.close(); +data[i] = sb.toString(); +return true; +} catch (ioe) { +if (Clazz_exceptionOf(ioe, Exception)){ +data[i] = ioe.toString(); +return false; +} else { +throw ioe; +} +} +}, "java.io.BufferedReader,~N,~B,~A,~N"); +c$.getPngZipPointAndCount = Clazz_defineMethod(c$, "getPngZipPointAndCount", +function(bis, pt_count){ +bis.mark(75); +try { +var data = JU.Rdr.getLimitedStreamBytes(bis, 74); +bis.reset(); +var pt = 0; +for (var i = 64, f = 1; --i > 54; f *= 10) pt += (data[i] - 48) * f; + +var n = 0; +for (var i = 74, f = 1; --i > 64; f *= 10) n += (data[i] - 48) * f; + +pt_count[0] = pt; +pt_count[1] = n; +} catch (e) { +pt_count[1] = 0; +} +}, "java.io.BufferedInputStream,~A"); +c$.getPngZipStream = Clazz_defineMethod(c$, "getPngZipStream", +function(bis, asNewStream){ +if (!JU.Rdr.isPngZipStream(bis)) return bis; +var data = Clazz_newByteArray (0, 0); +bis.mark(75); +try { +var pt_count = Clazz_newIntArray (2, 0); +JU.Rdr.getPngZipPointAndCount(bis, pt_count); +if (pt_count[1] != 0) { +var pt = pt_count[0]; +while (pt > 0) pt -= bis.skip(pt); + +if (!asNewStream) return bis; +data = JU.Rdr.getLimitedStreamBytes(bis, pt_count[1]); +}} catch (e) { +} finally { +try { +if (asNewStream) bis.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +return JU.Rdr.getBIS(data); +}, "java.io.BufferedInputStream,~B"); +c$.getZipRoot = Clazz_defineMethod(c$, "getZipRoot", +function(fileName){ +var pt = fileName.indexOf("|"); +return (pt < 0 ? fileName : fileName.substring(0, pt)); +}, "~S"); +c$.isTar = Clazz_defineMethod(c$, "isTar", +function(bis){ +var bytes = JU.Rdr.getMagic(bis, 264); +return (bytes[264] == -1 && (bytes[257] & 0xFF) == 0x75 && (bytes[258] & 0xFF) == 0x73 && (bytes[259] & 0xFF) == 0x74 && (bytes[260] & 0xFF) == 0x61 && (bytes[261] & 0xFF) == 0x72); +}, "java.io.BufferedInputStream"); +c$.streamToBytes = Clazz_defineMethod(c$, "streamToBytes", +function(is){ +var bytes = JU.Rdr.getLimitedStreamBytes(is, -1); +is.close(); +return bytes; +}, "java.io.InputStream"); +c$.streamToString = Clazz_defineMethod(c$, "streamToString", +function(is){ +return String.instantialize(JU.Rdr.streamToBytes(is)); +}, "java.io.InputStream"); +c$.isBinary = Clazz_defineMethod(c$, "isBinary", +function(bis, n){ +var bytes = JU.Rdr.getMagic(bis, n); +if (JU.Rdr.b264[264] == -1) for (var i = 0; i < n; i++) if (bytes[i] < 9) return true; + +return false; +}, "java.io.BufferedInputStream,~N"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.stream = null; +Clazz_instantialize(this, arguments);}, JU.Rdr, "StreamReader", java.io.BufferedReader); +Clazz_makeConstructor(c$, +function(bis, charSet){ +Clazz_superConstructor(this, JU.Rdr.StreamReader, [ new java.io.InputStreamReader(bis, (charSet == null ? "UTF-8" : charSet))]); +this.stream = bis; +}, "java.io.BufferedInputStream,~S"); +Clazz_defineMethod(c$, "getStream", +function(){ +try { +this.stream.reset(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +return this.stream; +}); +/*eoif3*/})(); +c$.b264 = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +Clazz_instantialize(this, arguments);}, JU, "T3d", null, java.io.Serializable); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(x, y, z){ +this.x = x; +this.y = y; +this.z = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setA", +function(t){ +this.x = t[0]; +this.y = t[1]; +this.z = t[2]; +}, "~A"); +Clazz_defineMethod(c$, "setT", +function(t1){ +this.x = t1.x; +this.y = t1.y; +this.z = t1.z; +}, "JU.T3d"); +Clazz_defineMethod(c$, "add2", +function(t1, t2){ +this.x = t1.x + t2.x; +this.y = t1.y + t2.y; +this.z = t1.z + t2.z; +}, "JU.T3d,JU.T3d"); +Clazz_defineMethod(c$, "add", +function(t1){ +this.x += t1.x; +this.y += t1.y; +this.z += t1.z; +}, "JU.T3d"); +Clazz_defineMethod(c$, "sub2", +function(t1, t2){ +this.x = t1.x - t2.x; +this.y = t1.y - t2.y; +this.z = t1.z - t2.z; +}, "JU.T3d,JU.T3d"); +Clazz_defineMethod(c$, "sub", +function(t1){ +this.x -= t1.x; +this.y -= t1.y; +this.z -= t1.z; +}, "JU.T3d"); +Clazz_defineMethod(c$, "scale", +function(s){ +this.x *= s; +this.y *= s; +this.z *= s; +}, "~N"); +Clazz_defineMethod(c$, "scaleAdd", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3d,JU.T3d"); +Clazz_defineMethod(c$, "scaleAdd2", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3d,JU.T3d"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var xbits = JU.T3d.doubleToLongBits0(this.x); +var ybits = JU.T3d.doubleToLongBits0(this.y); +var zbits = JU.T3d.doubleToLongBits0(this.z); +return (xbits ^ (xbits >> 32) ^ ybits ^ (ybits >> 32) ^ zbits ^ (zbits >> 32)); +}); +c$.doubleToLongBits0 = Clazz_defineMethod(c$, "doubleToLongBits0", +function(d){ +return (d == 0 ? 0 : Double.doubleToLongBits(d)); +}, "~N"); +Clazz_overrideMethod(c$, "equals", +function(t1){ +if (!(Clazz_instanceOf(t1,"JU.T3d"))) return false; +var t2 = t1; +return (this.x == t2.x && this.y == t2.y && this.z == t2.z); +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "{" + this.x + ", " + this.y + ", " + this.z + "}"; +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3d"], "JU.V3d", null, function(){ +var c$ = Clazz_declareType(JU, "V3d", JU.T3d); +Clazz_defineMethod(c$, "cross", +function(v1, v2){ +this.set(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x); +}, "JU.V3d,JU.V3d"); +Clazz_defineMethod(c$, "normalize", +function(){ +var d = this.length(); +this.x /= d; +this.y /= d; +this.z /= d; +}); +Clazz_defineMethod(c$, "angle", +function(v1){ +var xx = this.y * v1.z - this.z * v1.y; +var yy = this.z * v1.x - this.x * v1.z; +var zz = this.x * v1.y - this.y * v1.x; +var cross = Math.sqrt(xx * xx + yy * yy + zz * zz); +return Math.abs(Math.atan2(cross, this.dot(v1))); +}, "JU.V3d"); +Clazz_defineMethod(c$, "dot", +function(v){ +return this.x * v.x + this.y * v.y + this.z * v.z; +}, "JU.V3d"); +Clazz_defineMethod(c$, "lengthSquared", +function(){ +return this.x * this.x + this.y * this.y + this.z * this.z; +}); +Clazz_defineMethod(c$, "length", +function(){ +return Math.sqrt(this.lengthSquared()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.molxyz"); +Clazz_load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.molxyz.MolReader", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "J.adapter.smarter.Atom", "J.api.JmolAdapter", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveAtomSerials = false; +this.allow2D = true; +this.iatom0 = 0; +this.vr = null; +this.atomCount = 0; +this.atomData = null; +this.bsDeleted = null; +this.haveNonzeroZ = false; +this.fixN = false; +this.is3D = false; +this.nDouble = 0; +this.nH = 0; +this.nC = 0; +Clazz_instantialize(this, arguments);}, J.adapter.readers.molxyz, "MolReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz_overrideMethod(c$, "initializeReader", +function(){ +this.fixN = this.checkFilterKey("FIXN"); +}); +Clazz_overrideMethod(c$, "checkLine", +function(){ +var isMDL = (this.line.startsWith("$MDL")); +if (isMDL) { +this.discardLinesUntilStartsWith("$HDR"); +this.rd(); +if (this.line == null) { +JU.Logger.warn("$HDR not found in MDL RG file"); +this.continuing = false; +return false; +}} else if (this.line.equals("M END")) { +return true; +}if (this.doGetModel(++this.modelNumber, null)) { +this.iatom0 = this.asc.ac; +this.processMolSdHeader(); +this.processCtab(isMDL); +this.vr = null; +if (this.isLastModel(this.modelNumber)) { +this.continuing = false; +return false; +}}if (this.line != null && this.line.indexOf("$$$$") < 0) this.discardLinesUntilStartsWith("$$$$"); +return true; +}); +Clazz_overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderMR(); +}); +Clazz_defineMethod(c$, "finalizeReaderMR", +function(){ +if (this.fixN) { +this.addJmolScript("{search('[Nv4+0,nv4+0]')}.formalCharge=1;{search('{[Ov1-0]}[Nv4+1,nv4+1]')}.formalCharge=-1;"); +}this.check2D3D(); +if (this.bsDeleted != null) { +this.asc.getBSAtoms(-1).andNot(this.bsDeleted); +}this.isTrajectory = false; +this.finalizeReaderASCR(); +}); +Clazz_defineMethod(c$, "check2D3D", +function(){ +if (this.haveNonzeroZ) { +if (this.is2D) { +this.is2D = this.optimize2D = false; +}} else if (!this.is2D && !this.is3D) { +if (this.nC > 0 && this.nH == 0 && this.nDouble != 0) { +this.is2D = true; +}}if (this.is2D) { +if (!this.allow2D) { +throw new Exception("File is 2D, not 3D"); +}this.set2D(); +}}); +Clazz_defineMethod(c$, "processMolSdHeader", +function(){ +var header = ""; +var thisDataSetName = this.line.trim(); +this.asc.setCollectionName(thisDataSetName); +header += this.line + "\n"; +this.rd(); +if (this.line == null) return; +header += this.line + "\n"; +var dim = (this.line.length >= 22 ? this.line.substring(20, 22) : null); +this.is3D = "3D".equals(dim); +this.is2D = !this.is3D && ("2D".equals(dim) || this.line.startsWith("JME ")); +this.rd(); +if (this.line == null) return; +this.line = this.line.trim(); +header += this.line + "\n"; +JU.Logger.info(header); +this.checkCurrentLineForScript(); +this.asc.setInfo("fileHeader", header); +this.newAtomSet(thisDataSetName); +}); +Clazz_defineMethod(c$, "processCtab", +function(isMDL){ +if (isMDL) this.discardLinesUntilStartsWith("$CTAB"); +if (this.rd() == null) return; +if (this.line.indexOf("V3000") >= 0) { +this.optimize2D = this.is2D && !this.noHydrogens; +this.vr = (this.getInterface("J.adapter.readers.molxyz.V3000Rdr")).set(this); +this.discardLinesUntilContains("COUNTS"); +this.vr.readAtomsAndBonds(this.getTokens()); +} else { +this.readAtomsAndBonds(this.parseIntRange(this.line, 0, 3), this.parseIntRange(this.line, 3, 6)); +}this.applySymmetryAndSetTrajectory(); +}, "~B"); +Clazz_defineMethod(c$, "readAtomsAndBonds", +function(ac, bc){ +this.atomCount = ac; +for (var i = 0; i < ac; ++i) { +this.rd(); +var len = this.line.length; +var elementSymbol; +var x; +var y; +var z; +var charge = 0; +var isotope = 0; +var iAtom = -2147483648; +x = this.parseFloatRange(this.line, 0, 10); +y = this.parseFloatRange(this.line, 10, 20); +z = this.parseFloatRange(this.line, 20, 30); +if (len < 34) { +elementSymbol = this.line.substring(31).trim(); +} else { +elementSymbol = this.line.substring(31, 34).trim(); +if (elementSymbol.equals("H1")) { +elementSymbol = "H"; +isotope = 1; +}if (len >= 39) { +var code = this.parseIntRange(this.line, 36, 39); +if (code >= 1 && code <= 7) charge = 4 - code; +code = this.parseIntRange(this.line, 34, 36); +if (code != 0 && code >= -3 && code <= 4) { +isotope = J.api.JmolAdapter.getNaturalIsotope(J.api.JmolAdapter.getElementNumber(elementSymbol)) + code; +}if (iAtom == -2147483648 && this.haveAtomSerials) iAtom = i + 1; +}}this.addMolAtom(iAtom, isotope, elementSymbol, charge, x, y, z); +} +this.asc.setModelInfoForSet("dimension", (this.is2D ? "2D" : "3D"), this.asc.iSet); +this.rd(); +if (this.line.startsWith("V ")) { +this.readAtomValues(); +}if (bc == 0) this.asc.setNoAutoBond(); +for (var i = 0; i < bc; ++i) { +if (i > 0) this.rd(); +var iAtom1; +var iAtom2; +var stereo = 0; +iAtom1 = this.line.substring(0, 3).trim(); +iAtom2 = this.line.substring(3, 6).trim(); +var order = this.parseIntRange(this.line, 6, 9); +if ((this.is2D || !this.is3D) && order == 1 && this.line.length >= 12) stereo = this.parseIntRange(this.line, 9, 12); +if (stereo != 0 && !this.is3D) this.is2D = true; +order = this.fixOrder(order, stereo); +if (this.haveAtomSerials) this.asc.addNewBondFromNames(iAtom1, iAtom2, order); + else this.asc.addNewBondWithOrder(this.iatom0 + this.parseIntStr(iAtom1) - 1, this.iatom0 + this.parseIntStr(iAtom2) - 1, order); +} +var molData = new java.util.Hashtable(); +var _keyList = new JU.Lst(); +this.rd(); +while (this.line != null && this.line.indexOf("$$$$") != 0) { +if (this.line.indexOf(">") == 0) { +this.readMolData(molData, _keyList); +continue; +}if (this.line.startsWith("M ISO")) { +this.readIsotopes(); +continue; +}this.rd(); +} +if (this.atomData != null) { +var atomValueName = molData.get("atom_value_name"); +molData.put(atomValueName == null ? "atom_values" : atomValueName.toString(), this.atomData); +}if (!molData.isEmpty()) { +this.asc.setCurrentModelInfo("molDataKeys", _keyList); +this.asc.setCurrentModelInfo("molData", molData); +}}, "~N,~N"); +Clazz_defineMethod(c$, "readAtomValues", +function(){ +this.atomData = new Array(this.atomCount); +for (var i = this.atomData.length; --i >= 0; ) this.atomData[i] = ""; + +while (this.line.indexOf("V ") == 0) { +var iAtom = this.parseIntAt(this.line, 3); +if (iAtom < 1 || iAtom > this.atomCount) { +JU.Logger.error("V nnn does not evalute to a valid atom number: " + iAtom); +return; +}var s = this.line.substring(6).trim(); +this.atomData[iAtom - 1] = s; +this.rd(); +} +}); +Clazz_defineMethod(c$, "readIsotopes", +function(){ +var n = this.parseIntAt(this.line, 6); +try { +var i0 = this.asc.getLastAtomSetAtomIndex(); +for (var i = 0, pt = 9; i < n; i++) { +var ipt = this.parseIntAt(this.line, pt); +var atom = this.asc.atoms[ipt + i0 - 1]; +var iso = this.parseIntAt(this.line, pt + 4); +pt += 8; +var sym = JU.PT.replaceAllCharacters(atom.elementSymbol, "0123456789", ""); +if (iso == 17 && sym.equals("C")) { +atom.elementSymbol = "N"; +} else if (iso == 5 && sym.equals("H")) { +this.deleteAtom(atom); +} else { +atom.elementSymbol = "" + iso + sym; +}} +} catch (e) { +} +this.rd(); +}); +Clazz_defineMethod(c$, "deleteAtom", +function(atom){ +if (this.bsDeleted == null) this.bsDeleted = new JU.BS(); +this.bsDeleted.set(atom.index); +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "readMolData", +function(molData, _keyList){ +var atoms = this.asc.atoms; +var dataName = JU.PT.trim(this.line, "> <").toLowerCase(); +var data = ""; +var fdata = null; +while (this.rd() != null && !this.line.equals("$$$$") && this.line.length > 0) data += (this.line.length == 81 && this.line.charAt(80) == '+' ? this.line.substring(0, 80) : this.line + "\n"); + +data = JU.PT.trim(data, "\n"); +JU.Logger.info(dataName + ":" + JU.PT.esc(data)); +molData.put(dataName, data); +_keyList.addLast(dataName); +var ndata = 0; +if (dataName.toUpperCase().contains("_PARTIAL_CHARGES")) { +try { +fdata = JU.PT.parseFloatArray(data); +for (var i = this.asc.getLastAtomSetAtomIndex(), n = this.asc.ac; i < n; i++) atoms[i].partialCharge = 0; + +var pt = 0; +for (var i = Clazz_floatToInt(fdata[pt++]); --i >= 0; ) { +var atomIndex = Clazz_floatToInt(fdata[pt++]) + this.iatom0 - 1; +var partialCharge = fdata[pt++]; +atoms[atomIndex].partialCharge = partialCharge; +ndata++; +} +} catch (e) { +for (var i = this.asc.getLastAtomSetAtomIndex(), n = this.asc.ac; i < n; i++) atoms[i].partialCharge = 0; + +JU.Logger.error("error reading " + dataName + " field -- partial charges cleared"); +} +JU.Logger.info(ndata + " partial charges read"); +} else if (dataName.toUpperCase().contains("ATOM_NAMES")) { +ndata = 0; +try { +var tokens = JU.PT.getTokens(data); +var pt = 0; +for (var i = this.parseIntStr(tokens[pt++]); --i >= 0; ) { +var iatom; +while ((iatom = this.parseIntStr(tokens[pt++])) == -2147483648) { +} +var atomIndex = iatom + this.iatom0 - 1; +var name = tokens[pt++]; +if (!name.equals(".")) atoms[atomIndex].atomName = name; +ndata++; +} +} catch (e) { +JU.Logger.error("error reading " + dataName + " field"); +} +JU.Logger.info(ndata + " atom names read"); +}}, "java.util.Map,JU.Lst"); +Clazz_defineMethod(c$, "addMolAtom", +function(iAtom, isotope, elementSymbol, charge, x, y, z){ +if ("H".equals(elementSymbol)) this.nH++; + else if ("C".equals(elementSymbol)) this.nC++; +this.haveNonzeroZ = new Boolean (this.haveNonzeroZ | (z != 0)).valueOf(); +switch (isotope) { +case 0: +break; +case 1: +elementSymbol = "1H"; +break; +case 2: +elementSymbol = "2H"; +break; +case 3: +elementSymbol = "3H"; +break; +default: +elementSymbol = isotope + elementSymbol; +} +var atom = new J.adapter.smarter.Atom(); +atom.elementSymbol = elementSymbol; +atom.formalCharge = charge; +this.setAtomCoordXYZ(atom, x, y, z); +if (iAtom == -2147483648) { +this.asc.addAtom(atom); +} else { +this.haveAtomSerials = true; +atom.atomSerial = iAtom; +this.asc.addAtomWithMappedSerialNumber(atom); +}return atom; +}, "~N,~N,~S,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "fixOrder", +function(order, stereo){ +switch (order) { +default: +case 0: +case -10: +return 1; +case 1: +switch (stereo) { +case 1: +this.is2D = true; +return 1025; +case 3: +case 6: +this.is2D = true; +return 1041; +case 2: +case 4: +this.is2D = true; +return 1057; +} +break; +case 2: +case 3: +this.nDouble++; +break; +case 4: +return 515; +case 5: +return 66; +case 6: +return 513; +case 7: +return 514; +case 8: +case 9: +return 33; +case 14: +return 4; +case 15: +return 5; +case 16: +return 6; +} +return order; +}, "~N,~N"); +Clazz_defineMethod(c$, "addMolBond", +function(iAtom1, iAtom2, order, stereo){ +order = this.fixOrder(order, stereo); +if (this.haveAtomSerials) return this.asc.addNewBondFromNames(iAtom1, iAtom2, order); +return this.asc.addNewBondWithOrder(this.iatom0 + this.parseIntStr(iAtom1) - 1, this.iatom0 + this.parseIntStr(iAtom2) - 1, order); +}, "~S,~S,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.molxyz"); +Clazz_load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.molxyz.XyzReader", ["JU.Logger"], function(){ +var c$ = Clazz_declareType(J.adapter.readers.molxyz, "XyzReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz_overrideMethod(c$, "checkLine", +function(){ +var modelAtomCount = this.parseIntStr(this.line); +if (modelAtomCount == -2147483648) { +this.continuing = false; +return false; +}this.vibrationNumber = ++this.modelNumber; +if (this.desiredVibrationNumber <= 0 ? this.doGetModel(this.modelNumber, null) : this.doGetVibration(this.vibrationNumber)) { +this.rd(); +this.checkCurrentLineForScript(); +this.asc.newAtomSet(); +var name = this.line.trim(); +this.readAtoms(modelAtomCount); +this.applySymmetryAndSetTrajectory(); +this.asc.setAtomSetName(name); +if (this.isLastModel(this.modelNumber)) { +this.continuing = false; +return false; +}} else { +this.skipAtomSet(modelAtomCount); +}this.discardLinesUntilNonBlank(); +return false; +}); +Clazz_overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.isTrajectory = false; +this.finalizeReaderASCR(); +}); +Clazz_defineMethod(c$, "skipAtomSet", +function(modelAtomCount){ +this.rd(); +for (var i = modelAtomCount; --i >= 0; ) this.rd(); + +}, "~N"); +Clazz_defineMethod(c$, "readAtoms", +function(modelAtomCount){ +for (var i = 0; i < modelAtomCount; ++i) { +this.rd(); +var tokens = this.getTokens(); +if (tokens.length < 4) { +JU.Logger.warn("line cannot be read for XYZ atom data: " + this.line); +continue; +}var atom = this.addAtomXYZSymName(tokens, 1, null, null); +this.setElementAndIsotope(atom, tokens[0]); +var vpt = 4; +switch (tokens.length) { +case 4: +continue; +case 5: +case 6: +case 8: +case 9: +if (tokens[4].indexOf(".") >= 0) { +atom.partialCharge = this.parseFloatStr(tokens[4]); +} else { +var charge = this.parseIntStr(tokens[4]); +if (charge != -2147483648) atom.formalCharge = charge; +}switch (tokens.length) { +case 5: +continue; +case 6: +atom.radius = this.parseFloatStr(tokens[5]); +continue; +case 9: +atom.atomSerial = this.parseIntStr(tokens[8]); +} +vpt++; +default: +var vx = this.parseFloatStr(tokens[vpt++]); +var vy = this.parseFloatStr(tokens[vpt++]); +var vz = this.parseFloatStr(tokens[vpt++]); +if (Float.isNaN(vx) || Float.isNaN(vy) || Float.isNaN(vz)) continue; +this.asc.addVibrationVector(atom.index, vx, vy, vz); +} +} +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["JU.P3"], "J.adapter.smarter.Atom", ["JU.AU", "$.Lst", "$.V3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atomSetIndex = 0; +this.index = 0; +this.bsSymmetry = null; +this.atomSite = 0; +this.elementSymbol = null; +this.elementNumber = -1; +this.atomName = null; +this.formalCharge = -2147483648; +this.partialCharge = NaN; +this.vib = null; +this.bfactor = NaN; +this.foccupancy = 1; +this.radius = NaN; +this.isHetero = false; +this.atomSerial = -2147483648; +this.chainID = 0; +this.bondingRadius = NaN; +this.altLoc = '\0'; +this.group3 = null; +this.sequenceNumber = -2147483648; +this.insertionCode = '\0'; +this.anisoBorU = null; +this.tensors = null; +this.isNegDisorder = false; +this.typeSymbol = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "Atom", JU.P3, Cloneable); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.adapter.smarter.Atom, []); +this.set(NaN, NaN, NaN); +}); +Clazz_defineMethod(c$, "addTensor", +function(tensor, type, reset){ +if (tensor == null) return null; +if (reset || this.tensors == null) this.tensors = new JU.Lst(); +this.tensors.addLast(tensor); +if (type != null) tensor.setType(type); +return tensor; +}, "JU.Tensor,~S,~B"); +Clazz_defineMethod(c$, "getClone", +function(){ +var a; +try { +a = this.clone(); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +if (this.vib != null) { +if (Clazz_instanceOf(this.vib,"JU.Vibration")) { +a.vib = (this.vib).clone(); +} else { +a.vib = JU.V3.newV(a.vib); +}}if (this.anisoBorU != null) a.anisoBorU = JU.AU.arrayCopyF(this.anisoBorU, -1); +if (this.tensors != null) { +a.tensors = new JU.Lst(); +for (var i = this.tensors.size(); --i >= 0; ) a.tensors.addLast((this.tensors.get(i)).copyTensor()); + +}return a; +}); +Clazz_defineMethod(c$, "getElementSymbol", +function(){ +if (this.elementSymbol == null && this.atomName != null) { +var len = this.atomName.length; +var ichFirst = 0; +var chFirst = String.fromCharCode(0); +while (ichFirst < len && !J.adapter.smarter.Atom.isValidSymChar1(chFirst = this.atomName.charAt(ichFirst))) ++ichFirst; + +switch (len - ichFirst) { +case 0: +break; +default: +var chSecond = this.atomName.charAt(ichFirst + 1); +if (J.adapter.smarter.Atom.isValidSymNoCase(chFirst, chSecond)) { +this.elementSymbol = "" + chFirst + chSecond; +break; +}case 1: +if (J.adapter.smarter.Atom.isValidSym1(chFirst)) this.elementSymbol = "" + chFirst; +break; +} +}return this.elementSymbol; +}); +c$.isValidSym1 = Clazz_defineMethod(c$, "isValidSym1", +function(ch){ +return (ch >= 'A' && ch <= 'Z' && J.adapter.smarter.Atom.elementCharMasks[ch.charCodeAt(0) - 65] < 0); +}, "~S"); +c$.isValidSym2 = Clazz_defineMethod(c$, "isValidSym2", +function(ch1, ch2){ +return (ch1 >= 'A' && ch1 <= 'Z' && ch2 >= 'a' && ch2 <= 'z' && ((J.adapter.smarter.Atom.elementCharMasks[ch1.charCodeAt(0) - 65] >> (ch2.charCodeAt(0) - 97)) & 1) != 0); +}, "~S,~S"); +c$.isValidSymNoCase = Clazz_defineMethod(c$, "isValidSymNoCase", +function(ch1, ch2){ +return J.adapter.smarter.Atom.isValidSym2(ch1, ch2 < 'a' ? String.fromCharCode(ch2.charCodeAt(0) + 32) : ch2); +}, "~S,~S"); +c$.isValidSymChar1 = Clazz_defineMethod(c$, "isValidSymChar1", +function(ch){ +return (ch >= 'A' && ch <= 'Z' && J.adapter.smarter.Atom.elementCharMasks[ch.charCodeAt(0) - 65] != 0); +}, "~S"); +Clazz_defineMethod(c$, "copyTo", +function(pt, asc){ +var a = asc.newCloneAtom(this); +a.setT(pt); +return a; +}, "JU.P3,J.adapter.smarter.AtomSetCollection"); +c$.elementCharMasks = Clazz_newIntArray(-1, [1972292, -2147351151, -2146019271, -2130706430, 1441792, -2147348464, 25, -2147205008, -2147344384, 0, -2147352576, 1179905, 548936, -2147434213, -2147221504, -2145759221, 0, 1056947, -2147339946, -2147477097, -2147483648, -2147483648, -2147483648, 8388624, -2147483646, 139264]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["J.api.JmolAdapterAtomIterator"], "J.adapter.smarter.AtomIterator", ["J.api.JmolAdapter"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.iatom = 0; +this.atom = null; +this.ac = 0; +this.atoms = null; +this.bsAtoms = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "AtomIterator", null, J.api.JmolAdapterAtomIterator); +Clazz_makeConstructor(c$, +function(asc){ +this.ac = asc.ac; +this.atoms = asc.atoms; +this.bsAtoms = asc.bsAtoms; +this.iatom = 0; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.iatom == this.ac) return false; +while ((this.atom = this.atoms[this.iatom++]) == null || (this.bsAtoms != null && !this.bsAtoms.get(this.atom.index))) if (this.iatom == this.ac) return false; + +this.atoms[this.iatom - 1] = null; +return true; +}); +Clazz_overrideMethod(c$, "getAtomSetIndex", +function(){ +return this.atom.atomSetIndex; +}); +Clazz_overrideMethod(c$, "getSymmetry", +function(){ +return this.atom.bsSymmetry; +}); +Clazz_overrideMethod(c$, "getAtomSite", +function(){ +return this.atom.atomSite + 1; +}); +Clazz_overrideMethod(c$, "getUniqueID", +function(){ +return Integer.$valueOf(this.atom.index); +}); +Clazz_overrideMethod(c$, "getElementNumber", +function(){ +return (this.atom.elementNumber > 0 ? this.atom.elementNumber : J.api.JmolAdapter.getElementNumber(this.atom.getElementSymbol())); +}); +Clazz_overrideMethod(c$, "getAtomName", +function(){ +return this.atom.atomName; +}); +Clazz_overrideMethod(c$, "getFormalCharge", +function(){ +return (this.atom.formalCharge == -2147483648 ? 0 : this.atom.formalCharge); +}); +Clazz_overrideMethod(c$, "getPartialCharge", +function(){ +return this.atom.partialCharge; +}); +Clazz_overrideMethod(c$, "getTensors", +function(){ +return this.atom.tensors; +}); +Clazz_overrideMethod(c$, "getRadius", +function(){ +return this.atom.radius; +}); +Clazz_overrideMethod(c$, "getBondRadius", +function(){ +return this.atom.bondingRadius; +}); +Clazz_overrideMethod(c$, "getVib", +function(){ +return (this.atom.vib == null || Float.isNaN(this.atom.vib.z) ? null : this.atom.vib); +}); +Clazz_overrideMethod(c$, "getSeqID", +function(){ +return (this.atom.vib == null || !Float.isNaN(this.atom.vib.y) || this.atom.vib.z != 1094713365 ? 0 : Clazz_floatToInt(this.atom.vib.x)); +}); +Clazz_overrideMethod(c$, "getBfactor", +function(){ +return this.atom.bfactor; +}); +Clazz_overrideMethod(c$, "getOccupancy", +function(){ +return this.atom.foccupancy * 100; +}); +Clazz_overrideMethod(c$, "getIsHetero", +function(){ +return this.atom.isHetero; +}); +Clazz_overrideMethod(c$, "getSerial", +function(){ +return this.atom.atomSerial; +}); +Clazz_overrideMethod(c$, "getChainID", +function(){ +return this.atom.chainID; +}); +Clazz_overrideMethod(c$, "getAltLoc", +function(){ +return J.api.JmolAdapter.canonizeAlternateLocationID(this.atom.altLoc); +}); +Clazz_overrideMethod(c$, "getGroup3", +function(){ +return this.atom.group3; +}); +Clazz_overrideMethod(c$, "getSequenceNumber", +function(){ +return this.atom.sequenceNumber; +}); +Clazz_overrideMethod(c$, "getInsertionCode", +function(){ +return J.api.JmolAdapter.canonizeInsertionCode(this.atom.insertionCode); +}); +Clazz_overrideMethod(c$, "getXYZ", +function(){ +return this.atom; +}); +Clazz_overrideMethod(c$, "getElement", +function(){ +return this.getElementNumber() & 0x7F; +}); +Clazz_overrideMethod(c$, "getIsotope", +function(){ +return this.getElementNumber() >> 7; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["java.util.Hashtable"], "J.adapter.smarter.AtomSetCollection", ["java.util.Collections", "$.Properties", "JU.AU", "$.BS", "$.Lst", "$.P3", "$.V3", "J.adapter.smarter.Atom", "$.Bond", "$.SmarterJmolAdapter", "J.api.Interface", "JU.BSUtil", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.reader = null; +this.bsAtoms = null; +this.fileTypeName = null; +this.collectionName = null; +this.atomSetInfo = null; +this.atoms = null; +this.ac = 0; +this.bonds = null; +this.bondCount = 0; +this.structures = null; +this.structureCount = 0; +this.atomSetCount = 0; +this.iSet = -1; +this.atomSetNumbers = null; +this.atomSetAtomIndexes = null; +this.atomSetAtomCounts = null; +this.atomSetBondCounts = null; +this.atomSetAuxiliaryInfo = null; +this.errorMessage = null; +this.coordinatesAreFractional = false; +this.isTrajectory = false; +this.trajectoryStepCount = 0; +this.trajectorySteps = null; +this.vibrationSteps = null; +this.trajectoryNames = null; +this.doFixPeriodic = false; +this.allowMultiple = false; +this.readerList = null; +this.atomMapAnyCase = false; +this.fixedSite = 0; +this.bsStructuredModels = null; +this.haveAnisou = false; +this.baseSymmetryAtomCount = 0; +this.crystalReaderLatticeOpsOnly = false; +this.xtalSymmetry = null; +this.bondIndex0 = 0; +this.atomSymbolicMap = null; +this.haveUnitCell = false; +this.vibScale = 0; +this.firstAtomToBond = -1; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "AtomSetCollection", null); +Clazz_prepareFields (c$, function(){ +this.atomSetInfo = new java.util.Hashtable(); +this.atoms = new Array(256); +this.bonds = new Array(256); +this.structures = new Array(16); +this.atomSetNumbers = Clazz_newIntArray (16, 0); +this.atomSetAtomIndexes = Clazz_newIntArray (16, 0); +this.atomSetAtomCounts = Clazz_newIntArray (16, 0); +this.atomSetBondCounts = Clazz_newIntArray (16, 0); +this.atomSetAuxiliaryInfo = new Array(16); +this.atomSymbolicMap = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(fileTypeName, reader, array, list){ +this.fileTypeName = fileTypeName; +this.reader = reader; +this.allowMultiple = (reader == null || reader.desiredVibrationNumber < 0); +var p = new java.util.Properties(); +p.put("PATH_KEY", ".PATH"); +p.put("PATH_SEPARATOR", J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR); +this.setInfo("properties", p); +if (reader != null) { +var ii = reader.htParams.get("appendToModelIndex"); +if (ii != null) this.setInfo("appendToModelIndex", ii); +ii = reader.htParams.get("fixedSite"); +if (ii != null) this.fixedSite = ii.intValue(); +}if (array != null) { +var n = 0; +this.readerList = new JU.Lst(); +for (var i = 0; i < array.length; i++) if (array[i] != null && (array[i].ac > 0 || array[i].reader != null && array[i].reader.mustFinalizeModelSet)) this.appendAtomSetCollection(n++, array[i]); + +if (n > 1) this.setInfo("isMultiFile", Boolean.TRUE); +} else if (list != null) { +this.setInfo("isMultiFile", Boolean.TRUE); +this.appendAtomSetCollectionList(list); +}}, "~S,J.adapter.smarter.AtomSetCollectionReader,~A,JU.Lst"); +Clazz_defineMethod(c$, "setCollectionName", +function(collectionName){ +if (collectionName != null && (collectionName = collectionName.trim()).length > 0) this.collectionName = collectionName; +}, "~S"); +Clazz_defineMethod(c$, "clearGlobalBoolean", +function(globalIndex){ +this.atomSetInfo.remove(JV.JC.getBoolName(globalIndex)); +}, "~N"); +Clazz_defineMethod(c$, "setGlobalBoolean", +function(globalIndex){ +this.setInfo(JV.JC.getBoolName(globalIndex), Boolean.TRUE); +}, "~N"); +Clazz_defineMethod(c$, "getGlobalBoolean", +function(globalIndex){ +return (this.atomSetInfo.get(JV.JC.getBoolName(globalIndex)) === Boolean.TRUE); +}, "~N"); +Clazz_defineMethod(c$, "appendAtomSetCollectionList", +function(list){ +var n = list.size(); +if (n == 0) { +this.errorMessage = "No file found!"; +return; +}for (var i = 0; i < n; i++) { +var o = list.get(i); +if (Clazz_instanceOf(o,"JU.Lst")) this.appendAtomSetCollectionList(o); + else this.appendAtomSetCollection(i, o); +} +}, "JU.Lst"); +Clazz_defineMethod(c$, "setTrajectory", +function(){ +if (!this.isTrajectory) this.trajectorySteps = new JU.Lst(); +this.isTrajectory = true; +var n = (this.bsAtoms == null ? this.ac : this.bsAtoms.cardinality()); +if (n <= 1) return; +var trajectoryStep = new Array(n); +var haveVibrations = (n > 0 && this.atoms[0].vib != null && !Float.isNaN(this.atoms[0].vib.z)); +var vibrationStep = (haveVibrations ? new Array(n) : null); +var prevSteps = (this.trajectoryStepCount == 0 ? null : this.trajectorySteps.get(this.trajectoryStepCount - 1)); +for (var i = 0, ii = 0; i < this.ac; i++) { +if (this.bsAtoms != null && !this.bsAtoms.get(i)) continue; +var pt = JU.P3.newP(this.atoms[i]); +if (this.doFixPeriodic && prevSteps != null) pt = J.adapter.smarter.AtomSetCollection.fixPeriodic(pt, prevSteps[i]); +trajectoryStep[ii] = pt; +if (haveVibrations) vibrationStep[ii] = this.atoms[i].vib; +ii++; +} +if (haveVibrations) { +if (this.vibrationSteps == null) { +this.vibrationSteps = new JU.Lst(); +for (var i = 0; i < this.trajectoryStepCount; i++) this.vibrationSteps.addLast(null); + +}this.vibrationSteps.addLast(vibrationStep); +}this.trajectorySteps.addLast(trajectoryStep); +this.trajectoryStepCount++; +}); +Clazz_defineMethod(c$, "appendAtomSetCollection", +function(collectionIndex, collection){ +if (collection.reader != null && collection.reader.mustFinalizeModelSet) this.readerList.addLast(collection.reader); +var existingAtomsCount = this.ac; +this.setInfo("loadState", collection.atomSetInfo.get("loadState")); +if (collection.bsAtoms != null) { +this.getBSAtoms(0); +for (var i = collection.bsAtoms.nextSetBit(0); i >= 0; i = collection.bsAtoms.nextSetBit(i + 1)) this.bsAtoms.set(existingAtomsCount + i); + +}var clonedAtoms = 0; +var atomSetCount0 = this.atomSetCount; +for (var atomSetNum = 0; atomSetNum < collection.atomSetCount; atomSetNum++) { +this.newAtomSet(); +var info = this.atomSetAuxiliaryInfo[this.iSet] = collection.atomSetAuxiliaryInfo[atomSetNum]; +var atomInfo = info.get("PDB_CONECT_firstAtom_count_max"); +if (atomInfo != null) atomInfo[0] += existingAtomsCount; +this.setCurrentModelInfo("title", collection.collectionName); +this.setAtomSetName(collection.getAtomSetName(atomSetNum)); +for (var atomNum = 0; atomNum < collection.atomSetAtomCounts[atomSetNum]; atomNum++) { +if (this.bsAtoms != null) this.bsAtoms.set(this.ac); +this.newCloneAtom(collection.atoms[clonedAtoms]); +clonedAtoms++; +} +this.atomSetNumbers[this.iSet] = (collectionIndex < 0 ? this.iSet + 1 : ((collectionIndex + 1) * 1000000) + collection.atomSetNumbers[atomSetNum]); +} +for (var bondNum = 0; bondNum < collection.bondCount; bondNum++) { +var bond = collection.bonds[bondNum]; +this.addNewBondWithOrder(bond.atomIndex1 + existingAtomsCount, bond.atomIndex2 + existingAtomsCount, bond.order); +} +for (var i = JV.JC.globalBooleans.length; --i >= 0; ) if (collection.getGlobalBoolean(i)) this.setGlobalBoolean(i); + +for (var i = 0; i < collection.structureCount; i++) { +var s = collection.structures[i]; +this.addStructure(s); +s.modelStartEnd[0] += atomSetCount0; +s.modelStartEnd[1] += atomSetCount0; +} +}, "~N,J.adapter.smarter.AtomSetCollection"); +Clazz_defineMethod(c$, "setNoAutoBond", +function(){ +this.setInfo("noAutoBond", Boolean.TRUE); +}); +Clazz_defineMethod(c$, "freeze", +function(reverseModels){ +if (this.atomSetCount == 1 && this.collectionName == null) this.collectionName = this.getAtomSetAuxiliaryInfoValue(0, "name"); +if (reverseModels) this.reverseAtomSets(); +if (this.trajectoryStepCount > 1) this.finalizeTrajectory(); +this.getList(true); +this.getList(false); +for (var i = 0; i < this.atomSetCount; i++) { +this.setModelInfoForSet("initialAtomCount", Integer.$valueOf(this.atomSetAtomCounts[i]), i); +this.setModelInfoForSet("initialBondCount", Integer.$valueOf(this.atomSetBondCounts[i]), i); +} +}, "~B"); +Clazz_defineMethod(c$, "reverseAtomSets", +function(){ +this.reverseArray(this.atomSetAtomIndexes); +this.reverseArray(this.atomSetNumbers); +this.reverseArray(this.atomSetAtomCounts); +this.reverseArray(this.atomSetBondCounts); +J.adapter.smarter.AtomSetCollection.reverseList(this.trajectorySteps); +J.adapter.smarter.AtomSetCollection.reverseList(this.trajectoryNames); +J.adapter.smarter.AtomSetCollection.reverseList(this.vibrationSteps); +this.reverseObject(this.atomSetAuxiliaryInfo); +for (var i = 0; i < this.ac; i++) this.atoms[i].atomSetIndex = this.atomSetCount - 1 - this.atoms[i].atomSetIndex; + +for (var i = 0; i < this.structureCount; i++) { +var m = this.structures[i].modelStartEnd[0]; +if (m >= 0) { +this.structures[i].modelStartEnd[0] = this.atomSetCount - 1 - this.structures[i].modelStartEnd[1]; +this.structures[i].modelStartEnd[1] = this.atomSetCount - 1 - m; +}} +for (var i = 0; i < this.bondCount; i++) this.bonds[i].atomSetIndex = this.atomSetCount - 1 - this.atoms[this.bonds[i].atomIndex1].atomSetIndex; + +this.reverseSets(this.bonds, this.bondCount); +var lists = JU.AU.createArrayOfArrayList(this.atomSetCount); +for (var i = 0; i < this.atomSetCount; i++) lists[i] = new JU.Lst(); + +for (var i = 0; i < this.ac; i++) lists[this.atoms[i].atomSetIndex].addLast(this.atoms[i]); + +var newIndex = Clazz_newIntArray (this.ac, 0); +var n = this.ac; +for (var i = this.atomSetCount; --i >= 0; ) for (var j = lists[i].size(); --j >= 0; ) { +var a = this.atoms[--n] = lists[i].get(j); +newIndex[a.index] = n; +a.index = n; +} + +for (var i = 0; i < this.bondCount; i++) { +this.bonds[i].atomIndex1 = newIndex[this.bonds[i].atomIndex1]; +this.bonds[i].atomIndex2 = newIndex[this.bonds[i].atomIndex2]; +} +for (var i = 0; i < this.atomSetCount; i++) { +var conect = this.getAtomSetAuxiliaryInfoValue(i, "PDB_CONECT_firstAtom_count_max"); +if (conect == null) continue; +conect[0] = newIndex[conect[0]]; +conect[1] = this.atomSetAtomCounts[i]; +} +}); +Clazz_defineMethod(c$, "reverseSets", +function(o, n){ +var lists = JU.AU.createArrayOfArrayList(this.atomSetCount); +for (var i = 0; i < this.atomSetCount; i++) lists[i] = new JU.Lst(); + +for (var i = 0; i < n; i++) { +var index = o[i].atomSetIndex; +if (index < 0) return; +lists[o[i].atomSetIndex].addLast(o[i]); +} +for (var i = this.atomSetCount; --i >= 0; ) for (var j = lists[i].size(); --j >= 0; ) o[--n] = lists[i].get(j); + + +}, "~A,~N"); +Clazz_defineMethod(c$, "reverseObject", +function(o){ +var n = this.atomSetCount; +for (var i = Clazz_doubleToInt(n / 2); --i >= 0; ) JU.AU.swap(o, i, n - 1 - i); + +}, "~A"); +c$.reverseList = Clazz_defineMethod(c$, "reverseList", +function(list){ +if (list == null) return; +java.util.Collections.reverse(list); +}, "JU.Lst"); +Clazz_defineMethod(c$, "reverseArray", +function(a){ +var n = this.atomSetCount; +for (var i = Clazz_doubleToInt(n / 2); --i >= 0; ) JU.AU.swapInt(a, i, n - 1 - i); + +}, "~A"); +Clazz_defineMethod(c$, "getList", +function(isAltLoc){ +var i; +for (i = this.ac; --i >= 0; ) if (this.atoms[i] != null && (isAltLoc ? this.atoms[i].altLoc : this.atoms[i].insertionCode) != '\0') break; + +if (i < 0) return; +var lists = new Array(this.atomSetCount); +for (i = 0; i < this.atomSetCount; i++) lists[i] = ""; + +var pt; +for (i = 0; i < this.ac; i++) { +if (this.atoms[i] == null) continue; +var id = (isAltLoc ? this.atoms[i].altLoc : this.atoms[i].insertionCode); +if (id != '\0' && lists[pt = this.atoms[i].atomSetIndex].indexOf(id) < 0) lists[pt] += id; +} +var type = (isAltLoc ? "altLocs" : "insertionCodes"); +for (i = 0; i < this.atomSetCount; i++) if (lists[i].length > 0) this.setModelInfoForSet(type, lists[i], i); + +}, "~B"); +Clazz_defineMethod(c$, "finish", +function(){ +if (this.reader != null) this.reader.finalizeModelSet(); + else if (this.readerList != null) for (var i = 0; i < this.readerList.size(); i++) this.readerList.get(i).finalizeModelSet(); + +this.atoms = null; +this.atomSetAtomCounts = Clazz_newIntArray (16, 0); +this.atomSetAuxiliaryInfo = new Array(16); +this.atomSetInfo = new java.util.Hashtable(); +this.atomSetCount = 0; +this.atomSetNumbers = Clazz_newIntArray (16, 0); +this.atomSymbolicMap = new java.util.Hashtable(); +this.bonds = null; +this.iSet = -1; +this.readerList = null; +this.xtalSymmetry = null; +this.structures = new Array(16); +this.structureCount = 0; +this.trajectorySteps = null; +this.vibrationSteps = null; +}); +Clazz_defineMethod(c$, "discardPreviousAtoms", +function(){ +for (var i = this.ac; --i >= 0; ) this.atoms[i] = null; + +this.ac = 0; +this.clearMap(); +this.atomSetCount = 0; +this.iSet = -1; +for (var i = this.atomSetAuxiliaryInfo.length; --i >= 0; ) { +this.atomSetAtomCounts[i] = 0; +this.atomSetBondCounts[i] = 0; +this.atomSetAuxiliaryInfo[i] = null; +} +}); +Clazz_defineMethod(c$, "removeCurrentAtomSet", +function(){ +if (this.iSet < 0) return; +var ai = this.atomSetAtomIndexes[this.iSet]; +if (this.bsAtoms != null) this.bsAtoms.clearBits(ai, this.ac); +this.ac = ai; +this.atomSetAtomCounts[this.iSet] = 0; +this.iSet--; +this.atomSetCount--; +this.reader.doCheckUnitCell = false; +}); +Clazz_defineMethod(c$, "getHydrogenAtomCount", +function(){ +var n = 0; +for (var i = 0; i < this.ac; i++) if (this.atoms[i].elementNumber == 1 || this.atoms[i].elementSymbol.equals("H")) n++; + +return n; +}); +Clazz_defineMethod(c$, "newCloneAtom", +function(atom){ +var clone = atom.getClone(); +this.addAtom(clone); +return clone; +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "cloneFirstAtomSet", +function(atomCount){ +if (!this.allowMultiple) return 0; +this.newAtomSet(); +if (atomCount == 0) atomCount = this.atomSetAtomCounts[0]; +for (var i = 0; i < atomCount; ++i) this.newCloneAtom(this.atoms[i]); + +return this.ac; +}, "~N"); +Clazz_defineMethod(c$, "cloneAtomSetWithBonds", +function(isLast){ +var nBonds = this.atomSetBondCounts[isLast ? this.iSet : 0]; +var atomIncrement = (isLast ? this.cloneLastAtomSet() : this.cloneFirstAtomSet(0)); +if (atomIncrement > 0) for (var i = 0; i < nBonds; i++) { +var bond = this.bonds[this.bondCount - nBonds]; +this.addNewBondWithOrder(bond.atomIndex1 + atomIncrement, bond.atomIndex2 + atomIncrement, bond.order); +} +}, "~B"); +Clazz_defineMethod(c$, "cloneLastAtomSet", +function(){ +return this.cloneLastAtomSetFromPoints(0, null); +}); +Clazz_defineMethod(c$, "cloneLastAtomSetFromPoints", +function(ac, pts){ +if (!this.allowMultiple) return 0; +var count = (ac > 0 ? ac : this.getLastAtomSetAtomCount()); +var atomIndex = this.getLastAtomSetAtomIndex(); +this.newAtomSet(); +for (var i = 0; i < count; ++i) { +var atom = this.newCloneAtom(this.atoms[atomIndex++]); +if (pts != null) atom.setT(pts[i]); +} +return count; +}, "~N,~A"); +Clazz_defineMethod(c$, "getLastAtomSetAtomCount", +function(){ +return this.atomSetAtomCounts[this.iSet]; +}); +Clazz_defineMethod(c$, "getLastAtomSetAtomIndex", +function(){ +return this.ac - this.atomSetAtomCounts[this.iSet]; +}); +Clazz_defineMethod(c$, "addNewAtom", +function(){ +return this.addAtom( new J.adapter.smarter.Atom()); +}); +Clazz_defineMethod(c$, "addAtom", +function(atom){ +if (this.ac == this.atoms.length) { +if (this.ac > 200000) this.atoms = JU.AU.ensureLength(this.atoms, this.ac + 50000); + else this.atoms = JU.AU.doubleLength(this.atoms); +}if (this.atomSetCount == 0) this.newAtomSet(); +atom.index = this.ac; +this.atoms[this.ac++] = atom; +atom.atomSetIndex = this.iSet; +atom.atomSite = (this.fixedSite > 0 ? this.fixedSite - 1 : this.atomSetAtomCounts[this.iSet]++); +return atom; +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "addAtomWithMappedName", +function(atom){ +var atomName = this.addAtom(atom).atomName; +if (atomName != null) this.atomSymbolicMap.put(atomName, atom); +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "addAtomWithMappedSerialNumber", +function(atom){ +var atomSerial = this.addAtom(atom).atomSerial; +if (atomSerial != -2147483648) this.atomSymbolicMap.put("" + atomSerial, atom); +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "getAtomFromName", +function(atomName){ +return this.atomSymbolicMap.get(atomName); +}, "~S"); +Clazz_defineMethod(c$, "setAtomMapAnyCase", +function(){ +this.atomMapAnyCase = true; +var newMap = new java.util.Hashtable(); +newMap.putAll(this.atomSymbolicMap); +for (var e, $e = this.atomSymbolicMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +var uc = name.toUpperCase(); +if (!uc.equals(name)) newMap.put(uc, e.getValue()); +} +this.atomSymbolicMap = newMap; +}); +Clazz_defineMethod(c$, "getAtomIndex", +function(name){ +var a = this.atomSymbolicMap.get(name); +if (a == null && this.atomMapAnyCase) a = this.atomSymbolicMap.get(name.toUpperCase()); +return (a == null ? -1 : a.index); +}, "~S"); +Clazz_defineMethod(c$, "addNewBondWithOrder", +function(atomIndex1, atomIndex2, order){ +var b = null; +if (atomIndex1 >= 0 && atomIndex1 < this.ac && atomIndex2 >= 0 && atomIndex2 < this.ac && atomIndex1 != atomIndex2) { +b = new J.adapter.smarter.Bond(atomIndex1, atomIndex2, order); +this.addBond(b); +}return b; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "addNewBondFromNames", +function(atomName1, atomName2, order){ +return this.addNewBondWithOrderA(this.getAtomFromName(atomName1), this.getAtomFromName(atomName2), order); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "addNewBondWithOrderA", +function(atom1, atom2, order){ +return (atom1 != null && atom2 != null ? this.addNewBondWithOrder(atom1.index, atom2.index, order) : null); +}, "J.adapter.smarter.Atom,J.adapter.smarter.Atom,~N"); +Clazz_defineMethod(c$, "addBond", +function(bond){ +if (this.trajectoryStepCount > 0) return; +if (bond.atomIndex1 < 0 || bond.atomIndex2 < 0 || bond.order < 0 || bond.atomIndex1 == bond.atomIndex2 || this.atoms[bond.atomIndex1].atomSetIndex != this.atoms[bond.atomIndex2].atomSetIndex) { +if (JU.Logger.debugging) { +JU.Logger.debug(">>>>>>BAD BOND:" + bond.atomIndex1 + "-" + bond.atomIndex2 + " order=" + bond.order); +}return; +}this.addBondNoCheck(bond); +}, "J.adapter.smarter.Bond"); +Clazz_defineMethod(c$, "addBondNoCheck", +function(bond){ +if (this.bondCount == this.bonds.length) this.bonds = JU.AU.arrayCopyObject(this.bonds, this.bondCount + 1024); +this.bonds[this.bondCount++] = bond; +this.atomSetBondCounts[this.iSet]++; +}, "J.adapter.smarter.Bond"); +Clazz_defineMethod(c$, "finalizeStructures", +function(){ +if (this.structureCount == 0) return; +this.bsStructuredModels = new JU.BS(); +var map = new java.util.Hashtable(); +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.modelStartEnd[0] == -1) { +s.modelStartEnd[0] = 0; +s.modelStartEnd[1] = this.atomSetCount - 1; +}this.bsStructuredModels.setBits(s.modelStartEnd[0], s.modelStartEnd[1] + 1); +if (s.strandCount == 0) continue; +var key = s.structureID + " " + s.modelStartEnd[0]; +var v = map.get(key); +var count = (v == null ? 0 : v.intValue()) + 1; +map.put(key, Integer.$valueOf(count)); +} +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.strandCount == 1) s.strandCount = map.get(s.structureID + " " + s.modelStartEnd[0]).intValue(); +} +}); +Clazz_defineMethod(c$, "addStructure", +function(structure){ +if (this.structureCount == this.structures.length) this.structures = JU.AU.arrayCopyObject(this.structures, this.structureCount + 32); +this.structures[this.structureCount++] = structure; +}, "J.adapter.smarter.Structure"); +Clazz_defineMethod(c$, "addVibrationVectorWithSymmetry", +function(iatom, vx, vy, vz, withSymmetry){ +if (!withSymmetry) { +this.addVibrationVector(iatom, vx, vy, vz); +return; +}var atomSite = this.atoms[iatom].atomSite; +var atomSetIndex = this.atoms[iatom].atomSetIndex; +for (var i = iatom; i < this.ac && this.atoms[i].atomSetIndex == atomSetIndex; i++) { +if (this.atoms[i].atomSite == atomSite) this.addVibrationVector(i, vx, vy, vz); +} +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "addVibrationVector", +function(iatom, x, y, z){ +if (!this.allowMultiple) iatom = iatom % this.ac; +return (this.atoms[iatom].vib = JU.V3.new3(x, y, z)); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setCoordinatesAreFractional", +function(tf){ +this.coordinatesAreFractional = tf; +this.setCurrentModelInfo("coordinatesAreFractional", Boolean.$valueOf(tf)); +if (tf) this.setGlobalBoolean(0); +}, "~B"); +Clazz_defineMethod(c$, "setAnisoBorU", +function(atom, data, type){ +this.haveAnisou = true; +atom.anisoBorU = data; +data[6] = type; +}, "J.adapter.smarter.Atom,~A,~N"); +Clazz_defineMethod(c$, "setU", +function(atom, i, val){ +var data = atom.anisoBorU; +if (data == null) this.setAnisoBorU(atom, data = Clazz_newFloatArray (8, 0), 8); +data[i] = val; +}, "J.adapter.smarter.Atom,~N,~N"); +Clazz_defineMethod(c$, "getXSymmetry", +function(){ +if (this.xtalSymmetry == null) this.xtalSymmetry = (J.api.Interface.getOption("adapter.smarter.XtalSymmetry", this.reader.vwr, "file")).set(this.reader); +return this.xtalSymmetry; +}); +Clazz_defineMethod(c$, "getSymmetry", +function(){ +return this.getXSymmetry().getSymmetry(); +}); +Clazz_defineMethod(c$, "setSymmetry", +function(symmetry){ +return (symmetry == null ? null : this.getXSymmetry().setSymmetry(symmetry)); +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "newFileSymmetry", +function(){ +return this.getXSymmetry().newFileSymmetry(); +}); +Clazz_defineMethod(c$, "setTensors", +function(){ +if (this.haveAnisou) this.getXSymmetry().setTensors(); +}); +Clazz_defineMethod(c$, "setInfo", +function(key, value){ +if (value == null) this.atomSetInfo.remove(key); + else this.atomSetInfo.put(key, value); +}, "~S,~O"); +Clazz_defineMethod(c$, "setAtomSetCollectionPartialCharges", +function(auxKey){ +if (!this.atomSetInfo.containsKey(auxKey)) return false; +var atomData = this.atomSetInfo.get(auxKey); +var n = atomData.size(); +for (var i = this.ac; --i >= 0; ) this.atoms[i].partialCharge = atomData.get(i % n).floatValue(); + +JU.Logger.info("Setting partial charges type " + auxKey); +return true; +}, "~S"); +Clazz_defineMethod(c$, "mapPartialCharge", +function(atomName, charge){ +this.getAtomFromName(atomName).partialCharge = charge; +}, "~S,~N"); +c$.fixPeriodic = Clazz_defineMethod(c$, "fixPeriodic", +function(pt, pt0){ +pt.x = J.adapter.smarter.AtomSetCollection.fixPoint(pt.x, pt0.x); +pt.y = J.adapter.smarter.AtomSetCollection.fixPoint(pt.y, pt0.y); +pt.z = J.adapter.smarter.AtomSetCollection.fixPoint(pt.z, pt0.z); +return pt; +}, "JU.P3,JU.P3"); +c$.fixPoint = Clazz_defineMethod(c$, "fixPoint", +function(x, x0){ +while (x - x0 > 0.9) { +x -= 1; +} +while (x - x0 < -0.9) { +x += 1; +} +return x; +}, "~N,~N"); +Clazz_defineMethod(c$, "finalizeTrajectoryAs", +function(trajectorySteps, vibrationSteps){ +this.trajectorySteps = trajectorySteps; +this.vibrationSteps = vibrationSteps; +this.trajectoryStepCount = trajectorySteps.size(); +this.finalizeTrajectory(); +}, "JU.Lst,JU.Lst"); +Clazz_defineMethod(c$, "finalizeTrajectory", +function(){ +if (this.trajectoryStepCount == 0) return; +var trajectory = this.trajectorySteps.get(0); +var vibrations = (this.vibrationSteps == null ? null : this.vibrationSteps.get(0)); +var n = (this.bsAtoms == null ? this.ac : this.bsAtoms.cardinality()); +if (this.vibrationSteps != null && vibrations != null && vibrations.length < n || trajectory.length < n) { +this.errorMessage = "File cannot be loaded as a trajectory"; +return; +}var v = new JU.V3(); +for (var i = 0, ii = 0; i < this.ac; i++) { +if (this.bsAtoms != null && !this.bsAtoms.get(i)) continue; +if (this.vibrationSteps != null) this.atoms[i].vib = (vibrations == null ? v : vibrations[ii]); +if (trajectory[ii] != null) this.atoms[i].setT(trajectory[ii]); +ii++; +} +this.setInfo("trajectorySteps", this.trajectorySteps); +if (this.vibrationSteps != null) this.setInfo("vibrationSteps", this.vibrationSteps); +if (this.ac == 0) this.ac = trajectory.length; +}); +Clazz_defineMethod(c$, "newAtomSet", +function(){ +this.newAtomSetClear(true); +}); +Clazz_defineMethod(c$, "newAtomSetClear", +function(doClearMap){ +if (!this.allowMultiple && this.iSet >= 0) this.reader.discardPreviousAtoms(); +this.bondIndex0 = this.bondCount; +if (this.isTrajectory) this.reader.discardPreviousAtoms(); +this.iSet = this.atomSetCount++; +if (this.atomSetCount > this.atomSetNumbers.length) { +this.atomSetAtomIndexes = JU.AU.doubleLengthI(this.atomSetAtomIndexes); +this.atomSetAtomCounts = JU.AU.doubleLengthI(this.atomSetAtomCounts); +this.atomSetBondCounts = JU.AU.doubleLengthI(this.atomSetBondCounts); +this.atomSetAuxiliaryInfo = JU.AU.doubleLength(this.atomSetAuxiliaryInfo); +}this.atomSetAtomIndexes[this.iSet] = this.ac; +if (this.atomSetCount + this.trajectoryStepCount > this.atomSetNumbers.length) { +this.atomSetNumbers = JU.AU.doubleLengthI(this.atomSetNumbers); +}if (this.isTrajectory) { +this.atomSetNumbers[this.iSet + this.trajectoryStepCount] = this.atomSetCount + this.trajectoryStepCount; +} else { +this.atomSetNumbers[this.iSet] = this.atomSetCount; +}if (doClearMap) { +this.clearMap(); +}this.setCurrentModelInfo("title", this.collectionName); +}, "~B"); +Clazz_defineMethod(c$, "clearMap", +function(){ +this.atomSymbolicMap.clear(); +this.atomMapAnyCase = false; +}); +Clazz_defineMethod(c$, "getAtomSetAtomIndex", +function(i){ +return this.atomSetAtomIndexes[i]; +}, "~N"); +Clazz_defineMethod(c$, "getAtomSetAtomCount", +function(i){ +return this.atomSetAtomCounts[i]; +}, "~N"); +Clazz_defineMethod(c$, "getAtomSetBondCount", +function(i){ +return this.atomSetBondCounts[i]; +}, "~N"); +Clazz_defineMethod(c$, "setAtomSetName", +function(atomSetName){ +if (atomSetName == null) return; +if (this.isTrajectory) { +this.setTrajectoryName(atomSetName); +return; +}var name0 = (this.iSet < 0 ? null : this.getAtomSetName(this.iSet)); +this.setModelInfoForSet("name", atomSetName, this.iSet); +if (this.reader != null && atomSetName.length > 0 && !atomSetName.equals(name0)) this.reader.appendLoadNote(atomSetName); +if (!this.allowMultiple) this.setCollectionName(atomSetName); +}, "~S"); +Clazz_defineMethod(c$, "setTrajectoryName", +function(name){ +if (this.trajectoryStepCount == 0) return; +if (this.trajectoryNames == null) { +this.trajectoryNames = new JU.Lst(); +}for (var i = this.trajectoryNames.size(); i < this.trajectoryStepCount; i++) this.trajectoryNames.addLast(null); + +this.trajectoryNames.set(this.trajectoryStepCount - 1, name); +}, "~S"); +Clazz_defineMethod(c$, "setCurrentAtomSetNumber", +function(atomSetNumber){ +this.setAtomSetNumber(this.iSet + (this.isTrajectory ? this.trajectoryStepCount : 0), atomSetNumber); +}, "~N"); +Clazz_defineMethod(c$, "setAtomSetNumber", +function(index, atomSetNumber){ +this.atomSetNumbers[index] = atomSetNumber; +}, "~N,~N"); +Clazz_defineMethod(c$, "setAtomSetModelProperty", +function(key, value){ +this.setAtomSetModelPropertyForSet(key, value, this.iSet); +}, "~S,~S"); +Clazz_defineMethod(c$, "setAtomSetModelPropertyForSet", +function(key, value, atomSetIndex){ +var p = this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "modelProperties"); +if (p == null) this.setModelInfoForSet("modelProperties", p = new java.util.Properties(), atomSetIndex); +p.put(key, value); +if (key.startsWith(".")) p.put(key.substring(1), value); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "setAtomProperties", +function(key, data, atomSetIndex, isGroup){ +if ((typeof(data)=='string') && !(data).endsWith("\n")) data = data + "\n"; +if (atomSetIndex < 0) atomSetIndex = this.iSet; +var p = this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "atomProperties"); +if (p == null) this.setModelInfoForSet("atomProperties", p = new java.util.Hashtable(), atomSetIndex); +p.put(key, data); +}, "~S,~O,~N,~B"); +Clazz_defineMethod(c$, "setAtomSetPartialCharges", +function(auxKey){ +if (!this.atomSetAuxiliaryInfo[this.iSet].containsKey(auxKey)) { +return false; +}var atomData = this.getAtomSetAuxiliaryInfoValue(this.iSet, auxKey); +for (var i = atomData.size(); --i >= 0; ) { +this.atoms[i].partialCharge = atomData.get(i).floatValue(); +} +return true; +}, "~S"); +Clazz_defineMethod(c$, "getAtomSetAuxiliaryInfoValue", +function(index, key){ +return this.atomSetAuxiliaryInfo[index >= 0 ? index : this.iSet].get(key); +}, "~N,~S"); +Clazz_defineMethod(c$, "setCurrentModelInfo", +function(key, value){ +this.setModelInfoForSet(key, value, this.iSet); +}, "~S,~O"); +Clazz_defineMethod(c$, "setModelInfoForSet", +function(key, value, atomSetIndex){ +if (atomSetIndex < 0) return; +if (this.atomSetAuxiliaryInfo[atomSetIndex] == null) this.atomSetAuxiliaryInfo[atomSetIndex] = new java.util.Hashtable(); +if (value == null) this.atomSetAuxiliaryInfo[atomSetIndex].remove(key); + else this.atomSetAuxiliaryInfo[atomSetIndex].put(key, value); +}, "~S,~O,~N"); +Clazz_defineMethod(c$, "getAtomSetNumber", +function(atomSetIndex){ +return this.atomSetNumbers[atomSetIndex >= this.atomSetCount ? 0 : atomSetIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getAtomSetName", +function(atomSetIndex){ +if (this.trajectoryNames != null && atomSetIndex < this.trajectoryNames.size()) return this.trajectoryNames.get(atomSetIndex); +if (atomSetIndex >= this.atomSetCount) atomSetIndex = this.atomSetCount - 1; +return this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "name"); +}, "~N"); +Clazz_defineMethod(c$, "getAtomSetAuxiliaryInfo", +function(atomSetIndex){ +var i = (atomSetIndex >= this.atomSetCount ? this.atomSetCount - 1 : atomSetIndex); +return (i < 0 ? null : this.atomSetAuxiliaryInfo[i]); +}, "~N"); +Clazz_defineMethod(c$, "setAtomSetEnergy", +function(energyString, value){ +if (this.iSet < 0) return; +JU.Logger.info("Energy for model " + (this.iSet + 1) + " = " + energyString); +this.setCurrentModelInfo("EnergyString", energyString); +this.setCurrentModelInfo("Energy", Float.$valueOf(value)); +this.setAtomSetModelProperty("Energy", "" + value); +}, "~S,~N"); +Clazz_defineMethod(c$, "setAtomSetFrequency", +function(mode, pathKey, label, freq, units){ +this.setAtomSetModelProperty("FreqValue", freq); +freq += " " + (units == null ? "cm^-1" : units); +var name = (label == null ? "" : label + " ") + freq; +this.setAtomSetName(name); +this.setAtomSetModelProperty("Frequency", freq); +this.setAtomSetModelProperty("Mode", "" + mode); +this.setModelInfoForSet("vibrationalMode", Integer.$valueOf(mode), this.iSet); +if (label != null) this.setAtomSetModelProperty("FrequencyLabel", label); +this.setAtomSetModelProperty(".PATH", (pathKey == null ? "" : pathKey + J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR + "Frequencies") + "Frequencies"); +return name; +}, "~N,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "getBondList", +function(){ +var info = new Array(this.bondCount); +for (var i = 0; i < this.bondCount; i++) { +info[i] = Clazz_newArray(-1, [this.atoms[this.bonds[i].atomIndex1].atomName, this.atoms[this.bonds[i].atomIndex2].atomName, "" + this.bonds[i].order]); +} +return info; +}); +Clazz_defineMethod(c$, "centralize", +function(){ +var pt = new JU.P3(); +for (var i = 0; i < this.atomSetCount; i++) { +var n = this.atomSetAtomCounts[i]; +var atom0 = this.atomSetAtomIndexes[i]; +pt.set(0, 0, 0); +for (var j = atom0 + n; --j >= atom0; ) pt.add(this.atoms[j]); + +pt.scale(1 / n); +for (var j = atom0 + n; --j >= atom0; ) this.atoms[j].sub(pt); + +} +}); +Clazz_defineMethod(c$, "mergeTrajectories", +function(a){ +if (!this.isTrajectory || !a.isTrajectory || this.vibrationSteps != null) return; +for (var i = 0; i < a.trajectoryStepCount; i++) this.trajectorySteps.add(this.trajectoryStepCount++, a.trajectorySteps.get(i)); + +this.setInfo("trajectorySteps", this.trajectorySteps); +this.setInfo("ignoreUnitCell", a.atomSetInfo.get("ignoreUnitCell")); +}, "J.adapter.smarter.AtomSetCollection"); +Clazz_defineMethod(c$, "removeAtomSet", +function(imodel){ +if (this.bsAtoms == null) this.bsAtoms = JU.BSUtil.newBitSet2(0, this.ac); +var i0 = this.atomSetAtomIndexes[imodel]; +var nAtoms = this.atomSetAtomCounts[imodel]; +var i1 = i0 + nAtoms; +this.bsAtoms.clearBits(i0, i1); +for (var i = i1; i < this.ac; i++) this.atoms[i].atomSetIndex--; + +for (var i = imodel + 1; i < this.atomSetCount; i++) { +this.atomSetAuxiliaryInfo[i - 1] = this.atomSetAuxiliaryInfo[i]; +this.atomSetAtomIndexes[i - 1] = this.atomSetAtomIndexes[i]; +this.atomSetBondCounts[i - 1] = this.atomSetBondCounts[i]; +this.atomSetAtomCounts[i - 1] = this.atomSetAtomCounts[i]; +this.atomSetNumbers[i - 1] = this.atomSetNumbers[i]; +} +for (var i = 0; i < this.bondCount; i++) this.bonds[i].atomSetIndex = this.atoms[this.bonds[i].atomIndex1].atomSetIndex; + +this.atomSetAuxiliaryInfo[--this.atomSetCount] = null; +var n = 0; +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.modelStartEnd[0] == imodel && s.modelStartEnd[1] == imodel) { +this.structures[i] = null; +n++; +}} +if (n > 0) { +var ss = new Array(this.structureCount - n); +for (var i = 0, pt = 0; i < this.structureCount; i++) if (this.structures[i] != null) ss[pt++] = this.structures[i]; + +this.structures = ss; +}}, "~N"); +Clazz_defineMethod(c$, "removeLastUnselectedAtoms", +function(){ +var n = this.ac; +var nremoved = 0; +var i0 = this.getLastAtomSetAtomIndex(); +var nnow = 0; +for (var i = i0; i < n; i++) { +if (!this.bsAtoms.get(i)) { +nremoved++; +this.ac--; +this.atoms[i] = null; +continue; +}if (nremoved > 0) { +this.atoms[this.atoms[i].index = i - nremoved] = this.atoms[i]; +this.atoms[i] = null; +}nnow++; +} +this.atomSetAtomCounts[this.iSet] = nnow; +if (nnow == 0) { +this.iSet--; +this.atomSetCount--; +} else { +this.bsAtoms.setBits(i0, i0 + nnow); +}}); +Clazz_defineMethod(c$, "checkNoEmptyModel", +function(){ +while (this.atomSetCount > 0 && this.atomSetAtomCounts[this.atomSetCount - 1] == 0) this.atomSetCount--; + +}); +Clazz_defineMethod(c$, "getBSAtoms", +function(n){ +if (this.bsAtoms == null) { +this.bsAtoms = new JU.BS(); +if (n != 0) this.bsAtoms.setBits(0, (n < 0 ? this.ac : n)); +}return this.bsAtoms; +}, "~N"); +Clazz_defineMethod(c$, "setBSAtomsForSet", +function(iSet){ +if (this.bsAtoms != null) { +if (iSet < 0) iSet = this.iSet; +var pt = this.atomSetAtomIndexes[iSet]; +if (this.bsAtoms.nextSetBit(pt) < 0) { +var n = this.atomSetAtomCounts[iSet]; +this.bsAtoms.setBits(pt, pt + n); +}}}, "~N"); +Clazz_defineMethod(c$, "fix2Stereo", +function(){ +this.getBSAtoms(-1); +for (var i = this.bondCount; --i >= 0; ) { +var b = this.bonds[i]; +if (this.atoms[b.atomIndex2].elementSymbol.equals("H") && b.order != 1025 && b.order != 1041 && this.atoms[b.atomIndex1].elementSymbol.equals("C")) { +this.bsAtoms.clear(b.atomIndex2); +} else if (this.atoms[b.atomIndex1].elementSymbol.equals("H") && this.atoms[b.atomIndex2].elementSymbol.equals("C")) { +this.bsAtoms.clear(b.atomIndex1); +}} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["javajs.api.GenericLineReader", "JU.SB", "JV.Viewer"], "J.adapter.smarter.AtomSetCollectionReader", ["JU.BS", "$.Lst", "$.M3", "$.P3", "$.PT", "$.Quat", "$.V3", "J.adapter.smarter.Atom", "$.AtomSetCollection", "J.api.Interface", "$.JmolAdapter", "JU.BSUtil", "$.Logger", "$.SimpleUnitCell", "JV.FileManager", "$.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isBinary = false; +this.debugging = false; +this.requiresBSFilter = false; +this.primitiveToCrystal = null; +this.asc = null; +this.reader = null; +this.binaryDoc = null; +this.readerName = null; +this.htParams = null; +this.trajectorySteps = null; +this.domains = null; +this.validation = null; +this.dssr = null; +this.isConcatenated = false; +this.addedData = null; +this.addedDataKey = null; +this.thisBiomolecule = null; +this.lstNCS = null; +this.floatifyJavaDouble = true; +this.line = null; +this.prevline = null; +this.next = null; +this.ptLine = 0; +this.checkNearAtoms = true; +this.latticeType = null; +this.latticeCells = null; +this.fillRange = null; +this.doProcessLines = false; +this.iHaveUnitCell = false; +this.iHaveSymmetryOperators = false; +this.continuing = true; +this.vwr = null; +this.doApplySymmetry = false; +this.ignoreFileSymmetryOperators = false; +this.isTrajectory = false; +this.applySymmetryToBonds = false; +this.doCheckUnitCell = false; +this.getHeader = false; +this.isSequential = false; +this.optimize2D = false; +this.noHydrogens = false; +this.noMinimize = false; +this.is2D = false; +this.isMolecular = false; +this.templateAtomCount = 0; +this.modelNumber = 0; +this.vibrationNumber = 0; +this.desiredVibrationNumber = -2147483648; +this.bsModels = null; +this.useFileModelNumbers = false; +this.havePartialChargeFilter = false; +this.calculationType = "?"; +this.sgName = null; +this.ignoreFileUnitCell = false; +this.ignoreFileSpaceGroupName = false; +this.unitCellParams = null; +this.desiredModelNumber = -2147483648; +this.symmetry = null; +this.out = null; +this.iHaveFractionalCoordinates = false; +this.doPackUnitCell = false; +this.ptSupercell = null; +this.mustFinalizeModelSet = false; +this.forcePacked = false; +this.packingRange = null; +this.cellSlop = 1.0E-4; +this.rotateHexCell = false; +this.isPrimitive = false; +this.modDim = 0; +this.lowPrecision = false; +this.highprecision0 = false; +this.loadNote = null; +this.doConvertToFractional = false; +this.fileCoordinatesAreFractional = false; +this.merging = false; +this.symmetryRange = 0; +this.firstLastStep = null; +this.lastModelNumber = 2147483647; +this.desiredSpaceGroupIndex = -1; +this.latticeScaling = NaN; +this.unitCellOffset = null; +this.unitCellOffsetFractional = false; +this.moreUnitCellInfo = null; +this.paramsLattice = null; +this.paramsCentroid = false; +this.paramsPacked = false; +this.fileScaling = null; +this.fileOffset = null; +this.fileOffsetFractional = null; +this.filePath = null; +this.fileName = null; +this.baseAtomIndex = 0; +this.baseBondIndex = 0; +this.stateScriptVersionInt = 2147483647; +this.isFinalized = false; +this.noPack = false; +this.isSUPERCELL = false; +this.precision = 0; +this.haveModel = false; +this.previousSpaceGroup = null; +this.previousUnitCell = null; +this.nMatrixElements = 0; +this.ucItems = null; +this.matUnitCellOrientation = null; +this.bsFilter = null; +this.filter = null; +this.filterCased = null; +this.haveAtomFilter = false; +this.filterAltLoc = false; +this.filterGroup3 = false; +this.filterChain = false; +this.filterAtomName = false; +this.filterAtomType = false; +this.filterAtomTypeStr = null; +this.filterAtomNameTerminator = ";"; +this.filterElement = false; +this.filterHetero = false; +this.filterAllHetero = false; +this.filterEveryNth = false; +this.filterSymop = null; +this.filterN = 0; +this.nFiltered = 0; +this.doSetOrientation = false; +this.doCentralize = false; +this.addVibrations = false; +this.useAltNames = false; +this.ignoreStructure = false; +this.isDSSP1 = false; +this.allowPDBFilter = false; +this.doReadMolecularOrbitals = false; +this.reverseModels = false; +this.nameRequired = null; +this.doCentroidUnitCell = false; +this.centroidPacked = false; +this.strSupercell = null; +this.allow_a_len_1 = false; +this.slabXY = false; +this.polymerX = false; +this.fixUnitCell = false; +this.filteredPrecision = false; +this.filter1 = null; +this.filter2 = null; +this.filter1Cased = null; +this.filter2Cased = null; +this.matRot = null; +this.ms = null; +this.vibsFractional = false; +this.previousScript = null; +this.siteScript = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "AtomSetCollectionReader", null, javajs.api.GenericLineReader); +Clazz_prepareFields (c$, function(){ +this.next = Clazz_newIntArray (1, 0); +this.highprecision0 = JV.Viewer.isHighPrecision; +this.loadNote = new JU.SB(); +}); +Clazz_defineMethod(c$, "getPackingRangeValue", +function(def){ +return (this.packingRange != null ? this.packingRange.floatValue() : def != 0 ? def : 0.02); +}, "~N"); +Clazz_defineMethod(c$, "setup", +function(fullPath, htParams, readerOrDocument){ +this.setupASCR(fullPath, htParams, readerOrDocument); +}, "~S,java.util.Map,~O"); +Clazz_defineMethod(c$, "setupASCR", +function(fullPath, htParams, readerOrDocument){ +if (fullPath == null) return; +this.debugging = JU.Logger.debugging; +this.htParams = htParams; +this.filePath = JV.FileManager.stripTypePrefix("" + htParams.get("fullPathName")); +var i = this.filePath.lastIndexOf('/'); +this.fileName = this.filePath.substring(i + 1); +if (Clazz_instanceOf(readerOrDocument,"java.io.BufferedReader")) this.reader = readerOrDocument; + else if (Clazz_instanceOf(readerOrDocument,"javajs.api.GenericBinaryDocument")) this.binaryDoc = readerOrDocument; +}, "~S,java.util.Map,~O"); +Clazz_defineMethod(c$, "readData", +function(){ +this.initialize(); +this.asc = new J.adapter.smarter.AtomSetCollection(this.readerName, this, null, null); +try { +this.initializeReader(); +if (this.binaryDoc == null) { +if (this.line == null && this.continuing) this.rd(); +while (this.line != null && this.continuing) if (this.checkLine()) this.rd(); + +} else { +this.binaryDoc.setOutputChannel(this.out); +this.processBinaryDocument(); +}this.finalizeSubclassReader(); +if (!this.isFinalized) this.finalizeReaderASCR(); +} catch (e) { +JU.Logger.info("Reader error: " + e); +e.printStackTrace(); +this.setError(e); +} +if (this.reader != null) this.reader.close(); +if (this.binaryDoc != null) this.binaryDoc.close(); +return this.finish(); +}); +Clazz_defineMethod(c$, "fixBaseIndices", +function(){ +try { +var ii = this.htParams.get("baseModelIndex"); +if (ii == null) return; +var baseModelIndex = ii.intValue(); +this.baseAtomIndex += this.asc.ac; +this.baseBondIndex += this.asc.bondCount; +baseModelIndex += this.asc.atomSetCount; +this.htParams.put("baseAtomIndex", Integer.$valueOf(this.baseAtomIndex)); +this.htParams.put("baseBondIndex", Integer.$valueOf(this.baseBondIndex)); +this.htParams.put("baseModelIndex", Integer.$valueOf(baseModelIndex)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "readDataObject", +function(node){ +this.initialize(); +this.asc = new J.adapter.smarter.AtomSetCollection(this.readerName, this, null, null); +this.initializeReader(); +this.processDOM(node); +return this.finish(); +}, "~O"); +Clazz_defineMethod(c$, "processDOM", +function(DOMNode){ +}, "~O"); +Clazz_defineMethod(c$, "processBinaryDocument", +function(){ +}); +Clazz_defineMethod(c$, "initializeReader", +function(){ +}); +Clazz_defineMethod(c$, "checkLine", +function(){ +return true; +}); +Clazz_defineMethod(c$, "checkLastModel", +function(){ +if (this.isLastModel(this.modelNumber) && this.doProcessLines) return (this.continuing = this.doProcessLines = false); +this.doProcessLines = false; +return true; +}); +Clazz_defineMethod(c$, "isLastModel", +function(modelNumber){ +return (this.desiredModelNumber > 0 || modelNumber >= this.lastModelNumber); +}, "~N"); +Clazz_defineMethod(c$, "appendLoadNote", +function(info){ +if (info == null) { +this.loadNote = new JU.SB(); +return; +}this.loadNote.append(info).append("\n"); +JU.Logger.info(info); +}, "~S"); +Clazz_defineMethod(c$, "initializeTrajectoryFile", +function(){ +this.asc.addAtom( new J.adapter.smarter.Atom()); +this.trajectorySteps = this.htParams.get("trajectorySteps"); +if (this.trajectorySteps == null) this.htParams.put("trajectorySteps", this.trajectorySteps = new JU.Lst()); +}); +Clazz_defineMethod(c$, "finalizeSubclassReader", +function(){ +}); +Clazz_defineMethod(c$, "finalizeReaderASCR", +function(){ +this.isFinalized = true; +if (this.asc.atomSetCount > 0) { +if (this.asc.atomSetCount == 1) { +this.asc.setCurrentModelInfo("dbName", this.htParams.get("dbName")); +this.asc.setCurrentModelInfo("auxFiles", this.htParams.get("auxFiles")); +}this.applySymmetryAndSetTrajectory(); +this.asc.finalizeStructures(); +if (this.doCentralize) this.asc.centralize(); +if (this.fillRange != null) this.asc.setInfo("boundbox", this.fillRange); +var info = this.asc.getAtomSetAuxiliaryInfo(0); +if (info != null) { +if (this.domains != null) { +this.asc.setGlobalBoolean(5); +var s = (this.domains).getMapKeys(2, true); +var pt = s.indexOf("{ ", 2); +if (pt >= 0) s = s.substring(pt + 2); +pt = s.indexOf("_metadata"); +if (pt < 0) pt = s.indexOf("metadata"); +if (pt >= 0) s = s.substring(0, pt); +s = JU.PT.rep(JU.PT.replaceAllCharacters(s, "{}", "").trim(), "\n", "\n ") + "\n\nUse SHOW DOMAINS for details."; +this.appendLoadNote("\nDomains loaded:\n " + s); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("domains", this.domains); +} +}if (this.validation != null) { +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("validation", this.validation); +} +}if (this.dssr != null) { +info.put("dssrJSON", Boolean.TRUE); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("dssr", this.dssr); +} +}}}if (!this.floatifyJavaDouble) this.asc.setInfo("highPrecision", Boolean.TRUE); +this.setLoadNote(); +}); +Clazz_defineMethod(c$, "setLoadNote", +function(){ +var s = this.loadNote.toString(); +if (this.loadNote.length() > 0) this.asc.setInfo("modelLoadNote", s); +return s; +}); +Clazz_defineMethod(c$, "setIsPDB", +function(){ +this.asc.setGlobalBoolean(4); +if (this.htParams.get("pdbNoHydrogens") != null) this.asc.setInfo("pdbNoHydrogens", this.htParams.get("pdbNoHydrogens")); +if (this.checkFilterKey("ADDHYDROGENS")) this.asc.setInfo("pdbAddHydrogens", Boolean.TRUE); +}); +Clazz_defineMethod(c$, "setModelPDB", +function(isPDB){ +if (isPDB) this.asc.setGlobalBoolean(4); + else this.asc.clearGlobalBoolean(4); +this.asc.setCurrentModelInfo(JV.JC.getBoolName(4), isPDB ? Boolean.TRUE : null); +}, "~B"); +Clazz_defineMethod(c$, "finish", +function(){ +if (false != this.highprecision0) this.vwr.setBooleanPropertyTok("doubleprecision", 603979831, this.highprecision0); +var s = this.htParams.get("loadState"); +this.asc.setInfo("loadState", s == null ? "" : s); +s = this.htParams.get("smilesString"); +if (s != null) this.asc.setInfo("smilesString", s); +if (!this.htParams.containsKey("templateAtomCount")) this.htParams.put("templateAtomCount", Integer.$valueOf(this.asc.ac)); +if (this.bsFilter != null) { +this.htParams.put("filteredAtomCount", Integer.$valueOf(JU.BSUtil.cardinalityOf(this.bsFilter))); +this.htParams.put("bsFilter", this.bsFilter); +}if (!this.calculationType.equals("?")) this.asc.setInfo("calculationType", this.calculationType); +var name = this.asc.fileTypeName; +var fileType = name; +if (fileType.indexOf("(") >= 0) fileType = fileType.substring(0, fileType.indexOf("(")); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +this.asc.setModelInfoForSet("fileName", this.filePath, i); +this.asc.setModelInfoForSet("fileType", fileType, i); +} +this.asc.freeze(this.reverseModels); +if (this.asc.errorMessage != null) return this.asc.errorMessage + "\nfor file " + this.filePath + "\ntype " + name; +if (!this.merging && (this.asc.bsAtoms == null ? this.asc.ac == 0 : this.asc.bsAtoms.nextSetBit(0) < 0) && fileType.indexOf("DataOnly") < 0 && this.asc.atomSetInfo.get("dataOnly") == null) return "No atoms found\nfor file " + this.filePath + "\ntype " + name; +this.fixBaseIndices(); +return this.asc; +}); +Clazz_defineMethod(c$, "setError", +function(e){ +var s = e.getMessage(); +if (this.line == null) this.asc.errorMessage = "Error reading file at end of file \n" + s; + else this.asc.errorMessage = "Error reading file at line " + this.ptLine + ":\n" + this.line + "\n" + s; +e.printStackTrace(); +}, "Throwable"); +Clazz_defineMethod(c$, "initialize", +function(){ +if (this.htParams.containsKey("baseAtomIndex")) this.baseAtomIndex = (this.htParams.get("baseAtomIndex")).intValue(); +if (this.htParams.containsKey("baseBondIndex")) this.baseBondIndex = (this.htParams.get("baseBondIndex")).intValue(); +this.initializeSymmetry(); +this.vwr = this.htParams.remove("vwr"); +if (this.htParams.containsKey("stateScriptVersionInt")) this.stateScriptVersionInt = (this.htParams.get("stateScriptVersionInt")).intValue(); +this.packingRange = this.htParams.get("packingRange"); +var isHighPrecision = (this.htParams.get("highPrecision") != null); +if (this.packingRange == null && isHighPrecision) { +this.floatifyJavaDouble = false; +this.packingRange = Float.$valueOf(1.0E-4); +}this.merging = this.htParams.containsKey("merging"); +this.getHeader = this.htParams.containsKey("getHeader"); +this.isSequential = this.htParams.containsKey("isSequential"); +this.readerName = this.htParams.get("readerName"); +if (this.htParams.containsKey("outputChannel")) this.out = this.htParams.get("outputChannel"); +if (this.htParams.containsKey("vibrationNumber")) this.desiredVibrationNumber = (this.htParams.get("vibrationNumber")).intValue(); + else if (this.htParams.containsKey("modelNumber")) this.desiredModelNumber = (this.htParams.get("modelNumber")).intValue(); +this.applySymmetryToBonds = this.htParams.containsKey("applySymmetryToBonds"); +this.bsFilter = (this.requiresBSFilter ? this.htParams.get("bsFilter") : null); +this.setFilter(null); +this.fillRange = this.htParams.get("fillRange"); +this.paramsLattice = this.htParams.get("lattice"); +var o = this.htParams.get("supercell"); +this.noPack = this.checkFilterKey("NOPACK"); +if (this.strSupercell != null && !this.noPack) { +this.forcePacked = true; +}if (Clazz_instanceOf(o,"JU.P3")) { +var s = this.ptSupercell = o; +if (s.length() != 1) { +this.strSupercell = (Clazz_floatToInt(s.x)) + "a," + (Clazz_floatToInt(s.y)) + "b," + (Clazz_floatToInt(s.z)) + "c"; +this.isSUPERCELL = true; +}} else if ((typeof(o)=='string')) { +this.strSupercell = o; +this.isSUPERCELL = true; +}var ptFile = (this.htParams.containsKey("ptFile") ? (this.htParams.get("ptFile")).intValue() : -1); +this.isTrajectory = this.htParams.containsKey("isTrajectory"); +if (ptFile > 0 && this.htParams.containsKey("firstLastSteps")) { +var val = (this.htParams.get("firstLastSteps")).get(ptFile - 1); +if (Clazz_instanceOf(val,"JU.BS")) { +this.bsModels = val; +} else { +this.firstLastStep = val; +}} else if (this.htParams.containsKey("firstLastStep")) { +this.firstLastStep = this.htParams.get("firstLastStep"); +} else if (this.htParams.containsKey("bsModels")) { +this.bsModels = this.htParams.get("bsModels"); +}this.useFileModelNumbers = this.htParams.containsKey("useFileModelNumbers") || this.checkFilterKey("USEFILEMODELNUMBERS"); +if (this.htParams.containsKey("templateAtomCount")) this.templateAtomCount = (this.htParams.get("templateAtomCount")).intValue(); +if (this.bsModels != null || this.firstLastStep != null) this.desiredModelNumber = -2147483648; +if (this.bsModels == null && this.firstLastStep != null) { +if (this.firstLastStep[0] < 0) this.firstLastStep[0] = 0; +if (this.firstLastStep[2] == 0 || this.firstLastStep[1] < this.firstLastStep[0]) this.firstLastStep[1] = -1; +if (this.firstLastStep[2] < 1) this.firstLastStep[2] = 1; +this.bsModels = JU.BSUtil.newAndSetBit(this.firstLastStep[0]); +if (this.firstLastStep[1] > this.firstLastStep[0]) { +for (var i = this.firstLastStep[0]; i <= this.firstLastStep[1]; i += this.firstLastStep[2]) this.bsModels.set(i); + +}}if (this.bsModels != null && (this.firstLastStep == null || this.firstLastStep[1] != -1)) this.lastModelNumber = this.bsModels.length(); +this.symmetryRange = (this.htParams.containsKey("symmetryRange") ? (this.htParams.get("symmetryRange")).floatValue() : 0); +this.paramsCentroid = this.htParams.containsKey("centroid"); +this.paramsPacked = this.htParams.containsKey("packed"); +this.initializeSymmetryOptions(); +if (this.htParams.containsKey("spaceGroupIndex")) { +this.desiredSpaceGroupIndex = (this.htParams.get("spaceGroupIndex")).intValue(); +if (this.desiredSpaceGroupIndex == -2) this.sgName = this.htParams.get("spaceGroupName"); +this.ignoreFileSpaceGroupName = (this.desiredSpaceGroupIndex == -2 || this.desiredSpaceGroupIndex >= 0); +this.ignoreFileSymmetryOperators = (this.desiredSpaceGroupIndex != -1); +}if (this.htParams.containsKey("unitCellOffset")) { +this.fileScaling = JU.P3.new3(1, 1, 1); +this.fileOffset = this.htParams.get("unitCellOffset"); +this.fileOffsetFractional = JU.P3.newP(this.fileOffset); +this.unitCellOffsetFractional = this.htParams.containsKey("unitCellOffsetFractional"); +}if (this.htParams.containsKey("unitcell")) { +var fParams = this.htParams.get("unitcell"); +if (this.merging) this.setFractionalCoordinates(true); +if (fParams.length == 9) { +this.addExplicitLatticeVector(0, fParams, 0); +this.addExplicitLatticeVector(1, fParams, 3); +this.addExplicitLatticeVector(2, fParams, 6); +} else { +this.setUnitCell(fParams[0], fParams[1], fParams[2], fParams[3], fParams[4], fParams[5]); +}this.ignoreFileUnitCell = this.iHaveUnitCell; +if (this.merging && !this.iHaveUnitCell) this.setFractionalCoordinates(false); +}this.domains = this.htParams.get("domains"); +this.validation = this.htParams.get("validation"); +this.dssr = this.htParams.get("dssr"); +this.isConcatenated = this.htParams.containsKey("concatenate"); +}); +Clazz_defineMethod(c$, "parsePrecision", +function(s){ +if (!this.filteredPrecision) { +var pt = s.indexOf('.') + 1; +if (pt >= 0) { +var n = s.indexOf('('); +if (n < 0) { +this.precision = Math.max(this.precision, s.length - pt); +} else { +if (this.precision == 0) this.precision = n; +this.precision = Math.min(this.precision, n - 1 - pt); +}}}return this.parseFloatStr(s); +}, "~S"); +Clazz_defineMethod(c$, "setLowPrecision", +function(){ +this.lowPrecision = true; +this.cellSlop = 1.0E-4; +if (this.packingRange == null) this.packingRange = Double.$valueOf(1.0E-4); +}); +Clazz_defineMethod(c$, "setPrecision", +function(){ +var isHigh; +if (this.lowPrecision) { +isHigh = false; +this.precision = 4; +} else { +if (this.precision > 1000) { +this.precision -= 1000; +} else { +this.precision = Math.min(12, Math.max(4, this.precision)); +}isHigh = (this.precision >= 7); +if (isHigh) { +this.vwr.setBooleanProperty("doubleprecision", true); +if (JV.Viewer.isHighPrecision) { +this.cellSlop = 1.0E-12; +if (!this.paramsPacked) this.packingRange = Double.$valueOf(this.cellSlop); +this.asc.setInfo("highPrecision", Boolean.TRUE); +} else { +isHigh = false; +this.precision = 6; +this.appendLoadNote("Structure read has high precision but this version of Jmol uses float precision.\nUse JmolD.jar or JavaScript for full precision."); +}}}if (!isHigh) { +if (this.precision < 10) { +this.cellSlop = Math.pow(10, -this.precision); +}}this.symmetry.setPrecision(this.cellSlop); +this.unitCellParams[26] = this.cellSlop; +if (this.fileCoordinatesAreFractional) { +for (var i = this.asc.ac, n = this.asc.getLastAtomSetAtomIndex(); --i >= n; ) { +this.symmetry.twelfthify(this.asc.atoms[i]); +} +}this.appendLoadNote("Precision set to " + this.precision + "; packing set to " + (this.packingRange == null ? 0.02 : this.packingRange.floatValue())); +}); +Clazz_defineMethod(c$, "initializeSymmetryOptions", +function(){ +this.latticeCells = Clazz_newIntArray (4, 0); +this.doApplySymmetry = false; +var pt = this.paramsLattice; +if (pt == null || pt.length() == 0) { +if (!this.forcePacked && this.strSupercell == null) return; +pt = JU.P3.new3(1, 1, 1); +}this.latticeCells[0] = Clazz_floatToInt(pt.x); +this.latticeCells[1] = Clazz_floatToInt(pt.y); +this.latticeCells[2] = Clazz_floatToInt(pt.z); +if (Clazz_instanceOf(pt,"JU.T4")) this.latticeCells[3] = Clazz_floatToInt((pt).w); +this.doCentroidUnitCell = this.paramsCentroid; +if (this.doCentroidUnitCell && (this.latticeCells[2] == -1 || this.latticeCells[2] == 0)) this.latticeCells[2] = 1; +var isPacked = this.forcePacked || this.paramsPacked; +this.centroidPacked = this.doCentroidUnitCell && isPacked; +this.doPackUnitCell = !this.doCentroidUnitCell && (isPacked || this.latticeCells[2] < 0); +this.doApplySymmetry = (this.latticeCells[0] > 0 && this.latticeCells[1] > 0); +if (!this.doApplySymmetry) this.latticeCells = Clazz_newIntArray (3, 0); +}); +Clazz_defineMethod(c$, "doGetModel", +function(modelNumber, title){ +if (title != null && this.nameRequired != null && this.nameRequired.length > 0 && title.toUpperCase().indexOf(this.nameRequired) < 0) return false; +var isOK = (this.bsModels == null ? this.desiredModelNumber < 1 || modelNumber == this.desiredModelNumber : modelNumber > this.lastModelNumber ? false : modelNumber > 0 && this.bsModels.get(modelNumber - 1) || this.haveModel && this.firstLastStep != null && this.firstLastStep[1] < 0 && (this.firstLastStep[2] < 2 || (modelNumber - 1 - this.firstLastStep[0]) % this.firstLastStep[2] == 0)); +if (isOK && this.desiredModelNumber == 0) this.discardPreviousAtoms(); +this.haveModel = new Boolean (this.haveModel | isOK).valueOf(); +if (isOK) this.doProcessLines = true; +return isOK; +}, "~N,~S"); +Clazz_defineMethod(c$, "discardPreviousAtoms", +function(){ +this.asc.discardPreviousAtoms(); +}); +Clazz_defineMethod(c$, "initializeSymmetry", +function(){ +this.previousSpaceGroup = this.sgName; +this.previousUnitCell = this.unitCellParams; +this.iHaveUnitCell = this.ignoreFileUnitCell; +if (!this.ignoreFileUnitCell) { +this.unitCellParams = Clazz_newFloatArray (27, 0); +for (var i = 27; --i >= 0; ) this.unitCellParams[i] = NaN; + +this.unitCellParams[25] = this.latticeScaling; +this.unitCellParams[26] = this.cellSlop; +this.symmetry = null; +}if (!this.ignoreFileSpaceGroupName) this.sgName = "unspecified!"; +this.doCheckUnitCell = false; +}); +Clazz_defineMethod(c$, "newAtomSet", +function(name){ +if (this.asc.iSet >= 0) { +this.asc.newAtomSet(); +this.asc.setCollectionName(""); +} else { +this.asc.setCollectionName(name); +}this.asc.setModelInfoForSet("name", name, Math.max(0, this.asc.iSet)); +this.asc.setAtomSetName(name); +}, "~S"); +Clazz_defineMethod(c$, "cloneLastAtomSet", +function(ac, pts){ +var lastAtomCount = this.asc.getLastAtomSetAtomCount(); +this.asc.cloneLastAtomSetFromPoints(ac, pts); +if (this.asc.haveUnitCell) { +this.iHaveUnitCell = true; +this.doCheckUnitCell = true; +this.sgName = this.previousSpaceGroup; +this.unitCellParams = this.previousUnitCell; +}return lastAtomCount; +}, "~N,~A"); +Clazz_defineMethod(c$, "setSpaceGroupName", +function(name){ +if (this.ignoreFileSpaceGroupName || name == null) return; +var s = name.trim(); +if (s.length == 0 || s.equals("HM:") || s.equals(this.sgName)) return; +if (!s.equals("P1")) JU.Logger.info("Setting space group name to " + s); +this.sgName = s; +}, "~S"); +Clazz_defineMethod(c$, "setSymmetryOperator", +function(xyz){ +if (this.ignoreFileSymmetryOperators) return -1; +var isym = this.asc.getXSymmetry().addSpaceGroupOperation(xyz, true); +if (isym < 0) JU.Logger.warn("Skippings symmetry operation " + xyz); +this.iHaveSymmetryOperators = true; +return isym; +}, "~S"); +Clazz_defineMethod(c$, "initializeCartesianToFractional", +function(){ +for (var i = 0; i < 16; i++) if (!Float.isNaN(this.unitCellParams[6 + i])) return; + +for (var i = 0; i < 16; i++) this.unitCellParams[6 + i] = ((i % 5 == 0 ? 1 : 0)); + +this.nMatrixElements = 0; +}); +Clazz_defineMethod(c$, "clearUnitCell", +function(){ +if (this.ignoreFileUnitCell) return; +for (var i = 6; i < 22; i++) this.unitCellParams[i] = NaN; + +this.checkUnitCell(6); +}); +Clazz_defineMethod(c$, "setUnitCellItem", +function(i, x){ +if (this.ignoreFileUnitCell) return; +if (i == 0 && x == 1 && !this.allow_a_len_1 || i == 3 && x == 0) { +if (this.ucItems == null) this.ucItems = Clazz_newFloatArray (6, 0); +this.ucItems[i] = x; +return; +}if (this.ucItems != null && i < 6) this.ucItems[i] = x; +if (!Float.isNaN(x) && i >= 6 && Float.isNaN(this.unitCellParams[6])) this.initializeCartesianToFractional(); +this.unitCellParams[i] = x; +if (this.debugging) { +JU.Logger.debug("setunitcellitem " + i + " " + x); +}if (i < 6 || Float.isNaN(x)) this.iHaveUnitCell = this.checkUnitCell(6); + else if (++this.nMatrixElements == 12) this.iHaveUnitCell = this.checkUnitCell(22); +}, "~N,~N"); +Clazz_defineMethod(c$, "setUnitCell", +function(a, b, c, alpha, beta, gamma){ +if (this.ignoreFileUnitCell) return; +this.clearUnitCell(); +this.unitCellParams[0] = a; +this.unitCellParams[1] = b; +this.unitCellParams[2] = c; +if (alpha != 0) this.unitCellParams[3] = alpha; +if (beta != 0) this.unitCellParams[4] = beta; +if (gamma != 0) this.unitCellParams[5] = gamma; +this.iHaveUnitCell = this.checkUnitCell(6); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "addExplicitLatticeVector", +function(i, xyz, i0){ +if (this.ignoreFileUnitCell) return; +if (i == 0) for (var j = 0; j < 6; j++) this.unitCellParams[j] = 0; + +i = 6 + i * 3; +this.unitCellParams[i++] = xyz[i0++]; +this.unitCellParams[i++] = xyz[i0++]; +this.unitCellParams[i] = xyz[i0]; +if (Float.isNaN(this.unitCellParams[0])) { +for (i = 0; i < 6; i++) this.unitCellParams[i] = -1; + +}this.iHaveUnitCell = this.checkUnitCell(15); +if (this.iHaveUnitCell) { +if (this.slabXY || this.polymerX) this.unitCellParams[2] = -1; +if (this.polymerX) this.unitCellParams[1] = -1; +}}, "~N,~A,~N"); +Clazz_defineMethod(c$, "checkUnitCell", +function(n){ +for (var i = 0; i < n; i++) if (Float.isNaN(this.unitCellParams[i])) return false; + +this.fixFloatA(this.unitCellParams); +if (n == 22 && this.unitCellParams[0] == 1) { +if (this.unitCellParams[1] == 1 && this.unitCellParams[2] == 1 && this.unitCellParams[6] == 1 && this.unitCellParams[11] == 1 && this.unitCellParams[16] == 1) { +return false; +}}if (n == 6 && Float.isNaN(this.unitCellParams[6])) { +if (this.slabXY && this.unitCellParams[2] > 0) { +JU.SimpleUnitCell.addVectors(this.unitCellParams); +this.unitCellParams[2] = -1; +} else if (this.polymerX && this.unitCellParams[1] > 0) { +JU.SimpleUnitCell.addVectors(this.unitCellParams); +this.unitCellParams[1] = this.unitCellParams[2] = -1; +}}if (this.doApplySymmetry) { +this.getSymmetry(); +this.doConvertToFractional = !this.fileCoordinatesAreFractional; +}return true; +}, "~N"); +Clazz_defineMethod(c$, "getSymmetry", +function(){ +if (!this.iHaveUnitCell) return null; +if (this.symmetry == null) { +(this.symmetry = this.asc.newFileSymmetry()).setUnitCellFromParams(this.unitCellParams, false, this.cellSlop); +this.checkUnitCellOffset(); +}if (this.symmetry == null) this.iHaveUnitCell = false; + else this.symmetry.setSpaceGroupName(this.sgName); +return this.symmetry; +}); +Clazz_defineMethod(c$, "checkUnitCellOffset", +function(){ +if (this.fileOffsetFractional == null || this.symmetry == null) return; +this.fileOffset.setT(this.fileOffsetFractional); +if (this.unitCellOffsetFractional != this.fileCoordinatesAreFractional) { +if (this.unitCellOffsetFractional) this.symmetry.toCartesian(this.fileOffset, false); + else this.symmetry.toFractional(this.fileOffset, false); +}}); +Clazz_defineMethod(c$, "fractionalizeCoordinates", +function(toFrac){ +if (this.getSymmetry() == null) return; +var a = this.asc.atoms; +if (toFrac) for (var i = this.asc.ac; --i >= 0; ) this.symmetry.toFractional(a[i], false); + + else for (var i = this.asc.ac; --i >= 0; ) this.symmetry.toCartesian(a[i], false); + +this.setFractionalCoordinates(toFrac); +}, "~B"); +Clazz_defineMethod(c$, "setFractionalCoordinates", +function(TF){ +this.iHaveFractionalCoordinates = this.fileCoordinatesAreFractional = TF; +this.checkUnitCellOffset(); +}, "~B"); +Clazz_defineMethod(c$, "setFilterAtomTypeStr", +function(s){ +this.filterAtomTypeStr = s; +this.filterAtomNameTerminator = "\0"; +}, "~S"); +Clazz_defineMethod(c$, "setFilter", +function(filter0){ +if (filter0 == null) { +filter0 = this.htParams.get("filter"); +} else { +this.bsFilter = null; +this.filterCased = null; +}if (this.filterCased == null) this.filterCased = (filter0 == null ? null : filter0 + ";"); +if (filter0 != null) filter0 = filter0.toUpperCase(); +this.filter = filter0; +this.doSetOrientation = !this.checkFilterKey("NOORIENT"); +this.doCentralize = (!this.checkFilterKey("NOCENTER") && this.checkFilterKey("CENTER")); +this.addVibrations = !this.checkFilterKey("NOVIB"); +this.ignoreStructure = this.checkFilterKey("DSSP"); +this.isDSSP1 = this.checkFilterKey("DSSP1"); +this.doReadMolecularOrbitals = !this.checkFilterKey("NOMO"); +this.useAltNames = this.checkFilterKey("ALTNAME"); +this.reverseModels = this.checkFilterKey("REVERSEMODELS"); +this.allow_a_len_1 = this.checkFilterKey("TOPOS"); +this.slabXY = this.checkFilterKey("SLABXY"); +this.polymerX = !this.slabXY && this.checkFilterKey("POLYMERX"); +this.noHydrogens = this.checkFilterKey("NOH"); +this.noMinimize = this.checkFilterKey("NOMIN"); +this.optimize2D = this.checkFilterKey("2D") && !this.noHydrogens && !this.noMinimize; +if (this.filter == null) return; +this.fixUnitCell = this.checkFilterKey("FIXUNITCELL"); +if (this.checkFilterKey("LOWPRECISION")) { +this.setLowPrecision(); +}if (this.checkFilterKey("HETATM")) { +this.filterHetero = true; +this.filter = JU.PT.rep(this.filter, "HETATM", "HETATM-Y"); +this.filterCased = JU.PT.rep(this.filterCased, "HETATM", "HETATM-Y"); +}if (this.checkFilterKey("ATOM")) { +this.filterHetero = true; +this.filter = JU.PT.rep(this.filter, "ATOM", "HETATM-N"); +this.filterCased = JU.PT.rep(this.filterCased, "ATOM", "HETATM-N"); +}if (this.checkFilterKey("CELL=")) this.strSupercell = this.filter.substring(this.filter.indexOf("CELL=") + 5).toLowerCase(); +this.nameRequired = JU.PT.getQuotedAttribute(this.filter, "NAME"); +if (this.nameRequired != null) { +if (this.nameRequired.startsWith("'")) this.nameRequired = JU.PT.split(this.nameRequired, "'")[1]; + else if (this.nameRequired.startsWith("\"")) this.nameRequired = JU.PT.split(this.nameRequired, "\"")[1]; +this.filter = JU.PT.rep(this.filter, this.nameRequired, ""); +filter0 = this.filter = JU.PT.rep(this.filter, "NAME=", ""); +}this.filterAtomName = this.checkFilterKey("*.") || this.checkFilterKey("!."); +if (this.filter.startsWith("_") || this.filter.startsWith("!_") || this.filter.indexOf(";_") >= 0) this.filterElement = this.checkFilterKey("_"); +this.filterGroup3 = this.checkFilterKey("["); +this.filterChain = this.checkFilterKey(":"); +this.filterAltLoc = this.checkFilterKey("%"); +this.filterEveryNth = this.checkFilterKey("/="); +this.filterAllHetero = this.checkFilterKey("ALLHET"); +if (this.filterEveryNth) this.filterN = this.parseIntAt(this.filter, this.filter.indexOf("/=") + 2); + else if (this.filter.startsWith("=") || this.filter.indexOf(";=") >= 0) this.filterAtomType = this.checkFilterKey("="); +if (this.filterN == -2147483648) this.filterEveryNth = false; +this.haveAtomFilter = this.filterAtomName || this.filterAtomType || this.filterElement || this.filterGroup3 || this.filterChain || this.filterAltLoc || this.filterHetero || this.filterEveryNth || this.checkFilterKey("/="); +if (this.bsFilter == null) { +this.bsFilter = new JU.BS(); +this.htParams.put("bsFilter", this.bsFilter); +this.filter = (";" + this.filter + ";").$replace(',', ';'); +var p = this.getFilter("PRECISION="); +if (p != null) { +var prec = JU.PT.parseInt(p); +if (prec > 0 && prec <= 16) { +this.precision = 1000 + prec; +this.filteredPrecision = true; +}}var s = this.getFilter("LATTICESCALING="); +if (s != null && this.unitCellParams.length > 25) this.unitCellParams[25] = this.latticeScaling = this.parseFloatStr(s); +s = this.getFilter("SYMOP="); +if (s != null) this.filterSymop = " " + s + " "; +JU.Logger.info("filtering with " + this.filter); +if (this.haveAtomFilter) { +var ipt; +this.filter1Cased = this.filterCased; +this.filter2Cased = ""; +if ((ipt = this.filter.indexOf("|")) >= 0) { +this.filter1Cased = this.filter.substring(0, ipt).trim() + ";"; +this.filter2Cased = ";" + this.filter.substring(ipt).trim(); +}this.filter1 = this.filter1Cased.toUpperCase(); +this.filter2 = (this.filter2Cased.length == 0 ? null : this.filter2Cased.toUpperCase()); +}}}, "~S"); +Clazz_defineMethod(c$, "getFilterWithCase", +function(key){ +var pt = (this.filterCased == null ? -1 : this.filterCased.toUpperCase().indexOf(key.toUpperCase())); +return (pt < 0 ? null : this.filterCased.substring(pt + key.length, this.filterCased.indexOf(";", pt))); +}, "~S"); +Clazz_defineMethod(c$, "getFilter", +function(key){ +var pt = (this.filter == null ? -1 : this.filter.indexOf(key)); +return (pt < 0 ? null : this.filter.substring(pt + key.length, this.filter.indexOf(";", pt))); +}, "~S"); +Clazz_defineMethod(c$, "checkFilterKey", +function(key){ +return (this.filter != null && this.filter.indexOf(key) >= 0); +}, "~S"); +Clazz_defineMethod(c$, "checkAndRemoveFilterKey", +function(key){ +if (!this.checkFilterKey(key)) return false; +this.filter = JU.PT.rep(this.filter, key, ""); +if (this.filter.length < 3) this.filter = null; +return true; +}, "~S"); +Clazz_defineMethod(c$, "filterAtom", +function(atom, iAtom){ +if (!this.haveAtomFilter) return true; +var isOK = this.checkFilter(atom, this.filter1, this.filter1Cased); +if (this.filter2 != null) isOK = new Boolean (isOK | this.checkFilter(atom, this.filter2, this.filter2Cased)).valueOf(); +if (isOK && this.filterEveryNth && (!atom.isHetero || !this.filterAllHetero)) isOK = (((this.nFiltered++) % this.filterN) == 0); +this.bsFilter.setBitTo(iAtom >= 0 ? iAtom : this.asc.ac, isOK); +return isOK; +}, "J.adapter.smarter.Atom,~N"); +Clazz_defineMethod(c$, "checkFilter", +function(atom, f, fCased){ +if (atom.isHetero && this.filterAllHetero) return true; +return (!this.filterGroup3 || atom.group3 == null || !this.filterReject(f, "[", atom.group3.toUpperCase() + "]")) && (!this.filterAtomName || this.allowAtomName(atom.atomName, f)) && (this.filterAtomTypeStr == null || atom.atomName == null || atom.atomName.toUpperCase().indexOf("\0" + this.filterAtomTypeStr) >= 0) && (!this.filterElement || atom.elementSymbol == null || !this.filterReject(f, "_", atom.elementSymbol.toUpperCase() + ";")) && (!this.filterChain || atom.chainID == 0 || !this.filterReject(fCased, ":", "" + this.vwr.getChainIDStr(atom.chainID))) && (!this.filterAltLoc || atom.altLoc == '\0' || !this.filterReject(f, "%", "" + atom.altLoc)) && (!this.filterHetero || !this.allowPDBFilter || !this.filterReject(f, "HETATM", atom.isHetero ? "-Y" : "-N")); +}, "J.adapter.smarter.Atom,~S,~S"); +Clazz_defineMethod(c$, "rejectAtomName", +function(name){ +return this.filterAtomName && !this.allowAtomName(name, this.filter); +}, "~S"); +Clazz_defineMethod(c$, "allowAtomName", +function(atomName, f){ +return (atomName == null || !this.filterReject(f, ".", atomName.toUpperCase() + this.filterAtomNameTerminator)); +}, "~S,~S"); +Clazz_defineMethod(c$, "filterReject", +function(f, code, atomCode){ +return (f.indexOf(code) >= 0 && (f.indexOf("!" + code) >= 0) == (f.indexOf(code + atomCode) >= 0)); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "set2D", +function(){ +this.asc.setInfo("is2D", Boolean.TRUE); +this.asc.getBSAtoms(-1); +if (this.noHydrogens) { +this.asc.setInfo("noHydrogen", Boolean.TRUE); +this.optimize2D = false; +}if (this.optimize2D) { +this.asc.fix2Stereo(); +this.asc.setInfo("doMinimize", Boolean.TRUE); +this.appendLoadNote("This model is 2D. Its 3D structure was generated."); +} else { +this.appendLoadNote("This model is 2D. Its 3D structure has not been generated; use LOAD \"\" FILTER \"2D\" to optimize 3D."); +this.addJmolScript("select thismodel;wireframe only"); +}}); +Clazz_defineMethod(c$, "doGetVibration", +function(vibrationNumber){ +return this.addVibrations && (this.desiredVibrationNumber <= 0 || vibrationNumber == this.desiredVibrationNumber); +}, "~N"); +Clazz_defineMethod(c$, "setTransform", +function(x1, y1, z1, x2, y2, z2, x3, y3, z3){ +if (this.matRot != null || !this.doSetOrientation) return; +this.matRot = new JU.M3(); +var v = JU.V3.new3(x1, y1, z1); +v.normalize(); +this.matRot.setColumnV(0, v); +v.set(x2, y2, z2); +v.normalize(); +this.matRot.setColumnV(1, v); +v.set(x3, y3, z3); +v.normalize(); +this.matRot.setColumnV(2, v); +this.asc.setInfo("defaultOrientationMatrix", JU.M3.newM3(this.matRot)); +var q = JU.Quat.newM(this.matRot); +this.asc.setInfo("defaultOrientationQuaternion", q); +JU.Logger.info("defaultOrientationMatrix = " + this.matRot); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAtomCoordXYZ", +function(atom, x, y, z){ +atom.set(x, y, z); +this.setAtomCoord(atom); +}, "J.adapter.smarter.Atom,~N,~N,~N"); +Clazz_defineMethod(c$, "setAtomCoordScaled", +function(atom, tokens, i, f){ +if (atom == null) atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, this.parsePrecision(tokens[i]) * f, this.parsePrecision(tokens[i + 1]) * f, this.parsePrecision(tokens[i + 2]) * f); +return atom; +}, "J.adapter.smarter.Atom,~A,~N,~N"); +Clazz_defineMethod(c$, "setAtomCoordTokens", +function(atom, tokens, i){ +this.setAtomCoordXYZ(atom, this.parsePrecision(tokens[i]), this.parsePrecision(tokens[i + 1]), this.parsePrecision(tokens[i + 2])); +}, "J.adapter.smarter.Atom,~A,~N"); +Clazz_defineMethod(c$, "addAtomXYZSymName", +function(tokens, i, sym, name){ +var atom = this.asc.addNewAtom(); +if (sym != null) atom.elementSymbol = sym; +if (name != null) atom.atomName = name; +this.setAtomCoordTokens(atom, tokens, i); +return atom; +}, "~A,~N,~S,~S"); +Clazz_defineMethod(c$, "setAtomCoord", +function(atom){ +var mustFractionalize = (this.doConvertToFractional && !this.fileCoordinatesAreFractional && this.getSymmetry() != null); +if (this.fileScaling != null) { +atom.x = atom.x * this.fileScaling.x + this.fileOffset.x; +atom.y = atom.y * this.fileScaling.y + this.fileOffset.y; +atom.z = atom.z * this.fileScaling.z + this.fileOffset.z; +}if (mustFractionalize) { +if (!this.symmetry.haveUnitCell()) this.symmetry.setUnitCellFromParams(this.unitCellParams, false, NaN); +this.symmetry.toFractional(atom, false); +this.iHaveFractionalCoordinates = true; +}if (this.floatifyJavaDouble && this.fileCoordinatesAreFractional) this.fixFloatPt(atom, 100000.0); +this.doCheckUnitCell = true; +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "addSites", +function(htSites){ +this.asc.setCurrentModelInfo("pdbSites", htSites); +var sites = ""; +for (var entry, $entry = htSites.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var htSite = entry.getValue(); +var ch; +for (var i = name.length; --i >= 0; ) if (!JU.PT.isLetterOrDigit(ch = name.charAt(i)) && ch != '\'') name = name.substring(0, i) + "_" + name.substring(i + 1); + +var groups = htSite.get("groups"); +if (groups.length == 0) continue; +this.addSiteScript("@site_" + name + " " + groups); +this.addSiteScript("site_" + name + " = [\"" + JU.PT.rep(groups, ",", "\",\"") + "\"]"); +sites += ",\"site_" + name + "\""; +} +if (sites.length > 0) this.addSiteScript("site_list = [" + sites.substring(1) + "]"); +}, "java.util.Map"); +Clazz_defineMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +this.applySymTrajASCR(); +}); +Clazz_defineMethod(c$, "applySymTrajASCR", +function(){ +if (this.forcePacked) this.initializeSymmetryOptions(); +var doApply = (this.iHaveUnitCell && this.doCheckUnitCell); +var sym = null; +if (doApply) { +sym = this.getSymmetry(); +this.setPrecision(); +sym = this.asc.getXSymmetry().applySymmetryFromReader(sym); +} else { +this.asc.setTensors(); +}if (this.isTrajectory) this.asc.setTrajectory(); +if (this.moreUnitCellInfo != null) { +this.asc.setCurrentModelInfo("moreUnitCellInfo", this.moreUnitCellInfo); +this.moreUnitCellInfo = null; +}this.finalizeSubclassSymmetry(sym != null); +if (this.merging && sym != null && this.iHaveFractionalCoordinates && this.iHaveUnitCell && this.iHaveSymmetryOperators) { +this.fractionalizeCoordinates(false); +this.addJmolScript("modelkit spacegroup P1"); +}this.initializeSymmetry(); +return sym; +}); +Clazz_defineMethod(c$, "finalizeSubclassSymmetry", +function(haveSymmetry){ +}, "~B"); +Clazz_defineMethod(c$, "doPreSymmetry", +function(){ +}); +Clazz_defineMethod(c$, "finalizeMOData", +function(moData){ +this.asc.setCurrentModelInfo("moData", moData); +if (moData == null) return; +var orbitals = moData.get("mos"); +if (orbitals != null) JU.Logger.info(orbitals.size() + " molecular orbitals read in model " + this.asc.atomSetCount); +}, "java.util.Map"); +c$.getElementSymbol = Clazz_defineMethod(c$, "getElementSymbol", +function(elementNumber){ +return J.api.JmolAdapter.getElementSymbol(elementNumber); +}, "~N"); +Clazz_defineMethod(c$, "fillDataBlock", +function(data, minLineLen){ +var nLines = data.length; +for (var i = 0; i < nLines; i++) { +data[i] = JU.PT.getTokens(this.discardLinesUntilNonBlank()); +if (data[i].length < minLineLen) --i; +} +}, "~A,~N"); +Clazz_defineMethod(c$, "fill3x3", +function(tokens, pt){ +var a = Clazz_newDoubleArray (3, 3, 0); +var needTokens = (tokens == null); +var pt0 = pt; +for (var i = 0; i < 3; i++) { +if (needTokens || pt >= tokens.length) { +while ((tokens = JU.PT.getTokens(this.rd())).length < 3) { +} +pt = (pt0 < 0 ? tokens.length + pt0 : pt0); +}for (var j = 0; j < 3; j++) a[i][j] = Double.$valueOf(tokens[pt++]).doubleValue(); + +} +return a; +}, "~A,~N"); +Clazz_defineMethod(c$, "fillFloatArray", +function(s, width, data){ +var tokens = new Array(0); +var pt = 0; +for (var i = 0; i < data.length; i++) { +while (tokens != null && pt >= tokens.length) { +if (s == null) s = this.rd(); +if (width == 0) { +tokens = JU.PT.getTokens(s); +} else { +tokens = new Array(Clazz_doubleToInt(s.length / width)); +for (var j = 0; j < tokens.length; j++) tokens[j] = s.substring(j * width, (j + 1) * width); + +}s = null; +pt = 0; +} +if (tokens == null) break; +data[i] = this.parseFloatStr(tokens[pt++]); +} +return data; +}, "~S,~N,~A"); +Clazz_defineMethod(c$, "fillFrequencyData", +function(iAtom0, ac, modelAtomCount, ignore, isWide, col0, colWidth, atomIndexes, minLineLen, data){ +var withSymmetry = (ac != 0 && modelAtomCount != ac && data == null); +if (ac == 0 && atomIndexes != null) ac = atomIndexes.length; +var nLines = (isWide ? ac : ac * 3); +var nFreq = ignore.length; +if (data == null) { +data = new Array(nLines); +this.fillDataBlockFixed(data, col0, colWidth, minLineLen); +} else if (!isWide) { +var ptNonblank = minLineLen; +this.fillDataBlockFixed(data, col0, colWidth, -ptNonblank); +if (data[0] == null) return; +iAtom0 += this.parseIntAt(this.line, ptNonblank - 5) - 1; +}for (var i = 0, atomPt = 0; i < nLines; i++, atomPt++) { +var values = data[i]; +var valuesY = (isWide ? null : data[++i]); +var valuesZ = (isWide ? null : data[++i]); +var dataPt = values.length - (isWide ? nFreq * 3 : nFreq) - 1; +for (var j = 0, jj = 0; jj < nFreq; jj++) { +++dataPt; +var x = values[dataPt]; +if (x.charAt(0) == ')') x = x.substring(1); +var vx = this.parseFloatStr(x); +var vy = this.parseFloatStr(isWide ? values[++dataPt] : valuesY[dataPt]); +var vz = this.parseFloatStr(isWide ? values[++dataPt] : valuesZ[dataPt]); +if (ignore[jj]) continue; +var iAtom = (atomIndexes == null ? atomPt : atomIndexes[atomPt]); +if (iAtom < 0) continue; +iAtom += iAtom0 + modelAtomCount * j++; +if (this.debugging) JU.Logger.debug("atom " + iAtom + " vib" + j + ": " + vx + " " + vy + " " + vz); +this.asc.addVibrationVectorWithSymmetry(iAtom, vx, vy, vz, withSymmetry); +} +} +}, "~N,~N,~N,~A,~B,~N,~N,~A,~N,~A"); +Clazz_defineMethod(c$, "fillDataBlockFixed", +function(data, col0, colWidth, minLineLen){ +if (colWidth == 0) { +this.fillDataBlock(data, minLineLen); +return; +}var nLines = data.length; +for (var i = 0; i < nLines; i++) { +this.discardLinesUntilNonBlank(); +if (minLineLen < 0 && this.line.charAt(-minLineLen) == ' ') { +data[0] = null; +return; +}var nFields = Clazz_doubleToInt((this.line.length - col0 + 1) / colWidth); +data[i] = new Array(nFields); +for (var j = 0, start = col0; j < nFields; j++, start += colWidth) data[i][j] = this.line.substring(start, Math.min(this.line.length, start + colWidth)); + +} +}, "~A,~N,~N,~N"); +Clazz_defineMethod(c$, "readLines", +function(nLines){ +for (var i = nLines; --i >= 0; ) this.rd(); + +return this.line; +}, "~N"); +Clazz_defineMethod(c$, "discardLinesUntilStartsWith", +function(startsWith){ +while (this.rd() != null && !this.line.startsWith(startsWith)) { +} +return this.line; +}, "~S"); +Clazz_defineMethod(c$, "discardLinesUntilContains", +function(containsMatch){ +while (this.rd() != null && this.line.indexOf(containsMatch) < 0) { +} +return this.line; +}, "~S"); +Clazz_defineMethod(c$, "discardLinesUntilContains2", +function(s1, s2){ +while (this.rd() != null && this.line.indexOf(s1) < 0 && this.line.indexOf(s2) < 0) { +} +return this.line; +}, "~S,~S"); +Clazz_defineMethod(c$, "discardLinesUntilBlank", +function(){ +while (this.rd() != null && this.line.trim().length != 0) { +} +return this.line; +}); +Clazz_defineMethod(c$, "discardLinesUntilNonBlank", +function(){ +while (this.rd() != null && this.line.trim().length == 0) { +} +return this.line; +}); +Clazz_defineMethod(c$, "checkLineForScript", +function(line){ +this.line = line; +this.checkCurrentLineForScript(); +}, "~S"); +Clazz_defineMethod(c$, "checkCurrentLineForScript", +function(){ +if (this.line.endsWith("#noautobond")) { +this.line = this.line.substring(0, this.line.lastIndexOf('#')).trim(); +this.asc.setNoAutoBond(); +}var pt = this.line.indexOf("jmolscript:"); +if (pt >= 0) { +var script = this.line.substring(pt + 11, this.line.length); +if (script.indexOf("#") >= 0) { +script = script.substring(0, script.indexOf("#")); +}this.addJmolScript(script); +this.line = this.line.substring(0, pt).trim(); +}}); +Clazz_defineMethod(c$, "addJmolScript", +function(script){ +JU.Logger.info("#jmolScript: " + script); +if (this.previousScript == null) this.previousScript = ""; + else if (!this.previousScript.endsWith(";")) this.previousScript += ";"; +this.previousScript += script; +this.asc.setInfo("jmolscript", this.previousScript); +}, "~S"); +Clazz_defineMethod(c$, "addSiteScript", +function(script){ +if (this.siteScript == null) this.siteScript = ""; + else if (!this.siteScript.endsWith(";")) this.siteScript += ";"; +this.siteScript += script; +this.asc.setInfo("sitescript", this.siteScript); +}, "~S"); +Clazz_defineMethod(c$, "rd", +function(){ +return this.RL(); +}); +Clazz_defineMethod(c$, "RL", +function(){ +this.prevline = this.line; +this.line = this.reader.readLine(); +if (this.out != null && this.line != null) this.out.append(this.line).append("\n"); +this.ptLine++; +if (this.debugging && this.line != null) JU.Logger.info(this.line); +return this.line; +}); +c$.getStrings = Clazz_defineMethod(c$, "getStrings", +function(sinfo, nFields, width){ +var fields = new Array(nFields); +for (var i = 0, pt = 0; i < nFields; i++, pt += width) fields[i] = sinfo.substring(pt, pt + width); + +return fields; +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "getTokens", +function(){ +return JU.PT.getTokens(this.line); +}); +c$.getTokensFloat = Clazz_defineMethod(c$, "getTokensFloat", +function(s, f, n){ +if (f == null) f = Clazz_newFloatArray (n, 0); +JU.PT.parseFloatArrayDataN(JU.PT.getTokens(s), f, n); +return f; +}, "~S,~A,~N"); +Clazz_defineMethod(c$, "parseFloat", +function(){ +return JU.PT.parseFloatNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "parseFloatStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseFloatNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseFloatRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseFloatRange(s, iEnd, this.next); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "parseInt", +function(){ +return JU.PT.parseIntNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "parseIntStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseIntNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseIntAt", +function(s, iStart){ +this.next[0] = iStart; +return JU.PT.parseIntNext(s, this.next); +}, "~S,~N"); +Clazz_defineMethod(c$, "parseIntRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseIntRange(s, iEnd, this.next); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "parseToken", +function(){ +return JU.PT.parseTokenNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "parseTokenStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseTokenNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseTokenNext", +function(s){ +return JU.PT.parseTokenNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseTokenRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseTokenRange(s, iEnd, this.next); +}, "~S,~N,~N"); +c$.getFortranFormatLengths = Clazz_defineMethod(c$, "getFortranFormatLengths", +function(s){ +var vdata = new JU.Lst(); +var n = 0; +var c = 0; +var factor = 1; +var inN = false; +var inCount = true; +s += ","; +for (var i = 0; i < s.length; i++) { +var ch = s.charAt(i); +switch ((ch).charCodeAt(0)) { +case 46: +inN = false; +continue; +case 44: +for (var j = 0; j < c; j++) vdata.addLast(Integer.$valueOf(n * factor)); + +inN = false; +inCount = true; +c = 0; +continue; +case 88: +n = c; +c = 1; +factor = -1; +continue; +} +var isDigit = JU.PT.isDigit(ch); +if (isDigit) { +if (inN) n = n * 10 + ch.charCodeAt(0) - 48; + else if (inCount) c = c * 10 + ch.charCodeAt(0) - 48; +} else if (JU.PT.isLetter(ch)) { +n = 0; +inN = true; +inCount = false; +factor = 1; +} else { +inN = false; +}} +return vdata; +}, "~S"); +Clazz_defineMethod(c$, "read3Vectors", +function(isBohr){ +var vectors = new Array(3); +var f = Clazz_newFloatArray (3, 0); +for (var i = 0; i < 3; i++) { +if (i > 0 || Float.isNaN(this.parseFloatStr(this.line))) { +this.rd(); +if (i == 0 && this.line != null) { +i = -1; +continue; +}}this.fillFloatArray(this.line, 0, f); +vectors[i] = new JU.V3(); +vectors[i].setA(f); +if (isBohr) vectors[i].scale(0.5291772); +} +return vectors; +}, "~B"); +Clazz_defineMethod(c$, "setElementAndIsotope", +function(atom, str){ +var isotope = this.parseIntStr(str); +if (isotope == -2147483648) { +atom.elementSymbol = str; +} else { +str = str.substring(("" + isotope).length); +atom.elementNumber = (str.length == 0 ? isotope : ((isotope << 7) + J.api.JmolAdapter.getElementNumber(str))); +}}, "J.adapter.smarter.Atom,~S"); +Clazz_defineMethod(c$, "finalizeModelSet", +function(){ +}); +Clazz_defineMethod(c$, "setChainID", +function(atom, label){ +atom.chainID = this.vwr.getChainID(label, true); +}, "J.adapter.smarter.Atom,~S"); +Clazz_overrideMethod(c$, "readNextLine", +function(){ +if (this.rd() != null && this.line.indexOf("#jmolscript:") >= 0) this.checkCurrentLineForScript(); +return this.line; +}); +Clazz_defineMethod(c$, "appendUunitCellInfo", +function(info){ +if (this.moreUnitCellInfo == null) this.moreUnitCellInfo = new JU.Lst(); +this.moreUnitCellInfo.addLast(info); +this.appendLoadNote(info); +}, "~S"); +Clazz_defineMethod(c$, "getInterface", +function(className){ +var o = J.api.Interface.getInterface(className, this.vwr, "file"); +if (o == null) throw new NullPointerException("Interface"); +return o; +}, "~S"); +Clazz_defineMethod(c$, "forceSymmetry", +function(andPack){ +if (andPack) this.doPackUnitCell = andPack; +if (!this.doApplySymmetry) { +this.doApplySymmetry = true; +this.latticeCells[0] = this.latticeCells[1] = this.latticeCells[2] = 1; +}}, "~B"); +Clazz_defineMethod(c$, "fixFloatA", +function(pts){ +if (this.floatifyJavaDouble) for (var i = pts.length; --i >= 0; ) if (!Float.isNaN(pts[i])) pts[i] = JU.PT.fixFloat(pts[i], 100000.0); + +}, "~A"); +Clazz_defineMethod(c$, "fixDoubleA", +function(pts){ +if (this.floatifyJavaDouble) for (var i = pts.length; --i >= 0; ) if (!Double.isNaN(pts[i])) pts[i] = JU.PT.fixDouble(pts[i], 100000.0); + +}, "~A"); +Clazz_defineMethod(c$, "fixFloatPt", +function(pt, prec){ +if (this.floatifyJavaDouble) JU.PT.fixPtFloats(pt, prec); +}, "JU.P3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atomSetIndex = 0; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "AtomSetObject", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["J.adapter.smarter.AtomSetObject"], "J.adapter.smarter.Bond", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atomIndex1 = 0; +this.atomIndex2 = 0; +this.order = 0; +this.radius = -1; +this.colix = -1; +this.uniqueID = -1; +this.distance = 0; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "Bond", J.adapter.smarter.AtomSetObject); +Clazz_makeConstructor(c$, +function(atomIndex1, atomIndex2, order){ +Clazz_superConstructor (this, J.adapter.smarter.Bond, []); +this.atomIndex1 = atomIndex1; +this.atomIndex2 = atomIndex2; +this.order = order; +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[Bond " + this.atomIndex1 + " " + this.atomIndex2 + " " + this.order + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["J.api.JmolAdapterBondIterator"], "J.adapter.smarter.BondIterator", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bsAtoms = null; +this.bonds = null; +this.ibond = 0; +this.bond = null; +this.bondCount = 0; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "BondIterator", J.api.JmolAdapterBondIterator); +Clazz_makeConstructor(c$, +function(asc){ +Clazz_superConstructor (this, J.adapter.smarter.BondIterator, []); +this.bsAtoms = asc.bsAtoms; +this.bonds = asc.bonds; +this.bondCount = asc.bondCount; +this.ibond = 0; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.ibond == this.bondCount) return false; +while ((this.bond = this.bonds[this.ibond++]) == null || (this.bsAtoms != null && (!this.bsAtoms.get(this.bond.atomIndex1) || !this.bsAtoms.get(this.bond.atomIndex2)))) if (this.ibond == this.bondCount) return false; + +return true; +}); +Clazz_overrideMethod(c$, "getAtomUniqueID1", +function(){ +return Integer.$valueOf(this.bond.atomIndex1); +}); +Clazz_overrideMethod(c$, "getAtomUniqueID2", +function(){ +return Integer.$valueOf(this.bond.atomIndex2); +}); +Clazz_overrideMethod(c$, "getEncodedOrder", +function(){ +return this.bond.order; +}); +Clazz_overrideMethod(c$, "getRadius", +function(){ +return this.bond.radius; +}); +Clazz_overrideMethod(c$, "getColix", +function(){ +return this.bond.colix; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(null, "J.adapter.smarter.Resolver", ["java.io.BufferedInputStream", "java.util.StringTokenizer", "JU.LimitedLineReader", "$.PT", "$.Rdr", "J.adapter.smarter.AtomSetCollectionReader", "$.SmarterJmolAdapter", "J.api.Interface", "JU.Logger", "JV.JC"], function(){ +var c$ = Clazz_declareType(J.adapter.smarter, "Resolver", null); +c$.getReaderClassBase = Clazz_defineMethod(c$, "getReaderClassBase", +function(type){ +var name = type + "Reader"; +if (type.startsWith("Xml")) return "J.adapter.readers." + "xml." + name; +var key = ";" + type + ";"; +for (var i = 1; i < J.adapter.smarter.Resolver.readerSets.length; i += 2) if (J.adapter.smarter.Resolver.readerSets[i].indexOf(key) >= 0) return "J.adapter.readers." + J.adapter.smarter.Resolver.readerSets[i - 1] + name; + +return "J.adapter.readers." + "???." + name; +}, "~S"); +c$.getFileType = Clazz_defineMethod(c$, "getFileType", +function(br){ +try { +return J.adapter.smarter.Resolver.determineAtomSetCollectionReader(br, null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "java.io.BufferedReader"); +c$.getAtomCollectionReader = Clazz_defineMethod(c$, "getAtomCollectionReader", +function(fullName, type, readerOrDocument, htParams, ptFile){ +var readerName; +fullName = J.adapter.smarter.Resolver.fixDOSName(fullName); +var errMsg = null; +if (type == null && htParams != null) { +type = J.adapter.smarter.Resolver.getFileTypefromFilter(htParams.get("filter")); +}if (type != null) { +readerName = J.adapter.smarter.Resolver.getReaderFromType(type); +if (readerName == null) readerName = J.adapter.smarter.Resolver.getReaderFromType("Xml" + type); +if (readerName == null) errMsg = "unrecognized file format type " + type + " file=" + fullName; + else JU.Logger.info("The Resolver assumes " + readerName + " file=" + fullName); +} else { +readerName = J.adapter.smarter.Resolver.determineAtomSetCollectionReader(readerOrDocument, htParams); +if (readerName.charAt(0) == '\n') { +type = (htParams == null ? null : htParams.get("defaultType")); +if (type != null) { +type = J.adapter.smarter.Resolver.getReaderFromType(type); +if (type != null) readerName = type; +}}if (readerName.charAt(0) == '\n') errMsg = "unrecognized file format for file\n" + fullName + "\n" + J.adapter.smarter.Resolver.split(readerName, 50); + else if (readerName.equals("spt")) errMsg = "NOTE: file recognized as a script file: " + fullName + "\n"; + else if (!fullName.equals("ligand")) JU.Logger.info("The Resolver thinks " + readerName); +}if (errMsg != null) { +J.adapter.smarter.SmarterJmolAdapter.close(readerOrDocument); +return errMsg; +}htParams.put("ptFile", Integer.$valueOf(ptFile)); +if (ptFile <= 0) htParams.put("readerName", readerName); +return J.adapter.smarter.Resolver.getReader(readerName, htParams); +}, "~S,~S,~O,java.util.Map,~N"); +c$.getReader = Clazz_defineMethod(c$, "getReader", +function(readerName, htParams){ +var rdr = null; +var className = null; +var err = null; +className = J.adapter.smarter.Resolver.getReaderClassBase(readerName); +if ((rdr = J.api.Interface.getInterface(className, null, "reader")) == null) { +err = JV.JC.READER_NOT_FOUND + className; +JU.Logger.error(err); +return err; +}return rdr; +}, "~S,java.util.Map"); +c$.getReaderFromType = Clazz_defineMethod(c$, "getReaderFromType", +function(type){ +if (type.endsWith("(XML)")) { +type = "Xml" + type.substring(0, type.length - 5); +}type = ";" + type.toLowerCase() + ";"; +if (";zmatrix;cfi;c;vfi;v;mnd;jag;gms;g;gau;mp;nw;orc;pqs;qc;".indexOf(type) >= 0) return "Input"; +var set; +var pt; +for (var i = J.adapter.smarter.Resolver.readerSets.length; --i >= 0; ) { +if ((pt = (set = J.adapter.smarter.Resolver.readerSets[i--]).toLowerCase().indexOf(type)) >= 0) return set.substring(pt + 1, set.indexOf(";", pt + 2)); +} +return null; +}, "~S"); +c$.split = Clazz_defineMethod(c$, "split", +function(a, n){ +var s = ""; +var l = a.length; +for (var i = 0, j = 0; i < l; i = j) s += a.substring(i, (j = Math.min(i + n, l))) + "\n"; + +return s; +}, "~S,~N"); +c$.DOMResolve = Clazz_defineMethod(c$, "DOMResolve", +function(htParams){ +var rdrName = J.adapter.smarter.Resolver.getXmlType(htParams.get("nameSpaceInfo")); +if (JU.Logger.debugging) { +JU.Logger.debug("The Resolver thinks " + rdrName); +}htParams.put("readerName", rdrName); +return J.adapter.smarter.Resolver.getReader("XmlReader", htParams); +}, "java.util.Map"); +c$.determineAtomSetCollectionReader = Clazz_defineMethod(c$, "determineAtomSetCollectionReader", +function(readerOrDocument, htParams){ +var readerName; +if (Clazz_instanceOf(readerOrDocument,"javajs.api.GenericBinaryDocument")) { +var doc = readerOrDocument; +readerName = J.adapter.smarter.Resolver.getBinaryType(doc.getInputStream()); +return (readerName == null ? "binary file type not recognized" : readerName); +}if (Clazz_instanceOf(readerOrDocument,"java.io.InputStream")) { +readerName = J.adapter.smarter.Resolver.getBinaryType(readerOrDocument); +if (readerName != null) return readerName; +readerOrDocument = JU.Rdr.getBufferedReader( new java.io.BufferedInputStream(readerOrDocument), null); +}var rdr = readerOrDocument; +var llr = new JU.LimitedLineReader(rdr, 16384); +var leader = llr.getHeader(64).trim(); +if (leader.length == 0) throw new java.io.EOFException("File contains no data."); +if (leader.indexOf("PNG") == 1 && leader.indexOf("PNGJ") >= 0) return "pngj"; +if (leader.indexOf("PNG") == 1 || leader.indexOf("JPG") == 1 || leader.indexOf("JFIF") == 6) return "spt"; +if (leader.indexOf("\"num_pairs\"") >= 0) return "dssr"; +if (leader.indexOf("output.31\n") >= 0) return "GenNBO|output.31"; +if ((readerName = J.adapter.smarter.Resolver.checkFileStart(leader)) != null) { +return (readerName.equals("Xml") ? J.adapter.smarter.Resolver.getXmlType(llr.getHeader(0)) : readerName); +}var msg; +var isJSONMap = (leader.charAt(0) == '{'); +var lines = new Array(16); +var nLines = 0; +for (var i = 0; i < lines.length; ++i) { +lines[i] = llr.readLineWithNewline(); +if (lines[i].length > 0) nLines++; +} +if ((readerName = J.adapter.smarter.Resolver.checkSpecial1(nLines, lines, leader)) != null) return readerName; +if ((readerName = J.adapter.smarter.Resolver.checkLineStarts(lines)) != null) return readerName; +if ((readerName = J.adapter.smarter.Resolver.checkHeaderContains(llr.getHeader(0))) != null) { +return readerName; +}if ((readerName = J.adapter.smarter.Resolver.checkSpecial2(lines)) != null) return readerName; +if (isJSONMap) { +var json = rdr.readLine(); +if ((readerName = J.adapter.smarter.Resolver.checkJSONContains(json)) != null) { +if (htParams != null) htParams.put("fileData", json); +return readerName; +}msg = (htParams == null ? null : json.substring(0, Math.min(100, json.length))); +} else { +msg = (htParams == null ? null : "\n" + lines[0] + "\n" + lines[1] + "\n" + lines[2] + "\n"); +}return msg; +}, "~O,java.util.Map"); +c$.getBinaryType = Clazz_defineMethod(c$, "getBinaryType", +function(inputStream){ +var magic4 = null; +return (JU.Rdr.isPickleS(inputStream) ? "PyMOL" : (JU.Rdr.getMagic(inputStream, 1)[0] & 0xFF) == 0xDE ? "MMTF" : (JU.Rdr.getMagic(inputStream, 10)[9] & 0xFF) == 0xB6 ? "BCIF" : J.adapter.smarter.Resolver.bytesMatch((magic4 = JU.Rdr.getMagic(inputStream, 4)), J.adapter.smarter.Resolver.cdxMagic) ? "CDX" : J.adapter.smarter.Resolver.bytesMatch(magic4, J.adapter.smarter.Resolver.cmdfMagic) ? "Cmdf" : null); +}, "java.io.InputStream"); +c$.bytesMatch = Clazz_defineMethod(c$, "bytesMatch", +function(a, b){ +if (b.length > a.length) return false; +for (var i = b.length; --i >= 0; ) { +if (a[i] != b[i]) return false; +} +return true; +}, "~A,~A"); +c$.checkFileStart = Clazz_defineMethod(c$, "checkFileStart", +function(leader){ +for (var i = 0; i < J.adapter.smarter.Resolver.fileStartsWithRecords.length; ++i) { +var recordTags = J.adapter.smarter.Resolver.fileStartsWithRecords[i]; +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +if (leader.startsWith(recordTag)) return recordTags[0]; +} +} +return null; +}, "~S"); +c$.checkSpecial1 = Clazz_defineMethod(c$, "checkSpecial1", +function(nLines, lines, leader){ +if (nLines == 1 && lines[0].length > 0 && JU.PT.isDigit(lines[0].charAt(0))) return "Jme"; +if (J.adapter.smarter.Resolver.checkMopacGraphf(lines)) return "MopacGraphf"; +if (J.adapter.smarter.Resolver.checkOdyssey(lines)) return "Odyssey"; +switch (J.adapter.smarter.Resolver.checkMol(lines)) { +case 1: +case 3: +case 2000: +case 3000: +return "Mol"; +} +switch (J.adapter.smarter.Resolver.checkXyz(lines)) { +case 1: +return "Xyz"; +case 2: +return "Bilbao"; +case 3: +return "PWmat"; +} +if (J.adapter.smarter.Resolver.checkAlchemy(lines[0])) return "Alchemy"; +if (J.adapter.smarter.Resolver.checkFoldingXyz(lines)) return "FoldingXyz"; +if (J.adapter.smarter.Resolver.checkXSF(lines)) return "Xcrysden"; +if (J.adapter.smarter.Resolver.checkCube(lines)) return "Cube"; +if (J.adapter.smarter.Resolver.checkWien2k(lines)) return "Wien2k"; +if (J.adapter.smarter.Resolver.checkAims(lines)) return "Aims"; +if (J.adapter.smarter.Resolver.checkGenNBO(lines, leader)) return "GenNBO"; +return null; +}, "~N,~A,~S"); +c$.checkXSF = Clazz_defineMethod(c$, "checkXSF", +function(lines){ +var i = 0; +while (lines[i].length == 0) { +i++; +} +return (lines[i].startsWith("ANIMSTEPS ") || lines[i].equals("ATOMS\n") && JU.PT.parseInt(lines[i + 1]) > 0); +}, "~A"); +c$.checkAims = Clazz_defineMethod(c$, "checkAims", +function(lines){ +for (var i = 0; i < lines.length; i++) { +if (lines[i].startsWith("mol 1")) return false; +var tokens = JU.PT.getTokens(lines[i]); +if (tokens.length == 0) continue; +if (tokens[0].startsWith("atom") && tokens.length > 4 && Float.isNaN(JU.PT.parseFloat(tokens[4])) || tokens[0].startsWith("multipole") && tokens.length >= 6 || tokens[0].startsWith("lattice_vector") && tokens.length >= 4) return true; +} +return false; +}, "~A"); +c$.checkAlchemy = Clazz_defineMethod(c$, "checkAlchemy", +function(line){ +var pt; +if ((pt = line.indexOf("ATOMS")) > 0 && line.indexOf("BONDS") > pt) { +var n = JU.PT.parseInt(line.substring(0, pt).trim()); +return (n > 0); +}return false; +}, "~S"); +c$.isInt = Clazz_defineMethod(c$, "isInt", +function(s){ +J.adapter.smarter.Resolver.n[0] = 0; +s = s.trim(); +return s.length > 0 && JU.PT.parseIntNext(s, J.adapter.smarter.Resolver.n) != -2147483648 && J.adapter.smarter.Resolver.n[0] == s.length; +}, "~S"); +c$.isFloat = Clazz_defineMethod(c$, "isFloat", +function(s){ +return !Float.isNaN(JU.PT.parseFloat(s)); +}, "~S"); +c$.checkCube = Clazz_defineMethod(c$, "checkCube", +function(lines){ +for (var j = 2; j <= 5; j++) { +var tokens2 = new java.util.StringTokenizer(lines[j]); +var n = tokens2.countTokens(); +if (!(n == 4 || j == 2 && n == 5) || !J.adapter.smarter.Resolver.isInt(tokens2.nextToken())) return false; +for (var i = 3; --i >= 0; ) if (!J.adapter.smarter.Resolver.isFloat(tokens2.nextToken())) return false; + +if (n == 5 && !J.adapter.smarter.Resolver.isInt(tokens2.nextToken())) return false; +} +return true; +}, "~A"); +c$.checkFoldingXyz = Clazz_defineMethod(c$, "checkFoldingXyz", +function(lines){ +var tokens = new java.util.StringTokenizer(lines[0].trim(), " \t"); +if (tokens.countTokens() < 2 || !J.adapter.smarter.Resolver.isInt(tokens.nextToken().trim())) return false; +var secondLine = lines[1].trim(); +if (secondLine.length == 0) secondLine = lines[2].trim(); +tokens = new java.util.StringTokenizer(secondLine, " \t"); +return (tokens.countTokens() > 0 && J.adapter.smarter.Resolver.isInt(tokens.nextToken().trim())); +}, "~A"); +c$.checkGenNBO = Clazz_defineMethod(c$, "checkGenNBO", +function(lines, leader){ +return (leader.indexOf("$GENNBO") >= 0 || lines[1].startsWith(" Basis set information needed for plotting orbitals") || lines[1].indexOf("s in the AO basis:") >= 0 || lines[1].indexOf("***** NBO ") >= 0 || lines[2].indexOf(" N A T U R A L A T O M I C O R B I T A L") >= 0); +}, "~A,~S"); +c$.checkMol = Clazz_defineMethod(c$, "checkMol", +function(lines){ +var line4trimmed = ("X" + lines[3]).trim().toUpperCase(); +if (line4trimmed.length < 7 || line4trimmed.indexOf(".") >= 0 || lines[0].startsWith("data_")) return 0; +if (line4trimmed.endsWith("V2000")) return 2000; +if (line4trimmed.endsWith("V3000")) return 3000; +var n1 = JU.PT.parseInt(lines[3].substring(0, 3).trim()); +var n2 = JU.PT.parseInt(lines[3].substring(3, 6).trim()); +return (n1 > 0 && n2 >= 0 && lines[0].indexOf("@") != 0 && lines[1].indexOf("@") != 0 && lines[2].indexOf("@") != 0 ? 3 : 0); +}, "~A"); +c$.checkMopacGraphf = Clazz_defineMethod(c$, "checkMopacGraphf", +function(lines){ +return (lines[0].indexOf("MOPAC-Graphical data") > 2); +}, "~A"); +c$.checkOdyssey = Clazz_defineMethod(c$, "checkOdyssey", +function(lines){ +var i; +for (i = 0; i < lines.length; i++) if (!lines[i].startsWith("C ") && lines[i].length != 0) break; + +if (i >= lines.length || lines[i].charAt(0) != ' ' || (i = i + 2) + 1 >= lines.length) return false; +var l = lines[i]; +if (l.length < 3) return false; +var spin = JU.PT.parseInt(l.substring(2).trim()); +var charge = JU.PT.parseInt(l.substring(0, 2).trim()); +if ((l = lines[i + 1]).length < 2) return false; +var atom1 = JU.PT.parseInt(l.substring(0, 2).trim()); +if (spin < 0 || spin > 5 || atom1 <= 0 || charge == -2147483648 || charge > 5) return false; +var atomline = J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(l, null, 5); +return !Float.isNaN(atomline[1]) && !Float.isNaN(atomline[2]) && !Float.isNaN(atomline[3]) && Float.isNaN(atomline[4]); +}, "~A"); +c$.checkWien2k = Clazz_defineMethod(c$, "checkWien2k", +function(lines){ +return (lines[2].startsWith("MODE OF CALC=") || lines[2].startsWith(" RELA") || lines[2].startsWith(" NREL")); +}, "~A"); +c$.checkXyz = Clazz_defineMethod(c$, "checkXyz", +function(lines){ +var checkPWM = false; +var i = JU.PT.parseInt(lines[0]); +if (i >= 0 && lines[0].trim().equals("" + i)) { +if (J.adapter.smarter.Resolver.isInt(lines[2])) return 2; +checkPWM = true; +}if (lines[0].indexOf("Bilbao Crys") >= 0) return 2; +var s; +if ((checkPWM || lines.length > 5 && i > 0) && ((s = lines[1].trim().toUpperCase()).startsWith("LATTICE VECTOR") || s.equals("LATTICE"))) return 3; +return (checkPWM ? 1 : 0); +}, "~A"); +c$.checkLineStarts = Clazz_defineMethod(c$, "checkLineStarts", +function(lines){ +for (var i = 0; i < J.adapter.smarter.Resolver.lineStartsWithRecords.length; ++i) { +var recordTags = J.adapter.smarter.Resolver.lineStartsWithRecords[i]; +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +for (var k = 0; k < lines.length; k++) { +if (lines[k].startsWith(recordTag)) return recordTags[0]; +} +} +} +return null; +}, "~A"); +c$.checkHeaderContains = Clazz_defineMethod(c$, "checkHeaderContains", +function(header){ +for (var i = 0; i < J.adapter.smarter.Resolver.headerContainsRecords.length; ++i) { +var fileType = J.adapter.smarter.Resolver.checkHeaderRecords(header, J.adapter.smarter.Resolver.headerContainsRecords[i]); +if (fileType != null) return fileType; +} +return null; +}, "~S"); +c$.checkJSONContains = Clazz_defineMethod(c$, "checkJSONContains", +function(header){ +for (var i = 0; i < J.adapter.smarter.Resolver.jsonContainsRecords.length; ++i) { +var fileType = J.adapter.smarter.Resolver.checkHeaderRecords(header, J.adapter.smarter.Resolver.jsonContainsRecords[i]); +if (fileType != null) return fileType; +} +return null; +}, "~S"); +c$.checkHeaderRecords = Clazz_defineMethod(c$, "checkHeaderRecords", +function(header, recordTags){ +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +if (header.indexOf(recordTag) < 0) continue; +var type = recordTags[0]; +if (!type.equals("Xml")) return type; +if (header.indexOf("/AFLOWDATA/") >= 0 || header.indexOf("-- Structure PRE --") >= 0) return "AFLOW"; +return (header.indexOf("= 0) ? J.adapter.smarter.Resolver.getXmlType(header) : null); +} +return null; +}, "~S,~A"); +c$.getXmlType = Clazz_defineMethod(c$, "getXmlType", +function(header){ +if (header.indexOf("http://www.molpro.net/") >= 0) { +return "XmlMolpro"; +}if (header.indexOf("odyssey") >= 0) { +return "XmlOdyssey"; +}if (header.indexOf("C3XML") >= 0) { +return "XmlChem3d"; +}if (header.indexOf("CDXML") >= 0) { +return "XmlCdx"; +}if (header.indexOf("arguslab") >= 0) { +return "XmlArgus"; +}if (header.indexOf("jvxl") >= 0 || header.indexOf("http://www.xml-cml.org/schema") >= 0 || header.indexOf("cml:") >= 0 || header.indexOf("") >= 0) { +return "XmlCml"; +}if (header.indexOf("XSD") >= 0) { +return "XmlXsd"; +}if (header.indexOf(">vasp") >= 0) { +return "XmlVasp"; +}if (header.indexOf("") >= 0) { +return "XmlQE"; +}return "XmlCml(unidentified)"; +}, "~S"); +c$.checkSpecial2 = Clazz_defineMethod(c$, "checkSpecial2", +function(lines){ +if (J.adapter.smarter.Resolver.checkGromacs(lines)) return "Gromacs"; +if (J.adapter.smarter.Resolver.checkCrystal(lines)) return "Crystal"; +if (J.adapter.smarter.Resolver.checkFAH(lines)) return "FAH"; +var s = J.adapter.smarter.Resolver.checkCastepVaspSiesta(lines); +if (s != null) return s; +return null; +}, "~A"); +c$.checkFAH = Clazz_defineMethod(c$, "checkFAH", +function(lines){ +var s = lines[0].trim() + lines[2].trim(); +return s.equals("{\"atoms\": ["); +}, "~A"); +c$.checkCrystal = Clazz_defineMethod(c$, "checkCrystal", +function(lines){ +var s = lines[1].trim(); +if (s.equals("SLAB") || s.equals("MOLECULE") || s.equals("CRYSTAL") || s.equals("POLYMER") || (s = lines[3]).equals("SLAB") || s.equals("MOLECULE") || s.equals("POLYMER")) return true; +for (var i = 0; i < lines.length; i++) { +if (lines[i].trim().equals("OPTGEOM") || lines[i].trim().equals("FREQCALC") || lines[i].contains("DOVESI") || lines[i].contains("TORINO") || lines[i].contains("http://www.crystal.unito.it") || lines[i].contains("Pcrystal") || lines[i].contains("MPPcrystal") || lines[i].contains("crystal executable")) return true; +} +return false; +}, "~A"); +c$.checkGromacs = Clazz_defineMethod(c$, "checkGromacs", +function(lines){ +if (JU.PT.parseInt(lines[1]) == -2147483648) return false; +var len = -1; +for (var i = 2; i < 16 && len != 0; i++) if ((len = lines[i].length) != 69 && len != 45 && len != 0) return false; + +return true; +}, "~A"); +c$.checkCastepVaspSiesta = Clazz_defineMethod(c$, "checkCastepVaspSiesta", +function(lines){ +for (var i = 0; i < lines.length; i++) { +var line = lines[i].toUpperCase(); +if (line.indexOf("FREQUENCIES IN CM-1") == 1 || line.contains("CASTEP") || line.startsWith("%BLOCK LATTICE_ABC") || line.startsWith("%BLOCK LATTICE_CART") || line.startsWith("%BLOCK POSITIONS_FRAC") || line.startsWith("%BLOCK POSITIONS_ABS") || line.contains("<-- E")) return "Castep"; +if (line.contains("%BLOCK")) return "Siesta"; +if (i >= 6 && i < 10 && (line.startsWith("DIRECT") || line.startsWith("CARTESIAN"))) return "VaspPoscar"; +} +return null; +}, "~A"); +c$.getFileTypefromFilter = Clazz_defineMethod(c$, "getFileTypefromFilter", +function(filter){ +var pt = (filter == null ? -1 : filter.toLowerCase().indexOf("filetype")); +return (pt < 0 ? null : filter.substring(pt + 8, (filter + ";").indexOf(";", pt)).$replace('=', ' ').trim()); +}, "~S"); +c$.fixDOSName = Clazz_defineMethod(c$, "fixDOSName", +function(fileName){ +return (fileName.indexOf(":\\") >= 0 ? fileName.$replace('\\', '/') : fileName); +}, "~S"); +c$.readerSets = Clazz_newArray(-1, ["cif.", ";Cif;Cif2;MMCif;MMTF;MagCif;BCIF;", "molxyz.", ";Mol3D;Mol;Xyz;", "more.", ";AFLOW;BinaryDcd;CDX;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;TlsDataOnly;", "quantum.", ";Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GaussianFchk;GaussianWfn;Jaguar;Molden;MopacGraphf;GenNBO;NWChem;Psi;Qchem;QCJSON;WebMO;Orca;MO;Ams;", "pdb.", ";Pdb;Pqr;P2n;JmolData;", "pymol.", ";PyMOL;", "simple.", ";Alchemy;Ampac;Cube;FoldingXyz;GhemicalMM;HyperChem;Jme;JSON;Mopac;MopacArchive;Tinker;Input;FAH;", "spartan.", ";Spartan;SpartanSmol;Odyssey;", "xtal.", ";Abinit;Aims;Bilbao;Castep;Cgd;Crystal;Dmol;Espresso;Gulp;Jana;Magres;Shelx;Siesta;VaspOutcar;VaspPoscar;Wien2k;Xcrysden;PWmat;Optimade;Cmdf;", "xml.", ";XmlCdx;XmlArgus;XmlCml;XmlChem3d;XmlMolpro;XmlOdyssey;XmlXsd;XmlVasp;XmlQE;"]); +c$.cdxMagic = Clazz_newByteArray(-1, ['V', 'j', 'C', 'D']); +c$.cmdfMagic = Clazz_newByteArray(-1, ['C', 'M', 'D', 'F']); +c$.sptRecords = Clazz_newArray(-1, ["spt", "# Jmol state", "# Jmol script", "JmolManifest"]); +c$.m3dStartRecords = Clazz_newArray(-1, ["Alchemy", "STRUCTURE 1.00 1"]); +c$.cubeFileStartRecords = Clazz_newArray(-1, ["Cube", "JVXL", "#JVXL"]); +c$.mol2Records = Clazz_newArray(-1, ["Mol2", "mol2", "@"]); +c$.webmoFileStartRecords = Clazz_newArray(-1, ["WebMO", "[HEADER]"]); +c$.moldenFileStartRecords = Clazz_newArray(-1, ["Molden", "[Molden", "MOLDEN", "[MOLDEN"]); +c$.dcdFileStartRecords = Clazz_newArray(-1, ["BinaryDcd", "T\0\0\0CORD", "\0\0\0TCORD"]); +c$.tlsDataOnlyFileStartRecords = Clazz_newArray(-1, ["TlsDataOnly", "REFMAC\n\nTL", "REFMAC\r\n\r\n", "REFMAC\r\rTL"]); +c$.inputFileStartRecords = Clazz_newArray(-1, ["Input", "#ZMATRIX", "%mem=", "AM1", "$rungauss"]); +c$.magresFileStartRecords = Clazz_newArray(-1, ["Magres", "#$magres", "# magres"]); +c$.pymolStartRecords = Clazz_newArray(-1, ["PyMOL", "}q"]); +c$.janaStartRecords = Clazz_newArray(-1, ["Jana", "Version Jana"]); +c$.jsonStartRecords = Clazz_newArray(-1, ["JSON", "{\"mol\":"]); +c$.jcampdxStartRecords = Clazz_newArray(-1, ["Jcampdx", "##TITLE"]); +c$.jmoldataStartRecords = Clazz_newArray(-1, ["JmolData", "REMARK 6 Jmol"]); +c$.pqrStartRecords = Clazz_newArray(-1, ["Pqr", "REMARK 1 PQR", "REMARK The B-factors"]); +c$.p2nStartRecords = Clazz_newArray(-1, ["P2n", "REMARK 1 P2N"]); +c$.cif2StartRecords = Clazz_newArray(-1, ["Cif2", "#\\#CIF_2", "\u00EF\u00BB\u00BF#\\#CIF_2"]); +c$.xmlStartRecords = Clazz_newArray(-1, ["Xml", "Bilbao Crystallographic Server<"]); +c$.xmlContainsRecords = Clazz_newArray(-1, ["Xml", "", " 0 && size <= 3 && f.startsWith("{")) { +var type = (f.contains("version\":\"DSSR") ? "dssr" : f.contains("/outliers/") ? "validation" : "domains"); +var x = vwr.parseJSONMap(f); +if (x != null) htParams.put(type, (type.equals("dssr") ? x : JS.SV.getVariableMap(x))); +continue; +}if (name.indexOf("|") >= 0) name = JU.PT.rep(name, "_", "/"); +if (i == 1) { +if (name.indexOf("/rna3dhub/") >= 0) { +s += "\n_rna3d \n;" + f + "\n;\n"; +continue; +}if (name.indexOf("/dssr/") >= 0) { +s += "\n_dssr \n;" + f + "\n;\n"; +continue; +}}s += f; +if (!s.endsWith("\n")) s += "\n"; +} +size = 1; +reader = JU.Rdr.getBR(s); +}var readers = (getReadersOnly ? new Array(size) : null); +var atomsets = (getReadersOnly ? null : new Array(size)); +var r = null; +for (var i = 0; i < size; i++) { +try { +htParams.put("vwr", vwr); +if (reader == null) reader = filesReader.getBufferedReaderOrBinaryDocument(i, false); +if (!(Clazz_instanceOf(reader,"java.io.BufferedReader") || Clazz_instanceOf(reader,"javajs.api.GenericBinaryDocument"))) return reader; +var fullPathName = names[i]; +htParams.put("fullPathName", fullPathName); +var ret = J.adapter.smarter.Resolver.getAtomCollectionReader(names[i], (types == null ? null : types[i]), reader, htParams, i); +if (!(Clazz_instanceOf(ret,"J.adapter.smarter.AtomSetCollectionReader"))) return ret; +r = ret; +r.setup(null, null, null); +if (r.isBinary) { +r.setup(names[i], htParams, filesReader.getBufferedReaderOrBinaryDocument(i, true)); +} else { +r.setup(names[i], htParams, reader); +}reader = null; +if (getReadersOnly) { +readers[i] = r; +} else { +ret = r.readData(); +if (!(Clazz_instanceOf(ret,"J.adapter.smarter.AtomSetCollection"))) return ret; +atomsets[i] = ret; +if (atomsets[i].errorMessage != null) return atomsets[i].errorMessage; +}} catch (e) { +JU.Logger.error("" + e); +e.printStackTrace(); +return "" + e; +} +} +if (getReadersOnly) return readers; +return this.getAtomSetCollectionFromSet(readers, atomsets, htParams); +}, "J.api.JmolFilesReaderInterface,~A,~A,java.util.Map,~B"); +Clazz_overrideMethod(c$, "getAtomSetCollectionFromSet", +function(readerSet, atomsets, htParams){ +var readers = readerSet; +var asc = (atomsets == null ? new Array(readers.length) : atomsets); +if (atomsets == null) { +for (var i = 0; i < readers.length; i++) { +if (readers[i] != null) try { +var ret = readers[i].readData(); +if (!(Clazz_instanceOf(ret,"J.adapter.smarter.AtomSetCollection"))) return ret; +asc[i] = ret; +if (asc[i].errorMessage != null) return asc[i].errorMessage; +} catch (e) { +JU.Logger.error("" + e); +return "" + e; +} +} +}var result; +if (htParams.containsKey("trajectorySteps")) { +result = asc[0]; +try { +if (asc.length > 1) asc[0].setInfo("ignoreUnitCell", asc[1].atomSetInfo.get("ignoreUnitCell")); +result.finalizeTrajectoryAs(htParams.get("trajectorySteps"), htParams.get("vibrationSteps")); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (result.errorMessage == null) result.errorMessage = "" + e; +} else { +throw e; +} +} +} else if (asc[0].isTrajectory) { +result = asc[0]; +for (var i = 1; i < asc.length; i++) asc[0].mergeTrajectories(asc[i]); + +} else { +result = (asc.length == 1 ? asc[0] : new J.adapter.smarter.AtomSetCollection("Array", null, asc, null)); +}return (result.errorMessage == null ? result : result.errorMessage); +}, "~O,~O,java.util.Map"); +Clazz_overrideMethod(c$, "getAtomSetCollectionFromDOM", +function(DOMNode, htParams){ +throw new UnsupportedOperationException(); +}, "~O,java.util.Map"); +Clazz_overrideMethod(c$, "finish", +function(asc){ +(asc).finish(); +}, "~O"); +Clazz_overrideMethod(c$, "getAtomSetCollectionName", +function(asc){ +return (asc).collectionName; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomSetCollectionAuxiliaryInfo", +function(asc){ +return (asc).atomSetInfo; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomSetCount", +function(asc){ +return (asc).atomSetCount; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomSetNumber", +function(asc, atomSetIndex){ +return (asc).getAtomSetNumber(atomSetIndex); +}, "~O,~N"); +Clazz_overrideMethod(c$, "getAtomSetName", +function(asc, atomSetIndex){ +return (asc).getAtomSetName(atomSetIndex); +}, "~O,~N"); +Clazz_overrideMethod(c$, "getAtomSetAuxiliaryInfo", +function(asc, atomSetIndex){ +return (asc).getAtomSetAuxiliaryInfo(atomSetIndex); +}, "~O,~N"); +Clazz_overrideMethod(c$, "getHydrogenAtomCount", +function(asc){ +return (asc).getHydrogenAtomCount(); +}, "~O"); +Clazz_overrideMethod(c$, "getBondList", +function(asc){ +return (asc).getBondList(); +}, "~O"); +Clazz_overrideMethod(c$, "getAtomCount", +function(asc, atomSetIndex){ +var a = asc; +if (atomSetIndex < 0) return (a.bsAtoms == null ? a.ac : a.bsAtoms.cardinality()); +if (a.bsAtoms == null) return a.getAtomSetAtomCount(atomSetIndex); +var b = JU.BSUtil.copy(a.bsAtoms); +var i0 = a.getAtomSetAtomIndex(atomSetIndex); +b.and(JU.BSUtil.newBitSet2(i0, i0 + a.getAtomSetAtomCount(atomSetIndex))); +return b.cardinality(); +}, "~O,~N"); +Clazz_overrideMethod(c$, "coordinatesAreFractional", +function(asc){ +return (asc).coordinatesAreFractional; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomIterator", +function(asc){ +return new J.adapter.smarter.AtomIterator(asc); +}, "~O"); +Clazz_overrideMethod(c$, "getBondIterator", +function(asc){ +return ((asc).bondCount == 0 ? null : new J.adapter.smarter.BondIterator(asc)); +}, "~O"); +Clazz_overrideMethod(c$, "getStructureIterator", +function(asc){ +return (asc).structureCount == 0 ? null : new J.adapter.smarter.StructureIterator(asc); +}, "~O"); +c$.close = Clazz_defineMethod(c$, "close", +function(bufferedReader){ +if (Clazz_instanceOf(bufferedReader,"java.io.BufferedReader")) (bufferedReader).close(); + else (bufferedReader).close(); +}, "~O"); +c$.PATH_SEPARATOR = System.getProperty("path.separator", "/"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["J.api.JmolAdapterStructureIterator"], "J.adapter.smarter.StructureIterator", ["J.api.JmolAdapter"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.structureCount = 0; +this.structures = null; +this.structure = null; +this.istructure = 0; +this.bsModelsDefined = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "StructureIterator", J.api.JmolAdapterStructureIterator); +Clazz_makeConstructor(c$, +function(asc){ +Clazz_superConstructor (this, J.adapter.smarter.StructureIterator, []); +this.structureCount = asc.structureCount; +this.structures = asc.structures; +this.istructure = 0; +this.bsModelsDefined = asc.bsStructuredModels; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.istructure == this.structureCount) return false; +this.structure = this.structures[this.istructure++]; +return true; +}); +Clazz_overrideMethod(c$, "getStructureType", +function(){ +return this.structure.structureType; +}); +Clazz_overrideMethod(c$, "getSubstructureType", +function(){ +return this.structure.substructureType; +}); +Clazz_overrideMethod(c$, "getStructureID", +function(){ +return this.structure.structureID; +}); +Clazz_overrideMethod(c$, "getStrandID", +function(){ +return this.structure.strandID; +}); +Clazz_overrideMethod(c$, "getStartChainID", +function(){ +return this.structure.startChainID; +}); +Clazz_overrideMethod(c$, "getStartSequenceNumber", +function(){ +return this.structure.startSequenceNumber; +}); +Clazz_overrideMethod(c$, "getStartInsertionCode", +function(){ +return J.api.JmolAdapter.canonizeInsertionCode(this.structure.startInsertionCode); +}); +Clazz_overrideMethod(c$, "getEndChainID", +function(){ +return this.structure.endChainID; +}); +Clazz_overrideMethod(c$, "getEndSequenceNumber", +function(){ +return this.structure.endSequenceNumber; +}); +Clazz_overrideMethod(c$, "getEndInsertionCode", +function(){ +return this.structure.endInsertionCode; +}); +Clazz_overrideMethod(c$, "getStrandCount", +function(){ +return this.structure.strandCount; +}); +Clazz_overrideMethod(c$, "getStructuredModels", +function(){ +return this.bsModelsDefined; +}); +Clazz_overrideMethod(c$, "getAtomIndices", +function(){ +return this.structure.atomStartEnd; +}); +Clazz_overrideMethod(c$, "getModelIndices", +function(){ +return this.structure.modelStartEnd; +}); +Clazz_overrideMethod(c$, "getBSAll", +function(){ +return this.structure.bsAll; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "AtomIndexIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(null, "J.api.Interface", ["JU.Logger"], function(){ +var c$ = Clazz_declareType(J.api, "Interface", null); +c$.getInterface = Clazz_defineMethod(c$, "getInterface", +function(name, vwr, state){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S,JV.Viewer,~S"); +c$.getOption = Clazz_defineMethod(c$, "getOption", +function(className, vwr, state){ +return J.api.Interface.getInterface("J." + className, vwr, state); +}, "~S,JV.Viewer,~S"); +c$.getUtil = Clazz_defineMethod(c$, "getUtil", +function(name, vwr, state){ +return J.api.Interface.getInterface("JU." + name, vwr, state); +}, "~S,JV.Viewer,~S"); +c$.getSymmetry = Clazz_defineMethod(c$, "getSymmetry", +function(vwr, state){ +return J.api.Interface.getInterface("JS.Symmetry", vwr, state); +}, "JV.Viewer,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(null, "J.api.JmolAdapter", ["JU.PT", "J.api.JmolViewer", "JU.Elements"], function(){ +var c$ = Clazz_declareType(J.api, "JmolAdapter", null); +c$.getElementSymbol = Clazz_defineMethod(c$, "getElementSymbol", +function(elementNumber){ +return JU.Elements.elementSymbolFromNumber(elementNumber); +}, "~N"); +c$.getElementNumber = Clazz_defineMethod(c$, "getElementNumber", +function(elementSymbol){ +return JU.Elements.elementNumberFromSymbol(elementSymbol, false); +}, "~S"); +c$.getNaturalIsotope = Clazz_defineMethod(c$, "getNaturalIsotope", +function(elementNumber){ +return JU.Elements.getNaturalIsotope(elementNumber); +}, "~N"); +c$.getBondingRadius = Clazz_defineMethod(c$, "getBondingRadius", +function(atomicNumberWithIsotope, charge){ +return JU.Elements.getBondingRadius(atomicNumberWithIsotope, charge); +}, "~N,~N"); +Clazz_defineMethod(c$, "getAtomSetCollectionFromReaderType", +function(name, type, bufferedReader, htParams){ +var a = this.getAtomSetCollectionReader(name, type, bufferedReader, (J.api.JmolViewer.allocateViewer(null, this)).setLoadParameters(htParams, false)); +if ((typeof(a)=='string')) return a; +return this.getAtomSetCollection(a); +}, "~S,~S,~O,java.util.Map"); +Clazz_defineMethod(c$, "openBufferedReader", +function(name, bufferedReader){ +return this.getAtomSetCollectionFromReaderType(name, null, bufferedReader, null); +}, "~S,java.io.BufferedReader"); +Clazz_defineMethod(c$, "openBufferedReader", +function(name, bufferedReader, htParams){ +return this.getAtomSetCollectionFromReaderType(name, null, bufferedReader, htParams); +}, "~S,java.io.BufferedReader,java.util.Map"); +Clazz_defineMethod(c$, "openBufferedReader", +function(name, type, bufferedReader){ +return this.getAtomSetCollectionFromReaderType(name, type, bufferedReader, null); +}, "~S,~S,java.io.BufferedReader"); +c$.canonizeAlphaDigit = Clazz_defineMethod(c$, "canonizeAlphaDigit", +function(ch){ +return (JU.PT.isLetterOrDigit(ch) ? ch : '\0'); +}, "~S"); +c$.canonizeInsertionCode = Clazz_defineMethod(c$, "canonizeInsertionCode", +function(insertionCode){ +return J.api.JmolAdapter.canonizeAlphaDigit(insertionCode); +}, "~S"); +c$.canonizeAlternateLocationID = Clazz_defineMethod(c$, "canonizeAlternateLocationID", +function(altLoc){ +return J.api.JmolAdapter.canonizeAlphaDigit(altLoc); +}, "~S"); +c$.cellParamNames = Clazz_newArray(-1, ["_cell_length_a", "_cell_length_b", "_cell_length_c", "_cell_angle_alpha", "_cell_angle_beta", "_cell_angle_gamma"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolAdapterAtomIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +(function(){ +var c$ = Clazz_declareType(J.api, "JmolAdapterBondIterator", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +(function(){ +var c$ = Clazz_declareType(J.api, "JmolAdapterStructureIterator", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolAppConsoleInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolAppletInterface", J.api.JmolSyncInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolCallbackListener"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolAnnotationParser"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolGraphicsInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolMeasurementClient"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolModulationSet"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolNavigatorInterface", Runnable); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolRendererInterface", J.api.JmolGraphicsInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolRepaintManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolStatusListener", J.api.JmolCallbackListener); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolSyncInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(null, "J.api.JmolViewer", ["java.util.Hashtable", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.menuStructure = null; +this.apiPlatform = null; +Clazz_instantialize(this, arguments);}, J.api, "JmolViewer", null); +c$.allocateViewer = Clazz_defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, implementedPlatform){ +var info = new java.util.Hashtable(); +if (display != null) info.put("display", display); +if (modelAdapter != null) info.put("adapter", modelAdapter); +if (statusListener != null) info.put("statuslistener", statusListener); +if (implementedPlatform != null) info.put("platform", implementedPlatform); +if (commandOptions != null) info.put("options", commandOptions); +if (fullName != null) info.put("fullname", fullName); +if (documentBase != null) info.put("documentbase", documentBase); +if (codeBase != null) info.put("codebase", codeBase); +info.put("isApp", Boolean.TRUE); +return new JV.Viewer(info); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform"); +c$.allocateViewer = Clazz_defineMethod(c$, "allocateViewer", +function(container, jmolAdapter){ +return J.api.JmolViewer.allocateViewer(container, jmolAdapter, null, null, null, null, null, null); +}, "~O,J.api.JmolAdapter"); +c$.allocateViewer = Clazz_defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener){ +return J.api.JmolViewer.allocateViewer(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, null); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener"); +Clazz_defineMethod(c$, "setConsole", +function(console){ +this.getProperty("DATA_API", "getAppConsole", console); +}, "J.api.JmolAppConsoleInterface"); +c$.getJmolVersion = Clazz_defineMethod(c$, "getJmolVersion", +function(){ +return JV.Viewer.getJmolVersion(); +}); +c$.getJmolVersionNoDate = Clazz_defineMethod(c$, "getJmolVersionNoDate", +function(){ +return JV.JC.version; +}); +Clazz_defineMethod(c$, "openReader", +function(fullPathName, reader){ +return this.openReader(fullPathName == null ? "String" : fullPathName, null, reader); +}, "~S,~O"); +Clazz_defineMethod(c$, "openFileAsync", +function(fileName){ +this.openFileAsyncSpecial(fileName, 0); +}, "~S"); +Clazz_defineMethod(c$, "renderScreenImage", +function(g, currentSize, rectClip){ +this.apiPlatform.renderScreenImage(g, currentSize); +}, "~O,~O,~O"); +Clazz_defineMethod(c$, "runScriptCautiously", +function(script){ +return null; +}, "~S"); +Clazz_defineMethod(c$, "dispose", +function(){ +}); +{ +}{ +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "SymmetryInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "Translator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.appletjs"); +Clazz_load(["JU.GenericApplet"], "J.appletjs.Jmol", ["java.util.Hashtable"], function(){ +var c$ = Clazz_declareType(J.appletjs, "Jmol", JU.GenericApplet); +Clazz_makeConstructor(c$, +function(vwrOptions){ +Clazz_superConstructor (this, J.appletjs.Jmol, []); +this.htParams = new java.util.Hashtable(); +if (vwrOptions == null) vwrOptions = new java.util.Hashtable(); +this.vwrOptions = vwrOptions; +for (var entry, $entry = vwrOptions.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.htParams.put(entry.getKey().toLowerCase(), entry.getValue()); + +this.documentBase = "" + vwrOptions.get("documentBase"); +this.codeBase = "" + vwrOptions.get("codePath"); +JU.GenericApplet.isJS = true; +this.init(this); +}, "java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.atomdata"); +Clazz_load(null, "J.atomdata.AtomData", ["JU.P3", "JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.programInfo = null; +this.fileName = null; +this.modelName = null; +this.modelIndex = 0; +this.bsSelected = null; +this.bsIgnored = null; +this.bsMolecules = null; +this.radiusData = null; +this.firstAtomIndex = 0; +this.firstModelIndex = 0; +this.lastModelIndex = 0; +this.hAtomRadius = 0; +this.atomIndex = null; +this.atoms = null; +this.xyz = null; +this.atomRadius = null; +this.atomicNumber = null; +this.atomMolecule = null; +this.hAtoms = null; +this.ac = 0; +this.hydrogenAtomCount = 0; +this.adpMode = 0; +Clazz_instantialize(this, arguments);}, J.atomdata, "AtomData", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "transformXYZ", +function(mat, bs){ +var p = new Array(this.xyz.length); +if (bs == null) bs = JU.BSUtil.newBitSet2(0, this.xyz.length); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (this.xyz[i] == null) continue; +p[i] = JU.P3.newP(this.xyz[i]); +mat.rotTrans(p[i]); +} +this.xyz = p; +}, "JU.M4,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.atomdata"); +Clazz_declareInterface(J.atomdata, "AtomDataServer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.atomdata"); +Clazz_load(["java.lang.Enum", "J.c.VDW"], "J.atomdata.RadiusData", ["JU.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.info = null; +this.factorType = null; +this.vdwType = null; +this.value = NaN; +this.valueExtended = 0; +this.values = null; +Clazz_instantialize(this, arguments);}, J.atomdata, "RadiusData", null); +Clazz_prepareFields (c$, function(){ +this.factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +this.vdwType = J.c.VDW.AUTO; +}); +Clazz_makeConstructor(c$, +function(values, value, factorType, vdwType){ +if (values != null) { +this.values = values; +this.value = 2147483647; +return; +}if (factorType == null) return; +this.factorType = factorType; +this.value = value; +if (vdwType != null) this.vdwType = vdwType; +}, "~A,~N,J.atomdata.RadiusData.EnumType,J.c.VDW"); +Clazz_overrideMethod(c$, "toString", +function(){ +if (Float.isNaN(this.value)) return ""; +var sb = new JU.SB(); +switch (this.factorType) { +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +sb.appendF(this.value); +break; +case J.atomdata.RadiusData.EnumType.OFFSET: +sb.append(this.value > 0 ? "+" : "").appendF(this.value); +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +sb.appendI(Clazz_floatToInt(this.value * 100)).append("%"); +if (this.vdwType !== J.c.VDW.AUTO) sb.append(this.vdwType.getVdwLabel()); +break; +case J.atomdata.RadiusData.EnumType.SCREEN: +sb.appendI(Clazz_floatToInt(this.value)); +} +return sb.toString(); +}); +/*if2*/;(function(){ +var c$ = Clazz_declareType(J.atomdata.RadiusData, "EnumType", Enum); +Clazz_defineEnumConstant(c$, "ABSOLUTE", 0, []); +Clazz_defineEnumConstant(c$, "OFFSET", 1, []); +Clazz_defineEnumConstant(c$, "FACTOR", 2, []); +Clazz_defineEnumConstant(c$, "SCREEN", 3, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs"); +Clazz_load(["J.awtjs2d.Platform"], "J.awtjs.Platform", null, function(){ +var c$ = Clazz_declareType(J.awtjs, "Platform", J.awtjs2d.Platform); +Clazz_overrideMethod(c$, "drawImage", +function(g, img, x, y, width, height, isDTI){ +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz_overrideMethod(c$, "getTextPixels", +function(text, font3d, gObj, image, width, height, ascent){ +return null; +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "getGraphics", +function(image){ +return null; +}, "~O"); +Clazz_overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return null; +}, "~O,~B"); +Clazz_overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +return null; +}, "~O,~N,~N"); +Clazz_overrideMethod(c$, "newOffScreenImage", +function(w, h){ +return null; +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +(function(){ +var c$ = Clazz_declareType(J.awtjs2d, "Display", null); +c$.getFullScreenDimensions = Clazz_defineMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +{ +widthHeight[0] = canvas.width; +widthHeight[1] = canvas.height; +}}, "~O,~A"); +c$.hasFocus = Clazz_defineMethod(c$, "hasFocus", +function(canvas){ +{ +}return true; +}, "~O"); +c$.requestFocusInWindow = Clazz_defineMethod(c$, "requestFocusInWindow", +function(canvas){ +{ +}}, "~O"); +c$.renderScreenImage = Clazz_defineMethod(c$, "renderScreenImage", +function(vwr, g, size){ +{ +}}, "J.api.PlatformViewer,~O,~O"); +c$.prompt = Clazz_defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +{ +var s = (data == null ? alert(label) : prompt(label, data)); +if (s != null)return s; +}return "null"; +}, "~S,~S,~A,~B"); +c$.convertPointFromScreen = Clazz_defineMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +{ +}}, "~O,JU.P3"); +c$.drawImage = Clazz_defineMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +{ +var buf8 = canvas.buf8; +var buf32 = canvas.buf32; +var n = canvas.width * canvas.height; +var di = 1; +if (isDTI) { +var diw = width % 2; +width = Math.floor(width/2); +di = Math.floor(canvas.width/width); +} +var dw = (canvas.width - width || x) * 4; +for (var i = 0, p = 0, j = x * 4; i < n;) { +buf8[j++] = (buf32[i] >> 16) & 0xFF; +buf8[j++] = (buf32[i] >> 8) & 0xFF; +buf8[j++] = buf32[i] & 0xFF; +buf8[j++] = 0xFF; +i += di; +if (++p%width==0) { +if (diw) { +i += 1; +buf8[j] = 0; +buf8[j+1] = 0; +buf8[j+2] = 0; +buf8[j+3] = 0; +} +j += dw; +} +} +context.putImageData(canvas.imgdata,0,0); +}}, "~O,~O,~N,~N,~N,~N,~B"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(null, "J.awtjs2d.Image", ["J.awtjs2d.Platform"], function(){ +var c$ = Clazz_declareType(J.awtjs2d, "Image", null); +c$.getWidth = Clazz_defineMethod(c$, "getWidth", +function(canvas){ +{ +return (canvas.imageWidth ? canvas.imageWidth : canvas.width); +}}, "~O"); +c$.getHeight = Clazz_defineMethod(c$, "getHeight", +function(canvas){ +{ +return (canvas.imageHeight ? canvas.imageHeight : canvas.height); +}}, "~O"); +c$.grabPixels = Clazz_defineMethod(c$, "grabPixels", +function(context, width, height){ +var data = null; +{ +data = context.getImageData(0, 0, width, height).data; +}return J.awtjs2d.Image.toIntARGB(data); +}, "~O,~N,~N"); +c$.toIntARGB = Clazz_defineMethod(c$, "toIntARGB", +function(imgData){ +var n = Clazz_doubleToInt(imgData.length / 4); +var iData = Clazz_newIntArray (n, 0); +for (var i = 0, j = 0; i < n; ) { +iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | (imgData[j++] << 24); +} +return iData; +}, "~A"); +c$.getTextPixels = Clazz_defineMethod(c$, "getTextPixels", +function(text, font3d, context, width, height, ascent){ +{ +context.fillStyle = "#000000"; +context.fillRect(0, 0, width, height); +context.fillStyle = "#FFFFFF"; +context.font = font3d.font; +context.fillText(text, 0, ascent); +}return J.awtjs2d.Image.grabPixels(context, width, height); +}, "~S,JU.Font,~O,~N,~N,~N"); +c$.allocateRgbImage = Clazz_defineMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, canvas){ +{ +if (canvas == null) +canvas = {width:windowWidth,height:windowHeight}; +canvas.buf32 = pBuffer; +}return canvas; +}, "~N,~N,~A,~N,~B,~O"); +c$.getImageDialog = Clazz_defineMethod(c$, "getImageDialog", +function(vwr, title, imageMap){ +return J.awtjs2d.Platform.Jmol().consoleGetImageDialog(vwr, title, imageMap); +}, "JV.Viewer,~S,java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(["J.api.GenericFileInterface"], "J.awtjs2d.JSFile", ["JU.OC", "$.PT", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.fullName = null; +Clazz_instantialize(this, arguments);}, J.awtjs2d, "JSFile", null, J.api.GenericFileInterface); +Clazz_makeConstructor(c$, +function(name){ +this.name = name.$replace('\\', '/'); +this.fullName = name; +if (!this.fullName.startsWith("/") && JU.OC.urlTypeIndex(name) < 0) this.fullName = JV.Viewer.jsDocumentBase + "/" + this.fullName; +this.fullName = JU.PT.rep(this.fullName, "/./", "/"); +name = name.substring(name.lastIndexOf("/") + 1); +}, "~S"); +c$.newFile = Clazz_defineMethod(c$, "newFile", +function(name){ +return new J.awtjs2d.JSFile(name); +}, "~S"); +Clazz_overrideMethod(c$, "getParentAsFile", +function(){ +var pt = this.fullName.lastIndexOf("/"); +return (pt < 0 ? null : new J.awtjs2d.JSFile(this.fullName.substring(0, pt))); +}); +Clazz_overrideMethod(c$, "getFullPath", +function(){ +return this.fullName; +}); +Clazz_overrideMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_overrideMethod(c$, "isDirectory", +function(){ +return this.fullName.endsWith("/"); +}); +Clazz_overrideMethod(c$, "length", +function(){ +return 0; +}); +c$.getURLContents = Clazz_defineMethod(c$, "getURLContents", +function(url, outputBytes, post){ +try { +var conn = url.openConnection(); +if (outputBytes != null) conn.outputBytes(outputBytes); + else if (post != null) conn.outputString(post); +return conn.getContents(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return e.toString(); +} else { +throw e; +} +} +}, "java.net.URL,~A,~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.fullName; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +(function(){ +var c$ = Clazz_declareType(J.awtjs2d, "JSFont", null); +c$.newFont = Clazz_defineMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize, type){ +fontFace = (fontFace.equals("Monospaced") ? "Courier" : fontFace.startsWith("Sans") ? "Helvetica Neue, Sans-serif" : "Serif"); +return (isBold ? "bold " : "") + (isItalic ? "italic " : "") + fontSize + type + " " + fontFace; +}, "~S,~B,~B,~N,~S"); +c$.getFontMetrics = Clazz_defineMethod(c$, "getFontMetrics", +function(font, context){ +{ +if (context.font != font.font) { +context.font = font.font; +font.font = context.font; +context._fontAscent = Math.ceil(font.fontSize); //pt, not px +// the descent is actually (px - pt) +// but I know of no way of getting access to the drawn height +context._fontDescent = Math.ceil(font.fontSize * 0.25);//approx +} +}return context; +}, "JU.Font,~O"); +c$.getAscent = Clazz_defineMethod(c$, "getAscent", +function(context){ +{ +return Math.ceil(context._fontAscent); +}}, "~O"); +c$.getDescent = Clazz_defineMethod(c$, "getDescent", +function(context){ +{ +return Math.ceil(context._fontDescent); +}}, "~O"); +c$.stringWidth = Clazz_defineMethod(c$, "stringWidth", +function(font, context, text){ +{ +context.font = font.font; +return Math.ceil(context.measureText(text).width); +}}, "JU.Font,~O,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(["J.api.GenericMouseInterface"], "J.awtjs2d.Mouse", ["JU.PT", "$.V3", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.manager = null; +this.keyBuffer = ""; +this.isMouseDown = false; +this.wheeling = false; +this.modifiersDown = 0; +this.xWhenPressed = 0; +this.yWhenPressed = 0; +this.modifiersWhenPressed10 = 0; +Clazz_instantialize(this, arguments);}, J.awtjs2d, "Mouse", null, J.api.GenericMouseInterface); +Clazz_makeConstructor(c$, +function(privateKey, vwr, display){ +this.vwr = vwr; +this.manager = this.vwr.acm; +}, "~N,JV.Viewer,~O"); +Clazz_overrideMethod(c$, "clear", +function(){ +}); +Clazz_overrideMethod(c$, "dispose", +function(){ +}); +Clazz_overrideMethod(c$, "processEvent", +function(id, x, y, modifiers, time){ +if (id != 507) modifiers = J.awtjs2d.Mouse.applyLeftMouse(modifiers); +switch (id) { +case 507: +this.wheeled(time, x, modifiers); +break; +case 501: +this.xWhenPressed = x; +this.yWhenPressed = y; +this.modifiersWhenPressed10 = modifiers; +this.pressed(time, x, y, modifiers, false); +break; +case 506: +this.dragged(time, x, y); +break; +case 504: +this.entry(time, x, y, false); +break; +case 505: +this.entry(time, x, y, true); +break; +case 503: +this.moved(time, x, y, modifiers); +break; +case 502: +this.released(time, x, y, modifiers); +if (x == this.xWhenPressed && y == this.yWhenPressed && modifiers == this.modifiersWhenPressed10) { +this.clicked(time, x, y, modifiers, 1); +}break; +default: +return false; +} +return true; +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +if (touches[0].length < 2) return; +var t1 = touches[0]; +var t2 = touches[1]; +var t1first = t1[0]; +var t1last = t1[t2.length - 1]; +var x1first = t1first[0]; +var x1last = t1last[0]; +var dx1 = x1last - x1first; +var y1first = t1first[1]; +var y1last = t1last[1]; +var dy1 = y1last - y1first; +var v1 = JU.V3.new3(dx1, dy1, 0); +var d1 = v1.length(); +var t2first = t2[0]; +var t2last = t2[t2.length - 1]; +var x2first = t2first[0]; +var x2last = t2last[0]; +var dx2 = x2last - x2first; +var y2first = t2first[1]; +var y2last = t2last[1]; +var dy2 = y2last - y2first; +var v2 = JU.V3.new3(dx2, dy2, 0); +var d2 = v2.length(); +if (d1 < 1 || d2 < 1) return; +v1.normalize(); +v2.normalize(); +var cos12 = (v1.dot(v2)); +if (cos12 > 0.8) { +var deltaX = Clazz_floatToInt(x1last - t1[t1.length - 2][0]); +var deltaY = Clazz_floatToInt(y1last - t1[t1.length - 2][1]); +this.vwr.translateXYBy(deltaX, deltaY); +} else if (cos12 < -0.8) { +v1 = JU.V3.new3(x2first - x1first, y2first - y1first, 0); +v2 = JU.V3.new3(x2last - x1last, y2last - y1last, 0); +var dx = v2.length() - v1.length(); +this.wheeled(System.currentTimeMillis(), dx < 0 ? -1 : 1, 32); +}}, "~A"); +Clazz_defineMethod(c$, "mouseClicked", +function(e){ +this.clicked(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.getClickCount()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseEntered", +function(e){ +this.entry(e.getWhen(), e.getX(), e.getY(), false); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseExited", +function(e){ +this.entry(e.getWhen(), e.getX(), e.getY(), true); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mousePressed", +function(e){ +this.pressed(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.isPopupTrigger()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseReleased", +function(e){ +this.released(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseDragged", +function(e){ +var modifiers = e.getModifiers(); +if ((modifiers & 28) == 0) modifiers |= 16; +this.dragged(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseMoved", +function(e){ +this.moved(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseWheelMoved", +function(e){ +e.consume(); +this.wheeled(e.getWhen(), e.getWheelRotation(), e.getModifiers()); +}, "java.awt.event.MouseWheelEvent"); +Clazz_defineMethod(c$, "keyTyped", +function(ke){ +ke.consume(); +if (!this.vwr.menuEnabled()) return; +var ch = ke.getKeyChar(); +var modifiers = ke.getModifiers(); +if (JU.Logger.debuggingHigh) JU.Logger.debug("MouseManager keyTyped: " + ch + " " + (0 + ch.charCodeAt(0)) + " " + modifiers); +if (modifiers != 0 && modifiers != 1) { +switch ((ch).charCodeAt(0)) { +case String.fromCharCode(11): +case 107: +var isON = !this.vwr.getBooleanProperty("allowKeyStrokes"); +switch (modifiers) { +case 2: +this.vwr.setBooleanProperty("allowKeyStrokes", isON); +this.vwr.setBooleanProperty("showKeyStrokes", true); +break; +case 10: +case 1: +this.vwr.setBooleanProperty("allowKeyStrokes", isON); +this.vwr.setBooleanProperty("showKeyStrokes", false); +break; +} +this.clearKeyBuffer(); +this.vwr.refresh(3, "showkey"); +break; +case 22: +case 118: +switch (modifiers) { +case 2: +break; +} +break; +case 26: +case 122: +switch (modifiers) { +case 2: +this.vwr.undoMoveAction(4165, 1); +break; +case 3: +this.vwr.undoMoveAction(4140, 1); +break; +} +break; +case 25: +case 121: +switch (modifiers) { +case 2: +this.vwr.undoMoveAction(4140, 1); +break; +} +break; +} +return; +}if (!this.vwr.getBooleanProperty("allowKeyStrokes")) return; +this.addKeyBuffer(ke.getModifiers() == 1 ? Character.toUpperCase(ch) : ch); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "keyPressed", +function(ke){ +if (this.vwr.isApplet) ke.consume(); +this.manager.keyPressed(ke.getKeyCode(), ke.getModifiers()); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "keyReleased", +function(ke){ +ke.consume(); +this.manager.keyReleased(ke.getKeyCode()); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "clearKeyBuffer", +function(){ +if (this.keyBuffer.length == 0) return; +this.keyBuffer = ""; +if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo \"\"", true, true); +}); +Clazz_defineMethod(c$, "addKeyBuffer", +function(ch){ +if (ch.charCodeAt(0) == 10) { +this.sendKeyBuffer(); +return; +}if (ch.charCodeAt(0) == 8) { +if (this.keyBuffer.length > 0) this.keyBuffer = this.keyBuffer.substring(0, this.keyBuffer.length - 1); +} else { +this.keyBuffer += ch; +}if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo " + JU.PT.esc("\1" + this.keyBuffer), true, true); +}, "~S"); +Clazz_defineMethod(c$, "sendKeyBuffer", +function(){ +var kb = this.keyBuffer; +if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo " + JU.PT.esc(this.keyBuffer), true, true); +this.clearKeyBuffer(); +this.vwr.evalStringQuietSync(kb, false, true); +}); +Clazz_defineMethod(c$, "entry", +function(time, x, y, isExit){ +this.wheeling = false; +this.isMouseDown = false; +this.modifiersDown = 0; +this.manager.mouseEnterExit(time, x, y, isExit); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "clicked", +function(time, x, y, modifiers, clickCount){ +this.clearKeyBuffer(); +this.manager.mouseAction(2, time, x, y, 1, modifiers); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "moved", +function(time, x, y, modifiers){ +this.clearKeyBuffer(); +if (this.isMouseDown) this.manager.mouseAction(1, time, x, y, 0, this.modifiersDown); + else this.manager.mouseAction(0, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "wheeled", +function(time, rotation, modifiers){ +this.clearKeyBuffer(); +this.wheeling = true; +this.manager.mouseAction(3, time, 0, rotation, 0, modifiers & -29 | 32); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "pressed", +function(time, x, y, modifiers, isPopupTrigger){ +this.clearKeyBuffer(); +this.isMouseDown = true; +this.modifiersDown = modifiers; +this.wheeling = false; +this.manager.mouseAction(4, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "released", +function(time, x, y, modifiers){ +this.isMouseDown = false; +this.modifiersDown = 0; +this.wheeling = false; +this.manager.mouseAction(5, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "dragged", +function(time, x, y){ +if (this.wheeling) return; +if ((this.modifiersDown & 20) == 20) this.modifiersDown = this.modifiersDown & -5 | 2; +this.manager.mouseAction(1, time, x, y, 0, this.modifiersDown); +}, "~N,~N,~N"); +c$.applyLeftMouse = Clazz_defineMethod(c$, "applyLeftMouse", +function(modifiers){ +return ((modifiers & 28) == 0) ? (modifiers | 16) : modifiers; +}, "~N"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +var e = event; +switch (e.getID()) { +case 401: +this.keyPressed(e); +break; +case 402: +this.keyReleased(e); +break; +case 400: +this.keyTyped(e); +break; +} +}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(["J.api.GenericPlatform"], "J.awtjs2d.Platform", ["java.net.URL", "JU.AjaxURLStreamHandlerFactory", "$.Rdr", "J.api.Interface", "J.awtjs2d.Display", "$.Image", "$.JSFile", "$.JSFont", "$.Mouse"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.canvas = null; +this.vwr = null; +this.context = null; +Clazz_instantialize(this, arguments);}, J.awtjs2d, "Platform", null, J.api.GenericPlatform); +Clazz_overrideMethod(c$, "setViewer", +function(vwr, canvas){ +{ +this.vwr = vwr; +if (canvas == null) { +canvas = document.createElement('canvas'); +this.context = canvas.getContext("2d"); +} else { +this.context = canvas.getContext("2d"); +canvas.imgdata = this.context.getImageData(0, 0, canvas.width, canvas.height); +canvas.buf8 = canvas.imgdata.data; +} +}this.canvas = canvas; +try { +java.net.URL.setURLStreamHandlerFactory( new JU.AjaxURLStreamHandlerFactory()); +} catch (e) { +} +}, "J.api.PlatformViewer,~O"); +Clazz_overrideMethod(c$, "isSingleThreaded", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "getJsObjectInfo", +function(jsObject, method, args){ +{ +return (method == null ? null : method == "localName" ? jsObject[0]["nodeName"] : args == null ? jsObject[0][method] : jsObject[0][method](args[0])); +}}, "~A,~S,~A"); +Clazz_overrideMethod(c$, "isHeadless", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "getMouseManager", +function(privateKey, display){ +return new J.awtjs2d.Mouse(privateKey, this.vwr, display); +}, "~N,~O"); +Clazz_overrideMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +J.awtjs2d.Display.convertPointFromScreen(canvas, ptTemp); +}, "~O,JU.P3"); +Clazz_overrideMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +J.awtjs2d.Display.getFullScreenDimensions(canvas, widthHeight); +}, "~O,~A"); +Clazz_overrideMethod(c$, "getMenuPopup", +function(menuStructure, type){ +var c = (type == 'j' ? "awtjs2d.JSJmolPopup" : "awtjs2d.JSModelKitPopup"); +var jmolpopup = J.api.Interface.getOption(c, this.vwr, "popup"); +try { +if (jmolpopup != null) jmolpopup.jpiInitialize(this.vwr, menuStructure); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +c = "Exception creating " + c + ":" + e; +System.out.println(c); +return null; +} else { +throw e; +} +} +return jmolpopup; +}, "~S,~S"); +Clazz_overrideMethod(c$, "hasFocus", +function(canvas){ +return J.awtjs2d.Display.hasFocus(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "prompt", +function(label, data, list, asButtons){ +return J.awtjs2d.Display.prompt(label, data, list, asButtons); +}, "~S,~S,~A,~B"); +Clazz_overrideMethod(c$, "renderScreenImage", +function(context, size){ +J.awtjs2d.Display.renderScreenImage(this.vwr, context, size); +}, "~O,~O"); +Clazz_overrideMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +J.awtjs2d.Display.drawImage(context, canvas, x, y, width, height, isDTI); +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz_overrideMethod(c$, "requestFocusInWindow", +function(canvas){ +J.awtjs2d.Display.requestFocusInWindow(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "repaint", +function(canvas){ +var jmol = null; +{ +jmol = (self.Jmol && Jmol.repaint ? Jmol : null); +}if (jmol != null) jmol.repaint((this.vwr).html5Applet, true); +}, "~O"); +Clazz_overrideMethod(c$, "setTransparentCursor", +function(canvas){ +}, "~O"); +Clazz_overrideMethod(c$, "setCursor", +function(c, canvas){ +J.awtjs2d.Platform.Jmol().setCursor((this.vwr).html5Applet, c); +}, "~N,~O"); +Clazz_overrideMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, isImageWrite){ +if (pBuffer == null) { +pBuffer = this.grabPixels(null, 0, 0, null); +{ +windowWidth = this.canvas.width; +windowHeight = this.canvas.height; +}}return J.awtjs2d.Image.allocateRgbImage(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, (isImageWrite ? null : this.canvas)); +}, "~N,~N,~A,~N,~B,~B"); +Clazz_overrideMethod(c$, "notifyEndOfRendering", +function(){ +}); +Clazz_overrideMethod(c$, "disposeGraphics", +function(gOffscreen){ +}, "~O"); +Clazz_overrideMethod(c$, "grabPixels", +function(canvas, width, height, pixels){ +var context2d = null; +var isWebGL = (canvas == null); +{ +if(isWebGL) { this.canvas = canvas = +Jmol.loadImage(this,"webgl","" ++System.currentTimeMillis(),this +.vwr.html5Applet._canvas.toDataURL(),null,null); width = +canvas.imageWidth; height = canvas.imageHeight; +canvas.imageWidth = 0; } +if (canvas.image && (width != canvas.width || height != +canvas.height)) Jmol.setCanvasImage(canvas, width, height); +if (canvas.buf32) return canvas.buf32; context2d = +canvas.getContext('2d'); +}var buf = J.awtjs2d.Image.grabPixels(context2d, width, height); +{ +canvas.buf32 = buf; +}if (isWebGL) for (var i = buf.length; --i >= 0; ) if (buf[i] == 0) buf[i] = -1; + +return buf; +}, "~O,~N,~N,~A"); +Clazz_overrideMethod(c$, "drawImageToBuffer", +function(gOffscreen, imageOffscreen, canvas, width, height, bgcolor){ +return this.grabPixels(canvas, width, height, null); +}, "~O,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "getTextPixels", +function(text, font3d, context, image, width, height, ascent){ +return J.awtjs2d.Image.getTextPixels(text, font3d, context, width, height, ascent); +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "flushImage", +function(imagePixelBuffer){ +}, "~O"); +Clazz_overrideMethod(c$, "getGraphics", +function(canvas){ +{ +return (canvas == null ? this.context : canvas.getContext("2d")); +}}, "~O"); +Clazz_overrideMethod(c$, "getImageHeight", +function(canvas){ +return (canvas == null ? -1 : J.awtjs2d.Image.getHeight(canvas)); +}, "~O"); +Clazz_overrideMethod(c$, "getImageWidth", +function(canvas){ +return (canvas == null ? -1 : J.awtjs2d.Image.getWidth(canvas)); +}, "~O"); +Clazz_overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return this.getGraphics(image); +}, "~O,~B"); +Clazz_overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +return J.awtjs2d.Platform.Jmol().getHiddenCanvas((this.vwr).html5Applet, "stereoImage", w, h); +}, "~O,~N,~N"); +Clazz_overrideMethod(c$, "newOffScreenImage", +function(w, h){ +return J.awtjs2d.Platform.Jmol().getHiddenCanvas((this.vwr).html5Applet, "textImage", w, h); +}, "~N,~N"); +Clazz_overrideMethod(c$, "waitForDisplay", +function(echoNameAndPath, zipBytes){ +return false; +}, "~O,~O"); +Clazz_overrideMethod(c$, "createImage", +function(name_path_bytes){ +var echoName = (name_path_bytes)[0]; +var path = (name_path_bytes)[1]; +var bytes = (name_path_bytes)[2]; +var vwr = this.vwr; +var sc = (bytes == null ? vwr.getEvalContextAndHoldQueue(vwr.eval) : null); +var f = null; +{ +f = function(canvas, pathOrError) { vwr.loadImageData(canvas, pathOrError, echoName, sc) }; +}return J.awtjs2d.Platform.Jmol().loadImage(this, echoName, path, bytes, f); +}, "~O"); +Clazz_overrideMethod(c$, "fontStringWidth", +function(font, text){ +return J.awtjs2d.JSFont.stringWidth(font, this.context, text); +}, "JU.Font,~S"); +Clazz_overrideMethod(c$, "getFontAscent", +function(context){ +return J.awtjs2d.JSFont.getAscent(context); +}, "~O"); +Clazz_overrideMethod(c$, "getFontDescent", +function(context){ +return J.awtjs2d.JSFont.getDescent(context); +}, "~O"); +Clazz_overrideMethod(c$, "getFontMetrics", +function(font, context){ +return J.awtjs2d.JSFont.getFontMetrics(font, context == null ? this.context : context); +}, "JU.Font,~O"); +Clazz_overrideMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize){ +return J.awtjs2d.JSFont.newFont(fontFace, isBold, isItalic, fontSize, "px"); +}, "~S,~B,~B,~N"); +Clazz_overrideMethod(c$, "getDateFormat", +function(isoType){ +{ +if (isoType == null) { +} else if (isoType.indexOf("8824") >= 0) { +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + (1 + d.getMonth()); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} else if (isoType.indexOf("8601") >= 0){ +var d = new Date(); +var x = d.toString().split(" "); +// Firefox now doing this? +if (x.length == 1) +return x; +var MM = "0" + (1 + d.getMonth()); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + '-' + MM + '-' + dd + 'T' + x[4] +} +return ("" + (new Date())).split(" (")[0]; +}}, "~S"); +Clazz_overrideMethod(c$, "newFile", +function(name){ +return new J.awtjs2d.JSFile(name); +}, "~S"); +Clazz_overrideMethod(c$, "getBufferedFileInputStream", +function(name){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "getURLContents", +function(url, outputBytes, post, asString){ +return J.awtjs2d.Platform.getURLContentsStatic(url, outputBytes, post, asString); +}, "java.net.URL,~A,~S,~B"); +c$.getURLContentsStatic = Clazz_defineMethod(c$, "getURLContentsStatic", +function(url, outputBytes, post, asString){ +var ret = J.awtjs2d.JSFile.getURLContents(url, outputBytes, post); +try { +return (!asString ? ret : (typeof(ret)=='string') ? ret : Clazz_instanceOf(ret,"JU.SB") ? (ret).toString() : Clazz_instanceOf(ret,Array) ? String.instantialize(ret) : String.instantialize(JU.Rdr.getStreamAsBytes(ret, null))); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return "" + e; +} else { +throw e; +} +} +}, "java.net.URL,~A,~S,~B"); +Clazz_overrideMethod(c$, "getLocalUrl", +function(fileName){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "getImageDialog", +function(title, imageMap){ +return J.awtjs2d.Image.getImageDialog(this.vwr, title, imageMap); +}, "~S,java.util.Map"); +c$.Jmol = Clazz_defineMethod(c$, "Jmol", +function(){ +{ +return Jmol; +}}); +Clazz_overrideMethod(c$, "forceAsyncLoad", +function(filename){ +return J.awtjs2d.Platform.Jmol().isBinaryUrl(filename); +}, "~S"); +Clazz_overrideMethod(c$, "getInChI", +function(){ +return (J.awtjs2d.Platform.inchi == null ? (J.awtjs2d.Platform.inchi = J.api.Interface.getInterface("J.inchi.InChIJS", this.vwr, "platform")) : J.awtjs2d.Platform.inchi); +}); +Clazz_overrideMethod(c$, "confirm", +function(msg, msgNo){ +var ok = false; +if (ok) return 0; +if (msgNo != null) ok = false; +return (ok ? 1 : 2); +}, "~S,~S"); +c$.inchi = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(null, "J.bspt.Bspf", ["JU.AU", "J.bspt.Bspt"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.dimMax = 0; +this.bspts = null; +this.isValid = false; +this.bsptsValid = null; +this.cubeIterators = null; +Clazz_instantialize(this, arguments);}, J.bspt, "Bspf", null); +Clazz_makeConstructor(c$, +function(dimMax){ +this.dimMax = dimMax; +this.bspts = new Array(1); +this.bsptsValid = Clazz_newBooleanArray(1, false); +this.cubeIterators = new Array(0); +}, "~N"); +Clazz_defineMethod(c$, "validateModel", +function(i, isValid){ +this.bsptsValid[i] = isValid; +}, "~N,~B"); +Clazz_defineMethod(c$, "isInitializedIndex", +function(bsptIndex){ +return this.bspts.length > bsptIndex && this.bspts[bsptIndex] != null && this.bsptsValid[bsptIndex]; +}, "~N"); +Clazz_defineMethod(c$, "addTuple", +function(bsptIndex, tuple){ +if (bsptIndex >= this.bspts.length) { +this.bspts = JU.AU.arrayCopyObject(this.bspts, bsptIndex + 1); +this.bsptsValid = JU.AU.arrayCopyBool(this.bsptsValid, bsptIndex + 1); +}var bspt = this.bspts[bsptIndex]; +if (bspt == null) { +bspt = this.bspts[bsptIndex] = new J.bspt.Bspt(this.dimMax, bsptIndex); +}bspt.addTuple(tuple); +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "stats", +function(){ +for (var i = 0; i < this.bspts.length; ++i) if (this.bspts[i] != null) this.bspts[i].stats(); + +}); +Clazz_defineMethod(c$, "getCubeIterator", +function(bsptIndex){ +if (bsptIndex < 0) return this.getNewCubeIterator(-1 - bsptIndex); +if (bsptIndex >= this.cubeIterators.length) this.cubeIterators = JU.AU.arrayCopyObject(this.cubeIterators, bsptIndex + 1); +if (this.cubeIterators[bsptIndex] == null && this.bspts[bsptIndex] != null) this.cubeIterators[bsptIndex] = this.getNewCubeIterator(bsptIndex); +this.cubeIterators[bsptIndex].set(this.bspts[bsptIndex]); +return this.cubeIterators[bsptIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getNewCubeIterator", +function(bsptIndex){ +return this.bspts[bsptIndex].allocateCubeIterator(); +}, "~N"); +Clazz_defineMethod(c$, "initialize", +function(modelIndex, atoms, modelAtomBitSet){ +if (this.bspts[modelIndex] != null) this.bspts[modelIndex].reset(); +for (var i = modelAtomBitSet.nextSetBit(0); i >= 0; i = modelAtomBitSet.nextSetBit(i + 1)) this.addTuple(modelIndex, atoms[i]); + +this.bsptsValid[modelIndex] = true; +}, "~N,~A,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(null, "J.bspt.Bspt", ["J.bspt.CubeIterator", "$.Leaf"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.treeDepth = 0; +this.dimMax = 0; +this.index = 0; +this.eleRoot = null; +Clazz_instantialize(this, arguments);}, J.bspt, "Bspt", null); +Clazz_makeConstructor(c$, +function(dimMax, index){ +this.dimMax = dimMax; +this.index = index; +this.reset(); +}, "~N,~N"); +Clazz_defineMethod(c$, "reset", +function(){ +this.eleRoot = new J.bspt.Leaf(this, null, 0); +this.treeDepth = 1; +}); +Clazz_defineMethod(c$, "addTuple", +function(tuple){ +this.eleRoot = this.eleRoot.addTuple(0, tuple); +}, "JU.T3"); +Clazz_defineMethod(c$, "stats", +function(){ +}); +Clazz_defineMethod(c$, "allocateCubeIterator", +function(){ +return new J.bspt.CubeIterator(this); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bspt = null; +this.stack = null; +this.sp = 0; +this.leafIndex = 0; +this.leaf = null; +this.radius = 0; +this.cx = 0; +this.cy = 0; +this.cz = 0; +this.dx = 0; +this.dy = 0; +this.dz = 0; +this.tHemisphere = false; +Clazz_instantialize(this, arguments);}, J.bspt, "CubeIterator", null); +Clazz_makeConstructor(c$, +function(bspt){ +this.set(bspt); +}, "J.bspt.Bspt"); +Clazz_defineMethod(c$, "set", +function(bspt){ +this.bspt = bspt; +this.stack = new Array(bspt.treeDepth); +}, "J.bspt.Bspt"); +Clazz_defineMethod(c$, "initialize", +function(center, radius, hemisphereOnly){ +this.radius = radius; +this.tHemisphere = false; +this.cx = center.x; +this.cy = center.y; +this.cz = center.z; +this.leaf = null; +if (this.stack.length < this.bspt.treeDepth) this.set(this.bspt); +this.stack[0] = this.bspt.eleRoot; +this.sp = 1; +this.findLeftLeaf(); +this.tHemisphere = hemisphereOnly; +}, "JU.T3,~N,~B"); +Clazz_defineMethod(c$, "release", +function(){ +this.set(this.bspt); +}); +Clazz_defineMethod(c$, "hasMoreElements", +function(){ +while (this.leaf != null) { +for (; this.leafIndex < this.leaf.count; ++this.leafIndex) if (this.isWithinRadius(this.leaf.tuples[this.leafIndex])) return true; + +this.findLeftLeaf(); +} +return false; +}); +Clazz_defineMethod(c$, "nextElement", +function(){ +return this.leaf.tuples[this.leafIndex++]; +}); +Clazz_defineMethod(c$, "foundDistance2", +function(){ +return this.dx * this.dx + this.dy * this.dy + this.dz * this.dz; +}); +Clazz_defineMethod(c$, "findLeftLeaf", +function(){ +this.leaf = null; +if (this.sp == 0) return; +var ele = this.stack[--this.sp]; +while (Clazz_instanceOf(ele,"J.bspt.Node")) { +var node = ele; +var minValue; +switch (node.dim) { +case 0: +minValue = this.cx; +break; +case 1: +minValue = this.cy; +break; +case 2: +default: +minValue = this.cz; +break; +} +var maxValue = minValue + this.radius; +if (!this.tHemisphere || node.dim != 0) minValue -= this.radius; +if (minValue <= node.maxLeft && maxValue >= node.minLeft) { +if (maxValue >= node.minRight && minValue <= node.maxRight) { +this.stack[this.sp++] = node.eleRight; +}ele = node.eleLeft; +} else if (maxValue >= node.minRight && minValue <= node.maxRight) { +ele = node.eleRight; +} else { +if (this.sp == 0) return; +ele = this.stack[--this.sp]; +}} +this.leaf = ele; +this.leafIndex = 0; +}); +Clazz_defineMethod(c$, "isWithinRadius", +function(t){ +this.dx = t.x - this.cx; +return ((!this.tHemisphere || this.dx >= 0) && (this.dx = Math.abs(this.dx)) <= this.radius && (this.dy = Math.abs(t.y - this.cy)) <= this.radius && (this.dz = Math.abs(t.z - this.cz)) <= this.radius); +}, "JU.T3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bspt = null; +this.count = 0; +Clazz_instantialize(this, arguments);}, J.bspt, "Element", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(["J.bspt.Element"], "J.bspt.Leaf", ["J.bspt.Node"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tuples = null; +Clazz_instantialize(this, arguments);}, J.bspt, "Leaf", J.bspt.Element); +Clazz_makeConstructor(c$, +function(bspt, leaf, countToKeep){ +this.bspt = bspt; +this.count = 0; +this.tuples = new Array(2); +if (leaf == null) return; +for (var i = countToKeep; i < 2; ++i) { +this.tuples[this.count++] = leaf.tuples[i]; +leaf.tuples[i] = null; +} +leaf.count = countToKeep; +}, "J.bspt.Bspt,J.bspt.Leaf,~N"); +Clazz_defineMethod(c$, "sort", +function(dim){ +for (var i = this.count; --i > 0; ) { +var champion = this.tuples[i]; +var championValue = J.bspt.Node.getDimensionValue(champion, dim); +for (var j = i; --j >= 0; ) { +var challenger = this.tuples[j]; +var challengerValue = J.bspt.Node.getDimensionValue(challenger, dim); +if (challengerValue > championValue) { +this.tuples[i] = challenger; +this.tuples[j] = champion; +champion = challenger; +championValue = challengerValue; +}} +} +}, "~N"); +Clazz_overrideMethod(c$, "addTuple", +function(level, tuple){ +if (this.count < 2) { +this.tuples[this.count++] = tuple; +return this; +}var node = new J.bspt.Node(this.bspt, level, this); +return node.addTuple(level, tuple); +}, "~N,JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(["J.bspt.Element"], "J.bspt.Node", ["J.bspt.Leaf"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.dim = 0; +this.minLeft = 0; +this.maxLeft = 0; +this.eleLeft = null; +this.minRight = 0; +this.maxRight = 0; +this.eleRight = null; +Clazz_instantialize(this, arguments);}, J.bspt, "Node", J.bspt.Element); +Clazz_makeConstructor(c$, +function(bspt, level, leafLeft){ +this.bspt = bspt; +if (level == bspt.treeDepth) { +bspt.treeDepth = level + 1; +}if (leafLeft.count != 2) throw new NullPointerException(); +this.dim = level % bspt.dimMax; +leafLeft.sort(this.dim); +var leafRight = new J.bspt.Leaf(bspt, leafLeft, 1); +this.minLeft = J.bspt.Node.getDimensionValue(leafLeft.tuples[0], this.dim); +this.maxLeft = J.bspt.Node.getDimensionValue(leafLeft.tuples[leafLeft.count - 1], this.dim); +this.minRight = J.bspt.Node.getDimensionValue(leafRight.tuples[0], this.dim); +this.maxRight = J.bspt.Node.getDimensionValue(leafRight.tuples[leafRight.count - 1], this.dim); +this.eleLeft = leafLeft; +this.eleRight = leafRight; +this.count = 2; +}, "J.bspt.Bspt,~N,J.bspt.Leaf"); +Clazz_defineMethod(c$, "addTuple", +function(level, tuple){ +var dimValue = J.bspt.Node.getDimensionValue(tuple, this.dim); +++this.count; +var addLeft; +if (dimValue < this.maxLeft) { +addLeft = true; +} else if (dimValue > this.minRight) { +addLeft = false; +} else if (dimValue == this.maxLeft) { +if (dimValue == this.minRight) { +if (this.eleLeft.count < this.eleRight.count) addLeft = true; + else addLeft = false; +} else { +addLeft = true; +}} else if (dimValue == this.minRight) { +addLeft = false; +} else { +if (this.eleLeft.count < this.eleRight.count) addLeft = true; + else addLeft = false; +}if (addLeft) { +if (dimValue < this.minLeft) this.minLeft = dimValue; + else if (dimValue > this.maxLeft) this.maxLeft = dimValue; +this.eleLeft = this.eleLeft.addTuple(level + 1, tuple); +} else { +if (dimValue < this.minRight) this.minRight = dimValue; + else if (dimValue > this.maxRight) this.maxRight = dimValue; +this.eleRight = this.eleRight.addTuple(level + 1, tuple); +}return this; +}, "~N,JU.T3"); +c$.getDimensionValue = Clazz_defineMethod(c$, "getDimensionValue", +function(pt, dim){ +if (pt == null) System.out.println("bspt.Node ???"); +switch (dim) { +case 0: +return pt.x; +case 1: +return pt.y; +default: +return pt.z; +} +}, "JU.T3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.CBK", ["JU.SB"], function(){ +var c$ = Clazz_declareType(J.c, "CBK", Enum); +c$.getCallback = Clazz_defineMethod(c$, "getCallback", +function(name){ +name = name.toUpperCase(); +var pt = name.indexOf("CALLBACK"); +if (pt > 0) name = name.substring(0, pt); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.name().equalsIgnoreCase(name)) return item; + +return null; +}, "~S"); +c$.getNameList = Clazz_defineMethod(c$, "getNameList", +function(){ +if (J.c.CBK.nameList == null) { +var names = new JU.SB(); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) names.append(item.name().toLowerCase()).append("Callback;"); + +J.c.CBK.nameList = names.toString(); +}return J.c.CBK.nameList; +}); +c$.nameList = null; +Clazz_defineEnumConstant(c$, "ANIMFRAME", 0, []); +Clazz_defineEnumConstant(c$, "APPLETREADY", 1, []); +Clazz_defineEnumConstant(c$, "ATOMMOVED", 2, []); +Clazz_defineEnumConstant(c$, "AUDIO", 3, []); +Clazz_defineEnumConstant(c$, "CLICK", 4, []); +Clazz_defineEnumConstant(c$, "DRAGDROP", 5, []); +Clazz_defineEnumConstant(c$, "ECHO", 6, []); +Clazz_defineEnumConstant(c$, "ERROR", 7, []); +Clazz_defineEnumConstant(c$, "EVAL", 8, []); +Clazz_defineEnumConstant(c$, "HOVER", 9, []); +Clazz_defineEnumConstant(c$, "IMAGE", 10, []); +Clazz_defineEnumConstant(c$, "LOADSTRUCT", 11, []); +Clazz_defineEnumConstant(c$, "MEASURE", 12, []); +Clazz_defineEnumConstant(c$, "MESSAGE", 13, []); +Clazz_defineEnumConstant(c$, "MINIMIZATION", 14, []); +Clazz_defineEnumConstant(c$, "MODELKIT", 15, []); +Clazz_defineEnumConstant(c$, "PICK", 16, []); +Clazz_defineEnumConstant(c$, "RESIZE", 17, []); +Clazz_defineEnumConstant(c$, "SCRIPT", 18, []); +Clazz_defineEnumConstant(c$, "SELECT", 19, []); +Clazz_defineEnumConstant(c$, "SERVICE", 20, []); +Clazz_defineEnumConstant(c$, "STRUCTUREMODIFIED", 21, []); +Clazz_defineEnumConstant(c$, "SYNC", 22, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.FIL", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.code = 0; +Clazz_instantialize(this, arguments);}, J.c, "FIL", Enum); +Clazz_defineMethod(c$, "getCode", +function(){ +return this.code; +}); +Clazz_makeConstructor(c$, +function(code){ +this.code = code; +}, "~N"); +Clazz_defineEnumConstant(c$, "DELETED", 0, [5]); +Clazz_defineEnumConstant(c$, "CREATED", 1, [3]); +Clazz_defineEnumConstant(c$, "CREATING_MODELSET", 2, [2]); +Clazz_defineEnumConstant(c$, "ZAPPED", 3, [0]); +Clazz_defineEnumConstant(c$, "NOT_LOADED", 4, [-1]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.PAL", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$$name = null; +this.id = 0; +Clazz_instantialize(this, arguments);}, J.c, "PAL", Enum); +Clazz_makeConstructor(c$, +function(name, id){ +this.$$name = name; +this.id = id; +}, "~S,~N"); +c$.pidOf = Clazz_defineMethod(c$, "pidOf", +function(value){ +return (Clazz_instanceOf(value,"J.c.PAL") ? (value).id : Clazz_instanceOf(value, Byte) ? (value).byteValue() : J.c.PAL.UNKNOWN.id); +}, "~O"); +c$.isPaletteVariable = Clazz_defineMethod(c$, "isPaletteVariable", +function(pid){ +return ((pid & 64) != 0); +}, "~N"); +c$.getPalette = Clazz_defineMethod(c$, "getPalette", +function(paletteName){ +if (paletteName.indexOf('_') < 0) for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (paletteName.equalsIgnoreCase(item.$$name)) return item; + +return (paletteName.indexOf("property_") == 0 ? J.c.PAL.PROPERTY : J.c.PAL.UNKNOWN); +}, "~S"); +c$.getPaletteID = Clazz_defineMethod(c$, "getPaletteID", +function(paletteName){ +if (paletteName.indexOf('_') < 0) for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (paletteName.equalsIgnoreCase(item.$$name)) return item.id; + +return (paletteName.indexOf("property_") == 0 ? J.c.PAL.PROPERTY.id : J.c.PAL.UNKNOWN.id); +}, "~S"); +c$.getPaletteName = Clazz_defineMethod(c$, "getPaletteName", +function(pid){ +for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.id == pid) return item.$$name; + +return null; +}, "~N"); +c$.PALETTE_VOLATILE = 0x40; +c$.PALETTE_NONE = 0; +c$.PALETTE_CPK = 1; +c$.PALETTE_PARTIAL_CHARGE = 2; +c$.PALETTE_FORMAL_CHARGE = 3; +c$.PALETTE_TEMP = 68; +c$.PALETTE_FIXEDTEMP = 5; +c$.PALETTE_SURFACE = 70; +c$.PALETTE_STRUCTURE = 7; +c$.PALETTE_AMINO = 8; +c$.PALETTE_SHAPELY = 9; +c$.PALETTE_CHAIN = 10; +c$.PALETTE_GROUP = 75; +c$.PALETTE_MONOMER = 76; +c$.PALETTE_MOLECULE = 77; +c$.PALETTE_ALTLOC = 14; +c$.PALETTE_INSERTION = 15; +c$.PALETTE_JMOL = 16; +c$.PALETTE_RASMOL = 17; +c$.PALETTE_TYPE = 18; +c$.PALETTE_ENERGY = 19; +c$.PALETTE_PROPERTY = 84; +c$.PALETTE_VARIABLE = 85; +c$.PALETTE_STRAIGHTNESS = 86; +c$.PALETTE_POLYMER = 87; +c$.PALETTE_NUCLEIC = 24; +c$.argbsCpkRasmol = Clazz_newIntArray(-1, [16716947, 33554431, 50315467, 62005794, 83951360, 113821896, 126849023, 149946368, 165324064, 184549631, 203590434, 226525328, 249210144, 268412160, 285198386, 285277952, 343965840, 377520272, 411074704, 427851920, 452961536, 480586282, 497363498, 514140714, 598026794, 796950672, 899686640, 956278016, 1339729184]); +c$.argbsCpk = Clazz_newIntArray(-1, [0xFFFF1493, 0xFFFFFFFF, 0xFFD9FFFF, 0xFFCC80FF, 0xFFC2FF00, 0xFFFFB5B5, 0xFF909090, 0xFF3050F8, 0xFFFF0D0D, 0xFF90E050, 0xFFB3E3F5, 0xFFAB5CF2, 0xFF8AFF00, 0xFFBFA6A6, 0xFFF0C8A0, 0xFFFF8000, 0xFFFFFF30, 0xFF1FF01F, 0xFF80D1E3, 0xFF8F40D4, 0xFF3DFF00, 0xFFE6E6E6, 0xFFBFC2C7, 0xFFA6A6AB, 0xFF8A99C7, 0xFF9C7AC7, 0xFFE06633, 0xFFF090A0, 0xFF50D050, 0xFFC88033, 0xFF7D80B0, 0xFFC28F8F, 0xFF668F8F, 0xFFBD80E3, 0xFFFFA100, 0xFFA62929, 0xFF5CB8D1, 0xFF702EB0, 0xFF00FF00, 0xFF94FFFF, 0xFF94E0E0, 0xFF73C2C9, 0xFF54B5B5, 0xFF3B9E9E, 0xFF248F8F, 0xFF0A7D8C, 0xFF006985, 0xFFC0C0C0, 0xFFFFD98F, 0xFFA67573, 0xFF668080, 0xFF9E63B5, 0xFFD47A00, 0xFF940094, 0xFF429EB0, 0xFF57178F, 0xFF00C900, 0xFF70D4FF, 0xFFFFFFC7, 0xFFD9FFC7, 0xFFC7FFC7, 0xFFA3FFC7, 0xFF8FFFC7, 0xFF61FFC7, 0xFF45FFC7, 0xFF30FFC7, 0xFF1FFFC7, 0xFF00FF9C, 0xFF00E675, 0xFF00D452, 0xFF00BF38, 0xFF00AB24, 0xFF4DC2FF, 0xFF4DA6FF, 0xFF2194D6, 0xFF267DAB, 0xFF266696, 0xFF175487, 0xFFD0D0E0, 0xFFFFD123, 0xFFB8B8D0, 0xFFA6544D, 0xFF575961, 0xFF9E4FB5, 0xFFAB5C00, 0xFF754F45, 0xFF428296, 0xFF420066, 0xFF007D00, 0xFF70ABFA, 0xFF00BAFF, 0xFF00A1FF, 0xFF008FFF, 0xFF0080FF, 0xFF006BFF, 0xFF545CF2, 0xFF785CE3, 0xFF8A4FE3, 0xFFA136D4, 0xFFB31FD4, 0xFFB31FBA, 0xFFB30DA6, 0xFFBD0D87, 0xFFC70066, 0xFFCC0059, 0xFFD1004F, 0xFFD90045, 0xFFE00038, 0xFFE6002E, 0xFFEB0026]); +Clazz_defineEnumConstant(c$, "UNKNOWN", 0, [null, 0xFF]); +Clazz_defineEnumConstant(c$, "NONE", 1, ["none", 0]); +Clazz_defineEnumConstant(c$, "CPK", 2, ["cpk", 1]); +Clazz_defineEnumConstant(c$, "PARTIAL_CHARGE", 3, ["partialcharge", 2]); +Clazz_defineEnumConstant(c$, "FORMAL_CHARGE", 4, ["formalcharge", 3]); +Clazz_defineEnumConstant(c$, "TEMP", 5, ["temperature", 68]); +Clazz_defineEnumConstant(c$, "FIXEDTEMP", 6, ["fixedtemperature", 5]); +Clazz_defineEnumConstant(c$, "SURFACE", 7, ["surfacedistance", 70]); +Clazz_defineEnumConstant(c$, "STRUCTURE", 8, ["structure", 7]); +Clazz_defineEnumConstant(c$, "AMINO", 9, ["amino", 8]); +Clazz_defineEnumConstant(c$, "SHAPELY", 10, ["shapely", 9]); +Clazz_defineEnumConstant(c$, "CHAIN", 11, ["chain", 10]); +Clazz_defineEnumConstant(c$, "GROUP", 12, ["group", 75]); +Clazz_defineEnumConstant(c$, "MONOMER", 13, ["monomer", 76]); +Clazz_defineEnumConstant(c$, "MOLECULE", 14, ["molecule", 77]); +Clazz_defineEnumConstant(c$, "ALTLOC", 15, ["altloc", 14]); +Clazz_defineEnumConstant(c$, "INSERTION", 16, ["insertion", 15]); +Clazz_defineEnumConstant(c$, "JMOL", 17, ["jmol", 16]); +Clazz_defineEnumConstant(c$, "RASMOL", 18, ["rasmol", 17]); +Clazz_defineEnumConstant(c$, "TYPE", 19, ["type", 18]); +Clazz_defineEnumConstant(c$, "ENERGY", 20, ["energy", 19]); +Clazz_defineEnumConstant(c$, "PROPERTY", 21, ["property", 84]); +Clazz_defineEnumConstant(c$, "VARIABLE", 22, ["variable", 85]); +Clazz_defineEnumConstant(c$, "STRAIGHTNESS", 23, ["straightness", 86]); +Clazz_defineEnumConstant(c$, "POLYMER", 24, ["polymer", 87]); +Clazz_defineEnumConstant(c$, "NUCLEIC", 25, ["nucleic", 24]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.STER", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$$name = null; +this.$isBiColor = false; +Clazz_instantialize(this, arguments);}, J.c, "STER", Enum); +Clazz_makeConstructor(c$, +function(name, isBiColor){ +this.$$name = name; +this.$isBiColor = isBiColor; +}, "~S,~B"); +Clazz_defineMethod(c$, "getName", +function(){ +return this.$$name; +}); +Clazz_defineMethod(c$, "isBiColor", +function(){ +return this.$isBiColor; +}); +c$.getStereoMode = Clazz_defineMethod(c$, "getStereoMode", +function(id){ +for (var item, $item = 0, $$item = J.c.STER.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.$$name.equalsIgnoreCase(id)) return item; + +return null; +}, "~S"); +Clazz_defineEnumConstant(c$, "NONE", 0, ["OFF", false]); +Clazz_defineEnumConstant(c$, "DOUBLE", 1, ["", false]); +Clazz_defineEnumConstant(c$, "REDCYAN", 2, ["REDCYAN", true]); +Clazz_defineEnumConstant(c$, "REDBLUE", 3, ["REDBLUE", true]); +Clazz_defineEnumConstant(c$, "REDGREEN", 4, ["REDGREEN", true]); +Clazz_defineEnumConstant(c$, "DTI", 5, ["DTI", false]); +Clazz_defineEnumConstant(c$, "CUSTOM", 6, ["", true]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.STR", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.id = 0; +this.color = 0; +Clazz_instantialize(this, arguments);}, J.c, "STR", Enum); +Clazz_makeConstructor(c$, +function(id, color){ +this.id = id; +this.color = color; +}, "~N,~N"); +Clazz_defineMethod(c$, "getId", +function(){ +return this.id; +}); +Clazz_defineMethod(c$, "getColor", +function(){ +return this.color; +}); +c$.getProteinStructureType = Clazz_defineMethod(c$, "getProteinStructureType", +function(name){ +for (var item, $item = 0, $$item = J.c.STR.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (name.equalsIgnoreCase(item.name())) return (item.isProtein() ? item : J.c.STR.NOT); + +return J.c.STR.NOT; +}, "~S"); +Clazz_defineMethod(c$, "getBioStructureTypeName", +function(isGeneric){ +return (this.id < 0 ? "" : isGeneric && this.isProtein() ? "protein" : this.name()); +}, "~B"); +Clazz_defineMethod(c$, "isProtein", +function(){ +return this.id >= 0 && this.id <= 3 || this.id >= 7; +}); +Clazz_defineEnumConstant(c$, "NOT", 0, [-1, 0xFF808080]); +Clazz_defineEnumConstant(c$, "NONE", 1, [0, 0xFFFFFFFF]); +Clazz_defineEnumConstant(c$, "TURN", 2, [1, 0xFF6080FF]); +Clazz_defineEnumConstant(c$, "SHEET", 3, [2, 0xFFFFC800]); +Clazz_defineEnumConstant(c$, "HELIX", 4, [3, 0xFFFF0080]); +Clazz_defineEnumConstant(c$, "DNA", 5, [4, 0xFFAE00FE]); +Clazz_defineEnumConstant(c$, "RNA", 6, [5, 0xFFFD0162]); +Clazz_defineEnumConstant(c$, "CARBOHYDRATE", 7, [6, 0xFFA6A6FA]); +Clazz_defineEnumConstant(c$, "HELIX310", 8, [7, 0xFFA00080]); +Clazz_defineEnumConstant(c$, "HELIXALPHA", 9, [8, 0xFFFF0080]); +Clazz_defineEnumConstant(c$, "HELIXPI", 10, [9, 0xFF600080]); +Clazz_defineEnumConstant(c$, "ANNOTATION", 11, [-2, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.VDW", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pt = 0; +this.type = null; +this.type2 = null; +Clazz_instantialize(this, arguments);}, J.c, "VDW", Enum); +Clazz_makeConstructor(c$, +function(pt, type, type2){ +this.pt = pt; +this.type = type; +this.type2 = type2; +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "getVdwLabel", +function(){ +return (this.type == null ? this.type2 : this.type); +}); +c$.getVdwType = Clazz_defineMethod(c$, "getVdwType", +function(label){ +if (label != null) for (var item, $item = 0, $$item = J.c.VDW.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (label.equalsIgnoreCase(item.type)) return item; + +return null; +}, "~S"); +c$.getVdwType2 = Clazz_defineMethod(c$, "getVdwType2", +function(label){ +if (label != null) for (var item, $item = 0, $$item = J.c.VDW.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (label.equalsIgnoreCase(item.type2)) return item; + +return null; +}, "~S"); +Clazz_defineEnumConstant(c$, "JMOL", 0, [0, "Jmol", null]); +Clazz_defineEnumConstant(c$, "BABEL", 1, [1, "Babel", null]); +Clazz_defineEnumConstant(c$, "RASMOL", 2, [2, "RasMol", null]); +Clazz_defineEnumConstant(c$, "BABEL21", 3, [3, "Babel21", null]); +Clazz_defineEnumConstant(c$, "AUTO_JMOL", 4, [0, null, "Jmol"]); +Clazz_defineEnumConstant(c$, "AUTO_BABEL", 5, [1, null, "Babel"]); +Clazz_defineEnumConstant(c$, "AUTO_RASMOL", 6, [2, null, "RasMol"]); +Clazz_defineEnumConstant(c$, "AUTO", 7, [0, "Auto", null]); +Clazz_defineEnumConstant(c$, "USER", 8, [-1, "User", null]); +Clazz_defineEnumConstant(c$, "ADPMAX", 9, [-1, null, "adpmax"]); +Clazz_defineEnumConstant(c$, "ADPMIN", 10, [-1, null, "adpmin"]); +Clazz_defineEnumConstant(c$, "HYDRO", 11, [-1, null, "hydrophobic"]); +Clazz_defineEnumConstant(c$, "BONDING", 12, [-1, null, "bondingradius"]); +Clazz_defineEnumConstant(c$, "TEMP", 13, [-1, null, "temperature"]); +Clazz_defineEnumConstant(c$, "NOJMOL", 14, [-1, null, null]); +Clazz_defineEnumConstant(c$, "NADA", 15, [-1, null, null]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["JU.P3i"], "J.g3d.CylinderRenderer", ["JU.AU", "$.P3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.line3d = null; +this.shader = null; +this.colixA = 0; +this.colixB = 0; +this.shadesA = null; +this.shadesB = null; +this.xA = 0; +this.yA = 0; +this.zA = 0; +this.xAend = 0; +this.yAend = 0; +this.zAend = 0; +this.dxB = 0; +this.dyB = 0; +this.dzB = 0; +this.xAf = 0; +this.yAf = 0; +this.zAf = 0; +this.dxBf = 0; +this.dyBf = 0; +this.dzBf = 0; +this.tEvenDiameter = false; +this.diameter = 0; +this.endcaps = 0; +this.endCapHidden = false; +this.xEndcap = 0; +this.yEndcap = 0; +this.zEndcap = 0; +this.argbEndcap = 0; +this.colixEndcap = 0; +this.endcapShadeIndex = 0; +this.radius = 0; +this.radius2 = 0; +this.cosTheta = 0; +this.cosPhi = 0; +this.sinPhi = 0; +this.clipped = false; +this.rasterCount = 0; +this.xyztRaster = null; +this.xyzfRaster = null; +this.ptA0 = null; +this.ptB0 = null; +this.ptA0i = null; +this.ptB0i = null; +this.xTip = 0; +this.yTip = 0; +this.zTip = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "CylinderRenderer", null); +Clazz_prepareFields (c$, function(){ +this.xyztRaster = Clazz_newArray(-1, [ Clazz_newFloatArray (32, 0), Clazz_newFloatArray (32, 0), Clazz_newFloatArray (32, 0), Clazz_newFloatArray (32, 0)]); +this.xyzfRaster = Clazz_newArray(-1, [ Clazz_newIntArray (32, 0), Clazz_newIntArray (32, 0), Clazz_newIntArray (32, 0), Clazz_newIntArray (32, 0)]); +this.ptA0i = new JU.P3i(); +this.ptB0i = new JU.P3i(); +}); +Clazz_makeConstructor(c$, +function(g3d){ +this.g3d = g3d; +this.line3d = g3d.line3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "renderOld", +function(colixA, colixB, screen, endcaps, diameter, xa, ya, za, xb, yb, zb){ +var r = Clazz_doubleToInt(diameter / 2) + 1; +var g = this.g3d; +var codeMinA = g.clipCode3(xa - r, ya - r, za - r); +var codeMaxA = g.clipCode3(xa + r, ya + r, za + r); +var codeMinB = g.clipCode3(xb - r, yb - r, zb - r); +var codeMaxB = g.clipCode3(xb + r, yb + r, zb + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxB = xb - xa; +this.dyB = yb - ya; +this.dzB = zb - za; +if (diameter <= 1) { +this.line3d.plotLineDeltaOld(g.getColorArgbOrGray(colixA), g.getColorArgbOrGray(colixB), xa, ya, za, this.dxB, this.dyB, this.dzB, this.clipped); +return; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.diameter = diameter; +this.xA = xa; +this.yA = ya; +this.zA = za; +this.endcaps = endcaps; +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.calcArgbEndcap(true, false); +this.calcCosSin(this.dxB, this.dyB, this.dzB); +this.calcPoints(3, false); +this.interpolate(0, 1, this.xyzfRaster, this.xyztRaster); +this.interpolate(1, 2, this.xyzfRaster, this.xyztRaster); +var xyzf = this.xyzfRaster; +if (endcaps == 2) this.renderFlatEndcap(true, false, xyzf); +g.setZMargin(5); +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +var p = g.pixel; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.line3d.plotLineDeltaAOld(this.shadesA, this.shadesB, screen, fpz, this.xA + x, this.yA + y, this.zA - z, this.dxB, this.dyB, this.dzB, this.clipped); +if (drawBackside) { +this.line3d.plotLineDeltaOld(this.shadesA[fpzBack], this.shadesB[fpzBack], this.xA - x, this.yA - y, this.zA + z, this.dxB, this.dyB, this.dzB, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "renderBitsFloat", +function(colixA, colixB, screen, endcaps, diameter, ptA, ptB){ +var g = this.g3d; +if (this.ptA0 == null) { +this.ptA0 = new JU.P3(); +this.ptB0 = new JU.P3(); +}this.ptA0.setT(ptA); +var r = Clazz_doubleToInt(diameter / 2) + 1; +var ixA = Math.round(ptA.x); +var iyA = Math.round(ptA.y); +var izA = Math.round(ptA.z); +var ixB = Math.round(ptB.x); +var iyB = Math.round(ptB.y); +var izB = Math.round(ptB.z); +var codeMinA = g.clipCode3(ixA - r, iyA - r, izA - r); +var codeMaxA = g.clipCode3(ixA + r, iyA + r, izA + r); +var codeMinB = g.clipCode3(ixB - r, iyB - r, izB - r); +var codeMaxB = g.clipCode3(ixB + r, iyB + r, izB + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxBf = ptB.x - ptA.x; +this.dyBf = ptB.y - ptA.y; +this.dzBf = ptB.z - ptA.z; +if (diameter > 0) { +this.diameter = diameter; +this.xAf = ptA.x; +this.yAf = ptA.y; +this.zAf = ptA.z; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.xA = Clazz_floatToInt(this.xAf); +this.yA = Clazz_floatToInt(this.yAf); +this.zA = Clazz_floatToInt(this.zAf); +this.dxB = Clazz_floatToInt(this.dxBf); +this.dyB = Clazz_floatToInt(this.dyBf); +this.dzB = Clazz_floatToInt(this.dzBf); +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.endcaps = endcaps; +this.calcArgbEndcap(true, true); +var xyzf = this.xyzfRaster; +if (diameter > 0) this.generateBaseEllipsePrecisely(false); +if (endcaps == 2) this.renderFlatEndcap(true, true, xyzf); +this.line3d.setLineBits(this.dxBf, this.dyBf); +g.setZMargin(5); +var p = g.pixel; +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.ptA0.set(this.xA + x, this.yA + y, this.zA - z); +this.ptB0.setT(this.ptA0); +this.ptB0.x += this.dxB; +this.ptB0.y += this.dyB; +this.ptB0.z += this.dzB; +this.line3d.plotLineDeltaABitsFloat(this.shadesA, this.shadesB, fpz, this.ptA0, this.ptB0, screen, this.clipped); +if (drawBackside) { +this.ptA0.set(this.xA - x, this.yA - y, this.zA + z); +this.ptB0.setT(this.ptA0); +this.ptB0.x += this.dxB; +this.ptB0.y += this.dyB; +this.ptB0.z += this.dzB; +this.line3d.plotLineDeltaABitsFloat(this.shadesA, this.shadesB, fpzBack, this.ptA0, this.ptB0, screen, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +this.xAf += this.dxBf; +this.yAf += this.dyBf; +this.zAf += this.dzBf; +}, "~N,~N,~N,~N,~N,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "renderBits", +function(colixA, colixB, screen, endcaps, diameter, ptA, ptB){ +var g = this.g3d; +if (diameter == 0 || diameter == 1) { +this.line3d.plotLineBits(g.getColorArgbOrGray(colixA), g.getColorArgbOrGray(colixB), ptA, ptB, 0, 0, false); +return; +}this.ptA0i.setT(ptA); +var r = Clazz_doubleToInt(diameter / 2) + 1; +var ixA = ptA.x; +var iyA = ptA.y; +var izA = ptA.z; +var ixB = ptB.x; +var iyB = ptB.y; +var izB = ptB.z; +var codeMinA = g.clipCode3(ixA - r, iyA - r, izA - r); +var codeMaxA = g.clipCode3(ixA + r, iyA + r, izA + r); +var codeMinB = g.clipCode3(ixB - r, iyB - r, izB - r); +var codeMaxB = g.clipCode3(ixB + r, iyB + r, izB + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxBf = ptB.x - ptA.x; +this.dyBf = ptB.y - ptA.y; +this.dzBf = ptB.z - ptA.z; +if (diameter > 0) { +this.diameter = diameter; +this.xAf = ptA.x; +this.yAf = ptA.y; +this.zAf = ptA.z; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.xA = Clazz_floatToInt(this.xAf); +this.yA = Clazz_floatToInt(this.yAf); +this.zA = Clazz_floatToInt(this.zAf); +this.dxB = Clazz_floatToInt(this.dxBf); +this.dyB = Clazz_floatToInt(this.dyBf); +this.dzB = Clazz_floatToInt(this.dzBf); +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.endcaps = endcaps; +this.calcArgbEndcap(true, true); +var xyzf = this.xyzfRaster; +if (diameter > 0) this.generateBaseEllipsePrecisely(false); +if (endcaps == 2) this.renderFlatEndcap(true, true, xyzf); +this.line3d.setLineBits(this.dxBf, this.dyBf); +g.setZMargin(5); +var p = g.pixel; +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.ptA0i.set(this.xA + x, this.yA + y, this.zA - z); +this.ptB0i.setT(this.ptA0i); +this.ptB0i.x += this.dxB; +this.ptB0i.y += this.dyB; +this.ptB0i.z += this.dzB; +this.line3d.plotLineDeltaABitsInt(this.shadesA, this.shadesB, fpz, this.ptA0i, this.ptB0i, screen, this.clipped); +if (drawBackside) { +this.ptA0i.set(this.xA - x, this.yA - y, this.zA + z); +this.ptB0i.setT(this.ptA0i); +this.ptB0i.x += this.dxB; +this.ptB0i.y += this.dyB; +this.ptB0i.z += this.dzB; +this.line3d.plotLineDeltaABitsInt(this.shadesA, this.shadesB, fpzBack, this.ptA0i, this.ptB0i, screen, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +this.xAf += this.dxBf; +this.yAf += this.dyBf; +this.zAf += this.dzBf; +}, "~N,~N,~N,~N,~N,JU.P3i,JU.P3i"); +Clazz_defineMethod(c$, "renderConeOld", +function(colix, endcap, diameter, xa, ya, za, xtip, ytip, ztip, doFill, isBarb){ +this.dxBf = (xtip) - (this.xAf = xa); +this.dyBf = (ytip) - (this.yAf = ya); +this.dzBf = (ztip) - (this.zAf = za); +this.xA = Clazz_doubleToInt(Math.floor(this.xAf)); +this.yA = Clazz_doubleToInt(Math.floor(this.yAf)); +this.zA = Clazz_doubleToInt(Math.floor(this.zAf)); +this.dxB = Clazz_doubleToInt(Math.floor(this.dxBf)); +this.dyB = Clazz_doubleToInt(Math.floor(this.dyBf)); +this.dzB = Clazz_doubleToInt(Math.floor(this.dzBf)); +this.xTip = xtip; +this.yTip = ytip; +this.zTip = ztip; +this.shadesA = this.g3d.getShades(this.colixA = colix); +var shadeIndexTip = this.shader.getShadeIndex(this.dxB, this.dyB, -this.dzB); +var g3d = this.g3d; +var p = g3d.pixel; +var width = g3d.width; +var zbuf = g3d.zbuf; +g3d.plotPixelClippedArgb(this.shadesA[shadeIndexTip], Clazz_floatToInt(xtip), Clazz_floatToInt(ytip), Clazz_floatToInt(ztip), width, zbuf, p); +this.diameter = diameter; +if (diameter <= 1) { +if (diameter == 1) this.line3d.plotLineDeltaOld(this.colixA, this.colixA, this.xA, this.yA, this.zA, this.dxB, this.dyB, this.dzB, this.clipped); +return; +}this.endcaps = endcap; +this.calcArgbEndcap(false, true); +this.generateBaseEllipsePrecisely(isBarb); +if (!isBarb && this.endcaps == 2) this.renderFlatEndcap(false, true, this.xyzfRaster); +g3d.setZMargin(5); +var xr = this.xyztRaster[0]; +var yr = this.xyztRaster[1]; +var zr = this.xyztRaster[2]; +var fr = this.xyzfRaster[3]; +var sA = this.shadesA; +var doOpen = (this.endCapHidden && this.argbEndcap != 0); +for (var i = this.rasterCount; --i >= 0; ) { +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +var fpz = fr[i] >> (8); +var xUp = this.xAf + x; +var yUp = this.yAf + y; +var zUp = this.zAf - z; +var xDn = this.xAf - x; +var yDn = this.yAf - y; +var zDn = this.zAf + z; +var argb = sA[0]; +if (doOpen) { +g3d.plotPixelClippedArgb(this.argbEndcap, Clazz_floatToInt(xUp), Clazz_floatToInt(yUp), Clazz_floatToInt(zUp), width, zbuf, p); +g3d.plotPixelClippedArgb(this.argbEndcap, Clazz_floatToInt(xDn), Clazz_floatToInt(yDn), Clazz_floatToInt(zDn), width, zbuf, p); +}if (argb != 0) { +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz_floatToInt(xUp), Clazz_floatToInt(yUp), Clazz_floatToInt(zUp), Clazz_doubleToInt(Math.ceil(this.xTip - xUp)), Clazz_doubleToInt(Math.ceil(this.yTip - yUp)), Clazz_doubleToInt(Math.ceil(this.zTip - zUp)), true); +if (doFill) { +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz_floatToInt(xUp), Clazz_floatToInt(yUp) + 1, Clazz_floatToInt(zUp), Clazz_doubleToInt(Math.ceil(this.xTip - xUp)), Clazz_doubleToInt(Math.ceil(this.yTip - yUp)) + 1, Clazz_doubleToInt(Math.ceil(this.zTip - zUp)), true); +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz_floatToInt(xUp) + 1, Clazz_floatToInt(yUp), Clazz_floatToInt(zUp), Clazz_doubleToInt(Math.ceil(this.xTip - xUp)) + 1, Clazz_doubleToInt(Math.ceil(this.yTip - yUp)), Clazz_doubleToInt(Math.ceil(this.zTip - zUp)), true); +}if (!isBarb && !(this.endcaps != 2 && this.dzB > 0)) { +this.line3d.plotLineDeltaOld(argb, argb, Clazz_floatToInt(xDn), Clazz_floatToInt(yDn), Clazz_floatToInt(zDn), Clazz_doubleToInt(Math.ceil(this.xTip - xDn)), Clazz_doubleToInt(Math.ceil(this.yTip - yDn)), Clazz_doubleToInt(Math.ceil(this.zTip - zDn)), true); +}}} +g3d.setZMargin(0); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~B,~B"); +Clazz_defineMethod(c$, "generateBaseEllipsePrecisely", +function(isBarb){ +this.calcCosSin(this.dxBf, this.dyBf, this.dzBf); +this.calcPoints(isBarb ? 2 : 3, true); +this.interpolatePrecisely(0, 1, this.xyzfRaster, this.xyztRaster); +if (!isBarb) this.interpolatePrecisely(1, 2, this.xyzfRaster, this.xyztRaster); +for (var i = 3; --i >= 0; ) for (var j = this.rasterCount; --j >= 0; ) this.xyzfRaster[i][j] = Clazz_doubleToInt(Math.floor(this.xyztRaster[i][j])); + + +}, "~B"); +Clazz_defineMethod(c$, "calcPoints", +function(count, isPrecise){ +this.calcRotatedPoint(0, 0, isPrecise, this.xyzfRaster, this.xyztRaster); +this.calcRotatedPoint(0.5, 1, isPrecise, this.xyzfRaster, this.xyztRaster); +if ((this.rasterCount = count) == 3) this.calcRotatedPoint(1, 2, isPrecise, this.xyzfRaster, this.xyztRaster); +}, "~N,~B"); +Clazz_defineMethod(c$, "calcCosSin", +function(dx, dy, dz){ +var mag2d2 = dx * dx + dy * dy; +if (mag2d2 == 0) { +this.cosTheta = 1; +this.cosPhi = 1; +this.sinPhi = 0; +} else { +var mag2d = Math.sqrt(mag2d2); +var mag3d = Math.sqrt(mag2d2 + dz * dz); +this.cosTheta = dz / mag3d; +this.cosPhi = dx / mag2d; +this.sinPhi = dy / mag2d; +}}, "~N,~N,~N"); +Clazz_defineMethod(c$, "calcRotatedPoint", +function(t, i, isPrecision, xyzf, xyzt){ +xyzt[3][i] = t; +var tPI = t * 3.141592653589793; +var xT = Math.sin(tPI) * this.cosTheta; +var yT = Math.cos(tPI); +var xR = this.radius * (xT * this.cosPhi - yT * this.sinPhi); +var yR = this.radius * (xT * this.sinPhi + yT * this.cosPhi); +var z2 = this.radius2 - (xR * xR + yR * yR); +var zR = (z2 > 0 ? Math.sqrt(z2) : 0); +if (isPrecision) { +xyzt[0][i] = xR; +xyzt[1][i] = yR; +xyzt[2][i] = zR; +} else if (this.tEvenDiameter) { +xyzf[0][i] = Clazz_doubleToInt(xR - 0.5); +xyzf[1][i] = Clazz_doubleToInt(yR - 0.5); +xyzf[2][i] = Clazz_doubleToInt(zR + 0.5); +} else { +xyzf[0][i] = Clazz_doubleToInt(xR); +xyzf[1][i] = Clazz_doubleToInt(yR); +xyzf[2][i] = Clazz_doubleToInt(zR + 0.5); +}xyzf[3][i] = this.shader.getShadeFp8(xR, yR, zR); +}, "~N,~N,~B,~A,~A"); +Clazz_defineMethod(c$, "allocRaster", +function(isPrecision, xyzf, xyzt){ +if (this.rasterCount >= xyzf[0].length) while (this.rasterCount >= xyzf[0].length) { +for (var i = 4; --i >= 0; ) xyzf[i] = JU.AU.doubleLengthI(xyzf[i]); + +xyzt[3] = JU.AU.doubleLengthF(xyzt[3]); +} +if (isPrecision) while (this.rasterCount >= xyzt[0].length) { +for (var i = 3; --i >= 0; ) xyzt[i] = JU.AU.doubleLengthF(xyzt[i]); + +} +return this.rasterCount++; +}, "~B,~A,~A"); +Clazz_defineMethod(c$, "interpolate", +function(iLower, iUpper, xyzf, xyzt){ +var x = xyzf[0]; +var y = xyzf[1]; +var dx = x[iUpper] - x[iLower]; +if (dx < 0) dx = -dx; +var dy = y[iUpper] - y[iLower]; +if (dy < 0) dy = -dy; +if ((dx + dy) <= 1) return; +var iMid = this.allocRaster(false, xyzf, xyzt); +x = xyzf[0]; +y = xyzf[1]; +var f = xyzf[3]; +var tLower = xyzt[3][iLower]; +var tUpper = xyzt[3][iUpper]; +for (var j = 4; --j >= 0; ) { +var tMid = (tLower + tUpper) / 2; +this.calcRotatedPoint(tMid, iMid, false, xyzf, xyzt); +if ((x[iMid] == x[iLower]) && (y[iMid] == y[iLower])) { +f[iLower] = (f[iLower] + f[iMid]) >>> 1; +tLower = tMid; +} else if ((x[iMid] == x[iUpper]) && (y[iMid] == y[iUpper])) { +f[iUpper] = (f[iUpper] + f[iMid]) >>> 1; +tUpper = tMid; +} else { +this.interpolate(iLower, iMid, xyzf, xyzt); +this.interpolate(iMid, iUpper, xyzf, xyzt); +return; +}} +x[iMid] = x[iLower]; +y[iMid] = y[iUpper]; +}, "~N,~N,~A,~A"); +Clazz_defineMethod(c$, "interpolatePrecisely", +function(iLower, iUpper, xyzf, xyzt){ +var x = xyzt[0]; +var y = xyzt[1]; +var dx = Clazz_doubleToInt(Math.floor(x[iUpper])) - Clazz_doubleToInt(Math.floor(x[iLower])); +if (dx < 0) dx = -dx; +var dy = Clazz_doubleToInt(Math.floor(y[iUpper])) - Clazz_doubleToInt(Math.floor(y[iLower])); +if (dy < 0) dy = -dy; +if ((dx + dy) <= 1) return; +var t = xyzt[3]; +var tLower = t[iLower]; +var tUpper = t[iUpper]; +var iMid = this.allocRaster(true, xyzf, xyzt); +x = xyzt[0]; +y = xyzt[1]; +t = xyzt[3]; +var f = xyzf[3]; +for (var j = 4; --j >= 0; ) { +var tMid = (tLower + tUpper) / 2; +this.calcRotatedPoint(tMid, iMid, true, xyzf, xyzt); +if ((Clazz_doubleToInt(Math.floor(x[iMid])) == Clazz_doubleToInt(Math.floor(x[iLower]))) && (Clazz_doubleToInt(Math.floor(y[iMid])) == Clazz_doubleToInt(Math.floor(y[iLower])))) { +f[iLower] = (f[iLower] + f[iMid]) >>> 1; +tLower = tMid; +} else if ((Clazz_doubleToInt(Math.floor(x[iMid])) == Clazz_doubleToInt(Math.floor(x[iUpper]))) && (Clazz_doubleToInt(Math.floor(y[iMid])) == Clazz_doubleToInt(Math.floor(y[iUpper])))) { +f[iUpper] = (f[iUpper] + f[iMid]) >>> 1; +tUpper = tMid; +} else { +this.interpolatePrecisely(iLower, iMid, xyzf, xyzt); +this.interpolatePrecisely(iMid, iUpper, xyzf, xyzt); +return; +}} +x[iMid] = x[iLower]; +y[iMid] = y[iUpper]; +}, "~N,~N,~A,~A"); +Clazz_defineMethod(c$, "renderFlatEndcap", +function(isCylinder, isPrecise, xyzf){ +var xT; +var yT; +var zT; +if (isPrecise) { +if (this.dzBf == 0 || this.colixEndcap == 0 || !this.g3d.setC(this.colixEndcap)) return; +var xTf = this.xAf; +var yTf = this.yAf; +var zTf = this.zAf; +if (isCylinder && this.dzBf < 0) { +xTf += this.dxBf; +yTf += this.dyBf; +zTf += this.dzBf; +}xT = Clazz_floatToInt(xTf); +yT = Clazz_floatToInt(yTf); +zT = Clazz_floatToInt(zTf); +} else { +if (this.dzB == 0 || this.colixEndcap == 0 || !this.g3d.setC(this.colixEndcap)) return; +xT = this.xAend; +yT = this.yAend; +zT = this.zAend; +if (isCylinder && this.dzB < 0) { +xT += this.dxB; +yT += this.dyB; +zT += this.dzB; +}}var yMin = xyzf[1][0]; +var yMax = xyzf[1][0]; +var zXMin = 0; +var zXMax = 0; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +for (var i = this.rasterCount; --i > 0; ) { +var y = yr[i]; +if (y < yMin) yMin = y; + else if (y > yMax) yMax = y; + else { +y = -y; +if (y < yMin) yMin = y; + else if (y > yMax) yMax = y; +}} +for (var y = yMin; y <= yMax; ++y) { +var xMin = 2147483647; +var xMax = -2147483648; +for (var i = this.rasterCount; --i >= 0; ) { +if (yr[i] == y) { +var x = xr[i]; +if (x < xMin) { +xMin = x; +zXMin = zr[i]; +}if (x > xMax) { +xMax = x; +zXMax = zr[i]; +}}if (yr[i] == -y) { +var x = -xr[i]; +if (x < xMin) { +xMin = x; +zXMin = -zr[i]; +}if (x > xMax) { +xMax = x; +zXMax = -zr[i]; +}}} +var count = xMax - xMin + 1; +this.g3d.setColorNoisy(this.endcapShadeIndex); +this.g3d.plotPixelsClippedRaster(count, xT + xMin, yT + y, zT - zXMin - 1, zT - zXMax - 1, null, null); +} +}, "~B,~B,~A"); +Clazz_defineMethod(c$, "renderSphericalEndcaps", +function(){ +if (this.colixA != 0 && this.g3d.setC(this.colixA)) this.g3d.fillSphereXYZ(this.diameter, this.xA, this.yA, this.zA + 1); +if (this.colixB != 0 && this.g3d.setC(this.colixB)) this.g3d.fillSphereXYZ(this.diameter, this.xA + this.dxB, this.yA + this.dyB, this.zA + this.dzB + 1); +}); +Clazz_defineMethod(c$, "calcArgbEndcap", +function(tCylinder, isFloat){ +this.tEvenDiameter = ((this.diameter & 1) == 0); +this.radius = this.diameter / 2.0; +this.radius2 = this.radius * this.radius; +this.endCapHidden = false; +var dzf = (isFloat ? this.dzBf : this.dzB); +if (this.endcaps == 3 || dzf == 0) return; +this.xEndcap = this.xAend = this.xA; +this.yEndcap = this.yAend = this.yA; +this.zEndcap = this.zAend = this.zA; +var shadesEndcap; +var dxf = (isFloat ? this.dxBf : this.dxB); +var dyf = (isFloat ? this.dyBf : this.dyB); +if (dzf >= 0 || !tCylinder) { +this.endcapShadeIndex = this.shader.getShadeIndex(-dxf, -dyf, dzf); +if (this.colixA == 0) { +this.xAend += Clazz_doubleToInt(this.dxB / 2); +this.yAend += Clazz_doubleToInt(this.dyB / 2); +this.zAend += Clazz_doubleToInt(this.dzB / 2); +this.colixEndcap = this.colixB; +} else { +this.colixEndcap = this.colixA; +}} else { +this.endcapShadeIndex = this.shader.getShadeIndex(dxf, dyf, -dzf); +if (this.colixB == 0) { +this.colixEndcap = this.colixA; +this.xAend -= Clazz_doubleToInt(this.dxB / 2); +this.yAend -= Clazz_doubleToInt(this.dyB / 2); +this.zAend -= Clazz_doubleToInt(this.dzB / 2); +} else { +this.colixEndcap = this.colixB; +this.xEndcap += this.dxB; +this.yEndcap += this.dyB; +this.zEndcap += this.dzB; +}}shadesEndcap = (this.colixEndcap == this.colixA ? this.shadesA : this.shadesB); +if (this.endcapShadeIndex > 56) this.endcapShadeIndex = 56; +this.argbEndcap = shadesEndcap[this.endcapShadeIndex]; +this.endCapHidden = (this.endcaps == 1); +}, "~B,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_declareInterface(J.g3d, "G3DRenderer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.api.JmolRendererInterface", "JU.GData", "JU.P3i", "$.V3"], "J.g3d.Graphics3D", ["java.util.Arrays", "JU.AU", "J.api.Interface", "J.c.STER", "J.g3d.CylinderRenderer", "$.LineRenderer", "$.Pixelator", "$.PixelatorScreened", "$.PixelatorShaded", "$.PixelatorT", "$.Platform3D", "$.SphereRenderer", "$.TextRenderer", "$.TextString", "JU.C", "$.Normix"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.platform = null; +this.line3d = null; +this.sphere3d = null; +this.cylinder3d = null; +this.triangle3d = null; +this.circle3d = null; +this.hermite3d = null; +this.isFullSceneAntialiasingEnabled = false; +this.antialias2 = false; +this.strings = null; +this.stringCount = 0; +this.anaglyphChannelBytes = null; +this.twoPass = false; +this.$haveTranslucentObjects = false; +this.pbuf = null; +this.pbufT = null; +this.zbuf = null; +this.zbufT = null; +this.translucencyMask = 0; +this.renderLow = false; +this.shadesCurrent = null; +this.anaglyphLength = 0; +this.pixel = null; +this.pixel0 = null; +this.pixelT0 = null; +this.pixelScreened = null; +this.pixelShaded = null; +this.zMargin = 0; +this.aobuf = null; +this.currentShadeIndex = 0; +this.lastRawColor = 0; +this.translucencyLog = 0; +this.wasScreened = false; +this.saveAmbient = 0; +this.saveDiffuse = 0; +this.sA = null; +this.sB = null; +this.sC = null; +this.vectorAB = null; +this.vectorAC = null; +this.vectorNormal = null; +this.shadeIndexes = null; +this.shadeIndexes2Sided = null; +this.pass2Flag01 = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "Graphics3D", JU.GData, J.api.JmolRendererInterface); +Clazz_prepareFields (c$, function(){ +this.sA = new JU.P3i(); +this.sB = new JU.P3i(); +this.sC = new JU.P3i(); +this.vectorAB = new JU.V3(); +this.vectorAC = new JU.V3(); +this.vectorNormal = new JU.V3(); +this.shadeIndexes = Clazz_newByteArray (JU.GData.normixCount, 0); +this.shadeIndexes2Sided = Clazz_newByteArray (JU.GData.normixCount, 0); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.g3d.Graphics3D, []); +for (var i = JU.GData.normixCount; --i >= 0; ) this.transformedVectors[i] = new JU.V3(); + +}); +Clazz_overrideMethod(c$, "isWebGL", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "clear", +function(){ +this.stringCount = 0; +this.strings = null; +J.g3d.TextRenderer.clearFontCache(); +}); +Clazz_overrideMethod(c$, "destroy", +function(){ +this.releaseBuffers(); +this.platform = null; +this.pixel = this.pixel0 = this.pixelShaded = null; +this.pixelT0 = null; +this.pixelScreened = null; +this.graphicsForMetrics = null; +}); +Clazz_defineMethod(c$, "setZMargin", +function(dz){ +this.zMargin = dz; +}, "~N"); +Clazz_overrideMethod(c$, "initialize", +function(vwr, apiPlatform){ +this.vwr = vwr; +this.apiPlatform = apiPlatform; +this.platform = new J.g3d.Platform3D(apiPlatform); +this.pixel = this.pixel0 = new J.g3d.Pixelator(this); +this.graphicsForMetrics = this.platform.getGraphicsForMetrics(); +this.line3d = new J.g3d.LineRenderer(this); +this.sphere3d = new J.g3d.SphereRenderer(this); +this.cylinder3d = new J.g3d.CylinderRenderer(this); +}, "JV.Viewer,J.api.GenericPlatform"); +Clazz_overrideMethod(c$, "addRenderer", +function(tok){ +switch (tok) { +case 1073741880: +if (this.circle3d == null) this.circle3d = this.getRenderer("Circle"); +break; +case 553648143: +if (this.hermite3d == null) this.hermite3d = this.getRenderer("Hermite"); +case 1073742182: +if (this.triangle3d == null) { +this.triangle3d = this.getRenderer("Triangle"); +(this.triangle3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +}break; +} +}, "~N"); +Clazz_defineMethod(c$, "getRenderer", +function(type){ +var r = (J.api.Interface.getOption("g3d." + type + "Renderer", this.vwr, "render")); +if (r == null) throw new NullPointerException("Interface"); +r.set(this, this); +return r; +}, "~S"); +Clazz_overrideMethod(c$, "setWindowParameters", +function(width, height, antialias){ +this.setWinParams(width, height, antialias); +if (this.currentlyRendering) this.endRendering(); +}, "~N,~N,~B"); +Clazz_overrideMethod(c$, "checkTranslucent", +function(isAlphaTranslucent){ +if (isAlphaTranslucent) this.$haveTranslucentObjects = true; +return (!this.twoPass || this.twoPass && (this.isPass2 == isAlphaTranslucent)); +}, "~B"); +Clazz_overrideMethod(c$, "beginRendering", +function(rotationMatrix, translucentMode, isImageWrite, renderLow){ +if (this.currentlyRendering) this.endRendering(); +this.renderLow = renderLow; +if (this.windowWidth != this.newWindowWidth || this.windowHeight != this.newWindowHeight || this.newAntialiasing != this.isFullSceneAntialiasingEnabled) { +this.windowWidth = this.newWindowWidth; +this.windowHeight = this.newWindowHeight; +this.isFullSceneAntialiasingEnabled = this.newAntialiasing; +this.releaseBuffers(); +}this.setRotationMatrix(rotationMatrix); +(this.line3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +if (this.triangle3d != null) (this.triangle3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +this.antialiasEnabled = this.antialiasThisFrame = this.newAntialiasing; +this.currentlyRendering = true; +if (this.strings != null) for (var i = Math.min(this.strings.length, this.stringCount); --i >= 0; ) this.strings[i] = null; + +this.stringCount = 0; +this.twoPass = true; +this.isPass2 = false; +this.pass2Flag01 = 0; +this.colixCurrent = 0; +this.$haveTranslucentObjects = this.wasScreened = false; +this.pixel = this.pixel0; +this.pixel.bgcolor = this.bgcolor; +this.contrastColix = JU.C.getBgContrast(this.bgcolor); +this.translucentCoverOnly = !translucentMode; +if (this.pbuf == null) { +this.platform.allocateBuffers(this.windowWidth, this.windowHeight, this.antialiasThisFrame, isImageWrite); +this.pbuf = this.platform.pBuffer; +this.zbuf = this.platform.zBuffer; +this.aobuf = null; +this.pixel0.setBuf(); +if (this.pixelT0 != null) this.pixelT0.setBuf(); +if (this.pixelShaded != null) this.pixelShaded.setBuf(); +}this.setWidthHeight(this.antialiasThisFrame); +if (this.pixelScreened != null) this.pixelScreened.width = this.width; +this.platform.clearBuffer(); +if (this.backgroundImage != null) this.plotImage(-2147483648, 0, -2147483648, this.backgroundImage, null, 0, 0, 0); +this.textY = 0; +}, "JU.M3,~B,~B,~B"); +Clazz_overrideMethod(c$, "setBackgroundTransparent", +function(TF){ +if (this.platform != null) this.platform.setBackgroundTransparent(TF); +}, "~B"); +Clazz_defineMethod(c$, "releaseBuffers", +function(){ +this.pbuf = null; +this.zbuf = null; +this.pbufT = null; +this.zbufT = null; +this.aobuf = null; +this.platform.releaseBuffers(); +this.line3d.clearLineCache(); +}); +Clazz_overrideMethod(c$, "setPass2", +function(antialiasTranslucent){ +if (!this.$haveTranslucentObjects || !this.currentlyRendering) return false; +this.isPass2 = true; +this.pass2Flag01 = 1; +this.colixCurrent = 0; +if (this.pbufT == null || this.antialias2 != antialiasTranslucent) { +this.platform.allocateTBuffers(antialiasTranslucent); +this.pbufT = this.platform.pBufferT; +this.zbufT = this.platform.zBufferT; +}this.antialias2 = antialiasTranslucent; +if (this.antialiasThisFrame && !this.antialias2) this.downsampleFullSceneAntialiasing(true); +this.platform.clearTBuffer(); +if (this.pixelT0 == null) this.pixelT0 = new J.g3d.PixelatorT(this); +if (this.pixel.p0 == null) this.pixel = this.pixelT0; + else this.pixel.p0 = this.pixelT0; +return true; +}, "~B"); +Clazz_overrideMethod(c$, "endRendering", +function(){ +if (!this.currentlyRendering) return; +if (this.pbuf != null) { +if (this.isPass2 && this.pbufT != null) for (var offset = this.pbufT.length; --offset >= 0; ) this.pbuf[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pbuf[offset], this.pbufT[offset], this.bgcolor); + +if (this.pixel === this.pixelShaded && this.pixelShaded.zShadePower == 0) this.pixelShaded.showZBuffer(); +if (this.antialiasThisFrame) this.downsampleFullSceneAntialiasing(false); +}this.platform.setBackgroundColor(this.bgcolor); +this.platform.notifyEndOfRendering(); +this.currentlyRendering = this.isPass2 = false; +}); +c$.mergeBufferPixel = Clazz_defineMethod(c$, "mergeBufferPixel", +function(argbA, argbB, bgcolor){ +if (argbB == 0 || argbA == argbB) return argbA; +if (argbA == 0) argbA = bgcolor; +var rbA = (argbA & 0x00FF00FF); +var gA = (argbA & 0x0000FF00); +var rbB = (argbB & 0x00FF00FF); +var gB = (argbB & 0x0000FF00); +var logAlpha = (argbB >> 24) & 0xF; +switch (logAlpha) { +case 0: +rbA = rbB; +gA = gB; +break; +case 1: +rbA = (((rbB << 2) + (rbB << 1) + rbB + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 2) + +(gB << 1) + gB + gA) >> 3) & 0x0000FF00; +break; +case 2: +rbA = (((rbB << 1) + rbB + rbA) >> 2) & 0x00FF00FF; +gA = (((gB << 1) + gB + gA) >> 2) & 0x0000FF00; +break; +case 3: +rbA = (((rbB << 2) + rbB + (rbA << 1) + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 2) + gB + (gA << 1) + gA) >> 3) & 0x0000FF00; +break; +case 4: +rbA = ((rbA + rbB) >> 1) & 0x00FF00FF; +gA = ((gA + gB) >> 1) & 0x0000FF00; +break; +case 5: +rbA = (((rbB << 1) + rbB + (rbA << 2) + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 1) + gB + (gA << 2) + gA) >> 3) & 0x0000FF00; +break; +case 6: +rbA = (((rbA << 1) + rbA + rbB) >> 2) & 0x00FF00FF; +gA = (((gA << 1) + gA + gB) >> 2) & 0x0000FF00; +break; +case 7: +rbA = (((rbA << 2) + (rbA << 1) + rbA + rbB) >> 3) & 0x00FF00FF; +gA = (((gA << 2) + (gA << 1) + gA + gB) >> 3) & 0x0000FF00; +break; +} +return 0xFF000000 | rbA | gA; +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "getScreenImage", +function(isImageWrite){ +{ +var obj = this.platform.bufferedImage; if (isImageWrite) { +this.releaseBuffers(); } return obj; +}}, "~B"); +Clazz_overrideMethod(c$, "applyAnaglygh", +function(stereoMode, stereoColors){ +switch (stereoMode) { +case J.c.STER.REDCYAN: +for (var i = this.anaglyphLength; --i >= 0; ) { +var blue = this.anaglyphChannelBytes[i] & 0x000000FF; +var cyan = (blue << 8) | blue; +this.pbuf[i] = this.pbuf[i] & 0xFFFF0000 | cyan; +} +break; +case J.c.STER.CUSTOM: +var color1 = stereoColors[0]; +var color2 = stereoColors[1] & 0x00FFFFFF; +for (var i = this.anaglyphLength; --i >= 0; ) { +var a = this.anaglyphChannelBytes[i] & 0x000000FF; +a = (a | ((a | (a << 8)) << 8)) & color2; +this.pbuf[i] = (this.pbuf[i] & color1) | a; +} +break; +case J.c.STER.REDBLUE: +for (var i = this.anaglyphLength; --i >= 0; ) { +var blue = this.anaglyphChannelBytes[i] & 0x000000FF; +this.pbuf[i] = (this.pbuf[i] & 0xFFFF0000) | blue; +} +break; +case J.c.STER.REDGREEN: +for (var i = this.anaglyphLength; --i >= 0; ) { +var green = (this.anaglyphChannelBytes[i] & 0x000000FF) << 8; +this.pbuf[i] = (this.pbuf[i] & 0xFFFF0000) | green; +} +break; +case J.c.STER.DTI: +case J.c.STER.DOUBLE: +case J.c.STER.NONE: +break; +} +}, "J.c.STER,~A"); +Clazz_overrideMethod(c$, "snapshotAnaglyphChannelBytes", +function(){ +if (this.currentlyRendering) throw new NullPointerException(); +this.anaglyphLength = this.windowWidth * this.windowHeight; +if (this.anaglyphChannelBytes == null || this.anaglyphChannelBytes.length != this.anaglyphLength) this.anaglyphChannelBytes = Clazz_newByteArray (this.anaglyphLength, 0); +for (var i = this.anaglyphLength; --i >= 0; ) this.anaglyphChannelBytes[i] = this.pbuf[i]; + +}); +Clazz_overrideMethod(c$, "releaseScreenImage", +function(){ +this.platform.clearScreenBufferThreaded(); +}); +Clazz_overrideMethod(c$, "haveTranslucentObjects", +function(){ +return this.$haveTranslucentObjects; +}); +Clazz_overrideMethod(c$, "setSlabAndZShade", +function(slabValue, depthValue, zSlab, zDepth, zShadePower){ +this.setSlab(slabValue); +this.setDepth(depthValue); +if (zSlab < zDepth) { +if (this.pixelShaded == null) this.pixelShaded = new J.g3d.PixelatorShaded(this); +this.pixel = this.pixelShaded.set(zSlab, zDepth, zShadePower); +} else { +this.pixel = this.pixel0; +}}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "downsampleFullSceneAntialiasing", +function(downsampleZBuffer){ +var bgcheck = this.bgcolor; +if (downsampleZBuffer) bgcheck += ((bgcheck & 0xFF) == 0xFF ? -1 : 1); +J.g3d.Graphics3D.downsample2d(this.pbuf, this.windowWidth, this.windowHeight, bgcheck); +if (downsampleZBuffer) { +J.g3d.Graphics3D.downsample2dZ(this.pbuf, this.zbuf, this.windowWidth, this.windowHeight, bgcheck); +this.antialiasThisFrame = false; +this.setWidthHeight(false); +}}, "~B"); +c$.downsample2d = Clazz_defineMethod(c$, "downsample2d", +function(pbuf, width, height, bgcheck){ +var width4 = width << 1; +if (bgcheck != 0) { +bgcheck &= 0xFFFFFF; +for (var i = pbuf.length; --i >= 0; ) if (pbuf[i] == 0) pbuf[i] = bgcheck; + +}var bg0 = ((bgcheck >> 2) & 0x3F3F3F3F) << 2; +bg0 += (bg0 & 0xC0C0C0C0) >> 6; +var offset1 = 0; +var offset4 = 0; +for (var i = height; --i >= 0; offset4 += width4) for (var j = width; --j >= 0; ++offset1) { +var argb = ((pbuf[offset4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4++ + width4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4++ + width4] >> 2) & 0x3F3F3F3F); +argb += (argb & 0xC0C0C0C0) >> 6; +if (argb == bg0) argb = bgcheck; +{ +pbuf[offset1] = argb & 0x00FFFFFF | 0xFF000000; +}} + +}, "~A,~N,~N,~N"); +c$.downsample2dZ = Clazz_defineMethod(c$, "downsample2dZ", +function(pbuf, zbuf, width, height, bgcheck){ +var width4 = width << 1; +var offset1 = 0; +var offset4 = 0; +for (var i = height; --i >= 0; offset4 += width4) for (var j = width; --j >= 0; ++offset1, ++offset4) { +var z = Math.min(zbuf[offset4], zbuf[offset4 + width4]); +z = Math.min(z, zbuf[++offset4]); +z = Math.min(z, zbuf[offset4 + width4]); +if (z != 2147483647) z >>= 1; +zbuf[offset1] = (pbuf[offset1] == bgcheck ? 2147483647 : z); +} + +}, "~A,~A,~N,~N,~N"); +Clazz_defineMethod(c$, "hasContent", +function(){ +return this.platform.hasContent(); +}); +Clazz_overrideMethod(c$, "setC", +function(colix){ +var isLast = JU.C.isColixLastAvailable(colix); +if (!isLast && colix == this.colixCurrent && this.currentShadeIndex == -1) return true; +var mask = colix & 30720; +if (mask == 16384) return false; +if (this.renderLow) mask = 0; +var isTranslucent = (mask != 0); +var isScreened = (isTranslucent && mask == 30720); +this.setScreened(isScreened); +if (!this.checkTranslucent(isTranslucent && !isScreened)) return false; +if (this.isPass2) { +this.translucencyMask = (mask << 13) | 0xFFFFFF; +this.translucencyLog = mask >> 11; +} else { +this.translucencyLog = 0; +}this.colixCurrent = colix; +if (isLast) { +if (this.argbCurrent != this.lastRawColor) { +if (this.argbCurrent == 0) this.argbCurrent = 0xFFFFFFFF; +this.lastRawColor = this.argbCurrent; +this.shader.setLastColix(this.argbCurrent, this.inGreyscaleMode); +}}this.shadesCurrent = this.getShades(colix); +this.currentShadeIndex = -1; +this.setColor(this.getColorArgbOrGray(colix)); +return true; +}, "~N"); +Clazz_defineMethod(c$, "setScreened", +function(isScreened){ +if (this.wasScreened != isScreened) { +this.wasScreened = isScreened; +if (isScreened) { +if (this.pixelScreened == null) this.pixelScreened = new J.g3d.PixelatorScreened(this, this.pixel0); +if (this.pixel.p0 == null) this.pixel = this.pixelScreened; + else this.pixel.p0 = this.pixelScreened; +} else if (this.pixel.p0 == null || this.pixel === this.pixelScreened) { +this.pixel = (this.isPass2 ? this.pixelT0 : this.pixel0); +} else { +this.pixel.p0 = (this.isPass2 ? this.pixelT0 : this.pixel0); +}}return this.pixel; +}, "~B"); +Clazz_overrideMethod(c$, "drawFilledCircle", +function(colixRing, colixFill, diameter, x, y, z){ +if (this.isClippedZ(z)) return; +var r = Clazz_doubleToInt((diameter + 1) / 2); +var isClipped = x < r || x + r >= this.width || y < r || y + r >= this.height; +if (isClipped && this.isClippedXY(diameter, x, y)) return; +if (colixRing != 0 && this.setC(colixRing)) { +if (isClipped) { +if (!this.isClippedXY(diameter, x, y)) (this.circle3d).plotCircleCenteredClipped(x, y, z, diameter); +} else { +(this.circle3d).plotCircleCenteredUnclipped(x, y, z, diameter); +}}if (colixFill != 0 && this.setC(colixFill)) { +if (isClipped) (this.circle3d).plotFilledCircleCenteredClipped(x, y, z, diameter); + else (this.circle3d).plotFilledCircleCenteredUnclipped(x, y, z, diameter); +}}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "volumeRender4", +function(diameter, x, y, z){ +if (diameter == 1) { +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +}if (this.isClippedZ(z)) return; +var r = Clazz_doubleToInt((diameter + 1) / 2); +var isClipped = x < r || x + r >= this.width || y < r || y + r >= this.height; +if (isClipped && this.isClippedXY(diameter, x, y)) return; +if (isClipped) (this.circle3d).plotFilledCircleCenteredClipped(x, y, z, diameter); + else (this.circle3d).plotFilledCircleCenteredUnclipped(x, y, z, diameter); +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillSphereXYZ", +function(diameter, x, y, z){ +switch (diameter) { +case 1: +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +case 0: +return; +} +if (diameter <= (this.antialiasThisFrame ? 2000 : 1000)) this.sphere3d.render(this.shadesCurrent, diameter, x, y, z, null, null, null, -1, null); +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "volumeRender", +function(TF){ +if (TF) { +this.saveAmbient = this.getAmbientPercent(); +this.saveDiffuse = this.getDiffusePercent(); +this.setAmbientPercent(100); +this.setDiffusePercent(0); +this.addRenderer(1073741880); +} else { +this.setAmbientPercent(this.saveAmbient); +this.setDiffusePercent(this.saveDiffuse); +}}, "~B"); +Clazz_overrideMethod(c$, "fillSphereI", +function(diameter, center){ +this.fillSphereXYZ(diameter, center.x, center.y, center.z); +}, "~N,JU.P3i"); +Clazz_overrideMethod(c$, "fillSphereBits", +function(diameter, center){ +this.fillSphereXYZ(diameter, Math.round(center.x), Math.round(center.y), Math.round(center.z)); +}, "~N,JU.P3"); +Clazz_overrideMethod(c$, "fillEllipsoid", +function(center, points, x, y, z, diameter, mToEllipsoidal, coef, mDeriv, selectedOctant, octantPoints){ +switch (diameter) { +case 1: +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +case 0: +return; +} +if (diameter <= (this.antialiasThisFrame ? 2000 : 1000)) this.sphere3d.render(this.shadesCurrent, diameter, x, y, z, mToEllipsoidal, coef, mDeriv, selectedOctant, octantPoints); +}, "JU.P3,~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A"); +Clazz_overrideMethod(c$, "drawRect", +function(x, y, z, zSlab, rWidth, rHeight){ +if (zSlab != 0 && this.isClippedZ(zSlab)) return; +var w = rWidth - 1; +var h = rHeight - 1; +var xRight = x + w; +var yBottom = y + h; +if (y >= 0 && y < this.height) this.drawHLine(x, y, z, w); +if (yBottom >= 0 && yBottom < this.height) this.drawHLine(x, yBottom, z, w); +if (x >= 0 && x < this.width) this.drawVLine(x, y, z, h); +if (xRight >= 0 && xRight < this.width) this.drawVLine(xRight, y, z, h); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawHLine", +function(x, y, z, w){ +if (w < 0) { +x += w; +w = -w; +}if (x < 0) { +w += x; +x = 0; +}if (x + w >= this.width) w = this.width - 1 - x; +var p = this.pixel; +var c = this.argbCurrent; +var offset = x + this.width * y; +for (var i = 0; i <= w; i++) { +if (z < this.zbuf[offset]) p.addPixel(offset, z, c); +offset++; +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawVLine", +function(x, y, z, h){ +if (h < 0) { +y += h; +h = -h; +}if (y < 0) { +h += y; +y = 0; +}if (y + h >= this.height) { +h = this.height - 1 - y; +}var offset = x + this.width * y; +var p = this.pixel; +var c = this.argbCurrent; +for (var i = 0; i <= h; i++) { +if (z < this.zbuf[offset]) p.addPixel(offset, z, c); +offset += this.width; +} +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillTextRect", +function(x, y, z, zSlab, widthFill, heightFill){ +if (this.isClippedZ(zSlab)) return; +var w = this.width; +if (x < 0) { +widthFill += x; +if (widthFill <= 0) return; +x = 0; +}if (x + widthFill > w) { +widthFill = w - x; +if (widthFill <= 0) return; +}if (y < 0) { +heightFill += y; +if (heightFill <= 0) return; +y = 0; +}if (y + heightFill > this.height) heightFill = this.height - y; +var c = this.argbCurrent; +if (this.isAntialiased()) c = J.g3d.Graphics3D.fixTextImageRGB(c); +var zb = this.zbuf; +var p = this.pixel; +while (--heightFill >= 0) this.plotPixelsUnclippedCount(c, widthFill, x, y++, z, w, zb, p); + +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawString", +function(str, font3d, xBaseline, yBaseline, z, zSlab, bgColix){ +this.currentShadeIndex = 0; +if (str == null) return; +if (this.isClippedZ(zSlab)) return; +this.drawStringNoSlab(str, font3d, xBaseline, yBaseline, z, bgColix); +}, "~S,JU.Font,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawStringNoSlab", +function(str, font3d, xBaseline, yBaseline, z, bgColix){ +if (str == null) return; +if (this.strings == null) this.strings = new Array(10); +if (this.stringCount == this.strings.length) this.strings = JU.AU.doubleLength(this.strings); +var t = new J.g3d.TextString(); +t.setText(str, font3d == null ? this.currentFont : (this.currentFont = font3d), this.argbCurrent, JU.C.isColixTranslucent(bgColix) ? (this.getColorArgbOrGray(bgColix) & 0xFFFFFF) | ((bgColix & 30720) << 13) : 0, xBaseline, yBaseline, z); +this.strings[this.stringCount++] = t; +}, "~S,JU.Font,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "renderAllStrings", +function(jmolRenderer){ +if (this.strings == null) return; +if (this.stringCount >= 2) { +if (J.g3d.Graphics3D.sort == null) J.g3d.Graphics3D.sort = new J.g3d.TextString(); +java.util.Arrays.sort(this.strings, J.g3d.Graphics3D.sort); +}for (var i = 0; i < this.stringCount; i++) { +var ts = this.strings[i]; +this.plotText(ts.x, ts.y, ts.z, ts.argb, ts.bgargb, ts.text, ts.font, jmolRenderer); +} +this.strings = null; +this.stringCount = 0; +}, "~O"); +Clazz_overrideMethod(c$, "plotText", +function(x, y, z, argb, bgargb, text, font3d, jmolRenderer){ +J.g3d.TextRenderer.plot(x, y, z, argb, bgargb, text, font3d, this, jmolRenderer, this.antialiasThisFrame); +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.api.JmolRendererInterface"); +Clazz_overrideMethod(c$, "drawImage", +function(objImage, x, y, z, zSlab, bgcolix, width, height){ +if (objImage != null && width > 0 && height > 0 && !this.isClippedZ(zSlab)) this.plotImage(x, y, z, objImage, null, bgcolix, width, height); +}, "~O,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "plotImage", +function(x, y, z, image, jmolRenderer, bgcolix, imageWidth, imageHeight){ +this.setC(bgcolix); +if (!this.isPass2) this.translucencyMask = -1; +if (bgcolix == 0) this.argbCurrent = 0; +var isBackground = (x == -2147483648); +var bg = (isBackground ? this.bgcolor : this.argbCurrent); +if (isBackground) { +x = 0; +z = 2147483646; +imageWidth = this.width; +imageHeight = this.height; +}if (x + imageWidth <= 0 || x >= this.width || y + imageHeight <= 0 || y >= this.height) return; +var g; +{ +g = null; +}var buffer = this.apiPlatform.drawImageToBuffer(g, this.platform.offscreenImage, image, imageWidth, imageHeight, isBackground ? bg : 0); +if (buffer == null) return; +var zb = this.zbuf; +var w = this.width; +var p = this.pixel; +var h = this.height; +var t = this.translucencyLog; +if (jmolRenderer == null && (x >= 0 && x + imageWidth <= w && y >= 0 && y + imageHeight <= h)) { +for (var i = 0, offset = 0, pbufOffset = y * w + x; i < imageHeight; i++, pbufOffset += (w - imageWidth)) { +for (var j = 0; j < imageWidth; j++, offset++, pbufOffset++) { +if (z < zb[pbufOffset]) { +var b = buffer[offset]; +if ((b & 0xFF000000) == (-16777216)) p.addPixel(pbufOffset, z, b); +}} +} +} else { +if (jmolRenderer == null) jmolRenderer = this; +for (var i = 0, offset = 0; i < imageHeight; i++) for (var j = 0; j < imageWidth; j++) { +var b = buffer[offset++]; +if ((b & 0xFF000000) == (-16777216)) jmolRenderer.plotImagePixel(b, x + j, y + i, z, 8, bg, w, h, zb, p, t); +} + +}}, "~N,~N,~N,~O,J.api.JmolRendererInterface,~N,~N,~N"); +Clazz_overrideMethod(c$, "setFont", +function(font3d){ +this.currentFont = font3d; +}, "JU.Font"); +Clazz_overrideMethod(c$, "drawPixel", +function(x, y, z){ +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "drawPoints", +function(count, coordinates, scale){ +if (scale > 1) { +var s2 = scale * scale * 0.8; +for (var i = -scale; i < scale; i++) { +for (var j = -scale; j < scale; j++) { +if (i * i + j * j > s2) continue; +this.plotPoints(count, coordinates, i, j); +this.plotPoints(count, coordinates, i, j); +} +} +} else { +this.plotPoints(count, coordinates, 0, 0); +}}, "~N,~A,~N"); +Clazz_overrideMethod(c$, "drawDashedLineBits", +function(run, rise, pointA, pointB){ +if (this.isAntialiased()) { +run += run; +rise += rise; +}this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.drawLineABBits(run, rise, true); +}, "~N,~N,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "drawLineABBits", +function(run, rise, andClip){ +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +if (Math.abs(this.sA.x - this.sB.x) < Math.abs(this.sA.y - this.sB.y)) { +this.sA.x += 1; +this.sB.x += 1; +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +} else { +this.sA.y += 1; +this.sB.y += 1; +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +}}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setScreeni", +function(pt, p){ +p.x = Math.round(pt.x); +p.y = Math.round(pt.y); +p.z = Math.round(pt.z); +}, "JU.P3,JU.P3i"); +Clazz_overrideMethod(c$, "drawLineXYZ", +function(x1, y1, z1, x2, y2, z2){ +this.line3d.plotLineOld(this.argbCurrent, this.argbCurrent, x1, y1, z1, x2, y2, z2); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawLine", +function(colixA, colixB, x1, y1, z1, x2, y2, z2){ +if (!this.setC(colixA)) colixA = 0; +var argbA = this.argbCurrent; +if (!this.setC(colixB)) colixB = 0; +if (colixA != 0 || colixB != 0) this.line3d.plotLineOld(argbA, this.argbCurrent, x1, y1, z1, x2, y2, z2); +}, "~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawLineBits", +function(colixA, colixB, pointA, pointB){ +if (!this.setC(colixA)) colixA = 0; +var argbA = this.argbCurrent; +if (!this.setC(colixB)) colixB = 0; +if (colixA != 0 || colixB != 0) { +this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.line3d.plotLineBits(argbA, this.argbCurrent, this.sA, this.sB, 0, 0, false); +}}, "~N,~N,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "drawLinePixels", +function(a, b, z, zslab){ +this.sA.setT(a); +this.sB.setT(b); +this.sA.z = this.sB.z = z; +var slab0 = this.slab; +if (zslab == -2147483648) this.slab = 0; +this.drawLineABBits(0, 0, false); +this.slab = slab0; +}, "JU.P3i,JU.P3i,~N,~N"); +Clazz_overrideMethod(c$, "drawLineAB", +function(pointA, pointB){ +this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, 0, 0, false); +}, "JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "fillCylinderXYZ", +function(colixA, colixB, endcaps, diameter, xA, yA, zA, xB, yB, zB){ +if (diameter > this.ht3) return; +var screen = 0; +this.currentShadeIndex = 0; +if (!this.setC(colixB)) colixB = 0; +if (this.wasScreened) screen = 2; +if (!this.setC(colixA)) colixA = 0; +if (this.wasScreened) screen += 1; +if (colixA == 0 && colixB == 0) return; +this.cylinder3d.renderOld(colixA, colixB, screen, endcaps, diameter, xA, yA, zA, xB, yB, zB); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillCylinderScreen3I", +function(endcaps, diameter, screenA, screenB, pt0f, pt1f, radius){ +if (diameter <= this.ht3) this.cylinder3d.renderOld(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, Clazz_floatToInt(screenA.x), Clazz_floatToInt(screenA.y), Clazz_floatToInt(screenA.z), Clazz_floatToInt(screenB.x), Clazz_floatToInt(screenB.y), Clazz_floatToInt(screenB.z)); +}, "~N,~N,JU.P3,JU.P3,JU.P3,JU.P3,~N"); +Clazz_overrideMethod(c$, "fillCylinder", +function(endcaps, diameter, screenA, screenB){ +if (diameter <= this.ht3) this.cylinder3d.renderOld(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z); +}, "~N,~N,JU.P3i,JU.P3i"); +Clazz_overrideMethod(c$, "fillCylinderBits", +function(endcaps, diameter, screenA, screenB){ +if (diameter <= this.ht3 && screenA.z != 1 && screenB.z != 1) { +if (diameter == 0 || diameter == 1) { +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.line3d.plotLineBits(this.getColorArgbOrGray(this.colixCurrent), this.getColorArgbOrGray(this.colixCurrent), this.sA, this.sB, 0, 0, false); +return; +}this.cylinder3d.renderBitsFloat(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, screenA, screenB); +}}, "~N,~N,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "fillCylinderBits2", +function(colixA, colixB, endcaps, diameter, screenA, screenB){ +if (diameter > this.ht3) return; +var screen = 0; +this.currentShadeIndex = 0; +if (!this.setC(colixB)) colixB = 0; +if (this.wasScreened) screen = 2; +if (!this.setC(colixA)) colixA = 0; +if (this.wasScreened) screen += 1; +if (colixA == 0 && colixB == 0) return; +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.cylinder3d.renderBits(colixA, colixB, screen, endcaps, diameter, this.sA, this.sB); +}, "~N,~N,~N,~N,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "fillConeScreen3f", +function(endcap, screenDiameter, screenBase, screenTip, isBarb){ +if (screenDiameter <= this.ht3) this.cylinder3d.renderConeOld(this.colixCurrent, endcap, screenDiameter, screenBase.x, screenBase.y, screenBase.z, screenTip.x, screenTip.y, screenTip.z, true, isBarb); +}, "~N,~N,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "drawHermite4", +function(tension, s0, s1, s2, s3){ +(this.hermite3d).renderHermiteRope(false, tension, 0, 0, 0, s0, s1, s2, s3); +}, "~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "drawHermite7", +function(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, colixBack){ +if (colixBack == 0) { +(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, 0); +return; +}(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, 1); +var colix = this.colixCurrent; +this.setC(colixBack); +(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, -1); +this.setC(colix); +}, "~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N"); +Clazz_overrideMethod(c$, "fillHermite", +function(tension, diameterBeg, diameterMid, diameterEnd, s0, s1, s2, s3){ +(this.hermite3d).renderHermiteRope(true, tension, diameterBeg, diameterMid, diameterEnd, s0, s1, s2, s3); +}, "~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "drawTriangle3C", +function(screenA, colixA, screenB, colixB, screenC, colixC, check){ +if ((check & 1) == 1) this.drawLine(colixA, colixB, screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z); +if ((check & 2) == 2) this.drawLine(colixB, colixC, screenB.x, screenB.y, screenB.z, screenC.x, screenC.y, screenC.z); +if ((check & 4) == 4) this.drawLine(colixA, colixC, screenA.x, screenA.y, screenA.z, screenC.x, screenC.y, screenC.z); +}, "JU.P3i,~N,JU.P3i,~N,JU.P3i,~N,~N"); +Clazz_overrideMethod(c$, "fillTriangleTwoSided", +function(normix, screenA, screenB, screenC){ +this.setColorNoisy(this.getShadeIndex(normix)); +this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "~N,JU.P3,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "fillTriangleP3f", +function(screenA, screenB, screenC, useGouraud){ +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.setScreeni(screenC, this.sC); +(this.triangle3d).fillTriangle(this.sA, this.sB, this.sC, useGouraud); +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "fillTriangle3f", +function(screenA, screenB, screenC, isSolid){ +var i = this.getShadeIndexP3(screenA, screenB, screenC, isSolid); +if (i < 0) return; +if (isSolid) this.setColorNoisy(i); + else this.setColor(this.shadesCurrent[i]); +this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "fillTriangle3i", +function(screenA, screenB, screenC, ptA, ptB, ptC, doShade){ +if (doShade) { +var v = this.vectorAB; +v.set(screenB.x - screenA.x, screenB.y - screenA.y, screenB.z - screenA.z); +var shadeIndex; +if (screenC == null) { +shadeIndex = this.shader.getShadeIndex(-v.x, -v.y, v.z); +} else { +this.vectorAC.set(screenC.x - screenA.x, screenC.y - screenA.y, screenC.z - screenA.z); +v.cross(v, this.vectorAC); +shadeIndex = v.z >= 0 ? this.shader.getShadeIndex(-v.x, -v.y, v.z) : this.shader.getShadeIndex(v.x, v.y, -v.z); +}if (shadeIndex > 56) shadeIndex = 56; +this.setColorNoisy(shadeIndex); +}this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "JU.P3,JU.P3,JU.P3,JU.T3,JU.T3,JU.T3,~B"); +Clazz_overrideMethod(c$, "fillTriangle3CN", +function(screenA, colixA, normixA, screenB, colixB, normixB, screenC, colixC, normixC){ +(this.triangle3d).fillTriangle(screenA, screenB, screenC, this.checkGouraud(colixA, colixB, colixC, normixA, normixB, normixC)); +}, "JU.P3i,~N,~N,JU.P3i,~N,~N,JU.P3i,~N,~N"); +Clazz_overrideMethod(c$, "fillTriangle3CNBits", +function(screenA, colixA, normixA, screenB, colixB, normixB, screenC, colixC, normixC, twoSided){ +this.fillTriangleP3f(screenA, screenB, screenC, this.checkGouraud(colixA, colixB, colixC, normixA, normixB, normixC)); +}, "JU.P3,~N,~N,JU.P3,~N,~N,JU.P3,~N,~N,~B"); +Clazz_defineMethod(c$, "checkGouraud", +function(colixA, colixB, colixC, normixA, normixB, normixC){ +if (!this.isPass2 && normixA == normixB && normixA == normixC && colixA == colixB && colixA == colixC) { +var shadeIndex = this.getShadeIndex(normixA); +if (colixA != this.colixCurrent || this.currentShadeIndex != shadeIndex) { +this.currentShadeIndex = -1; +this.setC(colixA); +this.setColorNoisy(shadeIndex); +}return false; +}this.setTriangleTranslucency(colixA, colixB, colixC); +(this.triangle3d).setGouraud(this.getShades(colixA)[this.getShadeIndex(normixA)], this.getShades(colixB)[this.getShadeIndex(normixB)], this.getShades(colixC)[this.getShadeIndex(normixC)]); +return true; +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeIndex", +function(normix){ +return (normix == -10000 || normix == 9999 ? J.g3d.Graphics3D.nullShadeIndex : normix < 0 ? this.shadeIndexes2Sided[~normix] : this.shadeIndexes[normix]); +}, "~N"); +Clazz_defineMethod(c$, "setTriangleTranslucency", +function(colixA, colixB, colixC){ +if (this.isPass2) { +var maskA = colixA & 30720; +var maskB = colixB & 30720; +var maskC = colixC & 30720; +maskA &= -16385; +maskB &= -16385; +maskC &= -16385; +var mask = JU.GData.roundInt(Clazz_doubleToInt((maskA + maskB + maskC) / 3)) & 30720; +this.translucencyMask = (mask << 13) | 0xFFFFFF; +}}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "fillQuadrilateral", +function(screenA, screenB, screenC, screenD, isSolid){ +var i = this.getShadeIndexP3(screenA, screenB, screenC, isSolid); +if (i < 0) return; +this.setColorNoisy(i); +this.fillTriangleP3f(screenA, screenB, screenC, false); +this.fillTriangleP3f(screenA, screenC, screenD, false); +}, "JU.P3,JU.P3,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "drawSurface", +function(meshSurface, colix){ +}, "JU.MeshSurface,~N"); +Clazz_overrideMethod(c$, "plotPixelClippedP3i", +function(screen){ +this.plotPixelClippedArgb(this.argbCurrent, screen.x, screen.y, screen.z, this.width, this.zbuf, this.pixel); +}, "JU.P3i"); +Clazz_defineMethod(c$, "plotPixelClippedArgb", +function(argb, x, y, z, width, zbuf, p){ +if (this.isClipped3(x, y, z)) return; +var offset = y * width + x; +if (z < zbuf[offset]) p.addPixel(offset, z, argb); +}, "~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz_defineMethod(c$, "plotPixelUnclipped", +function(argb, x, y, z, width, zbuf, p){ +var offset = y * width + x; +if (z < zbuf[offset]) p.addPixel(offset, z, argb); +}, "~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz_defineMethod(c$, "plotImagePixel", +function(argb, x, y, z, shade, bgargb, width, height, zbuf, p, transpLog){ +if (x < 0 || x >= width || y < 0 || y >= height) return; +(p).addImagePixel(shade, transpLog, y * width + x, z, argb, bgargb); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~A,~O,~N"); +Clazz_defineMethod(c$, "plotPixelsClippedRaster", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right){ +var depth; +var slab; +if (count <= 0 || y < 0 || y >= this.height || x >= this.width || (zAtLeft < (slab = this.slab) && zPastRight < slab) || (zAtLeft > (depth = this.depth) && zPastRight > depth)) return; +var zb = this.zbuf; +var seed = (x << 16) + (y << 1) ^ 0x33333333; +var zScaled = (zAtLeft << 10) + (512); +var dz = zPastRight - zAtLeft; +var roundFactor = Clazz_doubleToInt(count / 2); +var zIncrementScaled = JU.GData.roundInt(Clazz_doubleToInt(((dz << 10) + (dz >= 0 ? roundFactor : -roundFactor)) / count)); +if (x < 0) { +x = -x; +zScaled += zIncrementScaled * x; +count -= x; +if (count <= 0) return; +x = 0; +}if (count + x > this.width) count = this.width - x; +var offsetPbuf = y * this.width + x; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var z = zScaled >> 10; +if (z >= slab && z <= depth && z < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, z, bits == 0 ? adn : (bits == 1 ? aup : ac)); +}++offsetPbuf; +zScaled += zIncrementScaled; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = Clazz_doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count); +var gScaled = rgb16Left.g; +var gIncrement = Clazz_doubleToInt((rgb16Right.g - gScaled) / count); +var bScaled = rgb16Left.b; +var bIncrement = Clazz_doubleToInt((rgb16Right.b - bScaled) / count); +while (--count >= 0) { +var z = zScaled >> 10; +if (z >= slab && z <= depth && z < zb[offsetPbuf]) p.addPixel(offsetPbuf, z, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +zScaled += zIncrementScaled; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16"); +Clazz_defineMethod(c$, "plotPixelsUnclippedRaster", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right){ +if (count <= 0) return; +var seed = ((x << 16) + (y << 1) ^ 0x33333333) & 0x7FFFFFFF; +var zScaled = (zAtLeft << 10) + (512); +var dz = zPastRight - zAtLeft; +var roundFactor = Clazz_doubleToInt(count / 2); +var zIncrementScaled = JU.GData.roundInt(Clazz_doubleToInt(((dz << 10) + (dz >= 0 ? roundFactor : -roundFactor)) / count)); +var offsetPbuf = y * this.width + x; +var zb = this.zbuf; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var z = zScaled >> 10; +if (z < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, z, bits == 0 ? adn : (bits == 1 ? aup : ac)); +}++offsetPbuf; +zScaled += zIncrementScaled; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = JU.GData.roundInt(Clazz_doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count)); +var gScaled = rgb16Left.g; +var gIncrement = JU.GData.roundInt(Clazz_doubleToInt((rgb16Right.g - gScaled) / count)); +var bScaled = rgb16Left.b; +var bIncrement = JU.GData.roundInt(Clazz_doubleToInt((rgb16Right.b - bScaled) / count)); +while (--count >= 0) { +var z = zScaled >> 10; +if (z < zb[offsetPbuf]) p.addPixel(offsetPbuf, z, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +zScaled += zIncrementScaled; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16"); +Clazz_defineMethod(c$, "plotPixelsClippedRasterBits", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right, a, b){ +var depth; +var slab; +if (count <= 0 || y < 0 || y >= this.height || x >= this.width || (zAtLeft < (slab = this.slab) && zPastRight < slab) || (zAtLeft > (depth = this.depth) && zPastRight > depth)) return; +var zb = this.zbuf; +var seed = (x << 16) + (y << 1) ^ 0x33333333; +if (x < 0) { +x = -x; +count -= x; +if (count <= 0) return; +x = 0; +}if (count + x > this.width) count = this.width - x; +var offsetPbuf = y * this.width + x; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent >= slab && zCurrent <= depth && zCurrent < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, zCurrent, bits < 2 ? adn : bits < 6 ? aup : ac); +}++offsetPbuf; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = Clazz_doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count); +var gScaled = rgb16Left.g; +var gIncrement = Clazz_doubleToInt((rgb16Right.g - gScaled) / count); +var bScaled = rgb16Left.b; +var bIncrement = Clazz_doubleToInt((rgb16Right.b - bScaled) / count); +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent >= slab && zCurrent <= depth && zCurrent < zb[offsetPbuf]) p.addPixel(offsetPbuf, zCurrent, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N"); +Clazz_defineMethod(c$, "plotPixelsUnclippedRasterBits", +function(count, x, y, rgb16Left, rgb16Right, a, b){ +if (count <= 0) return; +var seed = ((x << 16) + (y << 1) ^ 0x33333333) & 0x7FFFFFFF; +var offsetPbuf = y * this.width + x; +var zb = this.zbuf; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +var c = (bits == 0 ? adn : bits == 1 ? aup : ac); +p.addPixel(offsetPbuf, zCurrent, c); +}++offsetPbuf; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = JU.GData.roundInt(Clazz_doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count)); +var gScaled = rgb16Left.g; +var gIncrement = JU.GData.roundInt(Clazz_doubleToInt((rgb16Right.g - gScaled) / count)); +var bScaled = rgb16Left.b; +var bIncrement = JU.GData.roundInt(Clazz_doubleToInt((rgb16Right.b - bScaled) / count)); +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent < zb[offsetPbuf]) p.addPixel(offsetPbuf, zCurrent, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N"); +Clazz_defineMethod(c$, "plotPixelsUnclippedCount", +function(c, count, x, y, z, width, zbuf, p){ +var offsetPbuf = y * width + x; +while (--count >= 0) { +if (z < zbuf[offsetPbuf]) p.addPixel(offsetPbuf, z, c); +++offsetPbuf; +} +}, "~N,~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz_defineMethod(c$, "plotPoints", +function(count, coordinates, xOffset, yOffset){ +var p = this.pixel; +var c = this.argbCurrent; +var zb = this.zbuf; +var w = this.width; +var antialias = this.antialiasThisFrame; +for (var i = count * 3; i > 0; ) { +var z = coordinates[--i]; +var y = coordinates[--i] + yOffset; +var x = coordinates[--i] + xOffset; +if (this.isClipped3(x, y, z)) continue; +var offset = y * w + x++; +if (z < zb[offset]) p.addPixel(offset, z, c); +if (antialias) { +offset = y * w + x; +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +offset = (++y) * w + x; +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +offset = y * w + (--x); +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +}} +}, "~N,~A,~N,~N"); +Clazz_defineMethod(c$, "setColorNoisy", +function(shadeIndex){ +this.currentShadeIndex = shadeIndex; +this.argbCurrent = this.shadesCurrent[shadeIndex]; +this.argbNoisyUp = this.shadesCurrent[shadeIndex < 63 ? shadeIndex + 1 : 63]; +this.argbNoisyDn = this.shadesCurrent[shadeIndex > 0 ? shadeIndex - 1 : 0]; +}, "~N"); +Clazz_defineMethod(c$, "getShadeIndexP3", +function(screenA, screenB, screenC, isSolid){ +this.vectorAB.sub2(screenB, screenA); +this.vectorAC.sub2(screenC, screenA); +var v = this.vectorNormal; +v.cross(this.vectorAB, this.vectorAC); +var i = (v.z < 0 ? this.shader.getShadeIndex(v.x, v.y, -v.z) : isSolid ? -1 : this.shader.getShadeIndex(-v.x, -v.y, v.z)); +return i; +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "renderBackground", +function(jmolRenderer){ +if (this.backgroundImage != null) this.plotImage(-2147483648, 0, -2147483648, this.backgroundImage, jmolRenderer, 0, 0, 0); +}, "J.api.JmolRendererInterface"); +Clazz_overrideMethod(c$, "drawAtom", +function(atom, radius){ +this.fillSphereXYZ(atom.sD, atom.sX, atom.sY, atom.sZ); +}, "JM.Atom,~N"); +Clazz_overrideMethod(c$, "getExportType", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "getExportName", +function(){ +return null; +}); +Clazz_defineMethod(c$, "canDoTriangles", +function(){ +return true; +}); +Clazz_defineMethod(c$, "isCartesianExport", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "initializeExporter", +function(vwr, privateKey, g3d, params){ +return null; +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz_overrideMethod(c$, "finalizeOutput", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "drawBond", +function(atomA, atomB, colixA, colixB, endcaps, mad, bondOrder){ +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawEllipse", +function(ptAtom, ptX, ptY, fillArc, wireframeOnly){ +return false; +}, "JU.P3,JU.P3,JU.P3,~B,~B"); +Clazz_defineMethod(c$, "getPrivateKey", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "clearFontCache", +function(){ +J.g3d.TextRenderer.clearFontCache(); +}); +Clazz_defineMethod(c$, "setRotationMatrix", +function(rotationMatrix){ +var vertexVectors = JU.Normix.getVertexVectors(); +for (var i = JU.GData.normixCount; --i >= 0; ) { +var tv = this.transformedVectors[i]; +rotationMatrix.rotate2(vertexVectors[i], tv); +this.shadeIndexes[i] = this.shader.getShadeB(tv.x, -tv.y, tv.z); +this.shadeIndexes2Sided[i] = (tv.z >= 0 ? this.shadeIndexes[i] : this.shader.getShadeB(-tv.x, tv.y, -tv.z)); +} +}, "JU.M3"); +Clazz_overrideMethod(c$, "renderCrossHairs", +function(minMax, screenWidth, screenHeight, navOffset, navDepth){ +var antialiased = this.isAntialiased(); +this.setC(navDepth < 0 ? 10 : navDepth > 100 ? 11 : 23); +var x = Math.max(Math.min(this.width, Math.round(navOffset.x)), 0); +var y = Math.max(Math.min(this.height, Math.round(navOffset.y)), 0); +var z = Math.round(navOffset.z) + 1; +var off = (antialiased ? 8 : 4); +var h = (antialiased ? 20 : 10); +var w = (antialiased ? 2 : 1); +this.drawRect(x - off, y, z, 0, h, w); +this.drawRect(x, y - off, z, 0, w, h); +this.drawRect(x - off, y - off, z, 0, h, h); +off = h; +h = h >> 1; +this.setC(minMax[1] < navOffset.x ? 21 : 11); +this.drawRect(x - off, y, z, 0, h, w); +this.setC(minMax[0] > navOffset.x ? 21 : 11); +this.drawRect(x + h, y, z, 0, h, w); +this.setC(minMax[3] < navOffset.y ? 21 : 11); +this.drawRect(x, y - off, z, 0, w, h); +this.setC(minMax[2] > navOffset.y ? 21 : 11); +this.drawRect(x, y + h, z, 0, w, h); +}, "~A,~N,~N,JU.P3,~N"); +Clazz_overrideMethod(c$, "initializeOutput", +function(vwr, privateKey, params){ +return false; +}, "JV.Viewer,~N,java.util.Map"); +c$.fixTextImageRGB = Clazz_defineMethod(c$, "fixTextImageRGB", +function(argb){ +return ((argb & 0xC0C0C0) == 0 ? argb | 0x040404 : argb); +}, "~N"); +c$.sort = null; +c$.nullShadeIndex = 50; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.PrecisionRenderer", "java.util.Hashtable"], "J.g3d.LineRenderer", ["JU.BS"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.shader = null; +this.lineBits = null; +this.slope = 0; +this.lineTypeX = false; +this.nBits = 0; +this.lineCache = null; +this.slopeKey = null; +this.x1t = 0; +this.y1t = 0; +this.z1t = 0; +this.x2t = 0; +this.y2t = 0; +this.z2t = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "LineRenderer", J.g3d.PrecisionRenderer); +Clazz_prepareFields (c$, function(){ +this.lineCache = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(g3d){ +Clazz_superConstructor (this, J.g3d.LineRenderer, []); +this.g3d = g3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "setLineBits", +function(dx, dy){ +this.slope = (dx != 0 ? dy / dx : dy >= 0 ? 3.4028235E38 : -3.4028235E38); +this.lineTypeX = (this.slope <= 1 && this.slope >= -1); +this.nBits = (this.lineTypeX ? this.g3d.width : this.g3d.height); +this.slopeKey = Float.$valueOf(this.slope); +if (this.lineCache.containsKey(this.slopeKey)) { +this.lineBits = this.lineCache.get(this.slopeKey); +return; +}this.lineBits = JU.BS.newN(this.nBits); +dy = Math.abs(dy); +dx = Math.abs(dx); +if (dy > dx) { +var t = dx; +dx = dy; +dy = t; +}var twoDError = 0; +var twoDx = dx + dx; +var twoDy = dy + dy; +for (var i = 0; i < this.nBits; i++) { +twoDError += twoDy; +if (twoDError > dx) { +this.lineBits.set(i); +twoDError -= twoDx; +}} +this.lineCache.put(this.slopeKey, this.lineBits); +}, "~N,~N"); +Clazz_defineMethod(c$, "clearLineCache", +function(){ +this.lineCache.clear(); +}); +Clazz_defineMethod(c$, "plotLineOld", +function(argbA, argbB, xA, yA, zA, xB, yB, zB){ +this.x1t = xA; +this.x2t = xB; +this.y1t = yA; +this.y2t = yB; +this.z1t = zA; +this.z2t = zB; +var clipped = true; +switch (this.getTrimmedLineImpl()) { +case 0: +clipped = false; +break; +case 2: +return; +} +this.plotLineClippedOld(argbA, argbB, xA, yA, zA, xB - xA, yB - yA, zB - zA, clipped, 0, 0); +}, "~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "plotLineDeltaOld", +function(argbA, argbB, xA, yA, zA, dxBA, dyBA, dzBA, clipped){ +this.x1t = xA; +this.x2t = xA + dxBA; +this.y1t = yA; +this.y2t = yA + dyBA; +this.z1t = zA; +this.z2t = zA + dzBA; +if (clipped) switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +break; +} +this.plotLineClippedOld(argbA, argbB, xA, yA, zA, dxBA, dyBA, dzBA, clipped, 0, 0); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "plotLineDeltaAOld", +function(shades1, shades2, screenMask, shadeIndex, x, y, z, dx, dy, dz, clipped){ +this.x1t = x; +this.x2t = x + dx; +this.y1t = y; +this.y2t = y + dy; +this.z1t = z; +this.z2t = z + dz; +if (clipped) switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +} +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var argb = argb1; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yOffsetIncrement = width; +var x2 = x + dx; +var y2 = y + dy; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +}var twoDx = dx + dx; +var twoDy = dy + dy; +var zCurrentScaled = z << 10; +var argbUp = argb1Up; +var argbDn = argb1Dn; +if (dy <= dx) { +var roundingFactor = dx - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz_doubleToInt(((dz << 10) + roundingFactor) / dx); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}offset += xIncrement; +zCurrentScaled += zIncrementScaled; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, zCurrent, rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}runIndex = (runIndex + 1) % run; +} +} else { +var roundingFactor = dy - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz_doubleToInt(((dz << 10) + roundingFactor) / dy); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}offset += yOffsetIncrement; +zCurrentScaled += zIncrementScaled; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) { +var rand8 = this.g3d.shader.nextRandom8Bit(); +p.addPixel(offset, zCurrent, rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}runIndex = (runIndex + 1) % run; +} +}}, "~A,~A,~N,~N,~N,~N,~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "plotLineDeltaABitsFloat", +function(shades1, shades2, shadeIndex, ptA, ptB, screenMask, clipped){ +var x = Math.round(ptA.x); +var y = Math.round(ptA.y); +var z = Math.round(ptA.z); +var bx = Math.round(ptB.x); +var by = Math.round(ptB.y); +var bz = Math.round(ptB.z); +var dx = bx - x; +var dy = by - y; +this.x1t = x; +this.x2t = bx; +this.y1t = y; +this.y2t = by; +this.z1t = z; +this.z2t = bz; +if (clipped && this.getTrimmedLineImpl() == 2) return; +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var i0; +var iMid; +var i1; +var i2; +var iIncrement; +var xIncrement; +var yOffsetIncrement; +if (this.lineTypeX) { +i0 = x; +i1 = this.x1t; +i2 = this.x2t; +iMid = x + Clazz_doubleToInt(dx / 2); +iIncrement = (dx >= 0 ? 1 : -1); +xIncrement = iIncrement; +yOffsetIncrement = (dy >= 0 ? width : -width); +this.setRastABFloat(ptA.x, ptA.z, ptB.x, ptB.z); +} else { +i0 = y; +i1 = this.y1t; +i2 = this.y2t; +iMid = y + Clazz_doubleToInt(dy / 2); +iIncrement = (dy >= 0 ? 1 : -1); +xIncrement = (dy >= 0 ? width : -width); +yOffsetIncrement = (dx >= 0 ? 1 : -1); +this.setRastABFloat(ptA.y, ptA.z, ptB.y, ptB.z); +}var zCurrent = z; +var argb = argb1; +var argbUp = argb1Up; +var argbDn = argb1Dn; +var isInWindow = false; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}for (var i = i0, iBits = i0; ; i += iIncrement, iBits += iIncrement) { +if (i == i1) isInWindow = true; +if (i == iMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}if (argb != 0 && isInWindow && offset >= 0 && offset < offsetMax && runIndex < rise) { +zCurrent = this.getZCurrent(this.a, this.b, i); +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, Clazz_floatToInt(zCurrent), rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}if (i == i2) break; +runIndex = (runIndex + 1) % run; +offset += xIncrement; +while (iBits < 0) iBits += this.nBits; + +if (this.lineBits.get(iBits % this.nBits)) { +offset += yOffsetIncrement; +}} +}, "~A,~A,~N,JU.P3,JU.P3,~N,~B"); +Clazz_defineMethod(c$, "plotLineDeltaABitsInt", +function(shades1, shades2, shadeIndex, ptA, ptB, screenMask, clipped){ +var x = ptA.x; +var y = ptA.y; +var z = ptA.z; +var bx = ptB.x; +var by = ptB.y; +var bz = ptB.z; +var dx = bx - x; +var dy = by - y; +this.x1t = x; +this.x2t = bx; +this.y1t = y; +this.y2t = by; +this.z1t = z; +this.z2t = bz; +if (clipped && this.getTrimmedLineImpl() == 2) return; +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var i0; +var iMid; +var i1; +var i2; +var iIncrement; +var xIncrement; +var yOffsetIncrement; +if (this.lineTypeX) { +i0 = x; +i1 = this.x1t; +i2 = this.x2t; +iMid = x + Clazz_doubleToInt(dx / 2); +iIncrement = (dx >= 0 ? 1 : -1); +xIncrement = iIncrement; +yOffsetIncrement = (dy >= 0 ? width : -width); +this.setRastAB(ptA.x, ptA.z, ptB.x, ptB.z); +} else { +i0 = y; +i1 = this.y1t; +i2 = this.y2t; +iMid = y + Clazz_doubleToInt(dy / 2); +iIncrement = (dy >= 0 ? 1 : -1); +xIncrement = (dy >= 0 ? width : -width); +yOffsetIncrement = (dx >= 0 ? 1 : -1); +this.setRastAB(ptA.y, ptA.z, ptB.y, ptB.z); +}var zCurrent = z; +var argb = argb1; +var argbUp = argb1Up; +var argbDn = argb1Dn; +var isInWindow = false; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}for (var i = i0, iBits = i0; ; i += iIncrement, iBits += iIncrement) { +if (i == i1) isInWindow = true; +if (i == iMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}if (argb != 0 && isInWindow && offset >= 0 && offset < offsetMax && runIndex < rise) { +zCurrent = this.getZCurrent(this.a, this.b, i); +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, Clazz_floatToInt(zCurrent), rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}if (i == i2) break; +runIndex = (runIndex + 1) % run; +offset += xIncrement; +while (iBits < 0) iBits += this.nBits; + +if (this.lineBits.get(iBits % this.nBits)) { +offset += yOffsetIncrement; +}} +}, "~A,~A,~N,JU.P3i,JU.P3i,~N,~B"); +Clazz_defineMethod(c$, "plotLineBits", +function(argbA, argbB, ptA, ptB, run, rise, andClip){ +if (ptA.z <= 1 || ptB.z <= 1) return; +var clipped = true; +this.x1t = ptA.x; +this.y1t = ptA.y; +this.z1t = ptA.z; +this.x2t = ptB.x; +this.y2t = ptB.y; +this.z2t = ptB.z; +switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +break; +default: +if (andClip) { +ptA.set(this.x1t, this.y1t, this.z1t); +ptB.set(this.x2t, this.y2t, this.z2t); +}} +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +if (run == 0) { +rise = 2147483647; +run = 1; +}var x = ptA.x; +var y = ptA.y; +var z = ptA.z; +var dx = ptB.x - x; +var x2 = x + dx; +var dy = ptB.y - y; +var y2 = y + dy; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var argb = argbA; +var p = this.g3d.pixel; +if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yIncrement = 1; +var yOffsetIncrement = width; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +yIncrement = -1; +}var twoDx = dx + dx; +var twoDy = dy + dy; +if (dy <= dx) { +this.setRastAB(ptA.x, ptA.z, ptB.x, ptB.z); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argbB; +if (argb == 0) return; +}offset += xIncrement; +x += xIncrement; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = this.getZCurrent(this.a, this.b, x); +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +} else { +this.setRastAB(ptA.y, ptA.z, ptB.y, ptB.z); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argbB; +if (argb == 0) return; +}offset += yOffsetIncrement; +y += yIncrement; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = this.getZCurrent(this.a, this.b, y); +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +}}, "~N,~N,JU.P3i,JU.P3i,~N,~N,~B"); +Clazz_defineMethod(c$, "getTrimmedLineImpl", +function(){ +var cc1 = this.g3d.clipCode3(this.x1t, this.y1t, this.z1t); +var cc2 = this.g3d.clipCode3(this.x2t, this.y2t, this.z2t); +var c = (cc1 | cc2); +if ((cc1 | cc2) == 0) return 0; +if (c == -1) return 2; +var xLast = this.g3d.xLast; +var yLast = this.g3d.yLast; +var slab = this.g3d.slab; +var depth = this.g3d.depth; +do { +if ((cc1 & cc2) != 0) return 2; +var dx = this.x2t - this.x1t; +var dy = this.y2t - this.y1t; +var dz = this.z2t - this.z1t; +if (cc1 != 0) { +if ((cc1 & 8) != 0) { +this.y1t += Clazz_floatToInt((-this.x1t * dy) / dx); +this.z1t += Clazz_floatToInt((-this.x1t * dz) / dx); +this.x1t = 0; +} else if ((cc1 & 4) != 0) { +this.y1t += Clazz_floatToInt(((xLast - this.x1t) * dy) / dx); +this.z1t += Clazz_floatToInt(((xLast - this.x1t) * dz) / dx); +this.x1t = xLast; +} else if ((cc1 & 2) != 0) { +this.x1t += Clazz_floatToInt((-this.y1t * dx) / dy); +this.z1t += Clazz_floatToInt((-this.y1t * dz) / dy); +this.y1t = 0; +} else if ((cc1 & 1) != 0) { +this.x1t += Clazz_floatToInt(((yLast - this.y1t) * dx) / dy); +this.z1t += Clazz_floatToInt(((yLast - this.y1t) * dz) / dy); +this.y1t = yLast; +} else if ((cc1 & 32) != 0) { +this.x1t += Clazz_floatToInt(((slab - this.z1t) * dx) / dz); +this.y1t += Clazz_floatToInt(((slab - this.z1t) * dy) / dz); +this.z1t = slab; +} else { +this.x1t += Clazz_floatToInt(((depth - this.z1t) * dx) / dz); +this.y1t += Clazz_floatToInt(((depth - this.z1t) * dy) / dz); +this.z1t = depth; +}cc1 = this.g3d.clipCode3(this.x1t, this.y1t, this.z1t); +} else { +if ((cc2 & 8) != 0) { +this.y2t += Clazz_floatToInt((-this.x2t * dy) / dx); +this.z2t += Clazz_floatToInt((-this.x2t * dz) / dx); +this.x2t = 0; +} else if ((cc2 & 4) != 0) { +this.y2t += Clazz_floatToInt(((xLast - this.x2t) * dy) / dx); +this.z2t += Clazz_floatToInt(((xLast - this.x2t) * dz) / dx); +this.x2t = xLast; +} else if ((cc2 & 2) != 0) { +this.x2t += Clazz_floatToInt((-this.y2t * dx) / dy); +this.z2t += Clazz_floatToInt((-this.y2t * dz) / dy); +this.y2t = 0; +} else if ((cc2 & 1) != 0) { +this.x2t += Clazz_floatToInt(((yLast - this.y2t) * dx) / dy); +this.z2t += Clazz_floatToInt(((yLast - this.y2t) * dz) / dy); +this.y2t = yLast; +} else if ((cc2 & 32) != 0) { +this.x2t += Clazz_floatToInt(((slab - this.z2t) * dx) / dz); +this.y2t += Clazz_floatToInt(((slab - this.z2t) * dy) / dz); +this.z2t = slab; +} else { +this.x2t += Clazz_floatToInt(((depth - this.z2t) * dx) / dz); +this.y2t += Clazz_floatToInt(((depth - this.z2t) * dy) / dz); +this.z2t = depth; +}cc2 = this.g3d.clipCode3(this.x2t, this.y2t, this.z2t); +}} while ((cc1 | cc2) != 0); +return 1; +}); +Clazz_defineMethod(c$, "plotLineClippedOld", +function(argb1, argb2, x, y, z, dx, dy, dz, clipped, run, rise){ +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +if (run == 0) { +rise = 2147483647; +run = 1; +}var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var argb = argb1; +var p = this.g3d.pixel; +if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yOffsetIncrement = width; +var x2 = x + dx; +var y2 = y + dy; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +}var twoDx = dx + dx; +var twoDy = dy + dy; +var zCurrentScaled = z << 10; +if (dy <= dx) { +var roundingFactor = dx - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz_doubleToInt(((dz << 10) + roundingFactor) / dx); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +}offset += xIncrement; +zCurrentScaled += zIncrementScaled; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +} else { +var roundingFactor = dy - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz_doubleToInt(((dz << 10) + roundingFactor) / dy); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +}offset += yOffsetIncrement; +zCurrentScaled += zIncrementScaled; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +}}, "~N,~N,~N,~N,~N,~N,~N,~N,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(null, "J.g3d.Pixelator", ["J.g3d.Graphics3D"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g = null; +this.p0 = null; +this.zb = null; +this.pb = null; +this.width = 0; +this.bgcolor = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "Pixelator", null); +Clazz_makeConstructor(c$, +function(graphics3d){ +this.g = graphics3d; +this.bgcolor = this.g.bgcolor; +this.setBuf(); +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "setBuf", +function(){ +this.zb = this.g.zbuf; +this.pb = this.g.pbuf; +}); +Clazz_defineMethod(c$, "clearPixel", +function(offset, z){ +if (this.zb[offset] > z) this.zb[offset] = 2147483647; +}, "~N,~N"); +Clazz_defineMethod(c$, "addPixel", +function(offset, z, p){ +this.zb[offset] = z; +this.pb[offset] = p; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "addImagePixel", +function(shade, tLog, offset, z, argb, bgargb){ +if (z < this.zb[offset]) { +switch (shade) { +case 0: +return; +case 8: +this.addPixel(offset, z, argb); +return; +default: +shade += tLog; +if (shade <= 7) { +var p = this.pb[offset]; +if (bgargb != 0) p = J.g3d.Graphics3D.mergeBufferPixel(p, bgargb, bgargb); +p = J.g3d.Graphics3D.mergeBufferPixel(p, (argb & 0xFFFFFF) | (shade << 24), this.bgcolor); +this.addPixel(offset, z, p); +}} +}}, "~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.Pixelator"], "J.g3d.PixelatorT", ["J.g3d.Graphics3D"], function(){ +var c$ = Clazz_declareType(J.g3d, "PixelatorT", J.g3d.Pixelator); +Clazz_overrideMethod(c$, "clearPixel", +function(offset, z){ +}, "~N,~N"); +Clazz_overrideMethod(c$, "addPixel", +function(offset, z, p){ +var zT = this.g.zbufT[offset]; +if (z < zT) { +var argb = this.g.pbufT[offset]; +if (!this.g.translucentCoverOnly && argb != 0 && zT - z > this.g.zMargin) this.pb[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pb[offset], argb, this.g.bgcolor); +this.g.zbufT[offset] = z; +this.g.pbufT[offset] = p & this.g.translucencyMask; +} else if (z == zT) { +} else if (!this.g.translucentCoverOnly && z - zT > this.g.zMargin) { +this.pb[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pb[offset], p & this.g.translucencyMask, this.g.bgcolor); +}}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.Pixelator"], "J.g3d.PixelatorShaded", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bgRGB = null; +this.tmp = null; +this.zSlab = 0; +this.zDepth = 0; +this.zShadePower = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "PixelatorShaded", J.g3d.Pixelator); +Clazz_makeConstructor(c$, +function(g){ +Clazz_superConstructor(this, J.g3d.PixelatorShaded, [g]); +this.tmp = Clazz_newIntArray (3, 0); +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "set", +function(zSlab, zDepth, zShadePower){ +this.bgcolor = this.g.bgcolor; +this.bgRGB = Clazz_newIntArray(-1, [this.bgcolor & 0xFF, (this.bgcolor >> 8) & 0xFF, (this.g.bgcolor >> 16) & 0xFF]); +this.zSlab = zSlab < 0 ? 0 : zSlab; +this.zDepth = zDepth < 0 ? 0 : zDepth; +this.zShadePower = zShadePower; +this.p0 = this.g.pixel0; +return this; +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "addPixel", +function(offset, z, p){ +if (z > this.zDepth) return; +if (z >= this.zSlab && this.zShadePower > 0) { +var t = this.tmp; +var zs = this.bgRGB; +t[0] = p; +t[1] = p >> 8; +t[2] = p >> 16; +var f = (this.zDepth - z) / (this.zDepth - this.zSlab); +if (this.zShadePower > 1) for (var i = 0; i < this.zShadePower; i++) f *= f; + +for (var i = 0; i < 3; i++) t[i] = zs[i] + Clazz_floatToInt(f * ((t[i] & 0xFF) - zs[i])); + +p = (t[2] << 16) | (t[1] << 8) | t[0] | (p & 0xFF000000); +}this.p0.addPixel(offset, z, p); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "showZBuffer", +function(){ +for (var i = this.p0.zb.length; --i >= 0; ) { +if (this.p0.pb[i] == 0) continue; +var z = Clazz_floatToInt(Math.min(255, Math.max(0, 255 * (this.zDepth - this.p0.zb[i]) / (this.zDepth - this.zSlab)))); +this.p0.pb[i] = 0xFF000000 | z | (z << 8) | (z << 16); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.Pixelator"], "J.g3d.PixelatorScreened", null, function(){ +var c$ = Clazz_declareType(J.g3d, "PixelatorScreened", J.g3d.Pixelator); +Clazz_makeConstructor(c$, +function(g, p0){ +Clazz_superConstructor(this, J.g3d.PixelatorScreened, [g]); +this.width = g.width; +this.p0 = p0; +}, "J.g3d.Graphics3D,J.g3d.Pixelator"); +Clazz_overrideMethod(c$, "addPixel", +function(offset, z, p){ +if ((offset % this.width) % 2 == (Clazz_doubleToInt(offset / this.width)) % 2) this.p0.addPixel(offset, z, p); +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.windowWidth = 0; +this.windowHeight = 0; +this.windowSize = 0; +this.bufferWidth = 0; +this.bufferHeight = 0; +this.bufferSize = 0; +this.bufferSizeT = 0; +this.bufferedImage = null; +this.pBuffer = null; +this.pBufferT = null; +this.zBuffer = null; +this.zBufferT = null; +this.widthOffscreen = 0; +this.heightOffscreen = 0; +this.offscreenImage = null; +this.graphicsForTextOrImage = null; +this.apiPlatform = null; +Clazz_instantialize(this, arguments);}, J.g3d, "Platform3D", null); +Clazz_makeConstructor(c$, +function(apiPlatform){ +this.apiPlatform = apiPlatform; +}, "J.api.GenericPlatform"); +Clazz_defineMethod(c$, "getGraphicsForMetrics", +function(){ +return this.apiPlatform.getGraphics(this.allocateOffscreenImage(1, 1)); +}); +Clazz_defineMethod(c$, "allocateTBuffers", +function(antialiasTranslucent){ +this.bufferSizeT = (antialiasTranslucent ? this.bufferSize : this.windowSize); +this.zBufferT = Clazz_newIntArray (this.bufferSizeT, 0); +this.pBufferT = Clazz_newIntArray (this.bufferSizeT, 0); +}, "~B"); +Clazz_defineMethod(c$, "allocateBuffers", +function(width, height, antialias, isImageWrite){ +this.windowWidth = width; +this.windowHeight = height; +this.windowSize = width * height; +if (antialias) { +width *= 2; +height *= 2; +}this.bufferWidth = width; +this.bufferHeight = height; +this.bufferSize = this.bufferWidth * this.bufferHeight; +this.zBuffer = Clazz_newIntArray (this.bufferSize, 0); +this.pBuffer = Clazz_newIntArray (this.bufferSize, 0); +this.bufferedImage = this.apiPlatform.allocateRgbImage(this.windowWidth, this.windowHeight, this.pBuffer, this.windowSize, J.g3d.Platform3D.backgroundTransparent, isImageWrite); +}, "~N,~N,~B,~B"); +Clazz_defineMethod(c$, "releaseBuffers", +function(){ +this.windowWidth = this.windowHeight = this.bufferWidth = this.bufferHeight = this.bufferSize = -1; +if (this.bufferedImage != null) { +this.apiPlatform.flushImage(this.bufferedImage); +this.bufferedImage = null; +}this.pBuffer = null; +this.zBuffer = null; +this.pBufferT = null; +this.zBufferT = null; +}); +Clazz_defineMethod(c$, "hasContent", +function(){ +for (var i = this.bufferSize; --i >= 0; ) if (this.zBuffer[i] != 2147483647) return true; + +return false; +}); +Clazz_defineMethod(c$, "clearScreenBuffer", +function(){ +for (var i = this.bufferSize; --i >= 0; ) { +this.zBuffer[i] = 2147483647; +this.pBuffer[i] = 0; +} +}); +Clazz_defineMethod(c$, "setBackgroundColor", +function(bgColor){ +if (this.pBuffer == null) return; +for (var i = this.bufferSize; --i >= 0; ) if (this.pBuffer[i] == 0) this.pBuffer[i] = bgColor; + +}, "~N"); +Clazz_defineMethod(c$, "clearTBuffer", +function(){ +for (var i = this.bufferSizeT; --i >= 0; ) { +this.zBufferT[i] = 2147483647; +this.pBufferT[i] = 0; +} +}); +Clazz_defineMethod(c$, "clearBuffer", +function(){ +this.clearScreenBuffer(); +}); +Clazz_defineMethod(c$, "clearScreenBufferThreaded", +function(){ +}); +Clazz_defineMethod(c$, "notifyEndOfRendering", +function(){ +this.apiPlatform.notifyEndOfRendering(); +}); +Clazz_defineMethod(c$, "getGraphicsForTextOrImage", +function(width, height){ +if (width > this.widthOffscreen || height > this.heightOffscreen) { +if (this.offscreenImage != null) { +this.apiPlatform.disposeGraphics(this.graphicsForTextOrImage); +this.apiPlatform.flushImage(this.offscreenImage); +}if (width > this.widthOffscreen) this.widthOffscreen = width; +if (height > this.heightOffscreen) this.heightOffscreen = height; +this.offscreenImage = this.allocateOffscreenImage(this.widthOffscreen, this.heightOffscreen); +this.graphicsForTextOrImage = this.apiPlatform.getStaticGraphics(this.offscreenImage, J.g3d.Platform3D.backgroundTransparent); +}return this.graphicsForTextOrImage; +}, "~N,~N"); +Clazz_defineMethod(c$, "allocateOffscreenImage", +function(width, height){ +return this.apiPlatform.newOffScreenImage(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "setBackgroundTransparent", +function(tf){ +J.g3d.Platform3D.backgroundTransparent = tf; +}, "~B"); +c$.backgroundTransparent = false; +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.a = 0; +this.b = 0; +this.isOrthographic = false; +Clazz_instantialize(this, arguments);}, J.g3d, "PrecisionRenderer", null); +Clazz_defineMethod(c$, "getZCurrent", +function(a, b, x){ +return Math.round(a == 1.4E-45 ? b : this.isOrthographic ? a * x + b : a / (b - x)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setRastABFloat", +function(xa, za, xb, zb){ +var zdif = (zb - za); +var xdif = (xb - xa); +if (zdif == 0 || xdif == 0) { +this.a = 1.4E-45; +this.b = za; +return; +}if (this.isOrthographic) { +this.a = zdif / xdif; +this.b = za - this.a * xa; +} else { +this.a = xdif * za * (zb / zdif); +this.b = (xb * zb - xa * za) / zdif; +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setRastAB", +function(xa, za, xb, zb){ +var zdif = (zb - za); +var xdif = (xb - xa); +if (xa == 1.4E-45 || zdif == 0 || xdif == 0) { +this.a = 1.4E-45; +this.b = zb; +return; +}if (this.isOrthographic) { +this.a = zdif / xdif; +this.b = za - this.a * xa; +} else { +this.a = xdif * za * (zb / zdif); +this.b = (xb * zb - xa * za) / zdif; +}}, "~N,~N,~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["JU.P3"], "J.g3d.SphereRenderer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.shader = null; +this.zroot = null; +this.mat = null; +this.coef = null; +this.mDeriv = null; +this.selectedOctant = 0; +this.planeShade = 0; +this.zbuf = null; +this.width = 0; +this.height = 0; +this.depth = 0; +this.slab = 0; +this.offsetPbufBeginLine = 0; +this.ptTemp = null; +this.planeShades = null; +this.dxyz = null; +Clazz_instantialize(this, arguments);}, J.g3d, "SphereRenderer", null); +Clazz_prepareFields (c$, function(){ +this.zroot = Clazz_newDoubleArray (2, 0); +this.ptTemp = new JU.P3(); +this.planeShades = Clazz_newIntArray (3, 0); +this.dxyz = Clazz_newFloatArray (3, 3, 0); +}); +Clazz_makeConstructor(c$, +function(g3d){ +this.g3d = g3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "render", +function(shades, diameter, x, y, z, mat, coef, mDeriv, selectedOctant, octantPoints){ +if (z == 1) return; +if (diameter > 49) diameter &= -2; +if (this.g3d.isClippedXY(diameter, x, y)) return; +this.slab = this.g3d.slab; +this.depth = this.g3d.depth; +var radius = (diameter + 1) >> 1; +var minZ = z - radius; +if (z + radius < this.slab || minZ > this.depth) return; +var minX = x - radius; +var maxX = x + radius; +var minY = y - radius; +var maxY = y + radius; +this.shader.nOut = this.shader.nIn = 0; +this.zbuf = this.g3d.zbuf; +this.height = this.g3d.height; +this.width = this.g3d.width; +this.offsetPbufBeginLine = this.width * y + x; +var sh = this.shader; +this.mat = mat; +if (mat != null) { +this.coef = coef; +this.mDeriv = mDeriv; +this.selectedOctant = selectedOctant; +if (sh.ellipsoidShades == null) sh.createEllipsoidShades(); +if (octantPoints != null) { +this.planeShade = -1; +for (var i = 0; i < 3; i++) { +var dx = this.dxyz[i][0] = octantPoints[i].x - x; +var dy = this.dxyz[i][1] = octantPoints[i].y - y; +var dz = this.dxyz[i][2] = octantPoints[i].z - z; +this.planeShades[i] = sh.getShadeIndex(dx, dy, -dz); +if (dx == 0 && dy == 0) { +this.planeShade = this.planeShades[i]; +break; +}} +}}if (mat != null || diameter > 128) { +this.renderQuadrant(-1, -1, x, y, z, diameter, shades); +this.renderQuadrant(-1, 1, x, y, z, diameter, shades); +this.renderQuadrant(1, -1, x, y, z, diameter, shades); +this.renderQuadrant(1, 1, x, y, z, diameter, shades); +if (mat != null) { +this.mat = null; +this.coef = null; +this.mDeriv = null; +}} else { +var ss = sh.sphereShapeCache[diameter - 1]; +if (ss == null) { +var countSE = 0; +var d = (diameter & 1) != 0; +var radiusF = diameter / 2.0; +var radiusF2 = radiusF * radiusF; +radius = Clazz_doubleToInt((diameter + 1) / 2); +var ys = d ? 0 : 0.5; +for (var i = 0; i < radius; ++i, ++ys) { +var y2 = ys * ys; +var xs = d ? 0 : 0.5; +for (var j = 0; j < radius; ++j, ++xs) { +var x2 = xs * xs; +var z2 = radiusF2 - y2 - x2; +if (z2 >= 0) ++countSE; +} +} +ss = Clazz_newIntArray (countSE, 0); +var offset = 0; +ys = d ? 0 : 0.5; +for (var i = 0; i < radius; ++i, ++ys) { +var y2 = ys * ys; +var xs = d ? 0 : 0.5; +for (var j = 0; j < radius; ++j, ++xs) { +var x2 = xs * xs; +var z2 = radiusF2 - y2 - x2; +if (z2 >= 0) { +var zs = Math.sqrt(z2); +var height = Clazz_floatToInt(zs); +var shadeIndexSE = sh.getShadeN(xs, ys, zs, radiusF); +var shadeIndexSW = sh.getShadeN(-xs, ys, zs, radiusF); +var shadeIndexNE = sh.getShadeN(xs, -ys, zs, radiusF); +var shadeIndexNW = sh.getShadeN(-xs, -ys, zs, radiusF); +var packed = (height | (shadeIndexSE << 7) | (shadeIndexSW << 13) | (shadeIndexNE << 19) | (shadeIndexNW << 25)); +ss[offset++] = packed; +}} +ss[offset - 1] |= 0x80000000; +} +sh.sphereShapeCache[diameter - 1] = ss; +}if (minX < 0 || maxX >= this.width || minY < 0 || maxY >= this.height || minZ < this.slab || z > this.depth) this.renderSphereClipped(ss, x, y, z, diameter, shades); + else this.renderSphereUnclipped(ss, z, diameter, shades); +}this.zbuf = null; +}, "~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A"); +Clazz_defineMethod(c$, "renderSphereUnclipped", +function(sphereShape, z, diameter, shades){ +var offsetSphere = 0; +var evenSizeCorrection = 1 - (diameter & 1); +var offsetSouthCenter = this.offsetPbufBeginLine; +var offsetNorthCenter = offsetSouthCenter - evenSizeCorrection * this.width; +var nLines = Clazz_doubleToInt((diameter + 1) / 2); +var zbuf = this.zbuf; +var width = this.width; +var p = this.g3d.pixel; +do { +var offsetSE = offsetSouthCenter; +var offsetSW = offsetSouthCenter - evenSizeCorrection; +var offsetNE = offsetNorthCenter; +var offsetNW = offsetNorthCenter - evenSizeCorrection; +var packed; +do { +packed = sphereShape[offsetSphere++]; +var zPixel = z - (packed & 0x7F); +if (zPixel < zbuf[offsetSE]) p.addPixel(offsetSE, zPixel, shades[((packed >> 7) & 0x3F)]); +if (zPixel < zbuf[offsetSW]) p.addPixel(offsetSW, zPixel, shades[((packed >> 13) & 0x3F)]); +if (zPixel < zbuf[offsetNE]) p.addPixel(offsetNE, zPixel, shades[((packed >> 19) & 0x3F)]); +if (zPixel < zbuf[offsetNW]) p.addPixel(offsetNW, zPixel, shades[((packed >> 25) & 0x3F)]); +++offsetSE; +--offsetSW; +++offsetNE; +--offsetNW; +} while (packed >= 0); +offsetSouthCenter += width; +offsetNorthCenter -= width; +} while (--nLines > 0); +}, "~A,~N,~N,~A"); +Clazz_defineMethod(c$, "renderSphereClipped", +function(sphereShape, x, y, z, diameter, shades){ +var w = this.width; +var h = this.height; +var offsetSphere = 0; +var evenSizeCorrection = 1 - (diameter & 1); +var offsetSouthCenter = this.offsetPbufBeginLine; +var offsetNorthCenter = offsetSouthCenter - evenSizeCorrection * w; +var nLines = Clazz_doubleToInt((diameter + 1) / 2); +var ySouth = y; +var yNorth = y - evenSizeCorrection; +var randu = (x << 16) + (y << 1) ^ 0x33333333; +var sh = shades; +var zb = this.zbuf; +var p = this.g3d.pixel; +var sl = this.slab; +var de = this.depth; +do { +var tSouthVisible = ySouth >= 0 && ySouth < h; +var tNorthVisible = yNorth >= 0 && yNorth < h; +var offsetSE = offsetSouthCenter; +var offsetSW = offsetSouthCenter - evenSizeCorrection; +var offsetNE = offsetNorthCenter; +var offsetNW = offsetNorthCenter - evenSizeCorrection; +var packed; +var xEast = x; +var xWest = x - evenSizeCorrection; +do { +var tWestVisible = xWest >= 0 && xWest < w; +var tEastVisible = xEast >= 0 && xEast < w; +packed = sphereShape[offsetSphere++]; +var isCore; +var zOffset = packed & 0x7F; +var zPixel; +if (z < sl) { +zPixel = z + zOffset; +isCore = (zPixel >= sl); +} else { +zPixel = z - zOffset; +isCore = (zPixel < sl); +}if (isCore) zPixel = sl; +if (zPixel >= sl && zPixel <= de) { +if (tSouthVisible) { +if (tEastVisible && zPixel < zb[offsetSE]) { +var i = (isCore ? 44 + ((randu >> 7) & 0x07) : (packed >> 7) & 0x3F); +p.addPixel(offsetSE, zPixel, sh[i]); +}if (tWestVisible && zPixel < zb[offsetSW]) { +var i = (isCore ? 44 + ((randu >> 13) & 0x07) : (packed >> 13) & 0x3F); +p.addPixel(offsetSW, zPixel, sh[i]); +}}if (tNorthVisible) { +if (tEastVisible && zPixel < zb[offsetNE]) { +var i = (isCore ? 44 + ((randu >> 19) & 0x07) : (packed >> 19) & 0x3F); +p.addPixel(offsetNE, zPixel, sh[i]); +}if (tWestVisible && zPixel < zb[offsetNW]) { +var i = (isCore ? 44 + ((randu >> 25) & 0x07) : (packed >> 25) & 0x3F); +p.addPixel(offsetNW, zPixel, sh[i]); +}}}++offsetSE; +--offsetSW; +++offsetNE; +--offsetNW; +++xEast; +--xWest; +if (isCore) randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +} while (packed >= 0); +offsetSouthCenter += w; +offsetNorthCenter -= w; +++ySouth; +--yNorth; +} while (--nLines > 0); +}, "~A,~N,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "renderQuadrant", +function(xSign, ySign, x, y, z, diameter, shades){ +var radius = Clazz_doubleToInt(diameter / 2); +var t = x + radius * xSign; +var xStatus = (x < 0 ? -1 : x < this.width ? 0 : 1) + (t < 0 ? -2 : t < this.width ? 0 : 2); +if (xStatus == -3 || xStatus == 3) return; +t = y + radius * ySign; +var yStatus = (y < 0 ? -1 : y < this.height ? 0 : 1) + (t < 0 ? -2 : t < this.height ? 0 : 2); +if (yStatus == -3 || yStatus == 3) return; +var unclipped = (this.mat == null && xStatus == 0 && yStatus == 0 && z - radius >= this.slab && z <= this.depth); +if (unclipped) this.renderQuadrantUnclipped(radius, xSign, ySign, z, shades); + else this.renderQuadrantClipped(radius, xSign, ySign, x, y, z, shades); +}, "~N,~N,~N,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "renderQuadrantUnclipped", +function(radius, xSign, ySign, z, s){ +var r2 = radius * radius; +var dDivisor = radius * 2 + 1; +var lineIncrement = (ySign < 0 ? -this.width : this.width); +var ptLine = this.offsetPbufBeginLine; +var zb = this.zbuf; +var p = this.g3d.pixel; +var indexes = this.shader.sphereShadeIndexes; +for (var i = 0, i2 = 0; i2 <= r2; i2 += i + (++i), ptLine += lineIncrement) { +var offset = ptLine; +var s2 = r2 - i2; +var z0 = z - radius; +var y8 = Clazz_doubleToInt(((i * ySign + radius) << 8) / dDivisor); +for (var j = 0, j2 = 0; j2 <= s2; j2 += j + (++j), offset += xSign) { +if (zb[offset] <= z0) continue; +var k = Clazz_doubleToInt(Math.sqrt(s2 - j2)); +z0 = z - k; +if (zb[offset] <= z0) continue; +var x8 = Clazz_doubleToInt(((j * xSign + radius) << 8) / dDivisor); +p.addPixel(offset, z0, s[indexes[((y8 << 8) + x8)]]); +} +} +}, "~N,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "renderQuadrantClipped", +function(radius, xSign, ySign, x, y, z, shades){ +var isEllipsoid = (this.mat != null); +var checkOctant = (this.selectedOctant >= 0); +var r2 = radius * radius; +var dDivisor = radius * 2 + 1; +var lineIncrement = (ySign < 0 ? -this.width : this.width); +var ptLine = this.offsetPbufBeginLine; +var randu = (x << 16) + (y << 1) ^ 0x33333333; +var y8 = 0; +var iShade = 0; +var p = this.g3d.pixel; +var z1 = 0; +var h = this.height; +var w = this.width; +var x0 = x; +var zb = this.zbuf; +var xyz = this.dxyz; +var y0 = y; +var z0 = z; +var sl = this.slab; +var de = this.depth; +var pt = this.ptTemp; +var c = this.coef; +var rt = this.zroot; +var oct = this.selectedOctant; +var s = this.shader; +var pl = this.planeShades; +var indexes = s.sphereShadeIndexes; +var ps = this.planeShade; +var m = this.mat; +for (var i = 0, i2 = 0, yC = y; i2 <= r2; i2 += i + (++i), ptLine += lineIncrement, yC += ySign) { +if (yC < 0) { +if (ySign < 0) return; +continue; +}if (yC >= h) { +if (ySign > 0) return; +continue; +}var s2 = r2 - (isEllipsoid ? 0 : i2); +if (!isEllipsoid) { +y8 = Clazz_doubleToInt(((i * ySign + radius) << 8) / dDivisor); +}randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +var xC = x0; +for (var j = 0, j2 = 0, iRoot = -1, mode = 1, offset = ptLine; j2 <= s2; j2 += j + (++j), offset += xSign, xC += xSign) { +if (xC < 0) { +if (xSign < 0) break; +continue; +}if (xC >= w) { +if (xSign > 0) break; +continue; +}var zPixel; +if (isEllipsoid) { +var b_2a = (c[4] * xC + c[5] * yC + c[8]) / c[2] / 2; +var c_a = (c[0] * xC * xC + c[1] * yC * yC + c[3] * xC * yC + c[6] * xC + c[7] * yC - 1) / c[2]; +var f = b_2a * b_2a - c_a; +if (f < 0) { +if (iRoot >= 0) { +break; +}continue; +}f = Math.sqrt(f); +rt[0] = (-b_2a - f); +rt[1] = (-b_2a + f); +iRoot = (z0 < sl ? 1 : 0); +if ((zPixel = Clazz_doubleToInt(rt[iRoot])) == 0) zPixel = z0; +mode = 2; +z1 = zPixel; +if (checkOctant) { +pt.set(xC - x0, yC - y0, zPixel - z0); +m.rotate(pt); +var thisOctant = 0; +if (pt.x < 0) thisOctant |= 1; +if (pt.y < 0) thisOctant |= 2; +if (pt.z < 0) thisOctant |= 4; +if (thisOctant == oct) { +if (ps >= 0) { +iShade = ps; +} else { +var iMin = 3; +var dz; +var zMin = 3.4028235E38; +for (var ii = 0; ii < 3; ii++) { +if ((dz = xyz[ii][2]) == 0) continue; +var ptz = z0 + (-xyz[ii][0] * (xC - x) - xyz[ii][1] * (yC - y0)) / dz; +if (ptz < zMin) { +zMin = ptz; +iMin = ii; +}} +if (iMin == 3) { +iMin = 0; +zMin = z0; +}rt[0] = zMin; +iShade = pl[iMin]; +}zPixel = Clazz_doubleToInt(rt[0]); +mode = 3; +}var isCore = (z0 < sl ? zPixel >= sl : zPixel < sl); +if (isCore) { +z1 = zPixel = sl; +mode = 0; +}}if (zPixel < sl || zPixel > de || zb[offset] <= z1) continue; +} else { +var zOffset = Clazz_doubleToInt(Math.sqrt(s2 - j2)); +zPixel = z0 + (z0 < sl ? zOffset : -zOffset); +var isCore = (z0 < sl ? zPixel >= sl : zPixel < sl); +if (isCore) { +zPixel = sl; +mode = 0; +}if (zPixel < sl || zPixel > de || zb[offset] <= zPixel) continue; +}switch (mode) { +case 0: +iShade = (44 + ((randu >> 8) & 0x07)); +randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +mode = 1; +break; +case 2: +iShade = s.getEllipsoidShade(xC, yC, rt[iRoot], radius, this.mDeriv); +break; +case 3: +p.clearPixel(offset, z1); +break; +default: +var x8 = Clazz_doubleToInt(((j * xSign + radius) << 8) / dDivisor); +iShade = indexes[(y8 << 8) + x8]; +break; +} +p.addPixel(offset, zPixel, shades[iShade]); +} +randu = ((randu + xC + yC) | 1) & 0x7FFFFFFF; +} +}, "~N,~N,~N,~N,~N,~N,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["java.util.Hashtable"], "J.g3d.TextRenderer", ["JU.CU", "J.g3d.Graphics3D"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.height = 0; +this.ascent = 0; +this.width = 0; +this.mapWidth = 0; +this.size = 0; +this.tmap = null; +this.isInvalid = false; +Clazz_instantialize(this, arguments);}, J.g3d, "TextRenderer", null); +Clazz_makeConstructor(c$, +function(text, font3d){ +this.ascent = font3d.getAscent(); +this.height = font3d.getHeight(); +this.width = font3d.stringWidth(text); +if (this.width == 0) return; +this.mapWidth = this.width; +this.size = this.mapWidth * this.height; +}, "~S,JU.Font"); +c$.clearFontCache = Clazz_defineMethod(c$, "clearFontCache", +function(){ +if (J.g3d.TextRenderer.working) return; +J.g3d.TextRenderer.htFont3d.clear(); +J.g3d.TextRenderer.htFont3dAntialias.clear(); +}); +c$.plot = Clazz_defineMethod(c$, "plot", +function(x, y, z, argb, bgargb, text, font3d, g3d, jr, antialias){ +if (text.length == 0) return 0; +if (text.indexOf("= 0 || text.indexOf("= 0) return J.g3d.TextRenderer.plotByCharacter(x, y, z, argb, bgargb, text, font3d, g3d, jr, antialias); +var offset = font3d.getAscent(); +y -= offset; +var text3d = J.g3d.TextRenderer.getPlotText3D(x, y, g3d, text, font3d, antialias); +if (text3d.isInvalid) return text3d.width; +if (antialias) argb = J.g3d.Graphics3D.fixTextImageRGB(argb); +var textHeight = text3d.height; +var textWidth = text3d.width; +var tmap = text3d.tmap; +var g = g3d; +var width = g.width; +var height = g.height; +var zbuf = g.zbuf; +var p = g.pixel; +var tLog = g.translucencyLog; +if (jr != null || (x < 0 || x + text3d.width > width || y < 0 || y + text3d.height > height) && (jr = g3d) != null) { +for (var off = 0, i = 0; i < textHeight; i++) { +for (var j = 0; j < textWidth; j++) { +var shade = tmap[off++]; +if (shade != 0) jr.plotImagePixel(argb, x + j, y + i, z, shade, bgargb, width, height, zbuf, p, tLog); +} +} +} else { +for (var i = 0, off = 0, pbufOffset = y * width + x; i < textHeight; i++, pbufOffset += (width - textWidth)) for (var j = 0; j < textWidth; j++) p.addImagePixel(tmap[off++], tLog, pbufOffset++, z, argb, bgargb); + + +}return text3d.width; +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.g3d.Graphics3D,J.api.JmolRendererInterface,~B"); +c$.plotByCharacter = Clazz_defineMethod(c$, "plotByCharacter", +function(x, y, z, argb, bgargb, text, font3d, g3d, jmolRenderer, antialias){ +var w = 0; +var len = text.length; +var suboffset = Math.round(font3d.getHeight() * 0.25); +var supoffset = -Math.round(font3d.getHeight() * 0.3); +var argb0 = 0; +for (var i = 0; i < len; i++) { +if (text.charAt(i) == '<') { +if (i + 5 < len && text.substring(i, i + 6).equals("", i); +if (pt < 0) continue; +argb = JU.CU.getArgbFromString(text.substring(i + 7, pt).trim()); +i = pt; +continue; +}if (i + 7 < len && text.substring(i, i + 8).equals("")) { +i += 7; +argb = argb0; +continue; +}if (i + 4 < len && text.substring(i, i + 5).equals("")) { +i += 4; +y += suboffset; +continue; +}if (i + 4 < len && text.substring(i, i + 5).equals("")) { +i += 4; +y += supoffset; +continue; +}if (i + 5 < len && text.substring(i, i + 6).equals("")) { +i += 5; +y -= suboffset; +continue; +}if (i + 5 < len && text.substring(i, i + 6).equals("")) { +i += 5; +y -= supoffset; +continue; +}}var width = J.g3d.TextRenderer.plot(x + w, y, z, argb, bgargb, text.substring(i, i + 1), font3d, g3d, jmolRenderer, antialias); +w += width; +} +return w; +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.g3d.Graphics3D,J.api.JmolRendererInterface,~B"); +c$.getPlotText3D = Clazz_defineMethod(c$, "getPlotText3D", +function(x, y, g3d, text, font3d, antialias){ +J.g3d.TextRenderer.working = true; +var ht = (antialias ? J.g3d.TextRenderer.htFont3dAntialias : J.g3d.TextRenderer.htFont3d); +var htForThisFont = ht.get(font3d); +var text3d = null; +var newFont = false; +var newText = false; +if (htForThisFont != null) { +text3d = htForThisFont.get(text); +} else { +htForThisFont = new java.util.Hashtable(); +newFont = true; +}if (text3d == null) { +text3d = new J.g3d.TextRenderer(text, font3d); +newText = true; +}text3d.isInvalid = (text3d.width == 0 || x + text3d.width <= 0 || x >= g3d.width || y + text3d.height <= 0 || y >= g3d.height); +if (text3d.isInvalid) return text3d; +if (newFont) ht.put(font3d, htForThisFont); +if (newText) { +text3d.setTranslucency(text, font3d, g3d); +htForThisFont.put(text, text3d); +}J.g3d.TextRenderer.working = false; +return text3d; +}, "~N,~N,J.g3d.Graphics3D,~S,JU.Font,~B"); +Clazz_defineMethod(c$, "setTranslucency", +function(text, font3d, g3d){ +var pixels = g3d.apiPlatform.getTextPixels(text, font3d, g3d.platform.getGraphicsForTextOrImage(this.mapWidth, this.height), g3d.platform.offscreenImage, this.mapWidth, this.height, this.ascent); +if (pixels == null) return; +this.tmap = Clazz_newByteArray (this.size, 0); +for (var i = pixels.length; --i >= 0; ) { +var p = pixels[i] & 0xFF; +if (p != 0) { +this.tmap[i] = J.g3d.TextRenderer.translucency[p >> 5]; +}} +}, "~S,JU.Font,J.g3d.Graphics3D"); +c$.translucency = Clazz_newByteArray(-1, [7, 6, 5, 4, 3, 2, 1, 8]); +c$.working = false; +c$.htFont3d = new java.util.Hashtable(); +c$.htFont3dAntialias = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["JU.P3i"], "J.g3d.TextString", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.text = null; +this.font = null; +this.argb = 0; +this.bgargb = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "TextString", JU.P3i, java.util.Comparator); +Clazz_defineMethod(c$, "setText", +function(text, font, argb, bgargb, x, y, z){ +this.text = text; +this.font = font; +this.argb = argb; +this.bgargb = bgargb; +this.x = x; +this.y = y; +this.z = z; +}, "~S,JU.Font,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "compare", +function(a, b){ +return (a == null || b == null ? 0 : a.z > b.z ? -1 : a.z < b.z ? 1 : 0); +}, "J.g3d.TextString,J.g3d.TextString"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.asString() + " " + this.text; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.G3DRenderer", "$.PrecisionRenderer", "JU.Rgb16"], "J.g3d.TriangleRenderer", ["JU.GData"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.ax = null; +this.ay = null; +this.az = null; +this.aa = null; +this.bb = null; +this.axW = null; +this.azW = null; +this.axE = null; +this.azE = null; +this.rgb16sW = null; +this.rgb16sE = null; +this.rgb16sGouraud = null; +this.rgb16t1 = null; +this.rgb16t2 = null; +Clazz_instantialize(this, arguments);}, J.g3d, "TriangleRenderer", J.g3d.PrecisionRenderer, J.g3d.G3DRenderer); +Clazz_prepareFields (c$, function(){ +this.ax = Clazz_newIntArray (3, 0); +this.ay = Clazz_newIntArray (3, 0); +this.az = Clazz_newIntArray (3, 0); +this.aa = Clazz_newFloatArray (64, 0); +this.bb = Clazz_newFloatArray (64, 0); +this.axW = Clazz_newIntArray (64, 0); +this.azW = Clazz_newIntArray (64, 0); +this.axE = Clazz_newIntArray (64, 0); +this.azE = Clazz_newIntArray (64, 0); +this.rgb16t1 = new JU.Rgb16(); +this.rgb16t2 = new JU.Rgb16(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.g3d.TriangleRenderer, []); +}); +Clazz_overrideMethod(c$, "set", +function(g3d, gdata){ +try { +this.rgb16sW = new Array(64); +this.rgb16sE = new Array(64); +for (var i = 64; --i >= 0; ) { +this.rgb16sW[i] = new JU.Rgb16(); +this.rgb16sE[i] = new JU.Rgb16(); +} +this.g3d = g3d; +this.rgb16sGouraud = new Array(3); +for (var i = 3; --i >= 0; ) this.rgb16sGouraud[i] = new JU.Rgb16(); + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return this; +}, "J.api.JmolRendererInterface,JU.GData"); +Clazz_defineMethod(c$, "reallocRgb16s", +function(rgb16s, n){ +var t = new Array(n); +System.arraycopy(rgb16s, 0, t, 0, rgb16s.length); +for (var i = rgb16s.length; i < n; ++i) t[i] = new JU.Rgb16(); + +return t; +}, "~A,~N"); +Clazz_defineMethod(c$, "setGouraud", +function(rgbA, rgbB, rgbC){ +this.rgb16sGouraud[0].setInt(rgbA); +this.rgb16sGouraud[1].setInt(rgbB); +this.rgb16sGouraud[2].setInt(rgbC); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "fillTriangle", +function(screenA, screenB, screenC, useGouraud){ +this.ax[0] = screenA.x; +this.ax[1] = screenB.x; +this.ax[2] = screenC.x; +this.ay[0] = screenA.y; +this.ay[1] = screenB.y; +this.ay[2] = screenC.y; +this.az[0] = screenA.z; +this.az[1] = screenB.z; +this.az[2] = screenC.z; +if (this.az[0] <= 1 || this.az[1] <= 1 || this.az[2] <= 1) return; +var cc0 = this.g3d.clipCode3(this.ax[0], this.ay[0], this.az[0]); +var cc1 = this.g3d.clipCode3(this.ax[1], this.ay[1], this.az[1]); +var cc2 = this.g3d.clipCode3(this.ax[2], this.ay[2], this.az[2]); +var c = (cc0 | cc1 | cc2); +var isClipped = (c != 0); +if (isClipped) { +if (c == -1 || (cc0 & cc1 & cc2) != 0) { +return; +}}var iMinY = 0; +if (this.ay[1] < this.ay[iMinY]) iMinY = 1; +if (this.ay[2] < this.ay[iMinY]) iMinY = 2; +var iMidY = (iMinY + 1) % 3; +var iMaxY = (iMinY + 2) % 3; +if (this.ay[iMidY] > this.ay[iMaxY]) { +var t = iMidY; +iMidY = iMaxY; +iMaxY = t; +}var yMin = this.ay[iMinY]; +var yMid = this.ay[iMidY]; +var yMax = this.ay[iMaxY]; +var nLines = yMax - yMin + 1; +if (nLines > this.g3d.height * 3) return; +if (nLines > this.axW.length) { +var n = (nLines + 31) & -32; +this.axW = Clazz_newIntArray (n, 0); +this.azW = Clazz_newIntArray (n, 0); +this.axE = Clazz_newIntArray (n, 0); +this.azE = Clazz_newIntArray (n, 0); +this.aa = Clazz_newFloatArray (n, 0); +this.bb = Clazz_newFloatArray (n, 0); +this.rgb16sW = this.reallocRgb16s(this.rgb16sW, n); +this.rgb16sE = this.reallocRgb16s(this.rgb16sE, n); +}var gouraudW; +var gouraudE; +if (useGouraud) { +gouraudW = this.rgb16sW; +gouraudE = this.rgb16sE; +} else { +gouraudW = gouraudE = null; +}var dyMidMin = yMid - yMin; +if (dyMidMin == 0) { +if (this.ax[iMidY] < this.ax[iMinY]) { +var t = iMidY; +iMidY = iMinY; +iMinY = t; +}this.generateRaster(nLines, iMinY, iMaxY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines, iMidY, iMaxY, this.axE, this.azE, 0, gouraudE); +} else if (yMid == yMax) { +if (this.ax[iMaxY] < this.ax[iMidY]) { +var t = iMidY; +iMidY = iMaxY; +iMaxY = t; +}this.generateRaster(nLines, iMinY, iMidY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines, iMinY, iMaxY, this.axE, this.azE, 0, gouraudE); +} else { +var dxMaxMin = this.ax[iMaxY] - this.ax[iMinY]; +var roundFactor; +roundFactor = JU.GData.roundInt(Clazz_doubleToInt(nLines / 2)); +if (dxMaxMin < 0) roundFactor = -roundFactor; +var axSplit = this.ax[iMinY] + Clazz_doubleToInt((dxMaxMin * dyMidMin + roundFactor) / nLines); +if (axSplit < this.ax[iMidY]) { +this.generateRaster(nLines, iMinY, iMaxY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(dyMidMin + 1, iMinY, iMidY, this.axE, this.azE, 0, gouraudE); +this.generateRaster(nLines - dyMidMin, iMidY, iMaxY, this.axE, this.azE, dyMidMin, gouraudE); +} else { +this.generateRaster(dyMidMin + 1, iMinY, iMidY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines - dyMidMin, iMidY, iMaxY, this.axW, this.azW, dyMidMin, gouraudW); +this.generateRaster(nLines, iMinY, iMaxY, this.axE, this.azE, 0, gouraudE); +}}this.g3d.setZMargin(5); +var pass2Row = this.g3d.pass2Flag01; +var pass2Off = 1 - pass2Row; +var xW; +var i = 0; +if (yMin < 0) { +nLines += yMin; +i -= yMin; +yMin = 0; +}if (yMin + nLines > this.g3d.height) nLines = this.g3d.height - yMin; +if (useGouraud) { +if (isClipped) { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pixelCount > 0) this.g3d.plotPixelsClippedRaster(pixelCount, xW, yMin, this.azW[i], this.azE[i], this.rgb16sW[i], this.rgb16sE[i]); +} +} else { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pass2Row == 1 && pixelCount < 0) { +pixelCount = 1; +xW--; +}if (pixelCount > 0) this.g3d.plotPixelsUnclippedRaster(pixelCount, xW, yMin, this.azW[i], this.azE[i], this.rgb16sW[i], this.rgb16sE[i]); +} +}} else { +if (isClipped) { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pixelCount > 0) this.g3d.plotPixelsClippedRasterBits(pixelCount, xW, yMin, this.azW[i], this.azE[i], null, null, this.aa[i], this.bb[i]); +} +} else { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pass2Row == 1 && pixelCount < 0) { +pixelCount = 1; +xW--; +}if (pixelCount > 0) this.g3d.plotPixelsUnclippedRasterBits(pixelCount, xW, yMin, null, null, this.aa[i], this.bb[i]); +} +}}this.g3d.setZMargin(0); +}, "JU.P3i,JU.P3i,JU.P3i,~B"); +Clazz_defineMethod(c$, "generateRaster", +function(dy, iN, iS, axRaster, azRaster, iRaster, gouraud){ +var xN = this.ax[iN]; +var xS = this.ax[iS]; +var dx = xS - xN; +var xCurrent = xN; +var xIncrement; +var width; +var errorTerm; +if (dx >= 0) { +xIncrement = 1; +width = dx; +errorTerm = 0; +} else { +xIncrement = -1; +width = -dx; +errorTerm = 1 - dy; +}var xMajorIncrement; +var xMajorError; +if (width <= dy) { +xMajorIncrement = 0; +xMajorError = width; +} else { +xMajorIncrement = JU.GData.roundInt(Clazz_doubleToInt(dx / dy)); +xMajorError = width % dy; +}this.setRastAB(this.ay[iN], this.az[iN], this.ay[iS], this.az[iS]); +var a0 = this.a; +var b0 = this.b; +var isEast = (axRaster === this.axE); +for (var y = 0, zy = this.ay[iN], lastY = dy - 1, i = iRaster; y <= lastY; ++i, ++y, ++zy) { +if (i == 0 || i > iRaster) { +axRaster[i] = (y == lastY ? this.ax[iS] : xCurrent); +azRaster[i] = this.getZCurrent(a0, b0, zy); +if (isEast) { +this.setRastAB(this.axW[i], this.azW[i], axRaster[i], azRaster[i]); +this.aa[i] = this.a; +this.bb[i] = this.b; +}}xCurrent += xMajorIncrement; +errorTerm += xMajorError; +if (errorTerm > 0) { +xCurrent += xIncrement; +errorTerm -= dy; +}} +if (gouraud != null) { +var rgb16Base = this.rgb16t1; +rgb16Base.setRgb(this.rgb16sGouraud[iN]); +var rgb16Increment = this.rgb16t2; +rgb16Increment.diffDiv(this.rgb16sGouraud[iS], rgb16Base, dy); +for (var i = iRaster, iMax = iRaster + dy; i < iMax; ++i) gouraud[i].setAndIncrement(rgb16Base, rgb16Increment); + +}}, "~N,~N,~N,~A,~A,~N,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.i18n"); +Clazz_load(["J.api.Translator", "java.text.MessageFormat", "java.util.Hashtable", "JU.PT", "J.i18n.Language", "$.Resource"], "J.i18n.GT", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.resources = null; +this.resourceCount = 0; +this.doTranslate = true; +this.language = null; +Clazz_instantialize(this, arguments);}, J.i18n, "GT", null, J.api.Translator); +/*LV!1824 unnec constructor*/Clazz_makeConstructor(c$, +function(vr, langCode){ +{ +}this.resources = null; +this.resourceCount = 0; +J.i18n.GT.$getTextWrapper = this; +if (langCode != null && langCode.length == 0) langCode = "none"; +if (langCode != null) this.language = langCode; +if ("none".equals(this.language)) this.language = null; +if (this.language == null) this.language = J.i18n.Resource.getLanguage(); +if (this.language == null) this.language = "en"; +var la = this.language; +var la_co = null; +var la_co_va = null; +var i = this.language.indexOf("_"); +if (i >= 0) { +la = la.substring(0, i); +la_co = this.language; +if ((i = la_co.indexOf("_", ++i)) >= 0) { +la_co = la_co.substring(0, i); +la_co_va = this.language; +}}if ((this.language = this.getSupported(la_co_va)) == null && (this.language = this.getSupported(la_co)) == null && (this.language = this.getSupported(la)) == null) { +this.language = "en"; +System.out.println(this.language + " not supported -- using en"); +return; +}la_co_va = null; +la_co = null; +switch (this.language.length) { +default: +la_co_va = this.language; +la_co = this.language.substring(0, 5); +la = this.language.substring(0, 2); +break; +case 5: +la_co = this.language; +la = this.language.substring(0, 2); +break; +case 2: +la = this.language; +break; +} +la_co = this.getSupported(la_co); +la = this.getSupported(la); +if (la === la_co || "en_US".equals(la)) la = null; +if (la_co === la_co_va) la_co = null; +if ("en_US".equals(la_co)) return; +if (J.i18n.GT.allowDebug && JU.Logger.debugging) JU.Logger.debug("Instantiating gettext wrapper for " + this.language + " using files for language:" + la + " country:" + la_co + " variant:" + la_co_va); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", la_co_va, null, null); +this.addBundles(vr, "JmolApplet", la_co_va, null, null); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", null, la_co, null); +this.addBundles(vr, "JmolApplet", null, la_co, null); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", null, null, la); +this.addBundles(vr, "JmolApplet", null, null, la); +}, "JV.Viewer,~S"); +Clazz_overrideMethod(c$, "translate", +function(s){ +return J.i18n.GT.$(s); +}, "~S"); +c$.getLanguageList = Clazz_defineMethod(c$, "getLanguageList", +function(gt){ +if (J.i18n.GT.languageList == null) { +if (gt == null) gt = J.i18n.GT.getTextWrapper(); +gt.createLanguageList(); +}return J.i18n.GT.languageList; +}, "J.i18n.GT"); +c$.getLanguage = Clazz_defineMethod(c$, "getLanguage", +function(){ +return J.i18n.GT.getTextWrapper().language; +}); +c$.ignoreApplicationBundle = Clazz_defineMethod(c$, "ignoreApplicationBundle", +function(){ +J.i18n.GT.$ignoreApplicationBundle = true; +}); +c$.setDoTranslate = Clazz_defineMethod(c$, "setDoTranslate", +function(TF){ +var b = J.i18n.GT.getDoTranslate(); +J.i18n.GT.getTextWrapper().doTranslate = TF; +return b; +}, "~B"); +c$.getDoTranslate = Clazz_defineMethod(c$, "getDoTranslate", +function(){ +return J.i18n.GT.getTextWrapper().doTranslate; +}); +c$.$ = Clazz_defineMethod(c$, "$", +function(string){ +return J.i18n.GT.getTextWrapper().getString(string); +}, "~S"); +c$.o = Clazz_defineMethod(c$, "o", +function(s, o){ +if (Clazz_instanceOf(o,Array)) { +if ((o).length != 1) return java.text.MessageFormat.format(s, o); +o = (o)[0]; +}return JU.PT.rep(s, "{0}", o.toString()); +}, "~S,~O"); +c$.i = Clazz_defineMethod(c$, "i", +function(s, n){ +return JU.PT.rep(s, "{0}", "" + n); +}, "~S,~N"); +c$.escapeHTML = Clazz_defineMethod(c$, "escapeHTML", +function(msg){ +var ch; +for (var i = msg.length; --i >= 0; ) if ((ch = msg.charAt(i)).charCodeAt(0) > 0x7F) { +msg = msg.substring(0, i) + "&#" + ((ch).charCodeAt(0)) + ";" + msg.substring(i + 1); +} +return msg; +}, "~S"); +c$.getTextWrapper = Clazz_defineMethod(c$, "getTextWrapper", +function(){ +return (J.i18n.GT.$getTextWrapper == null ? J.i18n.GT.$getTextWrapper = new J.i18n.GT(null, null) : J.i18n.GT.$getTextWrapper); +}); +Clazz_defineMethod(c$, "createLanguageList", +function(){ +var wasTranslating = this.doTranslate; +this.doTranslate = false; +J.i18n.GT.languageList = J.i18n.Language.getLanguageList(); +this.doTranslate = wasTranslating; +}); +Clazz_defineMethod(c$, "getSupported", +function(code){ +if (code == null) return null; +var s = J.i18n.GT.htLanguages.get(code); +if (s != null) return (s.length == 0 ? null : s); +s = J.i18n.Language.getSupported(J.i18n.GT.getLanguageList(this), code); +J.i18n.GT.htLanguages.put(code, (s == null ? "" : s)); +return s; +}, "~S"); +Clazz_defineMethod(c$, "addBundles", +function(vwr, type, la_co_va, la_co, la){ +try { +var className = "J.translation." + type + "."; +if (la_co_va != null) this.addBundle(vwr, className, la_co_va); +if (la_co != null) this.addBundle(vwr, className, la_co); +if (la != null) this.addBundle(vwr, className, la); +} catch (exception) { +if (Clazz_exceptionOf(exception, Exception)){ +if (J.i18n.GT.allowDebug) JU.Logger.errorEx("Some exception occurred!", exception); +this.resources = null; +this.resourceCount = 0; +} else { +throw exception; +} +} +}, "JV.Viewer,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "addBundle", +function(vwr, className, name){ +var resource = J.i18n.Resource.getResource(vwr, className, name); +if (resource != null) { +if (this.resources == null) { +this.resources = new Array(8); +this.resourceCount = 0; +}this.resources[this.resourceCount] = resource; +this.resourceCount++; +if (J.i18n.GT.allowDebug) JU.Logger.debug("GT adding " + className); +}}, "JV.Viewer,~S,~S"); +Clazz_defineMethod(c$, "getString", +function(s){ +var trans = null; +if (this.doTranslate) { +for (var bundle = 0; bundle < this.resourceCount; bundle++) { +trans = this.resources[bundle].getString(s); +if (trans != null) { +s = trans; +break; +}} +if (this.resourceCount > 0 && trans == null && J.i18n.GT.allowDebug && JU.Logger.debugging) JU.Logger.debug("No trans, using default: " + s); +}if (trans == null) { +if (s.startsWith("[")) s = s.substring(s.indexOf("]") + 1); + else if (s.endsWith("]")) s = s.substring(0, s.indexOf("[")); +}return s; +}, "~S"); +c$.$ignoreApplicationBundle = false; +c$.$getTextWrapper = null; +c$.languageList = null; +c$.allowDebug = false; +c$.vwr = null; +c$.htLanguages = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.i18n"); +Clazz_load(null, "J.i18n.Language", ["J.i18n.GT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.code = null; +this.language = null; +this.nativeLanguage = null; +this.display = false; +Clazz_instantialize(this, arguments);}, J.i18n, "Language", null); +Clazz_makeConstructor(c$, +function(code, language, nativeLanguage, display){ +this.code = code; +this.language = language; +this.nativeLanguage = nativeLanguage; +this.display = display; +}, "~S,~S,~S,~B"); +c$.getLanguageList = Clazz_defineMethod(c$, "getLanguageList", +function(){ +return Clazz_newArray(-1, [ new J.i18n.Language("ar", J.i18n.GT.$("Arabic"), "العربية", false), new J.i18n.Language("ast", J.i18n.GT.$("Asturian"), "Asturian", false), new J.i18n.Language("az", J.i18n.GT.$("Azerbaijani"), "azÉ™rbaycan dili", false), new J.i18n.Language("bs", J.i18n.GT.$("Bosnian"), "bosanski jezik", false), new J.i18n.Language("ca", J.i18n.GT.$("Catalan"), "Català", true), new J.i18n.Language("cs", J.i18n.GT.$("Czech"), "ÄŒeÅ¡tina", true), new J.i18n.Language("da", J.i18n.GT.$("Danish"), "Dansk", true), new J.i18n.Language("de", J.i18n.GT.$("German"), "Deutsch", true), new J.i18n.Language("el", J.i18n.GT.$("Greek"), "Ελληνικά", false), new J.i18n.Language("en_AU", J.i18n.GT.$("Australian English"), "Australian English", false), new J.i18n.Language("en_GB", J.i18n.GT.$("British English"), "British English", true), new J.i18n.Language("en_US", J.i18n.GT.$("American English"), "American English", true), new J.i18n.Language("es", J.i18n.GT.$("Spanish"), "Español", true), new J.i18n.Language("et", J.i18n.GT.$("Estonian"), "Eesti", false), new J.i18n.Language("eu", J.i18n.GT.$("Basque"), "Euskara", true), new J.i18n.Language("fi", J.i18n.GT.$("Finnish"), "Suomi", true), new J.i18n.Language("fo", J.i18n.GT.$("Faroese"), "Føroyskt", false), new J.i18n.Language("fr", J.i18n.GT.$("French"), "Français", true), new J.i18n.Language("fy", J.i18n.GT.$("Frisian"), "Frysk", false), new J.i18n.Language("gl", J.i18n.GT.$("Galician"), "Galego", false), new J.i18n.Language("hr", J.i18n.GT.$("Croatian"), "Hrvatski", false), new J.i18n.Language("hu", J.i18n.GT.$("Hungarian"), "Magyar", true), new J.i18n.Language("hy", J.i18n.GT.$("Armenian"), "Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶", false), new J.i18n.Language("id", J.i18n.GT.$("Indonesian"), "Indonesia", true), new J.i18n.Language("it", J.i18n.GT.$("Italian"), "Italiano", true), new J.i18n.Language("ja", J.i18n.GT.$("Japanese"), "日本語", true), new J.i18n.Language("jv", J.i18n.GT.$("Javanese"), "Basa Jawa", false), new J.i18n.Language("ko", J.i18n.GT.$("Korean"), "한국어", true), new J.i18n.Language("ms", J.i18n.GT.$("Malay"), "Bahasa Melayu", true), new J.i18n.Language("nb", J.i18n.GT.$("Norwegian Bokmal"), "Norsk BokmÃ¥l", false), new J.i18n.Language("nl", J.i18n.GT.$("Dutch"), "Nederlands", true), new J.i18n.Language("oc", J.i18n.GT.$("Occitan"), "Occitan", false), new J.i18n.Language("pl", J.i18n.GT.$("Polish"), "Polski", false), new J.i18n.Language("pt", J.i18n.GT.$("Portuguese"), "Português", false), new J.i18n.Language("pt_BR", J.i18n.GT.$("Brazilian Portuguese"), "Português brasileiro", true), new J.i18n.Language("ru", J.i18n.GT.$("Russian"), "РуÑÑкий", true), new J.i18n.Language("sl", J.i18n.GT.$("Slovenian"), "SlovenÅ¡Äina", false), new J.i18n.Language("sr", J.i18n.GT.$("Serbian"), "ÑрпÑки језик", false), new J.i18n.Language("sv", J.i18n.GT.$("Swedish"), "Svenska", true), new J.i18n.Language("ta", J.i18n.GT.$("Tamil"), "தமிழà¯", false), new J.i18n.Language("te", J.i18n.GT.$("Telugu"), "తెలà±à°—à±", false), new J.i18n.Language("tr", J.i18n.GT.$("Turkish"), "Türkçe", true), new J.i18n.Language("ug", J.i18n.GT.$("Uyghur"), "UyÆ£urqÉ™", false), new J.i18n.Language("uk", J.i18n.GT.$("Ukrainian"), "УкраїнÑька", true), new J.i18n.Language("uz", J.i18n.GT.$("Uzbek"), "O'zbek", false), new J.i18n.Language("zh_CN", J.i18n.GT.$("Simplified Chinese"), "简体中文", true), new J.i18n.Language("zh_TW", J.i18n.GT.$("Traditional Chinese"), "ç¹é«”中文", true)]); +}); +c$.getSupported = Clazz_defineMethod(c$, "getSupported", +function(list, code){ +for (var i = list.length; --i >= 0; ) if (list[i].code.equalsIgnoreCase(code)) return list[i].code; + +for (var i = list.length; --i >= 0; ) if (list[i].code.startsWith(code)) return list[i].code; + +return null; +}, "~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.i18n"); +Clazz_load(null, "J.i18n.Resource", ["java.util.Hashtable", "JU.PT", "$.Rdr", "J.translation.PO", "JU.Logger", "JV.FileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.resource = null; +this.resourceMap = null; +Clazz_instantialize(this, arguments);}, J.i18n, "Resource", null); +Clazz_makeConstructor(c$, +function(resource, className){ +if (className == null) this.resourceMap = resource; + else this.resource = resource; +}, "~O,~S"); +c$.getResource = Clazz_defineMethod(c$, "getResource", +function(vwr, className, name){ +try { +var br = JV.FileManager.getBufferedReaderForResource(vwr, new J.translation.PO(), "J/translation/", (className.indexOf("Applet") >= 0 ? "JmolApplet/" : "Jmol/") + name + ".po"); +var data = new Array(1); +JU.Rdr.readAllAsString(br, 2147483647, false, data, 0); +var poData = data[0]; +return J.i18n.Resource.getResourceFromPO(poData); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +return null; +} else { +throw e; +} +} +}, "JV.Viewer,~S,~S"); +Clazz_defineMethod(c$, "getString", +function(string){ +try { +return (this.resource == null ? this.resourceMap.get(string) : this.resource.getString(string)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +c$.getLanguage = Clazz_defineMethod(c$, "getLanguage", +function(){ +var language = null; +{ +language = Jmol.featureDetection.getDefaultLanguage().replace(/-/g,'_'); +}return language; +}); +c$.getResourceFromPO = Clazz_defineMethod(c$, "getResourceFromPO", +function(data){ +if (data == null || data.length == 0) return null; +var map = new java.util.Hashtable(); +try { +var lines = JU.PT.split(data, "\n"); +var mode = 0; +var msgstr = ""; +var msgid = ""; +for (var i = 0; i < lines.length; i++) { +var line = lines[i]; +if (line.length <= 2) { +if (mode == 2 && msgstr.length != 0 && msgid.length != 0) map.put(msgid, msgstr); +mode = 0; +} else if (line.indexOf("msgid") == 0) { +mode = 1; +msgid = J.i18n.Resource.fix(line); +} else if (line.indexOf("msgstr") == 0) { +mode = 2; +msgstr = J.i18n.Resource.fix(line); +} else if (mode == 1) { +msgid += J.i18n.Resource.fix(line); +} else if (mode == 2) { +msgstr += J.i18n.Resource.fix(line); +}} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +JU.Logger.info(map.size() + " translations loaded"); +return (map.size() == 0 ? null : new J.i18n.Resource(map, null)); +}, "~S"); +c$.fix = Clazz_defineMethod(c$, "fix", +function(line){ +if (line.indexOf("\\\"") >= 0) line = JU.PT.rep(line, "\\\"", "\""); +return JU.PT.rep(line.substring(line.indexOf("\"") + 1, line.lastIndexOf("\"")), "\\n", "\n"); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.io"); +Clazz_load(null, "J.io.FileReader", ["java.io.BufferedReader", "JU.AU", "$.PT", "$.Rdr", "J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.fileNameIn = null; +this.fullPathNameIn = null; +this.nameAsGivenIn = null; +this.fileTypeIn = null; +this.atomSetCollection = null; +this.readerOrDocument = null; +this.htParams = null; +this.isAppend = false; +this.bytesOrStream = null; +Clazz_instantialize(this, arguments);}, J.io, "FileReader", null); +Clazz_makeConstructor(c$, +function(vwr, fileName, fullPathName, nameAsGiven, type, reader, htParams, isAppend){ +this.vwr = vwr; +this.fileNameIn = (fileName == null ? fullPathName : fileName); +this.fullPathNameIn = (fullPathName == null ? this.fileNameIn : fullPathName); +this.nameAsGivenIn = (nameAsGiven == null ? this.fileNameIn : nameAsGiven); +this.fileTypeIn = type; +if (reader != null) { +if (JU.AU.isAB(reader) || Clazz_instanceOf(reader,"java.io.BufferedInputStream")) { +this.bytesOrStream = reader; +reader = null; +} else if (Clazz_instanceOf(reader,"java.io.Reader") && !(Clazz_instanceOf(reader,"java.io.BufferedReader"))) { +reader = new java.io.BufferedReader(reader); +}}this.readerOrDocument = reader; +this.htParams = htParams; +this.isAppend = isAppend; +}, "JV.Viewer,~S,~S,~S,~S,~O,java.util.Map,~B"); +Clazz_defineMethod(c$, "run", +function(){ +if (!this.isAppend && this.vwr.displayLoadErrors) this.vwr.zap(false, true, false); +var errorMessage = null; +var t = null; +if (this.fullPathNameIn.contains("#_DOCACHE_")) this.readerOrDocument = J.io.FileReader.getChangeableReader(this.vwr, this.nameAsGivenIn, this.fullPathNameIn); +if (this.readerOrDocument == null) { +t = this.vwr.fm.getUnzippedReaderOrStreamFromName(this.fullPathNameIn, this.bytesOrStream, true, false, false, true, this.htParams); +if (t == null || (typeof(t)=='string')) { +errorMessage = (t == null ? "error opening:" + this.nameAsGivenIn : t); +if (!errorMessage.startsWith("NOTE:")) JU.Logger.error("file ERROR: " + this.fullPathNameIn + "\n" + errorMessage); +this.atomSetCollection = errorMessage; +return; +}if (Clazz_instanceOf(t,"java.io.BufferedReader")) { +this.readerOrDocument = t; +} else if (Clazz_instanceOf(t,"javajs.api.ZInputStream")) { +var name = this.fullPathNameIn; +var subFileList = null; +name = name.$replace('\\', '/'); +if (name.indexOf("|") >= 0 && !name.endsWith(".zip")) { +subFileList = JU.PT.split(name, "|"); +name = subFileList[0]; +}if (subFileList != null) this.htParams.put("subFileList", subFileList); +var zis = t; +var zipDirectory = this.vwr.fm.getZipDirectory(name, true, true); +this.atomSetCollection = t = this.vwr.fm.getJzu().getAtomSetCollectionOrBufferedReaderFromZip(this.vwr, zis, name, zipDirectory, this.htParams, 1, false); +try { +zis.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}if (Clazz_instanceOf(t,"java.io.BufferedInputStream")) this.readerOrDocument = (J.api.Interface.getInterface("JU.BinaryDocument", this.vwr, "file")).setStream(t, !this.htParams.containsKey("isLittleEndian")); +if (this.readerOrDocument != null) { +this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollectionReader(this.fullPathNameIn, this.fileTypeIn, this.readerOrDocument, this.htParams); +if (!((typeof(this.atomSetCollection)=='string'))) this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollection(this.atomSetCollection); +try { +if (Clazz_instanceOf(this.readerOrDocument,"java.io.BufferedReader")) (this.readerOrDocument).close(); + else if (Clazz_instanceOf(this.readerOrDocument,"javajs.api.GenericBinaryDocument")) (this.readerOrDocument).close(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}if ((typeof(this.atomSetCollection)=='string')) return; +if (!this.isAppend && !this.vwr.displayLoadErrors) this.vwr.zap(false, true, false); +this.vwr.fm.setFileInfo( Clazz_newArray(-1, [this.fullPathNameIn, this.fileNameIn, this.nameAsGivenIn])); +}); +c$.getChangeableReader = Clazz_defineMethod(c$, "getChangeableReader", +function(vwr, nameAsGivenIn, fullPathNameIn){ +return JU.Rdr.getBR(vwr.getLigandModel(nameAsGivenIn, fullPathNameIn, "_file", null)); +}, "JV.Viewer,~S,~S"); +Clazz_defineMethod(c$, "getAtomSetCollection", +function(){ +return this.atomSetCollection; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.ShapeRenderer"], "J.render.BallsRenderer", ["J.shape.Shape"], function(){ +var c$ = Clazz_declareType(J.render, "BallsRenderer", J.render.ShapeRenderer); +Clazz_overrideMethod(c$, "render", +function(){ +var needTranslucent = false; +if (this.isExport || this.vwr.checkMotionRendering(1153433601)) { +var atoms = this.ms.at; +var colixes = (this.shape).colixes; +var bsOK = this.vwr.shm.bsRenderableAtoms; +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (atom.sD > 0 && (atom.shapeVisibilityFlags & this.myVisibilityFlag) != 0) { +if (this.g3d.setC(colixes == null ? atom.colixAtom : J.shape.Shape.getColix(colixes, i, atom))) { +this.g3d.drawAtom(atom, 0); +} else { +needTranslucent = true; +}}} +}return needTranslucent; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.ShapeRenderer", "JU.P3", "$.P3i", "$.V3"], "J.render.FontLineShapeRenderer", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.colixA = 0; +this.colixB = 0; +this.dotsOrDashes = false; +this.dashDots = null; +this.asLineOnly = false; +this.imageFontScaling = 0; +this.tickA = null; +this.tickB = null; +this.tickAs = null; +this.tickBs = null; +this.font3d = null; +this.pt0i = null; +this.pt2i = null; +this.s1 = null; +this.s2 = null; +this.pointT = null; +this.pointT2 = null; +this.pointT3 = null; +this.vectorT = null; +this.vectorT2 = null; +this.vectorT3 = null; +this.tickInfo = null; +this.draw000 = true; +this.width = 0; +this.endcap = 3; +this.pt0 = null; +this.pt1 = null; +Clazz_instantialize(this, arguments);}, J.render, "FontLineShapeRenderer", J.render.ShapeRenderer); +Clazz_prepareFields (c$, function(){ +this.pt0i = new JU.P3i(); +this.pt2i = new JU.P3i(); +this.s1 = new JU.P3i(); +this.s2 = new JU.P3i(); +this.pointT = new JU.P3(); +this.pointT2 = new JU.P3(); +this.pointT3 = new JU.P3(); +this.vectorT = new JU.V3(); +this.vectorT2 = new JU.V3(); +this.vectorT3 = new JU.V3(); +this.pt0 = new JU.P3(); +this.pt1 = new JU.P3(); +}); +Clazz_defineMethod(c$, "getDiameter", +function(z, mad10OrPixels){ +var diameter; +var isMad10 = (mad10OrPixels > 20); +switch (this.exportType) { +case 1: +diameter = (isMad10 ? mad10OrPixels : Clazz_doubleToInt(Math.floor(this.vwr.tm.unscaleToScreen(z, mad10OrPixels * 2 / 10) * 1000))); +break; +default: +if (isMad10) { +diameter = Clazz_floatToInt(this.vwr.tm.scaleToScreen(z, Clazz_doubleToInt(mad10OrPixels / 10))); +} else { +if (this.g3d.isAntialiased()) mad10OrPixels += mad10OrPixels; +diameter = mad10OrPixels; +}} +return diameter; +}, "~N,~N"); +Clazz_defineMethod(c$, "renderLine", +function(p0, p1, diameter, drawTicks){ +if (diameter < 0) this.g3d.drawDashedLineBits(8, 4, p0, p1); + else this.g3d.fillCylinderBits(this.endcap, (this.exportType == 1 ? -diameter : diameter), p0, p1); +if (!drawTicks || this.tickInfo == null) return; +this.checkTickTemps(); +this.tickAs.setT(p0); +this.tickBs.setT(p1); +this.drawTicks(diameter, true); +}, "JU.P3,JU.P3,~N,~B"); +Clazz_defineMethod(c$, "checkTickTemps", +function(){ +if (this.tickA == null) { +this.tickA = new JU.P3(); +this.tickB = new JU.P3(); +this.tickAs = new JU.P3(); +this.tickBs = new JU.P3(); +}}); +Clazz_defineMethod(c$, "drawTicks", +function(diameter, withLabels){ +if (Float.isNaN(this.tickInfo.first)) this.tickInfo.first = 0; +this.drawTicks2(this.tickInfo.ticks.x, 8, diameter, (!withLabels ? null : this.tickInfo.tickLabelFormats == null ? Clazz_newArray(-1, ["%0.2f"]) : this.tickInfo.tickLabelFormats)); +this.drawTicks2(this.tickInfo.ticks.y, 4, diameter, null); +this.drawTicks2(this.tickInfo.ticks.z, 2, diameter, null); +}, "~N,~B"); +Clazz_defineMethod(c$, "drawTicks2", +function(dx, length, diameter, formats){ +if (dx == 0) return; +if (this.g3d.isAntialiased()) length *= 2; +this.vectorT2.set(this.tickBs.x, this.tickBs.y, 0); +this.vectorT.set(this.tickAs.x, this.tickAs.y, 0); +this.vectorT2.sub(this.vectorT); +if (this.vectorT2.length() < 50) return; +var signFactor = this.tickInfo.signFactor; +this.vectorT.sub2(this.tickB, this.tickA); +var d0 = this.vectorT.length(); +if (this.tickInfo.scale != null) { +if (Float.isNaN(this.tickInfo.scale.x)) { +var a = this.vwr.getUnitCellInfo(0); +if (!Float.isNaN(a)) this.vectorT.set(this.vectorT.x / a, this.vectorT.y / this.vwr.getUnitCellInfo(1), this.vectorT.z / this.vwr.getUnitCellInfo(2)); +} else { +this.vectorT.set(this.vectorT.x * this.tickInfo.scale.x, this.vectorT.y * this.tickInfo.scale.y, this.vectorT.z * this.tickInfo.scale.z); +}}var d = this.vectorT.length() + 0.0001 * dx; +if (d < dx) return; +var f = dx / d * d0 / d; +this.vectorT.scale(f); +var dz = (this.tickBs.z - this.tickAs.z) / (d / dx); +d += this.tickInfo.first; +var p = (Clazz_doubleToInt(Math.floor(this.tickInfo.first / dx))) * dx - this.tickInfo.first; +this.pointT.scaleAdd2(p / dx, this.vectorT, this.tickA); +p += this.tickInfo.first; +var z = this.tickAs.z; +if (diameter < 0) diameter = 1; +this.vectorT2.set(-this.vectorT2.y, this.vectorT2.x, 0); +this.vectorT2.scale(length / this.vectorT2.length()); +var ptRef = this.tickInfo.reference; +if (ptRef == null) { +this.pointT3.setT(this.vwr.getBoundBoxCenter()); +if (this.vwr.g.axesMode == 603979809) { +this.pointT3.add3(1, 1, 1); +}} else { +this.pointT3.setT(ptRef); +}this.tm.transformPtScr(this.pointT3, this.pt2i); +var horizontal = (Math.abs(this.vectorT2.x / this.vectorT2.y) < 0.2); +var centerX = horizontal; +var centerY = !horizontal; +var rightJustify = !centerX && (this.vectorT2.x < 0); +var drawLabel = (formats != null && formats.length > 0); +var x; +var y; +var val = new Array(1); +var i = (this.draw000 ? 0 : -1); +while (p < d) { +if (p >= this.tickInfo.first) { +this.pointT2.setT(this.pointT); +this.tm.transformPt3f(this.pointT2, this.pointT2); +this.drawLine(Clazz_doubleToInt(Math.floor(this.pointT2.x)), Clazz_doubleToInt(Math.floor(this.pointT2.y)), Clazz_floatToInt(z), (x = Clazz_doubleToInt(Math.floor(this.pointT2.x + this.vectorT2.x))), (y = Clazz_doubleToInt(Math.floor(this.pointT2.y + this.vectorT2.y))), Clazz_floatToInt(z), diameter); +if (drawLabel && (this.draw000 || p != 0)) { +val[0] = Float.$valueOf((p == 0 ? 0 : p * signFactor)); +var s = JU.PT.sprintf(formats[i % formats.length], "f", val); +this.drawString(x, y, Clazz_floatToInt(z), 4, rightJustify, centerX, centerY, Clazz_doubleToInt(Math.floor(this.pointT2.y)), s); +}}this.pointT.add(this.vectorT); +p += dx; +z += dz; +i++; +} +}, "~N,~N,~N,~A"); +Clazz_defineMethod(c$, "drawLine", +function(x1, y1, z1, x2, y2, z2, diameter){ +return this.drawLine2(this.g3d, x1, y1, z1, x2, y2, z2, diameter); +}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawLine2", +function(g3d, x1, y1, z1, x2, y2, z2, diameter){ +this.pt0.set(x1, y1, z1); +this.pt1.set(x2, y2, z2); +if (!this.dotsOrDashes) { +if (diameter < 0) { +g3d.drawDashedLineBits(8, 4, this.pt0, this.pt1); +return 1; +}g3d.fillCylinderBits(2, diameter, this.pt0, this.pt1); +} else if (this.dashDots != null) { +var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +J.render.FontLineShapeRenderer.drawDashedCylinder(g3d, x1, y1, z1, x2, y2, z2, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); +}return Clazz_doubleToInt((diameter + 1) / 2); +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawString", +function(x, y, z, radius, rightJustify, centerX, centerY, yRef, sVal){ +if (sVal == null) return; +var width = this.font3d.stringWidth(sVal); +var height = this.font3d.getAscent(); +var xT = x; +if (rightJustify) xT -= Clazz_doubleToInt(radius / 2) + 2 + width; + else if (centerX) xT -= Clazz_doubleToInt(radius / 2) + 2 + Clazz_doubleToInt(width / 2); + else xT += Clazz_doubleToInt(radius / 2) + 2; +var yT = y; +if (centerY) yT += Clazz_doubleToInt(height / 2); + else if (yRef == 0 || yRef < y) yT += height; + else yT -= Clazz_doubleToInt(radius / 2); +var zT = z - radius - 2; +if (zT < 1) zT = 1; +this.g3d.drawString(sVal, this.font3d, xT, yT, zT, zT, 0); +}, "~N,~N,~N,~N,~B,~B,~B,~N,~S"); +c$.drawDashedCylinder = Clazz_defineMethod(c$, "drawDashedCylinder", +function(g3d, xA, yA, zA, xB, yB, zB, array, width, colixA, colixB, renderD, asLineOnly, s1){ +if (array == null || width < 0) return; +var f = array[0]; +var dx = xB - xA; +var dy = yB - yA; +var dz = zB - zA; +var n = 0; +var isNdots = (array === J.render.FontLineShapeRenderer.ndots); +var isDots = (isNdots || array === J.render.FontLineShapeRenderer.sixdots); +if (isDots) { +if (s1 == null) s1 = new JU.P3i(); +var d2 = (dx * dx + dy * dy) / (width * width); +if (isNdots) { +f = (Math.sqrt(d2) / 1.5); +n = Clazz_floatToInt(f) + 2; +} else if (d2 < 8) { +array = J.render.FontLineShapeRenderer.twodots; +} else if (d2 < 32) { +array = J.render.FontLineShapeRenderer.fourdots; +}}var ptS = array[1]; +var ptE = array[2]; +var colixS = colixA; +var colixE = (ptE == 0 ? colixB : colixA); +if (n == 0) n = array.length; +for (var i = 0, pt = 3; pt < n; pt++) { +i = (isNdots ? i + 1 : array[pt]); +var xS = Clazz_doubleToInt(Math.floor(xA + dx * i / f)); +var yS = Clazz_doubleToInt(Math.floor(yA + dy * i / f)); +var zS = Clazz_doubleToInt(Math.floor(zA + dz * i / f)); +if (isDots) { +s1.set(xS, yS, zS); +if (pt == ptS) g3d.setC(colixA); + else if (pt == ptE) g3d.setC(colixB); +g3d.fillSphereI(width, s1); +continue; +}if (pt == ptS) colixS = colixB; +i = array[++pt]; +if (pt == ptE) colixE = colixB; +var xE = Clazz_doubleToInt(Math.floor(xA + dx * i / f)); +var yE = Clazz_doubleToInt(Math.floor(yA + dy * i / f)); +var zE = Clazz_doubleToInt(Math.floor(zA + dz * i / f)); +J.render.FontLineShapeRenderer.fillCylinder(g3d, colixS, colixE, 2, xS, yS, zS, xE, yE, zE, renderD, asLineOnly); +} +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~A,~N,~N,~N,~N,~B,JU.P3i"); +c$.fillCylinder = Clazz_defineMethod(c$, "fillCylinder", +function(g3d, colixA, colixB, endcaps, xA, yA, zA, xB, yB, zB, diameter, asLineOnly){ +if (asLineOnly) g3d.drawLine(colixA, colixB, xA, yA, zA, xB, yB, zB); + else g3d.fillCylinderXYZ(colixA, colixB, endcaps, diameter, xA, yA, zA, xB, yB, zB); +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~B"); +c$.dashes = Clazz_newIntArray(-1, [12, 0, 0, 2, 5, 7, 10]); +c$.hDashes = Clazz_newIntArray(-1, [10, 7, 6, 1, 3, 4, 6, 7, 9]); +c$.ndots = Clazz_newIntArray(-1, [0, 3, 1000]); +c$.sixdots = Clazz_newIntArray(-1, [12, 3, 6, 1, 3, 5, 7, 9, 11]); +c$.fourdots = Clazz_newIntArray(-1, [13, 3, 5, 2, 5, 8, 11]); +c$.twodots = Clazz_newIntArray(-1, [12, 3, 4, 3, 9]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.ShapeRenderer"], "J.render.FrankRenderer", ["J.shape.Frank", "JV.Viewer"], function(){ +var c$ = Clazz_declareType(J.render, "FrankRenderer", J.render.ShapeRenderer); +Clazz_overrideMethod(c$, "render", +function(){ +var frank = this.shape; +var allowKeys = this.vwr.getBooleanProperty("allowKeyStrokes"); +var modelKitMode = this.vwr.getBoolean(603983903); +this.colix = (modelKitMode ? 20 : this.vwr.isSignedApplet ? (allowKeys || (JV.Viewer.isJS || JV.Viewer.isSwingJS) && !this.vwr.isWebGL ? 5 : 10) : allowKeys ? 7 : 12); +if (this.isExport || !this.vwr.getShowFrank() || !this.g3d.setC(this.colix)) return false; +if (this.vwr.frankOn && !this.vwr.noFrankEcho) return this.vwr.noFrankEcho; +this.vwr.noFrankEcho = true; +var imageFontScaling = this.vwr.imageFontScaling; +frank.getFont(imageFontScaling); +var dx = Clazz_floatToInt(frank.frankWidth + 4 * imageFontScaling); +var dy = frank.frankDescent; +this.g3d.drawStringNoSlab(J.shape.Frank.frankString, frank.font3d, this.vwr.gdata.width - dx, this.vwr.gdata.height - dy, 0, 0); +var kit = (modelKitMode ? this.vwr.getModelkit(false) : null); +if (modelKitMode && !kit.isHidden()) { +this.g3d.setC(12); +var w = 10; +var h = 26; +this.g3d.fillTextRect(0, 0, 1, 0, w, h * 4); +var active = kit.getActiveMenu(); +if (active != null) { +if ("atomMenu".equals(active)) { +this.g3d.setC(21); +this.g3d.fillTextRect(0, 0, 0, 0, w, h); +} else if ("bondMenu".equals(active)) { +this.g3d.setC(7); +this.g3d.fillTextRect(0, h, 0, 0, w, h); +} else if ("xtalMenu".equals(active)) { +this.g3d.setC(8); +this.g3d.fillTextRect(0, h << 1, 0, 0, w, h); +}}}return false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.api.JmolRepaintManager", "JU.BS"], "J.render.RepaintManager", ["J.api.Interface", "JU.Logger", "JV.JC", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.shapeManager = null; +this.renderers = null; +this.bsTranslucent = null; +this.holdRepaint = 0; +this.repaintPending = false; +Clazz_instantialize(this, arguments);}, J.render, "RepaintManager", null, J.api.JmolRepaintManager); +Clazz_prepareFields (c$, function(){ +this.bsTranslucent = JU.BS.newN(37); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_overrideMethod(c$, "set", +function(vwr, shapeManager){ +this.vwr = vwr; +this.shapeManager = shapeManager; +}, "JV.Viewer,JV.ShapeManager"); +Clazz_overrideMethod(c$, "isRepaintPending", +function(){ +return this.repaintPending; +}); +Clazz_overrideMethod(c$, "pushHoldRepaint", +function(why){ +++this.holdRepaint; +}, "~S"); +Clazz_overrideMethod(c$, "popHoldRepaint", +function(andRepaint, why){ +if (why != null && why.startsWith("CLEAR HOLD")) { +this.holdRepaint = 0; +andRepaint = true; +}--this.holdRepaint; +if (this.holdRepaint <= 0) { +this.holdRepaint = 0; +if (andRepaint) { +this.repaintPending = true; +this.repaintNow(why); +}}}, "~B,~S"); +Clazz_overrideMethod(c$, "requestRepaintAndWait", +function(why){ +var jmol = null; +if (JV.Viewer.isJS && !JV.Viewer.isSwingJS) { +{ +jmol = (self.Jmol && Jmol.repaint ? Jmol : null) +}}if (jmol == null) { +try { +this.repaintNow(why); +if (!JV.Viewer.isJS) this.wait(this.vwr.g.repaintWaitMs); +if (this.repaintPending) { +JU.Logger.error("repaintManager requestRepaintAndWait timeout"); +this.repaintDone(); +}} catch (e) { +if (Clazz_exceptionOf(e,"InterruptedException")){ +System.out.println("repaintManager requestRepaintAndWait interrupted thread=" + Thread.currentThread().getName()); +} else { +throw e; +} +} +} else { +jmol.repaint(this.vwr.html5Applet, false); +this.repaintDone(); +}}, "~S"); +Clazz_overrideMethod(c$, "repaintIfReady", +function(why){ +if (this.repaintPending) return false; +this.repaintPending = true; +if (this.holdRepaint == 0) this.repaintNow(why); +return true; +}, "~S"); +Clazz_defineMethod(c$, "repaintNow", +function(why){ +if (!this.vwr.haveDisplay) return; +this.vwr.apiPlatform.repaint(this.vwr.display); +}, "~S"); +Clazz_overrideMethod(c$, "repaintDone", +function(){ +this.repaintPending = false; +{ +}}); +Clazz_overrideMethod(c$, "clear", +function(iShape){ +if (this.renderers == null) return; +if (iShape >= 0) this.renderers[iShape] = null; + else for (var i = 0; i < 37; ++i) this.renderers[i] = null; + +}, "~N"); +Clazz_defineMethod(c$, "getRenderer", +function(shapeID){ +if (this.renderers[shapeID] != null) return this.renderers[shapeID]; +var className = JV.JC.getShapeClassName(shapeID, true) + "Renderer"; +var renderer; +if ((renderer = J.api.Interface.getInterface(className, this.vwr, "render")) == null) return null; +renderer.setViewerG3dShapeID(this.vwr, shapeID); +return this.renderers[shapeID] = renderer; +}, "~N"); +Clazz_overrideMethod(c$, "render", +function(gdata, modelSet, isFirstPass, navMinMax){ +var g3d = gdata; +if (this.renderers == null) this.renderers = new Array(37); +this.getAllRenderers(); +try { +var logTime = this.vwr.getBoolean(603979934); +g3d.renderBackground(null); +if (isFirstPass) { +this.bsTranslucent.clearAll(); +if (navMinMax != null) g3d.renderCrossHairs(navMinMax, this.vwr.getScreenWidth(), this.vwr.getScreenHeight(), this.vwr.tm.getNavigationOffset(), this.vwr.tm.navigationDepthPercent); +var band = this.vwr.getRubberBandSelection(); +if (band != null && g3d.setC(this.vwr.cm.colixRubberband)) g3d.drawRect(band.x, band.y, 0, 0, band.width, band.height); +this.vwr.noFrankEcho = true; +}var msg = null; +for (var i = 0; i < 37 && gdata.currentlyRendering; ++i) { +var shape = this.shapeManager.getShape(i); +if (shape == null) continue; +if (logTime) { +msg = "rendering " + JV.JC.getShapeClassName(i, false); +JU.Logger.startTimer(msg); +}if ((isFirstPass || this.bsTranslucent.get(i)) && this.getRenderer(i).renderShape(g3d, modelSet, shape)) this.bsTranslucent.set(i); +if (logTime) JU.Logger.checkTimer(msg, false); +} +g3d.renderAllStrings(null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +if (this.vwr.async && "Interface".equals(e.getMessage())) throw new NullPointerException(); +JU.Logger.error("rendering error? " + e); +} else { +throw e; +} +} +}, "JU.GData,JM.ModelSet,~B,~A"); +Clazz_defineMethod(c$, "getAllRenderers", +function(){ +var isOK = true; +for (var i = 0; i < 37; ++i) { +if (this.shapeManager.getShape(i) == null || this.getRenderer(i) != null) continue; +isOK = this.repaintPending = !this.vwr.async; +} +if (!isOK) throw new NullPointerException(); +}); +Clazz_overrideMethod(c$, "renderExport", +function(gdata, modelSet, params){ +var isOK; +this.shapeManager.finalizeAtoms(null, true); +var exporter3D = this.vwr.initializeExporter(params); +isOK = (exporter3D != null); +if (!isOK) { +JU.Logger.error("Cannot export " + params.get("type")); +return null; +}if (this.renderers == null) this.renderers = new Array(37); +this.getAllRenderers(); +var msg = null; +try { +var logTime = this.vwr.getBoolean(603979934); +exporter3D.renderBackground(exporter3D); +for (var i = 0; i < 37; ++i) { +var shape = this.shapeManager.getShape(i); +if (shape == null) continue; +if (logTime) { +msg = "rendering " + JV.JC.getShapeClassName(i, false); +JU.Logger.startTimer(msg); +}this.getRenderer(i).renderShape(exporter3D, modelSet, shape); +if (logTime) JU.Logger.checkTimer(msg, false); +} +exporter3D.renderAllStrings(exporter3D); +msg = exporter3D.finalizeOutput(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +JU.Logger.error("rendering error? " + e); +} else { +throw e; +} +} +return msg; +}, "JU.GData,JM.ModelSet,java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(null, "J.render.ShapeRenderer", ["JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.tm = null; +this.g3d = null; +this.ms = null; +this.shape = null; +this.myVisibilityFlag = 0; +this.shapeID = 0; +this.colix = 0; +this.mad = 0; +this.exportType = 0; +this.isExport = false; +Clazz_instantialize(this, arguments);}, J.render, "ShapeRenderer", null); +Clazz_defineMethod(c$, "initRenderer", +function(){ +}); +Clazz_defineMethod(c$, "setViewerG3dShapeID", +function(vwr, shapeID){ +this.vwr = vwr; +this.tm = vwr.tm; +this.shapeID = shapeID; +this.myVisibilityFlag = JV.JC.getShapeVisibilityFlag(shapeID); +this.initRenderer(); +}, "JV.Viewer,~N"); +Clazz_defineMethod(c$, "renderShape", +function(g3d, modelSet, shape){ +this.setup(g3d, modelSet, shape); +var needsTranslucent = this.render(); +this.exportType = 0; +this.isExport = false; +return needsTranslucent; +}, "J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape"); +Clazz_defineMethod(c$, "setup", +function(g3d, modelSet, shape){ +this.g3d = g3d; +this.ms = modelSet; +this.shape = shape; +this.exportType = g3d.getExportType(); +this.isExport = (this.exportType != 0); +}, "J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape"); +Clazz_defineMethod(c$, "isVisibleForMe", +function(a){ +return a.isVisible(this.myVisibilityFlag | 9); +}, "JM.Atom"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.FontLineShapeRenderer", "JU.BS", "$.P3", "$.V3"], "J.render.SticksRenderer", ["JU.A4", "$.M3", "J.c.PAL", "JU.C", "$.Edge"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.showMultipleBonds = false; +this.multipleBondSpacing = 0; +this.multipleBondRadiusFactor = 0; +this.bondsPerp = false; +this.useBananas = false; +this.modeMultipleBond = 0; +this.isCartesian = false; +this.endcaps = 0; +this.ssbondsBackbone = false; +this.hbondsBackbone = false; +this.bondsBackbone = false; +this.hbondsSolid = false; +this.a = null; +this.b = null; +this.bond = null; +this.xA = 0; +this.yA = 0; +this.zA = 0; +this.xB = 0; +this.yB = 0; +this.zB = 0; +this.dx = 0; +this.dy = 0; +this.mag2d = 0; +this.bondOrder = 0; +this.wireframeOnly = false; +this.isAntialiased = false; +this.slabbing = false; +this.slabByAtom = false; +this.x = null; +this.y = null; +this.z = null; +this.p1 = null; +this.p2 = null; +this.bsForPass2 = null; +this.isPass2 = false; +this.xAxis1 = 0; +this.yAxis1 = 0; +this.xAxis2 = 0; +this.yAxis2 = 0; +this.dxStep = 0; +this.dyStep = 0; +this.rot = null; +this.a4 = null; +Clazz_instantialize(this, arguments);}, J.render, "SticksRenderer", J.render.FontLineShapeRenderer); +Clazz_prepareFields (c$, function(){ +this.x = new JU.V3(); +this.y = new JU.V3(); +this.z = new JU.V3(); +this.p1 = new JU.P3(); +this.p2 = new JU.P3(); +this.bsForPass2 = JU.BS.newN(64); +}); +Clazz_overrideMethod(c$, "render", +function(){ +var bonds = this.ms.bo; +if (bonds == null) return false; +this.isPass2 = this.vwr.gdata.isPass2; +if (!this.isPass2) this.bsForPass2.clearAll(); +this.slabbing = this.tm.slabEnabled; +this.slabByAtom = this.vwr.getBoolean(603979939); +this.endcaps = 3; +this.dashDots = (this.vwr.getBoolean(603979893) ? J.render.FontLineShapeRenderer.sixdots : J.render.FontLineShapeRenderer.dashes); +this.isCartesian = (this.exportType == 1); +this.getMultipleBondSettings(false); +this.wireframeOnly = !this.vwr.checkMotionRendering(1677721602); +this.ssbondsBackbone = this.vwr.getBoolean(603979952); +this.hbondsBackbone = this.vwr.getBoolean(603979852); +this.bondsBackbone = new Boolean (this.hbondsBackbone | this.ssbondsBackbone).valueOf(); +this.hbondsSolid = this.vwr.getBoolean(603979854); +this.isAntialiased = this.g3d.isAntialiased(); +var needTranslucent = false; +if (this.isPass2) { +if (!this.isExport) for (var i = this.bsForPass2.nextSetBit(0); i >= 0; i = this.bsForPass2.nextSetBit(i + 1)) { +this.bond = bonds[i]; +this.renderBond(); +} +} else { +for (var i = this.ms.bondCount; --i >= 0; ) { +this.bond = bonds[i]; +if ((this.bond.shapeVisibilityFlags & this.myVisibilityFlag) != 0 && this.renderBond()) { +needTranslucent = true; +this.bsForPass2.set(i); +}} +}return needTranslucent; +}); +Clazz_defineMethod(c$, "getMultipleBondSettings", +function(isPymol){ +this.useBananas = (this.vwr.getBoolean(603979886) && !isPymol); +this.multipleBondSpacing = (isPymol ? 0.15 : this.vwr.getFloat(570425370)); +this.multipleBondRadiusFactor = (isPymol ? 0.4 : this.vwr.getFloat(570425369)); +this.bondsPerp = (this.useBananas || this.multipleBondSpacing > 0 && this.multipleBondRadiusFactor < 0); +if (this.useBananas) this.multipleBondSpacing = (this.multipleBondSpacing < 0 ? -this.multipleBondSpacing * 0.4 : this.multipleBondSpacing); +this.multipleBondRadiusFactor = Math.abs(this.multipleBondRadiusFactor); +if (this.multipleBondSpacing == 0 && this.isCartesian) this.multipleBondSpacing = 0.2; +this.modeMultipleBond = this.vwr.g.modeMultipleBond; +this.showMultipleBonds = (this.multipleBondSpacing != 0 && this.modeMultipleBond != 0 && this.vwr.getBoolean(603979928)); +}, "~B"); +Clazz_defineMethod(c$, "renderBond", +function(){ +var atomA0; +var atomB0; +this.a = atomA0 = this.bond.atom1; +this.b = atomB0 = this.bond.atom2; +var order = this.bond.order & 131071; +if (this.bondsBackbone) { +if (this.ssbondsBackbone && (order & 256) != 0) { +this.a = this.a.group.getLeadAtomOr(this.a); +this.b = this.b.group.getLeadAtomOr(this.b); +} else if (this.hbondsBackbone && JU.Edge.isOrderH(order)) { +this.a = this.a.group.getLeadAtomOr(this.a); +this.b = this.b.group.getLeadAtomOr(this.b); +}}if (!this.isPass2 && (!this.a.isVisible(9) || !this.b.isVisible(9) || !this.g3d.isInDisplayRange(this.a.sX, this.a.sY) || !this.g3d.isInDisplayRange(this.b.sX, this.b.sY))) return false; +if (this.slabbing) { +var ba = this.vwr.gdata.isClippedZ(this.a.sZ); +if (ba && this.vwr.gdata.isClippedZ(this.b.sZ) || this.slabByAtom && (ba || this.vwr.gdata.isClippedZ(this.b.sZ))) return false; +}this.zA = this.a.sZ; +this.zB = this.b.sZ; +if (this.zA == 1 || this.zB == 1) return false; +this.colixA = atomA0.colixAtom; +this.colixB = atomB0.colixAtom; +if (((this.colix = this.bond.colix) & -30721) == 2) { +this.colix = (this.colix & 30720); +this.colixA = JU.C.getColixInherited((this.colix | this.vwr.cm.getColixAtomPalette(atomA0, J.c.PAL.CPK.id)), this.colixA); +this.colixB = JU.C.getColixInherited((this.colix | this.vwr.cm.getColixAtomPalette(atomB0, J.c.PAL.CPK.id)), this.colixB); +} else { +this.colixA = JU.C.getColixInherited(this.colix, this.colixA); +this.colixB = JU.C.getColixInherited(this.colix, this.colixB); +}var needTranslucent = false; +if (!this.isExport && !this.isPass2) { +var doA = !JU.C.renderPass2(this.colixA); +var doB = !JU.C.renderPass2(this.colixB); +if (!doA || !doB) { +if (!doA && !doB && !needTranslucent) { +this.g3d.setC(!doA ? this.colixA : this.colixB); +return true; +}needTranslucent = true; +}}this.bondOrder = order & 131071; +if ((this.bondOrder & 224) == 0) { +if ((this.bondOrder & 256) != 0) this.bondOrder &= -257; +if ((this.bondOrder & 1023) != 0) { +if (!this.showMultipleBonds || (this.modeMultipleBond == 2 && this.mad > 500) || (this.bondOrder & 98304) == 65536) { +this.bondOrder = 1; +}}}var mask = 0; +switch (this.bondOrder) { +case 1025: +case 1041: +case 1057: +this.bondOrder = 1; +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +break; +case 17: +case 513: +this.bondOrder = 1; +mask = (order == 513 ? 0 : 1); +break; +case 515: +case 514: +this.bondOrder = 2; +mask = (order == 515 ? this.getAromaticDottedBondMask() : 0); +break; +default: +if ((this.bondOrder & 224) != 0) { +this.bondOrder = JU.Edge.getPartialBondOrder(order); +mask = JU.Edge.getPartialBondDotted(order); +} else if (JU.Edge.isOrderH(this.bondOrder)) { +this.bondOrder = 1; +if (!this.hbondsSolid) mask = -1; +} else if (this.bondOrder == 32768) { +this.bondOrder = 1; +} else if ((this.bondOrder & 98304) == 98304) { +this.getMultipleBondSettings(true); +this.bondOrder &= 3; +mask = -2; +}} +this.xA = this.a.sX; +this.yA = this.a.sY; +this.xB = this.b.sX; +this.yB = this.b.sY; +this.mad = this.bond.mad; +if (this.multipleBondRadiusFactor > 0 && this.bondOrder > 1) this.mad *= this.multipleBondRadiusFactor; +this.dx = this.xB - this.xA; +this.dy = this.yB - this.yA; +this.width = Clazz_floatToInt(this.vwr.tm.scaleToScreen(Clazz_doubleToInt((this.zA + this.zB) / 2), this.mad)); +if (this.wireframeOnly && this.width > 0) this.width = 1; +if (!this.isCartesian) { +this.asLineOnly = (this.width <= 1); +if (this.asLineOnly && (this.isAntialiased)) { +this.width = 3; +this.asLineOnly = false; +}}var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +switch (mask) { +case -2: +this.drawBond(0); +this.getMultipleBondSettings(false); +break; +case -1: +J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, J.render.FontLineShapeRenderer.hDashes, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); +break; +default: +switch (this.bondOrder) { +case 4: +{ +this.bondOrder = 2; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz_doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.30; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.drawBond(mask >> 2); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +case 5: +{ +this.bondOrder = 3; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz_doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.20; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.multipleBondSpacing *= 1.5; +this.drawBond(mask >> 3); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +case 6: +{ +this.bondOrder = 4; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz_doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.15; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.multipleBondSpacing *= 1.5; +this.drawBond(mask >> 4); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +default: +this.drawBond(mask); +} +break; +} +return needTranslucent; +}); +Clazz_defineMethod(c$, "drawBond", +function(dottedMask){ +var isDashed = (dottedMask & 1) != 0; +var endcaps = ((this.colixA & 30720) == 16384 || (this.colixB & 30720) == 16384 ? 2 : this.endcaps); +if (this.isCartesian && this.bondOrder == 1 && !isDashed) { +this.g3d.drawBond(this.a, this.b, this.colixA, this.colixB, endcaps, this.mad, -1); +return; +}var isEndOn = (this.dx == 0 && this.dy == 0); +if (isEndOn && this.asLineOnly && !this.isCartesian) return; +var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +var doFixedSpacing = (this.bondOrder > 1 && this.multipleBondSpacing > 0); +var isPiBonded = doFixedSpacing && (this.vwr.getHybridizationAndAxes(this.a.i, this.z, this.x, "pz") != null || this.vwr.getHybridizationAndAxes(this.b.i, this.z, this.x, "pz") != null) && !Float.isNaN(this.x.x); +if (isEndOn && !doFixedSpacing) { +var space = Clazz_doubleToInt(this.width / 8) + 3; +var step = this.width + space; +var y = this.yA - Clazz_doubleToInt((this.bondOrder - 1) * step / 2); +do { +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xA, y, this.zA, this.xB, y, this.zB, renderD, this.asLineOnly); +y += step; +} while (--this.bondOrder > 0); +return; +}if (this.bondOrder == 1) { +if (isDashed) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, renderD, this.asLineOnly); +return; +}if (doFixedSpacing) { +if (!isPiBonded) this.z.setT(JU.P3.getUnlikely()); +this.x.sub2(this.b, this.a); +this.y.cross(this.x, this.z); +this.y.normalize(); +if (Float.isNaN(this.y.x)) { +this.z.setT(JU.P3.getUnlikely()); +this.y.cross(this.x, this.z); +this.y.cross(this.y, this.x); +this.y.normalize(); +}if (this.bondsPerp) this.y.cross(this.y, this.x); +this.y.scale(this.multipleBondSpacing); +this.x.setT(this.y); +this.x.scale((this.bondOrder - 1) / 2); +if (this.useBananas) { +this.drawBanana(this.a, this.b, this.x, 0); +switch (this.bondOrder) { +case 4: +this.drawBanana(this.a, this.b, this.x, 90); +this.drawBanana(this.a, this.b, this.x, -90); +case 2: +default: +this.drawBanana(this.a, this.b, this.x, 180); +break; +case 3: +this.drawBanana(this.a, this.b, this.x, 120); +this.drawBanana(this.a, this.b, this.x, -120); +break; +} +return; +}this.p1.sub2(this.a, this.x); +this.p2.sub2(this.b, this.x); +while (true) { +if (this.isCartesian) { +this.g3d.drawBond(this.p1, this.p2, this.colixA, this.colixB, endcaps, this.mad, -2); +} else { +this.tm.transformPtScr(this.p1, this.s1); +this.tm.transformPtScr(this.p2, this.s2); +if (isDashed) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.s1.x, this.s1.y, this.s1.z, this.s2.x, this.s2.y, this.s2.z, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.s1.x, this.s1.y, this.s1.z, this.s2.x, this.s2.y, this.s2.z, renderD, this.asLineOnly); +}dottedMask >>= 1; +isDashed = (dottedMask & 1) != 0; +if (--this.bondOrder <= 0) break; +this.p1.add(this.y); +this.p2.add(this.y); +this.stepAxisCoordinates(); +} +return; +}var dxB = this.dx * this.dx; +var dyB = this.dy * this.dy; +this.mag2d = Math.round(Math.sqrt(dxB + dyB)); +this.resetAxisCoordinates(); +if (this.isCartesian && this.bondOrder == 3) { +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +this.stepAxisCoordinates(); +this.x.sub2(this.b, this.a); +this.x.scale(0.05); +this.p1.sub2(this.a, this.x); +this.p2.add2(this.b, this.x); +this.g3d.drawBond(this.p1, this.p2, this.colixA, this.colixB, endcaps, this.mad, -2); +this.stepAxisCoordinates(); +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +return; +}while (true) { +if ((dottedMask & 1) != 0) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +dottedMask >>= 1; +if (--this.bondOrder <= 0) break; +this.stepAxisCoordinates(); +} +}, "~N"); +Clazz_defineMethod(c$, "resetAxisCoordinates", +function(){ +var space = this.mag2d >> 3; +if (this.multipleBondSpacing != -1 && this.multipleBondSpacing < 0) space *= -this.multipleBondSpacing; +var step = this.width + space; +this.dxStep = Clazz_doubleToInt(step * this.dy / this.mag2d); +this.dyStep = Clazz_doubleToInt(step * -this.dx / this.mag2d); +this.xAxis1 = this.xA; +this.yAxis1 = this.yA; +this.xAxis2 = this.xB; +this.yAxis2 = this.yB; +var f = (this.bondOrder - 1); +this.xAxis1 -= Clazz_doubleToInt(this.dxStep * f / 2); +this.yAxis1 -= Clazz_doubleToInt(this.dyStep * f / 2); +this.xAxis2 -= Clazz_doubleToInt(this.dxStep * f / 2); +this.yAxis2 -= Clazz_doubleToInt(this.dyStep * f / 2); +}); +Clazz_defineMethod(c$, "stepAxisCoordinates", +function(){ +this.xAxis1 += this.dxStep; +this.yAxis1 += this.dyStep; +this.xAxis2 += this.dxStep; +this.yAxis2 += this.dyStep; +}); +Clazz_defineMethod(c$, "getAromaticDottedBondMask", +function(){ +var atomC = this.b.findAromaticNeighbor(this.a.i); +if (atomC == null) return 1; +var dxAC = atomC.sX - this.xA; +var dyAC = atomC.sY - this.yA; +return ((this.dx * dyAC - this.dy * dxAC) < 0 ? 2 : 1); +}); +Clazz_defineMethod(c$, "drawBanana", +function(a, b, x, deg){ +this.g3d.addRenderer(553648143); +this.vectorT.sub2(b, a); +if (this.rot == null) { +this.rot = new JU.M3(); +this.a4 = new JU.A4(); +}this.a4.setVA(this.vectorT, (deg * 3.141592653589793 / 180)); +this.rot.setAA(this.a4); +this.pointT.setT(a); +this.pointT3.setT(b); +this.pointT2.ave(a, b); +this.rot.rotate2(x, this.vectorT); +this.pointT2.add(this.vectorT); +this.tm.transformPtScrT3(a, this.pointT); +this.tm.transformPtScrT3(this.pointT2, this.pointT2); +this.tm.transformPtScrT3(b, this.pointT3); +var w = Math.max(this.width, 1); +this.g3d.setC(this.colixA); +this.g3d.fillHermite(5, w, w, w, this.pointT, this.pointT, this.pointT2, this.pointT3); +this.g3d.setC(this.colixB); +this.g3d.fillHermite(5, w, w, w, this.pointT, this.pointT2, this.pointT3, this.pointT3); +}, "JM.Atom,JM.Atom,JU.V3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.T"], "JS.ContextToken", ["java.util.Hashtable", "JS.SV"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.contextVariables = null; +this.forVars = null; +this.name0 = null; +Clazz_instantialize(this, arguments);}, JS, "ContextToken", JS.T); +c$.newContext = Clazz_defineMethod(c$, "newContext", +function(isOpen){ +var ct = (isOpen ? JS.ContextToken.newCmd(1275335685, "{") : JS.ContextToken.newCmd(1275334681, "}")); +ct.intValue = 0; +return ct; +}, "~B"); +c$.newCmd = Clazz_defineMethod(c$, "newCmd", +function(tok, value){ +var ct = new JS.ContextToken(); +ct.tok = tok; +ct.value = value; +return ct; +}, "~N,~O"); +Clazz_defineMethod(c$, "addName", +function(name){ +if (this.contextVariables == null) this.contextVariables = new java.util.Hashtable(); +this.contextVariables.put(name, JS.SV.newS("").setName(name)); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ScriptContext", ["java.util.Hashtable", "JS.SV"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.aatoken = null; +this.allowJSThreads = false; +this.chk = false; +this.contextPath = " >> "; +this.vars = null; +this.displayLoadErrorsSave = false; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorType = null; +this.executionPaused = false; +this.executionStepping = false; +this.isEditor = false; +this.isEditorScript = false; +this.functionName = null; +this.iCommandError = -1; +this.id = 0; +this.isComplete = true; +this.isFunction = false; +this.isJSThread = false; +this.isStateScript = false; +this.isTryCatch = false; +this.forVars = null; +this.iToken = 0; +this.lineEnd = 2147483647; +this.lineIndices = null; +this.lineNumbers = null; +this.mustResumeEval = false; +this.outputBuffer = null; +this.parallelProcessor = null; +this.parentContext = null; +this.pc = 0; +this.pc0 = 0; +this.pcEnd = 2147483647; +this.script = null; +this.scriptExtensions = null; +this.scriptFileName = null; +this.scriptLevel = 0; +this.statement = null; +this.htFileCache = null; +this.statementLength = 0; +this.token = null; +this.tryPt = 0; +this.theToken = null; +this.theTok = 0; +this.pointers = null; +this.why = null; +this.privateFuncs = null; +Clazz_instantialize(this, arguments);}, JS, "ScriptContext", null); +Clazz_makeConstructor(c$, +function(){ +this.id = ++JS.ScriptContext.contextCount; +}); +Clazz_defineMethod(c$, "setMustResume", +function(){ +var sc = this; +while (sc != null) { +sc.mustResumeEval = true; +sc.pc = sc.pc0; +sc = sc.parentContext; +} +}); +Clazz_defineMethod(c$, "getVariable", +function($var){ +var context = this; +var v; +while (context != null && !context.isFunction) { +if (context.vars != null && (v = context.vars.get($var)) != null) return v; +context = context.parentContext; +} +return null; +}, "~S"); +Clazz_defineMethod(c$, "getFullMap", +function(){ +var ht = new java.util.Hashtable(); +var context = this; +if (this.contextPath != null) ht.put("_path", JS.SV.newS(this.contextPath)); +while (context != null && !context.isFunction) { +if (context.vars != null) for (var key, $key = context.vars.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (!ht.containsKey(key)) { +var val = context.vars.get(key); +if (val.tok != 2 || val.intValue != 2147483647) ht.put(key, val); +} +context = context.parentContext; +} +return ht; +}); +Clazz_defineMethod(c$, "saveTokens", +function(aa){ +this.aatoken = aa; +if (aa == null) { +this.pointers = null; +return; +}this.pointers = Clazz_newIntArray (aa.length, 0); +for (var i = this.pointers.length; --i >= 0; ) this.pointers[i] = (aa[i] == null ? -1 : aa[i][0].intValue); + +}, "~A"); +Clazz_defineMethod(c$, "restoreTokens", +function(){ +if (this.pointers != null) for (var i = this.pointers.length; --i >= 0; ) if (this.aatoken[i] != null) this.aatoken[i][0].intValue = this.pointers[i]; + +return this.aatoken; +}); +Clazz_defineMethod(c$, "getTokenCount", +function(){ +return (this.aatoken == null ? -1 : this.aatoken.length); +}); +Clazz_defineMethod(c$, "getToken", +function(i){ +return this.aatoken[i]; +}, "~N"); +c$.contextCount = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["java.lang.Exception"], "JS.ScriptException", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.eval = null; +this.message = null; +this.untranslated = null; +this.isError = false; +Clazz_instantialize(this, arguments);}, JS, "ScriptException", Exception); +Clazz_makeConstructor(c$, +function(se, msg, untranslated, isError){ +this.eval = se; +this.message = msg; +this.isError = isError; +if (!isError) return; +this.eval.setException(this, msg, untranslated); +}, "JS.ScriptError,~S,~S,~B"); +Clazz_defineMethod(c$, "getErrorMessageUntranslated", +function(){ +return this.untranslated; +}); +Clazz_overrideMethod(c$, "getMessage", +function(){ +return this.message; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.message; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["javajs.api.JSONEncodable", "JS.T", "JU.P3"], "JS.SV", ["java.util.Arrays", "$.Collections", "$.Hashtable", "JU.AU", "$.BArray", "$.BS", "$.Base64", "$.Lst", "$.Measure", "$.PT", "$.SB", "JM.BondSet", "JU.BSUtil", "$.Escape", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.index = 2147483647; +this.myName = null; +if (!Clazz_isClassDefined("JS.SV.Sort")) { +JS.SV.$SV$Sort$ (); +} +Clazz_instantialize(this, arguments);}, JS, "SV", JS.T, javajs.api.JSONEncodable); +c$.newV = Clazz_defineMethod(c$, "newV", +function(tok, value){ +var sv = new JS.SV(); +sv.tok = tok; +sv.value = value; +return sv; +}, "~N,~O"); +c$.newI = Clazz_defineMethod(c$, "newI", +function(i){ +var sv = new JS.SV(); +sv.tok = 2; +sv.intValue = i; +return sv; +}, "~N"); +c$.newF = Clazz_defineMethod(c$, "newF", +function(f){ +if (f != f) return JS.SV.vNaN; +var sv = new JS.SV(); +sv.tok = 3; +sv.value = Float.$valueOf(f); +return sv; +}, "~N"); +c$.newS = Clazz_defineMethod(c$, "newS", +function(s){ +return JS.SV.newV(4, s); +}, "~S"); +c$.newT = Clazz_defineMethod(c$, "newT", +function(x){ +return JS.SV.newSV(x.tok, x.intValue, x.value); +}, "JS.T"); +c$.newSV = Clazz_defineMethod(c$, "newSV", +function(tok, intValue, value){ +var sv = JS.SV.newV(tok, value); +sv.intValue = intValue; +return sv; +}, "~N,~N,~O"); +Clazz_defineMethod(c$, "setv", +function(v){ +this.index = v.index; +this.intValue = v.intValue; +this.tok = v.tok; +this.value = v.value; +return this; +}, "JS.SV"); +c$.copySafely = Clazz_defineMethod(c$, "copySafely", +function(v){ +return (v.myName == null ? v : new JS.SV().setv(v)); +}, "JS.SV"); +c$.sizeOf = Clazz_defineMethod(c$, "sizeOf", +function(x){ +switch (x == null ? 0 : x.tok) { +case 10: +return JS.SV.bsSelectToken(x).cardinality(); +case 15: +return (x.value).data.length; +case 4: +return (x.value).length; +case 7: +return x.intValue == 2147483647 ? (x).getList().size() : JS.SV.sizeOf(JS.SV.selectItemTok(x, -2147483648)); +case 6: +return (x.value).size(); +case 14: +return (x.value).getFullMap().size(); +case 1073742335: +case 1073742334: +return -1; +case 2: +return -2; +case 3: +return -4; +case 8: +return -8; +case 9: +return -16; +case 11: +return -32; +case 12: +return -64; +default: +return 0; +} +}, "JS.T"); +c$.isVariableType = Clazz_defineMethod(c$, "isVariableType", +function(x){ +return (Clazz_instanceOf(x,"JS.SV") || Clazz_instanceOf(x, Boolean) || Clazz_instanceOf(x, Integer) || Clazz_instanceOf(x, Float) || (typeof(x)=='string') || Clazz_instanceOf(x,"JU.T3") || Clazz_instanceOf(x,"JU.BS") || Clazz_instanceOf(x,"JU.P4") || Clazz_instanceOf(x,"JU.Quat") || Clazz_instanceOf(x,"JU.M34") || Clazz_instanceOf(x,"java.util.Map") || Clazz_instanceOf(x,"JU.Lst") || Clazz_instanceOf(x,"JU.BArray") || Clazz_instanceOf(x,"JS.ScriptContext") || JS.SV.isArray(x)); +}, "~O"); +c$.isArray = Clazz_defineMethod(c$, "isArray", +function(x){ +{ +return Clazz_instanceOf(x, Array); +}}, "~O"); +c$.getVariable = Clazz_defineMethod(c$, "getVariable", +function(x){ +if (x == null) return JS.SV.newS(""); +if (Clazz_instanceOf(x,"JS.SV")) return x; +if (Clazz_instanceOf(x, Boolean)) return JS.SV.getBoolean((x).booleanValue()); +if (Clazz_instanceOf(x, Integer)) return JS.SV.newI((x).intValue()); +if (Clazz_instanceOf(x, Float)) return JS.SV.newV(3, x); +if ((typeof(x)=='string')) { +x = JS.SV.unescapePointOrBitsetAsVariable(x); +if (Clazz_instanceOf(x,"JS.SV")) return x; +return JS.SV.newV(4, x); +}if (Clazz_instanceOf(x,"JU.P3")) return JS.SV.newV(8, x); +if (Clazz_instanceOf(x,"JU.V3")) return JS.SV.newV(8, JU.P3.newP(x)); +if (Clazz_instanceOf(x,"JU.BS")) return JS.SV.newV(10, x); +if (Clazz_instanceOf(x,"JU.P4")) return JS.SV.newV(9, x); +if (Clazz_instanceOf(x,"JU.Quat")) return JS.SV.newV(9, (x).toPoint4f()); +if (Clazz_instanceOf(x,"JU.M34")) return JS.SV.newV(Clazz_instanceOf(x,"JU.M4") ? 12 : 11, x); +if (Clazz_instanceOf(x,"java.util.Map")) return JS.SV.getVariableMap(x); +if (Clazz_instanceOf(x,"JU.Lst")) return JS.SV.getVariableList(x); +if (Clazz_instanceOf(x,"JU.BArray")) return JS.SV.newV(15, x); +if (Clazz_instanceOf(x,"JS.ScriptContext")) return JS.SV.newV(14, x); +if (JS.SV.isASV(x)) return JS.SV.getVariableAV(x); +if (JU.AU.isAI(x)) return JS.SV.getVariableAI(x); +if (JU.AU.isAB(x)) return JS.SV.getVariableAB(x); +if (JU.AU.isAF(x)) return JS.SV.getVariableAF(x); +if (JU.AU.isAD(x)) return JS.SV.getVariableAD(x); +if (JU.AU.isAS(x)) return JS.SV.getVariableAS(x); +if (JU.AU.isAP(x)) return JS.SV.getVariableAP(x); +if (JU.AU.isAII(x)) return JS.SV.getVariableAII(x); +if (JU.AU.isAFF(x)) return JS.SV.getVariableAFF(x); +if (JU.AU.isASS(x)) return JS.SV.getVariableASS(x); +if (JU.AU.isADD(x)) return JS.SV.getVariableADD(x); +if (JU.AU.isAFloat(x)) return JS.SV.newV(13, x); +return JS.SV.newJSVar(x); +}, "~O"); +c$.isASV = Clazz_defineMethod(c$, "isASV", +function(x){ +if (!JV.Viewer.isSwingJS) { +{ +return x && x[0] && x[0].__CLASS_NAME__ == "JS.SV"; +}}return Clazz_instanceOf(x,Array); +}, "~O"); +c$.newJSVar = Clazz_defineMethod(c$, "newJSVar", +function(x){ +var itype; +var itest; +var inum; +var array; +var keys; +{ +switch(x.BYTES_PER_ELEMENT ? Array : x.constructor) { +case Boolean: +itype = 0; +itest = x; +break; +case Number: +itype = 1; +inum = x; +break; +case Array: +itype = 2; +array = x; +break; +case Object: +itype = 3; +array = x; +keys = Object.keys(x); +break; +} +}switch (itype) { +case 0: +return (itest ? JS.SV.vT : JS.SV.vF); +case 1: +return (inum > 2147483647 || inum != Math.floor(inum) ? JS.SV.newF(inum) : JS.SV.newI(Clazz_floatToInt(inum))); +case 2: +var v = new JU.Lst(); +for (var i = 0, n = array.length; i < n; i++) v.addLast(JS.SV.newJSVar(array[i])); + +return JS.SV.getVariableList(v); +case 3: +var map = new java.util.Hashtable(); +for (var i = keys.length; --i >= 0; ) { +var o = null; +{ +o = array[keys[i]]; +}map.put(keys[i], JS.SV.newJSVar(o)); +} +return JS.SV.getVariableMap(map); +} +return JS.SV.newS(x.toString()); +}, "~O"); +c$.getVariableMap = Clazz_defineMethod(c$, "getVariableMap", +function(x){ +var ht = x; +var o = null; +for (var oo, $oo = ht.values().iterator (); $oo.hasNext()&& ((oo = $oo.next ()) || true);) { +o = oo; +break; +} +if (!(Clazz_instanceOf(o,"JS.SV"))) { +var x2 = new java.util.Hashtable(); +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) x2.put(entry.getKey(), JS.SV.getVariable(entry.getValue())); + +x = x2; +}return JS.SV.newV(6, x); +}, "java.util.Map"); +c$.getVariableList = Clazz_defineMethod(c$, "getVariableList", +function(v){ +var len = v.size(); +if (len > 0 && Clazz_instanceOf(v.get(0),"JS.SV")) return JS.SV.newV(7, v); +var objects = new JU.Lst(); +for (var i = 0; i < len; i++) objects.addLast(JS.SV.getVariable(v.get(i))); + +return JS.SV.newV(7, objects); +}, "JU.Lst"); +c$.getVariableAV = Clazz_defineMethod(c$, "getVariableAV", +function(v){ +var objects = new JU.Lst(); +for (var i = 0; i < v.length; i++) objects.addLast(v[i]); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAD = Clazz_defineMethod(c$, "getVariableAD", +function(f){ +var objects = new JU.Lst(); +for (var i = 0; i < f.length; i++) objects.addLast(JS.SV.newV(3, Float.$valueOf(f[i]))); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAO = Clazz_defineMethod(c$, "getVariableAO", +function(o){ +var objects = new JU.Lst(); +for (var i = 0; i < o.length; i++) objects.addLast(JS.SV.getVariable(o[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAS = Clazz_defineMethod(c$, "getVariableAS", +function(s){ +var objects = new JU.Lst(); +for (var i = 0; i < s.length; i++) objects.addLast(JS.SV.newV(4, s[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAP = Clazz_defineMethod(c$, "getVariableAP", +function(p){ +var objects = new JU.Lst(); +for (var i = 0; i < p.length; i++) objects.addLast(JS.SV.newV(8, p[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAFF = Clazz_defineMethod(c$, "getVariableAFF", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAF(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableADD = Clazz_defineMethod(c$, "getVariableADD", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAD(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableASS = Clazz_defineMethod(c$, "getVariableASS", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAS(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAII = Clazz_defineMethod(c$, "getVariableAII", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.getVariableAI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAF = Clazz_defineMethod(c$, "getVariableAF", +function(f){ +var objects = new JU.Lst(); +for (var i = 0; i < f.length; i++) objects.addLast(JS.SV.newV(3, Float.$valueOf(f[i]))); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAI = Clazz_defineMethod(c$, "getVariableAI", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.newI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAB = Clazz_defineMethod(c$, "getVariableAB", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.newI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +Clazz_defineMethod(c$, "setName", +function(name){ +this.myName = name; +return this; +}, "~S"); +Clazz_defineMethod(c$, "canIncrement", +function(){ +switch (this.tok) { +case 2: +case 3: +return true; +default: +return false; +} +}); +Clazz_defineMethod(c$, "increment", +function(n){ +switch (this.tok) { +case 2: +this.intValue += n; +return true; +case 3: +this.value = Float.$valueOf((this.value).floatValue() + n); +return true; +default: +return false; +} +}, "~N"); +Clazz_defineMethod(c$, "asBoolean", +function(){ +return JS.SV.bValue(this); +}); +Clazz_defineMethod(c$, "asInt", +function(){ +return JS.SV.iValue(this); +}); +Clazz_defineMethod(c$, "asFloat", +function(){ +return JS.SV.fValue(this); +}); +Clazz_defineMethod(c$, "asString", +function(){ +return JS.SV.sValue(this); +}); +c$.oValue = Clazz_defineMethod(c$, "oValue", +function(xx){ +if (!(Clazz_instanceOf(xx,"JS.SV"))) return xx; +var x = xx; +switch (x.tok) { +case 1073742335: +return Boolean.TRUE; +case 0: +case 1073742334: +return Boolean.FALSE; +case 2: +return Integer.$valueOf(x.intValue); +case 10: +case 1275068418: +return JS.SV.selectItemVar(x).value; +default: +return x.value; +} +}, "~O"); +c$.nValue = Clazz_defineMethod(c$, "nValue", +function(x){ +var iValue; +switch (x == null ? 0 : x.tok) { +case 3: +return x.value; +case 2: +iValue = x.intValue; +break; +case 4: +if ((x.value).indexOf(".") >= 0) return Float.$valueOf(JS.SV.toFloat(x.value)); +iValue = Clazz_floatToInt(JS.SV.toFloat(x.value)); +break; +case 8: +return Float.$valueOf((x.value).length()); +default: +iValue = 0; +} +return Integer.$valueOf(iValue); +}, "JS.T"); +c$.bValue = Clazz_defineMethod(c$, "bValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +case 14: +return true; +case 1073742334: +return false; +case 2: +return x.intValue != 0; +case 3: +case 4: +case 7: +return JS.SV.fValue(x) != 0; +case 10: +case 15: +return JS.SV.iValue(x) != 0; +case 8: +case 9: +case 11: +case 12: +return Math.abs(JS.SV.fValue(x)) > 0.0001; +case 6: +return !(x).getMap().isEmpty(); +default: +return false; +} +}, "JS.T"); +c$.iValue = Clazz_defineMethod(c$, "iValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +return 1; +case 1073742334: +return 0; +case 2: +return x.intValue; +case 3: +case 7: +case 4: +case 8: +case 9: +case 11: +case 12: +case 134221850: +return Clazz_floatToInt(JS.SV.fValue(x)); +case 10: +return JS.SV.bsSelectToken(x).cardinality(); +case 15: +return (x.value).data.length; +default: +return 0; +} +}, "JS.T"); +c$.fValue = Clazz_defineMethod(c$, "fValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +return 1; +case 1073742334: +return 0; +case 2: +return x.intValue; +case 3: +return (x.value).floatValue(); +case 7: +var i = x.intValue; +if (i == 2147483647) return (x).getList().size(); +case 4: +return JS.SV.toFloat(JS.SV.sValue(x)); +case 10: +case 15: +return JS.SV.iValue(x); +case 8: +return (x.value).length(); +case 9: +return JU.Measure.distanceToPlane(x.value, JS.SV.pt0); +case 11: +var pt = new JU.P3(); +(x.value).rotate(pt); +return pt.length(); +case 12: +var pt1 = new JU.P3(); +(x.value).rotTrans(pt1); +return pt1.length(); +default: +return 0; +} +}, "JS.T"); +c$.sValue = Clazz_defineMethod(c$, "sValue", +function(x){ +if (x == null) return ""; +var i; +var sb; +switch (x.tok) { +case 1073742335: +return "true"; +case 1073742334: +return "false"; +case 2: +return "" + x.intValue; +case 10: +var bs = JS.SV.bsSelectToken(x); +return (Clazz_instanceOf(x.value,"JM.BondSet") ? JU.Escape.eBond(bs) : JU.Escape.eBS(bs)); +case 7: +var sv = (x).getList(); +i = x.intValue; +if (i <= 0) i = sv.size() - i; +if (i != 2147483647) return (i < 1 || i > sv.size() ? "" : JS.SV.sValue(sv.get(i - 1))); +case 6: +case 14: +if ((typeof(x.value)=='string')) return x.value; +sb = new JU.SB(); +JS.SV.sValueArray(sb, x, "", "", false, true, true, 2147483647, false); +return JU.PT.rep(sb.toString(), "\n\0", " "); +case 4: +var s = x.value; +i = x.intValue; +if (i <= 0) i = s.length - i; +if (i == 2147483647) return s; +if (i < 1 || i > s.length) return ""; +return "" + s.charAt(i - 1); +case 8: +return JU.Escape.eP(x.value); +case 9: +return JU.Escape.eP4(x.value); +case 11: +case 12: +return JU.Escape.e(x.value); +default: +return x.value.toString(); +} +}, "JS.T"); +c$.sValueArray = Clazz_defineMethod(c$, "sValueArray", +function(sb, vx, path, tabs, isEscaped, isRaw, addValues, maxLevels, skipEmpty){ +switch (vx.tok) { +case 6: +case 14: +case 7: +var thiskey = ";" + vx.hashCode() + ";"; +if (path.indexOf(thiskey) >= 0) { +sb.append(isEscaped ? (vx.tok == 7 ? "[ ]" : "{ }") : (vx.tok == 7 ? "" : "\0") + "\"<" + (vx.myName == null ? "circular reference" : vx.myName) + ">\""); +break; +}path += thiskey; +if (vx.tok == 7) { +if (!addValues) return; +if (!isRaw) sb.append(isEscaped ? "[ " : tabs + "[\n"); +var sx = vx.getList(); +for (var i = 0; i < sx.size(); i++) { +if (isEscaped && i > 0) sb.append(","); +var sv = sx.get(i); +JS.SV.sValueArray(sb, sv, path, tabs + " ", isEscaped, tabs.length == 0 && !isEscaped && JS.SV.isRawType(sv.tok), addValues, maxLevels, skipEmpty); +if (!isEscaped) sb.append("\n"); +} +if (!isRaw) sb.append(isEscaped ? " ]" : tabs + "]"); +} else if (--maxLevels >= 0) { +var ht = (vx.tok == 14 ? (vx.value).getFullMap() : vx.getMap()); +JS.SV.sValueAddKeys(sb, path, ht, tabs, isEscaped, addValues, maxLevels, skipEmpty); +}break; +default: +if (!addValues) return; +if (!isRaw && !isEscaped) sb.append(tabs); +sb.append(isEscaped ? vx.escape() : JS.SV.sValue(vx)); +} +}, "JU.SB,JS.SV,~S,~S,~B,~B,~B,~N,~B"); +c$.sValueAddKeys = Clazz_defineMethod(c$, "sValueAddKeys", +function(sb, path, ht, tabs, isEscaped, addValues, maxLevels, skipEmpty){ +if (maxLevels < 0) return; +var keyset = ht.keySet(); +var keys = ht.keySet().toArray( new Array(keyset.size())); +java.util.Arrays.sort(keys); +if (isEscaped) { +sb.append("{ "); +var sep = ""; +for (var i = 0; i < keys.length; i++) { +var key = keys[i]; +var val = ht.get(key); +if (skipEmpty && (val.tok == 7 && val.getList().size() == 0 || val.tok == 6 && val.getMap().isEmpty())) continue; +if (addValues) sb.append(sep).append(JU.PT.esc(key)).append(":"); + else sb.appendC(' ').append(key); +JS.SV.sValueArray(sb, val, path, tabs + " ", true, false, addValues, maxLevels, skipEmpty); +sep = ","; +} +sb.append(" }"); +if (!addValues) sb.append("\n"); +return; +}sb.append(tabs).append("{\n"); +tabs += " "; +for (var i = 0; i < keys.length; i++) { +sb.append(tabs); +var key = keys[i]; +sb.append(JU.PT.esc(key)).append(" :"); +var sb2 = new JU.SB(); +if (!(Clazz_instanceOf(ht.get(key),"JS.SV"))) ht.put(key, JS.SV.getVariable(ht.get(key))); +var v = ht.get(key); +isEscaped = JS.SV.isRawType(v.tok); +JS.SV.sValueArray(sb2, v, path, tabs, isEscaped, false, addValues, maxLevels, skipEmpty); +var value = sb2.toString(); +if (isEscaped && addValues) sb.append(" "); + else sb.append("\n"); +sb.append(value).append("\n"); +} +sb.append(tabs.substring(1)).append("}"); +}, "JU.SB,~S,java.util.Map,~S,~B,~B,~N,~B"); +c$.isRawType = Clazz_defineMethod(c$, "isRawType", +function(tok){ +switch (tok) { +case 4: +case 3: +case 2: +case 8: +case 9: +case 10: +case 15: +case 1073742335: +case 1073742334: +return true; +} +return false; +}, "~N"); +c$.ptValue = Clazz_defineMethod(c$, "ptValue", +function(x){ +switch (x.tok) { +case 8: +return x.value; +case 4: +var o = JU.Escape.uP(x.value); +if (Clazz_instanceOf(o,"JU.P3")) return o; +} +return null; +}, "JS.SV"); +c$.pt4Value = Clazz_defineMethod(c$, "pt4Value", +function(x){ +switch (x.tok) { +case 9: +return x.value; +case 4: +var o = JU.Escape.uP(x.value); +if (!(Clazz_instanceOf(o,"JU.P4"))) break; +return o; +} +return null; +}, "JS.SV"); +c$.toFloat = Clazz_defineMethod(c$, "toFloat", +function(s){ +return (s.equalsIgnoreCase("true") ? 1 : s.length == 0 || s.equalsIgnoreCase("false") ? 0 : JU.PT.parseFloatStrict(JU.PT.trim(s, " \t\n"))); +}, "~S"); +c$.concatList = Clazz_defineMethod(c$, "concatList", +function(x1, x2, asNew){ +var v1 = x1.getList(); +var v2 = x2.getList(); +if (!asNew) { +if (v2 == null) v1.addLast(JS.SV.newT(x2)); + else for (var i = 0; i < v2.size(); i++) v1.addLast(v2.get(i)); + +return x1; +}var vlist = new JU.Lst(); +if (v1 == null) vlist.addLast(x1); + else for (var i = 0; i < v1.size(); i++) vlist.addLast(v1.get(i)); + +if (v2 == null) vlist.addLast(x2); + else for (var i = 0; i < v2.size(); i++) vlist.addLast(v2.get(i)); + +return JS.SV.getVariableList(vlist); +}, "JS.SV,JS.SV,~B"); +c$.bsSelectToken = Clazz_defineMethod(c$, "bsSelectToken", +function(x){ +return JS.SV.selectItemTok(x, -2147483648).value; +}, "JS.T"); +c$.bsSelectRange = Clazz_defineMethod(c$, "bsSelectRange", +function(x, n){ +x = JS.SV.selectItemTok(x, -2147483648); +x = JS.SV.selectItemTok(x, (n <= 0 ? n : 1)); +x = JS.SV.selectItemTok(x, (n <= 0 ? 2147483646 : n)); +return x.value; +}, "JS.T,~N"); +c$.selectItemVar = Clazz_defineMethod(c$, "selectItemVar", +function($var){ +return ($var.index != 2147483647 || ($var.tok == 7 || $var.tok == 15) && $var.intValue == 2147483647 ? $var : JS.SV.selectItemTok($var, -2147483648)); +}, "JS.SV"); +c$.selectItemTok = Clazz_defineMethod(c$, "selectItemTok", +function(tokenIn, i2){ +switch (tokenIn.tok) { +case 11: +case 12: +case 10: +case 7: +case 15: +case 4: +break; +default: +return ((Clazz_instanceOf(tokenIn,"JS.SV")) && (tokenIn).myName != null ? JS.SV.copySafely(tokenIn) : tokenIn); +} +var bs = null; +var s = null; +var i1 = tokenIn.intValue; +var isOne = (i2 == -2147483648); +if (i1 == 2147483647) { +return (isOne && tokenIn.tok == 4 ? tokenIn : JS.SV.newSV(tokenIn.tok, (isOne ? i1 : i2), tokenIn.value)); +}var len = 0; +var isInputSelected = (Clazz_instanceOf(tokenIn,"JS.SV") && (tokenIn).index != 2147483647); +var tokenOut = JS.SV.newSV(tokenIn.tok, 2147483647, null); +switch (tokenIn.tok) { +case 10: +if (Clazz_instanceOf(tokenIn.value,"JM.BondSet")) { +bs = JM.BondSet.newBS(tokenIn.value); +len = bs.cardinality(); +} else { +bs = JU.BSUtil.copy(tokenIn.value); +len = (isInputSelected ? 1 : bs.cardinality()); +}break; +case 15: +len = (((tokenIn).value)).data.length; +break; +case 7: +len = (tokenIn).getList().size(); +break; +case 4: +s = tokenIn.value; +len = s.length; +break; +case 11: +len = -3; +break; +case 12: +len = -4; +break; +} +if (len < 0) { +len = -len; +if (i1 > 0 && Math.abs(i1) > len) { +var col = i1 % 10; +var row = Clazz_doubleToInt((i1 - col) / 10); +if (col > 0 && col <= len && row <= len) { +if (tokenIn.tok == 11) return JS.SV.newV(3, Float.$valueOf((tokenIn.value).getElement(row - 1, col - 1))); +return JS.SV.newV(3, Float.$valueOf((tokenIn.value).getElement(row - 1, col - 1))); +}return JS.SV.newV(4, ""); +}if (Math.abs(i1) > len) return JS.SV.newV(4, ""); +var data = Clazz_newFloatArray (len, 0); +if (len == 3) { +if (i1 < 0) (tokenIn.value).getColumn(-1 - i1, data); + else (tokenIn.value).getRow(i1 - 1, data); +} else { +if (i1 < 0) (tokenIn.value).getColumn(-1 - i1, data); + else (tokenIn.value).getRow(i1 - 1, data); +}if (isOne) return JS.SV.getVariableAF(data); +if (i2 < 1 || i2 > len) return JS.SV.newV(4, ""); +return JS.SV.newV(3, Float.$valueOf(data[i2 - 1])); +}if (i1 <= 0) i1 = len + i1; +if (!isOne) { +if (i1 < 1) i1 = 1; +if (i2 == 0) i2 = len; + else if (i2 < 0) i2 = len + i2; +if (i2 < i1) i2 = i1; +}switch (tokenIn.tok) { +case 10: +tokenOut.value = bs; +if (isInputSelected) { +if (i1 > 1) bs.clearAll(); +break; +}if (isOne) { +if (i1 == len) { +i2 = bs.length() - 1; +} else if (i1 == 1) { +i2 = bs.nextSetBit(0); +}if (i2 >= -1) { +bs.clearAll(); +if (i2 >= 0) bs.set(i2); +break; +}i2 = i1; +}var n = 0; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) if (++n < i1 || n > i2) bs.clear(j); + +break; +case 4: +tokenOut.value = (--i1 < 0 || i1 >= len ? "" : isOne ? s.substring(i1, i1 + 1) : s.substring(i1, Math.min(i2, len))); +break; +case 7: +if (--i1 < 0 || i1 >= len) return JS.SV.newV(4, ""); +if (isOne) return (tokenIn).getList().get(i1); +var o2 = new JU.Lst(); +var o1 = (tokenIn).getList(); +var nn = Math.min(i2, len) - i1; +for (var i = 0; i < nn; i++) o2.addLast(JS.SV.newT(o1.get(i + i1))); + +tokenOut.value = o2; +break; +case 15: +if (--i1 < 0 || i1 >= len) return JS.SV.newV(4, ""); +var data = (((tokenIn).value)).data; +if (isOne) return JS.SV.newI(data[i1]); +var b = Clazz_newByteArray (Math.min(i2, len) - i1, 0); +for (var i = b.length; --i >= 0; ) b[i] = data[i1 + i]; + +tokenOut.value = new JU.BArray(b); +break; +} +return tokenOut; +}, "JS.T,~N"); +Clazz_defineMethod(c$, "setSelectedValue", +function(pt1, pt2, $var){ +if (pt1 == 2147483647) return; +var len; +switch (this.tok) { +case 11: +case 12: +len = (this.tok == 11 ? 3 : 4); +if (pt2 != 2147483647) { +var col = pt2; +var row = pt1; +if (col > 0 && col <= len && row <= len) { +if (this.tok == 11) (this.value).setElement(row - 1, col - 1, JS.SV.fValue($var)); + else (this.value).setElement(row - 1, col - 1, JS.SV.fValue($var)); +return; +}}if (pt1 != 0 && Math.abs(pt1) <= len && (this.tok == 11 && $var.tok == 8 || this.tok == 12 && $var.tok == 9 || $var.tok == 7)) { +var data; +switch ($var.tok) { +default: +case 7: +var sv = $var.getList(); +if (sv.size() != len) return; +data = Clazz_newFloatArray (len, 0); +for (var i = 0; i < len; i++) data[i] = JS.SV.fValue(sv.get(i)); + +break; +case 8: +var p = $var.value; +data = Clazz_newFloatArray(-1, [p.x, p.y, p.z]); +break; +case 9: +var p4 = $var.value; +data = Clazz_newFloatArray(-1, [p4.x, p4.y, p4.z, p4.w]); +break; +} +if (pt1 > 0) { +if (this.tok == 11) (this.value).setRowA(pt1 - 1, data); + else (this.value).setRowA(pt1 - 1, data); +} else { +if (this.tok == 11) (this.value).setColumnA(-1 - pt1, data); + else (this.value).setColumnA(-1 - pt1, data); +}break; +}break; +case 4: +var str = this.value; +var pt = str.length; +if (pt1 <= 0) pt1 = pt + pt1; +if (--pt1 < 0) pt1 = 0; +while (pt1 >= str.length) str += " "; + +if (pt2 == 2147483647) { +pt2 = pt1; +} else { +if (--pt2 < 0) pt2 = pt + pt2; +while (pt2 >= str.length) str += " "; + +}if (pt2 >= pt1) this.value = str.substring(0, pt1) + JS.SV.sValue($var) + str.substring(++pt2); +this.intValue = this.index = 2147483647; +break; +case 7: +var v = this.value; +len = v.size(); +if (pt1 <= 0) pt1 = len + pt1; +if (--pt1 < 0) pt1 = 0; +if (len <= pt1) for (var i = len; i <= pt1; i++) v.addLast(JS.SV.newV(4, "")); + +v.set(pt1, $var); +break; +} +}, "~N,~N,JS.SV"); +Clazz_defineMethod(c$, "escape", +function(){ +switch (this.tok) { +case 4: +return JU.PT.esc(this.value); +case 11: +case 12: +return JU.PT.toJSON(null, this.value); +case 7: +case 6: +case 14: +var sb = new JU.SB(); +JS.SV.sValueArray(sb, this, "", "", true, false, true, 2147483647, false); +return sb.toString(); +default: +return JS.SV.sValue(this); +} +}); +c$.unescapePointOrBitsetAsVariable = Clazz_defineMethod(c$, "unescapePointOrBitsetAsVariable", +function(o){ +if (o == null) return o; +var v = null; +var s = null; +if (Clazz_instanceOf(o,"JS.SV")) { +var sv = o; +switch (sv.tok) { +case 8: +case 9: +case 11: +case 12: +case 10: +v = sv.value; +break; +case 4: +s = sv.value; +break; +default: +s = JS.SV.sValue(sv); +break; +} +} else if ((typeof(o)=='string')) { +s = o; +}if (s != null && s.length == 0) return s; +if (v == null) v = JU.Escape.uABsM(s); +if (Clazz_instanceOf(v,"JU.P3")) return (JS.SV.newV(8, v)); +if (Clazz_instanceOf(v,"JU.P4")) return JS.SV.newV(9, v); +if (Clazz_instanceOf(v,"JU.BS")) { +if (s != null && s.indexOf("[{") == 0) v = JM.BondSet.newBS(v); +return JS.SV.newV(10, v); +}if (Clazz_instanceOf(v,"JU.M34")) return (JS.SV.newV(Clazz_instanceOf(v,"JU.M3") ? 11 : 12, v)); +return o; +}, "~O"); +c$.getBoolean = Clazz_defineMethod(c$, "getBoolean", +function(value){ +return JS.SV.newT(value ? JS.SV.vT : JS.SV.vF); +}, "~B"); +c$.sprintf = Clazz_defineMethod(c$, "sprintf", +function(strFormat, $var){ +if ($var == null) return strFormat; +var isArray = ($var.tok == 7); +var vd = (strFormat.indexOf("d") >= 0 || strFormat.indexOf("i") >= 0 ? Clazz_newIntArray (1, 0) : null); +var vf = (strFormat.indexOf("f") >= 0 ? Clazz_newFloatArray (1, 0) : null); +var ve = (strFormat.indexOf("e") >= 0 ? Clazz_newDoubleArray (1, 0) : null); +var getS = (strFormat.indexOf("s") >= 0); +var getP = (strFormat.indexOf("p") >= 0 && (isArray || $var.tok == 8)); +var getQ = (strFormat.indexOf("q") >= 0 && (isArray || $var.tok == 9)); +var of = Clazz_newArray(-1, [vd, vf, ve, null, null, null]); +if (!isArray) return JS.SV.sprintf(strFormat, $var, of, vd, vf, ve, getS, getP, getQ); +var sv = $var.getList(); +var list2 = new Array(sv.size()); +for (var i = 0; i < list2.length; i++) list2[i] = JS.SV.sprintf(strFormat, sv.get(i), of, vd, vf, ve, getS, getP, getQ); + +return list2; +}, "~S,JS.SV"); +c$.sprintf = Clazz_defineMethod(c$, "sprintf", +function(strFormat, $var, of, vd, vf, ve, getS, getP, getQ){ +if ($var.tok == 6) { +var pt = strFormat.indexOf("["); +if (pt >= 0) { +var pt1; +$var = $var.getMap().get(strFormat.substring(pt + 1, pt1 = strFormat.indexOf("]"))); +strFormat = strFormat.substring(0, pt) + strFormat.substring(pt1 + 1); +}}if (vd != null) vd[0] = JS.SV.iValue($var); +if (vf != null) vf[0] = JS.SV.fValue($var); +if (ve != null) ve[0] = JS.SV.fValue($var); +if (getS) of[3] = JS.SV.sValue($var); +if (getP) of[4] = $var.value; +if (getQ) of[5] = $var.value; +return JU.PT.sprintf(strFormat, "IFDspq", of); +}, "~S,JS.SV,~A,~A,~A,~A,~B,~B,~B"); +c$.getFormatType = Clazz_defineMethod(c$, "getFormatType", +function(format){ +return (format.indexOf(";") >= 0 ? -1 : ";json;base64;bytearray;array;".indexOf(";" + format.toLowerCase() + ";")); +}, "~S"); +c$.format = Clazz_defineMethod(c$, "format", +function(args, pt){ +switch (args.length) { +case 0: +return ""; +case 1: +return JS.SV.sValue(args[0]); +case 2: +if (pt == 2147483647) pt = JS.SV.getFormatType(args[0].asString()); +switch (pt) { +case 0: +var name = args[1].myName; +args[1].myName = null; +var o = args[1].toJSON(); +args[1].myName = name; +return o; +case 5: +case 12: +case 22: +var bytes; +switch (args[1].tok) { +case 15: +bytes = JU.AU.arrayCopyByte((args[1].value).data, -1); +break; +case 7: +var l = args[1].getList(); +if (pt == 22) { +var l1 = new JU.Lst(); +for (var i = l.size(); --i >= 0; ) l1.addLast(l.get(i)); + +return l1; +}bytes = Clazz_newByteArray (l.size(), 0); +for (var i = bytes.length; --i >= 0; ) bytes[i] = l.get(i).asInt(); + +break; +default: +var s = args[1].asString(); +if (s.startsWith(";base64,")) { +if (pt == 5) return s; +bytes = JU.Base64.decodeBase64(s); +} else { +bytes = s.getBytes(); +}} +return (pt == 22 ? JS.SV.getVariable(bytes) : pt == 12 ? new JU.BArray(bytes) : ";base64," + JU.Base64.getBase64(bytes).toString()); +} +} +var format = JU.PT.split(JU.PT.rep(JS.SV.sValue(args[0]), "%%", "\1"), "%"); +if (format.length == 0) return ""; +var sb = new JU.SB(); +sb.append(format[0]); +for (var i = 1; i < format.length; i++) { +var ret = JS.SV.sprintf(JU.PT.formatCheck("%" + format[i]), (args[1].tok == 6 ? args[1] : args[1].tok == 7 ? args[1].getList().get(i - 1) : i < args.length ? args[i] : null)); +if (JU.AU.isAS(ret)) { +var list = ret; +for (var j = 0; j < list.length; j++) sb.append(list[j]).append("\n"); + +continue; +}sb.append(ret); +} +return sb.toString(); +}, "~A,~N"); +c$.getBitSet = Clazz_defineMethod(c$, "getBitSet", +function(x, allowNull){ +switch (x.tok) { +case 10: +return (x.index == 2147483647 ? JS.SV.selectItemTok(x, -2147483648) : x).value; +case 7: +return JS.SV.unEscapeBitSetArray(x.getList(), allowNull); +default: +return (allowNull ? null : new JU.BS()); +} +}, "JS.SV,~B"); +c$.unEscapeBitSetArray = Clazz_defineMethod(c$, "unEscapeBitSetArray", +function(x, allowNull){ +var bs = new JU.BS(); +for (var i = 0; i < x.size(); i++) { +var v = x.get(i); +if (v.tok == 2 && v.intValue >= 0) { +bs.set(v.intValue); +} else if (v.tok == 7) { +var bs2 = JS.SV.unEscapeBitSetArray(v.getList(), true); +if (bs2 == null) return (allowNull ? null : new JU.BS()); +bs.or(bs2); +} else if (!JS.SV.unEscapeBitSet(v, bs)) { +return (allowNull ? null : new JU.BS()); +}} +return bs; +}, "JU.Lst,~B"); +c$.areEqual = Clazz_defineMethod(c$, "areEqual", +function(x1, x2){ +if (x1 == null || x2 == null) return false; +if (x1.value != null && x1.value === x2.value) return true; +if (x1.tok == x2.tok) { +switch (x1.tok) { +case 2: +if (x2.tok == 2) { +return x1.intValue == x2.intValue; +}break; +case 4: +return (x1.value).equalsIgnoreCase(x2.value); +case 10: +case 15: +case 6: +case 7: +case 14: +return x1.equals(x2); +case 8: +return ((x1.value).distance(x2.value) < 0.000001); +case 9: +return ((x1.value).distance4(x2.value) < 0.000001); +case 11: +return (x1.value).equals(x2.value); +case 12: +return (x1.value).equals(x2.value); +} +}return (x1.isNaN() ? x2.isNaN() : Math.abs(JS.SV.fValue(x1) - JS.SV.fValue(x2)) < 0.000001); +}, "JS.SV,JS.SV"); +c$.isLike = Clazz_defineMethod(c$, "isLike", +function(x1, x2){ +return (x1 != null && x2 != null && x1.tok == 4 && x2.tok == 4 && JU.PT.isLike(x1.value, x2.value)); +}, "JS.SV,JS.SV"); +Clazz_defineMethod(c$, "sortOrReverse", +function(arrayPt){ +var x = this.getList(); +if (x != null && x.size() > 1) { +if (arrayPt == -2147483648) { +var n = x.size(); +for (var i = 0; i < n; i++) { +var v = x.get(i); +x.set(i, x.get(--n)); +x.set(n, v); +} +} else { +java.util.Collections.sort(this.getList(), Clazz_innerTypeInstance(JS.SV.Sort, this, null, --arrayPt, null)); +}}return this; +}, "~N"); +Clazz_defineMethod(c$, "pushPop", +function(mapKey, value){ +if (mapKey == null) { +if (this.tok == 4) { +if (value == null) { +var v = this.value; +var n = v.length - 1; +if (n < 0) { +return JS.SV.newS(""); +}var s = v.substring(n); +this.value = v.substring(0, n); +return JS.SV.newS(s); +}this.value = this.value + JS.SV.sValue(value); +return this; +}var m = this.getMap(); +if (m == null) { +var x = this.getList(); +if (value == null || x == null) { +return (x == null || x.size() == 0 ? JS.SV.newS("") : x.removeItemAt(x.size() - 1)); +}x.addLast(JS.SV.copySafely(value)); +} else { +if (value == null) { +m.clear(); +} else { +var m1 = value.getMap(); +if (m1 != null) m.putAll(m1); +}}} else { +var m = this.getMap(); +if (value == null) { +var v = null; +if (m == null) { +var lst = this.getList(); +var len = lst.size(); +var i = JS.SV.iValue(mapKey) - 1; +if (i < 0) i += len; +if (i >= 0 && i < len) { +v = lst.removeItemAt(i); +}} else { +v = m.remove(mapKey.asString()); +}return (v == null ? JS.SV.newS("") : v); +}if (m != null) { +m.put(mapKey.asString(), JS.SV.copySafely(value)); +}}return this; +}, "JS.SV,JS.SV"); +c$.unEscapeBitSet = Clazz_defineMethod(c$, "unEscapeBitSet", +function(x, bs){ +switch (x.tok) { +case 4: +var bs1 = JU.BS.unescape(x.value); +if (bs1 == null) return false; +bs.or(bs1); +return true; +case 10: +bs.or(x.value); +return true; +} +return false; +}, "JS.SV,JU.BS"); +c$.strListValue = Clazz_defineMethod(c$, "strListValue", +function(x){ +if (x.tok != 7) return Clazz_newArray(-1, [JS.SV.sValue(x)]); +var sv = (x).getList(); +var list = new Array(sv.size()); +for (var i = sv.size(); --i >= 0; ) list[i] = JS.SV.sValue(sv.get(i)); + +return list; +}, "JS.T"); +c$.getArrayDepth = Clazz_defineMethod(c$, "getArrayDepth", +function(x){ +var n = 0; +var sv; +while (x.tok == 7 && (sv = (x).getList()).size() > 0) { +n++; +x = sv.get(0); +} +return n; +}, "JS.T"); +c$.fflistValue = Clazz_defineMethod(c$, "fflistValue", +function(x, nMin){ +if (x.tok != 7) { +return Clazz_newArray(-1, [ Clazz_newFloatArray(-1, [JS.SV.fValue(x)])]); +}var sv = (x).getList(); +var svlen = sv.size(); +var list; +list = JU.AU.newFloat2(svlen); +if (nMin == 0) nMin = list.length; +for (var i = list.length; --i >= 0; ) list[i] = JS.SV.flistValue(i >= svlen ? null : sv.get(i), 0); + +return list; +}, "JS.T,~N"); +c$.flistValue = Clazz_defineMethod(c$, "flistValue", +function(x, nMin){ +if (x == null || x.tok != 7) return Clazz_newFloatArray(-1, [JS.SV.fValue(x)]); +var sv = (x).getList(); +var list; +list = Clazz_newFloatArray (Math.max(nMin, sv.size()), 0); +if (nMin == 0) nMin = list.length; +for (var i = Math.min(sv.size(), nMin); --i >= 0; ) list[i] = JS.SV.fValue(sv.get(i)); + +return list; +}, "JS.T,~N"); +Clazz_defineMethod(c$, "toArray", +function(){ +var dim; +var o2; +var m3 = null; +var m4 = null; +switch (this.tok) { +case 11: +m3 = this.value; +dim = 3; +break; +case 12: +m4 = this.value; +dim = 4; +break; +case 7: +return this; +case 1275068418: +return this.arrayToList( new JS.SV()); +default: +o2 = new JU.Lst(); +o2.addLast(this); +return JS.SV.newV(7, o2); +} +o2 = new JU.Lst(); +for (var i = 0; i < dim; i++) { +var a = Clazz_newFloatArray (dim, 0); +if (m3 == null) m4.getRow(i, a); + else m3.getRow(i, a); +o2.addLast(JS.SV.getVariableAF(a)); +} +return JS.SV.newV(7, o2); +}); +Clazz_defineMethod(c$, "arrayToList", +function(target){ +if (this.tok != 1275068418 || target == null) return null; +var ao = this.value; +var v = new JU.Lst(); +for (var i = 0, n = ao.length; i < n; i++) { +v.addLast(JS.SV.getVariable(ao[i])); +} +target.tok = 7; +target.value = v; +return target; +}, "JS.SV"); +Clazz_defineMethod(c$, "mapValue", +function(key){ +switch (this.tok) { +case 6: +return (this.value).get(key); +case 14: +var sc = (this.value); +return (key.equals("_path") ? JS.SV.newS(sc.contextPath) : sc.getVariable(key)); +} +return null; +}, "~S"); +Clazz_defineMethod(c$, "getList", +function(){ +switch (this.tok) { +case 7: +return this.value; +case 1275068418: +this.tok = 7; +this.value = this.toArray().value; +return this.value; +default: +return null; +} +}); +c$.isScalar = Clazz_defineMethod(c$, "isScalar", +function(x){ +switch (x.tok) { +case 7: +return false; +case 4: +return ((x.value).indexOf("\n") < 0); +default: +return true; +} +}, "JS.SV"); +Clazz_overrideMethod(c$, "toJSON", +function(){ +switch (this.tok) { +case 1073742335: +case 1073742334: +case 2: +case 3: +return JS.SV.sValue(this); +case 15: +return JU.PT.byteArrayToJSON((this.value).data); +case 14: +return JU.PT.toJSON(null, (this.value).getFullMap()); +case 7: +case 6: +if (this.myName != null) { +this.myName = null; +return (this.tok == 6 ? "{ }" : "[ ]"); +}this.myName = "x"; +var s = JU.PT.toJSON(null, this.value); +this.myName = null; +return s; +default: +return JU.PT.toJSON(null, this.value); +} +}); +Clazz_defineMethod(c$, "mapGet", +function(key){ +return this.getMap().get(key); +}, "~S"); +Clazz_defineMethod(c$, "mapPut", +function(key, v){ +switch (this.tok) { +case 6: +case 14: +this.getMap().put(key, JS.SV.copySafely(v).setName(key)); +break; +} +}, "~S,JS.SV"); +Clazz_defineMethod(c$, "getMap", +function(){ +switch (this.tok) { +case 6: +return this.value; +case 14: +return (this.value).vars; +} +return null; +}); +Clazz_defineMethod(c$, "getMapKeys", +function(nLevels, skipEmpty){ +if (this.tok != 6) return ""; +var sb = new JU.SB(); +JS.SV.sValueArray(sb, this, "", "", true, false, false, nLevels + 1, skipEmpty); +return sb.toString(); +}, "~N,~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.toString2() + "[" + this.myName + " index =" + this.index + " intValue=" + this.intValue + "]"; +}); +Clazz_defineMethod(c$, "getKeys", +function(isAll){ +switch (this.tok) { +case 6: +case 14: +case 7: +break; +default: +return null; +} +var keys = new JU.Lst(); +this.getKeyList(isAll, keys, ""); +var skeys = keys.toArray( new Array(keys.size())); +java.util.Arrays.sort(skeys); +return skeys; +}, "~B"); +Clazz_defineMethod(c$, "getKeyList", +function(isAll, keys, prefix){ +var map = this.getMap(); +if (map == null) { +if (isAll) { +var lst; +var n; +if ((lst = this.getList()) != null && (n = lst.size()) > 0) lst.get(n - 1).getKeyList(true, keys, prefix + "." + n + "."); +}return; +}for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +if (isAll && (k.length == 0 || !JU.PT.isLetter(k.charAt(0)))) { +if (prefix.endsWith(".")) prefix = prefix.substring(0, prefix.length - 1); +k = "[" + JU.PT.esc(k) + "]"; +}keys.addLast(prefix + k); +if (isAll) e.getValue().getKeyList(true, keys, prefix + k + "."); +} +}, "~B,JU.Lst,~S"); +c$.deepCopy = Clazz_defineMethod(c$, "deepCopy", +function(v, isHash, isDeep){ +if (isHash) { +var vold = v; +var vnew = new java.util.Hashtable(); +for (var e, $e = vold.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var v1 = e.getValue(); +vnew.put(e.getKey(), isDeep ? JS.SV.deepCopySV(v1) : v1); +} +return vnew; +}var vold2 = v; +var vnew2 = new JU.Lst(); +for (var i = 0, n = vold2.size(); i < n; i++) { +var vm = vold2.get(i); +vnew2.addLast(isDeep ? JS.SV.deepCopySV(vm) : vm); +} +return vnew2; +}, "~O,~B,~B"); +c$.deepCopySV = Clazz_defineMethod(c$, "deepCopySV", +function(vm){ +switch (vm.tok) { +case 6: +case 7: +if ("\r".equals(vm.myName)) { +vm.myName = null; +vm = JS.SV.newV(vm.tok, (vm.tok == 6 ? new java.util.Hashtable() : new JU.Lst())); +} else { +var name0 = vm.myName; +vm.myName = "\r"; +var vm0 = vm; +vm = JS.SV.newV(vm.tok, JS.SV.deepCopy(vm.value, vm.tok == 6, true)); +vm0.myName = name0; +}break; +} +return vm; +}, "JS.SV"); +Clazz_defineMethod(c$, "sortMapArray", +function(key){ +var lst = this.getList(); +if (lst != null) { +java.util.Collections.sort(this.getList(), Clazz_innerTypeInstance(JS.SV.Sort, this, null, 0, key)); +}return this; +}, "~S"); +c$.safeJSON = Clazz_defineMethod(c$, "safeJSON", +function(key, property){ +return "{" + (Clazz_instanceOf(property,"JS.SV") ? JU.PT.esc(key) + " : " + JS.SV.format( Clazz_newArray(-1, [null, property]), 0) : JU.PT.toJSON(key, property)) + "}"; +}, "~S,~O"); +Clazz_defineMethod(c$, "isNaN", +function(){ +return (this.value === "NaN" || this === JS.SV.vNaN); +}); +c$.$SV$Sort$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.arrayPt = 0; +this.myKey = null; +Clazz_instantialize(this, arguments);}, JS.SV, "Sort", null, java.util.Comparator); +Clazz_makeConstructor(c$, +function(arrayPt, myKey){ +this.arrayPt = arrayPt; +this.myKey = myKey; +}, "~N,~S"); +Clazz_overrideMethod(c$, "compare", +function(x, y){ +if (x.tok != y.tok) { +if (x.tok == 3 || x.tok == 2 || y.tok == 3 || y.tok == 2) { +var fx = JS.SV.fValue(x); +var fy = JS.SV.fValue(y); +return (fx < fy ? -1 : fx > fy ? 1 : 0); +}if (x.tok == 4 || y.tok == 4) return JS.SV.sValue(x).compareTo(JS.SV.sValue(y)); +}switch (x.tok) { +case 2: +return (x.intValue < y.intValue ? -1 : x.intValue > y.intValue ? 1 : 0); +case 4: +return JS.SV.sValue(x).compareTo(JS.SV.sValue(y)); +case 7: +var sx = x.getList(); +var sy = y.getList(); +if (sx.size() != sy.size()) return (sx.size() < sy.size() ? -1 : 1); +var iPt = this.arrayPt; +if (iPt < 0) iPt += sx.size(); +if (iPt < 0 || iPt >= sx.size()) return 0; +return this.compare(sx.get(iPt), sy.get(iPt)); +case 6: +if (this.myKey != null) { +return this.compare(x.getMap().get(this.myKey), y.getMap().get(this.myKey)); +}default: +var fx = JS.SV.fValue(x); +var fy = JS.SV.fValue(y); +return (fx < fy ? -1 : fx > fy ? 1 : 0); +} +}, "JS.SV,JS.SV"); +/*eoif4*/})(); +}; +c$.vT = JS.SV.newSV(1073742335, 1, "true"); +c$.vF = JS.SV.newSV(1073742334, 0, "false"); +c$.vNaN = JS.SV.newSV(3, 2147483647, Float.$valueOf(NaN)); +c$.pt0 = new JU.P3(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["java.util.Hashtable"], "JS.T", ["java.util.Arrays", "JU.AU", "$.Lst", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tok = 0; +this.value = null; +this.intValue = 2147483647; +Clazz_instantialize(this, arguments);}, JS, "T", null); +c$.t = Clazz_defineMethod(c$, "t", +function(tok){ +var token = new JS.T(); +token.tok = tok; +return token; +}, "~N"); +c$.tv = Clazz_defineMethod(c$, "tv", +function(tok, intValue, value){ +var token = JS.T.t(tok); +token.intValue = intValue; +token.value = value; +return token; +}, "~N,~N,~O"); +c$.o = Clazz_defineMethod(c$, "o", +function(tok, value){ +var token = JS.T.t(tok); +token.value = value; +return token; +}, "~N,~O"); +c$.n = Clazz_defineMethod(c$, "n", +function(tok, intValue){ +var token = JS.T.t(tok); +token.intValue = intValue; +return token; +}, "~N,~N"); +c$.i = Clazz_defineMethod(c$, "i", +function(intValue){ +var token = JS.T.t(2); +token.intValue = intValue; +return token; +}, "~N"); +c$.tokAttr = Clazz_defineMethod(c$, "tokAttr", +function(a, b){ +return (a & b) == (b & b); +}, "~N,~N"); +c$.tokAttrOr = Clazz_defineMethod(c$, "tokAttrOr", +function(a, b1, b2){ +return (a & b1) == (b1 & b1) || (a & b2) == (b2 & b2); +}, "~N,~N,~N"); +c$.getPrecedence = Clazz_defineMethod(c$, "getPrecedence", +function(tokOperator){ +return ((tokOperator >> 9) & 0xF); +}, "~N"); +c$.getMaxMathParams = Clazz_defineMethod(c$, "getMaxMathParams", +function(tokCommand){ +return ((tokCommand >> 9) & 0x3); +}, "~N"); +c$.addToken = Clazz_defineMethod(c$, "addToken", +function(ident, token){ +JS.T.tokenMap.put(ident, token); +}, "~S,JS.T"); +c$.getTokenFromName = Clazz_defineMethod(c$, "getTokenFromName", +function(name){ +return JS.T.tokenMap.get(name); +}, "~S"); +c$.getTokFromName = Clazz_defineMethod(c$, "getTokFromName", +function(name){ +var token = JS.T.getTokenFromName(name.toLowerCase()); +return (token == null ? 0 : token.tok); +}, "~S"); +c$.nameOf = Clazz_defineMethod(c$, "nameOf", +function(tok){ +for (var token, $token = JS.T.tokenMap.values().iterator (); $token.hasNext()&& ((token = $token.next ()) || true);) { +if (token.tok == tok) return "" + token.value; +} +return "0x" + Integer.toHexString(tok); +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.toString2(); +}); +Clazz_defineMethod(c$, "toString2", +function(){ +return "Token[" + JS.T.astrType[this.tok < 16 ? this.tok : 16] + "(" + (this.tok % 1000) + "/0x" + Integer.toHexString(this.tok) + ")" + ((this.intValue == 2147483647) ? "" : " intValue=" + this.intValue + "(0x" + Integer.toHexString(this.intValue) + ")") + ((this.value == null) ? "" : (typeof(this.value)=='string') ? " value=\"" + this.value + "\"" : " value=" + this.value) + "]"; +}); +c$.getCommandSet = Clazz_defineMethod(c$, "getCommandSet", +function(strBegin){ +var cmds = ""; +var htSet = new java.util.Hashtable(); +var nCmds = 0; +var s = (strBegin == null || strBegin.length == 0 ? null : strBegin.toLowerCase()); +var isMultiCharacter = (s != null && s.length > 1); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var token = entry.getValue(); +if ((token.tok & 4096) != 0 && (s == null || name.indexOf(s) == 0) && (isMultiCharacter || (token.value).equals(name))) htSet.put(name, Boolean.TRUE); +} +for (var entry, $entry = htSet.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.charAt(name.length - 1) != 's' || !htSet.containsKey(name.substring(0, name.length - 1))) cmds += (nCmds++ == 0 ? "" : ";") + name; +} +return cmds; +}, "~S"); +c$.getAtomPropertiesLike = Clazz_defineMethod(c$, "getAtomPropertiesLike", +function(type){ +type = type.toLowerCase(); +var v = new JU.Lst(); +var isAll = (type.length == 0); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.charAt(0) == '_') continue; +var token = entry.getValue(); +if (JS.T.tokAttr(token.tok, 1077936128) && (isAll || name.toLowerCase().startsWith(type))) { +if (isAll || !(token.value).toLowerCase().startsWith(type)) token = JS.T.o(token.tok, name); +v.addLast(token); +}} +return (v.size() == 0 ? null : v); +}, "~S"); +c$.getTokensLike = Clazz_defineMethod(c$, "getTokensLike", +function(type){ +var attr = (type.equals("setparam") ? 536870912 : type.equals("misc") ? 1073741824 : type.equals("mathfunc") ? 134217728 : 4096); +var notattr = (attr == 536870912 ? 1610612736 : 0); +var v = new JU.Lst(); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var token = entry.getValue(); +if (JS.T.tokAttr(token.tok, attr) && (notattr == 0 || !JS.T.tokAttr(token.tok, notattr))) v.addLast(name); +} +var a = v.toArray( new Array(v.size())); +java.util.Arrays.sort(a); +return a; +}, "~S"); +c$.getSettableTokFromString = Clazz_defineMethod(c$, "getSettableTokFromString", +function(s){ +var tok = JS.T.getTokFromName(s); +return (tok != 0 && JS.T.tokAttr(tok, 2048) && !JS.T.tokAttr(tok, 1140850688) ? tok : 0); +}, "~S"); +c$.completeCommand = Clazz_defineMethod(c$, "completeCommand", +function(map, isSet, asCommand, str, n){ +if (map == null) map = JS.T.tokenMap; + else asCommand = false; +var v = new JU.Lst(); +str = str.toLowerCase(); +for (var name, $name = map.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) { +if (!name.startsWith(str)) continue; +var tok = JS.T.getTokFromName(name); +if (asCommand ? JS.T.tokAttr(tok, 4096) : isSet ? JS.T.tokAttr(tok, 536870912) && !JS.T.tokAttr(tok, 1610612736) : true) v.addLast(name); +} +return JU.AU.sortedItem(v, n); +}, "java.util.Map,~B,~B,~S,~N"); +c$.getParamType = Clazz_defineMethod(c$, "getParamType", +function(tok){ +if (!JS.T.tokAttr(tok, 536870912)) return 0; +return tok & 662700032; +}, "~N"); +c$.getTokensType = Clazz_defineMethod(c$, "getTokensType", +function(map, attr){ +for (var e, $e = JS.T.tokenMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var t = e.getValue(); +if (JS.T.tokAttr(t.tok, attr)) map.put(e.getKey(), e.getValue()); +} +}, "java.util.Map,~N"); +c$.isIDcmd = Clazz_defineMethod(c$, "isIDcmd", +function(cmdtok){ +switch (cmdtok) { +case 135180: +case 135176: +case 135174: +case 135188: +case 134353926: +return true; +default: +return false; +} +}, "~N"); +Clazz_defineMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JS.T"))) return false; +var t = o; +if (this.tok == t.tok) return (t.intValue == this.intValue && (this.tok == 2 || this.tok == 1073742335 || this.tok == 1073742334 || t.value.equals(this.value))); +switch (this.tok) { +case 2: +return (t.tok == 3 && (t.value).floatValue() == this.intValue); +case 3: +return (t.tok == 2 && (this.value).floatValue() == t.intValue); +default: +return false; +} +}, "~O"); +{ +JS.T.astrType = "nada identifier integer decimal string inscode hash array point point4 bitset matrix3f matrix4f array hash bytearray keyword".$plit(" "); +}c$.tokenSpaceBeforeSquare = JS.T.o(1073742195, " "); +c$.tokenOn = JS.T.tv(1073742335, 1, "on"); +c$.tokenOff = JS.T.tv(1073742334, 0, "off"); +c$.tokenAll = JS.T.o(1073742327, "all"); +c$.tokenIf = JS.T.o(134320649, "if"); +c$.tokenAnd = JS.T.o(268438528, "and"); +c$.tokenAndSpec = JS.T.o(268439552, ""); +c$.tokenOr = JS.T.o(268438016, "or"); +c$.tokenAndFALSE = JS.T.o(268438528, "and"); +c$.tokenOrTRUE = JS.T.o(268438016, "or"); +c$.tokenOpIf = JS.T.o(805307393, "?"); +c$.tokenComma = JS.T.o(268436992, ","); +c$.tokenDefineString = JS.T.tv(12290, 4, "@"); +c$.tokenPlus = JS.T.o(268440577, "+"); +c$.tokenMinus = JS.T.o(268440576, "-"); +c$.tokenMul3 = JS.T.o(1275068930, "mul3"); +c$.tokenTimes = JS.T.o(268441089, "*"); +c$.tokenDivide = JS.T.o(268441088, "/"); +c$.tokenLeftParen = JS.T.o(268435968, "("); +c$.tokenRightParen = JS.T.o(268435969, ")"); +c$.tokenArraySquare = JS.T.o(1275068418, "["); +c$.tokenArrayOpen = JS.T.o(268437504, "["); +c$.tokenArrayClose = JS.T.o(268437505, "]"); +c$.tokenLeftBrace = JS.T.o(1073742332, "{"); +c$.tokenExpressionBegin = JS.T.o(1073742325, "expressionBegin"); +c$.tokenExpressionEnd = JS.T.o(1073742326, "expressionEnd"); +c$.tokenConnected = JS.T.o(134217736, "connected"); +c$.tokenCoordinateBegin = JS.T.o(1073742332, "{"); +c$.tokenRightBrace = JS.T.o(1073742338, "}"); +c$.tokenCoordinateEnd = JS.T.tokenRightBrace; +c$.tokenColon = JS.T.o(268436482, ":"); +c$.tokenSetCmd = JS.T.o(36867, "set"); +c$.tokenSet = JS.T.tv(36867, 61, ""); +c$.tokenSetArray = JS.T.tv(36867, 91, ""); +c$.tokenSetProperty = JS.T.tv(36867, 46, ""); +c$.tokenSetVar = JS.T.tv(36868, 61, "var"); +c$.tokenEquals = JS.T.o(268440324, "="); +c$.tokenScript = JS.T.o(134222850, "script"); +c$.tokenSwitch = JS.T.o(102410, "switch"); +c$.tokenMap = new java.util.Hashtable(); +{ +var arrayPairs = Clazz_newArray(-1, ["(", JS.T.tokenLeftParen, ")", JS.T.tokenRightParen, "and", JS.T.tokenAnd, "&", null, "&&", null, "or", JS.T.tokenOr, "|", null, "||", null, "?", JS.T.tokenOpIf, ",", JS.T.tokenComma, "=", JS.T.tokenEquals, "==", null, ":", JS.T.tokenColon, "+", JS.T.tokenPlus, "-", JS.T.tokenMinus, "*", JS.T.tokenTimes, "/", JS.T.tokenDivide, "script", JS.T.tokenScript, "source", null, "set", JS.T.tokenSetCmd, "switch", JS.T.tokenSwitch, "all", JS.T.tokenAll, "off", JS.T.tokenOff, "false", null, "on", JS.T.tokenOn, "true", null]); +var tokenThis; +var tokenLast = null; +var sTok; +var lcase; +var n = arrayPairs.length - 1; +for (var i = 0; i < n; i += 2) { +sTok = arrayPairs[i]; +lcase = sTok.toLowerCase(); +tokenThis = arrayPairs[i + 1]; +if (tokenThis == null) tokenThis = tokenLast; + else if (tokenThis.value == null) tokenThis.value = sTok; +JS.T.tokenMap.put(lcase, tokenThis); +tokenLast = tokenThis; +} +arrayPairs = null; +var sTokens = Clazz_newArray(-1, ["+=", "-=", "*=", "/=", "\\=", "&=", "|=", "not", "!", "xor", "tog", "<", "<=", ">=", ">", "!=", "<>", "LIKE", "within", ".", "..", "[", "]", "{", "}", "$", "%", ";", "++", "--", "**", "\\", "animation", "anim", "assign", "axes", "backbone", "background", "bind", "bondorder", "boundbox", "boundingBox", "break", "calculate", "capture", "cartoon", "cartoons", "case", "catch", "cd", "center", "centre", "centerat", "cgo", "color", "colour", "compare", "configuration", "conformation", "config", "connect", "console", "contact", "contacts", "continue", "data", "default", "define", "@", "delay", "delete", "density", "depth", "dipole", "dipoles", "display", "dot", "dots", "draw", "echo", "ellipsoid", "ellipsoids", "else", "elseif", "end", "endif", "exit", "eval", "file", "files", "font", "for", "format", "frame", "frames", "frank", "function", "functions", "geosurface", "getProperty", "goto", "halo", "halos", "helix", "helixalpha", "helix310", "helixpi", "hbond", "hbonds", "help", "hide", "history", "hover", "if", "in", "initialize", "invertSelected", "isosurface", "javascript", "label", "labels", "lcaoCartoon", "lcaoCartoons", "load", "log", "loop", "matrix", "measure", "measures", "monitor", "monitors", "meshribbon", "meshribbons", "message", "minimize", "minimization", "mo", "model", "models", "modulation", "move", "moveTo", "mutate", "navigate", "navigation", "nbo", "origin", "out", "parallel", "pause", "wait", "plot", "private", "plot3d", "pmesh", "polygon", "polyhedra", "polyhedron", "print", "process", "prompt", "quaternion", "quaternions", "quit", "ramachandran", "rama", "refresh", "reset", "unset", "restore", "restrict", "return", "ribbon", "ribbons", "rocket", "rockets", "rotate", "rotateSelected", "save", "select", "selectionHalos", "selectionHalo", "showSelections", "sheet", "show", "slab", "spacefill", "cpk", "spin", "ssbond", "ssbonds", "star", "stars", "step", "steps", "stereo", "strand", "strands", "structure", "_structure", "strucNo", "struts", "strut", "subset", "subsystem", "synchronize", "sync", "trace", "translate", "translateSelected", "try", "unbind", "unitcell", "var", "vector", "vectors", "vibration", "while", "wireframe", "write", "zap", "zoom", "zoomTo", "atom", "atoms", "axisangle", "basepair", "basepairs", "orientation", "orientations", "pdbheader", "polymer", "polymers", "residue", "residues", "rotation", "row", "sequence", "seqcode", "shape", "state", "symbol", "symmetry", "symmetryHM", "spaceGroup", "transform", "translation", "url", "_", "abs", "absolute", "_args", "acos", "add", "adpmax", "adpmin", "align", "altloc", "altlocs", "ambientOcclusion", "amino", "angle", "array", "as", "_a", "atomID", "_atomID", "atomIndex", "atomName", "atomno", "atomType", "atomX", "atomY", "atomZ", "average", "babel", "babel21", "back", "backlit", "backshell", "balls", "baseModel", "best", "beta", "bin", "bondCount", "bonded", "bottom", "branch", "brillouin", "bzone", "cache", "carbohydrate", "cell", "chain", "chains", "chainNo", "chemicalShift", "cs", "clash", "clear", "clickable", "clipboard", "connected", "context", "constraint", "contourLines", "coord", "coordinates", "coords", "cos", "cross", "covalentRadius", "covalent", "direction", "displacement", "displayed", "distance", "div", "DNA", "domains", "dotted", "DSSP", "DSSR", "element", "elemno", "_e", "error", "exportScale", "fill", "find", "fixedTemperature", "forcefield", "formalCharge", "charge", "eta", "front", "frontlit", "frontOnly", "fullylit", "fx", "fy", "fz", "fxyz", "fux", "fuy", "fuz", "fuxyz", "group", "groups", "group1", "_g", "groupID", "_groupID", "groupIndex", "hidden", "highlight", "hkl", "hydrophobicity", "hydrophobic", "hydro", "id", "identify", "ident", "image", "info", "infoFontSize", "inline", "insertion", "insertions", "intramolecular", "intra", "intermolecular", "inter", "bondingRadius", "ionicRadius", "ionic", "isAromatic", "Jmol", "JSON", "join", "keys", "last", "left", "length", "lines", "list", "magneticShielding", "ms", "mass", "max", "mep", "mesh", "middle", "min", "mlp", "mode", "modify", "modifyOrCreate", "modt", "modt1", "modt2", "modt3", "modx", "mody", "modz", "modo", "modxyz", "molecule", "molecules", "modelIndex", "monomer", "morph", "movie", "mouse", "mul", "mul3", "nboCharges", "nci", "next", "noDelay", "noDots", "noFill", "noMesh", "none", "null", "inherit", "normal", "noBackshell", "noContourLines", "notFrontOnly", "noTriangles", "now", "nucleic", "occupancy", "omega", "only", "opaque", "options", "partialCharge", "pattern", "phi", "pivot", "plane", "planar", "play", "playRev", "point", "points", "pointGroup", "polymerLength", "pop", "previous", "prev", "probe", "property", "properties", "protein", "psi", "purine", "push", "PyMOL", "pyrimidine", "random", "range", "rasmol", "replace", "resno", "resume", "rewind", "reverse", "right", "rmsd", "RNA", "rna3d", "rock", "rubberband", "rxyz", "saSurface", "saved", "scale", "scene", "search", "smarts", "selected", "seqid", "shapely", "sidechain", "sin", "site", "size", "smiles", "substructure", "solid", "sort", "specialPosition", "sqrt", "split", "starWidth", "starScale", "stddev", "straightness", "structureId", "supercell", "sub", "sum", "sum2", "surface", "surfaceDistance", "symop", "symops", "sx", "sy", "sz", "sxyz", "temperature", "relativeTemperature", "tensor", "theta", "thisModel", "ticks", "top", "torsion", "trajectory", "trajectories", "translucent", "transparent", "triangles", "trim", "type", "ux", "uy", "uz", "uxyz", "user", "valence", "vanderWaals", "vdw", "vdwRadius", "visible", "volume", "vx", "vy", "vz", "vxyz", "xyz", "w", "wyckoff", "wyckoffm", "x", "y", "z", "addHydrogens", "allConnected", "angstroms", "anisotropy", "append", "arc", "area", "aromatic", "arrow", "async", "audio", "auto", "axis", "barb", "binary", "blockData", "cancel", "cap", "cavity", "centroid", "check", "checkCIR", "chemical", "circle", "collapsed", "col", "colorScheme", "command", "commands", "contour", "contours", "corners", "count", "criterion", "create", "crossed", "curve", "cutoff", "cylinder", "diameter", "discrete", "distanceFactor", "downsample", "drawing", "dynamicMeasurements", "eccentricity", "ed", "edges", "edgesOnly", "energy", "exitJmol", "faceCenterOffset", "filter", "first", "fixed", "fix", "flat", "fps", "from", "frontEdges", "full", "fullPlane", "functionXY", "functionXYZ", "gridPoints", "hiddenLinesDashed", "homo", "ignore", "InChI", "InChIKey", "increment", "insideout", "interior", "intersection", "intersect", "internal", "lattice", "line", "lineData", "link", "lobe", "lonePair", "lp", "lumo", "macro", "manifest", "mapProperty", "maxSet", "menu", "minSet", "modelBased", "molecular", "mrc", "msms", "name", "nmr", "noCross", "noDebug", "noEdges", "noHead", "noLoad", "noPlane", "object", "obj", "offset", "offsetSide", "once", "orbital", "atomicOrbital", "packed", "palindrome", "parameters", "path", "pdb", "period", "periodic", "perpendicular", "perp", "phase", "planarParam", "pocket", "pointsPerAngstrom", "radical", "rad", "reference", "remove", "resolution", "reverseColor", "rotate45", "selection", "sigma", "sign", "silent", "sphere", "squared", "stdInChI", "stdInChIKey", "stop", "title", "titleFormat", "to", "validation", "value", "variable", "variables", "vertices", "width", "wigner", "wignerSeitz", "backgroundModel", "celShading", "celShadingPower", "debug", "debugHigh", "defaultLattice", "measurements", "measurement", "scale3D", "toggleLabel", "userColorScheme", "throw", "timeout", "timeouts", "window", "animationMode", "appletProxy", "atomTypes", "axesColor", "axis1Color", "axis2Color", "axis3Color", "backgroundColor", "bondmode", "boundBoxColor", "boundingBoxColor", "chirality", "cipRule", "currentLocalPath", "dataSeparator", "defaultAngleLabel", "defaultColorScheme", "defaultColors", "defaultDirectory", "defaultDistanceLabel", "defaultDropScript", "defaultLabelPDB", "defaultLabelXYZ", "defaultLoadFilter", "defaultLoadScript", "defaults", "defaultTorsionLabel", "defaultVDW", "drawFontSize", "eds", "edsDiff", "energyUnits", "fileCacheDirectory", "fontsize", "helpPath", "hoverLabel", "language", "loadFormat", "loadLigandFormat", "logFile", "measurementUnits", "nihResolverFormat", "nmrPredictFormat", "nmrUrlFormat", "pathForAllFiles", "picking", "pickingStyle", "pickLabel", "platformSpeed", "propertyColorScheme", "quaternionFrame", "smilesUrlFormat", "smiles2dImageFormat", "unitCellColor", "axesOffset", "axisOffset", "axesScale", "axisScale", "bondTolerance", "cameraDepth", "defaultDrawArrowScale", "defaultTranslucent", "dipoleScale", "ellipsoidAxisDiameter", "gestureSwipeFactor", "hbondsAngleMinimum", "hbondHXDistanceMaximum", "hbondsDistanceMaximum", "hbondNODistanceMaximum", "hoverDelay", "loadAtomDataTolerance", "minBondDistance", "minimizationCriterion", "minimizationMaxAtoms", "modulationScale", "mouseDragFactor", "mouseWheelFactor", "navFPS", "navigationDepth", "navigationSlab", "navigationSpeed", "navX", "navY", "navZ", "particleRadius", "pointGroupDistanceTolerance", "pointGroupLinearTolerance", "radius", "rotationRadius", "scaleAngstromsPerInch", "sheetSmoothing", "slabRange", "solventProbeRadius", "spinFPS", "spinX", "spinY", "spinZ", "stereoDegrees", "strutDefaultRadius", "strutLengthMaximum", "vectorScale", "vectorsCentered", "vectorSymmetry", "vectorTrail", "vibrationPeriod", "vibrationScale", "visualRange", "ambientPercent", "ambient", "animationFps", "axesMode", "bondRadiusMilliAngstroms", "bondingVersion", "delayMaximumMs", "diffusePercent", "diffuse", "dotDensity", "dotScale", "ellipsoidDotCount", "helixStep", "hermiteLevel", "historyLevel", "labelpointerwidth", "lighting", "logLevel", "meshScale", "minimizationReportSteps", "minimizationSteps", "minPixelSelRadius", "percentVdwAtom", "perspectiveModel", "phongExponent", "pickingSpinRate", "propertyAtomNumberField", "propertyAtomNumberColumnCount", "propertyDataColumnCount", "propertyDataField", "repaintWaitMs", "ribbonAspectRatio", "contextDepthMax", "scriptReportingLevel", "showScript", "smallMoleculeMaxAtoms", "specular", "specularExponent", "specularPercent", "specPercent", "specularPower", "specpower", "strandCount", "strandCountForMeshRibbon", "strandCountForStrands", "strutSpacing", "zDepth", "zSlab", "zshadePower", "allowEmbeddedScripts", "allowGestures", "allowKeyStrokes", "allowModelKit", "allowMoveAtoms", "allowMultiTouch", "allowRotateSelected", "antialiasDisplay", "antialiasImages", "antialiasTranslucent", "appendNew", "applySymmetryToBonds", "atomPicking", "allowAudio", "autobond", "autoFPS", "autoplayMovie", "axesMolecular", "axesOrientationRasmol", "axesUnitCell", "axesWindow", "bondModeOr", "bondPicking", "bonds", "bond", "cartoonBaseEdges", "cartoonBlocks", "cartoonBlockHeight", "cartoonsFancy", "cartoonFancy", "cartoonLadders", "cartoonRibose", "cartoonRockets", "cartoonSteps", "chainCaseSensitive", "cipRule6Full", "colorRasmol", "debugScript", "defaultStructureDssp", "disablePopupMenu", "displayCellParameters", "showUnitcellInfo", "dotsSelectedOnly", "dotSurface", "doublePrecision", "dragSelected", "drawHover", "drawPicking", "dsspCalculateHydrogenAlways", "elementKey", "ellipsoidArcs", "ellipsoidArrows", "ellipsoidAxes", "ellipsoidBall", "ellipsoidDots", "ellipsoidFill", "fileCaching", "fontCaching", "fontScaling", "forceAutoBond", "fractionalRelative", "greyscaleRendering", "hbondsBackbone", "hbondsRasmol", "hbondsSolid", "hetero", "hideNameInPopup", "hideNavigationPoint", "hideNotSelected", "highResolution", "hydrogen", "hydrogens", "imageState", "isKiosk", "isosurfaceKey", "isosurfacePropertySmoothing", "isosurfacePropertySmoothingPower", "jmolInJSpecView", "justifyMeasurements", "languageTranslation", "leadAtom", "leadAtoms", "legacyAutoBonding", "legacyHAddition", "legacyJavaFloat", "logCommands", "logGestures", "macroDirectory", "measureAllModels", "measurementLabels", "measurementNumbers", "messageStyleChime", "minimizationRefresh", "minimizationSilent", "modelkit", "modelkitMode", "modulateOccupancy", "monitorEnergy", "multiplebondbananas", "multipleBondRadiusFactor", "multipleBondSpacing", "multiProcessor", "navigateSurface", "navigationMode", "navigationPeriodic", "partialDots", "pdbAddHydrogens", "pdbGetHeader", "pdbSequential", "perspectiveDepth", "preserveState", "rangeSelected", "redo", "redoMove", "refreshing", "ribbonBorder", "rocketBarrels", "saveProteinStructureState", "scriptQueue", "selectAllModels", "selectHetero", "selectHydrogen", "showAxes", "showBoundBox", "showBoundingBox", "showFrank", "showHiddenSelectionHalos", "showHydrogens", "showKeyStrokes", "showMeasurements", "showModulationVectors", "showMultipleBonds", "showNavigationPointAlways", "showTiming", "showUnitcell", "showUnitcellDetails", "slabByAtom", "slabByMolecule", "slabEnabled", "smartAromatic", "solvent", "solventProbe", "ssBondsBackbone", "statusReporting", "strutsMultiple", "syncMouse", "syncScript", "testFlag1", "testFlag2", "testFlag3", "testFlag4", "traceAlpha", "twistedSheets", "undoAuto", "undo", "undoMax", "undoMove", "useMinimizationThread", "useNumberLocalization", "waitForMoveTo", "windowCentered", "wireframeRotation", "zeroBasedXyzRasmol", "zoomEnabled", "zoomHeight", "zoomLarge", "zShade"]); +var iTokens = Clazz_newIntArray(-1, [268442114, -1, -1, -1, -1, -1, -1, 268439040, -1, 268438017, 268438018, 268440323, 268440322, 268440321, 268440320, 268440325, -1, 268440326, 134217759, 1073742336, 1073742337, 268437504, 268437505, 1073742332, 1073742338, 1073742330, 268441090, 1073742339, 268441602, 268441601, 268441603, 268441091, 4097, -1, 4098, 1611272194, 1114249217, 1610616835, 4100, 4101, 1812599299, -1, 102407, 4102, 4103, 1112152066, -1, 102411, 102412, 20488, 12289, -1, 4105, 135174, 1765808134, -1, 134221831, 1094717448, -1, -1, 4106, 528395, 134353926, -1, 102408, 134221834, 102413, 12290, -1, 528397, 12291, 1073741914, 554176526, 135175, -1, 1610625028, 1275069444, 1112150019, 135176, 537022465, 1112150020, -1, 364547, 102402, 102409, 364548, 266255, 134218759, 1228935687, -1, 4114, 134320648, 1287653388, 4115, -1, 1611272202, 134320141, -1, 1112150021, 1275072526, 20500, 1112152070, -1, 136314895, 2097159, 2097160, 2097162, 1613238294, -1, 20482, 12294, 1610616855, 544771, 134320649, 1275068432, 4121, 4122, 135180, 134238732, 1825200146, -1, 135182, -1, 134223363, 36869, 528411, 134217766, 1745489939, -1, -1, -1, 1112152071, -1, 20485, 4126, -1, 1073877010, 1094717454, -1, 1275072532, 4128, 4129, 4130, 4131, -1, 1073877011, 1073742078, 1073742079, 102436, 20487, -1, 4133, 4134, 135190, 135188, 1073742106, 1275203608, -1, 36865, 102439, 134256129, 134221850, -1, 266281, 4138, -1, 266284, 4141, -1, 4142, 12295, 36866, 1112152073, -1, 1112152074, -1, 528432, 4145, 4146, 1275082241, 1611141172, -1, -1, 2097184, 134222350, 554176565, 1112152075, -1, 1611141175, 1611141176, -1, 1112152076, -1, 266298, -1, 528443, 1649022989, -1, 1639976963, -1, 1094713367, 659482, -1, 2109448, 1094713368, 4156, -1, 1112152078, 4160, 4162, 364558, 4163, 1814695966, 36868, 135198, -1, 4166, 102406, 659488, 134221856, 12297, 4168, 4170, 1153433601, -1, 134217731, 1073741863, -1, 1073742077, -1, 1073742088, 1094713362, -1, 1073742120, -1, 1073742132, 1275068935, 1086324744, 1086324747, 1086324748, 1073742158, 1086326798, 1088421903, 603979956, 134217764, 1073742176, 1073742178, 1073742184, 1275068446, 134218250, 1073741826, 134217765, 134218241, 1275069441, 1111490561, 1111490562, 1073741832, 1086324739, -1, 553648129, 2097154, 134217729, 1275068418, 1073741848, 1094713346, -1, -1, 1094713347, 1086326786, 1094715393, 1086326785, 1111492609, 1111492610, 1111492611, 96, 1073741856, 1073741857, 1073741858, 1073741861, 1073741862, 1073741859, 2097200, 1073741864, 1073741865, 1275068420, 1228931586, 2097155, 1073741871, 1073742328, 1073741872, -1, 134221829, 2097188, 1094713349, 1086326788, -1, 1094713351, 1111490563, -1, 1073741881, 1073741882, 2097190, 1073741884, 134217736, 14, 1073741894, 1073741898, 1073742329, -1, -1, 134218245, 1275069442, 1111490564, -1, 1073741918, 1073741922, 2097192, 1275069443, 1275068928, 2097156, 1073741925, 1073741926, 1073741915, 1111490587, 1086326789, 1094715402, 1094713353, 1073741936, 570425357, 1073741938, 1275068427, 1073741946, 545259560, 1631586315, -1, 1111490565, 1073741954, 1073741958, 1073741960, 1073741964, 1111492612, 1111492613, 1111492614, 1145047050, 1111492615, 1111492616, 1111492617, 1145047053, 1086324742, -1, 1086324743, 1094713356, -1, -1, 1094713357, 2097194, 536870920, 134219777, 1113589786, -1, -1, 1073741974, 1086324745, -1, 4120, 1073741982, 553648145, 1073741984, 1086324746, -1, 1073741989, -1, 1073741990, -1, 1111492618, -1, -1, 1073742331, 1073741991, 1073741992, 1275069446, 1140850706, 1073741993, 1073741996, 1140850691, 1140850692, 1073742001, 1111490566, -1, 1111490567, 64, 1073742016, 1073742018, 1073742019, 32, 1073742022, 1073742024, 1073742025, 1073742026, 1111490580, -1, 1111490581, 1111490582, 1111490583, 1111490584, 1111490585, 1111490586, 1145045008, 1094713360, -1, 1094713359, 1094713361, 1073742029, 1073742031, 1073742030, 1275068929, 1275068930, 603979891, 1073742036, 1073742037, 603979892, 1073742042, 1073742046, 1073742052, 1073742333, -1, -1, 1073742056, 1073742057, 1073742039, 1073742058, 1073742060, 134218760, 2097166, 1128269825, 1111490568, 1073742072, 1073742074, 1073742075, 1111492619, 134218753, 1111490569, 1275068725, 134217750, -1, 1073742096, 1073742098, 134217751, -1, 1275068447, 1094713363, 1275334681, 1073742108, -1, 1073742109, 1715472409, -1, 2097168, 1111490570, 2097170, 1275335685, 1073742110, 2097172, 134219266, 1073742114, 1073742116, 1275068443, 1094715412, 4143, 1073742125, 1140850693, 1073742126, 1073742127, 2097174, 1073742128, 1073742129, 1073742134, 1145045003, 1073742135, 1073742136, 536875059, 1073742139, 134218756, -1, 1113589787, 1094713365, 1073742144, 2097178, 134218244, 1094713366, 1140850694, 134218757, 1237320707, 1073742150, 1275068444, 2097196, 134218246, 1275069447, 570425403, -1, 192, 1111490574, 1086324749, 1073742163, 1275068931, 128, 160, 2097180, 1111490575, 1296041985, -1, 1111490571, 1111490572, 1111490573, 1145047052, 1111492620, -1, 1275068445, 1111490576, 2097182, 1073742164, 1073742172, 1073742174, 536870926, -1, 603979967, -1, 1073742182, 1275068932, 1140850696, 1111490577, 1111490578, 1111490579, 1145045006, 1073742186, 1094715418, 1648363544, -1, -1, 2097198, 1312817669, 1111492626, 1111492627, 1111492628, 1145047055, 1145047049, 1140850705, 1086324754, 1086324755, 1111492629, 1111492630, 1111492631, 1073741828, 1073741834, 1073741836, 1073741837, 1073741839, 1073741840, 1073741842, 1075838996, 1073741846, 1073741849, 1073741851, 1073741852, 1073741854, 1073741860, 1073741866, 1073741868, 1073741874, 1073741875, 1073741876, 1094713350, 1073741877, 603979821, 1073741879, 1073741880, 1073741886, 1275068934, 1073741888, 1073741890, 1073741892, 1073741896, 1073741900, 1073741902, 1275068425, 1073741905, 1073741904, 1073741906, 1073741908, 1073741910, 1073741912, 1073741917, 1073741920, 1073741924, 1073741928, 1073741929, 603979836, 1073741931, 1073741932, 1073741933, 1073741934, 1073741935, 266256, 1073741937, 1073741940, 1073741942, 12293, -1, 1073741948, 1073741950, 1073741952, 1073741956, 1073741961, 1073741962, 1073741966, 1073741968, 1073741970, 603979856, 1073741973, 1073741976, 1275068433, 1073741978, 1073741981, 1073741985, 1073741986, 134217763, -1, 1073741988, 1073741994, 1073741998, 1073742000, 1073741999, 1073742002, 1073742004, 1073742006, 1073742008, 4124, 1073742010, 4125, 1073742014, 1073742015, 1073742020, 1073742027, 1073742028, 1073742032, 1073742033, 1073742034, 1073742038, 1073742040, 1073742041, 1073742044, 1073742048, 1073742050, 1073742054, 1073742064, 1073742062, 1073742066, 1073742068, 1073742070, 1073742076, 1073741850, 1073742080, 1073742082, 1073742083, 1073742084, 1073742086, 1073742090, -1, 1073742092, -1, 1073742094, 1073742099, 1073742100, 1073742104, 1073742112, 1073742111, 1073742118, 1073742119, 1073742122, 1073742124, 1073742130, 1073742140, 1073742146, 1073742147, 1073742148, 1073742154, 1073742156, 1073742159, 1073742160, 1073742162, 1073742166, 1073742168, 1073742170, 1073742189, 1073742188, 1073742190, 1073742192, 1073742194, 1073742196, 1073742197, -1, 536870914, 603979820, 553648135, 536870916, 536870917, 536870918, 537006096, -1, 1610612740, 1610612741, 536870930, 36870, 536875070, -1, 536870932, 545259521, 545259522, 545259524, 545259526, 545259528, 545259530, 545259532, 545259534, 1610612737, 545259536, -1, 1086324752, 1086324753, 545259538, 545259540, 545259542, 545259545, -1, 545259546, 545259547, 545259548, 545259543, 545259544, 545259549, 545259550, 545259552, 545259554, 545259555, 570425355, 545259556, 545259557, 545259558, 545259559, 1610612738, 545259561, 545259562, 545259563, 545259564, 545259565, 545259566, 545259568, 545259570, 545259569, 545259571, 545259572, 545259573, 545259574, 545259576, 553648158, 545259578, 545259580, 545259582, 545259584, 545259586, 570425345, -1, 570425346, -1, 570425348, 570425350, 570425352, 570425353, 570425354, 570425356, 570425358, 570425359, 570425361, 570425360, -1, 570425362, 570425363, 570425364, 570425365, 553648152, 570425366, 570425367, 570425368, 570425371, 570425372, 570425373, 570425374, 570425376, 570425378, 570425380, 570425381, 570425382, 570425384, 1665140738, 570425388, 570425390, 570425392, 570425393, 570425394, 570425396, 570425398, 570425400, 570425402, 570425404, 570425406, 570425408, 1648361473, 603979972, 603979973, 553648185, 570425412, 570425414, 570425416, 553648130, -1, 553648132, 553648133, 553648134, 553648136, 553648137, 553648138, -1, 553648139, 553648140, 553648141, 553648142, 553648143, 553648144, 553648147, 1073741995, 553648148, 553648149, 553648150, 553648151, 553648153, 553648154, 553648155, 553648156, 553648157, 553648160, 553648161, 553648162, 553648164, 553648165, 553648166, 553648167, 553648168, 536870922, 553648170, 536870924, 553648172, 553648174, -1, 553648176, -1, 553648178, 553648180, 553648182, 553648183, 553648186, 553648188, 553648190, 603979778, 603979780, 603979781, 603979782, 603979783, 603979784, 603979785, 603979786, 603979788, 603979790, 603979792, 603979794, 603979796, 603979797, 603979798, 603979800, 603979802, 603979804, 603979806, 603979808, 603979809, 603979812, 603979814, 1677721602, -1, 603979815, 603979810, 570425347, 603979816, -1, 603979817, 603979818, 603979819, 603979811, 603979822, 603979823, 603979824, 603979825, 603979826, 603979827, 603979828, -1, 603979829, 603979830, 603979831, 603979832, 603979833, 603979834, 603979835, 603979838, 603979839, 603979840, 603979841, 603979842, 603979843, 603979844, 603979845, 603979846, 603979847, 603979848, 603979849, 603979850, 603979852, 603979853, 603979854, 1612709894, 603979858, 603979860, 603979862, 603979864, 1612709900, -1, 603979865, 603979866, 603979867, 603979868, 553648146, 603979869, 603979870, 603979871, 2097165, -1, 603979872, 603979873, 603979874, 603979875, 603979876, 545259567, 603979877, 603979878, 1610612739, 603979879, 603979880, 603979881, 603983903, -1, 603979884, 603979885, 603979886, 570425369, 570425370, 603979887, 603979888, 603979889, 603979890, 603979893, 603979894, 603979895, 603979896, 603979897, 603979898, 603979899, 4139, 4140, 603979900, 603979901, 603979902, 603979903, 603979904, 603979906, 603979908, 603979910, 603979914, 603979916, -1, 603979918, 603979920, 603979922, 603979924, 603979926, 603979927, 603979928, 603979930, 603979934, 603979936, 603979937, 603979939, 603979940, 603979942, 603979944, 1612709912, 603979948, 603979952, 603979954, 603979955, 603979957, 603979958, 603979960, 603979962, 603979964, 603979965, 603979966, 603979968, 603979969, 603984065, 553648184, 4165, 603979970, 603979971, 603979975, 603979976, 603979977, 603979978, 603979980, 603979982, 603979983, 603979984]); +if (sTokens.length != iTokens.length) { +JU.Logger.error("sTokens.length (" + sTokens.length + ") != iTokens.length! (" + iTokens.length + ")"); +System.exit(1); +}n = sTokens.length; +for (var i = 0; i < n; i++) { +sTok = sTokens[i]; +lcase = sTok.toLowerCase(); +var t = iTokens[i]; +tokenThis = tokenLast = (t == -1 ? tokenLast : JS.T.o(t, sTok)); +if (JS.T.tokenMap.get(lcase) != null) JU.Logger.error("duplicate token definition:" + lcase); +JS.T.tokenMap.put(lcase, tokenThis); +} +sTokens = null; +iTokens = null; +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape"], "J.shape.AtomShape", ["JU.AU", "$.BS", "J.atomdata.RadiusData", "J.c.PAL", "$.VDW", "JU.BSUtil", "$.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mad = -1; +this.mads = null; +this.colixes = null; +this.paletteIDs = null; +this.isActive = false; +this.rd = null; +this.isSet = false; +this.monomerCount = 0; +this.bsSizeDefault = null; +Clazz_instantialize(this, arguments);}, J.shape, "AtomShape", J.shape.Shape); +Clazz_overrideMethod(c$, "initShape", +function(){ +}); +Clazz_overrideMethod(c$, "initModelSet", +function(){ +this.isSet = true; +var ac = this.ms.ac; +if (this.mads != null) this.mads = JU.AU.arrayCopyShort(this.mads, ac); +if (this.colixes != null) this.colixes = JU.AU.arrayCopyShort(this.colixes, ac); +if (this.paletteIDs != null) this.paletteIDs = JU.AU.arrayCopyByte(this.paletteIDs, ac); +}); +Clazz_overrideMethod(c$, "getSize", +function(atomIndex){ +return (this.mads == null ? 0 : this.mads[atomIndex]); +}, "~N"); +Clazz_overrideMethod(c$, "setSize", +function(size, bsSelected){ +this.setSize2(size, bsSelected); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setSize2", +function(size, bsSelected){ +if (size == 0) { +this.setSizeRD(null, bsSelected); +return; +}if (this.rd == null) this.rd = new J.atomdata.RadiusData(null, size, J.atomdata.RadiusData.EnumType.SCREEN, null); + else this.rd.value = size; +this.setSizeRD(this.rd, bsSelected); +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setSizeRD", +function(rd, bsSelected){ +if (!this.isSet) return; +this.isActive = true; +var isVisible = (rd != null && rd.value != 0); +var isAll = (bsSelected == null); +var ac = this.ms.ac; +var i0 = (isAll ? ac - 1 : bsSelected.nextSetBit(0)); +if (this.bsSizeSet == null) this.bsSizeSet = JU.BS.newN(ac); +if (this.mads == null && i0 >= 0) this.mads = Clazz_newShortArray (ac, 0); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) this.setSizeRD2(i, rd, isVisible); + +}, "J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "setSizeRD2", +function(i, rd, isVisible){ +var atom = this.ms.at[i]; +this.mads[i] = atom.calculateMad(this.vwr, rd); +this.bsSizeSet.setBitTo(i, isVisible); +atom.setShapeVisibility(this.vf, isVisible); +}, "~N,J.atomdata.RadiusData,~B"); +Clazz_defineMethod(c$, "setPropAS", +function(propertyName, value, bs){ +if ("color" === propertyName) { +this.isActive = true; +var colix = JU.C.getColixO(value); +var pid = J.c.PAL.pidOf(value); +var n = this.checkColixLength(colix, bs.length()); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) this.setColixAndPalette(colix, pid, i); + +return; +}if ("params" === propertyName) { +this.isActive = true; +var data = value; +var colixes = data[0]; +var atrans = data[1]; +var sizes = data[2]; +var rd = new J.atomdata.RadiusData(null, 0, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO); +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var i0 = bs.nextSetBit(0); +if (this.mads == null && i0 >= 0) this.mads = Clazz_newShortArray (this.ms.ac, 0); +var n = this.checkColixLength(colixes == null ? 0 : 4, bs.length()); +for (var i = i0, pt = 0; i >= 0 && i < n; i = bs.nextSetBit(i + 1), pt++) { +var colix = (colixes == null ? 0 : colixes[pt]); +var f = (atrans == null ? 0 : atrans[pt]); +if (f > 0.01) colix = JU.C.getColixTranslucent3(colix, true, f); +this.setColixAndPalette(colix, J.c.PAL.UNKNOWN.id, i); +if (sizes == null) continue; +var isVisible = ((rd.value = sizes[pt]) > 0); +this.setSizeRD2(i, rd, isVisible); +} +return; +}if ("translucency" === propertyName) { +this.isActive = true; +var isTranslucent = (value.equals("translucent")); +this.checkColixLength(4, this.ms.ac); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.colixes[i] = JU.C.getColixTranslucent3(this.colixes[i], isTranslucent, this.translucentLevel); +if (isTranslucent) this.bsColixSet.set(i); +} +return; +}if (propertyName === "deleteModelAtoms") { +var info = (value)[2]; +var firstAtomDeleted = info[1]; +var nAtomsDeleted = info[2]; +this.mads = JU.AU.deleteElements(this.mads, firstAtomDeleted, nAtomsDeleted); +this.colixes = JU.AU.deleteElements(this.colixes, firstAtomDeleted, nAtomsDeleted); +this.paletteIDs = JU.AU.deleteElements(this.paletteIDs, firstAtomDeleted, nAtomsDeleted); +JU.BSUtil.deleteBits(this.bsSizeSet, bs); +JU.BSUtil.deleteBits(this.bsColixSet, bs); +return; +}this.setPropS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "checkColixLength", +function(colix, n){ +n = Math.min(this.ms.ac, n); +if (colix == 0) return (this.colixes == null ? 0 : this.colixes.length); +if (this.colixes == null || n > this.colixes.length) { +this.colixes = JU.AU.ensureLengthShort(this.colixes, n); +this.paletteIDs = JU.AU.ensureLengthByte(this.paletteIDs, n); +}if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.ms.ac); +return n; +}, "~N,~N"); +Clazz_defineMethod(c$, "setColixAndPalette", +function(colix, paletteID, atomIndex){ +if (this.colixes == null) { +this.checkColixLength(-1, this.ms.ac); +}this.colixes[atomIndex] = colix = this.getColixI(colix, paletteID, atomIndex); +this.bsColixSet.setBitTo(atomIndex, colix != 0 || this.shapeID == 0); +this.paletteIDs[atomIndex] = paletteID; +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +if (!this.isActive) return; +var atoms = this.ms.at; +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (atom == null || (atom.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(i)) continue; +atom.setClickable(this.vf); +} +}); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.AtomShape"], "J.shape.Balls", ["JU.BS", "J.c.PAL", "JU.C"], function(){ +var c$ = Clazz_declareType(J.shape, "Balls", J.shape.AtomShape); +Clazz_overrideMethod(c$, "setSize", +function(size, bsSelected){ +if (size == 2147483647) { +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +this.bsSizeSet.or(bsSelected); +return; +}this.setSize2(size, bsSelected); +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setSizeRD", +function(rd, bsSelected){ +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var bsLength = Math.min(this.ms.at.length, bsSelected.length()); +for (var i = bsSelected.nextSetBit(0); i >= 0 && i < bsLength; i = bsSelected.nextSetBit(i + 1)) { +var atom = this.ms.at[i]; +atom.setMadAtom(this.vwr, rd); +this.bsSizeSet.set(i); +} +}, "J.atomdata.RadiusData,JU.BS"); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("color" === propertyName) { +var colix = JU.C.getColixO(value); +if (colix == 0) colix = 2; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var pid = J.c.PAL.pidOf(value); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var atom = this.ms.at[i]; +atom.colixAtom = this.getColixA(colix, pid, atom); +this.bsColixSet.setBitTo(i, colix != 2 || pid != J.c.PAL.NONE.id); +atom.paletteID = pid; +} +this.vwr.setModelkitPropertySafely("updateatomkeys", bs); +return; +}if ("colorValues" === propertyName) { +var values = value; +if (values.length == 0) return; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var n = 0; +var color = null; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (n >= values.length) return; +color = Integer.$valueOf(values[n++]); +var colix = JU.C.getColixO(color); +if (colix == 0) colix = 2; +var pid = J.c.PAL.pidOf(color); +var atom = this.ms.at[i]; +atom.colixAtom = this.getColixA(colix, pid, atom); +this.bsColixSet.setBitTo(i, colix != 2 || pid != J.c.PAL.NONE.id); +atom.paletteID = pid; +} +return; +}if ("colors" === propertyName) { +var data = value; +var colixes = data[0]; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var c; +var atoms = this.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (i >= colixes.length || (c = colixes[i]) == 0) continue; +atoms[i].colixAtom = c; +atoms[i].paletteID = J.c.PAL.UNKNOWN.id; +this.bsColixSet.set(i); +} +return; +}if ("translucency" === propertyName) { +var isTranslucent = ((value).equals("translucent")); +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var atoms = this.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +atoms[i].setTranslucent(isTranslucent, this.translucentLevel); +if (isTranslucent) this.bsColixSet.set(i); +} +return; +}if (propertyName.startsWith("ball")) { +propertyName = propertyName.substring(4).intern(); +}this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +var bsDeleted = this.vwr.slm.bsDeleted; +for (var i = this.ms.ac; --i >= 0; ) { +var atom = this.ms.at[i]; +if (atom == null) continue; +atom.setClickable(0); +if (bsDeleted != null && bsDeleted.get(i) || (atom.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(i)) continue; +atom.setClickable(this.vf); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape"], "J.shape.FontLineShape", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tickInfos = null; +this.font3d = null; +Clazz_instantialize(this, arguments);}, J.shape, "FontLineShape", J.shape.Shape); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.translucentAllowed = false; +}); +Clazz_defineMethod(c$, "setPropFLS", +function(propertyName, value){ +if ("tickInfo" === propertyName) { +var t = value; +var type = t.type; +if (t.ticks == null) { +if (t.type == ' ') { +this.tickInfos = null; +return; +}if (this.tickInfos != null) { +var haveTicks = false; +for (var i = 0; i < 4; i++) { +if (this.tickInfos[i] != null && this.tickInfos[i].type == t.type) { +this.tickInfos[i] = null; +} else { +haveTicks = true; +}} +if (!haveTicks) this.tickInfos = null; +}return; +}if (this.tickInfos == null) this.tickInfos = new Array(4); +this.tickInfos["xyz".indexOf(type) + 1] = t; +return; +}if ("font" === propertyName) { +this.font3d = value; +return; +}}, "~S,~O"); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape"], "J.shape.Frank", ["J.i18n.GT", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.currentMetricsFont3d = null; +this.baseFont3d = null; +this.frankWidth = 0; +this.frankAscent = 0; +this.frankDescent = 0; +this.x = 0; +this.y = 0; +this.dx = 0; +this.dy = 0; +this.scaling = 0; +this.font3d = null; +Clazz_instantialize(this, arguments);}, J.shape, "Frank", J.shape.Shape); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.myType = "frank"; +this.baseFont3d = this.font3d = this.vwr.gdata.getFont3DFSS("SansSerif", "Plain", 16); +if (JV.Viewer.isJS || JV.Viewer.isSwingJS) J.shape.Frank.frankString = "JSmol"; + else if (false) J.shape.Frank.frankString = "JmolD"; +this.calcMetrics(); +}); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("font" === propertyName) { +var f = value; +if (f.fontSize >= 10) { +this.baseFont3d = f; +this.scaling = 0; +}}return; +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "wasClicked", +function(x, y){ +var width = this.vwr.getScreenWidth(); +var height = this.vwr.getScreenHeight(); +return (width > 0 && height > 0 && x > width - this.frankWidth - 4 && y > height - this.frankAscent - 4); +}, "~N,~N"); +Clazz_overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +if (!this.vwr.getShowFrank() || !this.wasClicked(x, y) || !this.vwr.menuEnabled()) return false; +this.vwr.hoverOnPt(x, y, J.i18n.GT.$("Click for menu..."), null, null); +return true; +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "calcMetrics", +function(){ +if (this.font3d === this.currentMetricsFont3d) return; +this.currentMetricsFont3d = this.font3d; +this.frankWidth = this.font3d.stringWidth(J.shape.Frank.frankString); +this.frankDescent = this.font3d.getDescent(); +this.frankAscent = this.font3d.getAscent(); +}); +Clazz_defineMethod(c$, "getFont", +function(imageFontScaling){ +if (imageFontScaling != this.scaling) { +this.scaling = imageFontScaling; +this.font3d = this.vwr.gdata.getFont3DScaled(this.baseFont3d, imageFontScaling); +this.calcMetrics(); +}}, "~N"); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +c$.frankString = "Jmol"; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(null, "J.shape.Shape", ["J.c.PAL", "JU.C", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.myType = null; +this.vwr = null; +this.ms = null; +this.shapeID = 0; +this.vf = 0; +this.translucentLevel = 0; +this.translucentAllowed = true; +this.isBioShape = false; +this.bsSizeSet = null; +this.bsColixSet = null; +Clazz_instantialize(this, arguments);}, J.shape, "Shape", null); +Clazz_defineMethod(c$, "initializeShape", +function(vwr, modelSet, shapeID){ +this.vwr = vwr; +this.shapeID = shapeID; +this.vf = JV.JC.getShapeVisibilityFlag(shapeID); +this.setModelSet(modelSet); +this.initShape(); +}, "JV.Viewer,JM.ModelSet,~N"); +Clazz_defineMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +}, "JU.BS"); +Clazz_defineMethod(c$, "getSize", +function(atomIndex){ +return 0; +}, "~N"); +Clazz_defineMethod(c$, "getSizeG", +function(group){ +return 0; +}, "JM.Group"); +Clazz_defineMethod(c$, "replaceGroup", +function(g0, g1){ +}, "JM.Group,JM.Group"); +Clazz_defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = modelSet; +this.initModelSet(); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "initModelSet", +function(){ +}); +Clazz_defineMethod(c$, "setShapeSizeRD", +function(size, rd, bsSelected){ +if (rd == null) this.setSize(size, bsSelected); + else this.setSizeRD(rd, bsSelected); +}, "~N,J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "setSize", +function(size, bsSelected){ +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setSizeRD", +function(rd, bsSelected){ +}, "J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "setPropS", +function(propertyName, value, bsSelected){ +if (propertyName === "setProperties") { +this.setProperties(value); +return; +}if (propertyName === "translucentLevel") { +this.translucentLevel = (value).floatValue(); +return; +}if (propertyName === "refreshTrajectories") { +return; +}JU.Logger.warn("unassigned " + JV.JC.shapeClassBases[this.shapeID] + " + shape setProperty:" + propertyName + ":" + value); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "getPropertyData", +function(property, data){ +return this.getPropShape(property, data); +}, "~S,~A"); +Clazz_defineMethod(c$, "getPropShape", +function(property, data){ +if (Clazz_instanceOf(data[1], Integer)) { +var index = (data[1]).intValue(); +data[1] = this.getProperty(property, index); +return (data[1] != null); +}return false; +}, "~S,~A"); +Clazz_defineMethod(c$, "getProperty", +function(property, index){ +return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "getIndexFromName", +function(thisID){ +return -1; +}, "~S"); +Clazz_defineMethod(c$, "wasClicked", +function(x, y){ +return false; +}, "~N,~N"); +Clazz_defineMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, bsNot){ +}, "~N,~N,~A,JU.BS"); +Clazz_defineMethod(c$, "checkBoundsMinMax", +function(pointMin, pointMax){ +}, "JU.P3,JU.P3"); +Clazz_defineMethod(c$, "setAtomClickability", +function(){ +}); +Clazz_defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +return null; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +return false; +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, dragAction, bsVisible){ +return false; +}, "~N,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "coordinateInRange", +function(x, y, vertex, dmin2, ptXY){ +this.vwr.tm.transformPtScr(vertex, ptXY); +var d2 = (x - ptXY.x) * (x - ptXY.x) + (y - ptXY.y) * (y - ptXY.y); +return (d2 <= dmin2 ? d2 : -1); +}, "~N,~N,JU.T3,~N,JU.P3i"); +Clazz_defineMethod(c$, "getColixI", +function(colix, paletteID, atomIndex){ +return this.getColixA(colix, paletteID, this.ms.at[atomIndex]); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getColixA", +function(colix, paletteID, atom){ +return (colix == 2 ? this.vwr.cm.getColixAtomPalette(atom, paletteID) : colix); +}, "~N,~N,JM.Atom"); +Clazz_defineMethod(c$, "getColixB", +function(colix, pid, bond){ +return (colix == 2 ? this.vwr.cm.getColixBondPalette(bond, pid) : colix); +}, "~N,~N,JM.Bond"); +Clazz_defineMethod(c$, "getShapeDetail", +function(){ +return null; +}); +c$.getColix = Clazz_defineMethod(c$, "getColix", +function(colixes, i, atom){ +return JU.C.getColixInherited((colixes == null || i >= colixes.length ? 0 : colixes[i]), atom.colixAtom); +}, "~A,~N,JM.Atom"); +c$.getFontCommand = Clazz_defineMethod(c$, "getFontCommand", +function(type, font){ +if (font == null) return ""; +return "font " + type + " " + font.getInfo(); +}, "~S,JU.Font"); +c$.getColorCommandUnk = Clazz_defineMethod(c$, "getColorCommandUnk", +function(type, colix, translucentAllowed){ +return J.shape.Shape.getColorCommand(type, J.c.PAL.UNKNOWN.id, colix, translucentAllowed); +}, "~S,~N,~B"); +c$.getColorCommand = Clazz_defineMethod(c$, "getColorCommand", +function(type, pid, colix, translucentAllowed){ +if (pid == J.c.PAL.UNKNOWN.id && colix == 0) return ""; +var s = (pid == J.c.PAL.UNKNOWN.id && colix == 0 ? "" : (translucentAllowed ? J.shape.Shape.getTranslucentLabel(colix) + " " : "") + (pid != J.c.PAL.UNKNOWN.id && !J.c.PAL.isPaletteVariable(pid) ? J.c.PAL.getPaletteName(pid) : J.shape.Shape.encodeColor(colix))); +return "color " + type + " " + s; +}, "~S,~N,~N,~B"); +c$.encodeColor = Clazz_defineMethod(c$, "encodeColor", +function(colix){ +return (JU.C.isColixColorInherited(colix) ? "none" : JU.C.getHexCode(colix)); +}, "~N"); +c$.getTranslucentLabel = Clazz_defineMethod(c$, "getTranslucentLabel", +function(colix){ +return (JU.C.isColixTranslucent(colix) ? JU.C.getColixTranslucencyLabel(colix) : "opaque"); +}, "~N"); +c$.appendCmd = Clazz_defineMethod(c$, "appendCmd", +function(s, cmd){ +if (cmd.length == 0) return; +s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz_defineMethod(c$, "setProperties", +function(value){ +var bsSelected = this.vwr.bsA(); +if (Clazz_instanceOf(value,"JU.Lst")) { +var propertyList = value; +while (propertyList.size() > 0) { +var data = propertyList.removeItemAt(0); +this.setProperty((data[0]).intern(), data[1], bsSelected); +} +} else { +var data = (value); +for (var i = 0, n = data.length; i < n; i++) { +this.setProperty((data[i][0]).intern(), data[i][1], bsSelected); +} +}}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape", "JU.P3i"], "J.shape.Sticks", ["java.util.Hashtable", "JU.BS", "$.P3", "J.c.PAL", "JU.BSUtil", "$.C", "$.Edge", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.myMask = 0; +this.reportAll = false; +this.bsOrderSet = null; +this.selectedBonds = null; +this.closestAtom = null; +this.ptXY = null; +Clazz_instantialize(this, arguments);}, J.shape, "Sticks", J.shape.Shape); +Clazz_prepareFields (c$, function(){ +this.closestAtom = Clazz_newIntArray (1, 0); +this.ptXY = new JU.P3i(); +}); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.myMask = 1023; +this.reportAll = false; +}); +Clazz_overrideMethod(c$, "setSize", +function(size, bsSelected){ +if (size == 2147483647) { +this.selectedBonds = JU.BSUtil.copy(bsSelected); +return; +}if (size == -2147483648) { +if (this.bsOrderSet == null) this.bsOrderSet = new JU.BS(); +this.bsOrderSet.or(bsSelected); +return; +}if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bsSelected)); +var mad = size; +while (iter.hasNext()) { +this.bsSizeSet.set(iter.nextIndex()); +iter.next().setMad(mad); +} +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("type" === propertyName) { +this.myMask = (value).intValue(); +return; +}if ("reportAll" === propertyName) { +this.reportAll = true; +return; +}if ("reset" === propertyName) { +this.bsOrderSet = null; +this.bsSizeSet = null; +this.bsColixSet = null; +this.selectedBonds = null; +return; +}if ("bondOrder" === propertyName) { +if (this.bsOrderSet == null) this.bsOrderSet = new JU.BS(); +var order = (value).intValue(); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(65535, bs)); +while (iter.hasNext()) { +this.bsOrderSet.set(iter.nextIndex()); +iter.next().setOrder(order); +} +return; +}if ("color" === propertyName) { +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var colix = JU.C.getColixO(value); +var pal = (Clazz_instanceOf(value,"J.c.PAL") ? value : null); +if (pal === J.c.PAL.TYPE || pal === J.c.PAL.ENERGY) { +var isEnergy = (pal === J.c.PAL.ENERGY); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +this.bsColixSet.set(iter.nextIndex()); +var bond = iter.next(); +bond.colix = (isEnergy ? this.getColixB(colix, pal.id, bond) : JU.C.getColix(JU.Edge.getArgbHbondType(bond.order))); +} +return; +}if (colix == 2 && pal !== J.c.PAL.CPK) return; +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +var iBond = iter.nextIndex(); +iter.next().colix = colix; +this.bsColixSet.setBitTo(iBond, (colix != 0 && colix != 2)); +} +return; +}if ("translucency" === propertyName) { +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var isTranslucent = ((value).equals("translucent")); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +this.bsColixSet.set(iter.nextIndex()); +iter.next().setTranslucent(isTranslucent, this.translucentLevel); +} +return; +}if ("deleteModelAtoms" === propertyName) { +return; +}this.setPropS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "getProperty", +function(property, index){ +if (property.equals("selectionState")) return (this.selectedBonds != null ? "select BONDS " + JU.Escape.eBS(this.selectedBonds) + "\n" : ""); +if (property.equals("sets")) return Clazz_newArray(-1, [this.bsOrderSet, this.bsSizeSet, this.bsColixSet]); +return null; +}, "~S,~N"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if ((bond.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(bond.atom1.i) || this.ms.isAtomHidden(bond.atom2.i)) continue; +bond.atom1.setClickable(this.vf); +bond.atom2.setClickable(this.vf); +} +}); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +var pt = new JU.P3(); +var bond = this.findPickedBond(x, y, bsVisible, pt, this.closestAtom); +if (bond == null) return false; +this.vwr.highlightBond(bond.index, this.closestAtom[0], x, y); +return true; +}, "~N,~N,JU.BS"); +Clazz_overrideMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +var pt = new JU.P3(); +var bond = this.findPickedBond(x, y, bsVisible, pt, this.closestAtom); +if (bond == null) return null; +var modelIndex = bond.atom1.mi; +var info = bond.getIdentity(); +var map = new java.util.Hashtable(); +map.put("pt", pt); +map.put("index", Integer.$valueOf(bond.index)); +map.put("modelIndex", Integer.$valueOf(modelIndex)); +map.put("model", this.vwr.getModelNumberDotted(modelIndex)); +map.put("type", "bond"); +map.put("info", info); +this.vwr.setStatusAtomPicked(-3, "[\"bond\",\"" + bond.getIdentity() + "\"," + pt.x + "," + pt.y + "," + pt.z + "]", map, false); +return map; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "findPickedBond", +function(x, y, bsVisible, pt, closestAtom){ +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}var pickedBond = null; +var v = new JU.P3(); +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if (bond.shapeVisibilityFlags == 0) continue; +var atom1 = bond.atom1; +var atom2 = bond.atom2; +if (!atom1.checkVisible() || !atom2.checkVisible()) continue; +v.ave(atom1, atom2); +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0 && Math.abs(atom1.sY - atom2.sY) + Math.abs(atom1.sX - atom2.sX) > 40) { +var f = 1 * (this.ptXY.x - atom1.sX) / (atom2.sX - atom1.sX); +if (f < 0.4 || f > 0.6) continue; +dmin2 = d2; +pickedBond = bond; +if (closestAtom != null) closestAtom[0] = (f < 0.5 ? atom1.i : atom2.i); +pt.setT(v); +}} +return pickedBond; +}, "~N,~N,JU.BS,JU.P3,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.thread"); +Clazz_load(["J.thread.JmolThread"], "J.thread.HoverWatcherThread", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.actionManager = null; +this.current = null; +this.moved = null; +this.hoverDelay = 0; +Clazz_instantialize(this, arguments);}, J.thread, "HoverWatcherThread", J.thread.JmolThread); +Clazz_makeConstructor(c$, +function(actionManager, current, moved, vwr){ +this.setViewer(vwr, "HoverWatcher"); +this.actionManager = actionManager; +this.current = current; +this.moved = moved; +this.start(); +}, "JV.ActionManager,JV.MouseState,JV.MouseState,JV.Viewer"); +Clazz_overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +if (!this.isJS) Thread.currentThread().setPriority(1); +mode = 0; +break; +case 0: +this.hoverDelay = this.vwr.getHoverDelay(); +if (this.stopped || this.hoverDelay <= 0 || !this.runSleep(this.hoverDelay, 1)) return; +mode = 1; +break; +case 1: +if (this.moved.is(this.current)) { +this.currentTime = System.currentTimeMillis(); +var howLong = (this.currentTime - this.moved.time); +if (howLong > (this.vwr.acm.zoomTrigger ? 100 : this.hoverDelay) && !this.stopped) { +this.actionManager.checkHover(); +}}mode = 0; +break; +} + +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.thread"); +Clazz_load(["java.lang.Thread"], "J.thread.JmolThread", ["JU.Logger", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$name = "JmolThread"; +this.vwr = null; +this.eval = null; +this.sc = null; +this.haveReference = false; +this.hoverEnabled = false; +this.startTime = 0; +this.targetTime = 0; +this.lastRepaintTime = 0; +this.currentTime = 0; +this.sleepTime = 0; +this.isJS = false; +this.stopped = false; +this.isReset = false; +this.useTimeout = true; +this.junk = 0; +Clazz_instantialize(this, arguments);}, J.thread, "JmolThread", Thread); +Clazz_defineMethod(c$, "setManager", +function(manager, vwr, params){ +return 0; +}, "~O,JV.Viewer,~O"); +Clazz_defineMethod(c$, "setViewer", +function(vwr, name){ +this.setName(name); +this.$name = name + "_" + (++J.thread.JmolThread.threadIndex); +this.vwr = vwr; +this.isJS = vwr.isSingleThreaded; +}, "JV.Viewer,~S"); +Clazz_defineMethod(c$, "setEval", +function(eval){ +this.eval = eval; +this.sc = this.vwr.getEvalContextAndHoldQueue(eval); +if (this.sc != null) this.useTimeout = eval.getAllowJSThreads(); +}, "J.api.JmolScriptEvaluator"); +Clazz_defineMethod(c$, "resumeEval", +function(){ +if (this.eval == null || !this.isJS && !this.vwr.testAsync || !this.useTimeout) return; +this.sc.mustResumeEval = !this.stopped; +var eval = this.eval; +var sc = this.sc; +this.eval = null; +this.sc = null; +{ +setTimeout(function() { eval.resumeEval(sc); }, 1); +}}); +Clazz_overrideMethod(c$, "start", +function(){ +{ +this.run(); +}}); +Clazz_overrideMethod(c$, "run", +function(){ +this.startTime = System.currentTimeMillis(); +try { +this.run1(-1); +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"InterruptedException")){ +var e = e$$; +{ +if (JU.Logger.debugging && !(Clazz_instanceOf(this,"J.thread.HoverWatcherThread"))) this.oops(e); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +this.oops(e); +} +} else { +throw e$$; +} +} +}); +Clazz_defineMethod(c$, "oops", +function(e){ +JU.Logger.debug(this.$name + " exception " + e); +if (!JV.Viewer.isJS || JV.Viewer.isSwingJS) e.printStackTrace(); +this.vwr.queueOnHold = false; +}, "Exception"); +Clazz_defineMethod(c$, "runSleep", +function(millis, runPtr){ +if (this.isJS && !this.useTimeout) { +return true; +}{ +var me = this; +setTimeout(function(){me.run1(runPtr)}, Math.max(millis, 0)); +return false; +}}, "~N,~N"); +Clazz_defineMethod(c$, "interrupt", +function(){ +this.stopped = true; +this.vwr.startHoverWatcher(true); +if (!this.isJS) Clazz_superCall(this, J.thread.JmolThread, "interrupt", []); +}); +Clazz_defineMethod(c$, "checkInterrupted", +function(ref){ +if (this.haveReference && (ref == null || !ref.$name.equals(this.$name))) return true; +{ +return this.stopped; +}}, "J.thread.JmolThread"); +Clazz_defineMethod(c$, "reset", +function(){ +this.isReset = true; +this.interrupt(); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return Clazz_superCall(this, J.thread.JmolThread, "toString", []) + "[" + this.$name + "]"; +}); +c$.threadIndex = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.thread"); +Clazz_load(["J.thread.JmolThread"], "J.thread.TimeoutThread", ["JU.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.script = null; +this.status = 0; +this.triggered = true; +Clazz_instantialize(this, arguments);}, J.thread, "TimeoutThread", J.thread.JmolThread); +Clazz_makeConstructor(c$, +function(vwr, name, ms, script){ +this.setViewer(vwr, name); +this.$name = name; +this.set(ms, script); +}, "JV.Viewer,~S,~N,~S"); +Clazz_defineMethod(c$, "set", +function(ms, script){ +this.sleepTime = ms; +if (script != null) this.script = script; +}, "~N,~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "timeout name=" + this.$name + " executions=" + this.status + " mSec=" + this.sleepTime + " secRemaining=" + (this.targetTime - System.currentTimeMillis()) / 1000 + " script=" + this.script; +}); +Clazz_overrideMethod(c$, "run1", +function(mode){ +while (true) { +switch (mode) { +case -1: +if (!this.isJS) Thread.currentThread().setPriority(1); +this.targetTime = System.currentTimeMillis() + Math.abs(this.sleepTime); +mode = 0; +break; +case 0: +if (this.checkInterrupted(null) || this.script == null || this.script.length == 0) return; +if (!this.runSleep(26, 1)) return; +mode = 1; +break; +case 1: +mode = (System.currentTimeMillis() < this.targetTime ? 0 : 2); +break; +case 2: +this.currentTime = System.currentTimeMillis(); +if (this.vwr.timeouts.get(this.$name) == null) return; +this.status++; +var continuing = (this.sleepTime < 0); +if (continuing) this.targetTime = System.currentTimeMillis() + Math.abs(this.sleepTime); + else this.vwr.timeouts.remove(this.$name); +if (this.triggered) { +this.triggered = false; +if (this.$name.equals("_SET_IN_MOTION_")) { +this.vwr.checkInMotion(2); +} else { +this.vwr.evalStringQuiet((continuing ? this.script + ";\ntimeout ID \"" + this.$name + "\";" : this.script)); +}}mode = (continuing ? 0 : -2); +break; +case -2: +this.vwr.timeouts.remove(this.$name); +return; +} +} +}, "~N"); +c$.clear = Clazz_defineMethod(c$, "clear", +function(timeouts){ +for (var o, $o = timeouts.values().iterator (); $o.hasNext()&& ((o = $o.next ()) || true);) { +var t = o; +if (!t.script.equals("exitJmol")) t.interrupt(); +} +timeouts.clear(); +}, "java.util.Map"); +c$.setTimeout = Clazz_defineMethod(c$, "setTimeout", +function(vwr, timeouts, name, mSec, script){ +var t = timeouts.get(name); +if (mSec == 0) { +if (t != null) { +t.interrupt(); +timeouts.remove(name); +}return; +}if (t != null) { +t.set(mSec, script); +return; +}t = new J.thread.TimeoutThread(vwr, name, mSec, script); +timeouts.put(name, t); +t.start(); +}, "JV.Viewer,java.util.Map,~S,~N,~S"); +c$.trigger = Clazz_defineMethod(c$, "trigger", +function(timeouts, name){ +var t = timeouts.get(name); +if (t != null) t.triggered = (t.sleepTime < 0); +}, "java.util.Map,~S"); +c$.showTimeout = Clazz_defineMethod(c$, "showTimeout", +function(timeouts, name){ +var sb = new JU.SB(); +if (timeouts != null) { +for (var o, $o = timeouts.values().iterator (); $o.hasNext()&& ((o = $o.next ()) || true);) { +var t = o; +if (name == null || t.$name.equalsIgnoreCase(name)) sb.append(t.toString()).append("\n"); +} +}return (sb.length() > 0 ? sb.toString() : ""); +}, "java.util.Map,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.Node", "$.Point3fi", "J.c.PAL"], "JM.Atom", ["JU.BS", "$.CU", "$.P3", "$.PT", "$.SB", "J.atomdata.RadiusData", "J.c.VDW", "JM.Group", "JU.C", "$.Elements", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.altloc = '\0'; +this.atomID = 0; +this.atomSite = 0; +this.group = null; +this.userDefinedVanDerWaalRadius = 0; +this.valence = 0; +this.atomNumberFlags = 0; +this.atomSymmetry = null; +this.formalChargeAndFlags = 0; +this.madAtom = 0; +this.colixAtom = 0; +this.paletteID = 0; +this.bonds = null; +this.nBondsDisplayed = 0; +this.nBackbonesDisplayed = 0; +this.clickabilityFlags = 0; +this.shapeVisibilityFlags = 0; +Clazz_instantialize(this, arguments);}, JM, "Atom", JU.Point3fi, JU.Node); +Clazz_prepareFields (c$, function(){ +this.paletteID = J.c.PAL.CPK.id; +}); +Clazz_overrideMethod(c$, "setAtom", +function(modelIndex, atomIndex, xyz, radius, atomSymmetry, atomSite, atomicAndIsotopeNumber, formalCharge, isHetero){ +this.mi = modelIndex; +this.atomSymmetry = atomSymmetry; +this.atomSite = atomSite; +this.i = atomIndex; +this.atomNumberFlags = atomicAndIsotopeNumber; +if (isHetero) this.formalChargeAndFlags = 2; +if (formalCharge != 0 && formalCharge != -2147483648) this.setFormalCharge(formalCharge); +this.userDefinedVanDerWaalRadius = radius; +if (xyz != null) this.setT(xyz); +return this; +}, "~N,~N,JU.P3,~N,JU.BS,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setShapeVisibility", +function(flag, isVisible){ +if (isVisible) this.shapeVisibilityFlags |= flag; + else this.shapeVisibilityFlags &= ~flag; +}, "~N,~B"); +Clazz_defineMethod(c$, "isCovalentlyBonded", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].isCovalent() && this.bonds[i].getOtherAtom(this) === atomOther) return true; + +return false; +}, "JM.Atom"); +Clazz_defineMethod(c$, "isBonded", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].getOtherAtom(this) === atomOther) return true; + +return false; +}, "JM.Atom"); +Clazz_defineMethod(c$, "getBond", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].getOtherAtom(atomOther) != null) return this.bonds[i]; + +return null; +}, "JM.Atom"); +Clazz_defineMethod(c$, "addDisplayedBond", +function(stickVisibilityFlag, isVisible){ +this.nBondsDisplayed += (isVisible ? 1 : -1); +this.setShapeVisibility(stickVisibilityFlag, (this.nBondsDisplayed > 0)); +}, "~N,~B"); +Clazz_defineMethod(c$, "deleteBond", +function(bond){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i] === bond) { +this.deleteBondAt(i); +return; +} +}, "JM.Bond"); +Clazz_defineMethod(c$, "deleteBondAt", +function(i){ +this.setCIPChirality(0); +var newLength = this.bonds.length - 1; +if (newLength == 0) { +this.bonds = null; +return; +}var bondsNew = new Array(newLength); +var j = 0; +for (; j < i; ++j) bondsNew[j] = this.bonds[j]; + +for (; j < newLength; ++j) bondsNew[j] = this.bonds[j + 1]; + +this.bonds = bondsNew; +}, "~N"); +Clazz_overrideMethod(c$, "getBondedAtomIndex", +function(bondIndex){ +return this.bonds[bondIndex].getOtherAtom(this).i; +}, "~N"); +Clazz_defineMethod(c$, "setMadAtom", +function(vwr, rd){ +this.madAtom = this.calculateMad(vwr, rd); +}, "JV.Viewer,J.atomdata.RadiusData"); +Clazz_defineMethod(c$, "calculateMad", +function(vwr, rd){ +if (rd == null) return 0; +var f = rd.value; +if (f == 0) return 0; +switch (rd.factorType) { +case J.atomdata.RadiusData.EnumType.SCREEN: +return Clazz_floatToShort(f); +case J.atomdata.RadiusData.EnumType.FACTOR: +case J.atomdata.RadiusData.EnumType.OFFSET: +var r = 0; +switch (rd.vdwType) { +case J.c.VDW.TEMP: +var tmax = vwr.ms.getBfactor100Hi(); +r = (tmax > 0 ? this.getBfactor100() / tmax : 0); +break; +case J.c.VDW.HYDRO: +r = Math.abs(this.getHydrophobicity()); +break; +case J.c.VDW.BONDING: +r = this.getBondingRadius(); +break; +case J.c.VDW.ADPMIN: +case J.c.VDW.ADPMAX: +r = this.getADPMinMax(rd.vdwType === J.c.VDW.ADPMAX); +break; +default: +r = this.getVanderwaalsRadiusFloat(vwr, rd.vdwType); +} +if (rd.factorType === J.atomdata.RadiusData.EnumType.FACTOR) f *= r; + else f += r; +break; +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +if (f == 16.1) return JM.Atom.MAD_GLOBAL; +break; +} +var mad = Clazz_floatToShort(f < 0 ? f : f * 2000); +if (mad < 0 && f > 0) mad = 0; +return mad; +}, "JV.Viewer,J.atomdata.RadiusData"); +Clazz_defineMethod(c$, "getADPMinMax", +function(isMax){ +var tensors = this.getTensors(); +if (tensors == null) return 0; +var t = tensors[0]; +if (t == null || t.iType != 1) return 0; +if (this.group.chain.model.ms.isModulated(this.i) && t.isUnmodulated) t = tensors[1]; +return t.getFactoredValue(isMax ? 2 : 1); +}, "~B"); +Clazz_defineMethod(c$, "getTensors", +function(){ +return this.group.chain.model.ms.getAtomTensorList(this.i); +}); +Clazz_defineMethod(c$, "getRasMolRadius", +function(){ +return Math.abs(Clazz_doubleToInt(this.madAtom / 8)); +}); +Clazz_overrideMethod(c$, "getEdges", +function(){ +return (this.bonds == null ? new Array(0) : this.bonds); +}); +Clazz_overrideMethod(c$, "getBondCount", +function(){ +return (this.bonds == null ? 0 : this.bonds.length); +}); +Clazz_defineMethod(c$, "setTranslucent", +function(isTranslucent, translucentLevel){ +this.colixAtom = JU.C.getColixTranslucent3(this.colixAtom, isTranslucent, translucentLevel); +}, "~B,~N"); +Clazz_overrideMethod(c$, "getElementNumber", +function(){ +return JU.Elements.getElementNumber(this.atomNumberFlags); +}); +Clazz_overrideMethod(c$, "getIsotopeNumber", +function(){ +return JU.Elements.getIsotopeNumber(this.atomNumberFlags); +}); +Clazz_overrideMethod(c$, "getAtomicAndIsotopeNumber", +function(){ +return this.atomNumberFlags; +}); +Clazz_defineMethod(c$, "setAtomicAndIsotopeNumber", +function(n){ +if (n < 0 || (n & 127) >= JU.Elements.elementNumberMax || n > 32767) n = 0; +this.atomNumberFlags = n; +}, "~N"); +Clazz_defineMethod(c$, "getElementSymbolIso", +function(withIsotope){ +return JU.Elements.elementSymbolFromNumber(withIsotope ? this.atomNumberFlags : this.atomNumberFlags & 127); +}, "~B"); +Clazz_defineMethod(c$, "getElementSymbol", +function(){ +return this.getElementSymbolIso(true); +}); +Clazz_defineMethod(c$, "isHetero", +function(){ +return (this.formalChargeAndFlags & 2) != 0; +}); +Clazz_defineMethod(c$, "hasVibration", +function(){ +return (this.formalChargeAndFlags & 1) != 0; +}); +Clazz_defineMethod(c$, "setFormalCharge", +function(charge){ +this.formalChargeAndFlags = (this.formalChargeAndFlags & 15) | ((charge == -2147483648 ? 0 : charge > 7 ? 7 : charge < -3 ? -3 : charge) << 24); +}, "~N"); +Clazz_defineMethod(c$, "setVibrationVector", +function(){ +this.formalChargeAndFlags |= 1; +}); +Clazz_overrideMethod(c$, "getFormalCharge", +function(){ +return this.formalChargeAndFlags >> 24; +}); +Clazz_defineMethod(c$, "getOccupancy100", +function(){ +var occupancies = this.group.chain.model.ms.occupancies; +return (occupancies == null ? 100 : Math.round(occupancies[this.i])); +}); +Clazz_defineMethod(c$, "isOccupied", +function(){ +var occupancies = this.group.chain.model.ms.occupancies; +return (occupancies == null || occupancies[this.i] >= 50); +}); +Clazz_defineMethod(c$, "getBfactor100", +function(){ +var bfactor100s = this.group.chain.model.ms.bfactor100s; +return (bfactor100s == null ? 0 : bfactor100s[this.i]); +}); +Clazz_defineMethod(c$, "getHydrophobicity", +function(){ +var values = this.group.chain.model.ms.hydrophobicities; +return (values == null ? JU.Elements.getHydrophobicity(this.group.groupID) : values[this.i]); +}); +Clazz_defineMethod(c$, "setRadius", +function(radius){ +return !Float.isNaN(this.userDefinedVanDerWaalRadius = (radius > 0 ? radius : NaN)); +}, "~N"); +Clazz_defineMethod(c$, "$delete", +function(bsBonds){ +this.valence = -1; +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) { +var bond = this.bonds[i]; +bond.getOtherAtom(this).deleteBond(bond); +bsBonds.set(bond.index); +} +this.bonds = null; +}, "JU.BS"); +Clazz_overrideMethod(c$, "isDeleted", +function(){ +return (this.valence < 0); +}); +Clazz_defineMethod(c$, "setValence", +function(nBonds){ +if (!this.isDeleted()) this.valence = (nBonds < 0 ? 0 : nBonds <= 0x7F ? nBonds : 0x7F); +}, "~N"); +Clazz_overrideMethod(c$, "getValence", +function(){ +return (this.isDeleted() ? -1 : this.valence > 0 ? this.valence : this.getValenceAromatic(true)); +}); +Clazz_defineMethod(c$, "getValenceAromatic", +function(checkAromatic){ +if (this.isDeleted()) return -1; +var n = this.valence; +if (n == 0 && this.bonds != null) { +var npartial = 0; +for (var i = this.bonds.length; --i >= 0; ) { +n += this.bonds[i].getValence(); +if (checkAromatic && this.bonds[i].is(515)) npartial++; +} +if (n > 0 && n < 3 && npartial != 0) n++; +}return n; +}, "~B"); +Clazz_overrideMethod(c$, "getCovalentBondCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalentNotPartial0() && !b.getOtherAtom(this).isDeleted()) ++n; +} +return n; +}); +Clazz_defineMethod(c$, "getCovalentOrPartialBondCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalent() && !b.getOtherAtom(this).isDeleted()) ++n; +} +return n; +}); +Clazz_overrideMethod(c$, "getCovalentHydrogenCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalentNotPartial0()) { +var a = this.bonds[i].getOtherAtom(this); +if (a.valence >= 0 && a.getElementNumber() == 1) ++n; +}} +return n; +}); +Clazz_overrideMethod(c$, "getImplicitHydrogenCount", +function(){ +return this.group.chain.model.ms.getMissingHydrogenCount(this, false); +}); +Clazz_overrideMethod(c$, "getTotalHydrogenCount", +function(){ +return this.getCovalentHydrogenCount() + this.getImplicitHydrogenCount(); +}); +Clazz_overrideMethod(c$, "getTotalValence", +function(){ +var v = this.getValence(); +if (v < 0) return v; +var h = this.getImplicitHydrogenCount(); +var sp2 = this.group.chain.model.ms.aaRet[4]; +return v + h + sp2; +}); +Clazz_overrideMethod(c$, "getCovalentBondCountPlusMissingH", +function(){ +return this.getCovalentBondCount() + this.getImplicitHydrogenCount(); +}); +Clazz_defineMethod(c$, "getTargetValence", +function(){ +switch (this.getElementNumber()) { +case 6: +case 14: +case 32: +return 4; +case 5: +case 7: +case 15: +return 3; +case 8: +case 16: +return 2; +case 1: +case 9: +case 17: +case 35: +case 53: +return 1; +} +return -1; +}); +Clazz_defineMethod(c$, "getDimensionValue", +function(dimension){ +return (dimension == 0 ? this.x : (dimension == 1 ? this.y : this.z)); +}, "~N"); +Clazz_defineMethod(c$, "getVanderwaalsRadiusFloat", +function(vwr, type){ +return (Float.isNaN(this.userDefinedVanDerWaalRadius) ? vwr.getVanderwaalsMarType(this.atomNumberFlags, this.getVdwType(type)) / 1000 : this.userDefinedVanDerWaalRadius); +}, "JV.Viewer,J.c.VDW"); +Clazz_defineMethod(c$, "getVdwType", +function(type){ +switch (type) { +case J.c.VDW.AUTO: +type = this.group.chain.model.ms.getDefaultVdwType(this.mi); +break; +case J.c.VDW.NOJMOL: +type = this.group.chain.model.ms.getDefaultVdwType(this.mi); +if (type === J.c.VDW.AUTO_JMOL) type = J.c.VDW.AUTO_BABEL; +break; +} +return type; +}, "J.c.VDW"); +Clazz_defineMethod(c$, "getBondingRadius", +function(){ +var rr = this.group.chain.model.ms.bondingRadii; +var r = (rr == null || this.i >= rr.length ? 0 : rr[this.i]); +return (r == 0 ? JU.Elements.getBondingRadius(this.atomNumberFlags, this.getFormalCharge()) : r); +}); +Clazz_defineMethod(c$, "getVolume", +function(vwr, vType){ +var r1 = (vType == null ? this.userDefinedVanDerWaalRadius : NaN); +if (Float.isNaN(r1)) r1 = vwr.getVanderwaalsMarType(this.getElementNumber(), this.getVdwType(vType)) / 1000; +var volume = 0; +if (this.bonds != null) for (var j = 0; j < this.bonds.length; j++) { +if (!this.bonds[j].isCovalent()) continue; +var atom2 = this.bonds[j].getOtherAtom(this); +var r2 = (vType == null ? atom2.userDefinedVanDerWaalRadius : NaN); +if (Float.isNaN(r2)) r2 = vwr.getVanderwaalsMarType(atom2.getElementNumber(), atom2.getVdwType(vType)) / 1000; +var d = this.distance(atom2); +if (d > r1 + r2) continue; +if (d + r1 <= r2) return 0; +var h = r1 - (r1 * r1 + d * d - r2 * r2) / (2.0 * d); +volume -= 1.0471975511965976 * h * h * (3 * r1 - h); +} +return (volume + 4.1887902047863905 * r1 * r1 * r1); +}, "JV.Viewer,J.c.VDW"); +Clazz_defineMethod(c$, "getCurrentBondCount", +function(){ +return this.bonds == null ? 0 : this.bonds.length; +}); +Clazz_defineMethod(c$, "getRadius", +function(){ +return Math.abs(this.madAtom / 2000); +}); +Clazz_overrideMethod(c$, "getIndex", +function(){ +return this.i; +}); +Clazz_overrideMethod(c$, "getAtomSite", +function(){ +return this.atomSite; +}); +Clazz_overrideMethod(c$, "getGroupBits", +function(bs){ +this.group.setAtomBits(bs); +}, "JU.BS"); +Clazz_overrideMethod(c$, "getAtomName", +function(){ +return (this.atomID > 0 ? JM.Group.specialAtomNames[this.atomID] : this.group.chain.model.ms.atomNames == null ? "" : this.group.chain.model.ms.atomNames[this.i]); +}); +Clazz_overrideMethod(c$, "getAtomType", +function(){ +var atomTypes = this.group.chain.model.ms.atomTypes; +var type = (atomTypes == null ? null : atomTypes[this.i]); +return (type == null ? this.getAtomName() : type); +}); +Clazz_overrideMethod(c$, "getAtomNumber", +function(){ +var atomSerials = this.group.chain.model.ms.atomSerials; +return (atomSerials == null ? this.i : atomSerials[this.i]); +}); +Clazz_defineMethod(c$, "getSeqID", +function(){ +var ids = this.group.chain.model.ms.atomSeqIDs; +return (ids == null ? 0 : ids[this.i]); +}); +Clazz_defineMethod(c$, "isVisible", +function(flags){ +return ((this.shapeVisibilityFlags & flags) == flags); +}, "~N"); +Clazz_defineMethod(c$, "getPartialCharge", +function(){ +var partialCharges = this.group.chain.model.ms.partialCharges; +return partialCharges == null ? 0 : partialCharges[this.i]; +}); +Clazz_defineMethod(c$, "getSymmetryTranslation", +function(symop, cellRange, nOps){ +var pt = symop; +for (var i = 0; i < cellRange.length; i++) if (this.atomSymmetry.get(pt += nOps)) return cellRange[i]; + +return 0; +}, "~N,~A,~N"); +Clazz_defineMethod(c$, "getCellTranslation", +function(cellNNN, cellRange, nOps){ +var pt = nOps; +for (var i = 0; i < cellRange.length; i++) for (var j = 0; j < nOps; j++, pt++) if (this.atomSymmetry.get(pt) && cellRange[i] == cellNNN) return cellRange[i]; + + +return 0; +}, "~N,~A,~N"); +Clazz_defineMethod(c$, "getSymmetryOperatorList", +function(isAll){ +var str = ""; +var f = this.group.chain.model.ms; +var nOps = f.getModelSymmetryCount(this.mi); +if (nOps == 0 || this.atomSymmetry == null) return ""; +var cellRange = f.getModelCellRange(this.mi); +var pt = nOps; +var n = (cellRange == null ? 1 : cellRange.length); +var bs = (isAll ? null : new JU.BS()); +for (var i = 0; i < n; i++) for (var j = 0; j < nOps; j++) if (this.atomSymmetry.get(pt++)) if (isAll) { +str += "," + (j + 1) + cellRange[i]; +} else { +bs.set(j + 1); +} + +if (!isAll) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) str += "," + i; + +return (str.length == 0 ? "" : str.substring(1)); +}, "~B"); +Clazz_overrideMethod(c$, "getModelIndex", +function(){ +return this.mi; +}); +Clazz_overrideMethod(c$, "getMoleculeNumber", +function(inModel){ +return (this.group.chain.model.ms.getMoleculeIndex(this.i, inModel) + 1); +}, "~B"); +Clazz_defineMethod(c$, "getFractionalCoord", +function(fixJavaFloat, ch, ignoreOffset, pt){ +pt = this.getFractionalCoordPt(fixJavaFloat, ignoreOffset, pt); +return (ch == 'X' ? pt.x : ch == 'Y' ? pt.y : pt.z); +}, "~B,~S,~B,JU.P3"); +Clazz_overrideMethod(c$, "getXYZ", +function(){ +return this; +}); +Clazz_defineMethod(c$, "getFractionalCoordPt", +function(fixJavaFloat, ignoreOffset, pt){ +var c = this.getUnitCell(); +if (pt == null) pt = JU.P3.newP(this); + else pt.setT(this); +if (c != null) { +c = c.getUnitCellMultiplied(); +c.toFractional(pt, ignoreOffset); +if (fixJavaFloat) JU.PT.fixPtFloats(pt, 100000.0); +}return pt; +}, "~B,~B,JU.P3"); +Clazz_defineMethod(c$, "getUnitCell", +function(){ +return this.group.chain.model.ms.getUnitCellForAtom(this.i); +}); +Clazz_defineMethod(c$, "getFractionalUnitCoord", +function(fixJavaFloat, ch, pt){ +pt = this.getFractionalUnitCoordPt(fixJavaFloat, false, pt); +return (ch == 'X' ? pt.x : ch == 'Y' ? pt.y : pt.z); +}, "~B,~S,JU.P3"); +Clazz_defineMethod(c$, "getFractionalUnitCoordPt", +function(fixJavaFloat, asCartesian, pt){ +var c = this.getUnitCell(); +if (pt == null) pt = JU.P3.newP(this); + else pt.setT(this); +if (c == null) return pt; +c = c.getUnitCellMultiplied(); +if (this.group.chain.model.isJmolDataFrame) { +c.toFractional(pt, false); +if (asCartesian) c.toCartesian(pt, false); +} else { +c.toUnitCell(pt, null); +if (!asCartesian) c.toFractional(pt, false); +}if (fixJavaFloat) JU.PT.fixPtFloats(pt, asCartesian ? 10000.0 : 100000.0); +return pt; +}, "~B,~B,JU.P3"); +Clazz_defineMethod(c$, "getFractionalUnitDistance", +function(pt, ptTemp1, ptTemp2){ +var c = this.getUnitCell(); +if (c == null) return this.distance(pt); +ptTemp1.setT(this); +ptTemp2.setT(pt); +if (this.group.chain.model.isJmolDataFrame) { +c.toFractional(ptTemp1, true); +c.toFractional(ptTemp2, true); +} else { +c.toUnitCell(ptTemp1, null); +c.toUnitCell(ptTemp2, null); +}return ptTemp1.distance(ptTemp2); +}, "JU.T3,JU.T3,JU.T3"); +Clazz_defineMethod(c$, "setFractionalCoord", +function(tok, fValue, asAbsolute){ +var c = this.getUnitCell(); +if (c != null) c.toFractional(this, asAbsolute); +switch (tok) { +case 1111492615: +case 1111492612: +this.x = fValue; +break; +case 1111492616: +case 1111492613: +this.y = fValue; +break; +case 1111492617: +case 1111492614: +this.z = fValue; +break; +} +if (c != null) c.toCartesian(this, asAbsolute); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setFractionalCoordTo", +function(ptNew, asAbsolute){ +this.setFractionalCoordPt(this, ptNew, asAbsolute); +}, "JU.P3,~B"); +Clazz_defineMethod(c$, "setFractionalCoordPt", +function(pt, ptNew, asAbsolute){ +pt.setT(ptNew); +var c = this.getUnitCell(); +if (c != null) c.toCartesian(pt, asAbsolute && !this.group.chain.model.isJmolDataFrame); +}, "JU.P3,JU.P3,~B"); +Clazz_defineMethod(c$, "isCursorOnTopOf", +function(xCursor, yCursor, minRadius, competitor){ +var r = Clazz_doubleToInt(this.sD / 2); +if (r < minRadius) r = minRadius; +var r2 = r * r; +var dx = this.sX - xCursor; +var dx2 = dx * dx; +if (dx2 > r2) return false; +var dy = this.sY - yCursor; +var dy2 = dy * dy; +var dz2 = r2 - (dx2 + dy2); +if (dz2 < 0) return false; +if (competitor == null) return true; +var z = this.sZ; +var zCompetitor = competitor.sZ; +var rCompetitor = Clazz_doubleToInt(competitor.sD / 2); +if (z < zCompetitor - rCompetitor) return true; +var dxCompetitor = competitor.sX - xCursor; +var dx2Competitor = dxCompetitor * dxCompetitor; +var dyCompetitor = competitor.sY - yCursor; +var dy2Competitor = dyCompetitor * dyCompetitor; +var r2Competitor = rCompetitor * rCompetitor; +var dz2Competitor = r2Competitor - (dx2Competitor + dy2Competitor); +return (z - Math.sqrt(dz2) < zCompetitor - Math.sqrt(dz2Competitor)); +}, "~N,~N,~N,JM.Atom"); +Clazz_defineMethod(c$, "getInfo", +function(){ +return this.getIdentity(2); +}); +Clazz_defineMethod(c$, "getIdentityXYZ", +function(pt, mode){ +pt = (mode == 3 || this.group.chain.model.isJmolDataFrame ? this.getFractionalCoordPt(!this.group.chain.model.ms.vwr.g.legacyJavaFloat, false, pt) : this); +var s = (mode == 3 ? "" : this.getIdentity(mode) + " ") + JU.PT.formatF(pt.x, 0, 3, true, true) + " " + JU.PT.formatF(pt.y, 0, 3, true, true) + " " + JU.PT.formatF(pt.z, 0, 3, true, true); +return s; +}, "JU.P3,~N"); +Clazz_defineMethod(c$, "getIdentity", +function(mode){ +var info = new JU.SB(); +var group3 = this.getGroup3(true); +if (group3 != null && group3.length > 0 && (!group3.equals("UNK") || this.group.chain.model.isBioModel)) { +info.append("["); +info.append(group3); +info.append("]"); +var seqcodeString = this.group.getSeqcodeString(); +if (seqcodeString != null) info.append(seqcodeString); +var chainID = this.group.chain.chainID; +if (chainID != 0 && chainID != 32) { +info.append(":"); +var s = this.getChainIDStr(); +if (chainID >= 256) s = JU.PT.esc(s); +info.append(s); +}if (mode != 2 && mode != 5) return info.toString(); +info.append("."); +}info.append(this.getAtomName()); +if (info.length() == 0) { +info.append(this.getElementSymbolIso(false)); +info.append(" "); +info.appendI(this.getAtomNumber()); +}if (mode == 2) { +if (this.altloc != '\0') { +info.append("%"); +info.appendC(this.altloc); +}if (this.group.chain.model.ms.mc > 1 && !this.group.chain.model.isJmolDataFrame) { +info.append("/"); +info.append(this.getModelNumberForLabel()); +}info.append(" #"); +info.appendI(this.getAtomNumber()); +}return info.toString(); +}, "~N"); +Clazz_overrideMethod(c$, "getGroup3", +function(allowNull){ +var group3 = this.group.getGroup3(); +return (allowNull || group3 != null && group3.length > 0 ? group3 : "UNK"); +}, "~B"); +Clazz_overrideMethod(c$, "getGroup1", +function(c0){ +var c = this.group.getGroup1(); +return (c != '\0' ? "" + c : c0 != '\0' ? "" + c0 : ""); +}, "~S"); +Clazz_overrideMethod(c$, "getBioSmilesType", +function(){ +return (this.group.isProtein() ? 'p' : this.group.isDna() ? 'd' : this.group.isRna() ? 'r' : this.group.isCarbohydrate() ? 'c' : ' '); +}); +Clazz_overrideMethod(c$, "isPurine", +function(){ +return this.group.isPurine(); +}); +Clazz_overrideMethod(c$, "isPyrimidine", +function(){ +return this.group.isPyrimidine(); +}); +Clazz_overrideMethod(c$, "getResno", +function(){ +return this.group.getResno(); +}); +Clazz_defineMethod(c$, "isClickable", +function(){ +return (this.checkVisible() && this.clickabilityFlags != 0 && ((this.shapeVisibilityFlags | this.group.shapeVisibilityFlags) & this.clickabilityFlags) != 0); +}); +Clazz_defineMethod(c$, "setClickable", +function(flag){ +if (flag == 0) { +this.clickabilityFlags = 0; +} else { +this.clickabilityFlags |= flag; +if (flag != 1040384) this.shapeVisibilityFlags |= flag; +}}, "~N"); +Clazz_defineMethod(c$, "checkVisible", +function(){ +if (this.isVisible(2)) return this.isVisible(4); +var isVis = this.isVisible(9); +if (isVis) { +var flags = this.shapeVisibilityFlags; +if (this.group.shapeVisibilityFlags != 0 && (this.group.shapeVisibilityFlags != 8192 || this.isLeadAtom())) flags |= this.group.shapeVisibilityFlags; +flags &= -10; +if (flags == 32 && this.clickabilityFlags == 0) flags = 0; +isVis = (flags != 0); +if (isVis) this.shapeVisibilityFlags |= 4; +}this.shapeVisibilityFlags |= 2; +return isVis; +}); +Clazz_overrideMethod(c$, "isLeadAtom", +function(){ +return this.group.isLeadAtom(this.i); +}); +Clazz_overrideMethod(c$, "getChainID", +function(){ +return this.group.chain.chainID; +}); +Clazz_overrideMethod(c$, "getChainIDStr", +function(){ +return this.group.chain.getIDStr(); +}); +Clazz_defineMethod(c$, "getSurfaceDistance100", +function(){ +return this.group.chain.model.ms.getSurfaceDistance100(this.i); +}); +Clazz_defineMethod(c$, "getVibrationVector", +function(){ +return this.group.chain.model.ms.getVibration(this.i, false); +}); +Clazz_defineMethod(c$, "getModulation", +function(){ +return this.group.chain.model.ms.getModulation(this.i); +}); +Clazz_defineMethod(c$, "getModelNumberForLabel", +function(){ +return this.group.chain.model.ms.getModelNumberForAtomLabel(this.mi); +}); +Clazz_defineMethod(c$, "getModelNumber", +function(){ +return this.group.chain.model.ms.getModelNumber(this.mi) % 1000000; +}); +Clazz_overrideMethod(c$, "getBioStructureTypeName", +function(){ +return this.group.getProteinStructureType().getBioStructureTypeName(true); +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +return (this === obj); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.i; +}); +Clazz_defineMethod(c$, "findAromaticNeighbor", +function(notAtomIndex){ +if (this.bonds == null) return null; +for (var i = this.bonds.length; --i >= 0; ) { +var bondT = this.bonds[i]; +var a = bondT.getOtherAtom(this); +if (bondT.isAromatic() && a.i != notAtomIndex) return a; +} +return null; +}, "~N"); +Clazz_defineMethod(c$, "atomPropertyInt", +function(tokWhat){ +switch (tokWhat) { +case 1094715393: +return this.getAtomNumber(); +case 1094713365: +return this.getSeqID(); +case 1094713346: +return this.atomID; +case 1094713368: +return Math.max(0, this.altloc.charCodeAt(0) - 32); +case 1094713347: +return this.i; +case 1228931586: +return this.getCovalentBondCount(); +case 1094713351: +return this.group.chain.chainNo; +case 1765808134: +return this.group.chain.model.ms.vwr.gdata.getColorArgbOrGray(this.colixAtom); +case 1086326789: +case 1094715402: +return this.getElementNumber(); +case 1094713353: +return this.atomNumberFlags; +case 1228935687: +return this.group.chain.model.fileIndex + 1; +case 1631586315: +return this.getFormalCharge(); +case 1094713356: +return this.group.groupID; +case 1094713357: +return this.group.groupIndex; +case 1094717454: +return this.getModelNumber(); +case -1094717454: +return this.group.chain.model.ms.modelFileNumbers[this.mi]; +case 1094713359: +return this.mi; +case 1094713360: +return this.getMoleculeNumber(true); +case 1094713361: +return this.group.getMonomerIndex() + 1; +case 1128269825: +return this.getOccupancy100(); +case 1094713362: +return this.group.getBioPolymerIndexInModel() + 1; +case 1094713363: +return this.group.getBioPolymerLength(); +case 1665140738: +return this.getRasMolRadius(); +case 1094715412: +return this.getResno(); +case 1094713366: +return this.getAtomSite(); +case 1639976963: +return this.group.getProteinStructureType().getId(); +case 1237320707: +return this.group.getProteinStructureSubType().getId(); +case 1094713367: +return this.group.getStrucNo(); +case 1296041985: +return this.getSymOp(); +case 1094715418: +return this.getValence(); +} +return 0; +}, "~N"); +Clazz_defineMethod(c$, "getSymOp", +function(){ +return (this.atomSymmetry == null ? 0 : this.atomSymmetry.nextSetBit(0) + 1); +}); +Clazz_defineMethod(c$, "atomPropertyFloat", +function(vwr, tokWhat, ptTemp){ +switch (tokWhat) { +case 1111490561: +return this.getADPMinMax(true); +case 1111490562: +return this.getADPMinMax(false); +case 1111492609: +case 1111492629: +return this.x; +case 1111492610: +case 1111492630: +return this.y; +case 1111492611: +case 1111492631: +return this.z; +case 1111490587: +return this.group.chain.model.ms.getAtomicDSSRData(this.i); +case 1114249217: +case 1112152066: +case 1112150019: +case 1112150020: +case 1112150021: +case 1112152070: +case 1112152071: +case 1112152073: +case 1112152074: +case 1112152076: +case 1649022989: +case 1112152078: +return vwr.shm.getAtomShapeValue(tokWhat, this.group, this.i); +case 1111492618: +return this.getBondingRadius(); +case 1111490563: +return vwr.getNMRCalculation().getChemicalShift(this); +case 1111490564: +return JU.Elements.getCovalentRadius(this.atomNumberFlags); +case 1111490565: +case 1111490576: +case 1111490574: +return this.group.getGroupParameter(tokWhat); +case 1111492615: +case 1111492612: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'X', false, ptTemp); +case 1111492616: +case 1111492613: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Y', false, ptTemp); +case 1111492617: +case 1111492614: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Z', false, ptTemp); +case 1113589786: +return this.getHydrophobicity(); +case 1111490566: +return vwr.getNMRCalculation().getMagneticShielding(this); +case 1111490567: +return this.getMass(); +case 1128269825: +return this.getOccupancy100() / 100; +case 1111492619: +return this.getPartialCharge(); +case 1111490569: +case 1111490570: +case 1111490568: +if (this.group.chain.model.isJmolDataFrame && this.group.chain.model.jmolFrameType.startsWith("plot ramachandran")) { +switch (tokWhat) { +case 1111490569: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'X', false, ptTemp); +case 1111490570: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Y', false, ptTemp); +case 1111490568: +var omega = this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Z', false, ptTemp) - 180; +return (omega < -180 ? 360 + omega : omega); +} +}return this.group.getGroupParameter(tokWhat); +case 1665140738: +case 1112152075: +return this.getRadius(); +case 1111490571: +return (vwr.antialiased ? Clazz_doubleToInt(this.sX / 2) : this.sX); +case 1111490572: +return vwr.getScreenHeight() - (vwr.antialiased ? Clazz_doubleToInt(this.sY / 2) : this.sY); +case 1111490573: +return (vwr.antialiased ? Clazz_doubleToInt(this.sZ / 2) : this.sZ); +case 1113589787: +return (vwr.slm.isAtomSelected(this.i) ? 1 : 0); +case 1111490575: +vwr.ms.getSurfaceDistanceMax(); +return this.getSurfaceDistance100() / 100; +case 1111492620: +return this.getBfactor100() / 100; +case 1111490577: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'X', ptTemp); +case 1111490578: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'Y', ptTemp); +case 1111490579: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'Z', ptTemp); +case 1648363544: +return this.getVanderwaalsRadiusFloat(vwr, J.c.VDW.AUTO); +case 1648361473: +var v = this.getVibrationVector(); +return (v == null ? 0 : v.length() * vwr.getFloat(1648361473)); +case 1111492626: +return this.getVib('x'); +case 1111492627: +return this.getVib('y'); +case 1111492628: +return this.getVib('z'); +case 1111490583: +return this.getVib('X'); +case 1111490584: +return this.getVib('Y'); +case 1111490585: +return this.getVib('Z'); +case 1111490586: +return this.getVib('O'); +case 1111490580: +return this.getVib('1'); +case 1111490581: +return this.getVib('2'); +case 1111490582: +return this.getVib('3'); +case 1312817669: +return this.getVolume(vwr, J.c.VDW.AUTO); +case 1145047050: +case 1145047053: +case 1145045006: +case 1145047052: +case 1145047055: +case 1145045008: +case 1145047049: +var v3 = this.atomPropertyTuple(vwr, tokWhat, ptTemp); +return (v3 == null ? -1 : v3.length()); +} +return this.atomPropertyInt(tokWhat); +}, "JV.Viewer,~N,JU.P3"); +Clazz_defineMethod(c$, "getVib", +function(ch){ +return this.group.chain.model.ms.getVibCoord(this.i, ch); +}, "~S"); +Clazz_defineMethod(c$, "getNominalMass", +function(){ +var mass = this.getIsotopeNumber(); +return (mass > 0 ? mass : JU.Elements.getNaturalIsotope(this.getElementNumber())); +}); +Clazz_overrideMethod(c$, "getMass", +function(){ +var mass = this.getIsotopeNumber(); +return (mass > 0 ? mass : JU.Elements.getAtomicMass(this.getElementNumber())); +}); +Clazz_defineMethod(c$, "atomPropertyString", +function(vwr, tokWhat){ +var ch; +var s; +switch (tokWhat) { +case 1153433601: +return this.getIdentity(5); +case 1086324739: +ch = this.altloc; +return (ch == '\0' ? "" : "" + ch); +case 1086326786: +return this.getAtomName(); +case 1086326785: +return this.getAtomType(); +case 1086326788: +return this.getChainIDStr(); +case 1086324752: +return this.getCIPChirality(true); +case 1086324753: +return this.getCIPChiralityRule(); +case 1140850705: +case 1086324754: +return this.getWyckoffPosition(false); +case 1086324755: +return this.getWyckoffPosition(true); +case 1086324744: +return this.getGroup1('?'); +case 1086324747: +s = this.group.getSeqcodeString(); +return (s == null ? "" : s); +case 1086324743: +return this.getGroup1('\0'); +case 1086324742: +return this.getGroup3(false); +case 1086326789: +return this.getElementSymbolIso(true); +case 1086324745: +return this.getIdentity(2); +case 1086324746: +ch = this.group.getInsertionCode(); +return (ch == '\0' ? "" : "" + ch); +case 1825200146: +case 1287653388: +s = vwr.shm.getShapePropertyIndex(5, "label", this.i); +if (s == null) s = ""; +return s; +case 1145045003: +return vwr.getSymStatic().staticToRationalXYZ(this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, null), " "); +case 1639976963: +return this.group.getProteinStructureType().getBioStructureTypeName(false); +case 1237320707: +return this.group.getProteinStructureSubType().getBioStructureTypeName(false); +case 1086324749: +return this.group.getStructureId(); +case 1086324748: +return vwr.getHybridizationAndAxes(this.i, null, null, "d"); +case 1086326798: +return this.getElementSymbolIso(false); +case 1088421903: +return this.getSymmetryOperatorList(true); +} +return ""; +}, "JV.Viewer,~N"); +Clazz_defineMethod(c$, "getWyckoffPosition", +function(withMultiplicity){ +var ms = this.group.chain.model.ms; +var a = ms.getBasisAtom(this.i, true); +var id = a.getSeqID(); +if (id != 0) { +var m = id >> 16; +var c = String.fromCharCode(id & 0xFF); +return (withMultiplicity ? "" + (id >> 16) : "") + String.fromCharCode(id & 0xFF); +}var sym = this.getUnitCell(); +var s; +if (sym == null || (s = sym.getWyckoffPosition(ms.vwr, this, "M")) == null) { +s = "0?"; +}ms.setAtomSeqID(this.i, (JU.PT.parseInt(s) << 16) + (s.charAt(s.length - 1)).charCodeAt(0)); +return (withMultiplicity ? s : s.substring(s.length - 1)); +}, "~B"); +Clazz_overrideMethod(c$, "getCIPChirality", +function(doCalculate){ +var flags = (this.formalChargeAndFlags & 496) >> 4; +if (flags == 0 && this.atomNumberFlags > 1 && doCalculate) { +flags = this.group.chain.model.ms.getAtomCIPChiralityCode(this); +this.formalChargeAndFlags |= ((flags == 0 ? 3 : flags) << 4); +}return JV.JC.getCIPChiralityName(flags); +}, "~B"); +Clazz_defineMethod(c$, "getCIPChiralityRule", +function(){ +var rs = this.getCIPChirality(true); +var flags = (rs.length == 0 ? -1 : (this.formalChargeAndFlags & 3584) >> 9); +return JV.JC.getCIPRuleName(flags + 1); +}); +Clazz_overrideMethod(c$, "setCIPChirality", +function(c){ +this.formalChargeAndFlags = (this.formalChargeAndFlags & -4081) | (c << 4); +}, "~N"); +Clazz_overrideMethod(c$, "getCIPChiralityCode", +function(){ +return (this.formalChargeAndFlags & 496) >> 4; +}); +Clazz_overrideMethod(c$, "getInsertionCode", +function(){ +return this.group.getInsertionCode(); +}); +Clazz_defineMethod(c$, "atomPropertyTuple", +function(vwr, tok, ptTemp){ +switch (tok) { +case 1073742329: +return JU.P3.newP(this); +case 1145047050: +return this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp); +case 1145047053: +return this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp); +case 1145045006: +return (this.group.chain.model.isJmolDataFrame ? this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp) : this.getFractionalUnitCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp)); +case 1145047052: +return JU.P3.new3(vwr.antialiased ? Clazz_doubleToInt(this.sX / 2) : this.sX, vwr.getScreenHeight() - (vwr.antialiased ? Clazz_doubleToInt(this.sY / 2) : this.sY), vwr.antialiased ? Clazz_doubleToInt(this.sZ / 2) : this.sZ); +case 1145047055: +return this.getVibrationVector(); +case 1145045008: +var ms = this.getModulation(); +return (ms == null ? null : ms.getV3()); +case 1145047049: +return this; +case 1765808134: +return JU.CU.colorPtFromInt(this.group.chain.model.ms.vwr.gdata.getColorArgbOrGray(this.colixAtom), ptTemp); +} +return null; +}, "JV.Viewer,~N,JU.P3"); +Clazz_overrideMethod(c$, "getOffsetResidueAtom", +function(name, offset){ +return this.group.getAtomIndex(name, offset); +}, "~S,~N"); +Clazz_overrideMethod(c$, "isCrossLinked", +function(node){ +return this.group.isCrossLinked((node).group); +}, "JU.Node"); +Clazz_overrideMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +return this.group.getCrossLinkVector(vReturn, crosslinkCovalent, crosslinkHBond); +}, "JU.Lst,~B,~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.getInfo(); +}); +Clazz_overrideMethod(c$, "findAtomsLike", +function(atomExpression){ +return this.group.chain.model.ms.vwr.getAtomBitSet(atomExpression); +}, "~S"); +Clazz_defineMethod(c$, "getUnitID", +function(flags){ +var m = this.group.chain.model; +return (m.isBioModel ? (m).getUnitID(this, flags) : ""); +}, "~N"); +Clazz_overrideMethod(c$, "getFloatProperty", +function(property){ +var data = this.group.chain.model.ms.vwr.getDataObj(property, null, 1); +var f = NaN; +if (data != null) { +try { +f = (data)[this.i]; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}return f; +}, "~S"); +Clazz_overrideMethod(c$, "modelIsRawPDB", +function(){ +var m = this.group.chain.model; +return (m.isBioModel && !m.isPdbWithMultipleBonds && m.hydrogenCount == 0); +}); +Clazz_defineMethod(c$, "setSymop", +function(isym, andClear){ +if (this.atomSymmetry == null) this.atomSymmetry = new JU.BS(); +if (andClear) this.atomSymmetry.clearAll(); +if (isym > 0) this.atomSymmetry.set(isym - 1); +}, "~N,~B"); +Clazz_overrideMethod(c$, "getExplicitHydrogenCount", +function(){ +return 0; +}); +c$.MAD_GLOBAL = 32200; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.V3"], "JM.AtomCollection", ["java.util.Arrays", "$.Hashtable", "JU.A4", "$.AU", "$.BS", "$.Lst", "$.M3", "$.Measure", "$.P3", "$.PT", "J.api.Interface", "J.atomdata.RadiusData", "J.c.PAL", "$.VDW", "JM.Group", "JS.T", "JU.BSUtil", "$.Elements", "$.Logger", "$.Parser", "$.Vibration"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.g3d = null; +this.bioModelset = null; +this.at = null; +this.ac = 0; +this.trajectory = null; +this.pointGroup = null; +this.labeler = null; +this.maxBondingRadius = 1.4E-45; +this.maxVanderwaalsRadius = 1.4E-45; +this.hasBfactorRange = false; +this.bfactor100Lo = 0; +this.bfactor100Hi = 0; +this.haveBSVisible = false; +this.haveBSClickable = false; +this.bsSurface = null; +this.nSurfaceAtoms = 0; +this.surfaceDistanceMax = 0; +this.haveChirality = false; +this.bspf = null; +this.preserveState = true; +this.canSkipLoad = true; +this.haveStraightness = false; +this.bsHidden = null; +this.bsVisible = null; +this.bsClickable = null; +this.bsModulated = null; +this.atomTensorList = null; +this.atomTensors = null; +this.surfaceDistance100s = null; +this.tainted = null; +this.atomNames = null; +this.atomTypes = null; +this.atomSerials = null; +this.atomResnos = null; +this.atomSeqIDs = null; +this.dssrData = null; +this.vibrations = null; +this.occupancies = null; +this.bfactor100s = null; +this.partialCharges = null; +this.bondingRadii = null; +this.hydrophobicities = null; +this.bsPartialCharges = null; +this.aaRet = null; +if (!Clazz_isClassDefined("JM.AtomCollection.AtomSorter")) { +JM.AtomCollection.$AtomCollection$AtomSorter$ (); +} +this.atomCapacity = 0; +Clazz_instantialize(this, arguments);}, JM, "AtomCollection", null); +Clazz_defineMethod(c$, "getAtom", +function(iatom){ +return (iatom >= 0 && iatom < this.at.length ? this.at[iatom] : null); +}, "~N"); +Clazz_defineMethod(c$, "setupAC", +function(){ +this.bsHidden = new JU.BS(); +this.bsVisible = new JU.BS(); +this.bsClickable = new JU.BS(); +if (JM.AtomCollection.userSettableValues == null) JM.AtomCollection.userSettableValues = ("atomName atomType coord element formalCharge hydrophobicity ionic occupancy partialCharge temperature valence vanderWaals vibrationVector atomNo seqID resNo chain site").$plit(" "); +}); +Clazz_defineMethod(c$, "releaseModelSetAC", +function(){ +this.ac = 0; +this.at = null; +this.vwr = null; +this.g3d = null; +this.bspf = null; +this.surfaceDistance100s = null; +this.bsSurface = null; +this.tainted = null; +this.atomNames = null; +this.atomTypes = null; +this.atomResnos = null; +this.dssrData = null; +this.atomSerials = null; +this.atomSeqIDs = null; +this.vibrations = null; +this.occupancies = null; +this.bfactor100s = null; +this.resetPartialCharges(); +this.bondingRadii = null; +this.atomTensors = null; +}); +Clazz_defineMethod(c$, "mergeAtomArrays", +function(mergeModelSet){ +this.tainted = mergeModelSet.tainted; +this.atomNames = mergeModelSet.atomNames; +this.atomTypes = mergeModelSet.atomTypes; +this.atomResnos = mergeModelSet.atomResnos; +this.dssrData = mergeModelSet.dssrData; +this.atomSerials = mergeModelSet.atomSerials; +this.atomSeqIDs = mergeModelSet.atomSeqIDs; +this.vibrations = mergeModelSet.vibrations; +this.occupancies = mergeModelSet.occupancies; +this.bfactor100s = mergeModelSet.bfactor100s; +this.bondingRadii = mergeModelSet.bondingRadii; +this.partialCharges = mergeModelSet.partialCharges; +this.bsPartialCharges = mergeModelSet.bsPartialCharges; +this.atomTensors = mergeModelSet.atomTensors; +this.atomTensorList = mergeModelSet.atomTensorList; +this.bsModulated = mergeModelSet.bsModulated; +this.haveStraightness = false; +this.surfaceDistance100s = null; +}, "JM.AtomCollection"); +Clazz_defineMethod(c$, "getAtomPointVector", +function(bs){ +var v = new JU.Lst(); +var n = this.ac; +if (bs != null) { +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) { +v.addLast(this.at[i]); +} +}return v; +}, "JU.BS"); +Clazz_defineMethod(c$, "modelSetHasVibrationVectors", +function(){ +return (this.vibrations != null); +}); +Clazz_defineMethod(c$, "getAtomTypes", +function(){ +return this.atomTypes; +}); +Clazz_defineMethod(c$, "getPartialCharges", +function(){ +return this.partialCharges; +}); +Clazz_defineMethod(c$, "getBondingRadii", +function(){ +return this.bondingRadii; +}); +Clazz_defineMethod(c$, "getBFactors", +function(){ +return this.bfactor100s; +}); +Clazz_defineMethod(c$, "getHydrophobicity", +function(){ +return this.hydrophobicities; +}); +Clazz_defineMethod(c$, "setBsHidden", +function(bs){ +this.bsHidden = bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "isAtomHidden", +function(iAtom){ +return this.bsHidden.get(iAtom); +}, "~N"); +Clazz_defineMethod(c$, "getLabeler", +function(){ +return (this.labeler == null ? this.labeler = J.api.Interface.getInterface("JM.LabelToken", this.vwr, "ms") : this.labeler); +}); +Clazz_defineMethod(c$, "getAtomInfo", +function(i, format, ptTemp){ +return (format == null ? this.at[i].getInfo() : this.getLabeler().formatLabel(this.vwr, this.at[i], format, ptTemp)); +}, "~N,~S,JU.P3"); +Clazz_defineMethod(c$, "getElementName", +function(i){ +return JU.Elements.elementNameFromNumber(this.at[i].getAtomicAndIsotopeNumber()); +}, "~N"); +Clazz_defineMethod(c$, "getQuaternion", +function(i, qtype){ +return (i < 0 ? null : this.at[i].group.getQuaternion(qtype)); +}, "~N,~S"); +Clazz_defineMethod(c$, "getFirstAtomIndexFromAtomNumber", +function(atomNumber, bsVisibleFrames){ +for (var i = 0; i < this.ac; i++) { +var atom = this.at[i]; +if (!JM.AtomCollection.isDeleted(atom) && atom.getAtomNumber() == atomNumber && bsVisibleFrames.get(atom.mi)) return i; +} +return -1; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setFormalCharges", +function(bs, formalCharge){ +if (bs != null) { +this.resetPartialCharges(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].setFormalCharge(formalCharge); +this.taintAtom(i, 4); +} +}}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getAtomicCharges", +function(){ +var charges = Clazz_newFloatArray (this.ac, 0); +for (var i = this.ac; --i >= 0; ) charges[i] = (JM.AtomCollection.isDeleted(this.at[i]) ? 0 : this.at[i].getElementNumber()); + +return charges; +}); +Clazz_defineMethod(c$, "getRadiusVdwJmol", +function(atom){ +return JU.Elements.getVanderwaalsMar(atom.getElementNumber(), J.c.VDW.JMOL) / 1000; +}, "JM.Atom"); +Clazz_defineMethod(c$, "getMaxVanderwaalsRadius", +function(){ +if (this.maxVanderwaalsRadius == 1.4E-45) this.findMaxRadii(); +return this.maxVanderwaalsRadius; +}); +Clazz_defineMethod(c$, "findMaxRadii", +function(){ +var r; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if ((r = atom.getBondingRadius()) > this.maxBondingRadius) this.maxBondingRadius = r; +if ((r = atom.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)) > this.maxVanderwaalsRadius) this.maxVanderwaalsRadius = r; +} +}); +Clazz_defineMethod(c$, "clearBfactorRange", +function(){ +this.hasBfactorRange = false; +}); +Clazz_defineMethod(c$, "calcBfactorRange", +function(bs){ +if (this.hasBfactorRange) return; +this.bfactor100Lo = 2147483647; +this.bfactor100Hi = -2147483648; +if (bs == null) { +for (var i = 0; i < this.ac; i++) this.setBf(i); + +} else { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.setBf(i); + +}this.hasBfactorRange = true; +}, "JU.BS"); +Clazz_defineMethod(c$, "setBf", +function(i){ +if (JM.AtomCollection.isDeleted(this.at[i])) return; +var bf = this.at[i].getBfactor100(); +if (bf < this.bfactor100Lo) this.bfactor100Lo = bf; + else if (bf > this.bfactor100Hi) this.bfactor100Hi = bf; +}, "~N"); +Clazz_defineMethod(c$, "getBfactor100Lo", +function(){ +if (!this.hasBfactorRange) { +if (this.vwr.g.rangeSelected) { +this.calcBfactorRange(this.vwr.bsA()); +} else { +this.calcBfactorRange(null); +}}return this.bfactor100Lo; +}); +Clazz_defineMethod(c$, "getBfactor100Hi", +function(){ +this.getBfactor100Lo(); +return this.bfactor100Hi; +}); +Clazz_defineMethod(c$, "getSurfaceDistanceMax", +function(){ +if (this.surfaceDistance100s == null) this.calcSurfaceDistances(); +return this.surfaceDistanceMax; +}); +Clazz_defineMethod(c$, "calculateVolume", +function(bs, vType){ +var volume = 0; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) volume += this.at[i].getVolume(this.vwr, vType); + +return volume; +}, "JU.BS,J.c.VDW"); +Clazz_defineMethod(c$, "getSurfaceDistance100", +function(atomIndex){ +if (this.nSurfaceAtoms == 0) return -1; +if (this.surfaceDistance100s == null) this.calcSurfaceDistances(); +return this.surfaceDistance100s[atomIndex]; +}, "~N"); +Clazz_defineMethod(c$, "calcSurfaceDistances", +function(){ +this.calculateSurface(null, -1); +}); +Clazz_defineMethod(c$, "calculateSurface", +function(bsSelected, envelopeRadius){ +if (envelopeRadius < 0) envelopeRadius = 3.0; +var ec = (J.api.Interface.getOption("geodesic.EnvelopeCalculation", this.vwr, "ms")).set(this.vwr, this.ac, null); +ec.calculate( new J.atomdata.RadiusData(null, envelopeRadius, J.atomdata.RadiusData.EnumType.ABSOLUTE, null), 3.4028235E38, bsSelected, JU.BSUtil.copyInvert(bsSelected, this.ac), false, false, false, true); +var points = ec.getPoints(); +this.surfaceDistanceMax = 0; +this.bsSurface = ec.getBsSurfaceClone(); +this.surfaceDistance100s = Clazz_newIntArray (this.ac, 0); +this.nSurfaceAtoms = JU.BSUtil.cardinalityOf(this.bsSurface); +if (this.nSurfaceAtoms == 0 || points == null || points.length == 0) return points; +var radiusAdjust = (envelopeRadius == 3.4028235E38 ? 0 : envelopeRadius); +for (var i = 0; i < this.ac; i++) { +if (this.bsSurface.get(i) || JM.AtomCollection.isDeleted(this.at[i])) { +this.surfaceDistance100s[i] = 0; +} else { +var dMin = 3.4028235E38; +var atom = this.at[i]; +for (var j = points.length; --j >= 0; ) { +dMin = Math.min(Math.abs(points[j].distance(atom) - radiusAdjust), dMin); +} +var d = this.surfaceDistance100s[i] = Clazz_doubleToInt(Math.floor(dMin * 100)); +this.surfaceDistanceMax = Math.max(this.surfaceDistanceMax, d); +}} +return points; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "setAtomCoord2", +function(bs, tokType, xyzValues){ +var xyz = null; +var values = null; +var v = null; +var type = 0; +var nValues = 1; +if (Clazz_instanceOf(xyzValues,"JU.P3")) { +xyz = xyzValues; +} else if (Clazz_instanceOf(xyzValues,"JU.Lst")) { +v = xyzValues; +if ((nValues = v.size()) == 0) return; +type = 1; +} else if (JU.AU.isAP(xyzValues)) { +values = xyzValues; +if ((nValues = values.length) == 0) return; +type = 2; +} else { +return; +}var n = 0; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +switch (type) { +case 1: +if (n >= nValues) return; +xyz = v.get(n++); +break; +case 2: +if (n >= nValues) return; +xyz = values[n++]; +break; +} +if (xyz != null) switch (tokType) { +case 1145047049: +this.setAtomCoord(i, xyz.x, xyz.y, xyz.z); +break; +case 1145047050: +case 1145047053: +this.at[i].setFractionalCoordTo(xyz, false); +this.taintAtom(i, 2); +break; +case 1145047055: +this.setAtomVibrationVector(i, xyz); +break; +} +} +}, "JU.BS,~N,~O"); +Clazz_defineMethod(c$, "setAtomVibrationVector", +function(atomIndex, vib){ +this.setVibrationVector(atomIndex, vib); +this.taintAtom(atomIndex, 12); +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setAtomCoord", +function(atomIndex, x, y, z){ +if (atomIndex < 0 || atomIndex >= this.ac) return; +var a = this.at[atomIndex]; +a.set(x, y, z); +this.fixTrajectory(a); +this.taintAtom(atomIndex, 2); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "fixTrajectory", +function(a){ +if ((this).isTrajectory(a.mi)) this.trajectory.fixAtom(a); +}, "JM.Atom"); +Clazz_defineMethod(c$, "setAtomCoordRelative", +function(atomIndex, x, y, z){ +if (atomIndex < 0 || atomIndex >= this.ac) return; +var a = this.at[atomIndex]; +a.add3(x, y, z); +this.fixTrajectory(a); +this.taintAtom(atomIndex, 2); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAtomsCoordRelative", +function(bs, x, y, z){ +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.setAtomCoordRelative(i, x, y, z); + +}, "JU.BS,~N,~N,~N"); +Clazz_defineMethod(c$, "setAPa", +function(bs, tok, iValue, fValue, sValue, values, list){ +var n = 0; +if (values != null && values.length == 0 || bs == null) return; +var isAll = (values != null && values.length == this.ac || list != null && list.length == this.ac); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (isAll) n = i; +if (values != null) { +if (n >= values.length) return; +fValue = values[n++]; +if (Float.isNaN(fValue)) continue; +iValue = Clazz_floatToInt(fValue); +} else if (list != null) { +if (n >= list.length) return; +sValue = list[n++]; +}var atom = this.at[i]; +var f; +switch (tok) { +case 1086326786: +this.setAtomName(i, sValue, true); +break; +case 1086326785: +this.setAtomType(i, sValue); +break; +case 1086326788: +this.setChainID(i, sValue); +break; +case 1094715393: +this.setAtomNumber(i, iValue, true); +break; +case 1094713365: +this.setAtomSeqID(i, iValue); +break; +case 1111492609: +case 1111492629: +this.setAtomCoord(i, fValue, atom.y, atom.z); +break; +case 1111492610: +case 1111492630: +this.setAtomCoord(i, atom.x, fValue, atom.z); +break; +case 1111492611: +case 1111492631: +this.setAtomCoord(i, atom.x, atom.y, fValue); +break; +case 1111492626: +case 1111492627: +case 1111492628: +this.setVibrationVector2(i, tok, fValue); +break; +case 1111492612: +case 1111492613: +case 1111492614: +case 1111492615: +case 1111492616: +case 1111492617: +atom.setFractionalCoord(tok, fValue, false); +this.taintAtom(i, 2); +break; +case 1094715402: +case 1086326789: +this.setElement(atom, iValue, true); +break; +case 1631586315: +this.resetPartialCharges(); +atom.setFormalCharge(iValue); +this.taintAtom(i, 4); +break; +case 1113589786: +this.setHydrophobicity(i, fValue); +break; +case 1128269825: +f = (fValue < 2 && fValue >= 0.01 ? 100 * fValue : fValue); +this.setOccupancy(i, f, true); +break; +case 1111492619: +this.setPartialCharge(i, fValue, true); +break; +case 1111492618: +this.setBondingRadius(i, fValue); +break; +case 1111492620: +this.setBFactor(i, fValue, true); +break; +case 1094715412: +this.setAtomResno(i, iValue); +break; +case 1825200146: +case 1287653388: +this.vwr.shm.setAtomLabel(sValue, i); +break; +case 1665140738: +case 1112152075: +f = fValue; +if (f < 0) f = 0; + else if (f > 16) f = 16.1; +atom.madAtom = (Clazz_floatToShort(f * 2000)); +break; +case 1113589787: +this.vwr.slm.setSelectedAtom(atom.i, (fValue != 0)); +break; +case 1094715418: +atom.setValence(iValue); +this.taintAtom(i, 10); +break; +case 1648363544: +if (atom.setRadius(fValue)) this.taintAtom(i, 11); + else this.untaint(i, 11); +break; +default: +JU.Logger.error("unsettable atom property: " + JS.T.nameOf(tok)); +return; +} +} +switch (tok) { +case 1113589787: +this.vwr.slm.setSelectedAtom(-1, false); +break; +case 1665140738: +case 1112152075: +this.vwr.setShapeSize(0, 2147483647, bs); +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz_defineMethod(c$, "getVibCoord", +function(atomIndex, c){ +var ms = null; +var v = null; +switch ((c).charCodeAt(0)) { +case 120: +case 121: +case 122: +v = this.getVibration(atomIndex, false); +break; +default: +ms = this.getModulation(atomIndex); +if (ms != null) { +v = ms.getVibration(false); +if (v == null) v = ms; +}} +if (v == null && ms == null) return NaN; +switch ((c).charCodeAt(0)) { +case 120: +case 88: +return v.x; +case 121: +case 89: +return v.y; +case 122: +case 90: +return v.z; +case 79: +return (ms.getModulation('O', null, true)).floatValue(); +case 49: +case 50: +case 51: +var t = ms.getModulation('T', null, true); +var x = (c == '1' ? t.x : c == '2' ? t.y : t.z); +return (x - Math.floor(x)); +default: +return NaN; +} +}, "~N,~S"); +Clazz_defineMethod(c$, "getVibration", +function(atomIndex, forceNew){ +var v = (this.vibrations == null ? null : this.vibrations[atomIndex]); +return (Clazz_instanceOf(v,"J.api.JmolModulationSet") ? (v).getVibration(forceNew) : v == null && forceNew ? new JU.Vibration() : v); +}, "~N,~B"); +Clazz_defineMethod(c$, "getModulation", +function(iAtom){ +var v = (this.vibrations == null ? null : this.vibrations[iAtom]); +return (v != null && v.modDim > 0 ? v : null); +}, "~N"); +Clazz_defineMethod(c$, "setVibrationVector", +function(atomIndex, vib){ +if (vib == null) { +if (this.vibrations != null && this.vibrations.length > atomIndex) this.vibrations[atomIndex] = null; +return; +}if (Double.isNaN(vib.x) || Double.isNaN(vib.y) || Double.isNaN(vib.z)) return; +if (this.vibrations == null || this.vibrations.length <= atomIndex) this.vibrations = new Array(this.at.length); +if (Clazz_instanceOf(vib,"JU.Vibration")) { +this.vibrations[atomIndex] = vib; +} else { +if (this.vibrations[atomIndex] == null) this.vibrations[atomIndex] = new JU.Vibration(); +this.vibrations[atomIndex].setXYZ(vib); +}this.at[atomIndex].setVibrationVector(); +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setVibrationVector2", +function(atomIndex, tok, fValue){ +var v = this.getVibration(atomIndex, true); +if (v == null) return; +switch (tok) { +case 1111492626: +v.x = fValue; +break; +case 1111492627: +v.y = fValue; +break; +case 1111492628: +v.z = fValue; +break; +} +this.setAtomVibrationVector(atomIndex, v); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setAtomName", +function(atomIndex, name, doTaint){ +if (doTaint && name.equals(this.at[atomIndex].getAtomName())) return; +var id = ((this).am[this.at[atomIndex].mi].isBioModel ? this.vwr.getJBR().lookupSpecialAtomID(name) : 0); +this.at[atomIndex].atomID = id; +if (id <= 0) { +if (this.atomNames == null) this.atomNames = new Array(this.at.length); +this.atomNames[atomIndex] = name; +}if (doTaint) this.taintAtom(atomIndex, 0); +}, "~N,~S,~B"); +Clazz_defineMethod(c$, "setAtomType", +function(atomIndex, type){ +if (type.equals(this.at[atomIndex].getAtomType())) return; +if (this.atomTypes == null) this.atomTypes = new Array(this.at.length); +this.atomTypes[atomIndex] = type; +return; +}, "~N,~S"); +Clazz_defineMethod(c$, "setChainID", +function(atomIndex, id){ +if (id.equals(this.at[atomIndex].getChainIDStr())) return; +var intid = this.at[atomIndex].getChainID(); +var bs = this.getChainBits(intid); +var c = this.at[atomIndex].group.chain; +c.chainID = this.vwr.getChainID(id, true); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.taintAtom(i, 16); + +}, "~N,~S"); +Clazz_defineMethod(c$, "setAtomNumber", +function(atomIndex, atomno, doTaint){ +if (doTaint && atomno == this.at[atomIndex].getAtomNumber()) return; +if (this.atomSerials == null) this.atomSerials = Clazz_newIntArray (this.at.length, 0); +this.atomSerials[atomIndex] = atomno; +if (doTaint) this.taintAtom(atomIndex, 13); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setElement", +function(atom, atomicNumber, doTaint){ +if (doTaint && atom.getElementNumber() == atomicNumber) return; +atom.setAtomicAndIsotopeNumber(atomicNumber); +atom.paletteID = J.c.PAL.CPK.id; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +this.resetPartialCharges(); +if (doTaint) this.taintAtom(atom.i, 3); +}, "JM.Atom,~N,~B"); +Clazz_defineMethod(c$, "setSite", +function(atom, site, doTaint){ +if (atom.atomSite == site) return; +atom.atomSite = site; +if (doTaint) this.taintAtom(atom.i, 17); +}, "JM.Atom,~N,~B"); +Clazz_defineMethod(c$, "resetPartialCharges", +function(){ +this.partialCharges = null; +this.bsPartialCharges = null; +}); +Clazz_defineMethod(c$, "setAtomResno", +function(atomIndex, resno){ +if (resno == this.at[atomIndex].getResno()) return; +this.at[atomIndex].group.setResno(resno); +if (this.atomResnos == null) this.atomResnos = Clazz_newIntArray (this.at.length, 0); +this.atomResnos[atomIndex] = resno; +this.taintAtom(atomIndex, 15); +}, "~N,~N"); +Clazz_defineMethod(c$, "setAtomSeqID", +function(atomIndex, seqID){ +if (seqID == this.at[atomIndex].getSeqID()) return; +if (this.atomSeqIDs == null) this.atomSeqIDs = Clazz_newIntArray (this.at.length, 0); +this.atomSeqIDs[atomIndex] = seqID; +this.taintAtom(atomIndex, 14); +}, "~N,~N"); +Clazz_defineMethod(c$, "setOccupancy", +function(atomIndex, occupancy, doTaint){ +if (doTaint && occupancy == this.at[atomIndex].getOccupancy100()) return; +if (this.occupancies == null) { +if (occupancy == 100) return; +this.occupancies = Clazz_newFloatArray (this.at.length, 0); +for (var i = this.at.length; --i >= 0; ) this.occupancies[i] = 100; + +}this.occupancies[atomIndex] = occupancy; +if (doTaint) this.taintAtom(atomIndex, 7); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "getOccupancyFloat", +function(i){ +return (this.occupancies == null || i >= this.occupancies.length ? 100 : this.occupancies[i]); +}, "~N"); +Clazz_defineMethod(c$, "setPartialCharge", +function(atomIndex, partialCharge, doTaint){ +if (Float.isNaN(partialCharge)) return; +if (this.partialCharges == null) { +this.bsPartialCharges = new JU.BS(); +if (partialCharge == 0) return; +this.partialCharges = Clazz_newFloatArray (this.at.length, 0); +}this.bsPartialCharges.set(atomIndex); +this.partialCharges[atomIndex] = partialCharge; +if (doTaint) this.taintAtom(atomIndex, 8); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setBondingRadius", +function(atomIndex, radius){ +if (Float.isNaN(radius) || radius == this.at[atomIndex].getBondingRadius()) return; +if (this.bondingRadii == null) { +this.bondingRadii = Clazz_newFloatArray (this.at.length, 0); +} else if (this.bondingRadii.length < this.at.length) { +this.bondingRadii = JU.AU.ensureLengthA(this.bondingRadii, this.at.length); +}this.bondingRadii[atomIndex] = radius; +this.taintAtom(atomIndex, 6); +}, "~N,~N"); +Clazz_defineMethod(c$, "setBFactor", +function(atomIndex, bfactor, doTaint){ +if (Float.isNaN(bfactor) || doTaint && bfactor == this.at[atomIndex].getBfactor100()) return; +if (this.bfactor100s == null) { +if (bfactor == 0) return; +this.bfactor100s = Clazz_newShortArray (this.at.length, 0); +}this.bfactor100s[atomIndex] = Clazz_doubleToShort((bfactor < -327.68 ? -327.68 : bfactor > 327.67 ? 327.67 : bfactor) * 100 + (bfactor < 0 ? -0.5 : 0.5)); +if (doTaint) this.taintAtom(atomIndex, 9); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setHydrophobicity", +function(atomIndex, value){ +if (Float.isNaN(value) || value == this.at[atomIndex].getHydrophobicity()) return; +if (this.hydrophobicities == null) { +this.hydrophobicities = Clazz_newFloatArray (this.at.length, 0); +for (var i = 0; i < this.at.length; i++) this.hydrophobicities[i] = JU.Elements.getHydrophobicity(this.at[i].group.groupID); + +}this.hydrophobicities[atomIndex] = value; +this.taintAtom(atomIndex, 5); +}, "~N,~N"); +Clazz_defineMethod(c$, "setAtomData", +function(type, name, dataString, isDefault){ +var fData = null; +var bs = null; +switch (type) { +case 2: +this.loadCoordinates(dataString, false, !isDefault); +return; +case 12: +this.loadCoordinates(dataString, true, true); +return; +case 18: +fData = Clazz_newFloatArray (this.ac, 0); +bs = JU.BS.newN(this.ac); +break; +} +var lines = JU.Parser.markLines(dataString, ';'); +var n = 0; +try { +var nData = JU.PT.parseInt(dataString.substring(0, lines[0] - 1)); +for (var i = 1; i <= nData; i++) { +var tokens = JU.PT.getTokens(JU.PT.parseTrimmed(dataString.substring(lines[i], lines[i + 1] - 1))); +var atomIndex = JU.PT.parseInt(tokens[0]) - 1; +if (atomIndex < 0 || atomIndex >= this.ac) continue; +var atom = this.at[atomIndex]; +n++; +var pt = tokens.length - 1; +var x = JU.PT.parseFloat(tokens[pt]); +switch (type) { +case 18: +fData[atomIndex] = x; +bs.set(atomIndex); +continue; +case 0: +this.setAtomName(atomIndex, tokens[pt], true); +break; +case 13: +this.setAtomNumber(atomIndex, Clazz_floatToInt(x), true); +break; +case 15: +this.setAtomResno(atomIndex, Clazz_floatToInt(x)); +break; +case 14: +this.setAtomSeqID(atomIndex, Clazz_floatToInt(x)); +break; +case 1: +this.setAtomType(atomIndex, tokens[pt]); +break; +case 16: +this.setChainID(atomIndex, tokens[pt]); +break; +case 17: +atom.atomSite = Clazz_floatToInt(x); +break; +case 3: +atom.setAtomicAndIsotopeNumber(Clazz_floatToInt(x)); +atom.paletteID = J.c.PAL.CPK.id; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +break; +case 4: +atom.setFormalCharge(Clazz_floatToInt(x)); +break; +case 5: +this.setHydrophobicity(atomIndex, x); +break; +case 6: +this.setBondingRadius(atomIndex, x); +break; +case 8: +this.setPartialCharge(atomIndex, x, true); +break; +case 9: +this.setBFactor(atomIndex, x, true); +break; +case 10: +atom.setValence(Clazz_floatToInt(x)); +break; +case 11: +atom.setRadius(x); +break; +} +this.taintAtom(atomIndex, type); +} +if (type == 18 && n > 0) this.vwr.setData(name, Clazz_newArray(-1, [name, fData, bs, Integer.$valueOf(1)]), 0, 0, 0, 0, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("loadData error: " + e); +} else { +throw e; +} +} +}, "~N,~S,~S,~B"); +Clazz_defineMethod(c$, "loadCoordinates", +function(data, isVibrationVectors, doTaint){ +var lines = JU.Parser.markLines(data, ';'); +var v = (isVibrationVectors ? new JU.V3() : null); +try { +var nData = JU.PT.parseInt(data.substring(0, lines[0] - 1)); +for (var i = 1; i <= nData; i++) { +var tokens = JU.PT.getTokens(JU.PT.parseTrimmed(data.substring(lines[i], lines[i + 1]))); +var atomIndex = JU.PT.parseInt(tokens[0]) - 1; +var x = (tokens[3].equalsIgnoreCase("1.4E-45") ? 1.4e-45 : JU.PT.parseFloat(tokens[3])); +var y = (tokens[4].equalsIgnoreCase("1.4E-45") ? 1.4e-45 : JU.PT.parseFloat(tokens[4])); +var z = JU.PT.parseFloat(tokens[5]); +if (isVibrationVectors) { +v.set(x, y, z); +this.setAtomVibrationVector(atomIndex, v); +} else { +this.setAtomCoord(atomIndex, x, y, z); +if (!doTaint) this.untaint(atomIndex, 2); +}} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Frame.loadCoordinate error: " + e); +} else { +throw e; +} +} +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "validateBspf", +function(isValid){ +if (this.bspf != null) this.bspf.isValid = isValid; +}, "~B"); +Clazz_defineMethod(c$, "validateBspfForModel", +function(modelIndex, isValid){ +if (this.bspf != null) this.bspf.validateModel(modelIndex, isValid); +}, "~N,~B"); +Clazz_defineMethod(c$, "setPreserveState", +function(TF){ +this.preserveState = TF; +}, "~B"); +c$.getUserSettableType = Clazz_defineMethod(c$, "getUserSettableType", +function(dataType){ +var isExplicit = (dataType.indexOf("property_") == 0); +var check = (isExplicit ? dataType.substring(9) : dataType); +for (var i = 0; i < 18; i++) if (JM.AtomCollection.userSettableValues[i].equalsIgnoreCase(check)) return i; + +return (isExplicit ? 18 : -1); +}, "~S"); +Clazz_defineMethod(c$, "getTaintedAtoms", +function(type){ +return this.tainted == null ? null : this.tainted[type]; +}, "~N"); +Clazz_defineMethod(c$, "taintAtoms", +function(bsAtoms, type){ +this.canSkipLoad = false; +if (!this.preserveState) return; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) this.taintAtom(i, type); + +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "taintAtom", +function(atomIndex, type){ +if (this.preserveState) { +if (this.tainted == null) this.tainted = new Array(18); +if (this.tainted[type] == null) this.tainted[type] = JU.BS.newN(this.ac); +this.tainted[type].set(atomIndex); +}if (type == 2) this.taintModelCoord(atomIndex); +}, "~N,~N"); +Clazz_defineMethod(c$, "taintModelCoord", +function(atomIndex){ +var m = (this).am[this.at[atomIndex].mi]; +this.validateBspfForModel(m.trajectoryBaseIndex, false); +if (m.isBioModel) m.resetDSSR(true); +this.pointGroup = null; +}, "~N"); +Clazz_defineMethod(c$, "untaint", +function(atomIndex, type){ +if (!this.preserveState) return; +if (this.tainted == null || this.tainted[type] == null) return; +this.tainted[type].clear(atomIndex); +}, "~N,~N"); +Clazz_defineMethod(c$, "setTaintedAtoms", +function(bs, type){ +if (this.preserveState) { +if (bs == null) { +if (this.tainted == null) return; +this.tainted[type] = null; +return; +}if (this.tainted == null) this.tainted = new Array(18); +if (this.tainted[type] == null) this.tainted[type] = JU.BS.newN(this.ac); +JU.BSUtil.copy2(bs, this.tainted[type]); +}if (type == 2) { +var i = bs.nextSetBit(0); +if (i >= 0) this.taintModelCoord(i); +}}, "JU.BS,~N"); +Clazz_defineMethod(c$, "unTaintAtoms", +function(bs, type){ +if (this.tainted == null || this.tainted[type] == null) return; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.tainted[type].clear(i); + +if (this.tainted[type].nextSetBit(0) < 0) this.tainted[type] = null; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "findNearest2", +function(x, y, closest, bsNot, min){ +var champion = null; +var contender; +for (var i = this.ac; --i >= 0; ) { +if (bsNot != null && bsNot.get(i) || (contender = this.at[i]) == null) continue; +if (contender.isClickable() && this.isCursorOnTopOf(contender, x, y, min, champion)) champion = contender; +} +closest[0] = champion; +}, "~N,~N,~A,JU.BS,~N"); +Clazz_defineMethod(c$, "isCursorOnTopOf", +function(contender, x, y, radius, champion){ +return contender.sZ > 1 && !this.g3d.isClippedZ(contender.sZ) && this.g3d.isInDisplayRange(contender.sX, contender.sY) && contender.isCursorOnTopOf(x, y, radius, champion); +}, "JM.Atom,~N,~N,~N,JM.Atom"); +Clazz_defineMethod(c$, "fillADa", +function(atomData, mode){ +atomData.xyz = atomData.atoms = this.at; +atomData.ac = this.ac; +atomData.atomicNumber = Clazz_newIntArray (this.ac, 0); +var includeRadii = ((mode & 2) != 0); +if (includeRadii) atomData.atomRadius = Clazz_newFloatArray (this.ac, 0); +var isMultiModel = ((mode & 16) != 0); +for (var i = 0; i < this.ac; i++) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom) || !isMultiModel && atomData.modelIndex >= 0 && atom.mi != atomData.firstModelIndex) { +if (atomData.bsIgnored == null) atomData.bsIgnored = new JU.BS(); +atomData.bsIgnored.set(i); +continue; +}atomData.atomicNumber[i] = atom.getElementNumber(); +atomData.lastModelIndex = atom.mi; +if (includeRadii) atomData.atomRadius[i] = this.getWorkingRadius(atom, atomData); +} +}, "J.atomdata.AtomData,~N"); +Clazz_defineMethod(c$, "getWorkingRadius", +function(atom, atomData){ +var r = 0; +var rd = atomData.radiusData; +switch (rd.factorType) { +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +r = rd.value; +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +case J.atomdata.RadiusData.EnumType.OFFSET: +switch (rd.vdwType) { +case J.c.VDW.BONDING: +r = atom.getBondingRadius(); +break; +case J.c.VDW.ADPMAX: +r = atom.getADPMinMax(true); +break; +case J.c.VDW.ADPMIN: +r = atom.getADPMinMax(false); +break; +default: +r = atom.getVanderwaalsRadiusFloat(this.vwr, atomData.radiusData.vdwType); +} +if (rd.factorType === J.atomdata.RadiusData.EnumType.FACTOR) r *= rd.value; + else r += rd.value; +} +return r + rd.valueExtended; +}, "JM.Atom,J.atomdata.AtomData"); +Clazz_defineMethod(c$, "calculateHydrogens", +function(bs, nTotal, vConnect, flags){ +var doAll = ((flags & 256) == 256); +var justCarbon = ((flags & 512) == 512); +var isQuick = ((flags & 8) == 8); +var ignoreH = ((flags & 2048) == 2048); +var allowH = ((flags & 4096) == 4096); +var z = new JU.V3(); +var x = new JU.V3(); +var hAtoms = new Array(this.ac); +var bsDeleted = this.vwr.slm.bsDeleted; +var pt; +var nH = nTotal[0] = 0; +if (bs == null) { +return hAtoms; +}var sym = this.vwr.getOperativeSymmetry(); +if (sym != null && this.vwr.getObjectMad10(5) == 0) sym = null; +var ptTemp = (sym == null ? null : new JU.P3()); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (bsDeleted != null && bsDeleted.get(i)) continue; +var atom = this.at[i]; +var atomicNumber = atom.getElementNumber(); +if (justCarbon && atomicNumber != 6) continue; +var dHX = (atomicNumber <= 6 ? 1.1 : atomicNumber <= 10 ? 1.0 : 1.3); +switch (atomicNumber) { +case 7: +case 8: +dHX = 1.0; +break; +case 6: +} +var n = (doAll || ignoreH || allowH ? atom.getCovalentHydrogenCount() : 0); +if (doAll && n > 0 || ignoreH && n == 0) continue; +var nMissing = this.getMissingHydrogenCount(atom, false); +if (doAll && nMissing == 0) continue; +if (!ignoreH) n = nMissing; +var targetValence = this.aaRet[0]; +var hybridization = this.aaRet[2]; +var nBonds = this.aaRet[3] - (ignoreH ? n : 0); +if (nBonds == 0 && atom.isHetero()) continue; +hAtoms[i] = new Array(n); +var hPt = 0; +if (nBonds == 0) { +switch (n) { +case 4: +z.set(0.635, 0.635, 0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 3: +z.set(-0.635, -0.635, 0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 2: +z.set(-0.635, 0.635, -0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 1: +z.set(0.635, -0.635, -0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +} +} else { +switch (n) { +default: +break; +case 3: +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3b", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3c", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3d", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 2: +var isEne = (hybridization == 2 || atomicNumber == 5 || nBonds == 1 && targetValence == 4 || atomicNumber == 7 && this.isAdjacentSp2(atom)); +this.getHybridizationAndAxes(i, atomicNumber, z, x, (isEne ? "sp2b" : targetValence == 3 ? "sp3c" : "lpa"), false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, (isEne ? "sp2c" : targetValence == 3 ? "sp3d" : "lpb"), false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 1: +switch (targetValence - nBonds) { +case 1: +if (atomicNumber == 8 && atom === atom.group.getCarbonylOxygenAtom()) { +hAtoms[i] = null; +continue; +}if (this.getHybridizationAndAxes(i, atomicNumber, z, x, (hybridization == 2 || atomicNumber == 5 || atomicNumber == 6 && this.aaRet[1] == 1 || atomicNumber == 7 && ( new Boolean ( new Boolean (atom.group.getNitrogenAtom() === atom & atom.getFormalCharge() == 0).valueOf() || this.isAdjacentSp2(atom)).valueOf()) ? "sp2c" : "sp3d"), true, false, isQuick, null) != null) { +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +}break; +case 2: +this.getHybridizationAndAxes(i, atomicNumber, z, x, (targetValence == 4 ? "sp2c" : "sp2b"), false, false, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 3: +this.getHybridizationAndAxes(i, atomicNumber, z, x, "spb", false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +} +} +}if (hPt < n) { +var a = new Array(hPt); +for (var j = 0; j < hPt; j++) a[j] = hAtoms[i][j]; + +hAtoms[i] = a; +}nH += hPt; +} +nTotal[0] = nH; +return hAtoms; +}, "JU.BS,~A,JU.Lst,~N"); +c$.addH = Clazz_defineMethod(c$, "addH", +function(hAtoms, hPt, pt, atom, vConnect, sym, ptTemp){ +if (sym != null) { +ptTemp.setT(pt); +sym.toFractional(ptTemp, false); +if (!sym.isWithinUnitCell(ptTemp, 1, 1, 1)) { +return hPt; +}}hAtoms[hPt++] = pt; +if (vConnect != null) vConnect.addLast(atom); +return hPt; +}, "~A,~N,JU.P3,JM.Atom,JU.Lst,J.api.SymmetryInterface,JU.P3"); +Clazz_defineMethod(c$, "isAdjacentSp2", +function(atom){ +var bonds = atom.bonds; +for (var i = 0; i < bonds.length; i++) { +var b2 = bonds[i].getOtherAtom(atom).bonds; +for (var j = 0; j < b2.length; j++) switch (b2[j].getCovalentOrder()) { +case 2: +case 3: +return true; +} + +} +return false; +}, "JM.Atom"); +Clazz_defineMethod(c$, "getMissingHydrogenCount", +function(atom, allowNegative){ +if (this.aaRet == null) this.aaRet = Clazz_newIntArray (5, 0); +var targetCount = atom.getTargetValence(); +if (targetCount < 0) return 0; +var charge = atom.getFormalCharge(); +var valence = atom.getValence(); +var model = (this).am[atom.mi]; +var s = (model.isBioModel && !model.isPdbWithMultipleBonds ? atom.group.getGroup3() : null); +this.aaRet[0] = targetCount; +this.aaRet[1] = charge; +this.aaRet[2] = 0; +this.aaRet[3] = atom.getCovalentBondCount(); +this.aaRet[4] = (s == null ? 0 : valence); +if (s != null && charge == 0) { +if (this.bioModelset.getAminoAcidValenceAndCharge(s, atom.getAtomName(), this.aaRet)) { +targetCount = this.aaRet[0]; +charge = this.aaRet[1]; +}}if (charge != 0) { +targetCount += (targetCount == 4 ? -Math.abs(charge) : charge); +this.aaRet[0] = targetCount; +}var n = targetCount - valence; +return (n < 0 && !allowNegative ? 0 : n); +}, "JM.Atom,~B"); +Clazz_defineMethod(c$, "fixFormalCharges", +function(bs){ +var n = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = this.at[i]; +var nH = this.getMissingHydrogenCount(a, true); +if (nH != 0) { +var c0 = a.getFormalCharge(); +var c = c0 - nH; +a.setFormalCharge(c); +this.taintAtom(i, 4); +if (JU.Logger.debugging) JU.Logger.debug("atom " + a + " formal charge " + c0 + " -> " + c); +n++; +}} +return n; +}, "JU.BS"); +Clazz_defineMethod(c$, "getHybridizationAndAxes", +function(atomIndex, atomicNumber, z, x, lcaoTypeRaw, hybridizationCompatible, doAlignZ, isQuick, ref){ +var lcaoType = (lcaoTypeRaw.length > 0 && lcaoTypeRaw.charAt(0) == '-' ? lcaoTypeRaw.substring(1) : lcaoTypeRaw); +if (lcaoTypeRaw.indexOf("d") >= 0 && !lcaoTypeRaw.endsWith("sp3d")) return this.getHybridizationAndAxesD(atomIndex, z, x, lcaoType); +var atom = this.at[atomIndex]; +if (atomicNumber == 0) atomicNumber = atom.getElementNumber(); +var attached = this.getAttached(atom, 4, hybridizationCompatible, isQuick); +var nAttached = attached.length; +var pt = (lcaoType.charAt(lcaoType.length - 1)).charCodeAt(0) - 97; +if (pt < 0 || pt > 6) pt = 0; +z.set(0, 0, 0); +x.set(0, 0, 0); +var v = new Array(4); +for (var i = 0; i < nAttached; i++) { +var a = attached[i]; +if (a == null) { +nAttached = i; +break; +}v[i] = JU.V3.newVsub(atom, a); +v[i].normalize(); +z.add(v[i]); +} +if (nAttached > 0) x.setT(v[0]); +var isPlanar = false; +var vTemp = new JU.V3(); +if (nAttached >= 3) { +if (x.angle(v[1]) < 2.9845130209103035) vTemp.cross(x, v[1]); + else vTemp.cross(x, v[2]); +vTemp.normalize(); +var vTemp2 = new JU.V3(); +if (v[1].angle(v[2]) < 2.9845130209103035) vTemp2.cross(v[1], v[2]); + else vTemp2.cross(x, v[2]); +vTemp2.normalize(); +isPlanar = (Math.abs(vTemp2.dot(vTemp)) >= 0.95); +}var isSp3 = (lcaoType.indexOf("sp3") == 0); +var isSp2 = (!isSp3 && lcaoType.indexOf("sp2") == 0); +var isSp = (!isSp3 && !isSp2 && lcaoType.indexOf("sp") == 0); +var isP = (lcaoType.indexOf("p") == 0); +var isLp = (lcaoType.indexOf("lp") == 0); +var hybridization = null; +if (hybridizationCompatible) { +if (nAttached == 0) return null; +if (isSp3) { +if (pt > 3 || nAttached > 4) return null; +} else if (isSp2) { +if (pt > 2 || nAttached > 3) return null; +} else if (isSp) { +if (pt > 1 || nAttached > 2) return null; +}switch (nAttached) { +case 1: +if (atomicNumber == 1 && !isSp3) return null; +if (isSp3) { +hybridization = "sp3"; +break; +}switch (attached[0].getCovalentBondCount()) { +case 1: +if (attached[0].getValence() != 2) { +hybridization = "sp"; +break; +}case 2: +hybridization = (isSp ? "sp" : "sp2"); +break; +case 3: +if (!isSp2 && !isP) return null; +hybridization = "sp2"; +break; +} +break; +case 2: +if (z.length() < 0.1) { +if (lcaoType.indexOf("2") >= 0 || lcaoType.indexOf("3") >= 0) return null; +hybridization = "sp"; +break; +}hybridization = (isSp3 ? "sp3" : "sp2"); +if (lcaoType.indexOf("sp") == 0) { +break; +}if (isLp) { +hybridization = "lp"; +break; +}hybridization = lcaoType; +break; +default: +if (isPlanar && !isQuick) { +hybridization = "sp2"; +} else { +if (isPlanar) z.setT(vTemp); +if (isLp && nAttached == 3) { +hybridization = "lp"; +break; +}hybridization = "sp3"; +}} +if (hybridization == null) return null; +if (lcaoType.indexOf("p") == 0) { +if (hybridization === "sp3") return null; +} else if (lcaoType.indexOf(hybridization) < 0) { +return null; +}}if (pt < nAttached && !lcaoType.startsWith("p") && !lcaoType.startsWith("l")) { +z.sub2(attached[pt], atom); +z.normalize(); +return hybridization; +}switch (nAttached) { +case 0: +if (lcaoType.equals("sp3c") || lcaoType.equals("sp2d") || lcaoType.equals("lpa")) { +z.set(-0.5, -0.7, 1); +x.set(1, 0, 0); +} else if (lcaoType.equals("sp3b") || lcaoType.equals("lpb")) { +z.set(0.5, -0.7, -1.0); +x.set(1, 0, 0); +} else if (lcaoType.equals("sp3a")) { +z.set(0, 1, 0); +x.set(1, 0, 0); +} else { +z.set(0, 0, 1); +x.set(1, 0, 0); +}break; +case 1: +vTemp.setT(JM.AtomCollection.vRef); +x.cross(vTemp, z); +if (isSp3) { +for (var i = attached[0].getBondCount(); --i >= 0; ) { +if (attached[0].bonds[i].isCovalentNotPartial0() && attached[0].getBondedAtomIndex(i) != atom.i) { +x.sub2(attached[0], attached[0].bonds[i].getOtherAtom(attached[0])); +x.cross(z, x); +if (x.length() == 0) continue; +x.cross(x, z); +break; +}} +x.normalize(); +if (Float.isNaN(x.x)) { +x.setT(JM.AtomCollection.vRef); +x.cross(x, z); +}vTemp.cross(z, x); +vTemp.normalize(); +z.normalize(); +x.scaleAdd2(2.828, x, z); +if (pt != 3) { +x.normalize(); + new JU.M3().setAA(JU.A4.new4(z.x, z.y, z.z, (pt == 2 ? 1 : -1) * 2.09439507)).rotate(x); +}z.setT(x); +x.cross(vTemp, z); +break; +}vTemp.cross(x, z); +var na = attached[0].getCovalentBondCount(); +switch (na) { +case 3: +if (ref !== attached[0]) { +this.getHybridizationAndAxes(attached[0].i, 0, x, vTemp, "pz", false, doAlignZ, isQuick, atom); +vTemp.setT(x); +if (isSp2) { +x.cross(x, z); +if (pt == 1) x.scale(-1); +x.scale(JM.AtomCollection.sqrt3_2); +z.scaleAdd2(0.5, z, x); +} else if (isSp) { +} else { +vTemp.setT(z); +z.setT(x); +}x.cross(vTemp, z); +break; +}na = 2; +case 1: +if (na == 1 && attached[0].getValence() != 2) { +break; +}case 2: +var isCumulated = false; +var a0 = attached[0]; +x.setT(z); +vTemp.setT(JM.AtomCollection.vRef); +while (a0 != null && a0.getCovalentBondCount() == 2) { +var bonds = a0.bonds; +var a = null; +isCumulated = !isCumulated; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalentNotPartial0()) { +a = bonds[i].getOtherAtom(a0); +if (a !== atom) { +vTemp.sub2(a, a0); +break; +}} +vTemp.cross(vTemp, x); +if (vTemp.length() > 0.1 || a.getCovalentBondCount() != 2) break; +atom = a0; +a0 = a; +} +if (isSp) { +} else if (vTemp.length() > 0.1) { +z.cross(vTemp, x); +z.normalize(); +if (pt == 1) z.scale(-1); +z.scale(JM.AtomCollection.sqrt3_2); +z.scaleAdd2(0.5, x, z); +if (isP) { +vTemp.cross(z, x); +z.setT(vTemp); +vTemp.setT(x); +}x.cross(vTemp, z); +} else { +z.setT(x); +x.cross(JM.AtomCollection.vRef, x); +}break; +} +break; +case 2: +if (z.length() < 0.1) { +if (!lcaoType.equals("pz")) { +var a = attached[0]; +var ok = (a.getCovalentBondCount() == 3); +if (!ok) ok = ((a = attached[1]).getCovalentBondCount() == 3); +if (ok) { +this.getHybridizationAndAxes(a.i, 0, x, z, "pz", false, doAlignZ, isQuick, null); +if (lcaoType.equals("px")) x.scale(-1); +z.setT(v[0]); +break; +}vTemp.setT(JM.AtomCollection.vRef); +z.cross(vTemp, x); +vTemp.cross(z, x); +}z.setT(x); +x.cross(vTemp, z); +break; +}vTemp.cross(z, x); +if (isSp2) { +x.cross(z, vTemp); +break; +}if (isSp3 || isLp) { +vTemp.normalize(); +z.normalize(); +if (!lcaoType.equals("lp")) { +if (pt == 0 || pt == 2) z.scaleAdd2(-1.2, vTemp, z); + else z.scaleAdd2(1.2, vTemp, z); +}x.cross(z, vTemp); +break; +}x.cross(z, vTemp); +z.setT(vTemp); +if (z.z < 0) { +z.scale(-1); +x.scale(-1); +}break; +default: +if (isSp3) break; +if (!isPlanar) { +x.cross(z, x); +break; +}z.setT(vTemp); +if (z.z < 0 && doAlignZ) { +z.scale(-1); +x.scale(-1); +}} +x.normalize(); +z.normalize(); +return hybridization; +}, "~N,~N,JU.V3,JU.V3,~S,~B,~B,~B,JU.T3"); +Clazz_defineMethod(c$, "getHybridizationAndAxesD", +function(atomIndex, z, x, lcaoType){ +if (lcaoType.startsWith("sp3d2")) lcaoType = "d2sp3" + (lcaoType.length == 5 ? "a" : lcaoType.substring(5)); +if (lcaoType.startsWith("sp3d")) lcaoType = "dsp3" + (lcaoType.length == 4 ? "a" : lcaoType.substring(4)); +if (lcaoType.equals("d2sp3") || lcaoType.equals("dsp3")) lcaoType += "a"; +var isTrigonal = lcaoType.startsWith("dsp3"); +var pt = (lcaoType.charAt(lcaoType.length - 1)).charCodeAt(0) - 97; +if (z != null && (!isTrigonal && (pt > 5 || !lcaoType.startsWith("d2sp3")) || isTrigonal && pt > 4)) return null; +var atom = this.at[atomIndex]; +var attached = this.getAttached(atom, 6, true, false); +if (attached == null) return (z == null ? null : "?"); +var nAttached = attached.length; +if (nAttached < 3 && z != null) return null; +var isLP = (pt >= nAttached); +var nAngles = Clazz_doubleToInt(nAttached * (nAttached - 1) / 2); +var angles = JU.AU.newInt2(nAngles); +var ntypes = Clazz_newIntArray (3, 0); +var typePtrs = Clazz_newIntArray (3, nAngles, 0); +var n = 0; +var _90 = 0; +var _120 = 1; +var _180 = 2; +var n120_atom0 = 0; +for (var i = 0; i < nAttached - 1; i++) for (var j = i + 1; j < nAttached; j++) { +var angle = JU.Measure.computeAngleABC(attached[i], atom, attached[j], true); +var itype = (angle < 105 ? _90 : angle >= 150 ? _180 : _120); +typePtrs[itype][ntypes[itype]] = n; +ntypes[itype]++; +angles[n++] = Clazz_newIntArray(-1, [i, j]); +if (i == 0 && itype == _120) n120_atom0++; +} + +n = ntypes[_90] * 100 + ntypes[_120] * 10 + ntypes[_180]; +if (z == null) { +switch (n) { +default: +return ""; +case 0: +return ""; +case 1: +return "linear"; +case 100: +case 10: +return "bent"; +case 111: +case 201: +return "T-shaped"; +case 30: +case 120: +case 210: +case 300: +if (Math.abs(JU.Measure.computeTorsion(attached[0], atom, attached[1], attached[2], true)) > 162) return "trigonal planar"; +return "trigonal pyramidal"; +case 330: +return (n120_atom0 % 2 == 1 ? "tetrahedral" : "uncapped trigonal pyramid"); +case 60: +case 150: +case 240: +return "tetrahedral"; +case 402: +return "square planar"; +case 411: +case 501: +return "see-saw"; +case 631: +return "trigonal bipyramidal"; +case 802: +return "uncapped square pyramid"; +case 1203: +return "octahedral"; +} +}switch (n) { +default: +return null; +case 201: +break; +case 210: +case 330: +case 411: +case 631: +if (!isTrigonal) return null; +break; +case 300: +case 402: +case 501: +case 802: +case 1203: +if (isTrigonal) return null; +break; +} +if (isLP) { +var a; +var bs; +if (isTrigonal) { +switch (ntypes[_120]) { +case 0: +z.sub2(attached[angles[typePtrs[_90][0]][0]], atom); +x.sub2(attached[angles[typePtrs[_90][0]][1]], atom); +z.cross(z, x); +z.normalize(); +if (pt == 4) z.scale(-1); +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +x.sub2(attached[i], atom); +x.normalize(); +x.scale(0.5); +z.scaleAdd2(JM.AtomCollection.sqrt3_2, z, x); +pt = -1; +break; +case 1: +if (pt == 4) { +a = angles[typePtrs[_120][0]]; +z.add2(attached[a[0]], attached[a[1]]); +z.scaleAdd2(-2, atom, z); +pt = -1; +} else { +bs = this.findNotAttached(nAttached, angles, typePtrs[_120], ntypes[_120]); +pt = bs.nextSetBit(0); +}break; +default: +bs = this.findNotAttached(nAttached, angles, typePtrs[_120], ntypes[_120]); +pt = bs.nextSetBit(0); +} +} else { +var isPlanar = false; +if (nAttached == 4) { +switch (ntypes[_180]) { +case 1: +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +if (pt == 4) pt = i; + else pt = bs.nextSetBit(i + 1); +break; +default: +isPlanar = true; +} +} else { +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +for (var j = nAttached; j < pt && i >= 0; j++) i = bs.nextSetBit(i + 1); + +if (i == -1) isPlanar = true; + else pt = i; +}if (isPlanar) { +z.sub2(attached[angles[typePtrs[_90][0]][0]], atom); +x.sub2(attached[angles[typePtrs[_90][0]][1]], atom); +z.cross(z, x); +if (pt == 4) z.scale(-1); +pt = -1; +}}}if (pt >= 0) z.sub2(attached[pt], atom); +if (isLP) z.scale(-1); +z.normalize(); +return (isTrigonal ? "dsp3" : "d2sp3"); +}, "~N,JU.V3,JU.V3,~S"); +Clazz_defineMethod(c$, "getAttached", +function(atom, nMax, doSort, isQuick){ +var nAttached = atom.getCovalentBondCount(); +if (nAttached > nMax) return null; +var attached = new Array(nAttached); +if (nAttached > 0) { +var bonds = atom.bonds; +var n = 0; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalentNotPartial0()) { +var a = bonds[i].getOtherAtom(atom); +if (!isQuick || a.getAtomicAndIsotopeNumber() != 1) attached[n++] = a; +} +if (doSort && !isQuick) java.util.Arrays.sort(attached, Clazz_innerTypeInstance(JM.AtomCollection.AtomSorter, this, null)); +}return attached; +}, "JM.Atom,~N,~B,~B"); +Clazz_defineMethod(c$, "findNotAttached", +function(nAttached, angles, ptrs, nPtrs){ +var bs = JU.BS.newN(nAttached); +bs.setBits(0, nAttached); +for (var i = 0; i < nAttached; i++) for (var j = 0; j < nPtrs; j++) { +var a = angles[ptrs[j]]; +if (a[0] == i || a[1] == i) bs.clear(i); +} + +return bs; +}, "~N,~A,~A,~N"); +Clazz_defineMethod(c$, "getAtomBitsMDa", +function(tokType, specInfo, bs){ +var iSpec = (Clazz_instanceOf(specInfo, Integer) ? (specInfo).intValue() : 0); +switch (tokType) { +case 1086326786: +case 1086326785: +var isType = (tokType == 1086326785); +var names = "," + specInfo + ","; +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var s = (isType ? this.at[i].getAtomType() : this.at[i].getAtomName()); +if (names.indexOf("," + s + ",") >= 0) bs.set(i); +} +return bs; +case 1094715393: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getAtomNumber() == iSpec) bs.set(i); +} +return bs; +case 2097155: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getCovalentBondCount() > 0) bs.set(i); +} +return bs; +case 2097188: +case 2097156: +case 136314895: +case 2097166: +case 2097168: +case 2097170: +case 2097172: +case 2097174: +case 2097184: +return ((this).haveBioModels ? (this).bioModelset.getAtomBitsBS(tokType, null, bs) : bs); +case 1612709900: +iSpec = 1; +case 1094715402: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getElementNumber() == iSpec) bs.set(i); +} +return bs; +case 1612709894: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isHetero()) bs.set(i); +} +return bs; +case 1073741824: +return this.getIdentifierOrNull(specInfo); +case 2097165: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isLeadAtom()) bs.set(i); +} +return bs; +case 1094713362: +case 1639976963: +return ((this).haveBioModels ? (this).bioModelset.getAtomBitsBS(tokType, specInfo, bs) : bs); +case 1094715412: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getResno() == iSpec) bs.set(i); +} +return bs; +case 1612709912: +var hs = Clazz_newIntArray (2, 0); +var a; +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var g = this.at[i].group.groupID; +if (g >= 42 && g < 45) { +bs.set(i); +} else if ((a = this.at[i]).getElementNumber() == 8 && a.getCovalentBondCount() == 2) { +var bonds = a.bonds; +var n = 0; +var b; +for (var j = bonds.length; --j >= 0 && n < 3; ) if (bonds[j].isCovalentNotPartial0() && (b = bonds[j].getOtherAtom(a)).getElementNumber() == 1) hs[n++ % 2] = b.i; + +if (n == 2) { +bs.set(hs[1]); +bs.set(hs[0]); +bs.set(i); +}}} +return bs; +case 1073742355: +var spec = specInfo; +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.isAltLoc(this.at[i].altloc, spec)) bs.set(i); + +return bs; +case 1073742356: +var atomSpec = (specInfo).toUpperCase(); +if (atomSpec.indexOf("\\?") >= 0) atomSpec = JU.PT.rep(atomSpec, "\\?", "\1"); +var allowStar = atomSpec.startsWith("?*"); +if (allowStar) atomSpec = atomSpec.substring(1); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.isAtomNameMatch(this.at[i], atomSpec, allowStar, allowStar)) bs.set(i); + +return bs; +case 1073742357: +return JU.BSUtil.copy(this.getChainBits(iSpec)); +case 1073742360: +return this.getSpecName(specInfo); +case 1073742361: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].group.groupID == iSpec) bs.set(i); + +return bs; +case 1073742362: +return JU.BSUtil.copy(this.getSeqcodeBits(iSpec, true)); +case 5: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].group.getInsCode() == iSpec) bs.set(i); + +return bs; +case 1296041985: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getSymOp() == iSpec) bs.set(i); + +return bs; +} +var bsTemp; +var bsInfo = specInfo; +var i0 = bsInfo.nextSetBit(0); +if (i0 < 0) return bs; +switch (tokType) { +case 1094717454: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +bs.or((this).am[this.at[i].mi].bsAtoms); +bsTemp.andNot(bs); +} +return bs; +case 1086326788: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +this.at[i].group.chain.setAtomBits(bs); +bsTemp.andNot(bs); +} +return bs; +case 1086326789: +bsTemp = new JU.BS(); +for (var i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) bsTemp.set(this.at[i].getElementNumber()); + +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && bsTemp.get(this.at[i].getElementNumber())) bs.set(i); + +return bs; +case 1086324742: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +this.at[i].group.setAtomBits(bs); +bsTemp.andNot(bs); +} +return bs; +case 1094713366: +bsTemp = new JU.BS(); +for (var i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) bsTemp.set(this.at[i].atomSite); + +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && bsTemp.get(this.at[i].atomSite)) bs.set(i); + +return bs; +} +JU.Logger.error("MISSING getAtomBits entry for " + JS.T.nameOf(tokType)); +return bs; +}, "~N,~O,JU.BS"); +Clazz_defineMethod(c$, "getChainBits", +function(chainID){ +var caseSensitive = this.vwr.getBoolean(603979822); +if (caseSensitive) { +if (chainID >= 97 && chainID <= 122) chainID += 159; +} else { +if (chainID >= 0 && chainID < 300) chainID = this.chainToUpper(chainID); +}var bs = new JU.BS(); +var bsDone = JU.BS.newN(this.ac); +var id; +for (var i = bsDone.nextClearBit(0); i < this.ac; i = bsDone.nextClearBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var chain = this.at[i].group.chain; +if (chainID == (id = chain.chainID) || !caseSensitive && id >= 0 && id < 300 && chainID == this.chainToUpper(id)) { +chain.setAtomBits(bs); +bsDone.or(bs); +} else { +chain.setAtomBits(bsDone); +}} +return bs; +}, "~N"); +Clazz_defineMethod(c$, "chainToUpper", +function(chainID){ +return (chainID >= 97 && chainID <= 122 ? chainID - 32 : chainID >= 256 && chainID < 300 ? chainID - 191 : chainID); +}, "~N"); +Clazz_defineMethod(c$, "isAltLoc", +function(altloc, strPattern){ +if (strPattern == null) return (altloc == '\0'); +if (strPattern.length != 1) return false; +var ch = strPattern.charAt(0); +return (ch == '*' || ch == '?' && altloc != '\0' || altloc == ch); +}, "~S,~S"); +Clazz_defineMethod(c$, "getSeqcodeBits", +function(seqcode, returnEmpty){ +var bs = new JU.BS(); +var seqNum = JM.Group.getSeqNumberFor(seqcode); +var haveSeqNumber = (seqNum != 2147483647); +var isEmpty = true; +var insCode = JM.Group.getInsertionCodeChar(seqcode); +switch ((insCode).charCodeAt(0)) { +case 63: +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var atomSeqcode = this.at[i].group.seqcode; +if ((!haveSeqNumber || seqNum == JM.Group.getSeqNumberFor(atomSeqcode)) && JM.Group.getInsertionCodeFor(atomSeqcode) != 0) { +bs.set(i); +isEmpty = false; +}} +break; +default: +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var atomSeqcode = this.at[i].group.seqcode; +if (seqcode == atomSeqcode || !haveSeqNumber && seqcode == JM.Group.getInsertionCodeFor(atomSeqcode) || insCode == '*' && seqNum == JM.Group.getSeqNumberFor(atomSeqcode)) { +bs.set(i); +isEmpty = false; +}} +} +return (!isEmpty || returnEmpty ? bs : null); +}, "~N,~B"); +Clazz_defineMethod(c$, "getIdentifierOrNull", +function(identifier){ +var bs = this.getSpecNameOrNull(identifier, false); +if (identifier.indexOf("\\?") >= 0) identifier = JU.PT.rep(identifier, "\\?", "\1"); +return (bs != null || identifier.indexOf("?") > 0 ? bs : identifier.indexOf("*") > 0 ? this.getSpecNameOrNull(identifier, true) : (this).haveBioModels ? (this).bioModelset.getIdentifierOrNull(identifier) : null); +}, "~S"); +Clazz_defineMethod(c$, "getSpecName", +function(name){ +var bs = this.getSpecNameOrNull(name, false); +if (bs != null) return bs; +if (name.indexOf("*") > 0) bs = this.getSpecNameOrNull(name, true); +return (bs == null ? new JU.BS() : bs); +}, "~S"); +Clazz_defineMethod(c$, "getSpecNameOrNull", +function(name, checkStar){ +var bs = null; +name = name.toUpperCase(); +if (name.indexOf("\\?") >= 0) name = JU.PT.rep(name, "\\?", "\1"); +var allowInitialStar = name.startsWith("?*"); +if (allowInitialStar) name = name.substring(1); +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var g3 = this.at[i].getGroup3(true); +if (g3 != null && g3.length > 0) { +if (JU.PT.isMatch(g3, name, checkStar, true)) { +if (bs == null) bs = JU.BS.newN(i + 1); +bs.set(i); +while (--i >= 0) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getGroup3(true).equals(g3)) bs.set(i); +} +i++; +}} else if (this.isAtomNameMatch(this.at[i], name, checkStar, allowInitialStar)) { +if (bs == null) bs = JU.BS.newN(i + 1); +bs.set(i); +}} +return bs; +}, "~S,~B"); +Clazz_defineMethod(c$, "isAtomNameMatch", +function(atom, strPattern, checkStar, allowInitialStar){ +return JU.PT.isMatch(atom.getAtomName().toUpperCase(), strPattern, checkStar, allowInitialStar); +}, "JM.Atom,~S,~B,~B"); +Clazz_defineMethod(c$, "getAtomIndices", +function(bs){ +var n = 0; +var indices = Clazz_newIntArray (this.ac, 0); +for (var j = bs.nextSetBit(0); j >= 0 && j < this.ac; j = bs.nextSetBit(j + 1)) indices[j] = ++n; + +return indices; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAtomsNearPlane", +function(distance, plane){ +var bsResult = new JU.BS(); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var d = JU.Measure.distanceToPlane(plane, atom); +if (distance > 0 && d >= -0.1 && d <= distance || distance < 0 && d <= 0.1 && d >= distance || distance == 0 && Math.abs(d) < 0.01) bsResult.set(atom.i); +} +return bsResult; +}, "~N,JU.P4"); +Clazz_defineMethod(c$, "clearVisibleSets", +function(){ +this.haveBSVisible = false; +this.haveBSClickable = false; +}); +Clazz_defineMethod(c$, "getAtomsInFrame", +function(bsAtoms){ +this.clearVisibleSets(); +bsAtoms.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isVisible(1)) bsAtoms.set(i); + +}, "JU.BS"); +Clazz_defineMethod(c$, "getVisibleSet", +function(forceNew){ +if (forceNew) { +this.vwr.setModelVisibility(); +this.vwr.shm.finalizeAtoms(null, true); +} else if (this.haveBSVisible) { +return this.bsVisible; +}this.bsVisible.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].checkVisible()) this.bsVisible.set(i); + +if (this.vwr.shm.bsSlabbedInternal != null) this.bsVisible.andNot(this.vwr.shm.bsSlabbedInternal); +this.haveBSVisible = true; +return this.bsVisible; +}, "~B"); +Clazz_defineMethod(c$, "getClickableSet", +function(forceNew){ +if (forceNew) this.vwr.setModelVisibility(); + else if (this.haveBSClickable) return this.bsClickable; +this.bsClickable.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isClickable()) this.bsClickable.set(i); + +this.haveBSClickable = true; +return this.bsClickable; +}, "~B"); +Clazz_defineMethod(c$, "isModulated", +function(i){ +return this.bsModulated != null && this.bsModulated.get(i); +}, "~N"); +Clazz_defineMethod(c$, "deleteModelAtoms", +function(firstAtomIndex, nAtoms, bsAtoms){ +this.at = JU.AU.deleteElements(this.at, firstAtomIndex, nAtoms); +this.ac = this.at.length; +for (var j = firstAtomIndex; j < this.ac; j++) { +this.at[j].i = j; +this.at[j].mi--; +} +if (this.bsModulated != null) JU.BSUtil.deleteBits(this.bsModulated, bsAtoms); +this.deleteAtomTensors(bsAtoms); +this.atomNames = JU.AU.deleteElements(this.atomNames, firstAtomIndex, nAtoms); +this.atomTypes = JU.AU.deleteElements(this.atomTypes, firstAtomIndex, nAtoms); +this.atomResnos = JU.AU.deleteElements(this.atomResnos, firstAtomIndex, nAtoms); +this.atomSerials = JU.AU.deleteElements(this.atomSerials, firstAtomIndex, nAtoms); +this.atomSeqIDs = JU.AU.deleteElements(this.atomSeqIDs, firstAtomIndex, nAtoms); +this.dssrData = JU.AU.deleteElements(this.dssrData, firstAtomIndex, nAtoms); +this.bfactor100s = JU.AU.deleteElements(this.bfactor100s, firstAtomIndex, nAtoms); +this.hasBfactorRange = false; +this.occupancies = JU.AU.deleteElements(this.occupancies, firstAtomIndex, nAtoms); +this.resetPartialCharges(); +this.atomTensorList = JU.AU.deleteElements(this.atomTensorList, firstAtomIndex, nAtoms); +this.vibrations = JU.AU.deleteElements(this.vibrations, firstAtomIndex, nAtoms); +this.nSurfaceAtoms = 0; +this.bsSurface = null; +this.surfaceDistance100s = null; +if (this.tainted != null) for (var i = 0; i < 18; i++) JU.BSUtil.deleteBits(this.tainted[i], bsAtoms); + +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "getAtomIdentityInfo", +function(i, info, ptTemp){ +info.put("_ipt", Integer.$valueOf(i)); +info.put("atomIndex", Integer.$valueOf(i)); +info.put("atomno", Integer.$valueOf(this.at[i].getAtomNumber())); +info.put("info", this.getAtomInfo(i, null, ptTemp)); +info.put("sym", this.at[i].getElementSymbol()); +}, "~N,java.util.Map,JU.P3"); +Clazz_defineMethod(c$, "getAtomTensorList", +function(i){ +return (i < 0 || this.atomTensorList == null || i >= this.atomTensorList.length ? null : this.atomTensorList[i]); +}, "~N"); +Clazz_defineMethod(c$, "deleteAtomTensors", +function(bsAtoms){ +if (this.atomTensors == null) return; +var toDelete = new JU.Lst(); +for (var key, $key = this.atomTensors.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var list = this.atomTensors.get(key); +for (var i = list.size(); --i >= 0; ) { +var t = list.get(i); +if (bsAtoms.get(t.atomIndex1) || t.atomIndex2 >= 0 && bsAtoms.get(t.atomIndex2)) list.removeItemAt(i); +} +if (list.size() == 0) toDelete.addLast(key); +} +for (var i = toDelete.size(); --i >= 0; ) this.atomTensors.remove(toDelete.get(i)); + +}, "JU.BS"); +Clazz_defineMethod(c$, "setCapacity", +function(nAtoms){ +this.atomCapacity += nAtoms; +}, "~N"); +Clazz_defineMethod(c$, "setAtomTensors", +function(atomIndex, list){ +if (list == null || list.size() == 0) return; +if (this.atomTensors == null) this.atomTensors = new java.util.Hashtable(); +if (this.atomTensorList == null) this.atomTensorList = new Array(this.at.length); +this.atomTensorList = JU.AU.ensureLength(this.atomTensorList, this.at.length); +this.atomTensorList[atomIndex] = JM.AtomCollection.getTensorList(list); +for (var i = list.size(); --i >= 0; ) { +var t = list.get(i); +t.atomIndex1 = atomIndex; +t.atomIndex2 = -1; +t.modelIndex = this.at[atomIndex].mi; +this.addTensor(t, t.type); +if (t.altType != null) this.addTensor(t, t.altType); +} +}, "~N,JU.Lst"); +Clazz_defineMethod(c$, "addTensor", +function(t, type){ +type = type.toLowerCase(); +var tensors = this.atomTensors.get(type); +if (tensors == null) { +this.atomTensors.put(type, tensors = new JU.Lst()); +tensors.ensureCapacity(this.atomCapacity); +}tensors.addLast(t); +}, "JU.Tensor,~S"); +c$.getTensorList = Clazz_defineMethod(c$, "getTensorList", +function(list){ +var pt = -1; +var haveTLS = false; +var n = list.size(); +for (var i = n; --i >= 0; ) { +var t = list.get(i); +if (t.forThermalEllipsoid) pt = i; + else if (t.iType == 2) haveTLS = true; +} +var a = new Array((pt >= 0 || !haveTLS ? 0 : 1) + n); +if (pt >= 0) { +a[0] = list.get(pt); +if (list.size() == 1) return a; +}if (haveTLS) { +pt = 0; +for (var i = n; --i >= 0; ) { +var t = list.get(i); +if (t.forThermalEllipsoid) continue; +a[++pt] = t; +} +} else { +for (var i = 0; i < n; i++) a[i] = list.get(i); + +}return a; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getAtomTensor", +function(i, type){ +var tensors = this.getAtomTensorList(i); +if (tensors != null && type != null) { +type = type.toLowerCase(); +for (var j = 0; j < tensors.length; j++) { +var t = tensors[j]; +if (t != null && (type.equals(t.type) || type.equals(t.altType))) return t; +} +}return null; +}, "~N,~S"); +Clazz_defineMethod(c$, "getAllAtomTensors", +function(type){ +if (this.atomTensors == null) return null; +if (type != null) return this.atomTensors.get(type.toLowerCase()); +var list = new JU.Lst(); +for (var e, $e = this.atomTensors.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) list.addAll(e.getValue()); + +return list; +}, "~S"); +Clazz_defineMethod(c$, "scaleVectorsToMax", +function(max){ +if (this.vibrations == null) return; +var m = 0; +var bsVib = JU.BS.newN(this.ac); +for (var i = this.vibrations.length; --i >= 0; ) { +var v = this.getVibration(i, false); +if (v != null && (v.modDim == -1 || v.modDim == -2)) { +m = Math.max(m, v.length()); +bsVib.set(i); +}} +if (m == max || m == 0) return; +m = max / m; +var ok = false; +for (var i = bsVib.nextSetBit(0); i >= 0; i = bsVib.nextSetBit(i + 1)) { +var v = this.getVibration(i, false); +var mod = this.getModulation(i); +if (mod == null) { +if (m == 0) return; +v.scale(m); +} else { +mod.scaleVibration(m); +}if (!ok) { +this.taintAtom(i, 12); +ok = true; +}} +this.tainted[12].or(bsVib); +}, "~N"); +Clazz_defineMethod(c$, "getAtomsFromAtomNumberInFrame", +function(atomNumber){ +var bs = this.vwr.getFrameAtoms(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (this.at[i].getAtomNumber() != atomNumber) bs.clear(i); + +return bs; +}, "~N"); +Clazz_defineMethod(c$, "generateCrystalClass", +function(atomIndex, pt){ +var sym = (atomIndex < 0 || atomIndex >= this.ac ? this.vwr.getOperativeSymmetry() : this.at[atomIndex].getUnitCell()); +var isRandom = (pt != null && Float.isNaN(pt.x)); +var ret = (sym == null ? null : sym.generateCrystalClass(isRandom ? null : pt != null ? pt : this.at[atomIndex])); +return (ret == null ? new JU.Lst() : ret); +}, "~N,JU.P3"); +c$.isDeleted = Clazz_defineMethod(c$, "isDeleted", +function(atom){ +return (atom == null || atom.isDeleted()); +}, "JM.Atom"); +c$.$AtomCollection$AtomSorter$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +Clazz_instantialize(this, arguments);}, JM.AtomCollection, "AtomSorter", null, java.util.Comparator); +Clazz_overrideMethod(c$, "compare", +function(a1, a2){ +return (a1.i > a2.i ? 1 : a1.i < a2.i ? -1 : 0); +}, "JM.Atom,JM.Atom"); +/*eoif4*/})(); +}; +c$.sqrt3_2 = Math.sqrt(3) / 2; +c$.vRef = JU.V3.new3(3.14159, 2.71828, 1.41421); +c$.userSettableValues = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["J.api.AtomIndexIterator"], "JM.AtomIteratorWithinModel", ["J.atomdata.RadiusData"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.cubeIterator = null; +this.bspf = null; +this.threadSafe = false; +this.hemisphereOnly = false; +this.isZeroBased = false; +this.modelIndex = 2147483647; +this.atomIndex = -1; +this.zeroBase = 0; +this.distanceSquared = 0; +this.bsSelected = null; +this.isGreaterOnly = false; +this.checkGreater = false; +this.radiusData = null; +this.vdw1 = 0; +this.isVdw = false; +this.atoms = null; +this.vwr = null; +this.iNext = 0; +Clazz_instantialize(this, arguments);}, JM, "AtomIteratorWithinModel", null, J.api.AtomIndexIterator); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "initialize", +function(bspf, bsSelected, isGreaterOnly, isZeroBased, hemisphereOnly, threadSafe){ +this.bspf = bspf; +this.bsSelected = bsSelected; +this.isGreaterOnly = isGreaterOnly; +this.isZeroBased = isZeroBased; +this.hemisphereOnly = hemisphereOnly; +this.threadSafe = threadSafe; +this.cubeIterator = null; +}, "J.bspt.Bspf,JU.BS,~B,~B,~B,~B"); +Clazz_overrideMethod(c$, "setModel", +function(modelSet, modelIndex, firstModelAtom, atomIndex, center, distance, rd){ +if (this.threadSafe) modelIndex = -1 - modelIndex; +if (modelIndex != this.modelIndex || this.cubeIterator == null) { +this.cubeIterator = this.bspf.getCubeIterator(modelIndex); +this.modelIndex = modelIndex; +}this.zeroBase = (this.isZeroBased ? firstModelAtom : 0); +if (distance == -2147483648) return; +this.atomIndex = (distance < 0 ? -1 : atomIndex); +this.isVdw = (rd != null); +if (this.isVdw) { +this.radiusData = rd; +this.atoms = modelSet.at; +this.vwr = modelSet.vwr; +distance = (rd.factorType === J.atomdata.RadiusData.EnumType.OFFSET ? 5 + rd.value : 5 * rd.value); +this.vdw1 = this.atoms[atomIndex].getVanderwaalsRadiusFloat(this.vwr, rd.vdwType); +}this.checkGreater = (this.isGreaterOnly && atomIndex != 2147483647); +this.setCenter(center, distance); +}, "JM.ModelSet,~N,~N,~N,JU.T3,~N,J.atomdata.RadiusData"); +Clazz_overrideMethod(c$, "setCenter", +function(center, distance){ +this.setCenter2(center, distance); +}, "JU.T3,~N"); +Clazz_defineMethod(c$, "setCenter2", +function(center, distance){ +if (this.cubeIterator == null) return; +this.cubeIterator.initialize(center, distance, this.hemisphereOnly); +this.distanceSquared = distance * distance; +}, "JU.T3,~N"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.hasNext2(); +}); +Clazz_defineMethod(c$, "hasNext2", +function(){ +if (this.atomIndex >= 0) while (this.cubeIterator.hasMoreElements()) { +var a = this.cubeIterator.nextElement(); +if ((this.iNext = a.i) != this.atomIndex && (!this.checkGreater || this.iNext > this.atomIndex) && (this.bsSelected == null || this.bsSelected.get(this.iNext))) { +return true; +}} + else if (this.cubeIterator.hasMoreElements()) { +var a = this.cubeIterator.nextElement(); +this.iNext = a.i; +return true; +}this.iNext = -1; +return false; +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.iNext - this.zeroBase; +}); +Clazz_overrideMethod(c$, "foundDistance2", +function(){ +return (this.cubeIterator == null ? -1 : this.cubeIterator.foundDistance2()); +}); +Clazz_overrideMethod(c$, "addAtoms", +function(bsResult){ +var iAtom; +while (this.hasNext()) if ((iAtom = this.next()) >= 0) { +var d; +if (this.isVdw) { +d = this.atoms[iAtom].getVanderwaalsRadiusFloat(this.vwr, this.radiusData.vdwType) + this.vdw1; +switch (this.radiusData.factorType) { +case J.atomdata.RadiusData.EnumType.OFFSET: +d += this.radiusData.value * 2; +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +d *= this.radiusData.value; +break; +} +d *= d; +} else { +d = this.distanceSquared; +}if (this.foundDistance2() <= d) bsResult.set(iAtom); +} +}, "JU.BS"); +Clazz_overrideMethod(c$, "release", +function(){ +if (this.cubeIterator != null) { +this.cubeIterator.release(); +this.cubeIterator = null; +}}); +Clazz_overrideMethod(c$, "getPosition", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.AtomIteratorWithinModel"], "JM.AtomIteratorWithinModelSet", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bsModels = null; +this.center = null; +this.distance = 0; +Clazz_instantialize(this, arguments);}, JM, "AtomIteratorWithinModelSet", JM.AtomIteratorWithinModel); +Clazz_makeConstructor(c$, +function(bsModels){ +Clazz_superConstructor (this, JM.AtomIteratorWithinModelSet, []); +this.bsModels = bsModels; +}, "JU.BS"); +Clazz_overrideMethod(c$, "setCenter", +function(center, distance){ +this.center = center; +this.distance = distance; +this.set(0); +}, "JU.T3,~N"); +Clazz_defineMethod(c$, "set", +function(iModel){ +if ((this.modelIndex = this.bsModels.nextSetBit(iModel)) < 0 || (this.cubeIterator = this.bspf.getCubeIterator(this.modelIndex)) == null) return false; +this.setCenter2(this.center, this.distance); +return true; +}, "~N"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.hasNext2()) return true; +if (!this.set(this.modelIndex + 1)) return false; +return this.hasNext(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.Edge", "JV.JC"], "JM.Bond", ["JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atom1 = null; +this.atom2 = null; +this.mad = 0; +this.colix = 0; +this.shapeVisibilityFlags = 0; +Clazz_instantialize(this, arguments);}, JM, "Bond", JU.Edge); +Clazz_makeConstructor(c$, +function(atom1, atom2, order, mad, colix){ +Clazz_superConstructor (this, JM.Bond, []); +this.atom1 = atom1; +this.atom2 = atom2; +this.colix = colix; +this.setOrder(order); +this.setMad(mad); +}, "JM.Atom,JM.Atom,~N,~N,~N"); +Clazz_defineMethod(c$, "setMad", +function(mad){ +this.mad = mad; +this.setShapeVisibility(mad != 0); +}, "~N"); +Clazz_defineMethod(c$, "setShapeVisibility", +function(isVisible){ +var wasVisible = ((this.shapeVisibilityFlags & JM.Bond.myVisibilityFlag) != 0); +if (wasVisible == isVisible) return; +this.atom1.addDisplayedBond(JM.Bond.myVisibilityFlag, isVisible); +this.atom2.addDisplayedBond(JM.Bond.myVisibilityFlag, isVisible); +if (isVisible) this.shapeVisibilityFlags |= JM.Bond.myVisibilityFlag; + else this.shapeVisibilityFlags &= ~JM.Bond.myVisibilityFlag; +}, "~B"); +Clazz_defineMethod(c$, "getIdentity", +function(){ +return (this.index + 1) + " " + JU.Edge.getBondOrderNumberFromOrder(this.order) + " " + this.atom1.getInfo() + " -- " + this.atom2.getInfo() + " " + this.atom1.distance(this.atom2); +}); +Clazz_overrideMethod(c$, "isCovalent", +function(){ +return (this.order & 1023) != 0; +}); +Clazz_overrideMethod(c$, "isHydrogen", +function(){ +return JU.Edge.isOrderH(this.order); +}); +Clazz_defineMethod(c$, "isStereo", +function(){ +return (this.order & 1024) != 0; +}); +Clazz_overrideMethod(c$, "isPartial", +function(){ +return (this.order & 224) != 0; +}); +Clazz_defineMethod(c$, "isAromatic", +function(){ +return (this.order & 512) != 0; +}); +Clazz_defineMethod(c$, "getEnergy", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "getValence", +function(){ +return (!this.isCovalent() || this.order == 33 ? 0 : this.is(515) ? 1 : this.order & 7); +}); +Clazz_defineMethod(c$, "deleteAtomReferences", +function(){ +if (this.atom1 != null) this.atom1.deleteBond(this); +if (this.atom2 != null) this.atom2.deleteBond(this); +this.atom1 = this.atom2 = null; +}); +Clazz_defineMethod(c$, "setTranslucent", +function(isTranslucent, translucentLevel){ +this.colix = JU.C.getColixTranslucent3(this.colix, isTranslucent, translucentLevel); +}, "~B,~N"); +Clazz_defineMethod(c$, "setOrder", +function(order){ +if (this.atom1.getElementNumber() == 16 && this.atom2.getElementNumber() == 16) order |= 256; +if (order == 512) order = 515; +this.order = order | (this.order & 131072); +}, "~N"); +Clazz_overrideMethod(c$, "getAtomIndex1", +function(){ +return this.atom1.i; +}); +Clazz_overrideMethod(c$, "getAtomIndex2", +function(){ +return this.atom2.i; +}); +Clazz_overrideMethod(c$, "getCovalentOrder", +function(){ +return JU.Edge.getCovalentBondOrder(this.order); +}); +Clazz_defineMethod(c$, "getOtherAtom", +function(thisAtom){ +return (this.atom1 === thisAtom ? this.atom2 : this.atom2 === thisAtom ? this.atom1 : null); +}, "JM.Atom"); +Clazz_defineMethod(c$, "is", +function(bondType){ +return (this.order & 131071) == bondType; +}, "~N"); +Clazz_overrideMethod(c$, "getOtherNode", +function(thisAtom){ +return (this.atom1 === thisAtom ? this.atom2 : this.atom2 === thisAtom || thisAtom == null ? this.atom1 : null); +}, "JU.SimpleNode"); +Clazz_defineMethod(c$, "setAtropisomerOptions", +function(){ +var i1; +var i2 = 2147483647; +var bonds = this.atom1.bonds; +for (i1 = 0; i1 < bonds.length; i1++) { +var a = bonds[i1].getOtherAtom(this.atom1); +if (a !== this.atom2) break; +} +if (i1 < bonds.length) { +bonds = this.atom2.bonds; +for (i2 = 0; i2 < bonds.length; i2++) { +var a = bonds[i2].getOtherAtom(this.atom2); +if (a !== this.atom1) break; +} +}this.order = (i1 > 2 || i2 >= bonds.length || i2 > 2 ? 1 : JU.Edge.getAtropismOrder(i1 + 1, i2 + 1)); +}); +Clazz_overrideMethod(c$, "getCIPChirality", +function(doCalculate){ +return ""; +}, "~B"); +Clazz_overrideMethod(c$, "setCIPChirality", +function(c){ +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.atom1 + " - " + this.atom2; +}); +Clazz_overrideMethod(c$, "getAtom", +function(i){ +return (i == 1 ? this.atom2 : this.atom1); +}, "~N"); +Clazz_defineMethod(c$, "isCovalentNotPartial0", +function(){ +return ((this.order & 1023) != 0 && this.order != 33); +}); +c$.myVisibilityFlag = JV.JC.getShapeVisibilityFlag(1); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.AtomCollection", "JU.V3"], "JM.BondCollection", ["JU.AU", "$.BS", "$.Measure", "JM.Bond", "$.BondIteratorSelected", "$.BondSet", "$.HBond", "JU.BSUtil", "$.C", "$.Edge"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bo = null; +this.bondCount = 0; +this.numCached = null; +this.freeBonds = null; +this.molecules = null; +this.moleculeCount = 0; +this.defaultCovalentMad = 0; +this.bsAromaticSingle = null; +this.bsAromaticDouble = null; +this.bsAromatic = null; +this.haveHiddenBonds = false; +this.v1 = null; +this.v2 = null; +this.haveAtropicBonds = false; +Clazz_instantialize(this, arguments);}, JM, "BondCollection", JM.AtomCollection); +Clazz_prepareFields (c$, function(){ +this.v1 = new JU.V3(); +this.v2 = new JU.V3(); +}); +Clazz_defineMethod(c$, "setupBC", +function(){ +this.bsAromatic = new JU.BS(); +this.numCached = Clazz_newIntArray (5, 0); +this.freeBonds = new Array(5); +for (var i = 5; --i > 0; ) this.freeBonds[i] = new Array(200); + +this.setupAC(); +}); +Clazz_defineMethod(c$, "releaseModelSetBC", +function(){ +this.bo = null; +this.freeBonds = null; +this.releaseModelSetAC(); +}); +Clazz_defineMethod(c$, "getBondIteratorForType", +function(bondType, bsAtoms){ +return new JM.BondIteratorSelected(this.bo, this.bondCount, bondType, bsAtoms, this.vwr.getBoolean(603979812)); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getBondIterator", +function(bsBonds){ +return new JM.BondIteratorSelected(this.bo, this.bondCount, 131071, bsBonds, false); +}, "JU.BS"); +Clazz_defineMethod(c$, "getBondColix1", +function(i){ +return JU.C.getColixInherited(this.bo[i].colix, this.bo[i].atom1.colixAtom); +}, "~N"); +Clazz_defineMethod(c$, "getBondColix2", +function(i){ +return JU.C.getColixInherited(this.bo[i].colix, this.bo[i].atom2.colixAtom); +}, "~N"); +Clazz_defineMethod(c$, "getBondCountInModel", +function(modelIndex){ +var n = 0; +for (var i = this.bondCount; --i >= 0; ) if (this.bo[i].atom1.mi == modelIndex) n++; + +return n; +}, "~N"); +Clazz_defineMethod(c$, "getBondsForSelectedAtoms", +function(bsAtoms, bondSelectionModeOr){ +var bs = new JU.BS(); +var n = bsAtoms.cardinality(); +switch (n) { +case 0: +return bs; +case 1: +case 2: +var a = this.at[bsAtoms.nextSetBit(0)]; +var b = (n == 2 ? this.at[bsAtoms.nextSetBit(a.i + 1)] : null); +if (n == 1 || bondSelectionModeOr) { +for (var i = a.getBondCount(); --i >= 0; ) bs.set(a.bonds[i].index); + +if (b != null) for (var i = b.getBondCount(); --i >= 0; ) bs.set(b.bonds[i].index); + +} else { +var bond = a.getBond(b); +if (b != null) bs.set(bond.index); +}return bs; +} +for (var iBond = 0; iBond < this.bondCount; ++iBond) { +var bond = this.bo[iBond]; +var isSelected1 = bsAtoms.get(bond.atom1.i); +var isSelected2 = bsAtoms.get(bond.atom2.i); +if (bondSelectionModeOr ? isSelected1 || isSelected2 : isSelected1 && isSelected2) bs.set(iBond); +} +return bs; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "bondAtoms", +function(atom1, atom2, order, mad, bsBonds, energy, addGroup, isNew){ +var bond = this.getOrAddBond(atom1, atom2, order, mad, bsBonds, energy, true); +if (isNew) { +bond.order |= 131072; +if (addGroup) { +atom1.group = atom2.group; +atom1.group.addAtoms(atom1.i); +}}return bond; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS,~N,~B,~B"); +Clazz_defineMethod(c$, "getOrAddBond", +function(atom, atomOther, order, mad, bsBonds, energy, overrideBonding){ +var i; +if (order == 131071 || order == 65535) order = 1; +if (atom.isBonded(atomOther)) { +i = atom.getBond(atomOther).index; +if (overrideBonding) { +this.bo[i].setOrder(order); +this.bo[i].setMad(mad); +if (Clazz_instanceOf(this.bo[i],"JM.HBond")) (this.bo[i]).energy = energy; +}} else { +if (this.bondCount == this.bo.length) this.bo = JU.AU.arrayCopyObject(this.bo, this.bondCount + 250); +i = this.setBond(this.bondCount++, this.bondMutually(atom, atomOther, order, mad, energy)).index; +}if (bsBonds != null) bsBonds.set(i); +return this.bo[i]; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS,~N,~B"); +Clazz_defineMethod(c$, "setBond", +function(index, bond){ +return this.bo[bond.index = index] = bond; +}, "~N,JM.Bond"); +Clazz_defineMethod(c$, "bondMutually", +function(atom, atomOther, order, mad, energy){ +var bond; +if (JU.Edge.isOrderH(order)) { +bond = new JM.HBond(atom, atomOther, order, mad, 0, energy); +} else { +bond = new JM.Bond(atom, atomOther, order, mad, 0); +}this.addBondToAtom(atom, bond); +this.addBondToAtom(atomOther, bond); +return bond; +}, "JM.Atom,JM.Atom,~N,~N,~N"); +Clazz_defineMethod(c$, "addBondToAtom", +function(atom, bond){ +if (atom.bonds == null) { +atom.bonds = new Array(1); +atom.bonds[0] = bond; +} else { +atom.bonds = this.addToBonds(bond, atom.bonds); +}}, "JM.Atom,JM.Bond"); +Clazz_defineMethod(c$, "addToBonds", +function(newBond, oldBonds){ +var newBonds; +if (oldBonds == null) { +if (this.numCached[1] > 0) newBonds = this.freeBonds[1][--this.numCached[1]]; + else newBonds = new Array(1); +newBonds[0] = newBond; +} else { +var oldLength = oldBonds.length; +var newLength = oldLength + 1; +if (newLength < 5 && this.numCached[newLength] > 0) newBonds = this.freeBonds[newLength][--this.numCached[newLength]]; + else newBonds = new Array(newLength); +newBonds[oldLength] = newBond; +for (var i = oldLength; --i >= 0; ) newBonds[i] = oldBonds[i]; + +if (oldLength < 5 && this.numCached[oldLength] < 200) this.freeBonds[oldLength][this.numCached[oldLength]++] = oldBonds; +}return newBonds; +}, "JM.Bond,~A"); +Clazz_defineMethod(c$, "addHBond", +function(atom1, atom2, order, energy){ +if (this.bondCount == this.bo.length) this.bo = JU.AU.arrayCopyObject(this.bo, this.bondCount + 250); +return this.setBond(this.bondCount++, this.bondMutually(atom1, atom2, order, 1, energy)).index; +}, "JM.Atom,JM.Atom,~N,~N"); +Clazz_defineMethod(c$, "deleteAllBonds2", +function(){ +this.vwr.setShapeProperty(1, "reset", null); +for (var i = this.bondCount; --i >= 0; ) { +this.bo[i].deleteAtomReferences(); +this.bo[i] = null; +} +this.bondCount = 0; +}); +Clazz_defineMethod(c$, "getDefaultMadFromOrder", +function(order){ +return (JU.Edge.isOrderH(order) ? 1 : order == 32768 ? Clazz_doubleToInt(Math.floor(this.vwr.getFloat(570425406) * 2000)) : this.defaultCovalentMad); +}, "~N"); +Clazz_defineMethod(c$, "deleteConnections", +function(minD, maxD, order, bsA, bsB, isBonds, matchNull){ +var minDIsFraction = (minD < 0); +var maxDIsFraction = (maxD < 0); +var isFractional = (minDIsFraction || maxDIsFraction); +minD = this.fixD(minD, minDIsFraction); +maxD = this.fixD(maxD, maxDIsFraction); +var bsDelete = new JU.BS(); +var nDeleted = 0; +var newOrder = order |= 131072; +if (!matchNull && JU.Edge.isOrderH(order)) order = 30720; +var bsBonds; +if (isBonds) { +bsBonds = bsA; +} else { +bsBonds = new JU.BS(); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var a = this.at[i]; +if (a.bonds != null) for (var j = a.bonds.length; --j >= 0; ) if (bsB.get(a.getBondedAtomIndex(j))) bsBonds.set(a.bonds[j].index); + +} +}for (var i = bsBonds.nextSetBit(0); i < this.bondCount && i >= 0; i = bsBonds.nextSetBit(i + 1)) { +var bond = this.bo[i]; +if (!this.isInRange(bond.atom1, bond.atom2, minD, maxD, minDIsFraction, maxDIsFraction, isFractional)) continue; +if (matchNull || newOrder == (bond.order & -257 | 131072) || (order & bond.order & 30720) != 0) { +bsDelete.set(i); +nDeleted++; +}} +if (nDeleted > 0) (this).deleteBonds(bsDelete, false); +return Clazz_newIntArray(-1, [0, nDeleted]); +}, "~N,~N,~N,JU.BS,JU.BS,~B,~B"); +Clazz_defineMethod(c$, "fixD", +function(d, isF){ +return (isF ? -d : d * d); +}, "~N,~B"); +Clazz_defineMethod(c$, "isInRange", +function(atom1, atom2, minD, maxD, minFrac, maxfrac, isFractional){ +var d2 = atom1.distanceSquared(atom2); +if (isFractional) { +var dAB = Math.sqrt(d2); +var dABcalc = atom1.getBondingRadius() + atom2.getBondingRadius(); +return ((minFrac ? dAB >= dABcalc * minD : d2 >= minD) && (maxfrac ? dAB <= dABcalc * maxD : d2 <= maxD)); +}return (d2 >= minD && d2 <= maxD); +}, "JM.Atom,JM.Atom,~N,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "dBb", +function(bsBond, isFullModel){ +var iDst = bsBond.nextSetBit(0); +if (iDst < 0) return; +(this).resetMolecules(); +var modelIndexLast = -1; +var n = bsBond.cardinality(); +for (var iSrc = iDst; iSrc < this.bondCount; ++iSrc) { +var bond = this.bo[iSrc]; +if (n > 0 && bsBond.get(iSrc)) { +n--; +if (!isFullModel) { +var modelIndex = bond.atom1.mi; +if (modelIndex != modelIndexLast) (this).am[modelIndexLast = modelIndex].resetBoundCount(); +}bond.deleteAtomReferences(); +} else { +this.setBond(iDst++, bond); +}} +for (var i = this.bondCount; --i >= iDst; ) this.bo[i] = null; + +this.bondCount = iDst; +var sets = this.vwr.getShapeProperty(1, "sets"); +if (sets != null) for (var i = 0; i < sets.length; i++) JU.BSUtil.deleteBits(sets[i], bsBond); + +JU.BSUtil.deleteBits(this.bsAromatic, bsBond); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "resetAromatic", +function(){ +for (var i = this.bondCount; --i >= 0; ) { +var bond = this.bo[i]; +if (bond.isAromatic()) bond.setOrder(515); +} +}); +Clazz_defineMethod(c$, "assignAromaticBondsBs", +function(isUserCalculation, bsBonds){ +if (!isUserCalculation) this.bsAromatic = new JU.BS(); +this.bsAromaticSingle = new JU.BS(); +this.bsAromaticDouble = new JU.BS(); +var isAll = (bsBonds == null); +var i0 = (isAll ? this.bondCount - 1 : bsBonds.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +var bond = this.bo[i]; +if (this.bsAromatic.get(i)) bond.setOrder(515); +switch (bond.order & 131071) { +case 515: +if (!this.assignAromaticMustBeSingle(bond.atom1) && !this.assignAromaticMustBeSingle(bond.atom2)) { +this.bsAromatic.set(i); +break; +}bond.order = 513; +case 513: +this.bsAromaticSingle.set(i); +break; +case 514: +this.bsAromaticDouble.set(i); +break; +} +} +var bond; +isAll = (bsBonds == null); +i0 = (isAll ? this.bondCount - 1 : bsBonds.nextSetBit(0)); +var bsTest = new JU.BS(); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (!bond.is(515) || this.bsAromaticDouble.get(i) || this.bsAromaticSingle.get(i)) continue; +bsTest.set(i); +if (bond.atom1.getElementNumber() == 8 || bond.atom2.getElementNumber() == 8) { +if (!this.assignAromaticDouble(bond)) this.assignAromaticSingle(bond); +}} +for (var i = bsTest.nextSetBit(0); i >= 0; i = bsTest.nextSetBit(i + 1)) if (!this.assignAromaticDouble(bond = this.bo[i])) this.assignAromaticSingle(bond); + +var bsModels = new JU.BS(); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (this.bsAromaticDouble.get(i)) { +if (!bond.is(514)) { +this.bsAromatic.set(i); +bsModels.set(bond.atom1.mi); +bond.setOrder(this.isLinear(bond, this.v1, this.v2) ? 3 : 514); +}} else if (this.bsAromaticSingle.get(i) || bond.isAromatic()) { +if (!bond.is(513)) { +this.bsAromatic.set(i); +bond.setOrder(513); +}}} +var models = (this).am; +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (models[i].isBioModel) models[i].isPdbWithMultipleBonds = true; + +this.assignAromaticNandO(bsBonds); +this.bsAromaticSingle = null; +this.bsAromaticDouble = null; +}, "~B,JU.BS"); +Clazz_defineMethod(c$, "isLinear", +function(b, v1, v2){ +if (b.order == 3) return true; +if (b.atom1.getCovalentBondCount() != 2 || b.atom2.getCovalentBondCount() != 2) return false; +var edges = b.atom1.getEdges(); +for (var i = edges.length; -i >= 0; ) { +if (edges[i] !== b && edges[i].isCovalent()) { +if (JU.Measure.computeAngle(edges[i].getOtherNode(b.atom1), b.atom1, b.atom2, v1, v2, true) < 175) return false; +break; +}} +edges = b.atom2.getEdges(); +for (var i = edges.length; -i >= 0; ) { +if (edges[i] !== b && edges[i].isCovalent()) { +if (JU.Measure.computeAngle(edges[i].getOtherNode(b.atom2), b.atom2, b.atom1, v1, v2, true) < 175) return false; +break; +}} +return true; +}, "JM.Bond,JU.V3,JU.V3"); +Clazz_defineMethod(c$, "assignAromaticDouble", +function(bond){ +var bondIndex = bond.index; +if (this.bsAromaticSingle.get(bondIndex)) return false; +if (this.bsAromaticDouble.get(bondIndex)) return true; +this.bsAromaticDouble.set(bondIndex); +if (!this.assignAromaticSingleForAtom(bond.atom1, bondIndex) || !this.assignAromaticSingleForAtom(bond.atom2, bondIndex)) { +this.bsAromaticDouble.clear(bondIndex); +return false; +}return true; +}, "JM.Bond"); +Clazz_defineMethod(c$, "assignAromaticSingle", +function(bond){ +var bondIndex = bond.index; +if (this.bsAromaticDouble.get(bondIndex)) return false; +if (this.bsAromaticSingle.get(bondIndex)) return true; +this.bsAromaticSingle.set(bondIndex); +if (!this.assignAromaticDoubleForAtom(bond.atom1) || !this.assignAromaticDoubleForAtom(bond.atom2)) { +this.bsAromaticSingle.clear(bondIndex); +return false; +}return true; +}, "JM.Bond"); +Clazz_defineMethod(c$, "assignAromaticSingleForAtom", +function(atom, notBondIndex){ +var bonds = atom.bonds; +if (bonds == null) return false; +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +var bondIndex = bond.index; +if (bondIndex == notBondIndex || !bond.isAromatic() || this.bsAromaticSingle.get(bondIndex)) continue; +if (this.bsAromaticDouble.get(bondIndex) || !this.assignAromaticSingle(bond)) { +return false; +}} +return true; +}, "JM.Atom,~N"); +Clazz_defineMethod(c$, "assignAromaticDoubleForAtom", +function(atom){ +var bonds = atom.bonds; +if (bonds == null) return false; +var haveDouble = false; +var lastBond = -1; +for (var i = bonds.length; --i >= 0; ) { +if (this.bsAromaticDouble.get(bonds[i].index)) haveDouble = true; +if (bonds[i].isAromatic()) lastBond = i; +} +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +var bondIndex = bond.index; +if (!bond.isAromatic() || this.bsAromaticDouble.get(bondIndex) || this.bsAromaticSingle.get(bondIndex)) continue; +if (!haveDouble && this.assignAromaticDouble(bond)) haveDouble = true; + else if ((haveDouble || i < lastBond) && !this.assignAromaticSingle(bond)) { +return false; +}} +return haveDouble; +}, "JM.Atom"); +Clazz_defineMethod(c$, "allowAromaticBond", +function(b){ +if (this.assignAromaticMustBeSingle(b.atom1) || this.assignAromaticMustBeSingle(b.atom2)) return false; +switch (b.getCovalentOrder()) { +case 1: +case 2: +return b.atom1.getCovalentBondCount() <= 3 && b.atom2.getCovalentBondCount() <= 3; +default: +return false; +} +}, "JM.Bond"); +Clazz_defineMethod(c$, "assignAromaticMustBeSingle", +function(atom){ +var n = atom.getElementNumber(); +switch (n) { +case 6: +case 7: +case 8: +case 16: +break; +default: +return true; +} +var valence = atom.getValenceAromatic(false); +switch (n) { +case 6: +return (valence == 4); +case 7: +return (atom.group.getNitrogenAtom() === atom || valence == 3 && atom.getFormalCharge() < 1); +case 8: +return (atom.group.getCarbonylOxygenAtom() !== atom && valence == 2 && atom.getFormalCharge() < 1); +case 16: +return (atom.group.groupID == 5 || valence == 2 && atom.getFormalCharge() < 1); +} +return false; +}, "JM.Atom"); +Clazz_defineMethod(c$, "assignAromaticNandO", +function(bsSelected){ +var bond; +var isAll = (bsSelected == null); +var i0 = (isAll ? this.bondCount - 1 : bsSelected.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (!bond.is(513)) continue; +var atom1; +var atom2 = bond.atom2; +var n1; +var n2 = atom2.getElementNumber(); +if (n2 == 7 || n2 == 8) { +n1 = n2; +atom1 = atom2; +atom2 = bond.atom1; +n2 = atom2.getElementNumber(); +} else { +atom1 = bond.atom1; +n1 = atom1.getElementNumber(); +}if (n1 != 7 && n1 != 8) continue; +var valence = atom1.getValence(); +if (valence < 0) continue; +var bondorder = atom1.getCovalentBondCount(); +var charge = atom1.getFormalCharge(); +switch (n1) { +case 7: +if (valence == 3 && bondorder == 3 && charge < 1 && n2 == 6 && atom2.getValence() == 3) bond.setOrder(514); +break; +case 8: +if (valence == 1 && charge == 0 && (n2 == 14 || n2 == 16)) bond.setOrder(514); +break; +} +} +}, "JU.BS"); +Clazz_defineMethod(c$, "getAtomBitsMDb", +function(tokType, specInfo){ +var bs = new JU.BS(); +switch (tokType) { +default: +return this.getAtomBitsMDa(tokType, specInfo, bs); +case 1677721602: +var bsBonds = specInfo; +for (var i = bsBonds.nextSetBit(0); i >= 0; i = bsBonds.nextSetBit(i + 1)) { +if (i < this.bondCount) { +bs.set(this.bo[i].atom1.i); +bs.set(this.bo[i].atom2.i); +} else { +bsBonds.clear(i); +}} +return bs; +case 1073742331: +for (var i = this.bondCount; --i >= 0; ) if (this.bo[i].isAromatic()) { +bs.set(this.bo[i].atom1.i); +bs.set(this.bo[i].atom2.i); +} +return bs; +} +}, "~N,~O"); +Clazz_defineMethod(c$, "removeUnnecessaryBonds", +function(atom, deleteAtom){ +var bs = new JU.BS(); +var bsBonds = new JU.BS(); +var bonds = atom.bonds; +if (bonds == null) return; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalent()) { +var atom2 = bonds[i].getOtherAtom(atom); +if (atom2.getElementNumber() == 1) bs.set(bonds[i].getOtherAtom(atom).i); +} else { +bsBonds.set(bonds[i].index); +} +if (bsBonds.nextSetBit(0) >= 0) (this).deleteBonds(bsBonds, false); +if (deleteAtom) bs.set(atom.i); +if (bs.nextSetBit(0) >= 0) this.vwr.deleteAtoms(bs, false); +}, "JM.Atom,~B"); +Clazz_defineMethod(c$, "displayBonds", +function(bs, isDisplay){ +if (!isDisplay) this.haveHiddenBonds = true; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (i < this.bondCount && this.bo[i].mad != 0) this.bo[i].setShapeVisibility(isDisplay); + +}, "JM.BondSet,~B"); +Clazz_defineMethod(c$, "getAtomsConnected", +function(min, max, intType, bs){ +var isBonds = Clazz_instanceOf(bs,"JM.BondSet"); +var bsResult = (isBonds ? new JM.BondSet() : new JU.BS()); +var nBonded = Clazz_newIntArray (this.ac, 0); +var i; +var ishbond = (intType == 30720); +var isall = (intType == 65535); +for (var ibond = 0; ibond < this.bondCount; ibond++) { +var bond = this.bo[ibond]; +if (isall || bond.is(intType) || ishbond && bond.isHydrogen()) { +if (isBonds) { +bsResult.set(ibond); +} else { +if (bs.get(bond.atom1.i)) { +nBonded[i = bond.atom2.i]++; +bsResult.set(i); +}if (bs.get(bond.atom2.i)) { +nBonded[i = bond.atom1.i]++; +bsResult.set(i); +}}}} +if (isBonds) return bsResult; +var nonbonded = (min == 0); +for (i = this.ac; --i >= 0; ) { +var n = nBonded[i]; +if (this.at[i] == null || n < min || n > max) bsResult.clear(i); + else if (nonbonded && n == 0) bsResult.set(i); +} +return bsResult; +}, "~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "addConnectedHAtoms", +function(atom, bsAtoms){ +if (atom.bonds != null) for (var i = atom.bonds.length; --i >= 0; ) { +var atom2 = atom.bonds[i].getOtherAtom(atom); +if (atom2.getElementNumber() == 1) bsAtoms.set(atom2.i); +} +}, "JM.Atom,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_declareInterface(JM, "BondIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.BondIterator"], "JM.BondIteratorSelected", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bonds = null; +this.bondCount = 0; +this.bondType = 0; +this.iBond = 0; +this.bsSelected = null; +this.bondSelectionModeOr = false; +Clazz_instantialize(this, arguments);}, JM, "BondIteratorSelected", null, JM.BondIterator); +Clazz_makeConstructor(c$, +function(bonds, bondCount, bondType, bsSelected, bondSelectionModeOr){ +this.bonds = bonds; +this.bondCount = bondCount; +this.bondType = bondType; +this.bsSelected = bsSelected; +this.bondSelectionModeOr = bondSelectionModeOr; +}, "~A,~N,~N,JU.BS,~B"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.bondType == 131071) { +this.iBond = this.bsSelected.nextSetBit(this.iBond); +return (this.iBond >= 0 && this.iBond < this.bondCount); +}for (; this.iBond < this.bondCount; ++this.iBond) { +var bond = this.bonds[this.iBond]; +if (this.bondType != 65535 && (bond.order & this.bondType) == 0) { +continue; +} else if (this.bondType == 65535 && bond.order == 32768) continue; +var isSelected1 = this.bsSelected.get(bond.atom1.i); +var isSelected2 = this.bsSelected.get(bond.atom2.i); +if ((!this.bondSelectionModeOr && isSelected1 && isSelected2) || (this.bondSelectionModeOr && (isSelected1 || isSelected2))) return true; +} +return false; +}); +Clazz_overrideMethod(c$, "nextIndex", +function(){ +return this.iBond; +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.bonds[this.iBond++]; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.BS"], "JM.BondSet", ["JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.associatedAtoms = null; +Clazz_instantialize(this, arguments);}, JM, "BondSet", JU.BS); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JM.BondSet, []); +}); +c$.newBS = Clazz_defineMethod(c$, "newBS", +function(bs){ +var b = new JM.BondSet(); +JU.BSUtil.copy2(bs, b); +return b; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAssociatedAtoms", +function(ms){ +if (this.associatedAtoms == null) this.associatedAtoms = ms.getAtomIndices(ms.getAtoms(1677721602, this)); +return this.associatedAtoms; +}, "JM.ModelSet"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Structure"], "JM.Chain", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.model = null; +this.chainID = 0; +this.chainNo = 0; +this.groups = null; +this.groupCount = 0; +this.selectedGroupCount = 0; +Clazz_instantialize(this, arguments);}, JM, "Chain", null, JM.Structure); +Clazz_makeConstructor(c$, +function(model, chainID, chainNo){ +this.model = model; +this.chainID = chainID; +this.chainNo = chainNo; +this.groups = new Array(16); +}, "JM.Model,~N,~N"); +Clazz_defineMethod(c$, "getIDStr", +function(){ +return (this.chainID == 0 ? "" : this.chainID < 256 ? "" + String.fromCharCode(this.chainID) : this.model.ms.vwr.getChainIDStr(this.chainID)); +}); +Clazz_defineMethod(c$, "calcSelectedGroupsCount", +function(bsSelected){ +this.selectedGroupCount = 0; +for (var i = 0; i < this.groupCount; i++) this.groups[i].selectedIndex = (this.groups[i].isSelected(bsSelected) ? this.selectedGroupCount++ : -1); + +}, "JU.BS"); +Clazz_defineMethod(c$, "fixIndices", +function(atomsDeleted, bsDeleted){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].fixIndices(atomsDeleted, bsDeleted); + +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setAtomBits", +function(bs){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].setAtomBits(bs); + +}, "JU.BS"); +Clazz_overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].setAtomBitsAndClear(bs, bsOut); + +}, "JU.BS,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Structure", "java.lang.Short", "JV.JC"], "JM.Group", ["java.util.Hashtable", "JU.BS", "$.Quat", "J.c.STR", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.chain = null; +this.groupIndex = 0; +this.group1 = '\0'; +this.firstAtomIndex = -1; +this.leadAtomIndex = -1; +this.lastAtomIndex = 0; +this.bsAdded = null; +this.seqcode = 0; +this.groupID = 0; +this.selectedIndex = 0; +this.shapeVisibilityFlags = 0; +this.dssrNT = null; +Clazz_instantialize(this, arguments);}, JM, "Group", null, JM.Structure); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "setGroup", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex){ +this.chain = chain; +this.seqcode = seqcode; +this.firstAtomIndex = firstAtomIndex; +this.lastAtomIndex = lastAtomIndex; +if (group3 != null && group3.length > 0) this.setGroupID(group3); +return this; +}, "JM.Chain,~S,~N,~N,~N"); +Clazz_defineMethod(c$, "setGroupID", +function(group3){ +}, "~S"); +Clazz_defineMethod(c$, "isAdded", +function(atomIndex){ +return this.bsAdded != null && this.bsAdded.get(atomIndex); +}, "~N"); +Clazz_defineMethod(c$, "addAtoms", +function(atomIndex){ +if (this.bsAdded == null) this.bsAdded = new JU.BS(); +this.bsAdded.set(atomIndex); +}, "~N"); +Clazz_overrideMethod(c$, "setAtomBits", +function(bs){ +bs.setBits(this.firstAtomIndex, this.lastAtomIndex + 1); +if (this.bsAdded != null) bs.or(this.bsAdded); +}, "JU.BS"); +Clazz_overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +bs.setBits(this.firstAtomIndex, this.lastAtomIndex + 1); +bsOut.clearBits(this.firstAtomIndex, this.lastAtomIndex + 1); +if (this.bsAdded != null) { +bs.or(this.bsAdded); +bsOut.andNot(this.bsAdded); +}}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "isSelected", +function(bs){ +var pt = bs.nextSetBit(this.firstAtomIndex); +return (pt >= 0 && pt <= this.lastAtomIndex || this.bsAdded != null && this.bsAdded.intersects(bs)); +}, "JU.BS"); +Clazz_defineMethod(c$, "setShapeVisibility", +function(visFlag, isVisible){ +if (isVisible) { +this.shapeVisibilityFlags |= visFlag; +} else { +this.shapeVisibilityFlags &= ~visFlag; +}}, "~N,~B"); +Clazz_defineMethod(c$, "getGroup3", +function(){ +return (this.groupID < 1 ? "" : JM.Group.group3Names[this.groupID]); +}); +Clazz_defineMethod(c$, "getGroup1", +function(){ +return (this.group1 == '\0' ? '?' : this.group1); +}); +Clazz_defineMethod(c$, "getBioPolymerLength", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "getMonomerIndex", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "getStructure", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getStrucNo", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.NOT; +}); +Clazz_defineMethod(c$, "getProteinStructureSubType", +function(){ +return this.getProteinStructureType(); +}); +Clazz_defineMethod(c$, "setProteinStructureType", +function(type, monomerIndexCurrent){ +return -1; +}, "J.c.STR,~N"); +Clazz_defineMethod(c$, "isProtein", +function(){ +return (this.groupID >= 1 && this.groupID < 24); +}); +Clazz_defineMethod(c$, "isNucleic", +function(){ +return (this.groupID >= 24 && this.groupID < 42); +}); +Clazz_defineMethod(c$, "isDna", +function(){ +return this.isDnaByID(); +}); +Clazz_defineMethod(c$, "isRna", +function(){ +return this.isRnaByID(); +}); +Clazz_defineMethod(c$, "isPurine", +function(){ +return this.isPurineByID(); +}); +Clazz_defineMethod(c$, "isPurineByID", +function(){ +return (this.isNucleic() && ((153957 & (1 << (this.groupID - 24))) != 0) || "AGag".indexOf(this.getGroup1()) >= 0); +}); +Clazz_defineMethod(c$, "isPyrimidine", +function(){ +return this.isPyrimidineByID(); +}); +Clazz_defineMethod(c$, "isPyrimidineByID", +function(){ +return (this.isNucleic() && (108186 & (1 << (this.groupID - 24))) != 0); +}); +Clazz_defineMethod(c$, "isRnaByID", +function(){ +return (this.isNucleic() && (196663 & (1 << (this.groupID - 24))) != 0); +}); +Clazz_defineMethod(c$, "isDnaByID", +function(){ +return (this.isNucleic() && (65480 & (1 << (this.groupID - 24))) != 0); +}); +Clazz_defineMethod(c$, "isCarbohydrate", +function(){ +return false; +}); +Clazz_defineMethod(c$, "getResno", +function(){ +return (this.seqcode == -2147483648 ? 0 : this.seqcode >> 8); +}); +Clazz_defineMethod(c$, "setResno", +function(i){ +this.seqcode = JM.Group.getSeqcodeFor(i, this.getInsertionCode()); +}, "~N"); +c$.getSeqNumberFor = Clazz_defineMethod(c$, "getSeqNumberFor", +function(seqcode){ +return (JM.Group.haveSequenceNumber(seqcode) ? seqcode >> 8 : 2147483647); +}, "~N"); +c$.haveSequenceNumber = Clazz_defineMethod(c$, "haveSequenceNumber", +function(seqcode){ +return ((seqcode & 128) != 0); +}, "~N"); +Clazz_defineMethod(c$, "getSeqcodeString", +function(){ +return JM.Group.getSeqcodeStringFor(this.seqcode); +}); +c$.getSeqcodeFor = Clazz_defineMethod(c$, "getSeqcodeFor", +function(seqNo, insCode){ +if (seqNo == -2147483648) return seqNo; +if (!((insCode >= 'A' && insCode <= 'Z') || (insCode >= 'a' && insCode <= 'z') || (insCode >= '0' && insCode <= '9') || insCode == '?' || insCode == '*')) { +if (insCode != ' ' && insCode != '\0') JU.Logger.warn("unrecognized insertionCode:" + insCode); +insCode = '\0'; +}return ((seqNo == 2147483647 ? 0 : (seqNo << 8) | 128)) + insCode.charCodeAt(0); +}, "~N,~S"); +c$.getSeqcodeStringFor = Clazz_defineMethod(c$, "getSeqcodeStringFor", +function(seqcode){ +if (seqcode == -2147483648) return null; +var s = "" + (seqcode >> 8); +if ((seqcode & 127) != 0) s += "^" + String.fromCharCode(seqcode & 127); +return s; +}, "~N"); +Clazz_defineMethod(c$, "getInsertionCode", +function(){ +return (this.seqcode == -2147483648 ? '\0' : String.fromCharCode(this.seqcode & 127)); +}); +Clazz_defineMethod(c$, "getInsCode", +function(){ +return (this.seqcode & 127); +}); +c$.getInsertionCodeFor = Clazz_defineMethod(c$, "getInsertionCodeFor", +function(seqcode){ +return (seqcode & 127); +}, "~N"); +c$.getInsertionCodeChar = Clazz_defineMethod(c$, "getInsertionCodeChar", +function(seqcode){ +return (seqcode == -2147483648 ? '\0' : String.fromCharCode(seqcode & 127)); +}, "~N"); +Clazz_defineMethod(c$, "scaleToScreen", +function(Z, mar){ +return this.chain.model.ms.vwr.tm.scaleToScreen(Z, mar); +}, "~N,~N"); +Clazz_defineMethod(c$, "isCursorOnTopOf", +function(atom, x, y, radius, champ){ +return this.chain.model.ms.isCursorOnTopOf(atom, x, y, radius, champ); +}, "JM.Atom,~N,~N,~N,JM.Atom"); +Clazz_defineMethod(c$, "getModel", +function(){ +return this.chain.model; +}); +Clazz_defineMethod(c$, "getSelectedMonomerCount", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "getSelectedMonomerIndex", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "isLeadAtom", +function(atomIndex){ +return false; +}, "~N"); +Clazz_defineMethod(c$, "getLeadAtomOr", +function(atom){ +var a = this.getLeadAtom(); +return (a == null ? atom : a); +}, "JM.Atom"); +Clazz_defineMethod(c$, "getLeadAtom", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getQuaternion", +function(qType){ +return null; +}, "~S"); +Clazz_defineMethod(c$, "getQuaternionFrame", +function(atoms){ +if (this.lastAtomIndex - this.firstAtomIndex < 3) return null; +var pt = this.firstAtomIndex; +return JU.Quat.getQuaternionFrame(atoms[pt], atoms[++pt], atoms[++pt]); +}, "~A"); +Clazz_defineMethod(c$, "setStrucNo", +function(i){ +}, "~N"); +Clazz_defineMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return JU.Escape.escapeHelical(null, tokType, null, null, null); +}, "~N,~S,~N"); +Clazz_defineMethod(c$, "isWithinStructure", +function(type){ +return false; +}, "J.c.STR"); +Clazz_defineMethod(c$, "getProteinStructureTag", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getStructureId", +function(){ +return ""; +}); +Clazz_defineMethod(c$, "getBioPolymerIndexInModel", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "isCrossLinked", +function(g){ +return false; +}, "JM.Group"); +Clazz_defineMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +return false; +}, "JU.Lst,~B,~B"); +Clazz_defineMethod(c$, "getNitrogenAtom", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getCarbonylOxygenAtom", +function(){ +return null; +}); +Clazz_defineMethod(c$, "fixIndices", +function(atomsDeleted, bsDeleted){ +this.firstAtomIndex -= atomsDeleted; +this.leadAtomIndex -= atomsDeleted; +this.lastAtomIndex -= atomsDeleted; +if (this.bsAdded != null) JU.BSUtil.deleteBits(this.bsAdded, bsDeleted); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getGroupInfo", +function(igroup, ptTemp){ +var infoGroup = new java.util.Hashtable(); +infoGroup.put("groupIndex", Integer.$valueOf(igroup)); +infoGroup.put("groupID", Short.$valueOf(this.groupID)); +var s = this.getSeqcodeString(); +if (s != null) infoGroup.put("seqCode", s); +infoGroup.put("_apt1", Integer.$valueOf(this.firstAtomIndex)); +infoGroup.put("_apt2", Integer.$valueOf(this.lastAtomIndex)); +if (this.bsAdded != null) infoGroup.put("addedAtoms", this.bsAdded); +infoGroup.put("atomInfo1", this.chain.model.ms.getAtomInfo(this.firstAtomIndex, null, ptTemp)); +infoGroup.put("atomInfo2", this.chain.model.ms.getAtomInfo(this.lastAtomIndex, null, ptTemp)); +infoGroup.put("visibilityFlags", Integer.$valueOf(this.shapeVisibilityFlags)); +return infoGroup; +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "getMinZ", +function(atoms, minZ){ +minZ[0] = 2147483647; +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) this.checkMinZ(atoms[i], minZ); + +if (this.bsAdded != null) for (var i = this.bsAdded.nextSetBit(0); i >= 0; i = this.bsAdded.nextSetBit(i + 1)) this.checkMinZ(atoms[i], minZ); + +}, "~A,~A"); +Clazz_defineMethod(c$, "checkMinZ", +function(atom, minZ){ +var z = atom.sZ - Clazz_doubleToInt(atom.sD / 2) - 2; +if (z < minZ[0]) minZ[0] = Math.max(1, z); +}, "JM.Atom,~A"); +Clazz_defineMethod(c$, "getGroupParameter", +function(tok){ +return NaN; +}, "~N"); +Clazz_defineMethod(c$, "getAtomIndex", +function(name, offset){ +return -1; +}, "~S,~N"); +Clazz_defineMethod(c$, "getBSSideChain", +function(){ +return new JU.BS(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getGroup3() + "-" + this.getSeqcodeString() + "]"; +}); +Clazz_defineMethod(c$, "isNucleicMonomer", +function(){ +return false; +}); +c$.standardGroupList = null; +c$.group3Names = new Array(128); +c$.specialAtomNames = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Bond"], "JM.HBond", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.energy = 0; +Clazz_instantialize(this, arguments);}, JM, "HBond", JM.Bond); +Clazz_makeConstructor(c$, +function(atom1, atom2, order, mad, colix, energy){ +Clazz_superConstructor(this, JM.HBond, [atom1, atom2, order, mad, colix]); +this.energy = energy; +if (JU.Logger.debugging) JU.Logger.debug("HBond energy = " + energy + " #" + this.getIdentity()); +}, "JM.Atom,JM.Atom,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "getEnergy", +function(){ +return this.energy; +}); +c$.calcEnergy = Clazz_defineMethod(c$, "calcEnergy", +function(distAH, distCH, distCD, distAD){ +var energy = Math.round(-27888.0 / distAH - -27888.0 / distAD + -27888.0 / distCD - -27888.0 / distCH); +return energy; +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.LabelToken", ["java.util.Hashtable", "JU.AU", "$.PT", "$.SB", "JS.SV", "$.T", "JU.Edge", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.text = null; +this.key = null; +this.data = null; +this.tok = 0; +this.pt = -1; +this.ch1 = '\0'; +this.width = 0; +this.precision = 2147483647; +this.alignLeft = false; +this.zeroPad = false; +this.intAsFloat = false; +Clazz_instantialize(this, arguments);}, JM, "LabelToken", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(text, pt){ +this.text = text; +this.pt = pt; +return this; +}, "~S,~N"); +c$.isLabelPropertyTok = Clazz_defineMethod(c$, "isLabelPropertyTok", +function(tok){ +for (var i = JM.LabelToken.labelTokenIds.length; --i >= 0; ) if (JM.LabelToken.labelTokenIds[i] == tok) return true; + +return false; +}, "~N"); +c$.compile = Clazz_defineMethod(c$, "compile", +function(vwr, strFormat, chAtom, htValues){ +if (strFormat == null || strFormat.length == 0) return null; +if (strFormat.indexOf("%") < 0 || strFormat.length < 2) return Clazz_newArray(-1, [ new JM.LabelToken().set(strFormat, -1)]); +var n = 0; +var ich = -1; +var cch = strFormat.length; +while (++ich < cch && (ich = strFormat.indexOf('%', ich)) >= 0) n++; + +var tokens = new Array(n * 2 + 1); +var ichPercent; +var i = 0; +for (ich = 0; (ichPercent = strFormat.indexOf('%', ich)) >= 0; ) { +if (ich != ichPercent) tokens[i++] = new JM.LabelToken().set(strFormat.substring(ich, ichPercent), -1); +var lt = tokens[i++] = new JM.LabelToken().set(null, ichPercent); +vwr.autoCalculate(lt.tok, null); +ich = JM.LabelToken.setToken(vwr, strFormat, lt, cch, chAtom.charCodeAt(0), htValues); +} +if (ich < cch) tokens[i++] = new JM.LabelToken().set(strFormat.substring(ich), -1); +return tokens; +}, "JV.Viewer,~S,~S,java.util.Map"); +Clazz_defineMethod(c$, "formatLabel", +function(vwr, atom, strFormat, ptTemp){ +return (strFormat == null || strFormat.length == 0 ? null : JM.LabelToken.formatLabelAtomArray(vwr, atom, JM.LabelToken.compile(vwr, strFormat, '\0', null), '\0', null, ptTemp)); +}, "JV.Viewer,JM.Atom,~S,JU.P3"); +c$.formatLabelAtomArray = Clazz_defineMethod(c$, "formatLabelAtomArray", +function(vwr, atom, tokens, chAtom, indices, ptTemp){ +if (atom == null) return null; +var strLabel = (chAtom > '0' ? null : new JU.SB()); +if (tokens != null) for (var i = 0; i < tokens.length; i++) { +var t = tokens[i]; +if (t == null) break; +if (chAtom > '0' && t.ch1 != chAtom) continue; +if (t.tok <= 0 || t.key != null) { +if (strLabel != null) { +strLabel.append(t.text); +if (t.ch1 != '\0') strLabel.appendC(t.ch1); +}} else { +JM.LabelToken.appendAtomTokenValue(vwr, atom, t, strLabel, indices, ptTemp); +}} +return (strLabel == null ? null : strLabel.toString().intern()); +}, "JV.Viewer,JM.Atom,~A,~S,~A,JU.P3"); +c$.getBondLabelValues = Clazz_defineMethod(c$, "getBondLabelValues", +function(){ +var htValues = new java.util.Hashtable(); +htValues.put("#", ""); +htValues.put("ORDER", ""); +htValues.put("TYPE", ""); +htValues.put("LENGTH", Float.$valueOf(0)); +htValues.put("ENERGY", Float.$valueOf(0)); +return htValues; +}); +c$.formatLabelBond = Clazz_defineMethod(c$, "formatLabelBond", +function(vwr, bond, tokens, values, indices, ptTemp){ +values.put("#", "" + (bond.index + 1)); +values.put("ORDER", "" + JU.Edge.getBondOrderNumberFromOrder(bond.order)); +values.put("TYPE", JU.Edge.getBondOrderNameFromOrder(bond.order)); +values.put("LENGTH", Float.$valueOf(bond.atom1.distance(bond.atom2))); +values.put("ENERGY", Float.$valueOf(bond.getEnergy())); +JM.LabelToken.setValues(tokens, values); +JM.LabelToken.formatLabelAtomArray(vwr, bond.atom1, tokens, '1', indices, ptTemp); +JM.LabelToken.formatLabelAtomArray(vwr, bond.atom2, tokens, '2', indices, ptTemp); +return JM.LabelToken.getLabel(tokens); +}, "JV.Viewer,JM.Bond,~A,java.util.Map,~A,JU.P3"); +c$.formatLabelMeasure = Clazz_defineMethod(c$, "formatLabelMeasure", +function(vwr, m, label, value, units){ +var htValues = new java.util.Hashtable(); +htValues.put("#", "" + (m.index + 1)); +htValues.put("VALUE", Float.$valueOf(value)); +htValues.put("UNITS", units); +var tokens = JM.LabelToken.compile(vwr, label, '\1', htValues); +if (tokens == null) return ""; +JM.LabelToken.setValues(tokens, htValues); +var atoms = m.ms.at; +var indices = m.countPlusIndices; +for (var i = indices[0]; i >= 1; --i) if (indices[i] >= 0) JM.LabelToken.formatLabelAtomArray(vwr, atoms[indices[i]], tokens, String.fromCharCode(48 + i), null, null); + +label = JM.LabelToken.getLabel(tokens); +return (label == null ? "" : label); +}, "JV.Viewer,JM.Measurement,~S,~N,~S"); +c$.setValues = Clazz_defineMethod(c$, "setValues", +function(tokens, values){ +for (var i = 0; i < tokens.length; i++) { +var lt = tokens[i]; +if (lt == null) break; +if (lt.key == null) continue; +var value = values.get(lt.key); +lt.text = (Clazz_instanceOf(value, Float) ? lt.format((value).floatValue(), null, null) : lt.format(NaN, value, null)); +} +}, "~A,java.util.Map"); +c$.getLabel = Clazz_defineMethod(c$, "getLabel", +function(tokens){ +var sb = new JU.SB(); +for (var i = 0; i < tokens.length; i++) { +var lt = tokens[i]; +if (lt == null) break; +sb.append(lt.text); +} +return sb.toString(); +}, "~A"); +c$.setToken = Clazz_defineMethod(c$, "setToken", +function(vwr, strFormat, lt, cch, chAtom, htValues){ +var ich = lt.pt + 1; +if (ich >= cch) { +lt.text = "%"; +return ich; +}var ch; +if (strFormat.charAt(ich) == '-') { +lt.alignLeft = true; +++ich; +}if (ich < cch && strFormat.charAt(ich) == '0') { +lt.zeroPad = true; +++ich; +}while (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +lt.width = (10 * lt.width) + (ch.charCodeAt(0) - 48); +++ich; +} +lt.precision = 2147483647; +var isNegative = false; +if (ich < cch && strFormat.charAt(ich) == '.') { +++ich; +if (ich < cch && (ch = strFormat.charAt(ich)) == '-') { +isNegative = true; +++ich; +}if (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +++ich; +lt.precision = ch.charCodeAt(0) - 48; +if (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +++ich; +lt.precision = lt.precision * 10 + (ch.charCodeAt(0) - 48); +}if (isNegative) lt.precision = -1 - lt.precision; +}}if (ich < cch && htValues != null) for (var key, $key = htValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (strFormat.indexOf(key, ich) == ich) return ich + (lt.key = key).length; + +if (ich < cch) switch ((ch = strFormat.charAt(ich++)).charCodeAt(0)) { +case 37: +lt.text = "%"; +return ich; +case 91: +var ichClose = strFormat.indexOf(']', ich); +if (ichClose < ich) { +ich = cch; +break; +}var propertyName = strFormat.substring(ich, ichClose).toLowerCase(); +if (propertyName.startsWith("property_")) { +lt.tok = 134221834; +lt.data = vwr.getDataObj(propertyName, null, 1); +} else if (propertyName.startsWith("validation.")) { +lt.tok = 1073742189; +lt.data = vwr.getDataObj("property_" + propertyName.substring(11), null, 1); +} else if (propertyName.startsWith("unitid")) { +lt.tok = 1073741974; +lt.data = Integer.$valueOf(JV.JC.getUnitIDFlags(propertyName.substring(6))); +} else { +var token = JS.T.getTokenFromName(propertyName); +if (token != null && JM.LabelToken.isLabelPropertyTok(token.tok)) lt.tok = token.tok; +}ich = ichClose + 1; +break; +case 123: +var ichCloseBracket = strFormat.indexOf('}', ich); +if (ichCloseBracket < ich) { +ich = cch; +break; +}var s = strFormat.substring(ich, ichCloseBracket); +lt.data = vwr.getDataObj(s, null, 1); +if (lt.data == null) { +lt.data = vwr.getDataObj(s, null, -1); +if (lt.data != null) { +lt.data = (lt.data)[1]; +if ((typeof(lt.data)=='string')) lt.data = JU.PT.split(lt.data, "\n"); +if (!(JU.AU.isAS(lt.data))) lt.data = null; +}if (lt.data == null) { +lt.tok = 1715472409; +lt.data = s; +} else { +lt.tok = 1275068418; +}} else { +lt.tok = 134221834; +}ich = ichCloseBracket + 1; +break; +default: +var i; +var i1; +if (ich < cch && (i = "fuv".indexOf(ch)) >= 0 && (i1 = "xyz".indexOf(strFormat.charAt(ich))) >= 0) { +lt.tok = JM.LabelToken.twoCharLabelTokenIds[i * 3 + i1]; +ich++; +} else if ((i = "AaBbCcDEefGgIiLlMmNnOoPpQqRrSsTtUuVvWwXxxYyyZzz%%%gqW".indexOf(ch)) >= 0) { +lt.tok = JM.LabelToken.labelTokenIds[i]; +}} +lt.text = strFormat.substring(lt.pt, ich); +if (ich < cch && chAtom != 0 && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +ich++; +lt.ch1 = ch; +if (ch.charCodeAt(0) != chAtom && chAtom != 1) lt.tok = 0; +}return ich; +}, "JV.Viewer,~S,JM.LabelToken,~N,~N,java.util.Map"); +c$.appendAtomTokenValue = Clazz_defineMethod(c$, "appendAtomTokenValue", +function(vwr, atom, t, strLabel, indices, ptTemp){ +var strT = null; +var floatT = NaN; +var ptT = null; +try { +switch (t.tok) { +case 1153433601: +strT = atom.atomPropertyString(vwr, 1153433601); +break; +case 1094713347: +strT = "" + (indices == null ? atom.i : indices[atom.i]); +break; +case 1765808134: +ptT = atom.atomPropertyTuple(vwr, t.tok, ptTemp); +break; +case 1073741974: +strT = atom.getUnitID((t.data).intValue()); +break; +case 134221834: +case 1073742189: +if (t.data != null) { +floatT = (t.data)[atom.i]; +if (t.tok == 1073742189 && floatT != 1 && floatT != 0) { +var o = vwr.getAtomValidation(t.text.substring(13, t.text.length - 1), atom); +if (o == null) { +System.out.println("?? o is null ??"); +} else if (o.size() == 1) { +floatT = o.get(0).floatValue(); +} else { +floatT = NaN; +strT = ""; +for (var i = 0, n = o.size(); i < n; i++) { +strT += "," + o.get(i); +} +if (strT.length > 1) strT = strT.substring(1); +}}}break; +case 1715472409: +var data = vwr.ms.getInfo(atom.mi, t.data); +var iatom = atom.i - vwr.ms.am[atom.mi].firstAtomIndex; +var o = null; +if (iatom >= 0) if ((Clazz_instanceOf(data,Array))) { +var sdata = data; +o = (iatom < sdata.length ? sdata[iatom] : null); +} else if (Clazz_instanceOf(data,"JU.Lst")) { +var list = data; +o = (iatom < list.size() ? JS.SV.oValue(list.get(iatom)) : null); +}if (o == null) { +strT = ""; +} else if (Clazz_instanceOf(o, Float)) { +floatT = (o).floatValue(); +} else if (Clazz_instanceOf(o, Integer)) { +floatT = (o).intValue(); +} else if (Clazz_instanceOf(o,"JU.T3")) { +ptT = o; +} else { +strT = o.toString(); +}break; +case 1275068418: +if (t.data != null) { +var sdata = t.data; +strT = (atom.i < sdata.length ? sdata[atom.i] : ""); +}break; +case 1631586315: +var formalCharge = atom.getFormalCharge(); +strT = (formalCharge > 0 ? "" + formalCharge + "+" : formalCharge < 0 ? "" + -formalCharge + "-" : ""); +break; +case 1094717454: +strT = atom.getModelNumberForLabel(); +break; +case 1128269825: +strT = "" + atom.atomPropertyInt(t.tok); +break; +case 1665140738: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +break; +case 1086324749: +strT = atom.group.getStructureId(); +break; +case 1094713367: +var id = atom.group.getStrucNo(); +strT = (id <= 0 ? "" : "" + id); +break; +case 1111490574: +if (Float.isNaN(floatT = atom.group.getGroupParameter(1111490574))) strT = "null"; +break; +case 1111492626: +case 1111492627: +case 1111492628: +case 1111490583: +case 1111490584: +case 1111490585: +case 1111490586: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +if (Float.isNaN(floatT)) strT = ""; +break; +case 1073877011: +strT = vwr.getNBOAtomLabel(atom); +break; +case 1086324747: +case 1639976963: +case 1237320707: +strT = atom.atomPropertyString(vwr, t.tok); +break; +case 1140850705: +strT = atom.getIdentityXYZ(ptTemp, 1); +break; +case 1086324754: +strT = atom.getWyckoffPosition(false); +break; +case 1086324755: +strT = atom.getWyckoffPosition(true); +break; +case 79: +strT = atom.getSymmetryOperatorList(false); +break; +case 81: +floatT = atom.getOccupancy100() / 100; +break; +default: +switch (t.tok & 1136656384) { +case 1094713344: +if (t.intAsFloat) floatT = atom.atomPropertyInt(t.tok); + else strT = "" + atom.atomPropertyInt(t.tok); +break; +case 1111490560: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +break; +case 1086324736: +strT = atom.atomPropertyString(vwr, t.tok); +break; +case 1077936128: +ptT = atom.atomPropertyTuple(vwr, t.tok, ptTemp); +if (ptT == null) strT = ""; +break; +default: +if (t.tok == 1145045003) strT = atom.atomPropertyString(vwr, 1145045003); +} +} +} catch (ioobe) { +if (Clazz_exceptionOf(ioobe,"IndexOutOfBoundsException")){ +floatT = NaN; +strT = null; +ptT = null; +} else { +throw ioobe; +} +} +strT = t.format(floatT, strT, ptT); +if (strLabel == null) t.text = strT; + else strLabel.append(strT); +}, "JV.Viewer,JM.Atom,JM.LabelToken,JU.SB,~A,JU.P3"); +Clazz_defineMethod(c$, "format", +function(floatT, strT, ptT){ +if (!Float.isNaN(floatT)) { +return JU.PT.formatF(floatT, this.width, this.precision, this.alignLeft, this.zeroPad); +} else if (strT != null) { +return JU.PT.formatS(strT, this.width, this.precision, this.alignLeft, this.zeroPad); +} else if (ptT != null) { +if (this.width == 0 && this.precision == 2147483647) { +this.width = 6; +this.precision = 2; +}return JU.PT.formatF(ptT.x, this.width, this.precision, false, false) + JU.PT.formatF(ptT.y, this.width, this.precision, false, false) + JU.PT.formatF(ptT.z, this.width, this.precision, false, false); +} else { +return this.text; +}}, "~N,~S,JU.T3"); +c$.labelTokenIds = Clazz_newIntArray(-1, [1086324739, 1086326786, 1086326785, 1111492620, 1631586315, 1086326788, 1094713347, 1086324746, 1086326789, 1111490569, 1094713357, 1094713361, 1111492618, 1094715393, 1094713363, 1094715402, 1094717454, 1086324743, 1094713360, 1086324742, 79, 1088421903, 1111492619, 1111490570, 81, 1128269825, 1094715412, 1086324747, 1094713366, 1086326788, 1111490574, 1111492620, 1086324745, 1111490575, 1648363544, 1145047055, 1140850705, 1086324755, 1111492612, 1111492609, 1111492629, 1111492613, 1111492610, 1111492630, 1111492614, 1111492611, 1111492631, 1114249217, 1112152066, 1112150019, 1112150020, 1112150021, 1112152070, 1112152071, 1112152073, 1112152074, 1112152076, 1649022989, 1112152078, 1111490561, 1111490562, 1153433601, 1094713346, 1228931586, 1765808134, 1094713356, 1111490564, 1228935687, 1287653388, 1825200146, 1111490567, 1094713359, 1111490565, 1111490568, 1094713362, 1715472409, 1665140738, 1113589787, 1086324748, 1086324744, 1112152075, 1639976963, 1237320707, 1094713367, 1086324749, 1086326798, 1111490576, 1111490577, 1111490578, 1111490579, 1094715418, 1648361473, 1111492626, 1111492627, 1111492628, 1312817669, 1145045006, 1145047050, 1145047049, 1145047053, 1111492615, 1111492616, 1111492617, 1113589786, 1111490571, 1111490572, 1111490573, 1145047052, 1111490566, 1111490563, 1094713351, 1094713365, 1111490583, 1111490584, 1111490585, 1111490586, 1145045008, 1296041985, 1073877011, 1086324752, 1086324753, 1086324754, 1145045003]); +c$.twoCharLabelTokenIds = Clazz_newIntArray(-1, [1111492612, 1111492613, 1111492614, 1111490577, 1111490578, 1111490579, 1111492626, 1111492627, 1111492628]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.Measurement", ["JU.Measure", "$.PT", "$.SB", "J.atomdata.RadiusData", "J.c.VDW", "JM.LabelToken", "JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ms = null; +this.thisID = null; +this.index = 0; +this.isVisible = true; +this.isHidden = false; +this.isTrajectory = false; +this.$isValid = true; +this.colix = 0; +this.labelColix = -1; +this.mad = 0; +this.tickInfo = null; +this.traceX = -2147483648; +this.traceY = 0; +this.count = 0; +this.countPlusIndices = null; +this.pts = null; +this.value = 0; +this.property = null; +this.strFormat = null; +this.units = null; +this.text = null; +this.vwr = null; +this.strMeasurement = null; +this.type = null; +this.tainted = false; +this.renderAxis = null; +this.renderArc = null; +this.newUnits = null; +this.fixedValue = NaN; +this.isPending = false; +this.inFront = false; +this.useDefaultLabel = false; +Clazz_instantialize(this, arguments);}, JM, "Measurement", null); +Clazz_prepareFields (c$, function(){ +this.countPlusIndices = Clazz_newIntArray (5, 0); +}); +Clazz_defineMethod(c$, "isTainted", +function(){ +return (this.tainted && !(this.tainted = false)); +}); +Clazz_defineMethod(c$, "setM", +function(modelSet, m, value, colix, strFormat, index){ +this.ms = modelSet; +this.index = index; +this.vwr = modelSet.vwr; +this.colix = colix; +this.strFormat = strFormat; +if (m != null) { +this.tickInfo = m.tickInfo; +this.pts = m.pts; +this.mad = m.mad; +this.thisID = m.thisID; +this.text = m.text; +this.property = m.property; +this.units = m.units; +if (this.property == null && "+hz".equals(this.units)) { +this.property = "property_J"; +}if (this.thisID != null && this.text != null) this.labelColix = this.text.colix; +}if (this.pts == null) this.pts = new Array(4); +var indices = (m == null ? null : m.countPlusIndices); +this.count = (indices == null ? 0 : indices[0]); +if (this.count > 0) { +System.arraycopy(indices, 0, this.countPlusIndices, 0, this.count + 1); +this.isTrajectory = modelSet.isTrajectoryMeasurement(this.countPlusIndices); +}this.isPending = Float.isNaN(value); +this.value = (this.isPending || this.isTrajectory ? this.getMeasurement(null) : value); +this.formatMeasurement(null); +return this; +}, "JM.ModelSet,JM.Measurement,~N,~N,~S,~N"); +Clazz_defineMethod(c$, "setPoints", +function(modelSet, indices, points, tickInfo){ +this.ms = modelSet; +this.countPlusIndices = indices; +this.count = indices[0]; +this.pts = (points == null ? new Array(4) : points); +this.vwr = modelSet.vwr; +this.tickInfo = tickInfo; +return this; +}, "JM.ModelSet,~A,~A,JM.TickInfo"); +Clazz_defineMethod(c$, "setCount", +function(count){ +this.setCountM(count); +}, "~N"); +Clazz_defineMethod(c$, "setCountM", +function(count){ +this.count = this.countPlusIndices[0] = count; +}, "~N"); +Clazz_defineMethod(c$, "getAtomIndex", +function(n){ +return (n > 0 && n <= this.count ? this.countPlusIndices[n] : -1); +}, "~N"); +Clazz_defineMethod(c$, "getAtom", +function(n){ +var pt = this.countPlusIndices[n]; +return (pt < -1 ? this.pts[-2 - pt] : this.ms.at[pt]); +}, "~N"); +Clazz_defineMethod(c$, "getLastIndex", +function(){ +return (this.count > 0 ? this.countPlusIndices[this.count] : -1); +}); +Clazz_defineMethod(c$, "getString", +function(){ +return this.strMeasurement; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.getString(); +}); +Clazz_defineMethod(c$, "getStringUsing", +function(vwr, strFormat, units){ +this.vwr = vwr; +this.value = this.getMeasurement(null); +this.formatMeasurementAs(strFormat, units, true); +if (strFormat == null) return this.getInfoAsString(units); +return this.strMeasurement; +}, "JV.Viewer,~S,~S"); +Clazz_defineMethod(c$, "getStringDetail", +function(){ +return (this.count == 2 ? "Distance" : this.count == 3 ? "Angle" : "Torsion") + this.getMeasurementScript(" - ", false) + " : " + this.value; +}); +Clazz_defineMethod(c$, "refresh", +function(pts){ +this.value = this.getMeasurement(pts); +this.isTrajectory = this.ms.isTrajectoryMeasurement(this.countPlusIndices); +this.formatMeasurement(null); +}, "~A"); +Clazz_defineMethod(c$, "getMeasurementScript", +function(sep, withModelIndex){ +var sb = new JU.SB(); +var asBitSet = (sep.equals(" ")); +for (var i = 1; i <= this.count; i++) sb.append(i > 1 ? sep : " ").append(this.getLabel(i, asBitSet, withModelIndex)); + +return sb.toString(); +}, "~S,~B"); +Clazz_defineMethod(c$, "formatMeasurementAs", +function(strFormat, units, useDefault){ +if (strFormat != null && strFormat.length == 0) strFormat = null; +if (!useDefault && strFormat != null && strFormat.indexOf(this.countPlusIndices[0] + ":") != 0) return; +this.strFormat = strFormat; +this.formatMeasurement(units); +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "formatMeasurement", +function(units){ +this.tainted = true; +switch (Float.isNaN(this.value) ? 0 : this.count) { +default: +this.strMeasurement = null; +return; +case 2: +this.strMeasurement = this.formatDistance(units); +return; +case 3: +case 4: +this.strMeasurement = this.formatAngle(this.value); +return; +} +}, "~S"); +Clazz_defineMethod(c$, "reformatDistanceIfSelected", +function(isDefault){ +if (this.count == 2 && this.vwr.slm.isSelected(this.countPlusIndices[1]) && this.vwr.slm.isSelected(this.countPlusIndices[2])) { +var pt; +if (this.useDefaultLabel && this.strFormat != null && (pt = this.strFormat.indexOf("//")) >= 0) this.strFormat = this.strFormat.substring(0, pt); +if (isDefault) this.units = null; +this.formatMeasurement(null); +}}, "~B"); +Clazz_defineMethod(c$, "formatDistance", +function(units){ +var label = this.getLabelString(); +if (label == null) return ""; +var pt = this.strFormat.indexOf("//"); +if (units == null) { +units = this.units; +if (units == null) { +units = (pt >= 0 ? this.strFormat.substring(pt + 2) : this.property == null ? this.vwr.g.measureDistanceUnits : ""); +}}if (pt >= 0) { +this.strFormat = this.strFormat.substring(0, pt); +}this.strFormat += "//" + units; +units = JM.Measurement.fixUnits(units); +pt = label.indexOf("//"); +if (pt >= 0) { +label = label.substring(0, pt); +if (label.length == 0) label = "%VALUE"; +}var f = this.fixValue(units, (label.indexOf("%V") >= 0)); +return this.formatString(f, this.newUnits, label); +}, "~S"); +Clazz_defineMethod(c$, "fixValue", +function(units, andRound){ +this.checkJ(units); +if (units != null && units.startsWith("+")) { +if (!this.isPending) this.value = Math.abs(this.value); +units = units.substring(1); +}this.newUnits = units; +if (this.count != 2) return this.value; +var dist = this.value; +if (units == null && this.property != null) units = ""; +if (units != null) { +var isPercent = units.equals("%"); +if (this.property == null && (isPercent || units.endsWith("hz"))) { +var i1 = this.getAtomIndex(1); +var i2 = this.getAtomIndex(2); +if (i1 >= 0 && i2 >= 0) { +var a1 = this.getAtom(1); +var a2 = this.getAtom(2); +var itype = JM.Measurement.nmrType(units); +var isDC = (!isPercent && itype == 1); +this.type = (isPercent ? "percent" : isDC ? "dipoleCouplingConstant" : itype == 3 ? "NOE or 3JHH" : "J-CouplingConstant"); +if (itype == 3) { +var result = this.vwr.getNMRCalculation().getNOEorJHH( Clazz_newArray(-1, [a1, null, null, a2]), 11); +if (result == null) { +dist = NaN; +this.newUnits = units = ""; +} else { +dist = result[1]; +units = this.newUnits = (result.length == 2 ? "noe" : "hz"); +}} else { +dist = (isPercent ? dist / (a1.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO) + a2.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)) : isDC ? this.vwr.getNMRCalculation().getDipolarConstantHz(a1, a2) : this.vwr.getNMRCalculation().getIsoOrAnisoHz(true, a1, a2, units, null)); +}this.$isValid = !Float.isNaN(dist); +if (isPercent) units = "pm"; +}}return JM.Measurement.toUnits(dist, units, andRound); +}return (andRound ? Math.round(dist * 100) / 100 : dist); +}, "~S,~B"); +Clazz_defineMethod(c$, "checkJ", +function(units){ +if (this.property != null || units != null || this.units != null) return; +units = this.vwr.g.measureDistanceUnits; +if ("+hz".equals(units)) { +this.property = "property_J"; +this.units = units; +}}, "~S"); +c$.nmrType = Clazz_defineMethod(c$, "nmrType", +function(units){ +return (units.indexOf("hz") < 0 ? 0 : units.equals("noe_hz") ? 3 : units.startsWith("dc_") || units.equals("khz") ? 1 : 2); +}, "~S"); +Clazz_defineMethod(c$, "formatAngle", +function(angle){ +var label = this.getLabelString(); +if (label.indexOf("%V") >= 0) angle = Math.round(angle * 10) / 10; +return this.formatString(angle, "\u00B0", label); +}, "~N"); +Clazz_defineMethod(c$, "getLabelString", +function(){ +var atomCount = this.countPlusIndices[0]; +var s = atomCount + ":"; +var label = null; +if (this.strFormat != null) { +if (this.strFormat.length == 0) return null; +label = (this.strFormat.length > 2 && this.strFormat.indexOf(s) == 0 ? this.strFormat : null); +}this.useDefaultLabel = false; +if (label == null) { +this.strFormat = null; +label = this.vwr.getDefaultMeasurementLabel(this.countPlusIndices[0]); +this.useDefaultLabel = (this.units == null); +}if (label.indexOf(s) == 0) label = label.substring(2); +if (this.strFormat == null) this.strFormat = s + label; +return label; +}); +Clazz_defineMethod(c$, "formatString", +function(value, units, label){ +return JM.LabelToken.formatLabelMeasure(this.vwr, this, label, value, units); +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "sameAsPoints", +function(indices, points){ +if (this.count != indices[0]) return false; +var isSame = true; +for (var i = 1; i <= this.count && isSame; i++) isSame = (this.countPlusIndices[i] == indices[i]); + +if (isSame) for (var i = 0; i < this.count && isSame; i++) { +if (points[i] != null) isSame = (this.pts[i].distance(points[i]) < 0.01); +} +if (isSame) return true; +switch (this.count) { +default: +return true; +case 2: +return this.sameAsIJ(indices, points, 1, 2) && this.sameAsIJ(indices, points, 2, 1); +case 3: +return this.sameAsIJ(indices, points, 1, 3) && this.sameAsIJ(indices, points, 2, 2) && this.sameAsIJ(indices, points, 3, 1); +case 4: +return this.sameAsIJ(indices, points, 1, 4) && this.sameAsIJ(indices, points, 2, 3) && this.sameAsIJ(indices, points, 3, 2) && this.sameAsIJ(indices, points, 4, 1); +} +}, "~A,~A"); +Clazz_defineMethod(c$, "sameAsIJ", +function(atoms, points, i, j){ +var ipt = this.countPlusIndices[i]; +var jpt = atoms[j]; +return (ipt >= 0 || jpt >= 0 ? ipt == jpt : this.pts[-2 - ipt].distance(points[-2 - jpt]) < 0.01); +}, "~A,~A,~N,~N"); +Clazz_defineMethod(c$, "sameAs", +function(i, j){ +return this.sameAsIJ(this.countPlusIndices, this.pts, i, j); +}, "~N,~N"); +Clazz_defineMethod(c$, "getPropMeasurement", +function(pts){ +if (this.countPlusIndices == null || this.count != 2) return NaN; +for (var i = this.count; --i >= 0; ) if (this.countPlusIndices[i + 1] < 0) { +return NaN; +} +try { +var ptA = (pts == null ? this.getAtom(1) : pts[0]); +var ptB = (pts == null ? this.getAtom(2) : pts[1]); +var props = this.vwr.getDataObj(this.property, null, 2); +var ia = ptA.i; +var ib = ptB.i; +return (props == null || ib >= props.length || ia >= props.length ? NaN : props[ia][ib]); +} catch (t) { +return NaN; +} +}, "~A"); +Clazz_defineMethod(c$, "getMeasurement", +function(pts){ +this.checkJ(null); +if (!Float.isNaN(this.fixedValue)) return this.fixedValue; +if (this.property != null) return this.getPropMeasurement(pts); +if (this.countPlusIndices == null) return NaN; +if (this.count < 2) return NaN; +for (var i = this.count; --i >= 0; ) if (this.countPlusIndices[i + 1] == -1) { +return NaN; +} +var ptA = (pts == null ? this.getAtom(1) : pts[0]); +var ptB = (pts == null ? this.getAtom(2) : pts[1]); +var ptC; +switch (this.count) { +case 2: +return ptA.distance(ptB); +case 3: +ptC = (pts == null ? this.getAtom(3) : pts[2]); +return JU.Measure.computeAngleABC(ptA, ptB, ptC, true); +case 4: +ptC = (pts == null ? this.getAtom(3) : pts[2]); +var ptD = (pts == null ? this.getAtom(4) : pts[3]); +return JU.Measure.computeTorsion(ptA, ptB, ptC, ptD, true); +default: +return NaN; +} +}, "~A"); +Clazz_defineMethod(c$, "getLabel", +function(i, asBitSet, withModelIndex){ +var atomIndex = this.countPlusIndices[i]; +return (atomIndex < 0 ? (withModelIndex ? "modelIndex " + this.getAtom(i).mi + " " : "") + JU.Escape.eP(this.getAtom(i)) : asBitSet ? "({" + atomIndex + "})" : this.vwr.getAtomInfo(atomIndex)); +}, "~N,~B,~B"); +Clazz_defineMethod(c$, "setModelIndex", +function(modelIndex){ +if (this.pts == null) return; +for (var i = 0; i < this.count; i++) { +if (this.pts[i] != null) this.pts[i].mi = modelIndex; +} +}, "~N"); +Clazz_defineMethod(c$, "isValid", +function(){ +return !(this.sameAs(1, 2) || this.count > 2 && this.sameAs(1, 3) || this.count == 4 && this.sameAs(2, 4)); +}); +c$.find = Clazz_defineMethod(c$, "find", +function(measurements, m){ +var indices = m.countPlusIndices; +var points = m.pts; +for (var i = measurements.size(); --i >= 0; ) if (measurements.get(i).sameAsPoints(indices, points)) return i; + +return -1; +}, "JU.Lst,JM.Measurement"); +Clazz_defineMethod(c$, "isConnected", +function(atoms, count){ +var atomIndexLast = -1; +for (var i = 1; i <= count; i++) { +var atomIndex = this.getAtomIndex(i); +if (atomIndex < 0) continue; +if (atomIndexLast >= 0 && !atoms[atomIndex].isBonded(atoms[atomIndexLast])) return false; +atomIndexLast = atomIndex; +} +return true; +}, "~A,~N"); +Clazz_defineMethod(c$, "getInfoAsString", +function(units){ +var f = this.fixValue(units, true); +var sb = new JU.SB(); +sb.append(this.count == 2 ? (this.property != null ? this.property : this.type == null ? "distance" : this.type) : this.count == 3 ? "angle" : "dihedral"); +sb.append(" \t").appendF(f); +sb.append(" \t").append(JU.PT.esc(this.strMeasurement)); +for (var i = 1; i <= this.count; i++) sb.append(" \t").append(this.getLabel(i, false, false)); + +if (this.thisID != null) sb.append(" \t").append(this.thisID); +return sb.toString(); +}, "~S"); +Clazz_defineMethod(c$, "isInRange", +function(radiusData, value){ +if (radiusData.factorType === J.atomdata.RadiusData.EnumType.FACTOR) { +var atom1 = this.getAtom(1); +var atom2 = this.getAtom(2); +var d = (atom1.getVanderwaalsRadiusFloat(this.vwr, radiusData.vdwType) + atom2.getVanderwaalsRadiusFloat(this.vwr, radiusData.vdwType)) * radiusData.value; +return (value <= d); +}return (radiusData.values[0] == 3.4028235E38 || value >= radiusData.values[0] && value <= radiusData.values[1]); +}, "J.atomdata.RadiusData,~N"); +Clazz_defineMethod(c$, "isIntramolecular", +function(atoms, count){ +var molecule = -1; +for (var i = 1; i <= count; i++) { +var atomIndex = this.getAtomIndex(i); +if (atomIndex < 0) continue; +var m = atoms[atomIndex].getMoleculeNumber(false); +if (molecule < 0) molecule = m; + else if (m != molecule) return false; +} +return true; +}, "~A,~N"); +Clazz_defineMethod(c$, "isMin", +function(htMin){ +var a1 = this.getAtom(1); +var a2 = this.getAtom(2); +var d = Clazz_floatToInt(a2.distanceSquared(a1) * 100); +var n1 = a1.getAtomName(); +var n2 = a2.getAtomName(); +var key = (n1.compareTo(n2) < 0 ? n1 + n2 : n2 + n1); +var min = htMin.get(key); +return (min != null && d == min.intValue()); +}, "java.util.Map"); +c$.isUnits = Clazz_defineMethod(c$, "isUnits", +function(s){ +return (JU.PT.isOneOf((s.startsWith("+") ? s.substring(1) : s).toLowerCase(), ";nm;nanometers;pm;picometers;angstroms;angstroms;ang;\u00C5;au;vanderwaals;vdw;%;noe;") || s.indexOf(" ") < 0 && s.endsWith("hz")); +}, "~S"); +c$.toUnits = Clazz_defineMethod(c$, "toUnits", +function(dist, units, andRound){ +if (Float.isNaN(dist)) return NaN; +if (units.equals("hz")) return (andRound ? Math.round(dist * 10) / 10 : dist); +if (units.equals("nm")) return (andRound ? Math.round(dist * 100) / 1000 : dist / 10); +if (units.equals("pm")) return (andRound ? Math.round(dist * 1000) / 10 : dist * 100); +if (units.equals("au")) return (andRound ? Math.round(dist / 0.5291772 * 1000) / 1000 : dist / 0.5291772); +if (units.endsWith("khz")) return (andRound ? Math.round(dist / 10) / 100 : dist / 1000); +return (andRound ? Math.round(dist * 100) / 100 : dist); +}, "~N,~S,~B"); +c$.fromUnits = Clazz_defineMethod(c$, "fromUnits", +function(dist, units){ +if (units.equals("nm")) return dist * 10; +if (units.equals("pm")) return dist / 100; +if (units.equals("au")) return dist * 0.5291772; +if (units.equals("\u00C5")) return dist; +return 0; +}, "~N,~S"); +c$.fixUnits = Clazz_defineMethod(c$, "fixUnits", +function(u){ +var units = (u.endsWith("s") ? u.substring(0, u.length - 1) : u); +if (units.equals("nanometer")) return "nm"; + else if (units.equals("bohr") || units.equals("atomicunits") || units.equals("atomic")) return "au"; + else if (units.equals("picometer")) return "pm"; + else if (units.equals("\u00E5") || units.equals("angstrom") || units.equals("a") || units.equals("ang")) return "\u00C5"; + else if (units.equals("vanderwaal") || units.equals("vdw")) return "%"; +return u; +}, "~S"); +Clazz_defineMethod(c$, "getDistanceFormatForState", +function(){ +return (this.useDefaultLabel ? null : this.strFormat); +}); +Clazz_defineMethod(c$, "setFromMD", +function(md, andText){ +if (md.thisID != null) { +this.thisID = md.thisID; +this.mad = md.mad; +if (md.colix != 0) this.colix = md.colix; +this.strFormat = md.strFormat; +this.text = md.text; +}this.units = ("default".equals(md.units) ? null : md.units); +this.property = md.property; +this.fixedValue = md.fixedValue; +if (md.colix != 0) this.colix = md.colix; +if (md.mad != 0) this.mad = md.mad; +if (md.strFormat != null) { +this.strFormat = (this.strFormat == null ? md.strFormat : this.strFormat.substring(0, 2)) + md.strFormat.substring(2); +}if (md.text != null) { +if (this.text == null) { +this.text = md.text; +} else { +if (md.text.font != null) { +this.text.setFont(md.text.font, false); +this.text.fontScale = md.text.font.fontSize / md.text.font.fontSizeNominal; +}this.text.text = null; +if (md.text.align != 0) this.text.align = md.text.align; +if (md.colix != 0) this.labelColix = this.text.colix = md.text.colix; +}}this.formatMeasurement(null); +}, "JM.MeasurementData,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["J.api.JmolMeasurementClient"], "JM.MeasurementData", ["JU.Lst", "JM.Measurement"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.client = null; +this.bsSelected = null; +this.measurementStrings = null; +this.measurements = null; +this.points = null; +this.mustBeConnected = false; +this.mustNotBeConnected = false; +this.tickInfo = null; +this.tokAction = 12290; +this.radiusData = null; +this.strFormat = null; +this.property = null; +this.note = null; +this.isAll = false; +this.colix = 0; +this.intramolecular = null; +this.mad = 0; +this.thisID = null; +this.text = null; +this.units = null; +this.fixedValue = 0; +this.atoms = null; +this.minArray = null; +this.ms = null; +this.allowSelf = false; +this.vwr = null; +this.iFirstAtom = 0; +this.justOneModel = true; +this.htMin = null; +Clazz_instantialize(this, arguments);}, JM, "MeasurementData", null, J.api.JmolMeasurementClient); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "init", +function(id, vwr, points){ +this.vwr = vwr; +this.points = points; +this.thisID = id; +return this; +}, "~S,JV.Viewer,JU.Lst"); +Clazz_defineMethod(c$, "setModelSet", +function(m){ +this.ms = m; +return this; +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "set", +function(tokAction, htMin, radiusData, property, strFormat, units, tickInfo, mustBeConnected, mustNotBeConnected, intramolecular, isAll, mad, colix, text, value, bsSelected){ +this.ms = this.vwr.ms; +this.tokAction = tokAction; +if (this.points.size() >= 2 && Clazz_instanceOf(this.points.get(0),"JU.BS") && Clazz_instanceOf(this.points.get(1),"JU.BS")) { +this.justOneModel = this.vwr.ms.getModelBS(this.points.get(0), false).equals(this.vwr.ms.getModelBS(this.points.get(1), false)); +}this.bsSelected = bsSelected; +this.htMin = htMin; +this.radiusData = radiusData; +this.property = property; +this.strFormat = strFormat; +this.units = units; +this.tickInfo = tickInfo; +this.mustBeConnected = mustBeConnected; +this.mustNotBeConnected = mustNotBeConnected; +this.intramolecular = intramolecular; +this.isAll = isAll; +this.mad = mad; +this.colix = colix; +this.text = text; +this.fixedValue = value; +return this; +}, "~N,java.util.Map,J.atomdata.RadiusData,~S,~S,~S,JM.TickInfo,~B,~B,Boolean,~B,~N,~N,JM.Text,~N,JU.BS"); +Clazz_defineMethod(c$, "processNextMeasure", +function(md, m){ +var value = m.getMeasurement(null); +if (this.htMin != null && !m.isMin(this.htMin) || this.radiusData != null && !m.isInRange(this.radiusData, value)) return; +if (this.measurementStrings == null && this.measurements == null) { +var f = this.minArray[this.iFirstAtom]; +m.value = value; +value = m.fixValue(this.units, false); +this.minArray[this.iFirstAtom] = (1 / f == -Infinity ? value : Math.min(f, value)); +return; +}if (this.measurementStrings != null) this.measurementStrings.addLast(m.getStringUsing(this.vwr, this.strFormat, this.units)); + else this.measurements.addLast(Float.$valueOf(m.getMeasurement(null))); +}, "JM.MeasurementData,JM.Measurement"); +Clazz_defineMethod(c$, "getMeasurements", +function(asFloatArray, asMinArray){ +if (asMinArray) { +this.minArray = Clazz_newFloatArray ((this.points.get(0)).cardinality(), 0); +for (var i = 0; i < this.minArray.length; i++) this.minArray[i] = -0.0; + +this.define(null, this.ms); +return this.minArray; +}if (asFloatArray) { +this.allowSelf = true; +this.measurements = new JU.Lst(); +this.define(null, this.ms); +return this.measurements; +}this.measurementStrings = new JU.Lst(); +this.define(null, this.ms); +return this.measurementStrings; +}, "~B,~B"); +Clazz_defineMethod(c$, "define", +function(client, modelSet){ +this.client = (client == null ? this : client); +this.atoms = modelSet.at; +var nPoints = this.points.size(); +if (nPoints < 2) return; +var modelIndex = -1; +var pts = new Array(4); +var indices = Clazz_newIntArray (5, 0); +var m = new JM.Measurement().setPoints(modelSet, indices, pts, null); +m.setCount(nPoints); +m.property = this.property; +m.strFormat = this.strFormat; +m.units = this.units; +m.fixedValue = this.fixedValue; +var ptLastAtom = -1; +for (var i = 0; i < nPoints; i++) { +var obj = this.points.get(i); +if (Clazz_instanceOf(obj,"JU.BS")) { +var bs = obj; +var nAtoms = bs.cardinality(); +if (nAtoms == 0) return; +if (nAtoms > 1) modelIndex = 0; +ptLastAtom = i; +if (i == 0) this.iFirstAtom = 0; +indices[i + 1] = bs.nextSetBit(0); +} else { +pts[i] = obj; +indices[i + 1] = -2 - i; +}} +this.nextMeasure(0, ptLastAtom, m, modelIndex); +}, "J.api.JmolMeasurementClient,JM.ModelSet"); +Clazz_defineMethod(c$, "nextMeasure", +function(thispt, ptLastAtom, m, thisModel){ +if (thispt > ptLastAtom) { +if ((this.allowSelf && !this.mustBeConnected && !this.mustNotBeConnected || m.isValid()) && (!this.mustBeConnected || m.isConnected(this.atoms, thispt)) && (!this.mustNotBeConnected || !m.isConnected(this.atoms, thispt)) && (this.intramolecular == null || m.isIntramolecular(this.atoms, thispt) == this.intramolecular.booleanValue())) this.client.processNextMeasure(this, m); +return; +}var bs = this.points.get(thispt); +var indices = m.countPlusIndices; +var thisAtomIndex = (thispt == 0 ? 2147483647 : indices[thispt]); +if (thisAtomIndex < 0) { +this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +return; +}var haveNext = false; +for (var i = bs.nextSetBit(0), pt = 0; i >= 0; i = bs.nextSetBit(i + 1), pt++) { +if (i == thisAtomIndex && !this.allowSelf) continue; +var modelIndex = this.atoms[i].mi; +if (thisModel >= 0 && this.justOneModel) { +if (thispt == 0) thisModel = modelIndex; + else if (thisModel != modelIndex) continue; +}indices[thispt + 1] = i; +if (thispt == 0) this.iFirstAtom = pt; +haveNext = true; +this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +} +if (!haveNext) this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +}, "~N,~N,JM.Measurement,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Measurement"], "JM.MeasurementPending", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveTarget = false; +this.haveModified = false; +this.numSet = 0; +this.lastIndex = -1; +Clazz_instantialize(this, arguments);}, JM, "MeasurementPending", JM.Measurement); +Clazz_defineMethod(c$, "set", +function(modelSet){ +return this.setM(modelSet, null, NaN, 0, null, 0); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "checkPoint", +function(ptClicked){ +for (var i = 1; i <= this.numSet; i++) if (this.countPlusIndices[i] == -1 - i && this.pts[i - 1].distance(ptClicked) < 0.01) return false; + +return true; +}, "JU.Point3fi"); +Clazz_defineMethod(c$, "getIndexOf", +function(atomIndex){ +for (var i = 1; i <= this.numSet; i++) if (this.countPlusIndices[i] == atomIndex) return i; + +return 0; +}, "~N"); +Clazz_overrideMethod(c$, "setCount", +function(count){ +this.setCountM(count); +this.numSet = count; +}, "~N"); +Clazz_defineMethod(c$, "addPoint", +function(atomIndex, ptClicked, doSet){ +this.haveModified = (atomIndex != this.lastIndex); +this.lastIndex = atomIndex; +if (ptClicked == null) { +if (this.getIndexOf(atomIndex) > 0) { +if (doSet) this.numSet = this.count; +return this.count; +}this.haveTarget = (atomIndex >= 0); +if (!this.haveTarget) return this.count = this.numSet; +this.count = this.numSet + 1; +this.countPlusIndices[this.count] = atomIndex; +} else { +if (!this.checkPoint(ptClicked)) { +if (doSet) this.numSet = this.count; +return this.count; +}var pt = this.numSet; +this.haveModified = this.haveTarget = true; +this.count = this.numSet + 1; +this.pts[pt] = ptClicked; +this.countPlusIndices[this.count] = -2 - pt; +}this.countPlusIndices[0] = this.count; +if (doSet) this.numSet = this.count; +this.value = this.getMeasurement(null); +this.strFormat = null; +this.formatMeasurement(null); +return this.count; +}, "~N,JU.Point3fi,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.Model", ["java.util.Hashtable", "JU.AU", "$.BS", "$.SB", "JU.BSUtil", "JV.FileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ms = null; +this.mat4 = null; +this.modelIndex = 0; +this.fileIndex = 0; +this.isBioModel = false; +this.isPdbWithMultipleBonds = false; +this.isModelKit = false; +this.chains = null; +this.simpleCage = null; +this.dssrCache = null; +this.orientation = null; +this.auxiliaryInfo = null; +this.properties = null; +this.biosymmetry = null; +this.dataFrames = null; +this.translation = null; +this.dataSourceFrame = -1; +this.loadState = ""; +this.loadScript = null; +this.hasRasmolHBonds = false; +this.structureTainted = false; +this.isJmolDataFrame = false; +this.isTrajectory = false; +this.trajectoryBaseIndex = 0; +this.altLocCount = 0; +this.insertionCount = 0; +this.act = 0; +this.bondCount = -1; +this.chainCount = 0; +this.groupCount = -1; +this.hydrogenCount = 0; +this.moleculeCount = 0; +this.biosymmetryCount = 0; +this.firstAtomIndex = 0; +this.firstMoleculeIndex = 0; +this.bsAtoms = null; +this.bsAtomsDeleted = null; +this.defaultRotationRadius = 0; +this.frameDelay = 0; +this.selectedTrajectory = -1; +this.jmolData = null; +this.jmolFrameType = null; +this.pdbID = null; +this.bsCheck = null; +this.hasChirality = false; +this.isOrderly = true; +this.bsAsymmetricUnit = null; +Clazz_instantialize(this, arguments);}, JM, "Model", null); +Clazz_makeConstructor(c$, +function(){ +this.setupArrays(); +}); +Clazz_defineMethod(c$, "setupArrays", +function(){ +this.chains = new Array(8); +this.loadScript = new JU.SB(); +this.bsAtoms = new JU.BS(); +this.bsAtomsDeleted = new JU.BS(); +}); +Clazz_defineMethod(c$, "set", +function(modelSet, modelIndex, trajectoryBaseIndex, jmolData, properties, auxiliaryInfo){ +this.ms = modelSet; +this.dataSourceFrame = this.modelIndex = modelIndex; +this.isTrajectory = (trajectoryBaseIndex >= 0); +this.trajectoryBaseIndex = (this.isTrajectory ? trajectoryBaseIndex : modelIndex); +if (auxiliaryInfo == null) { +auxiliaryInfo = new java.util.Hashtable(); +}this.auxiliaryInfo = auxiliaryInfo; +var bc = (auxiliaryInfo.get("biosymmetryCount")); +if (bc != null) { +this.biosymmetryCount = bc.intValue(); +this.biosymmetry = auxiliaryInfo.get("biosymmetry"); +}var fname = auxiliaryInfo.get("fileName"); +if (fname != null) auxiliaryInfo.put("fileName", JV.FileManager.stripTypePrefix(fname)); +this.properties = properties; +if (jmolData == null) { +this.jmolFrameType = "modelSet"; +} else { +this.jmolData = jmolData; +this.isJmolDataFrame = true; +auxiliaryInfo.put("jmolData", jmolData); +auxiliaryInfo.put("title", jmolData); +this.jmolFrameType = (jmolData.indexOf("ramachandran") >= 0 ? "ramachandran" : jmolData.indexOf("quaternion") >= 0 ? "quaternion" : "data"); +}return this; +}, "JM.ModelSet,~N,~N,~S,java.util.Properties,java.util.Map"); +Clazz_defineMethod(c$, "getTrueAtomCount", +function(){ +return JU.BSUtil.andNot(this.bsAtoms, this.bsAtomsDeleted).cardinality(); +}); +Clazz_defineMethod(c$, "isContainedIn", +function(bs){ +if (this.bsCheck == null) this.bsCheck = new JU.BS(); +this.bsCheck.clearAll(); +this.bsCheck.or(bs); +var bsa = JU.BSUtil.andNot(this.bsAtoms, this.bsAtomsDeleted); +this.bsCheck.and(bsa); +return this.bsCheck.equals(bsa); +}, "JU.BS"); +Clazz_defineMethod(c$, "resetBoundCount", +function(){ +this.bondCount = -1; +}); +Clazz_defineMethod(c$, "getBondCount", +function(){ +if (this.bondCount >= 0) return this.bondCount; +var bonds = this.ms.bo; +this.bondCount = 0; +for (var i = this.ms.bondCount; --i >= 0; ) if (bonds[i].atom1.mi == this.modelIndex) this.bondCount++; + +return this.bondCount; +}); +Clazz_defineMethod(c$, "getChainCount", +function(countWater){ +if (this.chainCount > 1 && !countWater) for (var i = 0; i < this.chainCount; i++) if (this.chains[i].chainID == 0) return this.chainCount - 1; + +return this.chainCount; +}, "~B"); +Clazz_defineMethod(c$, "calcSelectedGroupsCount", +function(bsSelected){ +for (var i = this.chainCount; --i >= 0; ) this.chains[i].calcSelectedGroupsCount(bsSelected); + +}, "JU.BS"); +Clazz_defineMethod(c$, "getGroupCount", +function(){ +if (this.groupCount < 0) { +this.groupCount = 0; +for (var i = this.chainCount; --i >= 0; ) this.groupCount += this.chains[i].groupCount; + +}return this.groupCount; +}); +Clazz_defineMethod(c$, "getChainAt", +function(i){ +return (i < this.chainCount ? this.chains[i] : null); +}, "~N"); +Clazz_defineMethod(c$, "getChain", +function(chainID){ +for (var i = this.chainCount; --i >= 0; ) { +var chain = this.chains[i]; +if (chain.chainID == chainID) return chain; +} +return null; +}, "~N"); +Clazz_defineMethod(c$, "resetDSSR", +function(totally){ +this.dssrCache = null; +if (totally) this.auxiliaryInfo.remove("dssr"); +}, "~B"); +Clazz_defineMethod(c$, "fixIndices", +function(modelIndex, nAtomsDeleted, bsDeleted){ +this.fixIndicesM(modelIndex, nAtomsDeleted, bsDeleted); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "fixIndicesM", +function(modelIndex, nAtomsDeleted, bsDeleted){ +if (this.dataSourceFrame > modelIndex) this.dataSourceFrame--; +if (this.trajectoryBaseIndex > modelIndex) this.trajectoryBaseIndex--; +this.firstAtomIndex -= nAtomsDeleted; +for (var i = 0; i < this.chainCount; i++) this.chains[i].fixIndices(nAtomsDeleted, bsDeleted); + +JU.BSUtil.deleteBits(this.bsAtoms, bsDeleted); +JU.BSUtil.deleteBits(this.bsAtomsDeleted, bsDeleted); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "freeze", +function(){ +this.freezeM(); +return false; +}); +Clazz_defineMethod(c$, "freezeM", +function(){ +for (var i = 0; i < this.chainCount; i++) if (this.chains[i].groupCount == 0) { +for (var j = i + 1; j < this.chainCount; j++) this.chains[j - 1] = this.chains[j]; + +this.chainCount--; +} +this.chains = JU.AU.arrayCopyObject(this.chains, this.chainCount); +this.groupCount = -1; +this.getGroupCount(); +for (var i = 0; i < this.chainCount; ++i) this.chains[i].groups = JU.AU.arrayCopyObject(this.chains[i].groups, this.chains[i].groupCount); + +}); +Clazz_defineMethod(c$, "setSimpleCage", +function(ucell){ +if ((this.simpleCage = ucell) != null) { +this.auxiliaryInfo.put("unitCellParams", ucell.getUnitCellParams()); +}}, "J.api.SymmetryInterface"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["java.util.Hashtable", "JU.BS"], "JM.ModelLoader", ["java.util.Arrays", "JU.AU", "$.Lst", "$.P3", "$.PT", "$.SB", "$.V3", "J.api.Interface", "JM.AtomCollection", "$.Chain", "$.Group", "$.Model", "$.ModelSet", "JS.T", "JU.BSUtil", "$.Elements", "$.JmolMolecule", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.ms = null; +this.modelSet0 = null; +this.merging = false; +this.appendNew = false; +this.jmolData = null; +this.group3Lists = null; +this.group3Counts = null; +this.specialAtomIndexes = null; +this.someModelsHaveUnitcells = false; +this.someModelsAreModulated = false; +this.is2D = false; +this.isMOL2D = false; +this.isMutate = false; +this.isTrajectory = false; +this.isPyMOLsession = false; +this.doMinimize = false; +this.doAddPDBHydrogens = false; +this.fileHeader = null; +this.jbr = null; +this.groups = null; +this.groupCount = 0; +this.modulationTUV = null; +this.noH = false; +this.htAtomMap = null; +this.chainOf = null; +this.group3Of = null; +this.seqcodes = null; +this.firstAtomIndexes = null; +this.iModel = 0; +this.model = null; +this.currentChainID = 0; +this.isNewChain = false; +this.currentChain = null; +this.currentGroupSequenceNumber = 0; +this.currentGroupInsertionCode = '\0'; +this.currentGroup3 = null; +this.nullGroup = null; +this.baseModelIndex = 0; +this.baseModelCount = 0; +this.baseAtomIndex = 0; +this.baseGroupIndex = 0; +this.baseTrajectoryCount = 0; +this.adapterModelCount = 0; +this.adapterTrajectoryCount = 0; +this.noAutoBond = false; +this.modulationOn = false; +this.htGroup1 = null; +this.appendToModelIndex = null; +this.$mergeGroups = null; +this.iChain = 0; +this.vStereo = null; +this.lastModel = -1; +this.structuresDefinedInFile = null; +this.stereodir = 1; +Clazz_instantialize(this, arguments);}, JM, "ModelLoader", null); +Clazz_prepareFields (c$, function(){ +this.htAtomMap = new java.util.Hashtable(); +this.structuresDefinedInFile = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(vwr, modelSetName, loadScript, asc, modelSet0, bsNew){ +this.vwr = vwr; +this.ms = new JM.ModelSet(vwr, modelSetName); +var adapter = vwr.getModelAdapter(); +this.modelSet0 = modelSet0; +this.merging = (modelSet0 != null && (modelSet0.ac > 0 || modelSet0.vwr.getOperativeSymmetry() != null)); +if (this.merging) { +this.ms.canSkipLoad = false; +} else { +vwr.resetShapes(false); +}this.ms.preserveState = vwr.getPreserveState(); +this.ms.showRebondTimes = vwr.getBoolean(603979934); +if (bsNew == null) { +this.initializeInfo(modelSetName, null); +this.createModelSet(null, null, null); +vwr.setStringProperty("_fileType", ""); +return; +}if (!this.ms.preserveState) this.ms.canSkipLoad = false; +var info = adapter.getAtomSetCollectionAuxiliaryInfo(asc); +info.put("loadScript", loadScript); +this.initializeInfo(adapter.getFileTypeName(asc).toLowerCase().intern(), info); +this.createModelSet(adapter, asc, bsNew); +if (info.get("lowPrecision") != null) { +vwr.setBooleanPropertyTok("doublePrecision", 603979831, false); +}if (this.jbr != null) this.jbr.setLoader(null); +this.jbr = null; +}, "JV.Viewer,~S,JU.SB,~O,JM.ModelSet,JU.BS"); +Clazz_defineMethod(c$, "initializeInfo", +function(name, info){ +this.ms.g3d = this.vwr.gdata; +this.ms.modelSetTypeName = name; +this.ms.isXYZ = (name === "xyz"); +this.ms.msInfo = info; +this.ms.modelSetProperties = this.ms.getInfoM("properties"); +this.ms.haveBioModels = this.ms.getMSInfoB(JV.JC.getBoolName(4)); +this.isMutate = this.ms.getMSInfoB("isMutate"); +if (this.ms.haveBioModels) this.jbr = this.vwr.getJBR().setLoader(this); +this.jmolData = (this.adapterModelCount == 0 ? this.ms.getInfoM("jmolData") : null); +this.fileHeader = this.ms.getInfoM("fileHeader"); +var steps = this.ms.getInfoM("trajectorySteps"); +this.isTrajectory = (steps != null); +if (this.isTrajectory) this.ms.trajectory = this.newTrajectory(this.ms, steps); +this.isPyMOLsession = this.ms.getMSInfoB("isPyMOL"); +this.doAddPDBHydrogens = (this.jbr != null && !this.isTrajectory && !this.isPyMOLsession && !this.ms.getMSInfoB("pdbNoHydrogens") && (this.ms.getMSInfoB("pdbAddHydrogens") || this.vwr.getBoolean(603979894))); +if (info != null) { +info.remove("pdbNoHydrogens"); +info.remove("pdbAddHydrogens"); +info.remove("trajectorySteps"); +if (this.isTrajectory) this.ms.vibrationSteps = info.remove("vibrationSteps"); +if (info.containsKey("highPrecision")) { +this.vwr.setBooleanProperty("legacyJavaFloat", true); +}}this.htGroup1 = this.ms.getInfoM("htGroup1"); +var mod = this.ms.getInfoM("modulationOn"); +if (mod != null) { +this.modulationOn = true; +this.modulationTUV = (mod === Boolean.TRUE ? null : mod); +}this.noAutoBond = this.ms.getMSInfoB("noAutoBond"); +this.noH = this.ms.getMSInfoB("noHydrogen"); +this.is2D = this.ms.getMSInfoB("is2D"); +this.doMinimize = (this.is2D && !this.noH || this.ms.getMSInfoB("minimize3D")) && this.ms.getMSInfoB("doMinimize"); +this.adapterTrajectoryCount = (this.isTrajectory ? this.ms.trajectory.steps.size() : 0); +this.ms.someModelsHaveSymmetry = this.ms.getMSInfoB(JV.JC.getBoolName(1)); +this.someModelsHaveUnitcells = this.ms.getMSInfoB(JV.JC.getBoolName(2)); +this.someModelsAreModulated = this.ms.getMSInfoB(JV.JC.getBoolName(9)); +this.ms.someModelsHaveFractionalCoordinates = this.ms.getMSInfoB(JV.JC.getBoolName(1)); +if (this.merging) { +this.ms.haveBioModels = new Boolean (this.ms.haveBioModels | this.modelSet0.haveBioModels).valueOf(); +this.ms.bioModelset = this.modelSet0.bioModelset; +if (this.ms.bioModelset != null) this.ms.bioModelset.set(this.vwr, this.ms); +this.ms.someModelsHaveSymmetry = new Boolean (this.ms.someModelsHaveSymmetry | this.modelSet0.getMSInfoB(JV.JC.getBoolName(1))).valueOf(); +this.someModelsHaveUnitcells = new Boolean (this.someModelsHaveUnitcells | this.modelSet0.getMSInfoB(JV.JC.getBoolName(2))).valueOf(); +this.ms.someModelsHaveFractionalCoordinates = new Boolean (this.ms.someModelsHaveFractionalCoordinates | this.modelSet0.getMSInfoB(JV.JC.getBoolName(0))).valueOf(); +this.ms.someModelsHaveAromaticBonds = new Boolean (this.ms.someModelsHaveAromaticBonds | this.modelSet0.someModelsHaveAromaticBonds).valueOf(); +this.ms.msInfo.put(JV.JC.getBoolName(1), Boolean.$valueOf(this.ms.someModelsHaveSymmetry)); +this.ms.msInfo.put(JV.JC.getBoolName(2), Boolean.$valueOf(this.someModelsHaveUnitcells)); +this.ms.msInfo.put(JV.JC.getBoolName(0), Boolean.$valueOf(this.ms.someModelsHaveFractionalCoordinates)); +this.ms.msInfo.put(JV.JC.getBoolName(8), Boolean.$valueOf(this.ms.someModelsHaveAromaticBonds)); +}}, "~S,java.util.Map"); +Clazz_defineMethod(c$, "newTrajectory", +function(ms, steps){ +return (J.api.Interface.getInterface("JM.Trajectory", this.vwr, "load")).set(this.vwr, ms, steps); +}, "JM.ModelSet,JU.Lst"); +Clazz_defineMethod(c$, "getGroup3", +function(iGroup){ +return (iGroup >= this.group3Of.length ? null : this.group3Of[iGroup]); +}, "~N"); +Clazz_defineMethod(c$, "getFirstAtomIndex", +function(iGroup){ +return this.firstAtomIndexes[iGroup]; +}, "~N"); +Clazz_defineMethod(c$, "getAtomCount", +function(){ +return this.ms.ac; +}); +Clazz_defineMethod(c$, "createModelSet", +function(adapter, asc, bs2D){ +var nAtoms = (adapter == null ? 0 : adapter.getAtomCount(asc, -1)); +if (nAtoms > 0) JU.Logger.info("reading " + nAtoms + " atoms"); +this.adapterModelCount = (adapter == null ? 1 : adapter.getAtomSetCount(asc)); +this.appendToModelIndex = (this.ms.msInfo == null ? null : (this.ms.msInfo.get("appendToModelIndex"))); +this.appendNew = !this.isMutate && (!this.merging || adapter == null || this.adapterModelCount > 1 || this.isTrajectory || this.vwr.getBoolean(603979792) && this.appendToModelIndex == null); +this.htAtomMap.clear(); +this.chainOf = new Array(32); +this.group3Of = new Array(32); +this.seqcodes = Clazz_newIntArray (32, 0); +this.firstAtomIndexes = Clazz_newIntArray (32, 0); +this.currentChainID = 2147483647; +this.currentChain = null; +this.currentGroupInsertionCode = '\uFFFF'; +this.currentGroup3 = "xxxxx"; +this.iModel = -1; +this.model = null; +if (this.merging) this.mergeTrajAndVib(this.modelSet0, this.ms); +this.initializeAtomBondModelCounts(nAtoms); +if (!this.noH && bs2D != null && (this.doMinimize || this.is2D)) { +bs2D.setBits(this.baseAtomIndex, this.baseAtomIndex + adapter.getAtomCount(asc, 0)); +}if (adapter == null) { +this.setModelNameNumberProperties(0, -1, "", 1, null, null, null); +} else { +if (this.adapterModelCount > 0) { +JU.Logger.info("ModelSet: haveSymmetry:" + this.ms.someModelsHaveSymmetry + " haveUnitcells:" + this.someModelsHaveUnitcells + " haveFractionalCoord:" + this.ms.someModelsHaveFractionalCoordinates); +JU.Logger.info(this.adapterModelCount + " model" + (this.ms.mc == 1 ? "" : "s") + " in this collection. Use getProperty \"modelInfo\" or" + " getProperty \"auxiliaryInfo\" to inspect them."); +}var q = this.ms.getInfoM("defaultOrientationQuaternion"); +if (q != null) { +JU.Logger.info("defaultOrientationQuaternion = " + q); +JU.Logger.info("Use \"set autoLoadOrientation TRUE\" before loading or \"restore orientation DEFAULT\" after loading to view this orientation."); +}this.iterateOverAllNewModels(adapter, asc); +var iterBond = adapter.getBondIterator(asc); +var haveBonds = (iterBond != null); +this.iterateOverAllNewAtoms(adapter, asc, haveBonds); +var mad = this.vwr.getMadBond(); +if (haveBonds) { +this.ms.defaultCovalentMad = (this.jmolData == null ? mad : 0); +this.iterateOverAllNewBonds(iterBond); +}this.ms.defaultCovalentMad = mad; +if (this.merging && !this.appendNew) { +var info = adapter.getAtomSetAuxiliaryInfo(asc, 0); +this.ms.setInfo(this.baseModelIndex, "initialAtomCount", info.get("initialAtomCount")); +this.ms.setInfo(this.baseModelIndex, "initialBondCount", info.get("initialBondCount")); +}this.initializeUnitCellAndSymmetry(); +this.initializeBonding(); +}this.finalizeGroupBuild(); +if (this.is2D && this.doMinimize) { +this.setupMinimization(); +}if (this.doAddPDBHydrogens) this.jbr.finalizeHydrogens(); +if (adapter != null) { +this.ms.calculatePolymers(this.groups, this.groupCount, this.baseGroupIndex, null); +if (this.jbr != null) this.jbr.iterateOverAllNewStructures(adapter, asc); +}this.setDefaultRendering(this.vwr.getInt(553648170)); +var rd = this.vwr.rd; +var ac = this.ms.ac; +var atoms = this.ms.at; +for (var i = this.baseAtomIndex; i < ac; i++) atoms[i].setMadAtom(this.vwr, rd); + +var models = this.ms.am; +for (var i = models[this.baseModelIndex].firstAtomIndex; i < ac; i++) if (atoms[i] != null) models[atoms[i].mi].bsAtoms.set(i); + +this.freeze(); +this.finalizeShapes(); +this.vwr.setModelSet(this.ms); +this.setAtomProperties(); +if (adapter != null) adapter.finish(asc); +if (this.modelSet0 != null) { +this.modelSet0.releaseModelSet(); +}this.modelSet0 = null; +}, "J.api.JmolAdapter,~O,JU.BS"); +Clazz_defineMethod(c$, "mergeTrajAndVib", +function(oldSet, newSet){ +this.baseModelCount = oldSet.mc; +this.baseTrajectoryCount = 0; +if (oldSet.trajectory == null) { +if (this.isTrajectory) this.newTrajectory(oldSet, new JU.Lst()); +}if (oldSet.trajectory == null || oldSet.mc == 0) return; +this.baseTrajectoryCount = oldSet.mc; +var n = oldSet.trajectory.steps.size(); +for (var i = n; i < this.baseTrajectoryCount; i++) oldSet.trajectory.steps.addLast(null); + +if (this.isTrajectory) { +if (oldSet.vibrationSteps == null) { +oldSet.vibrationSteps = new JU.Lst(); +for (var i = n; --i >= 0; ) oldSet.vibrationSteps.addLast(null); + +}n = newSet.trajectory.steps.size(); +for (var i = 0; i < n; i++) { +oldSet.trajectory.steps.addLast(newSet.trajectory.steps.get(i)); +oldSet.vibrationSteps.addLast(newSet.vibrationSteps == null ? null : newSet.vibrationSteps.get(i)); +} +} else { +newSet.trajectory = this.newTrajectory(newSet, null); +}newSet.vibrationSteps = oldSet.vibrationSteps; +newSet.trajectory.steps = oldSet.trajectory.steps; +oldSet.trajectory = null; +}, "JM.ModelSet,JM.ModelSet"); +Clazz_defineMethod(c$, "setDefaultRendering", +function(maxAtoms){ +if (this.isPyMOLsession) return; +var sb = new JU.SB(); +var modelCount = this.ms.mc; +var models = this.ms.am; +for (var i = this.baseModelIndex; i < modelCount; i++) if (models[i].isBioModel) (models[i]).getDefaultLargePDBRendering(sb, maxAtoms); + +if (sb.length() == 0) return; +sb.append("select *;"); +var script = this.ms.getInfoM("jmolscript"); +if (script == null) script = ""; +sb.append(script); +this.ms.msInfo.put("jmolscript", sb.toString()); +}, "~N"); +Clazz_defineMethod(c$, "setAtomProperties", +function(){ +var modelCount = this.ms.mc; +for (var i = this.baseModelIndex; i < modelCount; i++) { +var atomProperties = this.ms.getInfo(i, "atomProperties"); +if (this.jmolData != null) this.addJmolDataProperties(this.ms.am[i], this.ms.getInfo(i, "jmolDataProperties")); +var groupList = this.ms.getInfo(i, "groupPropertyList"); +if (this.ms.am[i].isBioModel && this.ms.getInfo(i, "dssr") != null) this.vwr.getAnnotationParser(true).setGroup1(this.ms, i); +if (atomProperties == null) continue; +for (var entry, $entry = atomProperties.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var value = entry.getValue(); +var bs = this.ms.getModelAtomBitSetIncludingDeleted(i, true); +if (this.doAddPDBHydrogens) { +var isGroup = (groupList != null && JU.PT.isOneOf(key, groupList)); +value = this.jbr.fixPropertyValue(bs, value, isGroup); +}key = "property_" + key.toLowerCase(); +JU.Logger.info("creating " + key + " for model " + this.ms.getModelName(i)); +this.vwr.setData(key, Clazz_newArray(-1, [key, value, bs, Integer.$valueOf(-1), Boolean.FALSE, entry]), this.ms.ac, 0, 0, 2147483647, 0); +} +this.ms.setInfo(i, "atomProperties", null); +} +}); +Clazz_defineMethod(c$, "initializeAtomBondModelCounts", +function(nAtoms){ +var trajectoryCount = this.adapterTrajectoryCount; +if (this.merging) { +if (this.appendNew) { +this.baseModelIndex = this.baseModelCount; +this.ms.mc = this.baseModelCount + this.adapterModelCount; +} else { +this.baseModelIndex = (this.appendToModelIndex == null ? this.vwr.am.cmi : this.appendToModelIndex.intValue()); +if (this.baseModelIndex < 0 || this.baseModelIndex >= this.baseModelCount) this.baseModelIndex = this.baseModelCount - 1; +this.ms.mc = this.baseModelCount; +}this.ms.ac = this.baseAtomIndex = this.modelSet0.ac; +this.ms.bondCount = this.modelSet0.bondCount; +this.$mergeGroups = this.modelSet0.getGroups(); +this.groupCount = this.baseGroupIndex = this.$mergeGroups.length; +this.ms.mergeModelArrays(this.modelSet0); +this.ms.growAtomArrays(this.ms.ac + nAtoms); +} else { +this.ms.mc = this.adapterModelCount; +this.ms.ac = 0; +this.ms.bondCount = 0; +this.ms.at = new Array(nAtoms); +this.ms.bo = new Array(250 + nAtoms); +}if (this.doAddPDBHydrogens) this.jbr.initializeHydrogenAddition(); +if (trajectoryCount > 1) this.ms.mc += trajectoryCount - 1; +this.ms.am = JU.AU.arrayCopyObject(this.ms.am, this.ms.mc); +this.ms.modelFileNumbers = JU.AU.arrayCopyI(this.ms.modelFileNumbers, this.ms.mc); +this.ms.modelNumbers = JU.AU.arrayCopyI(this.ms.modelNumbers, this.ms.mc); +this.ms.modelNumbersForAtomLabel = JU.AU.arrayCopyS(this.ms.modelNumbersForAtomLabel, this.ms.mc); +this.ms.modelNames = JU.AU.arrayCopyS(this.ms.modelNames, this.ms.mc); +this.ms.frameTitles = JU.AU.arrayCopyS(this.ms.frameTitles, this.ms.mc); +if (this.merging) for (var i = 0; i < this.modelSet0.mc; i++) (this.ms.am[i] = this.modelSet0.am[i]).ms = this.ms; + +}, "~N"); +Clazz_defineMethod(c$, "mergeGroups", +function(){ +var info = this.modelSet0.getModelSetAuxiliaryInfo(null); +var mergeGroup3Lists = info.get("group3Lists"); +var mergeGroup3Counts = info.get("group3Counts"); +var nLists = (mergeGroup3Lists == null ? 0 : mergeGroup3Lists.length); +if (mergeGroup3Lists != null) { +for (var i = 0; i < this.baseModelCount; i++) { +if (i < nLists) { +this.group3Lists[i + 1] = mergeGroup3Lists[i + 1]; +this.group3Counts[i + 1] = mergeGroup3Counts[i + 1]; +}this.structuresDefinedInFile.set(i); +} +this.group3Lists[0] = mergeGroup3Lists[0]; +this.group3Counts[0] = mergeGroup3Counts[0]; +}if (!this.appendNew && this.ms.haveBioModels) this.structuresDefinedInFile.clear(this.baseModelIndex); +}); +Clazz_defineMethod(c$, "iterateOverAllNewModels", +function(adapter, asc){ +this.group3Lists = new Array(this.ms.mc + 1); +this.group3Counts = JU.AU.newInt2(this.ms.mc + 1); +this.structuresDefinedInFile = new JU.BS(); +if (this.merging) this.mergeGroups(); +var iTrajectory = (this.isTrajectory ? this.baseTrajectoryCount : -1); +var ipt = this.baseModelIndex; +for (var i = 0; i < this.adapterModelCount; ++i, ++ipt) { +var modelNumber = adapter.getAtomSetNumber(asc, i); +var modelName = adapter.getAtomSetName(asc, i); +var modelAuxiliaryInfo = adapter.getAtomSetAuxiliaryInfo(asc, i); +if (modelAuxiliaryInfo.containsKey("modelID")) modelAuxiliaryInfo.put("modelID0", modelAuxiliaryInfo.get("modelID")); +var modelProperties = modelAuxiliaryInfo.get("modelProperties"); +if (!this.merging || this.appendNew) { +var ftype = modelAuxiliaryInfo.get("fileType"); +this.vwr.setStringProperty("_fileType", ftype); +this.vwr.fm.setFileType(ftype); +}if (modelName == null) modelName = (this.jmolData != null && this.jmolData.indexOf(";") > 2 ? this.jmolData.substring(this.jmolData.indexOf(":") + 2, this.jmolData.indexOf(";")) : this.appendNew ? "" + (modelNumber % 1000000) : ""); +this.setModelNameNumberProperties(ipt, iTrajectory, modelName, modelNumber, modelProperties, modelAuxiliaryInfo, this.jmolData); +} +var m = this.ms.am[this.appendToModelIndex == null ? this.baseModelIndex : this.ms.mc - 1]; +this.vwr.setSmilesString(this.ms.msInfo.get("smilesString")); +var loadState = this.ms.msInfo.remove("loadState"); +var loadScript = this.ms.msInfo.remove("loadScript"); +if (loadScript.indexOf("Viewer.AddHydrogens") < 0 || !m.isModelKit) { +var lines = JU.PT.split(loadState, "\n"); +var sb = new JU.SB(); +for (var i = 0; i < lines.length; i++) { +var pt = m.loadState.indexOf(lines[i]); +if (pt < 0 || pt != m.loadState.lastIndexOf(lines[i])) sb.append(lines[i]).appendC('\n'); +} +m.loadState += m.loadScript.toString() + sb.toString(); +m.loadScript = new JU.SB(); +if (loadScript.indexOf("load append ") >= 0 || loadScript.indexOf("data \"append ") >= 0) { +loadScript.insert(0, ";var anew = appendNew;"); +loadScript.append(";set appendNew anew"); +}m.loadScript.append(" ").appendSB(loadScript).append(";\n"); +}if (this.isTrajectory) { +var n = (this.ms.mc - ipt + 1); +JU.Logger.info(n + " trajectory steps read"); +this.ms.setInfo(this.baseModelCount, "trajectoryStepCount", Integer.$valueOf(n)); +for (var ia = this.adapterModelCount, i = ipt; i < this.ms.mc; i++, ia++) { +this.ms.am[i] = this.ms.am[this.baseModelCount]; +this.ms.modelNumbers[i] = adapter.getAtomSetNumber(asc, ia); +this.ms.modelNames[i] = adapter.getAtomSetName(asc, ia); +this.structuresDefinedInFile.set(i); +} +}this.finalizeModels(this.baseModelCount); +}, "J.api.JmolAdapter,~O"); +Clazz_defineMethod(c$, "setModelNameNumberProperties", +function(modelIndex, trajectoryBaseIndex, modelName, modelNumber, modelProperties, modelAuxiliaryInfo, jmolData){ +if (this.appendNew) { +var modelIsPDB = (modelAuxiliaryInfo != null && Boolean.TRUE === modelAuxiliaryInfo.get(JV.JC.getBoolName(4))); +this.ms.am[modelIndex] = (modelIsPDB ? this.jbr.getBioModel(modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo) : new JM.Model().set(this.ms, modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo)); +this.ms.modelNumbers[modelIndex] = modelNumber; +this.ms.modelNames[modelIndex] = modelName; +if (modelIsPDB) this.jbr.setGroupLists(modelIndex); +} else { +var atomInfo = modelAuxiliaryInfo.get("PDB_CONECT_firstAtom_count_max"); +if (atomInfo != null) this.ms.setInfo(modelIndex, "PDB_CONECT_firstAtom_count_max", atomInfo); +}var models = this.ms.am; +var atoms = this.ms.at; +models[modelIndex].bsAtoms.set(atoms.length + 1); +models[modelIndex].bsAtoms.clear(atoms.length + 1); +var codes = this.ms.getInfo(modelIndex, "altLocs"); +models[modelIndex].altLocCount = (codes == null ? 0 : codes.length); +if (codes != null) { +var altlocs = codes.toCharArray(); +java.util.Arrays.sort(altlocs); +codes = String.valueOf(altlocs); +this.ms.setInfo(modelIndex, "altLocs", codes); +}codes = this.ms.getInfo(modelIndex, "insertionCodes"); +models[modelIndex].insertionCount = (codes == null ? 0 : codes.length); +var isModelKit = (this.ms.modelSetName != null && this.ms.modelSetName.startsWith("Jmol Model Kit") || modelName.startsWith("Jmol Model Kit") || "Jme".equals(this.ms.getInfo(modelIndex, "fileType")) && this.is2D); +models[modelIndex].isModelKit = isModelKit; +}, "~N,~N,~S,~N,java.util.Properties,java.util.Map,~S"); +Clazz_defineMethod(c$, "finalizeModels", +function(baseModelCount){ +var modelCount = this.ms.mc; +if (modelCount == baseModelCount) return; +var sNum; +var modelnumber = 0; +var lastfilenumber = -1; +var modelNumbers = this.ms.modelNumbers; +var modelNames = this.ms.modelNames; +if (this.isTrajectory) for (var i = baseModelCount; ++i < this.ms.mc; ) modelNumbers[i] = modelNumbers[i - 1] + 1; + +if (baseModelCount > 0) { +if (modelNumbers[0] < 1000000) { +for (var i = 0; i < baseModelCount; i++) { +if (modelNames[i].length == 0) modelNames[i] = "" + modelNumbers[i]; +modelNumbers[i] += 1000000; +this.ms.modelNumbersForAtomLabel[i] = "1." + (i + 1); +} +}var filenumber = modelNumbers[baseModelCount - 1]; +filenumber -= filenumber % 1000000; +if (modelNumbers[baseModelCount] < 1000000) filenumber += 1000000; +for (var i = baseModelCount; i < modelCount; i++) modelNumbers[i] += filenumber; + +}var models = this.ms.am; +for (var i = baseModelCount; i < modelCount; ++i) { +this.ms.setInfo(i, "fileType", this.ms.modelSetTypeName); +if (this.fileHeader != null) this.ms.setInfo(i, "fileHeader", this.fileHeader); +var filenumber = Clazz_doubleToInt(modelNumbers[i] / 1000000); +if (filenumber != lastfilenumber) { +modelnumber = 0; +lastfilenumber = filenumber; +}modelnumber++; +if (filenumber == 0) { +sNum = "" + this.ms.getModelNumber(i); +filenumber = 1; +} else { +sNum = filenumber + "." + modelnumber; +}this.ms.modelNumbersForAtomLabel[i] = sNum; +models[i].fileIndex = filenumber - 1; +this.ms.modelFileNumbers[i] = filenumber * 1000000 + modelnumber; +if (modelNames[i] == null || modelNames[i].length == 0) modelNames[i] = sNum; +} +if (this.merging) for (var i = 0; i < baseModelCount; i++) models[i].ms = this.ms; + +for (var i = 0; i < modelCount; i++) { +this.ms.setInfo(i, "modelName", modelNames[i]); +this.ms.setInfo(i, "modelNumber", Integer.$valueOf(modelNumbers[i] % 1000000)); +this.ms.setInfo(i, "modelFileNumber", Integer.$valueOf(this.ms.modelFileNumbers[i])); +this.ms.setInfo(i, "modelNumberDotted", this.ms.getModelNumberDotted(i)); +var codes = this.ms.getInfo(i, "altLocs"); +if (codes != null) { +JU.Logger.info("model " + this.ms.getModelNumberDotted(i) + " alternative locations: " + codes); +}} +}, "~N"); +Clazz_defineMethod(c$, "iterateOverAllNewAtoms", +function(adapter, asc, haveBonds){ +var iLast = -1; +var siteBase = 0; +var isPdbThisModel = false; +var addH = false; +var isLegacyHAddition = false; +var iterAtom = adapter.getAtomIterator(asc); +var nAtoms = adapter.getAtomCount(asc, -1); +this.ms.setCapacity(adapter.getAtomCount(asc, -1)); +var nRead = 0; +var models = this.ms.am; +if (this.ms.mc > 0) this.nullGroup = new JM.Group().setGroup( new JM.Chain(this.ms.am[this.baseModelIndex], 32, 0), "", 0, -1, -1); +while (iterAtom.hasNext()) { +nRead++; +var modelIndex = iterAtom.getAtomSetIndex() + this.baseModelIndex; +if (modelIndex != iLast) { +this.iChain = 0; +this.iModel = modelIndex; +this.model = models[modelIndex]; +var mbs = this.model.bsAtoms; +if (this.merging && !this.appendNew && this.vwr.getOperativeSymmetry() != null) { +siteBase = this.getAtomSiteBase(mbs); +}this.currentChainID = 2147483647; +this.isNewChain = true; +mbs.set(this.ms.ac + nAtoms); +mbs.clearAll(); +this.model.isOrderly = (this.appendToModelIndex == null); +isPdbThisModel = this.model.isBioModel; +iLast = modelIndex; +addH = isPdbThisModel && this.doAddPDBHydrogens; +if (this.jbr != null) this.jbr.setHaveHsAlready(false); +}var group3 = iterAtom.getGroup3(); +var chainID = iterAtom.getChainID(); +this.checkNewGroup(adapter, chainID, group3, iterAtom.getSequenceNumber(), iterAtom.getInsertionCode(), addH, isLegacyHAddition); +var isotope = iterAtom.getElementNumber(); +if (addH && JU.Elements.getElementNumber(isotope) == 1) this.jbr.setHaveHsAlready(true); +var name = iterAtom.getAtomName(); +var charge = (addH ? this.getPdbCharge(group3, name) : iterAtom.getFormalCharge()); +var atom = this.addAtom(isPdbThisModel, iterAtom.getSymmetry(), iterAtom.getAtomSite() + siteBase, isotope, name, charge, iterAtom.getPartialCharge(), iterAtom.getTensors(), iterAtom.getOccupancy(), iterAtom.getBfactor(), iterAtom.getXYZ(), iterAtom.getIsHetero(), iterAtom.getSerial(), iterAtom.getSeqID(), group3, iterAtom.getVib(), iterAtom.getAltLoc(), iterAtom.getRadius(), iterAtom.getBondRadius()); +if (haveBonds) this.htAtomMap.put(iterAtom.getUniqueID(), atom); +} +if (this.groupCount > 0 && addH) { +this.jbr.addImplicitHydrogenAtoms(adapter, this.groupCount - 1, this.isNewChain && !isLegacyHAddition ? 1 : 0); +}iLast = -1; +var vdwtypeLast = null; +var atoms = this.ms.at; +models[0].firstAtomIndex = 0; +for (var i = 0; i < this.ms.ac; i++) { +if (atoms[i] != null && atoms[i].mi > iLast) { +iLast = atoms[i].mi; +var m = models[iLast]; +m.firstAtomIndex = i; +m.isOrderly = (m.act == m.bsAtoms.length() - i); +var vdwtype = this.ms.getDefaultVdwType(iLast); +if (vdwtype !== vdwtypeLast) { +JU.Logger.info("Default Van der Waals type for model" + " set to " + vdwtype.getVdwLabel()); +vdwtypeLast = vdwtype; +}}} +JU.Logger.info(nRead + " atoms created"); +}, "J.api.JmolAdapter,~O,~B"); +Clazz_defineMethod(c$, "getAtomSiteBase", +function(mbs){ +var base = 0; +for (var i = mbs.nextSetBit(0); i >= 0; i = mbs.nextSetBit(i + 1)) { +var a = this.ms.at[i]; +if (!JM.AtomCollection.isDeleted(a) && a.atomSite > base) { +base = a.atomSite; +}} +return base; +}, "JU.BS"); +Clazz_defineMethod(c$, "addJmolDataProperties", +function(m, jmolDataProperties){ +if (jmolDataProperties == null) return; +var bs = m.bsAtoms; +var nAtoms = bs.cardinality(); +for (var e, $e = jmolDataProperties.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +var data = e.getValue(); +if (data.length != nAtoms) return; +var tok = (key.startsWith("property_") ? 1715472409 : JS.T.getTokFromName(key)); +switch (tok) { +default: +if (JS.T.tokAttr(tok, 2048)) { +this.vwr.setAtomProperty(bs, tok, 0, 0, null, data, null); +break; +}case 1111492629: +case 1111492630: +case 1111492631: +key = "property_" + key; +tok = 1715472409; +case 1715472409: +this.vwr.setData(key, Clazz_newArray(-1, [key, data, bs, Integer.$valueOf(1)]), 0, 0, 0, 0, 0); +} +} +}, "JM.Model,java.util.Map"); +Clazz_defineMethod(c$, "getPdbCharge", +function(group3, name){ +return (group3.equals("ARG") && name.equals("NH1") || group3.equals("LYS") && name.equals("NZ") || group3.equals("HIS") && name.equals("ND1") ? 1 : 0); +}, "~S,~S"); +Clazz_defineMethod(c$, "addAtom", +function(isPDB, atomSymmetry, atomSite, atomicAndIsotopeNumber, atomName, formalCharge, partialCharge, tensors, occupancy, bfactor, xyz, isHetero, atomSerial, atomSeqID, group3, vib, alternateLocationID, radius, bondRadius){ +var specialAtomID = 0; +var atomType = null; +if (atomName != null) { +var i; +if ((i = atomName.indexOf('\0')) >= 0) { +atomType = atomName.substring(i + 1); +atomName = atomName.substring(0, i); +}if (isPDB) { +if (atomName.indexOf('*') >= 0) atomName = atomName.$replace('*', '\''); +specialAtomID = this.vwr.getJBR().lookupSpecialAtomID(atomName); +if (specialAtomID == 2 && "CA".equalsIgnoreCase(group3)) specialAtomID = 0; +}}var atom = this.ms.addAtom(this.iModel, this.nullGroup, atomicAndIsotopeNumber, atomName, atomType, atomSerial, atomSeqID, atomSite, xyz, radius, vib, formalCharge, partialCharge, occupancy, bfactor, tensors, isHetero, specialAtomID, atomSymmetry, bondRadius); +atom.altloc = alternateLocationID; +return atom; +}, "~B,JU.BS,~N,~N,~S,~N,~N,JU.Lst,~N,~N,JU.P3,~B,~N,~N,~S,JU.V3,~S,~N,~N"); +Clazz_defineMethod(c$, "checkNewGroup", +function(adapter, chainID, group3, groupSequenceNumber, groupInsertionCode, addH, isLegacyHAddition){ +if (chainID != this.currentChainID) { +this.currentChainID = chainID; +this.currentChain = this.getOrAllocateChain(this.model, chainID); +this.currentGroupInsertionCode = '\uFFFF'; +this.currentGroupSequenceNumber = -1; +this.currentGroup3 = "xxxx"; +this.isNewChain = true; +}var group3i = (group3 == null ? null : group3.intern()); +if (groupSequenceNumber != this.currentGroupSequenceNumber || groupInsertionCode != this.currentGroupInsertionCode || group3i !== this.currentGroup3) { +if (this.groupCount > 0 && addH) { +this.jbr.addImplicitHydrogenAtoms(adapter, this.groupCount - 1, this.isNewChain && !isLegacyHAddition ? 1 : 0); +this.jbr.setHaveHsAlready(false); +}this.currentGroupSequenceNumber = groupSequenceNumber; +this.currentGroupInsertionCode = groupInsertionCode; +this.currentGroup3 = group3i; +while (this.groupCount >= this.group3Of.length) { +this.chainOf = JU.AU.doubleLength(this.chainOf); +this.group3Of = JU.AU.doubleLengthS(this.group3Of); +this.seqcodes = JU.AU.doubleLengthI(this.seqcodes); +this.firstAtomIndexes = JU.AU.doubleLengthI(this.firstAtomIndexes); +} +this.firstAtomIndexes[this.groupCount] = this.ms.ac; +this.chainOf[this.groupCount] = this.currentChain; +this.group3Of[this.groupCount] = group3; +this.seqcodes[this.groupCount] = JM.Group.getSeqcodeFor(groupSequenceNumber, groupInsertionCode); +++this.groupCount; +}}, "J.api.JmolAdapter,~N,~S,~N,~S,~B,~B"); +Clazz_defineMethod(c$, "getOrAllocateChain", +function(model, chainID){ +var chain = model.getChain(chainID); +if (chain != null) return chain; +if (model.chainCount == model.chains.length) model.chains = (model.chainCount == 0 ? new Array(2) : JU.AU.doubleLength(model.chains)); +return model.chains[model.chainCount++] = new JM.Chain(model, chainID, (chainID == 0 || chainID == 32 ? 0 : ++this.iChain)); +}, "JM.Model,~N"); +Clazz_defineMethod(c$, "iterateOverAllNewBonds", +function(iterBond){ +var force1 = this.isMutate && !this.vwr.getBoolean(603979894); +var haveMultipleBonds = false; +while (iterBond.hasNext()) { +var iOrder = iterBond.getEncodedOrder(); +var order = (force1 ? 1 : iOrder); +var b = this.bondAtoms(iterBond.getAtomUniqueID1(), iterBond.getAtomUniqueID2(), order); +if (b != null) { +if (order > 1 && order != 1025 && order != 1041) haveMultipleBonds = true; +var radius = iterBond.getRadius(); +if (radius > 0) b.setMad(Clazz_floatToShort(radius * 2000)); +var colix = iterBond.getColix(); +if (colix >= 0) b.colix = colix; +b.order |= (iOrder & 98304); +}} +if (haveMultipleBonds && this.ms.someModelsHaveSymmetry && !this.vwr.getBoolean(603979794)) JU.Logger.info("ModelSet: use \"set appletSymmetryToBonds TRUE \" to apply the file-based multiple bonds to symmetry-generated atoms."); +}, "J.api.JmolAdapterBondIterator"); +Clazz_defineMethod(c$, "bondAtoms", +function(atomUid1, atomUid2, order){ +var atom1 = this.htAtomMap.get(atomUid1); +if (atom1 == null) { +JU.Logger.error("bondAtoms cannot find atomUid1?:" + atomUid1); +return null; +}var atom2 = this.htAtomMap.get(atomUid2); +if (atom2 == null) { +JU.Logger.error("bondAtoms cannot find atomUid2?:" + atomUid2); +return null; +}if (atom1.isBonded(atom2)) return null; +var isNear = (order == 1025); +var isFar = (order == 1041); +var bond; +if (isNear || isFar) { +var m = atom1.getModelIndex(); +if (m != this.lastModel) { +this.lastModel = m; +var info = this.ms.getModelAuxiliaryInfo(m); +this.isMOL2D = (this.is2D || info != null && "2D".equals(info.get("dimension"))); +}bond = this.ms.bondMutually(atom1, atom2, (this.isMOL2D ? order : 513), this.ms.getDefaultMadFromOrder(1), 0); +if (this.isMOL2D) { +if (this.vStereo == null) { +this.vStereo = new JU.Lst(); +}this.vStereo.addLast(bond); +}} else { +bond = this.ms.bondMutually(atom1, atom2, order, this.ms.getDefaultMadFromOrder(order), 0); +if (bond.isAromatic()) { +this.ms.someModelsHaveAromaticBonds = true; +}}if (this.ms.bondCount == this.ms.bo.length) { +this.ms.bo = JU.AU.arrayCopyObject(this.ms.bo, this.ms.bondCount + 250); +}this.ms.setBond(this.ms.bondCount++, bond); +return bond; +}, "~O,~O,~N"); +Clazz_defineMethod(c$, "initializeUnitCellAndSymmetry", +function(){ +if (this.someModelsAreModulated && this.ms.bsModulated == null) this.ms.bsModulated = new JU.BS(); +var haveMergeCells = (this.modelSet0 != null && this.modelSet0.unitCells != null); +if (this.someModelsHaveUnitcells || haveMergeCells) { +this.ms.unitCells = new Array(this.ms.mc); +this.ms.haveUnitCells = true; +for (var i = 0, pt = 0; i < this.ms.mc; i++) { +if (haveMergeCells && i < this.baseModelCount) { +this.ms.unitCells[i] = this.modelSet0.unitCells[i]; +} else if (this.ms.getModelAuxiliaryInfo(i).get("spaceGroupIndex") != null) { +this.ms.unitCells[i] = J.api.Interface.getSymmetry(this.vwr, "file"); +var notionalCell = null; +if (this.isTrajectory) { +var lst = this.ms.getInfoM("unitCells"); +if (lst != null) notionalCell = lst.get(pt++); +}(this.ms.unitCells[i]).setSymmetryInfoFromFile(this.ms, i, notionalCell); +}} +}if (this.appendNew && this.ms.someModelsHaveSymmetry) { +this.ms.getAtoms(1088421903, null); +var atoms = this.ms.at; +for (var iAtom = this.baseAtomIndex, iModel = -1, i0 = 0; iAtom < this.ms.ac; iAtom++) { +if (atoms[iAtom].mi != iModel) { +iModel = atoms[iAtom].mi; +i0 = this.baseAtomIndex + this.ms.getInfoI(iModel, "presymmetryAtomIndex"); +if (i0 < 0) break; +var n = this.ms.getInfoI(iModel, "presymmetryAtomCount"); +this.ms.am[iModel].auxiliaryInfo.put("presymmetryAtomIndex", Integer.$valueOf(i0)); +this.ms.setInfo(iModel, "asymmetricUnit", this.ms.am[iModel].bsAsymmetricUnit = JU.BSUtil.newBitSet2(i0, i0 + n)); +i0 += n; +}if (iAtom >= i0) this.ms.bsSymmetry.set(iAtom); +} +}if (this.appendNew && this.ms.someModelsHaveFractionalCoordinates) { +var atoms = this.ms.at; +var modelIndex = -1; +var c = null; +var isFractional = false; +for (var i = this.baseAtomIndex; i < this.ms.ac; i++) { +if (atoms[i].mi != modelIndex) { +modelIndex = atoms[i].mi; +c = this.ms.getUnitCell(modelIndex); +isFractional = (c != null && c.getCoordinatesAreFractional()); +}if (isFractional) { +var m = this.ms.getModulation(i); +var uca = (m == null ? c : atoms[i].getUnitCell()); +uca.toCartesian(uca.toSupercell(atoms[i]), false); +}} +for (var imodel = this.baseModelIndex; imodel < this.ms.mc; imodel++) if (this.ms.isTrajectory(imodel)) this.ms.trajectory.setUnitCell(imodel); + +}}); +Clazz_defineMethod(c$, "initializeBonding", +function(){ +var modelCount = this.ms.mc; +var models = this.ms.am; +var modelAtomCount = 0; +var bsExclude = this.ms.getInfoM("bsExcludeBonding"); +if (bsExclude == null) { +bsExclude = (this.ms.getInfoM(JV.JC.getBoolName(3)) == null ? null : new JU.BS()); +if (bsExclude != null) this.ms.setPdbConectBonding(this.baseAtomIndex, this.baseModelIndex, bsExclude); +}var symmetryAlreadyAppliedToBonds = this.vwr.getBoolean(603979794); +var doAutoBond = this.vwr.getBoolean(603979798); +var forceAutoBond = this.vwr.getBoolean(603979848); +var bs = null; +var autoBonding = false; +if (!this.noAutoBond) for (var i = this.baseModelIndex; i < modelCount; i++) { +modelAtomCount = models[i].bsAtoms.cardinality(); +var modelBondCount = this.ms.getInfoI(i, "initialBondCount"); +var modelIsPDB = models[i].isBioModel; +if (modelBondCount < 0) { +modelBondCount = this.ms.bondCount; +}var doBond = (forceAutoBond || doAutoBond && (modelBondCount == 0 || modelIsPDB && this.jmolData == null && (this.ms.getMSInfoB("havePDBHeaderName") || modelBondCount < Clazz_doubleToInt(modelAtomCount / 2)) || this.ms.getInfoB(i, "hasSymmetry") && !symmetryAlreadyAppliedToBonds && !this.ms.getInfoB(i, "hasBonds"))); +if (!doBond) continue; +autoBonding = true; +if (this.merging || modelCount > 1) { +if (bs == null) bs = JU.BS.newN(this.ms.ac); +if (i == this.baseModelIndex || !this.isTrajectory) bs.or(models[i].bsAtoms); +}} +if (this.modulationOn) this.ms.setModulation(null, true, this.modulationTUV, false); +if (autoBonding) { +this.ms.autoBondBs4(bs, bs, bsExclude, null, this.ms.defaultCovalentMad, this.vwr.getBoolean(603979872), null); +JU.Logger.info("ModelSet: autobonding; use autobond=false to not generate bonds automatically"); +} else { +JU.Logger.info("ModelSet: not autobonding; use forceAutobond=true to force automatic bond creation"); +}}); +Clazz_defineMethod(c$, "finalizeGroupBuild", +function(){ +this.groups = new Array(this.groupCount); +if (this.merging) for (var i = 0; i < this.$mergeGroups.length; i++) (this.groups[i] = this.$mergeGroups[i]).chain.model.ms = this.ms; + +for (var i = this.baseGroupIndex; i < this.groupCount; ++i) this.distinguishAndPropagateGroup(i, this.chainOf[i], this.group3Of[i], this.seqcodes[i], this.firstAtomIndexes[i], (i == this.groupCount - 1 ? this.ms.ac : this.firstAtomIndexes[i + 1]) - 1); + +if (this.group3Lists != null) { +this.ms.msInfo.put("group3Lists", this.group3Lists); +this.ms.msInfo.put("group3Counts", this.group3Counts); +for (var i = 0; i < this.group3Counts.length; i++) if (this.group3Counts[i] == null) this.group3Counts[i] = Clazz_newIntArray (0, 0); + +}}); +Clazz_defineMethod(c$, "distinguishAndPropagateGroup", +function(groupIndex, chain, group3, seqcode, firstAtomIndex, lastAtomIndex){ +if (lastAtomIndex < firstAtomIndex) throw new NullPointerException(); +var group = (group3 == null || this.jbr == null ? null : this.jbr.distinguishAndPropagateGroup(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, this.specialAtomIndexes, this.ms.at)); +var key; +if (group == null) { +group = new JM.Group().setGroup(chain, group3, seqcode, firstAtomIndex, lastAtomIndex); +if (this.jbr != null) group.groupID = this.jbr.getGroupID(group3); +key = "o>"; +} else { +key = (group.isProtein() ? "p>" : group.isNucleic() ? "n>" : group.isCarbohydrate() ? "c>" : "o>"); +}if (group3 != null) { +this.countGroup(this.ms.at[firstAtomIndex].mi, key, group3); +if (group.isNucleic()) { +var g1 = (this.htGroup1 == null ? null : this.htGroup1.get(group3)); +if (g1 != null) group.group1 = g1.charAt(0); +}}this.addGroup(chain, group); +this.groups[groupIndex] = group; +group.groupIndex = groupIndex; +for (var i = lastAtomIndex + 1; --i >= firstAtomIndex; ) this.ms.at[i].group = group; + +}, "~N,JM.Chain,~S,~N,~N,~N"); +Clazz_defineMethod(c$, "addGroup", +function(chain, group){ +if (chain.groupCount == chain.groups.length) chain.groups = JU.AU.doubleLength(chain.groups); +chain.groups[chain.groupCount++] = group; +}, "JM.Chain,JM.Group"); +Clazz_defineMethod(c$, "countGroup", +function(modelIndex, code, group3){ +var ptm = modelIndex + 1; +if (this.group3Lists == null || this.group3Lists[ptm] == null) return; +var g3code = (group3 + " ").substring(0, 3); +var pt = this.group3Lists[ptm].indexOf(g3code); +if (pt < 0) { +this.group3Lists[ptm] += ",[" + g3code + "]"; +pt = this.group3Lists[ptm].indexOf(g3code); +this.group3Counts[ptm] = JU.AU.arrayCopyI(this.group3Counts[ptm], this.group3Counts[ptm].length + 10); +}this.group3Counts[ptm][Clazz_doubleToInt(pt / 6)]++; +pt = this.group3Lists[ptm].indexOf(",[" + g3code); +if (pt >= 0) this.group3Lists[ptm] = this.group3Lists[ptm].substring(0, pt) + code + this.group3Lists[ptm].substring(pt + 2); +if (modelIndex >= 0) this.countGroup(-1, code, group3); +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "freeze", +function(){ +this.htAtomMap.clear(); +if (this.ms.ac < this.ms.at.length) this.ms.growAtomArrays(this.ms.ac); +if (this.ms.bondCount < this.ms.bo.length) this.ms.bo = JU.AU.arrayCopyObject(this.ms.bo, this.ms.bondCount); +for (var i = 5; --i > 0; ) { +this.ms.numCached[i] = 0; +var bondsCache = this.ms.freeBonds[i]; +for (var j = bondsCache.length; --j >= 0; ) bondsCache[j] = null; + +} +this.ms.setAtomNamesAndNumbers(0, this.baseAtomIndex, this.modelSet0, false); +this.findElementsPresent(); +this.ms.resetMolecules(); +this.model = null; +this.currentChain = null; +if (!this.ms.haveBioModels || this.isPyMOLsession || this.isMutate) { +this.ms.freezeModels(); +return; +}var asDSSP = this.vwr.getBoolean(603979826); +var ret = this.ms.calculateStructuresAllExcept(this.structuresDefinedInFile, asDSSP, false, true, true, asDSSP, JV.JC.versionInt >= 1405000 && this.ms.getInfoM("DSSP1") == null ? 2 : 1); +if (ret.length > 0) JU.Logger.info(ret); +}); +Clazz_defineMethod(c$, "findElementsPresent", +function(){ +this.ms.elementsPresent = new Array(this.ms.mc); +for (var i = 0; i < this.ms.mc; i++) this.ms.elementsPresent[i] = JU.BS.newN(64); + +for (var i = this.ms.ac; --i >= 0; ) { +var a = this.ms.at[i]; +if (a == null) continue; +var n = a.getAtomicAndIsotopeNumber(); +if (n >= JU.Elements.elementNumberMax) n = JU.Elements.elementNumberMax + JU.Elements.altElementIndexFromNumber(n); +this.ms.elementsPresent[a.mi].set(n); +} +}); +Clazz_defineMethod(c$, "setupMinimization", +function(){ +this.initialize2DMin(); +var v = new JU.V3(); +if (this.vStereo != null) { +out : for (var i = this.vStereo.size(); --i >= 0; ) { +var b = this.vStereo.get(i); +var a1 = b.atom1; +var bonds = a1.bonds; +for (var j = a1.getBondCount(); --j >= 0; ) { +var b2 = bonds[j]; +if (b2 === b) continue; +var a2 = b2.getOtherAtom(a1); +v.sub2(a2, a1); +if (Math.abs(v.x) < 0.1) { +if ((b.order == 1025) == (v.y < 0)) this.stereodir = -1; +break out; +}} +} +}this.set2dZ(v); +if (this.vStereo != null) { +var bsToTest = JU.BSUtil.newBitSet2(this.baseAtomIndex, this.vwr.ms.ac); +for (var i = this.vStereo.size(); --i >= 0; ) { +var b = this.vStereo.get(i); +var dz2 = (b.order == 1025 ? 3 : -3); +b.order = 1; +if (b.atom1.getBondCount() < 6 && b.atom2.z != b.atom1.z && (dz2 < 0) == (b.atom2.z < b.atom1.z)) dz2 /= 3; +var bs = JU.JmolMolecule.getBranchBitSet(this.ms.at, b.atom2.i, bsToTest, null, b.atom1.i, false, true); +bs.set(b.atom2.i); +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) this.ms.at[j].z += dz2; + +b.atom2.x = (b.atom1.x + b.atom2.x) / 2; +b.atom2.y = (b.atom1.y + b.atom2.y) / 2; +} +this.vStereo = null; +}this.is2D = false; +}); +Clazz_defineMethod(c$, "initialize2DMin", +function(){ +var scaling = 0; +var n = 0; +var lastModel = -1; +var i0 = this.baseAtomIndex; +var i1 = this.vwr.ms.ac; +for (var i = i0; i < i1; i++) { +var a = this.ms.at[i]; +var m = a.getModelIndex(); +if (m != lastModel) { +lastModel = m; +this.ms.setInfo(m, "dimension", "3D"); +}var bonds = a.bonds; +if (bonds == null) continue; +for (var j = bonds.length; --j >= 0; ) { +if (bonds[j] == null) continue; +var b = bonds[j].getOtherAtom(a); +if (b.getAtomNumber() != 1 && b.getIndex() > i) { +scaling += b.distance(a); +n++; +}} +} +if (n == 0) return; +scaling = 1.45 / (scaling / n); +for (var i = i0; i < i1; i++) { +this.ms.at[i].scale(scaling); +} +}); +Clazz_defineMethod(c$, "set2dZ", +function(v){ +var iatom1 = this.baseAtomIndex; +var iatom2 = this.vwr.ms.ac; +var atomlist = JU.BS.newN(iatom2); +var bsBranch = new JU.BS(); +var v0 = JU.V3.new3(0, 1, 0); +var v1 = new JU.V3(); +var bs0 = new JU.BS(); +bs0.setBits(iatom1, iatom2); +for (var i = iatom1; i < iatom2; i++) if (!atomlist.get(i) && !bsBranch.get(i)) { +bsBranch = this.getBranch2dZ(i, -1, bs0, bsBranch, v, v0, v1, this.stereodir); +atomlist.or(bsBranch); +} +}, "JU.V3"); +Clazz_defineMethod(c$, "getBranch2dZ", +function(atomIndex, atomIndexNot, bs0, bsBranch, v, v0, v1, dir){ +var bs = JU.BS.newN(this.ms.ac); +if (atomIndex < 0) return bs; +var bsToTest = JU.BSUtil.copy(bs0); +if (atomIndexNot >= 0) bsToTest.clear(atomIndexNot); +JM.ModelLoader.setBranch2dZ(this.ms.at[atomIndex], bs, bsToTest, v, v0, v1, dir); +return bs; +}, "~N,~N,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N"); +c$.setBranch2dZ = Clazz_defineMethod(c$, "setBranch2dZ", +function(atom, bs, bsToTest, v, v0, v1, dir){ +var atomIndex = atom.i; +if (!bsToTest.get(atomIndex)) return; +bsToTest.clear(atomIndex); +bs.set(atomIndex); +if (atom.bonds == null) return; +for (var i = atom.bonds.length; --i >= 0; ) { +var bond = atom.bonds[i]; +if (bond.isHydrogen()) continue; +var atom2 = bond.getOtherAtom(atom); +JM.ModelLoader.setAtom2dZ(atom, atom2, v, v0, v1, dir); +JM.ModelLoader.setBranch2dZ(atom2, bs, bsToTest, v, v0, v1, dir); +} +}, "JM.Atom,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N"); +c$.setAtom2dZ = Clazz_defineMethod(c$, "setAtom2dZ", +function(atomRef, atom2, v, v0, v1, dir){ +v.sub2(atom2, atomRef); +v.z = 0; +v.normalize(); +v1.cross(v0, v); +var theta = Math.acos(v.dot(v0)); +var f = (0.4 * -dir * Math.sin(4 * theta)); +atom2.z = atomRef.z + f; +}, "JM.Atom,JM.Atom,JU.V3,JU.V3,JU.V3,~N"); +Clazz_defineMethod(c$, "finalizeShapes", +function(){ +this.ms.sm = this.vwr.shm; +this.ms.sm.setModelSet(this.ms); +this.ms.setBsHidden(this.vwr.slm.getHiddenSet()); +if (!this.merging) this.ms.sm.resetShapes(false); +this.ms.sm.loadDefaultShapes(this.ms); +if (this.ms.someModelsHaveAromaticBonds && this.vwr.getBoolean(603979944)) this.ms.assignAromaticBondsBs(false, null); +if (this.merging && this.baseModelCount == 1) this.ms.sm.setShapePropertyBs(6, "clearModelIndex", null, null); +}); +Clazz_defineMethod(c$, "undeleteAtom", +function(iAtom){ +this.ms.at[iAtom].valence = 0; +}, "~N"); +c$.createAtomDataSet = Clazz_defineMethod(c$, "createAtomDataSet", +function(vwr, modelSet, tokType, asc, bsSelected){ +if (asc == null) return null; +var adapter = vwr.getModelAdapter(); +var pt = new JU.P3(); +var atoms = modelSet.at; +var tolerance = vwr.getFloat(570425363); +if (modelSet.unitCells != null) for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) if (atoms[i].atomSymmetry != null) { +tolerance = -tolerance; +break; +} +var i = -1; +var n = 0; +var loadAllData = (JU.BSUtil.cardinalityOf(bsSelected) == vwr.ms.ac); +for (var iterAtom = adapter.getAtomIterator(asc); iterAtom.hasNext(); ) { +var xyz = iterAtom.getXYZ(); +if (Float.isNaN(xyz.x + xyz.y + xyz.z)) continue; +if (tokType == 1145047049) { +i = bsSelected.nextSetBit(i + 1); +if (i < 0) break; +n++; +if (JU.Logger.debugging) JU.Logger.debug("atomIndex = " + i + ": " + atoms[i] + " --> (" + xyz.x + "," + xyz.y + "," + xyz.z); +modelSet.setAtomCoord(i, xyz.x, xyz.y, xyz.z); +continue; +}pt.setT(xyz); +var bs = JU.BS.newN(modelSet.ac); +modelSet.getAtomsWithin(tolerance, pt, bs, -1); +bs.and(bsSelected); +if (loadAllData) { +n = JU.BSUtil.cardinalityOf(bs); +if (n == 0) { +JU.Logger.warn("createAtomDataSet: no atom found at position " + pt); +continue; +} else if (n > 1 && JU.Logger.debugging) { +JU.Logger.debug("createAtomDataSet: " + n + " atoms found at position " + pt); +}}switch (tokType) { +case 1145047055: +var vib = iterAtom.getVib(); +if (vib == null) continue; +if (JU.Logger.debugging) JU.Logger.debug("xyz: " + pt + " vib: " + vib); +modelSet.setAtomCoords(bs, 1145047055, vib); +break; +case 1128269825: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getOccupancy(), null, null, null); +break; +case 1111492619: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getPartialCharge(), null, null, null); +break; +case 1111492620: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getBfactor(), null, null, null); +break; +} +} +switch (tokType) { +case 1145047055: +var vibName = adapter.getAtomSetName(asc, 0); +JU.Logger.info("_vibrationName = " + vibName); +vwr.setStringProperty("_vibrationName", vibName); +break; +case 1145047049: +JU.Logger.info(n + " atom positions read"); +modelSet.recalculateLeadMidpointsAndWingVectors(-1); +if (n == modelSet.ac) return "boundbox {*};reset"; +break; +} +return null; +}, "JV.Viewer,JM.ModelSet,~N,~O,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.BondCollection"], "JM.ModelSet", ["java.util.Hashtable", "JU.A4", "$.AU", "$.BS", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.bspt.Bspf", "J.c.PAL", "$.VDW", "JM.Atom", "$.AtomIteratorWithinModel", "$.AtomIteratorWithinModelSet", "$.HBond", "$.Model", "$.StateScript", "JS.ScriptCompiler", "JU.BSUtil", "$.BoxInfo", "$.Edge", "$.Elements", "$.Escape", "$.JmolMolecule", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveBioModels = false; +this.bsSymmetry = null; +this.modelSetName = null; +this.am = null; +this.mc = 0; +this.unitCells = null; +this.haveUnitCells = false; +this.closest = null; +this.modelNumbers = null; +this.modelFileNumbers = null; +this.modelNumbersForAtomLabel = null; +this.modelNames = null; +this.frameTitles = null; +this.elementsPresent = null; +this.isXYZ = false; +this.modelSetProperties = null; +this.msInfo = null; +this.someModelsHaveSymmetry = false; +this.someModelsHaveAromaticBonds = false; +this.someModelsHaveFractionalCoordinates = false; +this.isBbcageDefault = false; +this.bboxModels = null; +this.bboxAtoms = null; +this.boxInfo = null; +this.stateScripts = null; +this.thisStateModel = 0; +this.vibrationSteps = null; +this.selectedMolecules = null; +this.showRebondTimes = true; +this.bsAll = null; +this.sm = null; +this.proteinStructureTainted = false; +this.htPeaks = null; +this.vOrientations = null; +this.ptTemp = null; +this.ptTemp1 = null; +this.ptTemp2 = null; +this.matTemp = null; +this.matInv = null; +this.mat4 = null; +this.mat4t = null; +this.vTemp = null; +this.defaultBBox = null; +this.haveJmolDataFrames = false; +this.echoShapeActive = false; +this.modelSetTypeName = null; +this.translations = null; +this.maxBondWarned = false; +Clazz_instantialize(this, arguments);}, JM, "ModelSet", JM.BondCollection); +Clazz_makeConstructor(c$, +function(vwr, name){ +Clazz_superConstructor (this, JM.ModelSet, []); +this.vwr = vwr; +this.modelSetName = name; +this.selectedMolecules = new JU.BS(); +this.stateScripts = new JU.Lst(); +this.boxInfo = new JU.BoxInfo(); +this.boxInfo.addBoundBoxPoint(JU.P3.new3(-10, -10, -10)); +this.boxInfo.addBoundBoxPoint(JU.P3.new3(10, 10, 10)); +this.am = new Array(1); +this.modelNumbers = Clazz_newIntArray (1, 0); +this.modelFileNumbers = Clazz_newIntArray (1, 0); +this.modelNumbersForAtomLabel = new Array(1); +this.modelNames = new Array(1); +this.frameTitles = new Array(1); +this.closest = new Array(1); +this.ptTemp = new JU.P3(); +this.ptTemp1 = new JU.P3(); +this.ptTemp2 = new JU.P3(); +this.matTemp = new JU.M3(); +this.matInv = new JU.M3(); +this.mat4 = new JU.M4(); +this.mat4t = new JU.M4(); +this.vTemp = new JU.V3(); +this.setupBC(); +}, "JV.Viewer,~S"); +Clazz_defineMethod(c$, "getBoxInfo", +function(){ +return this.boxInfo; +}); +Clazz_defineMethod(c$, "releaseModelSet", +function(){ +this.am = null; +this.mc = 0; +this.closest[0] = null; +this.am = null; +this.bsSymmetry = null; +this.bsAll = null; +this.unitCells = null; +this.releaseModelSetBC(); +}); +Clazz_defineMethod(c$, "getEchoStateActive", +function(){ +return this.echoShapeActive; +}); +Clazz_defineMethod(c$, "setEchoStateActive", +function(TF){ +this.echoShapeActive = TF; +}, "~B"); +Clazz_defineMethod(c$, "getModelSetTypeName", +function(){ +return this.modelSetTypeName; +}); +Clazz_defineMethod(c$, "getModelNumberIndex", +function(modelNumber, useModelNumber, doSetTrajectory){ +if (useModelNumber) { +for (var i = 0; i < this.mc; i++) if (this.modelNumbers[i] == modelNumber || modelNumber < 1000000 && this.modelNumbers[i] == 1000000 + modelNumber) return i; + +return -1; +}if (modelNumber < 1000000) return modelNumber; +for (var i = 0; i < this.mc; i++) if (this.modelFileNumbers[i] == modelNumber) { +if (doSetTrajectory && this.isTrajectory(i)) this.setTrajectory(i); +return i; +} +return -1; +}, "~N,~B,~B"); +Clazz_defineMethod(c$, "getModelDataBaseName", +function(bsAtoms){ +for (var i = 0; i < this.mc; i++) { +if (bsAtoms.equals(this.am[i].bsAtoms)) return this.getInfo(i, "dbName"); +} +return null; +}, "JU.BS"); +Clazz_defineMethod(c$, "setTrajectory", +function(modelIndex){ +if (modelIndex >= 0 && this.isTrajectory(modelIndex) && this.at[this.am[modelIndex].firstAtomIndex].mi != modelIndex) this.trajectory.setModel(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "getBitSetTrajectories", +function(){ +return (this.trajectory == null ? null : this.trajectory.getModelsSelected()); +}); +Clazz_defineMethod(c$, "setTrajectoryBs", +function(bsModels){ +if (this.trajectory != null) for (var i = 0; i < this.mc; i++) if (bsModels.get(i)) this.setTrajectory(i); + +}, "JU.BS"); +Clazz_defineMethod(c$, "morphTrajectories", +function(m1, m2, f){ +if (m1 >= 0 && m2 >= 0 && this.isTrajectory(m1) && this.isTrajectory(m2)) this.trajectory.morph(m1, m2, f); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getTranslation", +function(iModel){ +return (this.translations == null || iModel >= this.translations.length ? null : this.translations[iModel]); +}, "~N"); +Clazz_defineMethod(c$, "translateModel", +function(iModel, pt){ +if (pt == null) { +var t = this.getTranslation(iModel); +if (t == null) return; +pt = JU.P3.newP(t); +pt.scale(-1); +this.translateModel(iModel, pt); +this.translations[iModel] = null; +return; +}if (this.translations == null || this.translations.length <= iModel) this.translations = new Array(this.mc); +if (this.translations[iModel] == null) this.translations[iModel] = new JU.P3(); +this.translations[iModel].add(pt); +var bs = this.am[iModel].bsAtoms; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.at[i].add(pt); + +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "getFrameOffsets", +function(bsAtoms, isFull){ +if (bsAtoms == null) { +if (isFull) for (var i = this.mc; --i >= 0; ) { +var m = this.am[i]; +if (!m.isJmolDataFrame && !m.isTrajectory) this.translateModel(m.modelIndex, null); +} +return null; +}var i0 = bsAtoms.nextSetBit(0); +if (i0 < 0) return null; +if (isFull) { +var bs = JU.BSUtil.copy(bsAtoms); +var pt = null; +var pdiff = new JU.P3(); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +if (!m.isJmolDataFrame && !m.isTrajectory) { +var j = bs.nextSetBit(0); +if (m.bsAtoms.get(j)) { +if (pt == null) { +pt = JU.P3.newP(this.at[j]); +} else { +pdiff.sub2(pt, this.at[j]); +this.translateModel(i, pdiff); +}}}bs.andNot(m.bsAtoms); +} +return null; +}var offsets = new Array(this.mc); +for (var i = this.mc; --i >= 0; ) offsets[i] = new JU.P3(); + +var lastModel = 0; +var n = 0; +var lastOffset = null; +var asTrajectory = (this.trajectory != null && this.trajectory.steps.size() == this.mc); +var m1 = (asTrajectory ? this.mc : 1); +for (var m = 0; m < m1; m++) { +if (asTrajectory) this.setTrajectory(m); +for (var i = 0; i <= this.ac; i++) { +if (i < this.ac && JM.AtomCollection.isDeleted(this.at[i])) continue; +if (i == this.ac || this.at[i].mi != lastModel) { +if (n > 0) { +lastOffset.scale(-1.0 / n); +if (lastModel != 0) lastOffset.sub(offsets[0]); +n = 0; +}if (i == this.ac) break; +lastModel = this.at[i].mi; +lastOffset = offsets[lastModel]; +}if (!bsAtoms.get(i)) continue; +lastOffset.add(this.at[i]); +n++; +} +} +offsets[0].set(0, 0, 0); +return offsets; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "getAtoms", +function(tokType, specInfo){ +switch (tokType) { +default: +return JU.BSUtil.andNot(this.getAtomBitsMaybeDeleted(tokType, specInfo), this.vwr.slm.bsDeleted); +case 1073742358: +var modelNumber = (specInfo).intValue(); +var modelIndex = this.getModelNumberIndex(modelNumber, true, true); +return (modelIndex < 0 && modelNumber > 0 ? new JU.BS() : this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +case 1275203608: +var data = Clazz_newArray(-1, [null, null, null]); +this.vwr.shm.getShapePropertyData(21, "getCenters", data); +return (data[1] == null ? new JU.BS() : data[1]); +} +}, "~N,~O"); +Clazz_defineMethod(c$, "findNearestAtomIndex", +function(x, y, bsNot, min){ +if (this.ac == 0) return -1; +this.closest[0] = null; +if (this.g3d.isAntialiased()) { +x <<= 1; +y <<= 1; +}this.findNearest2(x, y, this.closest, bsNot, min); +this.sm.findNearestShapeAtomIndex(x, y, this.closest, bsNot); +var closestIndex = (this.closest[0] == null ? -1 : this.closest[0].i); +this.closest[0] = null; +return closestIndex; +}, "~N,~N,JU.BS,~N"); +Clazz_defineMethod(c$, "calculatePointGroup", +function(bsAtoms){ +return this.calculatePointGroupForFirstModel(bsAtoms, false, false, null, 0, 0, null, null, null); +}, "JU.BS"); +Clazz_defineMethod(c$, "getPointGroupInfo", +function(bsAtoms){ +return this.calculatePointGroupForFirstModel(bsAtoms, false, true, null, 0, 0, null, null, null); +}, "JU.BS"); +Clazz_defineMethod(c$, "getPointGroupAsString", +function(bsAtoms, type, index, scale, pts, center, id){ +return this.calculatePointGroupForFirstModel(bsAtoms, true, false, type, index, scale, pts, center, id); +}, "JU.BS,~S,~N,~N,~A,JU.P3,~S"); +Clazz_defineMethod(c$, "calculatePointGroupForFirstModel", +function(bsAtoms, doAll, asInfo, type, index, scale, pts, center, id){ +var pointGroup = this.pointGroup; +var symmetry = J.api.Interface.getSymmetry(this.vwr, "ms"); +var bs = null; +var haveVibration = false; +var isPolyhedron = false; +var localEnvOnly = false; +var isPoints = (pts != null); +var modelIndex = this.vwr.am.cmi; +if (!isPoints) { +var iAtom = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +if (modelIndex < 0 && iAtom >= 0) modelIndex = this.at[iAtom].mi; +if (modelIndex < 0) { +modelIndex = this.vwr.getVisibleFramesBitSet().nextSetBit(0); +bsAtoms = null; +}bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +localEnvOnly = (bsAtoms != null && bs.cardinality() != bsAtoms.cardinality()); +if (bsAtoms != null) bs.and(bsAtoms); +iAtom = bs.nextSetBit(0); +if (iAtom < 0) { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +iAtom = bs.nextSetBit(0); +}var obj = this.vwr.shm.getShapePropertyIndex(18, "mad", iAtom); +haveVibration = (obj != null && (obj).intValue() != 0 || this.vwr.tm.vibrationOn); +isPolyhedron = (type != null && type.toUpperCase().indexOf(":POLY") >= 0); +if (isPolyhedron) { +var data = Clazz_newArray(-1, [Integer.$valueOf(iAtom), null]); +this.vwr.shm.getShapePropertyData(21, "points", data); +pts = data[1]; +if (pts == null) return null; +bs = null; +haveVibration = false; +pointGroup = null; +} else { +pts = this.at; +}}var tp; +if (type != null && (tp = type.indexOf(":")) >= 0) type = type.substring(0, tp); +if (type != null && (tp = type.indexOf(".")) >= 0) { +index = JU.PT.parseInt(type.substring(tp + 1)); +if (index < 0) index = 0; +type = type.substring(0, tp); +}pointGroup = symmetry.setPointGroup(this.vwr, pointGroup, center, pts, bs, haveVibration, (isPoints ? 0 : this.vwr.getFloat(570425382)), this.vwr.getFloat(570425384), (bs == null ? pts.length : bs.cardinality()), localEnvOnly); +if (!isPolyhedron && !isPoints) this.pointGroup = pointGroup; +if (!doAll && !asInfo) return pointGroup.getPointGroupName(); +var ret = pointGroup.getPointGroupInfo(modelIndex, id, asInfo, type, index, scale); +return (asInfo ? ret : (this.mc > 1 ? "frame " + this.getModelNumberDotted(modelIndex) + "; " : "") + ret); +}, "JU.BS,~B,~B,~S,~N,~N,~A,JU.P3,~S"); +Clazz_defineMethod(c$, "getDefaultStructure", +function(bsAtoms, bsModified){ +return (this.haveBioModels ? this.bioModelset.getAllDefaultStructures(bsAtoms, bsModified) : ""); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "deleteModelBonds", +function(modelIndex){ +var bsAtoms = this.getModelAtomBitSetIncludingDeleted(modelIndex, false); +this.makeConnections(0, 3.4028235E38, 131071, 12291, bsAtoms, bsAtoms, null, false, false, 0); +}, "~N"); +Clazz_defineMethod(c$, "makeConnections", +function(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy){ +this.moleculeCount = 0; +var autoState = (connectOperation == 1073741852 && order != 2048 ? new JU.SB() : null); +var result = this.makeConnections2(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy, autoState); +if (autoState != null) { +this.addStateScript(autoState.toString(), null, null, null, null, false, true); +}return result; +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N"); +Clazz_defineMethod(c$, "setPdbConectBonding", +function(baseAtomIndex, baseModelIndex, bsExclude){ +var mad = this.vwr.getMadBond(); +for (var i = baseModelIndex; i < this.mc; i++) { +var vConnect = this.getInfo(i, "PDB_CONECT_bonds"); +if (vConnect == null) continue; +var nConnect = vConnect.size(); +this.setInfo(i, "initialBondCount", Integer.$valueOf(nConnect)); +var atomInfo = this.getInfo(i, "PDB_CONECT_firstAtom_count_max"); +var firstAtom = atomInfo[0] + baseAtomIndex; +var atomMax = firstAtom + atomInfo[1]; +if (atomMax > this.atomSerials.length) atomMax = this.atomSerials.length; +var max = atomInfo[2]; +var serialMap = Clazz_newIntArray (max + 1, 0); +var iSerial; +for (var iAtom = firstAtom; iAtom < atomMax; iAtom++) if ((iSerial = this.atomSerials[iAtom]) > 0) serialMap[iSerial] = iAtom + 1; + +for (var iConnect = 0; iConnect < nConnect; iConnect++) { +var pair = vConnect.get(iConnect); +var sourceSerial = pair[0]; +var targetSerial = pair[1]; +var order = pair[2]; +if (sourceSerial < 0 || targetSerial < 0 || sourceSerial > max || targetSerial > max) continue; +var sourceIndex = serialMap[sourceSerial] - 1; +var targetIndex = serialMap[targetSerial] - 1; +if (sourceIndex < 0 || targetIndex < 0) continue; +var atomA = this.at[sourceIndex]; +var atomB = this.at[targetIndex]; +if (bsExclude != null) { +if (atomA.isHetero()) bsExclude.set(sourceIndex); +if (atomB.isHetero()) bsExclude.set(targetIndex); +}if (atomA.altloc == atomB.altloc || atomA.altloc == '\0' || atomB.altloc == '\0') this.getOrAddBond(atomA, atomB, order, (order == 2048 ? 1 : mad), null, 0, false); +} +} +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "deleteAllBonds", +function(){ +this.moleculeCount = 0; +for (var i = this.stateScripts.size(); --i >= 0; ) { +if (this.stateScripts.get(i).isConnect()) { +this.stateScripts.removeItemAt(i); +}} +this.deleteAllBonds2(); +}); +Clazz_defineMethod(c$, "includeAllRelatedFrames", +function(bsModels){ +var baseModel = 0; +for (var i = 0; i < this.mc; i++) { +var isTraj = this.isTrajectory(i); +var isBase = (isTraj && bsModels.get(baseModel = this.am[i].trajectoryBaseIndex)); +if (bsModels.get(i)) { +if (isTraj && !isBase) { +bsModels.set(baseModel); +this.includeAllRelatedFrames(bsModels); +return; +}} else if (isTraj || this.isJmolDataFrameForModel(i) && bsModels.get(this.am[i].dataSourceFrame)) { +bsModels.set(i); +}} +}, "JU.BS"); +Clazz_defineMethod(c$, "deleteModels", +function(bsModels){ +this.includeAllRelatedFrames(bsModels); +var nModelsDeleted = bsModels.cardinality(); +if (nModelsDeleted == 0) return null; +this.moleculeCount = 0; +if (this.msInfo != null) this.msInfo.remove("models"); +var bsAtomsToDelete = new JU.BS(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +this.clearDataFrameReference(i); +bsAtomsToDelete.or(this.am[i].bsAtoms); +} +var bsDeleted; +if (nModelsDeleted == this.mc) { +bsDeleted = this.getModelAtomBitSetIncludingDeleted(-1, true); +this.vwr.zap(true, false, false); +return bsDeleted; +}this.validateBspf(false); +bsDeleted = new JU.BS(); +var allOrderly = true; +var isOneOfSeveral = false; +var files = new JU.BS(); +var firstAtom = bsAtomsToDelete.nextSetBit(0); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +if (i < this.mc - 1) allOrderly = new Boolean (allOrderly & (m.isOrderly || m.bsAtoms.length() <= firstAtom)).valueOf(); +if (bsModels.get(i)) { +if (m.fileIndex >= 0) files.set(m.fileIndex); +bsDeleted.or(this.getModelAtomBitSetIncludingDeleted(i, false)); +} else { +if (m.fileIndex >= 0 && files.get(m.fileIndex)) isOneOfSeveral = true; +}} +if (!allOrderly || isOneOfSeveral) { +this.vwr.deleteAtoms(bsDeleted, false); +return null; +}var newModels = new Array(this.mc - nModelsDeleted); +var oldModels = this.am; +for (var i = 0, mpt = 0; i < this.mc; i++) { +if (!bsModels.get(i)) { +var m = this.am[i]; +m.modelIndex = mpt; +newModels[mpt++] = m; +}} +this.am = newModels; +var oldModelCount = this.mc; +var bsBonds = this.getBondsForSelectedAtoms(bsDeleted, true); +this.deleteBonds(bsBonds, true); +for (var i = 0, mpt = 0; i < oldModelCount; i++) { +if (!bsModels.get(i)) { +mpt++; +continue; +}var old = oldModels[i]; +var nAtoms = old.act; +if (nAtoms == 0) continue; +var bsModelAtoms = old.bsAtoms; +var firstAtomIndex = old.firstAtomIndex; +JU.BSUtil.deleteBits(this.bsSymmetry, bsModelAtoms); +this.deleteModel(mpt, bsModelAtoms, bsBonds); +this.deleteModelAtoms(firstAtomIndex, nAtoms, bsModelAtoms); +this.vwr.deleteModelAtoms(mpt, firstAtomIndex, nAtoms, bsModelAtoms); +for (var j = oldModelCount; --j > i; ) oldModels[j].fixIndices(mpt, nAtoms, bsModelAtoms); + +this.vwr.shm.deleteShapeAtoms( Clazz_newArray(-1, [newModels, this.at, Clazz_newIntArray(-1, [mpt, firstAtomIndex, nAtoms])]), bsModelAtoms); +this.mc--; +} +this.haveBioModels = false; +for (var i = this.mc; --i >= 0; ) if (this.am[i].isBioModel) { +this.haveBioModels = true; +this.bioModelset.set(this.vwr, this); +} +this.validateBspf(false); +this.bsAll = null; +this.resetMolecules(); +this.isBbcageDefault = false; +this.calcBoundBoxDimensions(null, 1); +return bsDeleted; +}, "JU.BS"); +Clazz_defineMethod(c$, "resetMolecules", +function(){ +this.bsAll = null; +this.molecules = null; +this.moleculeCount = 0; +this.resetChirality(); +}); +Clazz_defineMethod(c$, "resetChirality", +function(){ +if (this.haveChirality) { +var modelIndex = -1; +for (var i = this.ac; --i >= 0; ) { +var a = this.at[i]; +if (a == null) continue; +a.setCIPChirality(0); +if (a.mi != modelIndex && a.mi < this.am.length) this.am[modelIndex = a.mi].hasChirality = false; +} +}}); +Clazz_defineMethod(c$, "deleteModel", +function(modelIndex, bsModelAtoms, bsBonds){ +if (modelIndex < 0) { +return; +}this.modelNumbers = JU.AU.deleteElements(this.modelNumbers, modelIndex, 1); +this.modelFileNumbers = JU.AU.deleteElements(this.modelFileNumbers, modelIndex, 1); +this.modelNumbersForAtomLabel = JU.AU.deleteElements(this.modelNumbersForAtomLabel, modelIndex, 1); +this.modelNames = JU.AU.deleteElements(this.modelNames, modelIndex, 1); +this.frameTitles = JU.AU.deleteElements(this.frameTitles, modelIndex, 1); +this.thisStateModel = -1; +var group3Lists = this.getInfoM("group3Lists"); +var group3Counts = this.getInfoM("group3Counts"); +var ptm = modelIndex + 1; +if (group3Lists != null && group3Lists[ptm] != null) { +for (var i = Clazz_doubleToInt(group3Lists[ptm].length / 6); --i >= 0; ) if (group3Counts[ptm][i] > 0) { +group3Counts[0][i] -= group3Counts[ptm][i]; +if (group3Counts[0][i] == 0) group3Lists[0] = group3Lists[0].substring(0, i * 6) + ",[" + group3Lists[0].substring(i * 6 + 2); +} +}if (group3Lists != null) { +this.msInfo.put("group3Lists", JU.AU.deleteElements(group3Lists, modelIndex, 1)); +this.msInfo.put("group3Counts", JU.AU.deleteElements(group3Counts, modelIndex, 1)); +}if (this.unitCells != null) { +this.unitCells = JU.AU.deleteElements(this.unitCells, modelIndex, 1); +}for (var i = this.stateScripts.size(); --i >= 0; ) { +if (!this.stateScripts.get(i).deleteAtoms(modelIndex, bsBonds, bsModelAtoms)) { +this.stateScripts.removeItemAt(i); +}} +}, "~N,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "setAtomProperty", +function(bs, tok, iValue, fValue, sValue, values, list){ +switch (tok) { +case 1114249217: +case 1112152066: +case 1112152071: +case 1112152073: +case 1112152074: +case 1649022989: +case 1112152078: +if (fValue > 4.0) fValue = 4.0; +if (values != null) { +var newValues = Clazz_newFloatArray (this.ac, 0); +try { +for (var i = bs.nextSetBit(0), ii = 0; i >= 0; i = bs.nextSetBit(i + 1)) newValues[i] = values[ii++]; + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return; +} else { +throw e; +} +} +values = newValues; +}case 1112152070: +case 1112152076: +var rd = null; +var mar = 0; +if (values == null) { +if (fValue > 16) fValue = 16.1; +if (fValue < 0) fValue = 0; +mar = Clazz_doubleToInt(Math.floor(fValue * 2000)); +} else { +rd = new J.atomdata.RadiusData(values, 0, null, null); +}this.sm.setShapeSizeBs(JV.JC.shapeTokenIndex(tok), mar, rd, bs); +return; +} +this.setAPm(bs, tok, iValue, fValue, sValue, values, list); +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz_defineMethod(c$, "getFileData", +function(modelIndex){ +if (modelIndex < 0) return ""; +var fileData = this.getInfo(modelIndex, "fileData"); +if (fileData != null) return fileData; +if (!this.getInfoB(modelIndex, "isCIF")) return this.getPDBHeader(modelIndex); +fileData = this.vwr.getCifData(modelIndex); +this.setInfo(modelIndex, "fileData", fileData); +return fileData; +}, "~N"); +Clazz_defineMethod(c$, "addHydrogens", +function(vConnections, pts){ +var modelIndex = vConnections.get(0).mi; +var bs = new JU.BS(); +if (this.isTrajectory(modelIndex) || this.am[modelIndex].getGroupCount() > 1) { +return bs; +}this.growAtomArrays(this.ac + pts.length); +var rd = this.vwr.rd; +var mad = this.getDefaultMadFromOrder(1); +this.am[modelIndex].resetDSSR(false); +for (var i = 0, n = this.am[modelIndex].act + 1; i < vConnections.size(); i++, n++) { +var atom1 = vConnections.get(i); +var atom2 = this.addAtom(modelIndex, atom1.group, 1, "H" + n, null, n, atom1.getSeqID(), n, pts[i], NaN, null, 0, 0, 100, NaN, null, false, 0, null, NaN); +atom2.setMadAtom(this.vwr, rd); +bs.set(atom2.i); +this.bondAtoms(atom1, atom2, 1, mad, null, 0, false, false); +} +this.sm.loadDefaultShapes(this); +return bs; +}, "JU.Lst,~A"); +Clazz_defineMethod(c$, "mergeModelArrays", +function(mergeModelSet){ +this.at = mergeModelSet.at; +this.bo = mergeModelSet.bo; +this.stateScripts = mergeModelSet.stateScripts; +this.proteinStructureTainted = mergeModelSet.proteinStructureTainted; +this.thisStateModel = -1; +this.bsSymmetry = mergeModelSet.bsSymmetry; +this.modelFileNumbers = mergeModelSet.modelFileNumbers; +this.modelNumbersForAtomLabel = mergeModelSet.modelNumbersForAtomLabel; +this.modelNames = mergeModelSet.modelNames; +this.modelNumbers = mergeModelSet.modelNumbers; +this.frameTitles = mergeModelSet.frameTitles; +this.haveChirality = mergeModelSet.haveChirality; +this.boxInfo.setBoundBox(mergeModelSet.boxInfo.bbCorner0, mergeModelSet.boxInfo.bbCorner1, true, 1); +if (this.msInfo != null) this.msInfo.remove("models"); +this.mergeAtomArrays(mergeModelSet); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "getUnitCell", +function(modelIndex){ +var returnCage = (modelIndex == -2147483648); +if (returnCage) modelIndex = this.vwr.am.cmi; +if (modelIndex < 0 || modelIndex >= this.mc) return null; +var ucSimple = this.am[modelIndex].simpleCage; +var uc = null; +if (this.unitCells != null && modelIndex < this.unitCells.length && this.unitCells[modelIndex] != null && this.unitCells[modelIndex].haveUnitCell()) uc = this.unitCells[modelIndex]; +if (uc != null && returnCage) { +return (ucSimple == null ? this.setModelCagePts(modelIndex, uc.getUnitCellVectors(), "cage") : ucSimple); +}if (uc == null || ucSimple != null && !uc.isSymmetryCell(ucSimple)) { +uc = ucSimple; +}return uc; +}, "~N"); +Clazz_defineMethod(c$, "setModelCagePts", +function(iModel, originABC, name){ +if (iModel < 0 && (iModel = this.vwr.am.cmi) < 0) return null; +var sym = this.vwr.getSymTemp(); +try { +return this.setModelCage(iModel, originABC == null ? null : sym.getUnitCell(originABC, false, name)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +return null; +} else { +throw e; +} +} +}, "~N,~A,~S"); +Clazz_defineMethod(c$, "getModelName", +function(modelIndex){ +return this.mc < 1 ? "" : modelIndex >= 0 ? this.modelNames[modelIndex] : this.modelNumbersForAtomLabel[-1 - modelIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getModelTitle", +function(modelIndex){ +return this.getInfo(modelIndex, "title"); +}, "~N"); +Clazz_defineMethod(c$, "getModelFileName", +function(modelIndex){ +return this.getInfo(modelIndex, "fileName"); +}, "~N"); +Clazz_defineMethod(c$, "getModelFileType", +function(modelIndex){ +return this.getInfo(modelIndex, "fileType"); +}, "~N"); +Clazz_defineMethod(c$, "setFrameTitle", +function(bsFrames, title){ +if ((typeof(title)=='string')) { +for (var i = bsFrames.nextSetBit(0); i >= 0; i = bsFrames.nextSetBit(i + 1)) this.frameTitles[i] = title; + +} else { +var list = title; +for (var i = bsFrames.nextSetBit(0), n = 0; i >= 0; i = bsFrames.nextSetBit(i + 1)) if (n < list.length) this.frameTitles[i] = list[n++]; + +}}, "JU.BS,~O"); +Clazz_defineMethod(c$, "getFrameTitle", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.frameTitles[modelIndex] : ""); +}, "~N"); +Clazz_defineMethod(c$, "getModelNumberForAtomLabel", +function(modelIndex){ +return this.modelNumbersForAtomLabel[modelIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getGroups", +function(){ +var n = 0; +for (var i = 0; i < this.mc; i++) n += this.am[i].getGroupCount(); + +var groups = new Array(n); +for (var i = 0, iGroup = 0; i < this.mc; i++) for (var j = 0; j < this.am[i].chainCount; j++) for (var k = 0; k < this.am[i].chains[j].groupCount; k++) { +groups[iGroup] = this.am[i].chains[j].groups[k]; +groups[iGroup].groupIndex = iGroup; +iGroup++; +} + + +return groups; +}); +Clazz_defineMethod(c$, "setCrystallographicDefaults", +function(){ +return !this.haveBioModels && (this.someModelsHaveSymmetry && this.someModelsHaveFractionalCoordinates || this.getUnitCell(this.vwr.am.cmi) != null); +}); +Clazz_defineMethod(c$, "getBoundBoxCenter", +function(modelIndex){ +return (this.isJmolDataFrameForModel(modelIndex) ? new JU.P3() : (this.getDefaultBoundBox() == null ? this.boxInfo : this.defaultBBox).getBoundBoxCenter()); +}, "~N"); +Clazz_defineMethod(c$, "getBoundBoxCornerVector", +function(){ +return this.boxInfo.getBoundBoxCornerVector(); +}); +Clazz_defineMethod(c$, "getBBoxVertices", +function(){ +return this.boxInfo.getBoundBoxVertices(); +}); +Clazz_defineMethod(c$, "setBoundBox", +function(pt1, pt2, byCorner, scale){ +if (scale == 0 && this.msInfo != null) { +this.msInfo.remove("boundbox"); +this.defaultBBox = null; +this.isBbcageDefault = false; +this.calcBoundBoxDimensions(null, scale = 1); +}this.isBbcageDefault = false; +this.bboxModels = null; +this.bboxAtoms = null; +this.boxInfo.setBoundBox(pt1, pt2, byCorner, scale); +}, "JU.T3,JU.T3,~B,~N"); +Clazz_defineMethod(c$, "getBoundBoxCommand", +function(withOptions){ +if (!withOptions && this.bboxAtoms != null) return "boundbox " + JU.Escape.eBS(this.bboxAtoms); +this.ptTemp.setT(this.boxInfo.getBoundBoxCenter()); +var bbVector = this.boxInfo.getBoundBoxCornerVector(); +var s = (withOptions ? "boundbox " + JU.Escape.eP(this.ptTemp) + " " + JU.Escape.eP(bbVector) + "\n#or\n" : ""); +this.ptTemp.sub(bbVector); +s += "boundbox corners " + JU.Escape.eP(this.ptTemp) + " "; +this.ptTemp.scaleAdd2(2, bbVector, this.ptTemp); +var v = Math.abs(8 * bbVector.x * bbVector.y * bbVector.z); +s += JU.Escape.eP(this.ptTemp) + " # volume = " + v; +return s; +}, "~B"); +Clazz_defineMethod(c$, "findAtomsInRectangle", +function(rect){ +var bsModels = this.vwr.getVisibleFramesBitSet(); +var bs = new JU.BS(); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (!bsModels.get(atom.mi)) i = this.am[atom.mi].firstAtomIndex; + else if (atom.checkVisible() && rect.contains(atom.sX, atom.sY)) bs.set(i); +} +return bs; +}, "JU.Rectangle"); +Clazz_defineMethod(c$, "getDefaultVdwType", +function(modelIndex){ +return (!this.am[modelIndex].isBioModel ? J.c.VDW.AUTO_BABEL : this.am[modelIndex].hydrogenCount == 0 ? J.c.VDW.AUTO_JMOL : J.c.VDW.AUTO_BABEL); +}, "~N"); +Clazz_defineMethod(c$, "setRotationRadius", +function(modelIndex, angstroms){ +if (this.isJmolDataFrameForModel(modelIndex)) { +this.am[modelIndex].defaultRotationRadius = angstroms; +return false; +}return true; +}, "~N,~N"); +Clazz_defineMethod(c$, "calcRotationRadius", +function(modelIndex, center, useBoundBox){ +if (this.isJmolDataFrameForModel(modelIndex)) { +var r = this.am[modelIndex].defaultRotationRadius; +return (r == 0 ? 10 : r); +}if (useBoundBox && this.getDefaultBoundBox() != null) return this.defaultBBox.getMaxDim() / 2 * 1.2; +if (this.ac == 0) return 10; +modelIndex = -2; +var maxRadius = 0; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (this.isJmolDataFrameForAtom(atom)) { +modelIndex = atom.mi; +while (i >= 0 && this.at[i] != null && this.at[i].mi == modelIndex) i--; + +i++; +continue; +} else if (atom.mi != modelIndex) { +modelIndex = atom.mi; +var uc = (this.am[modelIndex].isBioModel ? null : this.getUnitCell(modelIndex)); +if (uc != null) { +var pts = uc.getUnitCellVerticesNoOffset(); +var off = uc.getCartesianOffset(); +for (var j = 0; j < 8; j++) { +this.ptTemp.setT(pts[j]); +this.ptTemp.add(off); +maxRadius = Math.max(maxRadius, center.distance(this.ptTemp)); +} +}}var d = center.distance(atom) + this.getRadiusVdwJmol(atom); +if (d > maxRadius) maxRadius = d; +} +return (maxRadius == 0 ? 10 : maxRadius); +}, "~N,JU.P3,~B"); +Clazz_defineMethod(c$, "calcBoundBoxDimensions", +function(bs, scale){ +if (bs != null && bs.nextSetBit(0) < 0) bs = null; +if (bs == null && this.isBbcageDefault || this.ac == 0) return; +if (this.getDefaultBoundBox() == null) { +this.bboxModels = this.getModelBS(this.bboxAtoms = JU.BSUtil.copy(bs), false); +if (this.calcAtomsMinMax(bs, this.boxInfo) == this.ac) this.isBbcageDefault = true; +if (bs == null) { +if (this.unitCells != null) this.calcUnitCellMinMax(); +}} else { +var vertices = this.defaultBBox.getBoundBoxVertices(); +this.boxInfo.reset(); +for (var j = 0; j < 8; j++) this.boxInfo.addBoundBoxPoint(vertices[j]); + +}this.boxInfo.setBbcage(scale); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getDefaultBoundBox", +function(){ +var bbox = this.getInfoM("boundbox"); +if (bbox == null) this.defaultBBox = null; + else { +if (this.defaultBBox == null) this.defaultBBox = new JU.BoxInfo(); +this.defaultBBox.setBoundBoxFromOABC(bbox); +}return this.defaultBBox; +}); +Clazz_defineMethod(c$, "getBoxInfo", +function(bs, scale){ +if (bs == null) return this.boxInfo; +var bi = new JU.BoxInfo(); +this.calcAtomsMinMax(bs, bi); +bi.setBbcage(scale); +return bi; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "calcAtomsMinMax", +function(bs, boxInfo){ +boxInfo.reset(); +var nAtoms = 0; +var isAll = (bs == null); +var i0 = (isAll ? this.ac - 1 : bs.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bs.nextSetBit(i + 1))) { +nAtoms++; +var a = this.at[i]; +if (a != null && !this.isJmolDataFrameForAtom(a)) boxInfo.addBoundBoxPoint(a); +} +return nAtoms; +}, "JU.BS,JU.BoxInfo"); +Clazz_defineMethod(c$, "calcUnitCellMinMax", +function(){ +var pt = new JU.P3(); +for (var i = 0; i < this.mc; i++) { +var uc = this.unitCells[i]; +if (uc == null || !uc.getCoordinatesAreFractional()) continue; +var vertices = uc.getUnitCellVerticesNoOffset(); +var offset = uc.getCartesianOffset(); +for (var j = 0; j < 8; j++) { +pt.add2(offset, vertices[j]); +this.boxInfo.addBoundBoxPoint(pt); +} +} +}); +Clazz_defineMethod(c$, "calcRotationRadiusBs", +function(bs){ +var center = this.getAtomSetCenter(bs); +var maxRadius = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var atom = this.at[i]; +var distAtom = center.distance(atom); +var outerVdw = distAtom + this.getRadiusVdwJmol(atom); +if (outerVdw > maxRadius) maxRadius = outerVdw; +} +return (maxRadius == 0 ? 10 : maxRadius); +}, "JU.BS"); +Clazz_defineMethod(c$, "getCenterAndPoints", +function(vAtomSets, addCenters){ +var bsAtoms1; +var bsAtoms2; +var n = (addCenters ? 1 : 0); +for (var ii = vAtomSets.size(); --ii >= 0; ) { +var bss = vAtomSets.get(ii); +bsAtoms1 = bss[0]; +if (Clazz_instanceOf(bss[1],"JU.BS")) { +bsAtoms2 = bss[1]; +n += Math.min(bsAtoms1.cardinality(), bsAtoms2.cardinality()); +} else { +n += Math.min(bsAtoms1.cardinality(), (bss[1]).length); +}} +var points = Clazz_newArray(2, n, null); +if (addCenters) { +points[0][0] = new JU.P3(); +points[1][0] = new JU.P3(); +}for (var ii = vAtomSets.size(); --ii >= 0; ) { +var bss = vAtomSets.get(ii); +bsAtoms1 = bss[0]; +if (Clazz_instanceOf(bss[1],"JU.BS")) { +bsAtoms2 = bss[1]; +for (var i = bsAtoms1.nextSetBit(0), j = bsAtoms2.nextSetBit(0); i >= 0 && j >= 0; i = bsAtoms1.nextSetBit(i + 1), j = bsAtoms2.nextSetBit(j + 1)) { +points[0][--n] = this.at[i]; +points[1][n] = this.at[j]; +if (addCenters) { +points[0][0].add(this.at[i]); +points[1][0].add(this.at[j]); +}} +} else { +var coords = bss[1]; +for (var i = bsAtoms1.nextSetBit(0), j = 0; i >= 0 && j < coords.length; i = bsAtoms1.nextSetBit(i + 1), j++) { +points[0][--n] = this.at[i]; +points[1][n] = coords[j]; +if (addCenters) { +points[0][0].add(this.at[i]); +points[1][0].add(coords[j]); +}} +}} +if (addCenters) { +points[0][0].scale(1 / (points[0].length - 1)); +points[1][0].scale(1 / (points[1].length - 1)); +}return points; +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "getAtomSetCenter", +function(bs){ +var ptCenter = new JU.P3(); +var nPoints = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (!this.isJmolDataFrameForAtom(this.at[i])) { +nPoints++; +ptCenter.add(this.at[i]); +}} +if (nPoints > 1) ptCenter.scale(1.0 / nPoints); +return ptCenter; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAverageAtomPoint", +function(){ +return this.getAtomSetCenter(this.vwr.bsA()); +}); +Clazz_defineMethod(c$, "setAPm", +function(bs, tok, iValue, fValue, sValue, values, list){ +this.setAPa(bs, tok, iValue, fValue, sValue, values, list); +switch (tok) { +case 1094715418: +case 1631586315: +if (this.vwr.getBoolean(603979944)) this.assignAromaticBondsBs(true, null); +break; +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz_defineMethod(c$, "addStateScript", +function(script1, bsBonds, bsAtoms1, bsAtoms2, script2, addFrameNumber, postDefinitions){ +var iModel = this.vwr.am.cmi; +if (addFrameNumber) { +if (this.thisStateModel != iModel) script1 = "frame " + (iModel < 0 ? "all #" + iModel : this.getModelNumberDotted(iModel)) + ";\n " + script1; +this.thisStateModel = iModel; +} else { +this.thisStateModel = -1; +}var stateScript = new JM.StateScript(this.thisStateModel, script1, bsBonds, bsAtoms1, bsAtoms2, script2, postDefinitions); +if (stateScript.isValid()) { +this.stateScripts.addLast(stateScript); +}return stateScript; +}, "~S,JU.BS,JU.BS,JU.BS,~S,~B,~B"); +Clazz_defineMethod(c$, "freezeModels", +function(){ +this.haveBioModels = false; +for (var iModel = this.mc; --iModel >= 0; ) this.haveBioModels = new Boolean (this.haveBioModels | this.am[iModel].freeze()).valueOf(); + +}); +Clazz_defineMethod(c$, "getStructureList", +function(){ +return this.vwr.getStructureList(); +}); +Clazz_defineMethod(c$, "getInfoM", +function(keyName){ +return (this.msInfo == null ? null : this.msInfo.get(keyName)); +}, "~S"); +Clazz_defineMethod(c$, "getMSInfoB", +function(keyName){ +var val = this.getInfoM(keyName); +return (Clazz_instanceOf(val, Boolean) && (val).booleanValue()); +}, "~S"); +Clazz_defineMethod(c$, "isTrajectory", +function(modelIndex){ +return this.am[modelIndex].isTrajectory; +}, "~N"); +Clazz_defineMethod(c$, "isTrajectorySubFrame", +function(i){ +return (this.am[i].trajectoryBaseIndex != i); +}, "~N"); +Clazz_defineMethod(c$, "isTrajectoryMeasurement", +function(countPlusIndices){ +return (this.trajectory != null && this.trajectory.hasMeasure(countPlusIndices)); +}, "~A"); +Clazz_defineMethod(c$, "getModelBS", +function(atomList, allTrajectories){ +var bs = new JU.BS(); +var modelIndex = 0; +var isAll = (atomList == null); +allTrajectories = new Boolean (allTrajectories & (this.trajectory != null)).valueOf(); +var i0 = (isAll ? 0 : atomList.nextSetBit(0)); +for (var i = i0; i >= 0 && i < this.ac; i = (isAll ? i + 1 : atomList.nextSetBit(i + 1))) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +bs.set(modelIndex = this.at[i].mi); +if (allTrajectories) this.trajectory.getModelBS(modelIndex, bs); +var m = this.am[modelIndex]; +if (m.isOrderly) i = m.firstAtomIndex + m.act - 1; +} +return bs; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "getIterativeModels", +function(allowJmolData){ +var bs = new JU.BS(); +for (var i = 0; i < this.mc; i++) { +if (!allowJmolData && this.isJmolDataFrameForModel(i)) continue; +if (!this.isTrajectorySubFrame(i)) bs.set(i); +} +return bs; +}, "~B"); +Clazz_defineMethod(c$, "fillAtomData", +function(atomData, mode){ +if ((mode & 4) != 0) { +this.getMolecules(); +atomData.bsMolecules = new Array(this.molecules.length); +atomData.atomMolecule = Clazz_newIntArray (this.ac, 0); +var bs; +for (var i = 0; i < this.molecules.length; i++) { +bs = atomData.bsMolecules[i] = this.molecules[i].atomList; +for (var iAtom = bs.nextSetBit(0); iAtom >= 0; iAtom = bs.nextSetBit(iAtom + 1)) atomData.atomMolecule[iAtom] = i; + +} +}if ((mode & 8) != 0) { +var nH = Clazz_newIntArray (1, 0); +atomData.hAtomRadius = this.vwr.getVanderwaalsMar(1) / 1000; +atomData.hAtoms = this.calculateHydrogens(atomData.bsSelected, nH, null, 512); +atomData.hydrogenAtomCount = nH[0]; +return; +}if (atomData.modelIndex < 0) atomData.firstAtomIndex = (atomData.bsSelected == null ? 0 : Math.max(0, atomData.bsSelected.nextSetBit(0))); + else atomData.firstAtomIndex = this.am[atomData.modelIndex].firstAtomIndex; +atomData.lastModelIndex = atomData.firstModelIndex = (this.ac == 0 ? 0 : this.at[atomData.firstAtomIndex].mi); +atomData.modelName = this.getModelNumberDotted(atomData.firstModelIndex); +this.fillADa(atomData, mode); +}, "J.atomdata.AtomData,~N"); +Clazz_defineMethod(c$, "getModelNumberDotted", +function(modelIndex){ +return (this.mc < 1 || modelIndex >= this.mc || modelIndex < 0 ? "" : JU.Escape.escapeModelFileNumber(this.modelFileNumbers[modelIndex])); +}, "~N"); +Clazz_defineMethod(c$, "getModelNumber", +function(modelIndex){ +return this.modelNumbers[modelIndex == 2147483647 ? this.mc - 1 : modelIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getModelProperty", +function(modelIndex, property){ +var props = this.am[modelIndex].properties; +return props == null ? null : props.getProperty(property); +}, "~N,~S"); +Clazz_defineMethod(c$, "getModelAuxiliaryInfo", +function(modelIndex){ +return (modelIndex < 0 ? null : this.am[modelIndex].auxiliaryInfo); +}, "~N"); +Clazz_defineMethod(c$, "setInfo", +function(modelIndex, key, value){ +if (modelIndex >= 0 && modelIndex < this.mc) { +if (value == null) this.am[modelIndex].auxiliaryInfo.remove(key); + else this.am[modelIndex].auxiliaryInfo.put(key, value); +}}, "~N,~O,~O"); +Clazz_defineMethod(c$, "getInfo", +function(modelIndex, key){ +return (modelIndex < 0 ? null : this.am[modelIndex].auxiliaryInfo.get(key)); +}, "~N,~S"); +Clazz_defineMethod(c$, "getInfoB", +function(modelIndex, keyName){ +var info = this.am[modelIndex].auxiliaryInfo; +return (info != null && info.containsKey(keyName) && (info.get(keyName)).booleanValue()); +}, "~N,~S"); +Clazz_defineMethod(c$, "getInfoI", +function(modelIndex, keyName){ +var info = this.am[modelIndex].auxiliaryInfo; +if (info != null && info.containsKey(keyName)) { +return (info.get(keyName)).intValue(); +}return -2147483648; +}, "~N,~S"); +Clazz_defineMethod(c$, "getInsertionCountInModel", +function(modelIndex){ +return this.am[modelIndex].insertionCount; +}, "~N"); +c$.modelFileNumberFromFloat = Clazz_defineMethod(c$, "modelFileNumberFromFloat", +function(fDotM){ +var file = Clazz_doubleToInt(Math.floor(fDotM)); +var model = Clazz_doubleToInt(Math.floor((fDotM - file + 0.00001) * 10000)); +while (model != 0 && model % 10 == 0) model /= 10; + +return file * 1000000 + model; +}, "~N"); +Clazz_defineMethod(c$, "getChainCountInModelWater", +function(modelIndex, countWater){ +if (modelIndex < 0) { +var chainCount = 0; +for (var i = this.mc; --i >= 0; ) chainCount += this.am[i].getChainCount(countWater); + +return chainCount; +}return this.am[modelIndex].getChainCount(countWater); +}, "~N,~B"); +Clazz_defineMethod(c$, "getGroupCountInModel", +function(modelIndex){ +if (modelIndex < 0) { +var groupCount = 0; +for (var i = this.mc; --i >= 0; ) groupCount += this.am[i].getGroupCount(); + +return groupCount; +}return this.am[modelIndex].getGroupCount(); +}, "~N"); +Clazz_defineMethod(c$, "calcSelectedGroupsCount", +function(){ +var bsSelected = this.vwr.bsA(); +for (var i = this.mc; --i >= 0; ) this.am[i].calcSelectedGroupsCount(bsSelected); + +}); +Clazz_defineMethod(c$, "isJmolDataFrameForModel", +function(modelIndex){ +return this.haveJmolDataFrames && (this.am != null && modelIndex >= 0 && modelIndex < this.mc && this.am[modelIndex].isJmolDataFrame); +}, "~N"); +Clazz_defineMethod(c$, "isJmolDataFrameForAtom", +function(atom){ +return this.haveJmolDataFrames && this.am[atom.mi].isJmolDataFrame; +}, "JM.Atom"); +Clazz_defineMethod(c$, "setJmolDataFrame", +function(type, modelIndex, modelDataIndex){ +this.haveJmolDataFrames = true; +var model = this.am[type == null ? this.am[modelDataIndex].dataSourceFrame : modelIndex]; +if (type == null) { +type = this.am[modelDataIndex].jmolFrameType; +}if (modelIndex >= 0) { +if (model.dataFrames == null) { +model.dataFrames = new java.util.Hashtable(); +}this.am[modelDataIndex].dataSourceFrame = modelIndex; +this.am[modelDataIndex].jmolFrameType = type; +model.dataFrames.put(type, Integer.$valueOf(modelDataIndex)); +}if (type.startsWith("quaternion") && type.indexOf("deriv") < 0) { +type = type.substring(0, type.indexOf(" ")); +model.dataFrames.put(type, Integer.$valueOf(modelDataIndex)); +}}, "~S,~N,~N"); +Clazz_defineMethod(c$, "getJmolDataFrameIndex", +function(modelIndex, type){ +if (this.am[modelIndex].dataFrames == null) { +return -1; +}var index = this.am[modelIndex].dataFrames.get(type); +return (index == null ? -1 : index.intValue()); +}, "~N,~S"); +Clazz_defineMethod(c$, "clearDataFrameReference", +function(modelIndex){ +for (var i = 0; i < this.mc; i++) { +var df = this.am[i].dataFrames; +if (df == null) { +continue; +}var e = df.values().iterator(); +while (e.hasNext()) { +if ((e.next()).intValue() == modelIndex) { +e.remove(); +}} +} +}, "~N"); +Clazz_defineMethod(c$, "getJmolFrameType", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.am[modelIndex].jmolFrameType : "modelSet"); +}, "~N"); +Clazz_defineMethod(c$, "getJmolDataSourceFrame", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.am[modelIndex].dataSourceFrame : -1); +}, "~N"); +Clazz_defineMethod(c$, "saveModelOrientation", +function(modelIndex, orientation){ +this.am[modelIndex].orientation = orientation; +}, "~N,JM.Orientation"); +Clazz_defineMethod(c$, "getModelOrientation", +function(modelIndex){ +return this.am[modelIndex].orientation; +}, "~N"); +Clazz_defineMethod(c$, "getPDBHeader", +function(modelIndex){ +return (this.am[modelIndex].isBioModel ? (this.am[modelIndex]).getFullPDBHeader() : this.getFileHeader(modelIndex)); +}, "~N"); +Clazz_defineMethod(c$, "getFileHeader", +function(modelIndex){ +if (modelIndex < 0) return ""; +if (this.am[modelIndex].isBioModel) return this.getPDBHeader(modelIndex); +var info = this.getInfo(modelIndex, "fileHeader"); +if (info == null) info = this.modelSetName; +if (info != null) return info; +return "no header information found"; +}, "~N"); +Clazz_defineMethod(c$, "getAltLocCountInModel", +function(modelIndex){ +return this.am[modelIndex].altLocCount; +}, "~N"); +Clazz_defineMethod(c$, "getAltLocIndexInModel", +function(modelIndex, alternateLocationID){ +if (alternateLocationID == '\0') { +return 0; +}var altLocList = this.getAltLocListInModel(modelIndex); +if (altLocList.length == 0) { +return 0; +}return altLocList.indexOf(alternateLocationID) + 1; +}, "~N,~S"); +Clazz_defineMethod(c$, "getInsertionCodeIndexInModel", +function(modelIndex, insertionCode){ +if (insertionCode == '\0') return 0; +var codeList = this.getInsertionListInModel(modelIndex); +if (codeList.length == 0) return 0; +return codeList.indexOf(insertionCode) + 1; +}, "~N,~S"); +Clazz_defineMethod(c$, "getAltLocListInModel", +function(modelIndex){ +var str = this.getInfo(modelIndex, "altLocs"); +return (str == null ? "" : str); +}, "~N"); +Clazz_defineMethod(c$, "getInsertionListInModel", +function(modelIndex){ +var str = this.getInfo(modelIndex, "insertionCodes"); +return (str == null ? "" : str); +}, "~N"); +Clazz_defineMethod(c$, "getModelSymmetryCount", +function(modelIndex){ +return (this.am[modelIndex].biosymmetryCount > 0 ? this.am[modelIndex].biosymmetryCount : this.unitCells == null || this.unitCells[modelIndex] == null ? 0 : this.unitCells[modelIndex].getSpaceGroupOperationCount()); +}, "~N"); +Clazz_defineMethod(c$, "getModelCellRange", +function(modelIndex){ +return (this.unitCells == null ? null : this.unitCells[modelIndex].getCellRange()); +}, "~N"); +Clazz_defineMethod(c$, "getLastVibrationVector", +function(modelIndex, tok){ +if (this.vibrations != null && modelIndex < this.vwr.ms.mc) { +var v; +var a1 = (modelIndex < 0 || this.isTrajectory(modelIndex) || modelIndex >= this.mc - 1 ? this.ac : this.am[modelIndex + 1].firstAtomIndex); +var a0 = (modelIndex <= 0 ? 0 : this.am[modelIndex].firstAtomIndex); +for (var i = a1; --i >= a0; ) { +if ((modelIndex < 0 || !JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].mi == modelIndex) && ((tok == 1275072532 || tok == 0) && (v = this.getModulation(i)) != null || (tok == 4166 || tok == 0) && (v = this.getVibration(i, false)) != null) && v.isNonzero()) return i; +} +}return -1; +}, "~N,~N"); +Clazz_defineMethod(c$, "getModulationList", +function(bs, type, t456){ +var list = new JU.Lst(); +if (this.vibrations != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (Clazz_instanceOf(this.vibrations[i],"J.api.JmolModulationSet")) list.addLast((this.vibrations[i]).getModulation(type, t456, false)); + else list.addLast(Float.$valueOf(type == 'O' ? NaN : -1)); + +return list; +}, "JU.BS,~S,JU.P3"); +Clazz_defineMethod(c$, "getElementsPresentBitSet", +function(modelIndex){ +if (modelIndex >= 0) return this.elementsPresent[modelIndex]; +var bs = new JU.BS(); +for (var i = 0; i < this.mc; i++) bs.or(this.elementsPresent[i]); + +return bs; +}, "~N"); +Clazz_defineMethod(c$, "getMoleculeIndex", +function(atomIndex, inModel){ +if (this.moleculeCount == 0) this.getMolecules(); +for (var i = 0; i < this.moleculeCount; i++) { +if (this.molecules[i].atomList.get(atomIndex)) return (inModel ? this.molecules[i].indexInModel : i); +} +return 0; +}, "~N,~B"); +Clazz_defineMethod(c$, "getMoleculeBitSet", +function(bs){ +if (this.moleculeCount == 0) this.getMolecules(); +var bsResult = JU.BSUtil.copy(bs); +var bsInitial = JU.BSUtil.copy(bs); +var i = 0; +var bsTemp = new JU.BS(); +while ((i = bsInitial.length() - 1) >= 0) { +bsTemp = this.getMoleculeBitSetForAtom(i); +if (bsTemp == null) { +bsInitial.clear(i); +bsResult.clear(i); +continue; +}bsInitial.andNot(bsTemp); +bsResult.or(bsTemp); +} +return bsResult; +}, "JU.BS"); +Clazz_defineMethod(c$, "getMoleculeBitSetForAtom", +function(atomIndex){ +if (this.moleculeCount == 0) this.getMolecules(); +for (var i = 0; i < this.moleculeCount; i++) if (this.molecules[i].atomList.get(atomIndex)) return this.molecules[i].atomList; + +return null; +}, "~N"); +Clazz_defineMethod(c$, "getModelDipole", +function(modelIndex){ +if (modelIndex < 0) return null; +var dipole = this.getInfo(modelIndex, "dipole"); +if (dipole == null) dipole = this.getInfo(modelIndex, "DIPOLE_VEC"); +return dipole; +}, "~N"); +Clazz_defineMethod(c$, "calculateMolecularDipole", +function(modelIndex, bsAtoms){ +if (bsAtoms != null) { +var ia = bsAtoms.nextSetBit(0); +if (ia < 0) return null; +modelIndex = this.at[ia].mi; +}if (modelIndex < 0) return null; +var nPos = 0; +var nNeg = 0; +var cPos = 0; +var cNeg = 0; +var pos = new JU.V3(); +var neg = new JU.V3(); +if (bsAtoms == null) bsAtoms = this.getModelAtomBitSetIncludingDeleted(-1, false); +this.vwr.getOrCalcPartialCharges(this.am[modelIndex].bsAtoms, null); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i]) || this.at[i].mi != modelIndex) { +continue; +}var c = this.partialCharges[i]; +if (c < 0) { +nNeg++; +cNeg += c; +neg.scaleAdd2(c, this.at[i], neg); +} else if (c > 0) { +nPos++; +cPos += c; +pos.scaleAdd2(c, this.at[i], pos); +}} +if (Math.abs(cPos + cNeg) > 0.015) { +JU.Logger.info("Dipole calculation requires balanced charges: " + cPos + " " + cNeg); +return null; +}if (nNeg == 0 || nPos == 0) return null; +pos.add(neg); +pos.scale(4.8); +return pos; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getMoleculeCountInModel", +function(modelIndex){ +var n = 0; +if (this.moleculeCount == 0) this.getMolecules(); +if (modelIndex < 0) return this.moleculeCount; +for (var i = 0; i < this.mc; i++) { +if (modelIndex == i) n += this.am[i].moleculeCount; +} +return n; +}, "~N"); +Clazz_defineMethod(c$, "calcSelectedMoleculesCount", +function(){ +var bsSelected = this.vwr.bsA(); +if (this.moleculeCount == 0) this.getMolecules(); +this.selectedMolecules.xor(this.selectedMolecules); +var bsTemp = new JU.BS(); +for (var i = 0; i < this.moleculeCount; i++) { +JU.BSUtil.copy2(bsSelected, bsTemp); +bsTemp.and(this.molecules[i].atomList); +if (bsTemp.length() > 0) { +this.selectedMolecules.set(i); +}} +}); +Clazz_defineMethod(c$, "setCentroid", +function(bs, minmax){ +var bsDelete = this.getNotInCentroid(bs, minmax); +if (bsDelete != null && bsDelete.nextSetBit(0) >= 0) this.vwr.deleteAtoms(bsDelete, false); +}, "JU.BS,~A"); +Clazz_defineMethod(c$, "getNotInCentroid", +function(bs, minmax){ +var iAtom0 = bs.nextSetBit(0); +if (iAtom0 < 0) return null; +var uc = this.getUnitCell(this.at[iAtom0].mi); +return (uc == null ? null : uc.notInCentroid(this, bs, minmax)); +}, "JU.BS,~A"); +Clazz_defineMethod(c$, "getMolecules", +function(){ +if (this.moleculeCount > 0) return this.molecules; +if (this.molecules == null) this.molecules = new Array(4); +this.moleculeCount = 0; +var m = null; +var bsModelAtoms = new Array(this.mc); +var biobranches = null; +for (var i = 0; i < this.mc; i++) { +bsModelAtoms[i] = this.vwr.getModelUndeletedAtomsBitSet(i); +m = this.am[i]; +m.moleculeCount = 0; +biobranches = (m.isBioModel ? (m).getBioBranches(biobranches) : null); +} +this.molecules = JU.JmolMolecule.getMolecules(this.at, bsModelAtoms, biobranches, null); +this.moleculeCount = this.molecules.length; +for (var i = this.moleculeCount; --i >= 0; ) { +m = this.am[this.molecules[i].modelIndex]; +m.firstMoleculeIndex = i; +m.moleculeCount++; +} +return this.molecules; +}); +Clazz_defineMethod(c$, "initializeBspf", +function(){ +if (this.bspf != null && this.bspf.isValid) return; +if (this.showRebondTimes) JU.Logger.startTimer("build bspf"); +var bspf = new J.bspt.Bspf(3); +if (JU.Logger.debugging) JU.Logger.debug("sequential bspt order"); +var bsNew = JU.BS.newN(this.mc); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (!JM.AtomCollection.isDeleted(atom) && !this.isTrajectorySubFrame(atom.mi)) { +bspf.addTuple(this.am[atom.mi].trajectoryBaseIndex, atom); +bsNew.set(atom.mi); +}} +if (this.showRebondTimes) { +JU.Logger.checkTimer("build bspf", false); +bspf.stats(); +}for (var i = bsNew.nextSetBit(0); i >= 0; i = bsNew.nextSetBit(i + 1)) bspf.validateModel(i, true); + +bspf.isValid = true; +this.bspf = bspf; +}); +Clazz_defineMethod(c$, "initializeBspt", +function(modelIndex){ +this.initializeBspf(); +if (this.bspf.isInitializedIndex(modelIndex)) return; +this.bspf.initialize(modelIndex, this.at, this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +}, "~N"); +Clazz_defineMethod(c$, "setIteratorForPoint", +function(iterator, modelIndex, pt, distance){ +if (modelIndex < 0) { +iterator.setCenter(pt, distance); +return; +}this.initializeBspt(modelIndex); +iterator.setModel(this, modelIndex, this.am[modelIndex].firstAtomIndex, 2147483647, pt, distance, null); +}, "J.api.AtomIndexIterator,~N,JU.T3,~N"); +Clazz_defineMethod(c$, "setIteratorForAtom", +function(iterator, modelIndex, atomIndex, distance, rd){ +if (modelIndex < 0) modelIndex = this.at[atomIndex].mi; +modelIndex = this.am[modelIndex].trajectoryBaseIndex; +this.initializeBspt(modelIndex); +iterator.setModel(this, modelIndex, this.am[modelIndex].firstAtomIndex, atomIndex, this.at[atomIndex], distance, rd); +}, "J.api.AtomIndexIterator,~N,~N,~N,J.atomdata.RadiusData"); +Clazz_defineMethod(c$, "getSelectedAtomIterator", +function(bsSelected, isGreaterOnly, modelZeroBased, hemisphereOnly, isMultiModel){ +this.initializeBspf(); +var iter; +if (isMultiModel) { +var bsModels = this.getModelBS(bsSelected, false); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) this.initializeBspt(i); + +iter = new JM.AtomIteratorWithinModelSet(bsModels); +} else { +iter = new JM.AtomIteratorWithinModel(); +}iter.initialize(this.bspf, bsSelected, isGreaterOnly, modelZeroBased, hemisphereOnly, this.vwr.isParallel()); +return iter; +}, "JU.BS,~B,~B,~B,~B"); +Clazz_overrideMethod(c$, "getBondCountInModel", +function(modelIndex){ +return (modelIndex < 0 ? this.bondCount : this.am[modelIndex].getBondCount()); +}, "~N"); +Clazz_defineMethod(c$, "getAtomCountInModel", +function(modelIndex){ +return (modelIndex < 0 ? this.ac : this.am[modelIndex].act); +}, "~N"); +Clazz_defineMethod(c$, "getModelAtomBitSetIncludingDeletedBs", +function(bsModels){ +var bs = new JU.BS(); +if (bsModels == null && this.bsAll == null) this.bsAll = JU.BSUtil.setAll(this.ac); +if (bsModels == null) bs.or(this.bsAll); + else for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) bs.or(this.getModelAtomBitSetIncludingDeleted(i, false)); + +return bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "getModelAtomBitSetIncludingDeleted", +function(modelIndex, asCopy){ +var bs = (modelIndex < 0 ? this.bsAll : this.am[modelIndex].bsAtoms); +if (bs == null) bs = this.bsAll = JU.BSUtil.setAll(this.ac); +return (asCopy ? JU.BSUtil.copy(bs) : bs); +}, "~N,~B"); +Clazz_defineMethod(c$, "getAtomBitsMaybeDeleted", +function(tokType, specInfo){ +var bs; +switch (tokType) { +default: +return this.getAtomBitsMDa(tokType, specInfo, bs = new JU.BS()); +case 1073741925: +case 1073742189: +case 1111490587: +case 1073742128: +case 1073741863: +case 1086324744: +bs = new JU.BS(); +return (this.haveBioModels ? this.bioModelset.getAtomBitsStr(tokType, specInfo, bs) : bs); +case 1677721602: +case 1073742331: +return this.getAtomBitsMDb(tokType, specInfo); +case 1812599299: +var boxInfo = this.getBoxInfo(specInfo, 1); +bs = this.getAtomsWithin(boxInfo.getBoundBoxCornerVector().length() + 0.0001, boxInfo.getBoundBoxCenter(), null, -1); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (!boxInfo.isWithin(this.at[i])) bs.clear(i); + +return bs; +case 1094713350: +bs = JU.BSUtil.newBitSet2(0, this.ac); +var pt1 = specInfo; +var minmax = Clazz_newIntArray(-1, [Clazz_floatToInt(pt1.x) - 1, Clazz_floatToInt(pt1.y) - 1, Clazz_floatToInt(pt1.z) - 1, Clazz_floatToInt(pt1.x), Clazz_floatToInt(pt1.y), Clazz_floatToInt(pt1.z), 0]); +for (var i = this.mc; --i >= 0; ) { +var uc1 = this.getUnitCell(i); +if (uc1 == null) { +JU.BSUtil.andNot(bs, this.am[i].bsAtoms); +continue; +}bs.andNot(uc1.notInCentroid(this, this.am[i].bsAtoms, minmax)); +} +return bs; +case 1094713360: +return this.getMoleculeBitSet(specInfo); +case 1073742363: +return this.getSelectCodeRange(specInfo); +case 2097196: +bs = JU.BS.newN(this.ac); +var modelIndex = -1; +var nOps = 0; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var bsSym = atom.atomSymmetry; +if (bsSym != null) { +if (atom.mi != modelIndex) { +modelIndex = atom.mi; +if (this.getModelCellRange(modelIndex) == null) continue; +nOps = this.getModelSymmetryCount(modelIndex); +}var n = 0; +for (var j = nOps; --j >= 0; ) if (bsSym.get(j)) if (++n > 1) { +bs.set(i); +break; +} +}} +return bs; +case 1088421903: +return JU.BSUtil.copy(this.bsSymmetry == null ? this.bsSymmetry = JU.BS.newN(this.ac) : this.bsSymmetry); +case 1814695966: +var isSelectUC = ("unitcell".equals(specInfo)); +if (isSelectUC) { +specInfo = JU.P3.new3(1, 1, 1); +} else { +bs = new JU.BS(); +var uc1 = (Clazz_instanceOf(specInfo,"J.api.SymmetryInterface") ? specInfo : this.vwr.getCurrentUnitCell()); +if (uc1 == null) return bs; +uc1 = uc1.getUnitCellMultiplied(); +for (var i = this.ac; --i >= 0; ) { +if (this.at[i] != null) { +this.ptTemp1.setT(this.at[i]); +uc1.toFractional(this.ptTemp1, false); +if (uc1.checkPeriodic(this.ptTemp1)) bs.set(i); +}} +return bs; +}case 1094713349: +bs = new JU.BS(); +var pt = specInfo; +var uc = this.vwr.getSymTemp(); +System.out.println("MS test within"); +for (var mi = -1, i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var mia = this.at[i].getModelIndex(); +if (mi != mia) { +mi = mia; +uc = this.getUnitCell(mi); +}if (uc == null) continue; +this.ptTemp.setT(this.at[i]); +uc.toFractional(this.ptTemp, false); +if (uc.isWithinUnitCell(this.ptTemp, pt.x, pt.y, pt.z)) bs.set(i); +} +System.out.println("MS test within" + bs); +return bs; +} +}, "~N,~O"); +Clazz_defineMethod(c$, "getSelectCodeRange", +function(info){ +var bs = new JU.BS(); +var seqcodeA = info[0]; +var seqcodeB = info[1]; +var chainID = info[2]; +var caseSensitive = this.vwr.getBoolean(603979822); +if (chainID >= 0 && chainID < 300 && !caseSensitive) chainID = this.chainToUpper(chainID); +for (var iModel = this.mc; --iModel >= 0; ) if (this.am[iModel].isBioModel) { +var m = this.am[iModel]; +var id; +for (var i = m.chainCount; --i >= 0; ) { +var chain = m.chains[i]; +if (chainID == -1 || chainID == (id = chain.chainID) || !caseSensitive && id > 0 && id < 300 && chainID == this.chainToUpper(id)) { +var groups = chain.groups; +var n = chain.groupCount; +for (var index = 0; index >= 0; ) { +index = JM.ModelSet.selectSeqcodeRange(groups, n, index, seqcodeA, seqcodeB, bs); +} +}} +} +return bs; +}, "~A"); +c$.selectSeqcodeRange = Clazz_defineMethod(c$, "selectSeqcodeRange", +function(groups, n, index, seqcodeA, seqcodeB, bs){ +var seqcode; +var indexA; +var indexB; +var minDiff; +var isInexact = false; +for (indexA = index; indexA < n && groups[indexA].seqcode != seqcodeA; indexA++) { +} +if (indexA == n) { +if (index > 0) return -1; +isInexact = true; +minDiff = 2147483647; +for (var i = n; --i >= 0; ) if ((seqcode = groups[i].seqcode) > seqcodeA && (seqcode - seqcodeA) < minDiff) { +indexA = i; +minDiff = seqcode - seqcodeA; +} +if (minDiff == 2147483647) return -1; +}if (seqcodeB == 2147483647) { +indexB = n - 1; +isInexact = true; +} else { +for (indexB = indexA; indexB < n && groups[indexB].seqcode != seqcodeB; indexB++) { +} +if (indexB == n) { +if (index > 0) return -1; +isInexact = true; +minDiff = 2147483647; +for (var i = indexA; i < n; i++) if ((seqcode = groups[i].seqcode) < seqcodeB && (seqcodeB - seqcode) < minDiff) { +indexB = i; +minDiff = seqcodeB - seqcode; +} +if (minDiff == 2147483647) return -1; +}}for (var i = indexA; i <= indexB; ++i) groups[i].setAtomBits(bs); + +return (isInexact ? -1 : indexB + 1); +}, "~A,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "getAtomsWithinRadius", +function(distance, bs, withinAllModels, rd, bsSubset){ +var bsResult = new JU.BS(); +bs = JU.BSUtil.andNot(bs, this.vwr.slm.bsDeleted); +var iter = this.getSelectedAtomIterator(bsSubset, false, false, false, false); +if (withinAllModels) { +var fixJavaFloat = !this.vwr.g.legacyJavaFloat; +var ptTemp = new JU.P3(); +var bsModels = (bsSubset == null ? JU.BSUtil.newBitSet2(0, this.mc) : this.getModelBS(bsSubset, false)); +bsModels.and(this.getIterativeModels(false)); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) for (var iModel = bsModels.nextSetBit(0); iModel >= 0; iModel = bsModels.nextSetBit(iModel + 1)) { +if (distance < 0) { +this.getAtomsWithin(distance, this.at[i].getFractionalUnitCoordPt(fixJavaFloat, true, ptTemp), bsResult, iModel); +} else { +this.setIteratorForAtom(iter, iModel, i, distance, rd); +iter.addAtoms(bsResult); +}} + +} else { +if (bsSubset == null) bsResult.or(bs); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (distance < 0) { +this.getAtomsWithin(distance, this.at[i], bsResult, this.at[i].mi); +} else { +this.setIteratorForAtom(iter, -1, i, distance, rd); +iter.addAtoms(bsResult); +}} +}iter.release(); +return bsResult; +}, "~N,JU.BS,~B,J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "getAtomsWithin", +function(distance, coord, bsResult, modelIndex){ +if (bsResult == null) bsResult = new JU.BS(); +if (distance < 0) { +distance = -distance; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom) || modelIndex >= 0 && atom.mi != modelIndex) continue; +if (!bsResult.get(i) && atom.getFractionalUnitDistance(coord, this.ptTemp1, this.ptTemp2) <= distance) bsResult.set(atom.i); +} +return bsResult; +}var iter = this.getSelectedAtomIterator(null, false, false, false, false); +var bsCheck = (modelIndex >= 0 ? JU.BSUtil.newAndSetBit(modelIndex) : this.getIterativeModels(true)); +for (var m = bsCheck.nextSetBit(0); m >= 0; m = bsCheck.nextSetBit(m + 1)) { +var i = this.am[m].bsAtoms.nextSetBit(0); +if (i < 0) continue; +this.setIteratorForAtom(iter, modelIndex, i, -1, null); +iter.setCenter(coord, distance); +iter.addAtoms(bsResult); +} +iter.release(); +return bsResult; +}, "~N,JU.T3,JU.BS,~N"); +Clazz_defineMethod(c$, "deleteBonds", +function(bsBonds, isFullModel){ +if (!isFullModel) { +var bsA = new JU.BS(); +var bsB = new JU.BS(); +for (var i = bsBonds.nextSetBit(0); i >= 0; i = bsBonds.nextSetBit(i + 1)) { +var atom1 = this.bo[i].atom1; +if (this.am[atom1.mi].isModelKit) continue; +bsA.clearAll(); +bsB.clearAll(); +bsA.set(atom1.i); +bsB.set(this.bo[i].getAtomIndex2()); +this.addStateScript("connect ", null, bsA, bsB, "delete", false, true); +} +}this.dBb(bsBonds, isFullModel); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "makeConnections2", +function(minD, maxD, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy, state){ +if (bsBonds == null) bsBonds = new JU.BS(); +var matchAny = (order == 65535); +var matchNull = (order == 131071); +var isAtrop = (order == 65537); +if (matchNull) order = 1; +var matchHbond = JU.Edge.isOrderH(order); +var identifyOnly = false; +var idOrModifyOnly = false; +var createOnly = false; +var autoAromatize = false; +switch (connectOperation) { +case 12291: +return this.deleteConnections(minD, maxD, order, bsA, bsB, isBonds, matchNull); +case 603979872: +case 1073741852: +if (order != 515) { +if (isBonds) { +var bs = bsA; +bsA = new JU.BS(); +bsB = new JU.BS(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +bsA.set(this.bo[i].atom1.i); +bsB.set(this.bo[i].atom2.i); +} +}return Clazz_newIntArray(-1, [matchHbond ? this.autoHbond(bsA, bsB, false) : this.autoBondBs4(bsA, bsB, null, bsBonds, this.vwr.getMadBond(), connectOperation == 603979872, state), 0]); +}idOrModifyOnly = autoAromatize = true; +break; +case 1086324745: +identifyOnly = idOrModifyOnly = true; +break; +case 1073742025: +idOrModifyOnly = true; +break; +case 1073741904: +createOnly = true; +break; +} +var anyOrNoId = matchAny; +var notAnyAndNoId = (!identifyOnly && !matchAny); +this.defaultCovalentMad = this.vwr.getMadBond(); +var minDIsFrac = (minD < 0); +var maxDIsFrac = (maxD < 0); +var isFractional = (minDIsFrac || maxDIsFrac); +var checkDistance = (!isBonds || minD != 0.1 || maxD != 1.0E8); +if (checkDistance) { +minD = this.fixD(minD, minDIsFrac); +maxD = this.fixD(maxD, maxDIsFrac); +}var mad = this.getDefaultMadFromOrder(order); +var nNew = 0; +var nModified = 0; +var bondAB = null; +var atomA = null; +var atomB = null; +var altloc = '\u0000'; +var newOrder = (order | 131072); +var isAromaticOnly = (order != 65535 && (order & 512) != 0); +try { +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +if (isBonds) { +bondAB = this.bo[i]; +atomA = bondAB.atom1; +atomB = bondAB.atom2; +} else { +atomA = this.at[i]; +if (atomA.isDeleted()) continue; +altloc = (this.isModulated(i) ? '\0' : atomA.altloc); +}for (var j = (isBonds ? 0 : bsB.nextSetBit(0)); j >= 0; j = bsB.nextSetBit(j + 1)) { +if (isBonds) { +j = 2147483646; +} else { +if (j == i) continue; +atomB = this.at[j]; +if (atomB == null || atomA.mi != atomB.mi || atomB.isDeleted()) continue; +if (altloc != '\0' && altloc != atomB.altloc && atomB.altloc != '\0') continue; +bondAB = atomA.getBond(atomB); +}if ((bondAB == null ? idOrModifyOnly : createOnly) || checkDistance && !this.isInRange(atomA, atomB, minD, maxD, minDIsFrac, maxDIsFrac, isFractional) || isAromaticOnly && (bondAB != null && !this.allowAromaticBond(bondAB))) continue; +if (bondAB == null) { +bsBonds.set(this.bondAtoms(atomA, atomB, order, mad, bsBonds, energy, addGroup, true).index); +nNew++; +} else { +if (notAnyAndNoId) { +bondAB.setOrder(order); +if (isAtrop) { +this.haveAtropicBonds = true; +bondAB.setAtropisomerOptions(); +}this.bsAromatic.clear(bondAB.index); +}if (anyOrNoId || order == bondAB.order || newOrder == bondAB.order || matchHbond && bondAB.isHydrogen()) { +bsBonds.set(bondAB.index); +nModified++; +}}} +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (autoAromatize) this.assignAromaticBondsBs(true, bsBonds); +if (!identifyOnly) this.sm.setShapeSizeBs(1, -2147483648, null, bsBonds); +return Clazz_newIntArray(-1, [nNew, nModified]); +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N,JU.SB"); +Clazz_defineMethod(c$, "autoBondBs4", +function(bsA, bsB, bsExclude, bsBonds, mad, preJmol11_9_24, state){ +if (preJmol11_9_24) return this.autoBond_Pre_11_9_24(bsA, bsB, bsExclude, bsBonds, mad); +if (this.ac == 0) return 0; +if (mad == 0) mad = 1; +if (this.maxBondingRadius == 1.4E-45) this.findMaxRadii(); +var bondTolerance = this.vwr.getFloat(570425348); +var minBondDistance = this.vwr.getFloat(570425364); +var minBondDistance2 = minBondDistance * minBondDistance; +var nNew = 0; +if (this.showRebondTimes) JU.Logger.startTimer("autobond"); +var lastModelIndex = -1; +var isAll = (bsA == null); +var bsCheck; +var i0; +if (isAll) { +i0 = 0; +bsCheck = null; +} else { +if (bsA.equals(bsB)) { +bsCheck = bsA; +} else { +bsCheck = JU.BSUtil.copy(bsA); +bsCheck.or(bsB); +}i0 = bsCheck.nextSetBit(0); +}var iter = this.getSelectedAtomIterator(null, false, false, true, false); +var useOccupation = false; +for (var i = i0; i >= 0 && i < this.ac; i = (isAll ? i + 1 : bsCheck.nextSetBit(i + 1))) { +var isAtomInSetA = (isAll || bsA.get(i)); +var isAtomInSetB = (isAll || bsB.get(i)); +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var modelIndex = atom.mi; +if (modelIndex != lastModelIndex) { +lastModelIndex = modelIndex; +if (this.isJmolDataFrameForModel(modelIndex)) { +i = this.am[modelIndex].firstAtomIndex + this.am[modelIndex].act - 1; +continue; +}useOccupation = this.getInfoB(modelIndex, "autoBondUsingOccupation"); +}var myBondingRadius = atom.getBondingRadius(); +if (myBondingRadius == 0) continue; +var myFormalCharge = atom.getFormalCharge(); +var useCharge = (myFormalCharge != 0); +if (useCharge) myFormalCharge = Math.signum(myFormalCharge); +var isFirstExcluded = (bsExclude != null && bsExclude.get(i)); +var searchRadius = myBondingRadius + this.maxBondingRadius + bondTolerance; +this.setIteratorForAtom(iter, -1, i, searchRadius, null); +while (iter.hasNext()) { +var atomNear = this.at[iter.next()]; +if (atomNear.isDeleted()) continue; +var j = atomNear.i; +var isNearInSetA = (isAll || bsA.get(j)); +var isNearInSetB = (isAll || bsB.get(j)); +if (!isNearInSetA && !isNearInSetB || !(isAtomInSetA && isNearInSetB || isAtomInSetB && isNearInSetA) || isFirstExcluded && bsExclude.get(j) || useOccupation && this.occupancies != null && (this.occupancies[i] < 50) != (this.occupancies[j] < 50) || useCharge && (Math.signum(atomNear.getFormalCharge()) == myFormalCharge)) continue; +var order = (this.isBondable(myBondingRadius, atomNear.getBondingRadius(), iter.foundDistance2(), minBondDistance2, bondTolerance) ? 1 : 0); +if (order > 0 && this.autoBondCheck(atom, atomNear, order, mad, bsBonds)) { +nNew++; +if (state != null) state.append("connect ({" + i + "}) ({" + j + "});"); +}} +iter.release(); +} +if (this.showRebondTimes) JU.Logger.checkTimer("autoBond", false); +return nNew; +}, "JU.BS,JU.BS,JU.BS,JU.BS,~N,~B,JU.SB"); +Clazz_defineMethod(c$, "isBondable", +function(bondingRadiusA, bondingRadiusB, distance2, minBondDistance2, bondTolerance){ +if (bondingRadiusA == 0 || bondingRadiusB == 0 || distance2 < minBondDistance2) return false; +var maxAcceptable = bondingRadiusA + bondingRadiusB + bondTolerance; +var maxAcceptable2 = maxAcceptable * maxAcceptable; +return (distance2 <= maxAcceptable2); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "autoBondCheck", +function(atomA, atomB, order, mad, bsBonds){ +if (atomA.getCurrentBondCount() > 20 || atomB.getCurrentBondCount() > 20) { +if (!this.maxBondWarned) JU.Logger.warn("maximum auto bond count reached"); +this.maxBondWarned = true; +return false; +}var formalChargeA = atomA.getFormalCharge(); +if (formalChargeA != 0) { +var formalChargeB = atomB.getFormalCharge(); +if ((formalChargeA < 0 && formalChargeB < 0) || (formalChargeA > 0 && formalChargeB > 0)) return false; +}if (atomA.altloc != atomB.altloc && atomA.altloc != '\0' && atomB.altloc != '\0' && this.getModulation(atomA.i) == null) return false; +this.getOrAddBond(atomA, atomB, order, mad, bsBonds, 0, false); +return true; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "autoBond_Pre_11_9_24", +function(bsA, bsB, bsExclude, bsBonds, mad){ +if (this.ac == 0) return 0; +if (mad == 0) mad = 1; +if (this.maxBondingRadius == 1.4E-45) this.findMaxRadii(); +var bondTolerance = this.vwr.getFloat(570425348); +var minBondDistance = this.vwr.getFloat(570425364); +var minBondDistance2 = minBondDistance * minBondDistance; +var nNew = 0; +this.initializeBspf(); +var lastModelIndex = -1; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var isAtomInSetA = (bsA == null || bsA.get(i)); +var isAtomInSetB = (bsB == null || bsB.get(i)); +if (!isAtomInSetA && !isAtomInSetB) continue; +if (atom.isDeleted()) continue; +var modelIndex = atom.mi; +if (modelIndex != lastModelIndex) { +lastModelIndex = modelIndex; +if (this.isJmolDataFrameForModel(modelIndex)) { +for (; --i >= 0; ) if (JM.AtomCollection.isDeleted(this.at[i]) || this.at[i].mi != modelIndex) break; + +i++; +continue; +}}var myBondingRadius = atom.getBondingRadius(); +if (myBondingRadius == 0) continue; +var searchRadius = myBondingRadius + this.maxBondingRadius + bondTolerance; +this.initializeBspt(modelIndex); +var iter = this.bspf.getCubeIterator(modelIndex); +iter.initialize(atom, searchRadius, true); +while (iter.hasMoreElements()) { +var atomNear = iter.nextElement(); +if (atomNear === atom || atomNear.isDeleted()) continue; +var atomIndexNear = atomNear.i; +var isNearInSetA = (bsA == null || bsA.get(atomIndexNear)); +var isNearInSetB = (bsB == null || bsB.get(atomIndexNear)); +if (!isNearInSetA && !isNearInSetB || bsExclude != null && bsExclude.get(atomIndexNear) && bsExclude.get(i)) continue; +if (!(isAtomInSetA && isNearInSetB || isAtomInSetB && isNearInSetA)) continue; +var order = (this.isBondable(myBondingRadius, atomNear.getBondingRadius(), iter.foundDistance2(), minBondDistance2, bondTolerance) ? 1 : 0); +if (order > 0) { +if (this.autoBondCheck(atom, atomNear, order, mad, bsBonds)) nNew++; +}} +iter.release(); +} +return nNew; +}, "JU.BS,JU.BS,JU.BS,JU.BS,~N"); +Clazz_defineMethod(c$, "autoHbond", +function(bsA, bsB, onlyIfHaveCalculated){ +if (onlyIfHaveCalculated) { +var bsModels = this.getModelBS(bsA, false); +for (var i = bsModels.nextSetBit(0); i >= 0 && onlyIfHaveCalculated; i = bsModels.nextSetBit(i + 1)) onlyIfHaveCalculated = !this.am[i].hasRasmolHBonds; + +if (onlyIfHaveCalculated) return 0; +}var haveHAtoms = false; +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) if (this.at[i].getElementNumber() == 1) { +haveHAtoms = true; +break; +} +var bsHBonds = new JU.BS(); +var useRasMol = this.vwr.getBoolean(603979853); +if (bsB == null || useRasMol && !haveHAtoms) { +JU.Logger.info((bsB == null ? "DSSP/DSSR " : "RasMol") + " pseudo-hbond calculation"); +this.calcRasmolHydrogenBonds(bsA, bsB, null, false, 2147483647, false, bsHBonds); +return -bsHBonds.cardinality(); +}JU.Logger.info(haveHAtoms ? "Standard Hbond calculation" : "Jmol pseudo-hbond calculation"); +var bsCO = null; +if (!haveHAtoms) { +bsCO = new JU.BS(); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var atomID = this.at[i].atomID; +switch (atomID) { +case 64: +case 4: +case 14: +case 15: +case 16: +case 17: +bsCO.set(i); +break; +} +} +}var dmax; +var min2; +if (haveHAtoms) { +dmax = this.vwr.getFloat(570425361); +min2 = 1; +} else { +dmax = this.vwr.getFloat(570425360); +min2 = JM.ModelSet.hbondMinRasmol * JM.ModelSet.hbondMinRasmol; +}var max2 = dmax * dmax; +var minAttachedAngle = (this.vwr.getFloat(570425359) * 3.141592653589793 / 180); +var nNew = 0; +var d2 = 0; +if (this.showRebondTimes && JU.Logger.debugging) JU.Logger.startTimer("hbond"); +var C = null; +var D = null; +var iter = this.getSelectedAtomIterator(bsB, false, false, false, false); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var atom = this.at[i]; +var elementNumber = atom.getElementNumber(); +var isH = (elementNumber == 1); +if (isH ? !haveHAtoms : haveHAtoms || elementNumber != 7 && elementNumber != 8) continue; +var firstIsCO; +if (isH) { +firstIsCO = false; +var b = atom.bonds; +if (b == null) continue; +var isOK = false; +for (var j = 0; !isOK && j < b.length; j++) { +var a2 = b[j].getOtherAtom(atom); +var element = a2.getElementNumber(); +isOK = (element == 7 || element == 8); +} +if (!isOK) continue; +} else { +firstIsCO = bsCO.get(i); +}this.setIteratorForAtom(iter, -1, atom.i, dmax, null); +while (iter.hasNext()) { +var atomNear = this.at[iter.next()]; +var elementNumberNear = atomNear.getElementNumber(); +if (atomNear === atom || (isH ? elementNumberNear == 1 : elementNumberNear != 7 && elementNumberNear != 8) || (d2 = iter.foundDistance2()) < min2 || d2 > max2 || firstIsCO && bsCO.get(atomNear.i) || atom.isBonded(atomNear)) { +continue; +}this.v1.sub2(atom, atomNear); +if ((D = JM.ModelSet.checkMinAttachedAngle(atom, minAttachedAngle, this.v1, this.v2, haveHAtoms)) == null) continue; +this.v1.scale(-1); +if ((C = JM.ModelSet.checkMinAttachedAngle(atomNear, minAttachedAngle, this.v1, this.v2, haveHAtoms)) == null) continue; +var energy = 0; +var bo; +if (isH && !Float.isNaN(C.x) && !Float.isNaN(D.x)) { +bo = 4096; +energy = JM.HBond.calcEnergy(Math.sqrt(d2), C.distance(atom), C.distance(D), atomNear.distance(D)) / 1000; +} else { +bo = 2048; +}bsHBonds.set(this.addHBond(atom, atomNear, bo, energy)); +nNew++; +} +} +iter.release(); +this.sm.setShapeSizeBs(1, -2147483648, null, bsHBonds); +if (this.showRebondTimes) JU.Logger.checkTimer("hbond", false); +return (haveHAtoms ? nNew : -nNew); +}, "JU.BS,JU.BS,~B"); +c$.checkMinAttachedAngle = Clazz_defineMethod(c$, "checkMinAttachedAngle", +function(atom1, minAngle, v1, v2, haveHAtoms){ +var bonds = atom1.bonds; +var ignore = true; +var X = null; +if (bonds != null && bonds.length > 0) { +var dMin = 3.4028235E38; +for (var i = bonds.length; --i >= 0; ) if (bonds[i].isCovalent()) { +ignore = false; +var atomA = bonds[i].getOtherAtom(atom1); +if (!haveHAtoms && atomA.getElementNumber() == 1) continue; +v2.sub2(atom1, atomA); +var d = v2.angle(v1); +if (d < minAngle) return null; +if (d < dMin) { +X = atomA; +dMin = d; +}} +}return (ignore ? JU.P3.new3(NaN, 0, 0) : X); +}, "JM.Atom,~N,JU.V3,JU.V3,~B"); +Clazz_defineMethod(c$, "setStructureIndexes", +function(){ +var id; +var idnew = 0; +var lastid = -1; +var imodel = -1; +var lastmodel = -1; +for (var i = 0; i < this.ac; i++) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +if ((imodel = this.at[i].mi) != lastmodel) { +idnew = 0; +lastmodel = imodel; +lastid = -1; +}if ((id = this.at[i].group.getStrucNo()) != lastid && id != 0) { +this.at[i].group.setStrucNo(++idnew); +lastid = idnew; +}} +}); +Clazz_defineMethod(c$, "getModelInfoAsString", +function(){ +var sb = new JU.SB().append("\n"); +if (this.modelSetProperties != null) { +var e = this.modelSetProperties.propertyNames(); +while (e.hasMoreElements()) { +var propertyName = e.nextElement(); +sb.append("\n "); +} +sb.append("\n"); +}for (var i = 0; i < this.mc; ++i) { +sb.append("\n"); +} +sb.append("\n"); +return sb.toString(); +}); +Clazz_defineMethod(c$, "getSymmetryInfoAsString", +function(){ +var sb = new JU.SB().append("Symmetry Information:"); +for (var i = 0; i < this.mc; ++i) { +sb.append("\nmodel #").append(this.getModelNumberDotted(i)).append("; name=").append(this.getModelName(i)).append("\n"); +var unitCell = this.getUnitCell(i); +sb.append(unitCell == null ? "no symmetry information" : unitCell.getSymmetryInfoStr()); +} +return sb.toString(); +}); +Clazz_defineMethod(c$, "createModels", +function(n){ +var newModelCount = this.mc + n; +var newModels = JU.AU.arrayCopyObject(this.am, newModelCount); +this.validateBspf(false); +this.modelNumbers = JU.AU.arrayCopyI(this.modelNumbers, newModelCount); +this.modelFileNumbers = JU.AU.arrayCopyI(this.modelFileNumbers, newModelCount); +this.modelNumbersForAtomLabel = JU.AU.arrayCopyS(this.modelNumbersForAtomLabel, newModelCount); +this.modelNames = JU.AU.arrayCopyS(this.modelNames, newModelCount); +this.frameTitles = JU.AU.arrayCopyS(this.frameTitles, newModelCount); +var f = Clazz_doubleToInt(this.modelFileNumbers[this.mc - 1] / 1000000) + 1; +for (var i = this.mc, pt = 0; i < newModelCount; i++) { +this.modelNumbers[i] = i + this.mc; +this.modelFileNumbers[i] = f * 1000000 + (++pt); +this.modelNumbersForAtomLabel[i] = this.modelNames[i] = f + "." + pt; +} +this.thisStateModel = -1; +var group3Lists = this.getInfoM("group3Lists"); +if (group3Lists != null) { +var group3Counts = this.getInfoM("group3Counts"); +group3Lists = JU.AU.arrayCopyS(group3Lists, newModelCount); +group3Counts = JU.AU.arrayCopyII(group3Counts, newModelCount); +this.msInfo.put("group3Lists", group3Lists); +this.msInfo.put("group3Counts", group3Counts); +}this.unitCells = (this.unitCells == null ? new Array(newModelCount) : JU.AU.arrayCopyObject(this.unitCells, newModelCount)); +for (var i = this.mc; i < newModelCount; i++) { +newModels[i] = new JM.Model().set(this, i, -1, null, null, null); +newModels[i].loadState = " model create #" + i + ";"; +} +this.am = newModels; +this.mc = newModelCount; +this.vwr.setAnimationRange(-1, -1); +}, "~N"); +Clazz_defineMethod(c$, "deleteAtoms", +function(bs){ +if (bs == null) return; +var bsModels = this.getModelBS(bs, false); +var bsBonds = new JU.BS(); +var doNull = false; +for (var i = bs.nextSetBit(0); i >= 0 && i < this.ac; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +this.at[i].$delete(bsBonds); +if (doNull) this.at[i] = null; +} +var bsAtoms = JU.BSUtil.copy(bs); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +m.resetDSSR(false); +m.bsAtomsDeleted.or(bs); +m.bsAtomsDeleted.and(m.bsAtoms); +if (m.bsAsymmetricUnit != null) m.bsAsymmetricUnit.andNot(bs); +if (bsModels.get(m.modelIndex)) { +this.updateBasisFromSite(m.modelIndex); +}bs = JU.BSUtil.andNot(m.bsAtoms, m.bsAtomsDeleted); +m.firstAtomIndex = bs.nextSetBit(0); +m.act = bs.cardinality(); +m.isOrderly = (m.act == m.bsAtoms.length() - m.firstAtomIndex); +} +this.deleteBonds(bsBonds, false); +this.vwr.shm.notifyAtoms("atomsDeleted", Clazz_newArray(-1, [bsAtoms, bsModels])); +this.validateBspf(false); +}, "JU.BS"); +Clazz_defineMethod(c$, "clearDB", +function(atomIndex){ +this.getModelAuxiliaryInfo(this.at[atomIndex].mi).remove("dbName"); +}, "~N"); +Clazz_defineMethod(c$, "adjustAtomArrays", +function(map, i0, ac){ +this.ac = ac; +for (var i = i0; i < ac; i++) { +this.at[i] = this.at[map[i]]; +this.at[i].i = i; +var m = this.am[this.at[i].mi]; +if (m.firstAtomIndex == map[i]) m.firstAtomIndex = i; +m.bsAtoms.set(i); +} +if (this.vibrations != null) for (var i = i0; i < ac; i++) this.vibrations[i] = this.vibrations[map[i]]; + +if (this.atomTensorList != null) { +for (var i = i0; i < ac; i++) { +var list = this.atomTensorList[i] = this.atomTensorList[map[i]]; +if (list != null) for (var j = list.length; --j >= 0; ) { +var t = list[j]; +if (t != null) { +t.atomIndex1 = i; +}} +} +}if (this.atomNames != null) for (var i = i0; i < ac; i++) this.atomNames[i] = this.atomNames[map[i]]; + +if (this.atomTypes != null) for (var i = i0; i < ac; i++) this.atomTypes[i] = this.atomTypes[map[i]]; + +if (this.atomResnos != null) for (var i = i0; i < ac; i++) this.atomResnos[i] = this.atomResnos[map[i]]; + +if (this.atomSerials != null) for (var i = i0; i < ac; i++) this.atomSerials[i] = this.atomSerials[map[i]]; + +if (this.atomSeqIDs != null) for (var i = i0; i < ac; i++) this.atomSeqIDs[i] = this.atomSeqIDs[map[i]]; + +if (this.bfactor100s != null) for (var i = i0; i < ac; i++) this.bfactor100s[i] = this.bfactor100s[map[i]]; + +if (this.occupancies != null) for (var i = i0; i < ac; i++) this.occupancies[i] = this.occupancies[map[i]]; + +if (this.partialCharges != null) for (var i = i0; i < ac; i++) this.partialCharges[i] = this.partialCharges[map[i]]; + +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "growAtomArrays", +function(newLength){ +this.at = JU.AU.arrayCopyObject(this.at, newLength); +if (this.vibrations != null) this.vibrations = JU.AU.arrayCopyObject(this.vibrations, newLength); +if (this.occupancies != null) this.occupancies = JU.AU.arrayCopyF(this.occupancies, newLength); +if (this.bfactor100s != null) this.bfactor100s = JU.AU.arrayCopyShort(this.bfactor100s, newLength); +if (this.partialCharges != null) this.partialCharges = JU.AU.arrayCopyF(this.partialCharges, newLength); +if (this.atomTensorList != null) this.atomTensorList = JU.AU.arrayCopyObject(this.atomTensorList, newLength); +if (this.atomNames != null) this.atomNames = JU.AU.arrayCopyS(this.atomNames, newLength); +if (this.atomTypes != null) this.atomTypes = JU.AU.arrayCopyS(this.atomTypes, newLength); +if (this.atomResnos != null) this.atomResnos = JU.AU.arrayCopyI(this.atomResnos, newLength); +if (this.atomSerials != null) this.atomSerials = JU.AU.arrayCopyI(this.atomSerials, newLength); +if (this.atomSeqIDs != null) this.atomSeqIDs = JU.AU.arrayCopyI(this.atomSeqIDs, newLength); +}, "~N"); +Clazz_defineMethod(c$, "addAtom", +function(modelIndex, group, atomicAndIsotopeNumber, atomName, atomType, atomSerial, atomSeqID, atomSite, xyz, radius, vib, formalCharge, partialCharge, occupancy, bfactor, tensors, isHetero, specialAtomID, atomSymmetry, bondRadius){ +var atom = new JM.Atom().setAtom(modelIndex, this.ac, xyz, radius, atomSymmetry, atomSite, atomicAndIsotopeNumber, formalCharge, isHetero); +this.am[modelIndex].act++; +this.am[modelIndex].bsAtoms.set(this.ac); +if (JU.Elements.isElement(atomicAndIsotopeNumber, 1)) this.am[modelIndex].hydrogenCount++; +if (this.ac >= this.at.length) this.growAtomArrays(this.ac + 100); +this.at[this.ac] = atom; +this.setBFactor(this.ac, bfactor, false); +this.setOccupancy(this.ac, occupancy, false); +this.setPartialCharge(this.ac, partialCharge, false); +if (tensors != null) this.setAtomTensors(this.ac, tensors); +atom.group = group; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +if (atomName != null) { +if (atomType != null) { +if (this.atomTypes == null) this.atomTypes = new Array(this.at.length); +this.atomTypes[this.ac] = atomType; +}atom.atomID = specialAtomID; +if (specialAtomID == 0) { +if (this.atomNames == null) this.atomNames = new Array(this.at.length); +this.atomNames[this.ac] = atomName.intern(); +}}if (atomSerial != -2147483648) { +if (this.atomSerials == null) this.atomSerials = Clazz_newIntArray (this.at.length, 0); +this.atomSerials[this.ac] = atomSerial; +}if (atomSeqID != 0) { +if (this.atomSeqIDs == null) this.atomSeqIDs = Clazz_newIntArray (this.at.length, 0); +this.atomSeqIDs[this.ac] = atomSeqID; +}if (vib != null) this.setVibrationVector(this.ac, vib); +if (!Float.isNaN(bondRadius)) this.setBondingRadius(this.ac, bondRadius); +this.ac++; +return atom; +}, "~N,JM.Group,~N,~S,~S,~N,~N,~N,JU.P3,~N,JU.V3,~N,~N,~N,~N,JU.Lst,~B,~N,JU.BS,~N"); +Clazz_defineMethod(c$, "getInlineData", +function(modelIndex){ +var data = null; +if (modelIndex >= 0) data = this.am[modelIndex].loadScript; + else for (modelIndex = this.mc; --modelIndex >= 0; ) if ((data = this.am[modelIndex].loadScript).length() > 0) break; + +var pt = data.lastIndexOf("data \""); +if (pt < 0) { +var s = JU.PT.getQuotedStringAt(data.toString(), 0); +return JS.ScriptCompiler.unescapeString(s, 0, s.length); +}pt = data.indexOf2("\"", pt + 7); +var pt2 = data.lastIndexOf("end \""); +if (pt2 < pt || pt < 0) return null; +return data.substring2(pt + 2, pt2); +}, "~N"); +Clazz_defineMethod(c$, "isAtomPDB", +function(i){ +return i >= 0 && this.am[this.at[i].mi].isBioModel; +}, "~N"); +Clazz_defineMethod(c$, "setAtomNamesAndNumbers", +function(iFirst, baseAtomIndex, mergeSet, isModelKit){ +var mi0 = -1; +if (isModelKit) { +while (iFirst < this.ac && JM.AtomCollection.isDeleted(this.at[iFirst])) iFirst++; + +if (iFirst >= this.ac) return; +mi0 = this.at[iFirst].mi; +iFirst = this.am[mi0].firstAtomIndex; +}if (this.atomSerials == null) this.atomSerials = Clazz_newIntArray (this.ac, 0); +if (this.atomNames == null) this.atomNames = new Array(this.ac); +var isZeroBased = this.isXYZ && this.vwr.getBoolean(603979978); +var thisModelIndex = 2147483647; +var atomNo = 1; +for (var i = iFirst; i < this.ac; ++i) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (atom.mi != thisModelIndex) { +if (isModelKit && thisModelIndex != 2147483647 && atom.mi != mi0) continue; +thisModelIndex = atom.mi; +atomNo = (isZeroBased ? 0 : 1); +}var ano = this.atomSerials[i]; +if (i >= -baseAtomIndex) { +if (ano == 0 || isModelKit) this.atomSerials[i] = (i < baseAtomIndex ? mergeSet.atomSerials[i] : atomNo); +if (this.atomNames[i] == null || isModelKit) this.atomNames[i] = (atom.getElementSymbol() + this.atomSerials[i]).intern(); +} else { +if (ano > atomNo) { +atomNo = ano; +}if (isModelKit) { +this.atomNames[i] = (atom.getElementSymbol() + ano).intern(); +}}if (!this.am[thisModelIndex].isModelKit || atom.getElementNumber() > 0) atomNo++; +} +}, "~N,~N,JM.AtomCollection,~B"); +Clazz_defineMethod(c$, "connect", +function(connections){ +this.resetMolecules(); +var bsDelete = new JU.BS(); +for (var i = 0; i < connections.length; i++) { +var f = connections[i]; +if (f == null || f.length < 2) continue; +var index1 = Clazz_floatToInt(f[0]); +var addGroup = (index1 < 0); +if (addGroup) index1 = -1 - index1; +var index2 = Clazz_floatToInt(f[1]); +if (index2 < 0 || index1 >= this.ac || index2 >= this.ac) continue; +var order = (f.length > 2 ? Clazz_floatToInt(f[2]) : 1); +if (order < 0) order &= 0xFFFF; +var mad = (f.length > 3 ? Clazz_floatToShort(1000 * connections[i][3]) : this.getDefaultMadFromOrder(order)); +if (order == 0 || mad == 0 && order != 32768 && !JU.Edge.isOrderH(order)) { +var b = this.at[index1].getBond(this.at[index2]); +if (b != null) bsDelete.set(b.index); +continue; +}var energy = (f.length > 4 ? f[4] : 0); +this.bondAtoms(this.at[index1], this.at[index2], order, mad, null, energy, addGroup, true); +} +if (bsDelete.nextSetBit(0) >= 0) this.deleteBonds(bsDelete, false); +}, "~A"); +Clazz_defineMethod(c$, "setFrameDelayMs", +function(millis, bsModels){ +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) this.am[this.am[i].trajectoryBaseIndex].frameDelay = millis; + +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getFrameDelayMs", +function(i){ +return (i < this.am.length && i >= 0 ? this.am[this.am[i].trajectoryBaseIndex].frameDelay : 0); +}, "~N"); +Clazz_defineMethod(c$, "getModelIndexFromId", +function(id){ +var haveFile = (id.indexOf("#") >= 0); +var isBaseModel = id.toLowerCase().endsWith(".basemodel"); +if (isBaseModel) id = id.substring(0, id.length - 10); +var errCode = -1; +var fname = null; +for (var i = 0; i < this.mc; i++) { +var mid = this.getInfo(i, "modelID"); +var mnum = (id.startsWith("~") ? "~" + this.getModelNumberDotted(i) : null); +if (mnum == null && mid == null && (mid = this.getModelTitle(i)) == null) continue; +if (haveFile) { +fname = this.getModelFileName(i); +if (fname.endsWith("#molfile")) { +mid = fname; +} else { +fname += "#"; +mid = fname + mid; +}}if (id.equalsIgnoreCase(mid) || id.equalsIgnoreCase(mnum)) return (isBaseModel ? this.vwr.getJDXBaseModelIndex(i) : i); +if (fname != null && id.startsWith(fname)) errCode = -2; +} +return (fname == null && !haveFile ? -2 : errCode); +}, "~S"); +Clazz_defineMethod(c$, "getModelSetAuxiliaryInfo", +function(bsModels){ +var info = this.msInfo; +if (info == null) info = new java.util.Hashtable(); +if (bsModels != null || !info.containsKey("models")) { +var minfo = new JU.Lst(); +for (var i = 0; i < this.mc; ++i) if (bsModels == null || bsModels.get(i)) { +var m = this.getModelAuxiliaryInfo(i); +m.put("modelIndex", Integer.$valueOf(i)); +minfo.addLast(m); +} +info.put("models", minfo); +}return info; +}, "JU.BS"); +Clazz_defineMethod(c$, "getDihedralMap", +function(alist){ +var list = new JU.Lst(); +var n = alist.length; +var ai = null; +var aj = null; +var ak = null; +var al = null; +for (var i = n - 1; --i >= 0; ) for (var j = n; --j > i; ) { +ai = this.at[alist[i]]; +aj = this.at[alist[j]]; +if (ai.isBonded(aj)) { +for (var k = n; --k >= 0; ) if (k != i && k != j && (ak = this.at[alist[k]]).isBonded(ai)) for (var l = n; --l >= 0; ) if (l != i && l != j && l != k && (al = this.at[alist[l]]).isBonded(aj)) { +var a = Clazz_newIntArray (4, 0); +a[0] = ak.i; +a[1] = ai.i; +a[2] = aj.i; +a[3] = al.i; +list.addLast(a); +} + +}} + +n = list.size(); +var ilist = JU.AU.newInt2(n); +for (var i = n; --i >= 0; ) ilist[n - i - 1] = list.get(i); + +return ilist; +}, "~A"); +Clazz_defineMethod(c$, "setModulation", +function(bs, isOn, qtOffset, isQ){ +if (this.bsModulated == null) { +if (isOn) this.bsModulated = new JU.BS(); + else if (bs == null) return; +}if (bs == null) bs = this.getModelAtomBitSetIncludingDeleted(-1, false); +var scale = this.vwr.getFloat(1275072532); +var haveMods = false; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var ms = this.getModulation(i); +if (ms == null) continue; +ms.setModTQ(this.at[i], isOn, qtOffset, isQ, scale); +if (this.bsModulated != null) this.bsModulated.setBitTo(i, isOn); +haveMods = true; +} +if (!haveMods) this.bsModulated = null; +}, "JU.BS,~B,JU.P3,~B"); +Clazz_defineMethod(c$, "getBoundBoxOrientation", +function(type, bsAtoms, points){ +var dx = 0; +var dy = 0; +var dz = 0; +var q = null; +var qBest = null; +var j0 = bsAtoms.nextSetBit(0); +var vMin = 0; +if (j0 >= 0) { +if (this.vOrientations == null) { +var n = 0; +var p4 = new JU.P4(); +var av = new Array(3375); +for (var i = -7; i <= 7; i++) for (var j = -7; j <= 7; j++) for (var k = 0; k <= 14; k++, n++) if ((av[n] = JU.V3.new3(i / 7, j / 7, k / 14)).length() > 1) --n; + + + +this.vOrientations = new Array(n); +for (var i = n; --i >= 0; ) { +p4.set4(av[i].x, av[i].y, av[i].z, 0); +this.vOrientations[i] = JU.Quat.newP4(p4); +} +for (var i = n; --i >= 0; ) { +var cos = Math.sqrt(1 - av[i].lengthSquared()); +if (Float.isNaN(cos)) cos = 0; +p4.set4(av[i].x, av[i].y, av[i].z, cos); +this.vOrientations[i] = JU.Quat.newP4(p4); +} +}var pt = new JU.P3(); +vMin = 3.4028235E38; +var bBest = null; +var v; +var b = new JU.BoxInfo(); +b.setMargin(type == 1312817669 ? 0 : 0.1); +for (var i = this.vOrientations.length; --i >= 0; ) { +q = this.vOrientations[i]; +b.reset(); +if (points == null) { +for (var j = j0; j >= 0; j = bsAtoms.nextSetBit(j + 1)) { +var p = q.transform2(this.at[j], pt); +b.addBoundBoxPoint(p); +} +} else { +for (var j = points.length; --j >= 0; ) b.addBoundBoxPoint(q.transform2(points[j], pt)); + +}switch (type) { +default: +case 1312817669: +case 1073741864: +case 1814695966: +v = (b.bbCorner1.x - b.bbCorner0.x) * (b.bbCorner1.y - b.bbCorner0.y) * (b.bbCorner1.z - b.bbCorner0.z); +break; +case 1111492629: +v = b.bbCorner1.x - b.bbCorner0.x; +break; +case 1111492630: +v = b.bbCorner1.y - b.bbCorner0.y; +break; +case 1111492631: +v = b.bbCorner1.z - b.bbCorner0.z; +break; +} +if (v < vMin) { +qBest = q; +bBest = b; +b = new JU.BoxInfo(); +b.setMargin(0.1); +vMin = v; +}} +switch (type) { +default: +return qBest; +case 1814695966: +var pts = bBest.getBoundBoxVertices(); +pts = Clazz_newArray(-1, [pts[0], pts[4], pts[2], pts[1]]); +qBest = qBest.inv(); +for (var i = 0; i < 4; i++) { +qBest.transform2(pts[i], pts[i]); +if (i > 0) pts[i].sub(pts[0]); +} +return pts; +case 1312817669: +case 1073741864: +q = JU.Quat.newQ(qBest); +dx = bBest.bbCorner1.x - bBest.bbCorner0.x; +dy = bBest.bbCorner1.y - bBest.bbCorner0.y; +dz = bBest.bbCorner1.z - bBest.bbCorner0.z; +if (dx < dy) { +pt.set(0, 0, 1); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dx; +dx = dy; +dy = f; +}if (dy < dz) { +if (dz > dx) { +pt.set(0, 1, 0); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dx; +dx = dz; +dz = f; +}pt.set(1, 0, 0); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dy; +dy = dz; +dz = f; +}break; +} +}return (type == 1312817669 ? vMin + "\t{" + dx + " " + dy + " " + dz + "}\t" + bsAtoms : type == 1814695966 ? null : q == null || q.getTheta() == 0 ? new JU.Quat() : q); +}, "~N,JU.BS,~A"); +Clazz_defineMethod(c$, "getUnitCellForAtom", +function(index){ +if (index < 0 || index > this.ac || this.at[index] == null) return null; +if (this.bsModulated != null) { +var ms = this.getModulation(index); +var uc = (ms == null ? null : ms.getSubSystemUnitCell()); +if (uc != null) return uc; +}return this.getUnitCell(this.at[index].mi); +}, "~N"); +Clazz_defineMethod(c$, "clearCache", +function(){ +for (var i = this.mc; --i >= 0; ) this.am[i].resetDSSR(false); + +}); +Clazz_defineMethod(c$, "getSymMatrices", +function(modelIndex){ +var n = this.getModelSymmetryCount(modelIndex); +if (n == 0) return null; +var ops = new Array(n); +var unitcell = this.am[modelIndex].biosymmetry; +if (unitcell == null) unitcell = this.getUnitCell(modelIndex); +for (var i = n; --i >= 0; ) ops[i] = unitcell.getSpaceGroupOperation(i); + +return ops; +}, "~N"); +Clazz_defineMethod(c$, "getSymmetryInvariant", +function(iatom){ +var a = this.getBasisAtom(iatom, true); +if (a == null) return Clazz_newIntArray (0, 0); +return this.getUnitCellForAtom(a.i).getInvariantSymops(a, null); +}, "~N"); +Clazz_defineMethod(c$, "getBsBranches", +function(dihedralList){ +var n = Clazz_doubleToInt(dihedralList.length / 6); +var bsBranches = new Array(n); +var map = new java.util.Hashtable(); +for (var i = 0, pt = 0; i < n; i++, pt += 6) { +var dv = dihedralList[pt + 5] - dihedralList[pt + 4]; +if (Math.abs(dv) < 1) continue; +var i0 = Clazz_floatToInt(dihedralList[pt + 1]); +var i1 = Clazz_floatToInt(dihedralList[pt + 2]); +var s = "" + i0 + "_" + i1; +if (map.containsKey(s)) continue; +map.put(s, Boolean.TRUE); +var bs = this.vwr.getBranchBitSet(i1, i0, true); +var bonds = this.at[i0].bonds; +var a0 = this.at[i0]; +for (var j = 0; j < bonds.length; j++) { +var b = bonds[j]; +if (!b.isCovalent()) continue; +var i2 = b.getOtherAtom(a0).i; +if (i2 == i1) continue; +if (bs.get(i2)) { +bs = null; +break; +}} +bsBranches[i] = bs; +} +return bsBranches; +}, "~A"); +Clazz_defineMethod(c$, "recalculatePositionDependentQuantities", +function(bsAtoms, mat){ +if ((this.vwr.shm.getShape(21) != null)) this.vwr.shm.getShapePropertyData(21, "move", Clazz_newArray(-1, [bsAtoms, mat])); +if (this.haveStraightness) this.calculateStraightnessAll(); +this.recalculateLeadMidpointsAndWingVectors(-1); +var bsModels = this.getModelBS(bsAtoms, false); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +this.sm.notifyAtomPositionsChanged(i, bsAtoms, mat); +if (mat != null) { +var m = this.am[i]; +if (m.isContainedIn(bsAtoms)) { +if (m.mat4 == null) m.mat4 = JU.M4.newM4(null); +m.mat4.mul2(mat, m.mat4); +}}} +}, "JU.BS,JU.M4"); +Clazz_defineMethod(c$, "moveAtoms", +function(m4, mNew, rotation, translation, bs, center, isInternal, translationOnly){ +if (m4 != null) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +m4.rotTrans(this.at[i]); +this.taintAtom(i, 2); +} +this.mat4.setM4(m4); +translation = null; +} else if (translationOnly) { +if (!isInternal) { +this.matInv.setM3(rotation); +this.matInv.invert(); +this.matInv.rotate(translation); +}} else { +if (mNew == null) { +this.matTemp.setM3(rotation); +} else { +this.ptTemp.set(0, 0, 0); +this.matInv.setM3(rotation); +this.matInv.invert(); +this.matTemp.mul2(mNew, rotation); +this.matTemp.mul2(this.matInv, this.matTemp); +}if (isInternal) { +this.vTemp.setT(center); +this.mat4.setIdentity(); +this.mat4.setTranslation(this.vTemp); +this.mat4t.setToM3(this.matTemp); +this.mat4.mul(this.mat4t); +this.mat4t.setIdentity(); +this.vTemp.scale(-1); +this.mat4t.setTranslation(this.vTemp); +this.mat4.mul(this.mat4t); +} else { +this.mat4.setToM3(this.matTemp); +}for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (isInternal) { +this.mat4.rotTrans(this.at[i]); +} else { +this.ptTemp.add(this.at[i]); +this.mat4.rotTrans(this.at[i]); +this.ptTemp.sub(this.at[i]); +}this.taintAtom(i, 2); +} +if (!isInternal) { +this.ptTemp.scale(1 / bs.cardinality()); +if (translation == null) translation = new JU.V3(); +translation.add(this.ptTemp); +}}if (translation != null) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].add(translation); +this.taintAtom(i, 2); +} +if (!translationOnly) { +this.mat4t.setIdentity(); +this.mat4t.setTranslation(translation); +this.mat4.mul2(this.mat4t, this.mat4); +}}this.recalculatePositionDependentQuantities(bs, this.mat4); +}, "JU.M4,JU.M3,JU.M3,JU.V3,JU.BS,JU.P3,~B,~B"); +Clazz_defineMethod(c$, "setDihedrals", +function(dihedralList, bsBranches, f){ +var n = Clazz_doubleToInt(dihedralList.length / 6); +if (f > 1) f = 1; +for (var j = 0, pt = 0; j < n; j++, pt += 6) { +var bs = bsBranches[j]; +if (bs == null || bs.isEmpty()) continue; +var a1 = this.at[Clazz_floatToInt(dihedralList[pt + 1])]; +var v = JU.V3.newVsub(this.at[Clazz_floatToInt(dihedralList[pt + 2])], a1); +var angle = (dihedralList[pt + 5] - dihedralList[pt + 4]) * f; +var aa = JU.A4.newVA(v, (-angle / 57.29577951308232)); +this.matTemp.setAA(aa); +this.ptTemp.setT(a1); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].sub(this.ptTemp); +this.matTemp.rotate(this.at[i]); +this.at[i].add(this.ptTemp); +this.taintAtom(i, 2); +} +} +}, "~A,~A,~N"); +Clazz_defineMethod(c$, "setAtomCoordsRelative", +function(offset, bs){ +this.setAtomsCoordRelative(bs, offset.x, offset.y, offset.z); +this.mat4.setIdentity(); +this.vTemp.setT(offset); +this.mat4.setTranslation(this.vTemp); +this.recalculatePositionDependentQuantities(bs, this.mat4); +}, "JU.T3,JU.BS"); +Clazz_defineMethod(c$, "setAtomCoords", +function(bs, tokType, xyzValues){ +this.setAtomCoord2(bs, tokType, xyzValues); +switch (tokType) { +case 1111492626: +case 1111492627: +case 1111492628: +case 1145047055: +break; +default: +this.recalculatePositionDependentQuantities(bs, null); +} +}, "JU.BS,~N,~O"); +Clazz_defineMethod(c$, "invertSelected", +function(pt, plane, iAtom, bsAtoms){ +this.resetChirality(); +if (pt != null) { +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var x = (pt.x - this.at[i].x) * 2; +var y = (pt.y - this.at[i].y) * 2; +var z = (pt.z - this.at[i].z) * 2; +this.setAtomCoordRelative(i, x, y, z); +} +return; +}if (plane != null) { +var norm = JU.V3.new3(plane.x, plane.y, plane.z); +norm.normalize(); +var d = Math.sqrt(plane.x * plane.x + plane.y * plane.y + plane.z * plane.z); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var twoD = -JU.Measure.distanceToPlaneD(plane, d, this.at[i]) * 2; +var x = norm.x * twoD; +var y = norm.y * twoD; +var z = norm.z * twoD; +this.setAtomCoordRelative(i, x, y, z); +} +return; +}if (iAtom >= 0) { +var thisAtom = this.at[iAtom]; +var bonds = thisAtom.bonds; +if (bonds == null) return; +var bsToMove = new JU.BS(); +var vNot = new JU.Lst(); +var bsModel = this.vwr.getModelUndeletedAtomsBitSet(thisAtom.mi); +for (var i = 0; i < bonds.length; i++) { +var a = bonds[i].getOtherAtom(thisAtom); +if (bsAtoms.get(a.i)) { +bsToMove.or(JU.JmolMolecule.getBranchBitSet(this.at, a.i, bsModel, null, iAtom, true, true)); +} else { +vNot.addLast(a); +}} +if (vNot.size() == 0) return; +pt = JU.Measure.getCenterAndPoints(vNot)[0]; +var v = JU.V3.newVsub(thisAtom, pt); +var q = JU.Quat.newVA(v, 180); +this.moveAtoms(null, null, q.getMatrix(), null, bsToMove, thisAtom, true, false); +}}, "JU.P3,JU.P4,~N,JU.BS"); +Clazz_defineMethod(c$, "getCellWeights", +function(bsAtoms){ +var wts = null; +var i = bsAtoms.nextSetBit(0); +var iModel = -1; +var sym; +var a; +if (i >= 0 && (sym = this.getUnitCell(iModel = (a = this.at[i]).mi)) != null) { +sym = sym.getUnitCellMultiplied(); +var bs = this.getModelAtomBitSetIncludingDeleted(iModel, true); +bs.and(bsAtoms); +wts = Clazz_newFloatArray (bsAtoms.cardinality(), 0); +var pt = new JU.P3(); +for (var p = 0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +a = this.at[i]; +pt.setT(a); +sym.toFractional(pt, false); +sym.unitize(pt); +wts[p++] = sym.getCellWeight(pt); +} +}return wts; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAtomGroupQuaternions", +function(bsAtoms, nMax, qtype){ +var n = 0; +var v = new JU.Lst(); +bsAtoms = JU.BSUtil.copy(bsAtoms); +var bsDone = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0 && n < nMax; i = bsAtoms.nextSetBit(i + 1)) { +var g = this.at[i].group; +g.setAtomBits(bsDone); +bsAtoms.andNot(bsDone); +var q = g.getQuaternion(qtype); +if (q == null) { +if (!this.am[this.at[i].mi].isBioModel) q = g.getQuaternionFrame(this.at); +if (q == null) continue; +}n++; +v.addLast(q); +} +return v.toArray( new Array(v.size())); +}, "JU.BS,~N,~S"); +Clazz_defineMethod(c$, "getConformation", +function(modelIndex, conformationIndex, doSet, bsSelected){ +var bs = new JU.BS(); +for (var i = this.mc; --i >= 0; ) { +if (modelIndex >= 0 && i != modelIndex) continue; +var m = this.am[i]; +var bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +if (bsSelected != null) bsAtoms.and(bsSelected); +if (bsAtoms.nextSetBit(0) < 0) continue; +if (conformationIndex > m.altLocCount) { +if (conformationIndex == 1) bs.or(bsAtoms); +continue; +}var c0; +if (this.am[i].isBioModel) { +if (conformationIndex < -1000) { +c0 = 1000 + conformationIndex; +var altLocs = this.getAltLocListInModel(i); +if (c0 != -32 && altLocs.indexOf(String.fromCharCode(-c0)) < 0) c0 = -2147483648; +} else if (conformationIndex < 0) { +var altLocs = this.getAltLocListInModel(i); +c0 = -1 - conformationIndex; +c0 = (c0 >= altLocs.length ? -2147483648 : -(altLocs.charAt(c0)).charCodeAt(0)); +} else { +c0 = conformationIndex; +}if (c0 == -2147483648) continue; +(this.am[i]).getConformation(c0, doSet, bsAtoms, bs); +} else { +var nAltLocs = this.getAltLocCountInModel(i); +var altLocs = this.getAltLocListInModel(i); +var bsTemp = new JU.BS(); +if (conformationIndex < -1000) { +var c = String.fromCharCode(-1000 - conformationIndex); +c0 = altLocs.indexOf(c); +} else { +c0 = Math.abs(conformationIndex) - 1; +}if (c0 < 0 || c0 >= nAltLocs) { +continue; +}for (var c = nAltLocs; --c >= 0; ) if (c != c0) bsAtoms.andNot(this.getAtomBitsMDa(1073742355, altLocs.substring(c, c + 1), bsTemp)); + +}bs.or(bsAtoms); +} +return bs; +}, "~N,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "getSequenceBits", +function(specInfo, bsAtoms, bsResult){ +return (this.haveBioModels ? this.bioModelset.getAllSequenceBits(specInfo, bsAtoms, bsResult) : bsResult); +}, "~S,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getBioPolymerCountInModel", +function(modelIndex){ +return (this.haveBioModels ? this.bioModelset.getBioPolymerCountInModel(modelIndex) : 0); +}, "~N"); +Clazz_defineMethod(c$, "getPolymerPointsAndVectors", +function(bs, vList, isTraceAlpha, sheetSmoothing){ +if (this.haveBioModels) this.bioModelset.getAllPolymerPointsAndVectors(bs, vList, isTraceAlpha, sheetSmoothing); +}, "JU.BS,JU.Lst,~B,~N"); +Clazz_defineMethod(c$, "recalculateLeadMidpointsAndWingVectors", +function(modelIndex){ +if (this.haveBioModels) this.bioModelset.recalculatePoints(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "calcRasmolHydrogenBonds", +function(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds){ +if (this.haveBioModels) this.bioModelset.calcAllRasmolHydrogenBonds(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, 2); +}, "JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "calculateStraightnessAll", +function(){ +if (this.haveBioModels && !this.haveStraightness) this.bioModelset.calculateStraightnessAll(); +}); +Clazz_defineMethod(c$, "calculateStruts", +function(bs1, bs2){ +return (this.haveBioModels ? this.bioModelset.calculateStruts(bs1, bs2) : 0); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getGroupsWithin", +function(nResidues, bs){ +return (this.haveBioModels ? this.bioModelset.getGroupsWithinAll(nResidues, bs) : new JU.BS()); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getProteinStructureState", +function(bsAtoms, mode){ +return (this.haveBioModels ? this.bioModelset.getFullProteinStructureState(bsAtoms, mode) : ""); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "calculateStructures", +function(bsAtoms, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, version){ +return (this.haveBioModels ? this.bioModelset.calculateAllStuctures(bsAtoms, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, version) : ""); +}, "JU.BS,~B,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "calculateStructuresAllExcept", +function(alreadyDefined, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version){ +this.freezeModels(); +return (this.haveBioModels ? this.bioModelset.calculateAllStructuresExcept(alreadyDefined, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version) : ""); +}, "JU.BS,~B,~B,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "recalculatePolymers", +function(bsModelsExcluded){ +this.bioModelset.recalculateAllPolymers(bsModelsExcluded, this.getGroups()); +}, "JU.BS"); +Clazz_defineMethod(c$, "calculatePolymers", +function(groups, groupCount, baseGroupIndex, modelsExcluded){ +if (this.bioModelset != null) this.bioModelset.calculateAllPolymers(groups, groupCount, baseGroupIndex, modelsExcluded); +}, "~A,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "calcSelectedMonomersCount", +function(){ +if (this.haveBioModels) this.bioModelset.calcSelectedMonomersCount(); +}); +Clazz_defineMethod(c$, "setProteinType", +function(bs, type){ +if (this.haveBioModels) this.bioModelset.setAllProteinType(bs, type); +}, "JU.BS,J.c.STR"); +Clazz_defineMethod(c$, "setStructureList", +function(structureList){ +if (this.haveBioModels) this.bioModelset.setAllStructureList(structureList); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setConformation", +function(bsAtoms){ +if (this.haveBioModels) this.bioModelset.setAllConformation(bsAtoms); +return JU.BSUtil.copy(bsAtoms); +}, "JU.BS"); +Clazz_defineMethod(c$, "getHeteroList", +function(modelIndex){ +var o = (this.haveBioModels ? this.bioModelset.getAllHeteroList(modelIndex) : null); +return (o == null ? this.getInfoM("hetNames") : o); +}, "~N"); +Clazz_defineMethod(c$, "getUnitCellPointsWithin", +function(distance, bs, pt, asMap){ +var lst = new JU.Lst(); +var map = null; +var lstI = null; +if (asMap) { +map = new java.util.Hashtable(); +lstI = new JU.Lst(); +map.put("atoms", lstI); +map.put("points", lst); +}var iAtom = (bs == null ? -1 : bs.nextSetBit(0)); +bs = this.vwr.getModelUndeletedAtomsBitSet(iAtom < 0 ? this.vwr.am.cmi : this.at[iAtom].mi); +if (iAtom < 0) iAtom = bs.nextSetBit(0); +if (iAtom >= 0) { +var unitCell = this.getUnitCellForAtom(iAtom); +if (unitCell != null) { +var iter = unitCell.getIterator(this.vwr, this.at[iAtom], bs, distance); +if (pt != null) iter.setCenter(pt, distance); +while (iter.hasNext()) { +iAtom = iter.next(); +pt = iter.getPosition(); +lst.addLast(pt); +if (asMap) { +lstI.addLast(Integer.$valueOf(iAtom)); +}} +}}return (asMap ? map : lst); +}, "~N,JU.BS,JU.P3,~B"); +Clazz_defineMethod(c$, "calculateDssrProperty", +function(dataType){ +if (dataType == null) return; +if (this.dssrData == null || this.dssrData.length < this.ac) this.dssrData = Clazz_newFloatArray (this.ac, 0); +for (var i = 0; i < this.ac; i++) this.dssrData[i] = NaN; + +for (var i = this.mc; --i >= 0; ) if (this.am[i].isBioModel) (this.am[i]).getAtomicDSSRData(this.dssrData, dataType); + +}, "~S"); +Clazz_defineMethod(c$, "getAtomicDSSRData", +function(i){ +return (this.dssrData == null || this.dssrData.length <= i ? NaN : this.dssrData[i]); +}, "~N"); +Clazz_defineMethod(c$, "getAtomCIPChiralityCode", +function(atom){ +this.haveChirality = true; +var m = this.am[atom.mi]; +if (!m.hasChirality) { +this.calculateChiralityForAtoms(m.bsAtoms, false); +m.hasChirality = true; +}return atom.getCIPChiralityCode(); +}, "JM.Atom"); +Clazz_defineMethod(c$, "calculateChiralityForAtoms", +function(bsAtoms, withReturn){ +this.haveChirality = true; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) this.at[i].setCIPChirality(0); + +J.api.Interface.getSymmetry(this.vwr, "ms").calculateCIPChiralityForAtoms(this.vwr, bsAtoms); +if (!withReturn) return null; +var s = ""; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) s += this.at[i].getCIPChirality(false); + +return s; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "getPointTransf", +function(i, a, q, pTemp){ +if (this.isTrajectory(i >= 0 ? i : a.mi)) this.trajectory.getFractional(a, pTemp); + else pTemp.setT(a); +if (q != null) q.transform2(pTemp, pTemp); +}, "~N,JM.Atom,JU.Quat,JU.P3"); +Clazz_defineMethod(c$, "getSymmetryEquivAtoms", +function(bsAtoms, sym, bsModelAtoms){ +bsAtoms = JU.BS.copy(bsAtoms); +var bsEquiv = JU.BS.copy(bsAtoms); +var iAtom = bsAtoms.nextSetBit(0); +if (sym == null) sym = this.getUnitCellForAtom(iAtom); +if (sym != null) { +if (bsModelAtoms == null) bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.at[iAtom].mi); +var bsRemaining = JU.BSUtil.copy(bsModelAtoms); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +this.getSymmetryEquivAtomsForAtom(i, bsAtoms, bsRemaining, bsEquiv); +} +}return bsEquiv; +}, "JU.BS,J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "getSymmetryEquivAtomsForAtom", +function(i, bsAtoms, bsCheck, bsEquiv){ +var a = this.at[i]; +var site = a.getAtomSite(); +if (site > 0) { +for (var j = bsCheck.nextSetBit(0); j >= 0; j = bsCheck.nextSetBit(j + 1)) { +if (this.at[j].getAtomSite() == site) { +bsEquiv.set(j); +if (bsAtoms != null) { +bsAtoms.clear(j); +bsCheck.clear(j); +}}} +} else { +}}, "~N,JU.BS,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "setSpaceGroup", +function(mi, sg, basis){ +if (this.unitCells == null) this.unitCells = new Array(this.mc); +this.unitCells[mi] = sg; +this.haveUnitCells = true; +var isP1 = (sg.getSpaceGroupOperationCount() == 1); +var nops = sg.getFinalOperationCount(); +if (basis != null) { +var needBasis = basis.isEmpty(); +var bs = this.vwr.getModelUndeletedAtomsBitSet(mi); +if (needBasis) { +basis = JU.BSUtil.copy(bs); +} else { +this.setAsymmetricUnit(mi, bs, basis, !isP1); +}if (nops > 1) this.setModelCage(mi, null); +var nid = (this.atomSeqIDs == null ? 0 : this.atomSeqIDs.length); +if (nid > 0) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.atomSeqIDs[i] = 0; +} +}if (isP1) { +this.fixP1AtomSites(sg, bs); +} else { +var haveOccupancies = (this.occupancies != null); +var ops = sg.getSymmetryOperations(); +var a = new JU.P3(); +var b = new JU.P3(); +var t = new JU.P3(); +var site = 0; +for (var j = basis.nextSetBit(0); j >= 0; j = basis.nextSetBit(j + 1)) { +var bb = this.at[j]; +b.setT(bb); +sg.toFractional(b, false); +sg.unitize(b); +if (needBasis) this.setSite(bb, ++site, true); +site = bb.atomSite; +bs.clear(j); +var occj = (haveOccupancies ? this.occupancies[j] : 0); +out : for (var i = bs.nextSetBit(needBasis ? j + 1 : 0); i >= 0; i = bs.nextSetBit(i + 1)) { +var ba = this.at[i]; +var type = ba.atomNumberFlags; +if (ba.atomNumberFlags != type || haveOccupancies && occj != this.occupancies[i]) continue; +a.setT(ba); +sg.toFractional(a, false); +sg.unitize(a); +for (var k = 0; k < nops; k++) { +t.setT(b); +ops[k].rotTrans(t); +sg.unitize(t); +if (t.distanceSquared(a) < 1.96E-6) { +this.setSite(ba, site, true); +bs.clear(i); +basis.clear(i); +continue out; +}} +} +} +if (!bs.isEmpty()) { +System.err.println("Model basis atoms not found for " + bs); +}if (needBasis) { +this.setAsymmetricUnit(mi, null, basis, !isP1); +}}}this.setInfo(mi, "unitCellParams", sg.getUnitCellParams()); +this.setInfo(mi, "spaceGroupAssigned", Boolean.TRUE); +this.setInfo(mi, "spaceGroup", sg.getClegId()); +this.setInfo(mi, "spaceGroupInfo", null); +if (this.am[mi].simpleCage != null) { +sg.getUnitCell(this.am[mi].simpleCage.getUnitCellVectors(), false, null); +this.setInfo(mi, "unitCellParams", sg.getUnitCellParams()); +}this.setModelCage(mi, null); +}, "~N,J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "setAsymmetricUnit", +function(mi, bsModelAtoms, basis, haveSymmetry){ +if (bsModelAtoms == null) bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(mi); +this.am[mi].bsAsymmetricUnit = basis; +if (this.bsSymmetry == null) this.bsSymmetry = JU.BS.newN(this.ac); +this.bsSymmetry.or(bsModelAtoms); +this.bsSymmetry.andNot(basis); +if (haveSymmetry) { +for (var p = 0, i = bsModelAtoms.nextSetBit(0); i >= 0; i = bsModelAtoms.nextSetBit(i + 1)) { +var isBasis = basis.get(i); +this.at[i].setSymop(isBasis ? 1 : 0, false); +if (isBasis) this.setSite(this.at[i], ++p, false); +} +bsModelAtoms.andNot(basis); +}}, "~N,JU.BS,JU.BS,~B"); +Clazz_defineMethod(c$, "setModelCage", +function(modelIndex, simpleCage){ +if (modelIndex >= 0 && modelIndex < this.mc) { +this.am[modelIndex].setSimpleCage(simpleCage); +this.haveUnitCells = true; +}return simpleCage; +}, "~N,J.api.SymmetryInterface"); +Clazz_defineMethod(c$, "fixP1AtomSites", +function(sym, bsAtoms){ +if (sym == null || sym.getSpaceGroupOperationCount() != 1) return; +var n = bsAtoms.cardinality(); +var baseAtoms = new Array(n); +var nbase = 0; +var slop2 = sym.getPrecision(); +slop2 *= slop2; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.at[i]; +var p = new JU.A4(); +p.setT(a); +sym.toFractional(p, false); +sym.unitize(p); +var found = false; +for (var ib = 0; ib < nbase; ib++) { +var b = baseAtoms[ib]; +if (a.atomNumberFlags == b.angle && b.distanceSquared(p) < slop2) { +found = true; +this.setSite(a, ib + 1, true); +break; +}} +if (!found) { +p.angle = a.atomNumberFlags; +baseAtoms[nbase] = p; +this.setSite(a, ++nbase, true); +}} +}, "J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "getBasisAtom", +function(iatom, doCheck){ +var a = this.at[iatom]; +if (!doCheck || this.getUnitCellForAtom(iatom) != null) { +var site = a.atomSite; +if (site > 0) { +var au = this.am[a.mi].bsAsymmetricUnit; +if (au != null) { +for (var i = au.nextSetBit(0); i >= 0; i = au.nextSetBit(i + 1)) { +if (this.at[i].atomSite == site) return this.at[i]; +} +}}}return a; +}, "~N,~B"); +Clazz_defineMethod(c$, "updateBasisFromSite", +function(imodel){ +if (this.getUnitCell(imodel) == null) return; +var bsAU = this.am[imodel].bsAsymmetricUnit; +if (bsAU == null) return; +bsAU.clearAll(); +var bsSites = new JU.BS(); +var bs = this.am[imodel].bsAtoms; +var sites = Clazz_newIntArray (this.ac, 0); +for (var p = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var site = this.at[i].atomSite; +if (!bsSites.get(site)) { +bsSites.set(site); +if (site >= sites.length) continue; +sites[site] = ++p; +bsAU.set(i); +}this.setSite(this.at[i], -1, false); +this.setSite(this.at[i], sites[site], true); +} +if (this.bsSymmetry == null) this.bsSymmetry = JU.BS.newN(this.ac); +this.bsSymmetry.or(bs); +this.bsSymmetry.andNot(bsAU); +}, "~N"); +Clazz_defineMethod(c$, "getConnectingAtoms", +function(bsAtoms, bsFixed){ +var bs = new JU.BS(); +var bsAttached = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.at[i]; +var bonds = a.bonds; +for (var k = 0, j = a.getBondCount(); --j >= 0; ) { +if (bonds[j].isCovalent() && !bsAtoms.get(k = bonds[j].getOtherAtom(a).i)) { +bs.set(i); +bsAttached.set(k); +}} +} +bsAtoms.or(bsAttached); +bsFixed.or(bsAttached); +return bs; +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "saveAtomPositions", +function(){ +var pos = new Array(this.at.length); +for (var i = pos.length; --i >= 0; ) { +var a = this.at[i]; +if (!JM.AtomCollection.isDeleted(a)) pos[i] = JU.P3.newP(a); +} +return pos; +}); +Clazz_defineMethod(c$, "restoreAtomPositions", +function(apos0){ +for (var i = apos0.length; --i >= 0; ) { +var a = this.at[i]; +if (!JM.AtomCollection.isDeleted(a)) a.setT(apos0[i]); +} +}, "~A"); +Clazz_defineMethod(c$, "clearUnitCell", +function(modelIndex){ +if (this.unitCells == null) return; +if (modelIndex < 0) { +for (var i = 0; i < this.mc; i++) this.clearUnitCell(i); + +} else { +this.am[modelIndex].simpleCage = null; +if (modelIndex < this.unitCells.length) { +this.unitCells[modelIndex] = null; +var info = this.getModelAuxiliaryInfo(modelIndex); +var it = info.entrySet().iterator(); +while (it.hasNext()) { +if (JV.JC.isSpaceGroupInfoKey(it.next().getKey())) it.remove(); +} +if (this.mc > 1) return; +}}this.unitCells = null; +this.haveUnitCells = false; +}, "~N"); +c$.hbondMinRasmol = 2.5; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.M3", "$.P3"], "JM.Orientation", ["JU.PT", "JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.saveName = null; +this.rotationMatrix = null; +this.xTrans = 0; +this.yTrans = 0; +this.zoom = 0; +this.rotationRadius = 0; +this.center = null; +this.navCenter = null; +this.xNav = NaN; +this.yNav = NaN; +this.navDepth = NaN; +this.cameraDepth = NaN; +this.cameraX = NaN; +this.cameraY = NaN; +this.windowCenteredFlag = false; +this.navigationMode = false; +this.moveToText = null; +this.pymolView = null; +this.vwr = null; +Clazz_instantialize(this, arguments);}, JM, "Orientation", null); +Clazz_prepareFields (c$, function(){ +this.rotationMatrix = new JU.M3(); +this.center = new JU.P3(); +this.navCenter = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(vwr, asDefault, pymolView){ +this.vwr = vwr; +if (pymolView != null) { +this.pymolView = pymolView; +this.moveToText = "moveTo -1.0 PyMOL " + JU.Escape.eAF(pymolView); +return; +}vwr.finalizeTransformParameters(); +if (asDefault) { +var rot = vwr.ms.getInfoM("defaultOrientationMatrix"); +if (rot == null) this.rotationMatrix.setScale(1); + else this.rotationMatrix.setM3(rot); +} else { +vwr.tm.getRotation(this.rotationMatrix); +}this.xTrans = vwr.tm.getTranslationXPercent(); +this.yTrans = vwr.tm.getTranslationYPercent(); +this.zoom = vwr.tm.getZoomSetting(); +this.center.setT(vwr.tm.fixedRotationCenter); +this.windowCenteredFlag = vwr.tm.isWindowCentered(); +this.rotationRadius = vwr.getFloat(570425388); +this.navigationMode = vwr.getBoolean(603979889); +this.moveToText = vwr.tm.getMoveToText(-1, false); +if (this.navigationMode) { +this.xNav = vwr.tm.getNavigationOffsetPercent('X'); +this.yNav = vwr.tm.getNavigationOffsetPercent('Y'); +this.navDepth = vwr.tm.navigationDepthPercent; +this.navCenter = JU.P3.newP(vwr.tm.navigationCenter); +}if (vwr.tm.camera.z != 0) { +this.cameraDepth = vwr.tm.getCameraDepth(); +this.cameraX = vwr.tm.camera.x; +this.cameraY = vwr.tm.camera.y; +}}, "JV.Viewer,~B,~A"); +Clazz_defineMethod(c$, "getMoveToText", +function(asCommand){ +return (asCommand ? " " + this.moveToText + "\n save orientation " + JU.PT.esc(this.saveName.substring(12)) + ";\n" : this.moveToText); +}, "~B"); +Clazz_defineMethod(c$, "restore", +function(timeSeconds, isAll){ +if (isAll) { +this.vwr.setBooleanProperty("windowCentered", this.windowCenteredFlag); +this.vwr.setBooleanProperty("navigationMode", this.navigationMode); +if (this.pymolView == null) this.vwr.moveTo(this.vwr.eval, timeSeconds, this.center, null, NaN, this.rotationMatrix, this.zoom, this.xTrans, this.yTrans, this.rotationRadius, this.navCenter, this.xNav, this.yNav, this.navDepth, this.cameraDepth, this.cameraX, this.cameraY); + else this.vwr.tm.moveToPyMOL(this.vwr.eval, timeSeconds, this.pymolView); +} else { +this.vwr.tm.setRotation(this.rotationMatrix); +}return true; +}, "~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.StateScript", ["JU.SB", "JU.BSUtil", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modelIndex = 0; +this.bsBonds = null; +this.bsAtoms1 = null; +this.bsAtoms2 = null; +this.script1 = null; +this.script2 = null; +this.inDefinedStateBlock = false; +Clazz_instantialize(this, arguments);}, JM, "StateScript", null); +Clazz_makeConstructor(c$, +function(modelIndex, script1, bsBonds, bsAtoms1, bsAtoms2, script2, inDefinedStateBlock){ +this.modelIndex = modelIndex; +this.script1 = script1; +this.bsBonds = JU.BSUtil.copy(bsBonds); +this.bsAtoms1 = JU.BSUtil.copy(bsAtoms1); +this.bsAtoms2 = JU.BSUtil.copy(bsAtoms2); +this.script2 = script2; +this.inDefinedStateBlock = inDefinedStateBlock; +}, "~N,~S,JU.BS,JU.BS,JU.BS,~S,~B"); +Clazz_defineMethod(c$, "isValid", +function(){ +return this.script1 != null && this.script1.length > 0 && (this.bsBonds == null || this.bsBonds.nextSetBit(0) >= 0) && (this.bsAtoms1 == null || this.bsAtoms1.nextSetBit(0) >= 0) && (this.bsAtoms2 == null || this.bsAtoms2.nextSetBit(0) >= 0); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +if (!this.isValid()) return ""; +var sb = JU.SB.newS(this.script1); +if (this.bsBonds != null) sb.append(" ").append(JU.Escape.eBond(this.bsBonds)); +if (this.bsAtoms1 != null) sb.append(" ").append(JU.Escape.eBS(this.bsAtoms1)); +if (this.bsAtoms2 != null) sb.append(" ").append(JU.Escape.eBS(this.bsAtoms2)); +if (this.script2 != null) sb.append(" ").append(this.script2); +var s = sb.toString(); +if (!s.endsWith(";")) s += ";"; +return s; +}); +Clazz_defineMethod(c$, "isConnect", +function(){ +return (this.script1.indexOf("connect") >= 0); +}); +Clazz_defineMethod(c$, "deleteAtoms", +function(modelIndex, bsBonds, bsAtoms){ +if (modelIndex == this.modelIndex) return false; +if (modelIndex > this.modelIndex) { +return true; +}JU.BSUtil.deleteBits(this.bsBonds, bsBonds); +JU.BSUtil.deleteBits(this.bsAtoms1, bsAtoms); +JU.BSUtil.deleteBits(this.bsAtoms2, bsAtoms); +return this.isValid(); +}, "~N,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "setModelIndex", +function(index){ +this.modelIndex = index; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_declareInterface(JM, "Structure"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.id = ""; +this.type = ' '; +this.ticks = null; +this.tickLabelFormats = null; +this.scale = null; +this.first = 0; +this.signFactor = 1; +this.reference = null; +Clazz_instantialize(this, arguments);}, JM, "TickInfo", null); +Clazz_makeConstructor(c$, +function(ticks){ +this.ticks = ticks; +}, "JU.P3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P3", "$.V3"], "JU.BoxInfo", ["java.util.Hashtable", "JU.Measure", "$.P4", "JU.Point3fi"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bbCorner0 = null; +this.bbCorner1 = null; +this.bbCenter = null; +this.bbVector = null; +this.bbVertices = null; +this.isScaleSet = false; +this.margin = 0; +Clazz_instantialize(this, arguments);}, JU, "BoxInfo", null); +Clazz_prepareFields (c$, function(){ +this.bbCorner0 = new JU.P3(); +this.bbCorner1 = new JU.P3(); +this.bbCenter = new JU.P3(); +this.bbVector = new JU.V3(); +this.bbVertices = new Array(8); +{ +for (var i = 0; i < 8; i++) { +JU.BoxInfo.unitBboxPoints[i] = JU.P3.new3(-1, -1, -1); +JU.BoxInfo.unitBboxPoints[i].scaleAdd2(2, JU.BoxInfo.unitCubePoints[i], JU.BoxInfo.unitBboxPoints[i]); +} +}}); +Clazz_makeConstructor(c$, +function(){ +for (var i = 8; --i >= 0; ) this.bbVertices[i] = new JU.Point3fi(); + +this.reset(); +}); +Clazz_defineMethod(c$, "reset", +function(){ +this.isScaleSet = false; +this.bbCorner0.set(3.4028235E38, 3.4028235E38, 3.4028235E38); +this.bbCorner1.set(-3.4028235E38, -3.4028235E38, -3.4028235E38); +}); +c$.scaleBox = Clazz_defineMethod(c$, "scaleBox", +function(pts, scale){ +if (scale == 0 || scale == 1) return; +var center = new JU.P3(); +var v = new JU.V3(); +for (var i = 0; i < 8; i++) center.add(pts[i]); + +center.scale(0.125); +for (var i = 0; i < 8; i++) { +v.sub2(pts[i], center); +v.scale(scale); +pts[i].add2(center, v); +} +}, "~A,~N"); +c$.getVerticesFromOABC = Clazz_defineMethod(c$, "getVerticesFromOABC", +function(oabc){ +var vertices = new Array(8); +for (var i = 0; i <= 7; i++) { +vertices[i] = JU.P3.newP(oabc[0]); +if ((i & 4) == 4) vertices[i].add(oabc[1]); +if ((i & 2) == 2) vertices[i].add(oabc[2]); +if ((i & 1) == 1) vertices[i].add(oabc[3]); +} +return vertices; +}, "~A"); +c$.getCanonicalCopy = Clazz_defineMethod(c$, "getCanonicalCopy", +function(boxPoints, scale){ +var pts = new Array(8); +for (var i = 0; i < 8; i++) pts[JU.BoxInfo.toCanonical[i]] = JU.P3.newP(boxPoints[i]); + +JU.BoxInfo.scaleBox(pts, scale); +return pts; +}, "~A,~N"); +c$.toOABC = Clazz_defineMethod(c$, "toOABC", +function(bbVertices, offset){ +var center = JU.P3.newP(bbVertices[0]); +var a = JU.P3.newP(bbVertices[4]); +var b = JU.P3.newP(bbVertices[2]); +var c = JU.P3.newP(bbVertices[1]); +a.sub(center); +b.sub(center); +c.sub(center); +if (offset != null) center.add(offset); +return Clazz_newArray(-1, [center, a, b, c]); +}, "~A,JU.T3"); +Clazz_defineMethod(c$, "getBoundBoxCenter", +function(){ +if (!this.isScaleSet) this.setBbcage(1); +return this.bbCenter; +}); +Clazz_defineMethod(c$, "getBoundBoxCornerVector", +function(){ +if (!this.isScaleSet) this.setBbcage(1); +return this.bbVector; +}); +Clazz_defineMethod(c$, "getBoundBoxPoints", +function(isAll){ +if (!this.isScaleSet) this.setBbcage(1); +return (isAll ? Clazz_newArray(-1, [this.bbCenter, JU.P3.newP(this.bbVector), this.bbCorner0, this.bbCorner1]) : Clazz_newArray(-1, [this.bbCorner0, this.bbCorner1])); +}, "~B"); +Clazz_defineMethod(c$, "getBoundBoxVertices", +function(){ +if (!this.isScaleSet) this.setBbcage(1); +return this.bbVertices; +}); +Clazz_defineMethod(c$, "setBoundBoxFromOABC", +function(points){ +var origin = JU.P3.newP(points[0]); +var pt111 = new JU.P3(); +for (var i = 0; i < 4; i++) pt111.add(points[i]); + +this.setBoundBox(origin, pt111, true, 1); +}, "~A"); +Clazz_defineMethod(c$, "setBoundBox", +function(pt1, pt2, byCorner, scale){ +if (pt1 != null) { +if (scale == 0) return; +if (byCorner) { +if (pt1.distance(pt2) == 0) return; +this.bbCorner0.set(Math.min(pt1.x, pt2.x), Math.min(pt1.y, pt2.y), Math.min(pt1.z, pt2.z)); +this.bbCorner1.set(Math.max(pt1.x, pt2.x), Math.max(pt1.y, pt2.y), Math.max(pt1.z, pt2.z)); +} else { +if (pt2.x == 0 || pt2.y == 0 && pt2.z == 0) return; +this.bbCorner0.set(pt1.x - pt2.x, pt1.y - pt2.y, pt1.z - pt2.z); +this.bbCorner1.set(pt1.x + pt2.x, pt1.y + pt2.y, pt1.z + pt2.z); +}}this.setBbcage(scale); +}, "JU.T3,JU.T3,~B,~N"); +Clazz_defineMethod(c$, "setMargin", +function(m){ +this.margin = m; +}, "~N"); +Clazz_defineMethod(c$, "addBoundBoxPoint", +function(pt){ +this.isScaleSet = false; +JU.BoxInfo.addPoint(pt, this.bbCorner0, this.bbCorner1, this.margin); +}, "JU.T3"); +c$.addPoint = Clazz_defineMethod(c$, "addPoint", +function(pt, xyzMin, xyzMax, margin){ +if (pt.x - margin < xyzMin.x) xyzMin.x = pt.x - margin; +if (pt.x + margin > xyzMax.x) xyzMax.x = pt.x + margin; +if (pt.y - margin < xyzMin.y) xyzMin.y = pt.y - margin; +if (pt.y + margin > xyzMax.y) xyzMax.y = pt.y + margin; +if (pt.z - margin < xyzMin.z) xyzMin.z = pt.z - margin; +if (pt.z + margin > xyzMax.z) xyzMax.z = pt.z + margin; +}, "JU.T3,JU.T3,JU.T3,~N"); +c$.addPointXYZ = Clazz_defineMethod(c$, "addPointXYZ", +function(x, y, z, xyzMin, xyzMax, margin){ +if (x - margin < xyzMin.x) xyzMin.x = x - margin; +if (x + margin > xyzMax.x) xyzMax.x = x + margin; +if (y - margin < xyzMin.y) xyzMin.y = y - margin; +if (y + margin > xyzMax.y) xyzMax.y = y + margin; +if (z - margin < xyzMin.z) xyzMin.z = z - margin; +if (z + margin > xyzMax.z) xyzMax.z = z + margin; +}, "~N,~N,~N,JU.P3,JU.P3,~N"); +Clazz_defineMethod(c$, "setBbcage", +function(scale){ +this.isScaleSet = true; +this.bbCenter.add2(this.bbCorner0, this.bbCorner1); +this.bbCenter.scale(0.5); +this.bbVector.sub2(this.bbCorner1, this.bbCenter); +if (scale > 0) { +this.bbVector.scale(scale); +} else { +this.bbVector.x -= scale / 2; +this.bbVector.y -= scale / 2; +this.bbVector.z -= scale / 2; +}for (var i = 8; --i >= 0; ) { +var pt = this.bbVertices[i]; +pt.setT(JU.BoxInfo.unitBboxPoints[i]); +pt.x *= this.bbVector.x; +pt.y *= this.bbVector.y; +pt.z *= this.bbVector.z; +pt.add(this.bbCenter); +} +if (scale != 1) { +this.bbCorner0.setT(this.bbVertices[0]); +this.bbCorner1.setT(this.bbVertices[7]); +}}, "~N"); +Clazz_defineMethod(c$, "isWithin", +function(pt){ +if (!this.isScaleSet) this.setBbcage(1); +return (pt.x >= this.bbCorner0.x && pt.x <= this.bbCorner1.x && pt.y >= this.bbCorner0.y && pt.y <= this.bbCorner1.y && pt.z >= this.bbCorner0.z && pt.z <= this.bbCorner1.z); +}, "JU.P3"); +Clazz_defineMethod(c$, "getMaxDim", +function(){ +return this.bbVector.length() * 2; +}); +Clazz_defineMethod(c$, "getInfo", +function(what){ +var vol = Double.$valueOf(Math.abs(8 * this.bbVector.x * this.bbVector.y * this.bbVector.z)); +if ("volume".equals(what)) { +return vol; +}var c = JU.P3.newP(this.bbCenter); +if ("center".equals(what)) { +return c; +}if (what == null || "info".equals(what)) { +var m = new java.util.Hashtable(); +m.put("center", c); +var v = JU.V3.newVsub(this.bbCorner1, this.bbCorner0); +m.put("dimensions", v); +m.put("girth", Double.$valueOf(v.x + v.y + v.z)); +m.put("area", Double.$valueOf(2 * (v.x * v.y + v.x * v.z + v.z * v.y))); +m.put("volume", vol); +return m; +}return null; +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "" + this.bbCorner0 + this.bbCorner1; +}); +c$.getBoxFacesFromOABC = Clazz_defineMethod(c$, "getBoxFacesFromOABC", +function(oabc){ +var faces = new Array(6); +var vNorm = new JU.V3(); +var vAB = new JU.V3(); +var pta = new JU.P3(); +var ptb = new JU.P3(); +var ptc = new JU.P3(); +var vertices = (oabc == null ? JU.BoxInfo.unitCubePoints : JU.BoxInfo.getVerticesFromOABC(oabc)); +for (var i = 0; i < 6; i++) { +pta.setT(vertices[JU.BoxInfo.facePoints[i][0]]); +ptb.setT(vertices[JU.BoxInfo.facePoints[i][1]]); +ptc.setT(vertices[JU.BoxInfo.facePoints[i][2]]); +faces[i] = JU.Measure.getPlaneThroughPoints(pta, ptb, ptc, vNorm, vAB, new JU.P4()); +} +return faces; +}, "~A"); +c$.bbcageTickEdges = Clazz_newCharArray(-1, ['z', '\0', '\0', 'y', 'x', '\0', '\0', '\0', '\0', '\0', '\0', '\0']); +c$.uccageTickEdges = Clazz_newCharArray(-1, ['z', 'y', 'x', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0']); +c$.edges = Clazz_newByteArray(-1, [0, 1, 0, 2, 0, 4, 1, 3, 1, 5, 2, 3, 2, 6, 3, 7, 4, 5, 4, 6, 5, 7, 6, 7]); +c$.faceOrder = Clazz_newIntArray(-1, [0, 3, 5, 2, 1, 4]); +c$.facePoints = Clazz_newArray(-1, [ Clazz_newIntArray(-1, [4, 0, 6]), Clazz_newIntArray(-1, [4, 6, 5]), Clazz_newIntArray(-1, [5, 7, 1]), Clazz_newIntArray(-1, [1, 3, 0]), Clazz_newIntArray(-1, [6, 2, 7]), Clazz_newIntArray(-1, [1, 0, 5]), Clazz_newIntArray(-1, [0, 2, 6]), Clazz_newIntArray(-1, [6, 7, 5]), Clazz_newIntArray(-1, [7, 3, 1]), Clazz_newIntArray(-1, [3, 2, 0]), Clazz_newIntArray(-1, [2, 3, 7]), Clazz_newIntArray(-1, [0, 4, 5])]); +c$.unitCubePoints = Clazz_newArray(-1, [JU.P3.new3(0, 0, 0), JU.P3.new3(0, 0, 1), JU.P3.new3(0, 1, 0), JU.P3.new3(0, 1, 1), JU.P3.new3(1, 0, 0), JU.P3.new3(1, 0, 1), JU.P3.new3(1, 1, 0), JU.P3.new3(1, 1, 1)]); +c$.toCanonical = Clazz_newIntArray(-1, [0, 3, 4, 7, 1, 2, 5, 6]); +c$.unitBboxPoints = new Array(8); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.BS"], "JU.BSUtil", null, function(){ +var c$ = Clazz_declareType(JU, "BSUtil", null); +c$.newAndSetBit = Clazz_defineMethod(c$, "newAndSetBit", +function(i){ +var bs = JU.BS.newN(i + 1); +bs.set(i); +return bs; +}, "~N"); +c$.areEqual = Clazz_defineMethod(c$, "areEqual", +function(a, b){ +return (a == null || b == null ? a == null && b == null : a.equals(b)); +}, "JU.BS,JU.BS"); +c$.haveCommon = Clazz_defineMethod(c$, "haveCommon", +function(a, b){ +return (a == null || b == null ? false : a.intersects(b)); +}, "JU.BS,JU.BS"); +c$.cardinalityOf = Clazz_defineMethod(c$, "cardinalityOf", +function(bs){ +return (bs == null ? 0 : bs.cardinality()); +}, "JU.BS"); +c$.newBitSet2 = Clazz_defineMethod(c$, "newBitSet2", +function(i0, i1){ +var bs = JU.BS.newN(i1); +bs.setBits(i0, i1); +return bs; +}, "~N,~N"); +c$.setAll = Clazz_defineMethod(c$, "setAll", +function(n){ +var bs = JU.BS.newN(n); +bs.setBits(0, n); +return bs; +}, "~N"); +c$.andNot = Clazz_defineMethod(c$, "andNot", +function(a, b){ +if (b != null && a != null) a.andNot(b); +return a; +}, "JU.BS,JU.BS"); +c$.copy = Clazz_defineMethod(c$, "copy", +function(bs){ +return bs == null ? null : bs.clone(); +}, "JU.BS"); +c$.copy2 = Clazz_defineMethod(c$, "copy2", +function(a, b){ +if (a == null || b == null) return null; +b.clearAll(); +b.or(a); +return b; +}, "JU.BS,JU.BS"); +c$.copyInvert = Clazz_defineMethod(c$, "copyInvert", +function(bs, n){ +return (bs == null ? null : JU.BSUtil.andNot(JU.BSUtil.setAll(n), bs)); +}, "JU.BS,~N"); +c$.invertInPlace = Clazz_defineMethod(c$, "invertInPlace", +function(bs, n){ +return JU.BSUtil.copy2(JU.BSUtil.copyInvert(bs, n), bs); +}, "JU.BS,~N"); +c$.toggleInPlace = Clazz_defineMethod(c$, "toggleInPlace", +function(a, b){ +if (a.equals(b)) { +a.clearAll(); +} else if (JU.BSUtil.andNot(JU.BSUtil.copy(b), a).length() == 0) { +JU.BSUtil.andNot(a, b); +} else { +a.or(b); +}return a; +}, "JU.BS,JU.BS"); +c$.deleteBits = Clazz_defineMethod(c$, "deleteBits", +function(bs, bsDelete){ +if (bs == null || bsDelete == null) return bs; +var ipt = bsDelete.nextSetBit(0); +if (ipt < 0) return bs; +var len = bs.length(); +var lend = Math.min(len, bsDelete.length()); +var i; +for (i = bsDelete.nextClearBit(ipt); i < lend && i >= 0; i = bsDelete.nextClearBit(i + 1)) bs.setBitTo(ipt++, bs.get(i)); + +for (i = lend; i < len; i++) bs.setBitTo(ipt++, bs.get(i)); + +if (ipt < len) bs.clearBits(ipt, len); +return bs; +}, "JU.BS,JU.BS"); +c$.shiftBits = Clazz_defineMethod(c$, "shiftBits", +function(bs, bsAdded, setIfFound, iLast){ +if (bs == null || bsAdded == null) return; +var n = bsAdded.length(); +var bsNew = JU.BS.newN(n); +var isFound = false; +var doSet = false; +var checkFound = setIfFound; +for (var j = 0, i = 0; j < n && i < iLast; j++) { +if (bsAdded.get(j)) { +if (doSet) bsNew.set(j); +checkFound = setIfFound; +isFound = false; +} else if (bs.get(i++)) { +bsNew.set(j); +if (checkFound) { +checkFound = false; +isFound = true; +doSet = true; +}} else if (checkFound && !isFound) { +doSet = false; +}} +bs.clearAll(); +bs.or(bsNew); +}, "JU.BS,JU.BS,~B,~N"); +c$.offset = Clazz_defineMethod(c$, "offset", +function(bs0, pos, offset){ +if (bs0 == null) return; +var bsTemp = JU.BS.newN(bs0.length() + offset); +for (var i = bs0.nextSetBit(0); i >= pos; i = bs0.nextSetBit(i + 1)) bsTemp.set(i + offset); + +JU.BSUtil.copy2(bsTemp, bs0); +}, "JU.BS,~N,~N"); +c$.setMapBitSet = Clazz_defineMethod(c$, "setMapBitSet", +function(ht, i1, i2, key){ +var bs; +if (ht.containsKey(key)) bs = ht.get(key); + else ht.put(key, bs = new JU.BS()); +bs.setBits(i1, i2 + 1); +}, "java.util.Map,~N,~N,~S"); +c$.emptySet = new JU.BS(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Int2IntHash"], "JU.C", ["JU.AU", "$.CU", "$.PT", "$.SB", "J.c.PAL", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_declareType(JU, "C", null); +/*LV!1824 unnec constructor*/c$.getColix = Clazz_defineMethod(c$, "getColix", +function(argb){ +if (argb == 0) return 0; +var translucentFlag = 0; +argb |= 0xFF000000; +var c = JU.C.colixHash.get(argb); +return ((c > 0 ? c : JU.C.allocateColix(argb, false)) | translucentFlag); +}, "~N"); +c$.allocateColix = Clazz_defineMethod(c$, "allocateColix", +function(argb, forceLast){ +var n; +if (forceLast) { +n = 2047; +} else { +if (argb == -74566) return 3; +for (var i = JU.C.colixMax; --i >= 4; ) if ((argb & 0xFFFFFF) == (JU.C.argbs[i] & 0xFFFFFF)) return i; + +n = JU.C.colixMax; +}if (n >= JU.C.argbs.length) { +var newSize = (forceLast ? n + 1 : JU.C.colixMax * 2); +if (newSize > 2048) newSize = 2048; +JU.C.argbs = JU.AU.arrayCopyI(JU.C.argbs, newSize); +if (JU.C.argbsGreyscale != null) JU.C.argbsGreyscale = JU.AU.arrayCopyI(JU.C.argbsGreyscale, newSize); +}JU.C.argbs[n] = argb; +if (JU.C.argbsGreyscale != null) JU.C.argbsGreyscale[n] = JU.CU.toFFGGGfromRGB(argb); +JU.C.colixHash.put(argb, n); +return (n < 2047 ? JU.C.colixMax++ : JU.C.colixMax); +}, "~N,~B"); +c$.setLastGrey = Clazz_defineMethod(c$, "setLastGrey", +function(argb){ +JU.C.calcArgbsGreyscale(); +JU.C.argbsGreyscale[2047] = JU.CU.toFFGGGfromRGB(argb); +}, "~N"); +c$.calcArgbsGreyscale = Clazz_defineMethod(c$, "calcArgbsGreyscale", +function(){ +if (JU.C.argbsGreyscale != null) return; +var a = Clazz_newIntArray (JU.C.argbs.length, 0); +for (var i = JU.C.argbs.length; --i >= 4; ) a[i] = JU.CU.toFFGGGfromRGB(JU.C.argbs[i]); + +JU.C.argbsGreyscale = a; +}); +c$.getArgbGreyscale = Clazz_defineMethod(c$, "getArgbGreyscale", +function(colix){ +if (JU.C.argbsGreyscale == null) JU.C.calcArgbsGreyscale(); +return JU.C.argbsGreyscale[colix & -30721]; +}, "~N"); +c$.getColixO = Clazz_defineMethod(c$, "getColixO", +function(obj){ +if (obj == null) return 0; +if (Clazz_instanceOf(obj,"J.c.PAL")) return ((obj) === J.c.PAL.NONE ? 0 : 2); +if (Clazz_instanceOf(obj, Integer)) return JU.C.getColix((obj).intValue()); +if ((typeof(obj)=='string')) return JU.C.getColixS(obj); +if (Clazz_instanceOf(obj, Byte)) return ((obj).byteValue() == 0 ? 0 : 2); +if (JU.Logger.debugging) { +JU.Logger.debug("?? getColix(" + obj + ")"); +}return 22; +}, "~O"); +c$.getTranslucentFlag = Clazz_defineMethod(c$, "getTranslucentFlag", +function(translucentLevel){ +if (translucentLevel == 0) return 0; +if (translucentLevel < 0) return 30720; +if (Float.isNaN(translucentLevel) || translucentLevel >= 255 || translucentLevel == 1.0) return 16384; +var iLevel = Clazz_doubleToInt(Math.floor(translucentLevel < 1 ? translucentLevel * 256 : translucentLevel >= 15 ? translucentLevel : translucentLevel <= 9 ? (Clazz_doubleToInt(Math.floor(translucentLevel - 1))) << 5 : 256)); +return (((iLevel >> 5) & 0xF) << 11); +}, "~N"); +c$.isColixLastAvailable = Clazz_defineMethod(c$, "isColixLastAvailable", +function(colix){ +return (colix > 0 && (colix & 2047) == 2047); +}, "~N"); +c$.getArgb = Clazz_defineMethod(c$, "getArgb", +function(colix){ +return JU.C.argbs[colix & -30721]; +}, "~N"); +c$.isColixColorInherited = Clazz_defineMethod(c$, "isColixColorInherited", +function(colix){ +switch (colix) { +case 0: +case 1: +return true; +default: +return (colix & -30721) == 1; +} +}, "~N"); +c$.getColixInherited = Clazz_defineMethod(c$, "getColixInherited", +function(myColix, parentColix){ +switch (myColix) { +case 0: +return parentColix; +case 1: +return (parentColix & -30721); +default: +return ((myColix & -30721) == 1 ? (parentColix & -30721 | myColix & 30720) : myColix); +} +}, "~N,~N"); +c$.renderPass2 = Clazz_defineMethod(c$, "renderPass2", +function(colix){ +var c = colix & 30720; +return (c != 0 && c != 30720); +}, "~N"); +c$.isColixTranslucent = Clazz_defineMethod(c$, "isColixTranslucent", +function(colix){ +return ((colix & 30720) != 0); +}, "~N"); +c$.getChangeableColixIndex = Clazz_defineMethod(c$, "getChangeableColixIndex", +function(colix){ +return (colix >= 0 ? -1 : (colix & 2047)); +}, "~N"); +c$.getColixTranslucent3 = Clazz_defineMethod(c$, "getColixTranslucent3", +function(colix, isTranslucent, translucentLevel){ +colix &= -30721; +if (colix == 0) colix = 1; +return (isTranslucent ? (colix | JU.C.getTranslucentFlag(translucentLevel)) : colix); +}, "~N,~B,~N"); +c$.copyColixTranslucency = Clazz_defineMethod(c$, "copyColixTranslucency", +function(colixFrom, colixTo){ +return JU.C.getColixTranslucent3(colixTo, JU.C.isColixTranslucent(colixFrom), JU.C.getColixTranslucencyLevel(colixFrom)); +}, "~N,~N"); +c$.getColixTranslucencyFractional = Clazz_defineMethod(c$, "getColixTranslucencyFractional", +function(colix){ +var translevel = JU.C.getColixTranslucencyLevel(colix); +return (translevel == -1 ? 0.5 : translevel == 0 ? 0 : translevel == 255 ? 1 : translevel / 256); +}, "~N"); +c$.getColixTranslucencyLabel = Clazz_defineMethod(c$, "getColixTranslucencyLabel", +function(colix){ +return "translucent " + ((colix & 30720) == 30720 ? -1 : JU.C.getColixTranslucencyFractional(colix)); +}, "~N"); +c$.getColixTranslucencyLevel = Clazz_defineMethod(c$, "getColixTranslucencyLevel", +function(colix){ +var logAlpha = (colix >> 11) & 0xF; +switch (logAlpha) { +case 0: +return 0; +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +case 7: +return logAlpha << 5; +case 15: +return -1; +default: +return 255; +} +}, "~N"); +c$.getColixS = Clazz_defineMethod(c$, "getColixS", +function(colorName){ +var argb = JU.CU.getArgbFromString(colorName); +if (argb != 0) return JU.C.getColix(argb); +if ("none".equalsIgnoreCase(colorName)) return 0; +if ("opaque".equalsIgnoreCase(colorName)) return 1; +return 2; +}, "~S"); +c$.getColixArray = Clazz_defineMethod(c$, "getColixArray", +function(colorNames){ +if (colorNames == null || colorNames.length == 0) return null; +var colors = JU.PT.getTokens(colorNames); +var colixes = Clazz_newShortArray (colors.length, 0); +for (var j = 0; j < colors.length; j++) { +colixes[j] = JU.C.getColix(JU.CU.getArgbFromString(colors[j])); +if (colixes[j] == 0) return null; +} +return colixes; +}, "~S"); +c$.getHexCode = Clazz_defineMethod(c$, "getHexCode", +function(colix){ +return JU.Escape.escapeColor(JU.C.getArgb(colix)); +}, "~N"); +c$.getHexCodes = Clazz_defineMethod(c$, "getHexCodes", +function(colixes){ +if (colixes == null) return null; +var s = new JU.SB(); +for (var i = 0; i < colixes.length; i++) s.append(i == 0 ? "" : " ").append(JU.C.getHexCode(colixes[i])); + +return s.toString(); +}, "~A"); +c$.getColixTranslucent = Clazz_defineMethod(c$, "getColixTranslucent", +function(argb){ +var a = (argb >> 24) & 0xFF; +return (a == 0xFF ? JU.C.getColix(argb) : JU.C.getColixTranslucent3(JU.C.getColix(argb), true, a / 255)); +}, "~N"); +c$.getBgContrast = Clazz_defineMethod(c$, "getBgContrast", +function(argb){ +return ((JU.CU.toFFGGGfromRGB(argb) & 0xFF) < 128 ? 8 : 4); +}, "~N"); +c$.colixMax = 4; +c$.argbs = Clazz_newIntArray (128, 0); +{ +JU.C.argbs[3] = -74566; +}c$.argbsGreyscale = null; +c$.colixHash = new JU.Int2IntHash(256); +{ +var predefinedArgbs = Clazz_newIntArray(-1, [0xFF000000, 0xFFFFA500, 0xFFFFC0CB, 0xFF0000FF, 0xFFFFFFFF, 0xFF00FFFF, 0xFFFF0000, 0xFF008000, 0xFF808080, 0xFFC0C0C0, 0xFF00FF00, 0xFF800000, 0xFF000080, 0xFF808000, 0xFF800080, 0xFF008080, 0xFFFF00FF, 0xFFFFFF00, 0xFFFF69B4, 0xFFFFD700]); +for (var i = 0; i < predefinedArgbs.length; ++i) JU.C.getColix(predefinedArgbs[i]); + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.ColorEncoder", ["java.util.Hashtable", "JU.AU", "$.CU", "$.Lst", "$.PT", "$.Rdr", "J.c.PAL", "JU.C", "$.Escape", "$.Logger", "JV.FileManager", "$.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.paletteBW = null; +this.paletteWB = null; +this.paletteFriendly = null; +this.argbsCpk = null; +this.argbsRoygb = null; +this.argbsRwb = null; +this.argbsShapely = null; +this.argbsAmino = null; +this.argbsNucleic = null; +this.ihalf = 0; +this.schemes = null; +this.currentPalette = 0; +this.currentSegmentCount = 1; +this.isTranslucent = false; +this.lo = 0; +this.hi = 0; +this.isReversed = false; +this.userScale = null; +this.thisScale = null; +this.thisName = "scheme"; +this.isColorIndex = false; +this.ce = null; +Clazz_instantialize(this, arguments);}, JU, "ColorEncoder", null); +Clazz_prepareFields (c$, function(){ +this.userScale = Clazz_newIntArray(-1, [-8355712]); +this.thisScale = Clazz_newIntArray(-1, [-8355712]); +}); +Clazz_makeConstructor(c$, +function(ce, vwr){ +if (ce == null) { +this.vwr = vwr; +this.schemes = new java.util.Hashtable(); +this.argbsCpk = J.c.PAL.argbsCpk; +this.argbsRoygb = JV.JC.argbsRoygbScale; +this.argbsRwb = JV.JC.argbsRwbScale; +this.argbsAmino = this.argbsNucleic = this.argbsShapely = null; +this.ihalf = Clazz_doubleToInt(JV.JC.argbsRoygbScale.length / 3); +this.ce = this; +} else { +this.ce = ce; +this.vwr = ce.vwr; +this.schemes = ce.schemes; +}}, "JU.ColorEncoder,JV.Viewer"); +Clazz_defineMethod(c$, "clearCache", +function(){ +this.schemes.clear(); +}); +c$.getSchemeIndex = Clazz_defineMethod(c$, "getSchemeIndex", +function(colorScheme){ +for (var i = 0; i < JU.ColorEncoder.colorSchemes.length; i++) if (JU.ColorEncoder.colorSchemes[i].equalsIgnoreCase(colorScheme)) return (i >= 16 ? i - 16 : i < 13 ? i : -i); + +return -1; +}, "~S"); +c$.fixName = Clazz_defineMethod(c$, "fixName", +function(name){ +if (name.equalsIgnoreCase("byelement")) return "byelement_jmol"; +var ipt = JU.ColorEncoder.getSchemeIndex(name); +return (ipt >= 0 ? JU.ColorEncoder.colorSchemes[ipt] : name.indexOf("/") >= 0 ? name : name.toLowerCase()); +}, "~S"); +Clazz_defineMethod(c$, "makeColorScheme", +function(name, scale, isOverloaded){ +name = JU.ColorEncoder.fixName(name); +if (scale == null) { +this.schemes.remove(name); +var iScheme = this.createColorScheme(name, false, isOverloaded); +if (isOverloaded) switch (iScheme) { +case 2147483647: +return 0; +case 12: +this.paletteFriendly = this.getPaletteAC(); +break; +case 10: +this.paletteBW = this.getPaletteBW(); +break; +case 11: +this.paletteWB = this.getPaletteWB(); +break; +case 0: +case 1: +this.argbsRoygb = JV.JC.argbsRoygbScale; +break; +case 6: +case 7: +this.argbsRwb = JV.JC.argbsRwbScale; +break; +case 2: +this.argbsCpk = J.c.PAL.argbsCpk; +break; +case 3: +JU.ColorEncoder.getRasmolScale(); +break; +case 17: +this.getNucleic(); +break; +case 5: +this.getAmino(); +break; +case 4: +this.getShapely(); +break; +} +return iScheme; +}this.schemes.put(name, scale); +this.setThisScheme(name, scale); +var iScheme = this.createColorScheme(name, false, isOverloaded); +if (isOverloaded) switch (iScheme) { +case 10: +this.paletteBW = this.thisScale; +break; +case 11: +this.paletteWB = this.thisScale; +break; +case 0: +case 1: +this.argbsRoygb = this.thisScale; +this.ihalf = Clazz_doubleToInt(this.argbsRoygb.length / 3); +break; +case 6: +case 7: +this.argbsRwb = this.thisScale; +break; +case 2: +this.argbsCpk = this.thisScale; +break; +case 3: +break; +case 5: +this.argbsAmino = this.thisScale; +break; +case 17: +this.argbsNucleic = this.thisScale; +break; +case 4: +this.argbsShapely = this.thisScale; +break; +} +return -1; +}, "~S,~A,~B"); +Clazz_defineMethod(c$, "getShapely", +function(){ +return (this.argbsShapely == null ? this.argbsShapely = this.vwr.getJBR().getArgbs(1073742144) : this.argbsShapely); +}); +Clazz_defineMethod(c$, "getAmino", +function(){ +return (this.argbsAmino == null ? this.argbsAmino = this.vwr.getJBR().getArgbs(2097154) : this.argbsAmino); +}); +Clazz_defineMethod(c$, "getNucleic", +function(){ +return (this.argbsNucleic == null ? this.argbsNucleic = this.vwr.getJBR().getArgbs(2097166) : this.argbsNucleic); +}); +Clazz_defineMethod(c$, "createColorScheme", +function(colorScheme, defaultToRoygb, isOverloaded){ +if (colorScheme.equalsIgnoreCase("inherit")) return 15; +var pte = colorScheme.lastIndexOf("="); +var pts = colorScheme.indexOf("/"); +var pt = Math.max(pte, colorScheme.indexOf("[")); +var name = JU.ColorEncoder.fixName(colorScheme); +var ipt = JU.ColorEncoder.getSchemeIndex(name); +if (ipt == -1 && (pt < 0 || pts > 0)) { +var scale; +var s = colorScheme; +scale = this.schemes.get(name); +if (scale == null) { +try { +var isNot = (s.charAt(1) == '~'); +if (isNot) s = s.substring(1); +var b = null; +while (true) { +if (s.indexOf("/") < 0) { +if (s.indexOf(".") < 0) s += ".lut.txt"; +var data = new Array(1); +try { +JU.Logger.info("ColorEncoder opening colorschemes/" + s); +JU.Rdr.readAllAsString(JV.FileManager.getBufferedReaderForResource(this.vwr, new JU.C(), "JU/", "colorschemes/" + s), -1, false, data, 0); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +JU.Logger.info("ColorEncoder " + e); +break; +} else { +throw e; +} +} +s = data[0]; +} else { +s = JU.PT.rep(s, " ", "%20"); +JU.Logger.info("ColorEncoder opening " + s); +var o = this.vwr.fm.getFileAsBytes(s, null); +if ((typeof(o)=='string')) { +JU.Logger.info("ColorEncoder " + o); +break; +}b = o; +JU.Logger.info("ColorEncoder read " + b.length + " bytes"); +var i0 = 0; +var n = b.length; +if (n == 800 || n == 802) i0 = 32; +if (n - i0 == 768 || n - i0 == 770) { +scale = Clazz_newIntArray (256, 0); +n = 256 + i0; +for (var i = 0; i < 256; i++) { +scale[i] = JU.CU.rgb(b[i + i0] & 0xFF, b[i + i0 + 256] & 0xFF, b[i + i0 + 512] & 0xFF); +} +} else { +s = String.instantialize(b); +}}if (scale == null) { +var lines = JU.PT.split(s.trim(), "\n"); +var n = lines.length; +scale = Clazz_newIntArray (n, 0); +var isInt = (n > 0 && lines[0].indexOf(".") < 0); +for (var i = 0; i < n; i++) { +var tokens = JU.PT.getTokens(lines[i]); +if (tokens.length < 3) { +scale = null; +break; +}var len = tokens.length; +if (isInt) { +scale[i] = JU.CU.rgb(JU.PT.parseInt(tokens[len - 3]), JU.PT.parseInt(tokens[len - 2]), JU.PT.parseInt(tokens[len - 1])); +} else { +scale[i] = JU.CU.colorTriadToFFRGB(JU.PT.parseFloat(tokens[len - 3]), JU.PT.parseFloat(tokens[len - 2]), JU.PT.parseFloat(tokens[len - 1])); +}} +}if (scale != null && isNot) { +for (var i = 0, n = scale.length - 1, n2 = (n + 1) >> 1; i < n2; i++) { +var v = scale[i]; +scale[i] = scale[n - i]; +scale[n - i] = v; +} +}break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.info("ColorEncoder " + e); +scale = null; +} else { +throw e; +} +} +}if (scale == null) scale = Clazz_newIntArray(-1, [-1]); +this.schemes.put(colorScheme, scale); +this.setThisScheme(colorScheme, scale); +return -1; +} else if (pt >= 0) { +colorScheme = colorScheme.toLowerCase(); +name = JU.PT.replaceAllCharacters(colorScheme.substring(0, pt), " =", ""); +if (name.length > 0) isOverloaded = true; +var n = 0; +if (colorScheme.length > pt + 1 && !colorScheme.contains("[")) { +colorScheme = "[" + colorScheme.substring(pt + 1).trim() + "]"; +colorScheme = JU.PT.rep(colorScheme.$replace('\n', ' '), " ", " "); +colorScheme = JU.PT.rep(colorScheme, ", ", ",").$replace(' ', ','); +colorScheme = JU.PT.rep(colorScheme, ",", "]["); +}pt = -1; +while ((pt = colorScheme.indexOf("[", pt + 1)) >= 0) n++; + +if (n == 0) return this.makeColorScheme(name, null, isOverloaded); +var scale = Clazz_newIntArray (n, 0); +n = 0; +while ((pt = colorScheme.indexOf("[", pt + 1)) >= 0) { +var pt2 = colorScheme.indexOf("]", pt); +if (pt2 < 0) pt2 = colorScheme.length - 1; +var c = JU.CU.getArgbFromString(colorScheme.substring(pt, pt2 + 1)); +if (c == 0) c = JU.CU.getArgbFromString(colorScheme.substring(pt + 1, pt2).trim()); +if (c == 0) { +JU.Logger.error("error in color value: " + colorScheme.substring(pt, pt2 + 1)); +return 0; +}scale[n++] = c; +} +if (name.equals("user")) { +this.setUserScale(scale); +return -13; +}return this.makeColorScheme(name, scale, isOverloaded); +}var scale = this.schemes.get(name); +if (scale != null) { +this.setThisScheme(name, scale); +return ipt; +}return (ipt != -1 ? ipt : defaultToRoygb ? 0 : 2147483647); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "setUserScale", +function(scale){ +this.ce.userScale = scale; +this.makeColorScheme("user", scale, false); +}, "~A"); +Clazz_defineMethod(c$, "getColorSchemeArray", +function(palette){ +var b; +switch (palette) { +case -1: +return this.thisScale; +case 0: +return this.ce.argbsRoygb; +case 1: +return JU.AU.arrayCopyRangeRevI(this.ce.argbsRoygb, 0, -1); +case 8: +return JU.AU.arrayCopyRangeI(this.ce.argbsRoygb, 0, this.ce.ihalf); +case 9: +var a = JU.AU.arrayCopyRangeI(this.ce.argbsRoygb, this.ce.argbsRoygb.length - 2 * this.ce.ihalf, -1); +b = Clazz_newIntArray (this.ce.ihalf, 0); +for (var i = b.length, j = a.length; --i >= 0 && --j >= 0; ) b[i] = a[j--]; + +return b; +case 12: +return this.getPaletteAC(); +case 10: +return this.getPaletteBW(); +case 11: +return this.getPaletteWB(); +case 6: +return this.ce.argbsRwb; +case 7: +return JU.AU.arrayCopyRangeRevI(this.ce.argbsRwb, 0, -1); +case 2: +return this.ce.argbsCpk; +case 3: +return JU.ColorEncoder.getRasmolScale(); +case 4: +return this.ce.getShapely(); +case 17: +return this.ce.getNucleic(); +case 5: +return this.ce.getAmino(); +case -13: +return this.ce.userScale; +case -14: +return JU.AU.arrayCopyRangeRevI(this.ce.userScale, 0, -1); +default: +return null; +} +}, "~N"); +Clazz_defineMethod(c$, "getColorIndexFromPalette", +function(val, lo, hi, palette, isTranslucent){ +var colix = JU.C.getColix(this.getArgbFromPalette(val, lo, hi, palette)); +if (isTranslucent) { +var f = (hi - val) / (hi - lo); +if (f > 1) f = 1; + else if (f < 0.125) f = 0.125; +colix = JU.C.getColixTranslucent3(colix, true, f); +}return colix; +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "getPaletteColorCount", +function(palette){ +switch (palette) { +case -1: +return this.thisScale.length; +case 10: +case 11: +return this.getPaletteBW().length; +case 0: +case 1: +return this.ce.argbsRoygb.length; +case 8: +case 9: +return this.ce.ihalf; +case 6: +case 7: +return this.ce.argbsRwb.length; +case -13: +case -14: +return this.ce.userScale.length; +case 2: +return this.ce.argbsCpk.length; +case 3: +return JU.ColorEncoder.getRasmolScale().length; +case 4: +return this.ce.getShapely().length; +case 17: +return this.ce.getNucleic().length; +case 5: +return this.ce.getAmino().length; +case 12: +return this.getPaletteAC().length; +default: +return 0; +} +}, "~N"); +Clazz_defineMethod(c$, "getArgbFromPalette", +function(val, lo, hi, palette){ +if (Float.isNaN(val)) return -8355712; +var n = this.getPaletteColorCount(palette); +switch (palette) { +case -1: +if (this.isColorIndex) { +lo = 0; +hi = this.thisScale.length; +}return this.thisScale[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 10: +return this.getPaletteBW()[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 11: +return this.getPaletteWB()[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 0: +return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 1: +return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(-val, -hi, -lo, n)]; +case 8: +return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 9: +return this.ce.argbsRoygb[this.ce.ihalf + JU.ColorEncoder.quantize4(val, lo, hi, n) * 2]; +case 6: +return this.ce.argbsRwb[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 7: +return this.ce.argbsRwb[JU.ColorEncoder.quantize4(-val, -hi, -lo, n)]; +case -13: +return (this.ce.userScale.length == 0 ? -8355712 : this.ce.userScale[JU.ColorEncoder.quantize4(val, lo, hi, n)]); +case -14: +return (this.ce.userScale.length == 0 ? -8355712 : this.ce.userScale[JU.ColorEncoder.quantize4(-val, -hi, -lo, n)]); +case 2: +return this.ce.argbsCpk[JU.ColorEncoder.colorIndex(val, n)]; +case 3: +return JU.ColorEncoder.getRasmolScale()[JU.ColorEncoder.colorIndex(val, n)]; +case 4: +return this.ce.getShapely()[JU.ColorEncoder.colorIndex(val, n)]; +case 5: +return this.ce.getAmino()[JU.ColorEncoder.colorIndex(val, n)]; +case 17: +return this.ce.getNucleic()[JU.ColorEncoder.colorIndex(val - 24 + 2, n)]; +case 12: +return this.getPaletteAC()[JU.ColorEncoder.colorIndexRepeat(val, n)]; +default: +return -8355712; +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setThisScheme", +function(name, scale){ +this.thisName = name; +this.thisScale = scale; +if (name.equals("user")) this.userScale = scale; +this.isColorIndex = (name.indexOf("byelement") == 0 || name.indexOf("byresidue") == 0); +}, "~S,~A"); +Clazz_defineMethod(c$, "getArgb", +function(val){ +return (this.isReversed ? this.getArgbFromPalette(-val, -this.hi, -this.lo, this.currentPalette) : this.getArgbFromPalette(val, this.lo, this.hi, this.currentPalette)); +}, "~N"); +Clazz_defineMethod(c$, "getArgbMinMax", +function(val, min, max){ +return (this.isReversed ? this.getArgbFromPalette(-val, -max, -min, this.currentPalette) : this.getArgbFromPalette(val, min, max, this.currentPalette)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getColorIndex", +function(val){ +return (this.isReversed ? this.getColorIndexFromPalette(-val, -this.hi, -this.lo, this.currentPalette, this.isTranslucent) : this.getColorIndexFromPalette(val, this.lo, this.hi, this.currentPalette, this.isTranslucent)); +}, "~N"); +Clazz_defineMethod(c$, "getColorKey", +function(){ +var info = new java.util.Hashtable(); +var segmentCount = this.getPaletteColorCount(this.currentPalette); +var colors = new JU.Lst(); +var values = Clazz_newFloatArray (segmentCount + 1, 0); +var quantum = (this.hi - this.lo) / segmentCount; +var f = quantum * (this.isReversed ? -0.5 : 0.5); +for (var i = 0; i < segmentCount; i++) { +values[i] = (this.isReversed ? this.hi - i * quantum : this.lo + i * quantum); +colors.addLast(JU.CU.colorPtFromInt(this.getArgb(values[i] + f), null)); +} +values[segmentCount] = (this.isReversed ? this.lo : this.hi); +info.put("values", values); +info.put("colors", colors); +info.put("min", Float.$valueOf(this.lo)); +info.put("max", Float.$valueOf(this.hi)); +info.put("reversed", Boolean.$valueOf(this.isReversed)); +info.put("name", this.getCurrentColorSchemeName()); +return info; +}); +Clazz_defineMethod(c$, "getColorScheme", +function(){ +return (this.isTranslucent ? "translucent " : "") + (this.currentPalette < 0 ? JU.ColorEncoder.getColorSchemeList(this.getColorSchemeArray(this.currentPalette)) : this.getColorSchemeName(this.currentPalette)); +}); +Clazz_defineMethod(c$, "setColorScheme", +function(colorScheme, isTranslucent){ +this.isTranslucent = isTranslucent; +if (colorScheme != null) this.currentPalette = this.createColorScheme(colorScheme, true, false); +}, "~S,~B"); +Clazz_defineMethod(c$, "setRange", +function(lo, hi, isReversed){ +if (hi == 3.4028235E38) { +lo = 1; +hi = this.getPaletteColorCount(this.currentPalette) + 1; +}this.lo = Math.min(lo, hi); +this.hi = Math.max(lo, hi); +this.isReversed = isReversed; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "getCurrentColorSchemeName", +function(){ +return this.getColorSchemeName(this.currentPalette); +}); +Clazz_defineMethod(c$, "getColorSchemeName", +function(i){ +var absi = Math.abs(i); +return (i == -1 ? this.thisName : absi < JU.ColorEncoder.colorSchemes.length && absi >= 0 ? JU.ColorEncoder.colorSchemes[absi] : null); +}, "~N"); +c$.getColorSchemeList = Clazz_defineMethod(c$, "getColorSchemeList", +function(scheme){ +if (scheme == null) return ""; +var colors = ""; +for (var i = 0; i < scheme.length; i++) colors += (i == 0 ? "" : " ") + JU.Escape.escapeColor(scheme[i]); + +return colors; +}, "~A"); +c$.getRasmolScale = Clazz_defineMethod(c$, "getRasmolScale", +function(){ +if (JU.ColorEncoder.rasmolScale != null) return JU.ColorEncoder.rasmolScale; +JU.ColorEncoder.rasmolScale = Clazz_newIntArray (J.c.PAL.argbsCpk.length, 0); +var argb = J.c.PAL.argbsCpkRasmol[0] | 0xFF000000; +for (var i = JU.ColorEncoder.rasmolScale.length; --i >= 0; ) JU.ColorEncoder.rasmolScale[i] = argb; + +for (var i = J.c.PAL.argbsCpkRasmol.length; --i >= 0; ) { +argb = J.c.PAL.argbsCpkRasmol[i]; +JU.ColorEncoder.rasmolScale[argb >> 24] = argb | 0xFF000000; +} +return JU.ColorEncoder.rasmolScale; +}); +Clazz_defineMethod(c$, "getPaletteAC", +function(){ +return (this.ce.paletteFriendly == null ? this.ce.paletteFriendly = Clazz_newIntArray(-1, [0x808080, 0x104BA9, 0xAA00A2, 0xC9F600, 0xFFA200, 0x284A7E, 0x7F207B, 0x9FB82E, 0xBF8B30, 0x052D6E, 0x6E0069, 0x83A000, 0xA66A00, 0x447BD4, 0xD435CD, 0xD8FA3F, 0xFFBA40, 0x6A93D4, 0xD460CF, 0xE1FA71, 0xFFCC73]) : this.ce.paletteFriendly); +}); +Clazz_defineMethod(c$, "getPaletteWB", +function(){ +if (this.ce.paletteWB != null) return this.ce.paletteWB; +var b = Clazz_newIntArray (JV.JC.argbsRoygbScale.length, 0); +for (var i = 0; i < b.length; i++) { +var xff = (1 / b.length * (b.length - i)); +b[i] = JU.CU.colorTriadToFFRGB(xff, xff, xff); +} +return this.ce.paletteWB = b; +}); +c$.getPaletteAtoB = Clazz_defineMethod(c$, "getPaletteAtoB", +function(color1, color2, n){ +if (n < 2) n = JV.JC.argbsRoygbScale.length; +var b = Clazz_newIntArray (n, 0); +var rgb1 = Clazz_newFloatArray (3, 0); +var rgb2 = Clazz_newFloatArray (3, 0); +JU.CU.toRGB3f(color1, rgb1); +JU.CU.toRGB3f(color2, rgb2); +var dr = (rgb2[0] - rgb1[0]) / (n - 1); +var dg = (rgb2[1] - rgb1[1]) / (n - 1); +var db = (rgb2[2] - rgb1[2]) / (n - 1); +for (var i = 0; i < n; i++) b[i] = JU.CU.colorTriadToFFRGB(rgb1[0] + dr * i, rgb1[1] + dg * i, rgb1[2] + db * i); + +return b; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getPaletteBW", +function(){ +if (this.ce.paletteBW != null) return this.ce.paletteBW; +var b = Clazz_newIntArray (JV.JC.argbsRoygbScale.length, 0); +for (var i = 0; i < b.length; i++) { +var xff = (1 / b.length * i); +b[i] = JU.CU.colorTriadToFFRGB(xff, xff, xff); +} +return this.ce.paletteBW = b; +}); +Clazz_defineMethod(c$, "quantize", +function(x, isLowEnd){ +var n = this.getPaletteColorCount(this.currentPalette); +x = ((Clazz_floatToInt(x * n)) + (isLowEnd ? 0 : 1)) / n; +return (x <= 0 ? this.lo : x >= 1 ? this.hi : this.lo + (this.hi - this.lo) * x); +}, "~N,~B"); +c$.quantize4 = Clazz_defineMethod(c$, "quantize4", +function(val, lo, hi, segmentCount){ +var range = hi - lo; +if (range <= 0 || Float.isNaN(val)) return Clazz_doubleToInt(segmentCount / 2); +var t = val - lo; +if (t <= 0) return 0; +var quanta = range / segmentCount; +var q = Clazz_floatToInt(t / quanta + 0.0001); +if (q >= segmentCount) q = segmentCount - 1; +return q; +}, "~N,~N,~N,~N"); +c$.colorIndex = Clazz_defineMethod(c$, "colorIndex", +function(q, segmentCount){ +return Clazz_doubleToInt(Math.floor(q <= 0 || q >= segmentCount ? 0 : q)); +}, "~N,~N"); +c$.colorIndexRepeat = Clazz_defineMethod(c$, "colorIndexRepeat", +function(q, segmentCount){ +var i = Clazz_doubleToInt(Math.floor(q <= 0 ? 0 : q)); +return i % segmentCount; +}, "~N,~N"); +c$.colorSchemes = Clazz_newArray(-1, ["roygb", "bgyor", "byelement_jmol", "byelement_rasmol", "byresidue_shapely", "byresidue_amino", "rwb", "bwr", "low", "high", "bw", "wb", "friendly", "user", "resu", "inherit", "rgb", "bgr", "jmol", "rasmol", "byresidue", "byresidue_nucleic"]); +c$.rasmolScale = null; +c$.argbsChainAtom = null; +c$.argbsChainHetero = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.CommandHistory", ["JU.Lst"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.commandList = null; +this.maxSize = 100; +this.nextCommand = 0; +this.cursorPos = 0; +this.isOn = true; +this.lstStates = null; +Clazz_instantialize(this, arguments);}, JU, "CommandHistory", null); +Clazz_makeConstructor(c$, +function(){ +this.reset(100); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.reset(this.maxSize); +}); +Clazz_defineMethod(c$, "reset", +function(maxSize){ +this.maxSize = maxSize; +this.commandList = new JU.Lst(); +this.nextCommand = 0; +this.commandList.addLast(""); +this.cursorPos = 0; +}, "~N"); +Clazz_defineMethod(c$, "setMaxSize", +function(maxSize){ +if (maxSize == this.maxSize) return; +if (maxSize < 2) maxSize = 2; +while (this.nextCommand > maxSize) { +this.commandList.removeItemAt(0); +this.nextCommand--; +} +if (this.nextCommand > maxSize) this.nextCommand = maxSize - 1; +this.cursorPos = this.nextCommand; +this.maxSize = maxSize; +}, "~N"); +Clazz_defineMethod(c$, "getCommandUp", +function(){ +if (this.cursorPos <= 0) return null; +this.cursorPos--; +var str = this.getCommand(); +if (str.endsWith("#??")) this.removeCommand(this.cursorPos--); +if (this.cursorPos < 0) this.cursorPos = 0; +return str; +}); +Clazz_defineMethod(c$, "getCommandDown", +function(){ +if (this.cursorPos >= this.nextCommand) return null; +this.cursorPos++; +return this.getCommand(); +}); +Clazz_defineMethod(c$, "getCommand", +function(){ +return this.commandList.get(this.cursorPos); +}); +Clazz_defineMethod(c$, "addCommand", +function(strCommand){ +if (!this.isOn && !strCommand.endsWith("#??")) return; +if (strCommand.endsWith("#----")) return; +var i; +while ((i = strCommand.indexOf("\n")) >= 0) { +var str = strCommand.substring(0, i); +if (str.length > 0) this.addCommandLine(str); +strCommand = strCommand.substring(i + 1); +} +if (strCommand.length > 0) this.addCommandLine(strCommand); +}, "~S"); +Clazz_defineMethod(c$, "getSetHistory", +function(n){ +this.isOn = (n == -2 ? this.isOn : true); +switch (n) { +case 0: +this.isOn = false; +this.clear(); +return ""; +case -2147483648: +case -2: +this.clear(); +return ""; +case -1: +return this.getCommandUp(); +case 1: +return this.getCommandDown(); +default: +if (n < 0) { +this.setMaxSize(-2 - n); +return ""; +}n = Math.max(this.nextCommand - n, 0); +} +var str = ""; +for (var i = n; i < this.nextCommand; i++) if (!this.commandList.get(i).toUpperCase().startsWith("WRITE HISTORY")) str += this.commandList.get(i) + "\n"; + +return str; +}, "~N"); +Clazz_defineMethod(c$, "find", +function(cmd, dir){ +var cpos = this.cursorPos; +var c = cmd; +while (c != null) { +c = this.getSetHistory(dir); +if (c == null) break; +if (c.startsWith(cmd)) return c; +} +this.cursorPos = cpos; +return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "removeCommand", +function(){ +return this.removeCommand(this.nextCommand - 1); +}); +Clazz_defineMethod(c$, "removeCommand", +function(n){ +if (n < 0 || n >= this.nextCommand) return ""; +var str = this.commandList.removeItemAt(n); +this.nextCommand--; +return str; +}, "~N"); +Clazz_defineMethod(c$, "addCommandLine", +function(command){ +if (command == null || command.length == 0) return; +if (command.endsWith("#--")) return; +if (this.nextCommand > 0 && command.equals(this.commandList.get(this.nextCommand - 1))) { +this.cursorPos = this.nextCommand; +return; +}if (this.nextCommand >= this.maxSize) { +this.commandList.removeItemAt(0); +this.nextCommand = this.maxSize - 1; +}this.commandList.add(this.nextCommand, command); +this.nextCommand++; +this.cursorPos = this.nextCommand; +this.commandList.add(this.nextCommand, ""); +}, "~S"); +Clazz_defineMethod(c$, "pushState", +function(stateInfo){ +if (this.lstStates == null) this.lstStates = new JU.Lst(); +this.lstStates.addLast(stateInfo); +}, "~S"); +Clazz_defineMethod(c$, "popState", +function(){ +if (this.lstStates == null || this.lstStates.size() == 0) return null; +var s = this.lstStates.removeItemAt(this.lstStates.size() - 1); +return s; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.LoggerInterface"], "JU.DefaultLogger", ["JU.Logger"], function(){ +var c$ = Clazz_declareType(JU, "DefaultLogger", null, JU.LoggerInterface); +Clazz_defineMethod(c$, "log", +function(out, level, txt, e){ +if (out === System.err) System.out.flush(); +if ((out != null) && ((txt != null) || (e != null))) { +txt = (txt != null ? txt : ""); +txt = (JU.Logger.logLevel() ? "[" + JU.Logger.getLevel(level) + "] " : "") + txt + (e != null ? ": " + e.toString() : ""); +out.println(txt); +if (e != null) { +var elements = e.getStackTrace(); +if (elements != null) { +for (var i = 0; i < elements.length; i++) { +out.println(elements[i].getClassName() + " - " + elements[i].getLineNumber() + " - " + elements[i].getMethodName()); +} +}}}if (out === System.err) System.err.flush(); +return txt; +}, "java.io.PrintStream,~N,~S,Throwable"); +Clazz_overrideMethod(c$, "debug", +function(txt){ +this.log(System.out, 5, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "info", +function(txt){ +this.log(System.out, 4, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "warn", +function(txt){ +this.log(System.out, 3, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "warnEx", +function(txt, e){ +this.log(System.out, 3, txt, e); +}, "~S,Throwable"); +Clazz_overrideMethod(c$, "error", +function(txt){ +this.log(System.err, 2, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "errorEx", +function(txt, e){ +this.log(System.err, 2, txt, e); +}, "~S,Throwable"); +Clazz_overrideMethod(c$, "fatal", +function(txt){ +this.log(System.err, 1, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "fatalEx", +function(txt, e){ +this.log(System.err, 1, txt, e); +}, "~S,Throwable"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.BS"], "JU.Elements", ["java.util.Hashtable", "JU.PT", "JU.Logger"], function(){ +var c$ = Clazz_declareType(JU, "Elements", null); +c$.getNaturalIsotope = Clazz_defineMethod(c$, "getNaturalIsotope", +function(elementNumber){ +return JU.Elements.isotopeMass[elementNumber & 127]; +}, "~N"); +c$.getAtomicMass = Clazz_defineMethod(c$, "getAtomicMass", +function(i){ +return (i < 1 || i >= JU.Elements.atomicMass.length ? 0 : JU.Elements.atomicMass[i]); +}, "~N"); +c$.elementNumberFromSymbol = Clazz_defineMethod(c$, "elementNumberFromSymbol", +function(elementSymbol, isSilent){ +if (JU.Elements.htElementMap == null) { +var map = new java.util.Hashtable(); +for (var elementNumber = JU.Elements.elementNumberMax; --elementNumber >= 0; ) { +var symbol = JU.Elements.elementSymbols[elementNumber]; +var boxed = Integer.$valueOf(elementNumber); +map.put(symbol, boxed); +if (symbol.length == 2) map.put(symbol.toUpperCase(), boxed); +} +for (var i = JU.Elements.altElementMax; --i >= 4; ) { +var symbol = JU.Elements.altElementSymbols[i]; +var boxed = Integer.$valueOf(JU.Elements.altElementNumbers[i]); +map.put(symbol, boxed); +if (symbol.length == 2) map.put(symbol.toUpperCase(), boxed); +} +map.put("Z", Integer.$valueOf(0)); +JU.Elements.htElementMap = map; +}if (elementSymbol == null) return 0; +var boxedAtomicNumber = JU.Elements.htElementMap.get(elementSymbol); +if (boxedAtomicNumber != null) return boxedAtomicNumber.intValue(); +if (JU.PT.isDigit(elementSymbol.charAt(0))) { +var pt = elementSymbol.length - 2; +if (pt >= 0 && JU.PT.isDigit(elementSymbol.charAt(pt))) pt++; +var isotope = (pt > 0 ? JU.PT.parseInt(elementSymbol.substring(0, pt)) : 0); +if (isotope > 0) { +var n = JU.Elements.elementNumberFromSymbol(elementSymbol.substring(pt), true); +if (n > 0) { +isotope = JU.Elements.getAtomicAndIsotopeNumber(n, isotope); +JU.Elements.htElementMap.put(elementSymbol.toUpperCase(), Integer.$valueOf(isotope)); +return isotope; +}}}if (!isSilent) JU.Logger.error("'" + elementSymbol + "' is not a recognized symbol"); +return 0; +}, "~S,~B"); +c$.elementSymbolFromNumber = Clazz_defineMethod(c$, "elementSymbolFromNumber", +function(elemNo){ +var isoNumber = 0; +if (elemNo >= JU.Elements.elementNumberMax) { +for (var j = JU.Elements.altElementMax; --j >= 0; ) if (elemNo == JU.Elements.altElementNumbers[j]) return JU.Elements.altElementSymbols[j]; + +isoNumber = JU.Elements.getIsotopeNumber(elemNo); +elemNo &= 127; +return "" + isoNumber + JU.Elements.getElementSymbol(elemNo); +}return JU.Elements.getElementSymbol(elemNo); +}, "~N"); +c$.getElementSymbol = Clazz_defineMethod(c$, "getElementSymbol", +function(elemNo){ +if (elemNo < 0 || elemNo >= JU.Elements.elementNumberMax) elemNo = 0; +return JU.Elements.elementSymbols[elemNo]; +}, "~N"); +c$.elementNameFromNumber = Clazz_defineMethod(c$, "elementNameFromNumber", +function(elementNumber){ +if (elementNumber >= JU.Elements.elementNumberMax) { +for (var j = JU.Elements.altElementMax; --j >= 0; ) if (elementNumber == JU.Elements.altElementNumbers[j]) return JU.Elements.altElementNames[j]; + +elementNumber %= 128; +}if (elementNumber < 0 || elementNumber >= JU.Elements.elementNumberMax) elementNumber = 0; +return JU.Elements.elementNames[elementNumber]; +}, "~N"); +c$.elementNumberFromName = Clazz_defineMethod(c$, "elementNumberFromName", +function(name){ +for (var i = 1; i < JU.Elements.elementNumberMax; i++) if (JU.Elements.elementNames[i].equalsIgnoreCase(name)) return i; + +return -1; +}, "~S"); +c$.altElementNameFromIndex = Clazz_defineMethod(c$, "altElementNameFromIndex", +function(i){ +return JU.Elements.altElementNames[i]; +}, "~N"); +c$.altElementNumberFromIndex = Clazz_defineMethod(c$, "altElementNumberFromIndex", +function(i){ +return JU.Elements.altElementNumbers[i]; +}, "~N"); +c$.altElementSymbolFromIndex = Clazz_defineMethod(c$, "altElementSymbolFromIndex", +function(i){ +return JU.Elements.altElementSymbols[i]; +}, "~N"); +c$.altIsotopeSymbolFromIndex = Clazz_defineMethod(c$, "altIsotopeSymbolFromIndex", +function(i){ +var code = JU.Elements.altElementNumbers[i]; +return (code >> 7) + JU.Elements.elementSymbolFromNumber(code & 127); +}, "~N"); +c$.altIsotopeSymbolFromIndex2 = Clazz_defineMethod(c$, "altIsotopeSymbolFromIndex2", +function(i){ +var code = JU.Elements.altElementNumbers[i]; +return JU.Elements.elementSymbolFromNumber(code & 127) + ((code) >> 7); +}, "~N"); +c$.getElementNumber = Clazz_defineMethod(c$, "getElementNumber", +function(atomicAndIsotopeNumber){ +return atomicAndIsotopeNumber & 127; +}, "~N"); +c$.getIsotopeNumber = Clazz_defineMethod(c$, "getIsotopeNumber", +function(atomicAndIsotopeNumber){ +return (atomicAndIsotopeNumber & 32640) >> 7; +}, "~N"); +c$.getAtomicAndIsotopeNumber = Clazz_defineMethod(c$, "getAtomicAndIsotopeNumber", +function(n, mass){ +return ((n < 0 ? 0 : n) + (mass <= 0 ? 0 : mass << 7)); +}, "~N,~N"); +c$.altElementIndexFromNumber = Clazz_defineMethod(c$, "altElementIndexFromNumber", +function(atomicAndIsotopeNumber){ +for (var i = 0; i < JU.Elements.altElementMax; i++) if (JU.Elements.altElementNumbers[i] == atomicAndIsotopeNumber) return i; + +return 0; +}, "~N"); +c$.isNaturalIsotope = Clazz_defineMethod(c$, "isNaturalIsotope", +function(isotopeSymbol){ +return ("1H,12C,14N".indexOf(isotopeSymbol + ",") >= 0); +}, "~S"); +c$.getBondingRadius = Clazz_defineMethod(c$, "getBondingRadius", +function(atomicNumberAndIsotope, charge){ +var atomicNumber = atomicNumberAndIsotope & 127; +return (charge > 0 && JU.Elements.bsCations.get(atomicNumber) ? JU.Elements.getBondingRadFromTable(atomicNumber, charge, JU.Elements.cationLookupTable) : charge < 0 && JU.Elements.bsAnions.get(atomicNumber) ? JU.Elements.getBondingRadFromTable(atomicNumber, charge, JU.Elements.anionLookupTable) : JU.Elements.defaultBondingMars[(atomicNumber << 1) + JU.Elements.bondingVersion] / 1000); +}, "~N,~N"); +c$.getCovalentRadius = Clazz_defineMethod(c$, "getCovalentRadius", +function(atomicNumberAndIsotope){ +return JU.Elements.defaultBondingMars[((atomicNumberAndIsotope & 127) << 1) + JU.Elements.covalentVersion] / 1000; +}, "~N"); +c$.getBondingRadFromTable = Clazz_defineMethod(c$, "getBondingRadFromTable", +function(atomicNumber, charge, table){ +var ionic = (atomicNumber << 4) + (charge + 4); +var iVal = 0; +var iMid = 0; +var iMin = 0; +var iMax = Clazz_doubleToInt(table.length / 2); +while (iMin != iMax) { +iMid = Clazz_doubleToInt((iMin + iMax) / 2); +iVal = table[iMid << 1]; +if (iVal > ionic) iMax = iMid; + else if (iVal < ionic) iMin = iMid + 1; + else return table[(iMid << 1) + 1] / 1000; +} +if (iVal > ionic) iMid--; +iVal = table[iMid << 1]; +if (atomicNumber != (iVal >> 4)) iMid++; +return table[(iMid << 1) + 1] / 1000; +}, "~N,~N,~A"); +c$.getVanderwaalsMar = Clazz_defineMethod(c$, "getVanderwaalsMar", +function(atomicAndIsotopeNumber, type){ +return JU.Elements.vanderwaalsMars[((atomicAndIsotopeNumber & 127) << 2) + (type.pt % 4)]; +}, "~N,J.c.VDW"); +c$.getHydrophobicity = Clazz_defineMethod(c$, "getHydrophobicity", +function(i){ +return (i < 1 || i >= JU.Elements.hydrophobicities.length ? 0 : JU.Elements.hydrophobicities[i]); +}, "~N"); +c$.getAllredRochowElectroNeg = Clazz_defineMethod(c$, "getAllredRochowElectroNeg", +function(elemno){ +return (elemno > 0 && elemno < JU.Elements.electroNegativities.length ? JU.Elements.electroNegativities[elemno] : 0); +}, "~N"); +c$.isElement = Clazz_defineMethod(c$, "isElement", +function(atomicAndIsotopeNumber, elemNo){ +return ((atomicAndIsotopeNumber & 127) == elemNo); +}, "~N,~N"); +c$.elementSymbols = Clazz_newArray(-1, ["Xx", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt"]); +c$.atomicMass = Clazz_newFloatArray(-1, [0, 1.008, 4.002, 6.9675, 9.012, 10.8135, 12.0106, 14.006, 15.999, 18.998, 20.1797, 22.989, 24.307, 26.981, 28.084, 30.973, 32.059, 35.4515, 39.948, 39.0983, 40.078, 44.955, 47.867, 50.9415, 51.9961, 54.938, 55.845, 58.933, 58.6934, 63.546, 65.38, 69.723, 72.63, 74.921, 78.971, 79.904, 83.798, 85.4678, 87.62, 88.905, 91.224, 92.906, 95.95, 98.91, 101.07, 102.905, 106.42, 107.8682, 112.414, 114.818, 118.71, 121.76, 127.6, 126.904, 131.293, 132.905, 137.327, 138.905, 140.116, 140.907, 144.242, 144.9, 150.36, 151.964, 157.25, 158.925, 162.5, 164.93, 167.259, 168.934, 173.054, 174.9668, 178.49, 180.947, 183.84, 186.207, 190.23, 192.217, 195.084, 196.966, 200.592, 204.3835, 207.2, 208.98, 210, 210, 222, 223, 226.03, 227.03, 232.0377, 231.035, 238.028, 237.05, 239.1, 243.1, 247.1, 247.1, 252.1, 252.1, 257.1, 256.1, 259.1, 260.1, 261, 262, 263, 262, 265, 268]); +c$.isotopeMass = Clazz_newIntArray(-1, [0, 1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40, 39, 40, 45, 48, 51, 52, 55, 56, 59, 59, 64, 65, 70, 73, 75, 79, 80, 84, 85, 88, 89, 91, 93, 96, 98, 101, 103, 106, 108, 112, 115, 119, 122, 128, 127, 131, 133, 137, 139, 140, 141, 144, 145, 150, 152, 157, 159, 163, 165, 167, 169, 173, 175, 179, 181, 184, 186, 190, 192, 195, 197, 201, 204, 207, 209, 209, 210, 222, 223, 226, 227, 232, 231, 238, 237, 244, 243, 247, 247, 251, 252, 257, 258, 259, 260, 261, 262, 263, 262, 265, 268]); +c$.elementNumberMax = JU.Elements.elementSymbols.length; +c$.htElementMap = null; +c$.elementNames = Clazz_newArray(-1, ["unknown", "hydrogen", "helium", "lithium", "beryllium", "boron", "carbon", "nitrogen", "oxygen", "fluorine", "neon", "sodium", "magnesium", "aluminum", "silicon", "phosphorus", "sulfur", "chlorine", "argon", "potassium", "calcium", "scandium", "titanium", "vanadium", "chromium", "manganese", "iron", "cobalt", "nickel", "copper", "zinc", "gallium", "germanium", "arsenic", "selenium", "bromine", "krypton", "rubidium", "strontium", "yttrium", "zirconium", "niobium", "molybdenum", "technetium", "ruthenium", "rhodium", "palladium", "silver", "cadmium", "indium", "tin", "antimony", "tellurium", "iodine", "xenon", "cesium", "barium", "lanthanum", "cerium", "praseodymium", "neodymium", "promethium", "samarium", "europium", "gadolinium", "terbium", "dysprosium", "holmium", "erbium", "thulium", "ytterbium", "lutetium", "hafnium", "tantalum", "tungsten", "rhenium", "osmium", "iridium", "platinum", "gold", "mercury", "thallium", "lead", "bismuth", "polonium", "astatine", "radon", "francium", "radium", "actinium", "thorium", "protactinium", "uranium", "neptunium", "plutonium", "americium", "curium", "berkelium", "californium", "einsteinium", "fermium", "mendelevium", "nobelium", "lawrencium", "rutherfordium", "dubnium", "seaborgium", "bohrium", "hassium", "meitnerium"]); +c$.altElementNumbers = Clazz_newIntArray(-1, [0, 13, 16, 55, 257, 385, 1414, 1670, 1798, 1927]); +c$.altElementMax = JU.Elements.altElementNumbers.length; +c$.altElementSymbols = Clazz_newArray(-1, ["Xx", "Al", "S", "Cs", "D", "T", "11C", "13C", "14C", "15N"]); +c$.altElementNames = Clazz_newArray(-1, ["dummy", "aluminium", "sulphur", "caesium", "deuterium", "tritium", "", "", "", ""]); +c$.vanderwaalsMars = Clazz_newShortArray(-1, [1000, 1000, 1000, 1000, 1200, 1100, 1100, 1200, 1400, 1400, 2200, 1400, 1820, 1810, 1220, 2200, 1700, 1530, 628, 1900, 2080, 1920, 1548, 1800, 1950, 1700, 1548, 1700, 1850, 1550, 1400, 1600, 1700, 1520, 1348, 1550, 1730, 1470, 1300, 1500, 1540, 1540, 2020, 1540, 2270, 2270, 2200, 2400, 1730, 1730, 1500, 2200, 2050, 1840, 1500, 2100, 2100, 2100, 2200, 2100, 2080, 1800, 1880, 1950, 2000, 1800, 1808, 1800, 1970, 1750, 1748, 1800, 1880, 1880, 2768, 1880, 2750, 2750, 2388, 2800, 1973, 2310, 1948, 2400, 1700, 2300, 1320, 2300, 1700, 2150, 1948, 2150, 1700, 2050, 1060, 2050, 1700, 2050, 1128, 2050, 1700, 2050, 1188, 2050, 1700, 2050, 1948, 2050, 1700, 2000, 1128, 2000, 1630, 2000, 1240, 2000, 1400, 2000, 1148, 2000, 1390, 2100, 1148, 2100, 1870, 1870, 1548, 2100, 1700, 2110, 3996, 2100, 1850, 1850, 828, 2050, 1900, 1900, 900, 1900, 2100, 1830, 1748, 1900, 2020, 2020, 1900, 2020, 1700, 3030, 2648, 2900, 1700, 2490, 2020, 2550, 1700, 2400, 1608, 2400, 1700, 2300, 1420, 2300, 1700, 2150, 1328, 2150, 1700, 2100, 1748, 2100, 1700, 2050, 1800, 2050, 1700, 2050, 1200, 2050, 1700, 2000, 1220, 2000, 1630, 2050, 1440, 2050, 1720, 2100, 1548, 2100, 1580, 2200, 1748, 2200, 1930, 2200, 1448, 2200, 2170, 1930, 1668, 2250, 2200, 2170, 1120, 2200, 2060, 2060, 1260, 2100, 2150, 1980, 1748, 2100, 2160, 2160, 2100, 2160, 1700, 3430, 3008, 3000, 1700, 2680, 2408, 2700, 1700, 2500, 1828, 2500, 1700, 2480, 1860, 2480, 1700, 2470, 1620, 2470, 1700, 2450, 1788, 2450, 1700, 2430, 1760, 2430, 1700, 2420, 1740, 2420, 1700, 2400, 1960, 2400, 1700, 2380, 1688, 2380, 1700, 2370, 1660, 2370, 1700, 2350, 1628, 2350, 1700, 2330, 1608, 2330, 1700, 2320, 1588, 2320, 1700, 2300, 1568, 2300, 1700, 2280, 1540, 2280, 1700, 2270, 1528, 2270, 1700, 2250, 1400, 2250, 1700, 2200, 1220, 2200, 1700, 2100, 1260, 2100, 1700, 2050, 1300, 2050, 1700, 2000, 1580, 2000, 1700, 2000, 1220, 2000, 1720, 2050, 1548, 2050, 1660, 2100, 1448, 2100, 1550, 2050, 1980, 2050, 1960, 1960, 1708, 2200, 2020, 2020, 2160, 2300, 1700, 2070, 1728, 2300, 1700, 1970, 1208, 2000, 1700, 2020, 1120, 2000, 1700, 2200, 2300, 2000, 1700, 3480, 3240, 2000, 1700, 2830, 2568, 2000, 1700, 2000, 2120, 2000, 1700, 2400, 1840, 2400, 1700, 2000, 1600, 2000, 1860, 2300, 1748, 2300, 1700, 2000, 1708, 2000, 1700, 2000, 1668, 2000, 1700, 2000, 1660, 2000, 1700, 2000, 1648, 2000, 1700, 2000, 1640, 2000, 1700, 2000, 1628, 2000, 1700, 2000, 1620, 2000, 1700, 2000, 1608, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1588, 2000, 1700, 2000, 1580, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000]); +c$.covalentVersion = 1; +c$.bondingVersion = 0; +c$.defaultBondingMars = Clazz_newShortArray(-1, [0, 0, 230, 320, 930, 460, 680, 1330, 350, 1020, 830, 850, 680, 750, 680, 710, 680, 630, 640, 640, 1120, 670, 970, 1550, 1100, 1390, 1350, 1260, 1200, 1160, 750, 1110, 1020, 1030, 990, 990, 1570, 960, 1330, 1960, 990, 1710, 1440, 1480, 1470, 1360, 1330, 1340, 1350, 1220, 1350, 1190, 1340, 1160, 1330, 1110, 1500, 1100, 1520, 1120, 1450, 1180, 1220, 1240, 1170, 1210, 1210, 1210, 1220, 1160, 1210, 1140, 1910, 1170, 1470, 2100, 1120, 1850, 1780, 1630, 1560, 1540, 1480, 1470, 1470, 1380, 1350, 1280, 1400, 1250, 1450, 1250, 1500, 1200, 1590, 1280, 1690, 1360, 1630, 1420, 1460, 1400, 1460, 1400, 1470, 1360, 1400, 1330, 1980, 1310, 1670, 2320, 1340, 1960, 1870, 1800, 1830, 1630, 1820, 1760, 1810, 1740, 1800, 1730, 1800, 1720, 1990, 1680, 1790, 1690, 1760, 1680, 1750, 1670, 1740, 1660, 1730, 1650, 1720, 1640, 1940, 1700, 1720, 1620, 1570, 1520, 1430, 1460, 1370, 1370, 1350, 1310, 1370, 1290, 1320, 1220, 1500, 1230, 1500, 1240, 1700, 1330, 1550, 1440, 1540, 1440, 1540, 1510, 1680, 1450, 1700, 1470, 2400, 1420, 2000, 2230, 1900, 2010, 1880, 1860, 1790, 1750, 1610, 1690, 1580, 1700, 1550, 1710, 1530, 1720, 1510, 1660, 1500, 1660, 1500, 1680, 1500, 1680, 1500, 1650, 1500, 1670, 1500, 1730, 1500, 1760, 1500, 1610, 1600, 1570, 1600, 1490, 1600, 1430, 1600, 1410, 1600, 1340, 1600, 1290]); +c$.cationLookupTable = Clazz_newShortArray(-1, [53, 680, 69, 440, 70, 350, 85, 350, 87, 230, 104, 160, 117, 680, 119, 160, 121, 130, 133, 220, 138, 90, 155, 80, 165, 1120, 181, 970, 197, 820, 198, 660, 215, 510, 229, 650, 232, 420, 247, 440, 249, 350, 262, 2190, 264, 370, 266, 300, 281, 340, 283, 270, 293, 1540, 309, 1330, 325, 1180, 326, 990, 343, 732, 357, 960, 358, 940, 359, 760, 360, 680, 374, 880, 375, 740, 376, 630, 377, 590, 389, 810, 390, 890, 391, 630, 394, 520, 406, 800, 407, 660, 408, 600, 411, 460, 422, 740, 423, 640, 438, 720, 439, 630, 454, 690, 469, 960, 470, 720, 485, 880, 486, 740, 501, 810, 503, 620, 518, 730, 520, 530, 535, 580, 537, 460, 549, 660, 552, 500, 554, 420, 569, 470, 571, 390, 597, 1470, 614, 1120, 631, 893, 645, 1090, 648, 790, 661, 1000, 664, 740, 665, 690, 677, 930, 680, 700, 682, 620, 699, 979, 712, 670, 727, 680, 742, 800, 744, 650, 757, 1260, 758, 890, 773, 1140, 774, 970, 791, 810, 806, 930, 808, 710, 823, 760, 825, 620, 837, 820, 840, 700, 842, 560, 857, 620, 859, 500, 885, 1670, 901, 1530, 902, 1340, 917, 1390, 919, 1016, 933, 1270, 935, 1034, 936, 920, 951, 1013, 952, 900, 967, 995, 983, 979, 999, 964, 1014, 1090, 1015, 950, 1031, 938, 1047, 923, 1048, 840, 1063, 908, 1079, 894, 1095, 881, 1111, 870, 1126, 930, 1127, 858, 1143, 850, 1160, 780, 1177, 680, 1192, 700, 1194, 620, 1208, 720, 1211, 560, 1224, 880, 1226, 690, 1240, 680, 1254, 800, 1256, 650, 1269, 1370, 1271, 850, 1285, 1270, 1286, 1100, 1301, 1470, 1303, 950, 1318, 1200, 1320, 840, 1333, 980, 1335, 960, 1337, 740, 1354, 670, 1371, 620, 1397, 1800, 1414, 1430, 1431, 1180, 1448, 1020, 1463, 1130, 1464, 980, 1465, 890, 1480, 970, 1482, 800, 1495, 1100, 1496, 950, 1499, 710, 1511, 1080, 1512, 930, 1527, 1070, 1528, 920]); +c$.anionLookupTable = Clazz_newShortArray(-1, [19, 1540, 96, 2600, 113, 1710, 130, 1360, 131, 680, 147, 1330, 241, 2120, 258, 1840, 275, 1810, 512, 2720, 529, 2220, 546, 1980, 563, 1960, 800, 2940, 803, 3700, 817, 2450, 834, 2110, 835, 2500, 851, 2200]); +c$.bsCations = new JU.BS(); +c$.bsAnions = new JU.BS(); +{ +for (var i = 0; i < JU.Elements.anionLookupTable.length; i += 2) JU.Elements.bsAnions.set(JU.Elements.anionLookupTable[i] >> 4); + +for (var i = 0; i < JU.Elements.cationLookupTable.length; i += 2) JU.Elements.bsCations.set(JU.Elements.cationLookupTable[i] >> 4); + +}c$.hydrophobicities = Clazz_newFloatArray(-1, [0, 0.62, -2.53, -0.78, -0.9, 0.29, -0.85, -0.74, 0.48, -0.4, 1.38, 1.06, -1.5, 0.64, 1.19, 0.12, -0.18, -0.05, 0.81, 0.26, 1.08]); +{ +if ((JU.Elements.elementNames.length != JU.Elements.elementNumberMax) || (JU.Elements.vanderwaalsMars.length >> 2 != JU.Elements.elementNumberMax) || (JU.Elements.defaultBondingMars.length >> 1 != JU.Elements.elementNumberMax)) { +JU.Logger.error("ERROR!!! Element table length mismatch:\n elementSymbols.length=" + JU.Elements.elementSymbols.length + "\n elementNames.length=" + JU.Elements.elementNames.length + "\n vanderwaalsMars.length=" + JU.Elements.vanderwaalsMars.length + "\n covalentMars.length=" + JU.Elements.defaultBondingMars.length); +}}c$.electroNegativities = Clazz_newFloatArray(-1, [0, 2.2, 0, 0.97, 1.47, 2.01, 2.5, 3.07, 3.5, 4.1, 0, 1.01, 1.23, 1.47, 1.74, 2.06, 2.44, 2.83, 0, 0.91, 1.04, 1.2, 1.32, 1.45, 1.56, 1.6, 1.64, 1.7, 1.75, 1.75, 1.66, 1.82, 2.02, 2.2, 2.48, 2.74, 0, 0.89, 0.99, 1.11, 1.22, 1.23, 1.3, 1.36, 1.42, 1.45, 1.35, 1.42, 1.46, 1.49, 1.72, 1.82, 2.01, 2.21]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Escape", ["JU.AU", "$.BS", "$.Lst", "$.M3", "$.M4", "$.P3", "$.P4", "$.PT", "$.SB", "$.V3", "JS.SV"], function(){ +var c$ = Clazz_declareType(JU, "Escape", null); +c$.escapeColor = Clazz_defineMethod(c$, "escapeColor", +function(argb){ +return (argb == 0 ? null : "[x" + JU.Escape.getHexColorFromRGB(argb) + "]"); +}, "~N"); +c$.getHexColorFromRGB = Clazz_defineMethod(c$, "getHexColorFromRGB", +function(argb){ +if (argb == 0) return null; +var r = "00" + Integer.toHexString((argb >> 16) & 0xFF); +r = r.substring(r.length - 2); +var g = "00" + Integer.toHexString((argb >> 8) & 0xFF); +g = g.substring(g.length - 2); +var b = "00" + Integer.toHexString(argb & 0xFF); +b = b.substring(b.length - 2); +return r + g + b; +}, "~N"); +c$.eP = Clazz_defineMethod(c$, "eP", +function(xyz){ +if (xyz == null) return "null"; +return "{" + xyz.x + " " + xyz.y + " " + xyz.z + "}"; +}, "JU.T3"); +c$.matrixToScript = Clazz_defineMethod(c$, "matrixToScript", +function(m){ +return JU.PT.replaceAllCharacters(m.toString(), "\n\r ", "").$replace('\t', ' '); +}, "~O"); +c$.eP4 = Clazz_defineMethod(c$, "eP4", +function(x){ +return "{" + x.x + " " + x.y + " " + x.z + " " + x.w + "}"; +}, "JU.P4"); +c$.drawQuat = Clazz_defineMethod(c$, "drawQuat", +function(q, prefix, id, ptCenter, scale){ +var strV = " VECTOR " + JU.Escape.eP(ptCenter) + " "; +if (scale == 0) scale = 1; +return "draw " + prefix + "x" + id + strV + JU.Escape.eP(q.getVectorScaled(0, scale)) + " color red\n" + "draw " + prefix + "y" + id + strV + JU.Escape.eP(q.getVectorScaled(1, scale)) + " color green\n" + "draw " + prefix + "z" + id + strV + JU.Escape.eP(q.getVectorScaled(2, scale)) + " color blue\n"; +}, "JU.Quat,~S,~S,JU.P3,~N"); +c$.e = Clazz_defineMethod(c$, "e", +function(x){ +if (x == null) return "null"; +if (JU.PT.isNonStringPrimitive(x)) return x.toString(); +if ((typeof(x)=='string')) return JU.PT.esc(x); +if (Clazz_instanceOf(x,"JU.Lst")) return JU.Escape.eV(x); +if (Clazz_instanceOf(x,"java.util.Map")) return JU.Escape.escapeMap(x); +if (Clazz_instanceOf(x,"JU.BS")) return JU.Escape.eBS(x); +if (Clazz_instanceOf(x,"JU.P4")) return JU.Escape.eP4(x); +if (Clazz_instanceOf(x,"JU.T3")) return JU.Escape.eP(x); +if (JU.AU.isAP(x)) return JU.Escape.eAP(x); +if (JU.AU.isAS(x)) return JU.Escape.eAS(x, true); +if (Clazz_instanceOf(x,"JU.M34")) return JU.PT.rep(JU.PT.rep(x.toString(), "[\n ", "["), "] ]", "]]"); +if (JU.AU.isAFF(x)) { +var ff = x; +var sb = new JU.SB().append("["); +var sep = ""; +for (var i = 0; i < ff.length; i++) { +sb.append(sep).append(JU.Escape.eAF(ff[i])); +sep = ","; +} +sb.append("]"); +return sb.toString(); +}if (Clazz_instanceOf(x,"JU.A4")) { +var a = x; +return "{" + a.x + " " + a.y + " " + a.z + " " + (a.angle * 180 / 3.141592653589793) + "}"; +}if (Clazz_instanceOf(x,"JU.Quat")) return x.toString(); +var s = JU.PT.nonArrayString(x); +return (s == null ? JU.PT.toJSON(null, x) : s); +}, "~O"); +c$.eV = Clazz_defineMethod(c$, "eV", +function(list){ +if (list == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < list.size(); i++) { +if (i > 0) s.append(", "); +s.append(JU.Escape.escapeNice(list.get(i).asString())); +} +s.append("]"); +return s.toString(); +}, "JU.Lst"); +c$.escapeMap = Clazz_defineMethod(c$, "escapeMap", +function(ht){ +var sb = new JU.SB(); +sb.append("{ "); +var sep = ""; +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +sb.append(sep).append(JU.PT.esc(key)).appendC(':'); +var val = entry.getValue(); +if (!(Clazz_instanceOf(val,"JS.SV"))) val = JS.SV.getVariable(val); +sb.append((val).escape()); +sep = ","; +} +sb.append(" }"); +return sb.toString(); +}, "java.util.Map"); +c$.escapeFloatA = Clazz_defineMethod(c$, "escapeFloatA", +function(f, asArray){ +if (asArray) return JU.PT.toJSON(null, f); +var sb = new JU.SB(); +for (var i = 0; i < f.length; i++) { +if (i > 0) sb.appendC('\n'); +sb.appendF(f[i]); +} +return sb.toString(); +}, "~A,~B"); +c$.escapeFloatAA = Clazz_defineMethod(c$, "escapeFloatAA", +function(f, addSemi){ +var sb = new JU.SB(); +var eol = (addSemi ? ";\n" : "\n"); +for (var i = 0; i < f.length; i++) if (f[i] != null) { +if (i > 0) sb.append(eol); +for (var j = 0; j < f[i].length; j++) sb.appendF(f[i][j]).appendC('\t'); + +} +return sb.toString(); +}, "~A,~B"); +c$.escapeFloatAAA = Clazz_defineMethod(c$, "escapeFloatAAA", +function(f, addSemi){ +var sb = new JU.SB(); +var eol = (addSemi ? ";\n" : "\n"); +if (f[0] == null || f[0][0] == null) return "0 0 0" + eol; +sb.appendI(f.length).append(" ").appendI(f[0].length).append(" ").appendI(f[0][0].length); +for (var i = 0; i < f.length; i++) if (f[i] != null) { +sb.append(eol); +for (var j = 0; j < f[i].length; j++) if (f[i][j] != null) { +sb.append(eol); +for (var k = 0; k < f[i][j].length; k++) sb.appendF(f[i][j][k]).appendC('\t'); + +} +} +return sb.toString(); +}, "~A,~B"); +c$.eAS = Clazz_defineMethod(c$, "eAS", +function(list, nicely){ +if (list == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < list.length; i++) { +if (i > 0) s.append(", "); +s.append(nicely ? JU.Escape.escapeNice(list[i]) : JU.PT.esc(list[i])); +} +s.append("]"); +return s.toString(); +}, "~A,~B"); +c$.eAI = Clazz_defineMethod(c$, "eAI", +function(ilist){ +if (ilist == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < ilist.length; i++) { +if (i > 0) s.append(", "); +s.appendI(ilist[i]); +} +return s.append("]").toString(); +}, "~A"); +c$.eAD = Clazz_defineMethod(c$, "eAD", +function(dlist){ +if (dlist == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < dlist.length; i++) { +if (i > 0) s.append(", "); +s.appendD(dlist[i]); +} +return s.append("]").toString(); +}, "~A"); +c$.eAF = Clazz_defineMethod(c$, "eAF", +function(flist){ +if (flist == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < flist.length; i++) { +if (i > 0) s.append(", "); +s.appendF(flist[i]); +} +return s.append("]").toString(); +}, "~A"); +c$.eAP = Clazz_defineMethod(c$, "eAP", +function(plist){ +if (plist == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < plist.length; i++) { +if (i > 0) s.append(", "); +s.append(JU.Escape.eP(plist[i])); +} +return s.append("]").toString(); +}, "~A"); +c$.escapeNice = Clazz_defineMethod(c$, "escapeNice", +function(s){ +if (s == null) return "null"; +var f = JU.PT.parseFloatStrict(s); +return (Float.isNaN(f) ? JU.PT.esc(s) : s); +}, "~S"); +c$.uABsM = Clazz_defineMethod(c$, "uABsM", +function(s){ +if (s.charAt(0) == '{') return JU.Escape.uP(s); +if ((JU.Escape.isStringArray(s) || s.startsWith("[{") && s.indexOf("[{") == s.lastIndexOf("[{")) && s.indexOf(',') < 0 && s.indexOf('.') < 0 && s.indexOf('-') < 0) return JU.BS.unescape(s); +if (s.startsWith("[[")) return JU.Escape.unescapeMatrix(s); +return s; +}, "~S"); +c$.isStringArray = Clazz_defineMethod(c$, "isStringArray", +function(s){ +return s.startsWith("({") && s.lastIndexOf("({") == 0 && s.indexOf("})") == s.length - 2; +}, "~S"); +c$.uP = Clazz_defineMethod(c$, "uP", +function(strPoint){ +if (strPoint == null || strPoint.length == 0) return strPoint; +var str = strPoint.$replace('\n', ' ').trim(); +if (str.charAt(0) != '{' || str.charAt(str.length - 1) != '}') return strPoint; +var points = Clazz_newFloatArray (5, 0); +var nPoints = 0; +str = str.substring(1, str.length - 1); +var next = Clazz_newIntArray (1, 0); +for (; nPoints < 5; nPoints++) { +points[nPoints] = JU.PT.parseFloatNext(str, next); +if (Float.isNaN(points[nPoints])) { +if (next[0] >= str.length || str.charAt(next[0]) != ',') break; +next[0]++; +nPoints--; +}} +if (nPoints == 3) return JU.P3.new3(points[0], points[1], points[2]); +if (nPoints == 4) return JU.P4.new4(points[0], points[1], points[2], points[3]); +return strPoint; +}, "~S"); +c$.unescapeMatrix = Clazz_defineMethod(c$, "unescapeMatrix", +function(strMatrix){ +if (strMatrix == null || strMatrix.length == 0) return strMatrix; +var str = strMatrix.$replace('\n', ' ').trim(); +if (str.lastIndexOf("[[") != 0 || str.indexOf("]]") != str.length - 2) return strMatrix; +var points = Clazz_newFloatArray (16, 0); +str = str.substring(2, str.length - 2).$replace('[', ' ').$replace(']', ' ').$replace(',', ' '); +var next = Clazz_newIntArray (1, 0); +var nPoints = 0; +for (; nPoints < 16; nPoints++) { +points[nPoints] = JU.PT.parseFloatNext(str, next); +if (Float.isNaN(points[nPoints])) { +break; +}} +if (!Float.isNaN(JU.PT.parseFloatNext(str, next))) return strMatrix; +if (nPoints == 9) return JU.M3.newA9(points); +if (nPoints == 16) return JU.M4.newA16(points); +return strMatrix; +}, "~S"); +c$.eBS = Clazz_defineMethod(c$, "eBS", +function(bs){ +return JU.BS.escape(bs, '(', ')'); +}, "JU.BS"); +c$.eBond = Clazz_defineMethod(c$, "eBond", +function(bs){ +return JU.BS.escape(bs, '[', ']'); +}, "JU.BS"); +c$.toReadable = Clazz_defineMethod(c$, "toReadable", +function(name, info){ +var sb = new JU.SB(); +var sep = ""; +if (info == null) return "null"; +if (JU.PT.isNonStringPrimitive(info)) return JU.Escape.packageReadable(name, null, info.toString()); +if ((typeof(info)=='string')) return JU.Escape.packageReadable(name, null, JU.PT.esc(info)); +if (Clazz_instanceOf(info,"JS.SV")) return JU.Escape.packageReadable(name, null, (info).escape()); +if (JU.AU.isAS(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "String[" + imax + "]", sb); +}if (JU.AU.isAI(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).appendI((info)[i]); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "int[" + imax + "]", sb); +}if (JU.AU.isAF(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).appendF((info)[i]); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "float[" + imax + "]", sb); +}if (JU.AU.isAD(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).appendD((info)[i]); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "double[" + imax + "]", sb); +}if (JU.AU.isAP(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.eP((info)[i])); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "point3f[" + imax + "]", sb); +}if (JU.AU.isASS(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ",\n"; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "String[" + imax + "][]", sb); +}if (JU.AU.isAII(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "int[" + imax + "][]", sb); +}if (JU.AU.isAFF(info)) { +sb.append("[\n"); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ",\n"; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "float[][]", sb); +}if (JU.AU.isADD(info)) { +sb.append("[\n"); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ",\n"; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "double[][]", sb); +}if (Clazz_instanceOf(info,"JU.Lst")) { +var imax = (info).size(); +for (var i = 0; i < imax; i++) { +sb.append(JU.Escape.toReadable(name + "[" + (i + 1) + "]", (info).get(i))); +} +return JU.Escape.packageReadableSb(name, "List[" + imax + "]", sb); +}if (Clazz_instanceOf(info,"JU.M34") || Clazz_instanceOf(info,"JU.T3") || Clazz_instanceOf(info,"JU.P4") || Clazz_instanceOf(info,"JU.A4")) { +sb.append(JU.Escape.e(info)); +return JU.Escape.packageReadableSb(name, null, sb); +}if (Clazz_instanceOf(info,"java.util.Map")) { +var e = (info).keySet().iterator(); +while (e.hasNext()) { +var key = e.next(); +sb.append(JU.Escape.toReadable((name == null ? "" : name + ".") + key, (info).get(key))); +} +return sb.toString(); +}return JU.Escape.packageReadable(name, null, JU.PT.toJSON(null, info)); +}, "~S,~O"); +c$.packageReadableSb = Clazz_defineMethod(c$, "packageReadableSb", +function(infoName, infoType, sb){ +return JU.Escape.packageReadable(infoName, infoType, sb.toString()); +}, "~S,~S,JU.SB"); +c$.packageReadable = Clazz_defineMethod(c$, "packageReadable", +function(infoName, infoType, info){ +var s = (infoType == null ? "" : infoType + "\t"); +if (infoName == null) return s + info; +return "\n" + infoName + "\t" + (infoType == null ? "" : "*" + infoType + "\t") + info; +}, "~S,~S,~S"); +c$.escapeModelFileNumber = Clazz_defineMethod(c$, "escapeModelFileNumber", +function(iv){ +return "" + (Clazz_doubleToInt(iv / 1000000)) + "." + (iv % 1000000); +}, "~N"); +c$.encapsulateData = Clazz_defineMethod(c$, "encapsulateData", +function(name, data, depth){ +var s; +switch (depth) { +case 1: +s = JU.Escape.escapeFloatA(data, false) + ";\n"; +break; +case 2: +s = JU.Escape.escapeFloatAA(data, true) + ";\n"; +break; +case 3: +s = JU.Escape.escapeFloatAAA(data, true) + ";\n"; +break; +default: +s = data.toString(); +break; +} +return " DATA \"" + name + "\"\n" + s + " END \"" + name + "\";\n"; +}, "~S,~O,~N"); +c$.unescapeUnicode = Clazz_defineMethod(c$, "unescapeUnicode", +function(s){ +var ichMax = s.length; +var sb = JU.SB.newN(ichMax); +var ich = 0; +while (ich < ichMax) { +var ch = s.charAt(ich++); +if (ch == '\\' && ich < ichMax) { +ch = s.charAt(ich++); +switch ((ch).charCodeAt(0)) { +case 117: +if (ich < ichMax) { +var unicode = 0; +for (var k = 4; --k >= 0 && ich < ichMax; ) { +var chT = s.charAt(ich); +var hexit = JU.Escape.getHexitValue(chT); +if (hexit < 0) break; +unicode <<= 4; +unicode += hexit; +++ich; +} +ch = String.fromCharCode(unicode); +}} +}sb.appendC(ch); +} +return sb.toString(); +}, "~S"); +c$.getHexitValue = Clazz_defineMethod(c$, "getHexitValue", +function(ch){ +if (ch.charCodeAt(0) >= 48 && ch.charCodeAt(0) <= 57) return ch.charCodeAt(0) - 48; + else if (ch.charCodeAt(0) >= 97 && ch.charCodeAt(0) <= 102) return 10 + ch.charCodeAt(0) - 97; + else if (ch.charCodeAt(0) >= 65 && ch.charCodeAt(0) <= 70) return 10 + ch.charCodeAt(0) - 65; + else return -1; +}, "~S"); +c$.unescapeStringArray = Clazz_defineMethod(c$, "unescapeStringArray", +function(data){ +if (data == null || !data.startsWith("[") || !data.endsWith("]")) return null; +var v = new JU.Lst(); +var next = Clazz_newIntArray (1, 0); +next[0] = 1; +while (next[0] < data.length) { +var s = JU.PT.getQuotedStringNext(data, next); +if (s == null) return null; +v.addLast(JU.PT.rep(s, "\\\"", "\"")); +while (next[0] < data.length && data.charAt(next[0]) != '"') next[0]++; + +} +return v.toArray( new Array(v.size())); +}, "~S"); +c$.isAV = Clazz_defineMethod(c$, "isAV", +function(x){ +{ +return Clazz_instanceOf(x[0], JS.SV); +}}, "~O"); +c$.escapeHelical = Clazz_defineMethod(c$, "escapeHelical", +function(id, tokType, a, b, pts){ +switch (tokType) { +case 134217751: +return (pts == null ? new JU.P3() : pts[0]); +case 1073741854: +case 1665140738: +return (pts == null ? new JU.V3() : pts[tokType == 1073741854 ? 1 : 2]); +case 134217729: +return Float.$valueOf(pts == null ? NaN : pts[3].x); +case 135176: +return (pts == null ? "" : "draw ID \"" + id + "\" VECTOR " + JU.Escape.eP(pts[0]) + " " + JU.Escape.eP(pts[1]) + " color " + (pts[3].x < 0 ? "{255.0 200.0 0.0}" : "{255.0 0.0 128.0}")); +case 1745489939: +return (pts == null ? "" : "measure " + JU.Escape.eP(a) + JU.Escape.eP(pts[0]) + JU.Escape.eP(pts[4])) + JU.Escape.eP(b); +default: +return (pts == null ? new Array(0) : pts); +} +}, "~S,~N,JU.P3,JU.P3,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["J.api.JmolGraphicsInterface", "JU.Normix"], "JU.GData", ["JU.AU", "$.P3", "$.V3", "JU.C", "$.Font", "$.Shader"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.apiPlatform = null; +this.translucentCoverOnly = false; +this.currentlyRendering = false; +this.antialiasEnabled = false; +this.windowWidth = 0; +this.windowHeight = 0; +this.displayMinX = 0; +this.displayMaxX = 0; +this.displayMinY = 0; +this.displayMaxY = 0; +this.displayMinX2 = 0; +this.displayMaxX2 = 0; +this.displayMinY2 = 0; +this.displayMaxY2 = 0; +this.antialiasThisFrame = false; +this.inGreyscaleMode = false; +this.changeableColixMap = null; +this.backgroundImage = null; +this.newWindowWidth = 0; +this.newWindowHeight = 0; +this.newAntialiasing = false; +this.bgcolor = 0; +this.contrastColix = 0; +this.xLast = 0; +this.yLast = 0; +this.slab = 0; +this.depth = 0; +this.width = 0; +this.height = 0; +this.ambientOcclusion = 0; +this.colixCurrent = 0; +this.argbCurrent = 0; +this.ht3 = 0; +this.isPass2 = false; +this.textY = 0; +this.bufferSize = 0; +this.shader = null; +this.vwr = null; +this.graphicsForMetrics = null; +this.currentFont = null; +this.argbNoisyUp = 0; +this.argbNoisyDn = 0; +this.transformedVectors = null; +Clazz_instantialize(this, arguments);}, JU, "GData", null, J.api.JmolGraphicsInterface); +Clazz_prepareFields (c$, function(){ +this.changeableColixMap = Clazz_newShortArray (16, 0); +this.transformedVectors = new Array(JU.GData.normixCount); +}); +Clazz_makeConstructor(c$, +function(){ +this.shader = new JU.Shader(); +}); +Clazz_defineMethod(c$, "initialize", +function(vwr, apiPlatform){ +this.vwr = vwr; +this.apiPlatform = apiPlatform; +}, "JV.Viewer,J.api.GenericPlatform"); +Clazz_defineMethod(c$, "setDepth", +function(depthValue){ +this.depth = depthValue < 0 ? 0 : depthValue; +}, "~N"); +Clazz_overrideMethod(c$, "setSlab", +function(slabValue){ +this.slab = Math.max(0, slabValue); +}, "~N"); +Clazz_overrideMethod(c$, "setSlabAndZShade", +function(slab, depth, zSlab, zDepth, zPower){ +this.setSlab(slab); +this.setDepth(depth); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAmbientOcclusion", +function(value){ +this.ambientOcclusion = value; +}, "~N"); +Clazz_overrideMethod(c$, "isAntialiased", +function(){ +return this.antialiasThisFrame; +}); +Clazz_defineMethod(c$, "getChangeableColix", +function(id, argb){ +if (id >= this.changeableColixMap.length) this.changeableColixMap = JU.AU.arrayCopyShort(this.changeableColixMap, id + 16); +if (this.changeableColixMap[id] == 0) this.changeableColixMap[id] = JU.C.getColix(argb); +return (id | -32768); +}, "~N,~N"); +Clazz_defineMethod(c$, "changeColixArgb", +function(id, argb){ +if (id < this.changeableColixMap.length && this.changeableColixMap[id] != 0) this.changeableColixMap[id] = JU.C.getColix(argb); +}, "~N,~N"); +Clazz_defineMethod(c$, "getColorArgbOrGray", +function(colix){ +if (colix == 3) return JU.C.getArgb(this.contrastColix); +if (colix < 0) colix = this.changeableColixMap[colix & 2047]; +return (this.inGreyscaleMode ? JU.C.getArgbGreyscale(colix) : JU.C.getArgb(colix)); +}, "~N"); +Clazz_defineMethod(c$, "getShades", +function(colix){ +if (colix < 0) colix = this.changeableColixMap[colix & 2047]; +return (this.inGreyscaleMode ? this.shader.getShadesG(colix) : this.shader.getShades(colix)); +}, "~N"); +Clazz_defineMethod(c$, "setGreyscaleMode", +function(greyscaleMode){ +this.inGreyscaleMode = greyscaleMode; +}, "~B"); +Clazz_defineMethod(c$, "getSpecularPower", +function(){ +return this.shader.specularPower; +}); +Clazz_defineMethod(c$, "setSpecularPower", +function(val){ +if (val < 0) { +this.setSpecularExponent(-val); +return; +}if (this.shader.specularPower == val) return; +this.shader.specularPower = val; +this.shader.intenseFraction = val / 100; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getSpecularPercent", +function(){ +return this.shader.specularPercent; +}); +Clazz_defineMethod(c$, "setSpecularPercent", +function(val){ +if (this.shader.specularPercent == val) return; +this.shader.specularPercent = val; +this.shader.specularFactor = val / 100; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getSpecularExponent", +function(){ +return this.shader.specularExponent; +}); +Clazz_defineMethod(c$, "setSpecularExponent", +function(val){ +if (this.shader.specularExponent == val) return; +this.shader.specularExponent = val; +this.shader.phongExponent = Clazz_doubleToInt(Math.pow(2, val)); +this.shader.usePhongExponent = false; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getPhongExponent", +function(){ +return this.shader.phongExponent; +}); +Clazz_defineMethod(c$, "setPhongExponent", +function(val){ +if (this.shader.phongExponent == val && this.shader.usePhongExponent) return; +this.shader.phongExponent = val; +var x = (Math.log(val) / Math.log(2)); +this.shader.usePhongExponent = (x != Clazz_floatToInt(x)); +if (!this.shader.usePhongExponent) this.shader.specularExponent = Clazz_floatToInt(x); +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getDiffusePercent", +function(){ +return this.shader.diffusePercent; +}); +Clazz_defineMethod(c$, "setDiffusePercent", +function(val){ +if (this.shader.diffusePercent == val) return; +this.shader.diffusePercent = val; +this.shader.diffuseFactor = val / 100; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getAmbientPercent", +function(){ +return this.shader.ambientPercent; +}); +Clazz_defineMethod(c$, "setAmbientPercent", +function(val){ +if (this.shader.ambientPercent == val) return; +this.shader.ambientPercent = val; +this.shader.ambientFraction = val / 100; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getSpecular", +function(){ +return this.shader.specularOn; +}); +Clazz_defineMethod(c$, "setSpecular", +function(val){ +if (this.shader.specularOn == val) return; +this.shader.specularOn = val; +this.shader.flushCaches(); +}, "~B"); +Clazz_defineMethod(c$, "setCel", +function(val){ +this.shader.setCel(val, this.shader.celPower, this.bgcolor); +}, "~B"); +Clazz_defineMethod(c$, "getCel", +function(){ +return this.shader.celOn; +}); +Clazz_defineMethod(c$, "getCelPower", +function(){ +return this.shader.celPower; +}); +Clazz_defineMethod(c$, "setCelPower", +function(celPower){ +this.shader.setCel(this.shader.celOn || this.shader.celPower == 0, celPower, this.bgcolor); +}, "~N"); +Clazz_defineMethod(c$, "getLightSource", +function(){ +return this.shader.lightSource; +}); +Clazz_defineMethod(c$, "isClipped3", +function(x, y, z){ +return (x < 0 || x >= this.width || y < 0 || y >= this.height || z < this.slab || z > this.depth); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isClipped", +function(x, y){ +return (x < 0 || x >= this.width || y < 0 || y >= this.height); +}, "~N,~N"); +Clazz_overrideMethod(c$, "isInDisplayRange", +function(x, y){ +return (x >= this.displayMinX && x < this.displayMaxX && y >= this.displayMinY && y < this.displayMaxY); +}, "~N,~N"); +Clazz_overrideMethod(c$, "isClippedXY", +function(diameter, x, y){ +var r = (diameter + 1) >> 1; +return (x < -r || x >= this.width + r || y < -r || y >= this.height + r); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isClippedZ", +function(z){ +return (z != -2147483648 && (z < this.slab || z > this.depth)); +}, "~N"); +Clazz_defineMethod(c$, "clipCode3", +function(x, y, z){ +var code = 0; +if (x < 0) code |= (x < this.displayMinX2 ? -1 : 8); + else if (x >= this.width) code |= (x > this.displayMaxX2 ? -1 : 4); +if (y < 0) code |= (y < this.displayMinY2 ? -1 : 2); + else if (y >= this.height) code |= (y > this.displayMaxY2 ? -1 : 1); +if (z < this.slab) code |= 32; + else if (z > this.depth) code |= 16; +return code; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "clipCode", +function(z){ +var code = 0; +if (z < this.slab) code |= 32; + else if (z > this.depth) code |= 16; +return code; +}, "~N"); +Clazz_defineMethod(c$, "getFont3D", +function(fontSize){ +return JU.Font.createFont3D(0, 0, fontSize, fontSize, this.apiPlatform, this.graphicsForMetrics); +}, "~N"); +Clazz_defineMethod(c$, "getFont3DFS", +function(fontFace, fontSize){ +return JU.Font.createFont3D(JU.Font.getFontFaceID(fontFace), 0, fontSize, fontSize, this.apiPlatform, this.graphicsForMetrics); +}, "~S,~N"); +Clazz_defineMethod(c$, "getFontFidFS", +function(fontFace, fontSize){ +return this.getFont3DFSS(fontFace, "Bold", fontSize).fid; +}, "~S,~N"); +Clazz_defineMethod(c$, "getFont3DFSS", +function(fontFace, fontStyle, fontSize){ +var iStyle = JU.Font.getFontStyleID(fontStyle); +if (iStyle < 0) iStyle = 0; +return JU.Font.createFont3D(JU.Font.getFontFaceID(fontFace), iStyle, fontSize, fontSize, this.apiPlatform, this.graphicsForMetrics); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "getFont3DScaled", +function(font, scale){ +var newScale = font.fontSizeNominal * scale; +return (newScale == font.fontSize ? font : JU.Font.createFont3D(font.idFontFace, font.idFontStyle, newScale, font.fontSizeNominal, this.apiPlatform, this.graphicsForMetrics)); +}, "JU.Font,~N"); +Clazz_defineMethod(c$, "getFontFidI", +function(fontSize){ +return this.getFont3D(fontSize).fid; +}, "~N"); +Clazz_defineMethod(c$, "getFont3DCurrent", +function(){ +return this.currentFont; +}); +Clazz_defineMethod(c$, "setFont", +function(font3d){ +}, "JU.Font"); +Clazz_defineMethod(c$, "setFontBold", +function(fontFace, fontSize){ +this.setFont(this.getFont3DFSS(fontFace, "Bold", fontSize)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setBackgroundTransparent", +function(TF){ +}, "~B"); +Clazz_defineMethod(c$, "setBackgroundArgb", +function(argb){ +this.bgcolor = argb; +this.setCel(this.shader.celOn); +}, "~N"); +Clazz_defineMethod(c$, "setBackgroundImage", +function(image){ +this.backgroundImage = image; +}, "~O"); +Clazz_defineMethod(c$, "setWindowParameters", +function(width, height, antialias){ +this.setWinParams(width, height, antialias); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setWinParams", +function(width, height, antialias){ +this.newWindowWidth = width; +this.newWindowHeight = height; +this.newAntialiasing = antialias; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setNewWindowParametersForExport", +function(){ +this.windowWidth = this.newWindowWidth; +this.windowHeight = this.newWindowHeight; +this.setWidthHeight(false); +}); +Clazz_defineMethod(c$, "setWidthHeight", +function(isAntialiased){ +this.width = this.windowWidth; +this.height = this.windowHeight; +if (isAntialiased) { +this.width <<= 1; +this.height <<= 1; +}this.xLast = this.width - 1; +this.yLast = this.height - 1; +this.displayMinX = -(this.width >> 1); +this.displayMaxX = this.width - this.displayMinX; +this.displayMinY = -(this.height >> 1); +this.displayMaxY = this.height - this.displayMinY; +this.displayMinX2 = this.displayMinX << 2; +this.displayMaxX2 = this.displayMaxX << 2; +this.displayMinY2 = this.displayMinY << 2; +this.displayMaxY2 = this.displayMaxY << 2; +this.ht3 = this.height * 3; +this.bufferSize = this.width * this.height; +}, "~B"); +Clazz_defineMethod(c$, "beginRendering", +function(stereoRotationMatrix, translucentMode, isImageWrite, renderLow){ +}, "JU.M3,~B,~B,~B"); +Clazz_defineMethod(c$, "endRendering", +function(){ +}); +Clazz_defineMethod(c$, "snapshotAnaglyphChannelBytes", +function(){ +}); +Clazz_defineMethod(c$, "getScreenImage", +function(isImageWrite){ +return null; +}, "~B"); +Clazz_defineMethod(c$, "releaseScreenImage", +function(){ +}); +Clazz_defineMethod(c$, "applyAnaglygh", +function(stereoMode, stereoColors){ +}, "J.c.STER,~A"); +Clazz_defineMethod(c$, "setPass2", +function(antialias){ +return false; +}, "~B"); +Clazz_defineMethod(c$, "destroy", +function(){ +}); +Clazz_defineMethod(c$, "clearFontCache", +function(){ +}); +Clazz_defineMethod(c$, "drawQuadrilateralBits", +function(jmolRenderer, colix, screenA, screenB, screenC, screenD){ +jmolRenderer.drawLineBits(colix, colix, screenA, screenB); +jmolRenderer.drawLineBits(colix, colix, screenB, screenC); +jmolRenderer.drawLineBits(colix, colix, screenC, screenD); +jmolRenderer.drawLineBits(colix, colix, screenD, screenA); +}, "J.api.JmolRendererInterface,~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "drawTriangleBits", +function(renderer, screenA, colixA, screenB, colixB, screenC, colixC, check){ +if ((check & 1) == 1) renderer.drawLineBits(colixA, colixB, screenA, screenB); +if ((check & 2) == 2) renderer.drawLineBits(colixB, colixC, screenB, screenC); +if ((check & 4) == 4) renderer.drawLineBits(colixC, colixA, screenC, screenA); +}, "J.api.JmolRendererInterface,JU.P3,~N,JU.P3,~N,JU.P3,~N,~N"); +Clazz_defineMethod(c$, "plotImage", +function(x, y, z, image, jmolRenderer, bgcolix, width, height){ +}, "~N,~N,~N,~O,J.api.JmolRendererInterface,~N,~N,~N"); +Clazz_defineMethod(c$, "plotText", +function(x, y, z, colorArgbOrGray, bgColor, text, font3d, jmolRenderer){ +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.api.JmolRendererInterface"); +Clazz_defineMethod(c$, "renderBackground", +function(jmolRenderer){ +}, "J.api.JmolRendererInterface"); +Clazz_defineMethod(c$, "setColor", +function(argb){ +this.argbCurrent = this.argbNoisyUp = this.argbNoisyDn = argb; +}, "~N"); +Clazz_defineMethod(c$, "setC", +function(colix){ +return true; +}, "~N"); +Clazz_defineMethod(c$, "isDirectedTowardsCamera", +function(normix){ +return (normix < 0) || (this.transformedVectors[normix].z > 0); +}, "~N"); +c$.roundInt = Clazz_defineMethod(c$, "roundInt", +function(a){ +{ +return a; +}}, "~N"); +Clazz_defineMethod(c$, "clear", +function(){ +}); +Clazz_overrideMethod(c$, "renderAllStrings", +function(jmolRenderer){ +}, "~O"); +Clazz_defineMethod(c$, "addRenderer", +function(tok){ +}, "~N"); +c$.getHermiteList = Clazz_defineMethod(c$, "getHermiteList", +function(tension, p0, p1, p2, p3, p4, list, index0, n, isPt){ +var nPoints = n + 1; +var fnPoints = n - 1; +var x1 = p1.x; +var y1 = p1.y; +var z1 = p1.z; +var x2 = p2.x; +var y2 = p2.y; +var z2 = p2.z; +var xT1 = ((x2 - p0.x) * tension) / 8; +var yT1 = ((y2 - p0.y) * tension) / 8; +var zT1 = ((z2 - p0.z) * tension) / 8; +var xT2 = ((p3.x - x1) * tension) / 8; +var yT2 = ((p3.y - y1) * tension) / 8; +var zT2 = ((p3.z - z1) * tension) / 8; +var xT3 = ((p4.x - x2) * tension) / 8; +var yT3 = ((p4.y - y2) * tension) / 8; +var zT3 = ((p4.z - z2) * tension) / 8; +list[index0] = p1; +for (var i = 0; i < nPoints; i++) { +var s = i / fnPoints; +if (i == nPoints - 1) { +x1 = x2; +y1 = y2; +z1 = z2; +x2 = p3.x; +y2 = p3.y; +z2 = p3.z; +xT1 = xT2; +yT1 = yT2; +zT1 = zT2; +xT2 = xT3; +yT2 = yT3; +zT2 = zT3; +s -= 1; +}var s2 = s * s; +var s3 = s2 * s; +var h1 = 2 * s3 - 3 * s2 + 1; +var h2 = -2 * s3 + 3 * s2; +var h3 = s3 - 2 * s2 + s; +var h4 = s3 - s2; +var x = (h1 * x1 + h2 * x2 + h3 * xT1 + h4 * xT2); +var y = (h1 * y1 + h2 * y2 + h3 * yT1 + h4 * yT2); +var z = (h1 * z1 + h2 * z2 + h3 * zT1 + h4 * zT2); +list[index0 + i] = (isPt ? JU.P3.new3(x, y, z) : JU.V3.new3(x, y, z)); +} +}, "~N,JU.T3,JU.T3,JU.T3,JU.T3,JU.T3,~A,~N,~N,~B"); +Clazz_defineMethod(c$, "setTextPosition", +function(y){ +this.textY = y; +}, "~N"); +Clazz_defineMethod(c$, "getTextPosition", +function(){ +return this.textY; +}); +Clazz_defineMethod(c$, "getTransformedVertexVectors", +function(){ +return this.transformedVectors; +}); +Clazz_overrideMethod(c$, "drawLinePixels", +function(sA, sB, z, zslab){ +return; +}, "JU.P3i,JU.P3i,~N,~N"); +c$.normixCount = JU.Normix.getNormixCount(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.JSInterface", "J.api.JmolAppletInterface", "$.JmolStatusListener"], "JU.GenericApplet", ["java.net.URL", "java.util.Hashtable", "JU.Lst", "$.PT", "$.SB", "J.awtjs2d.Platform", "J.c.CBK", "J.i18n.GT", "JU.Logger", "$.Parser", "JV.JC", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.codeBase = null; +this.documentBase = null; +this.isSigned = false; +this.language = null; +this.doTranslate = true; +this.haveDocumentAccess = false; +this.isStereoSlave = false; +this.mayScript = false; +this.htmlName = null; +this.fullName = null; +this.statusForm = null; +this.statusText = null; +this.statusTextarea = null; +this.gRight = null; +this.viewer = null; +this.b$ = null; +this.vwrOptions = null; +this.haveNotifiedError = false; +this.appletObject = null; +this.loading = false; +this.syncId = null; +this.outputBuffer = null; +this.htParams = null; +Clazz_instantialize(this, arguments);}, JU, "GenericApplet", null, [javajs.api.JSInterface, J.api.JmolAppletInterface, J.api.JmolStatusListener]); +Clazz_defineMethod(c$, "setStereoGraphics", +function(isStereo){ +{ +if (isStereo) +return vwr.apiPlatform.context; +}return null; +}, "~B"); +Clazz_overrideMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.viewer.processMouseEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +this.viewer.processKeyEvent(event); +}, "~O"); +Clazz_overrideMethod(c$, "setDisplay", +function(canvas){ +this.viewer.setDisplay(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +return this.viewer.setStatusDragDropped(mode, x, y, fileName, retType); +}, "~N,~N,~N,~S,~A"); +Clazz_overrideMethod(c$, "startHoverWatcher", +function(enable){ +this.viewer.startHoverWatcher(enable); +}, "~B"); +Clazz_overrideMethod(c$, "update", +function(){ +this.viewer.updateJS(); +}); +Clazz_overrideMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +this.viewer.openFileAsyncSpecial(fileName, flags); +}, "~S,~N"); +Clazz_overrideMethod(c$, "openFileAsyncSpecialType", +function(fileName, flags, type){ +this.viewer.openFileAsyncSpecialType(fileName, flags, type); +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +this.viewer.processTwoPointGesture(touches); +}, "~A"); +Clazz_overrideMethod(c$, "setScreenDimension", +function(width, height){ +this.viewer.setScreenDimension(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "resizeDisplay", +function(width, height){ +var jmol = J.awtjs2d.Platform.Jmol(); +jmol.resizeApplet(this.viewer.html5Applet, Clazz_newIntArray(-1, [width, height])); +}, "~N,~N"); +Clazz_defineMethod(c$, "init", +function(applet){ +this.b$ = new java.util.Hashtable(); +if (JU.GenericApplet.htRegistry == null) JU.GenericApplet.htRegistry = new java.util.Hashtable(); +this.appletObject = applet; +this.htmlName = JU.PT.split("" + this.getJmolParameter("name"), "_object")[0]; +this.syncId = this.getJmolParameter("syncId"); +this.fullName = this.htmlName + "__" + this.syncId + "__"; +System.out.println("Jmol JavaScript applet " + this.fullName + " initializing"); +var iLevel = ((this.getValue("logLevel", (this.getBooleanValue("debug", false) ? "5" : "4"))).charAt(0)).charCodeAt(0) - 48; +if (iLevel != 4) System.out.println("setting logLevel=" + iLevel + " -- To change, use script \"set logLevel [0-5]\""); +JU.Logger.setLogLevel(iLevel); +J.i18n.GT.ignoreApplicationBundle(); +this.initOptions(); +JU.GenericApplet.checkIn(this.fullName, this.appletObject); +this.initApplication(); +}, "~O"); +Clazz_defineMethod(c$, "initApplication", +function(){ +this.vwrOptions.put("applet", Boolean.TRUE); +if (this.getJmolParameter("statusListener") == null) this.vwrOptions.put("statusListener", this); +this.language = this.getJmolParameter("language"); +if (this.language != null) this.vwrOptions.put("language", this.language); +this.viewer = new JV.Viewer(this.vwrOptions); +this.viewer.pushHoldRepaint(); +var emulate = this.getValueLowerCase("emulate", "jmol"); +this.setStringProperty("defaults", emulate.equals("chime") ? "RasMol" : "Jmol"); +this.setStringProperty("backgroundColor", this.getValue("bgcolor", this.getValue("boxbgcolor", "black"))); +this.viewer.setBooleanProperty("frank", true); +this.loading = true; +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) { +var name = item.name(); +var o = this.getValue(name + "Callback", null); +if (o != null) { +if ((typeof(o)=='string')) { +this.setStringProperty(name + "Callback", o); +} else { +var def = null; +{ +def = "Info." + o.name; +}this.setStringProperty(name + "Callback", def); +this.setCallback(name, o); +}}} +this.loading = false; +if (this.language != null) System.out.print("requested language=" + this.language + "; "); +this.doTranslate = (!"none".equals(this.language) && this.getBooleanValue("doTranslate", true)); +this.language = J.i18n.GT.getLanguage(); +System.out.println("language=" + this.language); +if (this.b$.get(J.c.CBK.SCRIPT) == null && this.b$.get(J.c.CBK.ERROR) == null) if (this.b$.get(J.c.CBK.MESSAGE) != null || this.statusForm != null || this.statusText != null) { +if (this.doTranslate && (this.getValue("doTranslate", null) == null)) { +this.doTranslate = false; +JU.Logger.warn("Note -- Presence of message callback disables disable translation; to enable message translation use jmolSetTranslation(true) prior to jmolApplet()"); +}if (this.doTranslate) JU.Logger.warn("Note -- Automatic language translation may affect parsing of message callbacks messages; use scriptCallback or errorCallback to process errors"); +}if (!this.doTranslate) { +J.i18n.GT.setDoTranslate(false); +JU.Logger.warn("Note -- language translation disabled"); +}if (!this.getBooleanValue("popupMenu", true)) this.viewer.getProperty("DATA_API", "disablePopupMenu", null); +var menuFile = this.getJmolParameter("menuFile"); +if (menuFile != null) this.viewer.setMenu(menuFile, true); +var script = this.getValue("script", ""); +var loadParam = this.getValue("loadInline", null); +if (loadParam == null) { +if ((loadParam = this.getValue("load", null)) != null) script = "load \"" + loadParam + "\";" + script; +loadParam = null; +}this.viewer.popHoldRepaint("applet init"); +if (loadParam != null && this.viewer.loadInline(loadParam) != null) script = ""; +if (script.length > 0) this.scriptProcessor(script, null, 1); +this.viewer.notifyStatusReady(true); +}); +Clazz_overrideMethod(c$, "destroy", +function(){ +this.gRight = null; +this.viewer.notifyStatusReady(false); +this.viewer = null; +JU.GenericApplet.checkOut(this.fullName); +}); +Clazz_defineMethod(c$, "getBooleanValue", +function(propertyName, defaultValue){ +var value = this.getValue(propertyName, defaultValue ? "true" : ""); +return (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("on") || value.equalsIgnoreCase("yes")); +}, "~S,~B"); +Clazz_defineMethod(c$, "getValue", +function(propertyName, defaultValue){ +var s = this.getJmolParameter(propertyName); +System.out.println("Jmol getValue " + propertyName + " " + s); +return (s == null ? defaultValue : s); +}, "~S,~S"); +Clazz_defineMethod(c$, "getValueLowerCase", +function(paramName, defaultValue){ +var value = this.getValue(paramName, defaultValue); +if (value != null) { +value = value.trim().toLowerCase(); +if (value.length == 0) value = null; +}return value; +}, "~S,~S"); +Clazz_defineMethod(c$, "setStringProperty", +function(name, value){ +if (value == null) return; +JU.Logger.info(name + " = \"" + value + "\""); +this.viewer.setStringProperty(name, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "scriptProcessor", +function(script, statusParams, processType){ +if (script == null || script.length == 0) return ""; +switch (processType) { +case 0: +var err = this.viewer.scriptCheck(script); +return ((typeof(err)=='string') ? err : ""); +case 1: +if (statusParams != null) return this.viewer.scriptWaitStatus(script, statusParams).toString(); +return this.viewer.scriptWait(script); +case 2: +default: +return this.viewer.script(script); +} +}, "~S,~S,~N"); +Clazz_overrideMethod(c$, "register", +function(id, jsi){ +JU.GenericApplet.checkIn(id, jsi); +}, "~S,J.api.JmolSyncInterface"); +Clazz_overrideMethod(c$, "getJSpecViewProperty", +function(key){ +return null; +}, "~S"); +Clazz_defineMethod(c$, "syncScript", +function(script){ +this.viewer.syncScript(script, "~", 0); +}, "~S"); +Clazz_overrideMethod(c$, "handleEvent", +function(e){ +if (this.viewer == null) return false; +return this.viewer.processMouseEvent(e.id, e.x, e.y, e.modifiers, e.when); +}, "java.awt.Event"); +Clazz_overrideMethod(c$, "getAppletInfo", +function(){ +return J.i18n.GT.o(J.i18n.GT.$("Jmol Applet version {0} {1}.\n\nAn OpenScience project.\n\nSee http://www.jmol.org for more information"), Clazz_newArray(-1, [JV.JC.version, JV.JC.date])) + "\nhtmlName = " + JU.PT.esc(this.htmlName) + "\nsyncId = " + JU.PT.esc(this.syncId) + "\ndocumentBase = " + JU.PT.esc(this.documentBase) + "\ncodeBase = " + JU.PT.esc(this.codeBase); +}); +Clazz_overrideMethod(c$, "script", +function(script){ +this.scriptNoWait(script); +}, "~S"); +Clazz_overrideMethod(c$, "scriptCheck", +function(script){ +if (script == null || script.length == 0) return ""; +return this.scriptProcessor(script, null, 0); +}, "~S"); +Clazz_overrideMethod(c$, "scriptNoWait", +function(script){ +if (script == null || script.length == 0) return ""; +return this.scriptProcessor(script, null, 2); +}, "~S"); +Clazz_defineMethod(c$, "scriptWait", +function(script){ +return this.scriptWait(script, null); +}, "~S"); +Clazz_defineMethod(c$, "scriptWait", +function(script, statusParams){ +if (script == null || script.length == 0) return ""; +this.outputBuffer = null; +return this.scriptProcessor(script, statusParams, 1); +}, "~S,~S"); +Clazz_overrideMethod(c$, "scriptWaitOutput", +function(script){ +if (script == null || script.length == 0) return ""; +this.outputBuffer = new JU.SB(); +this.viewer.scriptWaitStatus(script, ""); +var str = (this.outputBuffer == null ? "" : this.outputBuffer.toString()); +this.outputBuffer = null; +return str; +}, "~S"); +Clazz_overrideMethod(c$, "getModelIndexFromId", +function(id){ +return this.viewer.getModelIndexFromId(id); +}, "~S"); +Clazz_defineMethod(c$, "getProperty", +function(infoType){ +return this.viewer.getProperty(null, infoType, ""); +}, "~S"); +Clazz_defineMethod(c$, "getProperty", +function(infoType, paramInfo){ +{ +paramInfo || (paramInfo = ""); +}return this.viewer.getProperty(null, infoType, paramInfo); +}, "~S,~S"); +Clazz_defineMethod(c$, "getPropertyAsString", +function(infoType){ +return this.viewer.getProperty("readable", infoType, "").toString(); +}, "~S"); +Clazz_defineMethod(c$, "getPropertyAsString", +function(infoType, paramInfo){ +{ +paramInfo || (paramInfo = ""); +}return this.viewer.getProperty("readable", infoType, paramInfo).toString(); +}, "~S,~S"); +Clazz_defineMethod(c$, "getPropertyAsJSON", +function(infoType){ +return this.viewer.getProperty("JSON", infoType, "").toString(); +}, "~S"); +Clazz_defineMethod(c$, "getPropertyAsJSON", +function(infoType, paramInfo){ +{ +paramInfo || (paramInfo = ""); +}return this.viewer.getProperty("JSON", infoType, paramInfo).toString(); +}, "~S,~S"); +Clazz_overrideMethod(c$, "loadInlineString", +function(strModel, script, isAppend){ +var errMsg = this.viewer.loadInlineAppend(strModel, isAppend); +if (errMsg == null) this.script(script); +return errMsg; +}, "~S,~S,~B"); +Clazz_overrideMethod(c$, "loadInlineArray", +function(strModels, script, isAppend){ +if (strModels == null || strModels.length == 0) return null; +var errMsg = this.viewer.loadInline(strModels, isAppend); +if (errMsg == null) this.script(script); +return errMsg; +}, "~A,~S,~B"); +Clazz_overrideMethod(c$, "loadDOMNode", +function(DOMNode){ +return this.viewer.openDOM(DOMNode); +}, "~O"); +Clazz_defineMethod(c$, "loadInline", +function(strModel){ +return this.loadInlineString(strModel, "", false); +}, "~S"); +Clazz_defineMethod(c$, "loadInline", +function(strModel, script){ +return this.loadInlineString(strModel, script, false); +}, "~S,~S"); +Clazz_defineMethod(c$, "loadInline", +function(strModels){ +return this.loadInlineArray(strModels, "", false); +}, "~A"); +Clazz_defineMethod(c$, "loadInline", +function(strModels, script){ +return this.loadInlineArray(strModels, script, false); +}, "~A,~S"); +Clazz_defineMethod(c$, "output", +function(s){ +if (this.outputBuffer != null && s != null) this.outputBuffer.append(s).appendC('\n'); +}, "~S"); +Clazz_overrideMethod(c$, "setCallback", +function(name, callbackObject){ +this.viewer.sm.setCallbackFunction(name, callbackObject); +}, "~S,~O"); +Clazz_overrideMethod(c$, "setCallbackFunction", +function(callbackName, callbackObject){ +if (callbackName.equalsIgnoreCase("language")) { +this.consoleMessage(""); +this.consoleMessage(null); +return; +}var callback = J.c.CBK.getCallback(callbackName); +if (callback != null && (this.loading || callback !== J.c.CBK.EVAL)) { +if (callbackObject == null) this.b$.remove(callback); + else this.b$.put(callback, callbackObject); +return; +}this.consoleMessage("Available callbacks include: " + J.c.CBK.getNameList().$replace(';', ' ').trim()); +}, "~S,~S"); +Clazz_defineMethod(c$, "consoleMessage", +function(message){ +this.notifyCallback(J.c.CBK.ECHO, Clazz_newArray(-1, ["", message])); +}, "~S"); +Clazz_overrideMethod(c$, "notifyEnabled", +function(type){ +switch (type) { +case J.c.CBK.SYNC: +if (!JU.GenericApplet.isJS) return false; +case J.c.CBK.ANIMFRAME: +case J.c.CBK.DRAGDROP: +case J.c.CBK.ECHO: +case J.c.CBK.ERROR: +case J.c.CBK.EVAL: +case J.c.CBK.IMAGE: +case J.c.CBK.LOADSTRUCT: +case J.c.CBK.MEASURE: +case J.c.CBK.MESSAGE: +case J.c.CBK.PICK: +case J.c.CBK.SCRIPT: +return true; +case J.c.CBK.AUDIO: +case J.c.CBK.APPLETREADY: +case J.c.CBK.ATOMMOVED: +case J.c.CBK.CLICK: +case J.c.CBK.HOVER: +case J.c.CBK.MINIMIZATION: +case J.c.CBK.MODELKIT: +case J.c.CBK.RESIZE: +case J.c.CBK.SELECT: +case J.c.CBK.SERVICE: +case J.c.CBK.STRUCTUREMODIFIED: +break; +} +return (this.b$.get(type) != null); +}, "J.c.CBK"); +Clazz_defineMethod(c$, "notifyCallback", +function(type, data){ +var callback = (type == null ? null : this.b$.get(type)); +var doCallback = (type == null || callback != null && (data == null || data[0] == null)); +var toConsole = false; +if (data != null) data[0] = this.htmlName; +var strInfo = (data == null || data[1] == null ? null : data[1].toString()); +if (type != null) switch (type) { +case J.c.CBK.APPLETREADY: +data[3] = this.appletObject; +break; +case J.c.CBK.AUDIO: +case J.c.CBK.ERROR: +case J.c.CBK.EVAL: +case J.c.CBK.HOVER: +case J.c.CBK.IMAGE: +case J.c.CBK.MINIMIZATION: +case J.c.CBK.SERVICE: +case J.c.CBK.RESIZE: +case J.c.CBK.DRAGDROP: +case J.c.CBK.ATOMMOVED: +case J.c.CBK.SELECT: +case J.c.CBK.MODELKIT: +case J.c.CBK.STRUCTUREMODIFIED: +break; +case J.c.CBK.CLICK: +if ("alert".equals(callback)) strInfo = "x=" + data[1] + " y=" + data[2] + " action=" + data[3] + " clickCount=" + data[4]; +break; +case J.c.CBK.ANIMFRAME: +var iData = data[1]; +var frameNo = iData[0]; +var fileNo = iData[1]; +var modelNo = iData[2]; +var firstNo = iData[3]; +var lastNo = iData[4]; +var isAnimationRunning = (frameNo <= -2); +var animationDirection = (firstNo < 0 ? -1 : 1); +var currentDirection = (lastNo < 0 ? -1 : 1); +if (doCallback) { +data = Clazz_newArray(-1, [this.htmlName, Integer.$valueOf(Math.max(frameNo, -2 - frameNo)), Integer.$valueOf(fileNo), Integer.$valueOf(modelNo), Integer.$valueOf(Math.abs(firstNo)), Integer.$valueOf(Math.abs(lastNo)), Integer.$valueOf(isAnimationRunning ? 1 : 0), Integer.$valueOf(animationDirection), Integer.$valueOf(currentDirection), data[2], data[3]]); +}break; +case J.c.CBK.ECHO: +var isPrivate = (data.length == 2); +var isScriptQueued = (isPrivate || (data[2]).intValue() == 1); +if (!doCallback) { +if (isScriptQueued) toConsole = true; +doCallback = (!isPrivate && (callback = this.b$.get((type = J.c.CBK.MESSAGE))) != null); +}if (!toConsole) this.output(strInfo); +break; +case J.c.CBK.LOADSTRUCT: +var errorMsg = data[4]; +if (errorMsg != null) { +errorMsg = (errorMsg.indexOf("NOTE:") >= 0 ? "" : J.i18n.GT.$("File Error:")) + errorMsg; +this.doShowStatus(errorMsg); +this.notifyCallback(J.c.CBK.MESSAGE, Clazz_newArray(-1, ["", errorMsg])); +return; +}break; +case J.c.CBK.MEASURE: +if (!doCallback) doCallback = ((callback = this.b$.get((type = J.c.CBK.MESSAGE))) != null); +var status = data[3]; +if (status.indexOf("Picked") >= 0 || status.indexOf("Sequence") >= 0) { +this.doShowStatus(strInfo); +toConsole = true; +} else if (status.indexOf("Completed") >= 0) { +strInfo = status + ": " + strInfo; +toConsole = true; +}break; +case J.c.CBK.MESSAGE: +toConsole = !doCallback; +doCallback = new Boolean (doCallback & (strInfo != null)).valueOf(); +if (!toConsole) this.output(strInfo); +break; +case J.c.CBK.PICK: +this.doShowStatus(strInfo); +toConsole = true; +break; +case J.c.CBK.SCRIPT: +var msWalltime = (data[3]).intValue(); +if (msWalltime > 0) { +} else if (!doCallback) { +doCallback = ((callback = this.b$.get((type = J.c.CBK.MESSAGE))) != null); +}this.output(strInfo); +this.doShowStatus(strInfo); +break; +case J.c.CBK.SYNC: +this.sendScript(strInfo, data[2], true, doCallback); +return; +} +if (toConsole) { +var appConsole = this.viewer.getProperty("DATA_API", "getAppConsole", null); +if (appConsole != null) { +appConsole.notifyCallback(type, data); +this.output(strInfo); +}}if (!doCallback || !this.mayScript) return; +try { +this.doSendCallback(type, callback, data, strInfo); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (!this.haveNotifiedError) if (JU.Logger.debugging) { +JU.Logger.debug(type.name() + "Callback call error to " + callback + ": " + e); +}this.haveNotifiedError = true; +} else { +throw e; +} +} +}, "J.c.CBK,~A"); +Clazz_defineMethod(c$, "sendScript", +function(script, appletName, isSync, doCallback){ +if (!JU.GenericApplet.isJS) return ""; +if (doCallback) { +script = this.notifySync(script, appletName); +if (script == null || script.length == 0 || script.equals("0")) return ""; +}var apps = new JU.Lst(); +JU.GenericApplet.findApplets(appletName, this.syncId, this.fullName, apps); +var nApplets = apps.size(); +if (nApplets == 0) { +if (!doCallback && !appletName.equals("*")) JU.Logger.error(this.fullName + " couldn't find applet " + appletName); +return ""; +}var sb = (isSync ? null : new JU.SB()); +var getGraphics = (isSync && script.equals("GET_GRAPHICS")); +var setNoGraphics = (isSync && script.equals("SET_GRAPHICS_OFF")); +if (getGraphics) this.viewer.setStereo(false, (this.gRight = null)); +for (var i = 0; i < nApplets; i++) { +var theApplet = apps.get(i); +var app = JU.GenericApplet.htRegistry.get(theApplet); +var isScriptable = true; +if (JU.Logger.debugging) JU.Logger.debug(this.fullName + " sending to " + theApplet + ": " + script); +try { +if (isScriptable && (getGraphics || setNoGraphics)) { +this.viewer.setStereo(this.isStereoSlave = getGraphics, this.gRight = (app).setStereoGraphics(getGraphics)); +return ""; +}if (isSync) app.syncScript(script); + else if (isScriptable) sb.append((app).scriptWait(script, "output")).append("\n"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +var msg = this.htmlName + " couldn't send to " + theApplet + ": " + script + ": " + e; +JU.Logger.error(msg); +if (!isSync) sb.append(msg); +} else { +throw e; +} +} +} +return (isSync ? "" : sb.toString()); +}, "~S,~S,~B,~B"); +Clazz_defineMethod(c$, "notifySync", +function(info, appletName){ +var syncCallback = this.b$.get(J.c.CBK.SYNC); +if (!this.mayScript || syncCallback == null) return info; +try { +return this.doSendCallback(J.c.CBK.SYNC, syncCallback, Clazz_newArray(-1, [this.fullName, info, appletName]), null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (!this.haveNotifiedError) if (JU.Logger.debugging) { +JU.Logger.debug("syncCallback call error to " + syncCallback + ": " + e); +}this.haveNotifiedError = true; +} else { +throw e; +} +} +return info; +}, "~S,~S"); +Clazz_overrideMethod(c$, "eval", +function(strEval){ +var pt = strEval.indexOf("\1"); +if (pt >= 0) return this.sendScript(strEval.substring(pt + 1), strEval.substring(0, pt), false, false); +if (!this.haveDocumentAccess) return "NO EVAL ALLOWED"; +if (this.b$.get(J.c.CBK.EVAL) != null) { +this.notifyCallback(J.c.CBK.EVAL, Clazz_newArray(-1, [null, strEval])); +return ""; +}return this.doEval(strEval); +}, "~S"); +Clazz_overrideMethod(c$, "createImage", +function(fileName, type, text_or_bytes, quality){ +return null; +}, "~S,~S,~O,~N"); +Clazz_overrideMethod(c$, "getRegistryInfo", +function(){ +JU.GenericApplet.checkIn(null, null); +return JU.GenericApplet.htRegistry; +}); +Clazz_overrideMethod(c$, "showUrl", +function(urlString){ +if (JU.Logger.debugging) JU.Logger.debug("showUrl(" + urlString + ")"); +if (urlString != null && urlString.length > 0) try { +this.doShowDocument( new java.net.URL(Clazz_castNullAs("java.net.URL"), urlString, null)); +} catch (mue) { +if (Clazz_exceptionOf(mue,"java.net.MalformedURLException")){ +this.consoleMessage("Malformed URL:" + urlString); +} else { +throw mue; +} +} +}, "~S"); +Clazz_overrideMethod(c$, "resizeInnerPanel", +function(data){ +var dims = Clazz_newFloatArray (2, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, dims); +this.resizeDisplay(Clazz_floatToInt(dims[0]), Clazz_floatToInt(dims[1])); +return Clazz_newIntArray(-1, [Clazz_floatToInt(dims[0]), Clazz_floatToInt(dims[1])]); +}, "~S"); +c$.checkIn = Clazz_defineMethod(c$, "checkIn", +function(name, applet){ +if (name != null) { +JU.Logger.info("AppletRegistry.checkIn(" + name + ")"); +JU.GenericApplet.htRegistry.put(name, applet); +}if (JU.Logger.debugging) { +for (var entry, $entry = JU.GenericApplet.htRegistry.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var theApplet = entry.getKey(); +JU.Logger.debug(theApplet + " " + entry.getValue()); +} +}}, "~S,~O"); +c$.checkOut = Clazz_defineMethod(c$, "checkOut", +function(name){ +JU.GenericApplet.htRegistry.remove(name); +}, "~S"); +c$.findApplets = Clazz_defineMethod(c$, "findApplets", +function(appletName, mySyncId, excludeName, apps){ +if (appletName != null && appletName.indexOf(",") >= 0) { +var names = JU.PT.split(appletName, ","); +for (var i = 0; i < names.length; i++) JU.GenericApplet.findApplets(names[i], mySyncId, excludeName, apps); + +return; +}var ext = "__" + mySyncId + "__"; +if (appletName == null || appletName.equals("*") || appletName.equals(">")) { +for (var appletName2, $appletName2 = JU.GenericApplet.htRegistry.keySet().iterator (); $appletName2.hasNext()&& ((appletName2 = $appletName2.next ()) || true);) { +if (!appletName2.equals(excludeName) && appletName2.indexOf(ext) > 0) { +apps.addLast(appletName2); +}} +return; +}if (excludeName.indexOf("_object") >= 0 && appletName.indexOf("_object") < 0) appletName += "_object"; +if (appletName.indexOf("__") < 0) appletName += ext; +if (!JU.GenericApplet.htRegistry.containsKey(appletName)) appletName = "jmolApplet" + appletName; +if (!appletName.equals(excludeName) && JU.GenericApplet.htRegistry.containsKey(appletName)) { +apps.addLast(appletName); +}}, "~S,~S,~S,JU.Lst"); +Clazz_overrideMethod(c$, "notifyAudioEnded", +function(htParams){ +this.viewer.sm.notifyAudioStatus(htParams); +}, "~O"); +Clazz_defineMethod(c$, "setJSOptions", +function(vwrOptions){ +this.htParams = new java.util.Hashtable(); +if (vwrOptions == null) vwrOptions = new java.util.Hashtable(); +this.vwrOptions = vwrOptions; +for (var entry, $entry = vwrOptions.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.htParams.put(entry.getKey().toLowerCase(), entry.getValue()); + +this.documentBase = "" + vwrOptions.get("documentBase"); +this.codeBase = "" + vwrOptions.get("codePath"); +}, "java.util.Map"); +Clazz_defineMethod(c$, "initOptions", +function(){ +this.vwrOptions.remove("debug"); +this.vwrOptions.put("fullName", this.fullName); +this.haveDocumentAccess = "true".equalsIgnoreCase("" + this.getValue("allowjavascript", "true")); +this.mayScript = true; +}); +Clazz_defineMethod(c$, "getJmolParameter", +function(paramName){ +var o = this.htParams.get(paramName.toLowerCase()); +return (o == null ? null : "" + o); +}, "~S"); +Clazz_overrideMethod(c$, "functionXY", +function(functionName, nX, nY){ +var fxy = Clazz_newFloatArray (Math.abs(nX), Math.abs(nY), 0); +if (!this.mayScript || !this.haveDocumentAccess || nX == 0 || nY == 0) return fxy; +try { +if (nX > 0 && nY > 0) { +for (var i = 0; i < nX; i++) for (var j = 0; j < nY; j++) { +{ +fxy[i][j] = window.eval(functionName)(this.htmlName, i, j); +}} + +} else if (nY > 0) { +var data; +{ +data = window.eval(functionName)(this.htmlName, nX, nY); +}nX = Math.abs(nX); +var fdata = Clazz_newFloatArray (nX * nY, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, fdata); +for (var i = 0, ipt = 0; i < nX; i++) { +for (var j = 0; j < nY; j++, ipt++) { +fxy[i][j] = fdata[ipt]; +} +} +} else { +{ +data = window.eval(functionName)(this.htmlName, nX, nY, fxy); +}}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Exception " + e + " with nX, nY: " + nX + " " + nY); +} else { +throw e; +} +} +return fxy; +}, "~S,~N,~N"); +Clazz_overrideMethod(c$, "functionXYZ", +function(functionName, nX, nY, nZ){ +var fxyz = Clazz_newFloatArray (Math.abs(nX), Math.abs(nY), Math.abs(nZ), 0); +if (!this.mayScript || !this.haveDocumentAccess || nX == 0 || nY == 0 || nZ == 0) return fxyz; +try { +{ +window.eval(functionName)(this.htmlName, nX, nY, nZ, fxyz); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Exception " + e + " for " + functionName + " with nX, nY, nZ: " + nX + " " + nY + " " + nZ); +} else { +throw e; +} +} +return fxyz; +}, "~S,~N,~N,~N"); +Clazz_defineMethod(c$, "doShowDocument", +function(url){ +var surl = JU.PT.split(url.toString(), "?POST?"); +if (surl.length == 1) { +{ +window.open(surl[0]); +}return; +}var f = "
"; +f += ""; +f += ""; +var fields = surl[1].$plit("&"); +for (var i = 0; i < fields.length; i++) { +var field = fields[i]; +var pt = field.indexOf("="); +var name = field.substring(0, pt); +var value = field.substring(pt); +if (value.indexOf("\n") >= 0) { +f += ""; +} else { +f += ""; +}} +f += "
"; +{ +var w=window.open("");w.document.write(f);w.document.getElementById("f").submit(); +}}, "java.net.URL"); +Clazz_defineMethod(c$, "doSendCallback", +function(type, callback, data, strInfo){ +var isString = ((typeof(callback)=='string')); +if (callback == null || isString && (callback).length == 0) { +} else { +if (isString && "alert".equals(callback)) { +{ +alert(strInfo); +}return ""; +}var tokens = (isString ? JU.PT.split((callback), ".") : null); +try { +{ +var o; +if (isString) { +o = window[tokens[0]]; +for (var i = 1; i < tokens.length; i++) +o = o[tokens[i]]; +} else { +o = callback; +} +for (var i = 0; i < data.length; i++) { +data[i] && data[i].booleanValue && (data[i] = data[i].booleanValue()); +data[i] instanceof Number && (data[i] = +data[i]); +} +return o.apply(this,data) +}} catch (e) { +System.out.println("callback " + type + " failed " + e); +} +}return ""; +}, "J.c.CBK,~O,~A,~S"); +Clazz_defineMethod(c$, "doEval", +function(strEval){ +try { +{ +return window.eval(strEval); +}} catch (e) { +JU.Logger.error("# error evaluating " + strEval + ":" + e.toString()); +} +return ""; +}, "~S"); +Clazz_defineMethod(c$, "doShowStatus", +function(message){ +try { +System.out.println(message); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "getGLmolView", +function(){ +return this.viewer.getGLmolView(); +}); +Clazz_defineMethod(c$, "openFile", +function(fileName){ +return this.viewer.openFile(fileName); +}, "~S"); +Clazz_overrideMethod(c$, "cacheFileByName", +function(fileName, isAdd){ +return this.viewer.cacheFileByName(fileName, isAdd); +}, "~S,~B"); +Clazz_overrideMethod(c$, "cachePut", +function(key, data){ +this.viewer.cachePut(key, data); +}, "~S,~O"); +Clazz_overrideMethod(c$, "getFullName", +function(){ +return this.fullName; +}); +c$.htRegistry = null; +c$.isJS = false; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.AU"], "JU.Geodesic", ["java.util.Hashtable", "JU.V3"], function(){ +var c$ = Clazz_declareType(JU, "Geodesic", null); +c$.getNeighborVertexesArrays = Clazz_defineMethod(c$, "getNeighborVertexesArrays", +function(){ +if (JU.Geodesic.vertexCounts == null) JU.Geodesic.createGeodesic(3); +return JU.Geodesic.neighborVertexesArrays; +}); +c$.getVertexCount = Clazz_defineMethod(c$, "getVertexCount", +function(level){ +if (JU.Geodesic.vertexCounts == null) JU.Geodesic.createGeodesic(3); +return JU.Geodesic.vertexCounts[level]; +}, "~N"); +c$.getVertexVectors = Clazz_defineMethod(c$, "getVertexVectors", +function(){ +if (JU.Geodesic.vertexCounts == null) JU.Geodesic.createGeodesic(3); +return JU.Geodesic.vertexVectors; +}); +c$.getVertexVector = Clazz_defineMethod(c$, "getVertexVector", +function(i){ +return JU.Geodesic.vertexVectors[i]; +}, "~N"); +c$.getFaceVertexes = Clazz_defineMethod(c$, "getFaceVertexes", +function(level){ +return JU.Geodesic.faceVertexesArrays[level]; +}, "~N"); +c$.createGeodesic = Clazz_defineMethod(c$, "createGeodesic", +function(lvl){ +if (lvl <= JU.Geodesic.currentLevel) return; +JU.Geodesic.currentLevel = lvl; +var v = Clazz_newShortArray (lvl + 1, 0); +JU.Geodesic.neighborVertexesArrays = JU.AU.newShort2(lvl + 1); +JU.Geodesic.faceVertexesArrays = JU.AU.newShort2(lvl + 1); +JU.Geodesic.vertexVectors = new Array(12); +JU.Geodesic.vertexVectors[0] = JU.V3.new3(0, 0, JU.Geodesic.halfRoot5); +for (var i = 0; i < 5; ++i) { +JU.Geodesic.vertexVectors[i + 1] = JU.V3.new3(Math.cos(i * 1.2566370614359172), Math.sin(i * 1.2566370614359172), 0.5); +JU.Geodesic.vertexVectors[i + 6] = JU.V3.new3(Math.cos(i * 1.2566370614359172 + 0.6283185307179586), Math.sin(i * 1.2566370614359172 + 0.6283185307179586), -0.5); +} +JU.Geodesic.vertexVectors[11] = JU.V3.new3(0, 0, -JU.Geodesic.halfRoot5); +for (var i = 12; --i >= 0; ) JU.Geodesic.vertexVectors[i].normalize(); + +JU.Geodesic.faceVertexesArrays[0] = JU.Geodesic.faceVertexesIcosahedron; +JU.Geodesic.neighborVertexesArrays[0] = JU.Geodesic.neighborVertexesIcosahedron; +v[0] = 12; +for (var i = 0; i < lvl; ++i) JU.Geodesic.quadruple(i, v); + +JU.Geodesic.vertexCounts = v; +}, "~N"); +c$.quadruple = Clazz_defineMethod(c$, "quadruple", +function(level, counts){ +JU.Geodesic.htVertex = new java.util.Hashtable(); +var oldVertexCount = JU.Geodesic.vertexVectors.length; +var oldFaceVertexes = JU.Geodesic.faceVertexesArrays[level]; +var oldFaceVertexesLength = oldFaceVertexes.length; +var oldFaceCount = Clazz_doubleToInt(oldFaceVertexesLength / 3); +var oldEdgesCount = oldVertexCount + oldFaceCount - 2; +var newVertexCount = oldVertexCount + oldEdgesCount; +var newFaceCount = 4 * oldFaceCount; +JU.Geodesic.vertexVectors = JU.AU.arrayCopyObject(JU.Geodesic.vertexVectors, newVertexCount); +var newFacesVertexes = Clazz_newShortArray (3 * newFaceCount, 0); +JU.Geodesic.faceVertexesArrays[level + 1] = newFacesVertexes; +var neighborVertexes = Clazz_newShortArray (6 * newVertexCount, 0); +JU.Geodesic.neighborVertexesArrays[level + 1] = neighborVertexes; +for (var i = neighborVertexes.length; --i >= 0; ) neighborVertexes[i] = -1; + +counts[level + 1] = newVertexCount; +JU.Geodesic.vertexNext = oldVertexCount; +var iFaceNew = 0; +for (var i = 0; i < oldFaceVertexesLength; ) { +var iA = oldFaceVertexes[i++]; +var iB = oldFaceVertexes[i++]; +var iC = oldFaceVertexes[i++]; +var iAB = JU.Geodesic.getVertex(iA, iB); +var iBC = JU.Geodesic.getVertex(iB, iC); +var iCA = JU.Geodesic.getVertex(iC, iA); +newFacesVertexes[iFaceNew++] = iA; +newFacesVertexes[iFaceNew++] = iAB; +newFacesVertexes[iFaceNew++] = iCA; +newFacesVertexes[iFaceNew++] = iB; +newFacesVertexes[iFaceNew++] = iBC; +newFacesVertexes[iFaceNew++] = iAB; +newFacesVertexes[iFaceNew++] = iC; +newFacesVertexes[iFaceNew++] = iCA; +newFacesVertexes[iFaceNew++] = iBC; +newFacesVertexes[iFaceNew++] = iCA; +newFacesVertexes[iFaceNew++] = iAB; +newFacesVertexes[iFaceNew++] = iBC; +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iAB, iA); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iAB, iCA); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iAB, iBC); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iAB, iB); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iBC, iB); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iBC, iCA); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iBC, iC); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iCA, iC); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iCA, iA); +} +if (true) { +var vertexCount = JU.Geodesic.vertexVectors.length; +if (iFaceNew != newFacesVertexes.length) throw new NullPointerException(); +if (JU.Geodesic.vertexNext != newVertexCount) throw new NullPointerException(); +for (var i = 0; i < 12; ++i) { +for (var j = 0; j < 5; ++j) { +var neighbor = neighborVertexes[i * 6 + j]; +if (neighbor < 0) throw new NullPointerException(); +if (neighbor >= vertexCount) throw new NullPointerException(); +if (neighborVertexes[i * 6 + 5] != -1) throw new NullPointerException(); +} +} +for (var i = 72; i < neighborVertexes.length; ++i) { +var neighbor = neighborVertexes[i]; +if (neighbor < 0) throw new NullPointerException(); +if (neighbor >= vertexCount) throw new NullPointerException(); +} +for (var i = 0; i < newVertexCount; ++i) { +var neighborCount = 0; +for (var j = neighborVertexes.length; --j >= 0; ) if (neighborVertexes[j] == i) ++neighborCount; + +if ((i < 12 && neighborCount != 5) || (i >= 12 && neighborCount != 6)) throw new NullPointerException(); +var faceCount = 0; +for (var j = newFacesVertexes.length; --j >= 0; ) if (newFacesVertexes[j] == i) ++faceCount; + +if ((i < 12 && faceCount != 5) || (i >= 12 && faceCount != 6)) throw new NullPointerException(); +} +}JU.Geodesic.htVertex = null; +}, "~N,~A"); +c$.addNeighboringVertexes = Clazz_defineMethod(c$, "addNeighboringVertexes", +function(neighborVertexes, v1, v2){ +for (var i = v1 * 6, iMax = i + 6; i < iMax; ++i) { +if (neighborVertexes[i] == v2) return; +if (neighborVertexes[i] < 0) { +neighborVertexes[i] = v2; +for (var j = v2 * 6, jMax = j + 6; j < jMax; ++j) { +if (neighborVertexes[j] == v1) return; +if (neighborVertexes[j] < 0) { +neighborVertexes[j] = v1; +return; +}} +}} +throw new NullPointerException(); +}, "~A,~N,~N"); +c$.getVertex = Clazz_defineMethod(c$, "getVertex", +function(v1, v2){ +if (v1 > v2) { +var t = v1; +v1 = v2; +v2 = t; +}var hashKey = Integer.$valueOf((v1 << 16) + v2); +var iv = JU.Geodesic.htVertex.get(hashKey); +if (iv != null) { +return iv.shortValue(); +}var newVertexVector = JU.Geodesic.vertexVectors[JU.Geodesic.vertexNext] = new JU.V3(); +newVertexVector.add2(JU.Geodesic.vertexVectors[v1], JU.Geodesic.vertexVectors[v2]); +newVertexVector.normalize(); +JU.Geodesic.htVertex.put(hashKey, Short.$valueOf(JU.Geodesic.vertexNext)); +return JU.Geodesic.vertexNext++; +}, "~N,~N"); +c$.halfRoot5 = 0.5 * Math.sqrt(5); +c$.faceVertexesIcosahedron = Clazz_newShortArray(-1, [0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5, 0, 5, 1, 1, 6, 2, 2, 7, 3, 3, 8, 4, 4, 9, 5, 5, 10, 1, 6, 1, 10, 7, 2, 6, 8, 3, 7, 9, 4, 8, 10, 5, 9, 11, 6, 10, 11, 7, 6, 11, 8, 7, 11, 9, 8, 11, 10, 9]); +c$.neighborVertexesIcosahedron = Clazz_newShortArray(-1, [1, 2, 3, 4, 5, -1, 0, 5, 10, 6, 2, -1, 0, 1, 6, 7, 3, -1, 0, 2, 7, 8, 4, -1, 0, 3, 8, 9, 5, -1, 0, 4, 9, 10, 1, -1, 1, 10, 11, 7, 2, -1, 2, 6, 11, 8, 3, -1, 3, 7, 11, 9, 4, -1, 4, 8, 11, 10, 5, -1, 5, 9, 11, 6, 1, -1, 6, 7, 8, 9, 10, -1]); +c$.vertexCounts = null; +c$.vertexVectors = null; +c$.faceVertexesArrays = null; +c$.neighborVertexesArrays = null; +c$.currentLevel = 0; +c$.vertexNext = 0; +c$.htVertex = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.entryCount = 0; +this.entries = null; +Clazz_instantialize(this, arguments);}, JU, "Int2IntHash", null); +Clazz_makeConstructor(c$, +function(initialCapacity){ +this.entries = new Array(initialCapacity); +}, "~N"); +Clazz_defineMethod(c$, "get", +function(key){ +var entries = this.entries; +var hash = (key & 0x7FFFFFFF) % entries.length; +for (var e = entries[hash]; e != null; e = e.next) if (e.key == key) return e.value; + +return -2147483648; +}, "~N"); +Clazz_defineMethod(c$, "put", +function(key, value){ +var entries = this.entries; +var n = entries.length; +var hash = (key & 0x7FFFFFFF) % n; +for (var e = entries[hash]; e != null; e = e.next) if (e.key == key) { +e.value = value; +return; +} +if (this.entryCount > n) { +var oldSize = n; +n += n + 1; +var newEntries = new Array(n); +for (var i = oldSize; --i >= 0; ) { +for (var e = entries[i]; e != null; ) { +var t = e; +e = e.next; +hash = (t.key & 0x7FFFFFFF) % n; +t.next = newEntries[hash]; +newEntries[hash] = t; +} +} +entries = this.entries = newEntries; +hash = (key & 0x7FFFFFFF) % n; +}entries[hash] = new JU.Int2IntHashEntry(key, value, entries[hash]); +++this.entryCount; +}, "~N,~N"); +var c$ = Clazz_decorateAsClass(function(){ +this.key = 0; +this.value = 0; +this.next = null; +Clazz_instantialize(this, arguments);}, JU, "Int2IntHashEntry", null); +Clazz_makeConstructor(c$, +function(key, value, next){ +this.key = key; +this.value = value; +this.next = next; +}, "~N,~N,JU.Int2IntHashEntry"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.JSJSONParser", ["java.util.Hashtable", "JU.JSONException", "$.Lst", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.str = null; +this.index = 0; +this.len = 0; +this.asHashTable = false; +Clazz_instantialize(this, arguments);}, JU, "JSJSONParser", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "parseMap", +function(str, asHashTable){ +this.index = 0; +this.asHashTable = asHashTable; +this.str = str; +this.len = str.length; +if (this.getChar() != '{') return null; +this.returnChar(); +return this.getValue(false); +}, "~S,~B"); +Clazz_defineMethod(c$, "parse", +function(str, asHashTable){ +this.index = 0; +this.asHashTable = asHashTable; +this.str = str; +this.len = str.length; +return this.getValue(false); +}, "~S,~B"); +Clazz_defineMethod(c$, "next", +function(){ +return (this.index < this.len ? this.str.charAt(this.index++) : '\0'); +}); +Clazz_defineMethod(c$, "returnChar", +function(){ +this.index--; +}); +Clazz_defineMethod(c$, "getChar", +function(){ +for (; ; ) { +var c = this.next(); +if (c.charCodeAt(0) == 0 || c > ' ') { +return c; +}} +}); +Clazz_defineMethod(c$, "getValue", +function(isKey){ +var i = this.index; +var c = this.getChar(); +switch ((c).charCodeAt(0)) { +case 0: +return null; +case 34: +case 39: +return this.getString(c); +case 123: +if (!isKey) return this.getObject(); +c = String.fromCharCode( 0); +break; +case 91: +if (!isKey) return this.getArray(); +c = String.fromCharCode( 0); +break; +default: +this.returnChar(); +while (c >= ' ' && "[,]{:}'\"".indexOf(c) < 0) c = this.next(); + +this.returnChar(); +if (isKey && c != ':') c = String.fromCharCode( 0); +break; +} +if (isKey && c.charCodeAt(0) == 0) throw new JU.JSONException("invalid key"); +var string = this.str.substring(i, this.index).trim(); +if (!isKey) { +if (string.equals("true")) { +return Boolean.TRUE; +}if (string.equals("false")) { +return Boolean.FALSE; +}if (string.equals("null")) { +return (this.asHashTable ? string : null); +}}c = string.charAt(0); +if (c >= '0' && c <= '9' || c == '-') try { +if (string.indexOf('.') < 0 && string.indexOf('e') < 0 && string.indexOf('E') < 0) return new Integer(string); +var d = Float.$valueOf(string); +if (!d.isInfinite() && !d.isNaN()) return d; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +System.out.println("JSON parser cannot parse " + string); +throw new JU.JSONException("invalid value"); +}, "~B"); +Clazz_defineMethod(c$, "getString", +function(quote){ +var c; +var sb = null; +var i0 = this.index; +for (; ; ) { +var i1 = this.index; +switch ((c = this.next()).charCodeAt(0)) { +case 0: +case 10: +case 13: +throw this.syntaxError("Unterminated string"); +case 92: +switch ((c = this.next()).charCodeAt(0)) { +case 34: +case 39: +case 92: +case 47: +break; +case 98: +c = '\b'; +break; +case 116: +c = '\t'; +break; +case 110: +c = '\n'; +break; +case 102: +c = '\f'; +break; +case 114: +c = '\r'; +break; +case 117: +var i = this.index; +this.index += 4; +try { +c = String.fromCharCode(Integer.parseInt(this.str.substring(i, this.index), 16)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw this.syntaxError("Substring bounds error"); +} else { +throw e; +} +} +break; +default: +throw this.syntaxError("Illegal escape."); +} +break; +default: +if (c == quote) return (sb == null ? this.str.substring(i0, i1) : sb.toString()); +break; +} +if (this.index > i1 + 1) { +if (sb == null) { +sb = new JU.SB(); +sb.append(this.str.substring(i0, i1)); +}}if (sb != null) sb.appendC(c); +} +}, "~S"); +Clazz_defineMethod(c$, "getObject", +function(){ +var map = (this.asHashTable ? new java.util.Hashtable() : new java.util.HashMap()); +var key = null; +switch ((this.getChar()).charCodeAt(0)) { +case 125: +return map; +case 0: +throw new JU.JSONException("invalid object"); +} +this.returnChar(); +var isKey = false; +for (; ; ) { +if ((isKey = !isKey) == true) key = this.getValue(true).toString(); + else map.put(key, this.getValue(false)); +switch ((this.getChar()).charCodeAt(0)) { +case 125: +return map; +case 58: +if (isKey) continue; +isKey = true; +case 44: +if (!isKey) continue; +default: +throw this.syntaxError("Expected ',' or ':' or '}'"); +} +} +}); +Clazz_defineMethod(c$, "getArray", +function(){ +var l = new JU.Lst(); +switch ((this.getChar()).charCodeAt(0)) { +case 93: +return l; +case 0: +throw new JU.JSONException("invalid array"); +} +this.returnChar(); +var isNull = false; +for (; ; ) { +if (isNull) { +l.addLast(null); +isNull = false; +} else { +l.addLast(this.getValue(false)); +}switch ((this.getChar()).charCodeAt(0)) { +case 44: +switch ((this.getChar()).charCodeAt(0)) { +case 93: +return l; +case 44: +isNull = true; +default: +this.returnChar(); +} +continue; +case 93: +return l; +default: +throw this.syntaxError("Expected ',' or ']'"); +} +} +}); +Clazz_defineMethod(c$, "syntaxError", +function(message){ +return new JU.JSONException(message + " for " + this.str.substring(0, Math.min(this.index, this.len))); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.lang.RuntimeException"], "JU.JSONException", null, function(){ +var c$ = Clazz_declareType(JU, "JSONException", RuntimeException); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "SimpleNode"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "SimpleEdge"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "Node", JU.SimpleNode); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.lang.Enum", "JU.SimpleEdge"], "JU.Edge", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.index = -1; +this.order = 0; +Clazz_instantialize(this, arguments);}, JU, "Edge", null, JU.SimpleEdge); +c$.getArgbHbondType = Clazz_defineMethod(c$, "getArgbHbondType", +function(order){ +var argbIndex = ((order & 30720) >> 11); +return JU.Edge.argbsHbondType[argbIndex]; +}, "~N"); +c$.getBondOrderNumberFromOrder = Clazz_defineMethod(c$, "getBondOrderNumberFromOrder", +function(order){ +order &= 131071; +switch (order) { +case 131071: +case 65535: +return "0"; +case 1025: +case 1041: +return "1"; +default: +if (JU.Edge.isOrderH(order) || JU.Edge.isAtropism(order) || (order & 256) != 0) return "1"; +if ((order & 224) != 0) return (order >> 5) + "." + (order & 0x1F); +return JU.Edge.EnumBondOrder.getNumberFromCode(order); +} +}, "~N"); +c$.getCmlBondOrder = Clazz_defineMethod(c$, "getCmlBondOrder", +function(order){ +var sname = JU.Edge.getBondOrderNameFromOrder(order); +switch ((sname.charAt(0)).charCodeAt(0)) { +case 115: +case 100: +case 116: +return "" + sname.toUpperCase().charAt(0); +case 97: +if (sname.indexOf("Double") >= 0) return "D"; + else if (sname.indexOf("Single") >= 0) return "S"; +return "aromatic"; +case 112: +if (sname.indexOf(" ") >= 0) return sname.substring(sname.indexOf(" ") + 1); +return "partial12"; +} +return null; +}, "~N"); +c$.getBondOrderNameFromOrder = Clazz_defineMethod(c$, "getBondOrderNameFromOrder", +function(order){ +order &= 131071; +switch (order) { +case 65535: +case 131071: +return ""; +case 1025: +return "near"; +case 1041: +return "far"; +case 32768: +return JU.Edge.EnumBondOrder.STRUT.$$name; +case 1: +return JU.Edge.EnumBondOrder.SINGLE.$$name; +case 2: +return JU.Edge.EnumBondOrder.DOUBLE.$$name; +} +if ((order & 224) != 0) return "partial " + JU.Edge.getBondOrderNumberFromOrder(order); +if (JU.Edge.isOrderH(order)) return JU.Edge.EnumBondOrder.H_REGULAR.$$name; +if ((order & 65537) == 65537) { +var code = JU.Edge.getAtropismCode(order); +return "atropisomer_" + (Clazz_doubleToInt(code / 4)) + (code % 4); +}if ((order & 256) != 0) return JU.Edge.EnumBondOrder.SINGLE.$$name; +return JU.Edge.EnumBondOrder.getNameFromCode(order); +}, "~N"); +c$.getAtropismOrder = Clazz_defineMethod(c$, "getAtropismOrder", +function(nn, mm){ +return JU.Edge.getAtropismOrder12(((nn) << 2) + mm); +}, "~N,~N"); +c$.getAtropismOrder12 = Clazz_defineMethod(c$, "getAtropismOrder12", +function(nnmm){ +return ((nnmm << 11) | 65537); +}, "~N"); +c$.getAtropismCode = Clazz_defineMethod(c$, "getAtropismCode", +function(order){ +return (order >> (11)) & 0xF; +}, "~N"); +c$.getAtropismNode = Clazz_defineMethod(c$, "getAtropismNode", +function(order, a1, isFirst){ +var i1 = (order >> (11 + (isFirst ? 0 : 2))) & 3; +return a1.getEdges()[i1 - 1].getOtherNode(a1); +}, "~N,JU.Node,~B"); +c$.isAtropism = Clazz_defineMethod(c$, "isAtropism", +function(order){ +return (order & 65537) == 65537; +}, "~N"); +c$.isOrderH = Clazz_defineMethod(c$, "isOrderH", +function(order){ +return (order & 30720) != 0 && (order & 65537) == 0; +}, "~N"); +c$.getPartialBondDotted = Clazz_defineMethod(c$, "getPartialBondDotted", +function(order){ +return (order & 0x1F); +}, "~N"); +c$.getPartialBondOrder = Clazz_defineMethod(c$, "getPartialBondOrder", +function(order){ +return ((order & 131071) >> 5); +}, "~N"); +c$.getCovalentBondOrder = Clazz_defineMethod(c$, "getCovalentBondOrder", +function(order){ +if ((order & 1024) != 0) return 1; +if ((order & 1023) == 0) return 0; +order &= 131071; +if ((order & 224) != 0) return JU.Edge.getPartialBondOrder(order); +if ((order & 256) != 0) order &= -257; +if ((order & 0xF8) != 0) order = 1; +return order & 7; +}, "~N"); +c$.getBondOrderFromFloat = Clazz_defineMethod(c$, "getBondOrderFromFloat", +function(fOrder){ +switch (Clazz_floatToInt(fOrder * 10)) { +case 10: +return 1; +case 5: +case -10: +return 33; +case 15: +return 515; +case -15: +return 66; +case 20: +return 2; +case 25: +return 97; +case -25: +return 100; +case 30: +return 3; +case 40: +return 4; +} +return 131071; +}, "~N"); +c$.getBondOrderFromString = Clazz_defineMethod(c$, "getBondOrderFromString", +function(s){ +if (s.indexOf(' ') < 0) { +if (s.indexOf(".") >= 0) { +s = "partial " + s; +} else { +if (JU.PT.isOneOf(s, ";1;2;3;4;5;6;")) { +return (s.charAt(0)).charCodeAt(0) - 48; +}var order = JU.Edge.EnumBondOrder.getCodeFromName(s); +if (order != 131071 || !s.toLowerCase().startsWith("atropisomer_") || s.length != 14) return order; +try { +order = JU.Edge.getAtropismOrder(Integer.parseInt(s.substring(12, 13)), Integer.parseInt(s.substring(13, 14))); +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +return order; +}}if (s.toLowerCase().indexOf("partial ") != 0) return 131071; +s = s.substring(8).trim(); +return JU.Edge.getPartialBondOrderFromFloatEncodedInt(JU.Edge.getFloatEncodedInt(s)); +}, "~S"); +c$.getPartialBondOrderFromFloatEncodedInt = Clazz_defineMethod(c$, "getPartialBondOrderFromFloatEncodedInt", +function(bondOrderInteger){ +return (((Clazz_doubleToInt(bondOrderInteger / 1000000)) % 7) << 5) + ((bondOrderInteger % 1000000) & 0x1F); +}, "~N"); +c$.getFloatEncodedInt = Clazz_defineMethod(c$, "getFloatEncodedInt", +function(strDecimal){ +var pt = strDecimal.indexOf("."); +if (pt < 1 || strDecimal.charAt(0) == '-' || strDecimal.endsWith(".") || strDecimal.contains(".0")) return 2147483647; +var i = 0; +var j = 0; +if (pt > 0) { +try { +i = Integer.parseInt(strDecimal.substring(0, pt)); +if (i < 0) i = -i; +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +i = -1; +} else { +throw e; +} +} +}if (pt < strDecimal.length - 1) try { +j = Integer.parseInt(strDecimal.substring(pt + 1)); +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +i = i * 1000000 + j; +return (i < 0 || i > 2147483647 ? 2147483647 : i); +}, "~S"); +Clazz_overrideMethod(c$, "getBondType", +function(){ +return this.order & 131071; +}); +Clazz_defineMethod(c$, "setCIPChirality", +function(c){ +}, "~N"); +Clazz_defineMethod(c$, "getCIPChirality", +function(doCalculate){ +return ""; +}, "~B"); +/*if2*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.code = 0; +this.number = null; +this.$$name = null; +Clazz_instantialize(this, arguments);}, JU.Edge, "EnumBondOrder", Enum); +Clazz_makeConstructor(c$, +function(code, number, name){ +this.code = code; +this.number = number; +this.$$name = name; +}, "~N,~S,~S"); +c$.getCodeFromName = Clazz_defineMethod(c$, "getCodeFromName", +function(name){ +for (var item, $item = 0, $$item = JU.Edge.EnumBondOrder.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.$$name.equalsIgnoreCase(name)) return item.code; + +return 131071; +}, "~S"); +c$.getNameFromCode = Clazz_defineMethod(c$, "getNameFromCode", +function(code){ +for (var item, $item = 0, $$item = JU.Edge.EnumBondOrder.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.code == code) return item.$$name; + +return "?"; +}, "~N"); +c$.getNumberFromCode = Clazz_defineMethod(c$, "getNumberFromCode", +function(code){ +for (var item, $item = 0, $$item = JU.Edge.EnumBondOrder.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.code == code) return item.number; + +return "?"; +}, "~N"); +Clazz_defineEnumConstant(c$, "SINGLE", 0, [1, "1", "single"]); +Clazz_defineEnumConstant(c$, "DOUBLE", 1, [2, "2", "double"]); +Clazz_defineEnumConstant(c$, "TRIPLE", 2, [3, "3", "triple"]); +Clazz_defineEnumConstant(c$, "QUADRUPLE", 3, [4, "4", "quadruple"]); +Clazz_defineEnumConstant(c$, "QUINTUPLE", 4, [5, "5", "quintuple"]); +Clazz_defineEnumConstant(c$, "sextuple", 5, [6, "6", "sextuple"]); +Clazz_defineEnumConstant(c$, "AROMATIC", 6, [515, "1.5", "aromatic"]); +Clazz_defineEnumConstant(c$, "STRUT", 7, [32768, "1", "struts"]); +Clazz_defineEnumConstant(c$, "H_REGULAR", 8, [2048, "1", "hbond"]); +Clazz_defineEnumConstant(c$, "PARTIAL01", 9, [33, "0.5", "partial"]); +Clazz_defineEnumConstant(c$, "PARTIAL12", 10, [66, "1.5", "partialDouble"]); +Clazz_defineEnumConstant(c$, "PARTIAL23", 11, [97, "2.5", "partialTriple"]); +Clazz_defineEnumConstant(c$, "PARTIAL32", 12, [100, "2.5", "partialTriple2"]); +Clazz_defineEnumConstant(c$, "AROMATIC_SINGLE", 13, [513, "1", "aromaticSingle"]); +Clazz_defineEnumConstant(c$, "AROMATIC_DOUBLE", 14, [514, "2", "aromaticDouble"]); +Clazz_defineEnumConstant(c$, "ATROPISOMER", 15, [65537, "1", "atropisomer"]); +Clazz_defineEnumConstant(c$, "UNSPECIFIED", 16, [17, "1", "unspecified"]); +/*eoif2*/})(); +c$.argbsHbondType = Clazz_newIntArray(-1, [0xFFFF69B4, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFFFF, 0xFFFF00FF, 0xFFFF0000, 0xFFFFA500, 0xFF00FFFF, 0xFF00FF00, 0xFFFF8080]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Elements"], "JU.JmolMolecule", ["java.util.Hashtable", "JU.AU", "$.BS", "$.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.nodes = null; +this.moleculeIndex = 0; +this.modelIndex = 0; +this.indexInModel = 0; +this.firstAtomIndex = 0; +this.ac = 0; +this.nElements = 0; +this.elementCounts = null; +this.altElementCounts = null; +this.elementNumberMax = 0; +this.altElementMax = 0; +this.mf = null; +this.atomList = null; +this.atNos = null; +Clazz_instantialize(this, arguments);}, JU, "JmolMolecule", null); +Clazz_prepareFields (c$, function(){ +this.elementCounts = Clazz_newIntArray (JU.Elements.elementNumberMax, 0); +this.altElementCounts = Clazz_newIntArray (JU.Elements.altElementMax, 0); +}); +Clazz_makeConstructor(c$, +function(){ +}); +c$.getMolecules = Clazz_defineMethod(c$, "getMolecules", +function(atoms, bsModelAtoms, biobranches, bsExclude){ +var bsToTest = null; +var bsBranch = new JU.BS(); +var thisModelIndex = -1; +var indexInModel = 0; +var moleculeCount = 0; +var molecules = new Array(4); +if (bsExclude == null) bsExclude = new JU.BS(); +for (var i = 0; i < atoms.length; i++) if (!bsExclude.get(i) && !bsBranch.get(i)) { +var a = atoms[i]; +if (a == null || a.isDeleted()) { +bsExclude.set(i); +continue; +}var modelIndex = a.getModelIndex(); +if (modelIndex != thisModelIndex) { +thisModelIndex = modelIndex; +indexInModel = 0; +bsToTest = bsModelAtoms[modelIndex]; +}bsBranch = JU.JmolMolecule.getBranchBitSet(atoms, i, bsToTest, biobranches, -1, true, true); +if (bsBranch.nextSetBit(0) >= 0) { +molecules = JU.JmolMolecule.addMolecule(molecules, moleculeCount++, atoms, i, bsBranch, modelIndex, indexInModel++, bsExclude); +}} +return JU.JmolMolecule.allocateArray(molecules, moleculeCount); +}, "~A,~A,JU.Lst,JU.BS"); +c$.getBranchBitSet = Clazz_defineMethod(c$, "getBranchBitSet", +function(atoms, atomIndex, bsToTest, biobranches, atomIndexNot, allowCyclic, allowBioResidue){ +var bs = JU.BS.newN(atoms.length); +if (atomIndex < 0) return bs; +if (atomIndexNot >= 0) bsToTest.clear(atomIndexNot); +return (JU.JmolMolecule.getCovalentlyConnectedBitSet(atoms, atoms[atomIndex], bsToTest, allowCyclic, allowBioResidue, biobranches, bs, null, null) ? bs : new JU.BS()); +}, "~A,~N,JU.BS,JU.Lst,~N,~B,~B"); +c$.addMolecule = Clazz_defineMethod(c$, "addMolecule", +function(molecules, iMolecule, atoms, iAtom, bsBranch, modelIndex, indexInModel, bsExclude){ +bsExclude.or(bsBranch); +if (iMolecule == molecules.length) molecules = JU.JmolMolecule.allocateArray(molecules, iMolecule * 2 + 1); +molecules[iMolecule] = JU.JmolMolecule.initialize(atoms, iMolecule, iAtom, bsBranch, modelIndex, indexInModel); +return molecules; +}, "~A,~N,~A,~N,JU.BS,~N,~N,JU.BS"); +c$.getMolecularFormulaAtoms = Clazz_defineMethod(c$, "getMolecularFormulaAtoms", +function(atoms, bsSelected, wts, isEmpirical){ +var m = new JU.JmolMolecule(); +m.nodes = atoms; +m.atomList = bsSelected; +return m.getMolecularFormula(false, wts, isEmpirical); +}, "~A,JU.BS,~A,~B"); +Clazz_defineMethod(c$, "getMolecularFormula", +function(includeMissingHydrogens, wts, isEmpirical){ +this.getMFArray(includeMissingHydrogens, wts, isEmpirical); +if (this.elementCounts[0] < 0) return "?"; +var mf = ""; +var sep = ""; +var nX; +for (var i = 1; i <= this.elementNumberMax; i++) { +nX = this.elementCounts[i]; +if (nX != 0) { +mf += sep + JU.Elements.elementSymbolFromNumber(i) + " " + nX; +sep = " "; +}} +return mf; +}, "~B,~A,~B"); +Clazz_defineMethod(c$, "getMFArray", +function(includeMissingHydrogens, wts, isEmpirical){ +if (this.atomList == null) { +this.atomList = new JU.BS(); +this.atomList.setBits(0, this.atNos == null ? this.nodes.length : this.atNos.length); +}this.elementCounts = Clazz_newIntArray (JU.Elements.elementNumberMax, 0); +this.altElementCounts = Clazz_newIntArray (JU.Elements.altElementMax, 0); +this.ac = this.atomList.cardinality(); +this.nElements = 0; +for (var p = 0, i = this.atomList.nextSetBit(0); i >= 0; i = this.atomList.nextSetBit(i + 1), p++) { +var n; +var node = null; +if (this.atNos == null) { +node = this.nodes[i]; +if (node == null) continue; +n = node.getAtomicAndIsotopeNumber(); +} else { +n = this.atNos[i]; +}var f = (wts == null ? 1 : Clazz_floatToInt(8 * wts[p])); +if (n < JU.Elements.elementNumberMax) { +if (this.elementCounts[n] == 0) this.nElements++; +this.elementCounts[n] += f; +this.elementNumberMax = Math.max(this.elementNumberMax, n); +} else { +n = JU.Elements.altElementIndexFromNumber(n); +if (this.altElementCounts[n] == 0) this.nElements++; +this.altElementCounts[n] += f; +this.altElementMax = Math.max(this.altElementMax, n); +}if (includeMissingHydrogens) { +var nH = Math.max(0, node.getImplicitHydrogenCount()) + Math.max(node.getExplicitHydrogenCount(), 0); +if (nH > 0) { +if (this.elementCounts[1] == 0) this.nElements++; +this.elementCounts[1] += nH * f; +this.elementNumberMax = Math.max(this.elementNumberMax, 1); +}}} +if (wts != null) for (var i = 1; i <= this.elementNumberMax; i++) { +var c = Clazz_doubleToInt(this.elementCounts[i] / 8); +if (c * 8 != this.elementCounts[i]) { +this.elementCounts[0] = -1; +return this.elementCounts; +}this.elementCounts[i] = c; +} +if (isEmpirical) { +var min = 2; +var ok = true; +while (ok) { +min = 100000; +var c; +for (var i = 1; i <= this.elementNumberMax; i++) if ((c = this.elementCounts[i]) > 0 && c < min) min = c; + +if (min == 1) break; +var j = min; +for (; j > 1; j--) { +ok = true; +for (var i = 1; i <= this.elementNumberMax && ok; i++) if (Clazz_doubleToInt((c = this.elementCounts[i]) / j) * j != c) ok = false; + +if (ok) { +for (var i = 1; i <= this.elementNumberMax; i++) this.elementCounts[i] /= j; + +break; +}} +} +}return this.elementCounts; +}, "~B,~A,~B"); +c$.initialize = Clazz_defineMethod(c$, "initialize", +function(nodes, moleculeIndex, firstAtomIndex, atomList, modelIndex, indexInModel){ +var jm = new JU.JmolMolecule(); +jm.nodes = nodes; +jm.firstAtomIndex = firstAtomIndex; +jm.atomList = atomList; +jm.ac = atomList.cardinality(); +jm.moleculeIndex = moleculeIndex; +jm.modelIndex = modelIndex; +jm.indexInModel = indexInModel; +return jm; +}, "~A,~N,~N,JU.BS,~N,~N"); +c$.getCovalentlyConnectedBitSet = Clazz_defineMethod(c$, "getCovalentlyConnectedBitSet", +function(atoms, atom, bsToTest, allowCyclic, allowBioResidue, biobranches, bsResult, origAtom, prevAtom){ +var atomIndex = atom.getIndex(); +if (!bsToTest.get(atomIndex)) return allowCyclic; +if (!allowBioResidue && atom.getBioStructureTypeName().length > 0) return allowCyclic; +bsToTest.clear(atomIndex); +if (biobranches != null && !bsResult.get(atomIndex)) { +for (var i = biobranches.size(); --i >= 0; ) { +var b = biobranches.get(i); +if (b.get(atomIndex)) { +bsResult.or(b); +bsToTest.andNot(b); +for (var j = b.nextSetBit(0); j >= 0; j = b.nextSetBit(j + 1)) { +var atom1 = atoms[j]; +if (atom1 == null) continue; +bsToTest.set(j); +JU.JmolMolecule.getCovalentlyConnectedBitSet(atoms, atom1, bsToTest, allowCyclic, allowBioResidue, biobranches, bsResult, origAtom, atom); +bsToTest.clear(j); +} +break; +}} +}bsResult.set(atomIndex); +var bonds = atom.getEdges(); +if (bonds == null) return true; +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +if (bond != null && bond.isCovalent()) { +var n = bond.getOtherNode(atom); +if (n === prevAtom) continue; +if (n === origAtom) return false; +if (!JU.JmolMolecule.getCovalentlyConnectedBitSet(atoms, n, bsToTest, allowCyclic, allowBioResidue, biobranches, bsResult, origAtom, atom)) return false; +}} +return true; +}, "~A,JU.Node,JU.BS,~B,~B,JU.Lst,JU.BS,JU.Node,JU.Node"); +c$.allocateArray = Clazz_defineMethod(c$, "allocateArray", +function(molecules, len){ +return (len == molecules.length ? molecules : JU.AU.arrayCopyObject(molecules, len)); +}, "~A,~N"); +c$.getBitSetForMF = Clazz_defineMethod(c$, "getBitSetForMF", +function(at, bsAtoms, mf){ +var map = new java.util.Hashtable(); +var ch; +var isDigit; +mf = JU.PT.rep(JU.PT.clean(mf + "Z"), " ", ""); +for (var i = 0, pt = 0, pt0 = 0, n = mf.length; i < n; i++) { +if ((isDigit = Character.isDigit((ch = mf.charAt(i)))) || i > 0 && Character.isUpperCase(ch)) { +pt0 = i; +var s = mf.substring(pt, pt0).trim(); +if (isDigit) while (i < n && Character.isDigit(mf.charAt(i))) i++; + +pt = i; +map.put(s, Clazz_newIntArray(-1, [isDigit ? JU.PT.parseInt(mf.substring(pt0, pt)) : 1])); +}} +var bs = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = at[i].getElementSymbol(); +var c = map.get(a); +if (c == null || c[0]-- < 1) continue; +bs.set(i); +} +for (var e, $e = map.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e[0] > 0) return new JU.BS(); + +return bs; +}, "~A,JU.BS,~S"); +c$.getBranchesForInversion = Clazz_defineMethod(c$, "getBranchesForInversion", +function(at, atomIndex, bsToTest){ +var bs = new JU.BS(); +var a = at[atomIndex]; +var bonds = a.getEdges(); +for (var i = a.getBondCount(); --i >= 0; ) { +if (bonds[i].getBondType() == 1) bs.set(bonds[i].getOtherNode(a).getIndex()); +} +if (bs.cardinality() < 2) { +bs.clearAll(); +} else { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (at[i].getCovalentBondCount() == 1) continue; +var bs0 = JU.BS.copy(bsToTest); +bs0.clear(atomIndex); +var bs1 = JU.BS.newN(at.length); +if (!JU.JmolMolecule.getCovalentlyConnectedBitSet(at, at[i], bs0, true, true, null, bs1, at[atomIndex], at[atomIndex])) { +bs.clear(i); +}} +}return bs; +}, "~A,~N,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.Hashtable", "JU.DefaultLogger"], "JU.Logger", null, function(){ +var c$ = Clazz_declareType(JU, "Logger", null); +c$.getProperty = Clazz_defineMethod(c$, "getProperty", +function(level, defaultValue){ +try { +var property = System.getProperty("jmol.logger." + level, null); +if (property != null) { +return (property.equalsIgnoreCase("true")); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return defaultValue; +}, "~S,~B"); +c$.setLogger = Clazz_defineMethod(c$, "setLogger", +function(logger){ +JU.Logger._logger = logger; +JU.Logger.debugging = JU.Logger.isActiveLevel(5) || JU.Logger.isActiveLevel(6); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}, "JU.LoggerInterface"); +c$.isActiveLevel = Clazz_defineMethod(c$, "isActiveLevel", +function(level){ +return JU.Logger._logger != null && level >= 0 && level < 7 && JU.Logger._activeLevels[level]; +}, "~N"); +c$.setActiveLevel = Clazz_defineMethod(c$, "setActiveLevel", +function(level, active){ +if (level < 0) level = 0; +if (level >= 7) level = 6; +JU.Logger._activeLevels[level] = active; +JU.Logger.debugging = JU.Logger.isActiveLevel(5) || JU.Logger.isActiveLevel(6); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}, "~N,~B"); +c$.setLogLevel = Clazz_defineMethod(c$, "setLogLevel", +function(level){ +for (var i = 7; --i >= 0; ) JU.Logger.setActiveLevel(i, i <= level); + +}, "~N"); +c$.getLevel = Clazz_defineMethod(c$, "getLevel", +function(level){ +switch (level) { +case 6: +return "DEBUGHIGH"; +case 5: +return "DEBUG"; +case 4: +return "INFO"; +case 3: +return "WARN"; +case 2: +return "ERROR"; +case 1: +return "FATAL"; +} +return "????"; +}, "~N"); +c$.logLevel = Clazz_defineMethod(c$, "logLevel", +function(){ +return JU.Logger._logLevel; +}); +c$.doLogLevel = Clazz_defineMethod(c$, "doLogLevel", +function(log){ +JU.Logger._logLevel = log; +}, "~B"); +c$.debug = Clazz_defineMethod(c$, "debug", +function(txt){ +if (!JU.Logger.debugging) return; +try { +JU.Logger._logger.debug(txt); +} catch (t) { +} +}, "~S"); +c$.info = Clazz_defineMethod(c$, "info", +function(txt){ +try { +if (JU.Logger.isActiveLevel(4)) { +JU.Logger._logger.info(txt); +}} catch (t) { +} +}, "~S"); +c$.warn = Clazz_defineMethod(c$, "warn", +function(txt){ +try { +if (JU.Logger.isActiveLevel(3)) { +JU.Logger._logger.warn(txt); +}} catch (t) { +} +}, "~S"); +c$.warnEx = Clazz_defineMethod(c$, "warnEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(3)) { +JU.Logger._logger.warnEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.error = Clazz_defineMethod(c$, "error", +function(txt){ +try { +if (JU.Logger.isActiveLevel(2)) { +JU.Logger._logger.error(txt); +}} catch (t) { +} +}, "~S"); +c$.errorEx = Clazz_defineMethod(c$, "errorEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(2)) { +JU.Logger._logger.errorEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.getLogLevel = Clazz_defineMethod(c$, "getLogLevel", +function(){ +for (var i = 7; --i >= 0; ) if (JU.Logger.isActiveLevel(i)) return i; + +return 0; +}); +c$.fatal = Clazz_defineMethod(c$, "fatal", +function(txt){ +try { +if (JU.Logger.isActiveLevel(1)) { +JU.Logger._logger.fatal(txt); +}} catch (t) { +} +}, "~S"); +c$.fatalEx = Clazz_defineMethod(c$, "fatalEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(1)) { +JU.Logger._logger.fatalEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.startTimer = Clazz_defineMethod(c$, "startTimer", +function(msg){ +if (msg != null) JU.Logger.htTiming.put(msg, Long.$valueOf(System.currentTimeMillis())); +}, "~S"); +c$.getTimerMsg = Clazz_defineMethod(c$, "getTimerMsg", +function(msg, time){ +if (time == 0) time = JU.Logger.getTimeFrom(msg); +return "Time for " + msg + ": " + (time) + " ms"; +}, "~S,~N"); +c$.getTimeFrom = Clazz_defineMethod(c$, "getTimeFrom", +function(msg){ +var t; +return (msg == null || (t = JU.Logger.htTiming.get(msg)) == null ? -1 : System.currentTimeMillis() - t.longValue()); +}, "~S"); +c$.checkTimer = Clazz_defineMethod(c$, "checkTimer", +function(msg, andReset){ +var time = JU.Logger.getTimeFrom(msg); +if (time >= 0 && !msg.startsWith("(")) JU.Logger.info(JU.Logger.getTimerMsg(msg, time)); +if (andReset) JU.Logger.startTimer(msg); +return time; +}, "~S,~B"); +c$.checkMemory = Clazz_defineMethod(c$, "checkMemory", +function(){ +var bTotal = 0; +var bFree = 0; +var bMax = 0; +{ +}JU.Logger.info("Memory: Total-Free=" + (bTotal - bFree) + "; Total=" + bTotal + "; Free=" + bFree + "; Max=" + bMax); +}); +c$._logger = new JU.DefaultLogger(); +c$._activeLevels = Clazz_newBooleanArray(7, false); +c$._logLevel = false; +c$.debugging = false; +c$.debuggingHigh = false; +{ +JU.Logger._activeLevels[6] = JU.Logger.getProperty("debugHigh", false); +JU.Logger._activeLevels[5] = JU.Logger.getProperty("debug", false); +JU.Logger._activeLevels[4] = JU.Logger.getProperty("info", true); +JU.Logger._activeLevels[3] = JU.Logger.getProperty("warn", true); +JU.Logger._activeLevels[2] = JU.Logger.getProperty("error", true); +JU.Logger._activeLevels[1] = JU.Logger.getProperty("fatal", true); +JU.Logger._logLevel = JU.Logger.getProperty("logLevel", false); +JU.Logger.debugging = (JU.Logger._logger != null && (JU.Logger._activeLevels[5] || JU.Logger._activeLevels[6])); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}c$.htTiming = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "LoggerInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.V3"], "JU.Measure", ["javajs.api.Interface", "JU.Lst", "$.M3", "$.P3", "$.P4", "$.Quat"], function(){ +var c$ = Clazz_declareType(JU, "Measure", null); +c$.computeAngle = Clazz_defineMethod(c$, "computeAngle", +function(pointA, pointB, pointC, vectorBA, vectorBC, asDegrees){ +vectorBA.sub2(pointA, pointB); +vectorBC.sub2(pointC, pointB); +var angle = vectorBA.angle(vectorBC); +return (asDegrees ? angle / 0.017453292 : angle); +}, "JU.T3,JU.T3,JU.T3,JU.V3,JU.V3,~B"); +c$.computeAngleABC = Clazz_defineMethod(c$, "computeAngleABC", +function(pointA, pointB, pointC, asDegrees){ +var vectorBA = new JU.V3(); +var vectorBC = new JU.V3(); +return JU.Measure.computeAngle(pointA, pointB, pointC, vectorBA, vectorBC, asDegrees); +}, "JU.T3,JU.T3,JU.T3,~B"); +c$.computeTorsion = Clazz_defineMethod(c$, "computeTorsion", +function(p1, p2, p3, p4, asDegrees){ +var ijx = p1.x - p2.x; +var ijy = p1.y - p2.y; +var ijz = p1.z - p2.z; +var kjx = p3.x - p2.x; +var kjy = p3.y - p2.y; +var kjz = p3.z - p2.z; +var klx = p3.x - p4.x; +var kly = p3.y - p4.y; +var klz = p3.z - p4.z; +var ax = ijy * kjz - ijz * kjy; +var ay = ijz * kjx - ijx * kjz; +var az = ijx * kjy - ijy * kjx; +var cx = kjy * klz - kjz * kly; +var cy = kjz * klx - kjx * klz; +var cz = kjx * kly - kjy * klx; +var ai2 = 1 / (ax * ax + ay * ay + az * az); +var ci2 = 1 / (cx * cx + cy * cy + cz * cz); +var ai = Math.sqrt(ai2); +var ci = Math.sqrt(ci2); +var denom = ai * ci; +var cross = ax * cx + ay * cy + az * cz; +var cosang = cross * denom; +if (cosang > 1) { +cosang = 1; +}if (cosang < -1) { +cosang = -1; +}var torsion = Math.acos(cosang); +var dot = ijx * cx + ijy * cy + ijz * cz; +var absDot = Math.abs(dot); +torsion = (dot / absDot > 0) ? torsion : -torsion; +return (asDegrees ? torsion / 0.017453292 : torsion); +}, "JU.T3,JU.T3,JU.T3,JU.T3,~B"); +c$.getPlaneThroughPoints = Clazz_defineMethod(c$, "getPlaneThroughPoints", +function(pointA, pointB, pointC, vNorm, vAB, plane){ +if (vNorm == null) vNorm = new JU.V3(); +if (vAB == null) vAB = new JU.V3(); +var w = JU.Measure.getNormalThroughPoints(pointA, pointB, pointC, vNorm, vAB); +plane.set4(vNorm.x, vNorm.y, vNorm.z, w); +return plane; +}, "JU.T3,JU.T3,JU.T3,JU.V3,JU.V3,JU.P4"); +c$.getPlaneThroughPoint = Clazz_defineMethod(c$, "getPlaneThroughPoint", +function(pt, normal, plane){ +plane.set4(normal.x, normal.y, normal.z, -normal.dot(pt)); +}, "JU.T3,JU.V3,JU.P4"); +c$.distanceToPlane = Clazz_defineMethod(c$, "distanceToPlane", +function(plane, pt){ +return (plane == null ? NaN : (plane.dot(pt) + plane.w) / Math.sqrt(plane.dot(plane))); +}, "JU.P4,JU.T3"); +c$.directedDistanceToPlane = Clazz_defineMethod(c$, "directedDistanceToPlane", +function(pt, plane, ptref){ +var f = plane.dot(pt) + plane.w; +var f1 = plane.dot(ptref) + plane.w; +return Math.signum(f1) * f / Math.sqrt(plane.dot(plane)); +}, "JU.P3,JU.P4,JU.P3"); +c$.distanceToPlaneD = Clazz_defineMethod(c$, "distanceToPlaneD", +function(plane, d, pt){ +return (plane == null ? NaN : (plane.dot(pt) + plane.w) / d); +}, "JU.P4,~N,JU.P3"); +c$.distanceToPlaneV = Clazz_defineMethod(c$, "distanceToPlaneV", +function(norm, w, pt){ +return (norm == null ? NaN : (norm.dot(pt) + w) / Math.sqrt(norm.dot(norm))); +}, "JU.V3,~N,JU.P3"); +c$.calcNormalizedNormal = Clazz_defineMethod(c$, "calcNormalizedNormal", +function(pointA, pointB, pointC, vNormNorm, vAB){ +vAB.sub2(pointB, pointA); +vNormNorm.sub2(pointC, pointA); +vNormNorm.cross(vAB, vNormNorm); +vNormNorm.normalize(); +}, "JU.T3,JU.T3,JU.T3,JU.T3,JU.T3"); +c$.getDirectedNormalThroughPoints = Clazz_defineMethod(c$, "getDirectedNormalThroughPoints", +function(pointA, pointB, pointC, ptRef, vNorm, vAB){ +var nd = JU.Measure.getNormalThroughPoints(pointA, pointB, pointC, vNorm, vAB); +if (ptRef != null) { +var pt0 = JU.P3.newP(pointA); +pt0.add(vNorm); +var d = pt0.distance(ptRef); +pt0.sub2(pointA, vNorm); +if (d > pt0.distance(ptRef)) { +vNorm.scale(-1); +nd = -nd; +}}return nd; +}, "JU.T3,JU.T3,JU.T3,JU.T3,JU.V3,JU.V3"); +c$.getNormalThroughPoints = Clazz_defineMethod(c$, "getNormalThroughPoints", +function(pointA, pointB, pointC, vNorm, vTemp){ +JU.Measure.calcNormalizedNormal(pointA, pointB, pointC, vNorm, vTemp); +vTemp.setT(pointA); +return -vTemp.dot(vNorm); +}, "JU.T3,JU.T3,JU.T3,JU.T3,JU.T3"); +c$.getPlaneProjection = Clazz_defineMethod(c$, "getPlaneProjection", +function(pt, plane, retPtProj, retNorm){ +var dist = JU.Measure.distanceToPlane(plane, pt); +retNorm.set(plane.x, plane.y, plane.z); +retNorm.normalize(); +if (dist > 0) retNorm.scale(-1); +retPtProj.scaleAdd2(Math.abs(dist), retNorm, pt); +return dist; +}, "JU.T3,JU.P4,JU.T3,JU.V3"); +c$.getNormalFromCenter = Clazz_defineMethod(c$, "getNormalFromCenter", +function(ptCenter, ptA, ptB, ptC, isOutward, normal, vTemp){ +var d = JU.Measure.getNormalThroughPoints(ptA, ptB, ptC, normal, vTemp); +var isReversed = (JU.Measure.distanceToPlaneV(normal, d, ptCenter) > 0); +if (isReversed == isOutward) normal.scale(-1.0); +return !isReversed; +}, "JU.P3,JU.P3,JU.P3,JU.P3,~B,JU.V3,JU.V3"); +c$.getNormalToLine = Clazz_defineMethod(c$, "getNormalToLine", +function(pointA, pointB, vNormNorm){ +vNormNorm.sub2(pointA, pointB); +vNormNorm.cross(vNormNorm, JU.Measure.axisY); +vNormNorm.normalize(); +if (Float.isNaN(vNormNorm.x)) vNormNorm.set(1, 0, 0); +}, "JU.P3,JU.P3,JU.V3"); +c$.getBisectingPlane = Clazz_defineMethod(c$, "getBisectingPlane", +function(pointA, vAB, ptTemp, vTemp, plane){ +ptTemp.scaleAdd2(0.5, vAB, pointA); +vTemp.setT(vAB); +vTemp.normalize(); +JU.Measure.getPlaneThroughPoint(ptTemp, vTemp, plane); +}, "JU.P3,JU.V3,JU.T3,JU.V3,JU.P4"); +c$.projectOntoAxis = Clazz_defineMethod(c$, "projectOntoAxis", +function(pt, ptA, axisUnitVector, vectorProjection){ +vectorProjection.sub2(pt, ptA); +var projectedLength = vectorProjection.dot(axisUnitVector); +pt.scaleAdd2(projectedLength, axisUnitVector, ptA); +vectorProjection.sub2(pt, ptA); +return projectedLength; +}, "JU.P3,JU.P3,JU.V3,JU.V3"); +c$.calcBestAxisThroughPoints = Clazz_defineMethod(c$, "calcBestAxisThroughPoints", +function(points, nPoints, axisA, axisUnitVector, vectorProjection, nTriesMax){ +axisA.setT(points[0]); +axisUnitVector.sub2(points[nPoints - 1], axisA); +axisUnitVector.normalize(); +JU.Measure.calcAveragePointN(points, nPoints, axisA); +var nTries = 0; +while (nTries++ < nTriesMax && JU.Measure.findAxis(points, nPoints, axisA, axisUnitVector, vectorProjection) > 0.001) { +} +var tempA = JU.P3.newP(points[0]); +JU.Measure.projectOntoAxis(tempA, axisA, axisUnitVector, vectorProjection); +axisA.setT(tempA); +}, "~A,~N,JU.P3,JU.V3,JU.V3,~N"); +c$.findAxis = Clazz_defineMethod(c$, "findAxis", +function(points, nPoints, axisA, axisUnitVector, vectorProjection){ +var sumXiYi = new JU.V3(); +var vTemp = new JU.V3(); +var pt = new JU.P3(); +var ptProj = new JU.P3(); +var a = JU.V3.newV(axisUnitVector); +var sum_Xi2 = 0; +for (var i = nPoints; --i >= 0; ) { +pt.setT(points[i]); +ptProj.setT(pt); +JU.Measure.projectOntoAxis(ptProj, axisA, axisUnitVector, vectorProjection); +vTemp.sub2(pt, ptProj); +vTemp.cross(vectorProjection, vTemp); +sumXiYi.add(vTemp); +sum_Xi2 += vectorProjection.lengthSquared(); +} +var m = JU.V3.newV(sumXiYi); +m.scale(1 / sum_Xi2); +vTemp.cross(m, axisUnitVector); +axisUnitVector.add(vTemp); +axisUnitVector.normalize(); +vTemp.sub2(axisUnitVector, a); +return vTemp.length(); +}, "~A,~N,JU.P3,JU.V3,JU.V3"); +c$.calcAveragePoint = Clazz_defineMethod(c$, "calcAveragePoint", +function(pointA, pointB, pointC){ +pointC.set((pointA.x + pointB.x) / 2, (pointA.y + pointB.y) / 2, (pointA.z + pointB.z) / 2); +}, "JU.P3,JU.P3,JU.P3"); +c$.calcAveragePointN = Clazz_defineMethod(c$, "calcAveragePointN", +function(points, nPoints, averagePoint){ +averagePoint.setT(points[0]); +for (var i = 1; i < nPoints; i++) averagePoint.add(points[i]); + +averagePoint.scale(1 / nPoints); +}, "~A,~N,JU.P3"); +c$.transformPoints = Clazz_defineMethod(c$, "transformPoints", +function(vPts, m4, center){ +var v = new JU.Lst(); +for (var i = 0; i < vPts.size(); i++) { +var pt = JU.P3.newP(vPts.get(i)); +pt.sub(center); +m4.rotTrans(pt); +pt.add(center); +v.addLast(pt); +} +return v; +}, "JU.Lst,JU.M4,JU.P3"); +c$.isInTetrahedron = Clazz_defineMethod(c$, "isInTetrahedron", +function(pt, ptA, ptB, ptC, ptD, plane, vTemp, vTemp2, fullyEnclosed){ +var b = (JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(ptC, ptD, ptA, vTemp, vTemp2, plane), pt) >= 0); +if (b != (JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(ptA, ptD, ptB, vTemp, vTemp2, plane), pt) >= 0)) return false; +if (b != (JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(ptB, ptD, ptC, vTemp, vTemp2, plane), pt) >= 0)) return false; +var d = JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(ptA, ptB, ptC, vTemp, vTemp2, plane), pt); +if (fullyEnclosed) return (b == (d >= 0)); +var d1 = JU.Measure.distanceToPlane(plane, ptD); +return d1 * d <= 0 || Math.abs(d1) > Math.abs(d); +}, "JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P4,JU.V3,JU.V3,~B"); +c$.getIntersectionPP = Clazz_defineMethod(c$, "getIntersectionPP", +function(plane1, plane2){ +var a1 = plane1.x; +var b1 = plane1.y; +var c1 = plane1.z; +var d1 = plane1.w; +var a2 = plane2.x; +var b2 = plane2.y; +var c2 = plane2.z; +var d2 = plane2.w; +var norm1 = JU.V3.new3(a1, b1, c1); +var norm2 = JU.V3.new3(a2, b2, c2); +var nxn = new JU.V3(); +nxn.cross(norm1, norm2); +var ax = Math.abs(nxn.x); +var ay = Math.abs(nxn.y); +var az = Math.abs(nxn.z); +var x; +var y; +var z; +var diff; +var type = (ax > ay ? (ax > az ? 1 : 3) : ay > az ? 2 : 3); +switch (type) { +case 1: +x = 0; +diff = (b1 * c2 - b2 * c1); +if (Math.abs(diff) < 0.01) return null; +y = (c1 * d2 - c2 * d1) / diff; +z = (b2 * d1 - d2 * b1) / diff; +break; +case 2: +diff = (a1 * c2 - a2 * c1); +if (Math.abs(diff) < 0.01) return null; +x = (c1 * d2 - c2 * d1) / diff; +y = 0; +z = (a2 * d1 - d2 * a1) / diff; +break; +case 3: +default: +diff = (a1 * b2 - a2 * b1); +if (Math.abs(diff) < 0.01) return null; +x = (b1 * d2 - b2 * d1) / diff; +y = (a2 * d1 - d2 * a1) / diff; +z = 0; +} +var list = new JU.Lst(); +list.addLast(JU.P3.new3(x, y, z)); +nxn.normalize(); +list.addLast(nxn); +return list; +}, "JU.P4,JU.P4"); +c$.getIntersection = Clazz_defineMethod(c$, "getIntersection", +function(pt1, v, plane, ptRet, tempNorm, vTemp){ +JU.Measure.getPlaneProjection(pt1, plane, ptRet, tempNorm); +tempNorm.set(plane.x, plane.y, plane.z); +tempNorm.normalize(); +if (v == null) v = JU.V3.newV(tempNorm); +var l_dot_n = v.dot(tempNorm); +if (Math.abs(l_dot_n) < 0.01) return null; +vTemp.sub2(ptRet, pt1); +ptRet.scaleAdd2(vTemp.dot(tempNorm) / l_dot_n, v, pt1); +return ptRet; +}, "JU.P3,JU.V3,JU.P4,JU.P3,JU.V3,JU.V3"); +c$.calculateQuaternionRotation = Clazz_defineMethod(c$, "calculateQuaternionRotation", +function(centerAndPoints, retStddev){ +retStddev[1] = NaN; +var q = new JU.Quat(); +var ptsA = centerAndPoints[0]; +var ptsB = centerAndPoints[1]; +var nPts = ptsA.length - 1; +if (nPts < 2 || ptsA.length != ptsB.length) return q; +var Sxx = 0; +var Sxy = 0; +var Sxz = 0; +var Syx = 0; +var Syy = 0; +var Syz = 0; +var Szx = 0; +var Szy = 0; +var Szz = 0; +var ptA = new JU.P3(); +var ptB = new JU.P3(); +var ptA0 = ptsA[0]; +var ptB0 = ptsB[0]; +for (var i = nPts + 1; --i >= 1; ) { +ptA.sub2(ptsA[i], ptA0); +ptB.sub2(ptsB[i], ptB0); +Sxx += ptA.x * ptB.x; +Sxy += ptA.x * ptB.y; +Sxz += ptA.x * ptB.z; +Syx += ptA.y * ptB.x; +Syy += ptA.y * ptB.y; +Syz += ptA.y * ptB.z; +Szx += ptA.z * ptB.x; +Szy += ptA.z * ptB.y; +Szz += ptA.z * ptB.z; +} +retStddev[0] = JU.Measure.getRmsd(centerAndPoints, q); +var N = Clazz_newDoubleArray (4, 4, 0); +N[0][0] = Sxx + Syy + Szz; +N[0][1] = N[1][0] = Syz - Szy; +N[0][2] = N[2][0] = Szx - Sxz; +N[0][3] = N[3][0] = Sxy - Syx; +N[1][1] = Sxx - Syy - Szz; +N[1][2] = N[2][1] = Sxy + Syx; +N[1][3] = N[3][1] = Szx + Sxz; +N[2][2] = -Sxx + Syy - Szz; +N[2][3] = N[3][2] = Syz + Szy; +N[3][3] = -Sxx - Syy + Szz; +var v = (javajs.api.Interface.getInterface("JU.Eigen")).setM(N).getEigenvectorsFloatTransposed()[3]; +q = JU.Quat.newP4(JU.P4.new4(v[1], v[2], v[3], v[0])); +retStddev[1] = JU.Measure.getRmsd(centerAndPoints, q); +return q; +}, "~A,~A"); +c$.getTransformMatrix4 = Clazz_defineMethod(c$, "getTransformMatrix4", +function(ptsA, ptsB, m, centerA){ +var cptsA = JU.Measure.getCenterAndPoints(ptsA); +var cptsB = JU.Measure.getCenterAndPoints(ptsB); +var retStddev = Clazz_newFloatArray (2, 0); +var q = JU.Measure.calculateQuaternionRotation( Clazz_newArray(-1, [cptsA, cptsB]), retStddev); +var r = q.getMatrix(); +if (centerA == null) r.rotate(cptsA[0]); + else centerA.setT(cptsA[0]); +var t = JU.V3.newVsub(cptsB[0], cptsA[0]); +m.setMV(r, t); +return retStddev[1]; +}, "JU.Lst,JU.Lst,JU.M4,JU.P3"); +c$.getCenterAndPoints = Clazz_defineMethod(c$, "getCenterAndPoints", +function(vPts){ +var n = vPts.size(); +var pts = new Array(n + 1); +pts[0] = new JU.P3(); +if (n > 0) { +for (var i = 0; i < n; i++) { +pts[0].add(pts[i + 1] = vPts.get(i)); +} +pts[0].scale(1 / n); +}return pts; +}, "JU.Lst"); +c$.getRmsd = Clazz_defineMethod(c$, "getRmsd", +function(centerAndPoints, q){ +var sum2 = 0; +var ptsA = centerAndPoints[0]; +var ptsB = centerAndPoints[1]; +var cA = ptsA[0]; +var cB = ptsB[0]; +var n = ptsA.length - 1; +var ptAnew = new JU.P3(); +for (var i = n + 1; --i >= 1; ) { +ptAnew.sub2(ptsA[i], cA); +q.transform2(ptAnew, ptAnew).add(cB); +sum2 += ptAnew.distanceSquared(ptsB[i]); +} +return Math.sqrt(sum2 / n); +}, "~A,JU.Quat"); +c$.getBestLineThroughPoints = Clazz_defineMethod(c$, "getBestLineThroughPoints", +function(points, nPoints){ +if (nPoints <= 0) nPoints = points.length; +if (nPoints <= 2) { +return points; +}var ptA = new JU.P3(); +var unitVector = new JU.V3(); +var vTemp = new JU.V3(); +JU.Measure.calcBestAxisThroughPoints(points, nPoints, ptA, unitVector, vTemp, 8); +return JU.Measure.getProjectedLineSegment(points, nPoints, ptA, unitVector, vTemp); +}, "~A,~N"); +c$.getProjectedLineSegment = Clazz_defineMethod(c$, "getProjectedLineSegment", +function(points, nPoints, ptA, unitVector, vTemp){ +if (nPoints < 0) nPoints = points.length; +if (vTemp == null) vTemp = new JU.V3(); +var pmin = null; +var pmax = null; +var p; +var dmin = 3.4028235E38; +var dmax = -3.4028235E38; +for (var i = 0; i < points.length; i++) { +JU.Measure.projectOntoAxis(p = JU.P3.newP(points[i]), ptA, unitVector, vTemp); +var d = unitVector.dot(vTemp); +if (d < dmin) { +dmin = d; +pmin = p; +}if (d > dmax) { +dmax = d; +pmax = p; +}} +return Clazz_newArray(-1, [pmin, pmax]); +}, "~A,~N,JU.P3,JU.V3,JU.V3"); +c$.isInTriangle = Clazz_defineMethod(c$, "isInTriangle", +function(p, a, b, c, v0, v1, v2){ +v0.sub2(c, a); +v1.sub2(b, a); +v2.sub2(p, a); +var dot00 = v0.dot(v0); +var dot01 = v0.dot(v1); +var dot02 = v0.dot(v2); +var dot11 = v1.dot(v1); +var dot12 = v1.dot(v2); +var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); +var u = (dot11 * dot02 - dot01 * dot12) * invDenom; +var v = (dot00 * dot12 - dot01 * dot02) * invDenom; +return (u >= 0 && v >= 0 && u + v <= 1); +}, "JU.P3,JU.P3,JU.P3,JU.P3,JU.V3,JU.V3,JU.V3"); +c$.calcBestPlaneThroughPoints = Clazz_defineMethod(c$, "calcBestPlaneThroughPoints", +function(points, nPoints, plane){ +if (nPoints <= 0) { +nPoints = points.length; +}if (nPoints == 3) { +JU.Measure.getPlaneThroughPoints(points[0], points[1], points[2], null, null, plane); +return 0; +}var pmin = plane; +var plane2 = new JU.P4(); +var plane3; +var rmsd = JU.Measure.calcPlaneForMode(points, nPoints, plane, 'z'); +if (rmsd < 1e-6) return rmsd; +var f2 = JU.Measure.calcPlaneForMode(points, nPoints, plane2, 'y'); +if (f2 < rmsd) { +rmsd = f2; +pmin = plane2; +plane3 = plane; +} else { +plane3 = plane2; +}if (rmsd >= 1e-6) { +f2 = JU.Measure.calcPlaneForMode(points, nPoints, plane3, 'x'); +if (f2 < rmsd) { +rmsd = f2; +pmin = plane3; +}}if (pmin !== plane) { +plane.setT(pmin); +plane.w = pmin.w; +}return rmsd; +}, "~A,~N,JU.P4"); +c$.calcPlaneForMode = Clazz_defineMethod(c$, "calcPlaneForMode", +function(points, nPoints, plane, mode){ +var A = Clazz_newDoubleArray (nPoints, 3, 0); +var AT = Clazz_newDoubleArray (3, nPoints, 0); +var ATAT = Clazz_newDoubleArray (3, nPoints, 0); +var ATA1 = Clazz_newDoubleArray (3, 3, 0); +var B = Clazz_newDoubleArray (nPoints, 0); +for (var i = nPoints; --i >= 0; ) { +var p = points[i]; +A[i][0] = AT[0][i] = (mode == 'x' ? p.z : p.x); +A[i][1] = AT[1][i] = (mode == 'y' ? p.z : p.y); +A[i][2] = AT[2][i] = 1; +B[i] = -(mode == 'y' ? p.y : mode == 'x' ? p.x : p.z); +} +var m = new JU.M3(); +for (var i = 3; --i >= 0; ) { +for (var j = 3; --j >= 0; ) { +var d = 0; +for (var k = nPoints; --k >= 0; ) { +d += AT[i][k] * A[k][j]; +} +m.set33(i, j, d); +} +} +m.invert(); +for (var i = 3; --i >= 0; ) { +for (var j = 3; --j >= 0; ) { +ATA1[i][j] = m.get33(i, j); +} +} +for (var i = 3; --i >= 0; ) { +for (var k = nPoints; --k >= 0; ) { +var d = 0; +for (var j = 3; --j >= 0; ) { +d += ATA1[i][j] * AT[j][k]; +} +ATAT[i][k] = d; +} +} +switch ((mode).charCodeAt(0)) { +case 120: +plane.x = 1; +break; +case 121: +plane.y = 1; +break; +case 122: +plane.z = 1; +break; +} +var len2 = 1; +for (var j = 3; --j >= 0; ) { +var v = 0; +for (var k = nPoints; --k >= 0; ) { +v += ATAT[j][k] * B[k]; +} +switch (j) { +case 0: +len2 += v * v; +if (mode == 'x') plane.z = v; + else plane.x = v; +break; +case 1: +len2 += v * v; +if (mode == 'y') plane.z = v; + else plane.y = v; +break; +case 2: +plane.w = v; +} +} +var f = Math.sqrt(len2); +plane.scale4((1 / plane.w > 0 ? 1 : -1) / f); +var sum2 = 0; +for (var i = 0; i < nPoints; i++) { +var d = JU.Measure.distanceToPlane(plane, points[i]); +sum2 += d * d; +} +var ret = Math.sqrt(sum2 / nPoints); +return ret; +}, "~A,~N,JU.P4,~S"); +c$.rndPt = Clazz_defineMethod(c$, "rndPt", +function(){ +return JU.P3.new3(Math.random() * 20, (Math.random() * 20), (Math.random() * 20)); +}); +c$.testRnd = Clazz_defineMethod(c$, "testRnd", +function(){ +var plane = JU.P4.new4(Math.random() * 20, Math.random() * 20, Math.random() * 20, Math.random() * 20); +plane.scale4(1 / plane.length()); +System.out.println("\n==========\n "); +System.out.println("plane is " + plane); +var ptProj = new JU.P3(); +var vNorm = new JU.V3(); +var pts = new Array(4); +for (var i = 0; i < pts.length; i++) { +pts[i] = new JU.P3(); +var p = JU.Measure.rndPt(); +JU.Measure.getPlaneProjection(p, plane, ptProj, vNorm); +pts[i].setT(ptProj); +var d = Math.random() * 0.1; +pts[i].scaleAdd2(d, vNorm, ptProj); +System.out.println(pts[i] + " d=" + d); +} +var p2 = new JU.P4(); +var f = JU.Measure.calcBestPlaneThroughPoints(pts, -1, p2); +System.out.println("found " + p2 + " rmsd = " + f); +}); +c$.test = Clazz_defineMethod(c$, "test", +function(){ +for (var i = 0; i < 10; i++) JU.Measure.testRnd(); + +System.exit(0); +}); +c$.getPointsOnPlane = Clazz_defineMethod(c$, "getPointsOnPlane", +function(pts, plane){ +var ret = new JU.Lst(); +for (var i = pts.length; --i >= 0; ) { +var d = Math.abs(JU.Measure.distanceToPlane(plane, pts[i])); +if (d < 0.001) { +ret.addLast(pts[i]); +}} +return ret; +}, "~A,JU.P4"); +c$.getLatticePoints = Clazz_defineMethod(c$, "getLatticePoints", +function(cpts, h, k, l){ +cpts.addLast( new JU.P3()); +h = (h == 0 ? 1 : Math.abs(h)); +k = (k == 0 ? 1 : Math.abs(k)); +l = (l == 0 ? 1 : Math.abs(l)); +var n = cpts.size(); +for (var ih = -h; ih <= h; ih++) { +for (var ik = -k; ik <= k; ik++) { +for (var il = -l; il <= l; il++) { +for (var i = 0; i < n; i++) { +var pt = JU.P3.new3(ih, ik, il); +pt.add(cpts.get(i)); +cpts.addLast(pt); +} +} +} +} +for (var i = n; --i >= 0; ) cpts.removeItemAt(0); + +return cpts; +}, "JU.Lst,~N,~N,~N"); +c$.computeHelicalAxis = Clazz_defineMethod(c$, "computeHelicalAxis", +function(a, b, dq){ +var vab = new JU.V3(); +vab.sub2(b, a); +var theta = dq.getTheta(); +var n = dq.getNormal(); +var v_dot_n = vab.dot(n); +if (Math.abs(v_dot_n) < 0.0001) v_dot_n = 0; +var va_prime_d = new JU.V3(); +va_prime_d.cross(vab, n); +if (va_prime_d.dot(va_prime_d) != 0) va_prime_d.normalize(); +var vda = new JU.V3(); +var vcb = JU.V3.newV(n); +if (v_dot_n == 0) v_dot_n = 1.4E-45; +vcb.scale(v_dot_n); +vda.sub2(vcb, vab); +vda.scale(0.5); +va_prime_d.scale(theta == 0 ? 0 : (vda.length() / Math.tan(theta / 2 / 180 * 3.141592653589793))); +var r = JU.V3.newV(va_prime_d); +if (theta != 0) r.add(vda); +var pt_a_prime = JU.P3.newP(a); +pt_a_prime.sub(r); +if (v_dot_n != 1.4E-45) n.scale(v_dot_n); +var pt_b_prime = JU.P3.newP(pt_a_prime); +pt_b_prime.add(n); +theta = JU.Measure.computeTorsion(a, pt_a_prime, pt_b_prime, b, true); +if (Float.isNaN(theta) || r.length() < 0.0001) theta = dq.getThetaDirectedV(n); +var residuesPerTurn = Math.abs(theta == 0 ? 0 : 360 / theta); +var pitch = Math.abs(v_dot_n == 1.4E-45 ? 0 : n.length() * (theta == 0 ? 1 : 360 / theta)); +return Clazz_newArray(-1, [pt_a_prime, n, r, JU.P3.new3(theta, pitch, residuesPerTurn), pt_b_prime]); +}, "JU.P3,JU.P3,JU.Quat"); +c$.axisY = JU.V3.new3(0, 1, 0); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.MeshSurface", ["JU.AU", "$.P3", "J.api.Interface", "JU.BoxInfo", "$.C", "$.Geodesic", "$.TempArray"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.slicer = null; +this.oabc = null; +this.meshType = null; +this.vc = 0; +this.vs = null; +this.vvs = null; +this.vertexSource = null; +this.surfaceAtoms = null; +this.pc = 0; +this.pis = null; +this.colorsExplicit = false; +this.isDrawPolygon = false; +this.haveQuads = false; +this.colix = 0; +this.colixBack = 0; +this.isColorSolid = true; +this.offset = null; +this.altVertices = null; +this.pcs = null; +this.vcs = null; +this.normals = null; +this.normalsTemp = null; +this.normalCount = 0; +this.normixCount = 0; +this.bsPolygons = null; +this.mat4 = null; +this.surfaceSet = null; +this.vertexSets = null; +this.nSets = 0; +this.dataOnly = false; +this.lastColor = 0; +this.lastColix = 0; +this.iA = 0; +this.iB = 0; +this.iC = 0; +this.polygonCount0 = 0; +this.vertexCount0 = 0; +this.bsSlabDisplay = null; +this.bsSlabGhost = null; +this.slabMeshType = 0; +this.slabColix = 0; +this.bsDisplay = null; +this.slabOptions = null; +this.mergeVertexCount0 = 0; +this.mergePolygonCount0 = 0; +this.isMerged = false; +Clazz_instantialize(this, arguments);}, JU, "MeshSurface", null); +Clazz_defineMethod(c$, "getMeshSlicer", +function(){ +return (this.slicer == null ? this.slicer = (J.api.Interface.getInterface("JU.MeshSlicer", this.vwr, "script")).set(this) : this.slicer); +}); +c$.newMesh = Clazz_defineMethod(c$, "newMesh", +function(isAlt, vertices, vertexCount, polygonIndexes, normals, nNormals){ +var ms = new JU.MeshSurface(); +ms.pis = polygonIndexes; +if (isAlt) ms.altVertices = vertices; + else ms.vs = vertices; +ms.vc = (vertexCount == 0 ? vertices.length : vertexCount); +ms.normals = normals; +ms.normalCount = (nNormals == 0 && normals != null ? normals.length : nNormals); +return ms; +}, "~B,~A,~N,~A,~A,~N"); +Clazz_defineMethod(c$, "getVertices", +function(){ +return (this.altVertices == null ? this.vs : this.altVertices); +}); +Clazz_defineMethod(c$, "getFaces", +function(){ +return this.pis; +}); +Clazz_defineMethod(c$, "setColix", +function(colix){ +this.colix = colix; +}, "~N"); +Clazz_defineMethod(c$, "setColixBack", +function(colix){ +this.colixBack = colix; +}, "~N"); +Clazz_defineMethod(c$, "addV", +function(vertex, asCopy){ +if (this.vc == 0) this.vs = new Array(25); + else if (this.vc == this.vs.length) this.vs = JU.AU.doubleLength(this.vs); +this.vs[this.vc] = (asCopy ? JU.P3.newP(vertex) : vertex); +return this.vc++; +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "addTriangle", +function(vertexA, vertexB, vertexC){ +this.addPolygon( Clazz_newIntArray(-1, [vertexA, vertexB, vertexC]), null); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "addQuad", +function(vertexA, vertexB, vertexC, vertexD){ +this.haveQuads = true; +this.addPolygon( Clazz_newIntArray(-1, [vertexA, vertexB, vertexC, vertexD]), null); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setPolygonCount", +function(polygonCount){ +this.pc = polygonCount; +if (polygonCount < 0) return; +if (this.pis == null || polygonCount > this.pis.length) this.pis = JU.AU.newInt2(polygonCount); +}, "~N"); +Clazz_defineMethod(c$, "addVCVal", +function(vertex, value, asCopy){ +if (this.vc == 0) this.vvs = Clazz_newFloatArray (25, 0); + else if (this.vc >= this.vvs.length) this.vvs = JU.AU.doubleLengthF(this.vvs); +this.vvs[this.vc] = value; +return this.addV(vertex, asCopy); +}, "JU.T3,~N,~B"); +Clazz_defineMethod(c$, "addTriangleCheck", +function(vertexA, vertexB, vertexC, check, iContour, color){ +return (this.vs == null || this.vvs != null && (Float.isNaN(this.vvs[vertexA]) || Float.isNaN(this.vvs[vertexB]) || Float.isNaN(this.vvs[vertexC])) || Float.isNaN(this.vs[vertexA].x) || Float.isNaN(this.vs[vertexB].x) || Float.isNaN(this.vs[vertexC].x) ? -1 : this.addPolygonV3(vertexA, vertexB, vertexC, check, iContour, color, null)); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "addPolygonV3", +function(vertexA, vertexB, vertexC, check, iContour, color, bs){ +return (this.dataOnly ? this.addPolygon( Clazz_newIntArray(-1, [vertexA, vertexB, vertexC, check]), bs) : this.addPolygonC( Clazz_newIntArray(-1, [vertexA, vertexB, vertexC, check, iContour]), color, bs, (iContour < 0))); +}, "~N,~N,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "addPolygonC", +function(polygon, color, bs, isExplicit){ +if (color != 0) { +if (this.pcs == null || this.pc == 0) this.lastColor = 0; +if (isExplicit) { +this.colorsExplicit = true; +} else { +if (this.pcs == null) { +this.pcs = Clazz_newShortArray (25, 0); +} else if (this.pc >= this.pcs.length) { +this.pcs = JU.AU.doubleLengthShort(this.pcs); +}this.pcs[this.pc] = (isExplicit ? 2047 : color == this.lastColor ? this.lastColix : (this.lastColix = JU.C.getColix(this.lastColor = color))); +}}return this.addPolygon(polygon, bs); +}, "~A,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "addPolygon", +function(polygon, bs){ +var n = this.pc; +if (n == 0) this.pis = JU.AU.newInt2(25); + else if (n == this.pis.length) this.pis = JU.AU.doubleLength(this.pis); +if (bs != null) bs.set(n); +this.pis[this.pc++] = polygon; +return n; +}, "~A,JU.BS"); +Clazz_defineMethod(c$, "invalidatePolygons", +function(){ +for (var i = this.pc; --i >= this.mergePolygonCount0; ) if ((this.bsSlabDisplay == null || this.bsSlabDisplay.get(i)) && this.setABC(i) == null) this.pis[i] = null; + +}); +Clazz_defineMethod(c$, "setABC", +function(i){ +if (this.bsSlabDisplay != null && !this.bsSlabDisplay.get(i) && (this.bsSlabGhost == null || !this.bsSlabGhost.get(i))) return null; +var polygon = this.pis[i]; +if (polygon == null || polygon.length < 3) return null; +this.iA = polygon[0]; +this.iB = polygon[1]; +this.iC = polygon[2]; +return (this.vvs == null || !Float.isNaN(this.vvs[this.iA]) && !Float.isNaN(this.vvs[this.iB]) && !Float.isNaN(this.vvs[this.iC]) ? polygon : null); +}, "~N"); +Clazz_defineMethod(c$, "setTranslucentVertices", +function(bsVertices){ +}, "JU.BS"); +Clazz_defineMethod(c$, "getSlabColor", +function(){ +return (this.bsSlabGhost == null ? null : JU.C.getHexCode(this.slabColix)); +}); +Clazz_defineMethod(c$, "getSlabType", +function(){ +return (this.bsSlabGhost != null && this.slabMeshType == 1073742018 ? "mesh" : null); +}); +Clazz_defineMethod(c$, "resetSlab", +function(){ +if (this.slicer != null) this.slicer.slabPolygons(JU.TempArray.getSlabObjectType(1073742333, null, false, null), false); +}); +Clazz_defineMethod(c$, "slabPolygonsList", +function(slabInfo, allowCap){ +this.getMeshSlicer(); +for (var i = 0; i < slabInfo.size(); i++) if (!this.slicer.slabPolygons(slabInfo.get(i), allowCap)) break; + +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "slabBrillouin", +function(unitCellVectors){ +return; +}, "~A"); +Clazz_defineMethod(c$, "getResolution", +function(){ +return 0; +}); +c$.getSphereData = Clazz_defineMethod(c$, "getSphereData", +function(lvl){ +JU.Geodesic.createGeodesic(lvl); +var vertexCount = JU.Geodesic.getVertexCount(lvl); +var f = JU.Geodesic.getFaceVertexes(lvl); +var nFaces = Clazz_doubleToInt(f.length / 3); +var faces = JU.AU.newInt2(nFaces); +for (var i = 0, fpt = 0; i < nFaces; i++) { +faces[i] = Clazz_newIntArray(-1, [f[fpt++], f[fpt++], f[fpt++]]); +} +var vectors = new Array(vertexCount); +for (var i = 0; i < vertexCount; i++) vectors[i] = JU.Geodesic.getVertexVector(i); + +return JU.MeshSurface.newMesh(true, vectors, 0, faces, vectors, 0); +}, "~N"); +Clazz_defineMethod(c$, "setBox", +function(xyzMin, xyzMax){ +xyzMin.set(3.4028235E38, 3.4028235E38, 3.4028235E38); +xyzMax.set(-3.4028235E38, -3.4028235E38, -3.4028235E38); +for (var i = 0; i < this.vc; i++) { +var p = this.vs[i]; +if (!Float.isNaN(p.x)) JU.BoxInfo.addPoint(p, xyzMin, xyzMax, 0); +} +}, "JU.P3,JU.P3"); +Clazz_defineMethod(c$, "setBoundingBox", +function(boundBoxPoints){ +}, "~A"); +c$.getSphericalInterpolationFraction = Clazz_defineMethod(c$, "getSphericalInterpolationFraction", +function(r, valueA, valueB, d){ +var ra = Math.abs(r + valueA) / d; +var rb = Math.abs(r + valueB) / d; +r /= d; +var ra2 = ra * ra; +var q = ra2 - rb * rb + 1; +var p = 4 * (r * r - ra2); +var factor = (ra < rb ? 1 : -1); +return (((q) + factor * Math.sqrt(q * q + p)) / 2); +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Geodesic"], "JU.Normix", ["JU.BS"], function(){ +var c$ = Clazz_declareType(JU, "Normix", null); +c$.getNormixCount = Clazz_defineMethod(c$, "getNormixCount", +function(){ +return (JU.Normix.normixCount > 1 ? JU.Normix.normixCount : (JU.Normix.normixCount = JU.Geodesic.getVertexCount(3))); +}); +c$.newVertexBitSet = Clazz_defineMethod(c$, "newVertexBitSet", +function(){ +return JU.BS.newN(JU.Normix.getNormixCount()); +}); +c$.getVertexVectors = Clazz_defineMethod(c$, "getVertexVectors", +function(){ +if (JU.Normix.vertexVectors == null) JU.Normix.vertexVectors = JU.Geodesic.getVertexVectors(); +return JU.Normix.vertexVectors; +}); +c$.setInverseNormixes = Clazz_defineMethod(c$, "setInverseNormixes", +function(){ +if (JU.Normix.inverseNormixes != null) return; +JU.Normix.getNormixCount(); +JU.Normix.getVertexVectors(); +JU.Normix.inverseNormixes = Clazz_newShortArray (JU.Normix.normixCount, 0); +var bsTemp = new JU.BS(); +for (var n = JU.Normix.normixCount; --n >= 0; ) { +var v = JU.Normix.vertexVectors[n]; +JU.Normix.inverseNormixes[n] = JU.Normix.getNormix(-v.x, -v.y, -v.z, 3, bsTemp); +} +}); +c$.getInverseNormix = Clazz_defineMethod(c$, "getInverseNormix", +function(normix){ +return JU.Normix.inverseNormixes[normix]; +}, "~N"); +c$.getNeighborVertexArrays = Clazz_defineMethod(c$, "getNeighborVertexArrays", +function(){ +if (JU.Normix.neighborVertexesArrays == null) { +JU.Normix.neighborVertexesArrays = JU.Geodesic.getNeighborVertexesArrays(); +}return JU.Normix.neighborVertexesArrays; +}); +c$.getNormixV = Clazz_defineMethod(c$, "getNormixV", +function(v, bsTemp){ +return JU.Normix.getNormix(v.x, v.y, v.z, 3, bsTemp); +}, "JU.V3,JU.BS"); +c$.get2SidedNormix = Clazz_defineMethod(c$, "get2SidedNormix", +function(v, bsTemp){ +return ~JU.Normix.getNormixV(v, bsTemp); +}, "JU.V3,JU.BS"); +c$.getNormix = Clazz_defineMethod(c$, "getNormix", +function(x, y, z, geodesicLevel, bsConsidered){ +var champion; +var t; +if (z >= 0) { +champion = 0; +t = z - 1; +} else { +champion = 11; +t = z - (-1); +}bsConsidered.clearAll(); +bsConsidered.set(champion); +JU.Normix.getVertexVectors(); +JU.Normix.getNeighborVertexArrays(); +var championDist2 = x * x + y * y + t * t; +for (var lvl = 0; lvl <= geodesicLevel; ++lvl) { +var neighborVertexes = JU.Normix.neighborVertexesArrays[lvl]; +for (var offsetNeighbors = 6 * champion, i = offsetNeighbors + (champion < 12 ? 5 : 6); --i >= offsetNeighbors; ) { +var challenger = neighborVertexes[i]; +if (bsConsidered.get(challenger)) continue; +bsConsidered.set(challenger); +var v = JU.Normix.vertexVectors[challenger]; +var d; +d = v.x - x; +var d2 = d * d; +if (d2 >= championDist2) continue; +d = v.y - y; +d2 += d * d; +if (d2 >= championDist2) continue; +d = v.z - z; +d2 += d * d; +if (d2 >= championDist2) continue; +champion = challenger; +championDist2 = d2; +} +} +return champion; +}, "~N,~N,~N,~N,JU.BS"); +c$.normixCount = 0; +c$.vertexVectors = null; +c$.inverseNormixes = null; +c$.neighborVertexesArrays = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Parser", ["JU.PT"], function(){ +var c$ = Clazz_declareType(JU, "Parser", null); +c$.parseStringInfestedFloatArray = Clazz_defineMethod(c$, "parseStringInfestedFloatArray", +function(str, bs, data){ +return JU.Parser.parseFloatArrayBsData(JU.PT.getTokens(str), bs, data); +}, "~S,JU.BS,~A"); +c$.parseFloatArrayBsData = Clazz_defineMethod(c$, "parseFloatArrayBsData", +function(tokens, bs, data){ +var len = data.length; +var nTokens = tokens.length; +var n = 0; +var max = 0; +var haveBitSet = (bs != null); +for (var i = (haveBitSet ? bs.nextSetBit(0) : 0); i >= 0 && i < len && n < nTokens; i = (haveBitSet ? bs.nextSetBit(i + 1) : i + 1)) { +var f; +while (Float.isNaN(f = JU.PT.parseFloat(tokens[n++])) && n < nTokens) { +} +if (!Float.isNaN(f)) data[(max = i)] = f; +if (n == nTokens) break; +} +return max + 1; +}, "~A,JU.BS,~A"); +c$.parseFloatArrayFromMatchAndField = Clazz_defineMethod(c$, "parseFloatArrayFromMatchAndField", +function(str, bs, fieldMatch, fieldMatchColumnCount, matchData, field, fieldColumnCount, data, firstLine){ +var f; +var i = -1; +var isMatch = (matchData != null); +var lines = JU.Parser.markLines(str, (str.indexOf('\n') >= 0 ? '\n' : ';')); +var iLine = (firstLine <= 1 || firstLine >= lines.length ? 0 : firstLine - 1); +var pt = (iLine == 0 ? 0 : lines[iLine - 1]); +var nLines = lines.length; +if (data == null) data = Clazz_newFloatArray (nLines - iLine, 0); +var len = data.length; +var minLen = (fieldColumnCount <= 0 ? Math.max(field, fieldMatch) : Math.max(field + fieldColumnCount, fieldMatch + fieldMatchColumnCount) - 1); +var haveBitSet = (bs != null); +for (; iLine < nLines; iLine++) { +var line = str.substring(pt, lines[iLine]).trim(); +pt = lines[iLine]; +var tokens = (fieldColumnCount <= 0 ? JU.PT.getTokens(line) : null); +if (fieldColumnCount <= 0) { +if (tokens.length < minLen || Float.isNaN(f = JU.PT.parseFloat(tokens[field - 1]))) continue; +} else { +if (line.length < minLen || Float.isNaN(f = JU.PT.parseFloat(line.substring(field - 1, field + fieldColumnCount - 1)))) continue; +}var iData; +if (isMatch) { +iData = JU.PT.parseInt(tokens == null ? line.substring(fieldMatch - 1, fieldMatch + fieldMatchColumnCount - 1) : tokens[fieldMatch - 1]); +if (iData == -2147483648 || iData < 0 || iData >= len || (iData = matchData[iData]) < 0) continue; +if (haveBitSet) bs.set(iData); +} else { +if (haveBitSet) i = bs.nextSetBit(i + 1); + else i++; +if (i < 0 || i >= len) return data; +iData = i; +}data[iData] = f; +} +return data; +}, "~S,JU.BS,~N,~N,~A,~N,~N,~A,~N"); +c$.fixDataString = Clazz_defineMethod(c$, "fixDataString", +function(str){ +str = str.$replace(';', str.indexOf('\n') < 0 ? '\n' : ' '); +str = JU.PT.trim(str, "\n \t"); +str = JU.PT.rep(str, "\n ", "\n"); +str = JU.PT.rep(str, "\n\n", "\n"); +return str; +}, "~S"); +c$.markLines = Clazz_defineMethod(c$, "markLines", +function(data, eol){ +var nLines = 0; +for (var i = data.length; --i >= 0; ) if (data.charAt(i) == eol) nLines++; + +var lines = Clazz_newIntArray (nLines + 1, 0); +nLines = 0; +var pt = 0; +while ((pt = data.indexOf(eol, pt)) >= 0) lines[nLines++] = ++pt; + +lines[nLines] = data.length; +return lines; +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P3"], "JU.Point3fi", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mi = -1; +this.i = 0; +this.sX = 0; +this.sY = 0; +this.sZ = 0; +this.sD = -1; +Clazz_instantialize(this, arguments);}, JU, "Point3fi", JU.P3, Cloneable); +Clazz_defineMethod(c$, "copy", +function(){ +try { +return this.clone(); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.width = 0; +this.height = 0; +Clazz_instantialize(this, arguments);}, JU, "Rectangle", null); +Clazz_defineMethod(c$, "contains", +function(X, Y){ +return (X >= this.x && Y >= this.y && X - this.x < this.width && Y - this.y < this.height); +}, "~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Rgb16", ["JU.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.r = 0; +this.g = 0; +this.b = 0; +Clazz_instantialize(this, arguments);}, JU, "Rgb16", null); +/*LV!1824 unnec constructor*/c$.newI = Clazz_defineMethod(c$, "newI", +function(argb){ +var c = new JU.Rgb16(); +c.setInt(argb); +return c; +}, "~N"); +Clazz_defineMethod(c$, "setInt", +function(a){ +this.r = ((a >> 8) & 0xFF00) | 0x80; +this.g = ((a) & 0xFF00) | 0x80; +this.b = ((a << 8) & 0xFF00) | 0x80; +}, "~N"); +Clazz_defineMethod(c$, "setRgb", +function(a){ +this.r = a.r; +this.g = a.g; +this.b = a.b; +}, "JU.Rgb16"); +Clazz_defineMethod(c$, "diffDiv", +function(a, b, divisor){ +this.r = Clazz_doubleToInt((a.r - b.r) / divisor); +this.g = Clazz_doubleToInt((a.g - b.g) / divisor); +this.b = Clazz_doubleToInt((a.b - b.b) / divisor); +}, "JU.Rgb16,JU.Rgb16,~N"); +Clazz_defineMethod(c$, "setAndIncrement", +function(base, inc){ +this.r = base.r; +base.r += inc.r; +this.g = base.g; +base.g += inc.g; +this.b = base.b; +base.b += inc.b; +}, "JU.Rgb16,JU.Rgb16"); +Clazz_defineMethod(c$, "getArgb", +function(){ +return (0xFF000000 | ((this.r << 8) & 0x00FF0000) | (this.g & 0x0000FF00) | (this.b >> 8)); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return new JU.SB().append("Rgb16(").appendI(this.r).appendC(',').appendI(this.g).appendC(',').appendI(this.b).append(" -> ").appendI((this.r >> 8) & 0xFF).appendC(',').appendI((this.g >> 8) & 0xFF).appendC(',').appendI((this.b >> 8) & 0xFF).appendC(')').toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.AU", "$.V3"], "JU.Shader", ["JU.CU", "JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xLight = 0; +this.yLight = 0; +this.zLight = 0; +this.lightSource = null; +this.specularOn = true; +this.usePhongExponent = false; +this.ambientPercent = 45; +this.diffusePercent = 84; +this.specularExponent = 6; +this.specularPercent = 22; +this.specularPower = 40; +this.phongExponent = 64; +this.ambientFraction = 0; +this.diffuseFactor = 0; +this.intenseFraction = 0; +this.specularFactor = 0; +this.ashades = null; +this.ashadesGreyscale = null; +this.celOn = false; +this.celPower = 10; +this.celRGB = 0; +this.celZ = 0; +this.useLight = false; +this.sphereShadeIndexes = null; +this.seed = 0x12345679; +this.sphereShapeCache = null; +this.ellipsoidShades = null; +this.nOut = 0; +this.nIn = 0; +Clazz_instantialize(this, arguments);}, JU, "Shader", null); +Clazz_prepareFields (c$, function(){ +this.lightSource = new JU.V3(); +this.ambientFraction = this.ambientPercent / 100; +this.diffuseFactor = this.diffusePercent / 100; +this.intenseFraction = this.specularPower / 100; +this.specularFactor = this.specularPercent / 100; +this.ashades = JU.AU.newInt2(128); +this.sphereShadeIndexes = Clazz_newByteArray (65536, 0); +this.sphereShapeCache = JU.AU.newInt2(128); +}); +Clazz_makeConstructor(c$, +function(){ +this.setLightSource(-1.0, -1.0, 2.5); +}); +Clazz_defineMethod(c$, "setLightSource", +function(x, y, z){ +this.lightSource.set(x, y, z); +this.lightSource.normalize(); +this.xLight = this.lightSource.x; +this.yLight = this.lightSource.y; +this.zLight = this.lightSource.z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setCel", +function(celShading, celShadingPower, argb){ +celShading = celShading && celShadingPower != 0; +argb = JU.C.getArgb(JU.C.getBgContrast(argb)); +argb = (argb == 0xFF000000 ? 0xFF040404 : argb == -1 ? -2 : argb + 1); +if (this.celOn == celShading && this.celRGB == argb && this.celPower == celShadingPower) return; +this.celOn = celShading; +this.celPower = celShadingPower; +this.useLight = (!this.celOn || celShadingPower > 0); +this.celZ = 1 - Math.pow(2, -Math.abs(celShadingPower) / 10); +this.celRGB = argb; +this.flushCaches(); +}, "~B,~N,~N"); +Clazz_defineMethod(c$, "flushCaches", +function(){ +this.checkShades(JU.C.colixMax); +for (var i = JU.C.colixMax; --i >= 0; ) this.ashades[i] = null; + +this.calcSphereShading(); +for (var i = 128; --i >= 0; ) this.sphereShapeCache[i] = null; + +this.ellipsoidShades = null; +}); +Clazz_defineMethod(c$, "setLastColix", +function(argb, asGrey){ +JU.C.allocateColix(argb, true); +this.checkShades(2047); +if (asGrey) JU.C.setLastGrey(argb); +this.ashades[2047] = this.getShades2(argb, false); +}, "~N,~B"); +Clazz_defineMethod(c$, "getShades", +function(colix){ +this.checkShades(JU.C.colixMax); +colix &= -30721; +var shades = this.ashades[colix]; +if (shades == null) shades = this.ashades[colix] = this.getShades2(JU.C.argbs[colix], false); +return shades; +}, "~N"); +Clazz_defineMethod(c$, "getShadesG", +function(colix){ +this.checkShades(JU.C.colixMax); +colix &= -30721; +if (this.ashadesGreyscale == null) this.ashadesGreyscale = JU.AU.newInt2(this.ashades.length); +var shadesGreyscale = this.ashadesGreyscale[colix]; +if (shadesGreyscale == null) shadesGreyscale = this.ashadesGreyscale[colix] = this.getShades2(JU.C.argbs[colix], true); +return shadesGreyscale; +}, "~N"); +Clazz_defineMethod(c$, "checkShades", +function(n){ +if (this.ashades != null && this.ashades.length >= n) return; +if (n == 2047) n++; +this.ashades = JU.AU.arrayCopyII(this.ashades, n); +if (this.ashadesGreyscale != null) this.ashadesGreyscale = JU.AU.arrayCopyII(this.ashadesGreyscale, n); +}, "~N"); +Clazz_defineMethod(c$, "getShades2", +function(rgb, greyScale){ +var shades = Clazz_newIntArray (64, 0); +if (rgb == 0) return shades; +var red0 = ((rgb >> 16) & 0xFF); +var grn0 = ((rgb >> 8) & 0xFF); +var blu0 = (rgb & 0xFF); +var red = 0; +var grn = 0; +var blu = 0; +var f = this.ambientFraction; +while (true) { +red = red0 * f + 0.5; +grn = grn0 * f + 0.5; +blu = blu0 * f + 0.5; +if (f > 0 && red < 4 && grn < 4 && blu < 4) { +red0++; +grn0++; +blu0++; +if (f < 0.1) f += 0.1; +rgb = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red0)), Clazz_doubleToInt(Math.floor(grn0)), Clazz_doubleToInt(Math.floor(blu0))); +continue; +}break; +} +var i = 0; +f = (1 - f) / 52; +var redStep = red0 * f; +var grnStep = grn0 * f; +var bluStep = blu0 * f; +if (this.celOn) { +var max = 32; +var _rgb = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red)), Clazz_doubleToInt(Math.floor(grn)), Clazz_doubleToInt(Math.floor(blu))); +if (this.celPower >= 0) for (; i < max; ++i) shades[i] = _rgb; + +red += redStep * max; +grn += grnStep * max; +blu += bluStep * max; +_rgb = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red)), Clazz_doubleToInt(Math.floor(grn)), Clazz_doubleToInt(Math.floor(blu))); +for (; i < 64; i++) shades[i] = _rgb; + +shades[0] = shades[1] = this.celRGB; +} else { +for (; i < 52; ++i) { +shades[i] = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red)), Clazz_doubleToInt(Math.floor(grn)), Clazz_doubleToInt(Math.floor(blu))); +red += redStep; +grn += grnStep; +blu += bluStep; +} +shades[i++] = rgb; +f = this.intenseFraction / (64 - i); +redStep = (255.5 - red) * f; +grnStep = (255.5 - grn) * f; +bluStep = (255.5 - blu) * f; +for (; i < 64; i++) { +red += redStep; +grn += grnStep; +blu += bluStep; +shades[i] = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red)), Clazz_doubleToInt(Math.floor(grn)), Clazz_doubleToInt(Math.floor(blu))); +} +}if (greyScale) for (; --i >= 0; ) shades[i] = JU.CU.toFFGGGfromRGB(shades[i]); + +return shades; +}, "~N,~B"); +Clazz_defineMethod(c$, "getShadeIndex", +function(x, y, z){ +var magnitude = Math.sqrt(x * x + y * y + z * z); +return Math.round(this.getShadeF((x / magnitude), (y / magnitude), (z / magnitude)) * 63); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeB", +function(x, y, z){ +return Math.round(this.getShadeF(x, y, z) * 63); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeFp8", +function(x, y, z){ +var magnitude = Math.sqrt(x * x + y * y + z * z); +return Clazz_doubleToInt(Math.floor(this.getShadeF((x / magnitude), (y / magnitude), (z / magnitude)) * 63 * (256))); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeF", +function(x, y, z){ +var NdotL = (this.useLight ? x * this.xLight + y * this.yLight + z * this.zLight : z); +if (NdotL <= 0) return 0; +var intensity = NdotL * this.diffuseFactor; +if (this.specularOn) { +var k_specular = 2 * NdotL * z - this.zLight; +if (k_specular > 0) { +if (this.usePhongExponent) { +k_specular = Math.pow(k_specular, this.phongExponent); +} else { +for (var n = this.specularExponent; --n >= 0 && k_specular > .0001; ) k_specular *= k_specular; + +}intensity += k_specular * this.specularFactor; +}}return (this.celOn && z < this.celZ ? 0 : intensity > 1 ? 1 : intensity); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeN", +function(x, y, z, r){ +var fp8ShadeIndex = Clazz_doubleToInt(Math.floor(this.getShadeF(x / r, y / r, z / r) * 63 * (256))); +var shadeIndex = fp8ShadeIndex >> 8; +if (!this.useLight) return shadeIndex; +if ((fp8ShadeIndex & 0xFF) > this.nextRandom8Bit()) ++shadeIndex; +var random16bit = this.seed & 0xFFFF; +if (random16bit < 21845 && shadeIndex > 0) --shadeIndex; + else if (random16bit > 43690 && shadeIndex < 63) ++shadeIndex; +return shadeIndex; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "calcSphereShading", +function(){ +var xF = -127.5; +var r2 = 16900; +for (var i = 0; i < 256; ++xF, ++i) { +var yF = -127.5; +var xF2 = xF * xF; +for (var j = 0; j < 256; ++yF, ++j) { +var shadeIndex = 0; +var z2 = r2 - xF2 - yF * yF; +if (z2 > 0) { +var z = Math.sqrt(z2); +shadeIndex = this.getShadeN(xF, yF, z, 130); +}this.sphereShadeIndexes[(j << 8) + i] = shadeIndex; +} +} +}); +Clazz_defineMethod(c$, "nextRandom8Bit", +function(){ +var t = this.seed; +this.seed = t = ((t << 16) + (t << 1) + t) & 0x7FFFFFFF; +return t >> 23; +}); +Clazz_defineMethod(c$, "getEllipsoidShade", +function(x, y, z, radius, mDeriv){ +var tx = mDeriv.m00 * x + mDeriv.m01 * y + mDeriv.m02 * z + mDeriv.m03; +var ty = mDeriv.m10 * x + mDeriv.m11 * y + mDeriv.m12 * z + mDeriv.m13; +var tz = mDeriv.m20 * x + mDeriv.m21 * y + mDeriv.m22 * z + mDeriv.m23; +var f = Math.min(radius / 2, 45) / Math.sqrt(tx * tx + ty * ty + tz * tz); +var i = Clazz_floatToInt(-tx * f); +var j = Clazz_floatToInt(-ty * f); +var k = Clazz_floatToInt(tz * f); +var outside = i < -20 || i >= 20 || j < -20 || j >= 20 || k < 0 || k >= 40; +if (outside) { +while (i % 2 == 0 && j % 2 == 0 && k % 2 == 0 && i + j + k > 0) { +i >>= 1; +j >>= 1; +k >>= 1; +} +outside = i < -20 || i >= 20 || j < -20 || j >= 20 || k < 0 || k >= 40; +}if (outside) this.nOut++; + else this.nIn++; +return (outside ? this.getShadeIndex(i, j, k) : this.ellipsoidShades[i + 20][j + 20][k]); +}, "~N,~N,~N,~N,JU.M4"); +Clazz_defineMethod(c$, "createEllipsoidShades", +function(){ +this.ellipsoidShades = Clazz_newByteArray (40, 40, 40, 0); +for (var ii = 0; ii < 40; ii++) for (var jj = 0; jj < 40; jj++) for (var kk = 0; kk < 40; kk++) this.ellipsoidShades[ii][jj][kk] = this.getShadeIndex(ii - 20, jj - 20, kk); + + + +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JV.Viewer"], "JU.SimpleUnitCell", ["JU.AU", "$.M4", "$.P3", "$.P4", "$.PT", "$.V3", "JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.unitCellParams = null; +this.slop = 0; +this.matrixCartesianToFractional = null; +this.matrixFractionalToCartesian = null; +this.matrixCtoFNoOffset = null; +this.matrixFtoCNoOffset = null; +this.volume = 0; +this.dimension = 3; +this.fractionalOrigin = null; +this.na = 0; +this.nb = 0; +this.nc = 0; +this.a = 0; +this.b = 0; +this.c = 0; +this.alpha = 0; +this.beta = 0; +this.gamma = 0; +this.cosAlpha = 0; +this.sinAlpha = 0; +this.cosBeta = 0; +this.sinBeta = 0; +this.cosGamma = 0; +this.sinGamma = 0; +this.cA_ = 0; +this.cB_ = 0; +this.a_ = 0; +this.b_ = 0; +this.c_ = 0; +Clazz_instantialize(this, arguments);}, JU, "SimpleUnitCell", null); +Clazz_prepareFields (c$, function(){ +this.slop = (JV.Viewer.isHighPrecision ? 1.0E-12 : 1.0E-4); +}); +Clazz_makeConstructor(c$, +function(){ +this.fractionalOrigin = new JU.P3(); +}); +Clazz_defineMethod(c$, "getPrecision", +function(){ +return this.slop; +}); +Clazz_defineMethod(c$, "setPrecision", +function(slop){ +this.unitCellParams[26] = this.slop = (!Float.isNaN(slop) ? slop : !Float.isNaN(this.unitCellParams[26]) ? this.unitCellParams[26] : JV.Viewer.isHighPrecision ? 1.0E-12 : 1.0E-4); +}, "~N"); +Clazz_defineMethod(c$, "isSupercell", +function(){ +return (this.na > 1 || this.nb > 1 || this.nc > 1); +}); +c$.isValid = Clazz_defineMethod(c$, "isValid", +function(parameters){ +return (parameters != null && (parameters[0] > 0 || parameters.length > 14 && !Float.isNaN(parameters[14]))); +}, "~A"); +c$.newA = Clazz_defineMethod(c$, "newA", +function(params){ +var c = new JU.SimpleUnitCell(); +c.init(params); +return c; +}, "~A"); +c$.getDimensionFromParams = Clazz_defineMethod(c$, "getDimensionFromParams", +function(params){ +return (params[0] <= 0 ? 3 : params[1] < 0 ? 1 : params[2] < 0 ? 2 : 3); +}, "~A"); +Clazz_defineMethod(c$, "init", +function(params){ +if (params == null) params = Clazz_newFloatArray(-1, [1, 1, 1, 90, 90, 90]); +if (!JU.SimpleUnitCell.isValid(params)) return; +this.unitCellParams = JU.SimpleUnitCell.newParams(params, NaN); +var rotateHex = false; +this.dimension = JU.SimpleUnitCell.getDimensionFromParams(params); +this.a = params[0]; +this.b = params[1]; +this.c = params[2]; +this.alpha = params[3]; +this.beta = params[4]; +this.gamma = params[5]; +if (this.gamma == -1 && this.c > 0) { +rotateHex = true; +this.gamma = 120; +}if (params.length > 26) { +if (Float.isNaN(params[26])) { +params[26] = this.slop; +} else { +this.slop = params[26]; +}}var fa = this.na = Math.max(1, params.length > 24 && !Float.isNaN(params[22]) ? Clazz_floatToInt(params[22]) : 1); +var fb = this.nb = Math.max(1, params.length > 24 && !Float.isNaN(params[23]) ? Clazz_floatToInt(params[23]) : 1); +var fc = this.nc = Math.max(1, params.length > 24 && !Float.isNaN(params[24]) ? Clazz_floatToInt(params[24]) : 1); +if (params.length > 25 && !Float.isNaN(params[25])) { +var fScale = params[25]; +if (fScale > 0) { +fa *= fScale; +fb *= fScale; +fc *= fScale; +}} else { +fa = fb = fc = 1; +}if (this.a <= 0 && this.c <= 0) { +var va = JU.SimpleUnitCell.newV(params, 6); +var vb = JU.SimpleUnitCell.newV(params, 9); +var vc = JU.SimpleUnitCell.newV(params, 12); +this.setABC(va, vb, vc); +if (this.c < 0) { +var n = JU.AU.arrayCopyF(params, -1); +if (this.b < 0) { +vb.set(0, 0, 1); +vb.cross(vb, va); +if (vb.length() < 0.001) vb.set(0, 1, 0); +vb.normalize(); +n[9] = vb.x; +n[10] = vb.y; +n[11] = vb.z; +}if (this.c < 0) { +vc.cross(va, vb); +vc.normalize(); +n[12] = vc.x; +n[13] = vc.y; +n[14] = vc.z; +}params = n; +}}this.a *= fa; +if (this.b <= 0) { +this.b = this.c = 1; +} else if (this.c <= 0) { +this.c = 1; +this.b *= fb; +} else { +this.b *= fb; +this.c *= fc; +}this.setCellParams(); +if (params.length > 21 && !Float.isNaN(params[21])) { +var scaleMatrix = Clazz_newFloatArray (16, 0); +for (var i = 0; i < 16; i++) { +var f; +switch (i % 4) { +case 0: +f = fa; +break; +case 1: +f = fb; +break; +case 2: +f = fc; +break; +default: +f = 1; +break; +} +scaleMatrix[i] = params[6 + i] * f; +} +this.matrixCartesianToFractional = JU.M4.newA16(scaleMatrix); +this.matrixCartesianToFractional.getTranslation(this.fractionalOrigin); +this.matrixFractionalToCartesian = JU.M4.newM4(this.matrixCartesianToFractional).invert(); +if (params[0] == 1) this.setParamsFromMatrix(); +} else if (params.length > 14 && !Float.isNaN(params[14])) { +var m = this.matrixFractionalToCartesian = new JU.M4(); +m.setColumn4(0, params[6] * fa, params[7] * fa, params[8] * fa, 0); +m.setColumn4(1, params[9] * fb, params[10] * fb, params[11] * fb, 0); +m.setColumn4(2, params[12] * fc, params[13] * fc, params[14] * fc, 0); +if (params.length > 17 && !Float.isNaN(params[17])) { +m.setColumn4(3, params[15], params[16], params[17], 1); +} else { +m.setColumn4(3, 0, 0, 0, 1); +}this.matrixCartesianToFractional = JU.M4.newM4(this.matrixFractionalToCartesian).invert(); +} else { +var m = this.matrixFractionalToCartesian = new JU.M4(); +if (rotateHex) { +m.setColumn4(0, (-this.b * this.cosGamma), (-this.b * this.sinGamma), 0, 0); +m.setColumn4(1, (-this.b * this.cosGamma), (this.b * this.sinGamma), 0, 0); +} else { +m.setColumn4(0, this.a, 0, 0, 0); +m.setColumn4(1, (this.b * this.cosGamma), (this.b * this.sinGamma), 0, 0); +}m.setColumn4(2, (this.c * this.cosBeta), (this.c * (this.cosAlpha - this.cosBeta * this.cosGamma) / this.sinGamma), (this.volume / (this.a * this.b * this.sinGamma)), 0); +m.setColumn4(3, 0, 0, 0, 1); +this.matrixCartesianToFractional = JU.M4.newM4(this.matrixFractionalToCartesian).invert(); +}this.matrixCtoFNoOffset = this.matrixCartesianToFractional; +this.matrixFtoCNoOffset = this.matrixFractionalToCartesian; +}, "~A"); +c$.newV = Clazz_defineMethod(c$, "newV", +function(p, i){ +return JU.V3.new3(p[i++], p[i++], p[i]); +}, "~A,~N"); +c$.newParams = Clazz_defineMethod(c$, "newParams", +function(params, slop){ +var p = Clazz_newFloatArray (27, 0); +var n = params.length; +for (var i = 0; i < 27; i++) p[i] = (i < n ? params[i] : NaN); + +if (n < 27) p[26] = slop; +return p; +}, "~A,~N"); +c$.addVectors = Clazz_defineMethod(c$, "addVectors", +function(params){ +var c = JU.SimpleUnitCell.newA(params); +var m = c.matrixFractionalToCartesian; +for (var i = 0; i < 9; i++) params[6 + i] = m.getElement(i % 3, Clazz_doubleToInt(i / 3)); + +}, "~A"); +Clazz_defineMethod(c$, "setParamsFromMatrix", +function(){ +var va = JU.V3.new3(1, 0, 0); +var vb = JU.V3.new3(0, 1, 0); +var vc = JU.V3.new3(0, 0, 1); +this.matrixFractionalToCartesian.rotate(va); +this.matrixFractionalToCartesian.rotate(vb); +this.matrixFractionalToCartesian.rotate(vc); +this.setABC(va, vb, vc); +this.setCellParams(); +}); +Clazz_defineMethod(c$, "setABC", +function(va, vb, vc){ +JU.SimpleUnitCell.fillParams(va, vb, vc, this.unitCellParams); +var p = this.unitCellParams; +this.a = p[0]; +this.b = p[1]; +this.c = p[2]; +this.alpha = p[3]; +this.beta = p[4]; +this.gamma = p[5]; +}, "JU.V3,JU.V3,JU.V3"); +c$.fillParams = Clazz_defineMethod(c$, "fillParams", +function(va, vb, vc, p){ +if (va == null) { +va = JU.SimpleUnitCell.newV(p, 6); +vb = JU.SimpleUnitCell.newV(p, 9); +vc = JU.SimpleUnitCell.newV(p, 12); +}var a = va.length(); +var b = vb.length(); +var c = vc.length(); +if (a == 0) return; +if (b == 0) b = c = -1; + else if (c == 0) c = -1; +p[0] = a; +p[1] = b; +p[2] = c; +p[3] = (b < 0 || c < 0 ? 90 : vb.angle(vc) / 0.017453292519943295); +p[4] = (c < 0 ? 90 : va.angle(vc) / 0.017453292519943295); +p[5] = (b < 0 ? 90 : va.angle(vb) / 0.017453292519943295); +}, "JU.V3,JU.V3,JU.V3,~A"); +Clazz_defineMethod(c$, "setCellParams", +function(){ +this.cosAlpha = Math.cos(0.017453292519943295 * this.alpha); +this.sinAlpha = Math.sin(0.017453292519943295 * this.alpha); +this.cosBeta = Math.cos(0.017453292519943295 * this.beta); +this.sinBeta = Math.sin(0.017453292519943295 * this.beta); +this.cosGamma = Math.cos(0.017453292519943295 * this.gamma); +this.sinGamma = Math.sin(0.017453292519943295 * this.gamma); +var unitVolume = Math.sqrt(this.sinAlpha * this.sinAlpha + this.sinBeta * this.sinBeta + this.sinGamma * this.sinGamma + 2.0 * this.cosAlpha * this.cosBeta * this.cosGamma - 2); +this.volume = this.a * this.b * this.c * unitVolume; +this.cA_ = (this.cosAlpha - this.cosBeta * this.cosGamma) / this.sinGamma; +this.cB_ = unitVolume / this.sinGamma; +this.a_ = this.b * this.c * this.sinAlpha / this.volume; +this.b_ = this.a * this.c * this.sinBeta / this.volume; +this.c_ = this.a * this.b * this.sinGamma / this.volume; +}); +Clazz_defineMethod(c$, "getFractionalOrigin", +function(){ +return this.fractionalOrigin; +}); +Clazz_defineMethod(c$, "toSupercell", +function(fpt){ +fpt.x /= this.na; +fpt.y /= this.nb; +fpt.z /= this.nc; +return fpt; +}, "JU.P3"); +Clazz_defineMethod(c$, "toCartesian", +function(pt, ignoreOffset){ +if (this.matrixFractionalToCartesian != null) (ignoreOffset ? this.matrixFtoCNoOffset : this.matrixFractionalToCartesian).rotTrans(pt); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "toFractionalM", +function(m){ +if (this.matrixCartesianToFractional == null) return; +m.mul(this.matrixFractionalToCartesian); +m.mul2(this.matrixCartesianToFractional, m); +}, "JU.M4"); +Clazz_defineMethod(c$, "toFractional", +function(pt, ignoreOffset){ +if (this.matrixCartesianToFractional == null) return; +(ignoreOffset ? this.matrixCtoFNoOffset : this.matrixCartesianToFractional).rotTrans(pt); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "isPolymer", +function(){ +return (this.dimension == 1); +}); +Clazz_defineMethod(c$, "isSlab", +function(){ +return (this.dimension == 2); +}); +Clazz_defineMethod(c$, "getUnitCellParams", +function(){ +return this.unitCellParams; +}); +Clazz_defineMethod(c$, "getUnitCellAsArray", +function(vectorsOnly){ +var m = this.matrixFractionalToCartesian; +return (vectorsOnly ? Clazz_newFloatArray(-1, [m.m00, m.m10, m.m20, m.m01, m.m11, m.m21, m.m02, m.m12, m.m22]) : Clazz_newFloatArray(-1, [this.a, this.b, this.c, this.alpha, this.beta, this.gamma, m.m00, m.m10, m.m20, m.m01, m.m11, m.m21, m.m02, m.m12, m.m22, this.dimension, this.volume])); +}, "~B"); +Clazz_defineMethod(c$, "getInfo", +function(infoType){ +switch (infoType) { +case 0: +return this.a; +case 1: +return this.b; +case 2: +return this.c; +case 3: +return this.alpha; +case 4: +return this.beta; +case 5: +return this.gamma; +case 6: +return this.dimension; +case 7: +return (JU.SimpleUnitCell.isHexagonal(this.unitCellParams) ? 1 : 0); +case 8: +return (JU.SimpleUnitCell.isRhombohedral(this.unitCellParams) ? 1 : 0); +} +return NaN; +}, "~N"); +c$.getReciprocal = Clazz_defineMethod(c$, "getReciprocal", +function(abc, ret, scale){ +var off = (abc.length == 4 ? 1 : 0); +var rabc = new Array(4); +rabc[0] = (off == 1 ? JU.P3.newP(abc[0]) : new JU.P3()); +if (scale == 0) scale = (6.283185307179586); +for (var i = 0; i < 3; i++) { +var v = rabc[i + 1] = new JU.P3(); +v.cross(abc[((i + 1) % 3) + off], abc[((i + 2) % 3) + off]); +var vol = abc[i + off].dot(v); +if (scale == -1) scale = Math.sqrt(vol); +v.scale(scale / vol); +} +if (ret == null) return rabc; +for (var i = 0; i < 4; i++) { +ret[i] = rabc[i]; +} +return ret; +}, "~A,~A,~N"); +c$.setAbc = Clazz_defineMethod(c$, "setAbc", +function(abcabg, params, ucnew){ +if (abcabg != null) { +if (params == null) params = Clazz_newFloatArray (6, 0); +var tokens = JU.PT.split(abcabg.$replace(',', '='), "="); +if (tokens.length >= 12) for (var i = 0; i < 6; i++) params[i] = JU.PT.parseFloat(tokens[i * 2 + 1]); + +}if (ucnew == null) return null; +return JU.SimpleUnitCell.setAbcFromParams(params, ucnew); +}, "~S,~A,~A"); +c$.setAbcFromParams = Clazz_defineMethod(c$, "setAbcFromParams", +function(params, ucnew){ +var f = JU.SimpleUnitCell.newA(params).getUnitCellAsArray(true); +ucnew[1].set(f[0], f[1], f[2]); +ucnew[2].set(f[3], f[4], f[5]); +ucnew[3].set(f[6], f[7], f[8]); +return ucnew; +}, "~A,~A"); +Clazz_defineMethod(c$, "unitizeDim", +function(dimension, pt){ +switch (dimension) { +case 3: +pt.z = JU.SimpleUnitCell.unitizeX(pt.z, this.slop); +case 2: +pt.y = JU.SimpleUnitCell.unitizeX(pt.y, this.slop); +case 1: +pt.x = JU.SimpleUnitCell.unitizeX(pt.x, this.slop); +} +}, "~N,JU.T3"); +c$.unitizeDimRnd = Clazz_defineMethod(c$, "unitizeDimRnd", +function(dimension, pt, slop){ +switch (dimension) { +case 3: +pt.z = JU.SimpleUnitCell.unitizeXRnd(pt.z, slop); +case 2: +pt.y = JU.SimpleUnitCell.unitizeXRnd(pt.y, slop); +case 1: +pt.x = JU.SimpleUnitCell.unitizeXRnd(pt.x, slop); +} +}, "~N,JU.T3,~N"); +c$.unitizeX = Clazz_defineMethod(c$, "unitizeX", +function(x, slop){ +x = (x - Math.floor(x)); +if (x > 1 - slop || x < slop) x = 0; +return x; +}, "~N,~N"); +c$.unitizeXRnd = Clazz_defineMethod(c$, "unitizeXRnd", +function(x, slop){ +x = (x - Math.floor(x)); +if (x > 1 - slop || x < slop) x = 0; +return x; +}, "~N,~N"); +Clazz_defineMethod(c$, "twelfthsOf", +function(f){ +if (f == 0) return 0; +f = Math.abs(f * 12); +var i = Math.round(f); +return (i <= 12 && Math.abs(f - i) < this.slop * 12 ? i : -1); +}, "~N"); +Clazz_defineMethod(c$, "twelfthify", +function(pt){ +switch (this.dimension) { +case 3: +pt.z = this.setTwelfths(pt.z); +case 2: +pt.y = this.setTwelfths(pt.y); +case 1: +pt.x = this.setTwelfths(pt.x); +break; +} +}, "JU.P3"); +Clazz_defineMethod(c$, "setTwelfths", +function(x){ +var i = this.twelfthsOf(x); +return (i >= 0 ? i / 12 : x); +}, "~N"); +c$.ijkToPoint3f = Clazz_defineMethod(c$, "ijkToPoint3f", +function(nnn, cell, offset, kcode){ +var f = (nnn > 1000000000 ? 1000 : nnn > 1000000 ? 100 : 10); +var f2 = f * f; +offset -= (offset >= 0 ? Clazz_doubleToInt(5 * f / 10) : offset); +cell.x = ((Clazz_doubleToInt(nnn / f2)) % f) + offset; +cell.y = Clazz_doubleToInt((nnn % f2) / f) + offset; +cell.z = (kcode == 0 ? nnn % f : (offset == -500 ? Clazz_doubleToInt(kcode / f) : kcode) % f) + offset; +}, "~N,JU.P3,~N,~N"); +c$.ptToIJK = Clazz_defineMethod(c$, "ptToIJK", +function(pt, scale){ +if (pt.x <= 5 && pt.y <= 5 && pt.z <= 5) { +return JU.P4.new4(555, (pt.x + 4) * 100 + (pt.y + 4) * 10 + pt.z + 4, scale, 0); +}var i555 = 1500500500; +return JU.P4.new4(i555, i555 + pt.x * 1000000 + pt.y * 1000 + pt.z, scale, 1500500 + pt.z); +}, "JU.T3,~N"); +c$.escapeMultiplier = Clazz_defineMethod(c$, "escapeMultiplier", +function(pt){ +if (Clazz_instanceOf(pt,"JU.P4")) { +var pt4 = pt; +var x = Clazz_doubleToInt(Math.floor(pt4.x / 1000)) * 1000 + Clazz_doubleToInt(Math.floor(pt4.w / 1000)) - 1000; +var y = Clazz_doubleToInt(Math.floor(pt4.y / 1000)) * 1000 + Clazz_doubleToInt(Math.floor(pt4.w)) % 1000; +return "{" + x + " " + y + " " + pt.z + "}"; +}return JU.Escape.eP(pt); +}, "JU.T3"); +c$.setMinMaxLatticeParameters = Clazz_defineMethod(c$, "setMinMaxLatticeParameters", +function(dimension, minXYZ, maxXYZ, kcode){ +if (maxXYZ.x <= maxXYZ.y && maxXYZ.y >= 555) { +var pt = new JU.P3(); +JU.SimpleUnitCell.ijkToPoint3f(maxXYZ.x, pt, 0, kcode); +minXYZ.x = Clazz_floatToInt(pt.x); +minXYZ.y = Clazz_floatToInt(pt.y); +minXYZ.z = Clazz_floatToInt(pt.z); +JU.SimpleUnitCell.ijkToPoint3f(maxXYZ.y, pt, 1, kcode); +maxXYZ.x = Clazz_floatToInt(pt.x); +maxXYZ.y = Clazz_floatToInt(pt.y); +maxXYZ.z = Clazz_floatToInt(pt.z); +}switch (dimension) { +case 1: +minXYZ.y = 0; +maxXYZ.y = 1; +case 2: +minXYZ.z = 0; +maxXYZ.z = 1; +} +}, "~N,JU.P3i,JU.P3i,~N"); +c$.isHexagonal = Clazz_defineMethod(c$, "isHexagonal", +function(params){ +return (JU.SimpleUnitCell.approx0(params[0] - params[1]) && JU.SimpleUnitCell.approx0(params[3] - 90) && JU.SimpleUnitCell.approx0(params[4] - 90) && (JU.SimpleUnitCell.approx0(params[5] - 120) || params[5] == -1)); +}, "~A"); +c$.isRhombohedral = Clazz_defineMethod(c$, "isRhombohedral", +function(params){ +return (JU.SimpleUnitCell.approx0(params[0] - params[1]) && JU.SimpleUnitCell.approx0(params[1] - params[2]) && !JU.SimpleUnitCell.approx0(params[3] - 90) && JU.SimpleUnitCell.approx0(params[3] - params[4]) && JU.SimpleUnitCell.approx0(params[4] - params[5])); +}, "~A"); +c$.approx0 = Clazz_defineMethod(c$, "approx0", +function(f){ +return (Math.abs(f) < 0.001); +}, "~N"); +c$.getCellRange = Clazz_defineMethod(c$, "getCellRange", +function(fset, cellRange){ +var t3w = (Clazz_instanceOf(fset,"JU.T4") ? Clazz_floatToInt((fset).w) : 0); +JU.SimpleUnitCell.ijkToPoint3f(Clazz_floatToInt(fset.x), cellRange[0], 0, t3w); +JU.SimpleUnitCell.ijkToPoint3f(Clazz_floatToInt(fset.y), cellRange[1], 1, t3w); +if (fset.z < 0) { +cellRange[0].scale(-1 / fset.z); +cellRange[1].scale(-1 / fset.z); +}return t3w; +}, "JU.T3,~A"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.a + " " + this.b + " " + this.c + " " + this.alpha + " " + this.beta + " " + this.gamma + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.TempArray", ["JU.P3", "$.P3i"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.lengthsFreePoints = null; +this.freePoints = null; +this.lengthsFreeScreens = null; +this.freeScreens = null; +this.lengthsFreeEnum = null; +this.freeEnum = null; +Clazz_instantialize(this, arguments);}, JU, "TempArray", null); +Clazz_prepareFields (c$, function(){ +this.lengthsFreePoints = Clazz_newIntArray (6, 0); +this.freePoints = new Array(6); +this.lengthsFreeScreens = Clazz_newIntArray (6, 0); +this.freeScreens = new Array(6); +this.lengthsFreeEnum = Clazz_newIntArray (2, 0); +this.freeEnum = new Array(2); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.clearTempPoints(); +this.clearTempScreens(); +}); +c$.findBestFit = Clazz_defineMethod(c$, "findBestFit", +function(size, lengths){ +var iFit = -1; +var fitLength = 2147483647; +for (var i = lengths.length; --i >= 0; ) { +var freeLength = lengths[i]; +if (freeLength >= size && freeLength < fitLength) { +fitLength = freeLength; +iFit = i; +}} +if (iFit >= 0) lengths[iFit] = 0; +return iFit; +}, "~N,~A"); +c$.findShorter = Clazz_defineMethod(c$, "findShorter", +function(size, lengths){ +for (var i = lengths.length; --i >= 0; ) if (lengths[i] == 0) { +lengths[i] = size; +return i; +} +var iShortest = 0; +var shortest = lengths[0]; +for (var i = lengths.length; --i > 0; ) if (lengths[i] < shortest) { +shortest = lengths[i]; +iShortest = i; +} +if (shortest < size) { +lengths[iShortest] = size; +return iShortest; +}return -1; +}, "~N,~A"); +Clazz_defineMethod(c$, "clearTempPoints", +function(){ +for (var i = 0; i < 6; i++) { +this.lengthsFreePoints[i] = 0; +this.freePoints[i] = null; +} +}); +Clazz_defineMethod(c$, "allocTempPoints", +function(size){ +var tempPoints; +var iFit = JU.TempArray.findBestFit(size, this.lengthsFreePoints); +if (iFit > 0) { +tempPoints = this.freePoints[iFit]; +} else { +tempPoints = new Array(size); +for (var i = size; --i >= 0; ) tempPoints[i] = new JU.P3(); + +}return tempPoints; +}, "~N"); +Clazz_defineMethod(c$, "freeTempPoints", +function(tempPoints){ +for (var i = 0; i < this.freePoints.length; i++) if (this.freePoints[i] === tempPoints) { +this.lengthsFreePoints[i] = tempPoints.length; +return; +} +var iFree = JU.TempArray.findShorter(tempPoints.length, this.lengthsFreePoints); +if (iFree >= 0) this.freePoints[iFree] = tempPoints; +}, "~A"); +Clazz_defineMethod(c$, "clearTempScreens", +function(){ +for (var i = 0; i < 6; i++) { +this.lengthsFreeScreens[i] = 0; +this.freeScreens[i] = null; +} +}); +Clazz_defineMethod(c$, "allocTempScreens", +function(size){ +var tempScreens; +var iFit = JU.TempArray.findBestFit(size, this.lengthsFreeScreens); +if (iFit > 0) { +tempScreens = this.freeScreens[iFit]; +} else { +tempScreens = new Array(size); +for (var i = size; --i >= 0; ) tempScreens[i] = new JU.P3i(); + +}return tempScreens; +}, "~N"); +Clazz_defineMethod(c$, "freeTempScreens", +function(tempScreens){ +for (var i = 0; i < this.freeScreens.length; i++) if (this.freeScreens[i] === tempScreens) { +this.lengthsFreeScreens[i] = tempScreens.length; +return; +} +var iFree = JU.TempArray.findShorter(tempScreens.length, this.lengthsFreeScreens); +if (iFree >= 0) this.freeScreens[iFree] = tempScreens; +}, "~A"); +Clazz_defineMethod(c$, "allocTempEnum", +function(size){ +var tempEnum; +var iFit = JU.TempArray.findBestFit(size, this.lengthsFreeEnum); +if (iFit > 0) { +tempEnum = this.freeEnum[iFit]; +} else { +tempEnum = new Array(size); +}return tempEnum; +}, "~N"); +Clazz_defineMethod(c$, "freeTempEnum", +function(tempEnum){ +for (var i = 0; i < this.freeEnum.length; i++) if (this.freeEnum[i] === tempEnum) { +this.lengthsFreeEnum[i] = tempEnum.length; +return; +} +var iFree = JU.TempArray.findShorter(tempEnum.length, this.lengthsFreeEnum); +if (iFree >= 0) this.freeEnum[iFree] = tempEnum; +}, "~A"); +c$.getSlabWithinRange = Clazz_defineMethod(c$, "getSlabWithinRange", +function(min, max){ +return Clazz_newArray(-1, [Integer.$valueOf(1073742114), Clazz_newArray(-1, [Float.$valueOf(min), Float.$valueOf(max)]), Boolean.FALSE, null]); +}, "~N,~N"); +c$.getSlabObjectType = Clazz_defineMethod(c$, "getSlabObjectType", +function(tok, data, isCap, colorData){ +return Clazz_newArray(-1, [Integer.$valueOf(tok), data, Boolean.$valueOf(isCap), colorData]); +}, "~N,~O,~B,~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_declareType(JU, "Txt", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.V3"], "JU.Vibration", ["JU.P3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modDim = -1; +this.modScale = NaN; +this.showTrace = false; +this.trace = null; +this.tracePt = 0; +Clazz_instantialize(this, arguments);}, JU, "Vibration", JU.V3); +Clazz_defineMethod(c$, "setCalcPoint", +function(pt, t456, scale, modulationScale){ +switch (this.modDim) { +case -2: +case -3: +break; +default: +pt.scaleAdd2((Math.cos(t456.x * 6.283185307179586) * scale), this, pt); +break; +} +return pt; +}, "JU.T3,JU.T3,~N,~N"); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("vibVector", JU.V3.newV(this)); +info.put("vibType", (this.modDim == -2 ? "spin" : this.modDim == -1 ? "vib" : "mod")); +}, "java.util.Map"); +Clazz_overrideMethod(c$, "clone", +function(){ +var v = new JU.Vibration(); +v.setT(this); +v.modDim = this.modDim; +return v; +}); +Clazz_defineMethod(c$, "setXYZ", +function(vib){ +this.setT(vib); +}, "JU.T3"); +Clazz_defineMethod(c$, "setType", +function(type){ +this.modDim = type; +return this; +}, "~N"); +Clazz_defineMethod(c$, "isNonzero", +function(){ +return this.x != 0 || this.y != 0 || this.z != 0; +}); +Clazz_defineMethod(c$, "getOccupancy100", +function(isTemp){ +return -2147483648; +}, "~B"); +Clazz_defineMethod(c$, "startTrace", +function(n){ +this.trace = new Array(n); +this.tracePt = n; +}, "~N"); +Clazz_defineMethod(c$, "addTracePt", +function(n, ptNew){ +if (this.trace == null || n == 0 || n != this.trace.length) this.startTrace(n); +if (ptNew != null && n > 2) { +if (--this.tracePt <= 0) { +var p0 = this.trace[this.trace.length - 1]; +for (var i = this.trace.length; --i >= 1; ) this.trace[i] = this.trace[i - 1]; + +this.trace[1] = p0; +this.tracePt = 1; +}var p = this.trace[this.tracePt]; +if (p == null) p = this.trace[this.tracePt] = new JU.P3(); +p.setT(ptNew); +}return this.trace; +}, "~N,JU.Point3fi"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["J.api.EventManager", "JU.Rectangle", "JV.MouseState"], ["JV.MotionPoint", "$.ActionManager", "$.Gesture"], ["JU.AU", "$.PT", "J.api.Interface", "J.i18n.GT", "JS.SV", "$.ScriptEval", "J.thread.HoverWatcherThread", "JU.BSUtil", "$.Escape", "$.Logger", "$.Point3fi", "JV.Viewer", "JV.binding.Binding", "$.JmolBinding"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.haveMultiTouchInput = false; +this.isMultiTouch = false; +this.b = null; +this.jmolBinding = null; +this.pfaatBinding = null; +this.dragBinding = null; +this.rasmolBinding = null; +this.predragBinding = null; +this.LEFT_DRAGGED = 0; +this.hoverable = false; +this.hoverWatcherThread = null; +this.dragGesture = null; +this.apm = 1; +this.bondPickingMode = 0; +this.pickingStyle = 0; +this.pickingStyleSelect = 0; +this.pickingStyleMeasure = 5; +this.rootPickingStyle = 0; +this.gestureSwipeFactor = 1.0; +this.mouseDragFactor = 1.0; +this.mouseWheelFactor = 1.15; +this.current = null; +this.moved = null; +this.clicked = null; +this.pressed = null; +this.dragged = null; +this.pressedCount = 0; +this.clickedCount = 0; +this.drawMode = false; +this.labelMode = false; +this.dragSelectedMode = false; +this.measuresEnabled = true; +this.haveSelection = false; +this.hoverActive = false; +this.mp = null; +this.dragAtomIndex = -1; +this.mkBondPressed = false; +this.rubberbandSelectionMode = false; +this.rectRubber = null; +this.isAltKeyReleased = true; +this.keyProcessing = false; +this.isMultiTouchClient = false; +this.isMultiTouchServer = false; +this.pressAction = 0; +this.dragAction = 0; +this.clickAction = 0; +this.measurementQueued = null; +this.zoomTrigger = false; +this.selectionWorking = false; +Clazz_instantialize(this, arguments);}, JV, "ActionManager", null, J.api.EventManager); +Clazz_prepareFields (c$, function(){ +this.current = new JV.MouseState("current"); +this.moved = new JV.MouseState("moved"); +this.clicked = new JV.MouseState("clicked"); +this.pressed = new JV.MouseState("pressed"); +this.dragged = new JV.MouseState("dragged"); +this.rectRubber = new JU.Rectangle(); +}); +Clazz_defineMethod(c$, "setViewer", +function(vwr, commandOptions){ +this.vwr = vwr; +if (!JV.Viewer.isJS) this.createActions(); +this.setBinding(this.jmolBinding = new JV.binding.JmolBinding()); +this.LEFT_DRAGGED = JV.binding.Binding.getMouseAction(1, 16, 1); +this.dragGesture = new JV.Gesture(20, vwr); +}, "JV.Viewer,~S"); +Clazz_defineMethod(c$, "isHoverable", +function(){ +return this.hoverable; +}); +Clazz_defineMethod(c$, "checkHover", +function(){ +if (this.zoomTrigger) { +this.zoomTrigger = false; +if (this.vwr.currentCursor == 8) this.vwr.setCursor(0); +this.vwr.setInMotion(false); +return; +}if (!this.vwr.getInMotion(true) && !this.vwr.tm.spinOn && !this.vwr.tm.navOn && !this.vwr.checkObjectHovered(this.current.x, this.current.y)) { +var atomIndex = this.vwr.findNearestAtomIndex(this.current.x, this.current.y); +if (atomIndex < 0) return; +var isLabel = (this.apm == 2 && this.bnd(JV.binding.Binding.getMouseAction(this.clickedCount, this.moved.modifiers, 1), [10])); +this.vwr.hoverOn(atomIndex, isLabel); +}}); +Clazz_defineMethod(c$, "processMultitouchEvent", +function(groupID, eventType, touchID, iData, pt, time){ +}, "~N,~N,~N,~N,JU.P3,~N"); +Clazz_defineMethod(c$, "bind", +function(desc, name){ +var jmolAction = JV.ActionManager.getActionFromName(name); +var mouseAction = JV.binding.Binding.getMouseActionStr(desc); +if (mouseAction == 0) return; +if (jmolAction >= 0) { +this.b.bindAction(mouseAction, jmolAction); +} else { +this.b.bindName(mouseAction, name); +}}, "~S,~S"); +Clazz_defineMethod(c$, "clearBindings", +function(){ +this.setBinding(this.jmolBinding = new JV.binding.JmolBinding()); +this.pfaatBinding = null; +this.dragBinding = null; +this.rasmolBinding = null; +}); +Clazz_defineMethod(c$, "unbindAction", +function(desc, name){ +if (desc == null && name == null) { +this.clearBindings(); +return; +}var jmolAction = JV.ActionManager.getActionFromName(name); +var mouseAction = JV.binding.Binding.getMouseActionStr(desc); +if (jmolAction >= 0) this.b.unbindAction(mouseAction, jmolAction); + else if (mouseAction != 0) this.b.unbindName(mouseAction, name); +if (name == null) this.b.unbindUserAction(desc); +}, "~S,~S"); +c$.newAction = Clazz_defineMethod(c$, "newAction", +function(i, name, info){ +JV.ActionManager.actionInfo[i] = info; +JV.ActionManager.actionNames[i] = name; +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "createActions", +function(){ +if (JV.ActionManager.actionInfo[0] != null) return; +JV.ActionManager.newAction(0, "_assignNew", J.i18n.GT.o(J.i18n.GT.$("assign/new atom or bond (requires {0})"), "set picking assignAtom_??/assignBond_?")); +JV.ActionManager.newAction(1, "_center", J.i18n.GT.$("center")); +JV.ActionManager.newAction(2, "_clickFrank", J.i18n.GT.$("pop up recent context menu (click on Jmol frank)")); +JV.ActionManager.newAction(4, "_deleteAtom", J.i18n.GT.o(J.i18n.GT.$("delete atom (requires {0})"), "set picking DELETE ATOM")); +JV.ActionManager.newAction(5, "_deleteBond", J.i18n.GT.o(J.i18n.GT.$("delete bond (requires {0})"), "set picking DELETE BOND")); +JV.ActionManager.newAction(6, "_depth", J.i18n.GT.o(J.i18n.GT.$("adjust depth (back plane; requires {0})"), "SLAB ON")); +JV.ActionManager.newAction(7, "_dragAtom", J.i18n.GT.o(J.i18n.GT.$("move atom (requires {0})"), "set picking DRAGATOM")); +JV.ActionManager.newAction(8, "_dragDrawObject", J.i18n.GT.o(J.i18n.GT.$("move whole DRAW object (requires {0})"), "set picking DRAW")); +JV.ActionManager.newAction(9, "_dragDrawPoint", J.i18n.GT.o(J.i18n.GT.$("move specific DRAW point (requires {0})"), "set picking DRAW")); +JV.ActionManager.newAction(10, "_dragLabel", J.i18n.GT.o(J.i18n.GT.$("move label (requires {0})"), "set picking LABEL")); +JV.ActionManager.newAction(11, "_dragMinimize", J.i18n.GT.o(J.i18n.GT.$("move atom and minimize molecule (requires {0})"), "set picking DRAGMINIMIZE")); +JV.ActionManager.newAction(12, "_dragMinimizeMolecule", J.i18n.GT.o(J.i18n.GT.$("move and minimize molecule (requires {0})"), "set picking DRAGMINIMIZEMOLECULE")); +JV.ActionManager.newAction(13, "_dragSelected", J.i18n.GT.o(J.i18n.GT.$("move selected atoms (requires {0})"), "set DRAGSELECTED")); +JV.ActionManager.newAction(14, "_dragZ", J.i18n.GT.o(J.i18n.GT.$("drag atoms in Z direction (requires {0})"), "set DRAGSELECTED")); +JV.ActionManager.newAction(15, "_multiTouchSimulation", J.i18n.GT.$("simulate multi-touch using the mouse)")); +JV.ActionManager.newAction(16, "_navTranslate", J.i18n.GT.o(J.i18n.GT.$("translate navigation point (requires {0} and {1})"), Clazz_newArray(-1, ["set NAVIGATIONMODE", "set picking NAVIGATE"]))); +JV.ActionManager.newAction(17, "_pickAtom", J.i18n.GT.$("pick an atom")); +JV.ActionManager.newAction(3, "_pickConnect", J.i18n.GT.o(J.i18n.GT.$("connect atoms (requires {0})"), "set picking CONNECT")); +JV.ActionManager.newAction(18, "_pickIsosurface", J.i18n.GT.o(J.i18n.GT.$("pick an ISOSURFACE point (requires {0}"), "set DRAWPICKING")); +JV.ActionManager.newAction(19, "_pickLabel", J.i18n.GT.o(J.i18n.GT.$("pick a label to toggle it hidden/displayed (requires {0})"), "set picking LABEL")); +JV.ActionManager.newAction(20, "_pickMeasure", J.i18n.GT.o(J.i18n.GT.$("pick an atom to include it in a measurement (after starting a measurement or after {0})"), "set picking DISTANCE/ANGLE/TORSION")); +JV.ActionManager.newAction(21, "_pickNavigate", J.i18n.GT.o(J.i18n.GT.$("pick a point or atom to navigate to (requires {0})"), "set NAVIGATIONMODE")); +JV.ActionManager.newAction(22, "_pickPoint", J.i18n.GT.o(J.i18n.GT.$("pick a DRAW point (for measurements) (requires {0}"), "set DRAWPICKING")); +JV.ActionManager.newAction(23, "_popupMenu", J.i18n.GT.$("pop up the full context menu")); +JV.ActionManager.newAction(24, "_reset", J.i18n.GT.$("reset (when clicked off the model)")); +JV.ActionManager.newAction(25, "_rotate", J.i18n.GT.$("rotate")); +JV.ActionManager.newAction(26, "_rotateBranch", J.i18n.GT.o(J.i18n.GT.$("rotate branch around bond (requires {0})"), "set picking ROTATEBOND")); +JV.ActionManager.newAction(27, "_rotateSelected", J.i18n.GT.o(J.i18n.GT.$("rotate selected atoms (requires {0})"), "set DRAGSELECTED")); +JV.ActionManager.newAction(28, "_rotateZ", J.i18n.GT.$("rotate Z")); +JV.ActionManager.newAction(29, "_rotateZorZoom", J.i18n.GT.$("rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)")); +JV.ActionManager.newAction(30, "_select", J.i18n.GT.o(J.i18n.GT.$("select an atom (requires {0})"), "set pickingStyle EXTENDEDSELECT")); +JV.ActionManager.newAction(31, "_selectAndDrag", J.i18n.GT.o(J.i18n.GT.$("select and drag atoms (requires {0})"), "set DRAGSELECTED")); +JV.ActionManager.newAction(32, "_selectAndNot", J.i18n.GT.o(J.i18n.GT.$("unselect this group of atoms (requires {0})"), "set pickingStyle DRAG/EXTENDEDSELECT")); +JV.ActionManager.newAction(33, "_selectNone", J.i18n.GT.o(J.i18n.GT.$("select NONE (requires {0})"), "set pickingStyle EXTENDEDSELECT")); +JV.ActionManager.newAction(34, "_selectOr", J.i18n.GT.o(J.i18n.GT.$("add this group of atoms to the set of selected atoms (requires {0})"), "set pickingStyle DRAG/EXTENDEDSELECT")); +JV.ActionManager.newAction(35, "_selectToggle", J.i18n.GT.o(J.i18n.GT.$("toggle selection (requires {0})"), "set pickingStyle DRAG/EXTENDEDSELECT/RASMOL")); +JV.ActionManager.newAction(36, "_selectToggleOr", J.i18n.GT.o(J.i18n.GT.$("if all are selected, unselect all, otherwise add this group of atoms to the set of selected atoms (requires {0})"), "set pickingStyle DRAG")); +JV.ActionManager.newAction(37, "_setMeasure", J.i18n.GT.$("pick an atom to initiate or conclude a measurement")); +JV.ActionManager.newAction(38, "_slab", J.i18n.GT.o(J.i18n.GT.$("adjust slab (front plane; requires {0})"), "SLAB ON")); +JV.ActionManager.newAction(39, "_slabAndDepth", J.i18n.GT.o(J.i18n.GT.$("move slab/depth window (both planes; requires {0})"), "SLAB ON")); +JV.ActionManager.newAction(40, "_slideZoom", J.i18n.GT.$("zoom (along right edge of window)")); +JV.ActionManager.newAction(41, "_spinDrawObjectCCW", J.i18n.GT.o(J.i18n.GT.$("click on two points to spin around axis counterclockwise (requires {0})"), "set picking SPIN")); +JV.ActionManager.newAction(42, "_spinDrawObjectCW", J.i18n.GT.o(J.i18n.GT.$("click on two points to spin around axis clockwise (requires {0})"), "set picking SPIN")); +JV.ActionManager.newAction(43, "_stopMotion", J.i18n.GT.o(J.i18n.GT.$("stop motion (requires {0})"), "set waitForMoveTo FALSE")); +JV.ActionManager.newAction(44, "_swipe", J.i18n.GT.$("spin model (swipe and release button and stop motion simultaneously)")); +JV.ActionManager.newAction(45, "_translate", J.i18n.GT.$("translate")); +JV.ActionManager.newAction(46, "_wheelZoom", J.i18n.GT.$("zoom")); +}); +c$.getActionName = Clazz_defineMethod(c$, "getActionName", +function(i){ +return (i < JV.ActionManager.actionNames.length ? JV.ActionManager.actionNames[i] : null); +}, "~N"); +c$.getActionFromName = Clazz_defineMethod(c$, "getActionFromName", +function(name){ +for (var i = 0; i < JV.ActionManager.actionNames.length; i++) if (JV.ActionManager.actionNames[i].equalsIgnoreCase(name)) return i; + +return -1; +}, "~S"); +Clazz_defineMethod(c$, "getBindingInfo", +function(qualifiers){ +return this.b.getBindingInfo(JV.ActionManager.actionInfo, JV.ActionManager.actionNames, qualifiers); +}, "~S"); +Clazz_defineMethod(c$, "setBinding", +function(newBinding){ +this.b = newBinding; +}, "JV.binding.Binding"); +Clazz_defineMethod(c$, "bnd", +function(mouseAction, jmolActions){ +for (var i = jmolActions.length; --i >= 0; ) if (this.b.isBound(mouseAction, jmolActions[i])) return true; + +return false; +}, "~N,~A"); +Clazz_defineMethod(c$, "isDrawOrLabelAction", +function(a){ +return (this.drawMode && this.bnd(a, [8, 9]) || this.labelMode && this.bnd(a, [10])); +}, "~N"); +Clazz_defineMethod(c$, "getBondPickingMode", +function(){ +return this.bondPickingMode; +}); +c$.getPickingModeName = Clazz_defineMethod(c$, "getPickingModeName", +function(pickingMode){ +return (pickingMode < 0 || pickingMode >= JV.ActionManager.pickingModeNames.length ? "off" : JV.ActionManager.pickingModeNames[pickingMode]); +}, "~N"); +c$.getPickingMode = Clazz_defineMethod(c$, "getPickingMode", +function(str){ +for (var i = JV.ActionManager.pickingModeNames.length; --i >= 0; ) if (str.equalsIgnoreCase(JV.ActionManager.pickingModeNames[i])) { +if (i == 38) i = 6; +return i; +} +return -1; +}, "~S"); +c$.getPickingStyleName = Clazz_defineMethod(c$, "getPickingStyleName", +function(pickingStyle){ +return (pickingStyle < 0 || pickingStyle >= JV.ActionManager.pickingStyleNames.length ? "toggle" : JV.ActionManager.pickingStyleNames[pickingStyle]); +}, "~N"); +c$.getPickingStyleIndex = Clazz_defineMethod(c$, "getPickingStyleIndex", +function(str){ +for (var i = JV.ActionManager.pickingStyleNames.length; --i >= 0; ) if (str.equalsIgnoreCase(JV.ActionManager.pickingStyleNames[i])) return i; + +return -1; +}, "~S"); +Clazz_defineMethod(c$, "getAtomPickingMode", +function(){ +return this.apm; +}); +Clazz_defineMethod(c$, "setPickingMode", +function(pickingMode){ +var isNew = false; +switch (pickingMode) { +case -1: +isNew = true; +this.bondPickingMode = 35; +pickingMode = 1; +this.vwr.setStringProperty("pickingStyle", "toggle"); +this.vwr.setBooleanProperty("bondPicking", false); +break; +case 34: +case 33: +case 8: +this.vwr.getModelkit(false); +case 35: +this.vwr.setBooleanProperty("bondPicking", true); +this.bondPickingMode = pickingMode; +this.resetMeasurement(); +return; +} +isNew = new Boolean (isNew | (this.apm != pickingMode)).valueOf(); +this.apm = pickingMode; +if (isNew) this.resetMeasurement(); +}, "~N"); +Clazz_defineMethod(c$, "getPickingState", +function(){ +var script = ";set modelkitMode " + this.vwr.getBoolean(603983903) + ";set picking " + JV.ActionManager.getPickingModeName(this.apm); +if (this.apm == 32) script += "_" + this.vwr.getModelkitPropertySafely("atomtype"); +script += ";"; +if (this.bondPickingMode != 0) script += "set picking " + JV.ActionManager.getPickingModeName(this.bondPickingMode); +if (this.bondPickingMode == 33) script += "_" + this.vwr.getModelkitPropertySafely("bondtype"); +script += ";"; +return script; +}); +Clazz_defineMethod(c$, "getPickingStyle", +function(){ +return this.pickingStyle; +}); +Clazz_defineMethod(c$, "setPickingStyle", +function(pickingStyle){ +this.pickingStyle = pickingStyle; +if (pickingStyle >= 4) { +this.pickingStyleMeasure = pickingStyle; +this.resetMeasurement(); +} else { +if (pickingStyle < 3) this.rootPickingStyle = pickingStyle; +this.pickingStyleSelect = pickingStyle; +}this.rubberbandSelectionMode = false; +switch (this.pickingStyleSelect) { +case 2: +if (!this.b.name.equals("extendedSelect")) this.setBinding(this.pfaatBinding == null ? this.pfaatBinding = JV.binding.Binding.newBinding(this.vwr, "Pfaat") : this.pfaatBinding); +break; +case 3: +if (!this.b.name.equals("drag")) this.setBinding(this.dragBinding == null ? this.dragBinding = JV.binding.Binding.newBinding(this.vwr, "Drag") : this.dragBinding); +this.rubberbandSelectionMode = true; +break; +case 1: +if (!this.b.name.equals("selectOrToggle")) this.setBinding(this.rasmolBinding == null ? this.rasmolBinding = JV.binding.Binding.newBinding(this.vwr, "Rasmol") : this.rasmolBinding); +break; +default: +if (this.b !== this.jmolBinding) this.setBinding(this.jmolBinding); +} +if (!this.b.name.equals("drag")) this.predragBinding = this.b; +}, "~N"); +Clazz_defineMethod(c$, "setGestureSwipeFactor", +function(factor){ +this.gestureSwipeFactor = factor; +}, "~N"); +Clazz_defineMethod(c$, "setMouseDragFactor", +function(factor){ +this.mouseDragFactor = factor; +}, "~N"); +Clazz_defineMethod(c$, "setMouseWheelFactor", +function(factor){ +this.mouseWheelFactor = factor; +}, "~N"); +Clazz_defineMethod(c$, "setCurrent", +function(time, x, y, mods){ +this.vwr.hoverOff(); +this.current.set(time, x, y, mods); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getCurrentX", +function(){ +return this.current.x; +}); +Clazz_defineMethod(c$, "getCurrentY", +function(){ +return this.current.y; +}); +Clazz_defineMethod(c$, "setMouseMode", +function(){ +this.drawMode = this.labelMode = false; +this.dragSelectedMode = this.vwr.getDragSelected(); +this.measuresEnabled = !this.dragSelectedMode; +if (!this.dragSelectedMode) switch (this.apm) { +default: +return; +case 32: +this.measuresEnabled = !this.vwr.getModelkit(false).isPickAtomAssignCharge(); +return; +case 4: +this.drawMode = true; +this.measuresEnabled = false; +break; +case 2: +this.labelMode = true; +this.measuresEnabled = false; +break; +case 9: +this.measuresEnabled = false; +break; +case 19: +case 22: +case 20: +case 21: +this.measuresEnabled = false; +return; +} +this.exitMeasurementMode(null); +}); +Clazz_defineMethod(c$, "clearMouseInfo", +function(){ +this.pressedCount = this.clickedCount = 0; +this.dragGesture.setAction(0, 0); +this.exitMeasurementMode(null); +}); +Clazz_defineMethod(c$, "setDragAtomIndex", +function(iatom){ +this.dragAtomIndex = iatom; +this.setAtomsPicked(JU.BSUtil.newAndSetBit(iatom), "Label picked for atomIndex = " + iatom); +}, "~N"); +Clazz_defineMethod(c$, "isMTClient", +function(){ +return this.isMultiTouchClient; +}); +Clazz_defineMethod(c$, "isMTServer", +function(){ +return this.isMultiTouchServer; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +this.clear(); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.startHoverWatcher(false); +if (this.predragBinding != null) this.b = this.predragBinding; +this.vwr.setPickingStyle(null, this.rootPickingStyle); +this.isAltKeyReleased = true; +}); +Clazz_defineMethod(c$, "startHoverWatcher", +function(isStart){ +if (this.vwr.isPreviewOnly) return; +try { +if (isStart) { +if (this.hoverWatcherThread != null) return; +this.current.time = -1; +this.hoverWatcherThread = new J.thread.HoverWatcherThread(this, this.current, this.moved, this.vwr); +} else { +if (this.hoverWatcherThread == null) return; +this.current.time = -1; +this.hoverWatcherThread.interrupt(); +this.hoverWatcherThread = null; +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~B"); +Clazz_defineMethod(c$, "setModeMouse", +function(modeMouse){ +if (modeMouse == -1) { +this.startHoverWatcher(false); +}}, "~N"); +Clazz_overrideMethod(c$, "keyPressed", +function(key, modifiers){ +if (this.keyProcessing) return false; +this.keyProcessing = true; +switch (key) { +case 18: +if (this.dragSelectedMode && this.isAltKeyReleased) this.vwr.moveSelectedXY(-2147483648, 0, modifiers); +this.isAltKeyReleased = false; +this.moved.modifiers |= 8; +break; +case 16: +this.moved.keybuf = 0; +this.dragged.modifiers |= 1; +this.moved.modifiers |= 1; +break; +case 17: +this.moved.modifiers |= 2; +break; +case 27: +this.vwr.hoverOff(); +this.exitMeasurementMode("escape"); +break; +default: +this.vwr.hoverOff(); +break; +} +var action = 16 | 256 | 8192 | this.moved.modifiers; +if (!this.labelMode && !this.b.isUserAction(action)) { +this.checkMotionRotateZoom(action, this.current.x, 0, 0, false); +}if (this.vwr.getBoolean(603979889)) { +switch (key) { +case 38: +case 40: +case 37: +case 39: +case 32: +case 46: +this.vwr.navigate(key, modifiers); +break; +} +}this.keyProcessing = false; +return true; +}, "~N,~N"); +Clazz_overrideMethod(c$, "keyTyped", +function(keyChar, modifiers){ +return false; +}, "~N,~N"); +Clazz_overrideMethod(c$, "keyReleased", +function(key){ +switch (key) { +case 18: +this.moved.modifiers &= -9; +if (this.dragSelectedMode) this.vwr.moveSelectedXY(2147483647, 0, this.moved.modifiers); +this.isAltKeyReleased = true; +break; +case 16: +this.moved.modifiers &= -2; +if (this.moved.keybuf > 0 && this.vwr.isModelKitOpen()) this.checkKeyBuf(0); +break; +case 17: +this.moved.modifiers &= -3; +} +if (this.moved.modifiers == 0) this.vwr.setCursor(0); +if (key >= 65 && this.vwr.isModelKitOpen()) { +this.dragAtomIndex = this.vwr.findNearestAtomIndex(this.current.x, this.current.y); +if (this.dragAtomIndex >= 0) { +this.checkKeyBuf(key); +return; +}}if (this.vwr.getBoolean(603979889)) { +switch (key) { +case 38: +case 40: +case 37: +case 39: +this.vwr.navigate(0, 0); +break; +} +}this.moved.keybuf = 0; +}, "~N"); +Clazz_defineMethod(c$, "checkKeyBuf", +function(key){ +var shiftDown = ((this.moved.modifiers & 1) != 0); +if (key != 0) { +if (this.moved.keybuf == 0) { +this.moved.keybuf = key; +if (shiftDown) return; +} else { +this.moved.keybuf += (key << 8); +}}if (this.moved.keybuf > 0) { +this.assignNew(this.moved.keybuf); +this.moved.keybuf = 0; +}}, "~N"); +Clazz_overrideMethod(c$, "mouseEnterExit", +function(time, x, y, isExit){ +if (this.vwr.tm.stereoDoubleDTI) x = x << 1; +this.setCurrent(time, x, y, 0); +if (isExit) this.exitMeasurementMode("mouseExit"); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setMouseActions", +function(count, buttonMods, isRelease){ +this.pressAction = JV.binding.Binding.getMouseAction(count, buttonMods, isRelease ? 5 : 4); +this.dragAction = JV.binding.Binding.getMouseAction(count, buttonMods, 1); +this.clickAction = JV.binding.Binding.getMouseAction(count, buttonMods, 2); +}, "~N,~N,~B"); +Clazz_overrideMethod(c$, "mouseAction", +function(mode, time, x, y, count, buttonMods){ +if (!this.vwr.getMouseEnabled()) return; +if (JU.Logger.debuggingHigh && mode != 0 && this.vwr.getBoolean(603979960)) this.vwr.showString("mouse action: " + mode + " " + buttonMods + " " + JV.binding.Binding.getMouseActionName(JV.binding.Binding.getMouseAction(count, buttonMods, mode), false), false); +if (this.vwr.tm.stereoDoubleDTI) x = x << 1; +switch (mode) { +case 0: +if (!this.hoverable) { +JU.Logger.info("ActionManager: mouse move detected"); +this.hoverable = true; +}this.setCurrent(time, x, y, buttonMods); +this.moved.setCurrent(this.current, 0); +this.moved.keybuf = 0; +if (this.mp != null || this.hoverActive) { +this.clickAction = JV.binding.Binding.getMouseAction(this.clickedCount, buttonMods, 0); +this.checkClickAction(x, y, time, 0); +return; +}if (this.isZoomArea(x)) { +this.checkMotionRotateZoom(this.LEFT_DRAGGED, 0, 0, 0, false); +return; +}if (this.vwr.currentCursor == 8) this.vwr.setCursor(0); +return; +case 4: +this.setMouseMode(); +this.pressedCount = (this.pressed.check(20, x, y, buttonMods, time, 700) ? this.pressedCount + 1 : 1); +if (this.pressedCount == 1) { +this.vwr.checkInMotion(1); +this.setCurrent(time, x, y, buttonMods); +}this.pressAction = JV.binding.Binding.getMouseAction(this.pressedCount, buttonMods, 4); +this.vwr.setCursor(12); +this.pressed.setCurrent(this.current, 1); +this.dragged.setCurrent(this.current, 1); +this.vwr.setFocus(); +this.dragGesture.setAction(this.dragAction, time); +this.checkPressedAction(x, y, time); +return; +case 1: +this.setMouseMode(); +this.setMouseActions(this.pressedCount, buttonMods, false); +var deltaX = x - this.dragged.x; +var deltaY = y - this.dragged.y; +this.setCurrent(time, x, y, buttonMods); +this.dragged.setCurrent(this.current, -1); +this.dragGesture.add(this.dragAction, x, y, time); +this.checkDragWheelAction(this.dragAction, x, y, deltaX, deltaY, time, 1); +return; +case 5: +this.setMouseActions(this.pressedCount, buttonMods, true); +this.setCurrent(time, x, y, buttonMods); +this.vwr.spinXYBy(0, 0, 0); +var dragRelease = !this.pressed.check(10, x, y, buttonMods, time, 9223372036854775807); +this.checkReleaseAction(x, y, time, dragRelease); +return; +case 3: +if (this.vwr.isApplet && !this.vwr.hasFocus()) return; +this.setCurrent(time, this.current.x, this.current.y, buttonMods); +this.checkDragWheelAction(JV.binding.Binding.getMouseAction(0, buttonMods, 3), this.current.x, this.current.y, 0, y, time, 3); +return; +case 2: +this.setMouseMode(); +this.clickedCount = (count > 1 ? count : this.clicked.check(10, 0, 0, buttonMods, time, 700) ? this.clickedCount + 1 : 1); +if (this.clickedCount == 1) { +this.setCurrent(time, x, y, buttonMods); +}this.setMouseActions(this.clickedCount, buttonMods, false); +this.clicked.setCurrent(this.current, this.clickedCount); +this.vwr.setFocus(); +if (this.apm != 9 && this.bnd(JV.binding.Binding.getMouseAction(1, buttonMods, 4), [31])) return; +this.clickAction = JV.binding.Binding.getMouseAction(this.clickedCount, buttonMods, 2); +this.checkClickAction(x, y, time, this.clickedCount); +return; +} +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "checkPressedAction", +function(x, y, time){ +var buttonMods = JV.binding.Binding.getButtonMods(this.pressAction); +var isDragSelectedAction = this.bnd(JV.binding.Binding.getMouseAction(1, buttonMods, 4), [31]); +if (buttonMods != 0) { +this.pressAction = this.vwr.notifyMouseClicked(x, y, this.pressAction, 4); +if (this.pressAction == 0) return; +buttonMods = JV.binding.Binding.getButtonMods(this.pressAction); +}this.setMouseActions(this.pressedCount, buttonMods, false); +if (JU.Logger.debuggingHigh && this.vwr.getBoolean(603979960)) JU.Logger.debug(JV.binding.Binding.getMouseActionName(this.pressAction, false)); +if (this.isDrawOrLabelAction(this.dragAction) && this.vwr.checkObjectDragged(-2147483648, 0, x, y, this.dragAction)) return; +this.checkUserAction(this.pressAction, x, y, 0, 0, time, 4); +var isBound = false; +switch (this.apm) { +case 32: +isBound = this.bnd(this.clickAction, [0]); +break; +case 28: +isBound = this.bnd(this.dragAction, [7, 14]); +break; +case 26: +case 36: +case 37: +case 27: +isBound = this.bnd(this.dragAction, [7, 14, 27]); +break; +case 29: +isBound = this.bnd(this.dragAction, [11, 14]); +break; +case 30: +isBound = this.bnd(this.dragAction, [11, 14, 27]); +break; +default: +isBound = (this.bondPickingMode == 34); +break; +} +if (isBound) { +this.dragAtomIndex = this.vwr.findNearestAtomIndexMovable(x, y, true); +var bi = (this.bondPickingMode == 34 ? this.vwr.getModelkit(false).getRotateBondIndex() : -1); +if (this.dragAtomIndex >= 0 && (bi >= 0 || this.apm == 32 || this.apm == 31)) { +this.enterMeasurementMode(this.dragAtomIndex); +this.mp.addPoint(this.dragAtomIndex, null, false); +if (bi >= 0) { +this.updateModelkitBranch(bi, true); +}}var xy = this.vwr.getModelkitPropertySafely("screenxy"); +this.mkBondPressed = (xy != null && this.pressed.inRange(10, xy[0], xy[1])); +return; +}if (this.bnd(this.pressAction, [23])) { +this.doPopup(x, y); +return; +}if (this.dragSelectedMode) { +this.haveSelection = (!isDragSelectedAction || this.vwr.findNearestAtomIndexMovable(x, y, true) >= 0); +if (this.haveSelection && this.bnd(this.dragAction, [13, 14])) this.vwr.moveSelectedXY(-2147483648, 0, buttonMods); +return; +}this.checkMotionRotateZoom(this.dragAction, x, 0, 0, true); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "checkDragWheelAction", +function(dragWheelAction, x, y, deltaX, deltaY, time, mode){ +var buttonmods = JV.binding.Binding.getButtonMods(dragWheelAction); +if (buttonmods != 0) { +var newAction = this.vwr.notifyMouseClicked(x, y, JV.binding.Binding.getMouseAction(this.pressedCount, buttonmods, mode), mode); +if (newAction == 0) return; +if (newAction > 0) dragWheelAction = newAction; +}if (this.isRubberBandSelect(dragWheelAction)) { +this.calcRectRubberBand(); +this.vwr.refresh(3, "rubberBand selection"); +return; +}if (this.checkUserAction(dragWheelAction, x, y, deltaX, deltaY, time, mode)) return; +var bi = (this.bondPickingMode == 34 ? this.vwr.getModelkit(false).getRotateBondIndex() : -1); +if (bi >= 0) { +if (this.dragAtomIndex >= 0 || this.mkBondPressed || this.bnd(dragWheelAction, [26])) { +if (this.dragAtomIndex >= 0) { +this.updateModelkitBranch(bi, false); +}this.vwr.moveSelected(deltaX, deltaY, -2147483648, x, y, null, null, null, false, false, this.dragAtomIndex >= 0 ? 0 : 16); +return; +}}var bs = null; +if (this.dragAtomIndex >= 0 && this.apm != 2) { +switch (this.apm) { +case 26: +this.dragSelected(dragWheelAction, deltaX, deltaY, true); +return; +case 36: +case 37: +case 27: +case 30: +bs = this.vwr.ms.getAtoms((this.apm == 37 ? 1094717454 : 1094713360), JU.BSUtil.newAndSetBit(this.dragAtomIndex)); +if (this.apm == 36) bs.and(this.vwr.getAtomBitSet("ligand")); +case 28: +case 29: +if (this.dragGesture.getPointCount() == 1) this.vwr.undoMoveActionClear(this.dragAtomIndex, 2, true); +this.setMotion(13, true); +if (this.bnd(dragWheelAction, [27])) { +this.vwr.rotateSelected(this.getDegrees(deltaX, true), this.getDegrees(deltaY, false), bs); +} else { +switch (this.apm) { +case 36: +case 37: +case 27: +case 30: +this.vwr.selectStatus(bs, false, 0, true, true); +break; +} +this.vwr.moveAtomWithHydrogens(this.dragAtomIndex, deltaX, deltaY, (this.bnd(dragWheelAction, [14]) ? -deltaY : -2147483648), null, bs); +this.vwr.checkCoordinatesChanged(null); +}return; +} +}if (this.dragAtomIndex >= 0 && mode == 1 && this.bnd(this.clickAction, [0]) && this.apm == 32) { +var nearestAtomIndex = this.vwr.findNearestAtomIndexMovable(x, y, false); +if (nearestAtomIndex >= 0) { +if (this.mp != null) { +this.mp.setCount(1); +} else if (this.measuresEnabled) { +this.enterMeasurementMode(nearestAtomIndex); +}this.addToMeasurement(nearestAtomIndex, null, true); +this.mp.colix = 20; +} else if (this.mp != null) { +this.mp.setCount(1); +this.mp.colix = 23; +}if (this.mp == null) return; +if (this.vwr.antialiased) { +x <<= 1; +y <<= 1; +}this.mp.traceX = x; +this.mp.traceY = y; +this.vwr.refresh(3, "assignNew"); +return; +}if (!this.drawMode && !this.labelMode && this.bnd(dragWheelAction, [45])) { +this.vwr.translateXYBy(deltaX, deltaY); +return; +}if (this.dragSelectedMode && this.haveSelection && this.bnd(dragWheelAction, [13, 27])) { +var iatom = this.vwr.bsA().nextSetBit(0); +if (iatom < 0) return; +if (this.dragGesture.getPointCount() == 1) this.vwr.undoMoveActionClear(iatom, 2, true); + else this.vwr.moveSelected(2147483647, 0, -2147483648, -2147483648, -2147483648, null, null, null, false, false, buttonmods); +this.dragSelected(dragWheelAction, deltaX, deltaY, false); +return; +}if (this.isDrawOrLabelAction(dragWheelAction)) { +this.setMotion(13, true); +if (this.vwr.checkObjectDragged(this.dragged.x, this.dragged.y, x, y, dragWheelAction)) { +return; +}}if (this.checkMotionRotateZoom(dragWheelAction, x, deltaX, deltaY, true)) { +if (this.vwr.tm.slabEnabled && this.bnd(dragWheelAction, [39])) this.vwr.slabDepthByPixels(deltaY); + else this.vwr.zoomBy(deltaY); +return; +}if (this.bnd(dragWheelAction, [25])) { +this.vwr.rotateXYBy(this.getDegrees(deltaX, true), this.getDegrees(deltaY, false)); +return; +}if (this.bnd(dragWheelAction, [29])) { +if (deltaX == 0 && Math.abs(deltaY) > 1) { +this.setMotion(8, true); +this.vwr.zoomBy(deltaY + (deltaY > 0 ? -1 : 1)); +} else if (deltaY == 0 && Math.abs(deltaX) > 1) { +this.setMotion(13, true); +this.vwr.rotateZBy(-deltaX + (deltaX > 0 ? 1 : -1), 2147483647, 2147483647); +}return; +}if (this.vwr.tm.slabEnabled) { +if (this.bnd(dragWheelAction, [6])) { +this.vwr.depthByPixels(deltaY); +return; +}if (this.bnd(dragWheelAction, [38])) { +this.vwr.slabByPixels(deltaY); +return; +}if (this.bnd(dragWheelAction, [39])) { +this.vwr.slabDepthByPixels(deltaY); +return; +}}if (this.bnd(dragWheelAction, [46])) { +this.zoomByFactor(deltaY, 2147483647, 2147483647); +return; +}if (this.bnd(dragWheelAction, [28])) { +this.setMotion(13, true); +this.vwr.rotateZBy(-deltaX, 2147483647, 2147483647); +return; +}}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "updateModelkitBranch", +function(bondIndex, isClick){ +this.vwr.setModelkitPropertySafely(isClick ? "branchatomclicked" : "branchatomdragged", Integer.$valueOf(this.dragAtomIndex)); +if (this.measurementQueued == null || this.measurementQueued.numSet == 0 || this.mp == null) { +this.vwr.setPendingMeasurement(this.vwr.getModelkit(false).setBondMeasure(bondIndex, this.measurementQueued = this.mp = this.getMP())); +} else { +this.measurementQueued.refresh(null); +}}, "~N,~B"); +Clazz_defineMethod(c$, "dragSelected", +function(a, deltaX, deltaY, isPickingDrag){ +this.setMotion(13, true); +if (this.bnd(a, [27]) && this.vwr.getBoolean(603979785)) this.vwr.rotateSelected(this.getDegrees(deltaX, true), this.getDegrees(deltaY, false), null); + else this.vwr.moveSelected(deltaX, deltaY, (isPickingDrag && this.bnd(a, [14]) ? -deltaY : -2147483648), -2147483648, -2147483648, null, null, null, true, false, this.dragged.modifiers); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "checkReleaseAction", +function(x, y, time, dragRelease){ +if (JU.Logger.debuggingHigh && this.vwr.getBoolean(603979960)) JU.Logger.debug(JV.binding.Binding.getMouseActionName(this.pressAction, false)); +this.vwr.checkInMotion(0); +this.vwr.setInMotion(false); +this.vwr.setCursor(0); +this.dragGesture.add(this.dragAction, x, y, time); +if (this.dragAtomIndex >= 0 && !this.vwr.isModelkitPickingRotateBond()) { +if (this.apm == 29 || this.apm == 30) this.minimize(true); +}if (this.apm == 32 && this.bnd(this.clickAction, [0])) { +if (this.mp == null || this.dragAtomIndex < 0) { +this.exitMeasurementMode(null); +return; +} else if (this.bondPickingMode == 34) { +this.vwr.setModelkitPropertySafely("rotateBond", Integer.$valueOf(this.dragAtomIndex)); +this.exitMeasurementMode(null); +return; +}this.assignNew(-1); +return; +}this.dragAtomIndex = -1; +this.mkBondPressed = false; +var isRbAction = this.isRubberBandSelect(this.dragAction); +if (isRbAction) this.selectRb(this.clickAction); +this.rubberbandSelectionMode = (this.b.name.equals("drag")); +this.rectRubber.x = 2147483647; +if (dragRelease) { +this.vwr.notifyMouseClicked(x, y, JV.binding.Binding.getMouseAction(this.pressedCount, 0, 5), 5); +}if (this.isDrawOrLabelAction(this.dragAction)) { +this.vwr.checkObjectDragged(2147483647, 0, x, y, this.dragAction); +return; +}if (this.haveSelection && this.dragSelectedMode && this.bnd(this.dragAction, [13])) this.vwr.moveSelectedXY(2147483647, 0, this.dragged.modifiers); +if (dragRelease && this.checkUserAction(this.pressAction, x, y, 0, 0, time, 5)) return; +if (this.vwr.getBoolean(603979780)) { +if (this.bnd(this.dragAction, [44])) { +var speed = this.getExitRate(); +if (speed > 0) this.vwr.spinXYBy(this.dragGesture.getDX(4, 2), this.dragGesture.getDY(4, 2), speed * 30 * this.gestureSwipeFactor); +if (this.vwr.g.logGestures) this.vwr.log("$NOW$ swipe " + this.dragGesture + " " + speed); +return; +}}}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "checkClickAction", +function(x, y, time, clickedCount){ +if (clickedCount > 1 && (this.apm == 5 || this.apm == 6)) { +this.resetMeasurement(); +this.runScript("draw ID sym* delete;spin off;"); +return; +}if (clickedCount > 0) { +if (this.checkUserAction(this.clickAction, x, y, 0, 0, time, 32768)) return; +this.clickAction = this.vwr.notifyMouseClicked(x, y, this.clickAction, 32768); +if (this.clickAction == 0) return; +}if (JU.Logger.debuggingHigh && this.vwr.getBoolean(603979960)) JU.Logger.debug(JV.binding.Binding.getMouseActionName(this.clickAction, false)); +if (this.bnd(this.clickAction, [2])) { +if (this.vwr.frankClicked(x, y)) { +this.vwr.popupMenu(-x, y, 'j'); +return; +}if (this.vwr.frankClickedModelKit(x, y)) { +this.vwr.popupMenu(10, 0, 'm'); +return; +}}var nearestPoint = null; +var isBond = false; +var isIsosurface = false; +var map = null; +if (!this.drawMode) { +map = this.vwr.checkObjectClicked(x, y, this.clickAction); +if (map != null) { +if (this.labelMode) { +this.pickLabel((map.get("atomIndex")).intValue()); +return; +}isBond = "bond".equals(map.get("type")); +isIsosurface = "isosurface".equals(map.get("type")); +nearestPoint = this.getPoint(map); +if (isBond && this.vwr.isModelkitPickingRotateBond()) { +this.vwr.highlightBond((map.get("index")).intValue(), -1, x, y); +}}}if (isBond) clickedCount = 1; +if (nearestPoint != null && Float.isNaN(nearestPoint.x)) return; +var nearestAtomIndex = this.findNearestAtom(x, y, nearestPoint, clickedCount > 0); +if (this.bnd(this.clickAction, [23])) { +this.doPopup(x, y); +return; +}if (clickedCount == 0 && this.apm != 32 && !this.vwr.isModelkitPickingRotateBond()) { +if (this.mp == null) return; +if (nearestPoint != null || this.mp.getIndexOf(nearestAtomIndex) == 0) { +try { +this.mp.addPoint(nearestAtomIndex, nearestPoint, false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.exitMeasurementMode(null); +return; +} else { +throw e; +} +} +}if (this.mp.haveModified) this.vwr.setPendingMeasurement(this.mp); +this.vwr.refresh(3, "measurementPending"); +return; +}this.setMouseMode(); +if (this.bnd(this.clickAction, [43])) { +this.vwr.tm.stopMotion(); +}if (this.vwr.getBoolean(603979889) && this.apm == 23 && this.bnd(this.clickAction, [21])) { +this.vwr.navTranslatePercent(x * 100 / this.vwr.getScreenWidth() - 50, y * 100 / this.vwr.getScreenHeight() - 50); +return; +}if (isBond) { +if (this.bnd(this.clickAction, [this.bondPickingMode == 34 || this.bondPickingMode == 33 ? 0 : 5])) { +this.bondPicked((map.get("index")).intValue()); +this.vwr.refresh(1, "bondpicked"); +return; +}} else if (isIsosurface) { +return; +} else { +if (this.apm != 32 && this.mp != null && this.bnd(this.clickAction, [20])) { +this.atomOrPointPicked(nearestAtomIndex, nearestPoint); +if (this.addToMeasurement(nearestAtomIndex, nearestPoint, false) == 4) this.toggleMeasurement(); +return; +}if (this.bnd(this.clickAction, [37])) { +if (this.mp != null) { +this.addToMeasurement(nearestAtomIndex, nearestPoint, true); +this.toggleMeasurement(); +} else if (!this.drawMode && !this.labelMode && !this.dragSelectedMode && this.measuresEnabled) { +this.enterMeasurementMode(nearestAtomIndex); +this.addToMeasurement(nearestAtomIndex, nearestPoint, true); +}this.atomOrPointPicked(nearestAtomIndex, nearestPoint); +return; +}}if (this.isSelectAction(this.clickAction)) { +if (!isIsosurface) this.atomOrPointPicked(nearestAtomIndex, nearestPoint); +return; +}if (this.bnd(this.clickAction, [24])) { +if (nearestAtomIndex < 0) this.reset(); +return; +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "doPopup", +function(x, y){ +this.vwr.popupMenu(x, y, this.vwr.isModelKitOpen() ? 'm' : 'j'); +}, "~N,~N"); +Clazz_defineMethod(c$, "pickLabel", +function(iatom){ +var label = this.vwr.ms.at[iatom].atomPropertyString(this.vwr, 1825200146); +if (this.pressedCount == 2) { +label = this.vwr.apiPlatform.prompt("Set label for atomIndex=" + iatom, label, null, false); +if (label != null) { +this.vwr.shm.setAtomLabel(label, iatom); +this.vwr.refresh(1, "label atom"); +}} else { +this.setAtomsPicked(JU.BSUtil.newAndSetBit(iatom), "Label picked for atomIndex = " + iatom + ": " + label); +}}, "~N"); +Clazz_defineMethod(c$, "checkUserAction", +function(mouseAction, x, y, deltaX, deltaY, time, mode){ +if (!this.b.isUserAction(mouseAction)) return false; +var passThrough = false; +var obj; +var ht = this.b.getBindings(); +var mkey = mouseAction + "\t"; +for (var key, $key = ht.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (key.indexOf(mkey) != 0 || !JU.AU.isAS(obj = ht.get(key))) continue; +var script = (obj)[1]; +var nearestPoint = null; +if (script.indexOf("_ATOM") >= 0) { +var iatom = this.findNearestAtom(x, y, null, true); +script = JU.PT.rep(script, "_ATOM", "({" + (iatom >= 0 ? "" + iatom : "") + "})"); +if (iatom >= 0) script = JU.PT.rep(script, "_POINT", JU.Escape.eP(this.vwr.ms.at[iatom])); +}if (!this.drawMode && (script.indexOf("_POINT") >= 0 || script.indexOf("_OBJECT") >= 0 || script.indexOf("_BOND") >= 0)) { +var t = this.vwr.checkObjectClicked(x, y, mouseAction); +if (t != null && (nearestPoint = t.get("pt")) != null) { +var isBond = t.get("type").equals("bond"); +if (isBond) script = JU.PT.rep(script, "_BOND", "[{" + t.get("index") + "}]"); +script = JU.PT.rep(script, "_POINT", JU.Escape.eP(nearestPoint)); +script = JU.PT.rep(script, "_OBJECT", JU.Escape.escapeMap(t)); +}script = JU.PT.rep(script, "_BOND", "[{}]"); +script = JU.PT.rep(script, "_OBJECT", "{}"); +}script = JU.PT.rep(script, "_POINT", "{}"); +script = JU.PT.rep(script, "_ACTION", "" + mouseAction); +script = JU.PT.rep(script, "_X", "" + x); +script = JU.PT.rep(script, "_Y", "" + (this.vwr.getScreenHeight() - y)); +script = JU.PT.rep(script, "_DELTAX", "" + deltaX); +script = JU.PT.rep(script, "_DELTAY", "" + deltaY); +script = JU.PT.rep(script, "_TIME", "" + time); +script = JU.PT.rep(script, "_MODE", "" + mode); +if (script.startsWith("+:")) { +passThrough = true; +script = script.substring(2); +}this.vwr.evalStringQuiet(script); +} +return !passThrough; +}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "checkMotionRotateZoom", +function(mouseAction, x, deltaX, deltaY, isDrag){ +var isSlideZoom = this.bnd(mouseAction, [40]) && this.isZoomArea(this.pressed.x); +var isRotateXY = this.bnd(mouseAction, [25]); +var isRotateZorZoom = this.bnd(mouseAction, [29]); +if (!isSlideZoom && !isRotateXY && !isRotateZorZoom) return false; +var isZoom = (isRotateZorZoom && (deltaX == 0 || Math.abs(deltaY) > 5 * Math.abs(deltaX))); +var cursor = (isZoom || this.isZoomArea(this.moved.x) || this.bnd(mouseAction, [46]) ? 8 : isRotateXY || isRotateZorZoom ? 13 : this.bnd(mouseAction, [1]) ? 12 : 0); +this.setMotion(cursor, isDrag); +return (isZoom || isSlideZoom); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "getExitRate", +function(){ +var dt = this.dragGesture.getTimeDifference(2); +return (this.isMultiTouch ? (dt > (80) ? 0 : this.dragGesture.getSpeedPixelsPerMillisecond(2, 1)) : (dt > 10 ? 0 : this.dragGesture.getSpeedPixelsPerMillisecond(4, 2))); +}); +Clazz_defineMethod(c$, "isRubberBandSelect", +function(action){ +action = action & -8193 | 32768; +return (this.rubberbandSelectionMode && this.bnd(action, [35, 34, 32])); +}, "~N"); +Clazz_defineMethod(c$, "getRubberBand", +function(){ +return (this.rubberbandSelectionMode && this.rectRubber.x != 2147483647 ? this.rectRubber : null); +}); +Clazz_defineMethod(c$, "calcRectRubberBand", +function(){ +var factor = (this.vwr.antialiased ? 2 : 1); +if (this.current.x < this.pressed.x) { +this.rectRubber.x = this.current.x * factor; +this.rectRubber.width = (this.pressed.x - this.current.x) * factor; +} else { +this.rectRubber.x = this.pressed.x * factor; +this.rectRubber.width = (this.current.x - this.pressed.x) * factor; +}if (this.current.y < this.pressed.y) { +this.rectRubber.y = this.current.y * factor; +this.rectRubber.height = (this.pressed.y - this.current.y) * factor; +} else { +this.rectRubber.y = this.pressed.y * factor; +this.rectRubber.height = (this.current.y - this.pressed.y) * factor; +}}); +Clazz_defineMethod(c$, "getDegrees", +function(delta, isX){ +return delta / Math.min(500, isX ? this.vwr.getScreenWidth() : this.vwr.getScreenHeight()) * 180 * this.mouseDragFactor; +}, "~N,~B"); +Clazz_defineMethod(c$, "isZoomArea", +function(x){ +return x > this.vwr.getScreenWidth() * (this.vwr.tm.stereoDoubleFull || this.vwr.tm.stereoDoubleDTI ? 2 : 1) * 98 / 100; +}, "~N"); +Clazz_defineMethod(c$, "getPoint", +function(t){ +var pt = new JU.Point3fi(); +pt.setT(t.get("pt")); +pt.mi = (t.get("modelIndex")).intValue(); +return pt; +}, "java.util.Map"); +Clazz_defineMethod(c$, "findNearestAtom", +function(x, y, nearestPoint, isClicked){ +var index = (this.drawMode || nearestPoint != null ? -1 : this.vwr.findNearestAtomIndexMovable(x, y, false)); +return (index >= 0 && (isClicked || this.mp == null) && !this.vwr.slm.isInSelectionSubset(index) ? -1 : index); +}, "~N,~N,JU.Point3fi,~B"); +Clazz_defineMethod(c$, "isSelectAction", +function(action){ +return (this.bnd(action, [17]) || !this.drawMode && !this.labelMode && this.apm == 1 && this.bnd(action, [1]) || this.dragSelectedMode && this.bnd(this.dragAction, [27, 13]) || this.bnd(action, [22, 35, 32, 34, 36, 30])); +}, "~N"); +Clazz_defineMethod(c$, "enterMeasurementMode", +function(iAtom){ +this.vwr.setPicked(iAtom, true); +this.vwr.setCursor(1); +this.vwr.setPendingMeasurement(this.mp = this.getMP()); +this.measurementQueued = this.mp; +}, "~N"); +Clazz_defineMethod(c$, "getMP", +function(){ +return (J.api.Interface.getInterface("JM.MeasurementPending", this.vwr, "mouse")).set(this.vwr.ms); +}); +Clazz_defineMethod(c$, "addToMeasurement", +function(atomIndex, nearestPoint, dblClick){ +if (atomIndex == -1 && nearestPoint == null || this.mp == null) { +this.exitMeasurementMode(null); +return 0; +}var measurementCount = this.mp.count; +if (this.mp.traceX != -2147483648 && measurementCount == 2) this.mp.setCount(measurementCount = 1); +return (measurementCount == 4 && !dblClick ? measurementCount : this.mp.addPoint(atomIndex, nearestPoint, true)); +}, "~N,JU.Point3fi,~B"); +Clazz_defineMethod(c$, "resetMeasurement", +function(){ +this.exitMeasurementMode(null); +this.measurementQueued = this.getMP(); +}); +Clazz_defineMethod(c$, "exitMeasurementMode", +function(refreshWhy){ +if (this.mp == null) return; +this.vwr.setPendingMeasurement(this.mp = null); +this.vwr.setCursor(0); +if (refreshWhy != null) this.vwr.refresh(3, refreshWhy); +}, "~S"); +Clazz_defineMethod(c$, "getSequence", +function(){ +var a1 = this.measurementQueued.getAtomIndex(1); +var a2 = this.measurementQueued.getAtomIndex(2); +if (a1 < 0 || a2 < 0) return; +try { +var sequence = this.vwr.getSmilesOpt(null, a1, a2, 1048576, null); +this.vwr.setStatusMeasuring("measureSequence", -2, sequence, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "minimize", +function(dragDone){ +var iAtom = this.dragAtomIndex; +if (dragDone) { +this.dragAtomIndex = -1; +this.mkBondPressed = false; +}this.vwr.dragMinimizeAtom(iAtom); +}, "~B"); +Clazz_defineMethod(c$, "queueAtom", +function(atomIndex, ptClicked){ +var n = this.measurementQueued.addPoint(atomIndex, ptClicked, true); +if (atomIndex >= 0) this.vwr.setStatusAtomPicked(atomIndex, "Atom #" + n + ":" + this.vwr.getAtomInfo(atomIndex), null, false); +return n; +}, "~N,JU.Point3fi"); +Clazz_defineMethod(c$, "setMotion", +function(cursor, inMotion){ +switch (this.vwr.currentCursor) { +case 3: +break; +default: +this.vwr.setCursor(cursor); +} +if (inMotion) this.vwr.setInMotion(true); +}, "~N,~B"); +Clazz_defineMethod(c$, "zoomByFactor", +function(dz, x, y){ +if (dz == 0) return; +this.setMotion(8, true); +this.vwr.zoomByFactor(Math.pow(this.mouseWheelFactor, dz), x, y); +this.moved.setCurrent(this.current, 0); +this.vwr.setInMotion(true); +this.zoomTrigger = true; +this.startHoverWatcher(true); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "runScript", +function(script){ +this.vwr.evalStringGUI(script); +}, "~S"); +Clazz_defineMethod(c$, "atomOrPointPicked", +function(atomIndex, ptClicked){ +if (atomIndex < 0) { +this.resetMeasurement(); +if (this.bnd(this.clickAction, [33])) { +this.runScript("select none"); +return; +}if (this.apm != 5 && this.apm != 6) return; +}var n = 2; +switch (this.apm) { +case 28: +case 29: +return; +case 0: +return; +case 25: +case 24: +case 8: +var isDelete = (this.apm == 8); +var isStruts = (this.apm == 25); +if (!this.bnd(this.clickAction, [(isDelete ? 5 : 3)])) return; +if (this.measurementQueued == null || this.measurementQueued.count == 0 || this.measurementQueued.count > 2) { +this.resetMeasurement(); +this.enterMeasurementMode(atomIndex); +}this.addToMeasurement(atomIndex, ptClicked, true); +if (this.queueAtom(atomIndex, ptClicked) != 2) return; +var cAction = (isDelete || this.measurementQueued.isConnected(this.vwr.ms.at, 2) ? " DELETE" : isStruts ? "STRUTS" : ""); +this.runScript("connect " + this.measurementQueued.getMeasurementScript(" ", true) + cAction); +this.resetMeasurement(); +return; +case 21: +n++; +case 20: +n++; +case 18: +case 19: +case 22: +if (!this.bnd(this.clickAction, [20])) return; +if (this.measurementQueued == null || this.measurementQueued.count == 0 || this.measurementQueued.count > n) { +this.resetMeasurement(); +this.enterMeasurementMode(atomIndex); +}this.addToMeasurement(atomIndex, ptClicked, true); +this.queueAtom(atomIndex, ptClicked); +var i = this.measurementQueued.count; +if (i == 1) this.vwr.setPicked(atomIndex, true); +if (i < n) return; +if (this.apm == 22) { +this.getSequence(); +} else { +this.vwr.setStatusMeasuring("measurePicked", n, this.measurementQueued.getStringDetail(), this.measurementQueued.value); +if (this.apm == 18 || this.pickingStyleMeasure == 4) { +this.runScript("measure " + this.measurementQueued.getMeasurementScript(" ", true)); +}}this.resetMeasurement(); +return; +} +var mode = (this.mp != null && this.apm != 1 ? 1 : this.apm); +switch (mode) { +case 3: +if (!this.bnd(this.clickAction, [17])) return; +if (ptClicked == null) { +this.zoomTo(atomIndex); +} else { +this.runScript("zoomTo " + JU.Escape.eP(ptClicked)); +}return; +case 5: +case 6: +if (this.bnd(this.clickAction, [17])) { +this.checkTwoAtomAction(ptClicked, atomIndex); +return; +}} +if (ptClicked != null) return; +var bs; +switch (mode) { +case 1: +if (!this.drawMode && !this.labelMode && this.bnd(this.clickAction, [1])) this.zoomTo(atomIndex); + else if (this.bnd(this.clickAction, [17])) this.vwr.setStatusAtomPicked(atomIndex, null, null, false); +return; +case 2: +if (this.bnd(this.clickAction, [19])) { +this.runScript("set labeltoggle {atomindex=" + atomIndex + "}"); +this.pickLabel(atomIndex); +}return; +case 31: +if (this.bnd(this.clickAction, [0])) { +this.vwr.invertAtomCoord(null, null, null, atomIndex, true); +this.vwr.setStatusAtomPicked(atomIndex, "invert stereo for atomIndex=" + atomIndex, null, false); +}return; +case 7: +if (this.bnd(this.clickAction, [4])) { +bs = JU.BSUtil.newAndSetBit(atomIndex); +this.vwr.deleteAtoms(bs, false); +this.vwr.setStatusAtomPicked(atomIndex, "deleted: " + JU.Escape.eBS(bs), null, false); +}return; +} +var spec = "atomindex=" + atomIndex; +switch (this.apm) { +default: +return; +case 9: +this.selectAtoms(spec); +break; +case 10: +this.selectAtoms("within(group, " + spec + ")"); +break; +case 11: +this.selectAtoms("within(chain, " + spec + ")"); +break; +case 13: +this.selectAtoms("within(polymer, " + spec + ")"); +break; +case 14: +this.selectAtoms("within(structure, " + spec + ")"); +break; +case 12: +this.selectAtoms("within(molecule, " + spec + ")"); +break; +case 16: +this.selectAtoms("within(model, " + spec + ")"); +break; +case 17: +this.selectAtoms("visible and within(element, " + spec + ")"); +break; +case 15: +this.selectAtoms("visible and within(site, " + spec + ")"); +break; +} +this.vwr.clearClickCount(); +this.vwr.setStatusAtomPicked(atomIndex, null, null, false); +}, "~N,JU.Point3fi"); +Clazz_defineMethod(c$, "assignNew", +function(key){ +if (key < 0) { +if (!this.vwr.getModelkit(false).handleAssignNew(this.pressed, this.dragged, this.mp, this.dragAtomIndex, key)) { +this.exitMeasurementMode("bond dropped"); +}} else { +this.vwr.getModelkit(false).handleAssignNew(this.current, this.current, null, this.dragAtomIndex, key); +}this.exitMeasurementMode(null); +}, "~N"); +Clazz_defineMethod(c$, "bondPicked", +function(index){ +switch (this.bondPickingMode) { +case 33: +this.vwr.undoMoveActionClear(-1, 4146, true); +this.vwr.setModelkitPropertySafely("assignBond", Integer.$valueOf(index)); +break; +case 34: +break; +case 8: +this.vwr.deleteBonds(JU.BSUtil.newAndSetBit(index)); +} +}, "~N"); +Clazz_defineMethod(c$, "checkTwoAtomAction", +function(ptClicked, atomIndex){ +var isSpin = (this.apm == 5); +var isSymmetry = (this.apm == 6); +if (!isSpin && !isSymmetry) return; +if (this.vwr.tm.spinOn || this.vwr.tm.navOn || this.vwr.getPendingMeasurement() != null) { +this.resetMeasurement(); +if (this.vwr.tm.spinOn) this.runScript("spin off"); +return; +}if (this.measurementQueued.count >= 2) this.resetMeasurement(); +var queuedAtomCount = this.measurementQueued.count; +if (queuedAtomCount == 1) { +if (ptClicked == null) { +if (this.measurementQueued.getAtomIndex(1) == atomIndex) return; +} else { +if (this.measurementQueued.getAtom(1).distance(ptClicked) == 0) return; +}}if (!isSpin && !isSymmetry) return; +if (atomIndex >= 0 || ptClicked != null) queuedAtomCount = this.queueAtom(atomIndex, ptClicked); +if (queuedAtomCount < 2) { +if (isSpin) this.vwr.scriptStatus(queuedAtomCount == 1 ? J.i18n.GT.$("pick one more atom in order to spin the model around an axis") : J.i18n.GT.$("pick two atoms in order to spin the model around an axis")); + else this.vwr.scriptStatus(queuedAtomCount == 1 ? J.i18n.GT.$("pick one more atom in order to display the symmetry relationship") : J.i18n.GT.$("pick two atoms in order to display the symmetry relationship between them")); +return; +}var s = this.measurementQueued.getMeasurementScript(" ", false); +this.resetMeasurement(); +if (isSpin) this.runScript("spin" + s + " " + this.vwr.getInt(553648157)); + else this.runScript("draw symop " + s + ";print 'all:';show symop " + s); +}, "JU.Point3fi,~N"); +Clazz_defineMethod(c$, "reset", +function(){ +this.runScript("!reset"); +}); +Clazz_defineMethod(c$, "selectAtoms", +function(item){ +if (this.mp != null || this.selectionWorking) return; +this.selectionWorking = true; +var s = (this.rubberbandSelectionMode || this.bnd(this.clickAction, [35]) ? "selected and not (" + item + ") or (not selected) and " : this.bnd(this.clickAction, [32]) ? "selected and not " : this.bnd(this.clickAction, [34]) ? "selected or " : this.clickAction == 0 || this.bnd(this.clickAction, [36]) ? "selected tog " : this.bnd(this.clickAction, [30]) ? "" : null); +if (s != null) { +s += "(" + item + ")"; +try { +var bs = this.vwr.getAtomBitSetEval(null, s); +this.setAtomsPicked(bs, "selected: " + JU.Escape.eBS(bs)); +this.vwr.refresh(3, "selections set"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}this.selectionWorking = false; +}, "~S"); +Clazz_defineMethod(c$, "setAtomsPicked", +function(bs, msg){ +this.vwr.selectStatus(bs, false, 0, false, true); +this.vwr.setStatusAtomPicked(-1, msg, null, false); +}, "JU.BS,~S"); +Clazz_defineMethod(c$, "selectRb", +function(action){ +var bs = this.vwr.ms.findAtomsInRectangle(this.rectRubber); +if (bs.length() > 0) { +var s = JU.Escape.eBS(bs); +if (this.bnd(action, [34])) this.runScript("selectionHalos on;select selected or " + s); + else if (this.bnd(action, [32])) this.runScript("selectionHalos on;select selected and not " + s); + else this.runScript("selectionHalos on;select selected tog " + s); +}this.vwr.refresh(3, "mouseReleased"); +}, "~N"); +Clazz_defineMethod(c$, "toggleMeasurement", +function(){ +if (this.mp == null) return; +var measurementCount = this.mp.count; +if (measurementCount >= 2 && measurementCount <= 4) this.runScript("!measure " + this.mp.getMeasurementScript(" ", true)); +this.exitMeasurementMode(null); +}); +Clazz_defineMethod(c$, "zoomTo", +function(atomIndex){ +this.runScript("zoomTo (atomindex=" + atomIndex + ")"); +this.vwr.setStatusAtomPicked(atomIndex, null, null, false); +}, "~N"); +Clazz_defineMethod(c$, "userActionEnabled", +function(action){ +return this.vwr.isFunction(JV.ActionManager.getActionName(action).toLowerCase()); +}, "~N"); +Clazz_defineMethod(c$, "userAction", +function(action, params){ +if (!this.userActionEnabled(action)) return false; +var result = JS.ScriptEval.runUserAction(JV.ActionManager.getActionName(action), params, this.vwr); +return !JS.SV.vF.equals(result); +}, "~N,~A"); +c$.actionInfo = new Array(47); +c$.actionNames = new Array(47); +{ +JV.ActionManager.pickingModeNames = "off identify label center draw spin symmetry deleteatom deletebond atom group chain molecule polymer structure site model element measure distance angle torsion sequence navigate connect struts dragselected dragmolecule dragatom dragminimize dragminimizemolecule invertstereo assignatom assignbond rotatebond identifybond dragligand dragmodel symop".$plit(" "); +}{ +JV.ActionManager.pickingStyleNames = "toggle selectOrToggle extendedSelect drag measure measureoff".$plit(" "); +}var c$ = Clazz_decorateAsClass(function(){ +this.index = 0; +this.x = 0; +this.y = 0; +this.time = 0; +Clazz_instantialize(this, arguments);}, JV, "MotionPoint", null); +Clazz_defineMethod(c$, "set", +function(index, x, y, time){ +this.index = index; +this.x = x; +this.y = y; +this.time = time; +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[x = " + this.x + " y = " + this.y + " time = " + this.time + " ]"; +}); +var c$ = Clazz_decorateAsClass(function(){ +this.action = 0; +this.nodes = null; +this.ptNext = 0; +this.time0 = 0; +this.vwr = null; +Clazz_instantialize(this, arguments);}, JV, "Gesture", null); +Clazz_makeConstructor(c$, +function(nPoints, vwr){ +this.vwr = vwr; +this.nodes = new Array(nPoints); +for (var i = 0; i < nPoints; i++) this.nodes[i] = new JV.MotionPoint(); + +}, "~N,JV.Viewer"); +Clazz_defineMethod(c$, "setAction", +function(action, time){ +this.action = action; +this.ptNext = 0; +this.time0 = time; +for (var i = 0; i < this.nodes.length; i++) this.nodes[i].index = -1; + +}, "~N,~N"); +Clazz_defineMethod(c$, "add", +function(action, x, y, time){ +this.action = action; +this.getNode(this.ptNext).set(this.ptNext, x, y, time - this.time0); +this.ptNext++; +return this.ptNext; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getTimeDifference", +function(nPoints){ +nPoints = this.getPointCount2(nPoints, 0); +if (nPoints < 2) return 0; +var mp1 = this.getNode(this.ptNext - 1); +var mp0 = this.getNode(this.ptNext - nPoints); +return mp1.time - mp0.time; +}, "~N"); +Clazz_defineMethod(c$, "getSpeedPixelsPerMillisecond", +function(nPoints, nPointsPrevious){ +nPoints = this.getPointCount2(nPoints, nPointsPrevious); +if (nPoints < 2) return 0; +var mp1 = this.getNode(this.ptNext - 1 - nPointsPrevious); +var mp0 = this.getNode(this.ptNext - nPoints - nPointsPrevious); +var dx = ((mp1.x - mp0.x)) / this.vwr.getScreenWidth() * 360; +var dy = ((mp1.y - mp0.y)) / this.vwr.getScreenHeight() * 360; +return Math.sqrt(dx * dx + dy * dy) / (mp1.time - mp0.time); +}, "~N,~N"); +Clazz_defineMethod(c$, "getDX", +function(nPoints, nPointsPrevious){ +nPoints = this.getPointCount2(nPoints, nPointsPrevious); +if (nPoints < 2) return 0; +var mp1 = this.getNode(this.ptNext - 1 - nPointsPrevious); +var mp0 = this.getNode(this.ptNext - nPoints - nPointsPrevious); +return mp1.x - mp0.x; +}, "~N,~N"); +Clazz_defineMethod(c$, "getDY", +function(nPoints, nPointsPrevious){ +nPoints = this.getPointCount2(nPoints, nPointsPrevious); +if (nPoints < 2) return 0; +var mp1 = this.getNode(this.ptNext - 1 - nPointsPrevious); +var mp0 = this.getNode(this.ptNext - nPoints - nPointsPrevious); +return mp1.y - mp0.y; +}, "~N,~N"); +Clazz_defineMethod(c$, "getPointCount", +function(){ +return this.ptNext; +}); +Clazz_defineMethod(c$, "getPointCount2", +function(nPoints, nPointsPrevious){ +if (nPoints > this.nodes.length - nPointsPrevious) nPoints = this.nodes.length - nPointsPrevious; +var n = nPoints + 1; +for (; --n >= 0; ) if (this.getNode(this.ptNext - n - nPointsPrevious).index >= 0) break; + +return n; +}, "~N,~N"); +Clazz_defineMethod(c$, "getNode", +function(i){ +return this.nodes[(i + this.nodes.length + this.nodes.length) % this.nodes.length]; +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.nodes.length == 0) return "" + this; +return JV.binding.Binding.getMouseActionName(this.action, false) + " nPoints = " + this.ptNext + " " + this.nodes[0]; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["JU.BS"], "JV.AnimationManager", ["J.api.Interface", "JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.animationThread = null; +this.vwr = null; +this.animationOn = false; +this.animationFps = 0; +this.firstFrameDelayMs = 0; +this.lastFrameDelayMs = 0; +this.bsVisibleModels = null; +this.animationReplayMode = 1073742070; +this.bsDisplay = null; +this.animationFrames = null; +this.isMovie = false; +this.animationPaused = false; +this.cmi = 0; +this.caf = 0; +this.morphCount = 0; +this.animationDirection = 1; +this.currentDirection = 1; +this.firstFrameIndex = 0; +this.lastFrameIndex = 0; +this.frameStep = 0; +this.backgroundModelIndex = -1; +this.currentMorphModel = 0; +this.firstFrameDelay = 0; +this.lastFrameDelay = 1; +this.lastFramePainted = 0; +this.lastModelPainted = 0; +this.intAnimThread = 0; +this.cai = -1; +Clazz_instantialize(this, arguments);}, JV, "AnimationManager", null); +Clazz_prepareFields (c$, function(){ +this.bsVisibleModels = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "setAnimationOn", +function(animationOn){ +if (animationOn == this.animationOn) return; +if (!animationOn || this.vwr.headless) { +this.stopThread(false); +return; +}if (!this.vwr.tm.spinOn) this.vwr.refresh(3, "Anim:setAnimationOn"); +this.setAnimationRange(-1, -1); +this.resumeAnimation(); +}, "~B"); +Clazz_defineMethod(c$, "stopThread", +function(isPaused){ +var stopped = false; +if (this.animationThread != null) { +this.animationThread.interrupt(); +this.animationThread = null; +stopped = true; +}this.animationPaused = isPaused; +if (stopped && !this.vwr.tm.spinOn) this.vwr.refresh(3, "Viewer:setAnimationOff"); +this.animation(false); +this.vwr.setStatusFrameChanged(false, false); +}, "~B"); +Clazz_defineMethod(c$, "setAnimationNext", +function(){ +return this.setAnimationRelative(this.animationDirection); +}); +Clazz_defineMethod(c$, "currentIsLast", +function(){ +return (this.isMovie ? this.lastFramePainted == this.caf : this.lastModelPainted == this.cmi); +}); +Clazz_defineMethod(c$, "currentFrameIs", +function(f){ +var i = this.cmi; +return (this.morphCount == 0 ? i == f : Math.abs(this.currentMorphModel - f) < 0.001); +}, "~N"); +Clazz_defineMethod(c$, "clear", +function(){ +this.setMovie(null); +this.initializePointers(0); +this.setAnimationOn(false); +this.setModel(0, true); +this.currentDirection = 1; +this.cai = -1; +this.setAnimationDirection(1); +this.setAnimationFps(10); +this.setAnimationReplayMode(1073742070, 0, 0); +this.initializePointers(0); +}); +Clazz_defineMethod(c$, "getModelSpecial", +function(i){ +switch (i) { +case -1: +if (this.animationFrames != null) return "1"; +i = this.firstFrameIndex; +break; +case 0: +if (this.morphCount > 0) return "-" + (1 + this.currentMorphModel); +i = this.cmi; +break; +case 1: +if (this.animationFrames != null) return "" + this.animationFrames.length; +i = this.lastFrameIndex; +break; +} +return this.vwr.getModelNumberDotted(i); +}, "~N"); +Clazz_defineMethod(c$, "setDisplay", +function(bs){ +this.bsDisplay = (bs == null || bs.isEmpty() ? null : JU.BSUtil.copy(bs)); +}, "JU.BS"); +Clazz_defineMethod(c$, "setMorphCount", +function(n){ +this.morphCount = (this.isMovie ? 0 : n); +}, "~N"); +Clazz_defineMethod(c$, "morph", +function(modelIndex){ +var m = Clazz_floatToInt(modelIndex); +if (Math.abs(m - modelIndex) < 0.001) modelIndex = m; + else if (Math.abs(m - modelIndex) > 0.999) modelIndex = m = m + 1; +var f = modelIndex - m; +m -= 1; +if (f == 0) { +this.currentMorphModel = m; +this.setModel(m, true); +return; +}var m1; +this.setModel(m, true); +m1 = m + 1; +this.currentMorphModel = m + f; +if (m1 == m || m1 < 0 || m < 0) return; +this.vwr.ms.morphTrajectories(m, m1, f); +}, "~N"); +Clazz_defineMethod(c$, "setModel", +function(modelIndex, clearBackgroundModel){ +if (modelIndex < 0) this.stopThread(false); +var formerModelIndex = this.cmi; +var modelSet = this.vwr.ms; +var modelCount = (modelSet == null ? 0 : modelSet.mc); +if (modelCount == 1) this.cmi = modelIndex = 0; + else if (modelIndex < 0 || modelIndex >= modelCount) modelIndex = -1; +var ids = null; +var isSameSource = false; +if (this.cmi != modelIndex) { +if (modelCount > 0) { +var ms = this.vwr.ms; +var toDataModel = ms.isJmolDataFrameForModel(modelIndex); +var fromDataModel = ms.isJmolDataFrameForModel(this.cmi); +if (fromDataModel) ms.setJmolDataFrame(null, -1, this.cmi); +if (this.cmi != -1) this.vwr.saveModelOrientation(); +if (fromDataModel || toDataModel) { +ids = ms.getJmolFrameType(modelIndex) + " " + modelIndex + " <-- " + " " + this.cmi + " " + ms.getJmolFrameType(this.cmi); +isSameSource = (ms.getJmolDataSourceFrame(modelIndex) == ms.getJmolDataSourceFrame(this.cmi)); +}}this.cmi = modelIndex; +if (ids != null) { +if (modelIndex >= 0) this.vwr.restoreModelOrientation(modelIndex); +if (isSameSource && (ids.indexOf("quaternion") >= 0 || ids.indexOf("plot") < 0 && ids.indexOf("ramachandran") < 0 && ids.indexOf(" property ") < 0)) { +this.vwr.restoreModelRotation(formerModelIndex); +}}}this.setViewer(clearBackgroundModel); +}, "~N,~B"); +Clazz_defineMethod(c$, "setBackgroundModelIndex", +function(modelIndex){ +var modelSet = this.vwr.ms; +if (modelSet == null || modelIndex < 0 || modelIndex >= modelSet.mc) modelIndex = -1; +this.backgroundModelIndex = modelIndex; +if (modelIndex >= 0) this.vwr.ms.setTrajectory(modelIndex); +this.vwr.setTainted(true); +this.setFrameRangeVisible(); +}, "~N"); +Clazz_defineMethod(c$, "initializePointers", +function(frameStep){ +this.firstFrameIndex = 0; +this.lastFrameIndex = (frameStep == 0 ? 0 : this.getFrameCount()) - 1; +this.frameStep = frameStep; +this.vwr.setFrameVariables(); +}, "~N"); +Clazz_defineMethod(c$, "setAnimationDirection", +function(animationDirection){ +this.animationDirection = animationDirection; +}, "~N"); +Clazz_defineMethod(c$, "setAnimationFps", +function(fps){ +if (fps < 1) fps = 1; +if (fps > 50) fps = 50; +this.animationFps = fps; +this.vwr.setFrameVariables(); +}, "~N"); +Clazz_defineMethod(c$, "setAnimationReplayMode", +function(animationReplayMode, firstFrameDelay, lastFrameDelay){ +this.firstFrameDelay = firstFrameDelay > 0 ? firstFrameDelay : 0; +this.firstFrameDelayMs = Clazz_floatToInt(this.firstFrameDelay * 1000); +this.lastFrameDelay = lastFrameDelay > 0 ? lastFrameDelay : 0; +this.lastFrameDelayMs = Clazz_floatToInt(this.lastFrameDelay * 1000); +this.animationReplayMode = animationReplayMode; +this.vwr.setFrameVariables(); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setAnimationRange", +function(framePointer, framePointer2){ +var frameCount = this.getFrameCount(); +if (framePointer < 0) framePointer = 0; +if (framePointer2 < 0) framePointer2 = frameCount; +if (framePointer >= frameCount) framePointer = frameCount - 1; +if (framePointer2 >= frameCount) framePointer2 = frameCount - 1; +this.firstFrameIndex = framePointer; +this.currentMorphModel = this.firstFrameIndex; +this.lastFrameIndex = framePointer2; +this.frameStep = (framePointer2 < framePointer ? -1 : 1); +this.rewindAnimation(); +}, "~N,~N"); +Clazz_defineMethod(c$, "pauseAnimation", +function(){ +this.stopThread(true); +}); +Clazz_defineMethod(c$, "reverseAnimation", +function(){ +this.currentDirection = -this.currentDirection; +if (!this.animationOn) this.resumeAnimation(); +}); +Clazz_defineMethod(c$, "repaintDone", +function(){ +this.lastModelPainted = this.cmi; +this.lastFramePainted = this.caf; +}); +Clazz_defineMethod(c$, "resumeAnimation", +function(){ +if (this.cmi < 0) this.setAnimationRange(this.firstFrameIndex, this.lastFrameIndex); +if (this.getFrameCount() <= 1) { +this.animation(false); +return; +}this.animation(true); +this.animationPaused = false; +if (this.animationThread == null) { +this.intAnimThread++; +this.animationThread = J.api.Interface.getOption("thread.AnimationThread", this.vwr, "script"); +this.animationThread.setManager(this, this.vwr, Clazz_newIntArray(-1, [this.firstFrameIndex, this.lastFrameIndex, this.intAnimThread])); +this.animationThread.start(); +}}); +Clazz_defineMethod(c$, "setAnimationLast", +function(){ +this.setFrame(this.animationDirection > 0 ? this.lastFrameIndex : this.firstFrameIndex); +}); +Clazz_defineMethod(c$, "rewindAnimation", +function(){ +this.setFrame(this.animationDirection > 0 ? this.firstFrameIndex : this.lastFrameIndex); +this.currentDirection = 1; +this.vwr.setFrameVariables(); +}); +Clazz_defineMethod(c$, "setAnimationPrevious", +function(){ +return this.setAnimationRelative(-this.animationDirection); +}); +Clazz_defineMethod(c$, "getAnimRunTimeSeconds", +function(){ +var frameCount = this.getFrameCount(); +if (this.firstFrameIndex == this.lastFrameIndex || this.lastFrameIndex < 0 || this.firstFrameIndex < 0 || this.lastFrameIndex >= frameCount || this.firstFrameIndex >= frameCount) return 0; +var i0 = Math.min(this.firstFrameIndex, this.lastFrameIndex); +var i1 = Math.max(this.firstFrameIndex, this.lastFrameIndex); +var nsec = 1 * (i1 - i0) / this.animationFps + this.firstFrameDelay + this.lastFrameDelay; +for (var i = i0; i <= i1; i++) nsec += this.vwr.ms.getFrameDelayMs(this.modelIndexForFrame(i)) / 1000; + +return nsec; +}); +Clazz_defineMethod(c$, "setMovie", +function(info){ +this.isMovie = (info != null && info.get("scripts") == null); +if (this.isMovie) { +this.animationFrames = info.get("frames"); +if (this.animationFrames == null || this.animationFrames.length == 0) { +this.isMovie = false; +} else { +this.caf = (info.get("currentFrame")).intValue(); +if (this.caf < 0 || this.caf >= this.animationFrames.length) this.caf = 0; +}this.setFrame(this.caf); +}if (!this.isMovie) { +this.animationFrames = null; +}this.vwr.setBooleanProperty("_ismovie", this.isMovie); +this.bsDisplay = null; +this.currentMorphModel = this.morphCount = 0; +this.vwr.setFrameVariables(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "modelIndexForFrame", +function(i){ +return (this.isMovie ? this.animationFrames[i] - 1 : i); +}, "~N"); +Clazz_defineMethod(c$, "getFrameCount", +function(){ +return (this.isMovie ? this.animationFrames.length : this.vwr.ms.mc); +}); +Clazz_defineMethod(c$, "setFrame", +function(i){ +try { +if (this.isMovie) { +var iModel = this.modelIndexForFrame(i); +this.caf = i; +i = iModel; +} else { +this.caf = i; +}this.setModel(i, true); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~N"); +Clazz_defineMethod(c$, "getUnitCellAtomIndex", +function(){ +return this.cai; +}); +Clazz_defineMethod(c$, "setUnitCellAtomIndex", +function(iAtom){ +this.cai = iAtom; +}, "~N"); +Clazz_defineMethod(c$, "setViewer", +function(clearBackgroundModel){ +this.vwr.ms.setTrajectory(this.cmi); +this.vwr.tm.setFrameOffset(this.cmi); +if (this.cmi == -1 && clearBackgroundModel) this.setBackgroundModelIndex(-1); +this.vwr.setTainted(true); +var nDisplay = this.setFrameRangeVisible(); +this.vwr.setStatusFrameChanged(false, false); +if (!this.vwr.g.selectAllModels) this.setSelectAllSubset(nDisplay < 2); +}, "~B"); +Clazz_defineMethod(c$, "setSelectAllSubset", +function(justOne){ +if (this.vwr.ms != null) this.vwr.slm.setSelectionSubset(justOne ? this.vwr.ms.getModelAtomBitSetIncludingDeleted(this.cmi, true) : this.vwr.ms.getModelAtomBitSetIncludingDeletedBs(this.bsVisibleModels)); +}, "~B"); +Clazz_defineMethod(c$, "setFrameRangeVisible", +function(){ +var nDisplayed = 0; +this.bsVisibleModels.clearAll(); +if (this.backgroundModelIndex >= 0) { +this.bsVisibleModels.set(this.backgroundModelIndex); +nDisplayed = 1; +}if (this.cmi >= 0) { +this.bsVisibleModels.set(this.cmi); +return ++nDisplayed; +}if (this.frameStep == 0) return nDisplayed; +var frameDisplayed = 0; +nDisplayed = 0; +for (var iframe = this.firstFrameIndex; iframe != this.lastFrameIndex; iframe += this.frameStep) { +var i = this.modelIndexForFrame(iframe); +if (!this.vwr.ms.isJmolDataFrameForModel(i)) { +this.bsVisibleModels.set(i); +nDisplayed++; +frameDisplayed = iframe; +}} +var i = this.modelIndexForFrame(this.lastFrameIndex); +if (this.firstFrameIndex == this.lastFrameIndex || !this.vwr.ms.isJmolDataFrameForModel(i) || nDisplayed == 0) { +this.bsVisibleModels.set(i); +if (nDisplayed == 0) this.firstFrameIndex = this.lastFrameIndex; +nDisplayed = 0; +}if (nDisplayed == 1 && this.cmi < 0) this.setFrame(frameDisplayed); +return nDisplayed; +}); +Clazz_defineMethod(c$, "animation", +function(TF){ +this.animationOn = TF; +this.vwr.setBooleanProperty("_animating", TF); +}, "~B"); +Clazz_defineMethod(c$, "setAnimationRelative", +function(direction){ +var frameStep = this.getFrameStep(direction); +var thisFrame = (this.isMovie ? this.caf : this.cmi); +var frameNext = thisFrame + frameStep; +var morphStep = 0; +var nextMorphFrame = 0; +var isDone; +if (this.morphCount > 0) { +morphStep = 1 / (this.morphCount + 1); +nextMorphFrame = this.currentMorphModel + frameStep * morphStep; +isDone = this.isNotInRange(nextMorphFrame); +} else { +isDone = this.isNotInRange(frameNext); +}if (isDone) { +switch (this.animationReplayMode) { +case 1073742070: +return false; +case 528411: +nextMorphFrame = frameNext = (this.animationDirection == this.currentDirection ? this.firstFrameIndex : this.lastFrameIndex); +break; +case 1073742082: +this.currentDirection = -this.currentDirection; +frameNext -= 2 * frameStep; +nextMorphFrame -= 2 * frameStep * morphStep; +} +}if (this.morphCount < 1) { +if (frameNext < 0 || frameNext >= this.getFrameCount()) return false; +this.setFrame(frameNext); +return true; +}this.morph(nextMorphFrame + 1); +return true; +}, "~N"); +Clazz_defineMethod(c$, "isNotInRange", +function(frameNext){ +var f = frameNext - 0.001; +return (f > this.firstFrameIndex && f > this.lastFrameIndex || (f = frameNext + 0.001) < this.firstFrameIndex && f < this.lastFrameIndex); +}, "~N"); +Clazz_defineMethod(c$, "getFrameStep", +function(direction){ +return this.frameStep * direction * this.currentDirection; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV.binding"); +Clazz_load(["java.util.Hashtable"], "JV.binding.Binding", ["java.util.Arrays", "JU.AU", "$.Lst", "$.PT", "$.SB", "J.api.Interface", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.bindings = null; +Clazz_instantialize(this, arguments);}, JV.binding, "Binding", null); +Clazz_prepareFields (c$, function(){ +this.bindings = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +c$.getMouseAction = Clazz_defineMethod(c$, "getMouseAction", +function(clickCount, modifiers, mode){ +if (clickCount > 2) clickCount = 2; +switch (clickCount) { +case 0: +break; +case 1: +clickCount = 256; +break; +default: +clickCount = 512; +} +switch (mode) { +case 4: +mode = 4096; +break; +case 1: +mode = 8192; +break; +case 5: +mode = 16384; +break; +case 2: +mode = 32768; +break; +case 3: +mode = 32; +} +return (modifiers & 63) | clickCount | mode; +}, "~N,~N,~N"); +c$.getMouseActionStr = Clazz_defineMethod(c$, "getMouseActionStr", +function(desc){ +if (desc == null) return 0; +var mouseAction = 0; +desc = desc.toUpperCase(); +if (desc.indexOf("MIDDLE") >= 0) mouseAction = 8; + else if (desc.indexOf("RIGHT") >= 0) mouseAction = 4; + else if (desc.indexOf("WHEEL") >= 0) mouseAction = 32; + else mouseAction = 16; +if (desc.indexOf("DOWN") >= 0) mouseAction |= 4096; + else if (desc.indexOf("DRAG") >= 0) mouseAction |= 8192; + else if (desc.indexOf("UP") >= 0) mouseAction |= 16384; + else if (mouseAction != 32) mouseAction |= 32768; +if (mouseAction != 32 && desc.indexOf("DOUBLE") >= 0) mouseAction |= 512; + else if (mouseAction > 0) mouseAction |= 256; +if (mouseAction != (288) && desc.indexOf("ALT") >= 0) mouseAction |= 8; +if (desc.indexOf("CTRL") >= 0) mouseAction |= 2; +if (desc.indexOf("SHIFT") >= 0) mouseAction |= 1; +return mouseAction; +}, "~S"); +c$.getButtonMods = Clazz_defineMethod(c$, "getButtonMods", +function(mouseAction){ +return mouseAction & 63; +}, "~N"); +c$.getClickCount = Clazz_defineMethod(c$, "getClickCount", +function(mouseAction){ +return (mouseAction & 768) >> 8; +}, "~N"); +c$.getMouseActionName = Clazz_defineMethod(c$, "getMouseActionName", +function(mouseAction, addSortCode){ +var sb = new JU.SB(); +if (mouseAction == 0) return ""; +var isMiddle = (JV.binding.Binding.includes(mouseAction, 8) && !JV.binding.Binding.includes(mouseAction, 16) && !JV.binding.Binding.includes(mouseAction, 4)); +var code = " ".toCharArray(); +if (JV.binding.Binding.includes(mouseAction, 2)) { +sb.append("CTRL+"); +code[5] = 'C'; +}if (!isMiddle && JV.binding.Binding.includes(mouseAction, 8)) { +sb.append("ALT+"); +code[4] = 'A'; +}if (JV.binding.Binding.includes(mouseAction, 1)) { +sb.append("SHIFT+"); +code[3] = 'S'; +}if (JV.binding.Binding.includes(mouseAction, 16)) { +code[2] = 'L'; +sb.append("LEFT"); +} else if (JV.binding.Binding.includes(mouseAction, 4)) { +code[2] = 'R'; +sb.append("RIGHT"); +} else if (isMiddle) { +code[2] = 'M'; +sb.append("MIDDLE"); +} else if (JV.binding.Binding.includes(mouseAction, 32)) { +code[2] = 'W'; +sb.append("WHEEL"); +}if (JV.binding.Binding.includes(mouseAction, 512)) { +sb.append("+double"); +code[1] = '2'; +}if (JV.binding.Binding.includes(mouseAction, 4096)) { +sb.append("+down"); +code[0] = '1'; +} else if (JV.binding.Binding.includes(mouseAction, 8192)) { +sb.append("+drag"); +code[0] = '2'; +} else if (JV.binding.Binding.includes(mouseAction, 16384)) { +sb.append("+up"); +code[0] = '3'; +} else if (JV.binding.Binding.includes(mouseAction, 32768)) { +sb.append("+click"); +code[0] = '4'; +}return (addSortCode ? String.instantialize(code) + ":" + sb.toString() : sb.toString()); +}, "~N,~B"); +Clazz_defineMethod(c$, "getBindings", +function(){ +return this.bindings; +}); +Clazz_defineMethod(c$, "bindAction", +function(mouseAction, jmolAction){ +this.addBinding(mouseAction + "\t" + jmolAction, Clazz_newIntArray(-1, [mouseAction, jmolAction])); +}, "~N,~N"); +Clazz_defineMethod(c$, "bindName", +function(mouseAction, name){ +this.addBinding(mouseAction + "\t", Boolean.TRUE); +this.addBinding(mouseAction + "\t" + name, Clazz_newArray(-1, [JV.binding.Binding.getMouseActionName(mouseAction, false), name])); +}, "~N,~S"); +Clazz_defineMethod(c$, "unbindAction", +function(mouseAction, jmolAction){ +if (mouseAction == 0) this.unbindJmolAction(jmolAction); + else this.removeBinding(null, mouseAction + "\t" + jmolAction); +}, "~N,~N"); +Clazz_defineMethod(c$, "unbindName", +function(mouseAction, name){ +if (name == null) this.unbindMouseAction(mouseAction); + else this.removeBinding(null, mouseAction + "\t" + name); +}, "~N,~S"); +Clazz_defineMethod(c$, "unbindJmolAction", +function(jmolAction){ +var e = this.bindings.keySet().iterator(); +var skey = "\t" + jmolAction; +while (e.hasNext()) { +var key = e.next(); +if (key.endsWith(skey)) this.removeBinding(e, key); +} +}, "~N"); +Clazz_defineMethod(c$, "addBinding", +function(key, value){ +if (JU.Logger.debugging) JU.Logger.debug("adding binding " + key + "\t==\t" + JU.Escape.e(value)); +this.bindings.put(key, value); +}, "~S,~O"); +Clazz_defineMethod(c$, "removeBinding", +function(e, key){ +if (JU.Logger.debugging) JU.Logger.debug("removing binding " + key); +if (e == null) this.bindings.remove(key); + else e.remove(); +}, "java.util.Iterator,~S"); +Clazz_defineMethod(c$, "unbindUserAction", +function(script){ +var e = this.bindings.keySet().iterator(); +var skey = "\t" + script; +while (e.hasNext()) { +var key = e.next(); +if (key.endsWith(skey)) this.removeBinding(e, key); +} +}, "~S"); +Clazz_defineMethod(c$, "unbindMouseAction", +function(mouseAction){ +var e = this.bindings.keySet().iterator(); +var skey = mouseAction + "\t"; +while (e.hasNext()) { +var key = e.next(); +if (key.startsWith(skey)) this.removeBinding(e, key); +} +}, "~N"); +Clazz_defineMethod(c$, "isBound", +function(mouseAction, jmolAction){ +return this.bindings.containsKey(mouseAction + "\t" + jmolAction); +}, "~N,~N"); +Clazz_defineMethod(c$, "isUserAction", +function(mouseAction){ +return this.bindings.containsKey(mouseAction + "\t"); +}, "~N"); +Clazz_defineMethod(c$, "getBindingInfo", +function(actionInfo, actionNames, qualifiers){ +var sb = new JU.SB(); +var qlow = (qualifiers == null || qualifiers.equalsIgnoreCase("all") ? null : qualifiers.toLowerCase()); +var names = new Array(actionInfo.length); +var user = new JU.Lst(); +for (var obj, $obj = this.bindings.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (Clazz_instanceOf(obj, Boolean)) { +} else if (JU.AU.isAS(obj)) { +var action = (obj)[0]; +var script = (obj)[1]; +if (qlow == null || qlow.indexOf("user") >= 0 || action.indexOf(qlow) >= 0 || script.indexOf(qlow) >= 0) user.addLast(obj); +} else { +var info = obj; +var i = info[1]; +if (names[i] == null) names[i] = new JU.Lst(); +var name = JV.binding.Binding.getMouseActionName(info[0], true); +if (qlow == null || (actionNames[i] + ";" + actionInfo[i] + ";" + name).toLowerCase().indexOf(qlow) >= 0) names[i].addLast(name); +}} +for (var i = 0; i < actionInfo.length; i++) { +var n; +if (names[i] == null || (n = names[i].size()) == 0) continue; +this.addInfo(sb, names[i].toArray( new Array(n)), actionNames[i], actionInfo[i]); +} +for (var i = 0; i < user.size(); i++) { +var info = user.get(i); +this.addInfo(sb, Clazz_newArray(-1, ["USER:::" + info[0]]), "user-defined", info[1]); +} +return sb.toString(); +}, "~A,~A,~S"); +Clazz_defineMethod(c$, "addInfo", +function(sb, list, name, info){ +java.util.Arrays.sort(list); +JU.PT.leftJustify(sb, " ", name); +sb.append("\t"); +var sep = ""; +var len = sb.length(); +for (var j = 0; j < list.length; j++) { +sb.append(sep).append(list[j].substring(7)); +sep = ", "; +} +len = sb.length() - len; +if (len < 20) sb.append(" ".substring(0, 20 - len)); +sb.append("\t").append(info).appendC('\n'); +}, "JU.SB,~A,~S,~S"); +c$.includes = Clazz_defineMethod(c$, "includes", +function(mouseAction, mod){ +return ((mouseAction & mod) == mod); +}, "~N,~N"); +c$.newBinding = Clazz_defineMethod(c$, "newBinding", +function(vwr, name){ +return J.api.Interface.getInterface("JV.binding." + name + "Binding", vwr, "script"); +}, "JV.Viewer,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV.binding"); +Clazz_load(["JV.binding.JmolBinding"], "JV.binding.DragBinding", null, function(){ +var c$ = Clazz_declareType(JV.binding, "DragBinding", JV.binding.JmolBinding); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JV.binding.DragBinding, []); +this.set("drag"); +}); +Clazz_overrideMethod(c$, "setSelectBindings", +function(){ +this.bindAction(33040, 30); +this.bindAction(33041, 35); +this.bindAction(33048, 34); +this.bindAction(33049, 32); +this.bindAction(4368, 31); +this.bindAction(8464, 13); +this.bindAction(33040, 17); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV.binding"); +Clazz_load(["JV.binding.Binding"], "JV.binding.JmolBinding", null, function(){ +var c$ = Clazz_declareType(JV.binding, "JmolBinding", JV.binding.Binding); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JV.binding.JmolBinding, []); +this.set("toggle"); +}); +Clazz_defineMethod(c$, "set", +function(name){ +this.name = name; +this.setGeneralBindings(); +this.setSelectBindings(); +}, "~S"); +Clazz_defineMethod(c$, "setSelectBindings", +function(){ +this.bindAction(33296, 30); +this.bindAction(33040, 36); +}); +Clazz_defineMethod(c$, "setGeneralBindings", +function(){ +this.bindAction(8474, 45); +this.bindAction(8454, 45); +this.bindAction(8721, 45); +this.bindAction(8712, 45); +this.bindAction(8464, 25); +this.bindAction(8720, 25); +this.bindAction(8472, 28); +this.bindAction(8453, 28); +this.bindAction(8465, 29); +this.bindAction(8456, 29); +this.bindAction(288, 46); +this.bindAction(8464, 40); +this.bindAction(8464, 16); +this.bindAction(4370, 23); +this.bindAction(4356, 23); +this.bindAction(33040, 2); +this.bindAction(8467, 38); +this.bindAction(8723, 6); +this.bindAction(8475, 39); +this.bindAction(290, 46); +this.bindAction(289, 46); +this.bindAction(291, 46); +this.bindAction(290, 38); +this.bindAction(289, 6); +this.bindAction(291, 39); +this.bindAction(8464, 44); +this.bindAction(8464, 41); +this.bindAction(8465, 42); +this.bindAction(8473, 13); +this.bindAction(8465, 14); +this.bindAction(8472, 27); +this.bindAction(8465, 26); +this.bindAction(8464, 10); +this.bindAction(8472, 9); +this.bindAction(8465, 8); +this.bindAction(33297, 24); +this.bindAction(33288, 24); +this.bindAction(33296, 43); +this.bindAction(8464, 7); +this.bindAction(8464, 11); +this.bindAction(8464, 12); +this.bindAction(33040, 17); +this.bindAction(33040, 22); +this.bindAction(33040, 19); +this.bindAction(33040, 20); +this.bindAction(33296, 37); +this.bindAction(33040, 18); +this.bindAction(33043, 21); +this.bindAction(33040, 4); +this.bindAction(33040, 5); +this.bindAction(33040, 3); +this.bindAction(33040, 0); +this.bindAction(33043, 1); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(null, "JV.ColorManager", ["JU.AU", "J.c.PAL", "JU.C", "$.ColorEncoder", "$.Elements", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ce = null; +this.vwr = null; +this.g3d = null; +this.argbsCpk = null; +this.altArgbsCpk = null; +this.colorData = null; +this.isDefaultColorRasmol = false; +this.colixRubberband = 22; +this.colixBackgroundContrast = 0; +Clazz_instantialize(this, arguments);}, JV, "ColorManager", null); +Clazz_makeConstructor(c$, +function(vwr, gdata){ +this.vwr = vwr; +this.ce = new JU.ColorEncoder(null, vwr); +this.g3d = gdata; +this.argbsCpk = J.c.PAL.argbsCpk; +this.altArgbsCpk = JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk, 0, -1); +}, "JV.Viewer,JU.GData"); +Clazz_defineMethod(c$, "setDefaultColors", +function(isRasmol){ +if (isRasmol) { +this.isDefaultColorRasmol = true; +this.argbsCpk = JU.AU.arrayCopyI(JU.ColorEncoder.getRasmolScale(), -1); +} else { +this.isDefaultColorRasmol = false; +this.argbsCpk = J.c.PAL.argbsCpk; +}this.altArgbsCpk = JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk, 0, -1); +this.ce.createColorScheme((isRasmol ? "Rasmol=" : "Jmol="), true, true); +for (var i = J.c.PAL.argbsCpk.length; --i >= 0; ) this.g3d.changeColixArgb(i, this.argbsCpk[i]); + +for (var i = JV.JC.altArgbsCpk.length; --i >= 0; ) this.g3d.changeColixArgb(JU.Elements.elementNumberMax + i, this.altArgbsCpk[i]); + +}, "~B"); +Clazz_defineMethod(c$, "setRubberbandArgb", +function(argb){ +this.colixRubberband = (argb == 0 ? 0 : JU.C.getColix(argb)); +}, "~N"); +Clazz_defineMethod(c$, "setColixBackgroundContrast", +function(argb){ +this.colixBackgroundContrast = JU.C.getBgContrast(argb); +}, "~N"); +Clazz_defineMethod(c$, "getColixBondPalette", +function(bond, pid){ +var argb = 0; +switch (pid) { +case 19: +return this.ce.getColorIndexFromPalette(bond.getEnergy(), -2.5, -0.5, 7, false); +} +return (argb == 0 ? 10 : JU.C.getColix(argb)); +}, "JM.Bond,~N"); +Clazz_defineMethod(c$, "getColixAtomPalette", +function(atom, pid){ +var argb = 0; +var index; +var id; +var modelSet = this.vwr.ms; +var modelIndex; +var lo; +var hi; +switch (pid) { +case 84: +return (this.colorData == null || atom.i >= this.colorData.length || Float.isNaN(this.colorData[atom.i]) ? 12 : this.ce.getColorIndex(this.colorData[atom.i])); +case 0: +case 1: +var a = this.argbsCpk; +var i = id = atom.getAtomicAndIsotopeNumber(); +if (i >= JU.Elements.elementNumberMax) { +id = JU.Elements.altElementIndexFromNumber(i); +if (id > 0) { +i = id; +id += JU.Elements.elementNumberMax; +a = this.altArgbsCpk; +} else { +i = id = JU.Elements.getElementNumber(i); +}}return this.g3d.getChangeableColix(id, a[i]); +case 2: +index = JU.ColorEncoder.quantize4(atom.getPartialCharge(), -1, 1, JV.JC.PARTIAL_CHARGE_RANGE_SIZE); +return this.g3d.getChangeableColix(JV.JC.PARTIAL_CHARGE_COLIX_RED + index, JV.JC.argbsRwbScale[index]); +case 3: +index = atom.getFormalCharge() - -4; +return this.g3d.getChangeableColix(JV.JC.FORMAL_CHARGE_COLIX_RED + index, JV.JC.argbsFormalCharge[index]); +case 68: +case 5: +if (pid == 68) { +lo = this.vwr.ms.getBfactor100Lo(); +hi = this.vwr.ms.getBfactor100Hi(); +} else { +lo = 0; +hi = 10000; +}return this.ce.getColorIndexFromPalette(atom.getBfactor100(), lo, hi, 7, false); +case 86: +return this.ce.getColorIndexFromPalette(atom.group.getGroupParameter(1111490574), -1, 1, 7, false); +case 70: +hi = this.vwr.ms.getSurfaceDistanceMax(); +return this.ce.getColorIndexFromPalette(atom.getSurfaceDistance100(), 0, hi, 7, false); +case 24: +id = atom.group.groupID; +if (id >= 42) id = 24 + "PGCATU".indexOf(Character.toUpperCase(atom.group.group1)) - 1; +return this.ce.getColorIndexFromPalette(id, 0, 0, 17, false); +case 8: +return this.ce.getColorIndexFromPalette(atom.group.groupID, 0, 0, 5, false); +case 9: +return this.ce.getColorIndexFromPalette(atom.group.groupID, 0, 0, 4, false); +case 75: +return this.ce.getColorIndexFromPalette(atom.group.selectedIndex, 0, atom.group.chain.selectedGroupCount - 1, 1, false); +case 87: +var m = this.vwr.ms.am[atom.mi]; +return this.ce.getColorIndexFromPalette(atom.group.getBioPolymerIndexInModel(), 0, (m.isBioModel ? (m).getBioPolymerCount() : 0) - 1, 1, false); +case 76: +return this.ce.getColorIndexFromPalette(atom.group.getSelectedMonomerIndex(), 0, atom.group.getSelectedMonomerCount() - 1, 1, false); +case 77: +return this.ce.getColorIndexFromPalette(modelSet.getMoleculeIndex(atom.i, true), 0, modelSet.getMoleculeCountInModel(atom.mi) - 1, 0, false); +case 14: +modelIndex = atom.mi; +return this.ce.getColorIndexFromPalette(modelSet.getAltLocIndexInModel(modelIndex, atom.altloc), 0, modelSet.getAltLocCountInModel(modelIndex), 0, false); +case 15: +modelIndex = atom.mi; +return this.ce.getColorIndexFromPalette(modelSet.getInsertionCodeIndexInModel(modelIndex, atom.group.getInsertionCode()), 0, modelSet.getInsertionCountInModel(modelIndex), 0, false); +case 16: +id = atom.getAtomicAndIsotopeNumber(); +argb = this.getJmolOrRasmolArgb(id, 1073741991); +break; +case 17: +id = atom.getAtomicAndIsotopeNumber(); +argb = this.getJmolOrRasmolArgb(id, 1073742116); +break; +case 7: +argb = atom.group.getProteinStructureSubType().getColor(); +break; +case 10: +var chain = atom.getChainID(); +if (JU.ColorEncoder.argbsChainAtom == null) { +JU.ColorEncoder.argbsChainAtom = this.getArgbs(1153433601); +JU.ColorEncoder.argbsChainHetero = this.getArgbs(1612709894); +}chain = ((chain < 0 ? 0 : chain >= 256 ? chain - 256 : chain) & 0x1F) % JU.ColorEncoder.argbsChainAtom.length; +argb = (atom.isHetero() ? JU.ColorEncoder.argbsChainHetero : JU.ColorEncoder.argbsChainAtom)[chain]; +break; +} +return (argb == 0 ? 22 : JU.C.getColix(argb)); +}, "JM.Atom,~N"); +Clazz_defineMethod(c$, "getArgbs", +function(tok){ +return this.vwr.getJBR().getArgbs(tok); +}, "~N"); +Clazz_defineMethod(c$, "getJmolOrRasmolArgb", +function(id, argb){ +switch (argb) { +case 1073741991: +if (id >= JU.Elements.elementNumberMax) break; +return this.ce.getArgbFromPalette(id, 0, 0, 2); +case 1073742116: +if (id >= JU.Elements.elementNumberMax) break; +return this.ce.getArgbFromPalette(id, 0, 0, 3); +default: +return argb; +} +return JV.JC.altArgbsCpk[JU.Elements.altElementIndexFromNumber(id)]; +}, "~N,~N"); +Clazz_defineMethod(c$, "getElementColix", +function(elemNo){ +var a = this.argbsCpk; +var i = elemNo; +if (i > JU.Elements.elementNumberMax) { +var ialt = JU.Elements.altElementIndexFromNumber(i); +if (ialt > 0) { +i = ialt; +a = this.altArgbsCpk; +} else { +i = JU.Elements.getElementNumber(i); +}}return JU.C.getColix(a[i]); +}, "~N"); +Clazz_defineMethod(c$, "setElementArgb", +function(elemNo, argb){ +if (argb == 1073741991 && this.argbsCpk === J.c.PAL.argbsCpk) return; +argb = this.getJmolOrRasmolArgb(elemNo, argb); +if (this.argbsCpk === J.c.PAL.argbsCpk) { +this.argbsCpk = JU.AU.arrayCopyRangeI(J.c.PAL.argbsCpk, 0, -1); +this.altArgbsCpk = JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk, 0, -1); +}var id = elemNo; +if (id < JU.Elements.elementNumberMax) { +this.argbsCpk[id] = argb; +} else { +id = JU.Elements.altElementIndexFromNumber(elemNo); +this.altArgbsCpk[id] = argb; +id += JU.Elements.elementNumberMax; +}this.g3d.changeColixArgb(id, argb); +this.vwr.setModelkitPropertySafely("updatemodelkeys", null); +}, "~N,~N"); +Clazz_defineMethod(c$, "getPropertyColorRange", +function(){ +return (this.ce.isReversed ? Clazz_newFloatArray(-1, [this.ce.hi, this.ce.lo]) : Clazz_newFloatArray(-1, [this.ce.lo, this.ce.hi])); +}); +Clazz_defineMethod(c$, "setPropertyColorRangeData", +function(data, bs){ +this.colorData = data; +this.ce.currentPalette = this.ce.createColorScheme(this.vwr.g.propertyColorScheme, true, false); +this.ce.hi = -3.4028235E38; +this.ce.lo = 3.4028235E38; +if (data == null) return; +var isAll = (bs == null); +var d; +var i0 = (isAll ? data.length - 1 : bs.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bs.nextSetBit(i + 1))) { +if (Float.isNaN(d = data[i])) continue; +this.ce.hi = Math.max(this.ce.hi, d); +this.ce.lo = Math.min(this.ce.lo, d); +} +this.setPropertyColorRange(this.ce.lo, this.ce.hi); +}, "~A,JU.BS"); +Clazz_defineMethod(c$, "setPropertyColorRange", +function(min, max){ +this.ce.setRange(min, max, min > max); +if (JU.Logger.debugging) JU.Logger.debug("ColorManager: color \"" + this.ce.getCurrentColorSchemeName() + "\" range " + min + " " + max); +}, "~N,~N"); +Clazz_defineMethod(c$, "setPropertyColorScheme", +function(colorScheme, isTranslucent, isOverloaded){ +var isReset = (colorScheme.length == 0); +if (isReset) colorScheme = "="; +var range = this.getPropertyColorRange(); +this.ce.currentPalette = this.ce.createColorScheme(colorScheme, true, isOverloaded); +if (!isReset) this.setPropertyColorRange(range[0], range[1]); +this.ce.isTranslucent = isTranslucent; +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getColorSchemeList", +function(colorScheme){ +var iPt = (colorScheme == null || colorScheme.length == 0) ? this.ce.currentPalette : this.ce.createColorScheme(colorScheme, true, false); +return JU.ColorEncoder.getColorSchemeList(this.ce.getColorSchemeArray(iPt)); +}, "~S"); +Clazz_defineMethod(c$, "getColorEncoder", +function(colorScheme){ +if (colorScheme == null || colorScheme.length == 0) return this.ce; +var c = new JU.ColorEncoder(this.ce, this.vwr); +c.currentPalette = c.createColorScheme(colorScheme, false, true); +return (c.currentPalette == 2147483647 ? null : c); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["javajs.api.BytePoster", "java.util.Hashtable"], "JV.FileManager", ["java.net.URL", "$.URLEncoder", "JU.AU", "$.Base64", "$.LimitedLineReader", "$.Lst", "$.OC", "$.PT", "$.Rdr", "$.SB", "J.api.Interface", "J.io.FileReader", "JU.Escape", "$.Logger", "JV.JC", "$.JmolAsyncException", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.spartanDoc = null; +this.jzu = null; +this.pathForAllFiles = ""; +this.nameAsGiven = "zapped"; +this.fullPathName = null; +this.lastFullPathName = null; +this.lastNameAsGiven = "zapped"; +this.fileName = null; +this.lastFileType = null; +this.appletDocumentBaseURL = null; +this.appletProxy = null; +this.cache = null; +this.pngjCache = null; +this.spardirCache = null; +Clazz_instantialize(this, arguments);}, JV, "FileManager", null, javajs.api.BytePoster); +Clazz_prepareFields (c$, function(){ +this.cache = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +this.clear(); +}, "JV.Viewer"); +Clazz_defineMethod(c$, "spartanUtil", +function(){ +return (this.spartanDoc == null ? this.spartanDoc = (J.api.Interface.getInterface("J.adapter.readers.spartan.SpartanUtil", this.vwr, "fm getSpartanUtil()")).set(this) : this.spartanDoc); +}); +Clazz_defineMethod(c$, "getJzu", +function(){ +return (this.jzu == null ? this.jzu = J.api.Interface.getOption("io.JmolUtil", this.vwr, "file") : this.jzu); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.setFileInfo( Clazz_newArray(-1, [this.vwr.getZapName()])); +this.spardirCache = null; +}); +Clazz_defineMethod(c$, "setLoadState", +function(htParams){ +if (this.vwr.getPreserveState()) { +htParams.put("loadState", this.vwr.g.getLoadState(htParams)); +}}, "java.util.Map"); +Clazz_defineMethod(c$, "getPathForAllFiles", +function(){ +return this.pathForAllFiles; +}); +Clazz_defineMethod(c$, "setPathForAllFiles", +function(value){ +if (value.length > 0 && !value.endsWith("/") && !value.endsWith("|")) value += "/"; +return this.pathForAllFiles = value; +}, "~S"); +Clazz_defineMethod(c$, "setFileInfo", +function(fileInfo){ +if (fileInfo == null) { +this.fullPathName = this.lastFullPathName; +this.nameAsGiven = this.lastNameAsGiven; +return; +}this.fullPathName = fileInfo[0]; +this.fileName = fileInfo[Math.min(1, fileInfo.length - 1)]; +this.nameAsGiven = fileInfo[Math.min(2, fileInfo.length - 1)]; +if (!this.nameAsGiven.equals("zapped")) { +this.lastNameAsGiven = this.nameAsGiven; +this.lastFullPathName = this.fullPathName; +}}, "~A"); +Clazz_defineMethod(c$, "getFileInfo", +function(){ +return Clazz_newArray(-1, [this.fullPathName, this.fileName, this.nameAsGiven]); +}); +Clazz_defineMethod(c$, "getFullPathName", +function(orPrevious){ +var f = (this.fullPathName != null ? this.fullPathName : this.nameAsGiven); +return (!orPrevious || !f.equals("zapped") && !f.equals("string") ? f : this.lastFullPathName != null ? this.lastFullPathName : this.lastNameAsGiven); +}, "~B"); +Clazz_defineMethod(c$, "getFileType", +function(){ +return this.lastFileType; +}); +Clazz_defineMethod(c$, "setFileType", +function(fileType){ +this.lastFileType = fileType; +}, "~S"); +Clazz_defineMethod(c$, "getFileName", +function(){ +return this.fileName != null ? this.fileName : this.nameAsGiven; +}); +Clazz_defineMethod(c$, "getAppletDocumentBase", +function(){ +return (this.appletDocumentBaseURL == null ? "" : this.appletDocumentBaseURL.toString()); +}); +Clazz_defineMethod(c$, "setAppletContext", +function(documentBase){ +try { +System.out.println("setting document base to \"" + documentBase + "\""); +this.appletDocumentBaseURL = (documentBase.length == 0 ? null : new java.net.URL(Clazz_castNullAs("java.net.URL"), documentBase, null)); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +System.out.println("error setting document base to " + documentBase); +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "setAppletProxy", +function(appletProxy){ +this.appletProxy = (appletProxy == null || appletProxy.length == 0 ? null : appletProxy); +}, "~S"); +Clazz_defineMethod(c$, "createAtomSetCollectionFromFile", +function(name, htParams, isAppend){ +if (htParams.get("atomDataOnly") == null) this.setLoadState(htParams); +var name0 = name; +var pt = name.indexOf("::"); +if (pt < 0) { +name = this.vwr.resolveDatabaseFormat(name); +}if (!name0.equals(name) && name0.indexOf("/") < 0 && JV.Viewer.hasDatabasePrefix(name0)) { +htParams.put("dbName", name0); +}if (name.endsWith("%2D%")) { +var filter = htParams.get("filter"); +htParams.put("filter", (filter == null ? "" : filter) + "2D"); +name = name.substring(0, name.length - 4); +}var nameAsGiven = (pt >= 0 ? name.substring(pt + 2) : name); +var fileType = (pt >= 0 ? name.substring(0, pt) : null); +JU.Logger.info("\nFileManager.getAtomSetCollectionFromFile(" + nameAsGiven + ")" + (name.equals(nameAsGiven) ? "" : " //" + name)); +var names = this.getClassifiedName(nameAsGiven, true); +if (names.length == 1) return names[0]; +var fullPathName = names[0]; +var fileName = names[1]; +htParams.put("fullPathName", (fileType == null ? "" : fileType + "::") + JV.FileManager.fixDOSName(fullPathName)); +if (this.vwr.getBoolean(603979879) && this.vwr.getBoolean(603979825)) this.vwr.getChimeMessenger().update(fullPathName); +var fileReader = new J.io.FileReader(this.vwr, fileName, fullPathName, nameAsGiven, fileType, null, htParams, isAppend); +fileReader.run(); +return fileReader.getAtomSetCollection(); +}, "~S,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSetCollectionFromFiles", +function(fileNames, htParams, isAppend){ +this.setLoadState(htParams); +var fullPathNames = new Array(fileNames.length); +var namesAsGiven = new Array(fileNames.length); +var fileTypes = new Array(fileNames.length); +for (var i = 0; i < fileNames.length; i++) { +var pt = fileNames[i].indexOf("::"); +var nameAsGiven = (pt >= 0 ? fileNames[i].substring(pt + 2) : fileNames[i]); +var fileType = (pt >= 0 ? fileNames[i].substring(0, pt) : null); +var names = this.getClassifiedName(nameAsGiven, true); +if (names.length == 1) return names[0]; +fullPathNames[i] = names[0]; +fileNames[i] = JV.FileManager.fixDOSName(names[0]); +fileTypes[i] = fileType; +namesAsGiven[i] = nameAsGiven; +} +htParams.put("fullPathNames", fullPathNames); +htParams.put("fileTypes", fileTypes); +var filesReader = this.newFilesReader(fullPathNames, namesAsGiven, fileTypes, null, htParams, isAppend); +filesReader.run(); +return filesReader.getAtomSetCollection(); +}, "~A,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSetCollectionFromString", +function(strModel, htParams, isAppend){ +this.setLoadState(htParams); +var isAddH = (strModel.indexOf("Viewer.AddHydrogens") >= 0); +var fnames = (isAddH ? this.getFileInfo() : null); +var fileReader = new J.io.FileReader(this.vwr, "string", null, null, null, JU.Rdr.getBR(strModel), htParams, isAppend); +fileReader.run(); +if (fnames != null) this.setFileInfo(fnames); +if (!isAppend && !((typeof(fileReader.getAtomSetCollection())=='string'))) { +this.setFileInfo( Clazz_newArray(-1, [strModel === "5\n\nC 0 0 0\nH .63 .63 .63\nH -.63 -.63 .63\nH -.63 .63 -.63\nH .63 -.63 -.63" ? "Jmol Model Kit" : "string"])); +}return fileReader.getAtomSetCollection(); +}, "~S,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSeCollectionFromStrings", +function(arrayModels, loadScript, htParams, isAppend){ +if (!htParams.containsKey("isData")) { +var oldSep = "\"" + this.vwr.getDataSeparator() + "\""; +var tag = "\"" + (isAppend ? "append" : "model") + " inline\""; +var sb = new JU.SB(); +sb.append("set dataSeparator \"~~~next file~~~\";\ndata ").append(tag); +for (var i = 0; i < arrayModels.length; i++) { +if (i > 0) sb.append("~~~next file~~~"); +sb.append(arrayModels[i]); +} +sb.append("end ").append(tag).append(";set dataSeparator ").append(oldSep); +loadScript.appendSB(sb); +}this.setLoadState(htParams); +JU.Logger.info("FileManager.getAtomSetCollectionFromStrings(string[])"); +var fullPathNames = new Array(arrayModels.length); +var readers = new Array(arrayModels.length); +for (var i = 0; i < arrayModels.length; i++) { +fullPathNames[i] = "string[" + i + "]"; +readers[i] = JV.FileManager.newDataReader(this.vwr, arrayModels[i]); +} +var filesReader = this.newFilesReader(fullPathNames, fullPathNames, null, readers, htParams, isAppend); +filesReader.run(); +return filesReader.getAtomSetCollection(); +}, "~A,JU.SB,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSeCollectionFromArrayData", +function(arrayData, htParams, isAppend){ +JU.Logger.info("FileManager.getAtomSetCollectionFromArrayData(Vector)"); +var nModels = arrayData.size(); +var fullPathNames = new Array(nModels); +var readers = new Array(nModels); +for (var i = 0; i < nModels; i++) { +fullPathNames[i] = "String[" + i + "]"; +readers[i] = JV.FileManager.newDataReader(this.vwr, arrayData.get(i)); +} +var filesReader = this.newFilesReader(fullPathNames, fullPathNames, null, readers, htParams, isAppend); +filesReader.run(); +return filesReader.getAtomSetCollection(); +}, "JU.Lst,java.util.Map,~B"); +c$.newDataReader = Clazz_defineMethod(c$, "newDataReader", +function(vwr, data){ +var reader = ((typeof(data)=='string') ? "String" : JU.AU.isAS(data) ? "Array" : Clazz_instanceOf(data,"JU.Lst") ? "List" : null); +if (reader == null) return null; +var dr = J.api.Interface.getInterface("JU." + reader + "DataReader", vwr, "file"); +return dr.setData(data); +}, "JV.Viewer,~O"); +Clazz_defineMethod(c$, "newFilesReader", +function(fullPathNames, namesAsGiven, fileTypes, readers, htParams, isAppend){ +var fr = J.api.Interface.getOption("io.FilesReader", this.vwr, "file"); +fr.set(this, this.vwr, fullPathNames, namesAsGiven, fileTypes, readers, htParams, isAppend); +return fr; +}, "~A,~A,~A,~A,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSetCollectionFromReader", +function(fullPathName, name, reader, htParams){ +var fileReader = new J.io.FileReader(this.vwr, name, fullPathName, null, null, reader, htParams, false); +fileReader.run(); +return fileReader.getAtomSetCollection(); +}, "~S,~S,~O,java.util.Map"); +Clazz_defineMethod(c$, "getBufferedInputStream", +function(fullPathName){ +var ret = this.getBufferedReaderOrErrorMessageFromName(fullPathName, new Array(2), true, true); +return (Clazz_instanceOf(ret,"java.io.BufferedInputStream") ? ret : null); +}, "~S"); +Clazz_defineMethod(c$, "getBufferedInputStreamOrErrorMessageFromName", +function(name, fullName, showMsg, checkOnly, outputBytes, allowReader, allowCached){ +var bis = null; +var ret = null; +var errorMessage = null; +allowCached = allowCached || name.startsWith("cache://"); +var cacheBytes = (allowCached && outputBytes == null ? cacheBytes = this.getPngjOrDroppedBytes(fullName, name) : null); +try { +if (allowCached && name.indexOf(".png") >= 0 && this.pngjCache == null && !this.vwr.getBoolean(603979960)) this.pngjCache = new java.util.Hashtable(); +if (cacheBytes == null) { +var isPngjBinaryPost = (name.indexOf("?POST?_PNGJBIN_") >= 0); +var isPngjPost = (isPngjBinaryPost || name.indexOf("?POST?_PNGJ_") >= 0); +if (name.indexOf("?POST?_PNG_") > 0 || isPngjPost) { +var errMsg = new Array(1); +var bytes = this.vwr.getImageAsBytes(isPngjPost ? "PNGJ" : "PNG", 0, 0, -1, errMsg); +if (errMsg[0] != null) return errMsg[0]; +if (isPngjBinaryPost) { +outputBytes = bytes; +name = JU.PT.rep(name, "?_", "=_"); +} else { +name = new JU.SB().append(name).append("=").appendSB(JU.Base64.getBase64(bytes)).toString(); +}}var iurl = JU.OC.urlTypeIndex(name); +var isURL = (iurl >= 0); +var post = null; +if (isURL && (iurl = name.indexOf("?POST?")) >= 0) { +post = name.substring(iurl + 6); +name = name.substring(0, iurl); +}var isApplet = (this.appletDocumentBaseURL != null); +if (isApplet || isURL) { +if (isApplet && isURL && this.appletProxy != null) name = this.appletProxy + "?url=" + this.urlEncode(name); +var url = (isApplet ? new java.net.URL(this.appletDocumentBaseURL, name, null) : new java.net.URL(Clazz_castNullAs("java.net.URL"), name, null)); +if (checkOnly) return null; +name = url.toString(); +if (showMsg && name.toLowerCase().indexOf("password") < 0) JU.Logger.info("FileManager opening url " + name); +ret = this.vwr.apiPlatform.getURLContents(url, outputBytes, post, false); +var bytes = null; +if (Clazz_instanceOf(ret,"JU.SB")) { +var sb = ret; +if (allowReader && !JU.Rdr.isBase64(sb)) return JU.Rdr.getBR(sb.toString()); +bytes = JU.Rdr.getBytesFromSB(sb); +} else if (JU.AU.isAB(ret)) { +bytes = ret; +}if (bytes != null) ret = JU.Rdr.getBIS(bytes); +} else if (!allowCached || (cacheBytes = this.cacheGet(name, true)) == null) { +if (showMsg) JU.Logger.info("FileManager opening file " + name); +ret = this.vwr.apiPlatform.getBufferedFileInputStream(name); +}if ((typeof(ret)=='string')) return ret; +}bis = (cacheBytes == null ? ret : JU.Rdr.getBIS(cacheBytes)); +if (checkOnly) { +bis.close(); +bis = null; +}return bis; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +try { +if (bis != null) bis.close(); +} catch (e1) { +if (Clazz_exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +errorMessage = "" + e; +} else { +throw e; +} +} +return errorMessage; +}, "~S,~S,~B,~B,~A,~B,~B"); +c$.getBufferedReaderForResource = Clazz_defineMethod(c$, "getBufferedReaderForResource", +function(vwr, resourceClass, classPath, resourceName){ +var url; +{ +}resourceName = (url == null ? vwr.vwrOptions.get("codePath") + classPath + resourceName : url.getFile()); +if (vwr.async) { +var bytes = vwr.fm.cacheGet(resourceName, false); +if (bytes == null) throw new JV.JmolAsyncException(resourceName); +return JU.Rdr.getBufferedReader(JU.Rdr.getBIS(bytes), null); +}return vwr.fm.getBufferedReaderOrErrorMessageFromName(resourceName, Clazz_newArray(-1, [null, null]), false, true); +}, "JV.Viewer,~O,~S,~S"); +Clazz_defineMethod(c$, "urlEncode", +function(name){ +try { +return java.net.URLEncoder.encode(name, "utf-8"); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +return name; +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "getFullPathNameOrError", +function(filename, getStream, ret){ +var names = this.getClassifiedName(JV.JC.fixProtocol(filename), true); +if (names == null || names[0] == null || names.length < 2) return Clazz_newArray(-1, [null, "cannot read file name: " + filename]); +var name = names[0]; +var fullPath = JV.FileManager.fixDOSName(names[0]); +name = JU.Rdr.getZipRoot(name); +var errMsg = this.getBufferedInputStreamOrErrorMessageFromName(name, fullPath, false, !getStream, null, false, !getStream); +ret[0] = fullPath; +if ((typeof(errMsg)=='string')) ret[1] = errMsg; +return errMsg; +}, "~S,~B,~A"); +Clazz_defineMethod(c$, "getBufferedReaderOrErrorMessageFromName", +function(name, fullPathNameReturn, isBinary, doSpecialLoad){ +name = JV.JC.fixProtocol(name); +var data = this.cacheGet(name, false); +var isBytes = JU.AU.isAB(data); +var bytes = (isBytes ? data : null); +if (name.startsWith("cache://")) { +if (data == null) return "cannot read " + name; +if (isBytes) { +bytes = data; +} else { +return JU.Rdr.getBR(data); +}}var names = this.getClassifiedName(name, true); +if (names == null) return "cannot read file name: " + name; +if (fullPathNameReturn != null) fullPathNameReturn[0] = JV.FileManager.fixDOSName(names[0]); +return this.getUnzippedReaderOrStreamFromName(names[0], bytes, false, isBinary, false, doSpecialLoad, null); +}, "~S,~A,~B,~B"); +Clazz_defineMethod(c$, "getUnzippedReaderOrStreamFromName", +function(name, bytesOrStream, allowZipStream, forceInputStream, isTypeCheckOnly, doSpecialLoad, htParams){ +if (doSpecialLoad && bytesOrStream == null) { +var o = (name.endsWith(".spt") ? Clazz_newArray(-1, [null, null, null]) : name.indexOf(".spardir") < 0 ? null : this.spartanUtil().getFileList(name, isTypeCheckOnly)); +if (o != null) return o; +}name = JV.JC.fixProtocol(name); +if (bytesOrStream == null && (bytesOrStream = this.getCachedPngjBytes(name)) != null && htParams != null) htParams.put("sourcePNGJ", Boolean.TRUE); +name = name.$replace("#_DOCACHE_", ""); +var fullName = name; +var subFileList = null; +if (name.indexOf("|") >= 0) { +subFileList = JU.PT.split(name.$replace('\\', '/'), "|"); +if (bytesOrStream == null) JU.Logger.info("FileManager opening zip " + name); +name = subFileList[0]; +}var t = (bytesOrStream == null ? this.getBufferedInputStreamOrErrorMessageFromName(name, fullName, true, false, null, !forceInputStream, true) : JU.AU.isAB(bytesOrStream) ? JU.Rdr.getBIS(bytesOrStream) : bytesOrStream); +try { +if ((typeof(t)=='string') || Clazz_instanceOf(t,"java.io.BufferedReader")) return t; +var bis = t; +if (JU.Rdr.isGzipS(bis)) bis = JU.Rdr.getUnzippedInputStream(this.vwr.getJzt(), bis); + else if (JU.Rdr.isBZip2S(bis)) bis = JU.Rdr.getUnzippedInputStreamBZip2(this.vwr.getJzt(), bis); +if (forceInputStream && subFileList == null) return bis; +if (JU.Rdr.isCompoundDocumentS(bis)) { +var doc = J.api.Interface.getInterface("JU.CompoundDocument", this.vwr, "file"); +doc.setDocStream(this.vwr.getJzt(), bis); +var s = doc.getAllDataFiles("Molecule", "Input").toString(); +return (forceInputStream ? JU.Rdr.getBIS(s.getBytes()) : JU.Rdr.getBR(s)); +}if (JU.Rdr.isMessagePackS(bis) || JU.Rdr.isPickleS(bis)) return bis; +bis = JU.Rdr.getPngZipStream(bis, true); +var o = null; +if (JU.Rdr.isZipS(bis)) { +if (allowZipStream) return this.vwr.getJzt().newZipInputStream(bis); +o = this.vwr.getJzt().getZipFileDirectory(bis, subFileList, 1, forceInputStream); +} else if (JU.Rdr.isTar(bis)) { +o = this.vwr.getJzt().getZipFileDirectory(bis, subFileList, 1, forceInputStream); +} else if (JU.Rdr.isBinary(bis, 32)) { +return bis; +}if (o != null) { +if (!(Clazz_instanceOf(o,"java.io.BufferedInputStream"))) return ((typeof(o)=='string') ? JU.Rdr.getBR(o) : o); +bis = JU.Rdr.getUnzippedInputStream(this.vwr.getJzt(), o); +}return (forceInputStream ? bis : JU.Rdr.getBufferedReader(bis, null)); +} catch (ioe) { +if (Clazz_exceptionOf(ioe, Exception)){ +return ioe.toString(); +} else { +throw ioe; +} +} +}, "~S,~O,~B,~B,~B,~B,java.util.Map"); +Clazz_defineMethod(c$, "getZipDirectory", +function(fileName, addManifest, allowCached){ +var t = this.getBufferedInputStreamOrErrorMessageFromName(fileName, fileName, false, false, null, false, allowCached); +return this.vwr.getJzt().getZipDirectoryAndClose(t, addManifest ? "JmolManifest" : null); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getFileAsBytes", +function(name, out){ +if (name == null) return null; +var fullName = name; +var subFileList = null; +if (name.indexOf("|") >= 0) { +subFileList = JU.PT.split(name, "|"); +name = subFileList[0]; +}var bytes = (subFileList != null ? null : this.getPngjOrDroppedBytes(fullName, name)); +if (bytes == null) { +var t = this.getBufferedInputStreamOrErrorMessageFromName(name, fullName, false, false, null, false, true); +if ((typeof(t)=='string')) return "Error:" + t; +try { +var bis = t; +bytes = (out != null || subFileList == null || subFileList.length <= 1 || !JU.Rdr.isZipS(bis) && !JU.Rdr.isPngZipStream(bis) && !JU.Rdr.isTar(bis) ? JU.Rdr.getStreamAsBytes(bis, out) : this.vwr.getJzt().getZipFileContentsAsBytes(bis, subFileList, 1)); +bis.close(); +} catch (ioe) { +if (Clazz_exceptionOf(ioe, Exception)){ +return ioe.toString(); +} else { +throw ioe; +} +} +}if (out == null || !JU.AU.isAB(bytes)) return bytes; +out.write(bytes, 0, -1); +return (bytes).length + " bytes"; +}, "~S,JU.OC"); +Clazz_defineMethod(c$, "getFileAsMap", +function(name, type, asBytes){ +var bdata = (asBytes ? null : new java.util.Hashtable()); +var t; +if (name == null) { +var errMsg = new Array(1); +var bytes = this.vwr.getImageAsBytes(type, -1, -1, -1, errMsg); +if (errMsg[0] != null) { +if (asBytes) return Clazz_newByteArray (0, 0); +bdata.put("_ERROR_", errMsg[0]); +return bdata; +}if (bdata == null) return bytes; +t = JU.Rdr.getBIS(bytes); +} else { +var data = new Array(2); +t = this.getFullPathNameOrError(name, true, data); +if ((typeof(t)=='string')) { +if (asBytes) return Clazz_newByteArray (0, 0); +bdata.put("_ERROR_", t); +return bdata; +}if (!this.checkSecurity(data[0])) { +if (asBytes) return Clazz_newByteArray (0, 0); +bdata.put("_ERROR_", "java.io. Security exception: cannot read file " + data[0]); +return bdata; +}}try { +if (asBytes) { +return JU.Rdr.streamToBytes(t); +}this.vwr.getJzt().readFileAsMap(t, bdata, name); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (asBytes) return Clazz_newByteArray (0, 0); +bdata.clear(); +bdata.put("_ERROR_", "" + e); +} else { +throw e; +} +} +return bdata; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getFileDataAsString", +function(data, nBytesMax, doSpecialLoad, allowBinary, checkProtected){ +data[1] = ""; +var name = data[0]; +if (name == null) return false; +var t = this.getBufferedReaderOrErrorMessageFromName(name, data, false, doSpecialLoad); +if ((typeof(t)=='string')) { +data[1] = t; +return false; +}if (checkProtected && !this.checkSecurity(data[0])) { +data[1] = "java.io. Security exception: cannot read file " + data[0]; +return false; +}try { +if (Clazz_instanceOf(t,"java.io.BufferedInputStream")) { +if (name.toUpperCase().endsWith(".PNG") || JV.FileManager.isEmbeddable(name)) t = JU.Rdr.getBufferedReader(t, null); +}return JU.Rdr.readAllAsString(t, nBytesMax, allowBinary, data, 1); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~A,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "checkSecurity", +function(f){ +if (!f.startsWith("file:")) return true; +var pt = f.lastIndexOf('/'); +if (f.lastIndexOf(":/") == pt - 1 || f.indexOf("/.") >= 0 || f.lastIndexOf('.') < f.lastIndexOf('/')) return false; +return true; +}, "~S"); +Clazz_defineMethod(c$, "loadImage", +function(nameOrBytes, echoName, forceSync){ +var image = null; +var nameOrError = null; +var bytes = null; +var isPopupImage = (echoName != null && echoName.startsWith("\1")); +if (isPopupImage) { +if (echoName.equals("\1closeall\1null")) return this.vwr.loadImageData(Boolean.TRUE, "\1closeall", "\1closeall", null); +if ("\1close".equals(nameOrBytes)) return this.vwr.loadImageData(Boolean.FALSE, "\1close", echoName, null); +}if (Clazz_instanceOf(nameOrBytes,"java.util.Map")) { +nameOrBytes = ((nameOrBytes).containsKey("_DATA_") ? (nameOrBytes).get("_DATA_") : (nameOrBytes).get("_IMAGE_")); +}if (Clazz_instanceOf(nameOrBytes,"JS.SV")) nameOrBytes = (nameOrBytes).value; +var name = ((typeof(nameOrBytes)=='string') ? nameOrBytes : null); +var isAsynchronous = false; +if (name != null && name.startsWith(";base64,")) { +bytes = JU.Base64.decodeBase64(name); +} else if (Clazz_instanceOf(nameOrBytes,"JU.BArray")) { +bytes = (nameOrBytes).data; +} else if (echoName == null || (typeof(nameOrBytes)=='string')) { +var names = this.getClassifiedName(nameOrBytes, true); +nameOrError = (names == null ? "cannot read file name: " + nameOrBytes : JV.FileManager.fixDOSName(names[0])); +if (names != null) image = this.getImage(nameOrError, echoName, forceSync); +isAsynchronous = (image == null); +} else { +image = nameOrBytes; +}if (bytes != null) { +image = this.getImage(bytes, echoName, true); +isAsynchronous = false; +}if ((typeof(image)=='string')) { +nameOrError = image; +image = null; +}if (!JV.Viewer.isJS && image != null && bytes != null) nameOrError = ";base64," + JU.Base64.getBase64(bytes).toString(); +if (!JV.Viewer.isJS || isPopupImage && nameOrError == null || !isPopupImage && image != null) return this.vwr.loadImageData(image, nameOrError, echoName, null); +return isAsynchronous; +}, "~O,~S,~B"); +Clazz_defineMethod(c$, "getImage", +function(nameOrBytes, echoName, forceSync){ +return this.getJzu().getImage(this.vwr, nameOrBytes, echoName, forceSync); +}, "~O,~S,~B"); +Clazz_defineMethod(c$, "getClassifiedName", +function(name, isFullLoad){ +if (name == null) return Clazz_newArray(-1, [null]); +var doSetPathForAllFiles = (this.pathForAllFiles.length > 0); +if (name.startsWith("?") || name.startsWith("http://?") || name.startsWith("https://?")) { +if (!JV.Viewer.isJS && (name = this.vwr.dialogAsk("Load", name, null)) == null) return Clazz_newArray(-1, [isFullLoad ? "#CANCELED#" : null]); +doSetPathForAllFiles = false; +}var file = null; +var url = null; +var names = null; +if (name.startsWith("cache://")) { +names = new Array(3); +names[0] = names[2] = name; +names[1] = JV.FileManager.stripPath(names[0]); +return names; +}name = this.vwr.resolveDatabaseFormat(name); +if (name == null) return Clazz_newArray(-1, [null]); +if (name.indexOf(":") < 0 && name.indexOf("/") != 0) name = JV.FileManager.addDirectory(this.vwr.getDefaultDirectory(), name); +if (this.appletDocumentBaseURL == null) { +if (JU.OC.urlTypeIndex(name) >= 0 || this.vwr.haveAccess(JV.Viewer.ACCESS.NONE) || this.vwr.haveAccess(JV.Viewer.ACCESS.READSPT) && !name.endsWith(".spt") && !name.endsWith("/")) { +try { +url = new java.net.URL(Clazz_castNullAs("java.net.URL"), name, null); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +return Clazz_newArray(-1, [isFullLoad ? e.toString() : null]); +} else { +throw e; +} +} +} else { +file = this.vwr.apiPlatform.newFile(name); +var s = file.getFullPath(); +var fname = file.getName(); +names = Clazz_newArray(-1, [(s == null ? fname : s), fname, (s == null ? fname : "file:/" + s.$replace('\\', '/'))]); +}} else { +try { +if (name.indexOf(":\\") == 1 || name.indexOf(":/") == 1) name = "file:/" + name; +url = new java.net.URL(this.appletDocumentBaseURL, name, null); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +return Clazz_newArray(-1, [isFullLoad ? e.toString() : null]); +} else { +throw e; +} +} +}if (url != null) { +names = new Array(3); +names[0] = names[2] = url.toString(); +names[1] = JV.FileManager.stripPath(names[0]); +}if (doSetPathForAllFiles) { +var name0 = names[0]; +names[0] = this.pathForAllFiles + names[1]; +JU.Logger.info("FileManager substituting " + name0 + " --> " + names[0]); +}if (isFullLoad && JU.OC.isLocal(names[0])) { +var path = names[0]; +if (file == null) path = JU.PT.trim(names[0].substring(names[0].indexOf(":") + 1), "/"); +var pt = path.length - names[1].length - 1; +if (pt > 0) { +path = path.substring(0, pt); +JV.FileManager.setLocalPath(this.vwr, path, true); +}}return names; +}, "~S,~B"); +c$.addDirectory = Clazz_defineMethod(c$, "addDirectory", +function(defaultDirectory, name){ +if (defaultDirectory.length == 0 || defaultDirectory.equals(".")) return name; +var ch = (name.length > 0 ? name.charAt(0) : ' '); +var s = defaultDirectory.toLowerCase(); +if ((s.endsWith(".zip") || s.endsWith(".tar")) && ch != '|' && ch != '/') defaultDirectory += "|"; +return defaultDirectory + (ch == '/' || ch == '/' || (ch = defaultDirectory.charAt(defaultDirectory.length - 1)) == '|' || ch == '/' ? "" : "/") + name; +}, "~S,~S"); +Clazz_defineMethod(c$, "getDefaultDirectory", +function(name){ +var names = this.getClassifiedName(name, true); +if (names == null) return ""; +name = JV.FileManager.fixPath(names[0]); +return (name == null ? "" : name.substring(0, name.lastIndexOf("/"))); +}, "~S"); +c$.fixPath = Clazz_defineMethod(c$, "fixPath", +function(path){ +path = JV.FileManager.fixDOSName(path); +path = JU.PT.rep(path, "/./", "/"); +var pt = path.lastIndexOf("//") + 1; +if (pt < 1) pt = path.indexOf(":/") + 1; +if (pt < 1) pt = path.indexOf("/"); +if (pt < 0) return null; +var protocol = path.substring(0, pt); +path = path.substring(pt); +while ((pt = path.lastIndexOf("/../")) >= 0) { +var pt0 = path.substring(0, pt).lastIndexOf("/"); +if (pt0 < 0) return JU.PT.rep(protocol + path, "/../", "/"); +path = path.substring(0, pt0) + path.substring(pt + 3); +} +if (path.length == 0) path = "/"; +return protocol + path; +}, "~S"); +Clazz_defineMethod(c$, "getFilePath", +function(name, addUrlPrefix, asShortName){ +var names = this.getClassifiedName(name, false); +return (names == null || names.length == 1 ? "" : asShortName ? names[1] : addUrlPrefix ? names[2] : names[0] == null ? "" : JV.FileManager.fixDOSName(names[0])); +}, "~S,~B,~B"); +c$.getLocalDirectory = Clazz_defineMethod(c$, "getLocalDirectory", +function(vwr, forDialog){ +var localDir = vwr.getP(forDialog ? "currentLocalPath" : "defaultDirectoryLocal"); +if (forDialog && localDir.length == 0) localDir = vwr.getP("defaultDirectoryLocal"); +if (localDir.length == 0) return (vwr.isApplet ? null : vwr.apiPlatform.newFile(System.getProperty("user.dir", "."))); +if (vwr.isApplet && localDir.indexOf("file:/") == 0) localDir = localDir.substring(6); +var f = vwr.apiPlatform.newFile(localDir); +try { +return f.isDirectory() ? f : f.getParentAsFile(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "JV.Viewer,~B"); +c$.setLocalPath = Clazz_defineMethod(c$, "setLocalPath", +function(vwr, path, forDialog){ +while (path.endsWith("/") || path.endsWith("\\")) path = path.substring(0, path.length - 1); + +vwr.setStringProperty("currentLocalPath", path); +if (!forDialog) vwr.setStringProperty("defaultDirectoryLocal", path); +}, "JV.Viewer,~S,~B"); +c$.getLocalPathForWritingFile = Clazz_defineMethod(c$, "getLocalPathForWritingFile", +function(vwr, file, forDialog){ +if (file.startsWith("http://") || file.startsWith("https://")) return file; +file = JU.PT.rep(file, "?", ""); +if (file.indexOf("file:/") == 0) return file.substring(6); +if (file.indexOf("/") == 0 || file.indexOf(":") >= 0) return file; +var dir = null; +try { +dir = JV.FileManager.getLocalDirectory(vwr, forDialog); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return (dir == null ? file : JV.FileManager.fixPath(dir.toString() + "/" + file)); +}, "JV.Viewer,~S,~B"); +c$.fixDOSName = Clazz_defineMethod(c$, "fixDOSName", +function(fileName){ +return (fileName.indexOf(":\\") >= 0 ? fileName.$replace('\\', '/') : fileName); +}, "~S"); +c$.stripPath = Clazz_defineMethod(c$, "stripPath", +function(name){ +var pt = Math.max(name.lastIndexOf("|"), name.lastIndexOf("/")); +return name.substring(pt + 1); +}, "~S"); +c$.isScriptType = Clazz_defineMethod(c$, "isScriptType", +function(fname){ +return JU.PT.isOneOf(fname.toLowerCase().substring(fname.lastIndexOf(".") + 1), ";pse;spt;png;pngj;jmol;zip;"); +}, "~S"); +c$.determineSurfaceFileType = Clazz_defineMethod(c$, "determineSurfaceFileType", +function(bufferedReader){ +var line = null; +if (Clazz_instanceOf(bufferedReader,"JU.Rdr.StreamReader")) { +var is = (bufferedReader).getStream(); +if (is.markSupported()) { +try { +is.mark(300); +var buf = Clazz_newByteArray (300, 0); +is.read(buf, 0, 300); +is.reset(); +if ((buf[0] & 0xFF) == 0x83) { +if (buf[10] == 68 && buf[11] == 101 && buf[12] == 110) return "BCifDensity"; +}if (buf[0] == 80 && buf[1] == 77 && buf[2] == 1 && buf[3] == 0) return "Pmesh"; +if (buf[208] == 77 && buf[209] == 65 && buf[210] == 80) return "Mrc"; +if (buf[0] == 20 && buf[1] == 0 && buf[2] == 0 && buf[3] == 0) return "DelPhi"; +if (buf[36] == 0 && buf[37] == 100) return "Dsn6"; +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}}var br = null; +try { +br = new JU.LimitedLineReader(bufferedReader, 16000); +line = br.getHeader(0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (br == null || line == null || line.length == 0) return null; +var pt0 = line.indexOf('\0'); +if (pt0 >= 0) { +if ((line.charAt(0)).charCodeAt(0) == 0x83) return "BCifDensity"; +if (line.indexOf("PM\u0001\u0000") == 0) return "Pmesh"; +if (line.indexOf("MAP ") == 208) return "Mrc"; +if (line.indexOf("\u0014\u0000\u0000\u0000") == 0) return "DelPhi"; +if (line.length > 37 && ((line.charAt(36)).charCodeAt(0) == 0 && (line.charAt(37)).charCodeAt(0) == 100 || (line.charAt(36)).charCodeAt(0) == 0 && (line.charAt(37)).charCodeAt(0) == 100)) { +return "Dsn6"; +}}switch ((line.charAt(0)).charCodeAt(0)) { +case 64: +if (line.indexOf("@text") == 0) return "Kinemage"; +break; +case 35: +if (line.indexOf(".obj") >= 0) return "Obj"; +if (line.indexOf("MSMS") >= 0) return "Msms"; +if (line.indexOf("Menu") >= 0) return "MENU"; +break; +case 38: +if (line.indexOf("&plot") == 0) return "Jaguar"; +break; +case 13: +case 10: +if (line.indexOf("ZYX") >= 0) return "Xplor"; +break; +} +if (line.indexOf("Here is your gzipped map") >= 0) return "UPPSALA" + line; +if (line.startsWith("data_SERVER")) return "CifDensity"; +if (line.startsWith("4MESHC")) return "Pmesh4"; +if (line.indexOf("! nspins") >= 0) return "CastepDensity"; +if (line.indexOf("= 0 && line.indexOf("= 0) return "JvxlXml"; +if (line.indexOf("#JVXL+") >= 0) return "Jvxl+"; +if (line.indexOf("#JVXL") >= 0) return "Jvxl"; +if (line.indexOf("#JmolPmesh") >= 0) return "Pmesh"; +if (line.indexOf("#obj") >= 0) return "Obj"; +if (line.indexOf("#pmesh") >= 0) return "Obj"; +if (line.indexOf("= 0) return "Efvet"; +if (line.indexOf("usemtl") >= 0) return "Obj"; +if (line.indexOf("# object with") == 0) return "Nff"; +if (line.indexOf("PRIMVEC") >= 0 || line.indexOf("BEGIN_DATAGRID_3D") >= 0 || line.indexOf("BEGIN_BANDGRID_3D") >= 0) return "Xsf"; +if (line.indexOf("tiles in x, y") >= 0) return "Ras3D"; +if (line.indexOf(" 0.00000e+00 0.00000e+00 0 0\n") >= 0) return "Uhbd"; +line = br.readLineWithNewline(); +if (line.indexOf("object 1 class gridpositions counts") == 0) return "Apbs"; +var tokens = JU.PT.getTokens(line); +var line2 = br.readLineWithNewline(); +if (tokens.length == 2 && JU.PT.parseInt(tokens[0]) == 3 && JU.PT.parseInt(tokens[1]) != -2147483648) { +tokens = JU.PT.getTokens(line2); +if (tokens.length == 3 && JU.PT.parseInt(tokens[0]) != -2147483648 && JU.PT.parseInt(tokens[1]) != -2147483648 && JU.PT.parseInt(tokens[2]) != -2147483648) return "PltFormatted"; +}var line3 = br.readLineWithNewline(); +if (line.startsWith("v ") && line2.startsWith("v ") && line3.startsWith("v ")) return "Obj"; +var nAtoms = JU.PT.parseInt(line3); +if (nAtoms == -2147483648) return (line3.indexOf("+") == 0 ? "Jvxl+" : null); +tokens = JU.PT.getTokens(line3); +if (tokens[0].indexOf(".") > 0) return (line3.length >= 60 || tokens.length != 3 ? null : "VaspChgcar"); +if (nAtoms >= 0) return (tokens.length == 4 || tokens.length == 5 && tokens[4].equals("1") ? "Cube" : null); +nAtoms = -nAtoms; +for (var i = 4 + nAtoms; --i >= 0; ) if ((line = br.readLineWithNewline()) == null) return null; + +var nSurfaces = JU.PT.parseInt(line); +if (nSurfaces == -2147483648) return null; +return (nSurfaces < 0 ? "Jvxl" : "Cube"); +}, "java.io.BufferedReader"); +c$.getManifestScriptPath = Clazz_defineMethod(c$, "getManifestScriptPath", +function(manifest){ +if (manifest.indexOf("$SCRIPT_PATH$") >= 0) return ""; +var ch = (manifest.indexOf('\n') >= 0 ? "\n" : "\r"); +if (manifest.indexOf(".spt") >= 0) { +var s = JU.PT.split(manifest, ch); +for (var i = s.length; --i >= 0; ) if (s[i].indexOf(".spt") >= 0) return "|" + JU.PT.trim(s[i], "\r\n \t"); + +}return null; +}, "~S"); +c$.getFileReferences = Clazz_defineMethod(c$, "getFileReferences", +function(script, fileList, fileListUTF){ +for (var ipt = 0; ipt < JV.FileManager.scriptFilePrefixes.length; ipt++) { +var tag = JV.FileManager.scriptFilePrefixes[ipt]; +var i = -1; +while ((i = script.indexOf(tag, i + 1)) >= 0) { +var s = JU.PT.getQuotedStringAt(script, i); +if (s.indexOf("\\u") >= 0) s = JU.Escape.unescapeUnicode(s); +fileList.addLast(s); +if (fileListUTF != null) { +if (s.indexOf("\\u") >= 0) s = JU.Escape.unescapeUnicode(s); +fileListUTF.addLast(s); +}} +} +}, "~S,JU.Lst,JU.Lst"); +c$.setScriptFileReferences = Clazz_defineMethod(c$, "setScriptFileReferences", +function(script, localPath, remotePath, scriptPath){ +if (localPath != null) script = JV.FileManager.setScriptFileRefs(script, localPath, true); +if (remotePath != null) script = JV.FileManager.setScriptFileRefs(script, remotePath, false); +script = JU.PT.rep(script, "\1\"", "\""); +if (scriptPath != null) { +while (scriptPath.endsWith("/")) scriptPath = scriptPath.substring(0, scriptPath.length - 1); + +for (var ipt = 0; ipt < JV.FileManager.scriptFilePrefixes.length; ipt++) { +var tag = JV.FileManager.scriptFilePrefixes[ipt]; +script = JU.PT.rep(script, tag + ".", tag + scriptPath); +} +}return script; +}, "~S,~S,~S,~S"); +c$.setScriptFileRefs = Clazz_defineMethod(c$, "setScriptFileRefs", +function(script, dataPath, isLocal){ +if (dataPath == null) return script; +var noPath = (dataPath.length == 0); +var fileNames = new JU.Lst(); +JV.FileManager.getFileReferences(script, fileNames, null); +var oldFileNames = new JU.Lst(); +var newFileNames = new JU.Lst(); +var nFiles = fileNames.size(); +for (var iFile = 0; iFile < nFiles; iFile++) { +var name0 = fileNames.get(iFile); +var name = name0; +var pt = name.indexOf("::"); +var type = ""; +if (pt >= 0) { +type = name.substring(pt + 2); +name = name.substring(pt + 2); +}if (isLocal == JU.OC.isLocal(name)) { +pt = (noPath ? -1 : name.indexOf("/" + dataPath + "/")); +if (pt >= 0) { +name = name.substring(pt + 1); +} else { +pt = name.lastIndexOf("/"); +if (pt < 0 && !noPath) name = "/" + name; +if (pt < 0 || noPath) pt++; +name = dataPath + name.substring(pt); +}}name = type + name; +JU.Logger.info("FileManager substituting " + name0 + " --> " + name); +oldFileNames.addLast("\"" + name0 + "\""); +newFileNames.addLast("\1\"" + name + "\""); +} +return JU.PT.replaceStrings(script, oldFileNames, newFileNames); +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "cachePut", +function(key, data){ +key = JV.FileManager.fixDOSName(key); +if (JU.Logger.debugging) JU.Logger.debug("cachePut " + key); +if (data == null || "".equals(data)) { +this.cache.remove(key); +return; +}this.cache.put(key, data); +this.getCachedPngjBytes(key); +}, "~S,~O"); +Clazz_defineMethod(c$, "cacheGet", +function(key, bytesOnly){ +key = JV.FileManager.fixDOSName(key); +var pt = key.indexOf("|"); +if (pt >= 0 && !key.endsWith("##JmolSurfaceInfo##")) key = key.substring(0, pt); +key = this.getFilePath(key, true, false); +var data = null; +{ +(data = Jmol.Cache.get(key)) || (data = this.cache.get(key)); +}return (bytesOnly && ((typeof(data)=='string')) ? null : data); +}, "~S,~B"); +Clazz_defineMethod(c$, "cacheClear", +function(){ +JU.Logger.info("cache cleared"); +this.cache.clear(); +if (this.pngjCache == null) return; +this.pngjCache = null; +JU.Logger.info("PNGJ cache cleared"); +}); +Clazz_defineMethod(c$, "cacheFileByNameAdd", +function(fileName, isAdd){ +if (fileName == null || !isAdd && fileName.equalsIgnoreCase("")) { +this.cacheClear(); +return -1; +}var data; +if (isAdd) { +fileName = JV.JC.fixProtocol(this.vwr.resolveDatabaseFormat(fileName)); +data = this.getFileAsBytes(fileName, null); +if ((typeof(data)=='string')) return 0; +this.cachePut(fileName, data); +} else { +if (fileName.endsWith("*")) return JU.AU.removeMapKeys(this.cache, fileName.substring(0, fileName.length - 1)); +data = this.cache.remove(JV.FileManager.fixDOSName(fileName)); +}return (data == null ? 0 : (typeof(data)=='string') ? (data).length : (data).length); +}, "~S,~B"); +Clazz_defineMethod(c$, "cacheList", +function(){ +var map = new java.util.Hashtable(); +for (var entry, $entry = this.cache.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) map.put(entry.getKey(), Integer.$valueOf(JU.AU.isAB(entry.getValue()) ? (entry.getValue()).length : entry.getValue().toString().length)); + +return map; +}); +Clazz_defineMethod(c$, "getCanonicalName", +function(pathName){ +var names = this.getClassifiedName(pathName, true); +return (names == null ? pathName : names[2]); +}, "~S"); +Clazz_defineMethod(c$, "recachePngjBytes", +function(fileName, bytes){ +if (this.pngjCache == null || !this.pngjCache.containsKey(fileName)) return; +this.pngjCache.put(fileName, bytes); +JU.Logger.info("PNGJ recaching " + fileName + " (" + bytes.length + ")"); +}, "~S,~A"); +Clazz_defineMethod(c$, "getPngjOrDroppedBytes", +function(fullName, name){ +var bytes = this.getCachedPngjBytes(fullName); +return (bytes == null ? this.cacheGet(name, true) : bytes); +}, "~S,~S"); +Clazz_defineMethod(c$, "getCachedPngjBytes", +function(pathName){ +return (pathName == null || this.pngjCache == null || pathName.indexOf(".png") < 0 ? null : this.getJzu().getCachedPngjBytes(this, pathName)); +}, "~S"); +Clazz_overrideMethod(c$, "postByteArray", +function(fileName, bytes){ +if (fileName.startsWith("cache://")) { +this.cachePut(fileName, bytes); +return "OK " + bytes.length + "cached"; +}var ret = this.getBufferedInputStreamOrErrorMessageFromName(fileName, null, false, false, bytes, false, true); +if ((typeof(ret)=='string')) return ret; +try { +ret = JU.Rdr.getStreamAsBytes(ret, null); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +try { +(ret).close(); +} catch (e1) { +if (Clazz_exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +} else { +throw e; +} +} +return (ret == null ? "" : JU.Rdr.fixUTF(ret)); +}, "~S,~A"); +c$.isJmolType = Clazz_defineMethod(c$, "isJmolType", +function(type){ +return (type.equals("PNG") || type.equals("PNGJ") || type.equals("JMOL") || type.equals("ZIP") || type.equals("ZIPALL")); +}, "~S"); +c$.isEmbeddable = Clazz_defineMethod(c$, "isEmbeddable", +function(type){ +var pt = type.lastIndexOf('.'); +if (pt >= 0) type = type.substring(pt + 1); +type = type.toUpperCase(); +return (JV.FileManager.isJmolType(type) || JU.PT.isOneOf(type, ";JPG;JPEG;POV;IDTF;")); +}, "~S"); +Clazz_defineMethod(c$, "getEmbeddedFileState", +function(fileName, allowCached, sptName){ +if (!JV.FileManager.isEmbeddable(fileName)) return ""; +var dir = this.getZipDirectory(fileName, false, allowCached); +if (dir.length == 0) { +var state = this.vwr.getFileAsString4(fileName, -1, false, true, false, "file"); +return (state.indexOf("**** Jmol Embedded Script ****") < 0 ? "" : JV.FileManager.getEmbeddedScript(state)); +}for (var i = 0; i < dir.length; i++) if (dir[i].indexOf(sptName) >= 0) { +var data = Clazz_newArray(-1, [fileName + "|" + dir[i], null]); +this.getFileDataAsString(data, -1, false, false, false); +return data[1]; +} +return ""; +}, "~S,~B,~S"); +c$.stripTypePrefix = Clazz_defineMethod(c$, "stripTypePrefix", +function(fileName){ +var pt = fileName.indexOf("::"); +return (pt < 0 || pt >= 20 ? fileName : fileName.substring(pt + 2)); +}, "~S"); +c$.getEmbeddedScript = Clazz_defineMethod(c$, "getEmbeddedScript", +function(s){ +if (s == null) return s; +var pt = s.indexOf("**** Jmol Embedded Script ****"); +if (pt < 0) return s; +var pt1 = s.lastIndexOf("/*", pt); +var pt2 = s.indexOf((s.charAt(pt1 + 2) == '*' ? "*" : "") + "*/", pt); +if (pt1 >= 0 && pt2 >= pt) s = s.substring(pt + "**** Jmol Embedded Script ****".length, pt2) + "\n"; +while ((pt1 = s.indexOf(" #Jmol...\u0000")) >= 0) s = s.substring(0, pt1) + s.substring(pt1 + " #Jmol...\u0000".length + 4); + +if (JU.Logger.debugging) JU.Logger.debug(s); +return s; +}, "~S"); +Clazz_defineMethod(c$, "isZipStream", +function(br){ +return this.vwr.getJzt().isZipStream(br); +}, "~O"); +c$.SIMULATION_PROTOCOL = "http://SIMULATION/"; +c$.scriptFilePrefixes = Clazz_newArray(-1, ["/*file*/\"", "FILE0=\"", "FILE1=\""]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.util.Hashtable", "JU.P3", "J.c.CBK"], "JV.GlobalSettings", ["JU.DF", "$.PT", "$.SB", "J.c.STR", "JS.SV", "JU.Escape", "$.Logger", "JV.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.htNonbooleanParameterValues = null; +this.htBooleanParameterFlags = null; +this.htPropertyFlagsRemoved = null; +this.htUserVariables = null; +this.zDepth = 0; +this.zShadePower = 3; +this.zSlab = 50; +this.slabByMolecule = false; +this.slabByAtom = false; +this.allowEmbeddedScripts = true; +this.appendNew = true; +this.appletProxy = ""; +this.applySymmetryToBonds = false; +this.atomTypes = ""; +this.autoBond = true; +this.axesOrientationRasmol = false; +this.bondRadiusMilliAngstroms = 150; +this.bondTolerance = 0.45; +this.defaultDirectory = ""; +this.defaultStructureDSSP = true; +this.ptDefaultLattice = null; +this.defaultLoadScript = ""; +this.defaultLoadFilter = ""; +this.defaultDropScript = "zap; load SYNC \"%FILE\";if (%ALLOWCARTOONS && _loadScript == \'\' && defaultLoadScript == \'\' && _filetype == \'Pdb\') {if ({(protein or nucleic)&*/1.1} && {*/1.1}[1].groupindex != {*/1.1}[0].groupindex){select protein or nucleic;cartoons only;}if ({visible && cartoons > 0}){color structure}else{wireframe -0.1};if (!{visible}){spacefill 23%};select *}"; +this.forceAutoBond = false; +this.fractionalRelative = true; +this.inlineNewlineChar = '|'; +this.loadFormat = null; +this.pdbLoadFormat = null; +this.pdbLoadLigandFormat = null; +this.nmrUrlFormat = null; +this.nmrPredictFormat = null; +this.smilesUrlFormat = null; +this.nihResolverFormat = null; +this.pubChemFormat = null; +this.macroDirectory = null; +this.resolverResolver = null; +this.checkCIR = false; +this.minBondDistance = 0.4; +this.minPixelSelRadius = 6; +this.pdbAddHydrogens = false; +this.pdbGetHeader = false; +this.pdbSequential = false; +this.percentVdwAtom = 23; +this.smallMoleculeMaxAtoms = 40000; +this.smartAromatic = true; +this.zeroBasedXyzRasmol = false; +this.legacyAutoBonding = false; +this.legacyHAddition = false; +this.legacyJavaFloat = false; +this.doublePrecision = false; +this.jmolInJSpecView = true; +this.modulateOccupancy = true; +this.allowRotateSelected = false; +this.allowMoveAtoms = false; +this.dotSolvent = false; +this.defaultAngleLabel = "%VALUE %UNITS"; +this.defaultDistanceLabel = "%VALUE %UNITS"; +this.defaultTorsionLabel = "%VALUE %UNITS"; +this.justifyMeasurements = false; +this.measureAllModels = false; +this.minimizationSteps = 100; +this.minimizationRefresh = true; +this.minimizationSilent = false; +this.minimizationCriterion = 0.001; +this.minimizationMaxAtoms = 200; +this.minimizationReportSteps = 10; +this.infoFontSize = 20; +this.antialiasDisplay = false; +this.antialiasImages = true; +this.imageState = true; +this.antialiasTranslucent = true; +this.displayCellParameters = true; +this.dotsSelectedOnly = false; +this.dotSurface = true; +this.dotDensity = 3; +this.dotScale = 1; +this.meshScale = 1; +this.greyscaleRendering = false; +this.isosurfaceKey = false; +this.isosurfacePropertySmoothing = true; +this.isosurfacePropertySmoothingPower = 7; +this.platformSpeed = 10; +this.repaintWaitMs = 1000; +this.showHiddenSelectionHalos = false; +this.showKeyStrokes = true; +this.showMeasurements = true; +this.showTiming = false; +this.zoomLarge = true; +this.zoomHeight = false; +this.backgroundImageFileName = null; +this.partialDots = false; +this.bondModeOr = false; +this.hbondsBackbone = false; +this.hbondsAngleMinimum = 90; +this.hbondNODistanceMaximum = 3.25; +this.hbondHXDistanceMaximum = 2.5; +this.hbondsRasmol = true; +this.hbondsSolid = false; +this.modeMultipleBond = 2; +this.showHydrogens = true; +this.showMultipleBonds = true; +this.ssbondsBackbone = false; +this.multipleBondSpacing = -1; +this.multipleBondRadiusFactor = 0; +this.multipleBondBananas = false; +this.nboCharges = true; +this.cartoonBaseEdges = false; +this.cartoonRockets = false; +this.cartoonBlockHeight = 0.5; +this.cartoonBlocks = false; +this.cartoonSteps = false; +this.cartoonFancy = false; +this.cartoonLadders = false; +this.cartoonRibose = false; +this.chainCaseSensitive = false; +this.cipRule6Full = false; +this.hermiteLevel = 0; +this.highResolutionFlag = false; +this.rangeSelected = false; +this.rasmolHydrogenSetting = true; +this.rasmolHeteroSetting = true; +this.ribbonAspectRatio = 16; +this.ribbonBorder = false; +this.rocketBarrels = false; +this.sheetSmoothing = 1; +this.traceAlpha = true; +this.translucent = true; +this.twistedSheets = false; +this.autoplayMovie = true; +this.allowAudio = true; +this.allowGestures = false; +this.allowModelkit = true; +this.allowMultiTouch = true; +this.allowKeyStrokes = false; +this.hiddenLinesDashed = false; +this.animationFps = 10; +this.atomPicking = true; +this.autoFps = false; +this.axesMode = 603979809; +this.axesScale = 2; +this.axesOffset = 0; +this.starWidth = 0.05; +this.bondPicking = false; +this.dataSeparator = "~~~"; +this.debugScript = false; +this.defaultDrawArrowScale = 0.5; +this.defaultLabelXYZ = "%a"; +this.defaultLabelPDB = "%m%r"; +this.defaultTranslucent = 0.5; +this.delayMaximumMs = 0; +this.dipoleScale = 1; +this.drawFontSize = 16.0; +this.disablePopupMenu = false; +this.dragSelected = false; +this.drawHover = false; +this.drawPicking = false; +this.dsspCalcHydrogen = true; +this.elementKey = false; +this.energyUnits = "kJ"; +this.exportScale = 0; +this.helpPath = "https://chemapps.stolaf.edu/jmol/docs/index.htm"; +this.fontScaling = false; +this.fontCaching = true; +this.forceField = "MMFF"; +this.helixStep = 1; +this.hideNameInPopup = false; +this.hoverDelayMs = 500; +this.labelPointerWidth = 2; +this.loadAtomDataTolerance = 0.01; +this.logCommands = false; +this.logGestures = false; +this.measureDistanceUnits = "nanometers"; +this.measurementLabels = true; +this.messageStyleChime = false; +this.monitorEnergy = false; +this.modulationScale = 1; +this.multiProcessor = true; +this.particleRadius = 20; +this.pickingSpinRate = 10; +this.pickLabel = ""; +this.pointGroupDistanceTolerance = 0.2; +this.pointGroupLinearTolerance = 8.0; +this.preserveState = true; +this.propertyColorScheme = "roygb"; +this.quaternionFrame = "p"; +this.saveProteinStructureState = true; +this.showModVecs = false; +this.showUnitCellDetails = true; +this.solventProbeRadius = 1.2; +this.scriptDelay = 0; +this.selectAllModels = true; +this.statusReporting = true; +this.strandCountForStrands = 5; +this.strandCountForMeshRibbon = 7; +this.strutSpacing = 6; +this.strutLengthMaximum = 7.0; +this.strutDefaultRadius = 0.3; +this.strutsMultiple = false; +this.symmetryHermannMauguin = false; +this.useMinimizationThread = true; +this.useNumberLocalization = true; +this.useScriptQueue = true; +this.waitForMoveTo = true; +this.noDelay = false; +this.vectorScale = 1; +this.vectorSymmetry = false; +this.vectorsCentered = false; +this.vectorTrail = 0; +this.vibrationPeriod = 1; +this.vibrationScale = 1; +this.wireframeRotation = false; +this.hideNavigationPoint = false; +this.navigationMode = false; +this.navigationPeriodic = false; +this.navigationSpeed = 5; +this.showNavigationPointAlways = false; +this.stereoState = null; +this.modelKitMode = false; +this.objColors = null; +this.objStateOn = null; +this.objMad10 = null; +this.ellipsoidAxes = false; +this.ellipsoidDots = false; +this.ellipsoidArcs = false; +this.ellipsoidArrows = false; +this.ellipsoidFill = false; +this.ellipsoidBall = true; +this.ellipsoidDotCount = 200; +this.ellipsoidAxisDiameter = 0.02; +this.testFlag1 = false; +this.testFlag2 = false; +this.testFlag3 = false; +this.testFlag4 = false; +this.structureList = null; +this.haveSetStructureList = false; +this.bondingVersion = 0; +Clazz_instantialize(this, arguments);}, JV, "GlobalSettings", null); +Clazz_prepareFields (c$, function(){ +this.htUserVariables = new java.util.Hashtable(); +this.ptDefaultLattice = new JU.P3(); +this.objColors = Clazz_newIntArray (7, 0); +this.objStateOn = Clazz_newBooleanArray(7, false); +this.objMad10 = Clazz_newIntArray (7, 0); +this.structureList = new java.util.Hashtable(); +{ +this.structureList.put(J.c.STR.TURN, Clazz_newFloatArray(-1, [30, 90, -15, 95])); +this.structureList.put(J.c.STR.SHEET, Clazz_newFloatArray(-1, [-180, -10, 70, 180, -180, -45, -180, -130, 140, 180, 90, 180])); +this.structureList.put(J.c.STR.HELIX, Clazz_newFloatArray(-1, [-160, 0, -100, 45])); +}}); +Clazz_makeConstructor(c$, +function(vwr, g, clearUserVariables){ +this.vwr = vwr; +this.htNonbooleanParameterValues = new java.util.Hashtable(); +this.htBooleanParameterFlags = new java.util.Hashtable(); +this.htPropertyFlagsRemoved = new java.util.Hashtable(); +this.loadFormat = this.pdbLoadFormat = JV.JC.databases.get("pdb"); +this.pdbLoadLigandFormat = JV.JC.databases.get("ligand"); +this.nmrUrlFormat = JV.JC.databases.get("nmr"); +this.nmrPredictFormat = JV.JC.databases.get("nmrdb"); +this.pubChemFormat = JV.JC.databases.get("pubchem"); +this.resolverResolver = JV.JC.databases.get("resolverresolver"); +this.macroDirectory = "https://chemapps.stolaf.edu/jmol/macros"; +if (g == null) { +this.setB("undoAuto", !vwr.isApplet); +} else { +this.setB("undoAuto", vwr.getBooleanProperty("undoAuto")); +if (!clearUserVariables) { +this.setO("_pngjFile", g.getParameter("_pngjFile", false)); +this.htUserVariables = g.htUserVariables; +}this.debugScript = g.debugScript; +this.disablePopupMenu = g.disablePopupMenu; +this.messageStyleChime = g.messageStyleChime; +this.measureDistanceUnits = g.measureDistanceUnits; +this.defaultDirectory = g.defaultDirectory; +this.autoplayMovie = g.autoplayMovie; +this.allowAudio = g.allowAudio; +this.allowGestures = g.allowGestures; +this.allowModelkit = g.allowModelkit; +this.allowMultiTouch = g.allowMultiTouch; +this.allowKeyStrokes = g.allowKeyStrokes; +this.legacyAutoBonding = g.legacyAutoBonding; +this.legacyHAddition = g.legacyHAddition; +this.legacyJavaFloat = g.legacyJavaFloat; +this.minimizationReportSteps = g.minimizationReportSteps; +this.doublePrecision = g.doublePrecision; +this.bondingVersion = g.bondingVersion; +this.platformSpeed = g.platformSpeed; +this.useScriptQueue = g.useScriptQueue; +this.showTiming = g.showTiming; +this.wireframeRotation = g.wireframeRotation; +this.testFlag1 = g.testFlag1; +this.testFlag2 = g.testFlag2; +this.testFlag3 = g.testFlag3; +this.testFlag4 = g.testFlag4; +this.nihResolverFormat = g.nihResolverFormat; +}if (this.nihResolverFormat == null) this.nihResolverFormat = JV.JC.databases.get("nci"); +this.setCIR(this.nihResolverFormat, false); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) this.resetValue(item.name() + "Callback", g); + +this.setF("cameraDepth", 3.0); +this.setI("undoMax", vwr.stm.getUndoMax()); +this.setI("contextDepthMax", 100); +this.setI("depth", 0); +this.setF("gestureSwipeFactor", 1.0); +this.setB("hideNotSelected", false); +this.setI("historyLevel", 0); +this.setO("hoverLabel", ""); +this.setB("isKiosk", vwr.isKiosk()); +this.setO("logFile", vwr.getLogFileName()); +this.setI("logLevel", JU.Logger.getLogLevel()); +this.setF("mouseWheelFactor", 1.15); +this.setF("mouseDragFactor", 1.0); +this.setI("navFps", 10); +this.setI("navigationDepth", 0); +this.setI("navigationSlab", 0); +this.setI("navX", 0); +this.setI("navY", 0); +this.setI("navZ", 0); +this.setO("pathForAllFiles", ""); +this.setB("perspectiveDepth", true); +this.setI("perspectiveModel", 11); +this.setO("picking", "identify"); +this.setO("pickingStyle", "toggle"); +this.setB("refreshing", true); +this.setI("rotationRadius", 0); +this.setI("scaleAngstromsPerInch", 0); +this.setI("scriptReportingLevel", 0); +this.setB("selectionHalos", false); +this.setB("showaxes", false); +this.setB("showboundbox", false); +this.setB("showfrank", false); +this.setB("showUnitcell", false); +this.setI("slab", 100); +this.setB("slabEnabled", false); +this.setF("slabrange", 0); +this.setI("spinX", 0); +this.setI("spinY", 30); +this.setI("spinZ", 0); +this.setI("spinFps", 30); +this.setF("visualRange", 5.0); +this.setI("stereoDegrees", -5); +this.setB("syncScript", vwr.sm.syncingScripts); +this.setB("syncMouse", vwr.sm.syncingMouse); +this.setB("syncStereo", vwr.sm.stereoSync); +this.setB("windowCentered", true); +this.setB("zoomEnabled", true); +this.setI("_version", JV.JC.versionInt); +this.setO("_versionDate", JV.Viewer.getJmolVersion()); +this.setB("axesWindow", true); +this.setB("axesMolecular", false); +this.setB("axesPosition", false); +this.setB("axesUnitcell", false); +this.setI("backgroundModel", 0); +this.setB("colorRasmol", false); +this.setO("currentLocalPath", ""); +this.setO("defaultLattice", "{0 0 0}"); +this.setO("defaultColorScheme", "Jmol"); +this.setO("defaultDirectoryLocal", ""); +this.setO("defaults", "Jmol"); +this.setO("defaultVDW", "Jmol"); +this.setO("exportDrivers", "Idtf;Maya;Povray;Vrml;X3d;Stl;Tachyon;Obj"); +this.setI("propertyAtomNumberColumnCount", 0); +this.setI("propertyAtomNumberField", 0); +this.setI("propertyDataColumnCount", 0); +this.setI("propertyDataField", 0); +this.setI("undoMax", vwr.stm.getUndoMax()); +this.setB("allowEmbeddedScripts", this.allowEmbeddedScripts); +this.setB("allowGestures", this.allowGestures); +this.setB("allowKeyStrokes", this.allowKeyStrokes); +this.setB("allowModelkit", this.allowModelkit); +this.setB("allowMultiTouch", this.allowMultiTouch); +this.setB("allowRotateSelected", this.allowRotateSelected); +this.setB("allowMoveAtoms", this.allowMoveAtoms); +this.setI("animationFps", this.animationFps); +this.setB("antialiasImages", this.antialiasImages); +this.setB("antialiasDisplay", this.antialiasDisplay); +this.setB("antialiasTranslucent", this.antialiasTranslucent); +this.setB("appendNew", this.appendNew); +this.setO("appletProxy", this.appletProxy); +this.setB("applySymmetryToBonds", this.applySymmetryToBonds); +this.setB("atomPicking", this.atomPicking); +this.setO("atomTypes", this.atomTypes); +this.setB("autoBond", this.autoBond); +this.setB("autoFps", this.autoFps); +this.setI("axesMode", this.axesMode == 603979808 ? 2 : this.axesMode == 603979804 ? 1 : 0); +this.setF("axesScale", this.axesScale); +this.setF("axesOffset", this.axesOffset); +this.setB("axesOrientationRasmol", this.axesOrientationRasmol); +this.setF("cartoonBlockHeight", this.cartoonBlockHeight); +this.setB("cartoonBlocks", this.cartoonBlocks); +this.setB("cartoonSteps", this.cartoonSteps); +this.setB("bondModeOr", this.bondModeOr); +this.setB("bondPicking", this.bondPicking); +this.setI("bondRadiusMilliAngstroms", this.bondRadiusMilliAngstroms); +this.setF("bondTolerance", this.bondTolerance); +this.setB("cartoonBaseEdges", this.cartoonBaseEdges); +this.setB("cartoonFancy", this.cartoonFancy); +this.setB("cartoonLadders", this.cartoonLadders); +this.setB("cartoonLadders", this.cartoonRibose); +this.setB("cartoonRockets", this.cartoonRockets); +this.setB("chainCaseSensitive", this.chainCaseSensitive); +this.setB("cipRule6Full", this.cipRule6Full); +this.setI("bondingVersion", this.bondingVersion); +this.setO("dataSeparator", this.dataSeparator); +this.setB("debugScript", this.debugScript); +this.setO("defaultAngleLabel", this.defaultAngleLabel); +this.setF("defaultDrawArrowScale", this.defaultDrawArrowScale); +this.setO("defaultDirectory", this.defaultDirectory); +this.setO("defaultDistanceLabel", this.defaultDistanceLabel); +this.setO("defaultDropScript", this.defaultDropScript); +this.setO("defaultLabelPDB", this.defaultLabelPDB); +this.setO("defaultLabelXYZ", this.defaultLabelXYZ); +this.setO("defaultLoadFilter", this.defaultLoadFilter); +this.setO("defaultLoadScript", this.defaultLoadScript); +this.setB("defaultStructureDSSP", this.defaultStructureDSSP); +this.setO("defaultTorsionLabel", this.defaultTorsionLabel); +this.setF("defaultTranslucent", this.defaultTranslucent); +this.setI("delayMaximumMs", this.delayMaximumMs); +this.setF("dipoleScale", this.dipoleScale); +this.setB("disablePopupMenu", this.disablePopupMenu); +this.setB("displayCellParameters", this.displayCellParameters); +this.setI("dotDensity", this.dotDensity); +this.setI("dotScale", this.dotScale); +this.setB("dotsSelectedOnly", this.dotsSelectedOnly); +this.setB("dotSurface", this.dotSurface); +this.setB("dragSelected", this.dragSelected); +this.setB("drawHover", this.drawHover); +this.setF("drawFontSize", this.drawFontSize); +this.setB("drawPicking", this.drawPicking); +this.setB("dsspCalculateHydrogenAlways", this.dsspCalcHydrogen); +this.setB("elementkey", this.elementKey); +this.setB("ellipsoidArcs", this.ellipsoidArcs); +this.setB("ellipsoidArrows", this.ellipsoidArrows); +this.setB("ellipsoidAxes", this.ellipsoidAxes); +this.setF("ellipsoidAxisDiameter", this.ellipsoidAxisDiameter); +this.setB("ellipsoidBall", this.ellipsoidBall); +this.setI("ellipsoidDotCount", this.ellipsoidDotCount); +this.setB("ellipsoidDots", this.ellipsoidDots); +this.setB("ellipsoidFill", this.ellipsoidFill); +this.setO("energyUnits", this.energyUnits); +this.setF("exportScale", this.exportScale); +this.setB("doublePrecision", this.doublePrecision); +this.setB("fontScaling", this.fontScaling); +this.setB("fontCaching", this.fontCaching); +this.setB("forceAutoBond", this.forceAutoBond); +this.setO("forceField", this.forceField); +this.setB("fractionalRelative", this.fractionalRelative); +this.setF("particleRadius", this.particleRadius); +this.setB("greyscaleRendering", this.greyscaleRendering); +this.setF("hbondsAngleMinimum", this.hbondsAngleMinimum); +this.setF("hbondHXDistanceMaximum", this.hbondHXDistanceMaximum); +this.setF("hbondsDistanceMaximum", this.hbondNODistanceMaximum); +this.setB("hbondsBackbone", this.hbondsBackbone); +this.setB("hbondsRasmol", this.hbondsRasmol); +this.setB("hbondsSolid", this.hbondsSolid); +this.setI("helixStep", this.helixStep); +this.setO("helpPath", this.helpPath); +this.setI("hermiteLevel", this.hermiteLevel); +this.setB("hideNameInPopup", this.hideNameInPopup); +this.setB("hideNavigationPoint", this.hideNavigationPoint); +this.setB("hiddenLinesDashed", this.hiddenLinesDashed); +this.setB("highResolution", this.highResolutionFlag); +this.setF("hoverDelay", this.hoverDelayMs / 1000); +this.setB("imageState", this.imageState); +this.setI("infoFontSize", this.infoFontSize); +this.setB("isosurfaceKey", this.isosurfaceKey); +this.setB("isosurfacePropertySmoothing", this.isosurfacePropertySmoothing); +this.setI("isosurfacePropertySmoothingPower", this.isosurfacePropertySmoothingPower); +this.setB("jmolInJSpecView", this.jmolInJSpecView); +this.setI("labelPointerWidth", this.labelPointerWidth); +this.setB("justifyMeasurements", this.justifyMeasurements); +this.setB("legacyAutoBonding", this.legacyAutoBonding); +this.setB("legacyHAddition", this.legacyHAddition); +this.setB("legacyJavaFloat", this.legacyJavaFloat); +this.setF("loadAtomDataTolerance", this.loadAtomDataTolerance); +this.setO("loadFormat", this.loadFormat); +this.setO("loadLigandFormat", this.pdbLoadLigandFormat); +this.setB("logCommands", this.logCommands); +this.setB("logGestures", this.logGestures); +this.setB("measureAllModels", this.measureAllModels); +this.setB("measurementLabels", this.measurementLabels); +this.setO("measurementUnits", this.measureDistanceUnits); +this.setI("meshScale", this.meshScale); +this.setB("messageStyleChime", this.messageStyleChime); +this.setF("minBondDistance", this.minBondDistance); +this.setI("minPixelSelRadius", this.minPixelSelRadius); +this.setI("minimizationReportSteps", this.minimizationReportSteps); +this.setI("minimizationSteps", this.minimizationSteps); +this.setB("minimizationRefresh", this.minimizationRefresh); +this.setB("minimizationSilent", this.minimizationSilent); +this.setF("minimizationCriterion", this.minimizationCriterion); +this.setB("modelKitMode", this.modelKitMode); +this.setF("modulationScale", this.modulationScale); +this.setB("monitorEnergy", this.monitorEnergy); +this.setF("multipleBondRadiusFactor", this.multipleBondRadiusFactor); +this.setB("multipleBondBananas", this.multipleBondBananas); +this.setF("multipleBondSpacing", this.multipleBondSpacing); +this.setB("multiProcessor", this.multiProcessor && (JV.Viewer.nProcessors > 1)); +this.setB("navigationMode", this.navigationMode); +this.setB("navigationPeriodic", this.navigationPeriodic); +this.setF("navigationSpeed", this.navigationSpeed); +this.setB("nboCharges", this.nboCharges); +this.setB("noDelay", this.noDelay); +this.setO("nmrPredictFormat", this.nmrPredictFormat); +this.setO("nmrUrlFormat", this.nmrUrlFormat); +this.setB("partialDots", this.partialDots); +this.setB("pdbAddHydrogens", this.pdbAddHydrogens); +this.setB("pdbGetHeader", this.pdbGetHeader); +this.setB("pdbSequential", this.pdbSequential); +this.setI("percentVdwAtom", this.percentVdwAtom); +this.setI("pickingSpinRate", this.pickingSpinRate); +this.setO("pickLabel", this.pickLabel); +this.setI("platformSpeed", this.platformSpeed); +this.setF("pointGroupLinearTolerance", this.pointGroupLinearTolerance); +this.setF("pointGroupDistanceTolerance", this.pointGroupDistanceTolerance); +this.setB("preserveState", this.preserveState); +this.setO("propertyColorScheme", this.propertyColorScheme); +this.setO("quaternionFrame", this.quaternionFrame); +this.setB("rangeSelected", this.rangeSelected); +this.setI("repaintWaitMs", this.repaintWaitMs); +this.setI("ribbonAspectRatio", this.ribbonAspectRatio); +this.setB("ribbonBorder", this.ribbonBorder); +this.setB("rocketBarrels", this.rocketBarrels); +this.setB("saveProteinStructureState", this.saveProteinStructureState); +this.setB("scriptqueue", this.useScriptQueue); +this.setB("selectAllModels", this.selectAllModels); +this.setB("selectHetero", this.rasmolHeteroSetting); +this.setB("selectHydrogen", this.rasmolHydrogenSetting); +this.setF("sheetSmoothing", this.sheetSmoothing); +this.setB("showHiddenSelectionHalos", this.showHiddenSelectionHalos); +this.setB("showHydrogens", this.showHydrogens); +this.setB("showKeyStrokes", this.showKeyStrokes); +this.setB("showMeasurements", this.showMeasurements); +this.setB("showModulationVectors", this.showModVecs); +this.setB("showMultipleBonds", this.showMultipleBonds); +this.setB("showNavigationPointAlways", this.showNavigationPointAlways); +this.setI("showScript", this.scriptDelay); +this.setB("showtiming", this.showTiming); +this.setB("slabByMolecule", this.slabByMolecule); +this.setB("slabByAtom", this.slabByAtom); +this.setB("smartAromatic", this.smartAromatic); +this.setI("minimizationMaxAtoms", this.minimizationMaxAtoms); +this.setI("smallMoleculeMaxAtoms", this.smallMoleculeMaxAtoms); +this.setO("smilesUrlFormat", this.smilesUrlFormat); +this.setO("macroDirectory", this.macroDirectory); +this.setO("nihResolverFormat", this.nihResolverFormat); +this.setO("pubChemFormat", this.pubChemFormat); +this.setB("showUnitCellDetails", this.showUnitCellDetails); +this.setB("solventProbe", this.dotSolvent); +this.setF("solventProbeRadius", this.solventProbeRadius); +this.setB("ssbondsBackbone", this.ssbondsBackbone); +this.setF("starWidth", this.starWidth); +this.setB("statusReporting", this.statusReporting); +this.setI("strandCount", this.strandCountForStrands); +this.setI("strandCountForStrands", this.strandCountForStrands); +this.setI("strandCountForMeshRibbon", this.strandCountForMeshRibbon); +this.setF("strutDefaultRadius", this.strutDefaultRadius); +this.setF("strutLengthMaximum", this.strutLengthMaximum); +this.setI("strutSpacing", this.strutSpacing); +this.setB("strutsMultiple", this.strutsMultiple); +this.setB("symmetryhermannmauguin", this.symmetryHermannMauguin); +this.setB("testFlag1", this.testFlag1); +this.setB("testFlag2", this.testFlag2); +this.setB("testFlag3", this.testFlag3); +this.setB("testFlag4", this.testFlag4); +this.setB("traceAlpha", this.traceAlpha); +this.setB("translucent", this.translucent); +this.setB("twistedSheets", this.twistedSheets); +this.setB("useMinimizationThread", this.useMinimizationThread); +this.setB("useNumberLocalization", this.useNumberLocalization); +this.setB("vectorsCentered", this.vectorsCentered); +this.setF("vectorScale", this.vectorScale); +this.setB("vectorSymmetry", this.vectorSymmetry); +this.setI("vectorTrail", this.vectorTrail); +this.setF("vibrationPeriod", this.vibrationPeriod); +this.setF("vibrationScale", this.vibrationScale); +this.setB("waitForMoveTo", this.waitForMoveTo); +this.setB("wireframeRotation", this.wireframeRotation); +this.setI("zDepth", this.zDepth); +this.setB("zeroBasedXyzRasmol", this.zeroBasedXyzRasmol); +this.setB("zoomHeight", this.zoomHeight); +this.setB("zoomLarge", this.zoomLarge); +this.setI("zShadePower", this.zShadePower); +this.setI("zSlab", this.zSlab); +}, "JV.Viewer,JV.GlobalSettings,~B"); +Clazz_defineMethod(c$, "clear", +function(){ +var e = this.htUserVariables.keySet().iterator(); +while (e.hasNext()) { +var key = e.next(); +if (key.charAt(0) == '@' || key.startsWith("site_")) e.remove(); +} +this.vwr.setPicked(-1, false); +this.setI("_atomhovered", -1); +this.setO("_pickinfo", ""); +this.setB("selectionhalos", false); +this.setB("hidenotselected", false); +this.setB("measurementlabels", this.measurementLabels = true); +this.setB("drawHover", this.drawHover = false); +this.vwr.stm.saveScene("DELETE", null); +}); +Clazz_defineMethod(c$, "setUnits", +function(units){ +var mu = this.measureDistanceUnits; +var eu = this.energyUnits; +if (units.equalsIgnoreCase("angstroms")) this.measureDistanceUnits = "angstroms"; + else if (units.equalsIgnoreCase("nanometers") || units.equalsIgnoreCase("nm")) this.measureDistanceUnits = "nanometers"; + else if (units.equalsIgnoreCase("picometers") || units.equalsIgnoreCase("pm")) this.measureDistanceUnits = "picometers"; + else if (units.equalsIgnoreCase("bohr") || units.equalsIgnoreCase("au")) this.measureDistanceUnits = "au"; + else if (units.equalsIgnoreCase("vanderwaals") || units.equalsIgnoreCase("vdw")) this.measureDistanceUnits = "vdw"; + else if (units.toLowerCase().endsWith("hz") || units.toLowerCase().endsWith("khz")) this.measureDistanceUnits = units.toLowerCase(); + else if (units.equalsIgnoreCase("kj")) this.energyUnits = "kJ"; + else if (units.equalsIgnoreCase("kcal")) this.energyUnits = "kcal"; +if (!mu.equalsIgnoreCase(this.measureDistanceUnits)) this.setO("measurementUnits", this.measureDistanceUnits); + else if (!eu.equalsIgnoreCase(this.energyUnits)) this.setO("energyUnits", this.energyUnits); +}, "~S"); +Clazz_defineMethod(c$, "isJmolVariable", +function(key){ +return key.charAt(0) == '_' || this.htNonbooleanParameterValues.containsKey(key = key.toLowerCase()) || this.htBooleanParameterFlags.containsKey(key) || JV.GlobalSettings.unreportedProperties.indexOf(";" + key + ";") >= 0; +}, "~S"); +Clazz_defineMethod(c$, "resetValue", +function(name, g){ +this.setO(name, g == null ? "" : g.getParameter(name, true)); +}, "~S,JV.GlobalSettings"); +Clazz_defineMethod(c$, "setB", +function(name, value){ +name = name.toLowerCase(); +if (this.htNonbooleanParameterValues.containsKey(name)) return; +this.htBooleanParameterFlags.put(name, value ? Boolean.TRUE : Boolean.FALSE); +}, "~S,~B"); +Clazz_defineMethod(c$, "setI", +function(name, value){ +if (value != 2147483647) this.setO(name, Integer.$valueOf(value)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setF", +function(name, value){ +if (!Float.isNaN(value)) this.setO(name, Float.$valueOf(value)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setO", +function(name, value){ +name = name.toLowerCase(); +if (value == null || this.htBooleanParameterFlags.containsKey(name)) return; +this.htNonbooleanParameterValues.put(name, value); +}, "~S,~O"); +Clazz_defineMethod(c$, "removeParam", +function(key){ +key = key.toLowerCase(); +if (this.htBooleanParameterFlags.containsKey(key)) { +this.htBooleanParameterFlags.remove(key); +if (!this.htPropertyFlagsRemoved.containsKey(key)) this.htPropertyFlagsRemoved.put(key, Boolean.FALSE); +return; +}if (this.htNonbooleanParameterValues.containsKey(key)) this.htNonbooleanParameterValues.remove(key); +}, "~S"); +Clazz_defineMethod(c$, "setUserVariable", +function(key, $var){ +if ($var != null) { +key = key.toLowerCase(); +this.htUserVariables.put(key, $var.setName(key)); +}return $var; +}, "~S,JS.SV"); +Clazz_defineMethod(c$, "unsetUserVariable", +function(key){ +if (key.equals("all") || key.equals("variables")) { +this.htUserVariables.clear(); +JU.Logger.info("all user-defined variables deleted"); +} else if (this.htUserVariables.containsKey(key)) { +JU.Logger.info("variable " + key + " deleted"); +this.htUserVariables.remove(key); +}}, "~S"); +Clazz_defineMethod(c$, "removeUserVariable", +function(key){ +this.htUserVariables.remove(key); +}, "~S"); +Clazz_defineMethod(c$, "getUserVariable", +function(name){ +if (name == null) return null; +name = name.toLowerCase(); +return this.htUserVariables.get(name); +}, "~S"); +Clazz_defineMethod(c$, "getParameterEscaped", +function(name, nMax){ +name = name.toLowerCase(); +if (this.htNonbooleanParameterValues.containsKey(name)) { +var v = this.htNonbooleanParameterValues.get(name); +return JV.StateManager.varClip(name, JU.Escape.e(v), nMax); +}if (this.htBooleanParameterFlags.containsKey(name)) return this.htBooleanParameterFlags.get(name).toString(); +if (this.htUserVariables.containsKey(name)) return this.htUserVariables.get(name).escape(); +if (this.htPropertyFlagsRemoved.containsKey(name)) return "false"; +return ""; +}, "~S,~N"); +Clazz_defineMethod(c$, "getParameter", +function(name, nullAsString){ +var v = this.getParam(name, false); +return (v == null && nullAsString ? "" : v); +}, "~S,~B"); +Clazz_defineMethod(c$, "getAndSetNewVariable", +function(name, doSet){ +if (name == null || name.length == 0) name = "x"; +var v = this.getParam(name, true); +return (v == null && doSet && name.charAt(0) != '_' ? this.setUserVariable(name, JS.SV.newV(4, "")) : JS.SV.getVariable(v)); +}, "~S,~B"); +Clazz_defineMethod(c$, "getParam", +function(name, asVariable){ +name = name.toLowerCase(); +if (name.equals("_memory")) { +var bTotal = 0; +var bFree = 0; +{ +}var value = JU.DF.formatDecimal(bTotal - bFree, 1) + "/" + JU.DF.formatDecimal(bTotal, 1); +this.htNonbooleanParameterValues.put("_memory", value); +}if (this.htNonbooleanParameterValues.containsKey(name)) return this.htNonbooleanParameterValues.get(name); +if (this.htBooleanParameterFlags.containsKey(name)) return this.htBooleanParameterFlags.get(name); +if (this.htPropertyFlagsRemoved.containsKey(name)) return Boolean.FALSE; +if (this.htUserVariables.containsKey(name)) { +var v = this.htUserVariables.get(name); +return (asVariable ? v : JS.SV.oValue(v)); +}return null; +}, "~S,~B"); +Clazz_defineMethod(c$, "getVariableList", +function(){ +return JV.StateManager.getVariableList(this.htUserVariables, 0, true, false); +}); +Clazz_defineMethod(c$, "setStructureList", +function(list, type){ +this.haveSetStructureList = true; +this.structureList.put(type, list); +}, "~A,J.c.STR"); +Clazz_defineMethod(c$, "getStructureList", +function(){ +return this.structureList; +}); +c$.doReportProperty = Clazz_defineMethod(c$, "doReportProperty", +function(name){ +return (name.charAt(0) != '_' && JV.GlobalSettings.unreportedProperties.indexOf(";" + name + ";") < 0); +}, "~S"); +Clazz_defineMethod(c$, "getAllVariables", +function(){ +var map = new java.util.Hashtable(); +map.putAll(this.htBooleanParameterFlags); +map.putAll(this.htNonbooleanParameterValues); +map.putAll(this.htUserVariables); +return map; +}); +Clazz_defineMethod(c$, "getLoadState", +function(htParams){ +var str = new JU.SB(); +this.app(str, "set allowEmbeddedScripts false"); +if (this.allowEmbeddedScripts) this.setB("allowEmbeddedScripts", true); +this.app(str, "set appendNew " + this.appendNew); +this.app(str, "set appletProxy " + JU.PT.esc(this.appletProxy)); +this.app(str, "set applySymmetryToBonds " + this.applySymmetryToBonds); +if (this.atomTypes.length > 0) this.app(str, "set atomTypes " + JU.PT.esc(this.atomTypes)); +this.app(str, "set autoBond " + this.autoBond); +if (this.axesOrientationRasmol) this.app(str, "set axesOrientationRasmol true"); +this.app(str, "set bondRadiusMilliAngstroms " + this.bondRadiusMilliAngstroms); +this.app(str, "set bondTolerance " + this.bondTolerance); +this.app(str, "set defaultLattice " + JU.Escape.eP(this.ptDefaultLattice)); +this.app(str, "set defaultLoadFilter " + JU.PT.esc(this.defaultLoadFilter)); +this.app(str, "set defaultLoadScript \"\""); +if (this.defaultLoadScript.length > 0) this.setO("defaultLoadScript", this.defaultLoadScript); +this.app(str, "set defaultStructureDssp " + this.defaultStructureDSSP); +var sMode = this.vwr.getDefaultVdwNameOrData(-2147483648, null, null); +this.app(str, "set defaultVDW " + sMode); +if (sMode.equals("User")) this.app(str, this.vwr.getDefaultVdwNameOrData(2147483647, null, null)); +this.app(str, "set forceAutoBond " + this.forceAutoBond); +this.app(str, "#set defaultDirectory " + JU.PT.esc(this.defaultDirectory)); +this.app(str, "#set loadFormat " + JU.PT.esc(this.loadFormat)); +this.app(str, "#set loadLigandFormat " + JU.PT.esc(this.pdbLoadLigandFormat)); +this.app(str, "#set smilesUrlFormat " + JU.PT.esc(this.smilesUrlFormat)); +this.app(str, "#set nihResolverFormat " + JU.PT.esc(this.nihResolverFormat)); +this.app(str, "#set pubChemFormat " + JU.PT.esc(this.pubChemFormat)); +this.app(str, "set bondingVersion " + this.bondingVersion); +this.app(str, "set legacyAutoBonding " + this.legacyAutoBonding); +this.app(str, "set legacyAutoBonding " + this.legacyAutoBonding); +this.app(str, "set legacyHAddition " + this.legacyHAddition); +this.app(str, "set legacyJavaFloat " + this.legacyJavaFloat); +this.app(str, "set minBondDistance " + this.minBondDistance); +this.app(str, "set minimizationCriterion " + this.minimizationCriterion); +this.app(str, "set minimizationSteps " + this.minimizationSteps); +this.app(str, "set multipleBondBananas false"); +this.app(str, "set pdbAddHydrogens " + (htParams != null && htParams.get("pdbNoHydrogens") !== Boolean.TRUE ? this.pdbAddHydrogens : false)); +this.app(str, "set pdbGetHeader " + this.pdbGetHeader); +this.app(str, "set pdbSequential " + this.pdbSequential); +this.app(str, "set percentVdwAtom " + this.percentVdwAtom); +this.app(str, "set smallMoleculeMaxAtoms " + this.smallMoleculeMaxAtoms); +this.app(str, "set smartAromatic " + this.smartAromatic); +if (this.zeroBasedXyzRasmol) this.app(str, "set zeroBasedXyzRasmol true"); +return str.toString(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "app", +function(s, cmd){ +if (cmd.length == 0) return; +s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz_defineMethod(c$, "setCIR", +function(template, notify){ +if (template == null || template.equals(this.nihResolverFormat) && this.smilesUrlFormat != null) return; +var pt = template.indexOf("/structure"); +if (pt > 0) { +this.nihResolverFormat = template.substring(0, pt + 10); +this.smilesUrlFormat = this.nihResolverFormat + "/%FILE/file?format=sdf&get3d=true"; +if (notify) JU.Logger.info("CIR resolver set to " + this.nihResolverFormat + " template=" + template); +}}, "~S,~B"); +c$.unreportedProperties = (";ambientpercent;animationfps;antialiasdisplay;antialiasimages;antialiastranslucent;appendnew;axescolor;axesposition;axesmolecular;axesorientationrasmol;axesunitcell;axeswindow;axis1color;axis2color;axis3color;backgroundcolor;backgroundmodel;bondsymmetryatoms;boundboxcolor;cameradepth;bondingversion;ciprule6full;contextdepthmax;debug;debugscript;defaultlatttice;defaults;defaultdropscript;diffusepercent;;exportdrivers;exportscale;_filecaching;_filecache;fontcaching;fontscaling;forcefield;language;hbondsDistanceMaximum;hbondsangleminimum;jmolinJSV;legacyautobonding;legacyhaddition;legacyjavafloat;loglevel;logfile;loggestures;logcommands;measurestylechime;loadformat;loadligandformat;macrodirectory;mkaddhydrogens;minimizationmaxatoms;smilesurlformat;pubchemformat;nihresolverformat;edsurlformat;edsurlcutoff;multiprocessor;navigationmode;;nodelay;pathforallfiles;perspectivedepth;phongexponent;perspectivemodel;platformspeed;preservestate;refreshing;repaintwaitms;rotationradius;selectallmodels;showaxes;showaxis1;showaxis2;showaxis3;showboundbox;showfrank;showtiming;showunitcell;slabenabled;slab;slabrange;depth;zshade;zshadepower;specular;specularexponent;specularpercent;celshading;celshadingpower;specularpower;stateversion;statusreporting;stereo;stereostate;vibrationperiod;unitcellcolor;visualrange;windowcentered;zerobasedxyzrasmol;zoomenabled;mousedragfactor;mousewheelfactor;scriptqueue;scriptreportinglevel;syncscript;syncmouse;syncstereo;defaultdirectory;currentlocalpath;defaultdirectorylocal;ambient;bonds;colorrasmol;diffuse;fractionalrelative;frank;hetero;hidenotselected;hoverlabel;hydrogen;languagetranslation;measurementunits;navigationdepth;navigationslab;picking;pickingstyle;propertycolorscheme;radius;rgbblue;rgbgreen;rgbred;scaleangstromsperinch;selectionhalos;showscript;showselections;solvent;strandcount;spinx;spiny;spinz;spinfps;navx;navy;navz;navfps;" + J.c.CBK.getNameList() + ";undo;undoauto;undomax;atompicking;drawpicking;bondpicking;pickspinrate;picklabel" + ";modelkitmode;autoplaymovie;allowaudio;allowgestures;allowkeystrokes;allowmultitouch;allowmodelkit" + ";dodrop;hovered;historylevel;imagestate;iskiosk;useminimizationthread" + ";checkcir;resolverresolver;showkeystrokes;saveproteinstructurestate;testflag1;testflag2;testflag3;testflag4" + ";selecthetero;selecthydrogen" + ";pointgrouplineartolerance;pointgroupdistancetolerance" + ";minimizationreportsteps;elementkey;symmetryhermannmauguin;").toLowerCase(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.util.Hashtable", "JU.SB", "$.V3", "JU.Elements"], "JV.JC", ["JU.PT", "J.i18n.GT", "JU.Logger"], function(){ +var c$ = Clazz_declareType(JV, "JC", null); +c$.getNBOTypeFromName = Clazz_defineMethod(c$, "getNBOTypeFromName", +function(nboType){ +var pt = ";AO;;;;PNAO;;NAO;;;PNHO;;NHO;;;PNBO;;NBO;;;PNLMO;NLMO;;MO;;;;NO;;;;;;;;;;PRNBO;RNBO;;;;;;;;".indexOf(";" + nboType + ";"); +return (pt < 0 ? pt : Clazz_doubleToInt(pt / 6) + 31); +}, "~S"); +c$.getCIPChiralityName = Clazz_defineMethod(c$, "getCIPChiralityName", +function(flags){ +switch (flags) { +case 13: +return "Z"; +case 5: +return "z"; +case 14: +return "E"; +case 6: +return "e"; +case 17: +return "M"; +case 18: +return "P"; +case 1: +return "R"; +case 2: +return "S"; +case 9: +return "r"; +case 10: +return "s"; +case 25: +return "m"; +case 26: +return "p"; +case 7: +return "?"; +case 3: +case 0: +default: +return ""; +} +}, "~N"); +c$.getCIPRuleName = Clazz_defineMethod(c$, "getCIPRuleName", +function(i){ +return JV.JC.ruleNames[i]; +}, "~N"); +c$.getCIPChiralityCode = Clazz_defineMethod(c$, "getCIPChiralityCode", +function(c){ +switch ((c).charCodeAt(0)) { +case 90: +return 13; +case 122: +return 5; +case 69: +return 14; +case 101: +return 6; +case 82: +return 1; +case 83: +return 2; +case 114: +return 9; +case 115: +return 10; +case 63: +return 7; +default: +return 0; +} +}, "~S"); +c$.fixOptimadeCall = Clazz_defineMethod(c$, "fixOptimadeCall", +function(url){ +var pt = url.indexOf("response_fields=") + 16; +var a = ",chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species,"; +if (pt < 16) { +var ptQ = url.indexOf("?"); +url += (ptQ < 0 ? "?" : "&") + "response_fields=" + a.substring(1, a.length - 1); +} else { +var fields = "," + url.substring(pt, (url + "&").indexOf('&', pt)) + ","; +var flen = fields.length; +for (var i = 0, b = 0; i >= 0; i = b) { +b = a.indexOf(',', i + 1); +if (b < 0) break; +var k = a.substring(i, b + 1); +if (fields.indexOf(k) < 0) { +fields += k.substring(1); +}} +url = url.substring(0, pt) + fields.substring(1, fields.length - 1) + url.substring(pt + flen - 2); +}return url; +}, "~S"); +c$.resolveDataBase = Clazz_defineMethod(c$, "resolveDataBase", +function(database, id, format){ +if (format == null) { +if ((format = JV.JC.databases.get(database.toLowerCase())) == null) return null; +var pt = id.indexOf("/"); +if (pt < 0) { +if (database.equals("pubchem")) id = "name/" + id; + else if (database.equals("nci")) id += "/file?format=sdf&get3d=true"; +}if (format.startsWith("'")) { +pt = id.indexOf("."); +var n = (pt > 0 ? JU.PT.parseInt(id.substring(pt + 1)) : 0); +if (pt > 0) id = id.substring(0, pt); +format = JU.PT.rep(format, "%n", "" + n); +}} else if (id.indexOf(".") >= 0 && format.indexOf("%FILE.") >= 0) { +format = format.substring(0, format.indexOf("%FILE")); +}if (format.indexOf("%c") >= 0) for (var i = 1, n = id.length; i <= n; i++) if (format.indexOf("%c" + i) >= 0) format = JU.PT.rep(format, "%c" + i, id.substring(i - 1, i).toLowerCase()); + +return (format.indexOf("%FILE") >= 0 ? JU.PT.rep(format, "%FILE", id) : format.indexOf("%file") >= 0 ? JU.PT.rep(format, "%file", id.toLowerCase()) : format + id); +}, "~S,~S,~S"); +c$.fixProtocol = Clazz_defineMethod(c$, "fixProtocol", +function(name){ +var isHttp = (name != null && name.indexOf("http") >= 0); +var newname = (name == null || !isHttp ? name : name.indexOf("http://www.rcsb.org/pdb/files/") == 0 ? JV.JC.resolveDataBase(name.indexOf("/ligand/") >= 0 ? "ligand" : "pdb", name.substring(name.lastIndexOf("/") + 1), null) : name.indexOf("http://www.ebi") == 0 || name.indexOf("http://rruff") == 0 || name.indexOf("http://pubchem") == 0 || name.indexOf("http://cactus") == 0 || name.indexOf("http://www.materialsproject") == 0 ? "https://" + name.substring(7) : name.indexOf("optimade") > 0 ? JV.JC.fixOptimadeCall(name) : name); +if (newname !== name) JU.Logger.info("JC.fixProtocol " + name + " --> " + newname); +return newname; +}, "~S"); +c$.embedScript = Clazz_defineMethod(c$, "embedScript", +function(s){ +return "\n/**" + "**** Jmol Embedded Script ****" + " \n" + s + "\n**/"; +}, "~S"); +c$.getShapeVisibilityFlag = Clazz_defineMethod(c$, "getShapeVisibilityFlag", +function(shapeID){ +return 16 << Math.min(shapeID, 26); +}, "~N"); +c$.shapeTokenIndex = Clazz_defineMethod(c$, "shapeTokenIndex", +function(tok){ +switch (tok) { +case 1153433601: +case 1073741859: +return 0; +case 1677721602: +case 659488: +return 1; +case 1613238294: +return 2; +case 1611141176: +return 3; +case 659482: +return 4; +case 1825200146: +return 5; +case 1745489939: +case 537006096: +return 6; +case 1112152076: +return 7; +case 1112152070: +return 8; +case 1114249217: +return 9; +case 1112152078: +return 10; +case 1112152066: +return 11; +case 1649022989: +return 12; +case 1112152071: +return 13; +case 1112152073: +return 14; +case 1112152074: +return 15; +case 1112150019: +return 16; +case 135175: +return 17; +case 135198: +return 18; +case 1112150021: +return 19; +case 1112150020: +return 20; +case 1275203608: +return 21; +case 135174: +return 23; +case 135176: +return 22; +case 135180: +return 24; +case 134353926: +return 25; +case 135182: +return 26; +case 1073877010: +return 27; +case 1073877011: +return 28; +case 135188: +return 29; +case 135190: +return 30; +case 537022465: +return 31; +case 1611272194: +return 34; +case 1812599299: +return 32; +case 1814695966: +return 33; +case 544771: +return 35; +case 1611272202: +return 36; +} +return -1; +}, "~N"); +c$.getShapeClassName = Clazz_defineMethod(c$, "getShapeClassName", +function(shapeID, isRenderer){ +if (shapeID < 0) return JV.JC.shapeClassBases[~shapeID]; +return "J." + (isRenderer ? "render" : "shape") + (shapeID >= 9 && shapeID < 16 ? "bio." : shapeID >= 16 && shapeID < 23 ? "special." : shapeID >= 24 && shapeID < 30 ? "surface." : shapeID == 23 ? "cgo." : ".") + JV.JC.shapeClassBases[shapeID]; +}, "~N,~B"); +c$.getEchoName = Clazz_defineMethod(c$, "getEchoName", +function(type){ +return JV.JC.echoNames[type]; +}, "~N"); +c$.setZPosition = Clazz_defineMethod(c$, "setZPosition", +function(offset, pos){ +return (offset & -49) | pos; +}, "~N,~N"); +c$.setPointer = Clazz_defineMethod(c$, "setPointer", +function(offset, pointer){ +return (offset & -4) | pointer; +}, "~N,~N"); +c$.getPointer = Clazz_defineMethod(c$, "getPointer", +function(offset){ +return offset & 3; +}, "~N"); +c$.getPointerName = Clazz_defineMethod(c$, "getPointerName", +function(pointer){ +return ((pointer & 1) == 0 ? "" : (pointer & 2) > 0 ? "background" : "on"); +}, "~N"); +c$.isOffsetAbsolute = Clazz_defineMethod(c$, "isOffsetAbsolute", +function(offset){ +return ((offset & 64) != 0); +}, "~N"); +c$.getOffset = Clazz_defineMethod(c$, "getOffset", +function(xOffset, yOffset, isAbsolute){ +xOffset = Math.min(Math.max(xOffset, -500), 500); +yOffset = (Math.min(Math.max(yOffset, -500), 500)); +var offset = ((xOffset & 1023) << 21) | ((yOffset & 1023) << 11) | (isAbsolute ? 64 : 0); +if (offset == JV.JC.LABEL_DEFAULT_OFFSET) offset = 0; + else if (!isAbsolute && (xOffset == 0 || yOffset == 0)) offset |= 256; +return offset; +}, "~N,~N,~B"); +c$.getXOffset = Clazz_defineMethod(c$, "getXOffset", +function(offset){ +if (offset == 0) return 4; +var x = (offset >> 21) & 1023; +x = (x > 500 ? x - 1023 - 1 : x); +return x; +}, "~N"); +c$.getYOffset = Clazz_defineMethod(c$, "getYOffset", +function(offset){ +if (offset == 0) return 4; +var y = (offset >> 11) & 1023; +return (y > 500 ? y - 1023 - 1 : y); +}, "~N"); +c$.getAlignment = Clazz_defineMethod(c$, "getAlignment", +function(offset){ +return (offset & 12); +}, "~N"); +c$.setHorizAlignment = Clazz_defineMethod(c$, "setHorizAlignment", +function(offset, hAlign){ +return (offset & -13) | hAlign; +}, "~N,~N"); +c$.getHorizAlignmentName = Clazz_defineMethod(c$, "getHorizAlignmentName", +function(align){ +return JV.JC.hAlignNames[(align >> 2) & 3]; +}, "~N"); +c$.isSmilesCanonical = Clazz_defineMethod(c$, "isSmilesCanonical", +function(options){ +return (options != null && JU.PT.isOneOf(options.toLowerCase(), ";/cactvs///;/cactus///;/nci///;/canonical///;")); +}, "~S"); +c$.getServiceCommand = Clazz_defineMethod(c$, "getServiceCommand", +function(script){ +return (script.length < 7 ? -1 : ("JSPECVIPEAKS: SELECT:JSVSTR:H1SIMULC13SIMUNBO:MODNBO:RUNNBO:VIENBO:SEANBO:CONNONESIM").indexOf(script.substring(0, 7).toUpperCase())); +}, "~S"); +c$.getUnitIDFlags = Clazz_defineMethod(c$, "getUnitIDFlags", +function(type){ +var i = 14; +if (type.indexOf("-") == 0) { +if (type.indexOf("m") > 0) i |= 1; +if (type.indexOf("a") < 0) i ^= 4; +if (type.indexOf("t") > 0) i |= 16; +}return i; +}, "~S"); +c$.getBoolName = Clazz_defineMethod(c$, "getBoolName", +function(g){ +return JV.JC.globalBooleans[g]; +}, "~N"); +c$.isSpaceGroupInfoKey = Clazz_defineMethod(c$, "isSpaceGroupInfoKey", +function(key){ +return (key.indexOf("nitCell") >= 0 || key.equals("coordinatesAreFractional") || key.startsWith("spaceGroup") || key.indexOf("ymmet") >= 0 || key.startsWith("lattice") || key.startsWith("intlTable")); +}, "~S"); +c$.getMenuScript = Clazz_defineMethod(c$, "getMenuScript", +function(type){ +if (type === "openPDB") { +return "var x__id__ = _modelTitle; if (x__id__.length != 4) { x__id__ = '1crn'};x__id__ = prompt('" + J.i18n.GT.$("Enter a four-digit PDB model ID or \"=\" and a three-digit ligand ID") + "',x__id__);if (!x__id__) { quit }; load @{'=' + x__id__}"; +}if (type === "openMOL") { +return "var x__id__ = _smilesString; if (!x__id__) { x__id__ = 'tylenol'};x__id__ = prompt('" + J.i18n.GT.$("Enter the name or identifier (SMILES, InChI, CAS) of a compound. Preface with \":\" to load from PubChem; otherwise Jmol will use the NCI/NIH Resolver.") + "',x__id__);if (!x__id__) { quit }; load @{(x__id__[1]==':' ? x__id__ : '$' + x__id__)}"; +}return null; +}, "~S"); +c$.axisLabels = Clazz_newArray(-1, ["+X", "+Y", "+Z", null, null, null, "a", "b", "c", "X", "Y", "Z", null, null, null, "X", null, "Z", null, "(Y)", null]); +c$.axesTypes = Clazz_newArray(-1, ["a", "b", "c", "x", "y", "z"]); +c$.ruleNames = Clazz_newArray(-1, ["", "1a", "1b", "2", "3", "4a", "4b", "4c", "5", "6"]); +c$.databaseArray = Clazz_newArray(-1, ["itatable", "https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-getgen?gnum=$FILE&what=gp&list=Standard%2FDefault+Setting", "itadiagram", "https://onlinelibrary.wiley.com/iucr/itc/Ac/ch2o3v0001/sgtable2o3o%FILE", "aflowbin", "http://aflowlib.mems.duke.edu/users/jmolers/binary_new/%FILE.aflow_binary", "aflowlib", "https://aflow.org/p/%FILE.cif", "aflowpro", "$aflowlib", "ams", "'https://rruff.geo.arizona.edu/AMS/viewJmol.php?'+(0+'%file'==0? 'mineral':('%file'.length==7? 'amcsd':'id'))+'=%file&action=showcif#_DOCACHE_'", "dssr", "http://dssr-jmol.x3dna.org/report.php?id=%FILE&opts=--json=ebi", "dssrModel", "http://dssr-jmol.x3dna.org/report.php?POST?opts=--json=ebi&model=", "iucr", "http://scripts.iucr.org/cgi-bin/sendcif_yard?%FILE", "cod", "http://www.crystallography.net/cod/cif/%c1/%c2%c3/%c4%c5/%FILE.cif", "nmr", "https://www.nmrdb.org/new_predictor?POST?molfile=", "nmrdb", "https://www.nmrdb.org/service/predictor?POST?molfile=", "nmrdb13", "https://www.nmrdb.org/service/jsmol13c?POST?molfile=", "magndata", "http://webbdcrista1.ehu.es/magndata/mcif/%FILE.mcif", "rna3d", "http://rna.bgsu.edu/rna3dhub/%TYPE/download/%FILE", "mmtf", "https://mmtf.rcsb.org/v1.0/full/%FILE", "bcif", "https://models.rcsb.org/%file.bcif", "chebi", "https://www.ebi.ac.uk/chebi/saveStructure.do?defaultImage=true&chebiId=%file%2D%", "ligand", "https://files.rcsb.org/ligands/download/%FILE.cif", "mp", "https://www.materialsproject.org/materials/mp-%FILE/cif#_DOCACHE_", "nci", "https://cactus.nci.nih.gov/chemical/structure/", "pdb", "https://files.rcsb.org/download/%FILE.pdb", "pdb0", "https://files.rcsb.org/download/%FILE.pdb", "pdbe", "https://www.ebi.ac.uk/pdbe/entry-files/download/%FILE.cif", "pdbe2", "https://www.ebi.ac.uk/pdbe/static/entry/%FILE_updated.cif", "pubchem", "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/%FILE/SDF?record_type=3d", "map", "https://www.ebi.ac.uk/pdbe/api/%TYPE/%FILE?pretty=false&metadata=true", "pdbemap", "https://www.ebi.ac.uk/pdbe/coordinates/files/%file.ccp4", "pdbemapdiff", "https://www.ebi.ac.uk/pdbe/coordinates/files/%file_diff.ccp4", "pdbemapserver", "https://www.ebi.ac.uk/pdbe/densities/x-ray/%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif", "pdbemapdiffserver", "https://www.ebi.ac.uk/pdbe/densities/x-ray/%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif&diff=1", "emdbmap", "https://www.ebi.ac.uk/pdbe/densities/emd/emd-%file/cell?detail=6&space=cartesian&encoding=bcif", "emdbquery", "https://www.ebi.ac.uk/emdb/api/search/fitted_pdbs:%file?fl=emdb_id,map_contour_level_value&wt=csv", "emdbmapserver", "https://www.ebi.ac.uk/pdbe/densities/emd/emd-%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif", "xxxresolverResolver", "https://chemapps.stolaf.edu/resolver", "smiles2d", "https://cirx.chemicalcreatures.com/chemical/structure/%FILE/file?format=sdf&get3d=false", "smiles3d", "https://cirx.chemicalcreatures.com/chemical/structure/%FILE/file?format=sdf&get3d=true"]); +c$.databases = new java.util.Hashtable(); +{ +for (var i = 0; i < JV.JC.databaseArray.length; i += 2) { +var target = JV.JC.databaseArray[i + 1]; +if (target.charAt(0) == '$') { +target = JV.JC.databases.get(target.substring(1)); +}JV.JC.databases.put(JV.JC.databaseArray[i].toLowerCase(), target); +} +}c$.majorVersion = null; +{ +var tmpVersion = null; +var tmpDate = null; +{ +tmpVersion = Jmol.___JmolVersion; tmpDate = Jmol.___JmolDate; +}if (tmpDate != null) { +tmpDate = tmpDate.substring(7, 23); +}JV.JC.version = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JV.JC.majorVersion = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JV.JC.date = (tmpDate != null ? tmpDate : "(Unknown_date)"); +var v = -1; +try { +var s = JV.JC.version; +var major = ""; +var i = s.indexOf("."); +if (i < 0) { +v = 100000 * Integer.parseInt(s); +s = null; +}if (s != null) { +v = 100000 * Integer.parseInt(major = s.substring(0, i)); +s = s.substring(i + 1); +i = s.indexOf("."); +if (i < 0) { +v += 1000 * Integer.parseInt(s); +s = null; +}if (s != null) { +var m = s.substring(0, i); +major += "." + m; +JV.JC.majorVersion = major; +v += 1000 * Integer.parseInt(m); +s = s.substring(i + 1); +i = s.indexOf("_"); +if (i >= 0) s = s.substring(0, i); +i = s.indexOf(" "); +if (i >= 0) s = s.substring(0, i); +v += Integer.parseInt(s); +}}} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +JV.JC.versionInt = v; +}c$.center = JU.V3.new3(0, 0, 0); +c$.axisX = JU.V3.new3(1, 0, 0); +c$.axisY = JU.V3.new3(0, 1, 0); +c$.axisZ = JU.V3.new3(0, 0, 1); +c$.axisNX = JU.V3.new3(-1, 0, 0); +c$.axisNY = JU.V3.new3(0, -1, 0); +c$.axisNZ = JU.V3.new3(0, 0, -1); +c$.unitAxisVectors = Clazz_newArray(-1, [JV.JC.axisX, JV.JC.axisY, JV.JC.axisZ, JV.JC.axisNX, JV.JC.axisNY, JV.JC.axisNZ]); +c$.altArgbsCpk = Clazz_newIntArray(-1, [0xFFFF1493, 0xFFBFA6A6, 0xFFFFFF30, 0xFF57178F, 0xFFFFFFC0, 0xFFFFFFA0, 0xFFD8D8D8, 0xFF505050, 0xFF404040, 0xFF105050]); +c$.FORMAL_CHARGE_COLIX_RED = JU.Elements.elementSymbols.length + JV.JC.altArgbsCpk.length; +c$.argbsFormalCharge = Clazz_newIntArray(-1, [0xFFFF0000, 0xFFFF4040, 0xFFFF8080, 0xFFFFC0C0, 0xFFFFFFFF, 0xFFD8D8FF, 0xFFB4B4FF, 0xFF9090FF, 0xFF6C6CFF, 0xFF4848FF, 0xFF2424FF, 0xFF0000FF]); +c$.PARTIAL_CHARGE_COLIX_RED = JV.JC.FORMAL_CHARGE_COLIX_RED + JV.JC.argbsFormalCharge.length; +c$.argbsRwbScale = Clazz_newIntArray(-1, [0xFFFF0000, 0xFFFF1010, 0xFFFF2020, 0xFFFF3030, 0xFFFF4040, 0xFFFF5050, 0xFFFF6060, 0xFFFF7070, 0xFFFF8080, 0xFFFF9090, 0xFFFFA0A0, 0xFFFFB0B0, 0xFFFFC0C0, 0xFFFFD0D0, 0xFFFFE0E0, 0xFFFFFFFF, 0xFFE0E0FF, 0xFFD0D0FF, 0xFFC0C0FF, 0xFFB0B0FF, 0xFFA0A0FF, 0xFF9090FF, 0xFF8080FF, 0xFF7070FF, 0xFF6060FF, 0xFF5050FF, 0xFF4040FF, 0xFF3030FF, 0xFF2020FF, 0xFF1010FF, 0xFF0000FF]); +c$.PARTIAL_CHARGE_RANGE_SIZE = JV.JC.argbsRwbScale.length; +c$.argbsRoygbScale = Clazz_newIntArray(-1, [0xFFFF0000, 0xFFFF2000, 0xFFFF4000, 0xFFFF6000, 0xFFFF8000, 0xFFFFA000, 0xFFFFC000, 0xFFFFE000, 0xFFFFF000, 0xFFFFFF00, 0xFFF0F000, 0xFFE0FF00, 0xFFC0FF00, 0xFFA0FF00, 0xFF80FF00, 0xFF60FF00, 0xFF40FF00, 0xFF20FF00, 0xFF00FF00, 0xFF00FF20, 0xFF00FF40, 0xFF00FF60, 0xFF00FF80, 0xFF00FFA0, 0xFF00FFC0, 0xFF00FFE0, 0xFF00FFFF, 0xFF00E0FF, 0xFF00C0FF, 0xFF00A0FF, 0xFF0080FF, 0xFF0060FF, 0xFF0040FF, 0xFF0020FF, 0xFF0000FF]); +c$.predefinedVariable = Clazz_newArray(-1, ["@_1H _H & !(_2H,_3H)", "@_12C _C & !(_13C,_14C)", "@_14N _N & !(_15N)", "@solvent water, (_g>=45 & _g<48)", "@ligand _g=0|!(_g<46,protein,nucleic,water)", "@turn structure=1", "@sheet structure=2", "@helix structure=3", "@helix310 substructure=7", "@helixalpha substructure=8", "@helixpi substructure=9", "@bulges within(dssr,'bulges')", "@coaxStacks within(dssr,'coaxStacks')", "@hairpins within(dssr,'hairpins')", "@hbonds within(dssr,'hbonds')", "@helices within(dssr,'helices')", "@iloops within(dssr,'iloops')", "@isoCanonPairs within(dssr,'isoCanonPairs')", "@junctions within(dssr,'junctions')", "@kissingLoops within(dssr,'kissingLoops')", "@multiplets within(dssr,'multiplets')", "@nonStack within(dssr,'nonStack')", "@nts within(dssr,'nts')", "@pairs within(dssr,'pairs')", "@ssSegments within(dssr,'ssSegments')", "@stacks within(dssr,'stacks')", "@stems within(dssr,'stems')"]); +c$.predefinedStatic = Clazz_newArray(-1, ["@amino _g>0 & _g<=23", "@acidic asp,glu", "@basic arg,his,lys", "@charged acidic,basic", "@negative acidic", "@positive basic", "@neutral amino&!(acidic,basic)", "@polar amino&!hydrophobic", "@peptide protein&within(chain,monomer>1)&!within(chain,monomer>12)", "@cyclic his,phe,pro,trp,tyr", "@acyclic amino&!cyclic", "@aliphatic ala,gly,ile,leu,val", "@aromatic his,phe,trp,tyr", "@cystine within(group,(cys,cyx)&atomname=sg&connected((cys,cyx)&atomname=sg))", "@buried ala,cys,ile,leu,met,phe,trp,val", "@surface amino&!buried", "@hydrophobic ala,gly,ile,leu,met,phe,pro,trp,tyr,val", "@mainchain backbone", "@small ala,gly,ser", "@medium asn,asp,cys,pro,thr,val", "@large arg,glu,gln,his,ile,leu,lys,met,phe,trp,tyr", "@c nucleic & ([C] or [DC] or within(group,_a=42))", "@g nucleic & ([G] or [DG] or within(group,_a=43))", "@cg c,g", "@a nucleic & ([A] or [DA] or within(group,_a=44))", "@t nucleic & ([T] or [DT] or within(group,_a=45 | _a=49))", "@at a,t", "@i nucleic & ([I] or [DI] or within(group,_a=46) & !g)", "@u nucleic & ([U] or [DU] or within(group,_a=47) & !t)", "@tu nucleic & within(group,_a=48)", "@ions _g>=46&_g<48", "@alpha _a=2", "@_bb protein&(_a>=1&_a<6|_a=64) | nucleic&(_a>=6&_a<14|_a>=73&&_a<=79||_a==99||_a=100)", "@backbone _bb | _H && connected(single, _bb)", "@spine protein&_a>=1&_a<4|nucleic&(_a>=6&_a<11|_a=13)", "@sidechain (protein,nucleic) & !backbone", "@base nucleic & !backbone", "@dynamic_flatring search('[a]')", "@nonmetal _H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn", "@metal !nonmetal && !_Xx", "@alkaliMetal _Li,_Na,_K,_Rb,_Cs,_Fr", "@alkalineEarth _Be,_Mg,_Ca,_Sr,_Ba,_Ra", "@nobleGas _He,_Ne,_Ar,_Kr,_Xe,_Rn", "@metalloid _B,_Si,_Ge,_As,_Sb,_Te", "@transitionMetal elemno>=21&elemno<=30|elemno=57|elemno=89|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112", "@lanthanide elemno>57&elemno<=71", "@actinide elemno>89&elemno<=103"]); +c$.shapeClassBases = Clazz_newArray(-1, ["Balls", "Sticks", "Hsticks", "Sssticks", "Struts", "Labels", "Measures", "Stars", "Halos", "Backbone", "Trace", "Cartoon", "Strands", "MeshRibbon", "Ribbons", "Rockets", "Dots", "Dipoles", "Vectors", "GeoSurface", "Ellipsoids", "Polyhedra", "Draw", "CGO", "Isosurface", "Contact", "LcaoCartoon", "MolecularOrbital", "NBO", "Pmesh", "Plot3D", "Echo", "Bbcage", "Uccage", "Axes", "Hover", "Frank"]); +{ +{ +}}c$.LABEL_DEFAULT_OFFSET = 8396800; +c$.echoNames = Clazz_newArray(-1, ["top", "bottom", "middle", "xy", "xyz"]); +c$.hAlignNames = Clazz_newArray(-1, ["", "left", "center", "right"]); +c$.READER_NOT_FOUND = "File reader was not found:"; +c$.globalBooleans = Clazz_newArray(-1, ["someModelsHaveFractionalCoordinates", "someModelsHaveSymmetry", "someModelsHaveUnitcells", "someModelsHaveCONECT", "isPDB", "someModelsHaveDomains", "someModelsHaveValidations", "isSupercell", "someModelsHaveAromaticBonds", "someModelsAreModulated"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.io.IOException"], "JV.JmolAsyncException", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.fileName = null; +Clazz_instantialize(this, arguments);}, JV, "JmolAsyncException", java.io.IOException); +Clazz_makeConstructor(c$, +function(cacheName){ +Clazz_superConstructor (this, JV.JmolAsyncException, []); +this.fileName = cacheName; +}, "~S"); +Clazz_defineMethod(c$, "getFileName", +function(){ +return this.fileName; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(null, "JV.ModelManager", ["JM.ModelLoader"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.modelSet = null; +this.modelSetPathName = null; +this.fileName = null; +Clazz_instantialize(this, arguments);}, JV, "ModelManager", null); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "zap", +function(){ +this.modelSetPathName = this.fileName = null; + new JM.ModelLoader(this.vwr, this.vwr.getZapName(), null, null, null, null); +}); +Clazz_defineMethod(c$, "createModelSet", +function(fullPathName, fileName, loadScript, atomSetCollection, bsNew, isAppend){ +var modelSetName = null; +if (isAppend) { +modelSetName = this.modelSet.modelSetName; +if (modelSetName.equals("zapped")) modelSetName = null; + else if (modelSetName.indexOf(" (modified)") < 0) modelSetName += " (modified)"; +} else if (atomSetCollection == null) { +this.zap(); +} else { +this.modelSetPathName = fullPathName; +this.fileName = fileName; +}if (atomSetCollection != null) { +if (modelSetName == null) { +modelSetName = this.vwr.getModelAdapter().getAtomSetCollectionName(atomSetCollection); +if (modelSetName != null) { +modelSetName = modelSetName.trim(); +if (modelSetName.length == 0) modelSetName = null; +}if (modelSetName == null) modelSetName = JV.ModelManager.reduceFilename(fileName); +} new JM.ModelLoader(this.vwr, modelSetName, loadScript, atomSetCollection, (isAppend ? this.modelSet : null), bsNew); +}if (this.modelSet.ac == 0 && !this.modelSet.getMSInfoB("isPyMOL")) this.zap(); +}, "~S,~S,JU.SB,~O,JU.BS,~B"); +c$.reduceFilename = Clazz_defineMethod(c$, "reduceFilename", +function(fileName){ +if (fileName == null) return null; +var ichDot = fileName.indexOf('.'); +if (ichDot > 0) fileName = fileName.substring(0, ichDot); +if (fileName.length > 24) fileName = fileName.substring(0, 20) + " ..."; +return fileName; +}, "~S"); +Clazz_defineMethod(c$, "createAtomDataSet", +function(atomSetCollection, tokType){ +return JM.ModelLoader.createAtomDataSet(this.vwr, this.modelSet, tokType, atomSetCollection, this.vwr.bsA()); +}, "~O,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = -1000; +this.y = -1000; +this.modifiers = 0; +this.time = -1; +this.name = null; +this.keybuf = 0; +Clazz_instantialize(this, arguments);}, JV, "MouseState", null); +Clazz_makeConstructor(c$, +function(name){ +this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "set", +function(time, x, y, modifiers){ +this.time = time; +this.x = x; +this.y = y; +this.modifiers = modifiers; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setCurrent", +function(current, clickCount){ +this.time = current.time; +if (clickCount < 2) { +this.x = current.x; +this.y = current.y; +}this.modifiers = current.modifiers; +}, "JV.MouseState,~N"); +Clazz_defineMethod(c$, "inRange", +function(xyRange, x, y){ +return (Math.abs(this.x - x) <= xyRange && Math.abs(this.y - y) <= xyRange); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "check", +function(xyRange, x, y, modifiers, time, delayMax){ +return (this.modifiers == modifiers && (delayMax >= 2147483647 ? this.inRange(xyRange, x, y) : time - this.time < delayMax && time - this.time > 20)); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "is", +function(current){ +return (current.x == this.x && current.y == this.y && current.time == this.time); +}, "JV.MouseState"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["JU.BS"], "JV.SelectionManager", ["JU.AU", "J.i18n.GT", "JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.listeners = null; +this.bsHidden = null; +this.bsSelection = null; +this.bsFixed = null; +this.bsSubset = null; +this.bsDeleted = null; +this.noneSelected = null; +this.empty = 1; +this.hideNotSelected = false; +this.bsTemp = null; +Clazz_instantialize(this, arguments);}, JV, "SelectionManager", null); +Clazz_prepareFields (c$, function(){ +this.listeners = new Array(0); +this.bsHidden = new JU.BS(); +this.bsSelection = new JU.BS(); +this.bsFixed = new JU.BS(); +this.bsTemp = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "processDeletedModelAtoms", +function(bsAtoms){ +JU.BSUtil.deleteBits(this.bsDeleted, bsAtoms); +JU.BSUtil.deleteBits(this.bsSubset, bsAtoms); +JU.BSUtil.deleteBits(this.bsFixed, bsAtoms); +JU.BSUtil.deleteBits(this.bsHidden, bsAtoms); +var bs = JU.BSUtil.copy(this.bsSelection); +JU.BSUtil.deleteBits(bs, bsAtoms); +this.setSelectionSet(bs, 0); +this.selectionChanged(false); +}, "JU.BS"); +Clazz_defineMethod(c$, "clear", +function(){ +this.clearSelection(true); +this.setSelectionSubset(null); +this.hide(null, null, 0, true); +this.bsDeleted = null; +this.setMotionFixedAtoms(null); +}); +Clazz_defineMethod(c$, "display", +function(modelSet, bs, addRemove, isQuiet){ +switch (addRemove) { +default: +var bsNotSubset = (this.bsSubset == null ? null : JU.BSUtil.andNot(JU.BSUtil.copy(this.bsHidden), this.bsSubset)); +var bsAll = modelSet.getModelAtomBitSetIncludingDeleted(-1, false); +this.bsHidden.or(bsAll); +if (bsNotSubset != null) { +this.bsHidden.and(this.bsSubset); +this.bsHidden.or(bsNotSubset); +}case 1275069441: +if (bs != null) this.bsHidden.andNot(bs); +break; +case 1073742119: +if (bs != null) this.bsHidden.or(bs); +break; +} +JU.BSUtil.andNot(this.bsHidden, this.bsDeleted); +modelSet.setBsHidden(this.bsHidden); +if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms hidden"), this.bsHidden.cardinality())); +}, "JM.ModelSet,JU.BS,~N,~B"); +Clazz_defineMethod(c$, "hide", +function(modelSet, bs, addRemove, isQuiet){ +var bsNotSubset = (addRemove == 0 || this.bsSubset == null ? null : JU.BSUtil.andNot(JU.BSUtil.copy(this.bsHidden), this.bsSubset)); +JV.SelectionManager.setBitSet(this.bsHidden, bs, addRemove); +if (bsNotSubset != null) this.bsHidden.or(bsNotSubset); +if (modelSet != null) modelSet.setBsHidden(this.bsHidden); +if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms hidden"), this.bsHidden.cardinality())); +}, "JM.ModelSet,JU.BS,~N,~B"); +Clazz_defineMethod(c$, "setSelectionSet", +function(set, addRemove){ +JV.SelectionManager.setBitSet(this.bsSelection, set, addRemove); +this.empty = -1; +}, "JU.BS,~N"); +c$.setBitSet = Clazz_defineMethod(c$, "setBitSet", +function(bsWhat, bs, addRemove){ +switch (addRemove) { +default: +bsWhat.clearAll(); +case 1275069441: +if (bs != null) bsWhat.or(bs); +break; +case 1073742119: +if (bs != null) bsWhat.andNot(bs); +break; +} +}, "JU.BS,JU.BS,~N"); +Clazz_defineMethod(c$, "getHiddenSet", +function(){ +return this.bsHidden; +}); +Clazz_defineMethod(c$, "getHideNotSelected", +function(){ +return this.hideNotSelected; +}); +Clazz_defineMethod(c$, "setHideNotSelected", +function(TF){ +this.hideNotSelected = TF; +if (TF) this.selectionChanged(false); +}, "~B"); +Clazz_defineMethod(c$, "isSelected", +function(atomIndex){ +return (atomIndex >= 0 && this.bsSelection.get(atomIndex)); +}, "~N"); +Clazz_defineMethod(c$, "select", +function(bs, addRemove, isQuiet){ +if (bs == null) { +this.selectAll(true); +if (!this.vwr.getBoolean(1612709900)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709900, null)); +if (!this.vwr.getBoolean(1612709894)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709894, null)); +} else { +this.setSelectionSet(bs, addRemove); +if (!this.vwr.getBoolean(1612709900)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709900, null)); +if (!this.vwr.getBoolean(1612709894)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709894, null)); +}this.selectionChanged(false); +var reportChime = this.vwr.getBoolean(603979879); +if (!reportChime && isQuiet) return; +var n = this.getSelectionCount(); +if (reportChime) this.vwr.getChimeMessenger().reportSelection(n); + else if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms selected"), n)); +}, "JU.BS,~N,~B"); +Clazz_defineMethod(c$, "selectAll", +function(isQuiet){ +var count = this.vwr.ms.ac; +this.empty = (count == 0) ? 1 : 0; +for (var i = count; --i >= 0; ) this.bsSelection.set(i); + +JU.BSUtil.andNot(this.bsSelection, this.bsDeleted); +this.selectionChanged(isQuiet); +}, "~B"); +Clazz_defineMethod(c$, "clearSelection", +function(isQuiet){ +this.setHideNotSelected(false); +this.bsSelection.clearAll(); +this.empty = 1; +this.selectionChanged(isQuiet); +}, "~B"); +Clazz_defineMethod(c$, "isAtomSelected", +function(atomIndex){ +return ((this.bsSubset == null || this.bsSubset.get(atomIndex)) && this.bsDeleted == null || !this.bsDeleted.get(atomIndex)) && this.bsSelection.get(atomIndex); +}, "~N"); +Clazz_defineMethod(c$, "setSelectedAtom", +function(atomIndex, TF){ +if (atomIndex < 0) { +this.selectionChanged(true); +return; +}if (this.bsSubset != null && !this.bsSubset.get(atomIndex) || this.bsDeleted != null && this.bsDeleted.get(atomIndex)) return; +this.bsSelection.setBitTo(atomIndex, TF); +if (TF) this.empty = 0; + else this.empty = -1; +}, "~N,~B"); +Clazz_defineMethod(c$, "setSelectionSubset", +function(bs){ +this.bsSubset = bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "isInSelectionSubset", +function(atomIndex){ +return (atomIndex < 0 || this.bsSubset == null || this.bsSubset.get(atomIndex)); +}, "~N"); +Clazz_defineMethod(c$, "invertSelection", +function(){ +JU.BSUtil.invertInPlace(this.bsSelection, this.vwr.ms.ac); +this.empty = (this.bsSelection.length() > 0 ? 0 : 1); +this.selectionChanged(false); +}); +Clazz_defineMethod(c$, "excludeSelectionSet", +function(setExclude){ +if (setExclude == null || this.empty == 1) return; +this.bsSelection.andNot(setExclude); +this.empty = -1; +}, "JU.BS"); +Clazz_defineMethod(c$, "getSelectionCount", +function(){ +if (this.empty == 1) return 0; +this.empty = 1; +var bs; +if (this.bsSubset == null) { +bs = this.bsSelection; +} else { +this.bsTemp.clearAll(); +this.bsTemp.or(this.bsSubset); +this.bsTemp.and(this.bsSelection); +bs = this.bsTemp; +}var count = bs.cardinality(); +if (count > 0) this.empty = 0; +return count; +}); +Clazz_defineMethod(c$, "addListener", +function(listener){ +for (var i = this.listeners.length; --i >= 0; ) if (this.listeners[i] === listener) { +this.listeners[i] = null; +break; +} +var len = this.listeners.length; +for (var i = len; --i >= 0; ) if (this.listeners[i] == null) { +this.listeners[i] = listener; +return; +} +if (this.listeners.length == 0) this.listeners = new Array(1); + else this.listeners = JU.AU.doubleLength(this.listeners); +this.listeners[len] = listener; +}, "J.api.JmolSelectionListener"); +Clazz_defineMethod(c$, "selectionChanged", +function(isQuiet){ +if (this.hideNotSelected) this.hide(this.vwr.ms, JU.BSUtil.copyInvert(this.bsSelection, this.vwr.ms.ac), 0, isQuiet); +if (isQuiet || this.listeners.length == 0) return; +for (var i = this.listeners.length; --i >= 0; ) if (this.listeners[i] != null) this.listeners[i].selectionChanged(this.bsSelection); + +}, "~B"); +Clazz_defineMethod(c$, "deleteAtoms", +function(bs){ +var bsNew = JU.BSUtil.copy(bs); +if (this.bsDeleted == null) { +this.bsDeleted = bsNew; +} else { +bsNew.andNot(this.bsDeleted); +this.bsDeleted.or(bs); +}this.bsHidden.andNot(this.bsDeleted); +this.bsSelection.andNot(this.bsDeleted); +return bsNew.cardinality(); +}, "JU.BS"); +Clazz_defineMethod(c$, "getSelectedAtoms", +function(){ +if (this.bsSubset == null) return this.bsSelection; +var bs = JU.BSUtil.copy(this.bsSelection); +bs.and(this.bsSubset); +return bs; +}); +Clazz_defineMethod(c$, "getSelectedAtomsNoSubset", +function(){ +return JU.BSUtil.copy(this.bsSelection); +}); +Clazz_defineMethod(c$, "excludeAtoms", +function(bs, ignoreSubset){ +if (this.bsDeleted != null) bs.andNot(this.bsDeleted); +if (!ignoreSubset && this.bsSubset != null) (bs = JU.BSUtil.copy(bs)).and(this.bsSubset); +return bs; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setMotionFixedAtoms", +function(bs){ +this.bsFixed.clearAll(); +if (bs != null) this.bsFixed.or(bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "getMotionFixedAtoms", +function(){ +return this.bsFixed; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(null, "JV.ShapeManager", ["JU.BS", "$.P3", "J.api.Interface", "J.c.PAL", "$.VDW", "JM.Atom", "JU.BSUtil", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ms = null; +this.shapes = null; +this.vwr = null; +this.scaleText = null; +this.bsRenderableAtoms = null; +this.bsSlabbedInternal = null; +this.navMinMax = null; +Clazz_instantialize(this, arguments);}, JV, "ShapeManager", null); +Clazz_prepareFields (c$, function(){ +this.navMinMax = Clazz_newIntArray (4, 0); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +this.bsRenderableAtoms = new JU.BS(); +this.bsSlabbedInternal = new JU.BS(); +}, "JV.Viewer"); +Clazz_defineMethod(c$, "findNearestShapeAtomIndex", +function(x, y, closest, bsNot){ +if (this.shapes != null) for (var i = 0; i < this.shapes.length && closest[0] == null; ++i) if (this.shapes[i] != null) this.shapes[i].findNearestAtomIndex(x, y, closest, bsNot); + +}, "~N,~N,~A,JU.BS"); +Clazz_defineMethod(c$, "getShapePropertyIndex", +function(shapeID, propertyName, index){ +if (this.shapes == null || this.shapes[shapeID] == null) return null; +this.vwr.setShapeErrorState(shapeID, "get " + propertyName); +var result = this.shapes[shapeID].getProperty(propertyName, index); +this.vwr.setShapeErrorState(-1, null); +return result; +}, "~N,~S,~N"); +Clazz_defineMethod(c$, "getShapePropertyData", +function(shapeID, propertyName, data){ +if (this.shapes == null || this.shapes[shapeID] == null) return false; +this.vwr.setShapeErrorState(shapeID, "get " + propertyName); +var result = this.shapes[shapeID].getPropertyData(propertyName, data); +this.vwr.setShapeErrorState(-1, null); +return result; +}, "~N,~S,~A"); +Clazz_defineMethod(c$, "getShapeIdFromObjectName", +function(objectName){ +if (this.shapes != null) for (var i = 16; i < 30; ++i) if (this.shapes[i] != null && this.shapes[i].getIndexFromName(objectName) >= 0) return i; + +if (this.shapes[6] != null && this.shapes[6].getIndexFromName(objectName) >= 0) { +return 6; +}return -1; +}, "~S"); +Clazz_defineMethod(c$, "loadDefaultShapes", +function(newModelSet){ +this.ms = newModelSet; +if (this.shapes != null) for (var i = 0; i < this.shapes.length; ++i) if (this.shapes[i] != null) this.shapes[i].setModelSet(newModelSet); + +this.loadShape(0); +this.loadShape(1); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "loadShape", +function(shapeID){ +if (this.shapes == null) return null; +if (this.shapes[shapeID] != null) return this.shapes[shapeID]; +if (shapeID == 2 || shapeID == 3 || shapeID == 4) return null; +var className = JV.JC.getShapeClassName(shapeID, false); +var shape; +if ((shape = J.api.Interface.getInterface(className, this.vwr, "shape")) == null) return null; +this.vwr.setShapeErrorState(shapeID, "allocate"); +shape.initializeShape(this.vwr, this.ms, shapeID); +this.vwr.setShapeErrorState(-1, null); +return this.shapes[shapeID] = shape; +}, "~N"); +Clazz_defineMethod(c$, "notifyAtomPositionsChanged", +function(baseModel, bs, mat){ +var Imodel = Integer.$valueOf(baseModel); +var bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(baseModel); +for (var i = 0; i < 37; i++) if (this.shapes[i] != null) this.setShapePropertyBs(i, "refreshTrajectories", Clazz_newArray(-1, [Imodel, bs, mat]), bsModelAtoms); + +}, "~N,JU.BS,JU.M4"); +Clazz_defineMethod(c$, "releaseShape", +function(shapeID){ +if (this.shapes != null) this.shapes[shapeID] = null; +}, "~N"); +Clazz_defineMethod(c$, "setScale", +function(){ +if (this.scaleText != null) { +this.loadShape(31); +this.setShapePropertyBs(31, "%SCALE", this.scaleText, null); +this.scaleText = null; +}}); +Clazz_defineMethod(c$, "resetShapes", +function(cacheScale){ +if (cacheScale) { +var data = new Array(1); +this.getShapePropertyData(31, "%SCALE", data); +this.scaleText = data[0]; +}this.shapes = new Array(37); +}, "~B"); +Clazz_defineMethod(c$, "setShapeProperties", +function(shapeID, values){ +this.vwr.setShapeErrorState(shapeID, "set properties"); +this.loadShape(shapeID).setProperties(values); +this.vwr.setShapeErrorState(-1, null); +}, "~N,~A"); +Clazz_defineMethod(c$, "setShapeSizeBs", +function(shapeID, size, rd, bsSelected){ +if (this.shapes == null) return; +if (bsSelected == null && (shapeID != 1 || size != 2147483647)) bsSelected = this.vwr.bsA(); +if (rd != null && rd.value != 0 && rd.vdwType === J.c.VDW.TEMP) this.ms.getBfactor100Lo(); +this.vwr.setShapeErrorState(shapeID, "set size"); +if (rd == null ? size != 0 : rd.value != 0) this.loadShape(shapeID); +if (this.shapes[shapeID] != null) { +this.shapes[shapeID].setShapeSizeRD(size, rd, bsSelected); +}this.vwr.setShapeErrorState(-1, null); +}, "~N,~N,J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "setLabel", +function(strLabel, bsSelection){ +if (strLabel == null) { +if (this.shapes[5] == null) return; +} else { +this.loadShape(5); +this.setShapeSizeBs(5, 0, null, bsSelection); +}this.setShapePropertyBs(5, "label", strLabel, bsSelection); +}, "~O,JU.BS"); +Clazz_defineMethod(c$, "setShapePropertyBs", +function(shapeID, propertyName, value, bsSelected){ +if (this.shapes == null || this.shapes[shapeID] == null) return; +if (bsSelected == null) bsSelected = this.vwr.bsA(); +this.vwr.setShapeErrorState(shapeID, "set " + propertyName); +this.shapes[shapeID].setProperty(propertyName.intern(), value, bsSelected); +this.vwr.setShapeErrorState(-1, null); +}, "~N,~S,~O,JU.BS"); +Clazz_defineMethod(c$, "checkFrankclicked", +function(x, y){ +var frankShape = this.shapes[36]; +return (frankShape != null && frankShape.wasClicked(x, y)); +}, "~N,~N"); +Clazz_defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +var shape; +var map = null; +if (this.vwr.getPickingMode() == 2) { +return (this.shapes[5] == null ? null : this.shapes[5].checkObjectClicked(x, y, modifiers, bsVisible, false)); +}if (modifiers != 0 && this.vwr.getBondsPickable() && (map = this.shapes[1].checkObjectClicked(x, y, modifiers, bsVisible, false)) != null) return map; +for (var i = 0; i < JV.ShapeManager.clickableMax; i++) if ((shape = this.shapes[JV.ShapeManager.hoverable[i]]) != null && (map = shape.checkObjectClicked(x, y, modifiers, bsVisible, drawPicking)) != null) return map; + +return null; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, modifiers, bsVisible, iShape){ +var found = false; +var n = (iShape > 0 ? iShape + 1 : 37); +for (var i = iShape; !found && i < n; ++i) if (this.shapes[i] != null) found = this.shapes[i].checkObjectDragged(prevX, prevY, x, y, modifiers, bsVisible); + +return found; +}, "~N,~N,~N,~N,~N,JU.BS,~N"); +Clazz_defineMethod(c$, "checkObjectHovered", +function(x, y, bsVisible, checkBonds){ +var shape = this.shapes[1]; +if (checkBonds && shape != null && shape.checkObjectHovered(x, y, bsVisible)) return true; +for (var i = 0; i < JV.ShapeManager.hoverable.length; i++) { +shape = this.shapes[JV.ShapeManager.hoverable[i]]; +if (shape != null && shape.checkObjectHovered(x, y, bsVisible)) return true; +} +return false; +}, "~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "deleteShapeAtoms", +function(value, bs){ +if (this.shapes != null) for (var j = 0; j < 37; j++) if (this.shapes[j] != null) this.setShapePropertyBs(j, "deleteModelAtoms", value, bs); + +}, "~A,JU.BS"); +Clazz_defineMethod(c$, "deleteVdwDependentShapes", +function(bs){ +if (bs == null) bs = this.vwr.bsA(); +this.setShapeAtomsSafely(24, "deleteVdw", bs); +this.setShapeAtomsSafely(25, "deleteVdw", bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "setShapeAtomsSafely", +function(i, key, bs){ +if (this.shapes[i] != null) this.shapes[i].setProperty(key, null, bs); +}, "~N,~S,JU.BS"); +Clazz_defineMethod(c$, "notifyAtoms", +function(prop, atomsAndModels){ +switch (prop) { +case "atomsDeleted": +this.setShapeAtomsSafely(6, prop, atomsAndModels[0]); +this.vwr.setModelkitPropertySafely("updatemodelkeys", atomsAndModels); +break; +case "atomsMoved": +if (this.getShape(22) != null) this.vwr.setModelkitPropertySafely(prop, atomsAndModels[0]); +break; +} +}, "~S,~A"); +Clazz_defineMethod(c$, "getAtomShapeValue", +function(tok, group, atomIndex){ +var iShape = JV.JC.shapeTokenIndex(tok); +if (iShape < 0 || this.shapes[iShape] == null) return 0; +var mad = this.shapes[iShape].getSize(atomIndex); +if (mad == 0) { +if ((group.shapeVisibilityFlags & this.shapes[iShape].vf) == 0) return 0; +mad = this.shapes[iShape].getSizeG(group); +}return mad / 2000; +}, "~N,JM.Group,~N"); +Clazz_defineMethod(c$, "replaceGroup", +function(g0, g1){ +if (this.shapes == null) return; +for (var i = 9; i < 16; i++) if (this.shapes[i] != null) this.shapes[i].replaceGroup(g0, g1); + +}, "JM.Group,JM.Group"); +Clazz_defineMethod(c$, "getObjectMap", +function(map, withDollar){ +if (this.shapes == null) return; +var bDollar = Boolean.$valueOf(withDollar); +for (var i = 16; i < 30; ++i) this.getShapePropertyData(i, "getNames", Clazz_newArray(-1, [map, bDollar])); + +}, "java.util.Map,~B"); +Clazz_defineMethod(c$, "getProperty", +function(paramInfo){ +if (paramInfo.equals("getShapes")) return this.shapes; +return null; +}, "~O"); +Clazz_defineMethod(c$, "getShape", +function(i){ +return (this.shapes == null ? null : this.shapes[i]); +}, "~N"); +Clazz_defineMethod(c$, "resetBioshapes", +function(bsAllAtoms){ +if (this.shapes == null) return; +for (var i = 0; i < this.shapes.length; ++i) if (this.shapes[i] != null && this.shapes[i].isBioShape) { +this.shapes[i].setModelSet(this.ms); +this.shapes[i].setShapeSizeRD(0, null, bsAllAtoms); +this.shapes[i].setProperty("color", J.c.PAL.NONE, bsAllAtoms); +} +}, "JU.BS"); +Clazz_defineMethod(c$, "setAtomLabel", +function(strLabel, i){ +if (this.shapes != null) this.shapes[5].setProperty("label:" + strLabel, Integer.$valueOf(i), null); +}, "~S,~N"); +Clazz_defineMethod(c$, "setModelVisibility", +function(){ +var shapes = this.shapes; +if (shapes == null || shapes[0] == null) return; +var bs = this.vwr.getVisibleFramesBitSet(); +for (var i = 8; i < 33; i++) if (shapes[i] != null) shapes[i].setModelVisibilityFlags(bs); + +var showHydrogens = this.vwr.getBoolean(603979922); +var bsDeleted = this.vwr.slm.bsDeleted; +var atoms = this.ms.at; +this.ms.clearVisibleSets(); +if (atoms.length > 0) { +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (atom != null) atom.shapeVisibilityFlags &= -64; +if (bsDeleted != null && bsDeleted.get(i)) continue; +if (bs.get(atom.mi)) { +var f = 1; +if (!this.ms.isAtomHidden(i) && (showHydrogens || atom.getElementNumber() != 1)) { +f |= 8; +if (atom.madAtom != 0) f |= 16; +atom.setShapeVisibility(f, true); +}}} +}this.setShapeVis(); +}); +Clazz_defineMethod(c$, "setShapeVis", +function(){ +for (var i = 0; i < 37; ++i) { +var shape = this.shapes[i]; +if (shape != null) shape.setAtomClickability(); +} +}); +Clazz_defineMethod(c$, "finalizeAtoms", +function(bsTranslateSelected, finalizeParams){ +var vwr = this.vwr; +var tm = vwr.tm; +if (finalizeParams) vwr.finalizeTransformParameters(); +if (bsTranslateSelected != null) { +var ptCenter = this.ms.getAtomSetCenter(bsTranslateSelected); +var pt = new JU.P3(); +tm.transformPt3f(ptCenter, pt); +pt.add(tm.ptOffset); +tm.unTransformPoint(pt, pt); +pt.sub(ptCenter); +vwr.setAtomCoordsRelative(pt, bsTranslateSelected); +tm.ptOffset.set(0, 0, 0); +tm.bsSelectedAtoms = null; +}var bsOK = this.bsRenderableAtoms; +this.ms.getAtomsInFrame(bsOK); +var vibrationVectors = this.ms.vibrations; +var vibsOn = (vibrationVectors != null && tm.vibrationOn); +var checkOccupancy = (this.ms.bsModulated != null && this.ms.occupancies != null); +var atoms = this.ms.at; +var occ; +var haveMods = false; +var bsSlabbed = this.bsSlabbedInternal; +bsSlabbed.clearAll(); +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +var screen = (vibsOn && atom.hasVibration() ? tm.transformPtVib(atom, vibrationVectors[i]) : tm.transformPt(atom)); +if (screen.z == 1 && tm.internalSlab && tm.xyzIsSlabbedInternal(atom)) { +bsSlabbed.set(i); +}atom.sX = screen.x; +atom.sY = screen.y; +atom.sZ = screen.z; +var d = Math.abs(atom.madAtom); +if (d == JM.Atom.MAD_GLOBAL) d = Clazz_floatToInt(vwr.getFloat(1153433601) * 2000); +atom.sD = Clazz_floatToShort(vwr.tm.scaleToScreen(screen.z, d)); +if (checkOccupancy && vibrationVectors[i] != null && (occ = vibrationVectors[i].getOccupancy100(vibsOn)) != -2147483648) { +haveMods = true; +atom.setShapeVisibility(2, false); +if (occ >= 0 && occ < 50) atom.setShapeVisibility(24, false); + else atom.setShapeVisibility(8 | (atom.madAtom > 0 ? 16 : 0), true); +this.ms.occupancies[atom.i] = Math.abs(occ); +}} +if (haveMods) this.setShapeVis(); +var gdata = vwr.gdata; +if (tm.slabEnabled) { +var slabByMolecule = vwr.getBoolean(603979940); +var slabByAtom = vwr.getBoolean(603979939); +var minZ = gdata.slab; +var maxZ = gdata.depth; +if (slabByMolecule) { +var molecules = this.ms.getMolecules(); +var moleculeCount = this.ms.getMoleculeCountInModel(-1); +for (var i = 0; i < moleculeCount; i++) { +var m = molecules[i]; +var j = 0; +var pt = m.firstAtomIndex; +if (!bsOK.get(pt)) continue; +for (; j < m.ac; j++, pt++) if (gdata.isClippedZ(atoms[pt].sZ - (atoms[pt].sD >> 1))) break; + +if (j != m.ac) { +pt = m.firstAtomIndex; +for (var k = 0; k < m.ac; k++) { +bsOK.clear(pt); +atoms[pt++].sZ = 0; +} +}} +}for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (gdata.isClippedZ(atom.sZ - (slabByAtom ? atoms[i].sD >> 1 : 0))) { +atom.setClickable(0); +var r = Clazz_doubleToInt((slabByAtom ? -1 : 1) * atom.sD / 2); +if (atom.sZ + r < minZ || atom.sZ - r > maxZ || !gdata.isInDisplayRange(atom.sX, atom.sY)) { +bsOK.clear(i); +}}} +}if (this.ms.ac == 0 || !vwr.getShowNavigationPoint()) return null; +var minX = 2147483647; +var maxX = -2147483648; +var minY = 2147483647; +var maxY = -2147483648; +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (atom.sX < minX) minX = atom.sX; +if (atom.sX > maxX) maxX = atom.sX; +if (atom.sY < minY) minY = atom.sY; +if (atom.sY > maxY) maxY = atom.sY; +} +this.navMinMax[0] = minX; +this.navMinMax[1] = maxX; +this.navMinMax[2] = minY; +this.navMinMax[3] = maxY; +return this.navMinMax; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = modelSet; +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "checkInheritedShapes", +function(){ +if (this.shapes[24] == null) return; +this.setShapePropertyBs(24, "remapInherited", null, null); +}); +Clazz_defineMethod(c$, "restrictSelected", +function(isBond, doInvert){ +var bsSelected = this.vwr.slm.getSelectedAtomsNoSubset(); +if (doInvert) { +this.vwr.slm.invertSelection(); +var bsSubset = this.vwr.slm.bsSubset; +if (bsSubset != null) { +bsSelected = this.vwr.slm.getSelectedAtomsNoSubset(); +bsSelected.and(bsSubset); +this.vwr.selectStatus(bsSelected, false, 0, true, false); +JU.BSUtil.invertInPlace(bsSelected, this.vwr.ms.ac); +bsSelected.and(bsSubset); +}}JU.BSUtil.andNot(bsSelected, this.vwr.slm.bsDeleted); +var bondmode = this.vwr.getBoolean(603979812); +if (!isBond) this.vwr.setBooleanProperty("bondModeOr", true); +this.setShapeSizeBs(1, 0, null, null); +this.setShapePropertyBs(1, "type", Integer.$valueOf(32768), null); +this.setShapeSizeBs(1, 0, null, null); +this.setShapePropertyBs(1, "type", Integer.$valueOf(1023), null); +var bs = this.vwr.bsA(); +for (var iShape = 21; --iShape >= 0; ) if (iShape != 6 && this.getShape(iShape) != null) this.setShapeSizeBs(iShape, 0, null, bs); + +if (this.getShape(21) != null) this.setShapePropertyBs(21, "off", bs, null); +this.setLabel(null, bs); +if (!isBond) this.vwr.setBooleanProperty("bondModeOr", bondmode); +this.vwr.selectStatus(bsSelected, false, 0, true, false); +}, "~B,~B"); +c$.hoverable = Clazz_newIntArray(-1, [31, 20, 25, 24, 22, 36]); +c$.clickableMax = JV.ShapeManager.hoverable.length - 1; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.util.Hashtable"], ["JV.Connection", "$.Scene", "$.StateManager", "$.Connections"], ["java.util.Arrays", "JU.BS", "$.Lst", "$.SB", "JM.Orientation", "JU.BSUtil", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.maxUndo = 20; +this.vwr = null; +this.saved = null; +this.lastOrientation = ""; +this.lastContext = ""; +this.lastConnections = ""; +this.lastScene = ""; +this.lastSelected = ""; +this.lastState = ""; +this.lastShape = ""; +this.lastCoordinates = ""; +this.lastUnitcell = ""; +this.undoStateStack = null; +this.redoStateStack = null; +Clazz_instantialize(this, arguments);}, JV, "StateManager", null); +Clazz_prepareFields (c$, function(){ +this.saved = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +c$.getVariableList = Clazz_defineMethod(c$, "getVariableList", +function(htVariables, nMax, withSites, definedOnly){ +var sb = new JU.SB(); +var n = 0; +var list = new Array(htVariables.size()); +for (var entry, $entry = htVariables.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var $var = entry.getValue(); +if ((withSites || !key.startsWith("site_")) && (!definedOnly || key.charAt(0) == '@')) list[n++] = key + (key.charAt(0) == '@' ? " " + $var.asString() : " = " + JV.StateManager.varClip(key, $var.escape(), nMax)); +} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) sb.append(" ").append(list[i]).append(";\n"); + +if (n == 0 && !definedOnly) sb.append("# --no global user variables defined--;\n"); +return sb.toString(); +}, "java.util.Map,~N,~B,~B"); +c$.getObjectIdFromName = Clazz_defineMethod(c$, "getObjectIdFromName", +function(name){ +if (name == null) return -1; +var objID = "background axis1 axis2 axis3 boundbox unitcell frank ".indexOf(name.toLowerCase()); +return (objID < 0 ? objID : Clazz_doubleToInt(objID / 11)); +}, "~S"); +c$.getObjectNameFromId = Clazz_defineMethod(c$, "getObjectNameFromId", +function(objId){ +if (objId < 0 || objId >= 7) return null; +return "background axis1 axis2 axis3 boundbox unitcell frank ".substring(objId * 11, objId * 11 + 11).trim(); +}, "~N"); +Clazz_defineMethod(c$, "clear", +function(global){ +this.vwr.setShowAxes(false); +this.vwr.setShowBbcage(false); +this.vwr.setShowUnitCell(false); +global.clear(); +}, "JV.GlobalSettings"); +Clazz_defineMethod(c$, "resetLighting", +function(){ +this.vwr.setIntProperty("ambientPercent", 45); +this.vwr.setIntProperty("celShadingPower", 10); +this.vwr.setIntProperty("diffusePercent", 84); +this.vwr.setIntProperty("phongExponent", 64); +this.vwr.setIntProperty("specularExponent", 6); +this.vwr.setIntProperty("specularPercent", 22); +this.vwr.setIntProperty("specularPower", 40); +this.vwr.setIntProperty("zDepth", 0); +this.vwr.setIntProperty("zShadePower", 3); +this.vwr.setIntProperty("zSlab", 50); +this.vwr.setBooleanProperty("specular", true); +this.vwr.setBooleanProperty("celShading", false); +this.vwr.setBooleanProperty("zshade", false); +}); +Clazz_defineMethod(c$, "setCrystallographicDefaults", +function(){ +this.vwr.setAxesMode(603979808); +this.vwr.setShowAxes(true); +this.vwr.setShowUnitCell(true); +this.vwr.setBooleanProperty("perspectiveDepth", false); +}); +Clazz_defineMethod(c$, "setCommonDefaults", +function(){ +this.vwr.setBooleanProperty("perspectiveDepth", true); +this.vwr.setFloatProperty("bondTolerance", 0.45); +this.vwr.setFloatProperty("minBondDistance", 0.4); +this.vwr.setIntProperty("bondingVersion", 0); +this.vwr.setBooleanProperty("translucent", true); +}); +Clazz_defineMethod(c$, "setJmolDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("defaultColorScheme", "Jmol"); +this.vwr.setBooleanProperty("axesOrientationRasmol", false); +this.vwr.setBooleanProperty("zeroBasedXyzRasmol", false); +this.vwr.setIntProperty("percentVdwAtom", 23); +this.vwr.setIntProperty("bondRadiusMilliAngstroms", 150); +this.vwr.setVdwStr("auto"); +}); +Clazz_defineMethod(c$, "setRasMolDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("defaultColorScheme", "RasMol"); +this.vwr.setBooleanProperty("axesOrientationRasmol", true); +this.vwr.setBooleanProperty("zeroBasedXyzRasmol", true); +this.vwr.setIntProperty("percentVdwAtom", 0); +this.vwr.setIntProperty("bondRadiusMilliAngstroms", 1); +this.vwr.setVdwStr("Rasmol"); +}); +Clazz_defineMethod(c$, "setPyMOLDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("measurementUnits", "ANGSTROMS"); +this.vwr.setBooleanProperty("zoomHeight", true); +}); +c$.getNoCase = Clazz_defineMethod(c$, "getNoCase", +function(saved, name){ +for (var e, $e = saved.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getKey().equalsIgnoreCase(name)) return e.getValue(); + +return null; +}, "java.util.Map,~S"); +Clazz_defineMethod(c$, "listSavedStates", +function(){ +var names = ""; +for (var name, $name = this.saved.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) names += "\n" + name; + +return names; +}); +Clazz_defineMethod(c$, "deleteSavedType", +function(type){ +var e = this.saved.keySet().iterator(); +while (e.hasNext()) if (e.next().startsWith(type)) e.remove(); + +}, "~S"); +Clazz_defineMethod(c$, "deleteSaved", +function(namelike){ +var e = this.saved.keySet().iterator(); +while (e.hasNext()) { +var name = e.next(); +if (name.startsWith(namelike) || name.endsWith("_" + namelike) && name.indexOf("_") == name.lastIndexOf("_" + namelike)) e.remove(); +} +}, "~S"); +Clazz_defineMethod(c$, "saveSelection", +function(saveName, bsSelected){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Selected_"); +return; +}saveName = this.lastSelected = "Selected_" + saveName; +this.saved.put(saveName, JU.BSUtil.copy(bsSelected)); +}, "~S,JU.BS"); +Clazz_defineMethod(c$, "restoreSelection", +function(saveName){ +var name = (saveName.length > 0 ? "Selected_" + saveName : this.lastSelected); +var bsSelected = JV.StateManager.getNoCase(this.saved, name); +if (bsSelected == null) { +this.vwr.selectStatus( new JU.BS(), false, 0, false, false); +return false; +}this.vwr.selectStatus(bsSelected, false, 0, false, false); +return true; +}, "~S"); +Clazz_defineMethod(c$, "saveUnitCell", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Unitcell_"); +return; +}saveName = this.lastUnitcell = "Unitcell_" + saveName; +var uc = this.vwr.getCurrentUnitCell(); +if (uc != null) { +var state = "UNITCELL " + JU.Escape.e(uc.getUnitCellVectors()); +this.saved.put(saveName, "unitcell reset;" + state); +}}, "~S"); +Clazz_defineMethod(c$, "getSavedUnitCell", +function(saveName){ +var name = (saveName.length > 0 ? "Unitcell_" + saveName : this.lastUnitcell); +var ucstate = JV.StateManager.getNoCase(this.saved, name); +return ucstate; +}, "~S"); +Clazz_defineMethod(c$, "restoreUnitCell", +function(saveName){ +var ucstate = this.getSavedUnitCell(saveName); +if (ucstate == null) { +this.vwr.ms.setModelCagePts(-1, null, null); +return false; +}this.vwr.runScript(ucstate); +return true; +}, "~S"); +Clazz_defineMethod(c$, "saveState", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("State_"); +this.clearStateStack(); +return; +}if (saveName.length == 0) { +this.vwr.setBooleanProperty("undoAuto", false); +this.appendState(this.getStack(603984065)); +this.redoStateStack.clear(); +return; +}saveName = this.lastState = "State_" + saveName; +this.saved.put(saveName, this.vwr.getStateInfo()); +}, "~S"); +Clazz_defineMethod(c$, "getSavedState", +function(saveName){ +if (saveName.length == 0) { +var stack = this.getStack(603984065); +return (stack.size() > 0 ? stack.get(stack.size() - 1) : null); +}var name = (saveName.length > 0 ? "State_" + saveName : this.lastState); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz_defineMethod(c$, "popStack", +function(type){ +var stack = this.getStack(type); +var state = (stack.size() > 0 ? stack.removeItemAt(stack.size() - 1) : null); +if (state != null) { +this.appendState(this.getStack(type == 603984065 ? 4139 : 603984065)); +}this.checkStack(this.getStack(603984065)); +return state; +}, "~N"); +Clazz_defineMethod(c$, "appendState", +function(stack){ +this.checkStack(stack); +if (this.maxUndo > 0) stack.addLast(this.vwr.getStateInfo()); +}, "JU.Lst"); +Clazz_defineMethod(c$, "checkStack", +function(stack){ +while (stack.size() > this.maxUndo) stack.removeItemAt(0); + +}, "JU.Lst"); +Clazz_defineMethod(c$, "getStack", +function(type){ +if (this.undoStateStack == null) { +this.undoStateStack = new JU.Lst(); +this.redoStateStack = new JU.Lst(); +}return (type == 603984065 ? this.undoStateStack : this.redoStateStack); +}, "~N"); +Clazz_defineMethod(c$, "clearStateStack", +function(){ +if (this.undoStateStack == null) return; +this.undoStateStack.clear(); +this.redoStateStack.clear(); +}); +Clazz_defineMethod(c$, "saveStructure", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Shape_"); +return; +}saveName = this.lastShape = "Shape_" + saveName; +this.saved.put(saveName, this.vwr.getStructureState()); +}, "~S"); +Clazz_defineMethod(c$, "getSavedStructure", +function(saveName){ +var name = (saveName.length > 0 ? "Shape_" + saveName : this.lastShape); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz_defineMethod(c$, "saveCoordinates", +function(saveName, bsSelected){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Coordinates_"); +return; +}saveName = this.lastCoordinates = "Coordinates_" + saveName; +this.saved.put(saveName, this.vwr.getCoordinateState(bsSelected)); +}, "~S,JU.BS"); +Clazz_defineMethod(c$, "getSavedCoordinates", +function(saveName){ +var name = (saveName.length > 0 ? "Coordinates_" + saveName : this.lastCoordinates); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz_defineMethod(c$, "getOrientation", +function(){ +return new JM.Orientation(this.vwr, false, null); +}); +Clazz_defineMethod(c$, "getSavedOrientationText", +function(saveName){ +var o; +if (saveName != null) { +o = this.getOrientationFor(saveName); +return (o == null ? "" : o.getMoveToText(true)); +}var sb = new JU.SB(); +for (var e, $e = this.saved.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (name.startsWith("Orientation_")) sb.append((e.getValue()).getMoveToText(true)); +} +return sb.toString(); +}, "~S"); +Clazz_defineMethod(c$, "saveScene", +function(saveName, scene){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Scene_"); +return; +}var o = new JV.Scene(scene); +o.saveName = this.lastScene = "Scene_" + saveName; +this.saved.put(o.saveName, o); +}, "~S,java.util.Map"); +Clazz_defineMethod(c$, "restoreScene", +function(saveName, timeSeconds){ +var o = JV.StateManager.getNoCase(this.saved, (saveName.length > 0 ? "Scene_" + saveName : this.lastScene)); +return (o != null && o.restore(this.vwr, timeSeconds)); +}, "~S,~N"); +Clazz_defineMethod(c$, "saveOrientation", +function(saveName, pymolView){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Orientation_"); +return; +}var o = new JM.Orientation(this.vwr, saveName.equalsIgnoreCase("default"), pymolView); +o.saveName = this.lastOrientation = "Orientation_" + saveName; +this.saved.put(o.saveName, o); +}, "~S,~A"); +Clazz_defineMethod(c$, "restoreOrientation", +function(saveName, timeSeconds, isAll){ +var o = this.getOrientationFor(saveName); +return (o != null && o.restore(timeSeconds, isAll)); +}, "~S,~N,~B"); +Clazz_defineMethod(c$, "getOrientationFor", +function(saveName){ +var name = (saveName.length > 0 ? "Orientation_" + saveName : this.lastOrientation); +return JV.StateManager.getNoCase(this.saved, name); +}, "~S"); +Clazz_defineMethod(c$, "saveContext", +function(saveName, context){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Context_"); +return; +}this.saved.put((this.lastContext = "Context_" + saveName), context); +}, "~S,~O"); +Clazz_defineMethod(c$, "getContext", +function(saveName){ +return this.saved.get(saveName.length == 0 ? this.lastContext : "Context_" + saveName); +}, "~S"); +Clazz_defineMethod(c$, "saveBonds", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Bonds_"); +return; +}var b = new JV.Connections(this.vwr); +b.saveName = this.lastConnections = "Bonds_" + saveName; +this.saved.put(b.saveName, b); +}, "~S"); +Clazz_defineMethod(c$, "restoreBonds", +function(saveName){ +this.vwr.clearModelDependentObjects(); +var name = (saveName.length > 0 ? "Bonds_" + saveName : this.lastConnections); +var c = JV.StateManager.getNoCase(this.saved, name); +return (c != null && c.restore()); +}, "~S"); +c$.varClip = Clazz_defineMethod(c$, "varClip", +function(name, sv, nMax){ +if (nMax > 0 && sv.length > nMax) sv = sv.substring(0, nMax) + " #...more (" + sv.length + " bytes -- use SHOW " + name + " or MESSAGE @" + name + " to view)"; +return sv; +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "getUndoMax", +function(){ +return this.maxUndo; +}); +Clazz_defineMethod(c$, "setUndoMax", +function(n){ +this.maxUndo = Math.max(n, 0); +this.checkStack(this.getStack(603984065)); +this.checkStack(this.getStack(4139)); +}, "~N"); +Clazz_defineMethod(c$, "getUndoRedoState", +function(tok){ +return this.popStack(tok); +}, "~N"); +Clazz_defineMethod(c$, "canDo", +function(type){ +return (this.maxUndo > 0 && this.vwr.getBoolean(603979898) && !this.getStack(type).isEmpty()); +}, "~N"); +Clazz_defineMethod(c$, "getUndoInfo", +function(){ +var auto = this.vwr.getBooleanProperty("undoAuto"); +return (this.vwr.getBoolean(603979898) ? "undoAuto=" + auto + (!auto ? "; user stack sizes: UNDO=" + this.getStack(603984065).size() + ", REDO=" + this.getStack(4139).size() : "") : "SET preserveState = FALSE -- undo/redo is disabled"); +}); +var c$ = Clazz_decorateAsClass(function(){ +this.saveName = null; +this.scene = null; +Clazz_instantialize(this, arguments);}, JV, "Scene", null); +Clazz_makeConstructor(c$, +function(scene){ +this.scene = scene; +}, "java.util.Map"); +Clazz_defineMethod(c$, "restore", +function(vwr, timeSeconds){ +var gen = this.scene.get("generator"); +if (gen != null) gen.generateScene(this.scene); +var pv = this.scene.get("pymolView"); +return (pv != null && vwr.tm.moveToPyMOL(vwr.eval, timeSeconds, pv)); +}, "JV.Viewer,~N"); +var c$ = Clazz_decorateAsClass(function(){ +this.saveName = null; +this.bondCount = 0; +this.connections = null; +this.vwr = null; +Clazz_instantialize(this, arguments);}, JV, "Connections", null); +Clazz_makeConstructor(c$, +function(vwr){ +var modelSet = vwr.ms; +if (modelSet == null) return; +this.vwr = vwr; +this.bondCount = modelSet.bondCount; +this.connections = new Array(this.bondCount + 1); +var bonds = modelSet.bo; +for (var i = this.bondCount; --i >= 0; ) { +var b = bonds[i]; +this.connections[i] = new JV.Connection(b.atom1.i, b.atom2.i, b.mad, b.colix, b.order, b.getEnergy(), b.shapeVisibilityFlags); +} +}, "JV.Viewer"); +Clazz_defineMethod(c$, "restore", +function(){ +var modelSet = this.vwr.ms; +if (modelSet == null) return false; +modelSet.deleteAllBonds(); +for (var i = this.bondCount; --i >= 0; ) { +var c = this.connections[i]; +var ac = modelSet.ac; +if (c.atomIndex1 >= ac || c.atomIndex2 >= ac) continue; +var b = modelSet.bondAtoms(modelSet.at[c.atomIndex1], modelSet.at[c.atomIndex2], c.order, c.mad, null, c.energy, false, true); +b.colix = c.colix; +b.shapeVisibilityFlags = c.shapeVisibilityFlags; +} +for (var i = modelSet.bondCount; --i >= 0; ) modelSet.bo[i].index = i; + +this.vwr.setShapeProperty(1, "reportAll", null); +return true; +}); +var c$ = Clazz_decorateAsClass(function(){ +this.atomIndex1 = 0; +this.atomIndex2 = 0; +this.mad = 0; +this.colix = 0; +this.order = 0; +this.energy = 0; +this.shapeVisibilityFlags = 0; +Clazz_instantialize(this, arguments);}, JV, "Connection", null); +Clazz_makeConstructor(c$, +function(atom1, atom2, mad, colix, order, energy, shapeVisibilityFlags){ +this.atomIndex1 = atom1; +this.atomIndex2 = atom2; +this.mad = mad; +this.colix = colix; +this.order = order; +this.energy = energy; +this.shapeVisibilityFlags = shapeVisibilityFlags; +}, "~N,~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.util.Hashtable"], "JV.StatusManager", ["JU.Lst", "$.PT", "J.api.Interface", "J.c.CBK", "JS.SV", "JU.BSUtil", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.jsl = null; +this.cbl = null; +this.statusList = ""; +this.allowStatusReporting = false; +this.messageQueue = null; +this.statusPtr = 0; +this.jmolScriptCallbacks = null; +this.imageMap = null; +this.echoing = false; +this.minSyncRepeatMs = 100; +this.syncingScripts = false; +this.syncingMouse = false; +this.drivingSync = false; +this.isSynced = false; +this.syncDisabled = false; +this.stereoSync = false; +this.qualityJPG = -1; +this.qualityPNG = -1; +this.imageType = null; +this.audios = null; +Clazz_instantialize(this, arguments);}, JV, "StatusManager", null); +Clazz_prepareFields (c$, function(){ +this.messageQueue = new java.util.Hashtable(); +this.jmolScriptCallbacks = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "recordStatus", +function(statusName){ +return (this.allowStatusReporting && this.statusList.length > 0 && (this.statusList.equals("all") || this.statusList.indexOf(statusName) >= 0)); +}, "~S"); +Clazz_defineMethod(c$, "setStatusChanged", +function(statusName, intInfo, statusInfo, isReplace){ +if (!this.recordStatus(statusName)) return; +var msgRecord = new JU.Lst(); +msgRecord.addLast(Integer.$valueOf(++this.statusPtr)); +msgRecord.addLast(statusName); +msgRecord.addLast(Integer.$valueOf(intInfo)); +msgRecord.addLast(statusInfo); +var statusRecordSet = (isReplace ? null : this.messageQueue.get(statusName)); +if (statusRecordSet == null) this.messageQueue.put(statusName, statusRecordSet = new JU.Lst()); + else if (statusRecordSet.size() == JV.StatusManager.MAXIMUM_QUEUE_LENGTH) statusRecordSet.removeItemAt(0); +statusRecordSet.addLast(msgRecord); +}, "~S,~N,~O,~B"); +Clazz_defineMethod(c$, "getStatusChanged", +function(newStatusList){ +var isRemove = (newStatusList.length > 0 && newStatusList.charAt(0) == '-'); +var isAdd = (newStatusList.length > 0 && newStatusList.charAt(0) == '+'); +var getList = false; +if (isRemove) { +this.statusList = JU.PT.rep(this.statusList, newStatusList.substring(1, newStatusList.length), ""); +} else { +newStatusList = JU.PT.rep(newStatusList, "+", ""); +if (this.statusList.equals(newStatusList) || isAdd && this.statusList.indexOf(newStatusList) >= 0) { +getList = true; +} else { +if (!isAdd) this.statusList = ""; +this.statusList += newStatusList; +if (JU.Logger.debugging) JU.Logger.debug("StatusManager messageQueue = " + this.statusList); +}}var list = new JU.Lst(); +if (getList) for (var e, $e = this.messageQueue.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) list.addLast(e.getValue()); + +this.messageQueue.clear(); +this.statusPtr = 0; +return list; +}, "~S"); +Clazz_defineMethod(c$, "setCallbackFunction", +function(callbackType, callbackObject){ +var cbk = J.c.CBK.getCallback(callbackType); +var callbackFunction = ((typeof(callbackObject)=='string') ? callbackObject : null); +if (cbk != null) { +var callback = J.c.CBK.getCallback(callbackType).name(); +JU.Logger.info("StatusManager " + callback + "callback set f=" + callbackFunction); +var isSync = (callbackFunction != null && callbackFunction.startsWith("SYNC:")); +if (isSync) { +if (callbackFunction.toLowerCase().trim().equals("sync:off")) { +this.jmolScriptCallbacks.remove("SYNC:" + callback); +JU.Logger.info("SYNC callback for " + callback + " deactivated"); +} else { +this.jmolScriptCallbacks.put("SYNC:" + callback, "_"); +JU.Logger.info("SYNC callback for " + callback + " activated"); +return; +}} else { +var lc = ""; +var pt = (callbackFunction == null ? 0 : (lc = callbackFunction.toLowerCase()).startsWith("script:") ? 7 : lc.startsWith("jmolscript:") ? 11 : 0); +if (pt == 0) { +if (callbackObject == null) this.jmolScriptCallbacks.remove(callback); +} else { +this.jmolScriptCallbacks.put(callback, callbackFunction.substring(pt).trim()); +return; +}}}if (this.cbl != null) this.cbl.setCallbackFunction(callbackType, callbackObject); +}, "~S,~O"); +Clazz_defineMethod(c$, "notifyEnabled", +function(type){ +return this.cbl != null && this.cbl.notifyEnabled(type); +}, "J.c.CBK"); +Clazz_defineMethod(c$, "getJmolScriptCallback", +function(callback){ +return this.jmolScriptCallbacks.get(callback.name()); +}, "J.c.CBK"); +Clazz_defineMethod(c$, "fireJmolScriptCallback", +function(isEnabled, callback, o, doWait){ +var name = callback.name(); +if (o[0] != null) { +var params = new Array(o.length); +System.arraycopy(o, 0, params, 0, o.length); +var cmd = "try{\n" + params[0] + "\n}"; +params[0] = name; +this.vwr.evalCallback(cmd, params, doWait); +}if (this.jmolScriptCallbacks.containsKey("SYNC:" + callback.name())) o[0] = "SYNC"; +if (isEnabled) { +this.cbl.notifyCallback(callback, o); +}}, "~B,J.c.CBK,~A,~B"); +Clazz_defineMethod(c$, "setStatusAppletReady", +function(htmlName, isReady){ +var sJmol = (isReady ? this.getJmolScriptCallback(J.c.CBK.APPLETREADY) : null); +var isEnabled = this.notifyEnabled(J.c.CBK.APPLETREADY); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.APPLETREADY, Clazz_newArray(-1, [sJmol, htmlName, Boolean.$valueOf(isReady), null]), true); +}, "~S,~B"); +Clazz_defineMethod(c$, "setStatusAtomMoved", +function(bsMoved){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.ATOMMOVED); +this.setStatusChanged("atomMoved", -1, bsMoved, false); +var isEnabled = this.notifyEnabled(J.c.CBK.ATOMMOVED); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ATOMMOVED, Clazz_newArray(-1, [sJmol, bsMoved, Integer.$valueOf(bsMoved.cardinality())]), true); +}, "JU.BS"); +Clazz_defineMethod(c$, "setStatusSelect", +function(atoms){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.SELECT); +this.setStatusChanged("select", -1, atoms, false); +var isEnabled = this.notifyEnabled(J.c.CBK.SELECT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.SELECT, Clazz_newArray(-1, [sJmol, atoms, Integer.$valueOf(atoms.cardinality()), Integer.$valueOf(atoms.nextSetBit(0)), Integer.$valueOf(atoms.length())]), true); +}, "JU.BS"); +Clazz_defineMethod(c$, "setStatusStructureModified", +function(atomIndex, modelIndex, mode, msg, n, bsAtoms){ +if (atomIndex >= 0 && bsAtoms == null) bsAtoms = JU.BSUtil.newAndSetBit(atomIndex); +var sJmol = this.getJmolScriptCallback(J.c.CBK.STRUCTUREMODIFIED); +var isEnabled = this.notifyEnabled(J.c.CBK.STRUCTUREMODIFIED); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.STRUCTUREMODIFIED, Clazz_newArray(-1, [sJmol, Integer.$valueOf(mode), Integer.$valueOf(atomIndex), Integer.$valueOf(modelIndex), msg, Integer.$valueOf(n), bsAtoms]), true); +}, "~N,~N,~N,~S,~N,JU.BS"); +Clazz_defineMethod(c$, "setStatusAtomPicked", +function(atomIndex, strInfo, map){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.PICK); +JU.Logger.info("setStatusAtomPicked(" + atomIndex + "," + strInfo + ")"); +this.setStatusChanged("atomPicked", atomIndex, strInfo, false); +var isEnabled = this.notifyEnabled(J.c.CBK.PICK); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.PICK, Clazz_newArray(-1, [sJmol, strInfo, Integer.$valueOf(atomIndex), map]), true); +}, "~N,~S,java.util.Map"); +Clazz_defineMethod(c$, "setStatusClicked", +function(x, y, action, clickCount, mode){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.CLICK); +var m = Clazz_newIntArray(-1, [action, mode]); +var isEnabled = this.notifyEnabled(J.c.CBK.CLICK); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.CLICK, Clazz_newArray(-1, [sJmol, Integer.$valueOf(x), Integer.$valueOf(y), Integer.$valueOf(action), Integer.$valueOf(clickCount), m]), true); +return m[0]; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setStatusResized", +function(width, height){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.RESIZE); +var isEnabled = this.notifyEnabled(J.c.CBK.RESIZE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.RESIZE, Clazz_newArray(-1, [sJmol, Integer.$valueOf(width), Integer.$valueOf(height)]), true); +}, "~N,~N"); +Clazz_defineMethod(c$, "haveHoverCallback", +function(){ +return (this.jmolScriptCallbacks.containsKey(J.c.CBK.HOVER.name()) || this.notifyEnabled(J.c.CBK.HOVER)); +}); +Clazz_defineMethod(c$, "setStatusAtomHovered", +function(iatom, strInfo){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.HOVER); +var isEnabled = this.notifyEnabled(J.c.CBK.HOVER); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.HOVER, Clazz_newArray(-1, [sJmol, strInfo, Integer.$valueOf(iatom)]), true); +}, "~N,~S"); +Clazz_defineMethod(c$, "setStatusObjectHovered", +function(id, strInfo, pt){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.HOVER); +var isEnabled = this.notifyEnabled(J.c.CBK.HOVER); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.HOVER, Clazz_newArray(-1, [sJmol, strInfo, Integer.$valueOf(-1), id, Float.$valueOf(pt.x), Float.$valueOf(pt.y), Float.$valueOf(pt.z)]), true); +}, "~S,~S,JU.T3"); +Clazz_defineMethod(c$, "showImage", +function(title, image){ +var a = JU.PT.split(title, "\1"); +title = (a.length < 2 ? "Jmol" : a.length < 3 || a[2].equals("null") ? a[1].substring(a[1].lastIndexOf("/") + 1) : a[2]); +var sJmol = this.getJmolScriptCallback(J.c.CBK.IMAGE); +var isEnabled = this.notifyEnabled(J.c.CBK.IMAGE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.IMAGE, Clazz_newArray(-1, [sJmol, title, image]), true); +if (Boolean.TRUE.equals(image)) { +if (this.imageMap == null) return; +var lst = new JU.Lst(); +for (var key, $key = this.imageMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) lst.addLast(key); + +for (var i = lst.size(); --i >= 0; ) this.imageMap.get(lst.get(i)).closeMe(); + +return; +}if (this.imageMap == null) this.imageMap = new java.util.Hashtable(); +var d = this.imageMap.get(title); +if (Boolean.FALSE.equals(image)) { +if (d != null) d.closeMe(); +return; +}if (d == null && image != null) d = this.vwr.apiPlatform.getImageDialog(title, this.imageMap); +if (d == null) return; +if (image == null) d.closeMe(); + else d.setImage(image); +}, "~S,~O"); +Clazz_defineMethod(c$, "setFileLoadStatus", +function(fullPathName, fileName, modelName, errorMsg, ptLoad, doCallback, isAsync){ +if (fullPathName == null && "resetUndo".equals(fileName)) { +var appConsole = this.vwr.getProperty("DATA_API", "getAppConsole", null); +if (appConsole != null) appConsole.zap(); +fileName = this.vwr.getZapName(); +}this.setStatusChanged("fileLoaded", ptLoad, fullPathName, false); +if (errorMsg != null) this.setStatusChanged("fileLoadError", ptLoad, errorMsg, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.LOADSTRUCT); +var isEnabled = doCallback && this.notifyEnabled(J.c.CBK.LOADSTRUCT); +if (isEnabled || sJmol != null) { +var name = this.vwr.getP("_smilesString"); +if (name.length != 0) fileName = name; +this.fireJmolScriptCallback(isEnabled, J.c.CBK.LOADSTRUCT, Clazz_newArray(-1, [sJmol, fullPathName, fileName, modelName, errorMsg, Integer.$valueOf(ptLoad), this.vwr.getP("_modelNumber"), this.vwr.getModelNumberDotted(this.vwr.ms.mc - 1), isAsync]), true); +}}, "~S,~S,~S,~S,~N,~B,Boolean"); +Clazz_defineMethod(c$, "setStatusModelKit", +function(istate){ +var state = (istate == 1 ? "ON" : "OFF"); +this.setStatusChanged("modelkit", istate, state, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.MODELKIT); +var isEnabled = this.notifyEnabled(J.c.CBK.MODELKIT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MODELKIT, Clazz_newArray(-1, [sJmol, state]), true); +}, "~N"); +Clazz_defineMethod(c$, "setStatusFrameChanged", +function(fileNo, modelNo, firstNo, lastNo, currentFrame, currentMorphModel, entryName){ +if (this.vwr.ms == null) return; +var animating = this.vwr.am.animationOn; +var frameNo = (animating ? -2 - currentFrame : currentFrame); +this.setStatusChanged("frameChanged", frameNo, (currentFrame >= 0 ? this.vwr.getModelNumberDotted(currentFrame) : ""), false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.ANIMFRAME); +var isEnabled = this.notifyEnabled(J.c.CBK.ANIMFRAME); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ANIMFRAME, Clazz_newArray(-1, [sJmol, Clazz_newIntArray(-1, [frameNo, fileNo, modelNo, firstNo, lastNo, currentFrame]), entryName, Float.$valueOf(currentMorphModel)]), false); +if (!animating && !this.vwr.isJSNoAWT) this.vwr.checkMenuUpdate(); +}, "~N,~N,~N,~N,~N,~N,~S"); +Clazz_defineMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +this.setStatusChanged("dragDrop", 0, "", false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.DRAGDROP); +var isEnabled = this.notifyEnabled(J.c.CBK.DRAGDROP); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.DRAGDROP, Clazz_newArray(-1, [sJmol, Integer.$valueOf(mode), Integer.$valueOf(x), Integer.$valueOf(y), fileName, retType]), true); +return isEnabled; +}, "~N,~N,~N,~S,~A"); +Clazz_defineMethod(c$, "setScriptEcho", +function(strEcho, isScriptQueued){ +if (strEcho == null || this.echoing) return; +this.echoing = true; +this.setStatusChanged("scriptEcho", 0, strEcho, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.ECHO); +var isEnabled = this.notifyEnabled(J.c.CBK.ECHO); +if (isEnabled || sJmol != null) { +this.fireJmolScriptCallback(isEnabled, J.c.CBK.ECHO, Clazz_newArray(-1, [sJmol, strEcho, Integer.$valueOf(isScriptQueued ? 1 : 0)]), true); +}this.echoing = false; +}, "~S,~B"); +Clazz_defineMethod(c$, "setStatusMeasuring", +function(status, intInfo, strMeasure, value){ +this.setStatusChanged(status, intInfo, strMeasure, false); +var sJmol = null; +if (status.equals("measureCompleted")) { +JU.Logger.info("measurement[" + intInfo + "] = " + strMeasure); +sJmol = this.getJmolScriptCallback(J.c.CBK.MEASURE); +} else if (status.equals("measurePicked")) { +this.setStatusChanged("measurePicked", intInfo, strMeasure, false); +JU.Logger.info("measurePicked " + intInfo + " " + strMeasure); +}var isEnabled = this.notifyEnabled(J.c.CBK.MEASURE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MEASURE, Clazz_newArray(-1, [sJmol, strMeasure, Integer.$valueOf(intInfo), status, Float.$valueOf(value)]), true); +}, "~S,~N,~S,~N"); +Clazz_defineMethod(c$, "notifyError", +function(errType, errMsg, errMsgUntranslated){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.ERROR); +var isEnabled = this.notifyEnabled(J.c.CBK.ERROR); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ERROR, Clazz_newArray(-1, [sJmol, errType, errMsg, this.vwr.getShapeErrorState(), errMsgUntranslated]), true); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "notifyMinimizationStatus", +function(minStatus, minSteps, minEnergy, minEnergyDiff, ff){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.MINIMIZATION); +var isEnabled = this.notifyEnabled(J.c.CBK.MINIMIZATION); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MINIMIZATION, Clazz_newArray(-1, [sJmol, minStatus, minSteps, minEnergy, minEnergyDiff, ff]), true); +}, "~S,Integer,Float,Float,~S"); +Clazz_defineMethod(c$, "setScriptStatus", +function(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated){ +if (msWalltime < -1) { +var iscript = -2 - msWalltime; +this.setStatusChanged("scriptStarted", iscript, statusMessage, false); +strStatus = "script " + iscript + " started"; +} else if (strStatus == null) { +return; +}var sJmol = (msWalltime == 0 ? this.getJmolScriptCallback(J.c.CBK.SCRIPT) : null); +var isScriptCompletion = (strStatus === "Script completed"); +if (this.recordStatus("script")) { +var isError = (strErrorMessageUntranslated != null); +this.setStatusChanged((isError ? "scriptError" : "scriptStatus"), 0, strStatus, false); +if (isError || isScriptCompletion) this.setStatusChanged("scriptTerminated", 1, "Jmol script terminated" + (isError ? " unsuccessfully: " + strStatus : " successfully"), false); +}if (isScriptCompletion && this.vwr.getBoolean(603979879) && this.vwr.getBoolean(603979825)) strStatus = this.vwr.getChimeMessenger().scriptCompleted(this, statusMessage, strErrorMessageUntranslated); +var data = Clazz_newArray(-1, [sJmol, strStatus, statusMessage, Integer.$valueOf(isScriptCompletion ? -1 : msWalltime), strErrorMessageUntranslated]); +var isEnabled = this.notifyEnabled(J.c.CBK.SCRIPT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.SCRIPT, data, true); +this.processScript(data); +}, "~S,~S,~N,~S"); +Clazz_defineMethod(c$, "processScript", +function(data){ +var msWalltime = (data[3]).intValue(); +this.vwr.notifyScriptEditor(msWalltime, data); +if (msWalltime == 0) this.vwr.sendConsoleMessage(data[1] == null ? null : data[1].toString()); +}, "~A"); +Clazz_defineMethod(c$, "doSync", +function(){ +return (this.isSynced && this.drivingSync && !this.syncDisabled); +}); +Clazz_defineMethod(c$, "setSync", +function(mouseCommand){ +if (this.syncingMouse) { +if (mouseCommand != null) { +var sJmol = this.getJmolScriptCallback(J.c.CBK.SYNC); +if (sJmol != null) this.fireJmolScriptCallback(false, J.c.CBK.SYNC, Clazz_newArray(-1, [sJmol, mouseCommand, "sending mouseSync"]), true); +this.syncSend(mouseCommand, "*", 0); +}} else if (!this.syncingScripts) this.syncSend("!" + this.vwr.tm.getMoveToText(this.minSyncRepeatMs / 1000, false), "*", 0); +}, "~S"); +Clazz_defineMethod(c$, "setSyncDriver", +function(syncMode){ +if (this.stereoSync && syncMode != 4) { +this.syncSend("SET_GRAPHICS_OFF", "*", 0); +this.stereoSync = false; +}switch (syncMode) { +case 4: +if (!this.syncDisabled) return; +this.syncDisabled = false; +break; +case 3: +this.syncDisabled = true; +break; +case 5: +this.drivingSync = true; +this.isSynced = true; +this.stereoSync = true; +break; +case 1: +this.drivingSync = true; +this.isSynced = true; +break; +case 2: +this.drivingSync = false; +this.isSynced = true; +break; +default: +this.drivingSync = false; +this.isSynced = false; +} +if (JU.Logger.debugging) { +JU.Logger.debug(this.vwr.appletName + " sync mode=" + syncMode + "; synced? " + this.isSynced + "; driving? " + this.drivingSync + "; disabled? " + this.syncDisabled); +}}, "~N"); +Clazz_defineMethod(c$, "syncSend", +function(script, appletNameOrProp, port){ +if (port != 0 || this.notifyEnabled(J.c.CBK.SYNC)) { +var o = Clazz_newArray(-1, [null, script, appletNameOrProp, Integer.$valueOf(port)]); +if (this.cbl != null) this.cbl.notifyCallback(J.c.CBK.SYNC, o); +return o[0]; +}return null; +}, "~S,~O,~N"); +Clazz_defineMethod(c$, "processService", +function(info){ +var s = info.get("service"); +if (s == null) return null; +if (Clazz_instanceOf(s,"JS.SV")) { +var m = new java.util.Hashtable(); +for (var e, $e = info.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) m.put(e.getKey(), JS.SV.oValue(e.getValue())); + +info = m; +}if (this.notifyEnabled(J.c.CBK.SERVICE)) this.cbl.notifyCallback(J.c.CBK.SERVICE, Clazz_newArray(-1, [null, info])); +return info; +}, "java.util.Map"); +Clazz_defineMethod(c$, "getSyncMode", +function(){ +return (!this.isSynced ? 0 : this.drivingSync ? 1 : 2); +}); +Clazz_defineMethod(c$, "showUrl", +function(urlString){ +if (this.jsl != null) this.jsl.showUrl(urlString); +}, "~S"); +Clazz_defineMethod(c$, "clearConsole", +function(){ +this.vwr.sendConsoleMessage(null); +if (this.jsl != null) this.cbl.notifyCallback(J.c.CBK.MESSAGE, null); +}); +Clazz_defineMethod(c$, "functionXY", +function(functionName, nX, nY){ +return (this.jsl == null ? Clazz_newFloatArray (Math.abs(nX), Math.abs(nY), 0) : this.jsl.functionXY(functionName, nX, nY)); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "functionXYZ", +function(functionName, nX, nY, nZ){ +return (this.jsl == null ? Clazz_newFloatArray (Math.abs(nX), Math.abs(nY), Math.abs(nY), 0) : this.jsl.functionXYZ(functionName, nX, nY, nZ)); +}, "~S,~N,~N,~N"); +Clazz_defineMethod(c$, "jsEval", +function(strEval){ +return (this.jsl == null ? "" : this.jsl.eval(strEval)); +}, "~S"); +Clazz_defineMethod(c$, "createImage", +function(fileNameOrError, type, text, bytes, quality){ +return (this.jsl == null ? null : this.jsl.createImage(fileNameOrError, type, text == null ? bytes : text, quality)); +}, "~S,~S,~S,~A,~N"); +Clazz_defineMethod(c$, "getRegistryInfo", +function(){ +return (this.jsl == null ? null : this.jsl.getRegistryInfo()); +}); +Clazz_defineMethod(c$, "dialogAsk", +function(type, fileName, params){ +var isImage = type.equals("Save Image"); +var sd = J.api.Interface.getOption("dialog.Dialog", this.vwr, "status"); +if (sd == null) return null; +sd.setupUI(false); +if (isImage) sd.setImageInfo(this.qualityJPG, this.qualityPNG, this.imageType); +var outputFileName = sd.getFileNameFromDialog(this.vwr, type, fileName); +if (isImage && outputFileName != null) { +this.qualityJPG = sd.getQuality("JPG"); +this.qualityPNG = sd.getQuality("PNG"); +var sType = sd.getType(); +if (params != null) { +params.put("qualityJPG", Integer.$valueOf(this.qualityJPG)); +params.put("qualityPNG", Integer.$valueOf(this.qualityPNG)); +if (sType != null) params.put("dialogImageType", sType); +}if (sType != null) this.imageType = sType; +}return outputFileName; +}, "~S,~S,java.util.Map"); +Clazz_defineMethod(c$, "getJspecViewProperties", +function(myParam){ +return (this.jsl == null ? null : this.jsl.getJSpecViewProperty(myParam == null || myParam.length == 0 ? "" : ":" + myParam)); +}, "~S"); +Clazz_defineMethod(c$, "resizeInnerPanel", +function(width, height){ +return (this.jsl == null || width == this.vwr.getScreenWidth() && height == this.vwr.getScreenHeight() ? Clazz_newIntArray(-1, [width, height]) : this.jsl.resizeInnerPanel("preferredWidthHeight " + width + " " + height + ";")); +}, "~N,~N"); +Clazz_defineMethod(c$, "resizeInnerPanelString", +function(data){ +if (this.jsl != null) this.jsl.resizeInnerPanel(data); +}, "~S"); +Clazz_defineMethod(c$, "registerAudio", +function(id, htParams){ +this.stopAudio(id); +if (this.audios == null) this.audios = new java.util.Hashtable(); +if (htParams == null) this.audios.remove(id); + else this.audios.put(id, htParams.get("audioPlayer")); +}, "~S,java.util.Map"); +Clazz_defineMethod(c$, "stopAudio", +function(id){ +if (this.audios == null) return; +var player = this.audios.get(id); +if (player != null) player.action("kill"); +}, "~S"); +Clazz_defineMethod(c$, "playAudio", +function(htParams){ +if (!this.vwr.getBoolean(603979797)) { +if (htParams == null) return; +htParams.put("status", "close"); +JU.Logger.info("allowAudio is set false"); +this.notifyAudioStatus(htParams); +return; +}try { +var action = (htParams == null ? "close" : htParams.get("action")); +var id = (htParams == null ? null : htParams.get("id")); +if (action != null && action.length > 0) { +if (id == null || id.length == 0) { +if (this.audios == null || this.audios.isEmpty()) return; +if (action.equals("close")) { +for (var key, $key = this.audios.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var player = this.audios.remove(key); +player.action("close"); +} +}return; +}var player = this.audios.get(id); +if (player != null) { +player.action(action); +return; +}}try { +(J.api.Interface.getInterface("JU.JmolAudio", this.vwr, "script")).playAudio(this.vwr, htParams); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.info(e.getMessage()); +} else { +throw e; +} +} +} catch (t) { +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "notifyAudioStatus", +function(htParams){ +var status = htParams.get("status"); +var script = htParams.get(status); +if (script != null) this.vwr.script(script); +if (status === "ended") this.registerAudio(htParams.get("id"), null); +var sJmol = this.getJmolScriptCallback(J.c.CBK.AUDIO); +var isEnabled = this.notifyEnabled(J.c.CBK.AUDIO); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.AUDIO, Clazz_newArray(-1, [sJmol, htParams, status]), true); +}, "java.util.Map"); +Clazz_defineMethod(c$, "syncScript", +function(script, applet, port){ +if ("GET_GRAPHICS".equalsIgnoreCase(script)) { +this.setSyncDriver(5); +this.syncSend(script, applet, 0); +this.vwr.setBooleanProperty("_syncMouse", false); +this.vwr.setBooleanProperty("_syncScript", false); +return; +}if ("=".equals(applet)) { +applet = "~"; +this.setSyncDriver(2); +}var disableSend = "~".equals(applet); +if (port > 0 || !disableSend && !".".equals(applet)) { +this.syncSend(script, applet, port); +if (!"*".equals(applet) || script.startsWith("{")) return; +}if (script.equalsIgnoreCase("on") || script.equalsIgnoreCase("true")) { +this.setSyncDriver(1); +return; +}if (script.equalsIgnoreCase("off") || script.equalsIgnoreCase("false")) { +this.setSyncDriver(0); +return; +}if (script.equalsIgnoreCase("slave")) { +this.setSyncDriver(2); +return; +}var syncMode = this.getSyncMode(); +if (syncMode == 0) return; +if (syncMode != 1) disableSend = false; +if (JU.Logger.debugging) JU.Logger.debug(this.vwr.htmlName + " syncing with script: " + script); +if (disableSend) this.setSyncDriver(3); +if (script.indexOf("Mouse: ") != 0) { +var serviceMode = JV.JC.getServiceCommand(script); +switch (serviceMode) { +case 70: +case 42: +case 49: +case 56: +case 63: +this.syncSend(script, ".", port); +return; +case -1: +break; +case 0: +case 77: +case 28: +case 35: +if (disableSend) return; +case 21: +case 7: +case 14: +if ((script = this.vwr.getJSV().processSync(script, serviceMode)) == null) return; +} +this.vwr.evalStringQuietSync(script, true, false); +return; +}this.mouseScript(script); +if (disableSend) this.vwr.setSyncDriver(4); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "mouseScript", +function(script){ +var tokens = JU.PT.getTokens(script); +var key = tokens[1]; +try { +key = (key.toLowerCase() + "...............").substring(0, 15); +switch (("zoombyfactor...zoomby.........rotatezby......rotatexyby.....translatexyby..rotatemolecule.spinxyby.......rotatearcball..").indexOf(key)) { +case 0: +switch (tokens.length) { +case 3: +this.vwr.zoomByFactor(JU.PT.parseFloat(tokens[2]), 2147483647, 2147483647); +return; +case 5: +this.vwr.zoomByFactor(JU.PT.parseFloat(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseInt(tokens[4])); +return; +} +break; +case 15: +switch (tokens.length) { +case 3: +this.vwr.zoomBy(JU.PT.parseInt(tokens[2])); +return; +} +break; +case 30: +switch (tokens.length) { +case 3: +this.vwr.rotateZBy(JU.PT.parseInt(tokens[2]), 2147483647, 2147483647); +return; +case 5: +this.vwr.rotateZBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseInt(tokens[4])); +} +break; +case 45: +this.vwr.rotateXYBy(JU.PT.parseFloat(tokens[2]), JU.PT.parseFloat(tokens[3])); +return; +case 60: +this.vwr.translateXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3])); +return; +case 75: +this.vwr.rotateSelected(JU.PT.parseFloat(tokens[2]), JU.PT.parseFloat(tokens[3]), null); +return; +case 90: +this.vwr.spinXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseFloat(tokens[4])); +return; +case 105: +this.vwr.rotateXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3])); +return; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.vwr.showString("error reading SYNC command: " + script, false); +}, "~S"); +c$.MAXIMUM_QUEUE_LENGTH = 16; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["JU.A4", "$.M3", "$.M4", "$.P3", "$.P3i", "$.V3", "J.c.STER", "JU.Point3fi"], "JV.TransformManager", ["java.util.Hashtable", "JU.P4", "$.Quat", "$.SB", "J.api.Interface", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.movetoThread = null; +this.vibrationThread = null; +this.spinThread = null; +this.perspectiveModel = 11; +this.cameraScaleFactor = 0; +this.referencePlaneOffset = 0; +this.aperatureAngle = 0; +this.cameraDistanceFromCenter = 0; +this.modelCenterOffset = 0; +this.modelRadius = 0; +this.modelRadiusPixels = 0; +this.navigationCenter = null; +this.navigationOffset = null; +this.navigationShiftXY = null; +this.navigationDepthPercent = 0; +this.matrixTemp = null; +this.vectorTemp = null; +this.haveNotifiedNaN = false; +this.spinX = 0; +this.spinY = 30; +this.spinZ = 0; +this.spinFps = 30; +this.navX = 0; +this.navY = 0; +this.navZ = 0; +this.navFps = NaN; +this.isSpinInternal = false; +this.isSpinFixed = false; +this.isSpinSelected = false; +this.doTransform4D = false; +this.fixedRotationOffset = null; +this.fixedRotationCenter = null; +this.perspectiveOffset = null; +this.perspectiveShiftXY = null; +this.rotationCenterDefault = null; +this.rotationRadiusDefault = 0; +this.fixedRotationAxis = null; +this.internalRotationAxis = null; +this.internalTranslation = null; +this.internalRotationCenter = null; +this.internalRotationAngle = 0; +this.matrixRotate = null; +this.matrixTemp3 = null; +this.matrixTemp4 = null; +this.axisangleT = null; +this.vectorT = null; +this.vectorT2 = null; +this.pointT2 = null; +this.rotationAxis = null; +this.rotationRate = 0; +this.fixedTranslation = null; +this.camera = null; +this.cameraSetting = null; +this.xTranslationFraction = 0.5; +this.yTranslationFraction = 0.5; +this.prevZoomSetting = 0; +this.previousX = 0; +this.previousY = 0; +this.zoomEnabled = true; +this.zmPct = 100; +this.zmPctSet = 100; +this.zoomRatio = 0; +this.slabEnabled = false; +this.zShadeEnabled = false; +this.internalSlab = false; +this.slabPercentSetting = 0; +this.depthPercentSetting = 0; +this.slabValue = 0; +this.depthValue = 0; +this.zSlabPercentSetting = 50; +this.zDepthPercentSetting = 0; +this.zSlabPoint = null; +this.zSlabValue = 0; +this.zDepthValue = 0; +this.slabRange = 0; +this.slabPlane = null; +this.depthPlane = null; +this.perspectiveDepth = true; +this.scale3D = false; +this.cameraDepth = 3; +this.cameraDepthSetting = 3; +this.visualRangeAngstroms = 0; +this.cameraDistance = 1000; +this.width = 0; +this.height = 0; +this.screenPixelCount = 0; +this.scalePixelsPerAngstrom = 0; +this.scaleDefaultPixelsPerAngstrom = 0; +this.scale3DAngstromsPerInch = 0; +this.antialias = false; +this.useZoomLarge = false; +this.zoomHeight = false; +this.screenWidth = 0; +this.screenHeight = 0; +this.matrixTransform = null; +this.matrixTransformInv = null; +this.fScrPt = null; +this.iScrPt = null; +this.ptVibTemp = null; +this.navigating = false; +this.mode = 0; +this.defaultMode = 0; +this.untransformedPoint = null; +this.ptTest1 = null; +this.ptTest2 = null; +this.ptTest3 = null; +this.aaTest1 = null; +this.matrixTest = null; +this.spinOn = false; +this.navOn = false; +this.spinIsGesture = false; +this.vibrationOn = false; +this.vibrationPeriod = 0; +this.vibrationPeriodMs = 0; +this.vibrationScale = 0; +this.vibrationT = null; +this.stereoMode = null; +this.stereoColors = null; +this.stereoDoubleDTI = false; +this.stereoDoubleFull = false; +this.stereoDegrees = NaN; +this.stereoRadians = 0; +this.stereoFrame = false; +this.matrixStereo = null; +this.windowCentered = false; +this.frameOffset = null; +this.frameOffsets = null; +this.bsFrameOffsets = null; +this.bsSelectedAtoms = null; +this.ptOffset = null; +this.navMode = 1; +this.zoomFactor = 3.4028235E38; +this.navigationSlabOffset = 0; +this.nav = null; +Clazz_instantialize(this, arguments);}, JV, "TransformManager", null); +Clazz_prepareFields (c$, function(){ +this.navigationCenter = new JU.P3(); +this.navigationOffset = new JU.P3(); +this.navigationShiftXY = new JU.P3(); +this.matrixTemp = new JU.M4(); +this.vectorTemp = new JU.V3(); +this.fixedRotationOffset = new JU.P3(); +this.fixedRotationCenter = new JU.P3(); +this.perspectiveOffset = new JU.P3(); +this.perspectiveShiftXY = new JU.P3(); +this.rotationCenterDefault = new JU.P3(); +this.fixedRotationAxis = new JU.A4(); +this.internalRotationAxis = new JU.A4(); +this.internalRotationCenter = JU.P3.new3(0, 0, 0); +this.matrixRotate = new JU.M3(); +this.matrixTemp3 = new JU.M3(); +this.matrixTemp4 = new JU.M4(); +this.axisangleT = new JU.A4(); +this.vectorT = new JU.V3(); +this.vectorT2 = new JU.V3(); +this.pointT2 = new JU.P3(); +this.rotationAxis = new JU.V3(); +this.fixedTranslation = new JU.P3(); +this.camera = new JU.P3(); +this.cameraSetting = new JU.P3(); +this.matrixTransform = new JU.M4(); +this.matrixTransformInv = new JU.M4(); +this.fScrPt = new JU.P3(); +this.iScrPt = new JU.P3i(); +this.ptVibTemp = new JU.Point3fi(); +this.untransformedPoint = new JU.P3(); +this.ptTest1 = new JU.P3(); +this.ptTest2 = new JU.P3(); +this.ptTest3 = new JU.P3(); +this.aaTest1 = new JU.A4(); +this.matrixTest = new JU.M3(); +this.vibrationT = new JU.P3(); +this.stereoMode = J.c.STER.NONE; +this.matrixStereo = new JU.M3(); +this.frameOffset = new JU.P3(); +this.ptOffset = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +c$.getTransformManager = Clazz_defineMethod(c$, "getTransformManager", +function(vwr, width, height, is4D){ +var me = (is4D ? J.api.Interface.getInterface("JV.TransformManager4D", vwr, "tm") : new JV.TransformManager()); +me.vwr = vwr; +me.setScreenParameters(width, height, true, false, true, true); +return me; +}, "JV.Viewer,~N,~N,~B"); +Clazz_defineMethod(c$, "setDefaultPerspective", +function(){ +this.setCameraDepthPercent(3.0, true); +this.setPerspectiveDepth(true); +this.setStereoDegrees(-5); +this.visualRangeAngstroms = 5.0; +this.setSpinOff(); +this.setVibrationPeriod(0); +}); +Clazz_defineMethod(c$, "homePosition", +function(resetSpin){ +if (resetSpin) this.setSpinOff(); +this.setNavOn(false); +this.navFps = 10; +this.navX = this.navY = this.navZ = 0; +this.rotationCenterDefault.setT(this.vwr.getBoundBoxCenter()); +this.setFixedRotationCenter(this.rotationCenterDefault); +this.rotationRadiusDefault = this.setRotationRadius(0, true); +this.windowCentered = true; +this.setRotationCenterAndRadiusXYZ(null, true); +this.resetRotation(); +var m = this.vwr.ms.getInfoM("defaultOrientationMatrix"); +if (m != null) this.setRotation(m); +this.setZoomEnabled(true); +this.zoomToPercent(this.vwr.g.modelKitMode ? 50 : 100); +this.zmPct = this.zmPctSet; +this.slabReset(); +this.resetFitToScreen(true); +if (this.vwr.isJmolDataFrame()) { +this.fixedRotationCenter.set(0, 0, 0); +} else { +if (this.vwr.g.axesOrientationRasmol) this.matrixRotate.setAsXRotation(3.141592653589793); +}this.vwr.stm.saveOrientation("default", null); +if (this.mode == 1) this.setNavigationMode(true); +}, "~B"); +Clazz_defineMethod(c$, "setRotation", +function(m){ +if (m.isRotation()) this.matrixRotate.setM3(m); + else this.resetRotation(); +}, "JU.M3"); +Clazz_defineMethod(c$, "resetRotation", +function(){ +this.matrixRotate.setScale(1); +}); +Clazz_defineMethod(c$, "clearThreads", +function(){ +this.clearVibration(); +this.clearSpin(); +this.setNavOn(false); +this.stopMotion(); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.fixedRotationCenter.set(0, 0, 0); +this.navigating = false; +this.slabPlane = null; +this.depthPlane = null; +this.zSlabPoint = null; +this.resetNavigationPoint(true); +}); +Clazz_defineMethod(c$, "setFixedRotationCenter", +function(center){ +if (center == null) return; +this.fixedRotationCenter.setT(center); +}, "JU.T3"); +Clazz_defineMethod(c$, "setRotationPointXY", +function(center){ +var newCenterScreen = this.transformPt(center); +this.fixedTranslation.set(newCenterScreen.x, newCenterScreen.y, 0); +}, "JU.P3"); +Clazz_defineMethod(c$, "spinXYBy", +function(xDelta, yDelta, speed){ +if (xDelta == 0 && yDelta == 0) { +if (this.spinThread != null && this.spinIsGesture) this.clearSpin(); +return; +}this.clearSpin(); +var pt1 = JU.P3.newP(this.fixedRotationCenter); +var ptScreen = new JU.P3(); +this.transformPt3f(pt1, ptScreen); +var pt2 = JU.P3.new3(-yDelta, xDelta, 0); +pt2.add(ptScreen); +this.unTransformPoint(pt2, pt2); +this.vwr.setInMotion(false); +this.rotateAboutPointsInternal(null, pt2, pt1, 10 * speed, NaN, false, true, null, true, null, null, null, null, false); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "rotateXYBy", +function(degX, degY, bsAtoms){ +this.rotate3DBall(degX, degY, bsAtoms); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "rotateZBy", +function(zDelta, x, y){ +if (x != 2147483647 && y != 2147483647) this.resetXYCenter(x, y); +this.rotateZRadians((zDelta / 57.29577951308232)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "applyRotation", +function(mNew, isInternal, bsAtoms, translation, translationOnly, m4, useModelKit){ +if (bsAtoms == null) { +this.matrixRotate.mul2(mNew, this.matrixRotate); +return; +}this.vwr.moveAtoms(m4, mNew, this.matrixRotate, translation, this.internalRotationCenter, isInternal, bsAtoms, translationOnly, useModelKit); +if (translation != null) { +this.internalRotationCenter.add(translation); +}}, "JU.M3,~B,JU.BS,JU.V3,~B,JU.M4,~B"); +Clazz_defineMethod(c$, "rotate3DBall", +function(xDeg, yDeg, bsAtoms){ +if (this.matrixTemp3.setAsBallRotation(0.017453292519943295, -yDeg, -xDeg)) this.applyRotation(this.matrixTemp3, false, bsAtoms, null, false, null, false); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "rotateXRadians", +function(angleRadians, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAsXRotation(angleRadians), false, bsAtoms, null, false, null, false); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "rotateYRadians", +function(angleRadians, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAsYRotation(angleRadians), false, bsAtoms, null, false, null, false); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "rotateZRadians", +function(angleRadians){ +this.applyRotation(this.matrixTemp3.setAsZRotation(angleRadians), false, null, null, false, null, false); +}, "~N"); +Clazz_defineMethod(c$, "rotateAxisAngle", +function(rotAxis, radians){ +this.axisangleT.setVA(rotAxis, radians); +this.rotateAxisAngle2(this.axisangleT, null); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "rotateAxisAngle2", +function(axisAngle, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAA(axisAngle), false, bsAtoms, null, false, null, false); +}, "JU.A4,JU.BS"); +Clazz_defineMethod(c$, "rotateAxisAngleAtCenter", +function(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsAtoms){ +if (rotCenter != null) this.moveRotationCenter(rotCenter, true); +if (isSpin) this.setSpinOff(); +this.setNavOn(false); +if (this.vwr.headless) { +if (isSpin && endDegrees == 3.4028235E38) return false; +isSpin = false; +}if (Float.isNaN(degreesPerSecond) || degreesPerSecond == 0 || endDegrees == 0) return false; +if (rotCenter != null) { +this.setRotationPointXY(rotCenter); +}this.setFixedRotationCenter(rotCenter); +this.rotationAxis.setT(rotAxis); +this.rotationRate = degreesPerSecond; +if (isSpin) { +this.fixedRotationAxis.setVA(rotAxis, (degreesPerSecond * 0.017453292519943295)); +this.isSpinInternal = false; +this.isSpinFixed = true; +this.isSpinSelected = (bsAtoms != null); +this.setSpin(eval, true, endDegrees, null, null, bsAtoms, false); +return (endDegrees != 3.4028235E38); +}var radians = (endDegrees * 0.017453292519943295); +this.fixedRotationAxis.setVA(rotAxis, endDegrees); +this.rotateAxisAngleRadiansFixed(radians, bsAtoms); +return true; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.V3,~N,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "rotateAxisAngleRadiansFixed", +function(angleRadians, bsAtoms){ +this.axisangleT.setAA(this.fixedRotationAxis); +this.axisangleT.angle = angleRadians; +this.rotateAxisAngle2(this.axisangleT, bsAtoms); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "rotateAboutPointsInternal", +function(eval, point1, point2, degreesPerSecond, endDegrees, isClockwise, isSpin, bsAtoms, isGesture, translation, finalPoints, dihedralList, m4, useModelKit){ +if (isSpin) this.setSpinOff(); +this.setNavOn(false); +if (dihedralList == null && (translation == null || translation.length() < 0.001) && (isSpin ? Float.isNaN(degreesPerSecond) || degreesPerSecond == 0 : endDegrees == 0)) return false; +var axis = null; +if (dihedralList == null) { +axis = JU.V3.newVsub(point2, point1); +if (isClockwise) axis.scale(-1.0); +this.internalRotationCenter.setT(point1); +this.rotationAxis.setT(axis); +this.internalTranslation = (translation == null ? null : JU.V3.newV(translation)); +}var isSelected = (bsAtoms != null); +if (isSpin) { +if (dihedralList == null) { +if (endDegrees == 0) endDegrees = NaN; +if (Float.isNaN(endDegrees)) { +this.rotationRate = degreesPerSecond; +} else { +var nFrames = Clazz_doubleToInt(Math.abs(endDegrees) / Math.abs(degreesPerSecond) * this.spinFps + 0.5); +this.rotationRate = degreesPerSecond = endDegrees / nFrames * this.spinFps; +if (translation != null) this.internalTranslation.scale(1 / nFrames); +}this.internalRotationAxis.setVA(axis, ((Float.isNaN(this.rotationRate) ? 0 : this.rotationRate) * 0.017453292519943295)); +this.isSpinInternal = true; +this.isSpinFixed = false; +this.isSpinSelected = isSelected; +} else { +endDegrees = degreesPerSecond; +}this.setSpin(eval, true, endDegrees, finalPoints, dihedralList, bsAtoms, isGesture); +return !Float.isNaN(endDegrees); +}var radians = (endDegrees * 0.017453292519943295); +this.internalRotationAxis.setVA(axis, radians); +this.rotateAxisAngleRadiansInternal(radians, bsAtoms, m4, useModelKit); +return false; +}, "J.api.JmolScriptEvaluator,JU.T3,JU.T3,~N,~N,~B,~B,JU.BS,~B,JU.V3,JU.Lst,~A,JU.M4,~B"); +Clazz_defineMethod(c$, "rotateAxisAngleRadiansInternal", +function(radians, bsAtoms, m4, useModelKit){ +this.internalRotationAngle = radians; +this.vectorT.set(this.internalRotationAxis.x, this.internalRotationAxis.y, this.internalRotationAxis.z); +this.matrixRotate.rotate2(this.vectorT, this.vectorT2); +this.axisangleT.setVA(this.vectorT2, radians); +this.applyRotation(this.matrixTemp3.setAA(this.axisangleT), true, bsAtoms, this.internalTranslation, radians > 1e6, m4, useModelKit); +if (bsAtoms == null) this.getNewFixedRotationCenter(); +}, "~N,JU.BS,JU.M4,~B"); +Clazz_defineMethod(c$, "getNewFixedRotationCenter", +function(){ +this.axisangleT.setAA(this.internalRotationAxis); +this.axisangleT.angle = -this.internalRotationAngle; +this.matrixTemp4.setToAA(this.axisangleT); +this.vectorT.setT(this.internalRotationCenter); +this.pointT2.sub2(this.fixedRotationCenter, this.vectorT); +var pt = this.matrixTemp4.rotTrans2(this.pointT2, new JU.P3()); +pt.add(this.vectorT); +this.setRotationCenterAndRadiusXYZ(pt, false); +}); +Clazz_defineMethod(c$, "setTranslationFractions", +function(){ +this.xTranslationFraction = this.fixedTranslation.x / this.width; +this.yTranslationFraction = this.fixedTranslation.y / this.height; +}); +Clazz_defineMethod(c$, "centerAt", +function(x, y, pt){ +if (pt == null) { +this.translateXYBy(x, y); +return; +}if (this.windowCentered) this.vwr.setBooleanProperty("windowCentered", false); +this.fixedTranslation.x = x; +this.fixedTranslation.y = y; +this.setFixedRotationCenter(pt); +}, "~N,~N,JU.P3"); +Clazz_defineMethod(c$, "percentToPixels", +function(xyz, percent){ +switch ((xyz).charCodeAt(0)) { +case 120: +return Clazz_doubleToInt(Math.floor(percent / 100 * this.width)); +case 121: +return Clazz_doubleToInt(Math.floor(percent / 100 * this.height)); +case 122: +return Clazz_doubleToInt(Math.floor(percent / 100 * this.screenPixelCount)); +} +return 0; +}, "~S,~N"); +Clazz_defineMethod(c$, "angstromsToPixels", +function(distance){ +return this.scalePixelsPerAngstrom * distance; +}, "~N"); +Clazz_defineMethod(c$, "translateXYBy", +function(xDelta, yDelta){ +this.fixedTranslation.x += xDelta; +this.fixedTranslation.y += yDelta; +this.setTranslationFractions(); +}, "~N,~N"); +Clazz_defineMethod(c$, "setCamera", +function(x, y){ +this.cameraSetting.set(x, y, (x == 0 && y == 0 ? 0 : 1)); +}, "~N,~N"); +Clazz_defineMethod(c$, "translateToPercent", +function(type, percent){ +switch ((type).charCodeAt(0)) { +case 120: +this.xTranslationFraction = 0.5 + percent / 100; +this.fixedTranslation.x = this.width * this.xTranslationFraction; +return; +case 121: +this.yTranslationFraction = 0.5 + percent / 100; +this.fixedTranslation.y = this.height * this.yTranslationFraction; +return; +case 122: +if (this.mode == 1) this.setNavigationDepthPercent(percent); +return; +} +}, "~S,~N"); +Clazz_defineMethod(c$, "getTranslationXPercent", +function(){ +return (this.width == 0 ? 0 : (this.fixedTranslation.x - this.width / 2) * 100 / this.width); +}); +Clazz_defineMethod(c$, "getTranslationYPercent", +function(){ +return (this.height == 0 ? 0 : (this.fixedTranslation.y - this.height / 2) * 100 / this.height); +}); +Clazz_defineMethod(c$, "getTranslationScript", +function(){ +var info = ""; +var f = this.getTranslationXPercent(); +if (f != 0.0) info += "translate x " + f + ";"; +f = this.getTranslationYPercent(); +if (f != 0.0) info += "translate y " + f + ";"; +return info; +}); +Clazz_defineMethod(c$, "getOrientationText", +function(type, isBest){ +switch (type) { +case 4129: +return this.getMoveToText(1, false); +case 1073742132: +var q = this.getRotationQ(); +if (isBest) q = q.inv(); +return q.toString(); +case 1073742178: +var sb = new JU.SB(); +var d = this.getTranslationXPercent(); +JV.TransformManager.truncate2(sb, (isBest ? -d : d)); +d = this.getTranslationYPercent(); +JV.TransformManager.truncate2(sb, (isBest ? -d : d)); +return sb.toString(); +default: +return this.getMoveToText(1, true) + "\n#OR\n" + this.getRotateZyzText(true); +} +}, "~N,~B"); +Clazz_defineMethod(c$, "getRotationQ", +function(){ +return JU.Quat.newM(this.matrixRotate); +}); +Clazz_defineMethod(c$, "getOrientationInfo", +function(){ +var info = new java.util.Hashtable(); +info.put("moveTo", this.getMoveToText(1, false)); +info.put("center", "center " + this.getCenterText()); +info.put("centerPt", this.fixedRotationCenter); +var aa = new JU.A4(); +aa.setM(this.matrixRotate); +info.put("axisAngle", aa); +info.put("quaternion", this.getRotationQ().toPoint4f()); +info.put("rotationMatrix", this.matrixRotate); +info.put("rotateZYZ", this.getRotateZyzText(false)); +info.put("rotateXYZ", this.getRotateXyzText()); +info.put("transXPercent", Float.$valueOf(this.getTranslationXPercent())); +info.put("transYPercent", Float.$valueOf(this.getTranslationYPercent())); +info.put("zoom", Float.$valueOf(this.zmPct)); +info.put("modelRadius", Float.$valueOf(this.modelRadius)); +if (this.mode == 1) { +info.put("navigationCenter", "navigate center " + JU.Escape.eP(this.navigationCenter)); +info.put("navigationOffsetXPercent", Float.$valueOf(this.getNavigationOffsetPercent('X'))); +info.put("navigationOffsetYPercent", Float.$valueOf(this.getNavigationOffsetPercent('Y'))); +info.put("navigationDepthPercent", Float.$valueOf(this.navigationDepthPercent)); +}return info; +}); +Clazz_defineMethod(c$, "getRotation", +function(m){ +m.setM3(this.matrixRotate); +}, "JU.M3"); +Clazz_defineMethod(c$, "setZoomHeight", +function(zoomHeight, zoomLarge){ +this.zoomHeight = zoomHeight; +this.scaleFitToScreen(false, zoomLarge, false, true); +}, "~B,~B"); +Clazz_defineMethod(c$, "zoomBy", +function(pixels){ +if (pixels > 20) pixels = 20; + else if (pixels < -20) pixels = -20; +var deltaPercent = pixels * this.zmPctSet / 50; +if (deltaPercent == 0) deltaPercent = (pixels > 0 ? 1 : (deltaPercent < 0 ? -1 : 0)); +this.zoomRatio = (deltaPercent + this.zmPctSet) / this.zmPctSet; +this.zmPctSet += deltaPercent; +}, "~N"); +Clazz_defineMethod(c$, "zoomByFactor", +function(factor, x, y){ +if (factor <= 0 || !this.zoomEnabled) return; +if (this.mode != 1) { +this.zoomRatio = factor; +this.zmPctSet *= factor; +this.resetXYCenter(x, y); +} else if (this.getNav()) { +this.nav.zoomByFactor(factor, x, y); +}}, "~N,~N,~N"); +Clazz_defineMethod(c$, "zoomToPercent", +function(percentZoom){ +this.zmPctSet = percentZoom; +this.zoomRatio = 0; +}, "~N"); +Clazz_defineMethod(c$, "translateZBy", +function(pixels){ +if (pixels >= this.screenPixelCount) return; +var sppa = this.scalePixelsPerAngstrom / (1 - pixels * 1.0 / this.screenPixelCount); +if (sppa >= this.screenPixelCount) return; +var newZoomPercent = sppa / this.scaleDefaultPixelsPerAngstrom * 100; +this.zoomRatio = newZoomPercent / this.zmPctSet; +this.zmPctSet = newZoomPercent; +}, "~N"); +Clazz_defineMethod(c$, "resetXYCenter", +function(x, y){ +if (x == 2147483647 || y == 2147483647) return; +if (this.windowCentered) this.vwr.setBooleanProperty("windowCentered", false); +var pt = new JU.P3(); +this.transformPt3f(this.fixedRotationCenter, pt); +pt.set(x, y, pt.z); +this.unTransformPoint(pt, pt); +this.fixedTranslation.set(x, y, 0); +this.setFixedRotationCenter(pt); +}, "~N,~N"); +Clazz_defineMethod(c$, "zoomByPercent", +function(percentZoom){ +var deltaPercent = percentZoom * this.zmPctSet / 100; +if (deltaPercent == 0) deltaPercent = (percentZoom < 0) ? -1 : 1; +this.zoomRatio = (deltaPercent + this.zmPctSet) / this.zmPctSet; +this.zmPctSet += deltaPercent; +}, "~N"); +Clazz_defineMethod(c$, "setScaleAngstromsPerInch", +function(angstromsPerInch){ +this.scale3D = (angstromsPerInch > 0); +if (this.scale3D) this.scale3DAngstromsPerInch = angstromsPerInch; +this.perspectiveDepth = !this.scale3D; +}, "~N"); +Clazz_defineMethod(c$, "setSlabRange", +function(value){ +this.slabRange = value; +}, "~N"); +Clazz_defineMethod(c$, "setSlabEnabled", +function(slabEnabled){ +this.vwr.g.setB("slabEnabled", this.slabEnabled = slabEnabled); +}, "~B"); +Clazz_defineMethod(c$, "setZShadeEnabled", +function(zShadeEnabled){ +this.zShadeEnabled = zShadeEnabled; +this.vwr.g.setB("zShade", zShadeEnabled); +}, "~B"); +Clazz_defineMethod(c$, "setZoomEnabled", +function(zoomEnabled){ +this.zoomEnabled = zoomEnabled; +this.vwr.g.setB("zoomEnabled", zoomEnabled); +}, "~B"); +Clazz_defineMethod(c$, "slabReset", +function(){ +this.slabToPercent(100); +this.depthToPercent(0); +this.depthPlane = null; +this.slabPlane = null; +this.setSlabEnabled(false); +this.setZShadeEnabled(false); +this.slabDepthChanged(); +}); +Clazz_defineMethod(c$, "getSlabPercentSetting", +function(){ +return this.slabPercentSetting; +}); +Clazz_defineMethod(c$, "slabDepthChanged", +function(){ +this.vwr.g.setI("slab", this.slabPercentSetting); +this.vwr.g.setI("depth", this.depthPercentSetting); +this.finalizeTransformParameters(); +}); +Clazz_defineMethod(c$, "slabByPercentagePoints", +function(percentage){ +this.slabPlane = null; +if (percentage < 0 ? this.slabPercentSetting <= Math.max(0, this.depthPercentSetting) : this.slabPercentSetting >= 100) return; +this.slabPercentSetting += percentage; +this.slabDepthChanged(); +if (this.depthPercentSetting >= this.slabPercentSetting) this.depthPercentSetting = this.slabPercentSetting - 1; +}, "~N"); +Clazz_defineMethod(c$, "depthByPercentagePoints", +function(percentage){ +this.depthPlane = null; +if (percentage < 0 ? this.depthPercentSetting <= 0 : this.depthPercentSetting >= Math.min(100, this.slabPercentSetting)) return; +this.depthPercentSetting += percentage; +if (this.slabPercentSetting <= this.depthPercentSetting) this.slabPercentSetting = this.depthPercentSetting + 1; +this.slabDepthChanged(); +}, "~N"); +Clazz_defineMethod(c$, "slabDepthByPercentagePoints", +function(percentage){ +this.slabPlane = null; +this.depthPlane = null; +if (percentage < 0 ? this.slabPercentSetting <= Math.max(0, this.depthPercentSetting) : this.depthPercentSetting >= Math.min(100, this.slabPercentSetting)) return; +this.slabPercentSetting += percentage; +this.depthPercentSetting += percentage; +this.slabDepthChanged(); +}, "~N"); +Clazz_defineMethod(c$, "slabToPercent", +function(percentSlab){ +this.slabPlane = null; +this.vwr.setFloatProperty("slabRange", 0); +this.slabPercentSetting = percentSlab; +if (this.depthPercentSetting >= this.slabPercentSetting) this.depthPercentSetting = this.slabPercentSetting - 1; +this.slabDepthChanged(); +}, "~N"); +Clazz_defineMethod(c$, "depthToPercent", +function(percentDepth){ +this.depthPlane = null; +this.vwr.g.setI("depth", percentDepth); +this.depthPercentSetting = percentDepth; +if (this.slabPercentSetting <= this.depthPercentSetting) this.slabPercentSetting = this.depthPercentSetting + 1; +this.slabDepthChanged(); +}, "~N"); +Clazz_defineMethod(c$, "zSlabToPercent", +function(percentSlab){ +this.zSlabPercentSetting = percentSlab; +if (this.zDepthPercentSetting > this.zSlabPercentSetting) this.zDepthPercentSetting = percentSlab; +}, "~N"); +Clazz_defineMethod(c$, "zDepthToPercent", +function(percentDepth){ +this.zDepthPercentSetting = percentDepth; +if (this.zDepthPercentSetting > this.zSlabPercentSetting) this.zSlabPercentSetting = percentDepth; +}, "~N"); +Clazz_defineMethod(c$, "slabInternal", +function(plane, isDepth){ +if (isDepth) { +this.depthPlane = plane; +this.depthPercentSetting = 0; +} else { +this.slabPlane = plane; +this.slabPercentSetting = 100; +}this.slabDepthChanged(); +}, "JU.P4,~B"); +Clazz_defineMethod(c$, "setSlabDepthInternal", +function(isDepth){ +if (isDepth) this.depthPlane = null; + else this.slabPlane = null; +this.finalizeTransformParameters(); +this.slabInternal(this.getSlabDepthPlane(isDepth), isDepth); +}, "~B"); +Clazz_defineMethod(c$, "getSlabDepthPlane", +function(isDepth){ +if (isDepth) { +if (this.depthPlane != null) return this.depthPlane; +} else if (this.slabPlane != null) { +return this.slabPlane; +}var m = this.matrixTransform; +var plane = JU.P4.new4(-m.m20, -m.m21, -m.m22, -m.m23 + (isDepth ? this.depthValue : this.slabValue)); +return plane; +}, "~B"); +Clazz_defineMethod(c$, "getCameraFactors", +function(){ +this.aperatureAngle = (Math.atan2(this.screenPixelCount / 2, this.referencePlaneOffset) * 2 * 180 / 3.141592653589793); +this.cameraDistanceFromCenter = this.referencePlaneOffset / this.scalePixelsPerAngstrom; +var ptRef = JU.P3.new3(Clazz_doubleToInt(this.screenWidth / 2), Clazz_doubleToInt(this.screenHeight / 2), this.referencePlaneOffset); +this.unTransformPoint(ptRef, ptRef); +var ptCamera = JU.P3.new3(Clazz_doubleToInt(this.screenWidth / 2), Clazz_doubleToInt(this.screenHeight / 2), 0); +this.unTransformPoint(ptCamera, ptCamera); +ptCamera.sub(this.fixedRotationCenter); +var pt = JU.P3.new3(Clazz_doubleToInt(this.screenWidth / 2), Clazz_doubleToInt(this.screenHeight / 2), this.cameraDistanceFromCenter * this.scalePixelsPerAngstrom); +this.unTransformPoint(pt, pt); +pt.sub(this.fixedRotationCenter); +ptCamera.add(pt); +return Clazz_newArray(-1, [ptRef, ptCamera, this.fixedRotationCenter, JU.P3.new3(this.cameraDistanceFromCenter, this.aperatureAngle, this.scalePixelsPerAngstrom)]); +}); +Clazz_defineMethod(c$, "setPerspectiveDepth", +function(perspectiveDepth){ +if (this.perspectiveDepth == perspectiveDepth) return; +this.perspectiveDepth = perspectiveDepth; +this.vwr.g.setB("perspectiveDepth", perspectiveDepth); +this.resetFitToScreen(false); +}, "~B"); +Clazz_defineMethod(c$, "getPerspectiveDepth", +function(){ +return this.perspectiveDepth; +}); +Clazz_defineMethod(c$, "setCameraDepthPercent", +function(percent, resetSlab){ +this.resetNavigationPoint(resetSlab); +var screenMultiples = (percent < 0 ? -percent / 100 : percent); +if (screenMultiples == 0) return; +this.cameraDepthSetting = screenMultiples; +this.vwr.g.setF("cameraDepth", this.cameraDepthSetting); +this.cameraDepth = NaN; +}, "~N,~B"); +Clazz_defineMethod(c$, "getCameraDepth", +function(){ +return this.cameraDepthSetting; +}); +Clazz_defineMethod(c$, "setScreenParameters0", +function(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom){ +if (screenWidth == 2147483647) return; +this.screenWidth = screenWidth; +this.screenHeight = screenHeight; +this.useZoomLarge = useZoomLarge; +this.antialias = antialias; +this.width = (antialias ? screenWidth * 2 : screenWidth); +this.height = (antialias ? screenHeight * 2 : screenHeight); +this.scaleFitToScreen(false, useZoomLarge, resetSlab, resetZoom); +}, "~N,~N,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "setAntialias", +function(TF){ +var isNew = (this.antialias != TF); +this.antialias = TF; +this.width = (this.antialias ? this.screenWidth * 2 : this.screenWidth); +this.height = (this.antialias ? this.screenHeight * 2 : this.screenHeight); +if (isNew) this.scaleFitToScreen(false, this.useZoomLarge, false, false); +}, "~B"); +Clazz_defineMethod(c$, "defaultScaleToScreen", +function(radius){ +return this.screenPixelCount / 2 / radius; +}, "~N"); +Clazz_defineMethod(c$, "resetFitToScreen", +function(andCenter){ +this.scaleFitToScreen(andCenter, this.vwr.g.zoomLarge, true, true); +}, "~B"); +Clazz_defineMethod(c$, "scaleFitToScreen", +function(andCenter, zoomLarge, resetSlab, resetZoom){ +if (this.width == 0 || this.height == 0) { +this.screenPixelCount = 1; +} else { +this.fixedTranslation.set(this.width * (andCenter ? 0.5 : this.xTranslationFraction), this.height * (andCenter ? 0.5 : this.yTranslationFraction), 0); +this.setTranslationFractions(); +if (andCenter) this.camera.set(0, 0, 0); +if (resetZoom) this.resetNavigationPoint(resetSlab); +if (this.zoomHeight) zoomLarge = (this.height > this.width); +this.screenPixelCount = (zoomLarge == (this.height > this.width) ? this.height : this.width); +}if (this.screenPixelCount > 2) this.screenPixelCount -= 2; +this.scaleDefaultPixelsPerAngstrom = this.defaultScaleToScreen(this.modelRadius); +}, "~B,~B,~B,~B"); +Clazz_defineMethod(c$, "scaleToScreen", +function(z, milliAngstroms){ +if (milliAngstroms == 0 || z < 2) return 0; +var pixelSize = this.scaleToPerspective(z, milliAngstroms * this.scalePixelsPerAngstrom / 1000); +return (pixelSize > 0 ? pixelSize : 1); +}, "~N,~N"); +Clazz_defineMethod(c$, "unscaleToScreen", +function(z, screenDistance){ +var d = screenDistance / this.scalePixelsPerAngstrom; +return (this.perspectiveDepth ? d / this.getPerspectiveFactor(z) : d); +}, "~N,~N"); +Clazz_defineMethod(c$, "scaleToPerspective", +function(z, sizeAngstroms){ +return (this.perspectiveDepth ? sizeAngstroms * this.getPerspectiveFactor(z) : sizeAngstroms); +}, "~N,~N"); +Clazz_defineMethod(c$, "setNavigationMode", +function(TF){ +this.mode = (TF ? 1 : this.defaultMode); +this.resetNavigationPoint(true); +}, "~B"); +Clazz_defineMethod(c$, "isNavigating", +function(){ +return this.navigating || this.navOn; +}); +Clazz_defineMethod(c$, "finalizeTransformParameters", +function(){ +this.haveNotifiedNaN = false; +this.fixedRotationOffset.setT(this.fixedTranslation); +this.camera.setT(this.cameraSetting); +this.internalSlab = this.slabEnabled && (this.slabPlane != null || this.depthPlane != null); +var newZoom = this.getZoomSetting(); +if (this.zmPct != newZoom) { +this.zmPct = newZoom; +if (!this.vwr.g.fontCaching) this.vwr.gdata.clearFontCache(); +}this.calcCameraFactors(); +this.calcTransformMatrix(); +if (this.mode == 1) this.calcNavigationPoint(); + else this.calcSlabAndDepthValues(); +}); +Clazz_defineMethod(c$, "getZoomSetting", +function(){ +if (this.zmPctSet < 5) this.zmPctSet = 5; +if (this.zmPctSet > 200000) this.zmPctSet = 200000; +return (this.zoomEnabled || this.mode == 1 ? this.zmPctSet : 100); +}); +Clazz_defineMethod(c$, "calcSlabAndDepthValues", +function(){ +if (this.slabRange < 1) this.slabValue = this.zValueFromPercent(this.slabPercentSetting); + else this.slabValue = Clazz_doubleToInt(Math.floor(this.modelCenterOffset * this.slabRange / (2 * this.modelRadius) * (this.zmPctSet / 100))); +this.depthValue = this.zValueFromPercent(this.depthPercentSetting); +if (this.zSlabPercentSetting == this.zDepthPercentSetting) { +this.zSlabValue = this.slabValue; +this.zDepthValue = this.depthValue; +} else { +this.zSlabValue = this.zValueFromPercent(this.zSlabPercentSetting); +this.zDepthValue = this.zValueFromPercent(this.zDepthPercentSetting); +}if (this.zSlabPoint != null) { +try { +this.transformPt3f(this.zSlabPoint, this.pointT2); +this.zSlabValue = Clazz_floatToInt(this.pointT2.z); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}this.vwr.g.setO("_slabPlane", JU.Escape.eP4(this.getSlabDepthPlane(false))); +this.vwr.g.setO("_depthPlane", JU.Escape.eP4(this.getSlabDepthPlane(true))); +if (this.slabEnabled) return; +this.slabValue = 0; +this.depthValue = 2147483647; +}); +Clazz_defineMethod(c$, "zValueFromPercent", +function(zPercent){ +return Clazz_doubleToInt(Math.floor((1 - zPercent / 50) * this.modelRadiusPixels + this.modelCenterOffset)); +}, "~N"); +Clazz_defineMethod(c$, "calcTransformMatrix", +function(){ +this.matrixTransform.setIdentity(); +this.vectorTemp.sub2(this.frameOffset, this.fixedRotationCenter); +this.matrixTransform.setTranslation(this.vectorTemp); +this.matrixTemp.setToM3(this.stereoFrame ? this.matrixStereo : this.matrixRotate); +this.matrixTransform.mul2(this.matrixTemp, this.matrixTransform); +this.matrixTemp.setIdentity(); +this.matrixTemp.m00 = this.matrixTemp.m11 = this.matrixTemp.m22 = this.scalePixelsPerAngstrom; +this.matrixTemp.m11 = this.matrixTemp.m22 = -this.scalePixelsPerAngstrom; +this.matrixTransform.mul2(this.matrixTemp, this.matrixTransform); +this.matrixTransform.m23 += this.modelCenterOffset; +try { +this.matrixTransformInv.setM4(this.matrixTransform).invert(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("ERROR INVERTING matrixTransform!"); +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "rotatePoint", +function(pt, ptRot){ +this.matrixRotate.rotate2(pt, ptRot); +ptRot.y = -ptRot.y; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "getScreenTemp", +function(ptXYZ){ +this.matrixTransform.rotTrans2(ptXYZ, this.fScrPt); +}, "JU.T3"); +Clazz_defineMethod(c$, "transformPtScr", +function(ptXYZ, pointScreen){ +pointScreen.setT(this.transformPt(ptXYZ)); +}, "JU.T3,JU.P3i"); +Clazz_defineMethod(c$, "transformPtScrT3", +function(ptXYZ, pointScreen){ +this.transformPt(ptXYZ); +pointScreen.setT(this.fScrPt); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "transformPt3f", +function(ptXYZ, screen){ +this.applyPerspective(ptXYZ, ptXYZ); +screen.setT(this.fScrPt); +}, "JU.T3,JU.P3"); +Clazz_defineMethod(c$, "transformPtNoClip", +function(ptXYZ, pointScreen){ +this.applyPerspective(ptXYZ, null); +pointScreen.setT(this.fScrPt); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "transformPt", +function(ptXYZ){ +return this.applyPerspective(ptXYZ, this.internalSlab ? ptXYZ : null); +}, "JU.T3"); +Clazz_defineMethod(c$, "transformPtVib", +function(ptXYZ, v){ +this.ptVibTemp.setT(ptXYZ); +return this.applyPerspective(this.getVibrationPoint(v, this.ptVibTemp, NaN), ptXYZ); +}, "JU.P3,JU.Vibration"); +Clazz_defineMethod(c$, "getVibrationPoint", +function(v, pt, scale){ +return v.setCalcPoint(pt, this.vibrationT, (Float.isNaN(scale) ? this.vibrationScale : scale), this.vwr.g.modulationScale); +}, "JU.Vibration,JU.T3,~N"); +Clazz_defineMethod(c$, "transformPt2Df", +function(v, pt){ +if (v.z == -3.4028235E38 || v.z == 3.4028235E38) { +this.transformPt2D(v); +pt.set(this.iScrPt.x, this.iScrPt.y, this.iScrPt.z); +} else { +this.transformPt3f(v, pt); +}}, "JU.T3,JU.P3"); +Clazz_defineMethod(c$, "transformPtScrT32D", +function(v, pt){ +if (v.z == -3.4028235E38 || v.z == 3.4028235E38) { +this.transformPt2D(v); +pt.set(this.iScrPt.x, this.iScrPt.y, this.iScrPt.z); +} else { +this.transformPtScrT3(v, pt); +}}, "JU.T3,JU.P3"); +Clazz_defineMethod(c$, "transformPt2D", +function(ptXyp){ +if (ptXyp.z == -3.4028235E38) { +this.iScrPt.x = Clazz_doubleToInt(Math.floor(ptXyp.x / 100 * this.screenWidth)); +this.iScrPt.y = Clazz_doubleToInt(Math.floor((1 - ptXyp.y / 100) * this.screenHeight)); +} else { +this.iScrPt.x = Clazz_floatToInt(ptXyp.x); +this.iScrPt.y = (this.screenHeight - Clazz_floatToInt(ptXyp.y)); +}if (this.antialias) { +this.iScrPt.x <<= 1; +this.iScrPt.y <<= 1; +}this.matrixTransform.rotTrans2(this.fixedRotationCenter, this.fScrPt); +this.iScrPt.z = Clazz_floatToInt(this.fScrPt.z); +return this.iScrPt; +}, "JU.T3"); +Clazz_defineMethod(c$, "applyPerspective", +function(ptXYZ, ptRef){ +this.getScreenTemp(ptXYZ); +var z = this.fScrPt.z; +if (Float.isNaN(z)) { +if (!this.haveNotifiedNaN && JU.Logger.debugging) JU.Logger.debug("NaN seen in TransformPoint"); +this.haveNotifiedNaN = true; +z = this.fScrPt.z = 1; +} else if (z <= 0) { +z = this.fScrPt.z = 1; +}switch (this.mode) { +case 1: +this.fScrPt.x -= this.navigationShiftXY.x; +this.fScrPt.y -= this.navigationShiftXY.y; +break; +case 2: +this.fScrPt.x += this.perspectiveShiftXY.x; +this.fScrPt.y += this.perspectiveShiftXY.y; +break; +} +if (this.perspectiveDepth) { +var factor = this.getPerspectiveFactor(z); +this.fScrPt.x *= factor; +this.fScrPt.y *= factor; +}switch (this.mode) { +case 1: +this.fScrPt.x += this.navigationOffset.x; +this.fScrPt.y += this.navigationOffset.y; +break; +case 2: +this.fScrPt.x -= this.perspectiveShiftXY.x; +this.fScrPt.y -= this.perspectiveShiftXY.y; +case 0: +this.fScrPt.x += this.fixedRotationOffset.x; +this.fScrPt.y += this.fixedRotationOffset.y; +break; +} +if (Float.isNaN(this.fScrPt.x) && !this.haveNotifiedNaN) { +if (JU.Logger.debugging) JU.Logger.debug("NaN found in transformPoint "); +this.haveNotifiedNaN = true; +}this.iScrPt.set(Clazz_floatToInt(this.fScrPt.x), Clazz_floatToInt(this.fScrPt.y), Clazz_floatToInt(this.fScrPt.z)); +if (ptRef != null && this.xyzIsSlabbedInternal(ptRef)) this.fScrPt.z = this.iScrPt.z = 1; +return this.iScrPt; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "xyzIsSlabbedInternal", +function(ptRef){ +return (this.slabPlane != null && ptRef.x * this.slabPlane.x + ptRef.y * this.slabPlane.y + ptRef.z * this.slabPlane.z + this.slabPlane.w > 0 || this.depthPlane != null && ptRef.x * this.depthPlane.x + ptRef.y * this.depthPlane.y + ptRef.z * this.depthPlane.z + this.depthPlane.w < 0); +}, "JU.T3"); +Clazz_defineMethod(c$, "move", +function(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps){ +this.movetoThread = J.api.Interface.getOption("thread.MoveToThread", this.vwr, "tm"); +this.movetoThread.setManager(this, this.vwr, Clazz_newArray(-1, [dRot, dTrans, Clazz_newFloatArray(-1, [dZoom, dSlab, floatSecondsTotal, fps])])); +if (floatSecondsTotal > 0) this.movetoThread.setEval(eval); +this.movetoThread.run(); +}, "J.api.JmolScriptEvaluator,JU.V3,~N,JU.V3,~N,~N,~N"); +Clazz_defineMethod(c$, "isInPosition", +function(axis, degrees){ +if (Float.isNaN(degrees)) return true; +this.aaTest1.setVA(axis, (degrees / 57.29577951308232)); +this.ptTest1.set(4.321, 1.23456, 3.14159); +this.getRotation(this.matrixTest); +this.matrixTest.rotate2(this.ptTest1, this.ptTest2); +this.matrixTest.setAA(this.aaTest1).rotate2(this.ptTest1, this.ptTest3); +return (this.ptTest3.distance(this.ptTest2) < 0.1); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "moveToPyMOL", +function(eval, floatSecondsTotal, pymolView){ +var m3 = JU.M3.newA9(pymolView); +m3.invert(); +var cameraX = pymolView[9]; +var cameraY = -pymolView[10]; +var pymolDistanceToCenter = -pymolView[11]; +var center = JU.P3.new3(pymolView[12], pymolView[13], pymolView[14]); +var pymolDistanceToSlab = pymolView[15]; +var pymolDistanceToDepth = pymolView[16]; +var fov = pymolView[17]; +var isOrtho = (fov >= 0); +this.setPerspectiveDepth(!isOrtho); +var theta = Math.abs(fov) / 2; +var tan = Math.tan(theta * 3.141592653589793 / 180); +var rotationRadius = pymolDistanceToCenter * tan; +var jmolCameraToCenter = 0.5 / tan; +var cameraDepth = jmolCameraToCenter - 0.5; +var f = 50 / rotationRadius; +if (pymolDistanceToSlab > 0) { +var slab = 50 + Clazz_floatToInt((pymolDistanceToCenter - pymolDistanceToSlab) * f); +var depth = 50 + Clazz_floatToInt((pymolDistanceToCenter - pymolDistanceToDepth) * f); +this.setSlabEnabled(true); +this.slabToPercent(slab); +this.depthToPercent(depth); +if (pymolView.length == 21) { +var depthCue = (pymolView[18] != 0); +var fog = (pymolView[19] != 0); +var fogStart = pymolView[20]; +this.setZShadeEnabled(depthCue); +if (depthCue) { +if (fog) { +this.vwr.setIntProperty("zSlab", Clazz_floatToInt(Math.min(100, slab + fogStart * (depth - slab)))); +} else { +this.vwr.setIntProperty("zSlab", Clazz_floatToInt((slab + depth) / 2)); +}this.vwr.setIntProperty("zDepth", depth); +}}}this.moveTo(eval, floatSecondsTotal, center, null, 0, m3, 100, NaN, NaN, rotationRadius, null, NaN, NaN, NaN, cameraDepth, cameraX, cameraY); +return true; +}, "J.api.JmolScriptEvaluator,~N,~A"); +Clazz_defineMethod(c$, "moveTo", +function(eval, floatSecondsTotal, center, rotAxis, degrees, matrixEnd, zoom, xTrans, yTrans, newRotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY){ +if (matrixEnd == null) { +matrixEnd = new JU.M3(); +var axis = JU.V3.newV(rotAxis); +if (Float.isNaN(degrees)) { +matrixEnd.m00 = NaN; +} else if (degrees < 0.01 && degrees > -0.01) { +matrixEnd.setScale(1); +} else { +if (axis.x == 0 && axis.y == 0 && axis.z == 0) { +return; +}var aaMoveTo = new JU.A4(); +aaMoveTo.setVA(axis, (degrees / 57.29577951308232)); +matrixEnd.setAA(aaMoveTo); +}}if (cameraX == this.cameraSetting.x) cameraX = NaN; +if (cameraY == this.cameraSetting.y) cameraY = NaN; +if (cameraDepth == this.cameraDepth) cameraDepth = NaN; +if (!Float.isNaN(cameraX)) xTrans = cameraX * 50 / newRotationRadius / this.width * this.screenPixelCount; +if (!Float.isNaN(cameraY)) yTrans = cameraY * 50 / newRotationRadius / this.height * this.screenPixelCount; +var pixelScale = (center == null ? this.scaleDefaultPixelsPerAngstrom : this.defaultScaleToScreen(newRotationRadius)); +if (floatSecondsTotal <= 0) { +this.setAll(center, matrixEnd, navCenter, zoom, xTrans, yTrans, newRotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY); +this.vwr.moveUpdate(floatSecondsTotal); +this.vwr.finalizeTransformParameters(); +return; +}try { +if (this.movetoThread == null) this.movetoThread = J.api.Interface.getOption("thread.MoveToThread", this.vwr, "tm"); +var nSteps = this.movetoThread.setManager(this, this.vwr, Clazz_newArray(-1, [center, matrixEnd, navCenter, Clazz_newFloatArray(-1, [floatSecondsTotal, zoom, xTrans, yTrans, newRotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY])])); +if (nSteps <= 0 || this.vwr.g.waitForMoveTo) { +if (nSteps > 0) this.movetoThread.setEval(eval); +this.movetoThread.run(); +if (!this.vwr.isSingleThreaded) this.movetoThread = null; +} else { +this.movetoThread.start(); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "J.api.JmolScriptEvaluator,~N,JU.P3,JU.T3,~N,JU.M3,~N,~N,~N,~N,JU.P3,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAll", +function(center, m, navCenter, zoom, xTrans, yTrans, rotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY){ +if (!Float.isNaN(m.m00)) this.setRotation(m); +if (center != null) this.moveRotationCenter(center, !this.windowCentered); +if (navCenter != null && this.mode == 1) this.navigationCenter.setT(navCenter); +if (!Float.isNaN(cameraDepth)) this.setCameraDepthPercent(cameraDepth, false); +if (!Float.isNaN(cameraX) && !Float.isNaN(cameraY)) this.setCamera(cameraX, cameraY); +if (!Float.isNaN(zoom)) this.zoomToPercent(zoom); +if (!Float.isNaN(rotationRadius)) this.modelRadius = rotationRadius; +if (!Float.isNaN(pixelScale)) this.scaleDefaultPixelsPerAngstrom = pixelScale; +if (!Float.isNaN(xTrans) && !Float.isNaN(yTrans)) { +this.translateToPercent('x', xTrans); +this.translateToPercent('y', yTrans); +}if (this.mode == 1) { +if (!Float.isNaN(xNav) && !Float.isNaN(yNav)) this.navTranslatePercentOrTo(0, xNav, yNav); +if (!Float.isNaN(navDepth)) this.setNavigationDepthPercent(navDepth); +}}, "JU.P3,JU.M3,JU.P3,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "stopMotion", +function(){ +this.movetoThread = null; +}); +Clazz_defineMethod(c$, "getRotationText", +function(){ +this.axisangleT.setM(this.matrixRotate); +var degrees = (this.axisangleT.angle * 57.29577951308232); +var sb = new JU.SB(); +this.vectorT.set(this.axisangleT.x, this.axisangleT.y, this.axisangleT.z); +if (degrees < 0.01) return "{0 0 1 0}"; +this.vectorT.normalize(); +this.vectorT.scale(1000); +sb.append("{"); +JV.TransformManager.truncate0(sb, this.vectorT.x); +JV.TransformManager.truncate0(sb, this.vectorT.y); +JV.TransformManager.truncate0(sb, this.vectorT.z); +JV.TransformManager.truncate2(sb, degrees); +sb.append("}"); +return sb.toString(); +}); +Clazz_defineMethod(c$, "getMoveToText", +function(timespan, addComments){ +this.finalizeTransformParameters(); +var sb = new JU.SB(); +sb.append("moveto "); +if (addComments) sb.append("/* time, axisAngle */ "); +sb.appendF(timespan); +sb.append(" ").append(this.getRotationText()); +if (addComments) sb.append(" /* zoom, translation */ "); +JV.TransformManager.truncate2(sb, this.zmPctSet); +JV.TransformManager.truncate2(sb, this.getTranslationXPercent()); +JV.TransformManager.truncate2(sb, this.getTranslationYPercent()); +sb.append(" "); +if (addComments) sb.append(" /* center, rotationRadius */ "); +sb.append(this.getCenterText()); +sb.append(" ").appendF(this.modelRadius); +sb.append(this.getNavigationText(addComments)); +if (addComments) sb.append(" /* cameraDepth, cameraX, cameraY */ "); +JV.TransformManager.truncate2(sb, this.cameraDepth); +JV.TransformManager.truncate2(sb, this.cameraSetting.x); +JV.TransformManager.truncate2(sb, this.cameraSetting.y); +sb.append(";"); +return sb.toString(); +}, "~N,~B"); +Clazz_defineMethod(c$, "getCenterText", +function(){ +return JU.Escape.eP(this.fixedRotationCenter); +}); +Clazz_defineMethod(c$, "getRotateXyzText", +function(){ +var sb = new JU.SB(); +var m20 = this.matrixRotate.m20; +var rY = -(Math.asin(m20) * 57.29577951308232); +var rX; +var rZ; +if (m20 > .999 || m20 < -0.999) { +rX = -(Math.atan2(this.matrixRotate.m12, this.matrixRotate.m11) * 57.29577951308232); +rZ = 0; +} else { +rX = (Math.atan2(this.matrixRotate.m21, this.matrixRotate.m22) * 57.29577951308232); +rZ = (Math.atan2(this.matrixRotate.m10, this.matrixRotate.m00) * 57.29577951308232); +}sb.append("reset"); +sb.append(";center ").append(this.getCenterText()); +if (rX != 0) { +sb.append("; rotate x"); +JV.TransformManager.truncate2(sb, rX); +}if (rY != 0) { +sb.append("; rotate y"); +JV.TransformManager.truncate2(sb, rY); +}if (rZ != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ); +}sb.append(";"); +this.addZoomTranslationNavigationText(sb); +return sb.toString(); +}); +Clazz_defineMethod(c$, "addZoomTranslationNavigationText", +function(sb){ +if (this.zmPct != 100) { +sb.append(" zoom"); +JV.TransformManager.truncate2(sb, this.zmPct); +sb.append(";"); +}var tX = this.getTranslationXPercent(); +if (tX != 0) { +sb.append(" translate x"); +JV.TransformManager.truncate2(sb, tX); +sb.append(";"); +}var tY = this.getTranslationYPercent(); +if (tY != 0) { +sb.append(" translate y"); +JV.TransformManager.truncate2(sb, tY); +sb.append(";"); +}if (this.modelRadius != this.rotationRadiusDefault || this.modelRadius == 10) { +sb.append(" set rotationRadius"); +JV.TransformManager.truncate2(sb, this.modelRadius); +sb.append(";"); +}if (this.mode == 1) { +sb.append("navigate 0 center ").append(JU.Escape.eP(this.navigationCenter)); +sb.append(";navigate 0 translate"); +JV.TransformManager.truncate2(sb, this.getNavigationOffsetPercent('X')); +JV.TransformManager.truncate2(sb, this.getNavigationOffsetPercent('Y')); +sb.append(";navigate 0 depth "); +JV.TransformManager.truncate2(sb, this.navigationDepthPercent); +sb.append(";"); +}}, "JU.SB"); +Clazz_defineMethod(c$, "getRotateZyzText", +function(iAddComment){ +var sb = new JU.SB(); +var m = this.vwr.ms.getInfoM("defaultOrientationMatrix"); +if (m == null) { +m = this.matrixRotate; +} else { +m = JU.M3.newM3(m); +m.invert(); +m.mul2(this.matrixRotate, m); +}var m22 = m.m22; +var rY = (Math.acos(m22) * 57.29577951308232); +var rZ1; +var rZ2; +if (m22 > .999 || m22 < -0.999) { +rZ1 = (Math.atan2(m.m10, m.m11) * 57.29577951308232); +rZ2 = 0; +} else { +rZ1 = (Math.atan2(m.m21, -m.m20) * 57.29577951308232); +rZ2 = (Math.atan2(m.m12, m.m02) * 57.29577951308232); +}if (rZ1 != 0 && rY != 0 && rZ2 != 0 && iAddComment) sb.append("#Follows Z-Y-Z convention for Euler angles\n"); +sb.append("reset"); +sb.append(";center ").append(this.getCenterText()); +if (rZ1 != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ1); +}if (rY != 0) { +sb.append("; rotate y"); +JV.TransformManager.truncate2(sb, rY); +}if (rZ2 != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ2); +}sb.append(";"); +this.addZoomTranslationNavigationText(sb); +return sb.toString(); +}, "~B"); +c$.truncate0 = Clazz_defineMethod(c$, "truncate0", +function(sb, val){ +sb.appendC(' '); +sb.appendI(Math.round(val)); +}, "JU.SB,~N"); +c$.truncate2 = Clazz_defineMethod(c$, "truncate2", +function(sb, val){ +sb.appendC(' '); +sb.appendF(Math.round(val * 100) / 100); +}, "JU.SB,~N"); +Clazz_defineMethod(c$, "setSpinXYZ", +function(x, y, z){ +if (!Float.isNaN(x)) this.spinX = x; +if (!Float.isNaN(y)) this.spinY = y; +if (!Float.isNaN(z)) this.spinZ = z; +if (this.isSpinInternal || this.isSpinFixed) this.clearSpin(); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setSpinFps", +function(value){ +if (value <= 0) value = 1; + else if (value > 50) value = 50; +this.spinFps = value; +}, "~N"); +Clazz_defineMethod(c$, "setNavXYZ", +function(x, y, z){ +if (!Float.isNaN(x)) this.navX = x; +if (!Float.isNaN(y)) this.navY = y; +if (!Float.isNaN(z)) this.navZ = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "clearSpin", +function(){ +this.setSpinOff(); +this.setNavOn(false); +this.isSpinInternal = false; +this.isSpinFixed = false; +}); +Clazz_defineMethod(c$, "setSpinOn", +function(){ +this.setSpin(null, true, 3.4028235E38, null, null, null, false); +}); +Clazz_defineMethod(c$, "setSpinOff", +function(){ +this.setSpin(null, false, 3.4028235E38, null, null, null, false); +}); +Clazz_defineMethod(c$, "setSpin", +function(eval, spinOn, endDegrees, endPositions, dihedralList, bsAtoms, isGesture){ +if (this.navOn && spinOn) this.setNavOn(false); +if (this.spinOn == spinOn) return; +this.spinOn = spinOn; +this.vwr.g.setB("_spinning", spinOn); +if (spinOn) { +if (this.spinThread == null) { +this.spinThread = J.api.Interface.getOption("thread.SpinThread", this.vwr, "tm"); +this.spinThread.setManager(this, this.vwr, Clazz_newArray(-1, [Float.$valueOf(endDegrees), endPositions, dihedralList, bsAtoms, isGesture ? Boolean.TRUE : null])); +this.spinIsGesture = isGesture; +if ((Float.isNaN(endDegrees) || endDegrees == 3.4028235E38 || !this.vwr.g.waitForMoveTo)) { +this.spinThread.start(); +} else { +this.spinThread.setEval(eval); +this.spinThread.run(); +}}} else if (this.spinThread != null) { +this.spinThread.reset(); +this.spinThread = null; +}}, "J.api.JmolScriptEvaluator,~B,~N,JU.Lst,~A,JU.BS,~B"); +Clazz_defineMethod(c$, "setNavOn", +function(navOn){ +if (Float.isNaN(this.navFps)) return; +var wasOn = this.navOn; +if (navOn && this.spinOn) this.setSpin(null, false, 0, null, null, null, false); +this.navOn = navOn; +this.vwr.g.setB("_navigating", navOn); +if (!navOn) this.navInterrupt(); +if (navOn) { +if (this.navX == 0 && this.navY == 0 && this.navZ == 0) this.navZ = 1; +if (this.navFps == 0) this.navFps = 10; +if (this.spinThread == null) { +this.spinThread = J.api.Interface.getOption("thread.SpinThread", this.vwr, "tm"); +this.spinThread.setManager(this, this.vwr, null); +this.spinThread.start(); +}} else if (wasOn) { +if (this.spinThread != null) { +this.spinThread.interrupt(); +this.spinThread = null; +}}}, "~B"); +Clazz_defineMethod(c$, "setVibrationScale", +function(scale){ +this.vibrationScale = scale; +}, "~N"); +Clazz_defineMethod(c$, "setVibrationPeriod", +function(period){ +if (Float.isNaN(period)) { +period = this.vibrationPeriod; +} else if (period == 0) { +this.vibrationPeriod = 0; +this.vibrationPeriodMs = 0; +} else { +this.vibrationPeriod = Math.abs(period); +this.vibrationPeriodMs = Clazz_floatToInt(this.vibrationPeriod * 1000); +if (period > 0) return; +period = -period; +}this.setVibrationOn(period > 0 && (this.vwr.ms.getLastVibrationVector(this.vwr.am.cmi, 0) >= 0)); +}, "~N"); +Clazz_defineMethod(c$, "setVibrationT", +function(t){ +this.vibrationT.x = this.vibrationT.y = this.vibrationT.z = t; +if (this.vibrationScale == 0) this.vibrationScale = this.vwr.g.vibrationScale; +}, "~N"); +Clazz_defineMethod(c$, "isVibrationOn", +function(){ +return this.vibrationOn; +}); +Clazz_defineMethod(c$, "setVibrationOn", +function(vibrationOn){ +if (!vibrationOn) { +if (this.vibrationThread != null) { +this.vibrationThread.interrupt(); +this.vibrationThread = null; +}this.vibrationOn = false; +this.vibrationT.x = 0; +return; +}if (this.vwr.ms.mc < 1) { +this.vibrationOn = false; +this.vibrationT.x = 0; +return; +}if (this.vibrationThread == null) { +this.vibrationThread = J.api.Interface.getOption("thread.VibrationThread", this.vwr, "tm"); +this.vibrationThread.setManager(this, this.vwr, null); +this.vibrationThread.start(); +}this.vibrationOn = true; +}, "~B"); +Clazz_defineMethod(c$, "clearVibration", +function(){ +this.setVibrationOn(false); +this.vibrationScale = 0; +}); +Clazz_defineMethod(c$, "setStereoMode2", +function(twoColors){ +this.stereoMode = J.c.STER.CUSTOM; +this.stereoColors = twoColors; +}, "~A"); +Clazz_defineMethod(c$, "setStereoMode", +function(stereoMode){ +this.stereoColors = null; +this.stereoMode = stereoMode; +this.stereoDoubleDTI = (stereoMode === J.c.STER.DTI); +this.stereoDoubleFull = (stereoMode === J.c.STER.DOUBLE); +}, "J.c.STER"); +Clazz_defineMethod(c$, "setStereoDegrees", +function(stereoDegrees){ +this.stereoDegrees = stereoDegrees; +this.stereoRadians = (stereoDegrees * 0.017453292519943295); +}, "~N"); +Clazz_defineMethod(c$, "getStereoRotationMatrix", +function(stereoFrame){ +this.stereoFrame = stereoFrame; +if (!stereoFrame) return this.matrixRotate; +this.matrixTemp3.setAsYRotation(-this.stereoRadians); +this.matrixStereo.mul2(this.matrixTemp3, this.matrixRotate); +return this.matrixStereo; +}, "~B"); +Clazz_defineMethod(c$, "isWindowCentered", +function(){ +return this.windowCentered; +}); +Clazz_defineMethod(c$, "setWindowCentered", +function(TF){ +this.windowCentered = TF; +this.resetNavigationPoint(true); +}, "~B"); +Clazz_defineMethod(c$, "setRotationRadius", +function(angstroms, doAll){ +angstroms = (this.modelRadius = (angstroms <= 0 ? this.vwr.ms.calcRotationRadius(this.vwr.am.cmi, this.fixedRotationCenter, true) : angstroms)); +if (doAll) this.vwr.setRotationRadius(angstroms, false); +return angstroms; +}, "~N,~B"); +Clazz_defineMethod(c$, "setRotationCenterAndRadiusXYZ", +function(newCenterOfRotation, andRadius){ +this.resetNavigationPoint(false); +if (newCenterOfRotation == null) { +this.setFixedRotationCenter(this.rotationCenterDefault); +this.modelRadius = this.rotationRadiusDefault; +return; +}this.setFixedRotationCenter(newCenterOfRotation); +if (andRadius && this.windowCentered) this.modelRadius = this.vwr.ms.calcRotationRadius(this.vwr.am.cmi, this.fixedRotationCenter, true); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "setNewRotationCenter", +function(center, doScale){ +if (center == null) center = this.rotationCenterDefault; +if (this.windowCentered) { +this.translateToPercent('x', 0); +this.translateToPercent('y', 0); +this.setRotationCenterAndRadiusXYZ(center, true); +if (doScale) this.resetFitToScreen(true); +} else { +this.moveRotationCenter(center, true); +}}, "JU.P3,~B"); +Clazz_defineMethod(c$, "moveRotationCenter", +function(center, toXY){ +this.setRotationCenterAndRadiusXYZ(center, false); +if (toXY) this.setRotationPointXY(this.fixedRotationCenter); +}, "JU.P3,~B"); +Clazz_defineMethod(c$, "setCenter", +function(){ +this.setRotationCenterAndRadiusXYZ(this.fixedRotationCenter, true); +}); +Clazz_defineMethod(c$, "setCenterAt", +function(relativeTo, pt){ +var pt1 = JU.P3.newP(pt); +switch (relativeTo) { +case 1073741826: +break; +case 96: +pt1.add(this.vwr.ms.getAverageAtomPoint()); +break; +case 1812599299: +pt1.add(this.vwr.getBoundBoxCenter()); +break; +default: +pt1.setT(this.rotationCenterDefault); +break; +} +this.setRotationCenterAndRadiusXYZ(pt1, true); +this.resetFitToScreen(true); +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "setFrameOffset", +function(modelIndex){ +if (this.frameOffsets == null || modelIndex < 0 || modelIndex >= this.frameOffsets.length) this.frameOffset.set(0, 0, 0); + else this.frameOffset.setT(this.frameOffsets[modelIndex]); +}, "~N"); +Clazz_defineMethod(c$, "setSelectedTranslation", +function(bsAtoms, xyz, xy, x){ +if (!this.perspectiveDepth) { +var v = new JU.V3(); +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +v.set(x, 0, 0); +break; +case 89: +case 121: +v.set(0, x, 0); +break; +case 90: +case 122: +v.set(0, 0, x); +break; +} +this.vwr.moveAtoms(null, null, this.matrixRotate, v, this.internalRotationCenter, false, bsAtoms, true, false); +return; +}this.bsSelectedAtoms = bsAtoms; +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +this.ptOffset.x += xy; +break; +case 89: +case 121: +this.ptOffset.y += xy; +break; +case 90: +case 122: +this.ptOffset.z += xy; +break; +} +}, "JU.BS,~S,~N,~N"); +Clazz_defineMethod(c$, "setNavFps", +function(navFps){ +this.navFps = navFps; +}, "~N"); +Clazz_defineMethod(c$, "calcCameraFactors", +function(){ +if (Float.isNaN(this.cameraDepth)) { +this.cameraDepth = this.cameraDepthSetting; +this.zoomFactor = 3.4028235E38; +}this.cameraDistance = this.cameraDepth * this.screenPixelCount; +this.referencePlaneOffset = this.cameraDistance + this.screenPixelCount / 2; +this.scalePixelsPerAngstrom = (this.scale3D && !this.perspectiveDepth && this.mode != 1 ? 72 / this.scale3DAngstromsPerInch * (this.antialias ? 2 : 1) : this.screenPixelCount / this.visualRangeAngstroms); +if (this.mode != 1) this.mode = (this.camera.z == 0 ? 0 : 2); +this.perspectiveShiftXY.set(this.camera.z == 0 ? 0 : this.camera.x * this.scalePixelsPerAngstrom / this.screenWidth * 100, this.camera.z == 0 ? 0 : this.camera.y * this.scalePixelsPerAngstrom / this.screenHeight * 100, 0); +this.modelRadiusPixels = this.modelRadius * this.scalePixelsPerAngstrom; +var offset100 = (2 * this.modelRadius) / this.visualRangeAngstroms * this.referencePlaneOffset; +if (this.mode == 1) { +this.calcNavCameraFactors(offset100); +return; +}this.zoomFactor = 3.4028235E38; +this.modelCenterOffset = this.referencePlaneOffset; +if (!this.scale3D || this.perspectiveDepth) this.scalePixelsPerAngstrom *= (this.modelCenterOffset / offset100) * this.zmPct / 100; +this.modelRadiusPixels = this.modelRadius * this.scalePixelsPerAngstrom; +}); +Clazz_defineMethod(c$, "calcNavCameraFactors", +function(offset100){ +if (this.zoomFactor == 3.4028235E38) { +if (this.zmPct > 10000) this.zmPct = 10000; +this.modelCenterOffset = offset100 * 100 / this.zmPct; +} else if (this.prevZoomSetting != this.zmPctSet) { +if (this.zoomRatio == 0) this.modelCenterOffset = offset100 * 100 / this.zmPctSet; + else this.modelCenterOffset += (1 - this.zoomRatio) * this.referencePlaneOffset; +this.navMode = -1; +}this.prevZoomSetting = this.zmPctSet; +this.zoomFactor = this.modelCenterOffset / this.referencePlaneOffset; +this.zmPct = (this.zoomFactor == 0 ? 10000 : offset100 / this.modelCenterOffset * 100); +}, "~N"); +Clazz_defineMethod(c$, "getPerspectiveFactor", +function(z){ +return (z <= 0 ? this.referencePlaneOffset : this.referencePlaneOffset / z); +}, "~N"); +Clazz_defineMethod(c$, "unTransformPoint", +function(screenPt, coordPt){ +this.untransformedPoint.setT(screenPt); +switch (this.mode) { +case 1: +this.untransformedPoint.x -= this.navigationOffset.x; +this.untransformedPoint.y -= this.navigationOffset.y; +break; +case 2: +this.fScrPt.x += this.perspectiveShiftXY.x; +this.fScrPt.y += this.perspectiveShiftXY.y; +case 0: +this.untransformedPoint.x -= this.fixedRotationOffset.x; +this.untransformedPoint.y -= this.fixedRotationOffset.y; +} +if (this.perspectiveDepth) { +var factor = this.getPerspectiveFactor(this.untransformedPoint.z); +this.untransformedPoint.x /= factor; +this.untransformedPoint.y /= factor; +}switch (this.mode) { +case 1: +this.untransformedPoint.x += this.navigationShiftXY.x; +this.untransformedPoint.y += this.navigationShiftXY.y; +break; +case 2: +this.untransformedPoint.x -= this.perspectiveShiftXY.x; +this.untransformedPoint.y -= this.perspectiveShiftXY.y; +break; +} +this.matrixTransformInv.rotTrans2(this.untransformedPoint, coordPt); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "resetNavigationPoint", +function(doResetSlab){ +if (this.zmPct < 5 && this.mode != 1) { +this.perspectiveDepth = true; +this.mode = 1; +return; +}if (this.mode == 1) { +this.navMode = 1; +this.slabPercentSetting = 0; +this.perspectiveDepth = true; +} else if (doResetSlab) { +this.slabPercentSetting = 100; +}this.vwr.setFloatProperty("slabRange", 0); +if (doResetSlab) { +this.setSlabEnabled(this.mode == 1); +}this.zoomFactor = 3.4028235E38; +this.zmPctSet = this.zmPct; +}, "~B"); +Clazz_defineMethod(c$, "setNavigatePt", +function(pt){ +this.navigationCenter.setT(pt); +this.navMode = 3; +this.navigating = true; +this.finalizeTransformParameters(); +this.navigating = false; +}, "JU.P3"); +Clazz_defineMethod(c$, "setNavigationSlabOffsetPercent", +function(percent){ +this.vwr.g.setF("navigationSlab", percent); +this.calcCameraFactors(); +this.navigationSlabOffset = percent / 50 * this.modelRadiusPixels; +}, "~N"); +Clazz_defineMethod(c$, "getNavigationOffset", +function(){ +this.transformPt3f(this.navigationCenter, this.navigationOffset); +return this.navigationOffset; +}); +Clazz_defineMethod(c$, "getNavPtHeight", +function(){ +return this.height / 2; +}); +Clazz_defineMethod(c$, "getNavigationOffsetPercent", +function(XorY){ +this.getNavigationOffset(); +if (this.width == 0 || this.height == 0) return 0; +return (XorY == 'X' ? (this.navigationOffset.x - this.width / 2) * 100 / this.width : (this.navigationOffset.y - this.getNavPtHeight()) * 100 / this.height); +}, "~S"); +Clazz_defineMethod(c$, "getNavigationText", +function(addComments){ +var s = (addComments ? " /* navigation center, translation, depth */ " : " "); +if (this.mode != 1) return s + "{0 0 0} 0 0 0"; +this.getNavigationOffset(); +return s + JU.Escape.eP(this.navigationCenter) + " " + this.getNavigationOffsetPercent('X') + " " + this.getNavigationOffsetPercent('Y') + " " + this.navigationDepthPercent; +}, "~B"); +Clazz_defineMethod(c$, "setScreenParameters", +function(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom){ +var pt = (this.mode == 1 ? JU.P3.newP(this.navigationCenter) : null); +var ptoff = JU.P3.newP(this.navigationOffset); +ptoff.x = ptoff.x / this.width; +ptoff.y = ptoff.y / this.height; +this.setScreenParameters0(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom); +if (pt != null) { +this.navigationCenter.setT(pt); +this.navTranslatePercentOrTo(-1, ptoff.x * this.width, ptoff.y * this.height); +this.setNavigatePt(pt); +}}, "~N,~N,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "navInterrupt", +function(){ +if (this.nav != null) this.nav.interrupt(); +}); +Clazz_defineMethod(c$, "getNav", +function(){ +if (this.nav != null) return true; +this.nav = J.api.Interface.getOption("navigate.Navigator", this.vwr, "tm"); +if (this.nav == null) return false; +this.nav.set(this, this.vwr); +return true; +}); +Clazz_defineMethod(c$, "navigateList", +function(eval, list){ +if (this.getNav()) this.nav.navigateList(eval, list); +}, "J.api.JmolScriptEvaluator,JU.Lst"); +Clazz_defineMethod(c$, "navigateAxis", +function(rotAxis, degrees){ +if (this.getNav()) this.nav.navigateAxis(rotAxis, degrees); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "setNavigationOffsetRelative", +function(){ +if (this.getNav()) this.nav.setNavigationOffsetRelative(); +}); +Clazz_defineMethod(c$, "navigateKey", +function(keyCode, modifiers){ +if (this.getNav()) this.nav.navigateKey(keyCode, modifiers); +}, "~N,~N"); +Clazz_defineMethod(c$, "setNavigationDepthPercent", +function(percent){ +if (this.getNav()) this.nav.setNavigationDepthPercent(percent); +}, "~N"); +Clazz_defineMethod(c$, "navTranslatePercentOrTo", +function(seconds, x, y){ +if (this.getNav()) this.nav.navTranslatePercentOrTo(seconds, x, y); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "calcNavigationPoint", +function(){ +if (this.getNav()) this.nav.calcNavigationPoint(); +}); +Clazz_defineMethod(c$, "getNavigationState", +function(){ +return (this.mode == 1 && this.getNav() ? this.nav.getNavigationState() : ""); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.lang.Enum", "J.api.JmolViewer", "$.PlatformViewer", "J.atomdata.AtomDataServer", "java.util.Hashtable", "JU.P3"], "JV.Viewer", ["java.util.Arrays", "JU.AU", "$.BS", "$.CU", "$.DF", "$.Lst", "$.P3i", "$.PT", "$.Quat", "$.Rdr", "$.SB", "J.adapter.smarter.SmarterJmolAdapter", "J.api.Interface", "J.atomdata.RadiusData", "J.c.FIL", "$.STER", "$.VDW", "J.i18n.GT", "JM.Measurement", "$.ModelSet", "JS.SV", "$.T", "J.thread.TimeoutThread", "JU.BSUtil", "$.C", "$.CommandHistory", "$.Elements", "$.Escape", "$.GData", "$.JmolMolecule", "$.Logger", "$.Parser", "$.TempArray", "JV.ActionManager", "$.AnimationManager", "$.ColorManager", "$.FileManager", "$.GlobalSettings", "$.JC", "$.ModelManager", "$.SelectionManager", "$.ShapeManager", "$.StateManager", "$.StatusManager", "$.TransformManager", "JV.binding.Binding"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.testAsync = false; +this.autoExit = false; +this.haveDisplay = false; +this.isJSNoAWT = false; +this.isWebGL = false; +this.isSingleThreaded = false; +this.queueOnHold = false; +this.fullName = ""; +this.compiler = null; +this.definedAtomSets = null; +this.ms = null; +this.fm = null; +this.isApplet = false; +this.isJNLP = false; +this.isSyntaxAndFileCheck = false; +this.isSyntaxCheck = false; +this.listCommands = false; +this.mustRender = false; +this.htmlName = ""; +this.appletName = ""; +this.tryPt = 0; +this.insertedCommand = ""; +this.gdata = null; +this.html5Applet = null; +this.acm = null; +this.am = null; +this.cm = null; +this.dm = null; +this.shm = null; +this.slm = null; +this.rm = null; +this.g = null; +this.sm = null; +this.tm = null; +this.syncId = ""; +this.logFilePath = ""; +this.allowScripting = false; +this.isPrintOnly = false; +this.isSignedApplet = false; +this.isSignedAppletLocal = false; +this.isSilent = false; +this.multiTouch = false; +this.noGraphicsAllowed = false; +this.useCommandThread = false; +this.commandOptions = null; +this.vwrOptions = null; +this.display = null; +this.modelAdapter = null; +this.access = null; +this.commandHistory = null; +this.mm = null; +this.stm = null; +this.scm = null; +this.eval = null; +this.tempArray = null; +this.allowArrayDotNotation = false; +this.async = false; +this.executor = null; +this.screenWidth = 0; +this.screenHeight = 0; +this.defaultVdw = null; +this.rd = null; +this.chainMap = null; +this.chainList = null; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.privateKey = 0; +this.dataOnly = false; +this.maximumSize = 2147483647; +this.gRight = null; +this.isStereoSlave = false; +this.imageFontScaling = 1; +this.antialiased = false; +this.prevFrame = -2147483648; +this.prevMorphModel = 0; +this.haveJDX = false; +this.jsv = null; +this.outputManager = null; +this.jzt = null; +this.isPreviewOnly = false; +this.headless = false; +this.movableBitSet = null; +this.hasSelected = false; +this.mouse = null; +this.ligandModels = null; +this.ligandModelSet = null; +this.annotationParser = null; +this.dssrParser = null; +this.minimizer = null; +this.smilesMatcher = null; +this.jsc = null; +this.lastData = null; +this.motionEventNumber = 0; +this.inMotion = false; +this.refreshing = true; +this.axesAreTainted = false; +this.captureParams = null; +this.jsParams = null; +this.cirChecked = false; +this.hoverAtomIndex = -1; +this.hoverText = null; +this.hoverLabel = "%U"; +this.hoverEnabled = true; +this.currentCursor = 0; +this.ptTemp = null; +this.selectionHalosEnabled = false; +this.frankOn = true; +this.noFrankEcho = true; +this.scriptEditorVisible = false; +this.appConsole = null; +this.scriptEditor = null; +this.jmolpopup = null; +this.modelkit = null; +this.headlessImageParams = null; +this.pm = null; +this.isTainted = true; +this.movingSelected = false; +this.showSelected = false; +this.ptScreen = null; +this.ptScreenNew = null; +this.ptNew = null; +this.atomHighlighted = -1; +this.creatingImage = false; +this.bsUserVdws = null; +this.userVdws = null; +this.userVdwMars = null; +this.currentShapeID = -1; +this.currentShapeState = null; +this.localFunctions = null; +this.$isKiosk = false; +this.displayLoadErrors = true; +this.$isParallel = false; +this.stateScriptVersionInt = 2147483647; +this.jsExporter3D = null; +this.timeouts = null; +this.chainCaseSpecified = false; +this.nmrCalculation = null; +this.logFileName = null; +this.jbr = null; +this.jcm = null; +this.jsonParser = null; +this.triangulator = null; +this.nboParser = null; +this.macros = null; +this.consoleFontScale = 1; +Clazz_instantialize(this, arguments);}, JV, "Viewer", J.api.JmolViewer, [J.atomdata.AtomDataServer, J.api.PlatformViewer]); +Clazz_prepareFields (c$, function(){ +this.ptScreen = new JU.P3(); +this.ptScreenNew = new JU.P3(); +this.ptNew = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(info){ +Clazz_superConstructor (this, JV.Viewer, []); +this.commandHistory = new JU.CommandHistory(); +this.rd = new J.atomdata.RadiusData(null, 0, null, null); +this.defaultVdw = J.c.VDW.JMOL; +this.localFunctions = new java.util.Hashtable(); +this.privateKey = Math.random(); +this.chainMap = new java.util.Hashtable(); +this.chainList = new JU.Lst(); +this.setOptions(info); +}, "java.util.Map"); +Clazz_defineMethod(c$, "finalize", +function(){ +if (JU.Logger.debugging) JU.Logger.debug("vwr finalize " + this); +Clazz_superCall(this, JV.Viewer, "finalize", []); +}); +Clazz_defineMethod(c$, "setInsertedCommand", +function(strScript){ +this.insertedCommand = strScript; +}, "~S"); +c$.getJmolVersion = Clazz_overrideMethod(c$, "getJmolVersion", +function(){ +return (JV.Viewer.version_date == null ? JV.Viewer.version_date = JV.JC.version + " " + JV.JC.date : JV.Viewer.version_date); +}); +c$.allocateViewer = Clazz_defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, implementedPlatform){ +var info = new java.util.Hashtable(); +info.put("display", display); +info.put("adapter", modelAdapter); +info.put("statusListener", statusListener); +info.put("platform", implementedPlatform); +info.put("options", commandOptions); +info.put("fullName", fullName); +info.put("documentBase", documentBase); +info.put("codeBase", codeBase); +return new JV.Viewer(info); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform"); +Clazz_defineMethod(c$, "haveAccess", +function(a){ +return this.access === a; +}, "JV.Viewer.ACCESS"); +Clazz_overrideMethod(c$, "getModelAdapter", +function(){ +return (this.modelAdapter == null ? this.modelAdapter = new J.adapter.smarter.SmarterJmolAdapter() : this.modelAdapter); +}); +Clazz_overrideMethod(c$, "getSmartsMatch", +function(smarts, bsSelected){ +if (bsSelected == null) bsSelected = this.bsA(); +return this.getSmilesMatcher().getSubstructureSet(smarts, this.ms.at, this.ms.ac, bsSelected, 2); +}, "~S,JU.BS"); +Clazz_defineMethod(c$, "isSubstructure", +function(smarts, smiles){ +try { +var map = this.getSmilesMatcher().find(smarts, smiles, 10); +return map != null && map.length > 0; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~S,~S"); +Clazz_defineMethod(c$, "hasStructure", +function(pattern, smiles, isSmarts){ +try { +var ret = this.getSmilesMatcher().hasStructure(pattern, Clazz_newArray(-1, [smiles]), (isSmarts ? 2 : 1) | 8); +return ret[0] == 1; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getSmartsMatchForNodes", +function(smarts, atoms){ +return this.getSmilesMatcher().getSubstructureSet(smarts, atoms, atoms.length, null, 2); +}, "~S,~A"); +Clazz_defineMethod(c$, "getSmartsMap", +function(smilesOrSmarts, bsSelected, flags){ +if (bsSelected == null) bsSelected = this.bsA(); +if (flags == 0) flags = 2; +return this.getSmilesMatcher().getCorrelationMaps(smilesOrSmarts, this.ms.at, this.ms.ac, bsSelected, flags); +}, "~S,JU.BS,~N"); +Clazz_defineMethod(c$, "setOptions", +function(info){ +this.vwrOptions = info; +if (JU.Logger.debugging) { +JU.Logger.debug("Viewer constructor " + this); +}this.modelAdapter = info.get("adapter"); +var statusListener = info.get("statusListener"); +this.fullName = info.get("fullName"); +if (this.fullName == null) this.fullName = ""; +var o = info.get("codePath"); +if (o == null) o = "../java/"; +JV.Viewer.appletCodeBase = o.toString(); +JV.Viewer.appletIdiomaBase = JV.Viewer.appletCodeBase.substring(0, JV.Viewer.appletCodeBase.lastIndexOf("/", JV.Viewer.appletCodeBase.length - 2) + 1) + "idioma"; +o = info.get("documentBase"); +JV.Viewer.appletDocumentBase = (o == null ? "" : o.toString()); +o = info.get("options"); +this.commandOptions = (o == null ? "" : o.toString()); +if (info.containsKey("debug") || this.commandOptions.indexOf("-debug") >= 0) JU.Logger.setLogLevel(5); +if (this.isApplet && info.containsKey("maximumSize")) this.setMaximumSize((info.get("maximumSize")).intValue()); +this.isJNLP = this.checkOption2("isJNLP", "-jnlp"); +if (this.isJNLP) JU.Logger.info("setting JNLP mode TRUE"); +this.isSignedApplet = this.isJNLP || this.checkOption2("signedApplet", "-signed"); +this.isApplet = this.isSignedApplet || this.checkOption2("applet", "-applet"); +this.allowScripting = !this.checkOption2("noscripting", "-noscripting"); +var i = this.fullName.indexOf("__"); +this.htmlName = (i < 0 ? this.fullName : this.fullName.substring(0, i)); +this.appletName = JU.PT.split(this.htmlName + "_", "_")[0]; +this.syncId = (i < 0 ? "" : this.fullName.substring(i + 2, this.fullName.length - 2)); +this.access = (this.checkOption2("access:READSPT", "-r") ? JV.Viewer.ACCESS.READSPT : this.checkOption2("access:NONE", "-R") ? JV.Viewer.ACCESS.NONE : JV.Viewer.ACCESS.ALL); +this.isPreviewOnly = info.containsKey("previewOnly"); +if (this.isPreviewOnly) info.remove("previewOnly"); +this.isPrintOnly = this.checkOption2("printOnly", "-p"); +this.dataOnly = this.checkOption2("isDataOnly", "\0"); +this.autoExit = this.checkOption2("exit", "-x"); +o = info.get("platform"); +var platform = "unknown"; +if (o == null) { +o = (this.commandOptions.contains("platform=") ? this.commandOptions.substring(this.commandOptions.indexOf("platform=") + 9) : "J.awt.Platform"); +}if ((typeof(o)=='string')) { +platform = o; +this.isWebGL = (platform.indexOf(".awtjs.") >= 0); +JV.Viewer.isJS = this.isJSNoAWT = this.isWebGL || (platform.indexOf(".awtjs2d.") >= 0); +this.async = !this.dataOnly && !this.autoExit && (this.testAsync || JV.Viewer.isJS && info.containsKey("async")); +var applet = null; +var jmol = null; +var javaver = "?"; +{ +if(self.Jmol) { jmol = Jmol; applet = +Jmol._applets[this.htmlName.split("_object")[0]]; javaver = +Jmol._version; } +}if (javaver != null) { +this.html5Applet = applet; +JV.Viewer.jmolObject = jmol; +JV.Viewer.strJavaVersion = javaver; +JV.Viewer.strJavaVendor = "Java2Script " + (this.isWebGL ? "(WebGL)" : "(HTML5)"); +}o = J.api.Interface.getInterface(platform, this, "setOptions"); +}this.apiPlatform = o; +this.display = info.get("display"); +this.isSingleThreaded = this.apiPlatform.isSingleThreaded(); +this.noGraphicsAllowed = this.checkOption2("noDisplay", "-n"); +this.headless = this.apiPlatform.isHeadless(); +this.haveDisplay = (this.isWebGL || this.display != null && !this.noGraphicsAllowed && !this.headless && !this.dataOnly); +this.noGraphicsAllowed = new Boolean (this.noGraphicsAllowed & (this.display == null)).valueOf(); +this.headless = new Boolean (this.headless | this.noGraphicsAllowed).valueOf(); +if (this.haveDisplay) { +this.mustRender = true; +this.multiTouch = this.checkOption2("multiTouch", "-multitouch"); +{ +if (!this.isWebGL) this.display = +document.getElementById(this.display); +}} else { +this.display = null; +}this.apiPlatform.setViewer(this, this.display); +o = info.get("graphicsAdapter"); +if (o == null && !this.isWebGL) o = J.api.Interface.getOption("g3d.Graphics3D", this, "setOptions"); +this.gdata = (o == null && (this.isWebGL || !JV.Viewer.isJS) ? new JU.GData() : o); +this.gdata.initialize(this, this.apiPlatform); +this.stm = new JV.StateManager(this); +this.cm = new JV.ColorManager(this, this.gdata); +this.sm = new JV.StatusManager(this); +var is4D = info.containsKey("4DMouse"); +this.tm = JV.TransformManager.getTransformManager(this, 2147483647, 0, is4D); +this.slm = new JV.SelectionManager(this); +if (this.haveDisplay) { +this.acm = (this.multiTouch ? J.api.Interface.getOption("multitouch.ActionManagerMT", null, null) : new JV.ActionManager()); +this.acm.setViewer(this, this.commandOptions + "-multitouch-" + info.get("multiTouch")); +this.mouse = this.apiPlatform.getMouseManager(this.privateKey, this.display); +if (this.multiTouch && !this.checkOption2("-simulated", "-simulated")) this.apiPlatform.setTransparentCursor(this.display); +}this.mm = new JV.ModelManager(this); +this.shm = new JV.ShapeManager(this); +this.tempArray = new JU.TempArray(); +this.am = new JV.AnimationManager(this); +o = info.get("repaintManager"); +if (o == null) o = J.api.Interface.getOption("render.RepaintManager", this, "setOptions"); +if (JV.Viewer.isJS || o != null && !o.equals("")) (this.rm = o).set(this, this.shm); +this.ms = new JM.ModelSet(this, null); +this.initialize(true, false); +this.fm = new JV.FileManager(this); +this.definedAtomSets = new java.util.Hashtable(); +this.setJmolStatusListener(statusListener); +if (this.isApplet) { +JU.Logger.info("vwrOptions: \n" + JU.Escape.escapeMap(this.vwrOptions)); +var path = this.vwrOptions.get("documentLocation"); +if (!JV.Viewer.isJS && path != null && path.startsWith("file:/")) { +path = path.substring(0, path.substring(0, (path + "?").indexOf("?")).lastIndexOf("/")); +JU.Logger.info("setting current directory to " + path); +this.cd(path); +}path = JV.Viewer.appletDocumentBase; +i = path.indexOf("#"); +if (i >= 0) path = path.substring(0, i); +i = path.lastIndexOf("?"); +if (i >= 0) path = path.substring(0, i); +i = path.lastIndexOf("/"); +if (i >= 0) path = path.substring(0, i); +JV.Viewer.jsDocumentBase = path; +this.fm.setAppletContext(JV.Viewer.appletDocumentBase); +var appletProxy = info.get("appletProxy"); +if (appletProxy != null) this.setStringProperty("appletProxy", appletProxy); +if (this.isSignedApplet) { +this.logFilePath = JU.PT.rep(JV.Viewer.appletCodeBase, "file://", ""); +this.logFilePath = JU.PT.rep(this.logFilePath, "file:/", ""); +if (this.logFilePath.indexOf("//") >= 0) this.logFilePath = null; + else this.isSignedAppletLocal = true; +} else if (!JV.Viewer.isJS) { +this.logFilePath = null; +} new J.i18n.GT(this, info.get("language")); +if (JV.Viewer.isJS) this.acm.createActions(); +} else { +this.gdata.setBackgroundTransparent(this.checkOption2("backgroundTransparent", "-b")); +this.isSilent = this.checkOption2("silent", "-i"); +if (this.isSilent) JU.Logger.setLogLevel(3); +if (this.headless && !this.isSilent) JU.Logger.info("Operating headless display=" + this.display + " nographicsallowed=" + this.noGraphicsAllowed); +this.isSyntaxAndFileCheck = this.checkOption2("checkLoad", "-C"); +this.isSyntaxCheck = this.isSyntaxAndFileCheck || this.checkOption2("check", "-c"); +this.listCommands = this.checkOption2("listCommands", "-l"); +this.cd("."); +if (this.headless) { +this.headlessImageParams = info.get("headlessImage"); +o = info.get("headlistMaxTimeMs"); +if (o == null) o = Integer.$valueOf(60000); +this.setTimeout("" + Math.random(), (o).intValue(), "exitJmol"); +}}this.useCommandThread = !this.headless && this.checkOption2("useCommandThread", "-threaded"); +this.setStartupBooleans(); +this.setIntProperty("_nProcessors", JV.Viewer.nProcessors); +if (!this.isSilent) { +JU.Logger.info("(C) 2015 Jmol Development" + "\nJmol Version: " + JV.Viewer.getJmolVersion() + "\njava.vendor: " + JV.Viewer.strJavaVendor + "\njava.version: " + JV.Viewer.strJavaVersion + "\nos.name: " + JV.Viewer.strOSName + "\nAccess: " + this.access + "\nmemory: " + this.getP("_memory") + "\nprocessors available: " + JV.Viewer.nProcessors + "\nuseCommandThread: " + this.useCommandThread + (!this.isApplet ? "" : "\nappletId:" + this.htmlName + (this.isSignedApplet ? " (signed)" : ""))); +}this.zap(false, true, false); +this.g.setO("language", J.i18n.GT.getLanguage()); +this.g.setO("_hoverLabel", this.hoverLabel); +this.stm.setJmolDefaults(); +JU.Elements.covalentVersion = 1; +this.allowArrayDotNotation = true; +if (this.allowScripting) this.getScriptManager(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setMaximumSize", +function(x){ +this.maximumSize = Math.max(x, 100); +}, "~N"); +Clazz_defineMethod(c$, "setStereo", +function(isStereoSlave, gRight){ +this.isStereoSlave = isStereoSlave; +this.gRight = gRight; +}, "~B,~O"); +Clazz_defineMethod(c$, "getMenu", +function(type){ +this.getPopupMenu(); +if (type.equals("\0")) { +this.popupMenu(this.screenWidth - 120, 0, 'j'); +return "OK"; +}return (this.jmolpopup == null ? "" : this.jmolpopup.jpiGetMenuAsString("Jmol version " + JV.Viewer.getJmolVersion() + "|_GET_MENU|" + type)); +}, "~S"); +Clazz_overrideMethod(c$, "resizeInnerPanel", +function(width, height){ +if (!this.autoExit && this.haveDisplay) return this.sm.resizeInnerPanel(width, height); +this.setScreenDimension(width, height); +return Clazz_newIntArray(-1, [this.screenWidth, this.screenHeight]); +}, "~N,~N"); +Clazz_overrideMethod(c$, "setScreenDimension", +function(width, height){ +height = Math.min(height, this.maximumSize); +width = Math.min(width, this.maximumSize); +if (this.tm.stereoDoubleFull) width = Clazz_doubleToInt((width + 1) / 2); +if (this.screenWidth == width && this.screenHeight == height) return; +this.resizeImage(width, height, false, false, true); +}, "~N,~N"); +Clazz_defineMethod(c$, "resizeImage", +function(width, height, isImageWrite, isExport, isReset){ +if (!isImageWrite && this.creatingImage) return; +var wasAntialiased = this.antialiased; +this.antialiased = (isReset ? this.g.antialiasDisplay && this.checkMotionRendering(603979786) : isImageWrite && !isExport ? this.g.antialiasImages : false); +if (!isExport && !isImageWrite && (width > 0 || wasAntialiased != this.antialiased)) this.setShapeProperty(5, "clearBoxes", null); +this.imageFontScaling = (this.antialiased ? 2 : 1) * (isReset || this.tm.scale3D || width <= 0 ? 1 : (this.g.zoomLarge == (height > width) ? height : width) * 1 / this.getScreenDim()); +if (width > 0) { +this.screenWidth = width; +this.screenHeight = height; +if (!isImageWrite) { +this.g.setI("_width", width); +this.g.setI("_height", height); +}} else { +width = (this.screenWidth == 0 ? this.screenWidth = 500 : this.screenWidth); +height = (this.screenHeight == 0 ? this.screenHeight = 500 : this.screenHeight); +}this.tm.setScreenParameters(width, height, isImageWrite || isReset ? this.g.zoomLarge : false, this.antialiased, false, false); +this.gdata.setWindowParameters(width, height, this.antialiased); +this.setModelkitPropertySafely("frameresized", null); +if (width > 0 && !isImageWrite) this.setStatusResized(width, height); +}, "~N,~N,~B,~B,~B"); +Clazz_overrideMethod(c$, "getScreenWidth", +function(){ +return this.screenWidth; +}); +Clazz_overrideMethod(c$, "getScreenHeight", +function(){ +return this.screenHeight; +}); +Clazz_defineMethod(c$, "getScreenDim", +function(){ +return (this.g.zoomLarge == (this.screenHeight > this.screenWidth) ? this.screenHeight : this.screenWidth); +}); +Clazz_defineMethod(c$, "setWidthHeightVar", +function(){ +this.g.setI("_width", this.screenWidth); +this.g.setI("_height", this.screenHeight); +}); +Clazz_defineMethod(c$, "getBoundBoxCenterX", +function(){ +return Clazz_doubleToInt(this.screenWidth / 2); +}); +Clazz_defineMethod(c$, "getBoundBoxCenterY", +function(){ +return Clazz_doubleToInt(this.screenHeight / 2); +}); +Clazz_defineMethod(c$, "updateWindow", +function(width, height){ +if (!this.refreshing || this.creatingImage) return (this.refreshing ? false : !JV.Viewer.isJS); +if (this.isTainted || this.tm.slabEnabled) this.setModelVisibility(); +this.isTainted = false; +if (this.rm != null) { +if (width != 0) this.setScreenDimension(width, height); +}return true; +}, "~N,~N"); +Clazz_defineMethod(c$, "getImage", +function(isStereo, isImageWrite){ +var image = null; +try { +this.beginRendering(isStereo, isImageWrite); +this.render(); +this.gdata.endRendering(); +image = this.gdata.getScreenImage(isImageWrite); +} catch (e$$) { +if (Clazz_exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.gdata.getScreenImage(isImageWrite); +this.handleError(er, false); +this.setErrorMessage("Error during rendering: " + er, null); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.out.println("render error" + e); +} +} else { +throw e$$; +} +} +return image; +}, "~B,~B"); +Clazz_defineMethod(c$, "beginRendering", +function(isStereo, isImageWrite){ +this.gdata.beginRendering(this.tm.getStereoRotationMatrix(isStereo), this.g.translucent, isImageWrite, !this.checkMotionRendering(603979967)); +}, "~B,~B"); +Clazz_defineMethod(c$, "render", +function(){ +if (this.mm.modelSet == null || !this.mustRender || !this.refreshing && !this.creatingImage || this.rm == null) return; +var antialias2 = this.antialiased && this.g.antialiasTranslucent; +var navMinMax = this.shm.finalizeAtoms(this.tm.bsSelectedAtoms, true); +if (this.isWebGL) { +this.rm.renderExport(this.gdata, this.ms, this.jsParams); +this.notifyViewerRepaintDone(); +return; +}this.rm.render(this.gdata, this.ms, true, navMinMax); +if (this.gdata.setPass2(antialias2)) { +this.tm.setAntialias(antialias2); +this.rm.render(this.gdata, this.ms, false, null); +this.tm.setAntialias(this.antialiased); +}}); +Clazz_defineMethod(c$, "drawImage", +function(graphic, img, x, y, isDTI){ +if (graphic != null && img != null) { +this.apiPlatform.drawImage(graphic, img, x, y, this.screenWidth, this.screenHeight, isDTI); +}this.gdata.releaseScreenImage(); +}, "~O,~O,~N,~N,~B"); +Clazz_defineMethod(c$, "getScreenImage", +function(){ +return this.getScreenImageBuffer(null, true); +}); +Clazz_overrideMethod(c$, "getScreenImageBuffer", +function(g, isImageWrite){ +if (this.isWebGL) return (isImageWrite ? this.apiPlatform.allocateRgbImage(0, 0, null, 0, false, true) : null); +var isDouble = this.tm.stereoDoubleFull || this.tm.stereoDoubleDTI; +var isBicolor = this.tm.stereoMode.isBiColor(); +var mergeImages = (g == null && isDouble); +var imageBuffer; +if (isBicolor) { +this.beginRendering(true, isImageWrite); +this.render(); +this.gdata.endRendering(); +this.gdata.snapshotAnaglyphChannelBytes(); +this.beginRendering(false, isImageWrite); +this.render(); +this.gdata.endRendering(); +this.gdata.applyAnaglygh(this.tm.stereoMode, this.tm.stereoColors); +imageBuffer = this.gdata.getScreenImage(isImageWrite); +} else { +imageBuffer = this.getImage(isDouble, isImageWrite); +}var imageBuffer2 = null; +if (mergeImages) { +imageBuffer2 = this.apiPlatform.newBufferedImage(imageBuffer, (this.tm.stereoDoubleDTI ? this.screenWidth : this.screenWidth << 1), this.screenHeight); +g = this.apiPlatform.getGraphics(imageBuffer2); +}if (g != null) { +if (isDouble) { +if (this.tm.stereoMode === J.c.STER.DTI) { +this.drawImage(g, imageBuffer, this.screenWidth >> 1, 0, true); +imageBuffer = this.getImage(false, false); +this.drawImage(g, imageBuffer, 0, 0, true); +g = null; +} else { +this.drawImage(g, imageBuffer, this.screenWidth, 0, false); +imageBuffer = this.getImage(false, false); +}}if (g != null) this.drawImage(g, imageBuffer, 0, 0, false); +}return (mergeImages ? imageBuffer2 : imageBuffer); +}, "~O,~B"); +Clazz_defineMethod(c$, "evalStringWaitStatusQueued", +function(returnType, strScript, statusList, isQuiet, isQueued){ +return (this.getScriptManager() == null ? null : this.scm.evalStringWaitStatusQueued(returnType, strScript, statusList, isQuiet, isQueued)); +}, "~S,~S,~S,~B,~B"); +Clazz_defineMethod(c$, "popupMenu", +function(x, y, type){ +if (!this.haveDisplay || !this.refreshing || this.isPreviewOnly || this.g.disablePopupMenu) return; +switch ((type).charCodeAt(0)) { +case 106: +try { +this.getPopupMenu(); +this.jmolpopup.jpiShow(x, y); +} catch (e) { +JU.Logger.info(e.toString()); +this.g.disablePopupMenu = true; +} +break; +case 97: +case 98: +case 109: +if (this.getModelkit(true) == null) { +return; +}this.modelkit.showMenu(x, y); +break; +} +}, "~N,~N,~S"); +Clazz_defineMethod(c$, "getModelkit", +function(andShow){ +if (this.modelkit == null) { +(this.modelkit = J.api.Interface.getInterface("J.modelkit.ModelKit", this, "script")).setMenu(this.apiPlatform.getMenuPopup(null, 'm')); +} else if (andShow) { +this.modelkit.updateMenu(); +}return this.modelkit; +}, "~B"); +Clazz_defineMethod(c$, "getPopupMenu", +function(){ +if (this.g.disablePopupMenu) return null; +if (this.jmolpopup == null) { +this.jmolpopup = (this.allowScripting ? this.apiPlatform.getMenuPopup(this.menuStructure, 'j') : null); +if (this.jmolpopup == null) { +if (!this.async) this.g.disablePopupMenu = true; +return null; +}}if (this.isJSNoAWT) this.checkMenuUpdate(); +return this.jmolpopup.jpiGetMenuAsObject(); +}); +Clazz_overrideMethod(c$, "setMenu", +function(fileOrText, isFile){ +if (isFile) JU.Logger.info("Setting menu " + (fileOrText.length == 0 ? "to Jmol defaults" : "from file " + fileOrText)); +if (fileOrText.length == 0) fileOrText = null; + else if (isFile) fileOrText = this.getFileAsString3(fileOrText, false, null); +this.getProperty("DATA_API", "setMenu", fileOrText); +this.sm.setCallbackFunction("menu", fileOrText); +}, "~S,~B"); +Clazz_defineMethod(c$, "setStatusFrameChanged", +function(isVib, doNotify){ +if (isVib) { +this.prevFrame = -2147483648; +}this.tm.setVibrationPeriod(NaN); +var firstIndex = this.am.firstFrameIndex; +var lastIndex = this.am.lastFrameIndex; +var isMovie = this.am.isMovie; +var modelIndex = this.am.cmi; +if (firstIndex == lastIndex && !isMovie) modelIndex = firstIndex; +var frameID = this.getModelFileNumber(modelIndex); +var currentFrame = this.am.cmi; +var fileNo = frameID; +var modelNo = frameID % 1000000; +var firstNo = (isMovie ? firstIndex : this.getModelFileNumber(firstIndex)); +var lastNo = (isMovie ? lastIndex : this.getModelFileNumber(lastIndex)); +var strModelNo; +if (isMovie) { +strModelNo = "" + (currentFrame + 1); +} else if (fileNo == 0) { +strModelNo = this.getModelNumberDotted(firstIndex); +if (firstIndex != lastIndex) strModelNo += " - " + this.getModelNumberDotted(lastIndex); +if (Clazz_doubleToInt(firstNo / 1000000) == Clazz_doubleToInt(lastNo / 1000000)) fileNo = firstNo; +} else { +strModelNo = this.getModelNumberDotted(modelIndex); +}if (fileNo != 0) fileNo = (fileNo < 1000000 ? 1 : Clazz_doubleToInt(fileNo / 1000000)); +if (!isMovie) { +this.g.setI("_currentFileNumber", fileNo); +this.g.setI("_currentModelNumberInFile", modelNo); +}var currentMorphModel = this.am.currentMorphModel; +this.g.setI("_currentFrame", currentFrame); +this.g.setI("_morphCount", this.am.morphCount); +this.g.setF("_currentMorphFrame", currentMorphModel); +this.g.setI("_frameID", frameID); +this.g.setI("_modelIndex", modelIndex); +this.g.setO("_modelNumber", strModelNo); +this.g.setO("_modelName", (modelIndex < 0 ? "" : this.getModelName(modelIndex))); +var title = (modelIndex < 0 ? "" : this.ms.getModelTitle(modelIndex)); +this.g.setO("_modelTitle", title == null ? "" : title); +this.g.setO("_modelFile", (modelIndex < 0 ? "" : this.ms.getModelFileName(modelIndex))); +this.g.setO("_modelType", (modelIndex < 0 ? "" : this.ms.getModelFileType(modelIndex))); +if (currentFrame == this.prevFrame && currentMorphModel == this.prevMorphModel) return; +this.prevFrame = currentFrame; +this.prevMorphModel = currentMorphModel; +var entryName = this.getModelName(currentFrame); +if (isMovie) { +entryName = "" + (entryName === "" ? currentFrame + 1 : this.am.caf + 1) + ": " + entryName; +} else { +var script = "" + this.getModelNumberDotted(currentFrame); +if (!script.equals(entryName)) entryName = script + ": " + entryName; +}this.sm.setStatusFrameChanged(fileNo, modelNo, (this.am.animationDirection < 0 ? -firstNo : firstNo), (this.am.currentDirection < 0 ? -lastNo : lastNo), currentFrame, currentMorphModel, entryName); +if (this.doHaveJDX()) this.getJSV().setModel(modelIndex); +if (JV.Viewer.isJS) this.updateJSView(modelIndex, -1); +}, "~B,~B"); +Clazz_defineMethod(c$, "doHaveJDX", +function(){ +return (this.haveJDX || (this.haveJDX = this.getBooleanProperty("_JSpecView".toLowerCase()))); +}); +Clazz_defineMethod(c$, "getJSV", +function(){ +if (this.jsv == null) { +this.jsv = J.api.Interface.getOption("jsv.JSpecView", this, "script"); +this.jsv.setViewer(this); +}return this.jsv; +}); +Clazz_defineMethod(c$, "getJDXBaseModelIndex", +function(modelIndex){ +if (!this.doHaveJDX()) return modelIndex; +return this.getJSV().getBaseModelIndex(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "getJspecViewProperties", +function(myParam){ +var o = this.sm.getJspecViewProperties("" + myParam); +if (o != null) this.haveJDX = true; +return o; +}, "~O"); +Clazz_defineMethod(c$, "scriptEcho", +function(strEcho){ +if (!JU.Logger.isActiveLevel(4)) return; +if (JV.Viewer.isJS) System.out.println(strEcho); +this.sm.setScriptEcho(strEcho, this.isScriptQueued()); +if (this.listCommands && strEcho != null && strEcho.indexOf("$[") == 0) JU.Logger.info(strEcho); +}, "~S"); +Clazz_defineMethod(c$, "isScriptQueued", +function(){ +return this.scm != null && this.scm.isScriptQueued(); +}); +Clazz_defineMethod(c$, "notifyError", +function(errType, errMsg, errMsgUntranslated){ +this.g.setO("_errormessage", errMsgUntranslated); +this.sm.notifyError(errType, errMsg, errMsgUntranslated); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "jsEval", +function(strEval){ +return "" + this.sm.jsEval(strEval); +}, "~S"); +Clazz_defineMethod(c$, "jsEvalSV", +function(strEval){ +return JS.SV.getVariable(JV.Viewer.isJS ? this.sm.jsEval(strEval) : this.jsEval(strEval)); +}, "~S"); +Clazz_defineMethod(c$, "setFileLoadStatus", +function(ptLoad, fullPathName, fileName, modelName, strError, isAsync){ +this.setErrorMessage(strError, null); +this.g.setI("_loadPoint", ptLoad.getCode()); +var doCallback = (ptLoad !== J.c.FIL.CREATING_MODELSET); +if (doCallback) this.setStatusFrameChanged(false, false); +this.sm.setFileLoadStatus(fullPathName, fileName, modelName, strError, ptLoad.getCode(), doCallback, isAsync); +if (doCallback) { +if (this.doHaveJDX()) this.getJSV().setModel(this.am.cmi); +if (JV.Viewer.isJS) this.updateJSView(this.am.cmi, -2); +}}, "J.c.FIL,~S,~S,~S,~S,Boolean"); +Clazz_defineMethod(c$, "getZapName", +function(){ +return (this.g.modelKitMode ? "Jmol Model Kit" : "zapped"); +}); +Clazz_defineMethod(c$, "setStatusMeasuring", +function(status, intInfo, strMeasure, value){ +this.sm.setStatusMeasuring(status, intInfo, strMeasure, value); +}, "~S,~N,~S,~N"); +Clazz_defineMethod(c$, "notifyMinimizationStatus", +function(){ +var step = this.getP("_minimizationStep"); +var ff = this.getP("_minimizationForceField"); +var minStatus = this.getP("_minimizationStatus"); +var starting = "starting".equals(minStatus); +var done = "done".equals(minStatus) || "failed".equals(minStatus); +var includeAtoms = (this.minimizer != null && (done || starting)); +var bsAtoms = (includeAtoms ? this.minimizer.bsAtoms : null); +var atomIndex = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +var modelIndex = (atomIndex >= 0 ? this.getModelIndexForAtom(atomIndex) : -1); +if (starting && atomIndex >= 0) { +this.sm.setStatusStructureModified(atomIndex, modelIndex, 3, "minimize:" + minStatus, bsAtoms.cardinality(), bsAtoms); +}this.sm.notifyMinimizationStatus(minStatus, (typeof(step)=='string') ? Integer.$valueOf(0) : step, this.getP("_minimizationEnergy"), (step.toString().equals("0") ? Float.$valueOf(0) : this.getP("_minimizationEnergyDiff")), ff); +if (done && atomIndex >= 0) { +this.sm.setStatusStructureModified(atomIndex, modelIndex, -3, "minimize:" + minStatus, bsAtoms.cardinality(), bsAtoms); +}}); +Clazz_defineMethod(c$, "setStatusAtomPicked", +function(atomIndex, info, map, andSelect){ +if (andSelect) this.setSelectionSet(JU.BSUtil.newAndSetBit(atomIndex)); +if (info == null) { +info = this.g.pickLabel; +info = (info.length == 0 ? this.getAtomInfoXYZ(atomIndex, this.g.messageStyleChime ? 4 : 2) + (this.getOperativeSymmetry() == null ? "" : " (" + this.getAtomInfoXYZ(atomIndex, 3) + ")") : this.ms.getAtomInfo(atomIndex, info, this.ptTemp)); +}this.setPicked(atomIndex, false); +if (atomIndex < 0) { +var m = this.getPendingMeasurement(); +if (m != null) info = info.substring(0, info.length - 1) + ",\"" + m.getString() + "\"]"; +}this.g.setO("_pickinfo", info); +this.sm.setStatusAtomPicked(atomIndex, info, map); +if (atomIndex < 0) return; +var syncMode = this.sm.getSyncMode(); +if (syncMode == 1 && this.doHaveJDX()) this.getJSV().atomPicked(atomIndex); +if (JV.Viewer.isJS) this.updateJSView(this.ms.at[atomIndex].mi, atomIndex); +}, "~N,~S,java.util.Map,~B"); +Clazz_overrideMethod(c$, "getProperty", +function(returnType, infoType, paramInfo){ +if (!"DATA_API".equals(returnType)) return this.getPropertyManager().getProperty(returnType, infoType, paramInfo); +switch (("scriptCheck.........consoleText.........scriptEditor........scriptEditorState...getAppConsole.......getScriptEditor.....setMenu.............spaceGroupInfo......disablePopupMenu....defaultDirectory....getPopupMenu........shapeManager........getPreference.......").indexOf(infoType)) { +case 0: +return this.scriptCheckRet(paramInfo, true); +case 20: +return (this.appConsole == null ? "" : this.appConsole.getText()); +case 40: +this.showEditor(paramInfo); +return null; +case 60: +this.scriptEditorVisible = (paramInfo).booleanValue(); +return null; +case 80: +if (this.$isKiosk) { +this.appConsole = null; +} else if (Clazz_instanceOf(paramInfo,"J.api.JmolAppConsoleInterface")) { +this.appConsole = paramInfo; +} else if (paramInfo != null && !(paramInfo).booleanValue()) { +this.appConsole = null; +} else if (this.appConsole == null && paramInfo != null && (paramInfo).booleanValue()) { +if (JV.Viewer.isJS) { +this.appConsole = J.api.Interface.getOption("consolejs.AppletConsole", this, "script"); +}{ +}if (this.appConsole != null) this.appConsole.start(this); +}this.scriptEditor = (JV.Viewer.isJS || this.appConsole == null ? null : this.appConsole.getScriptEditor()); +return this.appConsole; +case 100: +if (this.appConsole == null && paramInfo != null && (paramInfo).booleanValue()) { +this.getProperty("DATA_API", "getAppConsole", Boolean.TRUE); +this.scriptEditor = (this.appConsole == null ? null : this.appConsole.getScriptEditor()); +}return this.scriptEditor; +case 120: +if (this.jmolpopup != null) this.jmolpopup.jpiDispose(); +this.jmolpopup = null; +return this.menuStructure = paramInfo; +case 140: +return this.getSymTemp().getSpaceGroupInfo(this.ms, null, -1, false, null); +case 160: +this.g.disablePopupMenu = true; +return null; +case 180: +return this.g.defaultDirectory; +case 200: +if ((typeof(paramInfo)=='string')) return this.getMenu(paramInfo); +return this.getPopupMenu(); +case 220: +return this.shm.getProperty(paramInfo); +case 240: +return this.sm.syncSend("getPreference", paramInfo, 1); +} +JU.Logger.error("ERROR in getProperty DATA_API: " + infoType); +return null; +}, "~S,~S,~O"); +Clazz_defineMethod(c$, "notifyMouseClicked", +function(x, y, action, mode){ +var modifiers = JV.binding.Binding.getButtonMods(action); +var clickCount = JV.binding.Binding.getClickCount(action); +this.g.setI("_mouseX", x); +this.g.setI("_mouseY", this.screenHeight - y); +this.g.setI("_mouseAction", action); +this.g.setI("_mouseModifiers", modifiers); +this.g.setI("_clickCount", clickCount); +return this.sm.setStatusClicked(x, this.screenHeight - y, action, clickCount, mode); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getOutputManager", +function(){ +if (this.outputManager != null) return this.outputManager; +return (this.outputManager = J.api.Interface.getInterface("JV.OutputManager" + (JV.Viewer.isJS ? "JS" : "Awt"), this, "file")).setViewer(this, this.privateKey); +}); +Clazz_defineMethod(c$, "getJzt", +function(){ +return (this.jzt == null ? this.jzt = J.api.Interface.getInterface("JU.ZipTools", this, "zip") : this.jzt); +}); +Clazz_defineMethod(c$, "readFileAsMap", +function(bis, map, name){ +this.getJzt().readFileAsMap(bis, map, name); +}, "java.io.BufferedInputStream,java.util.Map,~S"); +Clazz_defineMethod(c$, "getZipDirectoryAsString", +function(fileName){ +var t = this.fm.getBufferedInputStreamOrErrorMessageFromName(fileName, fileName, false, false, null, false, true); +return this.getJzt().getZipDirectoryAsStringAndClose(t); +}, "~S"); +Clazz_overrideMethod(c$, "getImageAsBytes", +function(type, width, height, quality, errMsg){ +return this.getOutputManager().getImageAsBytes(type, width, height, quality, errMsg); +}, "~S,~N,~N,~N,~A"); +Clazz_overrideMethod(c$, "releaseScreenImage", +function(){ +this.gdata.releaseScreenImage(); +}); +Clazz_defineMethod(c$, "setDisplay", +function(canvas){ +this.display = canvas; +this.apiPlatform.setViewer(this, canvas); +}, "~O"); +Clazz_defineMethod(c$, "newMeasurementData", +function(id, points){ +return (J.api.Interface.getInterface("JM.MeasurementData", this, "script")).init(id, this, points); +}, "~S,JU.Lst"); +Clazz_defineMethod(c$, "getDataManager", +function(){ +return (this.dm == null ? (this.dm = (J.api.Interface.getInterface("JV.DataManager", this, "script")).set(this)) : this.dm); +}); +Clazz_defineMethod(c$, "getScriptManager", +function(){ +if (this.allowScripting && this.scm == null) { +this.scm = J.api.Interface.getInterface("JS.ScriptManager", this, "setOptions"); +if (JV.Viewer.isJS && this.scm == null) throw new NullPointerException(); +if (this.scm == null) { +this.allowScripting = false; +return null; +}this.eval = this.scm.setViewer(this); +if (this.useCommandThread) this.scm.startCommandWatcher(true); +}return this.scm; +}); +Clazz_defineMethod(c$, "checkOption2", +function(key1, key2){ +return (this.vwrOptions.containsKey(key1) && !this.vwrOptions.get(key1).toString().equals("false") || this.commandOptions.indexOf(key2) >= 0); +}, "~S,~S"); +Clazz_defineMethod(c$, "setStartupBooleans", +function(){ +this.setBooleanProperty("_applet", this.isApplet); +this.setBooleanProperty("_JSpecView".toLowerCase(), false); +this.setBooleanProperty("_signedApplet", this.isSignedApplet); +this.setBooleanProperty("_headless", this.headless); +this.setStringProperty("_restrict", "\"" + this.access + "\""); +this.setBooleanProperty("_useCommandThread", this.useCommandThread); +this.setBooleanPropertyTok("doubleprecision", 603979831, false); +}); +Clazz_defineMethod(c$, "getExportDriverList", +function(){ +return (this.haveAccess(JV.Viewer.ACCESS.ALL) ? this.g.getParameter("exportDrivers", true) : ""); +}); +Clazz_overrideMethod(c$, "dispose", +function(){ +this.gRight = null; +if (this.mouse != null) { +this.acm.dispose(); +this.mouse.dispose(); +this.mouse = null; +}this.clearScriptQueue(); +this.clearThreads(); +this.haltScriptExecution(); +if (this.scm != null) this.scm.clear(true); +this.gdata.destroy(); +if (this.jmolpopup != null) this.jmolpopup.jpiDispose(); +if (this.modelkit != null) this.modelkit.dispose(); +try { +if (this.appConsole != null) { +this.appConsole.dispose(); +this.appConsole = null; +}if (this.scriptEditor != null) { +this.scriptEditor.dispose(); +this.scriptEditor = null; +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "reset", +function(includingSpin){ +this.ms.setBoundBox(null, null, true, 0); +this.axesAreTainted = true; +this.tm.homePosition(includingSpin); +if (this.ms.setCrystallographicDefaults()) this.stm.setCrystallographicDefaults(); + else this.setAxesMode(603979809); +this.prevFrame = -2147483648; +if (!this.tm.spinOn) this.setSync(); +}, "~B"); +Clazz_overrideMethod(c$, "homePosition", +function(){ +this.evalString("reset spin"); +}); +Clazz_defineMethod(c$, "initialize", +function(clearUserVariables, isPyMOL){ +this.g = new JV.GlobalSettings(this, this.g, clearUserVariables); +this.setStartupBooleans(); +this.setWidthHeightVar(); +if (this.haveDisplay) { +this.g.setB("_is2D", JV.Viewer.isJS && !this.isWebGL); +this.g.setB("_multiTouchClient", this.acm.isMTClient()); +this.g.setB("_multiTouchServer", this.acm.isMTServer()); +}this.cm.setDefaultColors(false); +this.setObjectColor("background", "black"); +this.setObjectColor("axis1", "red"); +this.setObjectColor("axis2", "green"); +this.setObjectColor("axis3", "blue"); +this.am.setAnimationOn(false); +this.am.setAnimationFps(this.g.animationFps); +this.sm.playAudio(null); +this.sm.allowStatusReporting = this.g.statusReporting; +this.setBooleanPropertyTok("antialiasDisplay", 603979786, (isPyMOL ? true : this.g.antialiasDisplay)); +this.stm.resetLighting(); +this.tm.setDefaultPerspective(); +}, "~B,~B"); +Clazz_defineMethod(c$, "saveModelOrientation", +function(){ +this.ms.saveModelOrientation(this.am.cmi, this.stm.getOrientation()); +}); +Clazz_defineMethod(c$, "restoreModelOrientation", +function(modelIndex){ +var o = this.ms.getModelOrientation(modelIndex); +if (o != null) o.restore(-1, true); +}, "~N"); +Clazz_defineMethod(c$, "restoreModelRotation", +function(modelIndex){ +var o = this.ms.getModelOrientation(modelIndex); +if (o != null) o.restore(-1, false); +}, "~N"); +Clazz_defineMethod(c$, "getGLmolView", +function(){ +var tm = this.tm; +var center = tm.fixedRotationCenter; +var q = tm.getRotationQ(); +var xtrans = tm.xTranslationFraction; +var ytrans = tm.yTranslationFraction; +var scale = tm.scalePixelsPerAngstrom; +var zoom = tm.zmPctSet; +var cd = tm.cameraDistance; +var pc = tm.screenPixelCount; +var pd = tm.perspectiveDepth; +var width = tm.width; +var height = tm.height; +{ +return { center:center, quaternion:q, xtrans:xtrans, +ytrans:ytrans, scale:scale, zoom:zoom, cameraDistance:cd, +pixelCount:pc, perspective:pd, width:width, height:height }; +}}); +Clazz_defineMethod(c$, "setRotationRadius", +function(angstroms, doAll){ +if (doAll) angstroms = this.tm.setRotationRadius(angstroms, false); +if (this.ms.setRotationRadius(this.am.cmi, angstroms)) this.g.setF("rotationRadius", angstroms); +}, "~N,~B"); +Clazz_defineMethod(c$, "setCenterBitSet", +function(bsCenter, doScale){ +if (this.isJmolDataFrame()) return; +this.tm.setNewRotationCenter((JU.BSUtil.cardinalityOf(bsCenter) > 0 ? this.ms.getAtomSetCenter(bsCenter) : null), doScale); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setNewRotationCenter", +function(center){ +if (!this.isJmolDataFrame()) this.tm.setNewRotationCenter(center, true); +}, "JU.P3"); +Clazz_defineMethod(c$, "navigate", +function(keyWhere, modifiers){ +if (this.isJmolDataFrame()) return; +this.tm.navigateKey(keyWhere, modifiers); +if (!this.tm.vibrationOn && keyWhere != 0) this.refresh(1, "Viewer:navigate()"); +}, "~N,~N"); +Clazz_defineMethod(c$, "move", +function(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps){ +this.tm.move(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps); +this.moveUpdate(floatSecondsTotal); +}, "J.api.JmolScriptEvaluator,JU.V3,~N,JU.V3,~N,~N,~N"); +Clazz_defineMethod(c$, "moveTo", +function(eval, floatSecondsTotal, center, rotAxis, degrees, rotationMatrix, zoom, xTrans, yTrans, rotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY){ +if (!this.haveDisplay) floatSecondsTotal = 0; +this.setTainted(true); +this.tm.moveTo(eval, floatSecondsTotal, center, rotAxis, degrees, rotationMatrix, zoom, xTrans, yTrans, rotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY); +}, "J.api.JmolScriptEvaluator,~N,JU.P3,JU.V3,~N,JU.M3,~N,~N,~N,~N,JU.P3,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "moveUpdate", +function(floatSecondsTotal){ +if (floatSecondsTotal > 0) this.requestRepaintAndWait("moveUpdate"); + else if (floatSecondsTotal == 0) this.setSync(); +}, "~N"); +Clazz_defineMethod(c$, "navigatePt", +function(center){ +this.tm.setNavigatePt(center); +this.setSync(); +}, "JU.P3"); +Clazz_defineMethod(c$, "navigateAxis", +function(rotAxis, degrees){ +this.tm.navigateAxis(rotAxis, degrees); +this.setSync(); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "navTranslatePercent", +function(x, y){ +if (this.isJmolDataFrame()) return; +this.tm.navTranslatePercentOrTo(0, x, y); +this.setSync(); +}, "~N,~N"); +Clazz_defineMethod(c$, "zoomBy", +function(pixels){ +this.tm.zoomBy(pixels); +this.refresh(2, this.sm.syncingMouse ? "Mouse: zoomBy " + pixels : ""); +}, "~N"); +Clazz_defineMethod(c$, "zoomByFactor", +function(factor, x, y){ +this.tm.zoomByFactor(factor, x, y); +this.refresh(2, !this.sm.syncingMouse ? "" : "Mouse: zoomByFactor " + factor + (x == 2147483647 ? "" : " " + x + " " + y)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "rotateXYBy", +function(degX, degY){ +this.tm.rotateXYBy(degX, degY, null); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateXYBy " + degX + " " + degY : ""); +}, "~N,~N"); +Clazz_defineMethod(c$, "spinXYBy", +function(xDelta, yDelta, speed){ +this.tm.spinXYBy(xDelta, yDelta, speed); +if (xDelta == 0 && yDelta == 0) return; +this.refresh(2, this.sm.syncingMouse ? "Mouse: spinXYBy " + xDelta + " " + yDelta + " " + speed : ""); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "rotateZBy", +function(zDelta, x, y){ +this.tm.rotateZBy(zDelta, x, y); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateZBy " + zDelta + (x == 2147483647 ? "" : " " + x + " " + y) : ""); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "rotateSelected", +function(deltaX, deltaY, bsSelected){ +if (this.isJmolDataFrame()) return; +this.tm.rotateXYBy(deltaX, deltaY, this.setMovableBitSet(bsSelected, true)); +this.refreshMeasures(true); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateMolecule " + deltaX + " " + deltaY : ""); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "setMovableBitSet", +function(bsSelected, checkMolecule){ +if (bsSelected == null) bsSelected = this.bsA(); +bsSelected = JU.BSUtil.copy(bsSelected); +JU.BSUtil.andNot(bsSelected, this.getMotionFixedAtoms(null, null)); +if (checkMolecule && !this.g.allowMoveAtoms) bsSelected = this.ms.getMoleculeBitSet(bsSelected); +return this.movableBitSet = bsSelected; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "translateXYBy", +function(xDelta, yDelta){ +this.tm.translateXYBy(xDelta, yDelta); +this.refresh(2, this.sm.syncingMouse ? "Mouse: translateXYBy " + xDelta + " " + yDelta : ""); +}, "~N,~N"); +Clazz_overrideMethod(c$, "rotateFront", +function(){ +this.tm.resetRotation(); +this.refresh(1, "Viewer:rotateFront()"); +}); +Clazz_defineMethod(c$, "translate", +function(xyz, x, type, bsAtoms){ +var xy = (type == '\0' ? x : type == '%' ? this.tm.percentToPixels(xyz, x) : this.tm.angstromsToPixels(x * (type == 'n' ? 10 : 1))); +if (bsAtoms != null) { +if (x == 0) return; +this.tm.setSelectedTranslation(bsAtoms, xyz, xy, x); +} else { +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +if (type == '\0') this.tm.translateToPercent('x', x); + else this.tm.translateXYBy(Clazz_floatToInt(xy), 0); +break; +case 89: +case 121: +if (type == '\0') this.tm.translateToPercent('y', x); + else this.tm.translateXYBy(0, Clazz_floatToInt(xy)); +break; +case 90: +case 122: +if (type == '\0') this.tm.translateToPercent('z', x); + else this.tm.translateZBy(Clazz_floatToInt(xy)); +break; +} +}this.refresh(1, "Viewer:translate()"); +}, "~S,~N,~S,JU.BS"); +Clazz_defineMethod(c$, "slabByPixels", +function(pixels){ +this.tm.slabByPercentagePoints(pixels); +this.refresh(3, "slabByPixels"); +}, "~N"); +Clazz_defineMethod(c$, "depthByPixels", +function(pixels){ +this.tm.depthByPercentagePoints(pixels); +this.refresh(3, "depthByPixels"); +}, "~N"); +Clazz_defineMethod(c$, "slabDepthByPixels", +function(pixels){ +this.tm.slabDepthByPercentagePoints(pixels); +this.refresh(3, "slabDepthByPixels"); +}, "~N"); +Clazz_defineMethod(c$, "finalizeTransformParameters", +function(){ +this.tm.finalizeTransformParameters(); +this.gdata.setSlabAndZShade(this.tm.slabValue, this.tm.depthValue, (this.tm.zShadeEnabled ? this.tm.zSlabValue : 2147483647), this.tm.zDepthValue, this.g.zShadePower); +}); +Clazz_defineMethod(c$, "getScalePixelsPerAngstrom", +function(asAntialiased){ +return this.tm.scalePixelsPerAngstrom * (asAntialiased || !this.antialiased ? 1 : 0.5); +}, "~B"); +Clazz_defineMethod(c$, "setSpin", +function(key, value){ +if (!JU.PT.isOneOf(key, ";x;y;z;fps;X;Y;Z;FPS;")) return; +var i = "x;y;z;fps;X;Y;Z;FPS".indexOf(key); +switch (i) { +case 0: +this.tm.setSpinXYZ(value, NaN, NaN); +break; +case 2: +this.tm.setSpinXYZ(NaN, value, NaN); +break; +case 4: +this.tm.setSpinXYZ(NaN, NaN, value); +break; +case 6: +default: +this.tm.setSpinFps(value); +break; +case 10: +this.tm.setNavXYZ(value, NaN, NaN); +break; +case 12: +this.tm.setNavXYZ(NaN, value, NaN); +break; +case 14: +this.tm.setNavXYZ(NaN, NaN, value); +break; +case 16: +this.tm.setNavFps(value); +break; +} +this.g.setI((i < 10 ? "spin" : "nav") + key, value); +}, "~S,~N"); +Clazz_defineMethod(c$, "getSpinState", +function(){ +return this.getStateCreator().getSpinState(false); +}); +Clazz_defineMethod(c$, "getOrientation", +function(type, name, bs, points){ +switch (type) { +case 1312817669: +case 1814695966: +case 1073741864: +case 1111492629: +case 1111492630: +case 1111492631: +case 134221850: +if (bs == null) bs = this.bsA(); +if (bs.isEmpty()) return (type == 1312817669 ? "0" : type == 1814695966 || type == 1073741864 ? null : new JU.Quat()); +var q = this.ms.getBoundBoxOrientation(type, bs, points); +return (name === "best" && type != 1312817669 ? (q).div(this.tm.getRotationQ()) : q); +case 1073742034: +return this.stm.getSavedOrientationText(name); +default: +return this.tm.getOrientationText(type, name === "best"); +} +}, "~N,~S,JU.BS,~A"); +Clazz_defineMethod(c$, "getCurrentColorRange", +function(){ +return this.cm.getPropertyColorRange(); +}); +Clazz_defineMethod(c$, "setDefaultColors", +function(isRasmol){ +this.cm.setDefaultColors(isRasmol); +this.g.setB("colorRasmol", isRasmol); +this.g.setO("defaultColorScheme", (isRasmol ? "rasmol" : "jmol")); +}, "~B"); +Clazz_defineMethod(c$, "setElementArgb", +function(elementNumber, argb){ +this.g.setO("=color " + JU.Elements.elementNameFromNumber(elementNumber), JU.Escape.escapeColor(argb)); +this.cm.setElementArgb(elementNumber, argb); +}, "~N,~N"); +Clazz_overrideMethod(c$, "setVectorScale", +function(scale){ +this.g.setF("vectorScale", scale); +this.g.vectorScale = scale; +}, "~N"); +Clazz_overrideMethod(c$, "setVibrationScale", +function(scale){ +this.tm.setVibrationScale(scale); +this.g.vibrationScale = scale; +this.g.setF("vibrationScale", scale); +}, "~N"); +Clazz_overrideMethod(c$, "setVibrationPeriod", +function(period){ +if (Double.isNaN(period)) { +period = this.g.vibrationPeriod; +}this.tm.setVibrationPeriod(period); +period = Math.abs(period); +this.g.vibrationPeriod = period; +this.g.setF("vibrationPeriod", period); +}, "~N"); +Clazz_defineMethod(c$, "setObjectColor", +function(name, colorName){ +if (colorName == null || colorName.length == 0) return; +this.setObjectArgb(name, JU.CU.getArgbFromString(colorName)); +}, "~S,~S"); +Clazz_defineMethod(c$, "setObjectVisibility", +function(name, b){ +var objId = JV.StateManager.getObjectIdFromName(name); +if (objId >= 0) { +this.setShapeProperty(objId, "display", b ? Boolean.TRUE : Boolean.FALSE); +}}, "~S,~B"); +Clazz_defineMethod(c$, "setObjectArgb", +function(name, argb){ +var objId = JV.StateManager.getObjectIdFromName(name); +if (objId < 0) { +if (name.equalsIgnoreCase("axes")) { +this.setObjectArgb("axis1", argb); +this.setObjectArgb("axis2", argb); +this.setObjectArgb("axis3", argb); +}return; +}this.g.objColors[objId] = argb; +switch (objId) { +case 0: +this.gdata.setBackgroundArgb(argb); +this.cm.setColixBackgroundContrast(argb); +break; +} +this.g.setO(name + "Color", JU.Escape.escapeColor(argb)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setBackgroundImage", +function(fileName, image){ +this.g.backgroundImageFileName = fileName; +this.gdata.setBackgroundImage(image); +}, "~S,~O"); +Clazz_defineMethod(c$, "getObjectColix", +function(objId){ +var argb = this.g.objColors[objId]; +return (argb == 0 ? this.cm.colixBackgroundContrast : JU.C.getColix(argb)); +}, "~N"); +Clazz_overrideMethod(c$, "setColorBackground", +function(colorName){ +this.setObjectColor("background", colorName); +}, "~S"); +Clazz_overrideMethod(c$, "getBackgroundArgb", +function(){ +return this.g.objColors[(0)]; +}); +Clazz_defineMethod(c$, "setObjectMad10", +function(iShape, name, mad10){ +var objId = JV.StateManager.getObjectIdFromName(name.equalsIgnoreCase("axes") ? "axis" : name); +if (objId < 0) return; +if (mad10 == -2 || mad10 == -4) { +var m = mad10 + 3; +mad10 = this.getObjectMad10(objId); +if (mad10 == 0) mad10 = m; +}this.g.setB("show" + name, mad10 != 0); +this.g.objStateOn[objId] = (mad10 != 0); +if (mad10 == 0) return; +this.g.objMad10[objId] = mad10; +this.setShapeSize(iShape, mad10, null); +}, "~N,~S,~N"); +Clazz_defineMethod(c$, "getObjectMad10", +function(objId){ +return (this.g.objStateOn[objId] ? this.g.objMad10[objId] : 0); +}, "~N"); +Clazz_defineMethod(c$, "setPropertyColorScheme", +function(scheme, isTranslucent, isOverloaded){ +this.g.propertyColorScheme = scheme; +if (scheme.startsWith("translucent ")) { +isTranslucent = true; +scheme = scheme.substring(12).trim(); +}this.cm.setPropertyColorScheme(scheme, isTranslucent, isOverloaded); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getLightingState", +function(){ +return this.getStateCreator().getLightingState(true); +}); +Clazz_defineMethod(c$, "getColorPointForPropertyValue", +function(val){ +return JU.CU.colorPtFromInt(this.gdata.getColorArgbOrGray(this.cm.ce.getColorIndex(val)), null); +}, "~N"); +Clazz_defineMethod(c$, "select", +function(bs, isGroup, addRemove, isQuiet){ +if (isGroup) bs = this.getUndeletedGroupAtomBits(bs); +this.slm.select(bs, addRemove, isQuiet); +this.shm.setShapeSizeBs(1, 2147483647, null, null); +this.hasSelected = true; +}, "JU.BS,~B,~N,~B"); +Clazz_overrideMethod(c$, "setSelectionSet", +function(set){ +this.selectStatus(set, false, 0, true, true); +}, "JU.BS"); +Clazz_defineMethod(c$, "selectBonds", +function(bs){ +this.shm.setShapeSizeBs(1, 2147483647, null, bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "displayAtoms", +function(bs, isDisplay, isGroup, addRemove, isQuiet){ +if (isGroup) bs = this.getUndeletedGroupAtomBits(bs); +if (isDisplay) this.slm.display(this.ms, bs, addRemove, isQuiet); + else this.slm.hide(this.ms, bs, addRemove, isQuiet); +}, "JU.BS,~B,~B,~N,~B"); +Clazz_defineMethod(c$, "getUndeletedGroupAtomBits", +function(bs){ +bs = this.ms.getAtoms(1086324742, bs); +JU.BSUtil.andNot(bs, this.slm.bsDeleted); +return bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "reportSelection", +function(msg){ +if (this.selectionHalosEnabled) this.setTainted(true); +if (this.isScriptQueued() || this.g.debugScript) this.scriptStatus(msg); +}, "~S"); +Clazz_defineMethod(c$, "clearAtomSets", +function(){ +this.slm.setSelectionSubset(null); +this.definedAtomSets.clear(); +if (this.haveDisplay) this.acm.exitMeasurementMode("clearAtomSets"); +}); +Clazz_defineMethod(c$, "getDefinedAtomSet", +function(name){ +var o = this.definedAtomSets.get(name.toLowerCase()); +return (Clazz_instanceOf(o,"JU.BS") ? o : new JU.BS()); +}, "~S"); +Clazz_overrideMethod(c$, "selectAll", +function(){ +this.slm.selectAll(false); +}); +Clazz_overrideMethod(c$, "clearSelection", +function(){ +this.slm.clearSelection(true); +this.g.setB("hideNotSelected", false); +}); +Clazz_defineMethod(c$, "bsA", +function(){ +return this.slm.getSelectedAtoms(); +}); +Clazz_overrideMethod(c$, "addSelectionListener", +function(listener){ +this.slm.addListener(listener); +}, "J.api.JmolSelectionListener"); +Clazz_overrideMethod(c$, "removeSelectionListener", +function(listener){ +this.slm.addListener(listener); +}, "J.api.JmolSelectionListener"); +Clazz_defineMethod(c$, "getAtomBitSetEval", +function(eval, atomExpression){ +return (this.allowScripting ? this.getScriptManager().getAtomBitSetEval(eval, atomExpression) : new JU.BS()); +}, "J.api.JmolScriptEvaluator,~O"); +Clazz_defineMethod(c$, "processTwoPointGesture", +function(touches){ +this.mouse.processTwoPointGesture(touches); +}, "~A"); +Clazz_defineMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.mouse.processEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "processKeyEvent", +function(event){ +this.mouse.processKeyEvent(event); +}, "~O"); +Clazz_defineMethod(c$, "getRubberBandSelection", +function(){ +return (this.haveDisplay ? this.acm.getRubberBand() : null); +}); +Clazz_defineMethod(c$, "isBound", +function(mouseAction, jmolAction){ +return (this.haveDisplay && this.acm.bnd(mouseAction, [jmolAction])); +}, "~N,~N"); +Clazz_defineMethod(c$, "getCursorX", +function(){ +return (this.haveDisplay ? this.acm.getCurrentX() : 0); +}); +Clazz_defineMethod(c$, "getCursorY", +function(){ +return (this.haveDisplay ? this.acm.getCurrentY() : 0); +}); +Clazz_defineMethod(c$, "getDefaultDirectory", +function(){ +return this.g.defaultDirectory; +}); +Clazz_defineMethod(c$, "getLocalUrl", +function(fileName){ +return this.apiPlatform.getLocalUrl(fileName); +}, "~S"); +Clazz_defineMethod(c$, "getFileAsString", +function(fileName){ +return this.getAsciiFileOrNull(fileName); +}, "~S"); +Clazz_overrideMethod(c$, "getBufferedInputStream", +function(fullPathName){ +return this.fm.getBufferedInputStream(fullPathName); +}, "~S"); +Clazz_defineMethod(c$, "setLoadParameters", +function(htParams, isAppend){ +if (htParams == null) htParams = new java.util.Hashtable(); +htParams.put("vwr", this); +if (this.g.atomTypes.length > 0) htParams.put("atomTypes", this.g.atomTypes); +if (!htParams.containsKey("lattice")) htParams.put("lattice", this.g.ptDefaultLattice); +if (this.g.applySymmetryToBonds) htParams.put("applySymmetryToBonds", Boolean.TRUE); +if (this.g.pdbGetHeader) htParams.put("getHeader", Boolean.TRUE); +if (this.g.pdbSequential) htParams.put("isSequential", Boolean.TRUE); +if (this.g.legacyJavaFloat || this.g.doublePrecision) htParams.put("highPrecision", Boolean.TRUE); +if (!this.g.doublePrecision) htParams.put("lowPrecision", Boolean.TRUE); +htParams.put("stateScriptVersionInt", Integer.$valueOf(this.stateScriptVersionInt)); +if (!htParams.containsKey("filter")) { +var filter = this.g.defaultLoadFilter; +if (filter.length > 0) htParams.put("filter", filter); +}var merging = (isAppend && !this.g.appendNew && this.ms.ac > 0); +htParams.put("baseAtomIndex", Integer.$valueOf(isAppend ? this.ms.ac : 0)); +htParams.put("baseBondIndex", Integer.$valueOf(isAppend ? this.ms.bondCount : 0)); +htParams.put("baseModelIndex", Integer.$valueOf(this.ms.ac == 0 ? 0 : this.ms.mc + (merging ? -1 : 0))); +if (merging) htParams.put("merging", Boolean.TRUE); +return htParams; +}, "java.util.Map,~B"); +Clazz_overrideMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +this.getScriptManager().openFileAsync(fileName, flags, null); +}, "~S,~N"); +Clazz_overrideMethod(c$, "openFileAsyncSpecialType", +function(fileName, flags, fileType){ +this.getScriptManager().openFileAsync(fileName, flags, fileType); +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "openFile", +function(fileName){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(null, fileName, null, null); +}, "~S"); +Clazz_overrideMethod(c$, "openFiles", +function(fileNames){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(null, null, fileNames, null); +}, "~A"); +Clazz_defineMethod(c$, "openReader", +function(fullPathName, fileName, reader){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(fullPathName, fileName, null, reader); +}, "~S,~S,~O"); +Clazz_overrideMethod(c$, "openDOM", +function(DOMNode){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint("?", "?", null, DOMNode); +}, "~O"); +Clazz_defineMethod(c$, "loadModelFromFileRepaint", +function(fullPathName, fileName, fileNames, reader){ +var ret = this.loadModelFromFile(fullPathName, fileName, fileNames, reader, false, null, null, null, 0, " "); +this.refresh(1, "loadModelFromFileRepaint"); +return ret; +}, "~S,~S,~A,~O"); +Clazz_defineMethod(c$, "loadModelFromFile", +function(fullPathName, fileName, fileNames, reader, isAppend, htParams, loadScript, sOptions, tokType, filecat){ +if (htParams == null) htParams = this.setLoadParameters(null, isAppend); +if (tokType != 0) htParams.put("dataType", JS.T.nameOf(tokType)); +if (filecat !== " ") htParams.put("concatenate", Boolean.TRUE); +var atomSetCollection; +var saveInfo = this.fm.getFileInfo(); +if (fileNames != null) { +if (loadScript == null) { +loadScript = new JU.SB().append("load files"); +for (var i = 0; i < fileNames.length; i++) loadScript.append(i == 0 || filecat == null ? " " : filecat).append("/*file*/$FILENAME" + (i + 1) + "$"); + +if (sOptions.length() > 0) loadScript.append(" /*options*/ ").append(sOptions.toString()); +}var timeBegin = System.currentTimeMillis(); +atomSetCollection = this.fm.createAtomSetCollectionFromFiles(fileNames, this.setLoadParameters(htParams, isAppend), isAppend); +var ms = System.currentTimeMillis() - timeBegin; +JU.Logger.info("openFiles(" + fileNames.length + ") " + ms + " ms"); +fileNames = htParams.get("fullPathNames"); +var fileTypes = htParams.get("fileTypes"); +var s = loadScript.toString(); +for (var i = 0; i < fileNames.length; i++) { +var fname = fileNames[i]; +if (fileTypes != null && fileTypes[i] != null) fname = fileTypes[i] + "::" + fname; +s = JU.PT.rep(s, "$FILENAME" + (i + 1) + "$", JU.PT.esc(JV.FileManager.fixDOSName(fname))); +} +loadScript = new JU.SB().append(s); +} else if (reader == null) { +if (loadScript == null) loadScript = new JU.SB().append("load /*file*/$FILENAME$"); +atomSetCollection = this.openFileFull(fileName, isAppend, htParams, loadScript); +} else if (Clazz_instanceOf(reader,"java.io.Reader") || Clazz_instanceOf(reader,"java.io.BufferedInputStream") || JU.AU.isAB(reader)) { +atomSetCollection = this.fm.createAtomSetCollectionFromReader(fullPathName, fileName, reader, this.setLoadParameters(htParams, isAppend)); +} else { +return "ERROR - invalid reader"; +}if (tokType != 0) { +this.fm.setFileInfo(saveInfo); +return this.loadAtomDataAndReturnError(atomSetCollection, tokType); +}if (htParams.containsKey("isData")) return atomSetCollection; +if (loadScript != null && !((typeof(atomSetCollection)=='string'))) { +var fname = htParams.get("fullPathName"); +if (fname == null) fname = ""; +if (htParams.containsKey("loadScript")) loadScript = htParams.get("loadScript"); +htParams.put("loadScript", loadScript = new JU.SB().append(JU.PT.rep(loadScript.toString(), "$FILENAME$", JU.PT.esc(JV.FileManager.fixDOSName(fname))))); +}return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~S,~S,~A,~O,~B,java.util.Map,JU.SB,JU.SB,~N,~S"); +Clazz_defineMethod(c$, "setLigandModel", +function(key, data){ +if (this.ligandModels == null) this.ligandModels = new java.util.Hashtable(); +this.ligandModels.put(key, data); +}, "~S,~S"); +Clazz_defineMethod(c$, "getLigandModel", +function(id, prefix, suffix, terminator){ +if (id == null) { +if (this.ligandModelSet != null) { +var e = this.ligandModels.entrySet().iterator(); +while (e.hasNext()) { +var entry = e.next(); +if (Clazz_instanceOf(entry.getValue(), Boolean)) e.remove(); +} +}return null; +}id = id.$replace('\\', '/'); +var isLigand = prefix.equals("ligand_"); +id = (id.indexOf("/cif") >= 0 ? id : isLigand ? id.toUpperCase() : id.substring(id.lastIndexOf("/") + 1)); +if (this.ligandModelSet == null) this.ligandModelSet = new java.util.Hashtable(); +this.ligandModelSet.put(id, Boolean.TRUE); +if (this.ligandModels == null) this.ligandModels = new java.util.Hashtable(); +var pngPt = id.indexOf("|"); +if (pngPt >= 0) id = id.substring(id.indexOf("|") + 1); +var model = (terminator == null ? this.ligandModels.get(id) : null); +var data; +var fname = null; +if (Clazz_instanceOf(model, Boolean)) return null; +if (model == null && (terminator == null || pngPt >= 0)) model = this.ligandModels.get(id + suffix); +var isError = false; +var isNew = (model == null); +if (isNew) { +var s; +if (isLigand) { +fname = this.setLoadFormat(false, "#" + id, '#', false); +if (fname.length == 0) return null; +this.scriptEcho("fetching " + fname); +s = this.getFileAsString3(fname, false, null); +} else { +this.scriptEcho("fetching " + prefix); +s = this.getFileAsString3(prefix, false, null); +var pt = (terminator == null ? -1 : s.indexOf(terminator)); +if (pt >= 0) s = s.substring(0, pt); +}isError = (s.indexOf("java.") == 0); +model = s; +if (!isError) this.ligandModels.put(id + suffix, model); +}if (!isLigand) { +if (!isNew) this.scriptEcho(prefix + " loaded from cache"); +return model; +}if (!isError && (typeof(model)=='string')) { +data = model; +if (data.length != 0) { +var htParams = new java.util.Hashtable(); +htParams.put("modelOnly", Boolean.TRUE); +model = this.getModelAdapter().getAtomSetCollectionReader("ligand", null, JU.Rdr.getBR(data), htParams); +isError = ((typeof(model)=='string')); +if (!isError) { +model = this.getModelAdapter().getAtomSetCollection(model); +isError = ((typeof(model)=='string')); +if (fname != null && !isError) this.scriptEcho(this.getModelAdapter().getAtomSetCollectionAuxiliaryInfo(model).get("modelLoadNote")); +}}}if (isError) { +this.scriptEcho(model.toString()); +this.ligandModels.put(id, Boolean.FALSE); +return null; +}return model; +}, "~S,~S,~S,~S"); +Clazz_defineMethod(c$, "openFileFull", +function(fileName, isAppend, htParams, loadScript){ +if (fileName == null) return null; +if (fileName.equals("String[]")) { +return null; +}var atomSetCollection; +var msg = "openFile(" + fileName + ")"; +JU.Logger.startTimer(msg); +htParams = this.setLoadParameters(htParams, isAppend); +var isLoadVariable = fileName.startsWith("@"); +var haveFileData = (htParams.containsKey("fileData")); +if (fileName.indexOf('$') == 0) htParams.put("smilesString", fileName.substring(1)); +var isString = (fileName.equals("string") || fileName.equals("Jmol Model Kit")); +var strModel = null; +if (haveFileData) { +strModel = htParams.get("fileData"); +if (htParams.containsKey("isData")) { +var o = this.loadInlineScript(strModel, '\0', isAppend, htParams); +this.lastData = (this.g.preserveState ? this.getDataManager().createFileData(strModel) : null); +return o; +}} else if (isString) { +strModel = this.ms.getInlineData(-1); +if (strModel == null) if (this.g.modelKitMode) strModel = "5\n\nC 0 0 0\nH .63 .63 .63\nH -.63 -.63 .63\nH -.63 .63 -.63\nH .63 -.63 -.63"; + else return "cannot find string data"; +if (loadScript != null) htParams.put("loadScript", loadScript = new JU.SB().append(JU.PT.rep(loadScript.toString(), "/*file*/$FILENAME$", "/*data*/data \"model inline\"\n" + strModel + "end \"model inline\""))); +}if (strModel != null) { +if (!isAppend) this.zap(true, false, false); +if (!isLoadVariable && (!haveFileData || isString)) this.getStateCreator().getInlineData(loadScript, strModel, isAppend, htParams.get("appendToModelIndex"), this.g.defaultLoadFilter); +atomSetCollection = this.fm.createAtomSetCollectionFromString(strModel, htParams, isAppend); +} else { +atomSetCollection = this.fm.createAtomSetCollectionFromFile(fileName, htParams, isAppend); +}JU.Logger.checkTimer(msg, false); +return atomSetCollection; +}, "~S,~B,java.util.Map,JU.SB"); +Clazz_overrideMethod(c$, "openStringInline", +function(strModel){ +var ret = this.openStringInlineParamsAppend(strModel, null, false); +this.refresh(1, "openStringInline"); +return ret; +}, "~S"); +Clazz_defineMethod(c$, "loadInline", +function(strModel){ +return this.loadInlineScriptRepaint(strModel, this.g.inlineNewlineChar, false); +}, "~S"); +Clazz_defineMethod(c$, "loadInline", +function(strModel, newLine){ +return this.loadInlineScriptRepaint(strModel, newLine, false); +}, "~S,~S"); +Clazz_overrideMethod(c$, "loadInlineAppend", +function(strModel, isAppend){ +return this.loadInlineScriptRepaint(strModel, '\0', isAppend); +}, "~S,~B"); +Clazz_defineMethod(c$, "loadInlineScriptRepaint", +function(strModel, newLine, isAppend){ +var ret = this.loadInlineScript(strModel, newLine, isAppend, null); +this.refresh(1, "loadInlineScript"); +return ret; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "loadInline", +function(arrayModels){ +return this.loadInline(arrayModels, false); +}, "~A"); +Clazz_defineMethod(c$, "loadInline", +function(arrayModels, isAppend){ +if (arrayModels == null || arrayModels.length == 0) return null; +var ret = this.openStringsInlineParamsAppend(arrayModels, new java.util.Hashtable(), isAppend); +this.refresh(1, "loadInline String[]"); +return ret; +}, "~A,~B"); +Clazz_defineMethod(c$, "loadInline", +function(arrayData, isAppend){ +if (arrayData == null || arrayData.size() == 0) return null; +if (!isAppend) this.zap(true, false, false); +var list = new JU.Lst(); +for (var i = 0; i < arrayData.size(); i++) list.addLast(arrayData.get(i)); + +var atomSetCollection = this.fm.createAtomSeCollectionFromArrayData(list, this.setLoadParameters(null, isAppend), isAppend); +var ret = this.createModelSetAndReturnError(atomSetCollection, isAppend, null, new java.util.Hashtable()); +this.refresh(1, "loadInline"); +return ret; +}, "java.util.List,~B"); +Clazz_defineMethod(c$, "loadInlineScript", +function(strModel, newLine, isAppend, htParams){ +if (strModel == null || strModel.length == 0) return null; +strModel = JV.Viewer.fixInlineString(strModel, newLine); +if (newLine.charCodeAt(0) != 0) JU.Logger.info("loading model inline, " + strModel.length + " bytes, with newLine character " + (newLine).charCodeAt(0) + " isAppend=" + isAppend); +if (JU.Logger.debugging) JU.Logger.debug(strModel); +var datasep = this.getDataSeparator(); +var i; +if (datasep != null && datasep !== "" && (i = strModel.indexOf(datasep)) >= 0 && strModel.indexOf("# Jmol state") < 0) { +var n = 2; +while ((i = strModel.indexOf(datasep, i + 1)) >= 0) n++; + +var strModels = new Array(n); +var pt = 0; +var pt0 = 0; +for (i = 0; i < n; i++) { +pt = strModel.indexOf(datasep, pt0); +if (pt < 0) pt = strModel.length; +strModels[i] = strModel.substring(pt0, pt); +pt0 = pt + datasep.length; +} +return this.openStringsInlineParamsAppend(strModels, htParams, isAppend); +}return this.openStringInlineParamsAppend(strModel, htParams, isAppend); +}, "~S,~S,~B,java.util.Map"); +c$.fixInlineString = Clazz_defineMethod(c$, "fixInlineString", +function(strModel, newLine){ +var i; +if (strModel.indexOf("\\/n") >= 0) { +strModel = JU.PT.rep(strModel, "\n", ""); +strModel = JU.PT.rep(strModel, "\\/n", "\n"); +newLine = String.fromCharCode( 0); +}if (newLine.charCodeAt(0) != 0 && newLine != '\n') { +var repEmpty = (strModel.indexOf('\n') >= 0); +var len = strModel.length; +for (i = 0; i < len && strModel.charAt(i) == ' '; ++i) { +} +if (i < len && strModel.charAt(i) == newLine) strModel = strModel.substring(i + 1); +if (repEmpty) strModel = JU.PT.rep(strModel, "" + newLine, ""); + else strModel = strModel.$replace(newLine, '\n'); +}return strModel; +}, "~S,~S"); +Clazz_defineMethod(c$, "openStringInlineParamsAppend", +function(strModel, htParams, isAppend){ +htParams = this.setLoadParameters(htParams, isAppend); +var type = this.getModelAdapter().getFileTypeName(htParams.get("filter")); +if (type == null && (type = this.getModelAdapter().getFileTypeName(JU.Rdr.getBR(strModel))) == null) return "unknown file type"; +if (type.equals("spt")) { +return "cannot open script inline"; +}var loadScript = htParams.get("loadScript"); +var isLoadCommand = htParams.containsKey("isData"); +if (loadScript == null) loadScript = new JU.SB(); +if (!isAppend) this.zap(true, false, false); +if (!isLoadCommand) this.getStateCreator().getInlineData(loadScript, strModel, isAppend, htParams.get("appendToModelIndex"), this.g.defaultLoadFilter); +var atomSetCollection = this.fm.createAtomSetCollectionFromString(strModel, htParams, isAppend); +return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~S,java.util.Map,~B"); +Clazz_defineMethod(c$, "openStringsInlineParamsAppend", +function(arrayModels, htParams, isAppend){ +var loadScript = new JU.SB(); +if (!isAppend) this.zap(true, false, false); +var atomSetCollection = this.fm.createAtomSeCollectionFromStrings(arrayModels, loadScript, this.setLoadParameters(htParams, isAppend), isAppend); +return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~A,java.util.Map,~B"); +Clazz_defineMethod(c$, "getInlineChar", +function(){ +return this.g.inlineNewlineChar; +}); +Clazz_defineMethod(c$, "getDataSeparator", +function(){ +return this.g.getParameter("dataseparator", true); +}); +Clazz_defineMethod(c$, "createModelSetAndReturnError", +function(atomSetCollection, isAppend, loadScript, htParams){ +JU.Logger.startTimer("creating model"); +var fullPathName = this.fm.getFullPathName(false); +var fileName = this.fm.getFileName(); +var errMsg; +if (loadScript == null) { +this.setBooleanPropertyTok("preserveState", 603979898, false); +loadScript = new JU.SB().append("load \"???\""); +}if ((typeof(atomSetCollection)=='string')) { +errMsg = atomSetCollection; +this.setFileLoadStatus(J.c.FIL.NOT_LOADED, fullPathName, null, null, errMsg, null); +if (this.displayLoadErrors && !isAppend && !errMsg.equals("#CANCELED#") && !errMsg.startsWith(JV.JC.READER_NOT_FOUND)) this.zapMsg(errMsg); +return errMsg; +}if (isAppend) this.clearAtomSets(); + else if (this.g.modelKitMode && !fileName.equals("Jmol Model Kit")) this.setModelKitMode(false); +this.setFileLoadStatus(J.c.FIL.CREATING_MODELSET, fullPathName, fileName, null, null, null); +this.pushHoldRepaintWhy("createModelSet"); +this.setErrorMessage(null, null); +try { +var bsNew = new JU.BS(); +this.mm.createModelSet(fullPathName, fileName, loadScript, atomSetCollection, bsNew, isAppend); +if (!bsNew.isEmpty()) { +var jmolScript = this.ms.getInfoM("jmolscript"); +if (this.ms.getMSInfoB("doMinimize")) { +try { +var eval = htParams.get("eval"); +var stereo = this.getAtomBitSet("_C & connected(3) & !connected(double)"); +stereo.and(bsNew); +if (stereo.nextSetBit(0) >= 0) { +bsNew.or(this.addHydrogens(stereo, 41)); +}this.minimize(eval, 2147483647, 0, bsNew, null, null, 0, 185); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} else { +this.addHydrogens(bsNew, 9); +}if (jmolScript != null) this.ms.msInfo.put("jmolscript", jmolScript); +}this.initializeModel(isAppend); +} catch (er) { +if (Clazz_exceptionOf(er, Error)){ +this.handleError(er, true); +errMsg = this.getShapeErrorState(); +errMsg = ("ERROR creating model: " + er + (errMsg.length == 0 ? "" : "|" + errMsg)); +this.zapMsg(errMsg); +this.setErrorMessage(errMsg, null); +} else { +throw er; +} +} +this.popHoldRepaint("createModelSet \u0001## REPAINT_IGNORE ##"); +errMsg = this.getErrorMessage(); +this.setFileLoadStatus(J.c.FIL.CREATED, fullPathName, fileName, this.ms.modelSetName, errMsg, htParams.get("async")); +if (isAppend) { +this.selectAll(); +this.setTainted(true); +this.axesAreTainted = true; +}atomSetCollection = null; +JU.Logger.checkTimer("creating model", false); +System.gc(); +return errMsg; +}, "~O,~B,JU.SB,java.util.Map"); +Clazz_defineMethod(c$, "loadAtomDataAndReturnError", +function(atomSetCollection, tokType){ +if ((typeof(atomSetCollection)=='string')) return atomSetCollection; +this.setErrorMessage(null, null); +try { +var script = this.mm.createAtomDataSet(atomSetCollection, tokType); +switch (tokType) { +case 1145047049: +if (script != null) this.runScriptCautiously(script); +break; +case 4166: +this.setStatusFrameChanged(true, false); +break; +case 1648363544: +this.shm.deleteVdwDependentShapes(null); +break; +} +} catch (er) { +if (Clazz_exceptionOf(er, Error)){ +this.handleError(er, true); +var errMsg = this.getShapeErrorState(); +errMsg = ("ERROR adding atom data: " + er + (errMsg.length == 0 ? "" : "|" + errMsg)); +this.zapMsg(errMsg); +this.setErrorMessage(errMsg, null); +this.setParallel(false); +} else { +throw er; +} +} +return this.getErrorMessage(); +}, "~O,~N"); +Clazz_defineMethod(c$, "getCurrentFileAsString", +function(state){ +var filename = this.fm.getFullPathName(false); +if (filename.equals("string") || filename.equals("Jmol Model Kit")) return this.ms.getInlineData(this.am.cmi); +if (filename.equals("String[]")) return filename; +if (filename === "JSNode") return ""; +return this.getFileAsString4(filename, -1, true, false, false, state); +}, "~S"); +Clazz_defineMethod(c$, "getFullPathNameOrError", +function(filename){ +var data = new Array(2); +this.fm.getFullPathNameOrError(filename, false, data); +return data; +}, "~S"); +Clazz_defineMethod(c$, "getFileAsString3", +function(name, checkProtected, state){ +return this.getFileAsString4(name, -1, false, false, checkProtected, state); +}, "~S,~B,~S"); +Clazz_defineMethod(c$, "getFileAsString4", +function(name, nBytesMax, doSpecialLoad, allowBinary, checkProtected, state){ +if (name == null) return this.getCurrentFileAsString(state); +var data = Clazz_newArray(-1, [name, null]); +this.fm.getFileDataAsString(data, nBytesMax, doSpecialLoad, allowBinary, checkProtected); +return data[1]; +}, "~S,~N,~B,~B,~B,~S"); +Clazz_defineMethod(c$, "getAsciiFileOrNull", +function(name){ +var data = Clazz_newArray(-1, [name, null]); +return (this.fm.getFileDataAsString(data, -1, false, false, false) ? data[1] : null); +}, "~S"); +Clazz_defineMethod(c$, "autoCalculate", +function(tokProperty, dataType){ +switch (tokProperty) { +case 1111490575: +this.ms.getSurfaceDistanceMax(); +break; +case 1111490574: +this.ms.calculateStraightnessAll(); +break; +case 1111490587: +this.ms.calculateDssrProperty(dataType); +} +}, "~N,~S"); +Clazz_defineMethod(c$, "calculateStraightness", +function(){ +this.ms.haveStraightness = false; +this.ms.calculateStraightnessAll(); +}); +Clazz_defineMethod(c$, "calculateSurface", +function(bsSelected, envelopeRadius){ +if (bsSelected == null) bsSelected = this.bsA(); +if (envelopeRadius == 3.4028235E38 || envelopeRadius == -1) this.ms.addStateScript("calculate surfaceDistance " + (envelopeRadius == 3.4028235E38 ? "FROM" : "WITHIN"), null, bsSelected, null, "", false, true); +return this.ms.calculateSurface(bsSelected, envelopeRadius); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getStructureList", +function(){ +return this.g.getStructureList(); +}); +Clazz_defineMethod(c$, "setStructureList", +function(list, type){ +this.g.setStructureList(list, type); +this.ms.setStructureList(this.getStructureList()); +}, "~A,J.c.STR"); +Clazz_defineMethod(c$, "calculateStructures", +function(bsAtoms, asDSSP, setStructure, version){ +if (bsAtoms == null) bsAtoms = this.bsA(); +return this.ms.calculateStructures(bsAtoms, asDSSP, !this.am.animationOn, this.g.dsspCalcHydrogen, setStructure, version); +}, "JU.BS,~B,~B,~N"); +Clazz_defineMethod(c$, "getAnnotationParser", +function(isDSSR){ +return (isDSSR ? (this.dssrParser == null ? (this.dssrParser = J.api.Interface.getOption("dssx.DSSR1", this, "script")) : this.dssrParser) : (this.annotationParser == null ? (this.annotationParser = J.api.Interface.getOption("dssx.AnnotationParser", this, "script")) : this.annotationParser)); +}, "~B"); +Clazz_overrideMethod(c$, "getSelectedAtomIterator", +function(bsSelected, isGreaterOnly, modelZeroBased, isMultiModel){ +return this.ms.getSelectedAtomIterator(bsSelected, isGreaterOnly, modelZeroBased, false, isMultiModel); +}, "JU.BS,~B,~B,~B"); +Clazz_overrideMethod(c$, "setIteratorForAtom", +function(iterator, atomIndex, distance){ +this.ms.setIteratorForAtom(iterator, -1, atomIndex, distance, null); +}, "J.api.AtomIndexIterator,~N,~N"); +Clazz_overrideMethod(c$, "setIteratorForPoint", +function(iterator, modelIndex, pt, distance){ +this.ms.setIteratorForPoint(iterator, modelIndex, pt, distance); +}, "J.api.AtomIndexIterator,~N,JU.T3,~N"); +Clazz_overrideMethod(c$, "fillAtomData", +function(atomData, mode){ +atomData.programInfo = "Jmol Version " + JV.Viewer.getJmolVersion(); +atomData.fileName = this.fm.getFileName(); +this.ms.fillAtomData(atomData, mode); +}, "J.atomdata.AtomData,~N"); +Clazz_defineMethod(c$, "addStateScript", +function(script, addFrameNumber, postDefinitions){ +return this.ms.addStateScript(script, null, null, null, null, addFrameNumber, postDefinitions); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getMinimizer", +function(createNew){ +return (this.minimizer == null && createNew ? (this.minimizer = J.api.Interface.getInterface("JM.Minimizer", this, "script")).setProperty("vwr", this) : this.minimizer); +}, "~B"); +Clazz_defineMethod(c$, "getSmilesMatcher", +function(){ +return (this.smilesMatcher == null ? (this.smilesMatcher = J.api.Interface.getInterface("JS.SmilesMatcher", this, "script")) : this.smilesMatcher); +}); +Clazz_defineMethod(c$, "clearModelDependentObjects", +function(){ +this.setFrameOffsets(null, false); +this.stopMinimization(); +this.minimizer = null; +this.smilesMatcher = null; +if (this.modelkit != null) this.modelkit.clearAtomConstraints(); +}); +Clazz_defineMethod(c$, "zap", +function(notify, resetUndo, zapModelKit){ +this.clearThreads(); +if (this.mm.modelSet == null) { +this.mm.zap(); +} else { +this.ligandModelSet = null; +this.clearModelDependentObjects(); +this.fm.clear(); +this.clearRepaintManager(-1); +this.am.clear(); +this.tm.clear(); +this.slm.clear(); +this.hasSelected = true; +this.clearAllMeasurements(); +this.clearMinimization(); +this.gdata.clear(); +this.mm.zap(); +if (this.scm != null) this.scm.clear(false); +if (this.nmrCalculation != null) this.getNMRCalculation().setChemicalShiftReference(null, 0); +if (this.haveDisplay) { +this.mouse.clear(); +this.clearTimeouts(); +this.acm.clear(); +}this.stm.clear(this.g); +this.tempArray.clear(); +this.chainMap.clear(); +this.chainList.clear(); +this.chainCaseSpecified = false; +this.definedAtomSets.clear(); +this.lastData = null; +if (this.dm != null) this.dm.clear(); +if (!this.g.doublePrecision && this.g.legacyJavaFloat) this.setBooleanPropertyTok("legacyjavafloat", 603979874, false); +if (resetUndo) { +if (zapModelKit) this.g.removeParam("_pngjFile"); +if (zapModelKit && this.g.modelKitMode) { +this.loadDefaultModelKitModel(null); +} else { +this.setPickingMode(null, 1); +}this.undoMoveAction(4165, -2); +}System.gc(); +}this.initializeModel(false); +if (notify) { +this.setFileLoadStatus(J.c.FIL.ZAPPED, null, (resetUndo ? "resetUndo" : this.getZapName()), null, null, null); +}if (JU.Logger.debugging) JU.Logger.checkMemory(); +}, "~B,~B,~B"); +Clazz_defineMethod(c$, "loadDefaultModelKitModel", +function(htParams){ +if (this.getModelkit(false).isHidden() || this.getOperativeSymmetry() != null) return; +this.openStringInlineParamsAppend(this.getModelkit(false).getDefaultModel(), htParams, true); +this.setRotationRadius(5.0, true); +this.setStringProperty("picking", "assignAtom_C"); +this.setStringProperty("picking", "assignBond_p"); +}, "java.util.Map"); +Clazz_defineMethod(c$, "zapMsg", +function(msg){ +this.zap(true, true, false); +this.echoMessage(msg); +}, "~S"); +Clazz_defineMethod(c$, "echoMessage", +function(msg){ +var iShape = 31; +this.shm.loadShape(iShape); +this.setShapeProperty(iShape, "font", this.getFont3D("SansSerif", "Plain", 20)); +this.setShapeProperty(iShape, "target", "error"); +this.setShapeProperty(iShape, "text", msg); +}, "~S"); +Clazz_defineMethod(c$, "initializeModel", +function(isAppend){ +this.clearThreads(); +if (isAppend) { +this.am.initializePointers(1); +return; +}this.reset(true); +this.selectAll(); +this.setModelkitPropertySafely("initializemodel", null); +this.movingSelected = false; +this.slm.noneSelected = Boolean.FALSE; +this.setHoverEnabled(true); +this.setSelectionHalosEnabled(false); +this.tm.setCenter(); +this.am.initializePointers(1); +this.setBooleanPropertyTok("multipleBondBananas", 603979886, false); +if (!this.ms.getMSInfoB("isPyMOL")) { +this.clearAtomSets(); +this.setCurrentModelIndex(0); +}this.setBackgroundModelIndex(-1); +this.setFrankOn(this.getShowFrank()); +this.shm.setScale(); +this.startHoverWatcher(true); +this.setTainted(true); +this.finalizeTransformParameters(); +}, "~B"); +Clazz_defineMethod(c$, "startHoverWatcher", +function(tf){ +if (tf && this.inMotion || !this.haveDisplay || tf && (!this.hoverEnabled && !this.sm.haveHoverCallback() || this.am.animationOn)) return; +this.acm.startHoverWatcher(tf); +}, "~B"); +Clazz_overrideMethod(c$, "getModelSetPathName", +function(){ +return this.mm.modelSetPathName; +}); +Clazz_overrideMethod(c$, "getModelSetFileName", +function(){ +return (this.mm.fileName == null ? this.getZapName() : this.mm.fileName); +}); +Clazz_defineMethod(c$, "getUnitCellInfoText", +function(){ +var c = this.getCurrentUnitCell(); +return (c == null ? "not applicable" : c.getUnitCellInfo(true)); +}); +Clazz_defineMethod(c$, "getUnitCellInfo", +function(infoType){ +var symmetry = this.getCurrentUnitCell(); +return (symmetry == null ? NaN : symmetry.getUnitCellInfoType(infoType)); +}, "~N"); +Clazz_defineMethod(c$, "getV0abc", +function(iModel, def){ +var uc = (iModel < 0 ? this.getCurrentUnitCell() : this.getUnitCell(iModel)); +if (uc == null) uc = this.getSymTemp(); +return (uc == null ? null : uc.getV0abc(def, null)); +}, "~N,~O"); +Clazz_defineMethod(c$, "getCurrentUnitCell", +function(){ +var iAtom = this.am.getUnitCellAtomIndex(); +return (iAtom >= 0 ? this.ms.getUnitCellForAtom(iAtom) : this.getUnitCell(this.am.cmi)); +}); +Clazz_defineMethod(c$, "getUnitCell", +function(modelIndex){ +if (modelIndex >= 0) return this.ms.getUnitCell(modelIndex); +var models = this.getVisibleFramesBitSet(); +var ucLast = null; +for (var i = models.nextSetBit(0); i >= 0; i = models.nextSetBit(i + 1)) { +var uc = this.ms.getUnitCell(i); +if (uc == null) continue; +if (ucLast == null) { +ucLast = uc; +continue; +}if (!ucLast.unitCellEquals(uc)) return null; +} +return ucLast; +}, "~N"); +Clazz_defineMethod(c$, "getPolymerPointsAndVectors", +function(bs, vList){ +this.ms.getPolymerPointsAndVectors(bs, vList, this.g.traceAlpha, this.g.sheetSmoothing); +}, "JU.BS,JU.Lst"); +Clazz_defineMethod(c$, "getHybridizationAndAxes", +function(atomIndex, z, x, lcaoType){ +return this.ms.getHybridizationAndAxes(atomIndex, 0, z, x, lcaoType, true, true, false, null); +}, "~N,JU.V3,JU.V3,~S"); +Clazz_defineMethod(c$, "getAllAtoms", +function(){ +return this.getModelUndeletedAtomsBitSet(-1); +}); +Clazz_defineMethod(c$, "getFrameAtoms", +function(){ +return this.getModelUndeletedAtomsBitSetBs(this.getVisibleFramesBitSet()); +}); +Clazz_overrideMethod(c$, "getVisibleFramesBitSet", +function(){ +var bs = JU.BSUtil.copy(this.am.bsVisibleModels); +if (this.ms.trajectory != null) this.ms.trajectory.selectDisplayed(bs); +return bs; +}); +Clazz_defineMethod(c$, "getModelUndeletedAtomsBitSet", +function(modelIndex){ +return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeleted(modelIndex, true), false); +}, "~N"); +Clazz_defineMethod(c$, "getModelUndeletedAtomsBitSetBs", +function(bsModels){ +return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeletedBs(bsModels), false); +}, "JU.BS"); +Clazz_overrideMethod(c$, "getBoundBoxCenter", +function(){ +return this.ms.getBoundBoxCenter(this.am.cmi); +}); +Clazz_defineMethod(c$, "calcBoundBoxDimensions", +function(bs, scale){ +this.ms.calcBoundBoxDimensions(bs, scale); +this.axesAreTainted = true; +}, "JU.BS,~N"); +Clazz_overrideMethod(c$, "getBoundBoxCornerVector", +function(){ +return this.ms.getBoundBoxCornerVector(); +}); +Clazz_overrideMethod(c$, "getModelSetProperties", +function(){ +return this.ms.modelSetProperties; +}); +Clazz_overrideMethod(c$, "getModelProperties", +function(modelIndex){ +return this.ms.am[modelIndex].properties; +}, "~N"); +Clazz_defineMethod(c$, "getModelForAtomIndex", +function(iatom){ +return this.ms.am[this.ms.at[iatom].mi]; +}, "~N"); +Clazz_defineMethod(c$, "getModelIndexForAtom", +function(iatom){ +return this.ms.at[iatom].mi; +}, "~N"); +Clazz_overrideMethod(c$, "getModelSetAuxiliaryInfo", +function(){ +return this.ms.getModelSetAuxiliaryInfo(null); +}); +Clazz_overrideMethod(c$, "getModelNumber", +function(modelIndex){ +return (modelIndex < 0 ? modelIndex : this.ms.getModelNumber(modelIndex)); +}, "~N"); +Clazz_defineMethod(c$, "getModelFileNumber", +function(modelIndex){ +return (modelIndex < 0 ? 0 : this.ms.modelFileNumbers[modelIndex]); +}, "~N"); +Clazz_overrideMethod(c$, "getModelNumberDotted", +function(modelIndex){ +return modelIndex < 0 ? "0" : this.ms.getModelNumberDotted(modelIndex); +}, "~N"); +Clazz_overrideMethod(c$, "getModelName", +function(modelIndex){ +return this.ms.getModelName(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "modelHasVibrationVectors", +function(modelIndex){ +return (this.ms.getLastVibrationVector(modelIndex, 4166) >= 0); +}, "~N"); +Clazz_defineMethod(c$, "getBondsForSelectedAtoms", +function(bsAtoms){ +return this.ms.getBondsForSelectedAtoms(bsAtoms, this.g.bondModeOr || JU.BSUtil.cardinalityOf(bsAtoms) == 1); +}, "JU.BS"); +Clazz_defineMethod(c$, "frankClicked", +function(x, y){ +return !this.g.disablePopupMenu && this.getShowFrank() && this.shm.checkFrankclicked(x, y); +}, "~N,~N"); +Clazz_defineMethod(c$, "frankClickedModelKit", +function(x, y){ +return !this.g.disablePopupMenu && this.isModelKitOpen() && x >= 0 && y >= 0 && x < 40 && y < 104; +}, "~N,~N"); +Clazz_overrideMethod(c$, "findNearestAtomIndex", +function(x, y){ +return this.findNearestAtomIndexMovable(x, y, false); +}, "~N,~N"); +Clazz_defineMethod(c$, "findNearestAtomIndexMovable", +function(x, y, mustBeMovable){ +return (!this.g.atomPicking ? -1 : this.ms.findNearestAtomIndex(x, y, mustBeMovable ? this.slm.getMotionFixedAtoms() : null, this.g.minPixelSelRadius)); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "toCartesian", +function(pt, ignoreOffset){ +this.toCartesianUC(null, pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "toCartesianUC", +function(unitCell, pt, ignoreOffset){ +if (unitCell == null) unitCell = this.getCurrentUnitCell(); +if (unitCell != null) { +unitCell.toCartesian(pt, ignoreOffset); +if (!this.g.legacyJavaFloat) JU.PT.fixPtFloats(pt, 10000.0); +}}, "J.api.SymmetryInterface,JU.T3,~B"); +Clazz_defineMethod(c$, "toFractional", +function(pt, ignoreOffset){ +this.toFractionalUC(null, pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "toFractionalUC", +function(unitCell, pt, ignoreOffset){ +if (unitCell == null) unitCell = this.getCurrentUnitCell(); +if (unitCell != null) { +unitCell.toFractional(pt, ignoreOffset); +if (!this.g.legacyJavaFloat) JU.PT.fixPtFloats(pt, 100000.0); +}}, "J.api.SymmetryInterface,JU.T3,~B"); +Clazz_defineMethod(c$, "toUnitCell", +function(pt, offset){ +var unitCell = this.getCurrentUnitCell(); +if (unitCell != null) unitCell.toUnitCell(pt, offset); +}, "JU.P3,JU.P3"); +Clazz_defineMethod(c$, "setCurrentCage", +function(isosurfaceId){ +var data = Clazz_newArray(-1, [isosurfaceId, null]); +this.shm.getShapePropertyData(24, "unitCell", data); +this.ms.setModelCage(this.am.cmi, data[1]); +}, "~S"); +Clazz_defineMethod(c$, "addUnitCellOffset", +function(pt){ +var unitCell = this.getCurrentUnitCell(); +if (unitCell == null) return; +pt.add(unitCell.getCartesianOffset()); +}, "JU.P3"); +Clazz_defineMethod(c$, "setAtomData", +function(type, name, coordinateData, isDefault){ +this.ms.setAtomData(type, name, coordinateData, isDefault); +if (type == 2) this.checkCoordinatesChanged(null); +this.refreshMeasures(true); +}, "~N,~S,~S,~B"); +Clazz_overrideMethod(c$, "setCenterSelected", +function(){ +this.setCenterBitSet(this.bsA(), true); +}); +Clazz_defineMethod(c$, "setApplySymmetryToBonds", +function(TF){ +this.g.applySymmetryToBonds = TF; +}, "~B"); +Clazz_overrideMethod(c$, "setBondTolerance", +function(bondTolerance){ +this.g.setF("bondTolerance", bondTolerance); +this.g.bondTolerance = bondTolerance; +}, "~N"); +Clazz_overrideMethod(c$, "setMinBondDistance", +function(minBondDistance){ +this.g.setF("minBondDistance", minBondDistance); +this.g.minBondDistance = minBondDistance; +}, "~N"); +Clazz_defineMethod(c$, "getAtomsNearPt", +function(distance, coord, bs){ +if (bs == null) bs = new JU.BS(); +this.ms.getAtomsWithin(distance, coord, bs, -1); +return bs; +}, "~N,JU.P3,JU.BS"); +Clazz_defineMethod(c$, "getBranchBitSet", +function(atomIndex, atomIndexNot, allowCyclic){ +if (atomIndex < 0 || atomIndex >= this.ms.ac) return new JU.BS(); +return JU.JmolMolecule.getBranchBitSet(this.ms.at, atomIndex, this.getModelUndeletedAtomsBitSet(this.ms.at[atomIndex].mi), null, atomIndexNot, allowCyclic, true); +}, "~N,~N,~B"); +Clazz_overrideMethod(c$, "getElementsPresentBitSet", +function(modelIndex){ +return this.ms.getElementsPresentBitSet(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "getFileHeader", +function(){ +return this.ms.getFileHeader(this.am.cmi); +}); +Clazz_defineMethod(c$, "getFileData", +function(){ +return this.ms.getFileData(this.am.cmi); +}); +Clazz_defineMethod(c$, "getCifData", +function(modelIndex){ +return this.readCifData(this.ms.getModelFileName(modelIndex), this.ms.getModelFileType(modelIndex).toUpperCase()); +}, "~N"); +Clazz_defineMethod(c$, "readCifData", +function(fileName, type){ +var fname = (fileName == null ? this.ms.getModelFileName(this.am.cmi) : fileName); +if (type == null && fname != null && fname.toUpperCase().indexOf("BCIF") >= 0) { +var is = this.fm.getBufferedInputStream(fname); +try { +return (J.api.Interface.getInterface("JU.MessagePackReader", this, "script")).getMapForStream(is); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +return new java.util.Hashtable(); +} else { +throw e; +} +} +}var data = (fileName == null || fileName.length == 0 ? this.getCurrentFileAsString("script") : this.getFileAsString3(fileName, false, null)); +if (data == null || data.length < 2) return null; +var rdr = JU.Rdr.getBR(data); +if (type == null) type = this.getModelAdapter().getFileTypeName(rdr); +return (type == null ? null : this.readCifData(null, rdr, type)); +}, "~S,~S"); +Clazz_defineMethod(c$, "readCifData", +function(fileName, rdrOrStringData, type){ +if (rdrOrStringData == null) rdrOrStringData = this.getFileAsString(fileName); +var rdr = (Clazz_instanceOf(rdrOrStringData,"java.io.BufferedReader") ? rdrOrStringData : JU.Rdr.getBR(rdrOrStringData)); +return JU.Rdr.readCifData(J.api.Interface.getInterface(("Cif2".equals(type) ? "J.adapter.readers.cif.Cif2DataParser" : "JU.CifDataParser"), this, "script"), rdr); +}, "~S,~O,~S"); +Clazz_defineMethod(c$, "getStateCreator", +function(){ +if (this.jsc == null) (this.jsc = J.api.Interface.getInterface("JV.StateCreator", this, "script")).setViewer(this); +return this.jsc; +}); +Clazz_defineMethod(c$, "getWrappedStateScript", +function(){ +return this.getOutputManager().getWrappedState(null, null, null, null); +}); +Clazz_overrideMethod(c$, "getStateInfo", +function(){ +return this.getStateInfo3(null, 0, 0); +}); +Clazz_defineMethod(c$, "getStateInfo3", +function(type, width, height){ +return (this.g.preserveState ? this.getStateCreator().getStateScript(type, width, height) : ""); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "getStructureState", +function(){ +return this.getStateCreator().getModelState(null, false, true); +}); +Clazz_defineMethod(c$, "getCoordinateState", +function(bsSelected){ +return this.getStateCreator().getAtomicPropertyState(2, bsSelected); +}, "JU.BS"); +Clazz_defineMethod(c$, "setCurrentColorRange", +function(label){ +var data = this.getDataObj(label, null, 1); +var bs = (data == null ? null : (this.getDataObj(label, null, -1))[2]); +if (bs != null && this.g.rangeSelected) bs.and(this.bsA()); +this.cm.setPropertyColorRangeData(data, bs); +}, "~S"); +Clazz_defineMethod(c$, "setData", +function(key, data, dataType, matchField, matchFieldColumnCount, dataField, dataFieldColumnCount){ +this.getDataManager().setData(key, this.lastData = data, dataType, this.ms.ac, matchField, matchFieldColumnCount, dataField, dataFieldColumnCount); +}, "~S,~A,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getDataObj", +function(key, bsSelected, dataType){ +return (key == null && dataType == -2 ? this.lastData : this.getDataManager().getData(key, bsSelected, dataType)); +}, "~S,JU.BS,~N"); +Clazz_defineMethod(c$, "autoHbond", +function(bsFrom, bsTo, onlyIfHaveCalculated){ +if (bsFrom == null) bsFrom = bsTo = this.bsA(); +return this.ms.autoHbond(bsFrom, bsTo, onlyIfHaveCalculated); +}, "JU.BS,JU.BS,~B"); +Clazz_defineMethod(c$, "getDefaultMeasurementLabel", +function(nPoints){ +switch (nPoints) { +case 2: +return this.g.defaultDistanceLabel; +case 3: +return this.g.defaultAngleLabel; +default: +return this.g.defaultTorsionLabel; +} +}, "~N"); +Clazz_overrideMethod(c$, "getMeasurementCount", +function(){ +var count = this.getShapePropertyAsInt(6, "count"); +return count <= 0 ? 0 : count; +}); +Clazz_overrideMethod(c$, "getMeasurementStringValue", +function(i){ +return "" + this.shm.getShapePropertyIndex(6, "stringValue", i); +}, "~N"); +Clazz_defineMethod(c$, "getMeasurementInfoAsString", +function(){ +return this.getShapeProperty(6, "infostring"); +}); +Clazz_overrideMethod(c$, "getMeasurementCountPlusIndices", +function(i){ +return this.shm.getShapePropertyIndex(6, "countPlusIndices", i); +}, "~N"); +Clazz_defineMethod(c$, "setPendingMeasurement", +function(mp){ +this.shm.loadShape(6); +this.setShapeProperty(6, "pending", mp); +}, "JM.MeasurementPending"); +Clazz_defineMethod(c$, "getPendingMeasurement", +function(){ +return this.getShapeProperty(6, "pending"); +}); +Clazz_defineMethod(c$, "clearAllMeasurements", +function(){ +this.setShapeProperty(6, "clear", null); +}); +Clazz_overrideMethod(c$, "clearMeasurements", +function(){ +this.evalString("measures delete"); +}); +Clazz_defineMethod(c$, "setAnimation", +function(tok){ +switch (tok) { +case 1073742098: +this.am.reverseAnimation(); +case 1073742096: +case 4143: +if (!this.am.animationOn) this.am.resumeAnimation(); +return; +case 20487: +if (this.am.animationOn && !this.am.animationPaused) this.am.pauseAnimation(); +return; +case 1073742037: +this.am.setAnimationNext(); +return; +case 1073742108: +this.am.setAnimationPrevious(); +return; +case 1073741942: +case 1073742125: +this.am.rewindAnimation(); +return; +case 1073741993: +this.am.setAnimationLast(); +return; +} +}, "~N"); +Clazz_overrideMethod(c$, "setAnimationFps", +function(fps){ +this.am.setAnimationFps(fps); +}, "~N"); +Clazz_defineMethod(c$, "setAnimationMode", +function(mode){ +if (mode.equalsIgnoreCase("once")) { +this.am.setAnimationReplayMode(1073742070, 0, 0); +} else if (mode.equalsIgnoreCase("loop")) { +this.am.setAnimationReplayMode(528411, 1, 1); +} else if (mode.startsWith("pal")) { +this.am.setAnimationReplayMode(1073742082, 1, 1); +}}, "~S"); +Clazz_defineMethod(c$, "setAnimationOn", +function(animationOn){ +var wasAnimating = this.am.animationOn; +if (animationOn == wasAnimating) return; +this.am.setAnimationOn(animationOn); +}, "~B"); +Clazz_defineMethod(c$, "setAnimationRange", +function(modelIndex1, modelIndex2){ +this.am.setAnimationRange(modelIndex1, modelIndex2); +}, "~N,~N"); +Clazz_defineMethod(c$, "defineAtomSets", +function(info){ +this.definedAtomSets.putAll(info); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setAnimDisplay", +function(bs){ +this.am.setDisplay(bs); +if (!this.am.animationOn) this.am.morph(this.am.currentMorphModel + 1); +}, "JU.BS"); +Clazz_defineMethod(c$, "setCurrentModelIndex", +function(modelIndex){ +if (modelIndex == -2147483648) { +this.prevFrame = -2147483648; +this.setCurrentModelIndexClear(this.am.cmi, true); +return; +}this.am.setModel(modelIndex, true); +}, "~N"); +Clazz_defineMethod(c$, "getTrajectoryState", +function(){ +return (this.ms.trajectory == null ? "" : this.ms.trajectory.getState()); +}); +Clazz_defineMethod(c$, "setFrameOffsets", +function(bsAtoms, isFull){ +this.tm.bsFrameOffsets = null; +if (isFull) this.clearModelDependentObjects(); + else this.tm.bsFrameOffsets = bsAtoms; +this.tm.frameOffsets = this.ms.getFrameOffsets(bsAtoms, isFull); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setCurrentModelIndexClear", +function(modelIndex, clearBackground){ +this.am.setModel(modelIndex, clearBackground); +}, "~N,~B"); +Clazz_defineMethod(c$, "haveFileSet", +function(){ +return (this.ms.mc > 1 && this.getModelNumber(2147483647) > 2000000); +}); +Clazz_defineMethod(c$, "setBackgroundModelIndex", +function(modelIndex){ +this.am.setBackgroundModelIndex(modelIndex); +this.g.setO("backgroundModel", this.ms.getModelNumberDotted(modelIndex)); +}, "~N"); +Clazz_defineMethod(c$, "setFrameVariables", +function(){ +this.g.setO("animationMode", JS.T.nameOf(this.am.animationReplayMode)); +this.g.setI("animationFps", this.am.animationFps); +this.g.setO("_firstFrame", this.am.getModelSpecial(-1)); +this.g.setO("_lastFrame", this.am.getModelSpecial(1)); +this.g.setF("_animTimeSec", this.am.getAnimRunTimeSeconds()); +this.g.setB("_animMovie", this.am.isMovie); +}); +Clazz_defineMethod(c$, "getInMotion", +function(includeAnim){ +return (this.inMotion || includeAnim && this.am.animationOn); +}, "~B"); +Clazz_overrideMethod(c$, "getMotionEventNumber", +function(){ +return this.motionEventNumber; +}); +Clazz_overrideMethod(c$, "setInMotion", +function(inMotion){ +if ( new Boolean (this.inMotion ^ inMotion).valueOf()) { +this.inMotion = inMotion; +this.resizeImage(0, 0, false, false, true); +if (inMotion) { +this.startHoverWatcher(false); +++this.motionEventNumber; +} else { +this.startHoverWatcher(true); +this.refresh(3, "vwr setInMotion " + inMotion); +}}}, "~B"); +Clazz_defineMethod(c$, "setRefreshing", +function(TF){ +this.refreshing = TF; +}, "~B"); +Clazz_defineMethod(c$, "getRefreshing", +function(){ +return this.refreshing; +}); +Clazz_overrideMethod(c$, "pushHoldRepaint", +function(){ +this.pushHoldRepaintWhy(null); +}); +Clazz_defineMethod(c$, "pushHoldRepaintWhy", +function(why){ +if (this.rm != null) this.rm.pushHoldRepaint(why); +}, "~S"); +Clazz_overrideMethod(c$, "popHoldRepaint", +function(why){ +if (this.rm != null) { +this.rm.popHoldRepaint(why.indexOf("\u0001## REPAINT_IGNORE ##") < 0, why); +}}, "~S"); +Clazz_overrideMethod(c$, "refresh", +function(mode, strWhy){ +if (this.rm == null || !this.refreshing || mode == 6 && this.getInMotion(true) || !this.isWebGL && mode == 7) return; +if (this.isWebGL) { +switch (mode) { +case 1: +case 2: +case 7: +this.tm.finalizeTransformParameters(); +if (this.html5Applet == null) return; +this.html5Applet._refresh(); +if (mode == 7) return; +break; +} +} else { +this.rm.repaintIfReady("refresh " + mode + " " + strWhy); +}if (this.sm.doSync()) this.sm.setSync(mode == 2 ? strWhy : null); +}, "~N,~S"); +Clazz_defineMethod(c$, "requestRepaintAndWait", +function(why){ +if (this.rm == null) return; +if (!this.haveDisplay) { +this.setModelVisibility(); +this.shm.finalizeAtoms(null, true); +return; +}this.rm.requestRepaintAndWait(why); +this.setSync(); +}, "~S"); +Clazz_defineMethod(c$, "clearShapeRenderers", +function(){ +this.clearRepaintManager(-1); +}); +Clazz_defineMethod(c$, "isRepaintPending", +function(){ +return (this.rm == null ? false : this.rm.isRepaintPending()); +}); +Clazz_overrideMethod(c$, "notifyViewerRepaintDone", +function(){ +if (this.rm != null) this.rm.repaintDone(); +this.am.repaintDone(); +}); +Clazz_defineMethod(c$, "areAxesTainted", +function(){ +var TF = this.axesAreTainted; +this.axesAreTainted = false; +return TF; +}); +Clazz_overrideMethod(c$, "generateOutputForExport", +function(params){ +return (this.noGraphicsAllowed || this.rm == null ? null : this.getOutputManager().getOutputFromExport(params)); +}, "java.util.Map"); +Clazz_defineMethod(c$, "clearRepaintManager", +function(iShape){ +if (this.rm != null) this.rm.clear(iShape); +}, "~N"); +Clazz_defineMethod(c$, "renderScreenImage", +function(g, width, height){ +this.renderScreenImageStereo(g, false, width, height); +}, "~O,~N,~N"); +Clazz_defineMethod(c$, "renderScreenImageStereo", +function(gLeft, checkStereoSlave, width, height){ +if (this.updateWindow(width, height)) { +if (!checkStereoSlave || this.gRight == null) { +this.getScreenImageBuffer(gLeft, false); +} else { +this.drawImage(this.gRight, this.getImage(true, false), 0, 0, this.tm.stereoDoubleDTI); +this.drawImage(gLeft, this.getImage(false, false), 0, 0, this.tm.stereoDoubleDTI); +}}if (this.captureParams != null && Boolean.FALSE !== this.captureParams.get("captureEnabled")) { +this.captureParams.remove("imagePixels"); +var t = (this.captureParams.get("endTime")).longValue(); +if (t > 0 && System.currentTimeMillis() + 50 > t) this.captureParams.put("captureMode", "end"); +this.processWriteOrCapture(this.captureParams); +}this.notifyViewerRepaintDone(); +}, "~O,~B,~N,~N"); +Clazz_defineMethod(c$, "updateJS", +function(){ +if (this.isWebGL) { +if (this.jsParams == null) { +this.jsParams = new java.util.Hashtable(); +this.jsParams.put("type", "JS"); +}if (this.updateWindow(0, 0)) this.render(); +this.notifyViewerRepaintDone(); +} else { +if (this.isStereoSlave) return; +this.renderScreenImageStereo(this.apiPlatform.getGraphics(null), true, 0, 0); +}}); +Clazz_defineMethod(c$, "updateJSView", +function(imodel, iatom){ +if (this.html5Applet == null) return; +var applet = this.html5Applet; +var doViewPick = true; +{ +doViewPick = (applet != null && applet._viewSet != null); +}if (doViewPick) this.html5Applet._atomPickedCallback(imodel, iatom); +}, "~N,~N"); +Clazz_overrideMethod(c$, "evalFile", +function(strFilename){ +return this.evalFileArgs(strFilename, null); +}, "~S"); +Clazz_overrideMethod(c$, "evalFileArgs", +function(strFilename, args){ +return (this.allowScripting && this.getScriptManager() != null ? this.scm.evalFileArgs(strFilename, args) : null); +}, "~S,~S"); +Clazz_defineMethod(c$, "getInsertedCommand", +function(){ +var s = this.insertedCommand; +this.insertedCommand = ""; +if (JU.Logger.debugging && s !== "") JU.Logger.debug("inserting: " + s); +return s; +}); +Clazz_overrideMethod(c$, "script", +function(strScript){ +return this.evalStringQuietSync(strScript, false, true); +}, "~S"); +Clazz_overrideMethod(c$, "evalString", +function(strScript){ +return this.evalStringQuietSync(strScript, false, true); +}, "~S"); +Clazz_overrideMethod(c$, "evalStringQuiet", +function(strScript){ +return this.evalStringQuietSync(strScript, true, true); +}, "~S"); +Clazz_defineMethod(c$, "evalStringQuietSync", +function(strScript, isQuiet, allowSyncScript){ +return (this.getScriptManager() == null ? null : this.scm.evalStringQuietSync(strScript, isQuiet, allowSyncScript)); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "clearScriptQueue", +function(){ +if (this.scm != null) this.scm.clearQueue(); +}); +Clazz_defineMethod(c$, "setScriptQueue", +function(TF){ +this.g.useScriptQueue = TF; +if (!TF) this.clearScriptQueue(); +}, "~B"); +Clazz_overrideMethod(c$, "checkHalt", +function(str, isInsert){ +return (this.scm != null && this.scm.checkHalt(str, isInsert)); +}, "~S,~B"); +Clazz_overrideMethod(c$, "scriptWait", +function(strScript){ +return this.evalWait("JSON", strScript, "+scriptStarted,+scriptStatus,+scriptEcho,+scriptTerminated"); +}, "~S"); +Clazz_overrideMethod(c$, "scriptWaitStatus", +function(strScript, statusList){ +return this.evalWait("object", strScript, statusList); +}, "~S,~S"); +Clazz_defineMethod(c$, "evalWait", +function(returnType, strScript, statusList){ +if (this.getScriptManager() == null) return null; +this.scm.waitForQueue(); +var doTranslateTemp = J.i18n.GT.setDoTranslate(false); +var ret = this.evalStringWaitStatusQueued(returnType, strScript, statusList, false, false); +J.i18n.GT.setDoTranslate(doTranslateTemp); +return ret; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "exitJmol", +function(){ +if (this.isApplet && !this.isJNLP) return; +if (this.headlessImageParams != null) { +try { +if (this.headless) this.outputToFile(this.headlessImageParams); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}if (JU.Logger.debugging) JU.Logger.debug("exitJmol -- exiting"); +System.out.flush(); +System.exit(0); +}); +Clazz_defineMethod(c$, "scriptCheckRet", +function(strScript, returnContext){ +return (this.getScriptManager() == null ? null : this.scm.scriptCheckRet(strScript, returnContext)); +}, "~S,~B"); +Clazz_overrideMethod(c$, "scriptCheck", +function(strScript){ +return this.scriptCheckRet(strScript, false); +}, "~S"); +Clazz_overrideMethod(c$, "isScriptExecuting", +function(){ +return (this.eval != null && this.eval.isExecuting()); +}); +Clazz_overrideMethod(c$, "haltScriptExecution", +function(){ +if (this.eval != null) { +this.eval.haltExecution(); +this.eval.stopScriptThreads(); +}this.setStringPropertyTok("pathForAllFiles", 545259572, ""); +this.clearTimeouts(); +}); +Clazz_defineMethod(c$, "pauseScriptExecution", +function(){ +if (this.eval != null) this.eval.pauseExecution(true); +}); +Clazz_defineMethod(c$, "resolveDatabaseFormat", +function(fileName){ +return (JV.Viewer.hasDatabasePrefix(fileName) || fileName.indexOf("cactus.nci.nih.gov/chemical/structure") >= 0 ? this.setLoadFormat(false, fileName, fileName.charAt(0), false) : fileName); +}, "~S"); +c$.hasDatabasePrefix = Clazz_defineMethod(c$, "hasDatabasePrefix", +function(fileName){ +return (fileName.length != 0 && JV.Viewer.isDatabaseCode(fileName.charAt(0))); +}, "~S"); +c$.isDatabaseCode = Clazz_defineMethod(c$, "isDatabaseCode", +function(ch){ +return (ch == '*' || ch == '$' || ch == '=' || ch == ':'); +}, "~S"); +Clazz_defineMethod(c$, "setLoadFormat", +function(isSurface, name, type, withPrefix){ +var format = null; +var id = name.substring(1); +switch ((type).charCodeAt(0)) { +case 99: +return name; +case 104: +if (this.g.checkCIR) this.checkCIR(false); +return this.g.nihResolverFormat + name.substring(name.indexOf("/structure") + 10); +case 61: +if (name.startsWith("==")) { +id = id.substring(1); +if (id.equals("?") && (id = this.getDBID("chemical component from RCSB")) == null) return null; +type = '#'; +} else { +if (id.equals("?") && (id = this.getDBID("PDB ID from RCSB")) == null) return null; +if (id.indexOf("/") > 0) { +try { +var pt = id.indexOf("/"); +var database = id.substring(0, pt); +id = id.substring(pt + 1); +if (database.equalsIgnoreCase("aflowlib")) { +var index = 1; +pt = id.indexOf('.'); +if (pt >= 0) { +index = JU.PT.parseInt(id.substring(pt + 1)); +id = id.substring(0, pt); +}if (id.indexOf("_") < 0) id = this.getSymTemp().getSpaceGroupJSON(this, "AFLOW", id, index); +}id = JV.JC.resolveDataBase(database, id, null); +if (id != null && id.startsWith("'")) id = this.evaluateExpression(id).toString(); +return (id == null || id.length == 0 ? name : id); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return name; +} else { +throw e; +} +} +}if (!isSurface && id.endsWith(".bcif")) { +id = id.substring(0, id.indexOf(".bcif")); +return JV.JC.resolveDataBase("bcif", id.toLowerCase(), null); +}if (id.endsWith(".mmtf")) { +id = id.substring(0, id.indexOf(".mmtf")); +return JV.JC.resolveDataBase("mmtf", id.toUpperCase(), null); +}format = this.g.loadFormat; +}case 35: +if (format == null) format = this.g.pdbLoadLigandFormat; +return JV.JC.resolveDataBase(null, id, format); +case 42: +if (id.equals("?") && (id = this.getDBID("PDB ID from EBI")) == null) return null; +var pt = name.lastIndexOf("/"); +if (name.startsWith("*dom/")) { +id = name.substring(pt + 1); +format = (pt > 4 ? name.substring(5) : "mappings"); +return JU.PT.rep(JV.JC.resolveDataBase("map", id, null), "%TYPE", format); +} else if (name.startsWith("*val/")) { +id = name.substring(pt + 1); +format = (pt > 4 ? name.substring(5) : "validation/outliers/all"); +return JU.PT.rep(JV.JC.resolveDataBase("map", id, null), "%TYPE", format); +} else if (name.startsWith("*rna3d/")) { +id = name.substring(pt + 1); +format = (pt > 6 ? name.substring(6) : "loops"); +return JU.PT.rep(JV.JC.resolveDataBase("rna3d", id, null), "%TYPE", format); +} else if (name.startsWith("*dssr--")) { +id = name.substring(pt + 1); +id = JV.JC.resolveDataBase("dssr", id, null); +return id + "%20" + JU.PT.rep(name.substring(5, pt), " ", "%20"); +} else if (name.startsWith("*dssr/")) { +id = name.substring(pt + 1); +return JV.JC.resolveDataBase("dssr", id, null); +} else if (name.startsWith("*dssr1/")) { +id = name.substring(pt + 1); +return JV.JC.resolveDataBase("dssr1", id, null); +}var pdbe = "pdbe"; +if (id.length == 5 && id.charAt(4) == '*') { +pdbe = "pdbe2"; +id = id.substring(0, 4); +}return JV.JC.resolveDataBase(pdbe, id, null); +case 58: +format = this.g.pubChemFormat; +if (id.equals("?") && (id = this.getDBID("structure from PubChem")) == null) return null; +if (id === "") { +try { +id = "smiles:" + this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}var fl = id.toLowerCase(); +var fi = -2147483648; +try { +fi = Integer.parseInt(id); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (fi != -2147483648) { +id = "cid/" + fi; +} else { +if (fl.startsWith("smiles:")) { +format += "?POST?smiles=" + id.substring(7); +id = "smiles"; +} else if (id.startsWith("cid:") || id.startsWith("inchikey:") || id.startsWith("cas:")) { +id = id.$replace(':', '/'); +} else { +if (fl.startsWith("name:")) id = id.substring(5); +id = "name/" + JU.PT.escapeUrl(id); +}}return JU.PT.formatStringS(format, "FILE", id); +case 36: +this.checkCIR(false); +if (id.equals("?") && (id = this.getDBID("structure from NCI/CADD")) == null) return null; +if (name.equals("$")) { +try { +id = this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} else if (name.startsWith("$$")) { +id = id.substring(1); +if (id.length == 0) { +try { +id = this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}format = JU.PT.rep(this.g.smilesUrlFormat, "get3d", "get2d"); +return JU.PT.formatStringS(format, "FILE", JU.PT.escapeUrl(id)); +}case 77: +case 78: +case 50: +case 73: +case 75: +case 83: +case 84: +case 47: +id = JU.PT.escapeUrl(id); +switch ((type).charCodeAt(0)) { +case 77: +case 78: +format = this.g.nihResolverFormat + "/%FILE/names"; +break; +case 50: +format = this.g.nihResolverFormat + "/%FILE/image"; +break; +case 73: +case 84: +format = this.g.nihResolverFormat + "/%FILE/stdinchi"; +break; +case 75: +format = this.g.nihResolverFormat + "/%FILE/inchikey"; +break; +case 83: +format = this.g.nihResolverFormat + "/%FILE/stdinchikey"; +break; +case 47: +format = this.g.nihResolverFormat + "/%FILE/"; +break; +default: +format = this.g.smilesUrlFormat; +break; +} +return (withPrefix ? "MOL3D::" : "") + JU.PT.formatStringS(format, "FILE", id); +case 63: +case 45: +case 95: +var isDiff = id.startsWith("*") || id.startsWith("="); +if (isDiff) id = id.substring(1); +var ciftype = null; +pt = id.indexOf("."); +if (pt >= 0) { +ciftype = id.substring(pt + 1); +id = id.substring(0, pt); +}var checkXray = id.startsWith("density"); +if (checkXray) id = "em" + id.substring(7); +if (id.equals("emdb") || id.equals("em")) id += "/"; +if (id.startsWith("em/")) id = "emdb" + id.substring(2); +if (id.startsWith("emdb/")) { +id = id.substring(5); +if (id.length == 0) id = "="; + else if (id.startsWith("*")) id = "=" + id.substring(1); +var emdext = "#-sigma=10"; +if (id.startsWith("=")) { +id = (id.equals("=") ? this.getPdbID() : id.substring(1)); +if (id == null || type == '?') return id; +var q = JV.JC.resolveDataBase("emdbquery", id, null); +var data = this.fm.cacheGet(q, false); +if (data == null) { +this.showString("retrieving " + q, false); +data = this.getFileAsString(q); +if (data == null) { +this.showString("EM retrieve failed for " + id, false); +if (!checkXray) return null; +data = "FAILED"; +} else { +this.showString(data, false); +}this.fm.cachePut(q, data); +}pt = data.indexOf("EMD-"); +if (pt >= 0) { +id = data.substring(pt + 4); +pt = id.indexOf('\n'); +if (pt > 0) id = id.substring(0, pt); +pt = id.indexOf(","); +if (pt > 0) { +emdext = "#-cutoff=" + id.substring(pt + 1); +id = id.substring(0, pt); +}} else { +if (!checkXray) return null; +emdext = null; +}}if (emdext != null) return JV.JC.resolveDataBase("emdbmap" + (type == '-' ? "server" : ""), id, null) + emdext; +}id = JV.JC.resolveDataBase((isDiff ? "pdbemapdiff" : "pdbemap") + (type == '-' ? "server" : ""), id, null); +if ("cif".equals(ciftype)) { +id = id.$replace("bcif", "cif"); +}break; +} +return id; +}, "~B,~S,~S,~B"); +Clazz_defineMethod(c$, "getDBID", +function(type){ +return this.prompt("load a " + type, "", null, false); +}, "~S"); +Clazz_defineMethod(c$, "checkCIR", +function(forceCheck){ +if (this.cirChecked && !forceCheck || this.g.resolverResolver == null) return; +try { +this.g.removeParam("_cirStatus"); +var m = this.getModelSetAuxiliaryInfo(); +m.remove("cirInfo"); +var s = this.getFileAsString(this.g.resolverResolver); +System.out.println(s); +var map = this.parseJSONMap(s); +m.put("cirInfo", map); +this.ms.msInfo = m; +s = map.get("status"); +this.g.setO("_cirStatus", s); +this.g.setCIR(map.get("rfc6570Template"), !this.isSilent); +if (!this.isSilent) JU.Logger.info("Viewer.checkCIR _.cirInfo.status = " + s); +} catch (t) { +System.out.println("Viewer.checkCIR failed at " + this.g.resolverResolver + ": " + t); +} +this.cirChecked = true; +}, "~B"); +Clazz_defineMethod(c$, "getStandardLabelFormat", +function(type){ +switch (type) { +default: +case 0: +return "%[identify]"; +case 1: +return this.g.defaultLabelXYZ; +case 2: +return this.g.defaultLabelPDB; +} +}, "~N"); +Clazz_defineMethod(c$, "getAdditionalHydrogens", +function(bsAtoms, vConnections, flags){ +if (bsAtoms == null) bsAtoms = this.bsA(); +var nTotal = Clazz_newIntArray (1, 0); +var pts = this.ms.calculateHydrogens(bsAtoms, nTotal, vConnections, flags); +var points = new Array(nTotal[0]); +for (var i = 0, pt = 0; i < pts.length; i++) if (pts[i] != null) for (var j = 0; j < pts[i].length; j++) points[pt++] = pts[i][j]; + + +return points; +}, "JU.BS,JU.Lst,~N"); +Clazz_overrideMethod(c$, "setMarBond", +function(marBond){ +this.g.bondRadiusMilliAngstroms = marBond; +this.g.setI("bondRadiusMilliAngstroms", marBond); +this.setShapeSize(1, marBond * 2, JU.BSUtil.setAll(this.ms.ac)); +}, "~N"); +Clazz_defineMethod(c$, "setHoverLabel", +function(strLabel){ +this.shm.loadShape(35); +this.setShapeProperty(35, "label", strLabel); +this.setHoverEnabled(strLabel != null); +this.g.setO("_hoverLabel", this.hoverLabel = strLabel); +if (!this.hoverEnabled && !this.sm.haveHoverCallback()) this.startHoverWatcher(false); +}, "~S"); +Clazz_defineMethod(c$, "setHoverEnabled", +function(tf){ +this.hoverEnabled = tf; +this.g.setB("_hoverEnabled", tf); +}, "~B"); +Clazz_defineMethod(c$, "hoverOn", +function(atomIndex, isLabel){ +this.g.removeParam("_objecthovered"); +this.g.setI("_atomhovered", atomIndex); +this.g.setO("_hoverLabel", this.hoverLabel); +this.g.setUserVariable("hovered", JS.SV.getVariable(JU.BSUtil.newAndSetBit(atomIndex))); +if (this.sm.haveHoverCallback()) this.sm.setStatusAtomHovered(atomIndex, this.getAtomInfoXYZ(atomIndex, 2)); +if (!this.hoverEnabled || this.eval != null && this.isScriptExecuting() || atomIndex == this.hoverAtomIndex || this.g.hoverDelayMs == 0 || !this.slm.isInSelectionSubset(atomIndex)) return; +var label = (isLabel ? J.i18n.GT.$("Drag to move label") : this.isModelKitOpen() || this.isModelkitPickingActive() ? this.getModelkit(false).setProperty("hoverlabel", Integer.$valueOf(atomIndex)) : null); +this.shm.loadShape(35); +if (label != null && (!isLabel || this.ms.at[atomIndex].isVisible(512))) { +this.setShapeProperty(35, "specialLabel", label); +}this.setShapeProperty(35, "text", this.hoverText = null); +this.setShapeProperty(35, "target", Integer.$valueOf(this.hoverAtomIndex = atomIndex)); +this.refresh(3, "hover on atom"); +}, "~N,~B"); +Clazz_defineMethod(c$, "isModelkitPickingActive", +function(){ +if (this.acm.getAtomPickingMode() == 32) return true; +switch (this.acm.getBondPickingMode()) { +case 34: +case 33: +case 8: +case 35: +return this.g.bondPicking; +} +return false; +}); +Clazz_defineMethod(c$, "isModelkitPickingRotateBond", +function(){ +return (this.acm.getBondPickingMode() == 34); +}); +Clazz_defineMethod(c$, "hoverOnPt", +function(x, y, text, id, pt){ +if (this.eval != null && this.isScriptExecuting()) return; +this.g.setO("_hoverLabel", text); +if (id != null && pt != null) { +this.g.setO("_objecthovered", id); +this.g.setI("_atomhovered", -1); +this.g.setUserVariable("hovered", JS.SV.getVariable(pt)); +if (this.sm.haveHoverCallback()) this.sm.setStatusObjectHovered(id, text, pt); +}if (!this.hoverEnabled) return; +this.shm.loadShape(35); +if (this.gdata.antialiasEnabled) { +x <<= 1; +y <<= 1; +}this.setShapeProperty(35, "xy", JU.P3i.new3(x, y, 0)); +this.setShapeProperty(35, "target", null); +this.setShapeProperty(35, "specialLabel", null); +this.setShapeProperty(35, "text", text); +this.hoverAtomIndex = -1; +this.hoverText = text; +this.refresh(3, "hover on point"); +}, "~N,~N,~S,~S,JU.T3"); +Clazz_defineMethod(c$, "hoverOff", +function(){ +try { +if ((this.isModelKitOpen() || this.modelkit != null && this.modelkit.wasRotating()) && !this.isModelkitPickingRotateBond()) this.highlight(null); +if (!this.hoverEnabled) return; +var isHover = (this.hoverText != null || this.hoverAtomIndex >= 0); +if (this.hoverAtomIndex >= 0) { +this.setShapeProperty(35, "target", null); +this.hoverAtomIndex = -1; +}if (this.hoverText != null) { +this.setShapeProperty(35, "text", null); +this.hoverText = null; +}this.setShapeProperty(35, "specialLabel", null); +if (isHover) this.refresh(3, "hover off"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "setDebugScript", +function(debugScript){ +this.g.debugScript = debugScript; +this.g.setB("debugScript", debugScript); +if (this.eval != null) this.eval.setDebugging(); +}, "~B"); +Clazz_defineMethod(c$, "clearClickCount", +function(){ +this.setTainted(true); +}); +Clazz_defineMethod(c$, "setCursor", +function(cursor){ +if (this.$isKiosk || this.currentCursor == cursor || this.multiTouch || !this.haveDisplay) return; +this.apiPlatform.setCursor(this.currentCursor = cursor, this.display); +}, "~N"); +Clazz_defineMethod(c$, "setPickingMode", +function(strMode, pickingMode){ +if (!this.haveDisplay) return; +var mode = this.acm.getAtomPickingMode(); +this.showSelected = false; +var option = null; +if (strMode != null) { +var pt = strMode.indexOf("_"); +if (pt >= 0) { +option = strMode.substring(pt + 1); +strMode = strMode.substring(0, pt); +}pickingMode = JV.ActionManager.getPickingMode(strMode); +}if (pickingMode < 0) pickingMode = 1; +this.acm.setPickingMode(pickingMode); +var name = JV.ActionManager.getPickingModeName(this.acm.getAtomPickingMode()); +this.g.setO("picking", name); +if (this.modelkit != null) { +this.modelkit.setProperty("atompickingmode", name); +this.acm.setPickingMode(pickingMode); +switch (pickingMode) { +case 1: +if (pickingMode != mode) this.setModelKitMode(false); +break; +case 8: +case 35: +this.modelkit.setProperty("bondpickingmode", strMode.toLowerCase()); +break; +} +}if (option == null || option.length == 0) return; +option = Character.toUpperCase(option.charAt(0)) + (option.length == 1 ? "" : option.substring(1, 2)); +switch (pickingMode) { +case 32: +this.getModelkit(false).setProperty("atomtype", option); +break; +case 33: +this.setBooleanPropertyTok("bondPicking", 603979814, true); +this.getModelkit(false).setProperty("bondtype", option); +break; +default: +JU.Logger.error("Bad picking mode: " + strMode + "_" + option); +} +}, "~S,~N"); +Clazz_defineMethod(c$, "getPickingMode", +function(){ +return (this.haveDisplay ? this.acm.getAtomPickingMode() : 0); +}); +Clazz_defineMethod(c$, "setPickingStyle", +function(style, pickingStyle){ +if (!this.haveDisplay) return; +if (style != null) pickingStyle = JV.ActionManager.getPickingStyleIndex(style); +if (pickingStyle < 0) pickingStyle = 0; +this.acm.setPickingStyle(pickingStyle); +this.g.setO("pickingStyle", JV.ActionManager.getPickingStyleName(this.acm.getPickingStyle())); +}, "~S,~N"); +Clazz_defineMethod(c$, "getDrawHover", +function(){ +return this.haveDisplay && this.g.drawHover; +}); +Clazz_defineMethod(c$, "getAtomInfo", +function(atomOrPointIndex){ +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +return (atomOrPointIndex >= 0 ? this.ms.getAtomInfo(atomOrPointIndex, null, this.ptTemp) : this.shm.getShapePropertyIndex(6, "pointInfo", -atomOrPointIndex)); +}, "~N"); +Clazz_defineMethod(c$, "getAtomInfoXYZ", +function(atomIndex, mode){ +var atom = this.ms.at[atomIndex]; +if (mode == 4) return this.getChimeMessenger().getInfoXYZ(atom); +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +return atom.getIdentityXYZ(this.ptTemp, mode); +}, "~N,~N"); +Clazz_defineMethod(c$, "setSync", +function(){ +if (this.sm.doSync()) this.sm.setSync(null); +}); +Clazz_overrideMethod(c$, "setJmolCallbackListener", +function(listener){ +this.sm.cbl = listener; +}, "J.api.JmolCallbackListener"); +Clazz_overrideMethod(c$, "setJmolStatusListener", +function(listener){ +this.sm.cbl = this.sm.jsl = listener; +}, "J.api.JmolStatusListener"); +Clazz_defineMethod(c$, "getStatusChanged", +function(statusNameList){ +return (statusNameList == null ? null : this.sm.getStatusChanged(statusNameList)); +}, "~S"); +Clazz_defineMethod(c$, "menuEnabled", +function(){ +return (!this.g.disablePopupMenu && this.getPopupMenu() != null); +}); +Clazz_defineMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +if (mode == 0) { +this.g.setO("_fileDropped", fileName); +this.g.setUserVariable("doDrop", JS.SV.vT); +this.g.setUserVariable("dropFileType", JS.SV.newS("")); +this.g.setUserVariable("dropFileName", JS.SV.newS(fileName)); +}var handled = this.sm.setStatusDragDropped(mode, x, y, fileName, retType); +var type = this.getP("dropFileType").toString(); +if (type.length > 0 && retType != null) { +retType[0] = type; +}return (!handled || this.getP("doDrop").toString().equals("true")); +}, "~N,~N,~N,~S,~A"); +Clazz_defineMethod(c$, "setStatusResized", +function(width, height){ +this.sm.setStatusResized(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "scriptStatus", +function(strStatus){ +this.setScriptStatus(strStatus, "", 0, null); +}, "~S"); +Clazz_defineMethod(c$, "scriptStatusMsg", +function(strStatus, statusMessage){ +this.setScriptStatus(strStatus, statusMessage, 0, null); +}, "~S,~S"); +Clazz_defineMethod(c$, "setScriptStatus", +function(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated){ +this.sm.setScriptStatus(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated); +}, "~S,~S,~N,~S"); +Clazz_overrideMethod(c$, "showUrl", +function(urlString){ +if (urlString == null) return; +if (urlString.indexOf(":") < 0) { +var base = this.fm.getAppletDocumentBase(); +if (base === "") base = this.fm.getFullPathName(false); +if (base.indexOf("/") >= 0) { +base = base.substring(0, base.lastIndexOf("/") + 1); +} else if (base.indexOf("\\") >= 0) { +base = base.substring(0, base.lastIndexOf("\\") + 1); +}urlString = base + urlString; +}JU.Logger.info("showUrl:" + urlString); +this.sm.showUrl(urlString); +}, "~S"); +Clazz_defineMethod(c$, "setMeshCreator", +function(meshCreator){ +this.shm.loadShape(24); +this.setShapeProperty(24, "meshCreator", meshCreator); +}, "~O"); +Clazz_defineMethod(c$, "showConsole", +function(showConsole){ +if (!this.haveDisplay) return; +try { +if (this.appConsole == null && showConsole) this.getConsole(); +this.appConsole.setVisible(true); +} catch (e) { +} +}, "~B"); +Clazz_defineMethod(c$, "getConsole", +function(){ +this.getProperty("DATA_API", "getAppConsole", Boolean.TRUE); +return this.appConsole; +}); +Clazz_overrideMethod(c$, "getParameter", +function(key){ +return this.getP(key); +}, "~S"); +Clazz_defineMethod(c$, "getP", +function(key){ +return this.g.getParameter(key, true); +}, "~S"); +Clazz_defineMethod(c$, "getPOrNull", +function(key){ +return this.g.getParameter(key, false); +}, "~S"); +Clazz_defineMethod(c$, "unsetProperty", +function(key){ +key = key.toLowerCase(); +if (key.equals("all") || key.equals("variables")) this.fm.setPathForAllFiles(""); +this.g.unsetUserVariable(key); +}, "~S"); +Clazz_overrideMethod(c$, "notifyStatusReady", +function(isReady){ +System.out.println("Jmol applet " + this.fullName + (isReady ? " ready" : " destroyed")); +if (!isReady) this.dispose(); +this.sm.setStatusAppletReady(this.fullName, isReady); +}, "~B"); +Clazz_overrideMethod(c$, "getBooleanProperty", +function(key){ +key = key.toLowerCase(); +if (this.g.htBooleanParameterFlags.containsKey(key)) return this.g.htBooleanParameterFlags.get(key).booleanValue(); +if (key.endsWith("p!")) { +if (this.acm == null) return false; +var s = this.acm.getPickingState().toLowerCase(); +key = key.substring(0, key.length - 2) + ";"; +return (s.indexOf(key) >= 0); +}if (key.equalsIgnoreCase("executionPaused")) return (this.eval != null && this.eval.isPaused()); +if (key.equalsIgnoreCase("executionStepping")) return (this.eval != null && this.eval.isStepping()); +if (key.equalsIgnoreCase("haveBFactors")) return (this.ms.getBFactors() != null); +if (key.equalsIgnoreCase("colorRasmol")) return this.cm.isDefaultColorRasmol; +if (key.equalsIgnoreCase("frank")) return this.getShowFrank(); +if (key.equalsIgnoreCase("spinOn")) return this.tm.spinOn; +if (key.equalsIgnoreCase("isNavigating")) return this.tm.isNavigating(); +if (key.equalsIgnoreCase("showSelections")) return this.selectionHalosEnabled; +if (this.g.htUserVariables.containsKey(key)) { +var t = this.g.getUserVariable(key); +if (t.tok == 1073742335) return true; +if (t.tok == 1073742334) return false; +}JU.Logger.error("vwr.getBooleanProperty(" + key + ") - unrecognized"); +return false; +}, "~S"); +Clazz_overrideMethod(c$, "getInt", +function(tok){ +switch (tok) { +case 553648132: +return this.am.animationFps; +case 553648139: +return this.g.dotDensity; +case 553648140: +return this.g.dotScale; +case 553648142: +return this.g.helixStep; +case 553648145: +return this.g.infoFontSize; +case 553648147: +return this.g.labelPointerWidth; +case 553648149: +return this.g.meshScale; +case 553648150: +return this.g.minimizationReportSteps; +case 553648153: +return this.g.minPixelSelRadius; +case 553648154: +return this.g.percentVdwAtom; +case 553648157: +return this.g.pickingSpinRate; +case 553648166: +return this.g.ribbonAspectRatio; +case 536870922: +return this.g.scriptDelay; +case 553648152: +return this.g.minimizationMaxAtoms; +case 553648170: +return this.g.smallMoleculeMaxAtoms; +case 553648183: +return this.g.strutSpacing; +case 553648184: +return this.stm.getUndoMax(); +case 553648185: +return this.g.vectorTrail; +} +JU.Logger.error("viewer.getInt(" + JS.T.nameOf(tok) + ") - not listed"); +return 0; +}, "~N"); +Clazz_defineMethod(c$, "getDelayMaximumMs", +function(){ +return (this.haveDisplay ? this.g.delayMaximumMs : 1); +}); +Clazz_defineMethod(c$, "getHermiteLevel", +function(){ +return (this.tm.spinOn && this.g.hermiteLevel > 0 ? 0 : this.g.hermiteLevel); +}); +Clazz_defineMethod(c$, "getHoverDelay", +function(){ +return (this.isModelKitOpen() || this.isModelkitPickingActive() || this.getDrawHover() ? 20 : this.g.hoverDelayMs); +}); +Clazz_overrideMethod(c$, "getBoolean", +function(tok){ +switch (tok) { +case 603979970: +return this.g.useMinimizationThread; +case 603979891: +return this.g.nboCharges; +case 603979856: +return this.g.hiddenLinesDashed; +case 1073742086: +return this.ms.getMSInfoB(JV.JC.getBoolName(4)); +case 603979802: +return this.g.autoplayMovie; +case 603979797: +return !this.headless && this.g.allowAudio; +case 603979780: +return this.g.allowGestures; +case 603979784: +return this.g.allowMultiTouch; +case 603979785: +return this.g.allowRotateSelected; +case 603979792: +return this.g.appendNew; +case 603979794: +return this.g.applySymmetryToBonds; +case 603979796: +return this.g.atomPicking; +case 603979798: +return this.g.autoBond; +case 603979800: +return this.g.autoFps; +case 603979806: +return this.g.axesOrientationRasmol; +case 603979811: +return this.g.cartoonSteps; +case 603979810: +return this.g.cartoonBlocks; +case 603979821: +return this.g.checkCIR; +case 603979812: +return this.g.bondModeOr; +case 603979815: +return this.g.cartoonBaseEdges; +case 603979816: +return this.g.cartoonFancy; +case 603979817: +return this.g.cartoonLadders; +case 603979818: +return this.g.cartoonRibose; +case 603979819: +return this.g.cartoonRockets; +case 603979822: +return this.g.chainCaseSensitive || this.chainCaseSpecified; +case 603979823: +return this.g.cipRule6Full; +case 603979825: +return this.g.debugScript; +case 603979826: +return this.g.defaultStructureDSSP; +case 603979827: +return this.g.disablePopupMenu; +case 603979828: +return this.g.displayCellParameters; +case 603979830: +return this.g.dotSurface; +case 603979829: +return this.g.dotsSelectedOnly; +case 603979831: +return this.g.doublePrecision; +case 603979834: +return this.g.drawPicking; +case 603979838: +return this.g.elementKey; +case 603979846: +return this.g.fontCaching; +case 603979847: +return this.g.fontScaling; +case 603979848: +return this.g.forceAutoBond; +case 603979849: +return false; +case 603979850: +return this.g.greyscaleRendering; +case 603979852: +return this.g.hbondsBackbone; +case 603979853: +return this.g.hbondsRasmol; +case 603979854: +return this.g.hbondsSolid; +case 1612709894: +return this.g.rasmolHeteroSetting; +case 603979858: +return this.g.hideNameInPopup; +case 603979864: +return this.g.highResolutionFlag; +case 1612709900: +return this.g.rasmolHydrogenSetting; +case 603979867: +return this.g.isosurfaceKey; +case 603979869: +return this.g.jmolInJSpecView; +case 603979870: +return this.g.justifyMeasurements; +case 603979872: +return this.g.legacyAutoBonding; +case 603979873: +return this.g.legacyHAddition; +case 603979874: +return this.g.legacyJavaFloat; +case 603979876: +return this.g.logGestures; +case 603979877: +return this.g.measureAllModels; +case 603979878: +return this.g.measurementLabels; +case 603979879: +return this.g.messageStyleChime; +case 603983903: +return this.g.modelKitMode; +case 603979886: +return this.g.multipleBondBananas; +case 603979889: +return this.g.navigationMode; +case 603979890: +return this.g.navigationPeriodic; +case 603979893: +return this.g.partialDots; +case 603979894: +return this.g.pdbAddHydrogens; +case 603979896: +return this.g.pdbSequential; +case 603979898: +return this.g.preserveState; +case 603979900: +return this.refreshing; +case 603979901: +return this.g.ribbonBorder; +case 603979902: +return this.g.rocketBarrels; +case 603979892: +return this.g.noDelay; +case 603979906: +return this.g.selectAllModels; +case 603979920: +return this.g.showHiddenSelectionHalos; +case 603979922: +return this.g.showHydrogens; +case 603979926: +return this.g.showMeasurements; +case 603979927: +return this.g.showModVecs; +case 603979928: +return this.g.showMultipleBonds; +case 603979934: +return this.g.showTiming; +case 603979937: +return this.g.showUnitCellDetails; +case 603979939: +return this.g.slabByAtom; +case 603979940: +return this.g.slabByMolecule; +case 603979944: +return this.g.smartAromatic; +case 603979948: +return this.g.dotSolvent; +case 603979952: +return this.g.ssbondsBackbone; +case 603979955: +return this.g.strutsMultiple; +case 603979956: +return this.g.symmetryHermannMauguin; +case 603979960: +return this.g.testFlag1; +case 603979962: +return this.g.testFlag2; +case 603979964: +return this.g.testFlag3; +case 603979965: +return this.g.testFlag4; +case 603979966: +return this.g.traceAlpha; +case 603979967: +return this.g.translucent; +case 603979968: +return this.g.twistedSheets; +case 603979972: +return this.g.vectorsCentered; +case 603979973: +return this.g.vectorSymmetry; +case 603979975: +return this.g.waitForMoveTo; +case 603979978: +return this.g.zeroBasedXyzRasmol; +} +JU.Logger.error("viewer.getBoolean(" + JS.T.nameOf(tok) + ") - not listed"); +return false; +}, "~N"); +Clazz_defineMethod(c$, "allowEmbeddedScripts", +function(){ +return (this.g.allowEmbeddedScripts && !this.isPreviewOnly); +}); +Clazz_defineMethod(c$, "getDragSelected", +function(){ +return (this.g.dragSelected && !this.g.modelKitMode); +}); +Clazz_defineMethod(c$, "getBondsPickable", +function(){ +return (this.g.bondPicking || this.isModelkitPickingActive() || this.isModelKitOpen() && this.getModelkitPropertySafely("ismolecular") === Boolean.TRUE); +}); +Clazz_defineMethod(c$, "isModelKitOpen", +function(){ +return this.g.modelKitMode && this.modelkit != null && !this.modelkit.isHidden(); +}); +Clazz_defineMethod(c$, "useMinimizationThread", +function(){ +return (this.g.useMinimizationThread && !this.autoExit); +}); +Clazz_overrideMethod(c$, "getFloat", +function(tok){ +switch (tok) { +case 1153433601: +return this.g.particleRadius; +case 570425345: +return this.g.axesOffset; +case 570425346: +return this.g.axesScale; +case 570425348: +return this.g.bondTolerance; +case 570425353: +return this.g.defaultTranslucent; +case 570425352: +return this.g.defaultDrawArrowScale; +case 570425354: +return this.g.dipoleScale; +case 570425355: +return this.g.drawFontSize; +case 570425357: +return this.g.exportScale; +case 570425359: +return this.g.hbondsAngleMinimum; +case 570425361: +return this.g.hbondHXDistanceMaximum; +case 570425360: +return this.g.hbondNODistanceMaximum; +case 570425363: +return this.g.loadAtomDataTolerance; +case 570425364: +return this.g.minBondDistance; +case 1275072532: +return this.g.modulationScale; +case 570425370: +return this.g.multipleBondSpacing; +case 570425369: +return this.g.multipleBondRadiusFactor; +case 570425374: +return this.g.navigationSpeed; +case 570425382: +return this.g.pointGroupDistanceTolerance; +case 570425384: +return this.g.pointGroupLinearTolerance; +case 570425388: +return this.tm.modelRadius; +case 570425392: +return this.g.sheetSmoothing; +case 570425394: +return this.g.solventProbeRadius; +case 570425403: +return this.g.starWidth; +case 570425406: +return this.g.strutDefaultRadius; +case 570425408: +return this.g.strutLengthMaximum; +case 1648361473: +return this.g.vectorScale; +case 570425412: +return this.g.vibrationPeriod; +case 570425347: +return this.g.cartoonBlockHeight; +} +JU.Logger.error("viewer.getFloat(" + JS.T.nameOf(tok) + ") - not listed"); +return 0; +}, "~N"); +Clazz_overrideMethod(c$, "setStringProperty", +function(key, value){ +if (value == null || key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setO(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 603979776: +this.setBooleanPropertyTok(key, tok, JS.SV.newV(4, value).asBoolean()); +break; +case 553648128: +this.setIntPropertyTok(key, tok, JS.SV.newV(4, value).asInt()); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, JU.PT.parseFloat(value)); +break; +default: +this.setStringPropertyTok(key, tok, value); +} +}, "~S,~S"); +Clazz_defineMethod(c$, "setStringPropertyTok", +function(key, tok, value){ +switch (tok) { +case 545259567: +this.g.macroDirectory = value = (value == null || value.length == 0 ? "https://chemapps.stolaf.edu/jmol/macros" : value); +this.macros = null; +break; +case 545259570: +this.g.nihResolverFormat = value; +break; +case 545259521: +this.setAnimationMode(value); +return; +case 545259569: +this.g.nmrPredictFormat = value; +break; +case 545259548: +this.g.defaultDropScript = value; +break; +case 545259572: +value = this.fm.setPathForAllFiles(value); +break; +case 545259558: +this.setUnits(value, false); +return; +case 545259560: +if (!this.g.forceField.equals(value)) { +this.g.forceField = value = ("UFF".equalsIgnoreCase(value) ? "UFF" : "UFF2D".equalsIgnoreCase(value) ? "UFF2D" : "MMFF2D".equalsIgnoreCase(value) ? "MMFF2D" : "MMFF"); +this.minimizer = null; +}break; +case 545259571: +this.g.nmrUrlFormat = value; +break; +case 545259568: +this.setUnits(value, true); +return; +case 545259565: +this.g.pdbLoadLigandFormat = value; +break; +case 545259543: +this.g.defaultLabelPDB = value; +break; +case 545259544: +this.g.defaultLabelXYZ = value; +break; +case 545259549: +this.g.defaultLoadFilter = value; +break; +case 545259566: +value = this.getOutputManager().setLogFile(value); +if (value == null) return; +break; +case 545259559: +break; +case 545259524: +this.g.atomTypes = value; +break; +case 545259538: +break; +case 545259576: +this.g.pickLabel = value; +break; +case 545259580: +if (value.length == 2 && value.startsWith("R")) this.g.quaternionFrame = value.substring(0, 2); + else this.g.quaternionFrame = "" + (value.toLowerCase() + "p").charAt(0); +if (!JU.PT.isOneOf(this.g.quaternionFrame, "RC;RP;a;b;c;n;p;q;x;")) this.g.quaternionFrame = "p"; +this.ms.haveStraightness = false; +break; +case 545259555: +this.setVdwStr(value); +return; +case 545259563: + new J.i18n.GT(this, value); +var language = J.i18n.GT.getLanguage(); +this.modelkit = null; +if (this.jmolpopup != null) { +this.jmolpopup.jpiDispose(); +this.jmolpopup = null; +this.getPopupMenu(); +}this.sm.setCallbackFunction("language", language); +value = J.i18n.GT.getLanguage(); +break; +case 545259564: +this.g.loadFormat = value; +break; +case 545259534: +this.setObjectColor("background", value); +return; +case 545259528: +this.setObjectColor("axis1", value); +return; +case 545259530: +this.setObjectColor("axis2", value); +return; +case 545259532: +this.setObjectColor("axis3", value); +return; +case 545259536: +this.setObjectColor("boundbox", value); +return; +case 545259586: +this.setObjectColor("unitcell", value); +return; +case 545259578: +this.setPropertyColorScheme(value, false, false); +break; +case 545259562: +this.shm.loadShape(35); +this.setShapeProperty(35, "atomLabel", value); +break; +case 545259547: +this.g.defaultDistanceLabel = value; +break; +case 545259542: +this.g.defaultAngleLabel = value; +break; +case 545259554: +this.g.defaultTorsionLabel = value; +break; +case 545259550: +this.g.defaultLoadScript = value; +break; +case 545259522: +this.fm.setAppletProxy(value); +break; +case 545259546: +if (value == null) value = ""; +value = value.$replace('\\', '/'); +this.g.defaultDirectory = value; +break; +case 545259561: +this.g.helpPath = value; +break; +case 545259552: +if (!value.equalsIgnoreCase("RasMol") && !value.equalsIgnoreCase("PyMOL")) value = "Jmol"; +this.setDefaultsType(value); +break; +case 545259545: +this.setDefaultColors(value.equalsIgnoreCase("rasmol")); +return; +case 545259573: +this.setPickingMode(value, 0); +return; +case 545259574: +this.setPickingStyle(value, 0); +return; +case 545259540: +break; +default: +if (key.toLowerCase().endsWith("callback")) { +this.sm.setCallbackFunction(key, (value.length == 0 || value.equalsIgnoreCase("none") ? null : value)); +break; +}if (!this.g.htNonbooleanParameterValues.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.newV(4, value)); +return; +}break; +} +this.g.setO(key, value); +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "setFloatProperty", +function(key, value){ +if (key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setF(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, "" + value); +break; +case 603979776: +this.setBooleanPropertyTok(key, tok, value != 0); +break; +case 553648128: +this.setIntPropertyTok(key, tok, Clazz_floatToInt(value)); +break; +case 570425344: +if (Float.isNaN(value)) return; +default: +this.setFloatPropertyTok(key, tok, value); +} +}, "~S,~N"); +Clazz_defineMethod(c$, "setFloatPropertyTok", +function(key, tok, value){ +switch (tok) { +case 570425347: +this.g.cartoonBlockHeight = value; +break; +case 570425366: +this.ms.setModulation(null, false, null, false); +this.g.modulationScale = value = Math.max(0.1, value); +this.ms.setModulation(null, true, null, false); +break; +case 570425381: +this.g.particleRadius = Math.abs(value); +break; +case 570425355: +this.g.drawFontSize = value; +this.shm.setShapePropertyBs(22, "font", null, null); +break; +case 570425357: +this.g.exportScale = value; +break; +case 570425403: +this.g.starWidth = value; +break; +case 570425369: +this.g.multipleBondRadiusFactor = value; +break; +case 570425370: +this.g.multipleBondSpacing = value; +break; +case 570425393: +this.tm.setSlabRange(value); +break; +case 570425365: +this.g.minimizationCriterion = value; +break; +case 570425358: +if (this.haveDisplay) this.acm.setGestureSwipeFactor(value); +break; +case 570425367: +if (this.haveDisplay) this.acm.setMouseDragFactor(value); +break; +case 570425368: +if (this.haveDisplay) this.acm.setMouseWheelFactor(value); +break; +case 570425408: +this.g.strutLengthMaximum = value; +break; +case 570425406: +this.g.strutDefaultRadius = value; +break; +case 570425376: +this.setSpin("X", Clazz_floatToInt(value)); +break; +case 570425378: +this.setSpin("Y", Clazz_floatToInt(value)); +break; +case 570425380: +this.setSpin("Z", Clazz_floatToInt(value)); +break; +case 570425371: +if (Float.isNaN(value)) return; +this.setSpin("FPS", Clazz_floatToInt(value)); +break; +case 570425363: +this.g.loadAtomDataTolerance = value; +break; +case 570425359: +this.g.hbondsAngleMinimum = value; +break; +case 570425361: +this.g.hbondHXDistanceMaximum = value; +break; +case 570425360: +this.g.hbondNODistanceMaximum = value; +break; +case 570425382: +this.g.pointGroupDistanceTolerance = value; +break; +case 570425384: +this.g.pointGroupLinearTolerance = value; +break; +case 570425356: +this.g.ellipsoidAxisDiameter = value; +break; +case 570425398: +this.setSpin("x", Clazz_floatToInt(value)); +break; +case 570425400: +this.setSpin("y", Clazz_floatToInt(value)); +break; +case 570425402: +this.setSpin("z", Clazz_floatToInt(value)); +break; +case 570425396: +this.setSpin("fps", Clazz_floatToInt(value)); +break; +case 570425352: +this.g.defaultDrawArrowScale = value; +break; +case 570425353: +this.g.defaultTranslucent = value; +break; +case 570425345: +this.setAxesScale(tok, value); +break; +case 570425346: +this.setAxesScale(tok, value); +break; +case 570425416: +this.tm.visualRangeAngstroms = value; +this.refresh(1, "set visualRange"); +break; +case 570425372: +this.setNavigationDepthPercent(value); +break; +case 570425374: +this.g.navigationSpeed = value; +break; +case 570425373: +this.tm.setNavigationSlabOffsetPercent(value); +break; +case 570425350: +this.tm.setCameraDepthPercent(value, false); +this.refresh(1, "set cameraDepth"); +return; +case 570425388: +this.setRotationRadius(value, true); +return; +case 570425362: +this.g.hoverDelayMs = Clazz_floatToInt(value * 1000); +break; +case 570425392: +this.g.sheetSmoothing = value; +break; +case 570425354: +value = JV.Viewer.checkFloatRange(value, -10, 10); +this.g.dipoleScale = value; +break; +case 570425404: +this.tm.setStereoDegrees(value); +break; +case 1648361473: +this.setVectorScale(value); +return; +case 570425412: +this.setVibrationPeriod(value); +return; +case 570425414: +this.setVibrationScale(value); +return; +case 570425348: +this.setBondTolerance(value); +return; +case 570425364: +this.setMinBondDistance(value); +return; +case 570425390: +this.tm.setScaleAngstromsPerInch(value); +break; +case 570425394: +value = JV.Viewer.checkFloatRange(value, 0, 10); +this.g.solventProbeRadius = value; +break; +default: +if (!this.g.htNonbooleanParameterValues.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.newF(value)); +return; +}} +this.g.setF(key, value); +}, "~S,~N,~N"); +Clazz_overrideMethod(c$, "setIntProperty", +function(key, value){ +if (value == -2147483648 || key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setI(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, "" + value); +break; +case 603979776: +this.setBooleanPropertyTok(key, tok, value != 0); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, value); +break; +default: +this.setIntPropertyTok(key, tok, value); +} +}, "~S,~N"); +Clazz_defineMethod(c$, "setIntPropertyTok", +function(key, tok, value){ +switch (tok) { +case 553648150: +this.g.minimizationReportSteps = Math.min(Math.max(value, 1), 20); +break; +case 553648184: +this.stm.setUndoMax(value); +break; +case 553648147: +this.g.labelPointerWidth = value; +break; +case 553648152: +this.g.minimizationMaxAtoms = value; +break; +case 553648145: +this.g.infoFontSize = Math.max(0, value); +break; +case 553648167: +case 553648144: +case 553648168: +value = this.eval.setStatic(tok, value); +break; +case 553648185: +this.g.vectorTrail = value; +break; +case 553648136: +value = (value == 0 ? 0 : 1); +this.g.bondingVersion = JU.Elements.bondingVersion = value; +break; +case 553648135: +this.gdata.setCelPower(value); +break; +case 553648129: +this.gdata.setAmbientOcclusion(value); +break; +case 553648158: +this.g.platformSpeed = Math.min(Math.max(value, 0), 10); +break; +case 553648149: +this.g.meshScale = value; +break; +case 553648153: +this.g.minPixelSelRadius = value; +break; +case 553648146: +this.g.isosurfacePropertySmoothingPower = value; +break; +case 553648165: +this.g.repaintWaitMs = value; +break; +case 553648170: +this.g.smallMoleculeMaxAtoms = value; +break; +case 553648151: +this.g.minimizationSteps = value; +break; +case 553648183: +this.g.strutSpacing = value; +break; +case 553648156: +value = JV.Viewer.checkIntRange(value, 0, 1000); +this.gdata.setPhongExponent(value); +break; +case 553648142: +this.g.helixStep = value; +this.ms.haveStraightness = false; +break; +case 553648140: +this.g.dotScale = value; +break; +case 553648139: +this.g.dotDensity = value; +break; +case 553648137: +this.g.delayMaximumMs = value; +break; +case 553648148: +JU.Logger.setLogLevel(value); +JU.Logger.info("logging level set to " + value); +this.g.setI("logLevel", value); +if (this.eval != null) this.eval.setDebugging(); +return; +case 553648133: +this.setAxesMode(value == 2 ? 603979808 : value == 1 ? 603979804 : 603979809); +return; +case 553648178: +this.setStrandCount(0, value); +return; +case 553648182: +this.setStrandCount(12, value); +return; +case 553648180: +this.setStrandCount(13, value); +return; +case 553648155: +return; +case 536870922: +this.g.scriptDelay = value; +break; +case 553648176: +if (value < 0) value = JV.Viewer.checkIntRange(value, -10, -1); + else value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setSpecularPower(value); +break; +case 553648172: +value = JV.Viewer.checkIntRange(-value, -10, -1); +this.gdata.setSpecularPower(value); +break; +case 553648134: +this.setMarBond(value); +return; +case 536870924: +this.setBooleanPropertyTok(key, tok, value == 1); +return; +case 553648174: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setSpecularPercent(value); +break; +case 553648138: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setDiffusePercent(value); +break; +case 553648130: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setAmbientPercent(value); +break; +case 553648186: +this.tm.zDepthToPercent(value); +break; +case 553648188: +this.tm.zSlabToPercent(value); +break; +case 554176526: +this.tm.depthToPercent(value); +break; +case 554176565: +this.tm.slabToPercent(value); +break; +case 553648190: +this.g.zShadePower = value = Math.max(value, 0); +break; +case 553648166: +this.g.ribbonAspectRatio = value; +break; +case 553648157: +this.g.pickingSpinRate = (value < 1 ? 1 : value); +break; +case 553648132: +this.setAnimationFps(value); +return; +case 553648154: +this.setPercentVdwAtom(value); +break; +case 553648143: +this.g.hermiteLevel = value; +break; +case 553648141: +case 553648161: +case 553648160: +case 553648162: +case 553648164: +break; +default: +if (!this.g.htNonbooleanParameterValues.containsKey(key)) { +this.g.setUserVariable(key, JS.SV.newI(value)); +return; +}} +this.g.setI(key, value); +}, "~S,~N,~N"); +c$.checkIntRange = Clazz_defineMethod(c$, "checkIntRange", +function(value, min, max){ +return (value < min ? min : value > max ? max : value); +}, "~N,~N,~N"); +c$.checkFloatRange = Clazz_defineMethod(c$, "checkFloatRange", +function(value, min, max){ +return (value < min ? min : value > max ? max : value); +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "setBooleanProperty", +function(key, value){ +if (key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setB(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, ""); +break; +case 553648128: +this.setIntPropertyTok(key, tok, value ? 1 : 0); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, value ? 1 : 0); +break; +default: +this.setBooleanPropertyTok(key, tok, value); +} +}, "~S,~B"); +Clazz_defineMethod(c$, "setBooleanPropertyTok", +function(key, tok, value){ +var doRepaint = true; +switch (tok) { +case 603979838: +this.g.elementKey = value; +this.getModelkit(false).setProperty("setelementkey", Boolean.$valueOf(value)); +break; +case 603979956: +this.g.symmetryHermannMauguin = value; +break; +case 603979831: +value = new Boolean (value & JV.Viewer.isJS).valueOf(); +this.g.doublePrecision = value; +JV.Viewer.isHighPrecision = this.g.doublePrecision; +this.setBooleanPropertyTok("legacyJavaFloat", 603979874, value); +break; +case 603979821: +this.g.checkCIR = value; +if (value) { +this.checkCIR(true); +}break; +case 603979823: +this.g.cipRule6Full = value; +break; +case 603979802: +this.g.autoplayMovie = value; +break; +case 603979797: +value = false; +this.g.allowAudio = value; +break; +case 603979892: +this.g.noDelay = value; +break; +case 603979891: +this.g.nboCharges = value; +break; +case 603979856: +this.g.hiddenLinesDashed = value; +break; +case 603979886: +this.g.multipleBondBananas = value; +break; +case 603979884: +this.g.modulateOccupancy = value; +break; +case 603979874: +if (value || !this.g.doublePrecision) this.g.legacyJavaFloat = value; +value = this.g.legacyJavaFloat; +break; +case 603979927: +this.g.showModVecs = value; +break; +case 603979937: +this.g.showUnitCellDetails = value; +break; +case 603979849: +doRepaint = false; +break; +case 603979972: +this.g.vectorsCentered = value; +break; +case 603979810: +this.g.cartoonBlocks = value; +break; +case 603979811: +this.g.cartoonSteps = value; +break; +case 603979818: +this.g.cartoonRibose = value; +break; +case 603979840: +this.g.ellipsoidArrows = value; +break; +case 603979967: +this.g.translucent = value; +break; +case 603979817: +this.g.cartoonLadders = value; +break; +case 603979968: +var b = this.g.twistedSheets; +this.g.twistedSheets = value; +if (b != value) this.checkCoordinatesChanged(null); +break; +case 603979820: +this.gdata.setCel(value); +break; +case 603979816: +this.g.cartoonFancy = value; +break; +case 603979934: +this.g.showTiming = value; +break; +case 603979973: +this.g.vectorSymmetry = value; +break; +case 603979867: +this.g.isosurfaceKey = value; +break; +case 603979893: +this.g.partialDots = value; +break; +case 603979872: +this.g.legacyAutoBonding = value; +break; +case 603979826: +this.g.defaultStructureDSSP = value; +break; +case 603979835: +this.g.dsspCalcHydrogen = value; +break; +case 603979782: +this.g.allowModelkit = value; +if (!value) this.setModelKitMode(false); +break; +case 603983903: +this.setModelKitMode(value); +break; +case 603979887: +this.g.multiProcessor = value && (JV.Viewer.nProcessors > 1); +break; +case 603979885: +this.g.monitorEnergy = value; +break; +case 603979853: +this.g.hbondsRasmol = value; +break; +case 603979880: +this.g.minimizationRefresh = value; +break; +case 603979881: +this.g.minimizationSilent = value; +break; +case 603979866: +if (value) { +this.$isKiosk = true; +this.g.disablePopupMenu = true; +if (this.display != null) this.apiPlatform.setTransparentCursor(this.display); +}break; +case 603979975: +this.g.waitForMoveTo = value; +break; +case 603979875: +this.g.logCommands = true; +break; +case 603979876: +this.g.logGestures = true; +break; +case 603979784: +this.g.allowMultiTouch = value; +break; +case 603979898: +this.g.preserveState = value; +this.ms.setPreserveState(value); +this.undoMoveAction(4165, -2); +break; +case 603979955: +this.g.strutsMultiple = value; +break; +case 603979845: +break; +case 603979939: +this.g.slabByAtom = value; +break; +case 603979940: +this.g.slabByMolecule = value; +break; +case 603979903: +this.g.saveProteinStructureState = value; +break; +case 603979780: +this.g.allowGestures = value; +break; +case 603979865: +this.g.imageState = value; +break; +case 603979970: +this.g.useMinimizationThread = value; +break; +case 603979781: +this.g.allowKeyStrokes = value; +break; +case 603979832: +this.g.dragSelected = value; +this.showSelected = false; +break; +case 603979924: +this.g.showKeyStrokes = value; +break; +case 603979846: +this.g.fontCaching = value; +break; +case 603979796: +this.g.atomPicking = value; +break; +case 603979814: +this.highlight(null); +this.g.bondPicking = value; +break; +case 603979906: +this.g.selectAllModels = value; +if (value) this.slm.setSelectionSubset(null); + else this.am.setSelectAllSubset(false); +break; +case 603979879: +this.g.messageStyleChime = value; +break; +case 603979896: +this.g.pdbSequential = value; +break; +case 603979894: +this.g.pdbAddHydrogens = value; +break; +case 603979895: +this.g.pdbGetHeader = value; +break; +case 603979841: +this.g.ellipsoidAxes = value; +break; +case 603979839: +this.g.ellipsoidArcs = value; +break; +case 603979842: +this.g.ellipsoidBall = value; +break; +case 603979843: +this.g.ellipsoidDots = value; +break; +case 603979844: +this.g.ellipsoidFill = value; +break; +case 603979847: +this.g.fontScaling = value; +break; +case 603979957: +this.setSyncTarget(0, value); +break; +case 603979958: +this.setSyncTarget(1, value); +break; +case 603979977: +this.g.wireframeRotation = value; +break; +case 603979868: +this.g.isosurfacePropertySmoothing = value; +break; +case 603979834: +this.g.drawPicking = value; +break; +case 603979786: +case 603979790: +case 603979788: +this.setAntialias(tok, value); +break; +case 603979944: +this.g.smartAromatic = value; +break; +case 603979794: +this.setApplySymmetryToBonds(value); +break; +case 603979792: +this.g.appendNew = value; +break; +case 603979800: +this.g.autoFps = value; +break; +case 603979971: +JU.DF.setUseNumberLocalization(this.g.useNumberLocalization = value); +break; +case 603979918: +case 1611272202: +key = "showFrank"; +this.setFrankOn(value); +break; +case 1612709912: +key = "solventProbe"; +this.g.dotSolvent = value; +break; +case 603979948: +this.g.dotSolvent = value; +break; +case 603979785: +this.g.allowRotateSelected = value; +break; +case 603979783: +this.g.allowMoveAtoms = value; +this.showSelected = false; +break; +case 536870922: +this.setIntPropertyTok("showScript", tok, value ? 1 : 0); +return; +case 603979778: +this.g.allowEmbeddedScripts = value; +break; +case 603979890: +this.g.navigationPeriodic = value; +break; +case 603979984: +this.tm.setZShadeEnabled(value); +return; +case 603979833: +if (this.haveDisplay) this.g.drawHover = value; +break; +case 603979889: +this.setNavigationMode(value); +break; +case 603979888: +return; +case 603979860: +this.g.hideNavigationPoint = value; +break; +case 603979930: +this.g.showNavigationPointAlways = value; +break; +case 603979900: +this.setRefreshing(value); +break; +case 603979869: +this.g.jmolInJSpecView = value; +break; +case 603979870: +this.g.justifyMeasurements = value; +break; +case 603979952: +this.g.ssbondsBackbone = value; +break; +case 603979852: +this.g.hbondsBackbone = value; +break; +case 603979854: +this.g.hbondsSolid = value; +break; +case 536870924: +this.gdata.setSpecular(value); +break; +case 603979942: +this.tm.setSlabEnabled(value); +return; +case 603979980: +this.tm.setZoomEnabled(value); +return; +case 603979864: +this.g.highResolutionFlag = value; +break; +case 603979966: +this.g.traceAlpha = value; +break; +case 603979983: +this.g.zoomLarge = value; +this.tm.setZoomHeight(this.g.zoomHeight, value); +break; +case 603979982: +this.g.zoomHeight = value; +this.tm.setZoomHeight(value, this.g.zoomLarge); +break; +case 603979871: +J.i18n.GT.setDoTranslate(value); +break; +case 603979862: +this.slm.setHideNotSelected(value); +break; +case 603979904: +this.setScriptQueue(value); +break; +case 603979830: +this.g.dotSurface = value; +break; +case 603979829: +this.g.dotsSelectedOnly = value; +break; +case 1611141172: +this.setSelectionHalosEnabled(value); +break; +case 603979910: +this.g.rasmolHydrogenSetting = value; +break; +case 603979908: +this.g.rasmolHeteroSetting = value; +break; +case 603979928: +this.g.showMultipleBonds = value; +break; +case 603979920: +this.g.showHiddenSelectionHalos = value; +break; +case 603979976: +this.tm.setWindowCentered(value); +break; +case 603979828: +this.g.displayCellParameters = value; +break; +case 603979960: +this.g.testFlag1 = value; +break; +case 603979962: +this.g.testFlag2 = value; +break; +case 603979964: +this.g.testFlag3 = value; +break; +case 603979965: +this.jmolTest(); +this.g.testFlag4 = value; +break; +case 603979901: +this.g.ribbonBorder = value; +break; +case 603979815: +this.g.cartoonBaseEdges = value; +break; +case 603979819: +this.g.cartoonRockets = value; +break; +case 603979902: +this.g.rocketBarrels = value; +break; +case 603979850: +this.gdata.setGreyscaleMode(this.g.greyscaleRendering = value); +break; +case 603979878: +this.g.measurementLabels = value; +break; +case 603979809: +case 603979804: +case 603979808: +this.setAxesMode(tok); +return; +case 603979806: +this.setAxesOrientationRasmol(value); +return; +case 603979824: +this.setStringPropertyTok("defaultcolorscheme", 545259545, value ? "rasmol" : "jmol"); +return; +case 603979825: +this.setDebugScript(value); +return; +case 603979897: +this.setPerspectiveDepth(value); +return; +case 603979798: +this.setAutoBond(value); +return; +case 603979914: +this.setShowAxes(value); +return; +case 603979916: +this.setShowBbcage(value); +return; +case 603979922: +this.setShowHydrogens(value); +return; +case 603979926: +this.setShowMeasurements(value); +return; +case 603979936: +this.setShowUnitCell(value); +return; +case 603979812: +doRepaint = false; +this.g.bondModeOr = value; +break; +case 603979978: +doRepaint = false; +this.g.zeroBasedXyzRasmol = value; +this.reset(true); +break; +case 603979899: +doRepaint = false; +this.g.rangeSelected = value; +break; +case 603979877: +doRepaint = false; +this.g.measureAllModels = value; +break; +case 603979954: +doRepaint = false; +this.sm.allowStatusReporting = value; +break; +case 603979822: +doRepaint = false; +this.g.chainCaseSensitive = value; +break; +case 603979858: +doRepaint = false; +this.g.hideNameInPopup = value; +break; +case 603979827: +doRepaint = false; +this.g.disablePopupMenu = value; +break; +case 603979848: +doRepaint = false; +this.g.forceAutoBond = value; +break; +default: +if (!this.g.htBooleanParameterFlags.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.getBoolean(value)); +return; +}} +this.g.setB(key, value); +if (doRepaint) this.setTainted(true); +}, "~S,~N,~B"); +Clazz_defineMethod(c$, "setModelKitMode", +function(value){ +if (this.acm == null || !this.allowScripting) return; +if (value || this.g.modelKitMode) { +this.setPickingMode(null, value ? 33 : 1); +this.setPickingMode(null, value ? 32 : 1); +}var isChange = (this.g.modelKitMode != value); +this.g.modelKitMode = value; +this.g.setB("modelkitmode", value); +this.highlight(null); +if (isChange) { +this.setModelkitPropertySafely("constraint", null); +}if (value) { +this.setNavigationMode(false); +this.selectAll(); +this.setStringProperty("picking", "assignAtom_C"); +this.setStringProperty("picking", "assignBond_p"); +if (!this.isApplet) this.popupMenu(10, 0, 'm'); +if (isChange) this.sm.setStatusModelKit(1); +this.g.modelKitMode = true; +if (this.getOperativeSymmetry() != null) { +} else if (this.ms.ac == 0) { +this.zap(false, true, true); +} else if (this.am.cmi >= 0 && this.getModelUndeletedAtomsBitSet(this.am.cmi).isEmpty()) { +var htParams = new java.util.Hashtable(); +htParams.put("appendToModelIndex", Integer.$valueOf(this.am.cmi)); +this.loadDefaultModelKitModel(htParams); +}} else { +this.acm.setPickingMode(-1); +if (isChange) { +this.sm.setStatusModelKit(0); +} else if (!value) { +this.getModelkit(false).setProperty("hidemenu", null); +}}}, "~B"); +Clazz_defineMethod(c$, "setSmilesString", +function(s){ +if (s == null) this.g.removeParam("_smilesString"); + else this.g.setO("_smilesString", s); +}, "~S"); +Clazz_defineMethod(c$, "removeUserVariable", +function(key){ +this.g.removeUserVariable(key); +if (key.endsWith("callback")) this.sm.setCallbackFunction(key, null); +}, "~S"); +Clazz_defineMethod(c$, "jmolTest", +function(){ +}); +Clazz_defineMethod(c$, "showParameter", +function(key, ifNotSet, nMax){ +var sv = "" + this.g.getParameterEscaped(key, nMax); +if (ifNotSet || sv.indexOf("") < 0) this.showString(key + " = " + sv, false); +}, "~S,~B,~N"); +Clazz_defineMethod(c$, "showString", +function(str, isPrint){ +if (!JV.Viewer.isJS && this.isScriptQueued() && (!this.isSilent || isPrint) && !"\0".equals(str)) { +JU.Logger.warn(str); +}this.scriptEcho(str); +}, "~S,~B"); +Clazz_defineMethod(c$, "getAllSettings", +function(prefix){ +return this.getStateCreator().getAllSettings(prefix); +}, "~S"); +Clazz_defineMethod(c$, "getBindingInfo", +function(qualifiers){ +return (this.haveDisplay ? this.acm.getBindingInfo(qualifiers) : ""); +}, "~S"); +Clazz_defineMethod(c$, "getIsosurfacePropertySmoothing", +function(asPower){ +return (asPower ? this.g.isosurfacePropertySmoothingPower : this.g.isosurfacePropertySmoothing ? 1 : 0); +}, "~B"); +Clazz_defineMethod(c$, "setNavigationDepthPercent", +function(percent){ +this.tm.setNavigationDepthPercent(percent); +this.refresh(1, "set navigationDepth"); +}, "~N"); +Clazz_defineMethod(c$, "getShowNavigationPoint", +function(){ +if (!this.g.navigationMode) return false; +return (this.tm.isNavigating() && !this.g.hideNavigationPoint || this.g.showNavigationPointAlways || this.getInMotion(true)); +}); +Clazz_overrideMethod(c$, "setPerspectiveDepth", +function(perspectiveDepth){ +this.tm.setPerspectiveDepth(perspectiveDepth); +}, "~B"); +Clazz_overrideMethod(c$, "setAxesOrientationRasmol", +function(TF){ +this.g.setB("axesOrientationRasmol", TF); +this.g.axesOrientationRasmol = TF; +this.reset(true); +}, "~B"); +Clazz_defineMethod(c$, "setAxesScale", +function(tok, val){ +val = JV.Viewer.checkFloatRange(val, -100, 100); +if (tok == 570425345) this.g.axesOffset = val; + else this.g.axesScale = val; +this.axesAreTainted = true; +}, "~N,~N"); +Clazz_defineMethod(c$, "setAxesMode", +function(mode){ +this.g.axesMode = mode; +this.axesAreTainted = true; +switch (mode) { +case 603979808: +this.g.removeParam("axesmolecular"); +this.g.removeParam("axeswindow"); +this.g.setB("axesUnitcell", true); +mode = 2; +break; +case 603979804: +this.g.removeParam("axesunitcell"); +this.g.removeParam("axeswindow"); +this.g.setB("axesMolecular", true); +mode = 1; +break; +case 603979809: +this.g.removeParam("axesunitcell"); +this.g.removeParam("axesmolecular"); +this.g.setB("axesWindow", true); +mode = 0; +} +this.g.setI("axesMode", mode); +}, "~N"); +Clazz_defineMethod(c$, "getSelectionHalosEnabled", +function(){ +return this.selectionHalosEnabled; +}); +Clazz_defineMethod(c$, "setSelectionHalosEnabled", +function(TF){ +if (this.selectionHalosEnabled == TF) return; +this.g.setB("selectionHalos", TF); +this.shm.loadShape(8); +this.selectionHalosEnabled = TF; +}, "~B"); +Clazz_defineMethod(c$, "getShowSelectedOnce", +function(){ +var flag = this.showSelected; +this.showSelected = false; +return flag; +}); +Clazz_defineMethod(c$, "setStrandCount", +function(type, value){ +value = JV.Viewer.checkIntRange(value, 0, 20); +switch (type) { +case 12: +this.g.strandCountForStrands = value; +break; +case 13: +this.g.strandCountForMeshRibbon = value; +break; +default: +this.g.strandCountForStrands = value; +this.g.strandCountForMeshRibbon = value; +break; +} +this.g.setI("strandCount", value); +this.g.setI("strandCountForStrands", this.g.strandCountForStrands); +this.g.setI("strandCountForMeshRibbon", this.g.strandCountForMeshRibbon); +}, "~N,~N"); +Clazz_defineMethod(c$, "getStrandCount", +function(type){ +return (type == 12 ? this.g.strandCountForStrands : this.g.strandCountForMeshRibbon); +}, "~N"); +Clazz_defineMethod(c$, "setNavigationMode", +function(TF){ +this.g.navigationMode = TF; +this.tm.setNavigationMode(TF); +}, "~B"); +Clazz_overrideMethod(c$, "setAutoBond", +function(TF){ +this.g.setB("autobond", TF); +this.g.autoBond = TF; +}, "~B"); +Clazz_defineMethod(c$, "makeConnections", +function(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy){ +this.clearModelDependentObjects(); +this.clearMinimization(); +return this.ms.makeConnections(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy); +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N"); +Clazz_overrideMethod(c$, "rebond", +function(){ +this.rebondState(false); +}); +Clazz_defineMethod(c$, "rebondState", +function(isStateScript){ +this.clearModelDependentObjects(); +this.ms.deleteAllBonds(); +var isLegacy = isStateScript && this.g.legacyAutoBonding; +this.ms.autoBondBs4(null, null, null, null, this.getMadBond(), isLegacy, null); +this.addStateScript((isLegacy ? "set legacyAutoBonding TRUE;connect;set legacyAutoBonding FALSE;" : "connect;"), false, true); +}, "~B"); +Clazz_overrideMethod(c$, "setPercentVdwAtom", +function(value){ +this.g.setI("percentVdwAtom", value); +this.g.percentVdwAtom = value; +this.rd.value = value / 100; +this.rd.factorType = J.atomdata.RadiusData.EnumType.FACTOR; +this.rd.vdwType = J.c.VDW.AUTO; +this.shm.setShapeSizeBs(0, 0, this.rd, null); +}, "~N"); +Clazz_overrideMethod(c$, "getMadBond", +function(){ +return (this.g.bondRadiusMilliAngstroms * 2); +}); +Clazz_overrideMethod(c$, "setShowHydrogens", +function(TF){ +this.g.setB("showHydrogens", TF); +this.g.showHydrogens = TF; +}, "~B"); +Clazz_defineMethod(c$, "setShowBbcage", +function(value){ +this.setObjectMad10(32, "boundbox", (value ? -4 : 0)); +this.g.setB("showBoundBox", value); +}, "~B"); +Clazz_defineMethod(c$, "getShowBbcage", +function(){ +return this.getObjectMad10(4) != 0; +}); +Clazz_defineMethod(c$, "setShowUnitCell", +function(value){ +this.setObjectMad10(33, "unitcell", (value ? -2 : 0)); +this.g.setB("showUnitCell", value); +}, "~B"); +Clazz_defineMethod(c$, "getShowUnitCell", +function(){ +return this.getObjectMad10(5) != 0; +}); +Clazz_defineMethod(c$, "setShowAxes", +function(value){ +this.setObjectMad10(34, "axes", (value ? -2 : 0)); +this.g.setB("showAxes", value); +}, "~B"); +Clazz_defineMethod(c$, "getShowAxes", +function(){ +return this.getObjectMad10(1) != 0; +}); +Clazz_overrideMethod(c$, "setFrankOn", +function(TF){ +if (this.isPreviewOnly) TF = false; +this.frankOn = TF; +this.setObjectMad10(36, "frank", (TF ? 1 : 0)); +}, "~B"); +Clazz_defineMethod(c$, "getShowFrank", +function(){ +if (this.isPreviewOnly || this.isApplet && this.creatingImage) return false; +return (this.isSignedApplet && !this.isSignedAppletLocal && !JV.Viewer.isJS || this.frankOn); +}); +Clazz_overrideMethod(c$, "setShowMeasurements", +function(TF){ +this.g.setB("showMeasurements", TF); +this.g.showMeasurements = TF; +}, "~B"); +Clazz_defineMethod(c$, "setUnits", +function(units, isDistance){ +var isDefault = "default".equals(units); +if (!isDistance || !isDefault) this.g.setUnits(units); +if (isDistance) { +this.setShapeProperty(6, "reformatDistances", units); +}}, "~S,~B"); +Clazz_overrideMethod(c$, "setRasmolDefaults", +function(){ +this.setDefaultsType("RasMol"); +}); +Clazz_overrideMethod(c$, "setJmolDefaults", +function(){ +this.setDefaultsType("Jmol"); +}); +Clazz_defineMethod(c$, "setDefaultsType", +function(type){ +if (type.equalsIgnoreCase("RasMol")) { +this.stm.setRasMolDefaults(); +return; +}if (type.equalsIgnoreCase("PyMOL")) { +this.stm.setPyMOLDefaults(); +return; +}this.stm.setJmolDefaults(); +this.setIntProperty("bondingVersion", 0); +this.shm.setShapeSizeBs(0, 0, this.rd, this.getAllAtoms()); +}, "~S"); +Clazz_defineMethod(c$, "setAntialias", +function(tok, TF){ +var isChanged = false; +switch (tok) { +case 603979786: +isChanged = (this.g.antialiasDisplay != TF); +this.g.antialiasDisplay = TF; +break; +case 603979790: +isChanged = (this.g.antialiasTranslucent != TF); +this.g.antialiasTranslucent = TF; +break; +case 603979788: +this.g.antialiasImages = TF; +return; +} +if (isChanged) { +this.resizeImage(0, 0, false, false, true); +this.refresh(3, "Viewer:setAntialias()"); +}}, "~N,~B"); +Clazz_defineMethod(c$, "allocTempPoints", +function(size){ +return this.tempArray.allocTempPoints(size); +}, "~N"); +Clazz_defineMethod(c$, "freeTempPoints", +function(tempPoints){ +this.tempArray.freeTempPoints(tempPoints); +}, "~A"); +Clazz_defineMethod(c$, "allocTempScreens", +function(size){ +return this.tempArray.allocTempScreens(size); +}, "~N"); +Clazz_defineMethod(c$, "freeTempScreens", +function(tempScreens){ +this.tempArray.freeTempScreens(tempScreens); +}, "~A"); +Clazz_defineMethod(c$, "allocTempEnum", +function(size){ +return this.tempArray.allocTempEnum(size); +}, "~N"); +Clazz_defineMethod(c$, "freeTempEnum", +function(temp){ +this.tempArray.freeTempEnum(temp); +}, "~A"); +Clazz_defineMethod(c$, "getFont3D", +function(fontFace, fontStyle, fontSize){ +return this.gdata.getFont3DFSS(fontFace, fontStyle, fontSize); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "getAtomGroupQuaternions", +function(bsAtoms, nMax){ +return this.ms.getAtomGroupQuaternions(bsAtoms, nMax, this.getQuaternionFrame()); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "setStereoMode", +function(twoColors, stereoMode, degrees){ +this.setFloatProperty("stereoDegrees", degrees); +this.setBooleanPropertyTok("greyscaleRendering", 603979850, stereoMode.isBiColor()); +if (twoColors != null) this.tm.setStereoMode2(twoColors); + else this.tm.setStereoMode(stereoMode); +}, "~A,J.c.STER,~N"); +Clazz_defineMethod(c$, "getChimeInfo", +function(tok){ +return this.getPropertyManager().getChimeInfo(tok, this.bsA()); +}, "~N"); +Clazz_defineMethod(c$, "getModelFileInfo", +function(){ +return this.getPropertyManager().getModelFileInfo(this.getVisibleFramesBitSet()); +}); +Clazz_defineMethod(c$, "getModelFileInfoAll", +function(){ +return this.getPropertyManager().getModelFileInfo(null); +}); +Clazz_defineMethod(c$, "showEditor", +function(file_text){ +var scriptEditor = this.getProperty("DATA_API", "getScriptEditor", Boolean.TRUE); +if (scriptEditor == null) return; +scriptEditor.show(file_text); +}, "~A"); +Clazz_defineMethod(c$, "getPropertyManager", +function(){ +if (this.pm == null) (this.pm = J.api.Interface.getInterface("JV.PropertyManager", this, "prop")).setViewer(this); +return this.pm; +}); +Clazz_defineMethod(c$, "setTainted", +function(TF){ +this.isTainted = this.axesAreTainted = (TF && (this.refreshing || this.creatingImage)); +}, "~B"); +Clazz_defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers){ +return this.shm.checkObjectClicked(x, y, modifiers, this.getVisibleFramesBitSet(), this.g.drawPicking); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "checkObjectHovered", +function(x, y){ +return (x >= 0 && this.shm != null && this.shm.checkObjectHovered(x, y, this.getVisibleFramesBitSet(), this.getBondsPickable())); +}, "~N,~N"); +Clazz_defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, action){ +var iShape = 0; +switch (this.getPickingMode()) { +case 2: +iShape = 5; +break; +case 4: +iShape = 22; +break; +} +if (this.shm.checkObjectDragged(prevX, prevY, x, y, action, this.getVisibleFramesBitSet(), iShape)) { +this.refresh(1, "checkObjectDragged"); +if (iShape == 22) this.scriptEcho(this.getShapeProperty(22, "command")); +return true; +}return false; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "rotateAxisAngleAtCenter", +function(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsSelected){ +var isOK = this.tm.rotateAxisAngleAtCenter(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsSelected); +if (isOK) this.setSync(); +return isOK; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.V3,~N,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "rotateAboutPointsInternal", +function(eval, point1, point2, degreesPerSecond, endDegrees, isSpin, bsSelected, translation, finalPoints, dihedralList, m4, useModelKit){ +if (eval == null) eval = this.eval; +if (this.headless) { +if (isSpin && endDegrees == 3.4028235E38) return false; +isSpin = false; +}var isOK = this.tm.rotateAboutPointsInternal(eval, point1, point2, degreesPerSecond, endDegrees, false, isSpin, bsSelected, false, translation, finalPoints, dihedralList, m4, useModelKit); +if (isOK) this.setSync(); +return isOK; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.P3,~N,~N,~B,JU.BS,JU.V3,JU.Lst,~A,JU.M4,~B"); +Clazz_defineMethod(c$, "startSpinningAxis", +function(pt1, pt2, isClockwise){ +if (this.tm.spinOn || this.tm.navOn) { +this.tm.setSpinOff(); +this.tm.setNavOn(false); +return; +}this.tm.rotateAboutPointsInternal(null, pt1, pt2, this.g.pickingSpinRate, 3.4028235E38, isClockwise, true, null, false, null, null, null, null, false); +}, "JU.T3,JU.T3,~B"); +Clazz_defineMethod(c$, "getModelDipole", +function(){ +return this.ms.getModelDipole(this.am.cmi); +}); +Clazz_defineMethod(c$, "calculateMolecularDipole", +function(bsAtoms){ +try { +return this.ms.calculateMolecularDipole(this.am.cmi, bsAtoms); +} catch (e) { +if (Clazz_exceptionOf(e,"JV.JmolAsyncException")){ +if (this.eval != null) this.eval.loadFileResourceAsync(e.getFileName()); +return null; +} else { +throw e; +} +} +}, "JU.BS"); +Clazz_defineMethod(c$, "setDefaultLattice", +function(p){ +if (!Float.isNaN(p.x + p.y + p.z)) this.g.ptDefaultLattice.setT(p); +this.g.setO("defaultLattice", JU.Escape.eP(p)); +}, "JU.P3"); +Clazz_defineMethod(c$, "getDefaultLattice", +function(){ +return this.g.ptDefaultLattice; +}); +Clazz_defineMethod(c$, "getModelExtract", +function(atomExpression, doTransform, isModelKit, type){ +return this.getPropertyManager().getModelExtract(this.getAtomBitSet(atomExpression), doTransform, isModelKit, type, false); +}, "~O,~B,~B,~S"); +Clazz_overrideMethod(c$, "getData", +function(atomExpression, type){ +return this.getModelFileData(atomExpression, type, true); +}, "~S,~S"); +Clazz_defineMethod(c$, "getModelFileData", +function(atomExpression, type, allTrajectories){ +return this.getPropertyManager().getAtomData(atomExpression, type, allTrajectories); +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getModelCml", +function(bs, nAtomsMax, addBonds, doTransform){ +return this.getPropertyManager().getModelCml(bs, nAtomsMax, addBonds, doTransform, false); +}, "JU.BS,~N,~B,~B"); +Clazz_defineMethod(c$, "getPdbAtomData", +function(bs, out, asPQR, doTransform){ +return this.getPropertyManager().getPdbAtomData(bs == null ? this.bsA() : bs, out, asPQR, doTransform, false); +}, "JU.BS,JU.OC,~B,~B"); +Clazz_defineMethod(c$, "isJmolDataFrame", +function(){ +return this.ms.isJmolDataFrameForModel(this.am.cmi); +}); +Clazz_defineMethod(c$, "setFrameTitle", +function(modelIndex, title){ +this.ms.setFrameTitle(JU.BSUtil.newAndSetBit(modelIndex), title); +}, "~N,~S"); +Clazz_defineMethod(c$, "setFrameTitleObj", +function(title){ +this.shm.loadShape(31); +this.ms.setFrameTitle(this.getVisibleFramesBitSet(), title); +}, "~O"); +Clazz_defineMethod(c$, "getFrameTitle", +function(){ +return this.ms.getFrameTitle(this.am.cmi); +}); +Clazz_defineMethod(c$, "setAtomProperty", +function(bs, tok, iValue, fValue, sValue, values, list){ +if (tok == 1648363544) this.shm.deleteVdwDependentShapes(bs); +this.clearMinimization(); +this.ms.setAtomProperty(bs, tok, iValue, fValue, sValue, values, list); +switch (tok) { +case 1086326789: +this.setModelkitPropertySafely("updateatomkeys", bs); +case 1111492609: +case 1111492610: +case 1111492611: +case 1111492612: +case 1111492613: +case 1111492614: +case 1111490577: +case 1111490578: +case 1111490579: +this.refreshMeasures(true); +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz_defineMethod(c$, "checkCoordinatesChanged", +function(bsAtoms){ +this.ms.recalculatePositionDependentQuantities(bsAtoms, null); +this.refreshMeasures(true); +}, "JU.BS"); +Clazz_defineMethod(c$, "setAtomCoords", +function(bs, tokType, xyzValues){ +if (bs.isEmpty()) return; +var atom = this.ms.at[bs.nextSetBit(0)]; +var n = bs.cardinality(); +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "setAtomCoords", n, bs); +this.ms.setAtomCoords(bs, tokType, xyzValues); +this.setStatusAtomMoved(true, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +}, "JU.BS,~N,~O"); +Clazz_defineMethod(c$, "setAtomCoordsRelative", +function(offset, bs){ +if (bs == null) bs = this.bsA(); +if (bs.isEmpty()) return; +var doNotify = (offset.lengthSquared() != 0); +var atom = this.ms.at[bs.nextSetBit(0)]; +var n = bs.cardinality(); +if (doNotify) { +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "setAtomCoords", n, bs); +}this.ms.setAtomCoordsRelative(offset, bs); +this.checkMinimization(); +if (doNotify) { +this.setStatusAtomMoved(false, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +}}, "JU.T3,JU.BS"); +Clazz_defineMethod(c$, "invertAtomCoord", +function(pt, plane, bs, ringAtomIndex, isClick){ +if (ringAtomIndex >= 0) { +bs = JU.JmolMolecule.getBranchesForInversion(this.ms.at, ringAtomIndex, this.ms.getMoleculeBitSetForAtom(ringAtomIndex)); +var nb = bs.cardinality(); +switch (nb) { +case 0: +case 1: +return; +case 2: +break; +case 3: +case 4: +var lengths = Clazz_newIntArray (nb, 0); +var points = Clazz_newIntArray (nb, 0); +var ni = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), ni++) { +lengths[ni] = this.getBranchBitSet(i, ringAtomIndex, true).cardinality(); +points[ni] = i; +} +for (var j = 0; j < nb - 2; j++) { +var max = -2147483648; +var imax = 0; +for (var i = 0; i < nb; i++) if (lengths[i] >= max && bs.get(points[i])) { +imax = points[i]; +max = lengths[i]; +} +bs.clear(imax); +} +} +if (isClick && !bs.isEmpty()) this.undoMoveActionClear(ringAtomIndex, 2, true); +}var n = bs.cardinality(); +if (n == 0) return; +var atom = this.ms.at[bs.nextSetBit(0)]; +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "invertAtomCoords", n, bs); +this.ms.invertSelected(pt, plane, ringAtomIndex, bs); +this.setStatusAtomMoved(true, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +if (isClick) this.setStatusAtomPicked(ringAtomIndex, "inverted: " + JU.Escape.eBS(bs), null, false); +}, "JU.P3,JU.P4,JU.BS,~N,~B"); +Clazz_defineMethod(c$, "invertSelected", +function(pt, plane, iAtom, bsAtoms){ +if (bsAtoms == null) bsAtoms = this.bsA(); +if (bsAtoms.isEmpty()) return; +this.ms.invertSelected(pt, plane, iAtom, bsAtoms); +this.setStatusAtomMoved(true, bsAtoms); +}, "JU.P3,JU.P4,~N,JU.BS"); +Clazz_defineMethod(c$, "moveAtoms", +function(m4, mNew, rotation, translation, center, isInternal, bsAtoms, translationOnly, useModelKit){ +if (bsAtoms.isEmpty()) return; +var bsFixed = this.getMotionFixedAtoms(null, null); +if (bsAtoms.intersects(bsFixed)) return; +var uc = (useModelKit ? this.getOperativeSymmetry() : null); +var apos0 = null; +if (uc != null) { +apos0 = this.ms.saveAtomPositions(); +}this.ms.moveAtoms(m4, mNew, rotation, translation, bsAtoms, center, isInternal, translationOnly); +if (uc != null) { +this.getModelkit(false).checkMovedAtoms(bsFixed, bsAtoms, apos0); +}this.setStatusAtomMoved(true, bsAtoms); +}, "JU.M4,JU.M3,JU.M3,JU.V3,JU.P3,~B,JU.BS,~B,~B"); +Clazz_defineMethod(c$, "moveSelectedXY", +function(deltaX, deltaY, modifiers){ +this.moveSelected(deltaX, deltaY, -2147483648, -2147483648, -2147483648, null, null, null, false, false, modifiers); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "moveSelected", +function(deltaX, deltaY, deltaZ, x, y, bsSelected, ptOld, ptNew, isTranslation, asAtoms, modifiers){ +if (deltaZ == 0 && ptNew == null || this.isJmolDataFrame()) return 0; +if (ptNew == null) { +if (x == -2147483648 && this.modelkit != null) this.setModelkitPropertySafely("rotatebondindex", Integer.$valueOf(-2147483648)); +if (deltaX == -2147483648) { +this.showSelected = true; +this.movableBitSet = this.setMovableBitSet(null, !asAtoms); +this.shm.loadShape(8); +this.refresh(6, "moveSelected"); +return 0; +}if (deltaX == 2147483647) { +if (!this.showSelected) return 0; +this.showSelected = false; +this.movableBitSet = null; +this.refresh(6, "moveSelected"); +return 0; +}}if (this.movingSelected) return 0; +this.movingSelected = true; +this.stopMinimization(); +if (ptNew == null && x != -2147483648 && this.modelkit != null && this.modelkit.getProperty("rotatebondindex") != null) { +this.modelkit.actionRotateBond(deltaX, deltaY, x, y, (modifiers & 16) != 0); +} else { +if (bsSelected == null) bsSelected = this.bsA(); +var iatom = bsSelected.nextSetBit(0); +bsSelected = this.setMovableBitSet(bsSelected, !asAtoms); +if (bsSelected.isEmpty()) { +bsSelected.set(iatom); +this.sm.setStatusStructureModified(iatom, this.getModelIndexForAtom(iatom), -3, "FAILED", 1, bsSelected); +} else { +if (isTranslation) { +var ptCenter = (ptOld == null ? this.ms.getAtomSetCenter(bsSelected) : ptOld); +if (ptNew == null) { +this.tm.finalizeTransformParameters(); +var f = (this.g.antialiasDisplay ? 2 : 1); +this.tm.transformPt3f(ptCenter, this.ptScreen); +if (deltaZ != -2147483648) this.ptScreenNew.set(this.ptScreen.x, this.ptScreen.y, this.ptScreen.z + deltaZ); + else this.ptScreenNew.set(this.ptScreen.x + deltaX * f, this.ptScreen.y + deltaY * f, this.ptScreen.z); +this.tm.unTransformPoint(this.ptScreenNew, this.ptNew); +ptNew = this.ptNew; +var uc = this.getOperativeSymmetry(); +if (uc != null) { +ptNew.sub(ptCenter); +ptNew.add(this.ms.at[iatom]); +this.getModelkit(false).cmdAssignMoveAtoms(bsSelected, iatom, ptNew, null, true, !asAtoms); +}}if (!Float.isNaN(ptNew.x)) { +ptNew.sub(ptCenter); +this.setAtomCoordsRelative(ptNew, bsSelected); +}} else { +this.tm.rotateXYBy(deltaX, deltaY, bsSelected); +}}}this.refresh(2, ""); +this.movingSelected = false; +return (bsSelected == null ? 0 : bsSelected.cardinality()); +}, "~N,~N,~N,~N,~N,JU.BS,JU.P3,JU.P3,~B,~B,~N"); +Clazz_defineMethod(c$, "highlightBond", +function(index, closestAtomIndex, x, y){ +if (!this.hoverEnabled) return; +var bs = null; +if (index >= 0) { +var b = this.ms.bo[index]; +var i = b.atom2.i; +bs = JU.BSUtil.newAndSetBit(i); +bs.set(b.atom1.i); +}this.highlight(bs); +this.getModelkit(false); +this.setModelkitPropertySafely("screenxy", Clazz_newIntArray(-1, [x, y])); +this.setModelkitPropertySafely("bondindex", Integer.$valueOf(index)); +var text = this.setModelkitPropertySafely("hoverlabel", Integer.$valueOf(-2 - index)); +if (text != null) this.hoverOnPt(x, y, text, null, null); +this.refresh(3, "highlightBond"); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "highlight", +function(bs){ +this.atomHighlighted = (bs != null && bs.cardinality() == 1 ? bs.nextSetBit(0) : -1); +if (bs == null) { +this.setCursor(0); +} else { +this.shm.loadShape(8); +this.setCursor(12); +}this.setModelkitPropertySafely("highlight", bs); +this.setShapeProperty(8, "highlight", bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "refreshMeasures", +function(andStopMinimization){ +this.setShapeProperty(6, "refresh", null); +this.setStatusMeasuring("refreshed", -3, "", 0); +if (andStopMinimization) this.stopMinimization(); +}, "~B"); +Clazz_defineMethod(c$, "functionXY", +function(functionName, nX, nY){ +var data = null; +if (functionName.indexOf("file:") == 0) data = this.getFileAsString3(functionName.substring(5), false, null); + else if (functionName.indexOf("data2d_") != 0) return this.sm.functionXY(functionName, nX, nY); +nX = Math.abs(nX); +nY = Math.abs(nY); +var fdata; +if (data == null) { +fdata = this.getDataObj(functionName, null, 2); +if (fdata != null) return fdata; +data = ""; +}fdata = Clazz_newFloatArray (nX, nY, 0); +var f = Clazz_newFloatArray (nX * nY, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, f); +for (var i = 0, n = 0; i < nX; i++) for (var j = 0; j < nY; j++) fdata[i][j] = f[n++]; + + +return fdata; +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "functionXYZ", +function(functionName, nX, nY, nZ){ +var data = null; +if (functionName.indexOf("file:") == 0) data = this.getFileAsString3(functionName.substring(5), false, null); + else if (functionName.indexOf("data3d_") != 0) return this.sm.functionXYZ(functionName, nX, nY, nZ); +nX = Math.abs(nX); +nY = Math.abs(nY); +nZ = Math.abs(nZ); +var xyzdata; +if (data == null) { +xyzdata = this.getDataObj(functionName, null, 2); +if (xyzdata != null) return xyzdata; +data = ""; +}xyzdata = Clazz_newFloatArray (nX, nY, nZ, 0); +var f = Clazz_newFloatArray (nX * nY * nZ, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, f); +for (var i = 0, n = 0; i < nX; i++) for (var j = 0; j < nY; j++) for (var k = 0; k < nZ; k++) xyzdata[i][j][k] = f[n++]; + + + +return xyzdata; +}, "~S,~N,~N,~N"); +Clazz_overrideMethod(c$, "extractMolData", +function(what){ +if (what == null) { +var i = this.am.cmi; +if (i < 0 || this.ms.ac == 0) return null; +what = this.getModelNumberDotted(i); +}return this.getModelExtract(what, true, false, "V2000"); +}, "~S"); +Clazz_defineMethod(c$, "getNMRPredict", +function(type){ +type = type.toUpperCase(); +if (type.equals("H") || type.equals("1H") || type.equals("")) type = "H1"; + else if (type.equals("C") || type.equals("13C")) type = "C13"; +if (!type.equals("NONE")) { +if (!type.equals("C13") && !type.equals("H1")) return "Type must be H1 or C13"; +var molFile = this.getModelExtract("selected", true, false, "V2000"); +var pt = molFile.indexOf("\n"); +if (pt < 0) return null; +molFile = "Jmol " + JV.Viewer.version_date + molFile.substring(pt); +if (this.isApplet) { +this.showUrl(this.g.nmrUrlFormat + molFile); +return "opening " + this.g.nmrUrlFormat; +}}this.syncScript("true", "*", 0); +this.syncScript(type + "Simulate:", ".", 0); +return "sending request to JSpecView"; +}, "~S"); +Clazz_defineMethod(c$, "getHelp", +function(what){ +if (this.g.helpPath.indexOf("?") < 0) { +if (what.length > 0 && what.indexOf("?") != 0) what = "?search=" + JU.PT.rep(what, " ", "%20"); +what += (what.length == 0 ? "?ver=" : "&ver=") + JV.JC.majorVersion; +} else { +what = "&" + what; +}this.showUrl(this.g.helpPath + what); +}, "~S"); +Clazz_defineMethod(c$, "getChemicalInfo", +function(smiles, info, bsAtoms){ +info = info.toLowerCase(); +var type = '/'; +switch (";inchi;inchikey;stdinchi;stdinchikey;name;image;drawing;names;".indexOf(";" + info + ";")) { +case 0: +type = 'I'; +break; +case 6: +type = 'K'; +break; +case 15: +type = 'T'; +break; +case 24: +type = 'S'; +break; +case 36: +type = 'M'; +break; +case 41: +case 47: +type = '2'; +break; +case 55: +type = 'N'; +break; +} +var s = this.setLoadFormat(false, "_" + smiles, type, false); +if (type == '2') { +this.fm.loadImage(s, "\1" + smiles, false); +return s; +}if (type == '/') { +if (JU.PT.isOneOf(info, ";alc;cdxml;cerius;charmm;cif;cml;ctx;gjf;gromacs;hyperchem;jme;maestro;mol;mol2;sybyl2;mrv;pdb;sdf;sdf3000;sln;smiles;xyz")) s += "file?format=" + info; + else s += JU.PT.rep(info, " ", "%20"); +}s = this.getFileAsString4(s, -1, false, false, false, "file"); +if (type == 'M' && s.indexOf("\n") > 0) s = s.substring(0, s.indexOf("\n")); + else if (info.equals("jme")) s = this.getPropertyManager().fixJMEFormalCharges(bsAtoms, s); +return s; +}, "~S,~S,JU.BS"); +Clazz_defineMethod(c$, "addCommand", +function(command){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +if (command.startsWith("pause ") || command.equals("pause")) command = "resume"; +this.commandHistory.addCommand(JU.PT.replaceAllCharacters(command, "\r\n\t", " ")); +}, "~S"); +Clazz_defineMethod(c$, "pushState", +function(){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +this.commandHistory.pushState(this.getStateInfo()); +}); +Clazz_defineMethod(c$, "popState", +function(){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +var state = this.commandHistory.popState(); +if (state != null) this.evalStringQuiet(state); +}); +Clazz_defineMethod(c$, "removeCommand", +function(){ +return this.commandHistory.removeCommand(); +}); +Clazz_overrideMethod(c$, "getSetHistory", +function(howFarBack){ +return this.commandHistory.getSetHistory(howFarBack); +}, "~N"); +Clazz_defineMethod(c$, "historyFind", +function(cmd, dir){ +return this.commandHistory.find(cmd, dir); +}, "~S,~N"); +Clazz_defineMethod(c$, "setHistory", +function(fileName){ +this.commandHistory.getSetHistory(-2147483648); +this.commandHistory.addCommand(this.getFileAsString4(fileName, -1, false, false, true, null)); +}, "~S"); +Clazz_defineMethod(c$, "getOutputChannel", +function(localName, fullPath){ +return this.getOutputManager().getOutputChannel(localName, fullPath); +}, "~S,~A"); +Clazz_overrideMethod(c$, "writeTextFile", +function(fileName, data){ +return this.writeFile(fileName, data, "txt"); +}, "~S,~S"); +Clazz_defineMethod(c$, "writeFile", +function(fileName, data, type){ +var params = new java.util.Hashtable(); +params.put("fileName", fileName); +params.put("type", type); +params.put(((typeof(data)=='string') ? "text" : "bytes"), data); +return this.outputToFile(params); +}, "~S,~O,~S"); +Clazz_overrideMethod(c$, "clipImageOrPasteText", +function(text){ +if (!this.haveAccess(JV.Viewer.ACCESS.ALL)) return "no"; +return this.getOutputManager().clipImageOrPasteText(text); +}, "~S"); +Clazz_overrideMethod(c$, "getClipboardText", +function(){ +if (!this.haveAccess(JV.Viewer.ACCESS.ALL)) return "no"; +try { +return this.getOutputManager().getClipboardText(); +} catch (er) { +if (Clazz_exceptionOf(er, Error)){ +return J.i18n.GT.$("clipboard is not accessible -- use signed applet"); +} else { +throw er; +} +} +}); +Clazz_defineMethod(c$, "processWriteOrCapture", +function(params){ +return this.getOutputManager().processWriteOrCapture(params); +}, "java.util.Map"); +Clazz_defineMethod(c$, "createZip", +function(fileName, type, params){ +var state = this.getStateInfo(); +var data = params.get("data"); +if (fileName != null) params.put("fileName", fileName); +params.put("type", type); +params.put("text", state); +if (Clazz_instanceOf(data,Array)) params.put("scripts", data); + else if (Clazz_instanceOf(data,"JU.Lst")) params.put("imageData", data); +return this.getOutputManager().outputToFile(params); +}, "~S,~S,java.util.Map"); +Clazz_overrideMethod(c$, "outputToFile", +function(params){ +return this.getOutputManager().outputToFile(params); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setSyncTarget", +function(mode, TF){ +switch (mode) { +case 0: +this.sm.syncingMouse = TF; +break; +case 1: +this.sm.syncingScripts = TF; +break; +case 2: +this.sm.syncSend(TF ? "GET_GRAPHICS" : "SET_GRAPHICS_OFF", "*", 0); +if (Float.isNaN(this.tm.stereoDegrees)) this.setFloatProperty("stereoDegrees", -5); +if (TF) { +this.setBooleanProperty("_syncMouse", false); +this.setBooleanProperty("_syncScript", false); +}return; +} +if (!this.sm.syncingScripts && !this.sm.syncingMouse) this.setSync(); +}, "~N,~B"); +Clazz_overrideMethod(c$, "syncScript", +function(script, applet, port){ +this.sm.syncScript(script, applet, port); +}, "~S,~S,~N"); +Clazz_overrideMethod(c$, "getModelIndexFromId", +function(id){ +return this.ms.getModelIndexFromId(id); +}, "~S"); +Clazz_defineMethod(c$, "setSyncDriver", +function(mode){ +this.sm.setSyncDriver(mode); +}, "~N"); +Clazz_defineMethod(c$, "setProteinType", +function(type, bs){ +this.ms.setProteinType(bs == null ? this.bsA() : bs, type); +}, "J.c.STR,JU.BS"); +Clazz_defineMethod(c$, "getVanderwaalsMar", +function(i){ +return (this.defaultVdw === J.c.VDW.USER ? this.userVdwMars[i] : JU.Elements.getVanderwaalsMar(i, this.defaultVdw)); +}, "~N"); +Clazz_defineMethod(c$, "getVanderwaalsMarType", +function(atomicAndIsotopeNumber, type){ +if (type == null) type = this.defaultVdw; + else switch (type) { +case J.c.VDW.AUTO: +case J.c.VDW.AUTO_BABEL: +case J.c.VDW.AUTO_JMOL: +case J.c.VDW.AUTO_RASMOL: +if (this.defaultVdw !== J.c.VDW.AUTO) type = this.defaultVdw; +break; +default: +break; +} +if (type === J.c.VDW.USER && this.bsUserVdws == null) type = J.c.VDW.JMOL; +return (type === J.c.VDW.USER ? this.userVdwMars[atomicAndIsotopeNumber & 127] : JU.Elements.getVanderwaalsMar(atomicAndIsotopeNumber, type)); +}, "~N,J.c.VDW"); +Clazz_defineMethod(c$, "setVdwStr", +function(name){ +var type = J.c.VDW.getVdwType(name); +if (type == null) type = J.c.VDW.AUTO; +switch (type) { +case J.c.VDW.JMOL: +case J.c.VDW.BABEL: +case J.c.VDW.RASMOL: +case J.c.VDW.AUTO: +case J.c.VDW.USER: +break; +default: +type = J.c.VDW.JMOL; +} +if (type !== this.defaultVdw && type === J.c.VDW.USER && this.bsUserVdws == null) this.setUserVdw(this.defaultVdw); +this.defaultVdw = type; +this.g.setO("defaultVDW", type.getVdwLabel()); +}, "~S"); +Clazz_defineMethod(c$, "setUserVdw", +function(mode){ +this.userVdwMars = Clazz_newIntArray (JU.Elements.elementNumberMax, 0); +this.userVdws = Clazz_newFloatArray (JU.Elements.elementNumberMax, 0); +this.bsUserVdws = new JU.BS(); +if (mode === J.c.VDW.USER) mode = J.c.VDW.JMOL; +for (var i = 1; i < JU.Elements.elementNumberMax; i++) { +this.userVdwMars[i] = JU.Elements.getVanderwaalsMar(i, mode); +this.userVdws[i] = this.userVdwMars[i] / 1000; +} +}, "J.c.VDW"); +Clazz_defineMethod(c$, "getDefaultVdwNameOrData", +function(mode, type, bs){ +switch (mode) { +case -2147483648: +return this.defaultVdw.getVdwLabel(); +case 2147483647: +if ((bs = this.bsUserVdws) == null) return ""; +type = J.c.VDW.USER; +break; +} +if (type == null || type === J.c.VDW.AUTO) type = this.defaultVdw; +if (type === J.c.VDW.USER && this.bsUserVdws == null) this.setUserVdw(this.defaultVdw); +return this.getDataManager().getDefaultVdwNameOrData(type, bs); +}, "~N,J.c.VDW,JU.BS"); +Clazz_defineMethod(c$, "deleteAtoms", +function(bsAtoms, fullModels){ +var atomIndex = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +if (atomIndex < 0) return 0; +this.clearModelDependentObjects(); +var a = this.ms.at[atomIndex]; +if (a == null) return 0; +var mi = a.mi; +if (fullModels) { +return this.deleteModels(mi, bsAtoms); +}this.sm.setStatusStructureModified(atomIndex, a.mi, 4, "deleting atoms " + bsAtoms, bsAtoms.cardinality(), bsAtoms); +this.ms.deleteAtoms(bsAtoms); +var n = this.slm.deleteAtoms(bsAtoms); +this.setTainted(true); +this.sm.setStatusStructureModified(atomIndex, mi, -4, "OK", n, bsAtoms); +return n; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "deleteModels", +function(modelIndex, bsAtoms){ +var bsModels = (bsAtoms == null ? JU.BSUtil.newAndSetBit(modelIndex) : this.ms.getModelBS(bsAtoms, false)); +this.clearModelDependentObjects(); +bsAtoms = this.getModelUndeletedAtomsBitSetBs(bsModels); +var n = bsAtoms.cardinality(); +var currentModel = this.am.cmi; +this.setCurrentModelIndexClear(0, false); +this.am.setAnimationOn(false); +var bsD0 = JU.BSUtil.copy(this.slm.bsDeleted); +var bsDeleted = this.ms.deleteModels(bsModels); +if (bsDeleted == null) { +this.setCurrentModelIndexClear(currentModel, false); +return 0; +}this.sm.setStatusStructureModified(-1, modelIndex, 5, "deleting model " + this.getModelNumberDotted(modelIndex), n, bsAtoms); +this.slm.processDeletedModelAtoms(bsDeleted); +if (this.eval != null) this.eval.deleteAtomsInVariables(bsDeleted); +this.setAnimationRange(0, 0); +this.clearRepaintManager(-1); +this.am.clear(); +this.am.initializePointers(1); +this.setCurrentModelIndexClear(this.ms.mc > 1 ? -1 : 0, this.ms.mc > 1); +this.hoverAtomIndex = -1; +this.setFileLoadStatus(J.c.FIL.DELETED, null, null, null, null, null); +this.refreshMeasures(true); +if (bsD0 != null) bsDeleted.andNot(bsD0); +n = JU.BSUtil.cardinalityOf(bsDeleted); +this.sm.setStatusStructureModified(-1, modelIndex, -5, "OK", n, bsDeleted); +return n; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "deleteBonds", +function(bsDeleted){ +var modelIndex = this.ms.bo[bsDeleted.nextSetBit(0)].atom1.mi; +var n = bsDeleted.cardinality(); +if (n == 0) return; +this.sm.setStatusStructureModified(-1, modelIndex, 2, "delete bonds " + JU.Escape.eBond(bsDeleted), bsDeleted.cardinality(), bsDeleted); +this.ms.deleteBonds(bsDeleted, false); +this.sm.setStatusStructureModified(-1, modelIndex, -2, "OK", bsDeleted.cardinality(), bsDeleted); +}, "JU.BS"); +Clazz_defineMethod(c$, "deleteModelAtoms", +function(modelIndex, firstAtomIndex, nAtoms, bsModelAtoms){ +var n = bsModelAtoms.cardinality(); +if (n == 0) return; +this.sm.setStatusStructureModified(-1, modelIndex, 7, "delete atoms " + JU.Escape.eBS(bsModelAtoms), n, bsModelAtoms); +JU.BSUtil.deleteBits(this.tm.bsFrameOffsets, bsModelAtoms); +this.getDataManager().deleteModelAtoms(firstAtomIndex, nAtoms, bsModelAtoms); +this.sm.setStatusStructureModified(-1, modelIndex, -7, "OK", n, bsModelAtoms); +}, "~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "getQuaternionFrame", +function(){ +return this.g.quaternionFrame.charAt(this.g.quaternionFrame.length == 2 ? 1 : 0); +}); +Clazz_defineMethod(c$, "loadImageData", +function(image, nameOrError, echoName, sco){ +var sc = sco; +if (image == null && nameOrError != null) this.scriptEcho(nameOrError); +if (echoName == null) { +this.setBackgroundImage((image == null ? null : nameOrError), image); +} else if (echoName.startsWith("\1")) { +this.sm.showImage(echoName, image); +} else if (echoName.startsWith("\0")) { +if (image != null) { +this.setWindowDimensions( Clazz_newFloatArray(-1, [this.apiPlatform.getImageWidth(image), this.apiPlatform.getImageHeight(image)])); +}} else { +this.shm.loadShape(31); +this.setShapeProperty(31, "text", nameOrError); +if (image != null) this.setShapeProperty(31, "image", image); +}if (JV.Viewer.isJS && sc != null) { +sc.mustResumeEval = true; +this.eval.resumeEval(sc); +}return false; +}, "~O,~S,~S,~O"); +Clazz_defineMethod(c$, "cd", +function(dir){ +if (dir == null) { +dir = "."; +} else if (dir.length == 0) { +this.setStringProperty("defaultDirectory", ""); +dir = "."; +}dir = this.fm.getDefaultDirectory(dir + (dir.equals("=") ? "" : dir.endsWith("/") ? "X.spt" : "/X.spt")); +if (dir.length > 0) this.setStringProperty("defaultDirectory", dir); +var path = this.fm.getFilePath(dir + "/", true, false); +if (path.startsWith("file:/")) JV.FileManager.setLocalPath(this, dir, false); +return dir; +}, "~S"); +Clazz_defineMethod(c$, "setErrorMessage", +function(errMsg, errMsgUntranslated){ +this.errorMessageUntranslated = errMsgUntranslated; +if (errMsg != null) this.eval.stopScriptThreads(); +return (this.errorMessage = errMsg); +}, "~S,~S"); +Clazz_overrideMethod(c$, "getErrorMessage", +function(){ +return this.errorMessage; +}); +Clazz_overrideMethod(c$, "getErrorMessageUn", +function(){ +return this.errorMessageUntranslated == null ? this.errorMessage : this.errorMessageUntranslated; +}); +Clazz_defineMethod(c$, "setShapeErrorState", +function(shapeID, state){ +this.currentShapeID = shapeID; +this.currentShapeState = state; +}, "~N,~S"); +Clazz_defineMethod(c$, "getShapeErrorState", +function(){ +if (this.currentShapeID < 0) return ""; +this.shm.releaseShape(this.currentShapeID); +this.clearRepaintManager(this.currentShapeID); +return JV.JC.getShapeClassName(this.currentShapeID, false) + " " + this.currentShapeState; +}); +Clazz_defineMethod(c$, "handleError", +function(er, doClear){ +try { +if (doClear) this.zapMsg("" + er); +this.undoMoveAction(4165, -2); +if (JU.Logger.getLogLevel() == 0) JU.Logger.setLogLevel(4); +this.setCursor(0); +this.setBooleanPropertyTok("refreshing", 603979900, true); +this.fm.setPathForAllFiles(""); +JU.Logger.error("vwr handling error condition: " + er + " "); +this.notifyError("Error", "doClear=" + doClear + "; " + er, "" + er); +} catch (e1) { +try { +JU.Logger.error("Could not notify error " + er + ": due to " + e1); +} catch (er2) { +} +} +}, "Throwable,~B"); +Clazz_defineMethod(c$, "getFunctions", +function(isStatic){ +return (isStatic ? JV.Viewer.staticFunctions : this.localFunctions); +}, "~B"); +Clazz_defineMethod(c$, "removeFunction", +function(name){ +name = name.toLowerCase(); +var $function = this.getFunction(name); +if ($function == null) return; +JV.Viewer.staticFunctions.remove(name); +this.localFunctions.remove(name); +}, "~S"); +Clazz_defineMethod(c$, "getFunction", +function(name){ +if (name == null) return null; +var $function = (JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).get(name); +return ($function == null || $function.geTokens() == null ? null : $function); +}, "~S"); +c$.isStaticFunction = Clazz_defineMethod(c$, "isStaticFunction", +function(name){ +return name.startsWith("static_"); +}, "~S"); +Clazz_defineMethod(c$, "isFunction", +function(name){ +return (JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).containsKey(name); +}, "~S"); +Clazz_defineMethod(c$, "clearFunctions", +function(){ +JV.Viewer.staticFunctions.clear(); +this.localFunctions.clear(); +}); +Clazz_defineMethod(c$, "addFunction", +function($function){ +var name = $function.getName(); +(JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).put(name, $function); +}, "J.api.JmolScriptFunction"); +Clazz_defineMethod(c$, "getFunctionCalls", +function(selectedFunction){ +return this.getStateCreator().getFunctionCalls(selectedFunction); +}, "~S"); +Clazz_defineMethod(c$, "checkPrivateKey", +function(privateKey){ +return privateKey == this.privateKey; +}, "~N"); +Clazz_defineMethod(c$, "bindAction", +function(desc, name){ +if (this.haveDisplay) this.acm.bind(desc, name); +}, "~S,~S"); +Clazz_defineMethod(c$, "unBindAction", +function(desc, name){ +if (this.haveDisplay) this.acm.unbindAction(desc, name); +}, "~S,~S"); +Clazz_defineMethod(c$, "calculateStruts", +function(bs1, bs2){ +return this.ms.calculateStruts(bs1 == null ? this.bsA() : bs1, bs2 == null ? this.bsA() : bs2); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getPreserveState", +function(){ +return (this.g.preserveState && this.scm != null); +}); +Clazz_defineMethod(c$, "isKiosk", +function(){ +return this.$isKiosk; +}); +Clazz_defineMethod(c$, "hasFocus", +function(){ +return (this.haveDisplay && (this.$isKiosk || this.apiPlatform.hasFocus(this.display))); +}); +Clazz_defineMethod(c$, "setFocus", +function(){ +if (this.haveDisplay && !this.apiPlatform.hasFocus(this.display)) this.apiPlatform.requestFocusInWindow(this.display); +}); +Clazz_defineMethod(c$, "stopMinimization", +function(){ +if (this.minimizer != null) { +this.minimizer.setProperty("stop", null); +}}); +Clazz_defineMethod(c$, "clearMinimization", +function(){ +if (this.minimizer != null) this.minimizer.setProperty("clear", null); +}); +Clazz_defineMethod(c$, "getMinimizationInfo", +function(){ +return (this.minimizer == null ? "" : this.minimizer.getProperty("log", 0)); +}); +Clazz_defineMethod(c$, "checkMinimization", +function(){ +this.refreshMeasures(true); +if (!this.g.monitorEnergy) return; +try { +this.minimize(null, 0, 0, this.getFrameAtoms(), null, null, 0, 1); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.echoMessage(this.getP("_minimizationForceField") + " Energy = " + this.getP("_minimizationEnergy")); +}); +Clazz_defineMethod(c$, "minimize", +function(eval, steps, crit, bsSelected, bsFixed, bsInFrame, rangeFixed, flags){ +var isSelectionExplicit = (bsSelected != null); +if (isSelectionExplicit) { +flags |= 2; +}var addHydrogen = (flags & 16) != 0; +var isModelkitCmd = (flags & 256) != 0; +var isSilent = (flags & 1) != 0; +var isQuick = (flags & 8) != 0; +var groupSelected = (flags & 64) != 0; +var selectedOnly = groupSelected || (flags & 32) != 0; +var isFixExplicit = (bsFixed != null); +if (this.isModelKitOpen()) this.setModelkitPropertySafely("constraint", null); +if (bsInFrame == null) bsInFrame = this.getFrameAtoms(); +if (!isQuick && !addHydrogen && isSelectionExplicit && !isFixExplicit && !selectedOnly) { +var bs = JU.BSUtil.copy(bsInFrame); +bsFixed = JU.BSUtil.copy(bs); +bsFixed.andNot(bsSelected); +bsSelected = bs; +isFixExplicit = true; +}if (!isSelectionExplicit) { +bsSelected = this.getThisModelAtoms(); +if (selectedOnly) bsSelected.and(this.bsA()); +} else if (!isQuick) { +bsSelected.and(bsInFrame); +}if (bsSelected.isEmpty()) return; +var bsBasis = (isModelkitCmd || !selectedOnly ? JU.BSUtil.copy(this.ms.am[this.ms.at[bsSelected.nextSetBit(0)].mi].bsAsymmetricUnit) : null); +if (isModelkitCmd && bsBasis == null) { +this.scriptStatusMsg("MODELKIT MINIMIZE is only applicable to crystal structures.", "minimization: not a crystal structure"); +return; +}try { +if (isModelkitCmd) { +this.getModelkit(false).cmdMinimize(eval, bsBasis, steps, crit, rangeFixed, flags); +return; +}var ff = (bsBasis == null ? this.g.forceField : "UFF"); +this.getModelForAtomIndex(bsSelected.nextSetBit(0)).auxiliaryInfo.put("dimension", "3D"); +if (isQuick) { +bsInFrame = bsSelected; +}var bsMotionFixed = JU.BSUtil.copy(isFixExplicit ? bsFixed : this.slm.getMotionFixedAtoms()); +var haveFixed = !bsMotionFixed.isEmpty(); +if (haveFixed) bsSelected.andNot(bsMotionFixed); +var bsNearby = (bsBasis != null && isModelkitCmd ? this.getThisModelAtoms() : selectedOnly || !haveFixed ? new JU.BS() : this.ms.getAtomsWithinRadius((rangeFixed <= 0 ? 5.0 : rangeFixed), bsSelected, true, null, null)); +bsNearby.andNot(bsSelected); +if (haveFixed) { +bsMotionFixed.and(bsNearby); +} else { +bsMotionFixed = bsNearby; +}bsMotionFixed.and(bsInFrame); +flags |= ((haveFixed ? 4 : 0) | (this.getBooleanProperty("minimizationSilent") ? 1 : 0)); +if (isQuick && this.getBoolean(603979962)) return; +if (isQuick) { +{ +try { +if (!isSilent) JU.Logger.info("Minimizing " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).minimize(steps, crit, bsSelected, bsMotionFixed, null, flags, "UFF"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Minimization error: " + e.toString()); +e.printStackTrace(); +} else { +throw e; +} +} +}}if (addHydrogen) { +var bsH = this.addHydrogens(bsSelected, flags); +if (!isQuick) bsSelected.or(bsH); +}var n = bsSelected.cardinality(); +if (ff.equals("MMFF") && n > this.g.minimizationMaxAtoms) { +this.scriptStatusMsg("Too many atoms for minimization (" + n + ">" + this.g.minimizationMaxAtoms + "); use 'set minimizationMaxAtoms' to increase this limit", "minimization: too many atoms"); +return; +}if (groupSelected) { +bsMotionFixed.or(this.ms.getConnectingAtoms(bsSelected, bsMotionFixed)); +bsSelected.andNot(bsMotionFixed); +}if (!isSilent) JU.Logger.info("Minimizing " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).minimize(steps, crit, bsSelected, bsMotionFixed, bsBasis, flags, (isQuick ? "MMFF" : ff)); +if (isQuick) { +this.g.forceField = "MMFF"; +this.setHydrogens(bsSelected); +var ffUsed = this.getMinimizer(false).getForceFieldUsed(); +if (ffUsed != null) this.showString("Minimized by Jmol using " + ffUsed, false); +}} catch (e$$) { +if (Clazz_exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +if (eval != null) eval.loadFileResourceAsync(e.getFileName()); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +JU.Logger.error("Minimization error: " + e.toString()); +e.printStackTrace(); +} +} else { +throw e$$; +} +} +}, "J.api.JmolScriptEvaluator,~N,~N,JU.BS,JU.BS,JU.BS,~N,~N"); +Clazz_defineMethod(c$, "setHydrogens", +function(bsAtoms){ +var nTotal = Clazz_newIntArray (1, 0); +var hatoms = this.ms.calculateHydrogens(bsAtoms, nTotal, null, 2056); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var pts = hatoms[i]; +if (pts == null || pts.length == 0) continue; +var a = this.ms.at[i]; +var b = a.bonds; +for (var j = 0, pt = 0, n = a.getBondCount(); j < n; j++) { +var h = b[j].getOtherAtom(a); +if (h.getAtomicAndIsotopeNumber() == 1) { +var p = pts[pt++]; +if (p != null) this.ms.setAtomCoord(h.i, p.x, p.y, p.z); +}} +} +this.ms.resetMolecules(); +}, "JU.BS"); +Clazz_defineMethod(c$, "setMotionFixedAtoms", +function(bs){ +this.slm.setMotionFixedAtoms(bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "setMotionFixed", +function(bs){ +this.slm.setMotionFixedAtoms(bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "getMotionFixedAtoms", +function(sym, bsFixed){ +if (this.am.cmi < 0) return new JU.BS(); +if (bsFixed == null) bsFixed = new JU.BS(); +bsFixed.or(this.slm.getMotionFixedAtoms()); +bsFixed.and(this.getThisModelAtoms()); +if (sym == null) sym = this.getOperativeSymmetry(); +if (sym != null && this.getModelkit(false) != null) this.modelkit.addLockedAtoms(sym, bsFixed); +return bsFixed; +}, "J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "getAtomicPropertyState", +function(commands, type, bs, name, data){ +this.getStateCreator().getAtomicPropertyStateBuffer(commands, type, bs, name, data); +}, "JU.SB,~N,JU.BS,~S,~A"); +Clazz_defineMethod(c$, "getCenterAndPoints", +function(atomSets, addCenter){ +return this.ms.getCenterAndPoints(atomSets, addCenter); +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "writeFileData", +function(fileName, type, modelIndex, parameters){ +return this.getOutputManager().writeFileData(fileName, type, modelIndex, parameters); +}, "~S,~S,~N,~A"); +Clazz_defineMethod(c$, "getPdbData", +function(modelIndex, type, bsAtoms, parameters, oc, getStructure){ +return this.getPropertyManager().getPdbData(modelIndex, type, bsAtoms == null ? this.bsA() : bsAtoms, parameters, oc, getStructure); +}, "~N,~S,JU.BS,~A,JU.OC,~B"); +Clazz_defineMethod(c$, "getGroupsWithin", +function(nResidues, bs){ +return this.ms.getGroupsWithin(nResidues, bs); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setShapeSize", +function(shapeID, madOrMad10, bsSelected){ +if (bsSelected == null) bsSelected = this.bsA(); +this.shm.setShapeSizeBs(shapeID, madOrMad10, null, bsSelected); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "setShapeProperty", +function(shapeID, propertyName, value){ +if (shapeID >= 0) this.shm.setShapePropertyBs(shapeID, propertyName, value, null); +}, "~N,~S,~O"); +Clazz_defineMethod(c$, "getShapeProperty", +function(shapeType, propertyName){ +return this.shm.getShapePropertyIndex(shapeType, propertyName, -2147483648); +}, "~N,~S"); +Clazz_defineMethod(c$, "getShapePropertyAsInt", +function(shapeID, propertyName){ +var value = this.getShapeProperty(shapeID, propertyName); +return value == null || !(Clazz_instanceOf(value, Integer)) ? -2147483648 : (value).intValue(); +}, "~N,~S"); +Clazz_defineMethod(c$, "setModelVisibility", +function(){ +if (this.shm != null) this.shm.setModelVisibility(); +}); +Clazz_defineMethod(c$, "resetShapes", +function(andCreateNew){ +this.shm.resetShapes(!andCreateNew); +if (andCreateNew) { +this.shm.loadDefaultShapes(this.ms); +this.clearRepaintManager(-1); +}}, "~B"); +Clazz_defineMethod(c$, "setParallel", +function(TF){ +return (this.$isParallel = this.g.multiProcessor && TF); +}, "~B"); +Clazz_defineMethod(c$, "isParallel", +function(){ +return this.g.multiProcessor && this.$isParallel; +}); +Clazz_defineMethod(c$, "undoMoveAction", +function(action, n){ +return (this.g.preserveState ? this.getStateCreator().undoMoveAction(action, n) : 0); +}, "~N,~N"); +Clazz_defineMethod(c$, "undoMoveActionClear", +function(taintedAtom, type, clearRedo){ +if (this.g.preserveState && this.getOperativeSymmetry() == null) this.getStateCreator().undoMoveActionClear(taintedAtom, type, clearRedo); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "moveAtomWithHydrogens", +function(atomIndex, deltaX, deltaY, deltaZ, ptNew, bsAtoms){ +this.stopMinimization(); +var modelkitNoAddH = (ptNew != null && deltaX == 0); +var atom = this.ms.at[atomIndex]; +if (bsAtoms == null) { +bsAtoms = JU.BSUtil.newAndSetBit(atomIndex); +var addH = (this.getOperativeSymmetry() == null || this.isModelKitOpen() && !this.modelkit.hasConstraint(atomIndex, true, false)); +if (addH && !modelkitNoAddH) this.ms.addConnectedHAtoms(atom, bsAtoms); +}return this.moveSelected(deltaX, deltaY, deltaZ, -2147483648, -2147483648, bsAtoms, atom, ptNew, true, true, 0); +}, "~N,~N,~N,~N,JU.P3,JU.BS"); +Clazz_defineMethod(c$, "isModelPDB", +function(i){ +return this.ms.am[i].isBioModel; +}, "~N"); +Clazz_overrideMethod(c$, "deleteMeasurement", +function(i){ +this.setShapeProperty(6, "delete", Integer.$valueOf(i)); +}, "~N"); +Clazz_overrideMethod(c$, "getSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 16 | (bs == null && JU.Logger.debugging ? 131072 : 0), null); +}, "JU.BS"); +Clazz_overrideMethod(c$, "getOpenSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 5 | (bs == null && JU.Logger.debugging ? 131072 : 0), "/open///"); +}, "JU.BS"); +Clazz_defineMethod(c$, "getBioSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 3145728 | 5242880 | 17825792 | (JU.Logger.debugging ? 131072 : 0), null); +}, "JU.BS"); +Clazz_defineMethod(c$, "getSmilesOpt", +function(bsSelected, index1, index2, flags, options){ +var bioComment = ((flags & 17825792) == 17825792 ? JV.Viewer.getJmolVersion() + " " + this.getModelName(this.am.cmi) : options); +var atoms = this.ms.at; +if (bsSelected == null) { +if (index1 < 0 || index2 < 0) { +bsSelected = this.bsA(); +} else { +if ((flags & 1048576) == 1048576) { +if (index1 > index2) { +var i = index1; +index1 = index2; +index2 = i; +}index1 = atoms[index1].group.firstAtomIndex; +index2 = atoms[index2].group.lastAtomIndex; +}bsSelected = new JU.BS(); +bsSelected.setBits(index1, index2 + 1); +}}flags |= (this.isModel2D(bsSelected) ? 134217728 : 0); +var sm = this.getSmilesMatcher(); +if (JV.JC.isSmilesCanonical(options)) { +var smiles = sm.getSmiles(atoms, this.ms.ac, bsSelected, "/noAromatic/", flags); +return this.getChemicalInfo(smiles, "smiles", null).trim(); +}return sm.getSmiles(atoms, this.ms.ac, bsSelected, bioComment, flags); +}, "JU.BS,~N,~N,~N,~S"); +Clazz_defineMethod(c$, "isModel2D", +function(bs){ +var m = this.getModelForAtomIndex(bs.nextSetBit(0)); +return (m != null && "2D".equals(m.auxiliaryInfo.get("dimension"))); +}, "JU.BS"); +Clazz_defineMethod(c$, "alert", +function(msg){ +this.prompt(msg, null, null, true); +}, "~S"); +Clazz_defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +return (this.$isKiosk ? "null" : this.apiPlatform.prompt(label, data, list, asButtons)); +}, "~S,~S,~A,~B"); +Clazz_defineMethod(c$, "dialogAsk", +function(type, fileName, params){ +{ +return prompt(type, fileName); +}}, "~S,~S,java.util.Map"); +Clazz_defineMethod(c$, "initializeExporter", +function(params){ +var isJS = params.get("type").equals("JS"); +if (isJS) { +if (this.jsExporter3D != null) { +this.jsExporter3D.initializeOutput(this, this.privateKey, params); +return this.jsExporter3D; +}} else { +var fileName = params.get("fileName"); +var fullPath = params.get("fullPath"); +var out = this.getOutputChannel(fileName, fullPath); +if (out == null) return null; +params.put("outputChannel", out); +}var export3D = J.api.Interface.getOption("export.Export3D", this, "export"); +if (export3D == null) return null; +var exporter = export3D.initializeExporter(this, this.privateKey, this.gdata, params); +if (isJS && exporter != null) this.jsExporter3D = export3D; +return (exporter == null ? null : export3D); +}, "java.util.Map"); +Clazz_defineMethod(c$, "getMouseEnabled", +function(){ +return this.refreshing && !this.creatingImage; +}); +Clazz_overrideMethod(c$, "calcAtomsMinMax", +function(bs, boxInfo){ +this.ms.calcAtomsMinMax(bs, boxInfo); +}, "JU.BS,JU.BoxInfo"); +Clazz_defineMethod(c$, "getObjectMap", +function(map, c){ +switch ((c).charCodeAt(0)) { +case 123: +if (this.getScriptManager() != null) { +var m = map; +if (this.definedAtomSets != null) m.putAll(this.definedAtomSets); +JS.T.getTokensType(m, 2097152); +}return; +case 36: +case 48: +this.shm.getObjectMap(map, c == '$'); +return; +} +}, "java.util.Map,~S"); +Clazz_defineMethod(c$, "setPicked", +function(atomIndex, andReset){ +var pickedSet = null; +var pickedList = null; +if (atomIndex >= 0) { +if (andReset) this.setPicked(-1, false); +this.g.setI("_atompicked", atomIndex); +pickedSet = this.g.getParam("picked", true); +pickedList = this.g.getParam("pickedList", true); +}if (pickedSet == null || pickedSet.tok != 10) { +pickedSet = JS.SV.newV(10, new JU.BS()); +pickedList = JS.SV.getVariableList( new JU.Lst()); +this.g.setUserVariable("picked", pickedSet); +this.g.setUserVariable("pickedList", pickedList); +}if (atomIndex < 0) return; +JS.SV.getBitSet(pickedSet, false).set(atomIndex); +var p = pickedList.pushPop(null, null); +if (p.tok == 10) pickedList.pushPop(null, p); +if (p.tok != 10 || !(p.value).get(atomIndex)) pickedList.pushPop(null, JS.SV.newV(10, JU.BSUtil.newAndSetBit(atomIndex))); +}, "~N,~B"); +Clazz_overrideMethod(c$, "runScript", +function(script){ +return "" + this.evaluateExpression( Clazz_newArray(-1, [ Clazz_newArray(-1, [JS.T.tokenScript, JS.T.tokenLeftParen, JS.SV.newS(script), JS.T.tokenRightParen])])); +}, "~S"); +Clazz_overrideMethod(c$, "runScriptCautiously", +function(script){ +var outputBuffer = new JU.SB(); +try { +if (this.getScriptManager() == null) return null; +this.eval.runScriptBuffer(script, outputBuffer, false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return this.eval.getErrorMessage(); +} else { +throw e; +} +} +return outputBuffer.toString(); +}, "~S"); +Clazz_defineMethod(c$, "setFrameDelayMs", +function(millis){ +this.ms.setFrameDelayMs(millis, this.getVisibleFramesBitSet()); +}, "~N"); +Clazz_defineMethod(c$, "getBaseModelBitSet", +function(){ +return this.ms.getModelAtomBitSetIncludingDeleted(this.getJDXBaseModelIndex(this.am.cmi), true); +}); +Clazz_defineMethod(c$, "clearTimeouts", +function(){ +if (this.timeouts != null) J.thread.TimeoutThread.clear(this.timeouts); +}); +Clazz_defineMethod(c$, "setTimeout", +function(name, mSec, script){ +if (!this.haveDisplay || this.headless || this.autoExit) return; +if (name == null) { +this.clearTimeouts(); +return; +}if (this.timeouts == null) { +this.timeouts = new java.util.Hashtable(); +}J.thread.TimeoutThread.setTimeout(this, this.timeouts, name, mSec, script); +}, "~S,~N,~S"); +Clazz_defineMethod(c$, "triggerTimeout", +function(name){ +if (!this.haveDisplay || this.timeouts == null) return; +J.thread.TimeoutThread.trigger(this.timeouts, name); +}, "~S"); +Clazz_defineMethod(c$, "clearTimeout", +function(name){ +this.setTimeout(name, 0, null); +}, "~S"); +Clazz_defineMethod(c$, "showTimeout", +function(name){ +return (this.haveDisplay ? J.thread.TimeoutThread.showTimeout(this.timeouts, name) : ""); +}, "~S"); +Clazz_defineMethod(c$, "getOrCalcPartialCharges", +function(bsSelected, bsIgnore){ +if (bsSelected == null) bsSelected = this.bsA(); +bsSelected = JU.BSUtil.copy(bsSelected); +JU.BSUtil.andNot(bsSelected, bsIgnore); +JU.BSUtil.andNot(bsSelected, this.ms.bsPartialCharges); +if (!bsSelected.isEmpty()) this.calculatePartialCharges(bsSelected); +return this.ms.getPartialCharges(); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "calculatePartialCharges", +function(bsSelected){ +if (bsSelected == null || bsSelected.isEmpty()) bsSelected = this.getFrameAtoms(); +if (bsSelected.isEmpty()) return; +JU.Logger.info("Calculating MMFF94 partial charges for " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).calculatePartialCharges(this.ms, bsSelected, null); +}, "JU.BS"); +Clazz_defineMethod(c$, "setCurrentModelID", +function(id){ +var modelIndex = this.am.cmi; +if (modelIndex >= 0) this.ms.setInfo(modelIndex, "modelID", id); +}, "~S"); +Clazz_defineMethod(c$, "cacheClear", +function(){ +this.fm.cacheClear(); +this.ligandModelSet = null; +this.ligandModels = null; +this.ms.clearCache(); +this.cm.ce.clearCache(); +}); +Clazz_defineMethod(c$, "cachePut", +function(key, data){ +JU.Logger.info("Viewer cachePut " + key); +this.fm.cachePut(key, data); +}, "~S,~O"); +Clazz_defineMethod(c$, "cacheFileByName", +function(fileName, isAdd){ +if (fileName == null) { +this.cacheClear(); +return -1; +}return this.fm.cacheFileByNameAdd(fileName, isAdd); +}, "~S,~B"); +Clazz_defineMethod(c$, "clearThreads", +function(){ +if (this.eval != null) this.eval.stopScriptThreads(); +this.stopMinimization(); +this.tm.clearThreads(); +this.setAnimationOn(false); +}); +Clazz_defineMethod(c$, "getEvalContextAndHoldQueue", +function(eval){ +if (eval == null || !(JV.Viewer.isJS || this.testAsync)) return null; +eval.pushContextDown("getEvalContextAndHoldQueue"); +var sc = eval.getThisContext(); +sc.setMustResume(); +sc.isJSThread = true; +this.queueOnHold = true; +return sc; +}, "J.api.JmolScriptEvaluator"); +Clazz_defineMethod(c$, "getDefaultPropertyParam", +function(propertyID){ +return this.getPropertyManager().getDefaultPropertyParam(propertyID); +}, "~N"); +Clazz_defineMethod(c$, "getPropertyNumber", +function(name){ +return this.getPropertyManager().getPropertyNumber(name); +}, "~S"); +Clazz_defineMethod(c$, "checkPropertyParameter", +function(name){ +return this.getPropertyManager().checkPropertyParameter(name); +}, "~S"); +Clazz_defineMethod(c$, "extractProperty", +function(property, args, pt){ +return this.getPropertyManager().extractProperty(property, args, pt, null, false); +}, "~O,~O,~N"); +Clazz_defineMethod(c$, "addHydrogens", +function(bsAtoms, flags){ +var isSilent = ((flags & 1) == 1); +var isQuick = ((flags & 8) == 8); +var doAll = (bsAtoms == null); +if (bsAtoms == null) bsAtoms = this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().length() - 1); +var bsB = new JU.BS(); +if (bsAtoms.isEmpty()) return bsB; +var vConnections = new JU.Lst(); +var pts = this.getAdditionalHydrogens(bsAtoms, vConnections, flags | (doAll ? 256 : 0)); +var wasAppendNew = false; +wasAppendNew = this.g.appendNew; +if (pts.length > 0) { +this.clearModelDependentObjects(); +try { +bsB = (isQuick && vConnections.get(0).mi == this.ms.mc - 1 ? this.ms.addHydrogens(vConnections, pts) : this.addHydrogensInline(bsAtoms, vConnections, pts, null)); +this.setModelkitPropertySafely("updateatomkeys", bsAtoms); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +if (wasAppendNew) this.g.appendNew = true; +}if (!isSilent) this.scriptStatus(J.i18n.GT.i(J.i18n.GT.$("{0} hydrogens added"), pts.length)); +return bsB; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "addHydrogensInline", +function(bsAtoms, vConnections, pts, htParams){ +if (this.getScriptManager() == null) return null; +return this.scm.addHydrogensInline(bsAtoms, vConnections, pts, htParams); +}, "JU.BS,JU.Lst,~A,java.util.Map"); +Clazz_overrideMethod(c$, "evalFunctionFloat", +function(func, params, values){ +return (this.getScriptManager() == null ? 0 : this.eval.evalFunctionFloat(func, params, values)); +}, "~O,~O,~A"); +Clazz_defineMethod(c$, "evalParallel", +function(context, shapeManager){ +this.displayLoadErrors = false; +var isOK = this.getScriptManager() != null && this.eval.evalParallel(context, (shapeManager == null ? this.shm : shapeManager)); +this.displayLoadErrors = true; +return isOK; +}, "JS.ScriptContext,JV.ShapeManager"); +Clazz_overrideMethod(c$, "evaluateExpression", +function(stringOrTokens){ +return (this.getScriptManager() == null ? null : this.eval.evaluateExpression(stringOrTokens, false, false)); +}, "~O"); +Clazz_overrideMethod(c$, "evaluateExpressionAsVariable", +function(stringOrTokens){ +return (this.getScriptManager() == null ? null : this.eval.evaluateExpression(stringOrTokens, true, false)); +}, "~O"); +Clazz_defineMethod(c$, "getAtomBitSet", +function(atomExpression){ +if (Clazz_instanceOf(atomExpression,"JU.BS")) return this.slm.excludeAtoms(atomExpression, false); +this.getScriptManager(); +return this.getAtomBitSetEval(this.eval, atomExpression); +}, "~O"); +Clazz_defineMethod(c$, "getScriptContext", +function(why){ +return (this.getScriptManager() == null ? null : this.eval.getScriptContext(why)); +}, "~S"); +Clazz_defineMethod(c$, "getAtomDefs", +function(names){ +var keys = new JU.Lst(); +for (var e, $e = names.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (Clazz_instanceOf(e.getValue(),"JU.BS")) keys.addLast("{" + e.getKey() + "} <" + (e.getValue()).cardinality() + " atoms>\n"); + +var n = keys.size(); +var k = new Array(n); +keys.toArray(k); +java.util.Arrays.sort(k); +var sb = new JU.SB(); +for (var i = 0; i < n; i++) sb.append(k[i]); + +return sb.append("\n").toString(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setCGO", +function(info){ +this.shm.loadShape(23); +this.shm.setShapePropertyBs(23, "setCGO", info, null); +}, "JU.Lst"); +Clazz_defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = this.mm.modelSet = modelSet; +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "setObjectProp", +function(id, tokCommand){ +this.getScriptManager(); +if (id == null) id = "*"; +return (this.eval == null ? null : this.eval.setObjectPropSafe(id, tokCommand)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setDihedrals", +function(dihedralList, bsBranches, rate){ +if (bsBranches == null) bsBranches = this.ms.getBsBranches(dihedralList); +this.ms.setDihedrals(dihedralList, bsBranches, rate); +}, "~A,~A,~N"); +Clazz_defineMethod(c$, "getChainID", +function(id, isAssign){ +var iboxed = this.chainMap.get(id); +if (iboxed != null) return iboxed.intValue(); +var i = (id.charAt(0)).charCodeAt(0); +if (id.length > 1) { +i = 300 + this.chainList.size(); +} else if ((isAssign || this.chainCaseSpecified) && 97 <= i && i <= 122) { +i += 159; +}if (i >= 256) { +iboxed = this.chainMap.get(id); +if (iboxed != null) return iboxed.intValue(); +this.chainCaseSpecified = new Boolean (this.chainCaseSpecified | isAssign).valueOf(); +this.chainList.addLast(id); +}iboxed = Integer.$valueOf(i); +this.chainMap.put(iboxed, id); +this.chainMap.put(id, iboxed); +return i; +}, "~S,~B"); +Clazz_defineMethod(c$, "getChainIDStr", +function(id){ +return this.chainMap.get(Integer.$valueOf(id)); +}, "~N"); +Clazz_defineMethod(c$, "getScriptQueueInfo", +function(){ +return (this.scm != null && this.scm.isQueueProcessing() ? Boolean.TRUE : Boolean.FALSE); +}); +Clazz_defineMethod(c$, "getNMRCalculation", +function(){ +return (this.nmrCalculation == null ? (this.nmrCalculation = J.api.Interface.getOption("quantum.NMRCalculation", this, "script")).setViewer(this) : this.nmrCalculation); +}); +Clazz_defineMethod(c$, "getDistanceUnits", +function(s){ +if (s == null) s = this.getDefaultMeasurementLabel(2); +var pt = s.indexOf("//"); +return (pt < 0 ? this.g.measureDistanceUnits : s.substring(pt + 2)); +}, "~S"); +Clazz_defineMethod(c$, "calculateFormalCharges", +function(bs){ +return this.ms.fixFormalCharges(bs == null ? this.bsA() : bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "setModulation", +function(bs, isOn, t1, isQ){ +if (isQ) this.g.setO("_modt", JU.Escape.eP(t1)); +this.ms.setModulation(bs == null ? this.getAllAtoms() : bs, isOn, t1, isQ); +this.refreshMeasures(true); +}, "JU.BS,~B,JU.P3,~B"); +Clazz_defineMethod(c$, "checkInMotion", +function(state){ +switch (state) { +case 0: +this.setTimeout("_SET_IN_MOTION_", 0, null); +break; +case 1: +if (!this.inMotion) this.setTimeout("_SET_IN_MOTION_", this.g.hoverDelayMs * 2, "!setInMotion"); +break; +case 2: +this.setInMotion(true); +this.refresh(3, "timeoutThread set in motion"); +break; +} +}, "~N"); +Clazz_defineMethod(c$, "checkMotionRendering", +function(tok){ +if (!this.getInMotion(true) && !this.tm.spinOn && !this.tm.vibrationOn && !this.am.animationOn) return true; +if (this.g.wireframeRotation) return false; +var n = 0; +switch (tok) { +case 1677721602: +case 1153433601: +n = 2; +break; +case 1112150020: +n = 3; +break; +case 1112150021: +n = 4; +break; +case 1112152066: +n = 5; +break; +case 1073742018: +n = 6; +break; +case 603979967: +n = 7; +break; +case 603979786: +n = 8; +break; +} +return this.g.platformSpeed >= n; +}, "~N"); +Clazz_defineMethod(c$, "openExportChannel", +function(privateKey, fileName, asWriter){ +return this.getOutputManager().openOutputChannel(privateKey, fileName, asWriter, false); +}, "~N,~S,~B"); +Clazz_overrideMethod(c$, "log", +function(data){ +if (data != null) this.getOutputManager().logToFile(data); +}, "~S"); +Clazz_defineMethod(c$, "getLogFileName", +function(){ +return (this.logFileName == null ? "" : this.logFileName); +}); +Clazz_defineMethod(c$, "getCommands", +function(htDefine, htMore, select){ +return this.getStateCreator().getCommands(htDefine, htMore, select); +}, "java.util.Map,java.util.Map,~S"); +Clazz_defineMethod(c$, "allowCapture", +function(){ +return !this.isApplet || this.isSignedApplet; +}); +Clazz_defineMethod(c$, "compileExpr", +function(expr){ +var o = (this.getScriptManager() == null ? null : this.eval.evaluateExpression(expr, false, true)); +return (Clazz_instanceOf(o,Array) ? o : Clazz_newArray(-1, [JS.T.o(4, expr)])); +}, "~S"); +Clazz_defineMethod(c$, "checkSelect", +function(h, value){ +return this.getScriptManager() != null && this.eval.checkSelect(h, value); +}, "java.util.Map,~A"); +Clazz_defineMethod(c$, "getAnnotationInfo", +function(d, match, type){ +return this.getAnnotationParser(type == 1111490587).getAnnotationInfo(this, d, match, type, this.am.cmi); +}, "JS.SV,~S,~N"); +Clazz_defineMethod(c$, "getAtomValidation", +function(type, atom){ +return this.getAnnotationParser(false).getAtomValidation(this, type, atom); +}, "~S,JM.Atom"); +Clazz_defineMethod(c$, "dragMinimizeAtom", +function(iAtom){ +this.stopMinimization(); +var flags = 0; +var sym = this.getOperativeSymmetry(); +if (sym != null) { +flags = 256; +}var bs = (flags != 0 ? null : (this.getMotionFixedAtoms(sym, null).isEmpty() ? this.ms.getAtoms((this.ms.isAtomPDB(iAtom) ? 1086324742 : 1094713360), JU.BSUtil.newAndSetBit(iAtom)) : JU.BSUtil.setAll(this.ms.ac))); +try { +this.minimize(this.eval, 2147483647, 0, bs, null, null, 0, flags); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (!this.async) return; +var me = this; +var r = ((Clazz_isClassDefined("JV.Viewer$1") ? 0 : JV.Viewer.$Viewer$1$ ()), Clazz_innerTypeInstance(JV.Viewer$1, this, Clazz_cloneFinals("me", me, "iAtom", iAtom))); +{ +setTimeout(function(){r.run()}, 100); +}} else { +throw e; +} +} +}, "~N"); +Clazz_defineMethod(c$, "getJBR", +function(){ +return (this.jbr == null ? this.jbr = (J.api.Interface.getInterface("JM.BioResolver", this, "file")).setViewer(this) : this.jbr); +}); +Clazz_defineMethod(c$, "checkMenuUpdate", +function(){ +if (this.jmolpopup != null) this.jmolpopup.jpiUpdateComputedMenus(); +}); +Clazz_defineMethod(c$, "getChimeMessenger", +function(){ +return (this.jcm == null ? this.jcm = (J.api.Interface.getInterface("JV.ChimeMessenger", this, "script")).set(this) : this.jcm); +}); +Clazz_defineMethod(c$, "getModelSetAuxiliaryInfoForAtoms", +function(atomExpression){ +return this.ms.getModelSetAuxiliaryInfo(this.ms.getModelBS(this.getAtomBitSet(atomExpression), false)); +}, "~O"); +Clazz_defineMethod(c$, "getJSJSONParser", +function(){ +return (this.jsonParser == null ? this.jsonParser = J.api.Interface.getInterface("JU.JSJSONParser", this, "script") : this.jsonParser); +}); +Clazz_defineMethod(c$, "parseJSON", +function(str){ +return (str == null ? null : (str = str.trim()).startsWith("{") ? this.parseJSONMap(str) : this.parseJSONArray(str)); +}, "~S"); +Clazz_defineMethod(c$, "parseJSONMap", +function(jsonMap){ +return this.getJSJSONParser().parseMap(jsonMap, true); +}, "~S"); +Clazz_defineMethod(c$, "parseJSONArray", +function(jsonArray){ +return this.getJSJSONParser().parse(jsonArray, true); +}, "~S"); +Clazz_defineMethod(c$, "getSymTemp", +function(){ +return J.api.Interface.getSymmetry(this, "ms"); +}); +Clazz_defineMethod(c$, "getSymStatic", +function(){ +return (JV.Viewer.symStatic == null ? (JV.Viewer.symStatic = J.api.Interface.getSymmetry(this, "ms")) : JV.Viewer.symStatic); +}); +Clazz_defineMethod(c$, "setWindowDimensions", +function(dims){ +this.resizeInnerPanel(Clazz_floatToInt(dims[0]), Clazz_floatToInt(dims[1])); +}, "~A"); +Clazz_defineMethod(c$, "getTriangulator", +function(){ +return (this.triangulator == null ? (this.triangulator = J.api.Interface.getUtil("Triangulator", this, "script")) : this.triangulator); +}); +Clazz_defineMethod(c$, "getCurrentModelAuxInfo", +function(){ +return (this.am.cmi >= 0 ? this.ms.getModelAuxiliaryInfo(this.am.cmi) : null); +}); +Clazz_defineMethod(c$, "startNBO", +function(options){ +var htParams = new java.util.Hashtable(); +htParams.put("service", "nbo"); +htParams.put("action", "showPanel"); +htParams.put("options", options); +this.sm.processService(htParams); +}, "~S"); +Clazz_defineMethod(c$, "startPlugin", +function(plugin){ +if ("nbo".equalsIgnoreCase(plugin)) this.startNBO("all"); +}, "~S"); +Clazz_defineMethod(c$, "connectNBO", +function(type){ +if (this.am.cmi < 0) return; +this.getNBOParser().connectNBO(this.am.cmi, type); +}, "~S"); +Clazz_defineMethod(c$, "getNBOParser", +function(){ +return (this.nboParser == null ? this.nboParser = (J.api.Interface.getInterface("J.adapter.readers.quantum.NBOParser", this, "script")).set(this) : this.nboParser); +}); +Clazz_defineMethod(c$, "getNBOAtomLabel", +function(atom){ +return this.getNBOParser().getNBOAtomLabel(atom); +}, "JM.Atom"); +Clazz_defineMethod(c$, "calculateChirality", +function(bsAtoms){ +if (bsAtoms == null) bsAtoms = this.bsA(); +return this.ms.calculateChiralityForAtoms(bsAtoms, true); +}, "JU.BS"); +Clazz_defineMethod(c$, "getSubstructureSetArray", +function(pattern, bsSelected, flags){ +return this.getSmilesMatcher().getSubstructureSetArray(pattern, this.ms.at, this.ms.ac, bsSelected, null, flags); +}, "~S,JU.BS,~N"); +Clazz_defineMethod(c$, "getSubstructureSetArrayForNodes", +function(pattern, nodes, flags){ +return this.getSmilesMatcher().getSubstructureSetArray(pattern, nodes, nodes.length, null, null, flags); +}, "~S,~A,~N"); +Clazz_defineMethod(c$, "getSmilesAtoms", +function(smiles){ +return this.getSmilesMatcher().getAtoms(smiles); +}, "~S"); +Clazz_defineMethod(c$, "calculateChiralityForSmiles", +function(smiles){ +try { +return J.api.Interface.getSymmetry(this, "ms").calculateCIPChiralityForSmiles(this, smiles); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "getPdbID", +function(){ +return (this.ms.getInfo(this.am.cmi, JV.JC.getBoolName(4)) === Boolean.TRUE ? this.ms.getInfo(this.am.cmi, "pdbID") : null); +}); +Clazz_defineMethod(c$, "getModelInfo", +function(key){ +return this.ms.getInfo(this.am.cmi, key); +}, "~S"); +Clazz_defineMethod(c$, "notifyScriptEditor", +function(msWalltime, data){ +if (this.scriptEditor != null) { +this.scriptEditor.notify(msWalltime, data); +}}, "~N,~A"); +Clazz_defineMethod(c$, "sendConsoleMessage", +function(msg){ +if (this.appConsole != null) this.appConsole.sendConsoleMessage(msg); +}, "~S"); +Clazz_defineMethod(c$, "getModelkitPropertySafely", +function(name){ +return (this.modelkit == null ? null : this.modelkit.getProperty(name)); +}, "~S"); +Clazz_defineMethod(c$, "setModelkitPropertySafely", +function(key, value){ +return (this.modelkit == null ? null : this.modelkit.setProperty(key, value)); +}, "~S,~O"); +Clazz_defineMethod(c$, "isModelKitOption", +function(type, value){ +return this.modelkit != null && this.modelkit.checkOption(type, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "getSymmetryInfo", +function(iatom, xyz, iOp, translation, pt1, pt2, type, desc, scaleFactor, nth, options, opList){ +try { +return this.getSymTemp().getSymmetryInfoAtom(this.ms, iatom, xyz, iOp, translation, pt1, pt2, desc, type, scaleFactor, nth, options, opList); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("Exception in Viewer.getSymmetryInfo: " + e); +if (!JV.Viewer.isJS) e.printStackTrace(); +return null; +} else { +throw e; +} +} +}, "~N,~S,~N,JU.P3,JU.P3,JU.P3,~N,~S,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "getMacro", +function(key){ +if (this.macros == null || this.macros.isEmpty()) { +try { +var s = this.getAsciiFileOrNull(this.g.macroDirectory + "/macros.json"); +this.macros = this.parseJSON(s); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.macros = new java.util.Hashtable(); +} else { +throw e; +} +} +}if (key == null) { +var s = new JU.SB(); +for (var k, $k = this.macros.keySet().iterator (); $k.hasNext()&& ((k = $k.next ()) || true);) { +var a = this.macros.get(k); +s.append(k).append("\t").appendO(a).append("\n"); +} +return s.toString(); +}key = key.toLowerCase(); +return this.macros.containsKey(key) ? (this.macros.get(key)).get("path").toString() : null; +}, "~S"); +Clazz_defineMethod(c$, "getConsoleFontScale", +function(){ +return this.consoleFontScale; +}); +Clazz_defineMethod(c$, "setConsoleFontScale", +function(scale){ +this.consoleFontScale = scale; +}, "~N"); +Clazz_defineMethod(c$, "confirm", +function(msg, msgNo){ +return this.apiPlatform.confirm(msg, msgNo); +}, "~S,~S"); +Clazz_defineMethod(c$, "evalStringGUI", +function(script){ +this.evalStringQuiet(script + "; ## GUI ##"); +}, "~S"); +Clazz_defineMethod(c$, "selectStatus", +function(bs, isGroup, addRemove, isQuiet, reportStatus){ +this.select(bs, isGroup, addRemove, isQuiet); +if (reportStatus) { +this.setStatusSelect(bs); +}}, "JU.BS,~B,~N,~B,~B"); +Clazz_defineMethod(c$, "setStatusSelect", +function(bs){ +this.hasSelected = false; +this.sm.setStatusSelect(bs == null ? this.bsA() : bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "wasmInchiHack", +function(cmd){ +if (JV.Viewer.isJS && (cmd.indexOf("inchi") >= 0 || cmd.indexOf("INCHI") >= 0) || cmd.indexOf("TAUTOMER") >= 0 || cmd.indexOf("tautomer") >= 0) { +this.getInchi(null, null, null); +}return cmd; +}, "~S"); +Clazz_defineMethod(c$, "getInchi", +function(atoms, molData, options){ +try { +var inch = this.apiPlatform.getInChI(); +if (atoms == null && molData == null) { +return ""; +}if ((typeof(molData)=='string')) { +var data = molData; +if (data.startsWith("$") || data.startsWith(":")) { +molData = this.getFileAsString4(data, -1, false, false, true, "script"); +} else if (!data.startsWith("InChI=") && data.indexOf(" ") < 0) { +data = this.setLoadFormat(false, "$" + molData, '$', false); +molData = this.getFileAsString4(data, -1, false, false, true, "script"); +}}return inch.getInchi(this, atoms, molData, options); +} catch (t) { +return ""; +} +}, "JU.BS,~O,~S"); +Clazz_defineMethod(c$, "findSpaceGroup", +function(sym, bsAtoms, xyzList, unitCellParams, origin, oabc, flags){ +var ret = null; +if (bsAtoms == null && xyzList == null || (flags & 2) != 0) bsAtoms = this.getThisModelAtoms(); +if (xyzList == null) { +if (!bsAtoms.isEmpty()) { +var uc = (sym == null ? this.getOperativeSymmetry() : sym); +ret = (uc == null ? null : uc.findSpaceGroup(this, bsAtoms, null, unitCellParams, null, oabc, flags)); +}} else { +ret = this.getSymTemp().findSpaceGroup(this, bsAtoms, xyzList, unitCellParams, origin, oabc, flags); +}return (ret == null && (flags & 1) != 0 ? "" : ret); +}, "J.api.SymmetryInterface,JU.BS,~S,~A,JU.T3,~A,~N"); +Clazz_defineMethod(c$, "restrictToModel", +function(bs, mi){ +if (bs == null) bs = this.bsA(); +var isEmpty = bs.isEmpty(); +if (isEmpty && mi >= 0) return bs; +if (mi == -1) mi = this.am.cmi; +if (mi < 0) { +if (isEmpty) { +return this.getThisModelAtoms(); +}mi = this.ms.at[bs.nextSetBit(0)].getModelIndex(); +}var bsm = this.getModelUndeletedAtomsBitSet(mi); +bsm.and(bs); +return bsm; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getThisModelAtoms", +function(){ +return this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().nextSetBit(0)); +}); +Clazz_defineMethod(c$, "getSymmetryEquivPoints", +function(pt, flags){ +var uc = this.getCurrentUnitCell(); +return (uc == null ? new JU.Lst() : uc.getEquivPoints(null, pt, flags)); +}, "JU.P3,~S"); +Clazz_defineMethod(c$, "getSymmetryEquivPointList", +function(pts, flags){ +var uc = this.getCurrentUnitCell(); +if (uc == null) return new JU.Lst(); +uc.getEquivPointList(pts, 0, flags.toLowerCase(), null); +return pts; +}, "JU.Lst,~S"); +Clazz_defineMethod(c$, "getOperativeSymmetry", +function(){ +var sg = this.getCurrentUnitCell(); +return (sg == null || sg.getSymmetryOperations() == null ? null : sg); +}); +Clazz_defineMethod(c$, "formatText", +function(text0){ +var i; +if ((i = text0.indexOf("@{")) < 0 && (i = text0.indexOf("%{")) < 0) return text0; +var text = text0; +var isEscaped = (text.indexOf("\\") >= 0); +if (isEscaped) { +text = JU.PT.rep(text, "\\%", "\1"); +text = JU.PT.rep(text, "\\@", "\2"); +isEscaped = !text.equals(text0); +}text = JU.PT.rep(text, "%{", "@{"); +var name; +while ((i = text.indexOf("@{")) >= 0) { +i++; +var i0 = i + 1; +var len = text.length; +var nP = 1; +var chFirst = '\u0000'; +var chLast = '\u0000'; +while (nP > 0 && ++i < len) { +var ch = text.charAt(i); +if (chFirst != '\0') { +if (chLast == '\\') { +ch = '\0'; +} else if (ch == chFirst) { +chFirst = '\0'; +}chLast = ch; +continue; +}switch ((ch).charCodeAt(0)) { +case 39: +case 34: +chFirst = ch; +break; +case 123: +nP++; +break; +case 125: +nP--; +break; +} +} +if (i >= len) return text; +name = text.substring(i0, i); +if (name.length == 0) return text; +var v = this.evaluateExpression(name); +if (Clazz_instanceOf(v,"JU.P3")) v = JU.Escape.eP(v); +text = text.substring(0, i0 - 2) + v.toString() + text.substring(i + 1); +} +if (isEscaped) { +text = JU.PT.rep(text, "\2", "@"); +text = JU.PT.rep(text, "\1", "%"); +}return text; +}, "~S"); +Clazz_defineMethod(c$, "getScaleText", +function(units, isAntialiased, min, ret){ +var relativeScale = 1; +var u = JM.Measurement.fixUnits(units.length > 0 ? ((units.startsWith("//") ? units.substring(2) : units).toLowerCase()) : this.g.measureDistanceUnits.equals("vdw") ? "angstroms" : this.g.measureDistanceUnits); +if (JM.Measurement.fromUnits(1, u) == 0) { +u = JM.Measurement.fixUnits(this.g.measureDistanceUnits); +}if (ret == null) return u; +var d = this.tm.modelRadius * this.tm.scaleDefaultPixelsPerAngstrom / this.tm.scalePixelsPerAngstrom / 4; +var af = (isAntialiased ? 2 : 1); +var m = 0; +var p = 0; +var e = 0; +var mp = 0; +min = min * this.imageFontScaling / af * relativeScale * 2; +while (p < min) { +e = JM.Measurement.toUnits(d, u, false); +m = Clazz_doubleToInt(Math.floor(Math.log10(e))); +mp = Math.pow(10, m); +e = JM.Measurement.fromUnits(mp + 0.000001, u); +p = Clazz_floatToInt(e * this.tm.scalePixelsPerAngstrom / af); +if (p < min) { +d *= 10; +}} +var se = (m >= 0 ? " " + Clazz_floatToInt(mp) + " " : " 0." + "000000000".substring(0, -1 - m) + "1 "); +ret[0] = p; +ret[1] = e; +return se + u; +}, "~S,~B,~N,~A"); +Clazz_defineMethod(c$, "setStatusAtomMoved", +function(andCheckMinimize, bs){ +if (andCheckMinimize) this.checkMinimization(); +this.sm.setStatusAtomMoved(bs); +}, "~B,JU.BS"); +Clazz_defineMethod(c$, "getFormulaForAtoms", +function(bs, type, isEmpirical){ +return JU.JmolMolecule.getMolecularFormulaAtoms(this.ms.at, bs, ("CELLFORMULA".equals(type) ? this.ms.getCellWeights(bs) : null), isEmpirical); +}, "JU.BS,~S,~B"); +Clazz_defineMethod(c$, "evalCallback", +function(cmd, params, doWait){ +if (this.getScriptManager() != null) this.scm.evalCallback(cmd, params, doWait); +}, "~S,~A,~B"); +Clazz_defineMethod(c$, "checkConsoleScript", +function(strScript){ +{ +if (strScript.indexOf("JSCONSOLE") == 0) { +this.html5Applet._showInfo(strScript.indexOf("CLOSE")<0); if +(strScript.indexOf("CLEAR") >= 0) +this.html5Applet._clearConsole(); return true; } +}return false; +}, "~S"); +c$.$Viewer$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(JV, "Viewer$1", null, Runnable); +Clazz_overrideMethod(c$, "run", +function(){ +this.f$.me.dragMinimizeAtom(this.f$.iAtom); +}); +/*eoif5*/})(); +}; +/*if2*/;(function(){ +var c$ = Clazz_declareType(JV.Viewer, "ACCESS", Enum); +Clazz_defineEnumConstant(c$, "NONE", 0, []); +Clazz_defineEnumConstant(c$, "READSPT", 1, []); +Clazz_defineEnumConstant(c$, "ALL", 2, []); +/*eoif2*/})(); +{ +{ +self.Jmol && Jmol.extend && Jmol.extend("vwr", +JV.Viewer.prototype); +}}c$.isJS = false; +c$.isSwingJS = false; +c$.appletDocumentBase = ""; +c$.appletCodeBase = ""; +c$.appletIdiomaBase = null; +c$.jsDocumentBase = ""; +c$.jmolObject = null; +c$.strJavaVendor = "Java: " + System.getProperty("java.vendor", "j2s"); +c$.strOSName = System.getProperty("os.name", ""); +c$.strJavaVersion = "Java " + System.getProperty("java.version", ""); +c$.version_date = null; +c$.staticFunctions = new java.util.Hashtable(); +c$.nProcessors = 1; +c$.isHighPrecision = false; +{ +{ +}}c$.symStatic = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 + +})(); + +Clazz._coreLoaded = true; + + + +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejmol.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corejmol.z.js new file mode 100755 index 000000000000..48f20bbaa2d5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejmol.z.js @@ -0,0 +1,2719 @@ +(function(fa,p,Ia,Ja,B,Ka,u,z,C,r,v,D,La,A,I,F,E,K,H,P,L,Q,O,W,U,V,Y,w,Z,ca,$,da,ha,T,ia,R,ea,na,va,wa,xa,oa,ya,za,Aa,Ba,Ca,Da,Ea,pa,qa,Fa,ra,Ga,Ma,c,j,aa,la){Jmol.___JmolDate="$Date: 2024-06-07 15:31:04 +0100 (Fri, 07 Jun 2024) $";Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties";Jmol.___JmolVersion="16.2.17";(function(b){b._Loader.registerPackages("java",["io","lang","lang.reflect","util"]);var a=java.util;b._Loader.ignore("net.sf.j2s.ajax.HttpRequest java.util.MapEntry.Type java.net.UnknownServiceException java.lang.Runtime java.security.AccessController java.security.PrivilegedExceptionAction java.io.File java.io.FileInputStream java.io.FileWriter java.io.OutputStreamWriter java.util.concurrent.Executors".split(" ")); +Math.rint=Math.round;Math.log10||(Math.log10=function(a){return Math.log(a)/2.302585092994046});Math.signum||(Math.signum=function(a){return 0==a||isNaN(a)?a:0>a?-1:1});if(b._supportsNativeObject)for(var d=0;dthis&&0this&&0d?1:0},"Number,Number");c(Integer,"bitCount",function(a){a-=a>>>1&1431655765;a=(a&858993459)+(a>>>2&858993459);a=a+(a>>>4)&252645135;a+=a>>>8;return a+(a>>>16)&63},"Number");Integer.bitCount=Integer.prototype.bitCount;c(Integer,"numberOfLeadingZeros",function(a){if(0==a)return 32;var d=1;0==a>>> +16&&(d+=16,a<<=16);0==a>>>24&&(d+=8,a<<=8);0==a>>>28&&(d+=4,a<<=4);0==a>>>30&&(d+=2,a<<=2);return d-(a>>>31)},"Number");Integer.numberOfLeadingZeros=Integer.prototype.numberOfLeadingZeros;c(Integer,"numberOfTrailingZeros",function(a){if(0==a)return 32;var d=31,g=a<<16;0!=g&&(d-=16,a=g);g=a<<8;0!=g&&(d-=8,a=g);g=a<<4;0!=g&&(d-=4,a=g);g=a<<2;0!=g&&(d-=2,a=g);return d-(a<<1>>>31)},"Number");Integer.numberOfTrailingZeros=Integer.prototype.numberOfTrailingZeros;c(Integer,"parseIntRadix",function(a,d){if(null== +a)throw new NumberFormatException("null");if(2>d)throw new NumberFormatException("radix "+d+" less than Character.MIN_RADIX");if(36=b)&&(0a){var d=a&16777215;return(a>>24&255)._numberToString(16)+(d="000000"+d._numberToString(16)).substring(d.length- +6)}return a._numberToString(16)};Integer.toOctalString=Integer.prototype.toOctalString=function(a){a.valueOf&&(a=a.valueOf());return a._numberToString(8)};Integer.toBinaryString=Integer.prototype.toBinaryString=function(a){a.valueOf&&(a=a.valueOf());return a._numberToString(2)};Integer.decodeRaw=c(Integer,"decodeRaw",function(a){0<=a.indexOf(".")&&(a="");var d=a.startsWith("-")?1:0;a=a.replace(/\#/,"0x").toLowerCase();d=a.startsWith("0x",d)?16:a.startsWith("0",d)?8:10;a=Number(a)&4294967295;return 8== +d?parseInt(a,8):a},"~S");Integer.decode=c(Integer,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a)||aInteger.MAX_VALUE)throw new NumberFormatException("Invalid Integer");return new Integer(a)},"~S");j(Integer,"hashCode",function(){return this.valueOf()});java.lang.Long=Long=function(){r(this,arguments)};da(Long,"Long",Number,Comparable,null,!0);Long.prototype.valueOf=function(){return 0};Long.toString=Long.prototype.toString=function(){return 0!=arguments.length?""+arguments[0]: +this===Long?"class java.lang.Long":""+this.valueOf()};ea(Long,function(a){null==a&&(a=0);a="number"==typeof a?Math.round(a):Integer.parseIntRadix(a,10);this.valueOf=function(){return a}});Long.TYPE=Long.prototype.TYPE=Long;c(Long,"parseLong",function(a,d){return Integer.parseInt(a,d||10)});Long.parseLong=Long.prototype.parseLong;j(Long,"$valueOf",function(a){return new Long(a)});Long.$valueOf=Long.prototype.$valueOf;j(Long,"equals",function(a){return null==a||!z(a,Long)?!1:a.valueOf()==this.valueOf()}, +"Object");Long.toHexString=Long.prototype.toHexString=function(a){return a.toString(16)};Long.toOctalString=Long.prototype.toOctalString=function(a){return a.toString(8)};Long.toBinaryString=Long.prototype.toBinaryString=function(a){return a.toString(2)};Long.decode=c(Long,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a))throw new NumberFormatException("Invalid Long");return new Long(a)},"~S");java.lang.Short=Short=function(){r(this,arguments)};da(Short,"Short",Number,Comparable,null,!0);Short.prototype.valueOf= +function(){return 0};Short.toString=Short.prototype.toString=function(){return 0!=arguments.length?""+arguments[0]:this===Short?"class java.lang.Short":""+this.valueOf()};ea(Short,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Integer.parseIntRadix(a,10));a=a.shortValue();this.valueOf=function(){return a}});Short.MIN_VALUE=Short.prototype.MIN_VALUE=-32768;Short.MAX_VALUE=Short.prototype.MAX_VALUE=32767;Short.TYPE=Short.prototype.TYPE=Short;c(Short,"parseShortRadix",function(a,d){return Integer.parseIntRadix(a, +d).shortValue()},"String, Number");Short.parseShortRadix=Short.prototype.parseShortRadix;c(Short,"parseShort",function(a){return Short.parseShortRadix(a,10)},"String");Short.parseShort=Short.prototype.parseShort;j(Short,"$valueOf",function(a){return new Short(a)});Short.$valueOf=Short.prototype.$valueOf;j(Short,"equals",function(a){return null==a||!z(a,Short)?!1:a.valueOf()==this.valueOf()},"Object");Short.toHexString=Short.prototype.toHexString=function(a){return a.toString(16)};Short.toOctalString= +Short.prototype.toOctalString=function(a){return a.toString(8)};Short.toBinaryString=Short.prototype.toBinaryString=function(a){return a.toString(2)};Short.decode=c(Short,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a)||-32768>a||32767a||127a.indexOf(".")&&(0>a.indexOf("e")&&"NaN"!=a)&&(a+=".0");return a};java.lang.Float=Float=function(){r(this,arguments)};da(Float,"Float",Number,Comparable,null,!0);Float.prototype.valueOf= +function(){return 0};Float.toString=Float.prototype.toString=function(){return 0!=arguments.length?b._floatToString(arguments[0]):this===Float?"class java.lang.Float":b._floatToString(this.valueOf())};b._a32=null;Float.floatToIntBits=function(a){var d=b._a32||(b._a32=new Float32Array(1));d[0]=a;return(new Int32Array(d.buffer))[0]};ea(Float,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Number(a));this.valueOf=function(){return a}});Float.serialVersionUID=Float.prototype.serialVersionUID=-0x2512365d24c31000; +Float.MIN_VALUE=Float.prototype.MIN_VALUE=1.4E-45;Float.MAX_VALUE=Float.prototype.MAX_VALUE=3.4028235E38;Float.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY;Float.POSITIVE_INFINITY=Number.POSITIVE_INFINITY;Float.NaN=Number.NaN;Float.TYPE=Float.prototype.TYPE=Float;c(Float,"parseFloat",function(a){if(null==a)throw new NumberFormatException("null");if("number"==typeof a)return a;var d=Number(a);if(isNaN(d))throw new NumberFormatException("Not a Number : "+a);return d},"String");Float.parseFloat=Float.prototype.parseFloat; +j(Float,"$valueOf",function(a){return new Float(a)});Float.$valueOf=Float.prototype.$valueOf;c(Float,"isNaN",function(a){return isNaN(1==arguments.length?a:this.valueOf())},"Number");Float.isNaN=Float.prototype.isNaN;c(Float,"isInfinite",function(a){return!isFinite(1==arguments.length?a:this.valueOf())},"Number");Float.isInfinite=Float.prototype.isInfinite;j(Float,"equals",function(a){return null==a||!z(a,Float)?!1:a.valueOf()==this.valueOf()},"Object");java.lang.Double=Double=function(){r(this,arguments)}; +da(Double,"Double",Number,Comparable,null,!0);Double.prototype.valueOf=function(){return 0};Double.toString=Double.prototype.toString=function(){return 0!=arguments.length?b._floatToString(arguments[0]):this===Double?"class java.lang.Double":b._floatToString(this.valueOf())};ea(Double,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Double.parseDouble(a));this.valueOf=function(){return a}});Double.serialVersionUID=Double.prototype.serialVersionUID=-0x7f4c3db5d6940400;Double.MIN_VALUE=Double.prototype.MIN_VALUE= +4.9E-324;Double.MAX_VALUE=Double.prototype.MAX_VALUE=1.7976931348623157E308;Double.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY;Double.POSITIVE_INFINITY=Number.POSITIVE_INFINITY;Double.NaN=Number.NaN;Double.TYPE=Double.prototype.TYPE=Double;c(Double,"isNaN",function(a){return isNaN(1==arguments.length?a:this.valueOf())},"Number");Double.isNaN=Double.prototype.isNaN;c(Double,"isInfinite",function(a){return!isFinite(1==arguments.length?a:this.valueOf())},"Number");Double.isInfinite=Double.prototype.isInfinite; +c(Double,"parseDouble",function(a){if(null==a)throw new NumberFormatException("null");if("number"==typeof a)return a;var d=Number(a);if(isNaN(d))throw new NumberFormatException("Not a Number : "+a);return d},"String");Double.parseDouble=Double.prototype.parseDouble;c(Double,"$valueOf",function(a){return new Double(a)},"Number");Double.$valueOf=Double.prototype.$valueOf;j(Double,"equals",function(a){return null==a||!z(a,Double)?!1:a.valueOf()==this.valueOf()},"Object");Boolean=java.lang.Boolean=Boolean|| +function(){r(this,arguments)};if(b._supportsNativeObject)for(d=0;df)g[g.length]=d.charAt(b);else if(192f){f&=31;b++;var c=d.charCodeAt(b)&63,f=(f<<6)+c;g[g.length]=String.fromCharCode(f)}else if(224<=f){f&=15;b++;c=d.charCodeAt(b)&63;b++;var e=d.charCodeAt(b)&63,f=(f<<12)+(c<<6)+e;g[g.length]=String.fromCharCode(f)}}return g.join("")};a.readUTF8Array=function(d){var g=a.guessEncodingArray(d),b=0;g==a.UTF8? +b=3:g==a.UTF16&&(b=2);for(g=[];bf)g[g.length]=String.fromCharCode(f);else if(192f){var f=f&31,c=d[++b]&63,f=(f<<6)+c;g[g.length]=String.fromCharCode(f)}else if(224<=f){var f=f&15,c=d[++b]&63,e=d[++b]&63,f=(f<<12)+(c<<6)+e;g[g.length]=String.fromCharCode(f)}}return g.join("")};a.convert2UTF8=function(d){var g=this.guessEncoding(d),b=0;if(g==a.UTF8)return d;g==a.UTF16&&(b=2);for(var g=Array(0+d.length-b),f=b;fc)g[0+ +f-b]=d.charAt(f);else if(2047>=c){var e=192+((c&1984)>>6),h=128+(c&63);g[0+f-b]=String.fromCharCode(e)+String.fromCharCode(h)}else e=224+((c&61440)>>12),h=128+((c&4032)>>6),c=128+(c&63),g[0+f-b]=String.fromCharCode(e)+String.fromCharCode(h)+String.fromCharCode(c)}return g.join("")};a.base64Chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");a.encodeBase64=function(d){if(null==d||0==d.length)return d;for(var g=a.base64Chars,b=d.length,f=0,c=[],e,h;f>2],f>4],f>6],c[c.length]=g[e&63]):(c[c.length]=g[h<<2&60],c[c.length]="=")):(c[c.length]=g[e<<4&48],c[c.length]="=",c[c.length]="=");return c.join("")};a.decodeBase64=function(d){if(null==d||0==d.length)return d;var g=a.base64Chars,b=a.xBase64Chars;if(null==a.xBase64Chars){for(var b={},f=0;fN++;)e= +b[d.charAt(f++)],h=b[d.charAt(f++)],j=b[d.charAt(f++)],M=b[d.charAt(f++)],c[c.length]=String.fromCharCode(e<<2&255|h>>4),null!=j&&(c[c.length]=String.fromCharCode(h<<4&255|j>>2),null!=M&&(c[c.length]=String.fromCharCode(j<<6&255|M)));return c.join("")};if(null==String.prototype.$replace){java.lang.String=String;b._setDeclared("String",String);if(b._supportsNativeObject)for(var d=0;dthis.indexOf(a))return""+this;1==a.length?0<="\\$.*+|?^{}()[]".indexOf(a)&&(a="\\"+a):a=a.replace(/([\\\$\.\*\+\|\?\^\{\}\(\)\[\]])/g,function(a,d){return"\\"+d});return this.replace(RegExp(a,"gm"),d)};d.$generateExpFunction= +function(a){var d=[],g=[],b=0;d[0]="";for(var l=0;lb||0>d||d>this.length-l||b>g.length-l)return!1;d=this.substring(d,d+l);g=g.substring(b,b+l);a&&(d=d.toLowerCase(), +g=g.toLowerCase());return d==g};d.$plit=function(a,d){if(!d&&" "==a)return this.split(a);if(null!=d&&0d&&(g[d-1]=l.substring(l.indexOf("@@_@@")+5),g.length=d);return g}g=RegExp(a,"gm");return this.split(g)};d.trim||(d.trim=function(){return this.replace(/^\s+/g,"").replace(/\s+$/g,"")});if(!d.startsWith||!d.endsWith){var g=function(a,d,g){var b= +g,l=0,f=d.length;if(0>g||g>a.length-f)return!1;for(;0<=--f;)if(a.charAt(b++)!=d.charAt(l++))return!1;return!0};d.startsWith=function(a){return 1==arguments.length?g(this,arguments[0],0):2==arguments.length?g(this,arguments[0],arguments[1]):!1};d.endsWith=function(a){return g(this,a,this.length-a.length)}}d.equals=function(a){return this.valueOf()==a};d.equalsIgnoreCase=function(a){return null==a?!1:this==a||this.toLowerCase()==a.toLowerCase()};d.hash=0;d.hashCode=function(){var a=this.hash;if(0== +a){for(var d=0,g=this.length,b=0;b>8,f+=2):g[f]=b,f++;return Q(g)};d.contains=function(a){return 0<=this.indexOf(a)};d.compareTo=function(a){return this>a?1:thisg?1:-1};d.contentEquals=function(a){if(this.length!=a.length())return!1;a=a.getValue();for(var d=0,g=0,b=this.length;0!= +b--;)if(this.charCodeAt(d++)!=a[g++])return!1;return!0};d.getChars=function(a,d,g,b){if(0>a)throw new StringIndexOutOfBoundsException(a);if(d>this.length)throw new StringIndexOutOfBoundsException(d);if(a>d)throw new StringIndexOutOfBoundsException(d-a);if(null==g)throw new NullPointerException;for(var l=0;l=d+this.length?-1:null!=d?this.$lastIndexOf(a,d):this.$lastIndexOf(a)};d.intern=function(){return this.valueOf()};String.copyValueOf=d.copyValueOf=function(){return 1==arguments.length?String.instantialize(arguments[0]):String.instantialize(arguments[0],arguments[1],arguments[2])};d.codePointAt||(d.codePointAt=d.charCodeAt)})(String.prototype);var c=new TextDecoder;String.instantialize=function(){switch(arguments.length){case 0:return new String;case 1:var a=arguments[0];return a.BYTES_PER_ELEMENT? +0==a.length?"":"number"==typeof a[0]?c.decode(a):a.join(""):a instanceof Array?0==a.length?"":"number"==typeof a[0]?c.decode(new Uint8Array(a)):a.join(""):"string"==typeof a||a instanceof String?new String(a):""+a;case 2:var a=arguments[0],d=arguments[1];return"string"==typeof d?String.instantialize(a,0,a.length,d):String.instantialize(a,d,0,a.length);case 3:var a=arguments[0],g=arguments[1],d=arguments[2];arguments[2]instanceof Array&&(a=arguments[2],g=arguments[0],d=arguments[1]);var b=Array(d); +if(0>g||d+g>a.length)throw new IndexOutOfBoundsException;if(0=a},"~N");d.isUpperCase=c(d,"isUpperCase",function(a){a= +a.charCodeAt(0);return 65<=a&&90>=a},"~N");d.isLowerCase=c(d,"isLowerCase",function(a){a=a.charCodeAt(0);return 97<=a&&122>=a},"~N");d.isWhitespace=c(d,"isWhitespace",function(a){a=a.charCodeAt(0);return 28<=a&&32>=a||9<=a&&13>=a||5760==a||8192<=a&&8199!=a&&(8203>=a||8232==a||8233==a||12288==a)},"~N");d.isLetter=c(d,"isLetter",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a},"~N");d.isLetterOrDigit=c(d,"isLetterOrDigit",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>= +a||48<=a&&57>=a},"~N");d.isSpaceChar=c(d,"isSpaceChar",function(a){a=a.charCodeAt(0);return 32==a||160==a||5760==a?!0:8192>a?!1:8203>=a||8232==a||8233==a||8239==a||12288==a},"~N");d.digit=c(d,"digit",function(a,d){var g=a.charCodeAt(0);if(2<=d&&36>=d&&128>g){var b=-1;48<=g&&57>=g?b=g-48:97<=g&&122>=g?b=g-87:65<=g&&90>=g&&(b=g-55);return ba.getTime()},"javautil.Date");c(a.Date,"equals",function(d){return z(d,a.Date)&&this.getTime()==d.getTime()},"Object");c(a.Date,"compareTo",function(a){if(null== +a)return 1;var d=this.getTime();a=a.getTime();return d>32)});d=v(function(){this.source=null;r(this,arguments)},a,"EventObject",null,java.io.Serializable);A(d,function(a){if(null!=a)this.source=a;else throw new IllegalArgumentException;},"~O");c(d,"getSource",function(){return this.source});j(d,"toString",function(){return this.getClass().getName()+"[source="+String.valueOf(this.source)+"]"}); +O(a,"EventListener");d=v(function(){this.listener=null;r(this,arguments)},a,"EventListenerProxy",null,a.EventListener);A(d,function(a){this.listener=a},"javautil.EventListener");c(d,"getListener",function(){return this.listener});O(a,"Iterator");O(a,"ListIterator",a.Iterator);O(a,"Enumeration");O(a,"Collection",Iterable);O(a,"Set",a.Collection);O(a,"Map");O(a.Map,"Entry");O(a,"List",a.Collection);O(a,"Queue",a.Collection);O(a,"RandomAccess");d=v(function(){this.stackTrace=this.cause=this.detailMessage= +null;r(this,arguments)},java.lang,"Throwable",null,java.io.Serializable);P(d,function(){this.cause=this});A(d,function(){this.fillInStackTrace()});A(d,function(a,d){this.fillInStackTrace();!d&&"object"==typeof a&&(d=a,a=d.toString());d&&(this.cause=d);this.detailMessage=a},"~S,Throwable");c(d,"getMessage",function(){return this.message||this.detailMessage||this.toString()});c(d,"getLocalizedMessage",function(){return this.getMessage()});c(d,"getCause",function(){return this.cause===this?null:this.cause}); +c(d,"initCause",function(a){if(this.cause!==this)throw new IllegalStateException("Can't overwrite cause");if(a===this)throw new IllegalArgumentException("Self-causation not permitted");this.cause=a;return this},"Throwable");j(d,"toString",function(){var a=this.getClass().getName(),d=this.message||this.detailMessage;return d?a+": "+d:a});c(d,"printStackTrace",function(){System.err.println(this.getStackTrace?this.getStackTrace():this.message+" "+ra())});c(d,"getStackTrace",function(){for(var a=""+this+ +"\n",d=0;dwa(g.nativeClazz,Throwable))a+=g+"\n"}return a});c(d,"printStackTrace",function(){this.printStackTrace()},"java.io.PrintStream");c(d,"printStackTrace",function(){this.printStackTrace()},"java.io.PrintWriter");c(d,"fillInStackTrace",function(){this.stackTrace=[];for(var a=arguments.callee.caller,d=null,g=[],c=b._callingStackTraces.length- +1,k=!0;-1c)break;k=!0;d=b._callingStackTraces[c].caller;m=b._callingStackTraces[c].owner;c--}else d=a,null!=d.claxxOwner?m=d.claxxOwner:null!=d.exClazz&&(m=d.exClazz);a=new StackTraceElement(null!=m&&0!=m.__CLASS_NAME__.length?m.__CLASS_NAME__:"anonymous",(null==d.exName?"anonymous":d.exName)+" ("+xa(d.arguments)+")",null,-1);a.nativeClazz=m;this.stackTrace[this.stackTrace.length]=a;for(m=0;m":this.declaringClass});c(d,"getFileName",function(){return this.fileName});c(d,"getLineNumber",function(){return this.lineNumber});c(d,"getMethodName",function(){return null==this.methodName?"":this.methodName});j(d,"hashCode",function(){return null==this.methodName?0:this.methodName.hashCode()^this.declaringClass.hashCode()});c(d,"isNativeMethod",function(){return-2==this.lineNumber}); +j(d,"toString",function(){var a=this.getClassName()+"."+this.getMethodName();if(this.isNativeMethod())a+="(Native Method)";else{var d=this.getFileName();if(null==d)a+="(Unknown Source)";else{var g=this.getLineNumber(),a=a+"("+d;0<=g&&(a+=":",a+=g);a+=")"}}return a});TypeError.prototype.getMessage||(TypeError.prototype.getMessage=function(){return(this.message||this.toString())+(this.getStackTrace?this.getStackTrace():ra())});Clazz_Error=Error;Clazz_declareTypeError=function(a,d,g,b,c){return v(function(){r(this, +arguments);return Clazz_Error()},a,d,g,b,c)};b._Error||(b._Error=Error);v(function(){r(this,arguments);return b._Error()},java.lang,"Error",Throwable);d=H(java.lang,"LinkageError",Error);d=H(java.lang,"IncompatibleClassChangeError",LinkageError);d=H(java.lang,"AbstractMethodError",IncompatibleClassChangeError);d=H(java.lang,"AssertionError",Error);A(d,function(a){L(this,AssertionError,[""+a,z(a,Throwable)?a:null])},"~O");d=H(java.lang,"ClassCircularityError",LinkageError);d=H(java.lang,"ClassFormatError", +LinkageError);d=v(function(){this.exception=null;r(this,arguments)},java.lang,"ExceptionInInitializerError",LinkageError);A(d,function(){L(this,ExceptionInInitializerError);this.initCause(null)});A(d,function(a){L(this,ExceptionInInitializerError,[a]);this.initCause(null)},"~S");A(d,function(a){L(this,ExceptionInInitializerError);this.exception=a;this.initCause(a)},"Throwable");c(d,"getException",function(){return this.exception});j(d,"getCause",function(){return this.exception});d=H(java.lang,"IllegalAccessError", +IncompatibleClassChangeError);d=H(java.lang,"InstantiationError",IncompatibleClassChangeError);d=H(java.lang,"VirtualMachineError",Error);d=H(java.lang,"InternalError",VirtualMachineError);d=H(java.lang,"NoClassDefFoundError",LinkageError);d=H(java.lang,"NoSuchFieldError",IncompatibleClassChangeError);d=H(java.lang,"NoSuchMethodError",IncompatibleClassChangeError);d=H(java.lang,"OutOfMemoryError",VirtualMachineError);d=H(java.lang,"StackOverflowError",VirtualMachineError);d=H(java.lang,"UnknownError", +VirtualMachineError);d=H(java.lang,"UnsatisfiedLinkError",LinkageError);d=H(java.lang,"UnsupportedClassVersionError",ClassFormatError);d=H(java.lang,"VerifyError",LinkageError);d=H(java.lang,"ThreadDeath",Error);A(d,function(){L(this,ThreadDeath,[])});d=H(java.lang,"Exception",Throwable);d=H(java.lang,"RuntimeException",Exception);d=H(java.lang,"ArithmeticException",RuntimeException);d=H(java.lang,"IndexOutOfBoundsException",RuntimeException);d=H(java.lang,"ArrayIndexOutOfBoundsException",IndexOutOfBoundsException); +A(d,function(a){L(this,ArrayIndexOutOfBoundsException,["Array index out of range: "+a])},"~N");d=H(java.lang,"ArrayStoreException",RuntimeException);d=H(java.lang,"ClassCastException",RuntimeException);d=v(function(){this.ex=null;r(this,arguments)},java.lang,"ClassNotFoundException",Exception);A(d,function(){L(this,ClassNotFoundException,[Z("Throwable")])});A(d,function(a){L(this,ClassNotFoundException,[a,null])},"~S");A(d,function(a,d){L(this,ClassNotFoundException,[a]);this.ex=d},"~S,Throwable"); +c(d,"getException",function(){return this.ex});j(d,"getCause",function(){return this.ex});d=H(java.lang,"CloneNotSupportedException",Exception);d=H(java.lang,"IllegalAccessException",Exception);d=H(java.lang,"IllegalArgumentException",RuntimeException);A(d,function(a){L(this,IllegalArgumentException,[null==a?null:a.toString(),a])},"Throwable");d=H(java.lang,"IllegalMonitorStateException",RuntimeException);d=H(java.lang,"IllegalStateException",RuntimeException);A(d,function(a){L(this,IllegalStateException, +[null==a?null:a.toString(),a])},"Throwable");d=H(java.lang,"IllegalThreadStateException",IllegalArgumentException);d=H(java.lang,"InstantiationException",Exception);d=H(java.lang,"InterruptedException",Exception);d=H(java.lang,"NegativeArraySizeException",RuntimeException);d=H(java.lang,"NoSuchFieldException",Exception);d=H(java.lang,"NoSuchMethodException",Exception);d=H(java.lang,"NullPointerException",RuntimeException);d=H(java.lang,"NumberFormatException",IllegalArgumentException);d=H(java.lang, +"SecurityException",RuntimeException);A(d,function(a){L(this,SecurityException,[null==a?null:a.toString(),a])},"Throwable");d=H(java.lang,"StringIndexOutOfBoundsException",IndexOutOfBoundsException);A(d,function(a){L(this,StringIndexOutOfBoundsException,["String index out of range: "+a])},"~N");d=H(java.lang,"UnsupportedOperationException",RuntimeException);A(d,function(){L(this,UnsupportedOperationException,[])});A(d,function(a){L(this,UnsupportedOperationException,[null==a?null:a.toString(),a])}, +"Throwable");d=v(function(){this.target=null;r(this,arguments)},java.lang.reflect,"InvocationTargetException",Exception);A(d,function(){L(this,java.lang.reflect.InvocationTargetException,[Z("Throwable")])});A(d,function(a){L(this,java.lang.reflect.InvocationTargetException,[null,a]);this.target=a},"Throwable");A(d,function(a,d){L(this,java.lang.reflect.InvocationTargetException,[d,a]);this.target=a},"Throwable,~S");c(d,"getTargetException",function(){return this.target});j(d,"getCause",function(){return this.target}); +d=v(function(){this.undeclaredThrowable=null;r(this,arguments)},java.lang.reflect,"UndeclaredThrowableException",RuntimeException);A(d,function(a){L(this,java.lang.reflect.UndeclaredThrowableException);this.undeclaredThrowable=a;this.initCause(a)},"Throwable");A(d,function(a,d){L(this,java.lang.reflect.UndeclaredThrowableException,[d]);this.undeclaredThrowable=a;this.initCause(a)},"Throwable,~S");c(d,"getUndeclaredThrowable",function(){return this.undeclaredThrowable});j(d,"getCause",function(){return this.undeclaredThrowable}); +d=H(java.io,"IOException",Exception);d=H(java.io,"CharConversionException",java.io.IOException);d=H(java.io,"EOFException",java.io.IOException);d=H(java.io,"FileNotFoundException",java.io.IOException);d=v(function(){this.bytesTransferred=0;r(this,arguments)},java.io,"InterruptedIOException",java.io.IOException);d=H(java.io,"SyncFailedException",java.io.IOException);d=H(java.io,"UnsupportedEncodingException",java.io.IOException);d=H(java.io,"UTFDataFormatException",java.io.IOException);c(d,"getMessage", +function(){var a=$(this,java.io.WriteAbortedException,"getMessage",[]);return this.detail?a+"; "+this.detail.toString():a});j(d,"getCause",function(){return this.detail});d=H(a,"ConcurrentModificationException",RuntimeException);A(d,function(){L(this,a.ConcurrentModificationException,[])});d=H(a,"EmptyStackException",RuntimeException);d=v(function(){this.key=this.className=null;r(this,arguments)},a,"MissingResourceException",RuntimeException);A(d,function(d,g,b){L(this,a.MissingResourceException, +[d]);this.className=g;this.key=b},"~S,~S,~S");c(d,"getClassName",function(){return this.className});c(d,"getKey",function(){return this.key});d=H(a,"NoSuchElementException",RuntimeException);d=H(a,"TooManyListenersException",Exception);d=H(java.lang,"Void");d.TYPE=d;O(java.lang.reflect,"GenericDeclaration");O(java.lang.reflect,"AnnotatedElement");d=H(java.lang.reflect,"AccessibleObject",null,java.lang.reflect.AnnotatedElement);A(d,function(){});c(d,"isAccessible",function(){return!1});d.setAccessible= +c(d,"setAccessible",function(){},"~A,~B");c(d,"setAccessible",function(){},"~B");j(d,"isAnnotationPresent",function(){return!1},"Class");j(d,"getDeclaredAnnotations",function(){return[]});j(d,"getAnnotations",function(){return[]});j(d,"getAnnotation",function(){return null},"Class");d.marshallArguments=c(d,"marshallArguments",function(){return null},"~A,~A");c(d,"invokeV",function(){},"~O,~A");c(d,"invokeL",function(){return null},"~O,~A");c(d,"invokeI",function(){return 0},"~O,~A");c(d,"invokeJ", +function(){return 0},"~O,~A");c(d,"invokeF",function(){return 0},"~O,~A");c(d,"invokeD",function(){return 0},"~O,~A");d.emptyArgs=d.prototype.emptyArgs=[];O(java.lang.reflect,"InvocationHandler");d=O(java.lang.reflect,"Member");d=H(java.lang.reflect,"Modifier");A(d,function(){});d.isAbstract=c(d,"isAbstract",function(a){return 0!=(a&1024)},"~N");d.isFinal=c(d,"isFinal",function(a){return 0!=(a&16)},"~N");d.isInterface=c(d,"isInterface",function(a){return 0!=(a&512)},"~N");d.isNative=c(d,"isNative", +function(a){return 0!=(a&256)},"~N");d.isPrivate=c(d,"isPrivate",function(a){return 0!=(a&2)},"~N");d.isProtected=c(d,"isProtected",function(a){return 0!=(a&4)},"~N");d.isPublic=c(d,"isPublic",function(a){return 0!=(a&1)},"~N");d.isStatic=c(d,"isStatic",function(a){return 0!=(a&8)},"~N");d.isStrict=c(d,"isStrict",function(a){return 0!=(a&2048)},"~N");d.isSynchronized=c(d,"isSynchronized",function(a){return 0!=(a&32)},"~N");d.isTransient=c(d,"isTransient",function(a){return 0!=(a&128)},"~N");d.isVolatile= +c(d,"isVolatile",function(a){return 0!=(a&64)},"~N");d.toString=c(d,"toString",function(a){var d=[];java.lang.reflect.Modifier.isPublic(a)&&(d[d.length]="public");java.lang.reflect.Modifier.isProtected(a)&&(d[d.length]="protected");java.lang.reflect.Modifier.isPrivate(a)&&(d[d.length]="private");java.lang.reflect.Modifier.isAbstract(a)&&(d[d.length]="abstract");java.lang.reflect.Modifier.isStatic(a)&&(d[d.length]="static");java.lang.reflect.Modifier.isFinal(a)&&(d[d.length]="final");java.lang.reflect.Modifier.isTransient(a)&& +(d[d.length]="transient");java.lang.reflect.Modifier.isVolatile(a)&&(d[d.length]="volatile");java.lang.reflect.Modifier.isSynchronized(a)&&(d[d.length]="synchronized");java.lang.reflect.Modifier.isNative(a)&&(d[d.length]="native");java.lang.reflect.Modifier.isStrict(a)&&(d[d.length]="strictfp");java.lang.reflect.Modifier.isInterface(a)&&(d[d.length]="interface");return 0a)throw new IllegalArgumentException;this.priority=a},"~N");c(b,"getPriority",function(){return this.priority});c(b,"setName", +function(a){this.name=a},"~S");c(b,"getName",function(){return String.valueOf(this.name)});c(b,"getThreadGroup",function(){return this.group});j(b,"toString",function(){var a=this.getThreadGroup();return null!=a?"Thread["+this.getName()+","+this.getPriority()+","+a.getName()+"]":"Thread["+this.getName()+","+this.getPriority()+",]"});b.J2S_THREAD=null});p=v(function(){this.name=this.parent=null;this.maxPriority=0;r(this,arguments)},java.lang,"ThreadGroup",null);A(p,function(){this.name="system";this.maxPriority= +10});A(p,function(b){this.construct(Thread.currentThread().getThreadGroup(),b)},"~S");A(p,function(b,a){if(null==b)throw new NullPointerException;this.name=a;this.parent=b;this.maxPriority=10},"ThreadGroup,~S");c(p,"getName",function(){return this.name});c(p,"getParent",function(){return this.parent});c(p,"getMaxPriority",function(){return this.maxPriority});C(["java.io.FilterInputStream"],"java.io.BufferedInputStream",null,function(){var b=v(function(){this.buf=null;this.pos=this.count=0;this.markpos= +-1;this.marklimit=0;r(this,arguments)},java.io,"BufferedInputStream",java.io.FilterInputStream);A(b,function(a){L(this,java.io.BufferedInputStream,[a]);this.buf=Q(8192,0)},"java.io.InputStream");c(b,"getInIfOpen",function(){var a=this.$in;if(null==a)throw new java.io.IOException("Stream closed");return a});c(b,"getBufIfOpen",function(){var a=this.buf;if(null==a)throw new java.io.IOException("Stream closed");return a});j(b,"resetStream",function(){});c(b,"fill",function(){var a=this.getBufIfOpen(); +if(0>this.markpos)this.pos=0;else if(this.pos>=a.length)if(0=this.marklimit?(this.markpos=-1,this.pos=0):(d=2*this.pos,d>this.marklimit&&(d=this.marklimit),d=Q(d,0),System.arraycopy(a,0,d,0,this.pos),a=this.buf=d);this.count=this.pos;a=this.isRead(a,this.pos,a.length-this.pos);0=this.count&&(this.fill(), +this.pos>=this.count)?-1:this.getBufIfOpen()[this.pos++]&255});c(b,"read1",function(a,d,g){var b=this.count-this.pos;if(0>=b){if(g>=this.getBufIfOpen().length&&0>this.markpos)return this.isRead(a,d,g);this.fill();b=this.count-this.pos;if(0>=b)return-1}g=b(d|g|d+g|a.length-(d+g)))throw new IndexOutOfBoundsException;if(0==g)return 0;for(var b=0;;){var c=this.read1(a,d+b,g-b);if(0>=c)return 0==b?c:b;b+=c;if(b>=g)return b;c=this.$in;if(null!=c&&0>=c.available())return b}},"~A,~N,~N");j(b,"skip",function(a){this.getBufIfOpen();if(0>=a)return 0;var d=this.count-this.pos;if(0>=d){if(0>this.markpos)return this.getInIfOpen().skip(a);this.fill();d=this.count-this.pos;if(0>=d)return 0}a= +d2147483647-d?2147483647:a+d});j(b,"mark",function(a){this.marklimit=a;this.markpos=this.pos},"~N");j(b,"reset",function(){this.getBufIfOpen();if(0>this.markpos)throw new java.io.IOException("Resetting to invalid mark");this.pos=this.markpos});j(b,"markSupported",function(){return!0});j(b,"close",function(){var a=this.$in;this.$in=null;null!=a&&a.close()})});C(["java.io.Reader"], +"java.io.BufferedReader",null,function(){var b=v(function(){this.cb=this.$in=null;this.nextChar=this.nChars=0;this.markedChar=-1;this.readAheadLimit=0;this.markedSkipLF=this.skipLF=!1;r(this,arguments)},java.io,"BufferedReader",java.io.Reader);A(b,function(a){L(this,java.io.BufferedReader,[a]);this.$in=a;this.setSize(8192)},"java.io.Reader");c(b,"setSize",function(a){if(0>=a)throw new IllegalArgumentException("Buffer size <= 0");this.cb=T(a,"\x00");this.nextChar=this.nChars=0},"~N");c(b,"ensureOpen", +function(){if(null==this.$in)throw new java.io.IOException("Stream closed");});c(b,"fill",function(){var a;if(-1>=this.markedChar)a=0;else{var d=this.nextChar-this.markedChar;d>=this.readAheadLimit?(this.markedChar=-2,a=this.readAheadLimit=0):(this.readAheadLimit<=this.cb.length?System.arraycopy(this.cb,this.markedChar,this.cb,0,d):(a=T(this.readAheadLimit,"\x00"),System.arraycopy(this.cb,this.markedChar,a,0,d),this.cb=a),this.markedChar=0,this.nextChar=this.nChars=a=d)}do d=this.$in.read(this.cb, +a,this.cb.length-a);while(0==d);0=this.nChars){if(g>=this.cb.length&&-1>=this.markedChar&&!this.skipLF)return this.$in.read(a,d,g);this.fill()}if(this.nextChar>=this.nChars||this.skipLF&&(this.skipLF=!1,"\n"==this.cb[this.nextChar]&&(this.nextChar++,this.nextChar>=this.nChars&&this.fill(),this.nextChar>=this.nChars)))return-1;g=Math.min(g,this.nChars-this.nextChar);System.arraycopy(this.cb,this.nextChar,a,d,g);this.nextChar+= +g;return g},"~A,~N,~N");c(b,"read",function(a,d,g){this.ensureOpen();if(0>d||d>a.length||0>g||d+g>a.length||0>d+g)throw new IndexOutOfBoundsException;if(0==g)return 0;var b=this.read1(a,d,g);if(0>=b)return b;for(;b=c)break;b+=c}return b},"~A,~N,~N");c(b,"readLine1",function(a){var d=null,g;this.ensureOpen();for(a=a||this.skipLF;;){this.nextChar>=this.nChars&&this.fill();if(this.nextChar>=this.nChars)return null!=d&&0a)throw new IllegalArgumentException("skip value is negative"); +this.ensureOpen();for(var d=a;0=this.nChars&&this.fill();if(this.nextChar>=this.nChars)break;this.skipLF&&(this.skipLF=!1,"\n"==this.cb[this.nextChar]&&this.nextChar++);var g=this.nChars-this.nextChar;if(d<=g){this.nextChar+=d;d=0;break}d-=g;this.nextChar=this.nChars}return a-d},"~N");c(b,"ready",function(){this.ensureOpen();this.skipLF&&(this.nextChar>=this.nChars&&this.$in.ready()&&this.fill(),this.nextChara)throw new IllegalArgumentException("Read-ahead limit < 0");this.ensureOpen();this.readAheadLimit=a;this.markedChar=this.nextChar;this.markedSkipLF=this.skipLF},"~N");j(b,"reset",function(){this.ensureOpen();if(0>this.markedChar)throw new java.io.IOException(-2==this.markedChar?"Mark invalid":"Stream not marked");this.nextChar=this.markedChar;this.skipLF=this.markedSkipLF}); +c(b,"close",function(){null!=this.$in&&(this.$in.close(),this.cb=this.$in=null)})});C(["java.io.Writer"],"java.io.BufferedWriter",null,function(){var b=v(function(){this.buf=this.out=null;this.pos=0;this.lineSeparator="\r\n";r(this,arguments)},java.io,"BufferedWriter",java.io.Writer);A(b,function(a){L(this,java.io.BufferedWriter,[a]);this.out=a;this.buf=T(8192,"\x00")},"java.io.Writer");A(b,function(a,d){L(this,java.io.BufferedWriter,[a]);if(0d||d>a.length-g||0>g)throw new IndexOutOfBoundsException; +if(0==this.pos&&g>=this.buf.length)this.out.write(a,d,g);else{var b=this.buf.length-this.pos;gb&&(d+=b,b=g-b,b>=this.buf.length?this.out.write(a,d,b):(System.arraycopy(a,d,this.buf,this.pos,b),this.pos+=b)))}},"~A,~N,~N");c(b,"write",function(a){if(this.isOpen())this.pos>=this.buf.length&&(this.out.write(this.buf,0,this.buf.length),this.pos=0), +this.buf[this.pos++]=String.fromCharCode(a);else throw new java.io.IOException("K005d");},"~N");c(b,"write",function(a,d,g){if(!this.isOpen())throw new java.io.IOException("K005d");if(!(0>=g)){if(d>a.length-g||0>d)throw new StringIndexOutOfBoundsException;if(0==this.pos&&g>=this.buf.length){var b=T(g,"\x00");a.getChars(d,d+g,b,0);this.out.write(b,0,g)}else{var c=this.buf.length-this.pos;gc&&(d+=c,c=g-c,c>=this.buf.length?(b=T(g,"\x00"),a.getChars(d,d+c,b,0),this.out.write(b,0,c)):(a.getChars(d,d+c,this.buf,this.pos),this.pos+=c)))}}},"~S,~N,~N")});C(["java.io.InputStream"],"java.io.ByteArrayInputStream",null,function(){var b=v(function(){this.buf=null;this.count=this.$mark=this.pos=0;r(this,arguments)},java.io,"ByteArrayInputStream",java.io.InputStream);A(b,function(a){L(this,java.io.ByteArrayInputStream,[]);this.buf=a;this.pos=0;this.count=a.length}, +"~A");j(b,"readByteAsInt",function(){return this.posd||0>g||g>a.length-d)throw new IndexOutOfBoundsException;if(this.pos>=this.count)return-1;var b=this.count-this.pos;g>b&&(g=b);if(0>=g)return 0;System.arraycopy(this.buf,this.pos,a,d,g);this.pos+=g;return g},"~A,~N,~N");j(b,"skip",function(a){var d=this.count-this.pos; +aa?0:a);this.pos+=d;return d},"~N");j(b,"available",function(){return this.count-this.pos});j(b,"markSupported",function(){return!0});j(b,"mark",function(){this.$mark=this.pos},"~N");j(b,"resetStream",function(){});j(b,"reset",function(){this.pos=this.$mark});j(b,"close",function(){})});C(["java.io.OutputStream"],"java.io.ByteArrayOutputStream",null,function(){var b=v(function(){this.buf=null;this.count=0;r(this,arguments)},java.io,"ByteArrayOutputStream",java.io.OutputStream);A(b,function(){this.construct(32)}); +A(b,function(a){L(this,java.io.ByteArrayOutputStream,[]);if(0>a)throw new IllegalArgumentException("Negative initial size: "+a);this.buf=Q(a,0)},"~N");c(b,"ensureCapacity",function(a){0d-a&&(d=a);if(0>d){if(0>a)throw new OutOfMemoryError;d=a}this.buf=java.io.ByteArrayOutputStream.arrayCopyByte(this.buf,d)},"~N");b.arrayCopyByte=c(b,"arrayCopyByte",function(a,d){var g=Q(d,0);System.arraycopy(a,0,g,0,a.length< +d?a.length:d);return g},"~A,~N");j(b,"writeByteAsInt",function(a){this.ensureCapacity(this.count+1);this.buf[this.count]=a;this.count+=1},"~N");c(b,"write",function(a,d,g){if(0>d||d>a.length||0>g||0d||0>g||g>a.length-d)throw new IndexOutOfBoundsException;if(0==g)return 0;var b=this.readByteAsInt();if(-1==b)return-1;a[d]=b;var c=1;try{for(;c=a)return 0;for(;0g)break;d-=g}return a-d},"~N");c(b,"available",function(){return 0});j(b,"close",function(){});c(b,"mark",function(){},"~N");c(b,"reset",function(){throw new java.io.IOException("mark/reset not supported");});c(b,"markSupported",function(){return!1});c(b,"resetStream",function(){});b.skipBuffer=null});C(["java.io.Reader"],"java.io.InputStreamReader",null,function(){var b=v(function(){this.$in= +null;this.isOpen=!0;this.charsetName=null;this.isUTF8=!1;this.bytearr=null;this.pos=0;r(this,arguments)},java.io,"InputStreamReader",java.io.Reader);A(b,function(a,d){L(this,java.io.InputStreamReader,[a]);this.$in=a;this.charsetName=d;if(!(this.isUTF8="UTF-8".equals(d))&&!"ISO-8859-1".equals(d))throw new NullPointerException("charsetName");},"java.io.InputStream,~S");c(b,"getEncoding",function(){return this.charsetName});j(b,"read",function(a,d,g){if(null==this.bytearr||this.bytearr.lengthk)return-1;for(var x=k;e>4){case 12:case 13:if(e+1>=k){if(1<=m){x=e;continue}}else if(128==((b=this.bytearr[e+1])&192)){a[h++]=String.fromCharCode((g&31)<<6|b&63);e+=2;continue}this.isUTF8=!1;break;case 14:if(e+2>=k){if(2<=m){x=e;continue}}else if(128==((b=this.bytearr[e+1])&192)&&128==((c=this.bytearr[e+2])&192)){a[h++]=String.fromCharCode((g&15)<< +12|(b&63)<<6|c&63);e+=3;continue}this.isUTF8=!1}e++;a[h++]=String.fromCharCode(g)}this.pos=k-e;for(a=0;ad||d>a.length||0>g||d+g>a.length||0>d+g)throw new IndexOutOfBoundsException;if(0!=g)for(var b=0;b +a)throw new IllegalArgumentException("skip value is negative");var d=Math.min(a,8192);if(null==this.skipBuffer||this.skipBuffer.lengthd||d>a.length||0>g||d+g>a.length||0>d+g)throw new IndexOutOfBoundsException; +if(0==g)return 0;if(this.next>=this.length)return-1;g=Math.min(this.length-this.next,g);this.str.getChars(this.next,this.next+g,a,d);this.next+=g;return g},"~A,~N,~N");j(b,"skip",function(a){this.ensureOpen();if(this.next>=this.length)return 0;a=Math.min(this.length-this.next,a);a=Math.max(-this.next,a);this.next+=a;return a},"~N");j(b,"ready",function(){this.ensureOpen();return!0});j(b,"markSupported",function(){return!0});j(b,"mark",function(a){if(0>a)throw new IllegalArgumentException("Read-ahead limit < 0"); +this.ensureOpen();this.$mark=this.next},"~N");j(b,"reset",function(){this.ensureOpen();this.next=this.$mark});j(b,"close",function(){this.str=null})});C(["java.io.Closeable","$.Flushable","java.lang.Appendable"],"java.io.Writer",null,function(){var b=v(function(){this.lock=null;r(this,arguments)},java.io,"Writer",null,[Appendable,java.io.Closeable,java.io.Flushable]);A(b,function(){this.lock=this});A(b,function(a){if(null!=a)this.lock=a;else throw new NullPointerException;},"~O");c(b,"write",function(a){this.write(a, +0,a.length)},"~A");c(b,"write",function(a){var d=T(1,"\x00");d[0]=String.fromCharCode(a);this.write(d)},"~N");c(b,"write",function(a){var d=T(a.length,"\x00");a.getChars(0,d.length,d,0);this.write(d)},"~S");c(b,"write",function(a,d,g){if(0<=g){var b=T(g,"\x00");a.getChars(d,d+g,b,0);this.write(b)}else throw new StringIndexOutOfBoundsException;},"~S,~N,~N");c(b,"append",function(a){this.write(a.charCodeAt(0));return this},"~S");c(b,"append",function(a){null==a?this.write("null"):this.write(a.toString()); +return this},"CharSequence");c(b,"append",function(a,d,g){null==a?this.write("null".substring(d,g)):this.write(a.subSequence(d,g).toString());return this},"CharSequence,~N,~N")});u("java.net");C(["java.io.IOException"],"java.net.MalformedURLException",null,function(){var b=H(java.net,"MalformedURLException",java.io.IOException);A(b,function(){L(this,java.net.MalformedURLException,[])})});u("java.net");C(["java.io.IOException"],"java.net.UnknownServiceException",null,function(){var b=H(java.net,"UnknownServiceException", +java.io.IOException);A(b,function(){L(this,java.net.UnknownServiceException,[])})});u("java.net");C(["java.util.Hashtable"],"java.net.URL",null,function(){var b=v(function(){this.host=this.protocol=null;this.port=-1;this.handler=this.ref=this.userInfo=this.path=this.authority=this.query=this.file=null;this.$hashCode=-1;r(this,arguments)},java.net,"URL",null);A(b,function(a,d,g){switch(arguments.length){case 1:d=a;a=g=null;break;case 2:g=null;break;case 3:if(null==a||z(a,java.net.URL))break;default:alert("java.net.URL constructor format not supported")}a&& +a.valueOf&&null==a.valueOf()&&(a=null);var b=d,c,e,h,k=0,m=null,x=!1,j=!1;try{for(e=d.length;0=d.charAt(e-1);)e--;for(;k=d.charAt(k);)k++;d.regionMatches(!0,k,"url:",0,4)&&(k+=4);kd)return!1;var g=a.charAt(0);if(!Character.isLetter(g))return!1;for(var b=1;bs&&(g=s),a=a.substring(0,s))}var G=0;if(!(d<=g-4&&"/"==a.charAt(d)&&"/"==a.charAt(d+ +1)&&"/"==a.charAt(d+2)&&"/"==a.charAt(d+3))&&d<=g-2&&"/"==a.charAt(d)&&"/"==a.charAt(d+1)){d+=2;G=a.indexOf("/",d);0>G&&(G=a.indexOf("?",d),0>G&&(G=g));h=c=a.substring(d,G);s=c.indexOf("@");-1!=s?(e=c.substring(0,s),h=c.substring(s+1)):e=null;if(null!=h){if(0s+1&&(k=Integer.parseInt(h.substring(s+1))),h=h.substring(0,s))}else h="";if(-1>k)throw new IllegalArgumentException("Invalid port number :"+ +k);d=G;0s&&(s=0),m=m.substring(0,s)+"/");null==m&&(m="");if(q){for(;0<=(G=m.indexOf("/./"));)m=m.substring(0,G)+m.substring(G+2);for(G=0;0<=(G=m.indexOf("/../",G));)0>>48-b},"~N");c(p,"nextBoolean",function(){return 0.5>=8},"~A");c(p,"nextDouble",function(){return Math.random()});c(p,"nextFloat",function(){return Math.random()}); +c(p,"nextGaussian",function(){if(this.haveNextNextGaussian)return this.haveNextNextGaussian=!1,this.nextNextGaussian;var b,a,d;do b=2*this.nextDouble()-1,a=2*this.nextDouble()-1,d=b*b+a*a;while(1<=d);d=Math.sqrt(-2*Math.log(d)/d);this.nextNextGaussian=a*d;this.haveNextNextGaussian=!0;return b*d});c(p,"nextInt",function(b){if(0==arguments.length)return 4294967296*Math.random()|0;if(0>=b)throw new IllegalArgumentException;return Math.random()*b|0},"~N");c(p,"nextLong",function(){return(this.next(32)<< +32)+this.next(32)});c(p,"setSeed",function(b){Math.seedrandom(b)},"~N");var ja=[],ga=Math,ka=52,sa=void 0,ta=void 0,Ha=function(b){var a,d,g=this,l=b.length,c=0,e=g.i=g.j=g.m=0;g.S=[];g.c=[];for(l||(b=[l++]);256>c;)g.S[c]=c++;for(c=0;256>c;c++)a=g.S[c],e=e+a+b[c%l]&255,d=g.S[e],g.S[c]=d,g.S[e]=a;g.g=function(a){var d=g.S,b=g.i+1&255,l=d[b],c=g.j+l&255,f=d[c];d[b]=f;d[c]=l;for(var e=d[l+f&255];--a;)b=b+1&255,l=d[b],c=c+l&255,f=d[c],d[b]=f,d[c]=l,e=256*e+d[l+f&255];g.i=b;g.j=c;return e};g.g(256)},ua= +function(b,a,d,g){d=[];if(a&&"object"==typeof b)for(g in b)if(5>g.indexOf("S"))try{d.push(ua(b[g],a-1))}catch(l){}return d.length?d:""+b},ma=function(b,a,d,g){b+="";for(g=d=0;g=sa;)a/=2,d/=2,b>>>=1;return(a+b)/d};return b};ta=ga.pow(256,6);ka=ga.pow(2,ka);sa=2*ka;ma(ga.random(),ja);C(["java.util.Collection"],"java.util.AbstractCollection",["java.lang.reflect.Array"],function(){var b=H(java.util,"AbstractCollection",null,java.util.Collection);j(b,"add",function(){throw new UnsupportedOperationException;},"~O");j(b,"addAll",function(a){var d=!1;for(a=a.iterator();a.hasNext();)this.add(a.next())&&(d=!0);return d},"java.util.Collection");j(b,"clear", +function(){for(var a=this.iterator();a.hasNext();)a.next(),a.remove()});j(b,"contains",function(a){var d=this.iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next()))return!0}else for(;d.hasNext();)if(null==d.next())return!0;return!1},"~O");j(b,"containsAll",function(a){for(a=a.iterator();a.hasNext();)if(!this.contains(a.next()))return!1;return!0},"java.util.Collection");j(b,"isEmpty",function(){return 0==this.size()});j(b,"remove",function(a){var d=this.iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next()))return d.remove(), +!0}else for(;d.hasNext();)if(null==d.next())return d.remove(),!0;return!1},"~O");j(b,"removeAll",function(a){for(var d=!1,g=this.iterator();g.hasNext();)a.contains(g.next())&&(g.remove(),d=!0);return d},"java.util.Collection");j(b,"retainAll",function(a){for(var d=!1,g=this.iterator();g.hasNext();)a.contains(g.next())||(g.remove(),d=!0);return d},"java.util.Collection");c(b,"toArray",function(){for(var a=this.size(),d=0,g=this.iterator(),b=Array(a);da.length&&(a=a.getClass().getComponentType(),a=java.lang.reflect.Array.newInstance(a,d));for(var b,d=this.iterator();d.hasNext()&&((b=d.next())||1);)a[g++]=b;g= +this.start});c(b,"next",function(){if(this.iterator.nextIndex()=this.start)return this.iterator.previous();throw new java.util.NoSuchElementException;});c(b,"previousIndex",function(){var a=this.iterator.previousIndex();return a>=this.start?a-this.start:-1});c(b,"remove",function(){this.iterator.remove(); +this.subList.sizeChanged(!1);this.end--});c(b,"set",function(a){this.iterator.set(a)},"~O")});C(["java.util.Map"],"java.util.AbstractMap",["java.util.AbstractCollection","$.AbstractSet","$.Iterator"],function(){var b=v(function(){this.$values=this.$keySet=null;r(this,arguments)},java.util,"AbstractMap",null,java.util.Map);j(b,"clear",function(){this.entrySet().clear()});j(b,"containsKey",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next().getKey()))return!0}else for(;d.hasNext();)if(null== +d.next().getKey())return!0;return!1},"~O");j(b,"containsValue",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next().getValue()))return!0}else for(;d.hasNext();)if(null==d.next().getValue())return!0;return!1},"~O");j(b,"equals",function(a){if(this===a)return!0;if(z(a,"java.util.Map")){if(this.size()!=a.size())return!1;a=a.entrySet();for(var d=this.entrySet().iterator();d.hasNext();)if(!a.contains(d.next()))return!1;return!0}return!1},"~O");j(b,"get",function(a){var d= +this.entrySet().iterator();if(null!=a)for(;d.hasNext();){var g=d.next();if(a.equals(g.getKey()))return g.getValue()}else for(;d.hasNext();)if(g=d.next(),null==g.getKey())return g.getValue();return null},"~O");j(b,"hashCode",function(){for(var a=0,d=this.entrySet().iterator();d.hasNext();)a+=d.next().hashCode();return a});j(b,"isEmpty",function(){return 0==this.size()});j(b,"keySet",function(){null==this.$keySet&&(this.$keySet=(V("java.util.AbstractMap$1")?0:java.util.AbstractMap.$AbstractMap$1$(), +U(java.util.AbstractMap$1,this,null)));return this.$keySet});j(b,"put",function(){throw new UnsupportedOperationException;},"~O,~O");j(b,"putAll",function(a){this.putAllAM(a)},"java.util.Map");c(b,"putAllAM",function(a){if(!a.isEmpty()){var d;for(a=a.entrySet().iterator();a.hasNext()&&((d=a.next())||1);)this.put(d.getKey(),d.getValue())}},"java.util.Map");j(b,"remove",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){var g=d.next();if(a.equals(g.getKey()))return d.remove(), +g.getValue()}else for(;d.hasNext();)if(g=d.next(),null==g.getKey())return d.remove(),g.getValue();return null},"~O");j(b,"size",function(){return this.entrySet().size()});j(b,"toString",function(){if(this.isEmpty())return"{}";for(var a="{",d=this.entrySet().iterator();d.hasNext();){var g=d.next(),b=g.getKey(),a=b!==this?a+b:a+"(this Map)",a=a+"=",g=g.getValue(),a=g!==this?a+g:a+"(this Map)";d.hasNext()&&(a+=", ")}return a+"}"});j(b,"values",function(){null==this.$values&&(this.$values=(V("java.util.AbstractMap$2")? +0:java.util.AbstractMap.$AbstractMap$2$(),U(java.util.AbstractMap$2,this,null)));return this.$values});c(b,"clone",function(){return this.cloneAM()});c(b,"cloneAM",function(){var a;a=na(this);a.$keySet=null;a.$values=null;return a});b.$AbstractMap$1$=function(){var a=aa(java.util,"AbstractMap$1",java.util.AbstractSet);j(a,"contains",function(a){return this.b$["java.util.AbstractMap"].containsKey(a)},"~O");j(a,"size",function(){return this.b$["java.util.AbstractMap"].size()});j(a,"iterator",function(){return V("java.util.AbstractMap$1$1")? +0:java.util.AbstractMap.$AbstractMap$1$1$(),U(java.util.AbstractMap$1$1,this,null)})};b.$AbstractMap$1$1$=function(){var a=v(function(){Y(this,arguments);this.setIterator=null;r(this,arguments)},java.util,"AbstractMap$1$1",null,java.util.Iterator);P(a,function(){this.setIterator=this.b$["java.util.AbstractMap"].entrySet().iterator()});j(a,"hasNext",function(){return this.setIterator.hasNext()});j(a,"next",function(){return this.setIterator.next().getKey()});j(a,"remove",function(){this.setIterator.remove()})}; +b.$AbstractMap$2$=function(){var a=aa(java.util,"AbstractMap$2",java.util.AbstractCollection);j(a,"size",function(){return this.b$["java.util.AbstractMap"].size()});j(a,"contains",function(a){return this.b$["java.util.AbstractMap"].containsValue(a)},"~O");j(a,"iterator",function(){return V("java.util.AbstractMap$2$1")?0:java.util.AbstractMap.$AbstractMap$2$1$(),U(java.util.AbstractMap$2$1,this,null)})};b.$AbstractMap$2$1$=function(){var a=v(function(){Y(this,arguments);this.setIterator=null;r(this, +arguments)},java.util,"AbstractMap$2$1",null,java.util.Iterator);P(a,function(){this.setIterator=this.b$["java.util.AbstractMap"].entrySet().iterator()});j(a,"hasNext",function(){return this.setIterator.hasNext()});j(a,"next",function(){return this.setIterator.next().getValue()});j(a,"remove",function(){this.setIterator.remove()})}});C(["java.util.AbstractCollection","$.Set"],"java.util.AbstractSet",null,function(){var b=H(java.util,"AbstractSet",java.util.AbstractCollection,java.util.Set);j(b,"equals", +function(a){return this===a?!0:z(a,"java.util.Set")?this.size()==a.size()&&this.containsAll(a):!1},"~O");j(b,"hashCode",function(){for(var a=0,d=this.iterator();d.hasNext();)var g=d.next(),a=a+(null==g?0:g.hashCode());return a});j(b,"removeAll",function(a){var d=!1;if(this.size()<=a.size())for(var g=this.iterator();g.hasNext();)a.contains(g.next())&&(g.remove(),d=!0);else for(g=a.iterator();g.hasNext();)d=this.remove(g.next())||d;return d},"java.util.Collection")});C(["java.util.AbstractList","$.List", +"$.RandomAccess"],"java.util.ArrayList",["java.util.Arrays"],function(){var b=v(function(){this.lastIndex=this.firstIndex=0;this.array=null;r(this,arguments)},java.util,"ArrayList",java.util.AbstractList,[java.util.List,Cloneable,java.io.Serializable,java.util.RandomAccess]);A(b,function(){L(this,java.util.ArrayList,[]);this.setCapacity(0)});A(b,function(a){L(this,java.util.ArrayList,[]);this.setCapacity(a)},"~N");A(b,function(a){this.firstIndex=this.lastIndex=0;var d=-1;a?"number"==typeof a&&(d= +a):d=0;0<=d?this.setCapacity(d):(d=a.size(),this.array=this.newElementArray(d+B(d/10)),this.addAll(a))},"java.util.Collection");c(b,"setCapacity",function(a){try{this.array=this.newElementArray(a)}catch(d){if(F(d,"NegativeArraySizeException"))throw new IllegalArgumentException;throw d;}},"~N");c(b,"newElementArray",function(a){return Array(a)},"~N");c(b,"add",function(a,d){this.add2(a,d)},"~N,~O");c(b,"add2",function(a,d){var g=this.size();if(0a||a>g)throw new IndexOutOfBoundsException;var b=d.size();if(0this.array.length-b){var c=this.firstIndex-b;if(0>c){var e=a+this.firstIndex; +System.arraycopy(this.array,e,this.array,e-c,g-a);this.lastIndex-=c;c=0}System.arraycopy(this.array,this.firstIndex,this.array,c,a);this.firstIndex=c}else e=a+this.firstIndex,System.arraycopy(this.array,e,this.array,e+b,g-a),this.lastIndex+=b;else 0==a?(this.growAtFront(b),this.firstIndex-=b):a==g&&(this.lastIndex>this.array.length-b&&this.growAtEnd(b),this.lastIndex+=b);if(0this.array.length-d&&this.growAtEnd(d);a=a.iterator();for(d=this.lastIndex+d;this.lastIndex=a-(this.array.length-this.lastIndex))a=this.lastIndex-this.firstIndex,0g&&(g=a);12>g&&(g=12);a=this.newElementArray(d+g);0< +d&&System.arraycopy(this.array,this.firstIndex,a,this.firstIndex,d);this.array=a}},"~N");c(b,"growAtFront",function(a){var d=this.size();if(this.array.length-this.lastIndex>=a)a=this.array.length-d,0a?a:this.firstIndex+d,null)),this.firstIndex=a,this.lastIndex=this.array.length;else{var g=B(d/2);a>g&&(g=a);12>g&&(g=12);a=this.newElementArray(d+g);0b&&(b=d);12>b&&(b=12);var c=this.newElementArray(g+b);if(a=this.firstIndex;d--){if(a.equals(this.array[d]))return d-this.firstIndex}else for(d= +this.lastIndex-1;d>=this.firstIndex;d--)if(null==this.array[d])return d-this.firstIndex;return-1},"~O");c(b,"remove",function(a){return this._removeItemAt(a)},"~N");c(b,"_removeObject",function(a){a=this.indexOf(a);if(0>a)return!1;this._removeItemAt(a);return!0},"~O");c(b,"_removeItemAt",function(a){var d,g=this.size();if(0<=a&&aa.length)return this.array.slice(this.firstIndex,this.firstIndex+d);System.arraycopy(this.array,this.firstIndex,a,0,d);db)throw new IllegalArgumentException("fromIndex("+g+") > toIndex("+b+")");if(0>g)throw new ArrayIndexOutOfBoundsException(g); +if(b>a)throw new ArrayIndexOutOfBoundsException(b);},"~N,~N,~N");b.binarySearch=c(b,"binarySearch",function(a,g){for(var b=0,c=a.length-1;b<=c;){var e=b+c>>1,h=a[e];if(hg)c=e-1;else return e}return-(b+1)},"~A,~N");b.binarySearch=c(b,"binarySearch",function(a,g){for(var b=0,c=a.length-1;b<=c;){var e=b+c>>1,h=a[e].compareTo(g);if(0>h)b=e+1;else if(0>1,k=b.compare(a[h],g);if(0>k)c=h+1;else if(0a.length)){var e=0,h=null,e=arguments.count,h=g,k=a,m=null; +switch(e){case 1:h=null;case 2:g=0;b=a.length;break;case 3:case 4:h=c,0==g&&b==a.length?k=a:(k=a.slice(g,b),m=a)}java.util.Arrays.rangeCheck(a.length,g,b);null==h&&(h=java.util.Arrays.comp);k.sort(h.compare);null!=m&&System.arraycopy(k,0,m,g,b)}},"~A,~N,~N,java.util.Comparator");var a=v(function(){this.a=null;r(this,arguments)},java.util.Arrays,"ArrayList",java.util.AbstractList,[java.util.RandomAccess,java.io.Serializable]);A(a,function(a){L(this,java.util.Arrays.ArrayList,[]);if(null==a)throw new NullPointerException; +this.a=a},"~A");j(a,"size",function(){return this.a.length});c(a,"toArray",function(){return this.a.clone()});j(a,"get",function(a){return this.a[a]},"~N");j(a,"set",function(a,g){var b=this.a[a];this.a[a]=g;return b},"~N,~O");j(a,"indexOf",function(a){if(null==a)for(var g=0;g=(c=g.compareTo(b.next())))return 0==c?b.previousIndex():-b.previousIndex()-1}return-a.size()-1}var b=0,e=a.size(),h=e-1;for(c=-1;b<=h;)if(e=b+h>>1,0<(c=g.compareTo(a.get(e))))b=e+1;else{if(0==c)return e;h=e-1}return-e-(0>c?1:2)},"java.util.List,~O");b.binarySearch=c(b,"binarySearch",function(a,g,b){if(null==b)return java.util.Collections.binarySearch(a,g);if(!z(a,"java.util.RandomAccess")){for(var c=a.listIterator();c.hasNext();){var e;if(0>=(e=b.compare(g, +c.next())))return 0==e?c.previousIndex():-c.previousIndex()-1}return-a.size()-1}var c=0,h=a.size(),k=h-1;for(e=-1;c<=k;)if(h=c+k>>1,0<(e=b.compare(g,a.get(h))))c=h+1;else{if(0==e)return h;k=h-1}return-h-(0>e?1:2)},"java.util.List,~O,java.util.Comparator");b.copy=c(b,"copy",function(a,g){if(a.size()g.compareTo(b)&&(g=b)}return g},"java.util.Collection"); +b.max=c(b,"max",function(a,g){for(var b=a.iterator(),c=b.next();b.hasNext();){var e=b.next();0>g.compare(c,e)&&(c=e)}return c},"java.util.Collection,java.util.Comparator");b.min=c(b,"min",function(a){a=a.iterator();for(var g=a.next();a.hasNext();){var b=a.next();0e&&(e=-e),a.set(e,a.set(c,a.get(e)));else{for(var b=a.toArray(),c=b.length-1;0e&&(e=-e);var h=b[c];b[c]=b[e];b[e]=h}c=0;for(e=a.listIterator();e.hasNext();)e.next(),e.set(b[c++])}},"java.util.List,java.util.Random"); +b.singleton=c(b,"singleton",function(a){return new java.util.Collections.SingletonSet(a)},"~O");b.singletonList=c(b,"singletonList",function(a){return new java.util.Collections.SingletonList(a)},"~O");b.singletonMap=c(b,"singletonMap",function(a,g){return new java.util.Collections.SingletonMap(a,g)},"~O,~O");b.sort=c(b,"sort",function(a){var g=a.toArray();java.util.Arrays.sort(g);var b=0;for(a=a.listIterator();a.hasNext();)a.next(),a.set(g[b++])},"java.util.List");b.sort=c(b,"sort",function(a,g){var b= +a.toArray(Array(a.size()));java.util.Arrays.sort(b,g);for(var c=0,e=a.listIterator();e.hasNext();)e.next(),e.set(b[c++])},"java.util.List,java.util.Comparator");b.swap=c(b,"swap",function(a,g,b){if(null==a)throw new NullPointerException;g!=b&&a.set(b,a.set(g,a.get(b)))},"java.util.List,~N,~N");b.replaceAll=c(b,"replaceAll",function(a,g,b){for(var c,e=!1;-1<(c=a.indexOf(g));)e=!0,a.set(c,b);return e},"java.util.List,~O,~O");b.rotate=c(b,"rotate",function(a,g){var b=a.size();if(0!=b){var c;c=0b)return-1;if(0==c)return 0;var e=g.get(0),h=a.indexOf(e);if(-1==h)return-1;for(;h=c;){var k= +a.listIterator(h);if(null==e?null==k.next():e.equals(k.next())){for(var m=g.listIterator(1),x=!1;m.hasNext();){var j=m.next();if(!k.hasNext())return-1;if(null==j?null!=k.next():!j.equals(k.next())){x=!0;break}}if(!x)return h}h++}return-1},"java.util.List,java.util.List");b.lastIndexOfSubList=c(b,"lastIndexOfSubList",function(a,g){var b=g.size(),c=a.size();if(b>c)return-1;if(0==b)return c;for(var c=g.get(b-1),e=a.lastIndexOf(c);-1=b;){var h=a.listIterator(e+1);if(null==c?null==h.previous(): +c.equals(h.previous())){for(var k=g.listIterator(b-1),m=!1;k.hasPrevious();){var x=k.previous();if(!h.hasPrevious())return-1;if(null==x?null!=h.previous():!x.equals(h.previous())){m=!0;break}}if(!m)return h.nextIndex()}e--}return-1},"java.util.List,java.util.List");b.list=c(b,"list",function(a){for(var g=new java.util.ArrayList;a.hasMoreElements();)g.add(a.nextElement());return g},"java.util.Enumeration");b.synchronizedCollection=c(b,"synchronizedCollection",function(a){if(null==a)throw new NullPointerException; +return new java.util.Collections.SynchronizedCollection(a)},"java.util.Collection");b.synchronizedList=c(b,"synchronizedList",function(a){if(null==a)throw new NullPointerException;return z(a,"java.util.RandomAccess")?new java.util.Collections.SynchronizedRandomAccessList(a):new java.util.Collections.SynchronizedList(a)},"java.util.List");b.synchronizedMap=c(b,"synchronizedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedMap(a)},"java.util.Map"); +b.synchronizedSet=c(b,"synchronizedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSet(a)},"java.util.Set");b.synchronizedSortedMap=c(b,"synchronizedSortedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSortedMap(a)},"java.util.SortedMap");b.synchronizedSortedSet=c(b,"synchronizedSortedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSortedSet(a)}, +"java.util.SortedSet");b.unmodifiableCollection=c(b,"unmodifiableCollection",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableCollection(a)},"java.util.Collection");b.unmodifiableList=c(b,"unmodifiableList",function(a){if(null==a)throw new NullPointerException;return z(a,"java.util.RandomAccess")?new java.util.Collections.UnmodifiableRandomAccessList(a):new java.util.Collections.UnmodifiableList(a)},"java.util.List");b.unmodifiableMap=c(b,"unmodifiableMap", +function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableMap(a)},"java.util.Map");b.unmodifiableSet=c(b,"unmodifiableSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSet(a)},"java.util.Set");b.unmodifiableSortedMap=c(b,"unmodifiableSortedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSortedMap(a)},"java.util.SortedMap");b.unmodifiableSortedSet=c(b, +"unmodifiableSortedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSortedSet(a)},"java.util.SortedSet");b.frequency=c(b,"frequency",function(a,g){if(null==a)throw new NullPointerException;if(a.isEmpty())return 0;for(var b=0,c=a.iterator();c.hasNext();){var e=c.next();(null==g?null==e:g.equals(e))&&b++}return b},"java.util.Collection,~O");b.emptyList=c(b,"emptyList",function(){return java.util.Collections.EMPTY_LIST});b.emptySet=c(b,"emptySet", +function(){return java.util.Collections.EMPTY_SET});b.emptyMap=c(b,"emptyMap",function(){return java.util.Collections.EMPTY_MAP});b.checkedCollection=c(b,"checkedCollection",function(a,g){return new java.util.Collections.CheckedCollection(a,g)},"java.util.Collection,Class");b.checkedMap=c(b,"checkedMap",function(a,g,b){return new java.util.Collections.CheckedMap(a,g,b)},"java.util.Map,Class,Class");b.checkedList=c(b,"checkedList",function(a,g){return z(a,"java.util.RandomAccess")?new java.util.Collections.CheckedRandomAccessList(a, +g):new java.util.Collections.CheckedList(a,g)},"java.util.List,Class");b.checkedSet=c(b,"checkedSet",function(a,g){return new java.util.Collections.CheckedSet(a,g)},"java.util.Set,Class");b.checkedSortedMap=c(b,"checkedSortedMap",function(a,g,b){return new java.util.Collections.CheckedSortedMap(a,g,b)},"java.util.SortedMap,Class,Class");b.checkedSortedSet=c(b,"checkedSortedSet",function(a,g){return new java.util.Collections.CheckedSortedSet(a,g)},"java.util.SortedSet,Class");b.addAll=c(b,"addAll", +function(a,g){for(var b=!1,c=0;ca.size()){var b=a;a=g;g=b}for(b=a.iterator();b.hasNext();)if(g.contains(b.next()))return!1;return!0},"java.util.Collection,java.util.Collection");b.checkType=c(b,"checkType",function(a,g){if(!g.isInstance(a))throw new ClassCastException("Attempt to insert "+a.getClass()+" element into collection with element type "+ +g);return a},"~O,Class");b.$Collections$1$=function(){var a=v(function(){Y(this,arguments);this.it=null;r(this,arguments)},java.util,"Collections$1",null,java.util.Enumeration);P(a,function(){this.it=this.f$.c.iterator()});c(a,"hasMoreElements",function(){return this.it.hasNext()});c(a,"nextElement",function(){return this.it.next()})};var a=H(java.util.Collections,"EmptyEnumeration",null,java.util.Enumeration);j(a,"hasMoreElements",function(){return!1});j(a,"nextElement",function(){throw new java.util.NoSuchElementException; +});a=H(java.util.Collections,"EmptyIterator",null,java.util.Iterator);j(a,"hasNext",function(){return!1});j(a,"next",function(){throw new java.util.NoSuchElementException;});j(a,"remove",function(){throw new IllegalStateException;});a=v(function(){this.n=0;this.element=null;r(this,arguments)},java.util.Collections,"CopiesList",java.util.AbstractList,java.io.Serializable);A(a,function(a,g){L(this,java.util.Collections.CopiesList,[]);if(0>a)throw new IllegalArgumentException;this.n=a;this.element=g}, +"~N,~O");j(a,"contains",function(a){return null==this.element?null==a:this.element.equals(a)},"~O");j(a,"size",function(){return this.n});j(a,"get",function(a){if(0<=a&&aa.length&&(a=a.getClass().getComponentType(),a=java.lang.reflect.Array.newInstance(a,g));for(;bc)throw new IllegalArgumentException("Illegal Capacity: "+c);if(0>=e||Float.isNaN(e))throw new IllegalArgumentException("Illegal Load: "+e);0==c&&(c=1);this.loadFactor=e;this.table=Array(c);this.threshold=D(Math.min(c*e,2147483640));this.__setJS();null!=b&&this.putAll(b)});j(b,"size",function(){var a=this.count;return a=this.__m&&this.__m.size||a});j(b,"isEmpty",function(){return 0==this.size()});j(b,"keys",function(){return this.getEnumeration(0)});j(b,"elements",function(){return this.getEnumeration(1)}); +c(b,"contains",function(a){if(null==a)throw new NullPointerException;if(0==this.size())return!1;if(java.util.Hashtable.__isSimple(this))for(var g=this.__m.values(),b=g.next();!b.done;b=g.next()){if(b.value==a||b.value.equals(a))return!0}else{g=this.table;for(b=g.length;0=this.threshold&&(this.rehash(),e=this.table,a=g.hashCode(),c=(a&2147483647)% +e.length);e[c]=new java.util.Hashtable.Entry(a,g,b,e[c]);this.count++},"~N,~O,~O,~N");j(b,"put",function(a,g){if(null==g)throw new NullPointerException;switch(java.util.Hashtable.__hasKey(this,a)){case 1:java.util.Hashtable.__ensureJavaMap(this);break;case 2:return this.__m.set(a,g),++this.modCount,null;case 3:var b=null,b=this.__m.get(a);this.__m.set(a,g);++this.modCount;return b}for(var c=this.table,b=a.hashCode(),e=(b&2147483647)%c.length,c=c[e];null!=c;c=c.next_)if(c.hash==b&&c.key.equals(a))return b= +c.value,c.value=g,b;this.addEntry(b,a,g,e);return null},"~O,~O");j(b,"remove",function(a){if(null==a)throw new NullPointerException("Hashtable key may not be null");switch(java.util.Hashtable.__hasKey(this,a)){case 1:java.util.Hashtable.__ensureJavaMap(this);break;case 2:return null;case 3:var g=null,g=this.__m.get(a);this.__m["delete"](a);++this.modCount;return g}for(var b=this.table,c=a.hashCode(),e=(c&2147483647)%b.length,g=b[e],h=null;null!=g;h=g,g=g.next_)if(g.hash==c&&g.key.equals(a))return this.modCount++, +null!=h?h.next_=g.next_:b[e]=g.next_,this.count--,a=g.value,g.value=null,a;return null},"~O");j(b,"putAll",function(a){if(java.util.Hashtable.__isSimple(a)){var g=this;a.__m.forEach(function(a,d){g.put(d,a)})}else{var b;for(a=a.entrySet().iterator();a.hasNext()&&((b=a.next())||1);)this.put(b.getKey(),b.getValue())}},"java.util.Map");j(b,"clear",function(){var a=this.table;this.modCount++;java.util.Hashtable.__isSimple(this)&&this.__m.clear();this.__setJS();for(var g=a.length;0<=--g;)a[g]=null;this.count= +0});c(b,"clone",function(){try{var a=$(this,java.util.Hashtable,"clone",[]);a.table=Array(this.table.length);for(var g=this.table.length;0this.loadFactor)return a;this.loadFactor=-this.loadFactor;for(var g,b=0,c=this.table;bg)return a.value[g];b=a.value[0];c=a.value[1]}if(!e)return V("java.util.Hashtable$Enumerator$1")?0:java.util.Hashtable.Enumerator.$Hashtable$Enumerator$1$(),U(java.util.Hashtable$Enumerator$1,this,null,0,b,c,null)}}else{b=this.index;for(g=this.table;null==a&&0=c)){c=Integer.toHexString(c.charCodeAt(0));a+="\\u"; +for(var e=0;e<4-c.length;e++)a+="0"}a+=c}}return a},"~S,~S,~B");c(b,"getProperty",function(a){var d=this.get(a),d="string"==typeof d?d:null;null==d&&null!=this.defaults&&(d=this.defaults.getProperty(a));return d},"~S");c(b,"getProperty",function(a,d){var g=this.get(a),g="string"==typeof g?g:null;null==g&&null!=this.defaults&&(g=this.defaults.getProperty(a));return null==g?d:g},"~S,~S");c(b,"list",function(a){if(null==a)throw new NullPointerException;for(var d="",g=this.propertyNames();g.hasMoreElements();){for(var b= +g.nextElement(),d=d+b,d=d+"=",c=this.get(b),e=this.defaults;null==c;)c=e.get(b),e=e.defaults;40",">").replaceAll("'","'").replaceAll('"',""")},"~S");b.lineSeparator=null});O(java.util,"SortedMap",java.util.Map); +O(java.util,"SortedSet",java.util.Set);C(["java.util.Enumeration"],"java.util.StringTokenizer",null,function(){var b=v(function(){this.delimiters=this.string=null;this.returnDelimiters=!1;this.position=0;r(this,arguments)},java.util,"StringTokenizer",null,java.util.Enumeration);A(b,function(a,d,g){switch(arguments.length){case 1:d=" \t\n\r\f";case 2:g=!1}if(null==a)throw new NullPointerException;this.string=a;this.delimiters=d;this.returnDelimiters=g;this.position=0},"~S,~S,~B");c(b,"countTokens", +function(){for(var a=0,d=!1,g=this.position,b=this.string.length;g>24&255});j(b,"setOpacity255",function(a){this.argb=this.argb&16777215|(a&255)<<24},"~N");b.get1=c(b,"get1", +function(a){var d=new JS.Color;d.argb=a|4278190080;return d},"~N");b.get3=c(b,"get3",function(a,d,g){return(new JS.Color).set4(a,d,g,255)},"~N,~N,~N");b.get4=c(b,"get4",function(a,d,g,b){return(new JS.Color).set4(a,d,g,b)},"~N,~N,~N,~N");c(b,"set4",function(a,d,g,b){this.argb=(b<<24|a<<16|d<<8|g)&4294967295;return this},"~N,~N,~N,~N");j(b,"toString",function(){var a="00000000"+Integer.toHexString(this.argb);return"[0x"+a.substring(a.length-8,a.length)+"]"})});u("JS");p=v(function(){this.height=this.width= +0;r(this,arguments)},JS,"Dimension",null);A(p,function(b,a){this.set(b,a)},"~N,~N");c(p,"set",function(b,a){this.width=b;this.height=a;return this},"~N,~N");u("J.awtjs");H(J.awtjs,"Event",null);u("J.api");O(J.api,"GenericMenuInterface");u("JU");C(["JU.P3"],"JU.A4",["JU.T3"],function(){var b=v(function(){this.angle=0;r(this,arguments)},JU,"A4",JU.P3);A(b,function(){L(this,JU.A4,[]);this.z=1});b.new4=c(b,"new4",function(a,d,g,b){var c=new JU.A4;c.set4(a,d,g,b);return c},"~N,~N,~N,~N");b.newAA=c(b,"newAA", +function(a){var d=new JU.A4;d.set4(a.x,a.y,a.z,a.angle);return d},"JU.A4");b.newVA=c(b,"newVA",function(a,d){var g=new JU.A4;g.setVA(a,d);return g},"JU.V3,~N");c(b,"setVA",function(a,d){this.x=a.x;this.y=a.y;this.z=a.z;this.angle=d},"JU.V3,~N");c(b,"set4",function(a,d,g,b){this.x=a;this.y=d;this.z=g;this.angle=b},"~N,~N,~N,~N");c(b,"setAA",function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.angle=a.angle},"JU.A4");c(b,"setM",function(a){this.setFromMat(a.m00,a.m01,a.m02,a.m10,a.m11,a.m12,a.m20,a.m21, +a.m22)},"JU.M3");c(b,"setFromMat",function(a,d,g,b,c,e,h,k,m){a=0.5*(a+c+m-1);this.x=k-e;this.y=g-h;this.z=b-d;d=0.5*Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z);0==d&&1==a?(this.x=this.y=0,this.z=1,this.angle=0):this.angle=Math.atan2(d,a)},"~N,~N,~N,~N,~N,~N,~N,~N,~N");j(b,"hashCode",function(){return JU.T3.floatToIntBits(this.x)^JU.T3.floatToIntBits(this.y)^JU.T3.floatToIntBits(this.z)^JU.T3.floatToIntBits(this.angle)});j(b,"equals",function(a){return!z(a,"JU.A4")?!1:this.x==a.x&&this.y== +a.y&&this.z==a.z&&this.angle==a.angle},"~O");j(b,"toString",function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.angle+")"});j(b,"toJSON",function(){return"["+this.x+","+this.y+","+this.z+","+180*this.angle/3.141592653589793+"]"})});u("JU");C(["java.net.URLConnection"],"JU.AjaxURLConnection",["JU.AU","$.Rdr"],function(){var b=v(function(){this.bytesOut=null;this.postOut="";r(this,arguments)},JU,"AjaxURLConnection",java.net.URLConnection);c(b,"doAjax",function(){var a=null,a=Jmol;return a.doAjax(this.url, +this.postOut,this.bytesOut,!1)});j(b,"connect",function(){});c(b,"outputBytes",function(a){this.bytesOut=a},"~A");c(b,"outputString",function(a){this.postOut=a},"~S");j(b,"getInputStream",function(){var a=null,d=this.doAjax();JU.AU.isAB(d)?a=JU.Rdr.getBIS(d):z(d,"JU.SB")?a=JU.Rdr.getBIS(JU.Rdr.getBytesFromSB(d)):"string"==typeof d&&(a=JU.Rdr.getBIS(d.getBytes()));return a});c(b,"getContents",function(){return this.doAjax()})});u("JU");C(["java.net.URLStreamHandler"],"JU.AjaxURLStreamHandler",["JU.AjaxURLConnection", +"$.SB"],function(){var b=v(function(){this.protocol=null;r(this,arguments)},JU,"AjaxURLStreamHandler",java.net.URLStreamHandler);A(b,function(a){L(this,JU.AjaxURLStreamHandler,[]);this.protocol=a},"~S");c(b,"openConnection",function(a){return new JU.AjaxURLConnection(a)},"java.net.URL");j(b,"toExternalForm",function(a){var d=new JU.SB;d.append(a.getProtocol());d.append(":");null!=a.getAuthority()&&0=d?a:JU.AU.arrayCopyObject(a,d)},"~O,~N");b.ensureLengthS=c(b,"ensureLengthS",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyS(a,d)},"~A,~N");b.ensureLengthA= +c(b,"ensureLengthA",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyF(a,d)},"~A,~N");b.ensureLengthI=c(b,"ensureLengthI",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyI(a,d)},"~A,~N");b.ensureLengthShort=c(b,"ensureLengthShort",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyShort(a,d)},"~A,~N");b.ensureLengthByte=c(b,"ensureLengthByte",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyByte(a,d)},"~A,~N");b.doubleLength=c(b,"doubleLength",function(a){return JU.AU.arrayCopyObject(a, +null==a?16:2*JU.AU.getLength(a))},"~O");b.doubleLengthS=c(b,"doubleLengthS",function(a){return JU.AU.arrayCopyS(a,null==a?16:2*a.length)},"~A");b.doubleLengthF=c(b,"doubleLengthF",function(a){return JU.AU.arrayCopyF(a,null==a?16:2*a.length)},"~A");b.doubleLengthI=c(b,"doubleLengthI",function(a){return JU.AU.arrayCopyI(a,null==a?16:2*a.length)},"~A");b.doubleLengthShort=c(b,"doubleLengthShort",function(a){return JU.AU.arrayCopyShort(a,null==a?16:2*a.length)},"~A");b.doubleLengthByte=c(b,"doubleLengthByte", +function(a){return JU.AU.arrayCopyByte(a,null==a?16:2*a.length)},"~A");b.doubleLengthBool=c(b,"doubleLengthBool",function(a){return JU.AU.arrayCopyBool(a,null==a?16:2*a.length)},"~A");b.deleteElements=c(b,"deleteElements",function(a,d,g){if(0==g||null==a)return a;var b=JU.AU.getLength(a);if(d>=b)return a;b-=d+g;0>b&&(b=0);var c=JU.AU.newInstanceO(a,d+b);0d&&(d=g);if(d==g)return a;if(dd&&(d=g);if(dd&&(d=a.length);var g=Array(d);if(null!=a){var b=a.length;System.arraycopy(a,0,g,0,bd&&(d=g);if(dd&&(d=g);if(dd&&(d=g);if(dd&&(d=g);if(dd&&(d=g);if(d=c;e--){a+="\n*"+e+"*";for(h=g;h<=b;h++)a+="\t"+(h>18&63));g.appendC(JU.Base64.base64.charAt(e>>12&63));g.appendC(2==c?"=":JU.Base64.base64.charAt(e>>6&63));g.appendC(1<=c?"=":JU.Base64.base64.charAt(e&63))}return g},"~A");b.decodeBase64=c(b,"decodeBase64",function(a){var d=0,g,b=a.indexOf(";base64,")+1;0=b;)d+=65==(g=a[e].charCodeAt(0)&127)||0>2,h=Q(d,0),k=18,e=b,m=b=0;ek&&(h[b++]=(m&16711680)>>16,b>8),b>5},"~N");c(b,"recalculateWordsInUse",function(){var a;for(a=this.wordsInUse-1;0<=a&&0==this.words[a];a--); +this.wordsInUse=a+1});b.newN=c(b,"newN",function(a){var d=new JU.BS;d.init(a);return d},"~N");c(b,"init",function(a){if(0>a)throw new NegativeArraySizeException("nbits < 0: "+a);this.initWords(a);this.sizeIsSticky=!0},"~N");c(b,"initWords",function(a){this.words=E(JU.BS.wordIndex(a-1)+1,0)},"~N");c(b,"ensureCapacity",function(a){this.words.lengtha)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);this.expandTo(d);this.words[d]|=1<>>-d;if(g==b)this.words[g]|=c&e;else{this.words[g]|=c;for(g+=1;g +a)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);d>=this.wordsInUse||(this.words[d]&=~(1<=this.wordsInUse)){var b=JU.BS.wordIndex(d-1);b>=this.wordsInUse&&(d=this.length(),b=this.wordsInUse-1);var c=-1<>>-d;if(g==b)this.words[g]&=~(c&e);else{this.words[g]&=~c;for(g+=1;ga)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);return da)throw new IndexOutOfBoundsException("fromIndex < 0: "+a);var d=JU.BS.wordIndex(a);if(d>=this.wordsInUse)return-1;for(a=this.words[d]&-1<a)throw new IndexOutOfBoundsException("fromIndex < 0: "+a);var d=JU.BS.wordIndex(a);if(d>=this.wordsInUse)return a;for(a=~this.words[d]&-1<a.wordsInUse;)this.words[--this.wordsInUse]=0;for(var d=0;d>32^a});c(b,"size",function(){return 32*this.words.length});j(b,"equals",function(a){if(!z(a,"JU.BS"))return!1;if(this===a)return!0;if(this.wordsInUse!=a.wordsInUse)return!1;for(var d= +0;d=a;)this.get(g)&&d--;return d},"~N");j(b,"toJSON",function(){var a=128c&&(b.append((-2==e?"":" ")+h),e=h),c=h)}b.append("}").appendC(g);return b.toString()},"JU.BS,~S,~S");b.unescape=c(b,"unescape",function(a){var d,g;if(null==a||4>(g=(a=a.trim()).length)||a.equalsIgnoreCase("({null})")|| +"("!=(d=a.charAt(0))&&"["!=d||a.charAt(g-1)!=("("==d?")":"]")||"{"!=a.charAt(1)||a.indexOf("}")!=g-2)return null;for(var b=g-=2;2<=--b;)if(!JU.PT.isDigit(d=a.charAt(b))&&" "!=d&&"\t"!=d&&":"!=d)return null;for(var c=g;JU.PT.isDigit(a.charAt(--c)););if(++c==g)c=0;else try{c=Integer.parseInt(a.substring(c,g))}catch(e){if(F(e,"NumberFormatException"))return null;throw e;}for(var h=JU.BS.newN(c),k=c=-1,m=-2,b=2;b<=g;b++)switch((d=a.charAt(b)).charCodeAt(0)){case 9:case 32:case 125:if(0>m)break;if(mk&&(k=m);h.setBits(k,m+1);k=-1;m=-2;break;case 58:k=c=m;m=-2;break;default:JU.PT.isDigit(d)&&(0>m&&(m=0),m=10*m+(d.charCodeAt(0)-48))}return 0<=k?null:h},"~S");b.emptyBitmap=E(0,0)});u("JU");C(["java.util.Hashtable"],"JU.CU",["JU.P3","$.PT"],function(){var b=H(JU,"CU",null);b.toRGBHexString=c(b,"toRGBHexString",function(a){var d=a.getRGB();if(0==d)return"000000";a="00"+Integer.toHexString(d>>16&255);a=a.substring(a.length-2);var g="00"+Integer.toHexString(d>>8&255),g=g.substring(g.length-2), +d="00"+Integer.toHexString(d&255),d=d.substring(d.length-2);return a+g+d},"javajs.api.GenericColor");b.toCSSString=c(b,"toCSSString",function(a){var d=a.getOpacity255();if(255==d)return"#"+JU.CU.toRGBHexString(a);a=a.getRGB();return"rgba("+(a>>16&255)+","+(a>>8&255)+","+(a&255)+","+d/255+")"},"javajs.api.GenericColor");b.getArgbFromString=c(b,"getArgbFromString",function(a){var d=0;if(null==a||0==(d=a.length))return 0;a=a.toLowerCase();if("["==a.charAt(0)&&"]"==a.charAt(d-1)){var g;if(0<=a.indexOf(",")){g= +JU.PT.split(a.substring(1,a.length-1),",");if(3!=g.length)return 0;a=JU.PT.parseFloat(g[0]);d=JU.PT.parseFloat(g[1]);g=JU.PT.parseFloat(g[2]);return JU.CU.colorTriadToFFRGB(a,d,g)}switch(d){case 9:g="x";break;case 10:g="0x";break;default:return 0}if(1!=a.indexOf(g))return 0;a="#"+a.substring(d-7,d-1);d=7}if(7==d&&"#"==a.charAt(0))try{return JU.PT.parseIntRadix(a.substring(1,7),16)|4278190080}catch(b){if(F(b,Exception))return 0;throw b;}a=JU.CU.mapJavaScriptColors.get(a);return null==a?0:a.intValue()}, +"~S");b.colorTriadToFFRGB=c(b,"colorTriadToFFRGB",function(a,d,g){1>=a&&(1>=d&&1>=g)&&(0>16&255,a>>8&255,a&255);return d}, +"~N,JU.P3");b.colorPtToFFRGB=c(b,"colorPtToFFRGB",function(a){return JU.CU.colorTriadToFFRGB(a.x,a.y,a.z)},"JU.T3");b.toRGB3f=c(b,"toRGB3f",function(a,d){d[0]=(a>>16&255)/255;d[1]=(a>>8&255)/255;d[2]=(a&255)/255},"~N,~A");b.toFFGGGfromRGB=c(b,"toFFGGGfromRGB",function(a){a=B((2989*(a>>16&255)+5870*(a>>8&255)+1140*(a&255)+5E3)/1E4)&16777215;return JU.CU.rgb(a,a,a)},"~N");b.rgbToHSL=c(b,"rgbToHSL",function(a,d){var g=a.x/255,b=a.y/255,c=a.z/255,e=Math.min(g,Math.min(b,c)),h=Math.max(g,Math.max(b,c)), +k=h+e,e=h-e,g=60*(0==e?0:h==g?(b-c)/e+6:h==b?(c-g)/e+2:(g-b)/e+4)%360,b=e/(0==e?1:1>=k?k:2-k);return d?JU.P3.new3(Math.round(10*g)/10,Math.round(1E3*b)/10,Math.round(500*k)/10):JU.P3.new3(g,100*b,50*k)},"JU.P3,~B");b.hslToRGB=c(b,"hslToRGB",function(a){var d=Math.max(0,Math.min(360,a.x))/60,g=Math.max(0,Math.min(100,a.y))/100;a=Math.max(0,Math.min(100,a.z))/100;var g=a-(0.5>a?a:1-a)*g,b=2*(a-g);a=JU.CU.toRGB(g,b,d+2);var c=JU.CU.toRGB(g,b,d),d=JU.CU.toRGB(g,b,d-2);return JU.P3.new3(Math.round(255* +a),Math.round(255*c),Math.round(255*d))},"JU.P3");b.toRGB=c(b,"toRGB",function(a,d,g){return 1>(g+=0>g?6:6g?a+d:4>g?a+d*(4-g):a},"~N,~N,~N");b.colorNames=w(-1,"contrast black pewhite pecyan pepurple pegreen peblue peviolet pebrown pepink peyellow pedarkgreen peorange pelightblue pedarkcyan pedarkgray aliceblue antiquewhite aqua aquamarine azure beige bisque blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkturquoise darkviolet deeppink deepskyblue dimgray dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgreen lightgrey lightgray lightpink lightsalmon lightseagreen lightskyblue lightslategray lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen bluetint greenblue greentint grey gray pinktint redorange yellowtint".split(" ")); +b.colorArgbs=E(-1,[4294892730,4278190080,4294967295,4278255615,4291830015,4278255360,4284506367,4294934720,4288946216,4294957272,4294967040,4278239232,4294946816,4289769727,4278231200,4284506208,4293982463,4294634455,4278255615,4286578644,4293984255,4294309340,4294960324,4294962125,4278190335,4287245282,4289014314,4292786311,4284456608,4286578432,4291979550,4294934352,4284782061,4294965468,4292613180,4278255615,4278190219,4278225803,4290283019,4289309097,4278215680,4290623339,4287299723,4283788079, +4294937600,4288230092,4287299584,4293498490,4287609999,4282924427,4281290575,4278243025,4287889619,4294907027,4278239231,4285098345,4280193279,4289864226,4294966E3,4280453922,4294902015,4292664540,4294506751,4294956800,4292519200,4286611584,4278222848,4289593135,4293984240,4294928820,4291648604,4283105410,4294967280,4293977740,4293322490,4294963445,4286381056,4294965965,4289583334,4293951616,4292935679,4294638290,4287688336,4292072403,4292072403,4294948545,4294942842,4280332970,4287090426,4286023833, +4289774814,4294967264,4278255360,4281519410,4294635750,4294902015,4286578688,4284927402,4278190285,4290401747,4287852763,4282168177,4286277870,4278254234,4282962380,4291237253,4279834992,4294311930,4294960353,4294960309,4294958765,4278190208,4294833638,4286611456,4285238819,4294944E3,4294919424,4292505814,4293847210,4288215960,4289720046,4292571283,4294963157,4294957753,4291659071,4294951115,4292714717,4289781990,4286578816,4294901760,4290547599,4282477025,4287317267,4294606962,4294222944,4281240407, +4294964718,4288696877,4290822336,4287090411,4285160141,4285563024,4294966010,4278255487,4282811060,4291998860,4278222976,4292394968,4294927175,4282441936,4293821166,4294303411,4294967295,4294309365,4294967040,4288335154,4289714175,4281240407,4288217011,4286611584,4286611584,4294945723,4294919424,4294375029]);b.mapJavaScriptColors=new java.util.Hashtable;for(b=JU.CU.colorNames.length;0<=--b;)JU.CU.mapJavaScriptColors.put(JU.CU.colorNames[b],Integer.$valueOf(JU.CU.colorArgbs[b]))});u("JU");C(null,"JU.DF", +["JU.PT","$.SB"],function(){var b=H(JU,"DF",null);b.setUseNumberLocalization=c(b,"setUseNumberLocalization",function(a){JU.DF.useNumberLocalization[0]=a?Boolean.TRUE:Boolean.FALSE},"~B");b.formatDecimalDbl=c(b,"formatDecimalDbl",function(a,d){return 2147483647==d||-Infinity==a||Infinity==a||Double.isNaN(a)?""+a:JU.DF.formatDecimal(a,d)},"~N,~N");b.formatDecimal=c(b,"formatDecimal",function(a,d){if(-Infinity==a||(Infinity==a||Double.isNaN(a))||2147483647==d)return""+a;var g=0>a;g&&(a=-a);var b;if(0> +d){d=-d;d>JU.DF.formattingStrings.length&&(d=JU.DF.formattingStrings.length);if(0==a)return JU.DF.formattingStrings[d-1]+"E+0";var c;1>Math.abs(a)?(b=100,c=1E-100*a):(b=-100,c=1E100*a);c=(""+c).toUpperCase();var e=c.indexOf("E");0>e?c=""+a:(b=JU.PT.parseInt(c.substring(e+(c.indexOf("E+")==e?2:1)))+b,c=JU.PT.parseFloat(c.substring(0,e)),c=JU.DF.formatDecimal(c,d-1),c.startsWith("10.")&&(c=JU.DF.formatDecimal(1,d-1),b++));return(g?"-":"")+c+"E"+(0<=b?"+":"")+b}d>=JU.DF.formattingStrings.length&&(d= +JU.DF.formattingStrings.length-1);c=(""+a).toUpperCase();b=c.indexOf(".");if(0>b)return(g?"-":"")+c+JU.DF.formattingStrings[d].substring(1);e=c.indexOf("E-");0c&&"0"==g.charAt(b);)b--;return g.substring(0,b+1)},"~N,~N");b.formattingStrings=w(-1,"0 0.0 0.00 0.000 0.0000 0.00000 0.000000 0.0000000 0.00000000 0.000000000 0.0000000000 0.00000000000 0.000000000000".split(" "));b.formatAdds=R(-1,[0.5,0.05,0.005, +5E-4,5E-5,5E-6,5E-7,5E-8,5E-9,5E-10,5E-11,5E-12,5E-13]);b.useNumberLocalization=w(-1,[Boolean.TRUE])});u("JU");C(["java.lang.Enum"],"JU.Encoding",null,function(){var b=H(JU,"Encoding",Enum);I(b,"NONE",0,[]);I(b,"UTF8",1,[]);I(b,"UTF_16BE",2,[]);I(b,"UTF_16LE",3,[]);I(b,"UTF_32BE",4,[]);I(b,"UTF_32LE",5,[])});u("JU");C(["java.util.ArrayList"],"JU.Lst",null,function(){var b=H(JU,"Lst",java.util.ArrayList);c(b,"addLast",function(a){return this.add1(a)},"~O");j(b,"add",function(a,d){return this.add2(a, +d)},"~N,~O");c(b,"removeItemAt",function(a){return this._removeItemAt(a)},"~N");c(b,"removeObj",function(a){return this._removeObject(a)},"~O")});u("JU");p=v(function(){this.m22=this.m21=this.m20=this.m12=this.m11=this.m10=this.m02=this.m01=this.m00=0;r(this,arguments)},JU,"M34",null);c(p,"setAA33",function(b){var a=b.x,d=b.y,g=b.z;b=b.angle;var l=Math.sqrt(a*a+d*d+g*g),l=1/l,a=a*l,d=d*l,g=g*l,c=Math.cos(b);b=Math.sin(b);l=1-c;this.m00=c+a*a*l;this.m11=c+d*d*l;this.m22=c+g*g*l;var c=a*d*l,e=g*b;this.m01= +c-e;this.m10=c+e;c=a*g*l;e=d*b;this.m02=c+e;this.m20=c-e;c=d*g*l;e=a*b;this.m12=c-e;this.m21=c+e},"JU.A4");c(p,"rotate",function(b){this.rotate2(b,b)},"JU.T3");c(p,"rotate2",function(b,a){a.set(this.m00*b.x+this.m01*b.y+this.m02*b.z,this.m10*b.x+this.m11*b.y+this.m12*b.z,this.m20*b.x+this.m21*b.y+this.m22*b.z)},"JU.T3,JU.T3");c(p,"setM33",function(b){this.m00=b.m00;this.m01=b.m01;this.m02=b.m02;this.m10=b.m10;this.m11=b.m11;this.m12=b.m12;this.m20=b.m20;this.m21=b.m21;this.m22=b.m22},"JU.M34");c(p, +"clear33",function(){this.m00=this.m01=this.m02=this.m10=this.m11=this.m12=this.m20=this.m21=this.m22=0});c(p,"set33",function(b,a,d){switch(b){case 0:switch(a){case 0:this.m00=d;return;case 1:this.m01=d;return;case 2:this.m02=d;return}break;case 1:switch(a){case 0:this.m10=d;return;case 1:this.m11=d;return;case 2:this.m12=d;return}break;case 2:switch(a){case 0:this.m20=d;return;case 1:this.m21=d;return;case 2:this.m22=d;return}}this.err()},"~N,~N,~N");c(p,"get33",function(b,a){switch(b){case 0:switch(a){case 0:return this.m00; +case 1:return this.m01;case 2:return this.m02}break;case 1:switch(a){case 0:return this.m10;case 1:return this.m11;case 2:return this.m12}break;case 2:switch(a){case 0:return this.m20;case 1:return this.m21;case 2:return this.m22}}this.err();return 0},"~N,~N");c(p,"setRow33",function(b,a){switch(b){case 0:this.m00=a[0];this.m01=a[1];this.m02=a[2];break;case 1:this.m10=a[0];this.m11=a[1];this.m12=a[2];break;case 2:this.m20=a[0];this.m21=a[1];this.m22=a[2];break;default:this.err()}},"~N,~A");c(p,"getRow33", +function(b,a){switch(b){case 0:a[0]=this.m00;a[1]=this.m01;a[2]=this.m02;return;case 1:a[0]=this.m10;a[1]=this.m11;a[2]=this.m12;return;case 2:a[0]=this.m20;a[1]=this.m21;a[2]=this.m22;return}this.err()},"~N,~A");c(p,"setColumn33",function(b,a){switch(b){case 0:this.m00=a[0];this.m10=a[1];this.m20=a[2];break;case 1:this.m01=a[0];this.m11=a[1];this.m21=a[2];break;case 2:this.m02=a[0];this.m12=a[1];this.m22=a[2];break;default:this.err()}},"~N,~A");c(p,"getColumn33",function(b,a){switch(b){case 0:a[0]= +this.m00;a[1]=this.m10;a[2]=this.m20;break;case 1:a[0]=this.m01;a[1]=this.m11;a[2]=this.m21;break;case 2:a[0]=this.m02;a[1]=this.m12;a[2]=this.m22;break;default:this.err()}},"~N,~A");c(p,"add33",function(b){this.m00+=b.m00;this.m01+=b.m01;this.m02+=b.m02;this.m10+=b.m10;this.m11+=b.m11;this.m12+=b.m12;this.m20+=b.m20;this.m21+=b.m21;this.m22+=b.m22},"JU.M34");c(p,"sub33",function(b){this.m00-=b.m00;this.m01-=b.m01;this.m02-=b.m02;this.m10-=b.m10;this.m11-=b.m11;this.m12-=b.m12;this.m20-=b.m20;this.m21-= +b.m21;this.m22-=b.m22},"JU.M34");c(p,"mul33",function(b){this.m00*=b;this.m01*=b;this.m02*=b;this.m10*=b;this.m11*=b;this.m12*=b;this.m20*=b;this.m21*=b;this.m22*=b},"~N");c(p,"transpose33",function(){var b=this.m01;this.m01=this.m10;this.m10=b;b=this.m02;this.m02=this.m20;this.m20=b;b=this.m12;this.m12=this.m21;this.m21=b});c(p,"setXRot",function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=1;this.m10=this.m02=this.m01=0;this.m11=a;this.m12=-b;this.m20=0;this.m21=b;this.m22=a},"~N");c(p,"setYRot", +function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=a;this.m01=0;this.m02=b;this.m10=0;this.m11=1;this.m12=0;this.m20=-b;this.m21=0;this.m22=a},"~N");c(p,"setZRot",function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=a;this.m01=-b;this.m02=0;this.m10=b;this.m11=a;this.m21=this.m20=this.m12=0;this.m22=1},"~N");c(p,"determinant3",function(){return this.m00*(this.m11*this.m22-this.m21*this.m12)-this.m01*(this.m10*this.m22-this.m20*this.m12)+this.m02*(this.m10*this.m21-this.m20*this.m11)});c(p,"err", +function(){throw new ArrayIndexOutOfBoundsException("matrix column/row out of bounds");});u("JU");C(["JU.M34"],"JU.M3",["JU.T3"],function(){var b=H(JU,"M3",JU.M34,java.io.Serializable);b.newA9=c(b,"newA9",function(a){var d=new JU.M3;d.setA(a);return d},"~A");b.newM3=c(b,"newM3",function(a){var d=new JU.M3;if(null==a)return d.setScale(1),d;d.m00=a.m00;d.m01=a.m01;d.m02=a.m02;d.m10=a.m10;d.m11=a.m11;d.m12=a.m12;d.m20=a.m20;d.m21=a.m21;d.m22=a.m22;return d},"JU.M3");c(b,"setScale",function(a){this.clear33(); +this.m00=this.m11=this.m22=a},"~N");c(b,"setM3",function(a){this.setM33(a)},"JU.M34");c(b,"setA",function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m10=a[3];this.m11=a[4];this.m12=a[5];this.m20=a[6];this.m21=a[7];this.m22=a[8]},"~A");c(b,"setElement",function(a,d,g){this.set33(a,d,g)},"~N,~N,~N");c(b,"getElement",function(a,d){return this.get33(a,d)},"~N,~N");c(b,"setRow",function(a,d,g,b){switch(a){case 0:this.m00=d;this.m01=g;this.m02=b;break;case 1:this.m10=d;this.m11=g;this.m12=b;break; +case 2:this.m20=d;this.m21=g;this.m22=b;break;default:this.err()}},"~N,~N,~N,~N");c(b,"setRowV",function(a,d){switch(a){case 0:this.m00=d.x;this.m01=d.y;this.m02=d.z;break;case 1:this.m10=d.x;this.m11=d.y;this.m12=d.z;break;case 2:this.m20=d.x;this.m21=d.y;this.m22=d.z;break;default:this.err()}},"~N,JU.T3");c(b,"setRowA",function(a,d){this.setRow33(a,d)},"~N,~A");j(b,"getRow",function(a,d){this.getRow33(a,d)},"~N,~A");c(b,"setColumn3",function(a,d,g,b){switch(a){case 0:this.m00=d;this.m10=g;this.m20= +b;break;case 1:this.m01=d;this.m11=g;this.m21=b;break;case 2:this.m02=d;this.m12=g;this.m22=b;break;default:this.err()}},"~N,~N,~N,~N");c(b,"setColumnV",function(a,d){switch(a){case 0:this.m00=d.x;this.m10=d.y;this.m20=d.z;break;case 1:this.m01=d.x;this.m11=d.y;this.m21=d.z;break;case 2:this.m02=d.x;this.m12=d.y;this.m22=d.z;break;default:this.err()}},"~N,JU.T3");c(b,"getColumnV",function(a,d){switch(a){case 0:d.x=this.m00;d.y=this.m10;d.z=this.m20;break;case 1:d.x=this.m01;d.y=this.m11;d.z=this.m21; +break;case 2:d.x=this.m02;d.y=this.m12;d.z=this.m22;break;default:this.err()}},"~N,JU.T3");c(b,"setColumnA",function(a,d){this.setColumn33(a,d)},"~N,~A");c(b,"getColumn",function(a,d){this.getColumn33(a,d)},"~N,~A");c(b,"add",function(a){this.add33(a)},"JU.M3");c(b,"sub",function(a){this.sub33(a)},"JU.M3");c(b,"transpose",function(){this.transpose33()});c(b,"transposeM",function(a){this.setM33(a);this.transpose33()},"JU.M3");c(b,"invertM",function(a){this.setM33(a);this.invert()},"JU.M3");c(b,"invert", +function(){var a=this.determinant3();0!=a&&(a=1/a,this.set9(this.m11*this.m22-this.m12*this.m21,this.m02*this.m21-this.m01*this.m22,this.m01*this.m12-this.m02*this.m11,this.m12*this.m20-this.m10*this.m22,this.m00*this.m22-this.m02*this.m20,this.m02*this.m10-this.m00*this.m12,this.m10*this.m21-this.m11*this.m20,this.m01*this.m20-this.m00*this.m21,this.m00*this.m11-this.m01*this.m10),this.scale(a))});c(b,"setAsXRotation",function(a){this.setXRot(a);return this},"~N");c(b,"setAsYRotation",function(a){this.setYRot(a); +return this},"~N");c(b,"setAsZRotation",function(a){this.setZRot(a);return this},"~N");c(b,"scale",function(a){this.mul33(a)},"~N");c(b,"mul",function(a){this.mul2(this,a)},"JU.M3");c(b,"mul2",function(a,d){this.set9(a.m00*d.m00+a.m01*d.m10+a.m02*d.m20,a.m00*d.m01+a.m01*d.m11+a.m02*d.m21,a.m00*d.m02+a.m01*d.m12+a.m02*d.m22,a.m10*d.m00+a.m11*d.m10+a.m12*d.m20,a.m10*d.m01+a.m11*d.m11+a.m12*d.m21,a.m10*d.m02+a.m11*d.m12+a.m12*d.m22,a.m20*d.m00+a.m21*d.m10+a.m22*d.m20,a.m20*d.m01+a.m21*d.m11+a.m22*d.m21, +a.m20*d.m02+a.m21*d.m12+a.m22*d.m22)},"JU.M3,JU.M3");j(b,"equals",function(a){return!z(a,"JU.M3")?!1:this.m00==a.m00&&this.m01==a.m01&&this.m02==a.m02&&this.m10==a.m10&&this.m11==a.m11&&this.m12==a.m12&&this.m20==a.m20&&this.m21==a.m21&&this.m22==a.m22},"~O");j(b,"hashCode",function(){return JU.T3.floatToIntBits(this.m00)^JU.T3.floatToIntBits(this.m01)^JU.T3.floatToIntBits(this.m02)^JU.T3.floatToIntBits(this.m10)^JU.T3.floatToIntBits(this.m11)^JU.T3.floatToIntBits(this.m12)^JU.T3.floatToIntBits(this.m20)^ +JU.T3.floatToIntBits(this.m21)^JU.T3.floatToIntBits(this.m22)});c(b,"setZero",function(){this.clear33()});c(b,"set9",function(a,d,g,b,c,e,h,k,m){this.m00=a;this.m01=d;this.m02=g;this.m10=b;this.m11=c;this.m12=e;this.m20=h;this.m21=k;this.m22=m},"~N,~N,~N,~N,~N,~N,~N,~N,~N");j(b,"toString",function(){return"[\n ["+this.m00+"\t"+this.m01+"\t"+this.m02+"]\n ["+this.m10+"\t"+this.m11+"\t"+this.m12+"]\n ["+this.m20+"\t"+this.m21+"\t"+this.m22+"] ]"});c(b,"setAA",function(a){this.setAA33(a);return this}, +"JU.A4");c(b,"setAsBallRotation",function(a,d,g){var b=Math.sqrt(d*d+g*g),c=b*a;if(0==c)return this.setScale(1),!1;a=Math.cos(c);c=Math.sin(c);g=-g/b;d/=b;b=a-1;this.m00=1+b*g*g;this.m01=this.m10=b*g*d;this.m20=-(this.m02=c*g);this.m11=1+b*d*d;this.m21=-(this.m12=c*d);this.m22=a;return!0},"~N,~N,~N");c(b,"isRotation",function(){return 0.001>Math.abs(this.determinant3()-1)})});u("JU");C(["JU.M34"],"JU.M4",["JU.T3"],function(){var b=v(function(){this.m33=this.m32=this.m31=this.m30=this.m23=this.m13= +this.m03=0;r(this,arguments)},JU,"M4",JU.M34);b.newA16=c(b,"newA16",function(a){var d=new JU.M4;d.m00=a[0];d.m01=a[1];d.m02=a[2];d.m03=a[3];d.m10=a[4];d.m11=a[5];d.m12=a[6];d.m13=a[7];d.m20=a[8];d.m21=a[9];d.m22=a[10];d.m23=a[11];d.m30=a[12];d.m31=a[13];d.m32=a[14];d.m33=a[15];return d},"~A");b.newM4=c(b,"newM4",function(a){var d=new JU.M4;if(null==a)return d.setIdentity(),d;d.setToM3(a);d.m03=a.m03;d.m13=a.m13;d.m23=a.m23;d.m30=a.m30;d.m31=a.m31;d.m32=a.m32;d.m33=a.m33;return d},"JU.M4");b.newMV= +c(b,"newMV",function(a,d){var g=new JU.M4;g.setMV(a,d);return g},"JU.M3,JU.T3");c(b,"setZero",function(){this.clear33();this.m03=this.m13=this.m23=this.m30=this.m31=this.m32=this.m33=0});c(b,"setIdentity",function(){this.setZero();this.m00=this.m11=this.m22=this.m33=1});c(b,"setM4",function(a){this.setM33(a);this.m03=a.m03;this.m13=a.m13;this.m23=a.m23;this.m30=a.m30;this.m31=a.m31;this.m32=a.m32;this.m33=a.m33;return this},"JU.M4");c(b,"setMV",function(a,d){this.setM33(a);this.setTranslation(d); +this.m33=1},"JU.M3,JU.T3");c(b,"setToM3",function(a){this.setM33(a);this.m03=this.m13=this.m23=this.m30=this.m31=this.m32=0;this.m33=1},"JU.M34");c(b,"setToAA",function(a){this.setIdentity();this.setAA33(a)},"JU.A4");c(b,"setA",function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m03=a[3];this.m10=a[4];this.m11=a[5];this.m12=a[6];this.m13=a[7];this.m20=a[8];this.m21=a[9];this.m22=a[10];this.m23=a[11];this.m30=a[12];this.m31=a[13];this.m32=a[14];this.m33=a[15]},"~A");c(b,"setTranslation",function(a){this.m03= +a.x;this.m13=a.y;this.m23=a.z},"JU.T3");c(b,"setElement",function(a,d,g){if(3>a&&3>d)this.set33(a,d,g);else{(3a&&3>d)return this.get33(a,d);if(3a&&this.setRow33(a,d);switch(a){case 0:this.m03=d[3];return;case 1:this.m13=d[3];return;case 2:this.m23=d[3];return;case 3:this.m30=d[0];this.m31=d[1];this.m32=d[2];this.m33=d[3];return}this.err()},"~N,~A");j(b,"getRow",function(a,d){3>a&&this.getRow33(a,d);switch(a){case 0:d[3]=this.m03;return;case 1:d[3]=this.m13;return;case 2:d[3]=this.m23;return;case 3:d[0]=this.m30;d[1]=this.m31;d[2]=this.m32;d[3]=this.m33; +return}this.err()},"~N,~A");c(b,"setColumn4",function(a,d,g,b,c){0==a?(this.m00=d,this.m10=g,this.m20=b,this.m30=c):1==a?(this.m01=d,this.m11=g,this.m21=b,this.m31=c):2==a?(this.m02=d,this.m12=g,this.m22=b,this.m32=c):3==a?(this.m03=d,this.m13=g,this.m23=b,this.m33=c):this.err()},"~N,~N,~N,~N,~N");c(b,"setColumnA",function(a,d){3>a&&this.setColumn33(a,d);switch(a){case 0:this.m30=d[3];break;case 1:this.m31=d[3];break;case 2:this.m32=d[3];break;case 3:this.m03=d[0];this.m13=d[1];this.m23=d[2];this.m33= +d[3];break;default:this.err()}},"~N,~A");c(b,"getColumn",function(a,d){3>a&&this.getColumn33(a,d);switch(a){case 0:d[3]=this.m30;break;case 1:d[3]=this.m31;break;case 2:d[3]=this.m32;break;case 3:d[0]=this.m03;d[1]=this.m13;d[2]=this.m23;d[3]=this.m33;break;default:this.err()}},"~N,~A");c(b,"sub",function(a){this.sub33(a);this.m03-=a.m03;this.m13-=a.m13;this.m23-=a.m23;this.m30-=a.m30;this.m31-=a.m31;this.m32-=a.m32;this.m33-=a.m33},"JU.M4");c(b,"add",function(a){this.m03+=a.x;this.m13+=a.y;this.m23+= +a.z},"JU.T3");c(b,"transpose",function(){this.transpose33();var a=this.m03;this.m03=this.m30;this.m30=a;a=this.m13;this.m13=this.m31;this.m31=a;a=this.m23;this.m23=this.m32;this.m32=a});c(b,"invert",function(){var a=this.determinant4();if(0==a)return this;a=1/a;this.set(this.m11*(this.m22*this.m33-this.m23*this.m32)+this.m12*(this.m23*this.m31-this.m21*this.m33)+this.m13*(this.m21*this.m32-this.m22*this.m31),this.m21*(this.m02*this.m33-this.m03*this.m32)+this.m22*(this.m03*this.m31-this.m01*this.m33)+ +this.m23*(this.m01*this.m32-this.m02*this.m31),this.m31*(this.m02*this.m13-this.m03*this.m12)+this.m32*(this.m03*this.m11-this.m01*this.m13)+this.m33*(this.m01*this.m12-this.m02*this.m11),this.m01*(this.m13*this.m22-this.m12*this.m23)+this.m02*(this.m11*this.m23-this.m13*this.m21)+this.m03*(this.m12*this.m21-this.m11*this.m22),this.m12*(this.m20*this.m33-this.m23*this.m30)+this.m13*(this.m22*this.m30-this.m20*this.m32)+this.m10*(this.m23*this.m32-this.m22*this.m33),this.m22*(this.m00*this.m33-this.m03* +this.m30)+this.m23*(this.m02*this.m30-this.m00*this.m32)+this.m20*(this.m03*this.m32-this.m02*this.m33),this.m32*(this.m00*this.m13-this.m03*this.m10)+this.m33*(this.m02*this.m10-this.m00*this.m12)+this.m30*(this.m03*this.m12-this.m02*this.m13),this.m02*(this.m13*this.m20-this.m10*this.m23)+this.m03*(this.m10*this.m22-this.m12*this.m20)+this.m00*(this.m12*this.m23-this.m13*this.m22),this.m13*(this.m20*this.m31-this.m21*this.m30)+this.m10*(this.m21*this.m33-this.m23*this.m31)+this.m11*(this.m23*this.m30- +this.m20*this.m33),this.m23*(this.m00*this.m31-this.m01*this.m30)+this.m20*(this.m01*this.m33-this.m03*this.m31)+this.m21*(this.m03*this.m30-this.m00*this.m33),this.m33*(this.m00*this.m11-this.m01*this.m10)+this.m30*(this.m01*this.m13-this.m03*this.m11)+this.m31*(this.m03*this.m10-this.m00*this.m13),this.m03*(this.m11*this.m20-this.m10*this.m21)+this.m00*(this.m13*this.m21-this.m11*this.m23)+this.m01*(this.m10*this.m23-this.m13*this.m20),this.m10*(this.m22*this.m31-this.m21*this.m32)+this.m11*(this.m20* +this.m32-this.m22*this.m30)+this.m12*(this.m21*this.m30-this.m20*this.m31),this.m20*(this.m02*this.m31-this.m01*this.m32)+this.m21*(this.m00*this.m32-this.m02*this.m30)+this.m22*(this.m01*this.m30-this.m00*this.m31),this.m30*(this.m02*this.m11-this.m01*this.m12)+this.m31*(this.m00*this.m12-this.m02*this.m10)+this.m32*(this.m01*this.m10-this.m00*this.m11),this.m00*(this.m11*this.m22-this.m12*this.m21)+this.m01*(this.m12*this.m20-this.m10*this.m22)+this.m02*(this.m10*this.m21-this.m11*this.m20));this.scale(a); +return this});c(b,"set",function(a,d,g,b,c,e,h,k,m,x,j,q,y,s,G,M){this.m00=a;this.m01=d;this.m02=g;this.m03=b;this.m10=c;this.m11=e;this.m12=h;this.m13=k;this.m20=m;this.m21=x;this.m22=j;this.m23=q;this.m30=y;this.m31=s;this.m32=G;this.m33=M},"~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");c(b,"determinant4",function(){return(this.m00*this.m11-this.m01*this.m10)*(this.m22*this.m33-this.m23*this.m32)-(this.m00*this.m12-this.m02*this.m10)*(this.m21*this.m33-this.m23*this.m31)+(this.m00*this.m13- +this.m03*this.m10)*(this.m21*this.m32-this.m22*this.m31)+(this.m01*this.m12-this.m02*this.m11)*(this.m20*this.m33-this.m23*this.m30)-(this.m01*this.m13-this.m03*this.m11)*(this.m20*this.m32-this.m22*this.m30)+(this.m02*this.m13-this.m03*this.m12)*(this.m20*this.m31-this.m21*this.m30)});c(b,"scale",function(a){this.mul33(a);this.m03*=a;this.m13*=a;this.m23*=a;this.m30*=a;this.m31*=a;this.m32*=a;this.m33*=a},"~N");c(b,"mul",function(a){this.mul2(this,a)},"JU.M4");c(b,"mul2",function(a,d){this.set(a.m00* +d.m00+a.m01*d.m10+a.m02*d.m20+a.m03*d.m30,a.m00*d.m01+a.m01*d.m11+a.m02*d.m21+a.m03*d.m31,a.m00*d.m02+a.m01*d.m12+a.m02*d.m22+a.m03*d.m32,a.m00*d.m03+a.m01*d.m13+a.m02*d.m23+a.m03*d.m33,a.m10*d.m00+a.m11*d.m10+a.m12*d.m20+a.m13*d.m30,a.m10*d.m01+a.m11*d.m11+a.m12*d.m21+a.m13*d.m31,a.m10*d.m02+a.m11*d.m12+a.m12*d.m22+a.m13*d.m32,a.m10*d.m03+a.m11*d.m13+a.m12*d.m23+a.m13*d.m33,a.m20*d.m00+a.m21*d.m10+a.m22*d.m20+a.m23*d.m30,a.m20*d.m01+a.m21*d.m11+a.m22*d.m21+a.m23*d.m31,a.m20*d.m02+a.m21*d.m12+a.m22* +d.m22+a.m23*d.m32,a.m20*d.m03+a.m21*d.m13+a.m22*d.m23+a.m23*d.m33,a.m30*d.m00+a.m31*d.m10+a.m32*d.m20+a.m33*d.m30,a.m30*d.m01+a.m31*d.m11+a.m32*d.m21+a.m33*d.m31,a.m30*d.m02+a.m31*d.m12+a.m32*d.m22+a.m33*d.m32,a.m30*d.m03+a.m31*d.m13+a.m32*d.m23+a.m33*d.m33)},"JU.M4,JU.M4");c(b,"transform",function(a){this.transform2(a,a)},"JU.T4");c(b,"transform2",function(a,d){d.set4(this.m00*a.x+this.m01*a.y+this.m02*a.z+this.m03*a.w,this.m10*a.x+this.m11*a.y+this.m12*a.z+this.m13*a.w,this.m20*a.x+this.m21*a.y+ +this.m22*a.z+this.m23*a.w,this.m30*a.x+this.m31*a.y+this.m32*a.z+this.m33*a.w)},"JU.T4,JU.T4");c(b,"rotTrans",function(a){this.rotTrans2(a,a)},"JU.T3");c(b,"rotTrans2",function(a,d){d.set(this.m00*a.x+this.m01*a.y+this.m02*a.z+this.m03,this.m10*a.x+this.m11*a.y+this.m12*a.z+this.m13,this.m20*a.x+this.m21*a.y+this.m22*a.z+this.m23);return d},"JU.T3,JU.T3");c(b,"setAsXYRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m22=d;this.m23=-a;this.m32=a;this.m33=d;return this}, +"~N");c(b,"setAsYZRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m00=d;this.m03=-a;this.m30=a;this.m33=d;return this},"~N");c(b,"setAsXZRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m11=d;this.m13=-a;this.m31=a;this.m33=d;return this},"~N");j(b,"equals",function(a){return!z(a,"JU.M4")?!1:this.m00==a.m00&&this.m01==a.m01&&this.m02==a.m02&&this.m03==a.m03&&this.m10==a.m10&&this.m11==a.m11&&this.m12==a.m12&&this.m13==a.m13&&this.m20==a.m20&& +this.m21==a.m21&&this.m22==a.m22&&this.m23==a.m23&&this.m30==a.m30&&this.m31==a.m31&&this.m32==a.m32&&this.m33==a.m33},"~O");j(b,"hashCode",function(){return JU.T3.floatToIntBits(this.m00)^JU.T3.floatToIntBits(this.m01)^JU.T3.floatToIntBits(this.m02)^JU.T3.floatToIntBits(this.m03)^JU.T3.floatToIntBits(this.m10)^JU.T3.floatToIntBits(this.m11)^JU.T3.floatToIntBits(this.m12)^JU.T3.floatToIntBits(this.m13)^JU.T3.floatToIntBits(this.m20)^JU.T3.floatToIntBits(this.m21)^JU.T3.floatToIntBits(this.m22)^JU.T3.floatToIntBits(this.m23)^ +JU.T3.floatToIntBits(this.m30)^JU.T3.floatToIntBits(this.m31)^JU.T3.floatToIntBits(this.m32)^JU.T3.floatToIntBits(this.m33)});j(b,"toString",function(){return"[\n ["+this.m00+"\t"+this.m01+"\t"+this.m02+"\t"+this.m03+"]\n ["+this.m10+"\t"+this.m11+"\t"+this.m12+"\t"+this.m13+"]\n ["+this.m20+"\t"+this.m21+"\t"+this.m22+"\t"+this.m23+"]\n ["+this.m30+"\t"+this.m31+"\t"+this.m32+"\t"+this.m33+"] ]"});c(b,"round",function(a){this.m00=this.rnd(this.m00,a);this.m01=this.rnd(this.m01,a);this.m02=this.rnd(this.m02, +a);this.m03=this.rnd(this.m03,a);this.m10=this.rnd(this.m10,a);this.m11=this.rnd(this.m11,a);this.m12=this.rnd(this.m12,a);this.m13=this.rnd(this.m13,a);this.m20=this.rnd(this.m20,a);this.m21=this.rnd(this.m21,a);this.m22=this.rnd(this.m22,a);this.m23=this.rnd(this.m23,a);this.m30=this.rnd(this.m30,a);this.m31=this.rnd(this.m31,a);this.m32=this.rnd(this.m32,a);this.m33=this.rnd(this.m33,a);return this},"~N");c(b,"rnd",function(a,d){return Math.abs(a)g&&(g=a.length-d);try{this.os.write(a,d,g)}catch(b){if(!F(b,"java.io.IOException"))throw b;}this.byteCount+=g},"~A,~N,~N");j(b,"writeShort",function(a){this.isBigEndian()?(this.writeByteAsInt(a>>8),this.writeByteAsInt(a)):(this.writeByteAsInt(a),this.writeByteAsInt(a>> +8))},"~N");j(b,"writeLong",function(a){this.isBigEndian()?(this.writeInt(a>>32&4294967295),this.writeInt(a&4294967295)):(this.writeByteAsInt(a>>56),this.writeByteAsInt(a>>48),this.writeByteAsInt(a>>40),this.writeByteAsInt(a>>32),this.writeByteAsInt(a>>24),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>8),this.writeByteAsInt(a))},"~N");c(b,"cancel",function(){this.isCanceled=!0;this.closeChannel()});j(b,"closeChannel",function(){if(this.closed)return null;try{null!=this.bw?(this.bw.flush(),this.bw.close()): +null!=this.os&&(this.os.flush(),this.os.close()),null!=this.os0&&this.isCanceled&&(this.os0.flush(),this.os0.close())}catch(a){if(!F(a,Exception))throw a;}if(this.isCanceled)return this.closed=!0,null;if(null==this.fileName){if(this.$isBase64){var d=this.getBase64();null!=this.os0&&(this.os=this.os0,this.append(d));this.sb=new JU.SB;this.sb.append(d);this.$isBase64=!1;return this.closeChannel()}return null==this.sb?null:this.sb.toString()}this.closed=!0;if(!this.isLocalFile){d=this.postByteArray(); +if(null==d||d.startsWith("java.net"))this.byteCount=-1;return d}var g=d=null,d=self.J2S||Jmol,g="function"==typeof this.fileName?this.fileName:null;if(null!=d){var b=null==this.sb?this.toByteArray():this.sb.toString();null==g?d.doAjax(this.fileName,null,b,null==this.sb):d.applyFunc(this.fileName,b)}return null});c(b,"isBase64",function(){return this.$isBase64});c(b,"getBase64",function(){return JU.Base64.getBase64(this.toByteArray()).toString()});c(b,"toByteArray",function(){return null!=this.bytes? +this.bytes:z(this.os,"java.io.ByteArrayOutputStream")?this.os.toByteArray():null});c(b,"close",function(){this.closeChannel()});j(b,"toString",function(){if(null!=this.bw)try{this.bw.flush()}catch(a){if(!F(a,"java.io.IOException"))throw a;}return null!=this.sb?this.closeChannel():this.byteCount+" bytes"});c(b,"postByteArray",function(){var a=null==this.sb?this.toByteArray():this.sb.toString().getBytes();return this.bytePoster.postByteArray(this.fileName,a)});b.isRemote=c(b,"isRemote",function(a){if(null== +a)return!1;a=JU.OC.urlTypeIndex(a);return 0<=a&&4>a},"~S");b.isLocal=c(b,"isLocal",function(a){return null!=a&&!JU.OC.isRemote(a)},"~S");b.urlTypeIndex=c(b,"urlTypeIndex",function(a){if(null==a)return-2;for(var d=0;d>24),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>8),this.writeByteAsInt(a)):(this.writeByteAsInt(a),this.writeByteAsInt(a>> +8),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>24))},"~N");c(b,"writeFloat",function(a){this.writeInt(0==a?0:Float.floatToIntBits(a))},"~N");b.urlPrefixes=w(-1,"http: https: sftp: ftp: file: cache:".split(" "))});u("JU");C(["JU.T3"],"JU.P3",null,function(){var b=H(JU,"P3",JU.T3);b.newP=c(b,"newP",function(a){var d=new JU.P3;d.x=a.x;d.y=a.y;d.z=a.z;return d},"JU.T3");b.getUnlikely=c(b,"getUnlikely",function(){return null==JU.P3.unlikely?JU.P3.unlikely=JU.P3.new3(3.141592653589793,2.718281828459045, +8.539734222673566):JU.P3.unlikely});b.new3=c(b,"new3",function(a,d,g){var b=new JU.P3;b.x=a;b.y=d;b.z=g;return b},"~N,~N,~N");b.newA=c(b,"newA",function(a){return JU.P3.new3(a[0],a[1],a[2])},"~A");b.unlikely=null});u("JU");C(["JU.T3i"],"JU.P3i",null,function(){var b=H(JU,"P3i",JU.T3i);b.new3=c(b,"new3",function(a,d,g){var b=new JU.P3i;b.x=a;b.y=d;b.z=g;return b},"~N,~N,~N")});u("JU");C(["JU.T4"],"JU.P4",null,function(){var b=H(JU,"P4",JU.T4);b.new4=c(b,"new4",function(a,d,g,b){var c=new JU.P4;c.set4(a, +d,g,b);return c},"~N,~N,~N,~N");b.newPt=c(b,"newPt",function(a){var d=new JU.P4;d.set4(a.x,a.y,a.z,a.w);return d},"JU.P4");c(b,"distance4",function(a){var d=this.x-a.x,g=this.y-a.y,b=this.z-a.z;a=this.w-a.w;return Math.sqrt(d*d+g*g+b*b+a*a)},"JU.P4")});u("JU");C(null,"JU.PT",["java.util.Arrays","JU.AU","$.DF","$.SB"],function(){var b=H(JU,"PT",null);b.parseInt=c(b,"parseInt",function(a){return JU.PT.parseIntNext(a,E(-1,[0]))},"~S");b.parseIntNext=c(b,"parseIntNext",function(a,d){var g=a.length;return 0> +d[0]||d[0]>=g?-2147483648:JU.PT.parseIntChecked(a,g,d)},"~S,~A");b.parseIntChecked=c(b,"parseIntChecked",function(a,d,g){var b=!1,c=0,e=g[0];if(0>e)return-2147483648;for(var h;e=h;)c=10*c+(h-48),b=!0,++e;b?k&&(c=-c):c=-2147483648;g[0]=e;return c},"~S,~N,~A");b.isWhiteSpace=c(b,"isWhiteSpace",function(a,d){var g;return 0<=d&&(" "==(g=a.charAt(d))||"\t"==g||"\n"== +g)},"~S,~N");b.parseFloatChecked=c(b,"parseFloatChecked",function(a,d,g,b){var c=!1,e=g[0];if(b&&a.indexOf("\n")!=a.lastIndexOf("\n"))return NaN;for(;e=k;)m=10*m+1*(k-48),++e,c=!0;var j=!1,q=0,y=0==m?-1:0;if(46==k)for(j=!0;++e=k;){c=!0;if(0>y){if(48==k){y--;continue}y=-y}q=d)return NaN;k=a.charAt(e).charCodeAt(0);if(43==k&&++e>=d)return NaN;g[0]=e;e=JU.PT.parseIntChecked(a,d,g);if(-2147483648==e)return NaN;0e&&-e<=JU.PT.decimalScale.length?c*=JU.PT.decimalScale[-e-1]:0!=e&&(c*=Math.pow(10,e))}else g[0]=e;h&&(c=-c);Infinity==c&&(c=3.4028235E38); +return!b||(!m||j)&&JU.PT.checkTrailingText(a,g[0],d)?c:NaN},"~S,~N,~A,~B");b.checkTrailingText=c(b,"checkTrailingText",function(a,d,g){for(var b;dh?h=a.length:a=a.substring(0,h),d[0]+=h+1,a=JU.PT.getTokens(a),null==g&&(g=K(a.length,0)),e=JU.PT.parseFloatArrayInfested(a,g));if(null==g)return K(0,0);for(a=e;ab&&(d=b);return 0>g[0]||g[0]>=d?NaN:JU.PT.parseFloatChecked(a,d,g,!1)},"~S,~N,~A");b.parseFloatNext=c(b,"parseFloatNext",function(a,d){var g=null==a?-1:a.length;return 0>d[0]||d[0]>=g?NaN:JU.PT.parseFloatChecked(a,g,d,!1)},"~S,~A");b.parseFloatStrict=c(b,"parseFloatStrict",function(a){var d=a.length;return 0==d?NaN:JU.PT.parseFloatChecked(a,d,E(-1,[0]),!0)},"~S");b.parseFloat=c(b,"parseFloat",function(a){return JU.PT.parseFloatNext(a,E(-1,[0]))},"~S");b.parseIntRadix= +c(b,"parseIntRadix",function(a,d){return Integer.parseIntRadix(a,d)},"~S,~N");b.getTokens=c(b,"getTokens",function(a){return JU.PT.getTokensAt(a,0)},"~S");b.parseToken=c(b,"parseToken",function(a){return JU.PT.parseTokenNext(a,E(-1,[0]))},"~S");b.parseTrimmed=c(b,"parseTrimmed",function(a){return JU.PT.parseTrimmedRange(a,0,a.length)},"~S");b.parseTrimmedAt=c(b,"parseTrimmedAt",function(a,d){return JU.PT.parseTrimmedRange(a,d,a.length)},"~S,~N");b.parseTrimmedRange=c(b,"parseTrimmedRange",function(a, +d,g){var b=a.length;gd||d>g)return null;var b=JU.PT.countTokens(a,d),c=Array(b),e=E(1,0);e[0]=d;for(var h=0;hd[0]||d[0]>=g?null:JU.PT.parseTokenChecked(a,g,d)},"~S,~A");b.parseTokenRange=c(b,"parseTokenRange",function(a,d,g){var b=a.length;d>b&&(d=b);return 0>g[0]||g[0]>=d?null:JU.PT.parseTokenChecked(a,d,g)},"~S,~N,~A");b.parseTokenChecked=c(b,"parseTokenChecked",function(a,d, +g){for(var b=g[0];b=d&&JU.PT.isWhiteSpace(a,g);)--g;return gb&&(d=b);return 0>g[0]||g[0]>=d?-2147483648:JU.PT.parseIntChecked(a,d,g)},"~S,~N,~A");b.parseFloatArrayData=c(b,"parseFloatArrayData",function(a,d){JU.PT.parseFloatArrayDataN(a,d,d.length)},"~A,~A");b.parseFloatArrayDataN=c(b,"parseFloatArrayDataN",function(a,d,g){for(;0<=--g;)d[g]=g>=a.length?NaN:JU.PT.parseFloat(a[g])},"~A,~A,~N");b.split=c(b,"split",function(a, +d){if(0==a.length)return[];var g=1,b=a.indexOf(d),c,e=d.length;if(0>b||0==e)return c=Array(1),c[0]=a,c;for(var h=a.length-e;0<=b&&bg||0>(g=a.indexOf('"',g)))return"";for(var b=g+1,c=a.length;++gg||(g=g+d.length+1)>=a.length)return"";var b=a.charAt(g);switch(b.charCodeAt(0)){case 39:case 34:g++;break;default:b=" ",a+=" "}b=a.indexOf(b,g);return 0>b?null:a.substring(g, +b)},"~S,~S");b.getCSVString=c(b,"getCSVString",function(a,d){var g=d[1];if(0>g||0>(g=a.indexOf('"',g)))return null;for(var b=d[0]=g,c=a.length,e=!1,h=!1;++g=c)return d[1]=-1,null;d[1]=g+1;g=a.substring(b+1,g);return h?JU.PT.rep(JU.PT.rep(g,'""',"\x00"),"\x00",'"'):g},"~S,~A");b.isOneOf=c(b,"isOneOf",function(a,d){if(0==d.length)return!1;";"!=d.charAt(0)&&(d=";"+d+";");return 0>a.indexOf(";")&&0<=d.indexOf(";"+a+";")},"~S,~S"); +b.getQuotedAttribute=c(b,"getQuotedAttribute",function(a,d){var g=a.indexOf(d+"=");return 0>g?null:JU.PT.getQuotedStringAt(a,g)},"~S,~S");b.approx=c(b,"approx",function(a,d){return Math.round(a*d)/d},"~N,~N");b.rep=c(b,"rep",function(a,d,g){if(null==a||0==d.length||0>a.indexOf(d))return a;var b=0<=g.indexOf(d);do a=a.$replace(d,g);while(!b&&0<=a.indexOf(d));return a},"~S,~S,~S");b.formatF=c(b,"formatF",function(a,d,g,b,c){return JU.PT.formatS(JU.DF.formatDecimal(a,g),d,0,b,c)},"~N,~N,~N,~B,~B");b.formatD= +c(b,"formatD",function(a,d,g,b,c){return JU.PT.formatS(JU.DF.formatDecimal(a,-1-g),d,0,b,c)},"~N,~N,~N,~B,~B");b.formatS=c(b,"formatS",function(a,d,g,b,c){if(null==a)return"";var e=a.length;2147483647!=g&&0g&&0<=e+g&&(a=a.substring(e+g+1));g=d-a.length;if(0>=g)return a;d=c&&!b&&"-"==a.charAt(0);c=c?"0":" ";var h=d?"-":c,e=new JU.SB;b&&e.append(a);for(e.appendC(h);0<--g;)e.appendC(c);b||e.append(d?c+a.substring(1):a);return e.toString()},"~S,~N,~N,~B,~B");b.replaceWithCharacter= +c(b,"replaceWithCharacter",function(a,d,g){if(null==a)return null;for(var b=d.length;0<=--b;)a=a.$replace(d.charAt(b),g);return a},"~S,~S,~S");b.replaceAllCharacters=c(b,"replaceAllCharacters",function(a,d,g){for(var b=d.length;0<=--b;){var c=d.substring(b,b+1);a=JU.PT.rep(a,c,g)}return a},"~S,~S,~S");b.trim=c(b,"trim",function(a,d){if(null==a||0==a.length)return a;if(0==d.length)return a.trim();for(var g=a.length,b=0;bb&&0<=d.indexOf(a.charAt(g));)g--; +return a.substring(b,g+1)},"~S,~S");b.trimQuotes=c(b,"trimQuotes",function(a){return null!=a&&1g;g+=2)if(0<=a.indexOf('\\\\\tt\rr\nn""'.charAt(g))){d=!0;break}if(d)for(;10>g;){for(var d=-1,b='\\\\\tt\rr\nn""'.charAt(g++),c='\\\\\tt\rr\nn""'.charAt(g++),e=new JU.SB, +h=0;0<=(d=a.indexOf(b,d+1));)e.append(a.substring(h,d)).appendC("\\").appendC(c),h=d+1;e.append(a.substring(h,a.length));a=e.toString()}return'"'+JU.PT.escUnicode(a)+'"'},"~S");b.escUnicode=c(b,"escUnicode",function(a){for(var d=a.length;0<=--d;)if(127a.indexOf(".")&&(0>a.indexOf("e")&&0>a.indexOf("N")&& +0>a.indexOf("n"))&&(a+=".0");return a},"~N");b.join=c(b,"join",function(a,d,g){if(a.lengtha.indexOf("%")||0==h||0>a.indexOf(d))return a;var k="",m,x,j;for(m=0;0<=(x=a.indexOf("%",m))&&0<=(j=a.indexOf(d,x+1));)if(m!=x&&(k+=a.substring(m,x)),m=x+1,j>x+6)k+="%";else try{var q=!1;"-"==a.charAt(m)&& +(q=!0,++m);var y=!1;"0"==a.charAt(m)&&(y=!0,++m);for(var s,G=0;"0"<=(s=a.charAt(m))&&"9">=s;)G=10*G+(s.charCodeAt(0)-48),++m;var M=2147483647,N=!1;if("."==a.charAt(m)){++m;if("-"==(s=a.charAt(m)))N=!0,++m;if("0"<=(s=a.charAt(m))&&"9">=s)if(M=s.charCodeAt(0)-48,++m,"0"<=(s=a.charAt(m))&&"9">=s)M=10*M+(s.charCodeAt(0)-48),++m;N&&(M=-M)}if(a.substring(m,m+h).equals(d)){if(m+=h,Float.isNaN(b)?null!=g?k+=JU.PT.formatS(g,G,0>M?M-1:M,q,y):Double.isNaN(c)||(k+=JU.PT.formatD(c,G,M-1,q,y)):k+=JU.PT.formatF(b, +G,M,q,y),e)break}else m=x+1,k+="%"}catch(p){if(F(p,"IndexOutOfBoundsException")){m=x;break}else throw p;}return k+=a.substring(m)},"~S,~S,~S,~N,~N,~B");b.formatStringS=c(b,"formatStringS",function(a,d,g){return JU.PT.formatString(a,d,g,NaN,NaN,!1)},"~S,~S,~S");b.formatStringF=c(b,"formatStringF",function(a,d,g){return JU.PT.formatString(a,d,null,g,NaN,!1)},"~S,~S,~N");b.formatStringI=c(b,"formatStringI",function(a,d,g){return JU.PT.formatString(a,d,""+g,NaN,NaN,!1)},"~S,~S,~N");b.sprintf=c(b,"sprintf", +function(a,d,g){if(null==g)return a;var b=d.length;if(b==g.length)try{for(var c=0;ca.indexOf("p")&&0>a.indexOf("q"))return a;a=JU.PT.rep(a, +"%%","\u0001");a=JU.PT.rep(a,"%p","%6.2p");a=JU.PT.rep(a,"%q","%6.2q");a=JU.PT.split(a,"%");var d=new JU.SB;d.append(a[0]);for(var g=1;ga&&(a=0);return(a+" ").substring(0,d)},"~N,~N");b.isWild=c(b,"isWild",function(a){return null!=a&&(0<=a.indexOf("*")||0<=a.indexOf("?"))},"~S");b.isMatch=c(b,"isMatch",function(a,d,g,b){if(a.equals(d))return!0;var c=d.length;if(0==c)return!1;var e=g&&b?"*"==d.charAt(0):!1;if(1==c&&e)return!0;var h=g&&d.endsWith("*");if(!(0<=d.indexOf("?"))){if(e)return h? +3>c||0<=a.indexOf(d.substring(1,c-1)):a.endsWith(d.substring(1));if(h)return a.startsWith(d.substring(0,c-1))}for(var k=a.length,m="????",x=4;xk;){if(b&&"?"==d.charAt(g))++g;else if("?"!=d.charAt(g+c-1))return!1;--c}for(b=k;0<=--b;)if(c=d.charAt(g+b),"?"!=c&&(k=a.charAt(b),c!=k&&("\u0001"!=c||"?"!=k)))return!1;return!0},"~S,~S,~B,~B");b.replaceQuotedStrings=c(b,"replaceQuotedStrings",function(a, +d,g){for(var b=d.size(),c=0;c=a},"~S");b.isUpperCase=c(b,"isUpperCase",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a},"~S");b.isLowerCase= +c(b,"isLowerCase",function(a){a=a.charCodeAt(0);return 97<=a&&122>=a},"~S");b.isLetter=c(b,"isLetter",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a},"~S");b.isLetterOrDigit=c(b,"isLetterOrDigit",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a||48<=a&&57>=a},"~S");b.isWhitespace=c(b,"isWhitespace",function(a){a=a.charCodeAt(0);return 28<=a&&32>=a||9<=a&&13>=a},"~S");b.fixPtFloats=c(b,"fixPtFloats",function(a,d){a.x=Math.round(a.x*d)/d;a.y=Math.round(a.y*d)/d;a.z= +Math.round(a.z*d)/d},"JU.T3,~N");b.fixFloat=c(b,"fixFloat",function(a,d){return Math.round(a*d)/d},"~N,~N");b.fixDouble=c(b,"fixDouble",function(a,d){return Math.round(a*d)/d},"~N,~N");b.parseFloatFraction=c(b,"parseFloatFraction",function(a){var d=a.indexOf("/");return 0>d?JU.PT.parseFloat(a):JU.PT.parseFloat(a.substring(0,d))/JU.PT.parseFloat(a.substring(d+1))},"~S");b.tensScale=K(-1,[10,100,1E3,1E4,1E5,1E6]);b.decimalScale=K(-1,[0.1,0.01,0.001,1E-4,1E-5,1E-6,1E-7,1E-8,1E-9,1E-10,1E-11,1E-12,1E-13, +1E-14,1E-15])});u("JU");p=v(function(){this.s=this.sb=null;r(this,arguments)},JU,"SB",null);A(p,function(){this.s=""});p.newN=c(p,"newN",function(){return new JU.SB},"~N");p.newS=c(p,"newS",function(b){var a=new JU.SB;a.s=b;return a},"~S");c(p,"append",function(b){this.s+=b;return this},"~S");c(p,"appendC",function(b){this.s+=b;return this},"~S");c(p,"appendI",function(b){this.s+=b;return this},"~N");c(p,"appendB",function(b){this.s+=b;return this},"~B");c(p,"appendF",function(b){b=""+b;0>b.indexOf(".")&& +0>b.indexOf("e")&&(b+=".0");this.s+=b;return this},"~N");c(p,"appendD",function(b){b=""+b;0>b.indexOf(".")&&0>b.indexOf("e")&&(b+=".0");this.s+=b;return this},"~N");c(p,"appendSB",function(b){this.s+=b.s;return this},"JU.SB");c(p,"appendO",function(b){null!=b&&(this.s+=b.toString());return this},"~O");c(p,"appendCB",function(b,a,d){this.s+=b.slice(a,a+d).join("")},"~A,~N,~N");j(p,"toString",function(){return this.s});c(p,"length",function(){return this.s.length});c(p,"indexOf",function(b){return this.s.indexOf(b)}, +"~S");c(p,"charAt",function(b){return this.s.charAt(b)},"~N");c(p,"charCodeAt",function(b){return this.s.charCodeAt(b)},"~N");c(p,"setLength",function(b){this.s=this.s.substring(0,b)},"~N");c(p,"lastIndexOf",function(b){return this.s.lastIndexOf(b)},"~S");c(p,"indexOf2",function(b,a){return this.s.indexOf(b,a)},"~S,~N");c(p,"substring",function(b){return this.s.substring(b)},"~N");c(p,"substring2",function(b,a){return this.s.substring(b,a)},"~N,~N");c(p,"toBytes",function(b,a){return 0==a?Q(0,0): +(0>32});b.floatToIntBits=c(b,"floatToIntBits",function(a){return 0==a?0:Float.floatToIntBits(a)},"~N");j(b,"equals",function(a){return!z(a,"JU.T3")?!1:this.x==a.x&&this.y==a.y&&this.z==a.z},"~O");j(b,"toString",function(){return"{"+this.x+", "+this.y+", "+this.z+"}"});j(b,"toJSON",function(){return"["+this.x+","+this.y+","+this.z+"]"});c(b,"setP",function(a){this.set(a.x,a.y,a.z);return this},"JU.T3");c(b,"putP",function(a){a.set(this.x,this.y,this.z); +return a},"JU.T3")});u("JU");p=v(function(){this.z=this.y=this.x=0;r(this,arguments)},JU,"T3i",null,java.io.Serializable);c(p,"set",function(b,a,d){this.x=b;this.y=a;this.z=d},"~N,~N,~N");c(p,"setT",function(b){this.x=b.x;this.y=b.y;this.z=b.z},"JU.T3i");c(p,"add",function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z},"JU.T3i");c(p,"scaleAdd",function(b,a,d){this.x=b*a.x+d.x;this.y=b*a.y+d.y;this.z=b*a.z+d.z},"~N,JU.T3i,JU.T3i");j(p,"hashCode",function(){return this.x^this.y^this.z});j(p,"equals",function(b){return!z(b, +"JU.T3i")?!1:this.x==b.x&&this.y==b.y&&this.z==b.z},"~O");c(p,"asString",function(){return"("+this.x+", "+this.y+", "+this.z+")"});j(p,"toString",function(){return this.asString()});u("JU");C(["JU.T3"],"JU.T4",null,function(){var b=v(function(){this.w=0;r(this,arguments)},JU,"T4",JU.T3);c(b,"set4",function(a,d,g,b){this.x=a;this.y=d;this.z=g;this.w=b},"~N,~N,~N,~N");c(b,"scale4",function(a){this.scale(a);this.w*=a},"~N");j(b,"hashCode",function(){return JU.T3.floatToIntBits(this.x)^JU.T3.floatToIntBits(this.y)^ +JU.T3.floatToIntBits(this.z)^JU.T3.floatToIntBits(this.w)});j(b,"equals",function(a){return!z(a,"JU.T4")?!1:this.x==a.x&&this.y==a.y&&this.z==a.z&&this.w==a.w},"~O");j(b,"toString",function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"});j(b,"toJSON",function(){return"["+this.x+", "+this.y+", "+this.z+", "+this.w+"]"})});u("JU");C(["JU.T3"],"JU.V3",null,function(){var b=H(JU,"V3",JU.T3);b.newV=c(b,"newV",function(a){return JU.V3.new3(a.x,a.y,a.z)},"JU.T3");b.newVsub=c(b,"newVsub",function(a, +d){return JU.V3.new3(a.x-d.x,a.y-d.y,a.z-d.z)},"JU.T3,JU.T3");b.new3=c(b,"new3",function(a,d,g){var b=new JU.V3;b.x=a;b.y=d;b.z=g;return b},"~N,~N,~N");c(b,"angle",function(a){var d=this.y*a.z-this.z*a.y,g=this.z*a.x-this.x*a.z,b=this.x*a.y-this.y*a.x,d=Math.sqrt(d*d+g*g+b*b);return Math.abs(Math.atan2(d,this.dot(a)))},"JU.V3")});u("javajs.api");O(javajs.api,"GenericBinaryDocument",javajs.api.GenericBinaryDocumentReader);u("javajs.api");O(javajs.api,"GenericBinaryDocumentReader");u("javajs.api"); +O(javajs.api,"GenericZipTools");u("javajs.api");O(javajs.api,"GenericLineReader");u("javajs.api");O(javajs.api,"GenericCifDataParser");u("javajs.api");p=H(javajs.api,"Interface",null);p.getInterface=c(p,"getInterface",function(b){try{var a=fa._4Name(b);return null==a?null:a.newInstance()}catch(d){if(F(d,Exception))return System.out.println("Interface.java Error creating instance for "+b+": \n"+d),null;throw d;}},"~S");u("JU");p=v(function(){this.data=null;r(this,arguments)},JU,"BArray",null);A(p, +function(b){this.data=b},"~A");j(p,"equals",function(b){if(z(b,"JU.BArray")&&(b=b.data,b.length==this.data.length)){for(var a=0;ae;)Math.abs(c[g])>Math.abs(c[b])&&(b=g);if(b!=e){for(k=d;0<=--k;)g=this.LU[b][k],this.LU[b][k]=this.LU[e][k],this.LU[e][k]=g;k=this.piv[b];this.piv[b]=this.piv[e];this.piv[e]=k;this.pivsign=-this.pivsign}if((new Boolean(ee;)this.LU[g][e]/=this.LU[e][e]}},"~N,~N");c(b,"solve",function(a,d){for(var g=0;gb)return c.q0=-1,c;if(1a.m22?(b=Math.sqrt(1+g),d=(a.m02-a.m20)/b,g=(a.m10+a.m01)/b,c=(a.m21+a.m12)/b):(c=Math.sqrt(1+a.m22+a.m22-d),d=(a.m10-a.m01)/c,g=(a.m20+a.m02)/c,b=(a.m21+a.m12)/c);this.q0=0.5*d;this.q1=0.5*g;this.q2=0.5*b;this.q3=0.5*c},"JU.M3"); +c(b,"setRef",function(a){null==a?this.mul(this.getFixFactor()):0<=this.dot(a)||(this.q0*=-1,this.q1*=-1,this.q2*=-1,this.q3*=-1)},"JU.Quat");b.getQuaternionFrame=c(b,"getQuaternionFrame",function(a,d,g){d=JU.V3.newV(d);g=JU.V3.newV(g);null!=a&&(d.sub(a),g.sub(a));return JU.Quat.getQuaternionFrameV(d,g,null,!1)},"JU.P3,JU.T3,JU.T3");b.getQuaternionFrameV=c(b,"getQuaternionFrameV",function(a,d,g,b){null==g&&(g=new JU.V3,g.cross(a,d),b&&a.cross(d,g));d=new JU.V3;d.cross(g,a);a.normalize();d.normalize(); +g.normalize();b=new JU.M3;b.setColumnV(0,a);b.setColumnV(1,d);b.setColumnV(2,g);return JU.Quat.newM(b)},"JU.V3,JU.V3,JU.V3,~B");c(b,"getMatrix",function(){null==this.mat&&this.setMatrix();return this.mat});c(b,"setMatrix",function(){this.mat=new JU.M3;this.mat.m00=this.q0*this.q0+this.q1*this.q1-this.q2*this.q2-this.q3*this.q3;this.mat.m01=2*this.q1*this.q2-2*this.q0*this.q3;this.mat.m02=2*this.q1*this.q3+2*this.q0*this.q2;this.mat.m10=2*this.q1*this.q2+2*this.q0*this.q3;this.mat.m11=this.q0*this.q0- +this.q1*this.q1+this.q2*this.q2-this.q3*this.q3;this.mat.m12=2*this.q2*this.q3-2*this.q0*this.q1;this.mat.m20=2*this.q1*this.q3-2*this.q0*this.q2;this.mat.m21=2*this.q2*this.q3+2*this.q0*this.q1;this.mat.m22=this.q0*this.q0-this.q1*this.q1-this.q2*this.q2+this.q3*this.q3});c(b,"add",function(a){return JU.Quat.newVA(this.getNormal(),this.getTheta()+a)},"~N");c(b,"mul",function(a){return 1==a?JU.Quat.new4(this.q1,this.q2,this.q3,this.q0):JU.Quat.newVA(this.getNormal(),this.getTheta()*a)},"~N");c(b, +"mulQ",function(a){return JU.Quat.new4(this.q0*a.q1+this.q1*a.q0+this.q2*a.q3-this.q3*a.q2,this.q0*a.q2+this.q2*a.q0+this.q3*a.q1-this.q1*a.q3,this.q0*a.q3+this.q3*a.q0+this.q1*a.q2-this.q2*a.q1,this.q0*a.q0-this.q1*a.q1-this.q2*a.q2-this.q3*a.q3)},"JU.Quat");c(b,"divLeft",function(a){return this.inv().mulQ(a)},"JU.Quat");c(b,"dot",function(a){return this.q0*a.q0+this.q1*a.q1+this.q2*a.q2+this.q3*a.q3},"JU.Quat");c(b,"inv",function(){return JU.Quat.new4(-this.q1,-this.q2,-this.q3,this.q0)});c(b,"negate", +function(){return JU.Quat.new4(-this.q1,-this.q2,-this.q3,-this.q0)});c(b,"getFixFactor",function(){return 0>this.q0||0==this.q0&&(0>this.q1||0==this.q1&&(0>this.q2||0==this.q2&&0>this.q3))?-1:1});c(b,"getVector",function(a){return this.getVectorScaled(a,1)},"~N");c(b,"getVectorScaled",function(a,d){if(-1==a)return d*=this.getFixFactor(),JU.V3.new3(this.q1*d,this.q2*d,this.q3*d);null==this.mat&&this.setMatrix();var g=new JU.V3;this.mat.getColumnV(a,g);1!=d&&g.scale(d);return g},"~N,~N");c(b,"getNormal", +function(){var a=JU.Quat.getRawNormal(this);a.scale(this.getFixFactor());return a});b.getRawNormal=c(b,"getRawNormal",function(a){a=JU.V3.new3(a.q1,a.q2,a.q3);if(0==a.length())return JU.V3.new3(0,0,1);a.normalize();return a},"JU.Quat");c(b,"getTheta",function(){return 360*Math.acos(Math.abs(this.q0))/3.141592653589793});c(b,"getThetaRadians",function(){return 2*Math.acos(Math.abs(this.q0))});c(b,"getNormalDirected",function(a){var d=this.getNormal();0>d.x*a.x+d.y*a.y+d.z*a.z&&d.scale(-1);return d}, +"JU.V3");c(b,"get3dProjection",function(a){a.set(this.q1,this.q2,this.q3);return a},"JU.V3");c(b,"getThetaDirected",function(a){var d=this.getTheta(),g=this.getNormal();0>a.x*this.q1+a.y*this.q2+a.z*this.q3&&(g.scale(-1),d=-d);a.set4(g.x,g.y,g.z,d);return a},"JU.P4");c(b,"getThetaDirectedV",function(a){var d=this.getTheta(),g=this.getNormal();0>a.x*this.q1+a.y*this.q2+a.z*this.q3&&(g.scale(-1),d=-d);return d},"JU.V3");c(b,"toPoint4f",function(){return JU.P4.new4(this.q1,this.q2,this.q3,this.q0)}); +c(b,"toAxisAngle4f",function(){var a=2*Math.acos(Math.abs(this.q0)),d=Math.sin(a/2),g=this.getNormal();0>d&&(g.scale(-1),a=3.141592653589793-a);return JU.A4.newVA(g,a)});c(b,"transform2",function(a,d){null==this.mat&&this.setMatrix();this.mat.rotate2(a,d);return d},"JU.T3,JU.T3");c(b,"leftDifference",function(a){a=0>this.dot(a)?a.negate():a;return this.inv().mulQ(a)},"JU.Quat");c(b,"rightDifference",function(a){a=0>this.dot(a)?a.negate():a;return this.mulQ(a.inv())},"JU.Quat");j(b,"toString",function(){return"{"+ +this.q1+" "+this.q2+" "+this.q3+" "+this.q0+"}"});c(b,"div",function(a){return this.mulQ(a.inv())},"JU.Quat");b.arrayDiv=c(b,"arrayDiv",function(a,d,g,b){var c;if(null==a||null==d||0==(c=Math.min(a.length,d.length)))return null;0g&&(c=g);g=Array(c);for(var e=0;eg&&0!=c;)e=JU.Quat.newMean(a,e),d[0]=JU.Quat.stdDev(a,e),b=Math.abs(d[0]-c),c=d[0];return e},"~A,~A,~N");b.simpleAverage=c(b,"simpleAverage",function(a){var d=JU.V3.new3(0,0,1),g=a[0].getNormal();d.add(g);for(var b=a.length;0<=--b;)d.add(a[b].getNormalDirected(d));d.sub(g);d.normalize();for(var c=0,b=a.length;0<=--b;)c+=Math.abs(a[b].get3dProjection(g).dot(d));0!=c&&d.scale(c/a.length);c=Math.sqrt(1-d.lengthSquared()); +Float.isNaN(c)&&(c=0);return JU.Quat.newP4(JU.P4.new4(d.x,d.y,d.z,c))},"~A");b.newMean=c(b,"newMean",function(a,d){for(var g=new JU.V3,b,c,e=a.length;0<=--e;)b=a[e],c=b.div(d),b=c.getNormal(),b.scale(c.getTheta()),g.add(b);g.scale(1/a.length);return JU.Quat.newVA(g,g.length()).mulQ(d)},"~A,JU.Quat");b.stdDev=c(b,"stdDev",function(a,d){for(var g=0,b=a.length,c=b;0<=--c;)var e=a[c].div(d).getTheta(),g=g+e*e;return Math.sqrt(g/b)},"~A,JU.Quat");c(b,"getEulerZYZ",function(){var a,d,g;if(0==this.q1&&0== +this.q2)return a=this.getTheta(),K(-1,[0>this.q3?-a:a,0,0]);a=Math.atan2(2*(this.q2*this.q3+this.q0*this.q1),2*(-this.q1*this.q3+this.q0*this.q2));d=Math.acos(this.q3*this.q3-this.q2*this.q2-this.q1*this.q1+this.q0*this.q0);g=Math.atan2(2*(this.q2*this.q3-this.q0*this.q1),2*(this.q0*this.q2+this.q1*this.q3));return K(-1,[a/0.017453292519943295,d/0.017453292519943295,g/0.017453292519943295])});c(b,"getEulerZXZ",function(){var a,d,g;if(0==this.q1&&0==this.q2)return a=this.getTheta(),K(-1,[0>this.q3? +-a:a,0,0]);a=Math.atan2(2*(this.q1*this.q3-this.q0*this.q2),2*(this.q0*this.q1+this.q2*this.q3));d=Math.acos(this.q3*this.q3-this.q2*this.q2-this.q1*this.q1+this.q0*this.q0);g=Math.atan2(2*(this.q1*this.q3+this.q0*this.q2),2*(-this.q2*this.q3+this.q0*this.q1));return K(-1,[a/0.017453292519943295,d/0.017453292519943295,g/0.017453292519943295])});b.qZero=new JU.P4});u("JU");C(["java.io.BufferedReader","javajs.api.GenericLineReader"],"JU.Rdr","java.io.BufferedInputStream $.ByteArrayInputStream $.InputStreamReader $.StringReader JU.AU $.Base64 $.Encoding $.SB".split(" "), +function(){var b=v(function(){this.reader=null;r(this,arguments)},JU,"Rdr",null,javajs.api.GenericLineReader);A(b,function(a){this.reader=a},"java.io.BufferedReader");j(b,"readNextLine",function(){return this.reader.readLine()});b.readCifData=c(b,"readCifData",function(a,g){return a.set(null,g,!1).getAllCifData()},"javajs.api.GenericCifDataParser,java.io.BufferedReader");b.fixUTF=c(b,"fixUTF",function(a){var g=JU.Rdr.getUTFEncoding(a);if(g!==JU.Encoding.NONE)try{var b=String.instantialize(a,g.name().$replace("_", +"-"));switch(g){case JU.Encoding.UTF8:case JU.Encoding.UTF_16BE:case JU.Encoding.UTF_16LE:b=b.substring(1)}return b}catch(c){if(F(c,"java.io.UnsupportedEncodingException"))System.out.println(c);else throw c;}return String.instantialize(a)},"~A");b.getUTFEncoding=c(b,"getUTFEncoding",function(a){return 3<=a.length&&239==(a[0]&255)&&187==(a[1]&255)&&191==(a[2]&255)?JU.Encoding.UTF8:4<=a.length&&0==(a[0]&255)&&0==(a[1]&255)&&254==(a[2]&255)&&255==(a[3]&255)?JU.Encoding.UTF_32BE:4<=a.length&&255==(a[0]& +255)&&254==(a[1]&255)&&0==(a[2]&255)&&0==(a[3]&255)?JU.Encoding.UTF_32LE:2<=a.length&&255==(a[0]&255)&&254==(a[1]&255)?JU.Encoding.UTF_16LE:2<=a.length&&254==(a[0]&255)&&255==(a[1]&255)?JU.Encoding.UTF_16BE:JU.Encoding.NONE},"~A");b.getUTFEncodingForStream=c(b,"getUTFEncodingForStream",function(a){a.resetStream();var g=Q(4,0);g[3]=1;try{a.mark(5)}catch(b){if(F(b,Exception))return JU.Encoding.NONE;throw b;}a.read(g,0,4);a.reset();return JU.Rdr.getUTFEncoding(g)},"java.io.BufferedInputStream");b.isBase64= +c(b,"isBase64",function(a){return 0==a.indexOf(";base64,")},"JU.SB");b.isCompoundDocumentS=c(b,"isCompoundDocumentS",function(a){return JU.Rdr.isCompoundDocumentB(JU.Rdr.getMagic(a,8))},"java.io.InputStream");b.isCompoundDocumentB=c(b,"isCompoundDocumentB",function(a){return 8<=a.length&&208==(a[0]&255)&&207==(a[1]&255)&&17==(a[2]&255)&&224==(a[3]&255)&&161==(a[4]&255)&&177==(a[5]&255)&&26==(a[6]&255)&&225==(a[7]&255)},"~A");b.isBZip2S=c(b,"isBZip2S",function(a){return JU.Rdr.isBZip2B(JU.Rdr.getMagic(a, +3))},"java.io.InputStream");b.isGzipS=c(b,"isGzipS",function(a){return JU.Rdr.isGzipB(JU.Rdr.getMagic(a,2))},"java.io.InputStream");b.isBZip2B=c(b,"isBZip2B",function(a){return null!=a&&3<=a.length&&66==(a[0]&255)&&90==(a[1]&255)&&104==(a[2]&255)},"~A");b.isGzipB=c(b,"isGzipB",function(a){return null!=a&&2<=a.length&&31==(a[0]&255)&&139==(a[1]&255)},"~A");b.isPickleS=c(b,"isPickleS",function(a){return JU.Rdr.isPickleB(JU.Rdr.getMagic(a,2))},"java.io.InputStream");b.isPickleB=c(b,"isPickleB",function(a){return null!= +a&&2<=a.length&&125==(a[0]&255)&&113==(a[1]&255)},"~A");b.isMessagePackS=c(b,"isMessagePackS",function(a){return JU.Rdr.isMessagePackB(JU.Rdr.getMagic(a,2))},"java.io.InputStream");b.isMessagePackB=c(b,"isMessagePackB",function(a){var g;return null!=a&&1<=a.length&&(222==(g=a[0]&255)||128==(g&224)&&80!=a[1])},"~A");b.isPngZipStream=c(b,"isPngZipStream",function(a){return JU.Rdr.isPngZipB(JU.Rdr.getMagic(a,55))},"java.io.InputStream");b.isPngZipB=c(b,"isPngZipB",function(a){return 0==a[50]&&80==a[51]&& +78==a[52]&&71==a[53]&&74==a[54]},"~A");b.isZipS=c(b,"isZipS",function(a){return JU.Rdr.isZipB(JU.Rdr.getMagic(a,4))},"java.io.InputStream");b.isZipB=c(b,"isZipB",function(a){return 4<=a.length&&80==a[0]&&75==a[1]&&3==a[2]&&4==a[3]},"~A");b.getMagic=c(b,"getMagic",function(a,g){var b=264a.length?-1:a[1]){case 0:return"image/jpg";case 73:return"image/gif";case 77:return"image/BMP";case 80:return"image/png";default:return"image/unknown"}},"~A");b.getBIS=c(b,"getBIS",function(a){return new java.io.BufferedInputStream(new java.io.ByteArrayInputStream(a))},"~A");b.getBR=c(b,"getBR",function(a){return new java.io.BufferedReader(new java.io.StringReader(a))}, +"~S");b.getUnzippedInputStream=c(b,"getUnzippedInputStream",function(a,g){for(;JU.Rdr.isGzipS(g);)g=new java.io.BufferedInputStream(a.newGZIPInputStream(g));return g},"javajs.api.GenericZipTools,java.io.BufferedInputStream");b.getUnzippedInputStreamBZip2=c(b,"getUnzippedInputStreamBZip2",function(a,g){for(;JU.Rdr.isBZip2S(g);)g=new java.io.BufferedInputStream(a.newBZip2InputStream(g));return g},"javajs.api.GenericZipTools,java.io.BufferedInputStream");b.getBytesFromSB=c(b,"getBytesFromSB",function(a){return JU.Rdr.isBase64(a)? +JU.Base64.decodeBase64(a.substring(8)):a.toBytes(0,-1)},"JU.SB");b.getStreamAsBytes=c(b,"getStreamAsBytes",function(a,g){for(var b=Q(1024,0),c=null==g?Q(4096,0):null,e=0,h=0;0<(e=a.read(b,0,1024));)h+=e,null==g?(h>=c.length&&(c=JU.AU.ensureLengthByte(c,2*h)),System.arraycopy(b,0,c,h-e,e)):g.write(b,0,e);a.close();return null==g?JU.AU.arrayCopyByte(c,h):h+" bytes"},"java.io.BufferedInputStream,JU.OC");b.getBufferedReader=c(b,"getBufferedReader",function(a,g){if(JU.Rdr.getUTFEncodingForStream(a)=== +JU.Encoding.NONE)return new JU.Rdr.StreamReader(a,g);var b=JU.Rdr.getLimitedStreamBytes(a,-1);a.close();return JU.Rdr.getBR(null==g?JU.Rdr.fixUTF(b):String.instantialize(b,g))},"java.io.BufferedInputStream,~S");b.getLimitedStreamBytes=c(b,"getLimitedStreamBytes",function(a,g){var b=0g?g:1024,c=Q(b,0),e=Q(0>g?4096:g,0),h=0,k=0;for(0>g&&(g=2147483647);ke.length&&(e=JU.AU.ensureLengthByte(e,2*k)),System.arraycopy(c,0,e,k-h,h),2147483647!=g&&k+b>e.length&&(b=e.length- +k);if(k==e.length)return e;c=Q(k,0);System.arraycopy(e,0,c,0,k);return c},"java.io.InputStream,~N");b.streamToUTF8String=c(b,"streamToUTF8String",function(a){var g=Array(1);try{JU.Rdr.readAllAsString(JU.Rdr.getBufferedReader(a,"UTF-8"),-1,!0,g,0)}catch(b){if(!F(b,"java.io.IOException"))throw b;}return g[0]},"java.io.BufferedInputStream");b.readAllAsString=c(b,"readAllAsString",function(a,g,b,c,e){try{var h=JU.SB.newN(8192),k;if(0>g){if(k=a.readLine(),b||null!=k&&0>k.indexOf("\x00")&&(4!=k.length|| +65533!=k.charAt(0).charCodeAt(0)||1!=k.indexOf("PNG")))for(h.append(k).appendC("\n");null!=(k=a.readLine());)h.append(k).appendC("\n")}else{b=0;for(var m;bg?a:a.substring(0,g)},"~S");b.isTar=c(b,"isTar",function(a){a=JU.Rdr.getMagic(a,264);return-1==a[264]&&117==(a[257]&255)&&115==(a[258]&255)&&116==(a[259]&255)&&97==(a[260]&255)&&114==(a[261]&255)},"java.io.BufferedInputStream");b.streamToBytes=c(b,"streamToBytes",function(a){var g=JU.Rdr.getLimitedStreamBytes(a,-1);a.close();return g},"java.io.InputStream");b.streamToString= +c(b,"streamToString",function(a){return String.instantialize(JU.Rdr.streamToBytes(a))},"java.io.InputStream");b.isBinary=c(b,"isBinary",function(a,g){var b=JU.Rdr.getMagic(a,g);if(-1==JU.Rdr.b264[264])for(var c=0;cb[c])return!0;return!1},"java.io.BufferedInputStream,~N");var a=v(function(){this.stream=null;r(this,arguments)},JU.Rdr,"StreamReader",java.io.BufferedReader);A(a,function(a,g){L(this,JU.Rdr.StreamReader,[new java.io.InputStreamReader(a,null==g?"UTF-8":g)]);this.stream=a},"java.io.BufferedInputStream,~S"); +c(a,"getStream",function(){try{this.stream.reset()}catch(a){if(!F(a,"java.io.IOException"))throw a;}return this.stream});b.b264=null});u("JU");p=v(function(){this.z=this.y=this.x=0;r(this,arguments)},JU,"T3d",null,java.io.Serializable);c(p,"set",function(b,a,d){this.x=b;this.y=a;this.z=d},"~N,~N,~N");c(p,"setA",function(b){this.x=b[0];this.y=b[1];this.z=b[2]},"~A");c(p,"setT",function(b){this.x=b.x;this.y=b.y;this.z=b.z},"JU.T3d");c(p,"add2",function(b,a){this.x=b.x+a.x;this.y=b.y+a.y;this.z=b.z+ +a.z},"JU.T3d,JU.T3d");c(p,"add",function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z},"JU.T3d");c(p,"sub2",function(b,a){this.x=b.x-a.x;this.y=b.y-a.y;this.z=b.z-a.z},"JU.T3d,JU.T3d");c(p,"sub",function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z},"JU.T3d");c(p,"scale",function(b){this.x*=b;this.y*=b;this.z*=b},"~N");c(p,"scaleAdd",function(b,a,d){this.x=b*a.x+d.x;this.y=b*a.y+d.y;this.z=b*a.z+d.z},"~N,JU.T3d,JU.T3d");c(p,"scaleAdd2",function(b,a,d){this.x=b*a.x+d.x;this.y=b*a.y+d.y;this.z=b*a.z+d.z},"~N,JU.T3d,JU.T3d"); +j(p,"hashCode",function(){var b=JU.T3d.doubleToLongBits0(this.x),a=JU.T3d.doubleToLongBits0(this.y),d=JU.T3d.doubleToLongBits0(this.z);return b^b>>32^a^a>>32^d^d>>32});p.doubleToLongBits0=c(p,"doubleToLongBits0",function(b){return 0==b?0:Double.doubleToLongBits(b)},"~N");j(p,"equals",function(b){return!z(b,"JU.T3d")?!1:this.x==b.x&&this.y==b.y&&this.z==b.z},"~O");j(p,"toString",function(){return"{"+this.x+", "+this.y+", "+this.z+"}"});u("JU");C(["JU.T3d"],"JU.V3d",null,function(){var b=H(JU,"V3d", +JU.T3d);c(b,"cross",function(a,d){this.set(a.y*d.z-a.z*d.y,a.z*d.x-a.x*d.z,a.x*d.y-a.y*d.x)},"JU.V3d,JU.V3d");c(b,"normalize",function(){var a=this.length();this.x/=a;this.y/=a;this.z/=a});c(b,"angle",function(a){var d=this.y*a.z-this.z*a.y,g=this.z*a.x-this.x*a.z,b=this.x*a.y-this.y*a.x,d=Math.sqrt(d*d+g*g+b*b);return Math.abs(Math.atan2(d,this.dot(a)))},"JU.V3d");c(b,"dot",function(a){return this.x*a.x+this.y*a.y+this.z*a.z},"JU.V3d");c(b,"lengthSquared",function(){return this.x*this.x+this.y*this.y+ +this.z*this.z});c(b,"length",function(){return Math.sqrt(this.lengthSquared())})});u("J.adapter.readers.molxyz");C(["J.adapter.smarter.AtomSetCollectionReader"],"J.adapter.readers.molxyz.MolReader","java.util.Hashtable JU.BS $.Lst $.PT J.adapter.smarter.Atom J.api.JmolAdapter JU.Logger".split(" "),function(){var b=v(function(){this.haveAtomSerials=!1;this.allow2D=!0;this.iatom0=0;this.vr=null;this.atomCount=0;this.bsDeleted=this.atomData=null;this.is3D=this.fixN=this.haveNonzeroZ=!1;this.nC=this.nH= +this.nDouble=0;r(this,arguments)},J.adapter.readers.molxyz,"MolReader",J.adapter.smarter.AtomSetCollectionReader);j(b,"initializeReader",function(){this.fixN=this.checkFilterKey("FIXN")});j(b,"checkLine",function(){var a=this.line.startsWith("$MDL");if(a){if(this.discardLinesUntilStartsWith("$HDR"),this.rd(),null==this.line)return JU.Logger.warn("$HDR not found in MDL RG file"),this.continuing=!1}else if(this.line.equals("M END"))return!0;if(this.doGetModel(++this.modelNumber,null)&&(this.iatom0= +this.asc.ac,this.processMolSdHeader(),this.processCtab(a),this.vr=null,this.isLastModel(this.modelNumber)))return this.continuing=!1;null!=this.line&&0>this.line.indexOf("$$$$")&&this.discardLinesUntilStartsWith("$$$$");return!0});j(b,"finalizeSubclassReader",function(){this.finalizeReaderMR()});c(b,"finalizeReaderMR",function(){this.fixN&&this.addJmolScript("{search('[Nv4+0,nv4+0]')}.formalCharge=1;{search('{[Ov1-0]}[Nv4+1,nv4+1]')}.formalCharge=-1;");this.check2D3D();null!=this.bsDeleted&&this.asc.getBSAtoms(-1).andNot(this.bsDeleted); +this.isTrajectory=!1;this.finalizeReaderASCR()});c(b,"check2D3D",function(){this.haveNonzeroZ?this.is2D&&(this.is2D=this.optimize2D=!1):!this.is2D&&!this.is3D&&(0b?c=this.line.substring(31).trim(): +(c=this.line.substring(31,34).trim(),c.equals("H1")&&(c="H",x=1),39<=b&&(b=this.parseIntRange(this.line,36,39),1<=b&&7>=b&&(m=4-b),b=this.parseIntRange(this.line,34,36),0!=b&&(-3<=b&&4>=b)&&(x=J.api.JmolAdapter.getNaturalIsotope(J.api.JmolAdapter.getElementNumber(c))+b),-2147483648==j&&this.haveAtomSerials&&(j=g+1)));this.addMolAtom(j,x,c,m,e,h,k)}this.asc.setModelInfoForSet("dimension",this.is2D?"2D":"3D",this.asc.iSet);this.rd();this.line.startsWith("V ")&&this.readAtomValues();0==d&&this.asc.setNoAutoBond(); +for(g=0;g")?this.readMolData(g,c):this.line.startsWith("M ISO")?this.readIsotopes():this.rd();null!=this.atomData&&(e=g.get("atom_value_name"),g.put(null==e?"atom_values":e.toString(),this.atomData));g.isEmpty()||(this.asc.setCurrentModelInfo("molDataKeys",c),this.asc.setCurrentModelInfo("molData",g))},"~N,~N");c(b,"readAtomValues",function(){this.atomData=Array(this.atomCount);for(var a=this.atomData.length;0<=--a;)this.atomData[a]="";for(;0== +this.line.indexOf("V ");){a=this.parseIntAt(this.line,3);if(1>a||a>this.atomCount){JU.Logger.error("V nnn does not evalute to a valid atom number: "+a);break}var d=this.line.substring(6).trim();this.atomData[a-1]=d;this.rd()}});c(b,"readIsotopes",function(){var a=this.parseIntAt(this.line,6);try{for(var d=this.asc.getLastAtomSetAtomIndex(),g=0,b=9;g <").toLowerCase(),c="",e=null;null!=this.rd()&&!this.line.equals("$$$$")&&0=this.desiredVibrationNumber?this.doGetModel(this.modelNumber,null): +this.doGetVibration(this.vibrationNumber)){this.rd();this.checkCurrentLineForScript();this.asc.newAtomSet();var d=this.line.trim();this.readAtoms(a);this.applySymmetryAndSetTrajectory();this.asc.setAtomSetName(d);if(this.isLastModel(this.modelNumber))return this.continuing=!1}else this.skipAtomSet(a);this.discardLinesUntilNonBlank();return!1});j(b,"finalizeSubclassReader",function(){this.isTrajectory=!1;this.finalizeReaderASCR()});c(b,"skipAtomSet",function(a){for(this.rd();0<=--a;)this.rd()},"~N"); +c(b,"readAtoms",function(a){for(var d=0;dg.length)JU.Logger.warn("line cannot be read for XYZ atom data: "+this.line);else{var b=this.addAtomXYZSymName(g,1,null,null);this.setElementAndIsotope(b,g[0]);var c=4;switch(g.length){case 4:continue;case 5:case 6:case 8:case 9:if(0<=g[4].indexOf("."))b.partialCharge=this.parseFloatStr(g[4]);else{var e=this.parseIntStr(g[4]);-2147483648!=e&&(b.formalCharge=e)}switch(g.length){case 5:continue;case 6:b.radius=this.parseFloatStr(g[5]); +continue;case 9:b.atomSerial=this.parseIntStr(g[8])}c++;default:var e=this.parseFloatStr(g[c++]),h=this.parseFloatStr(g[c++]),g=this.parseFloatStr(g[c++]);if(Float.isNaN(e)||Float.isNaN(h)||Float.isNaN(g))continue;this.asc.addVibrationVector(b.index,e,h,g)}}}},"~N")});u("J.adapter.smarter");C(["JU.P3"],"J.adapter.smarter.Atom",["JU.AU","$.Lst","$.V3"],function(){var b=v(function(){this.index=this.atomSetIndex=0;this.bsSymmetry=null;this.atomSite=0;this.elementSymbol=null;this.elementNumber=-1;this.atomName= +null;this.formalCharge=-2147483648;this.partialCharge=NaN;this.vib=null;this.bfactor=NaN;this.foccupancy=1;this.radius=NaN;this.isHetero=!1;this.atomSerial=-2147483648;this.chainID=0;this.bondingRadius=NaN;this.altLoc="\x00";this.group3=null;this.sequenceNumber=-2147483648;this.insertionCode="\x00";this.tensors=this.anisoBorU=null;this.isNegDisorder=!1;this.typeSymbol=null;r(this,arguments)},J.adapter.smarter,"Atom",JU.P3,Cloneable);A(b,function(){L(this,J.adapter.smarter.Atom,[]);this.set(NaN,NaN, +NaN)});c(b,"addTensor",function(a,d,g){if(null==a)return null;if(g||null==this.tensors)this.tensors=new JU.Lst;this.tensors.addLast(a);null!=d&&a.setType(d);return a},"JU.Tensor,~S,~B");c(b,"getClone",function(){var a;try{a=this.clone()}catch(d){if(F(d,"CloneNotSupportedException"))return null;throw d;}null!=this.vib&&(a.vib=z(this.vib,"JU.Vibration")?this.vib.clone():JU.V3.newV(a.vib));null!=this.anisoBorU&&(a.anisoBorU=JU.AU.arrayCopyF(this.anisoBorU,-1));if(null!=this.tensors){a.tensors=new JU.Lst; +for(var g=this.tensors.size();0<=--g;)a.tensors.addLast(this.tensors.get(g).copyTensor())}return a});c(b,"getElementSymbol",function(){if(null==this.elementSymbol&&null!=this.atomName){for(var a=this.atomName.length,d=0,g=String.fromCharCode(0);d=a&&0>J.adapter.smarter.Atom.elementCharMasks[a.charCodeAt(0)-65]},"~S");b.isValidSym2=c(b,"isValidSym2",function(a,d){return"A"<=a&&"Z">=a&&"a"<=d&&"z">=d&&0!=(J.adapter.smarter.Atom.elementCharMasks[a.charCodeAt(0)-65]>>d.charCodeAt(0)-97&1)},"~S,~S");b.isValidSymNoCase=c(b,"isValidSymNoCase",function(a,d){return J.adapter.smarter.Atom.isValidSym2(a,"a">d?String.fromCharCode(d.charCodeAt(0)+ +32):d)},"~S,~S");b.isValidSymChar1=c(b,"isValidSymChar1",function(a){return"A"<=a&&"Z">=a&&0!=J.adapter.smarter.Atom.elementCharMasks[a.charCodeAt(0)-65]},"~S");c(b,"copyTo",function(a,d){var g=d.newCloneAtom(this);g.setT(a);return g},"JU.P3,J.adapter.smarter.AtomSetCollection");b.elementCharMasks=E(-1,[1972292,-2147351151,-2146019271,-2130706430,1441792,-2147348464,25,-2147205008,-2147344384,0,-2147352576,1179905,548936,-2147434213,-2147221504,-2145759221,0,1056947,-2147339946,-2147477097,-2147483648, +-2147483648,-2147483648,8388624,-2147483646,139264])});u("J.adapter.smarter");C(["J.api.JmolAdapterAtomIterator"],"J.adapter.smarter.AtomIterator",["J.api.JmolAdapter"],function(){var b=v(function(){this.iatom=0;this.atom=null;this.ac=0;this.bsAtoms=this.atoms=null;r(this,arguments)},J.adapter.smarter,"AtomIterator",null,J.api.JmolAdapterAtomIterator);A(b,function(a){this.ac=a.ac;this.atoms=a.atoms;this.bsAtoms=a.bsAtoms;this.iatom=0},"J.adapter.smarter.AtomSetCollection");j(b,"hasNext",function(){if(this.iatom== +this.ac)return!1;for(;null==(this.atom=this.atoms[this.iatom++])||null!=this.bsAtoms&&!this.bsAtoms.get(this.atom.index);)if(this.iatom==this.ac)return!1;this.atoms[this.iatom-1]=null;return!0});j(b,"getAtomSetIndex",function(){return this.atom.atomSetIndex});j(b,"getSymmetry",function(){return this.atom.bsSymmetry});j(b,"getAtomSite",function(){return this.atom.atomSite+1});j(b,"getUniqueID",function(){return Integer.$valueOf(this.atom.index)});j(b,"getElementNumber",function(){return 0>7})}); +u("J.adapter.smarter");C(["java.util.Hashtable"],"J.adapter.smarter.AtomSetCollection","java.util.Collections $.Properties JU.AU $.BS $.Lst $.P3 $.V3 J.adapter.smarter.Atom $.Bond $.SmarterJmolAdapter J.api.Interface JU.BSUtil $.Logger JV.JC".split(" "),function(){var b=v(function(){this.atoms=this.atomSetInfo=this.collectionName=this.fileTypeName=this.bsAtoms=this.reader=null;this.ac=0;this.bonds=null;this.bondCount=0;this.structures=null;this.atomSetCount=this.structureCount=0;this.iSet=-1;this.errorMessage= +this.atomSetAuxiliaryInfo=this.atomSetBondCounts=this.atomSetAtomCounts=this.atomSetAtomIndexes=this.atomSetNumbers=null;this.isTrajectory=this.coordinatesAreFractional=!1;this.trajectoryStepCount=0;this.trajectoryNames=this.vibrationSteps=this.trajectorySteps=null;this.allowMultiple=this.doFixPeriodic=!1;this.readerList=null;this.atomMapAnyCase=!1;this.fixedSite=0;this.bsStructuredModels=null;this.haveAnisou=!1;this.baseSymmetryAtomCount=0;this.crystalReaderLatticeOpsOnly=!1;this.xtalSymmetry=null; +this.bondIndex0=0;this.atomSymbolicMap=null;this.haveUnitCell=!1;this.vibScale=0;this.firstAtomToBond=-1;r(this,arguments)},J.adapter.smarter,"AtomSetCollection",null);P(b,function(){this.atomSetInfo=new java.util.Hashtable;this.atoms=Array(256);this.bonds=Array(256);this.structures=Array(16);this.atomSetNumbers=E(16,0);this.atomSetAtomIndexes=E(16,0);this.atomSetAtomCounts=E(16,0);this.atomSetBondCounts=E(16,0);this.atomSetAuxiliaryInfo=Array(16);this.atomSymbolicMap=new java.util.Hashtable});A(b, +function(a,d,g,b){this.fileTypeName=a;this.reader=d;this.allowMultiple=null==d||0>d.desiredVibrationNumber;a=new java.util.Properties;a.put("PATH_KEY",".PATH");a.put("PATH_SEPARATOR",J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR);this.setInfo("properties",a);null!=d&&(a=d.htParams.get("appendToModelIndex"),null!=a&&this.setInfo("appendToModelIndex",a),a=d.htParams.get("fixedSite"),null!=a&&(this.fixedSite=a.intValue()));if(null!=g){d=0;this.readerList=new JU.Lst;for(b=0;b=a)){for(var d=Array(a),g=0a?this.iSet+ +1:1E6*(a+1)+d.atomSetNumbers[e]}for(b=0;ba[b].atomSetIndex)return;g[a[b].atomSetIndex].addLast(a[b])}for(b=this.atomSetCount;0<=--b;)for(var c=g[b].size();0<=--c;)a[--d]=g[b].get(c)},"~A,~N");c(b,"reverseObject",function(a){for(var d=this.atomSetCount,g=B(d/2);0<=--g;)JU.AU.swap(a,g,d-1-g)},"~A");b.reverseList=c(b,"reverseList",function(a){null!=a&&java.util.Collections.reverse(a)},"JU.Lst");c(b,"reverseArray",function(a){for(var d=this.atomSetCount,g=B(d/2);0<=--g;)JU.AU.swapInt(a, +g,d-1-g)},"~A");c(b,"getList",function(a){var d;for(d=this.ac;0<=--d&&!(null!=this.atoms[d]&&"\x00"!=(a?this.atoms[d].altLoc:this.atoms[d].insertionCode)););if(!(0>d)){var g=Array(this.atomSetCount);for(d=0;dg[b=this.atoms[d].atomSetIndex].indexOf(c))g[b]+=c}a=a?"altLocs":"insertionCodes";for(d=0;dthis.iSet)){var a=this.atomSetAtomIndexes[this.iSet];null!=this.bsAtoms&&this.bsAtoms.clearBits(a, +this.ac);this.ac=a;this.atomSetAtomCounts[this.iSet]=0;this.iSet--;this.atomSetCount--;this.reader.doCheckUnitCell=!1}});c(b,"getHydrogenAtomCount",function(){for(var a=0,d=0;da.atomIndex1||0>a.atomIndex2||0>a.order||a.atomIndex1==a.atomIndex2||this.atoms[a.atomIndex1].atomSetIndex!=this.atoms[a.atomIndex2].atomSetIndex?JU.Logger.debugging&&JU.Logger.debug(">>>>>>BAD BOND:"+a.atomIndex1+"-"+a.atomIndex2+" order="+a.order):this.addBondNoCheck(a))},"J.adapter.smarter.Bond");c(b,"addBondNoCheck",function(a){this.bondCount==this.bonds.length&&(this.bonds= +JU.AU.arrayCopyObject(this.bonds,this.bondCount+1024));this.bonds[this.bondCount++]=a;this.atomSetBondCounts[this.iSet]++},"J.adapter.smarter.Bond");c(b,"finalizeStructures",function(){if(0!=this.structureCount){this.bsStructuredModels=new JU.BS;for(var a=new java.util.Hashtable,d=0;da-d;)a+=1;return a},"~N,~N");c(b,"finalizeTrajectoryAs",function(a,d){this.trajectorySteps=a;this.vibrationSteps=d;this.trajectoryStepCount=a.size();this.finalizeTrajectory()},"JU.Lst,JU.Lst");c(b,"finalizeTrajectory",function(){if(0!=this.trajectoryStepCount){var a=this.trajectorySteps.get(0),d=null==this.vibrationSteps?null:this.vibrationSteps.get(0),g=null==this.bsAtoms?this.ac:this.bsAtoms.cardinality();if(null!=this.vibrationSteps&& +null!=d&&d.lengththis.atomSetNumbers.length&&(this.atomSetAtomIndexes=JU.AU.doubleLengthI(this.atomSetAtomIndexes),this.atomSetAtomCounts=JU.AU.doubleLengthI(this.atomSetAtomCounts),this.atomSetBondCounts=JU.AU.doubleLengthI(this.atomSetBondCounts),this.atomSetAuxiliaryInfo=JU.AU.doubleLength(this.atomSetAuxiliaryInfo)); +this.atomSetAtomIndexes[this.iSet]=this.ac;this.atomSetCount+this.trajectoryStepCount>this.atomSetNumbers.length&&(this.atomSetNumbers=JU.AU.doubleLengthI(this.atomSetNumbers));this.isTrajectory?this.atomSetNumbers[this.iSet+this.trajectoryStepCount]=this.atomSetCount+this.trajectoryStepCount:this.atomSetNumbers[this.iSet]=this.atomSetCount;a&&this.clearMap();this.setCurrentModelInfo("title",this.collectionName)},"~B");c(b,"clearMap",function(){this.atomSymbolicMap.clear();this.atomMapAnyCase=!1}); +c(b,"getAtomSetAtomIndex",function(a){return this.atomSetAtomIndexes[a]},"~N");c(b,"getAtomSetAtomCount",function(a){return this.atomSetAtomCounts[a]},"~N");c(b,"getAtomSetBondCount",function(a){return this.atomSetBondCounts[a]},"~N");c(b,"setAtomSetName",function(a){if(null!=a)if(this.isTrajectory)this.setTrajectoryName(a);else{var d=0>this.iSet?null:this.getAtomSetName(this.iSet);this.setModelInfoForSet("name",a,this.iSet);null!=this.reader&&(0g&&(g=this.iSet);var b=this.getAtomSetAuxiliaryInfoValue(g,"atomProperties");null==b&&this.setModelInfoForSet("atomProperties",b=new java.util.Hashtable,g);b.put(a,d)},"~S,~O,~N,~B");c(b,"setAtomSetPartialCharges",function(a){if(!this.atomSetAuxiliaryInfo[this.iSet].containsKey(a))return!1;a=this.getAtomSetAuxiliaryInfoValue(this.iSet,a);for(var d=a.size();0<=--d;)this.atoms[d].partialCharge=a.get(d).floatValue();return!0},"~S");c(b,"getAtomSetAuxiliaryInfoValue",function(a,d){return this.atomSetAuxiliaryInfo[0<= +a?a:this.iSet].get(d)},"~N,~S");c(b,"setCurrentModelInfo",function(a,d){this.setModelInfoForSet(a,d,this.iSet)},"~S,~O");c(b,"setModelInfoForSet",function(a,d,g){0>g||(null==this.atomSetAuxiliaryInfo[g]&&(this.atomSetAuxiliaryInfo[g]=new java.util.Hashtable),null==d?this.atomSetAuxiliaryInfo[g].remove(a):this.atomSetAuxiliaryInfo[g].put(a,d))},"~S,~O,~N");c(b,"getAtomSetNumber",function(a){return this.atomSetNumbers[a>=this.atomSetCount?0:a]},"~N");c(b,"getAtomSetName",function(a){if(null!=this.trajectoryNames&& +a=this.atomSetCount&&(a=this.atomSetCount-1);return this.getAtomSetAuxiliaryInfoValue(a,"name")},"~N");c(b,"getAtomSetAuxiliaryInfo",function(a){a=a>=this.atomSetCount?this.atomSetCount-1:a;return 0>a?null:this.atomSetAuxiliaryInfo[a]},"~N");c(b,"setAtomSetEnergy",function(a,d){0>this.iSet||(JU.Logger.info("Energy for model "+(this.iSet+1)+" = "+a),this.setCurrentModelInfo("EnergyString",a),this.setCurrentModelInfo("Energy",Float.$valueOf(d)), +this.setAtomSetModelProperty("Energy",""+d))},"~S,~N");c(b,"setAtomSetFrequency",function(a,d,g,b,c){this.setAtomSetModelProperty("FreqValue",b);b+=" "+(null==c?"cm^-1":c);c=(null==g?"":g+" ")+b;this.setAtomSetName(c);this.setAtomSetModelProperty("Frequency",b);this.setAtomSetModelProperty("Mode",""+a);this.setModelInfoForSet("vibrationalMode",Integer.$valueOf(a),this.iSet);null!=g&&this.setAtomSetModelProperty("FrequencyLabel",g);this.setAtomSetModelProperty(".PATH",(null==d?"":d+J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR+ +"Frequencies")+"Frequencies");return c},"~N,~S,~S,~S,~S");c(b,"getBondList",function(){for(var a=Array(this.bondCount),d=0;d=b;)a.add(this.atoms[c]);a.scale(1/g);for(c=b+g;--c>= +b;)this.atoms[c].sub(a)}});c(b,"mergeTrajectories",function(a){if(this.isTrajectory&&a.isTrajectory&&null==this.vibrationSteps){for(var d=0;da?this.ac:a));return this.bsAtoms}, +"~N");c(b,"setBSAtomsForSet",function(a){if(null!=this.bsAtoms){0>a&&(a=this.iSet);var d=this.atomSetAtomIndexes[a];0>this.bsAtoms.nextSetBit(d)&&this.bsAtoms.setBits(d,d+this.atomSetAtomCounts[a])}},"~N");c(b,"fix2Stereo",function(){this.getBSAtoms(-1);for(var a=this.bondCount;0<=--a;){var d=this.bonds[a];this.atoms[d.atomIndex2].elementSymbol.equals("H")&&1025!=d.order&&1041!=d.order&&this.atoms[d.atomIndex1].elementSymbol.equals("C")?this.bsAtoms.clear(d.atomIndex2):this.atoms[d.atomIndex1].elementSymbol.equals("H")&& +this.atoms[d.atomIndex2].elementSymbol.equals("C")&&this.bsAtoms.clear(d.atomIndex1)}})});u("J.adapter.smarter");C(["javajs.api.GenericLineReader","JU.SB","JV.Viewer"],"J.adapter.smarter.AtomSetCollectionReader","JU.BS $.Lst $.M3 $.P3 $.PT $.Quat $.V3 J.adapter.smarter.Atom $.AtomSetCollection J.api.Interface $.JmolAdapter JU.BSUtil $.Logger $.SimpleUnitCell JV.FileManager $.JC".split(" "),function(){var b=v(function(){this.requiresBSFilter=this.debugging=this.isBinary=!1;this.dssr=this.validation= +this.domains=this.trajectorySteps=this.htParams=this.readerName=this.binaryDoc=this.reader=this.asc=this.primitiveToCrystal=null;this.isConcatenated=!1;this.lstNCS=this.thisBiomolecule=this.addedDataKey=this.addedData=null;this.floatifyJavaDouble=!0;this.next=this.prevline=this.line=null;this.ptLine=0;this.checkNearAtoms=!0;this.fillRange=this.latticeCells=this.latticeType=null;this.iHaveSymmetryOperators=this.iHaveUnitCell=this.doProcessLines=!1;this.continuing=!0;this.vwr=null;this.isMolecular= +this.is2D=this.noMinimize=this.noHydrogens=this.optimize2D=this.isSequential=this.getHeader=this.doCheckUnitCell=this.applySymmetryToBonds=this.isTrajectory=this.ignoreFileSymmetryOperators=this.doApplySymmetry=!1;this.vibrationNumber=this.modelNumber=this.templateAtomCount=0;this.desiredVibrationNumber=-2147483648;this.bsModels=null;this.havePartialChargeFilter=this.useFileModelNumbers=!1;this.calculationType="?";this.sgName=null;this.ignoreFileSpaceGroupName=this.ignoreFileUnitCell=!1;this.unitCellParams= +null;this.desiredModelNumber=-2147483648;this.out=this.symmetry=null;this.doPackUnitCell=this.iHaveFractionalCoordinates=!1;this.ptSupercell=null;this.forcePacked=this.mustFinalizeModelSet=!1;this.packingRange=null;this.cellSlop=1E-4;this.isPrimitive=this.rotateHexCell=!1;this.modDim=0;this.highprecision0=this.lowPrecision=!1;this.loadNote=null;this.merging=this.fileCoordinatesAreFractional=this.doConvertToFractional=!1;this.symmetryRange=0;this.firstLastStep=null;this.lastModelNumber=2147483647; +this.desiredSpaceGroupIndex=-1;this.latticeScaling=NaN;this.unitCellOffset=null;this.unitCellOffsetFractional=!1;this.paramsLattice=this.moreUnitCellInfo=null;this.paramsPacked=this.paramsCentroid=!1;this.fileName=this.filePath=this.fileOffsetFractional=this.fileOffset=this.fileScaling=null;this.baseBondIndex=this.baseAtomIndex=0;this.stateScriptVersionInt=2147483647;this.isSUPERCELL=this.noPack=this.isFinalized=!1;this.precision=0;this.haveModel=!1;this.previousUnitCell=this.previousSpaceGroup=null; +this.nMatrixElements=0;this.filterCased=this.filter=this.bsFilter=this.matUnitCellOrientation=this.ucItems=null;this.filterAtomType=this.filterAtomName=this.filterChain=this.filterGroup3=this.filterAltLoc=this.haveAtomFilter=!1;this.filterAtomTypeStr=null;this.filterAtomNameTerminator=";";this.filterEveryNth=this.filterAllHetero=this.filterHetero=this.filterElement=!1;this.filterSymop=null;this.nFiltered=this.filterN=0;this.reverseModels=this.doReadMolecularOrbitals=this.allowPDBFilter=this.isDSSP1= +this.ignoreStructure=this.useAltNames=this.addVibrations=this.doCentralize=this.doSetOrientation=!1;this.nameRequired=null;this.centroidPacked=this.doCentroidUnitCell=!1;this.strSupercell=null;this.filteredPrecision=this.fixUnitCell=this.polymerX=this.slabXY=this.allow_a_len_1=!1;this.ms=this.matRot=this.filter2Cased=this.filter1Cased=this.filter2=this.filter1=null;this.vibsFractional=!1;this.siteScript=this.previousScript=null;r(this,arguments)},J.adapter.smarter,"AtomSetCollectionReader",null,javajs.api.GenericLineReader); +P(b,function(){this.next=E(1,0);this.highprecision0=JV.Viewer.isHighPrecision;this.loadNote=new JU.SB});c(b,"getPackingRangeValue",function(a){return null!=this.packingRange?this.packingRange.floatValue():0!=a?a:0.02},"~N");c(b,"setup",function(a,d,g){this.setupASCR(a,d,g)},"~S,java.util.Map,~O");c(b,"setupASCR",function(a,d,g){null!=a&&(this.debugging=JU.Logger.debugging,this.htParams=d,this.filePath=JV.FileManager.stripTypePrefix(""+d.get("fullPathName")),a=this.filePath.lastIndexOf("/"),this.fileName= +this.filePath.substring(a+1),z(g,"java.io.BufferedReader")?this.reader=g:z(g,"javajs.api.GenericBinaryDocument")&&(this.binaryDoc=g))},"~S,java.util.Map,~O");c(b,"readData",function(){this.initialize();this.asc=new J.adapter.smarter.AtomSetCollection(this.readerName,this,null,null);try{this.initializeReader();if(null==this.binaryDoc)for(null==this.line&&this.continuing&&this.rd();null!=this.line&&this.continuing;)this.checkLine()&&this.rd();else this.binaryDoc.setOutputChannel(this.out),this.processBinaryDocument(); +this.finalizeSubclassReader();this.isFinalized||this.finalizeReaderASCR()}catch(a){JU.Logger.info("Reader error: "+a),a.printStackTrace(),this.setError(a)}null!=this.reader&&this.reader.close();null!=this.binaryDoc&&this.binaryDoc.close();return this.finish()});c(b,"fixBaseIndices",function(){try{var a=this.htParams.get("baseModelIndex");if(null!=a){var d=a.intValue();this.baseAtomIndex+=this.asc.ac;this.baseBondIndex+=this.asc.bondCount;d+=this.asc.atomSetCount;this.htParams.put("baseAtomIndex", +Integer.$valueOf(this.baseAtomIndex));this.htParams.put("baseBondIndex",Integer.$valueOf(this.baseBondIndex));this.htParams.put("baseModelIndex",Integer.$valueOf(d))}}catch(g){if(!F(g,Exception))throw g;}});c(b,"readDataObject",function(a){this.initialize();this.asc=new J.adapter.smarter.AtomSetCollection(this.readerName,this,null,null);this.initializeReader();this.processDOM(a);return this.finish()},"~O");c(b,"processDOM",function(){},"~O");c(b,"processBinaryDocument",function(){});c(b,"initializeReader", +function(){});c(b,"checkLine",function(){return!0});c(b,"checkLastModel",function(){if(this.isLastModel(this.modelNumber)&&this.doProcessLines)return this.continuing=this.doProcessLines=!1;this.doProcessLines=!1;return!0});c(b,"isLastModel",function(a){return 0=this.lastModelNumber},"~N");c(b,"appendLoadNote",function(a){null==a?this.loadNote=new JU.SB:(this.loadNote.append(a).append("\n"),JU.Logger.info(a))},"~S");c(b,"initializeTrajectoryFile",function(){this.asc.addAtom(new J.adapter.smarter.Atom); +this.trajectorySteps=this.htParams.get("trajectorySteps");null==this.trajectorySteps&&this.htParams.put("trajectorySteps",this.trajectorySteps=new JU.Lst)});c(b,"finalizeSubclassReader",function(){});c(b,"finalizeReaderASCR",function(){this.isFinalized=!0;if(0g&&(g=d.indexOf("metadata"));0<=g&&(d=d.substring(0,g));d=JU.PT.rep(JU.PT.replaceAllCharacters(d,"{}","").trim(),"\n","\n ")+"\n\nUse SHOW DOMAINS for details.";this.appendLoadNote("\nDomains loaded:\n "+ +d);for(d=this.asc.atomSetCount;0<=--d;)a=this.asc.getAtomSetAuxiliaryInfo(d),a.put("domains",this.domains)}if(null!=this.validation)for(d=this.asc.atomSetCount;0<=--d;)a=this.asc.getAtomSetAuxiliaryInfo(d),a.put("validation",this.validation);if(null!=this.dssr){a.put("dssrJSON",Boolean.TRUE);for(d=this.asc.atomSetCount;0<=--d;)a=this.asc.getAtomSetAuxiliaryInfo(d),a.put("dssr",this.dssr)}}}this.floatifyJavaDouble||this.asc.setInfo("highPrecision",Boolean.TRUE);this.setLoadNote()});c(b,"setLoadNote", +function(){var a=this.loadNote.toString();0this.asc.bsAtoms.nextSetBit(0))&&0>d.indexOf("DataOnly")&&null==this.asc.atomSetInfo.get("dataOnly"))return"No atoms found\nfor file "+this.filePath+"\ntype "+a;this.fixBaseIndices();return this.asc});c(b,"setError",function(a){var d=a.getMessage();this.asc.errorMessage=null==this.line?"Error reading file at end of file \n"+d:"Error reading file at line "+this.ptLine+":\n"+this.line+"\n"+d;a.printStackTrace()},"Throwable");c(b,"initialize",function(){this.htParams.containsKey("baseAtomIndex")&& +(this.baseAtomIndex=this.htParams.get("baseAtomIndex").intValue());this.htParams.containsKey("baseBondIndex")&&(this.baseBondIndex=this.htParams.get("baseBondIndex").intValue());this.initializeSymmetry();this.vwr=this.htParams.remove("vwr");this.htParams.containsKey("stateScriptVersionInt")&&(this.stateScriptVersionInt=this.htParams.get("stateScriptVersionInt").intValue());this.packingRange=this.htParams.get("packingRange");var a=null!=this.htParams.get("highPrecision");null==this.packingRange&&a&& +(this.floatifyJavaDouble=!1,this.packingRange=Float.$valueOf(1E-4));this.merging=this.htParams.containsKey("merging");this.getHeader=this.htParams.containsKey("getHeader");this.isSequential=this.htParams.containsKey("isSequential");this.readerName=this.htParams.get("readerName");this.htParams.containsKey("outputChannel")&&(this.out=this.htParams.get("outputChannel"));this.htParams.containsKey("vibrationNumber")?this.desiredVibrationNumber=this.htParams.get("vibrationNumber").intValue():this.htParams.containsKey("modelNumber")&& +(this.desiredModelNumber=this.htParams.get("modelNumber").intValue());this.applySymmetryToBonds=this.htParams.containsKey("applySymmetryToBonds");this.bsFilter=this.requiresBSFilter?this.htParams.get("bsFilter"):null;this.setFilter(null);this.fillRange=this.htParams.get("fillRange");this.paramsLattice=this.htParams.get("lattice");a=this.htParams.get("supercell");this.noPack=this.checkFilterKey("NOPACK");null!=this.strSupercell&&!this.noPack&&(this.forcePacked=!0);z(a,"JU.P3")?(a=this.ptSupercell= +a,1!=a.length()&&(this.strSupercell=D(a.x)+"a,"+D(a.y)+"b,"+D(a.z)+"c",this.isSUPERCELL=!0)):"string"==typeof a&&(this.strSupercell=a,this.isSUPERCELL=!0);a=this.htParams.containsKey("ptFile")?this.htParams.get("ptFile").intValue():-1;this.isTrajectory=this.htParams.containsKey("isTrajectory");0this.firstLastStep[0]&& +(this.firstLastStep[0]=0);if(0==this.firstLastStep[2]||this.firstLastStep[1]this.firstLastStep[2]&&(this.firstLastStep[2]=1);this.bsModels=JU.BSUtil.newAndSetBit(this.firstLastStep[0]);if(this.firstLastStep[1]>this.firstLastStep[0])for(a=this.firstLastStep[0];a<=this.firstLastStep[1];a+=this.firstLastStep[2])this.bsModels.set(a)}if(null!=this.bsModels&&(null==this.firstLastStep||-1!=this.firstLastStep[1]))this.lastModelNumber=this.bsModels.length(); +this.symmetryRange=this.htParams.containsKey("symmetryRange")?this.htParams.get("symmetryRange").floatValue():0;this.paramsCentroid=this.htParams.containsKey("centroid");this.paramsPacked=this.htParams.containsKey("packed");this.initializeSymmetryOptions();this.htParams.containsKey("spaceGroupIndex")&&(this.desiredSpaceGroupIndex=this.htParams.get("spaceGroupIndex").intValue(),-2==this.desiredSpaceGroupIndex&&(this.sgName=this.htParams.get("spaceGroupName")),this.ignoreFileSpaceGroupName=-2==this.desiredSpaceGroupIndex|| +0<=this.desiredSpaceGroupIndex,this.ignoreFileSymmetryOperators=-1!=this.desiredSpaceGroupIndex);this.htParams.containsKey("unitCellOffset")&&(this.fileScaling=JU.P3.new3(1,1,1),this.fileOffset=this.htParams.get("unitCellOffset"),this.fileOffsetFractional=JU.P3.newP(this.fileOffset),this.unitCellOffsetFractional=this.htParams.containsKey("unitCellOffsetFractional"));this.htParams.containsKey("unitcell")&&(a=this.htParams.get("unitcell"),this.merging&&this.setFractionalCoordinates(!0),9==a.length? +(this.addExplicitLatticeVector(0,a,0),this.addExplicitLatticeVector(1,a,3),this.addExplicitLatticeVector(2,a,6)):this.setUnitCell(a[0],a[1],a[2],a[3],a[4],a[5]),this.ignoreFileUnitCell=this.iHaveUnitCell,this.merging&&!this.iHaveUnitCell&&this.setFractionalCoordinates(!1));this.domains=this.htParams.get("domains");this.validation=this.htParams.get("validation");this.dssr=this.htParams.get("dssr");this.isConcatenated=this.htParams.containsKey("concatenate")});c(b,"parsePrecision",function(a){if(!this.filteredPrecision){var d= +a.indexOf(".")+1;if(0<=d){var g=a.indexOf("(");0>g?this.precision=Math.max(this.precision,a.length-d):(0==this.precision&&(this.precision=g),this.precision=Math.min(this.precision,g-1-d))}}return this.parseFloatStr(a)},"~S");c(b,"setLowPrecision",function(){this.lowPrecision=!0;this.cellSlop=1E-4;null==this.packingRange&&(this.packingRange=Double.$valueOf(1E-4))});c(b,"setPrecision",function(){var a;if(this.lowPrecision)a=!1,this.precision=4;else if(this.precision=1E3this.precision&&(this.cellSlop=Math.pow(10, +-this.precision));this.symmetry.setPrecision(this.cellSlop);this.unitCellParams[26]=this.cellSlop;if(this.fileCoordinatesAreFractional){a=this.asc.ac;for(var d=this.asc.getLastAtomSetAtomIndex();--a>=d;)this.symmetry.twelfthify(this.asc.atoms[a])}this.appendLoadNote("Precision set to "+this.precision+"; packing set to "+(null==this.packingRange?0.02:this.packingRange.floatValue()))});c(b,"initializeSymmetryOptions",function(){this.latticeCells=E(4,0);this.doApplySymmetry=!1;var a=this.paramsLattice; +if(null==a||0==a.length()){if(!this.forcePacked&&null==this.strSupercell)return;a=JU.P3.new3(1,1,1)}this.latticeCells[0]=D(a.x);this.latticeCells[1]=D(a.y);this.latticeCells[2]=D(a.z);z(a,"JU.T4")&&(this.latticeCells[3]=D(a.w));if((this.doCentroidUnitCell=this.paramsCentroid)&&(-1==this.latticeCells[2]||0==this.latticeCells[2]))this.latticeCells[2]=1;a=this.forcePacked||this.paramsPacked;this.centroidPacked=this.doCentroidUnitCell&&a;this.doPackUnitCell=!this.doCentroidUnitCell&&(a||0>this.latticeCells[2]); +this.doApplySymmetry=0d.toUpperCase().indexOf(this.nameRequired))return!1;var g=null==this.bsModels?1>this.desiredModelNumber||a==this.desiredModelNumber:a>this.lastModelNumber?!1:0this.firstLastStep[1]&&(2>this.firstLastStep[2]||0==(a- +1-this.firstLastStep[0])%this.firstLastStep[2]);g&&0==this.desiredModelNumber&&this.discardPreviousAtoms();this.haveModel=(new Boolean(this.haveModel|g)).valueOf();g&&(this.doProcessLines=!0);return g},"~N,~S");c(b,"discardPreviousAtoms",function(){this.asc.discardPreviousAtoms()});c(b,"initializeSymmetry",function(){this.previousSpaceGroup=this.sgName;this.previousUnitCell=this.unitCellParams;this.iHaveUnitCell=this.ignoreFileUnitCell;if(!this.ignoreFileUnitCell){this.unitCellParams=K(27,0);for(var a= +27;0<=--a;)this.unitCellParams[a]=NaN;this.unitCellParams[25]=this.latticeScaling;this.unitCellParams[26]=this.cellSlop;this.symmetry=null}this.ignoreFileSpaceGroupName||(this.sgName="unspecified!");this.doCheckUnitCell=!1});c(b,"newAtomSet",function(a){0<=this.asc.iSet?(this.asc.newAtomSet(),this.asc.setCollectionName("")):this.asc.setCollectionName(a);this.asc.setModelInfoForSet("name",a,Math.max(0,this.asc.iSet));this.asc.setAtomSetName(a)},"~S");c(b, +"cloneLastAtomSet",function(a,d){var g=this.asc.getLastAtomSetAtomCount();this.asc.cloneLastAtomSetFromPoints(a,d);this.asc.haveUnitCell&&(this.doCheckUnitCell=this.iHaveUnitCell=!0,this.sgName=this.previousSpaceGroup,this.unitCellParams=this.previousUnitCell);return g},"~N,~A");c(b,"setSpaceGroupName",function(a){this.ignoreFileSpaceGroupName||null==a||(a=a.trim(),0==a.length||(a.equals("HM:")||a.equals(this.sgName))||(a.equals("P1")||JU.Logger.info("Setting space group name to "+a),this.sgName= +a))},"~S");c(b,"setSymmetryOperator",function(a){if(this.ignoreFileSymmetryOperators)return-1;var d=this.asc.getXSymmetry().addSpaceGroupOperation(a,!0);0>d&&JU.Logger.warn("Skippings symmetry operation "+a);this.iHaveSymmetryOperators=!0;return d},"~S");c(b,"initializeCartesianToFractional",function(){for(var a=0;16>a;a++)if(!Float.isNaN(this.unitCellParams[6+a]))return;for(a=0;16>a;a++)this.unitCellParams[6+a]=0==a%5?1:0;this.nMatrixElements=0});c(b,"clearUnitCell",function(){if(!this.ignoreFileUnitCell){for(var a= +6;22>a;a++)this.unitCellParams[a]=NaN;this.checkUnitCell(6)}});c(b,"setUnitCellItem",function(a,d){this.ignoreFileUnitCell||(0==a&&1==d&&!this.allow_a_len_1||3==a&&0==d?(null==this.ucItems&&(this.ucItems=K(6,0)),this.ucItems[a]=d):(null!=this.ucItems&&6>a&&(this.ucItems[a]=d),!Float.isNaN(d)&&(6<=a&&Float.isNaN(this.unitCellParams[6]))&&this.initializeCartesianToFractional(),this.unitCellParams[a]=d,this.debugging&&JU.Logger.debug("setunitcellitem "+a+" "+d),6>a||Float.isNaN(d)?this.iHaveUnitCell= +this.checkUnitCell(6):12==++this.nMatrixElements&&(this.iHaveUnitCell=this.checkUnitCell(22))))},"~N,~N");c(b,"setUnitCell",function(a,d,g,b,c,e){this.ignoreFileUnitCell||(this.clearUnitCell(),this.unitCellParams[0]=a,this.unitCellParams[1]=d,this.unitCellParams[2]=g,0!=b&&(this.unitCellParams[3]=b),0!=c&&(this.unitCellParams[4]=c),0!=e&&(this.unitCellParams[5]=e),this.iHaveUnitCell=this.checkUnitCell(6))},"~N,~N,~N,~N,~N,~N");c(b,"addExplicitLatticeVector",function(a,d,g){if(!this.ignoreFileUnitCell){if(0== +a)for(var b=0;6>b;b++)this.unitCellParams[b]=0;a=6+3*a;this.unitCellParams[a++]=d[g++];this.unitCellParams[a++]=d[g++];this.unitCellParams[a]=d[g];if(Float.isNaN(this.unitCellParams[0]))for(a=0;6>a;a++)this.unitCellParams[a]=-1;if(this.iHaveUnitCell=this.checkUnitCell(15)){if(this.slabXY||this.polymerX)this.unitCellParams[2]=-1;this.polymerX&&(this.unitCellParams[1]=-1)}}},"~N,~A,~N");c(b,"checkUnitCell",function(a){for(var d=0;d=a&&(this.precision=1E3+a,this.filteredPrecision=!0)),a=this.getFilter("LATTICESCALING="),null!=a&&25 +d?null:this.filterCased.substring(d+a.length,this.filterCased.indexOf(";",d))},"~S");c(b,"getFilter",function(a){var d=null==this.filter?-1:this.filter.indexOf(a);return 0>d?null:this.filter.substring(d+a.length,this.filter.indexOf(";",d))},"~S");c(b,"checkFilterKey",function(a){return null!=this.filter&&0<=this.filter.indexOf(a)},"~S");c(b,"checkAndRemoveFilterKey",function(a){if(!this.checkFilterKey(a))return!1;this.filter=JU.PT.rep(this.filter,a,"");3>this.filter.length&&(this.filter=null);return!0}, +"~S");c(b,"filterAtom",function(a,d){if(!this.haveAtomFilter)return!0;var g=this.checkFilter(a,this.filter1,this.filter1Cased);null!=this.filter2&&(g=(new Boolean(g|this.checkFilter(a,this.filter2,this.filter2Cased))).valueOf());if(g&&this.filterEveryNth&&(!a.isHetero||!this.filterAllHetero))g=0==this.nFiltered++%this.filterN;this.bsFilter.setBitTo(0<=d?d:this.asc.ac,g);return g},"J.adapter.smarter.Atom,~N");c(b,"checkFilter",function(a,d,g){return a.isHetero&&this.filterAllHetero?!0:(!this.filterGroup3|| +null==a.group3||!this.filterReject(d,"[",a.group3.toUpperCase()+"]"))&&(!this.filterAtomName||this.allowAtomName(a.atomName,d))&&(null==this.filterAtomTypeStr||null==a.atomName||0<=a.atomName.toUpperCase().indexOf("\x00"+this.filterAtomTypeStr))&&(!this.filterElement||null==a.elementSymbol||!this.filterReject(d,"_",a.elementSymbol.toUpperCase()+";"))&&(!this.filterChain||0==a.chainID||!this.filterReject(g,":",""+this.vwr.getChainIDStr(a.chainID)))&&(!this.filterAltLoc||"\x00"==a.altLoc||!this.filterReject(d, +"%",""+a.altLoc))&&(!this.filterHetero||!this.allowPDBFilter||!this.filterReject(d,"HETATM",a.isHetero?"-Y":"-N"))},"J.adapter.smarter.Atom,~S,~S");c(b,"rejectAtomName",function(a){return this.filterAtomName&&!this.allowAtomName(a,this.filter)},"~S");c(b,"allowAtomName",function(a,d){return null==a||!this.filterReject(d,".",a.toUpperCase()+this.filterAtomNameTerminator)},"~S,~S");c(b,"filterReject",function(a,d,g){return 0<=a.indexOf(d)&&0<=a.indexOf("!"+d)==0<=a.indexOf(d+g)},"~S,~S,~S");c(b,"set2D", +function(){this.asc.setInfo("is2D",Boolean.TRUE);this.asc.getBSAtoms(-1);this.noHydrogens&&(this.asc.setInfo("noHydrogen",Boolean.TRUE),this.optimize2D=!1);this.optimize2D?(this.asc.fix2Stereo(),this.asc.setInfo("doMinimize",Boolean.TRUE),this.appendLoadNote("This model is 2D. Its 3D structure was generated.")):(this.appendLoadNote('This model is 2D. Its 3D structure has not been generated; use LOAD "" FILTER "2D" to optimize 3D.'),this.addJmolScript("select thismodel;wireframe only"))});c(b,"doGetVibration", +function(a){return this.addVibrations&&(0>=this.desiredVibrationNumber||a==this.desiredVibrationNumber)},"~N");c(b,"setTransform",function(a,d,g,b,c,e,h,k,m){null==this.matRot&&this.doSetOrientation&&(this.matRot=new JU.M3,a=JU.V3.new3(a,d,g),a.normalize(),this.matRot.setColumnV(0,a),a.set(b,c,e),a.normalize(),this.matRot.setColumnV(1,a),a.set(h,k,m),a.normalize(),this.matRot.setColumnV(2,a),this.asc.setInfo("defaultOrientationMatrix",JU.M3.newM3(this.matRot)),b=JU.Quat.newM(this.matRot),this.asc.setInfo("defaultOrientationQuaternion", +b),JU.Logger.info("defaultOrientationMatrix = "+this.matRot))},"~N,~N,~N,~N,~N,~N,~N,~N,~N");c(b,"setAtomCoordXYZ",function(a,d,g,b){a.set(d,g,b);this.setAtomCoord(a)},"J.adapter.smarter.Atom,~N,~N,~N");c(b,"setAtomCoordScaled",function(a,d,g,b){null==a&&(a=this.asc.addNewAtom());this.setAtomCoordXYZ(a,this.parsePrecision(d[g])*b,this.parsePrecision(d[g+1])*b,this.parsePrecision(d[g+2])*b);return a},"J.adapter.smarter.Atom,~A,~N,~N");c(b,"setAtomCoordTokens",function(a,d,g){this.setAtomCoordXYZ(a, +this.parsePrecision(d[g]),this.parsePrecision(d[g+1]),this.parsePrecision(d[g+2]))},"J.adapter.smarter.Atom,~A,~N");c(b,"addAtomXYZSymName",function(a,d,g,b){var c=this.asc.addNewAtom();null!=g&&(c.elementSymbol=g);null!=b&&(c.atomName=b);this.setAtomCoordTokens(c,a,d);return c},"~A,~N,~S,~S");c(b,"setAtomCoord",function(a){var d=this.doConvertToFractional&&!this.fileCoordinatesAreFractional&&null!=this.getSymmetry();null!=this.fileScaling&&(a.x=a.x*this.fileScaling.x+this.fileOffset.x,a.y=a.y*this.fileScaling.y+ +this.fileOffset.y,a.z=a.z*this.fileScaling.z+this.fileOffset.z);d&&(this.symmetry.haveUnitCell()||this.symmetry.setUnitCellFromParams(this.unitCellParams,!1,NaN),this.symmetry.toFractional(a,!1),this.iHaveFractionalCoordinates=!0);this.floatifyJavaDouble&&this.fileCoordinatesAreFractional&&this.fixFloatPt(a,1E5);this.doCheckUnitCell=!0},"J.adapter.smarter.Atom");c(b,"addSites",function(a){this.asc.setCurrentModelInfo("pdbSites",a);var d="",g;for(a=a.entrySet().iterator();a.hasNext()&&((g=a.next())|| +1);){for(var b=g.getKey(),c=g.getValue(),e,h=b.length;0<=--h;)if(!JU.PT.isLetterOrDigit(e=b.charAt(h))&&"'"!=e)b=b.substring(0,h)+"_"+b.substring(h+1);c=c.get("groups");0!=c.length&&(this.addSiteScript("@site_"+b+" "+c),this.addSiteScript("site_"+b+' = ["'+JU.PT.rep(c,",",'","')+'"]'),d+=',"site_'+b+'"')}0e;e++){if(b||d>=a.length){for(;3>(a=JU.PT.getTokens(this.rd())).length;);d=0>c?a.length+c:c}for(var h=0;3>h;h++)g[e][h]=Double.$valueOf(a[d++]).doubleValue()}return g},"~A,~N");c(b,"fillFloatArray",function(a,d,g){for(var b=[],c=0,e=0;e=b.length;){null== +a&&(a=this.rd());if(0==d)b=JU.PT.getTokens(a);else{b=Array(B(a.length/d));for(c=0;cu||(u+=a+g*M++,this.debugging&&JU.Logger.debug("atom "+u+" vib"+M+": "+p+" "+B+" "+r),this.asc.addVibrationVectorWithSymmetry(u,p,B,r,j))}}}},"~N,~N,~N,~A,~B,~N,~N,~A,~N,~A");c(b,"fillDataBlockFixed",function(a,d, +g,b){if(0==g)this.fillDataBlock(a,b);else for(var c=a.length,e=0;eb&&" "==this.line.charAt(-b)){a[0]=null;break}var h=B((this.line.length-d+1)/g);a[e]=Array(h);for(var k=0,m=d;kthis.line.indexOf(a););return this.line},"~S");c(b,"discardLinesUntilContains2",function(a,d){for(;null!=this.rd()&&0>this.line.indexOf(a)&&0>this.line.indexOf(d););return this.line},"~S,~S");c(b,"discardLinesUntilBlank",function(){for(;null!=this.rd()&&0!=this.line.trim().length;);return this.line});c(b,"discardLinesUntilNonBlank",function(){for(;null!=this.rd()&&0==this.line.trim().length;);return this.line});c(b,"checkLineForScript", +function(a){this.line=a;this.checkCurrentLineForScript()},"~S");c(b,"checkCurrentLineForScript",function(){this.line.endsWith("#noautobond")&&(this.line=this.line.substring(0,this.line.lastIndexOf("#")).trim(),this.asc.setNoAutoBond());var a=this.line.indexOf("jmolscript:");if(0<=a){var d=this.line.substring(a+11,this.line.length);0<=d.indexOf("#")&&(d=d.substring(0,d.indexOf("#")));this.addJmolScript(d);this.line=this.line.substring(0,a).trim()}});c(b,"addJmolScript",function(a){JU.Logger.info("#jmolScript: "+ +a);null==this.previousScript?this.previousScript="":this.previousScript.endsWith(";")||(this.previousScript+=";");this.previousScript+=a;this.asc.setInfo("jmolscript",this.previousScript)},"~S");c(b,"addSiteScript",function(a){null==this.siteScript?this.siteScript="":this.siteScript.endsWith(";")||(this.siteScript+=";");this.siteScript+=a;this.asc.setInfo("sitescript",this.siteScript)},"~S");c(b,"rd",function(){return this.RL()});c(b,"RL",function(){this.prevline=this.line;this.line=this.reader.readLine(); +null!=this.out&&null!=this.line&&this.out.append(this.line).append("\n");this.ptLine++;this.debugging&&null!=this.line&&JU.Logger.info(this.line);return this.line});b.getStrings=c(b,"getStrings",function(a,d,g){for(var b=Array(d),c=0,e=0;cb;b++){if(0< +b||Float.isNaN(this.parseFloatStr(this.line)))if(this.rd(),0==b&&null!=this.line){b=-1;continue}this.fillFloatArray(this.line,0,g);d[b]=new JU.V3;d[b].setA(g);a&&d[b].scale(0.5291772)}return d},"~B");c(b,"setElementAndIsotope",function(a,d){var g=this.parseIntStr(d);-2147483648==g?a.elementSymbol=d:(d=d.substring((""+g).length),a.elementNumber=0==d.length?g:(g<<7)+J.api.JmolAdapter.getElementNumber(d))},"J.adapter.smarter.Atom,~S");c(b,"finalizeModelSet",function(){});c(b,"setChainID",function(a, +d){a.chainID=this.vwr.getChainID(d,!0)},"J.adapter.smarter.Atom,~S");j(b,"readNextLine",function(){null!=this.rd()&&0<=this.line.indexOf("#jmolscript:")&&this.checkCurrentLineForScript();return this.line});c(b,"appendUunitCellInfo",function(a){null==this.moreUnitCellInfo&&(this.moreUnitCellInfo=new JU.Lst);this.moreUnitCellInfo.addLast(a);this.appendLoadNote(a)},"~S");c(b,"getInterface",function(a){a=J.api.Interface.getInterface(a,this.vwr,"file");if(null==a)throw new NullPointerException("Interface"); +return a},"~S");c(b,"forceSymmetry",function(a){a&&(this.doPackUnitCell=a);this.doApplySymmetry||(this.doApplySymmetry=!0,this.latticeCells[0]=this.latticeCells[1]=this.latticeCells[2]=1)},"~B");c(b,"fixFloatA",function(a){if(this.floatifyJavaDouble)for(var d=a.length;0<=--d;)Float.isNaN(a[d])||(a[d]=JU.PT.fixFloat(a[d],1E5))},"~A");c(b,"fixDoubleA",function(a){if(this.floatifyJavaDouble)for(var d=a.length;0<=--d;)Double.isNaN(a[d])||(a[d]=JU.PT.fixDouble(a[d],1E5))},"~A");c(b,"fixFloatPt",function(a, +d){this.floatifyJavaDouble&&JU.PT.fixPtFloats(a,d)},"JU.P3,~N")});u("J.adapter.smarter");v(function(){this.atomSetIndex=0;r(this,arguments)},J.adapter.smarter,"AtomSetObject",null);u("J.adapter.smarter");C(["J.adapter.smarter.AtomSetObject"],"J.adapter.smarter.Bond",null,function(){var b=v(function(){this.order=this.atomIndex2=this.atomIndex1=0;this.uniqueID=this.colix=this.radius=-1;this.distance=0;r(this,arguments)},J.adapter.smarter,"Bond",J.adapter.smarter.AtomSetObject);A(b,function(a,d,g){L(this, +J.adapter.smarter.Bond,[]);this.atomIndex1=a;this.atomIndex2=d;this.order=g},"~N,~N,~N");j(b,"toString",function(){return"[Bond "+this.atomIndex1+" "+this.atomIndex2+" "+this.order+"]"})});u("J.adapter.smarter");C(["J.api.JmolAdapterBondIterator"],"J.adapter.smarter.BondIterator",null,function(){var b=v(function(){this.bonds=this.bsAtoms=null;this.ibond=0;this.bond=null;this.bondCount=0;r(this,arguments)},J.adapter.smarter,"BondIterator",J.api.JmolAdapterBondIterator);A(b,function(a){L(this,J.adapter.smarter.BondIterator, +[]);this.bsAtoms=a.bsAtoms;this.bonds=a.bonds;this.bondCount=a.bondCount;this.ibond=0},"J.adapter.smarter.AtomSetCollection");j(b,"hasNext",function(){if(this.ibond==this.bondCount)return!1;for(;null==(this.bond=this.bonds[this.ibond++])||null!=this.bsAtoms&&(!this.bsAtoms.get(this.bond.atomIndex1)||!this.bsAtoms.get(this.bond.atomIndex2));)if(this.ibond==this.bondCount)return!1;return!0});j(b,"getAtomUniqueID1",function(){return Integer.$valueOf(this.bond.atomIndex1)});j(b,"getAtomUniqueID2",function(){return Integer.$valueOf(this.bond.atomIndex2)}); +j(b,"getEncodedOrder",function(){return this.bond.order});j(b,"getRadius",function(){return this.bond.radius});j(b,"getColix",function(){return this.bond.colix})});u("J.adapter.smarter");C(null,"J.adapter.smarter.Resolver","java.io.BufferedInputStream java.util.StringTokenizer JU.LimitedLineReader $.PT $.Rdr J.adapter.smarter.AtomSetCollectionReader $.SmarterJmolAdapter J.api.Interface JU.Logger JV.JC".split(" "),function(){var b=H(J.adapter.smarter,"Resolver",null);b.getReaderClassBase=c(b,"getReaderClassBase", +function(a){var d=a+"Reader";if(a.startsWith("Xml"))return"J.adapter.readers.xml."+d;a=";"+a+";";for(var g=1;g=c&&b.put("readerName",e);return J.adapter.smarter.Resolver.getReader(e, +b)},"~S,~S,~O,java.util.Map,~N");b.getReader=c(b,"getReader",function(a){var d=null,g=null,d=null,g=J.adapter.smarter.Resolver.getReaderClassBase(a);if(null==(d=J.api.Interface.getInterface(g,null,"reader")))d=JV.JC.READER_NOT_FOUND+g,JU.Logger.error(d);return d},"~S,java.util.Map");b.getReaderFromType=c(b,"getReaderFromType",function(a){a.endsWith("(XML)")&&(a="Xml"+a.substring(0,a.length-5));a=";"+a.toLowerCase()+";";if(0<=";zmatrix;cfi;c;vfi;v;mnd;jag;gms;g;gau;mp;nw;orc;pqs;qc;".indexOf(a))return"Input"; +for(var d,g,b=J.adapter.smarter.Resolver.readerSets.length;0<=--b;)if(0<=(g=(d=J.adapter.smarter.Resolver.readerSets[b--]).toLowerCase().indexOf(a)))return d.substring(g+1,d.indexOf(";",g+2));return null},"~S");b.split=c(b,"split",function(a,d){for(var g="",b=a.length,c=0,e=0;ca.length)return!1;for(var g=d.length;0<=--g;)if(a[g]!=d[g])return!1;return!0},"~A,~A");b.checkFileStart=c(b,"checkFileStart",function(a){for(var d=0;dd?0=d;d++){var g=new java.util.StringTokenizer(a[d]),b=g.countTokens();if(!(4==b||2==d&&5==b)||!J.adapter.smarter.Resolver.isInt(g.nextToken()))return!1;for(var c=3;0<=--c;)if(!J.adapter.smarter.Resolver.isFloat(g.nextToken()))return!1;if(5==b&&!J.adapter.smarter.Resolver.isInt(g.nextToken()))return!1}return!0},"~A"); +b.checkFoldingXyz=c(b,"checkFoldingXyz",function(a){var d=new java.util.StringTokenizer(a[0].trim()," \t");if(2>d.countTokens()||!J.adapter.smarter.Resolver.isInt(d.nextToken().trim()))return!1;d=a[1].trim();0==d.length&&(d=a[2].trim());d=new java.util.StringTokenizer(d," \t");return 0d.length||0<=d.indexOf(".")||a[0].startsWith("data_"))return 0;if(d.endsWith("V2000"))return 2E3;if(d.endsWith("V3000"))return 3E3;var d=JU.PT.parseInt(a[3].substring(0,3).trim()),g=JU.PT.parseInt(a[3].substring(3,6).trim());return 0")&&0!= +a[1].indexOf("@")&&0!=a[2].indexOf("@")?3:0},"~A");b.checkMopacGraphf=c(b,"checkMopacGraphf",function(a){return 2=a.length||" "!=a[d].charAt(0)||(d+=2)+1>=a.length)return!1;var g=a[d];if(3>g.length)return!1;var b=JU.PT.parseInt(g.substring(2).trim()),c=JU.PT.parseInt(g.substring(0,2).trim());if(2>(g=a[d+1]).length)return!1; +a=JU.PT.parseInt(g.substring(0,2).trim());if(0>b||5=a||-2147483648==c||5a.indexOf(d[g])))return g=d[0],!g.equals("Xml")?g:0<=a.indexOf("/AFLOWDATA/")||0<=a.indexOf("-- Structure PRE --")?"AFLOW":0>a.indexOf("a.indexOf("XHTML")&&(0>a.indexOf("xhtml")||0<=a.indexOf("")?"XmlCml":0<=a.indexOf("XSD")?"XmlXsd":0<=a.indexOf(">vasp")?"XmlVasp":0<=a.indexOf("")?"XmlQE":"XmlCml(unidentified)"},"~S");b.checkSpecial2=c(b,"checkSpecial2",function(a){if(J.adapter.smarter.Resolver.checkGromacs(a))return"Gromacs"; +if(J.adapter.smarter.Resolver.checkCrystal(a))return"Crystal";if(J.adapter.smarter.Resolver.checkFAH(a))return"FAH";a=J.adapter.smarter.Resolver.checkCastepVaspSiesta(a);return null!=a?a:null},"~A");b.checkFAH=c(b,"checkFAH",function(a){return(a[0].trim()+a[2].trim()).equals('{"atoms": [')},"~A");b.checkCrystal=c(b,"checkCrystal",function(a){var d=a[1].trim();if(d.equals("SLAB")||d.equals("MOLECULE")||d.equals("CRYSTAL")||d.equals("POLYMER")||(d=a[3]).equals("SLAB")||d.equals("MOLECULE")||d.equals("POLYMER"))return!0; +for(d=0;dg&&0!=d;g++)if(69!=(d=a[g].length)&&45!=d&&0!=d)return!1;return!0},"~A");b.checkCastepVaspSiesta= +c(b,"checkCastepVaspSiesta",function(a){for(var d=0;dd&&(g.startsWith("DIRECT")||g.startsWith("CARTESIAN")))return"VaspPoscar"}return null},"~A");b.getFileTypefromFilter= +c(b,"getFileTypefromFilter",function(a){var d=null==a?-1:a.toLowerCase().indexOf("filetype");return 0>d?null:a.substring(d+8,(a+";").indexOf(";",d)).$replace("="," ").trim()},"~S");b.fixDOSName=c(b,"fixDOSName",function(a){return 0<=a.indexOf(":\\")?a.$replace("\\","/"):a},"~S");b.readerSets=w(-1,"cif. ;Cif;Cif2;MMCif;MMTF;MagCif;BCIF; molxyz. ;Mol3D;Mol;Xyz; more. ;AFLOW;BinaryDcd;CDX;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;TlsDataOnly; quantum. ;Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GaussianFchk;GaussianWfn;Jaguar;Molden;MopacGraphf;GenNBO;NWChem;Psi;Qchem;QCJSON;WebMO;Orca;MO;Ams; pdb. ;Pdb;Pqr;P2n;JmolData; pymol. ;PyMOL; simple. ;Alchemy;Ampac;Cube;FoldingXyz;GhemicalMM;HyperChem;Jme;JSON;Mopac;MopacArchive;Tinker;Input;FAH; spartan. ;Spartan;SpartanSmol;Odyssey; xtal. ;Abinit;Aims;Bilbao;Castep;Cgd;Crystal;Dmol;Espresso;Gulp;Jana;Magres;Shelx;Siesta;VaspOutcar;VaspPoscar;Wien2k;Xcrysden;PWmat;Optimade;Cmdf; xml. ;XmlCdx;XmlArgus;XmlCml;XmlChem3d;XmlMolpro;XmlOdyssey;XmlXsd;XmlVasp;XmlQE;".split(" ")); +b.cdxMagic=Q(-1,["V","j","C","D"]);b.cmdfMagic=Q(-1,["C","M","D","F"]);b.sptRecords=w(-1,["spt","# Jmol state","# Jmol script","JmolManifest"]);b.m3dStartRecords=w(-1,["Alchemy","STRUCTURE 1.00 1"]);b.cubeFileStartRecords=w(-1,["Cube","JVXL","#JVXL"]);b.mol2Records=w(-1,["Mol2","mol2","@"]);b.webmoFileStartRecords=w(-1,["WebMO","[HEADER]"]);b.moldenFileStartRecords=w(-1,["Molden","[Molden","MOLDEN","[MOLDEN"]);b.dcdFileStartRecords=w(-1,["BinaryDcd","T\x00\x00\x00CORD","\x00\x00\x00TCORD"]); +b.tlsDataOnlyFileStartRecords=w(-1,["TlsDataOnly","REFMAC\n\nTL","REFMAC\r\n\r\n","REFMAC\r\rTL"]);b.inputFileStartRecords=w(-1,["Input","#ZMATRIX","%mem=","AM1","$rungauss"]);b.magresFileStartRecords=w(-1,["Magres","#$magres","# magres"]);b.pymolStartRecords=w(-1,["PyMOL","}q"]);b.janaStartRecords=w(-1,["Jana","Version Jana"]);b.jsonStartRecords=w(-1,["JSON",'{"mol":']);b.jcampdxStartRecords=w(-1,["Jcampdx","##TITLE"]);b.jmoldataStartRecords=w(-1,["JmolData","REMARK 6 Jmol"]);b.pqrStartRecords= +w(-1,["Pqr","REMARK 1 PQR","REMARK The B-factors"]);b.p2nStartRecords=w(-1,["P2n","REMARK 1 P2N"]);b.cif2StartRecords=w(-1,["Cif2","#\\#CIF_2","\u00ef\u00bb\u00bf#\\#CIF_2"]);b.xmlStartRecords=w(-1,["Xml","Bilbao Crystallographic Server<"]);b.xmlContainsRecords=w(-1, +'Xml =h&&j.startsWith("{"))x=j.contains('version":"DSSR')?"dssr":j.contains("/outliers/")?"validation":"domains",j=e.parseJSONMap(j), +null!=j&&b.put(x,x.equals("dssr")?j:JS.SV.getVariableMap(j));else{0<=x.indexOf("|")&&(x=JU.PT.rep(x,"_","/"));if(1==m){if(0<=x.indexOf("/rna3dhub/")){k+="\n_rna3d \n;"+j+"\n;\n";continue}if(0<=x.indexOf("/dssr/")){k+="\n_dssr \n;"+j+"\n;\n";continue}}k+=j;k.endsWith("\n")||(k+="\n")}}h=1;k=JU.Rdr.getBR(k)}for(var j=c?Array(h):null,x=c?null:Array(h),q=null,m=0;md)return null==a.bsAtoms?a.ac:a.bsAtoms.cardinality();if(null==a.bsAtoms)return a.getAtomSetAtomCount(d);var g=JU.BSUtil.copy(a.bsAtoms),b=a.getAtomSetAtomIndex(d);g.and(JU.BSUtil.newBitSet2(b,b+a.getAtomSetAtomCount(d)));return g.cardinality()},"~O,~N");j(b,"coordinatesAreFractional",function(a){return a.coordinatesAreFractional}, +"~O");j(b,"getAtomIterator",function(a){return new J.adapter.smarter.AtomIterator(a)},"~O");j(b,"getBondIterator",function(a){return 0==a.bondCount?null:new J.adapter.smarter.BondIterator(a)},"~O");j(b,"getStructureIterator",function(a){return 0==a.structureCount?null:new J.adapter.smarter.StructureIterator(a)},"~O");b.close=c(b,"close",function(a){z(a,"java.io.BufferedReader");a.close()},"~O");b.PATH_SEPARATOR=System.getProperty("path.separator","/")});u("J.adapter.smarter");C(["J.api.JmolAdapterStructureIterator"], +"J.adapter.smarter.StructureIterator",["J.api.JmolAdapter"],function(){var b=v(function(){this.structureCount=0;this.structure=this.structures=null;this.istructure=0;this.bsModelsDefined=null;r(this,arguments)},J.adapter.smarter,"StructureIterator",J.api.JmolAdapterStructureIterator);A(b,function(a){L(this,J.adapter.smarter.StructureIterator,[]);this.structureCount=a.structureCount;this.structures=a.structures;this.istructure=0;this.bsModelsDefined=a.bsStructuredModels},"J.adapter.smarter.AtomSetCollection"); +j(b,"hasNext",function(){if(this.istructure==this.structureCount)return!1;this.structure=this.structures[this.istructure++];return!0});j(b,"getStructureType",function(){return this.structure.structureType});j(b,"getSubstructureType",function(){return this.structure.substructureType});j(b,"getStructureID",function(){return this.structure.structureID});j(b,"getStrandID",function(){return this.structure.strandID});j(b,"getStartChainID",function(){return this.structure.startChainID});j(b,"getStartSequenceNumber", +function(){return this.structure.startSequenceNumber});j(b,"getStartInsertionCode",function(){return J.api.JmolAdapter.canonizeInsertionCode(this.structure.startInsertionCode)});j(b,"getEndChainID",function(){return this.structure.endChainID});j(b,"getEndSequenceNumber",function(){return this.structure.endSequenceNumber});j(b,"getEndInsertionCode",function(){return this.structure.endInsertionCode});j(b,"getStrandCount",function(){return this.structure.strandCount});j(b,"getStructuredModels",function(){return this.bsModelsDefined}); +j(b,"getAtomIndices",function(){return this.structure.atomStartEnd});j(b,"getModelIndices",function(){return this.structure.modelStartEnd});j(b,"getBSAll",function(){return this.structure.bsAll})});u("J.api");O(J.api,"AtomIndexIterator");u("J.api");C(null,"J.api.Interface",["JU.Logger"],function(){var b=H(J.api,"Interface",null);b.getInterface=c(b,"getInterface",function(a){try{var d=fa._4Name(a);return null==d?null:d.newInstance()}catch(g){if(F(g,Exception))return JU.Logger.error("Interface.java Error creating instance for "+ +a+": \n"+g),null;throw g;}},"~S,JV.Viewer,~S");b.getOption=c(b,"getOption",function(a,d,g){return J.api.Interface.getInterface("J."+a,d,g)},"~S,JV.Viewer,~S");b.getUtil=c(b,"getUtil",function(a,d,g){return J.api.Interface.getInterface("JU."+a,d,g)},"~S,JV.Viewer,~S");b.getSymmetry=c(b,"getSymmetry",function(a,d){return J.api.Interface.getInterface("JS.Symmetry",a,d)},"JV.Viewer,~S")});u("J.api");C(null,"J.api.JmolAdapter",["JU.PT","J.api.JmolViewer","JU.Elements"],function(){var b=H(J.api,"JmolAdapter", +null);b.getElementSymbol=c(b,"getElementSymbol",function(a){return JU.Elements.elementSymbolFromNumber(a)},"~N");b.getElementNumber=c(b,"getElementNumber",function(a){return JU.Elements.elementNumberFromSymbol(a,!1)},"~S");b.getNaturalIsotope=c(b,"getNaturalIsotope",function(a){return JU.Elements.getNaturalIsotope(a)},"~N");b.getBondingRadius=c(b,"getBondingRadius",function(a,d){return JU.Elements.getBondingRadius(a,d)},"~N,~N");c(b,"getAtomSetCollectionFromReaderType",function(a,d,g,b){a=this.getAtomSetCollectionReader(a, +d,g,J.api.JmolViewer.allocateViewer(null,this).setLoadParameters(b,!1));return"string"==typeof a?a:this.getAtomSetCollection(a)},"~S,~S,~O,java.util.Map");c(b,"openBufferedReader",function(a,d){return this.getAtomSetCollectionFromReaderType(a,null,d,null)},"~S,java.io.BufferedReader");c(b,"openBufferedReader",function(a,d,g){return this.getAtomSetCollectionFromReaderType(a,null,d,g)},"~S,java.io.BufferedReader,java.util.Map");c(b,"openBufferedReader",function(a,d,g){return this.getAtomSetCollectionFromReaderType(a, +d,g,null)},"~S,~S,java.io.BufferedReader");b.canonizeAlphaDigit=c(b,"canonizeAlphaDigit",function(a){return JU.PT.isLetterOrDigit(a)?a:"\x00"},"~S");b.canonizeInsertionCode=c(b,"canonizeInsertionCode",function(a){return J.api.JmolAdapter.canonizeAlphaDigit(a)},"~S");b.canonizeAlternateLocationID=c(b,"canonizeAlternateLocationID",function(a){return J.api.JmolAdapter.canonizeAlphaDigit(a)},"~S");b.cellParamNames=w(-1,"_cell_length_a _cell_length_b _cell_length_c _cell_angle_alpha _cell_angle_beta _cell_angle_gamma".split(" "))}); +u("J.api");O(J.api,"JmolAdapterAtomIterator");u("J.api");H(J.api,"JmolAdapterBondIterator",null);u("J.api");H(J.api,"JmolAdapterStructureIterator",null);u("J.api");O(J.api,"JmolAppConsoleInterface");u("J.api");O(J.api,"JmolAppletInterface",J.api.JmolSyncInterface);u("J.api");O(J.api,"JmolCallbackListener");u("J.api");O(J.api,"JmolAnnotationParser");u("J.api");O(J.api,"JmolGraphicsInterface");u("J.api");O(J.api,"JmolMeasurementClient");u("J.api");O(J.api,"JmolModulationSet");u("J.api");O(J.api,"JmolNavigatorInterface", +Runnable);u("J.api");O(J.api,"JmolRendererInterface",J.api.JmolGraphicsInterface);u("J.api");O(J.api,"JmolRepaintManager");u("J.api");O(J.api,"JmolStatusListener",J.api.JmolCallbackListener);u("J.api");O(J.api,"JmolSyncInterface");u("J.api");C(null,"J.api.JmolViewer",["java.util.Hashtable","JV.JC"],function(){var b=v(function(){this.apiPlatform=this.menuStructure=null;r(this,arguments)},J.api,"JmolViewer",null);b.allocateViewer=c(b,"allocateViewer",function(a,d,g,b,c,e,h,k){var m=new java.util.Hashtable; +null!=a&&m.put("display",a);null!=d&&m.put("adapter",d);null!=h&&m.put("statuslistener",h);null!=k&&m.put("platform",k);null!=e&&m.put("options",e);null!=g&&m.put("fullname",g);null!=b&&m.put("documentbase",b);null!=c&&m.put("codebase",c);m.put("isApp",Boolean.TRUE);return new JV.Viewer(m)},"~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform");b.allocateViewer=c(b,"allocateViewer",function(a,d){return J.api.JmolViewer.allocateViewer(a,d,null,null,null, +null,null,null)},"~O,J.api.JmolAdapter");b.allocateViewer=c(b,"allocateViewer",function(a,d,g,b,c,e,h){return J.api.JmolViewer.allocateViewer(a,d,g,b,c,e,h,null)},"~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener");c(b,"setConsole",function(a){this.getProperty("DATA_API","getAppConsole",a)},"J.api.JmolAppConsoleInterface");b.getJmolVersion=c(b,"getJmolVersion",function(){return JV.Viewer.getJmolVersion()});b.getJmolVersionNoDate=c(b,"getJmolVersionNoDate",function(){return JV.JC.version}); +c(b,"openReader",function(a,d){return this.openReader(null==a?"String":a,null,d)},"~S,~O");c(b,"openFileAsync",function(a){this.openFileAsyncSpecial(a,0)},"~S");c(b,"renderScreenImage",function(a,d){this.apiPlatform.renderScreenImage(a,d)},"~O,~O,~O");c(b,"runScriptCautiously",function(){return null},"~S");c(b,"dispose",function(){})});u("J.api");O(J.api,"SymmetryInterface");u("J.api");O(J.api,"Translator");u("J.appletjs");C(["JU.GenericApplet"],"J.appletjs.Jmol",["java.util.Hashtable"],function(){var b= +H(J.appletjs,"Jmol",JU.GenericApplet);A(b,function(a){L(this,J.appletjs.Jmol,[]);this.htParams=new java.util.Hashtable;null==a&&(a=new java.util.Hashtable);this.vwrOptions=a;for(var d,g=a.entrySet().iterator();g.hasNext()&&((d=g.next())||1);)this.htParams.put(d.getKey().toLowerCase(),d.getValue());this.documentBase=""+a.get("documentBase");this.codeBase=""+a.get("codePath");JU.GenericApplet.isJS=!0;this.init(this)},"java.util.Map")});u("J.atomdata");C(null,"J.atomdata.AtomData",["JU.P3","JU.BSUtil"], +function(){var b=v(function(){this.modelName=this.fileName=this.programInfo=null;this.modelIndex=0;this.radiusData=this.bsMolecules=this.bsIgnored=this.bsSelected=null;this.hAtomRadius=this.lastModelIndex=this.firstModelIndex=this.firstAtomIndex=0;this.hAtoms=this.atomMolecule=this.atomicNumber=this.atomRadius=this.xyz=this.atoms=this.atomIndex=null;this.adpMode=this.hydrogenAtomCount=this.ac=0;r(this,arguments)},J.atomdata,"AtomData",null);c(b,"transformXYZ",function(a,d){var g=Array(this.xyz.length); +null==d&&(d=JU.BSUtil.newBitSet2(0,this.xyz.length));for(var b=d.nextSetBit(0);0<=b;b=d.nextSetBit(b+1))null!=this.xyz[b]&&(g[b]=JU.P3.newP(this.xyz[b]),a.rotTrans(g[b]));this.xyz=g},"JU.M4,JU.BS")});u("J.atomdata");O(J.atomdata,"AtomDataServer");u("J.atomdata");C(["java.lang.Enum","J.c.VDW"],"J.atomdata.RadiusData",["JU.SB"],function(){var b=v(function(){this.vdwType=this.factorType=this.info=null;this.value=NaN;this.valueExtended=0;this.values=null;r(this,arguments)},J.atomdata,"RadiusData",null); +P(b,function(){this.factorType=J.atomdata.RadiusData.EnumType.ABSOLUTE;this.vdwType=J.c.VDW.AUTO});A(b,function(a,d,g,b){null!=a?(this.values=a,this.value=2147483647):null!=g&&(this.factorType=g,this.value=d,null!=b&&(this.vdwType=b))},"~A,~N,J.atomdata.RadiusData.EnumType,J.c.VDW");j(b,"toString",function(){if(Float.isNaN(this.value))return"";var a=new JU.SB;switch(this.factorType){case J.atomdata.RadiusData.EnumType.ABSOLUTE:a.appendF(this.value);break;case J.atomdata.RadiusData.EnumType.OFFSET:a.append(0< +this.value?"+":"").appendF(this.value);break;case J.atomdata.RadiusData.EnumType.FACTOR:a.appendI(D(100*this.value)).append("%");this.vdwType!==J.c.VDW.AUTO&&a.append(this.vdwType.getVdwLabel());break;case J.atomdata.RadiusData.EnumType.SCREEN:a.appendI(D(this.value))}return a.toString()});b=H(J.atomdata.RadiusData,"EnumType",Enum);I(b,"ABSOLUTE",0,[]);I(b,"OFFSET",1,[]);I(b,"FACTOR",2,[]);I(b,"SCREEN",3,[])});u("J.awtjs");C(["J.awtjs2d.Platform"],"J.awtjs.Platform",null,function(){var b=H(J.awtjs, +"Platform",J.awtjs2d.Platform);j(b,"drawImage",function(){},"~O,~O,~N,~N,~N,~N,~B");j(b,"getTextPixels",function(){return null},"~S,JU.Font,~O,~O,~N,~N,~N");j(b,"getGraphics",function(){return null},"~O");j(b,"getStaticGraphics",function(){return null},"~O,~B");j(b,"newBufferedImage",function(){return null},"~O,~N,~N");j(b,"newOffScreenImage",function(){return null},"~N,~N")});u("J.awtjs2d");p=H(J.awtjs2d,"Display",null);p.getFullScreenDimensions=c(p,"getFullScreenDimensions",function(b,a){a[0]=b.width; +a[1]=b.height},"~O,~A");p.hasFocus=c(p,"hasFocus",function(){return!0},"~O");p.requestFocusInWindow=c(p,"requestFocusInWindow",function(){},"~O");p.renderScreenImage=c(p,"renderScreenImage",function(){},"J.api.PlatformViewer,~O,~O");p.prompt=c(p,"prompt",function(b,a){var d=null==a?alert(b):prompt(b,a);return null!=d?d:"null"},"~S,~S,~A,~B");p.convertPointFromScreen=c(p,"convertPointFromScreen",function(){},"~O,JU.P3");p.drawImage=c(p,"drawImage",function(b,a,d,g,c,f,e){g=a.buf8;f=a.buf32;var h=a.width* +a.height,k=1;if(e){var m=c%2;c=Math.floor(c/2);k=Math.floor(a.width/c)}e=4*(a.width-c||d);var j=0,n=0;for(d*=4;j>16&255,g[d++]=f[j]>>8&255,g[d++]=f[j]&255,g[d++]=255,j+=k,0==++n%c&&(m&&(j+=1,g[d]=0,g[d+1]=0,g[d+2]=0,g[d+3]=0),d+=e);b.putImageData(a.imgdata,0,0)},"~O,~O,~N,~N,~N,~N,~B");u("J.awtjs2d");C(null,"J.awtjs2d.Image",["J.awtjs2d.Platform"],function(){var b=H(J.awtjs2d,"Image",null);b.getWidth=c(b,"getWidth",function(a){return a.imageWidth?a.imageWidth:a.width},"~O");b.getHeight= +c(b,"getHeight",function(a){return a.imageHeight?a.imageHeight:a.height},"~O");b.grabPixels=c(b,"grabPixels",function(a,d,g){var b=null,b=a.getImageData(0,0,d,g).data;return J.awtjs2d.Image.toIntARGB(b)},"~O,~N,~N");b.toIntARGB=c(b,"toIntARGB",function(a){for(var d=B(a.length/4),g=E(d,0),b=0,c=0;bJU.OC.urlTypeIndex(a)&&(this.fullName=JV.Viewer.jsDocumentBase+"/"+this.fullName);this.fullName=JU.PT.rep(this.fullName,"/./","/");a.substring(a.lastIndexOf("/")+1)},"~S");b.newFile=c(b,"newFile",function(a){return new J.awtjs2d.JSFile(a)},"~S");j(b,"getParentAsFile",function(){var a=this.fullName.lastIndexOf("/");return 0>a?null: +new J.awtjs2d.JSFile(this.fullName.substring(0,a))});j(b,"getFullPath",function(){return this.fullName});j(b,"getName",function(){return this.name});j(b,"isDirectory",function(){return this.fullName.endsWith("/")});j(b,"length",function(){return 0});b.getURLContents=c(b,"getURLContents",function(a,d,g){try{var b=a.openConnection();null!=d?b.outputBytes(d):null!=g&&b.outputString(g);return b.getContents()}catch(c){if(F(c,Exception))return c.toString();throw c;}},"java.net.URL,~A,~S");j(b,"toString", +function(){return this.fullName})});u("J.awtjs2d");p=H(J.awtjs2d,"JSFont",null);p.newFont=c(p,"newFont",function(b,a,d,g,c){b=b.equals("Monospaced")?"Courier":b.startsWith("Sans")?"Helvetica Neue, Sans-serif":"Serif";return(a?"bold ":"")+(d?"italic ":"")+g+c+" "+b},"~S,~B,~B,~N,~S");p.getFontMetrics=c(p,"getFontMetrics",function(b,a){a.font!=b.font&&(a.font=b.font,b.font=a.font,a._fontAscent=Math.ceil(b.fontSize),a._fontDescent=Math.ceil(0.25*b.fontSize));return a},"JU.Font,~O");p.getAscent=c(p,"getAscent", +function(b){return Math.ceil(b._fontAscent)},"~O");p.getDescent=c(p,"getDescent",function(b){return Math.ceil(b._fontDescent)},"~O");p.stringWidth=c(p,"stringWidth",function(b,a,d){a.font=b.font;return Math.ceil(a.measureText(d).width)},"JU.Font,~O,~S");u("J.awtjs2d");C(["J.api.GenericMouseInterface"],"J.awtjs2d.Mouse",["JU.PT","$.V3","JU.Logger"],function(){var b=v(function(){this.manager=this.vwr=null;this.keyBuffer="";this.wheeling=this.isMouseDown=!1;this.modifiersWhenPressed10=this.yWhenPressed= +this.xWhenPressed=this.modifiersDown=0;r(this,arguments)},J.awtjs2d,"Mouse",null,J.api.GenericMouseInterface);A(b,function(a,d){this.vwr=d;this.manager=this.vwr.acm},"~N,JV.Viewer,~O");j(b,"clear",function(){});j(b,"dispose",function(){});j(b,"processEvent",function(a,d,g,b,c){507!=a&&(b=J.awtjs2d.Mouse.applyLeftMouse(b));switch(a){case 507:this.wheeled(c,d,b);break;case 501:this.xWhenPressed=d;this.yWhenPressed=g;this.modifiersWhenPressed10=b;this.pressed(c,d,g,b,!1);break;case 506:this.dragged(c, +d,g);break;case 504:this.entry(c,d,g,!1);break;case 505:this.entry(c,d,g,!0);break;case 503:this.moved(c,d,g,b);break;case 502:this.released(c,d,g,b);d==this.xWhenPressed&&(g==this.yWhenPressed&&b==this.modifiersWhenPressed10)&&this.clicked(c,d,g,b,1);break;default:return!1}return!0},"~N,~N,~N,~N,~N");j(b,"processTwoPointGesture",function(a){if(!(2>a[0].length)){var d=a[0],g=a[1],b=d[0],c=d[g.length-1];a=b[0];var e=c[0],b=b[1],c=c[1],h=JU.V3.new3(e-a,c-b,0),k=h.length(),m=g[0],j=g[g.length-1],g=m[0], +n=j[0],m=m[1],j=j[1],q=JU.V3.new3(n-g,j-m,0),y=q.length();1>k||1>y||(h.normalize(),q.normalize(),h=h.dot(q),0.8h&&(h=JU.V3.new3(g-a,m-b,0),q=JU.V3.new3(n-e,j-c,0),d=q.length()-h.length(),this.wheeled(System.currentTimeMillis(),0>d?-1:1,32)))}},"~A");c(b,"mouseClicked",function(a){this.clicked(a.getWhen(),a.getX(),a.getY(),a.getModifiers(),a.getClickCount())},"java.awt.event.MouseEvent");c(b,"mouseEntered",function(a){this.entry(a.getWhen(), +a.getX(),a.getY(),!1)},"java.awt.event.MouseEvent");c(b,"mouseExited",function(a){this.entry(a.getWhen(),a.getX(),a.getY(),!0)},"java.awt.event.MouseEvent");c(b,"mousePressed",function(a){this.pressed(a.getWhen(),a.getX(),a.getY(),a.getModifiers(),a.isPopupTrigger())},"java.awt.event.MouseEvent");c(b,"mouseReleased",function(a){this.released(a.getWhen(),a.getX(),a.getY(),a.getModifiers())},"java.awt.event.MouseEvent");c(b,"mouseDragged",function(a){a.getModifiers();this.dragged(a.getWhen(),a.getX(), +a.getY())},"java.awt.event.MouseEvent");c(b,"mouseMoved",function(a){this.moved(a.getWhen(),a.getX(),a.getY(),a.getModifiers())},"java.awt.event.MouseEvent");c(b,"mouseWheelMoved",function(a){a.consume();this.wheeled(a.getWhen(),a.getWheelRotation(),a.getModifiers())},"java.awt.event.MouseWheelEvent");c(b,"keyTyped",function(a){a.consume();if(this.vwr.menuEnabled()){var d=a.getKeyChar(),g=a.getModifiers();JU.Logger.debuggingHigh&&JU.Logger.debug("MouseManager keyTyped: "+d+" "+(0+d.charCodeAt(0))+ +" "+g);if(0!=g&&1!=g)switch(d.charCodeAt(0)){case String.fromCharCode(11):case 107:a=!this.vwr.getBooleanProperty("allowKeyStrokes");switch(g){case 2:this.vwr.setBooleanProperty("allowKeyStrokes",a);this.vwr.setBooleanProperty("showKeyStrokes",!0);break;case 10:case 1:this.vwr.setBooleanProperty("allowKeyStrokes",a),this.vwr.setBooleanProperty("showKeyStrokes",!1)}this.clearKeyBuffer();this.vwr.refresh(3,"showkey");break;case 26:case 122:switch(g){case 2:this.vwr.undoMoveAction(4165,1);break;case 3:this.vwr.undoMoveAction(4140, +1)}break;case 25:case 121:switch(g){case 2:this.vwr.undoMoveAction(4140,1)}}else this.vwr.getBooleanProperty("allowKeyStrokes")&&this.addKeyBuffer(1==a.getModifiers()?Character.toUpperCase(d):d)}},"java.awt.event.KeyEvent");c(b,"keyPressed",function(a){this.vwr.isApplet&&a.consume();this.manager.keyPressed(a.getKeyCode(),a.getModifiers())},"java.awt.event.KeyEvent");c(b,"keyReleased",function(a){a.consume();this.manager.keyReleased(a.getKeyCode())},"java.awt.event.KeyEvent");c(b,"clearKeyBuffer", +function(){0!=this.keyBuffer.length&&(this.keyBuffer="",this.vwr.getBooleanProperty("showKeyStrokes")&&this.vwr.evalStringQuietSync('!set echo _KEYSTROKES; set echo bottom left;echo ""',!0,!0))});c(b,"addKeyBuffer",function(a){10==a.charCodeAt(0)?this.sendKeyBuffer():(8==a.charCodeAt(0)?0a&&null!=this.bspts[a]&&this.bsptsValid[a]},"~N");c(b,"addTuple",function(a,d){a>=this.bspts.length&&(this.bspts=JU.AU.arrayCopyObject(this.bspts,a+1),this.bsptsValid=JU.AU.arrayCopyBool(this.bsptsValid,a+1));var g=this.bspts[a];null==g&&(g=this.bspts[a]=new J.bspt.Bspt(this.dimMax,a));g.addTuple(d)}, +"~N,JU.P3");c(b,"stats",function(){for(var a=0;aa)return this.getNewCubeIterator(-1-a);a>=this.cubeIterators.length&&(this.cubeIterators=JU.AU.arrayCopyObject(this.cubeIterators,a+1));null==this.cubeIterators[a]&&null!=this.bspts[a]&&(this.cubeIterators[a]=this.getNewCubeIterator(a));this.cubeIterators[a].set(this.bspts[a]);return this.cubeIterators[a]},"~N");c(b,"getNewCubeIterator",function(a){return this.bspts[a].allocateCubeIterator()}, +"~N");c(b,"initialize",function(a,d,g){null!=this.bspts[a]&&this.bspts[a].reset();for(var b=g.nextSetBit(0);0<=b;b=g.nextSetBit(b+1))this.addTuple(a,d[b]);this.bsptsValid[a]=!0},"~N,~A,JU.BS")});u("J.bspt");C(null,"J.bspt.Bspt",["J.bspt.CubeIterator","$.Leaf"],function(){var b=v(function(){this.index=this.dimMax=this.treeDepth=0;this.eleRoot=null;r(this,arguments)},J.bspt,"Bspt",null);A(b,function(a,d){this.dimMax=a;this.index=d;this.reset()},"~N,~N");c(b,"reset",function(){this.eleRoot=new J.bspt.Leaf(this, +null,0);this.treeDepth=1});c(b,"addTuple",function(a){this.eleRoot=this.eleRoot.addTuple(0,a)},"JU.T3");c(b,"stats",function(){});c(b,"allocateCubeIterator",function(){return new J.bspt.CubeIterator(this)})});u("J.bspt");p=v(function(){this.stack=this.bspt=null;this.leafIndex=this.sp=0;this.leaf=null;this.dz=this.dy=this.dx=this.cz=this.cy=this.cx=this.radius=0;this.tHemisphere=!1;r(this,arguments)},J.bspt,"CubeIterator",null);A(p,function(b){this.set(b)},"J.bspt.Bspt");c(p,"set",function(b){this.bspt= +b;this.stack=Array(b.treeDepth)},"J.bspt.Bspt");c(p,"initialize",function(b,a,d){this.radius=a;this.tHemisphere=!1;this.cx=b.x;this.cy=b.y;this.cz=b.z;this.leaf=null;this.stack.length=b.minLeft)d>=b.minRight&& +a<=b.maxRight&&(this.stack[this.sp++]=b.eleRight),b=b.eleLeft;else if(d>=b.minRight&&a<=b.maxRight)b=b.eleRight;else{if(0==this.sp)return;b=this.stack[--this.sp]}}this.leaf=b;this.leafIndex=0}});c(p,"isWithinRadius",function(b){this.dx=b.x-this.cx;return(!this.tHemisphere||0<=this.dx)&&(this.dx=Math.abs(this.dx))<=this.radius&&(this.dy=Math.abs(b.y-this.cy))<=this.radius&&(this.dz=Math.abs(b.z-this.cz))<=this.radius},"JU.T3");u("J.bspt");v(function(){this.bspt=null;this.count=0;r(this,arguments)}, +J.bspt,"Element",null);u("J.bspt");C(["J.bspt.Element"],"J.bspt.Leaf",["J.bspt.Node"],function(){var b=v(function(){this.tuples=null;r(this,arguments)},J.bspt,"Leaf",J.bspt.Element);A(b,function(a,d,g){this.bspt=a;this.count=0;this.tuples=Array(2);if(null!=d){for(a=g;2>a;++a)this.tuples[this.count++]=d.tuples[a],d.tuples[a]=null;d.count=g}},"J.bspt.Bspt,J.bspt.Leaf,~N");c(b,"sort",function(a){for(var d=this.count;0<--d;)for(var g=this.tuples[d],b=J.bspt.Node.getDimensionValue(g,a),c=d;0<=--c;){var e= +this.tuples[c],h=J.bspt.Node.getDimensionValue(e,a);h>b&&(this.tuples[d]=e,this.tuples[c]=g,g=e,b=h)}},"~N");j(b,"addTuple",function(a,d){return 2>this.count?(this.tuples[this.count++]=d,this):(new J.bspt.Node(this.bspt,a,this)).addTuple(a,d)},"~N,JU.T3")});u("J.bspt");C(["J.bspt.Element"],"J.bspt.Node",["J.bspt.Leaf"],function(){var b=v(function(){this.maxLeft=this.minLeft=this.dim=0;this.eleLeft=null;this.maxRight=this.minRight=0;this.eleRight=null;r(this,arguments)},J.bspt,"Node",J.bspt.Element); +A(b,function(a,d,g){this.bspt=a;d==a.treeDepth&&(a.treeDepth=d+1);if(2!=g.count)throw new NullPointerException;this.dim=d%a.dimMax;g.sort(this.dim);a=new J.bspt.Leaf(a,g,1);this.minLeft=J.bspt.Node.getDimensionValue(g.tuples[0],this.dim);this.maxLeft=J.bspt.Node.getDimensionValue(g.tuples[g.count-1],this.dim);this.minRight=J.bspt.Node.getDimensionValue(a.tuples[0],this.dim);this.maxRight=J.bspt.Node.getDimensionValue(a.tuples[a.count-1],this.dim);this.eleLeft=g;this.eleRight=a;this.count=2},"J.bspt.Bspt,~N,J.bspt.Leaf"); +c(b,"addTuple",function(a,d){var g=J.bspt.Node.getDimensionValue(d,this.dim);++this.count;gthis.minRight?0:g==this.maxLeft?g==this.minRight?this.eleLeft.countthis.maxLeft&&(this.maxLeft=g),this.eleLeft=this.eleLeft.addTuple(a+1,d)):(gthis.maxRight&&(this.maxRight=g),this.eleRight=this.eleRight.addTuple(a+1,d));return this},"~N,JU.T3"); +b.getDimensionValue=c(b,"getDimensionValue",function(a,d){null==a&&System.out.println("bspt.Node ???");switch(d){case 0:return a.x;case 1:return a.y;default:return a.z}},"JU.T3,~N")});u("J.c");C(["java.lang.Enum"],"J.c.CBK",["JU.SB"],function(){var b=H(J.c,"CBK",Enum);b.getCallback=c(b,"getCallback",function(a){a=a.toUpperCase();var d=a.indexOf("CALLBACK");0a.indexOf("_"))for(var d, +g=0,b=J.c.PAL.values();ga.indexOf("_"))for(var d,g=0,b=J.c.PAL.values();gthis.id?"":a&&this.isProtein()?"protein":this.name()},"~B");c(b,"isProtein",function(){return 0<=this.id&&3>=this.id||7<=this.id});I(b,"NOT",0,[-1,4286611584]);I(b,"NONE",1,[0,4294967295]);I(b,"TURN",2,[1,4284514559]);I(b,"SHEET",3,[2,4294952960]);I(b,"HELIX",4,[3,4294901888]);I(b,"DNA",5,[4,4289593598]); +I(b,"RNA",6,[5,4294771042]);I(b,"CARBOHYDRATE",7,[6,4289111802]);I(b,"HELIX310",8,[7,4288675968]);I(b,"HELIXALPHA",9,[8,4294901888]);I(b,"HELIXPI",10,[9,4284481664]);I(b,"ANNOTATION",11,[-2,0])});u("J.c");C(["java.lang.Enum"],"J.c.VDW",null,function(){var b=v(function(){this.pt=0;this.type2=this.type=null;r(this,arguments)},J.c,"VDW",Enum);A(b,function(a,d,g){this.pt=a;this.type=d;this.type2=g},"~N,~S,~S");c(b,"getVdwLabel",function(){return null==this.type?this.type2:this.type});b.getVdwType=c(b, +"getVdwType",function(a){if(null!=a)for(var d,g=0,b=J.c.VDW.values();g=c)this.line3d.plotLineDeltaOld(y.getColorArgbOrGray(a),y.getColorArgbOrGray(d),e,h,k,this.dxB,this.dyB,this.dzB,this.clipped);else{m=0==g&&(this.clipped||2==b||0==b);this.diameter=c;this.xA=e;this.yA=h;this.zA=k;this.endcaps=b;this.shadesA=y.getShades(this.colixA=a);this.shadesB=y.getShades(this.colixB=d);this.calcArgbEndcap(!0, +!1);this.calcCosSin(this.dxB,this.dyB,this.dzB);this.calcPoints(3,!1);this.interpolate(0,1,this.xyzfRaster,this.xyztRaster);this.interpolate(1,2,this.xyzfRaster,this.xyztRaster);k=this.xyzfRaster;2==b&&this.renderFlatEndcap(!0,!1,k);y.setZMargin(5);a=y.width;d=y.zbuf;c=k[0];e=k[1];h=k[2];k=k[3];j=y.pixel;for(n=this.rasterCount;0<=--n;)s=k[n]>>8,G=s>>1,M=c[n],q=e[n],N=h[n],this.endCapHidden&&0!=this.argbEndcap&&(this.clipped?(y.plotPixelClippedArgb(this.argbEndcap,this.xEndcap+M,this.yEndcap+q,this.zEndcap- +N-1,a,d,j),y.plotPixelClippedArgb(this.argbEndcap,this.xEndcap-M,this.yEndcap-q,this.zEndcap+N-1,a,d,j)):(y.plotPixelUnclipped(this.argbEndcap,this.xEndcap+M,this.yEndcap+q,this.zEndcap-N-1,a,d,j),y.plotPixelUnclipped(this.argbEndcap,this.xEndcap-M,this.yEndcap-q,this.zEndcap+N-1,a,d,j))),this.line3d.plotLineDeltaAOld(this.shadesA,this.shadesB,g,s,this.xA+M,this.yA+q,this.zA-N,this.dxB,this.dyB,this.dzB,this.clipped),m&&this.line3d.plotLineDeltaOld(this.shadesA[G],this.shadesB[G],this.xA-M,this.yA- +q,this.zA+N,this.dxB,this.dyB,this.dzB,this.clipped);y.setZMargin(0);3==b&&this.renderSphericalEndcaps()}},"~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");c(b,"renderBitsFloat",function(a,d,g,b,c,e,h){var k=this.g3d;null==this.ptA0&&(this.ptA0=new JU.P3,this.ptB0=new JU.P3);this.ptA0.setT(e);var m=B(c/2)+1,j=Math.round(e.x),n=Math.round(e.y),q=Math.round(e.z),y=Math.round(h.x),s=Math.round(h.y),G=Math.round(h.z),M=k.clipCode3(j-m,n-m,q-m),j=k.clipCode3(j+m,n+m,q+m),n=k.clipCode3(y-m,s-m,G-m),m=k.clipCode3(y+ +m,s+m,G+m),y=M|j|n|m;this.clipped=0!=y;if(!(-1==y||0!=(M&m&j&n))){this.dxBf=h.x-e.x;this.dyBf=h.y-e.y;this.dzBf=h.z-e.z;0>8,j=G>>1,n=h[s],q=M[s],N=m[s];this.endCapHidden&&0!=this.argbEndcap&&(this.clipped?(k.plotPixelClippedArgb(this.argbEndcap,this.xEndcap+n,this.yEndcap+q,this.zEndcap-N-1,a,d,c),k.plotPixelClippedArgb(this.argbEndcap,this.xEndcap-n,this.yEndcap-q,this.zEndcap+N-1,a,d,c)):(k.plotPixelUnclipped(this.argbEndcap, +this.xEndcap+n,this.yEndcap+q,this.zEndcap-N-1,a,d,c),k.plotPixelUnclipped(this.argbEndcap,this.xEndcap-n,this.yEndcap-q,this.zEndcap+N-1,a,d,c)));this.ptA0.set(this.xA+n,this.yA+q,this.zA-N);this.ptB0.setT(this.ptA0);this.ptB0.x+=this.dxB;this.ptB0.y+=this.dyB;this.ptB0.z+=this.dzB;this.line3d.plotLineDeltaABitsFloat(this.shadesA,this.shadesB,G,this.ptA0,this.ptB0,g,this.clipped);e&&(this.ptA0.set(this.xA-n,this.yA-q,this.zA+N),this.ptB0.setT(this.ptA0),this.ptB0.x+=this.dxB,this.ptB0.y+=this.dyB, +this.ptB0.z+=this.dzB,this.line3d.plotLineDeltaABitsFloat(this.shadesA,this.shadesB,j,this.ptA0,this.ptB0,g,this.clipped))}k.setZMargin(0);3==b&&this.renderSphericalEndcaps();this.xAf+=this.dxBf;this.yAf+=this.dyBf;this.zAf+=this.dzBf}},"~N,~N,~N,~N,~N,JU.P3,JU.P3");c(b,"renderBits",function(a,d,g,b,c,e,h){var k=this.g3d;if(0==c||1==c)this.line3d.plotLineBits(k.getColorArgbOrGray(a),k.getColorArgbOrGray(d),e,h,0,0,!1);else{this.ptA0i.setT(e);var m=B(c/2)+1,j=e.x,n=e.y,q=e.z,y=h.x,s=h.y,G=h.z,M=k.clipCode3(j- +m,n-m,q-m),j=k.clipCode3(j+m,n+m,q+m),n=k.clipCode3(y-m,s-m,G-m),m=k.clipCode3(y+m,s+m,G+m),y=M|j|n|m;this.clipped=0!=y;if(!(-1==y||0!=(M&m&j&n))){this.dxBf=h.x-e.x;this.dyBf=h.y-e.y;this.dzBf=h.z-e.z;0>8,j=G>>1,n=h[s],q=M[s],N=m[s];this.endCapHidden&&0!=this.argbEndcap&&(this.clipped?(k.plotPixelClippedArgb(this.argbEndcap,this.xEndcap+n,this.yEndcap+q,this.zEndcap-N-1,a,d,c),k.plotPixelClippedArgb(this.argbEndcap, +this.xEndcap-n,this.yEndcap-q,this.zEndcap+N-1,a,d,c)):(k.plotPixelUnclipped(this.argbEndcap,this.xEndcap+n,this.yEndcap+q,this.zEndcap-N-1,a,d,c),k.plotPixelUnclipped(this.argbEndcap,this.xEndcap-n,this.yEndcap-q,this.zEndcap+N-1,a,d,c)));this.ptA0i.set(this.xA+n,this.yA+q,this.zA-N);this.ptB0i.setT(this.ptA0i);this.ptB0i.x+=this.dxB;this.ptB0i.y+=this.dyB;this.ptB0i.z+=this.dzB;this.line3d.plotLineDeltaABitsInt(this.shadesA,this.shadesB,G,this.ptA0i,this.ptB0i,g,this.clipped);e&&(this.ptA0i.set(this.xA- +n,this.yA-q,this.zA+N),this.ptB0i.setT(this.ptA0i),this.ptB0i.x+=this.dxB,this.ptB0i.y+=this.dyB,this.ptB0i.z+=this.dzB,this.line3d.plotLineDeltaABitsInt(this.shadesA,this.shadesB,j,this.ptA0i,this.ptB0i,g,this.clipped))}k.setZMargin(0);3==b&&this.renderSphericalEndcaps();this.xAf+=this.dxBf;this.yAf+=this.dyBf;this.zAf+=this.dzBf}}},"~N,~N,~N,~N,~N,JU.P3i,JU.P3i");c(b,"renderConeOld",function(a,d,g,b,c,e,h,k,m,j,n){this.dxBf=h-(this.xAf=b);this.dyBf=k-(this.yAf=c);this.dzBf=m-(this.zAf=e);this.xA= +B(Math.floor(this.xAf));this.yA=B(Math.floor(this.yAf));this.zA=B(Math.floor(this.zAf));this.dxB=B(Math.floor(this.dxBf));this.dyB=B(Math.floor(this.dyBf));this.dzB=B(Math.floor(this.dzBf));this.xTip=h;this.yTip=k;this.zTip=m;this.shadesA=this.g3d.getShades(this.colixA=a);var q=this.shader.getShadeIndex(this.dxB,this.dyB,-this.dzB);a=this.g3d;b=a.pixel;c=a.width;e=a.zbuf;a.plotPixelClippedArgb(this.shadesA[q],D(h),D(k),D(m),c,e,b);this.diameter=g;if(1>=g)1==g&&this.line3d.plotLineDeltaOld(this.colixA, +this.colixA,this.xA,this.yA,this.zA,this.dxB,this.dyB,this.dzB,this.clipped);else{this.endcaps=d;this.calcArgbEndcap(!1,!0);this.generateBaseEllipsePrecisely(n);!n&&2==this.endcaps&&this.renderFlatEndcap(!1,!0,this.xyzfRaster);a.setZMargin(5);d=this.xyztRaster[0];g=this.xyztRaster[1];h=this.xyztRaster[2];k=this.xyzfRaster[3];m=this.shadesA;for(var q=this.endCapHidden&&0!=this.argbEndcap,y=this.rasterCount;0<=--y;){var s=d[y],G=g[y],M=h[y],N=k[y]>>8,p=this.xAf+s,u=this.yAf+G,r=this.zAf-M,s=this.xAf- +s,G=this.yAf-G,M=this.zAf+M,v=m[0];q&&(a.plotPixelClippedArgb(this.argbEndcap,D(p),D(u),D(r),c,e,b),a.plotPixelClippedArgb(this.argbEndcap,D(s),D(G),D(M),c,e,b));0!=v&&(this.line3d.plotLineDeltaAOld(m,m,0,N,D(p),D(u),D(r),B(Math.ceil(this.xTip-p)),B(Math.ceil(this.yTip-u)),B(Math.ceil(this.zTip-r)),!0),j&&(this.line3d.plotLineDeltaAOld(m,m,0,N,D(p),D(u)+1,D(r),B(Math.ceil(this.xTip-p)),B(Math.ceil(this.yTip-u))+1,B(Math.ceil(this.zTip-r)),!0),this.line3d.plotLineDeltaAOld(m,m,0,N,D(p)+1,D(u),D(r), +B(Math.ceil(this.xTip-p))+1,B(Math.ceil(this.yTip-u)),B(Math.ceil(this.zTip-r)),!0)),!n&&!(2!=this.endcaps&&0=d[0].length)for(;this.rasterCount>=d[0].length;){for(var b=4;0<=--b;)d[b]=JU.AU.doubleLengthI(d[b]);g[3]=JU.AU.doubleLengthF(g[3])}if(a)for(;this.rasterCount>=g[0].length;)for(b=3;0<=--b;)g[b]=JU.AU.doubleLengthF(g[b]);return this.rasterCount++},"~B,~A,~A");c(b,"interpolate",function(a,d,g,b){var c=g[0],e=g[1],c=c[d]-c[a];0>c&&(c=-c);e=e[d]-e[a];0>e&&(e=-e);if(!(1>=c+e)){for(var h=this.allocRaster(!1,g,b),c=g[0],e=g[1], +k=g[3],m=b[3][a],j=b[3][d],n=4;0<=--n;){var q=(m+j)/2;this.calcRotatedPoint(q,h,!1,g,b);if(c[h]==c[a]&&e[h]==e[a])k[a]=k[a]+k[h]>>>1,m=q;else if(c[h]==c[d]&&e[h]==e[d])k[d]=k[d]+k[h]>>>1,j=q;else{this.interpolate(a,h,g,b);this.interpolate(h,d,g,b);return}}c[h]=c[a];e[h]=e[d]}},"~N,~N,~A,~A");c(b,"interpolatePrecisely",function(a,d,g,b){var c=b[0],e=b[1],h=B(Math.floor(c[d]))-B(Math.floor(c[a]));0>h&&(h=-h);e=B(Math.floor(e[d]))-B(Math.floor(e[a]));0>e&&(e=-e);if(!(1>=h+e)){for(var e=b[3],h=e[a],k= +e[d],m=this.allocRaster(!0,g,b),c=b[0],e=b[1],j=g[3],n=4;0<=--n;){var q=(h+k)/2;this.calcRotatedPoint(q,m,!0,g,b);if(B(Math.floor(c[m]))==B(Math.floor(c[a]))&&B(Math.floor(e[m]))==B(Math.floor(e[a])))j[a]=j[a]+j[m]>>>1,h=q;else if(B(Math.floor(c[m]))==B(Math.floor(c[d]))&&B(Math.floor(e[m]))==B(Math.floor(e[d])))j[d]=j[d]+j[m]>>>1,k=q;else{this.interpolatePrecisely(a,m,g,b);this.interpolatePrecisely(m,d,g,b);return}}c[m]=c[a];e[m]=e[d]}},"~N,~N,~A,~A");c(b,"renderFlatEndcap",function(a,d,g){var b, +c;if(d){if(0==this.dzBf||0==this.colixEndcap||!this.g3d.setC(this.colixEndcap))return;d=this.xAf;b=this.yAf;c=this.zAf;a&&0>this.dzBf&&(d+=this.dxBf,b+=this.dyBf,c+=this.dzBf);d=D(d);b=D(b);c=D(c)}else{if(0==this.dzB||0==this.colixEndcap||!this.g3d.setC(this.colixEndcap))return;d=this.xAend;b=this.yAend;c=this.zAend;a&&0>this.dzB&&(d+=this.dxB,b+=this.dyB,c+=this.dzB)}var e=g[1][0];a=g[1][0];var h=0,k=0,m=g[0],j=g[1];g=g[2];for(var n=this.rasterCount;0<--n;){var q=j[n];qa?a=q:(q=-q,qa&&(a=q))}for(q=e;q<=a;++q){for(var e=2147483647,y=-2147483648,n=this.rasterCount;0<=--n;){if(j[n]==q){var s=m[n];sy&&(y=s,k=g[n])}j[n]==-q&&(s=-m[n],sy&&(y=s,k=-g[n]))}n=y-e+1;this.g3d.setColorNoisy(this.endcapShadeIndex);this.g3d.plotPixelsClippedRaster(n,d+e,b+q,c-h-1,c-k-1,null,null)}},"~B,~B,~A");c(b,"renderSphericalEndcaps",function(){0!=this.colixA&&this.g3d.setC(this.colixA)&&this.g3d.fillSphereXYZ(this.diameter,this.xA,this.yA,this.zA+1);0!=this.colixB&& +this.g3d.setC(this.colixB)&&this.g3d.fillSphereXYZ(this.diameter,this.xA+this.dxB,this.yA+this.dyB,this.zA+this.dzB+1)});c(b,"calcArgbEndcap",function(a,d){this.tEvenDiameter=0==(this.diameter&1);this.radius=this.diameter/2;this.radius2=this.radius*this.radius;this.endCapHidden=!1;var g=d?this.dzBf:this.dzB;if(!(3==this.endcaps||0==g)){this.xEndcap=this.xAend=this.xA;this.yEndcap=this.yAend=this.yA;this.zEndcap=this.zAend=this.zA;var b=d?this.dxBf:this.dxB,c=d?this.dyBf:this.dyB;0<=g||!a?(this.endcapShadeIndex= +this.shader.getShadeIndex(-b,-c,g),0==this.colixA?(this.xAend+=B(this.dxB/2),this.yAend+=B(this.dyB/2),this.zAend+=B(this.dzB/2),this.colixEndcap=this.colixB):this.colixEndcap=this.colixA):(this.endcapShadeIndex=this.shader.getShadeIndex(b,c,-g),0==this.colixB?(this.colixEndcap=this.colixA,this.xAend-=B(this.dxB/2),this.yAend-=B(this.dyB/2),this.zAend-=B(this.dzB/2)):(this.colixEndcap=this.colixB,this.xEndcap+=this.dxB,this.yEndcap+=this.dyB,this.zEndcap+=this.dzB));g=this.colixEndcap==this.colixA? +this.shadesA:this.shadesB;56>24&15){case 0:g=b;a=c;break;case 1:g=(b<<2)+(b<<1)+b+g>>3&16711935;a=(c<<2)+ +(c<<1)+c+a>>3&65280;break;case 2:g=(b<<1)+b+g>>2&16711935;a=(c<<1)+c+a>>2&65280;break;case 3:g=(b<<2)+b+(g<<1)+g>>3&16711935;a=(c<<2)+c+(a<<1)+a>>3&65280;break;case 4:g=g+b>>1&16711935;a=a+c>> +1&65280;break;case 5:g=(b<<1)+b+(g<<2)+g>>3&16711935;a=(c<<1)+c+(a<<2)+a>>3&65280;break;case 6:g=(g<<1)+g+b>>2&16711935;a=(a<<1)+a+c>>2&65280;break;case 7:g=(g<<2)+(g<<1)+g+b>>3&16711935,a=(a<<2)+(a<<1)+a+c>>3&65280}return 4278190080|g|a},"~N,~N,~N");j(b,"getScreenImage",function(a){var d=this.platform.bufferedImage;a&&this.releaseBuffers();return d},"~B");j(b,"applyAnaglygh",function(a,d){switch(a){case J.c.STER.REDCYAN:for(var g=this.anaglyphLength;0<=--g;){var b=this.anaglyphChannelBytes[g]&255; +this.pbuf[g]=this.pbuf[g]&4294901760|b<<8|b}break;case J.c.STER.CUSTOM:for(var b=d[0],c=d[1]&16777215,g=this.anaglyphLength;0<=--g;){var e=this.anaglyphChannelBytes[g]&255,e=(e|(e|e<<8)<<8)&c;this.pbuf[g]=this.pbuf[g]&b|e}break;case J.c.STER.REDBLUE:for(g=this.anaglyphLength;0<=--g;)b=this.anaglyphChannelBytes[g]&255,this.pbuf[g]=this.pbuf[g]&4294901760|b;break;case J.c.STER.REDGREEN:for(g=this.anaglyphLength;0<=--g;)this.pbuf[g]=this.pbuf[g]&4294901760|(this.anaglyphChannelBytes[g]&255)<<8}},"J.c.STER,~A"); +j(b,"snapshotAnaglyphChannelBytes",function(){if(this.currentlyRendering)throw new NullPointerException;this.anaglyphLength=this.windowWidth*this.windowHeight;if(null==this.anaglyphChannelBytes||this.anaglyphChannelBytes.length!=this.anaglyphLength)this.anaglyphChannelBytes=Q(this.anaglyphLength,0);for(var a=this.anaglyphLength;0<=--a;)this.anaglyphChannelBytes[a]=this.pbuf[a]});j(b,"releaseScreenImage",function(){this.platform.clearScreenBufferThreaded()});j(b,"haveTranslucentObjects",function(){return this.$haveTranslucentObjects}); +j(b,"setSlabAndZShade",function(a,d,g,b,c){this.setSlab(a);this.setDepth(d);g>2&1061109567)<<2,h=h+((h&3233857728)>>6),k=0,m=0,e=g;0<=--e;m+=c)for(g=d;0<=--g;++k){var j=(a[m]>>2&1061109567)+(a[m++ +c]>>2&1061109567)+(a[m]>>2&1061109567)+(a[m++ +c]>>2&1061109567),j=j+((j&3233857728)>>6);j==h&&(j=b);a[k]=j&16777215|4278190080}},"~A,~N,~N,~N");b.downsample2dZ=c(b,"downsample2dZ", +function(a,d,g,b,c){for(var e=g<<1,h=0,k=0;0<=--b;k+=e)for(var m=g;0<=--m;++h,++k){var j=Math.min(d[k],d[k+e]),j=Math.min(j,d[++k]),j=Math.min(j,d[k+e]);2147483647!=j&&(j>>=1);d[h]=a[h]==c?2147483647:j}},"~A,~A,~N,~N,~N");c(b,"hasContent",function(){return this.platform.hasContent()});j(b,"setC",function(a){var d=JU.C.isColixLastAvailable(a);if(!d&&a==this.colixCurrent&&-1==this.currentShadeIndex)return!0;var g=a&30720;if(16384==g)return!1;this.renderLow&&(g=0);var b=0!=g,c=b&&30720==g;this.setScreened(c); +if(!this.checkTranslucent(b&&!c))return!1;this.isPass2?(this.translucencyMask=g<<13|16777215,this.translucencyLog=g>>11):this.translucencyLog=0;this.colixCurrent=a;d&&this.argbCurrent!=this.lastRawColor&&(0==this.argbCurrent&&(this.argbCurrent=4294967295),this.lastRawColor=this.argbCurrent,this.shader.setLastColix(this.argbCurrent,this.inGreyscaleMode));this.shadesCurrent=this.getShades(a);this.currentShadeIndex=-1;this.setColor(this.getColorArgbOrGray(a));return!0},"~N");c(b,"setScreened",function(a){this.wasScreened!= +a&&((this.wasScreened=a)?(null==this.pixelScreened&&(this.pixelScreened=new J.g3d.PixelatorScreened(this,this.pixel0)),null==this.pixel.p0?this.pixel=this.pixelScreened:this.pixel.p0=this.pixelScreened):null==this.pixel.p0||this.pixel===this.pixelScreened?this.pixel=this.isPass2?this.pixelT0:this.pixel0:this.pixel.p0=this.isPass2?this.pixelT0:this.pixel0);return this.pixel},"~B");j(b,"drawFilledCircle",function(a,d,g,b,c,e){if(!this.isClippedZ(e)){var h=B((g+1)/2),h=b=this.width||c= +this.height;if(!h||!this.isClippedXY(g,b,c))0!=a&&this.setC(a)&&(h?this.isClippedXY(g,b,c)||this.circle3d.plotCircleCenteredClipped(b,c,e,g):this.circle3d.plotCircleCenteredUnclipped(b,c,e,g)),0!=d&&this.setC(d)&&(h?this.circle3d.plotFilledCircleCenteredClipped(b,c,e,g):this.circle3d.plotFilledCircleCenteredUnclipped(b,c,e,g))}},"~N,~N,~N,~N,~N,~N");j(b,"volumeRender4",function(a,d,g,b){if(1==a)this.plotPixelClippedArgb(this.argbCurrent,d,g,b,this.width,this.zbuf,this.pixel);else if(!this.isClippedZ(b)){var c= +B((a+1)/2),c=d=this.width||g=this.height;if(!c||!this.isClippedXY(a,d,g))c?this.circle3d.plotFilledCircleCenteredClipped(d,g,b,a):this.circle3d.plotFilledCircleCenteredUnclipped(d,g,b,a)}},"~N,~N,~N,~N");j(b,"fillSphereXYZ",function(a,d,g,b){switch(a){case 1:this.plotPixelClippedArgb(this.argbCurrent,d,g,b,this.width,this.zbuf,this.pixel);return;case 0:return}a<=(this.antialiasThisFrame?2E3:1E3)&&this.sphere3d.render(this.shadesCurrent,a,d,g,b,null,null,null,-1,null)},"~N,~N,~N,~N"); +j(b,"volumeRender",function(a){a?(this.saveAmbient=this.getAmbientPercent(),this.saveDiffuse=this.getDiffusePercent(),this.setAmbientPercent(100),this.setDiffusePercent(0),this.addRenderer(1073741880)):(this.setAmbientPercent(this.saveAmbient),this.setDiffusePercent(this.saveDiffuse))},"~B");j(b,"fillSphereI",function(a,d){this.fillSphereXYZ(a,d.x,d.y,d.z)},"~N,JU.P3i");j(b,"fillSphereBits",function(a,d){this.fillSphereXYZ(a,Math.round(d.x),Math.round(d.y),Math.round(d.z))},"~N,JU.P3");j(b,"fillEllipsoid", +function(a,d,g,b,c,e,h,k,m,j,n){switch(e){case 1:this.plotPixelClippedArgb(this.argbCurrent,g,b,c,this.width,this.zbuf,this.pixel);return;case 0:return}e<=(this.antialiasThisFrame?2E3:1E3)&&this.sphere3d.render(this.shadesCurrent,e,g,b,c,h,k,m,j,n)},"JU.P3,~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A");j(b,"drawRect",function(a,d,g,b,c,e){if(!(0!=b&&this.isClippedZ(b))){b=c-1;e-=1;c=a+b;var h=d+e;0<=d&&db&&(a+=b,b=-b);0>a&&(b+=a,a=0);a+b>=this.width&&(b=this.width-1-a);var c=this.pixel,e=this.argbCurrent;a+=this.width*d;for(d=0;d<=b;d++)gb&&(d+=b,b=-b);0>d&&(b+=d,d=0);d+b>=this.height&&(b=this.height-1-d);a+=this.width*d;d=this.pixel;for(var c=this.argbCurrent,e=0;e<=b;e++)ga){c+=a;if(0>=c)return;a=0}if(a+c>b&&(c=b-a,0>=c))return;if(0>d){e+=d;if(0>=e)return;d=0}d+e>this.height&&(e=this.height-d);var h=this.argbCurrent;this.isAntialiased()&&(h=J.g3d.Graphics3D.fixTextImageRGB(h));for(var k=this.zbuf,m=this.pixel;0<=--e;)this.plotPixelsUnclippedCount(h,c,a,d++,g,b,k,m)}},"~N,~N,~N,~N,~N,~N");j(b,"drawString",function(a,d,g,b,c,e,h){this.currentShadeIndex= +0;null!=a&&(this.isClippedZ(e)||this.drawStringNoSlab(a,d,g,b,c,h))},"~S,JU.Font,~N,~N,~N,~N,~N");j(b,"drawStringNoSlab",function(a,d,g,b,c,e){if(null!=a){null==this.strings&&(this.strings=Array(10));this.stringCount==this.strings.length&&(this.strings=JU.AU.doubleLength(this.strings));var h=new J.g3d.TextString;h.setText(a,null==d?this.currentFont:this.currentFont=d,this.argbCurrent,JU.C.isColixTranslucent(e)?this.getColorArgbOrGray(e)&16777215|(e&30720)<<13:0,g,b,c);this.strings[this.stringCount++]= +h}},"~S,JU.Font,~N,~N,~N,~N");j(b,"renderAllStrings",function(a){if(null!=this.strings){2<=this.stringCount&&(null==J.g3d.Graphics3D.sort&&(J.g3d.Graphics3D.sort=new J.g3d.TextString),java.util.Arrays.sort(this.strings,J.g3d.Graphics3D.sort));for(var d=0;d=a+h||a>=this.width||0>=d+k||d>=this.height))if(b=this.apiPlatform.drawImageToBuffer(null, +this.platform.offscreenImage,b,h,k,m?e:0),null!=b){var m=this.zbuf,j=this.width,n=this.pixel,q=this.height,y=this.translucencyLog;if(null==c&&0<=a&&a+h<=j&&0<=d&&d+k<=q){var s=0,G=0;for(a=d*j+a;sb||(this.plotPoints(a,d,c,e),this.plotPoints(a,d,c,e));else this.plotPoints(a,d,0,0)},"~N,~A,~N");j(b,"drawDashedLineBits",function(a,d,g,b){this.isAntialiased()&&(a+=a,d+=d);this.setScreeni(g,this.sA);this.setScreeni(b,this.sB); +this.drawLineABBits(a,d,!0)},"~N,~N,JU.P3,JU.P3");c(b,"drawLineABBits",function(a,d,g){this.line3d.plotLineBits(this.argbCurrent,this.argbCurrent,this.sA,this.sB,a,d,g);Math.abs(this.sA.x-this.sB.x) +this.ht3)){var n=0;this.currentShadeIndex=0;this.setC(d)||(d=0);this.wasScreened&&(n=2);this.setC(a)||(a=0);this.wasScreened&&(n+=1);0==a&&0==d||this.cylinder3d.renderOld(a,d,n,g,b,c,e,h,k,m,j)}},"~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");j(b,"fillCylinderScreen3I",function(a,d,g,b){d<=this.ht3&&this.cylinder3d.renderOld(this.colixCurrent,this.colixCurrent,0,a,d,D(g.x),D(g.y),D(g.z),D(b.x),D(b.y),D(b.z))},"~N,~N,JU.P3,JU.P3,JU.P3,JU.P3,~N");j(b,"fillCylinder",function(a,d,g,b){d<=this.ht3&&this.cylinder3d.renderOld(this.colixCurrent, +this.colixCurrent,0,a,d,g.x,g.y,g.z,b.x,b.y,b.z)},"~N,~N,JU.P3i,JU.P3i");j(b,"fillCylinderBits",function(a,d,g,b){d<=this.ht3&&(1!=g.z&&1!=b.z)&&(0==d||1==d?(this.setScreeni(g,this.sA),this.setScreeni(b,this.sB),this.line3d.plotLineBits(this.getColorArgbOrGray(this.colixCurrent),this.getColorArgbOrGray(this.colixCurrent),this.sA,this.sB,0,0,!1)):this.cylinder3d.renderBitsFloat(this.colixCurrent,this.colixCurrent,0,a,d,g,b))},"~N,~N,JU.P3,JU.P3");j(b,"fillCylinderBits2",function(a,d,g,b,c,e){if(!(b> +this.ht3)){var h=0;this.currentShadeIndex=0;this.setC(d)||(d=0);this.wasScreened&&(h=2);this.setC(a)||(a=0);this.wasScreened&&(h+=1);0==a&&0==d||(this.setScreeni(c,this.sA),this.setScreeni(e,this.sB),this.cylinder3d.renderBits(a,d,h,g,b,this.sA,this.sB))}},"~N,~N,~N,~N,JU.P3,JU.P3");j(b,"fillConeScreen3f",function(a,d,g,b,c){d<=this.ht3&&this.cylinder3d.renderConeOld(this.colixCurrent,a,d,g.x,g.y,g.z,b.x,b.y,b.z,!0,c)},"~N,~N,JU.P3,JU.P3,~B");j(b,"drawHermite4",function(a,d,g,b,c){this.hermite3d.renderHermiteRope(!1, +a,0,0,0,d,g,b,c)},"~N,JU.P3,JU.P3,JU.P3,JU.P3");j(b,"drawHermite7",function(a,d,g,b,c,e,h,k,m,j,n,q,y){if(0==y)this.hermite3d.renderHermiteRibbon(a,d,g,b,c,e,h,k,m,j,n,q,0);else{this.hermite3d.renderHermiteRibbon(a,d,g,b,c,e,h,k,m,j,n,q,1);var s=this.colixCurrent;this.setC(y);this.hermite3d.renderHermiteRibbon(a,d,g,b,c,e,h,k,m,j,n,q,-1);this.setC(s)}},"~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N");j(b,"fillHermite",function(a,d,g,b,c,e,h,k){this.hermite3d.renderHermiteRope(!0, +a,d,g,b,c,e,h,k)},"~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3");j(b,"drawTriangle3C",function(a,d,g,b,c,e,h){1==(h&1)&&this.drawLine(d,b,a.x,a.y,a.z,g.x,g.y,g.z);2==(h&2)&&this.drawLine(b,e,g.x,g.y,g.z,c.x,c.y,c.z);4==(h&4)&&this.drawLine(d,e,a.x,a.y,a.z,c.x,c.y,c.z)},"JU.P3i,~N,JU.P3i,~N,JU.P3i,~N,~N");j(b,"fillTriangleTwoSided",function(a,d,g,b){this.setColorNoisy(this.getShadeIndex(a));this.fillTriangleP3f(d,g,b,!1)},"~N,JU.P3,JU.P3,JU.P3");c(b,"fillTriangleP3f",function(a,d,g,b){this.setScreeni(a,this.sA); +this.setScreeni(d,this.sB);this.setScreeni(g,this.sC);this.triangle3d.fillTriangle(this.sA,this.sB,this.sC,b)},"JU.P3,JU.P3,JU.P3,~B");j(b,"fillTriangle3f",function(a,d,g,b){var c=this.getShadeIndexP3(a,d,g,b);0>c||(b?this.setColorNoisy(c):this.setColor(this.shadesCurrent[c]),this.fillTriangleP3f(a,d,g,!1))},"JU.P3,JU.P3,JU.P3,~B");j(b,"fillTriangle3i",function(a,d,g,b,c,e,h){h&&(b=this.vectorAB,b.set(d.x-a.x,d.y-a.y,d.z-a.z),null==g?b=this.shader.getShadeIndex(-b.x,-b.y,b.z):(this.vectorAC.set(g.x- +a.x,g.y-a.y,g.z-a.z),b.cross(b,this.vectorAC),b=0<=b.z?this.shader.getShadeIndex(-b.x,-b.y,b.z):this.shader.getShadeIndex(b.x,b.y,-b.z)),56a?this.shadeIndexes2Sided[~a]:this.shadeIndexes[a]},"~N");c(b,"setTriangleTranslucency",function(a,d,g){this.isPass2&&(a&=14336,d&=14336,g&=14336,this.translucencyMask=(JU.GData.roundInt(B((a+d+g)/3))&30720)<<13|16777215)},"~N,~N,~N");j(b,"fillQuadrilateral",function(a,d,g,b,c){c=this.getShadeIndexP3(a,d,g,c);0>c||(this.setColorNoisy(c),this.fillTriangleP3f(a,d,g,!1),this.fillTriangleP3f(a,g,b,!1))},"JU.P3,JU.P3,JU.P3,JU.P3,~B"); +j(b,"drawSurface",function(){},"JU.MeshSurface,~N");j(b,"plotPixelClippedP3i",function(a){this.plotPixelClippedArgb(this.argbCurrent,a.x,a.y,a.z,this.width,this.zbuf,this.pixel)},"JU.P3i");c(b,"plotPixelClippedArgb",function(a,d,g,b,c,e,h){this.isClipped3(d,g,b)||(d=g*c+d,bd||(d>=h||0>b||b>=k)||j.addImagePixel(f,n,b*h+d,c,a,e)},"~N,~N,~N,~N,~N,~N,~N,~N,~A,~O,~N");c(b,"plotPixelsClippedRaster",function(a,d,b,c,f,e,h){var k,m;if(!(0>=a||0>b||b>=this.height||d>=this.width||c<(m=this.slab)&&f(k=this.depth)&&f>k)){var j=this.zbuf,n=(d<<16)+(b<<1)^858993459,q=(c<<10)+512;c=f-c;f=B(a/2);c=JU.GData.roundInt(B(((c<<10)+(0<=c?f:-f))/a));if(0>d){d=-d;q+=c*d;a-=d;if(0>=a)return;d=0}a+d>this.width&&(a=this.width-d);d=b*this.width+d;b=this.pixel;if(null==e){e= +this.argbNoisyDn;f=this.argbNoisyUp;for(var y=this.argbCurrent;0<=--a;){h=q>>10;if(h>=m&&h<=k&&h>16&7;b.addPixel(d,h,0==s?e:1==s?f:y)}++d;q+=c}}else{n=e.r<<8;f=B((h.r-e.r<<8)/a);y=e.g;s=B((h.g-y)/a);e=e.b;for(var G=B((h.b-e)/a);0<=--a;)h=q>>10,h>=m&&(h<=k&&h>8&255),++d,q+=c,n+=f,y+=s,e+=G}}},"~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16");c(b,"plotPixelsUnclippedRaster",function(a,d,b,c,f,e,h){if(!(0>=a)){var k= +((d<<16)+(b<<1)^858993459)&2147483647,m=(c<<10)+512;c=f-c;f=B(a/2);c=JU.GData.roundInt(B(((c<<10)+(0<=c?f:-f))/a));d=b*this.width+d;b=this.zbuf;f=this.pixel;if(null==e){e=this.argbNoisyDn;for(var j=this.argbNoisyUp,n=this.argbCurrent;0<=--a;){h=m>>10;if(h>16&7;f.addPixel(d,h,0==q?e:1==q?j:n)}++d;m+=c}}else{k=e.r<<8;j=JU.GData.roundInt(B((h.r-e.r<<8)/a));n=e.g;q=JU.GData.roundInt(B((h.g-n)/a));e=e.b;for(var y=JU.GData.roundInt(B((h.b-e)/a));0<=--a;)h=m>> +10,h>8&255),++d,m+=c,k+=j,n+=q,e+=y}}},"~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16");c(b,"plotPixelsClippedRasterBits",function(a,d,b,c,f,e,h,k,m){var j,n;if(!(0>=a||0>b||b>=this.height||d>=this.width||c<(n=this.slab)&&f(j=this.depth)&&f>j)){c=this.zbuf;var q=(d<<16)+(b<<1)^858993459;if(0>d){a-=-d;if(0>=a)return;d=0}a+d>this.width&&(a=this.width-d);b=b*this.width+d;f=this.pixel;if(null==e){e=this.argbNoisyDn;for(var y=this.argbNoisyUp,s=this.argbCurrent;0<= +--a;){h=this.line3d.getZCurrent(k,m,d++);if(h>=n&&h<=j&&h>16&7;f.addPixel(b,h,2>G?e:6>G?y:s)}++b}}else{q=e.r<<8;y=B((h.r-e.r<<8)/a);s=e.g;G=B((h.g-s)/a);e=e.b;for(var M=B((h.b-e)/a);0<=--a;)h=this.line3d.getZCurrent(k,m,d++),h>=n&&(h<=j&&h>8&255),++b,q+=y,s+=G,e+=M}}},"~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N");c(b,"plotPixelsUnclippedRasterBits",function(a,d,b,c,f,e,h){if(!(0>=a)){var k=((d<<16)+(b<< +1)^858993459)&2147483647;b=b*this.width+d;var m=this.zbuf,j=this.pixel;if(null==c)for(var n=this.argbNoisyDn,q=this.argbNoisyUp,y=this.argbCurrent;0<=--a;)f=this.line3d.getZCurrent(e,h,d++),f>16&7,j.addPixel(b,f,0==c?n:1==c?q:y)),++b;else{k=c.r<<8;n=JU.GData.roundInt(B((f.r-c.r<<8)/a));q=c.g;y=JU.GData.roundInt(B((f.g-q)/a));c=c.b;for(var s=JU.GData.roundInt(B((f.b-c)/a));0<=--a;)f=this.line3d.getZCurrent(e,h,d++),f>8&255),++b,k+=n,q+=y,c+=s}}},"~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N");c(b,"plotPixelsUnclippedCount",function(a,d,b,c,f,e,h,k){for(b=c*e+b;0<=--d;)fa?a+1:63];this.argbNoisyDn=this.shadesCurrent[0a.z?this.shader.getShadeIndex(a.x,a.y,-a.z):c?-1:this.shader.getShadeIndex(-a.x,-a.y,a.z)},"JU.P3,JU.P3,JU.P3,~B");j(b,"renderBackground",function(a){null!=this.backgroundImage&&this.plotImage(-2147483648,0,-2147483648,this.backgroundImage,a,0,0,0)},"J.api.JmolRendererInterface");j(b,"drawAtom",function(a){this.fillSphereXYZ(a.sD,a.sX,a.sY,a.sZ)},"JM.Atom,~N");j(b,"getExportType",function(){return 0});j(b,"getExportName",function(){return null});c(b,"canDoTriangles",function(){return!0}); +c(b,"isCartesianExport",function(){return!1});j(b,"initializeExporter",function(){return null},"JV.Viewer,~N,JU.GData,java.util.Map");j(b,"finalizeOutput",function(){return null});j(b,"drawBond",function(){},"JU.P3,JU.P3,~N,~N,~N,~N,~N");j(b,"drawEllipse",function(){return!1},"JU.P3,JU.P3,JU.P3,~B,~B");c(b,"getPrivateKey",function(){return 0});j(b,"clearFontCache",function(){J.g3d.TextRenderer.clearFontCache()});c(b,"setRotationMatrix",function(a){for(var d=JU.Normix.getVertexVectors(),b=JU.GData.normixCount;0<= +--b;){var c=this.transformedVectors[b];a.rotate2(d[b],c);this.shadeIndexes[b]=this.shader.getShadeB(c.x,-c.y,c.z);this.shadeIndexes2Sided[b]=0<=c.z?this.shadeIndexes[b]:this.shader.getShadeB(-c.x,c.y,-c.z)}},"JU.M3");j(b,"renderCrossHairs",function(a,d,b,c,f){d=this.isAntialiased();this.setC(0>f?10:100>=1;this.setC(a[1]c.x?21:11);this.drawRect(f+k,b,e,0,k,d);this.setC(a[3]c.y?21:11);this.drawRect(f,b+k,e,0,d,k)},"~A,~N,~N,JU.P3,~N");j(b,"initializeOutput",function(){return!1},"JV.Viewer,~N,java.util.Map");b.fixTextImageRGB=c(b,"fixTextImageRGB",function(a){return 0==(a&12632256)?a|263172:a},"~N");b.sort=null;b.nullShadeIndex=50});u("J.g3d"); +C(["J.g3d.PrecisionRenderer","java.util.Hashtable"],"J.g3d.LineRenderer",["JU.BS"],function(){var b=v(function(){this.lineBits=this.shader=this.g3d=null;this.slope=0;this.lineTypeX=!1;this.nBits=0;this.slopeKey=this.lineCache=null;this.z2t=this.y2t=this.x2t=this.z1t=this.y1t=this.x1t=0;r(this,arguments)},J.g3d,"LineRenderer",J.g3d.PrecisionRenderer);P(b,function(){this.lineCache=new java.util.Hashtable});A(b,function(a){L(this,J.g3d.LineRenderer,[]);this.g3d=a;this.shader=a.shader},"J.g3d.Graphics3D"); +c(b,"setLineBits",function(a,d){this.slope=0!=a?d/a:0<=d?3.4028235E38:-3.4028235E38;this.nBits=(this.lineTypeX=1>=this.slope&&-1<=this.slope)?this.g3d.width:this.g3d.height;this.slopeKey=Float.$valueOf(this.slope);if(this.lineCache.containsKey(this.slopeKey))this.lineBits=this.lineCache.get(this.slopeKey);else{this.lineBits=JU.BS.newN(this.nBits);d=Math.abs(d);a=Math.abs(a);if(d>a){var b=a;a=d;d=b}for(var b=0,c=a+a,f=d+d,e=0;ea&&(this.lineBits.set(e),b-=c);this.lineCache.put(this.slopeKey, +this.lineBits)}},"~N,~N");c(b,"clearLineCache",function(){this.lineCache.clear()});c(b,"plotLineOld",function(a,d,b,c,f,e,h,k){this.x1t=b;this.x2t=e;this.y1t=c;this.y2t=h;this.z1t=f;this.z2t=k;var m=!0;switch(this.getTrimmedLineImpl()){case 0:m=!1;break;case 2:return}this.plotLineClippedOld(a,d,b,c,f,e-b,h-c,k-f,m,0,0)},"~N,~N,~N,~N,~N,~N,~N,~N");c(b,"plotLineDeltaOld",function(a,d,b,c,f,e,h,k,m){this.x1t=b;this.x2t=b+e;this.y1t=c;this.y2t=c+h;this.z1t=f;this.z2t=f+k;if(m)switch(this.getTrimmedLineImpl()){case 2:return; +case 0:m=!1}this.plotLineClippedOld(a,d,b,c,f,e,h,k,m,0,0)},"~N,~N,~N,~N,~N,~N,~N,~N,~B");c(b,"plotLineDeltaAOld",function(a,d,b,c,f,e,h,k,m,j,n){this.x1t=f;this.x2t=f+k;this.y1t=e;this.y2t=e+m;this.z1t=h;this.z2t=h+j;if(n)switch(this.getTrimmedLineImpl()){case 2:return;case 0:n=!1}var q=this.g3d.zbuf,y=this.g3d.width,s=0,G=e*y+f,M=this.g3d.bufferSize,N=63>c?c+1:c,p=0k&&(k=-k,n=-1);0>m&&(m=-m,p=-y);y=k+k;e=m+m;h<<=10;if(m<=k){var w=k-1;0>j&&(w=-w);j=B(((j<<10)+w)/k);m=0;w=Math.abs(f-this.x2t)-1;f=Math.abs(f-this.x1t)-1;for(var z=k-1,A=B(z/2);--z>=w;){if(z==A){a=v;if(0==a)break;u=N;r=d;0!=b%3&&(c=this.g3d.setScreened(2==(b&2)),this.g3d.currentShadeIndex=0)}G+=n;h+=j;m+=e;m>k&&(G+=p,m-=y);if(0!=a&&zs){var C=h>>10;if(CD?r:170j&&(w=-w);j=B(((j<<10)+w)/m);k=0;w=Math.abs(z-this.y2t)-1;f=Math.abs(z-this.y1t)-1;z=m-1;for(A=B(z/2);--z>=w;){if(z==A){a=v;if(0==a)break;u=N;r=d;0!=b%3&&(c=this.g3d.setScreened(2==(b&2)),this.g3d.currentShadeIndex=0)}G+=p;h+=j;k+=y;k>m&&(G+=n,k-=e);0!=a&&(zs)&&(C=h>>10,CD?r:170b?b+1:b,q=0n)&&(c=this.getZCurrent(this.a,this.b,N),cM?G:170r;)r+=this.nBits;this.lineBits.get(r%this.nBits)&&(q+=s)}}},"~A,~A,~N,JU.P3,JU.P3,~N,~B");c(b,"plotLineDeltaABitsInt",function(a,d,b,c,f,e,h){var k=c.x,m=c.y,j=c.z,n=f.x,q=f.y,y=f.z,s=n-k,G=q-m;this.x1t=k;this.x2t=n;this.y1t=m;this.y2t=q;this.z1t=j;this.z2t=y;if(!(h&&2==this.getTrimmedLineImpl())){h=this.g3d.zbuf;var M=this.g3d.width,n=0,y=63>b?b+1:b,q=0n)&& +(c=this.getZCurrent(this.a,this.b,N),cM?G:170u;)u+=this.nBits;this.lineBits.get(u%this.nBits)&&(q+=s)}}},"~A,~A,~N,JU.P3i,JU.P3i,~N,~B");c(b,"plotLineBits",function(a,d,b,c,f,e,h){if(!(1>=b.z||1>=c.z)){var k=!0;this.x1t=b.x;this.y1t=b.y;this.z1t=b.z;this.x2t=c.x;this.y2t=c.y;this.z2t=c.z;switch(this.getTrimmedLineImpl()){case 2:return;case 0:k=!1;break;default:h&&(b.set(this.x1t,this.y1t,this.z1t), +c.set(this.x2t,this.y2t,this.z2t))}h=this.g3d.zbuf;var m=this.g3d.width,j=0;0==f&&(e=2147483647,f=1);var n=b.x,q=b.y,y=b.z,s=c.x-n,G=n+s,M=c.y-q,N=q+M,p=q*m+n,u=this.g3d.bufferSize,r=this.g3d.pixel;0!=a&&(!k&&0<=p&&ps&&(s=-s,k=-1);0>M&&(M=-M,y=-m,v=-1);var m=s+s,z=M+M;if(M<=s){this.setRastAB(b.x,b.z,c.x,c.z);q=0;b=Math.abs(G-this.x2t)-1;G=Math.abs(G-this.x1t)-1;N=s-1;for(c=B(N/2);--N>=b&&!(N==c&&(a=d,0==a));){p+=k;n+=k;q+=z;q>s&&(p+= +y,q-=m);if(0!=a&&N=b&&!(N==c&&(a=d,0==a));)p+=y,q+=v,n+=m,n>M&&(p+=k,n-=z),0!=a&&(Ne&&(e=-e,m=-1);0>h&&(h=-h,u=-y);y=e+e;c=h+h;f<<=10;if(h<=e){var v=e-1;0>k&&(v=-v);k=B(((k<<10)+v)/e);h=0;v=Math.abs(b-this.x2t)-1;b=Math.abs(b-this.x1t)-1;for(var r=e-1,w=B(r/2);--r>=v&&!(r==w&&(a=d,0==a));){G+=m;f+=k;h+=c;h>e&&(G+=u,h-=y);if(0!=a&&r>10;zk&&(v=-v);k=B(((k<<10)+v)/h);e=0;v=Math.abs(r-this.y2t)-1;b=Math.abs(r-this.y1t)- +1;r=h-1;for(w=B(r/2);--r>=v&&!(r==w&&(a=d,0==a));)G+=u,f+=k,e+=y,e>h&&(G+=m,e-=c),0!=a&&(r>10,zd&&(this.zb[a]=2147483647)},"~N,~N");c(b,"addPixel",function(a,d,b){this.zb[a]=d;this.pb[a]=b},"~N,~N,~N");c(b,"addImagePixel",function(a,d,b,c,f,e){if(c=a&&(d=this.pb[b],0!=e&&(d=J.g3d.Graphics3D.mergeBufferPixel(d,e,e)),d=J.g3d.Graphics3D.mergeBufferPixel(d,f&16777215|a<<24,this.bgcolor),this.addPixel(b,c,d))}},"~N,~N,~N,~N,~N,~N")});u("J.g3d"); +C(["J.g3d.Pixelator"],"J.g3d.PixelatorT",["J.g3d.Graphics3D"],function(){var b=H(J.g3d,"PixelatorT",J.g3d.Pixelator);j(b,"clearPixel",function(){},"~N,~N");j(b,"addPixel",function(a,d,b){var c=this.g.zbufT[a];if(dthis.g.zMargin)&&(this.pb[a]=J.g3d.Graphics3D.mergeBufferPixel(this.pb[a],f,this.g.bgcolor));this.g.zbufT[a]=d;this.g.pbufT[a]=b&this.g.translucencyMask}else d!=c&&!this.g.translucentCoverOnly&&d-c>this.g.zMargin&&(this.pb[a]= +J.g3d.Graphics3D.mergeBufferPixel(this.pb[a],b&this.g.translucencyMask,this.g.bgcolor))},"~N,~N,~N")});u("J.g3d");C(["J.g3d.Pixelator"],"J.g3d.PixelatorShaded",null,function(){var b=v(function(){this.tmp=this.bgRGB=null;this.zShadePower=this.zDepth=this.zSlab=0;r(this,arguments)},J.g3d,"PixelatorShaded",J.g3d.Pixelator);A(b,function(a){L(this,J.g3d.PixelatorShaded,[a]);this.tmp=E(3,0)},"J.g3d.Graphics3D");c(b,"set",function(a,d,b){this.bgcolor=this.g.bgcolor;this.bgRGB=E(-1,[this.bgcolor&255,this.bgcolor>> +8&255,this.g.bgcolor>>16&255]);this.zSlab=0>a?0:a;this.zDepth=0>d?0:d;this.zShadePower=b;this.p0=this.g.pixel0;return this},"~N,~N,~N");j(b,"addPixel",function(a,d,b){if(!(d>this.zDepth)){if(d>=this.zSlab&&0>8;c[2]=b>>16;var e=(this.zDepth-d)/(this.zDepth-this.zSlab);if(1h;h++)c[h]=f[h]+D(e*((c[h]&255)-f[h]));b=c[2]<<16|c[1]<<8|c[0]|b&4278190080}this.p0.addPixel(a,d,b)}}, +"~N,~N,~N");c(b,"showZBuffer",function(){for(var a=this.p0.zb.length;0<=--a;)if(0!=this.p0.pb[a]){var d=D(Math.min(255,Math.max(0,255*(this.zDepth-this.p0.zb[a])/(this.zDepth-this.zSlab))));this.p0.pb[a]=4278190080|d|d<<8|d<<16}})});u("J.g3d");C(["J.g3d.Pixelator"],"J.g3d.PixelatorScreened",null,function(){var b=H(J.g3d,"PixelatorScreened",J.g3d.Pixelator);A(b,function(a,d){L(this,J.g3d.PixelatorScreened,[a]);this.width=a.width;this.p0=d},"J.g3d.Graphics3D,J.g3d.Pixelator");j(b,"addPixel",function(a, +d,b){a%this.width%2==B(a/this.width)%2&&this.p0.addPixel(a,d,b)},"~N,~N,~N")});u("J.g3d");p=v(function(){this.bufferSizeT=this.bufferSize=this.bufferHeight=this.bufferWidth=this.windowSize=this.windowHeight=this.windowWidth=0;this.zBufferT=this.zBuffer=this.pBufferT=this.pBuffer=this.bufferedImage=null;this.heightOffscreen=this.widthOffscreen=0;this.apiPlatform=this.graphicsForTextOrImage=this.offscreenImage=null;r(this,arguments)},J.g3d,"Platform3D",null);A(p,function(b){this.apiPlatform=b},"J.api.GenericPlatform"); +c(p,"getGraphicsForMetrics",function(){return this.apiPlatform.getGraphics(this.allocateOffscreenImage(1,1))});c(p,"allocateTBuffers",function(b){this.bufferSizeT=b?this.bufferSize:this.windowSize;this.zBufferT=E(this.bufferSizeT,0);this.pBufferT=E(this.bufferSizeT,0)},"~B");c(p,"allocateBuffers",function(b,a,d,g){this.windowWidth=b;this.windowHeight=a;this.windowSize=b*a;d&&(b*=2,a*=2);this.bufferWidth=b;this.bufferHeight=a;this.bufferSize=this.bufferWidth*this.bufferHeight;this.zBuffer=E(this.bufferSize, +0);this.pBuffer=E(this.bufferSize,0);this.bufferedImage=this.apiPlatform.allocateRgbImage(this.windowWidth,this.windowHeight,this.pBuffer,this.windowSize,J.g3d.Platform3D.backgroundTransparent,g)},"~N,~N,~B,~B");c(p,"releaseBuffers",function(){this.windowWidth=this.windowHeight=this.bufferWidth=this.bufferHeight=this.bufferSize=-1;null!=this.bufferedImage&&(this.apiPlatform.flushImage(this.bufferedImage),this.bufferedImage=null);this.zBufferT=this.pBufferT=this.zBuffer=this.pBuffer=null});c(p,"hasContent", +function(){for(var b=this.bufferSize;0<=--b;)if(2147483647!=this.zBuffer[b])return!0;return!1});c(p,"clearScreenBuffer",function(){for(var b=this.bufferSize;0<=--b;)this.zBuffer[b]=2147483647,this.pBuffer[b]=0});c(p,"setBackgroundColor",function(b){if(null!=this.pBuffer)for(var a=this.bufferSize;0<=--a;)0==this.pBuffer[a]&&(this.pBuffer[a]=b)},"~N");c(p,"clearTBuffer",function(){for(var b=this.bufferSizeT;0<=--b;)this.zBufferT[b]=2147483647,this.pBufferT[b]=0});c(p,"clearBuffer",function(){this.clearScreenBuffer()}); +c(p,"clearScreenBufferThreaded",function(){});c(p,"notifyEndOfRendering",function(){this.apiPlatform.notifyEndOfRendering()});c(p,"getGraphicsForTextOrImage",function(b,a){if(b>this.widthOffscreen||a>this.heightOffscreen)null!=this.offscreenImage&&(this.apiPlatform.disposeGraphics(this.graphicsForTextOrImage),this.apiPlatform.flushImage(this.offscreenImage)),b>this.widthOffscreen&&(this.widthOffscreen=b),a>this.heightOffscreen&&(this.heightOffscreen=a),this.offscreenImage=this.allocateOffscreenImage(this.widthOffscreen, +this.heightOffscreen),this.graphicsForTextOrImage=this.apiPlatform.getStaticGraphics(this.offscreenImage,J.g3d.Platform3D.backgroundTransparent);return this.graphicsForTextOrImage},"~N,~N");c(p,"allocateOffscreenImage",function(b,a){return this.apiPlatform.newOffScreenImage(b,a)},"~N,~N");c(p,"setBackgroundTransparent",function(b){J.g3d.Platform3D.backgroundTransparent=b},"~B");p.backgroundTransparent=!1;u("J.g3d");p=v(function(){this.b=this.a=0;this.isOrthographic=!1;r(this,arguments)},J.g3d,"PrecisionRenderer", +null);c(p,"getZCurrent",function(b,a,d){return Math.round(1.4E-45==b?a:this.isOrthographic?b*d+a:b/(a-d))},"~N,~N,~N");c(p,"setRastABFloat",function(b,a,d,g){var c=g-a,f=d-b;0==c||0==f?(this.a=1.4E-45,this.b=a):this.isOrthographic?(this.a=c/f,this.b=a-this.a*b):(this.a=f*a*(g/c),this.b=(d*g-b*a)/c)},"~N,~N,~N,~N");c(p,"setRastAB",function(b,a,d,g){var c=g-a,f=d-b;1.4E-45==b||0==c||0==f?(this.a=1.4E-45,this.b=g):this.isOrthographic?(this.a=c/f,this.b=a-this.a*b):(this.a=f*a*(g/c),this.b=(d*g-b*a)/ +c)},"~N,~N,~N,~N");u("J.g3d");C(["JU.P3"],"J.g3d.SphereRenderer",null,function(){var b=v(function(){this.mDeriv=this.coef=this.mat=this.zroot=this.shader=this.g3d=null;this.planeShade=this.selectedOctant=0;this.zbuf=null;this.offsetPbufBeginLine=this.slab=this.depth=this.height=this.width=0;this.dxyz=this.planeShades=this.ptTemp=null;r(this,arguments)},J.g3d,"SphereRenderer",null);P(b,function(){this.zroot=R(2,0);this.ptTemp=new JU.P3;this.planeShades=E(3,0);this.dxyz=K(3,3,0)});A(b,function(a){this.g3d= +a;this.shader=a.shader},"J.g3d.Graphics3D");c(b,"render",function(a,d,b,c,f,e,h,k,m,j){if(1!=f&&(49>1,q=f-n;if(!(f+nthis.depth)){var y=b-n,s=b+n,G=c-n,M=c+n;this.shader.nOut=this.shader.nIn=0;this.zbuf=this.g3d.zbuf;this.height=this.g3d.height;this.width=this.g3d.width;this.offsetPbufBeginLine=this.width*c+b;var p=this.shader;this.mat=e;if(null!=e&&(this.coef=h,this.mDeriv=k,this.selectedOctant= +m,null==p.ellipsoidShades&&p.createEllipsoidShades(),null!=j)){this.planeShade=-1;for(h=0;3>h;h++)if(n=this.dxyz[h][0]=j[h].x-b,k=this.dxyz[h][1]=j[h].y-c,m=this.dxyz[h][2]=j[h].z-f,this.planeShades[h]=p.getShadeIndex(n,k,-m),0==n&&0==k){this.planeShade=this.planeShades[h];break}}if(null!=e||128y||s>=this.width|| +0>G||M>=this.height||qthis.depth?this.renderSphereClipped(r,b,c,f,d,a):this.renderSphereUnclipped(r,f,d,a)}this.zbuf=null}}},"~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A");c(b,"renderSphereUnclipped",function(a,d,b,c){var f=0,e=1-(b&1),h=this.offsetPbufBeginLine,k=h-e*this.width;b=B((b+1)/2);var m=this.zbuf,j=this.width,n=this.g3d.pixel;do{var q=h,y=h-e,s=k,G=k-e,M;do{M=a[f++];var p=d-(M&127);p>7&63]);p>13&63]);p> +19&63]);p>25&63]);++q;--y;++s;--G}while(0<=M);h+=j;k-=j}while(0<--b)},"~A,~N,~N,~A");c(b,"renderSphereClipped",function(a,d,b,c,f,e){var h=this.width,k=this.height,m=0,j=1-(f&1),n=this.offsetPbufBeginLine,q=n-j*h;f=B((f+1)/2);var y=b,s=b-j;b=(d<<16)+(b<<1)^858993459;var G=this.zbuf,M=this.g3d.pixel,p=this.slab,r=this.depth;do{var u=0<=y&&y=p):(K=c-L,L= +K=p&&K<=r){if(u){if(I&&K>7&7):D>>7&63;M.addPixel(w,K,e[O])}H&&K>13&7):D>>13&63,M.addPixel(z,K,e[O]))}v&&(I&&K>19&7):D>>19&63,M.addPixel(A,K,e[O])),H&&K>25&7):D>>25&63,M.addPixel(C,K,e[O])))}++w;--z;++A;--C;++E;--F;L&&(b=(b<<16)+(b<<1)+b&2147483647)}while(0<=D);n+=h;q-=h;++y;--s}while(0<--f)},"~A,~N,~N,~N,~N,~A");c(b,"renderQuadrant",function(a,d,b,c,f,e,h){e=B(e/2);var k=b+e*a,m=(0>b?-1:bk?-2:kc?-1:ck?-2:k=this.slab&&f<=this.depth?this.renderQuadrantUnclipped(e,a,d,f,h):this.renderQuadrantClipped(e,a,d,b,c,f,h)))},"~N,~N,~N,~N,~N,~N,~A");c(b,"renderQuadrantUnclipped",function(a,d,b,c,f){for(var e=a*a,h=2*a+1,k=0>b?-this.width:this.width,m=this.offsetPbufBeginLine,j=this.zbuf,n=this.g3d.pixel,q=this.shader.sphereShadeIndexes,y=0,s=0;s<=e;s+=y+ ++y,m+= +k)for(var G=m,p=e-s,r=c-a,u=B((y*b+a<<8)/h),v=0,w=0;w<=p;w+=v+ ++v,G+=d)if(!(j[G]<=r)&&(r=B(Math.sqrt(p-w)),r=c-r,!(j[G]<=r))){var z=B((v*d+a<<8)/h);n.addPixel(G,r,f[q[(u<<8)+z]])}},"~N,~N,~N,~N,~A");c(b,"renderQuadrantClipped",function(a,d,b,c,f,e,h){for(var k=null!=this.mat,m=0<=this.selectedOctant,j=a*a,n=2*a+1,q=0>b?-this.width:this.width,y=this.offsetPbufBeginLine,s=(c<<16)+(f<<1)^858993459,G=0,p=0,r=this.g3d.pixel,u=0,v=this.height,w=this.width,z=this.zbuf,A=this.dxyz,C=this.slab,D=this.depth, +E=this.ptTemp,F=this.coef,H=this.zroot,I=this.selectedOctant,K=this.shader,L=this.planeShades,O=K.sphereShadeIndexes,P=this.planeShade,Q=this.mat,U=0,V=0,R=f;V<=j;V+=U+ ++U,y+=q,R+=b)if(0>R){if(0>b)break}else if(R>=v){if(0T){if(0>d)break}else if(T>=w){if(0X){if(0<=aa)break;continue}X=Math.sqrt(X);H[0]=-S-X;H[1]=-S+X;aa=eE.x&&(X|=1);0>E.y&&(X|=2);0>E.z&&(X|=4);if(X==I){if(0<=P)p=P;else{ba=3;p=3.4028235E38;for(S=0;3>S;S++)if(0!=(X=A[S][2]))X=e+(-A[S][0]*(T-c)-A[S][1]*(R-f))/X,X=C:SD||z[Z]<=u)continue}else{S=B(Math.sqrt(W-$));S=e+(e= +C:SD||z[Z]<=S)continue}switch(ba){case 0:p=44+(s>>8&7);s=(s<<16)+(s<<1)+s&2147483647;ba=1;break;case 2:p=K.getEllipsoidShade(T,R,H[aa],a,this.mDeriv);break;case 3:r.clearPixel(Z,u);break;default:p=B((Y*d+a<<8)/n),p=O[(G<<8)+p]}r.addPixel(Z,S,h[p])}s=(s+T+R|1)&2147483647}},"~N,~N,~N,~N,~N,~N,~A")});u("J.g3d");C(["java.util.Hashtable"],"J.g3d.TextRenderer",["JU.CU","J.g3d.Graphics3D"],function(){var b=v(function(){this.size=this.mapWidth=this.width=this.ascent=this.height=0;this.tmap= +null;this.isInvalid=!1;r(this,arguments)},J.g3d,"TextRenderer",null);A(b,function(a,d){this.ascent=d.getAscent();this.height=d.getHeight();this.width=d.stringWidth(a);0!=this.width&&(this.mapWidth=this.width,this.size=this.mapWidth*this.height)},"~S,JU.Font");b.clearFontCache=c(b,"clearFontCache",function(){J.g3d.TextRenderer.working||(J.g3d.TextRenderer.htFont3d.clear(),J.g3d.TextRenderer.htFont3dAntialias.clear())});b.plot=c(b,"plot",function(a,d,b,c,f,e,h,k,m,j){if(0==e.length)return 0;if(0<=e.indexOf("a||a+e.width>q||0>d||d+e.height>y)&&null!=(m=k))for(var r=k=0;r",p);if(0>r)continue;c=JU.CU.getArgbFromString(e.substring(p+ +7,r).trim());p=r;continue}if(p+7")){p+=7;c=G;continue}if(p+4")){p+=4;d+=y;continue}if(p+4")){p+=4;d+=s;continue}if(p+5")){p+=5;d-=y;continue}if(p+5")){p+=5;d-=s;continue}}r=J.g3d.TextRenderer.plot(a+n,d,b,c,f,e.substring(p,p+1),h,k,m,j);n+=r}return n},"~N,~N,~N,~N,~N,~S,JU.Font,J.g3d.Graphics3D,J.api.JmolRendererInterface,~B"); +b.getPlotText3D=c(b,"getPlotText3D",function(a,d,b,c,f,e){J.g3d.TextRenderer.working=!0;e=e?J.g3d.TextRenderer.htFont3dAntialias:J.g3d.TextRenderer.htFont3d;var h=e.get(f),k=null,m=!1,j=!1;null!=h?k=h.get(c):(h=new java.util.Hashtable,m=!0);null==k&&(k=new J.g3d.TextRenderer(c,f),j=!0);k.isInvalid=0==k.width||0>=a+k.width||a>=b.width||0>=d+k.height||d>=b.height;if(k.isInvalid)return k;m&&e.put(f,h);j&&(k.setTranslucency(c,f,b),h.put(c,k));J.g3d.TextRenderer.working=!1;return k},"~N,~N,J.g3d.Graphics3D,~S,JU.Font,~B"); +c(b,"setTranslucency",function(a,d,b){a=b.apiPlatform.getTextPixels(a,d,b.platform.getGraphicsForTextOrImage(this.mapWidth,this.height),b.platform.offscreenImage,this.mapWidth,this.height,this.ascent);if(null!=a){this.tmap=Q(this.size,0);for(d=a.length;0<=--d;)b=a[d]&255,0!=b&&(this.tmap[d]=J.g3d.TextRenderer.translucency[b>>5])}},"~S,JU.Font,J.g3d.Graphics3D");b.translucency=Q(-1,[7,6,5,4,3,2,1,8]);b.working=!1;b.htFont3d=new java.util.Hashtable;b.htFont3dAntialias=new java.util.Hashtable});u("J.g3d"); +C(["JU.P3i"],"J.g3d.TextString",null,function(){var b=v(function(){this.font=this.text=null;this.bgargb=this.argb=0;r(this,arguments)},J.g3d,"TextString",JU.P3i,java.util.Comparator);c(b,"setText",function(a,d,b,c,f,e,h){this.text=a;this.font=d;this.argb=b;this.bgargb=c;this.x=f;this.y=e;this.z=h},"~S,JU.Font,~N,~N,~N,~N,~N");j(b,"compare",function(a,d){return null==a||null==d?0:a.z>d.z?-1:a.z=this.az[0]||1>=this.az[1]||1>=this.az[2])){d=this.g3d.clipCode3(this.ax[0], +this.ay[0],this.az[0]);b=this.g3d.clipCode3(this.ax[1],this.ay[1],this.az[1]);var f=this.g3d.clipCode3(this.ax[2],this.ay[2],this.az[2]),e=d|b|f;a=0!=e;if(!a||!(-1==e||0!=(d&b&f))){f=0;this.ay[1]this.ay[h])var k=e,e=h,h=k;d=this.ay[f];var m=this.ay[e],j=this.ay[h];b=j-d+1;if(!(b>3*this.g3d.height)){if(b>this.axW.length){var n=b+31&-32;this.axW=E(n,0);this.azW=E(n,0);this.axE=E(n,0);this.azE=E(n,0);this.aa=K(n,0); +this.bb=K(n,0);this.rgb16sW=this.reallocRgb16s(this.rgb16sW,n);this.rgb16sE=this.reallocRgb16s(this.rgb16sE,n)}var q;c?(n=this.rgb16sW,q=this.rgb16sE):n=q=null;k=m-d;0==k?(this.ax[e]m&&(j=-j),this.ax[f]+B((m*k+j)/b)d&&(b+=d,h-=d,d=0);d+b>this.g3d.height&&(b=this.g3d.height-d);if(c)if(a)for(;--b>=f;++d,++h)a= +this.axE[h]-(c=this.axW[h])+e,0=f;++d,++h)a=this.axE[h]-(c=this.axW[h])+e,1==f&&0>a&&(a=1,c--),0=f;++d,++h)a=this.axE[h]-(c=this.axW[h])+e,0=f;++d,++h)a= +this.axE[h]-(c=this.axW[h])+e,1==f&&0>a&&(a=1,c--),0e)c[m]=u==w?this.ax[b]:k,f[m]=this.getZCurrent(s,p,v),r&&(this.setRastAB(this.axW[m],this.azW[m],c[m],f[m]),this.aa[m]=this.a,this.bb[m]=this.b);k+=y;q+=n;0=h.length?(2==a&&(0!=c.length&&0!=f.length)&&d.put(f,c),a=0):0==h.indexOf("msgid")?(a=1,f=J.i18n.Resource.fix(h)):0==h.indexOf("msgstr")?(a=2,c=J.i18n.Resource.fix(h)):1==a?f+=J.i18n.Resource.fix(h):2==a&&(c+=J.i18n.Resource.fix(h))}}catch(k){if(!F(k,Exception))throw k;}JU.Logger.info(d.size()+" translations loaded"); +return 0==d.size()?null:new J.i18n.Resource(d,null)},"~S");b.fix=c(b,"fix",function(a){0<=a.indexOf('\\"')&&(a=JU.PT.rep(a,'\\"','"'));return JU.PT.rep(a.substring(a.indexOf('"')+1,a.lastIndexOf('"')),"\\n","\n")},"~S")});u("J.io");C(null,"J.io.FileReader","java.io.BufferedReader JU.AU $.PT $.Rdr J.api.Interface JU.Logger".split(" "),function(){var b=v(function(){this.htParams=this.readerOrDocument=this.atomSetCollection=this.fileTypeIn=this.nameAsGivenIn=this.fullPathNameIn=this.fileNameIn=this.vwr= +null;this.isAppend=!1;this.bytesOrStream=null;r(this,arguments)},J.io,"FileReader",null);A(b,function(a,d,b,c,f,e,h,k){this.vwr=a;this.fileNameIn=null==d?b:d;this.fullPathNameIn=null==b?this.fileNameIn:b;this.nameAsGivenIn=null==c?this.fileNameIn:c;this.fileTypeIn=f;null!=e&&(JU.AU.isAB(e)||z(e,"java.io.BufferedInputStream")?(this.bytesOrStream=e,e=null):z(e,"java.io.Reader")&&!z(e,"java.io.BufferedReader")&&(e=new java.io.BufferedReader(e)));this.readerOrDocument=e;this.htParams=h;this.isAppend= +k},"JV.Viewer,~S,~S,~S,~S,~O,java.util.Map,~B");c(b,"run",function(){!this.isAppend&&this.vwr.displayLoadErrors&&this.vwr.zap(!1,!0,!1);var a=null,d=null;this.fullPathNameIn.contains("#_DOCACHE_")&&(this.readerOrDocument=J.io.FileReader.getChangeableReader(this.vwr,this.nameAsGivenIn,this.fullPathNameIn));if(null==this.readerOrDocument){d=this.vwr.fm.getUnzippedReaderOrStreamFromName(this.fullPathNameIn,this.bytesOrStream,!0,!1,!1,!0,this.htParams);if(null==d||"string"==typeof d){a=null==d?"error opening:"+ +this.nameAsGivenIn:d;a.startsWith("NOTE:")||JU.Logger.error("file ERROR: "+this.fullPathNameIn+"\n"+a);this.atomSetCollection=a;return}if(z(d,"java.io.BufferedReader"))this.readerOrDocument=d;else if(z(d,"javajs.api.ZInputStream")){var a=this.fullPathNameIn,b=null,a=a.$replace("\\","/");0<=a.indexOf("|")&&!a.endsWith(".zip")&&(b=JU.PT.split(a,"|"),a=b[0]);null!=b&&this.htParams.put("subFileList",b);b=d;d=this.vwr.fm.getZipDirectory(a,!0,!0);this.atomSetCollection=d=this.vwr.fm.getJzu().getAtomSetCollectionOrBufferedReaderFromZip(this.vwr, +b,a,d,this.htParams,1,!1);try{b.close()}catch(c){if(!F(c,Exception))throw c;}}}z(d,"java.io.BufferedInputStream")&&(this.readerOrDocument=J.api.Interface.getInterface("JU.BinaryDocument",this.vwr,"file").setStream(d,!this.htParams.containsKey("isLittleEndian")));if(null!=this.readerOrDocument){this.atomSetCollection=this.vwr.getModelAdapter().getAtomSetCollectionReader(this.fullPathNameIn,this.fileTypeIn,this.readerOrDocument,this.htParams);"string"!=typeof this.atomSetCollection&&(this.atomSetCollection= +this.vwr.getModelAdapter().getAtomSetCollection(this.atomSetCollection));try{z(this.readerOrDocument,"java.io.BufferedReader")?this.readerOrDocument.close():z(this.readerOrDocument,"javajs.api.GenericBinaryDocument")&&this.readerOrDocument.close()}catch(f){if(!F(f,"java.io.IOException"))throw f;}}"string"!=typeof this.atomSetCollection&&(!this.isAppend&&!this.vwr.displayLoadErrors&&this.vwr.zap(!1,!0,!1),this.vwr.fm.setFileInfo(w(-1,[this.fullPathNameIn,this.fileNameIn,this.nameAsGivenIn])))});b.getChangeableReader= +c(b,"getChangeableReader",function(a,d,b){return JU.Rdr.getBR(a.getLigandModel(d,b,"_file",null))},"JV.Viewer,~S,~S");c(b,"getAtomSetCollection",function(){return this.atomSetCollection})});u("J.render");C(["J.render.ShapeRenderer"],"J.render.BallsRenderer",["J.shape.Shape"],function(){var b=H(J.render,"BallsRenderer",J.render.ShapeRenderer);j(b,"render",function(){var a=!1;if(this.isExport||this.vwr.checkMotionRendering(1153433601))for(var d=this.ms.at,b=this.shape.colixes,c=this.vwr.shm.bsRenderableAtoms, +f=c.nextSetBit(0);0<=f;f=c.nextSetBit(f+1)){var e=d[f];0b?this.g3d.drawDashedLineBits(8,4,a,d):this.g3d.fillCylinderBits(this.endcap,1==this.exportType?-b:b,a,d);c&&null!=this.tickInfo&&(this.checkTickTemps(), +this.tickAs.setT(a),this.tickBs.setT(d),this.drawTicks(b,!0))},"JU.P3,JU.P3,~N,~B");c(b,"checkTickTemps",function(){null==this.tickA&&(this.tickA=new JU.P3,this.tickB=new JU.P3,this.tickAs=new JU.P3,this.tickBs=new JU.P3)});c(b,"drawTicks",function(a,d){Float.isNaN(this.tickInfo.first)&&(this.tickInfo.first=0);this.drawTicks2(this.tickInfo.ticks.x,8,a,!d?null:null==this.tickInfo.tickLabelFormats?w(-1,["%0.2f"]):this.tickInfo.tickLabelFormats);this.drawTicks2(this.tickInfo.ticks.y,4,a,null);this.drawTicks2(this.tickInfo.ticks.z, +2,a,null)},"~N,~B");c(b,"drawTicks2",function(a,d,b,c){if(0!=a&&(this.g3d.isAntialiased()&&(d*=2),this.vectorT2.set(this.tickBs.x,this.tickBs.y,0),this.vectorT.set(this.tickAs.x,this.tickAs.y,0),this.vectorT2.sub(this.vectorT),!(50>this.vectorT2.length()))){var f=this.tickInfo.signFactor;this.vectorT.sub2(this.tickB,this.tickA);var e=this.vectorT.length();if(null!=this.tickInfo.scale)if(Float.isNaN(this.tickInfo.scale.x)){var h=this.vwr.getUnitCellInfo(0);Float.isNaN(h)||this.vectorT.set(this.vectorT.x/ +h,this.vectorT.y/this.vwr.getUnitCellInfo(1),this.vectorT.z/this.vwr.getUnitCellInfo(2))}else this.vectorT.set(this.vectorT.x*this.tickInfo.scale.x,this.vectorT.y*this.tickInfo.scale.y,this.vectorT.z*this.tickInfo.scale.z);h=this.vectorT.length()+1E-4*a;if(!(hb&&(b=1);this.vectorT2.set(-this.vectorT2.y,this.vectorT2.x,0);this.vectorT2.scale(d/this.vectorT2.length());d=this.tickInfo.reference;null==d?(this.pointT3.setT(this.vwr.getBoundBoxCenter()),603979809==this.vwr.g.axesMode&&this.pointT3.add3(1,1,1)):this.pointT3.setT(d);this.tm.transformPtScr(this.pointT3,this.pt2i);d=0.2>Math.abs(this.vectorT2.x/this.vectorT2.y);for(var j=!d,n=!d&&0>this.vectorT2.x,q=null!=c&&0=this.tickInfo.first&& +(this.pointT2.setT(this.pointT),this.tm.transformPt3f(this.pointT2,this.pointT2),this.drawLine(B(Math.floor(this.pointT2.x)),B(Math.floor(this.pointT2.y)),D(m),y=B(Math.floor(this.pointT2.x+this.vectorT2.x)),s=B(Math.floor(this.pointT2.y+this.vectorT2.y)),D(m),b),q&&(this.draw000||0!=k))){p[0]=Float.$valueOf(0==k?0:k*f);var u=JU.PT.sprintf(c[r%c.length],"f",p);this.drawString(y,s,D(m),4,n,d,j,B(Math.floor(this.pointT2.y)),u)}this.pointT.add(this.vectorT);k+=a;m+=e;r++}}}},"~N,~N,~N,~A");c(b,"drawLine", +function(a,d,b,c,f,e,h){return this.drawLine2(this.g3d,a,d,b,c,f,e,h)},"~N,~N,~N,~N,~N,~N,~N");c(b,"drawLine2",function(a,d,b,c,f,e,h,k){this.pt0.set(d,b,c);this.pt1.set(f,e,h);if(this.dotsOrDashes)null!=this.dashDots&&J.render.FontLineShapeRenderer.drawDashedCylinder(a,d,b,c,f,e,h,this.dashDots,this.width,this.colixA,this.colixB,!this.isExport||1==this.mad?this.width:this.mad,this.asLineOnly,this.s1);else{if(0>k)return a.drawDashedLineBits(8,4,this.pt0,this.pt1),1;a.fillCylinderBits(2,k,this.pt0, +this.pt1)}return B((k+1)/2)},"J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N");c(b,"drawString",function(a,d,b,c,f,e,h,k,m){if(null!=m){var j=this.font3d.stringWidth(m),n=this.font3d.getAscent();a=f?a-(B(c/2)+2+j):e?a-(B(c/2)+2+B(j/2)):a+(B(c/2)+2);f=d;f=h?f+B(n/2):0==k||kd&&(d=1);this.g3d.drawString(m,this.font3d,a,f,d,d,0)}},"~N,~N,~N,~N,~B,~B,~B,~N,~S");b.drawDashedCylinder=c(b,"drawDashedCylinder",function(a,d,b,c,f,e,h,k,m,j,n,q,y,s){if(!(null==k||0>m)){var p=k[0]; +f-=d;e-=b;h-=c;var r=0,u=k===J.render.FontLineShapeRenderer.ndots,v=u||k===J.render.FontLineShapeRenderer.sixdots;if(v){null==s&&(s=new JU.P3i);var w=(f*f+e*e)/(m*m);u?(p=Math.sqrt(w)/1.5,r=D(p)+2):8>w?k=J.render.FontLineShapeRenderer.twodots:32>w&&(k=J.render.FontLineShapeRenderer.fourdots)}var w=k[1],z=k[2],A=j,C=0==z?n:j;0==r&&(r=k.length);for(var E=0,F=3;F=this.holdRepaint&&(this.holdRepaint=0,a&&(this.repaintPending=!0,this.repaintNow(d)))},"~B,~S");j(b,"requestRepaintAndWait",function(a){var d=null;JV.Viewer.isJS&&!JV.Viewer.isSwingJS&&(d=self.Jmol&&Jmol.repaint?Jmol:null);if(null==d)try{this.repaintNow(a),JV.Viewer.isJS||this.wait(this.vwr.g.repaintWaitMs),this.repaintPending&&(JU.Logger.error("repaintManager requestRepaintAndWait timeout"),this.repaintDone())}catch(b){if(F(b,"InterruptedException"))System.out.println("repaintManager requestRepaintAndWait interrupted thread="+ +Thread.currentThread().getName());else throw b;}else d.repaint(this.vwr.html5Applet,!1),this.repaintDone()},"~S");j(b,"repaintIfReady",function(a){if(this.repaintPending)return!1;this.repaintPending=!0;0==this.holdRepaint&&this.repaintNow(a);return!0},"~S");c(b,"repaintNow",function(){this.vwr.haveDisplay&&this.vwr.apiPlatform.repaint(this.vwr.display)},"~S");j(b,"repaintDone",function(){this.repaintPending=!1});j(b,"clear",function(a){if(null!=this.renderers)if(0<=a)this.renderers[a]=null;else for(a= +0;37>a;++a)this.renderers[a]=null},"~N");c(b,"getRenderer",function(a){if(null!=this.renderers[a])return this.renderers[a];var d=JV.JC.getShapeClassName(a,!0)+"Renderer";if(null==(d=J.api.Interface.getInterface(d,this.vwr,"render")))return null;d.setViewerG3dShapeID(this.vwr,a);return this.renderers[a]=d},"~N");j(b,"render",function(a,d,b,c){null==this.renderers&&(this.renderers=Array(37));this.getAllRenderers();try{var f=this.vwr.getBoolean(603979934);a.renderBackground(null);if(b){this.bsTranslucent.clearAll(); +null!=c&&a.renderCrossHairs(c,this.vwr.getScreenWidth(),this.vwr.getScreenHeight(),this.vwr.tm.getNavigationOffset(),this.vwr.tm.navigationDepthPercent);var e=this.vwr.getRubberBandSelection();null!=e&&a.setC(this.vwr.cm.colixRubberband)&&a.drawRect(e.x,e.y,0,0,e.width,e.height);this.vwr.noFrankEcho=!0}c=null;for(e=0;37>e&&a.currentlyRendering;++e){var h=this.shapeManager.getShape(e);null!=h&&(f&&(c="rendering "+JV.JC.getShapeClassName(e,!1),JU.Logger.startTimer(c)),(b||this.bsTranslucent.get(e))&& +this.getRenderer(e).renderShape(a,d,h)&&this.bsTranslucent.set(e),f&&JU.Logger.checkTimer(c,!1))}a.renderAllStrings(null)}catch(k){if(F(k,Exception)){k.printStackTrace();if(this.vwr.async&&"Interface".equals(k.getMessage()))throw new NullPointerException;JU.Logger.error("rendering error? "+k)}else throw k;}},"JU.GData,JM.ModelSet,~B,~A");c(b,"getAllRenderers",function(){for(var a=!0,d=0;37>d;++d)null==this.shapeManager.getShape(d)||null!=this.getRenderer(d)||(a=this.repaintPending=!this.vwr.async); +if(!a)throw new NullPointerException;});j(b,"renderExport",function(a,d,b){this.shapeManager.finalizeAtoms(null,!0);a=this.vwr.initializeExporter(b);if(null==a)return JU.Logger.error("Cannot export "+b.get("type")),null;null==this.renderers&&(this.renderers=Array(37));this.getAllRenderers();b=null;try{var c=this.vwr.getBoolean(603979934);a.renderBackground(a);for(var f=0;37>f;++f){var e=this.shapeManager.getShape(f);null!=e&&(c&&(b="rendering "+JV.JC.getShapeClassName(f,!1),JU.Logger.startTimer(b)), +this.getRenderer(f).renderShape(a,d,e),c&&JU.Logger.checkTimer(b,!1))}a.renderAllStrings(a);b=a.finalizeOutput()}catch(h){if(F(h,Exception))h.printStackTrace(),JU.Logger.error("rendering error? "+h);else throw h;}return b},"JU.GData,JM.ModelSet,java.util.Map")});u("J.render");C(null,"J.render.ShapeRenderer",["JV.JC"],function(){var b=v(function(){this.shape=this.ms=this.g3d=this.tm=this.vwr=null;this.exportType=this.mad=this.colix=this.shapeID=this.myVisibilityFlag=0;this.isExport=!1;r(this,arguments)}, +J.render,"ShapeRenderer",null);c(b,"initRenderer",function(){});c(b,"setViewerG3dShapeID",function(a,d){this.vwr=a;this.tm=a.tm;this.shapeID=d;this.myVisibilityFlag=JV.JC.getShapeVisibilityFlag(d);this.initRenderer()},"JV.Viewer,~N");c(b,"renderShape",function(a,d,b){this.setup(a,d,b);a=this.render();this.exportType=0;this.isExport=!1;return a},"J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape");c(b,"setup",function(a,d,b){this.g3d=a;this.ms=d;this.shape=b;this.exportType=a.getExportType();this.isExport= +0!=this.exportType},"J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape");c(b,"isVisibleForMe",function(a){return a.isVisible(this.myVisibilityFlag|9)},"JM.Atom")});u("J.render");C(["J.render.FontLineShapeRenderer","JU.BS","$.P3","$.V3"],"J.render.SticksRenderer",["JU.A4","$.M3","J.c.PAL","JU.C","$.Edge"],function(){var b=v(function(){this.showMultipleBonds=!1;this.multipleBondRadiusFactor=this.multipleBondSpacing=0;this.useBananas=this.bondsPerp=!1;this.modeMultipleBond=0;this.isCartesian=!1; +this.endcaps=0;this.hbondsSolid=this.bondsBackbone=this.hbondsBackbone=this.ssbondsBackbone=!1;this.bond=this.b=this.a=null;this.bondOrder=this.mag2d=this.dy=this.dx=this.zB=this.yB=this.xB=this.zA=this.yA=this.xA=0;this.slabByAtom=this.slabbing=this.isAntialiased=this.wireframeOnly=!1;this.bsForPass2=this.p2=this.p1=this.z=this.y=this.x=null;this.isPass2=!1;this.dyStep=this.dxStep=this.yAxis2=this.xAxis2=this.yAxis1=this.xAxis1=0;this.a4=this.rot=null;r(this,arguments)},J.render,"SticksRenderer", +J.render.FontLineShapeRenderer);P(b,function(){this.x=new JU.V3;this.y=new JU.V3;this.z=new JU.V3;this.p1=new JU.P3;this.p2=new JU.P3;this.bsForPass2=JU.BS.newN(64)});j(b,"render",function(){var a=this.ms.bo;if(null==a)return!1;(this.isPass2=this.vwr.gdata.isPass2)||this.bsForPass2.clearAll();this.slabbing=this.tm.slabEnabled;this.slabByAtom=this.vwr.getBoolean(603979939);this.endcaps=3;this.dashDots=this.vwr.getBoolean(603979893)?J.render.FontLineShapeRenderer.sixdots:J.render.FontLineShapeRenderer.dashes; +this.isCartesian=1==this.exportType;this.getMultipleBondSettings(!1);this.wireframeOnly=!this.vwr.checkMotionRendering(1677721602);this.ssbondsBackbone=this.vwr.getBoolean(603979952);this.hbondsBackbone=this.vwr.getBoolean(603979852);this.bondsBackbone=(new Boolean(this.hbondsBackbone|this.ssbondsBackbone)).valueOf();this.hbondsSolid=this.vwr.getBoolean(603979854);this.isAntialiased=this.g3d.isAntialiased();var d=!1;if(this.isPass2){if(!this.isExport)for(var b=this.bsForPass2.nextSetBit(0);0<=b;b= +this.bsForPass2.nextSetBit(b+1))this.bond=a[b],this.renderBond()}else for(b=this.ms.bondCount;0<=--b;)this.bond=a[b],0!=(this.bond.shapeVisibilityFlags&this.myVisibilityFlag)&&this.renderBond()&&(d=!0,this.bsForPass2.set(b));return d});c(b,"getMultipleBondSettings",function(a){this.useBananas=this.vwr.getBoolean(603979886)&&!a;this.multipleBondSpacing=a?0.15:this.vwr.getFloat(570425370);this.multipleBondRadiusFactor=a?0.4:this.vwr.getFloat(570425369);this.bondsPerp=this.useBananas||0this.multipleBondRadiusFactor;this.useBananas&&(this.multipleBondSpacing=0>this.multipleBondSpacing?0.4*-this.multipleBondSpacing:this.multipleBondSpacing);this.multipleBondRadiusFactor=Math.abs(this.multipleBondRadiusFactor);0==this.multipleBondSpacing&&this.isCartesian&&(this.multipleBondSpacing=0.2);this.modeMultipleBond=this.vwr.g.modeMultipleBond;this.showMultipleBonds=0!=this.multipleBondSpacing&&0!=this.modeMultipleBond&&this.vwr.getBoolean(603979928)},"~B");c(b,"renderBond",function(){var a, +d;this.a=a=this.bond.atom1;this.b=d=this.bond.atom2;var b=this.bond.order&131071;this.bondsBackbone&&(this.ssbondsBackbone&&0!=(b&256)?(this.a=this.a.group.getLeadAtomOr(this.a),this.b=this.b.group.getLeadAtomOr(this.b)):this.hbondsBackbone&&JU.Edge.isOrderH(b)&&(this.a=this.a.group.getLeadAtomOr(this.a),this.b=this.b.group.getLeadAtomOr(this.b)));if(!this.isPass2&&(!this.a.isVisible(9)||!this.b.isVisible(9)||!this.g3d.isInDisplayRange(this.a.sX,this.a.sY)||!this.g3d.isInDisplayRange(this.b.sX,this.b.sY)))return!1; +if(this.slabbing){var c=this.vwr.gdata.isClippedZ(this.a.sZ);if(c&&this.vwr.gdata.isClippedZ(this.b.sZ)||this.slabByAtom&&(c||this.vwr.gdata.isClippedZ(this.b.sZ)))return!1}this.zA=this.a.sZ;this.zB=this.b.sZ;if(1==this.zA||1==this.zB)return!1;this.colixA=a.colixAtom;this.colixB=d.colixAtom;2==((this.colix=this.bond.colix)&-30721)?(this.colix&=30720,this.colixA=JU.C.getColixInherited(this.colix|this.vwr.cm.getColixAtomPalette(a,J.c.PAL.CPK.id),this.colixA),this.colixB=JU.C.getColixInherited(this.colix| +this.vwr.cm.getColixAtomPalette(d,J.c.PAL.CPK.id),this.colixB)):(this.colixA=JU.C.getColixInherited(this.colix,this.colixA),this.colixB=JU.C.getColixInherited(this.colix,this.colixB));a=!1;if(!this.isExport&&!this.isPass2&&(d=!JU.C.renderPass2(this.colixA),c=!JU.C.renderPass2(this.colixB),!d||!c)){if(!d&&!c&&!a)return this.g3d.setC(!d?this.colixA:this.colixB),!0;a=!0}this.bondOrder=b&131071;if(0==(this.bondOrder&224)&&(0!=(this.bondOrder&256)&&(this.bondOrder&=-257),0!=(this.bondOrder&1023)&&(!this.showMultipleBonds|| +2==this.modeMultipleBond&&500=this.width)&&this.isAntialiased)this.width=3,this.asLineOnly=!1;b=!this.isExport||1==this.mad?this.width:this.mad;switch(d){case -2:this.drawBond(0);this.getMultipleBondSettings(!1);break;case -1:J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d,this.xA,this.yA,this.zA,this.xB,this.yB,this.zB,J.render.FontLineShapeRenderer.hDashes,this.width,this.colixA,this.colixB,b,this.asLineOnly,this.s1);break;default:switch(this.bondOrder){case 4:this.bondOrder= +2;b=this.multipleBondRadiusFactor;0==b&&1b&&(this.multipleBondSpacing=0.3);this.drawBond(d);this.bondsPerp=!this.bondsPerp;this.bondOrder=2;this.drawBond(d>>2);this.bondsPerp=!this.bondsPerp;this.multipleBondSpacing=b;break;case 5:this.bondOrder=3;b=this.multipleBondRadiusFactor;0==b&&1b&&(this.multipleBondSpacing=0.2);this.drawBond(d);this.bondsPerp=!this.bondsPerp; +this.bondOrder=2;this.multipleBondSpacing*=1.5;this.drawBond(d>>3);this.bondsPerp=!this.bondsPerp;this.multipleBondSpacing=b;break;case 6:this.bondOrder=4;b=this.multipleBondRadiusFactor;0==b&&1b&&(this.multipleBondSpacing=0.15);this.drawBond(d);this.bondsPerp=!this.bondsPerp;this.bondOrder=2;this.multipleBondSpacing*=1.5;this.drawBond(d>>4);this.bondsPerp=!this.bondsPerp;this.multipleBondSpacing=b;break;default:this.drawBond(d)}}return a}); +c(b,"drawBond",function(a){var d=0!=(a&1),b=16384==(this.colixA&30720)||16384==(this.colixB&30720)?2:this.endcaps;if(this.isCartesian&&1==this.bondOrder&&!d)this.g3d.drawBond(this.a,this.b,this.colixA,this.colixB,b,this.mad,-1);else{var c=0==this.dx&&0==this.dy;if(!c||!this.asLineOnly||this.isCartesian){var f=!this.isExport||1==this.mad?this.width:this.mad,e=1>=1;d=0!=(a&1);if(0>=--this.bondOrder)break;this.p1.add(this.y); +this.p2.add(this.y);this.stepAxisCoordinates()}}else if(this.mag2d=Math.round(Math.sqrt(this.dx*this.dx+this.dy*this.dy)),this.resetAxisCoordinates(),this.isCartesian&&3==this.bondOrder)J.render.FontLineShapeRenderer.fillCylinder(this.g3d,this.colixA,this.colixB,b,this.xAxis1,this.yAxis1,this.zA,this.xAxis2,this.yAxis2,this.zB,f,this.asLineOnly),this.stepAxisCoordinates(),this.x.sub2(this.b,this.a),this.x.scale(0.05),this.p1.sub2(this.a,this.x),this.p2.add2(this.b,this.x),this.g3d.drawBond(this.p1, +this.p2,this.colixA,this.colixB,b,this.mad,-2),this.stepAxisCoordinates(),J.render.FontLineShapeRenderer.fillCylinder(this.g3d,this.colixA,this.colixB,b,this.xAxis1,this.yAxis1,this.zA,this.xAxis2,this.yAxis2,this.zB,f,this.asLineOnly);else for(;;){0!=(a&1)?J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d,this.xAxis1,this.yAxis1,this.zA,this.xAxis2,this.yAxis2,this.zB,this.dashDots,this.width,this.colixA,this.colixB,f,this.asLineOnly,this.s1):J.render.FontLineShapeRenderer.fillCylinder(this.g3d, +this.colixA,this.colixB,b,this.xAxis1,this.yAxis1,this.zA,this.xAxis2,this.yAxis2,this.zB,f,this.asLineOnly);a>>=1;if(0>=--this.bondOrder)break;this.stepAxisCoordinates()}}}},"~N");c(b,"resetAxisCoordinates",function(){var a=this.mag2d>>3;-1!=this.multipleBondSpacing&&0>this.multipleBondSpacing&&(a*=-this.multipleBondSpacing);a=this.width+a;this.dxStep=B(a*this.dy/this.mag2d);this.dyStep=B(a*-this.dx/this.mag2d);this.xAxis1=this.xA;this.yAxis1=this.yA;this.xAxis2=this.xB;this.yAxis2=this.yB;a=this.bondOrder- +1;this.xAxis1-=B(this.dxStep*a/2);this.yAxis1-=B(this.dyStep*a/2);this.xAxis2-=B(this.dxStep*a/2);this.yAxis2-=B(this.dyStep*a/2)});c(b,"stepAxisCoordinates",function(){this.xAxis1+=this.dxStep;this.yAxis1+=this.dyStep;this.xAxis2+=this.dxStep;this.yAxis2+=this.dyStep});c(b,"getAromaticDottedBondMask",function(){var a=this.b.findAromaticNeighbor(this.a.i);return null==a?1:0>this.dx*(a.sY-this.yA)-this.dy*(a.sX-this.xA)?2:1});c(b,"drawBanana",function(a,d,b,c){this.g3d.addRenderer(553648143);this.vectorT.sub2(d, +a);null==this.rot&&(this.rot=new JU.M3,this.a4=new JU.A4);this.a4.setVA(this.vectorT,3.141592653589793*c/180);this.rot.setAA(this.a4);this.pointT.setT(a);this.pointT3.setT(d);this.pointT2.ave(a,d);this.rot.rotate2(b,this.vectorT);this.pointT2.add(this.vectorT);this.tm.transformPtScrT3(a,this.pointT);this.tm.transformPtScrT3(this.pointT2,this.pointT2);this.tm.transformPtScrT3(d,this.pointT3);a=Math.max(this.width,1);this.g3d.setC(this.colixA);this.g3d.fillHermite(5,a,a,a,this.pointT,this.pointT,this.pointT2, +this.pointT3);this.g3d.setC(this.colixB);this.g3d.fillHermite(5,a,a,a,this.pointT,this.pointT2,this.pointT3,this.pointT3)},"JM.Atom,JM.Atom,JU.V3,~N")});u("JS");C(["JS.T"],"JS.ContextToken",["java.util.Hashtable","JS.SV"],function(){var b=v(function(){this.name0=this.forVars=this.contextVariables=null;r(this,arguments)},JS,"ContextToken",JS.T);b.newContext=c(b,"newContext",function(a){a=a?JS.ContextToken.newCmd(1275335685,"{"):JS.ContextToken.newCmd(1275334681,"}");a.intValue=0;return a},"~B");b.newCmd= +c(b,"newCmd",function(a,d){var b=new JS.ContextToken;b.tok=a;b.value=d;return b},"~N,~O");c(b,"addName",function(a){null==this.contextVariables&&(this.contextVariables=new java.util.Hashtable);this.contextVariables.put(a,JS.SV.newS("").setName(a))},"~S")});u("JS");C(null,"JS.ScriptContext",["java.util.Hashtable","JS.SV"],function(){var b=v(function(){this.aatoken=null;this.chk=this.allowJSThreads=!1;this.contextPath=" >> ";this.vars=null;this.displayLoadErrorsSave=!1;this.errorType=this.errorMessageUntranslated= +this.errorMessage=null;this.isEditorScript=this.isEditor=this.executionStepping=this.executionPaused=!1;this.functionName=null;this.iCommandError=-1;this.id=0;this.isComplete=!0;this.isTryCatch=this.isStateScript=this.isJSThread=this.isFunction=!1;this.forVars=null;this.iToken=0;this.lineEnd=2147483647;this.lineNumbers=this.lineIndices=null;this.mustResumeEval=!1;this.parentContext=this.parallelProcessor=this.outputBuffer=null;this.pc0=this.pc=0;this.pcEnd=2147483647;this.scriptFileName=this.scriptExtensions= +this.script=null;this.scriptLevel=0;this.htFileCache=this.statement=null;this.statementLength=0;this.token=null;this.tryPt=0;this.theToken=null;this.theTok=0;this.privateFuncs=this.why=this.pointers=null;r(this,arguments)},JS,"ScriptContext",null);A(b,function(){this.id=++JS.ScriptContext.contextCount});c(b,"setMustResume",function(){for(var a=this;null!=a;)a.mustResumeEval=!0,a.pc=a.pc0,a=a.parentContext});c(b,"getVariable",function(a){for(var d=this,b;null!=d&&!d.isFunction;){if(null!=d.vars&&null!= +(b=d.vars.get(a)))return b;d=d.parentContext}return null},"~S");c(b,"getFullMap",function(){var a=new java.util.Hashtable,d=this;for(null!=this.contextPath&&a.put("_path",JS.SV.newS(this.contextPath));null!=d&&!d.isFunction;){if(null!=d.vars)for(var b,c=d.vars.keySet().iterator();c.hasNext()&&((b=c.next())||1);)if(!a.containsKey(b)){var f=d.vars.get(b);(2!=f.tok||2147483647!=f.intValue)&&a.put(b,f)}d=d.parentContext}return a});c(b,"saveTokens",function(a){this.aatoken=a;if(null==a)this.pointers=null; +else{this.pointers=E(a.length,0);for(var d=this.pointers.length;0<=--d;)this.pointers[d]=null==a[d]?-1:a[d][0].intValue}},"~A");c(b,"restoreTokens",function(){if(null!=this.pointers)for(var a=this.pointers.length;0<=--a;)null!=this.aatoken[a]&&(this.aatoken[a][0].intValue=this.pointers[a]);return this.aatoken});c(b,"getTokenCount",function(){return null==this.aatoken?-1:this.aatoken.length});c(b,"getToken",function(a){return this.aatoken[a]},"~N");b.contextCount=0});u("JS");C(["java.lang.Exception"], +"JS.ScriptException",null,function(){var b=v(function(){this.untranslated=this.message=this.eval=null;this.isError=!1;r(this,arguments)},JS,"ScriptException",Exception);A(b,function(a,d,b,c){this.eval=a;this.message=d;(this.isError=c)&&this.eval.setException(this,d,b)},"JS.ScriptError,~S,~S,~B");c(b,"getErrorMessageUntranslated",function(){return this.untranslated});j(b,"getMessage",function(){return this.message});j(b,"toString",function(){return this.message})});u("JS");C(["javajs.api.JSONEncodable", +"JS.T","JU.P3"],"JS.SV","java.util.Arrays $.Collections $.Hashtable JU.AU $.BArray $.BS $.Base64 $.Lst $.Measure $.PT $.SB JM.BondSet JU.BSUtil $.Escape JV.Viewer".split(" "),function(){var b=v(function(){this.index=2147483647;this.myName=null;V("JS.SV.Sort")||JS.SV.$SV$Sort$();r(this,arguments)},JS,"SV",JS.T,javajs.api.JSONEncodable);b.newV=c(b,"newV",function(a,d){var b=new JS.SV;b.tok=a;b.value=d;return b},"~N,~O");b.newI=c(b,"newI",function(a){var d=new JS.SV;d.tok=2;d.intValue=a;return d},"~N"); +b.newF=c(b,"newF",function(a){if(a!=a)return JS.SV.vNaN;var d=new JS.SV;d.tok=3;d.value=Float.$valueOf(a);return d},"~N");b.newS=c(b,"newS",function(a){return JS.SV.newV(4,a)},"~S");b.newT=c(b,"newT",function(a){return JS.SV.newSV(a.tok,a.intValue,a.value)},"JS.T");b.newSV=c(b,"newSV",function(a,d,b){a=JS.SV.newV(a,b);a.intValue=d;return a},"~N,~N,~O");c(b,"setv",function(a){this.index=a.index;this.intValue=a.intValue;this.tok=a.tok;this.value=a.value;return this},"JS.SV");b.copySafely=c(b,"copySafely", +function(a){return null==a.myName?a:(new JS.SV).setv(a)},"JS.SV");b.sizeOf=c(b,"sizeOf",function(a){switch(null==a?0:a.tok){case 10:return JS.SV.bsSelectToken(a).cardinality();case 15:return a.value.data.length;case 4:return a.value.length;case 7:return 2147483647==a.intValue?a.getList().size():JS.SV.sizeOf(JS.SV.selectItemTok(a,-2147483648));case 6:return a.value.size();case 14:return a.value.getFullMap().size();case 1073742335:case 1073742334:return-1;case 2:return-2;case 3:return-4;case 8:return-8; +case 9:return-16;case 11:return-32;case 12:return-64;default:return 0}},"JS.T");b.isVariableType=c(b,"isVariableType",function(a){return z(a,"JS.SV")||z(a,Boolean)||z(a,Integer)||z(a,Float)||"string"==typeof a||z(a,"JU.T3")||z(a,"JU.BS")||z(a,"JU.P4")||z(a,"JU.Quat")||z(a,"JU.M34")||z(a,"java.util.Map")||z(a,"JU.Lst")||z(a,"JU.BArray")||z(a,"JS.ScriptContext")||JS.SV.isArray(a)},"~O");b.isArray=c(b,"isArray",function(a){return z(a,Array)},"~O");b.getVariable=c(b,"getVariable",function(a){return null== +a?JS.SV.newS(""):z(a,"JS.SV")?a:z(a,Boolean)?JS.SV.getBoolean(a.booleanValue()):z(a,Integer)?JS.SV.newI(a.intValue()):z(a,Float)?JS.SV.newV(3,a):"string"==typeof a?(a=JS.SV.unescapePointOrBitsetAsVariable(a),z(a,"JS.SV")?a:JS.SV.newV(4,a)):z(a,"JU.P3")?JS.SV.newV(8,a):z(a,"JU.V3")?JS.SV.newV(8,JU.P3.newP(a)):z(a,"JU.BS")?JS.SV.newV(10,a):z(a,"JU.P4")?JS.SV.newV(9,a):z(a,"JU.Quat")?JS.SV.newV(9,a.toPoint4f()):z(a,"JU.M34")?JS.SV.newV(z(a,"JU.M4")?12:11,a):z(a,"java.util.Map")?JS.SV.getVariableMap(a): +z(a,"JU.Lst")?JS.SV.getVariableList(a):z(a,"JU.BArray")?JS.SV.newV(15,a):z(a,"JS.ScriptContext")?JS.SV.newV(14,a):JS.SV.isASV(a)?JS.SV.getVariableAV(a):JU.AU.isAI(a)?JS.SV.getVariableAI(a):JU.AU.isAB(a)?JS.SV.getVariableAB(a):JU.AU.isAF(a)?JS.SV.getVariableAF(a):JU.AU.isAD(a)?JS.SV.getVariableAD(a):JU.AU.isAS(a)?JS.SV.getVariableAS(a):JU.AU.isAP(a)?JS.SV.getVariableAP(a):JU.AU.isAII(a)?JS.SV.getVariableAII(a):JU.AU.isAFF(a)?JS.SV.getVariableAFF(a):JU.AU.isASS(a)?JS.SV.getVariableASS(a):JU.AU.isADD(a)? +JS.SV.getVariableADD(a):JU.AU.isAFloat(a)?JS.SV.newV(13,a):JS.SV.newJSVar(a)},"~O");b.isASV=c(b,"isASV",function(a){return!JV.Viewer.isSwingJS?a&&a[0]&&"JS.SV"==a[0].__CLASS_NAME__:z(a,Array)},"~O");b.newJSVar=c(b,"newJSVar",function(a){var d,b,c,f,e;switch(a.BYTES_PER_ELEMENT?Array:a.constructor){case Boolean:d=0;b=a;break;case Number:d=1;c=a;break;case Array:d=2;f=a;break;case Object:d=3,f=a,e=Object.keys(a)}switch(d){case 0:return b?JS.SV.vT:JS.SV.vF;case 1:return 2147483647=d&&(d=b.size()-d);if(2147483647!=d)return 1>d||d>b.size()?"":JS.SV.sValue(b.get(d-1));case 6:case 14:if("string"==typeof a.value)return a.value;d=new JU.SB;JS.SV.sValueArray(d,a,"","",!1,!0,!0, +2147483647,!1);return JU.PT.rep(d.toString(),"\n\x00"," ");case 4:return b=a.value,d=a.intValue,0>=d&&(d=b.length-d),2147483647==d?b:1>d||d>b.length?"":""+b.charAt(d-1);case 8:return JU.Escape.eP(a.value);case 9:return JU.Escape.eP4(a.value);case 11:case 12:return JU.Escape.e(a.value);default:return a.value.toString()}},"JS.T");b.sValueArray=c(b,"sValueArray",function(a,d,b,c,f,e,h,k,m){switch(d.tok){case 6:case 14:case 7:var j=";"+d.hashCode()+";";if(0<=b.indexOf(j)){a.append(f?7==d.tok?"[ ]":"{ }": +(7==d.tok?"":"\x00")+'"<'+(null==d.myName?"circular reference":d.myName)+'>"');break}b+=j;if(7==d.tok){if(!h)break;e||a.append(f?"[ ":c+"[\n");d=d.getList();for(j=0;jh)){var m=b.keySet(),m=b.keySet().toArray(Array(m.size()));java.util.Arrays.sort(m);if(f){a.append("{ ");for(var j="",n=0;n=d?d:1);a=JS.SV.selectItemTok(a,0>=d?2147483646:d);return a.value},"JS.T,~N");b.selectItemVar=c(b,"selectItemVar",function(a){return 2147483647!=a.index||(7==a.tok||15==a.tok)&&2147483647==a.intValue?a:JS.SV.selectItemTok(a,-2147483648)},"JS.SV");b.selectItemTok=c(b,"selectItemTok",function(a,d){switch(a.tok){case 11:case 12:case 10:case 7:case 15:case 4:break;default:return z(a,"JS.SV")&&null!=a.myName?JS.SV.copySafely(a): +a}var b=null,c=null,f=a.intValue,e=-2147483648==d;if(2147483647==f)return e&&4==a.tok?a:JS.SV.newSV(a.tok,e?f:d,a.value);var h=0,k=z(a,"JS.SV")&&2147483647!=a.index,m=JS.SV.newSV(a.tok,2147483647,null);switch(a.tok){case 10:z(a.value,"JM.BondSet")?(b=JM.BondSet.newBS(a.value),h=b.cardinality()):(b=JU.BSUtil.copy(a.value),h=k?1:b.cardinality());break;case 15:h=a.value.data.length;break;case 7:h=a.getList().size();break;case 4:c=a.value;h=c.length;break;case 11:h=-3;break;case 12:h=-4}if(0>h){h=-h; +if(0h)return m=f%10,f=B((f-m)/10),0h)return JS.SV.newV(4,"");b=K(h,0);0>f?a.value.getColumn(-1-f,b):a.value.getRow(f-1,b);return e?JS.SV.getVariableAF(b):1>d||d>h?JS.SV.newV(4,""):JS.SV.newV(3,Float.$valueOf(b[d-1]))}0>=f&&(f=h+f);e||(1>f&&(f=1),0==d?d=h:0>d&&(d=h+d),dd)&&b.clear(e);break;case 4:m.value=0>--f||f>=h?"":e?c.substring(f,f+1):c.substring(f,Math.min(d,h));break;case 7:if(0>--f||f>=h)return JS.SV.newV(4,"");if(e)return a.getList().get(f);b=new JU.Lst;e=a.getList();c=Math.min(d,h)-f;for(h=0;h--f||f>=h)return JS.SV.newV(4,"");b=a.value.data;if(e)return JS.SV.newI(b[f]);e=Q(Math.min(d, +h)-f,0);for(h=e.length;0<=--h;)e[h]=b[f+h];m.value=new JU.BArray(e)}return m},"JS.T,~N");c(b,"setSelectedValue",function(a,d,b){if(2147483647!=a){var c;switch(this.tok){case 11:case 12:c=11==this.tok?3:4;if(2147483647!=d){var f=a;if(0=a&&(a=f+a);for(0>--a&&(a=0);a>=c.length;)c+=" ";if(2147483647==d)d=a;else for(0>--d&&(d=f+d);d>=c.length;)c+=" ";d>=a&&(this.value=c.substring(0,a)+JS.SV.sValue(b)+c.substring(++d));this.intValue=this.index=2147483647;break;case 7:f=this.value;c=f.size();0>=a&&(a=c+a);0>--a&&(a=0);if(c<=a)for(d=c;d<= +a;d++)f.addLast(JS.SV.newV(4,""));f.set(a,b)}}},"~N,~N,JS.SV");c(b,"escape",function(){switch(this.tok){case 4:return JU.PT.esc(this.value);case 11:case 12:return JU.PT.toJSON(null,this.value);case 7:case 6:case 14:var a=new JU.SB;JS.SV.sValueArray(a,this,"","",!0,!1,!0,2147483647,!1);return a.toString();default:return JS.SV.sValue(this)}});b.unescapePointOrBitsetAsVariable=c(b,"unescapePointOrBitsetAsVariable",function(a){if(null==a)return a;var d=null,b=null;if(z(a,"JS.SV"))switch(a.tok){case 8:case 9:case 11:case 12:case 10:d= +a.value;break;case 4:b=a.value;break;default:b=JS.SV.sValue(a)}else"string"==typeof a&&(b=a);if(null!=b&&0==b.length)return b;null==d&&(d=JU.Escape.uABsM(b));return z(d,"JU.P3")?JS.SV.newV(8,d):z(d,"JU.P4")?JS.SV.newV(9,d):z(d,"JU.BS")?(null!=b&&0==b.indexOf("[{")&&(d=JM.BondSet.newBS(d)),JS.SV.newV(10,d)):z(d,"JU.M34")?JS.SV.newV(z(d,"JU.M3")?11:12,d):a},"~O");b.getBoolean=c(b,"getBoolean",function(a){return JS.SV.newT(a?JS.SV.vT:JS.SV.vF)},"~B");b.sprintf=c(b,"sprintf",function(a,d){if(null==d)return a; +var b=7==d.tok,c=0<=a.indexOf("d")||0<=a.indexOf("i")?E(1,0):null,f=0<=a.indexOf("f")?K(1,0):null,e=0<=a.indexOf("e")?R(1,0):null,h=0<=a.indexOf("s"),k=0<=a.indexOf("p")&&(b||8==d.tok),m=0<=a.indexOf("q")&&(b||9==d.tok),j=w(-1,[c,f,e,null,null,null]);if(!b)return JS.SV.sprintf(a,d,j,c,f,e,h,k,m);for(var b=d.getList(),n=Array(b.size()),q=0;qa.value.distance(d.value); +case 9:return 1E-6>a.value.distance4(d.value);case 11:return a.value.equals(d.value);case 12:return a.value.equals(d.value)}return a.isNaN()?d.isNaN():1E-6>Math.abs(JS.SV.fValue(a)-JS.SV.fValue(d))},"JS.SV,JS.SV");b.isLike=c(b,"isLike",function(a,d){return null!=a&&null!=d&&4==a.tok&&4==d.tok&&JU.PT.isLike(a.value,d.value)},"JS.SV,JS.SV");c(b,"sortOrReverse",function(a){var d=this.getList();if(null!=d&&1c)return JS.SV.newS("");var f=b.substring(c);this.value=b.substring(0,c);return JS.SV.newS(f)}this.value+=JS.SV.sValue(d);return this}c=this.getMap();if(null==c){b=this.getList();if(null==d||null==b)return null==b||0==b.size()?JS.SV.newS(""):b.removeItemAt(b.size()-1);b.addLast(JS.SV.copySafely(d))}else null== +d?c.clear():(b=d.getMap(),null!=b&&c.putAll(b))}else{c=this.getMap();if(null==d){b=null;if(null==c){var c=this.getList(),f=c.size(),e=JS.SV.iValue(a)-1;0>e&&(e+=f);0<=e&&e=d?null:a.get(c),0);return b},"JS.T,~N");b.flistValue=c(b,"flistValue",function(a,d){if(null==a||7!=a.tok)return K(-1,[JS.SV.fValue(a)]);var b=a.getList(),c;c=K(Math.max(d,b.size()),0);0==d&&(d=c.length);for(var f=Math.min(b.size(),d);0<=--f;)c[f]=JS.SV.fValue(b.get(f));return c},"JS.T,~N");c(b,"toArray",function(){var a,d,b=null,c=null;switch(this.tok){case 11:b=this.value;a=3;break;case 12:c=this.value;a=4;break;case 7:return this;case 1275068418:return this.arrayToList(new JS.SV); +default:return d=new JU.Lst,d.addLast(this),JS.SV.newV(7,d)}d=new JU.Lst;for(var f=0;fa.value.indexOf("\n");default:return!0}},"JS.SV");j(b,"toJSON",function(){switch(this.tok){case 1073742335:case 1073742334:case 2:case 3:return JS.SV.sValue(this);case 15:return JU.PT.byteArrayToJSON(this.value.data); +case 14:return JU.PT.toJSON(null,this.value.getFullMap());case 7:case 6:if(null!=this.myName)return this.myName=null,6==this.tok?"{ }":"[ ]";this.myName="x";var a=JU.PT.toJSON(null,this.value);this.myName=null;return a;default:return JU.PT.toJSON(null,this.value)}});c(b,"mapGet",function(a){return this.getMap().get(a)},"~S");c(b,"mapPut",function(a,d){switch(this.tok){case 6:case 14:this.getMap().put(a,JS.SV.copySafely(d).setName(a))}},"~S,JS.SV");c(b,"getMap",function(){switch(this.tok){case 6:return this.value; +case 14:return this.value.vars}return null});c(b,"getMapKeys",function(a,d){if(6!=this.tok)return"";var b=new JU.SB;JS.SV.sValueArray(b,this,"","",!0,!1,!1,a+1,d);return b.toString()},"~N,~B");j(b,"toString",function(){return this.toString2()+"["+this.myName+" index ="+this.index+" intValue="+this.intValue+"]"});c(b,"getKeys",function(a){switch(this.tok){case 6:case 14:case 7:break;default:return null}var d=new JU.Lst;this.getKeyList(a,d,"");a=d.toArray(Array(d.size()));java.util.Arrays.sort(a);return a}, +"~B");c(b,"getKeyList",function(a,d,b){var c=this.getMap();if(null==c){if(a){var f,e;null!=(f=this.getList())&&0<(e=f.size())&&f.get(e-1).getKeyList(!0,d,b+"."+e+".")}}else for(var h,c=c.entrySet().iterator();c.hasNext()&&((h=c.next())||1);){f=h.getKey();if(a&&(0==f.length||!JU.PT.isLetter(f.charAt(0))))b.endsWith(".")&&(b=b.substring(0,b.length-1)),f="["+JU.PT.esc(f)+"]";d.addLast(b+f);a&&h.getValue().getKeyList(!0,d,b+f+".")}},"~B,JU.Lst,~S");b.deepCopy=c(b,"deepCopy",function(a,d,b){if(d){d=new java.util.Hashtable; +var c;for(a=a.entrySet().iterator();a.hasNext()&&((c=a.next())||1);){var f=c.getValue();d.put(c.getKey(),b?JS.SV.deepCopySV(f):f)}return d}c=new JU.Lst;d=0;for(f=a.size();df?1:0}if(4==a.tok||4==b.tok)return JS.SV.sValue(a).compareTo(JS.SV.sValue(b))}switch(a.tok){case 2:return a.intValueb.intValue?1:0;case 4:return JS.SV.sValue(a).compareTo(JS.SV.sValue(b));case 7:c=a.getList();f=b.getList(); +if(c.size()!=f.size())return c.size()e&&(e+=c.size());return 0>e||e>=c.size()?0:this.compare(c.get(e),f.get(e));case 6:if(null!=this.myKey)return this.compare(a.getMap().get(this.myKey),b.getMap().get(this.myKey));default:return c=JS.SV.fValue(a),f=JS.SV.fValue(b),cf?1:0}},"JS.SV,JS.SV")};b.vT=JS.SV.newSV(1073742335,1,"true");b.vF=JS.SV.newSV(1073742334,0,"false");b.vNaN=JS.SV.newSV(3,2147483647,Float.$valueOf(NaN));b.pt0=new JU.P3});u("JS");C(["java.util.Hashtable"], +"JS.T",["java.util.Arrays","JU.AU","$.Lst","JU.Logger"],function(){var b=v(function(){this.tok=0;this.value=null;this.intValue=2147483647;r(this,arguments)},JS,"T",null);b.t=c(b,"t",function(a){var d=new JS.T;d.tok=a;return d},"~N");b.tv=c(b,"tv",function(a,d,b){a=JS.T.t(a);a.intValue=d;a.value=b;return a},"~N,~N,~O");b.o=c(b,"o",function(a,d){var b=JS.T.t(a);b.value=d;return b},"~N,~O");b.n=c(b,"n",function(a,d){var b=JS.T.t(a);b.intValue=d;return b},"~N,~N");b.i=c(b,"i",function(a){var d=JS.T.t(2); +d.intValue=a;return d},"~N");b.tokAttr=c(b,"tokAttr",function(a,d){return(a&d)==(d&d)},"~N,~N");b.tokAttrOr=c(b,"tokAttrOr",function(a,d,b){return(a&d)==(d&d)||(a&b)==(b&b)},"~N,~N,~N");b.getPrecedence=c(b,"getPrecedence",function(a){return a>>9&15},"~N");b.getMaxMathParams=c(b,"getMaxMathParams",function(a){return a>>9&3},"~N");b.addToken=c(b,"addToken",function(a,d){JS.T.tokenMap.put(a,d)},"~S,JS.T");b.getTokenFromName=c(b,"getTokenFromName",function(a){return JS.T.tokenMap.get(a)},"~S");b.getTokFromName= +c(b,"getTokFromName",function(a){a=JS.T.getTokenFromName(a.toLowerCase());return null==a?0:a.tok},"~S");b.nameOf=c(b,"nameOf",function(a){for(var d,b=JS.T.tokenMap.values().iterator();b.hasNext()&&((d=b.next())||1);)if(d.tok==a)return""+d.value;return"0x"+Integer.toHexString(a)},"~N");j(b,"toString",function(){return this.toString2()});c(b,"toString2",function(){return"Token["+JS.T.astrType[16>this.tok?this.tok:16]+"("+this.tok%1E3+"/0x"+Integer.toHexString(this.tok)+")"+(2147483647==this.intValue? +"":" intValue="+this.intValue+"(0x"+Integer.toHexString(this.intValue)+")")+(null==this.value?"":"string"==typeof this.value?' value="'+this.value+'"':" value="+this.value)+"]"});b.getCommandSet=c(b,"getCommandSet",function(a){var d="",b=new java.util.Hashtable,g=0;a=null==a||0==a.length?null:a.toLowerCase();for(var c=null!=a&&1= > != <> LIKE within . .. [ ] { } $ % ; ++ -- ** \\ animation anim assign axes backbone background bind bondorder boundbox boundingBox break calculate capture cartoon cartoons case catch cd center centre centerat cgo color colour compare configuration conformation config connect console contact contacts continue data default define @ delay delete density depth dipole dipoles display dot dots draw echo ellipsoid ellipsoids else elseif end endif exit eval file files font for format frame frames frank function functions geosurface getProperty goto halo halos helix helixalpha helix310 helixpi hbond hbonds help hide history hover if in initialize invertSelected isosurface javascript label labels lcaoCartoon lcaoCartoons load log loop matrix measure measures monitor monitors meshribbon meshribbons message minimize minimization mo model models modulation move moveTo mutate navigate navigation nbo origin out parallel pause wait plot private plot3d pmesh polygon polyhedra polyhedron print process prompt quaternion quaternions quit ramachandran rama refresh reset unset restore restrict return ribbon ribbons rocket rockets rotate rotateSelected save select selectionHalos selectionHalo showSelections sheet show slab spacefill cpk spin ssbond ssbonds star stars step steps stereo strand strands structure _structure strucNo struts strut subset subsystem synchronize sync trace translate translateSelected try unbind unitcell var vector vectors vibration while wireframe write zap zoom zoomTo atom atoms axisangle basepair basepairs orientation orientations pdbheader polymer polymers residue residues rotation row sequence seqcode shape state symbol symmetry symmetryHM spaceGroup transform translation url _ abs absolute _args acos add adpmax adpmin align altloc altlocs ambientOcclusion amino angle array as _a atomID _atomID atomIndex atomName atomno atomType atomX atomY atomZ average babel babel21 back backlit backshell balls baseModel best beta bin bondCount bonded bottom branch brillouin bzone cache carbohydrate cell chain chains chainNo chemicalShift cs clash clear clickable clipboard connected context constraint contourLines coord coordinates coords cos cross covalentRadius covalent direction displacement displayed distance div DNA domains dotted DSSP DSSR element elemno _e error exportScale fill find fixedTemperature forcefield formalCharge charge eta front frontlit frontOnly fullylit fx fy fz fxyz fux fuy fuz fuxyz group groups group1 _g groupID _groupID groupIndex hidden highlight hkl hydrophobicity hydrophobic hydro id identify ident image info infoFontSize inline insertion insertions intramolecular intra intermolecular inter bondingRadius ionicRadius ionic isAromatic Jmol JSON join keys last left length lines list magneticShielding ms mass max mep mesh middle min mlp mode modify modifyOrCreate modt modt1 modt2 modt3 modx mody modz modo modxyz molecule molecules modelIndex monomer morph movie mouse mul mul3 nboCharges nci next noDelay noDots noFill noMesh none null inherit normal noBackshell noContourLines notFrontOnly noTriangles now nucleic occupancy omega only opaque options partialCharge pattern phi pivot plane planar play playRev point points pointGroup polymerLength pop previous prev probe property properties protein psi purine push PyMOL pyrimidine random range rasmol replace resno resume rewind reverse right rmsd RNA rna3d rock rubberband rxyz saSurface saved scale scene search smarts selected seqid shapely sidechain sin site size smiles substructure solid sort specialPosition sqrt split starWidth starScale stddev straightness structureId supercell sub sum sum2 surface surfaceDistance symop symops sx sy sz sxyz temperature relativeTemperature tensor theta thisModel ticks top torsion trajectory trajectories translucent transparent triangles trim type ux uy uz uxyz user valence vanderWaals vdw vdwRadius visible volume vx vy vz vxyz xyz w wyckoff wyckoffm x y z addHydrogens allConnected angstroms anisotropy append arc area aromatic arrow async audio auto axis barb binary blockData cancel cap cavity centroid check checkCIR chemical circle collapsed col colorScheme command commands contour contours corners count criterion create crossed curve cutoff cylinder diameter discrete distanceFactor downsample drawing dynamicMeasurements eccentricity ed edges edgesOnly energy exitJmol faceCenterOffset filter first fixed fix flat fps from frontEdges full fullPlane functionXY functionXYZ gridPoints hiddenLinesDashed homo ignore InChI InChIKey increment insideout interior intersection intersect internal lattice line lineData link lobe lonePair lp lumo macro manifest mapProperty maxSet menu minSet modelBased molecular mrc msms name nmr noCross noDebug noEdges noHead noLoad noPlane object obj offset offsetSide once orbital atomicOrbital packed palindrome parameters path pdb period periodic perpendicular perp phase planarParam pocket pointsPerAngstrom radical rad reference remove resolution reverseColor rotate45 selection sigma sign silent sphere squared stdInChI stdInChIKey stop title titleFormat to validation value variable variables vertices width wigner wignerSeitz backgroundModel celShading celShadingPower debug debugHigh defaultLattice measurements measurement scale3D toggleLabel userColorScheme throw timeout timeouts window animationMode appletProxy atomTypes axesColor axis1Color axis2Color axis3Color backgroundColor bondmode boundBoxColor boundingBoxColor chirality cipRule currentLocalPath dataSeparator defaultAngleLabel defaultColorScheme defaultColors defaultDirectory defaultDistanceLabel defaultDropScript defaultLabelPDB defaultLabelXYZ defaultLoadFilter defaultLoadScript defaults defaultTorsionLabel defaultVDW drawFontSize eds edsDiff energyUnits fileCacheDirectory fontsize helpPath hoverLabel language loadFormat loadLigandFormat logFile measurementUnits nihResolverFormat nmrPredictFormat nmrUrlFormat pathForAllFiles picking pickingStyle pickLabel platformSpeed propertyColorScheme quaternionFrame smilesUrlFormat smiles2dImageFormat unitCellColor axesOffset axisOffset axesScale axisScale bondTolerance cameraDepth defaultDrawArrowScale defaultTranslucent dipoleScale ellipsoidAxisDiameter gestureSwipeFactor hbondsAngleMinimum hbondHXDistanceMaximum hbondsDistanceMaximum hbondNODistanceMaximum hoverDelay loadAtomDataTolerance minBondDistance minimizationCriterion minimizationMaxAtoms modulationScale mouseDragFactor mouseWheelFactor navFPS navigationDepth navigationSlab navigationSpeed navX navY navZ particleRadius pointGroupDistanceTolerance pointGroupLinearTolerance radius rotationRadius scaleAngstromsPerInch sheetSmoothing slabRange solventProbeRadius spinFPS spinX spinY spinZ stereoDegrees strutDefaultRadius strutLengthMaximum vectorScale vectorsCentered vectorSymmetry vectorTrail vibrationPeriod vibrationScale visualRange ambientPercent ambient animationFps axesMode bondRadiusMilliAngstroms bondingVersion delayMaximumMs diffusePercent diffuse dotDensity dotScale ellipsoidDotCount helixStep hermiteLevel historyLevel labelpointerwidth lighting logLevel meshScale minimizationReportSteps minimizationSteps minPixelSelRadius percentVdwAtom perspectiveModel phongExponent pickingSpinRate propertyAtomNumberField propertyAtomNumberColumnCount propertyDataColumnCount propertyDataField repaintWaitMs ribbonAspectRatio contextDepthMax scriptReportingLevel showScript smallMoleculeMaxAtoms specular specularExponent specularPercent specPercent specularPower specpower strandCount strandCountForMeshRibbon strandCountForStrands strutSpacing zDepth zSlab zshadePower allowEmbeddedScripts allowGestures allowKeyStrokes allowModelKit allowMoveAtoms allowMultiTouch allowRotateSelected antialiasDisplay antialiasImages antialiasTranslucent appendNew applySymmetryToBonds atomPicking allowAudio autobond autoFPS autoplayMovie axesMolecular axesOrientationRasmol axesUnitCell axesWindow bondModeOr bondPicking bonds bond cartoonBaseEdges cartoonBlocks cartoonBlockHeight cartoonsFancy cartoonFancy cartoonLadders cartoonRibose cartoonRockets cartoonSteps chainCaseSensitive cipRule6Full colorRasmol debugScript defaultStructureDssp disablePopupMenu displayCellParameters showUnitcellInfo dotsSelectedOnly dotSurface doublePrecision dragSelected drawHover drawPicking dsspCalculateHydrogenAlways elementKey ellipsoidArcs ellipsoidArrows ellipsoidAxes ellipsoidBall ellipsoidDots ellipsoidFill fileCaching fontCaching fontScaling forceAutoBond fractionalRelative greyscaleRendering hbondsBackbone hbondsRasmol hbondsSolid hetero hideNameInPopup hideNavigationPoint hideNotSelected highResolution hydrogen hydrogens imageState isKiosk isosurfaceKey isosurfacePropertySmoothing isosurfacePropertySmoothingPower jmolInJSpecView justifyMeasurements languageTranslation leadAtom leadAtoms legacyAutoBonding legacyHAddition legacyJavaFloat logCommands logGestures macroDirectory measureAllModels measurementLabels measurementNumbers messageStyleChime minimizationRefresh minimizationSilent modelkit modelkitMode modulateOccupancy monitorEnergy multiplebondbananas multipleBondRadiusFactor multipleBondSpacing multiProcessor navigateSurface navigationMode navigationPeriodic partialDots pdbAddHydrogens pdbGetHeader pdbSequential perspectiveDepth preserveState rangeSelected redo redoMove refreshing ribbonBorder rocketBarrels saveProteinStructureState scriptQueue selectAllModels selectHetero selectHydrogen showAxes showBoundBox showBoundingBox showFrank showHiddenSelectionHalos showHydrogens showKeyStrokes showMeasurements showModulationVectors showMultipleBonds showNavigationPointAlways showTiming showUnitcell showUnitcellDetails slabByAtom slabByMolecule slabEnabled smartAromatic solvent solventProbe ssBondsBackbone statusReporting strutsMultiple syncMouse syncScript testFlag1 testFlag2 testFlag3 testFlag4 traceAlpha twistedSheets undoAuto undo undoMax undoMove useMinimizationThread useNumberLocalization waitForMoveTo windowCentered wireframeRotation zeroBasedXyzRasmol zoomEnabled zoomHeight zoomLarge zShade".split(" ")), +h=E(-1,[268442114,-1,-1,-1,-1,-1,-1,268439040,-1,268438017,268438018,268440323,268440322,268440321,268440320,268440325,-1,268440326,134217759,1073742336,1073742337,268437504,268437505,1073742332,1073742338,1073742330,268441090,1073742339,268441602,268441601,268441603,268441091,4097,-1,4098,1611272194,1114249217,1610616835,4100,4101,1812599299,-1,102407,4102,4103,1112152066,-1,102411,102412,20488,12289,-1,4105,135174,1765808134,-1,134221831,1094717448,-1,-1,4106,528395,134353926,-1,102408,134221834, +102413,12290,-1,528397,12291,1073741914,554176526,135175,-1,1610625028,1275069444,1112150019,135176,537022465,1112150020,-1,364547,102402,102409,364548,266255,134218759,1228935687,-1,4114,134320648,1287653388,4115,-1,1611272202,134320141,-1,1112150021,1275072526,20500,1112152070,-1,136314895,2097159,2097160,2097162,1613238294,-1,20482,12294,1610616855,544771,134320649,1275068432,4121,4122,135180,134238732,1825200146,-1,135182,-1,134223363,36869,528411,134217766,1745489939,-1,-1,-1,1112152071,-1,20485, +4126,-1,1073877010,1094717454,-1,1275072532,4128,4129,4130,4131,-1,1073877011,1073742078,1073742079,102436,20487,-1,4133,4134,135190,135188,1073742106,1275203608,-1,36865,102439,134256129,134221850,-1,266281,4138,-1,266284,4141,-1,4142,12295,36866,1112152073,-1,1112152074,-1,528432,4145,4146,1275082241,1611141172,-1,-1,2097184,134222350,554176565,1112152075,-1,1611141175,1611141176,-1,1112152076,-1,266298,-1,528443,1649022989,-1,1639976963,-1,1094713367,659482,-1,2109448,1094713368,4156,-1,1112152078, +4160,4162,364558,4163,1814695966,36868,135198,-1,4166,102406,659488,134221856,12297,4168,4170,1153433601,-1,134217731,1073741863,-1,1073742077,-1,1073742088,1094713362,-1,1073742120,-1,1073742132,1275068935,1086324744,1086324747,1086324748,1073742158,1086326798,1088421903,603979956,134217764,1073742176,1073742178,1073742184,1275068446,134218250,1073741826,134217765,134218241,1275069441,1111490561,1111490562,1073741832,1086324739,-1,553648129,2097154,134217729,1275068418,1073741848,1094713346,-1,-1, +1094713347,1086326786,1094715393,1086326785,1111492609,1111492610,1111492611,96,1073741856,1073741857,1073741858,1073741861,1073741862,1073741859,2097200,1073741864,1073741865,1275068420,1228931586,2097155,1073741871,1073742328,1073741872,-1,134221829,2097188,1094713349,1086326788,-1,1094713351,1111490563,-1,1073741881,1073741882,2097190,1073741884,134217736,14,1073741894,1073741898,1073742329,-1,-1,134218245,1275069442,1111490564,-1,1073741918,1073741922,2097192,1275069443,1275068928,2097156,1073741925, +1073741926,1073741915,1111490587,1086326789,1094715402,1094713353,1073741936,570425357,1073741938,1275068427,1073741946,545259560,1631586315,-1,1111490565,1073741954,1073741958,1073741960,1073741964,1111492612,1111492613,1111492614,1145047050,1111492615,1111492616,1111492617,1145047053,1086324742,-1,1086324743,1094713356,-1,-1,1094713357,2097194,536870920,134219777,1113589786,-1,-1,1073741974,1086324745,-1,4120,1073741982,553648145,1073741984,1086324746,-1,1073741989,-1,1073741990,-1,1111492618,-1, +-1,1073742331,1073741991,1073741992,1275069446,1140850706,1073741993,1073741996,1140850691,1140850692,1073742001,1111490566,-1,1111490567,64,1073742016,1073742018,1073742019,32,1073742022,1073742024,1073742025,1073742026,1111490580,-1,1111490581,1111490582,1111490583,1111490584,1111490585,1111490586,1145045008,1094713360,-1,1094713359,1094713361,1073742029,1073742031,1073742030,1275068929,1275068930,603979891,1073742036,1073742037,603979892,1073742042,1073742046,1073742052,1073742333,-1,-1,1073742056, +1073742057,1073742039,1073742058,1073742060,134218760,2097166,1128269825,1111490568,1073742072,1073742074,1073742075,1111492619,134218753,1111490569,1275068725,134217750,-1,1073742096,1073742098,134217751,-1,1275068447,1094713363,1275334681,1073742108,-1,1073742109,1715472409,-1,2097168,1111490570,2097170,1275335685,1073742110,2097172,134219266,1073742114,1073742116,1275068443,1094715412,4143,1073742125,1140850693,1073742126,1073742127,2097174,1073742128,1073742129,1073742134,1145045003,1073742135, +1073742136,536875059,1073742139,134218756,-1,1113589787,1094713365,1073742144,2097178,134218244,1094713366,1140850694,134218757,1237320707,1073742150,1275068444,2097196,134218246,1275069447,570425403,-1,192,1111490574,1086324749,1073742163,1275068931,128,160,2097180,1111490575,1296041985,-1,1111490571,1111490572,1111490573,1145047052,1111492620,-1,1275068445,1111490576,2097182,1073742164,1073742172,1073742174,536870926,-1,603979967,-1,1073742182,1275068932,1140850696,1111490577,1111490578,1111490579, +1145045006,1073742186,1094715418,1648363544,-1,-1,2097198,1312817669,1111492626,1111492627,1111492628,1145047055,1145047049,1140850705,1086324754,1086324755,1111492629,1111492630,1111492631,1073741828,1073741834,1073741836,1073741837,1073741839,1073741840,1073741842,1075838996,1073741846,1073741849,1073741851,1073741852,1073741854,1073741860,1073741866,1073741868,1073741874,1073741875,1073741876,1094713350,1073741877,603979821,1073741879,1073741880,1073741886,1275068934,1073741888,1073741890,1073741892, +1073741896,1073741900,1073741902,1275068425,1073741905,1073741904,1073741906,1073741908,1073741910,1073741912,1073741917,1073741920,1073741924,1073741928,1073741929,603979836,1073741931,1073741932,1073741933,1073741934,1073741935,266256,1073741937,1073741940,1073741942,12293,-1,1073741948,1073741950,1073741952,1073741956,1073741961,1073741962,1073741966,1073741968,1073741970,603979856,1073741973,1073741976,1275068433,1073741978,1073741981,1073741985,1073741986,134217763,-1,1073741988,1073741994,1073741998, +1073742E3,1073741999,1073742002,1073742004,1073742006,1073742008,4124,1073742010,4125,1073742014,1073742015,1073742020,1073742027,1073742028,1073742032,1073742033,1073742034,1073742038,1073742040,1073742041,1073742044,1073742048,1073742050,1073742054,1073742064,1073742062,1073742066,1073742068,1073742070,1073742076,1073741850,1073742080,1073742082,1073742083,1073742084,1073742086,1073742090,-1,1073742092,-1,1073742094,1073742099,1073742100,1073742104,1073742112,1073742111,1073742118,1073742119,1073742122, +1073742124,1073742130,1073742140,1073742146,1073742147,1073742148,1073742154,1073742156,1073742159,1073742160,1073742162,1073742166,1073742168,1073742170,1073742189,1073742188,1073742190,1073742192,1073742194,1073742196,1073742197,-1,536870914,603979820,553648135,536870916,536870917,536870918,537006096,-1,1610612740,1610612741,536870930,36870,536875070,-1,536870932,545259521,545259522,545259524,545259526,545259528,545259530,545259532,545259534,1610612737,545259536,-1,1086324752,1086324753,545259538, +545259540,545259542,545259545,-1,545259546,545259547,545259548,545259543,545259544,545259549,545259550,545259552,545259554,545259555,570425355,545259556,545259557,545259558,545259559,1610612738,545259561,545259562,545259563,545259564,545259565,545259566,545259568,545259570,545259569,545259571,545259572,545259573,545259574,545259576,553648158,545259578,545259580,545259582,545259584,545259586,570425345,-1,570425346,-1,570425348,570425350,570425352,570425353,570425354,570425356,570425358,570425359,570425361, +570425360,-1,570425362,570425363,570425364,570425365,553648152,570425366,570425367,570425368,570425371,570425372,570425373,570425374,570425376,570425378,570425380,570425381,570425382,570425384,1665140738,570425388,570425390,570425392,570425393,570425394,570425396,570425398,570425400,570425402,570425404,570425406,570425408,1648361473,603979972,603979973,553648185,570425412,570425414,570425416,553648130,-1,553648132,553648133,553648134,553648136,553648137,553648138,-1,553648139,553648140,553648141, +553648142,553648143,553648144,553648147,1073741995,553648148,553648149,553648150,553648151,553648153,553648154,553648155,553648156,553648157,553648160,553648161,553648162,553648164,553648165,553648166,553648167,553648168,536870922,553648170,536870924,553648172,553648174,-1,553648176,-1,553648178,553648180,553648182,553648183,553648186,553648188,553648190,603979778,603979780,603979781,603979782,603979783,603979784,603979785,603979786,603979788,603979790,603979792,603979794,603979796,603979797,603979798, +603979800,603979802,603979804,603979806,603979808,603979809,603979812,603979814,1677721602,-1,603979815,603979810,570425347,603979816,-1,603979817,603979818,603979819,603979811,603979822,603979823,603979824,603979825,603979826,603979827,603979828,-1,603979829,603979830,603979831,603979832,603979833,603979834,603979835,603979838,603979839,603979840,603979841,603979842,603979843,603979844,603979845,603979846,603979847,603979848,603979849,603979850,603979852,603979853,603979854,1612709894,603979858, +603979860,603979862,603979864,1612709900,-1,603979865,603979866,603979867,603979868,553648146,603979869,603979870,603979871,2097165,-1,603979872,603979873,603979874,603979875,603979876,545259567,603979877,603979878,1610612739,603979879,603979880,603979881,603983903,-1,603979884,603979885,603979886,570425369,570425370,603979887,603979888,603979889,603979890,603979893,603979894,603979895,603979896,603979897,603979898,603979899,4139,4140,603979900,603979901,603979902,603979903,603979904,603979906,603979908, +603979910,603979914,603979916,-1,603979918,603979920,603979922,603979924,603979926,603979927,603979928,603979930,603979934,603979936,603979937,603979939,603979940,603979942,603979944,1612709912,603979948,603979952,603979954,603979955,603979957,603979958,603979960,603979962,603979964,603979965,603979966,603979968,603979969,603984065,553648184,4165,603979970,603979971,603979975,603979976,603979977,603979978,603979980,603979982,603979983,603979984]);a.length!=h.length&&(JU.Logger.error("sTokens.length ("+ +a.length+") != iTokens.length! ("+h.length+")"),System.exit(1));f=a.length;for(e=0;ethis.colixes.length)this.colixes=JU.AU.ensureLengthShort(this.colixes,d),this.paletteIDs=JU.AU.ensureLengthByte(this.paletteIDs,d);null==this.bsColixSet&&(this.bsColixSet=JU.BS.newN(this.ms.ac));return d}, +"~N,~N");c(b,"setColixAndPalette",function(a,d,b){null==this.colixes&&this.checkColixLength(-1,this.ms.ac);this.colixes[b]=a=this.getColixI(a,d,b);this.bsColixSet.setBitTo(b,0!=a||0==this.shapeID);this.paletteIDs[b]=d},"~N,~N,~N");j(b,"setAtomClickability",function(){if(this.isActive)for(var a=this.ms.at,d=this.ms.ac;0<=--d;){var b=a[d];null==b||(0==(b.shapeVisibilityFlags&this.vf)||this.ms.isAtomHidden(d))||b.setClickable(this.vf)}});j(b,"getShapeState",function(){return null})});u("J.shape");C(["J.shape.AtomShape"], +"J.shape.Balls",["JU.BS","J.c.PAL","JU.C"],function(){var b=H(J.shape,"Balls",J.shape.AtomShape);j(b,"setSize",function(a,d){2147483647==a?(this.isActive=!0,null==this.bsSizeSet&&(this.bsSizeSet=new JU.BS),this.bsSizeSet.or(d)):this.setSize2(a,d)},"~N,JU.BS");j(b,"setSizeRD",function(a,d){this.isActive=!0;null==this.bsSizeSet&&(this.bsSizeSet=new JU.BS);for(var b=Math.min(this.ms.at.length,d.length()),c=d.nextSetBit(0);0<=c&&c=d.length);a=b.nextSetBit(a+1))f=Integer.$valueOf(d[h++]),c=JU.C.getColixO(f),0==c&&(c=2),f=J.c.PAL.pidOf(f),e=this.ms.at[a],e.colixAtom=this.getColixA(c,f,e),this.bsColixSet.setBitTo(a,2!=c||f!=J.c.PAL.NONE.id),e.paletteID=f}}else if("colors"===a){h=d[0];null==this.bsColixSet&&(this.bsColixSet=new JU.BS);d=this.ms.at;for(a=b.nextSetBit(0);0<=a;a=b.nextSetBit(a+1))if(!(a>=h.length||0==(c=h[a])))d[a].colixAtom=c,d[a].paletteID=J.c.PAL.UNKNOWN.id,this.bsColixSet.set(a)}else if("translucency"=== +a){c=d.equals("translucent");null==this.bsColixSet&&(this.bsColixSet=new JU.BS);d=this.ms.at;for(a=b.nextSetBit(0);0<=a;a=b.nextSetBit(a+1))d[a].setTranslucent(c,this.translucentLevel),c&&this.bsColixSet.set(a)}else a.startsWith("ball")&&(a=a.substring(4).intern()),this.setPropAS(a,d,b)},"~S,~O,JU.BS");j(b,"setAtomClickability",function(){for(var a=this.vwr.slm.bsDeleted,d=this.ms.ac;0<=--d;){var b=this.ms.at[d];null!=b&&(b.setClickable(0),null!=a&&a.get(d)||(0==(b.shapeVisibilityFlags&this.vf)|| +this.ms.isAtomHidden(d))||b.setClickable(this.vf))}})});u("J.shape");C(["J.shape.Shape"],"J.shape.FontLineShape",null,function(){var b=v(function(){this.font3d=this.tickInfos=null;r(this,arguments)},J.shape,"FontLineShape",J.shape.Shape);j(b,"initShape",function(){this.translucentAllowed=!1});c(b,"setPropFLS",function(a,d){if("tickInfo"===a){var b=d.type;if(null==d.ticks)if(" "==d.type)this.tickInfos=null;else{if(null!=this.tickInfos){for(var b=!1,c=0;4>c;c++)null!=this.tickInfos[c]&&this.tickInfos[c].type== +d.type?this.tickInfos[c]=null:b=!0;b||(this.tickInfos=null)}}else null==this.tickInfos&&(this.tickInfos=Array(4)),this.tickInfos["xyz".indexOf(b)+1]=d}else"font"===a&&(this.font3d=d)},"~S,~O");j(b,"getShapeState",function(){return null})});u("J.shape");C(["J.shape.Shape"],"J.shape.Frank",["J.i18n.GT","JV.Viewer"],function(){var b=v(function(){this.baseFont3d=this.currentMetricsFont3d=null;this.scaling=this.dy=this.dx=this.y=this.x=this.frankDescent=this.frankAscent=this.frankWidth=0;this.font3d=null; +r(this,arguments)},J.shape,"Frank",J.shape.Shape);j(b,"initShape",function(){this.myType="frank";this.baseFont3d=this.font3d=this.vwr.gdata.getFont3DFSS("SansSerif","Plain",16);if(JV.Viewer.isJS||JV.Viewer.isSwingJS)J.shape.Frank.frankString="JSmol";this.calcMetrics()});j(b,"setProperty",function(a,d){"font"===a&&10<=d.fontSize&&(this.baseFont3d=d,this.scaling=0)},"~S,~O,JU.BS");j(b,"wasClicked",function(a,d){var b=this.vwr.getScreenWidth(),c=this.vwr.getScreenHeight();return 0b-this.frankWidth- +4&&d>c-this.frankAscent-4},"~N,~N");j(b,"checkObjectHovered",function(a,d){if(!this.vwr.getShowFrank()||!this.wasClicked(a,d)||!this.vwr.menuEnabled())return!1;this.vwr.hoverOnPt(a,d,J.i18n.GT.$("Click for menu..."),null,null);return!0},"~N,~N,JU.BS");c(b,"calcMetrics",function(){this.font3d!==this.currentMetricsFont3d&&(this.currentMetricsFont3d=this.font3d,this.frankWidth=this.font3d.stringWidth(J.shape.Frank.frankString),this.frankDescent=this.font3d.getDescent(),this.frankAscent=this.font3d.getAscent())}); +c(b,"getFont",function(a){a!=this.scaling&&(this.scaling=a,this.font3d=this.vwr.gdata.getFont3DScaled(this.baseFont3d,a),this.calcMetrics())},"~N");j(b,"getShapeState",function(){return null});b.frankString="Jmol"});u("J.shape");C(null,"J.shape.Shape",["J.c.PAL","JU.C","$.Logger","JV.JC"],function(){var b=v(function(){this.ms=this.vwr=this.myType=null;this.translucentLevel=this.vf=this.shapeID=0;this.translucentAllowed=!0;this.isBioShape=!1;this.bsColixSet=this.bsSizeSet=null;r(this,arguments)},J.shape, +"Shape",null);c(b,"initializeShape",function(a,d,b){this.vwr=a;this.shapeID=b;this.vf=JV.JC.getShapeVisibilityFlag(b);this.setModelSet(d);this.initShape()},"JV.Viewer,JM.ModelSet,~N");c(b,"setModelVisibilityFlags",function(){},"JU.BS");c(b,"getSize",function(){return 0},"~N");c(b,"getSizeG",function(){return 0},"JM.Group");c(b,"replaceGroup",function(){},"JM.Group,JM.Group");c(b,"setModelSet",function(a){this.ms=a;this.initModelSet()},"JM.ModelSet");c(b,"initModelSet",function(){});c(b,"setShapeSizeRD", +function(a,d,b){null==d?this.setSize(a,b):this.setSizeRD(d,b)},"~N,J.atomdata.RadiusData,JU.BS");c(b,"setSize",function(){},"~N,JU.BS");c(b,"setSizeRD",function(){},"J.atomdata.RadiusData,JU.BS");c(b,"setPropS",function(a,d){"setProperties"===a?this.setProperties(d):"translucentLevel"===a?this.translucentLevel=d.floatValue():"refreshTrajectories"!==a&&JU.Logger.warn("unassigned "+JV.JC.shapeClassBases[this.shapeID]+" + shape setProperty:"+a+":"+d)},"~S,~O,JU.BS");c(b,"getPropertyData",function(a, +d){return this.getPropShape(a,d)},"~S,~A");c(b,"getPropShape",function(a,d){if(z(d[1],Integer)){var b=d[1].intValue();d[1]=this.getProperty(a,b);return null!=d[1]}return!1},"~S,~A");c(b,"getProperty",function(){return null},"~S,~N");c(b,"getIndexFromName",function(){return-1},"~S");c(b,"wasClicked",function(){return!1},"~N,~N");c(b,"findNearestAtomIndex",function(){},"~N,~N,~A,JU.BS");c(b,"checkBoundsMinMax",function(){},"JU.P3,JU.P3");c(b,"setAtomClickability",function(){});c(b,"checkObjectClicked", +function(){return null},"~N,~N,~N,JU.BS,~B");c(b,"checkObjectHovered",function(){return!1},"~N,~N,JU.BS");c(b,"checkObjectDragged",function(){return!1},"~N,~N,~N,~N,~N,JU.BS");c(b,"coordinateInRange",function(a,d,b,c,f){this.vwr.tm.transformPtScr(b,f);a=(a-f.x)*(a-f.x)+(d-f.y)*(d-f.y);return a<=c?a:-1},"~N,~N,JU.T3,~N,JU.P3i");c(b,"getColixI",function(a,d,b){return this.getColixA(a,d,this.ms.at[b])},"~N,~N,~N");c(b,"getColixA",function(a,d,b){return 2==a?this.vwr.cm.getColixAtomPalette(b,d):a},"~N,~N,JM.Atom"); +c(b,"getColixB",function(a,d,b){return 2==a?this.vwr.cm.getColixBondPalette(b,d):a},"~N,~N,JM.Bond");c(b,"getShapeDetail",function(){return null});b.getColix=c(b,"getColix",function(a,d,b){return JU.C.getColixInherited(null==a||d>=a.length?0:a[d],b.colixAtom)},"~A,~N,JM.Atom");b.getFontCommand=c(b,"getFontCommand",function(a,d){return null==d?"":"font "+a+" "+d.getInfo()},"~S,JU.Font");b.getColorCommandUnk=c(b,"getColorCommandUnk",function(a,d,b){return J.shape.Shape.getColorCommand(a,J.c.PAL.UNKNOWN.id, +d,b)},"~S,~N,~B");b.getColorCommand=c(b,"getColorCommand",function(a,d,b,c){if(d==J.c.PAL.UNKNOWN.id&&0==b)return"";d=d==J.c.PAL.UNKNOWN.id&&0==b?"":(c?J.shape.Shape.getTranslucentLabel(b)+" ":"")+(d!=J.c.PAL.UNKNOWN.id&&!J.c.PAL.isPaletteVariable(d)?J.c.PAL.getPaletteName(d):J.shape.Shape.encodeColor(b));return"color "+a+" "+d},"~S,~N,~N,~B");b.encodeColor=c(b,"encodeColor",function(a){return JU.C.isColixColorInherited(a)?"none":JU.C.getHexCode(a)},"~N");b.getTranslucentLabel=c(b,"getTranslucentLabel", +function(a){return JU.C.isColixTranslucent(a)?JU.C.getColixTranslucencyLabel(a):"opaque"},"~N");b.appendCmd=c(b,"appendCmd",function(a,d){0!=d.length&&a.append(" ").append(d).append(";\n")},"JU.SB,~S");c(b,"setProperties",function(a){var d=this.vwr.bsA();if(z(a,"JU.Lst"))for(;0s||0.6s?n.i:q.i),c.setT(h))}}}}return e},"~N,~N,JU.BS,JU.P3,~A")});u("J.thread");C(["J.thread.JmolThread"],"J.thread.HoverWatcherThread",null,function(){var b=v(function(){this.moved=this.current=this.actionManager=null;this.hoverDelay=0;r(this,arguments)},J.thread,"HoverWatcherThread",J.thread.JmolThread);A(b,function(a,d,b,c){this.setViewer(c,"HoverWatcher");this.actionManager=a;this.current=d;this.moved=b;this.start()},"JV.ActionManager,JV.MouseState,JV.MouseState,JV.Viewer");j(b,"run1",function(a){for(;;)switch(a){case -1:this.isJS|| +Thread.currentThread().setPriority(1);a=0;break;case 0:this.hoverDelay=this.vwr.getHoverDelay();if(this.stopped||0>=this.hoverDelay||!this.runSleep(this.hoverDelay,1))return;a=1;break;case 1:this.moved.is(this.current)&&(this.currentTime=System.currentTimeMillis(),this.currentTime-this.moved.time>(this.vwr.acm.zoomTrigger?100:this.hoverDelay)&&!this.stopped&&this.actionManager.checkHover()),a=0}},"~N")});u("J.thread");C(["java.lang.Thread"],"J.thread.JmolThread",["JU.Logger","JV.Viewer"],function(){var b= +v(function(){this.$name="JmolThread";this.sc=this.eval=this.vwr=null;this.hoverEnabled=this.haveReference=!1;this.sleepTime=this.currentTime=this.lastRepaintTime=this.targetTime=this.startTime=0;this.isReset=this.stopped=this.isJS=!1;this.useTimeout=!0;this.junk=0;r(this,arguments)},J.thread,"JmolThread",Thread);c(b,"setManager",function(){return 0},"~O,JV.Viewer,~O");c(b,"setViewer",function(a,d){this.setName(d);this.$name=d+"_"+ ++J.thread.JmolThread.threadIndex;this.vwr=a;this.isJS=a.isSingleThreaded}, +"JV.Viewer,~S");c(b,"setEval",function(a){this.eval=a;this.sc=this.vwr.getEvalContextAndHoldQueue(a);null!=this.sc&&(this.useTimeout=a.getAllowJSThreads())},"J.api.JmolScriptEvaluator");c(b,"resumeEval",function(){if(!(null==this.eval||!this.isJS&&!this.vwr.testAsync||!this.useTimeout)){this.sc.mustResumeEval=!this.stopped;var a=this.eval,d=this.sc;this.sc=this.eval=null;setTimeout(function(){a.resumeEval(d)},1)}});j(b,"start",function(){this.run()});j(b,"run",function(){this.startTime=System.currentTimeMillis(); +try{this.run1(-1)}catch(a){if(F(a,"InterruptedException")){var d=a;JU.Logger.debugging&&!z(this,"J.thread.HoverWatcherThread")&&this.oops(d)}else if(F(a,Exception))this.oops(a);else throw a;}});c(b,"oops",function(a){JU.Logger.debug(this.$name+" exception "+a);(!JV.Viewer.isJS||JV.Viewer.isSwingJS)&&a.printStackTrace();this.vwr.queueOnHold=!1},"Exception");c(b,"runSleep",function(a,d){if(this.isJS&&!this.useTimeout)return!0;var b=this;setTimeout(function(){b.run1(d)},Math.max(a,0));return!1},"~N,~N"); +c(b,"interrupt",function(){this.stopped=!0;this.vwr.startHoverWatcher(!0);this.isJS||$(this,J.thread.JmolThread,"interrupt",[])});c(b,"checkInterrupted",function(a){return this.haveReference&&(null==a||!a.$name.equals(this.$name))?!0:this.stopped},"J.thread.JmolThread");c(b,"reset",function(){this.isReset=!0;this.interrupt()});c(b,"toString",function(){return $(this,J.thread.JmolThread,"toString",[])+"["+this.$name+"]"});b.threadIndex=0});u("J.thread");C(["J.thread.JmolThread"],"J.thread.TimeoutThread", +["JU.SB"],function(){var b=v(function(){this.script=null;this.status=0;this.triggered=!0;r(this,arguments)},J.thread,"TimeoutThread",J.thread.JmolThread);A(b,function(a,d,b,c){this.setViewer(a,d);this.$name=d;this.set(b,c)},"JV.Viewer,~S,~N,~S");c(b,"set",function(a,d){this.sleepTime=a;null!=d&&(this.script=d)},"~N,~S");j(b,"toString",function(){return"timeout name="+this.$name+" executions="+this.status+" mSec="+this.sleepTime+" secRemaining="+(this.targetTime-System.currentTimeMillis())/1E3+" script="+ +this.script});j(b,"run1",function(a){for(;;)switch(a){case -1:this.isJS||Thread.currentThread().setPriority(1);this.targetTime=System.currentTimeMillis()+Math.abs(this.sleepTime);a=0;break;case 0:if(this.checkInterrupted(null)||(null==this.script||0==this.script.length)||!this.runSleep(26,1))return;a=1;break;case 1:a=System.currentTimeMillis()this.sleepTime)? +this.targetTime=System.currentTimeMillis()+Math.abs(this.sleepTime):this.vwr.timeouts.remove(this.$name);this.triggered&&(this.triggered=!1,this.$name.equals("_SET_IN_MOTION_")?this.vwr.checkInMotion(2):this.vwr.evalStringQuiet(a?this.script+';\ntimeout ID "'+this.$name+'";':this.script));a=a?0:-2;break;case -2:this.vwr.timeouts.remove(this.$name);return}},"~N");b.clear=c(b,"clear",function(a){for(var d,b=a.values().iterator();b.hasNext()&&((d=b.next())||1);){var c=d;c.script.equals("exitJmol")|| +c.interrupt()}a.clear()},"java.util.Map");b.setTimeout=c(b,"setTimeout",function(a,d,b,c,f){var e=d.get(b);0==c?null!=e&&(e.interrupt(),d.remove(b)):null!=e?e.set(c,f):(e=new J.thread.TimeoutThread(a,b,c,f),d.put(b,e),e.start())},"JV.Viewer,java.util.Map,~S,~N,~S");b.trigger=c(b,"trigger",function(a,d){var b=a.get(d);null!=b&&(b.triggered=0>b.sleepTime)},"java.util.Map,~S");b.showTimeout=c(b,"showTimeout",function(a,d){var b=new JU.SB;if(null!=a)for(var c,f=a.values().iterator();f.hasNext()&&((c= +f.next())||1);){var e=c;(null==d||e.$name.equalsIgnoreCase(d))&&b.append(e.toString()).append("\n")}return 0"},"java.util.Map,~S")});u("JM");C(["JU.Node","$.Point3fi","J.c.PAL"],"JM.Atom","JU.BS $.CU $.P3 $.PT $.SB J.atomdata.RadiusData J.c.VDW JM.Group JU.C $.Elements JV.JC".split(" "),function(){var b=v(function(){this.altloc="\x00";this.atomSite=this.atomID=0;this.group=null;this.atomNumberFlags=this.valence=this.userDefinedVanDerWaalRadius=0;this.atomSymmetry= +null;this.paletteID=this.colixAtom=this.madAtom=this.formalChargeAndFlags=0;this.bonds=null;this.shapeVisibilityFlags=this.clickabilityFlags=this.nBackbonesDisplayed=this.nBondsDisplayed=0;r(this,arguments)},JM,"Atom",JU.Point3fi,JU.Node);P(b,function(){this.paletteID=J.c.PAL.CPK.id});j(b,"setAtom",function(a,d,b,c,f,e,h,k,m){this.mi=a;this.atomSymmetry=f;this.atomSite=e;this.i=d;this.atomNumberFlags=h;m&&(this.formalChargeAndFlags=2);0!=k&&-2147483648!=k&&this.setFormalCharge(k);this.userDefinedVanDerWaalRadius= +c;null!=b&&this.setT(b);return this},"~N,~N,JU.P3,~N,JU.BS,~N,~N,~N,~B");c(b,"setShapeVisibility",function(a,d){this.shapeVisibilityFlags=d?this.shapeVisibilityFlags|a:this.shapeVisibilityFlags&~a},"~N,~B");c(b,"isCovalentlyBonded",function(a){if(null!=this.bonds)for(var d=this.bonds.length;0<=--d;)if(this.bonds[d].isCovalent()&&this.bonds[d].getOtherAtom(this)===a)return!0;return!1},"JM.Atom");c(b,"isBonded",function(a){if(null!=this.bonds)for(var d=this.bonds.length;0<=--d;)if(this.bonds[d].getOtherAtom(this)=== +a)return!0;return!1},"JM.Atom");c(b,"getBond",function(a){if(null!=this.bonds)for(var d=this.bonds.length;0<=--d;)if(null!=this.bonds[d].getOtherAtom(a))return this.bonds[d];return null},"JM.Atom");c(b,"addDisplayedBond",function(a,d){this.nBondsDisplayed+=d?1:-1;this.setShapeVisibility(a,0b?b:2E3*b);0>c&&0a||(a&127)>=JU.Elements.elementNumberMax||32767a?-3:a)<<24},"~N");c(b,"setVibrationVector",function(){this.formalChargeAndFlags|=1});j(b,"getFormalCharge",function(){return this.formalChargeAndFlags>>24});c(b,"getOccupancy100",function(){var a=this.group.chain.model.ms.occupancies;return null==a?100:Math.round(a[this.i])});c(b,"isOccupied",function(){var a=this.group.chain.model.ms.occupancies;return null==a||50<=a[this.i]}); +c(b,"getBfactor100",function(){var a=this.group.chain.model.ms.bfactor100s;return null==a?0:a[this.i]});c(b,"getHydrophobicity",function(){var a=this.group.chain.model.ms.hydrophobicities;return null==a?JU.Elements.getHydrophobicity(this.group.groupID):a[this.i]});c(b,"setRadius",function(a){return!Float.isNaN(this.userDefinedVanDerWaalRadius=0this.valence});c(b,"setValence",function(a){this.isDeleted()||(this.valence=0>a?0:127>=a?a:127)},"~N");j(b,"getValence",function(){return this.isDeleted()?-1:0d&&0!=b)&&d++}return d},"~B");j(b,"getCovalentBondCount",function(){if(null==this.bonds)return 0;for(var a=0,d=this.bonds.length;0<=--d;){var b=this.bonds[d];b.isCovalentNotPartial0()&&!b.getOtherAtom(this).isDeleted()&&++a}return a});c(b,"getCovalentOrPartialBondCount",function(){if(null==this.bonds)return 0;for(var a=0,d=this.bonds.length;0<=--d;){var b=this.bonds[d];b.isCovalent()&&!b.getOtherAtom(this).isDeleted()&&++a}return a});j(b,"getCovalentHydrogenCount",function(){if(null== +this.bonds)return 0;for(var a=0,d=this.bonds.length;0<=--d;)if(this.bonds[d].isCovalentNotPartial0()){var b=this.bonds[d].getOtherAtom(this);0<=b.valence&&1==b.getElementNumber()&&++a}return a});j(b,"getImplicitHydrogenCount",function(){return this.group.chain.model.ms.getMissingHydrogenCount(this,!1)});j(b,"getTotalHydrogenCount",function(){return this.getCovalentHydrogenCount()+this.getImplicitHydrogenCount()});j(b,"getTotalValence",function(){var a=this.getValence();if(0>a)return a;var d=this.getImplicitHydrogenCount(); +return a+d+this.group.chain.model.ms.aaRet[4]});j(b,"getCovalentBondCountPlusMissingH",function(){return this.getCovalentBondCount()+this.getImplicitHydrogenCount()});c(b,"getTargetValence",function(){switch(this.getElementNumber()){case 6:case 14:case 32:return 4;case 5:case 7:case 15:return 3;case 8:case 16:return 2;case 1:case 9:case 17:case 35:case 53:return 1}return-1});c(b,"getDimensionValue",function(a){return 0==a?this.x:1==a?this.y:this.z},"~N");c(b,"getVanderwaalsRadiusFloat",function(a, +d){return Float.isNaN(this.userDefinedVanDerWaalRadius)?a.getVanderwaalsMarType(this.atomNumberFlags,this.getVdwType(d))/1E3:this.userDefinedVanDerWaalRadius},"JV.Viewer,J.c.VDW");c(b,"getVdwType",function(a){switch(a){case J.c.VDW.AUTO:a=this.group.chain.model.ms.getDefaultVdwType(this.mi);break;case J.c.VDW.NOJMOL:a=this.group.chain.model.ms.getDefaultVdwType(this.mi),a===J.c.VDW.AUTO_JMOL&&(a=J.c.VDW.AUTO_BABEL)}return a},"J.c.VDW");c(b,"getBondingRadius",function(){var a=this.group.chain.model.ms.bondingRadii, +a=null==a||this.i>=a.length?0:a[this.i];return 0==a?JU.Elements.getBondingRadius(this.atomNumberFlags,this.getFormalCharge()):a});c(b,"getVolume",function(a,d){var b=null==d?this.userDefinedVanDerWaalRadius:NaN;Float.isNaN(b)&&(b=a.getVanderwaalsMarType(this.getElementNumber(),this.getVdwType(d))/1E3);var c=0;if(null!=this.bonds)for(var f=0;fb+h)){if(e+b<=h)return 0;h=b-(b*b+e*e-h*h)/(2*e);c-=1.0471975511965976*h*h*(3*b-h)}}return c+4.1887902047863905*b*b*b},"JV.Viewer,J.c.VDW");c(b,"getCurrentBondCount",function(){return null==this.bonds?0:this.bonds.length});c(b,"getRadius",function(){return Math.abs(this.madAtom/2E3)});j(b,"getIndex",function(){return this.i});j(b,"getAtomSite",function(){return this.atomSite});j(b,"getGroupBits",function(a){this.group.setAtomBits(a)},"JU.BS");j(b,"getAtomName", +function(){return 0b)return!1;var e=this.sY-d;b-=f+e*e;if(0>b)return!1;if(null==c)return!0;var f=this.sZ,e=c.sZ,h=B(c.sD/2);if(fa?360+a:a}return this.group.getGroupParameter(d);case 1665140738:case 1112152075:return this.getRadius();case 1111490571:return a.antialiased?B(this.sX/2):this.sX;case 1111490572:return a.getScreenHeight()-(a.antialiased?B(this.sY/2):this.sY);case 1111490573:return a.antialiased?B(this.sZ/2):this.sZ;case 1113589787:return a.slm.isAtomSelected(this.i)? +1:0;case 1111490575:return a.ms.getSurfaceDistanceMax(),this.getSurfaceDistance100()/100;case 1111492620:return this.getBfactor100()/100;case 1111490577:return this.getFractionalUnitCoord(!a.g.legacyJavaFloat,"X",b);case 1111490578:return this.getFractionalUnitCoord(!a.g.legacyJavaFloat,"Y",b);case 1111490579:return this.getFractionalUnitCoord(!a.g.legacyJavaFloat,"Z",b);case 1648363544:return this.getVanderwaalsRadiusFloat(a,J.c.VDW.AUTO);case 1648361473:return d=this.getVibrationVector(),null== +d?0:d.length()*a.getFloat(1648361473);case 1111492626:return this.getVib("x");case 1111492627:return this.getVib("y");case 1111492628:return this.getVib("z");case 1111490583:return this.getVib("X");case 1111490584:return this.getVib("Y");case 1111490585:return this.getVib("Z");case 1111490586:return this.getVib("O");case 1111490580:return this.getVib("1");case 1111490581:return this.getVib("2");case 1111490582:return this.getVib("3");case 1312817669:return this.getVolume(a,J.c.VDW.AUTO);case 1145047050:case 1145047053:case 1145045006:case 1145047052:case 1145047055:case 1145045008:case 1145047049:return a= +this.atomPropertyTuple(a,d,b),null==a?-1:a.length()}return this.atomPropertyInt(d)},"JV.Viewer,~N,JU.P3");c(b,"getVib",function(a){return this.group.chain.model.ms.getVibCoord(this.i,a)},"~S");c(b,"getNominalMass",function(){var a=this.getIsotopeNumber();return 0>16):"")+String.fromCharCode(b&255);var b=this.getUnitCell(),c;if(null==b||null==(c=b.getWyckoffPosition(d.vwr,this,"M")))c="0?";d.setAtomSeqID(this.i,(JU.PT.parseInt(c)<<16)+c.charAt(c.length-1).charCodeAt(0));return a?c:c.substring(c.length-1)},"~B");j(b,"getCIPChirality",function(a){var d=(this.formalChargeAndFlags&496)>>4;0==d&&(1>9;return JV.JC.getCIPRuleName(a+1)});j(b,"setCIPChirality",function(a){this.formalChargeAndFlags=this.formalChargeAndFlags&-4081|a<<4},"~N");j(b,"getCIPChiralityCode",function(){return(this.formalChargeAndFlags&496)>>4});j(b,"getInsertionCode",function(){return this.group.getInsertionCode()});c(b,"atomPropertyTuple",function(a,d,b){switch(d){case 1073742329:return JU.P3.newP(this); +case 1145047050:return this.getFractionalCoordPt(!a.g.legacyJavaFloat,!1,b);case 1145047053:return this.getFractionalCoordPt(!a.g.legacyJavaFloat,!1,b);case 1145045006:return this.group.chain.model.isJmolDataFrame?this.getFractionalCoordPt(!a.g.legacyJavaFloat,!1,b):this.getFractionalUnitCoordPt(!a.g.legacyJavaFloat,!1,b);case 1145047052:return JU.P3.new3(a.antialiased?B(this.sX/2):this.sX,a.getScreenHeight()-(a.antialiased?B(this.sY/2):this.sY),a.antialiased?B(this.sZ/2):this.sZ);case 1145047055:return this.getVibrationVector(); +case 1145045008:return a=this.getModulation(),null==a?null:a.getV3();case 1145047049:return this;case 1765808134:return JU.CU.colorPtFromInt(this.group.chain.model.ms.vwr.gdata.getColorArgbOrGray(this.colixAtom),b)}return null},"JV.Viewer,~N,JU.P3");j(b,"getOffsetResidueAtom",function(a,d){return this.group.getAtomIndex(a,d)},"~S,~N");j(b,"isCrossLinked",function(a){return this.group.isCrossLinked(a.group)},"JU.Node");j(b,"getCrossLinkVector",function(a,d,b){return this.group.getCrossLinkVector(a, +d,b)},"JU.Lst,~B,~B");j(b,"toString",function(){return this.getInfo()});j(b,"findAtomsLike",function(a){return this.group.chain.model.ms.vwr.getAtomBitSet(a)},"~S");c(b,"getUnitID",function(a){var d=this.group.chain.model;return d.isBioModel?d.getUnitID(this,a):""},"~N");j(b,"getFloatProperty",function(a){a=this.group.chain.model.ms.vwr.getDataObj(a,null,1);var d=NaN;if(null!=a)try{d=a[this.i]}catch(b){if(!F(b,Exception))throw b;}return d},"~S");j(b,"modelIsRawPDB",function(){var a=this.group.chain.model; +return a.isBioModel&&!a.isPdbWithMultipleBonds&&0==a.hydrogenCount});c(b,"setSymop",function(a,d){null==this.atomSymmetry&&(this.atomSymmetry=new JU.BS);d&&this.atomSymmetry.clearAll();0a?null:this.at[a].group.getQuaternion(d)},"~N,~S"); +c(b,"getFirstAtomIndexFromAtomNumber",function(a,d){for(var b=0;bthis.maxBondingRadius)this.maxBondingRadius=a;if((a=b.getVanderwaalsRadiusFloat(this.vwr, +J.c.VDW.AUTO))>this.maxVanderwaalsRadius)this.maxVanderwaalsRadius=a}}});c(b,"clearBfactorRange",function(){this.hasBfactorRange=!1});c(b,"calcBfactorRange",function(a){if(!this.hasBfactorRange){this.bfactor100Lo=2147483647;this.bfactor100Hi=-2147483648;if(null==a)for(var d=0;dthis.bfactor100Hi&&(this.bfactor100Hi=a))},"~N");c(b,"getBfactor100Lo",function(){this.hasBfactorRange||(this.vwr.g.rangeSelected?this.calcBfactorRange(this.vwr.bsA()):this.calcBfactorRange(null));return this.bfactor100Lo});c(b,"getBfactor100Hi",function(){this.getBfactor100Lo();return this.bfactor100Hi});c(b,"getSurfaceDistanceMax",function(){null==this.surfaceDistance100s&&this.calcSurfaceDistances();return this.surfaceDistanceMax});c(b,"calculateVolume", +function(a,d){var b=0;if(null!=a)for(var c=a.nextSetBit(0);0<=c;c=a.nextSetBit(c+1))b+=this.at[c].getVolume(this.vwr,d);return b},"JU.BS,J.c.VDW");c(b,"getSurfaceDistance100",function(a){if(0==this.nSurfaceAtoms)return-1;null==this.surfaceDistance100s&&this.calcSurfaceDistances();return this.surfaceDistance100s[a]},"~N");c(b,"calcSurfaceDistances",function(){this.calculateSurface(null,-1)});c(b,"calculateSurface",function(a,d){0>d&&(d=3);var b=J.api.Interface.getOption("geodesic.EnvelopeCalculation", +this.vwr,"ms").set(this.vwr,this.ac,null);b.calculate(new J.atomdata.RadiusData(null,d,J.atomdata.RadiusData.EnumType.ABSOLUTE,null),3.4028235E38,a,JU.BSUtil.copyInvert(a,this.ac),!1,!1,!1,!0);var c=b.getPoints();this.surfaceDistanceMax=0;this.bsSurface=b.getBsSurfaceClone();this.surfaceDistance100s=E(this.ac,0);this.nSurfaceAtoms=JU.BSUtil.cardinalityOf(this.bsSurface);if(0==this.nSurfaceAtoms||null==c||0==c.length)return c;for(var b=3.4028235E38==d?0:d,f=0;f=k)return;c=e.get(b++);break;case 2:if(b>=k)return;c=f[b++]}if(null!=c)switch(d){case 1145047049:this.setAtomCoord(m,c.x,c.y,c.z);break;case 1145047050:case 1145047053:this.at[m].setFractionalCoordTo(c,!1);this.taintAtom(m,2);break;case 1145047055:this.setAtomVibrationVector(m,c)}}},"JU.BS,~N,~O");c(b,"setAtomVibrationVector",function(a,d){this.setVibrationVector(a,d);this.taintAtom(a,12)},"~N,JU.T3"); +c(b,"setAtomCoord",function(a,d,b,c){if(!(0>a||a>=this.ac)){var f=this.at[a];f.set(d,b,c);this.fixTrajectory(f);this.taintAtom(a,2)}},"~N,~N,~N,~N");c(b,"fixTrajectory",function(a){this.isTrajectory(a.mi)&&this.trajectory.fixAtom(a)},"JM.Atom");c(b,"setAtomCoordRelative",function(a,d,b,c){if(!(0>a||a>=this.ac)){var f=this.at[a];f.add3(d,b,c);this.fixTrajectory(f);this.taintAtom(a,2)}},"~N,~N,~N,~N");c(b,"setAtomsCoordRelative",function(a,d,b,c){if(null!=a)for(var f=a.nextSetBit(0);0<=f;f=a.nextSetBit(f+ +1))this.setAtomCoordRelative(f,d,b,c)},"JU.BS,~N,~N,~N");c(b,"setAPa",function(a,d,b,c,f,e,h){var k=0;if(!(null!=e&&0==e.length||null==a)){for(var m=null!=e&&e.length==this.ac||null!=h&&h.length==this.ac,j=a.nextSetBit(0);0<=j;j=a.nextSetBit(j+1)){m&&(k=j);if(null!=e){if(k>=e.length)return;c=e[k++];if(Float.isNaN(c))continue;b=D(c)}else if(null!=h){if(k>=h.length)return;f=h[k++]}var n=this.at[j],q;switch(d){case 1086326786:this.setAtomName(j,f,!0);break;case 1086326785:this.setAtomType(j,f);break; +case 1086326788:this.setChainID(j,f);break;case 1094715393:this.setAtomNumber(j,b,!0);break;case 1094713365:this.setAtomSeqID(j,b);break;case 1111492609:case 1111492629:this.setAtomCoord(j,c,n.y,n.z);break;case 1111492610:case 1111492630:this.setAtomCoord(j,n.x,c,n.z);break;case 1111492611:case 1111492631:this.setAtomCoord(j,n.x,n.y,c);break;case 1111492626:case 1111492627:case 1111492628:this.setVibrationVector2(j,d,c);break;case 1111492612:case 1111492613:case 1111492614:case 1111492615:case 1111492616:case 1111492617:n.setFractionalCoord(d, +c,!1);this.taintAtom(j,2);break;case 1094715402:case 1086326789:this.setElement(n,b,!0);break;case 1631586315:this.resetPartialCharges();n.setFormalCharge(b);this.taintAtom(j,4);break;case 1113589786:this.setHydrophobicity(j,c);break;case 1128269825:q=2>c&&0.01<=c?100*c:c;this.setOccupancy(j,q,!0);break;case 1111492619:this.setPartialCharge(j,c,!0);break;case 1111492618:this.setBondingRadius(j,c);break;case 1111492620:this.setBFactor(j,c,!0);break;case 1094715412:this.setAtomResno(j,b);break;case 1825200146:case 1287653388:this.vwr.shm.setAtomLabel(f, +j);break;case 1665140738:case 1112152075:q=c;0>q?q=0:16a&&(this.vibrations[a]=null); +else if(!Double.isNaN(d.x)&&!Double.isNaN(d.y)&&!Double.isNaN(d.z)){if(null==this.vibrations||this.vibrations.length<=a)this.vibrations=Array(this.at.length);z(d,"JU.Vibration")?this.vibrations[a]=d:(null==this.vibrations[a]&&(this.vibrations[a]=new JU.Vibration),this.vibrations[a].setXYZ(d));this.at[a].setVibrationVector()}},"~N,JU.T3");c(b,"setVibrationVector2",function(a,d,b){var c=this.getVibration(a,!0);if(null!=c){switch(d){case 1111492626:c.x=b;break;case 1111492627:c.y=b;break;case 1111492628:c.z= +b}this.setAtomVibrationVector(a,c)}},"~N,~N,~N");c(b,"setAtomName",function(a,d,b){if(!b||!d.equals(this.at[a].getAtomName())){var c=this.am[this.at[a].mi].isBioModel?this.vwr.getJBR().lookupSpecialAtomID(d):0;this.at[a].atomID=c;0>=c&&(null==this.atomNames&&(this.atomNames=Array(this.at.length)),this.atomNames[a]=d);b&&this.taintAtom(a,0)}},"~N,~S,~B");c(b,"setAtomType",function(a,d){d.equals(this.at[a].getAtomType())||(null==this.atomTypes&&(this.atomTypes=Array(this.at.length)),this.atomTypes[a]= +d)},"~N,~S");c(b,"setChainID",function(a,d){if(!d.equals(this.at[a].getChainIDStr())){var b=this.at[a].getChainID(),b=this.getChainBits(b);this.at[a].group.chain.chainID=this.vwr.getChainID(d,!0);for(var c=b.nextSetBit(0);0<=c;c=b.nextSetBit(c+1))this.taintAtom(c,16)}},"~N,~S");c(b,"setAtomNumber",function(a,d,b){b&&d==this.at[a].getAtomNumber()||(null==this.atomSerials&&(this.atomSerials=E(this.at.length,0)),this.atomSerials[a]=d,b&&this.taintAtom(a,13))},"~N,~N,~B");c(b,"setElement",function(a, +d,b){b&&a.getElementNumber()==d||(a.setAtomicAndIsotopeNumber(d),a.paletteID=J.c.PAL.CPK.id,a.colixAtom=this.vwr.cm.getColixAtomPalette(a,J.c.PAL.CPK.id),this.resetPartialCharges(),b&&this.taintAtom(a.i,3))},"JM.Atom,~N,~B");c(b,"setSite",function(a,d,b){a.atomSite!=d&&(a.atomSite=d,b&&this.taintAtom(a.i,17))},"JM.Atom,~N,~B");c(b,"resetPartialCharges",function(){this.bsPartialCharges=this.partialCharges=null});c(b,"setAtomResno",function(a,d){d!=this.at[a].getResno()&&(this.at[a].group.setResno(d), +null==this.atomResnos&&(this.atomResnos=E(this.at.length,0)),this.atomResnos[a]=d,this.taintAtom(a,15))},"~N,~N");c(b,"setAtomSeqID",function(a,d){d!=this.at[a].getSeqID()&&(null==this.atomSeqIDs&&(this.atomSeqIDs=E(this.at.length,0)),this.atomSeqIDs[a]=d,this.taintAtom(a,14))},"~N,~N");c(b,"setOccupancy",function(a,d,b){if(!(b&&d==this.at[a].getOccupancy100())){if(null==this.occupancies){if(100==d)return;this.occupancies=K(this.at.length,0);for(var c=this.at.length;0<=--c;)this.occupancies[c]=100}this.occupancies[a]= +d;b&&this.taintAtom(a,7)}},"~N,~N,~B");c(b,"getOccupancyFloat",function(a){return null==this.occupancies||a>=this.occupancies.length?100:this.occupancies[a]},"~N");c(b,"setPartialCharge",function(a,d,b){if(!Float.isNaN(d)){if(null==this.partialCharges){this.bsPartialCharges=new JU.BS;if(0==d)return;this.partialCharges=K(this.at.length,0)}this.bsPartialCharges.set(a);this.partialCharges[a]=d;b&&this.taintAtom(a,8)}},"~N,~N,~B");c(b,"setBondingRadius",function(a,d){Float.isNaN(d)||d==this.at[a].getBondingRadius()|| +(null==this.bondingRadii?this.bondingRadii=K(this.at.length,0):this.bondingRadii.lengthd?-327.68:327.67d?-0.5:0.5));b&&this.taintAtom(a, +9)}},"~N,~N,~B");c(b,"setHydrophobicity",function(a,d){if(!(Float.isNaN(d)||d==this.at[a].getHydrophobicity())){if(null==this.hydrophobicities){this.hydrophobicities=K(this.at.length,0);for(var b=0;bn||n>=this.ac)){var q=this.at[n];h++;var y=j.length-1,s=JU.PT.parseFloat(j[y]);switch(a){case 18:f[n]=s;e.set(n);continue;case 0:this.setAtomName(n,j[y],!0);break;case 13:this.setAtomNumber(n,D(s),!0);break;case 15:this.setAtomResno(n,D(s));break; +case 14:this.setAtomSeqID(n,D(s));break;case 1:this.setAtomType(n,j[y]);break;case 16:this.setChainID(n,j[y]);break;case 17:q.atomSite=D(s);break;case 3:q.setAtomicAndIsotopeNumber(D(s));q.paletteID=J.c.PAL.CPK.id;q.colixAtom=this.vwr.cm.getColixAtomPalette(q,J.c.PAL.CPK.id);break;case 4:q.setFormalCharge(D(s));break;case 5:this.setHydrophobicity(n,s);break;case 6:this.setBondingRadius(n,s);break;case 8:this.setPartialCharge(n,s,!0);break;case 9:this.setBFactor(n,s,!0);break;case 10:q.setValence(D(s)); +break;case 11:q.setRadius(s)}this.taintAtom(n,a)}}18==a&&0b;b++)if(JM.AtomCollection.userSettableValues[b].equalsIgnoreCase(a))return b;return d?18:-1},"~S");c(b,"getTaintedAtoms",function(a){return null==this.tainted?null:this.tainted[a]},"~N");c(b,"taintAtoms",function(a,d){this.canSkipLoad=!1;if(this.preserveState)for(var b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1))this.taintAtom(b, +d)},"JU.BS,~N");c(b,"taintAtom",function(a,d){this.preserveState&&(null==this.tainted&&(this.tainted=Array(18)),null==this.tainted[d]&&(this.tainted[d]=JU.BS.newN(this.ac)),this.tainted[d].set(a));2==d&&this.taintModelCoord(a)},"~N,~N");c(b,"taintModelCoord",function(a){a=this.am[this.at[a].mi];this.validateBspfForModel(a.trajectoryBaseIndex,!1);a.isBioModel&&a.resetDSSR(!0);this.pointGroup=null},"~N");c(b,"untaint",function(a,d){this.preserveState&&(null==this.tainted||null==this.tainted[d]||this.tainted[d].clear(a))}, +"~N,~N");c(b,"setTaintedAtoms",function(a,d){if(this.preserveState){if(null==a){if(null==this.tainted)return;this.tainted[d]=null;return}null==this.tainted&&(this.tainted=Array(18));null==this.tainted[d]&&(this.tainted[d]=JU.BS.newN(this.ac));JU.BSUtil.copy2(a,this.tainted[d])}if(2==d){var b=a.nextSetBit(0);0<=b&&this.taintModelCoord(b)}},"JU.BS,~N");c(b,"unTaintAtoms",function(a,d){if(!(null==this.tainted||null==this.tainted[d])){for(var b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1))this.tainted[d].clear(b); +0>this.tainted[d].nextSetBit(0)&&(this.tainted[d]=null)}},"JU.BS,~N");c(b,"findNearest2",function(a,d,b,c,f){for(var e=null,h,k=this.ac;0<=--k;)if(!(null!=c&&c.get(k)||null==(h=this.at[k])))h.isClickable()&&this.isCursorOnTopOf(h,a,d,f,e)&&(e=h);b[0]=e},"~N,~N,~A,JU.BS,~N");c(b,"isCursorOnTopOf",function(a,d,b,c,f){return 1=w?1.1:10>=w?1:1.3;switch(w){case 7:case 8:z=1}var B=f||k||c?v.getCovalentHydrogenCount(): +0;if(!(f&&0b)return 0;var c=a.getFormalCharge(),f=a.getValence(),e=this.am[a.mi],e=e.isBioModel&&!e.isPdbWithMultipleBonds?a.group.getGroup3():null;this.aaRet[0]=b;this.aaRet[1]=c;this.aaRet[2]=0;this.aaRet[3]=a.getCovalentBondCount();this.aaRet[4]=null==e?0:f;null!=e&&0==c&&this.bioModelset.getAminoAcidValenceAndCharge(e, +a.getAtomName(),this.aaRet)&&(b=this.aaRet[0],c=this.aaRet[1]);0!=c&&(b+=4==b?-Math.abs(c):c,this.aaRet[0]=b);b-=f;return 0>b&&!d?0:b},"JM.Atom,~B");c(b,"fixFormalCharges",function(a){for(var d=0,b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1)){var c=this.at[b],f=this.getMissingHydrogenCount(c,!0);if(0!=f){var e=c.getFormalCharge(),f=e-f;c.setFormalCharge(f);this.taintAtom(b,4);JU.Logger.debugging&&JU.Logger.debug("atom "+c+" formal charge "+e+" -> "+f);d++}}return d},"JU.BS");c(b,"getHybridizationAndAxes", +function(a,d,b,c,f,e,h,k,m){var j=0y||6 +c.angle(s[1])?a.cross(c,s[1]):a.cross(c,s[2]);a.normalize();var u=new JU.V3;2.9845130209103035>s[1].angle(s[2])?u.cross(s[1],s[2]):u.cross(c,s[2]);u.normalize();p=0.95<=Math.abs(u.dot(a))}var v=0==j.indexOf("sp3"),r=!v&&0==j.indexOf("sp2"),w=!v&&!r&&0==j.indexOf("sp"),z=0==j.indexOf("p"),A=0==j.indexOf("lp"),u=null;if(e){if(0==q)return null;if(v){if(3b.length()){if(0<=j.indexOf("2")||0<=j.indexOf("3"))return null;u="sp";break}u=v?"sp3":"sp2";if(0==j.indexOf("sp"))break;if(A){u="lp";break}u=j;break;default:if(p&&!k)u="sp2";else{p&&b.setT(a);if(A&&3==q){u="lp";break}u="sp3"}}if(null==u)return null;if(0==j.indexOf("p")){if("sp3"===u)return null}else if(0>j.indexOf(u))return null}if(yb.length()){if(!j.equals("pz")){r=n[0];(m=3==r.getCovalentBondCount())||(m=3==(r=n[1]).getCovalentBondCount());if(m){this.getHybridizationAndAxes(r.i,0,c,b,"pz",!1,h,k,null);j.equals("px")&&c.scale(-1);b.setT(s[0]);break}a.setT(JM.AtomCollection.vRef);b.cross(a,c);a.cross(b,c)}b.setT(c);c.cross(a,b);break}a.cross(b,c);if(r){c.cross(b,a);break}if(v||A){a.normalize();b.normalize();j.equals("lp")||(0==y||2==y?b.scaleAdd2(-1.2, +a,b):b.scaleAdd2(1.2,a,b));c.cross(b,a);break}c.cross(b,a);b.setT(a);0>b.z&&(b.scale(-1),c.scale(-1));break;default:if(v)break;if(!p){c.cross(b,c);break}b.setT(a);0>b.z&&h&&(b.scale(-1),c.scale(-1))}c.normalize();b.normalize();return u},"~N,~N,JU.V3,JU.V3,~S,~B,~B,~B,JU.T3");c(b,"getHybridizationAndAxesD",function(a,d,b,c){c.startsWith("sp3d2")&&(c="d2sp3"+(5==c.length?"a":c.substring(5)));c.startsWith("sp3d")&&(c="dsp3"+(4==c.length?"a":c.substring(4)));if(c.equals("d2sp3")||c.equals("dsp3"))c+= +"a";var f=c.startsWith("dsp3"),e=c.charAt(c.length-1).charCodeAt(0)-97;if(null!=d&&(!f&&(5h&&null!=d)return null;for(var k=e>=h,m=B(h*(h-1)/2),j=JU.AU.newInt2(m),n=E(3,0),m=E(3,m,0),q=0,y=0,s=0;sr?0:150<=r?2:1;m[r][n[r]]=q;n[r]++;j[q++]=E(-1,[s,p]);0==s&&1==r&&y++}q= +100*n[0]+10*n[1]+n[2];if(null==d)switch(q){default:return"";case 0:return"";case 1:return"linear";case 100:case 10:return"bent";case 111:case 201:return"T-shaped";case 30:case 120:case 210:case 300:return 162d)return null;d=Array(f);if(0c)b.set(a);else if(8==(f=this.at[a]).getElementNumber()&&2==f.getCovalentBondCount()){for(var c=f.bonds,h=0,k=c.length;0<=--k&&3>h;)if(c[k].isCovalentNotPartial0()&&1==(e=c[k].getOtherAtom(f)).getElementNumber())d[h++%2]=e.i;2==h&&(b.set(d[1]),b.set(d[0]),b.set(a))}return b; +case 1073742355:for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.isAltLoc(this.at[a].altloc,d)&&b.set(a);return b;case 1073742356:f=d.toUpperCase();0<=f.indexOf("\\?")&&(f=JU.PT.rep(f,"\\?","\u0001"));(e=f.startsWith("?*"))&&(f=f.substring(1));for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.isAtomNameMatch(this.at[a],f,e,e)&&b.set(a);return b;case 1073742357:return JU.BSUtil.copy(this.getChainBits(c));case 1073742360:return this.getSpecName(d);case 1073742361:for(a= +this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].group.groupID==c&&b.set(a);return b;case 1073742362:return JU.BSUtil.copy(this.getSeqcodeBits(c,!0));case 5:for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].group.getInsCode()==c&&b.set(a);return b;case 1296041985:for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].getSymOp()==c&&b.set(a);return b}e=d.nextSetBit(0);if(0>e)return b;switch(a){case 1094717454:f=JU.BSUtil.copy(d);for(a= +e;0<=a;a=f.nextSetBit(a+1))b.or(this.am[this.at[a].mi].bsAtoms),f.andNot(b);return b;case 1086326788:f=JU.BSUtil.copy(d);for(a=e;0<=a;a=f.nextSetBit(a+1))this.at[a].group.chain.setAtomBits(b),f.andNot(b);return b;case 1086326789:f=new JU.BS;for(a=e;0<=a;a=d.nextSetBit(a+1))f.set(this.at[a].getElementNumber());for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&f.get(this.at[a].getElementNumber())&&b.set(a);return b;case 1086324742:f=JU.BSUtil.copy(d);for(a=e;0<=a;a=f.nextSetBit(a+1))this.at[a].group.setAtomBits(b), +f.andNot(b);return b;case 1094713366:f=new JU.BS;for(a=e;0<=a;a=d.nextSetBit(a+1))f.set(this.at[a].atomSite);for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&f.get(this.at[a].atomSite)&&b.set(a);return b}JU.Logger.error("MISSING getAtomBits entry for "+JS.T.nameOf(a));return b},"~N,~O,JU.BS");c(b,"getChainBits",function(a){var d=this.vwr.getBoolean(603979822);d?97<=a&&122>=a&&(a+=159):0<=a&&300>a&&(a=this.chainToUpper(a));for(var b=new JU.BS,c=JU.BS.newN(this.ac),f,e=c.nextClearBit(0);e< +this.ac;e=c.nextClearBit(e+1))if(!JM.AtomCollection.isDeleted(this.at[e])){var h=this.at[e].group.chain;a==(f=h.chainID)||!d&&0<=f&&300>f&&a==this.chainToUpper(f)?(h.setAtomBits(b),c.or(b)):h.setAtomBits(c)}return b},"~N");c(b,"chainToUpper",function(a){return 97<=a&&122>=a?a-32:256<=a&&300>a?a-191:a},"~N");c(b,"isAltLoc",function(a,d){if(null==d)return"\x00"==a;if(1!=d.length)return!1;var b=d.charAt(0);return"*"==b||"?"==b&&"\x00"!=a||a==b},"~S,~S");c(b,"getSeqcodeBits",function(a,d){var b=new JU.BS, +c=JM.Group.getSeqNumberFor(a),f=2147483647!=c,e=!0,h=JM.Group.getInsertionCodeChar(a);switch(h.charCodeAt(0)){case 63:for(var k=this.ac;0<=--k;)if(!JM.AtomCollection.isDeleted(this.at[k])){var m=this.at[k].group.seqcode;if((!f||c==JM.Group.getSeqNumberFor(m))&&0!=JM.Group.getInsertionCodeFor(m))b.set(k),e=!1}break;default:for(k=this.ac;0<=--k;)if(!JM.AtomCollection.isDeleted(this.at[k])&&(m=this.at[k].group.seqcode,a==m||!f&&a==JM.Group.getInsertionCodeFor(m)||"*"==h&&c==JM.Group.getSeqNumberFor(m)))b.set(k), +e=!1}return!e||d?b:null},"~N,~B");c(b,"getIdentifierOrNull",function(a){var d=this.getSpecNameOrNull(a,!1);0<=a.indexOf("\\?")&&(a=JU.PT.rep(a,"\\?","\u0001"));return null!=d||0a&&0.1>=e&&e>=a|| +0==a&&0.01>Math.abs(e))&&b.set(f.i)}}return b},"~N,JU.P4");c(b,"clearVisibleSets",function(){this.haveBSClickable=this.haveBSVisible=!1});c(b,"getAtomsInFrame",function(a){this.clearVisibleSets();a.clearAll();for(var d=this.ac;0<=--d;)!JM.AtomCollection.isDeleted(this.at[d])&&this.at[d].isVisible(1)&&a.set(d)},"JU.BS");c(b,"getVisibleSet",function(a){if(a)this.vwr.setModelVisibility(),this.vwr.shm.finalizeAtoms(null,!0);else if(this.haveBSVisible)return this.bsVisible;this.bsVisible.clearAll();for(a= +this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].checkVisible()&&this.bsVisible.set(a);null!=this.vwr.shm.bsSlabbedInternal&&this.bsVisible.andNot(this.vwr.shm.bsSlabbedInternal);this.haveBSVisible=!0;return this.bsVisible},"~B");c(b,"getClickableSet",function(a){if(a)this.vwr.setModelVisibility();else if(this.haveBSClickable)return this.bsClickable;this.bsClickable.clearAll();for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].isClickable()&&this.bsClickable.set(a); +this.haveBSClickable=!0;return this.bsClickable},"~B");c(b,"isModulated",function(a){return null!=this.bsModulated&&this.bsModulated.get(a)},"~N");c(b,"deleteModelAtoms",function(a,d,b){this.at=JU.AU.deleteElements(this.at,a,d);this.ac=this.at.length;for(var c=a;ca;a++)JU.BSUtil.deleteBits(this.tainted[a],b)},"~N,~N,JU.BS");c(b,"getAtomIdentityInfo",function(a,d,b){d.put("_ipt",Integer.$valueOf(a));d.put("atomIndex",Integer.$valueOf(a));d.put("atomno",Integer.$valueOf(this.at[a].getAtomNumber()));d.put("info",this.getAtomInfo(a,null,b));d.put("sym",this.at[a].getElementSymbol())},"~N,java.util.Map,JU.P3");c(b,"getAtomTensorList",function(a){return 0>a|| +null==this.atomTensorList||a>=this.atomTensorList.length?null:this.atomTensorList[a]},"~N");c(b,"deleteAtomTensors",function(a){if(null!=this.atomTensors){for(var d=new JU.Lst,b,c=this.atomTensors.keySet().iterator();c.hasNext()&&((b=c.next())||1);){for(var f=this.atomTensors.get(b),e=f.size();0<=--e;){var h=f.get(e);(a.get(h.atomIndex1)||0<=h.atomIndex2&&a.get(h.atomIndex2))&&f.removeItemAt(e)}0==f.size()&&d.addLast(b)}for(e=d.size();0<=--e;)this.atomTensors.remove(d.get(e))}},"JU.BS");c(b,"setCapacity", +function(a){this.atomCapacity+=a},"~N");c(b,"setAtomTensors",function(a,d){if(!(null==d||0==d.size())){null==this.atomTensors&&(this.atomTensors=new java.util.Hashtable);null==this.atomTensorList&&(this.atomTensorList=Array(this.at.length));this.atomTensorList=JU.AU.ensureLength(this.atomTensorList,this.at.length);this.atomTensorList[a]=JM.AtomCollection.getTensorList(d);for(var b=d.size();0<=--b;){var c=d.get(b);c.atomIndex1=a;c.atomIndex2=-1;c.modelIndex=this.at[a].mi;this.addTensor(c,c.type);null!= +c.altType&&this.addTensor(c,c.altType)}}},"~N,JU.Lst");c(b,"addTensor",function(a,d){d=d.toLowerCase();var b=this.atomTensors.get(d);null==b&&(this.atomTensors.put(d,b=new JU.Lst),b.ensureCapacity(this.atomCapacity));b.addLast(a)},"JU.Tensor,~S");b.getTensorList=c(b,"getTensorList",function(a){for(var d=-1,b=!1,c=a.size(),f=c;0<=--f;){var e=a.get(f);e.forThermalEllipsoid?d=f:2==e.iType&&(b=!0)}var h=Array((0<=d||!b?0:1)+c);if(0<=d&&(h[0]=a.get(d),1==a.size()))return h;if(b){d=0;for(f=c;0<=--f;)e= +a.get(f),e.forThermalEllipsoid||(h[++d]=e)}else for(f=0;fa||a>=this.ac?this.vwr.getOperativeSymmetry():this.at[a].getUnitCell(),c=null!=d&&Float.isNaN(d.x),b=null==b?null:b.generateCrystalClass(c?null:null!=d?d:this.at[a]);return null==b?new JU.Lst:b},"~N,JU.P3");b.isDeleted=c(b,"isDeleted", +function(a){return null==a||a.isDeleted()},"JM.Atom");b.$AtomCollection$AtomSorter$=function(){var a=v(function(){Y(this,arguments);r(this,arguments)},JM.AtomCollection,"AtomSorter",null,java.util.Comparator);j(a,"compare",function(a,b){return a.i>b.i?1:a.ie?-1:c;if(this.isVdw=null!=h)this.radiusData=h,this.atoms=a.at,this.vwr=a.vwr,e=h.factorType===J.atomdata.RadiusData.EnumType.OFFSET?5+h.value:5*h.value,this.vdw1=this.atoms[c].getVanderwaalsRadiusFloat(this.vwr, +h.vdwType);this.checkGreater=this.isGreaterOnly&&2147483647!=c;this.setCenter(f,e)}},"JM.ModelSet,~N,~N,~N,JU.T3,~N,J.atomdata.RadiusData");j(b,"setCenter",function(a,d){this.setCenter2(a,d)},"JU.T3,~N");c(b,"setCenter2",function(a,d){null!=this.cubeIterator&&(this.cubeIterator.initialize(a,d,this.hemisphereOnly),this.distanceSquared=d*d)},"JU.T3,~N");j(b,"hasNext",function(){return this.hasNext2()});c(b,"hasNext2",function(){if(0<=this.atomIndex)for(;this.cubeIterator.hasMoreElements();){var a=this.cubeIterator.nextElement(); +if((this.iNext=a.i)!=this.atomIndex&&(!this.checkGreater||this.iNext>this.atomIndex)&&(null==this.bsSelected||this.bsSelected.get(this.iNext)))return!0}else if(this.cubeIterator.hasMoreElements())return a=this.cubeIterator.nextElement(),this.iNext=a.i,!0;this.iNext=-1;return!1});j(b,"next",function(){return this.iNext-this.zeroBase});j(b,"foundDistance2",function(){return null==this.cubeIterator?-1:this.cubeIterator.foundDistance2()});j(b,"addAtoms",function(a){for(var d;this.hasNext();)if(0<=(d= +this.next())){var b;if(this.isVdw){b=this.atoms[d].getVanderwaalsRadiusFloat(this.vwr,this.radiusData.vdwType)+this.vdw1;switch(this.radiusData.factorType){case J.atomdata.RadiusData.EnumType.OFFSET:b+=2*this.radiusData.value;break;case J.atomdata.RadiusData.EnumType.FACTOR:b*=this.radiusData.value}b*=b}else b=this.distanceSquared;this.foundDistance2()<=b&&a.set(d)}},"JU.BS");j(b,"release",function(){null!=this.cubeIterator&&(this.cubeIterator.release(),this.cubeIterator=null)});j(b,"getPosition", +function(){return null})});u("JM");C(["JM.AtomIteratorWithinModel"],"JM.AtomIteratorWithinModelSet",null,function(){var b=v(function(){this.center=this.bsModels=null;this.distance=0;r(this,arguments)},JM,"AtomIteratorWithinModelSet",JM.AtomIteratorWithinModel);A(b,function(a){L(this,JM.AtomIteratorWithinModelSet,[]);this.bsModels=a},"JU.BS");j(b,"setCenter",function(a,d){this.center=a;this.distance=d;this.set(0)},"JU.T3,~N");c(b,"set",function(a){if(0>(this.modelIndex=this.bsModels.nextSetBit(a))|| +null==(this.cubeIterator=this.bspf.getCubeIterator(this.modelIndex)))return!1;this.setCenter2(this.center,this.distance);return!0},"~N");j(b,"hasNext",function(){return this.hasNext2()?!0:!this.set(this.modelIndex+1)?!1:this.hasNext()})});u("JM");C(["JU.Edge","JV.JC"],"JM.Bond",["JU.C"],function(){var b=v(function(){this.atom2=this.atom1=null;this.shapeVisibilityFlags=this.colix=this.mad=0;r(this,arguments)},JM,"Bond",JU.Edge);A(b,function(a,d,b,c,f){L(this,JM.Bond,[]);this.atom1=a;this.atom2=d;this.colix= +f;this.setOrder(b);this.setMad(c)},"JM.Atom,JM.Atom,~N,~N,~N");c(b,"setMad",function(a){this.mad=a;this.setShapeVisibility(0!=a)},"~N");c(b,"setShapeVisibility",function(a){0!=(this.shapeVisibilityFlags&JM.Bond.myVisibilityFlag)!=a&&(this.atom1.addDisplayedBond(JM.Bond.myVisibilityFlag,a),this.atom2.addDisplayedBond(JM.Bond.myVisibilityFlag,a),this.shapeVisibilityFlags=a?this.shapeVisibilityFlags|JM.Bond.myVisibilityFlag:this.shapeVisibilityFlags&~JM.Bond.myVisibilityFlag)},"~B");c(b,"getIdentity", +function(){return this.index+1+" "+JU.Edge.getBondOrderNumberFromOrder(this.order)+" "+this.atom1.getInfo()+" -- "+this.atom2.getInfo()+" "+this.atom1.distance(this.atom2)});j(b,"isCovalent",function(){return 0!=(this.order&1023)});j(b,"isHydrogen",function(){return JU.Edge.isOrderH(this.order)});c(b,"isStereo",function(){return 0!=(this.order&1024)});j(b,"isPartial",function(){return 0!=(this.order&224)});c(b,"isAromatic",function(){return 0!=(this.order&512)});c(b,"getEnergy",function(){return 0}); +c(b,"getValence",function(){return!this.isCovalent()||33==this.order?0:this.is(515)?1:this.order&7});c(b,"deleteAtomReferences",function(){null!=this.atom1&&this.atom1.deleteBond(this);null!=this.atom2&&this.atom2.deleteBond(this);this.atom1=this.atom2=null});c(b,"setTranslucent",function(a,d){this.colix=JU.C.getColixTranslucent3(this.colix,a,d)},"~B,~N");c(b,"setOrder",function(a){16==this.atom1.getElementNumber()&&16==this.atom2.getElementNumber()&&(a|=256);512==a&&(a=515);this.order=a|this.order& +131072},"~N");j(b,"getAtomIndex1",function(){return this.atom1.i});j(b,"getAtomIndex2",function(){return this.atom2.i});j(b,"getCovalentOrder",function(){return JU.Edge.getCovalentBondOrder(this.order)});c(b,"getOtherAtom",function(a){return this.atom1===a?this.atom2:this.atom2===a?this.atom1:null},"JM.Atom");c(b,"is",function(a){return(this.order&131071)==a},"~N");j(b,"getOtherNode",function(a){return this.atom1===a?this.atom2:this.atom2===a||null==a?this.atom1:null},"JU.SimpleNode");c(b,"setAtropisomerOptions", +function(){var a,d=2147483647,b=this.atom1.bonds;for(a=0;a=b.length||2b&&0c&&200>this.numCached[c]&&(this.freeBonds[c][this.numCached[c]++]=d)}return b},"JM.Bond,~A");c(b,"addHBond",function(a,d,b,c){this.bondCount== +this.bo.length&&(this.bo=JU.AU.arrayCopyObject(this.bo,this.bondCount+250));return this.setBond(this.bondCount++,this.bondMutually(a,d,b,1,c)).index},"JM.Atom,JM.Atom,~N,~N");c(b,"deleteAllBonds2",function(){this.vwr.setShapeProperty(1,"reset",null);for(var a=this.bondCount;0<=--a;)this.bo[a].deleteAtomReferences(),this.bo[a]=null;this.bondCount=0});c(b,"getDefaultMadFromOrder",function(a){return JU.Edge.isOrderH(a)?1:32768==a?B(Math.floor(2E3*this.vwr.getFloat(570425406))):this.defaultCovalentMad}, +"~N");c(b,"deleteConnections",function(a,d,b,c,f,e,h){var k=0>a,m=0>d,j=k||m;a=this.fixD(a,k);d=this.fixD(d,m);var n=new JU.BS,q=0,y=b|=131072;!h&&JU.Edge.isOrderH(b)&&(b=30720);if(e)e=c;else{e=new JU.BS;for(var s=c.nextSetBit(0);0<=s;s=c.nextSetBit(s+1)){var p=this.at[s];if(null!=p.bonds)for(var r=p.bonds.length;0<=--r;)f.get(p.getBondedAtomIndex(r))&&e.set(p.bonds[r].index)}}for(s=e.nextSetBit(0);s=a*b:k>=b)&&(e?h<=a*c:k<=c)):k>=b&&k<=c},"JM.Atom,JM.Atom,~N,~N,~B,~B,~B");c(b,"dBb",function(a,d){var b=a.nextSetBit(0);if(!(0>b)){this.resetMolecules();for(var c=-1, +f=a.cardinality(),e=b;e=b;)this.bo[c]=null;this.bondCount=b;b=this.vwr.getShapeProperty(1,"sets");if(null!=b)for(c=0;cJU.Measure.computeAngle(c[f].getOtherNode(a.atom1),a.atom1,a.atom2,d,b,!0))return!1;break}c=a.atom2.getEdges();for(f=c.length;0<=-f;)if(c[f]!==a&&c[f].isCovalent()){if(175>JU.Measure.computeAngle(c[f].getOtherNode(a.atom2),a.atom2,a.atom1,d,b,!0))return!1;break}return!0},"JM.Bond,JU.V3,JU.V3"); +c(b,"assignAromaticDouble",function(a){var d=a.index;if(this.bsAromaticSingle.get(d))return!1;if(this.bsAromaticDouble.get(d))return!0;this.bsAromaticDouble.set(d);return!this.assignAromaticSingleForAtom(a.atom1,d)||!this.assignAromaticSingleForAtom(a.atom2,d)?(this.bsAromaticDouble.clear(d),!1):!0},"JM.Bond");c(b,"assignAromaticSingle",function(a){var d=a.index;if(this.bsAromaticDouble.get(d))return!1;if(this.bsAromaticSingle.get(d))return!0;this.bsAromaticSingle.set(d);return!this.assignAromaticDoubleForAtom(a.atom1)|| +!this.assignAromaticDoubleForAtom(a.atom2)?(this.bsAromaticSingle.clear(d),!1):!0},"JM.Bond");c(b,"assignAromaticSingleForAtom",function(a,d){var b=a.bonds;if(null==b)return!1;for(var c=b.length;0<=--c;){var f=b[c],e=f.index;if(!(e==d||!f.isAromatic()||this.bsAromaticSingle.get(e)))if(this.bsAromaticDouble.get(e)||!this.assignAromaticSingle(f))return!1}return!0},"JM.Atom,~N");c(b,"assignAromaticDoubleForAtom",function(a){a=a.bonds;if(null==a)return!1;for(var d=!1,b=-1,c=a.length;0<=--c;)this.bsAromaticDouble.get(a[c].index)&& +(d=!0),a[c].isAromatic()&&(b=c);for(c=a.length;0<=--c;){var f=a[c],e=f.index;if(f.isAromatic()&&!this.bsAromaticDouble.get(e)&&!this.bsAromaticSingle.get(e))if(!d&&this.assignAromaticDouble(f))d=!0;else if((d||c=a.atom1.getCovalentBondCount()&&3>=a.atom2.getCovalentBondCount(); +default:return!1}},"JM.Bond");c(b,"assignAromaticMustBeSingle",function(a){var d=a.getElementNumber();switch(d){case 6:case 7:case 8:case 16:break;default:return!0}var b=a.getValenceAromatic(!1);switch(d){case 6:return 4==b;case 7:return a.group.getNitrogenAtom()===a||3==b&&1>a.getFormalCharge();case 8:return a.group.getCarbonylOxygenAtom()!==a&&2==b&&1>a.getFormalCharge();case 16:return 5==a.group.groupID||2==b&&1>a.getFormalCharge()}return!1},"JM.Atom");c(b,"assignAromaticNandO",function(a){for(var d, +b=null==a,c=b?this.bondCount-1:a.nextSetBit(0);0<=c;c=b?c-1:a.nextSetBit(c+1))if(d=this.bo[c],d.is(513)){var f,e=d.atom2,h,k=e.getElementNumber();7==k||8==k?(h=k,f=e,e=d.atom1,k=e.getElementNumber()):(f=d.atom1,h=f.getElementNumber());if(!(7!=h&&8!=h)){var m=f.getValence();if(!(0>m)){var j=f.getCovalentBondCount();f=f.getFormalCharge();switch(h){case 7:3==m&&(3==j&&1>f&&6==k&&3==e.getValence())&&d.setOrder(514);break;case 8:1==m&&(0==f&&(14==k||16==k))&&d.setOrder(514)}}}}},"JU.BS");c(b,"getAtomBitsMDb", +function(a,d){var b=new JU.BS;switch(a){default:return this.getAtomBitsMDa(a,d,b);case 1677721602:for(var c=d.nextSetBit(0);0<=c;c=d.nextSetBit(c+1))cd?e.clear(k):b&&0==c&&e.set(k);return e},"~N,~N,~N,JU.BS");c(b,"addConnectedHAtoms",function(a,d){if(null!=a.bonds)for(var b=a.bonds.length;0<=--b;){var c=a.bonds[b].getOtherAtom(a);1==c.getElementNumber()&& +d.set(c.i)}},"JM.Atom,JU.BS")});u("JM");O(JM,"BondIterator");u("JM");C(["JM.BondIterator"],"JM.BondIteratorSelected",null,function(){var b=v(function(){this.bonds=null;this.iBond=this.bondType=this.bondCount=0;this.bsSelected=null;this.bondSelectionModeOr=!1;r(this,arguments)},JM,"BondIteratorSelected",null,JM.BondIterator);A(b,function(a,d,b,c,f){this.bonds=a;this.bondCount=d;this.bondType=b;this.bsSelected=c;this.bondSelectionModeOr=f},"~A,~N,~N,JU.BS,~B");j(b,"hasNext",function(){if(131071==this.bondType)return this.iBond= +this.bsSelected.nextSetBit(this.iBond),0<=this.iBond&&this.iBondthis.chainID?""+String.fromCharCode(this.chainID):this.model.ms.vwr.getChainIDStr(this.chainID)});c(b,"calcSelectedGroupsCount",function(a){for(var d=this.selectedGroupCount=0;d< +this.groupCount;d++)this.groups[d].selectedIndex=this.groups[d].isSelected(a)?this.selectedGroupCount++:-1},"JU.BS");c(b,"fixIndices",function(a,d){for(var b=0;bthis.groupID?"":JM.Group.group3Names[this.groupID]}); +c(b,"getGroup1",function(){return"\x00"==this.group1?"?":this.group1});c(b,"getBioPolymerLength",function(){return 0});c(b,"getMonomerIndex",function(){return-1});c(b,"getStructure",function(){return null});c(b,"getStrucNo",function(){return 0});c(b,"getProteinStructureType",function(){return J.c.STR.NOT});c(b,"getProteinStructureSubType",function(){return this.getProteinStructureType()});c(b,"setProteinStructureType",function(){return-1},"J.c.STR,~N");c(b,"isProtein",function(){return 1<=this.groupID&& +24>this.groupID});c(b,"isNucleic",function(){return 24<=this.groupID&&42>this.groupID});c(b,"isDna",function(){return this.isDnaByID()});c(b,"isRna",function(){return this.isRnaByID()});c(b,"isPurine",function(){return this.isPurineByID()});c(b,"isPurineByID",function(){return this.isNucleic()&&0!=(153957&1<>8});c(b,"setResno",function(a){this.seqcode=JM.Group.getSeqcodeFor(a,this.getInsertionCode())},"~N");b.getSeqNumberFor=c(b,"getSeqNumberFor",function(a){return JM.Group.haveSequenceNumber(a)?a>>8: +2147483647},"~N");b.haveSequenceNumber=c(b,"haveSequenceNumber",function(a){return 0!=(a&128)},"~N");c(b,"getSeqcodeString",function(){return JM.Group.getSeqcodeStringFor(this.seqcode)});b.getSeqcodeFor=c(b,"getSeqcodeFor",function(a,d){if(-2147483648==a)return a;"A"<=d&&"Z">=d||("a"<=d&&"z">=d||"0"<=d&&"9">=d||"?"==d||"*"==d)||(" "!=d&&"\x00"!=d&&JU.Logger.warn("unrecognized insertionCode:"+d),d="\x00");return(2147483647==a?0:a<<8|128)+d.charCodeAt(0)},"~N,~S");b.getSeqcodeStringFor=c(b,"getSeqcodeStringFor", +function(a){if(-2147483648==a)return null;var d=""+(a>>8);0!=(a&127)&&(d+="^"+String.fromCharCode(a&127));return d},"~N");c(b,"getInsertionCode",function(){return-2147483648==this.seqcode?"\x00":String.fromCharCode(this.seqcode&127)});c(b,"getInsCode",function(){return this.seqcode&127});b.getInsertionCodeFor=c(b,"getInsertionCodeFor",function(a){return a&127},"~N");b.getInsertionCodeChar=c(b,"getInsertionCodeChar",function(a){return-2147483648==a?"\x00":String.fromCharCode(a&127)},"~N");c(b,"scaleToScreen", +function(a,d){return this.chain.model.ms.vwr.tm.scaleToScreen(a,d)},"~N,~N");c(b,"isCursorOnTopOf",function(a,d,b,c,f){return this.chain.model.ms.isCursorOnTopOf(a,d,b,c,f)},"JM.Atom,~N,~N,~N,JM.Atom");c(b,"getModel",function(){return this.chain.model});c(b,"getSelectedMonomerCount",function(){return 0});c(b,"getSelectedMonomerIndex",function(){return-1});c(b,"isLeadAtom",function(){return!1},"~N");c(b,"getLeadAtomOr",function(a){var d=this.getLeadAtom();return null==d?a:d},"JM.Atom");c(b,"getLeadAtom", +function(){return null});c(b,"getQuaternion",function(){return null},"~S");c(b,"getQuaternionFrame",function(a){if(3>this.lastAtomIndex-this.firstAtomIndex)return null;var d=this.firstAtomIndex;return JU.Quat.getQuaternionFrame(a[d],a[++d],a[++d])},"~A");c(b,"setStrucNo",function(){},"~N");c(b,"getHelixData",function(a){return JU.Escape.escapeHelical(null,a,null,null,null)},"~N,~S,~N");c(b,"isWithinStructure",function(){return!1},"J.c.STR");c(b,"getProteinStructureTag",function(){return null});c(b, +"getStructureId",function(){return""});c(b,"getBioPolymerIndexInModel",function(){return-1});c(b,"isCrossLinked",function(){return!1},"JM.Group");c(b,"getCrossLinkVector",function(){return!1},"JU.Lst,~B,~B");c(b,"getNitrogenAtom",function(){return null});c(b,"getCarbonylOxygenAtom",function(){return null});c(b,"fixIndices",function(a,d){this.firstAtomIndex-=a;this.leadAtomIndex-=a;this.lastAtomIndex-=a;null!=this.bsAdded&&JU.BSUtil.deleteBits(this.bsAdded,d)},"~N,JU.BS");c(b,"getGroupInfo",function(a, +d){var b=new java.util.Hashtable;b.put("groupIndex",Integer.$valueOf(a));b.put("groupID",Short.$valueOf(this.groupID));var c=this.getSeqcodeString();null!=c&&b.put("seqCode",c);b.put("_apt1",Integer.$valueOf(this.firstAtomIndex));b.put("_apt2",Integer.$valueOf(this.lastAtomIndex));null!=this.bsAdded&&b.put("addedAtoms",this.bsAdded);b.put("atomInfo1",this.chain.model.ms.getAtomInfo(this.firstAtomIndex,null,d));b.put("atomInfo2",this.chain.model.ms.getAtomInfo(this.lastAtomIndex,null,d));b.put("visibilityFlags", +Integer.$valueOf(this.shapeVisibilityFlags));return b},"~N,JU.P3");c(b,"getMinZ",function(a,d){d[0]=2147483647;for(var b=this.firstAtomIndex;b<=this.lastAtomIndex;b++)this.checkMinZ(a[b],d);if(null!=this.bsAdded)for(b=this.bsAdded.nextSetBit(0);0<=b;b=this.bsAdded.nextSetBit(b+1))this.checkMinZ(a[b],d)},"~A,~A");c(b,"checkMinZ",function(a,d){var b=a.sZ-B(a.sD/2)-2;bd.indexOf("%")||2>d.length)return w(-1,[(new JM.LabelToken).set(d,-1)]);for(var f=0,e=-1,h=d.length;++e=m.tok||null!=m.key?null!=h&&(h.append(m.text),"\x00"!=m.ch1&&h.appendC(m.ch1)):JM.LabelToken.appendAtomTokenValue(a,d,m,h,f,e))}return null==h?null:h.toString().intern()},"JV.Viewer,JM.Atom,~A,~S,~A,JU.P3");b.getBondLabelValues=c(b,"getBondLabelValues", +function(){var a=new java.util.Hashtable;a.put("#","");a.put("ORDER","");a.put("TYPE","");a.put("LENGTH",Float.$valueOf(0));a.put("ENERGY",Float.$valueOf(0));return a});b.formatLabelBond=c(b,"formatLabelBond",function(a,d,b,c,f,e){c.put("#",""+(d.index+1));c.put("ORDER",""+JU.Edge.getBondOrderNumberFromOrder(d.order));c.put("TYPE",JU.Edge.getBondOrderNameFromOrder(d.order));c.put("LENGTH",Float.$valueOf(d.atom1.distance(d.atom2)));c.put("ENERGY",Float.$valueOf(d.getEnergy()));JM.LabelToken.setValues(b, +c);JM.LabelToken.formatLabelAtomArray(a,d.atom1,b,"1",f,e);JM.LabelToken.formatLabelAtomArray(a,d.atom2,b,"2",f,e);return JM.LabelToken.getLabel(b)},"JV.Viewer,JM.Bond,~A,java.util.Map,~A,JU.P3");b.formatLabelMeasure=c(b,"formatLabelMeasure",function(a,d,b,c,f){var e=new java.util.Hashtable;e.put("#",""+(d.index+1));e.put("VALUE",Float.$valueOf(c));e.put("UNITS",f);b=JM.LabelToken.compile(a,b,"\u0001",e);if(null==b)return"";JM.LabelToken.setValues(b,e);e=d.ms.at;d=d.countPlusIndices;for(c=d[0];1<= +c;--c)0<=d[c]&&JM.LabelToken.formatLabelAtomArray(a,e[d[c]],b,String.fromCharCode(48+c),null,null);b=JM.LabelToken.getLabel(b);return null==b?"":b},"JV.Viewer,JM.Measurement,~S,~N,~S");b.setValues=c(b,"setValues",function(a,d){for(var b=0;b=c)return b.text="%",h;var k;"-"==d.charAt(h)&&(b.alignLeft=!0,++h);hp?""+-p+"-":"";break;case 1094717454:h=d.getModelNumberForLabel();break;case 1128269825:h=""+d.atomPropertyInt(b.tok);break;case 1665140738:k=d.atomPropertyFloat(a,b.tok,e);break;case 1086324749:h=d.group.getStructureId();break;case 1094713367:var r=d.group.getStrucNo(),h=0>=r?"":""+r;break;case 1111490574:if(Float.isNaN(k=d.group.getGroupParameter(1111490574)))h= +"null";break;case 1111492626:case 1111492627:case 1111492628:case 1111490583:case 1111490584:case 1111490585:case 1111490586:k=d.atomPropertyFloat(a,b.tok,e);Float.isNaN(k)&&(h="");break;case 1073877011:h=a.getNBOAtomLabel(d);break;case 1086324747:case 1639976963:case 1237320707:h=d.atomPropertyString(a,b.tok);break;case 1140850705:h=d.getIdentityXYZ(e,1);break;case 1086324754:h=d.getWyckoffPosition(!1);break;case 1086324755:h=d.getWyckoffPosition(!0);break;case 79:h=d.getSymmetryOperatorList(!1); +break;case 81:k=d.getOccupancy100()/100;break;default:switch(b.tok&1136656384){case 1094713344:b.intAsFloat?k=d.atomPropertyInt(b.tok):h=""+d.atomPropertyInt(b.tok);break;case 1111490560:k=d.atomPropertyFloat(a,b.tok,e);break;case 1086324736:h=d.atomPropertyString(a,b.tok);break;case 1077936128:m=d.atomPropertyTuple(a,b.tok,e);null==m&&(h="");break;default:1145045003==b.tok&&(h=d.atomPropertyString(a,1145045003))}}}catch(u){if(F(u,"IndexOutOfBoundsException"))k=NaN,m=h=null;else throw u;}h=b.format(k, +h,m);null==c?b.text=h:c.append(h)},"JV.Viewer,JM.Atom,JM.LabelToken,JU.SB,~A,JU.P3");c(b,"format",function(a,d,b){return Float.isNaN(a)?null!=d?JU.PT.formatS(d,this.width,this.precision,this.alignLeft,this.zeroPad):null!=b?(0==this.width&&2147483647==this.precision&&(this.width=6,this.precision=2),JU.PT.formatF(b.x,this.width,this.precision,!1,!1)+JU.PT.formatF(b.y,this.width,this.precision,!1,!1)+JU.PT.formatF(b.z,this.width,this.precision,!1,!1)):this.text:JU.PT.formatF(a,this.width,this.precision, +this.alignLeft,this.zeroPad)},"~N,~S,JU.T3");b.labelTokenIds=E(-1,[1086324739,1086326786,1086326785,1111492620,1631586315,1086326788,1094713347,1086324746,1086326789,1111490569,1094713357,1094713361,1111492618,1094715393,1094713363,1094715402,1094717454,1086324743,1094713360,1086324742,79,1088421903,1111492619,1111490570,81,1128269825,1094715412,1086324747,1094713366,1086326788,1111490574,1111492620,1086324745,1111490575,1648363544,1145047055,1140850705,1086324755,1111492612,1111492609,1111492629, +1111492613,1111492610,1111492630,1111492614,1111492611,1111492631,1114249217,1112152066,1112150019,1112150020,1112150021,1112152070,1112152071,1112152073,1112152074,1112152076,1649022989,1112152078,1111490561,1111490562,1153433601,1094713346,1228931586,1765808134,1094713356,1111490564,1228935687,1287653388,1825200146,1111490567,1094713359,1111490565,1111490568,1094713362,1715472409,1665140738,1113589787,1086324748,1086324744,1112152075,1639976963,1237320707,1094713367,1086324749,1086326798,1111490576, +1111490577,1111490578,1111490579,1094715418,1648361473,1111492626,1111492627,1111492628,1312817669,1145045006,1145047050,1145047049,1145047053,1111492615,1111492616,1111492617,1113589786,1111490571,1111490572,1111490573,1145047052,1111490566,1111490563,1094713351,1094713365,1111490583,1111490584,1111490585,1111490586,1145045008,1296041985,1073877011,1086324752,1086324753,1086324754,1145045003]);b.twoCharLabelTokenIds=E(-1,[1111492612,1111492613,1111492614,1111490577,1111490578,1111490579,1111492626, +1111492627,1111492628])});u("JM");C(null,"JM.Measurement","JU.Measure $.PT $.SB J.atomdata.RadiusData J.c.VDW JM.LabelToken JU.Escape".split(" "),function(){var b=v(function(){this.thisID=this.ms=null;this.index=0;this.isVisible=!0;this.isTrajectory=this.isHidden=!1;this.$isValid=!0;this.colix=0;this.labelColix=-1;this.mad=0;this.tickInfo=null;this.traceX=-2147483648;this.count=this.traceY=0;this.pts=this.countPlusIndices=null;this.value=0;this.type=this.strMeasurement=this.vwr=this.text=this.units= +this.strFormat=this.property=null;this.tainted=!1;this.newUnits=this.renderArc=this.renderAxis=null;this.fixedValue=NaN;this.useDefaultLabel=this.inFront=this.isPending=!1;r(this,arguments)},JM,"Measurement",null);P(b,function(){this.countPlusIndices=E(5,0)});c(b,"isTainted",function(){return this.tainted&&!(this.tainted=!1)});c(b,"setM",function(a,d,b,c,f,e){this.ms=a;this.index=e;this.vwr=a.vwr;this.colix=c;this.strFormat=f;null!=d&&(this.tickInfo=d.tickInfo,this.pts=d.pts,this.mad=d.mad,this.thisID= +d.thisID,this.text=d.text,this.property=d.property,this.units=d.units,null==this.property&&"+hz".equals(this.units)&&(this.property="property_J"),null!=this.thisID&&null!=this.text&&(this.labelColix=this.text.colix));null==this.pts&&(this.pts=Array(4));d=null==d?null:d.countPlusIndices;this.count=null==d?0:d[0];0a?this.pts[-2-a]:this.ms.at[a]},"~N");c(b,"getLastIndex",function(){return 0a.indexOf("hz")?0:a.equals("noe_hz")?3:a.startsWith("dc_")||a.equals("khz")?1:2},"~S");c(b,"formatAngle",function(a){var d=this.getLabelString();0<=d.indexOf("%V")&&(a=Math.round(10*a)/10);return this.formatString(a,"\u00b0",d)},"~N");c(b,"getLabelString",function(){var a=this.countPlusIndices[0]+":",d=null;if(null!=this.strFormat){if(0==this.strFormat.length)return null;d=2this.pts[c].distance(d[c]));if(b)return!0;switch(this.count){default:return!0;case 2:return this.sameAsIJ(a,d,1,2)&&this.sameAsIJ(a,d,2,1);case 3:return this.sameAsIJ(a,d,1,3)&&this.sameAsIJ(a,d,2,2)&&this.sameAsIJ(a,d,3,1);case 4:return this.sameAsIJ(a,d,1,4)&&this.sameAsIJ(a,d,2,3)&&this.sameAsIJ(a,d,3,2)&&this.sameAsIJ(a,d,4,1)}},"~A,~A");c(b,"sameAsIJ",function(a,d,b,c){b=this.countPlusIndices[b];a=a[c];return 0<=b||0<=a?b==a:0.01>this.pts[-2-b].distance(d[-2-a])},"~A,~A,~N,~N");c(b,"sameAs", +function(a,d){return this.sameAsIJ(this.countPlusIndices,this.pts,a,d)},"~N,~N");c(b,"getPropMeasurement",function(a){if(null==this.countPlusIndices||2!=this.count)return NaN;for(var d=this.count;0<=--d;)if(0>this.countPlusIndices[d+1])return NaN;try{var b=null==a?this.getAtom(1):a[0],c=null==a?this.getAtom(2):a[1],f=this.vwr.getDataObj(this.property,null,2),e=b.i,h=c.i;return null==f||h>=f.length||e>=f.length?NaN:f[e][h]}catch(k){return NaN}},"~A");c(b,"getMeasurement",function(a){this.checkJ(null); +if(!Float.isNaN(this.fixedValue))return this.fixedValue;if(null!=this.property)return this.getPropMeasurement(a);if(null==this.countPlusIndices||2>this.count)return NaN;for(var d=this.count;0<=--d;)if(-1==this.countPlusIndices[d+1])return NaN;var d=null==a?this.getAtom(1):a[0],b=null==a?this.getAtom(2):a[1],c;switch(this.count){case 2:return d.distance(b);case 3:return c=null==a?this.getAtom(3):a[2],JU.Measure.computeAngleABC(d,b,c,!0);case 4:return c=null==a?this.getAtom(3):a[2],a=null==a?this.getAtom(4): +a[3],JU.Measure.computeTorsion(d,b,c,a,!0);default:return NaN}},"~A");c(b,"getLabel",function(a,d,b){var c=this.countPlusIndices[a];return 0>c?(b?"modelIndex "+this.getAtom(a).mi+" ":"")+JU.Escape.eP(this.getAtom(a)):d?"({"+c+"})":this.vwr.getAtomInfo(c)},"~N,~B,~B");c(b,"setModelIndex",function(a){if(null!=this.pts)for(var d=0;df)){if(0<=b&&!a[f].isBonded(a[b]))return!1;b=f}}return!0},"~A,~N");c(b,"getInfoAsString",function(a){var d=this.fixValue(a,!0);a=new JU.SB;a.append(2==this.count?null!=this.property?this.property:null==this.type?"distance":this.type:3==this.count? +"angle":"dihedral");a.append(" \t").appendF(d);a.append(" \t").append(JU.PT.esc(this.strMeasurement));for(d=1;d<=this.count;d++)a.append(" \t").append(this.getLabel(d,!1,!1));null!=this.thisID&&a.append(" \t").append(this.thisID);return a.toString()},"~S");c(b,"isInRange",function(a,d){if(a.factorType===J.atomdata.RadiusData.EnumType.FACTOR){var b=this.getAtom(1),c=this.getAtom(2),b=(b.getVanderwaalsRadiusFloat(this.vwr,a.vdwType)+c.getVanderwaalsRadiusFloat(this.vwr,a.vdwType))*a.value;return d<= +b}return 3.4028235E38==a.values[0]||d>=a.values[0]&&d<=a.values[1]},"J.atomdata.RadiusData,~N");c(b,"isIntramolecular",function(a,d){for(var b=-1,c=1;c<=d;c++){var f=this.getAtomIndex(c);if(!(0>f))if(f=a[f].getMoleculeNumber(!1),0>b)b=f;else if(f!=b)return!1}return!0},"~A,~N");c(b,"isMin",function(a){var d=this.getAtom(1),b=this.getAtom(2),c=D(100*b.distanceSquared(d)),d=d.getAtomName(),b=b.getAtomName(),b=0>d.compareTo(b)?d+b:b+d;a=a.get(b);return null!=a&&c==a.intValue()},"java.util.Map");b.isUnits= +c(b,"isUnits",function(a){return JU.PT.isOneOf((a.startsWith("+")?a.substring(1):a).toLowerCase(),";nm;nanometers;pm;picometers;angstroms;angstroms;ang;\u00c5;au;vanderwaals;vdw;%;noe;")||0>a.indexOf(" ")&&a.endsWith("hz")},"~S");b.toUnits=c(b,"toUnits",function(a,d,b){return Float.isNaN(a)?NaN:d.equals("hz")?b?Math.round(10*a)/10:a:d.equals("nm")?b?Math.round(100*a)/1E3:a/10:d.equals("pm")?b?Math.round(1E3*a)/10:100*a:d.equals("au")?b?Math.round(1E3*(a/0.5291772))/1E3:a/0.5291772:d.endsWith("khz")? +b?Math.round(a/10)/100:a/1E3:b?Math.round(100*a)/100:a},"~N,~S,~B");b.fromUnits=c(b,"fromUnits",function(a,d){return d.equals("nm")?10*a:d.equals("pm")?a/100:d.equals("au")?0.5291772*a:d.equals("\u00c5")?a:0},"~N,~S");b.fixUnits=c(b,"fixUnits",function(a){var d=a.endsWith("s")?a.substring(0,a.length-1):a;return d.equals("nanometer")?"nm":d.equals("bohr")||d.equals("atomicunits")||d.equals("atomic")?"au":d.equals("picometer")?"pm":d.equals("\u00e5")||d.equals("angstrom")||d.equals("a")||d.equals("ang")? +"\u00c5":d.equals("vanderwaal")||d.equals("vdw")?"%":a},"~S");c(b,"getDistanceFormatForState",function(){return this.useDefaultLabel?null:this.strFormat});c(b,"setFromMD",function(a){null!=a.thisID&&(this.thisID=a.thisID,this.mad=a.mad,0!=a.colix&&(this.colix=a.colix),this.strFormat=a.strFormat,this.text=a.text);this.units="default".equals(a.units)?null:a.units;this.property=a.property;this.fixedValue=a.fixedValue;0!=a.colix&&(this.colix=a.colix);0!=a.mad&&(this.mad=a.mad);null!=a.strFormat&&(this.strFormat= +(null==this.strFormat?a.strFormat:this.strFormat.substring(0,2))+a.strFormat.substring(2));null!=a.text&&(null==this.text?this.text=a.text:(null!=a.text.font&&(this.text.setFont(a.text.font,!1),this.text.fontScale=a.text.font.fontSize/a.text.font.fontSizeNominal),this.text.text=null,0!=a.text.align&&(this.text.align=a.text.align),0!=a.colix&&(this.labelColix=this.text.colix=a.text.colix)));this.formatMeasurement(null)},"JM.MeasurementData,~B")});u("JM");C(["J.api.JmolMeasurementClient"],"JM.MeasurementData", +["JU.Lst","JM.Measurement"],function(){var b=v(function(){this.points=this.measurements=this.measurementStrings=this.bsSelected=this.client=null;this.mustNotBeConnected=this.mustBeConnected=!1;this.tickInfo=null;this.tokAction=12290;this.note=this.property=this.strFormat=this.radiusData=null;this.isAll=!1;this.colix=0;this.intramolecular=null;this.mad=0;this.units=this.text=this.thisID=null;this.fixedValue=0;this.ms=this.minArray=this.atoms=null;this.allowSelf=!1;this.vwr=null;this.iFirstAtom=0;this.justOneModel= +!0;this.htMin=null;r(this,arguments)},JM,"MeasurementData",null,J.api.JmolMeasurementClient);c(b,"init",function(a,d,b){this.vwr=d;this.points=b;this.thisID=a;return this},"~S,JV.Viewer,JU.Lst");c(b,"setModelSet",function(a){this.ms=a;return this},"JM.ModelSet");c(b,"set",function(a,d,b,c,f,e,h,k,m,j,n,q,y,s,p,r){this.ms=this.vwr.ms;this.tokAction=a;2<=this.points.size()&&(z(this.points.get(0),"JU.BS")&&z(this.points.get(1),"JU.BS"))&&(this.justOneModel=this.vwr.ms.getModelBS(this.points.get(0),!1).equals(this.vwr.ms.getModelBS(this.points.get(1), +!1)));this.bsSelected=r;this.htMin=d;this.radiusData=b;this.property=c;this.strFormat=f;this.units=e;this.tickInfo=h;this.mustBeConnected=k;this.mustNotBeConnected=m;this.intramolecular=j;this.isAll=n;this.mad=q;this.colix=y;this.text=s;this.fixedValue=p;return this},"~N,java.util.Map,J.atomdata.RadiusData,~S,~S,~S,JM.TickInfo,~B,~B,Boolean,~B,~N,~N,JM.Text,~N,JU.BS");c(b,"processNextMeasure",function(a,d){var b=d.getMeasurement(null);if(!(null!=this.htMin&&!d.isMin(this.htMin)||null!=this.radiusData&& +!d.isInRange(this.radiusData,b)))if(null==this.measurementStrings&&null==this.measurements){var c=this.minArray[this.iFirstAtom];d.value=b;b=d.fixValue(this.units,!1);this.minArray[this.iFirstAtom]=-Infinity==1/c?b:Math.min(c,b)}else null!=this.measurementStrings?this.measurementStrings.addLast(d.getStringUsing(this.vwr,this.strFormat,this.units)):this.measurements.addLast(Float.$valueOf(d.getMeasurement(null)))},"JM.MeasurementData,JM.Measurement");c(b,"getMeasurements",function(a,d){if(d){this.minArray= +K(this.points.get(0).cardinality(),0);for(var b=0;bb)){var c=-1,f=Array(4),e=E(5,0),h=(new JM.Measurement).setPoints(d, +e,f,null);h.setCount(b);h.property=this.property;h.strFormat=this.strFormat;h.units=this.units;h.fixedValue=this.fixedValue;for(var k=-1,m=0;md)(this.allowSelf&&!this.mustBeConnected&&!this.mustNotBeConnected||b.isValid())&& +((!this.mustBeConnected||b.isConnected(this.atoms,a))&&(!this.mustNotBeConnected||!b.isConnected(this.atoms,a))&&(null==this.intramolecular||b.isIntramolecular(this.atoms,a)==this.intramolecular.booleanValue()))&&this.client.processNextMeasure(this,b);else{var f=this.points.get(a),e=b.countPlusIndices,h=0==a?2147483647:e[a];if(0>h)this.nextMeasure(a+1,d,b,c);else{for(var k=!1,j=f.nextSetBit(0),x=0;0<=j;j=f.nextSetBit(j+1),x++)if(j!=h||this.allowSelf){var n=this.atoms[j].mi;if(0<=c&&this.justOneModel)if(0== +a)c=n;else if(c!=n)continue;e[a+1]=j;0==a&&(this.iFirstAtom=x);k=!0;this.nextMeasure(a+1,d,b,c)}k||this.nextMeasure(a+1,d,b,c)}}},"~N,~N,JM.Measurement,~N")});u("JM");C(["JM.Measurement"],"JM.MeasurementPending",null,function(){var b=v(function(){this.haveModified=this.haveTarget=!1;this.numSet=0;this.lastIndex=-1;r(this,arguments)},JM,"MeasurementPending",JM.Measurement);c(b,"set",function(a){return this.setM(a,null,NaN,0,null,0)},"JM.ModelSet");c(b,"checkPoint",function(a){for(var d=1;d<=this.numSet;d++)if(this.countPlusIndices[d]== +-1-d&&0.01>this.pts[d-1].distance(a))return!1;return!0},"JU.Point3fi");c(b,"getIndexOf",function(a){for(var d=1;d<=this.numSet;d++)if(this.countPlusIndices[d]==a)return d;return 0},"~N");j(b,"setCount",function(a){this.setCountM(a);this.numSet=a},"~N");c(b,"addPoint",function(a,d,b){this.haveModified=a!=this.lastIndex;this.lastIndex=a;if(null==d){if(0this.groupCount){this.groupCount=0;for(var a=this.chainCount;0<=--a;)this.groupCount+=this.chains[a].groupCount}return this.groupCount});c(b,"getChainAt",function(a){return aa&&this.dataSourceFrame--;this.trajectoryBaseIndex>a&&this.trajectoryBaseIndex--;this.firstAtomIndex-=d;for(a=0;a=this.group3Of.length?null:this.group3Of[a]},"~N");c(b, +"getFirstAtomIndex",function(a){return this.firstAtomIndexes[a]},"~N");c(b,"getAtomCount",function(){return this.ms.ac});c(b,"createModelSet",function(a,d,b){var c=null==a?0:a.getAtomCount(d,-1);0this.baseModelIndex||this.baseModelIndex>=this.baseModelCount)this.baseModelIndex=this.baseModelCount-1;this.ms.mc=this.baseModelCount}this.ms.ac=this.baseAtomIndex=this.modelSet0.ac;this.ms.bondCount=this.modelSet0.bondCount;this.$mergeGroups=this.modelSet0.getGroups(); +this.groupCount=this.baseGroupIndex=this.$mergeGroups.length;this.ms.mergeModelArrays(this.modelSet0);this.ms.growAtomArrays(this.ms.ac+a)}else this.ms.mc=this.adapterModelCount,this.ms.ac=0,this.ms.bondCount=0,this.ms.at=Array(a),this.ms.bo=Array(250+a);this.doAddPDBHydrogens&&this.jbr.initializeHydrogenAddition();1e.indexOf("Viewer.AddHydrogens")||!b.isModelKit){h=JU.PT.split(f,"\n");k=new JU.SB;for(f=0;fj||j!=b.loadState.lastIndexOf(h[f]))&& +k.append(h[f]).appendC("\n");b.loadState+=b.loadScript.toString()+k.toString();b.loadScript=new JU.SB;if(0<=e.indexOf("load append ")||0<=e.indexOf('data "append '))e.insert(0,";var anew = appendNew;"),e.append(";set appendNew anew");b.loadScript.append(" ").appendSB(e).append(";\n")}if(this.isTrajectory){f=this.ms.mc-c+1;JU.Logger.info(f+" trajectory steps read");this.ms.setInfo(this.baseModelCount,"trajectoryStepCount",Integer.$valueOf(f));b=this.adapterModelCount;for(f=c;fe[0])for(k=0;ke[a]&&(j+=1E6);for(k=a;kc&&(c=b[f].mi,k=x[c],k.firstAtomIndex=f,k.isOrderly=k.act==k.bsAtoms.length()-f,k=this.ms.getDefaultVdwType(c),k!== +a&&(JU.Logger.info("Default Van der Waals type for model set to "+k.getVdwLabel()),a=k));JU.Logger.info(d+" atoms created")},"J.api.JmolAdapter,~O,~B");c(b,"getAtomSiteBase",function(a){for(var d=0,b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1)){var c=this.ms.at[b];!JM.AtomCollection.isDeleted(c)&&c.atomSite>d&&(d=c.atomSite)}return d},"JU.BS");c(b,"addJmolDataProperties",function(a,d){if(null!=d)for(var b=a.bsAtoms,c=b.cardinality(),f,e=d.entrySet().iterator();e.hasNext()&&((f=e.next())||1);){var h= +f.getKey(),k=f.getValue();if(k.length!=c)break;var j=h.startsWith("property_")?1715472409:JS.T.getTokFromName(h);switch(j){default:if(JS.T.tokAttr(j,2048)){this.vwr.setAtomProperty(b,j,0,0,null,k,null);break}case 1111492629:case 1111492630:case 1111492631:h="property_"+h;case 1715472409:this.vwr.setData(h,w(-1,[h,k,b,Integer.$valueOf(1)]),0,0,0,0,0)}}},"JM.Model,java.util.Map");c(b,"getPdbCharge",function(a,d){return a.equals("ARG")&&d.equals("NH1")||a.equals("LYS")&&d.equals("NZ")||a.equals("HIS")&& +d.equals("ND1")?1:0},"~S,~S");c(b,"addAtom",function(a,d,b,c,f,e,h,k,j,x,n,q,y,s,p,r,u,v,w){var z=0,A=null;if(null!=f){var B;if(0<=(B=f.indexOf("\x00")))A=f.substring(B+1),f=f.substring(0,B);a&&(0<=f.indexOf("*")&&(f=f.$replace("*","'")),z=this.vwr.getJBR().lookupSpecialAtomID(f),2==z&&"CA".equalsIgnoreCase(p)&&(z=0))}a=this.ms.addAtom(this.iModel,this.nullGroup,c,f,A,y,s,b,n,v,r,e,h,j,x,k,q,z,d,w);a.altloc=u;return a},"~B,JU.BS,~N,~N,~S,~N,~N,JU.Lst,~N,~N,JU.P3,~B,~N,~N,~S,JU.V3,~S,~N,~N");c(b,"checkNewGroup", +function(a,d,b,c,f,e,h){d!=this.currentChainID&&(this.currentChainID=d,this.currentChain=this.getOrAllocateChain(this.model,d),this.currentGroupInsertionCode="\uffff",this.currentGroupSequenceNumber=-1,this.currentGroup3="xxxx",this.isNewChain=!0);d=null==b?null:b.intern();if(c!=this.currentGroupSequenceNumber||f!=this.currentGroupInsertionCode||d!==this.currentGroup3){0=this.group3Of.length;)this.chainOf=JU.AU.doubleLength(this.chainOf),this.group3Of=JU.AU.doubleLengthS(this.group3Of),this.seqcodes=JU.AU.doubleLengthI(this.seqcodes),this.firstAtomIndexes=JU.AU.doubleLengthI(this.firstAtomIndexes);this.firstAtomIndexes[this.groupCount]=this.ms.ac;this.chainOf[this.groupCount]=this.currentChain;this.group3Of[this.groupCount]=b;this.seqcodes[this.groupCount]= +JM.Group.getSeqcodeFor(c,f);++this.groupCount}},"J.api.JmolAdapter,~N,~S,~N,~S,~B,~B");c(b,"getOrAllocateChain",function(a,d){var b=a.getChain(d);if(null!=b)return b;a.chainCount==a.chains.length&&(a.chains=0==a.chainCount?Array(2):JU.AU.doubleLength(a.chains));return a.chains[a.chainCount++]=new JM.Chain(a,d,0==d||32==d?0:++this.iChain)},"JM.Model,~N");c(b,"iterateOverAllNewBonds",function(a){for(var d=this.isMutate&&!this.vwr.getBoolean(603979894),b=!1;a.hasNext();){var c=a.getEncodedOrder(),f= +d?1:c,e=this.bondAtoms(a.getAtomUniqueID1(),a.getAtomUniqueID2(),f);null!=e&&(1c)break;f=this.ms.getInfoI(b,"presymmetryAtomCount");this.ms.am[b].auxiliaryInfo.put("presymmetryAtomIndex",Integer.$valueOf(c));this.ms.setInfo(b,"asymmetricUnit",this.ms.am[b].bsAsymmetricUnit=JU.BSUtil.newBitSet2(c,c+f));c+=f}d>=c&&this.ms.bsSymmetry.set(d)}}if(this.appendNew&& +this.ms.someModelsHaveFractionalCoordinates){a=this.ms.at;b=-1;c=null;f=!1;for(d=this.baseAtomIndex;dn&&(n=this.ms.bondCount);if(h||e&&(0==n||q&&null==this.jmolData&&(this.ms.getMSInfoB("havePDBHeaderName")|| +n"):c=h.isProtein()?"p>":h.isNucleic()?"n>":h.isCarbohydrate()?"c>": +"o>";null!=b&&(this.countGroup(this.ms.at[f].mi,c,b),h.isNucleic()&&(b=null==this.htGroup1?null:this.htGroup1.get(b),null!=b&&(h.group1=b.charAt(0))));this.addGroup(d,h);this.groups[a]=h;h.groupIndex=a;for(a=e+1;--a>=f;)this.ms.at[a].group=h},"~N,JM.Chain,~S,~N,~N,~N");c(b,"addGroup",function(a,d){a.groupCount==a.groups.length&&(a.groups=JU.AU.doubleLength(a.groups));a.groups[a.groupCount++]=d},"JM.Chain,JM.Group");c(b,"countGroup",function(a,d,b){var c=a+1;if(!(null==this.group3Lists||null==this.group3Lists[c])){var f= +(b+" ").substring(0,3),e=this.group3Lists[c].indexOf(f);0>e&&(this.group3Lists[c]+=",["+f+"]",e=this.group3Lists[c].indexOf(f),this.group3Counts[c]=JU.AU.arrayCopyI(this.group3Counts[c],this.group3Counts[c].length+10));this.group3Counts[c][B(e/6)]++;e=this.group3Lists[c].indexOf(",["+f);0<=e&&(this.group3Lists[c]=this.group3Lists[c].substring(0,e)+d+this.group3Lists[c].substring(e+2));0<=a&&this.countGroup(-1,d,b)}},"~N,~S,~S");c(b,"freeze",function(){this.htAtomMap.clear();this.ms.ac=JU.Elements.elementNumberMax&&(b=JU.Elements.elementNumberMax+JU.Elements.altElementIndexFromNumber(b)); +this.ms.elementsPresent[d.mi].set(b)}}});c(b,"setupMinimization",function(){this.initialize2DMin();var a=new JU.V3;if(null!=this.vStereo){var d=this.vStereo.size();a:for(;0<=--d;)for(var b=this.vStereo.get(d),c=b.atom1,f=c.bonds,e=c.getBondCount();0<=--e;){var h=f[e];if(h!==b&&(h=h.getOtherAtom(c),a.sub2(h,c),0.1>Math.abs(a.x))){1025==b.order==0>a.y&&(this.stereodir=-1);break a}}}this.set2dZ(a);if(null!=this.vStereo){a=JU.BSUtil.newBitSet2(this.baseAtomIndex,this.vwr.ms.ac);for(d=this.vStereo.size();0<= +--d;){b=this.vStereo.get(d);c=1025==b.order?3:-3;b.order=1;6>b.atom1.getBondCount()&&(b.atom2.z!=b.atom1.z&&0>c==b.atom2.ze&&(a+=x.distance(h),d++)}}if(0!=d){a=1.45/(a/d);for(e=c;ea)return c;b=JU.BSUtil.copy(b);0<=d&&b.clear(d);JM.ModelLoader.setBranch2dZ(this.ms.at[a],c,b,f,e,h,k);return c},"~N,~N,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N");b.setBranch2dZ=c(b,"setBranch2dZ",function(a,d,b,c,f,e,h){var k=a.i;if(b.get(k)&&(b.clear(k),d.set(k),null!=a.bonds))for(k=a.bonds.length;0<=--k;){var j=a.bonds[k];j.isHydrogen()||(j=j.getOtherAtom(a),JM.ModelLoader.setAtom2dZ(a, +j,c,f,e,h),JM.ModelLoader.setBranch2dZ(j,d,b,c,f,e,h))}},"JM.Atom,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N");b.setAtom2dZ=c(b,"setAtom2dZ",function(a,d,b,c,f,e){b.sub2(d,a);b.z=0;b.normalize();f.cross(c,b);b=Math.acos(b.dot(c));e=0.4*-e*Math.sin(4*b);d.z=a.z+e},"JM.Atom,JM.Atom,JU.V3,JU.V3,JU.V3,~N");c(b,"finalizeShapes",function(){this.ms.sm=this.vwr.shm;this.ms.sm.setModelSet(this.ms);this.ms.setBsHidden(this.vwr.slm.getHiddenSet());this.merging||this.ms.sm.resetShapes(!1);this.ms.sm.loadDefaultShapes(this.ms); +this.ms.someModelsHaveAromaticBonds&&this.vwr.getBoolean(603979944)&&this.ms.assignAromaticBondsBs(!1,null);this.merging&&1==this.baseModelCount&&this.ms.sm.setShapePropertyBs(6,"clearModelIndex",null,null)});c(b,"undeleteAtom",function(a){this.ms.at[a].valence=0},"~N");b.createAtomDataSet=c(b,"createAtomDataSet",function(a,d,b,c,f){if(null==c)return null;var e=a.getModelAdapter(),h=new JU.P3,k=d.at,j=a.getFloat(570425363);if(null!=d.unitCells)for(var x=f.nextSetBit(0);0<=x;x=f.nextSetBit(x+1))if(null!= +k[x].atomSymmetry){j=-j;break}for(var x=-1,n=0,q=JU.BSUtil.cardinalityOf(f)==a.ms.ac,y=e.getAtomIterator(c);y.hasNext();){var s=y.getXYZ();if(!Float.isNaN(s.x+s.y+s.z))if(1145047049==b){x=f.nextSetBit(x+1);if(0>x)break;n++;JU.Logger.debugging&&JU.Logger.debug("atomIndex = "+x+": "+k[x]+" --\x3e ("+s.x+","+s.y+","+s.z);d.setAtomCoord(x,s.x,s.y,s.z)}else{h.setT(s);s=JU.BS.newN(d.ac);d.getAtomsWithin(j,h,s,-1);s.and(f);if(q)if(n=JU.BSUtil.cardinalityOf(s),0==n){JU.Logger.warn("createAtomDataSet: no atom found at position "+ +h);continue}else 1a&&this.modelNumbers[d]==1E6+a)return d;return-1}if(1E6>a)return a;for(d=0;d=this.translations.length?null:this.translations[a]},"~N");c(b,"translateModel",function(a,d){if(null==d){var b=this.getTranslation(a);null!=b&&(d=JU.P3.newP(b),d.scale(-1),this.translateModel(a,d),this.translations[a]=null)}else{if(null==this.translations||this.translations.length<=a)this.translations=Array(this.mc);null==this.translations[a]&&(this.translations[a]=new JU.P3);this.translations[a].add(d);for(var b=this.am[a].bsAtoms,c= +b.nextSetBit(0);0<=c;c=b.nextSetBit(c+1))this.at[c].add(d)}},"~N,JU.T3");c(b,"getFrameOffsets",function(a,d){if(null==a){if(d)for(var b=this.mc;0<=--b;){var c=this.am[b];!c.isJmolDataFrame&&!c.isTrajectory&&this.translateModel(c.modelIndex,null)}return null}if(0>a.nextSetBit(0))return null;if(d){for(var f=JU.BSUtil.copy(a),e=null,h=new JU.P3,b=0;bc&&0u&&0<=h&&(u=this.at[h].mi),0>u&&(u=this.vwr.getVisibleFramesBitSet().nextSetBit(0),a=null),q=this.vwr.getModelUndeletedAtomsBitSet(u),p=null!=a&&q.cardinality()!= +a.cardinality(),null!=a&&q.and(a),h=q.nextSetBit(0),0>h&&(q=this.vwr.getModelUndeletedAtomsBitSet(u),h=q.nextSetBit(0)),s=this.vwr.shm.getShapePropertyIndex(18,"mad",h),y=null!=s&&0!=s.intValue()||this.vwr.tm.vibrationOn,s=null!=c&&0<=c.toUpperCase().indexOf(":POLY")){x=w(-1,[Integer.$valueOf(h),null]);this.vwr.shm.getShapePropertyData(21,"points",x);h=x[1];if(null==h)return null;q=null;y=!1;x=null}else h=this.at;var v;if(null!=c&&0<=(v=c.indexOf(":")))c=c.substring(0,v);if(null!=c&&0<=(v=c.indexOf(".")))f= +JU.PT.parseInt(c.substring(v+1)),0>f&&(f=0),c=c.substring(0,v);x=n.setPointGroup(this.vwr,x,k,h,q,y,r?0:this.vwr.getFloat(570425382),this.vwr.getFloat(570425384),null==q?h.length:q.cardinality(),p);!s&&!r&&(this.pointGroup=x);if(!d&&!b)return x.getPointGroupName();d=x.getPointGroupInfo(u,j,b,c,f,e);return b?d:(1this.atomSerials.length&&(j=this.atomSerials.length);for(var h=h[2],x=E(h+1,0),n=k;nn||0>q||n>h||q>h))if(n=x[n]-1,q=x[q]-1,!(0>n||0>q)){var y=this.at[n], +s=this.at[q];null!=b&&(y.isHetero()&&b.set(n),s.isHetero()&&b.set(q));if(y.altloc==s.altloc||"\x00"==y.altloc||"\x00"==s.altloc)this.getOrAddBond(y,s,k,2048==k?1:c,null,0,!1)}}}}},"~N,~N,JU.BS");c(b,"deleteAllBonds",function(){this.moleculeCount=0;for(var a=this.stateScripts.size();0<=--a;)this.stateScripts.get(a).isConnect()&&this.stateScripts.removeItemAt(a);this.deleteAllBonds2()});c(b,"includeAllRelatedFrames",function(a){for(var d=0,b=0;bc;)e[q].fixIndices(h,j,n);this.vwr.shm.deleteShapeAtoms(w(-1,[d,this.at,E(-1,[h,x,j])]),n);this.mc--}}else h++; +this.haveBioModels=!1;for(c=this.mc;0<=--c;)this.am[c].isBioModel&&(this.haveBioModels=!0,this.bioModelset.set(this.vwr,this));this.validateBspf(!1);this.bsAll=null;this.resetMolecules();this.isBbcageDefault=!1;this.calcBoundBoxDimensions(null,1);return f},"JU.BS");c(b,"resetMolecules",function(){this.molecules=this.bsAll=null;this.moleculeCount=0;this.resetChirality()});c(b,"resetChirality",function(){if(this.haveChirality)for(var a=-1,d=this.ac;0<=--d;){var b=this.at[d];null!=b&&(b.setCIPChirality(0), +b.mi!=a&&b.mia)){this.modelNumbers=JU.AU.deleteElements(this.modelNumbers,a,1);this.modelFileNumbers=JU.AU.deleteElements(this.modelFileNumbers,a,1);this.modelNumbersForAtomLabel=JU.AU.deleteElements(this.modelNumbersForAtomLabel,a,1);this.modelNames=JU.AU.deleteElements(this.modelNames,a,1);this.frameTitles=JU.AU.deleteElements(this.frameTitles,a,1);this.thisStateModel=-1;var c=this.getInfoM("group3Lists"), +f=this.getInfoM("group3Counts"),e=a+1;if(null!=c&&null!=c[e])for(var h=B(c[e].length/6);0<=--h;)0c&&(c=0),b=B(Math.floor(2E3*c))):k=new J.atomdata.RadiusData(e,0,null,null);this.sm.setShapeSizeBs(JV.JC.shapeTokenIndex(d), +b,k,a);return}this.setAPm(a,d,b,c,f,e,h)},"JU.BS,~N,~N,~N,~S,~A,~A");c(b,"getFileData",function(a){if(0>a)return"";var d=this.getInfo(a,"fileData");if(null!=d)return d;if(!this.getInfoB(a,"isCIF"))return this.getPDBHeader(a);d=this.vwr.getCifData(a);this.setInfo(a,"fileData",d);return d},"~N");c(b,"addHydrogens",function(a,d){var b=a.get(0).mi,c=new JU.BS;if(this.isTrajectory(b)||1a||a>=this.mc)return null; +var b=this.am[a].simpleCage,c=null;null!=this.unitCells&&(aa&&0>(a=this.vwr.am.cmi))return null;var c=this.vwr.getSymTemp();try{return this.setModelCage(a,null==d?null:c.getUnitCell(d,!1,b))}catch(f){if(F(f, +Exception))return f.printStackTrace(),null;throw f;}},"~N,~A,~S");c(b,"getModelName",function(a){return 1>this.mc?"":0<=a?this.modelNames[a]:this.modelNumbersForAtomLabel[-1-a]},"~N");c(b,"getModelTitle",function(a){return this.getInfo(a,"title")},"~N");c(b,"getModelFileName",function(a){return this.getInfo(a,"fileName")},"~N");c(b,"getModelFileType",function(a){return this.getInfo(a,"fileType")},"~N");c(b,"setFrameTitle",function(a,d){if("string"==typeof d)for(var b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+ +1))this.frameTitles[b]=d;else for(var b=a.nextSetBit(0),c=0;0<=b;b=a.nextSetBit(b+1))ck;k++)this.ptTemp.setT(h[k]),this.ptTemp.add(e), +b=Math.max(b,d.distance(this.ptTemp))}f=d.distance(f)+this.getRadiusVdwJmol(f);f>b&&(b=f)}}return 0==b?10:b},"~N,JU.P3,~B");c(b,"calcBoundBoxDimensions",function(a,d){null!=a&&0>a.nextSetBit(0)&&(a=null);if(!(null==a&&this.isBbcageDefault||0==this.ac)){if(null==this.getDefaultBoundBox())this.bboxModels=this.getModelBS(this.bboxAtoms=JU.BSUtil.copy(a),!1),this.calcAtomsMinMax(a,this.boxInfo)==this.ac&&(this.isBbcageDefault=!0),null==a&&null!=this.unitCells&&this.calcUnitCellMinMax();else{var b=this.defaultBBox.getBoundBoxVertices(); +this.boxInfo.reset();for(var c=0;8>c;c++)this.boxInfo.addBoundBoxPoint(b[c])}this.boxInfo.setBbcage(d)}},"JU.BS,~N");c(b,"getDefaultBoundBox",function(){var a=this.getInfoM("boundbox");null==a?this.defaultBBox=null:(null==this.defaultBBox&&(this.defaultBBox=new JU.BoxInfo),this.defaultBBox.setBoundBoxFromOABC(a));return this.defaultBBox});c(b,"getBoxInfo",function(a,d){if(null==a)return this.boxInfo;var b=new JU.BoxInfo;this.calcAtomsMinMax(a,b);b.setBbcage(d);return b},"JU.BS,~N");c(b,"calcAtomsMinMax", +function(a,d){d.reset();for(var b=0,c=null==a,f=c?this.ac-1:a.nextSetBit(0);0<=f;f=c?f-1:a.nextSetBit(f+1)){b++;var e=this.at[f];null!=e&&!this.isJmolDataFrameForAtom(e)&&d.addBoundBoxPoint(e)}return b},"JU.BS,JU.BoxInfo");c(b,"calcUnitCellMinMax",function(){for(var a=new JU.P3,d=0;df;f++)a.add2(b,c[f]),this.boxInfo.addBoundBoxPoint(a)}});c(b,"calcRotationRadiusBs", +function(a){for(var d=this.getAtomSetCenter(a),b=0,c=a.nextSetBit(0);0<=c;c=a.nextSetBit(c+1)){var f=this.at[c],f=d.distance(f)+this.getRadiusVdwJmol(f);f>b&&(b=f)}return 0==b?10:b},"JU.BS");c(b,"getCenterAndPoints",function(a,d){for(var b,c,f=d?1:0,e=a.size();0<=--e;){var h=a.get(e);b=h[0];z(h[1],"JU.BS")?(c=h[1],f+=Math.min(b.cardinality(),c.cardinality())):f+=Math.min(b.cardinality(),h[1].length)}var k=w(2,f,null);d&&(k[0][0]=new JU.P3,k[1][0]=new JU.P3);for(e=a.size();0<=--e;)if(h=a.get(e),b= +h[0],z(h[1],"JU.BS")){c=h[1];for(var h=b.nextSetBit(0),j=c.nextSetBit(0);0<=h&&0<=j;h=b.nextSetBit(h+1),j=c.nextSetBit(j+1))k[0][--f]=this.at[h],k[1][f]=this.at[j],d&&(k[0][0].add(this.at[h]),k[1][0].add(this.at[j]))}else{c=h[1];h=b.nextSetBit(0);for(j=0;0<=h&&jk?"all #"+k:this.getModelNumberDotted(k))+";\n "+a),this.thisStateModel=k):this.thisStateModel=-1;a=new JM.StateScript(this.thisStateModel,a,d,b,c,f,h);a.isValid()&&this.stateScripts.addLast(a);return a},"~S,JU.BS,JU.BS,JU.BS,~S,~B,~B");c(b,"freezeModels",function(){this.haveBioModels=!1;for(var a=this.mc;0<=--a;)this.haveBioModels=(new Boolean(this.haveBioModels|this.am[a].freeze())).valueOf()});c(b,"getStructureList",function(){return this.vwr.getStructureList()}); +c(b,"getInfoM",function(a){return null==this.msInfo?null:this.msInfo.get(a)},"~S");c(b,"getMSInfoB",function(a){a=this.getInfoM(a);return z(a,Boolean)&&a.booleanValue()},"~S");c(b,"isTrajectory",function(a){return this.am[a].isTrajectory},"~N");c(b,"isTrajectorySubFrame",function(a){return this.am[a].trajectoryBaseIndex!=a},"~N");c(b,"isTrajectoryMeasurement",function(a){return null!=this.trajectory&&this.trajectory.hasMeasure(a)},"~A");c(b,"getModelBS",function(a,d){var b=new JU.BS,c=0,f=null==a; +d=(new Boolean(d&null!=this.trajectory)).valueOf();for(var e=f?0:a.nextSetBit(0);0<=e&&ea.modelIndex?null==a.bsSelected?0:Math.max(0,a.bsSelected.nextSetBit(0)): +this.am[a.modelIndex].firstAtomIndex,a.lastModelIndex=a.firstModelIndex=0==this.ac?0:this.at[a.firstAtomIndex].mi,a.modelName=this.getModelNumberDotted(a.firstModelIndex),this.fillADa(a,d))},"J.atomdata.AtomData,~N");c(b,"getModelNumberDotted",function(a){return 1>this.mc||a>=this.mc||0>a?"":JU.Escape.escapeModelFileNumber(this.modelFileNumbers[a])},"~N");c(b,"getModelNumber",function(a){return this.modelNumbers[2147483647==a?this.mc-1:a]},"~N");c(b,"getModelProperty",function(a,d){var b=this.am[a].properties; +return null==b?null:b.getProperty(d)},"~N,~S");c(b,"getModelAuxiliaryInfo",function(a){return 0>a?null:this.am[a].auxiliaryInfo},"~N");c(b,"setInfo",function(a,d,b){0<=a&&aa?null:this.am[a].auxiliaryInfo.get(d)},"~N,~S");c(b,"getInfoB",function(a,d){var b=this.am[a].auxiliaryInfo;return null!=b&&b.containsKey(d)&&b.get(d).booleanValue()},"~N,~S");c(b,"getInfoI", +function(a,d){var b=this.am[a].auxiliaryInfo;return null!=b&&b.containsKey(d)?b.get(d).intValue():-2147483648},"~N,~S");c(b,"getInsertionCountInModel",function(a){return this.am[a].insertionCount},"~N");b.modelFileNumberFromFloat=c(b,"modelFileNumberFromFloat",function(a){var d=B(Math.floor(a));for(a=B(Math.floor(1E4*(a-d+1E-5)));0!=a&&0==a%10;)a/=10;return 1E6*d+a},"~N");c(b,"getChainCountInModelWater",function(a,d){if(0>a){for(var b=0,c=this.mc;0<=--c;)b+=this.am[c].getChainCount(d);return b}return this.am[a].getChainCount(d)}, +"~N,~B");c(b,"getGroupCountInModel",function(a){if(0>a){a=0;for(var d=this.mc;0<=--d;)a+=this.am[d].getGroupCount();return a}return this.am[a].getGroupCount()},"~N");c(b,"calcSelectedGroupsCount",function(){for(var a=this.vwr.bsA(),d=this.mc;0<=--d;)this.am[d].calcSelectedGroupsCount(a)});c(b,"isJmolDataFrameForModel",function(a){return this.haveJmolDataFrames&&null!=this.am&&0<=a&&aa.indexOf("deriv")&&(a=a.substring(0,a.indexOf(" ")),c.dataFrames.put(a,Integer.$valueOf(b)))},"~S,~N,~N");c(b, +"getJmolDataFrameIndex",function(a,d){if(null==this.am[a].dataFrames)return-1;var b=this.am[a].dataFrames.get(d);return null==b?-1:b.intValue()},"~N,~S");c(b,"clearDataFrameReference",function(a){for(var d=0;da)return"";if(this.am[a].isBioModel)return this.getPDBHeader(a);a=this.getInfo(a,"fileHeader");null==a&&(a=this.modelSetName);return null!= +a?a:"no header information found"},"~N");c(b,"getAltLocCountInModel",function(a){return this.am[a].altLocCount},"~N");c(b,"getAltLocIndexInModel",function(a,d){if("\x00"==d)return 0;var b=this.getAltLocListInModel(a);return 0==b.length?0:b.indexOf(d)+1},"~N,~S");c(b,"getInsertionCodeIndexInModel",function(a,d){if("\x00"==d)return 0;var b=this.getInsertionListInModel(a);return 0==b.length?0:b.indexOf(d)+1},"~N,~S");c(b,"getAltLocListInModel",function(a){a=this.getInfo(a,"altLocs");return null==a?"": +a},"~N");c(b,"getInsertionListInModel",function(a){a=this.getInfo(a,"insertionCodes");return null==a?"":a},"~N");c(b,"getModelSymmetryCount",function(a){return 0a||this.isTrajectory(a)||a>=this.mc-1?this.ac:this.am[a+1].firstAtomIndex,f=0>=a?0:this.am[a].firstAtomIndex;--c>=f;)if((0>a||!JM.AtomCollection.isDeleted(this.at[c])&&this.at[c].mi==a)&&((1275072532==d||0==d)&&null!=(b=this.getModulation(c))||(4166==d||0==d)&&null!=(b=this.getVibration(c,!1)))&&b.isNonzero())return c;return-1},"~N,~N");c(b,"getModulationList",function(a,d,b){var c=new JU.Lst;if(null!=this.vibrations)for(var f=a.nextSetBit(0);0<=f;f=a.nextSetBit(f+1))z(this.vibrations[f], +"J.api.JmolModulationSet")?c.addLast(this.vibrations[f].getModulation(d,b,!1)):c.addLast(Float.$valueOf("O"==d?NaN:-1));return c},"JU.BS,~S,JU.P3");c(b,"getElementsPresentBitSet",function(a){if(0<=a)return this.elementsPresent[a];a=new JU.BS;for(var d=0;da)return null;var d=this.getInfo(a,"dipole");null==d&&(d=this.getInfo(a,"DIPOLE_VEC"));return d},"~N");c(b,"calculateMolecularDipole",function(a,d){if(null!=d){var b=d.nextSetBit(0);if(0>b)return null;a=this.at[b].mi}if(0>a)return null;var c=b=0,f=0,e=0,h=new JU.V3,k=new JU.V3;null==d&&(d=this.getModelAtomBitSetIncludingDeleted(-1,!1));this.vwr.getOrCalcPartialCharges(this.am[a].bsAtoms,null);for(var j=d.nextSetBit(0);0<=j;j=d.nextSetBit(j+1))if(!(JM.AtomCollection.isDeleted(this.at[j])|| +this.at[j].mi!=a)){var x=this.partialCharges[j];0>x?(c++,e+=x,k.scaleAdd2(x,this.at[j],k)):0a)return this.moleculeCount;for(var b=0;bb)return null;b=this.getUnitCell(this.at[b].mi);return null==b?null:b.notInCentroid(this,a,d)},"JU.BS,~A");c(b,"getMolecules",function(){if(0d?a.setCenter(b,c):(this.initializeBspt(d),a.setModel(this, +d,this.am[d].firstAtomIndex,2147483647,b,c,null))},"J.api.AtomIndexIterator,~N,JU.T3,~N");c(b,"setIteratorForAtom",function(a,d,b,c,f){0>d&&(d=this.at[b].mi);d=this.am[d].trajectoryBaseIndex;this.initializeBspt(d);a.setModel(this,d,this.am[d].firstAtomIndex,b,this.at[b],c,f)},"J.api.AtomIndexIterator,~N,~N,~N,J.atomdata.RadiusData");c(b,"getSelectedAtomIterator",function(a,d,b,c,f){this.initializeBspf();if(f){f=this.getModelBS(a,!1);for(var e=f.nextSetBit(0);0<=e;e=f.nextSetBit(e+1))this.initializeBspt(e); +f=new JM.AtomIteratorWithinModelSet(f)}else f=new JM.AtomIteratorWithinModel;f.initialize(this.bspf,a,d,b,c,this.vwr.isParallel());return f},"JU.BS,~B,~B,~B,~B");j(b,"getBondCountInModel",function(a){return 0>a?this.bondCount:this.am[a].getBondCount()},"~N");c(b,"getAtomCountInModel",function(a){return 0>a?this.ac:this.am[a].act},"~N");c(b,"getModelAtomBitSetIncludingDeletedBs",function(a){var d=new JU.BS;null==a&&null==this.bsAll&&(this.bsAll=JU.BSUtil.setAll(this.ac));if(null==a)d.or(this.bsAll); +else for(var b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1))d.or(this.getModelAtomBitSetIncludingDeleted(b,!1));return d},"JU.BS");c(b,"getModelAtomBitSetIncludingDeleted",function(a,d){var b=0>a?this.bsAll:this.am[a].bsAtoms;null==b&&(b=this.bsAll=JU.BSUtil.setAll(this.ac));return d?JU.BSUtil.copy(b):b},"~N,~B");c(b,"getAtomBitsMaybeDeleted",function(a,d){var b;switch(a){default:return this.getAtomBitsMDa(a,d,new JU.BS);case 1073741925:case 1073742189:case 1111490587:case 1073742128:case 1073741863:case 1086324744:return b= +new JU.BS,this.haveBioModels?this.bioModelset.getAtomBitsStr(a,d,b):b;case 1677721602:case 1073742331:return this.getAtomBitsMDb(a,d);case 1812599299:var c=this.getBoxInfo(d,1);b=this.getAtomsWithin(c.getBoundBoxCornerVector().length()+1E-4,c.getBoundBoxCenter(),null,-1);for(var f=b.nextSetBit(0);0<=f;f=b.nextSetBit(f+1))c.isWithin(this.at[f])||b.clear(f);return b;case 1094713350:b=JU.BSUtil.newBitSet2(0,this.ac);f=d;c=E(-1,[D(f.x)-1,D(f.y)-1,D(f.z)-1,D(f.x),D(f.y),D(f.z),0]);for(f=this.mc;0<=--f;){var e= +this.getUnitCell(f);null==e?JU.BSUtil.andNot(b,this.am[f].bsAtoms):b.andNot(e.notInCentroid(this,this.am[f].bsAtoms,c))}return b;case 1094713360:return this.getMoleculeBitSet(d);case 1073742363:return this.getSelectCodeRange(d);case 2097196:b=JU.BS.newN(this.ac);c=-1;e=0;for(f=this.ac;0<=--f;){var h=this.at[f];if(!JM.AtomCollection.isDeleted(h)){var k=h.atomSymmetry;if(null!=k){if(h.mi!=c){c=h.mi;if(null==this.getModelCellRange(c))continue;e=this.getModelSymmetryCount(c)}for(var h=0,j=e;0<=--j;)if(k.get(j)&& +1<++h){b.set(f);break}}}}return b;case 1088421903:return JU.BSUtil.copy(null==this.bsSymmetry?this.bsSymmetry=JU.BS.newN(this.ac):this.bsSymmetry);case 1814695966:if("unitcell".equals(d))d=JU.P3.new3(1,1,1);else{b=new JU.BS;e=z(d,"J.api.SymmetryInterface")?d:this.vwr.getCurrentUnitCell();if(null==e)return b;e=e.getUnitCellMultiplied();for(f=this.ac;0<=--f;)null!=this.at[f]&&(this.ptTemp1.setT(this.at[f]),e.toFractional(this.ptTemp1,!1),e.checkPeriodic(this.ptTemp1)&&b.set(f));return b}case 1094713349:b= +new JU.BS;c=d;e=this.vwr.getSymTemp();System.out.println("MS test within");k=-1;for(f=this.ac;0<=--f;)JM.AtomCollection.isDeleted(this.at[f])||(h=this.at[f].getModelIndex(),k!=h&&(k=h,e=this.getUnitCell(k)),null!=e&&(this.ptTemp.setT(this.at[f]),e.toFractional(this.ptTemp,!1),e.isWithinUnitCell(this.ptTemp,c.x,c.y,c.z)&&b.set(f)));System.out.println("MS test within"+b);return b}},"~N,~O");c(b,"getSelectCodeRange",function(a){var d=new JU.BS,b=a[0],c=a[1];a=a[2];var f=this.vwr.getBoolean(603979822); +0<=a&&(300>a&&!f)&&(a=this.chainToUpper(a));for(var e=this.mc;0<=--e;)if(this.am[e].isBioModel)for(var h=this.am[e],k,j=h.chainCount;0<=--j;){var x=h.chains[j];if(-1==a||a==(k=x.chainID)||!f&&0k&&a==this.chainToUpper(k))for(var n=x.groups,x=x.groupCount,q=0;0<=q;)q=JM.ModelSet.selectSeqcodeRange(n,x,q,b,c,d)}return d},"~A");b.selectSeqcodeRange=c(b,"selectSeqcodeRange",function(a,d,b,c,f,e){var h,k,j,x=!1;for(k=b;kc&&h-ca?this.getAtomsWithin(a,this.at[j].getFractionalUnitCoordPt(b,!0,k),e,x):(this.setIteratorForAtom(h,x,j,a,c),h.addAtoms(e))}else{null==f&&e.or(d);for(j=d.nextSetBit(0);0<=j;j=d.nextSetBit(j+1))0>a?this.getAtomsWithin(a,this.at[j],e,this.at[j].mi): +(this.setIteratorForAtom(h,-1,j,a,c),h.addAtoms(e))}h.release();return e},"~N,JU.BS,~B,J.atomdata.RadiusData,JU.BS");c(b,"getAtomsWithin",function(a,d,b,c){null==b&&(b=new JU.BS);if(0>a){a=-a;for(var f=this.ac;0<=--f;){var e=this.at[f];JM.AtomCollection.isDeleted(e)||0<=c&&e.mi!=c||!b.get(f)&&e.getFractionalUnitDistance(d,this.ptTemp1,this.ptTemp2)<=a&&b.set(e.i)}return b}for(var e=this.getSelectedAtomIterator(null,!1,!1,!1,!1),h=0<=c?JU.BSUtil.newAndSetBit(c):this.getIterativeModels(!0),k=h.nextSetBit(0);0<= +k;k=h.nextSetBit(k+1))f=this.am[k].bsAtoms.nextSetBit(0),0>f||(this.setIteratorForAtom(e,c,f,-1,null),e.setCenter(d,a),e.addAtoms(b));e.release();return b},"~N,JU.T3,JU.BS,~N");c(b,"deleteBonds",function(a,d){if(!d)for(var b=new JU.BS,c=new JU.BS,f=a.nextSetBit(0);0<=f;f=a.nextSetBit(f+1)){var e=this.bo[f].atom1;this.am[e.mi].isModelKit||(b.clearAll(),c.clearAll(),b.set(e.i),c.set(this.bo[f].getAtomIndex2()),this.addStateScript("connect ",null,b,c,"delete",!1,!0))}this.dBb(a,d)},"JU.BS,~B");c(b,"makeConnections2", +function(a,d,b,c,f,e,h,k,j,x,n){null==h&&(h=new JU.BS);var q=65535==b,y=131071==b,s=65537==b;y&&(b=1);var p=JU.Edge.isOrderH(b),r=!1,u=!1,v=!1,w=!1;switch(c){case 12291:return this.deleteConnections(a,d,b,f,e,k,y);case 603979872:case 1073741852:if(515!=b){if(k){a=f;f=new JU.BS;e=new JU.BS;for(var z=a.nextSetBit(0);0<=z;z=a.nextSetBit(z+1))f.set(this.bo[z].atom1.i),e.set(this.bo[z].atom2.i)}return E(-1,[p?this.autoHbond(f,e,!1):this.autoBondBs4(f,e,null,h,this.vwr.getMadBond(),603979872==c,n),0])}u= +w=!0;break;case 1086324745:r=u=!0;break;case 1073742025:u=!0;break;case 1073741904:v=!0}c=!r&&!q;this.defaultCovalentMad=this.vwr.getMadBond();n=0>a;var y=0>d,A=n||y,B=!k||0.1!=a||1E8!=d;B&&(a=this.fixD(a,n),d=this.fixD(d,y));var C=this.getDefaultMadFromOrder(b),D=0,H=0,I=null,K=null,L=null,O="\x00",P=b|131072,Q=65535!=b&&0!=(b&512);try{for(z=f.nextSetBit(0);0<=z;z=f.nextSetBit(z+1)){if(k)I=this.bo[z],K=I.atom1,L=I.atom2;else{K=this.at[z];if(K.isDeleted())continue;O=this.isModulated(z)?"\x00":K.altloc}for(var R= +k?0:e.nextSetBit(0);0<=R;R=e.nextSetBit(R+1)){if(k)R=2147483646;else{if(R==z)continue;L=this.at[R];if(null==L||K.mi!=L.mi||L.isDeleted())continue;if("\x00"!=O&&O!=L.altloc&&"\x00"!=L.altloc)continue;I=K.getBond(L)}if(!(null==I?u:v)&&!(B&&!this.isInRange(K,L,a,d,n,y,A)||Q&&null!=I&&!this.allowAromaticBond(I)))if(null==I)h.set(this.bondAtoms(K,L,b,C,h,x,j,!0).index),D++;else if(c&&(I.setOrder(b),s&&(this.haveAtropicBonds=!0,I.setAtropisomerOptions()),this.bsAromatic.clear(I.index)),q||b==I.order||P== +I.order||p&&I.isHydrogen())h.set(I.index),H++}}}catch(T){if(!F(T,Exception))throw T;}w&&this.assignAromaticBondsBs(!0,h);r||this.sm.setShapeSizeBs(1,-2147483648,null,h);return E(-1,[D,H])},"~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N,JU.SB");c(b,"autoBondBs4",function(a,d,b,c,f,e,h){if(e)return this.autoBond_Pre_11_9_24(a,d,b,c,f);if(0==this.ac)return 0;0==f&&(f=1);1.4E-45==this.maxBondingRadius&&this.findMaxRadii();e=this.vwr.getFloat(570425348);var k=this.vwr.getFloat(570425364),k=k*k,j=0;this.showRebondTimes&& +JU.Logger.startTimer("autobond");var x=-1,n=null==a,q,y;n?(y=0,q=null):(a.equals(d)?q=a:(q=JU.BSUtil.copy(a),q.or(d)),y=q.nextSetBit(0));for(var s=this.getSelectedAtomIterator(null,!1,!1,!0,!1),p=!1;0<=y&&ythis.occupancies[y]!=50>this.occupancies[D]||A&&Math.signum(C.getFormalCharge())==z)||(E=this.isBondable(w,C.getBondingRadius(),s.foundDistance2(),k,e)?1:0,0e&&0>h||0j||r&&e.get(v.i)||p.isBonded(v)))if(this.v1.sub2(p,v),null!=(s=JM.ModelSet.checkMinAttachedAngle(p,x,this.v1,this.v2,b)))if(this.v1.scale(-1),null!=(y=JM.ModelSet.checkMinAttachedAngle(v,x,this.v1,this.v2,b))){var w=0,z;u&&!Float.isNaN(y.x)&&!Float.isNaN(s.x)? +(z=4096,w=JM.HBond.calcEnergy(Math.sqrt(q),y.distance(p),y.distance(s),v.distance(s))/1E3):z=2048;c.set(this.addHBond(p,v,z,w));n++}}}d.release();this.sm.setShapeSizeBs(1,-2147483648,null,c);this.showRebondTimes&&JU.Logger.checkTimer("hbond",!1);return b?n:-n},"JU.BS,JU.BS,~B");b.checkMinAttachedAngle=c(b,"checkMinAttachedAngle",function(a,d,b,c,f){var e=a.bonds,h=!0,k=null;if(null!=e&&0\n');if(null!=this.modelSetProperties){for(var d=this.modelSetProperties.propertyNames();d.hasMoreElements();){var b=d.nextElement();a.append('\n ');a.append("\n");return a.toString()});c(b,"getSymmetryInfoAsString",function(){for(var a=(new JU.SB).append("Symmetry Information:"),d=0;d=this.at.length&&this.growAtomArrays(this.ac+100);this.at[this.ac]=k;this.setBFactor(this.ac,r,!1);this.setOccupancy(this.ac,p,!1);this.setPartialCharge(this.ac,y,!1);null!=u&&this.setAtomTensors(this.ac,u);k.group=d;k.colixAtom=this.vwr.cm.getColixAtomPalette(k,J.c.PAL.CPK.id);null!=c&&(null!=f&&(null==this.atomTypes&& +(this.atomTypes=Array(this.at.length)),this.atomTypes[this.ac]=f),k.atomID=w,0==w&&(null==this.atomNames&&(this.atomNames=Array(this.at.length)),this.atomNames[this.ac]=c.intern()));-2147483648!=e&&(null==this.atomSerials&&(this.atomSerials=E(this.at.length,0)),this.atomSerials[this.ac]=e);0!=h&&(null==this.atomSeqIDs&&(this.atomSeqIDs=E(this.at.length,0)),this.atomSeqIDs[this.ac]=h);null!=n&&this.setVibrationVector(this.ac,n);Float.isNaN(A)||this.setBondingRadius(this.ac,A);this.ac++;return k},"~N,JM.Group,~N,~S,~S,~N,~N,~N,JU.P3,~N,JU.V3,~N,~N,~N,~N,JU.Lst,~B,~N,JU.BS,~N"); +c(b,"getInlineData",function(a){var d=null;if(0<=a)d=this.am[a].loadScript;else for(a=this.mc;0<=--a&&!(0<(d=this.am[a].loadScript).length()););a=d.lastIndexOf('data "');if(0>a)return d=JU.PT.getQuotedStringAt(d.toString(),0),JS.ScriptCompiler.unescapeString(d,0,d.length);a=d.indexOf2('"',a+7);var b=d.lastIndexOf('end "');return ba?null:d.substring2(a+2,b)},"~N");c(b,"isAtomPDB",function(a){return 0<=a&&this.am[this.at[a].mi].isBioModel},"~N");c(b,"setAtomNamesAndNumbers",function(a,d,b,c){var f= +-1;if(c){for(;a=this.ac)return;f=this.at[a].mi;a=this.am[f].firstAtomIndex}null==this.atomSerials&&(this.atomSerials=E(this.ac,0));null==this.atomNames&&(this.atomNames=Array(this.ac));for(var e=this.isXYZ&&this.vwr.getBoolean(603979978),h=2147483647,k=1;a=-d){if(0==x||c)this.atomSerials[a]= +ak&&(k=x),c&&(this.atomNames[a]=(j.getElementSymbol()+x).intern());(!this.am[h].isModelKit||0c.length)){var f=D(c[0]),e=0>f;e&&(f=-1-f);var h=D(c[1]);if(!(0>h||f>=this.ac||h>=this.ac)){var k=2k&&(k&=65535);var j=3k;)if(c=this.at[a[k]],f=this.at[a[j]],c.isBonded(f))for(var x=b;0<=--x;)if(x!=k&&x!=j&&(e=this.at[a[x]]).isBonded(c))for(var n=b;0<=--n;)if(n!=k&&n!=j&&n!=x&&(h=this.at[a[n]]).isBonded(f)){var q=E(4,0);q[0]=e.i;q[1]=c.i;q[2]=f.i;q[3]=h.i;d.addLast(q)}b=d.size();a=JU.AU.newInt2(b);for(k=b;0<=--k;)a[b-k-1]=d.get(k);return a},"~A");c(b,"setModulation",function(a,d,b,c){if(null==this.bsModulated)if(d)this.bsModulated=new JU.BS;else if(null== +a)return;null==a&&(a=this.getModelAtomBitSetIncludingDeleted(-1,!1));for(var f=this.vwr.getFloat(1275072532),e=!1,h=a.nextSetBit(0);0<=h;h=a.nextSetBit(h+1)){var k=this.getModulation(h);null!=k&&(k.setModTQ(this.at[h],d,b,c,f),null!=this.bsModulated&&this.bsModulated.setBitTo(h,d),e=!0)}e||(this.bsModulated=null)},"JU.BS,~B,JU.P3,~B");c(b,"getBoundBoxOrientation",function(a,d,b){var c=0,f=0,e=0,h=null,k=null,j=d.nextSetBit(0),x=0;if(0<=j){if(null==this.vOrientations){for(var n=0,h=new JU.P4,x=Array(3375), +c=-7;7>=c;c++)for(f=-7;7>=f;f++)for(e=0;14>=e;e++,n++)1<(x[n]=JU.V3.new3(c/7,f/7,e/14)).length()&&--n;this.vOrientations=Array(n);for(c=n;0<=--c;)h.set4(x[c].x,x[c].y,x[c].z,0),this.vOrientations[c]=JU.Quat.newP4(h);for(c=n;0<=--c;)n=Math.sqrt(1-x[c].lengthSquared()),Float.isNaN(n)&&(n=0),h.set4(x[c].x,x[c].y,x[c].z,n),this.vOrientations[c]=JU.Quat.newP4(h)}var n=new JU.P3,x=3.4028235E38,e=null,q=new JU.BoxInfo;q.setMargin(1312817669==a?0:0.1);for(c=this.vOrientations.length;0<=--c;){h=this.vOrientations[c]; +q.reset();if(null==b)for(f=j;0<=f;f=d.nextSetBit(f+1)){var p=h.transform2(this.at[f],n);q.addBoundBoxPoint(p)}else for(f=b.length;0<=--f;)q.addBoundBoxPoint(h.transform2(b[f],n));switch(a){default:case 1312817669:case 1073741864:case 1814695966:f=(q.bbCorner1.x-q.bbCorner0.x)*(q.bbCorner1.y-q.bbCorner0.y)*(q.bbCorner1.z-q.bbCorner0.z);break;case 1111492629:f=q.bbCorner1.x-q.bbCorner0.x;break;case 1111492630:f=q.bbCorner1.y-q.bbCorner0.y;break;case 1111492631:f=q.bbCorner1.z-q.bbCorner0.z}fc;c++)k.transform2(a[c],a[c]),0c&&(n.set(0,1,0),h=JU.Quat.newVA(n,90).mulQ(h),k=c,c=e,e=k),n.set(1, +0,0),h=JU.Quat.newVA(n,90).mulQ(h),k=f,f=e,e=k)}}return 1312817669==a?x+"\t{"+c+" "+f+" "+e+"}\t"+d:1814695966==a?null:null==h||0==h.getTheta()?new JU.Quat:h},"~N,JU.BS,~A");c(b,"getUnitCellForAtom",function(a){if(0>a||a>this.ac||null==this.at[a])return null;if(null!=this.bsModulated){var d=this.getModulation(a),d=null==d?null:d.getSubSystemUnitCell();if(null!=d)return d}return this.getUnitCell(this.at[a].mi)},"~N");c(b,"clearCache",function(){for(var a=this.mc;0<=--a;)this.am[a].resetDSSR(!1)}); +c(b,"getSymMatrices",function(a){var d=this.getModelSymmetryCount(a);if(0==d)return null;var b=Array(d),c=this.am[a].biosymmetry;null==c&&(c=this.getUnitCell(a));for(a=d;0<=--a;)b[a]=c.getSpaceGroupOperation(a);return b},"~N");c(b,"getSymmetryInvariant",function(a){a=this.getBasisAtom(a,!0);return null==a?E(0,0):this.getUnitCellForAtom(a.i).getInvariantSymops(a,null)},"~N");c(b,"getBsBranches",function(a){for(var d=B(a.length/6),b=Array(d),c=new java.util.Hashtable,f=0,e=0;fMath.abs(a[e+ +5]-a[e+4]))){var h=D(a[e+1]),k=D(a[e+2]),j=""+h+"_"+k;if(!c.containsKey(j)){c.put(j,Boolean.TRUE);for(var j=this.vwr.getBranchBitSet(k,h,!0),x=this.at[h].bonds,h=this.at[h],n=0;nk.nextSetBit(0)))if(d>h.altLocCount)1==d&&f.or(k);else{if(this.am[e].isBioModel){if(-1E3>d){var h=1E3+d,j=this.getAltLocListInModel(e);-32!=h&&0>j.indexOf(String.fromCharCode(-h))&&(h=-2147483648)}else 0> +d?(j=this.getAltLocListInModel(e),h=-1-d,h=h>=j.length?-2147483648:-j.charAt(h).charCodeAt(0)):h=d;if(-2147483648==h)continue;this.am[e].getConformation(h,b,k,f)}else{var x=this.getAltLocCountInModel(e),j=this.getAltLocListInModel(e),n=new JU.BS;if(-1E3>d)var q=String.fromCharCode(-1E3-d),h=j.indexOf(q);else h=Math.abs(d)-1;if(0>h||h>=x)continue;for(q=x;0<=--q;)q!=h&&k.andNot(this.getAtomBitsMDa(1073742355,j.substring(q,q+1),n))}f.or(k)}}return f},"~N,~N,~B,JU.BS");c(b,"getSequenceBits",function(a, +d,b){return this.haveBioModels?this.bioModelset.getAllSequenceBits(a,d,b):b},"~S,JU.BS,JU.BS");c(b,"getBioPolymerCountInModel",function(a){return this.haveBioModels?this.bioModelset.getBioPolymerCountInModel(a):0},"~N");c(b,"getPolymerPointsAndVectors",function(a,d,b,c){this.haveBioModels&&this.bioModelset.getAllPolymerPointsAndVectors(a,d,b,c)},"JU.BS,JU.Lst,~B,~N");c(b,"recalculateLeadMidpointsAndWingVectors",function(a){this.haveBioModels&&this.bioModelset.recalculatePoints(a)},"~N");c(b,"calcRasmolHydrogenBonds", +function(a,d,b,c,f,e,h){this.haveBioModels&&this.bioModelset.calcAllRasmolHydrogenBonds(a,d,b,c,f,e,h,2)},"JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS");c(b,"calculateStraightnessAll",function(){this.haveBioModels&&!this.haveStraightness&&this.bioModelset.calculateStraightnessAll()});c(b,"calculateStruts",function(a,d){return this.haveBioModels?this.bioModelset.calculateStruts(a,d):0},"JU.BS,JU.BS");c(b,"getGroupsWithin",function(a,d){return this.haveBioModels?this.bioModelset.getGroupsWithinAll(a,d):new JU.BS}, +"~N,JU.BS");c(b,"getProteinStructureState",function(a,d){return this.haveBioModels?this.bioModelset.getFullProteinStructureState(a,d):""},"JU.BS,~N");c(b,"calculateStructures",function(a,d,b,c,f,e){return this.haveBioModels?this.bioModelset.calculateAllStuctures(a,d,b,c,f,e):""},"JU.BS,~B,~B,~B,~B,~N");c(b,"calculateStructuresAllExcept",function(a,d,b,c,f,e,h){this.freezeModels();return this.haveBioModels?this.bioModelset.calculateAllStructuresExcept(a,d,b,c,f,e,h):""},"JU.BS,~B,~B,~B,~B,~B,~N"); +c(b,"recalculatePolymers",function(a){this.bioModelset.recalculateAllPolymers(a,this.getGroups())},"JU.BS");c(b,"calculatePolymers",function(a,d,b,c){null!=this.bioModelset&&this.bioModelset.calculateAllPolymers(a,d,b,c)},"~A,~N,~N,JU.BS");c(b,"calcSelectedMonomersCount",function(){this.haveBioModels&&this.bioModelset.calcSelectedMonomersCount()});c(b,"setProteinType",function(a,d){this.haveBioModels&&this.bioModelset.setAllProteinType(a,d)},"JU.BS,J.c.STR");c(b,"setStructureList",function(a){this.haveBioModels&& +this.bioModelset.setAllStructureList(a)},"java.util.Map");c(b,"setConformation",function(a){this.haveBioModels&&this.bioModelset.setAllConformation(a);return JU.BSUtil.copy(a)},"JU.BS");c(b,"getHeteroList",function(a){a=this.haveBioModels?this.bioModelset.getAllHeteroList(a):null;return null==a?this.getInfoM("hetNames"):a},"~N");c(b,"getUnitCellPointsWithin",function(a,d,b,c){var f=new JU.Lst,e=null,h=null;c&&(e=new java.util.Hashtable,h=new JU.Lst,e.put("atoms",h),e.put("points",f));var k=null== +d?-1:d.nextSetBit(0);d=this.vwr.getModelUndeletedAtomsBitSet(0>k?this.vwr.am.cmi:this.at[k].mi);0>k&&(k=d.nextSetBit(0));if(0<=k){var j=this.getUnitCellForAtom(k);if(null!=j){d=j.getIterator(this.vwr,this.at[k],d,a);for(null!=b&&d.setCenter(b,a);d.hasNext();)k=d.next(),b=d.getPosition(),f.addLast(b),c&&h.addLast(Integer.$valueOf(k))}}return c?e:f},"~N,JU.BS,JU.P3,~B");c(b,"calculateDssrProperty",function(a){if(null!=a){if(null==this.dssrData||this.dssrData.lengthp.distanceSquared(n)){this.setSite(v,s,!0);h.clear(k);b.clear(k);continue a}}}}h.isEmpty()||System.err.println("Model basis atoms not found for "+h);e&&this.setAsymmetricUnit(a,null,b,!c)}}this.setInfo(a,"unitCellParams",d.getUnitCellParams());this.setInfo(a,"spaceGroupAssigned",Boolean.TRUE);this.setInfo(a,"spaceGroup",d.getClegId());this.setInfo(a,"spaceGroupInfo", +null);null!=this.am[a].simpleCage&&(d.getUnitCell(this.am[a].simpleCage.getUnitCellVectors(),!1,null),this.setInfo(a,"unitCellParams",d.getUnitCellParams()));this.setModelCage(a,null)},"~N,J.api.SymmetryInterface,JU.BS");c(b,"setAsymmetricUnit",function(a,d,b,c){null==d&&(d=this.vwr.getModelUndeletedAtomsBitSet(a));this.am[a].bsAsymmetricUnit=b;null==this.bsSymmetry&&(this.bsSymmetry=JU.BS.newN(this.ac));this.bsSymmetry.or(d);this.bsSymmetry.andNot(b);if(c){a=0;for(c=d.nextSetBit(0);0<=c;c=d.nextSetBit(c+ +1)){var f=b.get(c);this.at[c].setSymop(f?1:0,!1);f&&this.setSite(this.at[c],++a,!1)}d.andNot(b)}},"~N,JU.BS,JU.BS,~B");c(b,"setModelCage",function(a,d){0<=a&&a=c.length)continue;c[h]=++f;d.set(e)}this.setSite(this.at[e],-1,!1);this.setSite(this.at[e],c[h],!0)}null==this.bsSymmetry&&(this.bsSymmetry=JU.BS.newN(this.ac)); +this.bsSymmetry.or(a);this.bsSymmetry.andNot(d)}}},"~N");c(b,"getConnectingAtoms",function(a,d){for(var b=new JU.BS,c=new JU.BS,f=a.nextSetBit(0);0<=f;f=a.nextSetBit(f+1))for(var e=this.at[f],h=e.bonds,k=0,j=e.getBondCount();0<=--j;)if(h[j].isCovalent()&&!a.get(k=h[j].getOtherAtom(e).i))b.set(f),c.set(k);a.or(c);d.or(c);return b},"JU.BS,JU.BS");c(b,"saveAtomPositions",function(){for(var a=Array(this.at.length),d=a.length;0<=--d;){var b=this.at[d];JM.AtomCollection.isDeleted(b)||(a[d]=JU.P3.newP(b))}return a}); +c(b,"restoreAtomPositions",function(a){for(var d=a.length;0<=--d;){var b=this.at[d];JM.AtomCollection.isDeleted(b)||b.setT(a[d])}},"~A");c(b,"clearUnitCell",function(a){if(null!=this.unitCells){if(0>a)for(a=0;athis.modelIndex)return!0;JU.BSUtil.deleteBits(this.bsBonds, +d);JU.BSUtil.deleteBits(this.bsAtoms1,b);JU.BSUtil.deleteBits(this.bsAtoms2,b);return this.isValid()},"~N,JU.BS,JU.BS");c(b,"setModelIndex",function(a){this.modelIndex=a},"~N")});u("JM");O(JM,"Structure");u("JM");p=v(function(){this.id="";this.type=" ";this.scale=this.tickLabelFormats=this.ticks=null;this.first=0;this.signFactor=1;this.reference=null;r(this,arguments)},JM,"TickInfo",null);A(p,function(b){this.ticks=b},"JU.P3");u("JU");C(["JU.P3","$.V3"],"JU.BoxInfo",["java.util.Hashtable","JU.Measure", +"$.P4","JU.Point3fi"],function(){var b=v(function(){this.bbVertices=this.bbVector=this.bbCenter=this.bbCorner1=this.bbCorner0=null;this.isScaleSet=!1;this.margin=0;r(this,arguments)},JU,"BoxInfo",null);P(b,function(){this.bbCorner0=new JU.P3;this.bbCorner1=new JU.P3;this.bbCenter=new JU.P3;this.bbVector=new JU.V3;this.bbVertices=Array(8);for(var a=0;8>a;a++)JU.BoxInfo.unitBboxPoints[a]=JU.P3.new3(-1,-1,-1),JU.BoxInfo.unitBboxPoints[a].scaleAdd2(2,JU.BoxInfo.unitCubePoints[a],JU.BoxInfo.unitBboxPoints[a])}); +A(b,function(){for(var a=8;0<=--a;)this.bbVertices[a]=new JU.Point3fi;this.reset()});c(b,"reset",function(){this.isScaleSet=!1;this.bbCorner0.set(3.4028235E38,3.4028235E38,3.4028235E38);this.bbCorner1.set(-3.4028235E38,-3.4028235E38,-3.4028235E38)});b.scaleBox=c(b,"scaleBox",function(a,d){if(!(0==d||1==d)){for(var b=new JU.P3,c=new JU.V3,f=0;8>f;f++)b.add(a[f]);b.scale(0.125);for(f=0;8>f;f++)c.sub2(a[f],b),c.scale(d),a[f].add2(b,c)}},"~A,~N");b.getVerticesFromOABC=c(b,"getVerticesFromOABC",function(a){for(var d= +Array(8),b=0;7>=b;b++)d[b]=JU.P3.newP(a[0]),4==(b&4)&&d[b].add(a[1]),2==(b&2)&&d[b].add(a[2]),1==(b&1)&&d[b].add(a[3]);return d},"~A");b.getCanonicalCopy=c(b,"getCanonicalCopy",function(a,d){for(var b=Array(8),c=0;8>c;c++)b[JU.BoxInfo.toCanonical[c]]=JU.P3.newP(a[c]);JU.BoxInfo.scaleBox(b,d);return b},"~A,~N");b.toOABC=c(b,"toOABC",function(a,d){var b=JU.P3.newP(a[0]),c=JU.P3.newP(a[4]),f=JU.P3.newP(a[2]),e=JU.P3.newP(a[1]);c.sub(b);f.sub(b);e.sub(b);null!=d&&b.add(d);return w(-1,[b,c,f,e])},"~A,JU.T3"); +c(b,"getBoundBoxCenter",function(){this.isScaleSet||this.setBbcage(1);return this.bbCenter});c(b,"getBoundBoxCornerVector",function(){this.isScaleSet||this.setBbcage(1);return this.bbVector});c(b,"getBoundBoxPoints",function(a){this.isScaleSet||this.setBbcage(1);return a?w(-1,[this.bbCenter,JU.P3.newP(this.bbVector),this.bbCorner0,this.bbCorner1]):w(-1,[this.bbCorner0,this.bbCorner1])},"~B");c(b,"getBoundBoxVertices",function(){this.isScaleSet||this.setBbcage(1);return this.bbVertices});c(b,"setBoundBoxFromOABC", +function(a){for(var d=JU.P3.newP(a[0]),b=new JU.P3,c=0;4>c;c++)b.add(a[c]);this.setBoundBox(d,b,!0,1)},"~A");c(b,"setBoundBox",function(a,d,b,c){if(null!=a){if(0==c)return;if(b){if(0==a.distance(d))return;this.bbCorner0.set(Math.min(a.x,d.x),Math.min(a.y,d.y),Math.min(a.z,d.z));this.bbCorner1.set(Math.max(a.x,d.x),Math.max(a.y,d.y),Math.max(a.z,d.z))}else{if(0==d.x||0==d.y&&0==d.z)return;this.bbCorner0.set(a.x-d.x,a.y-d.y,a.z-d.z);this.bbCorner1.set(a.x+d.x,a.y+d.y,a.z+d.z)}}this.setBbcage(c)},"JU.T3,JU.T3,~B,~N"); +c(b,"setMargin",function(a){this.margin=a},"~N");c(b,"addBoundBoxPoint",function(a){this.isScaleSet=!1;JU.BoxInfo.addPoint(a,this.bbCorner0,this.bbCorner1,this.margin)},"JU.T3");b.addPoint=c(b,"addPoint",function(a,d,b,c){a.x-cb.x&&(b.x=a.x+c);a.y-cb.y&&(b.y=a.y+c);a.z-cb.z&&(b.z=a.z+c)},"JU.T3,JU.T3,JU.T3,~N");b.addPointXYZ=c(b,"addPointXYZ",function(a,d,b,c,f,e){a-ef.x&&(f.x=a+e);d-ef.y&& +(f.y=d+e);b-ef.z&&(f.z=b+e)},"~N,~N,~N,JU.P3,JU.P3,~N");c(b,"setBbcage",function(a){this.isScaleSet=!0;this.bbCenter.add2(this.bbCorner0,this.bbCorner1);this.bbCenter.scale(0.5);this.bbVector.sub2(this.bbCorner1,this.bbCenter);0=this.bbCorner0.x&&a.x<=this.bbCorner1.x&&a.y>=this.bbCorner0.y&&a.y<=this.bbCorner1.y&&a.z>=this.bbCorner0.z&&a.z<=this.bbCorner1.z},"JU.P3");c(b,"getMaxDim",function(){return 2*this.bbVector.length()});c(b,"getInfo",function(a){var d=Double.$valueOf(Math.abs(8*this.bbVector.x*this.bbVector.y*this.bbVector.z));if("volume".equals(a))return d; +var b=JU.P3.newP(this.bbCenter);return"center".equals(a)?b:null==a||"info".equals(a)?(a=new java.util.Hashtable,a.put("center",b),b=JU.V3.newVsub(this.bbCorner1,this.bbCorner0),a.put("dimensions",b),a.put("girth",Double.$valueOf(b.x+b.y+b.z)),a.put("area",Double.$valueOf(2*(b.x*b.y+b.x*b.z+b.z*b.y))),a.put("volume",d),a):null},"~S");j(b,"toString",function(){return""+this.bbCorner0+this.bbCorner1});b.getBoxFacesFromOABC=c(b,"getBoxFacesFromOABC",function(a){var d=Array(6),b=new JU.V3,c=new JU.V3, +f=new JU.P3,e=new JU.P3,h=new JU.P3;a=null==a?JU.BoxInfo.unitCubePoints:JU.BoxInfo.getVerticesFromOABC(a);for(var k=0;6>k;k++)f.setT(a[JU.BoxInfo.facePoints[k][0]]),e.setT(a[JU.BoxInfo.facePoints[k][1]]),h.setT(a[JU.BoxInfo.facePoints[k][2]]),d[k]=JU.Measure.getPlaneThroughPoints(f,e,h,b,c,new JU.P4);return d},"~A");b.bbcageTickEdges=T(-1,"z\x00\x00yx\x00\x00\x00\x00\x00\x00\x00".split(""));b.uccageTickEdges=T(-1,"zyx\x00\x00\x00\x00\x00\x00\x00\x00\x00".split(""));b.edges=Q(-1,[0,1,0,2,0,4,1,3,1, +5,2,3,2,6,3,7,4,5,4,6,5,7,6,7]);b.faceOrder=E(-1,[0,3,5,2,1,4]);b.facePoints=w(-1,[E(-1,[4,0,6]),E(-1,[4,6,5]),E(-1,[5,7,1]),E(-1,[1,3,0]),E(-1,[6,2,7]),E(-1,[1,0,5]),E(-1,[0,2,6]),E(-1,[6,7,5]),E(-1,[7,3,1]),E(-1,[3,2,0]),E(-1,[2,3,7]),E(-1,[0,4,5])]);b.unitCubePoints=w(-1,[JU.P3.new3(0,0,0),JU.P3.new3(0,0,1),JU.P3.new3(0,1,0),JU.P3.new3(0,1,1),JU.P3.new3(1,0,0),JU.P3.new3(1,0,1),JU.P3.new3(1,1,0),JU.P3.new3(1,1,1)]);b.toCanonical=E(-1,[0,3,4,7,1,2,5,6]);b.unitBboxPoints=Array(8)});u("JU");C(["JU.BS"], +"JU.BSUtil",null,function(){var b=H(JU,"BSUtil",null);b.newAndSetBit=c(b,"newAndSetBit",function(a){var d=JU.BS.newN(a+1);d.set(a);return d},"~N");b.areEqual=c(b,"areEqual",function(a,d){return null==a||null==d?null==a&&null==d:a.equals(d)},"JU.BS,JU.BS");b.haveCommon=c(b,"haveCommon",function(a,d){return null==a||null==d?!1:a.intersects(d)},"JU.BS,JU.BS");b.cardinalityOf=c(b,"cardinalityOf",function(a){return null==a?0:a.cardinality()},"JU.BS");b.newBitSet2=c(b,"newBitSet2",function(a,d){var b=JU.BS.newN(d); +b.setBits(a,d);return b},"~N,~N");b.setAll=c(b,"setAll",function(a){var d=JU.BS.newN(a);d.setBits(0,a);return d},"~N");b.andNot=c(b,"andNot",function(a,d){null!=d&&null!=a&&a.andNot(d);return a},"JU.BS,JU.BS");b.copy=c(b,"copy",function(a){return null==a?null:a.clone()},"JU.BS");b.copy2=c(b,"copy2",function(a,d){if(null==a||null==d)return null;d.clearAll();d.or(a);return d},"JU.BS,JU.BS");b.copyInvert=c(b,"copyInvert",function(a,d){return null==a?null:JU.BSUtil.andNot(JU.BSUtil.setAll(d),a)},"JU.BS,~N"); +b.invertInPlace=c(b,"invertInPlace",function(a,d){return JU.BSUtil.copy2(JU.BSUtil.copyInvert(a,d),a)},"JU.BS,~N");b.toggleInPlace=c(b,"toggleInPlace",function(a,d){a.equals(d)?a.clearAll():0==JU.BSUtil.andNot(JU.BSUtil.copy(d),a).length()?JU.BSUtil.andNot(a,d):a.or(d);return a},"JU.BS,JU.BS");b.deleteBits=c(b,"deleteBits",function(a,d){if(null==a||null==d)return a;var b=d.nextSetBit(0);if(0>b)return a;var c=a.length(),f=Math.min(c,d.length()),e;for(e=d.nextClearBit(b);e=d;f=a.nextSetBit(f+ +1))c.set(f+b);JU.BSUtil.copy2(c,a)}},"JU.BS,~N,~N");b.setMapBitSet=c(b,"setMapBitSet",function(a,d,b,c){var f;a.containsKey(c)?f=a.get(c):a.put(c,f=new JU.BS);f.setBits(d,b+1)},"java.util.Map,~N,~N,~S");b.emptySet=new JU.BS});u("JU");C(["JU.Int2IntHash"],"JU.C","JU.AU $.CU $.PT $.SB J.c.PAL JU.Escape $.Logger".split(" "),function(){var b=H(JU,"C",null);b.getColix=c(b,"getColix",function(a){if(0==a)return 0;a|=4278190080;var b=JU.C.colixHash.get(a);return(0=JU.C.argbs.length){var f=b?c+1:2*JU.C.colixMax;2048 +c?JU.C.colixMax++:JU.C.colixMax},"~N,~B");b.setLastGrey=c(b,"setLastGrey",function(a){JU.C.calcArgbsGreyscale();JU.C.argbsGreyscale[2047]=JU.CU.toFFGGGfromRGB(a)},"~N");b.calcArgbsGreyscale=c(b,"calcArgbsGreyscale",function(){if(null==JU.C.argbsGreyscale){for(var a=E(JU.C.argbs.length,0),b=JU.C.argbs.length;4<=--b;)a[b]=JU.CU.toFFGGGfromRGB(JU.C.argbs[b]);JU.C.argbsGreyscale=a}});b.getArgbGreyscale=c(b,"getArgbGreyscale",function(a){null==JU.C.argbsGreyscale&&JU.C.calcArgbsGreyscale();return JU.C.argbsGreyscale[a& +-30721]},"~N");b.getColixO=c(b,"getColixO",function(a){if(null==a)return 0;if(z(a,"J.c.PAL"))return a===J.c.PAL.NONE?0:2;if(z(a,Integer))return JU.C.getColix(a.intValue());if("string"==typeof a)return JU.C.getColixS(a);if(z(a,Byte))return 0==a.byteValue()?0:2;JU.Logger.debugging&&JU.Logger.debug("?? getColix("+a+")");return 22},"~O");b.getTranslucentFlag=c(b,"getTranslucentFlag",function(a){return 0==a?0:0>a?30720:Float.isNaN(a)||255<=a||1==a?16384:(B(Math.floor(1>a?256*a:15<=a?a:9>=a?B(Math.floor(a- +1))<<5:256))>>5&15)<<11},"~N");b.isColixLastAvailable=c(b,"isColixLastAvailable",function(a){return 0>11&15;switch(a){case 0:return 0;case 1:case 2:case 3:case 4:case 5:case 6:case 7:return a<< +5;case 15:return-1;default:return 255}},"~N");b.getColixS=c(b,"getColixS",function(a){var b=JU.CU.getArgbFromString(a);return 0!=b?JU.C.getColix(b):"none".equalsIgnoreCase(a)?0:"opaque".equalsIgnoreCase(a)?1:2},"~S");b.getColixArray=c(b,"getColixArray",function(a){if(null==a||0==a.length)return null;a=JU.PT.getTokens(a);for(var b=W(a.length,0),c=0;c>24&255;return 255==b?JU.C.getColix(a):JU.C.getColixTranslucent3(JU.C.getColix(a),!0,b/255)},"~N");b.getBgContrast=c(b,"getBgContrast",function(a){return 128>(JU.CU.toFFGGGfromRGB(a)&255)?8:4},"~N");b.colixMax=4;b.argbs=E(128,0);JU.C.argbs[3]= +-74566;b.argbsGreyscale=null;b.colixHash=new JU.Int2IntHash(256);for(var b=E(-1,[4278190080,4294944E3,4294951115,4278190335,4294967295,4278255615,4294901760,4278222848,4286611584,4290822336,4278255360,4286578688,4278190208,4286611456,4286578816,4278222976,4294902015,4294967040,4294928820,4294956800]),a=0;ad?d:-d;return-1},"~S");b.fixName=c(b,"fixName",function(a){if(a.equalsIgnoreCase("byelement"))return"byelement_jmol";var d=JU.ColorEncoder.getSchemeIndex(a);return 0<=d?JU.ColorEncoder.colorSchemes[d]:0<=a.indexOf("/")?a:a.toLowerCase()},"~S");c(b,"makeColorScheme",function(a,d,b){a=JU.ColorEncoder.fixName(a);if(null==d){this.schemes.remove(a);a=this.createColorScheme(a,!1,b);if(b)switch(a){case 2147483647:return 0; +case 12:this.paletteFriendly=this.getPaletteAC();break;case 10:this.paletteBW=this.getPaletteBW();break;case 11:this.paletteWB=this.getPaletteWB();break;case 0:case 1:this.argbsRoygb=JV.JC.argbsRoygbScale;break;case 6:case 7:this.argbsRwb=JV.JC.argbsRwbScale;break;case 2:this.argbsCpk=J.c.PAL.argbsCpk;break;case 3:JU.ColorEncoder.getRasmolScale();break;case 17:this.getNucleic();break;case 5:this.getAmino();break;case 4:this.getShapely()}return a}this.schemes.put(a,d);this.setThisScheme(a,d);a=this.createColorScheme(a, +!1,b);if(b)switch(a){case 10:this.paletteBW=this.thisScale;break;case 11:this.paletteWB=this.thisScale;break;case 0:case 1:this.argbsRoygb=this.thisScale;this.ihalf=B(this.argbsRoygb.length/3);break;case 6:case 7:this.argbsRwb=this.thisScale;break;case 2:this.argbsCpk=this.thisScale;break;case 5:this.argbsAmino=this.thisScale;break;case 17:this.argbsNucleic=this.thisScale;break;case 4:this.argbsShapely=this.thisScale}return-1},"~S,~A,~B");c(b,"getShapely",function(){return null==this.argbsShapely? +this.argbsShapely=this.vwr.getJBR().getArgbs(1073742144):this.argbsShapely});c(b,"getAmino",function(){return null==this.argbsAmino?this.argbsAmino=this.vwr.getJBR().getArgbs(2097154):this.argbsAmino});c(b,"getNucleic",function(){return null==this.argbsNucleic?this.argbsNucleic=this.vwr.getJBR().getArgbs(2097166):this.argbsNucleic});c(b,"createColorScheme",function(a,d,b){if(a.equalsIgnoreCase("inherit"))return 15;var c=a.lastIndexOf("="),f=a.indexOf("/"),e=Math.max(c,a.indexOf("[")),c=JU.ColorEncoder.fixName(a), +h=JU.ColorEncoder.getSchemeIndex(c);if(-1==h&&(0>e||0b.indexOf("/")){0>b.indexOf(".")&&(b+=".lut.txt");var j=Array(1);try{JU.Logger.info("ColorEncoder opening colorschemes/"+b),JU.Rdr.readAllAsString(JV.FileManager.getBufferedReaderForResource(this.vwr,new JU.C,"JU/","colorschemes/"+b),-1,!1,j,0)}catch(x){if(F(x,"java.io.IOException")){JU.Logger.info("ColorEncoder "+x);break}else throw x; +}b=j[0]}else{b=JU.PT.rep(b," ","%20");JU.Logger.info("ColorEncoder opening "+b);var n=this.vwr.fm.getFileAsBytes(b,null);if("string"==typeof n){JU.Logger.info("ColorEncoder "+n);break}c=n;JU.Logger.info("ColorEncoder read "+c.length+" bytes");var j=0,q=c.length;if(800==q||802==q)j=32;if(768==q-j||770==q-j)for(var f=E(256,0),q=256+j,p=0;256>p;p++)f[p]=JU.CU.rgb(c[p+j]&255,c[p+j+256]&255,c[p+j+512]&255);else b=String.instantialize(c)}if(null==f)for(var s=JU.PT.split(b.trim(),"\n"),q=s.length,f=E(q, +0),r=0s[0].indexOf("."),p=0;pu.length){f=null;break}var v=u.length;f[p]=r?JU.CU.rgb(JU.PT.parseInt(u[v-3]),JU.PT.parseInt(u[v-2]),JU.PT.parseInt(u[v-1])):JU.CU.colorTriadToFFRGB(JU.PT.parseFloat(u[v-3]),JU.PT.parseFloat(u[v-2]),JU.PT.parseFloat(u[v-1]))}if(null!=f&&k){p=0;q=f.length-1;for(k=q+1>>1;pe+1&&!a.contains("[")&&(a="["+a.substring(e+1).trim()+"]",a=JU.PT.rep(a.$replace("\n"," ")," "," "),a=JU.PT.rep(a,", ",",").$replace(" ",","),a=JU.PT.rep(a,",","]["));for(e=-1;0<=(e=a.indexOf("[",e+1));)q++;if(0==q)return this.makeColorScheme(c,null,b);f=E(q,0);for(q=0;0<=(e=a.indexOf("[",e+1));){p=a.indexOf("]",e);0>p&&(p=a.length- +1);w=JU.CU.getArgbFromString(a.substring(e,p+1));0==w&&(w=JU.CU.getArgbFromString(a.substring(e+1,p).trim()));if(0==w)return JU.Logger.error("error in color value: "+a.substring(e,p+1)),0;f[q++]=w}return c.equals("user")?(this.setUserScale(f),-13):this.makeColorScheme(c,f,b)}f=this.schemes.get(c);return null!=f?(this.setThisScheme(c,f),h):-1!=h?h:d?0:2147483647},"~S,~B,~B");c(b,"setUserScale",function(a){this.ce.userScale=a;this.makeColorScheme("user",a,!1)},"~A");c(b,"getColorSchemeArray",function(a){switch(a){case -1:return this.thisScale; +case 0:return this.ce.argbsRoygb;case 1:return JU.AU.arrayCopyRangeRevI(this.ce.argbsRoygb,0,-1);case 8:return JU.AU.arrayCopyRangeI(this.ce.argbsRoygb,0,this.ce.ihalf);case 9:var d=JU.AU.arrayCopyRangeI(this.ce.argbsRoygb,this.ce.argbsRoygb.length-2*this.ce.ihalf,-1);a=E(this.ce.ihalf,0);for(var b=a.length,c=d.length;0<=--b&&0<=--c;)a[b]=d[c--];return a;case 12:return this.getPaletteAC();case 10:return this.getPaletteBW();case 11:return this.getPaletteWB();case 6:return this.ce.argbsRwb;case 7:return JU.AU.arrayCopyRangeRevI(this.ce.argbsRwb, +0,-1);case 2:return this.ce.argbsCpk;case 3:return JU.ColorEncoder.getRasmolScale();case 4:return this.ce.getShapely();case 17:return this.ce.getNucleic();case 5:return this.ce.getAmino();case -13:return this.ce.userScale;case -14:return JU.AU.arrayCopyRangeRevI(this.ce.userScale,0,-1);default:return null}},"~N");c(b,"getColorIndexFromPalette",function(a,d,b,c,f){c=JU.C.getColix(this.getArgbFromPalette(a,d,b,c));f&&(a=(b-a)/(b-d),1a&&(a=0.125),c=JU.C.getColixTranslucent3(c,!0,a));return c}, +"~N,~N,~N,~N,~B");c(b,"getPaletteColorCount",function(a){switch(a){case -1:return this.thisScale.length;case 10:case 11:return this.getPaletteBW().length;case 0:case 1:return this.ce.argbsRoygb.length;case 8:case 9:return this.ce.ihalf;case 6:case 7:return this.ce.argbsRwb.length;case -13:case -14:return this.ce.userScale.length;case 2:return this.ce.argbsCpk.length;case 3:return JU.ColorEncoder.getRasmolScale().length;case 4:return this.ce.getShapely().length;case 17:return this.ce.getNucleic().length; +case 5:return this.ce.getAmino().length;case 12:return this.getPaletteAC().length;default:return 0}},"~N");c(b,"getArgbFromPalette",function(a,d,b,c){if(Float.isNaN(a))return-8355712;var f=this.getPaletteColorCount(c);switch(c){case -1:return this.isColorIndex&&(d=0,b=this.thisScale.length),this.thisScale[JU.ColorEncoder.quantize4(a,d,b,f)];case 10:return this.getPaletteBW()[JU.ColorEncoder.quantize4(a,d,b,f)];case 11:return this.getPaletteWB()[JU.ColorEncoder.quantize4(a,d,b,f)];case 0:return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(a, +d,b,f)];case 1:return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(-a,-b,-d,f)];case 8:return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(a,d,b,f)];case 9:return this.ce.argbsRoygb[this.ce.ihalf+2*JU.ColorEncoder.quantize4(a,d,b,f)];case 6:return this.ce.argbsRwb[JU.ColorEncoder.quantize4(a,d,b,f)];case 7:return this.ce.argbsRwb[JU.ColorEncoder.quantize4(-a,-b,-d,f)];case -13:return 0==this.ce.userScale.length?-8355712:this.ce.userScale[JU.ColorEncoder.quantize4(a,d,b,f)];case -14:return 0==this.ce.userScale.length? +-8355712:this.ce.userScale[JU.ColorEncoder.quantize4(-a,-b,-d,f)];case 2:return this.ce.argbsCpk[JU.ColorEncoder.colorIndex(a,f)];case 3:return JU.ColorEncoder.getRasmolScale()[JU.ColorEncoder.colorIndex(a,f)];case 4:return this.ce.getShapely()[JU.ColorEncoder.colorIndex(a,f)];case 5:return this.ce.getAmino()[JU.ColorEncoder.colorIndex(a,f)];case 17:return this.ce.getNucleic()[JU.ColorEncoder.colorIndex(a-24+2,f)];case 12:return this.getPaletteAC()[JU.ColorEncoder.colorIndexRepeat(a,f)];default:return-8355712}}, +"~N,~N,~N,~N");c(b,"setThisScheme",function(a,d){this.thisName=a;this.thisScale=d;a.equals("user")&&(this.userScale=d);this.isColorIndex=0==a.indexOf("byelement")||0==a.indexOf("byresidue")},"~S,~A");c(b,"getArgb",function(a){return this.isReversed?this.getArgbFromPalette(-a,-this.hi,-this.lo,this.currentPalette):this.getArgbFromPalette(a,this.lo,this.hi,this.currentPalette)},"~N");c(b,"getArgbMinMax",function(a,d,b){return this.isReversed?this.getArgbFromPalette(-a,-b,-d,this.currentPalette):this.getArgbFromPalette(a, +d,b,this.currentPalette)},"~N,~N,~N");c(b,"getColorIndex",function(a){return this.isReversed?this.getColorIndexFromPalette(-a,-this.hi,-this.lo,this.currentPalette,this.isTranslucent):this.getColorIndexFromPalette(a,this.lo,this.hi,this.currentPalette,this.isTranslucent)},"~N");c(b,"getColorKey",function(){for(var a=new java.util.Hashtable,d=this.getPaletteColorCount(this.currentPalette),b=new JU.Lst,c=K(d+1,0),f=(this.hi-this.lo)/d,e=f*(this.isReversed?-0.5:0.5),h=0;hthis.currentPalette?JU.ColorEncoder.getColorSchemeList(this.getColorSchemeArray(this.currentPalette)): +this.getColorSchemeName(this.currentPalette))});c(b,"setColorScheme",function(a,d){this.isTranslucent=d;null!=a&&(this.currentPalette=this.createColorScheme(a,!0,!1))},"~S,~B");c(b,"setRange",function(a,d,b){3.4028235E38==d&&(a=1,d=this.getPaletteColorCount(this.currentPalette)+1);this.lo=Math.min(a,d);this.hi=Math.max(a,d);this.isReversed=b},"~N,~N,~B");c(b,"getCurrentColorSchemeName",function(){return this.getColorSchemeName(this.currentPalette)});c(b,"getColorSchemeName",function(a){var d=Math.abs(a); +return-1==a?this.thisName:d>24]=a|4278190080;return JU.ColorEncoder.rasmolScale});c(b,"getPaletteAC",function(){return null==this.ce.paletteFriendly?this.ce.paletteFriendly=E(-1,[8421504,1067945,11141282,13235712,16753152,2640510,8331387,10467374,12553008,339310,7209065,8626176,10906112,4488148,13907405,14219839,16759360,6984660,13918415,14809713, +16764019]):this.ce.paletteFriendly});c(b,"getPaletteWB",function(){if(null!=this.ce.paletteWB)return this.ce.paletteWB;for(var a=E(JV.JC.argbsRoygbScale.length,0),d=0;db&&(b=JV.JC.argbsRoygbScale.length);var c=E(b,0),f=K(3,0),e=K(3,0);JU.CU.toRGB3f(a,f);JU.CU.toRGB3f(d,e);a=(e[0]-f[0])/(b-1);d=(e[1]-f[1])/(b-1);for(var e=(e[2]-f[2])/ +(b-1),h=0;h=a?this.lo:1<=a?this.hi:this.lo+(this.hi-this.lo)*a},"~N,~B"); +b.quantize4=c(b,"quantize4",function(a,d,b,c){b-=d;if(0>=b||Float.isNaN(a))return B(c/2);a-=d;if(0>=a)return 0;a=D(a/(b/c)+1E-4);a>=c&&(a=c-1);return a},"~N,~N,~N,~N");b.colorIndex=c(b,"colorIndex",function(a,d){return B(Math.floor(0>=a||a>=d?0:a))},"~N,~N");b.colorIndexRepeat=c(b,"colorIndexRepeat",function(a,d){return B(Math.floor(0>=a?0:a))%d},"~N,~N");b.colorSchemes=w(-1,"roygb bgyor byelement_jmol byelement_rasmol byresidue_shapely byresidue_amino rwb bwr low high bw wb friendly user resu inherit rgb bgr jmol rasmol byresidue byresidue_nucleic".split(" ")); +b.rasmolScale=null;b.argbsChainAtom=null;b.argbsChainHetero=null});u("JU");C(null,"JU.CommandHistory",["JU.Lst"],function(){var b=v(function(){this.commandList=null;this.maxSize=100;this.cursorPos=this.nextCommand=0;this.isOn=!0;this.lstStates=null;r(this,arguments)},JU,"CommandHistory",null);A(b,function(){this.reset(100)});c(b,"clear",function(){this.reset(this.maxSize)});c(b,"reset",function(a){this.maxSize=a;this.commandList=new JU.Lst;this.nextCommand=0;this.commandList.addLast("");this.cursorPos= +0},"~N");c(b,"setMaxSize",function(a){if(a!=this.maxSize){for(2>a&&(a=2);this.nextCommand>a;)this.commandList.removeItemAt(0),this.nextCommand--;this.nextCommand>a&&(this.nextCommand=a-1);this.cursorPos=this.nextCommand;this.maxSize=a}},"~N");c(b,"getCommandUp",function(){if(0>=this.cursorPos)return null;this.cursorPos--;var a=this.getCommand();a.endsWith("#??")&&this.removeCommand(this.cursorPos--);0>this.cursorPos&&(this.cursorPos=0);return a});c(b,"getCommandDown",function(){if(this.cursorPos>= +this.nextCommand)return null;this.cursorPos++;return this.getCommand()});c(b,"getCommand",function(){return this.commandList.get(this.cursorPos)});c(b,"addCommand",function(a){if((this.isOn||a.endsWith("#??"))&&!a.endsWith("#----")){for(var d;0<=(d=a.indexOf("\n"));){var b=a.substring(0,d);0a)return this.setMaxSize(-2-a),"";a=Math.max(this.nextCommand-a,0)}for(var d="";aa||a>=this.nextCommand)return"";a=this.commandList.removeItemAt(a);this.nextCommand--;return a},"~N");c(b,"addCommandLine",function(a){if(!(null==a||0==a.length)&&!a.endsWith("#--"))0=this.maxSize&&(this.commandList.removeItemAt(0),this.nextCommand= +this.maxSize-1),this.commandList.add(this.nextCommand,a),this.nextCommand++,this.cursorPos=this.nextCommand,this.commandList.add(this.nextCommand,""))},"~S");c(b,"pushState",function(a){null==this.lstStates&&(this.lstStates=new JU.Lst);this.lstStates.addLast(a)},"~S");c(b,"popState",function(){return null==this.lstStates||0==this.lstStates.size()?null:this.lstStates.removeItemAt(this.lstStates.size()-1)})});u("JU");C(["JU.LoggerInterface"],"JU.DefaultLogger",["JU.Logger"],function(){var b=H(JU,"DefaultLogger", +null,JU.LoggerInterface);c(b,"log",function(a,d,b,c){a===System.err&&System.out.flush();if(null!=a&&(null!=b||null!=c))if(b=(JU.Logger.logLevel()?"["+JU.Logger.getLevel(d)+"] ":"")+(null!=b?b:"")+(null!=c?": "+c.toString():""),a.println(b),null!=c&&(d=c.getStackTrace(),null!=d))for(c=0;ca||a>=JU.Elements.atomicMass.length?0:JU.Elements.atomicMass[a]},"~N");b.elementNumberFromSymbol=c(b,"elementNumberFromSymbol",function(a,b){if(null==JU.Elements.htElementMap){for(var c=new java.util.Hashtable,f=JU.Elements.elementNumberMax;0<=--f;){var e=JU.Elements.elementSymbols[f], +h=Integer.$valueOf(f);c.put(e,h);2==e.length&&c.put(e.toUpperCase(),h)}for(f=JU.Elements.altElementMax;4<=--f;)e=JU.Elements.altElementSymbols[f],h=Integer.$valueOf(JU.Elements.altElementNumbers[f]),c.put(e,h),2==e.length&&c.put(e.toUpperCase(),h);c.put("Z",Integer.$valueOf(0));JU.Elements.htElementMap=c}if(null==a)return 0;c=JU.Elements.htElementMap.get(a);if(null!=c)return c.intValue();if(JU.PT.isDigit(a.charAt(0))&&(e=a.length-2,0<=e&&JU.PT.isDigit(a.charAt(e))&&e++,c=0=JU.Elements.elementNumberMax){for(b=JU.Elements.altElementMax;0<=--b;)if(a==JU.Elements.altElementNumbers[b])return JU.Elements.altElementSymbols[b]; +b=JU.Elements.getIsotopeNumber(a);return""+b+JU.Elements.getElementSymbol(a&127)}return JU.Elements.getElementSymbol(a)},"~N");b.getElementSymbol=c(b,"getElementSymbol",function(a){if(0>a||a>=JU.Elements.elementNumberMax)a=0;return JU.Elements.elementSymbols[a]},"~N");b.elementNameFromNumber=c(b,"elementNameFromNumber",function(a){if(a>=JU.Elements.elementNumberMax){for(var b=JU.Elements.altElementMax;0<=--b;)if(a==JU.Elements.altElementNumbers[b])return JU.Elements.altElementNames[b];a%=128}if(0> +a||a>=JU.Elements.elementNumberMax)a=0;return JU.Elements.elementNames[a]},"~N");b.elementNumberFromName=c(b,"elementNumberFromName",function(a){for(var b=1;b>7)+JU.Elements.elementSymbolFromNumber(a&127)},"~N");b.altIsotopeSymbolFromIndex2=c(b,"altIsotopeSymbolFromIndex2",function(a){a=JU.Elements.altElementNumbers[a];return JU.Elements.elementSymbolFromNumber(a&127)+(a>>7)},"~N");b.getElementNumber=c(b,"getElementNumber",function(a){return a&127}, +"~N");b.getIsotopeNumber=c(b,"getIsotopeNumber",function(a){return(a&32640)>>7},"~N");b.getAtomicAndIsotopeNumber=c(b,"getAtomicAndIsotopeNumber",function(a,b){return(0>a?0:a)+(0>=b?0:b<<7)},"~N,~N");b.altElementIndexFromNumber=c(b,"altElementIndexFromNumber",function(a){for(var b=0;bb&&JU.Elements.bsAnions.get(c)?JU.Elements.getBondingRadFromTable(c,b,JU.Elements.anionLookupTable):JU.Elements.defaultBondingMars[(c<<1)+JU.Elements.bondingVersion]/1E3},"~N,~N");b.getCovalentRadius=c(b,"getCovalentRadius",function(a){return JU.Elements.defaultBondingMars[((a&127)<<1)+JU.Elements.covalentVersion]/1E3},"~N");b.getBondingRadFromTable= +c(b,"getBondingRadFromTable",function(a,b,c){b=(a<<4)+(b+4);for(var f=0,e=0,h=0,k=B(c.length/2);h!=k;)if(e=B((h+k)/2),f=c[e<<1],f>b)k=e;else if(fb&&e--;f=c[e<<1];a!=f>>4&&e++;return c[(e<<1)+1]/1E3},"~N,~N,~A");b.getVanderwaalsMar=c(b,"getVanderwaalsMar",function(a,b){return JU.Elements.vanderwaalsMars[((a&127)<<2)+b.pt%4]},"~N,J.c.VDW");b.getHydrophobicity=c(b,"getHydrophobicity",function(a){return 1>a||a>=JU.Elements.hydrophobicities.length?0:JU.Elements.hydrophobicities[a]}, +"~N");b.getAllredRochowElectroNeg=c(b,"getAllredRochowElectroNeg",function(a){return 0>4);for(a=0;a>4);b.hydrophobicities=K(-1,[0,0.62,-2.53,-0.78,-0.9,0.29,-0.85,-0.74,0.48,-0.4, +1.38,1.06,-1.5,0.64,1.19,0.12,-0.18,-0.05,0.81,0.26,1.08]);(JU.Elements.elementNames.length!=JU.Elements.elementNumberMax||JU.Elements.vanderwaalsMars.length>>2!=JU.Elements.elementNumberMax||JU.Elements.defaultBondingMars.length>>1!=JU.Elements.elementNumberMax)&&JU.Logger.error("ERROR!!! Element table length mismatch:\n elementSymbols.length="+JU.Elements.elementSymbols.length+"\n elementNames.length="+JU.Elements.elementNames.length+"\n vanderwaalsMars.length="+JU.Elements.vanderwaalsMars.length+ +"\n covalentMars.length="+JU.Elements.defaultBondingMars.length);b.electroNegativities=K(-1,[0,2.2,0,0.97,1.47,2.01,2.5,3.07,3.5,4.1,0,1.01,1.23,1.47,1.74,2.06,2.44,2.83,0,0.91,1.04,1.2,1.32,1.45,1.56,1.6,1.64,1.7,1.75,1.75,1.66,1.82,2.02,2.2,2.48,2.74,0,0.89,0.99,1.11,1.22,1.23,1.3,1.36,1.42,1.45,1.35,1.42,1.46,1.49,1.72,1.82,2.01,2.21])});u("JU");C(null,"JU.Escape","JU.AU $.BS $.Lst $.M3 $.M4 $.P3 $.P4 $.PT $.SB $.V3 JS.SV".split(" "),function(){var b=H(JU,"Escape",null);b.escapeColor=c(b,"escapeColor", +function(a){return 0==a?null:"[x"+JU.Escape.getHexColorFromRGB(a)+"]"},"~N");b.getHexColorFromRGB=c(b,"getHexColorFromRGB",function(a){if(0==a)return null;var d="00"+Integer.toHexString(a>>16&255),d=d.substring(d.length-2),b="00"+Integer.toHexString(a>>8&255),b=b.substring(b.length-2);a="00"+Integer.toHexString(a&255);a=a.substring(a.length-2);return d+b+a},"~N");b.eP=c(b,"eP",function(a){return null==a?"null":"{"+a.x+" "+a.y+" "+a.z+"}"},"JU.T3");b.matrixToScript=c(b,"matrixToScript",function(a){return JU.PT.replaceAllCharacters(a.toString(), +"\n\r ","").$replace("\t"," ")},"~O");b.eP4=c(b,"eP4",function(a){return"{"+a.x+" "+a.y+" "+a.z+" "+a.w+"}"},"JU.P4");b.drawQuat=c(b,"drawQuat",function(a,d,b,c,f){c=" VECTOR "+JU.Escape.eP(c)+" ";0==f&&(f=1);return"draw "+d+"x"+b+c+JU.Escape.eP(a.getVectorScaled(0,f))+" color red\ndraw "+d+"y"+b+c+JU.Escape.eP(a.getVectorScaled(1,f))+" color green\ndraw "+d+"z"+b+c+JU.Escape.eP(a.getVectorScaled(2,f))+" color blue\n"},"JU.Quat,~S,~S,JU.P3,~N");b.e=c(b,"e",function(a){if(null==a)return"null";if(JU.PT.isNonStringPrimitive(a))return a.toString(); +if("string"==typeof a)return JU.PT.esc(a);if(z(a,"JU.Lst"))return JU.Escape.eV(a);if(z(a,"java.util.Map"))return JU.Escape.escapeMap(a);if(z(a,"JU.BS"))return JU.Escape.eBS(a);if(z(a,"JU.P4"))return JU.Escape.eP4(a);if(z(a,"JU.T3"))return JU.Escape.eP(a);if(JU.AU.isAP(a))return JU.Escape.eAP(a);if(JU.AU.isAS(a))return JU.Escape.eAS(a,!0);if(z(a,"JU.M34"))return JU.PT.rep(JU.PT.rep(a.toString(),"[\n ","["),"] ]","]]");if(JU.AU.isAFF(a)){for(var d=(new JU.SB).append("["),b="",c=0;ca.indexOf(",")&&0>a.indexOf(".")&&0>a.indexOf("-")?JU.BS.unescape(a):a.startsWith("[[")? +JU.Escape.unescapeMatrix(a):a},"~S");b.isStringArray=c(b,"isStringArray",function(a){return a.startsWith("({")&&0==a.lastIndexOf("({")&&a.indexOf("})")==a.length-2},"~S");b.uP=c(b,"uP",function(a){if(null==a||0==a.length)return a;var d=a.$replace("\n"," ").trim();if("{"!=d.charAt(0)||"}"!=d.charAt(d.length-1))return a;for(var b=K(5,0),c=0,d=d.substring(1,d.length-1),f=E(1,0);5>c;c++)if(b[c]=JU.PT.parseFloatNext(d,f),Float.isNaN(b[c])){if(f[0]>=d.length||","!=d.charAt(f[0]))break;f[0]++;c--}return 3== +c?JU.P3.new3(b[0],b[1],b[2]):4==c?JU.P4.new4(b[0],b[1],b[2],b[3]):a},"~S");b.unescapeMatrix=c(b,"unescapeMatrix",function(a){if(null==a||0==a.length)return a;var d=a.$replace("\n"," ").trim();if(0!=d.lastIndexOf("[[")||d.indexOf("]]")!=d.length-2)return a;for(var b=K(16,0),d=d.substring(2,d.length-2).$replace("["," ").$replace("]"," ").$replace(","," "),c=E(1,0),f=0;16>f&&!(b[f]=JU.PT.parseFloatNext(d,c),Float.isNaN(b[f]));f++);return!Float.isNaN(JU.PT.parseFloatNext(d,c))?a:9==f?JU.M3.newA9(b):16== +f?JU.M4.newA16(b):a},"~S");b.eBS=c(b,"eBS",function(a){return JU.BS.escape(a,"(",")")},"JU.BS");b.eBond=c(b,"eBond",function(a){return JU.BS.escape(a,"[","]")},"JU.BS");b.toReadable=c(b,"toReadable",function(a,d){var b=new JU.SB,c="";if(null==d)return"null";if(JU.PT.isNonStringPrimitive(d))return JU.Escape.packageReadable(a,null,d.toString());if("string"==typeof d)return JU.Escape.packageReadable(a,null,JU.PT.esc(d));if(z(d,"JS.SV"))return JU.Escape.packageReadable(a,null,d.escape());if(JU.AU.isAS(d)){b.append("["); +for(var f=d.length,e=0;eh)break;f<<=4;f+=h;++l}f=String.fromCharCode(f)}}c.appendC(f)}return c.toString()}, +"~S");b.getHexitValue=c(b,"getHexitValue",function(a){return 48<=a.charCodeAt(0)&&57>=a.charCodeAt(0)?a.charCodeAt(0)-48:97<=a.charCodeAt(0)&&102>=a.charCodeAt(0)?10+a.charCodeAt(0)-97:65<=a.charCodeAt(0)&&70>=a.charCodeAt(0)?10+a.charCodeAt(0)-65:-1},"~S");b.unescapeStringArray=c(b,"unescapeStringArray",function(a){if(null==a||!a.startsWith("[")||!a.endsWith("]"))return null;var b=new JU.Lst,c=E(1,0);for(c[0]=1;c[0]f[3].x?"{255.0 200.0 0.0}":"{255.0 0.0 128.0}");case 1745489939:return(null==f?"":"measure "+JU.Escape.eP(c)+JU.Escape.eP(f[0])+JU.Escape.eP(f[4]))+JU.Escape.eP(l);default:return null==f?[]:f}},"~S,~N,JU.P3,JU.P3,~A")});u("JU");C(["J.api.JmolGraphicsInterface","JU.Normix"],"JU.GData","JU.AU $.P3 $.V3 JU.C $.Font $.Shader".split(" "),function(){var b=v(function(){this.apiPlatform=null;this.antialiasEnabled=this.currentlyRendering=this.translucentCoverOnly=!1;this.displayMaxY2=this.displayMinY2= +this.displayMaxX2=this.displayMinX2=this.displayMaxY=this.displayMinY=this.displayMaxX=this.displayMinX=this.windowHeight=this.windowWidth=0;this.inGreyscaleMode=this.antialiasThisFrame=!1;this.backgroundImage=this.changeableColixMap=null;this.newWindowHeight=this.newWindowWidth=0;this.newAntialiasing=!1;this.ht3=this.argbCurrent=this.colixCurrent=this.ambientOcclusion=this.height=this.width=this.depth=this.slab=this.yLast=this.xLast=this.contrastColix=this.bgcolor=0;this.isPass2=!1;this.bufferSize= +this.textY=0;this.currentFont=this.graphicsForMetrics=this.vwr=this.shader=null;this.argbNoisyDn=this.argbNoisyUp=0;this.transformedVectors=null;r(this,arguments)},JU,"GData",null,J.api.JmolGraphicsInterface);P(b,function(){this.changeableColixMap=W(16,0);this.transformedVectors=Array(JU.GData.normixCount)});A(b,function(){this.shader=new JU.Shader});c(b,"initialize",function(a,b){this.vwr=a;this.apiPlatform=b},"JV.Viewer,J.api.GenericPlatform");c(b,"setDepth",function(a){this.depth=0>a?0:a},"~N"); +j(b,"setSlab",function(a){this.slab=Math.max(0,a)},"~N");j(b,"setSlabAndZShade",function(a,b){this.setSlab(a);this.setDepth(b)},"~N,~N,~N,~N,~N");c(b,"setAmbientOcclusion",function(a){this.ambientOcclusion=a},"~N");j(b,"isAntialiased",function(){return this.antialiasThisFrame});c(b,"getChangeableColix",function(a,b){a>=this.changeableColixMap.length&&(this.changeableColixMap=JU.AU.arrayCopyShort(this.changeableColixMap,a+16));0==this.changeableColixMap[a]&&(this.changeableColixMap[a]=JU.C.getColix(b)); +return a|-32768},"~N,~N");c(b,"changeColixArgb",function(a,b){aa&&(a=this.changeableColixMap[a&2047]);return this.inGreyscaleMode?JU.C.getArgbGreyscale(a):JU.C.getArgb(a)},"~N");c(b,"getShades",function(a){0>a&&(a=this.changeableColixMap[a&2047]);return this.inGreyscaleMode?this.shader.getShadesG(a): +this.shader.getShades(a)},"~N");c(b,"setGreyscaleMode",function(a){this.inGreyscaleMode=a},"~B");c(b,"getSpecularPower",function(){return this.shader.specularPower});c(b,"setSpecularPower",function(a){0>a?this.setSpecularExponent(-a):this.shader.specularPower!=a&&(this.shader.specularPower=a,this.shader.intenseFraction=a/100,this.shader.flushCaches())},"~N");c(b,"getSpecularPercent",function(){return this.shader.specularPercent});c(b,"setSpecularPercent",function(a){this.shader.specularPercent!=a&& +(this.shader.specularPercent=a,this.shader.specularFactor=a/100,this.shader.flushCaches())},"~N");c(b,"getSpecularExponent",function(){return this.shader.specularExponent});c(b,"setSpecularExponent",function(a){this.shader.specularExponent!=a&&(this.shader.specularExponent=a,this.shader.phongExponent=B(Math.pow(2,a)),this.shader.usePhongExponent=!1,this.shader.flushCaches())},"~N");c(b,"getPhongExponent",function(){return this.shader.phongExponent});c(b,"setPhongExponent",function(a){this.shader.phongExponent== +a&&this.shader.usePhongExponent||(this.shader.phongExponent=a,a=Math.log(a)/Math.log(2),this.shader.usePhongExponent=a!=D(a),this.shader.usePhongExponent||(this.shader.specularExponent=D(a)),this.shader.flushCaches())},"~N");c(b,"getDiffusePercent",function(){return this.shader.diffusePercent});c(b,"setDiffusePercent",function(a){this.shader.diffusePercent!=a&&(this.shader.diffusePercent=a,this.shader.diffuseFactor=a/100,this.shader.flushCaches())},"~N");c(b,"getAmbientPercent",function(){return this.shader.ambientPercent}); +c(b,"setAmbientPercent",function(a){this.shader.ambientPercent!=a&&(this.shader.ambientPercent=a,this.shader.ambientFraction=a/100,this.shader.flushCaches())},"~N");c(b,"getSpecular",function(){return this.shader.specularOn});c(b,"setSpecular",function(a){this.shader.specularOn!=a&&(this.shader.specularOn=a,this.shader.flushCaches())},"~B");c(b,"setCel",function(a){this.shader.setCel(a,this.shader.celPower,this.bgcolor)},"~B");c(b,"getCel",function(){return this.shader.celOn});c(b,"getCelPower",function(){return this.shader.celPower}); +c(b,"setCelPower",function(a){this.shader.setCel(this.shader.celOn||0==this.shader.celPower,a,this.bgcolor)},"~N");c(b,"getLightSource",function(){return this.shader.lightSource});c(b,"isClipped3",function(a,b,c){return 0>a||a>=this.width||0>b||b>=this.height||cthis.depth},"~N,~N,~N");c(b,"isClipped",function(a,b){return 0>a||a>=this.width||0>b||b>=this.height},"~N,~N");j(b,"isInDisplayRange",function(a,b){return a>=this.displayMinX&&a=this.displayMinY&&b>1;return b<-a||b>=this.width+a||c<-a||c>=this.height+a},"~N,~N,~N");c(b,"isClippedZ",function(a){return-2147483648!=a&&(athis.depth)},"~N");c(b,"clipCode3",function(a,b,c){var l=0;0>a?l|=a=this.width&&(l|=a>this.displayMaxX2?-1:4);0>b?l|=b=this.height&&(l|=b>this.displayMaxY2?-1:1);cthis.depth&&(l|=16);return l},"~N,~N,~N");c(b,"clipCode",function(a){var b=0;athis.depth&&(b|=16);return b},"~N");c(b,"getFont3D",function(a){return JU.Font.createFont3D(0,0,a,a,this.apiPlatform,this.graphicsForMetrics)},"~N");c(b,"getFont3DFS",function(a,b){return JU.Font.createFont3D(JU.Font.getFontFaceID(a),0,b,b,this.apiPlatform,this.graphicsForMetrics)},"~S,~N");c(b,"getFontFidFS",function(a,b){return this.getFont3DFSS(a,"Bold",b).fid},"~S,~N");c(b,"getFont3DFSS",function(a,b,c){b=JU.Font.getFontStyleID(b);0>b&&(b=0);return JU.Font.createFont3D(JU.Font.getFontFaceID(a), +b,c,c,this.apiPlatform,this.graphicsForMetrics)},"~S,~S,~N");c(b,"getFont3DScaled",function(a,b){var c=a.fontSizeNominal*b;return c==a.fontSize?a:JU.Font.createFont3D(a.idFontFace,a.idFontStyle,c,a.fontSizeNominal,this.apiPlatform,this.graphicsForMetrics)},"JU.Font,~N");c(b,"getFontFidI",function(a){return this.getFont3D(a).fid},"~N");c(b,"getFont3DCurrent",function(){return this.currentFont});c(b,"setFont",function(){},"JU.Font");c(b,"setFontBold",function(a,b){this.setFont(this.getFont3DFSS(a,"Bold", +b))},"~S,~N");c(b,"setBackgroundTransparent",function(){},"~B");c(b,"setBackgroundArgb",function(a){this.bgcolor=a;this.setCel(this.shader.celOn)},"~N");c(b,"setBackgroundImage",function(a){this.backgroundImage=a},"~O");c(b,"setWindowParameters",function(a,b,c){this.setWinParams(a,b,c)},"~N,~N,~B");c(b,"setWinParams",function(a,b,c){this.newWindowWidth=a;this.newWindowHeight=b;this.newAntialiasing=c},"~N,~N,~B");c(b,"setNewWindowParametersForExport",function(){this.windowWidth=this.newWindowWidth; +this.windowHeight=this.newWindowHeight;this.setWidthHeight(!1)});c(b,"setWidthHeight",function(a){this.width=this.windowWidth;this.height=this.windowHeight;a&&(this.width<<=1,this.height<<=1);this.xLast=this.width-1;this.yLast=this.height-1;this.displayMinX=-(this.width>>1);this.displayMaxX=this.width-this.displayMinX;this.displayMinY=-(this.height>>1);this.displayMaxY=this.height-this.displayMinY;this.displayMinX2=this.displayMinX<<2;this.displayMaxX2=this.displayMaxX<<2;this.displayMinY2=this.displayMinY<< +2;this.displayMaxY2=this.displayMaxY<<2;this.ht3=3*this.height;this.bufferSize=this.width*this.height},"~B");c(b,"beginRendering",function(){},"JU.M3,~B,~B,~B");c(b,"endRendering",function(){});c(b,"snapshotAnaglyphChannelBytes",function(){});c(b,"getScreenImage",function(){return null},"~B");c(b,"releaseScreenImage",function(){});c(b,"applyAnaglygh",function(){},"J.c.STER,~A");c(b,"setPass2",function(){return!1},"~B");c(b,"destroy",function(){});c(b,"clearFontCache",function(){});c(b,"drawQuadrilateralBits", +function(a,b,c,l,f,e){a.drawLineBits(b,b,c,l);a.drawLineBits(b,b,l,f);a.drawLineBits(b,b,f,e);a.drawLineBits(b,b,e,c)},"J.api.JmolRendererInterface,~N,JU.P3,JU.P3,JU.P3,JU.P3");c(b,"drawTriangleBits",function(a,b,c,l,f,e,h,k){1==(k&1)&&a.drawLineBits(c,f,b,l);2==(k&2)&&a.drawLineBits(f,h,l,e);4==(k&4)&&a.drawLineBits(h,c,e,b)},"J.api.JmolRendererInterface,JU.P3,~N,JU.P3,~N,JU.P3,~N,~N");c(b,"plotImage",function(){},"~N,~N,~N,~O,J.api.JmolRendererInterface,~N,~N,~N");c(b,"plotText",function(){},"~N,~N,~N,~N,~N,~S,JU.Font,J.api.JmolRendererInterface"); +c(b,"renderBackground",function(){},"J.api.JmolRendererInterface");c(b,"setColor",function(a){this.argbCurrent=this.argbNoisyUp=this.argbNoisyDn=a},"~N");c(b,"setC",function(){return!0},"~N");c(b,"isDirectedTowardsCamera",function(a){return 0>a||0"))for(a=JU.GenericApplet.htRegistry.keySet().iterator();a.hasNext()&&((f=a.next())||1);)!f.equals(c)&&0a.indexOf("_object")&&(a+="_object"),0>a.indexOf("__")&&(a+=b),JU.GenericApplet.htRegistry.containsKey(a)||(a="jmolApplet"+a),!a.equals(c)&&JU.GenericApplet.htRegistry.containsKey(a)&& +l.addLast(a)},"~S,~S,~S,JU.Lst");j(b,"notifyAudioEnded",function(a){this.viewer.sm.notifyAudioStatus(a)},"~O");c(b,"setJSOptions",function(a){this.htParams=new java.util.Hashtable;null==a&&(a=new java.util.Hashtable);this.vwrOptions=a;for(var b,c=a.entrySet().iterator();c.hasNext()&&((b=c.next())||1);)this.htParams.put(b.getKey().toLowerCase(),b.getValue());this.documentBase=""+a.get("documentBase");this.codeBase=""+a.get("codePath")},"java.util.Map");c(b,"initOptions",function(){this.vwrOptions.remove("debug"); +this.vwrOptions.put("fullName",this.fullName);this.haveDocumentAccess="true".equalsIgnoreCase(""+this.getValue("allowjavascript","true"));this.mayScript=!0});c(b,"getJmolParameter",function(a){a=this.htParams.get(a.toLowerCase());return null==a?null:""+a},"~S");j(b,"functionXY",function(a,b,c){var l=K(Math.abs(b),Math.abs(c),0);if(!this.mayScript||!this.haveDocumentAccess||0==b||0==c)return l;try{if(0";a+="";for(var b=b[1].$plit("&"),c=0;c"+l+""):a+("')}a+="";b=window.open("");b.document.write(a);b.document.getElementById("f").submit()}},"java.net.URL");c(b,"doSendCallback",function(a,b,c,l){var f="string"==typeof b;if(!(null==b||f&&0==b.length)){if(f&&"alert".equals(b))return alert(l),"";l=f?JU.PT.split(b,"."):null;try{var e;if(f){e=window[l[0]];for(var h=1;hc;++c)JU.Geodesic.vertexVectors[c+1]=JU.V3.new3(Math.cos(1.2566370614359172*c),Math.sin(1.2566370614359172* +c),0.5),JU.Geodesic.vertexVectors[c+6]=JU.V3.new3(Math.cos(1.2566370614359172*c+0.6283185307179586),Math.sin(1.2566370614359172*c+0.6283185307179586),-0.5);JU.Geodesic.vertexVectors[11]=JU.V3.new3(0,0,-JU.Geodesic.halfRoot5);for(c=12;0<=--c;)JU.Geodesic.vertexVectors[c].normalize();JU.Geodesic.faceVertexesArrays[0]=JU.Geodesic.faceVertexesIcosahedron;JU.Geodesic.neighborVertexesArrays[0]=JU.Geodesic.neighborVertexesIcosahedron;b[0]=12;for(c=0;cj;++j)for(l=0;5>l;++l){c=k[6*j+l];if(0>c)throw new NullPointerException;if(c>=f)throw new NullPointerException;if(-1!=k[6*j+5])throw new NullPointerException;}for(j=72;jc)throw new NullPointerException;if(c>=f)throw new NullPointerException;}for(j=0;jj&&5!=f||12<=j&&6!=f)throw new NullPointerException;f=0;for(l=e.length;0<=--l;)e[l]==j&&++f;if(12>j&&5!=f||12<=j&&6!=f)throw new NullPointerException;}JU.Geodesic.htVertex=null},"~N,~A");b.addNeighboringVertexes=c(b,"addNeighboringVertexes",function(a,b,c){for(var l=6*b,f=l+6;la[l]){a[l]=c;for(var e=6*c,h=e+6;ea[e]){a[e]=b;return}}}}throw new NullPointerException;},"~A,~N,~N");b.getVertex=c(b,"getVertex",function(a, +b){if(a>b){var c=a;a=b;b=c}var c=Integer.$valueOf((a<<16)+b),l=JU.Geodesic.htVertex.get(c);if(null!=l)return l.shortValue();l=JU.Geodesic.vertexVectors[JU.Geodesic.vertexNext]=new JU.V3;l.add2(JU.Geodesic.vertexVectors[a],JU.Geodesic.vertexVectors[b]);l.normalize();JU.Geodesic.htVertex.put(c,Short.$valueOf(JU.Geodesic.vertexNext));return JU.Geodesic.vertexNext++},"~N,~N");b.halfRoot5=0.5*Math.sqrt(5);b.faceVertexesIcosahedron=W(-1,[0,1,2,0,2,3,0,3,4,0,4,5,0,5,1,1,6,2,2,7,3,3,8,4,4,9,5,5,10,1,6,1, +10,7,2,6,8,3,7,9,4,8,10,5,9,11,6,10,11,7,6,11,8,7,11,9,8,11,10,9]);b.neighborVertexesIcosahedron=W(-1,[1,2,3,4,5,-1,0,5,10,6,2,-1,0,1,6,7,3,-1,0,2,7,8,4,-1,0,3,8,9,5,-1,0,4,9,10,1,-1,1,10,11,7,2,-1,2,6,11,8,3,-1,3,7,11,9,4,-1,4,8,11,10,5,-1,5,9,11,6,1,-1,6,7,8,9,10,-1]);b.vertexCounts=null;b.vertexVectors=null;b.faceVertexesArrays=null;b.neighborVertexesArrays=null;b.currentLevel=0;b.vertexNext=0;b.htVertex=null});u("JU");p=v(function(){this.entryCount=0;this.entries=null;r(this,arguments)},JU,"Int2IntHash", +null);A(p,function(b){this.entries=Array(b)},"~N");c(p,"get",function(b){for(var a=this.entries,a=a[(b&2147483647)%a.length];null!=a;a=a.next)if(a.key==b)return a.value;return-2147483648},"~N");c(p,"put",function(b,a){for(var d=this.entries,c=d.length,l=(b&2147483647)%c,f=d[l];null!=f;f=f.next)if(f.key==b){f.value=a;return}if(this.entryCount>c){for(var l=c,c=c+(c+1),e=Array(c),h=l;0<=--h;)for(f=d[h];null!=f;){var k=f,f=f.next,l=(k.key&2147483647)%c;k.next=e[l];e[l]=k}d=this.entries=e;l=(b&2147483647)% +c}d[l]=new JU.Int2IntHashEntry(b,a,d[l]);++this.entryCount},"~N,~N");p=v(function(){this.value=this.key=0;this.next=null;r(this,arguments)},JU,"Int2IntHashEntry",null);A(p,function(b,a,d){this.key=b;this.value=a;this.next=d},"~N,~N,JU.Int2IntHashEntry");u("JU");C(null,"JU.JSJSONParser",["java.util.Hashtable","JU.JSONException","$.Lst","$.SB"],function(){var b=v(function(){this.str=null;this.len=this.index=0;this.asHashTable=!1;r(this,arguments)},JU,"JSJSONParser",null);c(b,"parseMap",function(a,b){this.index= +0;this.asHashTable=b;this.str=a;this.len=a.length;if("{"!=this.getChar())return null;this.returnChar();return this.getValue(!1)},"~S,~B");c(b,"parse",function(a,b){this.index=0;this.asHashTable=b;this.str=a;this.len=a.length;return this.getValue(!1)},"~S,~B");c(b,"next",function(){return this.index"[,]{:}'\"".indexOf(c);)c=this.next();this.returnChar();a&&":"!=c&&(c=String.fromCharCode(0))}if(a&&0==c.charCodeAt(0))throw new JU.JSONException("invalid key");b=this.str.substring(b,this.index).trim();if(!a){if(b.equals("true"))return Boolean.TRUE; +if(b.equals("false"))return Boolean.FALSE;if(b.equals("null"))return this.asHashTable?b:null}c=b.charAt(0);if("0"<=c&&"9">=c||"-"==c)try{if(0>b.indexOf(".")&&0>b.indexOf("e")&&0>b.indexOf("E"))return new Integer(b);var l=Float.$valueOf(b);if(!l.isInfinite()&&!l.isNaN())return l}catch(f){if(!F(f,Exception))throw f;}System.out.println("JSON parser cannot parse "+b);throw new JU.JSONException("invalid value");},"~B");c(b,"getString",function(a){for(var b,c=null,l=this.index;;){var f=this.index;switch((b= +this.next()).charCodeAt(0)){case 0:case 10:case 13:throw this.syntaxError("Unterminated string");case 92:switch((b=this.next()).charCodeAt(0)){case 34:case 39:case 92:case 47:break;case 98:b="\b";break;case 116:b="\t";break;case 110:b="\n";break;case 102:b="\f";break;case 114:b="\r";break;case 117:var e=this.index;this.index+=4;try{b=String.fromCharCode(Integer.parseInt(this.str.substring(e,this.index),16))}catch(h){if(F(h,Exception))throw this.syntaxError("Substring bounds error");throw h;}break; +default:throw this.syntaxError("Illegal escape.");}break;default:if(b==a)return null==c?this.str.substring(l,f):c.toString()}this.index>f+1&&null==c&&(c=new JU.SB,c.append(this.str.substring(l,f)));null!=c&&c.appendC(b)}},"~S");c(b,"getObject",function(){var a=this.asHashTable?new java.util.Hashtable:new java.util.HashMap,b=null;switch(this.getChar().charCodeAt(0)){case 125:return a;case 0:throw new JU.JSONException("invalid object");}this.returnChar();for(var c=!1;;)switch(!0==(c=!c)?b=this.getValue(!0).toString(): +a.put(b,this.getValue(!1)),this.getChar().charCodeAt(0)){case 125:return a;case 58:if(c)continue;c=!0;case 44:if(!c)continue;default:throw this.syntaxError("Expected ',' or ':' or '}'");}});c(b,"getArray",function(){var a=new JU.Lst;switch(this.getChar().charCodeAt(0)){case 93:return a;case 0:throw new JU.JSONException("invalid array");}this.returnChar();for(var b=!1;;)switch(b?(a.addLast(null),b=!1):a.addLast(this.getValue(!1)),this.getChar().charCodeAt(0)){case 44:switch(this.getChar().charCodeAt(0)){case 93:return a; +case 44:b=!0;default:this.returnChar()}continue;case 93:return a;default:throw this.syntaxError("Expected ',' or ']'");}});c(b,"syntaxError",function(a){return new JU.JSONException(a+" for "+this.str.substring(0,Math.min(this.index,this.len)))},"~S")});u("JU");C(["java.lang.RuntimeException"],"JU.JSONException",null,function(){H(JU,"JSONException",RuntimeException)});u("JU");O(JU,"SimpleNode");u("JU");O(JU,"SimpleEdge");u("JU");O(JU,"Node",JU.SimpleNode);u("JU");C(["java.lang.Enum","JU.SimpleEdge"], +"JU.Edge",["JU.PT"],function(){var b=v(function(){this.index=-1;this.order=0;r(this,arguments)},JU,"Edge",null,JU.SimpleEdge);b.getArgbHbondType=c(b,"getArgbHbondType",function(a){return JU.Edge.argbsHbondType[(a&30720)>>11]},"~N");b.getBondOrderNumberFromOrder=c(b,"getBondOrderNumberFromOrder",function(a){a&=131071;switch(a){case 131071:case 65535:return"0";case 1025:case 1041:return"1";default:return JU.Edge.isOrderH(a)||JU.Edge.isAtropism(a)||0!=(a&256)?"1":0!=(a&224)?(a>>5)+"."+(a&31):JU.Edge.EnumBondOrder.getNumberFromCode(a)}}, +"~N");b.getCmlBondOrder=c(b,"getCmlBondOrder",function(a){a=JU.Edge.getBondOrderNameFromOrder(a);switch(a.charAt(0).charCodeAt(0)){case 115:case 100:case 116:return""+a.toUpperCase().charAt(0);case 97:return 0<=a.indexOf("Double")?"D":0<=a.indexOf("Single")?"S":"aromatic";case 112:return 0<=a.indexOf(" ")?a.substring(a.indexOf(" ")+1):"partial12"}return null},"~N");b.getBondOrderNameFromOrder=c(b,"getBondOrderNameFromOrder",function(a){a&=131071;switch(a){case 65535:case 131071:return"";case 1025:return"near"; +case 1041:return"far";case 32768:return JU.Edge.EnumBondOrder.STRUT.$$name;case 1:return JU.Edge.EnumBondOrder.SINGLE.$$name;case 2:return JU.Edge.EnumBondOrder.DOUBLE.$$name}return 0!=(a&224)?"partial "+JU.Edge.getBondOrderNumberFromOrder(a):JU.Edge.isOrderH(a)?JU.Edge.EnumBondOrder.H_REGULAR.$$name:65537==(a&65537)?(a=JU.Edge.getAtropismCode(a),"atropisomer_"+B(a/4)+a%4):0!=(a&256)?JU.Edge.EnumBondOrder.SINGLE.$$name:JU.Edge.EnumBondOrder.getNameFromCode(a)},"~N");b.getAtropismOrder=c(b,"getAtropismOrder", +function(a,b){return JU.Edge.getAtropismOrder12((a<<2)+b)},"~N,~N");b.getAtropismOrder12=c(b,"getAtropismOrder12",function(a){return a<<11|65537},"~N");b.getAtropismCode=c(b,"getAtropismCode",function(a){return a>>11&15},"~N");b.getAtropismNode=c(b,"getAtropismNode",function(a,b,c){a=a>>11+(c?0:2)&3;return b.getEdges()[a-1].getOtherNode(b)},"~N,JU.Node,~B");b.isAtropism=c(b,"isAtropism",function(a){return 65537==(a&65537)},"~N");b.isOrderH=c(b,"isOrderH",function(a){return 0!=(a&30720)&&0==(a&65537)}, +"~N");b.getPartialBondDotted=c(b,"getPartialBondDotted",function(a){return a&31},"~N");b.getPartialBondOrder=c(b,"getPartialBondOrder",function(a){return(a&131071)>>5},"~N");b.getCovalentBondOrder=c(b,"getCovalentBondOrder",function(a){if(0!=(a&1024))return 1;if(0==(a&1023))return 0;a&=131071;if(0!=(a&224))return JU.Edge.getPartialBondOrder(a);0!=(a&256)&&(a&=-257);0!=(a&248)&&(a=1);return a&7},"~N");b.getBondOrderFromFloat=c(b,"getBondOrderFromFloat",function(a){switch(D(10*a)){case 10:return 1; +case 5:case -10:return 33;case 15:return 515;case -15:return 66;case 20:return 2;case 25:return 97;case -25:return 100;case 30:return 3;case 40:return 4}return 131071},"~N");b.getBondOrderFromString=c(b,"getBondOrderFromString",function(a){if(0>a.indexOf(" "))if(0<=a.indexOf("."))a="partial "+a;else{if(JU.PT.isOneOf(a,";1;2;3;4;5;6;"))return a.charAt(0).charCodeAt(0)-48;var b=JU.Edge.EnumBondOrder.getCodeFromName(a);if(131071!=b||!a.toLowerCase().startsWith("atropisomer_")||14!=a.length)return b; +try{b=JU.Edge.getAtropismOrder(Integer.parseInt(a.substring(12,13)),Integer.parseInt(a.substring(13,14)))}catch(c){if(!F(c,"NumberFormatException"))throw c;}return b}if(0!=a.toLowerCase().indexOf("partial "))return 131071;a=a.substring(8).trim();return JU.Edge.getPartialBondOrderFromFloatEncodedInt(JU.Edge.getFloatEncodedInt(a))},"~S");b.getPartialBondOrderFromFloatEncodedInt=c(b,"getPartialBondOrderFromFloatEncodedInt",function(a){return(B(a/1E6)%7<<5)+(a%1E6&31)},"~N");b.getFloatEncodedInt=c(b, +"getFloatEncodedInt",function(a){var b=a.indexOf(".");if(1>b||"-"==a.charAt(0)||a.endsWith(".")||a.contains(".0"))return 2147483647;var c=0,f=0;if(0c&&(c=-c)}catch(e){if(F(e,"NumberFormatException"))c=-1;else throw e;}if(bc||2147483647b)return k;0<=f&&c.clear(f);return JU.JmolMolecule.getCovalentlyConnectedBitSet(a,a[b],c,e,h,l,k,null,null)?k:new JU.BS},"~A,~N,JU.BS,JU.Lst,~N,~B,~B");b.addMolecule=c(b,"addMolecule",function(a,b,c,l,f,e,h,k){k.or(f);b==a.length&&(a=JU.JmolMolecule.allocateArray(a,2*b+1));a[b]=JU.JmolMolecule.initialize(c,b,l,f,e,h); +return a},"~A,~N,~A,~N,JU.BS,~N,~N,JU.BS");b.getMolecularFormulaAtoms=c(b,"getMolecularFormulaAtoms",function(a,b,c,l){var f=new JU.JmolMolecule;f.nodes=a;f.atomList=b;return f.getMolecularFormula(!1,c,l)},"~A,JU.BS,~A,~B");c(b,"getMolecularFormula",function(a,b,c){this.getMFArray(a,b,c);if(0>this.elementCounts[0])return"?";b=a="";for(var l=1;l<=this.elementNumberMax;l++)c=this.elementCounts[l],0!=c&&(a+=b+JU.Elements.elementSymbolFromNumber(l)+" "+c,b=" ");return a},"~B,~A,~B");c(b,"getMFArray", +function(a,b,c){null==this.atomList&&(this.atomList=new JU.BS,this.atomList.setBits(0,null==this.atNos?this.nodes.length:this.atNos.length));this.elementCounts=E(JU.Elements.elementNumberMax,0);this.altElementCounts=E(JU.Elements.altElementMax,0);this.ac=this.atomList.cardinality();for(var l=this.nElements=0,f=this.atomList.nextSetBit(0);0<=f;f=this.atomList.nextSetBit(f+1),l++){var e,h=null;if(null==this.atNos){h=this.nodes[f];if(null==h)continue;e=h.getAtomicAndIsotopeNumber()}else e=this.atNos[f]; +var k=null==b?1:D(8*b[l]);ef[0]--||c.set(h);var q;for(a=l.values().iterator();a.hasNext()&&((q=a.next())||1);)if(0l.cardinality())l.clearAll();else for(h=l.nextSetBit(0);0<=h;h=l.nextSetBit(h+1))1!=a[h].getCovalentBondCount()&& +(f=JU.BS.copy(c),f.clear(b),e=JU.BS.newN(a.length),JU.JmolMolecule.getCovalentlyConnectedBitSet(a,a[h],f,!0,!0,null,e,a[b],a[b])||l.clear(h));return l},"~A,~N,JU.BS")});u("JU");C(["java.util.Hashtable","JU.DefaultLogger"],"JU.Logger",null,function(){var b=H(JU,"Logger",null);b.getProperty=c(b,"getProperty",function(a,b){try{var c=System.getProperty("jmol.logger."+a,null);if(null!=c)return c.equalsIgnoreCase("true")}catch(l){if(!F(l,Exception))throw l;}return b},"~S,~B");b.setLogger=c(b,"setLogger", +function(a){JU.Logger._logger=a;JU.Logger.debugging=JU.Logger.isActiveLevel(5)||JU.Logger.isActiveLevel(6);JU.Logger.debuggingHigh=JU.Logger.debugging&&JU.Logger._activeLevels[6]},"JU.LoggerInterface");b.isActiveLevel=c(b,"isActiveLevel",function(a){return null!=JU.Logger._logger&&0<=a&&7>a&&JU.Logger._activeLevels[a]},"~N");b.setActiveLevel=c(b,"setActiveLevel",function(a,b){0>a&&(a=0);7<=a&&(a=6);JU.Logger._activeLevels[a]=b;JU.Logger.debugging=JU.Logger.isActiveLevel(5)||JU.Logger.isActiveLevel(6); +JU.Logger.debuggingHigh=JU.Logger.debugging&&JU.Logger._activeLevels[6]},"~N,~B");b.setLogLevel=c(b,"setLogLevel",function(a){for(var b=7;0<=--b;)JU.Logger.setActiveLevel(b,b<=a)},"~N");b.getLevel=c(b,"getLevel",function(a){switch(a){case 6:return"DEBUGHIGH";case 5:return"DEBUG";case 4:return"INFO";case 3:return"WARN";case 2:return"ERROR";case 1:return"FATAL"}return"????"},"~N");b.logLevel=c(b,"logLevel",function(){return JU.Logger._logLevel});b.doLogLevel=c(b,"doLogLevel",function(a){JU.Logger._logLevel= +a},"~B");b.debug=c(b,"debug",function(a){if(JU.Logger.debugging)try{JU.Logger._logger.debug(a)}catch(b){}},"~S");b.info=c(b,"info",function(a){try{JU.Logger.isActiveLevel(4)&&JU.Logger._logger.info(a)}catch(b){}},"~S");b.warn=c(b,"warn",function(a){try{JU.Logger.isActiveLevel(3)&&JU.Logger._logger.warn(a)}catch(b){}},"~S");b.warnEx=c(b,"warnEx",function(a,b){try{JU.Logger.isActiveLevel(3)&&JU.Logger._logger.warnEx(a,b)}catch(c){}},"~S,Throwable");b.error=c(b,"error",function(a){try{JU.Logger.isActiveLevel(2)&& +JU.Logger._logger.error(a)}catch(b){}},"~S");b.errorEx=c(b,"errorEx",function(a,b){try{JU.Logger.isActiveLevel(2)&&JU.Logger._logger.errorEx(a,b)}catch(c){}},"~S,Throwable");b.getLogLevel=c(b,"getLogLevel",function(){for(var a=7;0<=--a;)if(JU.Logger.isActiveLevel(a))return a;return 0});b.fatal=c(b,"fatal",function(a){try{JU.Logger.isActiveLevel(1)&&JU.Logger._logger.fatal(a)}catch(b){}},"~S");b.fatalEx=c(b,"fatalEx",function(a,b){try{JU.Logger.isActiveLevel(1)&&JU.Logger._logger.fatalEx(a,b)}catch(c){}}, +"~S,Throwable");b.startTimer=c(b,"startTimer",function(a){null!=a&&JU.Logger.htTiming.put(a,Long.$valueOf(System.currentTimeMillis()))},"~S");b.getTimerMsg=c(b,"getTimerMsg",function(a,b){0==b&&(b=JU.Logger.getTimeFrom(a));return"Time for "+a+": "+b+" ms"},"~S,~N");b.getTimeFrom=c(b,"getTimeFrom",function(a){var b;return null==a||null==(b=JU.Logger.htTiming.get(a))?-1:System.currentTimeMillis()-b.longValue()},"~S");b.checkTimer=c(b,"checkTimer",function(a,b){var c=JU.Logger.getTimeFrom(a);0<=c&&!a.startsWith("(")&& +JU.Logger.info(JU.Logger.getTimerMsg(a,c));b&&JU.Logger.startTimer(a);return c},"~S,~B");b.checkMemory=c(b,"checkMemory",function(){JU.Logger.info("Memory: Total-Free=0; Total=0; Free=0; Max=0")});b._logger=new JU.DefaultLogger;b._activeLevels=ha(7,!1);b._logLevel=!1;b.debugging=!1;b.debuggingHigh=!1;JU.Logger._activeLevels[6]=JU.Logger.getProperty("debugHigh",!1);JU.Logger._activeLevels[5]=JU.Logger.getProperty("debug",!1);JU.Logger._activeLevels[4]=JU.Logger.getProperty("info",!0);JU.Logger._activeLevels[3]= +JU.Logger.getProperty("warn",!0);JU.Logger._activeLevels[2]=JU.Logger.getProperty("error",!0);JU.Logger._activeLevels[1]=JU.Logger.getProperty("fatal",!0);JU.Logger._logLevel=JU.Logger.getProperty("logLevel",!1);JU.Logger.debugging=null!=JU.Logger._logger&&(JU.Logger._activeLevels[5]||JU.Logger._activeLevels[6]);JU.Logger.debuggingHigh=JU.Logger.debugging&&JU.Logger._activeLevels[6];b.htTiming=new java.util.Hashtable});u("JU");O(JU,"LoggerInterface");u("JU");C(["JU.V3"],"JU.Measure","javajs.api.Interface JU.Lst $.M3 $.P3 $.P4 $.Quat".split(" "), +function(){var b=H(JU,"Measure",null);b.computeAngle=c(b,"computeAngle",function(a,b,c,l,f,e){l.sub2(a,b);f.sub2(c,b);a=l.angle(f);return e?a/0.017453292:a},"JU.T3,JU.T3,JU.T3,JU.V3,JU.V3,~B");b.computeAngleABC=c(b,"computeAngleABC",function(a,b,c,l){var f=new JU.V3,e=new JU.V3;return JU.Measure.computeAngle(a,b,c,f,e,l)},"JU.T3,JU.T3,JU.T3,~B");b.computeTorsion=c(b,"computeTorsion",function(a,b,c,l,f){var e=a.x-b.x,h=a.y-b.y;a=a.z-b.z;var k=c.x-b.x,j=c.y-b.y,x=c.z-b.z,n=c.x-l.x,q=c.y-l.y,p=c.z-l.z; +l=h*x-a*j;b=a*k-e*x;var s=e*j-h*k;c=j*p-x*q;x=x*n-k*p;k=k*q-j*n;n=1/(c*c+x*x+k*k);j=Math.sqrt(1/(l*l+b*b+s*s));n=Math.sqrt(n);l=(l*c+b*x+s*k)*j*n;1l&&(l=-1);l=Math.acos(l);e=e*c+h*x+a*k;h=Math.abs(e);l=0c.distance(l)&&(f.scale(-1),b=-b));return b},"JU.T3,JU.T3,JU.T3,JU.T3,JU.V3,JU.V3");b.getNormalThroughPoints=c(b,"getNormalThroughPoints",function(a,b,c,l,f){JU.Measure.calcNormalizedNormal(a,b,c,l,f);f.setT(a);return-f.dot(l)},"JU.T3,JU.T3,JU.T3,JU.T3,JU.T3");b.getPlaneProjection=c(b,"getPlaneProjection",function(a,b,c,l){var f=JU.Measure.distanceToPlane(b,a);l.set(b.x,b.y,b.z);l.normalize();0=f*a||Math.abs(f)>Math.abs(a)},"JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P4,JU.V3,JU.V3,~B");b.getIntersectionPP=c(b,"getIntersectionPP",function(a,b){var c=a.x,l=a.y,f=a.z,e=a.w,h=b.x,k=b.y,j=b.z,x=b.w,n=JU.V3.new3(c,l,f),q=JU.V3.new3(h,k,j),p=new JU.V3;p.cross(n, +q);var n=Math.abs(p.x),q=Math.abs(p.y),s=Math.abs(p.z);switch(n>q?n>s?1:3:q>s?2:3){case 1:n=0;q=l*j-k*f;if(0.01>Math.abs(q))return null;f=(f*x-j*e)/q;c=(k*e-x*l)/q;break;case 2:q=c*j-h*f;if(0.01>Math.abs(q))return null;n=(f*x-j*e)/q;f=0;c=(h*e-x*c)/q;break;default:q=c*k-h*l;if(0.01>Math.abs(q))return null;n=(l*x-k*e)/q;f=(h*e-x*c)/q;c=0}l=new JU.Lst;l.addLast(JU.P3.new3(n,f,c));p.normalize();l.addLast(p);return l},"JU.P4,JU.P4");b.getIntersection=c(b,"getIntersection",function(a,b,c,l,f,e){JU.Measure.getPlaneProjection(a, +c,l,f);f.set(c.x,c.y,c.z);f.normalize();null==b&&(b=JU.V3.newV(f));c=b.dot(f);if(0.01>Math.abs(c))return null;e.sub2(l,a);l.scaleAdd2(e.dot(f)/c,b,a);return l},"JU.P3,JU.V3,JU.P4,JU.P3,JU.V3,JU.V3");b.calculateQuaternionRotation=c(b,"calculateQuaternionRotation",function(a,b){b[1]=NaN;var c=new JU.Quat,l=a[0],f=a[1],e=l.length-1;if(2>e||l.length!=f.length)return c;for(var h=0,k=0,j=0,x=0,n=0,q=0,p=0,s=0,r=0,u=new JU.P3,v=new JU.P3,w=l[0],z=f[0],e=e+1;1<=--e;)u.sub2(l[e],w),v.sub2(f[e],z),h+=u.x*v.x, +k+=u.x*v.y,j+=u.x*v.z,x+=u.y*v.x,n+=u.y*v.y,q+=u.y*v.z,p+=u.z*v.x,s+=u.z*v.y,r+=u.z*v.z;b[0]=JU.Measure.getRmsd(a,c);c=R(4,4,0);c[0][0]=h+n+r;c[0][1]=c[1][0]=q-s;c[0][2]=c[2][0]=p-j;c[0][3]=c[3][0]=k-x;c[1][1]=h-n-r;c[1][2]=c[2][1]=k+x;c[1][3]=c[3][1]=p+j;c[2][2]=-h+n-r;c[2][3]=c[3][2]=q+s;c[3][3]=-h-n+r;h=javajs.api.Interface.getInterface("JU.Eigen").setM(c).getEigenvectorsFloatTransposed()[3];c=JU.Quat.newP4(JU.P4.new4(h[1],h[2],h[3],h[0]));b[1]=JU.Measure.getRmsd(a,c);return c},"~A,~A");b.getTransformMatrix4= +c(b,"getTransformMatrix4",function(a,b,c,l){a=JU.Measure.getCenterAndPoints(a);var f=JU.Measure.getCenterAndPoints(b);b=K(2,0);var e=JU.Measure.calculateQuaternionRotation(w(-1,[a,f]),b).getMatrix();null==l?e.rotate(a[0]):l.setT(a[0]);l=JU.V3.newVsub(f[0],a[0]);c.setMV(e,l);return b[1]},"JU.Lst,JU.Lst,JU.M4,JU.P3");b.getCenterAndPoints=c(b,"getCenterAndPoints",function(a){var b=a.size(),c=Array(b+1);c[0]=new JU.P3;if(0=b&&(b=a.length);if(2>=b)return a;var c=new JU.P3,l=new JU.V3,f=new JU.V3;JU.Measure.calcBestAxisThroughPoints(a,b,c,l,f,8);return JU.Measure.getProjectedLineSegment(a,b,c,l,f)},"~A,~N");b.getProjectedLineSegment= +c(b,"getProjectedLineSegment",function(a,b,c,l,f){null==f&&(f=new JU.V3);for(var e=b=null,h,k=3.4028235E38,j=-3.4028235E38,x=0;xj&&(j=n,e=h)}return w(-1,[b,e])},"~A,~N,JU.P3,JU.V3,JU.V3");b.isInTriangle=c(b,"isInTriangle",function(a,b,c,l,f,e,h){f.sub2(l,b);e.sub2(c,b);h.sub2(a,b);a=f.dot(f);b=f.dot(e);f=f.dot(h);c=e.dot(e);e=e.dot(h);h=1/(a*c-b*b);c=(c*f-b*e)*h;e=(a*e-b*f)*h;return 0<=c&&0<=e&&1>= +c+e},"JU.P3,JU.P3,JU.P3,JU.P3,JU.V3,JU.V3,JU.V3");b.calcBestPlaneThroughPoints=c(b,"calcBestPlaneThroughPoints",function(a,b,c){0>=b&&(b=a.length);if(3==b)return JU.Measure.getPlaneThroughPoints(a[0],a[1],a[2],null,null,c),0;var l=c,f=new JU.P4,e=JU.Measure.calcPlaneForMode(a,b,c,"z");if(1E-6>e)return e;var h=JU.Measure.calcPlaneForMode(a,b,f,"y");ha;a++)JU.Measure.testRnd();System.exit(0)});b.getPointsOnPlane=c(b,"getPointsOnPlane",function(a,b){for(var c=new JU.Lst,l=a.length;0<=--l;)0.001>Math.abs(JU.Measure.distanceToPlane(b,a[l]))&&c.addLast(a[l]);return c},"~A,JU.P4");b.getLatticePoints=c(b,"getLatticePoints",function(a,b,c,l){a.addLast(new JU.P3);b=0==b?1:Math.abs(b);c=0==c?1:Math.abs(c);l=0==l?1:Math.abs(l);for(var f=a.size(),e=-b;e<=b;e++)for(var h=-c;h<=c;h++)for(var k=-l;k<=l;k++)for(var j=0;j< +f;j++){var p=JU.P3.new3(e,h,k);p.add(a.get(j));a.addLast(p)}for(j=f;0<=--j;)a.removeItemAt(0);return a},"JU.Lst,~N,~N,~N");b.computeHelicalAxis=c(b,"computeHelicalAxis",function(a,b,c){var l=new JU.V3;l.sub2(b,a);var f=c.getTheta(),e=c.getNormal(),h=l.dot(e);1E-4>Math.abs(h)&&(h=0);var k=new JU.V3;k.cross(l,e);0!=k.dot(k)&&k.normalize();var j=new JU.V3,p=JU.V3.newV(e);0==h&&(h=1.4E-45);p.scale(h);j.sub2(p,l);j.scale(0.5);k.scale(0==f?0:j.length()/Math.tan(3.141592653589793*(f/2/180)));l=JU.V3.newV(k); +0!=f&&l.add(j);j=JU.P3.newP(a);j.sub(l);1.4E-45!=h&&e.scale(h);k=JU.P3.newP(j);k.add(e);f=JU.Measure.computeTorsion(a,j,k,b,!0);if(Float.isNaN(f)||1E-4>l.length())f=c.getThetaDirectedV(e);a=Math.abs(0==f?0:360/f);h=Math.abs(1.4E-45==h?0:e.length()*(0==f?1:360/f));return w(-1,[j,e,l,JU.P3.new3(f,h,a),k])},"JU.P3,JU.P3,JU.Quat");b.axisY=JU.V3.new3(0,1,0)});u("JU");C(null,"JU.MeshSurface","JU.AU $.P3 J.api.Interface JU.BoxInfo $.C $.Geodesic $.TempArray".split(" "),function(){var b=v(function(){this.meshType= +this.oabc=this.slicer=this.vwr=null;this.vc=0;this.surfaceAtoms=this.vertexSource=this.vvs=this.vs=null;this.pc=0;this.pis=null;this.haveQuads=this.isDrawPolygon=this.colorsExplicit=!1;this.colixBack=this.colix=0;this.isColorSolid=!0;this.normalsTemp=this.normals=this.vcs=this.pcs=this.altVertices=this.offset=null;this.normixCount=this.normalCount=0;this.vertexSets=this.surfaceSet=this.mat4=this.bsPolygons=null;this.nSets=0;this.dataOnly=!1;this.vertexCount0=this.polygonCount0=this.iC=this.iB=this.iA= +this.lastColix=this.lastColor=0;this.bsSlabGhost=this.bsSlabDisplay=null;this.slabColix=this.slabMeshType=0;this.slabOptions=this.bsDisplay=null;this.mergePolygonCount0=this.mergeVertexCount0=0;this.isMerged=!1;r(this,arguments)},JU,"MeshSurface",null);c(b,"getMeshSlicer",function(){return null==this.slicer?this.slicer=J.api.Interface.getInterface("JU.MeshSlicer",this.vwr,"script").set(this):this.slicer});b.newMesh=c(b,"newMesh",function(a,b,c,l,f,e){var h=new JU.MeshSurface;h.pis=l;a?h.altVertices= +b:h.vs=b;h.vc=0==c?b.length:c;h.normals=f;h.normalCount=0==e&&null!=f?f.length:e;return h},"~B,~A,~N,~A,~A,~N");c(b,"getVertices",function(){return null==this.altVertices?this.vs:this.altVertices});c(b,"getFaces",function(){return this.pis});c(b,"setColix",function(a){this.colix=a},"~N");c(b,"setColixBack",function(a){this.colixBack=a},"~N");c(b,"addV",function(a,b){0==this.vc?this.vs=Array(25):this.vc==this.vs.length&&(this.vs=JU.AU.doubleLength(this.vs));this.vs[this.vc]=b?JU.P3.newP(a):a;return this.vc++}, +"JU.T3,~B");c(b,"addTriangle",function(a,b,c){this.addPolygon(E(-1,[a,b,c]),null)},"~N,~N,~N");c(b,"addQuad",function(a,b,c,l){this.haveQuads=!0;this.addPolygon(E(-1,[a,b,c,l]),null)},"~N,~N,~N,~N");c(b,"setPolygonCount",function(a){this.pc=a;if(!(0>a)&&(null==this.pis||a>this.pis.length))this.pis=JU.AU.newInt2(a)},"~N");c(b,"addVCVal",function(a,b,c){0==this.vc?this.vvs=K(25,0):this.vc>=this.vvs.length&&(this.vvs=JU.AU.doubleLengthF(this.vvs));this.vvs[this.vc]=b;return this.addV(a,c)},"JU.T3,~N,~B"); +c(b,"addTriangleCheck",function(a,b,c,l,f,e){return null==this.vs||null!=this.vvs&&(Float.isNaN(this.vvs[a])||Float.isNaN(this.vvs[b])||Float.isNaN(this.vvs[c]))||Float.isNaN(this.vs[a].x)||Float.isNaN(this.vs[b].x)||Float.isNaN(this.vs[c].x)?-1:this.addPolygonV3(a,b,c,l,f,e,null)},"~N,~N,~N,~N,~N,~N");c(b,"addPolygonV3",function(a,b,c,l,f,e,h){return this.dataOnly?this.addPolygon(E(-1,[a,b,c,l]),h):this.addPolygonC(E(-1,[a,b,c,l,f]),e,h,0>f)},"~N,~N,~N,~N,~N,~N,JU.BS");c(b,"addPolygonC",function(a, +b,c,l){if(0!=b){if(null==this.pcs||0==this.pc)this.lastColor=0;l?this.colorsExplicit=!0:(null==this.pcs?this.pcs=W(25,0):this.pc>=this.pcs.length&&(this.pcs=JU.AU.doubleLengthShort(this.pcs)),this.pcs[this.pc]=l?2047:b==this.lastColor?this.lastColix:this.lastColix=JU.C.getColix(this.lastColor=b))}return this.addPolygon(a,c)},"~A,~N,JU.BS,~B");c(b,"addPolygon",function(a,b){var c=this.pc;0==c?this.pis=JU.AU.newInt2(25):c==this.pis.length&&(this.pis=JU.AU.doubleLength(this.pis));null!=b&&b.set(c);this.pis[this.pc++]= +a;return c},"~A,JU.BS");c(b,"invalidatePolygons",function(){for(var a=this.pc;--a>=this.mergePolygonCount0;)if((null==this.bsSlabDisplay||this.bsSlabDisplay.get(a))&&null==this.setABC(a))this.pis[a]=null});c(b,"setABC",function(a){if(null!=this.bsSlabDisplay&&!this.bsSlabDisplay.get(a)&&(null==this.bsSlabGhost||!this.bsSlabGhost.get(a)))return null;a=this.pis[a];if(null==a||3>a.length)return null;this.iA=a[0];this.iB=a[1];this.iC=a[2];return null==this.vvs||!Float.isNaN(this.vvs[this.iA])&&!Float.isNaN(this.vvs[this.iB])&& +!Float.isNaN(this.vvs[this.iC])?a:null},"~N");c(b,"setTranslucentVertices",function(){},"JU.BS");c(b,"getSlabColor",function(){return null==this.bsSlabGhost?null:JU.C.getHexCode(this.slabColix)});c(b,"getSlabType",function(){return null!=this.bsSlabGhost&&1073742018==this.slabMeshType?"mesh":null});c(b,"resetSlab",function(){null!=this.slicer&&this.slicer.slabPolygons(JU.TempArray.getSlabObjectType(1073742333,null,!1,null),!1)});c(b,"slabPolygonsList",function(a,b){this.getMeshSlicer();for(var c= +0;ce?5:6);--n>=p;){var q=j[n];if(!f.get(q)){f.set(q);var r=JU.Normix.vertexVectors[q],s;s=r.x-a;var u=s*s;u>=h||(s=r.y-b,u+=s*s,u>=h||(s=r.z-c,u+=s*s,u>=h||(e=q,h=u)))}}return e},"~N,~N,~N,~N,JU.BS");b.normixCount=0;b.vertexVectors=null;b.inverseNormixes=null;b.neighborVertexesArrays=null});u("JU");C(null,"JU.Parser",["JU.PT"],function(){var b=H(JU,"Parser",null);b.parseStringInfestedFloatArray=c(b,"parseStringInfestedFloatArray", +function(a,b,c){return JU.Parser.parseFloatArrayBsData(JU.PT.getTokens(a),b,c)},"~S,JU.BS,~A");b.parseFloatArrayBsData=c(b,"parseFloatArrayBsData",function(a,b,c){for(var l=c.length,f=a.length,e=0,h=0,k=null!=b,j=k?b.nextSetBit(0):0;0<=j&&j=j||j>=r.length?0:j-1;var s=0==j?0:r[j-1],u=r.length;null==k&&(k=K(u-j,0));for(var v=k.length,w=0>=h?Math.max(e,c):Math.max(e+h,c+l)-1,z=null!=b;j=h?JU.PT.getTokens(A):null;if(0>=h){if(B.lengthA||A>=v||0>(A=f[A]))continue;z&&b.set(A)}else{z?n=b.nextSetBit(n+1):n++;if(0>n||n>=v)break;A=n}k[A]=p}return k},"~S,JU.BS,~N,~N,~A,~N,~N,~A,~N");b.fixDataString=c(b,"fixDataString",function(a){a=a.$replace(";",0>a.indexOf("\n")?"\n":" ");a=JU.PT.trim(a,"\n \t");a=JU.PT.rep(a,"\n ","\n");return a=JU.PT.rep(a,"\n\n","\n")},"~S");b.markLines=c(b,"markLines",function(a,b){for(var c=0,l=a.length;0<=--l;)a.charAt(l)==b&&c++;for(var l=E(c+1,0),f=c=0;0<=(f=a.indexOf(b, +f));)l[c++]=++f;l[c]=a.length;return l},"~S,~S")});u("JU");C(["JU.P3"],"JU.Point3fi",null,function(){var b=v(function(){this.mi=-1;this.sZ=this.sY=this.sX=this.i=0;this.sD=-1;r(this,arguments)},JU,"Point3fi",JU.P3,Cloneable);c(b,"copy",function(){try{return this.clone()}catch(a){if(F(a,"CloneNotSupportedException"))return null;throw a;}})});u("JU");p=v(function(){this.height=this.width=this.y=this.x=0;r(this,arguments)},JU,"Rectangle",null);c(p,"contains",function(b,a){return b>=this.x&&a>=this.y&& +b-this.x>8&65280|128;this.g=a&65280|128;this.b=a<<8&65280|128},"~N");c(b,"setRgb",function(a){this.r=a.r;this.g=a.g;this.b=a.b},"JU.Rgb16");c(b,"diffDiv",function(a,b,c){this.r=B((a.r-b.r)/c);this.g=B((a.g-b.g)/c);this.b= +B((a.b-b.b)/c)},"JU.Rgb16,JU.Rgb16,~N");c(b,"setAndIncrement",function(a,b){this.r=a.r;a.r+=b.r;this.g=a.g;a.g+=b.g;this.b=a.b;a.b+=b.b},"JU.Rgb16,JU.Rgb16");c(b,"getArgb",function(){return 4278190080|this.r<<8&16711680|this.g&65280|this.b>>8});j(b,"toString",function(){return(new JU.SB).append("Rgb16(").appendI(this.r).appendC(",").appendI(this.g).appendC(",").appendI(this.b).append(" -> ").appendI(this.r>>8&255).appendC(",").appendI(this.g>>8&255).appendC(",").appendI(this.b>>8&255).appendC(")").toString()})}); +u("JU");C(["JU.AU","$.V3"],"JU.Shader",["JU.CU","JU.C"],function(){var b=v(function(){this.zLight=this.yLight=this.xLight=0;this.lightSource=null;this.specularOn=!0;this.usePhongExponent=!1;this.ambientPercent=45;this.diffusePercent=84;this.specularExponent=6;this.specularPercent=22;this.specularPower=40;this.phongExponent=64;this.specularFactor=this.intenseFraction=this.diffuseFactor=this.ambientFraction=0;this.ashadesGreyscale=this.ashades=null;this.celOn=!1;this.celPower=10;this.celZ=this.celRGB= +0;this.useLight=!1;this.sphereShadeIndexes=null;this.seed=305419897;this.ellipsoidShades=this.sphereShapeCache=null;this.nIn=this.nOut=0;r(this,arguments)},JU,"Shader",null);P(b,function(){this.lightSource=new JU.V3;this.ambientFraction=this.ambientPercent/100;this.diffuseFactor=this.diffusePercent/100;this.intenseFraction=this.specularPower/100;this.specularFactor=this.specularPercent/100;this.ashades=JU.AU.newInt2(128);this.sphereShadeIndexes=Q(65536,0);this.sphereShapeCache=JU.AU.newInt2(128)}); +A(b,function(){this.setLightSource(-1,-1,2.5)});c(b,"setLightSource",function(a,b,c){this.lightSource.set(a,b,c);this.lightSource.normalize();this.xLight=this.lightSource.x;this.yLight=this.lightSource.y;this.zLight=this.lightSource.z},"~N,~N,~N");c(b,"setCel",function(a,b,c){a=a&&0!=b;c=JU.C.getArgb(JU.C.getBgContrast(c));c=4278190080==c?4278453252:-1==c?-2:c+1;this.celOn==a&&this.celRGB==c&&this.celPower==b||(this.celOn=a,this.celPower=b,this.useLight=!this.celOn||0=a||(2047==a&&a++,this.ashades=JU.AU.arrayCopyII(this.ashades,a),null!=this.ashadesGreyscale&& +(this.ashadesGreyscale=JU.AU.arrayCopyII(this.ashadesGreyscale,a)))},"~N");c(b,"getShades2",function(a,b){var c=E(64,0);if(0==a)return c;for(var l=a>>16&255,f=a>>8&255,e=a&255,h=0,k=0,j=0,p=this.ambientFraction;;)if(h=l*p+0.5,k=f*p+0.5,j=e*p+0.5,0h&&4>k&&4>j)l++,f++,e++,0.1>p&&(p+=0.1),a=JU.CU.rgb(B(Math.floor(l)),B(Math.floor(f)),B(Math.floor(e)));else break;var n=0,p=(1-p)/52,l=l*p,f=f*p,e=e*p;if(this.celOn){p=JU.CU.rgb(B(Math.floor(h)),B(Math.floor(k)),B(Math.floor(j)));if(0<=this.celPower)for(;32> +n;++n)c[n]=p;k+=32*f;j+=32*e;for(p=JU.CU.rgb(B(Math.floor(h+32*l)),B(Math.floor(k)),B(Math.floor(j)));64>n;n++)c[n]=p;c[0]=c[1]=this.celRGB}else{for(;52>n;++n)c[n]=JU.CU.rgb(B(Math.floor(h)),B(Math.floor(k)),B(Math.floor(j))),h+=l,k+=f,j+=e;c[n++]=a;p=this.intenseFraction/(64-n);l=(255.5-h)*p;f=(255.5-k)*p;for(e=(255.5-j)*p;64>n;n++)h+=l,k+=f,j+=e,c[n]=JU.CU.rgb(B(Math.floor(h)),B(Math.floor(k)),B(Math.floor(j)))}if(b)for(;0<=--n;)c[n]=JU.CU.toFFGGGfromRGB(c[n]);return c},"~N,~B");c(b,"getShadeIndex", +function(a,b,c){var l=Math.sqrt(a*a+b*b+c*c);return Math.round(63*this.getShadeF(a/l,b/l,c/l))},"~N,~N,~N");c(b,"getShadeB",function(a,b,c){return Math.round(63*this.getShadeF(a,b,c))},"~N,~N,~N");c(b,"getShadeFp8",function(a,b,c){var l=Math.sqrt(a*a+b*b+c*c);return B(Math.floor(16128*this.getShadeF(a/l,b/l,c/l)))},"~N,~N,~N");c(b,"getShadeF",function(a,b,c){b=this.useLight?a*this.xLight+b*this.yLight+c*this.zLight:c;if(0>=b)return 0;a=b*this.diffuseFactor;if(this.specularOn&&(b=2*b*c-this.zLight, +0>8;if(!this.useLight)return a;(b&255)>this.nextRandom8Bit()&&++a;b=this.seed&65535;21845>b&&0a&&++a;return a},"~N,~N,~N,~N");c(b,"calcSphereShading",function(){for(var a=-127.5,b=0;256>b;++a,++b)for(var c= +-127.5,l=a*a,f=0;256>f;++c,++f){var e=0,h=16900-l-c*c;0>23});c(b,"getEllipsoidShade",function(a,b,c,l,f){var e=f.m00*a+f.m01*b+f.m02*c+f.m03,h=f.m10*a+f.m11*b+f.m12*c+f.m13;a=f.m20*a+f.m21*b+f.m22*c+f.m23;l=Math.min(l/2,45)/Math.sqrt(e*e+h*h+a*a);e=D(-e*l);h=D(-h*l);l=D(a*l);if(a=-20>e||20<=e||-20>h||20<=h||0>l||40<= +l){for(;0==e%2&&0==h%2&&0==l%2&&0>=1,h>>=1,l>>=1;a=-20>e||20<=e||-20>h||20<=h||0>l||40<=l}a?this.nOut++:this.nIn++;return a?this.getShadeIndex(e,h,l):this.ellipsoidShades[e+20][h+20][l]},"~N,~N,~N,~N,JU.M4");c(b,"createEllipsoidShades",function(){this.ellipsoidShades=Q(40,40,40,0);for(var a=0;40>a;a++)for(var b=0;40>b;b++)for(var c=0;40>c;c++)this.ellipsoidShades[a][b][c]=this.getShadeIndex(a-20,b-20,c)})});u("JU");C(["JV.Viewer"],"JU.SimpleUnitCell","JU.AU $.M4 $.P3 $.P4 $.PT $.V3 JU.Escape".split(" "), +function(){var b=v(function(){this.unitCellParams=null;this.slop=0;this.matrixFtoCNoOffset=this.matrixCtoFNoOffset=this.matrixFractionalToCartesian=this.matrixCartesianToFractional=null;this.volume=0;this.dimension=3;this.fractionalOrigin=null;this.c_=this.b_=this.a_=this.cB_=this.cA_=this.sinGamma=this.cosGamma=this.sinBeta=this.cosBeta=this.sinAlpha=this.cosAlpha=this.gamma=this.beta=this.alpha=this.c=this.b=this.a=this.nc=this.nb=this.na=0;r(this,arguments)},JU,"SimpleUnitCell",null);P(b,function(){this.slop= +JV.Viewer.isHighPrecision?1E-12:1E-4});A(b,function(){this.fractionalOrigin=new JU.P3});c(b,"getPrecision",function(){return this.slop});c(b,"setPrecision",function(a){this.unitCellParams[26]=this.slop=!Float.isNaN(a)?a:!Float.isNaN(this.unitCellParams[26])?this.unitCellParams[26]:JV.Viewer.isHighPrecision?1E-12:1E-4},"~N");c(b,"isSupercell",function(){return 1=a[0]?3:0>a[1]?1:0>a[2]?2:3},"~A");c(b,"init",function(a){null==a&&(a=K(-1,[1,1,1,90,90,90]));if(JU.SimpleUnitCell.isValid(a)){this.unitCellParams=JU.SimpleUnitCell.newParams(a,NaN);var b=!1;this.dimension=JU.SimpleUnitCell.getDimensionFromParams(a);this.a=a[0];this.b=a[1];this.c=a[2];this.alpha=a[3];this.beta=a[4];this.gamma=a[5];-1==this.gamma&& +0=this.a&&0>=this.c){var e=JU.SimpleUnitCell.newV(a,6),h=JU.SimpleUnitCell.newV(a,9),k=JU.SimpleUnitCell.newV(a,12); +this.setABC(e,h,k);0>this.c&&(a=JU.AU.arrayCopyF(a,-1),0>this.b&&(h.set(0,0,1),h.cross(h,e),0.001>h.length()&&h.set(0,1,0),h.normalize(),a[9]=h.x,a[10]=h.y,a[11]=h.z),0>this.c&&(k.cross(e,h),k.normalize(),a[12]=k.x,a[13]=k.y,a[14]=k.z))}this.a*=c;0>=this.b?this.b=this.c=1:0>=this.c?(this.c=1,this.b*=l):(this.b*=l,this.c*=f);this.setCellParams();if(21e;e++){switch(e%4){case 0:h=c;break;case 1:h=l;break;case 2:h=f;break;default:h=1}b[e]=a[6+e]*h}this.matrixCartesianToFractional= +JU.M4.newA16(b);this.matrixCartesianToFractional.getTranslation(this.fractionalOrigin);this.matrixFractionalToCartesian=JU.M4.newM4(this.matrixCartesianToFractional).invert();1==a[0]&&this.setParamsFromMatrix()}else 14f;f++)c[f]=fl&&(c[26]=b);return c},"~A,~N");b.addVectors=c(b,"addVectors",function(a){for(var b=JU.SimpleUnitCell.newA(a).matrixFractionalToCartesian,c=0;9>c;c++)a[6+c]=b.getElement(c%3,B(c/3))},"~A");c(b,"setParamsFromMatrix", +function(){var a=JU.V3.new3(1,0,0),b=JU.V3.new3(0,1,0),c=JU.V3.new3(0,0,1);this.matrixFractionalToCartesian.rotate(a);this.matrixFractionalToCartesian.rotate(b);this.matrixFractionalToCartesian.rotate(c);this.setABC(a,b,c);this.setCellParams()});c(b,"setABC",function(a,b,c){JU.SimpleUnitCell.fillParams(a,b,c,this.unitCellParams);a=this.unitCellParams;this.a=a[0];this.b=a[1];this.c=a[2];this.alpha=a[3];this.beta=a[4];this.gamma=a[5]},"JU.V3,JU.V3,JU.V3");b.fillParams=c(b,"fillParams",function(a,b, +c,l){null==a&&(a=JU.SimpleUnitCell.newV(l,6),b=JU.SimpleUnitCell.newV(l,9),c=JU.SimpleUnitCell.newV(l,12));var f=a.length(),e=b.length(),h=c.length();0!=f&&(0==e?e=h=-1:0==h&&(h=-1),l[0]=f,l[1]=e,l[2]=h,l[3]=0>e||0>h?90:b.angle(c)/0.017453292519943295,l[4]=0>h?90:a.angle(c)/0.017453292519943295,l[5]=0>e?90:a.angle(b)/0.017453292519943295)},"JU.V3,JU.V3,JU.V3,~A");c(b,"setCellParams",function(){this.cosAlpha=Math.cos(0.017453292519943295*this.alpha);this.sinAlpha=Math.sin(0.017453292519943295*this.alpha); +this.cosBeta=Math.cos(0.017453292519943295*this.beta);this.sinBeta=Math.sin(0.017453292519943295*this.beta);this.cosGamma=Math.cos(0.017453292519943295*this.gamma);this.sinGamma=Math.sin(0.017453292519943295*this.gamma);var a=Math.sqrt(this.sinAlpha*this.sinAlpha+this.sinBeta*this.sinBeta+this.sinGamma*this.sinGamma+2*this.cosAlpha*this.cosBeta*this.cosGamma-2);this.volume=this.a*this.b*this.c*a;this.cA_=(this.cosAlpha-this.cosBeta*this.cosGamma)/this.sinGamma;this.cB_=a/this.sinGamma;this.a_=this.b* +this.c*this.sinAlpha/this.volume;this.b_=this.a*this.c*this.sinBeta/this.volume;this.c_=this.a*this.b*this.sinGamma/this.volume});c(b,"getFractionalOrigin",function(){return this.fractionalOrigin});c(b,"toSupercell",function(a){a.x/=this.na;a.y/=this.nb;a.z/=this.nc;return a},"JU.P3");c(b,"toCartesian",function(a,b){null!=this.matrixFractionalToCartesian&&(b?this.matrixFtoCNoOffset:this.matrixFractionalToCartesian).rotTrans(a)},"JU.T3,~B");c(b,"toFractionalM",function(a){null!=this.matrixCartesianToFractional&& +(a.mul(this.matrixFractionalToCartesian),a.mul2(this.matrixCartesianToFractional,a))},"JU.M4");c(b,"toFractional",function(a,b){null!=this.matrixCartesianToFractional&&(b?this.matrixCtoFNoOffset:this.matrixCartesianToFractional).rotTrans(a)},"JU.T3,~B");c(b,"isPolymer",function(){return 1==this.dimension});c(b,"isSlab",function(){return 2==this.dimension});c(b,"getUnitCellParams",function(){return this.unitCellParams});c(b,"getUnitCellAsArray",function(a){var b=this.matrixFractionalToCartesian;return a? +K(-1,[b.m00,b.m10,b.m20,b.m01,b.m11,b.m21,b.m02,b.m12,b.m22]):K(-1,[this.a,this.b,this.c,this.alpha,this.beta,this.gamma,b.m00,b.m10,b.m20,b.m01,b.m11,b.m21,b.m02,b.m12,b.m22,this.dimension,this.volume])},"~B");c(b,"getInfo",function(a){switch(a){case 0:return this.a;case 1:return this.b;case 2:return this.c;case 3:return this.alpha;case 4:return this.beta;case 5:return this.gamma;case 6:return this.dimension;case 7:return JU.SimpleUnitCell.isHexagonal(this.unitCellParams)?1:0;case 8:return JU.SimpleUnitCell.isRhombohedral(this.unitCellParams)? +1:0}return NaN},"~N");b.getReciprocal=c(b,"getReciprocal",function(a,b,c){var l=4==a.length?1:0,f=Array(4);f[0]=1==l?JU.P3.newP(a[0]):new JU.P3;0==c&&(c=6.283185307179586);for(var e=0;3>e;e++){var h=f[e+1]=new JU.P3;h.cross(a[(e+1)%3+l],a[(e+2)%3+l]);var k=a[e+l].dot(h);-1==c&&(c=Math.sqrt(k));h.scale(c/k)}if(null==b)return f;for(e=0;4>e;e++)b[e]=f[e];return b},"~A,~A,~N");b.setAbc=c(b,"setAbc",function(a,b,c){if(null!=a&&(null==b&&(b=K(6,0)),a=JU.PT.split(a.$replace(",","="),"="),12<=a.length))for(var l= +0;6>l;l++)b[l]=JU.PT.parseFloat(a[2*l+1]);return null==c?null:JU.SimpleUnitCell.setAbcFromParams(b,c)},"~S,~A,~A");b.setAbcFromParams=c(b,"setAbcFromParams",function(a,b){var c=JU.SimpleUnitCell.newA(a).getUnitCellAsArray(!0);b[1].set(c[0],c[1],c[2]);b[2].set(c[3],c[4],c[5]);b[3].set(c[6],c[7],c[8]);return b},"~A,~A");c(b,"unitizeDim",function(a,b){switch(a){case 3:b.z=JU.SimpleUnitCell.unitizeX(b.z,this.slop);case 2:b.y=JU.SimpleUnitCell.unitizeX(b.y,this.slop);case 1:b.x=JU.SimpleUnitCell.unitizeX(b.x, +this.slop)}},"~N,JU.T3");b.unitizeDimRnd=c(b,"unitizeDimRnd",function(a,b,c){switch(a){case 3:b.z=JU.SimpleUnitCell.unitizeXRnd(b.z,c);case 2:b.y=JU.SimpleUnitCell.unitizeXRnd(b.y,c);case 1:b.x=JU.SimpleUnitCell.unitizeXRnd(b.x,c)}},"~N,JU.T3,~N");b.unitizeX=c(b,"unitizeX",function(a,b){a-=Math.floor(a);if(a>1-b||a1-b||a=b&&Math.abs(a-b)<12*this.slop?b:-1},"~N");c(b,"twelfthify",function(a){switch(this.dimension){case 3:a.z=this.setTwelfths(a.z);case 2:a.y=this.setTwelfths(a.y);case 1:a.x=this.setTwelfths(a.x)}},"JU.P3");c(b,"setTwelfths",function(a){var b=this.twelfthsOf(a);return 0<=b?b/12:a},"~N");b.ijkToPoint3f=c(b,"ijkToPoint3f",function(a,b,c,l){var f=1E9=a.x&&5>=a.y&&5>=a.z?JU.P4.new4(555,100*(a.x+4)+10*(a.y+4)+a.z+4,b,0):JU.P4.new4(1500500500,1500500500+1E6*a.x+1E3*a.y+a.z,b,1500500+a.z)},"JU.T3,~N");b.escapeMultiplier=c(b,"escapeMultiplier",function(a){if(z(a,"JU.P4")){var b=1E3*B(Math.floor(a.x/1E3))+B(Math.floor(a.w/1E3))-1E3,c=1E3*B(Math.floor(a.y/1E3))+B(Math.floor(a.w))%1E3;return"{"+b+" "+c+" "+a.z+"}"}return JU.Escape.eP(a)},"JU.T3");b.setMinMaxLatticeParameters=c(b,"setMinMaxLatticeParameters", +function(a,b,c,l){if(c.x<=c.y&&555<=c.y){var f=new JU.P3;JU.SimpleUnitCell.ijkToPoint3f(c.x,f,0,l);b.x=D(f.x);b.y=D(f.y);b.z=D(f.z);JU.SimpleUnitCell.ijkToPoint3f(c.y,f,1,l);c.x=D(f.x);c.y=D(f.y);c.z=D(f.z)}switch(a){case 1:b.y=0,c.y=1;case 2:b.z=0,c.z=1}},"~N,JU.P3i,JU.P3i,~N");b.isHexagonal=c(b,"isHexagonal",function(a){return JU.SimpleUnitCell.approx0(a[0]-a[1])&&JU.SimpleUnitCell.approx0(a[3]-90)&&JU.SimpleUnitCell.approx0(a[4]-90)&&(JU.SimpleUnitCell.approx0(a[5]-120)||-1==a[5])},"~A");b.isRhombohedral= +c(b,"isRhombohedral",function(a){return JU.SimpleUnitCell.approx0(a[0]-a[1])&&JU.SimpleUnitCell.approx0(a[1]-a[2])&&!JU.SimpleUnitCell.approx0(a[3]-90)&&JU.SimpleUnitCell.approx0(a[3]-a[4])&&JU.SimpleUnitCell.approx0(a[4]-a[5])},"~A");b.approx0=c(b,"approx0",function(a){return 0.001>Math.abs(a)},"~N");b.getCellRange=c(b,"getCellRange",function(a,b){var c=z(a,"JU.T4")?D(a.w):0;JU.SimpleUnitCell.ijkToPoint3f(D(a.x),b[0],0,c);JU.SimpleUnitCell.ijkToPoint3f(D(a.y),b[1],1,c);0>a.z&&(b[0].scale(-1/a.z), +b[1].scale(-1/a.z));return c},"JU.T3,~A");j(b,"toString",function(){return"["+this.a+" "+this.b+" "+this.c+" "+this.alpha+" "+this.beta+" "+this.gamma+"]"})});u("JU");C(null,"JU.TempArray",["JU.P3","$.P3i"],function(){var b=v(function(){this.freeEnum=this.lengthsFreeEnum=this.freeScreens=this.lengthsFreeScreens=this.freePoints=this.lengthsFreePoints=null;r(this,arguments)},JU,"TempArray",null);P(b,function(){this.lengthsFreePoints=E(6,0);this.freePoints=Array(6);this.lengthsFreeScreens=E(6,0);this.freeScreens= +Array(6);this.lengthsFreeEnum=E(2,0);this.freeEnum=Array(2)});A(b,function(){});c(b,"clear",function(){this.clearTempPoints();this.clearTempScreens()});b.findBestFit=c(b,"findBestFit",function(a,b){for(var c=-1,l=2147483647,f=b.length;0<=--f;){var e=b[f];e>=a&&ea;a++)this.lengthsFreePoints[a]=0,this.freePoints[a]=null});c(b,"allocTempPoints",function(a){var b;b=JU.TempArray.findBestFit(a,this.lengthsFreePoints);if(0a;a++)this.lengthsFreeScreens[a]=0,this.freeScreens[a]=null});c(b,"allocTempScreens",function(a){var b;b=JU.TempArray.findBestFit(a,this.lengthsFreeScreens);if(0=--this.tracePt){for(var c=this.trace[this.trace.length-1],l=this.trace.length;1<=--l;)this.trace[l]=this.trace[l-1];this.trace[1]=c;this.tracePt=1}c=this.trace[this.tracePt];null==c&&(c=this.trace[this.tracePt]=new JU.P3);c.setT(b)}return this.trace}, +"~N,JU.Point3fi")});u("JV");C(["J.api.EventManager","JU.Rectangle","JV.MouseState"],["JV.MotionPoint","$.ActionManager","$.Gesture"],"JU.AU $.PT J.api.Interface J.i18n.GT JS.SV $.ScriptEval J.thread.HoverWatcherThread JU.BSUtil $.Escape $.Logger $.Point3fi JV.Viewer JV.binding.Binding $.JmolBinding".split(" "),function(){var b=v(function(){this.vwr=null;this.isMultiTouch=this.haveMultiTouchInput=!1;this.predragBinding=this.rasmolBinding=this.dragBinding=this.pfaatBinding=this.jmolBinding=this.b=null; +this.LEFT_DRAGGED=0;this.hoverable=!1;this.dragGesture=this.hoverWatcherThread=null;this.apm=1;this.pickingStyleSelect=this.pickingStyle=this.bondPickingMode=0;this.pickingStyleMeasure=5;this.rootPickingStyle=0;this.mouseDragFactor=this.gestureSwipeFactor=1;this.mouseWheelFactor=1.15;this.dragged=this.pressed=this.clicked=this.moved=this.current=null;this.clickedCount=this.pressedCount=0;this.dragSelectedMode=this.labelMode=this.drawMode=!1;this.measuresEnabled=!0;this.hoverActive=this.haveSelection= +!1;this.mp=null;this.dragAtomIndex=-1;this.rubberbandSelectionMode=this.mkBondPressed=!1;this.rectRubber=null;this.isAltKeyReleased=!0;this.isMultiTouchServer=this.isMultiTouchClient=this.keyProcessing=!1;this.clickAction=this.dragAction=this.pressAction=0;this.measurementQueued=null;this.selectionWorking=this.zoomTrigger=!1;r(this,arguments)},JV,"ActionManager",null,J.api.EventManager);P(b,function(){this.current=new JV.MouseState("current");this.moved=new JV.MouseState("moved");this.clicked=new JV.MouseState("clicked"); +this.pressed=new JV.MouseState("pressed");this.dragged=new JV.MouseState("dragged");this.rectRubber=new JU.Rectangle});c(b,"setViewer",function(a){this.vwr=a;JV.Viewer.isJS||this.createActions();this.setBinding(this.jmolBinding=new JV.binding.JmolBinding);this.LEFT_DRAGGED=JV.binding.Binding.getMouseAction(1,16,1);this.dragGesture=new JV.Gesture(20,a)},"JV.Viewer,~S");c(b,"isHoverable",function(){return this.hoverable});c(b,"checkHover",function(){if(this.zoomTrigger)this.zoomTrigger=!1,8==this.vwr.currentCursor&& +this.vwr.setCursor(0),this.vwr.setInMotion(!1);else if(!this.vwr.getInMotion(!0)&&!this.vwr.tm.spinOn&&!this.vwr.tm.navOn&&!this.vwr.checkObjectHovered(this.current.x,this.current.y)){var a=this.vwr.findNearestAtomIndex(this.current.x,this.current.y);if(!(0>a)){var b=2==this.apm&&this.bnd(JV.binding.Binding.getMouseAction(this.clickedCount,this.moved.modifiers,1),[10]);this.vwr.hoverOn(a,b)}}});c(b,"processMultitouchEvent",function(){},"~N,~N,~N,~N,JU.P3,~N");c(b,"bind",function(a,b){var c=JV.ActionManager.getActionFromName(b), +l=JV.binding.Binding.getMouseActionStr(a);0!=l&&(0<=c?this.b.bindAction(l,c):this.b.bindName(l,b))},"~S,~S");c(b,"clearBindings",function(){this.setBinding(this.jmolBinding=new JV.binding.JmolBinding);this.rasmolBinding=this.dragBinding=this.pfaatBinding=null});c(b,"unbindAction",function(a,b){if(null==a&&null==b)this.clearBindings();else{var c=JV.ActionManager.getActionFromName(b),l=JV.binding.Binding.getMouseActionStr(a);0<=c?this.b.unbindAction(l,c):0!=l&&this.b.unbindName(l,b);null==b&&this.b.unbindUserAction(a)}}, +"~S,~S");b.newAction=c(b,"newAction",function(a,b,c){JV.ActionManager.actionInfo[a]=c;JV.ActionManager.actionNames[a]=b},"~N,~S,~S");c(b,"createActions",function(){null==JV.ActionManager.actionInfo[0]&&(JV.ActionManager.newAction(0,"_assignNew",J.i18n.GT.o(J.i18n.GT.$("assign/new atom or bond (requires {0})"),"set picking assignAtom_??/assignBond_?")),JV.ActionManager.newAction(1,"_center",J.i18n.GT.$("center")),JV.ActionManager.newAction(2,"_clickFrank",J.i18n.GT.$("pop up recent context menu (click on Jmol frank)")), +JV.ActionManager.newAction(4,"_deleteAtom",J.i18n.GT.o(J.i18n.GT.$("delete atom (requires {0})"),"set picking DELETE ATOM")),JV.ActionManager.newAction(5,"_deleteBond",J.i18n.GT.o(J.i18n.GT.$("delete bond (requires {0})"),"set picking DELETE BOND")),JV.ActionManager.newAction(6,"_depth",J.i18n.GT.o(J.i18n.GT.$("adjust depth (back plane; requires {0})"),"SLAB ON")),JV.ActionManager.newAction(7,"_dragAtom",J.i18n.GT.o(J.i18n.GT.$("move atom (requires {0})"),"set picking DRAGATOM")),JV.ActionManager.newAction(8, +"_dragDrawObject",J.i18n.GT.o(J.i18n.GT.$("move whole DRAW object (requires {0})"),"set picking DRAW")),JV.ActionManager.newAction(9,"_dragDrawPoint",J.i18n.GT.o(J.i18n.GT.$("move specific DRAW point (requires {0})"),"set picking DRAW")),JV.ActionManager.newAction(10,"_dragLabel",J.i18n.GT.o(J.i18n.GT.$("move label (requires {0})"),"set picking LABEL")),JV.ActionManager.newAction(11,"_dragMinimize",J.i18n.GT.o(J.i18n.GT.$("move atom and minimize molecule (requires {0})"),"set picking DRAGMINIMIZE")), +JV.ActionManager.newAction(12,"_dragMinimizeMolecule",J.i18n.GT.o(J.i18n.GT.$("move and minimize molecule (requires {0})"),"set picking DRAGMINIMIZEMOLECULE")),JV.ActionManager.newAction(13,"_dragSelected",J.i18n.GT.o(J.i18n.GT.$("move selected atoms (requires {0})"),"set DRAGSELECTED")),JV.ActionManager.newAction(14,"_dragZ",J.i18n.GT.o(J.i18n.GT.$("drag atoms in Z direction (requires {0})"),"set DRAGSELECTED")),JV.ActionManager.newAction(15,"_multiTouchSimulation",J.i18n.GT.$("simulate multi-touch using the mouse)")), +JV.ActionManager.newAction(16,"_navTranslate",J.i18n.GT.o(J.i18n.GT.$("translate navigation point (requires {0} and {1})"),w(-1,["set NAVIGATIONMODE","set picking NAVIGATE"]))),JV.ActionManager.newAction(17,"_pickAtom",J.i18n.GT.$("pick an atom")),JV.ActionManager.newAction(3,"_pickConnect",J.i18n.GT.o(J.i18n.GT.$("connect atoms (requires {0})"),"set picking CONNECT")),JV.ActionManager.newAction(18,"_pickIsosurface",J.i18n.GT.o(J.i18n.GT.$("pick an ISOSURFACE point (requires {0}"),"set DRAWPICKING")), +JV.ActionManager.newAction(19,"_pickLabel",J.i18n.GT.o(J.i18n.GT.$("pick a label to toggle it hidden/displayed (requires {0})"),"set picking LABEL")),JV.ActionManager.newAction(20,"_pickMeasure",J.i18n.GT.o(J.i18n.GT.$("pick an atom to include it in a measurement (after starting a measurement or after {0})"),"set picking DISTANCE/ANGLE/TORSION")),JV.ActionManager.newAction(21,"_pickNavigate",J.i18n.GT.o(J.i18n.GT.$("pick a point or atom to navigate to (requires {0})"),"set NAVIGATIONMODE")),JV.ActionManager.newAction(22, +"_pickPoint",J.i18n.GT.o(J.i18n.GT.$("pick a DRAW point (for measurements) (requires {0}"),"set DRAWPICKING")),JV.ActionManager.newAction(23,"_popupMenu",J.i18n.GT.$("pop up the full context menu")),JV.ActionManager.newAction(24,"_reset",J.i18n.GT.$("reset (when clicked off the model)")),JV.ActionManager.newAction(25,"_rotate",J.i18n.GT.$("rotate")),JV.ActionManager.newAction(26,"_rotateBranch",J.i18n.GT.o(J.i18n.GT.$("rotate branch around bond (requires {0})"),"set picking ROTATEBOND")),JV.ActionManager.newAction(27, +"_rotateSelected",J.i18n.GT.o(J.i18n.GT.$("rotate selected atoms (requires {0})"),"set DRAGSELECTED")),JV.ActionManager.newAction(28,"_rotateZ",J.i18n.GT.$("rotate Z")),JV.ActionManager.newAction(29,"_rotateZorZoom",J.i18n.GT.$("rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)")),JV.ActionManager.newAction(30,"_select",J.i18n.GT.o(J.i18n.GT.$("select an atom (requires {0})"),"set pickingStyle EXTENDEDSELECT")),JV.ActionManager.newAction(31,"_selectAndDrag",J.i18n.GT.o(J.i18n.GT.$("select and drag atoms (requires {0})"), +"set DRAGSELECTED")),JV.ActionManager.newAction(32,"_selectAndNot",J.i18n.GT.o(J.i18n.GT.$("unselect this group of atoms (requires {0})"),"set pickingStyle DRAG/EXTENDEDSELECT")),JV.ActionManager.newAction(33,"_selectNone",J.i18n.GT.o(J.i18n.GT.$("select NONE (requires {0})"),"set pickingStyle EXTENDEDSELECT")),JV.ActionManager.newAction(34,"_selectOr",J.i18n.GT.o(J.i18n.GT.$("add this group of atoms to the set of selected atoms (requires {0})"),"set pickingStyle DRAG/EXTENDEDSELECT")),JV.ActionManager.newAction(35, +"_selectToggle",J.i18n.GT.o(J.i18n.GT.$("toggle selection (requires {0})"),"set pickingStyle DRAG/EXTENDEDSELECT/RASMOL")),JV.ActionManager.newAction(36,"_selectToggleOr",J.i18n.GT.o(J.i18n.GT.$("if all are selected, unselect all, otherwise add this group of atoms to the set of selected atoms (requires {0})"),"set pickingStyle DRAG")),JV.ActionManager.newAction(37,"_setMeasure",J.i18n.GT.$("pick an atom to initiate or conclude a measurement")),JV.ActionManager.newAction(38,"_slab",J.i18n.GT.o(J.i18n.GT.$("adjust slab (front plane; requires {0})"), +"SLAB ON")),JV.ActionManager.newAction(39,"_slabAndDepth",J.i18n.GT.o(J.i18n.GT.$("move slab/depth window (both planes; requires {0})"),"SLAB ON")),JV.ActionManager.newAction(40,"_slideZoom",J.i18n.GT.$("zoom (along right edge of window)")),JV.ActionManager.newAction(41,"_spinDrawObjectCCW",J.i18n.GT.o(J.i18n.GT.$("click on two points to spin around axis counterclockwise (requires {0})"),"set picking SPIN")),JV.ActionManager.newAction(42,"_spinDrawObjectCW",J.i18n.GT.o(J.i18n.GT.$("click on two points to spin around axis clockwise (requires {0})"), +"set picking SPIN")),JV.ActionManager.newAction(43,"_stopMotion",J.i18n.GT.o(J.i18n.GT.$("stop motion (requires {0})"),"set waitForMoveTo FALSE")),JV.ActionManager.newAction(44,"_swipe",J.i18n.GT.$("spin model (swipe and release button and stop motion simultaneously)")),JV.ActionManager.newAction(45,"_translate",J.i18n.GT.$("translate")),JV.ActionManager.newAction(46,"_wheelZoom",J.i18n.GT.$("zoom")))});b.getActionName=c(b,"getActionName",function(a){return aa||a>=JV.ActionManager.pickingModeNames.length?"off":JV.ActionManager.pickingModeNames[a]},"~N");b.getPickingMode=c(b,"getPickingMode",function(a){for(var b=JV.ActionManager.pickingModeNames.length;0<=--b;)if(a.equalsIgnoreCase(JV.ActionManager.pickingModeNames[b]))return 38== +b&&(b=6),b;return-1},"~S");b.getPickingStyleName=c(b,"getPickingStyleName",function(a){return 0>a||a>=JV.ActionManager.pickingStyleNames.length?"toggle":JV.ActionManager.pickingStyleNames[a]},"~N");b.getPickingStyleIndex=c(b,"getPickingStyleIndex",function(a){for(var b=JV.ActionManager.pickingStyleNames.length;0<=--b;)if(a.equalsIgnoreCase(JV.ActionManager.pickingStyleNames[b]))return b;return-1},"~S");c(b,"getAtomPickingMode",function(){return this.apm});c(b,"setPickingMode",function(a){var b=!1; +switch(a){case -1:b=!0;this.bondPickingMode=35;a=1;this.vwr.setStringProperty("pickingStyle","toggle");this.vwr.setBooleanProperty("bondPicking",!1);break;case 34:case 33:case 8:this.vwr.getModelkit(!1);case 35:this.vwr.setBooleanProperty("bondPicking",!0);this.bondPickingMode=a;this.resetMeasurement();return}b=(new Boolean(b|this.apm!=a)).valueOf();this.apm=a;b&&this.resetMeasurement()},"~N");c(b,"getPickingState",function(){var a=";set modelkitMode "+this.vwr.getBoolean(603983903)+";set picking "+ +JV.ActionManager.getPickingModeName(this.apm);32==this.apm&&(a+="_"+this.vwr.getModelkitPropertySafely("atomtype"));a+=";";0!=this.bondPickingMode&&(a+="set picking "+JV.ActionManager.getPickingModeName(this.bondPickingMode));33==this.bondPickingMode&&(a+="_"+this.vwr.getModelkitPropertySafely("bondtype"));return a+";"});c(b,"getPickingStyle",function(){return this.pickingStyle});c(b,"setPickingStyle",function(a){this.pickingStyle=a;4<=a?(this.pickingStyleMeasure=a,this.resetMeasurement()):(3>a&& +(this.rootPickingStyle=a),this.pickingStyleSelect=a);this.rubberbandSelectionMode=!1;switch(this.pickingStyleSelect){case 2:this.b.name.equals("extendedSelect")||this.setBinding(null==this.pfaatBinding?this.pfaatBinding=JV.binding.Binding.newBinding(this.vwr,"Pfaat"):this.pfaatBinding);break;case 3:this.b.name.equals("drag")||this.setBinding(null==this.dragBinding?this.dragBinding=JV.binding.Binding.newBinding(this.vwr,"Drag"):this.dragBinding);this.rubberbandSelectionMode=!0;break;case 1:this.b.name.equals("selectOrToggle")|| +this.setBinding(null==this.rasmolBinding?this.rasmolBinding=JV.binding.Binding.newBinding(this.vwr,"Rasmol"):this.rasmolBinding);break;default:this.b!==this.jmolBinding&&this.setBinding(this.jmolBinding)}this.b.name.equals("drag")||(this.predragBinding=this.b)},"~N");c(b,"setGestureSwipeFactor",function(a){this.gestureSwipeFactor=a},"~N");c(b,"setMouseDragFactor",function(a){this.mouseDragFactor=a},"~N");c(b,"setMouseWheelFactor",function(a){this.mouseWheelFactor=a},"~N");c(b,"setCurrent",function(a, +b,c,l){this.vwr.hoverOff();this.current.set(a,b,c,l)},"~N,~N,~N,~N");c(b,"getCurrentX",function(){return this.current.x});c(b,"getCurrentY",function(){return this.current.y});c(b,"setMouseMode",function(){this.drawMode=this.labelMode=!1;this.dragSelectedMode=this.vwr.getDragSelected();this.measuresEnabled=!this.dragSelectedMode;if(!this.dragSelectedMode)switch(this.apm){default:return;case 32:this.measuresEnabled=!this.vwr.getModelkit(!1).isPickAtomAssignCharge();return;case 4:this.drawMode=!0;this.measuresEnabled= +!1;break;case 2:this.labelMode=!0;this.measuresEnabled=!1;break;case 9:this.measuresEnabled=!1;break;case 19:case 22:case 20:case 21:this.measuresEnabled=!1;return}this.exitMeasurementMode(null)});c(b,"clearMouseInfo",function(){this.pressedCount=this.clickedCount=0;this.dragGesture.setAction(0,0);this.exitMeasurementMode(null)});c(b,"setDragAtomIndex",function(a){this.dragAtomIndex=a;this.setAtomsPicked(JU.BSUtil.newAndSetBit(a),"Label picked for atomIndex = "+a)},"~N");c(b,"isMTClient",function(){return this.isMultiTouchClient}); +c(b,"isMTServer",function(){return this.isMultiTouchServer});c(b,"dispose",function(){this.clear()});c(b,"clear",function(){this.startHoverWatcher(!1);null!=this.predragBinding&&(this.b=this.predragBinding);this.vwr.setPickingStyle(null,this.rootPickingStyle);this.isAltKeyReleased=!0});c(b,"startHoverWatcher",function(a){if(!this.vwr.isPreviewOnly)try{a?null==this.hoverWatcherThread&&(this.current.time=-1,this.hoverWatcherThread=new J.thread.HoverWatcherThread(this,this.current,this.moved,this.vwr)): +null!=this.hoverWatcherThread&&(this.current.time=-1,this.hoverWatcherThread.interrupt(),this.hoverWatcherThread=null)}catch(b){if(!F(b,Exception))throw b;}},"~B");c(b,"setModeMouse",function(a){-1==a&&this.startHoverWatcher(!1)},"~N");j(b,"keyPressed",function(a,b){if(this.keyProcessing)return!1;this.keyProcessing=!0;switch(a){case 18:this.dragSelectedMode&&this.isAltKeyReleased&&this.vwr.moveSelectedXY(-2147483648,0,b);this.isAltKeyReleased=!1;this.moved.modifiers|=8;break;case 16:this.moved.keybuf= +0;this.dragged.modifiers|=1;this.moved.modifiers|=1;break;case 17:this.moved.modifiers|=2;break;case 27:this.vwr.hoverOff();this.exitMeasurementMode("escape");break;default:this.vwr.hoverOff()}var c=8464|this.moved.modifiers;!this.labelMode&&!this.b.isUserAction(c)&&this.checkMotionRotateZoom(c,this.current.x,0,0,!1);if(this.vwr.getBoolean(603979889))switch(a){case 38:case 40:case 37:case 39:case 32:case 46:this.vwr.navigate(a,b)}this.keyProcessing=!1;return!0},"~N,~N");j(b,"keyTyped",function(){return!1}, +"~N,~N");j(b,"keyReleased",function(a){switch(a){case 18:this.moved.modifiers&=-9;this.dragSelectedMode&&this.vwr.moveSelectedXY(2147483647,0,this.moved.modifiers);this.isAltKeyReleased=!0;break;case 16:this.moved.modifiers&=-2;0b||(1==this.dragGesture.getPointCount()?this.vwr.undoMoveActionClear(b,2,!0):this.vwr.moveSelected(2147483647,0,-2147483648,-2147483648,-2147483648,null,null,null,!1,!1,k),this.dragSelected(a,l,f,!1));else{if(this.isDrawOrLabelAction(a)&&(this.setMotion(13,!0),this.vwr.checkObjectDragged(this.dragged.x,this.dragged.y, +b,c,a)))return;if(this.checkMotionRotateZoom(a,b,l,f,!0))this.vwr.tm.slabEnabled&&this.bnd(a,[39])?this.vwr.slabDepthByPixels(f):this.vwr.zoomBy(f);else if(this.bnd(a,[25]))this.vwr.rotateXYBy(this.getDegrees(l,!0),this.getDegrees(f,!1));else if(this.bnd(a,[29]))0==l&&1this.dragAtomIndex?this.exitMeasurementMode(null): +34==this.bondPickingMode?(this.vwr.setModelkitPropertySafely("rotateBond",Integer.$valueOf(this.dragAtomIndex)),this.exitMeasurementMode(null)):this.assignNew(-1);else if(this.dragAtomIndex=-1,this.mkBondPressed=!1,this.isRubberBandSelect(this.dragAction)&&this.selectRb(this.clickAction),this.rubberbandSelectionMode=this.b.name.equals("drag"),this.rectRubber.x=2147483647,l&&this.vwr.notifyMouseClicked(a,b,JV.binding.Binding.getMouseAction(this.pressedCount,0,5),5),this.isDrawOrLabelAction(this.dragAction))this.vwr.checkObjectDragged(2147483647, +0,a,b,this.dragAction);else if(this.haveSelection&&(this.dragSelectedMode&&this.bnd(this.dragAction,[13]))&&this.vwr.moveSelectedXY(2147483647,0,this.dragged.modifiers),(!l||!this.checkUserAction(this.pressAction,a,b,0,0,c,5))&&this.vwr.getBoolean(603979780)&&this.bnd(this.dragAction,[44]))a=this.getExitRate(),0k&&this.reset()}}}},"~N,~N,~N,~N");c(b,"doPopup",function(a,b){this.vwr.popupMenu(a, +b,this.vwr.isModelKitOpen()?"m":"j")},"~N,~N");c(b,"pickLabel",function(a){var b=this.vwr.ms.at[a].atomPropertyString(this.vwr,1825200146);2==this.pressedCount?(b=this.vwr.apiPlatform.prompt("Set label for atomIndex="+a,b,null,!1),null!=b&&(this.vwr.shm.setAtomLabel(b,a),this.vwr.refresh(1,"label atom"))):this.setAtomsPicked(JU.BSUtil.newAndSetBit(a),"Label picked for atomIndex = "+a+": "+b)},"~N");c(b,"checkUserAction",function(a,b,c,l,f,e,h){if(!this.b.isUserAction(a))return!1;for(var k=!1,j,p= +this.b.getBindings(),n=a+"\t",q,r=p.keySet().iterator();r.hasNext()&&((q=r.next())||1);)if(0==q.indexOf(n)&&JU.AU.isAS(j=p.get(q))){var s=j[1],u=null;if(0<=s.indexOf("_ATOM")){var v=this.findNearestAtom(b,c,null,!0),s=JU.PT.rep(s,"_ATOM","({"+(0<=v?""+v:"")+"})");0<=v&&(s=JU.PT.rep(s,"_POINT",JU.Escape.eP(this.vwr.ms.at[v])))}if(!this.drawMode&&(0<=s.indexOf("_POINT")||0<=s.indexOf("_OBJECT")||0<=s.indexOf("_BOND"))){v=this.vwr.checkObjectClicked(b,c,a);if(null!=v&&null!=(u=v.get("pt")))v.get("type").equals("bond")&& +(s=JU.PT.rep(s,"_BOND","[{"+v.get("index")+"}]")),s=JU.PT.rep(s,"_POINT",JU.Escape.eP(u)),s=JU.PT.rep(s,"_OBJECT",JU.Escape.escapeMap(v));s=JU.PT.rep(s,"_BOND","[{}]");s=JU.PT.rep(s,"_OBJECT","{}")}s=JU.PT.rep(s,"_POINT","{}");s=JU.PT.rep(s,"_ACTION",""+a);s=JU.PT.rep(s,"_X",""+b);s=JU.PT.rep(s,"_Y",""+(this.vwr.getScreenHeight()-c));s=JU.PT.rep(s,"_DELTAX",""+l);s=JU.PT.rep(s,"_DELTAY",""+f);s=JU.PT.rep(s,"_TIME",""+e);s=JU.PT.rep(s,"_MODE",""+h);s.startsWith("+:")&&(k=!0,s=s.substring(2));this.vwr.evalStringQuiet(s)}return!k}, +"~N,~N,~N,~N,~N,~N,~N");c(b,"checkMotionRotateZoom",function(a,b,c,l,f){b=this.bnd(a,[40])&&this.isZoomArea(this.pressed.x);var e=this.bnd(a,[25]),h=this.bnd(a,[29]);if(!b&&!e&&!h)return!1;a=(c=h&&(0==c||Math.abs(l)>5*Math.abs(c)))||this.isZoomArea(this.moved.x)||this.bnd(a,[46])?8:e||h?13:this.bnd(a,[1])?12:0;this.setMotion(a,f);return c||b},"~N,~N,~N,~N,~B");c(b,"getExitRate",function(){var a=this.dragGesture.getTimeDifference(2);return this.isMultiTouch?8098*this.vwr.getScreenWidth()* +(this.vwr.tm.stereoDoubleFull||this.vwr.tm.stereoDoubleDTI?2:1)/100},"~N");c(b,"getPoint",function(a){var b=new JU.Point3fi;b.setT(a.get("pt"));b.mi=a.get("modelIndex").intValue();return b},"java.util.Map");c(b,"findNearestAtom",function(a,b,c,l){a=this.drawMode||null!=c?-1:this.vwr.findNearestAtomIndexMovable(a,b,!1);return 0<=a&&(l||null==this.mp)&&!this.vwr.slm.isInSelectionSubset(a)?-1:a},"~N,~N,JU.Point3fi,~B");c(b,"isSelectAction",function(a){return this.bnd(a,[17])||!this.drawMode&&!this.labelMode&& +1==this.apm&&this.bnd(a,[1])||this.dragSelectedMode&&this.bnd(this.dragAction,[27,13])||this.bnd(a,[22,35,32,34,36,30])},"~N");c(b,"enterMeasurementMode",function(a){this.vwr.setPicked(a,!0);this.vwr.setCursor(1);this.vwr.setPendingMeasurement(this.mp=this.getMP());this.measurementQueued=this.mp},"~N");c(b,"getMP",function(){return J.api.Interface.getInterface("JM.MeasurementPending",this.vwr,"mouse").set(this.vwr.ms)});c(b,"addToMeasurement",function(a,b,c){if(-1==a&&null==b||null==this.mp)return this.exitMeasurementMode(null), +0;var l=this.mp.count;-2147483648!=this.mp.traceX&&2==l&&this.mp.setCount(l=1);return 4==l&&!c?l:this.mp.addPoint(a,b,!0)},"~N,JU.Point3fi,~B");c(b,"resetMeasurement",function(){this.exitMeasurementMode(null);this.measurementQueued=this.getMP()});c(b,"exitMeasurementMode",function(a){null!=this.mp&&(this.vwr.setPendingMeasurement(this.mp=null),this.vwr.setCursor(0),null!=a&&this.vwr.refresh(3,a))},"~S");c(b,"getSequence",function(){var a=this.measurementQueued.getAtomIndex(1),b=this.measurementQueued.getAtomIndex(2); +if(!(0>a||0>b))try{var c=this.vwr.getSmilesOpt(null,a,b,1048576,null);this.vwr.setStatusMeasuring("measureSequence",-2,c,0)}catch(l){if(F(l,Exception))JU.Logger.error(l.toString());else throw l;}});c(b,"minimize",function(a){var b=this.dragAtomIndex;a&&(this.dragAtomIndex=-1,this.mkBondPressed=!1);this.vwr.dragMinimizeAtom(b)},"~B");c(b,"queueAtom",function(a,b){var c=this.measurementQueued.addPoint(a,b,!0);0<=a&&this.vwr.setStatusAtomPicked(a,"Atom #"+c+":"+this.vwr.getAtomInfo(a),null,!1);return c}, +"~N,JU.Point3fi");c(b,"setMotion",function(a,b){switch(this.vwr.currentCursor){case 3:break;default:this.vwr.setCursor(a)}b&&this.vwr.setInMotion(!0)},"~N,~B");c(b,"zoomByFactor",function(a,b,c){0!=a&&(this.setMotion(8,!0),this.vwr.zoomByFactor(Math.pow(this.mouseWheelFactor,a),b,c),this.moved.setCurrent(this.current,0),this.vwr.setInMotion(!0),this.zoomTrigger=!0,this.startHoverWatcher(!0))},"~N,~N,~N");c(b,"runScript",function(a){this.vwr.evalStringGUI(a)},"~S");c(b,"atomOrPointPicked",function(a, +b){if(0>a){this.resetMeasurement();if(this.bnd(this.clickAction,[33])){this.runScript("select none");return}if(5!=this.apm&&6!=this.apm)return}var c=2;switch(this.apm){case 28:case 29:return;case 0:return;case 25:case 24:case 8:var c=8==this.apm,l=25==this.apm;if(!this.bnd(this.clickAction,[c?5:3]))return;if(null==this.measurementQueued||0==this.measurementQueued.count||2c)this.resetMeasurement(),this.enterMeasurementMode(a);this.addToMeasurement(a,b,!0);this.queueAtom(a,b);l=this.measurementQueued.count; +1==l&&this.vwr.setPicked(a,!0);if(la?this.vwr.getModelkit(!1).handleAssignNew(this.pressed,this.dragged,this.mp,this.dragAtomIndex,a)||this.exitMeasurementMode("bond dropped"): +this.vwr.getModelkit(!1).handleAssignNew(this.current,this.current,null,this.dragAtomIndex,a);this.exitMeasurementMode(null)},"~N");c(b,"bondPicked",function(a){switch(this.bondPickingMode){case 33:this.vwr.undoMoveActionClear(-1,4146,!0);this.vwr.setModelkitPropertySafely("assignBond",Integer.$valueOf(a));break;case 8:this.vwr.deleteBonds(JU.BSUtil.newAndSetBit(a))}},"~N");c(b,"checkTwoAtomAction",function(a,b){var c=5==this.apm,l=6==this.apm;if(c||l)if(this.vwr.tm.spinOn||this.vwr.tm.navOn||null!= +this.vwr.getPendingMeasurement())this.resetMeasurement(),this.vwr.tm.spinOn&&this.runScript("spin off");else{2<=this.measurementQueued.count&&this.resetMeasurement();var f=this.measurementQueued.count;if(1==f)if(null==a){if(this.measurementQueued.getAtomIndex(1)==b)return}else if(0==this.measurementQueued.getAtom(1).distance(a))return;if(c||l){if(0<=b||null!=a)f=this.queueAtom(b,a);2>f?c?this.vwr.scriptStatus(1==f?J.i18n.GT.$("pick one more atom in order to spin the model around an axis"):J.i18n.GT.$("pick two atoms in order to spin the model around an axis")): +this.vwr.scriptStatus(1==f?J.i18n.GT.$("pick one more atom in order to display the symmetry relationship"):J.i18n.GT.$("pick two atoms in order to display the symmetry relationship between them")):(l=this.measurementQueued.getMeasurementScript(" ",!1),this.resetMeasurement(),c?this.runScript("spin"+l+" "+this.vwr.getInt(553648157)):this.runScript("draw symop "+l+";print 'all:';show symop "+l))}}},"JU.Point3fi,~N");c(b,"reset",function(){this.runScript("!reset")});c(b,"selectAtoms",function(a){if(!(null!= +this.mp||this.selectionWorking)){this.selectionWorking=!0;var b=this.rubberbandSelectionMode||this.bnd(this.clickAction,[35])?"selected and not ("+a+") or (not selected) and ":this.bnd(this.clickAction,[32])?"selected and not ":this.bnd(this.clickAction,[34])?"selected or ":0==this.clickAction||this.bnd(this.clickAction,[36])?"selected tog ":this.bnd(this.clickAction,[30])?"":null;if(null!=b)try{var c=this.vwr.getAtomBitSetEval(null,b+("("+a+")"));this.setAtomsPicked(c,"selected: "+JU.Escape.eBS(c)); +this.vwr.refresh(3,"selections set")}catch(l){if(!F(l,Exception))throw l;}this.selectionWorking=!1}},"~S");c(b,"setAtomsPicked",function(a,b){this.vwr.selectStatus(a,!1,0,!1,!0);this.vwr.setStatusAtomPicked(-1,b,null,!1)},"JU.BS,~S");c(b,"selectRb",function(a){var b=this.vwr.ms.findAtomsInRectangle(this.rectRubber);0=a&&this.runScript("!measure "+this.mp.getMeasurementScript(" ",!0));this.exitMeasurementMode(null)}});c(b,"zoomTo",function(a){this.runScript("zoomTo (atomindex="+a+")");this.vwr.setStatusAtomPicked(a,null,null,!1)},"~N");c(b,"userActionEnabled",function(a){return this.vwr.isFunction(JV.ActionManager.getActionName(a).toLowerCase())}, +"~N");c(b,"userAction",function(a,b){if(!this.userActionEnabled(a))return!1;var c=JS.ScriptEval.runUserAction(JV.ActionManager.getActionName(a),b,this.vwr);return!JS.SV.vF.equals(c)},"~N,~A");b.actionInfo=Array(47);b.actionNames=Array(47);JV.ActionManager.pickingModeNames="off identify label center draw spin symmetry deleteatom deletebond atom group chain molecule polymer structure site model element measure distance angle torsion sequence navigate connect struts dragselected dragmolecule dragatom dragminimize dragminimizemolecule invertstereo assignatom assignbond rotatebond identifybond dragligand dragmodel symop".$plit(" "); +JV.ActionManager.pickingStyleNames="toggle selectOrToggle extendedSelect drag measure measureoff".$plit(" ");b=v(function(){this.time=this.y=this.x=this.index=0;r(this,arguments)},JV,"MotionPoint",null);c(b,"set",function(a,b,c,l){this.index=a;this.x=b;this.y=c;this.time=l},"~N,~N,~N,~N");j(b,"toString",function(){return"[x = "+this.x+" y = "+this.y+" time = "+this.time+" ]"});b=v(function(){this.action=0;this.nodes=null;this.time0=this.ptNext=0;this.vwr=null;r(this,arguments)},JV,"Gesture",null); +A(b,function(a,b){this.vwr=b;this.nodes=Array(a);for(var c=0;ca)return 0;var b=this.getNode(this.ptNext- +1);a=this.getNode(this.ptNext-a);return b.time-a.time},"~N");c(b,"getSpeedPixelsPerMillisecond",function(a,b){a=this.getPointCount2(a,b);if(2>a)return 0;var c=this.getNode(this.ptNext-1-b),l=this.getNode(this.ptNext-a-b),f=360*((c.x-l.x)/this.vwr.getScreenWidth()),e=360*((c.y-l.y)/this.vwr.getScreenHeight());return Math.sqrt(f*f+e*e)/(c.time-l.time)},"~N,~N");c(b,"getDX",function(a,b){a=this.getPointCount2(a,b);if(2>a)return 0;var c=this.getNode(this.ptNext-1-b),l=this.getNode(this.ptNext-a-b);return c.x- +l.x},"~N,~N");c(b,"getDY",function(a,b){a=this.getPointCount2(a,b);if(2>a)return 0;var c=this.getNode(this.ptNext-1-b),l=this.getNode(this.ptNext-a-b);return c.y-l.y},"~N,~N");c(b,"getPointCount",function(){return this.ptNext});c(b,"getPointCount2",function(a,b){a>this.nodes.length-b&&(a=this.nodes.length-b);for(var c=a+1;0<=--c&&!(0<=this.getNode(this.ptNext-c-b).index););return c},"~N,~N");c(b,"getNode",function(a){return this.nodes[(a+this.nodes.length+this.nodes.length)%this.nodes.length]},"~N"); +j(b,"toString",function(){return 0==this.nodes.length?""+this:JV.binding.Binding.getMouseActionName(this.action,!1)+" nPoints = "+this.ptNext+" "+this.nodes[0]})});u("JV");C(["JU.BS"],"JV.AnimationManager",["J.api.Interface","JU.BSUtil"],function(){var b=v(function(){this.vwr=this.animationThread=null;this.animationOn=!1;this.lastFrameDelayMs=this.firstFrameDelayMs=this.animationFps=0;this.bsVisibleModels=null;this.animationReplayMode=1073742070;this.animationFrames=this.bsDisplay=null;this.animationPaused= +this.isMovie=!1;this.morphCount=this.caf=this.cmi=0;this.currentDirection=this.animationDirection=1;this.frameStep=this.lastFrameIndex=this.firstFrameIndex=0;this.backgroundModelIndex=-1;this.firstFrameDelay=this.currentMorphModel=0;this.lastFrameDelay=1;this.intAnimThread=this.lastModelPainted=this.lastFramePainted=0;this.cai=-1;r(this,arguments)},JV,"AnimationManager",null);P(b,function(){this.bsVisibleModels=new JU.BS});A(b,function(a){this.vwr=a},"JV.Viewer");c(b,"setAnimationOn",function(a){a!= +this.animationOn&&(!a||this.vwr.headless?this.stopThread(!1):(this.vwr.tm.spinOn||this.vwr.refresh(3,"Anim:setAnimationOn"),this.setAnimationRange(-1,-1),this.resumeAnimation()))},"~B");c(b,"stopThread",function(a){var b=!1;null!=this.animationThread&&(this.animationThread.interrupt(),this.animationThread=null,b=!0);this.animationPaused=a;b&&!this.vwr.tm.spinOn&&this.vwr.refresh(3,"Viewer:setAnimationOff");this.animation(!1);this.vwr.setStatusFrameChanged(!1,!1)},"~B");c(b,"setAnimationNext",function(){return this.setAnimationRelative(this.animationDirection)}); +c(b,"currentIsLast",function(){return this.isMovie?this.lastFramePainted==this.caf:this.lastModelPainted==this.cmi});c(b,"currentFrameIs",function(a){var b=this.cmi;return 0==this.morphCount?b==a:0.001>Math.abs(this.currentMorphModel-a)},"~N");c(b,"clear",function(){this.setMovie(null);this.initializePointers(0);this.setAnimationOn(!1);this.setModel(0,!0);this.currentDirection=1;this.cai=-1;this.setAnimationDirection(1);this.setAnimationFps(10);this.setAnimationReplayMode(1073742070,0,0);this.initializePointers(0)}); +c(b,"getModelSpecial",function(a){switch(a){case -1:if(null!=this.animationFrames)return"1";a=this.firstFrameIndex;break;case 0:if(0Math.abs(b-a)?a=b:0.999c||0>b)||this.vwr.ms.morphTrajectories(b,c,a)}},"~N");c(b,"setModel",function(a,b){0>a&&this.stopThread(!1);var c=this.cmi,l=this.vwr.ms,f=null==l?0:l.mc;if(1==f)this.cmi=a=0;else if(0>a||a>=f)a=-1;var l=null,e=!1;if(this.cmi!=a){if(0l.indexOf("plot")&&0>l.indexOf("ramachandran")&&0>l.indexOf(" property "))&&this.vwr.restoreModelRotation(c))}this.setViewer(b)}, +"~N,~B");c(b,"setBackgroundModelIndex",function(a){var b=this.vwr.ms;if(null==b||0>a||a>=b.mc)a=-1;this.backgroundModelIndex=a;0<=a&&this.vwr.ms.setTrajectory(a);this.vwr.setTainted(!0);this.setFrameRangeVisible()},"~N");c(b,"initializePointers",function(a){this.firstFrameIndex=0;this.lastFrameIndex=(0==a?0:this.getFrameCount())-1;this.frameStep=a;this.vwr.setFrameVariables()},"~N");c(b,"setAnimationDirection",function(a){this.animationDirection=a},"~N");c(b,"setAnimationFps",function(a){1>a&&(a= +1);50a&&(a=0);0>b&&(b=c);a>=c&&(a=c-1);b>=c&&(b=c-1);this.currentMorphModel=this.firstFrameIndex= +a;this.lastFrameIndex=b;this.frameStep=bthis.cmi&&this.setAnimationRange(this.firstFrameIndex,this.lastFrameIndex);1>=this.getFrameCount()?this.animation(!1): +(this.animation(!0),this.animationPaused=!1,null==this.animationThread&&(this.intAnimThread++,this.animationThread=J.api.Interface.getOption("thread.AnimationThread",this.vwr,"script"),this.animationThread.setManager(this,this.vwr,E(-1,[this.firstFrameIndex,this.lastFrameIndex,this.intAnimThread])),this.animationThread.start()))});c(b,"setAnimationLast",function(){this.setFrame(0this.lastFrameIndex||0>this.firstFrameIndex||this.lastFrameIndex>=a||this.firstFrameIndex>=a)return 0;for(var b=Math.min(this.firstFrameIndex,this.lastFrameIndex),a=Math.max(this.firstFrameIndex, +this.lastFrameIndex),c=1*(a-b)/this.animationFps+this.firstFrameDelay+this.lastFrameDelay;b<=a;b++)c+=this.vwr.ms.getFrameDelayMs(this.modelIndexForFrame(b))/1E3;return c});c(b,"setMovie",function(a){if(this.isMovie=null!=a&&null==a.get("scripts")){this.animationFrames=a.get("frames");if(null==this.animationFrames||0==this.animationFrames.length)this.isMovie=!1;else if(this.caf=a.get("currentFrame").intValue(),0>this.caf||this.caf>=this.animationFrames.length)this.caf=0;this.setFrame(this.caf)}this.isMovie|| +(this.animationFrames=null);this.vwr.setBooleanProperty("_ismovie",this.isMovie);this.bsDisplay=null;this.currentMorphModel=this.morphCount=0;this.vwr.setFrameVariables()},"java.util.Map");c(b,"modelIndexForFrame",function(a){return this.isMovie?this.animationFrames[a]-1:a},"~N");c(b,"getFrameCount",function(){return this.isMovie?this.animationFrames.length:this.vwr.ms.mc});c(b,"setFrame",function(a){try{if(this.isMovie){var b=this.modelIndexForFrame(a);this.caf=a;a=b}else this.caf=a;this.setModel(a, +!0)}catch(c){if(!F(c,Exception))throw c;}},"~N");c(b,"getUnitCellAtomIndex",function(){return this.cai});c(b,"setUnitCellAtomIndex",function(a){this.cai=a},"~N");c(b,"setViewer",function(a){this.vwr.ms.setTrajectory(this.cmi);this.vwr.tm.setFrameOffset(this.cmi);-1==this.cmi&&a&&this.setBackgroundModelIndex(-1);this.vwr.setTainted(!0);a=this.setFrameRangeVisible();this.vwr.setStatusFrameChanged(!1,!1);this.vwr.g.selectAllModels||this.setSelectAllSubset(2>a)},"~B");c(b,"setSelectAllSubset",function(a){null!= +this.vwr.ms&&this.vwr.slm.setSelectionSubset(a?this.vwr.ms.getModelAtomBitSetIncludingDeleted(this.cmi,!0):this.vwr.ms.getModelAtomBitSetIncludingDeletedBs(this.bsVisibleModels))},"~B");c(b,"setFrameRangeVisible",function(){var a=0;this.bsVisibleModels.clearAll();0<=this.backgroundModelIndex&&(this.bsVisibleModels.set(this.backgroundModelIndex),a=1);if(0<=this.cmi)return this.bsVisibleModels.set(this.cmi),++a;if(0==this.frameStep)return a;for(var b=0,a=0,c=this.firstFrameIndex;c!=this.lastFrameIndex;c+= +this.frameStep){var l=this.modelIndexForFrame(c);this.vwr.ms.isJmolDataFrameForModel(l)||(this.bsVisibleModels.set(l),a++,b=c)}l=this.modelIndexForFrame(this.lastFrameIndex);if(this.firstFrameIndex==this.lastFrameIndex||!this.vwr.ms.isJmolDataFrameForModel(l)||0==a)this.bsVisibleModels.set(l),0==a&&(this.firstFrameIndex=this.lastFrameIndex),a=0;1==a&&0>this.cmi&&this.setFrame(b);return a});c(b,"animation",function(a){this.animationOn=a;this.vwr.setBooleanProperty("_animating",a)},"~B");c(b,"setAnimationRelative", +function(a){a=this.getFrameStep(a);var b=(this.isMovie?this.caf:this.cmi)+a,c=0,l=0,f;0this.morphCount){if(0>b||b>=this.getFrameCount())return!1; +this.setFrame(b);return!0}this.morph(l+1);return!0},"~N");c(b,"isNotInRange",function(a){var b=a-0.001;return b>this.firstFrameIndex&&b>this.lastFrameIndex||(b=a+0.001)>8},"~N");b.getMouseActionName=c(b,"getMouseActionName", +function(a,b){var c=new JU.SB;if(0==a)return"";var l=JV.binding.Binding.includes(a,8)&&!JV.binding.Binding.includes(a,16)&&!JV.binding.Binding.includes(a,4),f=" ".toCharArray();JV.binding.Binding.includes(a,2)&&(c.append("CTRL+"),f[5]="C");!l&&JV.binding.Binding.includes(a,8)&&(c.append("ALT+"),f[4]="A");JV.binding.Binding.includes(a,1)&&(c.append("SHIFT+"),f[3]="S");JV.binding.Binding.includes(a,16)?(f[2]="L",c.append("LEFT")):JV.binding.Binding.includes(a,4)?(f[2]="R",c.append("RIGHT")):l? +(f[2]="M",c.append("MIDDLE")):JV.binding.Binding.includes(a,32)&&(f[2]="W",c.append("WHEEL"));JV.binding.Binding.includes(a,512)&&(c.append("+double"),f[1]="2");JV.binding.Binding.includes(a,4096)?(c.append("+down"),f[0]="1"):JV.binding.Binding.includes(a,8192)?(c.append("+drag"),f[0]="2"):JV.binding.Binding.includes(a,16384)?(c.append("+up"),f[0]="3"):JV.binding.Binding.includes(a,32768)&&(c.append("+click"),f[0]="4");return b?String.instantialize(f)+":"+c.toString():c.toString()},"~N,~B");c(b,"getBindings", +function(){return this.bindings});c(b,"bindAction",function(a,b){this.addBinding(a+"\t"+b,E(-1,[a,b]))},"~N,~N");c(b,"bindName",function(a,b){this.addBinding(a+"\t",Boolean.TRUE);this.addBinding(a+"\t"+b,w(-1,[JV.binding.Binding.getMouseActionName(a,!1),b]))},"~N,~S");c(b,"unbindAction",function(a,b){0==a?this.unbindJmolAction(b):this.removeBinding(null,a+"\t"+b)},"~N,~N");c(b,"unbindName",function(a,b){null==b?this.unbindMouseAction(a):this.removeBinding(null,a+"\t"+b)},"~N,~S");c(b,"unbindJmolAction", +function(a){var b=this.bindings.keySet().iterator();for(a="\t"+a;b.hasNext();){var c=b.next();c.endsWith(a)&&this.removeBinding(b,c)}},"~N");c(b,"addBinding",function(a,b){JU.Logger.debugging&&JU.Logger.debug("adding binding "+a+"\t==\t"+JU.Escape.e(b));this.bindings.put(a,b)},"~S,~O");c(b,"removeBinding",function(a,b){JU.Logger.debugging&&JU.Logger.debug("removing binding "+b);null==a?this.bindings.remove(b):a.remove()},"java.util.Iterator,~S");c(b,"unbindUserAction",function(a){var b=this.bindings.keySet().iterator(); +for(a="\t"+a;b.hasNext();){var c=b.next();c.endsWith(a)&&this.removeBinding(b,c)}},"~S");c(b,"unbindMouseAction",function(a){var b=this.bindings.keySet().iterator();for(a+="\t";b.hasNext();){var c=b.next();c.startsWith(a)&&this.removeBinding(b,c)}},"~N");c(b,"isBound",function(a,b){return this.bindings.containsKey(a+"\t"+b)},"~N,~N");c(b,"isUserAction",function(a){return this.bindings.containsKey(a+"\t")},"~N");c(b,"getBindingInfo",function(a,b,c){var l=new JU.SB;c=null==c||c.equalsIgnoreCase("all")? +null:c.toLowerCase();for(var f=Array(a.length),e=new JU.Lst,h,k=this.bindings.values().iterator();k.hasNext()&&((h=k.next())||1);)if(!z(h,Boolean))if(JU.AU.isAS(h)){var j=h[0],p=h[1];(null==c||0<=c.indexOf("user")||0<=j.indexOf(c)||0<=p.indexOf(c))&&e.addLast(h)}else p=h,j=p[1],null==f[j]&&(f[j]=new JU.Lst),p=JV.binding.Binding.getMouseActionName(p[0],!0),(null==c||0<=(b[j]+";"+a[j]+";"+p).toLowerCase().indexOf(c))&&f[j].addLast(p);for(j=0;jf&&a.append(" ".substring(0,20-f));a.append("\t").append(l).appendC("\n")},"JU.SB,~A,~S,~S");b.includes= +c(b,"includes",function(a,b){return(a&b)==b},"~N,~N");b.newBinding=c(b,"newBinding",function(a,b){return J.api.Interface.getInterface("JV.binding."+b+"Binding",a,"script")},"JV.Viewer,~S")});u("JV.binding");C(["JV.binding.JmolBinding"],"JV.binding.DragBinding",null,function(){var b=H(JV.binding,"DragBinding",JV.binding.JmolBinding);A(b,function(){L(this,JV.binding.DragBinding,[]);this.set("drag")});j(b,"setSelectBindings",function(){this.bindAction(33040,30);this.bindAction(33041,35);this.bindAction(33048, +34);this.bindAction(33049,32);this.bindAction(4368,31);this.bindAction(8464,13);this.bindAction(33040,17)})});u("JV.binding");C(["JV.binding.Binding"],"JV.binding.JmolBinding",null,function(){var b=H(JV.binding,"JmolBinding",JV.binding.Binding);A(b,function(){L(this,JV.binding.JmolBinding,[]);this.set("toggle")});c(b,"set",function(a){this.name=a;this.setGeneralBindings();this.setSelectBindings()},"~S");c(b,"setSelectBindings",function(){this.bindAction(33296,30);this.bindAction(33040,36)});c(b,"setGeneralBindings", +function(){this.bindAction(8474,45);this.bindAction(8454,45);this.bindAction(8721,45);this.bindAction(8712,45);this.bindAction(8464,25);this.bindAction(8720,25);this.bindAction(8472,28);this.bindAction(8453,28);this.bindAction(8465,29);this.bindAction(8456,29);this.bindAction(288,46);this.bindAction(8464,40);this.bindAction(8464,16);this.bindAction(4370,23);this.bindAction(4356,23);this.bindAction(33040,2);this.bindAction(8467,38);this.bindAction(8723,6);this.bindAction(8475,39);this.bindAction(290, +46);this.bindAction(289,46);this.bindAction(291,46);this.bindAction(290,38);this.bindAction(289,6);this.bindAction(291,39);this.bindAction(8464,44);this.bindAction(8464,41);this.bindAction(8465,42);this.bindAction(8473,13);this.bindAction(8465,14);this.bindAction(8472,27);this.bindAction(8465,26);this.bindAction(8464,10);this.bindAction(8472,9);this.bindAction(8465,8);this.bindAction(33297,24);this.bindAction(33288,24);this.bindAction(33296,43);this.bindAction(8464,7);this.bindAction(8464,11);this.bindAction(8464, +12);this.bindAction(33040,17);this.bindAction(33040,22);this.bindAction(33040,19);this.bindAction(33040,20);this.bindAction(33296,37);this.bindAction(33040,18);this.bindAction(33043,21);this.bindAction(33040,4);this.bindAction(33040,5);this.bindAction(33040,3);this.bindAction(33040,0);this.bindAction(33043,1)})});u("JV");C(null,"JV.ColorManager","JU.AU J.c.PAL JU.C $.ColorEncoder $.Elements $.Logger JV.JC".split(" "),function(){var b=v(function(){this.colorData=this.altArgbsCpk=this.argbsCpk=this.g3d= +this.vwr=this.ce=null;this.isDefaultColorRasmol=!1;this.colixRubberband=22;this.colixBackgroundContrast=0;r(this,arguments)},JV,"ColorManager",null);A(b,function(a,b){this.vwr=a;this.ce=new JU.ColorEncoder(null,a);this.g3d=b;this.argbsCpk=J.c.PAL.argbsCpk;this.altArgbsCpk=JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk,0,-1)},"JV.Viewer,JU.GData");c(b,"setDefaultColors",function(a){a?(this.isDefaultColorRasmol=!0,this.argbsCpk=JU.AU.arrayCopyI(JU.ColorEncoder.getRasmolScale(),-1)):(this.isDefaultColorRasmol= +!1,this.argbsCpk=J.c.PAL.argbsCpk);this.altArgbsCpk=JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk,0,-1);this.ce.createColorScheme(a?"Rasmol=":"Jmol=",!0,!0);for(a=J.c.PAL.argbsCpk.length;0<=--a;)this.g3d.changeColixArgb(a,this.argbsCpk[a]);for(a=JV.JC.altArgbsCpk.length;0<=--a;)this.g3d.changeColixArgb(JU.Elements.elementNumberMax+a,this.altArgbsCpk[a])},"~B");c(b,"setRubberbandArgb",function(a){this.colixRubberband=0==a?0:JU.C.getColix(a)},"~N");c(b,"setColixBackgroundContrast",function(a){this.colixBackgroundContrast= +JU.C.getBgContrast(a)},"~N");c(b,"getColixBondPalette",function(a,b){switch(b){case 19:return this.ce.getColorIndexFromPalette(a.getEnergy(),-2.5,-0.5,7,!1)}return 10},"JM.Bond,~N");c(b,"getColixAtomPalette",function(a,b){var c=0,l;l=this.vwr.ms;switch(b){case 84:return null==this.colorData||a.i>=this.colorData.length||Float.isNaN(this.colorData[a.i])?12:this.ce.getColorIndex(this.colorData[a.i]);case 0:case 1:var c=this.argbsCpk,f=l=a.getAtomicAndIsotopeNumber();f>=JU.Elements.elementNumberMax&& +(l=JU.Elements.altElementIndexFromNumber(f),0l?0:256<=l?l-256:l)&31)%JU.ColorEncoder.argbsChainAtom.length,c=(a.isHetero()?JU.ColorEncoder.argbsChainHetero:JU.ColorEncoder.argbsChainAtom)[l]}return 0== +c?22:JU.C.getColix(c)},"JM.Atom,~N");c(b,"getArgbs",function(a){return this.vwr.getJBR().getArgbs(a)},"~N");c(b,"getJmolOrRasmolArgb",function(a,b){switch(b){case 1073741991:if(a>=JU.Elements.elementNumberMax)break;return this.ce.getArgbFromPalette(a,0,0,2);case 1073742116:if(a>=JU.Elements.elementNumberMax)break;return this.ce.getArgbFromPalette(a,0,0,3);default:return b}return JV.JC.altArgbsCpk[JU.Elements.altElementIndexFromNumber(a)]},"~N,~N");c(b,"getElementColix",function(a){var b=this.argbsCpk; +if(a>JU.Elements.elementNumberMax){var c=JU.Elements.altElementIndexFromNumber(a);0b);JU.Logger.debugging&&JU.Logger.debug('ColorManager: color "'+this.ce.getCurrentColorSchemeName()+'" range '+a+" "+b)},"~N,~N");c(b,"setPropertyColorScheme",function(a, +b,c){var l=0==a.length;l&&(a="=");var f=this.getPropertyColorRange();this.ce.currentPalette=this.ce.createColorScheme(a,!0,c);l||this.setPropertyColorRange(f[0],f[1]);this.ce.isTranslucent=b},"~S,~B,~B");c(b,"getColorSchemeList",function(a){a=null==a||0==a.length?this.ce.currentPalette:this.ce.createColorScheme(a,!0,!1);return JU.ColorEncoder.getColorSchemeList(this.ce.getColorSchemeArray(a))},"~S");c(b,"getColorEncoder",function(a){if(null==a||0==a.length)return this.ce;var b=new JU.ColorEncoder(this.ce, +this.vwr);b.currentPalette=b.createColorScheme(a,!1,!0);return 2147483647==b.currentPalette?null:b},"~S")});u("JV");C(["javajs.api.BytePoster","java.util.Hashtable"],"JV.FileManager","java.net.URL $.URLEncoder JU.AU $.Base64 $.LimitedLineReader $.Lst $.OC $.PT $.Rdr $.SB J.api.Interface J.io.FileReader JU.Escape $.Logger JV.JC $.JmolAsyncException $.Viewer".split(" "),function(){var b=v(function(){this.jzu=this.spartanDoc=this.vwr=null;this.pathForAllFiles="";this.nameAsGiven="zapped";this.lastFullPathName= +this.fullPathName=null;this.lastNameAsGiven="zapped";this.spardirCache=this.pngjCache=this.cache=this.appletProxy=this.appletDocumentBaseURL=this.lastFileType=this.fileName=null;r(this,arguments)},JV,"FileManager",null,javajs.api.BytePoster);P(b,function(){this.cache=new java.util.Hashtable});A(b,function(a){this.vwr=a;this.clear()},"JV.Viewer");c(b,"spartanUtil",function(){return null==this.spartanDoc?this.spartanDoc=J.api.Interface.getInterface("J.adapter.readers.spartan.SpartanUtil",this.vwr,"fm getSpartanUtil()").set(this): +this.spartanDoc});c(b,"getJzu",function(){return null==this.jzu?this.jzu=J.api.Interface.getOption("io.JmolUtil",this.vwr,"file"):this.jzu});c(b,"clear",function(){this.setFileInfo(w(-1,[this.vwr.getZapName()]));this.spardirCache=null});c(b,"setLoadState",function(a){this.vwr.getPreserveState()&&a.put("loadState",this.vwr.g.getLoadState(a))},"java.util.Map");c(b,"getPathForAllFiles",function(){return this.pathForAllFiles});c(b,"setPathForAllFiles",function(a){0f&&(a=this.vwr.resolveDatabaseFormat(a));!l.equals(a)&&(0>l.indexOf("/")&&JV.Viewer.hasDatabasePrefix(l))&&b.put("dbName",l);a.endsWith("%2D%")&&(l=b.get("filter"),b.put("filter",(null==l?"":l)+"2D"),a=a.substring(0,a.length-4));l=0<=f?a.substring(f+2):a;f=0<=f?a.substring(0,f):null;JU.Logger.info("\nFileManager.getAtomSetCollectionFromFile("+l+")"+(a.equals(l)?"":" //"+a));var e=this.getClassifiedName(l,!0);if(1==e.length)return e[0];a=e[0];e=e[1];b.put("fullPathName",(null== +f?"":f+"::")+JV.FileManager.fixDOSName(a));this.vwr.getBoolean(603979879)&&this.vwr.getBoolean(603979825)&&this.vwr.getChimeMessenger().update(a);b=new J.io.FileReader(this.vwr,e,a,l,f,null,b,c);b.run();return b.getAtomSetCollection()},"~S,java.util.Map,~B");c(b,"createAtomSetCollectionFromFiles",function(a,b,c){this.setLoadState(b);for(var l=Array(a.length),f=Array(a.length),e=Array(a.length),h=0;ha.toLowerCase().indexOf("password")&&JU.Logger.info("FileManager opening url "+a);j=this.vwr.apiPlatform.getURLContents(v,f,n,!1);r=null;if(z(j,"JU.SB")){a=j;if(e&&!JU.Rdr.isBase64(a))return JU.Rdr.getBR(a.toString());r=JU.Rdr.getBytesFromSB(a)}else JU.AU.isAB(j)&&(r=j);null!=r&&(j=JU.Rdr.getBIS(r))}else if(!h||null==(b=this.cacheGet(a,!0)))c&&JU.Logger.info("FileManager opening file "+a),j=this.vwr.apiPlatform.getBufferedFileInputStream(a);if("string"== +typeof j)return j}k=null==b?j:JU.Rdr.getBIS(b);l&&(k.close(),k=null);return k}catch(w){if(F(w,Exception))try{null!=k&&k.close()}catch(A){if(!F(A,"java.io.IOException"))throw A;}else throw w;}return""+w},"~S,~S,~B,~B,~A,~B,~B");b.getBufferedReaderForResource=c(b,"getBufferedReaderForResource",function(a,b,c,l){l=a.vwrOptions.get("codePath")+c+l;if(a.async){a=a.fm.cacheGet(l,!1);if(null==a)throw new JV.JmolAsyncException(l);return JU.Rdr.getBufferedReader(JU.Rdr.getBIS(a),null)}return a.fm.getBufferedReaderOrErrorMessageFromName(l, +w(-1,[null,null]),!1,!0)},"JV.Viewer,~O,~S,~S");c(b,"urlEncode",function(a){try{return java.net.URLEncoder.encode(a,"utf-8")}catch(b){if(F(b,"java.io.UnsupportedEncodingException"))return a;throw b;}},"~S");c(b,"getFullPathNameOrError",function(a,b,c){var l=this.getClassifiedName(JV.JC.fixProtocol(a),!0);if(null==l||null==l[0]||2>l.length)return w(-1,[null,"cannot read file name: "+a]);a=l[0];l=JV.FileManager.fixDOSName(l[0]);a=JU.Rdr.getZipRoot(a);b=this.getBufferedInputStreamOrErrorMessageFromName(a, +l,!1,!b,null,!1,!b);c[0]=l;"string"==typeof b&&(c[1]=b);return b},"~S,~B,~A");c(b,"getBufferedReaderOrErrorMessageFromName",function(a,b,c,l){a=JV.JC.fixProtocol(a);var f=this.cacheGet(a,!1),e=JU.AU.isAB(f),h=e?f:null;if(a.startsWith("cache://")){if(null==f)return"cannot read "+a;if(e)h=f;else return JU.Rdr.getBR(f)}f=this.getClassifiedName(a,!0);if(null==f)return"cannot read file name: "+a;null!=b&&(b[0]=JV.FileManager.fixDOSName(f[0]));return this.getUnzippedReaderOrStreamFromName(f[0],h,!1,c,!1, +l,null)},"~S,~A,~B,~B");c(b,"getUnzippedReaderOrStreamFromName",function(a,b,c,l,f,e,h){if(e&&null==b){var k=a.endsWith(".spt")?w(-1,[null,null,null]):0>a.indexOf(".spardir")?null:this.spartanUtil().getFileList(a,f);if(null!=k)return k}a=JV.JC.fixProtocol(a);null==b&&(null!=(b=this.getCachedPngjBytes(a))&&null!=h)&&h.put("sourcePNGJ",Boolean.TRUE);e=a=a.$replace("#_DOCACHE_","");f=null;0<=a.indexOf("|")&&(f=JU.PT.split(a.$replace("\\","/"),"|"),null==b&&JU.Logger.info("FileManager opening zip "+a), +a=f[0]);a=null==b?this.getBufferedInputStreamOrErrorMessageFromName(a,e,!0,!1,null,!l,!0):JU.AU.isAB(b)?JU.Rdr.getBIS(b):b;try{if("string"==typeof a||z(a,"java.io.BufferedReader"))return a;JU.Rdr.isGzipS(a)?a=JU.Rdr.getUnzippedInputStream(this.vwr.getJzt(),a):JU.Rdr.isBZip2S(a)&&(a=JU.Rdr.getUnzippedInputStreamBZip2(this.vwr.getJzt(),a));if(l&&null==f)return a;if(JU.Rdr.isCompoundDocumentS(a)){var j=J.api.Interface.getInterface("JU.CompoundDocument",this.vwr,"file");j.setDocStream(this.vwr.getJzt(), +a);var p=j.getAllDataFiles("Molecule","Input").toString();return l?JU.Rdr.getBIS(p.getBytes()):JU.Rdr.getBR(p)}if(JU.Rdr.isMessagePackS(a)||JU.Rdr.isPickleS(a))return a;a=JU.Rdr.getPngZipStream(a,!0);k=null;if(JU.Rdr.isZipS(a)){if(c)return this.vwr.getJzt().newZipInputStream(a);k=this.vwr.getJzt().getZipFileDirectory(a,f,1,l)}else if(JU.Rdr.isTar(a))k=this.vwr.getJzt().getZipFileDirectory(a,f,1,l);else if(JU.Rdr.isBinary(a,32))return a;if(null!=k){if(!z(k,"java.io.BufferedInputStream"))return"string"== +typeof k?JU.Rdr.getBR(k):k;a=JU.Rdr.getUnzippedInputStream(this.vwr.getJzt(),k)}return l?a:JU.Rdr.getBufferedReader(a,null)}catch(n){if(F(n,Exception))return n.toString();throw n;}},"~S,~O,~B,~B,~B,~B,java.util.Map");c(b,"getZipDirectory",function(a,b,c){a=this.getBufferedInputStreamOrErrorMessageFromName(a,a,!1,!1,null,!1,c);return this.vwr.getJzt().getZipDirectoryAndClose(a,b?"JmolManifest":null)},"~S,~B,~B");c(b,"getFileAsBytes",function(a,b){if(null==a)return null;var c=a,l=null;0<=a.indexOf("|")&& +(l=JU.PT.split(a,"|"),a=l[0]);var f=null!=l?null:this.getPngjOrDroppedBytes(c,a);if(null==f){c=this.getBufferedInputStreamOrErrorMessageFromName(a,c,!1,!1,null,!1,!0);if("string"==typeof c)return"Error:"+c;try{f=null!=b||null==l||1>=l.length||!JU.Rdr.isZipS(c)&&!JU.Rdr.isPngZipStream(c)&&!JU.Rdr.isTar(c)?JU.Rdr.getStreamAsBytes(c,b):this.vwr.getJzt().getZipFileContentsAsBytes(c,l,1),c.close()}catch(e){if(F(e,Exception))return e.toString();throw e;}}if(null==b||!JU.AU.isAB(f))return f;b.write(f,0, +-1);return f.length+" bytes"},"~S,JU.OC");c(b,"getFileAsMap",function(a,b,c){var l=c?null:new java.util.Hashtable,f;if(null==a){f=Array(1);b=this.vwr.getImageAsBytes(b,-1,-1,-1,f);if(null!=f[0]){if(c)return Q(0,0);l.put("_ERROR_",f[0]);return l}if(null==l)return b;f=JU.Rdr.getBIS(b)}else{b=Array(2);f=this.getFullPathNameOrError(a,!0,b);if("string"==typeof f){if(c)return Q(0,0);l.put("_ERROR_",f);return l}if(!this.checkSecurity(b[0])){if(c)return Q(0,0);l.put("_ERROR_","java.io. Security exception: cannot read file "+ +b[0]);return l}}try{if(c)return JU.Rdr.streamToBytes(f);this.vwr.getJzt().readFileAsMap(f,l,a)}catch(e){if(F(e,Exception)){if(c)return Q(0,0);l.clear();l.put("_ERROR_",""+e)}else throw e;}return l},"~S,~S,~B");c(b,"getFileDataAsString",function(a,b,c,l,f){a[1]="";var e=a[0];if(null==e)return!1;c=this.getBufferedReaderOrErrorMessageFromName(e,a,!1,c);if("string"==typeof c)return a[1]=c,!1;if(f&&!this.checkSecurity(a[0]))return a[1]="java.io. Security exception: cannot read file "+a[0],!1;try{if(z(c, +"java.io.BufferedInputStream")&&(e.toUpperCase().endsWith(".PNG")||JV.FileManager.isEmbeddable(e)))c=JU.Rdr.getBufferedReader(c,null);return JU.Rdr.readAllAsString(c,b,l,a,1)}catch(h){if(F(h,Exception))return!1;throw h;}},"~A,~N,~B,~B,~B");c(b,"checkSecurity",function(a){if(!a.startsWith("file:"))return!0;var b=a.lastIndexOf("/");return a.lastIndexOf(":/")==b-1||0<=a.indexOf("/.")||a.lastIndexOf(".")a.indexOf(":")&&0!=a.indexOf("/")&& +(a=JV.FileManager.addDirectory(this.vwr.getDefaultDirectory(),a));if(null==this.appletDocumentBaseURL)if(0<=JU.OC.urlTypeIndex(a)||this.vwr.haveAccess(JV.Viewer.ACCESS.NONE)||this.vwr.haveAccess(JV.Viewer.ACCESS.READSPT)&&!a.endsWith(".spt")&&!a.endsWith("/"))try{f=new java.net.URL(Z("java.net.URL"),a,null)}catch(h){if(F(h,"java.net.MalformedURLException"))return w(-1,[b?h.toString():null]);throw h;}else var l=this.vwr.apiPlatform.newFile(a),e=l.getFullPath(),k=l.getName(),e=w(-1,[null==e?k:e,k,null== +e?k:"file:/"+e.$replace("\\","/")]);else try{if(1==a.indexOf(":\\")||1==a.indexOf(":/"))a="file:/"+a;f=new java.net.URL(this.appletDocumentBaseURL,a,null)}catch(j){if(F(j,"java.net.MalformedURLException"))return w(-1,[b?j.toString():null]);throw j;}null!=f&&(e=Array(3),e[0]=e[2]=f.toString(),e[1]=JV.FileManager.stripPath(e[0]));c&&(c=e[0],e[0]=this.pathForAllFiles+e[1],JU.Logger.info("FileManager substituting "+c+" --\x3e "+e[0]));b&&JU.OC.isLocal(e[0])&&(c=e[0],null==l&&(c=JU.PT.trim(e[0].substring(e[0].indexOf(":")+ +1),"/")),l=c.length-e[1].length-1,0b&&(b=a.indexOf(":/")+1);1>b&&(b=a.indexOf("/"));if(0>b)return null;var c=a.substring(0,b);for(a=a.substring(b);0<=(b=a.lastIndexOf("/../"));){var l=a.substring(0,b).lastIndexOf("/");if(0>l)return JU.PT.rep(c+a,"/../","/");a=a.substring(0,l)+a.substring(b+3)}0==a.length&&(a="/");return c+ +a},"~S");c(b,"getFilePath",function(a,b,c){a=this.getClassifiedName(a,!1);return null==a||1==a.length?"":c?a[1]:b?a[2]:null==a[0]?"":JV.FileManager.fixDOSName(a[0])},"~S,~B,~B");b.getLocalDirectory=c(b,"getLocalDirectory",function(a,b){var c=a.getP(b?"currentLocalPath":"defaultDirectoryLocal");b&&0==c.length&&(c=a.getP("defaultDirectoryLocal"));if(0==c.length)return a.isApplet?null:a.apiPlatform.newFile(System.getProperty("user.dir","."));a.isApplet&&0==c.indexOf("file:/")&&(c=c.substring(6));c=a.apiPlatform.newFile(c); +try{return c.isDirectory()?c:c.getParentAsFile()}catch(l){if(F(l,Exception))return null;throw l;}},"JV.Viewer,~B");b.setLocalPath=c(b,"setLocalPath",function(a,b,c){for(;b.endsWith("/")||b.endsWith("\\");)b=b.substring(0,b.length-1);a.setStringProperty("currentLocalPath",b);c||a.setStringProperty("defaultDirectoryLocal",b)},"JV.Viewer,~S,~B");b.getLocalPathForWritingFile=c(b,"getLocalPathForWritingFile",function(a,b,c){if(b.startsWith("http://")||b.startsWith("https://"))return b;b=JU.PT.rep(b,"?", +"");if(0==b.indexOf("file:/"))return b.substring(6);if(0==b.indexOf("/")||0<=b.indexOf(":"))return b;var l=null;try{l=JV.FileManager.getLocalDirectory(a,c)}catch(f){if(!F(f,Exception))throw f;}return null==l?b:JV.FileManager.fixPath(l.toString()+"/"+b)},"JV.Viewer,~S,~B");b.fixDOSName=c(b,"fixDOSName",function(a){return 0<=a.indexOf(":\\")?a.$replace("\\","/"):a},"~S");b.stripPath=c(b,"stripPath",function(a){var b=Math.max(a.lastIndexOf("|"),a.lastIndexOf("/"));return a.substring(b+1)},"~S");b.isScriptType= +c(b,"isScriptType",function(a){return JU.PT.isOneOf(a.toLowerCase().substring(a.lastIndexOf(".")+1),";pse;spt;png;pngj;jmol;zip;")},"~S");b.determineSurfaceFileType=c(b,"determineSurfaceFileType",function(a){var b=null;if(z(a,"JU.Rdr.StreamReader")){var c=a.getStream();if(c.markSupported())try{c.mark(300);var l=Q(300,0);c.read(l,0,300);c.reset();if(131==(l[0]&255)&&68==l[10]&&101==l[11]&&110==l[12])return"BCifDensity";if(80==l[0]&&77==l[1]&&1==l[2]&&0==l[3])return"Pmesh";if(77==l[208]&&65==l[209]&& +80==l[210])return"Mrc";if(20==l[0]&&0==l[1]&&0==l[2]&&0==l[3])return"DelPhi";if(0==l[36]&&100==l[37])return"Dsn6"}catch(f){if(!F(f,"java.io.IOException"))throw f;}}c=null;try{c=new JU.LimitedLineReader(a,16E3),b=c.getHeader(0)}catch(e){if(!F(e,Exception))throw e;}if(null==c||null==b||0==b.length)return null;if(0<=b.indexOf("\x00")){if(131==b.charAt(0).charCodeAt(0))return"BCifDensity";if(0==b.indexOf("PM\u0001\x00"))return"Pmesh";if(208==b.indexOf("MAP "))return"Mrc";if(0==b.indexOf("\u0014\x00\x00\x00"))return"DelPhi"; +if(37b?"Jvxl":"Cube"},"java.io.BufferedReader");b.getManifestScriptPath=c(b,"getManifestScriptPath",function(a){if(0<=a.indexOf("$SCRIPT_PATH$"))return"";var b=0<=a.indexOf("\n")?"\n":"\r";if(0<=a.indexOf(".spt")){a=JU.PT.split(a,b);for(b=a.length;0<=--b;)if(0<=a[b].indexOf(".spt"))return"|"+JU.PT.trim(a[b],"\r\n \t")}return null},"~S");b.getFileReferences=c(b,"getFileReferences",function(a,b,c){for(var l=0;lq&&!l&&(n="/"+n),(0>q||l)&&q++,n=b+n.substring(q)));n=r+n;JU.Logger.info("FileManager substituting "+p+" --\x3e "+n);e.addLast('"'+p+'"');h.addLast('\u0001"'+n+'"')}return JU.PT.replaceStrings(a,e,h)},"~S,~S,~B");c(b,"cachePut",function(a,b){a=JV.FileManager.fixDOSName(a);JU.Logger.debugging&&JU.Logger.debug("cachePut "+a);null==b||"".equals(b)?this.cache.remove(a):(this.cache.put(a,b),this.getCachedPngjBytes(a))},"~S,~O");c(b,"cacheGet",function(a, +b){a=JV.FileManager.fixDOSName(a);var c=a.indexOf("|");0<=c&&!a.endsWith("##JmolSurfaceInfo##")&&(a=a.substring(0,c));a=this.getFilePath(a,!0,!1);c=null;(c=Jmol.Cache.get(a))||(c=this.cache.get(a));return b&&"string"==typeof c?null:c},"~S,~B");c(b,"cacheClear",function(){JU.Logger.info("cache cleared");this.cache.clear();null!=this.pngjCache&&(this.pngjCache=null,JU.Logger.info("PNGJ cache cleared"))});c(b,"cacheFileByNameAdd",function(a,b){if(null==a||!b&&a.equalsIgnoreCase(""))return this.cacheClear(), +-1;var c;if(b){a=JV.JC.fixProtocol(this.vwr.resolveDatabaseFormat(a));c=this.getFileAsBytes(a,null);if("string"==typeof c)return 0;this.cachePut(a,c)}else{if(a.endsWith("*"))return JU.AU.removeMapKeys(this.cache,a.substring(0,a.length-1));c=this.cache.remove(JV.FileManager.fixDOSName(a))}return null==c?0:c.length},"~S,~B");c(b,"cacheList",function(){for(var a=new java.util.Hashtable,b,c=this.cache.entrySet().iterator();c.hasNext()&&((b=c.next())||1);)a.put(b.getKey(),Integer.$valueOf(JU.AU.isAB(b.getValue())? +b.getValue().length:b.getValue().toString().length));return a});c(b,"getCanonicalName",function(a){var b=this.getClassifiedName(a,!0);return null==b?a:b[2]},"~S");c(b,"recachePngjBytes",function(a,b){null!=this.pngjCache&&this.pngjCache.containsKey(a)&&(this.pngjCache.put(a,b),JU.Logger.info("PNGJ recaching "+a+" ("+b.length+")"))},"~S,~A");c(b,"getPngjOrDroppedBytes",function(a,b){var c=this.getCachedPngjBytes(a);return null==c?this.cacheGet(b,!0):c},"~S,~S");c(b,"getCachedPngjBytes",function(a){return null== +a||null==this.pngjCache||0>a.indexOf(".png")?null:this.getJzu().getCachedPngjBytes(this,a)},"~S");j(b,"postByteArray",function(a,b){if(a.startsWith("cache://"))return this.cachePut(a,b),"OK "+b.length+"cached";var c=this.getBufferedInputStreamOrErrorMessageFromName(a,null,!1,!1,b,!1,!0);if("string"==typeof c)return c;try{c=JU.Rdr.getStreamAsBytes(c,null)}catch(l){if(F(l,"java.io.IOException"))try{c.close()}catch(f){if(!F(f,"java.io.IOException"))throw f;}else throw l;}return null==c?"":JU.Rdr.fixUTF(c)}, +"~S,~A");b.isJmolType=c(b,"isJmolType",function(a){return a.equals("PNG")||a.equals("PNGJ")||a.equals("JMOL")||a.equals("ZIP")||a.equals("ZIPALL")},"~S");b.isEmbeddable=c(b,"isEmbeddable",function(a){var b=a.lastIndexOf(".");0<=b&&(a=a.substring(b+1));a=a.toUpperCase();return JV.FileManager.isJmolType(a)||JU.PT.isOneOf(a,";JPG;JPEG;POV;IDTF;")},"~S");c(b,"getEmbeddedFileState",function(a,b,c){if(!JV.FileManager.isEmbeddable(a))return"";b=this.getZipDirectory(a,!1,b);if(0==b.length)return a=this.vwr.getFileAsString4(a, +-1,!1,!0,!1,"file"),0>a.indexOf("**** Jmol Embedded Script ****")?"":JV.FileManager.getEmbeddedScript(a);for(var l=0;lb||20<=b?a:a.substring(b+2)},"~S");b.getEmbeddedScript=c(b,"getEmbeddedScript",function(a){if(null==a)return a;var b=a.indexOf("**** Jmol Embedded Script ****");if(0> +b)return a;var c=a.lastIndexOf("/*",b),l=a.indexOf(("*"==a.charAt(c+2)?"*":"")+"*/",b);for(0<=c&&l>=b&&(a=a.substring(b+30,l)+"\n");0<=(c=a.indexOf(" #Jmol...\x00"));)a=a.substring(0,c)+a.substring(c+10+4);JU.Logger.debugging&&JU.Logger.debug(a);return a},"~S");c(b,"isZipStream",function(a){return this.vwr.getJzt().isZipStream(a)},"~O");b.SIMULATION_PROTOCOL="http://SIMULATION/";b.scriptFilePrefixes=w(-1,['/*file*/"','FILE0="','FILE1="'])});u("JV");C(["java.util.Hashtable","JU.P3","J.c.CBK"],"JV.GlobalSettings", +"JU.DF $.PT $.SB J.c.STR JS.SV JU.Escape $.Logger JV.JC $.StateManager $.Viewer".split(" "),function(){var b=v(function(){this.htUserVariables=this.htPropertyFlagsRemoved=this.htBooleanParameterFlags=this.htNonbooleanParameterValues=this.vwr=null;this.zDepth=0;this.zShadePower=3;this.zSlab=50;this.slabByAtom=this.slabByMolecule=!1;this.appendNew=this.allowEmbeddedScripts=!0;this.appletProxy="";this.applySymmetryToBonds=!1;this.atomTypes="";this.autoBond=!0;this.axesOrientationRasmol=!1;this.bondRadiusMilliAngstroms= +150;this.bondTolerance=0.45;this.defaultDirectory="";this.defaultStructureDSSP=!0;this.ptDefaultLattice=null;this.defaultLoadFilter=this.defaultLoadScript="";this.defaultDropScript="zap; load SYNC \"%FILE\";if (%ALLOWCARTOONS && _loadScript == '' && defaultLoadScript == '' && _filetype == 'Pdb') {if ({(protein or nucleic)&*/1.1} && {*/1.1}[1].groupindex != {*/1.1}[0].groupindex){select protein or nucleic;cartoons only;}if ({visible && cartoons > 0}){color structure}else{wireframe -0.1};if (!{visible}){spacefill 23%};select *}"; +this.forceAutoBond=!1;this.fractionalRelative=!0;this.inlineNewlineChar="|";this.resolverResolver=this.macroDirectory=this.pubChemFormat=this.nihResolverFormat=this.smilesUrlFormat=this.nmrPredictFormat=this.nmrUrlFormat=this.pdbLoadLigandFormat=this.pdbLoadFormat=this.loadFormat=null;this.checkCIR=!1;this.minBondDistance=0.4;this.minPixelSelRadius=6;this.pdbSequential=this.pdbGetHeader=this.pdbAddHydrogens=!1;this.percentVdwAtom=23;this.smallMoleculeMaxAtoms=4E4;this.smartAromatic=!0;this.doublePrecision= +this.legacyJavaFloat=this.legacyHAddition=this.legacyAutoBonding=this.zeroBasedXyzRasmol=!1;this.modulateOccupancy=this.jmolInJSpecView=!0;this.dotSolvent=this.allowMoveAtoms=this.allowRotateSelected=!1;this.defaultTorsionLabel=this.defaultDistanceLabel=this.defaultAngleLabel="%VALUE %UNITS";this.measureAllModels=this.justifyMeasurements=!1;this.minimizationSteps=100;this.minimizationRefresh=!0;this.minimizationSilent=!1;this.minimizationCriterion=0.001;this.minimizationMaxAtoms=200;this.minimizationReportSteps= +10;this.infoFontSize=20;this.antialiasDisplay=!1;this.displayCellParameters=this.antialiasTranslucent=this.imageState=this.antialiasImages=!0;this.dotsSelectedOnly=!1;this.dotSurface=!0;this.dotDensity=3;this.meshScale=this.dotScale=1;this.isosurfaceKey=this.greyscaleRendering=!1;this.isosurfacePropertySmoothing=!0;this.isosurfacePropertySmoothingPower=7;this.platformSpeed=10;this.repaintWaitMs=1E3;this.showHiddenSelectionHalos=!1;this.showMeasurements=this.showKeyStrokes=!0;this.showTiming=!1;this.zoomLarge= +!0;this.zoomHeight=!1;this.backgroundImageFileName=null;this.hbondsBackbone=this.bondModeOr=this.partialDots=!1;this.hbondsAngleMinimum=90;this.hbondNODistanceMaximum=3.25;this.hbondHXDistanceMaximum=2.5;this.hbondsRasmol=!0;this.hbondsSolid=!1;this.modeMultipleBond=2;this.showMultipleBonds=this.showHydrogens=!0;this.ssbondsBackbone=!1;this.multipleBondSpacing=-1;this.multipleBondRadiusFactor=0;this.multipleBondBananas=!1;this.nboCharges=!0;this.cartoonRockets=this.cartoonBaseEdges=!1;this.cartoonBlockHeight= +0.5;this.cipRule6Full=this.chainCaseSensitive=this.cartoonRibose=this.cartoonLadders=this.cartoonFancy=this.cartoonSteps=this.cartoonBlocks=!1;this.hermiteLevel=0;this.rangeSelected=this.highResolutionFlag=!1;this.rasmolHeteroSetting=this.rasmolHydrogenSetting=!0;this.ribbonAspectRatio=16;this.rocketBarrels=this.ribbonBorder=!1;this.sheetSmoothing=1;this.translucent=this.traceAlpha=!0;this.twistedSheets=!1;this.allowAudio=this.autoplayMovie=!0;this.allowGestures=!1;this.allowMultiTouch=this.allowModelkit= +!0;this.hiddenLinesDashed=this.allowKeyStrokes=!1;this.animationFps=10;this.atomPicking=!0;this.autoFps=!1;this.axesMode=603979809;this.axesScale=2;this.axesOffset=0;this.starWidth=0.05;this.bondPicking=!1;this.dataSeparator="~~~";this.debugScript=!1;this.defaultDrawArrowScale=0.5;this.defaultLabelXYZ="%a";this.defaultLabelPDB="%m%r";this.defaultTranslucent=0.5;this.delayMaximumMs=0;this.dipoleScale=1;this.drawFontSize=16;this.drawPicking=this.drawHover=this.dragSelected=this.disablePopupMenu=!1; +this.dsspCalcHydrogen=!0;this.elementKey=!1;this.energyUnits="kJ";this.exportScale=0;this.helpPath="https://chemapps.stolaf.edu/jmol/docs/index.htm";this.fontScaling=!1;this.fontCaching=!0;this.forceField="MMFF";this.helixStep=1;this.hideNameInPopup=!1;this.hoverDelayMs=500;this.labelPointerWidth=2;this.loadAtomDataTolerance=0.01;this.logGestures=this.logCommands=!1;this.measureDistanceUnits="nanometers";this.measurementLabels=!0;this.monitorEnergy=this.messageStyleChime=!1;this.modulationScale=1; +this.multiProcessor=!0;this.particleRadius=20;this.pickingSpinRate=10;this.pickLabel="";this.pointGroupDistanceTolerance=0.2;this.pointGroupLinearTolerance=8;this.preserveState=!0;this.propertyColorScheme="roygb";this.quaternionFrame="p";this.saveProteinStructureState=!0;this.showModVecs=!1;this.showUnitCellDetails=!0;this.solventProbeRadius=1.2;this.scriptDelay=0;this.statusReporting=this.selectAllModels=!0;this.strandCountForStrands=5;this.strandCountForMeshRibbon=7;this.strutSpacing=6;this.strutLengthMaximum= +7;this.strutDefaultRadius=0.3;this.symmetryHermannMauguin=this.strutsMultiple=!1;this.waitForMoveTo=this.useScriptQueue=this.useNumberLocalization=this.useMinimizationThread=!0;this.noDelay=!1;this.vectorScale=1;this.vectorsCentered=this.vectorSymmetry=!1;this.vectorTrail=0;this.vibrationScale=this.vibrationPeriod=1;this.navigationPeriodic=this.navigationMode=this.hideNavigationPoint=this.wireframeRotation=!1;this.navigationSpeed=5;this.showNavigationPointAlways=!1;this.stereoState=null;this.modelKitMode= +!1;this.objMad10=this.objStateOn=this.objColors=null;this.ellipsoidFill=this.ellipsoidArrows=this.ellipsoidArcs=this.ellipsoidDots=this.ellipsoidAxes=!1;this.ellipsoidBall=!0;this.ellipsoidDotCount=200;this.ellipsoidAxisDiameter=0.02;this.testFlag4=this.testFlag3=this.testFlag2=this.testFlag1=!1;this.structureList=null;this.haveSetStructureList=!1;this.bondingVersion=0;r(this,arguments)},JV,"GlobalSettings",null);P(b,function(){this.htUserVariables=new java.util.Hashtable;this.ptDefaultLattice=new JU.P3; +this.objColors=E(7,0);this.objStateOn=ha(7,!1);this.objMad10=E(7,0);this.structureList=new java.util.Hashtable;this.structureList.put(J.c.STR.TURN,K(-1,[30,90,-15,95]));this.structureList.put(J.c.STR.SHEET,K(-1,[-180,-10,70,180,-180,-45,-180,-130,140,180,90,180]));this.structureList.put(J.c.STR.HELIX,K(-1,[-160,0,-100,45]))});A(b,function(a,b,c){this.vwr=a;this.htNonbooleanParameterValues=new java.util.Hashtable;this.htBooleanParameterFlags=new java.util.Hashtable;this.htPropertyFlagsRemoved=new java.util.Hashtable; +this.loadFormat=this.pdbLoadFormat=JV.JC.databases.get("pdb");this.pdbLoadLigandFormat=JV.JC.databases.get("ligand");this.nmrUrlFormat=JV.JC.databases.get("nmr");this.nmrPredictFormat=JV.JC.databases.get("nmrdb");this.pubChemFormat=JV.JC.databases.get("pubchem");this.resolverResolver=JV.JC.databases.get("resolverresolver");this.macroDirectory="https://chemapps.stolaf.edu/jmol/macros";null==b?this.setB("undoAuto",!a.isApplet):(this.setB("undoAuto",a.getBooleanProperty("undoAuto")),c||(this.setO("_pngjFile", +b.getParameter("_pngjFile",!1)),this.htUserVariables=b.htUserVariables),this.debugScript=b.debugScript,this.disablePopupMenu=b.disablePopupMenu,this.messageStyleChime=b.messageStyleChime,this.measureDistanceUnits=b.measureDistanceUnits,this.defaultDirectory=b.defaultDirectory,this.autoplayMovie=b.autoplayMovie,this.allowAudio=b.allowAudio,this.allowGestures=b.allowGestures,this.allowModelkit=b.allowModelkit,this.allowMultiTouch=b.allowMultiTouch,this.allowKeyStrokes=b.allowKeyStrokes,this.legacyAutoBonding= +b.legacyAutoBonding,this.legacyHAddition=b.legacyHAddition,this.legacyJavaFloat=b.legacyJavaFloat,this.minimizationReportSteps=b.minimizationReportSteps,this.doublePrecision=b.doublePrecision,this.bondingVersion=b.bondingVersion,this.platformSpeed=b.platformSpeed,this.useScriptQueue=b.useScriptQueue,this.showTiming=b.showTiming,this.wireframeRotation=b.wireframeRotation,this.testFlag1=b.testFlag1,this.testFlag2=b.testFlag2,this.testFlag3=b.testFlag3,this.testFlag4=b.testFlag4,this.nihResolverFormat= +b.nihResolverFormat);null==this.nihResolverFormat&&(this.nihResolverFormat=JV.JC.databases.get("nci"));this.setCIR(this.nihResolverFormat,!1);var l;c=0;for(var f=J.c.CBK.values();c"}, +"~S,~N");c(b,"getParameter",function(a,b){var c=this.getParam(a,!1);return null==c&&b?"":c},"~S,~B");c(b,"getAndSetNewVariable",function(a,b){if(null==a||0==a.length)a="x";var c=this.getParam(a,!0);return null==c&&b&&"_"!=a.charAt(0)?this.setUserVariable(a,JS.SV.newV(4,"")):JS.SV.getVariable(c)},"~S,~B");c(b,"getParam",function(a,b){a=a.toLowerCase();if(a.equals("_memory")){var c=JU.DF.formatDecimal(0,1)+"/"+JU.DF.formatDecimal(0,1);this.htNonbooleanParameterValues.put("_memory",c)}return this.htNonbooleanParameterValues.containsKey(a)? +this.htNonbooleanParameterValues.get(a):this.htBooleanParameterFlags.containsKey(a)?this.htBooleanParameterFlags.get(a):this.htPropertyFlagsRemoved.containsKey(a)?Boolean.FALSE:this.htUserVariables.containsKey(a)?(c=this.htUserVariables.get(a),b?c:JS.SV.oValue(c)):null},"~S,~B");c(b,"getVariableList",function(){return JV.StateManager.getVariableList(this.htUserVariables,0,!0,!1)});c(b,"setStructureList",function(a,b){this.haveSetStructureList=!0;this.structureList.put(b,a)},"~A,J.c.STR");c(b,"getStructureList", +function(){return this.structureList});b.doReportProperty=c(b,"doReportProperty",function(a){return"_"!=a.charAt(0)&&0>JV.GlobalSettings.unreportedProperties.indexOf(";"+a+";")},"~S");c(b,"getAllVariables",function(){var a=new java.util.Hashtable;a.putAll(this.htBooleanParameterFlags);a.putAll(this.htNonbooleanParameterValues);a.putAll(this.htUserVariables);return a});c(b,"getLoadState",function(a){var b=new JU.SB;this.app(b,"set allowEmbeddedScripts false");this.allowEmbeddedScripts&&this.setB("allowEmbeddedScripts", +!0);this.app(b,"set appendNew "+this.appendNew);this.app(b,"set appletProxy "+JU.PT.esc(this.appletProxy));this.app(b,"set applySymmetryToBonds "+this.applySymmetryToBonds);0a?a:B(a/6)+31},"~S");b.getCIPChiralityName=c(b,"getCIPChiralityName",function(a){switch(a){case 13:return"Z";case 5:return"z";case 14:return"E";case 6:return"e";case 17:return"M";case 18:return"P"; +case 1:return"R";case 2:return"S";case 9:return"r";case 10:return"s";case 25:return"m";case 26:return"p";case 7:return"?";default:return""}},"~N");b.getCIPRuleName=c(b,"getCIPRuleName",function(a){return JV.JC.ruleNames[a]},"~N");b.getCIPChiralityCode=c(b,"getCIPChiralityCode",function(a){switch(a.charCodeAt(0)){case 90:return 13;case 122:return 5;case 69:return 14;case 101:return 6;case 82:return 1;case 83:return 2;case 114:return 9;case 115:return 10;case 63:return 7;default:return 0}},"~S");b.fixOptimadeCall= +c(b,"fixOptimadeCall",function(a){var b=a.indexOf("response_fields=")+16;if(16>b)b=a.indexOf("?"),a+=(0>b?"?":"&")+"response_fields=chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species";else{for(var d=","+a.substring(b,(a+"&").indexOf("&",b))+",",c=d.length,g=0,e=0;0<=g;g=e){e=",chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species,".indexOf(",",g+1);if(0>e)break;g=",chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species,".substring(g, +e+1);0>d.indexOf(g)&&(d+=g.substring(1))}a=a.substring(0,b)+d.substring(1,d.length-1)+a.substring(b+c-2)}return a},"~S");b.resolveDataBase=c(b,"resolveDataBase",function(a,b,d){if(null==d){if(null==(d=JV.JC.databases.get(a.toLowerCase())))return null;var c=b.indexOf("/");0>c&&(a.equals("pubchem")?b="name/"+b:a.equals("nci")&&(b+="/file?format=sdf&get3d=true"));d.startsWith("'")&&(c=b.indexOf("."),a=0a?JV.JC.shapeClassBases[~a]:"J."+(b?"render":"shape")+(9<=a&&16>a?"bio.":16<=a&&23>a?"special.":24<=a&&30>a?"surface.":23==a?"cgo.":".")+JV.JC.shapeClassBases[a]},"~N,~B");b.getEchoName=c(b,"getEchoName",function(a){return JV.JC.echoNames[a]},"~N");b.setZPosition=c(b,"setZPosition",function(a,b){return a&-49|b},"~N,~N"); +b.setPointer=c(b,"setPointer",function(a,b){return a&-4|b},"~N,~N");b.getPointer=c(b,"getPointer",function(a){return a&3},"~N");b.getPointerName=c(b,"getPointerName",function(a){return 0==(a&1)?"":0<(a&2)?"background":"on"},"~N");b.isOffsetAbsolute=c(b,"isOffsetAbsolute",function(a){return 0!=(a&64)},"~N");b.getOffset=c(b,"getOffset",function(a,b,d){a=Math.min(Math.max(a,-500),500);b=Math.min(Math.max(b,-500),500);var c=(a&1023)<<21|(b&1023)<<11|(d?64:0);if(c==JV.JC.LABEL_DEFAULT_OFFSET)c=0;else if(!d&& +(0==a||0==b))c|=256;return c},"~N,~N,~B");b.getXOffset=c(b,"getXOffset",function(a){if(0==a)return 4;a=a>>21&1023;return 500>11&1023;return 500>2&3]},"~N");b.isSmilesCanonical= +c(b,"isSmilesCanonical",function(a){return null!=a&&JU.PT.isOneOf(a.toLowerCase(),";/cactvs///;/cactus///;/nci///;/canonical///;")},"~S");b.getServiceCommand=c(b,"getServiceCommand",function(a){return 7>a.length?-1:"JSPECVIPEAKS: SELECT:JSVSTR:H1SIMULC13SIMUNBO:MODNBO:RUNNBO:VIENBO:SEANBO:CONNONESIM".indexOf(a.substring(0,7).toUpperCase())},"~S");b.getUnitIDFlags=c(b,"getUnitIDFlags",function(a){var b=14;0==a.indexOf("-")&&(0a.indexOf("a")&&(b^=4),0a&&(d=1E5*Integer.parseInt(l),l=null);if(null!=l&&(d=1E5*Integer.parseInt(g=l.substring(0,a)),l=l.substring(a+1),a=l.indexOf("."),0>a&&(d+=1E3*Integer.parseInt(l),l=null),null!=l)){var f=l.substring(0,a);JV.JC.majorVersion=g+("."+f);d+=1E3*Integer.parseInt(f);l=l.substring(a+1);a=l.indexOf("_");0<=a&&(l=l.substring(0,a));a=l.indexOf(" ");0<=a&&(l=l.substring(0,a));d+=Integer.parseInt(l)}}catch(e){if(!F(e,"NumberFormatException"))throw e;}JV.JC.versionInt=d;b.center=JU.V3.new3(0,0,0);b.axisX=JU.V3.new3(1, +0,0);b.axisY=JU.V3.new3(0,1,0);b.axisZ=JU.V3.new3(0,0,1);b.axisNX=JU.V3.new3(-1,0,0);b.axisNY=JU.V3.new3(0,-1,0);b.axisNZ=JU.V3.new3(0,0,-1);b.unitAxisVectors=w(-1,[JV.JC.axisX,JV.JC.axisY,JV.JC.axisZ,JV.JC.axisNX,JV.JC.axisNY,JV.JC.axisNZ]);b.altArgbsCpk=E(-1,[4294907027,4290750118,4294967088,4283897743,4294967232,4294967200,4292401368,4283453520,4282400832,4279259216]);b.FORMAL_CHARGE_COLIX_RED=JU.Elements.elementSymbols.length+JV.JC.altArgbsCpk.length;b.argbsFormalCharge=E(-1,[4294901760,4294918208, +4294934656,4294951104,4294967295,4292401407,4290032895,4287664383,4285295871,4282927359,4280558847,4278190335]);b.PARTIAL_CHARGE_COLIX_RED=JV.JC.FORMAL_CHARGE_COLIX_RED+JV.JC.argbsFormalCharge.length;b.argbsRwbScale=E(-1,[4294901760,4294905872,4294909984,4294914096,4294918208,4294922320,4294926432,4294930544,4294934656,4294938768,4294942880,4294946992,4294951104,4294955216,4294959328,4294967295,4292927743,4291875071,4290822399,4289769727,4288717055,4287664383,4286611711,4285559039,4284506367,4283453695, +4282401023,4281348351,4280295679,4279243007,4278190335]);b.PARTIAL_CHARGE_RANGE_SIZE=JV.JC.argbsRwbScale.length;b.argbsRoygbScale=E(-1,[4294901760,4294909952,4294918144,4294926336,4294934528,4294942720,4294950912,4294959104,4294963200,4294967040,4293980160,4292935424,4290838272,4288741120,4286643968,4284546816,4282449664,4280352512,4278255360,4278255392,4278255424,4278255456,4278255488,4278255520,4278255552,4278255584,4278255615,4278247679,4278239487,4278231295,4278223103,4278214911,4278206719,4278198527, +4278190335]);b.predefinedVariable=w(-1,"@_1H _H & !(_2H,_3H);@_12C _C & !(_13C,_14C);@_14N _N & !(_15N);@solvent water, (_g>=45 & _g<48);@ligand _g=0|!(_g<46,protein,nucleic,water);@turn structure=1;@sheet structure=2;@helix structure=3;@helix310 substructure=7;@helixalpha substructure=8;@helixpi substructure=9;@bulges within(dssr,'bulges');@coaxStacks within(dssr,'coaxStacks');@hairpins within(dssr,'hairpins');@hbonds within(dssr,'hbonds');@helices within(dssr,'helices');@iloops within(dssr,'iloops');@isoCanonPairs within(dssr,'isoCanonPairs');@junctions within(dssr,'junctions');@kissingLoops within(dssr,'kissingLoops');@multiplets within(dssr,'multiplets');@nonStack within(dssr,'nonStack');@nts within(dssr,'nts');@pairs within(dssr,'pairs');@ssSegments within(dssr,'ssSegments');@stacks within(dssr,'stacks');@stems within(dssr,'stems')".split(";")); +b.predefinedStatic=w(-1,"@amino _g>0 & _g<=23;@acidic asp,glu;@basic arg,his,lys;@charged acidic,basic;@negative acidic;@positive basic;@neutral amino&!(acidic,basic);@polar amino&!hydrophobic;@peptide protein&within(chain,monomer>1)&!within(chain,monomer>12);@cyclic his,phe,pro,trp,tyr;@acyclic amino&!cyclic;@aliphatic ala,gly,ile,leu,val;@aromatic his,phe,trp,tyr;@cystine within(group,(cys,cyx)&atomname=sg&connected((cys,cyx)&atomname=sg));@buried ala,cys,ile,leu,met,phe,trp,val;@surface amino&!buried;@hydrophobic ala,gly,ile,leu,met,phe,pro,trp,tyr,val;@mainchain backbone;@small ala,gly,ser;@medium asn,asp,cys,pro,thr,val;@large arg,glu,gln,his,ile,leu,lys,met,phe,trp,tyr;@c nucleic & ([C] or [DC] or within(group,_a=42));@g nucleic & ([G] or [DG] or within(group,_a=43));@cg c,g;@a nucleic & ([A] or [DA] or within(group,_a=44));@t nucleic & ([T] or [DT] or within(group,_a=45 | _a=49));@at a,t;@i nucleic & ([I] or [DI] or within(group,_a=46) & !g);@u nucleic & ([U] or [DU] or within(group,_a=47) & !t);@tu nucleic & within(group,_a=48);@ions _g>=46&_g<48;@alpha _a=2;@_bb protein&(_a>=1&_a<6|_a=64) | nucleic&(_a>=6&_a<14|_a>=73&&_a<=79||_a==99||_a=100);@backbone _bb | _H && connected(single, _bb);@spine protein&_a>=1&_a<4|nucleic&(_a>=6&_a<11|_a=13);@sidechain (protein,nucleic) & !backbone;@base nucleic & !backbone;@dynamic_flatring search('[a]');@nonmetal _H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn;@metal !nonmetal && !_Xx;@alkaliMetal _Li,_Na,_K,_Rb,_Cs,_Fr;@alkalineEarth _Be,_Mg,_Ca,_Sr,_Ba,_Ra;@nobleGas _He,_Ne,_Ar,_Kr,_Xe,_Rn;@metalloid _B,_Si,_Ge,_As,_Sb,_Te;@transitionMetal elemno>=21&elemno<=30|elemno=57|elemno=89|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112;@lanthanide elemno>57&elemno<=71;@actinide elemno>89&elemno<=103".split(";")); +b.shapeClassBases=w(-1,"Balls Sticks Hsticks Sssticks Struts Labels Measures Stars Halos Backbone Trace Cartoon Strands MeshRibbon Ribbons Rockets Dots Dipoles Vectors GeoSurface Ellipsoids Polyhedra Draw CGO Isosurface Contact LcaoCartoon MolecularOrbital NBO Pmesh Plot3D Echo Bbcage Uccage Axes Hover Frank".split(" "));b.LABEL_DEFAULT_OFFSET=8396800;b.echoNames=w(-1,["top","bottom","middle","xy","xyz"]);b.hAlignNames=w(-1,["","left","center","right"]);b.READER_NOT_FOUND="File reader was not found:"; +b.globalBooleans=w(-1,"someModelsHaveFractionalCoordinates someModelsHaveSymmetry someModelsHaveUnitcells someModelsHaveCONECT isPDB someModelsHaveDomains someModelsHaveValidations isSupercell someModelsHaveAromaticBonds someModelsAreModulated".split(" "))});u("JV");C(["java.io.IOException"],"JV.JmolAsyncException",null,function(){var b=v(function(){this.fileName=null;r(this,arguments)},JV,"JmolAsyncException",java.io.IOException);A(b,function(a){L(this,JV.JmolAsyncException,[]);this.fileName=a}, +"~S");c(b,"getFileName",function(){return this.fileName})});u("JV");C(null,"JV.ModelManager",["JM.ModelLoader"],function(){var b=v(function(){this.fileName=this.modelSetPathName=this.modelSet=this.vwr=null;r(this,arguments)},JV,"ModelManager",null);A(b,function(a){this.vwr=a},"JV.Viewer");c(b,"zap",function(){this.modelSetPathName=this.fileName=null;new JM.ModelLoader(this.vwr,this.vwr.getZapName(),null,null,null,null)});c(b,"createModelSet",function(a,b,c,l,f,e){var h=null;e?(h=this.modelSet.modelSetName, +h.equals("zapped")?h=null:0>h.indexOf(" (modified)")&&(h+=" (modified)")):null==l?this.zap():(this.modelSetPathName=a,this.fileName=b);null!=l&&(null==h&&(h=this.vwr.getModelAdapter().getAtomSetCollectionName(l),null!=h&&(h=h.trim(),0==h.length&&(h=null)),null==h&&(h=JV.ModelManager.reduceFilename(b))),new JM.ModelLoader(this.vwr,h,c,l,e?this.modelSet:null,f));0==this.modelSet.ac&&!this.modelSet.getMSInfoB("isPyMOL")&&this.zap()},"~S,~S,JU.SB,~O,JU.BS,~B");b.reduceFilename=c(b,"reduceFilename",function(a){if(null== +a)return null;var b=a.indexOf(".");0a&&(this.x=b.x,this.y=b.y);this.modifiers=b.modifiers},"JV.MouseState,~N");c(p,"inRange",function(b,a,d){return Math.abs(this.x-a)<=b&&Math.abs(this.y-d)<=b},"~N,~N,~N");c(p,"check",function(b,a,d,c,l,f){return this.modifiers==c&&(2147483647<=f?this.inRange(b,a,d):l-this.timea?this.selectionChanged(!0):null!=this.bsSubset&&!this.bsSubset.get(a)||null!=this.bsDeleted&&this.bsDeleted.get(a)||(this.bsSelection.setBitTo(a,b),this.empty= +b?0:-1)},"~N,~B");c(b,"setSelectionSubset",function(a){this.bsSubset=a},"JU.BS");c(b,"isInSelectionSubset",function(a){return 0>a||null==this.bsSubset||this.bsSubset.get(a)},"~N");c(b,"invertSelection",function(){JU.BSUtil.invertInPlace(this.bsSelection,this.vwr.ms.ac);this.empty=0b;++b)if(null!=this.shapes[b]&&0<=this.shapes[b].getIndexFromName(a))return b;return null!=this.shapes[6]&&0<=this.shapes[6].getIndexFromName(a)?6:-1},"~S");c(b,"loadDefaultShapes",function(a){this.ms=a;if(null!=this.shapes)for(var b= +0;bf;f++)null!=this.shapes[f]&&this.setShapePropertyBs(f,"refreshTrajectories",w(-1,[l,b,c]),a)},"~N,JU.BS,JU.M4");c(b,"releaseShape",function(a){null!=this.shapes&&(this.shapes[a]=null)},"~N");c(b,"setScale",function(){null!=this.scaleText&&(this.loadShape(31),this.setShapePropertyBs(31,"%SCALE",this.scaleText,null),this.scaleText=null)});c(b,"resetShapes",function(a){a&& +(a=Array(1),this.getShapePropertyData(31,"%SCALE",a),this.scaleText=a[0]);this.shapes=Array(37)},"~B");c(b,"setShapeProperties",function(a,b){this.vwr.setShapeErrorState(a,"set properties");this.loadShape(a).setProperties(b);this.vwr.setShapeErrorState(-1,null)},"~N,~A");c(b,"setShapeSizeBs",function(a,b,c,l){if(null!=this.shapes){if(null==l&&(1!=a||2147483647!=b))l=this.vwr.bsA();null!=c&&(0!=c.value&&c.vdwType===J.c.VDW.TEMP)&&this.ms.getBfactor100Lo();this.vwr.setShapeErrorState(a,"set size"); +(null==c?0!=b:0!=c.value)&&this.loadShape(a);null!=this.shapes[a]&&this.shapes[a].setShapeSizeRD(b,c,l);this.vwr.setShapeErrorState(-1,null)}},"~N,~N,J.atomdata.RadiusData,JU.BS");c(b,"setLabel",function(a,b){if(null==a){if(null==this.shapes[5])return}else this.loadShape(5),this.setShapeSizeBs(5,0,null,b);this.setShapePropertyBs(5,"label",a,b)},"~O,JU.BS");c(b,"setShapePropertyBs",function(a,b,c,l){null==this.shapes||null==this.shapes[a]||(null==l&&(l=this.vwr.bsA()),this.vwr.setShapeErrorState(a, +"set "+b),this.shapes[a].setProperty(b.intern(),c,l),this.vwr.setShapeErrorState(-1,null))},"~N,~S,~O,JU.BS");c(b,"checkFrankclicked",function(a,b){var c=this.shapes[36];return null!=c&&c.wasClicked(a,b)},"~N,~N");c(b,"checkObjectClicked",function(a,b,c,l,f){var e,h=null;if(2==this.vwr.getPickingMode())return null==this.shapes[5]?null:this.shapes[5].checkObjectClicked(a,b,c,l,!1);if(0!=c&&this.vwr.getBondsPickable()&&null!=(h=this.shapes[1].checkObjectClicked(a,b,c,l,!1)))return h;for(var j=0;jc;c++)null!=this.shapes[c]&&this.setShapePropertyBs(c,"deleteModelAtoms",a,b)},"~A,JU.BS");c(b,"deleteVdwDependentShapes",function(a){null==a&&(a=this.vwr.bsA());this.setShapeAtomsSafely(24,"deleteVdw",a);this.setShapeAtomsSafely(25,"deleteVdw",a)},"JU.BS");c(b,"setShapeAtomsSafely",function(a,b,c){null!=this.shapes[a]&&this.shapes[a].setProperty(b,null, +c)},"~N,~S,JU.BS");c(b,"notifyAtoms",function(a,b){switch(a){case "atomsDeleted":this.setShapeAtomsSafely(6,a,b[0]);this.vwr.setModelkitPropertySafely("updatemodelkeys",b);break;case "atomsMoved":null!=this.getShape(22)&&this.vwr.setModelkitPropertySafely(a,b[0])}},"~S,~A");c(b,"getAtomShapeValue",function(a,b,c){a=JV.JC.shapeTokenIndex(a);if(0>a||null==this.shapes[a])return 0;c=this.shapes[a].getSize(c);if(0==c){if(0==(b.shapeVisibilityFlags&this.shapes[a].vf))return 0;c=this.shapes[a].getSizeG(b)}return c/ +2E3},"~N,JM.Group,~N");c(b,"replaceGroup",function(a,b){if(null!=this.shapes)for(var c=9;16>c;c++)null!=this.shapes[c]&&this.shapes[c].replaceGroup(a,b)},"JM.Group,JM.Group");c(b,"getObjectMap",function(a,b){if(null!=this.shapes)for(var c=Boolean.$valueOf(b),l=16;30>l;++l)this.getShapePropertyData(l,"getNames",w(-1,[a,c]))},"java.util.Map,~B");c(b,"getProperty",function(a){return a.equals("getShapes")?this.shapes:null},"~O");c(b,"getShape",function(a){return null==this.shapes?null:this.shapes[a]}, +"~N");c(b,"resetBioshapes",function(a){if(null!=this.shapes)for(var b=0;bc;c++)null!=a[c]&&a[c].setModelVisibilityFlags(b);var a=this.vwr.getBoolean(603979922),l=this.vwr.slm.bsDeleted,f=this.ms.at;this.ms.clearVisibleSets();if(0a;++a){var b=this.shapes[a];null!=b&&b.setAtomClickability()}});c(b,"finalizeAtoms",function(a,b){var c=this.vwr,l=c.tm;b&&c.finalizeTransformParameters();if(null!=a){var f=this.ms.getAtomSetCenter(a),e=new JU.P3;l.transformPt3f(f,e);e.add(l.ptOffset);l.unTransformPoint(e,e);e.sub(f);c.setAtomCoordsRelative(e,a);l.ptOffset.set(0,0,0);l.bsSelectedAtoms=null}f=this.bsRenderableAtoms;this.ms.getAtomsInFrame(f);var h=this.ms.vibrations,j=null!=h&&l.vibrationOn,m=null!=this.ms.bsModulated&&null!= +this.ms.occupancies,p=this.ms.at,n,q=!1,r=this.bsSlabbedInternal;r.clearAll();for(var s=f.nextSetBit(0);0<=s;s=f.nextSetBit(s+1)){var e=p[s],u=j&&e.hasVibration()?l.transformPtVib(e,h[s]):l.transformPt(e);1==u.z&&(l.internalSlab&&l.xyzIsSlabbedInternal(e))&&r.set(s);e.sX=u.x;e.sY=u.y;e.sZ=u.z;var v=Math.abs(e.madAtom);v==JM.Atom.MAD_GLOBAL&&(v=D(2E3*c.getFloat(1153433601)));e.sD=ca(c.tm.scaleToScreen(u.z,v));if(m&&null!=h[s]&&-2147483648!=(n=h[s].getOccupancy100(j)))q=!0,e.setShapeVisibility(2,!1), +0<=n&&50>n?e.setShapeVisibility(24,!1):e.setShapeVisibility(8|(0>1));u++,e++);if(u!=r.ac){e=r.firstAtomIndex;for(u=0;u>1:0)))e.setClickable(0),m=B((l?-1:1)*e.sD/2),(e.sZ+mj||!n.isInDisplayRange(e.sX,e.sY))&&f.clear(s)}if(0==this.ms.ac||!c.getShowNavigationPoint())return null;c=2147483647;n=-2147483648;l=2147483647;h=-2147483648;for(s=f.nextSetBit(0);0<=s;s=f.nextSetBit(s+1))e=p[s],e.sXn&&(n=e.sX),e.sYh&&(h=e.sY);this.navMinMax[0]=c;this.navMinMax[1]=n;this.navMinMax[2]=l;this.navMinMax[3]= +h;return this.navMinMax},"JU.BS,~B");c(b,"setModelSet",function(a){this.ms=a},"JM.ModelSet");c(b,"checkInheritedShapes",function(){null!=this.shapes[24]&&this.setShapePropertyBs(24,"remapInherited",null,null)});c(b,"restrictSelected",function(a,b){var c=this.vwr.slm.getSelectedAtomsNoSubset();if(b){this.vwr.slm.invertSelection();var l=this.vwr.slm.bsSubset;null!=l&&(c=this.vwr.slm.getSelectedAtomsNoSubset(),c.and(l),this.vwr.selectStatus(c,!1,0,!0,!1),JU.BSUtil.invertInPlace(c,this.vwr.ms.ac),c.and(l))}JU.BSUtil.andNot(c, +this.vwr.slm.bsDeleted);l=this.vwr.getBoolean(603979812);a||this.vwr.setBooleanProperty("bondModeOr",!0);this.setShapeSizeBs(1,0,null,null);this.setShapePropertyBs(1,"type",Integer.$valueOf(32768),null);this.setShapeSizeBs(1,0,null,null);this.setShapePropertyBs(1,"type",Integer.$valueOf(1023),null);for(var f=this.vwr.bsA(),e=21;0<=--e;)6!=e&&null!=this.getShape(e)&&this.setShapeSizeBs(e,0,null,f);null!=this.getShape(21)&&this.setShapePropertyBs(21,"off",f,null);this.setLabel(null,f);a||this.vwr.setBooleanProperty("bondModeOr", +l);this.vwr.selectStatus(c,!1,0,!0,!1)},"~B,~B");b.hoverable=E(-1,[31,20,25,24,22,36]);b.clickableMax=JV.ShapeManager.hoverable.length-1});u("JV");C(["java.util.Hashtable"],["JV.Connection","$.Scene","$.StateManager","$.Connections"],"java.util.Arrays JU.BS $.Lst $.SB JM.Orientation JU.BSUtil $.Escape".split(" "),function(){var b=v(function(){this.maxUndo=20;this.saved=this.vwr=null;this.lastUnitcell=this.lastCoordinates=this.lastShape=this.lastState=this.lastSelected=this.lastScene=this.lastConnections= +this.lastContext=this.lastOrientation="";this.redoStateStack=this.undoStateStack=null;r(this,arguments)},JV,"StateManager",null);P(b,function(){this.saved=new java.util.Hashtable});A(b,function(a){this.vwr=a},"JV.Viewer");b.getVariableList=c(b,"getVariableList",function(a,b,c,l){var f=new JU.SB,e=0,h=Array(a.size()),j;for(a=a.entrySet().iterator();a.hasNext()&&((j=a.next())||1);){var m=j.getKey(),p=j.getValue();if((c||!m.startsWith("site_"))&&(!l||"@"==m.charAt(0)))h[e++]=m+("@"==m.charAt(0)?" "+ +p.asString():" = "+JV.StateManager.varClip(m,p.escape(),b))}java.util.Arrays.sort(h,0,e);for(b=0;ba?a:B(a/11)},"~S");b.getObjectNameFromId= +c(b,"getObjectNameFromId",function(a){return 0>a||7<=a?null:"background axis1 axis2 axis3 boundbox unitcell frank ".substring(11*a,11*a+11).trim()},"~N");c(b,"clear",function(a){this.vwr.setShowAxes(!1);this.vwr.setShowBbcage(!1);this.vwr.setShowUnitCell(!1);a.clear()},"JV.GlobalSettings");c(b,"resetLighting",function(){this.vwr.setIntProperty("ambientPercent",45);this.vwr.setIntProperty("celShadingPower",10);this.vwr.setIntProperty("diffusePercent",84);this.vwr.setIntProperty("phongExponent", +64);this.vwr.setIntProperty("specularExponent",6);this.vwr.setIntProperty("specularPercent",22);this.vwr.setIntProperty("specularPower",40);this.vwr.setIntProperty("zDepth",0);this.vwr.setIntProperty("zShadePower",3);this.vwr.setIntProperty("zSlab",50);this.vwr.setBooleanProperty("specular",!0);this.vwr.setBooleanProperty("celShading",!1);this.vwr.setBooleanProperty("zshade",!1)});c(b,"setCrystallographicDefaults",function(){this.vwr.setAxesMode(603979808);this.vwr.setShowAxes(!0);this.vwr.setShowUnitCell(!0); +this.vwr.setBooleanProperty("perspectiveDepth",!1)});c(b,"setCommonDefaults",function(){this.vwr.setBooleanProperty("perspectiveDepth",!0);this.vwr.setFloatProperty("bondTolerance",0.45);this.vwr.setFloatProperty("minBondDistance",0.4);this.vwr.setIntProperty("bondingVersion",0);this.vwr.setBooleanProperty("translucent",!0)});c(b,"setJmolDefaults",function(){this.setCommonDefaults();this.vwr.setStringProperty("defaultColorScheme","Jmol");this.vwr.setBooleanProperty("axesOrientationRasmol",!1);this.vwr.setBooleanProperty("zeroBasedXyzRasmol", +!1);this.vwr.setIntProperty("percentVdwAtom",23);this.vwr.setIntProperty("bondRadiusMilliAngstroms",150);this.vwr.setVdwStr("auto")});c(b,"setRasMolDefaults",function(){this.setCommonDefaults();this.vwr.setStringProperty("defaultColorScheme","RasMol");this.vwr.setBooleanProperty("axesOrientationRasmol",!0);this.vwr.setBooleanProperty("zeroBasedXyzRasmol",!0);this.vwr.setIntProperty("percentVdwAtom",0);this.vwr.setIntProperty("bondRadiusMilliAngstroms",1);this.vwr.setVdwStr("Rasmol")});c(b,"setPyMOLDefaults", +function(){this.setCommonDefaults();this.vwr.setStringProperty("measurementUnits","ANGSTROMS");this.vwr.setBooleanProperty("zoomHeight",!0)});b.getNoCase=c(b,"getNoCase",function(a,b){for(var c,l=a.entrySet().iterator();l.hasNext()&&((c=l.next())||1);)if(c.getKey().equalsIgnoreCase(b))return c.getValue();return null},"java.util.Map,~S");c(b,"listSavedStates",function(){for(var a="",b,c=this.saved.keySet().iterator();c.hasNext()&&((b=c.next())||1);)a+="\n"+b;return a});c(b,"deleteSavedType",function(a){for(var b= +this.saved.keySet().iterator();b.hasNext();)b.next().startsWith(a)&&b.remove()},"~S");c(b,"deleteSaved",function(a){for(var b=this.saved.keySet().iterator();b.hasNext();){var c=b.next();(c.startsWith(a)||c.endsWith("_"+a)&&c.indexOf("_")==c.lastIndexOf("_"+a))&&b.remove()}},"~S");c(b,"saveSelection",function(a,b){a.equalsIgnoreCase("DELETE")?this.deleteSavedType("Selected_"):(a=this.lastSelected="Selected_"+a,this.saved.put(a,JU.BSUtil.copy(b)))},"~S,JU.BS");c(b,"restoreSelection",function(a){a=JV.StateManager.getNoCase(this.saved, +0this.maxUndo;)a.removeItemAt(0)},"JU.Lst");c(b,"getStack",function(a){null==this.undoStateStack&&(this.undoStateStack=new JU.Lst,this.redoStateStack=new JU.Lst);return 603984065==a?this.undoStateStack:this.redoStateStack},"~N");c(b,"clearStateStack",function(){null!=this.undoStateStack&&(this.undoStateStack.clear(),this.redoStateStack.clear())});c(b,"saveStructure",function(a){a.equalsIgnoreCase("DELETE")?this.deleteSavedType("Shape_"): +(a=this.lastShape="Shape_"+a,this.saved.put(a,this.vwr.getStructureState()))},"~S");c(b,"getSavedStructure",function(a){a=JV.StateManager.getNoCase(this.saved,0c&&(b=b.substring(0,c)+" #...more ("+b.length+" bytes -- use SHOW "+a+" or MESSAGE @"+a+" to view)");return b},"~S,~S,~N");c(b,"getUndoMax",function(){return this.maxUndo});c(b,"setUndoMax",function(a){this.maxUndo=Math.max(a,0);this.checkStack(this.getStack(603984065));this.checkStack(this.getStack(4139))},"~N");c(b,"getUndoRedoState",function(a){return this.popStack(a)},"~N");c(b,"canDo",function(a){return 0=l||c.atomIndex2>=l||(l=a.bondAtoms(a.at[c.atomIndex1],a.at[c.atomIndex2],c.order,c.mad,null,c.energy,!1,!0),l.colix=c.colix,l.shapeVisibilityFlags=c.shapeVisibilityFlags)}for(b=a.bondCount;0<=--b;)a.bo[b].index=b;this.vwr.setShapeProperty(1,"reportAll",null);return!0});b=v(function(){this.shapeVisibilityFlags=this.energy=this.order= +this.colix=this.mad=this.atomIndex2=this.atomIndex1=0;r(this,arguments)},JV,"Connection",null);A(b,function(a,b,c,l,f,e,h){this.atomIndex1=a;this.atomIndex2=b;this.mad=c;this.colix=l;this.order=f;this.energy=e;this.shapeVisibilityFlags=h},"~N,~N,~N,~N,~N,~N,~N")});u("JV");C(["java.util.Hashtable"],"JV.StatusManager","JU.Lst $.PT J.api.Interface J.c.CBK JS.SV JU.BSUtil $.Logger JV.JC".split(" "),function(){var b=v(function(){this.cbl=this.jsl=this.vwr=null;this.statusList="";this.allowStatusReporting= +!1;this.messageQueue=null;this.statusPtr=0;this.imageMap=this.jmolScriptCallbacks=null;this.echoing=!1;this.minSyncRepeatMs=100;this.stereoSync=this.syncDisabled=this.isSynced=this.drivingSync=this.syncingMouse=this.syncingScripts=!1;this.qualityPNG=this.qualityJPG=-1;this.audios=this.imageType=null;r(this,arguments)},JV,"StatusManager",null);P(b,function(){this.messageQueue=new java.util.Hashtable;this.jmolScriptCallbacks=new java.util.Hashtable});A(b,function(a){this.vwr=a},"JV.Viewer");c(b,"recordStatus", +function(a){return this.allowStatusReporting&&0c.length?"Jmol":3>c.length||c[2].equals("null")?c[1].substring(c[1].lastIndexOf("/")+1):c[2];var c=this.getJmolScriptCallback(J.c.CBK.IMAGE),l=this.notifyEnabled(J.c.CBK.IMAGE);(l||null!=c)&&this.fireJmolScriptCallback(l,J.c.CBK.IMAGE,w(-1,[c,a,b]),!0);if(Boolean.TRUE.equals(b)){if(null!=this.imageMap){for(var c= +new JU.Lst,f,l=this.imageMap.keySet().iterator();l.hasNext()&&((f=l.next())||1);)c.addLast(f);for(f=c.size();0<=--f;)this.imageMap.get(c.get(f)).closeMe()}}else null==this.imageMap&&(this.imageMap=new java.util.Hashtable),f=this.imageMap.get(a),Boolean.FALSE.equals(b)?null!=f&&f.closeMe():(null==f&&null!=b&&(f=this.vwr.apiPlatform.getImageDialog(a,this.imageMap)),null!=f&&(null==b?f.closeMe():f.setImage(b)))},"~S,~O");c(b,"setFileLoadStatus",function(a,b,c,l,f,e,h){null==a&&"resetUndo".equals(b)&& +(b=this.vwr.getProperty("DATA_API","getAppConsole",null),null!=b&&b.zap(),b=this.vwr.getZapName());this.setStatusChanged("fileLoaded",f,a,!1);null!=l&&this.setStatusChanged("fileLoadError",f,l,!1);var j=this.getJmolScriptCallback(J.c.CBK.LOADSTRUCT);if((e=e&&this.notifyEnabled(J.c.CBK.LOADSTRUCT))||null!=j){var m=this.vwr.getP("_smilesString");0!=m.length&&(b=m);this.fireJmolScriptCallback(e,J.c.CBK.LOADSTRUCT,w(-1,[j,a,b,c,l,Integer.$valueOf(f),this.vwr.getP("_modelNumber"),this.vwr.getModelNumberDotted(this.vwr.ms.mc- +1),h]),!0)}},"~S,~S,~S,~S,~N,~B,Boolean");c(b,"setStatusModelKit",function(a){var b=1==a?"ON":"OFF";this.setStatusChanged("modelkit",a,b,!1);a=this.getJmolScriptCallback(J.c.CBK.MODELKIT);var c=this.notifyEnabled(J.c.CBK.MODELKIT);(c||null!=a)&&this.fireJmolScriptCallback(c,J.c.CBK.MODELKIT,w(-1,[a,b]),!0)},"~N");c(b,"setStatusFrameChanged",function(a,b,c,l,f,e,h){if(null!=this.vwr.ms){var j=this.vwr.am.animationOn,m=j?-2-f:f;this.setStatusChanged("frameChanged",m,0<=f?this.vwr.getModelNumberDotted(f): +"",!1);var p=this.getJmolScriptCallback(J.c.CBK.ANIMFRAME),n=this.notifyEnabled(J.c.CBK.ANIMFRAME);(n||null!=p)&&this.fireJmolScriptCallback(n,J.c.CBK.ANIMFRAME,w(-1,[p,E(-1,[m,a,b,c,l,f]),h,Float.$valueOf(e)]),!1);!j&&!this.vwr.isJSNoAWT&&this.vwr.checkMenuUpdate()}},"~N,~N,~N,~N,~N,~N,~S");c(b,"setStatusDragDropped",function(a,b,c,l,f){this.setStatusChanged("dragDrop",0,"",!1);var e=this.getJmolScriptCallback(J.c.CBK.DRAGDROP),h=this.notifyEnabled(J.c.CBK.DRAGDROP);(h||null!=e)&&this.fireJmolScriptCallback(h, +J.c.CBK.DRAGDROP,w(-1,[e,Integer.$valueOf(a),Integer.$valueOf(b),Integer.$valueOf(c),l,f]),!0);return h},"~N,~N,~N,~S,~A");c(b,"setScriptEcho",function(a,b){if(!(null==a||this.echoing)){this.echoing=!0;this.setStatusChanged("scriptEcho",0,a,!1);var c=this.getJmolScriptCallback(J.c.CBK.ECHO),l=this.notifyEnabled(J.c.CBK.ECHO);if(l||null!=c)this.fireJmolScriptCallback(l,J.c.CBK.ECHO,w(-1,[c,a,Integer.$valueOf(b?1:0)]),!0);this.echoing=!1}},"~S,~B");c(b,"setStatusMeasuring",function(a,b,c,l){this.setStatusChanged(a, +b,c,!1);var f=null;a.equals("measureCompleted")?(JU.Logger.info("measurement["+b+"] = "+c),f=this.getJmolScriptCallback(J.c.CBK.MEASURE)):a.equals("measurePicked")&&(this.setStatusChanged("measurePicked",b,c,!1),JU.Logger.info("measurePicked "+b+" "+c));var e=this.notifyEnabled(J.c.CBK.MEASURE);(e||null!=f)&&this.fireJmolScriptCallback(e,J.c.CBK.MEASURE,w(-1,[f,c,Integer.$valueOf(b),a,Float.$valueOf(l)]),!0)},"~S,~N,~S,~N");c(b,"notifyError",function(a,b,c){var l=this.getJmolScriptCallback(J.c.CBK.ERROR), +f=this.notifyEnabled(J.c.CBK.ERROR);(f||null!=l)&&this.fireJmolScriptCallback(f,J.c.CBK.ERROR,w(-1,[l,a,b,this.vwr.getShapeErrorState(),c]),!0)},"~S,~S,~S");c(b,"notifyMinimizationStatus",function(a,b,c,l,f){var e=this.getJmolScriptCallback(J.c.CBK.MINIMIZATION),h=this.notifyEnabled(J.c.CBK.MINIMIZATION);(h||null!=e)&&this.fireJmolScriptCallback(h,J.c.CBK.MINIMIZATION,w(-1,[e,a,b,c,l,f]),!0)},"~S,Integer,Float,Float,~S");c(b,"setScriptStatus",function(a,b,c,l){if(-1>c){var f=-2-c;this.setStatusChanged("scriptStarted", +f,b,!1);a="script "+f+" started"}else if(null==a)return;var f=0==c?this.getJmolScriptCallback(J.c.CBK.SCRIPT):null,e="Script completed"===a;if(this.recordStatus("script")){var h=null!=l;this.setStatusChanged(h?"scriptError":"scriptStatus",0,a,!1);if(h||e)this.setStatusChanged("scriptTerminated",1,"Jmol script terminated"+(h?" unsuccessfully: "+a:" successfully"),!1)}e&&(this.vwr.getBoolean(603979879)&&this.vwr.getBoolean(603979825))&&(a=this.vwr.getChimeMessenger().scriptCompleted(this,b,l));b=w(-1, +[f,a,b,Integer.$valueOf(e?-1:c),l]);((c=this.notifyEnabled(J.c.CBK.SCRIPT))||null!=f)&&this.fireJmolScriptCallback(c,J.c.CBK.SCRIPT,b,!0);this.processScript(b)},"~S,~S,~N,~S");c(b,"processScript",function(a){var b=a[3].intValue();this.vwr.notifyScriptEditor(b,a);0==b&&this.vwr.sendConsoleMessage(null==a[1]?null:a[1].toString())},"~A");c(b,"doSync",function(){return this.isSynced&&this.drivingSync&&!this.syncDisabled});c(b,"setSync",function(a){if(this.syncingMouse){if(null!=a){var b=this.getJmolScriptCallback(J.c.CBK.SYNC); +null!=b&&this.fireJmolScriptCallback(!1,J.c.CBK.SYNC,w(-1,[b,a,"sending mouseSync"]),!0);this.syncSend(a,"*",0)}}else this.syncingScripts||this.syncSend("!"+this.vwr.tm.getMoveToText(this.minSyncRepeatMs/1E3,!1),"*",0)},"~S");c(b,"setSyncDriver",function(a){this.stereoSync&&4!=a&&(this.syncSend("SET_GRAPHICS_OFF","*",0),this.stereoSync=!1);switch(a){case 4:if(!this.syncDisabled)return;this.syncDisabled=!1;break;case 3:this.syncDisabled=!0;break;case 5:this.stereoSync=this.isSynced=this.drivingSync= +!0;break;case 1:this.isSynced=this.drivingSync=!0;break;case 2:this.drivingSync=!1;this.isSynced=!0;break;default:this.isSynced=this.drivingSync=!1}JU.Logger.debugging&&JU.Logger.debug(this.vwr.appletName+" sync mode="+a+"; synced? "+this.isSynced+"; driving? "+this.drivingSync+"; disabled? "+this.syncDisabled)},"~N");c(b,"syncSend",function(a,b,c){return 0!=c||this.notifyEnabled(J.c.CBK.SYNC)?(a=w(-1,[null,a,b,Integer.$valueOf(c)]),null!=this.cbl&&this.cbl.notifyCallback(J.c.CBK.SYNC,a),a[0]):null}, +"~S,~O,~N");c(b,"processService",function(a){var b=a.get("service");if(null==b)return null;if(z(b,"JS.SV")){var b=new java.util.Hashtable,c;for(a=a.entrySet().iterator();a.hasNext()&&((c=a.next())||1);)b.put(c.getKey(),JS.SV.oValue(c.getValue()));a=b}this.notifyEnabled(J.c.CBK.SERVICE)&&this.cbl.notifyCallback(J.c.CBK.SERVICE,w(-1,[null,a]));return a},"java.util.Map");c(b,"getSyncMode",function(){return!this.isSynced?0:this.drivingSync?1:2});c(b,"showUrl",function(a){null!=this.jsl&&this.jsl.showUrl(a)}, +"~S");c(b,"clearConsole",function(){this.vwr.sendConsoleMessage(null);null!=this.jsl&&this.cbl.notifyCallback(J.c.CBK.MESSAGE,null)});c(b,"functionXY",function(a,b,c){return null==this.jsl?K(Math.abs(b),Math.abs(c),0):this.jsl.functionXY(a,b,c)},"~S,~N,~N");c(b,"functionXYZ",function(a,b,c,l){return null==this.jsl?K(Math.abs(b),Math.abs(c),Math.abs(c),0):this.jsl.functionXYZ(a,b,c,l)},"~S,~N,~N,~N");c(b,"jsEval",function(a){return null==this.jsl?"":this.jsl.eval(a)},"~S");c(b,"createImage",function(a, +b,c,l,f){return null==this.jsl?null:this.jsl.createImage(a,b,null==c?l:c,f)},"~S,~S,~S,~A,~N");c(b,"getRegistryInfo",function(){return null==this.jsl?null:this.jsl.getRegistryInfo()});c(b,"dialogAsk",function(a,b,c){var l=a.equals("Save Image"),f=J.api.Interface.getOption("dialog.Dialog",this.vwr,"status");if(null==f)return null;f.setupUI(!1);l&&f.setImageInfo(this.qualityJPG,this.qualityPNG,this.imageType);a=f.getFileNameFromDialog(this.vwr,a,b);l&&null!=a&&(this.qualityJPG=f.getQuality("JPG"),this.qualityPNG= +f.getQuality("PNG"),l=f.getType(),null!=c&&(c.put("qualityJPG",Integer.$valueOf(this.qualityJPG)),c.put("qualityPNG",Integer.$valueOf(this.qualityPNG)),null!=l&&c.put("dialogImageType",l)),null!=l&&(this.imageType=l));return a},"~S,~S,java.util.Map");c(b,"getJspecViewProperties",function(a){return null==this.jsl?null:this.jsl.getJSpecViewProperty(null==a||0==a.length?"":":"+a)},"~S");c(b,"resizeInnerPanel",function(a,b){return null==this.jsl||a==this.vwr.getScreenWidth()&&b==this.vwr.getScreenHeight()? +E(-1,[a,b]):this.jsl.resizeInnerPanel("preferredWidthHeight "+a+" "+b+";")},"~N,~N");c(b,"resizeInnerPanelString",function(a){null!=this.jsl&&this.jsl.resizeInnerPanel(a)},"~S");c(b,"registerAudio",function(a,b){this.stopAudio(a);null==this.audios&&(this.audios=new java.util.Hashtable);null==b?this.audios.remove(a):this.audios.put(a,b.get("audioPlayer"))},"~S,java.util.Map");c(b,"stopAudio",function(a){null!=this.audios&&(a=this.audios.get(a),null!=a&&a.action("kill"))},"~S");c(b,"playAudio",function(a){if(this.vwr.getBoolean(603979797))try{var b= +null==a?"close":a.get("action"),c=null==a?null:a.get("id");if(null!=b&&0p.length())&&(h?Float.isNaN(l)||0==l:0==f))return!1;var u=null;null==q&&(u=JU.V3.newVsub(c,b),e&&u.scale(-1),this.internalRotationCenter.setT(b),this.rotationAxis.setT(u),this.internalTranslation=null==p?null:JU.V3.newV(p));b=null!=j;if(h)return null== +q?(0==f&&(f=NaN),Float.isNaN(f)?this.rotationRate=l:(r=B(Math.abs(f)/Math.abs(l)*this.spinFps+0.5),this.rotationRate=f/r*this.spinFps,null!=p&&this.internalTranslation.scale(1/r)),this.internalRotationAxis.setVA(u,0.017453292519943295*(Float.isNaN(this.rotationRate)?0:this.rotationRate)),this.isSpinInternal=!0,this.isSpinFixed=!1,this.isSpinSelected=b):f=l,this.setSpin(a,!0,f,n,q,j,m),!Float.isNaN(f);a=0.017453292519943295*f;this.internalRotationAxis.setVA(u,a);this.rotateAxisAngleRadiansInternal(a, +j,r,s);return!1},"J.api.JmolScriptEvaluator,JU.T3,JU.T3,~N,~N,~B,~B,JU.BS,~B,JU.V3,JU.Lst,~A,JU.M4,~B");c(b,"rotateAxisAngleRadiansInternal",function(a,b,c,l){this.internalRotationAngle=a;this.vectorT.set(this.internalRotationAxis.x,this.internalRotationAxis.y,this.internalRotationAxis.z);this.matrixRotate.rotate2(this.vectorT,this.vectorT2);this.axisangleT.setVA(this.vectorT2,a);this.applyRotation(this.matrixTemp3.setAA(this.axisangleT),!0,b,this.internalTranslation,1E6a&&(a=-20);var b=a*this.zmPctSet/50;0==b&&(b=0b?-1:0);this.zoomRatio=(b+this.zmPctSet)/this.zmPctSet;this.zmPctSet+=b},"~N");c(b,"zoomByFactor",function(a,b,c){!(0>=a)&&this.zoomEnabled&&(1!=this.mode?(this.zoomRatio= +a,this.zmPctSet*=a,this.resetXYCenter(b,c)):this.getNav()&&this.nav.zoomByFactor(a,b,c))},"~N,~N,~N");c(b,"zoomToPercent",function(a){this.zmPctSet=a;this.zoomRatio=0},"~N");c(b,"translateZBy",function(a){a>=this.screenPixelCount||(a=this.scalePixelsPerAngstrom/(1-1*a/this.screenPixelCount),a>=this.screenPixelCount||(a=100*(a/this.scaleDefaultPixelsPerAngstrom),this.zoomRatio=a/this.zmPctSet,this.zmPctSet=a))},"~N");c(b,"resetXYCenter",function(a,b){if(!(2147483647==a||2147483647==b)){this.windowCentered&& +this.vwr.setBooleanProperty("windowCentered",!1);var c=new JU.P3;this.transformPt3f(this.fixedRotationCenter,c);c.set(a,b,c.z);this.unTransformPoint(c,c);this.fixedTranslation.set(a,b,0);this.setFixedRotationCenter(c)}},"~N,~N");c(b,"zoomByPercent",function(a){var b=a*this.zmPctSet/100;0==b&&(b=0>a?-1:1);this.zoomRatio=(b+this.zmPctSet)/this.zmPctSet;this.zmPctSet+=b},"~N");c(b,"setScaleAngstromsPerInch",function(a){if(this.scale3D=0a?this.slabPercentSetting<=Math.max(0,this.depthPercentSetting):100<=this.slabPercentSetting))this.slabPercentSetting+=a,this.slabDepthChanged(),this.depthPercentSetting>=this.slabPercentSetting&& +(this.depthPercentSetting=this.slabPercentSetting-1)},"~N");c(b,"depthByPercentagePoints",function(a){this.depthPlane=null;if(!(0>a?0>=this.depthPercentSetting:this.depthPercentSetting>=Math.min(100,this.slabPercentSetting)))this.depthPercentSetting+=a,this.slabPercentSetting<=this.depthPercentSetting&&(this.slabPercentSetting=this.depthPercentSetting+1),this.slabDepthChanged()},"~N");c(b,"slabDepthByPercentagePoints",function(a){this.depthPlane=this.slabPlane=null;if(!(0>a?this.slabPercentSetting<= +Math.max(0,this.depthPercentSetting):this.depthPercentSetting>=Math.min(100,this.slabPercentSetting)))this.slabPercentSetting+=a,this.depthPercentSetting+=a,this.slabDepthChanged()},"~N");c(b,"slabToPercent",function(a){this.slabPlane=null;this.vwr.setFloatProperty("slabRange",0);this.slabPercentSetting=a;this.depthPercentSetting>=this.slabPercentSetting&&(this.depthPercentSetting=this.slabPercentSetting-1);this.slabDepthChanged()},"~N");c(b,"depthToPercent",function(a){this.depthPlane=null;this.vwr.g.setI("depth", +a);this.depthPercentSetting=a;this.slabPercentSetting<=this.depthPercentSetting&&(this.slabPercentSetting=this.depthPercentSetting+1);this.slabDepthChanged()},"~N");c(b,"zSlabToPercent",function(a){this.zSlabPercentSetting=a;this.zDepthPercentSetting>this.zSlabPercentSetting&&(this.zDepthPercentSetting=a)},"~N");c(b,"zDepthToPercent",function(a){this.zDepthPercentSetting=a;this.zDepthPercentSetting>this.zSlabPercentSetting&&(this.zSlabPercentSetting=a)},"~N");c(b,"slabInternal",function(a,b){b?(this.depthPlane= +a,this.depthPercentSetting=0):(this.slabPlane=a,this.slabPercentSetting=100);this.slabDepthChanged()},"JU.P4,~B");c(b,"setSlabDepthInternal",function(a){a?this.depthPlane=null:this.slabPlane=null;this.finalizeTransformParameters();this.slabInternal(this.getSlabDepthPlane(a),a)},"~B");c(b,"getSlabDepthPlane",function(a){if(a){if(null!=this.depthPlane)return this.depthPlane}else if(null!=this.slabPlane)return this.slabPlane;var b=this.matrixTransform;return JU.P4.new4(-b.m20,-b.m21,-b.m22,-b.m23+(a? +this.depthValue:this.slabValue))},"~B");c(b,"getCameraFactors",function(){this.aperatureAngle=360*Math.atan2(this.screenPixelCount/2,this.referencePlaneOffset)/3.141592653589793;this.cameraDistanceFromCenter=this.referencePlaneOffset/this.scalePixelsPerAngstrom;var a=JU.P3.new3(B(this.screenWidth/2),B(this.screenHeight/2),this.referencePlaneOffset);this.unTransformPoint(a,a);var b=JU.P3.new3(B(this.screenWidth/2),B(this.screenHeight/2),0);this.unTransformPoint(b,b);b.sub(this.fixedRotationCenter); +var c=JU.P3.new3(B(this.screenWidth/2),B(this.screenHeight/2),this.cameraDistanceFromCenter*this.scalePixelsPerAngstrom);this.unTransformPoint(c,c);c.sub(this.fixedRotationCenter);b.add(c);return w(-1,[a,b,this.fixedRotationCenter,JU.P3.new3(this.cameraDistanceFromCenter,this.aperatureAngle,this.scalePixelsPerAngstrom)])});c(b,"setPerspectiveDepth",function(a){this.perspectiveDepth!=a&&(this.perspectiveDepth=a,this.vwr.g.setB("perspectiveDepth",a),this.resetFitToScreen(!1))},"~B");c(b,"getPerspectiveDepth", +function(){return this.perspectiveDepth});c(b,"setCameraDepthPercent",function(a,b){this.resetNavigationPoint(b);var c=0>a?-a/100:a;0!=c&&(this.cameraDepthSetting=c,this.vwr.g.setF("cameraDepth",this.cameraDepthSetting),this.cameraDepth=NaN)},"~N,~B");c(b,"getCameraDepth",function(){return this.cameraDepthSetting});c(b,"setScreenParameters0",function(a,b,c,l,f,e){2147483647!=a&&(this.screenWidth=a,this.screenHeight=b,this.useZoomLarge=c,this.width=(this.antialias=l)?2*a:a,this.height=l?2*b:b,this.scaleFitToScreen(!1, +c,f,e))},"~N,~N,~B,~B,~B,~B");c(b,"setAntialias",function(a){var b=this.antialias!=a;this.width=(this.antialias=a)?2*this.screenWidth:this.screenWidth;this.height=this.antialias?2*this.screenHeight:this.screenHeight;b&&this.scaleFitToScreen(!1,this.useZoomLarge,!1,!1)},"~B");c(b,"defaultScaleToScreen",function(a){return this.screenPixelCount/2/a},"~N");c(b,"resetFitToScreen",function(a){this.scaleFitToScreen(a,this.vwr.g.zoomLarge,!0,!0)},"~B");c(b,"scaleFitToScreen",function(a,b,c,l){0==this.width|| +0==this.height?this.screenPixelCount=1:(this.fixedTranslation.set(this.width*(a?0.5:this.xTranslationFraction),this.height*(a?0.5:this.yTranslationFraction),0),this.setTranslationFractions(),a&&this.camera.set(0,0,0),l&&this.resetNavigationPoint(c),this.zoomHeight&&(b=this.height>this.width),this.screenPixelCount=b==this.height>this.width?this.height:this.width);2a)return 0;var c=this.scaleToPerspective(a,b*this.scalePixelsPerAngstrom/1E3);return 0this.zmPctSet&&(this.zmPctSet=5);2E5this.slabRange?this.zValueFromPercent(this.slabPercentSetting):B(Math.floor(this.modelCenterOffset*this.slabRange/(2*this.modelRadius)*(this.zmPctSet/100)));this.depthValue=this.zValueFromPercent(this.depthPercentSetting);this.zSlabPercentSetting== +this.zDepthPercentSetting?(this.zSlabValue=this.slabValue,this.zDepthValue=this.depthValue):(this.zSlabValue=this.zValueFromPercent(this.zSlabPercentSetting),this.zDepthValue=this.zValueFromPercent(this.zDepthPercentSetting));if(null!=this.zSlabPoint)try{this.transformPt3f(this.zSlabPoint,this.pointT2),this.zSlabValue=D(this.pointT2.z)}catch(a){if(!F(a,Exception))throw a;}this.vwr.g.setO("_slabPlane",JU.Escape.eP4(this.getSlabDepthPlane(!1)));this.vwr.g.setO("_depthPlane",JU.Escape.eP4(this.getSlabDepthPlane(!0))); +this.slabEnabled||(this.slabValue=0,this.depthValue=2147483647)});c(b,"zValueFromPercent",function(a){return B(Math.floor((1-a/50)*this.modelRadiusPixels+this.modelCenterOffset))},"~N");c(b,"calcTransformMatrix",function(){this.matrixTransform.setIdentity();this.vectorTemp.sub2(this.frameOffset,this.fixedRotationCenter);this.matrixTransform.setTranslation(this.vectorTemp);this.matrixTemp.setToM3(this.stereoFrame?this.matrixStereo:this.matrixRotate);this.matrixTransform.mul2(this.matrixTemp,this.matrixTransform); +this.matrixTemp.setIdentity();this.matrixTemp.m00=this.matrixTemp.m11=this.matrixTemp.m22=this.scalePixelsPerAngstrom;this.matrixTemp.m11=this.matrixTemp.m22=-this.scalePixelsPerAngstrom;this.matrixTransform.mul2(this.matrixTemp,this.matrixTransform);this.matrixTransform.m23+=this.modelCenterOffset;try{this.matrixTransformInv.setM4(this.matrixTransform).invert()}catch(a){if(F(a,Exception))System.out.println("ERROR INVERTING matrixTransform!");else throw a;}});c(b,"rotatePoint",function(a,b){this.matrixRotate.rotate2(a, +b);b.y=-b.y},"JU.T3,JU.T3");c(b,"getScreenTemp",function(a){this.matrixTransform.rotTrans2(a,this.fScrPt)},"JU.T3");c(b,"transformPtScr",function(a,b){b.setT(this.transformPt(a))},"JU.T3,JU.P3i");c(b,"transformPtScrT3",function(a,b){this.transformPt(a);b.setT(this.fScrPt)},"JU.T3,JU.T3");c(b,"transformPt3f",function(a,b){this.applyPerspective(a,a);b.setT(this.fScrPt)},"JU.T3,JU.P3");c(b,"transformPtNoClip",function(a,b){this.applyPerspective(a,null);b.setT(this.fScrPt)},"JU.T3,JU.T3");c(b,"transformPt", +function(a){return this.applyPerspective(a,this.internalSlab?a:null)},"JU.T3");c(b,"transformPtVib",function(a,b){this.ptVibTemp.setT(a);return this.applyPerspective(this.getVibrationPoint(b,this.ptVibTemp,NaN),a)},"JU.P3,JU.Vibration");c(b,"getVibrationPoint",function(a,b,c){return a.setCalcPoint(b,this.vibrationT,Float.isNaN(c)?this.vibrationScale:c,this.vwr.g.modulationScale)},"JU.Vibration,JU.T3,~N");c(b,"transformPt2Df",function(a,b){-3.4028235E38==a.z||3.4028235E38==a.z?(this.transformPt2D(a), +b.set(this.iScrPt.x,this.iScrPt.y,this.iScrPt.z)):this.transformPt3f(a,b)},"JU.T3,JU.P3");c(b,"transformPtScrT32D",function(a,b){-3.4028235E38==a.z||3.4028235E38==a.z?(this.transformPt2D(a),b.set(this.iScrPt.x,this.iScrPt.y,this.iScrPt.z)):this.transformPtScrT3(a,b)},"JU.T3,JU.P3");c(b,"transformPt2D",function(a){-3.4028235E38==a.z?(this.iScrPt.x=B(Math.floor(a.x/100*this.screenWidth)),this.iScrPt.y=B(Math.floor((1-a.y/100)*this.screenHeight))):(this.iScrPt.x=D(a.x),this.iScrPt.y=this.screenHeight- +D(a.y));this.antialias&&(this.iScrPt.x<<=1,this.iScrPt.y<<=1);this.matrixTransform.rotTrans2(this.fixedRotationCenter,this.fScrPt);this.iScrPt.z=D(this.fScrPt.z);return this.iScrPt},"JU.T3");c(b,"applyPerspective",function(a,b){this.getScreenTemp(a);var c=this.fScrPt.z;Float.isNaN(c)?(!this.haveNotifiedNaN&&JU.Logger.debugging&&JU.Logger.debug("NaN seen in TransformPoint"),this.haveNotifiedNaN=!0,c=this.fScrPt.z=1):0>=c&&(c=this.fScrPt.z=1);switch(this.mode){case 1:this.fScrPt.x-=this.navigationShiftXY.x; +this.fScrPt.y-=this.navigationShiftXY.y;break;case 2:this.fScrPt.x+=this.perspectiveShiftXY.x,this.fScrPt.y+=this.perspectiveShiftXY.y}this.perspectiveDepth&&(c=this.getPerspectiveFactor(c),this.fScrPt.x*=c,this.fScrPt.y*=c);switch(this.mode){case 1:this.fScrPt.x+=this.navigationOffset.x;this.fScrPt.y+=this.navigationOffset.y;break;case 2:this.fScrPt.x-=this.perspectiveShiftXY.x,this.fScrPt.y-=this.perspectiveShiftXY.y;case 0:this.fScrPt.x+=this.fixedRotationOffset.x,this.fScrPt.y+=this.fixedRotationOffset.y}Float.isNaN(this.fScrPt.x)&& +!this.haveNotifiedNaN&&(JU.Logger.debugging&&JU.Logger.debug("NaN found in transformPoint "),this.haveNotifiedNaN=!0);this.iScrPt.set(D(this.fScrPt.x),D(this.fScrPt.y),D(this.fScrPt.z));null!=b&&this.xyzIsSlabbedInternal(b)&&(this.fScrPt.z=this.iScrPt.z=1);return this.iScrPt},"JU.T3,JU.T3");c(b,"xyzIsSlabbedInternal",function(a){return null!=this.slabPlane&&0a.x*this.depthPlane.x+a.y*this.depthPlane.y+ +a.z*this.depthPlane.z+this.depthPlane.w},"JU.T3");c(b,"move",function(a,b,c,l,f,e,h){this.movetoThread=J.api.Interface.getOption("thread.MoveToThread",this.vwr,"tm");this.movetoThread.setManager(this,this.vwr,w(-1,[b,l,K(-1,[c,f,e,h])]));0this.ptTest3.distance(this.ptTest2)},"JU.V3,~N");c(b,"moveToPyMOL",function(a,b,c){var l=JU.M3.newA9(c);l.invert();var f=c[9],e=-c[10],h=-c[11],j=JU.P3.new3(c[12],c[13],c[14]),m=c[15],p=c[16],n=c[17];this.setPerspectiveDepth(!(0<=n));var n=Math.abs(n)/2,q=Math.tan(3.141592653589793*n/180),n=h*q,q=0.5/q-0.5,r=50/n;0 +f&&-0.01=b)this.setAll(c,e,n,h,j,m,p,f,s,q,r,u,v,z),this.vwr.moveUpdate(b),this.vwr.finalizeTransformParameters(); +else try{null==this.movetoThread&&(this.movetoThread=J.api.Interface.getOption("thread.MoveToThread",this.vwr,"tm"));var B=this.movetoThread.setManager(this,this.vwr,w(-1,[c,e,n,K(-1,[b,h,j,m,p,f,s,q,r,u,v,z])]));0>=B||this.vwr.g.waitForMoveTo?(0a)return"{0 0 1 0}";this.vectorT.normalize(); +this.vectorT.scale(1E3);b.append("{");JV.TransformManager.truncate0(b,this.vectorT.x);JV.TransformManager.truncate0(b,this.vectorT.y);JV.TransformManager.truncate0(b,this.vectorT.z);JV.TransformManager.truncate2(b,a);b.append("}");return b.toString()});c(b,"getMoveToText",function(a,b){this.finalizeTransformParameters();var c=new JU.SB;c.append("moveto ");b&&c.append("/* time, axisAngle */ ");c.appendF(a);c.append(" ").append(this.getRotationText());b&&c.append(" /* zoom, translation */ ");JV.TransformManager.truncate2(c, +this.zmPctSet);JV.TransformManager.truncate2(c,this.getTranslationXPercent());JV.TransformManager.truncate2(c,this.getTranslationYPercent());c.append(" ");b&&c.append(" /* center, rotationRadius */ ");c.append(this.getCenterText());c.append(" ").appendF(this.modelRadius);c.append(this.getNavigationText(b));b&&c.append(" /* cameraDepth, cameraX, cameraY */ ");JV.TransformManager.truncate2(c,this.cameraDepth);JV.TransformManager.truncate2(c,this.cameraSetting.x);JV.TransformManager.truncate2(c,this.cameraSetting.y); +c.append(";");return c.toString()},"~N,~B");c(b,"getCenterText",function(){return JU.Escape.eP(this.fixedRotationCenter)});c(b,"getRotateXyzText",function(){var a=new JU.SB,b=this.matrixRotate.m20,c=-(57.29577951308232*Math.asin(b)),l;0.999b?(b=-(57.29577951308232*Math.atan2(this.matrixRotate.m12,this.matrixRotate.m11)),l=0):(b=57.29577951308232*Math.atan2(this.matrixRotate.m21,this.matrixRotate.m22),l=57.29577951308232*Math.atan2(this.matrixRotate.m10,this.matrixRotate.m00));a.append("reset"); +a.append(";center ").append(this.getCenterText());0!=b&&(a.append("; rotate x"),JV.TransformManager.truncate2(a,b));0!=c&&(a.append("; rotate y"),JV.TransformManager.truncate2(a,c));0!=l&&(a.append("; rotate z"),JV.TransformManager.truncate2(a,l));a.append(";");this.addZoomTranslationNavigationText(a);return a.toString()});c(b,"addZoomTranslationNavigationText",function(a){100!=this.zmPct&&(a.append(" zoom"),JV.TransformManager.truncate2(a,this.zmPct),a.append(";"));var b=this.getTranslationXPercent(); +0!=b&&(a.append(" translate x"),JV.TransformManager.truncate2(a,b),a.append(";"));b=this.getTranslationYPercent();0!=b&&(a.append(" translate y"),JV.TransformManager.truncate2(a,b),a.append(";"));if(this.modelRadius!=this.rotationRadiusDefault||10==this.modelRadius)a.append(" set rotationRadius"),JV.TransformManager.truncate2(a,this.modelRadius),a.append(";");1==this.mode&&(a.append("navigate 0 center ").append(JU.Escape.eP(this.navigationCenter)),a.append(";navigate 0 translate"),JV.TransformManager.truncate2(a, +this.getNavigationOffsetPercent("X")),JV.TransformManager.truncate2(a,this.getNavigationOffsetPercent("Y")),a.append(";navigate 0 depth "),JV.TransformManager.truncate2(a,this.navigationDepthPercent),a.append(";"))},"JU.SB");c(b,"getRotateZyzText",function(a){var b=new JU.SB,c=this.vwr.ms.getInfoM("defaultOrientationMatrix");null==c?c=this.matrixRotate:(c=JU.M3.newM3(c),c.invert(),c.mul2(this.matrixRotate,c));var l=c.m22,f=57.29577951308232*Math.acos(l);0.999l?(l=57.29577951308232*Math.atan2(c.m10, +c.m11),c=0):(l=57.29577951308232*Math.atan2(c.m21,-c.m20),c=57.29577951308232*Math.atan2(c.m12,c.m02));0!=l&&(0!=f&&0!=c&&a)&&b.append("#Follows Z-Y-Z convention for Euler angles\n");b.append("reset");b.append(";center ").append(this.getCenterText());0!=l&&(b.append("; rotate z"),JV.TransformManager.truncate2(b,l));0!=f&&(b.append("; rotate y"),JV.TransformManager.truncate2(b,f));0!=c&&(b.append("; rotate z"),JV.TransformManager.truncate2(b,c));b.append(";");this.addZoomTranslationNavigationText(b); +return b.toString()},"~B");b.truncate0=c(b,"truncate0",function(a,b){a.appendC(" ");a.appendI(Math.round(b))},"JU.SB,~N");b.truncate2=c(b,"truncate2",function(a,b){a.appendC(" ");a.appendF(Math.round(100*b)/100)},"JU.SB,~N");c(b,"setSpinXYZ",function(a,b,c){Float.isNaN(a)||(this.spinX=a);Float.isNaN(b)||(this.spinY=b);Float.isNaN(c)||(this.spinZ=c);(this.isSpinInternal||this.isSpinFixed)&&this.clearSpin()},"~N,~N,~N");c(b,"setSpinFps",function(a){0>=a?a=1:50this.vwr.ms.mc?(this.vibrationOn=!1,this.vibrationT.x=0):(null==this.vibrationThread&&(this.vibrationThread=J.api.Interface.getOption("thread.VibrationThread",this.vwr,"tm"),this.vibrationThread.setManager(this,this.vwr,null),this.vibrationThread.start()),this.vibrationOn=!0):(null!=this.vibrationThread&&(this.vibrationThread.interrupt(),this.vibrationThread=null),this.vibrationOn= +!1,this.vibrationT.x=0)},"~B");c(b,"clearVibration",function(){this.setVibrationOn(!1);this.vibrationScale=0});c(b,"setStereoMode2",function(a){this.stereoMode=J.c.STER.CUSTOM;this.stereoColors=a},"~A");c(b,"setStereoMode",function(a){this.stereoColors=null;this.stereoMode=a;this.stereoDoubleDTI=a===J.c.STER.DTI;this.stereoDoubleFull=a===J.c.STER.DOUBLE},"J.c.STER");c(b,"setStereoDegrees",function(a){this.stereoDegrees=a;this.stereoRadians=0.017453292519943295*a},"~N");c(b,"getStereoRotationMatrix", +function(a){this.stereoFrame=a;if(!a)return this.matrixRotate;this.matrixTemp3.setAsYRotation(-this.stereoRadians);this.matrixStereo.mul2(this.matrixTemp3,this.matrixRotate);return this.matrixStereo},"~B");c(b,"isWindowCentered",function(){return this.windowCentered});c(b,"setWindowCentered",function(a){this.windowCentered=a;this.resetNavigationPoint(!0)},"~B");c(b,"setRotationRadius",function(a,b){a=this.modelRadius=0>=a?this.vwr.ms.calcRotationRadius(this.vwr.am.cmi,this.fixedRotationCenter,!0): +a;b&&this.vwr.setRotationRadius(a,!1);return a},"~N,~B");c(b,"setRotationCenterAndRadiusXYZ",function(a,b){this.resetNavigationPoint(!1);null==a?(this.setFixedRotationCenter(this.rotationCenterDefault),this.modelRadius=this.rotationRadiusDefault):(this.setFixedRotationCenter(a),b&&this.windowCentered&&(this.modelRadius=this.vwr.ms.calcRotationRadius(this.vwr.am.cmi,this.fixedRotationCenter,!0)))},"JU.T3,~B");c(b,"setNewRotationCenter",function(a,b){null==a&&(a=this.rotationCenterDefault);this.windowCentered? +(this.translateToPercent("x",0),this.translateToPercent("y",0),this.setRotationCenterAndRadiusXYZ(a,!0),b&&this.resetFitToScreen(!0)):this.moveRotationCenter(a,!0)},"JU.P3,~B");c(b,"moveRotationCenter",function(a,b){this.setRotationCenterAndRadiusXYZ(a,!1);b&&this.setRotationPointXY(this.fixedRotationCenter)},"JU.P3,~B");c(b,"setCenter",function(){this.setRotationCenterAndRadiusXYZ(this.fixedRotationCenter,!0)});c(b,"setCenterAt",function(a,b){var c=JU.P3.newP(b);switch(a){case 1073741826:break;case 96:c.add(this.vwr.ms.getAverageAtomPoint()); +break;case 1812599299:c.add(this.vwr.getBoundBoxCenter());break;default:c.setT(this.rotationCenterDefault)}this.setRotationCenterAndRadiusXYZ(c,!0);this.resetFitToScreen(!0)},"~N,JU.P3");c(b,"setFrameOffset",function(a){null==this.frameOffsets||0>a||a>=this.frameOffsets.length?this.frameOffset.set(0,0,0):this.frameOffset.setT(this.frameOffsets[a])},"~N");c(b,"setSelectedTranslation",function(a,b,c,l){if(this.perspectiveDepth)switch(this.bsSelectedAtoms=a,b.charCodeAt(0)){case 88:case 120:this.ptOffset.x+= +c;break;case 89:case 121:this.ptOffset.y+=c;break;case 90:case 122:this.ptOffset.z+=c}else{c=new JU.V3;switch(b.charCodeAt(0)){case 88:case 120:c.set(l,0,0);break;case 89:case 121:c.set(0,l,0);break;case 90:case 122:c.set(0,0,l)}this.vwr.moveAtoms(null,null,this.matrixRotate,c,this.internalRotationCenter,!1,a,!0,!1)}},"JU.BS,~S,~N,~N");c(b,"setNavFps",function(a){this.navFps=a},"~N");c(b,"calcCameraFactors",function(){Float.isNaN(this.cameraDepth)&&(this.cameraDepth=this.cameraDepthSetting,this.zoomFactor= +3.4028235E38);this.cameraDistance=this.cameraDepth*this.screenPixelCount;this.referencePlaneOffset=this.cameraDistance+this.screenPixelCount/2;this.scalePixelsPerAngstrom=this.scale3D&&!this.perspectiveDepth&&1!=this.mode?72/this.scale3DAngstromsPerInch*(this.antialias?2:1):this.screenPixelCount/this.visualRangeAngstroms;1!=this.mode&&(this.mode=0==this.camera.z?0:2);this.perspectiveShiftXY.set(0==this.camera.z?0:100*(this.camera.x*this.scalePixelsPerAngstrom/this.screenWidth),0==this.camera.z?0: +100*(this.camera.y*this.scalePixelsPerAngstrom/this.screenHeight),0);this.modelRadiusPixels=this.modelRadius*this.scalePixelsPerAngstrom;var a=2*this.modelRadius/this.visualRangeAngstroms*this.referencePlaneOffset;if(1==this.mode)this.calcNavCameraFactors(a);else{this.zoomFactor=3.4028235E38;this.modelCenterOffset=this.referencePlaneOffset;if(!this.scale3D||this.perspectiveDepth)this.scalePixelsPerAngstrom*=this.modelCenterOffset/a*this.zmPct/100;this.modelRadiusPixels=this.modelRadius*this.scalePixelsPerAngstrom}}); +c(b,"calcNavCameraFactors",function(a){3.4028235E38==this.zoomFactor?(1E4=a?this.referencePlaneOffset:this.referencePlaneOffset/a},"~N");c(b,"unTransformPoint",function(a,b){this.untransformedPoint.setT(a);switch(this.mode){case 1:this.untransformedPoint.x-=this.navigationOffset.x;this.untransformedPoint.y-=this.navigationOffset.y;break;case 2:this.fScrPt.x+=this.perspectiveShiftXY.x,this.fScrPt.y+=this.perspectiveShiftXY.y;case 0:this.untransformedPoint.x-=this.fixedRotationOffset.x,this.untransformedPoint.y-=this.fixedRotationOffset.y}if(this.perspectiveDepth){var c= +this.getPerspectiveFactor(this.untransformedPoint.z);this.untransformedPoint.x/=c;this.untransformedPoint.y/=c}switch(this.mode){case 1:this.untransformedPoint.x+=this.navigationShiftXY.x;this.untransformedPoint.y+=this.navigationShiftXY.y;break;case 2:this.untransformedPoint.x-=this.perspectiveShiftXY.x,this.untransformedPoint.y-=this.perspectiveShiftXY.y}this.matrixTransformInv.rotTrans2(this.untransformedPoint,b)},"JU.T3,JU.T3");c(b,"resetNavigationPoint",function(a){5>this.zmPct&&1!=this.mode? +(this.perspectiveDepth=!0,this.mode=1):(1==this.mode?(this.navMode=1,this.slabPercentSetting=0,this.perspectiveDepth=!0):a&&(this.slabPercentSetting=100),this.vwr.setFloatProperty("slabRange",0),a&&this.setSlabEnabled(1==this.mode),this.zoomFactor=3.4028235E38,this.zmPctSet=this.zmPct)},"~B");c(b,"setNavigatePt",function(a){this.navigationCenter.setT(a);this.navMode=3;this.navigating=!0;this.finalizeTransformParameters();this.navigating=!1},"JU.P3");c(b,"setNavigationSlabOffsetPercent",function(a){this.vwr.g.setF("navigationSlab", +a);this.calcCameraFactors();this.navigationSlabOffset=a/50*this.modelRadiusPixels},"~N");c(b,"getNavigationOffset",function(){this.transformPt3f(this.navigationCenter,this.navigationOffset);return this.navigationOffset});c(b,"getNavPtHeight",function(){return this.height/2});c(b,"getNavigationOffsetPercent",function(a){this.getNavigationOffset();return 0==this.width||0==this.height?0:"X"==a?100*(this.navigationOffset.x-this.width/2)/this.width:100*(this.navigationOffset.y-this.getNavPtHeight())/this.height}, +"~S");c(b,"getNavigationText",function(a){a=a?" /* navigation center, translation, depth */ ":" ";if(1!=this.mode)return a+"{0 0 0} 0 0 0";this.getNavigationOffset();return a+JU.Escape.eP(this.navigationCenter)+" "+this.getNavigationOffsetPercent("X")+" "+this.getNavigationOffsetPercent("Y")+" "+this.navigationDepthPercent},"~B");c(b,"setScreenParameters",function(a,b,c,l,f,e){var h=1==this.mode?JU.P3.newP(this.navigationCenter):null,j=JU.P3.newP(this.navigationOffset);j.x/=this.width;j.y/=this.height; +this.setScreenParameters0(a,b,c,l,f,e);null!=h&&(this.navigationCenter.setT(h),this.navTranslatePercentOrTo(-1,j.x*this.width,j.y*this.height),this.setNavigatePt(h))},"~N,~N,~B,~B,~B,~B");c(b,"navInterrupt",function(){null!=this.nav&&this.nav.interrupt()});c(b,"getNav",function(){if(null!=this.nav)return!0;this.nav=J.api.Interface.getOption("navigate.Navigator",this.vwr,"tm");if(null==this.nav)return!1;this.nav.set(this,this.vwr);return!0});c(b,"navigateList",function(a,b){this.getNav()&&this.nav.navigateList(a, +b)},"J.api.JmolScriptEvaluator,JU.Lst");c(b,"navigateAxis",function(a,b){this.getNav()&&this.nav.navigateAxis(a,b)},"JU.V3,~N");c(b,"setNavigationOffsetRelative",function(){this.getNav()&&this.nav.setNavigationOffsetRelative()});c(b,"navigateKey",function(a,b){this.getNav()&&this.nav.navigateKey(a,b)},"~N,~N");c(b,"setNavigationDepthPercent",function(a){this.getNav()&&this.nav.setNavigationDepthPercent(a)},"~N");c(b,"navTranslatePercentOrTo",function(a,b,c){this.getNav()&&this.nav.navTranslatePercentOrTo(a, +b,c)},"~N,~N,~N");c(b,"calcNavigationPoint",function(){this.getNav()&&this.nav.calcNavigationPoint()});c(b,"getNavigationState",function(){return 1==this.mode&&this.getNav()?this.nav.getNavigationState():""})});u("JV");C("java.lang.Enum J.api.JmolViewer $.PlatformViewer J.atomdata.AtomDataServer java.util.Hashtable JU.P3".split(" "),"JV.Viewer","java.util.Arrays JU.AU $.BS $.CU $.DF $.Lst $.P3i $.PT $.Quat $.Rdr $.SB J.adapter.smarter.SmarterJmolAdapter J.api.Interface J.atomdata.RadiusData J.c.FIL $.STER $.VDW J.i18n.GT JM.Measurement $.ModelSet JS.SV $.T J.thread.TimeoutThread JU.BSUtil $.C $.CommandHistory $.Elements $.Escape $.GData $.JmolMolecule $.Logger $.Parser $.TempArray JV.ActionManager $.AnimationManager $.ColorManager $.FileManager $.GlobalSettings $.JC $.ModelManager $.SelectionManager $.ShapeManager $.StateManager $.StatusManager $.TransformManager JV.binding.Binding".split(" "), +function(){var b=v(function(){this.queueOnHold=this.isSingleThreaded=this.isWebGL=this.isJSNoAWT=this.haveDisplay=this.autoExit=this.testAsync=!1;this.fullName="";this.fm=this.ms=this.definedAtomSets=this.compiler=null;this.mustRender=this.listCommands=this.isSyntaxCheck=this.isSyntaxAndFileCheck=this.isJNLP=this.isApplet=!1;this.appletName=this.htmlName="";this.tryPt=0;this.insertedCommand="";this.tm=this.sm=this.g=this.rm=this.slm=this.shm=this.dm=this.cm=this.am=this.acm=this.html5Applet=this.gdata= +null;this.logFilePath=this.syncId="";this.useCommandThread=this.noGraphicsAllowed=this.multiTouch=this.isSilent=this.isSignedAppletLocal=this.isSignedApplet=this.isPrintOnly=this.allowScripting=!1;this.tempArray=this.eval=this.scm=this.stm=this.mm=this.commandHistory=this.access=this.modelAdapter=this.display=this.vwrOptions=this.commandOptions=null;this.async=this.allowArrayDotNotation=!1;this.executor=null;this.screenHeight=this.screenWidth=0;this.errorMessageUntranslated=this.errorMessage=this.chainList= +this.chainMap=this.rd=this.defaultVdw=null;this.privateKey=0;this.dataOnly=!1;this.maximumSize=2147483647;this.gRight=null;this.isStereoSlave=!1;this.imageFontScaling=1;this.antialiased=!1;this.prevFrame=-2147483648;this.prevMorphModel=0;this.haveJDX=!1;this.jzt=this.outputManager=this.jsv=null;this.headless=this.isPreviewOnly=!1;this.movableBitSet=null;this.hasSelected=!1;this.lastData=this.jsc=this.smilesMatcher=this.minimizer=this.dssrParser=this.annotationParser=this.ligandModelSet=this.ligandModels= +this.mouse=null;this.motionEventNumber=0;this.inMotion=!1;this.refreshing=!0;this.axesAreTainted=!1;this.jsParams=this.captureParams=null;this.cirChecked=!1;this.hoverAtomIndex=-1;this.hoverText=null;this.hoverLabel="%U";this.hoverEnabled=!0;this.currentCursor=0;this.ptTemp=null;this.selectionHalosEnabled=!1;this.noFrankEcho=this.frankOn=!0;this.scriptEditorVisible=!1;this.pm=this.headlessImageParams=this.modelkit=this.jmolpopup=this.scriptEditor=this.appConsole=null;this.isTainted=!0;this.showSelected= +this.movingSelected=!1;this.ptNew=this.ptScreenNew=this.ptScreen=null;this.atomHighlighted=-1;this.creatingImage=!1;this.userVdwMars=this.userVdws=this.bsUserVdws=null;this.currentShapeID=-1;this.localFunctions=this.currentShapeState=null;this.$isKiosk=!1;this.displayLoadErrors=!0;this.$isParallel=!1;this.stateScriptVersionInt=2147483647;this.timeouts=this.jsExporter3D=null;this.chainCaseSpecified=!1;this.macros=this.nboParser=this.triangulator=this.jsonParser=this.jcm=this.jbr=this.logFileName=this.nmrCalculation= +null;this.consoleFontScale=1;r(this,arguments)},JV,"Viewer",J.api.JmolViewer,[J.atomdata.AtomDataServer,J.api.PlatformViewer]);P(b,function(){this.ptScreen=new JU.P3;this.ptScreenNew=new JU.P3;this.ptNew=new JU.P3});A(b,function(a){L(this,JV.Viewer,[]);this.commandHistory=new JU.CommandHistory;this.rd=new J.atomdata.RadiusData(null,0,null,null);this.defaultVdw=J.c.VDW.JMOL;this.localFunctions=new java.util.Hashtable;this.privateKey=Math.random();this.chainMap=new java.util.Hashtable;this.chainList= +new JU.Lst;this.setOptions(a)},"java.util.Map");c(b,"finalize",function(){JU.Logger.debugging&&JU.Logger.debug("vwr finalize "+this);$(this,JV.Viewer,"finalize",[])});c(b,"setInsertedCommand",function(a){this.insertedCommand=a},"~S");b.getJmolVersion=j(b,"getJmolVersion",function(){return null==JV.Viewer.version_date?JV.Viewer.version_date=JV.JC.version+" "+JV.JC.date:JV.Viewer.version_date});b.allocateViewer=c(b,"allocateViewer",function(a,b,c,f,e,h,j,m){var p=new java.util.Hashtable;p.put("display", +a);p.put("adapter",b);p.put("statusListener",j);p.put("platform",m);p.put("options",h);p.put("fullName",c);p.put("documentBase",f);p.put("codeBase",e);return new JV.Viewer(p)},"~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform");c(b,"haveAccess",function(a){return this.access===a},"JV.Viewer.ACCESS");j(b,"getModelAdapter",function(){return null==this.modelAdapter?this.modelAdapter=new J.adapter.smarter.SmarterJmolAdapter:this.modelAdapter});j(b,"getSmartsMatch", +function(a,b){null==b&&(b=this.bsA());return this.getSmilesMatcher().getSubstructureSet(a,this.ms.at,this.ms.ac,b,2)},"~S,JU.BS");c(b,"isSubstructure",function(a,b){try{var c=this.getSmilesMatcher().find(a,b,10);return null!=c&&0f?this.fullName:this.fullName.substring(0,f);this.appletName=JU.PT.split(this.htmlName+"_","_")[0];this.syncId= +0>f?"":this.fullName.substring(f+2,this.fullName.length-2);this.access=this.checkOption2("access:READSPT","-r")?JV.Viewer.ACCESS.READSPT:this.checkOption2("access:NONE","-R")?JV.Viewer.ACCESS.NONE:JV.Viewer.ACCESS.ALL;(this.isPreviewOnly=a.containsKey("previewOnly"))&&a.remove("previewOnly");this.isPrintOnly=this.checkOption2("printOnly","-p");this.dataOnly=this.checkOption2("isDataOnly","\x00");this.autoExit=this.checkOption2("exit","-x");c=a.get("platform");f="unknown";null==c&&(c=this.commandOptions.contains("platform=")? +this.commandOptions.substring(this.commandOptions.indexOf("platform=")+9):"J.awt.Platform");if("string"==typeof c){f=c;this.isWebGL=0<=f.indexOf(".awtjs.");JV.Viewer.isJS=this.isJSNoAWT=this.isWebGL||0<=f.indexOf(".awtjs2d.");this.async=!this.dataOnly&&!this.autoExit&&(this.testAsync||JV.Viewer.isJS&&a.containsKey("async"));var e=c=null,h="?";self.Jmol&&(e=Jmol,c=Jmol._applets[this.htmlName.split("_object")[0]],h=Jmol._version);null!=h&&(this.html5Applet=c,JV.Viewer.jmolObject=e,JV.Viewer.strJavaVersion= +h,JV.Viewer.strJavaVendor="Java2Script "+(this.isWebGL?"(WebGL)":"(HTML5)"));c=J.api.Interface.getInterface(f,this,"setOptions")}this.apiPlatform=c;this.display=a.get("display");this.isSingleThreaded=this.apiPlatform.isSingleThreaded();this.noGraphicsAllowed=this.checkOption2("noDisplay","-n");this.headless=this.apiPlatform.isHeadless();this.haveDisplay=this.isWebGL||null!=this.display&&!this.noGraphicsAllowed&&!this.headless&&!this.dataOnly;this.noGraphicsAllowed=(new Boolean(this.noGraphicsAllowed& +null==this.display)).valueOf();this.headless=(new Boolean(this.headless|this.noGraphicsAllowed)).valueOf();this.haveDisplay?(this.mustRender=!0,this.multiTouch=this.checkOption2("multiTouch","-multitouch"),this.isWebGL||(this.display=document.getElementById(this.display))):this.display=null;this.apiPlatform.setViewer(this,this.display);c=a.get("graphicsAdapter");null==c&&!this.isWebGL&&(c=J.api.Interface.getOption("g3d.Graphics3D",this,"setOptions"));this.gdata=null==c&&(this.isWebGL||!JV.Viewer.isJS)? +new JU.GData:c;this.gdata.initialize(this,this.apiPlatform);this.stm=new JV.StateManager(this);this.cm=new JV.ColorManager(this,this.gdata);this.sm=new JV.StatusManager(this);f=a.containsKey("4DMouse");this.tm=JV.TransformManager.getTransformManager(this,2147483647,0,f);this.slm=new JV.SelectionManager(this);this.haveDisplay&&(this.acm=this.multiTouch?J.api.Interface.getOption("multitouch.ActionManagerMT",null,null):new JV.ActionManager,this.acm.setViewer(this,this.commandOptions+"-multitouch-"+a.get("multiTouch")), +this.mouse=this.apiPlatform.getMouseManager(this.privateKey,this.display),this.multiTouch&&!this.checkOption2("-simulated","-simulated")&&this.apiPlatform.setTransparentCursor(this.display));this.mm=new JV.ModelManager(this);this.shm=new JV.ShapeManager(this);this.tempArray=new JU.TempArray;this.am=new JV.AnimationManager(this);c=a.get("repaintManager");null==c&&(c=J.api.Interface.getOption("render.RepaintManager",this,"setOptions"));if(JV.Viewer.isJS||null!=c&&!c.equals(""))(this.rm=c).set(this, +this.shm);this.ms=new JM.ModelSet(this,null);this.initialize(!0,!1);this.fm=new JV.FileManager(this);this.definedAtomSets=new java.util.Hashtable;this.setJmolStatusListener(b);this.isApplet?(JU.Logger.info("vwrOptions: \n"+JU.Escape.escapeMap(this.vwrOptions)),b=this.vwrOptions.get("documentLocation"),!JV.Viewer.isJS&&(null!=b&&b.startsWith("file:/"))&&(b=b.substring(0,b.substring(0,(b+"?").indexOf("?")).lastIndexOf("/")),JU.Logger.info("setting current directory to "+b),this.cd(b)),b=JV.Viewer.appletDocumentBase, +f=b.indexOf("#"),0<=f&&(b=b.substring(0,f)),f=b.lastIndexOf("?"),0<=f&&(b=b.substring(0,f)),f=b.lastIndexOf("/"),0<=f&&(b=b.substring(0,f)),JV.Viewer.jsDocumentBase=b,this.fm.setAppletContext(JV.Viewer.appletDocumentBase),b=a.get("appletProxy"),null!=b&&this.setStringProperty("appletProxy",b),this.isSignedApplet?(this.logFilePath=JU.PT.rep(JV.Viewer.appletCodeBase,"file://",""),this.logFilePath=JU.PT.rep(this.logFilePath,"file:/",""),0<=this.logFilePath.indexOf("//")?this.logFilePath=null:this.isSignedAppletLocal= +!0):JV.Viewer.isJS||(this.logFilePath=null),new J.i18n.GT(this,a.get("language")),JV.Viewer.isJS&&this.acm.createActions()):(this.gdata.setBackgroundTransparent(this.checkOption2("backgroundTransparent","-b")),(this.isSilent=this.checkOption2("silent","-i"))&&JU.Logger.setLogLevel(3),this.headless&&!this.isSilent&&JU.Logger.info("Operating headless display="+this.display+" nographicsallowed="+this.noGraphicsAllowed),this.isSyntaxCheck=(this.isSyntaxAndFileCheck=this.checkOption2("checkLoad","-C"))|| +this.checkOption2("check","-c"),this.listCommands=this.checkOption2("listCommands","-l"),this.cd("."),this.headless&&(this.headlessImageParams=a.get("headlessImage"),c=a.get("headlistMaxTimeMs"),null==c&&(c=Integer.$valueOf(6E4)),this.setTimeout(""+Math.random(),c.intValue(),"exitJmol")));this.useCommandThread=!this.headless&&this.checkOption2("useCommandThread","-threaded");this.setStartupBooleans();this.setIntProperty("_nProcessors",JV.Viewer.nProcessors);this.isSilent||JU.Logger.info("(C) 2015 Jmol Development\nJmol Version: "+ +JV.Viewer.getJmolVersion()+"\njava.vendor: "+JV.Viewer.strJavaVendor+"\njava.version: "+JV.Viewer.strJavaVersion+"\nos.name: "+JV.Viewer.strOSName+"\nAccess: "+this.access+"\nmemory: "+this.getP("_memory")+"\nprocessors available: "+JV.Viewer.nProcessors+"\nuseCommandThread: "+this.useCommandThread+(!this.isApplet?"":"\nappletId:"+this.htmlName+(this.isSignedApplet?" (signed)":"")));this.zap(!1,!0,!1);this.g.setO("language",J.i18n.GT.getLanguage());this.g.setO("_hoverLabel",this.hoverLabel);this.stm.setJmolDefaults(); +JU.Elements.covalentVersion=1;this.allowArrayDotNotation=!0;this.allowScripting&&this.getScriptManager()},"java.util.Map");c(b,"setMaximumSize",function(a){this.maximumSize=Math.max(a,100)},"~N");c(b,"setStereo",function(a,b){this.isStereoSlave=a;this.gRight=b},"~B,~O");c(b,"getMenu",function(a){this.getPopupMenu();return a.equals("\x00")?(this.popupMenu(this.screenWidth-120,0,"j"),"OK"):null==this.jmolpopup?"":this.jmolpopup.jpiGetMenuAsString("Jmol version "+JV.Viewer.getJmolVersion()+"|_GET_MENU|"+ +a)},"~S");j(b,"resizeInnerPanel",function(a,b){if(!this.autoExit&&this.haveDisplay)return this.sm.resizeInnerPanel(a,b);this.setScreenDimension(a,b);return E(-1,[this.screenWidth,this.screenHeight])},"~N,~N");j(b,"setScreenDimension",function(a,b){b=Math.min(b,this.maximumSize);a=Math.min(a,this.maximumSize);this.tm.stereoDoubleFull&&(a=B((a+1)/2));this.screenWidth==a&&this.screenHeight==b||this.resizeImage(a,b,!1,!1,!0)},"~N,~N");c(b,"resizeImage",function(a,b,c,f,e){if(c||!this.creatingImage){var h= +this.antialiased;this.antialiased=e?this.g.antialiasDisplay&&this.checkMotionRendering(603979786):c&&!f?this.g.antialiasImages:!1;!f&&(!c&&(0=a?1:1*(this.g.zoomLarge==b>a?b:a)/this.getScreenDim());0this.screenWidth?this.screenHeight: +this.screenWidth});c(b,"setWidthHeightVar",function(){this.g.setI("_width",this.screenWidth);this.g.setI("_height",this.screenHeight)});c(b,"getBoundBoxCenterX",function(){return B(this.screenWidth/2)});c(b,"getBoundBoxCenterY",function(){return B(this.screenHeight/2)});c(b,"updateWindow",function(a,b){if(!this.refreshing||this.creatingImage)return this.refreshing?!1:!JV.Viewer.isJS;(this.isTainted||this.tm.slabEnabled)&&this.setModelVisibility();this.isTainted=!1;null!=this.rm&&0!=a&&this.setScreenDimension(a, +b);return!0},"~N,~N");c(b,"getImage",function(a,b){var c=null;try{this.beginRendering(a,b),this.render(),this.gdata.endRendering(),c=this.gdata.getScreenImage(b)}catch(f){if(F(f,Error))this.gdata.getScreenImage(b),this.handleError(f,!1),this.setErrorMessage("Error during rendering: "+f,null);else if(F(f,Exception))System.out.println("render error"+f);else throw f;}return c},"~B,~B");c(b,"beginRendering",function(a,b){this.gdata.beginRendering(this.tm.getStereoRotationMatrix(a),this.g.translucent, +b,!this.checkMotionRendering(603979967))},"~B,~B");c(b,"render",function(){if(!(null==this.mm.modelSet||!this.mustRender||!this.refreshing&&!this.creatingImage||null==this.rm)){var a=this.antialiased&&this.g.antialiasTranslucent,b=this.shm.finalizeAtoms(this.tm.bsSelectedAtoms,!0);this.isWebGL?(this.rm.renderExport(this.gdata,this.ms,this.jsParams),this.notifyViewerRepaintDone()):(this.rm.render(this.gdata,this.ms,!0,b),this.gdata.setPass2(a)&&(this.tm.setAntialias(a),this.rm.render(this.gdata,this.ms, +!1,null),this.tm.setAntialias(this.antialiased)))}});c(b,"drawImage",function(a,b,c,f,e){null!=a&&null!=b&&this.apiPlatform.drawImage(a,b,c,f,this.screenWidth,this.screenHeight,e);this.gdata.releaseScreenImage()},"~O,~O,~N,~N,~B");c(b,"getScreenImage",function(){return this.getScreenImageBuffer(null,!0)});j(b,"getScreenImageBuffer",function(a,b){if(this.isWebGL)return b?this.apiPlatform.allocateRgbImage(0,0,null,0,!1,!0):null;var c=this.tm.stereoDoubleFull||this.tm.stereoDoubleDTI,f=this.tm.stereoMode.isBiColor(), +e=null==a&&c;f?(this.beginRendering(!0,b),this.render(),this.gdata.endRendering(),this.gdata.snapshotAnaglyphChannelBytes(),this.beginRendering(!1,b),this.render(),this.gdata.endRendering(),this.gdata.applyAnaglygh(this.tm.stereoMode,this.tm.stereoColors),f=this.gdata.getScreenImage(b)):f=this.getImage(c,b);var h=null;e&&(h=this.apiPlatform.newBufferedImage(f,this.tm.stereoDoubleDTI?this.screenWidth:this.screenWidth<<1,this.screenHeight),a=this.apiPlatform.getGraphics(h));null!=a&&(c&&(this.tm.stereoMode=== +J.c.STER.DTI?(this.drawImage(a,f,this.screenWidth>>1,0,!0),f=this.getImage(!1,!1),this.drawImage(a,f,0,0,!0),a=null):(this.drawImage(a,f,this.screenWidth,0,!1),f=this.getImage(!1,!1))),null!=a&&this.drawImage(a,f,0,0,!1));return e?h:f},"~O,~B");c(b,"evalStringWaitStatusQueued",function(a,b,c,f,e){return null==this.getScriptManager()?null:this.scm.evalStringWaitStatusQueued(a,b,c,f,e)},"~S,~S,~S,~B,~B");c(b,"popupMenu",function(a,b,c){if(this.haveDisplay&&this.refreshing&&!this.isPreviewOnly&&!this.g.disablePopupMenu)switch(c.charCodeAt(0)){case 106:try{this.getPopupMenu(), +this.jmolpopup.jpiShow(a,b)}catch(f){JU.Logger.info(f.toString()),this.g.disablePopupMenu=!0}break;case 97:case 98:case 109:if(null==this.getModelkit(!0))break;this.modelkit.showMenu(a,b)}},"~N,~N,~S");c(b,"getModelkit",function(a){null==this.modelkit?(this.modelkit=J.api.Interface.getInterface("J.modelkit.ModelKit",this,"script")).setMenu(this.apiPlatform.getMenuPopup(null,"m")):a&&this.modelkit.updateMenu();return this.modelkit},"~B");c(b,"getPopupMenu",function(){if(this.g.disablePopupMenu)return null; +if(null==this.jmolpopup&&(this.jmolpopup=this.allowScripting?this.apiPlatform.getMenuPopup(this.menuStructure,"j"):null,null==this.jmolpopup))return this.async||(this.g.disablePopupMenu=!0),null;this.isJSNoAWT&&this.checkMenuUpdate();return this.jmolpopup.jpiGetMenuAsObject()});j(b,"setMenu",function(a,b){b&&JU.Logger.info("Setting menu "+(0==a.length?"to Jmol defaults":"from file "+a));0==a.length?a=null:b&&(a=this.getFileAsString3(a,!1,null));this.getProperty("DATA_API","setMenu",a);this.sm.setCallbackFunction("menu", +a)},"~S,~B");c(b,"setStatusFrameChanged",function(a){a&&(this.prevFrame=-2147483648);this.tm.setVibrationPeriod(NaN);var b=this.am.firstFrameIndex,c=this.am.lastFrameIndex,f=this.am.isMovie;a=this.am.cmi;b==c&&!f&&(a=b);var e=this.getModelFileNumber(a),h=this.am.cmi,j=e,m=e%1E6,p=f?b:this.getModelFileNumber(b),n=f?c:this.getModelFileNumber(c),q;f?q=""+(h+1):0==j?(q=this.getModelNumberDotted(b),b!=c&&(q+=" - "+this.getModelNumberDotted(c)),B(p/1E6)==B(n/1E6)&&(j=p)):q=this.getModelNumberDotted(a); +0!=j&&(j=1E6>j?1:B(j/1E6));f||(this.g.setI("_currentFileNumber",j),this.g.setI("_currentModelNumberInFile",m));b=this.am.currentMorphModel;this.g.setI("_currentFrame",h);this.g.setI("_morphCount",this.am.morphCount);this.g.setF("_currentMorphFrame",b);this.g.setI("_frameID",e);this.g.setI("_modelIndex",a);this.g.setO("_modelNumber",q);this.g.setO("_modelName",0>a?"":this.getModelName(a));e=0>a?"":this.ms.getModelTitle(a);this.g.setO("_modelTitle",null==e?"":e);this.g.setO("_modelFile",0>a?"":this.ms.getModelFileName(a)); +this.g.setO("_modelType",0>a?"":this.ms.getModelFileType(a));h==this.prevFrame&&b==this.prevMorphModel||(this.prevFrame=h,this.prevMorphModel=b,e=this.getModelName(h),f?e=""+(""===e?h+1:this.am.caf+1)+": "+e:(f=""+this.getModelNumberDotted(h),f.equals(e)||(e=f+": "+e)),this.sm.setStatusFrameChanged(j,m,0>this.am.animationDirection?-p:p,0>this.am.currentDirection?-n:n,h,b,e),this.doHaveJDX()&&this.getJSV().setModel(a),JV.Viewer.isJS&&this.updateJSView(a,-1))},"~B,~B");c(b,"doHaveJDX",function(){return this.haveJDX|| +(this.haveJDX=this.getBooleanProperty("_jspecview"))});c(b,"getJSV",function(){null==this.jsv&&(this.jsv=J.api.Interface.getOption("jsv.JSpecView",this,"script"),this.jsv.setViewer(this));return this.jsv});c(b,"getJDXBaseModelIndex",function(a){return!this.doHaveJDX()?a:this.getJSV().getBaseModelIndex(a)},"~N");c(b,"getJspecViewProperties",function(a){a=this.sm.getJspecViewProperties(""+a);null!=a&&(this.haveJDX=!0);return a},"~O");c(b,"scriptEcho",function(a){JU.Logger.isActiveLevel(4)&&(JV.Viewer.isJS&& +System.out.println(a),this.sm.setScriptEcho(a,this.isScriptQueued()),this.listCommands&&(null!=a&&0==a.indexOf("$["))&&JU.Logger.info(a))},"~S");c(b,"isScriptQueued",function(){return null!=this.scm&&this.scm.isScriptQueued()});c(b,"notifyError",function(a,b,c){this.g.setO("_errormessage",c);this.sm.notifyError(a,b,c)},"~S,~S,~S");c(b,"jsEval",function(a){return""+this.sm.jsEval(a)},"~S");c(b,"jsEvalSV",function(a){return JS.SV.getVariable(JV.Viewer.isJS?this.sm.jsEval(a):this.jsEval(a))},"~S");c(b, +"setFileLoadStatus",function(a,b,c,f,e,h){this.setErrorMessage(e,null);this.g.setI("_loadPoint",a.getCode());var j=a!==J.c.FIL.CREATING_MODELSET;j&&this.setStatusFrameChanged(!1,!1);this.sm.setFileLoadStatus(b,c,f,e,a.getCode(),j,h);j&&(this.doHaveJDX()&&this.getJSV().setModel(this.am.cmi),JV.Viewer.isJS&&this.updateJSView(this.am.cmi,-2))},"J.c.FIL,~S,~S,~S,~S,Boolean");c(b,"getZapName",function(){return this.g.modelKitMode?"Jmol Model Kit":"zapped"});c(b,"setStatusMeasuring",function(a,b,c,f){this.sm.setStatusMeasuring(a, +b,c,f)},"~S,~N,~S,~N");c(b,"notifyMinimizationStatus",function(){var a=this.getP("_minimizationStep"),b=this.getP("_minimizationForceField"),c=this.getP("_minimizationStatus"),f="starting".equals(c),e="done".equals(c)||"failed".equals(c),h=null!=this.minimizer&&(e||f)?this.minimizer.bsAtoms:null,j=null==h?-1:h.nextSetBit(0),m=0<=j?this.getModelIndexForAtom(j):-1;f&&0<=j&&this.sm.setStatusStructureModified(j,m,3,"minimize:"+c,h.cardinality(),h);this.sm.notifyMinimizationStatus(c,"string"==typeof a? +Integer.$valueOf(0):a,this.getP("_minimizationEnergy"),a.toString().equals("0")?Float.$valueOf(0):this.getP("_minimizationEnergyDiff"),b);e&&0<=j&&this.sm.setStatusStructureModified(j,m,-3,"minimize:"+c,h.cardinality(),h)});c(b,"setStatusAtomPicked",function(a,b,c,f){f&&this.setSelectionSet(JU.BSUtil.newAndSetBit(a));null==b&&(b=this.g.pickLabel,b=0==b.length?this.getAtomInfoXYZ(a,this.g.messageStyleChime?4:2)+(null==this.getOperativeSymmetry()?"":" ("+this.getAtomInfoXYZ(a,3)+")"):this.ms.getAtomInfo(a, +b,this.ptTemp));this.setPicked(a,!1);0>a&&(f=this.getPendingMeasurement(),null!=f&&(b=b.substring(0,b.length-1)+',"'+f.getString()+'"]'));this.g.setO("_pickinfo",b);this.sm.setStatusAtomPicked(a,b,c);0>a||(1==this.sm.getSyncMode()&&this.doHaveJDX()&&this.getJSV().atomPicked(a),JV.Viewer.isJS&&this.updateJSView(this.ms.at[a].mi,a))},"~N,~S,java.util.Map,~B");j(b,"getProperty",function(a,b,c){if(!"DATA_API".equals(a))return this.getPropertyManager().getProperty(a,b,c);switch("scriptCheck.........consoleText.........scriptEditor........scriptEditorState...getAppConsole.......getScriptEditor.....setMenu.............spaceGroupInfo......disablePopupMenu....defaultDirectory....getPopupMenu........shapeManager........getPreference.......".indexOf(b)){case 0:return this.scriptCheckRet(c, +!0);case 20:return null==this.appConsole?"":this.appConsole.getText();case 40:return this.showEditor(c),null;case 60:return this.scriptEditorVisible=c.booleanValue(),null;case 80:return this.$isKiosk?this.appConsole=null:z(c,"J.api.JmolAppConsoleInterface")?this.appConsole=c:null!=c&&!c.booleanValue()?this.appConsole=null:null==this.appConsole&&(null!=c&&c.booleanValue())&&(JV.Viewer.isJS&&(this.appConsole=J.api.Interface.getOption("consolejs.AppletConsole",this,"script")),null!=this.appConsole&& +this.appConsole.start(this)),this.scriptEditor=JV.Viewer.isJS||null==this.appConsole?null:this.appConsole.getScriptEditor(),this.appConsole;case 100:return null==this.appConsole&&(null!=c&&c.booleanValue())&&(this.getProperty("DATA_API","getAppConsole",Boolean.TRUE),this.scriptEditor=null==this.appConsole?null:this.appConsole.getScriptEditor()),this.scriptEditor;case 120:return null!=this.jmolpopup&&this.jmolpopup.jpiDispose(),this.jmolpopup=null,this.menuStructure=c;case 140:return this.getSymTemp().getSpaceGroupInfo(this.ms, +null,-1,!1,null);case 160:return this.g.disablePopupMenu=!0,null;case 180:return this.g.defaultDirectory;case 200:return"string"==typeof c?this.getMenu(c):this.getPopupMenu();case 220:return this.shm.getProperty(c);case 240:return this.sm.syncSend("getPreference",c,1)}JU.Logger.error("ERROR in getProperty DATA_API: "+b);return null},"~S,~S,~O");c(b,"notifyMouseClicked",function(a,b,c,f){var e=JV.binding.Binding.getButtonMods(c),h=JV.binding.Binding.getClickCount(c);this.g.setI("_mouseX",a);this.g.setI("_mouseY", +this.screenHeight-b);this.g.setI("_mouseAction",c);this.g.setI("_mouseModifiers",e);this.g.setI("_clickCount",h);return this.sm.setStatusClicked(a,this.screenHeight-b,c,h,f)},"~N,~N,~N,~N");c(b,"getOutputManager",function(){return null!=this.outputManager?this.outputManager:(this.outputManager=J.api.Interface.getInterface("JV.OutputManager"+(JV.Viewer.isJS?"JS":"Awt"),this,"file")).setViewer(this,this.privateKey)});c(b,"getJzt",function(){return null==this.jzt?this.jzt=J.api.Interface.getInterface("JU.ZipTools", +this,"zip"):this.jzt});c(b,"readFileAsMap",function(a,b,c){this.getJzt().readFileAsMap(a,b,c)},"java.io.BufferedInputStream,java.util.Map,~S");c(b,"getZipDirectoryAsString",function(a){a=this.fm.getBufferedInputStreamOrErrorMessageFromName(a,a,!1,!1,null,!1,!0);return this.getJzt().getZipDirectoryAsStringAndClose(a)},"~S");j(b,"getImageAsBytes",function(a,b,c,f,e){return this.getOutputManager().getImageAsBytes(a,b,c,f,e)},"~S,~N,~N,~N,~A");j(b,"releaseScreenImage",function(){this.gdata.releaseScreenImage()}); +c(b,"setDisplay",function(a){this.display=a;this.apiPlatform.setViewer(this,a)},"~O");c(b,"newMeasurementData",function(a,b){return J.api.Interface.getInterface("JM.MeasurementData",this,"script").init(a,this,b)},"~S,JU.Lst");c(b,"getDataManager",function(){return null==this.dm?this.dm=J.api.Interface.getInterface("JV.DataManager",this,"script").set(this):this.dm});c(b,"getScriptManager",function(){if(this.allowScripting&&null==this.scm){this.scm=J.api.Interface.getInterface("JS.ScriptManager",this, +"setOptions");if(JV.Viewer.isJS&&null==this.scm)throw new NullPointerException;if(null==this.scm)return this.allowScripting=!1,null;this.eval=this.scm.setViewer(this);this.useCommandThread&&this.scm.startCommandWatcher(!0)}return this.scm});c(b,"checkOption2",function(a,b){return this.vwrOptions.containsKey(a)&&!this.vwrOptions.get(a).toString().equals("false")||0<=this.commandOptions.indexOf(b)},"~S,~S");c(b,"setStartupBooleans",function(){this.setBooleanProperty("_applet",this.isApplet);this.setBooleanProperty("_jspecview", +!1);this.setBooleanProperty("_signedApplet",this.isSignedApplet);this.setBooleanProperty("_headless",this.headless);this.setStringProperty("_restrict",'"'+this.access+'"');this.setBooleanProperty("_useCommandThread",this.useCommandThread);this.setBooleanPropertyTok("doubleprecision",603979831,!1)});c(b,"getExportDriverList",function(){return this.haveAccess(JV.Viewer.ACCESS.ALL)?this.g.getParameter("exportDrivers",!0):""});j(b,"dispose",function(){this.gRight=null;null!=this.mouse&&(this.acm.dispose(), +this.mouse.dispose(),this.mouse=null);this.clearScriptQueue();this.clearThreads();this.haltScriptExecution();null!=this.scm&&this.scm.clear(!0);this.gdata.destroy();null!=this.jmolpopup&&this.jmolpopup.jpiDispose();null!=this.modelkit&&this.modelkit.dispose();try{null!=this.appConsole&&(this.appConsole.dispose(),this.appConsole=null),null!=this.scriptEditor&&(this.scriptEditor.dispose(),this.scriptEditor=null)}catch(a){if(!F(a,Exception))throw a;}});c(b,"reset",function(a){this.ms.setBoundBox(null, +null,!0,0);this.axesAreTainted=!0;this.tm.homePosition(a);this.ms.setCrystallographicDefaults()?this.stm.setCrystallographicDefaults():this.setAxesMode(603979809);this.prevFrame=-2147483648;this.tm.spinOn||this.setSync()},"~B");j(b,"homePosition",function(){this.evalString("reset spin")});c(b,"initialize",function(a,b){this.g=new JV.GlobalSettings(this,this.g,a);this.setStartupBooleans();this.setWidthHeightVar();this.haveDisplay&&(this.g.setB("_is2D",JV.Viewer.isJS&&!this.isWebGL),this.g.setB("_multiTouchClient", +this.acm.isMTClient()),this.g.setB("_multiTouchServer",this.acm.isMTServer()));this.cm.setDefaultColors(!1);this.setObjectColor("background","black");this.setObjectColor("axis1","red");this.setObjectColor("axis2","green");this.setObjectColor("axis3","blue");this.am.setAnimationOn(!1);this.am.setAnimationFps(this.g.animationFps);this.sm.playAudio(null);this.sm.allowStatusReporting=this.g.statusReporting;this.setBooleanPropertyTok("antialiasDisplay",603979786,b?!0:this.g.antialiasDisplay);this.stm.resetLighting(); +this.tm.setDefaultPerspective()},"~B,~B");c(b,"saveModelOrientation",function(){this.ms.saveModelOrientation(this.am.cmi,this.stm.getOrientation())});c(b,"restoreModelOrientation",function(a){a=this.ms.getModelOrientation(a);null!=a&&a.restore(-1,!0)},"~N");c(b,"restoreModelRotation",function(a){a=this.ms.getModelOrientation(a);null!=a&&a.restore(-1,!1)},"~N");c(b,"getGLmolView",function(){var a=this.tm,b=a.fixedRotationCenter,c=a.getRotationQ();return{center:b,quaternion:c,xtrans:a.xTranslationFraction, +ytrans:a.yTranslationFraction,scale:a.scalePixelsPerAngstrom,zoom:a.zmPctSet,cameraDistance:a.cameraDistance,pixelCount:a.screenPixelCount,perspective:a.perspectiveDepth,width:a.width,height:a.height}});c(b,"setRotationRadius",function(a,b){b&&(a=this.tm.setRotationRadius(a,!1));this.ms.setRotationRadius(this.am.cmi,a)&&this.g.setF("rotationRadius",a)},"~N,~B");c(b,"setCenterBitSet",function(a,b){this.isJmolDataFrame()||this.tm.setNewRotationCenter(0c?"spin":"nav")+a,b)}},"~S,~N");c(b,"getSpinState",function(){return this.getStateCreator().getSpinState(!1)});c(b,"getOrientation",function(a,b,c,f){switch(a){case 1312817669:case 1814695966:case 1073741864:case 1111492629:case 1111492630:case 1111492631:case 134221850:null==c&&(c=this.bsA());if(c.isEmpty())return 1312817669==a?"0":1814695966==a||1073741864==a?null:new JU.Quat; +c=this.ms.getBoundBoxOrientation(a,c,f);return"best"===b&&1312817669!=a?c.div(this.tm.getRotationQ()):c;case 1073742034:return this.stm.getSavedOrientationText(b);default:return this.tm.getOrientationText(a,"best"===b)}},"~N,~S,JU.BS,~A");c(b,"getCurrentColorRange",function(){return this.cm.getPropertyColorRange()});c(b,"setDefaultColors",function(a){this.cm.setDefaultColors(a);this.g.setB("colorRasmol",a);this.g.setO("defaultColorScheme",a?"rasmol":"jmol")},"~B");c(b,"setElementArgb",function(a, +b){this.g.setO("=color "+JU.Elements.elementNameFromNumber(a),JU.Escape.escapeColor(b));this.cm.setElementArgb(a,b)},"~N,~N");j(b,"setVectorScale",function(a){this.g.setF("vectorScale",a);this.g.vectorScale=a},"~N");j(b,"setVibrationScale",function(a){this.tm.setVibrationScale(a);this.g.vibrationScale=a;this.g.setF("vibrationScale",a)},"~N");j(b,"setVibrationPeriod",function(a){Double.isNaN(a)&&(a=this.g.vibrationPeriod);this.tm.setVibrationPeriod(a);a=Math.abs(a);this.g.vibrationPeriod=a;this.g.setF("vibrationPeriod", +a)},"~N");c(b,"setObjectColor",function(a,b){null==b||0==b.length||this.setObjectArgb(a,JU.CU.getArgbFromString(b))},"~S,~S");c(b,"setObjectVisibility",function(a,b){var c=JV.StateManager.getObjectIdFromName(a);0<=c&&this.setShapeProperty(c,"display",b?Boolean.TRUE:Boolean.FALSE)},"~S,~B");c(b,"setObjectArgb",function(a,b){var c=JV.StateManager.getObjectIdFromName(a);if(0>c)a.equalsIgnoreCase("axes")&&(this.setObjectArgb("axis1",b),this.setObjectArgb("axis2",b),this.setObjectArgb("axis3",b));else{this.g.objColors[c]= +b;switch(c){case 0:this.gdata.setBackgroundArgb(b),this.cm.setColixBackgroundContrast(b)}this.g.setO(a+"Color",JU.Escape.escapeColor(b))}},"~S,~N");c(b,"setBackgroundImage",function(a,b){this.g.backgroundImageFileName=a;this.gdata.setBackgroundImage(b)},"~S,~O");c(b,"getObjectColix",function(a){a=this.g.objColors[a];return 0==a?this.cm.colixBackgroundContrast:JU.C.getColix(a)},"~N");j(b,"setColorBackground",function(a){this.setObjectColor("background",a)},"~S");j(b,"getBackgroundArgb",function(){return this.g.objColors[0]}); +c(b,"setObjectMad10",function(a,b,c){var f=JV.StateManager.getObjectIdFromName(b.equalsIgnoreCase("axes")?"axis":b);if(!(0>f)){if(-2==c||-4==c){var e=c+3;c=this.getObjectMad10(f);0==c&&(c=e)}this.g.setB("show"+b,0!=c);this.g.objStateOn[f]=0!=c;0!=c&&(this.g.objMad10[f]=c,this.setShapeSize(a,c,null))}},"~N,~S,~N");c(b,"getObjectMad10",function(a){return this.g.objStateOn[a]?this.g.objMad10[a]:0},"~N");c(b,"setPropertyColorScheme",function(a,b,c){this.g.propertyColorScheme=a;a.startsWith("translucent ")&& +(b=!0,a=a.substring(12).trim());this.cm.setPropertyColorScheme(a,b,c)},"~S,~B,~B");c(b,"getLightingState",function(){return this.getStateCreator().getLightingState(!0)});c(b,"getColorPointForPropertyValue",function(a){return JU.CU.colorPtFromInt(this.gdata.getColorArgbOrGray(this.cm.ce.getColorIndex(a)),null)},"~N");c(b,"select",function(a,b,c,f){b&&(a=this.getUndeletedGroupAtomBits(a));this.slm.select(a,c,f);this.shm.setShapeSizeBs(1,2147483647,null,null);this.hasSelected=!0},"JU.BS,~B,~N,~B");j(b, +"setSelectionSet",function(a){this.selectStatus(a,!1,0,!0,!0)},"JU.BS");c(b,"selectBonds",function(a){this.shm.setShapeSizeBs(1,2147483647,null,a)},"JU.BS");c(b,"displayAtoms",function(a,b,c,f,e){c&&(a=this.getUndeletedGroupAtomBits(a));b?this.slm.display(this.ms,a,f,e):this.slm.hide(this.ms,a,f,e)},"JU.BS,~B,~B,~N,~B");c(b,"getUndeletedGroupAtomBits",function(a){a=this.ms.getAtoms(1086324742,a);JU.BSUtil.andNot(a,this.slm.bsDeleted);return a},"JU.BS");c(b,"reportSelection",function(a){this.selectionHalosEnabled&& +this.setTainted(!0);(this.isScriptQueued()||this.g.debugScript)&&this.scriptStatus(a)},"~S");c(b,"clearAtomSets",function(){this.slm.setSelectionSubset(null);this.definedAtomSets.clear();this.haveDisplay&&this.acm.exitMeasurementMode("clearAtomSets")});c(b,"getDefinedAtomSet",function(a){a=this.definedAtomSets.get(a.toLowerCase());return z(a,"JU.BS")?a:new JU.BS},"~S");j(b,"selectAll",function(){this.slm.selectAll(!1)});j(b,"clearSelection",function(){this.slm.clearSelection(!0);this.g.setB("hideNotSelected", +!1)});c(b,"bsA",function(){return this.slm.getSelectedAtoms()});j(b,"addSelectionListener",function(a){this.slm.addListener(a)},"J.api.JmolSelectionListener");j(b,"removeSelectionListener",function(a){this.slm.addListener(a)},"J.api.JmolSelectionListener");c(b,"getAtomBitSetEval",function(a,b){return this.allowScripting?this.getScriptManager().getAtomBitSetEval(a,b):new JU.BS},"J.api.JmolScriptEvaluator,~O");c(b,"processTwoPointGesture",function(a){this.mouse.processTwoPointGesture(a)},"~A");c(b, +"processMouseEvent",function(a,b,c,f,e){return this.mouse.processEvent(a,b,c,f,e)},"~N,~N,~N,~N,~N");c(b,"processKeyEvent",function(a){this.mouse.processKeyEvent(a)},"~O");c(b,"getRubberBandSelection",function(){return this.haveDisplay?this.acm.getRubberBand():null});c(b,"isBound",function(a,b){return this.haveDisplay&&this.acm.bnd(a,[b])},"~N,~N");c(b,"getCursorX",function(){return this.haveDisplay?this.acm.getCurrentX():0});c(b,"getCursorY",function(){return this.haveDisplay?this.acm.getCurrentY(): +0});c(b,"getDefaultDirectory",function(){return this.g.defaultDirectory});c(b,"getLocalUrl",function(a){return this.apiPlatform.getLocalUrl(a)},"~S");c(b,"getFileAsString",function(a){return this.getAsciiFileOrNull(a)},"~S");j(b,"getBufferedInputStream",function(a){return this.fm.getBufferedInputStream(a)},"~S");c(b,"setLoadParameters",function(a,b){null==a&&(a=new java.util.Hashtable);a.put("vwr",this);0a.indexOf("# Jmol state")){for(var h=2;0<=(e=a.indexOf(b,e+1));)h++;var j=Array(h), +m=0,p=0;for(e=0;em&&(m=a.length),j[e]=a.substring(p,m),p=m+b.length;return this.openStringsInlineParamsAppend(j,f,c)}return this.openStringInlineParamsAppend(a,f,c)},"~S,~S,~B,java.util.Map");b.fixInlineString=c(b,"fixInlineString",function(a,b){var c;0<=a.indexOf("\\/n")&&(a=JU.PT.rep(a,"\n",""),a=JU.PT.rep(a,"\\/n","\n"),b=String.fromCharCode(0));if(0!=b.charCodeAt(0)&&"\n"!=b){var f=0<=a.indexOf("\n"),e=a.length;for(c=0;c":this.getFileAsString4(b,-1,!0,!1,!1,a)},"~S");c(b,"getFullPathNameOrError", +function(a){var b=Array(2);this.fm.getFullPathNameOrError(a,!1,b);return b},"~S");c(b,"getFileAsString3",function(a,b,c){return this.getFileAsString4(a,-1,!1,!1,b,c)},"~S,~B,~S");c(b,"getFileAsString4",function(a,b,c,f,e,h){if(null==a)return this.getCurrentFileAsString(h);a=w(-1,[a,null]);this.fm.getFileDataAsString(a,b,c,f,e);return a[1]},"~S,~N,~B,~B,~B,~S");c(b,"getAsciiFileOrNull",function(a){a=w(-1,[a,null]);return this.fm.getFileDataAsString(a,-1,!1,!1,!1)?a[1]:null},"~S");c(b,"autoCalculate", +function(a,b){switch(a){case 1111490575:this.ms.getSurfaceDistanceMax();break;case 1111490574:this.ms.calculateStraightnessAll();break;case 1111490587:this.ms.calculateDssrProperty(b)}},"~N,~S");c(b,"calculateStraightness",function(){this.ms.haveStraightness=!1;this.ms.calculateStraightnessAll()});c(b,"calculateSurface",function(a,b){null==a&&(a=this.bsA());if(3.4028235E38==b||-1==b)this.ms.addStateScript("calculate surfaceDistance "+(3.4028235E38==b?"FROM":"WITHIN"),null,a,null,"",!1,!0);return this.ms.calculateSurface(a, +b)},"JU.BS,~N");c(b,"getStructureList",function(){return this.g.getStructureList()});c(b,"setStructureList",function(a,b){this.g.setStructureList(a,b);this.ms.setStructureList(this.getStructureList())},"~A,J.c.STR");c(b,"calculateStructures",function(a,b,c,f){null==a&&(a=this.bsA());return this.ms.calculateStructures(a,b,!this.am.animationOn,this.g.dsspCalcHydrogen,c,f)},"JU.BS,~B,~B,~N");c(b,"getAnnotationParser",function(a){return a?null==this.dssrParser?this.dssrParser=J.api.Interface.getOption("dssx.DSSR1", +this,"script"):this.dssrParser:null==this.annotationParser?this.annotationParser=J.api.Interface.getOption("dssx.AnnotationParser",this,"script"):this.annotationParser},"~B");j(b,"getSelectedAtomIterator",function(a,b,c,f){return this.ms.getSelectedAtomIterator(a,b,c,!1,f)},"JU.BS,~B,~B,~B");j(b,"setIteratorForAtom",function(a,b,c){this.ms.setIteratorForAtom(a,-1,b,c,null)},"J.api.AtomIndexIterator,~N,~N");j(b,"setIteratorForPoint",function(a,b,c,f){this.ms.setIteratorForPoint(a,b,c,f)},"J.api.AtomIndexIterator,~N,JU.T3,~N"); +j(b,"fillAtomData",function(a,b){a.programInfo="Jmol Version "+JV.Viewer.getJmolVersion();a.fileName=this.fm.getFileName();this.ms.fillAtomData(a,b)},"J.atomdata.AtomData,~N");c(b,"addStateScript",function(a,b,c){return this.ms.addStateScript(a,null,null,null,null,b,c)},"~S,~B,~B");c(b,"getMinimizer",function(a){return null==this.minimizer&&a?(this.minimizer=J.api.Interface.getInterface("JM.Minimizer",this,"script")).setProperty("vwr",this):this.minimizer},"~B");c(b,"getSmilesMatcher",function(){return null== +this.smilesMatcher?this.smilesMatcher=J.api.Interface.getInterface("JS.SmilesMatcher",this,"script"):this.smilesMatcher});c(b,"clearModelDependentObjects",function(){this.setFrameOffsets(null,!1);this.stopMinimization();this.smilesMatcher=this.minimizer=null;null!=this.modelkit&&this.modelkit.clearAtomConstraints()});c(b,"zap",function(a,b,c){this.clearThreads();null==this.mm.modelSet?this.mm.zap():(this.ligandModelSet=null,this.clearModelDependentObjects(),this.fm.clear(),this.clearRepaintManager(-1), +this.am.clear(),this.tm.clear(),this.slm.clear(),this.hasSelected=!0,this.clearAllMeasurements(),this.clearMinimization(),this.gdata.clear(),this.mm.zap(),null!=this.scm&&this.scm.clear(!1),null!=this.nmrCalculation&&this.getNMRCalculation().setChemicalShiftReference(null,0),this.haveDisplay&&(this.mouse.clear(),this.clearTimeouts(),this.acm.clear()),this.stm.clear(this.g),this.tempArray.clear(),this.chainMap.clear(),this.chainList.clear(),this.chainCaseSpecified=!1,this.definedAtomSets.clear(),this.lastData= +null,null!=this.dm&&this.dm.clear(),!this.g.doublePrecision&&this.g.legacyJavaFloat&&this.setBooleanPropertyTok("legacyjavafloat",603979874,!1),b&&(c&&this.g.removeParam("_pngjFile"),c&&this.g.modelKitMode?this.loadDefaultModelKitModel(null):this.setPickingMode(null,1),this.undoMoveAction(4165,-2)),System.gc());this.initializeModel(!1);a&&this.setFileLoadStatus(J.c.FIL.ZAPPED,null,b?"resetUndo":this.getZapName(),null,null,null);JU.Logger.debugging&&JU.Logger.checkMemory()},"~B,~B,~B");c(b,"loadDefaultModelKitModel", +function(a){this.getModelkit(!1).isHidden()||null!=this.getOperativeSymmetry()||(this.openStringInlineParamsAppend(this.getModelkit(!1).getDefaultModel(),a,!0),this.setRotationRadius(5,!0),this.setStringProperty("picking","assignAtom_C"),this.setStringProperty("picking","assignBond_p"))},"java.util.Map");c(b,"zapMsg",function(a){this.zap(!0,!0,!1);this.echoMessage(a)},"~S");c(b,"echoMessage",function(a){this.shm.loadShape(31);this.setShapeProperty(31,"font",this.getFont3D("SansSerif","Plain",20)); +this.setShapeProperty(31,"target","error");this.setShapeProperty(31,"text",a)},"~S");c(b,"initializeModel",function(a){this.clearThreads();a?this.am.initializePointers(1):(this.reset(!0),this.selectAll(),this.setModelkitPropertySafely("initializemodel",null),this.movingSelected=!1,this.slm.noneSelected=Boolean.FALSE,this.setHoverEnabled(!0),this.setSelectionHalosEnabled(!1),this.tm.setCenter(),this.am.initializePointers(1),this.setBooleanPropertyTok("multipleBondBananas",603979886,!1),this.ms.getMSInfoB("isPyMOL")|| +(this.clearAtomSets(),this.setCurrentModelIndex(0)),this.setBackgroundModelIndex(-1),this.setFrankOn(this.getShowFrank()),this.shm.setScale(),this.startHoverWatcher(!0),this.setTainted(!0),this.finalizeTransformParameters())},"~B");c(b,"startHoverWatcher",function(a){a&&this.inMotion||(!this.haveDisplay||a&&(!this.hoverEnabled&&!this.sm.haveHoverCallback()||this.am.animationOn))||this.acm.startHoverWatcher(a)},"~B");j(b,"getModelSetPathName",function(){return this.mm.modelSetPathName});j(b,"getModelSetFileName", +function(){return null==this.mm.fileName?this.getZapName():this.mm.fileName});c(b,"getUnitCellInfoText",function(){var a=this.getCurrentUnitCell();return null==a?"not applicable":a.getUnitCellInfo(!0)});c(b,"getUnitCellInfo",function(a){var b=this.getCurrentUnitCell();return null==b?NaN:b.getUnitCellInfoType(a)},"~N");c(b,"getV0abc",function(a,b){var c=0>a?this.getCurrentUnitCell():this.getUnitCell(a);null==c&&(c=this.getSymTemp());return null==c?null:c.getV0abc(b,null)},"~N,~O");c(b,"getCurrentUnitCell", +function(){var a=this.am.getUnitCellAtomIndex();return 0<=a?this.ms.getUnitCellForAtom(a):this.getUnitCell(this.am.cmi)});c(b,"getUnitCell",function(a){if(0<=a)return this.ms.getUnitCell(a);a=this.getVisibleFramesBitSet();for(var b=null,c=a.nextSetBit(0);0<=c;c=a.nextSetBit(c+1)){var f=this.ms.getUnitCell(c);if(null!=f)if(null==b)b=f;else if(!b.unitCellEquals(f))return null}return b},"~N");c(b,"getPolymerPointsAndVectors",function(a,b){this.ms.getPolymerPointsAndVectors(a,b,this.g.traceAlpha,this.g.sheetSmoothing)}, +"JU.BS,JU.Lst");c(b,"getHybridizationAndAxes",function(a,b,c,f){return this.ms.getHybridizationAndAxes(a,0,b,c,f,!0,!0,!1,null)},"~N,JU.V3,JU.V3,~S");c(b,"getAllAtoms",function(){return this.getModelUndeletedAtomsBitSet(-1)});c(b,"getFrameAtoms",function(){return this.getModelUndeletedAtomsBitSetBs(this.getVisibleFramesBitSet())});j(b,"getVisibleFramesBitSet",function(){var a=JU.BSUtil.copy(this.am.bsVisibleModels);null!=this.ms.trajectory&&this.ms.trajectory.selectDisplayed(a);return a});c(b,"getModelUndeletedAtomsBitSet", +function(a){return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeleted(a,!0),!1)},"~N");c(b,"getModelUndeletedAtomsBitSetBs",function(a){return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeletedBs(a),!1)},"JU.BS");j(b,"getBoundBoxCenter",function(){return this.ms.getBoundBoxCenter(this.am.cmi)});c(b,"calcBoundBoxDimensions",function(a,b){this.ms.calcBoundBoxDimensions(a,b);this.axesAreTainted=!0},"JU.BS,~N");j(b,"getBoundBoxCornerVector",function(){return this.ms.getBoundBoxCornerVector()}); +j(b,"getModelSetProperties",function(){return this.ms.modelSetProperties});j(b,"getModelProperties",function(a){return this.ms.am[a].properties},"~N");c(b,"getModelForAtomIndex",function(a){return this.ms.am[this.ms.at[a].mi]},"~N");c(b,"getModelIndexForAtom",function(a){return this.ms.at[a].mi},"~N");j(b,"getModelSetAuxiliaryInfo",function(){return this.ms.getModelSetAuxiliaryInfo(null)});j(b,"getModelNumber",function(a){return 0>a?a:this.ms.getModelNumber(a)},"~N");c(b,"getModelFileNumber",function(a){return 0> +a?0:this.ms.modelFileNumbers[a]},"~N");j(b,"getModelNumberDotted",function(a){return 0>a?"0":this.ms.getModelNumberDotted(a)},"~N");j(b,"getModelName",function(a){return this.ms.getModelName(a)},"~N");c(b,"modelHasVibrationVectors",function(a){return 0<=this.ms.getLastVibrationVector(a,4166)},"~N");c(b,"getBondsForSelectedAtoms",function(a){return this.ms.getBondsForSelectedAtoms(a,this.g.bondModeOr||1==JU.BSUtil.cardinalityOf(a))},"JU.BS");c(b,"frankClicked",function(a,b){return!this.g.disablePopupMenu&& +this.getShowFrank()&&this.shm.checkFrankclicked(a,b)},"~N,~N");c(b,"frankClickedModelKit",function(a,b){return!this.g.disablePopupMenu&&this.isModelKitOpen()&&0<=a&&0<=b&&40>a&&104>b},"~N,~N");j(b,"findNearestAtomIndex",function(a,b){return this.findNearestAtomIndexMovable(a,b,!1)},"~N,~N");c(b,"findNearestAtomIndexMovable",function(a,b,c){return!this.g.atomPicking?-1:this.ms.findNearestAtomIndex(a,b,c?this.slm.getMotionFixedAtoms():null,this.g.minPixelSelRadius)},"~N,~N,~B");c(b,"toCartesian",function(a, +b){this.toCartesianUC(null,a,b)},"JU.T3,~B");c(b,"toCartesianUC",function(a,b,c){null==a&&(a=this.getCurrentUnitCell());null!=a&&(a.toCartesian(b,c),this.g.legacyJavaFloat||JU.PT.fixPtFloats(b,1E4))},"J.api.SymmetryInterface,JU.T3,~B");c(b,"toFractional",function(a,b){this.toFractionalUC(null,a,b)},"JU.T3,~B");c(b,"toFractionalUC",function(a,b,c){null==a&&(a=this.getCurrentUnitCell());null!=a&&(a.toFractional(b,c),this.g.legacyJavaFloat||JU.PT.fixPtFloats(b,1E5))},"J.api.SymmetryInterface,JU.T3,~B"); +c(b,"toUnitCell",function(a,b){var c=this.getCurrentUnitCell();null!=c&&c.toUnitCell(a,b)},"JU.P3,JU.P3");c(b,"setCurrentCage",function(a){a=w(-1,[a,null]);this.shm.getShapePropertyData(24,"unitCell",a);this.ms.setModelCage(this.am.cmi,a[1])},"~S");c(b,"addUnitCellOffset",function(a){var b=this.getCurrentUnitCell();null!=b&&a.add(b.getCartesianOffset())},"JU.P3");c(b,"setAtomData",function(a,b,c,f){this.ms.setAtomData(a,b,c,f);2==a&&this.checkCoordinatesChanged(null);this.refreshMeasures(!0)},"~N,~S,~S,~B"); +j(b,"setCenterSelected",function(){this.setCenterBitSet(this.bsA(),!0)});c(b,"setApplySymmetryToBonds",function(a){this.g.applySymmetryToBonds=a},"~B");j(b,"setBondTolerance",function(a){this.g.setF("bondTolerance",a);this.g.bondTolerance=a},"~N");j(b,"setMinBondDistance",function(a){this.g.setF("minBondDistance",a);this.g.minBondDistance=a},"~N");c(b,"getAtomsNearPt",function(a,b,c){null==c&&(c=new JU.BS);this.ms.getAtomsWithin(a,b,c,-1);return c},"~N,JU.P3,JU.BS");c(b,"getBranchBitSet",function(a, +b,c){return 0>a||a>=this.ms.ac?new JU.BS:JU.JmolMolecule.getBranchBitSet(this.ms.at,a,this.getModelUndeletedAtomsBitSet(this.ms.at[a].mi),null,b,c,!0)},"~N,~N,~B");j(b,"getElementsPresentBitSet",function(a){return this.ms.getElementsPresentBitSet(a)},"~N");c(b,"getFileHeader",function(){return this.ms.getFileHeader(this.am.cmi)});c(b,"getFileData",function(){return this.ms.getFileData(this.am.cmi)});c(b,"getCifData",function(a){return this.readCifData(this.ms.getModelFileName(a),this.ms.getModelFileType(a).toUpperCase())}, +"~N");c(b,"readCifData",function(a,b){var c=null==a?this.ms.getModelFileName(this.am.cmi):a;if(null==b&&null!=c&&0<=c.toUpperCase().indexOf("BCIF")){c=this.fm.getBufferedInputStream(c);try{return J.api.Interface.getInterface("JU.MessagePackReader",this,"script").getMapForStream(c)}catch(f){if(F(f,Exception))return f.printStackTrace(),new java.util.Hashtable;throw f;}}c=null==a||0==a.length?this.getCurrentFileAsString("script"):this.getFileAsString3(a,!1,null);if(null==c||2>c.length)return null;c= +JU.Rdr.getBR(c);null==b&&(b=this.getModelAdapter().getFileTypeName(c));return null==b?null:this.readCifData(null,c,b)},"~S,~S");c(b,"readCifData",function(a,b,c){null==b&&(b=this.getFileAsString(a));a=z(b,"java.io.BufferedReader")?b:JU.Rdr.getBR(b);return JU.Rdr.readCifData(J.api.Interface.getInterface("Cif2".equals(c)?"J.adapter.readers.cif.Cif2DataParser":"JU.CifDataParser",this,"script"),a)},"~S,~O,~S");c(b,"getStateCreator",function(){null==this.jsc&&(this.jsc=J.api.Interface.getInterface("JV.StateCreator", +this,"script")).setViewer(this);return this.jsc});c(b,"getWrappedStateScript",function(){return this.getOutputManager().getWrappedState(null,null,null,null)});j(b,"getStateInfo",function(){return this.getStateInfo3(null,0,0)});c(b,"getStateInfo3",function(a,b,c){return this.g.preserveState?this.getStateCreator().getStateScript(a,b,c):""},"~S,~N,~N");c(b,"getStructureState",function(){return this.getStateCreator().getModelState(null,!1,!0)});c(b,"getCoordinateState",function(a){return this.getStateCreator().getAtomicPropertyState(2, +a)},"JU.BS");c(b,"setCurrentColorRange",function(a){var b=this.getDataObj(a,null,1);a=null==b?null:this.getDataObj(a,null,-1)[2];null!=a&&this.g.rangeSelected&&a.and(this.bsA());this.cm.setPropertyColorRangeData(b,a)},"~S");c(b,"setData",function(a,b,c,f,e,h,j){this.getDataManager().setData(a,this.lastData=b,c,this.ms.ac,f,e,h,j)},"~S,~A,~N,~N,~N,~N,~N");c(b,"getDataObj",function(a,b,c){return null==a&&-2==c?this.lastData:this.getDataManager().getData(a,b,c)},"~S,JU.BS,~N");c(b,"autoHbond",function(a, +b,c){null==a&&(a=b=this.bsA());return this.ms.autoHbond(a,b,c)},"JU.BS,JU.BS,~B");c(b,"getDefaultMeasurementLabel",function(a){switch(a){case 2:return this.g.defaultDistanceLabel;case 3:return this.g.defaultAngleLabel;default:return this.g.defaultTorsionLabel}},"~N");j(b,"getMeasurementCount",function(){var a=this.getShapePropertyAsInt(6,"count");return 0>=a?0:a});j(b,"getMeasurementStringValue",function(a){return""+this.shm.getShapePropertyIndex(6,"stringValue",a)},"~N");c(b,"getMeasurementInfoAsString", +function(){return this.getShapeProperty(6,"infostring")});j(b,"getMeasurementCountPlusIndices",function(a){return this.shm.getShapePropertyIndex(6,"countPlusIndices",a)},"~N");c(b,"setPendingMeasurement",function(a){this.shm.loadShape(6);this.setShapeProperty(6,"pending",a)},"JM.MeasurementPending");c(b,"getPendingMeasurement",function(){return this.getShapeProperty(6,"pending")});c(b,"clearAllMeasurements",function(){this.setShapeProperty(6,"clear",null)});j(b,"clearMeasurements",function(){this.evalString("measures delete")}); +c(b,"setAnimation",function(a){switch(a){case 1073742098:this.am.reverseAnimation();case 1073742096:case 4143:this.am.animationOn||this.am.resumeAnimation();break;case 20487:this.am.animationOn&&!this.am.animationPaused&&this.am.pauseAnimation();break;case 1073742037:this.am.setAnimationNext();break;case 1073742108:this.am.setAnimationPrevious();break;case 1073741942:case 1073742125:this.am.rewindAnimation();break;case 1073741993:this.am.setAnimationLast()}},"~N");j(b,"setAnimationFps",function(a){this.am.setAnimationFps(a)}, +"~N");c(b,"setAnimationMode",function(a){a.equalsIgnoreCase("once")?this.am.setAnimationReplayMode(1073742070,0,0):a.equalsIgnoreCase("loop")?this.am.setAnimationReplayMode(528411,1,1):a.startsWith("pal")&&this.am.setAnimationReplayMode(1073742082,1,1)},"~S");c(b,"setAnimationOn",function(a){a!=this.am.animationOn&&this.am.setAnimationOn(a)},"~B");c(b,"setAnimationRange",function(a,b){this.am.setAnimationRange(a,b)},"~N,~N");c(b,"defineAtomSets",function(a){this.definedAtomSets.putAll(a)},"java.util.Map"); +c(b,"setAnimDisplay",function(a){this.am.setDisplay(a);this.am.animationOn||this.am.morph(this.am.currentMorphModel+1)},"JU.BS");c(b,"setCurrentModelIndex",function(a){-2147483648==a?(this.prevFrame=-2147483648,this.setCurrentModelIndexClear(this.am.cmi,!0)):this.am.setModel(a,!0)},"~N");c(b,"getTrajectoryState",function(){return null==this.ms.trajectory?"":this.ms.trajectory.getState()});c(b,"setFrameOffsets",function(a,b){this.tm.bsFrameOffsets=null;b?this.clearModelDependentObjects():this.tm.bsFrameOffsets= +a;this.tm.frameOffsets=this.ms.getFrameOffsets(a,b)},"JU.BS,~B");c(b,"setCurrentModelIndexClear",function(a,b){this.am.setModel(a,b)},"~N,~B");c(b,"haveFileSet",function(){return 1a.indexOf("\u0001## REPAINT_IGNORE ##"), +a)},"~S");j(b,"refresh",function(a,b){if(!(null==this.rm||!this.refreshing||6==a&&this.getInMotion(!0)||!this.isWebGL&&7==a)){if(this.isWebGL)switch(a){case 1:case 2:case 7:this.tm.finalizeTransformParameters();if(null==this.html5Applet)return;this.html5Applet._refresh();if(7==a)return}else this.rm.repaintIfReady("refresh "+a+" "+b);this.sm.doSync()&&this.sm.setSync(2==a?b:null)}},"~N,~S");c(b,"requestRepaintAndWait",function(a){null!=this.rm&&(this.haveDisplay?(this.rm.requestRepaintAndWait(a),this.setSync()): +(this.setModelVisibility(),this.shm.finalizeAtoms(null,!0)))},"~S");c(b,"clearShapeRenderers",function(){this.clearRepaintManager(-1)});c(b,"isRepaintPending",function(){return null==this.rm?!1:this.rm.isRepaintPending()});j(b,"notifyViewerRepaintDone",function(){null!=this.rm&&this.rm.repaintDone();this.am.repaintDone()});c(b,"areAxesTainted",function(){var a=this.axesAreTainted;this.axesAreTainted=!1;return a});j(b,"generateOutputForExport",function(a){return this.noGraphicsAllowed||null==this.rm? +null:this.getOutputManager().getOutputFromExport(a)},"java.util.Map");c(b,"clearRepaintManager",function(a){null!=this.rm&&this.rm.clear(a)},"~N");c(b,"renderScreenImage",function(a,b,c){this.renderScreenImageStereo(a,!1,b,c)},"~O,~N,~N");c(b,"renderScreenImageStereo",function(a,b,c,f){this.updateWindow(c,f)&&(!b||null==this.gRight?this.getScreenImageBuffer(a,!1):(this.drawImage(this.gRight,this.getImage(!0,!1),0,0,this.tm.stereoDoubleDTI),this.drawImage(a,this.getImage(!1,!1),0,0,this.tm.stereoDoubleDTI))); +null!=this.captureParams&&Boolean.FALSE!==this.captureParams.get("captureEnabled")&&(this.captureParams.remove("imagePixels"),a=this.captureParams.get("endTime").longValue(),0a&&this.captureParams.put("captureMode","end"),this.processWriteOrCapture(this.captureParams));this.notifyViewerRepaintDone()},"~O,~B,~N,~N");c(b,"updateJS",function(){this.isWebGL?(null==this.jsParams&&(this.jsParams=new java.util.Hashtable,this.jsParams.put("type","JS")),this.updateWindow(0, +0)&&this.render(),this.notifyViewerRepaintDone()):this.isStereoSlave||this.renderScreenImageStereo(this.apiPlatform.getGraphics(null),!0,0,0)});c(b,"updateJSView",function(a,b){if(null!=this.html5Applet){var c=this.html5Applet,f=!0;(f=null!=c&&null!=c._viewSet)&&this.html5Applet._atomPickedCallback(a,b)}},"~N,~N");j(b,"evalFile",function(a){return this.evalFileArgs(a,null)},"~S");j(b,"evalFileArgs",function(a,b){return this.allowScripting&&null!=this.getScriptManager()?this.scm.evalFileArgs(a,b): +null},"~S,~S");c(b,"getInsertedCommand",function(){var a=this.insertedCommand;this.insertedCommand="";JU.Logger.debugging&&""!==a&&JU.Logger.debug("inserting: "+a);return a});j(b,"script",function(a){return this.evalStringQuietSync(a,!1,!0)},"~S");j(b,"evalString",function(a){return this.evalStringQuietSync(a,!1,!0)},"~S");j(b,"evalStringQuiet",function(a){return this.evalStringQuietSync(a,!0,!0)},"~S");c(b,"evalStringQuietSync",function(a,b,c){return null==this.getScriptManager()?null:this.scm.evalStringQuietSync(a, +b,c)},"~S,~B,~B");c(b,"clearScriptQueue",function(){null!=this.scm&&this.scm.clearQueue()});c(b,"setScriptQueue",function(a){(this.g.useScriptQueue=a)||this.clearScriptQueue()},"~B");j(b,"checkHalt",function(a,b){return null!=this.scm&&this.scm.checkHalt(a,b)},"~S,~B");j(b,"scriptWait",function(a){return this.evalWait("JSON",a,"+scriptStarted,+scriptStatus,+scriptEcho,+scriptTerminated")},"~S");j(b,"scriptWaitStatus",function(a,b){return this.evalWait("object",a,b)},"~S,~S");c(b,"evalWait",function(a, +b,c){if(null==this.getScriptManager())return null;this.scm.waitForQueue();var f=J.i18n.GT.setDoTranslate(!1);a=this.evalStringWaitStatusQueued(a,b,c,!1,!1);J.i18n.GT.setDoTranslate(f);return a},"~S,~S,~S");c(b,"exitJmol",function(){if(!this.isApplet||this.isJNLP){if(null!=this.headlessImageParams)try{this.headless&&this.outputToFile(this.headlessImageParams)}catch(a){if(!F(a,Exception))throw a;}JU.Logger.debugging&&JU.Logger.debug("exitJmol -- exiting");System.out.flush();System.exit(0)}});c(b,"scriptCheckRet", +function(a,b){return null==this.getScriptManager()?null:this.scm.scriptCheckRet(a,b)},"~S,~B");j(b,"scriptCheck",function(a){return this.scriptCheckRet(a,!1)},"~S");j(b,"isScriptExecuting",function(){return null!=this.eval&&this.eval.isExecuting()});j(b,"haltScriptExecution",function(){null!=this.eval&&(this.eval.haltExecution(),this.eval.stopScriptThreads());this.setStringPropertyTok("pathForAllFiles",545259572,"");this.clearTimeouts()});c(b,"pauseScriptExecution",function(){null!=this.eval&&this.eval.pauseExecution(!0)}); +c(b,"resolveDatabaseFormat",function(a){return JV.Viewer.hasDatabasePrefix(a)||0<=a.indexOf("cactus.nci.nih.gov/chemical/structure")?this.setLoadFormat(!1,a,a.charAt(0),!1):a},"~S");b.hasDatabasePrefix=c(b,"hasDatabasePrefix",function(a){return 0!=a.length&&JV.Viewer.isDatabaseCode(a.charAt(0))},"~S");b.isDatabaseCode=c(b,"isDatabaseCode",function(a){return"*"==a||"$"==a||"="==a||":"==a},"~S");c(b,"setLoadFormat",function(a,b,c,f){var e=null,h=b.substring(1);switch(c.charCodeAt(0)){case 99:return b; +case 104:return this.g.checkCIR&&this.checkCIR(!1),this.g.nihResolverFormat+b.substring(b.indexOf("/structure")+10);case 61:if(b.startsWith("==")){if(h=h.substring(1),h.equals("?")&&null==(h=this.getDBID("chemical component from RCSB")))return null}else{if(h.equals("?")&&null==(h=this.getDBID("PDB ID from RCSB")))return null;if(0h.indexOf("_")&&(h=this.getSymTemp().getSpaceGroupJSON(this,"AFLOW",h,c)));h=JV.JC.resolveDataBase(m,h,null);null!=h&&h.startsWith("'")&&(h=this.evaluateExpression(h).toString());return null==h||0==h.length?b:h}catch(p){if(F(p,Exception))return b;throw p;}if(!a&&h.endsWith(".bcif"))return h=h.substring(0,h.indexOf(".bcif")),JV.JC.resolveDataBase("bcif",h.toLowerCase(),null);if(h.endsWith(".mmtf"))return h=h.substring(0,h.indexOf(".mmtf")),JV.JC.resolveDataBase("mmtf",h.toUpperCase(), +null);e=this.g.loadFormat}case 35:return null==e&&(e=this.g.pdbLoadLigandFormat),JV.JC.resolveDataBase(null,h,e);case 42:if(h.equals("?")&&null==(h=this.getDBID("PDB ID from EBI")))return null;j=b.lastIndexOf("/");if(b.startsWith("*dom/"))return h=b.substring(j+1),e=4b&&(b=1);this.acm.setPickingMode(b);e=JV.ActionManager.getPickingModeName(this.acm.getAtomPickingMode());this.g.setO("picking",e);if(null!=this.modelkit)switch(this.modelkit.setProperty("atompickingmode",e),this.acm.setPickingMode(b),b){case 1:b!= +c&&this.setModelKitMode(!1);break;case 8:case 35:this.modelkit.setProperty("bondpickingmode",a.toLowerCase())}if(!(null==f||0==f.length))switch(f=Character.toUpperCase(f.charAt(0))+(1==f.length?"":f.substring(1,2)),b){case 32:this.getModelkit(!1).setProperty("atomtype",f);break;case 33:this.setBooleanPropertyTok("bondPicking",603979814,!0);this.getModelkit(!1).setProperty("bondtype",f);break;default:JU.Logger.error("Bad picking mode: "+a+"_"+f)}}},"~S,~N");c(b,"getPickingMode",function(){return this.haveDisplay? +this.acm.getAtomPickingMode():0});c(b,"setPickingStyle",function(a,b){this.haveDisplay&&(null!=a&&(b=JV.ActionManager.getPickingStyleIndex(a)),0>b&&(b=0),this.acm.setPickingStyle(b),this.g.setO("pickingStyle",JV.ActionManager.getPickingStyleName(this.acm.getPickingStyle())))},"~S,~N");c(b,"getDrawHover",function(){return this.haveDisplay&&this.g.drawHover});c(b,"getAtomInfo",function(a){null==this.ptTemp&&(this.ptTemp=new JU.P3);return 0<=a?this.ms.getAtomInfo(a,null,this.ptTemp):this.shm.getShapePropertyIndex(6, +"pointInfo",-a)},"~N");c(b,"getAtomInfoXYZ",function(a,b){var c=this.ms.at[a];if(4==b)return this.getChimeMessenger().getInfoXYZ(c);null==this.ptTemp&&(this.ptTemp=new JU.P3);return c.getIdentityXYZ(this.ptTemp,b)},"~N,~N");c(b,"setSync",function(){this.sm.doSync()&&this.sm.setSync(null)});j(b,"setJmolCallbackListener",function(a){this.sm.cbl=a},"J.api.JmolCallbackListener");j(b,"setJmolStatusListener",function(a){this.sm.cbl=this.sm.jsl=a},"J.api.JmolStatusListener");c(b,"getStatusChanged",function(a){return null== +a?null:this.sm.getStatusChanged(a)},"~S");c(b,"menuEnabled",function(){return!this.g.disablePopupMenu&&null!=this.getPopupMenu()});c(b,"setStatusDragDropped",function(a,b,c,f,e){0==a&&(this.g.setO("_fileDropped",f),this.g.setUserVariable("doDrop",JS.SV.vT),this.g.setUserVariable("dropFileType",JS.SV.newS("")),this.g.setUserVariable("dropFileName",JS.SV.newS(f)));a=this.sm.setStatusDragDropped(a,b,c,f,e);b=this.getP("dropFileType").toString();0a.indexOf(":")){var b=this.fm.getAppletDocumentBase();""===b&&(b=this.fm.getFullPathName(!1));0<=b.indexOf("/")?b=b.substring(0, +b.lastIndexOf("/")+1):0<=b.indexOf("\\")&&(b=b.substring(0,b.lastIndexOf("\\")+1));a=b+a}JU.Logger.info("showUrl:"+a);this.sm.showUrl(a)}},"~S");c(b,"setMeshCreator",function(a){this.shm.loadShape(24);this.setShapeProperty(24,"meshCreator",a)},"~O");c(b,"showConsole",function(a){if(this.haveDisplay)try{null==this.appConsole&&a&&this.getConsole(),this.appConsole.setVisible(!0)}catch(b){}},"~B");c(b,"getConsole",function(){this.getProperty("DATA_API","getAppConsole",Boolean.TRUE);return this.appConsole}); +j(b,"getParameter",function(a){return this.getP(a)},"~S");c(b,"getP",function(a){return this.g.getParameter(a,!0)},"~S");c(b,"getPOrNull",function(a){return this.g.getParameter(a,!1)},"~S");c(b,"unsetProperty",function(a){a=a.toLowerCase();(a.equals("all")||a.equals("variables"))&&this.fm.setPathForAllFiles("");this.g.unsetUserVariable(a)},"~S");j(b,"notifyStatusReady",function(a){System.out.println("Jmol applet "+this.fullName+(a?" ready":" destroyed"));a||this.dispose();this.sm.setStatusAppletReady(this.fullName, +a)},"~B");j(b,"getBooleanProperty",function(a){a=a.toLowerCase();if(this.g.htBooleanParameterFlags.containsKey(a))return this.g.htBooleanParameterFlags.get(a).booleanValue();if(a.endsWith("p!")){if(null==this.acm)return!1;var b=this.acm.getPickingState().toLowerCase();a=a.substring(0,a.length-2)+";";return 0<=b.indexOf(a)}if(a.equalsIgnoreCase("executionPaused"))return null!=this.eval&&this.eval.isPaused();if(a.equalsIgnoreCase("executionStepping"))return null!=this.eval&&this.eval.isStepping();if(a.equalsIgnoreCase("haveBFactors"))return null!= +this.ms.getBFactors();if(a.equalsIgnoreCase("colorRasmol"))return this.cm.isDefaultColorRasmol;if(a.equalsIgnoreCase("frank"))return this.getShowFrank();if(a.equalsIgnoreCase("spinOn"))return this.tm.spinOn;if(a.equalsIgnoreCase("isNavigating"))return this.tm.isNavigating();if(a.equalsIgnoreCase("showSelections"))return this.selectionHalosEnabled;if(this.g.htUserVariables.containsKey(a)){b=this.g.getUserVariable(a);if(1073742335==b.tok)return!0;if(1073742334==b.tok)return!1}JU.Logger.error("vwr.getBooleanProperty("+ +a+") - unrecognized");return!1},"~S");j(b,"getInt",function(a){switch(a){case 553648132:return this.am.animationFps;case 553648139:return this.g.dotDensity;case 553648140:return this.g.dotScale;case 553648142:return this.g.helixStep;case 553648145:return this.g.infoFontSize;case 553648147:return this.g.labelPointerWidth;case 553648149:return this.g.meshScale;case 553648150:return this.g.minimizationReportSteps;case 553648153:return this.g.minPixelSelRadius;case 553648154:return this.g.percentVdwAtom; +case 553648157:return this.g.pickingSpinRate;case 553648166:return this.g.ribbonAspectRatio;case 536870922:return this.g.scriptDelay;case 553648152:return this.g.minimizationMaxAtoms;case 553648170:return this.g.smallMoleculeMaxAtoms;case 553648183:return this.g.strutSpacing;case 553648184:return this.stm.getUndoMax();case 553648185:return this.g.vectorTrail}JU.Logger.error("viewer.getInt("+JS.T.nameOf(a)+") - not listed");return 0},"~N");c(b,"getDelayMaximumMs",function(){return this.haveDisplay? +this.g.delayMaximumMs:1});c(b,"getHermiteLevel",function(){return this.tm.spinOn&&0c?JV.Viewer.checkIntRange(c,-10,-1):JV.Viewer.checkIntRange(c,0,100);this.gdata.setSpecularPower(c); +break;case 553648172:c=JV.Viewer.checkIntRange(-c,-10,-1);this.gdata.setSpecularPower(c);break;case 553648134:this.setMarBond(c);return;case 536870924:this.setBooleanPropertyTok(a,b,1==c);return;case 553648174:c=JV.Viewer.checkIntRange(c,0,100);this.gdata.setSpecularPercent(c);break;case 553648138:c=JV.Viewer.checkIntRange(c,0,100);this.gdata.setDiffusePercent(c);break;case 553648130:c=JV.Viewer.checkIntRange(c,0,100);this.gdata.setAmbientPercent(c);break;case 553648186:this.tm.zDepthToPercent(c); +break;case 553648188:this.tm.zSlabToPercent(c);break;case 554176526:this.tm.depthToPercent(c);break;case 554176565:this.tm.slabToPercent(c);break;case 553648190:this.g.zShadePower=c=Math.max(c,0);break;case 553648166:this.g.ribbonAspectRatio=c;break;case 553648157:this.g.pickingSpinRate=1>c?1:c;break;case 553648132:this.setAnimationFps(c);return;case 553648154:this.setPercentVdwAtom(c);break;case 553648143:this.g.hermiteLevel=c;break;case 553648141:case 553648161:case 553648160:case 553648162:case 553648164:break; +default:if(!this.g.htNonbooleanParameterValues.containsKey(a)){this.g.setUserVariable(a,JS.SV.newI(c));return}}this.g.setI(a,c)},"~S,~N,~N");b.checkIntRange=c(b,"checkIntRange",function(a,b,c){return ac?c:a},"~N,~N,~N");b.checkFloatRange=c(b,"checkFloatRange",function(a,b,c){return ac?c:a},"~N,~N,~N");j(b,"setBooleanProperty",function(a,b){if(!(null==a||0==a.length))if("_"==a.charAt(0))this.g.setB(a,b);else{var c=JS.T.getTokFromName(a);switch(JS.T.getParamType(c)){case 545259520:this.setStringPropertyTok(a, +c,"");break;case 553648128:this.setIntPropertyTok(a,c,b?1:0);break;case 570425344:this.setFloatPropertyTok(a,c,b?1:0);break;default:this.setBooleanPropertyTok(a,c,b)}}},"~S,~B");c(b,"setBooleanPropertyTok",function(a,b,c){var f=!0;switch(b){case 603979838:this.g.elementKey=c;this.getModelkit(!1).setProperty("setelementkey",Boolean.$valueOf(c));break;case 603979956:this.g.symmetryHermannMauguin=c;break;case 603979831:c=(new Boolean(c&JV.Viewer.isJS)).valueOf();this.g.doublePrecision=c;JV.Viewer.isHighPrecision= +this.g.doublePrecision;this.setBooleanPropertyTok("legacyJavaFloat",603979874,c);break;case 603979821:(this.g.checkCIR=c)&&this.checkCIR(!0);break;case 603979823:this.g.cipRule6Full=c;break;case 603979802:this.g.autoplayMovie=c;break;case 603979797:c=!1;this.g.allowAudio=c;break;case 603979892:this.g.noDelay=c;break;case 603979891:this.g.nboCharges=c;break;case 603979856:this.g.hiddenLinesDashed=c;break;case 603979886:this.g.multipleBondBananas=c;break;case 603979884:this.g.modulateOccupancy=c;break; +case 603979874:if(c||!this.g.doublePrecision)this.g.legacyJavaFloat=c;c=this.g.legacyJavaFloat;break;case 603979927:this.g.showModVecs=c;break;case 603979937:this.g.showUnitCellDetails=c;break;case 603979849:f=!1;break;case 603979972:this.g.vectorsCentered=c;break;case 603979810:this.g.cartoonBlocks=c;break;case 603979811:this.g.cartoonSteps=c;break;case 603979818:this.g.cartoonRibose=c;break;case 603979840:this.g.ellipsoidArrows=c;break;case 603979967:this.g.translucent=c;break;case 603979817:this.g.cartoonLadders= +c;break;case 603979968:b=this.g.twistedSheets;this.g.twistedSheets=c;b!=c&&this.checkCoordinatesChanged(null);break;case 603979820:this.gdata.setCel(c);break;case 603979816:this.g.cartoonFancy=c;break;case 603979934:this.g.showTiming=c;break;case 603979973:this.g.vectorSymmetry=c;break;case 603979867:this.g.isosurfaceKey=c;break;case 603979893:this.g.partialDots=c;break;case 603979872:this.g.legacyAutoBonding=c;break;case 603979826:this.g.defaultStructureDSSP=c;break;case 603979835:this.g.dsspCalcHydrogen= +c;break;case 603979782:(this.g.allowModelkit=c)||this.setModelKitMode(!1);break;case 603983903:this.setModelKitMode(c);break;case 603979887:this.g.multiProcessor=c&&1c.indexOf(""))&&this.showString(a+" = "+c,!1)},"~S,~B,~N");c(b,"showString",function(a,b){!JV.Viewer.isJS&&(this.isScriptQueued()&&(!this.isSilent|| +b)&&!"\x00".equals(a))&&JU.Logger.warn(a);this.scriptEcho(a)},"~S,~B");c(b,"getAllSettings",function(a){return this.getStateCreator().getAllSettings(a)},"~S");c(b,"getBindingInfo",function(a){return this.haveDisplay?this.acm.getBindingInfo(a):""},"~S");c(b,"getIsosurfacePropertySmoothing",function(a){return a?this.g.isosurfacePropertySmoothingPower:this.g.isosurfacePropertySmoothing?1:0},"~B");c(b,"setNavigationDepthPercent",function(a){this.tm.setNavigationDepthPercent(a);this.refresh(1,"set navigationDepth")}, +"~N");c(b,"getShowNavigationPoint",function(){return!this.g.navigationMode?!1:this.tm.isNavigating()&&!this.g.hideNavigationPoint||this.g.showNavigationPointAlways||this.getInMotion(!0)});j(b,"setPerspectiveDepth",function(a){this.tm.setPerspectiveDepth(a)},"~B");j(b,"setAxesOrientationRasmol",function(a){this.g.setB("axesOrientationRasmol",a);this.g.axesOrientationRasmol=a;this.reset(!0)},"~B");c(b,"setAxesScale",function(a,b){b=JV.Viewer.checkFloatRange(b,-100,100);570425345==a?this.g.axesOffset= +b:this.g.axesScale=b;this.axesAreTainted=!0},"~N,~N");c(b,"setAxesMode",function(a){this.g.axesMode=a;this.axesAreTainted=!0;switch(a){case 603979808:this.g.removeParam("axesmolecular");this.g.removeParam("axeswindow");this.g.setB("axesUnitcell",!0);a=2;break;case 603979804:this.g.removeParam("axesunitcell");this.g.removeParam("axeswindow");this.g.setB("axesMolecular",!0);a=1;break;case 603979809:this.g.removeParam("axesunitcell"),this.g.removeParam("axesmolecular"),this.g.setB("axesWindow",!0),a= +0}this.g.setI("axesMode",a)},"~N");c(b,"getSelectionHalosEnabled",function(){return this.selectionHalosEnabled});c(b,"setSelectionHalosEnabled",function(a){this.selectionHalosEnabled!=a&&(this.g.setB("selectionHalos",a),this.shm.loadShape(8),this.selectionHalosEnabled=a)},"~B");c(b,"getShowSelectedOnce",function(){var a=this.showSelected;this.showSelected=!1;return a});c(b,"setStrandCount",function(a,b){b=JV.Viewer.checkIntRange(b,0,20);switch(a){case 12:this.g.strandCountForStrands=b;break;case 13:this.g.strandCountForMeshRibbon= +b;break;default:this.g.strandCountForStrands=b,this.g.strandCountForMeshRibbon=b}this.g.setI("strandCount",b);this.g.setI("strandCountForStrands",this.g.strandCountForStrands);this.g.setI("strandCountForMeshRibbon",this.g.strandCountForMeshRibbon)},"~N,~N");c(b,"getStrandCount",function(a){return 12==a?this.g.strandCountForStrands:this.g.strandCountForMeshRibbon},"~N");c(b,"setNavigationMode",function(a){this.g.navigationMode=a;this.tm.setNavigationMode(a)},"~B");j(b,"setAutoBond",function(a){this.g.setB("autobond", +a);this.g.autoBond=a},"~B");c(b,"makeConnections",function(a,b,c,f,e,h,j,m,p,n){this.clearModelDependentObjects();this.clearMinimization();return this.ms.makeConnections(a,b,c,f,e,h,j,m,p,n)},"~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N");j(b,"rebond",function(){this.rebondState(!1)});c(b,"rebondState",function(a){this.clearModelDependentObjects();this.ms.deleteAllBonds();a=a&&this.g.legacyAutoBonding;this.ms.autoBondBs4(null,null,null,null,this.getMadBond(),a,null);this.addStateScript(a?"set legacyAutoBonding TRUE;connect;set legacyAutoBonding FALSE;": +"connect;",!1,!0)},"~B");j(b,"setPercentVdwAtom",function(a){this.g.setI("percentVdwAtom",a);this.g.percentVdwAtom=a;this.rd.value=a/100;this.rd.factorType=J.atomdata.RadiusData.EnumType.FACTOR;this.rd.vdwType=J.c.VDW.AUTO;this.shm.setShapeSizeBs(0,0,this.rd,null)},"~N");j(b,"getMadBond",function(){return 2*this.g.bondRadiusMilliAngstroms});j(b,"setShowHydrogens",function(a){this.g.setB("showHydrogens",a);this.g.showHydrogens=a},"~B");c(b,"setShowBbcage",function(a){this.setObjectMad10(32,"boundbox", +a?-4:0);this.g.setB("showBoundBox",a)},"~B");c(b,"getShowBbcage",function(){return 0!=this.getObjectMad10(4)});c(b,"setShowUnitCell",function(a){this.setObjectMad10(33,"unitcell",a?-2:0);this.g.setB("showUnitCell",a)},"~B");c(b,"getShowUnitCell",function(){return 0!=this.getObjectMad10(5)});c(b,"setShowAxes",function(a){this.setObjectMad10(34,"axes",a?-2:0);this.g.setB("showAxes",a)},"~B");c(b,"getShowAxes",function(){return 0!=this.getObjectMad10(1)});j(b,"setFrankOn",function(a){this.isPreviewOnly&& +(a=!1);this.frankOn=a;this.setObjectMad10(36,"frank",a?1:0)},"~B");c(b,"getShowFrank",function(){return this.isPreviewOnly||this.isApplet&&this.creatingImage?!1:this.isSignedApplet&&!this.isSignedAppletLocal&&!JV.Viewer.isJS||this.frankOn});j(b,"setShowMeasurements",function(a){this.g.setB("showMeasurements",a);this.g.showMeasurements=a},"~B");c(b,"setUnits",function(a,b){var c="default".equals(a);(!b||!c)&&this.g.setUnits(a);b&&this.setShapeProperty(6,"reformatDistances",a)},"~S,~B");j(b,"setRasmolDefaults", +function(){this.setDefaultsType("RasMol")});j(b,"setJmolDefaults",function(){this.setDefaultsType("Jmol")});c(b,"setDefaultsType",function(a){a.equalsIgnoreCase("RasMol")?this.stm.setRasMolDefaults():a.equalsIgnoreCase("PyMOL")?this.stm.setPyMOLDefaults():(this.stm.setJmolDefaults(),this.setIntProperty("bondingVersion",0),this.shm.setShapeSizeBs(0,0,this.rd,this.getAllAtoms()))},"~S");c(b,"setAntialias",function(a,b){var c=!1;switch(a){case 603979786:c=this.g.antialiasDisplay!=b;this.g.antialiasDisplay= +b;break;case 603979790:c=this.g.antialiasTranslucent!=b;this.g.antialiasTranslucent=b;break;case 603979788:this.g.antialiasImages=b;return}c&&(this.resizeImage(0,0,!1,!1,!0),this.refresh(3,"Viewer:setAntialias()"))},"~N,~B");c(b,"allocTempPoints",function(a){return this.tempArray.allocTempPoints(a)},"~N");c(b,"freeTempPoints",function(a){this.tempArray.freeTempPoints(a)},"~A");c(b,"allocTempScreens",function(a){return this.tempArray.allocTempScreens(a)},"~N");c(b,"freeTempScreens",function(a){this.tempArray.freeTempScreens(a)}, +"~A");c(b,"allocTempEnum",function(a){return this.tempArray.allocTempEnum(a)},"~N");c(b,"freeTempEnum",function(a){this.tempArray.freeTempEnum(a)},"~A");c(b,"getFont3D",function(a,b,c){return this.gdata.getFont3DFSS(a,b,c)},"~S,~S,~N");c(b,"getAtomGroupQuaternions",function(a,b){return this.ms.getAtomGroupQuaternions(a,b,this.getQuaternionFrame())},"JU.BS,~N");c(b,"setStereoMode",function(a,b,c){this.setFloatProperty("stereoDegrees",c);this.setBooleanPropertyTok("greyscaleRendering",603979850,b.isBiColor()); +null!=a?this.tm.setStereoMode2(a):this.tm.setStereoMode(b)},"~A,J.c.STER,~N");c(b,"getChimeInfo",function(a){return this.getPropertyManager().getChimeInfo(a,this.bsA())},"~N");c(b,"getModelFileInfo",function(){return this.getPropertyManager().getModelFileInfo(this.getVisibleFramesBitSet())});c(b,"getModelFileInfoAll",function(){return this.getPropertyManager().getModelFileInfo(null)});c(b,"showEditor",function(a){var b=this.getProperty("DATA_API","getScriptEditor",Boolean.TRUE);null!=b&&b.show(a)}, +"~A");c(b,"getPropertyManager",function(){null==this.pm&&(this.pm=J.api.Interface.getInterface("JV.PropertyManager",this,"prop")).setViewer(this);return this.pm});c(b,"setTainted",function(a){this.isTainted=this.axesAreTainted=a&&(this.refreshing||this.creatingImage)},"~B");c(b,"checkObjectClicked",function(a,b,c){return this.shm.checkObjectClicked(a,b,c,this.getVisibleFramesBitSet(),this.g.drawPicking)},"~N,~N,~N");c(b,"checkObjectHovered",function(a,b){return 0<=a&&null!=this.shm&&this.shm.checkObjectHovered(a, +b,this.getVisibleFramesBitSet(),this.getBondsPickable())},"~N,~N");c(b,"checkObjectDragged",function(a,b,c,f,e){var h=0;switch(this.getPickingMode()){case 2:h=5;break;case 4:h=22}return this.shm.checkObjectDragged(a,b,c,f,e,this.getVisibleFramesBitSet(),h)?(this.refresh(1,"checkObjectDragged"),22==h&&this.scriptEcho(this.getShapeProperty(22,"command")),!0):!1},"~N,~N,~N,~N,~N");c(b,"rotateAxisAngleAtCenter",function(a,b,c,f,e,h,j){(a=this.tm.rotateAxisAngleAtCenter(a,b,c,f,e,h,j))&&this.setSync(); +return a},"J.api.JmolScriptEvaluator,JU.P3,JU.V3,~N,~N,~B,JU.BS");c(b,"rotateAboutPointsInternal",function(a,b,c,f,e,h,j,m,p,n,q,r){null==a&&(a=this.eval);if(this.headless){if(h&&3.4028235E38==e)return!1;h=!1}(a=this.tm.rotateAboutPointsInternal(a,b,c,f,e,!1,h,j,!1,m,p,n,q,r))&&this.setSync();return a},"J.api.JmolScriptEvaluator,JU.P3,JU.P3,~N,~N,~B,JU.BS,JU.V3,JU.Lst,~A,JU.M4,~B");c(b,"startSpinningAxis",function(a,b,c){this.tm.spinOn||this.tm.navOn?(this.tm.setSpinOff(),this.tm.setNavOn(!1)):this.tm.rotateAboutPointsInternal(null, +a,b,this.g.pickingSpinRate,3.4028235E38,c,!0,null,!1,null,null,null,null,!1)},"JU.T3,JU.T3,~B");c(b,"getModelDipole",function(){return this.ms.getModelDipole(this.am.cmi)});c(b,"calculateMolecularDipole",function(a){try{return this.ms.calculateMolecularDipole(this.am.cmi,a)}catch(b){if(F(b,"JV.JmolAsyncException"))return null!=this.eval&&this.eval.loadFileResourceAsync(b.getFileName()),null;throw b;}},"JU.BS");c(b,"setDefaultLattice",function(a){Float.isNaN(a.x+a.y+a.z)||this.g.ptDefaultLattice.setT(a); +this.g.setO("defaultLattice",JU.Escape.eP(a))},"JU.P3");c(b,"getDefaultLattice",function(){return this.g.ptDefaultLattice});c(b,"getModelExtract",function(a,b,c,f){return this.getPropertyManager().getModelExtract(this.getAtomBitSet(a),b,c,f,!1)},"~O,~B,~B,~S");j(b,"getData",function(a,b){return this.getModelFileData(a,b,!0)},"~S,~S");c(b,"getModelFileData",function(a,b,c){return this.getPropertyManager().getAtomData(a,b,c)},"~S,~S,~B");c(b,"getModelCml",function(a,b,c,f){return this.getPropertyManager().getModelCml(a, +b,c,f,!1)},"JU.BS,~N,~B,~B");c(b,"getPdbAtomData",function(a,b,c,f){return this.getPropertyManager().getPdbAtomData(null==a?this.bsA():a,b,c,f,!1)},"JU.BS,JU.OC,~B,~B");c(b,"isJmolDataFrame",function(){return this.ms.isJmolDataFrameForModel(this.am.cmi)});c(b,"setFrameTitle",function(a,b){this.ms.setFrameTitle(JU.BSUtil.newAndSetBit(a),b)},"~N,~S");c(b,"setFrameTitleObj",function(a){this.shm.loadShape(31);this.ms.setFrameTitle(this.getVisibleFramesBitSet(),a)},"~O");c(b,"getFrameTitle",function(){return this.ms.getFrameTitle(this.am.cmi)}); +c(b,"setAtomProperty",function(a,b,c,f,e,h,j){1648363544==b&&this.shm.deleteVdwDependentShapes(a);this.clearMinimization();this.ms.setAtomProperty(a,b,c,f,e,h,j);switch(b){case 1086326789:this.setModelkitPropertySafely("updateatomkeys",a);case 1111492609:case 1111492610:case 1111492611:case 1111492612:case 1111492613:case 1111492614:case 1111490577:case 1111490578:case 1111490579:this.refreshMeasures(!0)}},"JU.BS,~N,~N,~N,~S,~A,~A");c(b,"checkCoordinatesChanged",function(a){this.ms.recalculatePositionDependentQuantities(a, +null);this.refreshMeasures(!0)},"JU.BS");c(b,"setAtomCoords",function(a,b,c){if(!a.isEmpty()){var f=this.ms.at[a.nextSetBit(0)],e=a.cardinality();this.sm.setStatusStructureModified(f.i,f.mi,3,"setAtomCoords",e,a);this.ms.setAtomCoords(a,b,c);this.setStatusAtomMoved(!0,a);this.sm.setStatusStructureModified(f.i,f.mi,-3,"OK",e,a)}},"JU.BS,~N,~O");c(b,"setAtomCoordsRelative",function(a,b){null==b&&(b=this.bsA());if(!b.isEmpty()){var c=0!=a.lengthSquared(),f=this.ms.at[b.nextSetBit(0)],e=b.cardinality(); +c&&this.sm.setStatusStructureModified(f.i,f.mi,3,"setAtomCoords",e,b);this.ms.setAtomCoordsRelative(a,b);this.checkMinimization();c&&(this.setStatusAtomMoved(!1,b),this.sm.setStatusStructureModified(f.i,f.mi,-3,"OK",e,b))}},"JU.T3,JU.BS");c(b,"invertAtomCoord",function(a,b,c,f,e){if(0<=f){c=JU.JmolMolecule.getBranchesForInversion(this.ms.at,f,this.ms.getMoleculeBitSetForAtom(f));var h=c.cardinality();switch(h){case 0:case 1:return;case 3:case 4:for(var j=E(h,0),m=E(h,0),p=0,n=c.nextSetBit(0);0<=n;n= +c.nextSetBit(n+1),p++)j[p]=this.getBranchBitSet(n,f,!0).cardinality(),m[p]=n;for(p=0;p=q&&c.get(m[n])&&(r=m[n],q=j[n]);c.clear(r)}}e&&!c.isEmpty()&&this.undoMoveActionClear(f,2,!0)}h=c.cardinality();0!=h&&(j=this.ms.at[c.nextSetBit(0)],this.sm.setStatusStructureModified(j.i,j.mi,3,"invertAtomCoords",h,c),this.ms.invertSelected(a,b,f,c),this.setStatusAtomMoved(!0,c),this.sm.setStatusStructureModified(j.i,j.mi,-3,"OK",h,c),e&&this.setStatusAtomPicked(f, +"inverted: "+JU.Escape.eBS(c),null,!1))},"JU.P3,JU.P4,JU.BS,~N,~B");c(b,"invertSelected",function(a,b,c,f){null==f&&(f=this.bsA());f.isEmpty()||(this.ms.invertSelected(a,b,c,f),this.setStatusAtomMoved(!0,f))},"JU.P3,JU.P4,~N,JU.BS");c(b,"moveAtoms",function(a,b,c,f,e,h,j,m,p){if(!j.isEmpty()){var n=this.getMotionFixedAtoms(null,null);if(!j.intersects(n)){p=p?this.getOperativeSymmetry():null;var q=null;null!=p&&(q=this.ms.saveAtomPositions());this.ms.moveAtoms(a,b,c,f,j,e,h,m);null!=p&&this.getModelkit(!1).checkMovedAtoms(n, +j,q);this.setStatusAtomMoved(!0,j)}}},"JU.M4,JU.M3,JU.M3,JU.V3,JU.P3,~B,JU.BS,~B,~B");c(b,"moveSelectedXY",function(a,b,c){this.moveSelected(a,b,-2147483648,-2147483648,-2147483648,null,null,null,!1,!1,c)},"~N,~N,~N");c(b,"moveSelected",function(a,b,c,f,e,h,j,m,p,n,q){if(0==c&&null==m||this.isJmolDataFrame())return 0;if(null==m){-2147483648==f&&null!=this.modelkit&&this.setModelkitPropertySafely("rotatebondindex",Integer.$valueOf(-2147483648));if(-2147483648==a)return this.showSelected=!0,this.movableBitSet= +this.setMovableBitSet(null,!n),this.shm.loadShape(8),this.refresh(6,"moveSelected"),0;if(2147483647==a){if(!this.showSelected)return 0;this.showSelected=!1;this.movableBitSet=null;this.refresh(6,"moveSelected");return 0}}if(this.movingSelected)return 0;this.movingSelected=!0;this.stopMinimization();null==m&&-2147483648!=f&&null!=this.modelkit&&null!=this.modelkit.getProperty("rotatebondindex")?this.modelkit.actionRotateBond(a,b,f,e,0!=(q&16)):(null==h&&(h=this.bsA()),f=h.nextSetBit(0),h=this.setMovableBitSet(h, +!n),h.isEmpty()?(h.set(f),this.sm.setStatusStructureModified(f,this.getModelIndexForAtom(f),-3,"FAILED",1,h)):p?(j=null==j?this.ms.getAtomSetCenter(h):j,null==m&&(this.tm.finalizeTransformParameters(),m=this.g.antialiasDisplay?2:1,this.tm.transformPt3f(j,this.ptScreen),-2147483648!=c?this.ptScreenNew.set(this.ptScreen.x,this.ptScreen.y,this.ptScreen.z+c):this.ptScreenNew.set(this.ptScreen.x+a*m,this.ptScreen.y+b*m,this.ptScreen.z),this.tm.unTransformPoint(this.ptScreenNew,this.ptNew),m=this.ptNew, +null!=this.getOperativeSymmetry()&&(m.sub(j),m.add(this.ms.at[f]),this.getModelkit(!1).cmdAssignMoveAtoms(h,f,m,null,!0,!n))),Float.isNaN(m.x)||(m.sub(j),this.setAtomCoordsRelative(m,h))):this.tm.rotateXYBy(a,b,h));this.refresh(2,"");this.movingSelected=!1;return null==h?0:h.cardinality()},"~N,~N,~N,~N,~N,JU.BS,JU.P3,JU.P3,~B,~B,~N");c(b,"highlightBond",function(a,b,c,f){if(this.hoverEnabled){b=null;if(0<=a){var e=this.ms.bo[a];b=JU.BSUtil.newAndSetBit(e.atom2.i);b.set(e.atom1.i)}this.highlight(b); +this.getModelkit(!1);this.setModelkitPropertySafely("screenxy",E(-1,[c,f]));this.setModelkitPropertySafely("bondindex",Integer.$valueOf(a));a=this.setModelkitPropertySafely("hoverlabel",Integer.$valueOf(-2-a));null!=a&&this.hoverOnPt(c,f,a,null,null);this.refresh(3,"highlightBond")}},"~N,~N,~N,~N");c(b,"highlight",function(a){this.atomHighlighted=null!=a&&1==a.cardinality()?a.nextSetBit(0):-1;null==a?this.setCursor(0):(this.shm.loadShape(8),this.setCursor(12));this.setModelkitPropertySafely("highlight", +a);this.setShapeProperty(8,"highlight",a)},"JU.BS");c(b,"refreshMeasures",function(a){this.setShapeProperty(6,"refresh",null);this.setStatusMeasuring("refreshed",-3,"",0);a&&this.stopMinimization()},"~B");c(b,"functionXY",function(a,b,c){var f=null;if(0==a.indexOf("file:"))f=this.getFileAsString3(a.substring(5),!1,null);else if(0!=a.indexOf("data2d_"))return this.sm.functionXY(a,b,c);b=Math.abs(b);c=Math.abs(c);if(null==f){a=this.getDataObj(a,null,2);if(null!=a)return a;f=""}a=K(b,c,0);var e=K(b* +c,0);JU.Parser.parseStringInfestedFloatArray(f,null,e);for(var h=f=0;fa||0==this.ms.ac)return null;a=this.getModelNumberDotted(a)}return this.getModelExtract(a,!0,!1,"V2000")},"~S");c(b,"getNMRPredict",function(a){a=a.toUpperCase();if(a.equals("H")||a.equals("1H")||a.equals(""))a="H1";else if(a.equals("C")||a.equals("13C"))a="C13";if(!a.equals("NONE")){if(!a.equals("C13")&&!a.equals("H1"))return"Type must be H1 or C13"; +var b=this.getModelExtract("selected",!0,!1,"V2000"),c=b.indexOf("\n");if(0>c)return null;b="Jmol "+JV.Viewer.version_date+b.substring(c);if(this.isApplet)return this.showUrl(this.g.nmrUrlFormat+b),"opening "+this.g.nmrUrlFormat}this.syncScript("true","*",0);this.syncScript(a+"Simulate:",".",0);return"sending request to JSpecView"},"~S");c(b,"getHelp",function(a){0>this.g.helpPath.indexOf("?")?(0c)return 0;this.clearModelDependentObjects();var f=this.ms.at[c];if(null==f)return 0;var e=f.mi;if(b)return this.deleteModels(e,a);this.sm.setStatusStructureModified(c,f.mi,4,"deleting atoms "+a,a.cardinality(),a);this.ms.deleteAtoms(a); +f=this.slm.deleteAtoms(a);this.setTainted(!0);this.sm.setStatusStructureModified(c,e,-4,"OK",f,a);return f},"JU.BS,~B");c(b,"deleteModels",function(a,b){var c=null==b?JU.BSUtil.newAndSetBit(a):this.ms.getModelBS(b,!1);this.clearModelDependentObjects();b=this.getModelUndeletedAtomsBitSetBs(c);var f=b.cardinality(),e=this.am.cmi;this.setCurrentModelIndexClear(0,!1);this.am.setAnimationOn(!1);var h=JU.BSUtil.copy(this.slm.bsDeleted),c=this.ms.deleteModels(c);if(null==c)return this.setCurrentModelIndexClear(e, +!1),0;this.sm.setStatusStructureModified(-1,a,5,"deleting model "+this.getModelNumberDotted(a),f,b);this.slm.processDeletedModelAtoms(c);null!=this.eval&&this.eval.deleteAtomsInVariables(c);this.setAnimationRange(0,0);this.clearRepaintManager(-1);this.am.clear();this.am.initializePointers(1);this.setCurrentModelIndexClear(1this.currentShapeID)return"";this.shm.releaseShape(this.currentShapeID);this.clearRepaintManager(this.currentShapeID);return JV.JC.getShapeClassName(this.currentShapeID,!1)+" "+this.currentShapeState});c(b,"handleError",function(a,b){try{b&&this.zapMsg(""+a),this.undoMoveAction(4165,-2),0==JU.Logger.getLogLevel()&&JU.Logger.setLogLevel(4),this.setCursor(0),this.setBooleanPropertyTok("refreshing",603979900,!0),this.fm.setPathForAllFiles(""), +JU.Logger.error("vwr handling error condition: "+a+" "),this.notifyError("Error","doClear="+b+"; "+a,""+a)}catch(c){try{JU.Logger.error("Could not notify error "+a+": due to "+c)}catch(f){}}},"Throwable,~B");c(b,"getFunctions",function(a){return a?JV.Viewer.staticFunctions:this.localFunctions},"~B");c(b,"removeFunction",function(a){a=a.toLowerCase();null!=this.getFunction(a)&&(JV.Viewer.staticFunctions.remove(a),this.localFunctions.remove(a))},"~S");c(b,"getFunction",function(a){if(null==a)return null; +a=(JV.Viewer.isStaticFunction(a)?JV.Viewer.staticFunctions:this.localFunctions).get(a);return null==a||null==a.geTokens()?null:a},"~S");b.isStaticFunction=c(b,"isStaticFunction",function(a){return a.startsWith("static_")},"~S");c(b,"isFunction",function(a){return(JV.Viewer.isStaticFunction(a)?JV.Viewer.staticFunctions:this.localFunctions).containsKey(a)},"~S");c(b,"clearFunctions",function(){JV.Viewer.staticFunctions.clear();this.localFunctions.clear()});c(b,"addFunction",function(a){var b=a.getName(); +(JV.Viewer.isStaticFunction(b)?JV.Viewer.staticFunctions:this.localFunctions).put(b,a)},"J.api.JmolScriptFunction");c(b,"getFunctionCalls",function(a){return this.getStateCreator().getFunctionCalls(a)},"~S");c(b,"checkPrivateKey",function(a){return a==this.privateKey},"~N");c(b,"bindAction",function(a,b){this.haveDisplay&&this.acm.bind(a,b)},"~S,~S");c(b,"unBindAction",function(a,b){this.haveDisplay&&this.acm.unbindAction(a,b)},"~S,~S");c(b,"calculateStruts",function(a,b){return this.ms.calculateStruts(null== +a?this.bsA():a,null==b?this.bsA():b)},"JU.BS,JU.BS");c(b,"getPreserveState",function(){return this.g.preserveState&&null!=this.scm});c(b,"isKiosk",function(){return this.$isKiosk});c(b,"hasFocus",function(){return this.haveDisplay&&(this.$isKiosk||this.apiPlatform.hasFocus(this.display))});c(b,"setFocus",function(){this.haveDisplay&&!this.apiPlatform.hasFocus(this.display)&&this.apiPlatform.requestFocusInWindow(this.display)});c(b,"stopMinimization",function(){null!=this.minimizer&&this.minimizer.setProperty("stop", +null)});c(b,"clearMinimization",function(){null!=this.minimizer&&this.minimizer.setProperty("clear",null)});c(b,"getMinimizationInfo",function(){return null==this.minimizer?"":this.minimizer.getProperty("log",0)});c(b,"checkMinimization",function(){this.refreshMeasures(!0);if(this.g.monitorEnergy){try{this.minimize(null,0,0,this.getFrameAtoms(),null,null,0,1)}catch(a){if(!F(a,Exception))throw a;}this.echoMessage(this.getP("_minimizationForceField")+" Energy = "+this.getP("_minimizationEnergy"))}}); +c(b,"minimize",function(a,b,c,f,e,h,j,m){var p=null!=f;p&&(m|=2);var n=0!=(m&16),q=0!=(m&256),r=0!=(m&1),s=0!=(m&8),u=0!=(m&64),v=u||0!=(m&32),w=null!=e;this.isModelKitOpen()&&this.setModelkitPropertySafely("constraint",null);null==h&&(h=this.getFrameAtoms());!s&&(!n&&p&&!w&&!v)&&(w=JU.BSUtil.copy(h),e=JU.BSUtil.copy(w),e.andNot(f),f=w,w=!0);p?s||f.and(h):(f=this.getThisModelAtoms(),v&&f.and(this.bsA()));if(!f.isEmpty())if(p=q||!v?JU.BSUtil.copy(this.ms.am[this.ms.at[f.nextSetBit(0)].mi].bsAsymmetricUnit): +null,q&&null==p)this.scriptStatusMsg("MODELKIT MINIMIZE is only applicable to crystal structures.","minimization: not a crystal structure");else try{if(q)this.getModelkit(!1).cmdMinimize(a,p,b,c,j,m);else{var z=null==p?this.g.forceField:"UFF";this.getModelForAtomIndex(f.nextSetBit(0)).auxiliaryInfo.put("dimension","3D");s&&(h=f);var A=JU.BSUtil.copy(w?e:this.slm.getMotionFixedAtoms()),B=!A.isEmpty();B&&f.andNot(A);var C=null!=p&&q?this.getThisModelAtoms():v||!B?new JU.BS:this.ms.getAtomsWithinRadius(0>= +j?5:j,f,!0,null,null);C.andNot(f);B?A.and(C):A=C;A.and(h);m|=(B?4:0)|(this.getBooleanProperty("minimizationSilent")?1:0);if(!s||!this.getBoolean(603979962)){if(s)try{r||JU.Logger.info("Minimizing "+f.cardinality()+" atoms"),this.getMinimizer(!0).minimize(b,c,f,A,null,m,"UFF")}catch(D){if(F(D,Exception))JU.Logger.error("Minimization error: "+D.toString()),D.printStackTrace();else throw D;}if(n){var E=this.addHydrogens(f,m);s||f.or(E)}var H=f.cardinality();if(z.equals("MMFF")&&H>this.g.minimizationMaxAtoms)this.scriptStatusMsg("Too many atoms for minimization ("+ +H+">"+this.g.minimizationMaxAtoms+"); use 'set minimizationMaxAtoms' to increase this limit","minimization: too many atoms");else if(u&&(A.or(this.ms.getConnectingAtoms(f,A)),f.andNot(A)),r||JU.Logger.info("Minimizing "+f.cardinality()+" atoms"),this.getMinimizer(!0).minimize(b,c,f,A,p,m,s?"MMFF":z),s){this.g.forceField="MMFF";this.setHydrogens(f);var I=this.getMinimizer(!1).getForceFieldUsed();null!=I&&this.showString("Minimized by Jmol using "+I,!1)}}}}catch(K){if(F(K,"JV.JmolAsyncException"))null!= +a&&a.loadFileResourceAsync(K.getFileName());else if(F(K,Exception))a=K,JU.Logger.error("Minimization error: "+a.toString()),a.printStackTrace();else throw K;}},"J.api.JmolScriptEvaluator,~N,~N,JU.BS,JU.BS,JU.BS,~N,~N");c(b,"setHydrogens",function(a){for(var b=E(1,0),b=this.ms.calculateHydrogens(a,b,null,2056),c=a.nextSetBit(0);0<=c;c=a.nextSetBit(c+1)){var f=b[c];if(!(null==f||0==f.length))for(var e=this.ms.at[c],h=e.bonds,j=0,m=0,p=e.getBondCount();jthis.am.cmi)return new JU.BS;null==b&&(b=new JU.BS);b.or(this.slm.getMotionFixedAtoms());b.and(this.getThisModelAtoms());null==a&&(a=this.getOperativeSymmetry());null!=a&&null!=this.getModelkit(!1)&&this.modelkit.addLockedAtoms(a, +b);return b},"J.api.SymmetryInterface,JU.BS");c(b,"getAtomicPropertyState",function(a,b,c,f,e){this.getStateCreator().getAtomicPropertyStateBuffer(a,b,c,f,e)},"JU.SB,~N,JU.BS,~S,~A");c(b,"getCenterAndPoints",function(a,b){return this.ms.getCenterAndPoints(a,b)},"JU.Lst,~B");c(b,"writeFileData",function(a,b,c,f){return this.getOutputManager().writeFileData(a,b,c,f)},"~S,~S,~N,~A");c(b,"getPdbData",function(a,b,c,f,e,h){return this.getPropertyManager().getPdbData(a,b,null==c?this.bsA():c,f,e,h)},"~N,~S,JU.BS,~A,JU.OC,~B"); +c(b,"getGroupsWithin",function(a,b){return this.ms.getGroupsWithin(a,b)},"~N,JU.BS");c(b,"setShapeSize",function(a,b,c){null==c&&(c=this.bsA());this.shm.setShapeSizeBs(a,b,null,c)},"~N,~N,JU.BS");c(b,"setShapeProperty",function(a,b,c){0<=a&&this.shm.setShapePropertyBs(a,b,c,null)},"~N,~S,~O");c(b,"getShapeProperty",function(a,b){return this.shm.getShapePropertyIndex(a,b,-2147483648)},"~N,~S");c(b,"getShapePropertyAsInt",function(a,b){var c=this.getShapeProperty(a,b);return null==c||!z(c,Integer)? +-2147483648:c.intValue()},"~N,~S");c(b,"setModelVisibility",function(){null!=this.shm&&this.shm.setModelVisibility()});c(b,"resetShapes",function(a){this.shm.resetShapes(!a);a&&(this.shm.loadDefaultShapes(this.ms),this.clearRepaintManager(-1))},"~B");c(b,"setParallel",function(a){return this.$isParallel=this.g.multiProcessor&&a},"~B");c(b,"isParallel",function(){return this.g.multiProcessor&&this.$isParallel});c(b,"undoMoveAction",function(a,b){return this.g.preserveState?this.getStateCreator().undoMoveAction(a, +b):0},"~N,~N");c(b,"undoMoveActionClear",function(a,b,c){this.g.preserveState&&null==this.getOperativeSymmetry()&&this.getStateCreator().undoMoveActionClear(a,b,c)},"~N,~N,~B");c(b,"moveAtomWithHydrogens",function(a,b,c,f,e,h){this.stopMinimization();var j=null!=e&&0==b,m=this.ms.at[a];null==h&&(h=JU.BSUtil.newAndSetBit(a),(null==this.getOperativeSymmetry()||this.isModelKitOpen()&&!this.modelkit.hasConstraint(a,!0,!1))&&!j&&this.ms.addConnectedHAtoms(m,h));return this.moveSelected(b,c,f,-2147483648, +-2147483648,h,m,e,!0,!0,0)},"~N,~N,~N,~N,JU.P3,JU.BS");c(b,"isModelPDB",function(a){return this.ms.am[a].isBioModel},"~N");j(b,"deleteMeasurement",function(a){this.setShapeProperty(6,"delete",Integer.$valueOf(a))},"~N");j(b,"getSmiles",function(a){return this.getSmilesOpt(a,-1,-1,16|(null==a&&JU.Logger.debugging?131072:0),null)},"JU.BS");j(b,"getOpenSmiles",function(a){return this.getSmilesOpt(a,-1,-1,5|(null==a&&JU.Logger.debugging?131072:0),"/open///")},"JU.BS");c(b,"getBioSmiles",function(a){return this.getSmilesOpt(a, +-1,-1,24117248|(JU.Logger.debugging?131072:0),null)},"JU.BS");c(b,"getSmilesOpt",function(a,b,c,f,e){var h=17825792==(f&17825792)?JV.Viewer.getJmolVersion()+" "+this.getModelName(this.am.cmi):e,j=this.ms.at;null==a&&(0>b||0>c?a=this.bsA():(1048576==(f&1048576)&&(b>c&&(a=b,b=c,c=a),b=j[b].group.firstAtomIndex,c=j[c].group.lastAtomIndex),a=new JU.BS,a.setBits(b,c+1)));f|=this.isModel2D(a)?134217728:0;b=this.getSmilesMatcher();return JV.JC.isSmilesCanonical(e)?(f=b.getSmiles(j,this.ms.ac,a,"/noAromatic/", +f),this.getChemicalInfo(f,"smiles",null).trim()):b.getSmiles(j,this.ms.ac,a,h,f)},"JU.BS,~N,~N,~N,~S");c(b,"isModel2D",function(a){a=this.getModelForAtomIndex(a.nextSetBit(0));return null!=a&&"2D".equals(a.auxiliaryInfo.get("dimension"))},"JU.BS");c(b,"alert",function(a){this.prompt(a,null,null,!0)},"~S");c(b,"prompt",function(a,b,c,f){return this.$isKiosk?"null":this.apiPlatform.prompt(a,b,c,f)},"~S,~S,~A,~B");c(b,"dialogAsk",function(a,b){return prompt(a,b)},"~S,~S,java.util.Map");c(b,"initializeExporter", +function(a){var b=a.get("type").equals("JS");if(b){if(null!=this.jsExporter3D)return this.jsExporter3D.initializeOutput(this,this.privateKey,a),this.jsExporter3D}else{var c=a.get("fileName"),f=a.get("fullPath"),c=this.getOutputChannel(c,f);if(null==c)return null;a.put("outputChannel",c)}c=J.api.Interface.getOption("export.Export3D",this,"export");if(null==c)return null;a=c.initializeExporter(this,this.privateKey,this.gdata,a);b&&null!=a&&(this.jsExporter3D=c);return null==a?null:c},"java.util.Map"); +c(b,"getMouseEnabled",function(){return this.refreshing&&!this.creatingImage});j(b,"calcAtomsMinMax",function(a,b){this.ms.calcAtomsMinMax(a,b)},"JU.BS,JU.BoxInfo");c(b,"getObjectMap",function(a,b){switch(b.charCodeAt(0)){case 123:null!=this.getScriptManager()&&(null!=this.definedAtomSets&&a.putAll(this.definedAtomSets),JS.T.getTokensType(a,2097152));break;case 36:case 48:this.shm.getObjectMap(a,"$"==b)}},"java.util.Map,~S");c(b,"setPicked",function(a,b){var c=null,f=null;0<=a&&(b&&this.setPicked(-1, +!1),this.g.setI("_atompicked",a),c=this.g.getParam("picked",!0),f=this.g.getParam("pickedList",!0));if(null==c||10!=c.tok)c=JS.SV.newV(10,new JU.BS),f=JS.SV.getVariableList(new JU.Lst),this.g.setUserVariable("picked",c),this.g.setUserVariable("pickedList",f);0>a||(JS.SV.getBitSet(c,!1).set(a),c=f.pushPop(null,null),10==c.tok&&f.pushPop(null,c),(10!=c.tok||!c.value.get(a))&&f.pushPop(null,JS.SV.newV(10,JU.BSUtil.newAndSetBit(a))))},"~N,~B");j(b,"runScript",function(a){return""+this.evaluateExpression(w(-1, +[w(-1,[JS.T.tokenScript,JS.T.tokenLeftParen,JS.SV.newS(a),JS.T.tokenRightParen])]))},"~S");j(b,"runScriptCautiously",function(a){var b=new JU.SB;try{if(null==this.getScriptManager())return null;this.eval.runScriptBuffer(a,b,!1)}catch(c){if(F(c,Exception))return this.eval.getErrorMessage();throw c;}return b.toString()},"~S");c(b,"setFrameDelayMs",function(a){this.ms.setFrameDelayMs(a,this.getVisibleFramesBitSet())},"~N");c(b,"getBaseModelBitSet",function(){return this.ms.getModelAtomBitSetIncludingDeleted(this.getJDXBaseModelIndex(this.am.cmi), +!0)});c(b,"clearTimeouts",function(){null!=this.timeouts&&J.thread.TimeoutThread.clear(this.timeouts)});c(b,"setTimeout",function(a,b,c){this.haveDisplay&&(!this.headless&&!this.autoExit)&&(null==a?this.clearTimeouts():(null==this.timeouts&&(this.timeouts=new java.util.Hashtable),J.thread.TimeoutThread.setTimeout(this,this.timeouts,a,b,c)))},"~S,~N,~S");c(b,"triggerTimeout",function(a){this.haveDisplay&&null!=this.timeouts&&J.thread.TimeoutThread.trigger(this.timeouts,a)},"~S");c(b,"clearTimeout", +function(a){this.setTimeout(a,0,null)},"~S");c(b,"showTimeout",function(a){return this.haveDisplay?J.thread.TimeoutThread.showTimeout(this.timeouts,a):""},"~S");c(b,"getOrCalcPartialCharges",function(a,b){null==a&&(a=this.bsA());a=JU.BSUtil.copy(a);JU.BSUtil.andNot(a,b);JU.BSUtil.andNot(a,this.ms.bsPartialCharges);a.isEmpty()||this.calculatePartialCharges(a);return this.ms.getPartialCharges()},"JU.BS,JU.BS");c(b,"calculatePartialCharges",function(a){if(null==a||a.isEmpty())a=this.getFrameAtoms(); +a.isEmpty()||(JU.Logger.info("Calculating MMFF94 partial charges for "+a.cardinality()+" atoms"),this.getMinimizer(!0).calculatePartialCharges(this.ms,a,null))},"JU.BS");c(b,"setCurrentModelID",function(a){var b=this.am.cmi;0<=b&&this.ms.setInfo(b,"modelID",a)},"~S");c(b,"cacheClear",function(){this.fm.cacheClear();this.ligandModels=this.ligandModelSet=null;this.ms.clearCache();this.cm.ce.clearCache()});c(b,"cachePut",function(a,b){JU.Logger.info("Viewer cachePut "+a);this.fm.cachePut(a,b)},"~S,~O"); +c(b,"cacheFileByName",function(a,b){return null==a?(this.cacheClear(),-1):this.fm.cacheFileByNameAdd(a,b)},"~S,~B");c(b,"clearThreads",function(){null!=this.eval&&this.eval.stopScriptThreads();this.stopMinimization();this.tm.clearThreads();this.setAnimationOn(!1)});c(b,"getEvalContextAndHoldQueue",function(a){if(null==a||!JV.Viewer.isJS&&!this.testAsync)return null;a.pushContextDown("getEvalContextAndHoldQueue");a=a.getThisContext();a.setMustResume();this.queueOnHold=a.isJSThread=!0;return a},"J.api.JmolScriptEvaluator"); +c(b,"getDefaultPropertyParam",function(a){return this.getPropertyManager().getDefaultPropertyParam(a)},"~N");c(b,"getPropertyNumber",function(a){return this.getPropertyManager().getPropertyNumber(a)},"~S");c(b,"checkPropertyParameter",function(a){return this.getPropertyManager().checkPropertyParameter(a)},"~S");c(b,"extractProperty",function(a,b,c){return this.getPropertyManager().extractProperty(a,b,c,null,!1)},"~O,~O,~N");c(b,"addHydrogens",function(a,b){var c=1==(b&1),f=8==(b&8),e=null==a;null== +a&&(a=this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().length()-1));var h=new JU.BS;if(a.isEmpty())return h;var j=new JU.Lst,e=this.getAdditionalHydrogens(a,j,b|(e?256:0)),m=!1,m=this.g.appendNew;if(0\n");c=b.size();a=Array(c);b.toArray(a);java.util.Arrays.sort(a);for(var b=new JU.SB,f=0;f=f)f+=159;if(256<=f){c=this.chainMap.get(a);if(null!=c)return c.intValue();this.chainCaseSpecified=(new Boolean(this.chainCaseSpecified|b)).valueOf();this.chainList.addLast(a)}c=Integer.$valueOf(f);this.chainMap.put(c,a);this.chainMap.put(a,c);return f},"~S,~B");c(b,"getChainIDStr",function(a){return this.chainMap.get(Integer.$valueOf(a))},"~N");c(b,"getScriptQueueInfo",function(){return null!=this.scm&&this.scm.isQueueProcessing()? +Boolean.TRUE:Boolean.FALSE});c(b,"getNMRCalculation",function(){return null==this.nmrCalculation?(this.nmrCalculation=J.api.Interface.getOption("quantum.NMRCalculation",this,"script")).setViewer(this):this.nmrCalculation});c(b,"getDistanceUnits",function(a){null==a&&(a=this.getDefaultMeasurementLabel(2));var b=a.indexOf("//");return 0>b?this.g.measureDistanceUnits:a.substring(b+2)},"~S");c(b,"calculateFormalCharges",function(a){return this.ms.fixFormalCharges(null==a?this.bsA():a)},"JU.BS");c(b,"setModulation", +function(a,b,c,f){f&&this.g.setO("_modt",JU.Escape.eP(c));this.ms.setModulation(null==a?this.getAllAtoms():a,b,c,f);this.refreshMeasures(!0)},"JU.BS,~B,JU.P3,~B");c(b,"checkInMotion",function(a){switch(a){case 0:this.setTimeout("_SET_IN_MOTION_",0,null);break;case 1:this.inMotion||this.setTimeout("_SET_IN_MOTION_",2*this.g.hoverDelayMs,"!setInMotion");break;case 2:this.setInMotion(!0),this.refresh(3,"timeoutThread set in motion")}},"~N");c(b,"checkMotionRendering",function(a){if(!this.getInMotion(!0)&& +!this.tm.spinOn&&!this.tm.vibrationOn&&!this.am.animationOn)return!0;if(this.g.wireframeRotation)return!1;var b=0;switch(a){case 1677721602:case 1153433601:b=2;break;case 1112150020:b=3;break;case 1112150021:b=4;break;case 1112152066:b=5;break;case 1073742018:b=6;break;case 603979967:b=7;break;case 603979786:b=8}return this.g.platformSpeed>=b},"~N");c(b,"openExportChannel",function(a,b,c){return this.getOutputManager().openOutputChannel(a,b,c,!1)},"~N,~S,~B");j(b,"log",function(a){null!=a&&this.getOutputManager().logToFile(a)}, +"~S");c(b,"getLogFileName",function(){return null==this.logFileName?"":this.logFileName});c(b,"getCommands",function(a,b,c){return this.getStateCreator().getCommands(a,b,c)},"java.util.Map,java.util.Map,~S");c(b,"allowCapture",function(){return!this.isApplet||this.isSignedApplet});c(b,"compileExpr",function(a){var b=null==this.getScriptManager()?null:this.eval.evaluateExpression(a,!1,!0);return z(b,Array)?b:w(-1,[JS.T.o(4,a)])},"~S");c(b,"checkSelect",function(a,b){return null!=this.getScriptManager()&& +this.eval.checkSelect(a,b)},"java.util.Map,~A");c(b,"getAnnotationInfo",function(a,b,c){return this.getAnnotationParser(1111490587==c).getAnnotationInfo(this,a,b,c,this.am.cmi)},"JS.SV,~S,~N");c(b,"getAtomValidation",function(a,b){return this.getAnnotationParser(!1).getAtomValidation(this,a,b)},"~S,JM.Atom");c(b,"dragMinimizeAtom",function(a){this.stopMinimization();var b=0,c=this.getOperativeSymmetry();null!=c&&(b=256);c=0!=b?null:this.getMotionFixedAtoms(c,null).isEmpty()?this.ms.getAtoms(this.ms.isAtomPDB(a)? +1086324742:1094713360,JU.BSUtil.newAndSetBit(a)):JU.BSUtil.setAll(this.ms.ac);try{this.minimize(this.eval,2147483647,0,c,null,null,0,b)}catch(f){if(F(f,Exception)){if(this.async){var e=(V("JV.Viewer$1")?0:JV.Viewer.$Viewer$1$(),U(JV.Viewer$1,this,la("me",this,"iAtom",a)));setTimeout(function(){e.run()},100)}}else throw f;}},"~N");c(b,"getJBR",function(){return null==this.jbr?this.jbr=J.api.Interface.getInterface("JM.BioResolver",this,"file").setViewer(this):this.jbr});c(b,"checkMenuUpdate",function(){null!= +this.jmolpopup&&this.jmolpopup.jpiUpdateComputedMenus()});c(b,"getChimeMessenger",function(){return null==this.jcm?this.jcm=J.api.Interface.getInterface("JV.ChimeMessenger",this,"script").set(this):this.jcm});c(b,"getModelSetAuxiliaryInfoForAtoms",function(a){return this.ms.getModelSetAuxiliaryInfo(this.ms.getModelBS(this.getAtomBitSet(a),!1))},"~O");c(b,"getJSJSONParser",function(){return null==this.jsonParser?this.jsonParser=J.api.Interface.getInterface("JU.JSJSONParser",this,"script"):this.jsonParser}); +c(b,"parseJSON",function(a){return null==a?null:(a=a.trim()).startsWith("{")?this.parseJSONMap(a):this.parseJSONArray(a)},"~S");c(b,"parseJSONMap",function(a){return this.getJSJSONParser().parseMap(a,!0)},"~S");c(b,"parseJSONArray",function(a){return this.getJSJSONParser().parse(a,!0)},"~S");c(b,"getSymTemp",function(){return J.api.Interface.getSymmetry(this,"ms")});c(b,"getSymStatic",function(){return null==JV.Viewer.symStatic?JV.Viewer.symStatic=J.api.Interface.getSymmetry(this,"ms"):JV.Viewer.symStatic}); +c(b,"setWindowDimensions",function(a){this.resizeInnerPanel(D(a[0]),D(a[1]))},"~A");c(b,"getTriangulator",function(){return null==this.triangulator?this.triangulator=J.api.Interface.getUtil("Triangulator",this,"script"):this.triangulator});c(b,"getCurrentModelAuxInfo",function(){return 0<=this.am.cmi?this.ms.getModelAuxiliaryInfo(this.am.cmi):null});c(b,"startNBO",function(a){var b=new java.util.Hashtable;b.put("service","nbo");b.put("action","showPanel");b.put("options",a);this.sm.processService(b)}, +"~S");c(b,"startPlugin",function(a){"nbo".equalsIgnoreCase(a)&&this.startNBO("all")},"~S");c(b,"connectNBO",function(a){0>this.am.cmi||this.getNBOParser().connectNBO(this.am.cmi,a)},"~S");c(b,"getNBOParser",function(){return null==this.nboParser?this.nboParser=J.api.Interface.getInterface("J.adapter.readers.quantum.NBOParser",this,"script").set(this):this.nboParser});c(b,"getNBOAtomLabel",function(a){return this.getNBOParser().getNBOAtomLabel(a)},"JM.Atom");c(b,"calculateChirality",function(a){null== +a&&(a=this.bsA());return this.ms.calculateChiralityForAtoms(a,!0)},"JU.BS");c(b,"getSubstructureSetArray",function(a,b,c){return this.getSmilesMatcher().getSubstructureSetArray(a,this.ms.at,this.ms.ac,b,null,c)},"~S,JU.BS,~N");c(b,"getSubstructureSetArrayForNodes",function(a,b,c){return this.getSmilesMatcher().getSubstructureSetArray(a,b,b.length,null,null,c)},"~S,~A,~N");c(b,"getSmilesAtoms",function(a){return this.getSmilesMatcher().getAtoms(a)},"~S");c(b,"calculateChiralityForSmiles",function(a){try{return J.api.Interface.getSymmetry(this, +"ms").calculateCIPChiralityForSmiles(this,a)}catch(b){if(F(b,Exception))return null;throw b;}},"~S");c(b,"getPdbID",function(){return this.ms.getInfo(this.am.cmi,JV.JC.getBoolName(4))===Boolean.TRUE?this.ms.getInfo(this.am.cmi,"pdbID"):null});c(b,"getModelInfo",function(a){return this.ms.getInfo(this.am.cmi,a)},"~S");c(b,"notifyScriptEditor",function(a,b){null!=this.scriptEditor&&this.scriptEditor.notify(a,b)},"~N,~A");c(b,"sendConsoleMessage",function(a){null!=this.appConsole&&this.appConsole.sendConsoleMessage(a)}, +"~S");c(b,"getModelkitPropertySafely",function(a){return null==this.modelkit?null:this.modelkit.getProperty(a)},"~S");c(b,"setModelkitPropertySafely",function(a,b){return null==this.modelkit?null:this.modelkit.setProperty(a,b)},"~S,~O");c(b,"isModelKitOption",function(a,b){return null!=this.modelkit&&this.modelkit.checkOption(a,b)},"~S,~S");c(b,"getSymmetryInfo",function(a,b,c,f,e,h,j,m,p,n,q,r){try{return this.getSymTemp().getSymmetryInfoAtom(this.ms,a,b,c,f,e,h,m,j,p,n,q,r)}catch(s){if(F(s,Exception))return System.out.println("Exception in Viewer.getSymmetryInfo: "+ +s),JV.Viewer.isJS||s.printStackTrace(),null;throw s;}},"~N,~S,~N,JU.P3,JU.P3,JU.P3,~N,~S,~N,~N,~N,~A");c(b,"getMacro",function(a){if(null==this.macros||this.macros.isEmpty())try{var b=this.getAsciiFileOrNull(this.g.macroDirectory+"/macros.json");this.macros=this.parseJSON(b)}catch(c){if(F(c,Exception))this.macros=new java.util.Hashtable;else throw c;}if(null==a){var b=new JU.SB,f;for(a=this.macros.keySet().iterator();a.hasNext()&&((f=a.next())||1);){var e=this.macros.get(f);b.append(f).append("\t").appendO(e).append("\n")}return b.toString()}a= +a.toLowerCase();return this.macros.containsKey(a)?this.macros.get(a).get("path").toString():null},"~S");c(b,"getConsoleFontScale",function(){return this.consoleFontScale});c(b,"setConsoleFontScale",function(a){this.consoleFontScale=a},"~N");c(b,"confirm",function(a,b){return this.apiPlatform.confirm(a,b)},"~S,~S");c(b,"evalStringGUI",function(a){this.evalStringQuiet(a+"; ## GUI ##")},"~S");c(b,"selectStatus",function(a,b,c,f,e){this.select(a,b,c,f);e&&this.setStatusSelect(a)},"JU.BS,~B,~N,~B,~B"); +c(b,"setStatusSelect",function(a){this.hasSelected=!1;this.sm.setStatusSelect(null==a?this.bsA():a)},"JU.BS");c(b,"wasmInchiHack",function(a){(JV.Viewer.isJS&&(0<=a.indexOf("inchi")||0<=a.indexOf("INCHI"))||0<=a.indexOf("TAUTOMER")||0<=a.indexOf("tautomer"))&&this.getInchi(null,null,null);return a},"~S");c(b,"getInchi",function(a,b,c){try{var f=this.apiPlatform.getInChI();if(null==a&&null==b)return"";if("string"==typeof b){var e=b;e.startsWith("$")||e.startsWith(":")?b=this.getFileAsString4(e,-1, +!1,!1,!0,"script"):!e.startsWith("InChI=")&&0>e.indexOf(" ")&&(e=this.setLoadFormat(!1,"$"+b,"$",!1),b=this.getFileAsString4(e,-1,!1,!1,!0,"script"))}return f.getInchi(this,a,b,c)}catch(h){return""}},"JU.BS,~O,~S");c(b,"findSpaceGroup",function(a,b,c,f,e,h,j){var m=null;if(null==b&&null==c||0!=(j&2))b=this.getThisModelAtoms();null==c?b.isEmpty()||(a=null==a?this.getOperativeSymmetry():a,m=null==a?null:a.findSpaceGroup(this,b,null,f,null,h,j)):m=this.getSymTemp().findSpaceGroup(this,b,c,f,e,h,j);return null== +m&&0!=(j&1)?"":m},"J.api.SymmetryInterface,JU.BS,~S,~A,JU.T3,~A,~N");c(b,"restrictToModel",function(a,b){null==a&&(a=this.bsA());var c=a.isEmpty();if(c&&0<=b)return a;-1==b&&(b=this.am.cmi);if(0>b){if(c)return this.getThisModelAtoms();b=this.ms.at[a.nextSetBit(0)].getModelIndex()}c=this.getModelUndeletedAtomsBitSet(b);c.and(a);return c},"JU.BS,~N");c(b,"getThisModelAtoms",function(){return this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().nextSetBit(0))});c(b,"getSymmetryEquivPoints", +function(a,b){var c=this.getCurrentUnitCell();return null==c?new JU.Lst:c.getEquivPoints(null,a,b)},"JU.P3,~S");c(b,"getSymmetryEquivPointList",function(a,b){var c=this.getCurrentUnitCell();if(null==c)return new JU.Lst;c.getEquivPointList(a,0,b.toLowerCase(),null);return a},"JU.Lst,~S");c(b,"getOperativeSymmetry",function(){var a=this.getCurrentUnitCell();return null==a||null==a.getSymmetryOperations()?null:a});c(b,"formatText",function(a){if(0>a.indexOf("@{")&&0>a.indexOf("%{"))return a;var b=a, +c=0<=b.indexOf("\\");c&&(b=JU.PT.rep(b,"\\%","\u0001"),b=JU.PT.rep(b,"\\@","\u0002"),c=!b.equals(a));for(var b=JU.PT.rep(b,"%{","@{"),f;0<=(a=b.indexOf("@{"));){a++;var e=a+1;f=b.length;for(var h=1,j="\x00",m="\x00";0=f)return b;f=b.substring(e,a);if(0==f.length)return b;f=this.evaluateExpression(f);z(f,"JU.P3")&&(f=JU.Escape.eP(f)); +b=b.substring(0,e-2)+f.toString()+b.substring(a+1)}c&&(b=JU.PT.rep(b,"\u0002","@"),b=JU.PT.rep(b,"\u0001","%"));return b},"~S");c(b,"getScaleText",function(a,b,c,f){a=JM.Measurement.fixUnits(0a.indexOf("CLOSE")),0<=a.indexOf("CLEAR")&&this.html5Applet._clearConsole(),!0):!1},"~S");b.$Viewer$1$=function(){var a=aa(JV,"Viewer$1",null, +Runnable);j(a,"run",function(){this.f$.me.dragMinimizeAtom(this.f$.iAtom)})};var a=H(JV.Viewer,"ACCESS",Enum);I(a,"NONE",0,[]);I(a,"READSPT",1,[]);I(a,"ALL",2,[]);self.Jmol&&Jmol.extend&&Jmol.extend("vwr",JV.Viewer.prototype);b.isJS=!1;b.isSwingJS=!1;b.appletDocumentBase="";b.appletCodeBase="";b.appletIdiomaBase=null;b.jsDocumentBase="";b.jmolObject=null;b.strJavaVendor="Java: "+System.getProperty("java.vendor","j2s");b.strOSName=System.getProperty("os.name","");b.strJavaVersion="Java "+System.getProperty("java.version", +"");b.version_date=null;b.staticFunctions=new java.util.Hashtable;b.nProcessors=1;b.isHighPrecision=!1;b.symStatic=null})}fa._coreLoaded=!0})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields, +Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejmoldebug.js b/config/plugins/visualizations/jmol/static/j2s/core/corejmoldebug.js new file mode 100755 index 000000000000..9cd11e096989 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejmoldebug.js @@ -0,0 +1,2687 @@ +Jmol.___JmolDate="$Date: 2024-06-07 15:31:04 +0100 (Fri, 07 Jun 2024) $" +Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties" +Jmol.___JmolVersion="16.2.17" // (legacy) also 16.2.18 (swingJS) +// JSmolJavaExt.js + +// contains class declarations for +// Integer, Byte, Short, Float, Double, Character +// EventObject, EventListenerProxy +// Throwable, Error +// and many others. If these classes have js files in java/, those files are unused + + +// This library will be wrapped by an additional anonymous function using ANT in +// build_03_tojs.xml. This task will also modify variable names. References +// to Clazz._ will not be changed, but other Clazz.xxx will be changed to +// (local scope) Clazz_xxx, allowing them to be further compressed using +// Google Closure Compiler in that same ANT task. + +// BH 2023.07.08 NaN.0 fix +// BH 10/16/2017 6:51:20 AM fixing range error for MSIE in prepareCallback setting arguments.length < 0 +// BH 10/13/2017 7:03:28 AM fix for String.initialize(bytes) applying bytes as arguments +// BH 9/18/2017 10:15:18 PM adding Integer.compare() +// BH 4/7/2017 10:48:50 AM adds Math.signum(f) +// BH 10/15/2016 9:28:13 AM adds Float.floatToIntBits(f) +// BH 3/9/2016 6:25:08 PM at least allow Error() by itself to work as before (inchi.js uses this) +// BH 12/21/2015 1:31:41 PM fixing String.instantialize for generic typed array +// BH 9/19/2015 11:05:45 PM Float.isInfinite(), Float.isNaN(), Double.isInfinite(), Double.isNaN() all not implemented +// BH 5/31/2015 5:53:04 PM Number.compareTo added +// BH 5/21/2015 5:46:30 PM Number("0xFFFFFFFF") is not -1 +// BH 4/23/2015 9:08:59 AM xx.getComponentType() is nonfunctional. Array.newInstance now defines a wrapper for .getClass().getComponentType() that works +// BH 4/12/2015 1:37:44 PM adding Math.rint = Math.round +// BH 1/16/2015 10:09:38 AM Chrome failure jqGrig due to new String("x").toString() not being a simple string +// BH 8/14/2014 6:49:22 PM Character class efficiencies +// BH 7/24/2014 9:02:18 AM most browsers do not support String.codePointAt() +// BH 7/11/2014 4:17:22 PM fix for Boolean.valueOf("false") not being false +// BH 5/27/2014 6:29:59 AM ensure floats and doubles have decimal point in toString +// BH 4/1/2014 12:23:41 PM Encoding moved to Clazz._Encoding; +// BH 4/1/2014 7:51:46 AM removing java.lang.B00lean +// BH 3/7/2014 9:17:10 AM removing Array.toString; moving that code here from j2sJmol.js +// BH 1/30/2014 9:04:25 AM adding Throwable.getStackTrace() as a STRING +// BH 12/4/2013 9:20:44 PM fix for reassigning Date.prototype.toString() +// BH 12/3/2013 11:43:10 AM bizarre Safari bug in reassigning Boolean (OK, I admit, we shouldn't have done that...) +// BH 12/1/2013 6:50:16 AM evit Number.prototype.toString assignment removed! +// BH 11/30/2013 1:46:31 PM fixing Byte, Short, Long, Integer, Float, Double to reflect proper bounds and error conditions +// BH 11/29/2013 8:58:49 PM removing Boolean.toString(boolean) +// BH 11/4/2013 7:34:26 AM changing "var nativeClazz" to "var nativeClass" to avoid ANT replacement of "nativeClazz." to "nativeClazz_" +// BH 10/19/2013 1:29:27 PM fixed String.$replace() +// BH 10/18/2013 6:09:23 PM fixed (Double|Float).valueOf(NaN).valueOf(), which should return NaN, not throw an error +// BH 10/12/2013 11:18:44 AM fixed bug in Double(String) and Float(String) that was returning typeof "string" +// BH 10/10/2013 2:40:20 PM added Math.log10 +// BH 7/23/2013 7:24:01 AM fixing Number.shortValue() and Number.byteValue() for negative values +// BH 6/16/2013 1:31:30 PM adding /| in String.replace -- thank you David Koes +// BH 3/13/2013 12:49:23 PM setting Boolean.valueOf() "@" +// BH 3/2/2013 10:46:45 PM removed Double.valueOf(String) +// BH 11/6/2012 8:26:33 PM added instanceof Int32Array in String.instantialize +// BH 10/13/2012 11:38:07 PM corrected Integer.parseInt to allow only +-0123456789; created Integer.parseIntRadix +// BH 11/1/2012 added Short +// BH 9/10/2012 6:27:21 AM added java.net.URL... classes +// BH 1/7/2013 7:40:06 AM added Clazz.dateToString + +;(function(Clazz) { + +// moved here from package.js +// these classes will be created as objects prior to any others +// and are then available immediately + + Clazz._Loader.registerPackages("java", [ "io", "lang", "lang.reflect", "util" ]); + + var sJU = "java.util"; + + //var sJU = "JU"; + //Clazz._Loader.registerPackages (sJU, ["regex", "zip"]); + //var javautil = JU; + + var javautil = java.util; + + Clazz._Loader.ignore([ + "net.sf.j2s.ajax.HttpRequest", + sJU + ".MapEntry.Type", + "java.net.UnknownServiceException", // unnecessary for Jmol + "java.lang.Runtime", + "java.security.AccessController", + "java.security.PrivilegedExceptionAction", + "java.io.File", + "java.io.FileInputStream", + "java.io.FileWriter", + "java.io.OutputStreamWriter", +// sJU + ".Calendar", // bypassed in ModelCollection +// "java.text.SimpleDateFormat", // not used +// "java.text.DateFormat", // not used + sJU + ".concurrent.Executors" + ]) + +Math.rint = Math.round; + +Math.log10||(Math.log10=function(a){return Math.log(a)/2.302585092994046}); + +Math.signum||(Math.signum=function(d){return(d==0.0||isNaN(d))?d:d < 0 ? -1 : 1}); + +if(Clazz._supportsNativeObject){ + // Number and Array are special -- do not override prototype.toString -- "length - 2" here + for(var i=0;i 0 ? x - 0x10000 : x); +}); + +Clazz.defineMethod(Number,"byteValue", +function(){ +var x = Math.round(this)&0xff; +return (this < 0 && x > 0 ? x - 0x100 : x); +}); + +Clazz.defineMethod(Number,"intValue", +function(){ +return Math.round(this)&0xffffffff; +}); + +Clazz.defineMethod(Number,"longValue", +function(){ +return Math.round(this); +}); + +Clazz.defineMethod(Number,"floatValue", +function(){ +return this.valueOf(); +}); +Clazz.defineMethod(Number,"doubleValue", +function(){ +return parseFloat(this.valueOf()); +}); + +Clazz.overrideMethod(Number,"hashCode", +function(){ +return this.valueOf(); +}); + +java.lang.Integer=Integer=function(){ +Clazz.instantialize(this,arguments); +}; +Clazz.decorateAsType(Integer,"Integer",Number,Comparable,null,true); +Integer.prototype.valueOf=function(){return 0;}; +Integer.toString=Integer.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +} else if(this===Integer){ +return"class java.lang.Integer"; +} +return""+this.valueOf(); +}; + +/* + +Clazz.makeConstructor(Integer, +function(){ +this.valueOf=function(){ +return 0; +}; +}); +*/ + + +Clazz.overrideConstructor(Integer, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + this.valueOf=function(){return v;}; +}); //BH +/* +Clazz.makeConstructor(Integer, +function(s){ +var value=Integer.parseInt(s,10); +this.valueOf=function(){ +return value; +}; +},"String"); +*/ +Integer.MIN_VALUE=Integer.prototype.MIN_VALUE=-0x80000000; +Integer.MAX_VALUE=Integer.prototype.MAX_VALUE=0x7fffffff; +Integer.TYPE=Integer.prototype.TYPE=Integer; + + +Integer.compare = Clazz.defineMethod(Integer,"compare", +function(i,j) { + return (i < j ? -1 : i > j ? 1 : 0); +},"Number,Number"); + +Clazz.defineMethod(Integer,"bitCount", +function(i) { + i = i - ((i >>> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); + i = (i + (i >>> 4)) & 0x0f0f0f0f; + i = i + (i >>> 8); + i = i + (i >>> 16); + return i & 0x3f; +},"Number"); +Integer.bitCount=Integer.prototype.bitCount; + +Clazz.defineMethod(Integer,"numberOfLeadingZeros", +function(i) { + if (i == 0) return 32; + var n = 1; + if (i >>> 16 == 0) { n += 16; i <<= 16; } + if (i >>> 24 == 0) { n += 8; i <<= 8; } + if (i >>> 28 == 0) { n += 4; i <<= 4; } + if (i >>> 30 == 0) { n += 2; i <<= 2; } + n -= i >>> 31; + return n; +},"Number"); +Integer.numberOfLeadingZeros=Integer.prototype.numberOfLeadingZeros; + +Clazz.defineMethod(Integer,"numberOfTrailingZeros", +function(i) { + if (i == 0) return 32; + var n = 31; + var y = i <<16; if (y != 0) { n = n -16; i = y; } + y = i << 8; if (y != 0) { n = n - 8; i = y; } + y = i << 4; if (y != 0) { n = n - 4; i = y; } + y = i << 2; if (y != 0) { n = n - 2; i = y; } + return n - ((i << 1) >>> 31); +},"Number"); +Integer.numberOfTrailingZeros=Integer.prototype.numberOfTrailingZeros; + +Clazz.defineMethod(Integer,"parseIntRadix", +function(s,radix){ +if(s==null){ +throw new NumberFormatException("null"); +}if(radix<2){ +throw new NumberFormatException("radix "+radix+" less than Character.MIN_RADIX"); +}if(radix>36){ +throw new NumberFormatException("radix "+radix+" greater than Character.MAX_RADIX"); +} +if (radix == 10) { + for (var i = s.length; --i >= 0;) { + var c = s.charCodeAt(i); + if (c >= 48 && c <= 57) continue; + if (i > 0 || c != 43 && c != 45) + throw new NumberFormatException("Not a Number : "+s); + + } +} +var i=parseInt(s,radix); +if(isNaN(i)){ +throw new NumberFormatException("Not a Number : "+s); +} +return i; +},"String, Number"); +Integer.parseIntRadix=Integer.prototype.parseIntRadix; + +Clazz.defineMethod(Integer,"parseInt", +function(s){ +return Integer.parseIntRadix(s,10); +},"String"); +Integer.parseInt=Integer.prototype.parseInt; + +/* +Clazz.defineMethod(Integer,"$valueOf", +function(s){ +return new Integer(Integer.parseIntRadix(s,10)); +},"String"); +*/ + +Clazz.overrideMethod(Integer,"$valueOf", +function(s){ +return new Integer(s); +}); + +/* +Clazz.defineMethod(Integer,"$valueOf", +function(s,r){ +return new Integer(Integer.parseIntRadix(s,r)); +},"String, Number"); +*/ + +Integer.$valueOf=Integer.prototype.$valueOf; + + +Clazz.overrideMethod(Integer,"equals", +function(s){ +if(s==null||!Clazz.instanceOf(s,Integer)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Integer.toHexString=Integer.prototype.toHexString=function(d){ +if(d.valueOf)d=d.valueOf(); +if (d < 0) { +var b = d & 0xFFFFFF; +var c = ((d>>24)&0xFF); +return c._numberToString(16) + (b = "000000" + b._numberToString(16)).substring(b.length - 6); +} +return d._numberToString(16);}; +Integer.toOctalString=Integer.prototype.toOctalString=function(d){if(d.valueOf)d=d.valueOf();return d._numberToString(8);}; +Integer.toBinaryString=Integer.prototype.toBinaryString=function(d){if(d.valueOf)d=d.valueOf();return d._numberToString(2);}; + +Integer.decodeRaw=Clazz.defineMethod(Integer,"decodeRaw", function(n){ +if (n.indexOf(".") >= 0)n = ""; +var i = (n.startsWith("-") ? 1 : 0); +n = n.replace(/\#/, "0x").toLowerCase(); +var radix=(n.startsWith("0x", i) ? 16 : n.startsWith("0", i) ? 8 : 10); +// The general problem with parseInt is that is not strict -- ParseInt("10whatever") == 10. +// Number is strict, but Number("055") does not work, though ParseInt("055", 8) does. +// need to make sure negative numbers are negative +n = Number(n) & 0xFFFFFFFF; +return (radix == 8 ? parseInt(n, 8) : n); +},"~S"); + +Integer.decode=Clazz.defineMethod(Integer,"decode", function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < Integer.MIN_VALUE|| n > Integer.MAX_VALUE) + throw new NumberFormatException("Invalid Integer"); + return new Integer(n); +},"~S"); + +Clazz.overrideMethod(Integer,"hashCode", +function(){ +return this.valueOf(); +}); + +// Note that Long is problematic in JavaScript + +java.lang.Long=Long=function(){ +Clazz.instantialize(this,arguments); +}; +Clazz.decorateAsType(Long,"Long",Number,Comparable,null,true); +Long.prototype.valueOf=function(){return 0;}; +Long.toString=Long.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +}else if(this===Long){ +return"class java.lang.Long"; +} +return""+this.valueOf(); +}; + +Clazz.overrideConstructor(Long, function(v){ + v == null && (v = 0); + v = (typeof v == "number" ? Math.round(v) : Integer.parseIntRadix(v, 10)); +this.valueOf=function(){return v;}; +}); + +//Long.MIN_VALUE=Long.prototype.MIN_VALUE=-0x8000000000000000; +//Long.MAX_VALUE=Long.prototype.MAX_VALUE=0x7fffffffffffffff; +Long.TYPE=Long.prototype.TYPE=Long; + +Clazz.defineMethod(Long,"parseLong", +function(s,radix){ + return Integer.parseInt(s, radix || 10); +}); + +Long.parseLong=Long.prototype.parseLong; + +Clazz.overrideMethod(Long,"$valueOf", +function(s){ +return new Long(s); +}); +/* +Clazz.defineMethod(Long,"$valueOf", +function(s){ +return new Long(s); +},"Number"); + +Clazz.defineMethod(Long,"$valueOf", +function(s,r){ +return new Long(Long.parseLong(s,r)); +},"String, Number"); +*/ +Long.$valueOf=Long.prototype.$valueOf; +Clazz.overrideMethod(Long,"equals", +function(s){ +if(s==null||!Clazz.instanceOf(s,Long)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Long.toHexString=Long.prototype.toHexString=function(i){ +return i.toString(16); +}; +Long.toOctalString=Long.prototype.toOctalString=function(i){ +return i.toString(8); +}; +Long.toBinaryString=Long.prototype.toBinaryString=function(i){ +return i.toString(2); +}; + + +Long.decode=Clazz.defineMethod(Long,"decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n)) + throw new NumberFormatException("Invalid Long"); + return new Long(n); +},"~S"); + +java.lang.Short = Short = function () { +Clazz.instantialize (this, arguments); +}; +Clazz.decorateAsType (Short, "Short", Number, Comparable, null, true); +Short.prototype.valueOf = function () { return 0; }; +Short.toString = Short.prototype.toString = function () { + if (arguments.length != 0) { + return "" + arguments[0]; + } else if (this === Short) { + return "class java.lang.Short"; // Short.class.toString + } + return "" + this.valueOf (); +}; + +Clazz.overrideConstructor(Short, +function (v) { + v == null && (v = 0); + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + v = v.shortValue(); + this.valueOf = function () {return v;}; +}); + + +Short.MIN_VALUE = Short.prototype.MIN_VALUE = -32768; +Short.MAX_VALUE = Short.prototype.MAX_VALUE = 32767; +Short.TYPE = Short.prototype.TYPE = Short; + +Clazz.defineMethod(Short, "parseShortRadix", +function (s, radix) { +return Integer.parseIntRadix(s, radix).shortValue(); +}, "String, Number"); +Short.parseShortRadix = Short.prototype.parseShortRadix; + +Clazz.defineMethod(Short, "parseShort", +function (s) { +return Short.parseShortRadix (s, 10); +}, "String"); + +Short.parseShort = Short.prototype.parseShort; + +/* +Clazz.defineMethod(Short, "$valueOf", +function (s) { +return new Short(Short.parseShort (s, 10)); +}, "String"); + */ + +Clazz.overrideMethod(Short, "$valueOf", +function (s) { +return new Short(s); +}); + +/* +Clazz.defineMethod(Short, "$valueOf", +function (s, r) { +return new Short(Short.parseShort (s, r)); +}, "String, Number"); + */ + +Short.$valueOf = Short.prototype.$valueOf; +Clazz.overrideMethod(Short, "equals", +function (s) { +if(s == null || !Clazz.instanceOf(s, Short) ){ + return false; +} +return s.valueOf() == this.valueOf(); +}, "Object"); +Short.toHexString = Short.prototype.toHexString = function (i) { + return i.toString (16); +}; +Short.toOctalString = Short.prototype.toOctalString = function (i) { + return i.toString (8); +}; +Short.toBinaryString = Short.prototype.toBinaryString = function (i) { + return i.toString (2); +}; +Short.decode = Clazz.defineMethod(Short, "decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < -32768|| n > 32767) + throw new NumberFormatException("Invalid Short"); + return new Short(n); +}, "~S"); + +java.lang.Byte=Byte=function(){ +Clazz.instantialize(this,arguments); +}; +Clazz.decorateAsType(Byte,"Byte",Number,Comparable,null,true); +Byte.prototype.valueOf=function(){return 0;}; +Byte.toString=Byte.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +}else if(this===Byte){ +return"class java.lang.Byte"; +} +return""+this.valueOf(); +}; +Clazz.makeConstructor(Byte, +function(v){ + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + v = v.byteValue(); +this.valueOf=function(){ +return v; +}; +}); + +Byte.serialVersionUID=Byte.prototype.serialVersionUID=-7183698231559129828; +Byte.MIN_VALUE=Byte.prototype.MIN_VALUE=-128; +Byte.MAX_VALUE=Byte.prototype.MAX_VALUE=127; +Byte.SIZE=Byte.prototype.SIZE=8; +Byte.TYPE=Byte.prototype.TYPE=Byte; + +Clazz.defineMethod(Byte,"parseByteRadix", +function(s,radix){ + return Integer.parseIntRadix(s, radix).byteValue(); +},"String, Number"); +Byte.parseByteRadix=Byte.prototype.parseByteRadix; + +Clazz.defineMethod(Byte,"parseByte", +function(s){ +return Byte.parseByte(s,10); +},"String"); + +Byte.parseByte=Byte.prototype.parseByte; + +Clazz.overrideMethod(Byte, "$valueOf", +function (s) { +return new Byte(s); +}); + +Byte.$valueOf=Byte.prototype.$valueOf; +Clazz.overrideMethod(Byte,"equals", +function(s){ +if(s==null||!Clazz.instanceOf(s,Byte)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Byte.toHexString=Byte.prototype.toHexString=function(i){ +return i.toString(16); +}; +Byte.toOctalString=Byte.prototype.toOctalString=function(i){ +return i.toString(8); +}; +Byte.toBinaryString=Byte.prototype.toBinaryString=function(i){ +return i.toString(2); +}; +Byte.decode=Clazz.defineMethod(Byte,"decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < -128|| n > 127) + throw new NumberFormatException("Invalid Byte"); +return new Byte(n); +},"~S"); + +Clazz._floatToString = function(f) { + var s = ""+f + if (s.indexOf(".") < 0 && s.indexOf("e") < 0 && s != "NaN") + s += ".0"; + return s; +} + +java.lang.Float=Float=function(){ +Clazz.instantialize(this,arguments); +}; +Clazz.decorateAsType(Float,"Float",Number,Comparable,null,true); +Float.prototype.valueOf=function(){return 0;}; +Float.toString=Float.prototype.toString=function(){ +if(arguments.length!=0){ +return Clazz._floatToString(arguments[0]); +}else if(this===Float){ +return"class java.lang.Float"; +} +return Clazz._floatToString(this.valueOf()); +}; + +Clazz._a32 = null; + +Float.floatToIntBits = function(f) { +var a = Clazz._a32 || (Clazz._a32 = new Float32Array(1)); +a[0] = f; +return new Int32Array(a.buffer)[0]; +} + +Clazz.overrideConstructor(Float, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Number(v); + this.valueOf=function(){return v;} +}); + +Float.serialVersionUID=Float.prototype.serialVersionUID=-2671257302660747028; +Float.MIN_VALUE=Float.prototype.MIN_VALUE=1.4e-45; +Float.MAX_VALUE=Float.prototype.MAX_VALUE=3.4028235e+38; +Float.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY; +Float.POSITIVE_INFINITY=Number.POSITIVE_INFINITY; +Float.NaN=Number.NaN; +Float.TYPE=Float.prototype.TYPE=Float; + +Clazz.defineMethod(Float,"parseFloat", +function(s){ +if(s==null){ +throw new NumberFormatException("null"); +} +if (typeof s == "number")return s; // important -- typeof NaN is "number" and is OK here +var floatVal=Number(s); +if(isNaN(floatVal)){ +throw new NumberFormatException("Not a Number : "+s); +} +return floatVal; +},"String"); +Float.parseFloat=Float.prototype.parseFloat; + +Clazz.overrideMethod(Float,"$valueOf", +function(s){ +return new Float(s); +}); + +Float.$valueOf=Float.prototype.$valueOf; + +Clazz.defineMethod(Float,"isNaN", +function(num){ +return isNaN(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Float.isNaN=Float.prototype.isNaN; +Clazz.defineMethod(Float,"isInfinite", +function(num){ +return!isFinite(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Float.isInfinite=Float.prototype.isInfinite; + +Clazz.overrideMethod(Float,"equals", +function(s){ +if(s==null||!Clazz.instanceOf(s,Float)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); + +java.lang.Double=Double=function(){ +Clazz.instantialize(this,arguments); +}; +Clazz.decorateAsType(Double,"Double",Number,Comparable,null,true); +Double.prototype.valueOf=function(){return 0;}; +Double.toString=Double.prototype.toString=function(){ +if(arguments.length!=0){ +return Clazz._floatToString(arguments[0]); +}else if(this===Double){ +return"class java.lang.Double"; +} +return Clazz._floatToString(this.valueOf()); +}; + +Clazz.overrideConstructor(Double, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Double.parseDouble(v); + this.valueOf=function(){return v;}; +}); // BH + +Double.serialVersionUID=Double.prototype.serialVersionUID=-9172774392245257468; +Double.MIN_VALUE=Double.prototype.MIN_VALUE=4.9e-324; +Double.MAX_VALUE=Double.prototype.MAX_VALUE=1.7976931348623157e+308; +Double.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY; +Double.POSITIVE_INFINITY=Number.POSITIVE_INFINITY; +Double.NaN=Number.NaN; +Double.TYPE=Double.prototype.TYPE=Double; + +Clazz.defineMethod(Double,"isNaN", +function(num){ +return isNaN(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Double.isNaN=Double.prototype.isNaN; +Clazz.defineMethod(Double,"isInfinite", +function(num){ +return!isFinite(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Double.isInfinite=Double.prototype.isInfinite; + +Clazz.defineMethod(Double,"parseDouble", +function(s){ +if(s==null){ +throw new NumberFormatException("null"); +} +if (typeof s == "number")return s; // important -- typeof NaN is "number" and is OK here +var doubleVal=Number(s); +if(isNaN(doubleVal)){ +throw new NumberFormatException("Not a Number : "+s); +} +return doubleVal; +},"String"); +Double.parseDouble=Double.prototype.parseDouble; + +/* +Clazz.defineMethod(Double,"$valueOf", +function(s){ +return new Double(this.parseDouble(s)); +},"String"); +*/ + +Clazz.defineMethod(Double,"$valueOf", +function(v){ +return new Double(v); +},"Number"); + +Double.$valueOf=Double.prototype.$valueOf; + +Clazz.overrideMethod(Double,"equals", +function(s){ +if(s==null||!Clazz.instanceOf(s,Double)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); + + +//java.lang.B00lean = Boolean; ?? BH why this? +Boolean = java.lang.Boolean = Boolean || function () {Clazz.instantialize (this, arguments);}; +if (Clazz._supportsNativeObject) { + for (var i = 0; i < Clazz._extendedObjectMethods.length; i++) { + var p = Clazz._extendedObjectMethods[i]; + Boolean.prototype[p] = Clazz._O.prototype[p]; + } +} +Boolean.__CLASS_NAME__="Boolean"; +Clazz.implementOf(Boolean,[java.io.Serializable,java.lang.Comparable]); +Boolean.equals=Clazz._innerFunctions.equals; +Boolean.getName=Clazz._innerFunctions.getName; +Boolean.serialVersionUID=Boolean.prototype.serialVersionUID=-3665804199014368530; + +//Clazz.makeConstructor(Boolean, +//function(value){ +//this.valueOf=function(){ +//return value; +//}; +//},"~B"); + +Clazz.overrideConstructor(Boolean, +function(s){ + var b = ((typeof s == "string" ? Boolean.toBoolean(s) : s) ? true : false); + this.valueOf=function(){return b;}; +},"~O"); + +Boolean.parseBoolean=Clazz.defineMethod(Boolean,"parseBoolean", +function(s){ +return Boolean.toBoolean(s); +},"~S"); +Clazz.defineMethod(Boolean,"booleanValue", +function(){ +return this.valueOf(); +}); +Boolean.$valueOf=Clazz.overrideMethod(Boolean,"$valueOf", +function(b){ +return((typeof b == "string"? "true".equalsIgnoreCase(b) : b)?Boolean.TRUE:Boolean.FALSE); +}); + +/* +Boolean.toString=Clazz.defineMethod(Boolean,"toString", +function(b){ +return b?"true":"false"; +},"~B"); +*/ + +Clazz.overrideMethod(Boolean,"toString", +function(){ +return this.valueOf()?"true":"false"; +}); +Clazz.overrideMethod(Boolean,"hashCode", +function(){ +return this.valueOf()?1231:1237; +}); +Clazz.overrideMethod(Boolean,"equals", +function(obj){ +if(Clazz.instanceOf(obj,Boolean)){ +return this.booleanValue()==obj.booleanValue(); +}return false; +},"~O"); +Boolean.getBoolean=Clazz.defineMethod(Boolean,"getBoolean", +function(name){ +var result=false; +try{ +result=Boolean.toBoolean(System.getProperty(name)); +}catch(e){ +if(Clazz.instanceOf(e,IllegalArgumentException)){ +}else if(Clazz.instanceOf(e,NullPointerException)){ +}else{ +throw e; +} +} +return result; +},"~S"); +Clazz.overrideMethod(Boolean,"compareTo", +function(b){ +return(b.value==this.value?0:(this.value?1:-1)); +},"Boolean"); +Boolean.toBoolean=Clazz.defineMethod(Boolean,"toBoolean", +($fz=function(name){ +return((name!=null)&&name.equalsIgnoreCase("true")); +},$fz.isPrivate=true,$fz),"~S"); +Boolean.TRUE=Boolean.prototype.TRUE=new Boolean(true); +Boolean.FALSE=Boolean.prototype.FALSE=new Boolean(false); +Boolean.TYPE=Boolean.prototype.TYPE=Boolean; + + +Clazz._Encoding=new Object(); + +(function(Encoding) { + +Encoding.UTF8="utf-8"; +Encoding.UTF16="utf-16"; +Encoding.ASCII="ascii"; + + +Encoding.guessEncoding=function(str){ +if(str.charCodeAt(0)==0xEF&&str.charCodeAt(1)==0xBB&&str.charCodeAt(2)==0xBF){ +return Encoding.UTF8; +}else if(str.charCodeAt(0)==0xFF&&str.charCodeAt(1)==0xFE){ +return Encoding.UTF16; +}else{ +return Encoding.ASCII; +} +}; + +Encoding.guessEncodingArray=function(a){ +if(a[0]==0xEF&&a[1]==0xBB&&a[2]==0xBF){ +return Encoding.UTF8; +}else if(a[0]==0xFF&&a[1]==0xFE){ +return Encoding.UTF16; +}else{ +return Encoding.ASCII; +} +}; + +Encoding.readUTF8=function(str){ +if (typeof str != "string") return Encoding.readUTF8Array(str); +var encoding=Encoding.guessEncoding(str); +var startIdx=0; +if(encoding==Encoding.UTF8){ +startIdx=3; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} +var arrs=new Array(); +for(var i=startIdx;i0xc0&&charCode<0xe0){ +var c1=charCode&0x1f; +i++; +var c2=str.charCodeAt(i)&0x3f; +var c=(c1<<6)+c2; +arrs[arrs.length]=String.fromCharCode(c); +}else if(charCode>=0xe0){ +var c1=charCode&0x0f; +i++; +var c2=str.charCodeAt(i)&0x3f; +i++; +var c3=str.charCodeAt(i)&0x3f; +var c=(c1<<12)+(c2<<6)+c3; +arrs[arrs.length]=String.fromCharCode(c); +} +} +return arrs.join(''); +}; + +Encoding.readUTF8Array=function(a){ +var encoding=Encoding.guessEncodingArray(a); +var startIdx=0; +if(encoding==Encoding.UTF8){ +startIdx=3; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} +var arrs=new Array(); +for(var i=startIdx;i0xc0&&charCode<0xe0){ +var c1=charCode&0x1f; +var c2=a[++i]&0x3f; +var c=(c1<<6)+c2; +arrs[arrs.length]=String.fromCharCode(c); +}else if(charCode>=0xe0){ +var c1=charCode&0x0f; +var c2=a[++i]&0x3f; +var c3=a[++i]&0x3f; +var c=(c1<<12)+(c2<<6)+c3; +arrs[arrs.length]=String.fromCharCode(c); +} +} +return arrs.join(''); +}; + +Encoding.convert2UTF8=function(str){ +var encoding=this.guessEncoding(str); +var startIdx=0; +if(encoding==Encoding.UTF8){ +return str; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} + +var offset=0; +var arrs=new Array(offset+str.length-startIdx); + +for(var i=startIdx;i>6); +var c2=0x80+(charCode&0x003f); +arrs[offset+i-startIdx]=String.fromCharCode(c1)+String.fromCharCode(c2); +}else{ +var c1=0xe0+((charCode&0xf000)>>12); +var c2=0x80+((charCode&0x0fc0)>>6); +var c3=0x80+(charCode&0x003f); +arrs[offset+i-startIdx]=String.fromCharCode(c1)+String.fromCharCode(c2)+String.fromCharCode(c3); +} +} +return arrs.join(''); +}; +Encoding.base64Chars=new Array( +'A','B','C','D','E','F','G','H', +'I','J','K','L','M','N','O','P', +'Q','R','S','T','U','V','W','X', +'Y','Z','a','b','c','d','e','f', +'g','h','i','j','k','l','m','n', +'o','p','q','r','s','t','u','v', +'w','x','y','z','0','1','2','3', +'4','5','6','7','8','9','+','/' +); +Encoding.encodeBase64=function(str){ +if(str==null||str.length==0)return str; +var b64=Encoding.base64Chars; +var length=str.length; +var index=0; +var buf=[]; +var c0,c1,c2; +while(index>2]; +if(index>4)]; +if(index>6)]; +buf[buf.length]=b64[c2&0x3F]; +}else{ +buf[buf.length]=b64[((c1<<2)&0x3c)]; +buf[buf.length]='='; +} +}else{ +buf[buf.length]=b64[(c0<<4)&0x30]; +buf[buf.length]='='; +buf[buf.length]='='; +} +} +return buf.join(''); +}; +Encoding.decodeBase64=function(str){ +if(str==null||str.length==0)return str; +var b64=Encoding.base64Chars; +var xb64=Encoding.xBase64Chars; +if(Encoding.xBase64Chars==null){ +xb64=new Object(); +for(var i=0;i>4); +if(c2!=null){ +buf[buf.length]=String.fromCharCode(((c1<<4)&0xff)|c2>>2); +if(c3!=null){ +buf[buf.length]=String.fromCharCode(((c2<<6)&0xff)|c3); +} +} +} +return buf.join(''); +}; + +if(String.prototype.$replace==null){ +java.lang.String=String; +Clazz._setDeclared("String", String); + +if(Clazz._supportsNativeObject){ +for(var i=0;i= 0) c1 = "\\" + c1; + } else { + c1=c1.replace(/([\\\$\.\*\+\|\?\^\{\}\(\)\[\]])/g,function($0,$1){return"\\"+$1;}); + } + return this.replace(new RegExp(c1,"gm"),c2); +}; +sp.$generateExpFunction=function(str){ +var arr=[]; +var orders=[]; +var idx=0; +arr[0]=""; +var i=0; +for(;ithis.length-len)|| +(ooffset>other.length-len)){ +return false; +} +var s1=this.substring(toffset,toffset+len); +var s2=other.substring(ooffset,ooffset+len); +if(ignoreCase){ +s1=s1.toLowerCase(); +s2=s2.toLowerCase(); +} +return s1==s2; +}; + + + +sp.$plit=function(regex,limit){ +if (!limit && regex == " ") + return this.split(regex); + +if(limit!=null&&limit>0){ +if(limit==1){ +return this; +} +var regExp=new RegExp("("+regex+")","gm"); +var count=1; +var s=this.replace(regExp,function($0,$1){ +count++; +if(count==limit){ +return"@@_@@"; +}else if(count>limit){ +return $0; +}else{ +return $0; +} +}); +regExp=new RegExp(regex,"gm"); +var arr=this.split(regExp); +if(arr.length>limit){ +arr[limit-1]=s.substring(s.indexOf("@@_@@")+5); +arr.length=limit; +} +return arr; +}else{ +var regExp=new RegExp(regex,"gm"); +return this.split(regExp); +} +}; +/* +sp.trim=function(){ +var len=this.length; +var st=0; + +while((st0)||(lens.length-pc)){ +return false; +} +while(--pc>=0){ +if(s.charAt(to++)!=prefix.charAt(po++)){ +return false; +} +} +return true; +}; + +sp.startsWith=function(prefix){ +if(arguments.length==1){ +return sn(this,arguments[0],0); +}else if(arguments.length==2){ +return sn(this,arguments[0],arguments[1]); +}else{ +return false; +} +}; + +sp.endsWith=function(suffix){ +return sn(this, suffix,this.length-suffix.length); +}; + +} + +sp.equals=function(anObject){ +return this.valueOf()==anObject; +}; + +sp.equalsIgnoreCase=function(anotherString){ +return(anotherString==null)?false:(this==anotherString +||this.toLowerCase()==anotherString.toLowerCase()); +}; + + +sp.hash=0; + +sp.hashCode=function(){ +var h=this.hash; +if(h==0){ +var off=0; +var len=this.length; +for(var i=0;i255){ +arrs[ii]=0x1a; +arrs[ii+1]=c&0xff; +arrs[ii+2]=(c&0xff00)>>8; +ii+=2; +}else{ +arrs[ii]=c; +} +ii++; +} +return Clazz.newByteArray(arrs); +}; + +/* +sp.compareTo=function(anotherString){ +if(anotherString==null){ +throw new java.lang.NullPointerException(); +} +var len1=this.length; +var len2=anotherString.length; +var n=Math.min(len1,len2); +var k=0; +while(k= 0} // bh added +sp.compareTo = function(a){return this > a ? 1 : this < a ? -1 : 0} // bh added + + + +sp.toCharArray=function(){ +var result=new Array(this.length); +for(var i=0;is2){ +return 1; +}else{ +return-1; +} +} +}; + +sp.contentEquals=function(sb){ +if(this.length!=sb.length()){ +return false; +} +var v=sb.getValue(); +var i=0; +var j=0; +var n=this.length; +while(n--!=0){ +if(this.charCodeAt(i++)!=v[j++]){ +return false; +} +} +return true; +}; + +sp.getChars=function(srcBegin,srcEnd,dst,dstBegin){ +if(srcBegin<0){ +throw new StringIndexOutOfBoundsException(srcBegin); +} +if(srcEnd>this.length){ +throw new StringIndexOutOfBoundsException(srcEnd); +} +if(srcBegin>srcEnd){ +throw new StringIndexOutOfBoundsException(srcEnd-srcBegin); +} +if(dst==null){ +throw new NullPointerException(); +} +for(var i=0;ibytes.length){ + throw new IndexOutOfBoundsException(); + } + if(length>0){ + var isChar=(bytes[offset].length!=null); + if(isChar){ + for(var i=0;i0;){ + value[i]=String.fromCharCode(bytes[i+offset]&0xff); + } + }else{ + hibyte<<=8; + for(var i=count;i-->0;){ + value[i]=String.fromCharCode(hibyte|(bytes[i+offset]&0xff)); + } + } + return value.join(''); +default: + var s=""; + for(var i=0;i= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd || c == 0x1680 + || c >= 0x2000 && c != 0x2007 && (c <= 0x200b || c == 0x2028 || c == 0x2029 || c == 0x3000)); +},"~N"); +c$.isLetter=Clazz.defineMethod(c$,"isLetter", +function(c){ +c = c.charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122); +},"~N"); +c$.isLetterOrDigit=Clazz.defineMethod(c$,"isLetterOrDigit", +function(c){ +c = c.charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57); +},"~N"); +c$.isSpaceChar=Clazz.defineMethod(c$,"isSpaceChar", +function(c){ + var i = c.charCodeAt(0); +if(i==0x20||i==0xa0||i==0x1680)return true; +if(i<0x2000)return false; +return i<=0x200b||i==0x2028||i==0x2029||i==0x202f||i==0x3000; +},"~N"); +c$.digit=Clazz.defineMethod(c$,"digit", +function(c,radix){ +var i = c.charCodeAt(0); +if(radix >= 2 && radix <= 36){ + if(i < 128){ + var result = -1; + if(48 <= i && i <= 57){ + result = i - 48; + }else if(97 <= i && i <= 122){ + result = i - 87; + }else if(65 <= i && i <= 90){ + result=i-(55); + } + return (result < radix ? result : -1); + } +} +return -1; +},"~N,~N"); +Clazz.overrideMethod(c$,"toString", +function(){ +var buf=[this.value]; +return String.valueOf(buf); +}); +c$.toString=Clazz.overrideMethod(c$,"toString", +function(c){ +{ +if(this===Character){ +return"class java.lang.Character"; +} +}return String.valueOf(c); +},"~N"); +c$.TYPE=c$; + + + +Clazz._ArrayWrapper = function(a, type) { + return { + a: a, + __CLASS_NAME__:"Array", + superClazz: Array, + getComponentType: function() {return type}, + instanceOf: function(o) { return Clazz.instanceOf(type, o) }, + getName: function() { return this.__CLASS_NAME__ } + }; +} +c$=Clazz.declareType(java.lang.reflect,"Array"); +c$.newInstance=Clazz.defineMethod(c$,"newInstance", +function(componentType,size){ +var a = Clazz.newArray(size); + a.getClass = function() { return new Clazz._ArrayWrapper(this, componentType);}; +return a; +},"Class,~N"); + +c$.getLength = function(o){return o.length}; +c$.get = function(o, i){return o[i]}; + +javautil.Date=Date; +Date.TYPE="javautil.Date"; +Date.__CLASS_NAME__="Date"; +Clazz._setDeclared("java.util.Date", Date); +Clazz._setDeclared("Date", Date); +Clazz.implementOf(Date,[java.io.Serializable,java.lang.Comparable]); +Clazz.defineMethod(javautil.Date,"clone", +function(){ +return new Date(this.getTime()); +}); + +Clazz.defineMethod(javautil.Date,"before", +function(when){ +return this.getTime()when.getTime(); +},"javautil.Date"); +Clazz.defineMethod(javautil.Date,"equals", +function(obj){ +return Clazz.instanceOf(obj,javautil.Date)&&this.getTime()==(obj).getTime(); +},"Object"); +Clazz.defineMethod(javautil.Date,"compareTo", +function(anotherDate){ +if (anotherDate == null)return 1; +var thisTime=this.getTime(); +var anotherTime=anotherDate.getTime(); +return(thisTime>32)); +}); + +c$=Clazz.decorateAsClass(function(){ +this.source=null; +Clazz.instantialize(this,arguments); +},javautil,"EventObject",null,java.io.Serializable); +Clazz.makeConstructor(c$, +function(source){ +if(source!=null)this.source=source; +else throw new IllegalArgumentException(); +},"~O"); +Clazz.defineMethod(c$,"getSource", +function(){ +return this.source; +}); +Clazz.overrideMethod(c$,"toString", +function(){ +return this.getClass().getName()+"[source="+String.valueOf(this.source)+']'; +}); +Clazz.declareInterface(javautil,"EventListener"); + +c$=Clazz.decorateAsClass(function(){ +this.listener=null; +Clazz.instantialize(this,arguments); +},javautil,"EventListenerProxy",null,javautil.EventListener); +Clazz.makeConstructor(c$, +function(listener){ +this.listener=listener; +},"javautil.EventListener"); +Clazz.defineMethod(c$,"getListener", +function(){ +return this.listener; +}); +Clazz.declareInterface(javautil,"Iterator"); + +Clazz.declareInterface(javautil,"ListIterator",javautil.Iterator); +Clazz.declareInterface(javautil,"Enumeration"); +Clazz.declareInterface(javautil,"Collection",Iterable); + +Clazz.declareInterface(javautil,"Set",javautil.Collection); +Clazz.declareInterface(javautil,"Map"); +Clazz.declareInterface(javautil.Map,"Entry"); + +Clazz.declareInterface(javautil,"List",javautil.Collection); + +Clazz.declareInterface(javautil,"Queue",javautil.Collection); +Clazz.declareInterface(javautil,"RandomAccess"); +c$=Clazz.decorateAsClass(function(){ +this.detailMessage=null; +this.cause=null; +this.stackTrace=null; +Clazz.instantialize(this,arguments); +},java.lang,"Throwable",null,java.io.Serializable); +Clazz.prepareFields(c$,function(){ +this.cause=this; +//alert("e0 "+ arguments.callee.caller.caller.caller.caller.caller) +}); +Clazz.makeConstructor(c$, +function(){ +this.fillInStackTrace(); +}); +Clazz.makeConstructor(c$, +function(message,cause){ +this.fillInStackTrace(); +if (!cause && typeof message == "object") { + cause = message; + message = cause.toString(); +} +cause && (this.cause=cause); +this.detailMessage=message; +},"~S,Throwable"); + + + + +Clazz.defineMethod(c$,"getMessage", +function(){ +return (this.message || this.detailMessage || this.toString()); +}); +Clazz.defineMethod(c$,"getLocalizedMessage", +function(){ +return this.getMessage(); +}); +Clazz.defineMethod(c$,"getCause", +function(){ +return(this.cause===this?null:this.cause); +}); +Clazz.defineMethod(c$,"initCause", +function(cause){ +if(this.cause!==this)throw new IllegalStateException("Can't overwrite cause"); +if(cause===this)throw new IllegalArgumentException("Self-causation not permitted"); +this.cause=cause; +return this; +},"Throwable"); +Clazz.overrideMethod(c$,"toString", +function(){ +var s=this.getClass().getName(); +var message=this.message || this.detailMessage; +return(message ? s+": "+message : s); +}); +Clazz.defineMethod(c$,"printStackTrace", +function(){ +System.err.println(this.getStackTrace ? this.getStackTrace() : this.message + " " + Clazz.getStackTrace()); +}); + +Clazz.defineMethod(c$,"getStackTrace", +function(){ +var s = "" + this + "\n"; +for(var i=0;i-1||caller!=null){ +var clazzName=null; +var nativeClass=null; +if(!noLooping||caller==Clazz.tryToSearchAndExecute||caller==Clazz.superCall||caller==null){ +if(index<0){ +break; +} +noLooping=true; +superCaller=Clazz._callingStackTraces[index].caller; +nativeClass=Clazz._callingStackTraces[index].owner; +index--; +}else{ +superCaller=caller; +if(superCaller.claxxOwner!=null){ +nativeClass=superCaller.claxxOwner; +}else if(superCaller.exClazz!=null){ +nativeClass=superCaller.exClazz; +} +} +var st=new StackTraceElement( +((nativeClass!=null&&nativeClass.__CLASS_NAME__.length!=0)? +nativeClass.__CLASS_NAME__:"anonymous"), +((superCaller.exName==null)?"anonymous":superCaller.exName) ++" ("+Clazz.getParamsType(superCaller.arguments)+")", +null,-1); +st.nativeClazz=nativeClass; +this.stackTrace[this.stackTrace.length]=st; +for(var i=0;i":this.declaringClass; +}); +Clazz.defineMethod(c$,"getFileName", +function(){ +return this.fileName; +}); +Clazz.defineMethod(c$,"getLineNumber", +function(){ +return this.lineNumber; +}); +Clazz.defineMethod(c$,"getMethodName", +function(){ +return(this.methodName==null)?"":this.methodName; +}); +Clazz.overrideMethod(c$,"hashCode", +function(){ +if(this.methodName==null){ +return 0; +}return this.methodName.hashCode()^this.declaringClass.hashCode(); +}); +Clazz.defineMethod(c$,"isNativeMethod", +function(){ +return this.lineNumber==-2; +}); +Clazz.overrideMethod(c$,"toString", +function(){ +var buf = this.getClassName() + "." + this.getMethodName(); +if(this.isNativeMethod()){ +buf += ("(Native Method)"); +}else{ +var fName=this.getFileName(); +if(fName==null){ +buf += ("(Unknown Source)"); +}else{ +var lineNum=this.getLineNumber(); +buf += ('('); +buf += (fName); +if(lineNum>=0){ +buf += (':'); +buf = buf + lineNum; +}buf += (')'); +}}return buf; +}); +TypeError.prototype.getMessage || (TypeError.prototype.getMessage = function(){ return (this.message || this.toString()) + (this.getStackTrace ? this.getStackTrace() : Clazz.getStackTrace())}); + + +Clazz.Error = Error; + +Clazz.declareTypeError = function (prefix, name, clazzParent, interfacez, + parentClazzInstance, _declareType) { + var f = function () { + Clazz.instantialize (this, arguments); + return Clazz.Error(); + }; + return Clazz.decorateAsClass (f, prefix, name, clazzParent, interfacez, + parentClazzInstance); +}; + +// at least allow Error() by itself to work as before +Clazz._Error || (Clazz._Error = Error); +Clazz.decorateAsClass (function (){Clazz.instantialize(this, arguments);return Clazz._Error();}, java.lang, "Error", Throwable); + +//c$=Clazz.declareTypeError(java.lang,"Error",Throwable); + + +c$=Clazz.declareType(java.lang,"LinkageError",Error); + +c$=Clazz.declareType(java.lang,"IncompatibleClassChangeError",LinkageError); + +c$=Clazz.declareType(java.lang,"AbstractMethodError",IncompatibleClassChangeError); + +c$=Clazz.declareType(java.lang,"AssertionError",Error); +Clazz.makeConstructor(c$, +function(detailMessage){ +Clazz.superConstructor(this,AssertionError,["" + detailMessage,(Clazz.instanceOf(detailMessage,Throwable)?detailMessage:null)]); +},"~O"); + +c$=Clazz.declareType(java.lang,"ClassCircularityError",LinkageError); + +c$=Clazz.declareType(java.lang,"ClassFormatError",LinkageError); + +c$=Clazz.decorateAsClass(function(){ +this.exception=null; +Clazz.instantialize(this,arguments); +},java.lang,"ExceptionInInitializerError",LinkageError); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this,ExceptionInInitializerError); +this.initCause(null); +}); +Clazz.makeConstructor(c$, +function(detailMessage){ +Clazz.superConstructor(this,ExceptionInInitializerError,[detailMessage]); +this.initCause(null); +},"~S"); +Clazz.makeConstructor(c$, +function(exception){ +Clazz.superConstructor(this,ExceptionInInitializerError); +this.exception=exception; +this.initCause(exception); +},"Throwable"); +Clazz.defineMethod(c$,"getException", +function(){ +return this.exception; +}); +Clazz.overrideMethod(c$,"getCause", +function(){ +return this.exception; +}); + +c$=Clazz.declareType(java.lang,"IllegalAccessError",IncompatibleClassChangeError); + +c$=Clazz.declareType(java.lang,"InstantiationError",IncompatibleClassChangeError); + +c$=Clazz.declareType(java.lang,"VirtualMachineError",Error); + +c$=Clazz.declareType(java.lang,"InternalError",VirtualMachineError); + +c$=Clazz.declareType(java.lang,"NoClassDefFoundError",LinkageError); + +c$=Clazz.declareType(java.lang,"NoSuchFieldError",IncompatibleClassChangeError); + +c$=Clazz.declareType(java.lang,"NoSuchMethodError",IncompatibleClassChangeError); + +c$=Clazz.declareType(java.lang,"OutOfMemoryError",VirtualMachineError); + +c$=Clazz.declareType(java.lang,"StackOverflowError",VirtualMachineError); + +c$=Clazz.declareType(java.lang,"UnknownError",VirtualMachineError); + +c$=Clazz.declareType(java.lang,"UnsatisfiedLinkError",LinkageError); + +c$=Clazz.declareType(java.lang,"UnsupportedClassVersionError",ClassFormatError); + +c$=Clazz.declareType(java.lang,"VerifyError",LinkageError); + +c$=Clazz.declareType(java.lang,"ThreadDeath",Error); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this,ThreadDeath,[]); +}); + +c$=Clazz.declareType(java.lang,"Exception",Throwable); + +c$=Clazz.declareType(java.lang,"RuntimeException",Exception); + +c$=Clazz.declareType(java.lang,"ArithmeticException",RuntimeException); + +c$=Clazz.declareType(java.lang,"IndexOutOfBoundsException",RuntimeException); + +c$=Clazz.declareType(java.lang,"ArrayIndexOutOfBoundsException",IndexOutOfBoundsException); +Clazz.makeConstructor(c$, +function(index){ +Clazz.superConstructor(this,ArrayIndexOutOfBoundsException,["Array index out of range: "+index]); +},"~N"); + +c$=Clazz.declareType(java.lang,"ArrayStoreException",RuntimeException); + +c$=Clazz.declareType(java.lang,"ClassCastException",RuntimeException); + +c$=Clazz.decorateAsClass(function(){ +this.ex=null; +Clazz.instantialize(this,arguments); +},java.lang,"ClassNotFoundException",Exception); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this,ClassNotFoundException,[Clazz.castNullAs("Throwable")]); +}); +Clazz.makeConstructor(c$, +function(detailMessage){ +Clazz.superConstructor(this,ClassNotFoundException,[detailMessage,null]); +},"~S"); +Clazz.makeConstructor(c$, +function(detailMessage,exception){ +Clazz.superConstructor(this,ClassNotFoundException,[detailMessage]); +this.ex=exception; +},"~S,Throwable"); +Clazz.defineMethod(c$,"getException", +function(){ +return this.ex; +}); +Clazz.overrideMethod(c$,"getCause", +function(){ +return this.ex; +}); + +c$=Clazz.declareType(java.lang,"CloneNotSupportedException",Exception); + +c$=Clazz.declareType(java.lang,"IllegalAccessException",Exception); + +c$=Clazz.declareType(java.lang,"IllegalArgumentException",RuntimeException); +Clazz.makeConstructor(c$, +function(cause){ +Clazz.superConstructor(this,IllegalArgumentException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz.declareType(java.lang,"IllegalMonitorStateException",RuntimeException); + +c$=Clazz.declareType(java.lang,"IllegalStateException",RuntimeException); +Clazz.makeConstructor(c$, +function(cause){ +Clazz.superConstructor(this,IllegalStateException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz.declareType(java.lang,"IllegalThreadStateException",IllegalArgumentException); + +c$=Clazz.declareType(java.lang,"InstantiationException",Exception); + +c$=Clazz.declareType(java.lang,"InterruptedException",Exception); + +c$=Clazz.declareType(java.lang,"NegativeArraySizeException",RuntimeException); + +c$=Clazz.declareType(java.lang,"NoSuchFieldException",Exception); + +c$=Clazz.declareType(java.lang,"NoSuchMethodException",Exception); + +c$=Clazz.declareType(java.lang,"NullPointerException",RuntimeException); + +c$=Clazz.declareType(java.lang,"NumberFormatException",IllegalArgumentException); + +c$=Clazz.declareType(java.lang,"SecurityException",RuntimeException); +Clazz.makeConstructor(c$, +function(cause){ +Clazz.superConstructor(this,SecurityException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz.declareType(java.lang,"StringIndexOutOfBoundsException",IndexOutOfBoundsException); +Clazz.makeConstructor(c$, +function(index){ +Clazz.superConstructor(this,StringIndexOutOfBoundsException,["String index out of range: "+index]); +},"~N"); + +c$=Clazz.declareType(java.lang,"UnsupportedOperationException",RuntimeException); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this,UnsupportedOperationException,[]); +}); +Clazz.makeConstructor(c$, +function(cause){ +Clazz.superConstructor(this,UnsupportedOperationException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz.decorateAsClass(function(){ +this.target=null; +Clazz.instantialize(this,arguments); +},java.lang.reflect,"InvocationTargetException",Exception); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this,java.lang.reflect.InvocationTargetException,[Clazz.castNullAs("Throwable")]); +}); +Clazz.makeConstructor(c$, +function(exception){ +Clazz.superConstructor(this,java.lang.reflect.InvocationTargetException,[null,exception]); +this.target=exception; +},"Throwable"); +Clazz.makeConstructor(c$, +function(exception,detailMessage){ +Clazz.superConstructor(this,java.lang.reflect.InvocationTargetException,[detailMessage,exception]); +this.target=exception; +},"Throwable,~S"); +Clazz.defineMethod(c$,"getTargetException", +function(){ +return this.target; +}); +Clazz.overrideMethod(c$,"getCause", +function(){ +return this.target; +}); + +c$=Clazz.decorateAsClass(function(){ +this.undeclaredThrowable=null; +Clazz.instantialize(this,arguments); +},java.lang.reflect,"UndeclaredThrowableException",RuntimeException); +Clazz.makeConstructor(c$, +function(exception){ +Clazz.superConstructor(this,java.lang.reflect.UndeclaredThrowableException); +this.undeclaredThrowable=exception; +this.initCause(exception); +},"Throwable"); +Clazz.makeConstructor(c$, +function(exception,detailMessage){ +Clazz.superConstructor(this,java.lang.reflect.UndeclaredThrowableException,[detailMessage]); +this.undeclaredThrowable=exception; +this.initCause(exception); +},"Throwable,~S"); +Clazz.defineMethod(c$,"getUndeclaredThrowable", +function(){ +return this.undeclaredThrowable; +}); +Clazz.overrideMethod(c$,"getCause", +function(){ +return this.undeclaredThrowable; +}); + +c$=Clazz.declareType(java.io,"IOException",Exception); + + +c$=Clazz.declareType(java.io,"CharConversionException",java.io.IOException); + +c$=Clazz.declareType(java.io,"EOFException",java.io.IOException); + +c$=Clazz.declareType(java.io,"FileNotFoundException",java.io.IOException); + +c$=Clazz.decorateAsClass(function(){ +this.bytesTransferred=0; +Clazz.instantialize(this,arguments); +},java.io,"InterruptedIOException",java.io.IOException); + +c$=Clazz.declareType(java.io,"SyncFailedException",java.io.IOException); + +c$=Clazz.declareType(java.io,"UnsupportedEncodingException",java.io.IOException); + +c$=Clazz.declareType(java.io,"UTFDataFormatException",java.io.IOException); + +// ignore ObjectStream exceptions + +Clazz.defineMethod(c$,"getMessage", +function(){ +var msg=Clazz.superCall(this,java.io.WriteAbortedException,"getMessage",[]); +return (this.detail ? msg + "; "+this.detail.toString() : msg); +}); +Clazz.overrideMethod(c$,"getCause", +function(){ +return this.detail; +}); + +c$=Clazz.declareType(javautil,"ConcurrentModificationException",RuntimeException); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this,javautil.ConcurrentModificationException,[]); +}); + +c$=Clazz.declareType(javautil,"EmptyStackException",RuntimeException); + +c$=Clazz.decorateAsClass(function(){ +this.className=null; +this.key=null; +Clazz.instantialize(this,arguments); +},javautil,"MissingResourceException",RuntimeException); +Clazz.makeConstructor(c$, +function(detailMessage,className,resourceName){ +Clazz.superConstructor(this,javautil.MissingResourceException,[detailMessage]); +this.className=className; +this.key=resourceName; +},"~S,~S,~S"); +Clazz.defineMethod(c$,"getClassName", +function(){ +return this.className; +}); +Clazz.defineMethod(c$,"getKey", +function(){ +return this.key; +}); + +c$=Clazz.declareType(javautil,"NoSuchElementException",RuntimeException); + +c$=Clazz.declareType(javautil,"TooManyListenersException",Exception); + +c$=Clazz.declareType(java.lang,"Void"); +c$.TYPE = c$; + +Clazz.declareInterface(java.lang.reflect,"GenericDeclaration"); +Clazz.declareInterface(java.lang.reflect,"AnnotatedElement"); + +c$=Clazz.declareType(java.lang.reflect,"AccessibleObject",null,java.lang.reflect.AnnotatedElement); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$,"isAccessible", +function(){ +return false; +}); +c$.setAccessible=Clazz.defineMethod(c$,"setAccessible", +function(objects,flag){ +return; +},"~A,~B"); +Clazz.defineMethod(c$,"setAccessible", +function(flag){ +return; +},"~B"); +Clazz.overrideMethod(c$,"isAnnotationPresent", +function(annotationType){ +return false; +},"Class"); +Clazz.overrideMethod(c$,"getDeclaredAnnotations", +function(){ +return new Array(0); +}); +Clazz.overrideMethod(c$,"getAnnotations", +function(){ +return new Array(0); +}); +Clazz.overrideMethod(c$,"getAnnotation", +function(annotationType){ +return null; +},"Class"); +c$.marshallArguments=Clazz.defineMethod(c$,"marshallArguments", +function(parameterTypes,args){ +return null; +},"~A,~A"); +Clazz.defineMethod(c$,"invokeV", +function(receiver,args){ +return; +},"~O,~A"); +Clazz.defineMethod(c$,"invokeL", +function(receiver,args){ +return null; +},"~O,~A"); +Clazz.defineMethod(c$,"invokeI", +function(receiver,args){ +return 0; +},"~O,~A"); +Clazz.defineMethod(c$,"invokeJ", +function(receiver,args){ +return 0; +},"~O,~A"); +Clazz.defineMethod(c$,"invokeF", +function(receiver,args){ +return 0.0; +},"~O,~A"); +Clazz.defineMethod(c$,"invokeD", +function(receiver,args){ +return 0.0; +},"~O,~A"); +c$.emptyArgs=c$.prototype.emptyArgs=new Array(0); +Clazz.declareInterface(java.lang.reflect,"InvocationHandler"); +c$=Clazz.declareInterface(java.lang.reflect,"Member"); +c$=Clazz.declareType(java.lang.reflect,"Modifier"); + +Clazz.makeConstructor(c$, +function(){ +}); +c$.isAbstract=Clazz.defineMethod(c$,"isAbstract", +function(modifiers){ +return((modifiers&1024)!=0); +},"~N"); +c$.isFinal=Clazz.defineMethod(c$,"isFinal", +function(modifiers){ +return((modifiers&16)!=0); +},"~N"); +c$.isInterface=Clazz.defineMethod(c$,"isInterface", +function(modifiers){ +return((modifiers&512)!=0); +},"~N"); +c$.isNative=Clazz.defineMethod(c$,"isNative", +function(modifiers){ +return((modifiers&256)!=0); +},"~N"); +c$.isPrivate=Clazz.defineMethod(c$,"isPrivate", +function(modifiers){ +return((modifiers&2)!=0); +},"~N"); +c$.isProtected=Clazz.defineMethod(c$,"isProtected", +function(modifiers){ +return((modifiers&4)!=0); +},"~N"); +c$.isPublic=Clazz.defineMethod(c$,"isPublic", +function(modifiers){ +return((modifiers&1)!=0); +},"~N"); +c$.isStatic=Clazz.defineMethod(c$,"isStatic", +function(modifiers){ +return((modifiers&8)!=0); +},"~N"); +c$.isStrict=Clazz.defineMethod(c$,"isStrict", +function(modifiers){ +return((modifiers&2048)!=0); +},"~N"); +c$.isSynchronized=Clazz.defineMethod(c$,"isSynchronized", +function(modifiers){ +return((modifiers&32)!=0); +},"~N"); +c$.isTransient=Clazz.defineMethod(c$,"isTransient", +function(modifiers){ +return((modifiers&128)!=0); +},"~N"); +c$.isVolatile=Clazz.defineMethod(c$,"isVolatile", +function(modifiers){ +return((modifiers&64)!=0); +},"~N"); +c$.toString=Clazz.defineMethod(c$,"toString", +function(modifiers){ +var sb=new Array(0); +if(java.lang.reflect.Modifier.isPublic(modifiers))sb[sb.length]="public"; +if(java.lang.reflect.Modifier.isProtected(modifiers))sb[sb.length]="protected"; +if(java.lang.reflect.Modifier.isPrivate(modifiers))sb[sb.length]="private"; +if(java.lang.reflect.Modifier.isAbstract(modifiers))sb[sb.length]="abstract"; +if(java.lang.reflect.Modifier.isStatic(modifiers))sb[sb.length]="static"; +if(java.lang.reflect.Modifier.isFinal(modifiers))sb[sb.length]="final"; +if(java.lang.reflect.Modifier.isTransient(modifiers))sb[sb.length]="transient"; +if(java.lang.reflect.Modifier.isVolatile(modifiers))sb[sb.length]="volatile"; +if(java.lang.reflect.Modifier.isSynchronized(modifiers))sb[sb.length]="synchronized"; +if(java.lang.reflect.Modifier.isNative(modifiers))sb[sb.length]="native"; +if(java.lang.reflect.Modifier.isStrict(modifiers))sb[sb.length]="strictfp"; +if(java.lang.reflect.Modifier.isInterface(modifiers))sb[sb.length]="interface"; +if(sb.length>0){ +return sb.join(" "); +}return""; +},"~N"); + +c$=Clazz.decorateAsClass(function(){ +this.clazz=null; +this.parameterTypes=null; +this.exceptionTypes=null; +this.modifiers=0; +Clazz.instantialize(this,arguments); +},java.lang.reflect,"Constructor",java.lang.reflect.AccessibleObject,[java.lang.reflect.GenericDeclaration,java.lang.reflect.Member]); +Clazz.makeConstructor(c$, +function(declaringClass,parameterTypes,checkedExceptions,modifiers){ +Clazz.superConstructor(this,java.lang.reflect.Constructor,[]); +this.clazz=declaringClass; +this.parameterTypes=parameterTypes; +this.exceptionTypes=checkedExceptions; +this.modifiers=modifiers; +},"Class,~A,~A,~N"); +Clazz.overrideMethod(c$,"getTypeParameters", +function(){ +return null; +}); +Clazz.defineMethod(c$,"toGenericString", +function(){ +return null; +}); +Clazz.defineMethod(c$,"getGenericParameterTypes", +function(){ +return null; +}); +Clazz.defineMethod(c$,"getGenericExceptionTypes", +function(){ +return null; +}); +Clazz.defineMethod(c$,"getParameterAnnotations", +function(){ +return null; +}); +Clazz.defineMethod(c$,"isVarArgs", +function(){ +return false; +}); +Clazz.overrideMethod(c$,"isSynthetic", +function(){ +return false; +}); +Clazz.overrideMethod(c$,"equals", +function(object){ +if(object!=null&&Clazz.instanceOf(object,java.lang.reflect.Constructor)){ +var other=object; +if(this.getDeclaringClass()===other.getDeclaringClass()){ +var params1=this.parameterTypes; +var params2=other.parameterTypes; +if(params1.length==params2.length){ +for(var i=0;i 0 ? x - 0x10000 : x); +}); + +Clazz_defineMethod(Number,"byteValue", +function(){ +var x = Math.round(this)&0xff; +return (this < 0 && x > 0 ? x - 0x100 : x); +}); + +Clazz_defineMethod(Number,"intValue", +function(){ +return Math.round(this)&0xffffffff; +}); + +Clazz_defineMethod(Number,"longValue", +function(){ +return Math.round(this); +}); + +Clazz_defineMethod(Number,"floatValue", +function(){ +return this.valueOf(); +}); +Clazz_defineMethod(Number,"doubleValue", +function(){ +return parseFloat(this.valueOf()); +}); + +Clazz_overrideMethod(Number,"hashCode", +function(){ +return this.valueOf(); +}); + +java.lang.Integer=Integer=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Integer,"Integer",Number,Comparable,null,true); +Integer.prototype.valueOf=function(){return 0;}; +Integer.toString=Integer.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +} else if(this===Integer){ +return"class java.lang.Integer"; +} +return""+this.valueOf(); +}; + +/* + +Clazz_makeConstructor(Integer, +function(){ +this.valueOf=function(){ +return 0; +}; +}); +*/ + + +Clazz_overrideConstructor(Integer, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + this.valueOf=function(){return v;}; +}); //BH +/* +Clazz_makeConstructor(Integer, +function(s){ +var value=Integer.parseInt(s,10); +this.valueOf=function(){ +return value; +}; +},"String"); +*/ +Integer.MIN_VALUE=Integer.prototype.MIN_VALUE=-0x80000000; +Integer.MAX_VALUE=Integer.prototype.MAX_VALUE=0x7fffffff; +Integer.TYPE=Integer.prototype.TYPE=Integer; + + +Integer.compare = Clazz_defineMethod(Integer,"compare", +function(i,j) { + return (i < j ? -1 : i > j ? 1 : 0); +},"Number,Number"); + +Clazz_defineMethod(Integer,"bitCount", +function(i) { + i = i - ((i >>> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); + i = (i + (i >>> 4)) & 0x0f0f0f0f; + i = i + (i >>> 8); + i = i + (i >>> 16); + return i & 0x3f; +},"Number"); +Integer.bitCount=Integer.prototype.bitCount; + +Clazz_defineMethod(Integer,"numberOfLeadingZeros", +function(i) { + if (i == 0) return 32; + var n = 1; + if (i >>> 16 == 0) { n += 16; i <<= 16; } + if (i >>> 24 == 0) { n += 8; i <<= 8; } + if (i >>> 28 == 0) { n += 4; i <<= 4; } + if (i >>> 30 == 0) { n += 2; i <<= 2; } + n -= i >>> 31; + return n; +},"Number"); +Integer.numberOfLeadingZeros=Integer.prototype.numberOfLeadingZeros; + +Clazz_defineMethod(Integer,"numberOfTrailingZeros", +function(i) { + if (i == 0) return 32; + var n = 31; + var y = i <<16; if (y != 0) { n = n -16; i = y; } + y = i << 8; if (y != 0) { n = n - 8; i = y; } + y = i << 4; if (y != 0) { n = n - 4; i = y; } + y = i << 2; if (y != 0) { n = n - 2; i = y; } + return n - ((i << 1) >>> 31); +},"Number"); +Integer.numberOfTrailingZeros=Integer.prototype.numberOfTrailingZeros; + +Clazz_defineMethod(Integer,"parseIntRadix", +function(s,radix){ +if(s==null){ +throw new NumberFormatException("null"); +}if(radix<2){ +throw new NumberFormatException("radix "+radix+" less than Character.MIN_RADIX"); +}if(radix>36){ +throw new NumberFormatException("radix "+radix+" greater than Character.MAX_RADIX"); +} +if (radix == 10) { + for (var i = s.length; --i >= 0;) { + var c = s.charCodeAt(i); + if (c >= 48 && c <= 57) continue; + if (i > 0 || c != 43 && c != 45) + throw new NumberFormatException("Not a Number : "+s); + + } +} +var i=parseInt(s,radix); +if(isNaN(i)){ +throw new NumberFormatException("Not a Number : "+s); +} +return i; +},"String, Number"); +Integer.parseIntRadix=Integer.prototype.parseIntRadix; + +Clazz_defineMethod(Integer,"parseInt", +function(s){ +return Integer.parseIntRadix(s,10); +},"String"); +Integer.parseInt=Integer.prototype.parseInt; + +/* +Clazz_defineMethod(Integer,"$valueOf", +function(s){ +return new Integer(Integer.parseIntRadix(s,10)); +},"String"); +*/ + +Clazz_overrideMethod(Integer,"$valueOf", +function(s){ +return new Integer(s); +}); + +/* +Clazz_defineMethod(Integer,"$valueOf", +function(s,r){ +return new Integer(Integer.parseIntRadix(s,r)); +},"String, Number"); +*/ + +Integer.$valueOf=Integer.prototype.$valueOf; + + +Clazz_overrideMethod(Integer,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Integer)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Integer.toHexString=Integer.prototype.toHexString=function(d){ +if(d.valueOf)d=d.valueOf(); +if (d < 0) { +var b = d & 0xFFFFFF; +var c = ((d>>24)&0xFF); +return c._numberToString(16) + (b = "000000" + b._numberToString(16)).substring(b.length - 6); +} +return d._numberToString(16);}; +Integer.toOctalString=Integer.prototype.toOctalString=function(d){if(d.valueOf)d=d.valueOf();return d._numberToString(8);}; +Integer.toBinaryString=Integer.prototype.toBinaryString=function(d){if(d.valueOf)d=d.valueOf();return d._numberToString(2);}; + +Integer.decodeRaw=Clazz_defineMethod(Integer,"decodeRaw", function(n){ +if (n.indexOf(".") >= 0)n = ""; +var i = (n.startsWith("-") ? 1 : 0); +n = n.replace(/\#/, "0x").toLowerCase(); +var radix=(n.startsWith("0x", i) ? 16 : n.startsWith("0", i) ? 8 : 10); +// The general problem with parseInt is that is not strict -- ParseInt("10whatever") == 10. +// Number is strict, but Number("055") does not work, though ParseInt("055", 8) does. +// need to make sure negative numbers are negative +n = Number(n) & 0xFFFFFFFF; +return (radix == 8 ? parseInt(n, 8) : n); +},"~S"); + +Integer.decode=Clazz_defineMethod(Integer,"decode", function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < Integer.MIN_VALUE|| n > Integer.MAX_VALUE) + throw new NumberFormatException("Invalid Integer"); + return new Integer(n); +},"~S"); + +Clazz_overrideMethod(Integer,"hashCode", +function(){ +return this.valueOf(); +}); + +// Note that Long is problematic in JavaScript + +java.lang.Long=Long=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Long,"Long",Number,Comparable,null,true); +Long.prototype.valueOf=function(){return 0;}; +Long.toString=Long.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +}else if(this===Long){ +return"class java.lang.Long"; +} +return""+this.valueOf(); +}; + +Clazz_overrideConstructor(Long, function(v){ + v == null && (v = 0); + v = (typeof v == "number" ? Math.round(v) : Integer.parseIntRadix(v, 10)); +this.valueOf=function(){return v;}; +}); + +//Long.MIN_VALUE=Long.prototype.MIN_VALUE=-0x8000000000000000; +//Long.MAX_VALUE=Long.prototype.MAX_VALUE=0x7fffffffffffffff; +Long.TYPE=Long.prototype.TYPE=Long; + +Clazz_defineMethod(Long,"parseLong", +function(s,radix){ + return Integer.parseInt(s, radix || 10); +}); + +Long.parseLong=Long.prototype.parseLong; + +Clazz_overrideMethod(Long,"$valueOf", +function(s){ +return new Long(s); +}); +/* +Clazz_defineMethod(Long,"$valueOf", +function(s){ +return new Long(s); +},"Number"); + +Clazz_defineMethod(Long,"$valueOf", +function(s,r){ +return new Long(Long.parseLong(s,r)); +},"String, Number"); +*/ +Long.$valueOf=Long.prototype.$valueOf; +Clazz_overrideMethod(Long,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Long)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Long.toHexString=Long.prototype.toHexString=function(i){ +return i.toString(16); +}; +Long.toOctalString=Long.prototype.toOctalString=function(i){ +return i.toString(8); +}; +Long.toBinaryString=Long.prototype.toBinaryString=function(i){ +return i.toString(2); +}; + + +Long.decode=Clazz_defineMethod(Long,"decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n)) + throw new NumberFormatException("Invalid Long"); + return new Long(n); +},"~S"); + +java.lang.Short = Short = function () { +Clazz_instantialize (this, arguments); +}; +Clazz_decorateAsType (Short, "Short", Number, Comparable, null, true); +Short.prototype.valueOf = function () { return 0; }; +Short.toString = Short.prototype.toString = function () { + if (arguments.length != 0) { + return "" + arguments[0]; + } else if (this === Short) { + return "class java.lang.Short"; // Short.class.toString + } + return "" + this.valueOf (); +}; + +Clazz_overrideConstructor(Short, +function (v) { + v == null && (v = 0); + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + v = v.shortValue(); + this.valueOf = function () {return v;}; +}); + + +Short.MIN_VALUE = Short.prototype.MIN_VALUE = -32768; +Short.MAX_VALUE = Short.prototype.MAX_VALUE = 32767; +Short.TYPE = Short.prototype.TYPE = Short; + +Clazz_defineMethod(Short, "parseShortRadix", +function (s, radix) { +return Integer.parseIntRadix(s, radix).shortValue(); +}, "String, Number"); +Short.parseShortRadix = Short.prototype.parseShortRadix; + +Clazz_defineMethod(Short, "parseShort", +function (s) { +return Short.parseShortRadix (s, 10); +}, "String"); + +Short.parseShort = Short.prototype.parseShort; + +/* +Clazz_defineMethod(Short, "$valueOf", +function (s) { +return new Short(Short.parseShort (s, 10)); +}, "String"); + */ + +Clazz_overrideMethod(Short, "$valueOf", +function (s) { +return new Short(s); +}); + +/* +Clazz_defineMethod(Short, "$valueOf", +function (s, r) { +return new Short(Short.parseShort (s, r)); +}, "String, Number"); + */ + +Short.$valueOf = Short.prototype.$valueOf; +Clazz_overrideMethod(Short, "equals", +function (s) { +if(s == null || !Clazz_instanceOf(s, Short) ){ + return false; +} +return s.valueOf() == this.valueOf(); +}, "Object"); +Short.toHexString = Short.prototype.toHexString = function (i) { + return i.toString (16); +}; +Short.toOctalString = Short.prototype.toOctalString = function (i) { + return i.toString (8); +}; +Short.toBinaryString = Short.prototype.toBinaryString = function (i) { + return i.toString (2); +}; +Short.decode = Clazz_defineMethod(Short, "decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < -32768|| n > 32767) + throw new NumberFormatException("Invalid Short"); + return new Short(n); +}, "~S"); + +java.lang.Byte=Byte=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Byte,"Byte",Number,Comparable,null,true); +Byte.prototype.valueOf=function(){return 0;}; +Byte.toString=Byte.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +}else if(this===Byte){ +return"class java.lang.Byte"; +} +return""+this.valueOf(); +}; +Clazz_makeConstructor(Byte, +function(v){ + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + v = v.byteValue(); +this.valueOf=function(){ +return v; +}; +}); + +Byte.serialVersionUID=Byte.prototype.serialVersionUID=-7183698231559129828; +Byte.MIN_VALUE=Byte.prototype.MIN_VALUE=-128; +Byte.MAX_VALUE=Byte.prototype.MAX_VALUE=127; +Byte.SIZE=Byte.prototype.SIZE=8; +Byte.TYPE=Byte.prototype.TYPE=Byte; + +Clazz_defineMethod(Byte,"parseByteRadix", +function(s,radix){ + return Integer.parseIntRadix(s, radix).byteValue(); +},"String, Number"); +Byte.parseByteRadix=Byte.prototype.parseByteRadix; + +Clazz_defineMethod(Byte,"parseByte", +function(s){ +return Byte.parseByte(s,10); +},"String"); + +Byte.parseByte=Byte.prototype.parseByte; + +Clazz_overrideMethod(Byte, "$valueOf", +function (s) { +return new Byte(s); +}); + +Byte.$valueOf=Byte.prototype.$valueOf; +Clazz_overrideMethod(Byte,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Byte)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Byte.toHexString=Byte.prototype.toHexString=function(i){ +return i.toString(16); +}; +Byte.toOctalString=Byte.prototype.toOctalString=function(i){ +return i.toString(8); +}; +Byte.toBinaryString=Byte.prototype.toBinaryString=function(i){ +return i.toString(2); +}; +Byte.decode=Clazz_defineMethod(Byte,"decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < -128|| n > 127) + throw new NumberFormatException("Invalid Byte"); +return new Byte(n); +},"~S"); + +Clazz._floatToString = function(f) { + var s = ""+f + if (s.indexOf(".") < 0 && s.indexOf("e") < 0 && s != "NaN") + s += ".0"; + return s; +} + +java.lang.Float=Float=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Float,"Float",Number,Comparable,null,true); +Float.prototype.valueOf=function(){return 0;}; +Float.toString=Float.prototype.toString=function(){ +if(arguments.length!=0){ +return Clazz._floatToString(arguments[0]); +}else if(this===Float){ +return"class java.lang.Float"; +} +return Clazz._floatToString(this.valueOf()); +}; + +Clazz._a32 = null; + +Float.floatToIntBits = function(f) { +var a = Clazz._a32 || (Clazz._a32 = new Float32Array(1)); +a[0] = f; +return new Int32Array(a.buffer)[0]; +} + +Clazz_overrideConstructor(Float, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Number(v); + this.valueOf=function(){return v;} +}); + +Float.serialVersionUID=Float.prototype.serialVersionUID=-2671257302660747028; +Float.MIN_VALUE=Float.prototype.MIN_VALUE=1.4e-45; +Float.MAX_VALUE=Float.prototype.MAX_VALUE=3.4028235e+38; +Float.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY; +Float.POSITIVE_INFINITY=Number.POSITIVE_INFINITY; +Float.NaN=Number.NaN; +Float.TYPE=Float.prototype.TYPE=Float; + +Clazz_defineMethod(Float,"parseFloat", +function(s){ +if(s==null){ +throw new NumberFormatException("null"); +} +if (typeof s == "number")return s; // important -- typeof NaN is "number" and is OK here +var floatVal=Number(s); +if(isNaN(floatVal)){ +throw new NumberFormatException("Not a Number : "+s); +} +return floatVal; +},"String"); +Float.parseFloat=Float.prototype.parseFloat; + +Clazz_overrideMethod(Float,"$valueOf", +function(s){ +return new Float(s); +}); + +Float.$valueOf=Float.prototype.$valueOf; + +Clazz_defineMethod(Float,"isNaN", +function(num){ +return isNaN(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Float.isNaN=Float.prototype.isNaN; +Clazz_defineMethod(Float,"isInfinite", +function(num){ +return!isFinite(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Float.isInfinite=Float.prototype.isInfinite; + +Clazz_overrideMethod(Float,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Float)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); + +java.lang.Double=Double=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Double,"Double",Number,Comparable,null,true); +Double.prototype.valueOf=function(){return 0;}; +Double.toString=Double.prototype.toString=function(){ +if(arguments.length!=0){ +return Clazz._floatToString(arguments[0]); +}else if(this===Double){ +return"class java.lang.Double"; +} +return Clazz._floatToString(this.valueOf()); +}; + +Clazz_overrideConstructor(Double, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Double.parseDouble(v); + this.valueOf=function(){return v;}; +}); // BH + +Double.serialVersionUID=Double.prototype.serialVersionUID=-9172774392245257468; +Double.MIN_VALUE=Double.prototype.MIN_VALUE=4.9e-324; +Double.MAX_VALUE=Double.prototype.MAX_VALUE=1.7976931348623157e+308; +Double.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY; +Double.POSITIVE_INFINITY=Number.POSITIVE_INFINITY; +Double.NaN=Number.NaN; +Double.TYPE=Double.prototype.TYPE=Double; + +Clazz_defineMethod(Double,"isNaN", +function(num){ +return isNaN(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Double.isNaN=Double.prototype.isNaN; +Clazz_defineMethod(Double,"isInfinite", +function(num){ +return!isFinite(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Double.isInfinite=Double.prototype.isInfinite; + +Clazz_defineMethod(Double,"parseDouble", +function(s){ +if(s==null){ +throw new NumberFormatException("null"); +} +if (typeof s == "number")return s; // important -- typeof NaN is "number" and is OK here +var doubleVal=Number(s); +if(isNaN(doubleVal)){ +throw new NumberFormatException("Not a Number : "+s); +} +return doubleVal; +},"String"); +Double.parseDouble=Double.prototype.parseDouble; + +/* +Clazz_defineMethod(Double,"$valueOf", +function(s){ +return new Double(this.parseDouble(s)); +},"String"); +*/ + +Clazz_defineMethod(Double,"$valueOf", +function(v){ +return new Double(v); +},"Number"); + +Double.$valueOf=Double.prototype.$valueOf; + +Clazz_overrideMethod(Double,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Double)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); + + +//java.lang.B00lean = Boolean; ?? BH why this? +Boolean = java.lang.Boolean = Boolean || function () {Clazz_instantialize (this, arguments);}; +if (Clazz._supportsNativeObject) { + for (var i = 0; i < Clazz._extendedObjectMethods.length; i++) { + var p = Clazz._extendedObjectMethods[i]; + Boolean.prototype[p] = Clazz._O.prototype[p]; + } +} +Boolean.__CLASS_NAME__="Boolean"; +Clazz_implementOf(Boolean,[java.io.Serializable,java.lang.Comparable]); +Boolean.equals=Clazz._innerFunctions.equals; +Boolean.getName=Clazz._innerFunctions.getName; +Boolean.serialVersionUID=Boolean.prototype.serialVersionUID=-3665804199014368530; + +//Clazz_makeConstructor(Boolean, +//function(value){ +//this.valueOf=function(){ +//return value; +//}; +//},"~B"); + +Clazz_overrideConstructor(Boolean, +function(s){ + var b = ((typeof s == "string" ? Boolean.toBoolean(s) : s) ? true : false); + this.valueOf=function(){return b;}; +},"~O"); + +Boolean.parseBoolean=Clazz_defineMethod(Boolean,"parseBoolean", +function(s){ +return Boolean.toBoolean(s); +},"~S"); +Clazz_defineMethod(Boolean,"booleanValue", +function(){ +return this.valueOf(); +}); +Boolean.$valueOf=Clazz_overrideMethod(Boolean,"$valueOf", +function(b){ +return((typeof b == "string"? "true".equalsIgnoreCase(b) : b)?Boolean.TRUE:Boolean.FALSE); +}); + +/* +Boolean.toString=Clazz_defineMethod(Boolean,"toString", +function(b){ +return b?"true":"false"; +},"~B"); +*/ + +Clazz_overrideMethod(Boolean,"toString", +function(){ +return this.valueOf()?"true":"false"; +}); +Clazz_overrideMethod(Boolean,"hashCode", +function(){ +return this.valueOf()?1231:1237; +}); +Clazz_overrideMethod(Boolean,"equals", +function(obj){ +if(Clazz_instanceOf(obj,Boolean)){ +return this.booleanValue()==obj.booleanValue(); +}return false; +},"~O"); +Boolean.getBoolean=Clazz_defineMethod(Boolean,"getBoolean", +function(name){ +var result=false; +try{ +result=Boolean.toBoolean(System.getProperty(name)); +}catch(e){ +if(Clazz_instanceOf(e,IllegalArgumentException)){ +}else if(Clazz_instanceOf(e,NullPointerException)){ +}else{ +throw e; +} +} +return result; +},"~S"); +Clazz_overrideMethod(Boolean,"compareTo", +function(b){ +return(b.value==this.value?0:(this.value?1:-1)); +},"Boolean"); +Boolean.toBoolean=Clazz_defineMethod(Boolean,"toBoolean", +($fz=function(name){ +return((name!=null)&&name.equalsIgnoreCase("true")); +},$fz.isPrivate=true,$fz),"~S"); +Boolean.TRUE=Boolean.prototype.TRUE=new Boolean(true); +Boolean.FALSE=Boolean.prototype.FALSE=new Boolean(false); +Boolean.TYPE=Boolean.prototype.TYPE=Boolean; + + +Clazz._Encoding=new Object(); + +(function(Encoding) { + +Encoding.UTF8="utf-8"; +Encoding.UTF16="utf-16"; +Encoding.ASCII="ascii"; + + +Encoding.guessEncoding=function(str){ +if(str.charCodeAt(0)==0xEF&&str.charCodeAt(1)==0xBB&&str.charCodeAt(2)==0xBF){ +return Encoding.UTF8; +}else if(str.charCodeAt(0)==0xFF&&str.charCodeAt(1)==0xFE){ +return Encoding.UTF16; +}else{ +return Encoding.ASCII; +} +}; + +Encoding.guessEncodingArray=function(a){ +if(a[0]==0xEF&&a[1]==0xBB&&a[2]==0xBF){ +return Encoding.UTF8; +}else if(a[0]==0xFF&&a[1]==0xFE){ +return Encoding.UTF16; +}else{ +return Encoding.ASCII; +} +}; + +Encoding.readUTF8=function(str){ +if (typeof str != "string") return Encoding.readUTF8Array(str); +var encoding=Encoding.guessEncoding(str); +var startIdx=0; +if(encoding==Encoding.UTF8){ +startIdx=3; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} +var arrs=new Array(); +for(var i=startIdx;i0xc0&&charCode<0xe0){ +var c1=charCode&0x1f; +i++; +var c2=str.charCodeAt(i)&0x3f; +var c=(c1<<6)+c2; +arrs[arrs.length]=String.fromCharCode(c); +}else if(charCode>=0xe0){ +var c1=charCode&0x0f; +i++; +var c2=str.charCodeAt(i)&0x3f; +i++; +var c3=str.charCodeAt(i)&0x3f; +var c=(c1<<12)+(c2<<6)+c3; +arrs[arrs.length]=String.fromCharCode(c); +} +} +return arrs.join(''); +}; + +Encoding.readUTF8Array=function(a){ +var encoding=Encoding.guessEncodingArray(a); +var startIdx=0; +if(encoding==Encoding.UTF8){ +startIdx=3; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} +var arrs=new Array(); +for(var i=startIdx;i0xc0&&charCode<0xe0){ +var c1=charCode&0x1f; +var c2=a[++i]&0x3f; +var c=(c1<<6)+c2; +arrs[arrs.length]=String.fromCharCode(c); +}else if(charCode>=0xe0){ +var c1=charCode&0x0f; +var c2=a[++i]&0x3f; +var c3=a[++i]&0x3f; +var c=(c1<<12)+(c2<<6)+c3; +arrs[arrs.length]=String.fromCharCode(c); +} +} +return arrs.join(''); +}; + +Encoding.convert2UTF8=function(str){ +var encoding=this.guessEncoding(str); +var startIdx=0; +if(encoding==Encoding.UTF8){ +return str; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} + +var offset=0; +var arrs=new Array(offset+str.length-startIdx); + +for(var i=startIdx;i>6); +var c2=0x80+(charCode&0x003f); +arrs[offset+i-startIdx]=String.fromCharCode(c1)+String.fromCharCode(c2); +}else{ +var c1=0xe0+((charCode&0xf000)>>12); +var c2=0x80+((charCode&0x0fc0)>>6); +var c3=0x80+(charCode&0x003f); +arrs[offset+i-startIdx]=String.fromCharCode(c1)+String.fromCharCode(c2)+String.fromCharCode(c3); +} +} +return arrs.join(''); +}; +Encoding.base64Chars=new Array( +'A','B','C','D','E','F','G','H', +'I','J','K','L','M','N','O','P', +'Q','R','S','T','U','V','W','X', +'Y','Z','a','b','c','d','e','f', +'g','h','i','j','k','l','m','n', +'o','p','q','r','s','t','u','v', +'w','x','y','z','0','1','2','3', +'4','5','6','7','8','9','+','/' +); +Encoding.encodeBase64=function(str){ +if(str==null||str.length==0)return str; +var b64=Encoding.base64Chars; +var length=str.length; +var index=0; +var buf=[]; +var c0,c1,c2; +while(index>2]; +if(index>4)]; +if(index>6)]; +buf[buf.length]=b64[c2&0x3F]; +}else{ +buf[buf.length]=b64[((c1<<2)&0x3c)]; +buf[buf.length]='='; +} +}else{ +buf[buf.length]=b64[(c0<<4)&0x30]; +buf[buf.length]='='; +buf[buf.length]='='; +} +} +return buf.join(''); +}; +Encoding.decodeBase64=function(str){ +if(str==null||str.length==0)return str; +var b64=Encoding.base64Chars; +var xb64=Encoding.xBase64Chars; +if(Encoding.xBase64Chars==null){ +xb64=new Object(); +for(var i=0;i>4); +if(c2!=null){ +buf[buf.length]=String.fromCharCode(((c1<<4)&0xff)|c2>>2); +if(c3!=null){ +buf[buf.length]=String.fromCharCode(((c2<<6)&0xff)|c3); +} +} +} +return buf.join(''); +}; + +if(String.prototype.$replace==null){ +java.lang.String=String; +Clazz._setDeclared("String", String); + +if(Clazz._supportsNativeObject){ +for(var i=0;i= 0) c1 = "\\" + c1; + } else { + c1=c1.replace(/([\\\$\.\*\+\|\?\^\{\}\(\)\[\]])/g,function($0,$1){return"\\"+$1;}); + } + return this.replace(new RegExp(c1,"gm"),c2); +}; +sp.$generateExpFunction=function(str){ +var arr=[]; +var orders=[]; +var idx=0; +arr[0]=""; +var i=0; +for(;ithis.length-len)|| +(ooffset>other.length-len)){ +return false; +} +var s1=this.substring(toffset,toffset+len); +var s2=other.substring(ooffset,ooffset+len); +if(ignoreCase){ +s1=s1.toLowerCase(); +s2=s2.toLowerCase(); +} +return s1==s2; +}; + + + +sp.$plit=function(regex,limit){ +if (!limit && regex == " ") + return this.split(regex); + +if(limit!=null&&limit>0){ +if(limit==1){ +return this; +} +var regExp=new RegExp("("+regex+")","gm"); +var count=1; +var s=this.replace(regExp,function($0,$1){ +count++; +if(count==limit){ +return"@@_@@"; +}else if(count>limit){ +return $0; +}else{ +return $0; +} +}); +regExp=new RegExp(regex,"gm"); +var arr=this.split(regExp); +if(arr.length>limit){ +arr[limit-1]=s.substring(s.indexOf("@@_@@")+5); +arr.length=limit; +} +return arr; +}else{ +var regExp=new RegExp(regex,"gm"); +return this.split(regExp); +} +}; +/* +sp.trim=function(){ +var len=this.length; +var st=0; + +while((st0)||(lens.length-pc)){ +return false; +} +while(--pc>=0){ +if(s.charAt(to++)!=prefix.charAt(po++)){ +return false; +} +} +return true; +}; + +sp.startsWith=function(prefix){ +if(arguments.length==1){ +return sn(this,arguments[0],0); +}else if(arguments.length==2){ +return sn(this,arguments[0],arguments[1]); +}else{ +return false; +} +}; + +sp.endsWith=function(suffix){ +return sn(this, suffix,this.length-suffix.length); +}; + +} + +sp.equals=function(anObject){ +return this.valueOf()==anObject; +}; + +sp.equalsIgnoreCase=function(anotherString){ +return(anotherString==null)?false:(this==anotherString +||this.toLowerCase()==anotherString.toLowerCase()); +}; + + +sp.hash=0; + +sp.hashCode=function(){ +var h=this.hash; +if(h==0){ +var off=0; +var len=this.length; +for(var i=0;i255){ +arrs[ii]=0x1a; +arrs[ii+1]=c&0xff; +arrs[ii+2]=(c&0xff00)>>8; +ii+=2; +}else{ +arrs[ii]=c; +} +ii++; +} +return Clazz_newByteArray(arrs); +}; + +/* +sp.compareTo=function(anotherString){ +if(anotherString==null){ +throw new java.lang.NullPointerException(); +} +var len1=this.length; +var len2=anotherString.length; +var n=Math.min(len1,len2); +var k=0; +while(k= 0} // bh added +sp.compareTo = function(a){return this > a ? 1 : this < a ? -1 : 0} // bh added + + + +sp.toCharArray=function(){ +var result=new Array(this.length); +for(var i=0;is2){ +return 1; +}else{ +return-1; +} +} +}; + +sp.contentEquals=function(sb){ +if(this.length!=sb.length()){ +return false; +} +var v=sb.getValue(); +var i=0; +var j=0; +var n=this.length; +while(n--!=0){ +if(this.charCodeAt(i++)!=v[j++]){ +return false; +} +} +return true; +}; + +sp.getChars=function(srcBegin,srcEnd,dst,dstBegin){ +if(srcBegin<0){ +throw new StringIndexOutOfBoundsException(srcBegin); +} +if(srcEnd>this.length){ +throw new StringIndexOutOfBoundsException(srcEnd); +} +if(srcBegin>srcEnd){ +throw new StringIndexOutOfBoundsException(srcEnd-srcBegin); +} +if(dst==null){ +throw new NullPointerException(); +} +for(var i=0;ibytes.length){ + throw new IndexOutOfBoundsException(); + } + if(length>0){ + var isChar=(bytes[offset].length!=null); + if(isChar){ + for(var i=0;i0;){ + value[i]=String.fromCharCode(bytes[i+offset]&0xff); + } + }else{ + hibyte<<=8; + for(var i=count;i-->0;){ + value[i]=String.fromCharCode(hibyte|(bytes[i+offset]&0xff)); + } + } + return value.join(''); +default: + var s=""; + for(var i=0;i= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd || c == 0x1680 + || c >= 0x2000 && c != 0x2007 && (c <= 0x200b || c == 0x2028 || c == 0x2029 || c == 0x3000)); +},"~N"); +c$.isLetter=Clazz_defineMethod(c$,"isLetter", +function(c){ +c = c.charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122); +},"~N"); +c$.isLetterOrDigit=Clazz_defineMethod(c$,"isLetterOrDigit", +function(c){ +c = c.charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57); +},"~N"); +c$.isSpaceChar=Clazz_defineMethod(c$,"isSpaceChar", +function(c){ + var i = c.charCodeAt(0); +if(i==0x20||i==0xa0||i==0x1680)return true; +if(i<0x2000)return false; +return i<=0x200b||i==0x2028||i==0x2029||i==0x202f||i==0x3000; +},"~N"); +c$.digit=Clazz_defineMethod(c$,"digit", +function(c,radix){ +var i = c.charCodeAt(0); +if(radix >= 2 && radix <= 36){ + if(i < 128){ + var result = -1; + if(48 <= i && i <= 57){ + result = i - 48; + }else if(97 <= i && i <= 122){ + result = i - 87; + }else if(65 <= i && i <= 90){ + result=i-(55); + } + return (result < radix ? result : -1); + } +} +return -1; +},"~N,~N"); +Clazz_overrideMethod(c$,"toString", +function(){ +var buf=[this.value]; +return String.valueOf(buf); +}); +c$.toString=Clazz_overrideMethod(c$,"toString", +function(c){ +{ +if(this===Character){ +return"class java.lang.Character"; +} +}return String.valueOf(c); +},"~N"); +c$.TYPE=c$; + + + +Clazz._ArrayWrapper = function(a, type) { + return { + a: a, + __CLASS_NAME__:"Array", + superClazz: Array, + getComponentType: function() {return type}, + instanceOf: function(o) { return Clazz_instanceOf(type, o) }, + getName: function() { return this.__CLASS_NAME__ } + }; +} +c$=Clazz_declareType(java.lang.reflect,"Array"); +c$.newInstance=Clazz_defineMethod(c$,"newInstance", +function(componentType,size){ +var a = Clazz_newArray(size); + a.getClass = function() { return new Clazz._ArrayWrapper(this, componentType);}; +return a; +},"Class,~N"); + +c$.getLength = function(o){return o.length}; +c$.get = function(o, i){return o[i]}; + +javautil.Date=Date; +Date.TYPE="javautil.Date"; +Date.__CLASS_NAME__="Date"; +Clazz._setDeclared("java.util.Date", Date); +Clazz._setDeclared("Date", Date); +Clazz_implementOf(Date,[java.io.Serializable,java.lang.Comparable]); +Clazz_defineMethod(javautil.Date,"clone", +function(){ +return new Date(this.getTime()); +}); + +Clazz_defineMethod(javautil.Date,"before", +function(when){ +return this.getTime()when.getTime(); +},"javautil.Date"); +Clazz_defineMethod(javautil.Date,"equals", +function(obj){ +return Clazz_instanceOf(obj,javautil.Date)&&this.getTime()==(obj).getTime(); +},"Object"); +Clazz_defineMethod(javautil.Date,"compareTo", +function(anotherDate){ +if (anotherDate == null)return 1; +var thisTime=this.getTime(); +var anotherTime=anotherDate.getTime(); +return(thisTime>32)); +}); + +c$=Clazz_decorateAsClass(function(){ +this.source=null; +Clazz_instantialize(this,arguments); +},javautil,"EventObject",null,java.io.Serializable); +Clazz_makeConstructor(c$, +function(source){ +if(source!=null)this.source=source; +else throw new IllegalArgumentException(); +},"~O"); +Clazz_defineMethod(c$,"getSource", +function(){ +return this.source; +}); +Clazz_overrideMethod(c$,"toString", +function(){ +return this.getClass().getName()+"[source="+String.valueOf(this.source)+']'; +}); +Clazz_declareInterface(javautil,"EventListener"); + +c$=Clazz_decorateAsClass(function(){ +this.listener=null; +Clazz_instantialize(this,arguments); +},javautil,"EventListenerProxy",null,javautil.EventListener); +Clazz_makeConstructor(c$, +function(listener){ +this.listener=listener; +},"javautil.EventListener"); +Clazz_defineMethod(c$,"getListener", +function(){ +return this.listener; +}); +Clazz_declareInterface(javautil,"Iterator"); + +Clazz_declareInterface(javautil,"ListIterator",javautil.Iterator); +Clazz_declareInterface(javautil,"Enumeration"); +Clazz_declareInterface(javautil,"Collection",Iterable); + +Clazz_declareInterface(javautil,"Set",javautil.Collection); +Clazz_declareInterface(javautil,"Map"); +Clazz_declareInterface(javautil.Map,"Entry"); + +Clazz_declareInterface(javautil,"List",javautil.Collection); + +Clazz_declareInterface(javautil,"Queue",javautil.Collection); +Clazz_declareInterface(javautil,"RandomAccess"); +c$=Clazz_decorateAsClass(function(){ +this.detailMessage=null; +this.cause=null; +this.stackTrace=null; +Clazz_instantialize(this,arguments); +},java.lang,"Throwable",null,java.io.Serializable); +Clazz_prepareFields(c$,function(){ +this.cause=this; +//alert("e0 "+ arguments.callee.caller.caller.caller.caller.caller) +}); +Clazz_makeConstructor(c$, +function(){ +this.fillInStackTrace(); +}); +Clazz_makeConstructor(c$, +function(message,cause){ +this.fillInStackTrace(); +if (!cause && typeof message == "object") { + cause = message; + message = cause.toString(); +} +cause && (this.cause=cause); +this.detailMessage=message; +},"~S,Throwable"); + + + + +Clazz_defineMethod(c$,"getMessage", +function(){ +return (this.message || this.detailMessage || this.toString()); +}); +Clazz_defineMethod(c$,"getLocalizedMessage", +function(){ +return this.getMessage(); +}); +Clazz_defineMethod(c$,"getCause", +function(){ +return(this.cause===this?null:this.cause); +}); +Clazz_defineMethod(c$,"initCause", +function(cause){ +if(this.cause!==this)throw new IllegalStateException("Can't overwrite cause"); +if(cause===this)throw new IllegalArgumentException("Self-causation not permitted"); +this.cause=cause; +return this; +},"Throwable"); +Clazz_overrideMethod(c$,"toString", +function(){ +var s=this.getClass().getName(); +var message=this.message || this.detailMessage; +return(message ? s+": "+message : s); +}); +Clazz_defineMethod(c$,"printStackTrace", +function(){ +System.err.println(this.getStackTrace ? this.getStackTrace() : this.message + " " + Clazz_getStackTrace()); +}); + +Clazz_defineMethod(c$,"getStackTrace", +function(){ +var s = "" + this + "\n"; +for(var i=0;i-1||caller!=null){ +var clazzName=null; +var nativeClass=null; +if(!noLooping||caller==Clazz_tryToSearchAndExecute||caller==Clazz_superCall||caller==null){ +if(index<0){ +break; +} +noLooping=true; +superCaller=Clazz._callingStackTraces[index].caller; +nativeClass=Clazz._callingStackTraces[index].owner; +index--; +}else{ +superCaller=caller; +if(superCaller.claxxOwner!=null){ +nativeClass=superCaller.claxxOwner; +}else if(superCaller.exClazz!=null){ +nativeClass=superCaller.exClazz; +} +} +var st=new StackTraceElement( +((nativeClass!=null&&nativeClass.__CLASS_NAME__.length!=0)? +nativeClass.__CLASS_NAME__:"anonymous"), +((superCaller.exName==null)?"anonymous":superCaller.exName) ++" ("+Clazz_getParamsType(superCaller.arguments)+")", +null,-1); +st.nativeClazz=nativeClass; +this.stackTrace[this.stackTrace.length]=st; +for(var i=0;i":this.declaringClass; +}); +Clazz_defineMethod(c$,"getFileName", +function(){ +return this.fileName; +}); +Clazz_defineMethod(c$,"getLineNumber", +function(){ +return this.lineNumber; +}); +Clazz_defineMethod(c$,"getMethodName", +function(){ +return(this.methodName==null)?"":this.methodName; +}); +Clazz_overrideMethod(c$,"hashCode", +function(){ +if(this.methodName==null){ +return 0; +}return this.methodName.hashCode()^this.declaringClass.hashCode(); +}); +Clazz_defineMethod(c$,"isNativeMethod", +function(){ +return this.lineNumber==-2; +}); +Clazz_overrideMethod(c$,"toString", +function(){ +var buf = this.getClassName() + "." + this.getMethodName(); +if(this.isNativeMethod()){ +buf += ("(Native Method)"); +}else{ +var fName=this.getFileName(); +if(fName==null){ +buf += ("(Unknown Source)"); +}else{ +var lineNum=this.getLineNumber(); +buf += ('('); +buf += (fName); +if(lineNum>=0){ +buf += (':'); +buf = buf + lineNum; +}buf += (')'); +}}return buf; +}); +TypeError.prototype.getMessage || (TypeError.prototype.getMessage = function(){ return (this.message || this.toString()) + (this.getStackTrace ? this.getStackTrace() : Clazz_getStackTrace())}); + + +Clazz_Error = Error; + +Clazz_declareTypeError = function (prefix, name, clazzParent, interfacez, + parentClazzInstance, _declareType) { + var f = function () { + Clazz_instantialize (this, arguments); + return Clazz_Error(); + }; + return Clazz_decorateAsClass (f, prefix, name, clazzParent, interfacez, + parentClazzInstance); +}; + +// at least allow Error() by itself to work as before +Clazz._Error || (Clazz._Error = Error); +Clazz_decorateAsClass (function (){Clazz_instantialize(this, arguments);return Clazz._Error();}, java.lang, "Error", Throwable); + +//c$=Clazz_declareTypeError(java.lang,"Error",Throwable); + + +c$=Clazz_declareType(java.lang,"LinkageError",Error); + +c$=Clazz_declareType(java.lang,"IncompatibleClassChangeError",LinkageError); + +c$=Clazz_declareType(java.lang,"AbstractMethodError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"AssertionError",Error); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,AssertionError,["" + detailMessage,(Clazz_instanceOf(detailMessage,Throwable)?detailMessage:null)]); +},"~O"); + +c$=Clazz_declareType(java.lang,"ClassCircularityError",LinkageError); + +c$=Clazz_declareType(java.lang,"ClassFormatError",LinkageError); + +c$=Clazz_decorateAsClass(function(){ +this.exception=null; +Clazz_instantialize(this,arguments); +},java.lang,"ExceptionInInitializerError",LinkageError); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ExceptionInInitializerError); +this.initCause(null); +}); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,ExceptionInInitializerError,[detailMessage]); +this.initCause(null); +},"~S"); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,ExceptionInInitializerError); +this.exception=exception; +this.initCause(exception); +},"Throwable"); +Clazz_defineMethod(c$,"getException", +function(){ +return this.exception; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.exception; +}); + +c$=Clazz_declareType(java.lang,"IllegalAccessError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"InstantiationError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"VirtualMachineError",Error); + +c$=Clazz_declareType(java.lang,"InternalError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"NoClassDefFoundError",LinkageError); + +c$=Clazz_declareType(java.lang,"NoSuchFieldError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"NoSuchMethodError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"OutOfMemoryError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"StackOverflowError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"UnknownError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"UnsatisfiedLinkError",LinkageError); + +c$=Clazz_declareType(java.lang,"UnsupportedClassVersionError",ClassFormatError); + +c$=Clazz_declareType(java.lang,"VerifyError",LinkageError); + +c$=Clazz_declareType(java.lang,"ThreadDeath",Error); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ThreadDeath,[]); +}); + +c$=Clazz_declareType(java.lang,"Exception",Throwable); + +c$=Clazz_declareType(java.lang,"RuntimeException",Exception); + +c$=Clazz_declareType(java.lang,"ArithmeticException",RuntimeException); + +c$=Clazz_declareType(java.lang,"IndexOutOfBoundsException",RuntimeException); + +c$=Clazz_declareType(java.lang,"ArrayIndexOutOfBoundsException",IndexOutOfBoundsException); +Clazz_makeConstructor(c$, +function(index){ +Clazz_superConstructor(this,ArrayIndexOutOfBoundsException,["Array index out of range: "+index]); +},"~N"); + +c$=Clazz_declareType(java.lang,"ArrayStoreException",RuntimeException); + +c$=Clazz_declareType(java.lang,"ClassCastException",RuntimeException); + +c$=Clazz_decorateAsClass(function(){ +this.ex=null; +Clazz_instantialize(this,arguments); +},java.lang,"ClassNotFoundException",Exception); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ClassNotFoundException,[Clazz_castNullAs("Throwable")]); +}); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,ClassNotFoundException,[detailMessage,null]); +},"~S"); +Clazz_makeConstructor(c$, +function(detailMessage,exception){ +Clazz_superConstructor(this,ClassNotFoundException,[detailMessage]); +this.ex=exception; +},"~S,Throwable"); +Clazz_defineMethod(c$,"getException", +function(){ +return this.ex; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.ex; +}); + +c$=Clazz_declareType(java.lang,"CloneNotSupportedException",Exception); + +c$=Clazz_declareType(java.lang,"IllegalAccessException",Exception); + +c$=Clazz_declareType(java.lang,"IllegalArgumentException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,IllegalArgumentException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"IllegalMonitorStateException",RuntimeException); + +c$=Clazz_declareType(java.lang,"IllegalStateException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,IllegalStateException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"IllegalThreadStateException",IllegalArgumentException); + +c$=Clazz_declareType(java.lang,"InstantiationException",Exception); + +c$=Clazz_declareType(java.lang,"InterruptedException",Exception); + +c$=Clazz_declareType(java.lang,"NegativeArraySizeException",RuntimeException); + +c$=Clazz_declareType(java.lang,"NoSuchFieldException",Exception); + +c$=Clazz_declareType(java.lang,"NoSuchMethodException",Exception); + +c$=Clazz_declareType(java.lang,"NullPointerException",RuntimeException); + +c$=Clazz_declareType(java.lang,"NumberFormatException",IllegalArgumentException); + +c$=Clazz_declareType(java.lang,"SecurityException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,SecurityException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"StringIndexOutOfBoundsException",IndexOutOfBoundsException); +Clazz_makeConstructor(c$, +function(index){ +Clazz_superConstructor(this,StringIndexOutOfBoundsException,["String index out of range: "+index]); +},"~N"); + +c$=Clazz_declareType(java.lang,"UnsupportedOperationException",RuntimeException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,UnsupportedOperationException,[]); +}); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,UnsupportedOperationException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_decorateAsClass(function(){ +this.target=null; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"InvocationTargetException",Exception); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[Clazz_castNullAs("Throwable")]); +}); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[null,exception]); +this.target=exception; +},"Throwable"); +Clazz_makeConstructor(c$, +function(exception,detailMessage){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[detailMessage,exception]); +this.target=exception; +},"Throwable,~S"); +Clazz_defineMethod(c$,"getTargetException", +function(){ +return this.target; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.target; +}); + +c$=Clazz_decorateAsClass(function(){ +this.undeclaredThrowable=null; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"UndeclaredThrowableException",RuntimeException); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,java.lang.reflect.UndeclaredThrowableException); +this.undeclaredThrowable=exception; +this.initCause(exception); +},"Throwable"); +Clazz_makeConstructor(c$, +function(exception,detailMessage){ +Clazz_superConstructor(this,java.lang.reflect.UndeclaredThrowableException,[detailMessage]); +this.undeclaredThrowable=exception; +this.initCause(exception); +},"Throwable,~S"); +Clazz_defineMethod(c$,"getUndeclaredThrowable", +function(){ +return this.undeclaredThrowable; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.undeclaredThrowable; +}); + +c$=Clazz_declareType(java.io,"IOException",Exception); + + +c$=Clazz_declareType(java.io,"CharConversionException",java.io.IOException); + +c$=Clazz_declareType(java.io,"EOFException",java.io.IOException); + +c$=Clazz_declareType(java.io,"FileNotFoundException",java.io.IOException); + +c$=Clazz_decorateAsClass(function(){ +this.bytesTransferred=0; +Clazz_instantialize(this,arguments); +},java.io,"InterruptedIOException",java.io.IOException); + +c$=Clazz_declareType(java.io,"SyncFailedException",java.io.IOException); + +c$=Clazz_declareType(java.io,"UnsupportedEncodingException",java.io.IOException); + +c$=Clazz_declareType(java.io,"UTFDataFormatException",java.io.IOException); + +// ignore ObjectStream exceptions + +Clazz_defineMethod(c$,"getMessage", +function(){ +var msg=Clazz_superCall(this,java.io.WriteAbortedException,"getMessage",[]); +return (this.detail ? msg + "; "+this.detail.toString() : msg); +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.detail; +}); + +c$=Clazz_declareType(javautil,"ConcurrentModificationException",RuntimeException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,javautil.ConcurrentModificationException,[]); +}); + +c$=Clazz_declareType(javautil,"EmptyStackException",RuntimeException); + +c$=Clazz_decorateAsClass(function(){ +this.className=null; +this.key=null; +Clazz_instantialize(this,arguments); +},javautil,"MissingResourceException",RuntimeException); +Clazz_makeConstructor(c$, +function(detailMessage,className,resourceName){ +Clazz_superConstructor(this,javautil.MissingResourceException,[detailMessage]); +this.className=className; +this.key=resourceName; +},"~S,~S,~S"); +Clazz_defineMethod(c$,"getClassName", +function(){ +return this.className; +}); +Clazz_defineMethod(c$,"getKey", +function(){ +return this.key; +}); + +c$=Clazz_declareType(javautil,"NoSuchElementException",RuntimeException); + +c$=Clazz_declareType(javautil,"TooManyListenersException",Exception); + +c$=Clazz_declareType(java.lang,"Void"); +c$.TYPE = c$; + +Clazz_declareInterface(java.lang.reflect,"GenericDeclaration"); +Clazz_declareInterface(java.lang.reflect,"AnnotatedElement"); + +c$=Clazz_declareType(java.lang.reflect,"AccessibleObject",null,java.lang.reflect.AnnotatedElement); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$,"isAccessible", +function(){ +return false; +}); +c$.setAccessible=Clazz_defineMethod(c$,"setAccessible", +function(objects,flag){ +return; +},"~A,~B"); +Clazz_defineMethod(c$,"setAccessible", +function(flag){ +return; +},"~B"); +Clazz_overrideMethod(c$,"isAnnotationPresent", +function(annotationType){ +return false; +},"Class"); +Clazz_overrideMethod(c$,"getDeclaredAnnotations", +function(){ +return new Array(0); +}); +Clazz_overrideMethod(c$,"getAnnotations", +function(){ +return new Array(0); +}); +Clazz_overrideMethod(c$,"getAnnotation", +function(annotationType){ +return null; +},"Class"); +c$.marshallArguments=Clazz_defineMethod(c$,"marshallArguments", +function(parameterTypes,args){ +return null; +},"~A,~A"); +Clazz_defineMethod(c$,"invokeV", +function(receiver,args){ +return; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeL", +function(receiver,args){ +return null; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeI", +function(receiver,args){ +return 0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeJ", +function(receiver,args){ +return 0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeF", +function(receiver,args){ +return 0.0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeD", +function(receiver,args){ +return 0.0; +},"~O,~A"); +c$.emptyArgs=c$.prototype.emptyArgs=new Array(0); +Clazz_declareInterface(java.lang.reflect,"InvocationHandler"); +c$=Clazz_declareInterface(java.lang.reflect,"Member"); +c$=Clazz_declareType(java.lang.reflect,"Modifier"); + +Clazz_makeConstructor(c$, +function(){ +}); +c$.isAbstract=Clazz_defineMethod(c$,"isAbstract", +function(modifiers){ +return((modifiers&1024)!=0); +},"~N"); +c$.isFinal=Clazz_defineMethod(c$,"isFinal", +function(modifiers){ +return((modifiers&16)!=0); +},"~N"); +c$.isInterface=Clazz_defineMethod(c$,"isInterface", +function(modifiers){ +return((modifiers&512)!=0); +},"~N"); +c$.isNative=Clazz_defineMethod(c$,"isNative", +function(modifiers){ +return((modifiers&256)!=0); +},"~N"); +c$.isPrivate=Clazz_defineMethod(c$,"isPrivate", +function(modifiers){ +return((modifiers&2)!=0); +},"~N"); +c$.isProtected=Clazz_defineMethod(c$,"isProtected", +function(modifiers){ +return((modifiers&4)!=0); +},"~N"); +c$.isPublic=Clazz_defineMethod(c$,"isPublic", +function(modifiers){ +return((modifiers&1)!=0); +},"~N"); +c$.isStatic=Clazz_defineMethod(c$,"isStatic", +function(modifiers){ +return((modifiers&8)!=0); +},"~N"); +c$.isStrict=Clazz_defineMethod(c$,"isStrict", +function(modifiers){ +return((modifiers&2048)!=0); +},"~N"); +c$.isSynchronized=Clazz_defineMethod(c$,"isSynchronized", +function(modifiers){ +return((modifiers&32)!=0); +},"~N"); +c$.isTransient=Clazz_defineMethod(c$,"isTransient", +function(modifiers){ +return((modifiers&128)!=0); +},"~N"); +c$.isVolatile=Clazz_defineMethod(c$,"isVolatile", +function(modifiers){ +return((modifiers&64)!=0); +},"~N"); +c$.toString=Clazz_defineMethod(c$,"toString", +function(modifiers){ +var sb=new Array(0); +if(java.lang.reflect.Modifier.isPublic(modifiers))sb[sb.length]="public"; +if(java.lang.reflect.Modifier.isProtected(modifiers))sb[sb.length]="protected"; +if(java.lang.reflect.Modifier.isPrivate(modifiers))sb[sb.length]="private"; +if(java.lang.reflect.Modifier.isAbstract(modifiers))sb[sb.length]="abstract"; +if(java.lang.reflect.Modifier.isStatic(modifiers))sb[sb.length]="static"; +if(java.lang.reflect.Modifier.isFinal(modifiers))sb[sb.length]="final"; +if(java.lang.reflect.Modifier.isTransient(modifiers))sb[sb.length]="transient"; +if(java.lang.reflect.Modifier.isVolatile(modifiers))sb[sb.length]="volatile"; +if(java.lang.reflect.Modifier.isSynchronized(modifiers))sb[sb.length]="synchronized"; +if(java.lang.reflect.Modifier.isNative(modifiers))sb[sb.length]="native"; +if(java.lang.reflect.Modifier.isStrict(modifiers))sb[sb.length]="strictfp"; +if(java.lang.reflect.Modifier.isInterface(modifiers))sb[sb.length]="interface"; +if(sb.length>0){ +return sb.join(" "); +}return""; +},"~N"); + +c$=Clazz_decorateAsClass(function(){ +this.clazz=null; +this.parameterTypes=null; +this.exceptionTypes=null; +this.modifiers=0; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"Constructor",java.lang.reflect.AccessibleObject,[java.lang.reflect.GenericDeclaration,java.lang.reflect.Member]); +Clazz_makeConstructor(c$, +function(declaringClass,parameterTypes,checkedExceptions,modifiers){ +Clazz_superConstructor(this,java.lang.reflect.Constructor,[]); +this.clazz=declaringClass; +this.parameterTypes=parameterTypes; +this.exceptionTypes=checkedExceptions; +this.modifiers=modifiers; +},"Class,~A,~A,~N"); +Clazz_overrideMethod(c$,"getTypeParameters", +function(){ +return null; +}); +Clazz_defineMethod(c$,"toGenericString", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getGenericParameterTypes", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getGenericExceptionTypes", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getParameterAnnotations", +function(){ +return null; +}); +Clazz_defineMethod(c$,"isVarArgs", +function(){ +return false; +}); +Clazz_overrideMethod(c$,"isSynthetic", +function(){ +return false; +}); +Clazz_overrideMethod(c$,"equals", +function(object){ +if(object!=null&&Clazz_instanceOf(object,java.lang.reflect.Constructor)){ +var other=object; +if(this.getDeclaringClass()===other.getDeclaringClass()){ +var params1=this.parameterTypes; +var params2=other.parameterTypes; +if(params1.length==params2.length){ +for(var i=0;i 10 || newPriority < 1) { +throw new IllegalArgumentException(); +}this.priority = newPriority; +}, "~N"); +Clazz_defineMethod(c$, "getPriority", +function(){ +return this.priority; +}); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "getName", +function(){ +return String.valueOf(this.name); +}); +Clazz_defineMethod(c$, "getThreadGroup", +function(){ +return this.group; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +var group = this.getThreadGroup(); +if (group != null) { +return "Thread[" + this.getName() + "," + this.getPriority() + "," + group.getName() + "]"; +} else { +return "Thread[" + this.getName() + "," + this.getPriority() + "," + "" + "]"; +}}); +c$.J2S_THREAD = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.parent = null; +this.name = null; +this.maxPriority = 0; +Clazz_instantialize(this, arguments);}, java.lang, "ThreadGroup", null); +Clazz_makeConstructor(c$, +function(){ +this.name = "system"; +this.maxPriority = 10; +}); +Clazz_makeConstructor(c$, +function(name){ +this.construct (Thread.currentThread().getThreadGroup(), name); +}, "~S"); +Clazz_makeConstructor(c$, +function(parent, name){ +if (parent == null) { +throw new NullPointerException(); +}this.name = name; +this.parent = parent; +this.maxPriority = 10; +}, "ThreadGroup,~S"); +Clazz_defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_defineMethod(c$, "getParent", +function(){ +return this.parent; +}); +Clazz_defineMethod(c$, "getMaxPriority", +function(){ +return this.maxPriority; +}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.FilterInputStream"], "java.io.BufferedInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.count = 0; +this.pos = 0; +this.markpos = -1; +this.marklimit = 0; +Clazz_instantialize(this, arguments);}, java.io, "BufferedInputStream", java.io.FilterInputStream); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor(this, java.io.BufferedInputStream, [$in]); +this.buf = Clazz_newByteArray (8192, 0); +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "getInIfOpen", +function(){ +var input = this.$in; +if (input == null) throw new java.io.IOException("Stream closed"); +return input; +}); +Clazz_defineMethod(c$, "getBufIfOpen", +function(){ +var buffer = this.buf; +if (buffer == null) throw new java.io.IOException("Stream closed"); +return buffer; +}); +Clazz_overrideMethod(c$, "resetStream", +function(){ +}); +Clazz_defineMethod(c$, "fill", +function(){ +var buffer = this.getBufIfOpen(); +if (this.markpos < 0) this.pos = 0; + else if (this.pos >= buffer.length) if (this.markpos > 0) { +var sz = this.pos - this.markpos; +System.arraycopy(buffer, this.markpos, buffer, 0, sz); +this.pos = sz; +this.markpos = 0; +} else if (buffer.length >= this.marklimit) { +this.markpos = -1; +this.pos = 0; +} else { +var nsz = this.pos * 2; +if (nsz > this.marklimit) nsz = this.marklimit; +var nbuf = Clazz_newByteArray (nsz, 0); +System.arraycopy(buffer, 0, nbuf, 0, this.pos); +buffer = this.buf = nbuf; +}this.count = this.pos; +var n = this.isRead(buffer, this.pos, buffer.length - this.pos); +if (n > 0) this.count = n + this.pos; +}); +Clazz_overrideMethod(c$, "readByteAsInt", +function(){ +if (this.pos >= this.count) { +this.fill(); +if (this.pos >= this.count) return -1; +}return this.getBufIfOpen()[this.pos++] & 0xff; +}); +Clazz_defineMethod(c$, "read1", +function(b, off, len){ +var avail = this.count - this.pos; +if (avail <= 0) { +if (len >= this.getBufIfOpen().length && this.markpos < 0) { +return this.isRead(b, off, len); +}this.fill(); +avail = this.count - this.pos; +if (avail <= 0) return -1; +}var cnt = (avail < len) ? avail : len; +System.arraycopy(this.getBufIfOpen(), this.pos, b, off, cnt); +this.pos += cnt; +return cnt; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "isRead", +function(b, off, len){ +var is = this.getInIfOpen(); +{ +if (is.readBAIS) return is.readBAIS(b, off, len); +}return is.read(b, off, len); +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.readBIS(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readBIS", +function(b, off, len){ +this.getBufIfOpen(); +if ((off | len | (off + len) | (b.length - (off + len))) < 0) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var n = 0; +for (; ; ) { +var nread = this.read1(b, off + n, len - n); +if (nread <= 0) return (n == 0) ? nread : n; +n += nread; +if (n >= len) return n; +var input = this.$in; +if (input != null && input.available() <= 0) return n; +} +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(n){ +this.getBufIfOpen(); +if (n <= 0) { +return 0; +}var avail = this.count - this.pos; +if (avail <= 0) { +if (this.markpos < 0) return this.getInIfOpen().skip(n); +this.fill(); +avail = this.count - this.pos; +if (avail <= 0) return 0; +}var skipped = (avail < n) ? avail : n; +this.pos += skipped; +return skipped; +}, "~N"); +Clazz_overrideMethod(c$, "available", +function(){ +var n = this.count - this.pos; +var avail = this.getInIfOpen().available(); +return n > (2147483647 - avail) ? 2147483647 : n + avail; +}); +Clazz_overrideMethod(c$, "mark", +function(readlimit){ +this.marklimit = readlimit; +this.markpos = this.pos; +}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.getBufIfOpen(); +if (this.markpos < 0) throw new java.io.IOException("Resetting to invalid mark"); +this.pos = this.markpos; +}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "close", +function(){ +var input = this.$in; +this.$in = null; +if (input != null) input.close(); +return; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.BufferedReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +this.cb = null; +this.nChars = 0; +this.nextChar = 0; +this.markedChar = -1; +this.readAheadLimit = 0; +this.skipLF = false; +this.markedSkipLF = false; +Clazz_instantialize(this, arguments);}, java.io, "BufferedReader", java.io.Reader); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor(this, java.io.BufferedReader, [$in]); +this.$in = $in; +this.setSize(8192); +}, "java.io.Reader"); +Clazz_defineMethod(c$, "setSize", +function(sz){ +if (sz <= 0) throw new IllegalArgumentException("Buffer size <= 0"); +this.cb = Clazz_newCharArray (sz, '\0'); +this.nextChar = this.nChars = 0; +}, "~N"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.$in == null) throw new java.io.IOException("Stream closed"); +}); +Clazz_defineMethod(c$, "fill", +function(){ +var dst; +if (this.markedChar <= -1) { +dst = 0; +} else { +var delta = this.nextChar - this.markedChar; +if (delta >= this.readAheadLimit) { +this.markedChar = -2; +this.readAheadLimit = 0; +dst = 0; +} else { +if (this.readAheadLimit <= this.cb.length) { +System.arraycopy(this.cb, this.markedChar, this.cb, 0, delta); +this.markedChar = 0; +dst = delta; +} else { +var ncb = Clazz_newCharArray (this.readAheadLimit, '\0'); +System.arraycopy(this.cb, this.markedChar, ncb, 0, delta); +this.cb = ncb; +this.markedChar = 0; +dst = delta; +}this.nextChar = this.nChars = delta; +}}var n; +do { +n = this.$in.read(this.cb, dst, this.cb.length - dst); +} while (n == 0); +if (n > 0) { +this.nChars = dst + n; +this.nextChar = dst; +}}); +Clazz_defineMethod(c$, "read1", +function(cbuf, off, len){ +if (this.nextChar >= this.nChars) { +if (len >= this.cb.length && this.markedChar <= -1 && !this.skipLF) { +return this.$in.read(cbuf, off, len); +}this.fill(); +}if (this.nextChar >= this.nChars) return -1; +if (this.skipLF) { +this.skipLF = false; +if (this.cb[this.nextChar] == '\n') { +this.nextChar++; +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) return -1; +}}var n = Math.min(len, this.nChars - this.nextChar); +System.arraycopy(this.cb, this.nextChar, cbuf, off, n); +this.nextChar += n; +return n; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "read", +function(cbuf, off, len){ +{ +this.ensureOpen(); +if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var n = this.read1(cbuf, off, len); +if (n <= 0) return n; +while ((n < len) && this.$in.ready()) { +var n1 = this.read1(cbuf, off + n, len - n); +if (n1 <= 0) break; +n += n1; +} +return n; +}}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readLine1", +function(ignoreLF){ +var s = null; +var startChar; +{ +this.ensureOpen(); +var omitLF = ignoreLF || this.skipLF; +for (; ; ) { +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) { +if (s != null && s.length > 0) return s.toString(); +return null; +}var eol = false; +var c = String.fromCharCode(0); +var i; +if (omitLF && (this.cb[this.nextChar] == '\n')) this.nextChar++; +this.skipLF = false; +omitLF = false; +charLoop : for (i = this.nextChar; i < this.nChars; i++) { +c = this.cb[i]; +if ((c == '\n') || (c == '\r')) { +eol = true; +break charLoop; +}} +startChar = this.nextChar; +this.nextChar = i; +var str = String.instantialize(this.cb, startChar, i - startChar); +if (eol) { +if (s != null) { +s += str; +str = s; +}this.nextChar++; +if (c == '\r') { +this.skipLF = true; +}return str; +}if (s == null) s = ""; +s += str; +} +}}, "~B"); +Clazz_defineMethod(c$, "readLine", +function(){ +return this.readLine1(false); +}); +Clazz_overrideMethod(c$, "skip", +function(n){ +if (n < 0) { +throw new IllegalArgumentException("skip value is negative"); +}{ +this.ensureOpen(); +var r = n; +while (r > 0) { +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) break; +if (this.skipLF) { +this.skipLF = false; +if (this.cb[this.nextChar] == '\n') { +this.nextChar++; +}}var d = this.nChars - this.nextChar; +if (r <= d) { +this.nextChar += r; +r = 0; +break; +}r -= d; +this.nextChar = this.nChars; +} +return n - r; +}}, "~N"); +Clazz_defineMethod(c$, "ready", +function(){ +{ +this.ensureOpen(); +if (this.skipLF) { +if (this.nextChar >= this.nChars && this.$in.ready()) { +this.fill(); +}if (this.nextChar < this.nChars) { +if (this.cb[this.nextChar] == '\n') this.nextChar++; +this.skipLF = false; +}}return (this.nextChar < this.nChars) || this.$in.ready(); +}}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +if (readAheadLimit < 0) { +throw new IllegalArgumentException("Read-ahead limit < 0"); +}{ +this.ensureOpen(); +this.readAheadLimit = readAheadLimit; +this.markedChar = this.nextChar; +this.markedSkipLF = this.skipLF; +}}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +{ +this.ensureOpen(); +if (this.markedChar < 0) throw new java.io.IOException((this.markedChar == -2) ? "Mark invalid" : "Stream not marked"); +this.nextChar = this.markedChar; +this.skipLF = this.markedSkipLF; +}}); +Clazz_defineMethod(c$, "close", +function(){ +{ +if (this.$in == null) return; +this.$in.close(); +this.$in = null; +this.cb = null; +}}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Writer"], "java.io.BufferedWriter", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.out = null; +this.buf = null; +this.pos = 0; +this.lineSeparator = "\r\n"; +Clazz_instantialize(this, arguments);}, java.io, "BufferedWriter", java.io.Writer); +Clazz_makeConstructor(c$, +function(out){ +Clazz_superConstructor(this, java.io.BufferedWriter, [out]); +this.out = out; +this.buf = Clazz_newCharArray (8192, '\0'); +}, "java.io.Writer"); +Clazz_makeConstructor(c$, +function(out, size){ +Clazz_superConstructor(this, java.io.BufferedWriter, [out]); +if (size > 0) { +this.out = out; +this.buf = Clazz_newCharArray (size, '\0'); +} else { +throw new IllegalArgumentException(("K0058")); +}}, "java.io.Writer,~N"); +Clazz_defineMethod(c$, "close", +function(){ +{ +if (this.isOpen()) { +this.flush(); +this.out.close(); +this.buf = null; +this.out = null; +}}}); +Clazz_defineMethod(c$, "flush", +function(){ +{ +if (this.isOpen()) { +if (this.pos > 0) { +this.out.write(this.buf, 0, this.pos); +}this.pos = 0; +this.out.flush(); +} else { +throw new java.io.IOException(("K005d")); +}}}); +Clazz_defineMethod(c$, "isOpen", +function(){ +return this.out != null; +}); +Clazz_defineMethod(c$, "newLine", +function(){ +this.write("\r\n", 0, "\r\n".length); +}); +Clazz_defineMethod(c$, "write", +function(cbuf, offset, count){ +{ +if (!this.isOpen()) { +throw new java.io.IOException(("K005d")); +}if (offset < 0 || offset > cbuf.length - count || count < 0) { +throw new IndexOutOfBoundsException(); +}if (this.pos == 0 && count >= this.buf.length) { +this.out.write(cbuf, offset, count); +return; +}var available = this.buf.length - this.pos; +if (count < available) { +available = count; +}if (available > 0) { +System.arraycopy(cbuf, offset, this.buf, this.pos, available); +this.pos += available; +}if (this.pos == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +if (count > available) { +offset += available; +available = count - available; +if (available >= this.buf.length) { +this.out.write(cbuf, offset, available); +return; +}System.arraycopy(cbuf, offset, this.buf, this.pos, available); +this.pos += available; +}}}}, "~A,~N,~N"); +Clazz_defineMethod(c$, "write", +function(oneChar){ +{ +if (this.isOpen()) { +if (this.pos >= this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +}this.buf[this.pos++] = String.fromCharCode(oneChar); +} else { +throw new java.io.IOException(("K005d")); +}}}, "~N"); +Clazz_defineMethod(c$, "write", +function(str, offset, count){ +{ +if (!this.isOpen()) { +throw new java.io.IOException(("K005d")); +}if (count <= 0) { +return; +}if (offset > str.length - count || offset < 0) { +throw new StringIndexOutOfBoundsException(); +}if (this.pos == 0 && count >= this.buf.length) { +var chars = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + count, chars, 0); +this.out.write(chars, 0, count); +return; +}var available = this.buf.length - this.pos; +if (count < available) { +available = count; +}if (available > 0) { +str.getChars(offset, offset + available, this.buf, this.pos); +this.pos += available; +}if (this.pos == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +if (count > available) { +offset += available; +available = count - available; +if (available >= this.buf.length) { +var chars = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + available, chars, 0); +this.out.write(chars, 0, available); +return; +}str.getChars(offset, offset + available, this.buf, this.pos); +this.pos += available; +}}}}, "~S,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.InputStream"], "java.io.ByteArrayInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.pos = 0; +this.$mark = 0; +this.count = 0; +Clazz_instantialize(this, arguments);}, java.io, "ByteArrayInputStream", java.io.InputStream); +Clazz_makeConstructor(c$, +function(buf){ +Clazz_superConstructor (this, java.io.ByteArrayInputStream, []); +this.buf = buf; +this.pos = 0; +this.count = buf.length; +}, "~A"); +Clazz_overrideMethod(c$, "readByteAsInt", +function(){ +return (this.pos < this.count) ? (this.buf[this.pos++] & 0xff) : -1; +}); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.readBAIS(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readBAIS", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +}if (this.pos >= this.count) { +return -1; +}var avail = this.count - this.pos; +if (len > avail) { +len = avail; +}if (len <= 0) { +return 0; +}System.arraycopy(this.buf, this.pos, b, off, len); +this.pos += len; +return len; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(n){ +var k = this.count - this.pos; +if (n < k) { +k = n < 0 ? 0 : n; +}this.pos += k; +return k; +}, "~N"); +Clazz_overrideMethod(c$, "available", +function(){ +return this.count - this.pos; +}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +this.$mark = this.pos; +}, "~N"); +Clazz_overrideMethod(c$, "resetStream", +function(){ +}); +Clazz_overrideMethod(c$, "reset", +function(){ +this.pos = this.$mark; +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.OutputStream"], "java.io.ByteArrayOutputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.count = 0; +Clazz_instantialize(this, arguments);}, java.io, "ByteArrayOutputStream", java.io.OutputStream); +Clazz_makeConstructor(c$, +function(){ +this.construct (32); +}); +Clazz_makeConstructor(c$, +function(size){ +Clazz_superConstructor (this, java.io.ByteArrayOutputStream, []); +if (size < 0) { +throw new IllegalArgumentException("Negative initial size: " + size); +}this.buf = Clazz_newByteArray (size, 0); +}, "~N"); +Clazz_defineMethod(c$, "ensureCapacity", +function(minCapacity){ +if (minCapacity - this.buf.length > 0) this.grow(minCapacity); +}, "~N"); +Clazz_defineMethod(c$, "grow", +function(minCapacity){ +var oldCapacity = this.buf.length; +var newCapacity = oldCapacity << 1; +if (newCapacity - minCapacity < 0) newCapacity = minCapacity; +if (newCapacity < 0) { +if (minCapacity < 0) throw new OutOfMemoryError(); +newCapacity = minCapacity; +}this.buf = java.io.ByteArrayOutputStream.arrayCopyByte(this.buf, newCapacity); +}, "~N"); +c$.arrayCopyByte = Clazz_defineMethod(c$, "arrayCopyByte", +function(array, newLength){ +var t = Clazz_newByteArray (newLength, 0); +System.arraycopy(array, 0, t, 0, array.length < newLength ? array.length : newLength); +return t; +}, "~A,~N"); +Clazz_overrideMethod(c$, "writeByteAsInt", +function(b){ +this.ensureCapacity(this.count + 1); +this.buf[this.count] = b; +this.count += 1; +}, "~N"); +Clazz_defineMethod(c$, "write", +function(b, off, len){ +if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) - b.length > 0)) { +throw new IndexOutOfBoundsException(); +}this.ensureCapacity(this.count + len); +System.arraycopy(b, off, this.buf, this.count, len); +this.count += len; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "writeTo", +function(out){ +out.write(this.buf, 0, this.count); +}, "java.io.OutputStream"); +Clazz_defineMethod(c$, "reset", +function(){ +this.count = 0; +}); +Clazz_defineMethod(c$, "toByteArray", +function(){ +return (this.count == this.buf.length ? this.buf : java.io.ByteArrayOutputStream.arrayCopyByte(this.buf, this.count)); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.count; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return String.instantialize(this.buf, 0, this.count); +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.InputStream"], "java.io.FilterInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +Clazz_instantialize(this, arguments);}, java.io, "FilterInputStream", java.io.InputStream); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor (this, java.io.FilterInputStream, []); +this.$in = $in; +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "readByteAsInt", +function(){ +return this.$in.readByteAsInt(); +}); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.$in.read(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "skip", +function(n){ +return this.$in.skip(n); +}, "~N"); +Clazz_defineMethod(c$, "available", +function(){ +return this.$in.available(); +}); +Clazz_defineMethod(c$, "close", +function(){ +this.$in.close(); +}); +Clazz_defineMethod(c$, "mark", +function(readlimit){ +this.$in.mark(readlimit); +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +this.$in.reset(); +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return this.$in.markSupported(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable"], "java.io.InputStream", null, function(){ +var c$ = Clazz_declareType(java.io, "InputStream", null, java.io.Closeable); +Clazz_defineMethod(c$, "read", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var c = this.readByteAsInt(); +if (c == -1) { +return -1; +}b[off] = c; +var i = 1; +try { +for (; i < len; i++) { +c = this.readByteAsInt(); +if (c == -1) { +break; +}b[off + i] = c; +} +} catch (ee) { +if (Clazz_exceptionOf(ee,"java.io.IOException")){ +} else { +throw ee; +} +} +return i; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "skip", +function(n){ +var remaining = n; +var nr; +if (java.io.InputStream.skipBuffer == null) java.io.InputStream.skipBuffer = Clazz_newByteArray (2048, 0); +var localSkipBuffer = java.io.InputStream.skipBuffer; +if (n <= 0) { +return 0; +}while (remaining > 0) { +nr = this.read(localSkipBuffer, 0, Math.min(2048, remaining)); +if (nr < 0) { +break; +}remaining -= nr; +} +return n - remaining; +}, "~N"); +Clazz_defineMethod(c$, "available", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +Clazz_defineMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_defineMethod(c$, "resetStream", +function(){ +}); +c$.skipBuffer = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.InputStreamReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +this.isOpen = true; +this.charsetName = null; +this.isUTF8 = false; +this.bytearr = null; +this.pos = 0; +Clazz_instantialize(this, arguments);}, java.io, "InputStreamReader", java.io.Reader); +Clazz_makeConstructor(c$, +function($in, charsetName){ +Clazz_superConstructor(this, java.io.InputStreamReader, [$in]); +this.$in = $in; +this.charsetName = charsetName; +if (!(this.isUTF8 = "UTF-8".equals(charsetName)) && !"ISO-8859-1".equals(charsetName)) throw new NullPointerException("charsetName"); +}, "java.io.InputStream,~S"); +Clazz_defineMethod(c$, "getEncoding", +function(){ +return this.charsetName; +}); +Clazz_overrideMethod(c$, "read", +function(cbuf, offset, length){ +if (this.bytearr == null || this.bytearr.length < length) this.bytearr = Clazz_newByteArray (length, 0); +var c; +var char2; +var char3; +var byteCount = 0; +var charCount = offset; +var byteLen = this.$in.read(this.bytearr, this.pos, length - this.pos); +var nAvail = this.$in.available(); +if (byteLen < 0) return -1; +var nMax = byteLen; +while (byteCount < nMax) { +c = this.bytearr[byteCount] & 0xff; +if (this.isUTF8) switch (c >> 4) { +case 0xC: +case 0xD: +if (byteCount + 1 >= byteLen) { +if (nAvail >= 1) { +nMax = byteCount; +continue; +}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80) { +cbuf[charCount++] = String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); +byteCount += 2; +continue; +}this.isUTF8 = false; +break; +case 0xE: +if (byteCount + 2 >= byteLen) { +if (nAvail >= 2) { +nMax = byteCount; +continue; +}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80 && ((char3 = this.bytearr[byteCount + 2]) & 0xC0) == 0x80) { +cbuf[charCount++] = String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | (char3 & 0x3F)); +byteCount += 3; +continue; +}this.isUTF8 = false; +break; +} +byteCount++; +cbuf[charCount++] = String.fromCharCode(c); +} +this.pos = byteLen - byteCount; +for (var i = 0; i < this.pos; i++) { +this.bytearr[i] = this.bytearr[byteCount++]; +} +return charCount - offset; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "ready", +function(){ +return this.isOpen; +}); +Clazz_overrideMethod(c$, "close", +function(){ +this.$in.close(); +this.isOpen = false; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable", "$.Flushable"], "java.io.OutputStream", null, function(){ +var c$ = Clazz_declareType(java.io, "OutputStream", null, [java.io.Closeable, java.io.Flushable]); +Clazz_defineMethod(c$, "write", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return; +}for (var i = 0; i < len; i++) { +this.writeByteAsInt(b[off + i]); +} +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "flush", +function(){ +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable"], "java.io.Reader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.lock = null; +this.skipBuffer = String.fromCharCode(null); +Clazz_instantialize(this, arguments);}, java.io, "Reader", null, java.io.Closeable); +Clazz_makeConstructor(c$, +function(lock){ +if (lock == null) { +throw new NullPointerException(); +}this.lock = lock; +}, "~O"); +Clazz_defineMethod(c$, "skip", +function(n){ +if (n < 0) throw new IllegalArgumentException("skip value is negative"); +var nn = Math.min(n, 8192); +{ +if ((this.skipBuffer == null) || (this.skipBuffer.length < nn)) this.skipBuffer = Clazz_newCharArray (nn, '\0'); +var r = n; +while (r > 0) { +var nc = this.read(this.skipBuffer, 0, Math.min(r, nn)); +if (nc == -1) break; +r -= nc; +} +return n - r; +}}, "~N"); +Clazz_defineMethod(c$, "ready", +function(){ +return false; +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_defineMethod(c$, "mark", +function(readAheadLimit){ +throw new java.io.IOException("mark() not supported"); +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +throw new java.io.IOException("reset() not supported"); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.StringReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.str = null; +this.length = 0; +this.next = 0; +this.$mark = 0; +Clazz_instantialize(this, arguments);}, java.io, "StringReader", java.io.Reader); +Clazz_makeConstructor(c$, +function(s){ +Clazz_superConstructor(this, java.io.StringReader, [s]); +this.str = s; +this.length = s.length; +}, "~S"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.str == null) throw new java.io.IOException("Stream closed"); +}); +Clazz_overrideMethod(c$, "read", +function(cbuf, off, len){ +{ +this.ensureOpen(); +if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}if (this.next >= this.length) return -1; +var n = Math.min(this.length - this.next, len); +this.str.getChars(this.next, this.next + n, cbuf, off); +this.next += n; +return n; +}}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(ns){ +{ +this.ensureOpen(); +if (this.next >= this.length) return 0; +var n = Math.min(this.length - this.next, ns); +n = Math.max(-this.next, n); +this.next += n; +return n; +}}, "~N"); +Clazz_overrideMethod(c$, "ready", +function(){ +{ +this.ensureOpen(); +return true; +}}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +if (readAheadLimit < 0) { +throw new IllegalArgumentException("Read-ahead limit < 0"); +}{ +this.ensureOpen(); +this.$mark = this.next; +}}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +{ +this.ensureOpen(); +this.next = this.$mark; +}}); +Clazz_overrideMethod(c$, "close", +function(){ +this.str = null; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable", "$.Flushable", "java.lang.Appendable"], "java.io.Writer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.lock = null; +Clazz_instantialize(this, arguments);}, java.io, "Writer", null, [Appendable, java.io.Closeable, java.io.Flushable]); +Clazz_makeConstructor(c$, +function(){ +this.lock = this; +}); +Clazz_makeConstructor(c$, +function(lock){ +if (lock != null) { +this.lock = lock; +} else { +throw new NullPointerException(); +}}, "~O"); +Clazz_defineMethod(c$, "write", +function(buf){ +this.write(buf, 0, buf.length); +}, "~A"); +Clazz_defineMethod(c$, "write", +function(oneChar){ +{ +var oneCharArray = Clazz_newCharArray (1, '\0'); +oneCharArray[0] = String.fromCharCode(oneChar); +this.write(oneCharArray); +}}, "~N"); +Clazz_defineMethod(c$, "write", +function(str){ +var buf = Clazz_newCharArray (str.length, '\0'); +str.getChars(0, buf.length, buf, 0); +{ +this.write(buf); +}}, "~S"); +Clazz_defineMethod(c$, "write", +function(str, offset, count){ +if (count >= 0) { +var buf = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + count, buf, 0); +{ +this.write(buf); +}} else { +throw new StringIndexOutOfBoundsException(); +}}, "~S,~N,~N"); +Clazz_defineMethod(c$, "append", +function(c){ +this.write(c.charCodeAt(0)); +return this; +}, "~S"); +Clazz_defineMethod(c$, "append", +function(csq){ +if (null == csq) { +this.write("null"); +} else { +this.write(csq.toString()); +}return this; +}, "CharSequence"); +Clazz_defineMethod(c$, "append", +function(csq, start, end){ +if (null == csq) { +this.write("null".substring(start, end)); +} else { +this.write(csq.subSequence(start, end).toString()); +}return this; +}, "CharSequence,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.io.IOException"], "java.net.MalformedURLException", null, function(){ +var c$ = Clazz_declareType(java.net, "MalformedURLException", java.io.IOException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.net.MalformedURLException, []); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.io.IOException"], "java.net.UnknownServiceException", null, function(){ +var c$ = Clazz_declareType(java.net, "UnknownServiceException", java.io.IOException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.net.UnknownServiceException, []); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.util.Hashtable"], "java.net.URL", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.protocol = null; +this.host = null; +this.port = -1; +this.file = null; +this.query = null; +this.authority = null; +this.path = null; +this.userInfo = null; +this.ref = null; +this.handler = null; +this.$hashCode = -1; +Clazz_instantialize(this, arguments);}, java.net, "URL", null); +Clazz_makeConstructor(c$, +function(context, spec, handler){ +{ +switch (arguments.length) { +case 1: +spec = context;context = handler = null; +break; +case 2: +handler = null; +break; +case 3: +if (context == null || Clazz_instanceOf(context, java.net.URL)) +break; +default: +alert("java.net.URL constructor format not supported"); +break; +} +context && context.valueOf && context.valueOf() == null && (context = null); +}var original = spec; +var i; +var limit; +var c; +var start = 0; +var newProtocol = null; +var aRef = false; +var isRelative = false; +try { +limit = spec.length; +while ((limit > 0) && (spec.charAt(limit - 1) <= ' ')) { +limit--; +} +while ((start < limit) && (spec.charAt(start) <= ' ')) { +start++; +} +if (spec.regionMatches(true, start, "url:", 0, 4)) { +start += 4; +}if (start < spec.length && spec.charAt(start) == '#') { +aRef = true; +}for (i = start; !aRef && (i < limit) && ((c = (spec.charAt(i)).charCodeAt(0)) != 47); i++) { +if (c == 58) { +var s = spec.substring(start, i).toLowerCase(); +if (this.isValidProtocol(s)) { +newProtocol = s; +start = i + 1; +}break; +}} +this.protocol = newProtocol; +if ((context != null) && ((newProtocol == null) || newProtocol.equalsIgnoreCase(context.protocol))) { +if (handler == null) { +handler = context.handler; +}if (context.path != null && context.path.startsWith("/")) newProtocol = null; +if (newProtocol == null) { +this.protocol = context.protocol; +this.authority = context.authority; +this.userInfo = context.userInfo; +this.host = context.host; +this.port = context.port; +this.file = context.file; +this.path = context.path; +isRelative = true; +}}if (this.protocol == null) { +throw new java.net.MalformedURLException("no protocol: " + original); +}if (handler == null && (handler = java.net.URL.getURLStreamHandler(this.protocol)) == null) { +throw new java.net.MalformedURLException("unknown protocol: " + this.protocol); +}this.handler = handler; +i = spec.indexOf('#', start); +if (i >= 0) { +this.ref = spec.substring(i + 1, limit); +limit = i; +}if (isRelative && start == limit) { +this.query = context.query; +if (this.ref == null) { +this.ref = context.ref; +}}handler.parseURL(this, spec, start, limit); +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"java.net.MalformedURLException")){ +var e = e$$; +{ +throw e; +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +var exception = new java.net.MalformedURLException(e.getMessage()); +exception.initCause(e); +throw exception; +} +} else { +throw e$$; +} +} +}, "java.net.URL,~S,java.net.URLStreamHandler"); +Clazz_defineMethod(c$, "isValidProtocol", +function(protocol){ +var len = protocol.length; +if (len < 1) return false; +var c = protocol.charAt(0); +if (!Character.isLetter(c)) return false; +for (var i = 1; i < len; i++) { +c = protocol.charAt(i); +if (!Character.isLetterOrDigit(c) && c != '.' && c != '+' && c != '-') { +return false; +}} +return true; +}, "~S"); +Clazz_defineMethod(c$, "set5", +function(protocol, host, port, file, ref){ +{ +this.protocol = protocol; +this.host = host; +this.authority = port == -1 ? host : host + ":" + port; +this.port = port; +this.file = file; +this.ref = ref; +this.$hashCode = -1; +var q = file.lastIndexOf('?'); +if (q != -1) { +this.query = file.substring(q + 1); +this.path = file.substring(0, q); +} else this.path = file; +}}, "~S,~S,~N,~S,~S"); +Clazz_defineMethod(c$, "set", +function(protocol, host, port, authority, userInfo, path, query, ref){ +{ +this.protocol = protocol; +this.host = host; +this.port = port; +this.file = query == null ? path : path + "?" + query; +this.userInfo = userInfo; +this.path = path; +this.ref = ref; +this.$hashCode = -1; +this.query = query; +this.authority = authority; +}}, "~S,~S,~N,~S,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "getQuery", +function(){ +return this.query; +}); +Clazz_defineMethod(c$, "getPath", +function(){ +return this.path; +}); +Clazz_defineMethod(c$, "getUserInfo", +function(){ +return this.userInfo; +}); +Clazz_defineMethod(c$, "getAuthority", +function(){ +return this.authority; +}); +Clazz_defineMethod(c$, "getPort", +function(){ +return this.port; +}); +Clazz_defineMethod(c$, "getDefaultPort", +function(){ +return this.handler.getDefaultPort(); +}); +Clazz_defineMethod(c$, "getProtocol", +function(){ +return this.protocol; +}); +Clazz_defineMethod(c$, "getHost", +function(){ +return this.host; +}); +Clazz_defineMethod(c$, "getFile", +function(){ +return this.file; +}); +Clazz_defineMethod(c$, "getRef", +function(){ +return this.ref; +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz_instanceOf(obj,"java.net.URL"))) return false; +var u2 = obj; +return this.handler.equals2(this, u2); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +if (this.$hashCode != -1) return this.$hashCode; +this.$hashCode = this.handler.hashCode(this); +return this.$hashCode; +}); +Clazz_defineMethod(c$, "sameFile", +function(other){ +return this.handler.sameFile(this, other); +}, "java.net.URL"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.toExternalForm(); +}); +Clazz_defineMethod(c$, "toExternalForm", +function(){ +return this.handler.toExternalForm(this); +}); +Clazz_defineMethod(c$, "openConnection", +function(){ +return this.handler.openConnection(this); +}); +Clazz_defineMethod(c$, "openStream", +function(){ +return this.openConnection().getInputStream(); +}); +Clazz_defineMethod(c$, "getContent", +function(){ +return this.openConnection().getInputStream(); +}); +c$.setURLStreamHandlerFactory = Clazz_defineMethod(c$, "setURLStreamHandlerFactory", +function(fac){ +{ +if (java.net.URL.factory != null) { +throw new Error("factory already defined"); +}var security = System.getSecurityManager(); +if (security != null) { +security.checkSetFactory(); +}java.net.URL.handlers.clear(); +java.net.URL.factory = fac; +}}, "java.net.URLStreamHandlerFactory"); +c$.getURLStreamHandler = Clazz_defineMethod(c$, "getURLStreamHandler", +function(protocol){ +var handler = java.net.URL.handlers.get(protocol); +if (handler == null) { +if (java.net.URL.factory != null) { +handler = java.net.URL.factory.createURLStreamHandler(protocol); +}}return handler; +}, "~S"); +c$.factory = null; +c$.handlers = new java.util.Hashtable(); +c$.streamHandlerLock = new Clazz._O(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(null, "java.net.URLConnection", ["java.util.ArrayList"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.url = null; +this.doInput = true; +this.doOutput = false; +this.connected = false; +this.requests = null; +Clazz_instantialize(this, arguments);}, java.net, "URLConnection", null); +Clazz_makeConstructor(c$, +function(url){ +this.url = url; +}, "java.net.URL"); +Clazz_defineMethod(c$, "setDoInput", +function(doinput){ +if (this.connected) throw new IllegalStateException("Already connected"); +this.doInput = doinput; +}, "~B"); +Clazz_defineMethod(c$, "getDoInput", +function(){ +return this.doInput; +}); +Clazz_defineMethod(c$, "setDoOutput", +function(dooutput){ +if (this.connected) throw new IllegalStateException("Already connected"); +this.doOutput = dooutput; +}, "~B"); +Clazz_defineMethod(c$, "getDoOutput", +function(){ +return this.doOutput; +}); +Clazz_defineMethod(c$, "getURL", +function(){ +return this.url; +}); +Clazz_defineMethod(c$, "getInputStream", +function(){ +throw new java.net.UnknownServiceException("protocol doesn't support input"); +}); +Clazz_defineMethod(c$, "getOutputStream", +function(){ +throw new java.net.UnknownServiceException("protocol doesn't support output"); +}); +Clazz_defineMethod(c$, "setRequestProperty", +function(key, value){ +if (this.connected) throw new IllegalStateException("Already connected"); +if (key == null) throw new NullPointerException("key is null"); +if (this.requests == null) this.requests = new java.util.ArrayList(); +for (var i = this.requests.size(); --i >= 0; ) if (this.requests.get(i)[0].equals(key)) { +this.requests.get(i)[1] = value; +return; +} +this.requests.add( Clazz_newArray(-1, [key, value])); +}, "~S,~S"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +(function(){ +var c$ = Clazz_declareType(java.net, "URLEncoder", null); +c$.encode = Clazz_defineMethod(c$, "encode", +function(s){ +return encodeURIComponent(s); +}, "~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +(function(){ +var c$ = Clazz_declareType(java.net, "URLStreamHandler", null); +Clazz_defineMethod(c$, "openConnectionProxy", +function(u, p){ +throw new UnsupportedOperationException("Method not implemented."); +}, "java.net.URL,java.net.Proxy"); +Clazz_defineMethod(c$, "parseURL", +function(u, spec, start, limit){ +var protocol = u.getProtocol(); +var authority = u.getAuthority(); +var userInfo = u.getUserInfo(); +var host = u.getHost(); +var port = u.getPort(); +var path = u.getPath(); +var query = u.getQuery(); +var ref = u.getRef(); +var isRelPath = false; +var queryOnly = false; +if (start < limit) { +var queryStart = spec.indexOf('?'); +queryOnly = queryStart == start; +if ((queryStart != -1) && (queryStart < limit)) { +query = spec.substring(queryStart + 1, limit); +if (limit > queryStart) limit = queryStart; +spec = spec.substring(0, queryStart); +}}var i = 0; +var isUNCName = (start <= limit - 4) && (spec.charAt(start) == '/') && (spec.charAt(start + 1) == '/') && (spec.charAt(start + 2) == '/') && (spec.charAt(start + 3) == '/'); +if (!isUNCName && (start <= limit - 2) && (spec.charAt(start) == '/') && (spec.charAt(start + 1) == '/')) { +start += 2; +i = spec.indexOf('/', start); +if (i < 0) { +i = spec.indexOf('?', start); +if (i < 0) i = limit; +}host = authority = spec.substring(start, i); +var ind = authority.indexOf('@'); +if (ind != -1) { +userInfo = authority.substring(0, ind); +host = authority.substring(ind + 1); +} else { +userInfo = null; +}if (host != null) { +if (host.length > 0 && (host.charAt(0) == '[')) { +throw new IllegalArgumentException("Invalid host: " + host); +}ind = host.indexOf(':'); +port = -1; +if (ind >= 0) { +if (host.length > (ind + 1)) { +port = Integer.parseInt(host.substring(ind + 1)); +}host = host.substring(0, ind); +}} else { +host = ""; +}if (port < -1) throw new IllegalArgumentException("Invalid port number :" + port); +start = i; +if (authority.length > 0) path = ""; +}if (host == null) { +host = ""; +}if (start < limit) { +if (spec.charAt(start) == '/') { +path = spec.substring(start, limit); +} else if (path != null && path.length > 0) { +isRelPath = true; +var ind = path.lastIndexOf('/'); +var seperator = ""; +if (ind == -1 && authority != null) seperator = "/"; +path = path.substring(0, ind + 1) + seperator + spec.substring(start, limit); +} else { +var seperator = (authority != null) ? "/" : ""; +path = seperator + spec.substring(start, limit); +}} else if (queryOnly && path != null) { +var ind = path.lastIndexOf('/'); +if (ind < 0) ind = 0; +path = path.substring(0, ind) + "/"; +}if (path == null) path = ""; +if (isRelPath) { +while ((i = path.indexOf("/./")) >= 0) { +path = path.substring(0, i) + path.substring(i + 2); +} +i = 0; +while ((i = path.indexOf("/../", i)) >= 0) { +if (i > 0 && (limit = path.lastIndexOf('/', i - 1)) >= 0 && (path.indexOf("/../", limit) != 0)) { +path = path.substring(0, limit) + path.substring(i + 3); +i = 0; +} else { +i = i + 3; +}} +while (path.endsWith("/..")) { +i = path.indexOf("/.."); +if ((limit = path.lastIndexOf('/', i - 1)) >= 0) { +path = path.substring(0, limit + 1); +} else { +break; +}} +if (path.startsWith("./") && path.length > 2) path = path.substring(2); +if (path.endsWith("/.")) path = path.substring(0, path.length - 1); +}this.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~N,~N"); +Clazz_defineMethod(c$, "getDefaultPort", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "equals2", +function(u1, u2){ +var ref1 = u1.getRef(); +var ref2 = u2.getRef(); +return (ref1 === ref2 || (ref1 != null && ref1.equals(ref2))) && this.sameFile(u1, u2); +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "hashCode", +function(u){ +var h = 0; +var protocol = u.getProtocol(); +if (protocol != null) h += protocol.hashCode(); +h += u.toString().hashCode(); +var file = u.getFile(); +if (file != null) h += file.hashCode(); +if (u.getPort() == -1) h += this.getDefaultPort(); + else h += u.getPort(); +var ref = u.getRef(); +if (ref != null) h += ref.hashCode(); +return h; +}, "java.net.URL"); +Clazz_defineMethod(c$, "sameFile", +function(u1, u2){ +if (!((u1.getProtocol() === u2.getProtocol()) || (u1.getProtocol() != null && u1.getProtocol().equalsIgnoreCase(u2.getProtocol())))) return false; +if (!(u1.getFile() === u2.getFile() || (u1.getFile() != null && u1.getFile().equals(u2.getFile())))) return false; +var port1; +var port2; +port1 = (u1.getPort() != -1) ? u1.getPort() : u1.handler.getDefaultPort(); +port2 = (u2.getPort() != -1) ? u2.getPort() : u2.handler.getDefaultPort(); +if (port1 != port2) return false; +if (!this.hostsEqual(u1, u2)) return false; +return true; +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "hostsEqual", +function(u1, u2){ +if (u1.getHost() != null && u2.getHost() != null) return u1.getHost().equalsIgnoreCase(u2.getHost()); +return u1.getHost() == null && u2.getHost() == null; +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "toExternalForm", +function(u){ +return ""; +}, "java.net.URL"); +Clazz_defineMethod(c$, "setURL", +function(u, protocol, host, port, authority, userInfo, path, query, ref){ +if (this !== u.handler) { +throw new SecurityException("handler for url different from this handler"); +}u.set(u.getProtocol(), host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~S,~N,~S,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "setURLDeprecated", +function(u, protocol, host, port, file, ref){ +var authority = null; +var userInfo = null; +if (host != null && host.length != 0) { +authority = (port == -1) ? host : host + ":" + port; +var at = host.lastIndexOf('@'); +if (at != -1) { +userInfo = host.substring(0, at); +host = host.substring(at + 1); +}}var path = null; +var query = null; +if (file != null) { +var q = file.lastIndexOf('?'); +if (q != -1) { +query = file.substring(q + 1); +path = file.substring(0, q); +} else path = file; +}this.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~S,~N,~S,~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_declareInterface(java.net, "URLStreamHandlerFactory"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.text"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pattern = null; +Clazz_instantialize(this, arguments);}, java.text, "MessageFormat", null); +Clazz_makeConstructor(c$, +function(pattern){ +this.pattern = pattern; +}, "~S"); +Clazz_makeConstructor(c$, +function(pattern, locale){ +this.pattern = pattern; +}, "~S,java.util.Locale"); +c$.format = Clazz_defineMethod(c$, "format", +function(pattern, args){ +return pattern.replace (/\{(\d+)\}/g, function ($0, $1) { +var i = parseInt ($1); +if (args == null) return null; +return args[i]; +}); +}, "~S,~A"); +Clazz_defineMethod(c$, "format", +function(obj){ +return java.text.MessageFormat.format(this.pattern, Clazz_newArray(-1, [obj])); +}, "~O"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveNextNextGaussian = false; +this.seed = 0; +this.nextNextGaussian = 0; +Clazz_instantialize(this, arguments);}, java.util, "Random", null, java.io.Serializable); +Clazz_makeConstructor(c$, +function(){ +var seed = -2147483648; +{ +arguments.length == 1 && (seed = arguments[0]); +}if (seed == -2147483648) seed = System.currentTimeMillis(); +this.setSeed(seed); +}); +Clazz_defineMethod(c$, "next", +function(bits){ +this.seed = (this.seed * 25214903917 + 0xb) & (281474976710655); +return (this.seed >>> (48 - bits)); +}, "~N"); +Clazz_defineMethod(c$, "nextBoolean", +function(){ +{ +return Math.random () > 0.5; +}}); +Clazz_defineMethod(c$, "nextBytes", +function(buf){ +{ +var rand = 0; +var count = 0; +var loop = 0; +while (count < buf.length) { +if (loop == 0) { +rand = this.nextInt(); +loop = 3; +} else { +loop--; +}buf[count++] = rand; +rand >>= 8; +} +}}, "~A"); +Clazz_defineMethod(c$, "nextDouble", +function(){ +{ +return Math.random (); +}}); +Clazz_defineMethod(c$, "nextFloat", +function(){ +{ +return Math.random (); +}}); +Clazz_defineMethod(c$, "nextGaussian", +function(){ +if (this.haveNextNextGaussian) { +this.haveNextNextGaussian = false; +return this.nextNextGaussian; +}var v1; +var v2; +var s; +do { +v1 = 2 * this.nextDouble() - 1; +v2 = 2 * this.nextDouble() - 1; +s = v1 * v1 + v2 * v2; +} while (s >= 1); +var norm = Math.sqrt(-2 * Math.log(s) / s); +this.nextNextGaussian = v2 * norm; +this.haveNextNextGaussian = true; +return v1 * norm; +}); +Clazz_defineMethod(c$, "nextInt", +function(n){ +{ +if (arguments.length == 0) +return Math.random()*0x100000000 | 0; +}if (n <= 0) { +throw new IllegalArgumentException(); +}{ +return Math.random() * n|0 +}}, "~N"); +Clazz_defineMethod(c$, "nextLong", +function(){ +return (this.next(32) << 32) + this.next(32); +}); +Clazz_defineMethod(c$, "setSeed", +function(seed){ +{ +Math.seedrandom(seed); +}}, "~N"); +{ +{ +(function (pool, math, width, chunks, significance, overflow, startdenom) { +var copyright = "Copyright 2010 David Bau, all rights reserved. (BSD)" +// +// seedrandom() +// This is the seedrandom function described above. +// +math['seedrandom'] = function seedrandom(seed, use_entropy) { +var key = []; +var arc4; +// Flatten the seed string or build one from local entropy if needed. +seed = mixkey(flatten( +use_entropy ? [seed, pool] : +arguments.length ? seed : +[new Date().getTime(), pool, window], 3), key); +// Use the seed to initialize an ARC4 generator. +arc4 = new ARC4(key); +// Mix the randomness into accumulated entropy. +mixkey(arc4.S, pool); +// Override Math.random +// This function returns a random double in [0, 1) that contains +// randomness in every bit of the mantissa of the IEEE 754 value. +math['random'] = function random() { // Closure to return a random double: +var n = arc4.g(chunks); // Start with a numerator n < 2 ^ 48 +var d = startdenom; // and denominator d = 2 ^ 48. +var x = 0; // and no 'extra last byte'. +while (n < significance) { // Fill up all significant digits by +n = (n + x) * width; // shifting numerator and +d *= width; // denominator and generating a +x = arc4.g(1); // new least-significant-byte. +} +while (n >= overflow) { // To avoid rounding up, before adding +n /= 2; // last byte, shift everything +d /= 2; // right using integer math until +x >>>= 1; // we have exactly the desired bits. +} +return (n + x) / d; // Form the number within [0, 1). +}; +// Return the seed that was used +return seed; +}; +// +// ARC4 +// +// An ARC4 implementation. The constructor takes a key in the form of +// an array of at most (width) integers that should be 0 <= x < (width). +// +// The g(count) method returns a pseudorandom integer that concatenates +// the next (count) outputs from ARC4. Its return value is a number x +// that is in the range 0 <= x < (width ^ count). +// +function ARC4(key) { +var t, u, me = this, keylen = key.length; +var i = 0, j = me.i = me.j = me.m = 0; +me.S = []; +me.c = []; +// The empty key [] is treated as [0]. +if (!keylen) { key = [keylen++]; } +// Set up S using the standard key scheduling algorithm. +while (i < width) { me.S[i] = i++; } +for (i = 0; i < width; i++) { +t = me.S[i]; +j = lowbits(j + t + key[i % keylen]); +u = me.S[j]; +me.S[i] = u; +me.S[j] = t; +} +// The "g" method returns the next (count) outputs as one number. +me.g = function getnext(count) { +var s = me.S; +var i = lowbits(me.i + 1); var t = s[i]; +var j = lowbits(me.j + t); var u = s[j]; +s[i] = u; +s[j] = t; +var r = s[lowbits(t + u)]; +while (--count) { +i = lowbits(i + 1); t = s[i]; +j = lowbits(j + t); u = s[j]; +s[i] = u; +s[j] = t; +r = r * width + s[lowbits(t + u)]; +} +me.i = i; +me.j = j; +return r; +}; +// For robust unpredictability discard an initial batch of values. +// See http://www.rsa.com/rsalabs/node.asp?id=2009 +me.g(width); +} +// +// flatten() +// Converts an object tree to nested arrays of strings. +// +function flatten(obj, depth, result, prop) { +result = []; +if (depth && typeof(obj) == 'object') { +for (prop in obj) { +if (prop.indexOf('S') < 5) { // Avoid FF3 bug (local/sessionStorage) +try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} +} +} +} +return result.length ? result : '' + obj; +} +// +// mixkey() +// Mixes a string seed into a key that is an array of integers, and +// returns a shortened string seed that is equivalent to the result key. +// +function mixkey(seed, key, smear, j) { +seed += ''; // Ensure the seed is a string +smear = 0; +for (j = 0; j < seed.length; j++) { +key[lowbits(j)] = +lowbits((smear ^= key[lowbits(j)] * 19) + seed.charCodeAt(j)); +} +seed = ''; +for (j in key) { seed += String.fromCharCode(key[j]); } +return seed; +} +// +// lowbits() +// A quick "n mod width" for width a power of 2. +// +function lowbits(n) { return n & (width - 1); } +// +// The following constants are related to IEEE 754 limits. +// +startdenom = math.pow(width, chunks); +significance = math.pow(2, significance); +overflow = significance * 2; +// +// When seedrandom.js is loaded, we immediately mix a few bits +// from the built-in RNG into the entropy pool. Because we do +// not want to intefere with determinstic PRNG state later, +// seedrandom will not call math.random on its own again after +// initialization. +// +mixkey(math.random(), pool); +// End anonymous scope, and pass initial values. +})( +[], // pool: entropy pool starts empty +Math, // math: package containing random, pow, and seedrandom +256, // width: each RC4 output is 0 <= x < 256 +6, // chunks: at least six RC4 outputs for each double +52 // significance: there are 52 significant digits in a double +); +}}})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Collection"], "java.util.AbstractCollection", ["java.lang.reflect.Array"], function(){ +var c$ = Clazz_declareType(java.util, "AbstractCollection", null, java.util.Collection); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "addAll", +function(collection){ +var result = false; +var it = collection.iterator(); +while (it.hasNext()) { +if (this.add(it.next())) { +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +var it = this.iterator(); +while (it.hasNext()) { +it.next(); +it.remove(); +} +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +var it = this.iterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsAll", +function(collection){ +var it = collection.iterator(); +while (it.hasNext()) { +if (!this.contains(it.next())) { +return false; +}} +return true; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "remove", +function(object){ +var it = this.iterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +it.remove(); +return true; +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +it.remove(); +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +var result = false; +var it = this.iterator(); +while (it.hasNext()) { +if (collection.contains(it.next())) { +it.remove(); +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "retainAll", +function(collection){ +var result = false; +var it = this.iterator(); +while (it.hasNext()) { +if (!collection.contains(it.next())) { +it.remove(); +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_defineMethod(c$, "toArray", +function(){ +var size = this.size(); +var index = 0; +var it = this.iterator(); +var array = new Array(size); +while (index < size) { +array[index++] = it.next(); +} +return array; +}); +Clazz_defineMethod(c$, "toArray", +function(contents){ +var size = this.size(); +var index = 0; +if (size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, size); +}for (var entry, $entry = this.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +contents[index++] = entry; +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.isEmpty()) { +return "[]"; +}var buffer = "["; +var it = this.iterator(); +while (it.hasNext()) { +var next = it.next(); +if (next !== this) { +buffer += next; +} else { +buffer += ("(this Collection)"); +}if (it.hasNext()) { +buffer += (", "); +}} +buffer += (']'); +return buffer; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.Iterator", "$.List", "$.ListIterator", "$.RandomAccess"], "java.util.AbstractList", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modCount = 0; +Clazz_instantialize(this, arguments);}, java.util, "AbstractList", java.util.AbstractCollection, java.util.List); +Clazz_defineMethod(c$, "add", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +this.add(this.size(), object); +return true; +}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +var it = collection.iterator(); +while (it.hasNext()) { +this.add(location++, it.next()); +} +return !collection.isEmpty(); +}, "~N,java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.removeRange(0, this.size()); +}); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.List")) { +var list = object; +if (list.size() != this.size()) { +return false; +}var it1 = this.iterator(); +var it2 = list.iterator(); +while (it1.hasNext()) { +var e1 = it1.next(); +var e2 = it2.next(); +if (!(e1 == null ? e2 == null : e1.equals(e2))) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 1; +var it = this.iterator(); +while (it.hasNext()) { +var object = it.next(); +result = (31 * result) + (object == null ? 0 : object.hashCode()); +} +return result; +}); +Clazz_overrideMethod(c$, "indexOf", +function(object){ +var it = this.listIterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +return it.previousIndex(); +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +return it.previousIndex(); +}} +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return new java.util.AbstractList.SimpleListIterator(this); +}); +Clazz_overrideMethod(c$, "lastIndexOf", +function(object){ +var it = this.listIterator(this.size()); +if (object != null) { +while (it.hasPrevious()) { +if (object.equals(it.previous())) { +return it.nextIndex(); +}} +} else { +while (it.hasPrevious()) { +if (it.previous() == null) { +return it.nextIndex(); +}} +}return -1; +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +return new java.util.AbstractList.FullListIterator(this, location); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +throw new UnsupportedOperationException(); +}, "~N"); +Clazz_defineMethod(c$, "removeRange", +function(start, end){ +var it = this.listIterator(start); +for (var i = start; i < end; i++) { +it.next(); +it.remove(); +} +}, "~N,~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +if (0 <= start && end <= this.size()) { +if (start <= end) { +if (Clazz_instanceOf(this,"java.util.RandomAccess")) { +return new java.util.AbstractList.SubAbstractListRandomAccess(this, start, end); +}return new java.util.AbstractList.SubAbstractList(this, start, end); +}throw new IllegalArgumentException(); +}throw new IndexOutOfBoundsException(); +}, "~N,~N"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pos = -1; +this.expectedModCount = 0; +this.lastPosition = -1; +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.AbstractList, "SimpleListIterator", null, java.util.Iterator); +Clazz_makeConstructor(c$, +function(l){ +this.list = l; +this.expectedModCount = l.modCount; +}, "java.util.AbstractList"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.pos + 1 < this.list.size(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +var result = this.list.get(this.pos + 1); +this.lastPosition = ++this.pos; +return result; +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}throw new java.util.ConcurrentModificationException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.remove(this.lastPosition); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new IllegalStateException(); +} else { +throw e; +} +} +if (this.list.modCount != this.expectedModCount) { +this.expectedModCount++; +}if (this.pos == this.lastPosition) { +this.pos--; +}this.lastPosition = -1; +} else { +throw new java.util.ConcurrentModificationException(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.AbstractList, "FullListIterator", java.util.AbstractList.SimpleListIterator, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(list, start){ +Clazz_superConstructor(this, java.util.AbstractList.FullListIterator, [list]); +if (0 <= start && start <= list.size()) { +this.pos = start - 1; +} else { +throw new IndexOutOfBoundsException(); +}}, "java.util.AbstractList,~N"); +Clazz_overrideMethod(c$, "add", +function(object){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.add(this.pos + 1, object); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +this.pos++; +this.lastPosition = -1; +if (this.list.modCount != this.expectedModCount) { +this.expectedModCount++; +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +Clazz_overrideMethod(c$, "hasPrevious", +function(){ +return this.pos >= 0; +}); +Clazz_overrideMethod(c$, "nextIndex", +function(){ +return this.pos + 1; +}); +Clazz_overrideMethod(c$, "previous", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +var result = this.list.get(this.pos); +this.lastPosition = this.pos; +this.pos--; +return result; +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}throw new java.util.ConcurrentModificationException(); +}); +Clazz_overrideMethod(c$, "previousIndex", +function(){ +return this.pos; +}); +Clazz_overrideMethod(c$, "set", +function(object){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.set(this.lastPosition, object); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new IllegalStateException(); +} else { +throw e; +} +} +} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.AbstractList, "SubAbstractListRandomAccess", java.util.AbstractList.SubAbstractList, java.util.RandomAccess); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.fullList = null; +this.offset = 0; +this.$size = 0; +Clazz_instantialize(this, arguments);}, java.util.AbstractList, "SubAbstractList", java.util.AbstractList); +Clazz_makeConstructor(c$, +function(list, start, end){ +Clazz_superConstructor(this, java.util.AbstractList.SubAbstractList); +this.fullList = list; +this.modCount = this.fullList.modCount; +this.offset = start; +this.$size = end - start; +}, "java.util.AbstractList,~N,~N"); +Clazz_defineMethod(c$, "add", +function(location, object){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +this.fullList.add(location + this.offset, object); +this.$size++; +this.modCount = this.fullList.modCount; +} else { +throw new IndexOutOfBoundsException(); +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +var result = this.fullList.addAll(location + this.offset, collection); +if (result) { +this.$size += collection.size(); +this.modCount = this.fullList.modCount; +}return result; +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +if (this.modCount == this.fullList.modCount) { +var result = this.fullList.addAll(this.offset + this.$size, collection); +if (result) { +this.$size += collection.size(); +this.modCount = this.fullList.modCount; +}return result; +}throw new java.util.ConcurrentModificationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "get", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +return this.fullList.get(location + this.offset); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +return new java.util.AbstractList.SubAbstractList.SubAbstractListIterator(this.fullList.listIterator(location + this.offset), this, this.offset, this.$size); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +var result = this.fullList.remove(location + this.offset); +this.$size--; +this.modCount = this.fullList.modCount; +return result; +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_defineMethod(c$, "removeRange", +function(start, end){ +if (start != end) { +if (this.modCount == this.fullList.modCount) { +this.fullList.removeRange(start + this.offset, end + this.offset); +this.$size -= end - start; +this.modCount = this.fullList.modCount; +} else { +throw new java.util.ConcurrentModificationException(); +}}}, "~N,~N"); +Clazz_defineMethod(c$, "set", +function(location, object){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +return this.fullList.set(location + this.offset, object); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.$size; +}); +Clazz_defineMethod(c$, "sizeChanged", +function(increment){ +if (increment) { +this.$size++; +} else { +this.$size--; +}this.modCount = this.fullList.modCount; +}, "~B"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.subList = null; +this.iterator = null; +this.start = 0; +this.end = 0; +Clazz_instantialize(this, arguments);}, java.util.AbstractList.SubAbstractList, "SubAbstractListIterator", null, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(it, list, offset, length){ +this.iterator = it; +this.subList = list; +this.start = offset; +this.end = this.start + length; +}, "java.util.ListIterator,java.util.AbstractList.SubAbstractList,~N,~N"); +Clazz_defineMethod(c$, "add", +function(object){ +this.iterator.add(object); +this.subList.sizeChanged(true); +this.end++; +}, "~O"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.iterator.nextIndex() < this.end; +}); +Clazz_overrideMethod(c$, "hasPrevious", +function(){ +return this.iterator.previousIndex() >= this.start; +}); +Clazz_defineMethod(c$, "next", +function(){ +if (this.iterator.nextIndex() < this.end) { +return this.iterator.next(); +}throw new java.util.NoSuchElementException(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.iterator.nextIndex() - this.start; +}); +Clazz_defineMethod(c$, "previous", +function(){ +if (this.iterator.previousIndex() >= this.start) { +return this.iterator.previous(); +}throw new java.util.NoSuchElementException(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +var previous = this.iterator.previousIndex(); +if (previous >= this.start) { +return previous - this.start; +}return -1; +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.iterator.remove(); +this.subList.sizeChanged(false); +this.end--; +}); +Clazz_defineMethod(c$, "set", +function(object){ +this.iterator.set(object); +}, "~O"); +/*eoif3*/})(); +/*eoif3*/})(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Map"], "java.util.AbstractMap", ["java.util.AbstractCollection", "$.AbstractSet", "$.Iterator"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$keySet = null; +this.$values = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap", null, java.util.Map); +Clazz_overrideMethod(c$, "clear", +function(){ +this.entrySet().clear(); +}); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +if (key.equals(it.next().getKey())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next().getKey() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +var it = this.entrySet().iterator(); +if (value != null) { +while (it.hasNext()) { +if (value.equals(it.next().getValue())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next().getValue() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Map")) { +var map = object; +if (this.size() != map.size()) { +return false; +}var objectSet = map.entrySet(); +var it = this.entrySet().iterator(); +while (it.hasNext()) { +if (!objectSet.contains(it.next())) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +var entry = it.next(); +if (key.equals(entry.getKey())) { +return entry.getValue(); +}} +} else { +while (it.hasNext()) { +var entry = it.next(); +if (entry.getKey() == null) { +return entry.getValue(); +}} +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 0; +var it = this.entrySet().iterator(); +while (it.hasNext()) { +result += it.next().hashCode(); +} +return result; +}); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = ((Clazz_isClassDefined("java.util.AbstractMap$1") ? 0 : java.util.AbstractMap.$AbstractMap$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$1, this, null)); +}return this.$keySet; +}); +Clazz_overrideMethod(c$, "put", +function(key, value){ +throw new UnsupportedOperationException(); +}, "~O,~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +this.putAllAM(map); +}, "java.util.Map"); +Clazz_defineMethod(c$, "putAllAM", +function(map){ +if (!map.isEmpty()) for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +this.put(entry.getKey(), entry.getValue()); +} +}, "java.util.Map"); +Clazz_overrideMethod(c$, "remove", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +var entry = it.next(); +if (key.equals(entry.getKey())) { +it.remove(); +return entry.getValue(); +}} +} else { +while (it.hasNext()) { +var entry = it.next(); +if (entry.getKey() == null) { +it.remove(); +return entry.getValue(); +}} +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.entrySet().size(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.isEmpty()) { +return "{}"; +}var buffer = "{"; +var it = this.entrySet().iterator(); +while (it.hasNext()) { +var entry = it.next(); +var key = entry.getKey(); +if (key !== this) { +buffer += (key); +} else { +buffer += ("(this Map)"); +}buffer += ('='); +var value = entry.getValue(); +if (value !== this) { +buffer += (value); +} else { +buffer += ("(this Map)"); +}if (it.hasNext()) { +buffer += (", "); +}} +buffer += ('}'); +return buffer; +}); +Clazz_overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = ((Clazz_isClassDefined("java.util.AbstractMap$2") ? 0 : java.util.AbstractMap.$AbstractMap$2$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$2, this, null)); +}return this.$values; +}); +Clazz_defineMethod(c$, "clone", +function(){ +return this.cloneAM(); +}); +Clazz_defineMethod(c$, "cloneAM", +function(){ +var result; +{ +result = Clazz_clone(this); +}result.$keySet = null; +result.$values = null; +return result; +}); +c$.$AbstractMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "AbstractMap$1", java.util.AbstractSet); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.AbstractMap"].containsKey(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.b$["java.util.AbstractMap"].size(); +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.AbstractMap$1$1") ? 0 : java.util.AbstractMap.$AbstractMap$1$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$1$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.setIterator = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap$1$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.setIterator = this.b$["java.util.AbstractMap"].entrySet().iterator(); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.setIterator.hasNext(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.setIterator.next().getKey(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +this.setIterator.remove(); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "AbstractMap$2", java.util.AbstractCollection); +Clazz_overrideMethod(c$, "size", +function(){ +return this.b$["java.util.AbstractMap"].size(); +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.AbstractMap"].containsValue(object); +}, "~O"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.AbstractMap$2$1") ? 0 : java.util.AbstractMap.$AbstractMap$2$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$2$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$2$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.setIterator = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap$2$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.setIterator = this.b$["java.util.AbstractMap"].entrySet().iterator(); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.setIterator.hasNext(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.setIterator.next().getValue(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +this.setIterator.remove(); +}); +/*eoif5*/})(); +}; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.Set"], "java.util.AbstractSet", null, function(){ +var c$ = Clazz_declareType(java.util, "AbstractSet", java.util.AbstractCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Set")) { +var s = object; +return this.size() == s.size() && this.containsAll(s); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 0; +var it = this.iterator(); +while (it.hasNext()) { +var next = it.next(); +result += next == null ? 0 : next.hashCode(); +} +return result; +}); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +var result = false; +if (this.size() <= collection.size()) { +var it = this.iterator(); +while (it.hasNext()) { +if (collection.contains(it.next())) { +it.remove(); +result = true; +}} +} else { +var it = collection.iterator(); +while (it.hasNext()) { +result = this.remove(it.next()) || result; +} +}return result; +}, "java.util.Collection"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.List", "$.RandomAccess"], "java.util.ArrayList", ["java.util.Arrays"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.firstIndex = 0; +this.lastIndex = 0; +this.array = null; +Clazz_instantialize(this, arguments);}, java.util, "ArrayList", java.util.AbstractList, [java.util.List, Cloneable, java.io.Serializable, java.util.RandomAccess]); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.util.ArrayList, []); +this.setCapacity(0); +}); +Clazz_makeConstructor(c$, +function(capacity){ +Clazz_superConstructor (this, java.util.ArrayList, []); +this.setCapacity(capacity); +}, "~N"); +Clazz_makeConstructor(c$, +function(collection){ +this.firstIndex = this.lastIndex = 0; +var n = -1; +{ +if (!collection) { +n = 0; +} else if (typeof collection == "number") { +n = collection; +} +}if (n >= 0) { +this.setCapacity(n); +return; +}var size = collection.size(); +this.array = this.newElementArray(size + (Clazz_doubleToInt(size / 10))); +this.addAll(collection); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "setCapacity", +function(capacity){ +try { +this.array = this.newElementArray(capacity); +} catch (e) { +if (Clazz_exceptionOf(e,"NegativeArraySizeException")){ +throw new IllegalArgumentException(); +} else { +throw e; +} +} +}, "~N"); +Clazz_defineMethod(c$, "newElementArray", +function(size){ +return new Array(size); +}, "~N"); +Clazz_defineMethod(c$, "add", +function(location, object){ +this.add2(location, object); +}, "~N,~O"); +Clazz_defineMethod(c$, "add2", +function(location, object){ +var size = this.size(); +if (0 < location && location < size) { +if (this.firstIndex == 0 && this.lastIndex == this.array.length) { +this.growForInsert(location, 1); +} else if ((location < Clazz_doubleToInt(size / 2) && this.firstIndex > 0) || this.lastIndex == this.array.length) { +System.arraycopy(this.array, this.firstIndex, this.array, --this.firstIndex, location); +} else { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index + 1, size - location); +this.lastIndex++; +}this.array[location + this.firstIndex] = object; +} else if (location == 0) { +if (this.firstIndex == 0) { +this.growAtFront(1); +}this.array[--this.firstIndex] = object; +} else if (location == size) { +if (this.lastIndex == this.array.length) { +this.growAtEnd(1); +}this.array[this.lastIndex++] = object; +} else { +throw new IndexOutOfBoundsException(); +}this.modCount++; +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +return this.add1(object); +}, "~O"); +Clazz_defineMethod(c$, "add1", +function(object){ +if (this.lastIndex == this.array.length) { +this.growAtEnd(1); +}this.array[this.lastIndex++] = object; +this.modCount++; +return true; +}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +var size = this.size(); +if (location < 0 || location > size) { +throw new IndexOutOfBoundsException(); +}var growSize = collection.size(); +if (0 < location && location < size) { +if (this.array.length - size < growSize) { +this.growForInsert(location, growSize); +} else if ((location < Clazz_doubleToInt(size / 2) && this.firstIndex > 0) || this.lastIndex > this.array.length - growSize) { +var newFirst = this.firstIndex - growSize; +if (newFirst < 0) { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index - newFirst, size - location); +this.lastIndex -= newFirst; +newFirst = 0; +}System.arraycopy(this.array, this.firstIndex, this.array, newFirst, location); +this.firstIndex = newFirst; +} else { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index + growSize, size - location); +this.lastIndex += growSize; +}} else if (location == 0) { +this.growAtFront(growSize); +this.firstIndex -= growSize; +} else if (location == size) { +if (this.lastIndex > this.array.length - growSize) { +this.growAtEnd(growSize); +}this.lastIndex += growSize; +}if (growSize > 0) { +var it = collection.iterator(); +var index = location + this.firstIndex; +var end = index + growSize; +while (index < end) { +this.array[index++] = it.next(); +} +this.modCount++; +return true; +}return false; +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +var growSize = collection.size(); +if (growSize > 0) { +if (this.lastIndex > this.array.length - growSize) { +this.growAtEnd(growSize); +}var it = collection.iterator(); +var end = this.lastIndex + growSize; +while (this.lastIndex < end) { +this.array[this.lastIndex++] = it.next(); +} +this.modCount++; +return true; +}return false; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +if (this.firstIndex != this.lastIndex) { +java.util.Arrays.fill(this.array, this.firstIndex, this.lastIndex, null); +this.firstIndex = this.lastIndex = 0; +this.modCount++; +}}); +Clazz_defineMethod(c$, "clone", +function(){ +try { +var newList = Clazz_superCall(this, java.util.ArrayList, "clone", []); +newList.array = this.array.clone(); +return newList; +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +if (object != null) { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (object.equals(this.array[i])) { +return true; +}} +} else { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (this.array[i] == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_defineMethod(c$, "ensureCapacity", +function(minimumCapacity){ +if (this.array.length < minimumCapacity) { +if (this.firstIndex > 0) { +this.growAtFront(minimumCapacity - this.array.length); +} else { +this.growAtEnd(minimumCapacity - this.array.length); +}}}, "~N"); +Clazz_overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.size()) { +return this.array[this.firstIndex + location]; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz_defineMethod(c$, "growAtEnd", +function(required){ +var size = this.size(); +if (this.firstIndex >= required - (this.array.length - this.lastIndex)) { +var newLast = this.lastIndex - this.firstIndex; +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, this.array, 0, size); +var start = newLast < this.firstIndex ? this.firstIndex : newLast; +java.util.Arrays.fill(this.array, start, this.array.length, null); +}this.firstIndex = 0; +this.lastIndex = newLast; +} else { +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, newArray, this.firstIndex, size); +}this.array = newArray; +}}, "~N"); +Clazz_defineMethod(c$, "growAtFront", +function(required){ +var size = this.size(); +if (this.array.length - this.lastIndex >= required) { +var newFirst = this.array.length - size; +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, this.array, newFirst, size); +var length = this.firstIndex + size > newFirst ? newFirst : this.firstIndex + size; +java.util.Arrays.fill(this.array, this.firstIndex, length, null); +}this.firstIndex = newFirst; +this.lastIndex = this.array.length; +} else { +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, newArray, newArray.length - size, size); +}this.firstIndex = newArray.length - size; +this.lastIndex = newArray.length; +this.array = newArray; +}}, "~N"); +Clazz_defineMethod(c$, "growForInsert", +function(location, required){ +var size = this.size(); +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (location < Clazz_doubleToInt(size / 2)) { +var newFirst = newArray.length - (size + required); +System.arraycopy(this.array, location, newArray, location + increment, size - location); +System.arraycopy(this.array, this.firstIndex, newArray, newFirst, location); +this.firstIndex = newFirst; +this.lastIndex = newArray.length; +} else { +System.arraycopy(this.array, this.firstIndex, newArray, 0, location); +System.arraycopy(this.array, location, newArray, location + required, size - location); +this.firstIndex = 0; +this.lastIndex += required; +}this.array = newArray; +}, "~N,~N"); +Clazz_overrideMethod(c$, "indexOf", +function(object){ +if (object != null) { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (object.equals(this.array[i])) { +return i - this.firstIndex; +}} +} else { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (this.array[i] == null) { +return i - this.firstIndex; +}} +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.lastIndex == this.firstIndex; +}); +Clazz_overrideMethod(c$, "lastIndexOf", +function(object){ +if (object != null) { +for (var i = this.lastIndex - 1; i >= this.firstIndex; i--) { +if (object.equals(this.array[i])) { +return i - this.firstIndex; +}} +} else { +for (var i = this.lastIndex - 1; i >= this.firstIndex; i--) { +if (this.array[i] == null) { +return i - this.firstIndex; +}} +}return -1; +}, "~O"); +Clazz_defineMethod(c$, "remove", +function(location){ +{ +}return this._removeItemAt(location); +}, "~N"); +Clazz_defineMethod(c$, "_removeObject", +function(o){ +var i = this.indexOf(o); +if (i < 0) return false; +this._removeItemAt(i); +return true; +}, "~O"); +Clazz_defineMethod(c$, "_removeItemAt", +function(location){ +var result; +var size = this.size(); +if (0 <= location && location < size) { +if (location == size - 1) { +result = this.array[--this.lastIndex]; +this.array[this.lastIndex] = null; +} else if (location == 0) { +result = this.array[this.firstIndex]; +this.array[this.firstIndex++] = null; +} else { +var elementIndex = this.firstIndex + location; +result = this.array[elementIndex]; +if (location < Clazz_doubleToInt(size / 2)) { +System.arraycopy(this.array, this.firstIndex, this.array, this.firstIndex + 1, location); +this.array[this.firstIndex++] = null; +} else { +System.arraycopy(this.array, elementIndex + 1, this.array, elementIndex, size - location - 1); +this.array[--this.lastIndex] = null; +}}} else { +throw new IndexOutOfBoundsException(); +}this.modCount++; +return result; +}, "~N"); +Clazz_overrideMethod(c$, "removeRange", +function(start, end){ +if (start >= 0 && start <= end && end <= this.size()) { +if (start == end) { +return; +}var size = this.size(); +if (end == size) { +java.util.Arrays.fill(this.array, this.firstIndex + start, this.lastIndex, null); +this.lastIndex = this.firstIndex + start; +} else if (start == 0) { +java.util.Arrays.fill(this.array, this.firstIndex, this.firstIndex + end, null); +this.firstIndex += end; +} else { +System.arraycopy(this.array, this.firstIndex + end, this.array, this.firstIndex + start, size - end); +var newLast = this.lastIndex + start - end; +java.util.Arrays.fill(this.array, newLast, this.lastIndex, null); +this.lastIndex = newLast; +}this.modCount++; +} else { +throw new IndexOutOfBoundsException(); +}}, "~N,~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +if (0 <= location && location < this.size()) { +var result = this.array[this.firstIndex + location]; +this.array[this.firstIndex + location] = object; +return result; +}throw new IndexOutOfBoundsException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.lastIndex - this.firstIndex; +}); +Clazz_overrideMethod(c$, "toArray", +function(contents){ +var size = this.size(); +if (contents == null || size > contents.length) { +{ +return this.array.slice(this.firstIndex, this.firstIndex + size); +}}System.arraycopy(this.array, this.firstIndex, contents, 0, size); +if (size < contents.length) { +contents[size] = null; +}return contents; +}, "~A"); +Clazz_defineMethod(c$, "trimToSize", +function(){ +var size = this.size(); +var newArray = this.newElementArray(size); +System.arraycopy(this.array, this.firstIndex, newArray, 0, size); +this.array = newArray; +this.firstIndex = 0; +this.lastIndex = this.array.length; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.RandomAccess"], "java.util.Arrays", null, function(){ +var c$ = Clazz_declareType(java.util, "Arrays", null); +c$.fill = Clazz_defineMethod(c$, "fill", +function(a, fromIndex, toIndex, val){ +{ +if (arguments.length == 2) { +val = arguments[1]; +fromIndex = 0; +toIndex = a.length; +} +}java.util.Arrays.rangeCheck(a.length, fromIndex, toIndex); +for (var i = fromIndex; i < toIndex; i++) a[i] = val; + +}, "~A,~N,~N,~O"); +c$.asList = Clazz_defineMethod(c$, "asList", +function(a){ +return new java.util.Arrays.ArrayList(a); +}, "~A"); +c$.rangeCheck = Clazz_defineMethod(c$, "rangeCheck", +function(arrayLen, fromIndex, toIndex){ +if (fromIndex > toIndex) throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")"); +if (fromIndex < 0) throw new ArrayIndexOutOfBoundsException(fromIndex); +if (toIndex > arrayLen) throw new ArrayIndexOutOfBoundsException(toIndex); +}, "~N,~N,~N"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key){ +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +if (midVal < key) low = mid + 1; + else if (midVal > key) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~N"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key){ +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +var cmp = (midVal).compareTo(key); +if (cmp < 0) low = mid + 1; + else if (cmp > 0) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~O"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key, c){ +if (c == null) return java.util.Arrays.binarySearch(a, key); +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +var cmp = c.compare(midVal, key); +if (cmp < 0) low = mid + 1; + else if (cmp > 0) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~O,java.util.Comparator"); +c$.equals = Clazz_defineMethod(c$, "equals", +function(a, a2){ +if (a === a2) return true; +if (a == null || a2 == null) return false; +var length = a.length; +if (a2.length != length) return false; +for (var i = 0; i < length; i++) { +var o1 = a[i]; +var o2 = a2[i]; +{ +if(!(o1==null?o2==null:(o1.equals==null?o1==o2:o1.equals(o2))))return false; +}} +return true; +}, "~A,~A"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(a, fromIndex, toIndex, c){ +if (a.length < 2) return; +var n = 0; +var p = null; +{ +n = arguments.count; p = fromIndex; +}var temp = a; +var ret = null; +switch (n) { +case 1: +p = null; +case 2: +fromIndex = 0; +toIndex = a.length; +break; +case 3: +p = null; +case 4: +p = c; +if (fromIndex == 0 && toIndex == a.length) { +temp = a; +} else { +{ +temp = a.slice(fromIndex, toIndex); +}ret = a; +}break; +} +java.util.Arrays.rangeCheck(a.length, fromIndex, toIndex); +if (p == null) p = java.util.Arrays.comp; +c = p; +{ +temp.sort(c.compare); +}if (ret != null) { +System.arraycopy(temp, 0, ret, fromIndex, toIndex); +}}, "~A,~N,~N,java.util.Comparator"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.a = null; +Clazz_instantialize(this, arguments);}, java.util.Arrays, "ArrayList", java.util.AbstractList, [java.util.RandomAccess, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(array){ +Clazz_superConstructor (this, java.util.Arrays.ArrayList, []); +if (array == null) throw new NullPointerException(); +this.a = array; +}, "~A"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.a.length; +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.a.clone(); +}); +Clazz_overrideMethod(c$, "get", +function(index){ +return this.a[index]; +}, "~N"); +Clazz_overrideMethod(c$, "set", +function(index, element){ +var oldValue = this.a[index]; +this.a[index] = element; +return oldValue; +}, "~N,~O"); +Clazz_overrideMethod(c$, "indexOf", +function(o){ +if (o == null) { +for (var i = 0; i < this.a.length; i++) if (this.a[i] == null) return i; + +} else { +for (var i = 0; i < this.a.length; i++) if (o.equals(this.a[i])) return i; + +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.indexOf(o) != -1; +}, "~O"); +/*eoif3*/})(); +c$.comp = null; +{ +c$.comp = {compare: function (o1, o2) { +return (o1 == null ? (o2 == null ? 0 : -1) : o2 == null ? 1 +: typeof o1 == "number" ? o1 - o2 : o1.compareTo(o2))}}; +}}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.AbstractMap", "$.AbstractSet", "$.Collection", "$.Enumeration", "$.Iterator", "$.List", "$.ListIterator", "$.Map", "$.RandomAccess", "$.Set", "$.SortedMap", "$.SortedSet", "java.lang.reflect.Array"], "java.util.Collections", ["java.util.ArrayList", "$.Arrays", "java.util.Map.Entry", "java.util.Random"], function(){ +var c$ = Clazz_declareType(java.util, "Collections", null); +c$.emptyEnumeration = Clazz_defineMethod(c$, "emptyEnumeration", +function(){ +if (java.util.Collections.EMPTY_ENUMERATION == null) java.util.Collections.EMPTY_ENUMERATION = new java.util.Collections.EmptyEnumeration(); +return java.util.Collections.EMPTY_ENUMERATION; +}); +c$.emptyIterator = Clazz_defineMethod(c$, "emptyIterator", +function(){ +if (java.util.Collections.EMPTY_ITERATOR == null) { +java.util.Collections.EMPTY_ITERATOR = new java.util.Collections.EmptyIterator(); +}return java.util.Collections.EMPTY_ITERATOR; +}); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(list, object){ +if (list == null) { +throw new NullPointerException(); +}if (list.isEmpty()) { +return -1; +}var key = object; +if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var it = list.listIterator(); +while (it.hasNext()) { +var result; +if ((result = key.compareTo(it.next())) <= 0) { +if (result == 0) { +return it.previousIndex(); +}return -it.previousIndex() - 1; +}} +return -list.size() - 1; +}var low = 0; +var mid = list.size(); +var high = mid - 1; +var result = -1; +while (low <= high) { +mid = (low + high) >> 1; +if ((result = key.compareTo(list.get(mid))) > 0) { +low = mid + 1; +} else if (result == 0) { +return mid; +} else { +high = mid - 1; +}} +return -mid - (result < 0 ? 1 : 2); +}, "java.util.List,~O"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(list, object, comparator){ +if (comparator == null) { +return java.util.Collections.binarySearch(list, object); +}if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var it = list.listIterator(); +while (it.hasNext()) { +var result; +if ((result = comparator.compare(object, it.next())) <= 0) { +if (result == 0) { +return it.previousIndex(); +}return -it.previousIndex() - 1; +}} +return -list.size() - 1; +}var low = 0; +var mid = list.size(); +var high = mid - 1; +var result = -1; +while (low <= high) { +mid = (low + high) >> 1; +if ((result = comparator.compare(object, list.get(mid))) > 0) { +low = mid + 1; +} else if (result == 0) { +return mid; +} else { +high = mid - 1; +}} +return -mid - (result < 0 ? 1 : 2); +}, "java.util.List,~O,java.util.Comparator"); +c$.copy = Clazz_defineMethod(c$, "copy", +function(destination, source){ +if (destination.size() < source.size()) { +throw new ArrayIndexOutOfBoundsException(); +}var srcIt = source.iterator(); +var destIt = destination.listIterator(); +while (srcIt.hasNext()) { +try { +destIt.next(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.util.NoSuchElementException")){ +throw new ArrayIndexOutOfBoundsException(); +} else { +throw e; +} +} +destIt.set(srcIt.next()); +} +}, "java.util.List,java.util.List"); +c$.enumeration = Clazz_defineMethod(c$, "enumeration", +function(collection){ +var c = collection; +return ((Clazz_isClassDefined("java.util.Collections$1") ? 0 : java.util.Collections.$Collections$1$ ()), Clazz_innerTypeInstance(java.util.Collections$1, this, Clazz_cloneFinals("c", c))); +}, "java.util.Collection"); +c$.fill = Clazz_defineMethod(c$, "fill", +function(list, object){ +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(object); +} +}, "java.util.List,~O"); +c$.max = Clazz_defineMethod(c$, "max", +function(collection){ +var it = collection.iterator(); +var max = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (max.compareTo(next) < 0) { +max = next; +}} +return max; +}, "java.util.Collection"); +c$.max = Clazz_defineMethod(c$, "max", +function(collection, comparator){ +var it = collection.iterator(); +var max = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (comparator.compare(max, next) < 0) { +max = next; +}} +return max; +}, "java.util.Collection,java.util.Comparator"); +c$.min = Clazz_defineMethod(c$, "min", +function(collection){ +var it = collection.iterator(); +var min = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (min.compareTo(next) > 0) { +min = next; +}} +return min; +}, "java.util.Collection"); +c$.min = Clazz_defineMethod(c$, "min", +function(collection, comparator){ +var it = collection.iterator(); +var min = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (comparator.compare(min, next) > 0) { +min = next; +}} +return min; +}, "java.util.Collection,java.util.Comparator"); +c$.nCopies = Clazz_defineMethod(c$, "nCopies", +function(length, object){ +return new java.util.Collections.CopiesList(length, object); +}, "~N,~O"); +c$.reverse = Clazz_defineMethod(c$, "reverse", +function(list){ +var size = list.size(); +var front = list.listIterator(); +var back = list.listIterator(size); +for (var i = 0; i < Clazz_doubleToInt(size / 2); i++) { +var frontNext = front.next(); +var backPrev = back.previous(); +front.set(backPrev); +back.set(frontNext); +} +}, "java.util.List"); +c$.reverseOrder = Clazz_defineMethod(c$, "reverseOrder", +function(){ +return new java.util.Collections.ReverseComparator(); +}); +c$.reverseOrder = Clazz_defineMethod(c$, "reverseOrder", +function(c){ +if (c == null) { +return java.util.Collections.reverseOrder(); +}return new java.util.Collections.ReverseComparatorWithComparator(c); +}, "java.util.Comparator"); +c$.shuffle = Clazz_defineMethod(c$, "shuffle", +function(list){ +java.util.Collections.shuffle(list, new java.util.Random()); +}, "java.util.List"); +c$.shuffle = Clazz_defineMethod(c$, "shuffle", +function(list, random){ +if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var array = list.toArray(); +for (var i = array.length - 1; i > 0; i--) { +var index = random.nextInt() % (i + 1); +if (index < 0) { +index = -index; +}var temp = array[i]; +array[i] = array[index]; +array[index] = temp; +} +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +} else { +var rawList = list; +for (var i = rawList.size() - 1; i > 0; i--) { +var index = random.nextInt() % (i + 1); +if (index < 0) { +index = -index; +}rawList.set(index, rawList.set(i, rawList.get(index))); +} +}}, "java.util.List,java.util.Random"); +c$.singleton = Clazz_defineMethod(c$, "singleton", +function(object){ +return new java.util.Collections.SingletonSet(object); +}, "~O"); +c$.singletonList = Clazz_defineMethod(c$, "singletonList", +function(object){ +return new java.util.Collections.SingletonList(object); +}, "~O"); +c$.singletonMap = Clazz_defineMethod(c$, "singletonMap", +function(key, value){ +return new java.util.Collections.SingletonMap(key, value); +}, "~O,~O"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(list){ +var array = list.toArray(); +java.util.Arrays.sort(array); +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +}, "java.util.List"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(list, comparator){ +var array = list.toArray( new Array(list.size())); +java.util.Arrays.sort(array, comparator); +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +}, "java.util.List,java.util.Comparator"); +c$.swap = Clazz_defineMethod(c$, "swap", +function(list, index1, index2){ +if (list == null) { +throw new NullPointerException(); +}if (index1 == index2) { +return; +}var rawList = list; +rawList.set(index2, rawList.set(index1, rawList.get(index2))); +}, "java.util.List,~N,~N"); +c$.replaceAll = Clazz_defineMethod(c$, "replaceAll", +function(list, obj, obj2){ +var index; +var found = false; +while ((index = list.indexOf(obj)) > -1) { +found = true; +list.set(index, obj2); +} +return found; +}, "java.util.List,~O,~O"); +c$.rotate = Clazz_defineMethod(c$, "rotate", +function(lst, dist){ +var list = lst; +var size = list.size(); +if (size == 0) { +return; +}var normdist; +if (dist > 0) { +normdist = dist % size; +} else { +normdist = size - ((dist % size) * (-1)); +}if (normdist == 0 || normdist == size) { +return; +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +var temp = list.get(0); +var index = 0; +var beginIndex = 0; +for (var i = 0; i < size; i++) { +index = (index + normdist) % size; +temp = list.set(index, temp); +if (index == beginIndex) { +index = ++beginIndex; +temp = list.get(beginIndex); +}} +} else { +var divideIndex = (size - normdist) % size; +var sublist1 = list.subList(0, divideIndex); +var sublist2 = list.subList(divideIndex, size); +java.util.Collections.reverse(sublist1); +java.util.Collections.reverse(sublist2); +java.util.Collections.reverse(list); +}}, "java.util.List,~N"); +c$.indexOfSubList = Clazz_defineMethod(c$, "indexOfSubList", +function(list, sublist){ +var size = list.size(); +var sublistSize = sublist.size(); +if (sublistSize > size) { +return -1; +}if (sublistSize == 0) { +return 0; +}var firstObj = sublist.get(0); +var index = list.indexOf(firstObj); +if (index == -1) { +return -1; +}while (index < size && (size - index >= sublistSize)) { +var listIt = list.listIterator(index); +if ((firstObj == null) ? listIt.next() == null : firstObj.equals(listIt.next())) { +var sublistIt = sublist.listIterator(1); +var difFound = false; +while (sublistIt.hasNext()) { +var element = sublistIt.next(); +if (!listIt.hasNext()) { +return -1; +}if ((element == null) ? listIt.next() != null : !element.equals(listIt.next())) { +difFound = true; +break; +}} +if (!difFound) { +return index; +}}index++; +} +return -1; +}, "java.util.List,java.util.List"); +c$.lastIndexOfSubList = Clazz_defineMethod(c$, "lastIndexOfSubList", +function(list, sublist){ +var sublistSize = sublist.size(); +var size = list.size(); +if (sublistSize > size) { +return -1; +}if (sublistSize == 0) { +return size; +}var lastObj = sublist.get(sublistSize - 1); +var index = list.lastIndexOf(lastObj); +while ((index > -1) && (index + 1 >= sublistSize)) { +var listIt = list.listIterator(index + 1); +if ((lastObj == null) ? listIt.previous() == null : lastObj.equals(listIt.previous())) { +var sublistIt = sublist.listIterator(sublistSize - 1); +var difFound = false; +while (sublistIt.hasPrevious()) { +var element = sublistIt.previous(); +if (!listIt.hasPrevious()) { +return -1; +}if ((element == null) ? listIt.previous() != null : !element.equals(listIt.previous())) { +difFound = true; +break; +}} +if (!difFound) { +return listIt.nextIndex(); +}}index--; +} +return -1; +}, "java.util.List,java.util.List"); +c$.list = Clazz_defineMethod(c$, "list", +function(enumeration){ +var list = new java.util.ArrayList(); +while (enumeration.hasMoreElements()) { +list.add(enumeration.nextElement()); +} +return list; +}, "java.util.Enumeration"); +c$.synchronizedCollection = Clazz_defineMethod(c$, "synchronizedCollection", +function(collection){ +if (collection == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedCollection(collection); +}, "java.util.Collection"); +c$.synchronizedList = Clazz_defineMethod(c$, "synchronizedList", +function(list){ +if (list == null) { +throw new NullPointerException(); +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.SynchronizedRandomAccessList(list); +}return new java.util.Collections.SynchronizedList(list); +}, "java.util.List"); +c$.synchronizedMap = Clazz_defineMethod(c$, "synchronizedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedMap(map); +}, "java.util.Map"); +c$.synchronizedSet = Clazz_defineMethod(c$, "synchronizedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSet(set); +}, "java.util.Set"); +c$.synchronizedSortedMap = Clazz_defineMethod(c$, "synchronizedSortedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSortedMap(map); +}, "java.util.SortedMap"); +c$.synchronizedSortedSet = Clazz_defineMethod(c$, "synchronizedSortedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSortedSet(set); +}, "java.util.SortedSet"); +c$.unmodifiableCollection = Clazz_defineMethod(c$, "unmodifiableCollection", +function(collection){ +if (collection == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableCollection(collection); +}, "java.util.Collection"); +c$.unmodifiableList = Clazz_defineMethod(c$, "unmodifiableList", +function(list){ +if (list == null) { +throw new NullPointerException(); +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.UnmodifiableRandomAccessList(list); +}return new java.util.Collections.UnmodifiableList(list); +}, "java.util.List"); +c$.unmodifiableMap = Clazz_defineMethod(c$, "unmodifiableMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableMap(map); +}, "java.util.Map"); +c$.unmodifiableSet = Clazz_defineMethod(c$, "unmodifiableSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSet(set); +}, "java.util.Set"); +c$.unmodifiableSortedMap = Clazz_defineMethod(c$, "unmodifiableSortedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSortedMap(map); +}, "java.util.SortedMap"); +c$.unmodifiableSortedSet = Clazz_defineMethod(c$, "unmodifiableSortedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSortedSet(set); +}, "java.util.SortedSet"); +c$.frequency = Clazz_defineMethod(c$, "frequency", +function(c, o){ +if (c == null) { +throw new NullPointerException(); +}if (c.isEmpty()) { +return 0; +}var result = 0; +var itr = c.iterator(); +while (itr.hasNext()) { +var e = itr.next(); +if (o == null ? e == null : o.equals(e)) { +result++; +}} +return result; +}, "java.util.Collection,~O"); +c$.emptyList = Clazz_defineMethod(c$, "emptyList", +function(){ +return java.util.Collections.EMPTY_LIST; +}); +c$.emptySet = Clazz_defineMethod(c$, "emptySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +c$.emptyMap = Clazz_defineMethod(c$, "emptyMap", +function(){ +return java.util.Collections.EMPTY_MAP; +}); +c$.checkedCollection = Clazz_defineMethod(c$, "checkedCollection", +function(c, type){ +return new java.util.Collections.CheckedCollection(c, type); +}, "java.util.Collection,Class"); +c$.checkedMap = Clazz_defineMethod(c$, "checkedMap", +function(m, keyType, valueType){ +return new java.util.Collections.CheckedMap(m, keyType, valueType); +}, "java.util.Map,Class,Class"); +c$.checkedList = Clazz_defineMethod(c$, "checkedList", +function(list, type){ +if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.CheckedRandomAccessList(list, type); +}return new java.util.Collections.CheckedList(list, type); +}, "java.util.List,Class"); +c$.checkedSet = Clazz_defineMethod(c$, "checkedSet", +function(s, type){ +return new java.util.Collections.CheckedSet(s, type); +}, "java.util.Set,Class"); +c$.checkedSortedMap = Clazz_defineMethod(c$, "checkedSortedMap", +function(m, keyType, valueType){ +return new java.util.Collections.CheckedSortedMap(m, keyType, valueType); +}, "java.util.SortedMap,Class,Class"); +c$.checkedSortedSet = Clazz_defineMethod(c$, "checkedSortedSet", +function(s, type){ +return new java.util.Collections.CheckedSortedSet(s, type); +}, "java.util.SortedSet,Class"); +c$.addAll = Clazz_defineMethod(c$, "addAll", +function(c, a){ +var modified = false; +for (var i = 0; i < a.length; i++) { +modified = new Boolean (modified | c.add(a[i])).valueOf(); +} +return modified; +}, "java.util.Collection,~A"); +c$.disjoint = Clazz_defineMethod(c$, "disjoint", +function(c1, c2){ +if ((Clazz_instanceOf(c1,"java.util.Set")) && !(Clazz_instanceOf(c2,"java.util.Set")) || (c2.size()) > c1.size()) { +var tmp = c1; +c1 = c2; +c2 = tmp; +}var it = c1.iterator(); +while (it.hasNext()) { +if (c2.contains(it.next())) { +return false; +}} +return true; +}, "java.util.Collection,java.util.Collection"); +c$.checkType = Clazz_defineMethod(c$, "checkType", +function(obj, type){ +if (!type.isInstance(obj)) { +throw new ClassCastException("Attempt to insert " + obj.getClass() + " element into collection with element type " + type); +}return obj; +}, "~O,Class"); +c$.$Collections$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.it = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$1", null, java.util.Enumeration); +Clazz_prepareFields (c$, function(){ +this.it = this.f$.c.iterator(); +}); +Clazz_defineMethod(c$, "hasMoreElements", +function(){ +return this.it.hasNext(); +}); +Clazz_defineMethod(c$, "nextElement", +function(){ +return this.it.next(); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyEnumeration", null, java.util.Enumeration); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +throw new java.util.NoSuchElementException(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyIterator", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "next", +function(){ +throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new IllegalStateException(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.n = 0; +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CopiesList", java.util.AbstractList, java.io.Serializable); +Clazz_makeConstructor(c$, +function(length, object){ +Clazz_superConstructor (this, java.util.Collections.CopiesList, []); +if (length < 0) { +throw new IllegalArgumentException(); +}this.n = length; +this.element = object; +}, "~N,~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.n; +}); +Clazz_overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.n) { +return this.element; +}throw new IndexOutOfBoundsException(); +}, "~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyList", java.util.AbstractList, java.io.Serializable); +Clazz_overrideMethod(c$, "contains", +function(object){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "get", +function(location){ +throw new IndexOutOfBoundsException(); +}, "~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptySet", java.util.AbstractSet, java.io.Serializable); +Clazz_overrideMethod(c$, "contains", +function(object){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$EmptySet$1") ? 0 : java.util.Collections.EmptySet.$Collections$EmptySet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$EmptySet$1, this, null)); +}); +c$.$Collections$EmptySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$EmptySet$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "next", +function(){ +throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyMap", java.util.AbstractMap, java.io.Serializable); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "entrySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +Clazz_overrideMethod(c$, "get", +function(key){ +return null; +}, "~O"); +Clazz_overrideMethod(c$, "keySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +Clazz_overrideMethod(c$, "values", +function(){ +return java.util.Collections.EMPTY_LIST; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "ReverseComparator", null, [java.util.Comparator, java.io.Serializable]); +Clazz_overrideMethod(c$, "compare", +function(o1, o2){ +var c2 = o2; +return c2.compareTo(o1); +}, "~O,~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.comparator = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "ReverseComparatorWithComparator", null, [java.util.Comparator, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(comparator){ +this.comparator = comparator; +}, "java.util.Comparator"); +Clazz_defineMethod(c$, "compare", +function(o1, o2){ +return this.comparator.compare(o2, o1); +}, "~O,~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonSet", java.util.AbstractSet, java.io.Serializable); +Clazz_makeConstructor(c$, +function(object){ +Clazz_superConstructor (this, java.util.Collections.SingletonSet, []); +this.element = object; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonSet$1") ? 0 : java.util.Collections.SingletonSet.$Collections$SingletonSet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonSet$1, this, null)); +}); +c$.$Collections$SingletonSet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.$hasNext = true; +Clazz_instantialize(this, arguments);}, java.util, "Collections$SingletonSet$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.$hasNext; +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.$hasNext) { +this.$hasNext = false; +return this.b$["java.util.Collections.SingletonSet"].element; +}throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonList", java.util.AbstractList, java.io.Serializable); +Clazz_makeConstructor(c$, +function(object){ +Clazz_superConstructor (this, java.util.Collections.SingletonList, []); +this.element = object; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(location){ +if (location == 0) { +return this.element; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.k = null; +this.v = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonMap", java.util.AbstractMap, java.io.Serializable); +Clazz_makeConstructor(c$, +function(key, value){ +Clazz_superConstructor (this, java.util.Collections.SingletonMap, []); +this.k = key; +this.v = value; +}, "~O,~O"); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +return this.k == null ? key == null : this.k.equals(key); +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return this.v == null ? value == null : this.v.equals(value); +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +if (this.containsKey(key)) { +return this.v; +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "entrySet", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1") ? 0 : java.util.Collections.SingletonMap.$Collections$SingletonMap$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1, this, null)); +}); +c$.$Collections$SingletonMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$SingletonMap$1", java.util.AbstractSet); +Clazz_overrideMethod(c$, "contains", +function(object){ +if (Clazz_instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return this.b$["java.util.Collections.SingletonMap"].containsKey(entry.getKey()) && this.b$["java.util.Collections.SingletonMap"].containsValue(entry.getValue()); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1$1") ? 0 : java.util.Collections.$Collections$SingletonMap$1$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$Collections$SingletonMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.$hasNext = true; +Clazz_instantialize(this, arguments);}, java.util, "Collections$SingletonMap$1$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.$hasNext; +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.$hasNext) { +this.$hasNext = false; +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1$1$1") ? 0 : java.util.Collections.$Collections$SingletonMap$1$1$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1$1$1, this, null)); +}throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +c$.$Collections$SingletonMap$1$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$SingletonMap$1$1$1", null, java.util.Map.Entry); +Clazz_overrideMethod(c$, "equals", +function(object){ +return this.b$["java.util.Collections$SingletonMap$1"].contains(object); +}, "~O"); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.b$["java.util.Collections.SingletonMap"].k; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.b$["java.util.Collections.SingletonMap"].v; +}); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return (this.b$["java.util.Collections.SingletonMap"].k == null ? 0 : this.b$["java.util.Collections.SingletonMap"].k.hashCode()) ^ (this.b$["java.util.Collections.SingletonMap"].v == null ? 0 : this.b$["java.util.Collections.SingletonMap"].v.hashCode()); +}); +Clazz_overrideMethod(c$, "setValue", +function(value){ +throw new UnsupportedOperationException(); +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +this.mutex = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(collection){ +this.c = collection; +this.mutex = this; +}, "java.util.Collection"); +Clazz_makeConstructor(c$, +function(collection, mutex){ +this.c = collection; +this.mutex = mutex; +}, "java.util.Collection,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +{ +return this.c.add(object); +}}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +{ +return this.c.addAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "clear", +function(){ +{ +this.c.clear(); +}}); +Clazz_defineMethod(c$, "contains", +function(object){ +{ +return this.c.contains(object); +}}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(collection){ +{ +return this.c.containsAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +{ +return this.c.isEmpty(); +}}); +Clazz_defineMethod(c$, "iterator", +function(){ +{ +return this.c.iterator(); +}}); +Clazz_defineMethod(c$, "remove", +function(object){ +{ +return this.c.remove(object); +}}, "~O"); +Clazz_defineMethod(c$, "removeAll", +function(collection){ +{ +return this.c.removeAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "retainAll", +function(collection){ +{ +return this.c.retainAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "size", +function(){ +{ +return this.c.size(); +}}); +Clazz_defineMethod(c$, "toArray", +function(){ +{ +return this.c.toArray(); +}}); +Clazz_defineMethod(c$, "toString", +function(){ +{ +return this.c.toString(); +}}); +Clazz_defineMethod(c$, "toArray", +function(array){ +{ +return this.c.toArray(array); +}}, "~A"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "SynchronizedRandomAccessList", java.util.Collections.SynchronizedList, java.util.RandomAccess); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +{ +return new java.util.Collections.SynchronizedRandomAccessList(this.list.subList(start, end), this.mutex); +}}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedList", java.util.Collections.SynchronizedCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedList, [l]); +this.list = l; +}, "java.util.List"); +Clazz_makeConstructor(c$, +function(l, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedList, [l, mutex]); +this.list = l; +}, "java.util.List,~O"); +Clazz_defineMethod(c$, "add", +function(location, object){ +{ +this.list.add(location, object); +}}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +{ +return this.list.addAll(location, collection); +}}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "equals", +function(object){ +{ +return this.list.equals(object); +}}, "~O"); +Clazz_defineMethod(c$, "get", +function(location){ +{ +return this.list.get(location); +}}, "~N"); +Clazz_defineMethod(c$, "hashCode", +function(){ +{ +return this.list.hashCode(); +}}); +Clazz_defineMethod(c$, "indexOf", +function(object){ +{ +return this.list.indexOf(object); +}}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(object){ +{ +return this.list.lastIndexOf(object); +}}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +{ +return this.list.listIterator(); +}}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +{ +return this.list.listIterator(location); +}}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +{ +return this.list.remove(location); +}}, "~N"); +Clazz_defineMethod(c$, "set", +function(location, object){ +{ +return this.list.set(location, object); +}}, "~N,~O"); +Clazz_defineMethod(c$, "subList", +function(start, end){ +{ +return new java.util.Collections.SynchronizedList(this.list.subList(start, end), this.mutex); +}}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +this.mutex = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(map){ +this.m = map; +this.mutex = this; +}, "java.util.Map"); +Clazz_makeConstructor(c$, +function(map, mutex){ +this.m = map; +this.mutex = mutex; +}, "java.util.Map,~O"); +Clazz_defineMethod(c$, "clear", +function(){ +{ +this.m.clear(); +}}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +{ +return this.m.containsKey(key); +}}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +{ +return this.m.containsValue(value); +}}, "~O"); +Clazz_defineMethod(c$, "entrySet", +function(){ +{ +return new java.util.Collections.SynchronizedSet(this.m.entrySet(), this.mutex); +}}); +Clazz_defineMethod(c$, "equals", +function(object){ +{ +return this.m.equals(object); +}}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +{ +return this.m.get(key); +}}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +{ +return this.m.hashCode(); +}}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +{ +return this.m.isEmpty(); +}}); +Clazz_defineMethod(c$, "keySet", +function(){ +{ +return new java.util.Collections.SynchronizedSet(this.m.keySet(), this.mutex); +}}); +Clazz_defineMethod(c$, "put", +function(key, value){ +{ +return this.m.put(key, value); +}}, "~O,~O"); +Clazz_defineMethod(c$, "putAll", +function(map){ +{ +this.m.putAll(map); +}}, "java.util.Map"); +Clazz_defineMethod(c$, "remove", +function(key){ +{ +return this.m.remove(key); +}}, "~O"); +Clazz_defineMethod(c$, "size", +function(){ +{ +return this.m.size(); +}}); +Clazz_defineMethod(c$, "values", +function(){ +{ +return new java.util.Collections.SynchronizedCollection(this.m.values(), this.mutex); +}}); +Clazz_defineMethod(c$, "toString", +function(){ +{ +return this.m.toString(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "SynchronizedSet", java.util.Collections.SynchronizedCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +{ +return this.c.equals(object); +}}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +{ +return this.c.hashCode(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedSortedMap", java.util.Collections.SynchronizedMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(map){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedMap, [map]); +this.sm = map; +}, "java.util.SortedMap"); +Clazz_makeConstructor(c$, +function(map, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedMap, [map, mutex]); +this.sm = map; +}, "java.util.SortedMap,~O"); +Clazz_defineMethod(c$, "comparator", +function(){ +{ +return this.sm.comparator(); +}}); +Clazz_defineMethod(c$, "firstKey", +function(){ +{ +return this.sm.firstKey(); +}}); +Clazz_defineMethod(c$, "headMap", +function(endKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.headMap(endKey), this.mutex); +}}, "~O"); +Clazz_defineMethod(c$, "lastKey", +function(){ +{ +return this.sm.lastKey(); +}}); +Clazz_defineMethod(c$, "subMap", +function(startKey, endKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.subMap(startKey, endKey), this.mutex); +}}, "~O,~O"); +Clazz_defineMethod(c$, "tailMap", +function(startKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.tailMap(startKey), this.mutex); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedSortedSet", java.util.Collections.SynchronizedSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(set){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedSet, [set]); +this.ss = set; +}, "java.util.SortedSet"); +Clazz_makeConstructor(c$, +function(set, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedSet, [set, mutex]); +this.ss = set; +}, "java.util.SortedSet,~O"); +Clazz_defineMethod(c$, "comparator", +function(){ +{ +return this.ss.comparator(); +}}); +Clazz_defineMethod(c$, "first", +function(){ +{ +return this.ss.first(); +}}); +Clazz_defineMethod(c$, "headSet", +function(end){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.headSet(end), this.mutex); +}}, "~O"); +Clazz_defineMethod(c$, "last", +function(){ +{ +return this.ss.last(); +}}); +Clazz_defineMethod(c$, "subSet", +function(start, end){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.subSet(start, end), this.mutex); +}}, "~O,~O"); +Clazz_defineMethod(c$, "tailSet", +function(start){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.tailSet(start), this.mutex); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(collection){ +this.c = collection; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "addAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_defineMethod(c$, "contains", +function(object){ +return this.c.contains(object); +}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(collection){ +return this.c.containsAll(collection); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.c.isEmpty(); +}); +Clazz_defineMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableCollection$1") ? 0 : java.util.Collections.UnmodifiableCollection.$Collections$UnmodifiableCollection$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableCollection$1, this, null)); +}); +Clazz_overrideMethod(c$, "remove", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "retainAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "size", +function(){ +return this.c.size(); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.c.toArray(); +}); +Clazz_defineMethod(c$, "toArray", +function(array){ +return this.c.toArray(array); +}, "~A"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.c.toString(); +}); +c$.$Collections$UnmodifiableCollection$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableCollection$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableCollection"].c.iterator(); +}); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.iterator.next(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "UnmodifiableRandomAccessList", java.util.Collections.UnmodifiableList, java.util.RandomAccess); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.UnmodifiableRandomAccessList(this.list.subList(start, end)); +}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableList", java.util.Collections.UnmodifiableCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableList, [l]); +this.list = l; +}, "java.util.List"); +Clazz_defineMethod(c$, "add", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +throw new UnsupportedOperationException(); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.list.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(location){ +return this.list.get(location); +}, "~N"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.list.hashCode(); +}); +Clazz_defineMethod(c$, "indexOf", +function(object){ +return this.list.indexOf(object); +}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(object){ +return this.list.lastIndexOf(object); +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableList$1") ? 0 : java.util.Collections.UnmodifiableList.$Collections$UnmodifiableList$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableList$1, this, Clazz_cloneFinals("location", location))); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +throw new UnsupportedOperationException(); +}, "~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.UnmodifiableList(this.list.subList(start, end)); +}, "~N,~N"); +c$.$Collections$UnmodifiableList$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableList$1", null, java.util.ListIterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableList"].list.listIterator(this.f$.location); +}); +Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "hasPrevious", +function(){ +return this.iterator.hasPrevious(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.iterator.next(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.iterator.nextIndex(); +}); +Clazz_defineMethod(c$, "previous", +function(){ +return this.iterator.previous(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +return this.iterator.previousIndex(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_overrideMethod(c$, "set", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(map){ +this.m = map; +}, "java.util.Map"); +Clazz_overrideMethod(c$, "clear", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +return this.m.containsKey(key); +}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +return this.m.containsValue(value); +}, "~O"); +Clazz_defineMethod(c$, "entrySet", +function(){ +return new java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet(this.m.entrySet()); +}); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.m.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +return this.m.get(key); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.m.hashCode(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.m.isEmpty(); +}); +Clazz_defineMethod(c$, "keySet", +function(){ +return new java.util.Collections.UnmodifiableSet(this.m.keySet()); +}); +Clazz_overrideMethod(c$, "put", +function(key, value){ +throw new UnsupportedOperationException(); +}, "~O,~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +throw new UnsupportedOperationException(); +}, "java.util.Map"); +Clazz_overrideMethod(c$, "remove", +function(key){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "size", +function(){ +return this.m.size(); +}); +Clazz_defineMethod(c$, "values", +function(){ +return new java.util.Collections.UnmodifiableCollection(this.m.values()); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.m.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections.UnmodifiableMap, "UnmodifiableEntrySet", java.util.Collections.UnmodifiableSet); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1") ? 0 : java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.$Collections$UnmodifiableMap$UnmodifiableEntrySet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1, this, null)); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +var length = this.c.size(); +var result = new Array(length); +var it = this.iterator(); +for (var i = length; --i >= 0; ) { +result[i] = it.next(); +} +return result; +}); +Clazz_defineMethod(c$, "toArray", +function(contents){ +var size = this.c.size(); +var index = 0; +var it = this.iterator(); +if (size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, size); +}while (index < size) { +contents[index++] = it.next(); +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +c$.$Collections$UnmodifiableMap$UnmodifiableEntrySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableMap$UnmodifiableEntrySet$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet"].c.iterator(); +}); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return new java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.UnmodifiableMapEntry(this.iterator.next()); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mapEntry = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet, "UnmodifiableMapEntry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(entry){ +this.mapEntry = entry; +}, "java.util.Map.Entry"); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.mapEntry.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "getKey", +function(){ +return this.mapEntry.getKey(); +}); +Clazz_defineMethod(c$, "getValue", +function(){ +return this.mapEntry.getValue(); +}); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.mapEntry.hashCode(); +}); +Clazz_overrideMethod(c$, "setValue", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.mapEntry.toString(); +}); +/*eoif3*/})(); +/*eoif3*/})(); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "UnmodifiableSet", java.util.Collections.UnmodifiableCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +return this.c.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.c.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableSortedMap", java.util.Collections.UnmodifiableMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(map){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableSortedMap, [map]); +this.sm = map; +}, "java.util.SortedMap"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.sm.comparator(); +}); +Clazz_defineMethod(c$, "firstKey", +function(){ +return this.sm.firstKey(); +}); +Clazz_defineMethod(c$, "headMap", +function(before){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.headMap(before)); +}, "~O"); +Clazz_defineMethod(c$, "lastKey", +function(){ +return this.sm.lastKey(); +}); +Clazz_defineMethod(c$, "subMap", +function(start, end){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.subMap(start, end)); +}, "~O,~O"); +Clazz_defineMethod(c$, "tailMap", +function(after){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.tailMap(after)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableSortedSet", java.util.Collections.UnmodifiableSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(set){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableSortedSet, [set]); +this.ss = set; +}, "java.util.SortedSet"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.ss.comparator(); +}); +Clazz_defineMethod(c$, "first", +function(){ +return this.ss.first(); +}); +Clazz_defineMethod(c$, "headSet", +function(before){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.headSet(before)); +}, "~O"); +Clazz_defineMethod(c$, "last", +function(){ +return this.ss.last(); +}); +Clazz_defineMethod(c$, "subSet", +function(start, end){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.subSet(start, end)); +}, "~O,~O"); +Clazz_defineMethod(c$, "tailSet", +function(after){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.tailSet(after)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +this.type = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(c, type){ +if (c == null || type == null) { +throw new NullPointerException(); +}this.c = c; +this.type = type; +}, "java.util.Collection,Class"); +Clazz_defineMethod(c$, "size", +function(){ +return this.c.size(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.c.isEmpty(); +}); +Clazz_defineMethod(c$, "contains", +function(obj){ +return this.c.contains(obj); +}, "~O"); +Clazz_defineMethod(c$, "iterator", +function(){ +var i = this.c.iterator(); +if (Clazz_instanceOf(i,"java.util.ListIterator")) { +i = new java.util.Collections.CheckedListIterator(i, this.type); +}return i; +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.c.toArray(); +}); +Clazz_defineMethod(c$, "toArray", +function(arr){ +return this.c.toArray(arr); +}, "~A"); +Clazz_defineMethod(c$, "add", +function(obj){ +return this.c.add(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +Clazz_defineMethod(c$, "remove", +function(obj){ +return this.c.remove(obj); +}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(c1){ +return this.c.containsAll(c1); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "addAll", +function(c1){ +var size = c1.size(); +if (size == 0) { +return false; +}var arr = new Array(size); +var it = c1.iterator(); +for (var i = 0; i < size; i++) { +arr[i] = java.util.Collections.checkType(it.next(), this.type); +} +var added = false; +for (var i = 0; i < size; i++) { +added = new Boolean (added | this.c.add(arr[i])).valueOf(); +} +return added; +}, "java.util.Collection"); +Clazz_defineMethod(c$, "removeAll", +function(c1){ +return this.c.removeAll(c1); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "retainAll", +function(c1){ +return this.c.retainAll(c1); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "clear", +function(){ +this.c.clear(); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.c.toString(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.i = null; +this.type = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedListIterator", null, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(i, type){ +this.i = i; +this.type = type; +}, "java.util.ListIterator,Class"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.i.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.i.next(); +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.i.remove(); +}); +Clazz_defineMethod(c$, "hasPrevious", +function(){ +return this.i.hasPrevious(); +}); +Clazz_defineMethod(c$, "previous", +function(){ +return this.i.previous(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.i.nextIndex(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +return this.i.previousIndex(); +}); +Clazz_defineMethod(c$, "set", +function(obj){ +this.i.set(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +Clazz_defineMethod(c$, "add", +function(obj){ +this.i.add(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.l = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedList", java.util.Collections.CheckedCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l, type){ +Clazz_superConstructor(this, java.util.Collections.CheckedList, [l, type]); +this.l = l; +}, "java.util.List,Class"); +Clazz_defineMethod(c$, "addAll", +function(index, c1){ +var size = c1.size(); +if (size == 0) { +return false; +}var arr = new Array(size); +var it = c1.iterator(); +for (var i = 0; i < size; i++) { +arr[i] = java.util.Collections.checkType(it.next(), this.type); +} +return this.l.addAll(index, java.util.Arrays.asList(arr)); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "get", +function(index){ +return this.l.get(index); +}, "~N"); +Clazz_defineMethod(c$, "set", +function(index, obj){ +return this.l.set(index, java.util.Collections.checkType(obj, this.type)); +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(index, obj){ +this.l.add(index, java.util.Collections.checkType(obj, this.type)); +}, "~N,~O"); +Clazz_defineMethod(c$, "remove", +function(index){ +return this.l.remove(index); +}, "~N"); +Clazz_defineMethod(c$, "indexOf", +function(obj){ +return this.l.indexOf(obj); +}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(obj){ +return this.l.lastIndexOf(obj); +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return new java.util.Collections.CheckedListIterator(this.l.listIterator(), this.type); +}); +Clazz_defineMethod(c$, "listIterator", +function(index){ +return new java.util.Collections.CheckedListIterator(this.l.listIterator(index), this.type); +}, "~N"); +Clazz_defineMethod(c$, "subList", +function(fromIndex, toIndex){ +return java.util.Collections.checkedList(this.l.subList(fromIndex, toIndex), this.type); +}, "~N,~N"); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.l.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.l.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "CheckedRandomAccessList", java.util.Collections.CheckedList, java.util.RandomAccess); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "CheckedSet", java.util.Collections.CheckedCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(obj){ +return this.c.equals(obj); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.c.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +this.keyType = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(m, keyType, valueType){ +if (m == null || keyType == null || valueType == null) { +throw new NullPointerException(); +}this.m = m; +this.keyType = keyType; +this.valueType = valueType; +}, "java.util.Map,Class,Class"); +Clazz_defineMethod(c$, "size", +function(){ +return this.m.size(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.m.isEmpty(); +}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +return this.m.containsKey(key); +}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +return this.m.containsValue(value); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +return this.m.get(key); +}, "~O"); +Clazz_defineMethod(c$, "put", +function(key, value){ +return this.m.put(java.util.Collections.checkType(key, this.keyType), java.util.Collections.checkType(value, this.valueType)); +}, "~O,~O"); +Clazz_defineMethod(c$, "remove", +function(key){ +return this.m.remove(key); +}, "~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +var size = map.size(); +if (size == 0) { +return; +}var entries = new Array(size); +var it = map.entrySet().iterator(); +for (var i = 0; i < size; i++) { +var e = it.next(); +java.util.Collections.checkType(e.getKey(), this.keyType); +java.util.Collections.checkType(e.getValue(), this.valueType); +entries[i] = e; +} +for (var i = 0; i < size; i++) { +this.m.put(entries[i].getKey(), entries[i].getValue()); +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "clear", +function(){ +this.m.clear(); +}); +Clazz_defineMethod(c$, "keySet", +function(){ +return this.m.keySet(); +}); +Clazz_defineMethod(c$, "values", +function(){ +return this.m.values(); +}); +Clazz_defineMethod(c$, "entrySet", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntrySet(this.m.entrySet(), this.valueType); +}); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.m.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.m.hashCode(); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.m.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.e = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap, "CheckedEntry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(e, valueType){ +if (e == null) { +throw new NullPointerException(); +}this.e = e; +this.valueType = valueType; +}, "java.util.Map.Entry,Class"); +Clazz_defineMethod(c$, "getKey", +function(){ +return this.e.getKey(); +}); +Clazz_defineMethod(c$, "getValue", +function(){ +return this.e.getValue(); +}); +Clazz_defineMethod(c$, "setValue", +function(obj){ +return this.e.setValue(java.util.Collections.checkType(obj, this.valueType)); +}, "~O"); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.e.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.e.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.s = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap, "CheckedEntrySet", null, java.util.Set); +Clazz_makeConstructor(c$, +function(s, valueType){ +this.s = s; +this.valueType = valueType; +}, "java.util.Set,Class"); +Clazz_defineMethod(c$, "iterator", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntrySet.CheckedEntryIterator(this.s.iterator(), this.valueType); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +var thisSize = this.size(); +var array = new Array(thisSize); +var it = this.iterator(); +for (var i = 0; i < thisSize; i++) { +array[i] = it.next(); +} +return array; +}); +Clazz_defineMethod(c$, "toArray", +function(array){ +var thisSize = this.size(); +if (array.length < thisSize) { +var ct = array.getClass().getComponentType(); +array = java.lang.reflect.Array.newInstance(ct, thisSize); +}var it = this.iterator(); +for (var i = 0; i < thisSize; i++) { +array[i] = it.next(); +} +if (thisSize < array.length) { +array[thisSize] = null; +}return array; +}, "~A"); +Clazz_defineMethod(c$, "retainAll", +function(c){ +return this.s.retainAll(c); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "removeAll", +function(c){ +return this.s.removeAll(c); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "containsAll", +function(c){ +return this.s.containsAll(c); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "addAll", +function(c){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "remove", +function(o){ +return this.s.remove(o); +}, "~O"); +Clazz_defineMethod(c$, "contains", +function(o){ +return this.s.contains(o); +}, "~O"); +Clazz_overrideMethod(c$, "add", +function(o){ +throw new UnsupportedOperationException(); +}, "java.util.Map.Entry"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.s.isEmpty(); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.s.clear(); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.s.size(); +}); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.s.hashCode(); +}); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.s.equals(object); +}, "~O"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.i = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap.CheckedEntrySet, "CheckedEntryIterator", null, java.util.Iterator); +Clazz_makeConstructor(c$, +function(i, valueType){ +this.i = i; +this.valueType = valueType; +}, "java.util.Iterator,Class"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.i.hasNext(); +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.i.remove(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntry(this.i.next(), this.valueType); +}); +/*eoif3*/})(); +/*eoif3*/})(); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedSortedSet", java.util.Collections.CheckedSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(s, type){ +Clazz_superConstructor(this, java.util.Collections.CheckedSortedSet, [s, type]); +this.ss = s; +}, "java.util.SortedSet,Class"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.ss.comparator(); +}); +Clazz_defineMethod(c$, "subSet", +function(fromElement, toElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.subSet(fromElement, toElement), this.type); +}, "~O,~O"); +Clazz_defineMethod(c$, "headSet", +function(toElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.headSet(toElement), this.type); +}, "~O"); +Clazz_defineMethod(c$, "tailSet", +function(fromElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.tailSet(fromElement), this.type); +}, "~O"); +Clazz_defineMethod(c$, "first", +function(){ +return this.ss.first(); +}); +Clazz_defineMethod(c$, "last", +function(){ +return this.ss.last(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedSortedMap", java.util.Collections.CheckedMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(m, keyType, valueType){ +Clazz_superConstructor(this, java.util.Collections.CheckedSortedMap, [m, keyType, valueType]); +this.sm = m; +}, "java.util.SortedMap,Class,Class"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.sm.comparator(); +}); +Clazz_defineMethod(c$, "subMap", +function(fromKey, toKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.subMap(fromKey, toKey), this.keyType, this.valueType); +}, "~O,~O"); +Clazz_defineMethod(c$, "headMap", +function(toKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.headMap(toKey), this.keyType, this.valueType); +}, "~O"); +Clazz_defineMethod(c$, "tailMap", +function(fromKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.tailMap(fromKey), this.keyType, this.valueType); +}, "~O"); +Clazz_defineMethod(c$, "firstKey", +function(){ +return this.sm.firstKey(); +}); +Clazz_defineMethod(c$, "lastKey", +function(){ +return this.sm.lastKey(); +}); +/*eoif3*/})(); +c$.EMPTY_ENUMERATION = null; +c$.EMPTY_ITERATOR = null; +c$.EMPTY_LIST = new java.util.Collections.EmptyList(); +c$.EMPTY_SET = new java.util.Collections.EmptySet(); +c$.EMPTY_MAP = new java.util.Collections.EmptyMap(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_declareType(java.util, "Dictionary", null); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.AbstractSet", "$.Dictionary", "$.Enumeration", "$.Iterator", "$.Map"], "java.util.Hashtable", ["java.util.Collections"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.table = null; +this.count = 0; +this.threshold = 0; +this.loadFactor = 0; +this.modCount = 0; +this.$keySet = null; +this.$entrySet = null; +this.$values = null; +this.__m = null; +this.__allowJS = false; +Clazz_instantialize(this, arguments);}, java.util, "Hashtable", java.util.Dictionary, [java.util.Map, Cloneable]); +Clazz_makeConstructor(c$, +function(){ +this.initHT(); +}); +Clazz_defineMethod(c$, "initHT", +function(){ +var map = null; +var capacity = 11; +var loadFactor = 0.75; +{ +capacity = arguments[0]; +loadFactor = arguments[1]; +if (typeof capacity == "object") { +map = capacity; +capacity = Math.max(2*t.size(), 11); +this.__allowJS = map.__allowJS; +} else { +this.__allowJS = true; +} +capacity = (capacity || 11); +loadFactor = (loadFactor || 0.75); +}if (capacity < 0) throw new IllegalArgumentException("Illegal Capacity: " + capacity); +if (loadFactor <= 0 || Float.isNaN(loadFactor)) throw new IllegalArgumentException("Illegal Load: " + loadFactor); +if (capacity == 0) capacity = 1; +this.loadFactor = loadFactor; +this.table = new Array(capacity); +this.threshold = Clazz_floatToInt(Math.min(capacity * loadFactor, 2147483640)); +this.__setJS(); +if (map != null) this.putAll(map); +}); +Clazz_overrideMethod(c$, "size", +function(){ +var c = this.count; +{ +c = this.__m && this.__m.size || c; +}return c; +}); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "keys", +function(){ +return this.getEnumeration(0); +}); +Clazz_overrideMethod(c$, "elements", +function(){ +return this.getEnumeration(1); +}); +Clazz_defineMethod(c$, "contains", +function(value){ +if (value == null) { +throw new NullPointerException(); +}if (this.size() == 0) return false; +if (java.util.Hashtable.__isSimple(this)) { +var m = this.__m; +{ +var iter = m.values(); +for (var n = iter.next(); !n.done; n = iter.next()) { +if (n.value == value || n.value.equals(value)) { +return true; +} +} +}} else { +var tab = this.table; +for (var i = tab.length; i-- > 0; ) { +for (var e = tab[i]; e != null; e = e.next_) { +if (e.value.equals(value)) { +return true; +}} +} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return this.contains(value); +}, "~O"); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return false; +case 3: +return true; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +return true; +}} +return false; +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +if (key == null) return null; +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v = null; +{ +v = this.__m.get(key); +}return v; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +return e.value; +}} +return null; +}, "~O"); +Clazz_defineMethod(c$, "rehash", +function(){ +var oldCapacity = this.table.length; +var oldMap = this.table; +var newCapacity = (oldCapacity << 1) + 1; +if (newCapacity - 2147483639 > 0) { +if (oldCapacity == 2147483639) return; +newCapacity = 2147483639; +}var newMap = new Array(newCapacity); +this.modCount++; +this.threshold = Clazz_floatToInt(Math.min(newCapacity * this.loadFactor, 2147483640)); +this.table = newMap; +for (var i = oldCapacity; i-- > 0; ) { +for (var old = oldMap[i]; old != null; ) { +var e = old; +old = old.next_; +var index = (e.hash & 0x7FFFFFFF) % newCapacity; +e.next_ = newMap[index]; +newMap[index] = e; +} +} +}); +Clazz_defineMethod(c$, "addEntry", +function(hash, key, value, index){ +this.modCount++; +var tab = this.table; +if (this.count >= this.threshold) { +this.rehash(); +tab = this.table; +hash = key.hashCode(); +index = (hash & 0x7FFFFFFF) % tab.length; +}var e = tab[index]; +tab[index] = new java.util.Hashtable.Entry(hash, key, value, e); +this.count++; +}, "~N,~O,~O,~N"); +Clazz_overrideMethod(c$, "put", +function(key, value){ +if (value == null) { +throw new NullPointerException(); +}switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +{ +this.__m.set(key, value); +}++this.modCount; +return null; +case 3: +var v0 = null; +{ +v0 = this.__m.get(key); +this.__m.set(key, value); +}++this.modCount; +return v0; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var entry = tab[index]; +for (; entry != null; entry = entry.next_) { +if ((entry.hash == hash) && entry.key.equals(key)) { +var old = entry.value; +entry.value = value; +return old; +}} +this.addEntry(hash, key, value, index); +return null; +}, "~O,~O"); +Clazz_overrideMethod(c$, "remove", +function(key){ +if (key == null) throw new NullPointerException("Hashtable key may not be null"); +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v0 = null; +{ +v0 = this.__m.get(key); this.__m["delete"](key); +}++this.modCount; +return v0; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +this.modCount++; +if (prev != null) { +prev.next_ = e.next_; +} else { +tab[index] = e.next_; +}this.count--; +var oldValue = e.value; +e.value = null; +return oldValue; +}} +return null; +}, "~O"); +Clazz_overrideMethod(c$, "putAll", +function(t){ +var key = null; +var value = null; +if (java.util.Hashtable.__isSimple(t)) { +var me = this; +{ +t.__m.forEach(function(value, key) { me.put(key, value); }) +}return; +}for (var e, $e = t.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.put(e.getKey(), e.getValue()); + +}, "java.util.Map"); +Clazz_overrideMethod(c$, "clear", +function(){ +var tab = this.table; +this.modCount++; +if (java.util.Hashtable.__isSimple(this)) { +{ +this.__m.clear(); +}}this.__setJS(); +for (var index = tab.length; --index >= 0; ) tab[index] = null; + +this.count = 0; +}); +Clazz_defineMethod(c$, "clone", +function(){ +try { +var t = Clazz_superCall(this, java.util.Hashtable, "clone", []); +t.table = new Array(this.table.length); +for (var i = this.table.length; i-- > 0; ) { +t.table[i] = (this.table[i] != null) ? this.table[i].clone() : null; +} +t.$keySet = null; +t.$entrySet = null; +t.$values = null; +t.modCount = 0; +if (java.util.Hashtable.__isSimple(this)) { +t.__setJS(); +var me = this; +{ +me.__m.forEach(function(value, key) { +t.__m.set(key, value); t.modCount++; +}); +}} else { +t.__m = null; +}return t; +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +throw new InternalError(e); +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "toString", +function(){ +var max = this.size() - 1; +if (max == -1) return "{}"; +var it = this.entrySet().iterator(); +var sb = "{"; +for (var i = 0; ; i++) { +var e = it.next(); +var key = e.getKey(); +var value = e.getValue(); +sb += (key === this ? "(this Map)" : key.toString()); +sb += "="; +sb += (value === this ? "(this Map)" : value.toString()); +if (i == max) return sb + '}'; +sb += ", "; +} +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (o === this) return true; +if (!(Clazz_instanceOf(o,"java.util.Map"))) return false; +var t = o; +if (t.size() != this.size()) return false; +try { +var i = this.entrySet().iterator(); +while (i.hasNext()) { +var e = i.next(); +var key = e.getKey(); +var value = e.getValue(); +if (value == null) { +if (!(t.get(key) == null && t.containsKey(key))) return false; +} else { +if (!value.equals(t.get(key))) return false; +}} +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"ClassCastException")){ +var unused = e$$; +{ +return false; +} +} else if (Clazz_exceptionOf(e$$, NullPointerException)){ +var unused = e$$; +{ +return false; +} +} else { +throw e$$; +} +} +return true; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var h = 0; +if (this.count == 0 || this.loadFactor < 0) return h; +this.loadFactor = -this.loadFactor; +var tab = this.table; +for (var entry, $entry = 0, $$entry = tab; $entry < $$entry.length && ((entry = $$entry[$entry]) || true); $entry++) { +while (entry != null) { +h += entry.hashCode(); +entry = entry.next_; +} +} +this.loadFactor = -this.loadFactor; +return h; +}); +Clazz_defineMethod(c$, "getEnumeration", +function(type){ +if (this.size() == 0) { +return java.util.Collections.emptyEnumeration(); +} else { +return new java.util.Hashtable.Enumerator(this, type, false); +}}, "~N"); +Clazz_defineMethod(c$, "getIterator", +function(type){ +if (this.size() == 0) { +return java.util.Collections.emptyIterator(); +} else { +return new java.util.Hashtable.Enumerator(this, type, true); +}}, "~N"); +Clazz_overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) this.$keySet = new java.util.Hashtable.KeySet(this); +return this.$keySet; +}); +Clazz_overrideMethod(c$, "entrySet", +function(){ +if (this.$entrySet == null) this.$entrySet = new java.util.Hashtable.EntrySet(this); +return this.$entrySet; +}); +Clazz_overrideMethod(c$, "values", +function(){ +if (this.$values == null) this.$values = new java.util.Hashtable.ValueCollection(this); +return this.$values; +}); +Clazz_defineMethod(c$, "__setJS", +function(){ +if (this.__allowJS && java.util.Hashtable.USE_SIMPLE) { +var m = null; +{ +m = new Map(); +}this.__m = m; +} else { +this.__m = null; +}}); +c$.__get = Clazz_defineMethod(c$, "__get", +function(map, key){ +{ +return map.__m.get(key == null ? null : key + "") +}}, "~O,~O"); +c$.__set = Clazz_defineMethod(c$, "__set", +function(map, key, value){ +{ +map.__m.set(key == null ? null : key + "", value) +}}, "java.util.Map,~O,~O"); +c$.__hasKey = Clazz_defineMethod(c$, "__hasKey", +function(map, key){ +{ +return (!map.__m ? 0 : key != null && typeof key != "string" +? 1 : map.__m.has(key) ? 3 : 2); +}}, "java.util.Map,~O"); +c$.__isSimple = Clazz_defineMethod(c$, "__isSimple", +function(map){ +{ +return !!map.__m; +}}, "java.util.Map"); +c$.__ensureJavaMap = Clazz_defineMethod(c$, "__ensureJavaMap", +function(map){ +{ +if (map.__m) { +var m = map.__m; +map.__m = null; +m.forEach(function(value, key){map.put(key, value);}); +m.clear(); +} +}}, "java.util.Map"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.hash = 0; +this.key = null; +this.value = null; +this.next_ = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "Entry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(hash, key, value, next){ +this.hash = hash; +this.key = key; +this.value = value; +this.next_ = next; +}, "~N,~O,~O,java.util.Hashtable.Entry"); +Clazz_overrideMethod(c$, "clone", +function(){ +return new java.util.Hashtable.Entry(this.hash, this.key, this.value, (this.next_ == null ? null : this.next_.clone())); +}); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.key; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz_overrideMethod(c$, "setValue", +function(value){ +if (value == null) throw new NullPointerException(); +var oldValue = this.value; +this.value = value; +return oldValue; +}, "~O"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var e = o; +return (this.key == null ? e.getKey() == null : this.key.equals(e.getKey())) && (this.value == null ? e.getValue() == null : this.value.equals(e.getValue())); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.hash ^ (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.key.toString() + "=" + this.value.toString(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "KeySet", java.util.AbstractSet); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.KeySet, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(0); +}); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.ht.containsKey(o); +}, "~O"); +Clazz_overrideMethod(c$, "remove", +function(o){ +return this.ht.remove(o) != null; +}, "~O"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "EntrySet", java.util.AbstractSet); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.EntrySet, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(2); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var entry = o; +var key = entry.getKey(); +switch (java.util.Hashtable.__hasKey(this.ht, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this.ht); +break; +case 3: +var value = entry.getValue(); +var v = this.ht.get(key); +return (value === v || value != null && value.equals(key)); +case 2: +return false; +} +var tab = this.ht.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) if (e.hash == hash && e.equals(entry)) return true; + +return false; +}, "~O"); +Clazz_overrideMethod(c$, "remove", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var entry = o; +var key = entry.getKey(); +switch (java.util.Hashtable.__hasKey(this.ht, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this.ht); +break; +case 3: +var value = entry.getValue(); +if (value == null) return false; +var v = this.ht.get(key); +if (v === value || v.equals(value)) { +this.ht.remove(key); +return true; +}return false; +case 2: +return false; +} +var tab = this.ht.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if (e.hash == hash && e.equals(entry)) { +this.ht.modCount++; +if (prev != null) prev.next_ = e.next_; + else tab[index] = e.next_; +this.ht.count--; +e.value = null; +return true; +}} +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "ValueCollection", java.util.AbstractCollection); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.ValueCollection, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(1); +}); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.ht.containsValue(o); +}, "~O"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.table = null; +this.index = 0; +this.next_ = null; +this.current = null; +this.type = 0; +this.jsMapIterator = null; +this.ht = null; +this.isIterator = false; +this.expectedModCount = 0; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "Enumerator", null, [java.util.Enumeration, java.util.Iterator]); +Clazz_makeConstructor(c$, +function(ht, type, iterator){ +this.ht = ht; +this.table = ht.table; +this.index = ht.table.length; +this.type = type; +this.isIterator = iterator; +this.expectedModCount = ht.modCount; +if (java.util.Hashtable.__isSimple(ht)) { +var m = ht.__m; +{ +this.jsMapIterator = m.entries(); +this.next_ = this.jsMapIterator.next(); +}}}, "java.util.Hashtable,~N,~B"); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +if (java.util.Hashtable.__isSimple(this.ht)) { +var b = false; +{ +b = this.next_ && !this.next_.done +}return b; +} else { +var e = this.next_; +var i = this.index; +var t = this.table; +while (e == null && i > 0) { +e = t[--i]; +} +this.next_ = e; +this.index = i; +return e != null; +}}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +var node = this.next_; +if (java.util.Hashtable.__isSimple(this.ht)) { +var t = this.type; +this.current = node; +var n = null; +{ +n = this.jsMapIterator.next() || null; +}this.next_ = n; +if (node != null) { +var k = null; +var v = null; +var done = false; +{ +done = node.done; +if (!done) { +if (t < 2) return node.value[t]; +k = node.value[0]; +v = node.value[1]; +} +}if (!done) { +return ((Clazz_isClassDefined("java.util.Hashtable$Enumerator$1") ? 0 : java.util.Hashtable.Enumerator.$Hashtable$Enumerator$1$ ()), Clazz_innerTypeInstance(java.util.Hashtable$Enumerator$1, this, null, 0, k, v, null)); +}}} else { +var i = this.index; +var t = this.table; +while (node == null && i > 0) { +node = t[--i]; +} +this.next_ = node; +this.index = i; +if (node != null) { +var e = this.current = this.next_; +this.next_ = e.next_; +return this.type == 0 ? e.key : (this.type == 1 ? e.value : e); +}}throw new java.util.NoSuchElementException("Hashtable Enumerator"); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.hasMoreElements(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.ht.modCount != this.expectedModCount) throw new java.util.ConcurrentModificationException(); +return this.nextElement(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +if (!this.isIterator) throw new UnsupportedOperationException(); +var p = this.current; +if (p == null) throw new IllegalStateException("Hashtable Enumerator"); +if (this.ht.modCount != this.expectedModCount) throw new java.util.ConcurrentModificationException(); +if (java.util.Hashtable.__isSimple(this.ht)) { +var key = null; +{ +key = p.value[0]; +}this.ht.remove(key); +this.expectedModCount++; +} else { +{ +var tab = this.ht.table; +var index = (this.current.hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if (e === this.current) { +this.ht.modCount++; +this.expectedModCount++; +if (prev == null) tab[index] = e.next_; + else prev.next_ = e.next_; +this.ht.count--; +this.current = null; +return; +}} +throw new java.util.ConcurrentModificationException(); +}}}); +c$.$Hashtable$Enumerator$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Hashtable$Enumerator$1", java.util.Hashtable.Entry); +Clazz_overrideMethod(c$, "setValue", +function(value){ +var m = this.b$["java.util.Hashtable.Enumerator"].ht.modCount; +var v = this.b$["java.util.Hashtable.Enumerator"].ht.put(this.getKey(), value); +this.b$["java.util.Hashtable.Enumerator"].ht.modCount = m; +return v; +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +c$.USE_SIMPLE = true; +}); +;//5.0.1-v2 Sat Apr 06 02:47:40 CDT 2024 +Clazz_load(["java.util.Map"], "java.util.MapEntry", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.key = null; +this.value = null; +Clazz_instantialize(this, arguments);}, java.util, "MapEntry", null, [java.util.Map.Entry, Cloneable]); +Clazz_makeConstructor(c$, +function(theKey){ +this.key = theKey; +}, "~O"); +Clazz_makeConstructor(c$, +function(theKey, theValue){ +this.key = theKey; +this.value = theValue; +}, "~O,~O"); +Clazz_defineMethod(c$, "clone", +function(){ +try { +return Clazz_superCall(this, java.util.MapEntry, "clone", []); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return (this.key == null ? entry.getKey() == null : this.key.equals(entry.getKey())) && (this.value == null ? entry.getValue() == null : this.value.equals(entry.getValue())); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.key; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return (this.key == null ? 0 : this.key.hashCode()) ^ (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz_overrideMethod(c$, "setValue", +function(object){ +var result = this.value; +this.value = object; +return result; +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.key + "=" + this.value; +}); +Clazz_declareInterface(java.util.MapEntry, "Type"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Hashtable"], "java.util.Properties", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.builder = null; +this.defaults = null; +Clazz_instantialize(this, arguments);}, java.util, "Properties", java.util.Hashtable); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.util.Properties, []); +}); +Clazz_makeConstructor(c$, +function(properties){ +this.initHT(); +this.defaults = (properties == null ? null : properties); +}, "java.util.Properties"); +Clazz_defineMethod(c$, "dumpString", +function(buffer, string, key){ +var i = 0; +if (!key && i < string.length && string.charAt(i) == ' ') { +buffer += ("\\ "); +i++; +}for (; i < string.length; i++) { +var ch = string.charAt(i); +switch ((ch).charCodeAt(0)) { +case 9: +buffer += ("\\t"); +break; +case 10: +buffer += ("\\n"); +break; +case 12: +buffer += ("\\f"); +break; +case 13: +buffer += ("\\r"); +break; +default: +if ("\\#!=:".indexOf(ch) >= 0 || (key && ch == ' ')) { +buffer += ('\\'); +}if (ch >= ' ' && ch <= '~') { +buffer += (ch); +} else { +var hex = Integer.toHexString(ch.charCodeAt(0)); +buffer += ("\\u"); +for (var j = 0; j < 4 - hex.length; j++) { +buffer += ("0"); +} +buffer += (hex); +}} +} +return buffer; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getProperty", +function(name){ +var result = this.get(name); +var property = (typeof(result)=='string') ? result : null; +if (property == null && this.defaults != null) { +property = this.defaults.getProperty(name); +}return property; +}, "~S"); +Clazz_defineMethod(c$, "getProperty", +function(name, defaultValue){ +var result = this.get(name); +var property = (typeof(result)=='string') ? result : null; +if (property == null && this.defaults != null) { +property = this.defaults.getProperty(name); +}if (property == null) { +return defaultValue; +}return property; +}, "~S,~S"); +Clazz_defineMethod(c$, "list", +function(out){ +if (out == null) { +throw new NullPointerException(); +}var buffer = ""; +var keys = this.propertyNames(); +while (keys.hasMoreElements()) { +var key = keys.nextElement(); +buffer += (key); +buffer += ('='); +var property = this.get(key); +var def = this.defaults; +while (property == null) { +property = def.get(key); +def = def.defaults; +} +if (property.length > 40) { +buffer += (property.substring(0, 37)); +buffer += ("..."); +} else { +buffer += (property); +}out.println(buffer.toString()); +buffer = ""; +} +}, "java.io.PrintStream"); +Clazz_defineMethod(c$, "list", +function(writer){ +if (writer == null) { +throw new NullPointerException(); +}var buffer = ""; +var keys = this.propertyNames(); +while (keys.hasMoreElements()) { +var key = keys.nextElement(); +buffer += (key); +buffer += ('='); +var property = this.get(key); +var def = this.defaults; +while (property == null) { +property = def.get(key); +def = def.defaults; +} +if (property.length > 40) { +buffer += (property.substring(0, 37)); +buffer += ("..."); +} else { +buffer += (property); +}writer.println(buffer.toString()); +buffer = ""; +} +}, "java.io.PrintWriter"); +Clazz_defineMethod(c$, "load", +function($in){ + +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "propertyNames", +function(){ +if (this.defaults == null) { +return this.keys(); +}var set = new java.util.Hashtable(this.defaults.size() + this.size()); +var keys = this.defaults.propertyNames(); +while (keys.hasMoreElements()) { +set.put(keys.nextElement(), set); +} +keys = this.keys(); +while (keys.hasMoreElements()) { +set.put(keys.nextElement(), set); +} +return set.keys(); +}); +Clazz_defineMethod(c$, "save", +function(out, comment){ +try { +this.store(out, comment); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "setProperty", +function(name, value){ +return this.put(name, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "store", +function(out, comment){ + +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "loadFromXML", +function($in){ + +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "storeToXML", +function(os, comment){ + +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "storeToXML", +function(os, comment, encoding){ + +}, "java.io.OutputStream,~S,~S"); +Clazz_defineMethod(c$, "substitutePredefinedEntries", +function(s){ +return s.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\u0027", "'").replaceAll("\"", """); +}, "~S"); +c$.lineSeparator = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declareInterface(java.util, "SortedMap", java.util.Map); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declareInterface(java.util, "SortedSet", java.util.Set); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Enumeration"], "java.util.StringTokenizer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.string = null; +this.delimiters = null; +this.returnDelimiters = false; +this.position = 0; +Clazz_instantialize(this, arguments);}, java.util, "StringTokenizer", null, java.util.Enumeration); +Clazz_makeConstructor(c$, +function(string, delimiters, returnDelimiters){ +{ +switch (arguments.length) { +case 1: delimiters = " \t\n\r\f"; +case 2: returnDelimiters = false; +} +}if (string == null) throw new NullPointerException(); +this.string = string; +this.delimiters = delimiters; +this.returnDelimiters = returnDelimiters; +this.position = 0; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "countTokens", +function(){ +var count = 0; +var inToken = false; +for (var i = this.position, length = this.string.length; i < length; i++) { +if (this.delimiters.indexOf(this.string.charAt(i), 0) >= 0) { +if (this.returnDelimiters) count++; +if (inToken) { +count++; +inToken = false; +}} else { +inToken = true; +}} +if (inToken) count++; +return count; +}); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +return this.hasMoreTokens(); +}); +Clazz_defineMethod(c$, "hasMoreTokens", +function(){ +var length = this.string.length; +if (this.position < length) { +if (this.returnDelimiters) return true; +for (var i = this.position; i < length; i++) if (this.delimiters.indexOf(this.string.charAt(i), 0) == -1) return true; + +}return false; +}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +return this.nextToken(); +}); +Clazz_defineMethod(c$, "nextToken", +function(){ +{ +(arguments.length == 1) && (this.delimiters = arguments[0]); +}var i = this.position; +var length = this.string.length; +if (i < length) { +if (this.returnDelimiters) { +if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return String.valueOf(this.string.charAt(this.position++)); +for (this.position++; this.position < length; this.position++) if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return this.string.substring(i, this.position); + +return this.string.substring(i); +}while (i < length && this.delimiters.indexOf(this.string.charAt(i), 0) >= 0) i++; + +this.position = i; +if (i < length) { +for (this.position++; this.position < length; this.position++) if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return this.string.substring(i, this.position); + +return this.string.substring(i); +}}throw new java.util.NoSuchElementException(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "BytePoster"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericColor"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericFileInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericOutputChannel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "JSInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "JSONEncodable"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "ZInputStream"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api.js"); +Clazz_declareInterface(javajs.api.js, "J2SObjectInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericMouseInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(["J.api.FontManager"], "J.api.GenericPlatform", null, function(){ +var c$ = Clazz_declareInterface(J.api, "GenericPlatform", J.api.FontManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "PlatformViewer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "EventManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "FontManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Font", ["JU.AU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.fid = 0; +this.fontFace = null; +this.fontStyle = null; +this.fontSizeNominal = 0; +this.idFontFace = 0; +this.idFontStyle = 0; +this.fontSize = 0; +this.font = null; +this.fontMetrics = null; +this.manager = null; +this.ascent = 0; +this.descent = 0; +this.isBold = false; +this.isItalic = false; +Clazz_instantialize(this, arguments);}, JU, "Font", null); +Clazz_makeConstructor(c$, +function(manager, fid, idFontFace, idFontStyle, fontSize, fontSizeNominal, graphics){ +this.manager = manager; +this.fid = fid; +this.fontFace = JU.Font.fontFaces[idFontFace]; +this.fontStyle = JU.Font.fontStyles[idFontStyle]; +this.idFontFace = idFontFace; +this.idFontStyle = idFontStyle; +this.fontSize = fontSize; +this.isBold = (idFontStyle & 1) == 1; +this.isItalic = (idFontStyle & 2) == 2; +this.fontSizeNominal = fontSizeNominal; +this.font = manager.newFont(JU.Font.fontFaces[idFontFace], this.isBold, this.isItalic, fontSize); +this.fontMetrics = manager.getFontMetrics(this, graphics); +this.descent = manager.getFontDescent(this.fontMetrics); +this.ascent = manager.getFontAscent(this.fontMetrics); +}, "J.api.FontManager,~N,~N,~N,~N,~N,~O"); +c$.getFont3D = Clazz_defineMethod(c$, "getFont3D", +function(fontID){ +return JU.Font.font3ds[fontID]; +}, "~N"); +c$.createFont3D = Clazz_defineMethod(c$, "createFont3D", +function(fontface, fontstyle, fontsize, fontsizeNominal, manager, graphicsForMetrics){ +if (fontsize > 0xFF) fontsize = 0xFF; +var fontsizeX16 = (Clazz_floatToInt(fontsize)) << 4; +var fontkey = ((fontface & 3) | ((fontstyle & 3) << 2) | (fontsizeX16 << 4)); +for (var i = JU.Font.fontkeyCount; --i > 0; ) if (fontkey == JU.Font.fontkeys[i] && JU.Font.font3ds[i].fontSizeNominal == fontsizeNominal) return JU.Font.font3ds[i]; + +var fontIndexNext = JU.Font.fontkeyCount++; +if (fontIndexNext == JU.Font.fontkeys.length) { +JU.Font.fontkeys = JU.AU.arrayCopyI(JU.Font.fontkeys, fontIndexNext + 8); +JU.Font.font3ds = JU.AU.arrayCopyObject(JU.Font.font3ds, fontIndexNext + 8); +}var font3d = new JU.Font(manager, fontIndexNext, fontface, fontstyle, fontsize, fontsizeNominal, graphicsForMetrics); +JU.Font.font3ds[fontIndexNext] = font3d; +JU.Font.fontkeys[fontIndexNext] = fontkey; +return font3d; +}, "~N,~N,~N,~N,J.api.FontManager,~O"); +c$.getFontFaceID = Clazz_defineMethod(c$, "getFontFaceID", +function(fontface){ +return ("Monospaced".equalsIgnoreCase(fontface) ? 2 : "Serif".equalsIgnoreCase(fontface) ? 1 : 0); +}, "~S"); +c$.getFontStyleID = Clazz_defineMethod(c$, "getFontStyleID", +function(fontstyle){ +for (var i = 4; --i >= 0; ) if (JU.Font.fontStyles[i].equalsIgnoreCase(fontstyle)) return i; + +return -1; +}, "~S"); +Clazz_defineMethod(c$, "getAscent", +function(){ +return this.ascent; +}); +Clazz_defineMethod(c$, "getDescent", +function(){ +return this.descent; +}); +Clazz_defineMethod(c$, "getHeight", +function(){ +return this.getAscent() + this.getDescent(); +}); +Clazz_defineMethod(c$, "getFontMetrics", +function(){ +return this.fontMetrics; +}); +Clazz_defineMethod(c$, "stringWidth", +function(text){ +return this.manager.fontStringWidth(this, text); +}, "~S"); +Clazz_defineMethod(c$, "getInfo", +function(){ +return this.fontSizeNominal + " " + this.fontFace + " " + this.fontStyle; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getInfo() + "]"; +}); +c$.fontkeyCount = 1; +c$.fontkeys = Clazz_newIntArray (8, 0); +c$.font3ds = new Array(8); +c$.fontFaces = Clazz_newArray(-1, ["SansSerif", "Serif", "Monospaced", ""]); +c$.fontStyles = Clazz_newArray(-1, ["Plain", "Bold", "Italic", "BoldItalic"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["javajs.api.GenericColor"], "JS.Color", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.argb = 0; +Clazz_instantialize(this, arguments);}, JS, "Color", null, javajs.api.GenericColor); +Clazz_overrideMethod(c$, "getRGB", +function(){ +return this.argb & 0x00FFFFFF; +}); +Clazz_overrideMethod(c$, "getOpacity255", +function(){ +return ((this.argb >> 24) & 0xFF); +}); +Clazz_overrideMethod(c$, "setOpacity255", +function(a){ +this.argb = this.argb & 0xFFFFFF | ((a & 0xFF) << 24); +}, "~N"); +c$.get1 = Clazz_defineMethod(c$, "get1", +function(rgb){ +var c = new JS.Color(); +c.argb = rgb | 0xFF000000; +return c; +}, "~N"); +c$.get3 = Clazz_defineMethod(c$, "get3", +function(r, g, b){ +return new JS.Color().set4(r, g, b, 0xFF); +}, "~N,~N,~N"); +c$.get4 = Clazz_defineMethod(c$, "get4", +function(r, g, b, a){ +return new JS.Color().set4(r, g, b, a); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "set4", +function(r, g, b, a){ +this.argb = ((a << 24) | (r << 16) | (g << 8) | b) & 0xFFFFFFFF; +return this; +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +var s = ("00000000" + Integer.toHexString(this.argb)); +return "[0x" + s.substring(s.length - 8, s.length) + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.width = 0; +this.height = 0; +Clazz_instantialize(this, arguments);}, JS, "Dimension", null); +Clazz_makeConstructor(c$, +function(w, h){ +this.set(w, h); +}, "~N,~N"); +Clazz_defineMethod(c$, "set", +function(w, h){ +this.width = w; +this.height = h; +return this; +}, "~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs"); +(function(){ +var c$ = Clazz_declareType(J.awtjs, "Event", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericMenuInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P3"], "JU.A4", ["JU.T3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.angle = 0; +Clazz_instantialize(this, arguments);}, JU, "A4", JU.P3); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JU.A4, []); +this.z = 1.0; +}); +c$.new4 = Clazz_defineMethod(c$, "new4", +function(x, y, z, angle){ +var a = new JU.A4(); +a.set4(x, y, z, angle); +return a; +}, "~N,~N,~N,~N"); +c$.newAA = Clazz_defineMethod(c$, "newAA", +function(a1){ +var a = new JU.A4(); +a.set4(a1.x, a1.y, a1.z, a1.angle); +return a; +}, "JU.A4"); +c$.newVA = Clazz_defineMethod(c$, "newVA", +function(axis, angle){ +var a = new JU.A4(); +a.setVA(axis, angle); +return a; +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "setVA", +function(axis, angle){ +this.x = axis.x; +this.y = axis.y; +this.z = axis.z; +this.angle = angle; +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "set4", +function(x, y, z, angle){ +this.x = x; +this.y = y; +this.z = z; +this.angle = angle; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAA", +function(a){ +this.x = a.x; +this.y = a.y; +this.z = a.z; +this.angle = a.angle; +}, "JU.A4"); +Clazz_defineMethod(c$, "setM", +function(m1){ +this.setFromMat(m1.m00, m1.m01, m1.m02, m1.m10, m1.m11, m1.m12, m1.m20, m1.m21, m1.m22); +}, "JU.M3"); +Clazz_defineMethod(c$, "setFromMat", +function(m00, m01, m02, m10, m11, m12, m20, m21, m22){ +var cos = (m00 + m11 + m22 - 1.0) * 0.5; +this.x = (m21 - m12); +this.y = (m02 - m20); +this.z = (m10 - m01); +var sin = 0.5 * Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); +if (sin == 0 && cos == 1) { +this.x = this.y = 0; +this.z = 1; +this.angle = 0; +} else { +this.angle = Math.atan2(sin, cos); +}}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.x) ^ JU.T3.floatToIntBits(this.y) ^ JU.T3.floatToIntBits(this.z) ^ JU.T3.floatToIntBits(this.angle); +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.A4"))) return false; +var a1 = o; +return this.x == a1.x && this.y == a1.y && this.z == a1.z && this.angle == a1.angle; +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.angle + ")"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + "," + this.y + "," + this.z + "," + (this.angle * 180.0 / 3.141592653589793) + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLConnection"], "JU.AjaxURLConnection", ["JU.AU", "$.Rdr"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bytesOut = null; +this.postOut = ""; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLConnection", java.net.URLConnection); +Clazz_defineMethod(c$, "doAjax", +function(){ +var jmol = null; +{ +jmol = Jmol; +}return jmol.doAjax(this.url, this.postOut, this.bytesOut, false); +}); +Clazz_overrideMethod(c$, "connect", +function(){ +}); +Clazz_defineMethod(c$, "outputBytes", +function(bytes){ +this.bytesOut = bytes; +}, "~A"); +Clazz_defineMethod(c$, "outputString", +function(post){ +this.postOut = post; +}, "~S"); +Clazz_overrideMethod(c$, "getInputStream", +function(){ +var is = null; +var o = this.doAjax(); +if (JU.AU.isAB(o)) is = JU.Rdr.getBIS(o); + else if (Clazz_instanceOf(o,"JU.SB")) is = JU.Rdr.getBIS(JU.Rdr.getBytesFromSB(o)); + else if ((typeof(o)=='string')) is = JU.Rdr.getBIS((o).getBytes()); +return is; +}); +Clazz_defineMethod(c$, "getContents", +function(){ +return this.doAjax(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLStreamHandler"], "JU.AjaxURLStreamHandler", ["JU.AjaxURLConnection", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.protocol = null; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLStreamHandler", java.net.URLStreamHandler); +Clazz_makeConstructor(c$, +function(protocol){ +Clazz_superConstructor (this, JU.AjaxURLStreamHandler, []); +this.protocol = protocol; +}, "~S"); +Clazz_defineMethod(c$, "openConnection", +function(url){ +return new JU.AjaxURLConnection(url); +}, "java.net.URL"); +Clazz_overrideMethod(c$, "toExternalForm", +function(u){ +var result = new JU.SB(); +result.append(u.getProtocol()); +result.append(":"); +if (u.getAuthority() != null && u.getAuthority().length > 0) { +result.append("//"); +result.append(u.getAuthority()); +}if (u.getPath() != null) { +result.append(u.getPath()); +}if (u.getQuery() != null) { +result.append("?"); +result.append(u.getQuery()); +}if (u.getRef() != null) { +result.append("#"); +result.append(u.getRef()); +}return result.toString(); +}, "java.net.URL"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLStreamHandlerFactory", "java.util.Hashtable"], "JU.AjaxURLStreamHandlerFactory", ["JU.AjaxURLStreamHandler"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.htFactories = null; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLStreamHandlerFactory", null, java.net.URLStreamHandlerFactory); +Clazz_prepareFields (c$, function(){ +this.htFactories = new java.util.Hashtable(); +}); +Clazz_overrideMethod(c$, "createURLStreamHandler", +function(protocol){ +var fac = this.htFactories.get(protocol); +if (fac == null) this.htFactories.put(protocol, fac = new JU.AjaxURLStreamHandler(protocol)); +return (fac.protocol == null ? null : fac); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.AU", ["java.lang.reflect.Array", "java.util.Arrays", "JU.Lst"], function(){ +var c$ = Clazz_declareType(JU, "AU", null); +c$.ensureLength = Clazz_defineMethod(c$, "ensureLength", +function(array, minimumLength){ +return (array != null && JU.AU.getLength(array) >= minimumLength ? array : JU.AU.arrayCopyObject(array, minimumLength)); +}, "~O,~N"); +c$.ensureLengthS = Clazz_defineMethod(c$, "ensureLengthS", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyS(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthA = Clazz_defineMethod(c$, "ensureLengthA", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyF(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthI = Clazz_defineMethod(c$, "ensureLengthI", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyI(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthShort = Clazz_defineMethod(c$, "ensureLengthShort", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyShort(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthByte = Clazz_defineMethod(c$, "ensureLengthByte", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyByte(array, minimumLength)); +}, "~A,~N"); +c$.doubleLength = Clazz_defineMethod(c$, "doubleLength", +function(array){ +return JU.AU.arrayCopyObject(array, (array == null ? 16 : 2 * JU.AU.getLength(array))); +}, "~O"); +c$.doubleLengthS = Clazz_defineMethod(c$, "doubleLengthS", +function(array){ +return JU.AU.arrayCopyS(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthF = Clazz_defineMethod(c$, "doubleLengthF", +function(array){ +return JU.AU.arrayCopyF(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthI = Clazz_defineMethod(c$, "doubleLengthI", +function(array){ +return JU.AU.arrayCopyI(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthShort = Clazz_defineMethod(c$, "doubleLengthShort", +function(array){ +return JU.AU.arrayCopyShort(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthByte = Clazz_defineMethod(c$, "doubleLengthByte", +function(array){ +return JU.AU.arrayCopyByte(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthBool = Clazz_defineMethod(c$, "doubleLengthBool", +function(array){ +return JU.AU.arrayCopyBool(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.deleteElements = Clazz_defineMethod(c$, "deleteElements", +function(array, firstElement, nElements){ +if (nElements == 0 || array == null) return array; +var oldLength = JU.AU.getLength(array); +if (firstElement >= oldLength) return array; +var n = oldLength - (firstElement + nElements); +if (n < 0) n = 0; +var t = JU.AU.newInstanceO(array, firstElement + n); +if (firstElement > 0) System.arraycopy(array, 0, t, 0, firstElement); +if (n > 0) System.arraycopy(array, firstElement + nElements, t, firstElement, n); +return t; +}, "~O,~N,~N"); +c$.arrayCopyObject = Clazz_defineMethod(c$, "arrayCopyObject", +function(array, newLength){ +var oldLength = (array == null ? -1 : JU.AU.getLength(array)); +if (newLength < 0) newLength = oldLength; +if (newLength == oldLength) return array; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = JU.AU.newInstanceO(array, newLength); +if (oldLength > 0) System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +return t; +}, "~O,~N"); +c$.newInstanceO = Clazz_defineMethod(c$, "newInstanceO", +function(array, n){ +if (JU.AU.isAI(array)) return Clazz_newIntArray (n, 0); +{ +if (!array.getClass || !array.getClass().getComponentType) +return new Array(n); +}return java.lang.reflect.Array.newInstance(array.getClass().getComponentType(), n); +}, "~O,~N"); +c$.getLength = Clazz_defineMethod(c$, "getLength", +function(array){ +{ +return array.length +}}, "~O"); +c$.arrayCopyS = Clazz_defineMethod(c$, "arrayCopyS", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = new Array(newLength); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyII = Clazz_defineMethod(c$, "arrayCopyII", +function(array, newLength){ +var t = JU.AU.newInt2(newLength); +if (array != null) { +var oldLength = array.length; +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyPt = Clazz_defineMethod(c$, "arrayCopyPt", +function(array, newLength){ +if (newLength < 0) newLength = array.length; +var t = new Array(newLength); +if (array != null) { +var oldLength = array.length; +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyF = Clazz_defineMethod(c$, "arrayCopyF", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newFloatArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyI = Clazz_defineMethod(c$, "arrayCopyI", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newIntArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyRangeI = Clazz_defineMethod(c$, "arrayCopyRangeI", +function(array, i0, n){ +if (array == null) return null; +var oldLength = array.length; +if (n == -1) n = oldLength; +if (n == -2) n = Clazz_doubleToInt(oldLength / 2); +{ +return Clazz_newArray(-1, array, i0, n); +}}, "~A,~N,~N"); +c$.arrayCopyRangeRevI = Clazz_defineMethod(c$, "arrayCopyRangeRevI", +function(array, i0, n){ +if (array == null) return null; +{ +return Clazz_newArray(-1, array, i0, n).reverse(); +}}, "~A,~N,~N"); +c$.arrayCopyShort = Clazz_defineMethod(c$, "arrayCopyShort", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newShortArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyByte = Clazz_defineMethod(c$, "arrayCopyByte", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newByteArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyBool = Clazz_defineMethod(c$, "arrayCopyBool", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newBooleanArray(newLength, false); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.swapInt = Clazz_defineMethod(c$, "swapInt", +function(array, indexA, indexB){ +var t = array[indexA]; +array[indexA] = array[indexB]; +array[indexB] = t; +}, "~A,~N,~N"); +c$.dumpArray = Clazz_defineMethod(c$, "dumpArray", +function(msg, A, x1, x2, y1, y2){ +var s = "dumpArray: " + msg + "\n"; +for (var x = x1; x <= x2; x++) s += "\t*" + x + "*"; + +for (var y = y2; y >= y1; y--) { +s += "\n*" + y + "*"; +for (var x = x1; x <= x2; x++) s += "\t" + (x < A.length && y < A[x].length ? A[x][y] : NaN); + +} +return s; +}, "~S,~A,~N,~N,~N,~N"); +c$.dumpIntArray = Clazz_defineMethod(c$, "dumpIntArray", +function(A, n){ +var str = ""; +for (var i = 0; i < n; i++) str += " " + A[i]; + +return str; +}, "~A,~N"); +c$.sortedItem = Clazz_defineMethod(c$, "sortedItem", +function(v, n){ +if (v.size() == 0) return null; +if (v.size() == 1) return v.get(0); +var keys = v.toArray( new Array(v.size())); +java.util.Arrays.sort(keys); +return keys[n % keys.length]; +}, "JU.Lst,~N"); +c$.createArrayOfArrayList = Clazz_defineMethod(c$, "createArrayOfArrayList", +function(size){ +return new Array(size); +}, "~N"); +c$.createArrayOfHashtable = Clazz_defineMethod(c$, "createArrayOfHashtable", +function(size){ +return new Array(size); +}, "~N"); +c$.swap = Clazz_defineMethod(c$, "swap", +function(o, i, j){ +var oi = o[i]; +o[i] = o[j]; +o[j] = oi; +}, "~A,~N,~N"); +c$.newFloat2 = Clazz_defineMethod(c$, "newFloat2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newInt2 = Clazz_defineMethod(c$, "newInt2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newInt3 = Clazz_defineMethod(c$, "newInt3", +function(nx, ny){ +{ +return Clazz_newArray(nx, null); +}}, "~N,~N"); +c$.newFloat3 = Clazz_defineMethod(c$, "newFloat3", +function(nx, ny){ +{ +return Clazz_newArray(nx, null); +}}, "~N,~N"); +c$.newInt4 = Clazz_defineMethod(c$, "newInt4", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newShort2 = Clazz_defineMethod(c$, "newShort2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newByte2 = Clazz_defineMethod(c$, "newByte2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newDouble2 = Clazz_defineMethod(c$, "newDouble2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newDouble3n = Clazz_defineMethod(c$, "newDouble3n", +function(n){ +return Clazz_newDoubleArray (n, 0); +}, "~N"); +c$.removeMapKeys = Clazz_defineMethod(c$, "removeMapKeys", +function(map, root){ +var list = new JU.Lst(); +for (var key, $key = map.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (key.startsWith(root)) list.addLast(key); + +for (var i = list.size(); --i >= 0; ) map.remove(list.get(i)); + +return list.size(); +}, "java.util.Map,~S"); +c$.isAS = Clazz_defineMethod(c$, "isAS", +function(x){ +{ +return Clazz_isAS(x); +}}, "~O"); +c$.isASS = Clazz_defineMethod(c$, "isASS", +function(x){ +{ +return Clazz_isASS(x); +}}, "~O"); +c$.isAP = Clazz_defineMethod(c$, "isAP", +function(x){ +{ +return Clazz_isAP(x); +}}, "~O"); +c$.isAF = Clazz_defineMethod(c$, "isAF", +function(x){ +{ +return Clazz_isAF(x); +}}, "~O"); +c$.isAFloat = Clazz_defineMethod(c$, "isAFloat", +function(x){ +{ +return Clazz_isAFloat(x); +}}, "~O"); +c$.isAD = Clazz_defineMethod(c$, "isAD", +function(x){ +{ +return Clazz_isAF(x); +}}, "~O"); +c$.isADD = Clazz_defineMethod(c$, "isADD", +function(x){ +{ +return Clazz_isAFF(x); +}}, "~O"); +c$.isADDD = Clazz_defineMethod(c$, "isADDD", +function(x){ +{ +return Clazz_isAFFF(x); +}}, "~O"); +c$.isAB = Clazz_defineMethod(c$, "isAB", +function(x){ +{ +return Clazz_isAB(x); +}}, "~O"); +c$.isAI = Clazz_defineMethod(c$, "isAI", +function(x){ +{ +return Clazz_isAI(x); +}}, "~O"); +c$.isAII = Clazz_defineMethod(c$, "isAII", +function(x){ +{ +return Clazz_isAII(x); +}}, "~O"); +c$.isAFF = Clazz_defineMethod(c$, "isAFF", +function(x){ +{ +return Clazz_isAFF(x); +}}, "~O"); +c$.isAFFF = Clazz_defineMethod(c$, "isAFFF", +function(x){ +{ +return Clazz_isAFFF(x); +}}, "~O"); +c$.ensureSignedBytes = Clazz_defineMethod(c$, "ensureSignedBytes", +function(b){ +if (b != null) { +{ +for (var i = b.length; --i >= 0;) { var j = b[i] & 0xFF; if +(j >= 0x80) j -= 0x100; b[i] = j; } +}}return b; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Base64", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JU, "Base64", null); +c$.getBytes64 = Clazz_defineMethod(c$, "getBytes64", +function(bytes){ +return JU.Base64.getBase64(bytes).toBytes(0, -1); +}, "~A"); +c$.getBase64 = Clazz_defineMethod(c$, "getBase64", +function(bytes){ +var nBytes = bytes.length; +var sout = new JU.SB(); +if (nBytes == 0) return sout; +for (var i = 0, nPad = 0; i < nBytes && nPad == 0; ) { +if (i % 75 == 0 && i != 0) sout.append("\r\n"); +nPad = (i + 2 == nBytes ? 1 : i + 1 == nBytes ? 2 : 0); +var outbytes = ((bytes[i++] << 16) & 0xFF0000) | ((nPad == 2 ? 0 : bytes[i++] << 8) & 0x00FF00) | ((nPad >= 1 ? 0 : bytes[i++]) & 0x0000FF); +sout.appendC(JU.Base64.base64.charAt((outbytes >> 18) & 0x3F)); +sout.appendC(JU.Base64.base64.charAt((outbytes >> 12) & 0x3F)); +sout.appendC(nPad == 2 ? '=' : JU.Base64.base64.charAt((outbytes >> 6) & 0x3F)); +sout.appendC(nPad >= 1 ? '=' : JU.Base64.base64.charAt(outbytes & 0x3F)); +} +return sout; +}, "~A"); +c$.decodeBase64 = Clazz_defineMethod(c$, "decodeBase64", +function(strBase64){ +var nBytes = 0; +var ch; +var pt0 = strBase64.indexOf(";base64,") + 1; +if (pt0 > 0) pt0 += 7; +var chars64 = strBase64.toCharArray(); +var len64 = chars64.length; +if (len64 == 0) return Clazz_newByteArray (0, 0); +for (var i = len64; --i >= pt0; ) nBytes += ((ch = (chars64[i]).charCodeAt(0) & 0x7F) == 65 || JU.Base64.decode64[ch] > 0 ? 3 : 0); + +nBytes = nBytes >> 2; +var bytes = Clazz_newByteArray (nBytes, 0); +var offset = 18; +for (var i = pt0, pt = 0, b = 0; i < len64; i++) { +if (JU.Base64.decode64[ch = (chars64[i]).charCodeAt(0) & 0x7F] > 0 || ch == 65 || ch == 61) { +b |= JU.Base64.decode64[ch] << offset; +offset -= 6; +if (offset < 0) { +bytes[pt++] = ((b & 0xFF0000) >> 16); +if (pt < nBytes) bytes[pt++] = ((b & 0xFF00) >> 8); +if (pt < nBytes) bytes[pt++] = (b & 0xFF); +offset = 18; +b = 0; +}}} +return bytes; +}, "~S"); +c$.base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +c$.decode64 = Clazz_newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 62, 0, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 63, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.JSONEncodable"], "JU.BS", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.words = null; +this.wordsInUse = 0; +this.sizeIsSticky = false; +Clazz_instantialize(this, arguments);}, JU, "BS", null, [Cloneable, javajs.api.JSONEncodable]); +Clazz_makeConstructor(c$, +function(){ +this.initWords(32); +this.sizeIsSticky = false; +}); +c$.wordIndex = Clazz_defineMethod(c$, "wordIndex", +function(bitIndex){ +return bitIndex >> 5; +}, "~N"); +Clazz_defineMethod(c$, "recalculateWordsInUse", +function(){ +var i; +for (i = this.wordsInUse - 1; i >= 0; i--) if (this.words[i] != 0) break; + +this.wordsInUse = i + 1; +}); +c$.newN = Clazz_defineMethod(c$, "newN", +function(nbits){ +var bs = new JU.BS(); +bs.init(nbits); +return bs; +}, "~N"); +Clazz_defineMethod(c$, "init", +function(nbits){ +if (nbits < 0) throw new NegativeArraySizeException("nbits < 0: " + nbits); +this.initWords(nbits); +this.sizeIsSticky = true; +}, "~N"); +Clazz_defineMethod(c$, "initWords", +function(nbits){ +this.words = Clazz_newIntArray (JU.BS.wordIndex(nbits - 1) + 1, 0); +}, "~N"); +Clazz_defineMethod(c$, "ensureCapacity", +function(wordsRequired){ +if (this.words.length < wordsRequired) { +var request = Math.max(2 * this.words.length, wordsRequired); +this.setLength(request); +this.sizeIsSticky = false; +}}, "~N"); +Clazz_defineMethod(c$, "expandTo", +function(wordIndex){ +var wordsRequired = wordIndex + 1; +if (this.wordsInUse < wordsRequired) { +this.ensureCapacity(wordsRequired); +this.wordsInUse = wordsRequired; +}}, "~N"); +Clazz_defineMethod(c$, "set", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +this.expandTo(wordIndex); +this.words[wordIndex] |= (1 << bitIndex); +}, "~N"); +Clazz_defineMethod(c$, "setBitTo", +function(bitIndex, value){ +if (value) this.set(bitIndex); + else this.clear(bitIndex); +}, "~N,~B"); +Clazz_defineMethod(c$, "setBits", +function(fromIndex, toIndex){ +if (fromIndex == toIndex) return; +var startWordIndex = JU.BS.wordIndex(fromIndex); +var endWordIndex = JU.BS.wordIndex(toIndex - 1); +this.expandTo(endWordIndex); +var firstWordMask = -1 << fromIndex; +var lastWordMask = -1 >>> -toIndex; +if (startWordIndex == endWordIndex) { +this.words[startWordIndex] |= (firstWordMask & lastWordMask); +} else { +this.words[startWordIndex] |= firstWordMask; +for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = -1; + +this.words[endWordIndex] |= lastWordMask; +}}, "~N,~N"); +Clazz_defineMethod(c$, "clear", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +if (wordIndex >= this.wordsInUse) return; +this.words[wordIndex] &= ~(1 << bitIndex); +this.recalculateWordsInUse(); +}, "~N"); +Clazz_defineMethod(c$, "clearBits", +function(fromIndex, toIndex){ +if (fromIndex == toIndex) return; +var startWordIndex = JU.BS.wordIndex(fromIndex); +if (startWordIndex >= this.wordsInUse) return; +var endWordIndex = JU.BS.wordIndex(toIndex - 1); +if (endWordIndex >= this.wordsInUse) { +toIndex = this.length(); +endWordIndex = this.wordsInUse - 1; +}var firstWordMask = -1 << fromIndex; +var lastWordMask = -1 >>> -toIndex; +if (startWordIndex == endWordIndex) { +this.words[startWordIndex] &= ~(firstWordMask & lastWordMask); +} else { +this.words[startWordIndex] &= ~firstWordMask; +for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = 0; + +this.words[endWordIndex] &= ~lastWordMask; +}this.recalculateWordsInUse(); +}, "~N,~N"); +Clazz_defineMethod(c$, "clearAll", +function(){ +while (this.wordsInUse > 0) this.words[--this.wordsInUse] = 0; + +}); +Clazz_defineMethod(c$, "get", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +return (wordIndex < this.wordsInUse) && ((this.words[wordIndex] & (1 << bitIndex)) != 0); +}, "~N"); +Clazz_defineMethod(c$, "nextSetBit", +function(fromIndex){ +if (fromIndex < 0) throw new IndexOutOfBoundsException("fromIndex < 0: " + fromIndex); +var u = JU.BS.wordIndex(fromIndex); +if (u >= this.wordsInUse) return -1; +var word = this.words[u] & (-1 << fromIndex); +while (true) { +if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros(word); +if (++u == this.wordsInUse) return -1; +word = this.words[u]; +} +}, "~N"); +Clazz_defineMethod(c$, "nextClearBit", +function(fromIndex){ +if (fromIndex < 0) throw new IndexOutOfBoundsException("fromIndex < 0: " + fromIndex); +var u = JU.BS.wordIndex(fromIndex); +if (u >= this.wordsInUse) return fromIndex; +var word = ~this.words[u] & (-1 << fromIndex); +while (true) { +if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros(word); +if (++u == this.wordsInUse) return this.wordsInUse * 32; +word = ~this.words[u]; +} +}, "~N"); +Clazz_defineMethod(c$, "length", +function(){ +if (this.wordsInUse == 0) return 0; +return 32 * (this.wordsInUse - 1) + (32 - Integer.numberOfLeadingZeros(this.words[this.wordsInUse - 1])); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.wordsInUse == 0; +}); +Clazz_defineMethod(c$, "intersects", +function(set){ +for (var i = Math.min(this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) if ((this.words[i] & set.words[i]) != 0) return true; + +return false; +}, "JU.BS"); +Clazz_defineMethod(c$, "cardinality", +function(){ +var sum = 0; +for (var i = 0; i < this.wordsInUse; i++) sum += Integer.bitCount(this.words[i]); + +return sum; +}); +Clazz_defineMethod(c$, "and", +function(set){ +if (this === set) return; +while (this.wordsInUse > set.wordsInUse) this.words[--this.wordsInUse] = 0; + +for (var i = 0; i < this.wordsInUse; i++) this.words[i] &= set.words[i]; + +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_defineMethod(c$, "or", +function(set){ +if (this === set) return; +var wordsInCommon = Math.min(this.wordsInUse, set.wordsInUse); +if (this.wordsInUse < set.wordsInUse) { +this.ensureCapacity(set.wordsInUse); +this.wordsInUse = set.wordsInUse; +}for (var i = 0; i < wordsInCommon; i++) this.words[i] |= set.words[i]; + +if (wordsInCommon < set.wordsInUse) System.arraycopy(set.words, wordsInCommon, this.words, wordsInCommon, this.wordsInUse - wordsInCommon); +}, "JU.BS"); +Clazz_defineMethod(c$, "xor", +function(set){ +var wordsInCommon = Math.min(this.wordsInUse, set.wordsInUse); +if (this.wordsInUse < set.wordsInUse) { +this.ensureCapacity(set.wordsInUse); +this.wordsInUse = set.wordsInUse; +}for (var i = 0; i < wordsInCommon; i++) this.words[i] ^= set.words[i]; + +if (wordsInCommon < set.wordsInUse) System.arraycopy(set.words, wordsInCommon, this.words, wordsInCommon, set.wordsInUse - wordsInCommon); +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_defineMethod(c$, "andNot", +function(set){ +for (var i = Math.min(this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) this.words[i] &= ~set.words[i]; + +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var h = 1234; +for (var i = this.wordsInUse; --i >= 0; ) h ^= this.words[i] * (i + 1); + +return ((h >> 32) ^ h); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.words.length * 32; +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz_instanceOf(obj,"JU.BS"))) return false; +if (this === obj) return true; +var set = obj; +if (this.wordsInUse != set.wordsInUse) return false; +for (var i = 0; i < this.wordsInUse; i++) if (this.words[i] != set.words[i]) return false; + +return true; +}, "~O"); +Clazz_overrideMethod(c$, "clone", +function(){ +if (!this.sizeIsSticky && this.wordsInUse != this.words.length) this.setLength(this.wordsInUse); +return JU.BS.copy(this); +}); +Clazz_defineMethod(c$, "setLength", +function(n){ +{ +if (n == this.words.length) return; +if (n == this.wordsInUse) { +this.words = Clazz_newArray(-1, this.words, 0, n); +return; +} +}var a = Clazz_newIntArray (n, 0); +System.arraycopy(this.words, 0, a, 0, this.wordsInUse); +this.words = a; +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return JU.BS.escape(this, '(', ')'); +}); +c$.copy = Clazz_defineMethod(c$, "copy", +function(bitsetToCopy){ +var bs; +{ +bs = Clazz_clone(bitsetToCopy); +}var wordCount = bitsetToCopy.wordsInUse; +if (wordCount == 0) { +bs.words = JU.BS.emptyBitmap; +} else { +{ +bs.words = Clazz_newArray(-1, bitsetToCopy.words, 0, bs.wordsInUse = wordCount); +}}return bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "cardinalityN", +function(max){ +var n = this.cardinality(); +for (var i = this.length(); --i >= max; ) if (this.get(i)) n--; + +return n; +}, "~N"); +Clazz_overrideMethod(c$, "toJSON", +function(){ +var numBits = (this.wordsInUse > 128 ? this.cardinality() : this.wordsInUse * 32); +var b = JU.SB.newN(6 * numBits + 2); +b.appendC('['); +var i = this.nextSetBit(0); +if (i != -1) { +b.appendI(i); +for (i = this.nextSetBit(i + 1); i >= 0; i = this.nextSetBit(i + 1)) { +var endOfRun = this.nextClearBit(i); +do { +b.append(", ").appendI(i); +} while (++i < endOfRun); +} +}b.appendC(']'); +return b.toString(); +}); +c$.escape = Clazz_defineMethod(c$, "escape", +function(bs, chOpen, chClose){ +if (bs == null) return chOpen + "{}" + chClose; +var s = new JU.SB(); +s.append(chOpen + "{"); +var imax = bs.length(); +var iLast = -1; +var iFirst = -2; +var i = -1; +while (++i <= imax) { +var isSet = bs.get(i); +if (i == imax || iLast >= 0 && !isSet) { +if (iLast >= 0 && iFirst != iLast) s.append((iFirst == iLast - 1 ? " " : ":") + iLast); +if (i == imax) break; +iLast = -1; +}if (bs.get(i)) { +if (iLast < 0) { +s.append((iFirst == -2 ? "" : " ") + i); +iFirst = i; +}iLast = i; +}} +s.append("}").appendC(chClose); +return s.toString(); +}, "JU.BS,~S,~S"); +c$.unescape = Clazz_defineMethod(c$, "unescape", +function(str){ +var ch; +var len; +if (str == null || (len = (str = str.trim()).length) < 4 || str.equalsIgnoreCase("({null})") || (ch = str.charAt(0)) != '(' && ch != '[' || str.charAt(len - 1) != (ch == '(' ? ')' : ']') || str.charAt(1) != '{' || str.indexOf('}') != len - 2) return null; +len -= 2; +for (var i = len; --i >= 2; ) if (!JU.PT.isDigit(ch = str.charAt(i)) && ch != ' ' && ch != '\t' && ch != ':') return null; + +var lastN = len; +while (JU.PT.isDigit(str.charAt(--lastN))) { +} +if (++lastN == len) lastN = 0; + else try { +lastN = Integer.parseInt(str.substring(lastN, len)); +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +return null; +} else { +throw e; +} +} +var bs = JU.BS.newN(lastN); +lastN = -1; +var iPrev = -1; +var iThis = -2; +for (var i = 2; i <= len; i++) { +switch ((ch = str.charAt(i)).charCodeAt(0)) { +case 9: +case 32: +case 125: +if (iThis < 0) break; +if (iThis < lastN) return null; +lastN = iThis; +if (iPrev < 0) iPrev = iThis; +bs.setBits(iPrev, iThis + 1); +iPrev = -1; +iThis = -2; +break; +case 58: +iPrev = lastN = iThis; +iThis = -2; +break; +default: +if (JU.PT.isDigit(ch)) { +if (iThis < 0) iThis = 0; +iThis = (iThis * 10) + (ch.charCodeAt(0) - 48); +}} +} +return (iPrev >= 0 ? null : bs); +}, "~S"); +c$.emptyBitmap = Clazz_newIntArray (0, 0); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.Hashtable"], "JU.CU", ["JU.P3", "$.PT"], function(){ +var c$ = Clazz_declareType(JU, "CU", null); +c$.toRGBHexString = Clazz_defineMethod(c$, "toRGBHexString", +function(c){ +var rgb = c.getRGB(); +if (rgb == 0) return "000000"; +var r = "00" + Integer.toHexString((rgb >> 16) & 0xFF); +r = r.substring(r.length - 2); +var g = "00" + Integer.toHexString((rgb >> 8) & 0xFF); +g = g.substring(g.length - 2); +var b = "00" + Integer.toHexString(rgb & 0xFF); +b = b.substring(b.length - 2); +return r + g + b; +}, "javajs.api.GenericColor"); +c$.toCSSString = Clazz_defineMethod(c$, "toCSSString", +function(c){ +var opacity = c.getOpacity255(); +if (opacity == 255) return "#" + JU.CU.toRGBHexString(c); +var rgb = c.getRGB(); +return "rgba(" + ((rgb >> 16) & 0xFF) + "," + ((rgb >> 8) & 0xff) + "," + (rgb & 0xff) + "," + opacity / 255 + ")"; +}, "javajs.api.GenericColor"); +c$.getArgbFromString = Clazz_defineMethod(c$, "getArgbFromString", +function(strColor){ +var len = 0; +if (strColor == null || (len = strColor.length) == 0) return 0; +strColor = strColor.toLowerCase(); +if (strColor.charAt(0) == '[' && strColor.charAt(len - 1) == ']') { +var check; +if (strColor.indexOf(",") >= 0) { +var tokens = JU.PT.split(strColor.substring(1, strColor.length - 1), ","); +if (tokens.length != 3) return 0; +var red = JU.PT.parseFloat(tokens[0]); +var grn = JU.PT.parseFloat(tokens[1]); +var blu = JU.PT.parseFloat(tokens[2]); +return JU.CU.colorTriadToFFRGB(red, grn, blu); +}switch (len) { +case 9: +check = "x"; +break; +case 10: +check = "0x"; +break; +default: +return 0; +} +if (strColor.indexOf(check) != 1) return 0; +strColor = "#" + strColor.substring(len - 7, len - 1); +len = 7; +}if (len == 7 && strColor.charAt(0) == '#') { +try { +return JU.PT.parseIntRadix(strColor.substring(1, 7), 16) | 0xFF000000; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return 0; +} else { +throw e; +} +} +}var boxedArgb = JU.CU.mapJavaScriptColors.get(strColor); +return (boxedArgb == null ? 0 : boxedArgb.intValue()); +}, "~S"); +c$.colorTriadToFFRGB = Clazz_defineMethod(c$, "colorTriadToFFRGB", +function(x, y, z){ +if (x <= 1 && y <= 1 && z <= 1) { +if (x > 0) x = x * 256 - 1; +if (y > 0) y = y * 256 - 1; +if (z > 0) z = z * 256 - 1; +}return JU.CU.rgb(Clazz_floatToInt(x), Clazz_floatToInt(y), Clazz_floatToInt(z)); +}, "~N,~N,~N"); +c$.rgb = Clazz_defineMethod(c$, "rgb", +function(red, grn, blu){ +return 0xFF000000 | (red << 16) | (grn << 8) | blu; +}, "~N,~N,~N"); +c$.colorPtFromString = Clazz_defineMethod(c$, "colorPtFromString", +function(colorName){ +return JU.CU.colorPtFromInt(JU.CU.getArgbFromString(colorName), null); +}, "~S"); +c$.colorPtFromInt = Clazz_defineMethod(c$, "colorPtFromInt", +function(color, pt){ +if (pt == null) pt = new JU.P3(); +pt.set((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF); +return pt; +}, "~N,JU.P3"); +c$.colorPtToFFRGB = Clazz_defineMethod(c$, "colorPtToFFRGB", +function(pt){ +return JU.CU.colorTriadToFFRGB(pt.x, pt.y, pt.z); +}, "JU.T3"); +c$.toRGB3f = Clazz_defineMethod(c$, "toRGB3f", +function(c, f){ +f[0] = ((c >> 16) & 0xFF) / 255; +f[1] = ((c >> 8) & 0xFF) / 255; +f[2] = (c & 0xFF) / 255; +}, "~N,~A"); +c$.toFFGGGfromRGB = Clazz_defineMethod(c$, "toFFGGGfromRGB", +function(rgb){ +var grey = (Clazz_doubleToInt(((2989 * ((rgb >> 16) & 0xFF)) + (5870 * ((rgb >> 8) & 0xFF)) + (1140 * (rgb & 0xFF)) + 5000) / 10000)) & 0xFFFFFF; +return JU.CU.rgb(grey, grey, grey); +}, "~N"); +c$.rgbToHSL = Clazz_defineMethod(c$, "rgbToHSL", +function(rgb, doRound){ +var r = rgb.x / 255; +var g = rgb.y / 255; +var b = rgb.z / 255; +var min = Math.min(r, Math.min(g, b)); +var max = Math.max(r, Math.max(g, b)); +var p = (max + min); +var q = (max - min); +var h = (60 * ((q == 0 ? 0 : max == r ? ((g - b) / q + 6) : max == g ? (b - r) / q + 2 : (r - g) / q + 4))) % 360; +var s = q / (q == 0 ? 1 : p <= 1 ? p : 2 - p); +return (doRound ? JU.P3.new3(Math.round(h * 10) / 10, Math.round(s * 1000) / 10, Math.round(p * 500) / 10) : JU.P3.new3(h, s * 100, p * 50)); +}, "JU.P3,~B"); +c$.hslToRGB = Clazz_defineMethod(c$, "hslToRGB", +function(hsl){ +var h = Math.max(0, Math.min(360, hsl.x)) / 60; +var s = Math.max(0, Math.min(100, hsl.y)) / 100; +var l = Math.max(0, Math.min(100, hsl.z)) / 100; +var p = l - (l < 0.5 ? l : 1 - l) * s; +var q = 2 * (l - p); +var r = JU.CU.toRGB(p, q, h + 2); +var g = JU.CU.toRGB(p, q, h); +var b = JU.CU.toRGB(p, q, h - 2); +return JU.P3.new3(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)); +}, "JU.P3"); +c$.toRGB = Clazz_defineMethod(c$, "toRGB", +function(p, q, h){ +return ((h = (h + (h < 0 ? 6 : h > 6 ? -6 : 0))) < 1 ? p + q * h : h < 3 ? p + q : h < 4 ? p + q * (4 - h) : p); +}, "~N,~N,~N"); +c$.colorNames = Clazz_newArray(-1, ["contrast", "black", "pewhite", "pecyan", "pepurple", "pegreen", "peblue", "peviolet", "pebrown", "pepink", "peyellow", "pedarkgreen", "peorange", "pelightblue", "pedarkcyan", "pedarkgray", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgreen", "lightgrey", "lightgray", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "bluetint", "greenblue", "greentint", "grey", "gray", "pinktint", "redorange", "yellowtint"]); +c$.colorArgbs = Clazz_newIntArray(-1, [0xFFfedcba, 0xFF000000, 0xFFffffff, 0xFF00ffff, 0xFFd020ff, 0xFF00ff00, 0xFF6060ff, 0xFFff80c0, 0xFFa42028, 0xFFffd8d8, 0xFFffff00, 0xFF00c000, 0xFFffb000, 0xFFb0b0ff, 0xFF00a0a0, 0xFF606060, 0xFFF0F8FF, 0xFFFAEBD7, 0xFF00FFFF, 0xFF7FFFD4, 0xFFF0FFFF, 0xFFF5F5DC, 0xFFFFE4C4, 0xFFFFEBCD, 0xFF0000FF, 0xFF8A2BE2, 0xFFA52A2A, 0xFFDEB887, 0xFF5F9EA0, 0xFF7FFF00, 0xFFD2691E, 0xFFFF7F50, 0xFF6495ED, 0xFFFFF8DC, 0xFFDC143C, 0xFF00FFFF, 0xFF00008B, 0xFF008B8B, 0xFFB8860B, 0xFFA9A9A9, 0xFF006400, 0xFFBDB76B, 0xFF8B008B, 0xFF556B2F, 0xFFFF8C00, 0xFF9932CC, 0xFF8B0000, 0xFFE9967A, 0xFF8FBC8F, 0xFF483D8B, 0xFF2F4F4F, 0xFF00CED1, 0xFF9400D3, 0xFFFF1493, 0xFF00BFFF, 0xFF696969, 0xFF1E90FF, 0xFFB22222, 0xFFFFFAF0, 0xFF228B22, 0xFFFF00FF, 0xFFDCDCDC, 0xFFF8F8FF, 0xFFFFD700, 0xFFDAA520, 0xFF808080, 0xFF008000, 0xFFADFF2F, 0xFFF0FFF0, 0xFFFF69B4, 0xFFCD5C5C, 0xFF4B0082, 0xFFFFFFF0, 0xFFF0E68C, 0xFFE6E6FA, 0xFFFFF0F5, 0xFF7CFC00, 0xFFFFFACD, 0xFFADD8E6, 0xFFF08080, 0xFFE0FFFF, 0xFFFAFAD2, 0xFF90EE90, 0xFFD3D3D3, 0xFFD3D3D3, 0xFFFFB6C1, 0xFFFFA07A, 0xFF20B2AA, 0xFF87CEFA, 0xFF778899, 0xFFB0C4DE, 0xFFFFFFE0, 0xFF00FF00, 0xFF32CD32, 0xFFFAF0E6, 0xFFFF00FF, 0xFF800000, 0xFF66CDAA, 0xFF0000CD, 0xFFBA55D3, 0xFF9370DB, 0xFF3CB371, 0xFF7B68EE, 0xFF00FA9A, 0xFF48D1CC, 0xFFC71585, 0xFF191970, 0xFFF5FFFA, 0xFFFFE4E1, 0xFFFFE4B5, 0xFFFFDEAD, 0xFF000080, 0xFFFDF5E6, 0xFF808000, 0xFF6B8E23, 0xFFFFA500, 0xFFFF4500, 0xFFDA70D6, 0xFFEEE8AA, 0xFF98FB98, 0xFFAFEEEE, 0xFFDB7093, 0xFFFFEFD5, 0xFFFFDAB9, 0xFFCD853F, 0xFFFFC0CB, 0xFFDDA0DD, 0xFFB0E0E6, 0xFF800080, 0xFFFF0000, 0xFFBC8F8F, 0xFF4169E1, 0xFF8B4513, 0xFFFA8072, 0xFFF4A460, 0xFF2E8B57, 0xFFFFF5EE, 0xFFA0522D, 0xFFC0C0C0, 0xFF87CEEB, 0xFF6A5ACD, 0xFF708090, 0xFFFFFAFA, 0xFF00FF7F, 0xFF4682B4, 0xFFD2B48C, 0xFF008080, 0xFFD8BFD8, 0xFFFF6347, 0xFF40E0D0, 0xFFEE82EE, 0xFFF5DEB3, 0xFFFFFFFF, 0xFFF5F5F5, 0xFFFFFF00, 0xFF9ACD32, 0xFFAFD7FF, 0xFF2E8B57, 0xFF98FFB3, 0xFF808080, 0xFF808080, 0xFFFFABBB, 0xFFFF4500, 0xFFF6F675]); +c$.mapJavaScriptColors = new java.util.Hashtable(); +{ +for (var i = JU.CU.colorNames.length; --i >= 0; ) JU.CU.mapJavaScriptColors.put(JU.CU.colorNames[i], Integer.$valueOf(JU.CU.colorArgbs[i])); + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.DF", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz_declareType(JU, "DF", null); +c$.setUseNumberLocalization = Clazz_defineMethod(c$, "setUseNumberLocalization", +function(TF){ +JU.DF.useNumberLocalization[0] = (TF ? Boolean.TRUE : Boolean.FALSE); +}, "~B"); +c$.formatDecimalDbl = Clazz_defineMethod(c$, "formatDecimalDbl", +function(value, decimalDigits){ +if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Double.isNaN(value)) return "" + value; +return JU.DF.formatDecimal(value, decimalDigits); +}, "~N,~N"); +c$.formatDecimal = Clazz_defineMethod(c$, "formatDecimal", +function(value, decimalDigits){ +if (value == -Infinity || value == Infinity || Double.isNaN(value)) return "" + value; +if (decimalDigits == 2147483647) return "" + value; +var isNeg = (value < 0); +if (isNeg) value = -value; +var n; +if (decimalDigits < 0) { +decimalDigits = -decimalDigits; +if (decimalDigits > JU.DF.formattingStrings.length) decimalDigits = JU.DF.formattingStrings.length; +if (value == 0) return JU.DF.formattingStrings[decimalDigits - 1] + "E+0"; +n = 0; +var d; +if (Math.abs(value) < 1) { +n = 100; +d = value * 1e-100; +} else { +n = -100; +d = value * 1e100; +}var s = ("" + d).toUpperCase(); +var i1 = s.indexOf("E"); +var sf; +if (i1 < 0) { +sf = "" + value; +} else { +n = JU.PT.parseInt(s.substring(i1 + (s.indexOf("E+") == i1 ? 2 : 1))) + n; +var f = JU.PT.parseFloat(s.substring(0, i1)); +sf = JU.DF.formatDecimal(f, decimalDigits - 1); +if (sf.startsWith("10.")) { +sf = JU.DF.formatDecimal(1, decimalDigits - 1); +n++; +}}return (isNeg ? "-" : "") + sf + "E" + (n >= 0 ? "+" : "") + n; +}if (decimalDigits >= JU.DF.formattingStrings.length) decimalDigits = JU.DF.formattingStrings.length - 1; +var s1 = ("" + value).toUpperCase(); +var pt = s1.indexOf("."); +if (pt < 0) return (isNeg ? "-" : "") + s1 + JU.DF.formattingStrings[decimalDigits].substring(1); +var pt1 = s1.indexOf("E-"); +if (pt1 > 0) { +n = JU.PT.parseInt(s1.substring(pt1 + 1)); +s1 = "0." + "0000000000000000000000000000000000000000".substring(0, -n - 1) + s1.substring(0, 1) + s1.substring(2, pt1); +pt = 1; +}pt1 = s1.indexOf("E"); +if (pt1 > 0) { +n = JU.PT.parseInt(s1.substring(pt1 + 1)); +s1 = s1.substring(0, 1) + s1.substring(2, pt1) + "0000000000000000000000000000000000000000"; +s1 = s1.substring(0, n + 1) + "." + s1.substring(n + 1); +pt = s1.indexOf("."); +}var len = s1.length; +var pt2 = decimalDigits + pt + 1; +if (pt2 < len && s1.charAt(pt2) >= '5') { +return JU.DF.formatDecimal((isNeg ? -1 : 1) * (value + JU.DF.formatAdds[decimalDigits]), decimalDigits); +}var s0 = s1.substring(0, (decimalDigits == 0 ? pt : ++pt)); +var sb = JU.SB.newS(s0); +if (isNeg && s0.equals("0.") && decimalDigits + 2 <= len && s1.substring(2, 2 + decimalDigits).equals("0000000000000000000000000000000000000000".substring(0, decimalDigits))) isNeg = false; +for (var i = 0; i < decimalDigits; i++, pt++) { +if (pt < len) sb.appendC(s1.charAt(pt)); + else sb.appendC('0'); +} +s1 = (isNeg ? "-" : "") + sb; +return (Boolean.TRUE.equals(JU.DF.useNumberLocalization[0]) ? s1 : s1.$replace(',', '.')); +}, "~N,~N"); +c$.formatDecimalTrimmed = Clazz_defineMethod(c$, "formatDecimalTrimmed", +function(x, precision){ +var str = JU.DF.formatDecimalDbl(x, precision); +var m = str.length - 1; +var zero = '0'; +while (m >= 0 && str.charAt(m) == zero) m--; + +return str.substring(0, m + 1); +}, "~N,~N"); +c$.formatDecimalTrimmed0 = Clazz_defineMethod(c$, "formatDecimalTrimmed0", +function(x, precision){ +var str = JU.DF.formatDecimalDbl(x, precision); +var m = str.length - 1; +var pt = str.indexOf(".") + 1; +while (m > pt && str.charAt(m) == '0') m--; + +return str.substring(0, m + 1); +}, "~N,~N"); +c$.formattingStrings = Clazz_newArray(-1, ["0", "0.0", "0.00", "0.000", "0.0000", "0.00000", "0.000000", "0.0000000", "0.00000000", "0.000000000", "0.0000000000", "0.00000000000", "0.000000000000"]); +c$.formatAdds = Clazz_newDoubleArray(-1, [0.5, 0.05, 0.005, 0.0005, 0.00005, 0.000005, 0.0000005, 0.00000005, 0.000000005, 0.0000000005, 0.00000000005, 0.000000000005, 0.0000000000005]); +c$.useNumberLocalization = Clazz_newArray(-1, [Boolean.TRUE]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.lang.Enum"], "JU.Encoding", null, function(){ +var c$ = Clazz_declareType(JU, "Encoding", Enum); +Clazz_defineEnumConstant(c$, "NONE", 0, []); +Clazz_defineEnumConstant(c$, "UTF8", 1, []); +Clazz_defineEnumConstant(c$, "UTF_16BE", 2, []); +Clazz_defineEnumConstant(c$, "UTF_16LE", 3, []); +Clazz_defineEnumConstant(c$, "UTF_32BE", 4, []); +Clazz_defineEnumConstant(c$, "UTF_32LE", 5, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.ArrayList"], "JU.Lst", null, function(){ +var c$ = Clazz_declareType(JU, "Lst", java.util.ArrayList); +Clazz_defineMethod(c$, "addLast", +function(v){ +{ +return this.add1(v); +}}, "~O"); +Clazz_overrideMethod(c$, "add", +function(pos, v){ +{ +return this.add2(pos, v); +}}, "~N,~O"); +Clazz_defineMethod(c$, "removeItemAt", +function(location){ +{ +return this._removeItemAt(location); +}}, "~N"); +Clazz_defineMethod(c$, "removeObj", +function(v){ +{ +return this._removeObject(v); +}}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m00 = 0; +this.m01 = 0; +this.m02 = 0; +this.m10 = 0; +this.m11 = 0; +this.m12 = 0; +this.m20 = 0; +this.m21 = 0; +this.m22 = 0; +Clazz_instantialize(this, arguments);}, JU, "M34", null); +Clazz_defineMethod(c$, "setAA33", +function(a){ +var x = a.x; +var y = a.y; +var z = a.z; +var angle = a.angle; +var n = Math.sqrt(x * x + y * y + z * z); +n = 1 / n; +x *= n; +y *= n; +z *= n; +var c = Math.cos(angle); +var s = Math.sin(angle); +var omc = 1.0 - c; +this.m00 = (c + x * x * omc); +this.m11 = (c + y * y * omc); +this.m22 = (c + z * z * omc); +var tmp1 = x * y * omc; +var tmp2 = z * s; +this.m01 = (tmp1 - tmp2); +this.m10 = (tmp1 + tmp2); +tmp1 = x * z * omc; +tmp2 = y * s; +this.m02 = (tmp1 + tmp2); +this.m20 = (tmp1 - tmp2); +tmp1 = y * z * omc; +tmp2 = x * s; +this.m12 = (tmp1 - tmp2); +this.m21 = (tmp1 + tmp2); +}, "JU.A4"); +Clazz_defineMethod(c$, "rotate", +function(t){ +this.rotate2(t, t); +}, "JU.T3"); +Clazz_defineMethod(c$, "rotate2", +function(t, result){ +result.set(this.m00 * t.x + this.m01 * t.y + this.m02 * t.z, this.m10 * t.x + this.m11 * t.y + this.m12 * t.z, this.m20 * t.x + this.m21 * t.y + this.m22 * t.z); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "setM33", +function(m1){ +this.m00 = m1.m00; +this.m01 = m1.m01; +this.m02 = m1.m02; +this.m10 = m1.m10; +this.m11 = m1.m11; +this.m12 = m1.m12; +this.m20 = m1.m20; +this.m21 = m1.m21; +this.m22 = m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "clear33", +function(){ +this.m00 = this.m01 = this.m02 = this.m10 = this.m11 = this.m12 = this.m20 = this.m21 = this.m22 = 0.0; +}); +Clazz_defineMethod(c$, "set33", +function(row, col, v){ +switch (row) { +case 0: +switch (col) { +case 0: +this.m00 = v; +return; +case 1: +this.m01 = v; +return; +case 2: +this.m02 = v; +return; +} +break; +case 1: +switch (col) { +case 0: +this.m10 = v; +return; +case 1: +this.m11 = v; +return; +case 2: +this.m12 = v; +return; +} +break; +case 2: +switch (col) { +case 0: +this.m20 = v; +return; +case 1: +this.m21 = v; +return; +case 2: +this.m22 = v; +return; +} +break; +} +this.err(); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "get33", +function(row, col){ +switch (row) { +case 0: +switch (col) { +case 0: +return this.m00; +case 1: +return this.m01; +case 2: +return this.m02; +} +break; +case 1: +switch (col) { +case 0: +return this.m10; +case 1: +return this.m11; +case 2: +return this.m12; +} +break; +case 2: +switch (col) { +case 0: +return this.m20; +case 1: +return this.m21; +case 2: +return this.m22; +} +break; +} +this.err(); +return 0; +}, "~N,~N"); +Clazz_defineMethod(c$, "setRow33", +function(row, v){ +switch (row) { +case 0: +this.m00 = v[0]; +this.m01 = v[1]; +this.m02 = v[2]; +return; +case 1: +this.m10 = v[0]; +this.m11 = v[1]; +this.m12 = v[2]; +return; +case 2: +this.m20 = v[0]; +this.m21 = v[1]; +this.m22 = v[2]; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getRow33", +function(row, v){ +switch (row) { +case 0: +v[0] = this.m00; +v[1] = this.m01; +v[2] = this.m02; +return; +case 1: +v[0] = this.m10; +v[1] = this.m11; +v[2] = this.m12; +return; +case 2: +v[0] = this.m20; +v[1] = this.m21; +v[2] = this.m22; +return; +} +this.err(); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn33", +function(column, v){ +switch (column) { +case 0: +this.m00 = v[0]; +this.m10 = v[1]; +this.m20 = v[2]; +break; +case 1: +this.m01 = v[0]; +this.m11 = v[1]; +this.m21 = v[2]; +break; +case 2: +this.m02 = v[0]; +this.m12 = v[1]; +this.m22 = v[2]; +break; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn33", +function(column, v){ +switch (column) { +case 0: +v[0] = this.m00; +v[1] = this.m10; +v[2] = this.m20; +break; +case 1: +v[0] = this.m01; +v[1] = this.m11; +v[2] = this.m21; +break; +case 2: +v[0] = this.m02; +v[1] = this.m12; +v[2] = this.m22; +break; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "add33", +function(m1){ +this.m00 += m1.m00; +this.m01 += m1.m01; +this.m02 += m1.m02; +this.m10 += m1.m10; +this.m11 += m1.m11; +this.m12 += m1.m12; +this.m20 += m1.m20; +this.m21 += m1.m21; +this.m22 += m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "sub33", +function(m1){ +this.m00 -= m1.m00; +this.m01 -= m1.m01; +this.m02 -= m1.m02; +this.m10 -= m1.m10; +this.m11 -= m1.m11; +this.m12 -= m1.m12; +this.m20 -= m1.m20; +this.m21 -= m1.m21; +this.m22 -= m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "mul33", +function(x){ +this.m00 *= x; +this.m01 *= x; +this.m02 *= x; +this.m10 *= x; +this.m11 *= x; +this.m12 *= x; +this.m20 *= x; +this.m21 *= x; +this.m22 *= x; +}, "~N"); +Clazz_defineMethod(c$, "transpose33", +function(){ +var tmp = this.m01; +this.m01 = this.m10; +this.m10 = tmp; +tmp = this.m02; +this.m02 = this.m20; +this.m20 = tmp; +tmp = this.m12; +this.m12 = this.m21; +this.m21 = tmp; +}); +Clazz_defineMethod(c$, "setXRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = 1.0; +this.m01 = 0.0; +this.m02 = 0.0; +this.m10 = 0.0; +this.m11 = c; +this.m12 = -s; +this.m20 = 0.0; +this.m21 = s; +this.m22 = c; +}, "~N"); +Clazz_defineMethod(c$, "setYRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m01 = 0.0; +this.m02 = s; +this.m10 = 0.0; +this.m11 = 1.0; +this.m12 = 0.0; +this.m20 = -s; +this.m21 = 0.0; +this.m22 = c; +}, "~N"); +Clazz_defineMethod(c$, "setZRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m01 = -s; +this.m02 = 0.0; +this.m10 = s; +this.m11 = c; +this.m12 = 0.0; +this.m20 = 0.0; +this.m21 = 0.0; +this.m22 = 1.0; +}, "~N"); +Clazz_defineMethod(c$, "determinant3", +function(){ +return this.m00 * (this.m11 * this.m22 - this.m21 * this.m12) - this.m01 * (this.m10 * this.m22 - this.m20 * this.m12) + this.m02 * (this.m10 * this.m21 - this.m20 * this.m11); +}); +Clazz_defineMethod(c$, "err", +function(){ +throw new ArrayIndexOutOfBoundsException("matrix column/row out of bounds"); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.M34"], "JU.M3", ["JU.T3"], function(){ +var c$ = Clazz_declareType(JU, "M3", JU.M34, java.io.Serializable); +c$.newA9 = Clazz_defineMethod(c$, "newA9", +function(v){ +var m = new JU.M3(); +m.setA(v); +return m; +}, "~A"); +c$.newM3 = Clazz_defineMethod(c$, "newM3", +function(m1){ +var m = new JU.M3(); +if (m1 == null) { +m.setScale(1); +return m; +}m.m00 = m1.m00; +m.m01 = m1.m01; +m.m02 = m1.m02; +m.m10 = m1.m10; +m.m11 = m1.m11; +m.m12 = m1.m12; +m.m20 = m1.m20; +m.m21 = m1.m21; +m.m22 = m1.m22; +return m; +}, "JU.M3"); +Clazz_defineMethod(c$, "setScale", +function(scale){ +this.clear33(); +this.m00 = this.m11 = this.m22 = scale; +}, "~N"); +Clazz_defineMethod(c$, "setM3", +function(m1){ +this.setM33(m1); +}, "JU.M34"); +Clazz_defineMethod(c$, "setA", +function(m){ +this.m00 = m[0]; +this.m01 = m[1]; +this.m02 = m[2]; +this.m10 = m[3]; +this.m11 = m[4]; +this.m12 = m[5]; +this.m20 = m[6]; +this.m21 = m[7]; +this.m22 = m[8]; +}, "~A"); +Clazz_defineMethod(c$, "setElement", +function(row, col, v){ +this.set33(row, col, v); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getElement", +function(row, col){ +return this.get33(row, col); +}, "~N,~N"); +Clazz_defineMethod(c$, "setRow", +function(row, x, y, z){ +switch (row) { +case 0: +this.m00 = x; +this.m01 = y; +this.m02 = z; +return; +case 1: +this.m10 = x; +this.m11 = y; +this.m12 = z; +return; +case 2: +this.m20 = x; +this.m21 = y; +this.m22 = z; +return; +default: +this.err(); +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setRowV", +function(row, v){ +switch (row) { +case 0: +this.m00 = v.x; +this.m01 = v.y; +this.m02 = v.z; +return; +case 1: +this.m10 = v.x; +this.m11 = v.y; +this.m12 = v.z; +return; +case 2: +this.m20 = v.x; +this.m21 = v.y; +this.m22 = v.z; +return; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setRowA", +function(row, v){ +this.setRow33(row, v); +}, "~N,~A"); +Clazz_overrideMethod(c$, "getRow", +function(row, v){ +this.getRow33(row, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn3", +function(column, x, y, z){ +switch (column) { +case 0: +this.m00 = x; +this.m10 = y; +this.m20 = z; +break; +case 1: +this.m01 = x; +this.m11 = y; +this.m21 = z; +break; +case 2: +this.m02 = x; +this.m12 = y; +this.m22 = z; +break; +default: +this.err(); +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setColumnV", +function(column, v){ +switch (column) { +case 0: +this.m00 = v.x; +this.m10 = v.y; +this.m20 = v.z; +break; +case 1: +this.m01 = v.x; +this.m11 = v.y; +this.m21 = v.z; +break; +case 2: +this.m02 = v.x; +this.m12 = v.y; +this.m22 = v.z; +break; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "getColumnV", +function(column, v){ +switch (column) { +case 0: +v.x = this.m00; +v.y = this.m10; +v.z = this.m20; +break; +case 1: +v.x = this.m01; +v.y = this.m11; +v.z = this.m21; +break; +case 2: +v.x = this.m02; +v.y = this.m12; +v.z = this.m22; +break; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setColumnA", +function(column, v){ +this.setColumn33(column, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn", +function(column, v){ +this.getColumn33(column, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "add", +function(m1){ +this.add33(m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "sub", +function(m1){ +this.sub33(m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "transpose", +function(){ +this.transpose33(); +}); +Clazz_defineMethod(c$, "transposeM", +function(m1){ +this.setM33(m1); +this.transpose33(); +}, "JU.M3"); +Clazz_defineMethod(c$, "invertM", +function(m1){ +this.setM33(m1); +this.invert(); +}, "JU.M3"); +Clazz_defineMethod(c$, "invert", +function(){ +var s = this.determinant3(); +if (s == 0.0) return; +s = 1 / s; +this.set9(this.m11 * this.m22 - this.m12 * this.m21, this.m02 * this.m21 - this.m01 * this.m22, this.m01 * this.m12 - this.m02 * this.m11, this.m12 * this.m20 - this.m10 * this.m22, this.m00 * this.m22 - this.m02 * this.m20, this.m02 * this.m10 - this.m00 * this.m12, this.m10 * this.m21 - this.m11 * this.m20, this.m01 * this.m20 - this.m00 * this.m21, this.m00 * this.m11 - this.m01 * this.m10); +this.scale(s); +}); +Clazz_defineMethod(c$, "setAsXRotation", +function(angle){ +this.setXRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsYRotation", +function(angle){ +this.setYRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsZRotation", +function(angle){ +this.setZRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "scale", +function(scalar){ +this.mul33(scalar); +}, "~N"); +Clazz_defineMethod(c$, "mul", +function(m1){ +this.mul2(this, m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "mul2", +function(m1, m2){ +this.set9(m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22); +}, "JU.M3,JU.M3"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.M3"))) return false; +var m = o; +return this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.m00) ^ JU.T3.floatToIntBits(this.m01) ^ JU.T3.floatToIntBits(this.m02) ^ JU.T3.floatToIntBits(this.m10) ^ JU.T3.floatToIntBits(this.m11) ^ JU.T3.floatToIntBits(this.m12) ^ JU.T3.floatToIntBits(this.m20) ^ JU.T3.floatToIntBits(this.m21) ^ JU.T3.floatToIntBits(this.m22); +}); +Clazz_defineMethod(c$, "setZero", +function(){ +this.clear33(); +}); +Clazz_defineMethod(c$, "set9", +function(m00, m01, m02, m10, m11, m12, m20, m21, m22){ +this.m00 = m00; +this.m01 = m01; +this.m02 = m02; +this.m10 = m10; +this.m11 = m11; +this.m12 = m12; +this.m20 = m20; +this.m21 = m21; +this.m22 = m22; +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[\n [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "]" + "\n [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "]" + "\n [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "] ]"; +}); +Clazz_defineMethod(c$, "setAA", +function(a){ +this.setAA33(a); +return this; +}, "JU.A4"); +Clazz_defineMethod(c$, "setAsBallRotation", +function(responseFactor, dx, dy){ +var r = Math.sqrt(dx * dx + dy * dy); +var th = r * responseFactor; +if (th == 0) { +this.setScale(1); +return false; +}var c = Math.cos(th); +var s = Math.sin(th); +var nx = -dy / r; +var ny = dx / r; +var c1 = c - 1; +this.m00 = 1 + c1 * nx * nx; +this.m01 = this.m10 = c1 * nx * ny; +this.m20 = -(this.m02 = s * nx); +this.m11 = 1 + c1 * ny * ny; +this.m21 = -(this.m12 = s * ny); +this.m22 = c; +return true; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isRotation", +function(){ +return (Math.abs(this.determinant3() - 1) < 0.001); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.M34"], "JU.M4", ["JU.T3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m03 = 0; +this.m13 = 0; +this.m23 = 0; +this.m30 = 0; +this.m31 = 0; +this.m32 = 0; +this.m33 = 0; +Clazz_instantialize(this, arguments);}, JU, "M4", JU.M34); +c$.newA16 = Clazz_defineMethod(c$, "newA16", +function(v){ +var m = new JU.M4(); +m.m00 = v[0]; +m.m01 = v[1]; +m.m02 = v[2]; +m.m03 = v[3]; +m.m10 = v[4]; +m.m11 = v[5]; +m.m12 = v[6]; +m.m13 = v[7]; +m.m20 = v[8]; +m.m21 = v[9]; +m.m22 = v[10]; +m.m23 = v[11]; +m.m30 = v[12]; +m.m31 = v[13]; +m.m32 = v[14]; +m.m33 = v[15]; +return m; +}, "~A"); +c$.newM4 = Clazz_defineMethod(c$, "newM4", +function(m1){ +var m = new JU.M4(); +if (m1 == null) { +m.setIdentity(); +return m; +}m.setToM3(m1); +m.m03 = m1.m03; +m.m13 = m1.m13; +m.m23 = m1.m23; +m.m30 = m1.m30; +m.m31 = m1.m31; +m.m32 = m1.m32; +m.m33 = m1.m33; +return m; +}, "JU.M4"); +c$.newMV = Clazz_defineMethod(c$, "newMV", +function(m1, t){ +var m = new JU.M4(); +m.setMV(m1, t); +return m; +}, "JU.M3,JU.T3"); +Clazz_defineMethod(c$, "setZero", +function(){ +this.clear33(); +this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = this.m33 = 0.0; +}); +Clazz_defineMethod(c$, "setIdentity", +function(){ +this.setZero(); +this.m00 = this.m11 = this.m22 = this.m33 = 1.0; +}); +Clazz_defineMethod(c$, "setM4", +function(m1){ +this.setM33(m1); +this.m03 = m1.m03; +this.m13 = m1.m13; +this.m23 = m1.m23; +this.m30 = m1.m30; +this.m31 = m1.m31; +this.m32 = m1.m32; +this.m33 = m1.m33; +return this; +}, "JU.M4"); +Clazz_defineMethod(c$, "setMV", +function(m1, t){ +this.setM33(m1); +this.setTranslation(t); +this.m33 = 1; +}, "JU.M3,JU.T3"); +Clazz_defineMethod(c$, "setToM3", +function(m1){ +this.setM33(m1); +this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = 0.0; +this.m33 = 1.0; +}, "JU.M34"); +Clazz_defineMethod(c$, "setToAA", +function(a){ +this.setIdentity(); +this.setAA33(a); +}, "JU.A4"); +Clazz_defineMethod(c$, "setA", +function(m){ +this.m00 = m[0]; +this.m01 = m[1]; +this.m02 = m[2]; +this.m03 = m[3]; +this.m10 = m[4]; +this.m11 = m[5]; +this.m12 = m[6]; +this.m13 = m[7]; +this.m20 = m[8]; +this.m21 = m[9]; +this.m22 = m[10]; +this.m23 = m[11]; +this.m30 = m[12]; +this.m31 = m[13]; +this.m32 = m[14]; +this.m33 = m[15]; +}, "~A"); +Clazz_defineMethod(c$, "setTranslation", +function(trans){ +this.m03 = trans.x; +this.m13 = trans.y; +this.m23 = trans.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "setElement", +function(row, col, v){ +if (row < 3 && col < 3) { +this.set33(row, col, v); +return; +}if (row > 3 || col > 3) this.err(); +switch (row) { +case 0: +this.m03 = v; +return; +case 1: +this.m13 = v; +return; +case 2: +this.m23 = v; +return; +} +switch (col) { +case 0: +this.m30 = v; +return; +case 1: +this.m31 = v; +return; +case 2: +this.m32 = v; +return; +case 3: +this.m33 = v; +return; +} +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getElement", +function(row, col){ +if (row < 3 && col < 3) return this.get33(row, col); +if (row > 3 || col > 3) { +this.err(); +return 0; +}switch (row) { +case 0: +return this.m03; +case 1: +return this.m13; +case 2: +return this.m23; +default: +switch (col) { +case 0: +return this.m30; +case 1: +return this.m31; +case 2: +return this.m32; +default: +return this.m33; +} +} +}, "~N,~N"); +Clazz_defineMethod(c$, "getTranslation", +function(trans){ +trans.x = this.m03; +trans.y = this.m13; +trans.z = this.m23; +}, "JU.T3"); +Clazz_defineMethod(c$, "getRotationScale", +function(m1){ +m1.m00 = this.m00; +m1.m01 = this.m01; +m1.m02 = this.m02; +m1.m10 = this.m10; +m1.m11 = this.m11; +m1.m12 = this.m12; +m1.m20 = this.m20; +m1.m21 = this.m21; +m1.m22 = this.m22; +}, "JU.M3"); +Clazz_defineMethod(c$, "setRotationScale", +function(m1){ +this.m00 = m1.m00; +this.m01 = m1.m01; +this.m02 = m1.m02; +this.m10 = m1.m10; +this.m11 = m1.m11; +this.m12 = m1.m12; +this.m20 = m1.m20; +this.m21 = m1.m21; +this.m22 = m1.m22; +}, "JU.M3"); +Clazz_defineMethod(c$, "setRowA", +function(row, v){ +if (row < 3) this.setRow33(row, v); +switch (row) { +case 0: +this.m03 = v[3]; +return; +case 1: +this.m13 = v[3]; +return; +case 2: +this.m23 = v[3]; +return; +case 3: +this.m30 = v[0]; +this.m31 = v[1]; +this.m32 = v[2]; +this.m33 = v[3]; +return; +} +this.err(); +}, "~N,~A"); +Clazz_overrideMethod(c$, "getRow", +function(row, v){ +if (row < 3) this.getRow33(row, v); +switch (row) { +case 0: +v[3] = this.m03; +return; +case 1: +v[3] = this.m13; +return; +case 2: +v[3] = this.m23; +return; +case 3: +v[0] = this.m30; +v[1] = this.m31; +v[2] = this.m32; +v[3] = this.m33; +return; +} +this.err(); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn4", +function(column, x, y, z, w){ +if (column == 0) { +this.m00 = x; +this.m10 = y; +this.m20 = z; +this.m30 = w; +} else if (column == 1) { +this.m01 = x; +this.m11 = y; +this.m21 = z; +this.m31 = w; +} else if (column == 2) { +this.m02 = x; +this.m12 = y; +this.m22 = z; +this.m32 = w; +} else if (column == 3) { +this.m03 = x; +this.m13 = y; +this.m23 = z; +this.m33 = w; +} else { +this.err(); +}}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setColumnA", +function(column, v){ +if (column < 3) this.setColumn33(column, v); +switch (column) { +case 0: +this.m30 = v[3]; +return; +case 1: +this.m31 = v[3]; +return; +case 2: +this.m32 = v[3]; +return; +case 3: +this.m03 = v[0]; +this.m13 = v[1]; +this.m23 = v[2]; +this.m33 = v[3]; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn", +function(column, v){ +if (column < 3) this.getColumn33(column, v); +switch (column) { +case 0: +v[3] = this.m30; +return; +case 1: +v[3] = this.m31; +return; +case 2: +v[3] = this.m32; +return; +case 3: +v[0] = this.m03; +v[1] = this.m13; +v[2] = this.m23; +v[3] = this.m33; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "sub", +function(m1){ +this.sub33(m1); +this.m03 -= m1.m03; +this.m13 -= m1.m13; +this.m23 -= m1.m23; +this.m30 -= m1.m30; +this.m31 -= m1.m31; +this.m32 -= m1.m32; +this.m33 -= m1.m33; +}, "JU.M4"); +Clazz_defineMethod(c$, "add", +function(pt){ +this.m03 += pt.x; +this.m13 += pt.y; +this.m23 += pt.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "transpose", +function(){ +this.transpose33(); +var tmp = this.m03; +this.m03 = this.m30; +this.m30 = tmp; +tmp = this.m13; +this.m13 = this.m31; +this.m31 = tmp; +tmp = this.m23; +this.m23 = this.m32; +this.m32 = tmp; +}); +Clazz_defineMethod(c$, "invert", +function(){ +var s = this.determinant4(); +if (s == 0.0) return this; +s = 1 / s; +this.set(this.m11 * (this.m22 * this.m33 - this.m23 * this.m32) + this.m12 * (this.m23 * this.m31 - this.m21 * this.m33) + this.m13 * (this.m21 * this.m32 - this.m22 * this.m31), this.m21 * (this.m02 * this.m33 - this.m03 * this.m32) + this.m22 * (this.m03 * this.m31 - this.m01 * this.m33) + this.m23 * (this.m01 * this.m32 - this.m02 * this.m31), this.m31 * (this.m02 * this.m13 - this.m03 * this.m12) + this.m32 * (this.m03 * this.m11 - this.m01 * this.m13) + this.m33 * (this.m01 * this.m12 - this.m02 * this.m11), this.m01 * (this.m13 * this.m22 - this.m12 * this.m23) + this.m02 * (this.m11 * this.m23 - this.m13 * this.m21) + this.m03 * (this.m12 * this.m21 - this.m11 * this.m22), this.m12 * (this.m20 * this.m33 - this.m23 * this.m30) + this.m13 * (this.m22 * this.m30 - this.m20 * this.m32) + this.m10 * (this.m23 * this.m32 - this.m22 * this.m33), this.m22 * (this.m00 * this.m33 - this.m03 * this.m30) + this.m23 * (this.m02 * this.m30 - this.m00 * this.m32) + this.m20 * (this.m03 * this.m32 - this.m02 * this.m33), this.m32 * (this.m00 * this.m13 - this.m03 * this.m10) + this.m33 * (this.m02 * this.m10 - this.m00 * this.m12) + this.m30 * (this.m03 * this.m12 - this.m02 * this.m13), this.m02 * (this.m13 * this.m20 - this.m10 * this.m23) + this.m03 * (this.m10 * this.m22 - this.m12 * this.m20) + this.m00 * (this.m12 * this.m23 - this.m13 * this.m22), this.m13 * (this.m20 * this.m31 - this.m21 * this.m30) + this.m10 * (this.m21 * this.m33 - this.m23 * this.m31) + this.m11 * (this.m23 * this.m30 - this.m20 * this.m33), this.m23 * (this.m00 * this.m31 - this.m01 * this.m30) + this.m20 * (this.m01 * this.m33 - this.m03 * this.m31) + this.m21 * (this.m03 * this.m30 - this.m00 * this.m33), this.m33 * (this.m00 * this.m11 - this.m01 * this.m10) + this.m30 * (this.m01 * this.m13 - this.m03 * this.m11) + this.m31 * (this.m03 * this.m10 - this.m00 * this.m13), this.m03 * (this.m11 * this.m20 - this.m10 * this.m21) + this.m00 * (this.m13 * this.m21 - this.m11 * this.m23) + this.m01 * (this.m10 * this.m23 - this.m13 * this.m20), this.m10 * (this.m22 * this.m31 - this.m21 * this.m32) + this.m11 * (this.m20 * this.m32 - this.m22 * this.m30) + this.m12 * (this.m21 * this.m30 - this.m20 * this.m31), this.m20 * (this.m02 * this.m31 - this.m01 * this.m32) + this.m21 * (this.m00 * this.m32 - this.m02 * this.m30) + this.m22 * (this.m01 * this.m30 - this.m00 * this.m31), this.m30 * (this.m02 * this.m11 - this.m01 * this.m12) + this.m31 * (this.m00 * this.m12 - this.m02 * this.m10) + this.m32 * (this.m01 * this.m10 - this.m00 * this.m11), this.m00 * (this.m11 * this.m22 - this.m12 * this.m21) + this.m01 * (this.m12 * this.m20 - this.m10 * this.m22) + this.m02 * (this.m10 * this.m21 - this.m11 * this.m20)); +this.scale(s); +return this; +}); +Clazz_defineMethod(c$, "set", +function(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33){ +this.m00 = m00; +this.m01 = m01; +this.m02 = m02; +this.m03 = m03; +this.m10 = m10; +this.m11 = m11; +this.m12 = m12; +this.m13 = m13; +this.m20 = m20; +this.m21 = m21; +this.m22 = m22; +this.m23 = m23; +this.m30 = m30; +this.m31 = m31; +this.m32 = m32; +this.m33 = m33; +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "determinant4", +function(){ +return (this.m00 * this.m11 - this.m01 * this.m10) * (this.m22 * this.m33 - this.m23 * this.m32) - (this.m00 * this.m12 - this.m02 * this.m10) * (this.m21 * this.m33 - this.m23 * this.m31) + (this.m00 * this.m13 - this.m03 * this.m10) * (this.m21 * this.m32 - this.m22 * this.m31) + (this.m01 * this.m12 - this.m02 * this.m11) * (this.m20 * this.m33 - this.m23 * this.m30) - (this.m01 * this.m13 - this.m03 * this.m11) * (this.m20 * this.m32 - this.m22 * this.m30) + (this.m02 * this.m13 - this.m03 * this.m12) * (this.m20 * this.m31 - this.m21 * this.m30); +}); +Clazz_defineMethod(c$, "scale", +function(scalar){ +this.mul33(scalar); +this.m03 *= scalar; +this.m13 *= scalar; +this.m23 *= scalar; +this.m30 *= scalar; +this.m31 *= scalar; +this.m32 *= scalar; +this.m33 *= scalar; +}, "~N"); +Clazz_defineMethod(c$, "mul", +function(m1){ +this.mul2(this, m1); +}, "JU.M4"); +Clazz_defineMethod(c$, "mul2", +function(m1, m2){ +this.set(m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20 + m1.m03 * m2.m30, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21 + m1.m03 * m2.m31, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22 + m1.m03 * m2.m32, m1.m00 * m2.m03 + m1.m01 * m2.m13 + m1.m02 * m2.m23 + m1.m03 * m2.m33, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20 + m1.m13 * m2.m30, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21 + m1.m13 * m2.m31, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22 + m1.m13 * m2.m32, m1.m10 * m2.m03 + m1.m11 * m2.m13 + m1.m12 * m2.m23 + m1.m13 * m2.m33, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20 + m1.m23 * m2.m30, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21 + m1.m23 * m2.m31, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22 + m1.m23 * m2.m32, m1.m20 * m2.m03 + m1.m21 * m2.m13 + m1.m22 * m2.m23 + m1.m23 * m2.m33, m1.m30 * m2.m00 + m1.m31 * m2.m10 + m1.m32 * m2.m20 + m1.m33 * m2.m30, m1.m30 * m2.m01 + m1.m31 * m2.m11 + m1.m32 * m2.m21 + m1.m33 * m2.m31, m1.m30 * m2.m02 + m1.m31 * m2.m12 + m1.m32 * m2.m22 + m1.m33 * m2.m32, m1.m30 * m2.m03 + m1.m31 * m2.m13 + m1.m32 * m2.m23 + m1.m33 * m2.m33); +}, "JU.M4,JU.M4"); +Clazz_defineMethod(c$, "transform", +function(vec){ +this.transform2(vec, vec); +}, "JU.T4"); +Clazz_defineMethod(c$, "transform2", +function(vec, vecOut){ +vecOut.set4(this.m00 * vec.x + this.m01 * vec.y + this.m02 * vec.z + this.m03 * vec.w, this.m10 * vec.x + this.m11 * vec.y + this.m12 * vec.z + this.m13 * vec.w, this.m20 * vec.x + this.m21 * vec.y + this.m22 * vec.z + this.m23 * vec.w, this.m30 * vec.x + this.m31 * vec.y + this.m32 * vec.z + this.m33 * vec.w); +}, "JU.T4,JU.T4"); +Clazz_defineMethod(c$, "rotTrans", +function(point){ +this.rotTrans2(point, point); +}, "JU.T3"); +Clazz_defineMethod(c$, "rotTrans2", +function(point, pointOut){ +pointOut.set(this.m00 * point.x + this.m01 * point.y + this.m02 * point.z + this.m03, this.m10 * point.x + this.m11 * point.y + this.m12 * point.z + this.m13, this.m20 * point.x + this.m21 * point.y + this.m22 * point.z + this.m23); +return pointOut; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "setAsXYRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m22 = c; +this.m23 = -s; +this.m32 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsYZRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m03 = -s; +this.m30 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsXZRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m11 = c; +this.m13 = -s; +this.m31 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.M4"))) return false; +var m = o; +return (this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m03 == m.m03 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m13 == m.m13 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22 && this.m23 == m.m23 && this.m30 == m.m30 && this.m31 == m.m31 && this.m32 == m.m32 && this.m33 == m.m33); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.m00) ^ JU.T3.floatToIntBits(this.m01) ^ JU.T3.floatToIntBits(this.m02) ^ JU.T3.floatToIntBits(this.m03) ^ JU.T3.floatToIntBits(this.m10) ^ JU.T3.floatToIntBits(this.m11) ^ JU.T3.floatToIntBits(this.m12) ^ JU.T3.floatToIntBits(this.m13) ^ JU.T3.floatToIntBits(this.m20) ^ JU.T3.floatToIntBits(this.m21) ^ JU.T3.floatToIntBits(this.m22) ^ JU.T3.floatToIntBits(this.m23) ^ JU.T3.floatToIntBits(this.m30) ^ JU.T3.floatToIntBits(this.m31) ^ JU.T3.floatToIntBits(this.m32) ^ JU.T3.floatToIntBits(this.m33); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[\n [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "\t" + this.m03 + "]" + "\n [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "\t" + this.m13 + "]" + "\n [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "\t" + this.m23 + "]" + "\n [" + this.m30 + "\t" + this.m31 + "\t" + this.m32 + "\t" + this.m33 + "] ]"; +}); +Clazz_defineMethod(c$, "round", +function(f){ +this.m00 = this.rnd(this.m00, f); +this.m01 = this.rnd(this.m01, f); +this.m02 = this.rnd(this.m02, f); +this.m03 = this.rnd(this.m03, f); +this.m10 = this.rnd(this.m10, f); +this.m11 = this.rnd(this.m11, f); +this.m12 = this.rnd(this.m12, f); +this.m13 = this.rnd(this.m13, f); +this.m20 = this.rnd(this.m20, f); +this.m21 = this.rnd(this.m21, f); +this.m22 = this.rnd(this.m22, f); +this.m23 = this.rnd(this.m23, f); +this.m30 = this.rnd(this.m30, f); +this.m31 = this.rnd(this.m31, f); +this.m32 = this.rnd(this.m32, f); +this.m33 = this.rnd(this.m33, f); +return this; +}, "~N"); +Clazz_defineMethod(c$, "rnd", +function(n, f){ +return (Math.abs(n) < f ? 0 : n); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.io.OutputStream", "javajs.api.GenericOutputChannel"], "JU.OC", ["java.io.BufferedWriter", "$.ByteArrayOutputStream", "$.OutputStreamWriter", "JU.Base64", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bytePoster = null; +this.fileName = null; +this.bw = null; +this.isLocalFile = false; +this.byteCount = 0; +this.isCanceled = false; +this.closed = false; +this.os = null; +this.sb = null; +this.type = null; +this.$isBase64 = false; +this.os0 = null; +this.bytes = null; +this.bigEndian = true; +Clazz_instantialize(this, arguments);}, JU, "OC", java.io.OutputStream, javajs.api.GenericOutputChannel); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JU.OC, []); +}); +Clazz_makeConstructor(c$, +function(fileName){ +Clazz_superConstructor (this, JU.OC, []); +this.setParams(null, fileName, false, null); +}, "~S"); +Clazz_defineMethod(c$, "setParams", +function(bytePoster, fileName, asWriter, os){ +this.bytePoster = bytePoster; +this.$isBase64 = ";base64,".equals(fileName); +if (this.$isBase64) { +fileName = null; +this.os0 = os; +os = null; +}this.fileName = fileName; +this.os = os; +this.isLocalFile = (fileName != null && !JU.OC.isRemote(fileName)); +if (asWriter && !this.$isBase64 && os != null) this.bw = new java.io.BufferedWriter( new java.io.OutputStreamWriter(os)); +return this; +}, "javajs.api.BytePoster,~S,~B,java.io.OutputStream"); +Clazz_overrideMethod(c$, "isBigEndian", +function(){ +return this.bigEndian; +}); +Clazz_defineMethod(c$, "setBigEndian", +function(TF){ +this.bigEndian = TF; +}, "~B"); +Clazz_defineMethod(c$, "setBytes", +function(b){ +this.bytes = b; +return this; +}, "~A"); +Clazz_defineMethod(c$, "getFileName", +function(){ +return this.fileName; +}); +Clazz_defineMethod(c$, "getName", +function(){ +return (this.fileName == null ? null : this.fileName.substring(this.fileName.lastIndexOf("/") + 1)); +}); +Clazz_defineMethod(c$, "getByteCount", +function(){ +return this.byteCount; +}); +Clazz_defineMethod(c$, "setType", +function(type){ +this.type = type; +}, "~S"); +Clazz_defineMethod(c$, "getType", +function(){ +return this.type; +}); +Clazz_defineMethod(c$, "append", +function(s){ +try { +if (this.bw != null) { +this.bw.write(s); +} else if (this.os == null) { +if (this.sb == null) this.sb = new JU.SB(); +this.sb.append(s); +} else { +var b = s.getBytes(); +this.os.write(b, 0, b.length); +this.byteCount += b.length; +return this; +}} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +this.byteCount += s.length; +return this; +}, "~S"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.sb = null; +this.initOS(); +}); +Clazz_defineMethod(c$, "initOS", +function(){ +if (this.sb != null) { +var s = this.sb.toString(); +this.reset(); +this.append(s); +return; +}try { +{ +this.os = null; +}if (this.os == null) this.os = new java.io.ByteArrayOutputStream(); +if (this.bw != null) { +this.bw.close(); +this.bw = new java.io.BufferedWriter( new java.io.OutputStreamWriter(this.os)); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +this.byteCount = 0; +}); +Clazz_overrideMethod(c$, "writeByteAsInt", +function(b){ +if (this.os == null) this.initOS(); +{ +this.os.writeByteAsInt(b); +}this.byteCount++; +}, "~N"); +Clazz_overrideMethod(c$, "write", +function(buf, i, len){ +if (this.os == null) this.initOS(); +if (len < 0) len = buf.length - i; +try { +this.os.write(buf, i, len); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +this.byteCount += len; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "writeShort", +function(i){ +if (this.isBigEndian()) { +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i); +} else { +this.writeByteAsInt(i); +this.writeByteAsInt(i >> 8); +}}, "~N"); +Clazz_overrideMethod(c$, "writeLong", +function(b){ +if (this.isBigEndian()) { +this.writeInt(((b >> 32) & 0xFFFFFFFF)); +this.writeInt((b & 0xFFFFFFFF)); +} else { +this.writeByteAsInt((b >> 56)); +this.writeByteAsInt((b >> 48)); +this.writeByteAsInt((b >> 40)); +this.writeByteAsInt((b >> 32)); +this.writeByteAsInt((b >> 24)); +this.writeByteAsInt((b >> 16)); +this.writeByteAsInt((b >> 8)); +this.writeByteAsInt(b); +}}, "~N"); +Clazz_defineMethod(c$, "cancel", +function(){ +this.isCanceled = true; +this.closeChannel(); +}); +Clazz_overrideMethod(c$, "closeChannel", +function(){ +if (this.closed) return null; +try { +if (this.bw != null) { +this.bw.flush(); +this.bw.close(); +} else if (this.os != null) { +this.os.flush(); +this.os.close(); +}if (this.os0 != null && this.isCanceled) { +this.os0.flush(); +this.os0.close(); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (this.isCanceled) { +this.closed = true; +return null; +}if (this.fileName == null) { +if (this.$isBase64) { +var s = this.getBase64(); +if (this.os0 != null) { +this.os = this.os0; +this.append(s); +}this.sb = new JU.SB(); +this.sb.append(s); +this.$isBase64 = false; +return this.closeChannel(); +}return (this.sb == null ? null : this.sb.toString()); +}this.closed = true; +if (!this.isLocalFile) { +var ret = this.postByteArray(); +if (ret == null || ret.startsWith("java.net")) this.byteCount = -1; +return ret; +}var jmol = null; +var _function = null; +{ +jmol = self.J2S || Jmol; _function = (typeof this.fileName == +"function" ? this.fileName : null); +}if (jmol != null) { +var data = (this.sb == null ? this.toByteArray() : this.sb.toString()); +if (_function == null) jmol.doAjax(this.fileName, null, data, this.sb == null); + else jmol.applyFunc(this.fileName, data); +}return null; +}); +Clazz_defineMethod(c$, "isBase64", +function(){ +return this.$isBase64; +}); +Clazz_defineMethod(c$, "getBase64", +function(){ +return JU.Base64.getBase64(this.toByteArray()).toString(); +}); +Clazz_defineMethod(c$, "toByteArray", +function(){ +return (this.bytes != null ? this.bytes : Clazz_instanceOf(this.os,"java.io.ByteArrayOutputStream") ? (this.os).toByteArray() : null); +}); +Clazz_defineMethod(c$, "close", +function(){ +this.closeChannel(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.bw != null) try { +this.bw.flush(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +if (this.sb != null) return this.closeChannel(); +return this.byteCount + " bytes"; +}); +Clazz_defineMethod(c$, "postByteArray", +function(){ +var bytes = (this.sb == null ? this.toByteArray() : this.sb.toString().getBytes()); +return this.bytePoster.postByteArray(this.fileName, bytes); +}); +c$.isRemote = Clazz_defineMethod(c$, "isRemote", +function(fileName){ +if (fileName == null) return false; +var itype = JU.OC.urlTypeIndex(fileName); +return (itype >= 0 && itype < 4); +}, "~S"); +c$.isLocal = Clazz_defineMethod(c$, "isLocal", +function(fileName){ +return (fileName != null && !JU.OC.isRemote(fileName)); +}, "~S"); +c$.urlTypeIndex = Clazz_defineMethod(c$, "urlTypeIndex", +function(name){ +if (name == null) return -2; +for (var i = 0; i < JU.OC.urlPrefixes.length; ++i) { +if (name.startsWith(JU.OC.urlPrefixes[i])) { +return i; +}} +return -1; +}, "~S"); +Clazz_overrideMethod(c$, "writeInt", +function(i){ +if (this.bigEndian) { +this.writeByteAsInt(i >> 24); +this.writeByteAsInt(i >> 16); +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i); +} else { +this.writeByteAsInt(i); +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i >> 16); +this.writeByteAsInt(i >> 24); +}}, "~N"); +Clazz_defineMethod(c$, "writeFloat", +function(x){ +this.writeInt(x == 0 ? 0 : Float.floatToIntBits(x)); +}, "~N"); +c$.urlPrefixes = Clazz_newArray(-1, ["http:", "https:", "sftp:", "ftp:", "file:", "cache:"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.P3", null, function(){ +var c$ = Clazz_declareType(JU, "P3", JU.T3); +c$.newP = Clazz_defineMethod(c$, "newP", +function(t){ +var p = new JU.P3(); +p.x = t.x; +p.y = t.y; +p.z = t.z; +return p; +}, "JU.T3"); +c$.getUnlikely = Clazz_defineMethod(c$, "getUnlikely", +function(){ +return (JU.P3.unlikely == null ? JU.P3.unlikely = JU.P3.new3(3.141592653589793, 2.718281828459045, (8.539734222673566)) : JU.P3.unlikely); +}); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var p = new JU.P3(); +p.x = x; +p.y = y; +p.z = z; +return p; +}, "~N,~N,~N"); +c$.newA = Clazz_defineMethod(c$, "newA", +function(a){ +return JU.P3.new3(a[0], a[1], a[2]); +}, "~A"); +c$.unlikely = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3i"], "JU.P3i", null, function(){ +var c$ = Clazz_declareType(JU, "P3i", JU.T3i); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var pt = new JU.P3i(); +pt.x = x; +pt.y = y; +pt.z = z; +return pt; +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T4"], "JU.P4", null, function(){ +var c$ = Clazz_declareType(JU, "P4", JU.T4); +c$.new4 = Clazz_defineMethod(c$, "new4", +function(x, y, z, w){ +var pt = new JU.P4(); +pt.set4(x, y, z, w); +return pt; +}, "~N,~N,~N,~N"); +c$.newPt = Clazz_defineMethod(c$, "newPt", +function(value){ +var pt = new JU.P4(); +pt.set4(value.x, value.y, value.z, value.w); +return pt; +}, "JU.P4"); +Clazz_defineMethod(c$, "distance4", +function(p1){ +var dx = this.x - p1.x; +var dy = this.y - p1.y; +var dz = this.z - p1.z; +var dw = this.w - p1.w; +return Math.sqrt(dx * dx + dy * dy + dz * dz + dw * dw); +}, "JU.P4"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.PT", ["java.util.Arrays", "JU.AU", "$.DF", "$.SB"], function(){ +var c$ = Clazz_declareType(JU, "PT", null); +c$.parseInt = Clazz_defineMethod(c$, "parseInt", +function(str){ +return JU.PT.parseIntNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseIntNext = Clazz_defineMethod(c$, "parseIntNext", +function(str, next){ +var cch = str.length; +if (next[0] < 0 || next[0] >= cch) return -2147483648; +return JU.PT.parseIntChecked(str, cch, next); +}, "~S,~A"); +c$.parseIntChecked = Clazz_defineMethod(c$, "parseIntChecked", +function(str, ichMax, next){ +var digitSeen = false; +var value = 0; +var ich = next[0]; +if (ich < 0) return -2147483648; +var ch; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var negative = false; +if (ich < ichMax && (str.charAt(ich)).charCodeAt(0) == 45) { +negative = true; +++ich; +}while (ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +value = value * 10 + (ch - 48); +digitSeen = true; +++ich; +} +if (!digitSeen) value = -2147483648; + else if (negative) value = -value; +next[0] = ich; +return value; +}, "~S,~N,~A"); +c$.isWhiteSpace = Clazz_defineMethod(c$, "isWhiteSpace", +function(str, ich){ +var ch; +return (ich >= 0 && ((ch = str.charAt(ich)) == ' ' || ch == '\t' || ch == '\n')); +}, "~S,~N"); +c$.parseFloatChecked = Clazz_defineMethod(c$, "parseFloatChecked", +function(str, ichMax, next, isStrict){ +var digitSeen = false; +var ich = next[0]; +if (isStrict && str.indexOf('\n') != str.lastIndexOf('\n')) return NaN; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var negative = false; +if (ich < ichMax && str.charAt(ich) == '-') { +++ich; +negative = true; +}var ch = 0; +var ival = 0; +var ival2 = 0; +while (ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +ival = (ival * 10) + (ch - 48) * 1; +++ich; +digitSeen = true; +} +var isDecimal = false; +var iscale = 0; +var nzero = (ival == 0 ? -1 : 0); +if (ch == 46) { +isDecimal = true; +while (++ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +digitSeen = true; +if (nzero < 0) { +if (ch == 48) { +nzero--; +continue; +}nzero = -nzero; +}if (iscale < JU.PT.decimalScale.length) { +ival2 = (ival2 * 10) + (ch - 48) * 1; +iscale++; +}} +}var value; +if (!digitSeen) { +value = NaN; +} else if (ival2 > 0) { +value = ival2 * JU.PT.decimalScale[iscale - 1]; +if (nzero > 1) { +if (nzero - 2 < JU.PT.decimalScale.length) { +value *= JU.PT.decimalScale[nzero - 2]; +} else { +value *= Math.pow(10, 1 - nzero); +}} else { +value += ival; +}} else { +value = ival; +}var isExponent = false; +if (ich < ichMax && (ch == 69 || ch == 101 || ch == 68)) { +isExponent = true; +if (++ich >= ichMax) return NaN; +ch = (str.charAt(ich)).charCodeAt(0); +if ((ch == 43) && (++ich >= ichMax)) return NaN; +next[0] = ich; +var exponent = JU.PT.parseIntChecked(str, ichMax, next); +if (exponent == -2147483648) return NaN; +if (exponent > 0 && exponent <= JU.PT.tensScale.length) value *= JU.PT.tensScale[exponent - 1]; + else if (exponent < 0 && -exponent <= JU.PT.decimalScale.length) value *= JU.PT.decimalScale[-exponent - 1]; + else if (exponent != 0) value *= Math.pow(10, exponent); +} else { +next[0] = ich; +}if (negative) value = -value; +if (value == Infinity) value = 3.4028235E38; +return (!isStrict || (!isExponent || isDecimal) && JU.PT.checkTrailingText(str, next[0], ichMax) ? value : NaN); +}, "~S,~N,~A,~B"); +c$.checkTrailingText = Clazz_defineMethod(c$, "checkTrailingText", +function(str, ich, ichMax){ +var ch; +while (ich < ichMax && (JU.PT.isWhitespace(ch = str.charAt(ich)) || ch == ';')) ++ich; + +return (ich == ichMax); +}, "~S,~N,~N"); +c$.parseFloatArray = Clazz_defineMethod(c$, "parseFloatArray", +function(str){ +return JU.PT.parseFloatArrayNext(str, Clazz_newIntArray (1, 0), null, null, null); +}, "~S"); +c$.parseFloatArrayInfested = Clazz_defineMethod(c$, "parseFloatArrayInfested", +function(tokens, data){ +var len = data.length; +var nTokens = tokens.length; +var n = 0; +var max = 0; +for (var i = 0; i >= 0 && i < len && n < nTokens; i++) { +var f; +while (Float.isNaN(f = JU.PT.parseFloat(tokens[n++])) && n < nTokens) { +} +if (!Float.isNaN(f)) data[(max = i)] = f; +if (n == nTokens) break; +} +return max + 1; +}, "~A,~A"); +c$.parseFloatArrayNext = Clazz_defineMethod(c$, "parseFloatArrayNext", +function(str, next, f, strStart, strEnd){ +var n = 0; +var pt = next[0]; +if (pt >= 0) { +if (strStart != null) { +var p = str.indexOf(strStart, pt); +if (p >= 0) next[0] = p + strStart.length; +}str = str.substring(next[0]); +pt = (strEnd == null ? -1 : str.indexOf(strEnd)); +if (pt < 0) pt = str.length; + else str = str.substring(0, pt); +next[0] += pt + 1; +var tokens = JU.PT.getTokens(str); +if (f == null) f = Clazz_newFloatArray (tokens.length, 0); +n = JU.PT.parseFloatArrayInfested(tokens, f); +}if (f == null) return Clazz_newFloatArray (0, 0); +for (var i = n; i < f.length; i++) f[i] = NaN; + +return f; +}, "~S,~A,~A,~S,~S"); +c$.parseFloatRange = Clazz_defineMethod(c$, "parseFloatRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +if (next[0] < 0 || next[0] >= ichMax) return NaN; +return JU.PT.parseFloatChecked(str, ichMax, next, false); +}, "~S,~N,~A"); +c$.parseFloatNext = Clazz_defineMethod(c$, "parseFloatNext", +function(str, next){ +var cch = (str == null ? -1 : str.length); +return (next[0] < 0 || next[0] >= cch ? NaN : JU.PT.parseFloatChecked(str, cch, next, false)); +}, "~S,~A"); +c$.parseFloatStrict = Clazz_defineMethod(c$, "parseFloatStrict", +function(str){ +var cch = str.length; +if (cch == 0) return NaN; +return JU.PT.parseFloatChecked(str, cch, Clazz_newIntArray(-1, [0]), true); +}, "~S"); +c$.parseFloat = Clazz_defineMethod(c$, "parseFloat", +function(str){ +return JU.PT.parseFloatNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseIntRadix = Clazz_defineMethod(c$, "parseIntRadix", +function(s, i){ +{ +return Integer.parseIntRadix(s, i); +}}, "~S,~N"); +c$.getTokens = Clazz_defineMethod(c$, "getTokens", +function(line){ +return JU.PT.getTokensAt(line, 0); +}, "~S"); +c$.parseToken = Clazz_defineMethod(c$, "parseToken", +function(str){ +return JU.PT.parseTokenNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseTrimmed = Clazz_defineMethod(c$, "parseTrimmed", +function(str){ +return JU.PT.parseTrimmedRange(str, 0, str.length); +}, "~S"); +c$.parseTrimmedAt = Clazz_defineMethod(c$, "parseTrimmedAt", +function(str, ichStart){ +return JU.PT.parseTrimmedRange(str, ichStart, str.length); +}, "~S,~N"); +c$.parseTrimmedRange = Clazz_defineMethod(c$, "parseTrimmedRange", +function(str, ichStart, ichMax){ +var cch = str.length; +if (ichMax < cch) cch = ichMax; +if (cch < ichStart) return ""; +return JU.PT.parseTrimmedChecked(str, ichStart, cch); +}, "~S,~N,~N"); +c$.getTokensAt = Clazz_defineMethod(c$, "getTokensAt", +function(line, ich){ +if (line == null) return null; +var cchLine = line.length; +if (ich < 0 || ich > cchLine) return null; +var tokenCount = JU.PT.countTokens(line, ich); +var tokens = new Array(tokenCount); +var next = Clazz_newIntArray (1, 0); +next[0] = ich; +for (var i = 0; i < tokenCount; ++i) tokens[i] = JU.PT.parseTokenChecked(line, cchLine, next); + +return tokens; +}, "~S,~N"); +c$.countChar = Clazz_defineMethod(c$, "countChar", +function(line, c){ +var n = 0; +for (var i = line.lastIndexOf(c) + 1; --i >= 0; ) if (line.charAt(i) == c) n++; + +return n; +}, "~S,~S"); +c$.countTokens = Clazz_defineMethod(c$, "countTokens", +function(line, ich){ +var tokenCount = 0; +if (line != null) { +var ichMax = line.length; +while (true) { +while (ich < ichMax && JU.PT.isWhiteSpace(line, ich)) ++ich; + +if (ich == ichMax) break; +++tokenCount; +do { +++ich; +} while (ich < ichMax && !JU.PT.isWhiteSpace(line, ich)); +} +}return tokenCount; +}, "~S,~N"); +c$.parseTokenNext = Clazz_defineMethod(c$, "parseTokenNext", +function(str, next){ +var cch = str.length; +return (next[0] < 0 || next[0] >= cch ? null : JU.PT.parseTokenChecked(str, cch, next)); +}, "~S,~A"); +c$.parseTokenRange = Clazz_defineMethod(c$, "parseTokenRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +return (next[0] < 0 || next[0] >= ichMax ? null : JU.PT.parseTokenChecked(str, ichMax, next)); +}, "~S,~N,~A"); +c$.parseTokenChecked = Clazz_defineMethod(c$, "parseTokenChecked", +function(str, ichMax, next){ +var ich = next[0]; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var ichNonWhite = ich; +while (ich < ichMax && !JU.PT.isWhiteSpace(str, ich)) ++ich; + +next[0] = ich; +return (ichNonWhite == ich ? null : str.substring(ichNonWhite, ich)); +}, "~S,~N,~A"); +c$.parseTrimmedChecked = Clazz_defineMethod(c$, "parseTrimmedChecked", +function(str, ich, ichMax){ +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var ichLast = ichMax - 1; +while (ichLast >= ich && JU.PT.isWhiteSpace(str, ichLast)) --ichLast; + +return (ichLast < ich ? "" : str.substring(ich, ichLast + 1)); +}, "~S,~N,~N"); +c$.dVal = Clazz_defineMethod(c$, "dVal", +function(s){ +{ +if(s==null) +throw new NumberFormatException("null"); +var d=parseFloat(s); +if(isNaN(d)) +throw new NumberFormatException("Not a Number : "+s); +return d +}}, "~S"); +c$.fVal = Clazz_defineMethod(c$, "fVal", +function(s){ +{ +return this.dVal(s); +}}, "~S"); +c$.parseIntRange = Clazz_defineMethod(c$, "parseIntRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +return (next[0] < 0 || next[0] >= ichMax ? -2147483648 : JU.PT.parseIntChecked(str, ichMax, next)); +}, "~S,~N,~A"); +c$.parseFloatArrayData = Clazz_defineMethod(c$, "parseFloatArrayData", +function(tokens, data){ +JU.PT.parseFloatArrayDataN(tokens, data, data.length); +}, "~A,~A"); +c$.parseFloatArrayDataN = Clazz_defineMethod(c$, "parseFloatArrayDataN", +function(tokens, data, nData){ +for (var i = nData; --i >= 0; ) data[i] = (i >= tokens.length ? NaN : JU.PT.parseFloat(tokens[i])); + +}, "~A,~A,~N"); +c$.split = Clazz_defineMethod(c$, "split", +function(text, run){ +if (text.length == 0) return new Array(0); +var n = 1; +var i = text.indexOf(run); +var lines; +var runLen = run.length; +if (i < 0 || runLen == 0) { +lines = new Array(1); +lines[0] = text; +return lines; +}var len = text.length - runLen; +for (; i >= 0 && i < len; n++) i = text.indexOf(run, i + runLen); + +lines = new Array(n); +i = 0; +var ipt = 0; +var pt = 0; +for (; (ipt = text.indexOf(run, i)) >= 0 && pt + 1 < n; ) { +lines[pt++] = text.substring(i, ipt); +i = ipt + runLen; +} +if (text.indexOf(run, len) != len) len += runLen; +lines[pt] = text.substring(i, len); +return lines; +}, "~S,~S"); +c$.getQuotedStringAt = Clazz_defineMethod(c$, "getQuotedStringAt", +function(line, ipt0){ +var next = Clazz_newIntArray(-1, [ipt0]); +return JU.PT.getQuotedStringNext(line, next); +}, "~S,~N"); +c$.getQuotedStringNext = Clazz_defineMethod(c$, "getQuotedStringNext", +function(line, next){ +var i = next[0]; +if (i < 0 || (i = line.indexOf("\"", i)) < 0) return ""; +var pt = i + 1; +var len = line.length; +while (++i < len && line.charAt(i) != '"') if (line.charAt(i) == '\\') i++; + +next[0] = i + 1; +return line.substring(pt, i); +}, "~S,~A"); +c$.getQuotedOrUnquotedAttribute = Clazz_defineMethod(c$, "getQuotedOrUnquotedAttribute", +function(line, key){ +if (line == null || key == null) return null; +var pt = line.toLowerCase().indexOf(key.toLowerCase() + "="); +if (pt < 0 || (pt = pt + key.length + 1) >= line.length) return ""; +var c = line.charAt(pt); +switch ((c).charCodeAt(0)) { +case 39: +case 34: +pt++; +break; +default: +c = ' '; +line += " "; +} +var pt1 = line.indexOf(c, pt); +return (pt1 < 0 ? null : line.substring(pt, pt1)); +}, "~S,~S"); +c$.getCSVString = Clazz_defineMethod(c$, "getCSVString", +function(line, next){ +var i = next[1]; +if (i < 0 || (i = line.indexOf("\"", i)) < 0) return null; +var pt = next[0] = i; +var len = line.length; +var escaped = false; +var haveEscape = false; +while (++i < len && (line.charAt(i) != '"' || (escaped = (i + 1 < len && line.charAt(i + 1) == '"')))) if (escaped) { +escaped = false; +haveEscape = true; +i++; +} +if (i >= len) { +next[1] = -1; +return null; +}next[1] = i + 1; +var s = line.substring(pt + 1, i); +return (haveEscape ? JU.PT.rep(JU.PT.rep(s, "\"\"", "\0"), "\0", "\"") : s); +}, "~S,~A"); +c$.isOneOf = Clazz_defineMethod(c$, "isOneOf", +function(key, semiList){ +if (semiList.length == 0) return false; +if (semiList.charAt(0) != ';') semiList = ";" + semiList + ";"; +return key.indexOf(";") < 0 && semiList.indexOf(';' + key + ';') >= 0; +}, "~S,~S"); +c$.getQuotedAttribute = Clazz_defineMethod(c$, "getQuotedAttribute", +function(info, name){ +var i = info.indexOf(name + "="); +return (i < 0 ? null : JU.PT.getQuotedStringAt(info, i)); +}, "~S,~S"); +c$.approx = Clazz_defineMethod(c$, "approx", +function(f, n){ +return Math.round(f * n) / n; +}, "~N,~N"); +c$.rep = Clazz_defineMethod(c$, "rep", +function(str, strFrom, strTo){ +if (str == null || strFrom.length == 0 || str.indexOf(strFrom) < 0) return str; +var isOnce = (strTo.indexOf(strFrom) >= 0); +do { +str = str.$replace(strFrom, strTo); +} while (!isOnce && str.indexOf(strFrom) >= 0); +return str; +}, "~S,~S,~S"); +c$.formatF = Clazz_defineMethod(c$, "formatF", +function(value, width, precision, alignLeft, zeroPad){ +return JU.PT.formatS(JU.DF.formatDecimal(value, precision), width, 0, alignLeft, zeroPad); +}, "~N,~N,~N,~B,~B"); +c$.formatD = Clazz_defineMethod(c$, "formatD", +function(value, width, precision, alignLeft, zeroPad){ +return JU.PT.formatS(JU.DF.formatDecimal(value, -1 - precision), width, 0, alignLeft, zeroPad); +}, "~N,~N,~N,~B,~B"); +c$.formatS = Clazz_defineMethod(c$, "formatS", +function(value, width, precision, alignLeft, zeroPad){ +if (value == null) return ""; +var len = value.length; +if (precision != 2147483647 && precision > 0 && precision < len) value = value.substring(0, precision); + else if (precision < 0 && len + precision >= 0) value = value.substring(len + precision + 1); +var padLength = width - value.length; +if (padLength <= 0) return value; +var isNeg = (zeroPad && !alignLeft && value.charAt(0) == '-'); +var padChar = (zeroPad ? '0' : ' '); +var padChar0 = (isNeg ? '-' : padChar); +var sb = new JU.SB(); +if (alignLeft) sb.append(value); +sb.appendC(padChar0); +for (var i = padLength; --i > 0; ) sb.appendC(padChar); + +if (!alignLeft) sb.append(isNeg ? padChar + value.substring(1) : value); +return sb.toString(); +}, "~S,~N,~N,~B,~B"); +c$.replaceWithCharacter = Clazz_defineMethod(c$, "replaceWithCharacter", +function(str, strFrom, chTo){ +if (str == null) return null; +for (var i = strFrom.length; --i >= 0; ) str = str.$replace(strFrom.charAt(i), chTo); + +return str; +}, "~S,~S,~S"); +c$.replaceAllCharacters = Clazz_defineMethod(c$, "replaceAllCharacters", +function(str, strFrom, strTo){ +for (var i = strFrom.length; --i >= 0; ) { +var chFrom = strFrom.substring(i, i + 1); +str = JU.PT.rep(str, chFrom, strTo); +} +return str; +}, "~S,~S,~S"); +c$.trim = Clazz_defineMethod(c$, "trim", +function(str, chars){ +if (str == null || str.length == 0) return str; +if (chars.length == 0) return str.trim(); +var len = str.length; +var k = 0; +while (k < len && chars.indexOf(str.charAt(k)) >= 0) k++; + +var m = str.length - 1; +while (m > k && chars.indexOf(str.charAt(m)) >= 0) m--; + +return str.substring(k, m + 1); +}, "~S,~S"); +c$.trimQuotes = Clazz_defineMethod(c$, "trimQuotes", +function(value){ +return (value != null && value.length > 1 && value.startsWith("\"") && value.endsWith("\"") ? value.substring(1, value.length - 1) : value); +}, "~S"); +c$.isNonStringPrimitive = Clazz_defineMethod(c$, "isNonStringPrimitive", +function(info){ +{ +if(typeof info == "number" || typeof info == "boolean") { +return true; +} +}return Clazz_instanceOf(info, Number) || Clazz_instanceOf(info, Boolean); +}, "~O"); +c$.toJSON = Clazz_defineMethod(c$, "toJSON", +function(infoType, info){ +if (info == null) return JU.PT.packageJSON(infoType, null); +if (JU.PT.isNonStringPrimitive(info)) return JU.PT.packageJSON(infoType, info.toString()); +var s = null; +var sb = null; +while (true) { +if ((typeof(info)=='string')) { +s = info; +{ +if (typeof s == "undefined") s = "null" +}if (s.indexOf("{\"") != 0) { +s = JU.PT.esc(s); +}break; +}if (Clazz_instanceOf(info,"javajs.api.JSONEncodable")) { +if ((s = (info).toJSON()) == null) s = "null"; +break; +}sb = new JU.SB(); +if (Clazz_instanceOf(info,"java.util.Map")) { +sb.append("{ "); +var sep = ""; +var keys = (info).keySet(); +var skeys = keys.toArray( new Array(keys.size())); +java.util.Arrays.sort(skeys); +for (var i = 0, n = skeys.length; i < n; i++) { +var key = skeys[i]; +if (key == null) key = "null"; +sb.append(sep).append(JU.PT.packageJSON(key, JU.PT.toJSON(null, (info).get(key)))); +sep = ","; +} +sb.append(" }"); +break; +}if (Clazz_instanceOf(info,"JU.Lst")) { +sb.append("[ "); +var n = (info).size(); +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.append(JU.PT.toJSON(null, (info).get(i))); +} +sb.append(" ]"); +break; +}if (Clazz_instanceOf(info,"JU.M34")) { +var len = (Clazz_instanceOf(info,"JU.M4") ? 4 : 3); +var x = Clazz_newFloatArray (len, 0); +var m = info; +sb.appendC('['); +for (var i = 0; i < len; i++) { +if (i > 0) sb.appendC(','); +m.getRow(i, x); +sb.append(JU.PT.toJSON(null, x)); +} +sb.appendC(']'); +break; +}s = JU.PT.nonArrayString(info); +if (s == null) { +sb.append("["); +var n = JU.AU.getLength(info); +var o = null; +{ +o = info[0]; +typeof o != "number" && typeof 0 != "boolean" && (o = null); +}if (o != null) { +sb.appendO(info); +} else { +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.append(JU.PT.toJSON(null, JU.PT.arrayGet(info, i))); +} +}sb.append("]"); +break; +}info = info.toString(); +} +return JU.PT.packageJSON(infoType, (s == null ? sb.toString() : s)); +}, "~S,~O"); +c$.arrayGet = Clazz_defineMethod(c$, "arrayGet", +function(info, i){ +{ +return info[i]; +}}, "~O,~N"); +c$.nonArrayString = Clazz_defineMethod(c$, "nonArrayString", +function(x){ +{ +return (x.constructor == Array || x.BYTES_PER_ELEMENT ? null : x.toString()); +}}, "~O"); +c$.byteArrayToJSON = Clazz_defineMethod(c$, "byteArrayToJSON", +function(data){ +var sb = new JU.SB(); +sb.append("["); +var n = data.length; +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.appendI(data[i] & 0xFF); +} +sb.append("]"); +return sb.toString(); +}, "~A"); +c$.packageJSON = Clazz_defineMethod(c$, "packageJSON", +function(infoType, info){ +return (infoType == null ? info : "\"" + infoType + "\": " + info); +}, "~S,~S"); +c$.escapeUrl = Clazz_defineMethod(c$, "escapeUrl", +function(url){ +url = JU.PT.rep(url, "\n", ""); +url = JU.PT.rep(url, "%", "%25"); +url = JU.PT.rep(url, "#", "%23"); +url = JU.PT.rep(url, "[", "%5B"); +url = JU.PT.rep(url, "\\", "%5C"); +url = JU.PT.rep(url, "]", "%5D"); +url = JU.PT.rep(url, " ", "%20"); +return url; +}, "~S"); +c$.esc = Clazz_defineMethod(c$, "esc", +function(str){ +if (str == null || str.length == 0) return "\"\""; +var haveEscape = false; +var i = 0; +for (; i < "\\\\\tt\rr\nn\"\"".length; i += 2) if (str.indexOf("\\\\\tt\rr\nn\"\"".charAt(i)) >= 0) { +haveEscape = true; +break; +} +if (haveEscape) while (i < "\\\\\tt\rr\nn\"\"".length) { +var pt = -1; +var ch = "\\\\\tt\rr\nn\"\"".charAt(i++); +var ch2 = "\\\\\tt\rr\nn\"\"".charAt(i++); +var sb = new JU.SB(); +var pt0 = 0; +while ((pt = str.indexOf(ch, pt + 1)) >= 0) { +sb.append(str.substring(pt0, pt)).appendC('\\').appendC(ch2); +pt0 = pt + 1; +} +sb.append(str.substring(pt0, str.length)); +str = sb.toString(); +} +return "\"" + JU.PT.escUnicode(str) + "\""; +}, "~S"); +c$.escUnicode = Clazz_defineMethod(c$, "escUnicode", +function(str){ +for (var i = str.length; --i >= 0; ) if ((str.charAt(i)).charCodeAt(0) > 0x7F) { +var s = "0000" + Integer.toHexString(str.charAt(i).charCodeAt(0)); +str = str.substring(0, i) + "\\u" + s.substring(s.length - 4) + str.substring(i + 1); +} +return str; +}, "~S"); +c$.escF = Clazz_defineMethod(c$, "escF", +function(f){ +var sf = "" + f; +{ +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0 && sf.indexOf("N") < 0 && sf.indexOf("n") < 0) +sf += ".0"; +}return sf; +}, "~N"); +c$.join = Clazz_defineMethod(c$, "join", +function(s, c, i0){ +if (s.length < i0) return null; +var sb = new JU.SB(); +sb.append(s[i0++]); +for (var i = i0; i < s.length; i++) sb.appendC(c).append(s[i]); + +return sb.toString(); +}, "~A,~S,~N"); +c$.isLike = Clazz_defineMethod(c$, "isLike", +function(a, b){ +var areEqual = a.equals(b); +if (areEqual) return true; +var isStart = b.startsWith("*"); +var isEnd = b.endsWith("*"); +return (!isStart && !isEnd) ? areEqual : isStart && isEnd ? b.length == 1 || a.contains(b.substring(1, b.length - 1)) : isStart ? a.endsWith(b.substring(1)) : a.startsWith(b.substring(0, b.length - 1)); +}, "~S,~S"); +c$.getMapValueNoCase = Clazz_defineMethod(c$, "getMapValueNoCase", +function(h, key){ +if ("this".equals(key)) return h; +var val = h.get(key); +if (val == null) for (var e, $e = h.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getKey().equalsIgnoreCase(key)) return e.getValue(); + +return val; +}, "java.util.Map,~S"); +c$.clean = Clazz_defineMethod(c$, "clean", +function(s){ +return JU.PT.rep(JU.PT.replaceAllCharacters(s, " \t\n\r", " "), " ", " ").trim(); +}, "~S"); +c$.fdup = Clazz_defineMethod(c$, "fdup", +function(f, pt, n){ +var ch; +var count = 0; +for (var i = pt; --i >= 1; ) { +if (JU.PT.isDigit(ch = f.charAt(i))) continue; +switch ((ch).charCodeAt(0)) { +case 46: +if (count++ != 0) return f; +continue; +case 45: +if (i != 1 && f.charAt(i - 1) != '.') return f; +continue; +default: +return f; +} +} +var s = f.substring(0, pt + 1); +var sb = new JU.SB(); +for (var i = 0; i < n; i++) sb.append(s); + +sb.append(f.substring(pt + 1)); +return sb.toString(); +}, "~S,~N,~N"); +c$.formatString = Clazz_defineMethod(c$, "formatString", +function(strFormat, key, strT, floatT, doubleT, doOne){ +if (strFormat == null) return null; +if ("".equals(strFormat)) return ""; +var len = key.length; +if (strFormat.indexOf("%") < 0 || len == 0 || strFormat.indexOf(key) < 0) return strFormat; +var strLabel = ""; +var ich; +var ichPercent; +var ichKey; +for (ich = 0; (ichPercent = strFormat.indexOf('%', ich)) >= 0 && (ichKey = strFormat.indexOf(key, ichPercent + 1)) >= 0; ) { +if (ich != ichPercent) strLabel += strFormat.substring(ich, ichPercent); +ich = ichPercent + 1; +if (ichKey > ichPercent + 6) { +strLabel += '%'; +continue; +}try { +var alignLeft = false; +if (strFormat.charAt(ich) == '-') { +alignLeft = true; +++ich; +}var zeroPad = false; +if (strFormat.charAt(ich) == '0') { +zeroPad = true; +++ich; +}var ch; +var width = 0; +while ((ch = strFormat.charAt(ich)) >= '0' && (ch <= '9')) { +width = (10 * width) + (ch.charCodeAt(0) - 48); +++ich; +} +var precision = 2147483647; +var isExponential = false; +if (strFormat.charAt(ich) == '.') { +++ich; +if ((ch = strFormat.charAt(ich)) == '-') { +isExponential = true; +++ich; +}if ((ch = strFormat.charAt(ich)) >= '0' && ch <= '9') { +precision = ch.charCodeAt(0) - 48; +++ich; +if ((ch = strFormat.charAt(ich)) >= '0' && ch <= '9') { +precision = 10 * precision + (ch.charCodeAt(0) - 48); +++ich; +}}if (isExponential) precision = -precision; +}var st = strFormat.substring(ich, ich + len); +if (!st.equals(key)) { +ich = ichPercent + 1; +strLabel += '%'; +continue; +}ich += len; +if (!Float.isNaN(floatT)) strLabel += JU.PT.formatF(floatT, width, precision, alignLeft, zeroPad); + else if (strT != null) strLabel += JU.PT.formatS(strT, width, precision < 0 ? precision - 1 : precision, alignLeft, zeroPad); + else if (!Double.isNaN(doubleT)) strLabel += JU.PT.formatD(doubleT, width, precision - 1, alignLeft, zeroPad); +if (doOne) break; +} catch (ioobe) { +if (Clazz_exceptionOf(ioobe,"IndexOutOfBoundsException")){ +ich = ichPercent; +break; +} else { +throw ioobe; +} +} +} +strLabel += strFormat.substring(ich); +return strLabel; +}, "~S,~S,~S,~N,~N,~B"); +c$.formatStringS = Clazz_defineMethod(c$, "formatStringS", +function(strFormat, key, strT){ +return JU.PT.formatString(strFormat, key, strT, NaN, NaN, false); +}, "~S,~S,~S"); +c$.formatStringF = Clazz_defineMethod(c$, "formatStringF", +function(strFormat, key, floatT){ +return JU.PT.formatString(strFormat, key, null, floatT, NaN, false); +}, "~S,~S,~N"); +c$.formatStringI = Clazz_defineMethod(c$, "formatStringI", +function(strFormat, key, intT){ +return JU.PT.formatString(strFormat, key, "" + intT, NaN, NaN, false); +}, "~S,~S,~N"); +c$.sprintf = Clazz_defineMethod(c$, "sprintf", +function(strFormat, list, values){ +if (values == null) return strFormat; +var n = list.length; +if (n == values.length) try { +for (var o = 0; o < n; o++) { +if (values[o] == null) continue; +switch ((list.charAt(o)).charCodeAt(0)) { +case 115: +strFormat = JU.PT.formatString(strFormat, "s", values[o], NaN, NaN, true); +break; +case 102: +strFormat = JU.PT.formatString(strFormat, "f", null, (values[o]).floatValue(), NaN, true); +break; +case 105: +strFormat = JU.PT.formatString(strFormat, "d", "" + values[o], NaN, NaN, true); +strFormat = JU.PT.formatString(strFormat, "i", "" + values[o], NaN, NaN, true); +break; +case 100: +strFormat = JU.PT.formatString(strFormat, "e", null, NaN, (values[o]).doubleValue(), true); +break; +case 112: +var pVal = values[o]; +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.x, NaN, true); +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.y, NaN, true); +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.z, NaN, true); +break; +case 113: +var qVal = values[o]; +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.x, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.y, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.z, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.w, NaN, true); +break; +case 83: +var sVal = values[o]; +for (var i = 0; i < sVal.length; i++) strFormat = JU.PT.formatString(strFormat, "s", sVal[i], NaN, NaN, true); + +break; +case 70: +var fVal = values[o]; +for (var i = 0; i < fVal.length; i++) strFormat = JU.PT.formatString(strFormat, "f", null, fVal[i], NaN, true); + +break; +case 73: +var iVal = values[o]; +for (var i = 0; i < iVal.length; i++) strFormat = JU.PT.formatString(strFormat, "d", "" + iVal[i], NaN, NaN, true); + +for (var i = 0; i < iVal.length; i++) strFormat = JU.PT.formatString(strFormat, "i", "" + iVal[i], NaN, NaN, true); + +break; +case 68: +var dVal = values[o]; +for (var i = 0; i < dVal.length; i++) strFormat = JU.PT.formatString(strFormat, "e", null, NaN, dVal[i], true); + +} +} +return JU.PT.rep(strFormat, "%%", "%"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +System.out.println("TextFormat.sprintf error " + list + " " + strFormat); +return JU.PT.rep(strFormat, "%", "?"); +}, "~S,~S,~A"); +c$.formatCheck = Clazz_defineMethod(c$, "formatCheck", +function(strFormat){ +if (strFormat == null || strFormat.indexOf('p') < 0 && strFormat.indexOf('q') < 0) return strFormat; +strFormat = JU.PT.rep(strFormat, "%%", "\1"); +strFormat = JU.PT.rep(strFormat, "%p", "%6.2p"); +strFormat = JU.PT.rep(strFormat, "%q", "%6.2q"); +var format = JU.PT.split(strFormat, "%"); +var sb = new JU.SB(); +sb.append(format[0]); +for (var i = 1; i < format.length; i++) { +var f = "%" + format[i]; +var pt; +if (f.length >= 3) { +if ((pt = f.indexOf('p')) >= 0) f = JU.PT.fdup(f, pt, 3); +if ((pt = f.indexOf('q')) >= 0) f = JU.PT.fdup(f, pt, 4); +}sb.append(f); +} +return sb.toString().$replace('\1', '%'); +}, "~S"); +c$.leftJustify = Clazz_defineMethod(c$, "leftJustify", +function(s, s1, s2){ +s.append(s2); +var n = s1.length - s2.length; +if (n > 0) s.append(s1.substring(0, n)); +}, "JU.SB,~S,~S"); +c$.rightJustify = Clazz_defineMethod(c$, "rightJustify", +function(s, s1, s2){ +var n = s1.length - s2.length; +if (n > 0) s.append(s1.substring(0, n)); +s.append(s2); +}, "JU.SB,~S,~S"); +c$.safeTruncate = Clazz_defineMethod(c$, "safeTruncate", +function(f, n){ +if (f > -0.001 && f < 0.001) f = 0; +return (f + " ").substring(0, n); +}, "~N,~N"); +c$.isWild = Clazz_defineMethod(c$, "isWild", +function(s){ +return s != null && (s.indexOf("*") >= 0 || s.indexOf("?") >= 0); +}, "~S"); +c$.isMatch = Clazz_defineMethod(c$, "isMatch", +function(search, match, checkStar, allowInitialStar){ +if (search.equals(match)) return true; +var mLen = match.length; +if (mLen == 0) return false; +var isStar0 = (checkStar && allowInitialStar ? match.charAt(0) == '*' : false); +if (mLen == 1 && isStar0) return true; +var isStar1 = (checkStar && match.endsWith("*")); +var haveQ = (match.indexOf('?') >= 0); +if (!haveQ) { +if (isStar0) return (isStar1 ? (mLen < 3 || search.indexOf(match.substring(1, mLen - 1)) >= 0) : search.endsWith(match.substring(1))); + else if (isStar1) return search.startsWith(match.substring(0, mLen - 1)); +}var sLen = search.length; +var qqqq = "????"; +var nq = 4; +while (nq < sLen) { +qqqq += qqqq; +nq += 4; +} +if (checkStar) { +if (isStar0) { +match = qqqq + match.substring(1); +mLen += nq - 1; +}if (isStar1) { +match = match.substring(0, mLen - 1) + qqqq; +mLen += nq - 1; +}}if (mLen < sLen) return false; +var ich = 0; +while (mLen > sLen) { +if (allowInitialStar && match.charAt(ich) == '?') { +++ich; +} else if (match.charAt(ich + mLen - 1) != '?') { +return false; +}--mLen; +} +for (var i = sLen; --i >= 0; ) { +var chm = match.charAt(ich + i); +if (chm == '?') continue; +var chs = search.charAt(i); +if (chm != chs && (chm != '\1' || chs != '?')) return false; +} +return true; +}, "~S,~S,~B,~B"); +c$.replaceQuotedStrings = Clazz_defineMethod(c$, "replaceQuotedStrings", +function(s, list, newList){ +var n = list.size(); +for (var i = 0; i < n; i++) { +var name = list.get(i); +var newName = newList.get(i); +if (!newName.equals(name)) s = JU.PT.rep(s, "\"" + name + "\"", "\"" + newName + "\""); +} +return s; +}, "~S,JU.Lst,JU.Lst"); +c$.replaceStrings = Clazz_defineMethod(c$, "replaceStrings", +function(s, list, newList){ +var n = list.size(); +for (var i = 0; i < n; i++) { +var name = list.get(i); +var newName = newList.get(i); +if (!newName.equals(name)) s = JU.PT.rep(s, name, newName); +} +return s; +}, "~S,JU.Lst,JU.Lst"); +c$.isDigit = Clazz_defineMethod(c$, "isDigit", +function(ch){ +var c = (ch).charCodeAt(0); +return (48 <= c && c <= 57); +}, "~S"); +c$.isUpperCase = Clazz_defineMethod(c$, "isUpperCase", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90); +}, "~S"); +c$.isLowerCase = Clazz_defineMethod(c$, "isLowerCase", +function(ch){ +var c = (ch).charCodeAt(0); +return (97 <= c && c <= 122); +}, "~S"); +c$.isLetter = Clazz_defineMethod(c$, "isLetter", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122); +}, "~S"); +c$.isLetterOrDigit = Clazz_defineMethod(c$, "isLetterOrDigit", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57); +}, "~S"); +c$.isWhitespace = Clazz_defineMethod(c$, "isWhitespace", +function(ch){ +var c = (ch).charCodeAt(0); +return (c >= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd); +}, "~S"); +c$.fixPtFloats = Clazz_defineMethod(c$, "fixPtFloats", +function(pt, f){ +pt.x = Math.round(pt.x * f) / f; +pt.y = Math.round(pt.y * f) / f; +pt.z = Math.round(pt.z * f) / f; +}, "JU.T3,~N"); +c$.fixFloat = Clazz_defineMethod(c$, "fixFloat", +function(d, f){ +return (Math.round(d * f) / f); +}, "~N,~N"); +c$.fixDouble = Clazz_defineMethod(c$, "fixDouble", +function(d, f){ +return Math.round(d * f) / f; +}, "~N,~N"); +c$.parseFloatFraction = Clazz_defineMethod(c$, "parseFloatFraction", +function(s){ +var pt = s.indexOf("/"); +return (pt < 0 ? JU.PT.parseFloat(s) : JU.PT.parseFloat(s.substring(0, pt)) / JU.PT.parseFloat(s.substring(pt + 1))); +}, "~S"); +c$.tensScale = Clazz_newFloatArray(-1, [10, 100, 1000, 10000, 100000, 1000000]); +c$.decimalScale = Clazz_newFloatArray(-1, [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, 0.00000001, 0.000000001, 0.0000000001, 0.00000000001, 0.000000000001, 0.0000000000001, 0.00000000000001, 0.000000000000001]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sb = null; +this.s = null; +Clazz_instantialize(this, arguments);}, JU, "SB", null); +Clazz_makeConstructor(c$, +function(){ +{ +this.s = ""; +}}); +c$.newN = Clazz_defineMethod(c$, "newN", +function(n){ +{ +return new JU.SB(); +}}, "~N"); +c$.newS = Clazz_defineMethod(c$, "newS", +function(s){ +{ +var sb = new JU.SB(); +sb.s = s; +return sb; +}}, "~S"); +Clazz_defineMethod(c$, "append", +function(s){ +{ +this.s += s +}return this; +}, "~S"); +Clazz_defineMethod(c$, "appendC", +function(c){ +{ +this.s += c; +}return this; +}, "~S"); +Clazz_defineMethod(c$, "appendI", +function(i){ +{ +this.s += i +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendB", +function(b){ +{ +this.s += b +}return this; +}, "~B"); +Clazz_defineMethod(c$, "appendF", +function(f){ +{ +var sf = "" + f; +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0) +sf += ".0" ; +this.s += sf; +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendD", +function(d){ +{ +var sf = "" + d; +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0) +sf += ".0" ; +this.s += sf; +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendSB", +function(buf){ +{ +this.s += buf.s; +}return this; +}, "JU.SB"); +Clazz_defineMethod(c$, "appendO", +function(data){ +if (data != null) { +{ +this.s += data.toString(); +}}return this; +}, "~O"); +Clazz_defineMethod(c$, "appendCB", +function(cb, off, len){ +{ +this.s += cb.slice(off,off+len).join(""); +}}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +{ +return this.s; +}}); +Clazz_defineMethod(c$, "length", +function(){ +{ +return this.s.length; +}}); +Clazz_defineMethod(c$, "indexOf", +function(s){ +{ +return this.s.indexOf(s); +}}, "~S"); +Clazz_defineMethod(c$, "charAt", +function(i){ +{ +return this.s.charAt(i); +}}, "~N"); +Clazz_defineMethod(c$, "charCodeAt", +function(i){ +{ +return this.s.charCodeAt(i); +}}, "~N"); +Clazz_defineMethod(c$, "setLength", +function(n){ +{ +this.s = this.s.substring(0, n); +}}, "~N"); +Clazz_defineMethod(c$, "lastIndexOf", +function(s){ +{ +return this.s.lastIndexOf(s); +}}, "~S"); +Clazz_defineMethod(c$, "indexOf2", +function(s, i){ +{ +return this.s.indexOf(s, i); +}}, "~S,~N"); +Clazz_defineMethod(c$, "substring", +function(i){ +{ +return this.s.substring(i); +}}, "~N"); +Clazz_defineMethod(c$, "substring2", +function(i, j){ +{ +return this.s.substring(i, j); +}}, "~N,~N"); +Clazz_defineMethod(c$, "toBytes", +function(off, len){ +if (len == 0) return Clazz_newByteArray (0, 0); +var cs; +{ +cs = "UTF-8"; +}return (len > 0 ? this.substring2(off, off + len) : off == 0 ? this.toString() : this.substring2(off, this.length() - off)).getBytes(cs); +}, "~N,~N"); +Clazz_defineMethod(c$, "replace", +function(start, end, str){ +{ +this.s = this.s.substring(0, start) + str + this.s.substring(end); +}}, "~N,~N,~S"); +Clazz_defineMethod(c$, "insert", +function(offset, str){ +this.replace(offset, offset, str); +}, "~N,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.JSONEncodable"], "JU.T3", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +Clazz_instantialize(this, arguments);}, JU, "T3", null, [javajs.api.JSONEncodable, java.io.Serializable]); +Clazz_defineMethod(c$, "set", +function(x, y, z){ +this.x = x; +this.y = y; +this.z = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setA", +function(t){ +this.x = t[0]; +this.y = t[1]; +this.z = t[2]; +}, "~A"); +Clazz_defineMethod(c$, "setT", +function(t1){ +this.x = t1.x; +this.y = t1.y; +this.z = t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "add2", +function(t1, t2){ +this.x = t1.x + t2.x; +this.y = t1.y + t2.y; +this.z = t1.z + t2.z; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "add", +function(t1){ +this.x += t1.x; +this.y += t1.y; +this.z += t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "distanceSquared", +function(p1){ +var dx = this.x - p1.x; +var dy = this.y - p1.y; +var dz = this.z - p1.z; +return (dx * dx + dy * dy + dz * dz); +}, "JU.T3"); +Clazz_defineMethod(c$, "distance", +function(p1){ +return Math.sqrt(this.distanceSquared(p1)); +}, "JU.T3"); +Clazz_defineMethod(c$, "sub2", +function(t1, t2){ +this.x = t1.x - t2.x; +this.y = t1.y - t2.y; +this.z = t1.z - t2.z; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "sub", +function(t1){ +this.x -= t1.x; +this.y -= t1.y; +this.z -= t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "scale", +function(s){ +this.x *= s; +this.y *= s; +this.z *= s; +}, "~N"); +Clazz_defineMethod(c$, "add3", +function(a, b, c){ +this.x += a; +this.y += b; +this.z += c; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "scaleT", +function(p){ +this.x *= p.x; +this.y *= p.y; +this.z *= p.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "scaleAdd2", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3,JU.T3"); +Clazz_defineMethod(c$, "ave", +function(a, b){ +this.x = (a.x + b.x) / 2; +this.y = (a.y + b.y) / 2; +this.z = (a.z + b.z) / 2; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "dot", +function(v){ +return this.x * v.x + this.y * v.y + this.z * v.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "lengthSquared", +function(){ +return this.x * this.x + this.y * this.y + this.z * this.z; +}); +Clazz_defineMethod(c$, "length", +function(){ +return Math.sqrt(this.lengthSquared()); +}); +Clazz_defineMethod(c$, "normalize", +function(){ +var d = this.length(); +this.x /= d; +this.y /= d; +this.z /= d; +}); +Clazz_defineMethod(c$, "cross", +function(v1, v2){ +this.set(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x); +}, "JU.T3,JU.T3"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var bits = 1; +bits = 31 * bits + JU.T3.floatToIntBits(this.x); +bits = 31 * bits + JU.T3.floatToIntBits(this.y); +bits = 31 * bits + JU.T3.floatToIntBits(this.z); +return (bits ^ (bits >> 32)); +}); +c$.floatToIntBits = Clazz_defineMethod(c$, "floatToIntBits", +function(x){ +return (x == 0 ? 0 : Float.floatToIntBits(x)); +}, "~N"); +Clazz_overrideMethod(c$, "equals", +function(t1){ +if (!(Clazz_instanceOf(t1,"JU.T3"))) return false; +var t2 = t1; +return (this.x == t2.x && this.y == t2.y && this.z == t2.z); +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "{" + this.x + ", " + this.y + ", " + this.z + "}"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + "," + this.y + "," + this.z + "]"; +}); +Clazz_defineMethod(c$, "setP", +function(t){ +this.set(t.x, t.y, t.z); +return this; +}, "JU.T3"); +Clazz_defineMethod(c$, "putP", +function(t){ +t.set(this.x, this.y, this.z); +return t; +}, "JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +Clazz_instantialize(this, arguments);}, JU, "T3i", null, java.io.Serializable); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(x, y, z){ +this.x = x; +this.y = y; +this.z = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setT", +function(t1){ +this.x = t1.x; +this.y = t1.y; +this.z = t1.z; +}, "JU.T3i"); +Clazz_defineMethod(c$, "add", +function(t){ +this.x += t.x; +this.y += t.y; +this.z += t.z; +}, "JU.T3i"); +Clazz_defineMethod(c$, "scaleAdd", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3i,JU.T3i"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.x ^ this.y ^ this.z; +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.T3i"))) return false; +var t = o; +return (this.x == t.x && this.y == t.y && this.z == t.z); +}, "~O"); +Clazz_defineMethod(c$, "asString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ")"; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.asString(); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.T4", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.w = 0; +Clazz_instantialize(this, arguments);}, JU, "T4", JU.T3); +Clazz_defineMethod(c$, "set4", +function(x, y, z, w){ +this.x = x; +this.y = y; +this.z = z; +this.w = w; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "scale4", +function(s){ +this.scale(s); +this.w *= s; +}, "~N"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.x) ^ JU.T3.floatToIntBits(this.y) ^ JU.T3.floatToIntBits(this.z) ^ JU.T3.floatToIntBits(this.w); +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.T4"))) return false; +var t = o; +return (this.x == t.x && this.y == t.y && this.z == t.z && this.w == t.w); +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + ")"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.V3", null, function(){ +var c$ = Clazz_declareType(JU, "V3", JU.T3); +/*LV!1824 unnec constructor*/c$.newV = Clazz_defineMethod(c$, "newV", +function(t){ +return JU.V3.new3(t.x, t.y, t.z); +}, "JU.T3"); +c$.newVsub = Clazz_defineMethod(c$, "newVsub", +function(t1, t2){ +return JU.V3.new3(t1.x - t2.x, t1.y - t2.y, t1.z - t2.z); +}, "JU.T3,JU.T3"); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var v = new JU.V3(); +v.x = x; +v.y = y; +v.z = z; +return v; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "angle", +function(v1){ +var xx = this.y * v1.z - this.z * v1.y; +var yy = this.z * v1.x - this.x * v1.z; +var zz = this.x * v1.y - this.y * v1.x; +var cross = Math.sqrt(xx * xx + yy * yy + zz * zz); +return Math.abs(Math.atan2(cross, this.dot(v1))); +}, "JU.V3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericBinaryDocument", javajs.api.GenericBinaryDocumentReader); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericBinaryDocumentReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericZipTools"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericLineReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +(function(){ +var c$ = Clazz_declareInterface(javajs.api, "GenericCifDataParser"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +(function(){ +var c$ = Clazz_declareType(javajs.api, "Interface", null); +c$.getInterface = Clazz_defineMethod(c$, "getInterface", +function(name){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.data = null; +Clazz_instantialize(this, arguments);}, JU, "BArray", null); +Clazz_makeConstructor(c$, +function(data){ +this.data = data; +}, "~A"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (Clazz_instanceOf(o,"JU.BArray")) { +var d = (o).data; +if (d.length == this.data.length) { +for (var i = 0; i < d.length; i++) if (d[i] != this.data[i]) return false; + +return true; +}}return false; +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.data.hashCode(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return String.instantialize(this.data); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.cchBuf = 0; +this.ichCurrent = 0; +Clazz_instantialize(this, arguments);}, JU, "LimitedLineReader", null); +Clazz_makeConstructor(c$, +function(bufferedReader, readLimit){ +bufferedReader.mark(readLimit + 1); +this.buf = Clazz_newCharArray (readLimit, '\0'); +this.cchBuf = Math.max(bufferedReader.read(this.buf, 0, readLimit), 0); +this.ichCurrent = 0; +bufferedReader.reset(); +}, "java.io.BufferedReader,~N"); +Clazz_defineMethod(c$, "getHeader", +function(n){ +return (n == 0 ? String.instantialize(this.buf) : String.instantialize(this.buf, 0, Math.min(this.cchBuf, n))); +}, "~N"); +Clazz_defineMethod(c$, "readLineWithNewline", +function(){ +while (this.ichCurrent < this.cchBuf) { +var ichBeginningOfLine = this.ichCurrent; +var ch = String.fromCharCode(0); +while (this.ichCurrent < this.cchBuf && (ch = this.buf[this.ichCurrent++]) != '\r' && ch != '\n') { +} +if (ch == '\r' && this.ichCurrent < this.cchBuf && this.buf[this.ichCurrent] == '\n') ++this.ichCurrent; +var cchLine = this.ichCurrent - ichBeginningOfLine; +if (this.buf[ichBeginningOfLine] == '#') continue; +return String.instantialize(this.buf, ichBeginningOfLine, cchLine); +} +return ""; +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.a = null; +this.m = 0; +this.n = 0; +if (!Clazz_isClassDefined("JU.Matrix.LUDecomp")) { +JU.Matrix.$Matrix$LUDecomp$ (); +} +Clazz_instantialize(this, arguments);}, JU, "Matrix", null, Cloneable); +Clazz_makeConstructor(c$, +function(a, m, n){ +this.a = (a == null ? Clazz_newDoubleArray (m, n, 0) : a); +this.m = m; +this.n = n; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "getRowDimension", +function(){ +return this.m; +}); +Clazz_defineMethod(c$, "getColumnDimension", +function(){ +return this.n; +}); +Clazz_defineMethod(c$, "getArray", +function(){ +return this.a; +}); +Clazz_defineMethod(c$, "getArrayCopy", +function(){ +var x = Clazz_newDoubleArray (this.m, this.n, 0); +for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) x[i][j] = this.a[i][j]; + + +return x; +}); +Clazz_defineMethod(c$, "copy", +function(){ +var x = new JU.Matrix(null, this.m, this.n); +var c = x.a; +for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) c[i][j] = this.a[i][j]; + + +return x; +}); +Clazz_overrideMethod(c$, "clone", +function(){ +return this.copy(); +}); +Clazz_defineMethod(c$, "getSubmatrix", +function(i0, j0, nrows, ncols){ +var x = new JU.Matrix(null, nrows, ncols); +var xa = x.a; +for (var i = nrows; --i >= 0; ) for (var j = ncols; --j >= 0; ) xa[i][j] = this.a[i0 + i][j0 + j]; + + +return x; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getMatrixSelected", +function(r, n){ +var x = new JU.Matrix(null, r.length, n); +var xa = x.a; +for (var i = r.length; --i >= 0; ) { +var b = this.a[r[i]]; +for (var j = n; --j >= 0; ) xa[i][j] = b[j]; + +} +return x; +}, "~A,~N"); +Clazz_defineMethod(c$, "transpose", +function(){ +var x = new JU.Matrix(null, this.n, this.m); +var c = x.a; +for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) c[j][i] = this.a[i][j]; + + +return x; +}); +Clazz_defineMethod(c$, "add", +function(b){ +return this.scaleAdd(b, 1); +}, "JU.Matrix"); +Clazz_defineMethod(c$, "sub", +function(b){ +return this.scaleAdd(b, -1); +}, "JU.Matrix"); +Clazz_defineMethod(c$, "scaleAdd", +function(b, scale){ +var x = new JU.Matrix(null, this.m, this.n); +var xa = x.a; +var ba = b.a; +for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) xa[i][j] = ba[i][j] * scale + this.a[i][j]; + + +return x; +}, "JU.Matrix,~N"); +Clazz_defineMethod(c$, "mul", +function(b){ +if (b.m != this.n) return null; +var x = new JU.Matrix(null, this.m, b.n); +var xa = x.a; +var ba = b.a; +for (var j = b.n; --j >= 0; ) for (var i = this.m; --i >= 0; ) { +var arowi = this.a[i]; +var s = 0; +for (var k = this.n; --k >= 0; ) s += arowi[k] * ba[k][j]; + +xa[i][j] = s; +} + +return x; +}, "JU.Matrix"); +Clazz_defineMethod(c$, "inverse", +function(){ +return Clazz_innerTypeInstance(JU.Matrix.LUDecomp, this, null, this.m, this.n).solve(JU.Matrix.identity(this.m, this.m), this.n); +}); +Clazz_defineMethod(c$, "trace", +function(){ +var t = 0; +for (var i = Math.min(this.m, this.n); --i >= 0; ) t += this.a[i][i]; + +return t; +}); +c$.identity = Clazz_defineMethod(c$, "identity", +function(m, n){ +var x = new JU.Matrix(null, m, n); +var xa = x.a; +for (var i = Math.min(m, n); --i >= 0; ) xa[i][i] = 1; + +return x; +}, "~N,~N"); +Clazz_defineMethod(c$, "getRotation", +function(){ +return this.getSubmatrix(0, 0, this.m - 1, this.n - 1); +}); +Clazz_defineMethod(c$, "getTranslation", +function(){ +return this.getSubmatrix(0, this.n - 1, this.m - 1, 1); +}); +c$.newT = Clazz_defineMethod(c$, "newT", +function(r, asColumn){ +return (asColumn ? new JU.Matrix( Clazz_newArray(-1, [ Clazz_newDoubleArray(-1, [r.x]), Clazz_newDoubleArray(-1, [r.y]), Clazz_newDoubleArray(-1, [r.z])]), 3, 1) : new JU.Matrix( Clazz_newArray(-1, [ Clazz_newDoubleArray(-1, [r.x, r.y, r.z])]), 1, 3)); +}, "JU.T3,~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +var s = "[\n"; +for (var i = 0; i < this.m; i++) { +s += " ["; +for (var j = 0; j < this.n; j++) s += " " + this.a[i][j]; + +s += "]\n"; +} +s += "]"; +return s; +}); +c$.$Matrix$LUDecomp$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.LU = null; +this.piv = null; +this.pivsign = 0; +Clazz_instantialize(this, arguments);}, JU.Matrix, "LUDecomp", null); +Clazz_makeConstructor(c$, +function(m, n){ +this.LU = this.b$["JU.Matrix"].getArrayCopy(); +this.piv = Clazz_newIntArray (m, 0); +for (var i = m; --i >= 0; ) this.piv[i] = i; + +this.pivsign = 1; +var LUrowi; +var LUcolj = Clazz_newDoubleArray (m, 0); +for (var j = 0; j < n; j++) { +for (var i = m; --i >= 0; ) LUcolj[i] = this.LU[i][j]; + +for (var i = m; --i >= 0; ) { +LUrowi = this.LU[i]; +var kmax = Math.min(i, j); +var s = 0.0; +for (var k = kmax; --k >= 0; ) s += LUrowi[k] * LUcolj[k]; + +LUrowi[j] = LUcolj[i] -= s; +} +var p = j; +for (var i = m; --i > j; ) if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) p = i; + +if (p != j) { +for (var k = n; --k >= 0; ) { +var t = this.LU[p][k]; +this.LU[p][k] = this.LU[j][k]; +this.LU[j][k] = t; +} +var k = this.piv[p]; +this.piv[p] = this.piv[j]; +this.piv[j] = k; +this.pivsign = -this.pivsign; +}if ( new Boolean (j < m & this.LU[j][j] != 0.0).valueOf()) for (var i = m; --i > j; ) this.LU[i][j] /= this.LU[j][j]; + +} +}, "~N,~N"); +Clazz_defineMethod(c$, "solve", +function(b, n){ +for (var j = 0; j < n; j++) if (this.LU[j][j] == 0) return null; + +var nx = b.n; +var x = b.getMatrixSelected(this.piv, nx); +var a = x.a; +for (var k = 0; k < n; k++) for (var i = k + 1; i < n; i++) for (var j = 0; j < nx; j++) a[i][j] -= a[k][j] * this.LU[i][k]; + + + +for (var k = n; --k >= 0; ) { +for (var j = nx; --j >= 0; ) a[k][j] /= this.LU[k][k]; + +for (var i = k; --i >= 0; ) for (var j = nx; --j >= 0; ) a[i][j] -= a[k][j] * this.LU[i][k]; + + +} +return x; +}, "JU.Matrix,~N"); +/*eoif4*/})(); +}; +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P4"], "JU.Quat", ["JU.A4", "$.M3", "$.V3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.q0 = 0; +this.q1 = 0; +this.q2 = 0; +this.q3 = 0; +this.mat = null; +Clazz_instantialize(this, arguments);}, JU, "Quat", null); +Clazz_makeConstructor(c$, +function(){ +this.q0 = 1; +}); +c$.newQ = Clazz_defineMethod(c$, "newQ", +function(q){ +var q1 = new JU.Quat(); +q1.set(q); +return q1; +}, "JU.Quat"); +c$.newVA = Clazz_defineMethod(c$, "newVA", +function(v, theta){ +var q = new JU.Quat(); +q.setTA(v, theta); +return q; +}, "JU.T3,~N"); +c$.newM = Clazz_defineMethod(c$, "newM", +function(mat){ +var q = new JU.Quat(); +q.setM(JU.M3.newM3(mat)); +return q; +}, "JU.M3"); +c$.newAA = Clazz_defineMethod(c$, "newAA", +function(a){ +var q = new JU.Quat(); +q.setAA(a); +return q; +}, "JU.A4"); +c$.newP4 = Clazz_defineMethod(c$, "newP4", +function(pt){ +var q = new JU.Quat(); +q.setP4(pt); +return q; +}, "JU.P4"); +c$.new4 = Clazz_defineMethod(c$, "new4", +function(q1, q2, q3, q0){ +var q = new JU.Quat(); +if (q0 < -1) { +q.q0 = -1; +return q; +}if (q0 > 1) { +q.q0 = 1; +return q; +}q.q0 = q0; +q.q1 = q1; +q.q2 = q2; +q.q3 = q3; +return q; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "set", +function(q){ +this.q0 = q.q0; +this.q1 = q.q1; +this.q2 = q.q2; +this.q3 = q.q3; +}, "JU.Quat"); +Clazz_defineMethod(c$, "setP4", +function(pt){ +var factor = (pt == null ? 0 : pt.distance4(JU.Quat.qZero)); +if (factor == 0) { +this.q0 = 1; +return; +}this.q0 = pt.w / factor; +this.q1 = pt.x / factor; +this.q2 = pt.y / factor; +this.q3 = pt.z / factor; +}, "JU.P4"); +Clazz_defineMethod(c$, "setTA", +function(pt, theta){ +if (pt.x == 0 && pt.y == 0 && pt.z == 0) { +this.q0 = 1; +return; +}var fact = (Math.sin(theta / 2 * 0.017453292519943295) / Math.sqrt(pt.x * pt.x + pt.y * pt.y + pt.z * pt.z)); +this.q0 = (Math.cos(theta / 2 * 0.017453292519943295)); +this.q1 = (pt.x * fact); +this.q2 = (pt.y * fact); +this.q3 = (pt.z * fact); +}, "JU.T3,~N"); +Clazz_defineMethod(c$, "setAA", +function(a){ +var aa = JU.A4.newAA(a); +if (aa.angle == 0) aa.y = 1; +this.setM( new JU.M3().setAA(aa)); +}, "JU.A4"); +Clazz_defineMethod(c$, "setM", +function(mat){ +this.mat = mat; +var trace = mat.m00 + mat.m11 + mat.m22; +var temp; +var w; +var x; +var y; +var z; +if (trace >= 0.5) { +w = Math.sqrt(1.0 + trace); +x = (mat.m21 - mat.m12) / w; +y = (mat.m02 - mat.m20) / w; +z = (mat.m10 - mat.m01) / w; +} else if ((temp = mat.m00 + mat.m00 - trace) >= 0.5) { +x = Math.sqrt(1.0 + temp); +w = (mat.m21 - mat.m12) / x; +y = (mat.m10 + mat.m01) / x; +z = (mat.m20 + mat.m02) / x; +} else if ((temp = mat.m11 + mat.m11 - trace) >= 0.5 || mat.m11 > mat.m22) { +y = Math.sqrt(1.0 + temp); +w = (mat.m02 - mat.m20) / y; +x = (mat.m10 + mat.m01) / y; +z = (mat.m21 + mat.m12) / y; +} else { +z = Math.sqrt(1.0 + mat.m22 + mat.m22 - trace); +w = (mat.m10 - mat.m01) / z; +x = (mat.m20 + mat.m02) / z; +y = (mat.m21 + mat.m12) / z; +}this.q0 = (w * 0.5); +this.q1 = (x * 0.5); +this.q2 = (y * 0.5); +this.q3 = (z * 0.5); +}, "JU.M3"); +Clazz_defineMethod(c$, "setRef", +function(qref){ +if (qref == null) { +this.mul(this.getFixFactor()); +return; +}if (this.dot(qref) >= 0) return; +this.q0 *= -1; +this.q1 *= -1; +this.q2 *= -1; +this.q3 *= -1; +}, "JU.Quat"); +c$.getQuaternionFrame = Clazz_defineMethod(c$, "getQuaternionFrame", +function(center, x, xy){ +var vA = JU.V3.newV(x); +var vB = JU.V3.newV(xy); +if (center != null) { +vA.sub(center); +vB.sub(center); +}return JU.Quat.getQuaternionFrameV(vA, vB, null, false); +}, "JU.P3,JU.T3,JU.T3"); +c$.getQuaternionFrameV = Clazz_defineMethod(c$, "getQuaternionFrameV", +function(vA, vB, vC, yBased){ +if (vC == null) { +vC = new JU.V3(); +vC.cross(vA, vB); +if (yBased) vA.cross(vB, vC); +}var vBprime = new JU.V3(); +vBprime.cross(vC, vA); +vA.normalize(); +vBprime.normalize(); +vC.normalize(); +var mat = new JU.M3(); +mat.setColumnV(0, vA); +mat.setColumnV(1, vBprime); +mat.setColumnV(2, vC); +var q = JU.Quat.newM(mat); +return q; +}, "JU.V3,JU.V3,JU.V3,~B"); +Clazz_defineMethod(c$, "getMatrix", +function(){ +if (this.mat == null) this.setMatrix(); +return this.mat; +}); +Clazz_defineMethod(c$, "setMatrix", +function(){ +this.mat = new JU.M3(); +this.mat.m00 = this.q0 * this.q0 + this.q1 * this.q1 - this.q2 * this.q2 - this.q3 * this.q3; +this.mat.m01 = 2 * this.q1 * this.q2 - 2 * this.q0 * this.q3; +this.mat.m02 = 2 * this.q1 * this.q3 + 2 * this.q0 * this.q2; +this.mat.m10 = 2 * this.q1 * this.q2 + 2 * this.q0 * this.q3; +this.mat.m11 = this.q0 * this.q0 - this.q1 * this.q1 + this.q2 * this.q2 - this.q3 * this.q3; +this.mat.m12 = 2 * this.q2 * this.q3 - 2 * this.q0 * this.q1; +this.mat.m20 = 2 * this.q1 * this.q3 - 2 * this.q0 * this.q2; +this.mat.m21 = 2 * this.q2 * this.q3 + 2 * this.q0 * this.q1; +this.mat.m22 = this.q0 * this.q0 - this.q1 * this.q1 - this.q2 * this.q2 + this.q3 * this.q3; +}); +Clazz_defineMethod(c$, "add", +function(x){ +return JU.Quat.newVA(this.getNormal(), this.getTheta() + x); +}, "~N"); +Clazz_defineMethod(c$, "mul", +function(x){ +return (x == 1 ? JU.Quat.new4(this.q1, this.q2, this.q3, this.q0) : JU.Quat.newVA(this.getNormal(), this.getTheta() * x)); +}, "~N"); +Clazz_defineMethod(c$, "mulQ", +function(p){ +return JU.Quat.new4(this.q0 * p.q1 + this.q1 * p.q0 + this.q2 * p.q3 - this.q3 * p.q2, this.q0 * p.q2 + this.q2 * p.q0 + this.q3 * p.q1 - this.q1 * p.q3, this.q0 * p.q3 + this.q3 * p.q0 + this.q1 * p.q2 - this.q2 * p.q1, this.q0 * p.q0 - this.q1 * p.q1 - this.q2 * p.q2 - this.q3 * p.q3); +}, "JU.Quat"); +Clazz_defineMethod(c$, "divLeft", +function(p){ +return this.inv().mulQ(p); +}, "JU.Quat"); +Clazz_defineMethod(c$, "dot", +function(q){ +return this.q0 * q.q0 + this.q1 * q.q1 + this.q2 * q.q2 + this.q3 * q.q3; +}, "JU.Quat"); +Clazz_defineMethod(c$, "inv", +function(){ +return JU.Quat.new4(-this.q1, -this.q2, -this.q3, this.q0); +}); +Clazz_defineMethod(c$, "negate", +function(){ +return JU.Quat.new4(-this.q1, -this.q2, -this.q3, -this.q0); +}); +Clazz_defineMethod(c$, "getFixFactor", +function(){ +return (this.q0 < 0 || this.q0 == 0 && (this.q1 < 0 || this.q1 == 0 && (this.q2 < 0 || this.q2 == 0 && this.q3 < 0)) ? -1 : 1); +}); +Clazz_defineMethod(c$, "getVector", +function(i){ +return this.getVectorScaled(i, 1); +}, "~N"); +Clazz_defineMethod(c$, "getVectorScaled", +function(i, scale){ +if (i == -1) { +scale *= this.getFixFactor(); +return JU.V3.new3(this.q1 * scale, this.q2 * scale, this.q3 * scale); +}if (this.mat == null) this.setMatrix(); +var v = new JU.V3(); +this.mat.getColumnV(i, v); +if (scale != 1) v.scale(scale); +return v; +}, "~N,~N"); +Clazz_defineMethod(c$, "getNormal", +function(){ +var v = JU.Quat.getRawNormal(this); +v.scale(this.getFixFactor()); +return v; +}); +c$.getRawNormal = Clazz_defineMethod(c$, "getRawNormal", +function(q){ +var v = JU.V3.new3(q.q1, q.q2, q.q3); +if (v.length() == 0) return JU.V3.new3(0, 0, 1); +v.normalize(); +return v; +}, "JU.Quat"); +Clazz_defineMethod(c$, "getTheta", +function(){ +return (Math.acos(Math.abs(this.q0)) * 2 * 180 / 3.141592653589793); +}); +Clazz_defineMethod(c$, "getThetaRadians", +function(){ +return (Math.acos(Math.abs(this.q0)) * 2); +}); +Clazz_defineMethod(c$, "getNormalDirected", +function(v0){ +var v = this.getNormal(); +if (v.x * v0.x + v.y * v0.y + v.z * v0.z < 0) { +v.scale(-1); +}return v; +}, "JU.V3"); +Clazz_defineMethod(c$, "get3dProjection", +function(v3d){ +v3d.set(this.q1, this.q2, this.q3); +return v3d; +}, "JU.V3"); +Clazz_defineMethod(c$, "getThetaDirected", +function(axisAngle){ +var theta = this.getTheta(); +var v = this.getNormal(); +if (axisAngle.x * this.q1 + axisAngle.y * this.q2 + axisAngle.z * this.q3 < 0) { +v.scale(-1); +theta = -theta; +}axisAngle.set4(v.x, v.y, v.z, theta); +return axisAngle; +}, "JU.P4"); +Clazz_defineMethod(c$, "getThetaDirectedV", +function(vector){ +var theta = this.getTheta(); +var v = this.getNormal(); +if (vector.x * this.q1 + vector.y * this.q2 + vector.z * this.q3 < 0) { +v.scale(-1); +theta = -theta; +}return theta; +}, "JU.V3"); +Clazz_defineMethod(c$, "toPoint4f", +function(){ +return JU.P4.new4(this.q1, this.q2, this.q3, this.q0); +}); +Clazz_defineMethod(c$, "toAxisAngle4f", +function(){ +var theta = 2 * Math.acos(Math.abs(this.q0)); +var sinTheta2 = Math.sin(theta / 2); +var v = this.getNormal(); +if (sinTheta2 < 0) { +v.scale(-1); +theta = 3.141592653589793 - theta; +}return JU.A4.newVA(v, theta); +}); +Clazz_defineMethod(c$, "transform2", +function(pt, ptNew){ +if (this.mat == null) this.setMatrix(); +this.mat.rotate2(pt, ptNew); +return ptNew; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "leftDifference", +function(q2){ +var q2adjusted = (this.dot(q2) < 0 ? q2.negate() : q2); +return this.inv().mulQ(q2adjusted); +}, "JU.Quat"); +Clazz_defineMethod(c$, "rightDifference", +function(q2){ +var q2adjusted = (this.dot(q2) < 0 ? q2.negate() : q2); +return this.mulQ(q2adjusted.inv()); +}, "JU.Quat"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "{" + this.q1 + " " + this.q2 + " " + this.q3 + " " + this.q0 + "}"; +}); +Clazz_defineMethod(c$, "div", +function(p){ +return this.mulQ(p.inv()); +}, "JU.Quat"); +c$.arrayDiv = Clazz_defineMethod(c$, "arrayDiv", +function(data1, data2, nMax, isRelative){ +var n; +if (data1 == null || data2 == null || (n = Math.min(data1.length, data2.length)) == 0) return null; +if (nMax > 0 && n > nMax) n = nMax; +var dqs = new Array(n); +for (var i = 0; i < n; i++) { +if (data1[i] == null || data2[i] == null) return null; +dqs[i] = (isRelative ? data1[i].divLeft(data2[i]) : data1[i].div(data2[i])); +} +return dqs; +}, "~A,~A,~N,~B"); +c$.sphereMean = Clazz_defineMethod(c$, "sphereMean", +function(data, retStddev, criterion){ +if (data == null || data.length == 0) return new JU.Quat(); +if (retStddev == null) retStddev = Clazz_newFloatArray (1, 0); +if (data.length == 1) { +retStddev[0] = 0; +return JU.Quat.newQ(data[0]); +}var diff = 3.4028235E38; +var lastStddev = 3.4028235E38; +var qMean = JU.Quat.simpleAverage(data); +var maxIter = 100; +var iter = 0; +while (diff > criterion && lastStddev != 0 && iter < maxIter) { +qMean = JU.Quat.newMean(data, qMean); +retStddev[0] = JU.Quat.stdDev(data, qMean); +diff = Math.abs(retStddev[0] - lastStddev); +lastStddev = retStddev[0]; +} +return qMean; +}, "~A,~A,~N"); +c$.simpleAverage = Clazz_defineMethod(c$, "simpleAverage", +function(ndata){ +var mean = JU.V3.new3(0, 0, 1); +var v = ndata[0].getNormal(); +mean.add(v); +for (var i = ndata.length; --i >= 0; ) mean.add(ndata[i].getNormalDirected(mean)); + +mean.sub(v); +mean.normalize(); +var f = 0; +for (var i = ndata.length; --i >= 0; ) f += Math.abs(ndata[i].get3dProjection(v).dot(mean)); + +if (f != 0) mean.scale(f / ndata.length); +f = Math.sqrt(1 - mean.lengthSquared()); +if (Float.isNaN(f)) f = 0; +return JU.Quat.newP4(JU.P4.new4(mean.x, mean.y, mean.z, f)); +}, "~A"); +c$.newMean = Clazz_defineMethod(c$, "newMean", +function(data, mean){ +var sum = new JU.V3(); +var v; +var q; +var dq; +for (var i = data.length; --i >= 0; ) { +q = data[i]; +dq = q.div(mean); +v = dq.getNormal(); +v.scale(dq.getTheta()); +sum.add(v); +} +sum.scale(1 / data.length); +var dqMean = JU.Quat.newVA(sum, sum.length()); +return dqMean.mulQ(mean); +}, "~A,JU.Quat"); +c$.stdDev = Clazz_defineMethod(c$, "stdDev", +function(data, mean){ +var sum2 = 0; +var n = data.length; +for (var i = n; --i >= 0; ) { +var theta = data[i].div(mean).getTheta(); +sum2 += theta * theta; +} +return Math.sqrt(sum2 / n); +}, "~A,JU.Quat"); +Clazz_defineMethod(c$, "getEulerZYZ", +function(){ +var rA; +var rB; +var rG; +if (this.q1 == 0 && this.q2 == 0) { +var theta = this.getTheta(); +return Clazz_newFloatArray(-1, [this.q3 < 0 ? -theta : theta, 0, 0]); +}rA = Math.atan2(2 * (this.q2 * this.q3 + this.q0 * this.q1), 2 * (-this.q1 * this.q3 + this.q0 * this.q2)); +rB = Math.acos(this.q3 * this.q3 - this.q2 * this.q2 - this.q1 * this.q1 + this.q0 * this.q0); +rG = Math.atan2(2 * (this.q2 * this.q3 - this.q0 * this.q1), 2 * (this.q0 * this.q2 + this.q1 * this.q3)); +return Clazz_newFloatArray(-1, [(rA / 0.017453292519943295), (rB / 0.017453292519943295), (rG / 0.017453292519943295)]); +}); +Clazz_defineMethod(c$, "getEulerZXZ", +function(){ +var rA; +var rB; +var rG; +if (this.q1 == 0 && this.q2 == 0) { +var theta = this.getTheta(); +return Clazz_newFloatArray(-1, [this.q3 < 0 ? -theta : theta, 0, 0]); +}rA = Math.atan2(2 * (this.q1 * this.q3 - this.q0 * this.q2), 2 * (this.q0 * this.q1 + this.q2 * this.q3)); +rB = Math.acos(this.q3 * this.q3 - this.q2 * this.q2 - this.q1 * this.q1 + this.q0 * this.q0); +rG = Math.atan2(2 * (this.q1 * this.q3 + this.q0 * this.q2), 2 * (-this.q2 * this.q3 + this.q0 * this.q1)); +return Clazz_newFloatArray(-1, [(rA / 0.017453292519943295), (rB / 0.017453292519943295), (rG / 0.017453292519943295)]); +}); +c$.qZero = new JU.P4(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.io.BufferedReader", "javajs.api.GenericLineReader"], "JU.Rdr", ["java.io.BufferedInputStream", "$.ByteArrayInputStream", "$.InputStreamReader", "$.StringReader", "JU.AU", "$.Base64", "$.Encoding", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.reader = null; +Clazz_instantialize(this, arguments);}, JU, "Rdr", null, javajs.api.GenericLineReader); +Clazz_makeConstructor(c$, +function(reader){ +this.reader = reader; +}, "java.io.BufferedReader"); +Clazz_overrideMethod(c$, "readNextLine", +function(){ +return this.reader.readLine(); +}); +c$.readCifData = Clazz_defineMethod(c$, "readCifData", +function(parser, br){ +return parser.set(null, br, false).getAllCifData(); +}, "javajs.api.GenericCifDataParser,java.io.BufferedReader"); +c$.fixUTF = Clazz_defineMethod(c$, "fixUTF", +function(bytes){ +var encoding = JU.Rdr.getUTFEncoding(bytes); +if (encoding !== JU.Encoding.NONE) { +try { +var s = String.instantialize(bytes, encoding.name().$replace('_', '-')); +switch (encoding) { +case JU.Encoding.UTF8: +case JU.Encoding.UTF_16BE: +case JU.Encoding.UTF_16LE: +s = s.substring(1); +break; +default: +break; +} +return s; +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +System.out.println(e); +} else { +throw e; +} +} +}return String.instantialize(bytes); +}, "~A"); +c$.getUTFEncoding = Clazz_defineMethod(c$, "getUTFEncoding", +function(bytes){ +if (bytes.length >= 3 && (bytes[0] & 0xFF) == 0xEF && (bytes[1] & 0xFF) == 0xBB && (bytes[2] & 0xFF) == 0xBF) return JU.Encoding.UTF8; +if (bytes.length >= 4 && (bytes[0] & 0xFF) == 0 && (bytes[1] & 0xFF) == 0 && (bytes[2] & 0xFF) == 0xFE && (bytes[3] & 0xFF) == 0xFF) return JU.Encoding.UTF_32BE; +if (bytes.length >= 4 && (bytes[0] & 0xFF) == 0xFF && (bytes[1] & 0xFF) == 0xFE && (bytes[2] & 0xFF) == 0 && (bytes[3] & 0xFF) == 0) return JU.Encoding.UTF_32LE; +if (bytes.length >= 2 && (bytes[0] & 0xFF) == 0xFF && (bytes[1] & 0xFF) == 0xFE) return JU.Encoding.UTF_16LE; +if (bytes.length >= 2 && (bytes[0] & 0xFF) == 0xFE && (bytes[1] & 0xFF) == 0xFF) return JU.Encoding.UTF_16BE; +return JU.Encoding.NONE; +}, "~A"); +c$.getUTFEncodingForStream = Clazz_defineMethod(c$, "getUTFEncodingForStream", +function(is){ +{ +is.resetStream(); +}var abMagic = Clazz_newByteArray (4, 0); +abMagic[3] = 1; +try { +is.mark(5); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return JU.Encoding.NONE; +} else { +throw e; +} +} +is.read(abMagic, 0, 4); +is.reset(); +return JU.Rdr.getUTFEncoding(abMagic); +}, "java.io.BufferedInputStream"); +c$.isBase64 = Clazz_defineMethod(c$, "isBase64", +function(sb){ +return (sb.indexOf(";base64,") == 0); +}, "JU.SB"); +c$.isCompoundDocumentS = Clazz_defineMethod(c$, "isCompoundDocumentS", +function(is){ +return JU.Rdr.isCompoundDocumentB(JU.Rdr.getMagic(is, 8)); +}, "java.io.InputStream"); +c$.isCompoundDocumentB = Clazz_defineMethod(c$, "isCompoundDocumentB", +function(bytes){ +return (bytes.length >= 8 && (bytes[0] & 0xFF) == 0xD0 && (bytes[1] & 0xFF) == 0xCF && (bytes[2] & 0xFF) == 0x11 && (bytes[3] & 0xFF) == 0xE0 && (bytes[4] & 0xFF) == 0xA1 && (bytes[5] & 0xFF) == 0xB1 && (bytes[6] & 0xFF) == 0x1A && (bytes[7] & 0xFF) == 0xE1); +}, "~A"); +c$.isBZip2S = Clazz_defineMethod(c$, "isBZip2S", +function(is){ +return JU.Rdr.isBZip2B(JU.Rdr.getMagic(is, 3)); +}, "java.io.InputStream"); +c$.isGzipS = Clazz_defineMethod(c$, "isGzipS", +function(is){ +return JU.Rdr.isGzipB(JU.Rdr.getMagic(is, 2)); +}, "java.io.InputStream"); +c$.isBZip2B = Clazz_defineMethod(c$, "isBZip2B", +function(bytes){ +return (bytes != null && bytes.length >= 3 && (bytes[0] & 0xFF) == 0x42 && (bytes[1] & 0xFF) == 0x5A && (bytes[2] & 0xFF) == 0x68); +}, "~A"); +c$.isGzipB = Clazz_defineMethod(c$, "isGzipB", +function(bytes){ +return (bytes != null && bytes.length >= 2 && (bytes[0] & 0xFF) == 0x1F && (bytes[1] & 0xFF) == 0x8B); +}, "~A"); +c$.isPickleS = Clazz_defineMethod(c$, "isPickleS", +function(is){ +return JU.Rdr.isPickleB(JU.Rdr.getMagic(is, 2)); +}, "java.io.InputStream"); +c$.isPickleB = Clazz_defineMethod(c$, "isPickleB", +function(bytes){ +return (bytes != null && bytes.length >= 2 && (bytes[0] & 0xFF) == 0x7D && (bytes[1] & 0xFF) == 0x71); +}, "~A"); +c$.isMessagePackS = Clazz_defineMethod(c$, "isMessagePackS", +function(is){ +return JU.Rdr.isMessagePackB(JU.Rdr.getMagic(is, 2)); +}, "java.io.InputStream"); +c$.isMessagePackB = Clazz_defineMethod(c$, "isMessagePackB", +function(bytes){ +var b; +return (bytes != null && bytes.length >= 1 && (((b = bytes[0] & 0xFF)) == 0xDE || (b & 0xE0) == 0x80 && bytes[1] != 0x50)); +}, "~A"); +c$.isPngZipStream = Clazz_defineMethod(c$, "isPngZipStream", +function(is){ +return JU.Rdr.isPngZipB(JU.Rdr.getMagic(is, 55)); +}, "java.io.InputStream"); +c$.isPngZipB = Clazz_defineMethod(c$, "isPngZipB", +function(bytes){ +return (bytes[50] == 0 && bytes[51] == 0x50 && bytes[52] == 0x4E && bytes[53] == 0x47 && bytes[54] == 0x4A); +}, "~A"); +c$.isZipS = Clazz_defineMethod(c$, "isZipS", +function(is){ +return JU.Rdr.isZipB(JU.Rdr.getMagic(is, 4)); +}, "java.io.InputStream"); +c$.isZipB = Clazz_defineMethod(c$, "isZipB", +function(bytes){ +return (bytes.length >= 4 && bytes[0] == 0x50 && bytes[1] == 0x4B && bytes[2] == 0x03 && bytes[3] == 0x04); +}, "~A"); +c$.getMagic = Clazz_defineMethod(c$, "getMagic", +function(is, n){ +var abMagic = (n > 264 ? Clazz_newByteArray (n, 0) : JU.Rdr.b264 == null ? (JU.Rdr.b264 = Clazz_newByteArray (265, 0)) : JU.Rdr.b264); +{ +is.resetStream(); +}try { +abMagic[264] = -1; +is.mark(n + 1); +var i = is.read(abMagic, 0, n); +if (i < n) { +abMagic[0] = abMagic[264] = 0; +}} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +try { +is.reset(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +return abMagic; +}, "java.io.InputStream,~N"); +c$.guessMimeTypeForBytes = Clazz_defineMethod(c$, "guessMimeTypeForBytes", +function(bytes){ +switch (bytes.length < 2 ? -1 : bytes[1]) { +case 0: +return "image/jpg"; +case 0x49: +return "image/gif"; +case 0x4D: +return "image/BMP"; +case 0x50: +return "image/png"; +default: +return "image/unknown"; +} +}, "~A"); +c$.getBIS = Clazz_defineMethod(c$, "getBIS", +function(bytes){ +return new java.io.BufferedInputStream( new java.io.ByteArrayInputStream(bytes)); +}, "~A"); +c$.getBR = Clazz_defineMethod(c$, "getBR", +function(string){ +return new java.io.BufferedReader( new java.io.StringReader(string)); +}, "~S"); +c$.getUnzippedInputStream = Clazz_defineMethod(c$, "getUnzippedInputStream", +function(jzt, bis){ +while (JU.Rdr.isGzipS(bis)) bis = new java.io.BufferedInputStream(jzt.newGZIPInputStream(bis)); + +return bis; +}, "javajs.api.GenericZipTools,java.io.BufferedInputStream"); +c$.getUnzippedInputStreamBZip2 = Clazz_defineMethod(c$, "getUnzippedInputStreamBZip2", +function(jzt, bis){ +while (JU.Rdr.isBZip2S(bis)) bis = new java.io.BufferedInputStream(jzt.newBZip2InputStream(bis)); + +return bis; +}, "javajs.api.GenericZipTools,java.io.BufferedInputStream"); +c$.getBytesFromSB = Clazz_defineMethod(c$, "getBytesFromSB", +function(sb){ +return (JU.Rdr.isBase64(sb) ? JU.Base64.decodeBase64(sb.substring(8)) : sb.toBytes(0, -1)); +}, "JU.SB"); +c$.getStreamAsBytes = Clazz_defineMethod(c$, "getStreamAsBytes", +function(bis, out){ +var buf = Clazz_newByteArray (1024, 0); +var bytes = (out == null ? Clazz_newByteArray (4096, 0) : null); +var len = 0; +var totalLen = 0; +while ((len = bis.read(buf, 0, 1024)) > 0) { +totalLen += len; +if (out == null) { +if (totalLen >= bytes.length) bytes = JU.AU.ensureLengthByte(bytes, totalLen * 2); +System.arraycopy(buf, 0, bytes, totalLen - len, len); +} else { +out.write(buf, 0, len); +}} +bis.close(); +if (out == null) { +return JU.AU.arrayCopyByte(bytes, totalLen); +}return totalLen + " bytes"; +}, "java.io.BufferedInputStream,JU.OC"); +c$.getBufferedReader = Clazz_defineMethod(c$, "getBufferedReader", +function(bis, charSet){ +if (JU.Rdr.getUTFEncodingForStream(bis) === JU.Encoding.NONE) return new JU.Rdr.StreamReader(bis, charSet); +var bytes = JU.Rdr.getLimitedStreamBytes(bis, -1); +bis.close(); +return JU.Rdr.getBR(charSet == null ? JU.Rdr.fixUTF(bytes) : String.instantialize(bytes, charSet)); +}, "java.io.BufferedInputStream,~S"); +c$.getLimitedStreamBytes = Clazz_defineMethod(c$, "getLimitedStreamBytes", +function(is, n){ +var buflen = (n > 0 && n < 1024 ? n : 1024); +var buf = Clazz_newByteArray (buflen, 0); +var bytes = Clazz_newByteArray (n < 0 ? 4096 : n, 0); +var len = 0; +var totalLen = 0; +if (n < 0) n = 2147483647; +while (totalLen < n && (len = is.read(buf, 0, buflen)) > 0) { +totalLen += len; +if (totalLen > bytes.length) bytes = JU.AU.ensureLengthByte(bytes, totalLen * 2); +System.arraycopy(buf, 0, bytes, totalLen - len, len); +if (n != 2147483647 && totalLen + buflen > bytes.length) buflen = bytes.length - totalLen; +} +if (totalLen == bytes.length) return bytes; +buf = Clazz_newByteArray (totalLen, 0); +System.arraycopy(bytes, 0, buf, 0, totalLen); +return buf; +}, "java.io.InputStream,~N"); +c$.streamToUTF8String = Clazz_defineMethod(c$, "streamToUTF8String", +function(bis){ +var data = new Array(1); +try { +JU.Rdr.readAllAsString(JU.Rdr.getBufferedReader(bis, "UTF-8"), -1, true, data, 0); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +return data[0]; +}, "java.io.BufferedInputStream"); +c$.readAllAsString = Clazz_defineMethod(c$, "readAllAsString", +function(br, nBytesMax, allowBinary, data, i){ +try { +var sb = JU.SB.newN(8192); +var line; +if (nBytesMax < 0) { +line = br.readLine(); +if (allowBinary || line != null && line.indexOf('\0') < 0 && (line.length != 4 || (line.charAt(0)).charCodeAt(0) != 65533 || line.indexOf("PNG") != 1)) { +sb.append(line).appendC('\n'); +while ((line = br.readLine()) != null) sb.append(line).appendC('\n'); + +}} else { +var n = 0; +var len; +while (n < nBytesMax && (line = br.readLine()) != null) { +if (nBytesMax - n < (len = line.length) + 1) line = line.substring(0, nBytesMax - n - 1); +sb.append(line).appendC('\n'); +n += len + 1; +} +}br.close(); +data[i] = sb.toString(); +return true; +} catch (ioe) { +if (Clazz_exceptionOf(ioe, Exception)){ +data[i] = ioe.toString(); +return false; +} else { +throw ioe; +} +} +}, "java.io.BufferedReader,~N,~B,~A,~N"); +c$.getPngZipPointAndCount = Clazz_defineMethod(c$, "getPngZipPointAndCount", +function(bis, pt_count){ +bis.mark(75); +try { +var data = JU.Rdr.getLimitedStreamBytes(bis, 74); +bis.reset(); +var pt = 0; +for (var i = 64, f = 1; --i > 54; f *= 10) pt += (data[i] - 48) * f; + +var n = 0; +for (var i = 74, f = 1; --i > 64; f *= 10) n += (data[i] - 48) * f; + +pt_count[0] = pt; +pt_count[1] = n; +} catch (e) { +pt_count[1] = 0; +} +}, "java.io.BufferedInputStream,~A"); +c$.getPngZipStream = Clazz_defineMethod(c$, "getPngZipStream", +function(bis, asNewStream){ +if (!JU.Rdr.isPngZipStream(bis)) return bis; +var data = Clazz_newByteArray (0, 0); +bis.mark(75); +try { +var pt_count = Clazz_newIntArray (2, 0); +JU.Rdr.getPngZipPointAndCount(bis, pt_count); +if (pt_count[1] != 0) { +var pt = pt_count[0]; +while (pt > 0) pt -= bis.skip(pt); + +if (!asNewStream) return bis; +data = JU.Rdr.getLimitedStreamBytes(bis, pt_count[1]); +}} catch (e) { +} finally { +try { +if (asNewStream) bis.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +return JU.Rdr.getBIS(data); +}, "java.io.BufferedInputStream,~B"); +c$.getZipRoot = Clazz_defineMethod(c$, "getZipRoot", +function(fileName){ +var pt = fileName.indexOf("|"); +return (pt < 0 ? fileName : fileName.substring(0, pt)); +}, "~S"); +c$.isTar = Clazz_defineMethod(c$, "isTar", +function(bis){ +var bytes = JU.Rdr.getMagic(bis, 264); +return (bytes[264] == -1 && (bytes[257] & 0xFF) == 0x75 && (bytes[258] & 0xFF) == 0x73 && (bytes[259] & 0xFF) == 0x74 && (bytes[260] & 0xFF) == 0x61 && (bytes[261] & 0xFF) == 0x72); +}, "java.io.BufferedInputStream"); +c$.streamToBytes = Clazz_defineMethod(c$, "streamToBytes", +function(is){ +var bytes = JU.Rdr.getLimitedStreamBytes(is, -1); +is.close(); +return bytes; +}, "java.io.InputStream"); +c$.streamToString = Clazz_defineMethod(c$, "streamToString", +function(is){ +return String.instantialize(JU.Rdr.streamToBytes(is)); +}, "java.io.InputStream"); +c$.isBinary = Clazz_defineMethod(c$, "isBinary", +function(bis, n){ +var bytes = JU.Rdr.getMagic(bis, n); +if (JU.Rdr.b264[264] == -1) for (var i = 0; i < n; i++) if (bytes[i] < 9) return true; + +return false; +}, "java.io.BufferedInputStream,~N"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.stream = null; +Clazz_instantialize(this, arguments);}, JU.Rdr, "StreamReader", java.io.BufferedReader); +Clazz_makeConstructor(c$, +function(bis, charSet){ +Clazz_superConstructor(this, JU.Rdr.StreamReader, [ new java.io.InputStreamReader(bis, (charSet == null ? "UTF-8" : charSet))]); +this.stream = bis; +}, "java.io.BufferedInputStream,~S"); +Clazz_defineMethod(c$, "getStream", +function(){ +try { +this.stream.reset(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +return this.stream; +}); +/*eoif3*/})(); +c$.b264 = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +Clazz_instantialize(this, arguments);}, JU, "T3d", null, java.io.Serializable); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(x, y, z){ +this.x = x; +this.y = y; +this.z = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setA", +function(t){ +this.x = t[0]; +this.y = t[1]; +this.z = t[2]; +}, "~A"); +Clazz_defineMethod(c$, "setT", +function(t1){ +this.x = t1.x; +this.y = t1.y; +this.z = t1.z; +}, "JU.T3d"); +Clazz_defineMethod(c$, "add2", +function(t1, t2){ +this.x = t1.x + t2.x; +this.y = t1.y + t2.y; +this.z = t1.z + t2.z; +}, "JU.T3d,JU.T3d"); +Clazz_defineMethod(c$, "add", +function(t1){ +this.x += t1.x; +this.y += t1.y; +this.z += t1.z; +}, "JU.T3d"); +Clazz_defineMethod(c$, "sub2", +function(t1, t2){ +this.x = t1.x - t2.x; +this.y = t1.y - t2.y; +this.z = t1.z - t2.z; +}, "JU.T3d,JU.T3d"); +Clazz_defineMethod(c$, "sub", +function(t1){ +this.x -= t1.x; +this.y -= t1.y; +this.z -= t1.z; +}, "JU.T3d"); +Clazz_defineMethod(c$, "scale", +function(s){ +this.x *= s; +this.y *= s; +this.z *= s; +}, "~N"); +Clazz_defineMethod(c$, "scaleAdd", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3d,JU.T3d"); +Clazz_defineMethod(c$, "scaleAdd2", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3d,JU.T3d"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var xbits = JU.T3d.doubleToLongBits0(this.x); +var ybits = JU.T3d.doubleToLongBits0(this.y); +var zbits = JU.T3d.doubleToLongBits0(this.z); +return (xbits ^ (xbits >> 32) ^ ybits ^ (ybits >> 32) ^ zbits ^ (zbits >> 32)); +}); +c$.doubleToLongBits0 = Clazz_defineMethod(c$, "doubleToLongBits0", +function(d){ +return (d == 0 ? 0 : Double.doubleToLongBits(d)); +}, "~N"); +Clazz_overrideMethod(c$, "equals", +function(t1){ +if (!(Clazz_instanceOf(t1,"JU.T3d"))) return false; +var t2 = t1; +return (this.x == t2.x && this.y == t2.y && this.z == t2.z); +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "{" + this.x + ", " + this.y + ", " + this.z + "}"; +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3d"], "JU.V3d", null, function(){ +var c$ = Clazz_declareType(JU, "V3d", JU.T3d); +Clazz_defineMethod(c$, "cross", +function(v1, v2){ +this.set(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x); +}, "JU.V3d,JU.V3d"); +Clazz_defineMethod(c$, "normalize", +function(){ +var d = this.length(); +this.x /= d; +this.y /= d; +this.z /= d; +}); +Clazz_defineMethod(c$, "angle", +function(v1){ +var xx = this.y * v1.z - this.z * v1.y; +var yy = this.z * v1.x - this.x * v1.z; +var zz = this.x * v1.y - this.y * v1.x; +var cross = Math.sqrt(xx * xx + yy * yy + zz * zz); +return Math.abs(Math.atan2(cross, this.dot(v1))); +}, "JU.V3d"); +Clazz_defineMethod(c$, "dot", +function(v){ +return this.x * v.x + this.y * v.y + this.z * v.z; +}, "JU.V3d"); +Clazz_defineMethod(c$, "lengthSquared", +function(){ +return this.x * this.x + this.y * this.y + this.z * this.z; +}); +Clazz_defineMethod(c$, "length", +function(){ +return Math.sqrt(this.lengthSquared()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.molxyz"); +Clazz_load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.molxyz.MolReader", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "J.adapter.smarter.Atom", "J.api.JmolAdapter", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveAtomSerials = false; +this.allow2D = true; +this.iatom0 = 0; +this.vr = null; +this.atomCount = 0; +this.atomData = null; +this.bsDeleted = null; +this.haveNonzeroZ = false; +this.fixN = false; +this.is3D = false; +this.nDouble = 0; +this.nH = 0; +this.nC = 0; +Clazz_instantialize(this, arguments);}, J.adapter.readers.molxyz, "MolReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz_overrideMethod(c$, "initializeReader", +function(){ +this.fixN = this.checkFilterKey("FIXN"); +}); +Clazz_overrideMethod(c$, "checkLine", +function(){ +var isMDL = (this.line.startsWith("$MDL")); +if (isMDL) { +this.discardLinesUntilStartsWith("$HDR"); +this.rd(); +if (this.line == null) { +JU.Logger.warn("$HDR not found in MDL RG file"); +this.continuing = false; +return false; +}} else if (this.line.equals("M END")) { +return true; +}if (this.doGetModel(++this.modelNumber, null)) { +this.iatom0 = this.asc.ac; +this.processMolSdHeader(); +this.processCtab(isMDL); +this.vr = null; +if (this.isLastModel(this.modelNumber)) { +this.continuing = false; +return false; +}}if (this.line != null && this.line.indexOf("$$$$") < 0) this.discardLinesUntilStartsWith("$$$$"); +return true; +}); +Clazz_overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderMR(); +}); +Clazz_defineMethod(c$, "finalizeReaderMR", +function(){ +if (this.fixN) { +this.addJmolScript("{search('[Nv4+0,nv4+0]')}.formalCharge=1;{search('{[Ov1-0]}[Nv4+1,nv4+1]')}.formalCharge=-1;"); +}this.check2D3D(); +if (this.bsDeleted != null) { +this.asc.getBSAtoms(-1).andNot(this.bsDeleted); +}this.isTrajectory = false; +this.finalizeReaderASCR(); +}); +Clazz_defineMethod(c$, "check2D3D", +function(){ +if (this.haveNonzeroZ) { +if (this.is2D) { +this.is2D = this.optimize2D = false; +}} else if (!this.is2D && !this.is3D) { +if (this.nC > 0 && this.nH == 0 && this.nDouble != 0) { +this.is2D = true; +}}if (this.is2D) { +if (!this.allow2D) { +throw new Exception("File is 2D, not 3D"); +}this.set2D(); +}}); +Clazz_defineMethod(c$, "processMolSdHeader", +function(){ +var header = ""; +var thisDataSetName = this.line.trim(); +this.asc.setCollectionName(thisDataSetName); +header += this.line + "\n"; +this.rd(); +if (this.line == null) return; +header += this.line + "\n"; +var dim = (this.line.length >= 22 ? this.line.substring(20, 22) : null); +this.is3D = "3D".equals(dim); +this.is2D = !this.is3D && ("2D".equals(dim) || this.line.startsWith("JME ")); +this.rd(); +if (this.line == null) return; +this.line = this.line.trim(); +header += this.line + "\n"; +JU.Logger.info(header); +this.checkCurrentLineForScript(); +this.asc.setInfo("fileHeader", header); +this.newAtomSet(thisDataSetName); +}); +Clazz_defineMethod(c$, "processCtab", +function(isMDL){ +if (isMDL) this.discardLinesUntilStartsWith("$CTAB"); +if (this.rd() == null) return; +if (this.line.indexOf("V3000") >= 0) { +this.optimize2D = this.is2D && !this.noHydrogens; +this.vr = (this.getInterface("J.adapter.readers.molxyz.V3000Rdr")).set(this); +this.discardLinesUntilContains("COUNTS"); +this.vr.readAtomsAndBonds(this.getTokens()); +} else { +this.readAtomsAndBonds(this.parseIntRange(this.line, 0, 3), this.parseIntRange(this.line, 3, 6)); +}this.applySymmetryAndSetTrajectory(); +}, "~B"); +Clazz_defineMethod(c$, "readAtomsAndBonds", +function(ac, bc){ +this.atomCount = ac; +for (var i = 0; i < ac; ++i) { +this.rd(); +var len = this.line.length; +var elementSymbol; +var x; +var y; +var z; +var charge = 0; +var isotope = 0; +var iAtom = -2147483648; +x = this.parseFloatRange(this.line, 0, 10); +y = this.parseFloatRange(this.line, 10, 20); +z = this.parseFloatRange(this.line, 20, 30); +if (len < 34) { +elementSymbol = this.line.substring(31).trim(); +} else { +elementSymbol = this.line.substring(31, 34).trim(); +if (elementSymbol.equals("H1")) { +elementSymbol = "H"; +isotope = 1; +}if (len >= 39) { +var code = this.parseIntRange(this.line, 36, 39); +if (code >= 1 && code <= 7) charge = 4 - code; +code = this.parseIntRange(this.line, 34, 36); +if (code != 0 && code >= -3 && code <= 4) { +isotope = J.api.JmolAdapter.getNaturalIsotope(J.api.JmolAdapter.getElementNumber(elementSymbol)) + code; +}if (iAtom == -2147483648 && this.haveAtomSerials) iAtom = i + 1; +}}this.addMolAtom(iAtom, isotope, elementSymbol, charge, x, y, z); +} +this.asc.setModelInfoForSet("dimension", (this.is2D ? "2D" : "3D"), this.asc.iSet); +this.rd(); +if (this.line.startsWith("V ")) { +this.readAtomValues(); +}if (bc == 0) this.asc.setNoAutoBond(); +for (var i = 0; i < bc; ++i) { +if (i > 0) this.rd(); +var iAtom1; +var iAtom2; +var stereo = 0; +iAtom1 = this.line.substring(0, 3).trim(); +iAtom2 = this.line.substring(3, 6).trim(); +var order = this.parseIntRange(this.line, 6, 9); +if ((this.is2D || !this.is3D) && order == 1 && this.line.length >= 12) stereo = this.parseIntRange(this.line, 9, 12); +if (stereo != 0 && !this.is3D) this.is2D = true; +order = this.fixOrder(order, stereo); +if (this.haveAtomSerials) this.asc.addNewBondFromNames(iAtom1, iAtom2, order); + else this.asc.addNewBondWithOrder(this.iatom0 + this.parseIntStr(iAtom1) - 1, this.iatom0 + this.parseIntStr(iAtom2) - 1, order); +} +var molData = new java.util.Hashtable(); +var _keyList = new JU.Lst(); +this.rd(); +while (this.line != null && this.line.indexOf("$$$$") != 0) { +if (this.line.indexOf(">") == 0) { +this.readMolData(molData, _keyList); +continue; +}if (this.line.startsWith("M ISO")) { +this.readIsotopes(); +continue; +}this.rd(); +} +if (this.atomData != null) { +var atomValueName = molData.get("atom_value_name"); +molData.put(atomValueName == null ? "atom_values" : atomValueName.toString(), this.atomData); +}if (!molData.isEmpty()) { +this.asc.setCurrentModelInfo("molDataKeys", _keyList); +this.asc.setCurrentModelInfo("molData", molData); +}}, "~N,~N"); +Clazz_defineMethod(c$, "readAtomValues", +function(){ +this.atomData = new Array(this.atomCount); +for (var i = this.atomData.length; --i >= 0; ) this.atomData[i] = ""; + +while (this.line.indexOf("V ") == 0) { +var iAtom = this.parseIntAt(this.line, 3); +if (iAtom < 1 || iAtom > this.atomCount) { +JU.Logger.error("V nnn does not evalute to a valid atom number: " + iAtom); +return; +}var s = this.line.substring(6).trim(); +this.atomData[iAtom - 1] = s; +this.rd(); +} +}); +Clazz_defineMethod(c$, "readIsotopes", +function(){ +var n = this.parseIntAt(this.line, 6); +try { +var i0 = this.asc.getLastAtomSetAtomIndex(); +for (var i = 0, pt = 9; i < n; i++) { +var ipt = this.parseIntAt(this.line, pt); +var atom = this.asc.atoms[ipt + i0 - 1]; +var iso = this.parseIntAt(this.line, pt + 4); +pt += 8; +var sym = JU.PT.replaceAllCharacters(atom.elementSymbol, "0123456789", ""); +if (iso == 17 && sym.equals("C")) { +atom.elementSymbol = "N"; +} else if (iso == 5 && sym.equals("H")) { +this.deleteAtom(atom); +} else { +atom.elementSymbol = "" + iso + sym; +}} +} catch (e) { +} +this.rd(); +}); +Clazz_defineMethod(c$, "deleteAtom", +function(atom){ +if (this.bsDeleted == null) this.bsDeleted = new JU.BS(); +this.bsDeleted.set(atom.index); +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "readMolData", +function(molData, _keyList){ +var atoms = this.asc.atoms; +var dataName = JU.PT.trim(this.line, "> <").toLowerCase(); +var data = ""; +var fdata = null; +while (this.rd() != null && !this.line.equals("$$$$") && this.line.length > 0) data += (this.line.length == 81 && this.line.charAt(80) == '+' ? this.line.substring(0, 80) : this.line + "\n"); + +data = JU.PT.trim(data, "\n"); +JU.Logger.info(dataName + ":" + JU.PT.esc(data)); +molData.put(dataName, data); +_keyList.addLast(dataName); +var ndata = 0; +if (dataName.toUpperCase().contains("_PARTIAL_CHARGES")) { +try { +fdata = JU.PT.parseFloatArray(data); +for (var i = this.asc.getLastAtomSetAtomIndex(), n = this.asc.ac; i < n; i++) atoms[i].partialCharge = 0; + +var pt = 0; +for (var i = Clazz_floatToInt(fdata[pt++]); --i >= 0; ) { +var atomIndex = Clazz_floatToInt(fdata[pt++]) + this.iatom0 - 1; +var partialCharge = fdata[pt++]; +atoms[atomIndex].partialCharge = partialCharge; +ndata++; +} +} catch (e) { +for (var i = this.asc.getLastAtomSetAtomIndex(), n = this.asc.ac; i < n; i++) atoms[i].partialCharge = 0; + +JU.Logger.error("error reading " + dataName + " field -- partial charges cleared"); +} +JU.Logger.info(ndata + " partial charges read"); +} else if (dataName.toUpperCase().contains("ATOM_NAMES")) { +ndata = 0; +try { +var tokens = JU.PT.getTokens(data); +var pt = 0; +for (var i = this.parseIntStr(tokens[pt++]); --i >= 0; ) { +var iatom; +while ((iatom = this.parseIntStr(tokens[pt++])) == -2147483648) { +} +var atomIndex = iatom + this.iatom0 - 1; +var name = tokens[pt++]; +if (!name.equals(".")) atoms[atomIndex].atomName = name; +ndata++; +} +} catch (e) { +JU.Logger.error("error reading " + dataName + " field"); +} +JU.Logger.info(ndata + " atom names read"); +}}, "java.util.Map,JU.Lst"); +Clazz_defineMethod(c$, "addMolAtom", +function(iAtom, isotope, elementSymbol, charge, x, y, z){ +if ("H".equals(elementSymbol)) this.nH++; + else if ("C".equals(elementSymbol)) this.nC++; +this.haveNonzeroZ = new Boolean (this.haveNonzeroZ | (z != 0)).valueOf(); +switch (isotope) { +case 0: +break; +case 1: +elementSymbol = "1H"; +break; +case 2: +elementSymbol = "2H"; +break; +case 3: +elementSymbol = "3H"; +break; +default: +elementSymbol = isotope + elementSymbol; +} +var atom = new J.adapter.smarter.Atom(); +atom.elementSymbol = elementSymbol; +atom.formalCharge = charge; +this.setAtomCoordXYZ(atom, x, y, z); +if (iAtom == -2147483648) { +this.asc.addAtom(atom); +} else { +this.haveAtomSerials = true; +atom.atomSerial = iAtom; +this.asc.addAtomWithMappedSerialNumber(atom); +}return atom; +}, "~N,~N,~S,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "fixOrder", +function(order, stereo){ +switch (order) { +default: +case 0: +case -10: +return 1; +case 1: +switch (stereo) { +case 1: +this.is2D = true; +return 1025; +case 3: +case 6: +this.is2D = true; +return 1041; +case 2: +case 4: +this.is2D = true; +return 1057; +} +break; +case 2: +case 3: +this.nDouble++; +break; +case 4: +return 515; +case 5: +return 66; +case 6: +return 513; +case 7: +return 514; +case 8: +case 9: +return 33; +case 14: +return 4; +case 15: +return 5; +case 16: +return 6; +} +return order; +}, "~N,~N"); +Clazz_defineMethod(c$, "addMolBond", +function(iAtom1, iAtom2, order, stereo){ +order = this.fixOrder(order, stereo); +if (this.haveAtomSerials) return this.asc.addNewBondFromNames(iAtom1, iAtom2, order); +return this.asc.addNewBondWithOrder(this.iatom0 + this.parseIntStr(iAtom1) - 1, this.iatom0 + this.parseIntStr(iAtom2) - 1, order); +}, "~S,~S,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.molxyz"); +Clazz_load(["J.adapter.smarter.AtomSetCollectionReader"], "J.adapter.readers.molxyz.XyzReader", ["JU.Logger"], function(){ +var c$ = Clazz_declareType(J.adapter.readers.molxyz, "XyzReader", J.adapter.smarter.AtomSetCollectionReader); +Clazz_overrideMethod(c$, "checkLine", +function(){ +var modelAtomCount = this.parseIntStr(this.line); +if (modelAtomCount == -2147483648) { +this.continuing = false; +return false; +}this.vibrationNumber = ++this.modelNumber; +if (this.desiredVibrationNumber <= 0 ? this.doGetModel(this.modelNumber, null) : this.doGetVibration(this.vibrationNumber)) { +this.rd(); +this.checkCurrentLineForScript(); +this.asc.newAtomSet(); +var name = this.line.trim(); +this.readAtoms(modelAtomCount); +this.applySymmetryAndSetTrajectory(); +this.asc.setAtomSetName(name); +if (this.isLastModel(this.modelNumber)) { +this.continuing = false; +return false; +}} else { +this.skipAtomSet(modelAtomCount); +}this.discardLinesUntilNonBlank(); +return false; +}); +Clazz_overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.isTrajectory = false; +this.finalizeReaderASCR(); +}); +Clazz_defineMethod(c$, "skipAtomSet", +function(modelAtomCount){ +this.rd(); +for (var i = modelAtomCount; --i >= 0; ) this.rd(); + +}, "~N"); +Clazz_defineMethod(c$, "readAtoms", +function(modelAtomCount){ +for (var i = 0; i < modelAtomCount; ++i) { +this.rd(); +var tokens = this.getTokens(); +if (tokens.length < 4) { +JU.Logger.warn("line cannot be read for XYZ atom data: " + this.line); +continue; +}var atom = this.addAtomXYZSymName(tokens, 1, null, null); +this.setElementAndIsotope(atom, tokens[0]); +var vpt = 4; +switch (tokens.length) { +case 4: +continue; +case 5: +case 6: +case 8: +case 9: +if (tokens[4].indexOf(".") >= 0) { +atom.partialCharge = this.parseFloatStr(tokens[4]); +} else { +var charge = this.parseIntStr(tokens[4]); +if (charge != -2147483648) atom.formalCharge = charge; +}switch (tokens.length) { +case 5: +continue; +case 6: +atom.radius = this.parseFloatStr(tokens[5]); +continue; +case 9: +atom.atomSerial = this.parseIntStr(tokens[8]); +} +vpt++; +default: +var vx = this.parseFloatStr(tokens[vpt++]); +var vy = this.parseFloatStr(tokens[vpt++]); +var vz = this.parseFloatStr(tokens[vpt++]); +if (Float.isNaN(vx) || Float.isNaN(vy) || Float.isNaN(vz)) continue; +this.asc.addVibrationVector(atom.index, vx, vy, vz); +} +} +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["JU.P3"], "J.adapter.smarter.Atom", ["JU.AU", "$.Lst", "$.V3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atomSetIndex = 0; +this.index = 0; +this.bsSymmetry = null; +this.atomSite = 0; +this.elementSymbol = null; +this.elementNumber = -1; +this.atomName = null; +this.formalCharge = -2147483648; +this.partialCharge = NaN; +this.vib = null; +this.bfactor = NaN; +this.foccupancy = 1; +this.radius = NaN; +this.isHetero = false; +this.atomSerial = -2147483648; +this.chainID = 0; +this.bondingRadius = NaN; +this.altLoc = '\0'; +this.group3 = null; +this.sequenceNumber = -2147483648; +this.insertionCode = '\0'; +this.anisoBorU = null; +this.tensors = null; +this.isNegDisorder = false; +this.typeSymbol = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "Atom", JU.P3, Cloneable); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.adapter.smarter.Atom, []); +this.set(NaN, NaN, NaN); +}); +Clazz_defineMethod(c$, "addTensor", +function(tensor, type, reset){ +if (tensor == null) return null; +if (reset || this.tensors == null) this.tensors = new JU.Lst(); +this.tensors.addLast(tensor); +if (type != null) tensor.setType(type); +return tensor; +}, "JU.Tensor,~S,~B"); +Clazz_defineMethod(c$, "getClone", +function(){ +var a; +try { +a = this.clone(); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +if (this.vib != null) { +if (Clazz_instanceOf(this.vib,"JU.Vibration")) { +a.vib = (this.vib).clone(); +} else { +a.vib = JU.V3.newV(a.vib); +}}if (this.anisoBorU != null) a.anisoBorU = JU.AU.arrayCopyF(this.anisoBorU, -1); +if (this.tensors != null) { +a.tensors = new JU.Lst(); +for (var i = this.tensors.size(); --i >= 0; ) a.tensors.addLast((this.tensors.get(i)).copyTensor()); + +}return a; +}); +Clazz_defineMethod(c$, "getElementSymbol", +function(){ +if (this.elementSymbol == null && this.atomName != null) { +var len = this.atomName.length; +var ichFirst = 0; +var chFirst = String.fromCharCode(0); +while (ichFirst < len && !J.adapter.smarter.Atom.isValidSymChar1(chFirst = this.atomName.charAt(ichFirst))) ++ichFirst; + +switch (len - ichFirst) { +case 0: +break; +default: +var chSecond = this.atomName.charAt(ichFirst + 1); +if (J.adapter.smarter.Atom.isValidSymNoCase(chFirst, chSecond)) { +this.elementSymbol = "" + chFirst + chSecond; +break; +}case 1: +if (J.adapter.smarter.Atom.isValidSym1(chFirst)) this.elementSymbol = "" + chFirst; +break; +} +}return this.elementSymbol; +}); +c$.isValidSym1 = Clazz_defineMethod(c$, "isValidSym1", +function(ch){ +return (ch >= 'A' && ch <= 'Z' && J.adapter.smarter.Atom.elementCharMasks[ch.charCodeAt(0) - 65] < 0); +}, "~S"); +c$.isValidSym2 = Clazz_defineMethod(c$, "isValidSym2", +function(ch1, ch2){ +return (ch1 >= 'A' && ch1 <= 'Z' && ch2 >= 'a' && ch2 <= 'z' && ((J.adapter.smarter.Atom.elementCharMasks[ch1.charCodeAt(0) - 65] >> (ch2.charCodeAt(0) - 97)) & 1) != 0); +}, "~S,~S"); +c$.isValidSymNoCase = Clazz_defineMethod(c$, "isValidSymNoCase", +function(ch1, ch2){ +return J.adapter.smarter.Atom.isValidSym2(ch1, ch2 < 'a' ? String.fromCharCode(ch2.charCodeAt(0) + 32) : ch2); +}, "~S,~S"); +c$.isValidSymChar1 = Clazz_defineMethod(c$, "isValidSymChar1", +function(ch){ +return (ch >= 'A' && ch <= 'Z' && J.adapter.smarter.Atom.elementCharMasks[ch.charCodeAt(0) - 65] != 0); +}, "~S"); +Clazz_defineMethod(c$, "copyTo", +function(pt, asc){ +var a = asc.newCloneAtom(this); +a.setT(pt); +return a; +}, "JU.P3,J.adapter.smarter.AtomSetCollection"); +c$.elementCharMasks = Clazz_newIntArray(-1, [1972292, -2147351151, -2146019271, -2130706430, 1441792, -2147348464, 25, -2147205008, -2147344384, 0, -2147352576, 1179905, 548936, -2147434213, -2147221504, -2145759221, 0, 1056947, -2147339946, -2147477097, -2147483648, -2147483648, -2147483648, 8388624, -2147483646, 139264]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["J.api.JmolAdapterAtomIterator"], "J.adapter.smarter.AtomIterator", ["J.api.JmolAdapter"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.iatom = 0; +this.atom = null; +this.ac = 0; +this.atoms = null; +this.bsAtoms = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "AtomIterator", null, J.api.JmolAdapterAtomIterator); +Clazz_makeConstructor(c$, +function(asc){ +this.ac = asc.ac; +this.atoms = asc.atoms; +this.bsAtoms = asc.bsAtoms; +this.iatom = 0; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.iatom == this.ac) return false; +while ((this.atom = this.atoms[this.iatom++]) == null || (this.bsAtoms != null && !this.bsAtoms.get(this.atom.index))) if (this.iatom == this.ac) return false; + +this.atoms[this.iatom - 1] = null; +return true; +}); +Clazz_overrideMethod(c$, "getAtomSetIndex", +function(){ +return this.atom.atomSetIndex; +}); +Clazz_overrideMethod(c$, "getSymmetry", +function(){ +return this.atom.bsSymmetry; +}); +Clazz_overrideMethod(c$, "getAtomSite", +function(){ +return this.atom.atomSite + 1; +}); +Clazz_overrideMethod(c$, "getUniqueID", +function(){ +return Integer.$valueOf(this.atom.index); +}); +Clazz_overrideMethod(c$, "getElementNumber", +function(){ +return (this.atom.elementNumber > 0 ? this.atom.elementNumber : J.api.JmolAdapter.getElementNumber(this.atom.getElementSymbol())); +}); +Clazz_overrideMethod(c$, "getAtomName", +function(){ +return this.atom.atomName; +}); +Clazz_overrideMethod(c$, "getFormalCharge", +function(){ +return (this.atom.formalCharge == -2147483648 ? 0 : this.atom.formalCharge); +}); +Clazz_overrideMethod(c$, "getPartialCharge", +function(){ +return this.atom.partialCharge; +}); +Clazz_overrideMethod(c$, "getTensors", +function(){ +return this.atom.tensors; +}); +Clazz_overrideMethod(c$, "getRadius", +function(){ +return this.atom.radius; +}); +Clazz_overrideMethod(c$, "getBondRadius", +function(){ +return this.atom.bondingRadius; +}); +Clazz_overrideMethod(c$, "getVib", +function(){ +return (this.atom.vib == null || Float.isNaN(this.atom.vib.z) ? null : this.atom.vib); +}); +Clazz_overrideMethod(c$, "getSeqID", +function(){ +return (this.atom.vib == null || !Float.isNaN(this.atom.vib.y) || this.atom.vib.z != 1094713365 ? 0 : Clazz_floatToInt(this.atom.vib.x)); +}); +Clazz_overrideMethod(c$, "getBfactor", +function(){ +return this.atom.bfactor; +}); +Clazz_overrideMethod(c$, "getOccupancy", +function(){ +return this.atom.foccupancy * 100; +}); +Clazz_overrideMethod(c$, "getIsHetero", +function(){ +return this.atom.isHetero; +}); +Clazz_overrideMethod(c$, "getSerial", +function(){ +return this.atom.atomSerial; +}); +Clazz_overrideMethod(c$, "getChainID", +function(){ +return this.atom.chainID; +}); +Clazz_overrideMethod(c$, "getAltLoc", +function(){ +return J.api.JmolAdapter.canonizeAlternateLocationID(this.atom.altLoc); +}); +Clazz_overrideMethod(c$, "getGroup3", +function(){ +return this.atom.group3; +}); +Clazz_overrideMethod(c$, "getSequenceNumber", +function(){ +return this.atom.sequenceNumber; +}); +Clazz_overrideMethod(c$, "getInsertionCode", +function(){ +return J.api.JmolAdapter.canonizeInsertionCode(this.atom.insertionCode); +}); +Clazz_overrideMethod(c$, "getXYZ", +function(){ +return this.atom; +}); +Clazz_overrideMethod(c$, "getElement", +function(){ +return this.getElementNumber() & 0x7F; +}); +Clazz_overrideMethod(c$, "getIsotope", +function(){ +return this.getElementNumber() >> 7; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["java.util.Hashtable"], "J.adapter.smarter.AtomSetCollection", ["java.util.Collections", "$.Properties", "JU.AU", "$.BS", "$.Lst", "$.P3", "$.V3", "J.adapter.smarter.Atom", "$.Bond", "$.SmarterJmolAdapter", "J.api.Interface", "JU.BSUtil", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.reader = null; +this.bsAtoms = null; +this.fileTypeName = null; +this.collectionName = null; +this.atomSetInfo = null; +this.atoms = null; +this.ac = 0; +this.bonds = null; +this.bondCount = 0; +this.structures = null; +this.structureCount = 0; +this.atomSetCount = 0; +this.iSet = -1; +this.atomSetNumbers = null; +this.atomSetAtomIndexes = null; +this.atomSetAtomCounts = null; +this.atomSetBondCounts = null; +this.atomSetAuxiliaryInfo = null; +this.errorMessage = null; +this.coordinatesAreFractional = false; +this.isTrajectory = false; +this.trajectoryStepCount = 0; +this.trajectorySteps = null; +this.vibrationSteps = null; +this.trajectoryNames = null; +this.doFixPeriodic = false; +this.allowMultiple = false; +this.readerList = null; +this.atomMapAnyCase = false; +this.fixedSite = 0; +this.bsStructuredModels = null; +this.haveAnisou = false; +this.baseSymmetryAtomCount = 0; +this.crystalReaderLatticeOpsOnly = false; +this.xtalSymmetry = null; +this.bondIndex0 = 0; +this.atomSymbolicMap = null; +this.haveUnitCell = false; +this.vibScale = 0; +this.firstAtomToBond = -1; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "AtomSetCollection", null); +Clazz_prepareFields (c$, function(){ +this.atomSetInfo = new java.util.Hashtable(); +this.atoms = new Array(256); +this.bonds = new Array(256); +this.structures = new Array(16); +this.atomSetNumbers = Clazz_newIntArray (16, 0); +this.atomSetAtomIndexes = Clazz_newIntArray (16, 0); +this.atomSetAtomCounts = Clazz_newIntArray (16, 0); +this.atomSetBondCounts = Clazz_newIntArray (16, 0); +this.atomSetAuxiliaryInfo = new Array(16); +this.atomSymbolicMap = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(fileTypeName, reader, array, list){ +this.fileTypeName = fileTypeName; +this.reader = reader; +this.allowMultiple = (reader == null || reader.desiredVibrationNumber < 0); +var p = new java.util.Properties(); +p.put("PATH_KEY", ".PATH"); +p.put("PATH_SEPARATOR", J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR); +this.setInfo("properties", p); +if (reader != null) { +var ii = reader.htParams.get("appendToModelIndex"); +if (ii != null) this.setInfo("appendToModelIndex", ii); +ii = reader.htParams.get("fixedSite"); +if (ii != null) this.fixedSite = ii.intValue(); +}if (array != null) { +var n = 0; +this.readerList = new JU.Lst(); +for (var i = 0; i < array.length; i++) if (array[i] != null && (array[i].ac > 0 || array[i].reader != null && array[i].reader.mustFinalizeModelSet)) this.appendAtomSetCollection(n++, array[i]); + +if (n > 1) this.setInfo("isMultiFile", Boolean.TRUE); +} else if (list != null) { +this.setInfo("isMultiFile", Boolean.TRUE); +this.appendAtomSetCollectionList(list); +}}, "~S,J.adapter.smarter.AtomSetCollectionReader,~A,JU.Lst"); +Clazz_defineMethod(c$, "setCollectionName", +function(collectionName){ +if (collectionName != null && (collectionName = collectionName.trim()).length > 0) this.collectionName = collectionName; +}, "~S"); +Clazz_defineMethod(c$, "clearGlobalBoolean", +function(globalIndex){ +this.atomSetInfo.remove(JV.JC.getBoolName(globalIndex)); +}, "~N"); +Clazz_defineMethod(c$, "setGlobalBoolean", +function(globalIndex){ +this.setInfo(JV.JC.getBoolName(globalIndex), Boolean.TRUE); +}, "~N"); +Clazz_defineMethod(c$, "getGlobalBoolean", +function(globalIndex){ +return (this.atomSetInfo.get(JV.JC.getBoolName(globalIndex)) === Boolean.TRUE); +}, "~N"); +Clazz_defineMethod(c$, "appendAtomSetCollectionList", +function(list){ +var n = list.size(); +if (n == 0) { +this.errorMessage = "No file found!"; +return; +}for (var i = 0; i < n; i++) { +var o = list.get(i); +if (Clazz_instanceOf(o,"JU.Lst")) this.appendAtomSetCollectionList(o); + else this.appendAtomSetCollection(i, o); +} +}, "JU.Lst"); +Clazz_defineMethod(c$, "setTrajectory", +function(){ +if (!this.isTrajectory) this.trajectorySteps = new JU.Lst(); +this.isTrajectory = true; +var n = (this.bsAtoms == null ? this.ac : this.bsAtoms.cardinality()); +if (n <= 1) return; +var trajectoryStep = new Array(n); +var haveVibrations = (n > 0 && this.atoms[0].vib != null && !Float.isNaN(this.atoms[0].vib.z)); +var vibrationStep = (haveVibrations ? new Array(n) : null); +var prevSteps = (this.trajectoryStepCount == 0 ? null : this.trajectorySteps.get(this.trajectoryStepCount - 1)); +for (var i = 0, ii = 0; i < this.ac; i++) { +if (this.bsAtoms != null && !this.bsAtoms.get(i)) continue; +var pt = JU.P3.newP(this.atoms[i]); +if (this.doFixPeriodic && prevSteps != null) pt = J.adapter.smarter.AtomSetCollection.fixPeriodic(pt, prevSteps[i]); +trajectoryStep[ii] = pt; +if (haveVibrations) vibrationStep[ii] = this.atoms[i].vib; +ii++; +} +if (haveVibrations) { +if (this.vibrationSteps == null) { +this.vibrationSteps = new JU.Lst(); +for (var i = 0; i < this.trajectoryStepCount; i++) this.vibrationSteps.addLast(null); + +}this.vibrationSteps.addLast(vibrationStep); +}this.trajectorySteps.addLast(trajectoryStep); +this.trajectoryStepCount++; +}); +Clazz_defineMethod(c$, "appendAtomSetCollection", +function(collectionIndex, collection){ +if (collection.reader != null && collection.reader.mustFinalizeModelSet) this.readerList.addLast(collection.reader); +var existingAtomsCount = this.ac; +this.setInfo("loadState", collection.atomSetInfo.get("loadState")); +if (collection.bsAtoms != null) { +this.getBSAtoms(0); +for (var i = collection.bsAtoms.nextSetBit(0); i >= 0; i = collection.bsAtoms.nextSetBit(i + 1)) this.bsAtoms.set(existingAtomsCount + i); + +}var clonedAtoms = 0; +var atomSetCount0 = this.atomSetCount; +for (var atomSetNum = 0; atomSetNum < collection.atomSetCount; atomSetNum++) { +this.newAtomSet(); +var info = this.atomSetAuxiliaryInfo[this.iSet] = collection.atomSetAuxiliaryInfo[atomSetNum]; +var atomInfo = info.get("PDB_CONECT_firstAtom_count_max"); +if (atomInfo != null) atomInfo[0] += existingAtomsCount; +this.setCurrentModelInfo("title", collection.collectionName); +this.setAtomSetName(collection.getAtomSetName(atomSetNum)); +for (var atomNum = 0; atomNum < collection.atomSetAtomCounts[atomSetNum]; atomNum++) { +if (this.bsAtoms != null) this.bsAtoms.set(this.ac); +this.newCloneAtom(collection.atoms[clonedAtoms]); +clonedAtoms++; +} +this.atomSetNumbers[this.iSet] = (collectionIndex < 0 ? this.iSet + 1 : ((collectionIndex + 1) * 1000000) + collection.atomSetNumbers[atomSetNum]); +} +for (var bondNum = 0; bondNum < collection.bondCount; bondNum++) { +var bond = collection.bonds[bondNum]; +this.addNewBondWithOrder(bond.atomIndex1 + existingAtomsCount, bond.atomIndex2 + existingAtomsCount, bond.order); +} +for (var i = JV.JC.globalBooleans.length; --i >= 0; ) if (collection.getGlobalBoolean(i)) this.setGlobalBoolean(i); + +for (var i = 0; i < collection.structureCount; i++) { +var s = collection.structures[i]; +this.addStructure(s); +s.modelStartEnd[0] += atomSetCount0; +s.modelStartEnd[1] += atomSetCount0; +} +}, "~N,J.adapter.smarter.AtomSetCollection"); +Clazz_defineMethod(c$, "setNoAutoBond", +function(){ +this.setInfo("noAutoBond", Boolean.TRUE); +}); +Clazz_defineMethod(c$, "freeze", +function(reverseModels){ +if (this.atomSetCount == 1 && this.collectionName == null) this.collectionName = this.getAtomSetAuxiliaryInfoValue(0, "name"); +if (reverseModels) this.reverseAtomSets(); +if (this.trajectoryStepCount > 1) this.finalizeTrajectory(); +this.getList(true); +this.getList(false); +for (var i = 0; i < this.atomSetCount; i++) { +this.setModelInfoForSet("initialAtomCount", Integer.$valueOf(this.atomSetAtomCounts[i]), i); +this.setModelInfoForSet("initialBondCount", Integer.$valueOf(this.atomSetBondCounts[i]), i); +} +}, "~B"); +Clazz_defineMethod(c$, "reverseAtomSets", +function(){ +this.reverseArray(this.atomSetAtomIndexes); +this.reverseArray(this.atomSetNumbers); +this.reverseArray(this.atomSetAtomCounts); +this.reverseArray(this.atomSetBondCounts); +J.adapter.smarter.AtomSetCollection.reverseList(this.trajectorySteps); +J.adapter.smarter.AtomSetCollection.reverseList(this.trajectoryNames); +J.adapter.smarter.AtomSetCollection.reverseList(this.vibrationSteps); +this.reverseObject(this.atomSetAuxiliaryInfo); +for (var i = 0; i < this.ac; i++) this.atoms[i].atomSetIndex = this.atomSetCount - 1 - this.atoms[i].atomSetIndex; + +for (var i = 0; i < this.structureCount; i++) { +var m = this.structures[i].modelStartEnd[0]; +if (m >= 0) { +this.structures[i].modelStartEnd[0] = this.atomSetCount - 1 - this.structures[i].modelStartEnd[1]; +this.structures[i].modelStartEnd[1] = this.atomSetCount - 1 - m; +}} +for (var i = 0; i < this.bondCount; i++) this.bonds[i].atomSetIndex = this.atomSetCount - 1 - this.atoms[this.bonds[i].atomIndex1].atomSetIndex; + +this.reverseSets(this.bonds, this.bondCount); +var lists = JU.AU.createArrayOfArrayList(this.atomSetCount); +for (var i = 0; i < this.atomSetCount; i++) lists[i] = new JU.Lst(); + +for (var i = 0; i < this.ac; i++) lists[this.atoms[i].atomSetIndex].addLast(this.atoms[i]); + +var newIndex = Clazz_newIntArray (this.ac, 0); +var n = this.ac; +for (var i = this.atomSetCount; --i >= 0; ) for (var j = lists[i].size(); --j >= 0; ) { +var a = this.atoms[--n] = lists[i].get(j); +newIndex[a.index] = n; +a.index = n; +} + +for (var i = 0; i < this.bondCount; i++) { +this.bonds[i].atomIndex1 = newIndex[this.bonds[i].atomIndex1]; +this.bonds[i].atomIndex2 = newIndex[this.bonds[i].atomIndex2]; +} +for (var i = 0; i < this.atomSetCount; i++) { +var conect = this.getAtomSetAuxiliaryInfoValue(i, "PDB_CONECT_firstAtom_count_max"); +if (conect == null) continue; +conect[0] = newIndex[conect[0]]; +conect[1] = this.atomSetAtomCounts[i]; +} +}); +Clazz_defineMethod(c$, "reverseSets", +function(o, n){ +var lists = JU.AU.createArrayOfArrayList(this.atomSetCount); +for (var i = 0; i < this.atomSetCount; i++) lists[i] = new JU.Lst(); + +for (var i = 0; i < n; i++) { +var index = o[i].atomSetIndex; +if (index < 0) return; +lists[o[i].atomSetIndex].addLast(o[i]); +} +for (var i = this.atomSetCount; --i >= 0; ) for (var j = lists[i].size(); --j >= 0; ) o[--n] = lists[i].get(j); + + +}, "~A,~N"); +Clazz_defineMethod(c$, "reverseObject", +function(o){ +var n = this.atomSetCount; +for (var i = Clazz_doubleToInt(n / 2); --i >= 0; ) JU.AU.swap(o, i, n - 1 - i); + +}, "~A"); +c$.reverseList = Clazz_defineMethod(c$, "reverseList", +function(list){ +if (list == null) return; +java.util.Collections.reverse(list); +}, "JU.Lst"); +Clazz_defineMethod(c$, "reverseArray", +function(a){ +var n = this.atomSetCount; +for (var i = Clazz_doubleToInt(n / 2); --i >= 0; ) JU.AU.swapInt(a, i, n - 1 - i); + +}, "~A"); +Clazz_defineMethod(c$, "getList", +function(isAltLoc){ +var i; +for (i = this.ac; --i >= 0; ) if (this.atoms[i] != null && (isAltLoc ? this.atoms[i].altLoc : this.atoms[i].insertionCode) != '\0') break; + +if (i < 0) return; +var lists = new Array(this.atomSetCount); +for (i = 0; i < this.atomSetCount; i++) lists[i] = ""; + +var pt; +for (i = 0; i < this.ac; i++) { +if (this.atoms[i] == null) continue; +var id = (isAltLoc ? this.atoms[i].altLoc : this.atoms[i].insertionCode); +if (id != '\0' && lists[pt = this.atoms[i].atomSetIndex].indexOf(id) < 0) lists[pt] += id; +} +var type = (isAltLoc ? "altLocs" : "insertionCodes"); +for (i = 0; i < this.atomSetCount; i++) if (lists[i].length > 0) this.setModelInfoForSet(type, lists[i], i); + +}, "~B"); +Clazz_defineMethod(c$, "finish", +function(){ +if (this.reader != null) this.reader.finalizeModelSet(); + else if (this.readerList != null) for (var i = 0; i < this.readerList.size(); i++) this.readerList.get(i).finalizeModelSet(); + +this.atoms = null; +this.atomSetAtomCounts = Clazz_newIntArray (16, 0); +this.atomSetAuxiliaryInfo = new Array(16); +this.atomSetInfo = new java.util.Hashtable(); +this.atomSetCount = 0; +this.atomSetNumbers = Clazz_newIntArray (16, 0); +this.atomSymbolicMap = new java.util.Hashtable(); +this.bonds = null; +this.iSet = -1; +this.readerList = null; +this.xtalSymmetry = null; +this.structures = new Array(16); +this.structureCount = 0; +this.trajectorySteps = null; +this.vibrationSteps = null; +}); +Clazz_defineMethod(c$, "discardPreviousAtoms", +function(){ +for (var i = this.ac; --i >= 0; ) this.atoms[i] = null; + +this.ac = 0; +this.clearMap(); +this.atomSetCount = 0; +this.iSet = -1; +for (var i = this.atomSetAuxiliaryInfo.length; --i >= 0; ) { +this.atomSetAtomCounts[i] = 0; +this.atomSetBondCounts[i] = 0; +this.atomSetAuxiliaryInfo[i] = null; +} +}); +Clazz_defineMethod(c$, "removeCurrentAtomSet", +function(){ +if (this.iSet < 0) return; +var ai = this.atomSetAtomIndexes[this.iSet]; +if (this.bsAtoms != null) this.bsAtoms.clearBits(ai, this.ac); +this.ac = ai; +this.atomSetAtomCounts[this.iSet] = 0; +this.iSet--; +this.atomSetCount--; +this.reader.doCheckUnitCell = false; +}); +Clazz_defineMethod(c$, "getHydrogenAtomCount", +function(){ +var n = 0; +for (var i = 0; i < this.ac; i++) if (this.atoms[i].elementNumber == 1 || this.atoms[i].elementSymbol.equals("H")) n++; + +return n; +}); +Clazz_defineMethod(c$, "newCloneAtom", +function(atom){ +var clone = atom.getClone(); +this.addAtom(clone); +return clone; +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "cloneFirstAtomSet", +function(atomCount){ +if (!this.allowMultiple) return 0; +this.newAtomSet(); +if (atomCount == 0) atomCount = this.atomSetAtomCounts[0]; +for (var i = 0; i < atomCount; ++i) this.newCloneAtom(this.atoms[i]); + +return this.ac; +}, "~N"); +Clazz_defineMethod(c$, "cloneAtomSetWithBonds", +function(isLast){ +var nBonds = this.atomSetBondCounts[isLast ? this.iSet : 0]; +var atomIncrement = (isLast ? this.cloneLastAtomSet() : this.cloneFirstAtomSet(0)); +if (atomIncrement > 0) for (var i = 0; i < nBonds; i++) { +var bond = this.bonds[this.bondCount - nBonds]; +this.addNewBondWithOrder(bond.atomIndex1 + atomIncrement, bond.atomIndex2 + atomIncrement, bond.order); +} +}, "~B"); +Clazz_defineMethod(c$, "cloneLastAtomSet", +function(){ +return this.cloneLastAtomSetFromPoints(0, null); +}); +Clazz_defineMethod(c$, "cloneLastAtomSetFromPoints", +function(ac, pts){ +if (!this.allowMultiple) return 0; +var count = (ac > 0 ? ac : this.getLastAtomSetAtomCount()); +var atomIndex = this.getLastAtomSetAtomIndex(); +this.newAtomSet(); +for (var i = 0; i < count; ++i) { +var atom = this.newCloneAtom(this.atoms[atomIndex++]); +if (pts != null) atom.setT(pts[i]); +} +return count; +}, "~N,~A"); +Clazz_defineMethod(c$, "getLastAtomSetAtomCount", +function(){ +return this.atomSetAtomCounts[this.iSet]; +}); +Clazz_defineMethod(c$, "getLastAtomSetAtomIndex", +function(){ +return this.ac - this.atomSetAtomCounts[this.iSet]; +}); +Clazz_defineMethod(c$, "addNewAtom", +function(){ +return this.addAtom( new J.adapter.smarter.Atom()); +}); +Clazz_defineMethod(c$, "addAtom", +function(atom){ +if (this.ac == this.atoms.length) { +if (this.ac > 200000) this.atoms = JU.AU.ensureLength(this.atoms, this.ac + 50000); + else this.atoms = JU.AU.doubleLength(this.atoms); +}if (this.atomSetCount == 0) this.newAtomSet(); +atom.index = this.ac; +this.atoms[this.ac++] = atom; +atom.atomSetIndex = this.iSet; +atom.atomSite = (this.fixedSite > 0 ? this.fixedSite - 1 : this.atomSetAtomCounts[this.iSet]++); +return atom; +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "addAtomWithMappedName", +function(atom){ +var atomName = this.addAtom(atom).atomName; +if (atomName != null) this.atomSymbolicMap.put(atomName, atom); +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "addAtomWithMappedSerialNumber", +function(atom){ +var atomSerial = this.addAtom(atom).atomSerial; +if (atomSerial != -2147483648) this.atomSymbolicMap.put("" + atomSerial, atom); +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "getAtomFromName", +function(atomName){ +return this.atomSymbolicMap.get(atomName); +}, "~S"); +Clazz_defineMethod(c$, "setAtomMapAnyCase", +function(){ +this.atomMapAnyCase = true; +var newMap = new java.util.Hashtable(); +newMap.putAll(this.atomSymbolicMap); +for (var e, $e = this.atomSymbolicMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +var uc = name.toUpperCase(); +if (!uc.equals(name)) newMap.put(uc, e.getValue()); +} +this.atomSymbolicMap = newMap; +}); +Clazz_defineMethod(c$, "getAtomIndex", +function(name){ +var a = this.atomSymbolicMap.get(name); +if (a == null && this.atomMapAnyCase) a = this.atomSymbolicMap.get(name.toUpperCase()); +return (a == null ? -1 : a.index); +}, "~S"); +Clazz_defineMethod(c$, "addNewBondWithOrder", +function(atomIndex1, atomIndex2, order){ +var b = null; +if (atomIndex1 >= 0 && atomIndex1 < this.ac && atomIndex2 >= 0 && atomIndex2 < this.ac && atomIndex1 != atomIndex2) { +b = new J.adapter.smarter.Bond(atomIndex1, atomIndex2, order); +this.addBond(b); +}return b; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "addNewBondFromNames", +function(atomName1, atomName2, order){ +return this.addNewBondWithOrderA(this.getAtomFromName(atomName1), this.getAtomFromName(atomName2), order); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "addNewBondWithOrderA", +function(atom1, atom2, order){ +return (atom1 != null && atom2 != null ? this.addNewBondWithOrder(atom1.index, atom2.index, order) : null); +}, "J.adapter.smarter.Atom,J.adapter.smarter.Atom,~N"); +Clazz_defineMethod(c$, "addBond", +function(bond){ +if (this.trajectoryStepCount > 0) return; +if (bond.atomIndex1 < 0 || bond.atomIndex2 < 0 || bond.order < 0 || bond.atomIndex1 == bond.atomIndex2 || this.atoms[bond.atomIndex1].atomSetIndex != this.atoms[bond.atomIndex2].atomSetIndex) { +if (JU.Logger.debugging) { +JU.Logger.debug(">>>>>>BAD BOND:" + bond.atomIndex1 + "-" + bond.atomIndex2 + " order=" + bond.order); +}return; +}this.addBondNoCheck(bond); +}, "J.adapter.smarter.Bond"); +Clazz_defineMethod(c$, "addBondNoCheck", +function(bond){ +if (this.bondCount == this.bonds.length) this.bonds = JU.AU.arrayCopyObject(this.bonds, this.bondCount + 1024); +this.bonds[this.bondCount++] = bond; +this.atomSetBondCounts[this.iSet]++; +}, "J.adapter.smarter.Bond"); +Clazz_defineMethod(c$, "finalizeStructures", +function(){ +if (this.structureCount == 0) return; +this.bsStructuredModels = new JU.BS(); +var map = new java.util.Hashtable(); +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.modelStartEnd[0] == -1) { +s.modelStartEnd[0] = 0; +s.modelStartEnd[1] = this.atomSetCount - 1; +}this.bsStructuredModels.setBits(s.modelStartEnd[0], s.modelStartEnd[1] + 1); +if (s.strandCount == 0) continue; +var key = s.structureID + " " + s.modelStartEnd[0]; +var v = map.get(key); +var count = (v == null ? 0 : v.intValue()) + 1; +map.put(key, Integer.$valueOf(count)); +} +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.strandCount == 1) s.strandCount = map.get(s.structureID + " " + s.modelStartEnd[0]).intValue(); +} +}); +Clazz_defineMethod(c$, "addStructure", +function(structure){ +if (this.structureCount == this.structures.length) this.structures = JU.AU.arrayCopyObject(this.structures, this.structureCount + 32); +this.structures[this.structureCount++] = structure; +}, "J.adapter.smarter.Structure"); +Clazz_defineMethod(c$, "addVibrationVectorWithSymmetry", +function(iatom, vx, vy, vz, withSymmetry){ +if (!withSymmetry) { +this.addVibrationVector(iatom, vx, vy, vz); +return; +}var atomSite = this.atoms[iatom].atomSite; +var atomSetIndex = this.atoms[iatom].atomSetIndex; +for (var i = iatom; i < this.ac && this.atoms[i].atomSetIndex == atomSetIndex; i++) { +if (this.atoms[i].atomSite == atomSite) this.addVibrationVector(i, vx, vy, vz); +} +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "addVibrationVector", +function(iatom, x, y, z){ +if (!this.allowMultiple) iatom = iatom % this.ac; +return (this.atoms[iatom].vib = JU.V3.new3(x, y, z)); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setCoordinatesAreFractional", +function(tf){ +this.coordinatesAreFractional = tf; +this.setCurrentModelInfo("coordinatesAreFractional", Boolean.$valueOf(tf)); +if (tf) this.setGlobalBoolean(0); +}, "~B"); +Clazz_defineMethod(c$, "setAnisoBorU", +function(atom, data, type){ +this.haveAnisou = true; +atom.anisoBorU = data; +data[6] = type; +}, "J.adapter.smarter.Atom,~A,~N"); +Clazz_defineMethod(c$, "setU", +function(atom, i, val){ +var data = atom.anisoBorU; +if (data == null) this.setAnisoBorU(atom, data = Clazz_newFloatArray (8, 0), 8); +data[i] = val; +}, "J.adapter.smarter.Atom,~N,~N"); +Clazz_defineMethod(c$, "getXSymmetry", +function(){ +if (this.xtalSymmetry == null) this.xtalSymmetry = (J.api.Interface.getOption("adapter.smarter.XtalSymmetry", this.reader.vwr, "file")).set(this.reader); +return this.xtalSymmetry; +}); +Clazz_defineMethod(c$, "getSymmetry", +function(){ +return this.getXSymmetry().getSymmetry(); +}); +Clazz_defineMethod(c$, "setSymmetry", +function(symmetry){ +return (symmetry == null ? null : this.getXSymmetry().setSymmetry(symmetry)); +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "newFileSymmetry", +function(){ +return this.getXSymmetry().newFileSymmetry(); +}); +Clazz_defineMethod(c$, "setTensors", +function(){ +if (this.haveAnisou) this.getXSymmetry().setTensors(); +}); +Clazz_defineMethod(c$, "setInfo", +function(key, value){ +if (value == null) this.atomSetInfo.remove(key); + else this.atomSetInfo.put(key, value); +}, "~S,~O"); +Clazz_defineMethod(c$, "setAtomSetCollectionPartialCharges", +function(auxKey){ +if (!this.atomSetInfo.containsKey(auxKey)) return false; +var atomData = this.atomSetInfo.get(auxKey); +var n = atomData.size(); +for (var i = this.ac; --i >= 0; ) this.atoms[i].partialCharge = atomData.get(i % n).floatValue(); + +JU.Logger.info("Setting partial charges type " + auxKey); +return true; +}, "~S"); +Clazz_defineMethod(c$, "mapPartialCharge", +function(atomName, charge){ +this.getAtomFromName(atomName).partialCharge = charge; +}, "~S,~N"); +c$.fixPeriodic = Clazz_defineMethod(c$, "fixPeriodic", +function(pt, pt0){ +pt.x = J.adapter.smarter.AtomSetCollection.fixPoint(pt.x, pt0.x); +pt.y = J.adapter.smarter.AtomSetCollection.fixPoint(pt.y, pt0.y); +pt.z = J.adapter.smarter.AtomSetCollection.fixPoint(pt.z, pt0.z); +return pt; +}, "JU.P3,JU.P3"); +c$.fixPoint = Clazz_defineMethod(c$, "fixPoint", +function(x, x0){ +while (x - x0 > 0.9) { +x -= 1; +} +while (x - x0 < -0.9) { +x += 1; +} +return x; +}, "~N,~N"); +Clazz_defineMethod(c$, "finalizeTrajectoryAs", +function(trajectorySteps, vibrationSteps){ +this.trajectorySteps = trajectorySteps; +this.vibrationSteps = vibrationSteps; +this.trajectoryStepCount = trajectorySteps.size(); +this.finalizeTrajectory(); +}, "JU.Lst,JU.Lst"); +Clazz_defineMethod(c$, "finalizeTrajectory", +function(){ +if (this.trajectoryStepCount == 0) return; +var trajectory = this.trajectorySteps.get(0); +var vibrations = (this.vibrationSteps == null ? null : this.vibrationSteps.get(0)); +var n = (this.bsAtoms == null ? this.ac : this.bsAtoms.cardinality()); +if (this.vibrationSteps != null && vibrations != null && vibrations.length < n || trajectory.length < n) { +this.errorMessage = "File cannot be loaded as a trajectory"; +return; +}var v = new JU.V3(); +for (var i = 0, ii = 0; i < this.ac; i++) { +if (this.bsAtoms != null && !this.bsAtoms.get(i)) continue; +if (this.vibrationSteps != null) this.atoms[i].vib = (vibrations == null ? v : vibrations[ii]); +if (trajectory[ii] != null) this.atoms[i].setT(trajectory[ii]); +ii++; +} +this.setInfo("trajectorySteps", this.trajectorySteps); +if (this.vibrationSteps != null) this.setInfo("vibrationSteps", this.vibrationSteps); +if (this.ac == 0) this.ac = trajectory.length; +}); +Clazz_defineMethod(c$, "newAtomSet", +function(){ +this.newAtomSetClear(true); +}); +Clazz_defineMethod(c$, "newAtomSetClear", +function(doClearMap){ +if (!this.allowMultiple && this.iSet >= 0) this.reader.discardPreviousAtoms(); +this.bondIndex0 = this.bondCount; +if (this.isTrajectory) this.reader.discardPreviousAtoms(); +this.iSet = this.atomSetCount++; +if (this.atomSetCount > this.atomSetNumbers.length) { +this.atomSetAtomIndexes = JU.AU.doubleLengthI(this.atomSetAtomIndexes); +this.atomSetAtomCounts = JU.AU.doubleLengthI(this.atomSetAtomCounts); +this.atomSetBondCounts = JU.AU.doubleLengthI(this.atomSetBondCounts); +this.atomSetAuxiliaryInfo = JU.AU.doubleLength(this.atomSetAuxiliaryInfo); +}this.atomSetAtomIndexes[this.iSet] = this.ac; +if (this.atomSetCount + this.trajectoryStepCount > this.atomSetNumbers.length) { +this.atomSetNumbers = JU.AU.doubleLengthI(this.atomSetNumbers); +}if (this.isTrajectory) { +this.atomSetNumbers[this.iSet + this.trajectoryStepCount] = this.atomSetCount + this.trajectoryStepCount; +} else { +this.atomSetNumbers[this.iSet] = this.atomSetCount; +}if (doClearMap) { +this.clearMap(); +}this.setCurrentModelInfo("title", this.collectionName); +}, "~B"); +Clazz_defineMethod(c$, "clearMap", +function(){ +this.atomSymbolicMap.clear(); +this.atomMapAnyCase = false; +}); +Clazz_defineMethod(c$, "getAtomSetAtomIndex", +function(i){ +return this.atomSetAtomIndexes[i]; +}, "~N"); +Clazz_defineMethod(c$, "getAtomSetAtomCount", +function(i){ +return this.atomSetAtomCounts[i]; +}, "~N"); +Clazz_defineMethod(c$, "getAtomSetBondCount", +function(i){ +return this.atomSetBondCounts[i]; +}, "~N"); +Clazz_defineMethod(c$, "setAtomSetName", +function(atomSetName){ +if (atomSetName == null) return; +if (this.isTrajectory) { +this.setTrajectoryName(atomSetName); +return; +}var name0 = (this.iSet < 0 ? null : this.getAtomSetName(this.iSet)); +this.setModelInfoForSet("name", atomSetName, this.iSet); +if (this.reader != null && atomSetName.length > 0 && !atomSetName.equals(name0)) this.reader.appendLoadNote(atomSetName); +if (!this.allowMultiple) this.setCollectionName(atomSetName); +}, "~S"); +Clazz_defineMethod(c$, "setTrajectoryName", +function(name){ +if (this.trajectoryStepCount == 0) return; +if (this.trajectoryNames == null) { +this.trajectoryNames = new JU.Lst(); +}for (var i = this.trajectoryNames.size(); i < this.trajectoryStepCount; i++) this.trajectoryNames.addLast(null); + +this.trajectoryNames.set(this.trajectoryStepCount - 1, name); +}, "~S"); +Clazz_defineMethod(c$, "setCurrentAtomSetNumber", +function(atomSetNumber){ +this.setAtomSetNumber(this.iSet + (this.isTrajectory ? this.trajectoryStepCount : 0), atomSetNumber); +}, "~N"); +Clazz_defineMethod(c$, "setAtomSetNumber", +function(index, atomSetNumber){ +this.atomSetNumbers[index] = atomSetNumber; +}, "~N,~N"); +Clazz_defineMethod(c$, "setAtomSetModelProperty", +function(key, value){ +this.setAtomSetModelPropertyForSet(key, value, this.iSet); +}, "~S,~S"); +Clazz_defineMethod(c$, "setAtomSetModelPropertyForSet", +function(key, value, atomSetIndex){ +var p = this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "modelProperties"); +if (p == null) this.setModelInfoForSet("modelProperties", p = new java.util.Properties(), atomSetIndex); +p.put(key, value); +if (key.startsWith(".")) p.put(key.substring(1), value); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "setAtomProperties", +function(key, data, atomSetIndex, isGroup){ +if ((typeof(data)=='string') && !(data).endsWith("\n")) data = data + "\n"; +if (atomSetIndex < 0) atomSetIndex = this.iSet; +var p = this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "atomProperties"); +if (p == null) this.setModelInfoForSet("atomProperties", p = new java.util.Hashtable(), atomSetIndex); +p.put(key, data); +}, "~S,~O,~N,~B"); +Clazz_defineMethod(c$, "setAtomSetPartialCharges", +function(auxKey){ +if (!this.atomSetAuxiliaryInfo[this.iSet].containsKey(auxKey)) { +return false; +}var atomData = this.getAtomSetAuxiliaryInfoValue(this.iSet, auxKey); +for (var i = atomData.size(); --i >= 0; ) { +this.atoms[i].partialCharge = atomData.get(i).floatValue(); +} +return true; +}, "~S"); +Clazz_defineMethod(c$, "getAtomSetAuxiliaryInfoValue", +function(index, key){ +return this.atomSetAuxiliaryInfo[index >= 0 ? index : this.iSet].get(key); +}, "~N,~S"); +Clazz_defineMethod(c$, "setCurrentModelInfo", +function(key, value){ +this.setModelInfoForSet(key, value, this.iSet); +}, "~S,~O"); +Clazz_defineMethod(c$, "setModelInfoForSet", +function(key, value, atomSetIndex){ +if (atomSetIndex < 0) return; +if (this.atomSetAuxiliaryInfo[atomSetIndex] == null) this.atomSetAuxiliaryInfo[atomSetIndex] = new java.util.Hashtable(); +if (value == null) this.atomSetAuxiliaryInfo[atomSetIndex].remove(key); + else this.atomSetAuxiliaryInfo[atomSetIndex].put(key, value); +}, "~S,~O,~N"); +Clazz_defineMethod(c$, "getAtomSetNumber", +function(atomSetIndex){ +return this.atomSetNumbers[atomSetIndex >= this.atomSetCount ? 0 : atomSetIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getAtomSetName", +function(atomSetIndex){ +if (this.trajectoryNames != null && atomSetIndex < this.trajectoryNames.size()) return this.trajectoryNames.get(atomSetIndex); +if (atomSetIndex >= this.atomSetCount) atomSetIndex = this.atomSetCount - 1; +return this.getAtomSetAuxiliaryInfoValue(atomSetIndex, "name"); +}, "~N"); +Clazz_defineMethod(c$, "getAtomSetAuxiliaryInfo", +function(atomSetIndex){ +var i = (atomSetIndex >= this.atomSetCount ? this.atomSetCount - 1 : atomSetIndex); +return (i < 0 ? null : this.atomSetAuxiliaryInfo[i]); +}, "~N"); +Clazz_defineMethod(c$, "setAtomSetEnergy", +function(energyString, value){ +if (this.iSet < 0) return; +JU.Logger.info("Energy for model " + (this.iSet + 1) + " = " + energyString); +this.setCurrentModelInfo("EnergyString", energyString); +this.setCurrentModelInfo("Energy", Float.$valueOf(value)); +this.setAtomSetModelProperty("Energy", "" + value); +}, "~S,~N"); +Clazz_defineMethod(c$, "setAtomSetFrequency", +function(mode, pathKey, label, freq, units){ +this.setAtomSetModelProperty("FreqValue", freq); +freq += " " + (units == null ? "cm^-1" : units); +var name = (label == null ? "" : label + " ") + freq; +this.setAtomSetName(name); +this.setAtomSetModelProperty("Frequency", freq); +this.setAtomSetModelProperty("Mode", "" + mode); +this.setModelInfoForSet("vibrationalMode", Integer.$valueOf(mode), this.iSet); +if (label != null) this.setAtomSetModelProperty("FrequencyLabel", label); +this.setAtomSetModelProperty(".PATH", (pathKey == null ? "" : pathKey + J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR + "Frequencies") + "Frequencies"); +return name; +}, "~N,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "getBondList", +function(){ +var info = new Array(this.bondCount); +for (var i = 0; i < this.bondCount; i++) { +info[i] = Clazz_newArray(-1, [this.atoms[this.bonds[i].atomIndex1].atomName, this.atoms[this.bonds[i].atomIndex2].atomName, "" + this.bonds[i].order]); +} +return info; +}); +Clazz_defineMethod(c$, "centralize", +function(){ +var pt = new JU.P3(); +for (var i = 0; i < this.atomSetCount; i++) { +var n = this.atomSetAtomCounts[i]; +var atom0 = this.atomSetAtomIndexes[i]; +pt.set(0, 0, 0); +for (var j = atom0 + n; --j >= atom0; ) pt.add(this.atoms[j]); + +pt.scale(1 / n); +for (var j = atom0 + n; --j >= atom0; ) this.atoms[j].sub(pt); + +} +}); +Clazz_defineMethod(c$, "mergeTrajectories", +function(a){ +if (!this.isTrajectory || !a.isTrajectory || this.vibrationSteps != null) return; +for (var i = 0; i < a.trajectoryStepCount; i++) this.trajectorySteps.add(this.trajectoryStepCount++, a.trajectorySteps.get(i)); + +this.setInfo("trajectorySteps", this.trajectorySteps); +this.setInfo("ignoreUnitCell", a.atomSetInfo.get("ignoreUnitCell")); +}, "J.adapter.smarter.AtomSetCollection"); +Clazz_defineMethod(c$, "removeAtomSet", +function(imodel){ +if (this.bsAtoms == null) this.bsAtoms = JU.BSUtil.newBitSet2(0, this.ac); +var i0 = this.atomSetAtomIndexes[imodel]; +var nAtoms = this.atomSetAtomCounts[imodel]; +var i1 = i0 + nAtoms; +this.bsAtoms.clearBits(i0, i1); +for (var i = i1; i < this.ac; i++) this.atoms[i].atomSetIndex--; + +for (var i = imodel + 1; i < this.atomSetCount; i++) { +this.atomSetAuxiliaryInfo[i - 1] = this.atomSetAuxiliaryInfo[i]; +this.atomSetAtomIndexes[i - 1] = this.atomSetAtomIndexes[i]; +this.atomSetBondCounts[i - 1] = this.atomSetBondCounts[i]; +this.atomSetAtomCounts[i - 1] = this.atomSetAtomCounts[i]; +this.atomSetNumbers[i - 1] = this.atomSetNumbers[i]; +} +for (var i = 0; i < this.bondCount; i++) this.bonds[i].atomSetIndex = this.atoms[this.bonds[i].atomIndex1].atomSetIndex; + +this.atomSetAuxiliaryInfo[--this.atomSetCount] = null; +var n = 0; +for (var i = 0; i < this.structureCount; i++) { +var s = this.structures[i]; +if (s.modelStartEnd[0] == imodel && s.modelStartEnd[1] == imodel) { +this.structures[i] = null; +n++; +}} +if (n > 0) { +var ss = new Array(this.structureCount - n); +for (var i = 0, pt = 0; i < this.structureCount; i++) if (this.structures[i] != null) ss[pt++] = this.structures[i]; + +this.structures = ss; +}}, "~N"); +Clazz_defineMethod(c$, "removeLastUnselectedAtoms", +function(){ +var n = this.ac; +var nremoved = 0; +var i0 = this.getLastAtomSetAtomIndex(); +var nnow = 0; +for (var i = i0; i < n; i++) { +if (!this.bsAtoms.get(i)) { +nremoved++; +this.ac--; +this.atoms[i] = null; +continue; +}if (nremoved > 0) { +this.atoms[this.atoms[i].index = i - nremoved] = this.atoms[i]; +this.atoms[i] = null; +}nnow++; +} +this.atomSetAtomCounts[this.iSet] = nnow; +if (nnow == 0) { +this.iSet--; +this.atomSetCount--; +} else { +this.bsAtoms.setBits(i0, i0 + nnow); +}}); +Clazz_defineMethod(c$, "checkNoEmptyModel", +function(){ +while (this.atomSetCount > 0 && this.atomSetAtomCounts[this.atomSetCount - 1] == 0) this.atomSetCount--; + +}); +Clazz_defineMethod(c$, "getBSAtoms", +function(n){ +if (this.bsAtoms == null) { +this.bsAtoms = new JU.BS(); +if (n != 0) this.bsAtoms.setBits(0, (n < 0 ? this.ac : n)); +}return this.bsAtoms; +}, "~N"); +Clazz_defineMethod(c$, "setBSAtomsForSet", +function(iSet){ +if (this.bsAtoms != null) { +if (iSet < 0) iSet = this.iSet; +var pt = this.atomSetAtomIndexes[iSet]; +if (this.bsAtoms.nextSetBit(pt) < 0) { +var n = this.atomSetAtomCounts[iSet]; +this.bsAtoms.setBits(pt, pt + n); +}}}, "~N"); +Clazz_defineMethod(c$, "fix2Stereo", +function(){ +this.getBSAtoms(-1); +for (var i = this.bondCount; --i >= 0; ) { +var b = this.bonds[i]; +if (this.atoms[b.atomIndex2].elementSymbol.equals("H") && b.order != 1025 && b.order != 1041 && this.atoms[b.atomIndex1].elementSymbol.equals("C")) { +this.bsAtoms.clear(b.atomIndex2); +} else if (this.atoms[b.atomIndex1].elementSymbol.equals("H") && this.atoms[b.atomIndex2].elementSymbol.equals("C")) { +this.bsAtoms.clear(b.atomIndex1); +}} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["javajs.api.GenericLineReader", "JU.SB", "JV.Viewer"], "J.adapter.smarter.AtomSetCollectionReader", ["JU.BS", "$.Lst", "$.M3", "$.P3", "$.PT", "$.Quat", "$.V3", "J.adapter.smarter.Atom", "$.AtomSetCollection", "J.api.Interface", "$.JmolAdapter", "JU.BSUtil", "$.Logger", "$.SimpleUnitCell", "JV.FileManager", "$.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isBinary = false; +this.debugging = false; +this.requiresBSFilter = false; +this.primitiveToCrystal = null; +this.asc = null; +this.reader = null; +this.binaryDoc = null; +this.readerName = null; +this.htParams = null; +this.trajectorySteps = null; +this.domains = null; +this.validation = null; +this.dssr = null; +this.isConcatenated = false; +this.addedData = null; +this.addedDataKey = null; +this.thisBiomolecule = null; +this.lstNCS = null; +this.floatifyJavaDouble = true; +this.line = null; +this.prevline = null; +this.next = null; +this.ptLine = 0; +this.checkNearAtoms = true; +this.latticeType = null; +this.latticeCells = null; +this.fillRange = null; +this.doProcessLines = false; +this.iHaveUnitCell = false; +this.iHaveSymmetryOperators = false; +this.continuing = true; +this.vwr = null; +this.doApplySymmetry = false; +this.ignoreFileSymmetryOperators = false; +this.isTrajectory = false; +this.applySymmetryToBonds = false; +this.doCheckUnitCell = false; +this.getHeader = false; +this.isSequential = false; +this.optimize2D = false; +this.noHydrogens = false; +this.noMinimize = false; +this.is2D = false; +this.isMolecular = false; +this.templateAtomCount = 0; +this.modelNumber = 0; +this.vibrationNumber = 0; +this.desiredVibrationNumber = -2147483648; +this.bsModels = null; +this.useFileModelNumbers = false; +this.havePartialChargeFilter = false; +this.calculationType = "?"; +this.sgName = null; +this.ignoreFileUnitCell = false; +this.ignoreFileSpaceGroupName = false; +this.unitCellParams = null; +this.desiredModelNumber = -2147483648; +this.symmetry = null; +this.out = null; +this.iHaveFractionalCoordinates = false; +this.doPackUnitCell = false; +this.ptSupercell = null; +this.mustFinalizeModelSet = false; +this.forcePacked = false; +this.packingRange = null; +this.cellSlop = 1.0E-4; +this.rotateHexCell = false; +this.isPrimitive = false; +this.modDim = 0; +this.lowPrecision = false; +this.highprecision0 = false; +this.loadNote = null; +this.doConvertToFractional = false; +this.fileCoordinatesAreFractional = false; +this.merging = false; +this.symmetryRange = 0; +this.firstLastStep = null; +this.lastModelNumber = 2147483647; +this.desiredSpaceGroupIndex = -1; +this.latticeScaling = NaN; +this.unitCellOffset = null; +this.unitCellOffsetFractional = false; +this.moreUnitCellInfo = null; +this.paramsLattice = null; +this.paramsCentroid = false; +this.paramsPacked = false; +this.fileScaling = null; +this.fileOffset = null; +this.fileOffsetFractional = null; +this.filePath = null; +this.fileName = null; +this.baseAtomIndex = 0; +this.baseBondIndex = 0; +this.stateScriptVersionInt = 2147483647; +this.isFinalized = false; +this.noPack = false; +this.isSUPERCELL = false; +this.precision = 0; +this.haveModel = false; +this.previousSpaceGroup = null; +this.previousUnitCell = null; +this.nMatrixElements = 0; +this.ucItems = null; +this.matUnitCellOrientation = null; +this.bsFilter = null; +this.filter = null; +this.filterCased = null; +this.haveAtomFilter = false; +this.filterAltLoc = false; +this.filterGroup3 = false; +this.filterChain = false; +this.filterAtomName = false; +this.filterAtomType = false; +this.filterAtomTypeStr = null; +this.filterAtomNameTerminator = ";"; +this.filterElement = false; +this.filterHetero = false; +this.filterAllHetero = false; +this.filterEveryNth = false; +this.filterSymop = null; +this.filterN = 0; +this.nFiltered = 0; +this.doSetOrientation = false; +this.doCentralize = false; +this.addVibrations = false; +this.useAltNames = false; +this.ignoreStructure = false; +this.isDSSP1 = false; +this.allowPDBFilter = false; +this.doReadMolecularOrbitals = false; +this.reverseModels = false; +this.nameRequired = null; +this.doCentroidUnitCell = false; +this.centroidPacked = false; +this.strSupercell = null; +this.allow_a_len_1 = false; +this.slabXY = false; +this.polymerX = false; +this.fixUnitCell = false; +this.filteredPrecision = false; +this.filter1 = null; +this.filter2 = null; +this.filter1Cased = null; +this.filter2Cased = null; +this.matRot = null; +this.ms = null; +this.vibsFractional = false; +this.previousScript = null; +this.siteScript = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "AtomSetCollectionReader", null, javajs.api.GenericLineReader); +Clazz_prepareFields (c$, function(){ +this.next = Clazz_newIntArray (1, 0); +this.highprecision0 = JV.Viewer.isHighPrecision; +this.loadNote = new JU.SB(); +}); +Clazz_defineMethod(c$, "getPackingRangeValue", +function(def){ +return (this.packingRange != null ? this.packingRange.floatValue() : def != 0 ? def : 0.02); +}, "~N"); +Clazz_defineMethod(c$, "setup", +function(fullPath, htParams, readerOrDocument){ +this.setupASCR(fullPath, htParams, readerOrDocument); +}, "~S,java.util.Map,~O"); +Clazz_defineMethod(c$, "setupASCR", +function(fullPath, htParams, readerOrDocument){ +if (fullPath == null) return; +this.debugging = JU.Logger.debugging; +this.htParams = htParams; +this.filePath = JV.FileManager.stripTypePrefix("" + htParams.get("fullPathName")); +var i = this.filePath.lastIndexOf('/'); +this.fileName = this.filePath.substring(i + 1); +if (Clazz_instanceOf(readerOrDocument,"java.io.BufferedReader")) this.reader = readerOrDocument; + else if (Clazz_instanceOf(readerOrDocument,"javajs.api.GenericBinaryDocument")) this.binaryDoc = readerOrDocument; +}, "~S,java.util.Map,~O"); +Clazz_defineMethod(c$, "readData", +function(){ +this.initialize(); +this.asc = new J.adapter.smarter.AtomSetCollection(this.readerName, this, null, null); +try { +this.initializeReader(); +if (this.binaryDoc == null) { +if (this.line == null && this.continuing) this.rd(); +while (this.line != null && this.continuing) if (this.checkLine()) this.rd(); + +} else { +this.binaryDoc.setOutputChannel(this.out); +this.processBinaryDocument(); +}this.finalizeSubclassReader(); +if (!this.isFinalized) this.finalizeReaderASCR(); +} catch (e) { +JU.Logger.info("Reader error: " + e); +e.printStackTrace(); +this.setError(e); +} +if (this.reader != null) this.reader.close(); +if (this.binaryDoc != null) this.binaryDoc.close(); +return this.finish(); +}); +Clazz_defineMethod(c$, "fixBaseIndices", +function(){ +try { +var ii = this.htParams.get("baseModelIndex"); +if (ii == null) return; +var baseModelIndex = ii.intValue(); +this.baseAtomIndex += this.asc.ac; +this.baseBondIndex += this.asc.bondCount; +baseModelIndex += this.asc.atomSetCount; +this.htParams.put("baseAtomIndex", Integer.$valueOf(this.baseAtomIndex)); +this.htParams.put("baseBondIndex", Integer.$valueOf(this.baseBondIndex)); +this.htParams.put("baseModelIndex", Integer.$valueOf(baseModelIndex)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "readDataObject", +function(node){ +this.initialize(); +this.asc = new J.adapter.smarter.AtomSetCollection(this.readerName, this, null, null); +this.initializeReader(); +this.processDOM(node); +return this.finish(); +}, "~O"); +Clazz_defineMethod(c$, "processDOM", +function(DOMNode){ +}, "~O"); +Clazz_defineMethod(c$, "processBinaryDocument", +function(){ +}); +Clazz_defineMethod(c$, "initializeReader", +function(){ +}); +Clazz_defineMethod(c$, "checkLine", +function(){ +return true; +}); +Clazz_defineMethod(c$, "checkLastModel", +function(){ +if (this.isLastModel(this.modelNumber) && this.doProcessLines) return (this.continuing = this.doProcessLines = false); +this.doProcessLines = false; +return true; +}); +Clazz_defineMethod(c$, "isLastModel", +function(modelNumber){ +return (this.desiredModelNumber > 0 || modelNumber >= this.lastModelNumber); +}, "~N"); +Clazz_defineMethod(c$, "appendLoadNote", +function(info){ +if (info == null) { +this.loadNote = new JU.SB(); +return; +}this.loadNote.append(info).append("\n"); +JU.Logger.info(info); +}, "~S"); +Clazz_defineMethod(c$, "initializeTrajectoryFile", +function(){ +this.asc.addAtom( new J.adapter.smarter.Atom()); +this.trajectorySteps = this.htParams.get("trajectorySteps"); +if (this.trajectorySteps == null) this.htParams.put("trajectorySteps", this.trajectorySteps = new JU.Lst()); +}); +Clazz_defineMethod(c$, "finalizeSubclassReader", +function(){ +}); +Clazz_defineMethod(c$, "finalizeReaderASCR", +function(){ +this.isFinalized = true; +if (this.asc.atomSetCount > 0) { +if (this.asc.atomSetCount == 1) { +this.asc.setCurrentModelInfo("dbName", this.htParams.get("dbName")); +this.asc.setCurrentModelInfo("auxFiles", this.htParams.get("auxFiles")); +}this.applySymmetryAndSetTrajectory(); +this.asc.finalizeStructures(); +if (this.doCentralize) this.asc.centralize(); +if (this.fillRange != null) this.asc.setInfo("boundbox", this.fillRange); +var info = this.asc.getAtomSetAuxiliaryInfo(0); +if (info != null) { +if (this.domains != null) { +this.asc.setGlobalBoolean(5); +var s = (this.domains).getMapKeys(2, true); +var pt = s.indexOf("{ ", 2); +if (pt >= 0) s = s.substring(pt + 2); +pt = s.indexOf("_metadata"); +if (pt < 0) pt = s.indexOf("metadata"); +if (pt >= 0) s = s.substring(0, pt); +s = JU.PT.rep(JU.PT.replaceAllCharacters(s, "{}", "").trim(), "\n", "\n ") + "\n\nUse SHOW DOMAINS for details."; +this.appendLoadNote("\nDomains loaded:\n " + s); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("domains", this.domains); +} +}if (this.validation != null) { +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("validation", this.validation); +} +}if (this.dssr != null) { +info.put("dssrJSON", Boolean.TRUE); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +info = this.asc.getAtomSetAuxiliaryInfo(i); +info.put("dssr", this.dssr); +} +}}}if (!this.floatifyJavaDouble) this.asc.setInfo("highPrecision", Boolean.TRUE); +this.setLoadNote(); +}); +Clazz_defineMethod(c$, "setLoadNote", +function(){ +var s = this.loadNote.toString(); +if (this.loadNote.length() > 0) this.asc.setInfo("modelLoadNote", s); +return s; +}); +Clazz_defineMethod(c$, "setIsPDB", +function(){ +this.asc.setGlobalBoolean(4); +if (this.htParams.get("pdbNoHydrogens") != null) this.asc.setInfo("pdbNoHydrogens", this.htParams.get("pdbNoHydrogens")); +if (this.checkFilterKey("ADDHYDROGENS")) this.asc.setInfo("pdbAddHydrogens", Boolean.TRUE); +}); +Clazz_defineMethod(c$, "setModelPDB", +function(isPDB){ +if (isPDB) this.asc.setGlobalBoolean(4); + else this.asc.clearGlobalBoolean(4); +this.asc.setCurrentModelInfo(JV.JC.getBoolName(4), isPDB ? Boolean.TRUE : null); +}, "~B"); +Clazz_defineMethod(c$, "finish", +function(){ +if (false != this.highprecision0) this.vwr.setBooleanPropertyTok("doubleprecision", 603979831, this.highprecision0); +var s = this.htParams.get("loadState"); +this.asc.setInfo("loadState", s == null ? "" : s); +s = this.htParams.get("smilesString"); +if (s != null) this.asc.setInfo("smilesString", s); +if (!this.htParams.containsKey("templateAtomCount")) this.htParams.put("templateAtomCount", Integer.$valueOf(this.asc.ac)); +if (this.bsFilter != null) { +this.htParams.put("filteredAtomCount", Integer.$valueOf(JU.BSUtil.cardinalityOf(this.bsFilter))); +this.htParams.put("bsFilter", this.bsFilter); +}if (!this.calculationType.equals("?")) this.asc.setInfo("calculationType", this.calculationType); +var name = this.asc.fileTypeName; +var fileType = name; +if (fileType.indexOf("(") >= 0) fileType = fileType.substring(0, fileType.indexOf("(")); +for (var i = this.asc.atomSetCount; --i >= 0; ) { +this.asc.setModelInfoForSet("fileName", this.filePath, i); +this.asc.setModelInfoForSet("fileType", fileType, i); +} +this.asc.freeze(this.reverseModels); +if (this.asc.errorMessage != null) return this.asc.errorMessage + "\nfor file " + this.filePath + "\ntype " + name; +if (!this.merging && (this.asc.bsAtoms == null ? this.asc.ac == 0 : this.asc.bsAtoms.nextSetBit(0) < 0) && fileType.indexOf("DataOnly") < 0 && this.asc.atomSetInfo.get("dataOnly") == null) return "No atoms found\nfor file " + this.filePath + "\ntype " + name; +this.fixBaseIndices(); +return this.asc; +}); +Clazz_defineMethod(c$, "setError", +function(e){ +var s = e.getMessage(); +if (this.line == null) this.asc.errorMessage = "Error reading file at end of file \n" + s; + else this.asc.errorMessage = "Error reading file at line " + this.ptLine + ":\n" + this.line + "\n" + s; +e.printStackTrace(); +}, "Throwable"); +Clazz_defineMethod(c$, "initialize", +function(){ +if (this.htParams.containsKey("baseAtomIndex")) this.baseAtomIndex = (this.htParams.get("baseAtomIndex")).intValue(); +if (this.htParams.containsKey("baseBondIndex")) this.baseBondIndex = (this.htParams.get("baseBondIndex")).intValue(); +this.initializeSymmetry(); +this.vwr = this.htParams.remove("vwr"); +if (this.htParams.containsKey("stateScriptVersionInt")) this.stateScriptVersionInt = (this.htParams.get("stateScriptVersionInt")).intValue(); +this.packingRange = this.htParams.get("packingRange"); +var isHighPrecision = (this.htParams.get("highPrecision") != null); +if (this.packingRange == null && isHighPrecision) { +this.floatifyJavaDouble = false; +this.packingRange = Float.$valueOf(1.0E-4); +}this.merging = this.htParams.containsKey("merging"); +this.getHeader = this.htParams.containsKey("getHeader"); +this.isSequential = this.htParams.containsKey("isSequential"); +this.readerName = this.htParams.get("readerName"); +if (this.htParams.containsKey("outputChannel")) this.out = this.htParams.get("outputChannel"); +if (this.htParams.containsKey("vibrationNumber")) this.desiredVibrationNumber = (this.htParams.get("vibrationNumber")).intValue(); + else if (this.htParams.containsKey("modelNumber")) this.desiredModelNumber = (this.htParams.get("modelNumber")).intValue(); +this.applySymmetryToBonds = this.htParams.containsKey("applySymmetryToBonds"); +this.bsFilter = (this.requiresBSFilter ? this.htParams.get("bsFilter") : null); +this.setFilter(null); +this.fillRange = this.htParams.get("fillRange"); +this.paramsLattice = this.htParams.get("lattice"); +var o = this.htParams.get("supercell"); +this.noPack = this.checkFilterKey("NOPACK"); +if (this.strSupercell != null && !this.noPack) { +this.forcePacked = true; +}if (Clazz_instanceOf(o,"JU.P3")) { +var s = this.ptSupercell = o; +if (s.length() != 1) { +this.strSupercell = (Clazz_floatToInt(s.x)) + "a," + (Clazz_floatToInt(s.y)) + "b," + (Clazz_floatToInt(s.z)) + "c"; +this.isSUPERCELL = true; +}} else if ((typeof(o)=='string')) { +this.strSupercell = o; +this.isSUPERCELL = true; +}var ptFile = (this.htParams.containsKey("ptFile") ? (this.htParams.get("ptFile")).intValue() : -1); +this.isTrajectory = this.htParams.containsKey("isTrajectory"); +if (ptFile > 0 && this.htParams.containsKey("firstLastSteps")) { +var val = (this.htParams.get("firstLastSteps")).get(ptFile - 1); +if (Clazz_instanceOf(val,"JU.BS")) { +this.bsModels = val; +} else { +this.firstLastStep = val; +}} else if (this.htParams.containsKey("firstLastStep")) { +this.firstLastStep = this.htParams.get("firstLastStep"); +} else if (this.htParams.containsKey("bsModels")) { +this.bsModels = this.htParams.get("bsModels"); +}this.useFileModelNumbers = this.htParams.containsKey("useFileModelNumbers") || this.checkFilterKey("USEFILEMODELNUMBERS"); +if (this.htParams.containsKey("templateAtomCount")) this.templateAtomCount = (this.htParams.get("templateAtomCount")).intValue(); +if (this.bsModels != null || this.firstLastStep != null) this.desiredModelNumber = -2147483648; +if (this.bsModels == null && this.firstLastStep != null) { +if (this.firstLastStep[0] < 0) this.firstLastStep[0] = 0; +if (this.firstLastStep[2] == 0 || this.firstLastStep[1] < this.firstLastStep[0]) this.firstLastStep[1] = -1; +if (this.firstLastStep[2] < 1) this.firstLastStep[2] = 1; +this.bsModels = JU.BSUtil.newAndSetBit(this.firstLastStep[0]); +if (this.firstLastStep[1] > this.firstLastStep[0]) { +for (var i = this.firstLastStep[0]; i <= this.firstLastStep[1]; i += this.firstLastStep[2]) this.bsModels.set(i); + +}}if (this.bsModels != null && (this.firstLastStep == null || this.firstLastStep[1] != -1)) this.lastModelNumber = this.bsModels.length(); +this.symmetryRange = (this.htParams.containsKey("symmetryRange") ? (this.htParams.get("symmetryRange")).floatValue() : 0); +this.paramsCentroid = this.htParams.containsKey("centroid"); +this.paramsPacked = this.htParams.containsKey("packed"); +this.initializeSymmetryOptions(); +if (this.htParams.containsKey("spaceGroupIndex")) { +this.desiredSpaceGroupIndex = (this.htParams.get("spaceGroupIndex")).intValue(); +if (this.desiredSpaceGroupIndex == -2) this.sgName = this.htParams.get("spaceGroupName"); +this.ignoreFileSpaceGroupName = (this.desiredSpaceGroupIndex == -2 || this.desiredSpaceGroupIndex >= 0); +this.ignoreFileSymmetryOperators = (this.desiredSpaceGroupIndex != -1); +}if (this.htParams.containsKey("unitCellOffset")) { +this.fileScaling = JU.P3.new3(1, 1, 1); +this.fileOffset = this.htParams.get("unitCellOffset"); +this.fileOffsetFractional = JU.P3.newP(this.fileOffset); +this.unitCellOffsetFractional = this.htParams.containsKey("unitCellOffsetFractional"); +}if (this.htParams.containsKey("unitcell")) { +var fParams = this.htParams.get("unitcell"); +if (this.merging) this.setFractionalCoordinates(true); +if (fParams.length == 9) { +this.addExplicitLatticeVector(0, fParams, 0); +this.addExplicitLatticeVector(1, fParams, 3); +this.addExplicitLatticeVector(2, fParams, 6); +} else { +this.setUnitCell(fParams[0], fParams[1], fParams[2], fParams[3], fParams[4], fParams[5]); +}this.ignoreFileUnitCell = this.iHaveUnitCell; +if (this.merging && !this.iHaveUnitCell) this.setFractionalCoordinates(false); +}this.domains = this.htParams.get("domains"); +this.validation = this.htParams.get("validation"); +this.dssr = this.htParams.get("dssr"); +this.isConcatenated = this.htParams.containsKey("concatenate"); +}); +Clazz_defineMethod(c$, "parsePrecision", +function(s){ +if (!this.filteredPrecision) { +var pt = s.indexOf('.') + 1; +if (pt >= 0) { +var n = s.indexOf('('); +if (n < 0) { +this.precision = Math.max(this.precision, s.length - pt); +} else { +if (this.precision == 0) this.precision = n; +this.precision = Math.min(this.precision, n - 1 - pt); +}}}return this.parseFloatStr(s); +}, "~S"); +Clazz_defineMethod(c$, "setLowPrecision", +function(){ +this.lowPrecision = true; +this.cellSlop = 1.0E-4; +if (this.packingRange == null) this.packingRange = Double.$valueOf(1.0E-4); +}); +Clazz_defineMethod(c$, "setPrecision", +function(){ +var isHigh; +if (this.lowPrecision) { +isHigh = false; +this.precision = 4; +} else { +if (this.precision > 1000) { +this.precision -= 1000; +} else { +this.precision = Math.min(12, Math.max(4, this.precision)); +}isHigh = (this.precision >= 7); +if (isHigh) { +this.vwr.setBooleanProperty("doubleprecision", true); +if (JV.Viewer.isHighPrecision) { +this.cellSlop = 1.0E-12; +if (!this.paramsPacked) this.packingRange = Double.$valueOf(this.cellSlop); +this.asc.setInfo("highPrecision", Boolean.TRUE); +} else { +isHigh = false; +this.precision = 6; +this.appendLoadNote("Structure read has high precision but this version of Jmol uses float precision.\nUse JmolD.jar or JavaScript for full precision."); +}}}if (!isHigh) { +if (this.precision < 10) { +this.cellSlop = Math.pow(10, -this.precision); +}}this.symmetry.setPrecision(this.cellSlop); +this.unitCellParams[26] = this.cellSlop; +if (this.fileCoordinatesAreFractional) { +for (var i = this.asc.ac, n = this.asc.getLastAtomSetAtomIndex(); --i >= n; ) { +this.symmetry.twelfthify(this.asc.atoms[i]); +} +}this.appendLoadNote("Precision set to " + this.precision + "; packing set to " + (this.packingRange == null ? 0.02 : this.packingRange.floatValue())); +}); +Clazz_defineMethod(c$, "initializeSymmetryOptions", +function(){ +this.latticeCells = Clazz_newIntArray (4, 0); +this.doApplySymmetry = false; +var pt = this.paramsLattice; +if (pt == null || pt.length() == 0) { +if (!this.forcePacked && this.strSupercell == null) return; +pt = JU.P3.new3(1, 1, 1); +}this.latticeCells[0] = Clazz_floatToInt(pt.x); +this.latticeCells[1] = Clazz_floatToInt(pt.y); +this.latticeCells[2] = Clazz_floatToInt(pt.z); +if (Clazz_instanceOf(pt,"JU.T4")) this.latticeCells[3] = Clazz_floatToInt((pt).w); +this.doCentroidUnitCell = this.paramsCentroid; +if (this.doCentroidUnitCell && (this.latticeCells[2] == -1 || this.latticeCells[2] == 0)) this.latticeCells[2] = 1; +var isPacked = this.forcePacked || this.paramsPacked; +this.centroidPacked = this.doCentroidUnitCell && isPacked; +this.doPackUnitCell = !this.doCentroidUnitCell && (isPacked || this.latticeCells[2] < 0); +this.doApplySymmetry = (this.latticeCells[0] > 0 && this.latticeCells[1] > 0); +if (!this.doApplySymmetry) this.latticeCells = Clazz_newIntArray (3, 0); +}); +Clazz_defineMethod(c$, "doGetModel", +function(modelNumber, title){ +if (title != null && this.nameRequired != null && this.nameRequired.length > 0 && title.toUpperCase().indexOf(this.nameRequired) < 0) return false; +var isOK = (this.bsModels == null ? this.desiredModelNumber < 1 || modelNumber == this.desiredModelNumber : modelNumber > this.lastModelNumber ? false : modelNumber > 0 && this.bsModels.get(modelNumber - 1) || this.haveModel && this.firstLastStep != null && this.firstLastStep[1] < 0 && (this.firstLastStep[2] < 2 || (modelNumber - 1 - this.firstLastStep[0]) % this.firstLastStep[2] == 0)); +if (isOK && this.desiredModelNumber == 0) this.discardPreviousAtoms(); +this.haveModel = new Boolean (this.haveModel | isOK).valueOf(); +if (isOK) this.doProcessLines = true; +return isOK; +}, "~N,~S"); +Clazz_defineMethod(c$, "discardPreviousAtoms", +function(){ +this.asc.discardPreviousAtoms(); +}); +Clazz_defineMethod(c$, "initializeSymmetry", +function(){ +this.previousSpaceGroup = this.sgName; +this.previousUnitCell = this.unitCellParams; +this.iHaveUnitCell = this.ignoreFileUnitCell; +if (!this.ignoreFileUnitCell) { +this.unitCellParams = Clazz_newFloatArray (27, 0); +for (var i = 27; --i >= 0; ) this.unitCellParams[i] = NaN; + +this.unitCellParams[25] = this.latticeScaling; +this.unitCellParams[26] = this.cellSlop; +this.symmetry = null; +}if (!this.ignoreFileSpaceGroupName) this.sgName = "unspecified!"; +this.doCheckUnitCell = false; +}); +Clazz_defineMethod(c$, "newAtomSet", +function(name){ +if (this.asc.iSet >= 0) { +this.asc.newAtomSet(); +this.asc.setCollectionName(""); +} else { +this.asc.setCollectionName(name); +}this.asc.setModelInfoForSet("name", name, Math.max(0, this.asc.iSet)); +this.asc.setAtomSetName(name); +}, "~S"); +Clazz_defineMethod(c$, "cloneLastAtomSet", +function(ac, pts){ +var lastAtomCount = this.asc.getLastAtomSetAtomCount(); +this.asc.cloneLastAtomSetFromPoints(ac, pts); +if (this.asc.haveUnitCell) { +this.iHaveUnitCell = true; +this.doCheckUnitCell = true; +this.sgName = this.previousSpaceGroup; +this.unitCellParams = this.previousUnitCell; +}return lastAtomCount; +}, "~N,~A"); +Clazz_defineMethod(c$, "setSpaceGroupName", +function(name){ +if (this.ignoreFileSpaceGroupName || name == null) return; +var s = name.trim(); +if (s.length == 0 || s.equals("HM:") || s.equals(this.sgName)) return; +if (!s.equals("P1")) JU.Logger.info("Setting space group name to " + s); +this.sgName = s; +}, "~S"); +Clazz_defineMethod(c$, "setSymmetryOperator", +function(xyz){ +if (this.ignoreFileSymmetryOperators) return -1; +var isym = this.asc.getXSymmetry().addSpaceGroupOperation(xyz, true); +if (isym < 0) JU.Logger.warn("Skippings symmetry operation " + xyz); +this.iHaveSymmetryOperators = true; +return isym; +}, "~S"); +Clazz_defineMethod(c$, "initializeCartesianToFractional", +function(){ +for (var i = 0; i < 16; i++) if (!Float.isNaN(this.unitCellParams[6 + i])) return; + +for (var i = 0; i < 16; i++) this.unitCellParams[6 + i] = ((i % 5 == 0 ? 1 : 0)); + +this.nMatrixElements = 0; +}); +Clazz_defineMethod(c$, "clearUnitCell", +function(){ +if (this.ignoreFileUnitCell) return; +for (var i = 6; i < 22; i++) this.unitCellParams[i] = NaN; + +this.checkUnitCell(6); +}); +Clazz_defineMethod(c$, "setUnitCellItem", +function(i, x){ +if (this.ignoreFileUnitCell) return; +if (i == 0 && x == 1 && !this.allow_a_len_1 || i == 3 && x == 0) { +if (this.ucItems == null) this.ucItems = Clazz_newFloatArray (6, 0); +this.ucItems[i] = x; +return; +}if (this.ucItems != null && i < 6) this.ucItems[i] = x; +if (!Float.isNaN(x) && i >= 6 && Float.isNaN(this.unitCellParams[6])) this.initializeCartesianToFractional(); +this.unitCellParams[i] = x; +if (this.debugging) { +JU.Logger.debug("setunitcellitem " + i + " " + x); +}if (i < 6 || Float.isNaN(x)) this.iHaveUnitCell = this.checkUnitCell(6); + else if (++this.nMatrixElements == 12) this.iHaveUnitCell = this.checkUnitCell(22); +}, "~N,~N"); +Clazz_defineMethod(c$, "setUnitCell", +function(a, b, c, alpha, beta, gamma){ +if (this.ignoreFileUnitCell) return; +this.clearUnitCell(); +this.unitCellParams[0] = a; +this.unitCellParams[1] = b; +this.unitCellParams[2] = c; +if (alpha != 0) this.unitCellParams[3] = alpha; +if (beta != 0) this.unitCellParams[4] = beta; +if (gamma != 0) this.unitCellParams[5] = gamma; +this.iHaveUnitCell = this.checkUnitCell(6); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "addExplicitLatticeVector", +function(i, xyz, i0){ +if (this.ignoreFileUnitCell) return; +if (i == 0) for (var j = 0; j < 6; j++) this.unitCellParams[j] = 0; + +i = 6 + i * 3; +this.unitCellParams[i++] = xyz[i0++]; +this.unitCellParams[i++] = xyz[i0++]; +this.unitCellParams[i] = xyz[i0]; +if (Float.isNaN(this.unitCellParams[0])) { +for (i = 0; i < 6; i++) this.unitCellParams[i] = -1; + +}this.iHaveUnitCell = this.checkUnitCell(15); +if (this.iHaveUnitCell) { +if (this.slabXY || this.polymerX) this.unitCellParams[2] = -1; +if (this.polymerX) this.unitCellParams[1] = -1; +}}, "~N,~A,~N"); +Clazz_defineMethod(c$, "checkUnitCell", +function(n){ +for (var i = 0; i < n; i++) if (Float.isNaN(this.unitCellParams[i])) return false; + +this.fixFloatA(this.unitCellParams); +if (n == 22 && this.unitCellParams[0] == 1) { +if (this.unitCellParams[1] == 1 && this.unitCellParams[2] == 1 && this.unitCellParams[6] == 1 && this.unitCellParams[11] == 1 && this.unitCellParams[16] == 1) { +return false; +}}if (n == 6 && Float.isNaN(this.unitCellParams[6])) { +if (this.slabXY && this.unitCellParams[2] > 0) { +JU.SimpleUnitCell.addVectors(this.unitCellParams); +this.unitCellParams[2] = -1; +} else if (this.polymerX && this.unitCellParams[1] > 0) { +JU.SimpleUnitCell.addVectors(this.unitCellParams); +this.unitCellParams[1] = this.unitCellParams[2] = -1; +}}if (this.doApplySymmetry) { +this.getSymmetry(); +this.doConvertToFractional = !this.fileCoordinatesAreFractional; +}return true; +}, "~N"); +Clazz_defineMethod(c$, "getSymmetry", +function(){ +if (!this.iHaveUnitCell) return null; +if (this.symmetry == null) { +(this.symmetry = this.asc.newFileSymmetry()).setUnitCellFromParams(this.unitCellParams, false, this.cellSlop); +this.checkUnitCellOffset(); +}if (this.symmetry == null) this.iHaveUnitCell = false; + else this.symmetry.setSpaceGroupName(this.sgName); +return this.symmetry; +}); +Clazz_defineMethod(c$, "checkUnitCellOffset", +function(){ +if (this.fileOffsetFractional == null || this.symmetry == null) return; +this.fileOffset.setT(this.fileOffsetFractional); +if (this.unitCellOffsetFractional != this.fileCoordinatesAreFractional) { +if (this.unitCellOffsetFractional) this.symmetry.toCartesian(this.fileOffset, false); + else this.symmetry.toFractional(this.fileOffset, false); +}}); +Clazz_defineMethod(c$, "fractionalizeCoordinates", +function(toFrac){ +if (this.getSymmetry() == null) return; +var a = this.asc.atoms; +if (toFrac) for (var i = this.asc.ac; --i >= 0; ) this.symmetry.toFractional(a[i], false); + + else for (var i = this.asc.ac; --i >= 0; ) this.symmetry.toCartesian(a[i], false); + +this.setFractionalCoordinates(toFrac); +}, "~B"); +Clazz_defineMethod(c$, "setFractionalCoordinates", +function(TF){ +this.iHaveFractionalCoordinates = this.fileCoordinatesAreFractional = TF; +this.checkUnitCellOffset(); +}, "~B"); +Clazz_defineMethod(c$, "setFilterAtomTypeStr", +function(s){ +this.filterAtomTypeStr = s; +this.filterAtomNameTerminator = "\0"; +}, "~S"); +Clazz_defineMethod(c$, "setFilter", +function(filter0){ +if (filter0 == null) { +filter0 = this.htParams.get("filter"); +} else { +this.bsFilter = null; +this.filterCased = null; +}if (this.filterCased == null) this.filterCased = (filter0 == null ? null : filter0 + ";"); +if (filter0 != null) filter0 = filter0.toUpperCase(); +this.filter = filter0; +this.doSetOrientation = !this.checkFilterKey("NOORIENT"); +this.doCentralize = (!this.checkFilterKey("NOCENTER") && this.checkFilterKey("CENTER")); +this.addVibrations = !this.checkFilterKey("NOVIB"); +this.ignoreStructure = this.checkFilterKey("DSSP"); +this.isDSSP1 = this.checkFilterKey("DSSP1"); +this.doReadMolecularOrbitals = !this.checkFilterKey("NOMO"); +this.useAltNames = this.checkFilterKey("ALTNAME"); +this.reverseModels = this.checkFilterKey("REVERSEMODELS"); +this.allow_a_len_1 = this.checkFilterKey("TOPOS"); +this.slabXY = this.checkFilterKey("SLABXY"); +this.polymerX = !this.slabXY && this.checkFilterKey("POLYMERX"); +this.noHydrogens = this.checkFilterKey("NOH"); +this.noMinimize = this.checkFilterKey("NOMIN"); +this.optimize2D = this.checkFilterKey("2D") && !this.noHydrogens && !this.noMinimize; +if (this.filter == null) return; +this.fixUnitCell = this.checkFilterKey("FIXUNITCELL"); +if (this.checkFilterKey("LOWPRECISION")) { +this.setLowPrecision(); +}if (this.checkFilterKey("HETATM")) { +this.filterHetero = true; +this.filter = JU.PT.rep(this.filter, "HETATM", "HETATM-Y"); +this.filterCased = JU.PT.rep(this.filterCased, "HETATM", "HETATM-Y"); +}if (this.checkFilterKey("ATOM")) { +this.filterHetero = true; +this.filter = JU.PT.rep(this.filter, "ATOM", "HETATM-N"); +this.filterCased = JU.PT.rep(this.filterCased, "ATOM", "HETATM-N"); +}if (this.checkFilterKey("CELL=")) this.strSupercell = this.filter.substring(this.filter.indexOf("CELL=") + 5).toLowerCase(); +this.nameRequired = JU.PT.getQuotedAttribute(this.filter, "NAME"); +if (this.nameRequired != null) { +if (this.nameRequired.startsWith("'")) this.nameRequired = JU.PT.split(this.nameRequired, "'")[1]; + else if (this.nameRequired.startsWith("\"")) this.nameRequired = JU.PT.split(this.nameRequired, "\"")[1]; +this.filter = JU.PT.rep(this.filter, this.nameRequired, ""); +filter0 = this.filter = JU.PT.rep(this.filter, "NAME=", ""); +}this.filterAtomName = this.checkFilterKey("*.") || this.checkFilterKey("!."); +if (this.filter.startsWith("_") || this.filter.startsWith("!_") || this.filter.indexOf(";_") >= 0) this.filterElement = this.checkFilterKey("_"); +this.filterGroup3 = this.checkFilterKey("["); +this.filterChain = this.checkFilterKey(":"); +this.filterAltLoc = this.checkFilterKey("%"); +this.filterEveryNth = this.checkFilterKey("/="); +this.filterAllHetero = this.checkFilterKey("ALLHET"); +if (this.filterEveryNth) this.filterN = this.parseIntAt(this.filter, this.filter.indexOf("/=") + 2); + else if (this.filter.startsWith("=") || this.filter.indexOf(";=") >= 0) this.filterAtomType = this.checkFilterKey("="); +if (this.filterN == -2147483648) this.filterEveryNth = false; +this.haveAtomFilter = this.filterAtomName || this.filterAtomType || this.filterElement || this.filterGroup3 || this.filterChain || this.filterAltLoc || this.filterHetero || this.filterEveryNth || this.checkFilterKey("/="); +if (this.bsFilter == null) { +this.bsFilter = new JU.BS(); +this.htParams.put("bsFilter", this.bsFilter); +this.filter = (";" + this.filter + ";").$replace(',', ';'); +var p = this.getFilter("PRECISION="); +if (p != null) { +var prec = JU.PT.parseInt(p); +if (prec > 0 && prec <= 16) { +this.precision = 1000 + prec; +this.filteredPrecision = true; +}}var s = this.getFilter("LATTICESCALING="); +if (s != null && this.unitCellParams.length > 25) this.unitCellParams[25] = this.latticeScaling = this.parseFloatStr(s); +s = this.getFilter("SYMOP="); +if (s != null) this.filterSymop = " " + s + " "; +JU.Logger.info("filtering with " + this.filter); +if (this.haveAtomFilter) { +var ipt; +this.filter1Cased = this.filterCased; +this.filter2Cased = ""; +if ((ipt = this.filter.indexOf("|")) >= 0) { +this.filter1Cased = this.filter.substring(0, ipt).trim() + ";"; +this.filter2Cased = ";" + this.filter.substring(ipt).trim(); +}this.filter1 = this.filter1Cased.toUpperCase(); +this.filter2 = (this.filter2Cased.length == 0 ? null : this.filter2Cased.toUpperCase()); +}}}, "~S"); +Clazz_defineMethod(c$, "getFilterWithCase", +function(key){ +var pt = (this.filterCased == null ? -1 : this.filterCased.toUpperCase().indexOf(key.toUpperCase())); +return (pt < 0 ? null : this.filterCased.substring(pt + key.length, this.filterCased.indexOf(";", pt))); +}, "~S"); +Clazz_defineMethod(c$, "getFilter", +function(key){ +var pt = (this.filter == null ? -1 : this.filter.indexOf(key)); +return (pt < 0 ? null : this.filter.substring(pt + key.length, this.filter.indexOf(";", pt))); +}, "~S"); +Clazz_defineMethod(c$, "checkFilterKey", +function(key){ +return (this.filter != null && this.filter.indexOf(key) >= 0); +}, "~S"); +Clazz_defineMethod(c$, "checkAndRemoveFilterKey", +function(key){ +if (!this.checkFilterKey(key)) return false; +this.filter = JU.PT.rep(this.filter, key, ""); +if (this.filter.length < 3) this.filter = null; +return true; +}, "~S"); +Clazz_defineMethod(c$, "filterAtom", +function(atom, iAtom){ +if (!this.haveAtomFilter) return true; +var isOK = this.checkFilter(atom, this.filter1, this.filter1Cased); +if (this.filter2 != null) isOK = new Boolean (isOK | this.checkFilter(atom, this.filter2, this.filter2Cased)).valueOf(); +if (isOK && this.filterEveryNth && (!atom.isHetero || !this.filterAllHetero)) isOK = (((this.nFiltered++) % this.filterN) == 0); +this.bsFilter.setBitTo(iAtom >= 0 ? iAtom : this.asc.ac, isOK); +return isOK; +}, "J.adapter.smarter.Atom,~N"); +Clazz_defineMethod(c$, "checkFilter", +function(atom, f, fCased){ +if (atom.isHetero && this.filterAllHetero) return true; +return (!this.filterGroup3 || atom.group3 == null || !this.filterReject(f, "[", atom.group3.toUpperCase() + "]")) && (!this.filterAtomName || this.allowAtomName(atom.atomName, f)) && (this.filterAtomTypeStr == null || atom.atomName == null || atom.atomName.toUpperCase().indexOf("\0" + this.filterAtomTypeStr) >= 0) && (!this.filterElement || atom.elementSymbol == null || !this.filterReject(f, "_", atom.elementSymbol.toUpperCase() + ";")) && (!this.filterChain || atom.chainID == 0 || !this.filterReject(fCased, ":", "" + this.vwr.getChainIDStr(atom.chainID))) && (!this.filterAltLoc || atom.altLoc == '\0' || !this.filterReject(f, "%", "" + atom.altLoc)) && (!this.filterHetero || !this.allowPDBFilter || !this.filterReject(f, "HETATM", atom.isHetero ? "-Y" : "-N")); +}, "J.adapter.smarter.Atom,~S,~S"); +Clazz_defineMethod(c$, "rejectAtomName", +function(name){ +return this.filterAtomName && !this.allowAtomName(name, this.filter); +}, "~S"); +Clazz_defineMethod(c$, "allowAtomName", +function(atomName, f){ +return (atomName == null || !this.filterReject(f, ".", atomName.toUpperCase() + this.filterAtomNameTerminator)); +}, "~S,~S"); +Clazz_defineMethod(c$, "filterReject", +function(f, code, atomCode){ +return (f.indexOf(code) >= 0 && (f.indexOf("!" + code) >= 0) == (f.indexOf(code + atomCode) >= 0)); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "set2D", +function(){ +this.asc.setInfo("is2D", Boolean.TRUE); +this.asc.getBSAtoms(-1); +if (this.noHydrogens) { +this.asc.setInfo("noHydrogen", Boolean.TRUE); +this.optimize2D = false; +}if (this.optimize2D) { +this.asc.fix2Stereo(); +this.asc.setInfo("doMinimize", Boolean.TRUE); +this.appendLoadNote("This model is 2D. Its 3D structure was generated."); +} else { +this.appendLoadNote("This model is 2D. Its 3D structure has not been generated; use LOAD \"\" FILTER \"2D\" to optimize 3D."); +this.addJmolScript("select thismodel;wireframe only"); +}}); +Clazz_defineMethod(c$, "doGetVibration", +function(vibrationNumber){ +return this.addVibrations && (this.desiredVibrationNumber <= 0 || vibrationNumber == this.desiredVibrationNumber); +}, "~N"); +Clazz_defineMethod(c$, "setTransform", +function(x1, y1, z1, x2, y2, z2, x3, y3, z3){ +if (this.matRot != null || !this.doSetOrientation) return; +this.matRot = new JU.M3(); +var v = JU.V3.new3(x1, y1, z1); +v.normalize(); +this.matRot.setColumnV(0, v); +v.set(x2, y2, z2); +v.normalize(); +this.matRot.setColumnV(1, v); +v.set(x3, y3, z3); +v.normalize(); +this.matRot.setColumnV(2, v); +this.asc.setInfo("defaultOrientationMatrix", JU.M3.newM3(this.matRot)); +var q = JU.Quat.newM(this.matRot); +this.asc.setInfo("defaultOrientationQuaternion", q); +JU.Logger.info("defaultOrientationMatrix = " + this.matRot); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAtomCoordXYZ", +function(atom, x, y, z){ +atom.set(x, y, z); +this.setAtomCoord(atom); +}, "J.adapter.smarter.Atom,~N,~N,~N"); +Clazz_defineMethod(c$, "setAtomCoordScaled", +function(atom, tokens, i, f){ +if (atom == null) atom = this.asc.addNewAtom(); +this.setAtomCoordXYZ(atom, this.parsePrecision(tokens[i]) * f, this.parsePrecision(tokens[i + 1]) * f, this.parsePrecision(tokens[i + 2]) * f); +return atom; +}, "J.adapter.smarter.Atom,~A,~N,~N"); +Clazz_defineMethod(c$, "setAtomCoordTokens", +function(atom, tokens, i){ +this.setAtomCoordXYZ(atom, this.parsePrecision(tokens[i]), this.parsePrecision(tokens[i + 1]), this.parsePrecision(tokens[i + 2])); +}, "J.adapter.smarter.Atom,~A,~N"); +Clazz_defineMethod(c$, "addAtomXYZSymName", +function(tokens, i, sym, name){ +var atom = this.asc.addNewAtom(); +if (sym != null) atom.elementSymbol = sym; +if (name != null) atom.atomName = name; +this.setAtomCoordTokens(atom, tokens, i); +return atom; +}, "~A,~N,~S,~S"); +Clazz_defineMethod(c$, "setAtomCoord", +function(atom){ +var mustFractionalize = (this.doConvertToFractional && !this.fileCoordinatesAreFractional && this.getSymmetry() != null); +if (this.fileScaling != null) { +atom.x = atom.x * this.fileScaling.x + this.fileOffset.x; +atom.y = atom.y * this.fileScaling.y + this.fileOffset.y; +atom.z = atom.z * this.fileScaling.z + this.fileOffset.z; +}if (mustFractionalize) { +if (!this.symmetry.haveUnitCell()) this.symmetry.setUnitCellFromParams(this.unitCellParams, false, NaN); +this.symmetry.toFractional(atom, false); +this.iHaveFractionalCoordinates = true; +}if (this.floatifyJavaDouble && this.fileCoordinatesAreFractional) this.fixFloatPt(atom, 100000.0); +this.doCheckUnitCell = true; +}, "J.adapter.smarter.Atom"); +Clazz_defineMethod(c$, "addSites", +function(htSites){ +this.asc.setCurrentModelInfo("pdbSites", htSites); +var sites = ""; +for (var entry, $entry = htSites.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var htSite = entry.getValue(); +var ch; +for (var i = name.length; --i >= 0; ) if (!JU.PT.isLetterOrDigit(ch = name.charAt(i)) && ch != '\'') name = name.substring(0, i) + "_" + name.substring(i + 1); + +var groups = htSite.get("groups"); +if (groups.length == 0) continue; +this.addSiteScript("@site_" + name + " " + groups); +this.addSiteScript("site_" + name + " = [\"" + JU.PT.rep(groups, ",", "\",\"") + "\"]"); +sites += ",\"site_" + name + "\""; +} +if (sites.length > 0) this.addSiteScript("site_list = [" + sites.substring(1) + "]"); +}, "java.util.Map"); +Clazz_defineMethod(c$, "applySymmetryAndSetTrajectory", +function(){ +this.applySymTrajASCR(); +}); +Clazz_defineMethod(c$, "applySymTrajASCR", +function(){ +if (this.forcePacked) this.initializeSymmetryOptions(); +var doApply = (this.iHaveUnitCell && this.doCheckUnitCell); +var sym = null; +if (doApply) { +sym = this.getSymmetry(); +this.setPrecision(); +sym = this.asc.getXSymmetry().applySymmetryFromReader(sym); +} else { +this.asc.setTensors(); +}if (this.isTrajectory) this.asc.setTrajectory(); +if (this.moreUnitCellInfo != null) { +this.asc.setCurrentModelInfo("moreUnitCellInfo", this.moreUnitCellInfo); +this.moreUnitCellInfo = null; +}this.finalizeSubclassSymmetry(sym != null); +if (this.merging && sym != null && this.iHaveFractionalCoordinates && this.iHaveUnitCell && this.iHaveSymmetryOperators) { +this.fractionalizeCoordinates(false); +this.addJmolScript("modelkit spacegroup P1"); +}this.initializeSymmetry(); +return sym; +}); +Clazz_defineMethod(c$, "finalizeSubclassSymmetry", +function(haveSymmetry){ +}, "~B"); +Clazz_defineMethod(c$, "doPreSymmetry", +function(){ +}); +Clazz_defineMethod(c$, "finalizeMOData", +function(moData){ +this.asc.setCurrentModelInfo("moData", moData); +if (moData == null) return; +var orbitals = moData.get("mos"); +if (orbitals != null) JU.Logger.info(orbitals.size() + " molecular orbitals read in model " + this.asc.atomSetCount); +}, "java.util.Map"); +c$.getElementSymbol = Clazz_defineMethod(c$, "getElementSymbol", +function(elementNumber){ +return J.api.JmolAdapter.getElementSymbol(elementNumber); +}, "~N"); +Clazz_defineMethod(c$, "fillDataBlock", +function(data, minLineLen){ +var nLines = data.length; +for (var i = 0; i < nLines; i++) { +data[i] = JU.PT.getTokens(this.discardLinesUntilNonBlank()); +if (data[i].length < minLineLen) --i; +} +}, "~A,~N"); +Clazz_defineMethod(c$, "fill3x3", +function(tokens, pt){ +var a = Clazz_newDoubleArray (3, 3, 0); +var needTokens = (tokens == null); +var pt0 = pt; +for (var i = 0; i < 3; i++) { +if (needTokens || pt >= tokens.length) { +while ((tokens = JU.PT.getTokens(this.rd())).length < 3) { +} +pt = (pt0 < 0 ? tokens.length + pt0 : pt0); +}for (var j = 0; j < 3; j++) a[i][j] = Double.$valueOf(tokens[pt++]).doubleValue(); + +} +return a; +}, "~A,~N"); +Clazz_defineMethod(c$, "fillFloatArray", +function(s, width, data){ +var tokens = new Array(0); +var pt = 0; +for (var i = 0; i < data.length; i++) { +while (tokens != null && pt >= tokens.length) { +if (s == null) s = this.rd(); +if (width == 0) { +tokens = JU.PT.getTokens(s); +} else { +tokens = new Array(Clazz_doubleToInt(s.length / width)); +for (var j = 0; j < tokens.length; j++) tokens[j] = s.substring(j * width, (j + 1) * width); + +}s = null; +pt = 0; +} +if (tokens == null) break; +data[i] = this.parseFloatStr(tokens[pt++]); +} +return data; +}, "~S,~N,~A"); +Clazz_defineMethod(c$, "fillFrequencyData", +function(iAtom0, ac, modelAtomCount, ignore, isWide, col0, colWidth, atomIndexes, minLineLen, data){ +var withSymmetry = (ac != 0 && modelAtomCount != ac && data == null); +if (ac == 0 && atomIndexes != null) ac = atomIndexes.length; +var nLines = (isWide ? ac : ac * 3); +var nFreq = ignore.length; +if (data == null) { +data = new Array(nLines); +this.fillDataBlockFixed(data, col0, colWidth, minLineLen); +} else if (!isWide) { +var ptNonblank = minLineLen; +this.fillDataBlockFixed(data, col0, colWidth, -ptNonblank); +if (data[0] == null) return; +iAtom0 += this.parseIntAt(this.line, ptNonblank - 5) - 1; +}for (var i = 0, atomPt = 0; i < nLines; i++, atomPt++) { +var values = data[i]; +var valuesY = (isWide ? null : data[++i]); +var valuesZ = (isWide ? null : data[++i]); +var dataPt = values.length - (isWide ? nFreq * 3 : nFreq) - 1; +for (var j = 0, jj = 0; jj < nFreq; jj++) { +++dataPt; +var x = values[dataPt]; +if (x.charAt(0) == ')') x = x.substring(1); +var vx = this.parseFloatStr(x); +var vy = this.parseFloatStr(isWide ? values[++dataPt] : valuesY[dataPt]); +var vz = this.parseFloatStr(isWide ? values[++dataPt] : valuesZ[dataPt]); +if (ignore[jj]) continue; +var iAtom = (atomIndexes == null ? atomPt : atomIndexes[atomPt]); +if (iAtom < 0) continue; +iAtom += iAtom0 + modelAtomCount * j++; +if (this.debugging) JU.Logger.debug("atom " + iAtom + " vib" + j + ": " + vx + " " + vy + " " + vz); +this.asc.addVibrationVectorWithSymmetry(iAtom, vx, vy, vz, withSymmetry); +} +} +}, "~N,~N,~N,~A,~B,~N,~N,~A,~N,~A"); +Clazz_defineMethod(c$, "fillDataBlockFixed", +function(data, col0, colWidth, minLineLen){ +if (colWidth == 0) { +this.fillDataBlock(data, minLineLen); +return; +}var nLines = data.length; +for (var i = 0; i < nLines; i++) { +this.discardLinesUntilNonBlank(); +if (minLineLen < 0 && this.line.charAt(-minLineLen) == ' ') { +data[0] = null; +return; +}var nFields = Clazz_doubleToInt((this.line.length - col0 + 1) / colWidth); +data[i] = new Array(nFields); +for (var j = 0, start = col0; j < nFields; j++, start += colWidth) data[i][j] = this.line.substring(start, Math.min(this.line.length, start + colWidth)); + +} +}, "~A,~N,~N,~N"); +Clazz_defineMethod(c$, "readLines", +function(nLines){ +for (var i = nLines; --i >= 0; ) this.rd(); + +return this.line; +}, "~N"); +Clazz_defineMethod(c$, "discardLinesUntilStartsWith", +function(startsWith){ +while (this.rd() != null && !this.line.startsWith(startsWith)) { +} +return this.line; +}, "~S"); +Clazz_defineMethod(c$, "discardLinesUntilContains", +function(containsMatch){ +while (this.rd() != null && this.line.indexOf(containsMatch) < 0) { +} +return this.line; +}, "~S"); +Clazz_defineMethod(c$, "discardLinesUntilContains2", +function(s1, s2){ +while (this.rd() != null && this.line.indexOf(s1) < 0 && this.line.indexOf(s2) < 0) { +} +return this.line; +}, "~S,~S"); +Clazz_defineMethod(c$, "discardLinesUntilBlank", +function(){ +while (this.rd() != null && this.line.trim().length != 0) { +} +return this.line; +}); +Clazz_defineMethod(c$, "discardLinesUntilNonBlank", +function(){ +while (this.rd() != null && this.line.trim().length == 0) { +} +return this.line; +}); +Clazz_defineMethod(c$, "checkLineForScript", +function(line){ +this.line = line; +this.checkCurrentLineForScript(); +}, "~S"); +Clazz_defineMethod(c$, "checkCurrentLineForScript", +function(){ +if (this.line.endsWith("#noautobond")) { +this.line = this.line.substring(0, this.line.lastIndexOf('#')).trim(); +this.asc.setNoAutoBond(); +}var pt = this.line.indexOf("jmolscript:"); +if (pt >= 0) { +var script = this.line.substring(pt + 11, this.line.length); +if (script.indexOf("#") >= 0) { +script = script.substring(0, script.indexOf("#")); +}this.addJmolScript(script); +this.line = this.line.substring(0, pt).trim(); +}}); +Clazz_defineMethod(c$, "addJmolScript", +function(script){ +JU.Logger.info("#jmolScript: " + script); +if (this.previousScript == null) this.previousScript = ""; + else if (!this.previousScript.endsWith(";")) this.previousScript += ";"; +this.previousScript += script; +this.asc.setInfo("jmolscript", this.previousScript); +}, "~S"); +Clazz_defineMethod(c$, "addSiteScript", +function(script){ +if (this.siteScript == null) this.siteScript = ""; + else if (!this.siteScript.endsWith(";")) this.siteScript += ";"; +this.siteScript += script; +this.asc.setInfo("sitescript", this.siteScript); +}, "~S"); +Clazz_defineMethod(c$, "rd", +function(){ +return this.RL(); +}); +Clazz_defineMethod(c$, "RL", +function(){ +this.prevline = this.line; +this.line = this.reader.readLine(); +if (this.out != null && this.line != null) this.out.append(this.line).append("\n"); +this.ptLine++; +if (this.debugging && this.line != null) JU.Logger.info(this.line); +return this.line; +}); +c$.getStrings = Clazz_defineMethod(c$, "getStrings", +function(sinfo, nFields, width){ +var fields = new Array(nFields); +for (var i = 0, pt = 0; i < nFields; i++, pt += width) fields[i] = sinfo.substring(pt, pt + width); + +return fields; +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "getTokens", +function(){ +return JU.PT.getTokens(this.line); +}); +c$.getTokensFloat = Clazz_defineMethod(c$, "getTokensFloat", +function(s, f, n){ +if (f == null) f = Clazz_newFloatArray (n, 0); +JU.PT.parseFloatArrayDataN(JU.PT.getTokens(s), f, n); +return f; +}, "~S,~A,~N"); +Clazz_defineMethod(c$, "parseFloat", +function(){ +return JU.PT.parseFloatNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "parseFloatStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseFloatNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseFloatRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseFloatRange(s, iEnd, this.next); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "parseInt", +function(){ +return JU.PT.parseIntNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "parseIntStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseIntNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseIntAt", +function(s, iStart){ +this.next[0] = iStart; +return JU.PT.parseIntNext(s, this.next); +}, "~S,~N"); +Clazz_defineMethod(c$, "parseIntRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseIntRange(s, iEnd, this.next); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "parseToken", +function(){ +return JU.PT.parseTokenNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "parseTokenStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseTokenNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseTokenNext", +function(s){ +return JU.PT.parseTokenNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseTokenRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseTokenRange(s, iEnd, this.next); +}, "~S,~N,~N"); +c$.getFortranFormatLengths = Clazz_defineMethod(c$, "getFortranFormatLengths", +function(s){ +var vdata = new JU.Lst(); +var n = 0; +var c = 0; +var factor = 1; +var inN = false; +var inCount = true; +s += ","; +for (var i = 0; i < s.length; i++) { +var ch = s.charAt(i); +switch ((ch).charCodeAt(0)) { +case 46: +inN = false; +continue; +case 44: +for (var j = 0; j < c; j++) vdata.addLast(Integer.$valueOf(n * factor)); + +inN = false; +inCount = true; +c = 0; +continue; +case 88: +n = c; +c = 1; +factor = -1; +continue; +} +var isDigit = JU.PT.isDigit(ch); +if (isDigit) { +if (inN) n = n * 10 + ch.charCodeAt(0) - 48; + else if (inCount) c = c * 10 + ch.charCodeAt(0) - 48; +} else if (JU.PT.isLetter(ch)) { +n = 0; +inN = true; +inCount = false; +factor = 1; +} else { +inN = false; +}} +return vdata; +}, "~S"); +Clazz_defineMethod(c$, "read3Vectors", +function(isBohr){ +var vectors = new Array(3); +var f = Clazz_newFloatArray (3, 0); +for (var i = 0; i < 3; i++) { +if (i > 0 || Float.isNaN(this.parseFloatStr(this.line))) { +this.rd(); +if (i == 0 && this.line != null) { +i = -1; +continue; +}}this.fillFloatArray(this.line, 0, f); +vectors[i] = new JU.V3(); +vectors[i].setA(f); +if (isBohr) vectors[i].scale(0.5291772); +} +return vectors; +}, "~B"); +Clazz_defineMethod(c$, "setElementAndIsotope", +function(atom, str){ +var isotope = this.parseIntStr(str); +if (isotope == -2147483648) { +atom.elementSymbol = str; +} else { +str = str.substring(("" + isotope).length); +atom.elementNumber = (str.length == 0 ? isotope : ((isotope << 7) + J.api.JmolAdapter.getElementNumber(str))); +}}, "J.adapter.smarter.Atom,~S"); +Clazz_defineMethod(c$, "finalizeModelSet", +function(){ +}); +Clazz_defineMethod(c$, "setChainID", +function(atom, label){ +atom.chainID = this.vwr.getChainID(label, true); +}, "J.adapter.smarter.Atom,~S"); +Clazz_overrideMethod(c$, "readNextLine", +function(){ +if (this.rd() != null && this.line.indexOf("#jmolscript:") >= 0) this.checkCurrentLineForScript(); +return this.line; +}); +Clazz_defineMethod(c$, "appendUunitCellInfo", +function(info){ +if (this.moreUnitCellInfo == null) this.moreUnitCellInfo = new JU.Lst(); +this.moreUnitCellInfo.addLast(info); +this.appendLoadNote(info); +}, "~S"); +Clazz_defineMethod(c$, "getInterface", +function(className){ +var o = J.api.Interface.getInterface(className, this.vwr, "file"); +if (o == null) throw new NullPointerException("Interface"); +return o; +}, "~S"); +Clazz_defineMethod(c$, "forceSymmetry", +function(andPack){ +if (andPack) this.doPackUnitCell = andPack; +if (!this.doApplySymmetry) { +this.doApplySymmetry = true; +this.latticeCells[0] = this.latticeCells[1] = this.latticeCells[2] = 1; +}}, "~B"); +Clazz_defineMethod(c$, "fixFloatA", +function(pts){ +if (this.floatifyJavaDouble) for (var i = pts.length; --i >= 0; ) if (!Float.isNaN(pts[i])) pts[i] = JU.PT.fixFloat(pts[i], 100000.0); + +}, "~A"); +Clazz_defineMethod(c$, "fixDoubleA", +function(pts){ +if (this.floatifyJavaDouble) for (var i = pts.length; --i >= 0; ) if (!Double.isNaN(pts[i])) pts[i] = JU.PT.fixDouble(pts[i], 100000.0); + +}, "~A"); +Clazz_defineMethod(c$, "fixFloatPt", +function(pt, prec){ +if (this.floatifyJavaDouble) JU.PT.fixPtFloats(pt, prec); +}, "JU.P3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atomSetIndex = 0; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "AtomSetObject", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["J.adapter.smarter.AtomSetObject"], "J.adapter.smarter.Bond", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atomIndex1 = 0; +this.atomIndex2 = 0; +this.order = 0; +this.radius = -1; +this.colix = -1; +this.uniqueID = -1; +this.distance = 0; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "Bond", J.adapter.smarter.AtomSetObject); +Clazz_makeConstructor(c$, +function(atomIndex1, atomIndex2, order){ +Clazz_superConstructor (this, J.adapter.smarter.Bond, []); +this.atomIndex1 = atomIndex1; +this.atomIndex2 = atomIndex2; +this.order = order; +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[Bond " + this.atomIndex1 + " " + this.atomIndex2 + " " + this.order + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["J.api.JmolAdapterBondIterator"], "J.adapter.smarter.BondIterator", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bsAtoms = null; +this.bonds = null; +this.ibond = 0; +this.bond = null; +this.bondCount = 0; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "BondIterator", J.api.JmolAdapterBondIterator); +Clazz_makeConstructor(c$, +function(asc){ +Clazz_superConstructor (this, J.adapter.smarter.BondIterator, []); +this.bsAtoms = asc.bsAtoms; +this.bonds = asc.bonds; +this.bondCount = asc.bondCount; +this.ibond = 0; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.ibond == this.bondCount) return false; +while ((this.bond = this.bonds[this.ibond++]) == null || (this.bsAtoms != null && (!this.bsAtoms.get(this.bond.atomIndex1) || !this.bsAtoms.get(this.bond.atomIndex2)))) if (this.ibond == this.bondCount) return false; + +return true; +}); +Clazz_overrideMethod(c$, "getAtomUniqueID1", +function(){ +return Integer.$valueOf(this.bond.atomIndex1); +}); +Clazz_overrideMethod(c$, "getAtomUniqueID2", +function(){ +return Integer.$valueOf(this.bond.atomIndex2); +}); +Clazz_overrideMethod(c$, "getEncodedOrder", +function(){ +return this.bond.order; +}); +Clazz_overrideMethod(c$, "getRadius", +function(){ +return this.bond.radius; +}); +Clazz_overrideMethod(c$, "getColix", +function(){ +return this.bond.colix; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(null, "J.adapter.smarter.Resolver", ["java.io.BufferedInputStream", "java.util.StringTokenizer", "JU.LimitedLineReader", "$.PT", "$.Rdr", "J.adapter.smarter.AtomSetCollectionReader", "$.SmarterJmolAdapter", "J.api.Interface", "JU.Logger", "JV.JC"], function(){ +var c$ = Clazz_declareType(J.adapter.smarter, "Resolver", null); +c$.getReaderClassBase = Clazz_defineMethod(c$, "getReaderClassBase", +function(type){ +var name = type + "Reader"; +if (type.startsWith("Xml")) return "J.adapter.readers." + "xml." + name; +var key = ";" + type + ";"; +for (var i = 1; i < J.adapter.smarter.Resolver.readerSets.length; i += 2) if (J.adapter.smarter.Resolver.readerSets[i].indexOf(key) >= 0) return "J.adapter.readers." + J.adapter.smarter.Resolver.readerSets[i - 1] + name; + +return "J.adapter.readers." + "???." + name; +}, "~S"); +c$.getFileType = Clazz_defineMethod(c$, "getFileType", +function(br){ +try { +return J.adapter.smarter.Resolver.determineAtomSetCollectionReader(br, null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "java.io.BufferedReader"); +c$.getAtomCollectionReader = Clazz_defineMethod(c$, "getAtomCollectionReader", +function(fullName, type, readerOrDocument, htParams, ptFile){ +var readerName; +fullName = J.adapter.smarter.Resolver.fixDOSName(fullName); +var errMsg = null; +if (type == null && htParams != null) { +type = J.adapter.smarter.Resolver.getFileTypefromFilter(htParams.get("filter")); +}if (type != null) { +readerName = J.adapter.smarter.Resolver.getReaderFromType(type); +if (readerName == null) readerName = J.adapter.smarter.Resolver.getReaderFromType("Xml" + type); +if (readerName == null) errMsg = "unrecognized file format type " + type + " file=" + fullName; + else JU.Logger.info("The Resolver assumes " + readerName + " file=" + fullName); +} else { +readerName = J.adapter.smarter.Resolver.determineAtomSetCollectionReader(readerOrDocument, htParams); +if (readerName.charAt(0) == '\n') { +type = (htParams == null ? null : htParams.get("defaultType")); +if (type != null) { +type = J.adapter.smarter.Resolver.getReaderFromType(type); +if (type != null) readerName = type; +}}if (readerName.charAt(0) == '\n') errMsg = "unrecognized file format for file\n" + fullName + "\n" + J.adapter.smarter.Resolver.split(readerName, 50); + else if (readerName.equals("spt")) errMsg = "NOTE: file recognized as a script file: " + fullName + "\n"; + else if (!fullName.equals("ligand")) JU.Logger.info("The Resolver thinks " + readerName); +}if (errMsg != null) { +J.adapter.smarter.SmarterJmolAdapter.close(readerOrDocument); +return errMsg; +}htParams.put("ptFile", Integer.$valueOf(ptFile)); +if (ptFile <= 0) htParams.put("readerName", readerName); +return J.adapter.smarter.Resolver.getReader(readerName, htParams); +}, "~S,~S,~O,java.util.Map,~N"); +c$.getReader = Clazz_defineMethod(c$, "getReader", +function(readerName, htParams){ +var rdr = null; +var className = null; +var err = null; +className = J.adapter.smarter.Resolver.getReaderClassBase(readerName); +if ((rdr = J.api.Interface.getInterface(className, null, "reader")) == null) { +err = JV.JC.READER_NOT_FOUND + className; +JU.Logger.error(err); +return err; +}return rdr; +}, "~S,java.util.Map"); +c$.getReaderFromType = Clazz_defineMethod(c$, "getReaderFromType", +function(type){ +if (type.endsWith("(XML)")) { +type = "Xml" + type.substring(0, type.length - 5); +}type = ";" + type.toLowerCase() + ";"; +if (";zmatrix;cfi;c;vfi;v;mnd;jag;gms;g;gau;mp;nw;orc;pqs;qc;".indexOf(type) >= 0) return "Input"; +var set; +var pt; +for (var i = J.adapter.smarter.Resolver.readerSets.length; --i >= 0; ) { +if ((pt = (set = J.adapter.smarter.Resolver.readerSets[i--]).toLowerCase().indexOf(type)) >= 0) return set.substring(pt + 1, set.indexOf(";", pt + 2)); +} +return null; +}, "~S"); +c$.split = Clazz_defineMethod(c$, "split", +function(a, n){ +var s = ""; +var l = a.length; +for (var i = 0, j = 0; i < l; i = j) s += a.substring(i, (j = Math.min(i + n, l))) + "\n"; + +return s; +}, "~S,~N"); +c$.DOMResolve = Clazz_defineMethod(c$, "DOMResolve", +function(htParams){ +var rdrName = J.adapter.smarter.Resolver.getXmlType(htParams.get("nameSpaceInfo")); +if (JU.Logger.debugging) { +JU.Logger.debug("The Resolver thinks " + rdrName); +}htParams.put("readerName", rdrName); +return J.adapter.smarter.Resolver.getReader("XmlReader", htParams); +}, "java.util.Map"); +c$.determineAtomSetCollectionReader = Clazz_defineMethod(c$, "determineAtomSetCollectionReader", +function(readerOrDocument, htParams){ +var readerName; +if (Clazz_instanceOf(readerOrDocument,"javajs.api.GenericBinaryDocument")) { +var doc = readerOrDocument; +readerName = J.adapter.smarter.Resolver.getBinaryType(doc.getInputStream()); +return (readerName == null ? "binary file type not recognized" : readerName); +}if (Clazz_instanceOf(readerOrDocument,"java.io.InputStream")) { +readerName = J.adapter.smarter.Resolver.getBinaryType(readerOrDocument); +if (readerName != null) return readerName; +readerOrDocument = JU.Rdr.getBufferedReader( new java.io.BufferedInputStream(readerOrDocument), null); +}var rdr = readerOrDocument; +var llr = new JU.LimitedLineReader(rdr, 16384); +var leader = llr.getHeader(64).trim(); +if (leader.length == 0) throw new java.io.EOFException("File contains no data."); +if (leader.indexOf("PNG") == 1 && leader.indexOf("PNGJ") >= 0) return "pngj"; +if (leader.indexOf("PNG") == 1 || leader.indexOf("JPG") == 1 || leader.indexOf("JFIF") == 6) return "spt"; +if (leader.indexOf("\"num_pairs\"") >= 0) return "dssr"; +if (leader.indexOf("output.31\n") >= 0) return "GenNBO|output.31"; +if ((readerName = J.adapter.smarter.Resolver.checkFileStart(leader)) != null) { +return (readerName.equals("Xml") ? J.adapter.smarter.Resolver.getXmlType(llr.getHeader(0)) : readerName); +}var msg; +var isJSONMap = (leader.charAt(0) == '{'); +var lines = new Array(16); +var nLines = 0; +for (var i = 0; i < lines.length; ++i) { +lines[i] = llr.readLineWithNewline(); +if (lines[i].length > 0) nLines++; +} +if ((readerName = J.adapter.smarter.Resolver.checkSpecial1(nLines, lines, leader)) != null) return readerName; +if ((readerName = J.adapter.smarter.Resolver.checkLineStarts(lines)) != null) return readerName; +if ((readerName = J.adapter.smarter.Resolver.checkHeaderContains(llr.getHeader(0))) != null) { +return readerName; +}if ((readerName = J.adapter.smarter.Resolver.checkSpecial2(lines)) != null) return readerName; +if (isJSONMap) { +var json = rdr.readLine(); +if ((readerName = J.adapter.smarter.Resolver.checkJSONContains(json)) != null) { +if (htParams != null) htParams.put("fileData", json); +return readerName; +}msg = (htParams == null ? null : json.substring(0, Math.min(100, json.length))); +} else { +msg = (htParams == null ? null : "\n" + lines[0] + "\n" + lines[1] + "\n" + lines[2] + "\n"); +}return msg; +}, "~O,java.util.Map"); +c$.getBinaryType = Clazz_defineMethod(c$, "getBinaryType", +function(inputStream){ +var magic4 = null; +return (JU.Rdr.isPickleS(inputStream) ? "PyMOL" : (JU.Rdr.getMagic(inputStream, 1)[0] & 0xFF) == 0xDE ? "MMTF" : (JU.Rdr.getMagic(inputStream, 10)[9] & 0xFF) == 0xB6 ? "BCIF" : J.adapter.smarter.Resolver.bytesMatch((magic4 = JU.Rdr.getMagic(inputStream, 4)), J.adapter.smarter.Resolver.cdxMagic) ? "CDX" : J.adapter.smarter.Resolver.bytesMatch(magic4, J.adapter.smarter.Resolver.cmdfMagic) ? "Cmdf" : null); +}, "java.io.InputStream"); +c$.bytesMatch = Clazz_defineMethod(c$, "bytesMatch", +function(a, b){ +if (b.length > a.length) return false; +for (var i = b.length; --i >= 0; ) { +if (a[i] != b[i]) return false; +} +return true; +}, "~A,~A"); +c$.checkFileStart = Clazz_defineMethod(c$, "checkFileStart", +function(leader){ +for (var i = 0; i < J.adapter.smarter.Resolver.fileStartsWithRecords.length; ++i) { +var recordTags = J.adapter.smarter.Resolver.fileStartsWithRecords[i]; +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +if (leader.startsWith(recordTag)) return recordTags[0]; +} +} +return null; +}, "~S"); +c$.checkSpecial1 = Clazz_defineMethod(c$, "checkSpecial1", +function(nLines, lines, leader){ +if (nLines == 1 && lines[0].length > 0 && JU.PT.isDigit(lines[0].charAt(0))) return "Jme"; +if (J.adapter.smarter.Resolver.checkMopacGraphf(lines)) return "MopacGraphf"; +if (J.adapter.smarter.Resolver.checkOdyssey(lines)) return "Odyssey"; +switch (J.adapter.smarter.Resolver.checkMol(lines)) { +case 1: +case 3: +case 2000: +case 3000: +return "Mol"; +} +switch (J.adapter.smarter.Resolver.checkXyz(lines)) { +case 1: +return "Xyz"; +case 2: +return "Bilbao"; +case 3: +return "PWmat"; +} +if (J.adapter.smarter.Resolver.checkAlchemy(lines[0])) return "Alchemy"; +if (J.adapter.smarter.Resolver.checkFoldingXyz(lines)) return "FoldingXyz"; +if (J.adapter.smarter.Resolver.checkXSF(lines)) return "Xcrysden"; +if (J.adapter.smarter.Resolver.checkCube(lines)) return "Cube"; +if (J.adapter.smarter.Resolver.checkWien2k(lines)) return "Wien2k"; +if (J.adapter.smarter.Resolver.checkAims(lines)) return "Aims"; +if (J.adapter.smarter.Resolver.checkGenNBO(lines, leader)) return "GenNBO"; +return null; +}, "~N,~A,~S"); +c$.checkXSF = Clazz_defineMethod(c$, "checkXSF", +function(lines){ +var i = 0; +while (lines[i].length == 0) { +i++; +} +return (lines[i].startsWith("ANIMSTEPS ") || lines[i].equals("ATOMS\n") && JU.PT.parseInt(lines[i + 1]) > 0); +}, "~A"); +c$.checkAims = Clazz_defineMethod(c$, "checkAims", +function(lines){ +for (var i = 0; i < lines.length; i++) { +if (lines[i].startsWith("mol 1")) return false; +var tokens = JU.PT.getTokens(lines[i]); +if (tokens.length == 0) continue; +if (tokens[0].startsWith("atom") && tokens.length > 4 && Float.isNaN(JU.PT.parseFloat(tokens[4])) || tokens[0].startsWith("multipole") && tokens.length >= 6 || tokens[0].startsWith("lattice_vector") && tokens.length >= 4) return true; +} +return false; +}, "~A"); +c$.checkAlchemy = Clazz_defineMethod(c$, "checkAlchemy", +function(line){ +var pt; +if ((pt = line.indexOf("ATOMS")) > 0 && line.indexOf("BONDS") > pt) { +var n = JU.PT.parseInt(line.substring(0, pt).trim()); +return (n > 0); +}return false; +}, "~S"); +c$.isInt = Clazz_defineMethod(c$, "isInt", +function(s){ +J.adapter.smarter.Resolver.n[0] = 0; +s = s.trim(); +return s.length > 0 && JU.PT.parseIntNext(s, J.adapter.smarter.Resolver.n) != -2147483648 && J.adapter.smarter.Resolver.n[0] == s.length; +}, "~S"); +c$.isFloat = Clazz_defineMethod(c$, "isFloat", +function(s){ +return !Float.isNaN(JU.PT.parseFloat(s)); +}, "~S"); +c$.checkCube = Clazz_defineMethod(c$, "checkCube", +function(lines){ +for (var j = 2; j <= 5; j++) { +var tokens2 = new java.util.StringTokenizer(lines[j]); +var n = tokens2.countTokens(); +if (!(n == 4 || j == 2 && n == 5) || !J.adapter.smarter.Resolver.isInt(tokens2.nextToken())) return false; +for (var i = 3; --i >= 0; ) if (!J.adapter.smarter.Resolver.isFloat(tokens2.nextToken())) return false; + +if (n == 5 && !J.adapter.smarter.Resolver.isInt(tokens2.nextToken())) return false; +} +return true; +}, "~A"); +c$.checkFoldingXyz = Clazz_defineMethod(c$, "checkFoldingXyz", +function(lines){ +var tokens = new java.util.StringTokenizer(lines[0].trim(), " \t"); +if (tokens.countTokens() < 2 || !J.adapter.smarter.Resolver.isInt(tokens.nextToken().trim())) return false; +var secondLine = lines[1].trim(); +if (secondLine.length == 0) secondLine = lines[2].trim(); +tokens = new java.util.StringTokenizer(secondLine, " \t"); +return (tokens.countTokens() > 0 && J.adapter.smarter.Resolver.isInt(tokens.nextToken().trim())); +}, "~A"); +c$.checkGenNBO = Clazz_defineMethod(c$, "checkGenNBO", +function(lines, leader){ +return (leader.indexOf("$GENNBO") >= 0 || lines[1].startsWith(" Basis set information needed for plotting orbitals") || lines[1].indexOf("s in the AO basis:") >= 0 || lines[1].indexOf("***** NBO ") >= 0 || lines[2].indexOf(" N A T U R A L A T O M I C O R B I T A L") >= 0); +}, "~A,~S"); +c$.checkMol = Clazz_defineMethod(c$, "checkMol", +function(lines){ +var line4trimmed = ("X" + lines[3]).trim().toUpperCase(); +if (line4trimmed.length < 7 || line4trimmed.indexOf(".") >= 0 || lines[0].startsWith("data_")) return 0; +if (line4trimmed.endsWith("V2000")) return 2000; +if (line4trimmed.endsWith("V3000")) return 3000; +var n1 = JU.PT.parseInt(lines[3].substring(0, 3).trim()); +var n2 = JU.PT.parseInt(lines[3].substring(3, 6).trim()); +return (n1 > 0 && n2 >= 0 && lines[0].indexOf("@") != 0 && lines[1].indexOf("@") != 0 && lines[2].indexOf("@") != 0 ? 3 : 0); +}, "~A"); +c$.checkMopacGraphf = Clazz_defineMethod(c$, "checkMopacGraphf", +function(lines){ +return (lines[0].indexOf("MOPAC-Graphical data") > 2); +}, "~A"); +c$.checkOdyssey = Clazz_defineMethod(c$, "checkOdyssey", +function(lines){ +var i; +for (i = 0; i < lines.length; i++) if (!lines[i].startsWith("C ") && lines[i].length != 0) break; + +if (i >= lines.length || lines[i].charAt(0) != ' ' || (i = i + 2) + 1 >= lines.length) return false; +var l = lines[i]; +if (l.length < 3) return false; +var spin = JU.PT.parseInt(l.substring(2).trim()); +var charge = JU.PT.parseInt(l.substring(0, 2).trim()); +if ((l = lines[i + 1]).length < 2) return false; +var atom1 = JU.PT.parseInt(l.substring(0, 2).trim()); +if (spin < 0 || spin > 5 || atom1 <= 0 || charge == -2147483648 || charge > 5) return false; +var atomline = J.adapter.smarter.AtomSetCollectionReader.getTokensFloat(l, null, 5); +return !Float.isNaN(atomline[1]) && !Float.isNaN(atomline[2]) && !Float.isNaN(atomline[3]) && Float.isNaN(atomline[4]); +}, "~A"); +c$.checkWien2k = Clazz_defineMethod(c$, "checkWien2k", +function(lines){ +return (lines[2].startsWith("MODE OF CALC=") || lines[2].startsWith(" RELA") || lines[2].startsWith(" NREL")); +}, "~A"); +c$.checkXyz = Clazz_defineMethod(c$, "checkXyz", +function(lines){ +var checkPWM = false; +var i = JU.PT.parseInt(lines[0]); +if (i >= 0 && lines[0].trim().equals("" + i)) { +if (J.adapter.smarter.Resolver.isInt(lines[2])) return 2; +checkPWM = true; +}if (lines[0].indexOf("Bilbao Crys") >= 0) return 2; +var s; +if ((checkPWM || lines.length > 5 && i > 0) && ((s = lines[1].trim().toUpperCase()).startsWith("LATTICE VECTOR") || s.equals("LATTICE"))) return 3; +return (checkPWM ? 1 : 0); +}, "~A"); +c$.checkLineStarts = Clazz_defineMethod(c$, "checkLineStarts", +function(lines){ +for (var i = 0; i < J.adapter.smarter.Resolver.lineStartsWithRecords.length; ++i) { +var recordTags = J.adapter.smarter.Resolver.lineStartsWithRecords[i]; +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +for (var k = 0; k < lines.length; k++) { +if (lines[k].startsWith(recordTag)) return recordTags[0]; +} +} +} +return null; +}, "~A"); +c$.checkHeaderContains = Clazz_defineMethod(c$, "checkHeaderContains", +function(header){ +for (var i = 0; i < J.adapter.smarter.Resolver.headerContainsRecords.length; ++i) { +var fileType = J.adapter.smarter.Resolver.checkHeaderRecords(header, J.adapter.smarter.Resolver.headerContainsRecords[i]); +if (fileType != null) return fileType; +} +return null; +}, "~S"); +c$.checkJSONContains = Clazz_defineMethod(c$, "checkJSONContains", +function(header){ +for (var i = 0; i < J.adapter.smarter.Resolver.jsonContainsRecords.length; ++i) { +var fileType = J.adapter.smarter.Resolver.checkHeaderRecords(header, J.adapter.smarter.Resolver.jsonContainsRecords[i]); +if (fileType != null) return fileType; +} +return null; +}, "~S"); +c$.checkHeaderRecords = Clazz_defineMethod(c$, "checkHeaderRecords", +function(header, recordTags){ +for (var j = 1; j < recordTags.length; ++j) { +var recordTag = recordTags[j]; +if (header.indexOf(recordTag) < 0) continue; +var type = recordTags[0]; +if (!type.equals("Xml")) return type; +if (header.indexOf("/AFLOWDATA/") >= 0 || header.indexOf("-- Structure PRE --") >= 0) return "AFLOW"; +return (header.indexOf("= 0) ? J.adapter.smarter.Resolver.getXmlType(header) : null); +} +return null; +}, "~S,~A"); +c$.getXmlType = Clazz_defineMethod(c$, "getXmlType", +function(header){ +if (header.indexOf("http://www.molpro.net/") >= 0) { +return "XmlMolpro"; +}if (header.indexOf("odyssey") >= 0) { +return "XmlOdyssey"; +}if (header.indexOf("C3XML") >= 0) { +return "XmlChem3d"; +}if (header.indexOf("CDXML") >= 0) { +return "XmlCdx"; +}if (header.indexOf("arguslab") >= 0) { +return "XmlArgus"; +}if (header.indexOf("jvxl") >= 0 || header.indexOf("http://www.xml-cml.org/schema") >= 0 || header.indexOf("cml:") >= 0 || header.indexOf("") >= 0) { +return "XmlCml"; +}if (header.indexOf("XSD") >= 0) { +return "XmlXsd"; +}if (header.indexOf(">vasp") >= 0) { +return "XmlVasp"; +}if (header.indexOf("") >= 0) { +return "XmlQE"; +}return "XmlCml(unidentified)"; +}, "~S"); +c$.checkSpecial2 = Clazz_defineMethod(c$, "checkSpecial2", +function(lines){ +if (J.adapter.smarter.Resolver.checkGromacs(lines)) return "Gromacs"; +if (J.adapter.smarter.Resolver.checkCrystal(lines)) return "Crystal"; +if (J.adapter.smarter.Resolver.checkFAH(lines)) return "FAH"; +var s = J.adapter.smarter.Resolver.checkCastepVaspSiesta(lines); +if (s != null) return s; +return null; +}, "~A"); +c$.checkFAH = Clazz_defineMethod(c$, "checkFAH", +function(lines){ +var s = lines[0].trim() + lines[2].trim(); +return s.equals("{\"atoms\": ["); +}, "~A"); +c$.checkCrystal = Clazz_defineMethod(c$, "checkCrystal", +function(lines){ +var s = lines[1].trim(); +if (s.equals("SLAB") || s.equals("MOLECULE") || s.equals("CRYSTAL") || s.equals("POLYMER") || (s = lines[3]).equals("SLAB") || s.equals("MOLECULE") || s.equals("POLYMER")) return true; +for (var i = 0; i < lines.length; i++) { +if (lines[i].trim().equals("OPTGEOM") || lines[i].trim().equals("FREQCALC") || lines[i].contains("DOVESI") || lines[i].contains("TORINO") || lines[i].contains("http://www.crystal.unito.it") || lines[i].contains("Pcrystal") || lines[i].contains("MPPcrystal") || lines[i].contains("crystal executable")) return true; +} +return false; +}, "~A"); +c$.checkGromacs = Clazz_defineMethod(c$, "checkGromacs", +function(lines){ +if (JU.PT.parseInt(lines[1]) == -2147483648) return false; +var len = -1; +for (var i = 2; i < 16 && len != 0; i++) if ((len = lines[i].length) != 69 && len != 45 && len != 0) return false; + +return true; +}, "~A"); +c$.checkCastepVaspSiesta = Clazz_defineMethod(c$, "checkCastepVaspSiesta", +function(lines){ +for (var i = 0; i < lines.length; i++) { +var line = lines[i].toUpperCase(); +if (line.indexOf("FREQUENCIES IN CM-1") == 1 || line.contains("CASTEP") || line.startsWith("%BLOCK LATTICE_ABC") || line.startsWith("%BLOCK LATTICE_CART") || line.startsWith("%BLOCK POSITIONS_FRAC") || line.startsWith("%BLOCK POSITIONS_ABS") || line.contains("<-- E")) return "Castep"; +if (line.contains("%BLOCK")) return "Siesta"; +if (i >= 6 && i < 10 && (line.startsWith("DIRECT") || line.startsWith("CARTESIAN"))) return "VaspPoscar"; +} +return null; +}, "~A"); +c$.getFileTypefromFilter = Clazz_defineMethod(c$, "getFileTypefromFilter", +function(filter){ +var pt = (filter == null ? -1 : filter.toLowerCase().indexOf("filetype")); +return (pt < 0 ? null : filter.substring(pt + 8, (filter + ";").indexOf(";", pt)).$replace('=', ' ').trim()); +}, "~S"); +c$.fixDOSName = Clazz_defineMethod(c$, "fixDOSName", +function(fileName){ +return (fileName.indexOf(":\\") >= 0 ? fileName.$replace('\\', '/') : fileName); +}, "~S"); +c$.readerSets = Clazz_newArray(-1, ["cif.", ";Cif;Cif2;MMCif;MMTF;MagCif;BCIF;", "molxyz.", ";Mol3D;Mol;Xyz;", "more.", ";AFLOW;BinaryDcd;CDX;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;TlsDataOnly;", "quantum.", ";Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GaussianFchk;GaussianWfn;Jaguar;Molden;MopacGraphf;GenNBO;NWChem;Psi;Qchem;QCJSON;WebMO;Orca;MO;Ams;", "pdb.", ";Pdb;Pqr;P2n;JmolData;", "pymol.", ";PyMOL;", "simple.", ";Alchemy;Ampac;Cube;FoldingXyz;GhemicalMM;HyperChem;Jme;JSON;Mopac;MopacArchive;Tinker;Input;FAH;", "spartan.", ";Spartan;SpartanSmol;Odyssey;", "xtal.", ";Abinit;Aims;Bilbao;Castep;Cgd;Crystal;Dmol;Espresso;Gulp;Jana;Magres;Shelx;Siesta;VaspOutcar;VaspPoscar;Wien2k;Xcrysden;PWmat;Optimade;Cmdf;", "xml.", ";XmlCdx;XmlArgus;XmlCml;XmlChem3d;XmlMolpro;XmlOdyssey;XmlXsd;XmlVasp;XmlQE;"]); +c$.cdxMagic = Clazz_newByteArray(-1, ['V', 'j', 'C', 'D']); +c$.cmdfMagic = Clazz_newByteArray(-1, ['C', 'M', 'D', 'F']); +c$.sptRecords = Clazz_newArray(-1, ["spt", "# Jmol state", "# Jmol script", "JmolManifest"]); +c$.m3dStartRecords = Clazz_newArray(-1, ["Alchemy", "STRUCTURE 1.00 1"]); +c$.cubeFileStartRecords = Clazz_newArray(-1, ["Cube", "JVXL", "#JVXL"]); +c$.mol2Records = Clazz_newArray(-1, ["Mol2", "mol2", "@"]); +c$.webmoFileStartRecords = Clazz_newArray(-1, ["WebMO", "[HEADER]"]); +c$.moldenFileStartRecords = Clazz_newArray(-1, ["Molden", "[Molden", "MOLDEN", "[MOLDEN"]); +c$.dcdFileStartRecords = Clazz_newArray(-1, ["BinaryDcd", "T\0\0\0CORD", "\0\0\0TCORD"]); +c$.tlsDataOnlyFileStartRecords = Clazz_newArray(-1, ["TlsDataOnly", "REFMAC\n\nTL", "REFMAC\r\n\r\n", "REFMAC\r\rTL"]); +c$.inputFileStartRecords = Clazz_newArray(-1, ["Input", "#ZMATRIX", "%mem=", "AM1", "$rungauss"]); +c$.magresFileStartRecords = Clazz_newArray(-1, ["Magres", "#$magres", "# magres"]); +c$.pymolStartRecords = Clazz_newArray(-1, ["PyMOL", "}q"]); +c$.janaStartRecords = Clazz_newArray(-1, ["Jana", "Version Jana"]); +c$.jsonStartRecords = Clazz_newArray(-1, ["JSON", "{\"mol\":"]); +c$.jcampdxStartRecords = Clazz_newArray(-1, ["Jcampdx", "##TITLE"]); +c$.jmoldataStartRecords = Clazz_newArray(-1, ["JmolData", "REMARK 6 Jmol"]); +c$.pqrStartRecords = Clazz_newArray(-1, ["Pqr", "REMARK 1 PQR", "REMARK The B-factors"]); +c$.p2nStartRecords = Clazz_newArray(-1, ["P2n", "REMARK 1 P2N"]); +c$.cif2StartRecords = Clazz_newArray(-1, ["Cif2", "#\\#CIF_2", "\u00EF\u00BB\u00BF#\\#CIF_2"]); +c$.xmlStartRecords = Clazz_newArray(-1, ["Xml", "Bilbao Crystallographic Server<"]); +c$.xmlContainsRecords = Clazz_newArray(-1, ["Xml", "", " 0 && size <= 3 && f.startsWith("{")) { +var type = (f.contains("version\":\"DSSR") ? "dssr" : f.contains("/outliers/") ? "validation" : "domains"); +var x = vwr.parseJSONMap(f); +if (x != null) htParams.put(type, (type.equals("dssr") ? x : JS.SV.getVariableMap(x))); +continue; +}if (name.indexOf("|") >= 0) name = JU.PT.rep(name, "_", "/"); +if (i == 1) { +if (name.indexOf("/rna3dhub/") >= 0) { +s += "\n_rna3d \n;" + f + "\n;\n"; +continue; +}if (name.indexOf("/dssr/") >= 0) { +s += "\n_dssr \n;" + f + "\n;\n"; +continue; +}}s += f; +if (!s.endsWith("\n")) s += "\n"; +} +size = 1; +reader = JU.Rdr.getBR(s); +}var readers = (getReadersOnly ? new Array(size) : null); +var atomsets = (getReadersOnly ? null : new Array(size)); +var r = null; +for (var i = 0; i < size; i++) { +try { +htParams.put("vwr", vwr); +if (reader == null) reader = filesReader.getBufferedReaderOrBinaryDocument(i, false); +if (!(Clazz_instanceOf(reader,"java.io.BufferedReader") || Clazz_instanceOf(reader,"javajs.api.GenericBinaryDocument"))) return reader; +var fullPathName = names[i]; +htParams.put("fullPathName", fullPathName); +var ret = J.adapter.smarter.Resolver.getAtomCollectionReader(names[i], (types == null ? null : types[i]), reader, htParams, i); +if (!(Clazz_instanceOf(ret,"J.adapter.smarter.AtomSetCollectionReader"))) return ret; +r = ret; +r.setup(null, null, null); +if (r.isBinary) { +r.setup(names[i], htParams, filesReader.getBufferedReaderOrBinaryDocument(i, true)); +} else { +r.setup(names[i], htParams, reader); +}reader = null; +if (getReadersOnly) { +readers[i] = r; +} else { +ret = r.readData(); +if (!(Clazz_instanceOf(ret,"J.adapter.smarter.AtomSetCollection"))) return ret; +atomsets[i] = ret; +if (atomsets[i].errorMessage != null) return atomsets[i].errorMessage; +}} catch (e) { +JU.Logger.error("" + e); +e.printStackTrace(); +return "" + e; +} +} +if (getReadersOnly) return readers; +return this.getAtomSetCollectionFromSet(readers, atomsets, htParams); +}, "J.api.JmolFilesReaderInterface,~A,~A,java.util.Map,~B"); +Clazz_overrideMethod(c$, "getAtomSetCollectionFromSet", +function(readerSet, atomsets, htParams){ +var readers = readerSet; +var asc = (atomsets == null ? new Array(readers.length) : atomsets); +if (atomsets == null) { +for (var i = 0; i < readers.length; i++) { +if (readers[i] != null) try { +var ret = readers[i].readData(); +if (!(Clazz_instanceOf(ret,"J.adapter.smarter.AtomSetCollection"))) return ret; +asc[i] = ret; +if (asc[i].errorMessage != null) return asc[i].errorMessage; +} catch (e) { +JU.Logger.error("" + e); +return "" + e; +} +} +}var result; +if (htParams.containsKey("trajectorySteps")) { +result = asc[0]; +try { +if (asc.length > 1) asc[0].setInfo("ignoreUnitCell", asc[1].atomSetInfo.get("ignoreUnitCell")); +result.finalizeTrajectoryAs(htParams.get("trajectorySteps"), htParams.get("vibrationSteps")); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (result.errorMessage == null) result.errorMessage = "" + e; +} else { +throw e; +} +} +} else if (asc[0].isTrajectory) { +result = asc[0]; +for (var i = 1; i < asc.length; i++) asc[0].mergeTrajectories(asc[i]); + +} else { +result = (asc.length == 1 ? asc[0] : new J.adapter.smarter.AtomSetCollection("Array", null, asc, null)); +}return (result.errorMessage == null ? result : result.errorMessage); +}, "~O,~O,java.util.Map"); +Clazz_overrideMethod(c$, "getAtomSetCollectionFromDOM", +function(DOMNode, htParams){ +throw new UnsupportedOperationException(); +}, "~O,java.util.Map"); +Clazz_overrideMethod(c$, "finish", +function(asc){ +(asc).finish(); +}, "~O"); +Clazz_overrideMethod(c$, "getAtomSetCollectionName", +function(asc){ +return (asc).collectionName; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomSetCollectionAuxiliaryInfo", +function(asc){ +return (asc).atomSetInfo; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomSetCount", +function(asc){ +return (asc).atomSetCount; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomSetNumber", +function(asc, atomSetIndex){ +return (asc).getAtomSetNumber(atomSetIndex); +}, "~O,~N"); +Clazz_overrideMethod(c$, "getAtomSetName", +function(asc, atomSetIndex){ +return (asc).getAtomSetName(atomSetIndex); +}, "~O,~N"); +Clazz_overrideMethod(c$, "getAtomSetAuxiliaryInfo", +function(asc, atomSetIndex){ +return (asc).getAtomSetAuxiliaryInfo(atomSetIndex); +}, "~O,~N"); +Clazz_overrideMethod(c$, "getHydrogenAtomCount", +function(asc){ +return (asc).getHydrogenAtomCount(); +}, "~O"); +Clazz_overrideMethod(c$, "getBondList", +function(asc){ +return (asc).getBondList(); +}, "~O"); +Clazz_overrideMethod(c$, "getAtomCount", +function(asc, atomSetIndex){ +var a = asc; +if (atomSetIndex < 0) return (a.bsAtoms == null ? a.ac : a.bsAtoms.cardinality()); +if (a.bsAtoms == null) return a.getAtomSetAtomCount(atomSetIndex); +var b = JU.BSUtil.copy(a.bsAtoms); +var i0 = a.getAtomSetAtomIndex(atomSetIndex); +b.and(JU.BSUtil.newBitSet2(i0, i0 + a.getAtomSetAtomCount(atomSetIndex))); +return b.cardinality(); +}, "~O,~N"); +Clazz_overrideMethod(c$, "coordinatesAreFractional", +function(asc){ +return (asc).coordinatesAreFractional; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomIterator", +function(asc){ +return new J.adapter.smarter.AtomIterator(asc); +}, "~O"); +Clazz_overrideMethod(c$, "getBondIterator", +function(asc){ +return ((asc).bondCount == 0 ? null : new J.adapter.smarter.BondIterator(asc)); +}, "~O"); +Clazz_overrideMethod(c$, "getStructureIterator", +function(asc){ +return (asc).structureCount == 0 ? null : new J.adapter.smarter.StructureIterator(asc); +}, "~O"); +c$.close = Clazz_defineMethod(c$, "close", +function(bufferedReader){ +if (Clazz_instanceOf(bufferedReader,"java.io.BufferedReader")) (bufferedReader).close(); + else (bufferedReader).close(); +}, "~O"); +c$.PATH_SEPARATOR = System.getProperty("path.separator", "/"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["J.api.JmolAdapterStructureIterator"], "J.adapter.smarter.StructureIterator", ["J.api.JmolAdapter"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.structureCount = 0; +this.structures = null; +this.structure = null; +this.istructure = 0; +this.bsModelsDefined = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "StructureIterator", J.api.JmolAdapterStructureIterator); +Clazz_makeConstructor(c$, +function(asc){ +Clazz_superConstructor (this, J.adapter.smarter.StructureIterator, []); +this.structureCount = asc.structureCount; +this.structures = asc.structures; +this.istructure = 0; +this.bsModelsDefined = asc.bsStructuredModels; +}, "J.adapter.smarter.AtomSetCollection"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.istructure == this.structureCount) return false; +this.structure = this.structures[this.istructure++]; +return true; +}); +Clazz_overrideMethod(c$, "getStructureType", +function(){ +return this.structure.structureType; +}); +Clazz_overrideMethod(c$, "getSubstructureType", +function(){ +return this.structure.substructureType; +}); +Clazz_overrideMethod(c$, "getStructureID", +function(){ +return this.structure.structureID; +}); +Clazz_overrideMethod(c$, "getStrandID", +function(){ +return this.structure.strandID; +}); +Clazz_overrideMethod(c$, "getStartChainID", +function(){ +return this.structure.startChainID; +}); +Clazz_overrideMethod(c$, "getStartSequenceNumber", +function(){ +return this.structure.startSequenceNumber; +}); +Clazz_overrideMethod(c$, "getStartInsertionCode", +function(){ +return J.api.JmolAdapter.canonizeInsertionCode(this.structure.startInsertionCode); +}); +Clazz_overrideMethod(c$, "getEndChainID", +function(){ +return this.structure.endChainID; +}); +Clazz_overrideMethod(c$, "getEndSequenceNumber", +function(){ +return this.structure.endSequenceNumber; +}); +Clazz_overrideMethod(c$, "getEndInsertionCode", +function(){ +return this.structure.endInsertionCode; +}); +Clazz_overrideMethod(c$, "getStrandCount", +function(){ +return this.structure.strandCount; +}); +Clazz_overrideMethod(c$, "getStructuredModels", +function(){ +return this.bsModelsDefined; +}); +Clazz_overrideMethod(c$, "getAtomIndices", +function(){ +return this.structure.atomStartEnd; +}); +Clazz_overrideMethod(c$, "getModelIndices", +function(){ +return this.structure.modelStartEnd; +}); +Clazz_overrideMethod(c$, "getBSAll", +function(){ +return this.structure.bsAll; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "AtomIndexIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(null, "J.api.Interface", ["JU.Logger"], function(){ +var c$ = Clazz_declareType(J.api, "Interface", null); +c$.getInterface = Clazz_defineMethod(c$, "getInterface", +function(name, vwr, state){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S,JV.Viewer,~S"); +c$.getOption = Clazz_defineMethod(c$, "getOption", +function(className, vwr, state){ +return J.api.Interface.getInterface("J." + className, vwr, state); +}, "~S,JV.Viewer,~S"); +c$.getUtil = Clazz_defineMethod(c$, "getUtil", +function(name, vwr, state){ +return J.api.Interface.getInterface("JU." + name, vwr, state); +}, "~S,JV.Viewer,~S"); +c$.getSymmetry = Clazz_defineMethod(c$, "getSymmetry", +function(vwr, state){ +return J.api.Interface.getInterface("JS.Symmetry", vwr, state); +}, "JV.Viewer,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(null, "J.api.JmolAdapter", ["JU.PT", "J.api.JmolViewer", "JU.Elements"], function(){ +var c$ = Clazz_declareType(J.api, "JmolAdapter", null); +c$.getElementSymbol = Clazz_defineMethod(c$, "getElementSymbol", +function(elementNumber){ +return JU.Elements.elementSymbolFromNumber(elementNumber); +}, "~N"); +c$.getElementNumber = Clazz_defineMethod(c$, "getElementNumber", +function(elementSymbol){ +return JU.Elements.elementNumberFromSymbol(elementSymbol, false); +}, "~S"); +c$.getNaturalIsotope = Clazz_defineMethod(c$, "getNaturalIsotope", +function(elementNumber){ +return JU.Elements.getNaturalIsotope(elementNumber); +}, "~N"); +c$.getBondingRadius = Clazz_defineMethod(c$, "getBondingRadius", +function(atomicNumberWithIsotope, charge){ +return JU.Elements.getBondingRadius(atomicNumberWithIsotope, charge); +}, "~N,~N"); +Clazz_defineMethod(c$, "getAtomSetCollectionFromReaderType", +function(name, type, bufferedReader, htParams){ +var a = this.getAtomSetCollectionReader(name, type, bufferedReader, (J.api.JmolViewer.allocateViewer(null, this)).setLoadParameters(htParams, false)); +if ((typeof(a)=='string')) return a; +return this.getAtomSetCollection(a); +}, "~S,~S,~O,java.util.Map"); +Clazz_defineMethod(c$, "openBufferedReader", +function(name, bufferedReader){ +return this.getAtomSetCollectionFromReaderType(name, null, bufferedReader, null); +}, "~S,java.io.BufferedReader"); +Clazz_defineMethod(c$, "openBufferedReader", +function(name, bufferedReader, htParams){ +return this.getAtomSetCollectionFromReaderType(name, null, bufferedReader, htParams); +}, "~S,java.io.BufferedReader,java.util.Map"); +Clazz_defineMethod(c$, "openBufferedReader", +function(name, type, bufferedReader){ +return this.getAtomSetCollectionFromReaderType(name, type, bufferedReader, null); +}, "~S,~S,java.io.BufferedReader"); +c$.canonizeAlphaDigit = Clazz_defineMethod(c$, "canonizeAlphaDigit", +function(ch){ +return (JU.PT.isLetterOrDigit(ch) ? ch : '\0'); +}, "~S"); +c$.canonizeInsertionCode = Clazz_defineMethod(c$, "canonizeInsertionCode", +function(insertionCode){ +return J.api.JmolAdapter.canonizeAlphaDigit(insertionCode); +}, "~S"); +c$.canonizeAlternateLocationID = Clazz_defineMethod(c$, "canonizeAlternateLocationID", +function(altLoc){ +return J.api.JmolAdapter.canonizeAlphaDigit(altLoc); +}, "~S"); +c$.cellParamNames = Clazz_newArray(-1, ["_cell_length_a", "_cell_length_b", "_cell_length_c", "_cell_angle_alpha", "_cell_angle_beta", "_cell_angle_gamma"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolAdapterAtomIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +(function(){ +var c$ = Clazz_declareType(J.api, "JmolAdapterBondIterator", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +(function(){ +var c$ = Clazz_declareType(J.api, "JmolAdapterStructureIterator", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolAppConsoleInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolAppletInterface", J.api.JmolSyncInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolCallbackListener"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolAnnotationParser"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolGraphicsInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolMeasurementClient"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolModulationSet"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolNavigatorInterface", Runnable); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolRendererInterface", J.api.JmolGraphicsInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolRepaintManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolStatusListener", J.api.JmolCallbackListener); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolSyncInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(null, "J.api.JmolViewer", ["java.util.Hashtable", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.menuStructure = null; +this.apiPlatform = null; +Clazz_instantialize(this, arguments);}, J.api, "JmolViewer", null); +c$.allocateViewer = Clazz_defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, implementedPlatform){ +var info = new java.util.Hashtable(); +if (display != null) info.put("display", display); +if (modelAdapter != null) info.put("adapter", modelAdapter); +if (statusListener != null) info.put("statuslistener", statusListener); +if (implementedPlatform != null) info.put("platform", implementedPlatform); +if (commandOptions != null) info.put("options", commandOptions); +if (fullName != null) info.put("fullname", fullName); +if (documentBase != null) info.put("documentbase", documentBase); +if (codeBase != null) info.put("codebase", codeBase); +info.put("isApp", Boolean.TRUE); +return new JV.Viewer(info); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform"); +c$.allocateViewer = Clazz_defineMethod(c$, "allocateViewer", +function(container, jmolAdapter){ +return J.api.JmolViewer.allocateViewer(container, jmolAdapter, null, null, null, null, null, null); +}, "~O,J.api.JmolAdapter"); +c$.allocateViewer = Clazz_defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener){ +return J.api.JmolViewer.allocateViewer(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, null); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener"); +Clazz_defineMethod(c$, "setConsole", +function(console){ +this.getProperty("DATA_API", "getAppConsole", console); +}, "J.api.JmolAppConsoleInterface"); +c$.getJmolVersion = Clazz_defineMethod(c$, "getJmolVersion", +function(){ +return JV.Viewer.getJmolVersion(); +}); +c$.getJmolVersionNoDate = Clazz_defineMethod(c$, "getJmolVersionNoDate", +function(){ +return JV.JC.version; +}); +Clazz_defineMethod(c$, "openReader", +function(fullPathName, reader){ +return this.openReader(fullPathName == null ? "String" : fullPathName, null, reader); +}, "~S,~O"); +Clazz_defineMethod(c$, "openFileAsync", +function(fileName){ +this.openFileAsyncSpecial(fileName, 0); +}, "~S"); +Clazz_defineMethod(c$, "renderScreenImage", +function(g, currentSize, rectClip){ +this.apiPlatform.renderScreenImage(g, currentSize); +}, "~O,~O,~O"); +Clazz_defineMethod(c$, "runScriptCautiously", +function(script){ +return null; +}, "~S"); +Clazz_defineMethod(c$, "dispose", +function(){ +}); +{ +}{ +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "SymmetryInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "Translator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.appletjs"); +Clazz_load(["JU.GenericApplet"], "J.appletjs.Jmol", ["java.util.Hashtable"], function(){ +var c$ = Clazz_declareType(J.appletjs, "Jmol", JU.GenericApplet); +Clazz_makeConstructor(c$, +function(vwrOptions){ +Clazz_superConstructor (this, J.appletjs.Jmol, []); +this.htParams = new java.util.Hashtable(); +if (vwrOptions == null) vwrOptions = new java.util.Hashtable(); +this.vwrOptions = vwrOptions; +for (var entry, $entry = vwrOptions.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.htParams.put(entry.getKey().toLowerCase(), entry.getValue()); + +this.documentBase = "" + vwrOptions.get("documentBase"); +this.codeBase = "" + vwrOptions.get("codePath"); +JU.GenericApplet.isJS = true; +this.init(this); +}, "java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.atomdata"); +Clazz_load(null, "J.atomdata.AtomData", ["JU.P3", "JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.programInfo = null; +this.fileName = null; +this.modelName = null; +this.modelIndex = 0; +this.bsSelected = null; +this.bsIgnored = null; +this.bsMolecules = null; +this.radiusData = null; +this.firstAtomIndex = 0; +this.firstModelIndex = 0; +this.lastModelIndex = 0; +this.hAtomRadius = 0; +this.atomIndex = null; +this.atoms = null; +this.xyz = null; +this.atomRadius = null; +this.atomicNumber = null; +this.atomMolecule = null; +this.hAtoms = null; +this.ac = 0; +this.hydrogenAtomCount = 0; +this.adpMode = 0; +Clazz_instantialize(this, arguments);}, J.atomdata, "AtomData", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "transformXYZ", +function(mat, bs){ +var p = new Array(this.xyz.length); +if (bs == null) bs = JU.BSUtil.newBitSet2(0, this.xyz.length); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (this.xyz[i] == null) continue; +p[i] = JU.P3.newP(this.xyz[i]); +mat.rotTrans(p[i]); +} +this.xyz = p; +}, "JU.M4,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.atomdata"); +Clazz_declareInterface(J.atomdata, "AtomDataServer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.atomdata"); +Clazz_load(["java.lang.Enum", "J.c.VDW"], "J.atomdata.RadiusData", ["JU.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.info = null; +this.factorType = null; +this.vdwType = null; +this.value = NaN; +this.valueExtended = 0; +this.values = null; +Clazz_instantialize(this, arguments);}, J.atomdata, "RadiusData", null); +Clazz_prepareFields (c$, function(){ +this.factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +this.vdwType = J.c.VDW.AUTO; +}); +Clazz_makeConstructor(c$, +function(values, value, factorType, vdwType){ +if (values != null) { +this.values = values; +this.value = 2147483647; +return; +}if (factorType == null) return; +this.factorType = factorType; +this.value = value; +if (vdwType != null) this.vdwType = vdwType; +}, "~A,~N,J.atomdata.RadiusData.EnumType,J.c.VDW"); +Clazz_overrideMethod(c$, "toString", +function(){ +if (Float.isNaN(this.value)) return ""; +var sb = new JU.SB(); +switch (this.factorType) { +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +sb.appendF(this.value); +break; +case J.atomdata.RadiusData.EnumType.OFFSET: +sb.append(this.value > 0 ? "+" : "").appendF(this.value); +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +sb.appendI(Clazz_floatToInt(this.value * 100)).append("%"); +if (this.vdwType !== J.c.VDW.AUTO) sb.append(this.vdwType.getVdwLabel()); +break; +case J.atomdata.RadiusData.EnumType.SCREEN: +sb.appendI(Clazz_floatToInt(this.value)); +} +return sb.toString(); +}); +/*if2*/;(function(){ +var c$ = Clazz_declareType(J.atomdata.RadiusData, "EnumType", Enum); +Clazz_defineEnumConstant(c$, "ABSOLUTE", 0, []); +Clazz_defineEnumConstant(c$, "OFFSET", 1, []); +Clazz_defineEnumConstant(c$, "FACTOR", 2, []); +Clazz_defineEnumConstant(c$, "SCREEN", 3, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs"); +Clazz_load(["J.awtjs2d.Platform"], "J.awtjs.Platform", null, function(){ +var c$ = Clazz_declareType(J.awtjs, "Platform", J.awtjs2d.Platform); +Clazz_overrideMethod(c$, "drawImage", +function(g, img, x, y, width, height, isDTI){ +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz_overrideMethod(c$, "getTextPixels", +function(text, font3d, gObj, image, width, height, ascent){ +return null; +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "getGraphics", +function(image){ +return null; +}, "~O"); +Clazz_overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return null; +}, "~O,~B"); +Clazz_overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +return null; +}, "~O,~N,~N"); +Clazz_overrideMethod(c$, "newOffScreenImage", +function(w, h){ +return null; +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +(function(){ +var c$ = Clazz_declareType(J.awtjs2d, "Display", null); +c$.getFullScreenDimensions = Clazz_defineMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +{ +widthHeight[0] = canvas.width; +widthHeight[1] = canvas.height; +}}, "~O,~A"); +c$.hasFocus = Clazz_defineMethod(c$, "hasFocus", +function(canvas){ +{ +}return true; +}, "~O"); +c$.requestFocusInWindow = Clazz_defineMethod(c$, "requestFocusInWindow", +function(canvas){ +{ +}}, "~O"); +c$.renderScreenImage = Clazz_defineMethod(c$, "renderScreenImage", +function(vwr, g, size){ +{ +}}, "J.api.PlatformViewer,~O,~O"); +c$.prompt = Clazz_defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +{ +var s = (data == null ? alert(label) : prompt(label, data)); +if (s != null)return s; +}return "null"; +}, "~S,~S,~A,~B"); +c$.convertPointFromScreen = Clazz_defineMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +{ +}}, "~O,JU.P3"); +c$.drawImage = Clazz_defineMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +{ +var buf8 = canvas.buf8; +var buf32 = canvas.buf32; +var n = canvas.width * canvas.height; +var di = 1; +if (isDTI) { +var diw = width % 2; +width = Math.floor(width/2); +di = Math.floor(canvas.width/width); +} +var dw = (canvas.width - width || x) * 4; +for (var i = 0, p = 0, j = x * 4; i < n;) { +buf8[j++] = (buf32[i] >> 16) & 0xFF; +buf8[j++] = (buf32[i] >> 8) & 0xFF; +buf8[j++] = buf32[i] & 0xFF; +buf8[j++] = 0xFF; +i += di; +if (++p%width==0) { +if (diw) { +i += 1; +buf8[j] = 0; +buf8[j+1] = 0; +buf8[j+2] = 0; +buf8[j+3] = 0; +} +j += dw; +} +} +context.putImageData(canvas.imgdata,0,0); +}}, "~O,~O,~N,~N,~N,~N,~B"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(null, "J.awtjs2d.Image", ["J.awtjs2d.Platform"], function(){ +var c$ = Clazz_declareType(J.awtjs2d, "Image", null); +c$.getWidth = Clazz_defineMethod(c$, "getWidth", +function(canvas){ +{ +return (canvas.imageWidth ? canvas.imageWidth : canvas.width); +}}, "~O"); +c$.getHeight = Clazz_defineMethod(c$, "getHeight", +function(canvas){ +{ +return (canvas.imageHeight ? canvas.imageHeight : canvas.height); +}}, "~O"); +c$.grabPixels = Clazz_defineMethod(c$, "grabPixels", +function(context, width, height){ +var data = null; +{ +data = context.getImageData(0, 0, width, height).data; +}return J.awtjs2d.Image.toIntARGB(data); +}, "~O,~N,~N"); +c$.toIntARGB = Clazz_defineMethod(c$, "toIntARGB", +function(imgData){ +var n = Clazz_doubleToInt(imgData.length / 4); +var iData = Clazz_newIntArray (n, 0); +for (var i = 0, j = 0; i < n; ) { +iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | (imgData[j++] << 24); +} +return iData; +}, "~A"); +c$.getTextPixels = Clazz_defineMethod(c$, "getTextPixels", +function(text, font3d, context, width, height, ascent){ +{ +context.fillStyle = "#000000"; +context.fillRect(0, 0, width, height); +context.fillStyle = "#FFFFFF"; +context.font = font3d.font; +context.fillText(text, 0, ascent); +}return J.awtjs2d.Image.grabPixels(context, width, height); +}, "~S,JU.Font,~O,~N,~N,~N"); +c$.allocateRgbImage = Clazz_defineMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, canvas){ +{ +if (canvas == null) +canvas = {width:windowWidth,height:windowHeight}; +canvas.buf32 = pBuffer; +}return canvas; +}, "~N,~N,~A,~N,~B,~O"); +c$.getImageDialog = Clazz_defineMethod(c$, "getImageDialog", +function(vwr, title, imageMap){ +return J.awtjs2d.Platform.Jmol().consoleGetImageDialog(vwr, title, imageMap); +}, "JV.Viewer,~S,java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(["J.api.GenericFileInterface"], "J.awtjs2d.JSFile", ["JU.OC", "$.PT", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.fullName = null; +Clazz_instantialize(this, arguments);}, J.awtjs2d, "JSFile", null, J.api.GenericFileInterface); +Clazz_makeConstructor(c$, +function(name){ +this.name = name.$replace('\\', '/'); +this.fullName = name; +if (!this.fullName.startsWith("/") && JU.OC.urlTypeIndex(name) < 0) this.fullName = JV.Viewer.jsDocumentBase + "/" + this.fullName; +this.fullName = JU.PT.rep(this.fullName, "/./", "/"); +name = name.substring(name.lastIndexOf("/") + 1); +}, "~S"); +c$.newFile = Clazz_defineMethod(c$, "newFile", +function(name){ +return new J.awtjs2d.JSFile(name); +}, "~S"); +Clazz_overrideMethod(c$, "getParentAsFile", +function(){ +var pt = this.fullName.lastIndexOf("/"); +return (pt < 0 ? null : new J.awtjs2d.JSFile(this.fullName.substring(0, pt))); +}); +Clazz_overrideMethod(c$, "getFullPath", +function(){ +return this.fullName; +}); +Clazz_overrideMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_overrideMethod(c$, "isDirectory", +function(){ +return this.fullName.endsWith("/"); +}); +Clazz_overrideMethod(c$, "length", +function(){ +return 0; +}); +c$.getURLContents = Clazz_defineMethod(c$, "getURLContents", +function(url, outputBytes, post){ +try { +var conn = url.openConnection(); +if (outputBytes != null) conn.outputBytes(outputBytes); + else if (post != null) conn.outputString(post); +return conn.getContents(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return e.toString(); +} else { +throw e; +} +} +}, "java.net.URL,~A,~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.fullName; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +(function(){ +var c$ = Clazz_declareType(J.awtjs2d, "JSFont", null); +c$.newFont = Clazz_defineMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize, type){ +fontFace = (fontFace.equals("Monospaced") ? "Courier" : fontFace.startsWith("Sans") ? "Helvetica Neue, Sans-serif" : "Serif"); +return (isBold ? "bold " : "") + (isItalic ? "italic " : "") + fontSize + type + " " + fontFace; +}, "~S,~B,~B,~N,~S"); +c$.getFontMetrics = Clazz_defineMethod(c$, "getFontMetrics", +function(font, context){ +{ +if (context.font != font.font) { +context.font = font.font; +font.font = context.font; +context._fontAscent = Math.ceil(font.fontSize); //pt, not px +// the descent is actually (px - pt) +// but I know of no way of getting access to the drawn height +context._fontDescent = Math.ceil(font.fontSize * 0.25);//approx +} +}return context; +}, "JU.Font,~O"); +c$.getAscent = Clazz_defineMethod(c$, "getAscent", +function(context){ +{ +return Math.ceil(context._fontAscent); +}}, "~O"); +c$.getDescent = Clazz_defineMethod(c$, "getDescent", +function(context){ +{ +return Math.ceil(context._fontDescent); +}}, "~O"); +c$.stringWidth = Clazz_defineMethod(c$, "stringWidth", +function(font, context, text){ +{ +context.font = font.font; +return Math.ceil(context.measureText(text).width); +}}, "JU.Font,~O,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(["J.api.GenericMouseInterface"], "J.awtjs2d.Mouse", ["JU.PT", "$.V3", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.manager = null; +this.keyBuffer = ""; +this.isMouseDown = false; +this.wheeling = false; +this.modifiersDown = 0; +this.xWhenPressed = 0; +this.yWhenPressed = 0; +this.modifiersWhenPressed10 = 0; +Clazz_instantialize(this, arguments);}, J.awtjs2d, "Mouse", null, J.api.GenericMouseInterface); +Clazz_makeConstructor(c$, +function(privateKey, vwr, display){ +this.vwr = vwr; +this.manager = this.vwr.acm; +}, "~N,JV.Viewer,~O"); +Clazz_overrideMethod(c$, "clear", +function(){ +}); +Clazz_overrideMethod(c$, "dispose", +function(){ +}); +Clazz_overrideMethod(c$, "processEvent", +function(id, x, y, modifiers, time){ +if (id != 507) modifiers = J.awtjs2d.Mouse.applyLeftMouse(modifiers); +switch (id) { +case 507: +this.wheeled(time, x, modifiers); +break; +case 501: +this.xWhenPressed = x; +this.yWhenPressed = y; +this.modifiersWhenPressed10 = modifiers; +this.pressed(time, x, y, modifiers, false); +break; +case 506: +this.dragged(time, x, y); +break; +case 504: +this.entry(time, x, y, false); +break; +case 505: +this.entry(time, x, y, true); +break; +case 503: +this.moved(time, x, y, modifiers); +break; +case 502: +this.released(time, x, y, modifiers); +if (x == this.xWhenPressed && y == this.yWhenPressed && modifiers == this.modifiersWhenPressed10) { +this.clicked(time, x, y, modifiers, 1); +}break; +default: +return false; +} +return true; +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +if (touches[0].length < 2) return; +var t1 = touches[0]; +var t2 = touches[1]; +var t1first = t1[0]; +var t1last = t1[t2.length - 1]; +var x1first = t1first[0]; +var x1last = t1last[0]; +var dx1 = x1last - x1first; +var y1first = t1first[1]; +var y1last = t1last[1]; +var dy1 = y1last - y1first; +var v1 = JU.V3.new3(dx1, dy1, 0); +var d1 = v1.length(); +var t2first = t2[0]; +var t2last = t2[t2.length - 1]; +var x2first = t2first[0]; +var x2last = t2last[0]; +var dx2 = x2last - x2first; +var y2first = t2first[1]; +var y2last = t2last[1]; +var dy2 = y2last - y2first; +var v2 = JU.V3.new3(dx2, dy2, 0); +var d2 = v2.length(); +if (d1 < 1 || d2 < 1) return; +v1.normalize(); +v2.normalize(); +var cos12 = (v1.dot(v2)); +if (cos12 > 0.8) { +var deltaX = Clazz_floatToInt(x1last - t1[t1.length - 2][0]); +var deltaY = Clazz_floatToInt(y1last - t1[t1.length - 2][1]); +this.vwr.translateXYBy(deltaX, deltaY); +} else if (cos12 < -0.8) { +v1 = JU.V3.new3(x2first - x1first, y2first - y1first, 0); +v2 = JU.V3.new3(x2last - x1last, y2last - y1last, 0); +var dx = v2.length() - v1.length(); +this.wheeled(System.currentTimeMillis(), dx < 0 ? -1 : 1, 32); +}}, "~A"); +Clazz_defineMethod(c$, "mouseClicked", +function(e){ +this.clicked(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.getClickCount()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseEntered", +function(e){ +this.entry(e.getWhen(), e.getX(), e.getY(), false); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseExited", +function(e){ +this.entry(e.getWhen(), e.getX(), e.getY(), true); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mousePressed", +function(e){ +this.pressed(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.isPopupTrigger()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseReleased", +function(e){ +this.released(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseDragged", +function(e){ +var modifiers = e.getModifiers(); +if ((modifiers & 28) == 0) modifiers |= 16; +this.dragged(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseMoved", +function(e){ +this.moved(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseWheelMoved", +function(e){ +e.consume(); +this.wheeled(e.getWhen(), e.getWheelRotation(), e.getModifiers()); +}, "java.awt.event.MouseWheelEvent"); +Clazz_defineMethod(c$, "keyTyped", +function(ke){ +ke.consume(); +if (!this.vwr.menuEnabled()) return; +var ch = ke.getKeyChar(); +var modifiers = ke.getModifiers(); +if (JU.Logger.debuggingHigh) JU.Logger.debug("MouseManager keyTyped: " + ch + " " + (0 + ch.charCodeAt(0)) + " " + modifiers); +if (modifiers != 0 && modifiers != 1) { +switch ((ch).charCodeAt(0)) { +case String.fromCharCode(11): +case 107: +var isON = !this.vwr.getBooleanProperty("allowKeyStrokes"); +switch (modifiers) { +case 2: +this.vwr.setBooleanProperty("allowKeyStrokes", isON); +this.vwr.setBooleanProperty("showKeyStrokes", true); +break; +case 10: +case 1: +this.vwr.setBooleanProperty("allowKeyStrokes", isON); +this.vwr.setBooleanProperty("showKeyStrokes", false); +break; +} +this.clearKeyBuffer(); +this.vwr.refresh(3, "showkey"); +break; +case 22: +case 118: +switch (modifiers) { +case 2: +break; +} +break; +case 26: +case 122: +switch (modifiers) { +case 2: +this.vwr.undoMoveAction(4165, 1); +break; +case 3: +this.vwr.undoMoveAction(4140, 1); +break; +} +break; +case 25: +case 121: +switch (modifiers) { +case 2: +this.vwr.undoMoveAction(4140, 1); +break; +} +break; +} +return; +}if (!this.vwr.getBooleanProperty("allowKeyStrokes")) return; +this.addKeyBuffer(ke.getModifiers() == 1 ? Character.toUpperCase(ch) : ch); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "keyPressed", +function(ke){ +if (this.vwr.isApplet) ke.consume(); +this.manager.keyPressed(ke.getKeyCode(), ke.getModifiers()); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "keyReleased", +function(ke){ +ke.consume(); +this.manager.keyReleased(ke.getKeyCode()); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "clearKeyBuffer", +function(){ +if (this.keyBuffer.length == 0) return; +this.keyBuffer = ""; +if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo \"\"", true, true); +}); +Clazz_defineMethod(c$, "addKeyBuffer", +function(ch){ +if (ch.charCodeAt(0) == 10) { +this.sendKeyBuffer(); +return; +}if (ch.charCodeAt(0) == 8) { +if (this.keyBuffer.length > 0) this.keyBuffer = this.keyBuffer.substring(0, this.keyBuffer.length - 1); +} else { +this.keyBuffer += ch; +}if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo " + JU.PT.esc("\1" + this.keyBuffer), true, true); +}, "~S"); +Clazz_defineMethod(c$, "sendKeyBuffer", +function(){ +var kb = this.keyBuffer; +if (this.vwr.getBooleanProperty("showKeyStrokes")) this.vwr.evalStringQuietSync("!set echo _KEYSTROKES; set echo bottom left;echo " + JU.PT.esc(this.keyBuffer), true, true); +this.clearKeyBuffer(); +this.vwr.evalStringQuietSync(kb, false, true); +}); +Clazz_defineMethod(c$, "entry", +function(time, x, y, isExit){ +this.wheeling = false; +this.isMouseDown = false; +this.modifiersDown = 0; +this.manager.mouseEnterExit(time, x, y, isExit); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "clicked", +function(time, x, y, modifiers, clickCount){ +this.clearKeyBuffer(); +this.manager.mouseAction(2, time, x, y, 1, modifiers); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "moved", +function(time, x, y, modifiers){ +this.clearKeyBuffer(); +if (this.isMouseDown) this.manager.mouseAction(1, time, x, y, 0, this.modifiersDown); + else this.manager.mouseAction(0, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "wheeled", +function(time, rotation, modifiers){ +this.clearKeyBuffer(); +this.wheeling = true; +this.manager.mouseAction(3, time, 0, rotation, 0, modifiers & -29 | 32); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "pressed", +function(time, x, y, modifiers, isPopupTrigger){ +this.clearKeyBuffer(); +this.isMouseDown = true; +this.modifiersDown = modifiers; +this.wheeling = false; +this.manager.mouseAction(4, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "released", +function(time, x, y, modifiers){ +this.isMouseDown = false; +this.modifiersDown = 0; +this.wheeling = false; +this.manager.mouseAction(5, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "dragged", +function(time, x, y){ +if (this.wheeling) return; +if ((this.modifiersDown & 20) == 20) this.modifiersDown = this.modifiersDown & -5 | 2; +this.manager.mouseAction(1, time, x, y, 0, this.modifiersDown); +}, "~N,~N,~N"); +c$.applyLeftMouse = Clazz_defineMethod(c$, "applyLeftMouse", +function(modifiers){ +return ((modifiers & 28) == 0) ? (modifiers | 16) : modifiers; +}, "~N"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +var e = event; +switch (e.getID()) { +case 401: +this.keyPressed(e); +break; +case 402: +this.keyReleased(e); +break; +case 400: +this.keyTyped(e); +break; +} +}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(["J.api.GenericPlatform"], "J.awtjs2d.Platform", ["java.net.URL", "JU.AjaxURLStreamHandlerFactory", "$.Rdr", "J.api.Interface", "J.awtjs2d.Display", "$.Image", "$.JSFile", "$.JSFont", "$.Mouse"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.canvas = null; +this.vwr = null; +this.context = null; +Clazz_instantialize(this, arguments);}, J.awtjs2d, "Platform", null, J.api.GenericPlatform); +Clazz_overrideMethod(c$, "setViewer", +function(vwr, canvas){ +{ +this.vwr = vwr; +if (canvas == null) { +canvas = document.createElement('canvas'); +this.context = canvas.getContext("2d"); +} else { +this.context = canvas.getContext("2d"); +canvas.imgdata = this.context.getImageData(0, 0, canvas.width, canvas.height); +canvas.buf8 = canvas.imgdata.data; +} +}this.canvas = canvas; +try { +java.net.URL.setURLStreamHandlerFactory( new JU.AjaxURLStreamHandlerFactory()); +} catch (e) { +} +}, "J.api.PlatformViewer,~O"); +Clazz_overrideMethod(c$, "isSingleThreaded", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "getJsObjectInfo", +function(jsObject, method, args){ +{ +return (method == null ? null : method == "localName" ? jsObject[0]["nodeName"] : args == null ? jsObject[0][method] : jsObject[0][method](args[0])); +}}, "~A,~S,~A"); +Clazz_overrideMethod(c$, "isHeadless", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "getMouseManager", +function(privateKey, display){ +return new J.awtjs2d.Mouse(privateKey, this.vwr, display); +}, "~N,~O"); +Clazz_overrideMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +J.awtjs2d.Display.convertPointFromScreen(canvas, ptTemp); +}, "~O,JU.P3"); +Clazz_overrideMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +J.awtjs2d.Display.getFullScreenDimensions(canvas, widthHeight); +}, "~O,~A"); +Clazz_overrideMethod(c$, "getMenuPopup", +function(menuStructure, type){ +var c = (type == 'j' ? "awtjs2d.JSJmolPopup" : "awtjs2d.JSModelKitPopup"); +var jmolpopup = J.api.Interface.getOption(c, this.vwr, "popup"); +try { +if (jmolpopup != null) jmolpopup.jpiInitialize(this.vwr, menuStructure); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +c = "Exception creating " + c + ":" + e; +System.out.println(c); +return null; +} else { +throw e; +} +} +return jmolpopup; +}, "~S,~S"); +Clazz_overrideMethod(c$, "hasFocus", +function(canvas){ +return J.awtjs2d.Display.hasFocus(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "prompt", +function(label, data, list, asButtons){ +return J.awtjs2d.Display.prompt(label, data, list, asButtons); +}, "~S,~S,~A,~B"); +Clazz_overrideMethod(c$, "renderScreenImage", +function(context, size){ +J.awtjs2d.Display.renderScreenImage(this.vwr, context, size); +}, "~O,~O"); +Clazz_overrideMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +J.awtjs2d.Display.drawImage(context, canvas, x, y, width, height, isDTI); +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz_overrideMethod(c$, "requestFocusInWindow", +function(canvas){ +J.awtjs2d.Display.requestFocusInWindow(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "repaint", +function(canvas){ +var jmol = null; +{ +jmol = (self.Jmol && Jmol.repaint ? Jmol : null); +}if (jmol != null) jmol.repaint((this.vwr).html5Applet, true); +}, "~O"); +Clazz_overrideMethod(c$, "setTransparentCursor", +function(canvas){ +}, "~O"); +Clazz_overrideMethod(c$, "setCursor", +function(c, canvas){ +J.awtjs2d.Platform.Jmol().setCursor((this.vwr).html5Applet, c); +}, "~N,~O"); +Clazz_overrideMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, isImageWrite){ +if (pBuffer == null) { +pBuffer = this.grabPixels(null, 0, 0, null); +{ +windowWidth = this.canvas.width; +windowHeight = this.canvas.height; +}}return J.awtjs2d.Image.allocateRgbImage(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, (isImageWrite ? null : this.canvas)); +}, "~N,~N,~A,~N,~B,~B"); +Clazz_overrideMethod(c$, "notifyEndOfRendering", +function(){ +}); +Clazz_overrideMethod(c$, "disposeGraphics", +function(gOffscreen){ +}, "~O"); +Clazz_overrideMethod(c$, "grabPixels", +function(canvas, width, height, pixels){ +var context2d = null; +var isWebGL = (canvas == null); +{ +if(isWebGL) { this.canvas = canvas = +Jmol.loadImage(this,"webgl","" ++System.currentTimeMillis(),this +.vwr.html5Applet._canvas.toDataURL(),null,null); width = +canvas.imageWidth; height = canvas.imageHeight; +canvas.imageWidth = 0; } +if (canvas.image && (width != canvas.width || height != +canvas.height)) Jmol.setCanvasImage(canvas, width, height); +if (canvas.buf32) return canvas.buf32; context2d = +canvas.getContext('2d'); +}var buf = J.awtjs2d.Image.grabPixels(context2d, width, height); +{ +canvas.buf32 = buf; +}if (isWebGL) for (var i = buf.length; --i >= 0; ) if (buf[i] == 0) buf[i] = -1; + +return buf; +}, "~O,~N,~N,~A"); +Clazz_overrideMethod(c$, "drawImageToBuffer", +function(gOffscreen, imageOffscreen, canvas, width, height, bgcolor){ +return this.grabPixels(canvas, width, height, null); +}, "~O,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "getTextPixels", +function(text, font3d, context, image, width, height, ascent){ +return J.awtjs2d.Image.getTextPixels(text, font3d, context, width, height, ascent); +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "flushImage", +function(imagePixelBuffer){ +}, "~O"); +Clazz_overrideMethod(c$, "getGraphics", +function(canvas){ +{ +return (canvas == null ? this.context : canvas.getContext("2d")); +}}, "~O"); +Clazz_overrideMethod(c$, "getImageHeight", +function(canvas){ +return (canvas == null ? -1 : J.awtjs2d.Image.getHeight(canvas)); +}, "~O"); +Clazz_overrideMethod(c$, "getImageWidth", +function(canvas){ +return (canvas == null ? -1 : J.awtjs2d.Image.getWidth(canvas)); +}, "~O"); +Clazz_overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return this.getGraphics(image); +}, "~O,~B"); +Clazz_overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +return J.awtjs2d.Platform.Jmol().getHiddenCanvas((this.vwr).html5Applet, "stereoImage", w, h); +}, "~O,~N,~N"); +Clazz_overrideMethod(c$, "newOffScreenImage", +function(w, h){ +return J.awtjs2d.Platform.Jmol().getHiddenCanvas((this.vwr).html5Applet, "textImage", w, h); +}, "~N,~N"); +Clazz_overrideMethod(c$, "waitForDisplay", +function(echoNameAndPath, zipBytes){ +return false; +}, "~O,~O"); +Clazz_overrideMethod(c$, "createImage", +function(name_path_bytes){ +var echoName = (name_path_bytes)[0]; +var path = (name_path_bytes)[1]; +var bytes = (name_path_bytes)[2]; +var vwr = this.vwr; +var sc = (bytes == null ? vwr.getEvalContextAndHoldQueue(vwr.eval) : null); +var f = null; +{ +f = function(canvas, pathOrError) { vwr.loadImageData(canvas, pathOrError, echoName, sc) }; +}return J.awtjs2d.Platform.Jmol().loadImage(this, echoName, path, bytes, f); +}, "~O"); +Clazz_overrideMethod(c$, "fontStringWidth", +function(font, text){ +return J.awtjs2d.JSFont.stringWidth(font, this.context, text); +}, "JU.Font,~S"); +Clazz_overrideMethod(c$, "getFontAscent", +function(context){ +return J.awtjs2d.JSFont.getAscent(context); +}, "~O"); +Clazz_overrideMethod(c$, "getFontDescent", +function(context){ +return J.awtjs2d.JSFont.getDescent(context); +}, "~O"); +Clazz_overrideMethod(c$, "getFontMetrics", +function(font, context){ +return J.awtjs2d.JSFont.getFontMetrics(font, context == null ? this.context : context); +}, "JU.Font,~O"); +Clazz_overrideMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize){ +return J.awtjs2d.JSFont.newFont(fontFace, isBold, isItalic, fontSize, "px"); +}, "~S,~B,~B,~N"); +Clazz_overrideMethod(c$, "getDateFormat", +function(isoType){ +{ +if (isoType == null) { +} else if (isoType.indexOf("8824") >= 0) { +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + (1 + d.getMonth()); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} else if (isoType.indexOf("8601") >= 0){ +var d = new Date(); +var x = d.toString().split(" "); +// Firefox now doing this? +if (x.length == 1) +return x; +var MM = "0" + (1 + d.getMonth()); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + '-' + MM + '-' + dd + 'T' + x[4] +} +return ("" + (new Date())).split(" (")[0]; +}}, "~S"); +Clazz_overrideMethod(c$, "newFile", +function(name){ +return new J.awtjs2d.JSFile(name); +}, "~S"); +Clazz_overrideMethod(c$, "getBufferedFileInputStream", +function(name){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "getURLContents", +function(url, outputBytes, post, asString){ +return J.awtjs2d.Platform.getURLContentsStatic(url, outputBytes, post, asString); +}, "java.net.URL,~A,~S,~B"); +c$.getURLContentsStatic = Clazz_defineMethod(c$, "getURLContentsStatic", +function(url, outputBytes, post, asString){ +var ret = J.awtjs2d.JSFile.getURLContents(url, outputBytes, post); +try { +return (!asString ? ret : (typeof(ret)=='string') ? ret : Clazz_instanceOf(ret,"JU.SB") ? (ret).toString() : Clazz_instanceOf(ret,Array) ? String.instantialize(ret) : String.instantialize(JU.Rdr.getStreamAsBytes(ret, null))); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return "" + e; +} else { +throw e; +} +} +}, "java.net.URL,~A,~S,~B"); +Clazz_overrideMethod(c$, "getLocalUrl", +function(fileName){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "getImageDialog", +function(title, imageMap){ +return J.awtjs2d.Image.getImageDialog(this.vwr, title, imageMap); +}, "~S,java.util.Map"); +c$.Jmol = Clazz_defineMethod(c$, "Jmol", +function(){ +{ +return Jmol; +}}); +Clazz_overrideMethod(c$, "forceAsyncLoad", +function(filename){ +return J.awtjs2d.Platform.Jmol().isBinaryUrl(filename); +}, "~S"); +Clazz_overrideMethod(c$, "getInChI", +function(){ +return (J.awtjs2d.Platform.inchi == null ? (J.awtjs2d.Platform.inchi = J.api.Interface.getInterface("J.inchi.InChIJS", this.vwr, "platform")) : J.awtjs2d.Platform.inchi); +}); +Clazz_overrideMethod(c$, "confirm", +function(msg, msgNo){ +var ok = false; +if (ok) return 0; +if (msgNo != null) ok = false; +return (ok ? 1 : 2); +}, "~S,~S"); +c$.inchi = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(null, "J.bspt.Bspf", ["JU.AU", "J.bspt.Bspt"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.dimMax = 0; +this.bspts = null; +this.isValid = false; +this.bsptsValid = null; +this.cubeIterators = null; +Clazz_instantialize(this, arguments);}, J.bspt, "Bspf", null); +Clazz_makeConstructor(c$, +function(dimMax){ +this.dimMax = dimMax; +this.bspts = new Array(1); +this.bsptsValid = Clazz_newBooleanArray(1, false); +this.cubeIterators = new Array(0); +}, "~N"); +Clazz_defineMethod(c$, "validateModel", +function(i, isValid){ +this.bsptsValid[i] = isValid; +}, "~N,~B"); +Clazz_defineMethod(c$, "isInitializedIndex", +function(bsptIndex){ +return this.bspts.length > bsptIndex && this.bspts[bsptIndex] != null && this.bsptsValid[bsptIndex]; +}, "~N"); +Clazz_defineMethod(c$, "addTuple", +function(bsptIndex, tuple){ +if (bsptIndex >= this.bspts.length) { +this.bspts = JU.AU.arrayCopyObject(this.bspts, bsptIndex + 1); +this.bsptsValid = JU.AU.arrayCopyBool(this.bsptsValid, bsptIndex + 1); +}var bspt = this.bspts[bsptIndex]; +if (bspt == null) { +bspt = this.bspts[bsptIndex] = new J.bspt.Bspt(this.dimMax, bsptIndex); +}bspt.addTuple(tuple); +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "stats", +function(){ +for (var i = 0; i < this.bspts.length; ++i) if (this.bspts[i] != null) this.bspts[i].stats(); + +}); +Clazz_defineMethod(c$, "getCubeIterator", +function(bsptIndex){ +if (bsptIndex < 0) return this.getNewCubeIterator(-1 - bsptIndex); +if (bsptIndex >= this.cubeIterators.length) this.cubeIterators = JU.AU.arrayCopyObject(this.cubeIterators, bsptIndex + 1); +if (this.cubeIterators[bsptIndex] == null && this.bspts[bsptIndex] != null) this.cubeIterators[bsptIndex] = this.getNewCubeIterator(bsptIndex); +this.cubeIterators[bsptIndex].set(this.bspts[bsptIndex]); +return this.cubeIterators[bsptIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getNewCubeIterator", +function(bsptIndex){ +return this.bspts[bsptIndex].allocateCubeIterator(); +}, "~N"); +Clazz_defineMethod(c$, "initialize", +function(modelIndex, atoms, modelAtomBitSet){ +if (this.bspts[modelIndex] != null) this.bspts[modelIndex].reset(); +for (var i = modelAtomBitSet.nextSetBit(0); i >= 0; i = modelAtomBitSet.nextSetBit(i + 1)) this.addTuple(modelIndex, atoms[i]); + +this.bsptsValid[modelIndex] = true; +}, "~N,~A,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(null, "J.bspt.Bspt", ["J.bspt.CubeIterator", "$.Leaf"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.treeDepth = 0; +this.dimMax = 0; +this.index = 0; +this.eleRoot = null; +Clazz_instantialize(this, arguments);}, J.bspt, "Bspt", null); +Clazz_makeConstructor(c$, +function(dimMax, index){ +this.dimMax = dimMax; +this.index = index; +this.reset(); +}, "~N,~N"); +Clazz_defineMethod(c$, "reset", +function(){ +this.eleRoot = new J.bspt.Leaf(this, null, 0); +this.treeDepth = 1; +}); +Clazz_defineMethod(c$, "addTuple", +function(tuple){ +this.eleRoot = this.eleRoot.addTuple(0, tuple); +}, "JU.T3"); +Clazz_defineMethod(c$, "stats", +function(){ +}); +Clazz_defineMethod(c$, "allocateCubeIterator", +function(){ +return new J.bspt.CubeIterator(this); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bspt = null; +this.stack = null; +this.sp = 0; +this.leafIndex = 0; +this.leaf = null; +this.radius = 0; +this.cx = 0; +this.cy = 0; +this.cz = 0; +this.dx = 0; +this.dy = 0; +this.dz = 0; +this.tHemisphere = false; +Clazz_instantialize(this, arguments);}, J.bspt, "CubeIterator", null); +Clazz_makeConstructor(c$, +function(bspt){ +this.set(bspt); +}, "J.bspt.Bspt"); +Clazz_defineMethod(c$, "set", +function(bspt){ +this.bspt = bspt; +this.stack = new Array(bspt.treeDepth); +}, "J.bspt.Bspt"); +Clazz_defineMethod(c$, "initialize", +function(center, radius, hemisphereOnly){ +this.radius = radius; +this.tHemisphere = false; +this.cx = center.x; +this.cy = center.y; +this.cz = center.z; +this.leaf = null; +if (this.stack.length < this.bspt.treeDepth) this.set(this.bspt); +this.stack[0] = this.bspt.eleRoot; +this.sp = 1; +this.findLeftLeaf(); +this.tHemisphere = hemisphereOnly; +}, "JU.T3,~N,~B"); +Clazz_defineMethod(c$, "release", +function(){ +this.set(this.bspt); +}); +Clazz_defineMethod(c$, "hasMoreElements", +function(){ +while (this.leaf != null) { +for (; this.leafIndex < this.leaf.count; ++this.leafIndex) if (this.isWithinRadius(this.leaf.tuples[this.leafIndex])) return true; + +this.findLeftLeaf(); +} +return false; +}); +Clazz_defineMethod(c$, "nextElement", +function(){ +return this.leaf.tuples[this.leafIndex++]; +}); +Clazz_defineMethod(c$, "foundDistance2", +function(){ +return this.dx * this.dx + this.dy * this.dy + this.dz * this.dz; +}); +Clazz_defineMethod(c$, "findLeftLeaf", +function(){ +this.leaf = null; +if (this.sp == 0) return; +var ele = this.stack[--this.sp]; +while (Clazz_instanceOf(ele,"J.bspt.Node")) { +var node = ele; +var minValue; +switch (node.dim) { +case 0: +minValue = this.cx; +break; +case 1: +minValue = this.cy; +break; +case 2: +default: +minValue = this.cz; +break; +} +var maxValue = minValue + this.radius; +if (!this.tHemisphere || node.dim != 0) minValue -= this.radius; +if (minValue <= node.maxLeft && maxValue >= node.minLeft) { +if (maxValue >= node.minRight && minValue <= node.maxRight) { +this.stack[this.sp++] = node.eleRight; +}ele = node.eleLeft; +} else if (maxValue >= node.minRight && minValue <= node.maxRight) { +ele = node.eleRight; +} else { +if (this.sp == 0) return; +ele = this.stack[--this.sp]; +}} +this.leaf = ele; +this.leafIndex = 0; +}); +Clazz_defineMethod(c$, "isWithinRadius", +function(t){ +this.dx = t.x - this.cx; +return ((!this.tHemisphere || this.dx >= 0) && (this.dx = Math.abs(this.dx)) <= this.radius && (this.dy = Math.abs(t.y - this.cy)) <= this.radius && (this.dz = Math.abs(t.z - this.cz)) <= this.radius); +}, "JU.T3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bspt = null; +this.count = 0; +Clazz_instantialize(this, arguments);}, J.bspt, "Element", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(["J.bspt.Element"], "J.bspt.Leaf", ["J.bspt.Node"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tuples = null; +Clazz_instantialize(this, arguments);}, J.bspt, "Leaf", J.bspt.Element); +Clazz_makeConstructor(c$, +function(bspt, leaf, countToKeep){ +this.bspt = bspt; +this.count = 0; +this.tuples = new Array(2); +if (leaf == null) return; +for (var i = countToKeep; i < 2; ++i) { +this.tuples[this.count++] = leaf.tuples[i]; +leaf.tuples[i] = null; +} +leaf.count = countToKeep; +}, "J.bspt.Bspt,J.bspt.Leaf,~N"); +Clazz_defineMethod(c$, "sort", +function(dim){ +for (var i = this.count; --i > 0; ) { +var champion = this.tuples[i]; +var championValue = J.bspt.Node.getDimensionValue(champion, dim); +for (var j = i; --j >= 0; ) { +var challenger = this.tuples[j]; +var challengerValue = J.bspt.Node.getDimensionValue(challenger, dim); +if (challengerValue > championValue) { +this.tuples[i] = challenger; +this.tuples[j] = champion; +champion = challenger; +championValue = challengerValue; +}} +} +}, "~N"); +Clazz_overrideMethod(c$, "addTuple", +function(level, tuple){ +if (this.count < 2) { +this.tuples[this.count++] = tuple; +return this; +}var node = new J.bspt.Node(this.bspt, level, this); +return node.addTuple(level, tuple); +}, "~N,JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(["J.bspt.Element"], "J.bspt.Node", ["J.bspt.Leaf"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.dim = 0; +this.minLeft = 0; +this.maxLeft = 0; +this.eleLeft = null; +this.minRight = 0; +this.maxRight = 0; +this.eleRight = null; +Clazz_instantialize(this, arguments);}, J.bspt, "Node", J.bspt.Element); +Clazz_makeConstructor(c$, +function(bspt, level, leafLeft){ +this.bspt = bspt; +if (level == bspt.treeDepth) { +bspt.treeDepth = level + 1; +}if (leafLeft.count != 2) throw new NullPointerException(); +this.dim = level % bspt.dimMax; +leafLeft.sort(this.dim); +var leafRight = new J.bspt.Leaf(bspt, leafLeft, 1); +this.minLeft = J.bspt.Node.getDimensionValue(leafLeft.tuples[0], this.dim); +this.maxLeft = J.bspt.Node.getDimensionValue(leafLeft.tuples[leafLeft.count - 1], this.dim); +this.minRight = J.bspt.Node.getDimensionValue(leafRight.tuples[0], this.dim); +this.maxRight = J.bspt.Node.getDimensionValue(leafRight.tuples[leafRight.count - 1], this.dim); +this.eleLeft = leafLeft; +this.eleRight = leafRight; +this.count = 2; +}, "J.bspt.Bspt,~N,J.bspt.Leaf"); +Clazz_defineMethod(c$, "addTuple", +function(level, tuple){ +var dimValue = J.bspt.Node.getDimensionValue(tuple, this.dim); +++this.count; +var addLeft; +if (dimValue < this.maxLeft) { +addLeft = true; +} else if (dimValue > this.minRight) { +addLeft = false; +} else if (dimValue == this.maxLeft) { +if (dimValue == this.minRight) { +if (this.eleLeft.count < this.eleRight.count) addLeft = true; + else addLeft = false; +} else { +addLeft = true; +}} else if (dimValue == this.minRight) { +addLeft = false; +} else { +if (this.eleLeft.count < this.eleRight.count) addLeft = true; + else addLeft = false; +}if (addLeft) { +if (dimValue < this.minLeft) this.minLeft = dimValue; + else if (dimValue > this.maxLeft) this.maxLeft = dimValue; +this.eleLeft = this.eleLeft.addTuple(level + 1, tuple); +} else { +if (dimValue < this.minRight) this.minRight = dimValue; + else if (dimValue > this.maxRight) this.maxRight = dimValue; +this.eleRight = this.eleRight.addTuple(level + 1, tuple); +}return this; +}, "~N,JU.T3"); +c$.getDimensionValue = Clazz_defineMethod(c$, "getDimensionValue", +function(pt, dim){ +if (pt == null) System.out.println("bspt.Node ???"); +switch (dim) { +case 0: +return pt.x; +case 1: +return pt.y; +default: +return pt.z; +} +}, "JU.T3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.CBK", ["JU.SB"], function(){ +var c$ = Clazz_declareType(J.c, "CBK", Enum); +c$.getCallback = Clazz_defineMethod(c$, "getCallback", +function(name){ +name = name.toUpperCase(); +var pt = name.indexOf("CALLBACK"); +if (pt > 0) name = name.substring(0, pt); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.name().equalsIgnoreCase(name)) return item; + +return null; +}, "~S"); +c$.getNameList = Clazz_defineMethod(c$, "getNameList", +function(){ +if (J.c.CBK.nameList == null) { +var names = new JU.SB(); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) names.append(item.name().toLowerCase()).append("Callback;"); + +J.c.CBK.nameList = names.toString(); +}return J.c.CBK.nameList; +}); +c$.nameList = null; +Clazz_defineEnumConstant(c$, "ANIMFRAME", 0, []); +Clazz_defineEnumConstant(c$, "APPLETREADY", 1, []); +Clazz_defineEnumConstant(c$, "ATOMMOVED", 2, []); +Clazz_defineEnumConstant(c$, "AUDIO", 3, []); +Clazz_defineEnumConstant(c$, "CLICK", 4, []); +Clazz_defineEnumConstant(c$, "DRAGDROP", 5, []); +Clazz_defineEnumConstant(c$, "ECHO", 6, []); +Clazz_defineEnumConstant(c$, "ERROR", 7, []); +Clazz_defineEnumConstant(c$, "EVAL", 8, []); +Clazz_defineEnumConstant(c$, "HOVER", 9, []); +Clazz_defineEnumConstant(c$, "IMAGE", 10, []); +Clazz_defineEnumConstant(c$, "LOADSTRUCT", 11, []); +Clazz_defineEnumConstant(c$, "MEASURE", 12, []); +Clazz_defineEnumConstant(c$, "MESSAGE", 13, []); +Clazz_defineEnumConstant(c$, "MINIMIZATION", 14, []); +Clazz_defineEnumConstant(c$, "MODELKIT", 15, []); +Clazz_defineEnumConstant(c$, "PICK", 16, []); +Clazz_defineEnumConstant(c$, "RESIZE", 17, []); +Clazz_defineEnumConstant(c$, "SCRIPT", 18, []); +Clazz_defineEnumConstant(c$, "SELECT", 19, []); +Clazz_defineEnumConstant(c$, "SERVICE", 20, []); +Clazz_defineEnumConstant(c$, "STRUCTUREMODIFIED", 21, []); +Clazz_defineEnumConstant(c$, "SYNC", 22, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.FIL", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.code = 0; +Clazz_instantialize(this, arguments);}, J.c, "FIL", Enum); +Clazz_defineMethod(c$, "getCode", +function(){ +return this.code; +}); +Clazz_makeConstructor(c$, +function(code){ +this.code = code; +}, "~N"); +Clazz_defineEnumConstant(c$, "DELETED", 0, [5]); +Clazz_defineEnumConstant(c$, "CREATED", 1, [3]); +Clazz_defineEnumConstant(c$, "CREATING_MODELSET", 2, [2]); +Clazz_defineEnumConstant(c$, "ZAPPED", 3, [0]); +Clazz_defineEnumConstant(c$, "NOT_LOADED", 4, [-1]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.PAL", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$$name = null; +this.id = 0; +Clazz_instantialize(this, arguments);}, J.c, "PAL", Enum); +Clazz_makeConstructor(c$, +function(name, id){ +this.$$name = name; +this.id = id; +}, "~S,~N"); +c$.pidOf = Clazz_defineMethod(c$, "pidOf", +function(value){ +return (Clazz_instanceOf(value,"J.c.PAL") ? (value).id : Clazz_instanceOf(value, Byte) ? (value).byteValue() : J.c.PAL.UNKNOWN.id); +}, "~O"); +c$.isPaletteVariable = Clazz_defineMethod(c$, "isPaletteVariable", +function(pid){ +return ((pid & 64) != 0); +}, "~N"); +c$.getPalette = Clazz_defineMethod(c$, "getPalette", +function(paletteName){ +if (paletteName.indexOf('_') < 0) for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (paletteName.equalsIgnoreCase(item.$$name)) return item; + +return (paletteName.indexOf("property_") == 0 ? J.c.PAL.PROPERTY : J.c.PAL.UNKNOWN); +}, "~S"); +c$.getPaletteID = Clazz_defineMethod(c$, "getPaletteID", +function(paletteName){ +if (paletteName.indexOf('_') < 0) for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (paletteName.equalsIgnoreCase(item.$$name)) return item.id; + +return (paletteName.indexOf("property_") == 0 ? J.c.PAL.PROPERTY.id : J.c.PAL.UNKNOWN.id); +}, "~S"); +c$.getPaletteName = Clazz_defineMethod(c$, "getPaletteName", +function(pid){ +for (var item, $item = 0, $$item = J.c.PAL.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.id == pid) return item.$$name; + +return null; +}, "~N"); +c$.PALETTE_VOLATILE = 0x40; +c$.PALETTE_NONE = 0; +c$.PALETTE_CPK = 1; +c$.PALETTE_PARTIAL_CHARGE = 2; +c$.PALETTE_FORMAL_CHARGE = 3; +c$.PALETTE_TEMP = 68; +c$.PALETTE_FIXEDTEMP = 5; +c$.PALETTE_SURFACE = 70; +c$.PALETTE_STRUCTURE = 7; +c$.PALETTE_AMINO = 8; +c$.PALETTE_SHAPELY = 9; +c$.PALETTE_CHAIN = 10; +c$.PALETTE_GROUP = 75; +c$.PALETTE_MONOMER = 76; +c$.PALETTE_MOLECULE = 77; +c$.PALETTE_ALTLOC = 14; +c$.PALETTE_INSERTION = 15; +c$.PALETTE_JMOL = 16; +c$.PALETTE_RASMOL = 17; +c$.PALETTE_TYPE = 18; +c$.PALETTE_ENERGY = 19; +c$.PALETTE_PROPERTY = 84; +c$.PALETTE_VARIABLE = 85; +c$.PALETTE_STRAIGHTNESS = 86; +c$.PALETTE_POLYMER = 87; +c$.PALETTE_NUCLEIC = 24; +c$.argbsCpkRasmol = Clazz_newIntArray(-1, [16716947, 33554431, 50315467, 62005794, 83951360, 113821896, 126849023, 149946368, 165324064, 184549631, 203590434, 226525328, 249210144, 268412160, 285198386, 285277952, 343965840, 377520272, 411074704, 427851920, 452961536, 480586282, 497363498, 514140714, 598026794, 796950672, 899686640, 956278016, 1339729184]); +c$.argbsCpk = Clazz_newIntArray(-1, [0xFFFF1493, 0xFFFFFFFF, 0xFFD9FFFF, 0xFFCC80FF, 0xFFC2FF00, 0xFFFFB5B5, 0xFF909090, 0xFF3050F8, 0xFFFF0D0D, 0xFF90E050, 0xFFB3E3F5, 0xFFAB5CF2, 0xFF8AFF00, 0xFFBFA6A6, 0xFFF0C8A0, 0xFFFF8000, 0xFFFFFF30, 0xFF1FF01F, 0xFF80D1E3, 0xFF8F40D4, 0xFF3DFF00, 0xFFE6E6E6, 0xFFBFC2C7, 0xFFA6A6AB, 0xFF8A99C7, 0xFF9C7AC7, 0xFFE06633, 0xFFF090A0, 0xFF50D050, 0xFFC88033, 0xFF7D80B0, 0xFFC28F8F, 0xFF668F8F, 0xFFBD80E3, 0xFFFFA100, 0xFFA62929, 0xFF5CB8D1, 0xFF702EB0, 0xFF00FF00, 0xFF94FFFF, 0xFF94E0E0, 0xFF73C2C9, 0xFF54B5B5, 0xFF3B9E9E, 0xFF248F8F, 0xFF0A7D8C, 0xFF006985, 0xFFC0C0C0, 0xFFFFD98F, 0xFFA67573, 0xFF668080, 0xFF9E63B5, 0xFFD47A00, 0xFF940094, 0xFF429EB0, 0xFF57178F, 0xFF00C900, 0xFF70D4FF, 0xFFFFFFC7, 0xFFD9FFC7, 0xFFC7FFC7, 0xFFA3FFC7, 0xFF8FFFC7, 0xFF61FFC7, 0xFF45FFC7, 0xFF30FFC7, 0xFF1FFFC7, 0xFF00FF9C, 0xFF00E675, 0xFF00D452, 0xFF00BF38, 0xFF00AB24, 0xFF4DC2FF, 0xFF4DA6FF, 0xFF2194D6, 0xFF267DAB, 0xFF266696, 0xFF175487, 0xFFD0D0E0, 0xFFFFD123, 0xFFB8B8D0, 0xFFA6544D, 0xFF575961, 0xFF9E4FB5, 0xFFAB5C00, 0xFF754F45, 0xFF428296, 0xFF420066, 0xFF007D00, 0xFF70ABFA, 0xFF00BAFF, 0xFF00A1FF, 0xFF008FFF, 0xFF0080FF, 0xFF006BFF, 0xFF545CF2, 0xFF785CE3, 0xFF8A4FE3, 0xFFA136D4, 0xFFB31FD4, 0xFFB31FBA, 0xFFB30DA6, 0xFFBD0D87, 0xFFC70066, 0xFFCC0059, 0xFFD1004F, 0xFFD90045, 0xFFE00038, 0xFFE6002E, 0xFFEB0026]); +Clazz_defineEnumConstant(c$, "UNKNOWN", 0, [null, 0xFF]); +Clazz_defineEnumConstant(c$, "NONE", 1, ["none", 0]); +Clazz_defineEnumConstant(c$, "CPK", 2, ["cpk", 1]); +Clazz_defineEnumConstant(c$, "PARTIAL_CHARGE", 3, ["partialcharge", 2]); +Clazz_defineEnumConstant(c$, "FORMAL_CHARGE", 4, ["formalcharge", 3]); +Clazz_defineEnumConstant(c$, "TEMP", 5, ["temperature", 68]); +Clazz_defineEnumConstant(c$, "FIXEDTEMP", 6, ["fixedtemperature", 5]); +Clazz_defineEnumConstant(c$, "SURFACE", 7, ["surfacedistance", 70]); +Clazz_defineEnumConstant(c$, "STRUCTURE", 8, ["structure", 7]); +Clazz_defineEnumConstant(c$, "AMINO", 9, ["amino", 8]); +Clazz_defineEnumConstant(c$, "SHAPELY", 10, ["shapely", 9]); +Clazz_defineEnumConstant(c$, "CHAIN", 11, ["chain", 10]); +Clazz_defineEnumConstant(c$, "GROUP", 12, ["group", 75]); +Clazz_defineEnumConstant(c$, "MONOMER", 13, ["monomer", 76]); +Clazz_defineEnumConstant(c$, "MOLECULE", 14, ["molecule", 77]); +Clazz_defineEnumConstant(c$, "ALTLOC", 15, ["altloc", 14]); +Clazz_defineEnumConstant(c$, "INSERTION", 16, ["insertion", 15]); +Clazz_defineEnumConstant(c$, "JMOL", 17, ["jmol", 16]); +Clazz_defineEnumConstant(c$, "RASMOL", 18, ["rasmol", 17]); +Clazz_defineEnumConstant(c$, "TYPE", 19, ["type", 18]); +Clazz_defineEnumConstant(c$, "ENERGY", 20, ["energy", 19]); +Clazz_defineEnumConstant(c$, "PROPERTY", 21, ["property", 84]); +Clazz_defineEnumConstant(c$, "VARIABLE", 22, ["variable", 85]); +Clazz_defineEnumConstant(c$, "STRAIGHTNESS", 23, ["straightness", 86]); +Clazz_defineEnumConstant(c$, "POLYMER", 24, ["polymer", 87]); +Clazz_defineEnumConstant(c$, "NUCLEIC", 25, ["nucleic", 24]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.STER", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$$name = null; +this.$isBiColor = false; +Clazz_instantialize(this, arguments);}, J.c, "STER", Enum); +Clazz_makeConstructor(c$, +function(name, isBiColor){ +this.$$name = name; +this.$isBiColor = isBiColor; +}, "~S,~B"); +Clazz_defineMethod(c$, "getName", +function(){ +return this.$$name; +}); +Clazz_defineMethod(c$, "isBiColor", +function(){ +return this.$isBiColor; +}); +c$.getStereoMode = Clazz_defineMethod(c$, "getStereoMode", +function(id){ +for (var item, $item = 0, $$item = J.c.STER.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.$$name.equalsIgnoreCase(id)) return item; + +return null; +}, "~S"); +Clazz_defineEnumConstant(c$, "NONE", 0, ["OFF", false]); +Clazz_defineEnumConstant(c$, "DOUBLE", 1, ["", false]); +Clazz_defineEnumConstant(c$, "REDCYAN", 2, ["REDCYAN", true]); +Clazz_defineEnumConstant(c$, "REDBLUE", 3, ["REDBLUE", true]); +Clazz_defineEnumConstant(c$, "REDGREEN", 4, ["REDGREEN", true]); +Clazz_defineEnumConstant(c$, "DTI", 5, ["DTI", false]); +Clazz_defineEnumConstant(c$, "CUSTOM", 6, ["", true]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.STR", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.id = 0; +this.color = 0; +Clazz_instantialize(this, arguments);}, J.c, "STR", Enum); +Clazz_makeConstructor(c$, +function(id, color){ +this.id = id; +this.color = color; +}, "~N,~N"); +Clazz_defineMethod(c$, "getId", +function(){ +return this.id; +}); +Clazz_defineMethod(c$, "getColor", +function(){ +return this.color; +}); +c$.getProteinStructureType = Clazz_defineMethod(c$, "getProteinStructureType", +function(name){ +for (var item, $item = 0, $$item = J.c.STR.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (name.equalsIgnoreCase(item.name())) return (item.isProtein() ? item : J.c.STR.NOT); + +return J.c.STR.NOT; +}, "~S"); +Clazz_defineMethod(c$, "getBioStructureTypeName", +function(isGeneric){ +return (this.id < 0 ? "" : isGeneric && this.isProtein() ? "protein" : this.name()); +}, "~B"); +Clazz_defineMethod(c$, "isProtein", +function(){ +return this.id >= 0 && this.id <= 3 || this.id >= 7; +}); +Clazz_defineEnumConstant(c$, "NOT", 0, [-1, 0xFF808080]); +Clazz_defineEnumConstant(c$, "NONE", 1, [0, 0xFFFFFFFF]); +Clazz_defineEnumConstant(c$, "TURN", 2, [1, 0xFF6080FF]); +Clazz_defineEnumConstant(c$, "SHEET", 3, [2, 0xFFFFC800]); +Clazz_defineEnumConstant(c$, "HELIX", 4, [3, 0xFFFF0080]); +Clazz_defineEnumConstant(c$, "DNA", 5, [4, 0xFFAE00FE]); +Clazz_defineEnumConstant(c$, "RNA", 6, [5, 0xFFFD0162]); +Clazz_defineEnumConstant(c$, "CARBOHYDRATE", 7, [6, 0xFFA6A6FA]); +Clazz_defineEnumConstant(c$, "HELIX310", 8, [7, 0xFFA00080]); +Clazz_defineEnumConstant(c$, "HELIXALPHA", 9, [8, 0xFFFF0080]); +Clazz_defineEnumConstant(c$, "HELIXPI", 10, [9, 0xFF600080]); +Clazz_defineEnumConstant(c$, "ANNOTATION", 11, [-2, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.c"); +Clazz_load(["java.lang.Enum"], "J.c.VDW", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pt = 0; +this.type = null; +this.type2 = null; +Clazz_instantialize(this, arguments);}, J.c, "VDW", Enum); +Clazz_makeConstructor(c$, +function(pt, type, type2){ +this.pt = pt; +this.type = type; +this.type2 = type2; +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "getVdwLabel", +function(){ +return (this.type == null ? this.type2 : this.type); +}); +c$.getVdwType = Clazz_defineMethod(c$, "getVdwType", +function(label){ +if (label != null) for (var item, $item = 0, $$item = J.c.VDW.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (label.equalsIgnoreCase(item.type)) return item; + +return null; +}, "~S"); +c$.getVdwType2 = Clazz_defineMethod(c$, "getVdwType2", +function(label){ +if (label != null) for (var item, $item = 0, $$item = J.c.VDW.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (label.equalsIgnoreCase(item.type2)) return item; + +return null; +}, "~S"); +Clazz_defineEnumConstant(c$, "JMOL", 0, [0, "Jmol", null]); +Clazz_defineEnumConstant(c$, "BABEL", 1, [1, "Babel", null]); +Clazz_defineEnumConstant(c$, "RASMOL", 2, [2, "RasMol", null]); +Clazz_defineEnumConstant(c$, "BABEL21", 3, [3, "Babel21", null]); +Clazz_defineEnumConstant(c$, "AUTO_JMOL", 4, [0, null, "Jmol"]); +Clazz_defineEnumConstant(c$, "AUTO_BABEL", 5, [1, null, "Babel"]); +Clazz_defineEnumConstant(c$, "AUTO_RASMOL", 6, [2, null, "RasMol"]); +Clazz_defineEnumConstant(c$, "AUTO", 7, [0, "Auto", null]); +Clazz_defineEnumConstant(c$, "USER", 8, [-1, "User", null]); +Clazz_defineEnumConstant(c$, "ADPMAX", 9, [-1, null, "adpmax"]); +Clazz_defineEnumConstant(c$, "ADPMIN", 10, [-1, null, "adpmin"]); +Clazz_defineEnumConstant(c$, "HYDRO", 11, [-1, null, "hydrophobic"]); +Clazz_defineEnumConstant(c$, "BONDING", 12, [-1, null, "bondingradius"]); +Clazz_defineEnumConstant(c$, "TEMP", 13, [-1, null, "temperature"]); +Clazz_defineEnumConstant(c$, "NOJMOL", 14, [-1, null, null]); +Clazz_defineEnumConstant(c$, "NADA", 15, [-1, null, null]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["JU.P3i"], "J.g3d.CylinderRenderer", ["JU.AU", "$.P3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.line3d = null; +this.shader = null; +this.colixA = 0; +this.colixB = 0; +this.shadesA = null; +this.shadesB = null; +this.xA = 0; +this.yA = 0; +this.zA = 0; +this.xAend = 0; +this.yAend = 0; +this.zAend = 0; +this.dxB = 0; +this.dyB = 0; +this.dzB = 0; +this.xAf = 0; +this.yAf = 0; +this.zAf = 0; +this.dxBf = 0; +this.dyBf = 0; +this.dzBf = 0; +this.tEvenDiameter = false; +this.diameter = 0; +this.endcaps = 0; +this.endCapHidden = false; +this.xEndcap = 0; +this.yEndcap = 0; +this.zEndcap = 0; +this.argbEndcap = 0; +this.colixEndcap = 0; +this.endcapShadeIndex = 0; +this.radius = 0; +this.radius2 = 0; +this.cosTheta = 0; +this.cosPhi = 0; +this.sinPhi = 0; +this.clipped = false; +this.rasterCount = 0; +this.xyztRaster = null; +this.xyzfRaster = null; +this.ptA0 = null; +this.ptB0 = null; +this.ptA0i = null; +this.ptB0i = null; +this.xTip = 0; +this.yTip = 0; +this.zTip = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "CylinderRenderer", null); +Clazz_prepareFields (c$, function(){ +this.xyztRaster = Clazz_newArray(-1, [ Clazz_newFloatArray (32, 0), Clazz_newFloatArray (32, 0), Clazz_newFloatArray (32, 0), Clazz_newFloatArray (32, 0)]); +this.xyzfRaster = Clazz_newArray(-1, [ Clazz_newIntArray (32, 0), Clazz_newIntArray (32, 0), Clazz_newIntArray (32, 0), Clazz_newIntArray (32, 0)]); +this.ptA0i = new JU.P3i(); +this.ptB0i = new JU.P3i(); +}); +Clazz_makeConstructor(c$, +function(g3d){ +this.g3d = g3d; +this.line3d = g3d.line3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "renderOld", +function(colixA, colixB, screen, endcaps, diameter, xa, ya, za, xb, yb, zb){ +var r = Clazz_doubleToInt(diameter / 2) + 1; +var g = this.g3d; +var codeMinA = g.clipCode3(xa - r, ya - r, za - r); +var codeMaxA = g.clipCode3(xa + r, ya + r, za + r); +var codeMinB = g.clipCode3(xb - r, yb - r, zb - r); +var codeMaxB = g.clipCode3(xb + r, yb + r, zb + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxB = xb - xa; +this.dyB = yb - ya; +this.dzB = zb - za; +if (diameter <= 1) { +this.line3d.plotLineDeltaOld(g.getColorArgbOrGray(colixA), g.getColorArgbOrGray(colixB), xa, ya, za, this.dxB, this.dyB, this.dzB, this.clipped); +return; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.diameter = diameter; +this.xA = xa; +this.yA = ya; +this.zA = za; +this.endcaps = endcaps; +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.calcArgbEndcap(true, false); +this.calcCosSin(this.dxB, this.dyB, this.dzB); +this.calcPoints(3, false); +this.interpolate(0, 1, this.xyzfRaster, this.xyztRaster); +this.interpolate(1, 2, this.xyzfRaster, this.xyztRaster); +var xyzf = this.xyzfRaster; +if (endcaps == 2) this.renderFlatEndcap(true, false, xyzf); +g.setZMargin(5); +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +var p = g.pixel; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.line3d.plotLineDeltaAOld(this.shadesA, this.shadesB, screen, fpz, this.xA + x, this.yA + y, this.zA - z, this.dxB, this.dyB, this.dzB, this.clipped); +if (drawBackside) { +this.line3d.plotLineDeltaOld(this.shadesA[fpzBack], this.shadesB[fpzBack], this.xA - x, this.yA - y, this.zA + z, this.dxB, this.dyB, this.dzB, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "renderBitsFloat", +function(colixA, colixB, screen, endcaps, diameter, ptA, ptB){ +var g = this.g3d; +if (this.ptA0 == null) { +this.ptA0 = new JU.P3(); +this.ptB0 = new JU.P3(); +}this.ptA0.setT(ptA); +var r = Clazz_doubleToInt(diameter / 2) + 1; +var ixA = Math.round(ptA.x); +var iyA = Math.round(ptA.y); +var izA = Math.round(ptA.z); +var ixB = Math.round(ptB.x); +var iyB = Math.round(ptB.y); +var izB = Math.round(ptB.z); +var codeMinA = g.clipCode3(ixA - r, iyA - r, izA - r); +var codeMaxA = g.clipCode3(ixA + r, iyA + r, izA + r); +var codeMinB = g.clipCode3(ixB - r, iyB - r, izB - r); +var codeMaxB = g.clipCode3(ixB + r, iyB + r, izB + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxBf = ptB.x - ptA.x; +this.dyBf = ptB.y - ptA.y; +this.dzBf = ptB.z - ptA.z; +if (diameter > 0) { +this.diameter = diameter; +this.xAf = ptA.x; +this.yAf = ptA.y; +this.zAf = ptA.z; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.xA = Clazz_floatToInt(this.xAf); +this.yA = Clazz_floatToInt(this.yAf); +this.zA = Clazz_floatToInt(this.zAf); +this.dxB = Clazz_floatToInt(this.dxBf); +this.dyB = Clazz_floatToInt(this.dyBf); +this.dzB = Clazz_floatToInt(this.dzBf); +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.endcaps = endcaps; +this.calcArgbEndcap(true, true); +var xyzf = this.xyzfRaster; +if (diameter > 0) this.generateBaseEllipsePrecisely(false); +if (endcaps == 2) this.renderFlatEndcap(true, true, xyzf); +this.line3d.setLineBits(this.dxBf, this.dyBf); +g.setZMargin(5); +var p = g.pixel; +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.ptA0.set(this.xA + x, this.yA + y, this.zA - z); +this.ptB0.setT(this.ptA0); +this.ptB0.x += this.dxB; +this.ptB0.y += this.dyB; +this.ptB0.z += this.dzB; +this.line3d.plotLineDeltaABitsFloat(this.shadesA, this.shadesB, fpz, this.ptA0, this.ptB0, screen, this.clipped); +if (drawBackside) { +this.ptA0.set(this.xA - x, this.yA - y, this.zA + z); +this.ptB0.setT(this.ptA0); +this.ptB0.x += this.dxB; +this.ptB0.y += this.dyB; +this.ptB0.z += this.dzB; +this.line3d.plotLineDeltaABitsFloat(this.shadesA, this.shadesB, fpzBack, this.ptA0, this.ptB0, screen, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +this.xAf += this.dxBf; +this.yAf += this.dyBf; +this.zAf += this.dzBf; +}, "~N,~N,~N,~N,~N,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "renderBits", +function(colixA, colixB, screen, endcaps, diameter, ptA, ptB){ +var g = this.g3d; +if (diameter == 0 || diameter == 1) { +this.line3d.plotLineBits(g.getColorArgbOrGray(colixA), g.getColorArgbOrGray(colixB), ptA, ptB, 0, 0, false); +return; +}this.ptA0i.setT(ptA); +var r = Clazz_doubleToInt(diameter / 2) + 1; +var ixA = ptA.x; +var iyA = ptA.y; +var izA = ptA.z; +var ixB = ptB.x; +var iyB = ptB.y; +var izB = ptB.z; +var codeMinA = g.clipCode3(ixA - r, iyA - r, izA - r); +var codeMaxA = g.clipCode3(ixA + r, iyA + r, izA + r); +var codeMinB = g.clipCode3(ixB - r, iyB - r, izB - r); +var codeMaxB = g.clipCode3(ixB + r, iyB + r, izB + r); +var c = (codeMinA | codeMaxA | codeMinB | codeMaxB); +this.clipped = (c != 0); +if (c == -1 || (codeMinA & codeMaxB & codeMaxA & codeMinB) != 0) return; +this.dxBf = ptB.x - ptA.x; +this.dyBf = ptB.y - ptA.y; +this.dzBf = ptB.z - ptA.z; +if (diameter > 0) { +this.diameter = diameter; +this.xAf = ptA.x; +this.yAf = ptA.y; +this.zAf = ptA.z; +}var drawBackside = (screen == 0 && (this.clipped || endcaps == 2 || endcaps == 0)); +this.xA = Clazz_floatToInt(this.xAf); +this.yA = Clazz_floatToInt(this.yAf); +this.zA = Clazz_floatToInt(this.zAf); +this.dxB = Clazz_floatToInt(this.dxBf); +this.dyB = Clazz_floatToInt(this.dyBf); +this.dzB = Clazz_floatToInt(this.dzBf); +this.shadesA = g.getShades(this.colixA = colixA); +this.shadesB = g.getShades(this.colixB = colixB); +this.endcaps = endcaps; +this.calcArgbEndcap(true, true); +var xyzf = this.xyzfRaster; +if (diameter > 0) this.generateBaseEllipsePrecisely(false); +if (endcaps == 2) this.renderFlatEndcap(true, true, xyzf); +this.line3d.setLineBits(this.dxBf, this.dyBf); +g.setZMargin(5); +var p = g.pixel; +var width = g.width; +var zbuf = g.zbuf; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +var fr = xyzf[3]; +for (var i = this.rasterCount; --i >= 0; ) { +var fpz = fr[i] >> (8); +var fpzBack = fpz >> 1; +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +if (this.endCapHidden && this.argbEndcap != 0) { +if (this.clipped) { +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelClippedArgb(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +} else { +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap + x, this.yEndcap + y, this.zEndcap - z - 1, width, zbuf, p); +g.plotPixelUnclipped(this.argbEndcap, this.xEndcap - x, this.yEndcap - y, this.zEndcap + z - 1, width, zbuf, p); +}}this.ptA0i.set(this.xA + x, this.yA + y, this.zA - z); +this.ptB0i.setT(this.ptA0i); +this.ptB0i.x += this.dxB; +this.ptB0i.y += this.dyB; +this.ptB0i.z += this.dzB; +this.line3d.plotLineDeltaABitsInt(this.shadesA, this.shadesB, fpz, this.ptA0i, this.ptB0i, screen, this.clipped); +if (drawBackside) { +this.ptA0i.set(this.xA - x, this.yA - y, this.zA + z); +this.ptB0i.setT(this.ptA0i); +this.ptB0i.x += this.dxB; +this.ptB0i.y += this.dyB; +this.ptB0i.z += this.dzB; +this.line3d.plotLineDeltaABitsInt(this.shadesA, this.shadesB, fpzBack, this.ptA0i, this.ptB0i, screen, this.clipped); +}} +g.setZMargin(0); +if (endcaps == 3) this.renderSphericalEndcaps(); +this.xAf += this.dxBf; +this.yAf += this.dyBf; +this.zAf += this.dzBf; +}, "~N,~N,~N,~N,~N,JU.P3i,JU.P3i"); +Clazz_defineMethod(c$, "renderConeOld", +function(colix, endcap, diameter, xa, ya, za, xtip, ytip, ztip, doFill, isBarb){ +this.dxBf = (xtip) - (this.xAf = xa); +this.dyBf = (ytip) - (this.yAf = ya); +this.dzBf = (ztip) - (this.zAf = za); +this.xA = Clazz_doubleToInt(Math.floor(this.xAf)); +this.yA = Clazz_doubleToInt(Math.floor(this.yAf)); +this.zA = Clazz_doubleToInt(Math.floor(this.zAf)); +this.dxB = Clazz_doubleToInt(Math.floor(this.dxBf)); +this.dyB = Clazz_doubleToInt(Math.floor(this.dyBf)); +this.dzB = Clazz_doubleToInt(Math.floor(this.dzBf)); +this.xTip = xtip; +this.yTip = ytip; +this.zTip = ztip; +this.shadesA = this.g3d.getShades(this.colixA = colix); +var shadeIndexTip = this.shader.getShadeIndex(this.dxB, this.dyB, -this.dzB); +var g3d = this.g3d; +var p = g3d.pixel; +var width = g3d.width; +var zbuf = g3d.zbuf; +g3d.plotPixelClippedArgb(this.shadesA[shadeIndexTip], Clazz_floatToInt(xtip), Clazz_floatToInt(ytip), Clazz_floatToInt(ztip), width, zbuf, p); +this.diameter = diameter; +if (diameter <= 1) { +if (diameter == 1) this.line3d.plotLineDeltaOld(this.colixA, this.colixA, this.xA, this.yA, this.zA, this.dxB, this.dyB, this.dzB, this.clipped); +return; +}this.endcaps = endcap; +this.calcArgbEndcap(false, true); +this.generateBaseEllipsePrecisely(isBarb); +if (!isBarb && this.endcaps == 2) this.renderFlatEndcap(false, true, this.xyzfRaster); +g3d.setZMargin(5); +var xr = this.xyztRaster[0]; +var yr = this.xyztRaster[1]; +var zr = this.xyztRaster[2]; +var fr = this.xyzfRaster[3]; +var sA = this.shadesA; +var doOpen = (this.endCapHidden && this.argbEndcap != 0); +for (var i = this.rasterCount; --i >= 0; ) { +var x = xr[i]; +var y = yr[i]; +var z = zr[i]; +var fpz = fr[i] >> (8); +var xUp = this.xAf + x; +var yUp = this.yAf + y; +var zUp = this.zAf - z; +var xDn = this.xAf - x; +var yDn = this.yAf - y; +var zDn = this.zAf + z; +var argb = sA[0]; +if (doOpen) { +g3d.plotPixelClippedArgb(this.argbEndcap, Clazz_floatToInt(xUp), Clazz_floatToInt(yUp), Clazz_floatToInt(zUp), width, zbuf, p); +g3d.plotPixelClippedArgb(this.argbEndcap, Clazz_floatToInt(xDn), Clazz_floatToInt(yDn), Clazz_floatToInt(zDn), width, zbuf, p); +}if (argb != 0) { +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz_floatToInt(xUp), Clazz_floatToInt(yUp), Clazz_floatToInt(zUp), Clazz_doubleToInt(Math.ceil(this.xTip - xUp)), Clazz_doubleToInt(Math.ceil(this.yTip - yUp)), Clazz_doubleToInt(Math.ceil(this.zTip - zUp)), true); +if (doFill) { +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz_floatToInt(xUp), Clazz_floatToInt(yUp) + 1, Clazz_floatToInt(zUp), Clazz_doubleToInt(Math.ceil(this.xTip - xUp)), Clazz_doubleToInt(Math.ceil(this.yTip - yUp)) + 1, Clazz_doubleToInt(Math.ceil(this.zTip - zUp)), true); +this.line3d.plotLineDeltaAOld(sA, sA, 0, fpz, Clazz_floatToInt(xUp) + 1, Clazz_floatToInt(yUp), Clazz_floatToInt(zUp), Clazz_doubleToInt(Math.ceil(this.xTip - xUp)) + 1, Clazz_doubleToInt(Math.ceil(this.yTip - yUp)), Clazz_doubleToInt(Math.ceil(this.zTip - zUp)), true); +}if (!isBarb && !(this.endcaps != 2 && this.dzB > 0)) { +this.line3d.plotLineDeltaOld(argb, argb, Clazz_floatToInt(xDn), Clazz_floatToInt(yDn), Clazz_floatToInt(zDn), Clazz_doubleToInt(Math.ceil(this.xTip - xDn)), Clazz_doubleToInt(Math.ceil(this.yTip - yDn)), Clazz_doubleToInt(Math.ceil(this.zTip - zDn)), true); +}}} +g3d.setZMargin(0); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~B,~B"); +Clazz_defineMethod(c$, "generateBaseEllipsePrecisely", +function(isBarb){ +this.calcCosSin(this.dxBf, this.dyBf, this.dzBf); +this.calcPoints(isBarb ? 2 : 3, true); +this.interpolatePrecisely(0, 1, this.xyzfRaster, this.xyztRaster); +if (!isBarb) this.interpolatePrecisely(1, 2, this.xyzfRaster, this.xyztRaster); +for (var i = 3; --i >= 0; ) for (var j = this.rasterCount; --j >= 0; ) this.xyzfRaster[i][j] = Clazz_doubleToInt(Math.floor(this.xyztRaster[i][j])); + + +}, "~B"); +Clazz_defineMethod(c$, "calcPoints", +function(count, isPrecise){ +this.calcRotatedPoint(0, 0, isPrecise, this.xyzfRaster, this.xyztRaster); +this.calcRotatedPoint(0.5, 1, isPrecise, this.xyzfRaster, this.xyztRaster); +if ((this.rasterCount = count) == 3) this.calcRotatedPoint(1, 2, isPrecise, this.xyzfRaster, this.xyztRaster); +}, "~N,~B"); +Clazz_defineMethod(c$, "calcCosSin", +function(dx, dy, dz){ +var mag2d2 = dx * dx + dy * dy; +if (mag2d2 == 0) { +this.cosTheta = 1; +this.cosPhi = 1; +this.sinPhi = 0; +} else { +var mag2d = Math.sqrt(mag2d2); +var mag3d = Math.sqrt(mag2d2 + dz * dz); +this.cosTheta = dz / mag3d; +this.cosPhi = dx / mag2d; +this.sinPhi = dy / mag2d; +}}, "~N,~N,~N"); +Clazz_defineMethod(c$, "calcRotatedPoint", +function(t, i, isPrecision, xyzf, xyzt){ +xyzt[3][i] = t; +var tPI = t * 3.141592653589793; +var xT = Math.sin(tPI) * this.cosTheta; +var yT = Math.cos(tPI); +var xR = this.radius * (xT * this.cosPhi - yT * this.sinPhi); +var yR = this.radius * (xT * this.sinPhi + yT * this.cosPhi); +var z2 = this.radius2 - (xR * xR + yR * yR); +var zR = (z2 > 0 ? Math.sqrt(z2) : 0); +if (isPrecision) { +xyzt[0][i] = xR; +xyzt[1][i] = yR; +xyzt[2][i] = zR; +} else if (this.tEvenDiameter) { +xyzf[0][i] = Clazz_doubleToInt(xR - 0.5); +xyzf[1][i] = Clazz_doubleToInt(yR - 0.5); +xyzf[2][i] = Clazz_doubleToInt(zR + 0.5); +} else { +xyzf[0][i] = Clazz_doubleToInt(xR); +xyzf[1][i] = Clazz_doubleToInt(yR); +xyzf[2][i] = Clazz_doubleToInt(zR + 0.5); +}xyzf[3][i] = this.shader.getShadeFp8(xR, yR, zR); +}, "~N,~N,~B,~A,~A"); +Clazz_defineMethod(c$, "allocRaster", +function(isPrecision, xyzf, xyzt){ +if (this.rasterCount >= xyzf[0].length) while (this.rasterCount >= xyzf[0].length) { +for (var i = 4; --i >= 0; ) xyzf[i] = JU.AU.doubleLengthI(xyzf[i]); + +xyzt[3] = JU.AU.doubleLengthF(xyzt[3]); +} +if (isPrecision) while (this.rasterCount >= xyzt[0].length) { +for (var i = 3; --i >= 0; ) xyzt[i] = JU.AU.doubleLengthF(xyzt[i]); + +} +return this.rasterCount++; +}, "~B,~A,~A"); +Clazz_defineMethod(c$, "interpolate", +function(iLower, iUpper, xyzf, xyzt){ +var x = xyzf[0]; +var y = xyzf[1]; +var dx = x[iUpper] - x[iLower]; +if (dx < 0) dx = -dx; +var dy = y[iUpper] - y[iLower]; +if (dy < 0) dy = -dy; +if ((dx + dy) <= 1) return; +var iMid = this.allocRaster(false, xyzf, xyzt); +x = xyzf[0]; +y = xyzf[1]; +var f = xyzf[3]; +var tLower = xyzt[3][iLower]; +var tUpper = xyzt[3][iUpper]; +for (var j = 4; --j >= 0; ) { +var tMid = (tLower + tUpper) / 2; +this.calcRotatedPoint(tMid, iMid, false, xyzf, xyzt); +if ((x[iMid] == x[iLower]) && (y[iMid] == y[iLower])) { +f[iLower] = (f[iLower] + f[iMid]) >>> 1; +tLower = tMid; +} else if ((x[iMid] == x[iUpper]) && (y[iMid] == y[iUpper])) { +f[iUpper] = (f[iUpper] + f[iMid]) >>> 1; +tUpper = tMid; +} else { +this.interpolate(iLower, iMid, xyzf, xyzt); +this.interpolate(iMid, iUpper, xyzf, xyzt); +return; +}} +x[iMid] = x[iLower]; +y[iMid] = y[iUpper]; +}, "~N,~N,~A,~A"); +Clazz_defineMethod(c$, "interpolatePrecisely", +function(iLower, iUpper, xyzf, xyzt){ +var x = xyzt[0]; +var y = xyzt[1]; +var dx = Clazz_doubleToInt(Math.floor(x[iUpper])) - Clazz_doubleToInt(Math.floor(x[iLower])); +if (dx < 0) dx = -dx; +var dy = Clazz_doubleToInt(Math.floor(y[iUpper])) - Clazz_doubleToInt(Math.floor(y[iLower])); +if (dy < 0) dy = -dy; +if ((dx + dy) <= 1) return; +var t = xyzt[3]; +var tLower = t[iLower]; +var tUpper = t[iUpper]; +var iMid = this.allocRaster(true, xyzf, xyzt); +x = xyzt[0]; +y = xyzt[1]; +t = xyzt[3]; +var f = xyzf[3]; +for (var j = 4; --j >= 0; ) { +var tMid = (tLower + tUpper) / 2; +this.calcRotatedPoint(tMid, iMid, true, xyzf, xyzt); +if ((Clazz_doubleToInt(Math.floor(x[iMid])) == Clazz_doubleToInt(Math.floor(x[iLower]))) && (Clazz_doubleToInt(Math.floor(y[iMid])) == Clazz_doubleToInt(Math.floor(y[iLower])))) { +f[iLower] = (f[iLower] + f[iMid]) >>> 1; +tLower = tMid; +} else if ((Clazz_doubleToInt(Math.floor(x[iMid])) == Clazz_doubleToInt(Math.floor(x[iUpper]))) && (Clazz_doubleToInt(Math.floor(y[iMid])) == Clazz_doubleToInt(Math.floor(y[iUpper])))) { +f[iUpper] = (f[iUpper] + f[iMid]) >>> 1; +tUpper = tMid; +} else { +this.interpolatePrecisely(iLower, iMid, xyzf, xyzt); +this.interpolatePrecisely(iMid, iUpper, xyzf, xyzt); +return; +}} +x[iMid] = x[iLower]; +y[iMid] = y[iUpper]; +}, "~N,~N,~A,~A"); +Clazz_defineMethod(c$, "renderFlatEndcap", +function(isCylinder, isPrecise, xyzf){ +var xT; +var yT; +var zT; +if (isPrecise) { +if (this.dzBf == 0 || this.colixEndcap == 0 || !this.g3d.setC(this.colixEndcap)) return; +var xTf = this.xAf; +var yTf = this.yAf; +var zTf = this.zAf; +if (isCylinder && this.dzBf < 0) { +xTf += this.dxBf; +yTf += this.dyBf; +zTf += this.dzBf; +}xT = Clazz_floatToInt(xTf); +yT = Clazz_floatToInt(yTf); +zT = Clazz_floatToInt(zTf); +} else { +if (this.dzB == 0 || this.colixEndcap == 0 || !this.g3d.setC(this.colixEndcap)) return; +xT = this.xAend; +yT = this.yAend; +zT = this.zAend; +if (isCylinder && this.dzB < 0) { +xT += this.dxB; +yT += this.dyB; +zT += this.dzB; +}}var yMin = xyzf[1][0]; +var yMax = xyzf[1][0]; +var zXMin = 0; +var zXMax = 0; +var xr = xyzf[0]; +var yr = xyzf[1]; +var zr = xyzf[2]; +for (var i = this.rasterCount; --i > 0; ) { +var y = yr[i]; +if (y < yMin) yMin = y; + else if (y > yMax) yMax = y; + else { +y = -y; +if (y < yMin) yMin = y; + else if (y > yMax) yMax = y; +}} +for (var y = yMin; y <= yMax; ++y) { +var xMin = 2147483647; +var xMax = -2147483648; +for (var i = this.rasterCount; --i >= 0; ) { +if (yr[i] == y) { +var x = xr[i]; +if (x < xMin) { +xMin = x; +zXMin = zr[i]; +}if (x > xMax) { +xMax = x; +zXMax = zr[i]; +}}if (yr[i] == -y) { +var x = -xr[i]; +if (x < xMin) { +xMin = x; +zXMin = -zr[i]; +}if (x > xMax) { +xMax = x; +zXMax = -zr[i]; +}}} +var count = xMax - xMin + 1; +this.g3d.setColorNoisy(this.endcapShadeIndex); +this.g3d.plotPixelsClippedRaster(count, xT + xMin, yT + y, zT - zXMin - 1, zT - zXMax - 1, null, null); +} +}, "~B,~B,~A"); +Clazz_defineMethod(c$, "renderSphericalEndcaps", +function(){ +if (this.colixA != 0 && this.g3d.setC(this.colixA)) this.g3d.fillSphereXYZ(this.diameter, this.xA, this.yA, this.zA + 1); +if (this.colixB != 0 && this.g3d.setC(this.colixB)) this.g3d.fillSphereXYZ(this.diameter, this.xA + this.dxB, this.yA + this.dyB, this.zA + this.dzB + 1); +}); +Clazz_defineMethod(c$, "calcArgbEndcap", +function(tCylinder, isFloat){ +this.tEvenDiameter = ((this.diameter & 1) == 0); +this.radius = this.diameter / 2.0; +this.radius2 = this.radius * this.radius; +this.endCapHidden = false; +var dzf = (isFloat ? this.dzBf : this.dzB); +if (this.endcaps == 3 || dzf == 0) return; +this.xEndcap = this.xAend = this.xA; +this.yEndcap = this.yAend = this.yA; +this.zEndcap = this.zAend = this.zA; +var shadesEndcap; +var dxf = (isFloat ? this.dxBf : this.dxB); +var dyf = (isFloat ? this.dyBf : this.dyB); +if (dzf >= 0 || !tCylinder) { +this.endcapShadeIndex = this.shader.getShadeIndex(-dxf, -dyf, dzf); +if (this.colixA == 0) { +this.xAend += Clazz_doubleToInt(this.dxB / 2); +this.yAend += Clazz_doubleToInt(this.dyB / 2); +this.zAend += Clazz_doubleToInt(this.dzB / 2); +this.colixEndcap = this.colixB; +} else { +this.colixEndcap = this.colixA; +}} else { +this.endcapShadeIndex = this.shader.getShadeIndex(dxf, dyf, -dzf); +if (this.colixB == 0) { +this.colixEndcap = this.colixA; +this.xAend -= Clazz_doubleToInt(this.dxB / 2); +this.yAend -= Clazz_doubleToInt(this.dyB / 2); +this.zAend -= Clazz_doubleToInt(this.dzB / 2); +} else { +this.colixEndcap = this.colixB; +this.xEndcap += this.dxB; +this.yEndcap += this.dyB; +this.zEndcap += this.dzB; +}}shadesEndcap = (this.colixEndcap == this.colixA ? this.shadesA : this.shadesB); +if (this.endcapShadeIndex > 56) this.endcapShadeIndex = 56; +this.argbEndcap = shadesEndcap[this.endcapShadeIndex]; +this.endCapHidden = (this.endcaps == 1); +}, "~B,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_declareInterface(J.g3d, "G3DRenderer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.api.JmolRendererInterface", "JU.GData", "JU.P3i", "$.V3"], "J.g3d.Graphics3D", ["java.util.Arrays", "JU.AU", "J.api.Interface", "J.c.STER", "J.g3d.CylinderRenderer", "$.LineRenderer", "$.Pixelator", "$.PixelatorScreened", "$.PixelatorShaded", "$.PixelatorT", "$.Platform3D", "$.SphereRenderer", "$.TextRenderer", "$.TextString", "JU.C", "$.Normix"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.platform = null; +this.line3d = null; +this.sphere3d = null; +this.cylinder3d = null; +this.triangle3d = null; +this.circle3d = null; +this.hermite3d = null; +this.isFullSceneAntialiasingEnabled = false; +this.antialias2 = false; +this.strings = null; +this.stringCount = 0; +this.anaglyphChannelBytes = null; +this.twoPass = false; +this.$haveTranslucentObjects = false; +this.pbuf = null; +this.pbufT = null; +this.zbuf = null; +this.zbufT = null; +this.translucencyMask = 0; +this.renderLow = false; +this.shadesCurrent = null; +this.anaglyphLength = 0; +this.pixel = null; +this.pixel0 = null; +this.pixelT0 = null; +this.pixelScreened = null; +this.pixelShaded = null; +this.zMargin = 0; +this.aobuf = null; +this.currentShadeIndex = 0; +this.lastRawColor = 0; +this.translucencyLog = 0; +this.wasScreened = false; +this.saveAmbient = 0; +this.saveDiffuse = 0; +this.sA = null; +this.sB = null; +this.sC = null; +this.vectorAB = null; +this.vectorAC = null; +this.vectorNormal = null; +this.shadeIndexes = null; +this.shadeIndexes2Sided = null; +this.pass2Flag01 = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "Graphics3D", JU.GData, J.api.JmolRendererInterface); +Clazz_prepareFields (c$, function(){ +this.sA = new JU.P3i(); +this.sB = new JU.P3i(); +this.sC = new JU.P3i(); +this.vectorAB = new JU.V3(); +this.vectorAC = new JU.V3(); +this.vectorNormal = new JU.V3(); +this.shadeIndexes = Clazz_newByteArray (JU.GData.normixCount, 0); +this.shadeIndexes2Sided = Clazz_newByteArray (JU.GData.normixCount, 0); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.g3d.Graphics3D, []); +for (var i = JU.GData.normixCount; --i >= 0; ) this.transformedVectors[i] = new JU.V3(); + +}); +Clazz_overrideMethod(c$, "isWebGL", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "clear", +function(){ +this.stringCount = 0; +this.strings = null; +J.g3d.TextRenderer.clearFontCache(); +}); +Clazz_overrideMethod(c$, "destroy", +function(){ +this.releaseBuffers(); +this.platform = null; +this.pixel = this.pixel0 = this.pixelShaded = null; +this.pixelT0 = null; +this.pixelScreened = null; +this.graphicsForMetrics = null; +}); +Clazz_defineMethod(c$, "setZMargin", +function(dz){ +this.zMargin = dz; +}, "~N"); +Clazz_overrideMethod(c$, "initialize", +function(vwr, apiPlatform){ +this.vwr = vwr; +this.apiPlatform = apiPlatform; +this.platform = new J.g3d.Platform3D(apiPlatform); +this.pixel = this.pixel0 = new J.g3d.Pixelator(this); +this.graphicsForMetrics = this.platform.getGraphicsForMetrics(); +this.line3d = new J.g3d.LineRenderer(this); +this.sphere3d = new J.g3d.SphereRenderer(this); +this.cylinder3d = new J.g3d.CylinderRenderer(this); +}, "JV.Viewer,J.api.GenericPlatform"); +Clazz_overrideMethod(c$, "addRenderer", +function(tok){ +switch (tok) { +case 1073741880: +if (this.circle3d == null) this.circle3d = this.getRenderer("Circle"); +break; +case 553648143: +if (this.hermite3d == null) this.hermite3d = this.getRenderer("Hermite"); +case 1073742182: +if (this.triangle3d == null) { +this.triangle3d = this.getRenderer("Triangle"); +(this.triangle3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +}break; +} +}, "~N"); +Clazz_defineMethod(c$, "getRenderer", +function(type){ +var r = (J.api.Interface.getOption("g3d." + type + "Renderer", this.vwr, "render")); +if (r == null) throw new NullPointerException("Interface"); +r.set(this, this); +return r; +}, "~S"); +Clazz_overrideMethod(c$, "setWindowParameters", +function(width, height, antialias){ +this.setWinParams(width, height, antialias); +if (this.currentlyRendering) this.endRendering(); +}, "~N,~N,~B"); +Clazz_overrideMethod(c$, "checkTranslucent", +function(isAlphaTranslucent){ +if (isAlphaTranslucent) this.$haveTranslucentObjects = true; +return (!this.twoPass || this.twoPass && (this.isPass2 == isAlphaTranslucent)); +}, "~B"); +Clazz_overrideMethod(c$, "beginRendering", +function(rotationMatrix, translucentMode, isImageWrite, renderLow){ +if (this.currentlyRendering) this.endRendering(); +this.renderLow = renderLow; +if (this.windowWidth != this.newWindowWidth || this.windowHeight != this.newWindowHeight || this.newAntialiasing != this.isFullSceneAntialiasingEnabled) { +this.windowWidth = this.newWindowWidth; +this.windowHeight = this.newWindowHeight; +this.isFullSceneAntialiasingEnabled = this.newAntialiasing; +this.releaseBuffers(); +}this.setRotationMatrix(rotationMatrix); +(this.line3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +if (this.triangle3d != null) (this.triangle3d).isOrthographic = !this.vwr.tm.perspectiveDepth; +this.antialiasEnabled = this.antialiasThisFrame = this.newAntialiasing; +this.currentlyRendering = true; +if (this.strings != null) for (var i = Math.min(this.strings.length, this.stringCount); --i >= 0; ) this.strings[i] = null; + +this.stringCount = 0; +this.twoPass = true; +this.isPass2 = false; +this.pass2Flag01 = 0; +this.colixCurrent = 0; +this.$haveTranslucentObjects = this.wasScreened = false; +this.pixel = this.pixel0; +this.pixel.bgcolor = this.bgcolor; +this.contrastColix = JU.C.getBgContrast(this.bgcolor); +this.translucentCoverOnly = !translucentMode; +if (this.pbuf == null) { +this.platform.allocateBuffers(this.windowWidth, this.windowHeight, this.antialiasThisFrame, isImageWrite); +this.pbuf = this.platform.pBuffer; +this.zbuf = this.platform.zBuffer; +this.aobuf = null; +this.pixel0.setBuf(); +if (this.pixelT0 != null) this.pixelT0.setBuf(); +if (this.pixelShaded != null) this.pixelShaded.setBuf(); +}this.setWidthHeight(this.antialiasThisFrame); +if (this.pixelScreened != null) this.pixelScreened.width = this.width; +this.platform.clearBuffer(); +if (this.backgroundImage != null) this.plotImage(-2147483648, 0, -2147483648, this.backgroundImage, null, 0, 0, 0); +this.textY = 0; +}, "JU.M3,~B,~B,~B"); +Clazz_overrideMethod(c$, "setBackgroundTransparent", +function(TF){ +if (this.platform != null) this.platform.setBackgroundTransparent(TF); +}, "~B"); +Clazz_defineMethod(c$, "releaseBuffers", +function(){ +this.pbuf = null; +this.zbuf = null; +this.pbufT = null; +this.zbufT = null; +this.aobuf = null; +this.platform.releaseBuffers(); +this.line3d.clearLineCache(); +}); +Clazz_overrideMethod(c$, "setPass2", +function(antialiasTranslucent){ +if (!this.$haveTranslucentObjects || !this.currentlyRendering) return false; +this.isPass2 = true; +this.pass2Flag01 = 1; +this.colixCurrent = 0; +if (this.pbufT == null || this.antialias2 != antialiasTranslucent) { +this.platform.allocateTBuffers(antialiasTranslucent); +this.pbufT = this.platform.pBufferT; +this.zbufT = this.platform.zBufferT; +}this.antialias2 = antialiasTranslucent; +if (this.antialiasThisFrame && !this.antialias2) this.downsampleFullSceneAntialiasing(true); +this.platform.clearTBuffer(); +if (this.pixelT0 == null) this.pixelT0 = new J.g3d.PixelatorT(this); +if (this.pixel.p0 == null) this.pixel = this.pixelT0; + else this.pixel.p0 = this.pixelT0; +return true; +}, "~B"); +Clazz_overrideMethod(c$, "endRendering", +function(){ +if (!this.currentlyRendering) return; +if (this.pbuf != null) { +if (this.isPass2 && this.pbufT != null) for (var offset = this.pbufT.length; --offset >= 0; ) this.pbuf[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pbuf[offset], this.pbufT[offset], this.bgcolor); + +if (this.pixel === this.pixelShaded && this.pixelShaded.zShadePower == 0) this.pixelShaded.showZBuffer(); +if (this.antialiasThisFrame) this.downsampleFullSceneAntialiasing(false); +}this.platform.setBackgroundColor(this.bgcolor); +this.platform.notifyEndOfRendering(); +this.currentlyRendering = this.isPass2 = false; +}); +c$.mergeBufferPixel = Clazz_defineMethod(c$, "mergeBufferPixel", +function(argbA, argbB, bgcolor){ +if (argbB == 0 || argbA == argbB) return argbA; +if (argbA == 0) argbA = bgcolor; +var rbA = (argbA & 0x00FF00FF); +var gA = (argbA & 0x0000FF00); +var rbB = (argbB & 0x00FF00FF); +var gB = (argbB & 0x0000FF00); +var logAlpha = (argbB >> 24) & 0xF; +switch (logAlpha) { +case 0: +rbA = rbB; +gA = gB; +break; +case 1: +rbA = (((rbB << 2) + (rbB << 1) + rbB + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 2) + +(gB << 1) + gB + gA) >> 3) & 0x0000FF00; +break; +case 2: +rbA = (((rbB << 1) + rbB + rbA) >> 2) & 0x00FF00FF; +gA = (((gB << 1) + gB + gA) >> 2) & 0x0000FF00; +break; +case 3: +rbA = (((rbB << 2) + rbB + (rbA << 1) + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 2) + gB + (gA << 1) + gA) >> 3) & 0x0000FF00; +break; +case 4: +rbA = ((rbA + rbB) >> 1) & 0x00FF00FF; +gA = ((gA + gB) >> 1) & 0x0000FF00; +break; +case 5: +rbA = (((rbB << 1) + rbB + (rbA << 2) + rbA) >> 3) & 0x00FF00FF; +gA = (((gB << 1) + gB + (gA << 2) + gA) >> 3) & 0x0000FF00; +break; +case 6: +rbA = (((rbA << 1) + rbA + rbB) >> 2) & 0x00FF00FF; +gA = (((gA << 1) + gA + gB) >> 2) & 0x0000FF00; +break; +case 7: +rbA = (((rbA << 2) + (rbA << 1) + rbA + rbB) >> 3) & 0x00FF00FF; +gA = (((gA << 2) + (gA << 1) + gA + gB) >> 3) & 0x0000FF00; +break; +} +return 0xFF000000 | rbA | gA; +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "getScreenImage", +function(isImageWrite){ +{ +var obj = this.platform.bufferedImage; if (isImageWrite) { +this.releaseBuffers(); } return obj; +}}, "~B"); +Clazz_overrideMethod(c$, "applyAnaglygh", +function(stereoMode, stereoColors){ +switch (stereoMode) { +case J.c.STER.REDCYAN: +for (var i = this.anaglyphLength; --i >= 0; ) { +var blue = this.anaglyphChannelBytes[i] & 0x000000FF; +var cyan = (blue << 8) | blue; +this.pbuf[i] = this.pbuf[i] & 0xFFFF0000 | cyan; +} +break; +case J.c.STER.CUSTOM: +var color1 = stereoColors[0]; +var color2 = stereoColors[1] & 0x00FFFFFF; +for (var i = this.anaglyphLength; --i >= 0; ) { +var a = this.anaglyphChannelBytes[i] & 0x000000FF; +a = (a | ((a | (a << 8)) << 8)) & color2; +this.pbuf[i] = (this.pbuf[i] & color1) | a; +} +break; +case J.c.STER.REDBLUE: +for (var i = this.anaglyphLength; --i >= 0; ) { +var blue = this.anaglyphChannelBytes[i] & 0x000000FF; +this.pbuf[i] = (this.pbuf[i] & 0xFFFF0000) | blue; +} +break; +case J.c.STER.REDGREEN: +for (var i = this.anaglyphLength; --i >= 0; ) { +var green = (this.anaglyphChannelBytes[i] & 0x000000FF) << 8; +this.pbuf[i] = (this.pbuf[i] & 0xFFFF0000) | green; +} +break; +case J.c.STER.DTI: +case J.c.STER.DOUBLE: +case J.c.STER.NONE: +break; +} +}, "J.c.STER,~A"); +Clazz_overrideMethod(c$, "snapshotAnaglyphChannelBytes", +function(){ +if (this.currentlyRendering) throw new NullPointerException(); +this.anaglyphLength = this.windowWidth * this.windowHeight; +if (this.anaglyphChannelBytes == null || this.anaglyphChannelBytes.length != this.anaglyphLength) this.anaglyphChannelBytes = Clazz_newByteArray (this.anaglyphLength, 0); +for (var i = this.anaglyphLength; --i >= 0; ) this.anaglyphChannelBytes[i] = this.pbuf[i]; + +}); +Clazz_overrideMethod(c$, "releaseScreenImage", +function(){ +this.platform.clearScreenBufferThreaded(); +}); +Clazz_overrideMethod(c$, "haveTranslucentObjects", +function(){ +return this.$haveTranslucentObjects; +}); +Clazz_overrideMethod(c$, "setSlabAndZShade", +function(slabValue, depthValue, zSlab, zDepth, zShadePower){ +this.setSlab(slabValue); +this.setDepth(depthValue); +if (zSlab < zDepth) { +if (this.pixelShaded == null) this.pixelShaded = new J.g3d.PixelatorShaded(this); +this.pixel = this.pixelShaded.set(zSlab, zDepth, zShadePower); +} else { +this.pixel = this.pixel0; +}}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "downsampleFullSceneAntialiasing", +function(downsampleZBuffer){ +var bgcheck = this.bgcolor; +if (downsampleZBuffer) bgcheck += ((bgcheck & 0xFF) == 0xFF ? -1 : 1); +J.g3d.Graphics3D.downsample2d(this.pbuf, this.windowWidth, this.windowHeight, bgcheck); +if (downsampleZBuffer) { +J.g3d.Graphics3D.downsample2dZ(this.pbuf, this.zbuf, this.windowWidth, this.windowHeight, bgcheck); +this.antialiasThisFrame = false; +this.setWidthHeight(false); +}}, "~B"); +c$.downsample2d = Clazz_defineMethod(c$, "downsample2d", +function(pbuf, width, height, bgcheck){ +var width4 = width << 1; +if (bgcheck != 0) { +bgcheck &= 0xFFFFFF; +for (var i = pbuf.length; --i >= 0; ) if (pbuf[i] == 0) pbuf[i] = bgcheck; + +}var bg0 = ((bgcheck >> 2) & 0x3F3F3F3F) << 2; +bg0 += (bg0 & 0xC0C0C0C0) >> 6; +var offset1 = 0; +var offset4 = 0; +for (var i = height; --i >= 0; offset4 += width4) for (var j = width; --j >= 0; ++offset1) { +var argb = ((pbuf[offset4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4++ + width4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4] >> 2) & 0x3F3F3F3F) + ((pbuf[offset4++ + width4] >> 2) & 0x3F3F3F3F); +argb += (argb & 0xC0C0C0C0) >> 6; +if (argb == bg0) argb = bgcheck; +{ +pbuf[offset1] = argb & 0x00FFFFFF | 0xFF000000; +}} + +}, "~A,~N,~N,~N"); +c$.downsample2dZ = Clazz_defineMethod(c$, "downsample2dZ", +function(pbuf, zbuf, width, height, bgcheck){ +var width4 = width << 1; +var offset1 = 0; +var offset4 = 0; +for (var i = height; --i >= 0; offset4 += width4) for (var j = width; --j >= 0; ++offset1, ++offset4) { +var z = Math.min(zbuf[offset4], zbuf[offset4 + width4]); +z = Math.min(z, zbuf[++offset4]); +z = Math.min(z, zbuf[offset4 + width4]); +if (z != 2147483647) z >>= 1; +zbuf[offset1] = (pbuf[offset1] == bgcheck ? 2147483647 : z); +} + +}, "~A,~A,~N,~N,~N"); +Clazz_defineMethod(c$, "hasContent", +function(){ +return this.platform.hasContent(); +}); +Clazz_overrideMethod(c$, "setC", +function(colix){ +var isLast = JU.C.isColixLastAvailable(colix); +if (!isLast && colix == this.colixCurrent && this.currentShadeIndex == -1) return true; +var mask = colix & 30720; +if (mask == 16384) return false; +if (this.renderLow) mask = 0; +var isTranslucent = (mask != 0); +var isScreened = (isTranslucent && mask == 30720); +this.setScreened(isScreened); +if (!this.checkTranslucent(isTranslucent && !isScreened)) return false; +if (this.isPass2) { +this.translucencyMask = (mask << 13) | 0xFFFFFF; +this.translucencyLog = mask >> 11; +} else { +this.translucencyLog = 0; +}this.colixCurrent = colix; +if (isLast) { +if (this.argbCurrent != this.lastRawColor) { +if (this.argbCurrent == 0) this.argbCurrent = 0xFFFFFFFF; +this.lastRawColor = this.argbCurrent; +this.shader.setLastColix(this.argbCurrent, this.inGreyscaleMode); +}}this.shadesCurrent = this.getShades(colix); +this.currentShadeIndex = -1; +this.setColor(this.getColorArgbOrGray(colix)); +return true; +}, "~N"); +Clazz_defineMethod(c$, "setScreened", +function(isScreened){ +if (this.wasScreened != isScreened) { +this.wasScreened = isScreened; +if (isScreened) { +if (this.pixelScreened == null) this.pixelScreened = new J.g3d.PixelatorScreened(this, this.pixel0); +if (this.pixel.p0 == null) this.pixel = this.pixelScreened; + else this.pixel.p0 = this.pixelScreened; +} else if (this.pixel.p0 == null || this.pixel === this.pixelScreened) { +this.pixel = (this.isPass2 ? this.pixelT0 : this.pixel0); +} else { +this.pixel.p0 = (this.isPass2 ? this.pixelT0 : this.pixel0); +}}return this.pixel; +}, "~B"); +Clazz_overrideMethod(c$, "drawFilledCircle", +function(colixRing, colixFill, diameter, x, y, z){ +if (this.isClippedZ(z)) return; +var r = Clazz_doubleToInt((diameter + 1) / 2); +var isClipped = x < r || x + r >= this.width || y < r || y + r >= this.height; +if (isClipped && this.isClippedXY(diameter, x, y)) return; +if (colixRing != 0 && this.setC(colixRing)) { +if (isClipped) { +if (!this.isClippedXY(diameter, x, y)) (this.circle3d).plotCircleCenteredClipped(x, y, z, diameter); +} else { +(this.circle3d).plotCircleCenteredUnclipped(x, y, z, diameter); +}}if (colixFill != 0 && this.setC(colixFill)) { +if (isClipped) (this.circle3d).plotFilledCircleCenteredClipped(x, y, z, diameter); + else (this.circle3d).plotFilledCircleCenteredUnclipped(x, y, z, diameter); +}}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "volumeRender4", +function(diameter, x, y, z){ +if (diameter == 1) { +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +}if (this.isClippedZ(z)) return; +var r = Clazz_doubleToInt((diameter + 1) / 2); +var isClipped = x < r || x + r >= this.width || y < r || y + r >= this.height; +if (isClipped && this.isClippedXY(diameter, x, y)) return; +if (isClipped) (this.circle3d).plotFilledCircleCenteredClipped(x, y, z, diameter); + else (this.circle3d).plotFilledCircleCenteredUnclipped(x, y, z, diameter); +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillSphereXYZ", +function(diameter, x, y, z){ +switch (diameter) { +case 1: +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +case 0: +return; +} +if (diameter <= (this.antialiasThisFrame ? 2000 : 1000)) this.sphere3d.render(this.shadesCurrent, diameter, x, y, z, null, null, null, -1, null); +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "volumeRender", +function(TF){ +if (TF) { +this.saveAmbient = this.getAmbientPercent(); +this.saveDiffuse = this.getDiffusePercent(); +this.setAmbientPercent(100); +this.setDiffusePercent(0); +this.addRenderer(1073741880); +} else { +this.setAmbientPercent(this.saveAmbient); +this.setDiffusePercent(this.saveDiffuse); +}}, "~B"); +Clazz_overrideMethod(c$, "fillSphereI", +function(diameter, center){ +this.fillSphereXYZ(diameter, center.x, center.y, center.z); +}, "~N,JU.P3i"); +Clazz_overrideMethod(c$, "fillSphereBits", +function(diameter, center){ +this.fillSphereXYZ(diameter, Math.round(center.x), Math.round(center.y), Math.round(center.z)); +}, "~N,JU.P3"); +Clazz_overrideMethod(c$, "fillEllipsoid", +function(center, points, x, y, z, diameter, mToEllipsoidal, coef, mDeriv, selectedOctant, octantPoints){ +switch (diameter) { +case 1: +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +return; +case 0: +return; +} +if (diameter <= (this.antialiasThisFrame ? 2000 : 1000)) this.sphere3d.render(this.shadesCurrent, diameter, x, y, z, mToEllipsoidal, coef, mDeriv, selectedOctant, octantPoints); +}, "JU.P3,~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A"); +Clazz_overrideMethod(c$, "drawRect", +function(x, y, z, zSlab, rWidth, rHeight){ +if (zSlab != 0 && this.isClippedZ(zSlab)) return; +var w = rWidth - 1; +var h = rHeight - 1; +var xRight = x + w; +var yBottom = y + h; +if (y >= 0 && y < this.height) this.drawHLine(x, y, z, w); +if (yBottom >= 0 && yBottom < this.height) this.drawHLine(x, yBottom, z, w); +if (x >= 0 && x < this.width) this.drawVLine(x, y, z, h); +if (xRight >= 0 && xRight < this.width) this.drawVLine(xRight, y, z, h); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawHLine", +function(x, y, z, w){ +if (w < 0) { +x += w; +w = -w; +}if (x < 0) { +w += x; +x = 0; +}if (x + w >= this.width) w = this.width - 1 - x; +var p = this.pixel; +var c = this.argbCurrent; +var offset = x + this.width * y; +for (var i = 0; i <= w; i++) { +if (z < this.zbuf[offset]) p.addPixel(offset, z, c); +offset++; +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawVLine", +function(x, y, z, h){ +if (h < 0) { +y += h; +h = -h; +}if (y < 0) { +h += y; +y = 0; +}if (y + h >= this.height) { +h = this.height - 1 - y; +}var offset = x + this.width * y; +var p = this.pixel; +var c = this.argbCurrent; +for (var i = 0; i <= h; i++) { +if (z < this.zbuf[offset]) p.addPixel(offset, z, c); +offset += this.width; +} +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillTextRect", +function(x, y, z, zSlab, widthFill, heightFill){ +if (this.isClippedZ(zSlab)) return; +var w = this.width; +if (x < 0) { +widthFill += x; +if (widthFill <= 0) return; +x = 0; +}if (x + widthFill > w) { +widthFill = w - x; +if (widthFill <= 0) return; +}if (y < 0) { +heightFill += y; +if (heightFill <= 0) return; +y = 0; +}if (y + heightFill > this.height) heightFill = this.height - y; +var c = this.argbCurrent; +if (this.isAntialiased()) c = J.g3d.Graphics3D.fixTextImageRGB(c); +var zb = this.zbuf; +var p = this.pixel; +while (--heightFill >= 0) this.plotPixelsUnclippedCount(c, widthFill, x, y++, z, w, zb, p); + +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawString", +function(str, font3d, xBaseline, yBaseline, z, zSlab, bgColix){ +this.currentShadeIndex = 0; +if (str == null) return; +if (this.isClippedZ(zSlab)) return; +this.drawStringNoSlab(str, font3d, xBaseline, yBaseline, z, bgColix); +}, "~S,JU.Font,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawStringNoSlab", +function(str, font3d, xBaseline, yBaseline, z, bgColix){ +if (str == null) return; +if (this.strings == null) this.strings = new Array(10); +if (this.stringCount == this.strings.length) this.strings = JU.AU.doubleLength(this.strings); +var t = new J.g3d.TextString(); +t.setText(str, font3d == null ? this.currentFont : (this.currentFont = font3d), this.argbCurrent, JU.C.isColixTranslucent(bgColix) ? (this.getColorArgbOrGray(bgColix) & 0xFFFFFF) | ((bgColix & 30720) << 13) : 0, xBaseline, yBaseline, z); +this.strings[this.stringCount++] = t; +}, "~S,JU.Font,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "renderAllStrings", +function(jmolRenderer){ +if (this.strings == null) return; +if (this.stringCount >= 2) { +if (J.g3d.Graphics3D.sort == null) J.g3d.Graphics3D.sort = new J.g3d.TextString(); +java.util.Arrays.sort(this.strings, J.g3d.Graphics3D.sort); +}for (var i = 0; i < this.stringCount; i++) { +var ts = this.strings[i]; +this.plotText(ts.x, ts.y, ts.z, ts.argb, ts.bgargb, ts.text, ts.font, jmolRenderer); +} +this.strings = null; +this.stringCount = 0; +}, "~O"); +Clazz_overrideMethod(c$, "plotText", +function(x, y, z, argb, bgargb, text, font3d, jmolRenderer){ +J.g3d.TextRenderer.plot(x, y, z, argb, bgargb, text, font3d, this, jmolRenderer, this.antialiasThisFrame); +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.api.JmolRendererInterface"); +Clazz_overrideMethod(c$, "drawImage", +function(objImage, x, y, z, zSlab, bgcolix, width, height){ +if (objImage != null && width > 0 && height > 0 && !this.isClippedZ(zSlab)) this.plotImage(x, y, z, objImage, null, bgcolix, width, height); +}, "~O,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "plotImage", +function(x, y, z, image, jmolRenderer, bgcolix, imageWidth, imageHeight){ +this.setC(bgcolix); +if (!this.isPass2) this.translucencyMask = -1; +if (bgcolix == 0) this.argbCurrent = 0; +var isBackground = (x == -2147483648); +var bg = (isBackground ? this.bgcolor : this.argbCurrent); +if (isBackground) { +x = 0; +z = 2147483646; +imageWidth = this.width; +imageHeight = this.height; +}if (x + imageWidth <= 0 || x >= this.width || y + imageHeight <= 0 || y >= this.height) return; +var g; +{ +g = null; +}var buffer = this.apiPlatform.drawImageToBuffer(g, this.platform.offscreenImage, image, imageWidth, imageHeight, isBackground ? bg : 0); +if (buffer == null) return; +var zb = this.zbuf; +var w = this.width; +var p = this.pixel; +var h = this.height; +var t = this.translucencyLog; +if (jmolRenderer == null && (x >= 0 && x + imageWidth <= w && y >= 0 && y + imageHeight <= h)) { +for (var i = 0, offset = 0, pbufOffset = y * w + x; i < imageHeight; i++, pbufOffset += (w - imageWidth)) { +for (var j = 0; j < imageWidth; j++, offset++, pbufOffset++) { +if (z < zb[pbufOffset]) { +var b = buffer[offset]; +if ((b & 0xFF000000) == (-16777216)) p.addPixel(pbufOffset, z, b); +}} +} +} else { +if (jmolRenderer == null) jmolRenderer = this; +for (var i = 0, offset = 0; i < imageHeight; i++) for (var j = 0; j < imageWidth; j++) { +var b = buffer[offset++]; +if ((b & 0xFF000000) == (-16777216)) jmolRenderer.plotImagePixel(b, x + j, y + i, z, 8, bg, w, h, zb, p, t); +} + +}}, "~N,~N,~N,~O,J.api.JmolRendererInterface,~N,~N,~N"); +Clazz_overrideMethod(c$, "setFont", +function(font3d){ +this.currentFont = font3d; +}, "JU.Font"); +Clazz_overrideMethod(c$, "drawPixel", +function(x, y, z){ +this.plotPixelClippedArgb(this.argbCurrent, x, y, z, this.width, this.zbuf, this.pixel); +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "drawPoints", +function(count, coordinates, scale){ +if (scale > 1) { +var s2 = scale * scale * 0.8; +for (var i = -scale; i < scale; i++) { +for (var j = -scale; j < scale; j++) { +if (i * i + j * j > s2) continue; +this.plotPoints(count, coordinates, i, j); +this.plotPoints(count, coordinates, i, j); +} +} +} else { +this.plotPoints(count, coordinates, 0, 0); +}}, "~N,~A,~N"); +Clazz_overrideMethod(c$, "drawDashedLineBits", +function(run, rise, pointA, pointB){ +if (this.isAntialiased()) { +run += run; +rise += rise; +}this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.drawLineABBits(run, rise, true); +}, "~N,~N,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "drawLineABBits", +function(run, rise, andClip){ +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +if (Math.abs(this.sA.x - this.sB.x) < Math.abs(this.sA.y - this.sB.y)) { +this.sA.x += 1; +this.sB.x += 1; +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +} else { +this.sA.y += 1; +this.sB.y += 1; +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, run, rise, andClip); +}}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setScreeni", +function(pt, p){ +p.x = Math.round(pt.x); +p.y = Math.round(pt.y); +p.z = Math.round(pt.z); +}, "JU.P3,JU.P3i"); +Clazz_overrideMethod(c$, "drawLineXYZ", +function(x1, y1, z1, x2, y2, z2){ +this.line3d.plotLineOld(this.argbCurrent, this.argbCurrent, x1, y1, z1, x2, y2, z2); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawLine", +function(colixA, colixB, x1, y1, z1, x2, y2, z2){ +if (!this.setC(colixA)) colixA = 0; +var argbA = this.argbCurrent; +if (!this.setC(colixB)) colixB = 0; +if (colixA != 0 || colixB != 0) this.line3d.plotLineOld(argbA, this.argbCurrent, x1, y1, z1, x2, y2, z2); +}, "~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawLineBits", +function(colixA, colixB, pointA, pointB){ +if (!this.setC(colixA)) colixA = 0; +var argbA = this.argbCurrent; +if (!this.setC(colixB)) colixB = 0; +if (colixA != 0 || colixB != 0) { +this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.line3d.plotLineBits(argbA, this.argbCurrent, this.sA, this.sB, 0, 0, false); +}}, "~N,~N,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "drawLinePixels", +function(a, b, z, zslab){ +this.sA.setT(a); +this.sB.setT(b); +this.sA.z = this.sB.z = z; +var slab0 = this.slab; +if (zslab == -2147483648) this.slab = 0; +this.drawLineABBits(0, 0, false); +this.slab = slab0; +}, "JU.P3i,JU.P3i,~N,~N"); +Clazz_overrideMethod(c$, "drawLineAB", +function(pointA, pointB){ +this.setScreeni(pointA, this.sA); +this.setScreeni(pointB, this.sB); +this.line3d.plotLineBits(this.argbCurrent, this.argbCurrent, this.sA, this.sB, 0, 0, false); +}, "JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "fillCylinderXYZ", +function(colixA, colixB, endcaps, diameter, xA, yA, zA, xB, yB, zB){ +if (diameter > this.ht3) return; +var screen = 0; +this.currentShadeIndex = 0; +if (!this.setC(colixB)) colixB = 0; +if (this.wasScreened) screen = 2; +if (!this.setC(colixA)) colixA = 0; +if (this.wasScreened) screen += 1; +if (colixA == 0 && colixB == 0) return; +this.cylinder3d.renderOld(colixA, colixB, screen, endcaps, diameter, xA, yA, zA, xB, yB, zB); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillCylinderScreen3I", +function(endcaps, diameter, screenA, screenB, pt0f, pt1f, radius){ +if (diameter <= this.ht3) this.cylinder3d.renderOld(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, Clazz_floatToInt(screenA.x), Clazz_floatToInt(screenA.y), Clazz_floatToInt(screenA.z), Clazz_floatToInt(screenB.x), Clazz_floatToInt(screenB.y), Clazz_floatToInt(screenB.z)); +}, "~N,~N,JU.P3,JU.P3,JU.P3,JU.P3,~N"); +Clazz_overrideMethod(c$, "fillCylinder", +function(endcaps, diameter, screenA, screenB){ +if (diameter <= this.ht3) this.cylinder3d.renderOld(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z); +}, "~N,~N,JU.P3i,JU.P3i"); +Clazz_overrideMethod(c$, "fillCylinderBits", +function(endcaps, diameter, screenA, screenB){ +if (diameter <= this.ht3 && screenA.z != 1 && screenB.z != 1) { +if (diameter == 0 || diameter == 1) { +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.line3d.plotLineBits(this.getColorArgbOrGray(this.colixCurrent), this.getColorArgbOrGray(this.colixCurrent), this.sA, this.sB, 0, 0, false); +return; +}this.cylinder3d.renderBitsFloat(this.colixCurrent, this.colixCurrent, 0, endcaps, diameter, screenA, screenB); +}}, "~N,~N,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "fillCylinderBits2", +function(colixA, colixB, endcaps, diameter, screenA, screenB){ +if (diameter > this.ht3) return; +var screen = 0; +this.currentShadeIndex = 0; +if (!this.setC(colixB)) colixB = 0; +if (this.wasScreened) screen = 2; +if (!this.setC(colixA)) colixA = 0; +if (this.wasScreened) screen += 1; +if (colixA == 0 && colixB == 0) return; +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.cylinder3d.renderBits(colixA, colixB, screen, endcaps, diameter, this.sA, this.sB); +}, "~N,~N,~N,~N,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "fillConeScreen3f", +function(endcap, screenDiameter, screenBase, screenTip, isBarb){ +if (screenDiameter <= this.ht3) this.cylinder3d.renderConeOld(this.colixCurrent, endcap, screenDiameter, screenBase.x, screenBase.y, screenBase.z, screenTip.x, screenTip.y, screenTip.z, true, isBarb); +}, "~N,~N,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "drawHermite4", +function(tension, s0, s1, s2, s3){ +(this.hermite3d).renderHermiteRope(false, tension, 0, 0, 0, s0, s1, s2, s3); +}, "~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "drawHermite7", +function(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, colixBack){ +if (colixBack == 0) { +(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, 0); +return; +}(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, 1); +var colix = this.colixCurrent; +this.setC(colixBack); +(this.hermite3d).renderHermiteRibbon(fill, border, tension, s0, s1, s2, s3, s4, s5, s6, s7, aspectRatio, -1); +this.setC(colix); +}, "~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N"); +Clazz_overrideMethod(c$, "fillHermite", +function(tension, diameterBeg, diameterMid, diameterEnd, s0, s1, s2, s3){ +(this.hermite3d).renderHermiteRope(true, tension, diameterBeg, diameterMid, diameterEnd, s0, s1, s2, s3); +}, "~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz_overrideMethod(c$, "drawTriangle3C", +function(screenA, colixA, screenB, colixB, screenC, colixC, check){ +if ((check & 1) == 1) this.drawLine(colixA, colixB, screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z); +if ((check & 2) == 2) this.drawLine(colixB, colixC, screenB.x, screenB.y, screenB.z, screenC.x, screenC.y, screenC.z); +if ((check & 4) == 4) this.drawLine(colixA, colixC, screenA.x, screenA.y, screenA.z, screenC.x, screenC.y, screenC.z); +}, "JU.P3i,~N,JU.P3i,~N,JU.P3i,~N,~N"); +Clazz_overrideMethod(c$, "fillTriangleTwoSided", +function(normix, screenA, screenB, screenC){ +this.setColorNoisy(this.getShadeIndex(normix)); +this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "~N,JU.P3,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "fillTriangleP3f", +function(screenA, screenB, screenC, useGouraud){ +this.setScreeni(screenA, this.sA); +this.setScreeni(screenB, this.sB); +this.setScreeni(screenC, this.sC); +(this.triangle3d).fillTriangle(this.sA, this.sB, this.sC, useGouraud); +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "fillTriangle3f", +function(screenA, screenB, screenC, isSolid){ +var i = this.getShadeIndexP3(screenA, screenB, screenC, isSolid); +if (i < 0) return; +if (isSolid) this.setColorNoisy(i); + else this.setColor(this.shadesCurrent[i]); +this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "fillTriangle3i", +function(screenA, screenB, screenC, ptA, ptB, ptC, doShade){ +if (doShade) { +var v = this.vectorAB; +v.set(screenB.x - screenA.x, screenB.y - screenA.y, screenB.z - screenA.z); +var shadeIndex; +if (screenC == null) { +shadeIndex = this.shader.getShadeIndex(-v.x, -v.y, v.z); +} else { +this.vectorAC.set(screenC.x - screenA.x, screenC.y - screenA.y, screenC.z - screenA.z); +v.cross(v, this.vectorAC); +shadeIndex = v.z >= 0 ? this.shader.getShadeIndex(-v.x, -v.y, v.z) : this.shader.getShadeIndex(v.x, v.y, -v.z); +}if (shadeIndex > 56) shadeIndex = 56; +this.setColorNoisy(shadeIndex); +}this.fillTriangleP3f(screenA, screenB, screenC, false); +}, "JU.P3,JU.P3,JU.P3,JU.T3,JU.T3,JU.T3,~B"); +Clazz_overrideMethod(c$, "fillTriangle3CN", +function(screenA, colixA, normixA, screenB, colixB, normixB, screenC, colixC, normixC){ +(this.triangle3d).fillTriangle(screenA, screenB, screenC, this.checkGouraud(colixA, colixB, colixC, normixA, normixB, normixC)); +}, "JU.P3i,~N,~N,JU.P3i,~N,~N,JU.P3i,~N,~N"); +Clazz_overrideMethod(c$, "fillTriangle3CNBits", +function(screenA, colixA, normixA, screenB, colixB, normixB, screenC, colixC, normixC, twoSided){ +this.fillTriangleP3f(screenA, screenB, screenC, this.checkGouraud(colixA, colixB, colixC, normixA, normixB, normixC)); +}, "JU.P3,~N,~N,JU.P3,~N,~N,JU.P3,~N,~N,~B"); +Clazz_defineMethod(c$, "checkGouraud", +function(colixA, colixB, colixC, normixA, normixB, normixC){ +if (!this.isPass2 && normixA == normixB && normixA == normixC && colixA == colixB && colixA == colixC) { +var shadeIndex = this.getShadeIndex(normixA); +if (colixA != this.colixCurrent || this.currentShadeIndex != shadeIndex) { +this.currentShadeIndex = -1; +this.setC(colixA); +this.setColorNoisy(shadeIndex); +}return false; +}this.setTriangleTranslucency(colixA, colixB, colixC); +(this.triangle3d).setGouraud(this.getShades(colixA)[this.getShadeIndex(normixA)], this.getShades(colixB)[this.getShadeIndex(normixB)], this.getShades(colixC)[this.getShadeIndex(normixC)]); +return true; +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeIndex", +function(normix){ +return (normix == -10000 || normix == 9999 ? J.g3d.Graphics3D.nullShadeIndex : normix < 0 ? this.shadeIndexes2Sided[~normix] : this.shadeIndexes[normix]); +}, "~N"); +Clazz_defineMethod(c$, "setTriangleTranslucency", +function(colixA, colixB, colixC){ +if (this.isPass2) { +var maskA = colixA & 30720; +var maskB = colixB & 30720; +var maskC = colixC & 30720; +maskA &= -16385; +maskB &= -16385; +maskC &= -16385; +var mask = JU.GData.roundInt(Clazz_doubleToInt((maskA + maskB + maskC) / 3)) & 30720; +this.translucencyMask = (mask << 13) | 0xFFFFFF; +}}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "fillQuadrilateral", +function(screenA, screenB, screenC, screenD, isSolid){ +var i = this.getShadeIndexP3(screenA, screenB, screenC, isSolid); +if (i < 0) return; +this.setColorNoisy(i); +this.fillTriangleP3f(screenA, screenB, screenC, false); +this.fillTriangleP3f(screenA, screenC, screenD, false); +}, "JU.P3,JU.P3,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "drawSurface", +function(meshSurface, colix){ +}, "JU.MeshSurface,~N"); +Clazz_overrideMethod(c$, "plotPixelClippedP3i", +function(screen){ +this.plotPixelClippedArgb(this.argbCurrent, screen.x, screen.y, screen.z, this.width, this.zbuf, this.pixel); +}, "JU.P3i"); +Clazz_defineMethod(c$, "plotPixelClippedArgb", +function(argb, x, y, z, width, zbuf, p){ +if (this.isClipped3(x, y, z)) return; +var offset = y * width + x; +if (z < zbuf[offset]) p.addPixel(offset, z, argb); +}, "~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz_defineMethod(c$, "plotPixelUnclipped", +function(argb, x, y, z, width, zbuf, p){ +var offset = y * width + x; +if (z < zbuf[offset]) p.addPixel(offset, z, argb); +}, "~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz_defineMethod(c$, "plotImagePixel", +function(argb, x, y, z, shade, bgargb, width, height, zbuf, p, transpLog){ +if (x < 0 || x >= width || y < 0 || y >= height) return; +(p).addImagePixel(shade, transpLog, y * width + x, z, argb, bgargb); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~A,~O,~N"); +Clazz_defineMethod(c$, "plotPixelsClippedRaster", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right){ +var depth; +var slab; +if (count <= 0 || y < 0 || y >= this.height || x >= this.width || (zAtLeft < (slab = this.slab) && zPastRight < slab) || (zAtLeft > (depth = this.depth) && zPastRight > depth)) return; +var zb = this.zbuf; +var seed = (x << 16) + (y << 1) ^ 0x33333333; +var zScaled = (zAtLeft << 10) + (512); +var dz = zPastRight - zAtLeft; +var roundFactor = Clazz_doubleToInt(count / 2); +var zIncrementScaled = JU.GData.roundInt(Clazz_doubleToInt(((dz << 10) + (dz >= 0 ? roundFactor : -roundFactor)) / count)); +if (x < 0) { +x = -x; +zScaled += zIncrementScaled * x; +count -= x; +if (count <= 0) return; +x = 0; +}if (count + x > this.width) count = this.width - x; +var offsetPbuf = y * this.width + x; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var z = zScaled >> 10; +if (z >= slab && z <= depth && z < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, z, bits == 0 ? adn : (bits == 1 ? aup : ac)); +}++offsetPbuf; +zScaled += zIncrementScaled; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = Clazz_doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count); +var gScaled = rgb16Left.g; +var gIncrement = Clazz_doubleToInt((rgb16Right.g - gScaled) / count); +var bScaled = rgb16Left.b; +var bIncrement = Clazz_doubleToInt((rgb16Right.b - bScaled) / count); +while (--count >= 0) { +var z = zScaled >> 10; +if (z >= slab && z <= depth && z < zb[offsetPbuf]) p.addPixel(offsetPbuf, z, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +zScaled += zIncrementScaled; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16"); +Clazz_defineMethod(c$, "plotPixelsUnclippedRaster", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right){ +if (count <= 0) return; +var seed = ((x << 16) + (y << 1) ^ 0x33333333) & 0x7FFFFFFF; +var zScaled = (zAtLeft << 10) + (512); +var dz = zPastRight - zAtLeft; +var roundFactor = Clazz_doubleToInt(count / 2); +var zIncrementScaled = JU.GData.roundInt(Clazz_doubleToInt(((dz << 10) + (dz >= 0 ? roundFactor : -roundFactor)) / count)); +var offsetPbuf = y * this.width + x; +var zb = this.zbuf; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var z = zScaled >> 10; +if (z < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, z, bits == 0 ? adn : (bits == 1 ? aup : ac)); +}++offsetPbuf; +zScaled += zIncrementScaled; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = JU.GData.roundInt(Clazz_doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count)); +var gScaled = rgb16Left.g; +var gIncrement = JU.GData.roundInt(Clazz_doubleToInt((rgb16Right.g - gScaled) / count)); +var bScaled = rgb16Left.b; +var bIncrement = JU.GData.roundInt(Clazz_doubleToInt((rgb16Right.b - bScaled) / count)); +while (--count >= 0) { +var z = zScaled >> 10; +if (z < zb[offsetPbuf]) p.addPixel(offsetPbuf, z, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +zScaled += zIncrementScaled; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16"); +Clazz_defineMethod(c$, "plotPixelsClippedRasterBits", +function(count, x, y, zAtLeft, zPastRight, rgb16Left, rgb16Right, a, b){ +var depth; +var slab; +if (count <= 0 || y < 0 || y >= this.height || x >= this.width || (zAtLeft < (slab = this.slab) && zPastRight < slab) || (zAtLeft > (depth = this.depth) && zPastRight > depth)) return; +var zb = this.zbuf; +var seed = (x << 16) + (y << 1) ^ 0x33333333; +if (x < 0) { +x = -x; +count -= x; +if (count <= 0) return; +x = 0; +}if (count + x > this.width) count = this.width - x; +var offsetPbuf = y * this.width + x; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent >= slab && zCurrent <= depth && zCurrent < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +p.addPixel(offsetPbuf, zCurrent, bits < 2 ? adn : bits < 6 ? aup : ac); +}++offsetPbuf; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = Clazz_doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count); +var gScaled = rgb16Left.g; +var gIncrement = Clazz_doubleToInt((rgb16Right.g - gScaled) / count); +var bScaled = rgb16Left.b; +var bIncrement = Clazz_doubleToInt((rgb16Right.b - bScaled) / count); +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent >= slab && zCurrent <= depth && zCurrent < zb[offsetPbuf]) p.addPixel(offsetPbuf, zCurrent, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N"); +Clazz_defineMethod(c$, "plotPixelsUnclippedRasterBits", +function(count, x, y, rgb16Left, rgb16Right, a, b){ +if (count <= 0) return; +var seed = ((x << 16) + (y << 1) ^ 0x33333333) & 0x7FFFFFFF; +var offsetPbuf = y * this.width + x; +var zb = this.zbuf; +var p = this.pixel; +if (rgb16Left == null) { +var adn = this.argbNoisyDn; +var aup = this.argbNoisyUp; +var ac = this.argbCurrent; +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent < zb[offsetPbuf]) { +seed = ((seed << 16) + (seed << 1) + seed) & 0x7FFFFFFF; +var bits = (seed >> 16) & 0x07; +var c = (bits == 0 ? adn : bits == 1 ? aup : ac); +p.addPixel(offsetPbuf, zCurrent, c); +}++offsetPbuf; +} +} else { +var rScaled = rgb16Left.r << 8; +var rIncrement = JU.GData.roundInt(Clazz_doubleToInt(((rgb16Right.r - rgb16Left.r) << 8) / count)); +var gScaled = rgb16Left.g; +var gIncrement = JU.GData.roundInt(Clazz_doubleToInt((rgb16Right.g - gScaled) / count)); +var bScaled = rgb16Left.b; +var bIncrement = JU.GData.roundInt(Clazz_doubleToInt((rgb16Right.b - bScaled) / count)); +while (--count >= 0) { +var zCurrent = this.line3d.getZCurrent(a, b, x++); +if (zCurrent < zb[offsetPbuf]) p.addPixel(offsetPbuf, zCurrent, 0xFF000000 | (rScaled & 0xFF0000) | (gScaled & 0xFF00) | ((bScaled >> 8) & 0xFF)); +++offsetPbuf; +rScaled += rIncrement; +gScaled += gIncrement; +bScaled += bIncrement; +} +}}, "~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N"); +Clazz_defineMethod(c$, "plotPixelsUnclippedCount", +function(c, count, x, y, z, width, zbuf, p){ +var offsetPbuf = y * width + x; +while (--count >= 0) { +if (z < zbuf[offsetPbuf]) p.addPixel(offsetPbuf, z, c); +++offsetPbuf; +} +}, "~N,~N,~N,~N,~N,~N,~A,J.g3d.Pixelator"); +Clazz_defineMethod(c$, "plotPoints", +function(count, coordinates, xOffset, yOffset){ +var p = this.pixel; +var c = this.argbCurrent; +var zb = this.zbuf; +var w = this.width; +var antialias = this.antialiasThisFrame; +for (var i = count * 3; i > 0; ) { +var z = coordinates[--i]; +var y = coordinates[--i] + yOffset; +var x = coordinates[--i] + xOffset; +if (this.isClipped3(x, y, z)) continue; +var offset = y * w + x++; +if (z < zb[offset]) p.addPixel(offset, z, c); +if (antialias) { +offset = y * w + x; +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +offset = (++y) * w + x; +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +offset = y * w + (--x); +if (!this.isClipped3(x, y, z) && z < zb[offset]) p.addPixel(offset, z, c); +}} +}, "~N,~A,~N,~N"); +Clazz_defineMethod(c$, "setColorNoisy", +function(shadeIndex){ +this.currentShadeIndex = shadeIndex; +this.argbCurrent = this.shadesCurrent[shadeIndex]; +this.argbNoisyUp = this.shadesCurrent[shadeIndex < 63 ? shadeIndex + 1 : 63]; +this.argbNoisyDn = this.shadesCurrent[shadeIndex > 0 ? shadeIndex - 1 : 0]; +}, "~N"); +Clazz_defineMethod(c$, "getShadeIndexP3", +function(screenA, screenB, screenC, isSolid){ +this.vectorAB.sub2(screenB, screenA); +this.vectorAC.sub2(screenC, screenA); +var v = this.vectorNormal; +v.cross(this.vectorAB, this.vectorAC); +var i = (v.z < 0 ? this.shader.getShadeIndex(v.x, v.y, -v.z) : isSolid ? -1 : this.shader.getShadeIndex(-v.x, -v.y, v.z)); +return i; +}, "JU.P3,JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "renderBackground", +function(jmolRenderer){ +if (this.backgroundImage != null) this.plotImage(-2147483648, 0, -2147483648, this.backgroundImage, jmolRenderer, 0, 0, 0); +}, "J.api.JmolRendererInterface"); +Clazz_overrideMethod(c$, "drawAtom", +function(atom, radius){ +this.fillSphereXYZ(atom.sD, atom.sX, atom.sY, atom.sZ); +}, "JM.Atom,~N"); +Clazz_overrideMethod(c$, "getExportType", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "getExportName", +function(){ +return null; +}); +Clazz_defineMethod(c$, "canDoTriangles", +function(){ +return true; +}); +Clazz_defineMethod(c$, "isCartesianExport", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "initializeExporter", +function(vwr, privateKey, g3d, params){ +return null; +}, "JV.Viewer,~N,JU.GData,java.util.Map"); +Clazz_overrideMethod(c$, "finalizeOutput", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "drawBond", +function(atomA, atomB, colixA, colixB, endcaps, mad, bondOrder){ +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawEllipse", +function(ptAtom, ptX, ptY, fillArc, wireframeOnly){ +return false; +}, "JU.P3,JU.P3,JU.P3,~B,~B"); +Clazz_defineMethod(c$, "getPrivateKey", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "clearFontCache", +function(){ +J.g3d.TextRenderer.clearFontCache(); +}); +Clazz_defineMethod(c$, "setRotationMatrix", +function(rotationMatrix){ +var vertexVectors = JU.Normix.getVertexVectors(); +for (var i = JU.GData.normixCount; --i >= 0; ) { +var tv = this.transformedVectors[i]; +rotationMatrix.rotate2(vertexVectors[i], tv); +this.shadeIndexes[i] = this.shader.getShadeB(tv.x, -tv.y, tv.z); +this.shadeIndexes2Sided[i] = (tv.z >= 0 ? this.shadeIndexes[i] : this.shader.getShadeB(-tv.x, tv.y, -tv.z)); +} +}, "JU.M3"); +Clazz_overrideMethod(c$, "renderCrossHairs", +function(minMax, screenWidth, screenHeight, navOffset, navDepth){ +var antialiased = this.isAntialiased(); +this.setC(navDepth < 0 ? 10 : navDepth > 100 ? 11 : 23); +var x = Math.max(Math.min(this.width, Math.round(navOffset.x)), 0); +var y = Math.max(Math.min(this.height, Math.round(navOffset.y)), 0); +var z = Math.round(navOffset.z) + 1; +var off = (antialiased ? 8 : 4); +var h = (antialiased ? 20 : 10); +var w = (antialiased ? 2 : 1); +this.drawRect(x - off, y, z, 0, h, w); +this.drawRect(x, y - off, z, 0, w, h); +this.drawRect(x - off, y - off, z, 0, h, h); +off = h; +h = h >> 1; +this.setC(minMax[1] < navOffset.x ? 21 : 11); +this.drawRect(x - off, y, z, 0, h, w); +this.setC(minMax[0] > navOffset.x ? 21 : 11); +this.drawRect(x + h, y, z, 0, h, w); +this.setC(minMax[3] < navOffset.y ? 21 : 11); +this.drawRect(x, y - off, z, 0, w, h); +this.setC(minMax[2] > navOffset.y ? 21 : 11); +this.drawRect(x, y + h, z, 0, w, h); +}, "~A,~N,~N,JU.P3,~N"); +Clazz_overrideMethod(c$, "initializeOutput", +function(vwr, privateKey, params){ +return false; +}, "JV.Viewer,~N,java.util.Map"); +c$.fixTextImageRGB = Clazz_defineMethod(c$, "fixTextImageRGB", +function(argb){ +return ((argb & 0xC0C0C0) == 0 ? argb | 0x040404 : argb); +}, "~N"); +c$.sort = null; +c$.nullShadeIndex = 50; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.PrecisionRenderer", "java.util.Hashtable"], "J.g3d.LineRenderer", ["JU.BS"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.shader = null; +this.lineBits = null; +this.slope = 0; +this.lineTypeX = false; +this.nBits = 0; +this.lineCache = null; +this.slopeKey = null; +this.x1t = 0; +this.y1t = 0; +this.z1t = 0; +this.x2t = 0; +this.y2t = 0; +this.z2t = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "LineRenderer", J.g3d.PrecisionRenderer); +Clazz_prepareFields (c$, function(){ +this.lineCache = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(g3d){ +Clazz_superConstructor (this, J.g3d.LineRenderer, []); +this.g3d = g3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "setLineBits", +function(dx, dy){ +this.slope = (dx != 0 ? dy / dx : dy >= 0 ? 3.4028235E38 : -3.4028235E38); +this.lineTypeX = (this.slope <= 1 && this.slope >= -1); +this.nBits = (this.lineTypeX ? this.g3d.width : this.g3d.height); +this.slopeKey = Float.$valueOf(this.slope); +if (this.lineCache.containsKey(this.slopeKey)) { +this.lineBits = this.lineCache.get(this.slopeKey); +return; +}this.lineBits = JU.BS.newN(this.nBits); +dy = Math.abs(dy); +dx = Math.abs(dx); +if (dy > dx) { +var t = dx; +dx = dy; +dy = t; +}var twoDError = 0; +var twoDx = dx + dx; +var twoDy = dy + dy; +for (var i = 0; i < this.nBits; i++) { +twoDError += twoDy; +if (twoDError > dx) { +this.lineBits.set(i); +twoDError -= twoDx; +}} +this.lineCache.put(this.slopeKey, this.lineBits); +}, "~N,~N"); +Clazz_defineMethod(c$, "clearLineCache", +function(){ +this.lineCache.clear(); +}); +Clazz_defineMethod(c$, "plotLineOld", +function(argbA, argbB, xA, yA, zA, xB, yB, zB){ +this.x1t = xA; +this.x2t = xB; +this.y1t = yA; +this.y2t = yB; +this.z1t = zA; +this.z2t = zB; +var clipped = true; +switch (this.getTrimmedLineImpl()) { +case 0: +clipped = false; +break; +case 2: +return; +} +this.plotLineClippedOld(argbA, argbB, xA, yA, zA, xB - xA, yB - yA, zB - zA, clipped, 0, 0); +}, "~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "plotLineDeltaOld", +function(argbA, argbB, xA, yA, zA, dxBA, dyBA, dzBA, clipped){ +this.x1t = xA; +this.x2t = xA + dxBA; +this.y1t = yA; +this.y2t = yA + dyBA; +this.z1t = zA; +this.z2t = zA + dzBA; +if (clipped) switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +break; +} +this.plotLineClippedOld(argbA, argbB, xA, yA, zA, dxBA, dyBA, dzBA, clipped, 0, 0); +}, "~N,~N,~N,~N,~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "plotLineDeltaAOld", +function(shades1, shades2, screenMask, shadeIndex, x, y, z, dx, dy, dz, clipped){ +this.x1t = x; +this.x2t = x + dx; +this.y1t = y; +this.y2t = y + dy; +this.z1t = z; +this.z2t = z + dz; +if (clipped) switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +} +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var argb = argb1; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yOffsetIncrement = width; +var x2 = x + dx; +var y2 = y + dy; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +}var twoDx = dx + dx; +var twoDy = dy + dy; +var zCurrentScaled = z << 10; +var argbUp = argb1Up; +var argbDn = argb1Dn; +if (dy <= dx) { +var roundingFactor = dx - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz_doubleToInt(((dz << 10) + roundingFactor) / dx); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}offset += xIncrement; +zCurrentScaled += zIncrementScaled; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, zCurrent, rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}runIndex = (runIndex + 1) % run; +} +} else { +var roundingFactor = dy - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz_doubleToInt(((dz << 10) + roundingFactor) / dy); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}offset += yOffsetIncrement; +zCurrentScaled += zIncrementScaled; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) { +var rand8 = this.g3d.shader.nextRandom8Bit(); +p.addPixel(offset, zCurrent, rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}runIndex = (runIndex + 1) % run; +} +}}, "~A,~A,~N,~N,~N,~N,~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "plotLineDeltaABitsFloat", +function(shades1, shades2, shadeIndex, ptA, ptB, screenMask, clipped){ +var x = Math.round(ptA.x); +var y = Math.round(ptA.y); +var z = Math.round(ptA.z); +var bx = Math.round(ptB.x); +var by = Math.round(ptB.y); +var bz = Math.round(ptB.z); +var dx = bx - x; +var dy = by - y; +this.x1t = x; +this.x2t = bx; +this.y1t = y; +this.y2t = by; +this.z1t = z; +this.z2t = bz; +if (clipped && this.getTrimmedLineImpl() == 2) return; +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var i0; +var iMid; +var i1; +var i2; +var iIncrement; +var xIncrement; +var yOffsetIncrement; +if (this.lineTypeX) { +i0 = x; +i1 = this.x1t; +i2 = this.x2t; +iMid = x + Clazz_doubleToInt(dx / 2); +iIncrement = (dx >= 0 ? 1 : -1); +xIncrement = iIncrement; +yOffsetIncrement = (dy >= 0 ? width : -width); +this.setRastABFloat(ptA.x, ptA.z, ptB.x, ptB.z); +} else { +i0 = y; +i1 = this.y1t; +i2 = this.y2t; +iMid = y + Clazz_doubleToInt(dy / 2); +iIncrement = (dy >= 0 ? 1 : -1); +xIncrement = (dy >= 0 ? width : -width); +yOffsetIncrement = (dx >= 0 ? 1 : -1); +this.setRastABFloat(ptA.y, ptA.z, ptB.y, ptB.z); +}var zCurrent = z; +var argb = argb1; +var argbUp = argb1Up; +var argbDn = argb1Dn; +var isInWindow = false; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}for (var i = i0, iBits = i0; ; i += iIncrement, iBits += iIncrement) { +if (i == i1) isInWindow = true; +if (i == iMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}if (argb != 0 && isInWindow && offset >= 0 && offset < offsetMax && runIndex < rise) { +zCurrent = this.getZCurrent(this.a, this.b, i); +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, Clazz_floatToInt(zCurrent), rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}if (i == i2) break; +runIndex = (runIndex + 1) % run; +offset += xIncrement; +while (iBits < 0) iBits += this.nBits; + +if (this.lineBits.get(iBits % this.nBits)) { +offset += yOffsetIncrement; +}} +}, "~A,~A,~N,JU.P3,JU.P3,~N,~B"); +Clazz_defineMethod(c$, "plotLineDeltaABitsInt", +function(shades1, shades2, shadeIndex, ptA, ptB, screenMask, clipped){ +var x = ptA.x; +var y = ptA.y; +var z = ptA.z; +var bx = ptB.x; +var by = ptB.y; +var bz = ptB.z; +var dx = bx - x; +var dy = by - y; +this.x1t = x; +this.x2t = bx; +this.y1t = y; +this.y2t = by; +this.z1t = z; +this.z2t = bz; +if (clipped && this.getTrimmedLineImpl() == 2) return; +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +var rise = 2147483647; +var run = 1; +var shadeIndexUp = (shadeIndex < 63 ? shadeIndex + 1 : shadeIndex); +var shadeIndexDn = (shadeIndex > 0 ? shadeIndex - 1 : shadeIndex); +var argb1 = shades1[shadeIndex]; +var argb1Up = shades1[shadeIndexUp]; +var argb1Dn = shades1[shadeIndexDn]; +var argb2 = shades2[shadeIndex]; +var argb2Up = shades2[shadeIndexUp]; +var argb2Dn = shades2[shadeIndexDn]; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var i0; +var iMid; +var i1; +var i2; +var iIncrement; +var xIncrement; +var yOffsetIncrement; +if (this.lineTypeX) { +i0 = x; +i1 = this.x1t; +i2 = this.x2t; +iMid = x + Clazz_doubleToInt(dx / 2); +iIncrement = (dx >= 0 ? 1 : -1); +xIncrement = iIncrement; +yOffsetIncrement = (dy >= 0 ? width : -width); +this.setRastAB(ptA.x, ptA.z, ptB.x, ptB.z); +} else { +i0 = y; +i1 = this.y1t; +i2 = this.y2t; +iMid = y + Clazz_doubleToInt(dy / 2); +iIncrement = (dy >= 0 ? 1 : -1); +xIncrement = (dy >= 0 ? width : -width); +yOffsetIncrement = (dx >= 0 ? 1 : -1); +this.setRastAB(ptA.y, ptA.z, ptB.y, ptB.z); +}var zCurrent = z; +var argb = argb1; +var argbUp = argb1Up; +var argbDn = argb1Dn; +var isInWindow = false; +var p = this.g3d.pixel; +if (screenMask != 0) { +p = this.g3d.setScreened((screenMask & 1) == 1); +this.g3d.currentShadeIndex = 0; +}for (var i = i0, iBits = i0; ; i += iIncrement, iBits += iIncrement) { +if (i == i1) isInWindow = true; +if (i == iMid) { +argb = argb2; +if (argb == 0) return; +argbUp = argb2Up; +argbDn = argb2Dn; +if (screenMask % 3 != 0) { +p = this.g3d.setScreened((screenMask & 2) == 2); +this.g3d.currentShadeIndex = 0; +}}if (argb != 0 && isInWindow && offset >= 0 && offset < offsetMax && runIndex < rise) { +zCurrent = this.getZCurrent(this.a, this.b, i); +if (zCurrent < zbuf[offset]) { +var rand8 = this.shader.nextRandom8Bit(); +p.addPixel(offset, Clazz_floatToInt(zCurrent), rand8 < 85 ? argbDn : (rand8 > 170 ? argbUp : argb)); +}}if (i == i2) break; +runIndex = (runIndex + 1) % run; +offset += xIncrement; +while (iBits < 0) iBits += this.nBits; + +if (this.lineBits.get(iBits % this.nBits)) { +offset += yOffsetIncrement; +}} +}, "~A,~A,~N,JU.P3i,JU.P3i,~N,~B"); +Clazz_defineMethod(c$, "plotLineBits", +function(argbA, argbB, ptA, ptB, run, rise, andClip){ +if (ptA.z <= 1 || ptB.z <= 1) return; +var clipped = true; +this.x1t = ptA.x; +this.y1t = ptA.y; +this.z1t = ptA.z; +this.x2t = ptB.x; +this.y2t = ptB.y; +this.z2t = ptB.z; +switch (this.getTrimmedLineImpl()) { +case 2: +return; +case 0: +clipped = false; +break; +default: +if (andClip) { +ptA.set(this.x1t, this.y1t, this.z1t); +ptB.set(this.x2t, this.y2t, this.z2t); +}} +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +if (run == 0) { +rise = 2147483647; +run = 1; +}var x = ptA.x; +var y = ptA.y; +var z = ptA.z; +var dx = ptB.x - x; +var x2 = x + dx; +var dy = ptB.y - y; +var y2 = y + dy; +var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var argb = argbA; +var p = this.g3d.pixel; +if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yIncrement = 1; +var yOffsetIncrement = width; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +yIncrement = -1; +}var twoDx = dx + dx; +var twoDy = dy + dy; +if (dy <= dx) { +this.setRastAB(ptA.x, ptA.z, ptB.x, ptB.z); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argbB; +if (argb == 0) return; +}offset += xIncrement; +x += xIncrement; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = this.getZCurrent(this.a, this.b, x); +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +} else { +this.setRastAB(ptA.y, ptA.z, ptB.y, ptB.z); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argbB; +if (argb == 0) return; +}offset += yOffsetIncrement; +y += yIncrement; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = this.getZCurrent(this.a, this.b, y); +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +}}, "~N,~N,JU.P3i,JU.P3i,~N,~N,~B"); +Clazz_defineMethod(c$, "getTrimmedLineImpl", +function(){ +var cc1 = this.g3d.clipCode3(this.x1t, this.y1t, this.z1t); +var cc2 = this.g3d.clipCode3(this.x2t, this.y2t, this.z2t); +var c = (cc1 | cc2); +if ((cc1 | cc2) == 0) return 0; +if (c == -1) return 2; +var xLast = this.g3d.xLast; +var yLast = this.g3d.yLast; +var slab = this.g3d.slab; +var depth = this.g3d.depth; +do { +if ((cc1 & cc2) != 0) return 2; +var dx = this.x2t - this.x1t; +var dy = this.y2t - this.y1t; +var dz = this.z2t - this.z1t; +if (cc1 != 0) { +if ((cc1 & 8) != 0) { +this.y1t += Clazz_floatToInt((-this.x1t * dy) / dx); +this.z1t += Clazz_floatToInt((-this.x1t * dz) / dx); +this.x1t = 0; +} else if ((cc1 & 4) != 0) { +this.y1t += Clazz_floatToInt(((xLast - this.x1t) * dy) / dx); +this.z1t += Clazz_floatToInt(((xLast - this.x1t) * dz) / dx); +this.x1t = xLast; +} else if ((cc1 & 2) != 0) { +this.x1t += Clazz_floatToInt((-this.y1t * dx) / dy); +this.z1t += Clazz_floatToInt((-this.y1t * dz) / dy); +this.y1t = 0; +} else if ((cc1 & 1) != 0) { +this.x1t += Clazz_floatToInt(((yLast - this.y1t) * dx) / dy); +this.z1t += Clazz_floatToInt(((yLast - this.y1t) * dz) / dy); +this.y1t = yLast; +} else if ((cc1 & 32) != 0) { +this.x1t += Clazz_floatToInt(((slab - this.z1t) * dx) / dz); +this.y1t += Clazz_floatToInt(((slab - this.z1t) * dy) / dz); +this.z1t = slab; +} else { +this.x1t += Clazz_floatToInt(((depth - this.z1t) * dx) / dz); +this.y1t += Clazz_floatToInt(((depth - this.z1t) * dy) / dz); +this.z1t = depth; +}cc1 = this.g3d.clipCode3(this.x1t, this.y1t, this.z1t); +} else { +if ((cc2 & 8) != 0) { +this.y2t += Clazz_floatToInt((-this.x2t * dy) / dx); +this.z2t += Clazz_floatToInt((-this.x2t * dz) / dx); +this.x2t = 0; +} else if ((cc2 & 4) != 0) { +this.y2t += Clazz_floatToInt(((xLast - this.x2t) * dy) / dx); +this.z2t += Clazz_floatToInt(((xLast - this.x2t) * dz) / dx); +this.x2t = xLast; +} else if ((cc2 & 2) != 0) { +this.x2t += Clazz_floatToInt((-this.y2t * dx) / dy); +this.z2t += Clazz_floatToInt((-this.y2t * dz) / dy); +this.y2t = 0; +} else if ((cc2 & 1) != 0) { +this.x2t += Clazz_floatToInt(((yLast - this.y2t) * dx) / dy); +this.z2t += Clazz_floatToInt(((yLast - this.y2t) * dz) / dy); +this.y2t = yLast; +} else if ((cc2 & 32) != 0) { +this.x2t += Clazz_floatToInt(((slab - this.z2t) * dx) / dz); +this.y2t += Clazz_floatToInt(((slab - this.z2t) * dy) / dz); +this.z2t = slab; +} else { +this.x2t += Clazz_floatToInt(((depth - this.z2t) * dx) / dz); +this.y2t += Clazz_floatToInt(((depth - this.z2t) * dy) / dz); +this.z2t = depth; +}cc2 = this.g3d.clipCode3(this.x2t, this.y2t, this.z2t); +}} while ((cc1 | cc2) != 0); +return 1; +}); +Clazz_defineMethod(c$, "plotLineClippedOld", +function(argb1, argb2, x, y, z, dx, dy, dz, clipped, run, rise){ +var zbuf = this.g3d.zbuf; +var width = this.g3d.width; +var runIndex = 0; +if (run == 0) { +rise = 2147483647; +run = 1; +}var offset = y * width + x; +var offsetMax = this.g3d.bufferSize; +var argb = argb1; +var p = this.g3d.pixel; +if (argb != 0 && !clipped && offset >= 0 && offset < offsetMax && z < zbuf[offset]) p.addPixel(offset, z, argb); +if (dx == 0 && dy == 0) return; +var xIncrement = 1; +var yOffsetIncrement = width; +var x2 = x + dx; +var y2 = y + dy; +if (dx < 0) { +dx = -dx; +xIncrement = -1; +}if (dy < 0) { +dy = -dy; +yOffsetIncrement = -width; +}var twoDx = dx + dx; +var twoDy = dy + dy; +var zCurrentScaled = z << 10; +if (dy <= dx) { +var roundingFactor = dx - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz_doubleToInt(((dz << 10) + roundingFactor) / dx); +var twoDxAccumulatedYError = 0; +var n1 = Math.abs(x2 - this.x2t) - 1; +var n2 = Math.abs(x2 - this.x1t) - 1; +for (var n = dx - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +}offset += xIncrement; +zCurrentScaled += zIncrementScaled; +twoDxAccumulatedYError += twoDy; +if (twoDxAccumulatedYError > dx) { +offset += yOffsetIncrement; +twoDxAccumulatedYError -= twoDx; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +} else { +var roundingFactor = dy - 1; +if (dz < 0) roundingFactor = -roundingFactor; +var zIncrementScaled = Clazz_doubleToInt(((dz << 10) + roundingFactor) / dy); +var twoDyAccumulatedXError = 0; +var n1 = Math.abs(y2 - this.y2t) - 1; +var n2 = Math.abs(y2 - this.y1t) - 1; +for (var n = dy - 1, nMid = Clazz_doubleToInt(n / 2); --n >= n1; ) { +if (n == nMid) { +argb = argb2; +if (argb == 0) return; +}offset += yOffsetIncrement; +zCurrentScaled += zIncrementScaled; +twoDyAccumulatedXError += twoDx; +if (twoDyAccumulatedXError > dy) { +offset += xIncrement; +twoDyAccumulatedXError -= twoDy; +}if (argb != 0 && n < n2 && offset >= 0 && offset < offsetMax && runIndex < rise) { +var zCurrent = zCurrentScaled >> 10; +if (zCurrent < zbuf[offset]) p.addPixel(offset, zCurrent, argb); +}runIndex = (runIndex + 1) % run; +} +}}, "~N,~N,~N,~N,~N,~N,~N,~N,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(null, "J.g3d.Pixelator", ["J.g3d.Graphics3D"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g = null; +this.p0 = null; +this.zb = null; +this.pb = null; +this.width = 0; +this.bgcolor = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "Pixelator", null); +Clazz_makeConstructor(c$, +function(graphics3d){ +this.g = graphics3d; +this.bgcolor = this.g.bgcolor; +this.setBuf(); +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "setBuf", +function(){ +this.zb = this.g.zbuf; +this.pb = this.g.pbuf; +}); +Clazz_defineMethod(c$, "clearPixel", +function(offset, z){ +if (this.zb[offset] > z) this.zb[offset] = 2147483647; +}, "~N,~N"); +Clazz_defineMethod(c$, "addPixel", +function(offset, z, p){ +this.zb[offset] = z; +this.pb[offset] = p; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "addImagePixel", +function(shade, tLog, offset, z, argb, bgargb){ +if (z < this.zb[offset]) { +switch (shade) { +case 0: +return; +case 8: +this.addPixel(offset, z, argb); +return; +default: +shade += tLog; +if (shade <= 7) { +var p = this.pb[offset]; +if (bgargb != 0) p = J.g3d.Graphics3D.mergeBufferPixel(p, bgargb, bgargb); +p = J.g3d.Graphics3D.mergeBufferPixel(p, (argb & 0xFFFFFF) | (shade << 24), this.bgcolor); +this.addPixel(offset, z, p); +}} +}}, "~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.Pixelator"], "J.g3d.PixelatorT", ["J.g3d.Graphics3D"], function(){ +var c$ = Clazz_declareType(J.g3d, "PixelatorT", J.g3d.Pixelator); +Clazz_overrideMethod(c$, "clearPixel", +function(offset, z){ +}, "~N,~N"); +Clazz_overrideMethod(c$, "addPixel", +function(offset, z, p){ +var zT = this.g.zbufT[offset]; +if (z < zT) { +var argb = this.g.pbufT[offset]; +if (!this.g.translucentCoverOnly && argb != 0 && zT - z > this.g.zMargin) this.pb[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pb[offset], argb, this.g.bgcolor); +this.g.zbufT[offset] = z; +this.g.pbufT[offset] = p & this.g.translucencyMask; +} else if (z == zT) { +} else if (!this.g.translucentCoverOnly && z - zT > this.g.zMargin) { +this.pb[offset] = J.g3d.Graphics3D.mergeBufferPixel(this.pb[offset], p & this.g.translucencyMask, this.g.bgcolor); +}}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.Pixelator"], "J.g3d.PixelatorShaded", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bgRGB = null; +this.tmp = null; +this.zSlab = 0; +this.zDepth = 0; +this.zShadePower = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "PixelatorShaded", J.g3d.Pixelator); +Clazz_makeConstructor(c$, +function(g){ +Clazz_superConstructor(this, J.g3d.PixelatorShaded, [g]); +this.tmp = Clazz_newIntArray (3, 0); +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "set", +function(zSlab, zDepth, zShadePower){ +this.bgcolor = this.g.bgcolor; +this.bgRGB = Clazz_newIntArray(-1, [this.bgcolor & 0xFF, (this.bgcolor >> 8) & 0xFF, (this.g.bgcolor >> 16) & 0xFF]); +this.zSlab = zSlab < 0 ? 0 : zSlab; +this.zDepth = zDepth < 0 ? 0 : zDepth; +this.zShadePower = zShadePower; +this.p0 = this.g.pixel0; +return this; +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "addPixel", +function(offset, z, p){ +if (z > this.zDepth) return; +if (z >= this.zSlab && this.zShadePower > 0) { +var t = this.tmp; +var zs = this.bgRGB; +t[0] = p; +t[1] = p >> 8; +t[2] = p >> 16; +var f = (this.zDepth - z) / (this.zDepth - this.zSlab); +if (this.zShadePower > 1) for (var i = 0; i < this.zShadePower; i++) f *= f; + +for (var i = 0; i < 3; i++) t[i] = zs[i] + Clazz_floatToInt(f * ((t[i] & 0xFF) - zs[i])); + +p = (t[2] << 16) | (t[1] << 8) | t[0] | (p & 0xFF000000); +}this.p0.addPixel(offset, z, p); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "showZBuffer", +function(){ +for (var i = this.p0.zb.length; --i >= 0; ) { +if (this.p0.pb[i] == 0) continue; +var z = Clazz_floatToInt(Math.min(255, Math.max(0, 255 * (this.zDepth - this.p0.zb[i]) / (this.zDepth - this.zSlab)))); +this.p0.pb[i] = 0xFF000000 | z | (z << 8) | (z << 16); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.Pixelator"], "J.g3d.PixelatorScreened", null, function(){ +var c$ = Clazz_declareType(J.g3d, "PixelatorScreened", J.g3d.Pixelator); +Clazz_makeConstructor(c$, +function(g, p0){ +Clazz_superConstructor(this, J.g3d.PixelatorScreened, [g]); +this.width = g.width; +this.p0 = p0; +}, "J.g3d.Graphics3D,J.g3d.Pixelator"); +Clazz_overrideMethod(c$, "addPixel", +function(offset, z, p){ +if ((offset % this.width) % 2 == (Clazz_doubleToInt(offset / this.width)) % 2) this.p0.addPixel(offset, z, p); +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.windowWidth = 0; +this.windowHeight = 0; +this.windowSize = 0; +this.bufferWidth = 0; +this.bufferHeight = 0; +this.bufferSize = 0; +this.bufferSizeT = 0; +this.bufferedImage = null; +this.pBuffer = null; +this.pBufferT = null; +this.zBuffer = null; +this.zBufferT = null; +this.widthOffscreen = 0; +this.heightOffscreen = 0; +this.offscreenImage = null; +this.graphicsForTextOrImage = null; +this.apiPlatform = null; +Clazz_instantialize(this, arguments);}, J.g3d, "Platform3D", null); +Clazz_makeConstructor(c$, +function(apiPlatform){ +this.apiPlatform = apiPlatform; +}, "J.api.GenericPlatform"); +Clazz_defineMethod(c$, "getGraphicsForMetrics", +function(){ +return this.apiPlatform.getGraphics(this.allocateOffscreenImage(1, 1)); +}); +Clazz_defineMethod(c$, "allocateTBuffers", +function(antialiasTranslucent){ +this.bufferSizeT = (antialiasTranslucent ? this.bufferSize : this.windowSize); +this.zBufferT = Clazz_newIntArray (this.bufferSizeT, 0); +this.pBufferT = Clazz_newIntArray (this.bufferSizeT, 0); +}, "~B"); +Clazz_defineMethod(c$, "allocateBuffers", +function(width, height, antialias, isImageWrite){ +this.windowWidth = width; +this.windowHeight = height; +this.windowSize = width * height; +if (antialias) { +width *= 2; +height *= 2; +}this.bufferWidth = width; +this.bufferHeight = height; +this.bufferSize = this.bufferWidth * this.bufferHeight; +this.zBuffer = Clazz_newIntArray (this.bufferSize, 0); +this.pBuffer = Clazz_newIntArray (this.bufferSize, 0); +this.bufferedImage = this.apiPlatform.allocateRgbImage(this.windowWidth, this.windowHeight, this.pBuffer, this.windowSize, J.g3d.Platform3D.backgroundTransparent, isImageWrite); +}, "~N,~N,~B,~B"); +Clazz_defineMethod(c$, "releaseBuffers", +function(){ +this.windowWidth = this.windowHeight = this.bufferWidth = this.bufferHeight = this.bufferSize = -1; +if (this.bufferedImage != null) { +this.apiPlatform.flushImage(this.bufferedImage); +this.bufferedImage = null; +}this.pBuffer = null; +this.zBuffer = null; +this.pBufferT = null; +this.zBufferT = null; +}); +Clazz_defineMethod(c$, "hasContent", +function(){ +for (var i = this.bufferSize; --i >= 0; ) if (this.zBuffer[i] != 2147483647) return true; + +return false; +}); +Clazz_defineMethod(c$, "clearScreenBuffer", +function(){ +for (var i = this.bufferSize; --i >= 0; ) { +this.zBuffer[i] = 2147483647; +this.pBuffer[i] = 0; +} +}); +Clazz_defineMethod(c$, "setBackgroundColor", +function(bgColor){ +if (this.pBuffer == null) return; +for (var i = this.bufferSize; --i >= 0; ) if (this.pBuffer[i] == 0) this.pBuffer[i] = bgColor; + +}, "~N"); +Clazz_defineMethod(c$, "clearTBuffer", +function(){ +for (var i = this.bufferSizeT; --i >= 0; ) { +this.zBufferT[i] = 2147483647; +this.pBufferT[i] = 0; +} +}); +Clazz_defineMethod(c$, "clearBuffer", +function(){ +this.clearScreenBuffer(); +}); +Clazz_defineMethod(c$, "clearScreenBufferThreaded", +function(){ +}); +Clazz_defineMethod(c$, "notifyEndOfRendering", +function(){ +this.apiPlatform.notifyEndOfRendering(); +}); +Clazz_defineMethod(c$, "getGraphicsForTextOrImage", +function(width, height){ +if (width > this.widthOffscreen || height > this.heightOffscreen) { +if (this.offscreenImage != null) { +this.apiPlatform.disposeGraphics(this.graphicsForTextOrImage); +this.apiPlatform.flushImage(this.offscreenImage); +}if (width > this.widthOffscreen) this.widthOffscreen = width; +if (height > this.heightOffscreen) this.heightOffscreen = height; +this.offscreenImage = this.allocateOffscreenImage(this.widthOffscreen, this.heightOffscreen); +this.graphicsForTextOrImage = this.apiPlatform.getStaticGraphics(this.offscreenImage, J.g3d.Platform3D.backgroundTransparent); +}return this.graphicsForTextOrImage; +}, "~N,~N"); +Clazz_defineMethod(c$, "allocateOffscreenImage", +function(width, height){ +return this.apiPlatform.newOffScreenImage(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "setBackgroundTransparent", +function(tf){ +J.g3d.Platform3D.backgroundTransparent = tf; +}, "~B"); +c$.backgroundTransparent = false; +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.a = 0; +this.b = 0; +this.isOrthographic = false; +Clazz_instantialize(this, arguments);}, J.g3d, "PrecisionRenderer", null); +Clazz_defineMethod(c$, "getZCurrent", +function(a, b, x){ +return Math.round(a == 1.4E-45 ? b : this.isOrthographic ? a * x + b : a / (b - x)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setRastABFloat", +function(xa, za, xb, zb){ +var zdif = (zb - za); +var xdif = (xb - xa); +if (zdif == 0 || xdif == 0) { +this.a = 1.4E-45; +this.b = za; +return; +}if (this.isOrthographic) { +this.a = zdif / xdif; +this.b = za - this.a * xa; +} else { +this.a = xdif * za * (zb / zdif); +this.b = (xb * zb - xa * za) / zdif; +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setRastAB", +function(xa, za, xb, zb){ +var zdif = (zb - za); +var xdif = (xb - xa); +if (xa == 1.4E-45 || zdif == 0 || xdif == 0) { +this.a = 1.4E-45; +this.b = zb; +return; +}if (this.isOrthographic) { +this.a = zdif / xdif; +this.b = za - this.a * xa; +} else { +this.a = xdif * za * (zb / zdif); +this.b = (xb * zb - xa * za) / zdif; +}}, "~N,~N,~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["JU.P3"], "J.g3d.SphereRenderer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.shader = null; +this.zroot = null; +this.mat = null; +this.coef = null; +this.mDeriv = null; +this.selectedOctant = 0; +this.planeShade = 0; +this.zbuf = null; +this.width = 0; +this.height = 0; +this.depth = 0; +this.slab = 0; +this.offsetPbufBeginLine = 0; +this.ptTemp = null; +this.planeShades = null; +this.dxyz = null; +Clazz_instantialize(this, arguments);}, J.g3d, "SphereRenderer", null); +Clazz_prepareFields (c$, function(){ +this.zroot = Clazz_newDoubleArray (2, 0); +this.ptTemp = new JU.P3(); +this.planeShades = Clazz_newIntArray (3, 0); +this.dxyz = Clazz_newFloatArray (3, 3, 0); +}); +Clazz_makeConstructor(c$, +function(g3d){ +this.g3d = g3d; +this.shader = g3d.shader; +}, "J.g3d.Graphics3D"); +Clazz_defineMethod(c$, "render", +function(shades, diameter, x, y, z, mat, coef, mDeriv, selectedOctant, octantPoints){ +if (z == 1) return; +if (diameter > 49) diameter &= -2; +if (this.g3d.isClippedXY(diameter, x, y)) return; +this.slab = this.g3d.slab; +this.depth = this.g3d.depth; +var radius = (diameter + 1) >> 1; +var minZ = z - radius; +if (z + radius < this.slab || minZ > this.depth) return; +var minX = x - radius; +var maxX = x + radius; +var minY = y - radius; +var maxY = y + radius; +this.shader.nOut = this.shader.nIn = 0; +this.zbuf = this.g3d.zbuf; +this.height = this.g3d.height; +this.width = this.g3d.width; +this.offsetPbufBeginLine = this.width * y + x; +var sh = this.shader; +this.mat = mat; +if (mat != null) { +this.coef = coef; +this.mDeriv = mDeriv; +this.selectedOctant = selectedOctant; +if (sh.ellipsoidShades == null) sh.createEllipsoidShades(); +if (octantPoints != null) { +this.planeShade = -1; +for (var i = 0; i < 3; i++) { +var dx = this.dxyz[i][0] = octantPoints[i].x - x; +var dy = this.dxyz[i][1] = octantPoints[i].y - y; +var dz = this.dxyz[i][2] = octantPoints[i].z - z; +this.planeShades[i] = sh.getShadeIndex(dx, dy, -dz); +if (dx == 0 && dy == 0) { +this.planeShade = this.planeShades[i]; +break; +}} +}}if (mat != null || diameter > 128) { +this.renderQuadrant(-1, -1, x, y, z, diameter, shades); +this.renderQuadrant(-1, 1, x, y, z, diameter, shades); +this.renderQuadrant(1, -1, x, y, z, diameter, shades); +this.renderQuadrant(1, 1, x, y, z, diameter, shades); +if (mat != null) { +this.mat = null; +this.coef = null; +this.mDeriv = null; +}} else { +var ss = sh.sphereShapeCache[diameter - 1]; +if (ss == null) { +var countSE = 0; +var d = (diameter & 1) != 0; +var radiusF = diameter / 2.0; +var radiusF2 = radiusF * radiusF; +radius = Clazz_doubleToInt((diameter + 1) / 2); +var ys = d ? 0 : 0.5; +for (var i = 0; i < radius; ++i, ++ys) { +var y2 = ys * ys; +var xs = d ? 0 : 0.5; +for (var j = 0; j < radius; ++j, ++xs) { +var x2 = xs * xs; +var z2 = radiusF2 - y2 - x2; +if (z2 >= 0) ++countSE; +} +} +ss = Clazz_newIntArray (countSE, 0); +var offset = 0; +ys = d ? 0 : 0.5; +for (var i = 0; i < radius; ++i, ++ys) { +var y2 = ys * ys; +var xs = d ? 0 : 0.5; +for (var j = 0; j < radius; ++j, ++xs) { +var x2 = xs * xs; +var z2 = radiusF2 - y2 - x2; +if (z2 >= 0) { +var zs = Math.sqrt(z2); +var height = Clazz_floatToInt(zs); +var shadeIndexSE = sh.getShadeN(xs, ys, zs, radiusF); +var shadeIndexSW = sh.getShadeN(-xs, ys, zs, radiusF); +var shadeIndexNE = sh.getShadeN(xs, -ys, zs, radiusF); +var shadeIndexNW = sh.getShadeN(-xs, -ys, zs, radiusF); +var packed = (height | (shadeIndexSE << 7) | (shadeIndexSW << 13) | (shadeIndexNE << 19) | (shadeIndexNW << 25)); +ss[offset++] = packed; +}} +ss[offset - 1] |= 0x80000000; +} +sh.sphereShapeCache[diameter - 1] = ss; +}if (minX < 0 || maxX >= this.width || minY < 0 || maxY >= this.height || minZ < this.slab || z > this.depth) this.renderSphereClipped(ss, x, y, z, diameter, shades); + else this.renderSphereUnclipped(ss, z, diameter, shades); +}this.zbuf = null; +}, "~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A"); +Clazz_defineMethod(c$, "renderSphereUnclipped", +function(sphereShape, z, diameter, shades){ +var offsetSphere = 0; +var evenSizeCorrection = 1 - (diameter & 1); +var offsetSouthCenter = this.offsetPbufBeginLine; +var offsetNorthCenter = offsetSouthCenter - evenSizeCorrection * this.width; +var nLines = Clazz_doubleToInt((diameter + 1) / 2); +var zbuf = this.zbuf; +var width = this.width; +var p = this.g3d.pixel; +do { +var offsetSE = offsetSouthCenter; +var offsetSW = offsetSouthCenter - evenSizeCorrection; +var offsetNE = offsetNorthCenter; +var offsetNW = offsetNorthCenter - evenSizeCorrection; +var packed; +do { +packed = sphereShape[offsetSphere++]; +var zPixel = z - (packed & 0x7F); +if (zPixel < zbuf[offsetSE]) p.addPixel(offsetSE, zPixel, shades[((packed >> 7) & 0x3F)]); +if (zPixel < zbuf[offsetSW]) p.addPixel(offsetSW, zPixel, shades[((packed >> 13) & 0x3F)]); +if (zPixel < zbuf[offsetNE]) p.addPixel(offsetNE, zPixel, shades[((packed >> 19) & 0x3F)]); +if (zPixel < zbuf[offsetNW]) p.addPixel(offsetNW, zPixel, shades[((packed >> 25) & 0x3F)]); +++offsetSE; +--offsetSW; +++offsetNE; +--offsetNW; +} while (packed >= 0); +offsetSouthCenter += width; +offsetNorthCenter -= width; +} while (--nLines > 0); +}, "~A,~N,~N,~A"); +Clazz_defineMethod(c$, "renderSphereClipped", +function(sphereShape, x, y, z, diameter, shades){ +var w = this.width; +var h = this.height; +var offsetSphere = 0; +var evenSizeCorrection = 1 - (diameter & 1); +var offsetSouthCenter = this.offsetPbufBeginLine; +var offsetNorthCenter = offsetSouthCenter - evenSizeCorrection * w; +var nLines = Clazz_doubleToInt((diameter + 1) / 2); +var ySouth = y; +var yNorth = y - evenSizeCorrection; +var randu = (x << 16) + (y << 1) ^ 0x33333333; +var sh = shades; +var zb = this.zbuf; +var p = this.g3d.pixel; +var sl = this.slab; +var de = this.depth; +do { +var tSouthVisible = ySouth >= 0 && ySouth < h; +var tNorthVisible = yNorth >= 0 && yNorth < h; +var offsetSE = offsetSouthCenter; +var offsetSW = offsetSouthCenter - evenSizeCorrection; +var offsetNE = offsetNorthCenter; +var offsetNW = offsetNorthCenter - evenSizeCorrection; +var packed; +var xEast = x; +var xWest = x - evenSizeCorrection; +do { +var tWestVisible = xWest >= 0 && xWest < w; +var tEastVisible = xEast >= 0 && xEast < w; +packed = sphereShape[offsetSphere++]; +var isCore; +var zOffset = packed & 0x7F; +var zPixel; +if (z < sl) { +zPixel = z + zOffset; +isCore = (zPixel >= sl); +} else { +zPixel = z - zOffset; +isCore = (zPixel < sl); +}if (isCore) zPixel = sl; +if (zPixel >= sl && zPixel <= de) { +if (tSouthVisible) { +if (tEastVisible && zPixel < zb[offsetSE]) { +var i = (isCore ? 44 + ((randu >> 7) & 0x07) : (packed >> 7) & 0x3F); +p.addPixel(offsetSE, zPixel, sh[i]); +}if (tWestVisible && zPixel < zb[offsetSW]) { +var i = (isCore ? 44 + ((randu >> 13) & 0x07) : (packed >> 13) & 0x3F); +p.addPixel(offsetSW, zPixel, sh[i]); +}}if (tNorthVisible) { +if (tEastVisible && zPixel < zb[offsetNE]) { +var i = (isCore ? 44 + ((randu >> 19) & 0x07) : (packed >> 19) & 0x3F); +p.addPixel(offsetNE, zPixel, sh[i]); +}if (tWestVisible && zPixel < zb[offsetNW]) { +var i = (isCore ? 44 + ((randu >> 25) & 0x07) : (packed >> 25) & 0x3F); +p.addPixel(offsetNW, zPixel, sh[i]); +}}}++offsetSE; +--offsetSW; +++offsetNE; +--offsetNW; +++xEast; +--xWest; +if (isCore) randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +} while (packed >= 0); +offsetSouthCenter += w; +offsetNorthCenter -= w; +++ySouth; +--yNorth; +} while (--nLines > 0); +}, "~A,~N,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "renderQuadrant", +function(xSign, ySign, x, y, z, diameter, shades){ +var radius = Clazz_doubleToInt(diameter / 2); +var t = x + radius * xSign; +var xStatus = (x < 0 ? -1 : x < this.width ? 0 : 1) + (t < 0 ? -2 : t < this.width ? 0 : 2); +if (xStatus == -3 || xStatus == 3) return; +t = y + radius * ySign; +var yStatus = (y < 0 ? -1 : y < this.height ? 0 : 1) + (t < 0 ? -2 : t < this.height ? 0 : 2); +if (yStatus == -3 || yStatus == 3) return; +var unclipped = (this.mat == null && xStatus == 0 && yStatus == 0 && z - radius >= this.slab && z <= this.depth); +if (unclipped) this.renderQuadrantUnclipped(radius, xSign, ySign, z, shades); + else this.renderQuadrantClipped(radius, xSign, ySign, x, y, z, shades); +}, "~N,~N,~N,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "renderQuadrantUnclipped", +function(radius, xSign, ySign, z, s){ +var r2 = radius * radius; +var dDivisor = radius * 2 + 1; +var lineIncrement = (ySign < 0 ? -this.width : this.width); +var ptLine = this.offsetPbufBeginLine; +var zb = this.zbuf; +var p = this.g3d.pixel; +var indexes = this.shader.sphereShadeIndexes; +for (var i = 0, i2 = 0; i2 <= r2; i2 += i + (++i), ptLine += lineIncrement) { +var offset = ptLine; +var s2 = r2 - i2; +var z0 = z - radius; +var y8 = Clazz_doubleToInt(((i * ySign + radius) << 8) / dDivisor); +for (var j = 0, j2 = 0; j2 <= s2; j2 += j + (++j), offset += xSign) { +if (zb[offset] <= z0) continue; +var k = Clazz_doubleToInt(Math.sqrt(s2 - j2)); +z0 = z - k; +if (zb[offset] <= z0) continue; +var x8 = Clazz_doubleToInt(((j * xSign + radius) << 8) / dDivisor); +p.addPixel(offset, z0, s[indexes[((y8 << 8) + x8)]]); +} +} +}, "~N,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "renderQuadrantClipped", +function(radius, xSign, ySign, x, y, z, shades){ +var isEllipsoid = (this.mat != null); +var checkOctant = (this.selectedOctant >= 0); +var r2 = radius * radius; +var dDivisor = radius * 2 + 1; +var lineIncrement = (ySign < 0 ? -this.width : this.width); +var ptLine = this.offsetPbufBeginLine; +var randu = (x << 16) + (y << 1) ^ 0x33333333; +var y8 = 0; +var iShade = 0; +var p = this.g3d.pixel; +var z1 = 0; +var h = this.height; +var w = this.width; +var x0 = x; +var zb = this.zbuf; +var xyz = this.dxyz; +var y0 = y; +var z0 = z; +var sl = this.slab; +var de = this.depth; +var pt = this.ptTemp; +var c = this.coef; +var rt = this.zroot; +var oct = this.selectedOctant; +var s = this.shader; +var pl = this.planeShades; +var indexes = s.sphereShadeIndexes; +var ps = this.planeShade; +var m = this.mat; +for (var i = 0, i2 = 0, yC = y; i2 <= r2; i2 += i + (++i), ptLine += lineIncrement, yC += ySign) { +if (yC < 0) { +if (ySign < 0) return; +continue; +}if (yC >= h) { +if (ySign > 0) return; +continue; +}var s2 = r2 - (isEllipsoid ? 0 : i2); +if (!isEllipsoid) { +y8 = Clazz_doubleToInt(((i * ySign + radius) << 8) / dDivisor); +}randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +var xC = x0; +for (var j = 0, j2 = 0, iRoot = -1, mode = 1, offset = ptLine; j2 <= s2; j2 += j + (++j), offset += xSign, xC += xSign) { +if (xC < 0) { +if (xSign < 0) break; +continue; +}if (xC >= w) { +if (xSign > 0) break; +continue; +}var zPixel; +if (isEllipsoid) { +var b_2a = (c[4] * xC + c[5] * yC + c[8]) / c[2] / 2; +var c_a = (c[0] * xC * xC + c[1] * yC * yC + c[3] * xC * yC + c[6] * xC + c[7] * yC - 1) / c[2]; +var f = b_2a * b_2a - c_a; +if (f < 0) { +if (iRoot >= 0) { +break; +}continue; +}f = Math.sqrt(f); +rt[0] = (-b_2a - f); +rt[1] = (-b_2a + f); +iRoot = (z0 < sl ? 1 : 0); +if ((zPixel = Clazz_doubleToInt(rt[iRoot])) == 0) zPixel = z0; +mode = 2; +z1 = zPixel; +if (checkOctant) { +pt.set(xC - x0, yC - y0, zPixel - z0); +m.rotate(pt); +var thisOctant = 0; +if (pt.x < 0) thisOctant |= 1; +if (pt.y < 0) thisOctant |= 2; +if (pt.z < 0) thisOctant |= 4; +if (thisOctant == oct) { +if (ps >= 0) { +iShade = ps; +} else { +var iMin = 3; +var dz; +var zMin = 3.4028235E38; +for (var ii = 0; ii < 3; ii++) { +if ((dz = xyz[ii][2]) == 0) continue; +var ptz = z0 + (-xyz[ii][0] * (xC - x) - xyz[ii][1] * (yC - y0)) / dz; +if (ptz < zMin) { +zMin = ptz; +iMin = ii; +}} +if (iMin == 3) { +iMin = 0; +zMin = z0; +}rt[0] = zMin; +iShade = pl[iMin]; +}zPixel = Clazz_doubleToInt(rt[0]); +mode = 3; +}var isCore = (z0 < sl ? zPixel >= sl : zPixel < sl); +if (isCore) { +z1 = zPixel = sl; +mode = 0; +}}if (zPixel < sl || zPixel > de || zb[offset] <= z1) continue; +} else { +var zOffset = Clazz_doubleToInt(Math.sqrt(s2 - j2)); +zPixel = z0 + (z0 < sl ? zOffset : -zOffset); +var isCore = (z0 < sl ? zPixel >= sl : zPixel < sl); +if (isCore) { +zPixel = sl; +mode = 0; +}if (zPixel < sl || zPixel > de || zb[offset] <= zPixel) continue; +}switch (mode) { +case 0: +iShade = (44 + ((randu >> 8) & 0x07)); +randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; +mode = 1; +break; +case 2: +iShade = s.getEllipsoidShade(xC, yC, rt[iRoot], radius, this.mDeriv); +break; +case 3: +p.clearPixel(offset, z1); +break; +default: +var x8 = Clazz_doubleToInt(((j * xSign + radius) << 8) / dDivisor); +iShade = indexes[(y8 << 8) + x8]; +break; +} +p.addPixel(offset, zPixel, shades[iShade]); +} +randu = ((randu + xC + yC) | 1) & 0x7FFFFFFF; +} +}, "~N,~N,~N,~N,~N,~N,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["java.util.Hashtable"], "J.g3d.TextRenderer", ["JU.CU", "J.g3d.Graphics3D"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.height = 0; +this.ascent = 0; +this.width = 0; +this.mapWidth = 0; +this.size = 0; +this.tmap = null; +this.isInvalid = false; +Clazz_instantialize(this, arguments);}, J.g3d, "TextRenderer", null); +Clazz_makeConstructor(c$, +function(text, font3d){ +this.ascent = font3d.getAscent(); +this.height = font3d.getHeight(); +this.width = font3d.stringWidth(text); +if (this.width == 0) return; +this.mapWidth = this.width; +this.size = this.mapWidth * this.height; +}, "~S,JU.Font"); +c$.clearFontCache = Clazz_defineMethod(c$, "clearFontCache", +function(){ +if (J.g3d.TextRenderer.working) return; +J.g3d.TextRenderer.htFont3d.clear(); +J.g3d.TextRenderer.htFont3dAntialias.clear(); +}); +c$.plot = Clazz_defineMethod(c$, "plot", +function(x, y, z, argb, bgargb, text, font3d, g3d, jr, antialias){ +if (text.length == 0) return 0; +if (text.indexOf("= 0 || text.indexOf("= 0) return J.g3d.TextRenderer.plotByCharacter(x, y, z, argb, bgargb, text, font3d, g3d, jr, antialias); +var offset = font3d.getAscent(); +y -= offset; +var text3d = J.g3d.TextRenderer.getPlotText3D(x, y, g3d, text, font3d, antialias); +if (text3d.isInvalid) return text3d.width; +if (antialias) argb = J.g3d.Graphics3D.fixTextImageRGB(argb); +var textHeight = text3d.height; +var textWidth = text3d.width; +var tmap = text3d.tmap; +var g = g3d; +var width = g.width; +var height = g.height; +var zbuf = g.zbuf; +var p = g.pixel; +var tLog = g.translucencyLog; +if (jr != null || (x < 0 || x + text3d.width > width || y < 0 || y + text3d.height > height) && (jr = g3d) != null) { +for (var off = 0, i = 0; i < textHeight; i++) { +for (var j = 0; j < textWidth; j++) { +var shade = tmap[off++]; +if (shade != 0) jr.plotImagePixel(argb, x + j, y + i, z, shade, bgargb, width, height, zbuf, p, tLog); +} +} +} else { +for (var i = 0, off = 0, pbufOffset = y * width + x; i < textHeight; i++, pbufOffset += (width - textWidth)) for (var j = 0; j < textWidth; j++) p.addImagePixel(tmap[off++], tLog, pbufOffset++, z, argb, bgargb); + + +}return text3d.width; +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.g3d.Graphics3D,J.api.JmolRendererInterface,~B"); +c$.plotByCharacter = Clazz_defineMethod(c$, "plotByCharacter", +function(x, y, z, argb, bgargb, text, font3d, g3d, jmolRenderer, antialias){ +var w = 0; +var len = text.length; +var suboffset = Math.round(font3d.getHeight() * 0.25); +var supoffset = -Math.round(font3d.getHeight() * 0.3); +var argb0 = 0; +for (var i = 0; i < len; i++) { +if (text.charAt(i) == '<') { +if (i + 5 < len && text.substring(i, i + 6).equals("", i); +if (pt < 0) continue; +argb = JU.CU.getArgbFromString(text.substring(i + 7, pt).trim()); +i = pt; +continue; +}if (i + 7 < len && text.substring(i, i + 8).equals("")) { +i += 7; +argb = argb0; +continue; +}if (i + 4 < len && text.substring(i, i + 5).equals("")) { +i += 4; +y += suboffset; +continue; +}if (i + 4 < len && text.substring(i, i + 5).equals("")) { +i += 4; +y += supoffset; +continue; +}if (i + 5 < len && text.substring(i, i + 6).equals("")) { +i += 5; +y -= suboffset; +continue; +}if (i + 5 < len && text.substring(i, i + 6).equals("")) { +i += 5; +y -= supoffset; +continue; +}}var width = J.g3d.TextRenderer.plot(x + w, y, z, argb, bgargb, text.substring(i, i + 1), font3d, g3d, jmolRenderer, antialias); +w += width; +} +return w; +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.g3d.Graphics3D,J.api.JmolRendererInterface,~B"); +c$.getPlotText3D = Clazz_defineMethod(c$, "getPlotText3D", +function(x, y, g3d, text, font3d, antialias){ +J.g3d.TextRenderer.working = true; +var ht = (antialias ? J.g3d.TextRenderer.htFont3dAntialias : J.g3d.TextRenderer.htFont3d); +var htForThisFont = ht.get(font3d); +var text3d = null; +var newFont = false; +var newText = false; +if (htForThisFont != null) { +text3d = htForThisFont.get(text); +} else { +htForThisFont = new java.util.Hashtable(); +newFont = true; +}if (text3d == null) { +text3d = new J.g3d.TextRenderer(text, font3d); +newText = true; +}text3d.isInvalid = (text3d.width == 0 || x + text3d.width <= 0 || x >= g3d.width || y + text3d.height <= 0 || y >= g3d.height); +if (text3d.isInvalid) return text3d; +if (newFont) ht.put(font3d, htForThisFont); +if (newText) { +text3d.setTranslucency(text, font3d, g3d); +htForThisFont.put(text, text3d); +}J.g3d.TextRenderer.working = false; +return text3d; +}, "~N,~N,J.g3d.Graphics3D,~S,JU.Font,~B"); +Clazz_defineMethod(c$, "setTranslucency", +function(text, font3d, g3d){ +var pixels = g3d.apiPlatform.getTextPixels(text, font3d, g3d.platform.getGraphicsForTextOrImage(this.mapWidth, this.height), g3d.platform.offscreenImage, this.mapWidth, this.height, this.ascent); +if (pixels == null) return; +this.tmap = Clazz_newByteArray (this.size, 0); +for (var i = pixels.length; --i >= 0; ) { +var p = pixels[i] & 0xFF; +if (p != 0) { +this.tmap[i] = J.g3d.TextRenderer.translucency[p >> 5]; +}} +}, "~S,JU.Font,J.g3d.Graphics3D"); +c$.translucency = Clazz_newByteArray(-1, [7, 6, 5, 4, 3, 2, 1, 8]); +c$.working = false; +c$.htFont3d = new java.util.Hashtable(); +c$.htFont3dAntialias = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["JU.P3i"], "J.g3d.TextString", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.text = null; +this.font = null; +this.argb = 0; +this.bgargb = 0; +Clazz_instantialize(this, arguments);}, J.g3d, "TextString", JU.P3i, java.util.Comparator); +Clazz_defineMethod(c$, "setText", +function(text, font, argb, bgargb, x, y, z){ +this.text = text; +this.font = font; +this.argb = argb; +this.bgargb = bgargb; +this.x = x; +this.y = y; +this.z = z; +}, "~S,JU.Font,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "compare", +function(a, b){ +return (a == null || b == null ? 0 : a.z > b.z ? -1 : a.z < b.z ? 1 : 0); +}, "J.g3d.TextString,J.g3d.TextString"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.asString() + " " + this.text; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.g3d"); +Clazz_load(["J.g3d.G3DRenderer", "$.PrecisionRenderer", "JU.Rgb16"], "J.g3d.TriangleRenderer", ["JU.GData"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g3d = null; +this.ax = null; +this.ay = null; +this.az = null; +this.aa = null; +this.bb = null; +this.axW = null; +this.azW = null; +this.axE = null; +this.azE = null; +this.rgb16sW = null; +this.rgb16sE = null; +this.rgb16sGouraud = null; +this.rgb16t1 = null; +this.rgb16t2 = null; +Clazz_instantialize(this, arguments);}, J.g3d, "TriangleRenderer", J.g3d.PrecisionRenderer, J.g3d.G3DRenderer); +Clazz_prepareFields (c$, function(){ +this.ax = Clazz_newIntArray (3, 0); +this.ay = Clazz_newIntArray (3, 0); +this.az = Clazz_newIntArray (3, 0); +this.aa = Clazz_newFloatArray (64, 0); +this.bb = Clazz_newFloatArray (64, 0); +this.axW = Clazz_newIntArray (64, 0); +this.azW = Clazz_newIntArray (64, 0); +this.axE = Clazz_newIntArray (64, 0); +this.azE = Clazz_newIntArray (64, 0); +this.rgb16t1 = new JU.Rgb16(); +this.rgb16t2 = new JU.Rgb16(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.g3d.TriangleRenderer, []); +}); +Clazz_overrideMethod(c$, "set", +function(g3d, gdata){ +try { +this.rgb16sW = new Array(64); +this.rgb16sE = new Array(64); +for (var i = 64; --i >= 0; ) { +this.rgb16sW[i] = new JU.Rgb16(); +this.rgb16sE[i] = new JU.Rgb16(); +} +this.g3d = g3d; +this.rgb16sGouraud = new Array(3); +for (var i = 3; --i >= 0; ) this.rgb16sGouraud[i] = new JU.Rgb16(); + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return this; +}, "J.api.JmolRendererInterface,JU.GData"); +Clazz_defineMethod(c$, "reallocRgb16s", +function(rgb16s, n){ +var t = new Array(n); +System.arraycopy(rgb16s, 0, t, 0, rgb16s.length); +for (var i = rgb16s.length; i < n; ++i) t[i] = new JU.Rgb16(); + +return t; +}, "~A,~N"); +Clazz_defineMethod(c$, "setGouraud", +function(rgbA, rgbB, rgbC){ +this.rgb16sGouraud[0].setInt(rgbA); +this.rgb16sGouraud[1].setInt(rgbB); +this.rgb16sGouraud[2].setInt(rgbC); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "fillTriangle", +function(screenA, screenB, screenC, useGouraud){ +this.ax[0] = screenA.x; +this.ax[1] = screenB.x; +this.ax[2] = screenC.x; +this.ay[0] = screenA.y; +this.ay[1] = screenB.y; +this.ay[2] = screenC.y; +this.az[0] = screenA.z; +this.az[1] = screenB.z; +this.az[2] = screenC.z; +if (this.az[0] <= 1 || this.az[1] <= 1 || this.az[2] <= 1) return; +var cc0 = this.g3d.clipCode3(this.ax[0], this.ay[0], this.az[0]); +var cc1 = this.g3d.clipCode3(this.ax[1], this.ay[1], this.az[1]); +var cc2 = this.g3d.clipCode3(this.ax[2], this.ay[2], this.az[2]); +var c = (cc0 | cc1 | cc2); +var isClipped = (c != 0); +if (isClipped) { +if (c == -1 || (cc0 & cc1 & cc2) != 0) { +return; +}}var iMinY = 0; +if (this.ay[1] < this.ay[iMinY]) iMinY = 1; +if (this.ay[2] < this.ay[iMinY]) iMinY = 2; +var iMidY = (iMinY + 1) % 3; +var iMaxY = (iMinY + 2) % 3; +if (this.ay[iMidY] > this.ay[iMaxY]) { +var t = iMidY; +iMidY = iMaxY; +iMaxY = t; +}var yMin = this.ay[iMinY]; +var yMid = this.ay[iMidY]; +var yMax = this.ay[iMaxY]; +var nLines = yMax - yMin + 1; +if (nLines > this.g3d.height * 3) return; +if (nLines > this.axW.length) { +var n = (nLines + 31) & -32; +this.axW = Clazz_newIntArray (n, 0); +this.azW = Clazz_newIntArray (n, 0); +this.axE = Clazz_newIntArray (n, 0); +this.azE = Clazz_newIntArray (n, 0); +this.aa = Clazz_newFloatArray (n, 0); +this.bb = Clazz_newFloatArray (n, 0); +this.rgb16sW = this.reallocRgb16s(this.rgb16sW, n); +this.rgb16sE = this.reallocRgb16s(this.rgb16sE, n); +}var gouraudW; +var gouraudE; +if (useGouraud) { +gouraudW = this.rgb16sW; +gouraudE = this.rgb16sE; +} else { +gouraudW = gouraudE = null; +}var dyMidMin = yMid - yMin; +if (dyMidMin == 0) { +if (this.ax[iMidY] < this.ax[iMinY]) { +var t = iMidY; +iMidY = iMinY; +iMinY = t; +}this.generateRaster(nLines, iMinY, iMaxY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines, iMidY, iMaxY, this.axE, this.azE, 0, gouraudE); +} else if (yMid == yMax) { +if (this.ax[iMaxY] < this.ax[iMidY]) { +var t = iMidY; +iMidY = iMaxY; +iMaxY = t; +}this.generateRaster(nLines, iMinY, iMidY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines, iMinY, iMaxY, this.axE, this.azE, 0, gouraudE); +} else { +var dxMaxMin = this.ax[iMaxY] - this.ax[iMinY]; +var roundFactor; +roundFactor = JU.GData.roundInt(Clazz_doubleToInt(nLines / 2)); +if (dxMaxMin < 0) roundFactor = -roundFactor; +var axSplit = this.ax[iMinY] + Clazz_doubleToInt((dxMaxMin * dyMidMin + roundFactor) / nLines); +if (axSplit < this.ax[iMidY]) { +this.generateRaster(nLines, iMinY, iMaxY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(dyMidMin + 1, iMinY, iMidY, this.axE, this.azE, 0, gouraudE); +this.generateRaster(nLines - dyMidMin, iMidY, iMaxY, this.axE, this.azE, dyMidMin, gouraudE); +} else { +this.generateRaster(dyMidMin + 1, iMinY, iMidY, this.axW, this.azW, 0, gouraudW); +this.generateRaster(nLines - dyMidMin, iMidY, iMaxY, this.axW, this.azW, dyMidMin, gouraudW); +this.generateRaster(nLines, iMinY, iMaxY, this.axE, this.azE, 0, gouraudE); +}}this.g3d.setZMargin(5); +var pass2Row = this.g3d.pass2Flag01; +var pass2Off = 1 - pass2Row; +var xW; +var i = 0; +if (yMin < 0) { +nLines += yMin; +i -= yMin; +yMin = 0; +}if (yMin + nLines > this.g3d.height) nLines = this.g3d.height - yMin; +if (useGouraud) { +if (isClipped) { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pixelCount > 0) this.g3d.plotPixelsClippedRaster(pixelCount, xW, yMin, this.azW[i], this.azE[i], this.rgb16sW[i], this.rgb16sE[i]); +} +} else { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pass2Row == 1 && pixelCount < 0) { +pixelCount = 1; +xW--; +}if (pixelCount > 0) this.g3d.plotPixelsUnclippedRaster(pixelCount, xW, yMin, this.azW[i], this.azE[i], this.rgb16sW[i], this.rgb16sE[i]); +} +}} else { +if (isClipped) { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pixelCount > 0) this.g3d.plotPixelsClippedRasterBits(pixelCount, xW, yMin, this.azW[i], this.azE[i], null, null, this.aa[i], this.bb[i]); +} +} else { +for (; --nLines >= pass2Row; ++yMin, ++i) { +var pixelCount = this.axE[i] - (xW = this.axW[i]) + pass2Off; +if (pass2Row == 1 && pixelCount < 0) { +pixelCount = 1; +xW--; +}if (pixelCount > 0) this.g3d.plotPixelsUnclippedRasterBits(pixelCount, xW, yMin, null, null, this.aa[i], this.bb[i]); +} +}}this.g3d.setZMargin(0); +}, "JU.P3i,JU.P3i,JU.P3i,~B"); +Clazz_defineMethod(c$, "generateRaster", +function(dy, iN, iS, axRaster, azRaster, iRaster, gouraud){ +var xN = this.ax[iN]; +var xS = this.ax[iS]; +var dx = xS - xN; +var xCurrent = xN; +var xIncrement; +var width; +var errorTerm; +if (dx >= 0) { +xIncrement = 1; +width = dx; +errorTerm = 0; +} else { +xIncrement = -1; +width = -dx; +errorTerm = 1 - dy; +}var xMajorIncrement; +var xMajorError; +if (width <= dy) { +xMajorIncrement = 0; +xMajorError = width; +} else { +xMajorIncrement = JU.GData.roundInt(Clazz_doubleToInt(dx / dy)); +xMajorError = width % dy; +}this.setRastAB(this.ay[iN], this.az[iN], this.ay[iS], this.az[iS]); +var a0 = this.a; +var b0 = this.b; +var isEast = (axRaster === this.axE); +for (var y = 0, zy = this.ay[iN], lastY = dy - 1, i = iRaster; y <= lastY; ++i, ++y, ++zy) { +if (i == 0 || i > iRaster) { +axRaster[i] = (y == lastY ? this.ax[iS] : xCurrent); +azRaster[i] = this.getZCurrent(a0, b0, zy); +if (isEast) { +this.setRastAB(this.axW[i], this.azW[i], axRaster[i], azRaster[i]); +this.aa[i] = this.a; +this.bb[i] = this.b; +}}xCurrent += xMajorIncrement; +errorTerm += xMajorError; +if (errorTerm > 0) { +xCurrent += xIncrement; +errorTerm -= dy; +}} +if (gouraud != null) { +var rgb16Base = this.rgb16t1; +rgb16Base.setRgb(this.rgb16sGouraud[iN]); +var rgb16Increment = this.rgb16t2; +rgb16Increment.diffDiv(this.rgb16sGouraud[iS], rgb16Base, dy); +for (var i = iRaster, iMax = iRaster + dy; i < iMax; ++i) gouraud[i].setAndIncrement(rgb16Base, rgb16Increment); + +}}, "~N,~N,~N,~A,~A,~N,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.i18n"); +Clazz_load(["J.api.Translator", "java.text.MessageFormat", "java.util.Hashtable", "JU.PT", "J.i18n.Language", "$.Resource"], "J.i18n.GT", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.resources = null; +this.resourceCount = 0; +this.doTranslate = true; +this.language = null; +Clazz_instantialize(this, arguments);}, J.i18n, "GT", null, J.api.Translator); +/*LV!1824 unnec constructor*/Clazz_makeConstructor(c$, +function(vr, langCode){ +{ +}this.resources = null; +this.resourceCount = 0; +J.i18n.GT.$getTextWrapper = this; +if (langCode != null && langCode.length == 0) langCode = "none"; +if (langCode != null) this.language = langCode; +if ("none".equals(this.language)) this.language = null; +if (this.language == null) this.language = J.i18n.Resource.getLanguage(); +if (this.language == null) this.language = "en"; +var la = this.language; +var la_co = null; +var la_co_va = null; +var i = this.language.indexOf("_"); +if (i >= 0) { +la = la.substring(0, i); +la_co = this.language; +if ((i = la_co.indexOf("_", ++i)) >= 0) { +la_co = la_co.substring(0, i); +la_co_va = this.language; +}}if ((this.language = this.getSupported(la_co_va)) == null && (this.language = this.getSupported(la_co)) == null && (this.language = this.getSupported(la)) == null) { +this.language = "en"; +System.out.println(this.language + " not supported -- using en"); +return; +}la_co_va = null; +la_co = null; +switch (this.language.length) { +default: +la_co_va = this.language; +la_co = this.language.substring(0, 5); +la = this.language.substring(0, 2); +break; +case 5: +la_co = this.language; +la = this.language.substring(0, 2); +break; +case 2: +la = this.language; +break; +} +la_co = this.getSupported(la_co); +la = this.getSupported(la); +if (la === la_co || "en_US".equals(la)) la = null; +if (la_co === la_co_va) la_co = null; +if ("en_US".equals(la_co)) return; +if (J.i18n.GT.allowDebug && JU.Logger.debugging) JU.Logger.debug("Instantiating gettext wrapper for " + this.language + " using files for language:" + la + " country:" + la_co + " variant:" + la_co_va); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", la_co_va, null, null); +this.addBundles(vr, "JmolApplet", la_co_va, null, null); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", null, la_co, null); +this.addBundles(vr, "JmolApplet", null, la_co, null); +if (!J.i18n.GT.$ignoreApplicationBundle) this.addBundles(vr, "Jmol", null, null, la); +this.addBundles(vr, "JmolApplet", null, null, la); +}, "JV.Viewer,~S"); +Clazz_overrideMethod(c$, "translate", +function(s){ +return J.i18n.GT.$(s); +}, "~S"); +c$.getLanguageList = Clazz_defineMethod(c$, "getLanguageList", +function(gt){ +if (J.i18n.GT.languageList == null) { +if (gt == null) gt = J.i18n.GT.getTextWrapper(); +gt.createLanguageList(); +}return J.i18n.GT.languageList; +}, "J.i18n.GT"); +c$.getLanguage = Clazz_defineMethod(c$, "getLanguage", +function(){ +return J.i18n.GT.getTextWrapper().language; +}); +c$.ignoreApplicationBundle = Clazz_defineMethod(c$, "ignoreApplicationBundle", +function(){ +J.i18n.GT.$ignoreApplicationBundle = true; +}); +c$.setDoTranslate = Clazz_defineMethod(c$, "setDoTranslate", +function(TF){ +var b = J.i18n.GT.getDoTranslate(); +J.i18n.GT.getTextWrapper().doTranslate = TF; +return b; +}, "~B"); +c$.getDoTranslate = Clazz_defineMethod(c$, "getDoTranslate", +function(){ +return J.i18n.GT.getTextWrapper().doTranslate; +}); +c$.$ = Clazz_defineMethod(c$, "$", +function(string){ +return J.i18n.GT.getTextWrapper().getString(string); +}, "~S"); +c$.o = Clazz_defineMethod(c$, "o", +function(s, o){ +if (Clazz_instanceOf(o,Array)) { +if ((o).length != 1) return java.text.MessageFormat.format(s, o); +o = (o)[0]; +}return JU.PT.rep(s, "{0}", o.toString()); +}, "~S,~O"); +c$.i = Clazz_defineMethod(c$, "i", +function(s, n){ +return JU.PT.rep(s, "{0}", "" + n); +}, "~S,~N"); +c$.escapeHTML = Clazz_defineMethod(c$, "escapeHTML", +function(msg){ +var ch; +for (var i = msg.length; --i >= 0; ) if ((ch = msg.charAt(i)).charCodeAt(0) > 0x7F) { +msg = msg.substring(0, i) + "&#" + ((ch).charCodeAt(0)) + ";" + msg.substring(i + 1); +} +return msg; +}, "~S"); +c$.getTextWrapper = Clazz_defineMethod(c$, "getTextWrapper", +function(){ +return (J.i18n.GT.$getTextWrapper == null ? J.i18n.GT.$getTextWrapper = new J.i18n.GT(null, null) : J.i18n.GT.$getTextWrapper); +}); +Clazz_defineMethod(c$, "createLanguageList", +function(){ +var wasTranslating = this.doTranslate; +this.doTranslate = false; +J.i18n.GT.languageList = J.i18n.Language.getLanguageList(); +this.doTranslate = wasTranslating; +}); +Clazz_defineMethod(c$, "getSupported", +function(code){ +if (code == null) return null; +var s = J.i18n.GT.htLanguages.get(code); +if (s != null) return (s.length == 0 ? null : s); +s = J.i18n.Language.getSupported(J.i18n.GT.getLanguageList(this), code); +J.i18n.GT.htLanguages.put(code, (s == null ? "" : s)); +return s; +}, "~S"); +Clazz_defineMethod(c$, "addBundles", +function(vwr, type, la_co_va, la_co, la){ +try { +var className = "J.translation." + type + "."; +if (la_co_va != null) this.addBundle(vwr, className, la_co_va); +if (la_co != null) this.addBundle(vwr, className, la_co); +if (la != null) this.addBundle(vwr, className, la); +} catch (exception) { +if (Clazz_exceptionOf(exception, Exception)){ +if (J.i18n.GT.allowDebug) JU.Logger.errorEx("Some exception occurred!", exception); +this.resources = null; +this.resourceCount = 0; +} else { +throw exception; +} +} +}, "JV.Viewer,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "addBundle", +function(vwr, className, name){ +var resource = J.i18n.Resource.getResource(vwr, className, name); +if (resource != null) { +if (this.resources == null) { +this.resources = new Array(8); +this.resourceCount = 0; +}this.resources[this.resourceCount] = resource; +this.resourceCount++; +if (J.i18n.GT.allowDebug) JU.Logger.debug("GT adding " + className); +}}, "JV.Viewer,~S,~S"); +Clazz_defineMethod(c$, "getString", +function(s){ +var trans = null; +if (this.doTranslate) { +for (var bundle = 0; bundle < this.resourceCount; bundle++) { +trans = this.resources[bundle].getString(s); +if (trans != null) { +s = trans; +break; +}} +if (this.resourceCount > 0 && trans == null && J.i18n.GT.allowDebug && JU.Logger.debugging) JU.Logger.debug("No trans, using default: " + s); +}if (trans == null) { +if (s.startsWith("[")) s = s.substring(s.indexOf("]") + 1); + else if (s.endsWith("]")) s = s.substring(0, s.indexOf("[")); +}return s; +}, "~S"); +c$.$ignoreApplicationBundle = false; +c$.$getTextWrapper = null; +c$.languageList = null; +c$.allowDebug = false; +c$.vwr = null; +c$.htLanguages = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.i18n"); +Clazz_load(null, "J.i18n.Language", ["J.i18n.GT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.code = null; +this.language = null; +this.nativeLanguage = null; +this.display = false; +Clazz_instantialize(this, arguments);}, J.i18n, "Language", null); +Clazz_makeConstructor(c$, +function(code, language, nativeLanguage, display){ +this.code = code; +this.language = language; +this.nativeLanguage = nativeLanguage; +this.display = display; +}, "~S,~S,~S,~B"); +c$.getLanguageList = Clazz_defineMethod(c$, "getLanguageList", +function(){ +return Clazz_newArray(-1, [ new J.i18n.Language("ar", J.i18n.GT.$("Arabic"), "العربية", false), new J.i18n.Language("ast", J.i18n.GT.$("Asturian"), "Asturian", false), new J.i18n.Language("az", J.i18n.GT.$("Azerbaijani"), "azÉ™rbaycan dili", false), new J.i18n.Language("bs", J.i18n.GT.$("Bosnian"), "bosanski jezik", false), new J.i18n.Language("ca", J.i18n.GT.$("Catalan"), "Català", true), new J.i18n.Language("cs", J.i18n.GT.$("Czech"), "ÄŒeÅ¡tina", true), new J.i18n.Language("da", J.i18n.GT.$("Danish"), "Dansk", true), new J.i18n.Language("de", J.i18n.GT.$("German"), "Deutsch", true), new J.i18n.Language("el", J.i18n.GT.$("Greek"), "Ελληνικά", false), new J.i18n.Language("en_AU", J.i18n.GT.$("Australian English"), "Australian English", false), new J.i18n.Language("en_GB", J.i18n.GT.$("British English"), "British English", true), new J.i18n.Language("en_US", J.i18n.GT.$("American English"), "American English", true), new J.i18n.Language("es", J.i18n.GT.$("Spanish"), "Español", true), new J.i18n.Language("et", J.i18n.GT.$("Estonian"), "Eesti", false), new J.i18n.Language("eu", J.i18n.GT.$("Basque"), "Euskara", true), new J.i18n.Language("fi", J.i18n.GT.$("Finnish"), "Suomi", true), new J.i18n.Language("fo", J.i18n.GT.$("Faroese"), "Føroyskt", false), new J.i18n.Language("fr", J.i18n.GT.$("French"), "Français", true), new J.i18n.Language("fy", J.i18n.GT.$("Frisian"), "Frysk", false), new J.i18n.Language("gl", J.i18n.GT.$("Galician"), "Galego", false), new J.i18n.Language("hr", J.i18n.GT.$("Croatian"), "Hrvatski", false), new J.i18n.Language("hu", J.i18n.GT.$("Hungarian"), "Magyar", true), new J.i18n.Language("hy", J.i18n.GT.$("Armenian"), "Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶", false), new J.i18n.Language("id", J.i18n.GT.$("Indonesian"), "Indonesia", true), new J.i18n.Language("it", J.i18n.GT.$("Italian"), "Italiano", true), new J.i18n.Language("ja", J.i18n.GT.$("Japanese"), "日本語", true), new J.i18n.Language("jv", J.i18n.GT.$("Javanese"), "Basa Jawa", false), new J.i18n.Language("ko", J.i18n.GT.$("Korean"), "한국어", true), new J.i18n.Language("ms", J.i18n.GT.$("Malay"), "Bahasa Melayu", true), new J.i18n.Language("nb", J.i18n.GT.$("Norwegian Bokmal"), "Norsk BokmÃ¥l", false), new J.i18n.Language("nl", J.i18n.GT.$("Dutch"), "Nederlands", true), new J.i18n.Language("oc", J.i18n.GT.$("Occitan"), "Occitan", false), new J.i18n.Language("pl", J.i18n.GT.$("Polish"), "Polski", false), new J.i18n.Language("pt", J.i18n.GT.$("Portuguese"), "Português", false), new J.i18n.Language("pt_BR", J.i18n.GT.$("Brazilian Portuguese"), "Português brasileiro", true), new J.i18n.Language("ru", J.i18n.GT.$("Russian"), "РуÑÑкий", true), new J.i18n.Language("sl", J.i18n.GT.$("Slovenian"), "SlovenÅ¡Äina", false), new J.i18n.Language("sr", J.i18n.GT.$("Serbian"), "ÑрпÑки језик", false), new J.i18n.Language("sv", J.i18n.GT.$("Swedish"), "Svenska", true), new J.i18n.Language("ta", J.i18n.GT.$("Tamil"), "தமிழà¯", false), new J.i18n.Language("te", J.i18n.GT.$("Telugu"), "తెలà±à°—à±", false), new J.i18n.Language("tr", J.i18n.GT.$("Turkish"), "Türkçe", true), new J.i18n.Language("ug", J.i18n.GT.$("Uyghur"), "UyÆ£urqÉ™", false), new J.i18n.Language("uk", J.i18n.GT.$("Ukrainian"), "УкраїнÑька", true), new J.i18n.Language("uz", J.i18n.GT.$("Uzbek"), "O'zbek", false), new J.i18n.Language("zh_CN", J.i18n.GT.$("Simplified Chinese"), "简体中文", true), new J.i18n.Language("zh_TW", J.i18n.GT.$("Traditional Chinese"), "ç¹é«”中文", true)]); +}); +c$.getSupported = Clazz_defineMethod(c$, "getSupported", +function(list, code){ +for (var i = list.length; --i >= 0; ) if (list[i].code.equalsIgnoreCase(code)) return list[i].code; + +for (var i = list.length; --i >= 0; ) if (list[i].code.startsWith(code)) return list[i].code; + +return null; +}, "~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.i18n"); +Clazz_load(null, "J.i18n.Resource", ["java.util.Hashtable", "JU.PT", "$.Rdr", "J.translation.PO", "JU.Logger", "JV.FileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.resource = null; +this.resourceMap = null; +Clazz_instantialize(this, arguments);}, J.i18n, "Resource", null); +Clazz_makeConstructor(c$, +function(resource, className){ +if (className == null) this.resourceMap = resource; + else this.resource = resource; +}, "~O,~S"); +c$.getResource = Clazz_defineMethod(c$, "getResource", +function(vwr, className, name){ +try { +var br = JV.FileManager.getBufferedReaderForResource(vwr, new J.translation.PO(), "J/translation/", (className.indexOf("Applet") >= 0 ? "JmolApplet/" : "Jmol/") + name + ".po"); +var data = new Array(1); +JU.Rdr.readAllAsString(br, 2147483647, false, data, 0); +var poData = data[0]; +return J.i18n.Resource.getResourceFromPO(poData); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +return null; +} else { +throw e; +} +} +}, "JV.Viewer,~S,~S"); +Clazz_defineMethod(c$, "getString", +function(string){ +try { +return (this.resource == null ? this.resourceMap.get(string) : this.resource.getString(string)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +c$.getLanguage = Clazz_defineMethod(c$, "getLanguage", +function(){ +var language = null; +{ +language = Jmol.featureDetection.getDefaultLanguage().replace(/-/g,'_'); +}return language; +}); +c$.getResourceFromPO = Clazz_defineMethod(c$, "getResourceFromPO", +function(data){ +if (data == null || data.length == 0) return null; +var map = new java.util.Hashtable(); +try { +var lines = JU.PT.split(data, "\n"); +var mode = 0; +var msgstr = ""; +var msgid = ""; +for (var i = 0; i < lines.length; i++) { +var line = lines[i]; +if (line.length <= 2) { +if (mode == 2 && msgstr.length != 0 && msgid.length != 0) map.put(msgid, msgstr); +mode = 0; +} else if (line.indexOf("msgid") == 0) { +mode = 1; +msgid = J.i18n.Resource.fix(line); +} else if (line.indexOf("msgstr") == 0) { +mode = 2; +msgstr = J.i18n.Resource.fix(line); +} else if (mode == 1) { +msgid += J.i18n.Resource.fix(line); +} else if (mode == 2) { +msgstr += J.i18n.Resource.fix(line); +}} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +JU.Logger.info(map.size() + " translations loaded"); +return (map.size() == 0 ? null : new J.i18n.Resource(map, null)); +}, "~S"); +c$.fix = Clazz_defineMethod(c$, "fix", +function(line){ +if (line.indexOf("\\\"") >= 0) line = JU.PT.rep(line, "\\\"", "\""); +return JU.PT.rep(line.substring(line.indexOf("\"") + 1, line.lastIndexOf("\"")), "\\n", "\n"); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.io"); +Clazz_load(null, "J.io.FileReader", ["java.io.BufferedReader", "JU.AU", "$.PT", "$.Rdr", "J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.fileNameIn = null; +this.fullPathNameIn = null; +this.nameAsGivenIn = null; +this.fileTypeIn = null; +this.atomSetCollection = null; +this.readerOrDocument = null; +this.htParams = null; +this.isAppend = false; +this.bytesOrStream = null; +Clazz_instantialize(this, arguments);}, J.io, "FileReader", null); +Clazz_makeConstructor(c$, +function(vwr, fileName, fullPathName, nameAsGiven, type, reader, htParams, isAppend){ +this.vwr = vwr; +this.fileNameIn = (fileName == null ? fullPathName : fileName); +this.fullPathNameIn = (fullPathName == null ? this.fileNameIn : fullPathName); +this.nameAsGivenIn = (nameAsGiven == null ? this.fileNameIn : nameAsGiven); +this.fileTypeIn = type; +if (reader != null) { +if (JU.AU.isAB(reader) || Clazz_instanceOf(reader,"java.io.BufferedInputStream")) { +this.bytesOrStream = reader; +reader = null; +} else if (Clazz_instanceOf(reader,"java.io.Reader") && !(Clazz_instanceOf(reader,"java.io.BufferedReader"))) { +reader = new java.io.BufferedReader(reader); +}}this.readerOrDocument = reader; +this.htParams = htParams; +this.isAppend = isAppend; +}, "JV.Viewer,~S,~S,~S,~S,~O,java.util.Map,~B"); +Clazz_defineMethod(c$, "run", +function(){ +if (!this.isAppend && this.vwr.displayLoadErrors) this.vwr.zap(false, true, false); +var errorMessage = null; +var t = null; +if (this.fullPathNameIn.contains("#_DOCACHE_")) this.readerOrDocument = J.io.FileReader.getChangeableReader(this.vwr, this.nameAsGivenIn, this.fullPathNameIn); +if (this.readerOrDocument == null) { +t = this.vwr.fm.getUnzippedReaderOrStreamFromName(this.fullPathNameIn, this.bytesOrStream, true, false, false, true, this.htParams); +if (t == null || (typeof(t)=='string')) { +errorMessage = (t == null ? "error opening:" + this.nameAsGivenIn : t); +if (!errorMessage.startsWith("NOTE:")) JU.Logger.error("file ERROR: " + this.fullPathNameIn + "\n" + errorMessage); +this.atomSetCollection = errorMessage; +return; +}if (Clazz_instanceOf(t,"java.io.BufferedReader")) { +this.readerOrDocument = t; +} else if (Clazz_instanceOf(t,"javajs.api.ZInputStream")) { +var name = this.fullPathNameIn; +var subFileList = null; +name = name.$replace('\\', '/'); +if (name.indexOf("|") >= 0 && !name.endsWith(".zip")) { +subFileList = JU.PT.split(name, "|"); +name = subFileList[0]; +}if (subFileList != null) this.htParams.put("subFileList", subFileList); +var zis = t; +var zipDirectory = this.vwr.fm.getZipDirectory(name, true, true); +this.atomSetCollection = t = this.vwr.fm.getJzu().getAtomSetCollectionOrBufferedReaderFromZip(this.vwr, zis, name, zipDirectory, this.htParams, 1, false); +try { +zis.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}if (Clazz_instanceOf(t,"java.io.BufferedInputStream")) this.readerOrDocument = (J.api.Interface.getInterface("JU.BinaryDocument", this.vwr, "file")).setStream(t, !this.htParams.containsKey("isLittleEndian")); +if (this.readerOrDocument != null) { +this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollectionReader(this.fullPathNameIn, this.fileTypeIn, this.readerOrDocument, this.htParams); +if (!((typeof(this.atomSetCollection)=='string'))) this.atomSetCollection = this.vwr.getModelAdapter().getAtomSetCollection(this.atomSetCollection); +try { +if (Clazz_instanceOf(this.readerOrDocument,"java.io.BufferedReader")) (this.readerOrDocument).close(); + else if (Clazz_instanceOf(this.readerOrDocument,"javajs.api.GenericBinaryDocument")) (this.readerOrDocument).close(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}if ((typeof(this.atomSetCollection)=='string')) return; +if (!this.isAppend && !this.vwr.displayLoadErrors) this.vwr.zap(false, true, false); +this.vwr.fm.setFileInfo( Clazz_newArray(-1, [this.fullPathNameIn, this.fileNameIn, this.nameAsGivenIn])); +}); +c$.getChangeableReader = Clazz_defineMethod(c$, "getChangeableReader", +function(vwr, nameAsGivenIn, fullPathNameIn){ +return JU.Rdr.getBR(vwr.getLigandModel(nameAsGivenIn, fullPathNameIn, "_file", null)); +}, "JV.Viewer,~S,~S"); +Clazz_defineMethod(c$, "getAtomSetCollection", +function(){ +return this.atomSetCollection; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.ShapeRenderer"], "J.render.BallsRenderer", ["J.shape.Shape"], function(){ +var c$ = Clazz_declareType(J.render, "BallsRenderer", J.render.ShapeRenderer); +Clazz_overrideMethod(c$, "render", +function(){ +var needTranslucent = false; +if (this.isExport || this.vwr.checkMotionRendering(1153433601)) { +var atoms = this.ms.at; +var colixes = (this.shape).colixes; +var bsOK = this.vwr.shm.bsRenderableAtoms; +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (atom.sD > 0 && (atom.shapeVisibilityFlags & this.myVisibilityFlag) != 0) { +if (this.g3d.setC(colixes == null ? atom.colixAtom : J.shape.Shape.getColix(colixes, i, atom))) { +this.g3d.drawAtom(atom, 0); +} else { +needTranslucent = true; +}}} +}return needTranslucent; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.ShapeRenderer", "JU.P3", "$.P3i", "$.V3"], "J.render.FontLineShapeRenderer", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.colixA = 0; +this.colixB = 0; +this.dotsOrDashes = false; +this.dashDots = null; +this.asLineOnly = false; +this.imageFontScaling = 0; +this.tickA = null; +this.tickB = null; +this.tickAs = null; +this.tickBs = null; +this.font3d = null; +this.pt0i = null; +this.pt2i = null; +this.s1 = null; +this.s2 = null; +this.pointT = null; +this.pointT2 = null; +this.pointT3 = null; +this.vectorT = null; +this.vectorT2 = null; +this.vectorT3 = null; +this.tickInfo = null; +this.draw000 = true; +this.width = 0; +this.endcap = 3; +this.pt0 = null; +this.pt1 = null; +Clazz_instantialize(this, arguments);}, J.render, "FontLineShapeRenderer", J.render.ShapeRenderer); +Clazz_prepareFields (c$, function(){ +this.pt0i = new JU.P3i(); +this.pt2i = new JU.P3i(); +this.s1 = new JU.P3i(); +this.s2 = new JU.P3i(); +this.pointT = new JU.P3(); +this.pointT2 = new JU.P3(); +this.pointT3 = new JU.P3(); +this.vectorT = new JU.V3(); +this.vectorT2 = new JU.V3(); +this.vectorT3 = new JU.V3(); +this.pt0 = new JU.P3(); +this.pt1 = new JU.P3(); +}); +Clazz_defineMethod(c$, "getDiameter", +function(z, mad10OrPixels){ +var diameter; +var isMad10 = (mad10OrPixels > 20); +switch (this.exportType) { +case 1: +diameter = (isMad10 ? mad10OrPixels : Clazz_doubleToInt(Math.floor(this.vwr.tm.unscaleToScreen(z, mad10OrPixels * 2 / 10) * 1000))); +break; +default: +if (isMad10) { +diameter = Clazz_floatToInt(this.vwr.tm.scaleToScreen(z, Clazz_doubleToInt(mad10OrPixels / 10))); +} else { +if (this.g3d.isAntialiased()) mad10OrPixels += mad10OrPixels; +diameter = mad10OrPixels; +}} +return diameter; +}, "~N,~N"); +Clazz_defineMethod(c$, "renderLine", +function(p0, p1, diameter, drawTicks){ +if (diameter < 0) this.g3d.drawDashedLineBits(8, 4, p0, p1); + else this.g3d.fillCylinderBits(this.endcap, (this.exportType == 1 ? -diameter : diameter), p0, p1); +if (!drawTicks || this.tickInfo == null) return; +this.checkTickTemps(); +this.tickAs.setT(p0); +this.tickBs.setT(p1); +this.drawTicks(diameter, true); +}, "JU.P3,JU.P3,~N,~B"); +Clazz_defineMethod(c$, "checkTickTemps", +function(){ +if (this.tickA == null) { +this.tickA = new JU.P3(); +this.tickB = new JU.P3(); +this.tickAs = new JU.P3(); +this.tickBs = new JU.P3(); +}}); +Clazz_defineMethod(c$, "drawTicks", +function(diameter, withLabels){ +if (Float.isNaN(this.tickInfo.first)) this.tickInfo.first = 0; +this.drawTicks2(this.tickInfo.ticks.x, 8, diameter, (!withLabels ? null : this.tickInfo.tickLabelFormats == null ? Clazz_newArray(-1, ["%0.2f"]) : this.tickInfo.tickLabelFormats)); +this.drawTicks2(this.tickInfo.ticks.y, 4, diameter, null); +this.drawTicks2(this.tickInfo.ticks.z, 2, diameter, null); +}, "~N,~B"); +Clazz_defineMethod(c$, "drawTicks2", +function(dx, length, diameter, formats){ +if (dx == 0) return; +if (this.g3d.isAntialiased()) length *= 2; +this.vectorT2.set(this.tickBs.x, this.tickBs.y, 0); +this.vectorT.set(this.tickAs.x, this.tickAs.y, 0); +this.vectorT2.sub(this.vectorT); +if (this.vectorT2.length() < 50) return; +var signFactor = this.tickInfo.signFactor; +this.vectorT.sub2(this.tickB, this.tickA); +var d0 = this.vectorT.length(); +if (this.tickInfo.scale != null) { +if (Float.isNaN(this.tickInfo.scale.x)) { +var a = this.vwr.getUnitCellInfo(0); +if (!Float.isNaN(a)) this.vectorT.set(this.vectorT.x / a, this.vectorT.y / this.vwr.getUnitCellInfo(1), this.vectorT.z / this.vwr.getUnitCellInfo(2)); +} else { +this.vectorT.set(this.vectorT.x * this.tickInfo.scale.x, this.vectorT.y * this.tickInfo.scale.y, this.vectorT.z * this.tickInfo.scale.z); +}}var d = this.vectorT.length() + 0.0001 * dx; +if (d < dx) return; +var f = dx / d * d0 / d; +this.vectorT.scale(f); +var dz = (this.tickBs.z - this.tickAs.z) / (d / dx); +d += this.tickInfo.first; +var p = (Clazz_doubleToInt(Math.floor(this.tickInfo.first / dx))) * dx - this.tickInfo.first; +this.pointT.scaleAdd2(p / dx, this.vectorT, this.tickA); +p += this.tickInfo.first; +var z = this.tickAs.z; +if (diameter < 0) diameter = 1; +this.vectorT2.set(-this.vectorT2.y, this.vectorT2.x, 0); +this.vectorT2.scale(length / this.vectorT2.length()); +var ptRef = this.tickInfo.reference; +if (ptRef == null) { +this.pointT3.setT(this.vwr.getBoundBoxCenter()); +if (this.vwr.g.axesMode == 603979809) { +this.pointT3.add3(1, 1, 1); +}} else { +this.pointT3.setT(ptRef); +}this.tm.transformPtScr(this.pointT3, this.pt2i); +var horizontal = (Math.abs(this.vectorT2.x / this.vectorT2.y) < 0.2); +var centerX = horizontal; +var centerY = !horizontal; +var rightJustify = !centerX && (this.vectorT2.x < 0); +var drawLabel = (formats != null && formats.length > 0); +var x; +var y; +var val = new Array(1); +var i = (this.draw000 ? 0 : -1); +while (p < d) { +if (p >= this.tickInfo.first) { +this.pointT2.setT(this.pointT); +this.tm.transformPt3f(this.pointT2, this.pointT2); +this.drawLine(Clazz_doubleToInt(Math.floor(this.pointT2.x)), Clazz_doubleToInt(Math.floor(this.pointT2.y)), Clazz_floatToInt(z), (x = Clazz_doubleToInt(Math.floor(this.pointT2.x + this.vectorT2.x))), (y = Clazz_doubleToInt(Math.floor(this.pointT2.y + this.vectorT2.y))), Clazz_floatToInt(z), diameter); +if (drawLabel && (this.draw000 || p != 0)) { +val[0] = Float.$valueOf((p == 0 ? 0 : p * signFactor)); +var s = JU.PT.sprintf(formats[i % formats.length], "f", val); +this.drawString(x, y, Clazz_floatToInt(z), 4, rightJustify, centerX, centerY, Clazz_doubleToInt(Math.floor(this.pointT2.y)), s); +}}this.pointT.add(this.vectorT); +p += dx; +z += dz; +i++; +} +}, "~N,~N,~N,~A"); +Clazz_defineMethod(c$, "drawLine", +function(x1, y1, z1, x2, y2, z2, diameter){ +return this.drawLine2(this.g3d, x1, y1, z1, x2, y2, z2, diameter); +}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawLine2", +function(g3d, x1, y1, z1, x2, y2, z2, diameter){ +this.pt0.set(x1, y1, z1); +this.pt1.set(x2, y2, z2); +if (!this.dotsOrDashes) { +if (diameter < 0) { +g3d.drawDashedLineBits(8, 4, this.pt0, this.pt1); +return 1; +}g3d.fillCylinderBits(2, diameter, this.pt0, this.pt1); +} else if (this.dashDots != null) { +var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +J.render.FontLineShapeRenderer.drawDashedCylinder(g3d, x1, y1, z1, x2, y2, z2, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); +}return Clazz_doubleToInt((diameter + 1) / 2); +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawString", +function(x, y, z, radius, rightJustify, centerX, centerY, yRef, sVal){ +if (sVal == null) return; +var width = this.font3d.stringWidth(sVal); +var height = this.font3d.getAscent(); +var xT = x; +if (rightJustify) xT -= Clazz_doubleToInt(radius / 2) + 2 + width; + else if (centerX) xT -= Clazz_doubleToInt(radius / 2) + 2 + Clazz_doubleToInt(width / 2); + else xT += Clazz_doubleToInt(radius / 2) + 2; +var yT = y; +if (centerY) yT += Clazz_doubleToInt(height / 2); + else if (yRef == 0 || yRef < y) yT += height; + else yT -= Clazz_doubleToInt(radius / 2); +var zT = z - radius - 2; +if (zT < 1) zT = 1; +this.g3d.drawString(sVal, this.font3d, xT, yT, zT, zT, 0); +}, "~N,~N,~N,~N,~B,~B,~B,~N,~S"); +c$.drawDashedCylinder = Clazz_defineMethod(c$, "drawDashedCylinder", +function(g3d, xA, yA, zA, xB, yB, zB, array, width, colixA, colixB, renderD, asLineOnly, s1){ +if (array == null || width < 0) return; +var f = array[0]; +var dx = xB - xA; +var dy = yB - yA; +var dz = zB - zA; +var n = 0; +var isNdots = (array === J.render.FontLineShapeRenderer.ndots); +var isDots = (isNdots || array === J.render.FontLineShapeRenderer.sixdots); +if (isDots) { +if (s1 == null) s1 = new JU.P3i(); +var d2 = (dx * dx + dy * dy) / (width * width); +if (isNdots) { +f = (Math.sqrt(d2) / 1.5); +n = Clazz_floatToInt(f) + 2; +} else if (d2 < 8) { +array = J.render.FontLineShapeRenderer.twodots; +} else if (d2 < 32) { +array = J.render.FontLineShapeRenderer.fourdots; +}}var ptS = array[1]; +var ptE = array[2]; +var colixS = colixA; +var colixE = (ptE == 0 ? colixB : colixA); +if (n == 0) n = array.length; +for (var i = 0, pt = 3; pt < n; pt++) { +i = (isNdots ? i + 1 : array[pt]); +var xS = Clazz_doubleToInt(Math.floor(xA + dx * i / f)); +var yS = Clazz_doubleToInt(Math.floor(yA + dy * i / f)); +var zS = Clazz_doubleToInt(Math.floor(zA + dz * i / f)); +if (isDots) { +s1.set(xS, yS, zS); +if (pt == ptS) g3d.setC(colixA); + else if (pt == ptE) g3d.setC(colixB); +g3d.fillSphereI(width, s1); +continue; +}if (pt == ptS) colixS = colixB; +i = array[++pt]; +if (pt == ptE) colixE = colixB; +var xE = Clazz_doubleToInt(Math.floor(xA + dx * i / f)); +var yE = Clazz_doubleToInt(Math.floor(yA + dy * i / f)); +var zE = Clazz_doubleToInt(Math.floor(zA + dz * i / f)); +J.render.FontLineShapeRenderer.fillCylinder(g3d, colixS, colixE, 2, xS, yS, zS, xE, yE, zE, renderD, asLineOnly); +} +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~A,~N,~N,~N,~N,~B,JU.P3i"); +c$.fillCylinder = Clazz_defineMethod(c$, "fillCylinder", +function(g3d, colixA, colixB, endcaps, xA, yA, zA, xB, yB, zB, diameter, asLineOnly){ +if (asLineOnly) g3d.drawLine(colixA, colixB, xA, yA, zA, xB, yB, zB); + else g3d.fillCylinderXYZ(colixA, colixB, endcaps, diameter, xA, yA, zA, xB, yB, zB); +}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~B"); +c$.dashes = Clazz_newIntArray(-1, [12, 0, 0, 2, 5, 7, 10]); +c$.hDashes = Clazz_newIntArray(-1, [10, 7, 6, 1, 3, 4, 6, 7, 9]); +c$.ndots = Clazz_newIntArray(-1, [0, 3, 1000]); +c$.sixdots = Clazz_newIntArray(-1, [12, 3, 6, 1, 3, 5, 7, 9, 11]); +c$.fourdots = Clazz_newIntArray(-1, [13, 3, 5, 2, 5, 8, 11]); +c$.twodots = Clazz_newIntArray(-1, [12, 3, 4, 3, 9]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.ShapeRenderer"], "J.render.FrankRenderer", ["J.shape.Frank", "JV.Viewer"], function(){ +var c$ = Clazz_declareType(J.render, "FrankRenderer", J.render.ShapeRenderer); +Clazz_overrideMethod(c$, "render", +function(){ +var frank = this.shape; +var allowKeys = this.vwr.getBooleanProperty("allowKeyStrokes"); +var modelKitMode = this.vwr.getBoolean(603983903); +this.colix = (modelKitMode ? 20 : this.vwr.isSignedApplet ? (allowKeys || (JV.Viewer.isJS || JV.Viewer.isSwingJS) && !this.vwr.isWebGL ? 5 : 10) : allowKeys ? 7 : 12); +if (this.isExport || !this.vwr.getShowFrank() || !this.g3d.setC(this.colix)) return false; +if (this.vwr.frankOn && !this.vwr.noFrankEcho) return this.vwr.noFrankEcho; +this.vwr.noFrankEcho = true; +var imageFontScaling = this.vwr.imageFontScaling; +frank.getFont(imageFontScaling); +var dx = Clazz_floatToInt(frank.frankWidth + 4 * imageFontScaling); +var dy = frank.frankDescent; +this.g3d.drawStringNoSlab(J.shape.Frank.frankString, frank.font3d, this.vwr.gdata.width - dx, this.vwr.gdata.height - dy, 0, 0); +var kit = (modelKitMode ? this.vwr.getModelkit(false) : null); +if (modelKitMode && !kit.isHidden()) { +this.g3d.setC(12); +var w = 10; +var h = 26; +this.g3d.fillTextRect(0, 0, 1, 0, w, h * 4); +var active = kit.getActiveMenu(); +if (active != null) { +if ("atomMenu".equals(active)) { +this.g3d.setC(21); +this.g3d.fillTextRect(0, 0, 0, 0, w, h); +} else if ("bondMenu".equals(active)) { +this.g3d.setC(7); +this.g3d.fillTextRect(0, h, 0, 0, w, h); +} else if ("xtalMenu".equals(active)) { +this.g3d.setC(8); +this.g3d.fillTextRect(0, h << 1, 0, 0, w, h); +}}}return false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.api.JmolRepaintManager", "JU.BS"], "J.render.RepaintManager", ["J.api.Interface", "JU.Logger", "JV.JC", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.shapeManager = null; +this.renderers = null; +this.bsTranslucent = null; +this.holdRepaint = 0; +this.repaintPending = false; +Clazz_instantialize(this, arguments);}, J.render, "RepaintManager", null, J.api.JmolRepaintManager); +Clazz_prepareFields (c$, function(){ +this.bsTranslucent = JU.BS.newN(37); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_overrideMethod(c$, "set", +function(vwr, shapeManager){ +this.vwr = vwr; +this.shapeManager = shapeManager; +}, "JV.Viewer,JV.ShapeManager"); +Clazz_overrideMethod(c$, "isRepaintPending", +function(){ +return this.repaintPending; +}); +Clazz_overrideMethod(c$, "pushHoldRepaint", +function(why){ +++this.holdRepaint; +}, "~S"); +Clazz_overrideMethod(c$, "popHoldRepaint", +function(andRepaint, why){ +if (why != null && why.startsWith("CLEAR HOLD")) { +this.holdRepaint = 0; +andRepaint = true; +}--this.holdRepaint; +if (this.holdRepaint <= 0) { +this.holdRepaint = 0; +if (andRepaint) { +this.repaintPending = true; +this.repaintNow(why); +}}}, "~B,~S"); +Clazz_overrideMethod(c$, "requestRepaintAndWait", +function(why){ +var jmol = null; +if (JV.Viewer.isJS && !JV.Viewer.isSwingJS) { +{ +jmol = (self.Jmol && Jmol.repaint ? Jmol : null) +}}if (jmol == null) { +try { +this.repaintNow(why); +if (!JV.Viewer.isJS) this.wait(this.vwr.g.repaintWaitMs); +if (this.repaintPending) { +JU.Logger.error("repaintManager requestRepaintAndWait timeout"); +this.repaintDone(); +}} catch (e) { +if (Clazz_exceptionOf(e,"InterruptedException")){ +System.out.println("repaintManager requestRepaintAndWait interrupted thread=" + Thread.currentThread().getName()); +} else { +throw e; +} +} +} else { +jmol.repaint(this.vwr.html5Applet, false); +this.repaintDone(); +}}, "~S"); +Clazz_overrideMethod(c$, "repaintIfReady", +function(why){ +if (this.repaintPending) return false; +this.repaintPending = true; +if (this.holdRepaint == 0) this.repaintNow(why); +return true; +}, "~S"); +Clazz_defineMethod(c$, "repaintNow", +function(why){ +if (!this.vwr.haveDisplay) return; +this.vwr.apiPlatform.repaint(this.vwr.display); +}, "~S"); +Clazz_overrideMethod(c$, "repaintDone", +function(){ +this.repaintPending = false; +{ +}}); +Clazz_overrideMethod(c$, "clear", +function(iShape){ +if (this.renderers == null) return; +if (iShape >= 0) this.renderers[iShape] = null; + else for (var i = 0; i < 37; ++i) this.renderers[i] = null; + +}, "~N"); +Clazz_defineMethod(c$, "getRenderer", +function(shapeID){ +if (this.renderers[shapeID] != null) return this.renderers[shapeID]; +var className = JV.JC.getShapeClassName(shapeID, true) + "Renderer"; +var renderer; +if ((renderer = J.api.Interface.getInterface(className, this.vwr, "render")) == null) return null; +renderer.setViewerG3dShapeID(this.vwr, shapeID); +return this.renderers[shapeID] = renderer; +}, "~N"); +Clazz_overrideMethod(c$, "render", +function(gdata, modelSet, isFirstPass, navMinMax){ +var g3d = gdata; +if (this.renderers == null) this.renderers = new Array(37); +this.getAllRenderers(); +try { +var logTime = this.vwr.getBoolean(603979934); +g3d.renderBackground(null); +if (isFirstPass) { +this.bsTranslucent.clearAll(); +if (navMinMax != null) g3d.renderCrossHairs(navMinMax, this.vwr.getScreenWidth(), this.vwr.getScreenHeight(), this.vwr.tm.getNavigationOffset(), this.vwr.tm.navigationDepthPercent); +var band = this.vwr.getRubberBandSelection(); +if (band != null && g3d.setC(this.vwr.cm.colixRubberband)) g3d.drawRect(band.x, band.y, 0, 0, band.width, band.height); +this.vwr.noFrankEcho = true; +}var msg = null; +for (var i = 0; i < 37 && gdata.currentlyRendering; ++i) { +var shape = this.shapeManager.getShape(i); +if (shape == null) continue; +if (logTime) { +msg = "rendering " + JV.JC.getShapeClassName(i, false); +JU.Logger.startTimer(msg); +}if ((isFirstPass || this.bsTranslucent.get(i)) && this.getRenderer(i).renderShape(g3d, modelSet, shape)) this.bsTranslucent.set(i); +if (logTime) JU.Logger.checkTimer(msg, false); +} +g3d.renderAllStrings(null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +if (this.vwr.async && "Interface".equals(e.getMessage())) throw new NullPointerException(); +JU.Logger.error("rendering error? " + e); +} else { +throw e; +} +} +}, "JU.GData,JM.ModelSet,~B,~A"); +Clazz_defineMethod(c$, "getAllRenderers", +function(){ +var isOK = true; +for (var i = 0; i < 37; ++i) { +if (this.shapeManager.getShape(i) == null || this.getRenderer(i) != null) continue; +isOK = this.repaintPending = !this.vwr.async; +} +if (!isOK) throw new NullPointerException(); +}); +Clazz_overrideMethod(c$, "renderExport", +function(gdata, modelSet, params){ +var isOK; +this.shapeManager.finalizeAtoms(null, true); +var exporter3D = this.vwr.initializeExporter(params); +isOK = (exporter3D != null); +if (!isOK) { +JU.Logger.error("Cannot export " + params.get("type")); +return null; +}if (this.renderers == null) this.renderers = new Array(37); +this.getAllRenderers(); +var msg = null; +try { +var logTime = this.vwr.getBoolean(603979934); +exporter3D.renderBackground(exporter3D); +for (var i = 0; i < 37; ++i) { +var shape = this.shapeManager.getShape(i); +if (shape == null) continue; +if (logTime) { +msg = "rendering " + JV.JC.getShapeClassName(i, false); +JU.Logger.startTimer(msg); +}this.getRenderer(i).renderShape(exporter3D, modelSet, shape); +if (logTime) JU.Logger.checkTimer(msg, false); +} +exporter3D.renderAllStrings(exporter3D); +msg = exporter3D.finalizeOutput(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +JU.Logger.error("rendering error? " + e); +} else { +throw e; +} +} +return msg; +}, "JU.GData,JM.ModelSet,java.util.Map"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(null, "J.render.ShapeRenderer", ["JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.tm = null; +this.g3d = null; +this.ms = null; +this.shape = null; +this.myVisibilityFlag = 0; +this.shapeID = 0; +this.colix = 0; +this.mad = 0; +this.exportType = 0; +this.isExport = false; +Clazz_instantialize(this, arguments);}, J.render, "ShapeRenderer", null); +Clazz_defineMethod(c$, "initRenderer", +function(){ +}); +Clazz_defineMethod(c$, "setViewerG3dShapeID", +function(vwr, shapeID){ +this.vwr = vwr; +this.tm = vwr.tm; +this.shapeID = shapeID; +this.myVisibilityFlag = JV.JC.getShapeVisibilityFlag(shapeID); +this.initRenderer(); +}, "JV.Viewer,~N"); +Clazz_defineMethod(c$, "renderShape", +function(g3d, modelSet, shape){ +this.setup(g3d, modelSet, shape); +var needsTranslucent = this.render(); +this.exportType = 0; +this.isExport = false; +return needsTranslucent; +}, "J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape"); +Clazz_defineMethod(c$, "setup", +function(g3d, modelSet, shape){ +this.g3d = g3d; +this.ms = modelSet; +this.shape = shape; +this.exportType = g3d.getExportType(); +this.isExport = (this.exportType != 0); +}, "J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape"); +Clazz_defineMethod(c$, "isVisibleForMe", +function(a){ +return a.isVisible(this.myVisibilityFlag | 9); +}, "JM.Atom"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.FontLineShapeRenderer", "JU.BS", "$.P3", "$.V3"], "J.render.SticksRenderer", ["JU.A4", "$.M3", "J.c.PAL", "JU.C", "$.Edge"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.showMultipleBonds = false; +this.multipleBondSpacing = 0; +this.multipleBondRadiusFactor = 0; +this.bondsPerp = false; +this.useBananas = false; +this.modeMultipleBond = 0; +this.isCartesian = false; +this.endcaps = 0; +this.ssbondsBackbone = false; +this.hbondsBackbone = false; +this.bondsBackbone = false; +this.hbondsSolid = false; +this.a = null; +this.b = null; +this.bond = null; +this.xA = 0; +this.yA = 0; +this.zA = 0; +this.xB = 0; +this.yB = 0; +this.zB = 0; +this.dx = 0; +this.dy = 0; +this.mag2d = 0; +this.bondOrder = 0; +this.wireframeOnly = false; +this.isAntialiased = false; +this.slabbing = false; +this.slabByAtom = false; +this.x = null; +this.y = null; +this.z = null; +this.p1 = null; +this.p2 = null; +this.bsForPass2 = null; +this.isPass2 = false; +this.xAxis1 = 0; +this.yAxis1 = 0; +this.xAxis2 = 0; +this.yAxis2 = 0; +this.dxStep = 0; +this.dyStep = 0; +this.rot = null; +this.a4 = null; +Clazz_instantialize(this, arguments);}, J.render, "SticksRenderer", J.render.FontLineShapeRenderer); +Clazz_prepareFields (c$, function(){ +this.x = new JU.V3(); +this.y = new JU.V3(); +this.z = new JU.V3(); +this.p1 = new JU.P3(); +this.p2 = new JU.P3(); +this.bsForPass2 = JU.BS.newN(64); +}); +Clazz_overrideMethod(c$, "render", +function(){ +var bonds = this.ms.bo; +if (bonds == null) return false; +this.isPass2 = this.vwr.gdata.isPass2; +if (!this.isPass2) this.bsForPass2.clearAll(); +this.slabbing = this.tm.slabEnabled; +this.slabByAtom = this.vwr.getBoolean(603979939); +this.endcaps = 3; +this.dashDots = (this.vwr.getBoolean(603979893) ? J.render.FontLineShapeRenderer.sixdots : J.render.FontLineShapeRenderer.dashes); +this.isCartesian = (this.exportType == 1); +this.getMultipleBondSettings(false); +this.wireframeOnly = !this.vwr.checkMotionRendering(1677721602); +this.ssbondsBackbone = this.vwr.getBoolean(603979952); +this.hbondsBackbone = this.vwr.getBoolean(603979852); +this.bondsBackbone = new Boolean (this.hbondsBackbone | this.ssbondsBackbone).valueOf(); +this.hbondsSolid = this.vwr.getBoolean(603979854); +this.isAntialiased = this.g3d.isAntialiased(); +var needTranslucent = false; +if (this.isPass2) { +if (!this.isExport) for (var i = this.bsForPass2.nextSetBit(0); i >= 0; i = this.bsForPass2.nextSetBit(i + 1)) { +this.bond = bonds[i]; +this.renderBond(); +} +} else { +for (var i = this.ms.bondCount; --i >= 0; ) { +this.bond = bonds[i]; +if ((this.bond.shapeVisibilityFlags & this.myVisibilityFlag) != 0 && this.renderBond()) { +needTranslucent = true; +this.bsForPass2.set(i); +}} +}return needTranslucent; +}); +Clazz_defineMethod(c$, "getMultipleBondSettings", +function(isPymol){ +this.useBananas = (this.vwr.getBoolean(603979886) && !isPymol); +this.multipleBondSpacing = (isPymol ? 0.15 : this.vwr.getFloat(570425370)); +this.multipleBondRadiusFactor = (isPymol ? 0.4 : this.vwr.getFloat(570425369)); +this.bondsPerp = (this.useBananas || this.multipleBondSpacing > 0 && this.multipleBondRadiusFactor < 0); +if (this.useBananas) this.multipleBondSpacing = (this.multipleBondSpacing < 0 ? -this.multipleBondSpacing * 0.4 : this.multipleBondSpacing); +this.multipleBondRadiusFactor = Math.abs(this.multipleBondRadiusFactor); +if (this.multipleBondSpacing == 0 && this.isCartesian) this.multipleBondSpacing = 0.2; +this.modeMultipleBond = this.vwr.g.modeMultipleBond; +this.showMultipleBonds = (this.multipleBondSpacing != 0 && this.modeMultipleBond != 0 && this.vwr.getBoolean(603979928)); +}, "~B"); +Clazz_defineMethod(c$, "renderBond", +function(){ +var atomA0; +var atomB0; +this.a = atomA0 = this.bond.atom1; +this.b = atomB0 = this.bond.atom2; +var order = this.bond.order & 131071; +if (this.bondsBackbone) { +if (this.ssbondsBackbone && (order & 256) != 0) { +this.a = this.a.group.getLeadAtomOr(this.a); +this.b = this.b.group.getLeadAtomOr(this.b); +} else if (this.hbondsBackbone && JU.Edge.isOrderH(order)) { +this.a = this.a.group.getLeadAtomOr(this.a); +this.b = this.b.group.getLeadAtomOr(this.b); +}}if (!this.isPass2 && (!this.a.isVisible(9) || !this.b.isVisible(9) || !this.g3d.isInDisplayRange(this.a.sX, this.a.sY) || !this.g3d.isInDisplayRange(this.b.sX, this.b.sY))) return false; +if (this.slabbing) { +var ba = this.vwr.gdata.isClippedZ(this.a.sZ); +if (ba && this.vwr.gdata.isClippedZ(this.b.sZ) || this.slabByAtom && (ba || this.vwr.gdata.isClippedZ(this.b.sZ))) return false; +}this.zA = this.a.sZ; +this.zB = this.b.sZ; +if (this.zA == 1 || this.zB == 1) return false; +this.colixA = atomA0.colixAtom; +this.colixB = atomB0.colixAtom; +if (((this.colix = this.bond.colix) & -30721) == 2) { +this.colix = (this.colix & 30720); +this.colixA = JU.C.getColixInherited((this.colix | this.vwr.cm.getColixAtomPalette(atomA0, J.c.PAL.CPK.id)), this.colixA); +this.colixB = JU.C.getColixInherited((this.colix | this.vwr.cm.getColixAtomPalette(atomB0, J.c.PAL.CPK.id)), this.colixB); +} else { +this.colixA = JU.C.getColixInherited(this.colix, this.colixA); +this.colixB = JU.C.getColixInherited(this.colix, this.colixB); +}var needTranslucent = false; +if (!this.isExport && !this.isPass2) { +var doA = !JU.C.renderPass2(this.colixA); +var doB = !JU.C.renderPass2(this.colixB); +if (!doA || !doB) { +if (!doA && !doB && !needTranslucent) { +this.g3d.setC(!doA ? this.colixA : this.colixB); +return true; +}needTranslucent = true; +}}this.bondOrder = order & 131071; +if ((this.bondOrder & 224) == 0) { +if ((this.bondOrder & 256) != 0) this.bondOrder &= -257; +if ((this.bondOrder & 1023) != 0) { +if (!this.showMultipleBonds || (this.modeMultipleBond == 2 && this.mad > 500) || (this.bondOrder & 98304) == 65536) { +this.bondOrder = 1; +}}}var mask = 0; +switch (this.bondOrder) { +case 1025: +case 1041: +case 1057: +this.bondOrder = 1; +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +break; +case 17: +case 513: +this.bondOrder = 1; +mask = (order == 513 ? 0 : 1); +break; +case 515: +case 514: +this.bondOrder = 2; +mask = (order == 515 ? this.getAromaticDottedBondMask() : 0); +break; +default: +if ((this.bondOrder & 224) != 0) { +this.bondOrder = JU.Edge.getPartialBondOrder(order); +mask = JU.Edge.getPartialBondDotted(order); +} else if (JU.Edge.isOrderH(this.bondOrder)) { +this.bondOrder = 1; +if (!this.hbondsSolid) mask = -1; +} else if (this.bondOrder == 32768) { +this.bondOrder = 1; +} else if ((this.bondOrder & 98304) == 98304) { +this.getMultipleBondSettings(true); +this.bondOrder &= 3; +mask = -2; +}} +this.xA = this.a.sX; +this.yA = this.a.sY; +this.xB = this.b.sX; +this.yB = this.b.sY; +this.mad = this.bond.mad; +if (this.multipleBondRadiusFactor > 0 && this.bondOrder > 1) this.mad *= this.multipleBondRadiusFactor; +this.dx = this.xB - this.xA; +this.dy = this.yB - this.yA; +this.width = Clazz_floatToInt(this.vwr.tm.scaleToScreen(Clazz_doubleToInt((this.zA + this.zB) / 2), this.mad)); +if (this.wireframeOnly && this.width > 0) this.width = 1; +if (!this.isCartesian) { +this.asLineOnly = (this.width <= 1); +if (this.asLineOnly && (this.isAntialiased)) { +this.width = 3; +this.asLineOnly = false; +}}var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +switch (mask) { +case -2: +this.drawBond(0); +this.getMultipleBondSettings(false); +break; +case -1: +J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, J.render.FontLineShapeRenderer.hDashes, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); +break; +default: +switch (this.bondOrder) { +case 4: +{ +this.bondOrder = 2; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz_doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.30; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.drawBond(mask >> 2); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +case 5: +{ +this.bondOrder = 3; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz_doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.20; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.multipleBondSpacing *= 1.5; +this.drawBond(mask >> 3); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +case 6: +{ +this.bondOrder = 4; +var f = this.multipleBondRadiusFactor; +if (f == 0 && this.width > 1) this.width = Clazz_doubleToInt(this.width * 0.5); +var m = this.multipleBondSpacing; +if (m < 0) this.multipleBondSpacing = 0.15; +this.drawBond(mask); +this.bondsPerp = !this.bondsPerp; +this.bondOrder = 2; +this.multipleBondSpacing *= 1.5; +this.drawBond(mask >> 4); +this.bondsPerp = !this.bondsPerp; +this.multipleBondSpacing = m; +}break; +default: +this.drawBond(mask); +} +break; +} +return needTranslucent; +}); +Clazz_defineMethod(c$, "drawBond", +function(dottedMask){ +var isDashed = (dottedMask & 1) != 0; +var endcaps = ((this.colixA & 30720) == 16384 || (this.colixB & 30720) == 16384 ? 2 : this.endcaps); +if (this.isCartesian && this.bondOrder == 1 && !isDashed) { +this.g3d.drawBond(this.a, this.b, this.colixA, this.colixB, endcaps, this.mad, -1); +return; +}var isEndOn = (this.dx == 0 && this.dy == 0); +if (isEndOn && this.asLineOnly && !this.isCartesian) return; +var renderD = (!this.isExport || this.mad == 1 ? this.width : this.mad); +var doFixedSpacing = (this.bondOrder > 1 && this.multipleBondSpacing > 0); +var isPiBonded = doFixedSpacing && (this.vwr.getHybridizationAndAxes(this.a.i, this.z, this.x, "pz") != null || this.vwr.getHybridizationAndAxes(this.b.i, this.z, this.x, "pz") != null) && !Float.isNaN(this.x.x); +if (isEndOn && !doFixedSpacing) { +var space = Clazz_doubleToInt(this.width / 8) + 3; +var step = this.width + space; +var y = this.yA - Clazz_doubleToInt((this.bondOrder - 1) * step / 2); +do { +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xA, y, this.zA, this.xB, y, this.zB, renderD, this.asLineOnly); +y += step; +} while (--this.bondOrder > 0); +return; +}if (this.bondOrder == 1) { +if (isDashed) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xA, this.yA, this.zA, this.xB, this.yB, this.zB, renderD, this.asLineOnly); +return; +}if (doFixedSpacing) { +if (!isPiBonded) this.z.setT(JU.P3.getUnlikely()); +this.x.sub2(this.b, this.a); +this.y.cross(this.x, this.z); +this.y.normalize(); +if (Float.isNaN(this.y.x)) { +this.z.setT(JU.P3.getUnlikely()); +this.y.cross(this.x, this.z); +this.y.cross(this.y, this.x); +this.y.normalize(); +}if (this.bondsPerp) this.y.cross(this.y, this.x); +this.y.scale(this.multipleBondSpacing); +this.x.setT(this.y); +this.x.scale((this.bondOrder - 1) / 2); +if (this.useBananas) { +this.drawBanana(this.a, this.b, this.x, 0); +switch (this.bondOrder) { +case 4: +this.drawBanana(this.a, this.b, this.x, 90); +this.drawBanana(this.a, this.b, this.x, -90); +case 2: +default: +this.drawBanana(this.a, this.b, this.x, 180); +break; +case 3: +this.drawBanana(this.a, this.b, this.x, 120); +this.drawBanana(this.a, this.b, this.x, -120); +break; +} +return; +}this.p1.sub2(this.a, this.x); +this.p2.sub2(this.b, this.x); +while (true) { +if (this.isCartesian) { +this.g3d.drawBond(this.p1, this.p2, this.colixA, this.colixB, endcaps, this.mad, -2); +} else { +this.tm.transformPtScr(this.p1, this.s1); +this.tm.transformPtScr(this.p2, this.s2); +if (isDashed) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.s1.x, this.s1.y, this.s1.z, this.s2.x, this.s2.y, this.s2.z, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.s1.x, this.s1.y, this.s1.z, this.s2.x, this.s2.y, this.s2.z, renderD, this.asLineOnly); +}dottedMask >>= 1; +isDashed = (dottedMask & 1) != 0; +if (--this.bondOrder <= 0) break; +this.p1.add(this.y); +this.p2.add(this.y); +this.stepAxisCoordinates(); +} +return; +}var dxB = this.dx * this.dx; +var dyB = this.dy * this.dy; +this.mag2d = Math.round(Math.sqrt(dxB + dyB)); +this.resetAxisCoordinates(); +if (this.isCartesian && this.bondOrder == 3) { +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +this.stepAxisCoordinates(); +this.x.sub2(this.b, this.a); +this.x.scale(0.05); +this.p1.sub2(this.a, this.x); +this.p2.add2(this.b, this.x); +this.g3d.drawBond(this.p1, this.p2, this.colixA, this.colixB, endcaps, this.mad, -2); +this.stepAxisCoordinates(); +J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +return; +}while (true) { +if ((dottedMask & 1) != 0) J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, this.dashDots, this.width, this.colixA, this.colixB, renderD, this.asLineOnly, this.s1); + else J.render.FontLineShapeRenderer.fillCylinder(this.g3d, this.colixA, this.colixB, endcaps, this.xAxis1, this.yAxis1, this.zA, this.xAxis2, this.yAxis2, this.zB, renderD, this.asLineOnly); +dottedMask >>= 1; +if (--this.bondOrder <= 0) break; +this.stepAxisCoordinates(); +} +}, "~N"); +Clazz_defineMethod(c$, "resetAxisCoordinates", +function(){ +var space = this.mag2d >> 3; +if (this.multipleBondSpacing != -1 && this.multipleBondSpacing < 0) space *= -this.multipleBondSpacing; +var step = this.width + space; +this.dxStep = Clazz_doubleToInt(step * this.dy / this.mag2d); +this.dyStep = Clazz_doubleToInt(step * -this.dx / this.mag2d); +this.xAxis1 = this.xA; +this.yAxis1 = this.yA; +this.xAxis2 = this.xB; +this.yAxis2 = this.yB; +var f = (this.bondOrder - 1); +this.xAxis1 -= Clazz_doubleToInt(this.dxStep * f / 2); +this.yAxis1 -= Clazz_doubleToInt(this.dyStep * f / 2); +this.xAxis2 -= Clazz_doubleToInt(this.dxStep * f / 2); +this.yAxis2 -= Clazz_doubleToInt(this.dyStep * f / 2); +}); +Clazz_defineMethod(c$, "stepAxisCoordinates", +function(){ +this.xAxis1 += this.dxStep; +this.yAxis1 += this.dyStep; +this.xAxis2 += this.dxStep; +this.yAxis2 += this.dyStep; +}); +Clazz_defineMethod(c$, "getAromaticDottedBondMask", +function(){ +var atomC = this.b.findAromaticNeighbor(this.a.i); +if (atomC == null) return 1; +var dxAC = atomC.sX - this.xA; +var dyAC = atomC.sY - this.yA; +return ((this.dx * dyAC - this.dy * dxAC) < 0 ? 2 : 1); +}); +Clazz_defineMethod(c$, "drawBanana", +function(a, b, x, deg){ +this.g3d.addRenderer(553648143); +this.vectorT.sub2(b, a); +if (this.rot == null) { +this.rot = new JU.M3(); +this.a4 = new JU.A4(); +}this.a4.setVA(this.vectorT, (deg * 3.141592653589793 / 180)); +this.rot.setAA(this.a4); +this.pointT.setT(a); +this.pointT3.setT(b); +this.pointT2.ave(a, b); +this.rot.rotate2(x, this.vectorT); +this.pointT2.add(this.vectorT); +this.tm.transformPtScrT3(a, this.pointT); +this.tm.transformPtScrT3(this.pointT2, this.pointT2); +this.tm.transformPtScrT3(b, this.pointT3); +var w = Math.max(this.width, 1); +this.g3d.setC(this.colixA); +this.g3d.fillHermite(5, w, w, w, this.pointT, this.pointT, this.pointT2, this.pointT3); +this.g3d.setC(this.colixB); +this.g3d.fillHermite(5, w, w, w, this.pointT, this.pointT2, this.pointT3, this.pointT3); +}, "JM.Atom,JM.Atom,JU.V3,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.T"], "JS.ContextToken", ["java.util.Hashtable", "JS.SV"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.contextVariables = null; +this.forVars = null; +this.name0 = null; +Clazz_instantialize(this, arguments);}, JS, "ContextToken", JS.T); +c$.newContext = Clazz_defineMethod(c$, "newContext", +function(isOpen){ +var ct = (isOpen ? JS.ContextToken.newCmd(1275335685, "{") : JS.ContextToken.newCmd(1275334681, "}")); +ct.intValue = 0; +return ct; +}, "~B"); +c$.newCmd = Clazz_defineMethod(c$, "newCmd", +function(tok, value){ +var ct = new JS.ContextToken(); +ct.tok = tok; +ct.value = value; +return ct; +}, "~N,~O"); +Clazz_defineMethod(c$, "addName", +function(name){ +if (this.contextVariables == null) this.contextVariables = new java.util.Hashtable(); +this.contextVariables.put(name, JS.SV.newS("").setName(name)); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ScriptContext", ["java.util.Hashtable", "JS.SV"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.aatoken = null; +this.allowJSThreads = false; +this.chk = false; +this.contextPath = " >> "; +this.vars = null; +this.displayLoadErrorsSave = false; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorType = null; +this.executionPaused = false; +this.executionStepping = false; +this.isEditor = false; +this.isEditorScript = false; +this.functionName = null; +this.iCommandError = -1; +this.id = 0; +this.isComplete = true; +this.isFunction = false; +this.isJSThread = false; +this.isStateScript = false; +this.isTryCatch = false; +this.forVars = null; +this.iToken = 0; +this.lineEnd = 2147483647; +this.lineIndices = null; +this.lineNumbers = null; +this.mustResumeEval = false; +this.outputBuffer = null; +this.parallelProcessor = null; +this.parentContext = null; +this.pc = 0; +this.pc0 = 0; +this.pcEnd = 2147483647; +this.script = null; +this.scriptExtensions = null; +this.scriptFileName = null; +this.scriptLevel = 0; +this.statement = null; +this.htFileCache = null; +this.statementLength = 0; +this.token = null; +this.tryPt = 0; +this.theToken = null; +this.theTok = 0; +this.pointers = null; +this.why = null; +this.privateFuncs = null; +Clazz_instantialize(this, arguments);}, JS, "ScriptContext", null); +Clazz_makeConstructor(c$, +function(){ +this.id = ++JS.ScriptContext.contextCount; +}); +Clazz_defineMethod(c$, "setMustResume", +function(){ +var sc = this; +while (sc != null) { +sc.mustResumeEval = true; +sc.pc = sc.pc0; +sc = sc.parentContext; +} +}); +Clazz_defineMethod(c$, "getVariable", +function($var){ +var context = this; +var v; +while (context != null && !context.isFunction) { +if (context.vars != null && (v = context.vars.get($var)) != null) return v; +context = context.parentContext; +} +return null; +}, "~S"); +Clazz_defineMethod(c$, "getFullMap", +function(){ +var ht = new java.util.Hashtable(); +var context = this; +if (this.contextPath != null) ht.put("_path", JS.SV.newS(this.contextPath)); +while (context != null && !context.isFunction) { +if (context.vars != null) for (var key, $key = context.vars.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (!ht.containsKey(key)) { +var val = context.vars.get(key); +if (val.tok != 2 || val.intValue != 2147483647) ht.put(key, val); +} +context = context.parentContext; +} +return ht; +}); +Clazz_defineMethod(c$, "saveTokens", +function(aa){ +this.aatoken = aa; +if (aa == null) { +this.pointers = null; +return; +}this.pointers = Clazz_newIntArray (aa.length, 0); +for (var i = this.pointers.length; --i >= 0; ) this.pointers[i] = (aa[i] == null ? -1 : aa[i][0].intValue); + +}, "~A"); +Clazz_defineMethod(c$, "restoreTokens", +function(){ +if (this.pointers != null) for (var i = this.pointers.length; --i >= 0; ) if (this.aatoken[i] != null) this.aatoken[i][0].intValue = this.pointers[i]; + +return this.aatoken; +}); +Clazz_defineMethod(c$, "getTokenCount", +function(){ +return (this.aatoken == null ? -1 : this.aatoken.length); +}); +Clazz_defineMethod(c$, "getToken", +function(i){ +return this.aatoken[i]; +}, "~N"); +c$.contextCount = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["java.lang.Exception"], "JS.ScriptException", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.eval = null; +this.message = null; +this.untranslated = null; +this.isError = false; +Clazz_instantialize(this, arguments);}, JS, "ScriptException", Exception); +Clazz_makeConstructor(c$, +function(se, msg, untranslated, isError){ +this.eval = se; +this.message = msg; +this.isError = isError; +if (!isError) return; +this.eval.setException(this, msg, untranslated); +}, "JS.ScriptError,~S,~S,~B"); +Clazz_defineMethod(c$, "getErrorMessageUntranslated", +function(){ +return this.untranslated; +}); +Clazz_overrideMethod(c$, "getMessage", +function(){ +return this.message; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.message; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["javajs.api.JSONEncodable", "JS.T", "JU.P3"], "JS.SV", ["java.util.Arrays", "$.Collections", "$.Hashtable", "JU.AU", "$.BArray", "$.BS", "$.Base64", "$.Lst", "$.Measure", "$.PT", "$.SB", "JM.BondSet", "JU.BSUtil", "$.Escape", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.index = 2147483647; +this.myName = null; +if (!Clazz_isClassDefined("JS.SV.Sort")) { +JS.SV.$SV$Sort$ (); +} +Clazz_instantialize(this, arguments);}, JS, "SV", JS.T, javajs.api.JSONEncodable); +c$.newV = Clazz_defineMethod(c$, "newV", +function(tok, value){ +var sv = new JS.SV(); +sv.tok = tok; +sv.value = value; +return sv; +}, "~N,~O"); +c$.newI = Clazz_defineMethod(c$, "newI", +function(i){ +var sv = new JS.SV(); +sv.tok = 2; +sv.intValue = i; +return sv; +}, "~N"); +c$.newF = Clazz_defineMethod(c$, "newF", +function(f){ +if (f != f) return JS.SV.vNaN; +var sv = new JS.SV(); +sv.tok = 3; +sv.value = Float.$valueOf(f); +return sv; +}, "~N"); +c$.newS = Clazz_defineMethod(c$, "newS", +function(s){ +return JS.SV.newV(4, s); +}, "~S"); +c$.newT = Clazz_defineMethod(c$, "newT", +function(x){ +return JS.SV.newSV(x.tok, x.intValue, x.value); +}, "JS.T"); +c$.newSV = Clazz_defineMethod(c$, "newSV", +function(tok, intValue, value){ +var sv = JS.SV.newV(tok, value); +sv.intValue = intValue; +return sv; +}, "~N,~N,~O"); +Clazz_defineMethod(c$, "setv", +function(v){ +this.index = v.index; +this.intValue = v.intValue; +this.tok = v.tok; +this.value = v.value; +return this; +}, "JS.SV"); +c$.copySafely = Clazz_defineMethod(c$, "copySafely", +function(v){ +return (v.myName == null ? v : new JS.SV().setv(v)); +}, "JS.SV"); +c$.sizeOf = Clazz_defineMethod(c$, "sizeOf", +function(x){ +switch (x == null ? 0 : x.tok) { +case 10: +return JS.SV.bsSelectToken(x).cardinality(); +case 15: +return (x.value).data.length; +case 4: +return (x.value).length; +case 7: +return x.intValue == 2147483647 ? (x).getList().size() : JS.SV.sizeOf(JS.SV.selectItemTok(x, -2147483648)); +case 6: +return (x.value).size(); +case 14: +return (x.value).getFullMap().size(); +case 1073742335: +case 1073742334: +return -1; +case 2: +return -2; +case 3: +return -4; +case 8: +return -8; +case 9: +return -16; +case 11: +return -32; +case 12: +return -64; +default: +return 0; +} +}, "JS.T"); +c$.isVariableType = Clazz_defineMethod(c$, "isVariableType", +function(x){ +return (Clazz_instanceOf(x,"JS.SV") || Clazz_instanceOf(x, Boolean) || Clazz_instanceOf(x, Integer) || Clazz_instanceOf(x, Float) || (typeof(x)=='string') || Clazz_instanceOf(x,"JU.T3") || Clazz_instanceOf(x,"JU.BS") || Clazz_instanceOf(x,"JU.P4") || Clazz_instanceOf(x,"JU.Quat") || Clazz_instanceOf(x,"JU.M34") || Clazz_instanceOf(x,"java.util.Map") || Clazz_instanceOf(x,"JU.Lst") || Clazz_instanceOf(x,"JU.BArray") || Clazz_instanceOf(x,"JS.ScriptContext") || JS.SV.isArray(x)); +}, "~O"); +c$.isArray = Clazz_defineMethod(c$, "isArray", +function(x){ +{ +return Clazz_instanceOf(x, Array); +}}, "~O"); +c$.getVariable = Clazz_defineMethod(c$, "getVariable", +function(x){ +if (x == null) return JS.SV.newS(""); +if (Clazz_instanceOf(x,"JS.SV")) return x; +if (Clazz_instanceOf(x, Boolean)) return JS.SV.getBoolean((x).booleanValue()); +if (Clazz_instanceOf(x, Integer)) return JS.SV.newI((x).intValue()); +if (Clazz_instanceOf(x, Float)) return JS.SV.newV(3, x); +if ((typeof(x)=='string')) { +x = JS.SV.unescapePointOrBitsetAsVariable(x); +if (Clazz_instanceOf(x,"JS.SV")) return x; +return JS.SV.newV(4, x); +}if (Clazz_instanceOf(x,"JU.P3")) return JS.SV.newV(8, x); +if (Clazz_instanceOf(x,"JU.V3")) return JS.SV.newV(8, JU.P3.newP(x)); +if (Clazz_instanceOf(x,"JU.BS")) return JS.SV.newV(10, x); +if (Clazz_instanceOf(x,"JU.P4")) return JS.SV.newV(9, x); +if (Clazz_instanceOf(x,"JU.Quat")) return JS.SV.newV(9, (x).toPoint4f()); +if (Clazz_instanceOf(x,"JU.M34")) return JS.SV.newV(Clazz_instanceOf(x,"JU.M4") ? 12 : 11, x); +if (Clazz_instanceOf(x,"java.util.Map")) return JS.SV.getVariableMap(x); +if (Clazz_instanceOf(x,"JU.Lst")) return JS.SV.getVariableList(x); +if (Clazz_instanceOf(x,"JU.BArray")) return JS.SV.newV(15, x); +if (Clazz_instanceOf(x,"JS.ScriptContext")) return JS.SV.newV(14, x); +if (JS.SV.isASV(x)) return JS.SV.getVariableAV(x); +if (JU.AU.isAI(x)) return JS.SV.getVariableAI(x); +if (JU.AU.isAB(x)) return JS.SV.getVariableAB(x); +if (JU.AU.isAF(x)) return JS.SV.getVariableAF(x); +if (JU.AU.isAD(x)) return JS.SV.getVariableAD(x); +if (JU.AU.isAS(x)) return JS.SV.getVariableAS(x); +if (JU.AU.isAP(x)) return JS.SV.getVariableAP(x); +if (JU.AU.isAII(x)) return JS.SV.getVariableAII(x); +if (JU.AU.isAFF(x)) return JS.SV.getVariableAFF(x); +if (JU.AU.isASS(x)) return JS.SV.getVariableASS(x); +if (JU.AU.isADD(x)) return JS.SV.getVariableADD(x); +if (JU.AU.isAFloat(x)) return JS.SV.newV(13, x); +return JS.SV.newJSVar(x); +}, "~O"); +c$.isASV = Clazz_defineMethod(c$, "isASV", +function(x){ +if (!JV.Viewer.isSwingJS) { +{ +return x && x[0] && x[0].__CLASS_NAME__ == "JS.SV"; +}}return Clazz_instanceOf(x,Array); +}, "~O"); +c$.newJSVar = Clazz_defineMethod(c$, "newJSVar", +function(x){ +var itype; +var itest; +var inum; +var array; +var keys; +{ +switch(x.BYTES_PER_ELEMENT ? Array : x.constructor) { +case Boolean: +itype = 0; +itest = x; +break; +case Number: +itype = 1; +inum = x; +break; +case Array: +itype = 2; +array = x; +break; +case Object: +itype = 3; +array = x; +keys = Object.keys(x); +break; +} +}switch (itype) { +case 0: +return (itest ? JS.SV.vT : JS.SV.vF); +case 1: +return (inum > 2147483647 || inum != Math.floor(inum) ? JS.SV.newF(inum) : JS.SV.newI(Clazz_floatToInt(inum))); +case 2: +var v = new JU.Lst(); +for (var i = 0, n = array.length; i < n; i++) v.addLast(JS.SV.newJSVar(array[i])); + +return JS.SV.getVariableList(v); +case 3: +var map = new java.util.Hashtable(); +for (var i = keys.length; --i >= 0; ) { +var o = null; +{ +o = array[keys[i]]; +}map.put(keys[i], JS.SV.newJSVar(o)); +} +return JS.SV.getVariableMap(map); +} +return JS.SV.newS(x.toString()); +}, "~O"); +c$.getVariableMap = Clazz_defineMethod(c$, "getVariableMap", +function(x){ +var ht = x; +var o = null; +for (var oo, $oo = ht.values().iterator (); $oo.hasNext()&& ((oo = $oo.next ()) || true);) { +o = oo; +break; +} +if (!(Clazz_instanceOf(o,"JS.SV"))) { +var x2 = new java.util.Hashtable(); +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) x2.put(entry.getKey(), JS.SV.getVariable(entry.getValue())); + +x = x2; +}return JS.SV.newV(6, x); +}, "java.util.Map"); +c$.getVariableList = Clazz_defineMethod(c$, "getVariableList", +function(v){ +var len = v.size(); +if (len > 0 && Clazz_instanceOf(v.get(0),"JS.SV")) return JS.SV.newV(7, v); +var objects = new JU.Lst(); +for (var i = 0; i < len; i++) objects.addLast(JS.SV.getVariable(v.get(i))); + +return JS.SV.newV(7, objects); +}, "JU.Lst"); +c$.getVariableAV = Clazz_defineMethod(c$, "getVariableAV", +function(v){ +var objects = new JU.Lst(); +for (var i = 0; i < v.length; i++) objects.addLast(v[i]); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAD = Clazz_defineMethod(c$, "getVariableAD", +function(f){ +var objects = new JU.Lst(); +for (var i = 0; i < f.length; i++) objects.addLast(JS.SV.newV(3, Float.$valueOf(f[i]))); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAO = Clazz_defineMethod(c$, "getVariableAO", +function(o){ +var objects = new JU.Lst(); +for (var i = 0; i < o.length; i++) objects.addLast(JS.SV.getVariable(o[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAS = Clazz_defineMethod(c$, "getVariableAS", +function(s){ +var objects = new JU.Lst(); +for (var i = 0; i < s.length; i++) objects.addLast(JS.SV.newV(4, s[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAP = Clazz_defineMethod(c$, "getVariableAP", +function(p){ +var objects = new JU.Lst(); +for (var i = 0; i < p.length; i++) objects.addLast(JS.SV.newV(8, p[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAFF = Clazz_defineMethod(c$, "getVariableAFF", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAF(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableADD = Clazz_defineMethod(c$, "getVariableADD", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAD(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableASS = Clazz_defineMethod(c$, "getVariableASS", +function(fx){ +var objects = new JU.Lst(); +for (var i = 0; i < fx.length; i++) objects.addLast(JS.SV.getVariableAS(fx[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAII = Clazz_defineMethod(c$, "getVariableAII", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.getVariableAI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAF = Clazz_defineMethod(c$, "getVariableAF", +function(f){ +var objects = new JU.Lst(); +for (var i = 0; i < f.length; i++) objects.addLast(JS.SV.newV(3, Float.$valueOf(f[i]))); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAI = Clazz_defineMethod(c$, "getVariableAI", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.newI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +c$.getVariableAB = Clazz_defineMethod(c$, "getVariableAB", +function(ix){ +var objects = new JU.Lst(); +for (var i = 0; i < ix.length; i++) objects.addLast(JS.SV.newI(ix[i])); + +return JS.SV.newV(7, objects); +}, "~A"); +Clazz_defineMethod(c$, "setName", +function(name){ +this.myName = name; +return this; +}, "~S"); +Clazz_defineMethod(c$, "canIncrement", +function(){ +switch (this.tok) { +case 2: +case 3: +return true; +default: +return false; +} +}); +Clazz_defineMethod(c$, "increment", +function(n){ +switch (this.tok) { +case 2: +this.intValue += n; +return true; +case 3: +this.value = Float.$valueOf((this.value).floatValue() + n); +return true; +default: +return false; +} +}, "~N"); +Clazz_defineMethod(c$, "asBoolean", +function(){ +return JS.SV.bValue(this); +}); +Clazz_defineMethod(c$, "asInt", +function(){ +return JS.SV.iValue(this); +}); +Clazz_defineMethod(c$, "asFloat", +function(){ +return JS.SV.fValue(this); +}); +Clazz_defineMethod(c$, "asString", +function(){ +return JS.SV.sValue(this); +}); +c$.oValue = Clazz_defineMethod(c$, "oValue", +function(xx){ +if (!(Clazz_instanceOf(xx,"JS.SV"))) return xx; +var x = xx; +switch (x.tok) { +case 1073742335: +return Boolean.TRUE; +case 0: +case 1073742334: +return Boolean.FALSE; +case 2: +return Integer.$valueOf(x.intValue); +case 10: +case 1275068418: +return JS.SV.selectItemVar(x).value; +default: +return x.value; +} +}, "~O"); +c$.nValue = Clazz_defineMethod(c$, "nValue", +function(x){ +var iValue; +switch (x == null ? 0 : x.tok) { +case 3: +return x.value; +case 2: +iValue = x.intValue; +break; +case 4: +if ((x.value).indexOf(".") >= 0) return Float.$valueOf(JS.SV.toFloat(x.value)); +iValue = Clazz_floatToInt(JS.SV.toFloat(x.value)); +break; +case 8: +return Float.$valueOf((x.value).length()); +default: +iValue = 0; +} +return Integer.$valueOf(iValue); +}, "JS.T"); +c$.bValue = Clazz_defineMethod(c$, "bValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +case 14: +return true; +case 1073742334: +return false; +case 2: +return x.intValue != 0; +case 3: +case 4: +case 7: +return JS.SV.fValue(x) != 0; +case 10: +case 15: +return JS.SV.iValue(x) != 0; +case 8: +case 9: +case 11: +case 12: +return Math.abs(JS.SV.fValue(x)) > 0.0001; +case 6: +return !(x).getMap().isEmpty(); +default: +return false; +} +}, "JS.T"); +c$.iValue = Clazz_defineMethod(c$, "iValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +return 1; +case 1073742334: +return 0; +case 2: +return x.intValue; +case 3: +case 7: +case 4: +case 8: +case 9: +case 11: +case 12: +case 134221850: +return Clazz_floatToInt(JS.SV.fValue(x)); +case 10: +return JS.SV.bsSelectToken(x).cardinality(); +case 15: +return (x.value).data.length; +default: +return 0; +} +}, "JS.T"); +c$.fValue = Clazz_defineMethod(c$, "fValue", +function(x){ +switch (x == null ? 0 : x.tok) { +case 1073742335: +return 1; +case 1073742334: +return 0; +case 2: +return x.intValue; +case 3: +return (x.value).floatValue(); +case 7: +var i = x.intValue; +if (i == 2147483647) return (x).getList().size(); +case 4: +return JS.SV.toFloat(JS.SV.sValue(x)); +case 10: +case 15: +return JS.SV.iValue(x); +case 8: +return (x.value).length(); +case 9: +return JU.Measure.distanceToPlane(x.value, JS.SV.pt0); +case 11: +var pt = new JU.P3(); +(x.value).rotate(pt); +return pt.length(); +case 12: +var pt1 = new JU.P3(); +(x.value).rotTrans(pt1); +return pt1.length(); +default: +return 0; +} +}, "JS.T"); +c$.sValue = Clazz_defineMethod(c$, "sValue", +function(x){ +if (x == null) return ""; +var i; +var sb; +switch (x.tok) { +case 1073742335: +return "true"; +case 1073742334: +return "false"; +case 2: +return "" + x.intValue; +case 10: +var bs = JS.SV.bsSelectToken(x); +return (Clazz_instanceOf(x.value,"JM.BondSet") ? JU.Escape.eBond(bs) : JU.Escape.eBS(bs)); +case 7: +var sv = (x).getList(); +i = x.intValue; +if (i <= 0) i = sv.size() - i; +if (i != 2147483647) return (i < 1 || i > sv.size() ? "" : JS.SV.sValue(sv.get(i - 1))); +case 6: +case 14: +if ((typeof(x.value)=='string')) return x.value; +sb = new JU.SB(); +JS.SV.sValueArray(sb, x, "", "", false, true, true, 2147483647, false); +return JU.PT.rep(sb.toString(), "\n\0", " "); +case 4: +var s = x.value; +i = x.intValue; +if (i <= 0) i = s.length - i; +if (i == 2147483647) return s; +if (i < 1 || i > s.length) return ""; +return "" + s.charAt(i - 1); +case 8: +return JU.Escape.eP(x.value); +case 9: +return JU.Escape.eP4(x.value); +case 11: +case 12: +return JU.Escape.e(x.value); +default: +return x.value.toString(); +} +}, "JS.T"); +c$.sValueArray = Clazz_defineMethod(c$, "sValueArray", +function(sb, vx, path, tabs, isEscaped, isRaw, addValues, maxLevels, skipEmpty){ +switch (vx.tok) { +case 6: +case 14: +case 7: +var thiskey = ";" + vx.hashCode() + ";"; +if (path.indexOf(thiskey) >= 0) { +sb.append(isEscaped ? (vx.tok == 7 ? "[ ]" : "{ }") : (vx.tok == 7 ? "" : "\0") + "\"<" + (vx.myName == null ? "circular reference" : vx.myName) + ">\""); +break; +}path += thiskey; +if (vx.tok == 7) { +if (!addValues) return; +if (!isRaw) sb.append(isEscaped ? "[ " : tabs + "[\n"); +var sx = vx.getList(); +for (var i = 0; i < sx.size(); i++) { +if (isEscaped && i > 0) sb.append(","); +var sv = sx.get(i); +JS.SV.sValueArray(sb, sv, path, tabs + " ", isEscaped, tabs.length == 0 && !isEscaped && JS.SV.isRawType(sv.tok), addValues, maxLevels, skipEmpty); +if (!isEscaped) sb.append("\n"); +} +if (!isRaw) sb.append(isEscaped ? " ]" : tabs + "]"); +} else if (--maxLevels >= 0) { +var ht = (vx.tok == 14 ? (vx.value).getFullMap() : vx.getMap()); +JS.SV.sValueAddKeys(sb, path, ht, tabs, isEscaped, addValues, maxLevels, skipEmpty); +}break; +default: +if (!addValues) return; +if (!isRaw && !isEscaped) sb.append(tabs); +sb.append(isEscaped ? vx.escape() : JS.SV.sValue(vx)); +} +}, "JU.SB,JS.SV,~S,~S,~B,~B,~B,~N,~B"); +c$.sValueAddKeys = Clazz_defineMethod(c$, "sValueAddKeys", +function(sb, path, ht, tabs, isEscaped, addValues, maxLevels, skipEmpty){ +if (maxLevels < 0) return; +var keyset = ht.keySet(); +var keys = ht.keySet().toArray( new Array(keyset.size())); +java.util.Arrays.sort(keys); +if (isEscaped) { +sb.append("{ "); +var sep = ""; +for (var i = 0; i < keys.length; i++) { +var key = keys[i]; +var val = ht.get(key); +if (skipEmpty && (val.tok == 7 && val.getList().size() == 0 || val.tok == 6 && val.getMap().isEmpty())) continue; +if (addValues) sb.append(sep).append(JU.PT.esc(key)).append(":"); + else sb.appendC(' ').append(key); +JS.SV.sValueArray(sb, val, path, tabs + " ", true, false, addValues, maxLevels, skipEmpty); +sep = ","; +} +sb.append(" }"); +if (!addValues) sb.append("\n"); +return; +}sb.append(tabs).append("{\n"); +tabs += " "; +for (var i = 0; i < keys.length; i++) { +sb.append(tabs); +var key = keys[i]; +sb.append(JU.PT.esc(key)).append(" :"); +var sb2 = new JU.SB(); +if (!(Clazz_instanceOf(ht.get(key),"JS.SV"))) ht.put(key, JS.SV.getVariable(ht.get(key))); +var v = ht.get(key); +isEscaped = JS.SV.isRawType(v.tok); +JS.SV.sValueArray(sb2, v, path, tabs, isEscaped, false, addValues, maxLevels, skipEmpty); +var value = sb2.toString(); +if (isEscaped && addValues) sb.append(" "); + else sb.append("\n"); +sb.append(value).append("\n"); +} +sb.append(tabs.substring(1)).append("}"); +}, "JU.SB,~S,java.util.Map,~S,~B,~B,~N,~B"); +c$.isRawType = Clazz_defineMethod(c$, "isRawType", +function(tok){ +switch (tok) { +case 4: +case 3: +case 2: +case 8: +case 9: +case 10: +case 15: +case 1073742335: +case 1073742334: +return true; +} +return false; +}, "~N"); +c$.ptValue = Clazz_defineMethod(c$, "ptValue", +function(x){ +switch (x.tok) { +case 8: +return x.value; +case 4: +var o = JU.Escape.uP(x.value); +if (Clazz_instanceOf(o,"JU.P3")) return o; +} +return null; +}, "JS.SV"); +c$.pt4Value = Clazz_defineMethod(c$, "pt4Value", +function(x){ +switch (x.tok) { +case 9: +return x.value; +case 4: +var o = JU.Escape.uP(x.value); +if (!(Clazz_instanceOf(o,"JU.P4"))) break; +return o; +} +return null; +}, "JS.SV"); +c$.toFloat = Clazz_defineMethod(c$, "toFloat", +function(s){ +return (s.equalsIgnoreCase("true") ? 1 : s.length == 0 || s.equalsIgnoreCase("false") ? 0 : JU.PT.parseFloatStrict(JU.PT.trim(s, " \t\n"))); +}, "~S"); +c$.concatList = Clazz_defineMethod(c$, "concatList", +function(x1, x2, asNew){ +var v1 = x1.getList(); +var v2 = x2.getList(); +if (!asNew) { +if (v2 == null) v1.addLast(JS.SV.newT(x2)); + else for (var i = 0; i < v2.size(); i++) v1.addLast(v2.get(i)); + +return x1; +}var vlist = new JU.Lst(); +if (v1 == null) vlist.addLast(x1); + else for (var i = 0; i < v1.size(); i++) vlist.addLast(v1.get(i)); + +if (v2 == null) vlist.addLast(x2); + else for (var i = 0; i < v2.size(); i++) vlist.addLast(v2.get(i)); + +return JS.SV.getVariableList(vlist); +}, "JS.SV,JS.SV,~B"); +c$.bsSelectToken = Clazz_defineMethod(c$, "bsSelectToken", +function(x){ +return JS.SV.selectItemTok(x, -2147483648).value; +}, "JS.T"); +c$.bsSelectRange = Clazz_defineMethod(c$, "bsSelectRange", +function(x, n){ +x = JS.SV.selectItemTok(x, -2147483648); +x = JS.SV.selectItemTok(x, (n <= 0 ? n : 1)); +x = JS.SV.selectItemTok(x, (n <= 0 ? 2147483646 : n)); +return x.value; +}, "JS.T,~N"); +c$.selectItemVar = Clazz_defineMethod(c$, "selectItemVar", +function($var){ +return ($var.index != 2147483647 || ($var.tok == 7 || $var.tok == 15) && $var.intValue == 2147483647 ? $var : JS.SV.selectItemTok($var, -2147483648)); +}, "JS.SV"); +c$.selectItemTok = Clazz_defineMethod(c$, "selectItemTok", +function(tokenIn, i2){ +switch (tokenIn.tok) { +case 11: +case 12: +case 10: +case 7: +case 15: +case 4: +break; +default: +return ((Clazz_instanceOf(tokenIn,"JS.SV")) && (tokenIn).myName != null ? JS.SV.copySafely(tokenIn) : tokenIn); +} +var bs = null; +var s = null; +var i1 = tokenIn.intValue; +var isOne = (i2 == -2147483648); +if (i1 == 2147483647) { +return (isOne && tokenIn.tok == 4 ? tokenIn : JS.SV.newSV(tokenIn.tok, (isOne ? i1 : i2), tokenIn.value)); +}var len = 0; +var isInputSelected = (Clazz_instanceOf(tokenIn,"JS.SV") && (tokenIn).index != 2147483647); +var tokenOut = JS.SV.newSV(tokenIn.tok, 2147483647, null); +switch (tokenIn.tok) { +case 10: +if (Clazz_instanceOf(tokenIn.value,"JM.BondSet")) { +bs = JM.BondSet.newBS(tokenIn.value); +len = bs.cardinality(); +} else { +bs = JU.BSUtil.copy(tokenIn.value); +len = (isInputSelected ? 1 : bs.cardinality()); +}break; +case 15: +len = (((tokenIn).value)).data.length; +break; +case 7: +len = (tokenIn).getList().size(); +break; +case 4: +s = tokenIn.value; +len = s.length; +break; +case 11: +len = -3; +break; +case 12: +len = -4; +break; +} +if (len < 0) { +len = -len; +if (i1 > 0 && Math.abs(i1) > len) { +var col = i1 % 10; +var row = Clazz_doubleToInt((i1 - col) / 10); +if (col > 0 && col <= len && row <= len) { +if (tokenIn.tok == 11) return JS.SV.newV(3, Float.$valueOf((tokenIn.value).getElement(row - 1, col - 1))); +return JS.SV.newV(3, Float.$valueOf((tokenIn.value).getElement(row - 1, col - 1))); +}return JS.SV.newV(4, ""); +}if (Math.abs(i1) > len) return JS.SV.newV(4, ""); +var data = Clazz_newFloatArray (len, 0); +if (len == 3) { +if (i1 < 0) (tokenIn.value).getColumn(-1 - i1, data); + else (tokenIn.value).getRow(i1 - 1, data); +} else { +if (i1 < 0) (tokenIn.value).getColumn(-1 - i1, data); + else (tokenIn.value).getRow(i1 - 1, data); +}if (isOne) return JS.SV.getVariableAF(data); +if (i2 < 1 || i2 > len) return JS.SV.newV(4, ""); +return JS.SV.newV(3, Float.$valueOf(data[i2 - 1])); +}if (i1 <= 0) i1 = len + i1; +if (!isOne) { +if (i1 < 1) i1 = 1; +if (i2 == 0) i2 = len; + else if (i2 < 0) i2 = len + i2; +if (i2 < i1) i2 = i1; +}switch (tokenIn.tok) { +case 10: +tokenOut.value = bs; +if (isInputSelected) { +if (i1 > 1) bs.clearAll(); +break; +}if (isOne) { +if (i1 == len) { +i2 = bs.length() - 1; +} else if (i1 == 1) { +i2 = bs.nextSetBit(0); +}if (i2 >= -1) { +bs.clearAll(); +if (i2 >= 0) bs.set(i2); +break; +}i2 = i1; +}var n = 0; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) if (++n < i1 || n > i2) bs.clear(j); + +break; +case 4: +tokenOut.value = (--i1 < 0 || i1 >= len ? "" : isOne ? s.substring(i1, i1 + 1) : s.substring(i1, Math.min(i2, len))); +break; +case 7: +if (--i1 < 0 || i1 >= len) return JS.SV.newV(4, ""); +if (isOne) return (tokenIn).getList().get(i1); +var o2 = new JU.Lst(); +var o1 = (tokenIn).getList(); +var nn = Math.min(i2, len) - i1; +for (var i = 0; i < nn; i++) o2.addLast(JS.SV.newT(o1.get(i + i1))); + +tokenOut.value = o2; +break; +case 15: +if (--i1 < 0 || i1 >= len) return JS.SV.newV(4, ""); +var data = (((tokenIn).value)).data; +if (isOne) return JS.SV.newI(data[i1]); +var b = Clazz_newByteArray (Math.min(i2, len) - i1, 0); +for (var i = b.length; --i >= 0; ) b[i] = data[i1 + i]; + +tokenOut.value = new JU.BArray(b); +break; +} +return tokenOut; +}, "JS.T,~N"); +Clazz_defineMethod(c$, "setSelectedValue", +function(pt1, pt2, $var){ +if (pt1 == 2147483647) return; +var len; +switch (this.tok) { +case 11: +case 12: +len = (this.tok == 11 ? 3 : 4); +if (pt2 != 2147483647) { +var col = pt2; +var row = pt1; +if (col > 0 && col <= len && row <= len) { +if (this.tok == 11) (this.value).setElement(row - 1, col - 1, JS.SV.fValue($var)); + else (this.value).setElement(row - 1, col - 1, JS.SV.fValue($var)); +return; +}}if (pt1 != 0 && Math.abs(pt1) <= len && (this.tok == 11 && $var.tok == 8 || this.tok == 12 && $var.tok == 9 || $var.tok == 7)) { +var data; +switch ($var.tok) { +default: +case 7: +var sv = $var.getList(); +if (sv.size() != len) return; +data = Clazz_newFloatArray (len, 0); +for (var i = 0; i < len; i++) data[i] = JS.SV.fValue(sv.get(i)); + +break; +case 8: +var p = $var.value; +data = Clazz_newFloatArray(-1, [p.x, p.y, p.z]); +break; +case 9: +var p4 = $var.value; +data = Clazz_newFloatArray(-1, [p4.x, p4.y, p4.z, p4.w]); +break; +} +if (pt1 > 0) { +if (this.tok == 11) (this.value).setRowA(pt1 - 1, data); + else (this.value).setRowA(pt1 - 1, data); +} else { +if (this.tok == 11) (this.value).setColumnA(-1 - pt1, data); + else (this.value).setColumnA(-1 - pt1, data); +}break; +}break; +case 4: +var str = this.value; +var pt = str.length; +if (pt1 <= 0) pt1 = pt + pt1; +if (--pt1 < 0) pt1 = 0; +while (pt1 >= str.length) str += " "; + +if (pt2 == 2147483647) { +pt2 = pt1; +} else { +if (--pt2 < 0) pt2 = pt + pt2; +while (pt2 >= str.length) str += " "; + +}if (pt2 >= pt1) this.value = str.substring(0, pt1) + JS.SV.sValue($var) + str.substring(++pt2); +this.intValue = this.index = 2147483647; +break; +case 7: +var v = this.value; +len = v.size(); +if (pt1 <= 0) pt1 = len + pt1; +if (--pt1 < 0) pt1 = 0; +if (len <= pt1) for (var i = len; i <= pt1; i++) v.addLast(JS.SV.newV(4, "")); + +v.set(pt1, $var); +break; +} +}, "~N,~N,JS.SV"); +Clazz_defineMethod(c$, "escape", +function(){ +switch (this.tok) { +case 4: +return JU.PT.esc(this.value); +case 11: +case 12: +return JU.PT.toJSON(null, this.value); +case 7: +case 6: +case 14: +var sb = new JU.SB(); +JS.SV.sValueArray(sb, this, "", "", true, false, true, 2147483647, false); +return sb.toString(); +default: +return JS.SV.sValue(this); +} +}); +c$.unescapePointOrBitsetAsVariable = Clazz_defineMethod(c$, "unescapePointOrBitsetAsVariable", +function(o){ +if (o == null) return o; +var v = null; +var s = null; +if (Clazz_instanceOf(o,"JS.SV")) { +var sv = o; +switch (sv.tok) { +case 8: +case 9: +case 11: +case 12: +case 10: +v = sv.value; +break; +case 4: +s = sv.value; +break; +default: +s = JS.SV.sValue(sv); +break; +} +} else if ((typeof(o)=='string')) { +s = o; +}if (s != null && s.length == 0) return s; +if (v == null) v = JU.Escape.uABsM(s); +if (Clazz_instanceOf(v,"JU.P3")) return (JS.SV.newV(8, v)); +if (Clazz_instanceOf(v,"JU.P4")) return JS.SV.newV(9, v); +if (Clazz_instanceOf(v,"JU.BS")) { +if (s != null && s.indexOf("[{") == 0) v = JM.BondSet.newBS(v); +return JS.SV.newV(10, v); +}if (Clazz_instanceOf(v,"JU.M34")) return (JS.SV.newV(Clazz_instanceOf(v,"JU.M3") ? 11 : 12, v)); +return o; +}, "~O"); +c$.getBoolean = Clazz_defineMethod(c$, "getBoolean", +function(value){ +return JS.SV.newT(value ? JS.SV.vT : JS.SV.vF); +}, "~B"); +c$.sprintf = Clazz_defineMethod(c$, "sprintf", +function(strFormat, $var){ +if ($var == null) return strFormat; +var isArray = ($var.tok == 7); +var vd = (strFormat.indexOf("d") >= 0 || strFormat.indexOf("i") >= 0 ? Clazz_newIntArray (1, 0) : null); +var vf = (strFormat.indexOf("f") >= 0 ? Clazz_newFloatArray (1, 0) : null); +var ve = (strFormat.indexOf("e") >= 0 ? Clazz_newDoubleArray (1, 0) : null); +var getS = (strFormat.indexOf("s") >= 0); +var getP = (strFormat.indexOf("p") >= 0 && (isArray || $var.tok == 8)); +var getQ = (strFormat.indexOf("q") >= 0 && (isArray || $var.tok == 9)); +var of = Clazz_newArray(-1, [vd, vf, ve, null, null, null]); +if (!isArray) return JS.SV.sprintf(strFormat, $var, of, vd, vf, ve, getS, getP, getQ); +var sv = $var.getList(); +var list2 = new Array(sv.size()); +for (var i = 0; i < list2.length; i++) list2[i] = JS.SV.sprintf(strFormat, sv.get(i), of, vd, vf, ve, getS, getP, getQ); + +return list2; +}, "~S,JS.SV"); +c$.sprintf = Clazz_defineMethod(c$, "sprintf", +function(strFormat, $var, of, vd, vf, ve, getS, getP, getQ){ +if ($var.tok == 6) { +var pt = strFormat.indexOf("["); +if (pt >= 0) { +var pt1; +$var = $var.getMap().get(strFormat.substring(pt + 1, pt1 = strFormat.indexOf("]"))); +strFormat = strFormat.substring(0, pt) + strFormat.substring(pt1 + 1); +}}if (vd != null) vd[0] = JS.SV.iValue($var); +if (vf != null) vf[0] = JS.SV.fValue($var); +if (ve != null) ve[0] = JS.SV.fValue($var); +if (getS) of[3] = JS.SV.sValue($var); +if (getP) of[4] = $var.value; +if (getQ) of[5] = $var.value; +return JU.PT.sprintf(strFormat, "IFDspq", of); +}, "~S,JS.SV,~A,~A,~A,~A,~B,~B,~B"); +c$.getFormatType = Clazz_defineMethod(c$, "getFormatType", +function(format){ +return (format.indexOf(";") >= 0 ? -1 : ";json;base64;bytearray;array;".indexOf(";" + format.toLowerCase() + ";")); +}, "~S"); +c$.format = Clazz_defineMethod(c$, "format", +function(args, pt){ +switch (args.length) { +case 0: +return ""; +case 1: +return JS.SV.sValue(args[0]); +case 2: +if (pt == 2147483647) pt = JS.SV.getFormatType(args[0].asString()); +switch (pt) { +case 0: +var name = args[1].myName; +args[1].myName = null; +var o = args[1].toJSON(); +args[1].myName = name; +return o; +case 5: +case 12: +case 22: +var bytes; +switch (args[1].tok) { +case 15: +bytes = JU.AU.arrayCopyByte((args[1].value).data, -1); +break; +case 7: +var l = args[1].getList(); +if (pt == 22) { +var l1 = new JU.Lst(); +for (var i = l.size(); --i >= 0; ) l1.addLast(l.get(i)); + +return l1; +}bytes = Clazz_newByteArray (l.size(), 0); +for (var i = bytes.length; --i >= 0; ) bytes[i] = l.get(i).asInt(); + +break; +default: +var s = args[1].asString(); +if (s.startsWith(";base64,")) { +if (pt == 5) return s; +bytes = JU.Base64.decodeBase64(s); +} else { +bytes = s.getBytes(); +}} +return (pt == 22 ? JS.SV.getVariable(bytes) : pt == 12 ? new JU.BArray(bytes) : ";base64," + JU.Base64.getBase64(bytes).toString()); +} +} +var format = JU.PT.split(JU.PT.rep(JS.SV.sValue(args[0]), "%%", "\1"), "%"); +if (format.length == 0) return ""; +var sb = new JU.SB(); +sb.append(format[0]); +for (var i = 1; i < format.length; i++) { +var ret = JS.SV.sprintf(JU.PT.formatCheck("%" + format[i]), (args[1].tok == 6 ? args[1] : args[1].tok == 7 ? args[1].getList().get(i - 1) : i < args.length ? args[i] : null)); +if (JU.AU.isAS(ret)) { +var list = ret; +for (var j = 0; j < list.length; j++) sb.append(list[j]).append("\n"); + +continue; +}sb.append(ret); +} +return sb.toString(); +}, "~A,~N"); +c$.getBitSet = Clazz_defineMethod(c$, "getBitSet", +function(x, allowNull){ +switch (x.tok) { +case 10: +return (x.index == 2147483647 ? JS.SV.selectItemTok(x, -2147483648) : x).value; +case 7: +return JS.SV.unEscapeBitSetArray(x.getList(), allowNull); +default: +return (allowNull ? null : new JU.BS()); +} +}, "JS.SV,~B"); +c$.unEscapeBitSetArray = Clazz_defineMethod(c$, "unEscapeBitSetArray", +function(x, allowNull){ +var bs = new JU.BS(); +for (var i = 0; i < x.size(); i++) { +var v = x.get(i); +if (v.tok == 2 && v.intValue >= 0) { +bs.set(v.intValue); +} else if (v.tok == 7) { +var bs2 = JS.SV.unEscapeBitSetArray(v.getList(), true); +if (bs2 == null) return (allowNull ? null : new JU.BS()); +bs.or(bs2); +} else if (!JS.SV.unEscapeBitSet(v, bs)) { +return (allowNull ? null : new JU.BS()); +}} +return bs; +}, "JU.Lst,~B"); +c$.areEqual = Clazz_defineMethod(c$, "areEqual", +function(x1, x2){ +if (x1 == null || x2 == null) return false; +if (x1.value != null && x1.value === x2.value) return true; +if (x1.tok == x2.tok) { +switch (x1.tok) { +case 2: +if (x2.tok == 2) { +return x1.intValue == x2.intValue; +}break; +case 4: +return (x1.value).equalsIgnoreCase(x2.value); +case 10: +case 15: +case 6: +case 7: +case 14: +return x1.equals(x2); +case 8: +return ((x1.value).distance(x2.value) < 0.000001); +case 9: +return ((x1.value).distance4(x2.value) < 0.000001); +case 11: +return (x1.value).equals(x2.value); +case 12: +return (x1.value).equals(x2.value); +} +}return (x1.isNaN() ? x2.isNaN() : Math.abs(JS.SV.fValue(x1) - JS.SV.fValue(x2)) < 0.000001); +}, "JS.SV,JS.SV"); +c$.isLike = Clazz_defineMethod(c$, "isLike", +function(x1, x2){ +return (x1 != null && x2 != null && x1.tok == 4 && x2.tok == 4 && JU.PT.isLike(x1.value, x2.value)); +}, "JS.SV,JS.SV"); +Clazz_defineMethod(c$, "sortOrReverse", +function(arrayPt){ +var x = this.getList(); +if (x != null && x.size() > 1) { +if (arrayPt == -2147483648) { +var n = x.size(); +for (var i = 0; i < n; i++) { +var v = x.get(i); +x.set(i, x.get(--n)); +x.set(n, v); +} +} else { +java.util.Collections.sort(this.getList(), Clazz_innerTypeInstance(JS.SV.Sort, this, null, --arrayPt, null)); +}}return this; +}, "~N"); +Clazz_defineMethod(c$, "pushPop", +function(mapKey, value){ +if (mapKey == null) { +if (this.tok == 4) { +if (value == null) { +var v = this.value; +var n = v.length - 1; +if (n < 0) { +return JS.SV.newS(""); +}var s = v.substring(n); +this.value = v.substring(0, n); +return JS.SV.newS(s); +}this.value = this.value + JS.SV.sValue(value); +return this; +}var m = this.getMap(); +if (m == null) { +var x = this.getList(); +if (value == null || x == null) { +return (x == null || x.size() == 0 ? JS.SV.newS("") : x.removeItemAt(x.size() - 1)); +}x.addLast(JS.SV.copySafely(value)); +} else { +if (value == null) { +m.clear(); +} else { +var m1 = value.getMap(); +if (m1 != null) m.putAll(m1); +}}} else { +var m = this.getMap(); +if (value == null) { +var v = null; +if (m == null) { +var lst = this.getList(); +var len = lst.size(); +var i = JS.SV.iValue(mapKey) - 1; +if (i < 0) i += len; +if (i >= 0 && i < len) { +v = lst.removeItemAt(i); +}} else { +v = m.remove(mapKey.asString()); +}return (v == null ? JS.SV.newS("") : v); +}if (m != null) { +m.put(mapKey.asString(), JS.SV.copySafely(value)); +}}return this; +}, "JS.SV,JS.SV"); +c$.unEscapeBitSet = Clazz_defineMethod(c$, "unEscapeBitSet", +function(x, bs){ +switch (x.tok) { +case 4: +var bs1 = JU.BS.unescape(x.value); +if (bs1 == null) return false; +bs.or(bs1); +return true; +case 10: +bs.or(x.value); +return true; +} +return false; +}, "JS.SV,JU.BS"); +c$.strListValue = Clazz_defineMethod(c$, "strListValue", +function(x){ +if (x.tok != 7) return Clazz_newArray(-1, [JS.SV.sValue(x)]); +var sv = (x).getList(); +var list = new Array(sv.size()); +for (var i = sv.size(); --i >= 0; ) list[i] = JS.SV.sValue(sv.get(i)); + +return list; +}, "JS.T"); +c$.getArrayDepth = Clazz_defineMethod(c$, "getArrayDepth", +function(x){ +var n = 0; +var sv; +while (x.tok == 7 && (sv = (x).getList()).size() > 0) { +n++; +x = sv.get(0); +} +return n; +}, "JS.T"); +c$.fflistValue = Clazz_defineMethod(c$, "fflistValue", +function(x, nMin){ +if (x.tok != 7) { +return Clazz_newArray(-1, [ Clazz_newFloatArray(-1, [JS.SV.fValue(x)])]); +}var sv = (x).getList(); +var svlen = sv.size(); +var list; +list = JU.AU.newFloat2(svlen); +if (nMin == 0) nMin = list.length; +for (var i = list.length; --i >= 0; ) list[i] = JS.SV.flistValue(i >= svlen ? null : sv.get(i), 0); + +return list; +}, "JS.T,~N"); +c$.flistValue = Clazz_defineMethod(c$, "flistValue", +function(x, nMin){ +if (x == null || x.tok != 7) return Clazz_newFloatArray(-1, [JS.SV.fValue(x)]); +var sv = (x).getList(); +var list; +list = Clazz_newFloatArray (Math.max(nMin, sv.size()), 0); +if (nMin == 0) nMin = list.length; +for (var i = Math.min(sv.size(), nMin); --i >= 0; ) list[i] = JS.SV.fValue(sv.get(i)); + +return list; +}, "JS.T,~N"); +Clazz_defineMethod(c$, "toArray", +function(){ +var dim; +var o2; +var m3 = null; +var m4 = null; +switch (this.tok) { +case 11: +m3 = this.value; +dim = 3; +break; +case 12: +m4 = this.value; +dim = 4; +break; +case 7: +return this; +case 1275068418: +return this.arrayToList( new JS.SV()); +default: +o2 = new JU.Lst(); +o2.addLast(this); +return JS.SV.newV(7, o2); +} +o2 = new JU.Lst(); +for (var i = 0; i < dim; i++) { +var a = Clazz_newFloatArray (dim, 0); +if (m3 == null) m4.getRow(i, a); + else m3.getRow(i, a); +o2.addLast(JS.SV.getVariableAF(a)); +} +return JS.SV.newV(7, o2); +}); +Clazz_defineMethod(c$, "arrayToList", +function(target){ +if (this.tok != 1275068418 || target == null) return null; +var ao = this.value; +var v = new JU.Lst(); +for (var i = 0, n = ao.length; i < n; i++) { +v.addLast(JS.SV.getVariable(ao[i])); +} +target.tok = 7; +target.value = v; +return target; +}, "JS.SV"); +Clazz_defineMethod(c$, "mapValue", +function(key){ +switch (this.tok) { +case 6: +return (this.value).get(key); +case 14: +var sc = (this.value); +return (key.equals("_path") ? JS.SV.newS(sc.contextPath) : sc.getVariable(key)); +} +return null; +}, "~S"); +Clazz_defineMethod(c$, "getList", +function(){ +switch (this.tok) { +case 7: +return this.value; +case 1275068418: +this.tok = 7; +this.value = this.toArray().value; +return this.value; +default: +return null; +} +}); +c$.isScalar = Clazz_defineMethod(c$, "isScalar", +function(x){ +switch (x.tok) { +case 7: +return false; +case 4: +return ((x.value).indexOf("\n") < 0); +default: +return true; +} +}, "JS.SV"); +Clazz_overrideMethod(c$, "toJSON", +function(){ +switch (this.tok) { +case 1073742335: +case 1073742334: +case 2: +case 3: +return JS.SV.sValue(this); +case 15: +return JU.PT.byteArrayToJSON((this.value).data); +case 14: +return JU.PT.toJSON(null, (this.value).getFullMap()); +case 7: +case 6: +if (this.myName != null) { +this.myName = null; +return (this.tok == 6 ? "{ }" : "[ ]"); +}this.myName = "x"; +var s = JU.PT.toJSON(null, this.value); +this.myName = null; +return s; +default: +return JU.PT.toJSON(null, this.value); +} +}); +Clazz_defineMethod(c$, "mapGet", +function(key){ +return this.getMap().get(key); +}, "~S"); +Clazz_defineMethod(c$, "mapPut", +function(key, v){ +switch (this.tok) { +case 6: +case 14: +this.getMap().put(key, JS.SV.copySafely(v).setName(key)); +break; +} +}, "~S,JS.SV"); +Clazz_defineMethod(c$, "getMap", +function(){ +switch (this.tok) { +case 6: +return this.value; +case 14: +return (this.value).vars; +} +return null; +}); +Clazz_defineMethod(c$, "getMapKeys", +function(nLevels, skipEmpty){ +if (this.tok != 6) return ""; +var sb = new JU.SB(); +JS.SV.sValueArray(sb, this, "", "", true, false, false, nLevels + 1, skipEmpty); +return sb.toString(); +}, "~N,~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.toString2() + "[" + this.myName + " index =" + this.index + " intValue=" + this.intValue + "]"; +}); +Clazz_defineMethod(c$, "getKeys", +function(isAll){ +switch (this.tok) { +case 6: +case 14: +case 7: +break; +default: +return null; +} +var keys = new JU.Lst(); +this.getKeyList(isAll, keys, ""); +var skeys = keys.toArray( new Array(keys.size())); +java.util.Arrays.sort(skeys); +return skeys; +}, "~B"); +Clazz_defineMethod(c$, "getKeyList", +function(isAll, keys, prefix){ +var map = this.getMap(); +if (map == null) { +if (isAll) { +var lst; +var n; +if ((lst = this.getList()) != null && (n = lst.size()) > 0) lst.get(n - 1).getKeyList(true, keys, prefix + "." + n + "."); +}return; +}for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +if (isAll && (k.length == 0 || !JU.PT.isLetter(k.charAt(0)))) { +if (prefix.endsWith(".")) prefix = prefix.substring(0, prefix.length - 1); +k = "[" + JU.PT.esc(k) + "]"; +}keys.addLast(prefix + k); +if (isAll) e.getValue().getKeyList(true, keys, prefix + k + "."); +} +}, "~B,JU.Lst,~S"); +c$.deepCopy = Clazz_defineMethod(c$, "deepCopy", +function(v, isHash, isDeep){ +if (isHash) { +var vold = v; +var vnew = new java.util.Hashtable(); +for (var e, $e = vold.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var v1 = e.getValue(); +vnew.put(e.getKey(), isDeep ? JS.SV.deepCopySV(v1) : v1); +} +return vnew; +}var vold2 = v; +var vnew2 = new JU.Lst(); +for (var i = 0, n = vold2.size(); i < n; i++) { +var vm = vold2.get(i); +vnew2.addLast(isDeep ? JS.SV.deepCopySV(vm) : vm); +} +return vnew2; +}, "~O,~B,~B"); +c$.deepCopySV = Clazz_defineMethod(c$, "deepCopySV", +function(vm){ +switch (vm.tok) { +case 6: +case 7: +if ("\r".equals(vm.myName)) { +vm.myName = null; +vm = JS.SV.newV(vm.tok, (vm.tok == 6 ? new java.util.Hashtable() : new JU.Lst())); +} else { +var name0 = vm.myName; +vm.myName = "\r"; +var vm0 = vm; +vm = JS.SV.newV(vm.tok, JS.SV.deepCopy(vm.value, vm.tok == 6, true)); +vm0.myName = name0; +}break; +} +return vm; +}, "JS.SV"); +Clazz_defineMethod(c$, "sortMapArray", +function(key){ +var lst = this.getList(); +if (lst != null) { +java.util.Collections.sort(this.getList(), Clazz_innerTypeInstance(JS.SV.Sort, this, null, 0, key)); +}return this; +}, "~S"); +c$.safeJSON = Clazz_defineMethod(c$, "safeJSON", +function(key, property){ +return "{" + (Clazz_instanceOf(property,"JS.SV") ? JU.PT.esc(key) + " : " + JS.SV.format( Clazz_newArray(-1, [null, property]), 0) : JU.PT.toJSON(key, property)) + "}"; +}, "~S,~O"); +Clazz_defineMethod(c$, "isNaN", +function(){ +return (this.value === "NaN" || this === JS.SV.vNaN); +}); +c$.$SV$Sort$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.arrayPt = 0; +this.myKey = null; +Clazz_instantialize(this, arguments);}, JS.SV, "Sort", null, java.util.Comparator); +Clazz_makeConstructor(c$, +function(arrayPt, myKey){ +this.arrayPt = arrayPt; +this.myKey = myKey; +}, "~N,~S"); +Clazz_overrideMethod(c$, "compare", +function(x, y){ +if (x.tok != y.tok) { +if (x.tok == 3 || x.tok == 2 || y.tok == 3 || y.tok == 2) { +var fx = JS.SV.fValue(x); +var fy = JS.SV.fValue(y); +return (fx < fy ? -1 : fx > fy ? 1 : 0); +}if (x.tok == 4 || y.tok == 4) return JS.SV.sValue(x).compareTo(JS.SV.sValue(y)); +}switch (x.tok) { +case 2: +return (x.intValue < y.intValue ? -1 : x.intValue > y.intValue ? 1 : 0); +case 4: +return JS.SV.sValue(x).compareTo(JS.SV.sValue(y)); +case 7: +var sx = x.getList(); +var sy = y.getList(); +if (sx.size() != sy.size()) return (sx.size() < sy.size() ? -1 : 1); +var iPt = this.arrayPt; +if (iPt < 0) iPt += sx.size(); +if (iPt < 0 || iPt >= sx.size()) return 0; +return this.compare(sx.get(iPt), sy.get(iPt)); +case 6: +if (this.myKey != null) { +return this.compare(x.getMap().get(this.myKey), y.getMap().get(this.myKey)); +}default: +var fx = JS.SV.fValue(x); +var fy = JS.SV.fValue(y); +return (fx < fy ? -1 : fx > fy ? 1 : 0); +} +}, "JS.SV,JS.SV"); +/*eoif4*/})(); +}; +c$.vT = JS.SV.newSV(1073742335, 1, "true"); +c$.vF = JS.SV.newSV(1073742334, 0, "false"); +c$.vNaN = JS.SV.newSV(3, 2147483647, Float.$valueOf(NaN)); +c$.pt0 = new JU.P3(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["java.util.Hashtable"], "JS.T", ["java.util.Arrays", "JU.AU", "$.Lst", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tok = 0; +this.value = null; +this.intValue = 2147483647; +Clazz_instantialize(this, arguments);}, JS, "T", null); +c$.t = Clazz_defineMethod(c$, "t", +function(tok){ +var token = new JS.T(); +token.tok = tok; +return token; +}, "~N"); +c$.tv = Clazz_defineMethod(c$, "tv", +function(tok, intValue, value){ +var token = JS.T.t(tok); +token.intValue = intValue; +token.value = value; +return token; +}, "~N,~N,~O"); +c$.o = Clazz_defineMethod(c$, "o", +function(tok, value){ +var token = JS.T.t(tok); +token.value = value; +return token; +}, "~N,~O"); +c$.n = Clazz_defineMethod(c$, "n", +function(tok, intValue){ +var token = JS.T.t(tok); +token.intValue = intValue; +return token; +}, "~N,~N"); +c$.i = Clazz_defineMethod(c$, "i", +function(intValue){ +var token = JS.T.t(2); +token.intValue = intValue; +return token; +}, "~N"); +c$.tokAttr = Clazz_defineMethod(c$, "tokAttr", +function(a, b){ +return (a & b) == (b & b); +}, "~N,~N"); +c$.tokAttrOr = Clazz_defineMethod(c$, "tokAttrOr", +function(a, b1, b2){ +return (a & b1) == (b1 & b1) || (a & b2) == (b2 & b2); +}, "~N,~N,~N"); +c$.getPrecedence = Clazz_defineMethod(c$, "getPrecedence", +function(tokOperator){ +return ((tokOperator >> 9) & 0xF); +}, "~N"); +c$.getMaxMathParams = Clazz_defineMethod(c$, "getMaxMathParams", +function(tokCommand){ +return ((tokCommand >> 9) & 0x3); +}, "~N"); +c$.addToken = Clazz_defineMethod(c$, "addToken", +function(ident, token){ +JS.T.tokenMap.put(ident, token); +}, "~S,JS.T"); +c$.getTokenFromName = Clazz_defineMethod(c$, "getTokenFromName", +function(name){ +return JS.T.tokenMap.get(name); +}, "~S"); +c$.getTokFromName = Clazz_defineMethod(c$, "getTokFromName", +function(name){ +var token = JS.T.getTokenFromName(name.toLowerCase()); +return (token == null ? 0 : token.tok); +}, "~S"); +c$.nameOf = Clazz_defineMethod(c$, "nameOf", +function(tok){ +for (var token, $token = JS.T.tokenMap.values().iterator (); $token.hasNext()&& ((token = $token.next ()) || true);) { +if (token.tok == tok) return "" + token.value; +} +return "0x" + Integer.toHexString(tok); +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.toString2(); +}); +Clazz_defineMethod(c$, "toString2", +function(){ +return "Token[" + JS.T.astrType[this.tok < 16 ? this.tok : 16] + "(" + (this.tok % 1000) + "/0x" + Integer.toHexString(this.tok) + ")" + ((this.intValue == 2147483647) ? "" : " intValue=" + this.intValue + "(0x" + Integer.toHexString(this.intValue) + ")") + ((this.value == null) ? "" : (typeof(this.value)=='string') ? " value=\"" + this.value + "\"" : " value=" + this.value) + "]"; +}); +c$.getCommandSet = Clazz_defineMethod(c$, "getCommandSet", +function(strBegin){ +var cmds = ""; +var htSet = new java.util.Hashtable(); +var nCmds = 0; +var s = (strBegin == null || strBegin.length == 0 ? null : strBegin.toLowerCase()); +var isMultiCharacter = (s != null && s.length > 1); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var token = entry.getValue(); +if ((token.tok & 4096) != 0 && (s == null || name.indexOf(s) == 0) && (isMultiCharacter || (token.value).equals(name))) htSet.put(name, Boolean.TRUE); +} +for (var entry, $entry = htSet.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.charAt(name.length - 1) != 's' || !htSet.containsKey(name.substring(0, name.length - 1))) cmds += (nCmds++ == 0 ? "" : ";") + name; +} +return cmds; +}, "~S"); +c$.getAtomPropertiesLike = Clazz_defineMethod(c$, "getAtomPropertiesLike", +function(type){ +type = type.toLowerCase(); +var v = new JU.Lst(); +var isAll = (type.length == 0); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.charAt(0) == '_') continue; +var token = entry.getValue(); +if (JS.T.tokAttr(token.tok, 1077936128) && (isAll || name.toLowerCase().startsWith(type))) { +if (isAll || !(token.value).toLowerCase().startsWith(type)) token = JS.T.o(token.tok, name); +v.addLast(token); +}} +return (v.size() == 0 ? null : v); +}, "~S"); +c$.getTokensLike = Clazz_defineMethod(c$, "getTokensLike", +function(type){ +var attr = (type.equals("setparam") ? 536870912 : type.equals("misc") ? 1073741824 : type.equals("mathfunc") ? 134217728 : 4096); +var notattr = (attr == 536870912 ? 1610612736 : 0); +var v = new JU.Lst(); +for (var entry, $entry = JS.T.tokenMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +var token = entry.getValue(); +if (JS.T.tokAttr(token.tok, attr) && (notattr == 0 || !JS.T.tokAttr(token.tok, notattr))) v.addLast(name); +} +var a = v.toArray( new Array(v.size())); +java.util.Arrays.sort(a); +return a; +}, "~S"); +c$.getSettableTokFromString = Clazz_defineMethod(c$, "getSettableTokFromString", +function(s){ +var tok = JS.T.getTokFromName(s); +return (tok != 0 && JS.T.tokAttr(tok, 2048) && !JS.T.tokAttr(tok, 1140850688) ? tok : 0); +}, "~S"); +c$.completeCommand = Clazz_defineMethod(c$, "completeCommand", +function(map, isSet, asCommand, str, n){ +if (map == null) map = JS.T.tokenMap; + else asCommand = false; +var v = new JU.Lst(); +str = str.toLowerCase(); +for (var name, $name = map.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) { +if (!name.startsWith(str)) continue; +var tok = JS.T.getTokFromName(name); +if (asCommand ? JS.T.tokAttr(tok, 4096) : isSet ? JS.T.tokAttr(tok, 536870912) && !JS.T.tokAttr(tok, 1610612736) : true) v.addLast(name); +} +return JU.AU.sortedItem(v, n); +}, "java.util.Map,~B,~B,~S,~N"); +c$.getParamType = Clazz_defineMethod(c$, "getParamType", +function(tok){ +if (!JS.T.tokAttr(tok, 536870912)) return 0; +return tok & 662700032; +}, "~N"); +c$.getTokensType = Clazz_defineMethod(c$, "getTokensType", +function(map, attr){ +for (var e, $e = JS.T.tokenMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var t = e.getValue(); +if (JS.T.tokAttr(t.tok, attr)) map.put(e.getKey(), e.getValue()); +} +}, "java.util.Map,~N"); +c$.isIDcmd = Clazz_defineMethod(c$, "isIDcmd", +function(cmdtok){ +switch (cmdtok) { +case 135180: +case 135176: +case 135174: +case 135188: +case 134353926: +return true; +default: +return false; +} +}, "~N"); +Clazz_defineMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JS.T"))) return false; +var t = o; +if (this.tok == t.tok) return (t.intValue == this.intValue && (this.tok == 2 || this.tok == 1073742335 || this.tok == 1073742334 || t.value.equals(this.value))); +switch (this.tok) { +case 2: +return (t.tok == 3 && (t.value).floatValue() == this.intValue); +case 3: +return (t.tok == 2 && (this.value).floatValue() == t.intValue); +default: +return false; +} +}, "~O"); +{ +JS.T.astrType = "nada identifier integer decimal string inscode hash array point point4 bitset matrix3f matrix4f array hash bytearray keyword".$plit(" "); +}c$.tokenSpaceBeforeSquare = JS.T.o(1073742195, " "); +c$.tokenOn = JS.T.tv(1073742335, 1, "on"); +c$.tokenOff = JS.T.tv(1073742334, 0, "off"); +c$.tokenAll = JS.T.o(1073742327, "all"); +c$.tokenIf = JS.T.o(134320649, "if"); +c$.tokenAnd = JS.T.o(268438528, "and"); +c$.tokenAndSpec = JS.T.o(268439552, ""); +c$.tokenOr = JS.T.o(268438016, "or"); +c$.tokenAndFALSE = JS.T.o(268438528, "and"); +c$.tokenOrTRUE = JS.T.o(268438016, "or"); +c$.tokenOpIf = JS.T.o(805307393, "?"); +c$.tokenComma = JS.T.o(268436992, ","); +c$.tokenDefineString = JS.T.tv(12290, 4, "@"); +c$.tokenPlus = JS.T.o(268440577, "+"); +c$.tokenMinus = JS.T.o(268440576, "-"); +c$.tokenMul3 = JS.T.o(1275068930, "mul3"); +c$.tokenTimes = JS.T.o(268441089, "*"); +c$.tokenDivide = JS.T.o(268441088, "/"); +c$.tokenLeftParen = JS.T.o(268435968, "("); +c$.tokenRightParen = JS.T.o(268435969, ")"); +c$.tokenArraySquare = JS.T.o(1275068418, "["); +c$.tokenArrayOpen = JS.T.o(268437504, "["); +c$.tokenArrayClose = JS.T.o(268437505, "]"); +c$.tokenLeftBrace = JS.T.o(1073742332, "{"); +c$.tokenExpressionBegin = JS.T.o(1073742325, "expressionBegin"); +c$.tokenExpressionEnd = JS.T.o(1073742326, "expressionEnd"); +c$.tokenConnected = JS.T.o(134217736, "connected"); +c$.tokenCoordinateBegin = JS.T.o(1073742332, "{"); +c$.tokenRightBrace = JS.T.o(1073742338, "}"); +c$.tokenCoordinateEnd = JS.T.tokenRightBrace; +c$.tokenColon = JS.T.o(268436482, ":"); +c$.tokenSetCmd = JS.T.o(36867, "set"); +c$.tokenSet = JS.T.tv(36867, 61, ""); +c$.tokenSetArray = JS.T.tv(36867, 91, ""); +c$.tokenSetProperty = JS.T.tv(36867, 46, ""); +c$.tokenSetVar = JS.T.tv(36868, 61, "var"); +c$.tokenEquals = JS.T.o(268440324, "="); +c$.tokenScript = JS.T.o(134222850, "script"); +c$.tokenSwitch = JS.T.o(102410, "switch"); +c$.tokenMap = new java.util.Hashtable(); +{ +var arrayPairs = Clazz_newArray(-1, ["(", JS.T.tokenLeftParen, ")", JS.T.tokenRightParen, "and", JS.T.tokenAnd, "&", null, "&&", null, "or", JS.T.tokenOr, "|", null, "||", null, "?", JS.T.tokenOpIf, ",", JS.T.tokenComma, "=", JS.T.tokenEquals, "==", null, ":", JS.T.tokenColon, "+", JS.T.tokenPlus, "-", JS.T.tokenMinus, "*", JS.T.tokenTimes, "/", JS.T.tokenDivide, "script", JS.T.tokenScript, "source", null, "set", JS.T.tokenSetCmd, "switch", JS.T.tokenSwitch, "all", JS.T.tokenAll, "off", JS.T.tokenOff, "false", null, "on", JS.T.tokenOn, "true", null]); +var tokenThis; +var tokenLast = null; +var sTok; +var lcase; +var n = arrayPairs.length - 1; +for (var i = 0; i < n; i += 2) { +sTok = arrayPairs[i]; +lcase = sTok.toLowerCase(); +tokenThis = arrayPairs[i + 1]; +if (tokenThis == null) tokenThis = tokenLast; + else if (tokenThis.value == null) tokenThis.value = sTok; +JS.T.tokenMap.put(lcase, tokenThis); +tokenLast = tokenThis; +} +arrayPairs = null; +var sTokens = Clazz_newArray(-1, ["+=", "-=", "*=", "/=", "\\=", "&=", "|=", "not", "!", "xor", "tog", "<", "<=", ">=", ">", "!=", "<>", "LIKE", "within", ".", "..", "[", "]", "{", "}", "$", "%", ";", "++", "--", "**", "\\", "animation", "anim", "assign", "axes", "backbone", "background", "bind", "bondorder", "boundbox", "boundingBox", "break", "calculate", "capture", "cartoon", "cartoons", "case", "catch", "cd", "center", "centre", "centerat", "cgo", "color", "colour", "compare", "configuration", "conformation", "config", "connect", "console", "contact", "contacts", "continue", "data", "default", "define", "@", "delay", "delete", "density", "depth", "dipole", "dipoles", "display", "dot", "dots", "draw", "echo", "ellipsoid", "ellipsoids", "else", "elseif", "end", "endif", "exit", "eval", "file", "files", "font", "for", "format", "frame", "frames", "frank", "function", "functions", "geosurface", "getProperty", "goto", "halo", "halos", "helix", "helixalpha", "helix310", "helixpi", "hbond", "hbonds", "help", "hide", "history", "hover", "if", "in", "initialize", "invertSelected", "isosurface", "javascript", "label", "labels", "lcaoCartoon", "lcaoCartoons", "load", "log", "loop", "matrix", "measure", "measures", "monitor", "monitors", "meshribbon", "meshribbons", "message", "minimize", "minimization", "mo", "model", "models", "modulation", "move", "moveTo", "mutate", "navigate", "navigation", "nbo", "origin", "out", "parallel", "pause", "wait", "plot", "private", "plot3d", "pmesh", "polygon", "polyhedra", "polyhedron", "print", "process", "prompt", "quaternion", "quaternions", "quit", "ramachandran", "rama", "refresh", "reset", "unset", "restore", "restrict", "return", "ribbon", "ribbons", "rocket", "rockets", "rotate", "rotateSelected", "save", "select", "selectionHalos", "selectionHalo", "showSelections", "sheet", "show", "slab", "spacefill", "cpk", "spin", "ssbond", "ssbonds", "star", "stars", "step", "steps", "stereo", "strand", "strands", "structure", "_structure", "strucNo", "struts", "strut", "subset", "subsystem", "synchronize", "sync", "trace", "translate", "translateSelected", "try", "unbind", "unitcell", "var", "vector", "vectors", "vibration", "while", "wireframe", "write", "zap", "zoom", "zoomTo", "atom", "atoms", "axisangle", "basepair", "basepairs", "orientation", "orientations", "pdbheader", "polymer", "polymers", "residue", "residues", "rotation", "row", "sequence", "seqcode", "shape", "state", "symbol", "symmetry", "symmetryHM", "spaceGroup", "transform", "translation", "url", "_", "abs", "absolute", "_args", "acos", "add", "adpmax", "adpmin", "align", "altloc", "altlocs", "ambientOcclusion", "amino", "angle", "array", "as", "_a", "atomID", "_atomID", "atomIndex", "atomName", "atomno", "atomType", "atomX", "atomY", "atomZ", "average", "babel", "babel21", "back", "backlit", "backshell", "balls", "baseModel", "best", "beta", "bin", "bondCount", "bonded", "bottom", "branch", "brillouin", "bzone", "cache", "carbohydrate", "cell", "chain", "chains", "chainNo", "chemicalShift", "cs", "clash", "clear", "clickable", "clipboard", "connected", "context", "constraint", "contourLines", "coord", "coordinates", "coords", "cos", "cross", "covalentRadius", "covalent", "direction", "displacement", "displayed", "distance", "div", "DNA", "domains", "dotted", "DSSP", "DSSR", "element", "elemno", "_e", "error", "exportScale", "fill", "find", "fixedTemperature", "forcefield", "formalCharge", "charge", "eta", "front", "frontlit", "frontOnly", "fullylit", "fx", "fy", "fz", "fxyz", "fux", "fuy", "fuz", "fuxyz", "group", "groups", "group1", "_g", "groupID", "_groupID", "groupIndex", "hidden", "highlight", "hkl", "hydrophobicity", "hydrophobic", "hydro", "id", "identify", "ident", "image", "info", "infoFontSize", "inline", "insertion", "insertions", "intramolecular", "intra", "intermolecular", "inter", "bondingRadius", "ionicRadius", "ionic", "isAromatic", "Jmol", "JSON", "join", "keys", "last", "left", "length", "lines", "list", "magneticShielding", "ms", "mass", "max", "mep", "mesh", "middle", "min", "mlp", "mode", "modify", "modifyOrCreate", "modt", "modt1", "modt2", "modt3", "modx", "mody", "modz", "modo", "modxyz", "molecule", "molecules", "modelIndex", "monomer", "morph", "movie", "mouse", "mul", "mul3", "nboCharges", "nci", "next", "noDelay", "noDots", "noFill", "noMesh", "none", "null", "inherit", "normal", "noBackshell", "noContourLines", "notFrontOnly", "noTriangles", "now", "nucleic", "occupancy", "omega", "only", "opaque", "options", "partialCharge", "pattern", "phi", "pivot", "plane", "planar", "play", "playRev", "point", "points", "pointGroup", "polymerLength", "pop", "previous", "prev", "probe", "property", "properties", "protein", "psi", "purine", "push", "PyMOL", "pyrimidine", "random", "range", "rasmol", "replace", "resno", "resume", "rewind", "reverse", "right", "rmsd", "RNA", "rna3d", "rock", "rubberband", "rxyz", "saSurface", "saved", "scale", "scene", "search", "smarts", "selected", "seqid", "shapely", "sidechain", "sin", "site", "size", "smiles", "substructure", "solid", "sort", "specialPosition", "sqrt", "split", "starWidth", "starScale", "stddev", "straightness", "structureId", "supercell", "sub", "sum", "sum2", "surface", "surfaceDistance", "symop", "symops", "sx", "sy", "sz", "sxyz", "temperature", "relativeTemperature", "tensor", "theta", "thisModel", "ticks", "top", "torsion", "trajectory", "trajectories", "translucent", "transparent", "triangles", "trim", "type", "ux", "uy", "uz", "uxyz", "user", "valence", "vanderWaals", "vdw", "vdwRadius", "visible", "volume", "vx", "vy", "vz", "vxyz", "xyz", "w", "wyckoff", "wyckoffm", "x", "y", "z", "addHydrogens", "allConnected", "angstroms", "anisotropy", "append", "arc", "area", "aromatic", "arrow", "async", "audio", "auto", "axis", "barb", "binary", "blockData", "cancel", "cap", "cavity", "centroid", "check", "checkCIR", "chemical", "circle", "collapsed", "col", "colorScheme", "command", "commands", "contour", "contours", "corners", "count", "criterion", "create", "crossed", "curve", "cutoff", "cylinder", "diameter", "discrete", "distanceFactor", "downsample", "drawing", "dynamicMeasurements", "eccentricity", "ed", "edges", "edgesOnly", "energy", "exitJmol", "faceCenterOffset", "filter", "first", "fixed", "fix", "flat", "fps", "from", "frontEdges", "full", "fullPlane", "functionXY", "functionXYZ", "gridPoints", "hiddenLinesDashed", "homo", "ignore", "InChI", "InChIKey", "increment", "insideout", "interior", "intersection", "intersect", "internal", "lattice", "line", "lineData", "link", "lobe", "lonePair", "lp", "lumo", "macro", "manifest", "mapProperty", "maxSet", "menu", "minSet", "modelBased", "molecular", "mrc", "msms", "name", "nmr", "noCross", "noDebug", "noEdges", "noHead", "noLoad", "noPlane", "object", "obj", "offset", "offsetSide", "once", "orbital", "atomicOrbital", "packed", "palindrome", "parameters", "path", "pdb", "period", "periodic", "perpendicular", "perp", "phase", "planarParam", "pocket", "pointsPerAngstrom", "radical", "rad", "reference", "remove", "resolution", "reverseColor", "rotate45", "selection", "sigma", "sign", "silent", "sphere", "squared", "stdInChI", "stdInChIKey", "stop", "title", "titleFormat", "to", "validation", "value", "variable", "variables", "vertices", "width", "wigner", "wignerSeitz", "backgroundModel", "celShading", "celShadingPower", "debug", "debugHigh", "defaultLattice", "measurements", "measurement", "scale3D", "toggleLabel", "userColorScheme", "throw", "timeout", "timeouts", "window", "animationMode", "appletProxy", "atomTypes", "axesColor", "axis1Color", "axis2Color", "axis3Color", "backgroundColor", "bondmode", "boundBoxColor", "boundingBoxColor", "chirality", "cipRule", "currentLocalPath", "dataSeparator", "defaultAngleLabel", "defaultColorScheme", "defaultColors", "defaultDirectory", "defaultDistanceLabel", "defaultDropScript", "defaultLabelPDB", "defaultLabelXYZ", "defaultLoadFilter", "defaultLoadScript", "defaults", "defaultTorsionLabel", "defaultVDW", "drawFontSize", "eds", "edsDiff", "energyUnits", "fileCacheDirectory", "fontsize", "helpPath", "hoverLabel", "language", "loadFormat", "loadLigandFormat", "logFile", "measurementUnits", "nihResolverFormat", "nmrPredictFormat", "nmrUrlFormat", "pathForAllFiles", "picking", "pickingStyle", "pickLabel", "platformSpeed", "propertyColorScheme", "quaternionFrame", "smilesUrlFormat", "smiles2dImageFormat", "unitCellColor", "axesOffset", "axisOffset", "axesScale", "axisScale", "bondTolerance", "cameraDepth", "defaultDrawArrowScale", "defaultTranslucent", "dipoleScale", "ellipsoidAxisDiameter", "gestureSwipeFactor", "hbondsAngleMinimum", "hbondHXDistanceMaximum", "hbondsDistanceMaximum", "hbondNODistanceMaximum", "hoverDelay", "loadAtomDataTolerance", "minBondDistance", "minimizationCriterion", "minimizationMaxAtoms", "modulationScale", "mouseDragFactor", "mouseWheelFactor", "navFPS", "navigationDepth", "navigationSlab", "navigationSpeed", "navX", "navY", "navZ", "particleRadius", "pointGroupDistanceTolerance", "pointGroupLinearTolerance", "radius", "rotationRadius", "scaleAngstromsPerInch", "sheetSmoothing", "slabRange", "solventProbeRadius", "spinFPS", "spinX", "spinY", "spinZ", "stereoDegrees", "strutDefaultRadius", "strutLengthMaximum", "vectorScale", "vectorsCentered", "vectorSymmetry", "vectorTrail", "vibrationPeriod", "vibrationScale", "visualRange", "ambientPercent", "ambient", "animationFps", "axesMode", "bondRadiusMilliAngstroms", "bondingVersion", "delayMaximumMs", "diffusePercent", "diffuse", "dotDensity", "dotScale", "ellipsoidDotCount", "helixStep", "hermiteLevel", "historyLevel", "labelpointerwidth", "lighting", "logLevel", "meshScale", "minimizationReportSteps", "minimizationSteps", "minPixelSelRadius", "percentVdwAtom", "perspectiveModel", "phongExponent", "pickingSpinRate", "propertyAtomNumberField", "propertyAtomNumberColumnCount", "propertyDataColumnCount", "propertyDataField", "repaintWaitMs", "ribbonAspectRatio", "contextDepthMax", "scriptReportingLevel", "showScript", "smallMoleculeMaxAtoms", "specular", "specularExponent", "specularPercent", "specPercent", "specularPower", "specpower", "strandCount", "strandCountForMeshRibbon", "strandCountForStrands", "strutSpacing", "zDepth", "zSlab", "zshadePower", "allowEmbeddedScripts", "allowGestures", "allowKeyStrokes", "allowModelKit", "allowMoveAtoms", "allowMultiTouch", "allowRotateSelected", "antialiasDisplay", "antialiasImages", "antialiasTranslucent", "appendNew", "applySymmetryToBonds", "atomPicking", "allowAudio", "autobond", "autoFPS", "autoplayMovie", "axesMolecular", "axesOrientationRasmol", "axesUnitCell", "axesWindow", "bondModeOr", "bondPicking", "bonds", "bond", "cartoonBaseEdges", "cartoonBlocks", "cartoonBlockHeight", "cartoonsFancy", "cartoonFancy", "cartoonLadders", "cartoonRibose", "cartoonRockets", "cartoonSteps", "chainCaseSensitive", "cipRule6Full", "colorRasmol", "debugScript", "defaultStructureDssp", "disablePopupMenu", "displayCellParameters", "showUnitcellInfo", "dotsSelectedOnly", "dotSurface", "doublePrecision", "dragSelected", "drawHover", "drawPicking", "dsspCalculateHydrogenAlways", "elementKey", "ellipsoidArcs", "ellipsoidArrows", "ellipsoidAxes", "ellipsoidBall", "ellipsoidDots", "ellipsoidFill", "fileCaching", "fontCaching", "fontScaling", "forceAutoBond", "fractionalRelative", "greyscaleRendering", "hbondsBackbone", "hbondsRasmol", "hbondsSolid", "hetero", "hideNameInPopup", "hideNavigationPoint", "hideNotSelected", "highResolution", "hydrogen", "hydrogens", "imageState", "isKiosk", "isosurfaceKey", "isosurfacePropertySmoothing", "isosurfacePropertySmoothingPower", "jmolInJSpecView", "justifyMeasurements", "languageTranslation", "leadAtom", "leadAtoms", "legacyAutoBonding", "legacyHAddition", "legacyJavaFloat", "logCommands", "logGestures", "macroDirectory", "measureAllModels", "measurementLabels", "measurementNumbers", "messageStyleChime", "minimizationRefresh", "minimizationSilent", "modelkit", "modelkitMode", "modulateOccupancy", "monitorEnergy", "multiplebondbananas", "multipleBondRadiusFactor", "multipleBondSpacing", "multiProcessor", "navigateSurface", "navigationMode", "navigationPeriodic", "partialDots", "pdbAddHydrogens", "pdbGetHeader", "pdbSequential", "perspectiveDepth", "preserveState", "rangeSelected", "redo", "redoMove", "refreshing", "ribbonBorder", "rocketBarrels", "saveProteinStructureState", "scriptQueue", "selectAllModels", "selectHetero", "selectHydrogen", "showAxes", "showBoundBox", "showBoundingBox", "showFrank", "showHiddenSelectionHalos", "showHydrogens", "showKeyStrokes", "showMeasurements", "showModulationVectors", "showMultipleBonds", "showNavigationPointAlways", "showTiming", "showUnitcell", "showUnitcellDetails", "slabByAtom", "slabByMolecule", "slabEnabled", "smartAromatic", "solvent", "solventProbe", "ssBondsBackbone", "statusReporting", "strutsMultiple", "syncMouse", "syncScript", "testFlag1", "testFlag2", "testFlag3", "testFlag4", "traceAlpha", "twistedSheets", "undoAuto", "undo", "undoMax", "undoMove", "useMinimizationThread", "useNumberLocalization", "waitForMoveTo", "windowCentered", "wireframeRotation", "zeroBasedXyzRasmol", "zoomEnabled", "zoomHeight", "zoomLarge", "zShade"]); +var iTokens = Clazz_newIntArray(-1, [268442114, -1, -1, -1, -1, -1, -1, 268439040, -1, 268438017, 268438018, 268440323, 268440322, 268440321, 268440320, 268440325, -1, 268440326, 134217759, 1073742336, 1073742337, 268437504, 268437505, 1073742332, 1073742338, 1073742330, 268441090, 1073742339, 268441602, 268441601, 268441603, 268441091, 4097, -1, 4098, 1611272194, 1114249217, 1610616835, 4100, 4101, 1812599299, -1, 102407, 4102, 4103, 1112152066, -1, 102411, 102412, 20488, 12289, -1, 4105, 135174, 1765808134, -1, 134221831, 1094717448, -1, -1, 4106, 528395, 134353926, -1, 102408, 134221834, 102413, 12290, -1, 528397, 12291, 1073741914, 554176526, 135175, -1, 1610625028, 1275069444, 1112150019, 135176, 537022465, 1112150020, -1, 364547, 102402, 102409, 364548, 266255, 134218759, 1228935687, -1, 4114, 134320648, 1287653388, 4115, -1, 1611272202, 134320141, -1, 1112150021, 1275072526, 20500, 1112152070, -1, 136314895, 2097159, 2097160, 2097162, 1613238294, -1, 20482, 12294, 1610616855, 544771, 134320649, 1275068432, 4121, 4122, 135180, 134238732, 1825200146, -1, 135182, -1, 134223363, 36869, 528411, 134217766, 1745489939, -1, -1, -1, 1112152071, -1, 20485, 4126, -1, 1073877010, 1094717454, -1, 1275072532, 4128, 4129, 4130, 4131, -1, 1073877011, 1073742078, 1073742079, 102436, 20487, -1, 4133, 4134, 135190, 135188, 1073742106, 1275203608, -1, 36865, 102439, 134256129, 134221850, -1, 266281, 4138, -1, 266284, 4141, -1, 4142, 12295, 36866, 1112152073, -1, 1112152074, -1, 528432, 4145, 4146, 1275082241, 1611141172, -1, -1, 2097184, 134222350, 554176565, 1112152075, -1, 1611141175, 1611141176, -1, 1112152076, -1, 266298, -1, 528443, 1649022989, -1, 1639976963, -1, 1094713367, 659482, -1, 2109448, 1094713368, 4156, -1, 1112152078, 4160, 4162, 364558, 4163, 1814695966, 36868, 135198, -1, 4166, 102406, 659488, 134221856, 12297, 4168, 4170, 1153433601, -1, 134217731, 1073741863, -1, 1073742077, -1, 1073742088, 1094713362, -1, 1073742120, -1, 1073742132, 1275068935, 1086324744, 1086324747, 1086324748, 1073742158, 1086326798, 1088421903, 603979956, 134217764, 1073742176, 1073742178, 1073742184, 1275068446, 134218250, 1073741826, 134217765, 134218241, 1275069441, 1111490561, 1111490562, 1073741832, 1086324739, -1, 553648129, 2097154, 134217729, 1275068418, 1073741848, 1094713346, -1, -1, 1094713347, 1086326786, 1094715393, 1086326785, 1111492609, 1111492610, 1111492611, 96, 1073741856, 1073741857, 1073741858, 1073741861, 1073741862, 1073741859, 2097200, 1073741864, 1073741865, 1275068420, 1228931586, 2097155, 1073741871, 1073742328, 1073741872, -1, 134221829, 2097188, 1094713349, 1086326788, -1, 1094713351, 1111490563, -1, 1073741881, 1073741882, 2097190, 1073741884, 134217736, 14, 1073741894, 1073741898, 1073742329, -1, -1, 134218245, 1275069442, 1111490564, -1, 1073741918, 1073741922, 2097192, 1275069443, 1275068928, 2097156, 1073741925, 1073741926, 1073741915, 1111490587, 1086326789, 1094715402, 1094713353, 1073741936, 570425357, 1073741938, 1275068427, 1073741946, 545259560, 1631586315, -1, 1111490565, 1073741954, 1073741958, 1073741960, 1073741964, 1111492612, 1111492613, 1111492614, 1145047050, 1111492615, 1111492616, 1111492617, 1145047053, 1086324742, -1, 1086324743, 1094713356, -1, -1, 1094713357, 2097194, 536870920, 134219777, 1113589786, -1, -1, 1073741974, 1086324745, -1, 4120, 1073741982, 553648145, 1073741984, 1086324746, -1, 1073741989, -1, 1073741990, -1, 1111492618, -1, -1, 1073742331, 1073741991, 1073741992, 1275069446, 1140850706, 1073741993, 1073741996, 1140850691, 1140850692, 1073742001, 1111490566, -1, 1111490567, 64, 1073742016, 1073742018, 1073742019, 32, 1073742022, 1073742024, 1073742025, 1073742026, 1111490580, -1, 1111490581, 1111490582, 1111490583, 1111490584, 1111490585, 1111490586, 1145045008, 1094713360, -1, 1094713359, 1094713361, 1073742029, 1073742031, 1073742030, 1275068929, 1275068930, 603979891, 1073742036, 1073742037, 603979892, 1073742042, 1073742046, 1073742052, 1073742333, -1, -1, 1073742056, 1073742057, 1073742039, 1073742058, 1073742060, 134218760, 2097166, 1128269825, 1111490568, 1073742072, 1073742074, 1073742075, 1111492619, 134218753, 1111490569, 1275068725, 134217750, -1, 1073742096, 1073742098, 134217751, -1, 1275068447, 1094713363, 1275334681, 1073742108, -1, 1073742109, 1715472409, -1, 2097168, 1111490570, 2097170, 1275335685, 1073742110, 2097172, 134219266, 1073742114, 1073742116, 1275068443, 1094715412, 4143, 1073742125, 1140850693, 1073742126, 1073742127, 2097174, 1073742128, 1073742129, 1073742134, 1145045003, 1073742135, 1073742136, 536875059, 1073742139, 134218756, -1, 1113589787, 1094713365, 1073742144, 2097178, 134218244, 1094713366, 1140850694, 134218757, 1237320707, 1073742150, 1275068444, 2097196, 134218246, 1275069447, 570425403, -1, 192, 1111490574, 1086324749, 1073742163, 1275068931, 128, 160, 2097180, 1111490575, 1296041985, -1, 1111490571, 1111490572, 1111490573, 1145047052, 1111492620, -1, 1275068445, 1111490576, 2097182, 1073742164, 1073742172, 1073742174, 536870926, -1, 603979967, -1, 1073742182, 1275068932, 1140850696, 1111490577, 1111490578, 1111490579, 1145045006, 1073742186, 1094715418, 1648363544, -1, -1, 2097198, 1312817669, 1111492626, 1111492627, 1111492628, 1145047055, 1145047049, 1140850705, 1086324754, 1086324755, 1111492629, 1111492630, 1111492631, 1073741828, 1073741834, 1073741836, 1073741837, 1073741839, 1073741840, 1073741842, 1075838996, 1073741846, 1073741849, 1073741851, 1073741852, 1073741854, 1073741860, 1073741866, 1073741868, 1073741874, 1073741875, 1073741876, 1094713350, 1073741877, 603979821, 1073741879, 1073741880, 1073741886, 1275068934, 1073741888, 1073741890, 1073741892, 1073741896, 1073741900, 1073741902, 1275068425, 1073741905, 1073741904, 1073741906, 1073741908, 1073741910, 1073741912, 1073741917, 1073741920, 1073741924, 1073741928, 1073741929, 603979836, 1073741931, 1073741932, 1073741933, 1073741934, 1073741935, 266256, 1073741937, 1073741940, 1073741942, 12293, -1, 1073741948, 1073741950, 1073741952, 1073741956, 1073741961, 1073741962, 1073741966, 1073741968, 1073741970, 603979856, 1073741973, 1073741976, 1275068433, 1073741978, 1073741981, 1073741985, 1073741986, 134217763, -1, 1073741988, 1073741994, 1073741998, 1073742000, 1073741999, 1073742002, 1073742004, 1073742006, 1073742008, 4124, 1073742010, 4125, 1073742014, 1073742015, 1073742020, 1073742027, 1073742028, 1073742032, 1073742033, 1073742034, 1073742038, 1073742040, 1073742041, 1073742044, 1073742048, 1073742050, 1073742054, 1073742064, 1073742062, 1073742066, 1073742068, 1073742070, 1073742076, 1073741850, 1073742080, 1073742082, 1073742083, 1073742084, 1073742086, 1073742090, -1, 1073742092, -1, 1073742094, 1073742099, 1073742100, 1073742104, 1073742112, 1073742111, 1073742118, 1073742119, 1073742122, 1073742124, 1073742130, 1073742140, 1073742146, 1073742147, 1073742148, 1073742154, 1073742156, 1073742159, 1073742160, 1073742162, 1073742166, 1073742168, 1073742170, 1073742189, 1073742188, 1073742190, 1073742192, 1073742194, 1073742196, 1073742197, -1, 536870914, 603979820, 553648135, 536870916, 536870917, 536870918, 537006096, -1, 1610612740, 1610612741, 536870930, 36870, 536875070, -1, 536870932, 545259521, 545259522, 545259524, 545259526, 545259528, 545259530, 545259532, 545259534, 1610612737, 545259536, -1, 1086324752, 1086324753, 545259538, 545259540, 545259542, 545259545, -1, 545259546, 545259547, 545259548, 545259543, 545259544, 545259549, 545259550, 545259552, 545259554, 545259555, 570425355, 545259556, 545259557, 545259558, 545259559, 1610612738, 545259561, 545259562, 545259563, 545259564, 545259565, 545259566, 545259568, 545259570, 545259569, 545259571, 545259572, 545259573, 545259574, 545259576, 553648158, 545259578, 545259580, 545259582, 545259584, 545259586, 570425345, -1, 570425346, -1, 570425348, 570425350, 570425352, 570425353, 570425354, 570425356, 570425358, 570425359, 570425361, 570425360, -1, 570425362, 570425363, 570425364, 570425365, 553648152, 570425366, 570425367, 570425368, 570425371, 570425372, 570425373, 570425374, 570425376, 570425378, 570425380, 570425381, 570425382, 570425384, 1665140738, 570425388, 570425390, 570425392, 570425393, 570425394, 570425396, 570425398, 570425400, 570425402, 570425404, 570425406, 570425408, 1648361473, 603979972, 603979973, 553648185, 570425412, 570425414, 570425416, 553648130, -1, 553648132, 553648133, 553648134, 553648136, 553648137, 553648138, -1, 553648139, 553648140, 553648141, 553648142, 553648143, 553648144, 553648147, 1073741995, 553648148, 553648149, 553648150, 553648151, 553648153, 553648154, 553648155, 553648156, 553648157, 553648160, 553648161, 553648162, 553648164, 553648165, 553648166, 553648167, 553648168, 536870922, 553648170, 536870924, 553648172, 553648174, -1, 553648176, -1, 553648178, 553648180, 553648182, 553648183, 553648186, 553648188, 553648190, 603979778, 603979780, 603979781, 603979782, 603979783, 603979784, 603979785, 603979786, 603979788, 603979790, 603979792, 603979794, 603979796, 603979797, 603979798, 603979800, 603979802, 603979804, 603979806, 603979808, 603979809, 603979812, 603979814, 1677721602, -1, 603979815, 603979810, 570425347, 603979816, -1, 603979817, 603979818, 603979819, 603979811, 603979822, 603979823, 603979824, 603979825, 603979826, 603979827, 603979828, -1, 603979829, 603979830, 603979831, 603979832, 603979833, 603979834, 603979835, 603979838, 603979839, 603979840, 603979841, 603979842, 603979843, 603979844, 603979845, 603979846, 603979847, 603979848, 603979849, 603979850, 603979852, 603979853, 603979854, 1612709894, 603979858, 603979860, 603979862, 603979864, 1612709900, -1, 603979865, 603979866, 603979867, 603979868, 553648146, 603979869, 603979870, 603979871, 2097165, -1, 603979872, 603979873, 603979874, 603979875, 603979876, 545259567, 603979877, 603979878, 1610612739, 603979879, 603979880, 603979881, 603983903, -1, 603979884, 603979885, 603979886, 570425369, 570425370, 603979887, 603979888, 603979889, 603979890, 603979893, 603979894, 603979895, 603979896, 603979897, 603979898, 603979899, 4139, 4140, 603979900, 603979901, 603979902, 603979903, 603979904, 603979906, 603979908, 603979910, 603979914, 603979916, -1, 603979918, 603979920, 603979922, 603979924, 603979926, 603979927, 603979928, 603979930, 603979934, 603979936, 603979937, 603979939, 603979940, 603979942, 603979944, 1612709912, 603979948, 603979952, 603979954, 603979955, 603979957, 603979958, 603979960, 603979962, 603979964, 603979965, 603979966, 603979968, 603979969, 603984065, 553648184, 4165, 603979970, 603979971, 603979975, 603979976, 603979977, 603979978, 603979980, 603979982, 603979983, 603979984]); +if (sTokens.length != iTokens.length) { +JU.Logger.error("sTokens.length (" + sTokens.length + ") != iTokens.length! (" + iTokens.length + ")"); +System.exit(1); +}n = sTokens.length; +for (var i = 0; i < n; i++) { +sTok = sTokens[i]; +lcase = sTok.toLowerCase(); +var t = iTokens[i]; +tokenThis = tokenLast = (t == -1 ? tokenLast : JS.T.o(t, sTok)); +if (JS.T.tokenMap.get(lcase) != null) JU.Logger.error("duplicate token definition:" + lcase); +JS.T.tokenMap.put(lcase, tokenThis); +} +sTokens = null; +iTokens = null; +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape"], "J.shape.AtomShape", ["JU.AU", "$.BS", "J.atomdata.RadiusData", "J.c.PAL", "$.VDW", "JU.BSUtil", "$.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mad = -1; +this.mads = null; +this.colixes = null; +this.paletteIDs = null; +this.isActive = false; +this.rd = null; +this.isSet = false; +this.monomerCount = 0; +this.bsSizeDefault = null; +Clazz_instantialize(this, arguments);}, J.shape, "AtomShape", J.shape.Shape); +Clazz_overrideMethod(c$, "initShape", +function(){ +}); +Clazz_overrideMethod(c$, "initModelSet", +function(){ +this.isSet = true; +var ac = this.ms.ac; +if (this.mads != null) this.mads = JU.AU.arrayCopyShort(this.mads, ac); +if (this.colixes != null) this.colixes = JU.AU.arrayCopyShort(this.colixes, ac); +if (this.paletteIDs != null) this.paletteIDs = JU.AU.arrayCopyByte(this.paletteIDs, ac); +}); +Clazz_overrideMethod(c$, "getSize", +function(atomIndex){ +return (this.mads == null ? 0 : this.mads[atomIndex]); +}, "~N"); +Clazz_overrideMethod(c$, "setSize", +function(size, bsSelected){ +this.setSize2(size, bsSelected); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setSize2", +function(size, bsSelected){ +if (size == 0) { +this.setSizeRD(null, bsSelected); +return; +}if (this.rd == null) this.rd = new J.atomdata.RadiusData(null, size, J.atomdata.RadiusData.EnumType.SCREEN, null); + else this.rd.value = size; +this.setSizeRD(this.rd, bsSelected); +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setSizeRD", +function(rd, bsSelected){ +if (!this.isSet) return; +this.isActive = true; +var isVisible = (rd != null && rd.value != 0); +var isAll = (bsSelected == null); +var ac = this.ms.ac; +var i0 = (isAll ? ac - 1 : bsSelected.nextSetBit(0)); +if (this.bsSizeSet == null) this.bsSizeSet = JU.BS.newN(ac); +if (this.mads == null && i0 >= 0) this.mads = Clazz_newShortArray (ac, 0); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) this.setSizeRD2(i, rd, isVisible); + +}, "J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "setSizeRD2", +function(i, rd, isVisible){ +var atom = this.ms.at[i]; +this.mads[i] = atom.calculateMad(this.vwr, rd); +this.bsSizeSet.setBitTo(i, isVisible); +atom.setShapeVisibility(this.vf, isVisible); +}, "~N,J.atomdata.RadiusData,~B"); +Clazz_defineMethod(c$, "setPropAS", +function(propertyName, value, bs){ +if ("color" === propertyName) { +this.isActive = true; +var colix = JU.C.getColixO(value); +var pid = J.c.PAL.pidOf(value); +var n = this.checkColixLength(colix, bs.length()); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) this.setColixAndPalette(colix, pid, i); + +return; +}if ("params" === propertyName) { +this.isActive = true; +var data = value; +var colixes = data[0]; +var atrans = data[1]; +var sizes = data[2]; +var rd = new J.atomdata.RadiusData(null, 0, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO); +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var i0 = bs.nextSetBit(0); +if (this.mads == null && i0 >= 0) this.mads = Clazz_newShortArray (this.ms.ac, 0); +var n = this.checkColixLength(colixes == null ? 0 : 4, bs.length()); +for (var i = i0, pt = 0; i >= 0 && i < n; i = bs.nextSetBit(i + 1), pt++) { +var colix = (colixes == null ? 0 : colixes[pt]); +var f = (atrans == null ? 0 : atrans[pt]); +if (f > 0.01) colix = JU.C.getColixTranslucent3(colix, true, f); +this.setColixAndPalette(colix, J.c.PAL.UNKNOWN.id, i); +if (sizes == null) continue; +var isVisible = ((rd.value = sizes[pt]) > 0); +this.setSizeRD2(i, rd, isVisible); +} +return; +}if ("translucency" === propertyName) { +this.isActive = true; +var isTranslucent = (value.equals("translucent")); +this.checkColixLength(4, this.ms.ac); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.colixes[i] = JU.C.getColixTranslucent3(this.colixes[i], isTranslucent, this.translucentLevel); +if (isTranslucent) this.bsColixSet.set(i); +} +return; +}if (propertyName === "deleteModelAtoms") { +var info = (value)[2]; +var firstAtomDeleted = info[1]; +var nAtomsDeleted = info[2]; +this.mads = JU.AU.deleteElements(this.mads, firstAtomDeleted, nAtomsDeleted); +this.colixes = JU.AU.deleteElements(this.colixes, firstAtomDeleted, nAtomsDeleted); +this.paletteIDs = JU.AU.deleteElements(this.paletteIDs, firstAtomDeleted, nAtomsDeleted); +JU.BSUtil.deleteBits(this.bsSizeSet, bs); +JU.BSUtil.deleteBits(this.bsColixSet, bs); +return; +}this.setPropS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "checkColixLength", +function(colix, n){ +n = Math.min(this.ms.ac, n); +if (colix == 0) return (this.colixes == null ? 0 : this.colixes.length); +if (this.colixes == null || n > this.colixes.length) { +this.colixes = JU.AU.ensureLengthShort(this.colixes, n); +this.paletteIDs = JU.AU.ensureLengthByte(this.paletteIDs, n); +}if (this.bsColixSet == null) this.bsColixSet = JU.BS.newN(this.ms.ac); +return n; +}, "~N,~N"); +Clazz_defineMethod(c$, "setColixAndPalette", +function(colix, paletteID, atomIndex){ +if (this.colixes == null) { +this.checkColixLength(-1, this.ms.ac); +}this.colixes[atomIndex] = colix = this.getColixI(colix, paletteID, atomIndex); +this.bsColixSet.setBitTo(atomIndex, colix != 0 || this.shapeID == 0); +this.paletteIDs[atomIndex] = paletteID; +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +if (!this.isActive) return; +var atoms = this.ms.at; +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (atom == null || (atom.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(i)) continue; +atom.setClickable(this.vf); +} +}); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.AtomShape"], "J.shape.Balls", ["JU.BS", "J.c.PAL", "JU.C"], function(){ +var c$ = Clazz_declareType(J.shape, "Balls", J.shape.AtomShape); +Clazz_overrideMethod(c$, "setSize", +function(size, bsSelected){ +if (size == 2147483647) { +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +this.bsSizeSet.or(bsSelected); +return; +}this.setSize2(size, bsSelected); +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setSizeRD", +function(rd, bsSelected){ +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var bsLength = Math.min(this.ms.at.length, bsSelected.length()); +for (var i = bsSelected.nextSetBit(0); i >= 0 && i < bsLength; i = bsSelected.nextSetBit(i + 1)) { +var atom = this.ms.at[i]; +atom.setMadAtom(this.vwr, rd); +this.bsSizeSet.set(i); +} +}, "J.atomdata.RadiusData,JU.BS"); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("color" === propertyName) { +var colix = JU.C.getColixO(value); +if (colix == 0) colix = 2; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var pid = J.c.PAL.pidOf(value); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var atom = this.ms.at[i]; +atom.colixAtom = this.getColixA(colix, pid, atom); +this.bsColixSet.setBitTo(i, colix != 2 || pid != J.c.PAL.NONE.id); +atom.paletteID = pid; +} +this.vwr.setModelkitPropertySafely("updateatomkeys", bs); +return; +}if ("colorValues" === propertyName) { +var values = value; +if (values.length == 0) return; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var n = 0; +var color = null; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (n >= values.length) return; +color = Integer.$valueOf(values[n++]); +var colix = JU.C.getColixO(color); +if (colix == 0) colix = 2; +var pid = J.c.PAL.pidOf(color); +var atom = this.ms.at[i]; +atom.colixAtom = this.getColixA(colix, pid, atom); +this.bsColixSet.setBitTo(i, colix != 2 || pid != J.c.PAL.NONE.id); +atom.paletteID = pid; +} +return; +}if ("colors" === propertyName) { +var data = value; +var colixes = data[0]; +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var c; +var atoms = this.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (i >= colixes.length || (c = colixes[i]) == 0) continue; +atoms[i].colixAtom = c; +atoms[i].paletteID = J.c.PAL.UNKNOWN.id; +this.bsColixSet.set(i); +} +return; +}if ("translucency" === propertyName) { +var isTranslucent = ((value).equals("translucent")); +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var atoms = this.ms.at; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +atoms[i].setTranslucent(isTranslucent, this.translucentLevel); +if (isTranslucent) this.bsColixSet.set(i); +} +return; +}if (propertyName.startsWith("ball")) { +propertyName = propertyName.substring(4).intern(); +}this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +var bsDeleted = this.vwr.slm.bsDeleted; +for (var i = this.ms.ac; --i >= 0; ) { +var atom = this.ms.at[i]; +if (atom == null) continue; +atom.setClickable(0); +if (bsDeleted != null && bsDeleted.get(i) || (atom.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(i)) continue; +atom.setClickable(this.vf); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape"], "J.shape.FontLineShape", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tickInfos = null; +this.font3d = null; +Clazz_instantialize(this, arguments);}, J.shape, "FontLineShape", J.shape.Shape); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.translucentAllowed = false; +}); +Clazz_defineMethod(c$, "setPropFLS", +function(propertyName, value){ +if ("tickInfo" === propertyName) { +var t = value; +var type = t.type; +if (t.ticks == null) { +if (t.type == ' ') { +this.tickInfos = null; +return; +}if (this.tickInfos != null) { +var haveTicks = false; +for (var i = 0; i < 4; i++) { +if (this.tickInfos[i] != null && this.tickInfos[i].type == t.type) { +this.tickInfos[i] = null; +} else { +haveTicks = true; +}} +if (!haveTicks) this.tickInfos = null; +}return; +}if (this.tickInfos == null) this.tickInfos = new Array(4); +this.tickInfos["xyz".indexOf(type) + 1] = t; +return; +}if ("font" === propertyName) { +this.font3d = value; +return; +}}, "~S,~O"); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape"], "J.shape.Frank", ["J.i18n.GT", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.currentMetricsFont3d = null; +this.baseFont3d = null; +this.frankWidth = 0; +this.frankAscent = 0; +this.frankDescent = 0; +this.x = 0; +this.y = 0; +this.dx = 0; +this.dy = 0; +this.scaling = 0; +this.font3d = null; +Clazz_instantialize(this, arguments);}, J.shape, "Frank", J.shape.Shape); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.myType = "frank"; +this.baseFont3d = this.font3d = this.vwr.gdata.getFont3DFSS("SansSerif", "Plain", 16); +if (JV.Viewer.isJS || JV.Viewer.isSwingJS) J.shape.Frank.frankString = "JSmol"; + else if (false) J.shape.Frank.frankString = "JmolD"; +this.calcMetrics(); +}); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("font" === propertyName) { +var f = value; +if (f.fontSize >= 10) { +this.baseFont3d = f; +this.scaling = 0; +}}return; +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "wasClicked", +function(x, y){ +var width = this.vwr.getScreenWidth(); +var height = this.vwr.getScreenHeight(); +return (width > 0 && height > 0 && x > width - this.frankWidth - 4 && y > height - this.frankAscent - 4); +}, "~N,~N"); +Clazz_overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +if (!this.vwr.getShowFrank() || !this.wasClicked(x, y) || !this.vwr.menuEnabled()) return false; +this.vwr.hoverOnPt(x, y, J.i18n.GT.$("Click for menu..."), null, null); +return true; +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "calcMetrics", +function(){ +if (this.font3d === this.currentMetricsFont3d) return; +this.currentMetricsFont3d = this.font3d; +this.frankWidth = this.font3d.stringWidth(J.shape.Frank.frankString); +this.frankDescent = this.font3d.getDescent(); +this.frankAscent = this.font3d.getAscent(); +}); +Clazz_defineMethod(c$, "getFont", +function(imageFontScaling){ +if (imageFontScaling != this.scaling) { +this.scaling = imageFontScaling; +this.font3d = this.vwr.gdata.getFont3DScaled(this.baseFont3d, imageFontScaling); +this.calcMetrics(); +}}, "~N"); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +c$.frankString = "Jmol"; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(null, "J.shape.Shape", ["J.c.PAL", "JU.C", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.myType = null; +this.vwr = null; +this.ms = null; +this.shapeID = 0; +this.vf = 0; +this.translucentLevel = 0; +this.translucentAllowed = true; +this.isBioShape = false; +this.bsSizeSet = null; +this.bsColixSet = null; +Clazz_instantialize(this, arguments);}, J.shape, "Shape", null); +Clazz_defineMethod(c$, "initializeShape", +function(vwr, modelSet, shapeID){ +this.vwr = vwr; +this.shapeID = shapeID; +this.vf = JV.JC.getShapeVisibilityFlag(shapeID); +this.setModelSet(modelSet); +this.initShape(); +}, "JV.Viewer,JM.ModelSet,~N"); +Clazz_defineMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +}, "JU.BS"); +Clazz_defineMethod(c$, "getSize", +function(atomIndex){ +return 0; +}, "~N"); +Clazz_defineMethod(c$, "getSizeG", +function(group){ +return 0; +}, "JM.Group"); +Clazz_defineMethod(c$, "replaceGroup", +function(g0, g1){ +}, "JM.Group,JM.Group"); +Clazz_defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = modelSet; +this.initModelSet(); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "initModelSet", +function(){ +}); +Clazz_defineMethod(c$, "setShapeSizeRD", +function(size, rd, bsSelected){ +if (rd == null) this.setSize(size, bsSelected); + else this.setSizeRD(rd, bsSelected); +}, "~N,J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "setSize", +function(size, bsSelected){ +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setSizeRD", +function(rd, bsSelected){ +}, "J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "setPropS", +function(propertyName, value, bsSelected){ +if (propertyName === "setProperties") { +this.setProperties(value); +return; +}if (propertyName === "translucentLevel") { +this.translucentLevel = (value).floatValue(); +return; +}if (propertyName === "refreshTrajectories") { +return; +}JU.Logger.warn("unassigned " + JV.JC.shapeClassBases[this.shapeID] + " + shape setProperty:" + propertyName + ":" + value); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "getPropertyData", +function(property, data){ +return this.getPropShape(property, data); +}, "~S,~A"); +Clazz_defineMethod(c$, "getPropShape", +function(property, data){ +if (Clazz_instanceOf(data[1], Integer)) { +var index = (data[1]).intValue(); +data[1] = this.getProperty(property, index); +return (data[1] != null); +}return false; +}, "~S,~A"); +Clazz_defineMethod(c$, "getProperty", +function(property, index){ +return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "getIndexFromName", +function(thisID){ +return -1; +}, "~S"); +Clazz_defineMethod(c$, "wasClicked", +function(x, y){ +return false; +}, "~N,~N"); +Clazz_defineMethod(c$, "findNearestAtomIndex", +function(xMouse, yMouse, closest, bsNot){ +}, "~N,~N,~A,JU.BS"); +Clazz_defineMethod(c$, "checkBoundsMinMax", +function(pointMin, pointMax){ +}, "JU.P3,JU.P3"); +Clazz_defineMethod(c$, "setAtomClickability", +function(){ +}); +Clazz_defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +return null; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +return false; +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, dragAction, bsVisible){ +return false; +}, "~N,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "coordinateInRange", +function(x, y, vertex, dmin2, ptXY){ +this.vwr.tm.transformPtScr(vertex, ptXY); +var d2 = (x - ptXY.x) * (x - ptXY.x) + (y - ptXY.y) * (y - ptXY.y); +return (d2 <= dmin2 ? d2 : -1); +}, "~N,~N,JU.T3,~N,JU.P3i"); +Clazz_defineMethod(c$, "getColixI", +function(colix, paletteID, atomIndex){ +return this.getColixA(colix, paletteID, this.ms.at[atomIndex]); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getColixA", +function(colix, paletteID, atom){ +return (colix == 2 ? this.vwr.cm.getColixAtomPalette(atom, paletteID) : colix); +}, "~N,~N,JM.Atom"); +Clazz_defineMethod(c$, "getColixB", +function(colix, pid, bond){ +return (colix == 2 ? this.vwr.cm.getColixBondPalette(bond, pid) : colix); +}, "~N,~N,JM.Bond"); +Clazz_defineMethod(c$, "getShapeDetail", +function(){ +return null; +}); +c$.getColix = Clazz_defineMethod(c$, "getColix", +function(colixes, i, atom){ +return JU.C.getColixInherited((colixes == null || i >= colixes.length ? 0 : colixes[i]), atom.colixAtom); +}, "~A,~N,JM.Atom"); +c$.getFontCommand = Clazz_defineMethod(c$, "getFontCommand", +function(type, font){ +if (font == null) return ""; +return "font " + type + " " + font.getInfo(); +}, "~S,JU.Font"); +c$.getColorCommandUnk = Clazz_defineMethod(c$, "getColorCommandUnk", +function(type, colix, translucentAllowed){ +return J.shape.Shape.getColorCommand(type, J.c.PAL.UNKNOWN.id, colix, translucentAllowed); +}, "~S,~N,~B"); +c$.getColorCommand = Clazz_defineMethod(c$, "getColorCommand", +function(type, pid, colix, translucentAllowed){ +if (pid == J.c.PAL.UNKNOWN.id && colix == 0) return ""; +var s = (pid == J.c.PAL.UNKNOWN.id && colix == 0 ? "" : (translucentAllowed ? J.shape.Shape.getTranslucentLabel(colix) + " " : "") + (pid != J.c.PAL.UNKNOWN.id && !J.c.PAL.isPaletteVariable(pid) ? J.c.PAL.getPaletteName(pid) : J.shape.Shape.encodeColor(colix))); +return "color " + type + " " + s; +}, "~S,~N,~N,~B"); +c$.encodeColor = Clazz_defineMethod(c$, "encodeColor", +function(colix){ +return (JU.C.isColixColorInherited(colix) ? "none" : JU.C.getHexCode(colix)); +}, "~N"); +c$.getTranslucentLabel = Clazz_defineMethod(c$, "getTranslucentLabel", +function(colix){ +return (JU.C.isColixTranslucent(colix) ? JU.C.getColixTranslucencyLabel(colix) : "opaque"); +}, "~N"); +c$.appendCmd = Clazz_defineMethod(c$, "appendCmd", +function(s, cmd){ +if (cmd.length == 0) return; +s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz_defineMethod(c$, "setProperties", +function(value){ +var bsSelected = this.vwr.bsA(); +if (Clazz_instanceOf(value,"JU.Lst")) { +var propertyList = value; +while (propertyList.size() > 0) { +var data = propertyList.removeItemAt(0); +this.setProperty((data[0]).intern(), data[1], bsSelected); +} +} else { +var data = (value); +for (var i = 0, n = data.length; i < n; i++) { +this.setProperty((data[i][0]).intern(), data[i][1], bsSelected); +} +}}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape", "JU.P3i"], "J.shape.Sticks", ["java.util.Hashtable", "JU.BS", "$.P3", "J.c.PAL", "JU.BSUtil", "$.C", "$.Edge", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.myMask = 0; +this.reportAll = false; +this.bsOrderSet = null; +this.selectedBonds = null; +this.closestAtom = null; +this.ptXY = null; +Clazz_instantialize(this, arguments);}, J.shape, "Sticks", J.shape.Shape); +Clazz_prepareFields (c$, function(){ +this.closestAtom = Clazz_newIntArray (1, 0); +this.ptXY = new JU.P3i(); +}); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.myMask = 1023; +this.reportAll = false; +}); +Clazz_overrideMethod(c$, "setSize", +function(size, bsSelected){ +if (size == 2147483647) { +this.selectedBonds = JU.BSUtil.copy(bsSelected); +return; +}if (size == -2147483648) { +if (this.bsOrderSet == null) this.bsOrderSet = new JU.BS(); +this.bsOrderSet.or(bsSelected); +return; +}if (this.bsSizeSet == null) this.bsSizeSet = new JU.BS(); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bsSelected)); +var mad = size; +while (iter.hasNext()) { +this.bsSizeSet.set(iter.nextIndex()); +iter.next().setMad(mad); +} +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("type" === propertyName) { +this.myMask = (value).intValue(); +return; +}if ("reportAll" === propertyName) { +this.reportAll = true; +return; +}if ("reset" === propertyName) { +this.bsOrderSet = null; +this.bsSizeSet = null; +this.bsColixSet = null; +this.selectedBonds = null; +return; +}if ("bondOrder" === propertyName) { +if (this.bsOrderSet == null) this.bsOrderSet = new JU.BS(); +var order = (value).intValue(); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(65535, bs)); +while (iter.hasNext()) { +this.bsOrderSet.set(iter.nextIndex()); +iter.next().setOrder(order); +} +return; +}if ("color" === propertyName) { +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var colix = JU.C.getColixO(value); +var pal = (Clazz_instanceOf(value,"J.c.PAL") ? value : null); +if (pal === J.c.PAL.TYPE || pal === J.c.PAL.ENERGY) { +var isEnergy = (pal === J.c.PAL.ENERGY); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +this.bsColixSet.set(iter.nextIndex()); +var bond = iter.next(); +bond.colix = (isEnergy ? this.getColixB(colix, pal.id, bond) : JU.C.getColix(JU.Edge.getArgbHbondType(bond.order))); +} +return; +}if (colix == 2 && pal !== J.c.PAL.CPK) return; +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +var iBond = iter.nextIndex(); +iter.next().colix = colix; +this.bsColixSet.setBitTo(iBond, (colix != 0 && colix != 2)); +} +return; +}if ("translucency" === propertyName) { +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +var isTranslucent = ((value).equals("translucent")); +var iter = (this.selectedBonds != null ? this.ms.getBondIterator(this.selectedBonds) : this.ms.getBondIteratorForType(this.myMask, bs)); +while (iter.hasNext()) { +this.bsColixSet.set(iter.nextIndex()); +iter.next().setTranslucent(isTranslucent, this.translucentLevel); +} +return; +}if ("deleteModelAtoms" === propertyName) { +return; +}this.setPropS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "getProperty", +function(property, index){ +if (property.equals("selectionState")) return (this.selectedBonds != null ? "select BONDS " + JU.Escape.eBS(this.selectedBonds) + "\n" : ""); +if (property.equals("sets")) return Clazz_newArray(-1, [this.bsOrderSet, this.bsSizeSet, this.bsColixSet]); +return null; +}, "~S,~N"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if ((bond.shapeVisibilityFlags & this.vf) == 0 || this.ms.isAtomHidden(bond.atom1.i) || this.ms.isAtomHidden(bond.atom2.i)) continue; +bond.atom1.setClickable(this.vf); +bond.atom2.setClickable(this.vf); +} +}); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +var pt = new JU.P3(); +var bond = this.findPickedBond(x, y, bsVisible, pt, this.closestAtom); +if (bond == null) return false; +this.vwr.highlightBond(bond.index, this.closestAtom[0], x, y); +return true; +}, "~N,~N,JU.BS"); +Clazz_overrideMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +var pt = new JU.P3(); +var bond = this.findPickedBond(x, y, bsVisible, pt, this.closestAtom); +if (bond == null) return null; +var modelIndex = bond.atom1.mi; +var info = bond.getIdentity(); +var map = new java.util.Hashtable(); +map.put("pt", pt); +map.put("index", Integer.$valueOf(bond.index)); +map.put("modelIndex", Integer.$valueOf(modelIndex)); +map.put("model", this.vwr.getModelNumberDotted(modelIndex)); +map.put("type", "bond"); +map.put("info", info); +this.vwr.setStatusAtomPicked(-3, "[\"bond\",\"" + bond.getIdentity() + "\"," + pt.x + "," + pt.y + "," + pt.z + "]", map, false); +return map; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "findPickedBond", +function(x, y, bsVisible, pt, closestAtom){ +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}var pickedBond = null; +var v = new JU.P3(); +var bonds = this.ms.bo; +for (var i = this.ms.bondCount; --i >= 0; ) { +var bond = bonds[i]; +if (bond.shapeVisibilityFlags == 0) continue; +var atom1 = bond.atom1; +var atom2 = bond.atom2; +if (!atom1.checkVisible() || !atom2.checkVisible()) continue; +v.ave(atom1, atom2); +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0 && Math.abs(atom1.sY - atom2.sY) + Math.abs(atom1.sX - atom2.sX) > 40) { +var f = 1 * (this.ptXY.x - atom1.sX) / (atom2.sX - atom1.sX); +if (f < 0.4 || f > 0.6) continue; +dmin2 = d2; +pickedBond = bond; +if (closestAtom != null) closestAtom[0] = (f < 0.5 ? atom1.i : atom2.i); +pt.setT(v); +}} +return pickedBond; +}, "~N,~N,JU.BS,JU.P3,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.thread"); +Clazz_load(["J.thread.JmolThread"], "J.thread.HoverWatcherThread", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.actionManager = null; +this.current = null; +this.moved = null; +this.hoverDelay = 0; +Clazz_instantialize(this, arguments);}, J.thread, "HoverWatcherThread", J.thread.JmolThread); +Clazz_makeConstructor(c$, +function(actionManager, current, moved, vwr){ +this.setViewer(vwr, "HoverWatcher"); +this.actionManager = actionManager; +this.current = current; +this.moved = moved; +this.start(); +}, "JV.ActionManager,JV.MouseState,JV.MouseState,JV.Viewer"); +Clazz_overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +if (!this.isJS) Thread.currentThread().setPriority(1); +mode = 0; +break; +case 0: +this.hoverDelay = this.vwr.getHoverDelay(); +if (this.stopped || this.hoverDelay <= 0 || !this.runSleep(this.hoverDelay, 1)) return; +mode = 1; +break; +case 1: +if (this.moved.is(this.current)) { +this.currentTime = System.currentTimeMillis(); +var howLong = (this.currentTime - this.moved.time); +if (howLong > (this.vwr.acm.zoomTrigger ? 100 : this.hoverDelay) && !this.stopped) { +this.actionManager.checkHover(); +}}mode = 0; +break; +} + +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.thread"); +Clazz_load(["java.lang.Thread"], "J.thread.JmolThread", ["JU.Logger", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$name = "JmolThread"; +this.vwr = null; +this.eval = null; +this.sc = null; +this.haveReference = false; +this.hoverEnabled = false; +this.startTime = 0; +this.targetTime = 0; +this.lastRepaintTime = 0; +this.currentTime = 0; +this.sleepTime = 0; +this.isJS = false; +this.stopped = false; +this.isReset = false; +this.useTimeout = true; +this.junk = 0; +Clazz_instantialize(this, arguments);}, J.thread, "JmolThread", Thread); +Clazz_defineMethod(c$, "setManager", +function(manager, vwr, params){ +return 0; +}, "~O,JV.Viewer,~O"); +Clazz_defineMethod(c$, "setViewer", +function(vwr, name){ +this.setName(name); +this.$name = name + "_" + (++J.thread.JmolThread.threadIndex); +this.vwr = vwr; +this.isJS = vwr.isSingleThreaded; +}, "JV.Viewer,~S"); +Clazz_defineMethod(c$, "setEval", +function(eval){ +this.eval = eval; +this.sc = this.vwr.getEvalContextAndHoldQueue(eval); +if (this.sc != null) this.useTimeout = eval.getAllowJSThreads(); +}, "J.api.JmolScriptEvaluator"); +Clazz_defineMethod(c$, "resumeEval", +function(){ +if (this.eval == null || !this.isJS && !this.vwr.testAsync || !this.useTimeout) return; +this.sc.mustResumeEval = !this.stopped; +var eval = this.eval; +var sc = this.sc; +this.eval = null; +this.sc = null; +{ +setTimeout(function() { eval.resumeEval(sc); }, 1); +}}); +Clazz_overrideMethod(c$, "start", +function(){ +{ +this.run(); +}}); +Clazz_overrideMethod(c$, "run", +function(){ +this.startTime = System.currentTimeMillis(); +try { +this.run1(-1); +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"InterruptedException")){ +var e = e$$; +{ +if (JU.Logger.debugging && !(Clazz_instanceOf(this,"J.thread.HoverWatcherThread"))) this.oops(e); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +this.oops(e); +} +} else { +throw e$$; +} +} +}); +Clazz_defineMethod(c$, "oops", +function(e){ +JU.Logger.debug(this.$name + " exception " + e); +if (!JV.Viewer.isJS || JV.Viewer.isSwingJS) e.printStackTrace(); +this.vwr.queueOnHold = false; +}, "Exception"); +Clazz_defineMethod(c$, "runSleep", +function(millis, runPtr){ +if (this.isJS && !this.useTimeout) { +return true; +}{ +var me = this; +setTimeout(function(){me.run1(runPtr)}, Math.max(millis, 0)); +return false; +}}, "~N,~N"); +Clazz_defineMethod(c$, "interrupt", +function(){ +this.stopped = true; +this.vwr.startHoverWatcher(true); +if (!this.isJS) Clazz_superCall(this, J.thread.JmolThread, "interrupt", []); +}); +Clazz_defineMethod(c$, "checkInterrupted", +function(ref){ +if (this.haveReference && (ref == null || !ref.$name.equals(this.$name))) return true; +{ +return this.stopped; +}}, "J.thread.JmolThread"); +Clazz_defineMethod(c$, "reset", +function(){ +this.isReset = true; +this.interrupt(); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return Clazz_superCall(this, J.thread.JmolThread, "toString", []) + "[" + this.$name + "]"; +}); +c$.threadIndex = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.thread"); +Clazz_load(["J.thread.JmolThread"], "J.thread.TimeoutThread", ["JU.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.script = null; +this.status = 0; +this.triggered = true; +Clazz_instantialize(this, arguments);}, J.thread, "TimeoutThread", J.thread.JmolThread); +Clazz_makeConstructor(c$, +function(vwr, name, ms, script){ +this.setViewer(vwr, name); +this.$name = name; +this.set(ms, script); +}, "JV.Viewer,~S,~N,~S"); +Clazz_defineMethod(c$, "set", +function(ms, script){ +this.sleepTime = ms; +if (script != null) this.script = script; +}, "~N,~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "timeout name=" + this.$name + " executions=" + this.status + " mSec=" + this.sleepTime + " secRemaining=" + (this.targetTime - System.currentTimeMillis()) / 1000 + " script=" + this.script; +}); +Clazz_overrideMethod(c$, "run1", +function(mode){ +while (true) { +switch (mode) { +case -1: +if (!this.isJS) Thread.currentThread().setPriority(1); +this.targetTime = System.currentTimeMillis() + Math.abs(this.sleepTime); +mode = 0; +break; +case 0: +if (this.checkInterrupted(null) || this.script == null || this.script.length == 0) return; +if (!this.runSleep(26, 1)) return; +mode = 1; +break; +case 1: +mode = (System.currentTimeMillis() < this.targetTime ? 0 : 2); +break; +case 2: +this.currentTime = System.currentTimeMillis(); +if (this.vwr.timeouts.get(this.$name) == null) return; +this.status++; +var continuing = (this.sleepTime < 0); +if (continuing) this.targetTime = System.currentTimeMillis() + Math.abs(this.sleepTime); + else this.vwr.timeouts.remove(this.$name); +if (this.triggered) { +this.triggered = false; +if (this.$name.equals("_SET_IN_MOTION_")) { +this.vwr.checkInMotion(2); +} else { +this.vwr.evalStringQuiet((continuing ? this.script + ";\ntimeout ID \"" + this.$name + "\";" : this.script)); +}}mode = (continuing ? 0 : -2); +break; +case -2: +this.vwr.timeouts.remove(this.$name); +return; +} +} +}, "~N"); +c$.clear = Clazz_defineMethod(c$, "clear", +function(timeouts){ +for (var o, $o = timeouts.values().iterator (); $o.hasNext()&& ((o = $o.next ()) || true);) { +var t = o; +if (!t.script.equals("exitJmol")) t.interrupt(); +} +timeouts.clear(); +}, "java.util.Map"); +c$.setTimeout = Clazz_defineMethod(c$, "setTimeout", +function(vwr, timeouts, name, mSec, script){ +var t = timeouts.get(name); +if (mSec == 0) { +if (t != null) { +t.interrupt(); +timeouts.remove(name); +}return; +}if (t != null) { +t.set(mSec, script); +return; +}t = new J.thread.TimeoutThread(vwr, name, mSec, script); +timeouts.put(name, t); +t.start(); +}, "JV.Viewer,java.util.Map,~S,~N,~S"); +c$.trigger = Clazz_defineMethod(c$, "trigger", +function(timeouts, name){ +var t = timeouts.get(name); +if (t != null) t.triggered = (t.sleepTime < 0); +}, "java.util.Map,~S"); +c$.showTimeout = Clazz_defineMethod(c$, "showTimeout", +function(timeouts, name){ +var sb = new JU.SB(); +if (timeouts != null) { +for (var o, $o = timeouts.values().iterator (); $o.hasNext()&& ((o = $o.next ()) || true);) { +var t = o; +if (name == null || t.$name.equalsIgnoreCase(name)) sb.append(t.toString()).append("\n"); +} +}return (sb.length() > 0 ? sb.toString() : ""); +}, "java.util.Map,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.Node", "$.Point3fi", "J.c.PAL"], "JM.Atom", ["JU.BS", "$.CU", "$.P3", "$.PT", "$.SB", "J.atomdata.RadiusData", "J.c.VDW", "JM.Group", "JU.C", "$.Elements", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.altloc = '\0'; +this.atomID = 0; +this.atomSite = 0; +this.group = null; +this.userDefinedVanDerWaalRadius = 0; +this.valence = 0; +this.atomNumberFlags = 0; +this.atomSymmetry = null; +this.formalChargeAndFlags = 0; +this.madAtom = 0; +this.colixAtom = 0; +this.paletteID = 0; +this.bonds = null; +this.nBondsDisplayed = 0; +this.nBackbonesDisplayed = 0; +this.clickabilityFlags = 0; +this.shapeVisibilityFlags = 0; +Clazz_instantialize(this, arguments);}, JM, "Atom", JU.Point3fi, JU.Node); +Clazz_prepareFields (c$, function(){ +this.paletteID = J.c.PAL.CPK.id; +}); +Clazz_overrideMethod(c$, "setAtom", +function(modelIndex, atomIndex, xyz, radius, atomSymmetry, atomSite, atomicAndIsotopeNumber, formalCharge, isHetero){ +this.mi = modelIndex; +this.atomSymmetry = atomSymmetry; +this.atomSite = atomSite; +this.i = atomIndex; +this.atomNumberFlags = atomicAndIsotopeNumber; +if (isHetero) this.formalChargeAndFlags = 2; +if (formalCharge != 0 && formalCharge != -2147483648) this.setFormalCharge(formalCharge); +this.userDefinedVanDerWaalRadius = radius; +if (xyz != null) this.setT(xyz); +return this; +}, "~N,~N,JU.P3,~N,JU.BS,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setShapeVisibility", +function(flag, isVisible){ +if (isVisible) this.shapeVisibilityFlags |= flag; + else this.shapeVisibilityFlags &= ~flag; +}, "~N,~B"); +Clazz_defineMethod(c$, "isCovalentlyBonded", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].isCovalent() && this.bonds[i].getOtherAtom(this) === atomOther) return true; + +return false; +}, "JM.Atom"); +Clazz_defineMethod(c$, "isBonded", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].getOtherAtom(this) === atomOther) return true; + +return false; +}, "JM.Atom"); +Clazz_defineMethod(c$, "getBond", +function(atomOther){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i].getOtherAtom(atomOther) != null) return this.bonds[i]; + +return null; +}, "JM.Atom"); +Clazz_defineMethod(c$, "addDisplayedBond", +function(stickVisibilityFlag, isVisible){ +this.nBondsDisplayed += (isVisible ? 1 : -1); +this.setShapeVisibility(stickVisibilityFlag, (this.nBondsDisplayed > 0)); +}, "~N,~B"); +Clazz_defineMethod(c$, "deleteBond", +function(bond){ +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) if (this.bonds[i] === bond) { +this.deleteBondAt(i); +return; +} +}, "JM.Bond"); +Clazz_defineMethod(c$, "deleteBondAt", +function(i){ +this.setCIPChirality(0); +var newLength = this.bonds.length - 1; +if (newLength == 0) { +this.bonds = null; +return; +}var bondsNew = new Array(newLength); +var j = 0; +for (; j < i; ++j) bondsNew[j] = this.bonds[j]; + +for (; j < newLength; ++j) bondsNew[j] = this.bonds[j + 1]; + +this.bonds = bondsNew; +}, "~N"); +Clazz_overrideMethod(c$, "getBondedAtomIndex", +function(bondIndex){ +return this.bonds[bondIndex].getOtherAtom(this).i; +}, "~N"); +Clazz_defineMethod(c$, "setMadAtom", +function(vwr, rd){ +this.madAtom = this.calculateMad(vwr, rd); +}, "JV.Viewer,J.atomdata.RadiusData"); +Clazz_defineMethod(c$, "calculateMad", +function(vwr, rd){ +if (rd == null) return 0; +var f = rd.value; +if (f == 0) return 0; +switch (rd.factorType) { +case J.atomdata.RadiusData.EnumType.SCREEN: +return Clazz_floatToShort(f); +case J.atomdata.RadiusData.EnumType.FACTOR: +case J.atomdata.RadiusData.EnumType.OFFSET: +var r = 0; +switch (rd.vdwType) { +case J.c.VDW.TEMP: +var tmax = vwr.ms.getBfactor100Hi(); +r = (tmax > 0 ? this.getBfactor100() / tmax : 0); +break; +case J.c.VDW.HYDRO: +r = Math.abs(this.getHydrophobicity()); +break; +case J.c.VDW.BONDING: +r = this.getBondingRadius(); +break; +case J.c.VDW.ADPMIN: +case J.c.VDW.ADPMAX: +r = this.getADPMinMax(rd.vdwType === J.c.VDW.ADPMAX); +break; +default: +r = this.getVanderwaalsRadiusFloat(vwr, rd.vdwType); +} +if (rd.factorType === J.atomdata.RadiusData.EnumType.FACTOR) f *= r; + else f += r; +break; +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +if (f == 16.1) return JM.Atom.MAD_GLOBAL; +break; +} +var mad = Clazz_floatToShort(f < 0 ? f : f * 2000); +if (mad < 0 && f > 0) mad = 0; +return mad; +}, "JV.Viewer,J.atomdata.RadiusData"); +Clazz_defineMethod(c$, "getADPMinMax", +function(isMax){ +var tensors = this.getTensors(); +if (tensors == null) return 0; +var t = tensors[0]; +if (t == null || t.iType != 1) return 0; +if (this.group.chain.model.ms.isModulated(this.i) && t.isUnmodulated) t = tensors[1]; +return t.getFactoredValue(isMax ? 2 : 1); +}, "~B"); +Clazz_defineMethod(c$, "getTensors", +function(){ +return this.group.chain.model.ms.getAtomTensorList(this.i); +}); +Clazz_defineMethod(c$, "getRasMolRadius", +function(){ +return Math.abs(Clazz_doubleToInt(this.madAtom / 8)); +}); +Clazz_overrideMethod(c$, "getEdges", +function(){ +return (this.bonds == null ? new Array(0) : this.bonds); +}); +Clazz_overrideMethod(c$, "getBondCount", +function(){ +return (this.bonds == null ? 0 : this.bonds.length); +}); +Clazz_defineMethod(c$, "setTranslucent", +function(isTranslucent, translucentLevel){ +this.colixAtom = JU.C.getColixTranslucent3(this.colixAtom, isTranslucent, translucentLevel); +}, "~B,~N"); +Clazz_overrideMethod(c$, "getElementNumber", +function(){ +return JU.Elements.getElementNumber(this.atomNumberFlags); +}); +Clazz_overrideMethod(c$, "getIsotopeNumber", +function(){ +return JU.Elements.getIsotopeNumber(this.atomNumberFlags); +}); +Clazz_overrideMethod(c$, "getAtomicAndIsotopeNumber", +function(){ +return this.atomNumberFlags; +}); +Clazz_defineMethod(c$, "setAtomicAndIsotopeNumber", +function(n){ +if (n < 0 || (n & 127) >= JU.Elements.elementNumberMax || n > 32767) n = 0; +this.atomNumberFlags = n; +}, "~N"); +Clazz_defineMethod(c$, "getElementSymbolIso", +function(withIsotope){ +return JU.Elements.elementSymbolFromNumber(withIsotope ? this.atomNumberFlags : this.atomNumberFlags & 127); +}, "~B"); +Clazz_defineMethod(c$, "getElementSymbol", +function(){ +return this.getElementSymbolIso(true); +}); +Clazz_defineMethod(c$, "isHetero", +function(){ +return (this.formalChargeAndFlags & 2) != 0; +}); +Clazz_defineMethod(c$, "hasVibration", +function(){ +return (this.formalChargeAndFlags & 1) != 0; +}); +Clazz_defineMethod(c$, "setFormalCharge", +function(charge){ +this.formalChargeAndFlags = (this.formalChargeAndFlags & 15) | ((charge == -2147483648 ? 0 : charge > 7 ? 7 : charge < -3 ? -3 : charge) << 24); +}, "~N"); +Clazz_defineMethod(c$, "setVibrationVector", +function(){ +this.formalChargeAndFlags |= 1; +}); +Clazz_overrideMethod(c$, "getFormalCharge", +function(){ +return this.formalChargeAndFlags >> 24; +}); +Clazz_defineMethod(c$, "getOccupancy100", +function(){ +var occupancies = this.group.chain.model.ms.occupancies; +return (occupancies == null ? 100 : Math.round(occupancies[this.i])); +}); +Clazz_defineMethod(c$, "isOccupied", +function(){ +var occupancies = this.group.chain.model.ms.occupancies; +return (occupancies == null || occupancies[this.i] >= 50); +}); +Clazz_defineMethod(c$, "getBfactor100", +function(){ +var bfactor100s = this.group.chain.model.ms.bfactor100s; +return (bfactor100s == null ? 0 : bfactor100s[this.i]); +}); +Clazz_defineMethod(c$, "getHydrophobicity", +function(){ +var values = this.group.chain.model.ms.hydrophobicities; +return (values == null ? JU.Elements.getHydrophobicity(this.group.groupID) : values[this.i]); +}); +Clazz_defineMethod(c$, "setRadius", +function(radius){ +return !Float.isNaN(this.userDefinedVanDerWaalRadius = (radius > 0 ? radius : NaN)); +}, "~N"); +Clazz_defineMethod(c$, "$delete", +function(bsBonds){ +this.valence = -1; +if (this.bonds != null) for (var i = this.bonds.length; --i >= 0; ) { +var bond = this.bonds[i]; +bond.getOtherAtom(this).deleteBond(bond); +bsBonds.set(bond.index); +} +this.bonds = null; +}, "JU.BS"); +Clazz_overrideMethod(c$, "isDeleted", +function(){ +return (this.valence < 0); +}); +Clazz_defineMethod(c$, "setValence", +function(nBonds){ +if (!this.isDeleted()) this.valence = (nBonds < 0 ? 0 : nBonds <= 0x7F ? nBonds : 0x7F); +}, "~N"); +Clazz_overrideMethod(c$, "getValence", +function(){ +return (this.isDeleted() ? -1 : this.valence > 0 ? this.valence : this.getValenceAromatic(true)); +}); +Clazz_defineMethod(c$, "getValenceAromatic", +function(checkAromatic){ +if (this.isDeleted()) return -1; +var n = this.valence; +if (n == 0 && this.bonds != null) { +var npartial = 0; +for (var i = this.bonds.length; --i >= 0; ) { +n += this.bonds[i].getValence(); +if (checkAromatic && this.bonds[i].is(515)) npartial++; +} +if (n > 0 && n < 3 && npartial != 0) n++; +}return n; +}, "~B"); +Clazz_overrideMethod(c$, "getCovalentBondCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalentNotPartial0() && !b.getOtherAtom(this).isDeleted()) ++n; +} +return n; +}); +Clazz_defineMethod(c$, "getCovalentOrPartialBondCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalent() && !b.getOtherAtom(this).isDeleted()) ++n; +} +return n; +}); +Clazz_overrideMethod(c$, "getCovalentHydrogenCount", +function(){ +if (this.bonds == null) return 0; +var n = 0; +for (var i = this.bonds.length; --i >= 0; ) { +var b = this.bonds[i]; +if (b.isCovalentNotPartial0()) { +var a = this.bonds[i].getOtherAtom(this); +if (a.valence >= 0 && a.getElementNumber() == 1) ++n; +}} +return n; +}); +Clazz_overrideMethod(c$, "getImplicitHydrogenCount", +function(){ +return this.group.chain.model.ms.getMissingHydrogenCount(this, false); +}); +Clazz_overrideMethod(c$, "getTotalHydrogenCount", +function(){ +return this.getCovalentHydrogenCount() + this.getImplicitHydrogenCount(); +}); +Clazz_overrideMethod(c$, "getTotalValence", +function(){ +var v = this.getValence(); +if (v < 0) return v; +var h = this.getImplicitHydrogenCount(); +var sp2 = this.group.chain.model.ms.aaRet[4]; +return v + h + sp2; +}); +Clazz_overrideMethod(c$, "getCovalentBondCountPlusMissingH", +function(){ +return this.getCovalentBondCount() + this.getImplicitHydrogenCount(); +}); +Clazz_defineMethod(c$, "getTargetValence", +function(){ +switch (this.getElementNumber()) { +case 6: +case 14: +case 32: +return 4; +case 5: +case 7: +case 15: +return 3; +case 8: +case 16: +return 2; +case 1: +case 9: +case 17: +case 35: +case 53: +return 1; +} +return -1; +}); +Clazz_defineMethod(c$, "getDimensionValue", +function(dimension){ +return (dimension == 0 ? this.x : (dimension == 1 ? this.y : this.z)); +}, "~N"); +Clazz_defineMethod(c$, "getVanderwaalsRadiusFloat", +function(vwr, type){ +return (Float.isNaN(this.userDefinedVanDerWaalRadius) ? vwr.getVanderwaalsMarType(this.atomNumberFlags, this.getVdwType(type)) / 1000 : this.userDefinedVanDerWaalRadius); +}, "JV.Viewer,J.c.VDW"); +Clazz_defineMethod(c$, "getVdwType", +function(type){ +switch (type) { +case J.c.VDW.AUTO: +type = this.group.chain.model.ms.getDefaultVdwType(this.mi); +break; +case J.c.VDW.NOJMOL: +type = this.group.chain.model.ms.getDefaultVdwType(this.mi); +if (type === J.c.VDW.AUTO_JMOL) type = J.c.VDW.AUTO_BABEL; +break; +} +return type; +}, "J.c.VDW"); +Clazz_defineMethod(c$, "getBondingRadius", +function(){ +var rr = this.group.chain.model.ms.bondingRadii; +var r = (rr == null || this.i >= rr.length ? 0 : rr[this.i]); +return (r == 0 ? JU.Elements.getBondingRadius(this.atomNumberFlags, this.getFormalCharge()) : r); +}); +Clazz_defineMethod(c$, "getVolume", +function(vwr, vType){ +var r1 = (vType == null ? this.userDefinedVanDerWaalRadius : NaN); +if (Float.isNaN(r1)) r1 = vwr.getVanderwaalsMarType(this.getElementNumber(), this.getVdwType(vType)) / 1000; +var volume = 0; +if (this.bonds != null) for (var j = 0; j < this.bonds.length; j++) { +if (!this.bonds[j].isCovalent()) continue; +var atom2 = this.bonds[j].getOtherAtom(this); +var r2 = (vType == null ? atom2.userDefinedVanDerWaalRadius : NaN); +if (Float.isNaN(r2)) r2 = vwr.getVanderwaalsMarType(atom2.getElementNumber(), atom2.getVdwType(vType)) / 1000; +var d = this.distance(atom2); +if (d > r1 + r2) continue; +if (d + r1 <= r2) return 0; +var h = r1 - (r1 * r1 + d * d - r2 * r2) / (2.0 * d); +volume -= 1.0471975511965976 * h * h * (3 * r1 - h); +} +return (volume + 4.1887902047863905 * r1 * r1 * r1); +}, "JV.Viewer,J.c.VDW"); +Clazz_defineMethod(c$, "getCurrentBondCount", +function(){ +return this.bonds == null ? 0 : this.bonds.length; +}); +Clazz_defineMethod(c$, "getRadius", +function(){ +return Math.abs(this.madAtom / 2000); +}); +Clazz_overrideMethod(c$, "getIndex", +function(){ +return this.i; +}); +Clazz_overrideMethod(c$, "getAtomSite", +function(){ +return this.atomSite; +}); +Clazz_overrideMethod(c$, "getGroupBits", +function(bs){ +this.group.setAtomBits(bs); +}, "JU.BS"); +Clazz_overrideMethod(c$, "getAtomName", +function(){ +return (this.atomID > 0 ? JM.Group.specialAtomNames[this.atomID] : this.group.chain.model.ms.atomNames == null ? "" : this.group.chain.model.ms.atomNames[this.i]); +}); +Clazz_overrideMethod(c$, "getAtomType", +function(){ +var atomTypes = this.group.chain.model.ms.atomTypes; +var type = (atomTypes == null ? null : atomTypes[this.i]); +return (type == null ? this.getAtomName() : type); +}); +Clazz_overrideMethod(c$, "getAtomNumber", +function(){ +var atomSerials = this.group.chain.model.ms.atomSerials; +return (atomSerials == null ? this.i : atomSerials[this.i]); +}); +Clazz_defineMethod(c$, "getSeqID", +function(){ +var ids = this.group.chain.model.ms.atomSeqIDs; +return (ids == null ? 0 : ids[this.i]); +}); +Clazz_defineMethod(c$, "isVisible", +function(flags){ +return ((this.shapeVisibilityFlags & flags) == flags); +}, "~N"); +Clazz_defineMethod(c$, "getPartialCharge", +function(){ +var partialCharges = this.group.chain.model.ms.partialCharges; +return partialCharges == null ? 0 : partialCharges[this.i]; +}); +Clazz_defineMethod(c$, "getSymmetryTranslation", +function(symop, cellRange, nOps){ +var pt = symop; +for (var i = 0; i < cellRange.length; i++) if (this.atomSymmetry.get(pt += nOps)) return cellRange[i]; + +return 0; +}, "~N,~A,~N"); +Clazz_defineMethod(c$, "getCellTranslation", +function(cellNNN, cellRange, nOps){ +var pt = nOps; +for (var i = 0; i < cellRange.length; i++) for (var j = 0; j < nOps; j++, pt++) if (this.atomSymmetry.get(pt) && cellRange[i] == cellNNN) return cellRange[i]; + + +return 0; +}, "~N,~A,~N"); +Clazz_defineMethod(c$, "getSymmetryOperatorList", +function(isAll){ +var str = ""; +var f = this.group.chain.model.ms; +var nOps = f.getModelSymmetryCount(this.mi); +if (nOps == 0 || this.atomSymmetry == null) return ""; +var cellRange = f.getModelCellRange(this.mi); +var pt = nOps; +var n = (cellRange == null ? 1 : cellRange.length); +var bs = (isAll ? null : new JU.BS()); +for (var i = 0; i < n; i++) for (var j = 0; j < nOps; j++) if (this.atomSymmetry.get(pt++)) if (isAll) { +str += "," + (j + 1) + cellRange[i]; +} else { +bs.set(j + 1); +} + +if (!isAll) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) str += "," + i; + +return (str.length == 0 ? "" : str.substring(1)); +}, "~B"); +Clazz_overrideMethod(c$, "getModelIndex", +function(){ +return this.mi; +}); +Clazz_overrideMethod(c$, "getMoleculeNumber", +function(inModel){ +return (this.group.chain.model.ms.getMoleculeIndex(this.i, inModel) + 1); +}, "~B"); +Clazz_defineMethod(c$, "getFractionalCoord", +function(fixJavaFloat, ch, ignoreOffset, pt){ +pt = this.getFractionalCoordPt(fixJavaFloat, ignoreOffset, pt); +return (ch == 'X' ? pt.x : ch == 'Y' ? pt.y : pt.z); +}, "~B,~S,~B,JU.P3"); +Clazz_overrideMethod(c$, "getXYZ", +function(){ +return this; +}); +Clazz_defineMethod(c$, "getFractionalCoordPt", +function(fixJavaFloat, ignoreOffset, pt){ +var c = this.getUnitCell(); +if (pt == null) pt = JU.P3.newP(this); + else pt.setT(this); +if (c != null) { +c = c.getUnitCellMultiplied(); +c.toFractional(pt, ignoreOffset); +if (fixJavaFloat) JU.PT.fixPtFloats(pt, 100000.0); +}return pt; +}, "~B,~B,JU.P3"); +Clazz_defineMethod(c$, "getUnitCell", +function(){ +return this.group.chain.model.ms.getUnitCellForAtom(this.i); +}); +Clazz_defineMethod(c$, "getFractionalUnitCoord", +function(fixJavaFloat, ch, pt){ +pt = this.getFractionalUnitCoordPt(fixJavaFloat, false, pt); +return (ch == 'X' ? pt.x : ch == 'Y' ? pt.y : pt.z); +}, "~B,~S,JU.P3"); +Clazz_defineMethod(c$, "getFractionalUnitCoordPt", +function(fixJavaFloat, asCartesian, pt){ +var c = this.getUnitCell(); +if (pt == null) pt = JU.P3.newP(this); + else pt.setT(this); +if (c == null) return pt; +c = c.getUnitCellMultiplied(); +if (this.group.chain.model.isJmolDataFrame) { +c.toFractional(pt, false); +if (asCartesian) c.toCartesian(pt, false); +} else { +c.toUnitCell(pt, null); +if (!asCartesian) c.toFractional(pt, false); +}if (fixJavaFloat) JU.PT.fixPtFloats(pt, asCartesian ? 10000.0 : 100000.0); +return pt; +}, "~B,~B,JU.P3"); +Clazz_defineMethod(c$, "getFractionalUnitDistance", +function(pt, ptTemp1, ptTemp2){ +var c = this.getUnitCell(); +if (c == null) return this.distance(pt); +ptTemp1.setT(this); +ptTemp2.setT(pt); +if (this.group.chain.model.isJmolDataFrame) { +c.toFractional(ptTemp1, true); +c.toFractional(ptTemp2, true); +} else { +c.toUnitCell(ptTemp1, null); +c.toUnitCell(ptTemp2, null); +}return ptTemp1.distance(ptTemp2); +}, "JU.T3,JU.T3,JU.T3"); +Clazz_defineMethod(c$, "setFractionalCoord", +function(tok, fValue, asAbsolute){ +var c = this.getUnitCell(); +if (c != null) c.toFractional(this, asAbsolute); +switch (tok) { +case 1111492615: +case 1111492612: +this.x = fValue; +break; +case 1111492616: +case 1111492613: +this.y = fValue; +break; +case 1111492617: +case 1111492614: +this.z = fValue; +break; +} +if (c != null) c.toCartesian(this, asAbsolute); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setFractionalCoordTo", +function(ptNew, asAbsolute){ +this.setFractionalCoordPt(this, ptNew, asAbsolute); +}, "JU.P3,~B"); +Clazz_defineMethod(c$, "setFractionalCoordPt", +function(pt, ptNew, asAbsolute){ +pt.setT(ptNew); +var c = this.getUnitCell(); +if (c != null) c.toCartesian(pt, asAbsolute && !this.group.chain.model.isJmolDataFrame); +}, "JU.P3,JU.P3,~B"); +Clazz_defineMethod(c$, "isCursorOnTopOf", +function(xCursor, yCursor, minRadius, competitor){ +var r = Clazz_doubleToInt(this.sD / 2); +if (r < minRadius) r = minRadius; +var r2 = r * r; +var dx = this.sX - xCursor; +var dx2 = dx * dx; +if (dx2 > r2) return false; +var dy = this.sY - yCursor; +var dy2 = dy * dy; +var dz2 = r2 - (dx2 + dy2); +if (dz2 < 0) return false; +if (competitor == null) return true; +var z = this.sZ; +var zCompetitor = competitor.sZ; +var rCompetitor = Clazz_doubleToInt(competitor.sD / 2); +if (z < zCompetitor - rCompetitor) return true; +var dxCompetitor = competitor.sX - xCursor; +var dx2Competitor = dxCompetitor * dxCompetitor; +var dyCompetitor = competitor.sY - yCursor; +var dy2Competitor = dyCompetitor * dyCompetitor; +var r2Competitor = rCompetitor * rCompetitor; +var dz2Competitor = r2Competitor - (dx2Competitor + dy2Competitor); +return (z - Math.sqrt(dz2) < zCompetitor - Math.sqrt(dz2Competitor)); +}, "~N,~N,~N,JM.Atom"); +Clazz_defineMethod(c$, "getInfo", +function(){ +return this.getIdentity(2); +}); +Clazz_defineMethod(c$, "getIdentityXYZ", +function(pt, mode){ +pt = (mode == 3 || this.group.chain.model.isJmolDataFrame ? this.getFractionalCoordPt(!this.group.chain.model.ms.vwr.g.legacyJavaFloat, false, pt) : this); +var s = (mode == 3 ? "" : this.getIdentity(mode) + " ") + JU.PT.formatF(pt.x, 0, 3, true, true) + " " + JU.PT.formatF(pt.y, 0, 3, true, true) + " " + JU.PT.formatF(pt.z, 0, 3, true, true); +return s; +}, "JU.P3,~N"); +Clazz_defineMethod(c$, "getIdentity", +function(mode){ +var info = new JU.SB(); +var group3 = this.getGroup3(true); +if (group3 != null && group3.length > 0 && (!group3.equals("UNK") || this.group.chain.model.isBioModel)) { +info.append("["); +info.append(group3); +info.append("]"); +var seqcodeString = this.group.getSeqcodeString(); +if (seqcodeString != null) info.append(seqcodeString); +var chainID = this.group.chain.chainID; +if (chainID != 0 && chainID != 32) { +info.append(":"); +var s = this.getChainIDStr(); +if (chainID >= 256) s = JU.PT.esc(s); +info.append(s); +}if (mode != 2 && mode != 5) return info.toString(); +info.append("."); +}info.append(this.getAtomName()); +if (info.length() == 0) { +info.append(this.getElementSymbolIso(false)); +info.append(" "); +info.appendI(this.getAtomNumber()); +}if (mode == 2) { +if (this.altloc != '\0') { +info.append("%"); +info.appendC(this.altloc); +}if (this.group.chain.model.ms.mc > 1 && !this.group.chain.model.isJmolDataFrame) { +info.append("/"); +info.append(this.getModelNumberForLabel()); +}info.append(" #"); +info.appendI(this.getAtomNumber()); +}return info.toString(); +}, "~N"); +Clazz_overrideMethod(c$, "getGroup3", +function(allowNull){ +var group3 = this.group.getGroup3(); +return (allowNull || group3 != null && group3.length > 0 ? group3 : "UNK"); +}, "~B"); +Clazz_overrideMethod(c$, "getGroup1", +function(c0){ +var c = this.group.getGroup1(); +return (c != '\0' ? "" + c : c0 != '\0' ? "" + c0 : ""); +}, "~S"); +Clazz_overrideMethod(c$, "getBioSmilesType", +function(){ +return (this.group.isProtein() ? 'p' : this.group.isDna() ? 'd' : this.group.isRna() ? 'r' : this.group.isCarbohydrate() ? 'c' : ' '); +}); +Clazz_overrideMethod(c$, "isPurine", +function(){ +return this.group.isPurine(); +}); +Clazz_overrideMethod(c$, "isPyrimidine", +function(){ +return this.group.isPyrimidine(); +}); +Clazz_overrideMethod(c$, "getResno", +function(){ +return this.group.getResno(); +}); +Clazz_defineMethod(c$, "isClickable", +function(){ +return (this.checkVisible() && this.clickabilityFlags != 0 && ((this.shapeVisibilityFlags | this.group.shapeVisibilityFlags) & this.clickabilityFlags) != 0); +}); +Clazz_defineMethod(c$, "setClickable", +function(flag){ +if (flag == 0) { +this.clickabilityFlags = 0; +} else { +this.clickabilityFlags |= flag; +if (flag != 1040384) this.shapeVisibilityFlags |= flag; +}}, "~N"); +Clazz_defineMethod(c$, "checkVisible", +function(){ +if (this.isVisible(2)) return this.isVisible(4); +var isVis = this.isVisible(9); +if (isVis) { +var flags = this.shapeVisibilityFlags; +if (this.group.shapeVisibilityFlags != 0 && (this.group.shapeVisibilityFlags != 8192 || this.isLeadAtom())) flags |= this.group.shapeVisibilityFlags; +flags &= -10; +if (flags == 32 && this.clickabilityFlags == 0) flags = 0; +isVis = (flags != 0); +if (isVis) this.shapeVisibilityFlags |= 4; +}this.shapeVisibilityFlags |= 2; +return isVis; +}); +Clazz_overrideMethod(c$, "isLeadAtom", +function(){ +return this.group.isLeadAtom(this.i); +}); +Clazz_overrideMethod(c$, "getChainID", +function(){ +return this.group.chain.chainID; +}); +Clazz_overrideMethod(c$, "getChainIDStr", +function(){ +return this.group.chain.getIDStr(); +}); +Clazz_defineMethod(c$, "getSurfaceDistance100", +function(){ +return this.group.chain.model.ms.getSurfaceDistance100(this.i); +}); +Clazz_defineMethod(c$, "getVibrationVector", +function(){ +return this.group.chain.model.ms.getVibration(this.i, false); +}); +Clazz_defineMethod(c$, "getModulation", +function(){ +return this.group.chain.model.ms.getModulation(this.i); +}); +Clazz_defineMethod(c$, "getModelNumberForLabel", +function(){ +return this.group.chain.model.ms.getModelNumberForAtomLabel(this.mi); +}); +Clazz_defineMethod(c$, "getModelNumber", +function(){ +return this.group.chain.model.ms.getModelNumber(this.mi) % 1000000; +}); +Clazz_overrideMethod(c$, "getBioStructureTypeName", +function(){ +return this.group.getProteinStructureType().getBioStructureTypeName(true); +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +return (this === obj); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.i; +}); +Clazz_defineMethod(c$, "findAromaticNeighbor", +function(notAtomIndex){ +if (this.bonds == null) return null; +for (var i = this.bonds.length; --i >= 0; ) { +var bondT = this.bonds[i]; +var a = bondT.getOtherAtom(this); +if (bondT.isAromatic() && a.i != notAtomIndex) return a; +} +return null; +}, "~N"); +Clazz_defineMethod(c$, "atomPropertyInt", +function(tokWhat){ +switch (tokWhat) { +case 1094715393: +return this.getAtomNumber(); +case 1094713365: +return this.getSeqID(); +case 1094713346: +return this.atomID; +case 1094713368: +return Math.max(0, this.altloc.charCodeAt(0) - 32); +case 1094713347: +return this.i; +case 1228931586: +return this.getCovalentBondCount(); +case 1094713351: +return this.group.chain.chainNo; +case 1765808134: +return this.group.chain.model.ms.vwr.gdata.getColorArgbOrGray(this.colixAtom); +case 1086326789: +case 1094715402: +return this.getElementNumber(); +case 1094713353: +return this.atomNumberFlags; +case 1228935687: +return this.group.chain.model.fileIndex + 1; +case 1631586315: +return this.getFormalCharge(); +case 1094713356: +return this.group.groupID; +case 1094713357: +return this.group.groupIndex; +case 1094717454: +return this.getModelNumber(); +case -1094717454: +return this.group.chain.model.ms.modelFileNumbers[this.mi]; +case 1094713359: +return this.mi; +case 1094713360: +return this.getMoleculeNumber(true); +case 1094713361: +return this.group.getMonomerIndex() + 1; +case 1128269825: +return this.getOccupancy100(); +case 1094713362: +return this.group.getBioPolymerIndexInModel() + 1; +case 1094713363: +return this.group.getBioPolymerLength(); +case 1665140738: +return this.getRasMolRadius(); +case 1094715412: +return this.getResno(); +case 1094713366: +return this.getAtomSite(); +case 1639976963: +return this.group.getProteinStructureType().getId(); +case 1237320707: +return this.group.getProteinStructureSubType().getId(); +case 1094713367: +return this.group.getStrucNo(); +case 1296041985: +return this.getSymOp(); +case 1094715418: +return this.getValence(); +} +return 0; +}, "~N"); +Clazz_defineMethod(c$, "getSymOp", +function(){ +return (this.atomSymmetry == null ? 0 : this.atomSymmetry.nextSetBit(0) + 1); +}); +Clazz_defineMethod(c$, "atomPropertyFloat", +function(vwr, tokWhat, ptTemp){ +switch (tokWhat) { +case 1111490561: +return this.getADPMinMax(true); +case 1111490562: +return this.getADPMinMax(false); +case 1111492609: +case 1111492629: +return this.x; +case 1111492610: +case 1111492630: +return this.y; +case 1111492611: +case 1111492631: +return this.z; +case 1111490587: +return this.group.chain.model.ms.getAtomicDSSRData(this.i); +case 1114249217: +case 1112152066: +case 1112150019: +case 1112150020: +case 1112150021: +case 1112152070: +case 1112152071: +case 1112152073: +case 1112152074: +case 1112152076: +case 1649022989: +case 1112152078: +return vwr.shm.getAtomShapeValue(tokWhat, this.group, this.i); +case 1111492618: +return this.getBondingRadius(); +case 1111490563: +return vwr.getNMRCalculation().getChemicalShift(this); +case 1111490564: +return JU.Elements.getCovalentRadius(this.atomNumberFlags); +case 1111490565: +case 1111490576: +case 1111490574: +return this.group.getGroupParameter(tokWhat); +case 1111492615: +case 1111492612: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'X', false, ptTemp); +case 1111492616: +case 1111492613: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Y', false, ptTemp); +case 1111492617: +case 1111492614: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Z', false, ptTemp); +case 1113589786: +return this.getHydrophobicity(); +case 1111490566: +return vwr.getNMRCalculation().getMagneticShielding(this); +case 1111490567: +return this.getMass(); +case 1128269825: +return this.getOccupancy100() / 100; +case 1111492619: +return this.getPartialCharge(); +case 1111490569: +case 1111490570: +case 1111490568: +if (this.group.chain.model.isJmolDataFrame && this.group.chain.model.jmolFrameType.startsWith("plot ramachandran")) { +switch (tokWhat) { +case 1111490569: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'X', false, ptTemp); +case 1111490570: +return this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Y', false, ptTemp); +case 1111490568: +var omega = this.getFractionalCoord(!vwr.g.legacyJavaFloat, 'Z', false, ptTemp) - 180; +return (omega < -180 ? 360 + omega : omega); +} +}return this.group.getGroupParameter(tokWhat); +case 1665140738: +case 1112152075: +return this.getRadius(); +case 1111490571: +return (vwr.antialiased ? Clazz_doubleToInt(this.sX / 2) : this.sX); +case 1111490572: +return vwr.getScreenHeight() - (vwr.antialiased ? Clazz_doubleToInt(this.sY / 2) : this.sY); +case 1111490573: +return (vwr.antialiased ? Clazz_doubleToInt(this.sZ / 2) : this.sZ); +case 1113589787: +return (vwr.slm.isAtomSelected(this.i) ? 1 : 0); +case 1111490575: +vwr.ms.getSurfaceDistanceMax(); +return this.getSurfaceDistance100() / 100; +case 1111492620: +return this.getBfactor100() / 100; +case 1111490577: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'X', ptTemp); +case 1111490578: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'Y', ptTemp); +case 1111490579: +return this.getFractionalUnitCoord(!vwr.g.legacyJavaFloat, 'Z', ptTemp); +case 1648363544: +return this.getVanderwaalsRadiusFloat(vwr, J.c.VDW.AUTO); +case 1648361473: +var v = this.getVibrationVector(); +return (v == null ? 0 : v.length() * vwr.getFloat(1648361473)); +case 1111492626: +return this.getVib('x'); +case 1111492627: +return this.getVib('y'); +case 1111492628: +return this.getVib('z'); +case 1111490583: +return this.getVib('X'); +case 1111490584: +return this.getVib('Y'); +case 1111490585: +return this.getVib('Z'); +case 1111490586: +return this.getVib('O'); +case 1111490580: +return this.getVib('1'); +case 1111490581: +return this.getVib('2'); +case 1111490582: +return this.getVib('3'); +case 1312817669: +return this.getVolume(vwr, J.c.VDW.AUTO); +case 1145047050: +case 1145047053: +case 1145045006: +case 1145047052: +case 1145047055: +case 1145045008: +case 1145047049: +var v3 = this.atomPropertyTuple(vwr, tokWhat, ptTemp); +return (v3 == null ? -1 : v3.length()); +} +return this.atomPropertyInt(tokWhat); +}, "JV.Viewer,~N,JU.P3"); +Clazz_defineMethod(c$, "getVib", +function(ch){ +return this.group.chain.model.ms.getVibCoord(this.i, ch); +}, "~S"); +Clazz_defineMethod(c$, "getNominalMass", +function(){ +var mass = this.getIsotopeNumber(); +return (mass > 0 ? mass : JU.Elements.getNaturalIsotope(this.getElementNumber())); +}); +Clazz_overrideMethod(c$, "getMass", +function(){ +var mass = this.getIsotopeNumber(); +return (mass > 0 ? mass : JU.Elements.getAtomicMass(this.getElementNumber())); +}); +Clazz_defineMethod(c$, "atomPropertyString", +function(vwr, tokWhat){ +var ch; +var s; +switch (tokWhat) { +case 1153433601: +return this.getIdentity(5); +case 1086324739: +ch = this.altloc; +return (ch == '\0' ? "" : "" + ch); +case 1086326786: +return this.getAtomName(); +case 1086326785: +return this.getAtomType(); +case 1086326788: +return this.getChainIDStr(); +case 1086324752: +return this.getCIPChirality(true); +case 1086324753: +return this.getCIPChiralityRule(); +case 1140850705: +case 1086324754: +return this.getWyckoffPosition(false); +case 1086324755: +return this.getWyckoffPosition(true); +case 1086324744: +return this.getGroup1('?'); +case 1086324747: +s = this.group.getSeqcodeString(); +return (s == null ? "" : s); +case 1086324743: +return this.getGroup1('\0'); +case 1086324742: +return this.getGroup3(false); +case 1086326789: +return this.getElementSymbolIso(true); +case 1086324745: +return this.getIdentity(2); +case 1086324746: +ch = this.group.getInsertionCode(); +return (ch == '\0' ? "" : "" + ch); +case 1825200146: +case 1287653388: +s = vwr.shm.getShapePropertyIndex(5, "label", this.i); +if (s == null) s = ""; +return s; +case 1145045003: +return vwr.getSymStatic().staticToRationalXYZ(this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, null), " "); +case 1639976963: +return this.group.getProteinStructureType().getBioStructureTypeName(false); +case 1237320707: +return this.group.getProteinStructureSubType().getBioStructureTypeName(false); +case 1086324749: +return this.group.getStructureId(); +case 1086324748: +return vwr.getHybridizationAndAxes(this.i, null, null, "d"); +case 1086326798: +return this.getElementSymbolIso(false); +case 1088421903: +return this.getSymmetryOperatorList(true); +} +return ""; +}, "JV.Viewer,~N"); +Clazz_defineMethod(c$, "getWyckoffPosition", +function(withMultiplicity){ +var ms = this.group.chain.model.ms; +var a = ms.getBasisAtom(this.i, true); +var id = a.getSeqID(); +if (id != 0) { +var m = id >> 16; +var c = String.fromCharCode(id & 0xFF); +return (withMultiplicity ? "" + (id >> 16) : "") + String.fromCharCode(id & 0xFF); +}var sym = this.getUnitCell(); +var s; +if (sym == null || (s = sym.getWyckoffPosition(ms.vwr, this, "M")) == null) { +s = "0?"; +}ms.setAtomSeqID(this.i, (JU.PT.parseInt(s) << 16) + (s.charAt(s.length - 1)).charCodeAt(0)); +return (withMultiplicity ? s : s.substring(s.length - 1)); +}, "~B"); +Clazz_overrideMethod(c$, "getCIPChirality", +function(doCalculate){ +var flags = (this.formalChargeAndFlags & 496) >> 4; +if (flags == 0 && this.atomNumberFlags > 1 && doCalculate) { +flags = this.group.chain.model.ms.getAtomCIPChiralityCode(this); +this.formalChargeAndFlags |= ((flags == 0 ? 3 : flags) << 4); +}return JV.JC.getCIPChiralityName(flags); +}, "~B"); +Clazz_defineMethod(c$, "getCIPChiralityRule", +function(){ +var rs = this.getCIPChirality(true); +var flags = (rs.length == 0 ? -1 : (this.formalChargeAndFlags & 3584) >> 9); +return JV.JC.getCIPRuleName(flags + 1); +}); +Clazz_overrideMethod(c$, "setCIPChirality", +function(c){ +this.formalChargeAndFlags = (this.formalChargeAndFlags & -4081) | (c << 4); +}, "~N"); +Clazz_overrideMethod(c$, "getCIPChiralityCode", +function(){ +return (this.formalChargeAndFlags & 496) >> 4; +}); +Clazz_overrideMethod(c$, "getInsertionCode", +function(){ +return this.group.getInsertionCode(); +}); +Clazz_defineMethod(c$, "atomPropertyTuple", +function(vwr, tok, ptTemp){ +switch (tok) { +case 1073742329: +return JU.P3.newP(this); +case 1145047050: +return this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp); +case 1145047053: +return this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp); +case 1145045006: +return (this.group.chain.model.isJmolDataFrame ? this.getFractionalCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp) : this.getFractionalUnitCoordPt(!vwr.g.legacyJavaFloat, false, ptTemp)); +case 1145047052: +return JU.P3.new3(vwr.antialiased ? Clazz_doubleToInt(this.sX / 2) : this.sX, vwr.getScreenHeight() - (vwr.antialiased ? Clazz_doubleToInt(this.sY / 2) : this.sY), vwr.antialiased ? Clazz_doubleToInt(this.sZ / 2) : this.sZ); +case 1145047055: +return this.getVibrationVector(); +case 1145045008: +var ms = this.getModulation(); +return (ms == null ? null : ms.getV3()); +case 1145047049: +return this; +case 1765808134: +return JU.CU.colorPtFromInt(this.group.chain.model.ms.vwr.gdata.getColorArgbOrGray(this.colixAtom), ptTemp); +} +return null; +}, "JV.Viewer,~N,JU.P3"); +Clazz_overrideMethod(c$, "getOffsetResidueAtom", +function(name, offset){ +return this.group.getAtomIndex(name, offset); +}, "~S,~N"); +Clazz_overrideMethod(c$, "isCrossLinked", +function(node){ +return this.group.isCrossLinked((node).group); +}, "JU.Node"); +Clazz_overrideMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +return this.group.getCrossLinkVector(vReturn, crosslinkCovalent, crosslinkHBond); +}, "JU.Lst,~B,~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.getInfo(); +}); +Clazz_overrideMethod(c$, "findAtomsLike", +function(atomExpression){ +return this.group.chain.model.ms.vwr.getAtomBitSet(atomExpression); +}, "~S"); +Clazz_defineMethod(c$, "getUnitID", +function(flags){ +var m = this.group.chain.model; +return (m.isBioModel ? (m).getUnitID(this, flags) : ""); +}, "~N"); +Clazz_overrideMethod(c$, "getFloatProperty", +function(property){ +var data = this.group.chain.model.ms.vwr.getDataObj(property, null, 1); +var f = NaN; +if (data != null) { +try { +f = (data)[this.i]; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}return f; +}, "~S"); +Clazz_overrideMethod(c$, "modelIsRawPDB", +function(){ +var m = this.group.chain.model; +return (m.isBioModel && !m.isPdbWithMultipleBonds && m.hydrogenCount == 0); +}); +Clazz_defineMethod(c$, "setSymop", +function(isym, andClear){ +if (this.atomSymmetry == null) this.atomSymmetry = new JU.BS(); +if (andClear) this.atomSymmetry.clearAll(); +if (isym > 0) this.atomSymmetry.set(isym - 1); +}, "~N,~B"); +Clazz_overrideMethod(c$, "getExplicitHydrogenCount", +function(){ +return 0; +}); +c$.MAD_GLOBAL = 32200; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.V3"], "JM.AtomCollection", ["java.util.Arrays", "$.Hashtable", "JU.A4", "$.AU", "$.BS", "$.Lst", "$.M3", "$.Measure", "$.P3", "$.PT", "J.api.Interface", "J.atomdata.RadiusData", "J.c.PAL", "$.VDW", "JM.Group", "JS.T", "JU.BSUtil", "$.Elements", "$.Logger", "$.Parser", "$.Vibration"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.g3d = null; +this.bioModelset = null; +this.at = null; +this.ac = 0; +this.trajectory = null; +this.pointGroup = null; +this.labeler = null; +this.maxBondingRadius = 1.4E-45; +this.maxVanderwaalsRadius = 1.4E-45; +this.hasBfactorRange = false; +this.bfactor100Lo = 0; +this.bfactor100Hi = 0; +this.haveBSVisible = false; +this.haveBSClickable = false; +this.bsSurface = null; +this.nSurfaceAtoms = 0; +this.surfaceDistanceMax = 0; +this.haveChirality = false; +this.bspf = null; +this.preserveState = true; +this.canSkipLoad = true; +this.haveStraightness = false; +this.bsHidden = null; +this.bsVisible = null; +this.bsClickable = null; +this.bsModulated = null; +this.atomTensorList = null; +this.atomTensors = null; +this.surfaceDistance100s = null; +this.tainted = null; +this.atomNames = null; +this.atomTypes = null; +this.atomSerials = null; +this.atomResnos = null; +this.atomSeqIDs = null; +this.dssrData = null; +this.vibrations = null; +this.occupancies = null; +this.bfactor100s = null; +this.partialCharges = null; +this.bondingRadii = null; +this.hydrophobicities = null; +this.bsPartialCharges = null; +this.aaRet = null; +if (!Clazz_isClassDefined("JM.AtomCollection.AtomSorter")) { +JM.AtomCollection.$AtomCollection$AtomSorter$ (); +} +this.atomCapacity = 0; +Clazz_instantialize(this, arguments);}, JM, "AtomCollection", null); +Clazz_defineMethod(c$, "getAtom", +function(iatom){ +return (iatom >= 0 && iatom < this.at.length ? this.at[iatom] : null); +}, "~N"); +Clazz_defineMethod(c$, "setupAC", +function(){ +this.bsHidden = new JU.BS(); +this.bsVisible = new JU.BS(); +this.bsClickable = new JU.BS(); +if (JM.AtomCollection.userSettableValues == null) JM.AtomCollection.userSettableValues = ("atomName atomType coord element formalCharge hydrophobicity ionic occupancy partialCharge temperature valence vanderWaals vibrationVector atomNo seqID resNo chain site").$plit(" "); +}); +Clazz_defineMethod(c$, "releaseModelSetAC", +function(){ +this.ac = 0; +this.at = null; +this.vwr = null; +this.g3d = null; +this.bspf = null; +this.surfaceDistance100s = null; +this.bsSurface = null; +this.tainted = null; +this.atomNames = null; +this.atomTypes = null; +this.atomResnos = null; +this.dssrData = null; +this.atomSerials = null; +this.atomSeqIDs = null; +this.vibrations = null; +this.occupancies = null; +this.bfactor100s = null; +this.resetPartialCharges(); +this.bondingRadii = null; +this.atomTensors = null; +}); +Clazz_defineMethod(c$, "mergeAtomArrays", +function(mergeModelSet){ +this.tainted = mergeModelSet.tainted; +this.atomNames = mergeModelSet.atomNames; +this.atomTypes = mergeModelSet.atomTypes; +this.atomResnos = mergeModelSet.atomResnos; +this.dssrData = mergeModelSet.dssrData; +this.atomSerials = mergeModelSet.atomSerials; +this.atomSeqIDs = mergeModelSet.atomSeqIDs; +this.vibrations = mergeModelSet.vibrations; +this.occupancies = mergeModelSet.occupancies; +this.bfactor100s = mergeModelSet.bfactor100s; +this.bondingRadii = mergeModelSet.bondingRadii; +this.partialCharges = mergeModelSet.partialCharges; +this.bsPartialCharges = mergeModelSet.bsPartialCharges; +this.atomTensors = mergeModelSet.atomTensors; +this.atomTensorList = mergeModelSet.atomTensorList; +this.bsModulated = mergeModelSet.bsModulated; +this.haveStraightness = false; +this.surfaceDistance100s = null; +}, "JM.AtomCollection"); +Clazz_defineMethod(c$, "getAtomPointVector", +function(bs){ +var v = new JU.Lst(); +var n = this.ac; +if (bs != null) { +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) { +v.addLast(this.at[i]); +} +}return v; +}, "JU.BS"); +Clazz_defineMethod(c$, "modelSetHasVibrationVectors", +function(){ +return (this.vibrations != null); +}); +Clazz_defineMethod(c$, "getAtomTypes", +function(){ +return this.atomTypes; +}); +Clazz_defineMethod(c$, "getPartialCharges", +function(){ +return this.partialCharges; +}); +Clazz_defineMethod(c$, "getBondingRadii", +function(){ +return this.bondingRadii; +}); +Clazz_defineMethod(c$, "getBFactors", +function(){ +return this.bfactor100s; +}); +Clazz_defineMethod(c$, "getHydrophobicity", +function(){ +return this.hydrophobicities; +}); +Clazz_defineMethod(c$, "setBsHidden", +function(bs){ +this.bsHidden = bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "isAtomHidden", +function(iAtom){ +return this.bsHidden.get(iAtom); +}, "~N"); +Clazz_defineMethod(c$, "getLabeler", +function(){ +return (this.labeler == null ? this.labeler = J.api.Interface.getInterface("JM.LabelToken", this.vwr, "ms") : this.labeler); +}); +Clazz_defineMethod(c$, "getAtomInfo", +function(i, format, ptTemp){ +return (format == null ? this.at[i].getInfo() : this.getLabeler().formatLabel(this.vwr, this.at[i], format, ptTemp)); +}, "~N,~S,JU.P3"); +Clazz_defineMethod(c$, "getElementName", +function(i){ +return JU.Elements.elementNameFromNumber(this.at[i].getAtomicAndIsotopeNumber()); +}, "~N"); +Clazz_defineMethod(c$, "getQuaternion", +function(i, qtype){ +return (i < 0 ? null : this.at[i].group.getQuaternion(qtype)); +}, "~N,~S"); +Clazz_defineMethod(c$, "getFirstAtomIndexFromAtomNumber", +function(atomNumber, bsVisibleFrames){ +for (var i = 0; i < this.ac; i++) { +var atom = this.at[i]; +if (!JM.AtomCollection.isDeleted(atom) && atom.getAtomNumber() == atomNumber && bsVisibleFrames.get(atom.mi)) return i; +} +return -1; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setFormalCharges", +function(bs, formalCharge){ +if (bs != null) { +this.resetPartialCharges(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].setFormalCharge(formalCharge); +this.taintAtom(i, 4); +} +}}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getAtomicCharges", +function(){ +var charges = Clazz_newFloatArray (this.ac, 0); +for (var i = this.ac; --i >= 0; ) charges[i] = (JM.AtomCollection.isDeleted(this.at[i]) ? 0 : this.at[i].getElementNumber()); + +return charges; +}); +Clazz_defineMethod(c$, "getRadiusVdwJmol", +function(atom){ +return JU.Elements.getVanderwaalsMar(atom.getElementNumber(), J.c.VDW.JMOL) / 1000; +}, "JM.Atom"); +Clazz_defineMethod(c$, "getMaxVanderwaalsRadius", +function(){ +if (this.maxVanderwaalsRadius == 1.4E-45) this.findMaxRadii(); +return this.maxVanderwaalsRadius; +}); +Clazz_defineMethod(c$, "findMaxRadii", +function(){ +var r; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if ((r = atom.getBondingRadius()) > this.maxBondingRadius) this.maxBondingRadius = r; +if ((r = atom.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)) > this.maxVanderwaalsRadius) this.maxVanderwaalsRadius = r; +} +}); +Clazz_defineMethod(c$, "clearBfactorRange", +function(){ +this.hasBfactorRange = false; +}); +Clazz_defineMethod(c$, "calcBfactorRange", +function(bs){ +if (this.hasBfactorRange) return; +this.bfactor100Lo = 2147483647; +this.bfactor100Hi = -2147483648; +if (bs == null) { +for (var i = 0; i < this.ac; i++) this.setBf(i); + +} else { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.setBf(i); + +}this.hasBfactorRange = true; +}, "JU.BS"); +Clazz_defineMethod(c$, "setBf", +function(i){ +if (JM.AtomCollection.isDeleted(this.at[i])) return; +var bf = this.at[i].getBfactor100(); +if (bf < this.bfactor100Lo) this.bfactor100Lo = bf; + else if (bf > this.bfactor100Hi) this.bfactor100Hi = bf; +}, "~N"); +Clazz_defineMethod(c$, "getBfactor100Lo", +function(){ +if (!this.hasBfactorRange) { +if (this.vwr.g.rangeSelected) { +this.calcBfactorRange(this.vwr.bsA()); +} else { +this.calcBfactorRange(null); +}}return this.bfactor100Lo; +}); +Clazz_defineMethod(c$, "getBfactor100Hi", +function(){ +this.getBfactor100Lo(); +return this.bfactor100Hi; +}); +Clazz_defineMethod(c$, "getSurfaceDistanceMax", +function(){ +if (this.surfaceDistance100s == null) this.calcSurfaceDistances(); +return this.surfaceDistanceMax; +}); +Clazz_defineMethod(c$, "calculateVolume", +function(bs, vType){ +var volume = 0; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) volume += this.at[i].getVolume(this.vwr, vType); + +return volume; +}, "JU.BS,J.c.VDW"); +Clazz_defineMethod(c$, "getSurfaceDistance100", +function(atomIndex){ +if (this.nSurfaceAtoms == 0) return -1; +if (this.surfaceDistance100s == null) this.calcSurfaceDistances(); +return this.surfaceDistance100s[atomIndex]; +}, "~N"); +Clazz_defineMethod(c$, "calcSurfaceDistances", +function(){ +this.calculateSurface(null, -1); +}); +Clazz_defineMethod(c$, "calculateSurface", +function(bsSelected, envelopeRadius){ +if (envelopeRadius < 0) envelopeRadius = 3.0; +var ec = (J.api.Interface.getOption("geodesic.EnvelopeCalculation", this.vwr, "ms")).set(this.vwr, this.ac, null); +ec.calculate( new J.atomdata.RadiusData(null, envelopeRadius, J.atomdata.RadiusData.EnumType.ABSOLUTE, null), 3.4028235E38, bsSelected, JU.BSUtil.copyInvert(bsSelected, this.ac), false, false, false, true); +var points = ec.getPoints(); +this.surfaceDistanceMax = 0; +this.bsSurface = ec.getBsSurfaceClone(); +this.surfaceDistance100s = Clazz_newIntArray (this.ac, 0); +this.nSurfaceAtoms = JU.BSUtil.cardinalityOf(this.bsSurface); +if (this.nSurfaceAtoms == 0 || points == null || points.length == 0) return points; +var radiusAdjust = (envelopeRadius == 3.4028235E38 ? 0 : envelopeRadius); +for (var i = 0; i < this.ac; i++) { +if (this.bsSurface.get(i) || JM.AtomCollection.isDeleted(this.at[i])) { +this.surfaceDistance100s[i] = 0; +} else { +var dMin = 3.4028235E38; +var atom = this.at[i]; +for (var j = points.length; --j >= 0; ) { +dMin = Math.min(Math.abs(points[j].distance(atom) - radiusAdjust), dMin); +} +var d = this.surfaceDistance100s[i] = Clazz_doubleToInt(Math.floor(dMin * 100)); +this.surfaceDistanceMax = Math.max(this.surfaceDistanceMax, d); +}} +return points; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "setAtomCoord2", +function(bs, tokType, xyzValues){ +var xyz = null; +var values = null; +var v = null; +var type = 0; +var nValues = 1; +if (Clazz_instanceOf(xyzValues,"JU.P3")) { +xyz = xyzValues; +} else if (Clazz_instanceOf(xyzValues,"JU.Lst")) { +v = xyzValues; +if ((nValues = v.size()) == 0) return; +type = 1; +} else if (JU.AU.isAP(xyzValues)) { +values = xyzValues; +if ((nValues = values.length) == 0) return; +type = 2; +} else { +return; +}var n = 0; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +switch (type) { +case 1: +if (n >= nValues) return; +xyz = v.get(n++); +break; +case 2: +if (n >= nValues) return; +xyz = values[n++]; +break; +} +if (xyz != null) switch (tokType) { +case 1145047049: +this.setAtomCoord(i, xyz.x, xyz.y, xyz.z); +break; +case 1145047050: +case 1145047053: +this.at[i].setFractionalCoordTo(xyz, false); +this.taintAtom(i, 2); +break; +case 1145047055: +this.setAtomVibrationVector(i, xyz); +break; +} +} +}, "JU.BS,~N,~O"); +Clazz_defineMethod(c$, "setAtomVibrationVector", +function(atomIndex, vib){ +this.setVibrationVector(atomIndex, vib); +this.taintAtom(atomIndex, 12); +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setAtomCoord", +function(atomIndex, x, y, z){ +if (atomIndex < 0 || atomIndex >= this.ac) return; +var a = this.at[atomIndex]; +a.set(x, y, z); +this.fixTrajectory(a); +this.taintAtom(atomIndex, 2); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "fixTrajectory", +function(a){ +if ((this).isTrajectory(a.mi)) this.trajectory.fixAtom(a); +}, "JM.Atom"); +Clazz_defineMethod(c$, "setAtomCoordRelative", +function(atomIndex, x, y, z){ +if (atomIndex < 0 || atomIndex >= this.ac) return; +var a = this.at[atomIndex]; +a.add3(x, y, z); +this.fixTrajectory(a); +this.taintAtom(atomIndex, 2); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAtomsCoordRelative", +function(bs, x, y, z){ +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.setAtomCoordRelative(i, x, y, z); + +}, "JU.BS,~N,~N,~N"); +Clazz_defineMethod(c$, "setAPa", +function(bs, tok, iValue, fValue, sValue, values, list){ +var n = 0; +if (values != null && values.length == 0 || bs == null) return; +var isAll = (values != null && values.length == this.ac || list != null && list.length == this.ac); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (isAll) n = i; +if (values != null) { +if (n >= values.length) return; +fValue = values[n++]; +if (Float.isNaN(fValue)) continue; +iValue = Clazz_floatToInt(fValue); +} else if (list != null) { +if (n >= list.length) return; +sValue = list[n++]; +}var atom = this.at[i]; +var f; +switch (tok) { +case 1086326786: +this.setAtomName(i, sValue, true); +break; +case 1086326785: +this.setAtomType(i, sValue); +break; +case 1086326788: +this.setChainID(i, sValue); +break; +case 1094715393: +this.setAtomNumber(i, iValue, true); +break; +case 1094713365: +this.setAtomSeqID(i, iValue); +break; +case 1111492609: +case 1111492629: +this.setAtomCoord(i, fValue, atom.y, atom.z); +break; +case 1111492610: +case 1111492630: +this.setAtomCoord(i, atom.x, fValue, atom.z); +break; +case 1111492611: +case 1111492631: +this.setAtomCoord(i, atom.x, atom.y, fValue); +break; +case 1111492626: +case 1111492627: +case 1111492628: +this.setVibrationVector2(i, tok, fValue); +break; +case 1111492612: +case 1111492613: +case 1111492614: +case 1111492615: +case 1111492616: +case 1111492617: +atom.setFractionalCoord(tok, fValue, false); +this.taintAtom(i, 2); +break; +case 1094715402: +case 1086326789: +this.setElement(atom, iValue, true); +break; +case 1631586315: +this.resetPartialCharges(); +atom.setFormalCharge(iValue); +this.taintAtom(i, 4); +break; +case 1113589786: +this.setHydrophobicity(i, fValue); +break; +case 1128269825: +f = (fValue < 2 && fValue >= 0.01 ? 100 * fValue : fValue); +this.setOccupancy(i, f, true); +break; +case 1111492619: +this.setPartialCharge(i, fValue, true); +break; +case 1111492618: +this.setBondingRadius(i, fValue); +break; +case 1111492620: +this.setBFactor(i, fValue, true); +break; +case 1094715412: +this.setAtomResno(i, iValue); +break; +case 1825200146: +case 1287653388: +this.vwr.shm.setAtomLabel(sValue, i); +break; +case 1665140738: +case 1112152075: +f = fValue; +if (f < 0) f = 0; + else if (f > 16) f = 16.1; +atom.madAtom = (Clazz_floatToShort(f * 2000)); +break; +case 1113589787: +this.vwr.slm.setSelectedAtom(atom.i, (fValue != 0)); +break; +case 1094715418: +atom.setValence(iValue); +this.taintAtom(i, 10); +break; +case 1648363544: +if (atom.setRadius(fValue)) this.taintAtom(i, 11); + else this.untaint(i, 11); +break; +default: +JU.Logger.error("unsettable atom property: " + JS.T.nameOf(tok)); +return; +} +} +switch (tok) { +case 1113589787: +this.vwr.slm.setSelectedAtom(-1, false); +break; +case 1665140738: +case 1112152075: +this.vwr.setShapeSize(0, 2147483647, bs); +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz_defineMethod(c$, "getVibCoord", +function(atomIndex, c){ +var ms = null; +var v = null; +switch ((c).charCodeAt(0)) { +case 120: +case 121: +case 122: +v = this.getVibration(atomIndex, false); +break; +default: +ms = this.getModulation(atomIndex); +if (ms != null) { +v = ms.getVibration(false); +if (v == null) v = ms; +}} +if (v == null && ms == null) return NaN; +switch ((c).charCodeAt(0)) { +case 120: +case 88: +return v.x; +case 121: +case 89: +return v.y; +case 122: +case 90: +return v.z; +case 79: +return (ms.getModulation('O', null, true)).floatValue(); +case 49: +case 50: +case 51: +var t = ms.getModulation('T', null, true); +var x = (c == '1' ? t.x : c == '2' ? t.y : t.z); +return (x - Math.floor(x)); +default: +return NaN; +} +}, "~N,~S"); +Clazz_defineMethod(c$, "getVibration", +function(atomIndex, forceNew){ +var v = (this.vibrations == null ? null : this.vibrations[atomIndex]); +return (Clazz_instanceOf(v,"J.api.JmolModulationSet") ? (v).getVibration(forceNew) : v == null && forceNew ? new JU.Vibration() : v); +}, "~N,~B"); +Clazz_defineMethod(c$, "getModulation", +function(iAtom){ +var v = (this.vibrations == null ? null : this.vibrations[iAtom]); +return (v != null && v.modDim > 0 ? v : null); +}, "~N"); +Clazz_defineMethod(c$, "setVibrationVector", +function(atomIndex, vib){ +if (vib == null) { +if (this.vibrations != null && this.vibrations.length > atomIndex) this.vibrations[atomIndex] = null; +return; +}if (Double.isNaN(vib.x) || Double.isNaN(vib.y) || Double.isNaN(vib.z)) return; +if (this.vibrations == null || this.vibrations.length <= atomIndex) this.vibrations = new Array(this.at.length); +if (Clazz_instanceOf(vib,"JU.Vibration")) { +this.vibrations[atomIndex] = vib; +} else { +if (this.vibrations[atomIndex] == null) this.vibrations[atomIndex] = new JU.Vibration(); +this.vibrations[atomIndex].setXYZ(vib); +}this.at[atomIndex].setVibrationVector(); +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setVibrationVector2", +function(atomIndex, tok, fValue){ +var v = this.getVibration(atomIndex, true); +if (v == null) return; +switch (tok) { +case 1111492626: +v.x = fValue; +break; +case 1111492627: +v.y = fValue; +break; +case 1111492628: +v.z = fValue; +break; +} +this.setAtomVibrationVector(atomIndex, v); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setAtomName", +function(atomIndex, name, doTaint){ +if (doTaint && name.equals(this.at[atomIndex].getAtomName())) return; +var id = ((this).am[this.at[atomIndex].mi].isBioModel ? this.vwr.getJBR().lookupSpecialAtomID(name) : 0); +this.at[atomIndex].atomID = id; +if (id <= 0) { +if (this.atomNames == null) this.atomNames = new Array(this.at.length); +this.atomNames[atomIndex] = name; +}if (doTaint) this.taintAtom(atomIndex, 0); +}, "~N,~S,~B"); +Clazz_defineMethod(c$, "setAtomType", +function(atomIndex, type){ +if (type.equals(this.at[atomIndex].getAtomType())) return; +if (this.atomTypes == null) this.atomTypes = new Array(this.at.length); +this.atomTypes[atomIndex] = type; +return; +}, "~N,~S"); +Clazz_defineMethod(c$, "setChainID", +function(atomIndex, id){ +if (id.equals(this.at[atomIndex].getChainIDStr())) return; +var intid = this.at[atomIndex].getChainID(); +var bs = this.getChainBits(intid); +var c = this.at[atomIndex].group.chain; +c.chainID = this.vwr.getChainID(id, true); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.taintAtom(i, 16); + +}, "~N,~S"); +Clazz_defineMethod(c$, "setAtomNumber", +function(atomIndex, atomno, doTaint){ +if (doTaint && atomno == this.at[atomIndex].getAtomNumber()) return; +if (this.atomSerials == null) this.atomSerials = Clazz_newIntArray (this.at.length, 0); +this.atomSerials[atomIndex] = atomno; +if (doTaint) this.taintAtom(atomIndex, 13); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setElement", +function(atom, atomicNumber, doTaint){ +if (doTaint && atom.getElementNumber() == atomicNumber) return; +atom.setAtomicAndIsotopeNumber(atomicNumber); +atom.paletteID = J.c.PAL.CPK.id; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +this.resetPartialCharges(); +if (doTaint) this.taintAtom(atom.i, 3); +}, "JM.Atom,~N,~B"); +Clazz_defineMethod(c$, "setSite", +function(atom, site, doTaint){ +if (atom.atomSite == site) return; +atom.atomSite = site; +if (doTaint) this.taintAtom(atom.i, 17); +}, "JM.Atom,~N,~B"); +Clazz_defineMethod(c$, "resetPartialCharges", +function(){ +this.partialCharges = null; +this.bsPartialCharges = null; +}); +Clazz_defineMethod(c$, "setAtomResno", +function(atomIndex, resno){ +if (resno == this.at[atomIndex].getResno()) return; +this.at[atomIndex].group.setResno(resno); +if (this.atomResnos == null) this.atomResnos = Clazz_newIntArray (this.at.length, 0); +this.atomResnos[atomIndex] = resno; +this.taintAtom(atomIndex, 15); +}, "~N,~N"); +Clazz_defineMethod(c$, "setAtomSeqID", +function(atomIndex, seqID){ +if (seqID == this.at[atomIndex].getSeqID()) return; +if (this.atomSeqIDs == null) this.atomSeqIDs = Clazz_newIntArray (this.at.length, 0); +this.atomSeqIDs[atomIndex] = seqID; +this.taintAtom(atomIndex, 14); +}, "~N,~N"); +Clazz_defineMethod(c$, "setOccupancy", +function(atomIndex, occupancy, doTaint){ +if (doTaint && occupancy == this.at[atomIndex].getOccupancy100()) return; +if (this.occupancies == null) { +if (occupancy == 100) return; +this.occupancies = Clazz_newFloatArray (this.at.length, 0); +for (var i = this.at.length; --i >= 0; ) this.occupancies[i] = 100; + +}this.occupancies[atomIndex] = occupancy; +if (doTaint) this.taintAtom(atomIndex, 7); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "getOccupancyFloat", +function(i){ +return (this.occupancies == null || i >= this.occupancies.length ? 100 : this.occupancies[i]); +}, "~N"); +Clazz_defineMethod(c$, "setPartialCharge", +function(atomIndex, partialCharge, doTaint){ +if (Float.isNaN(partialCharge)) return; +if (this.partialCharges == null) { +this.bsPartialCharges = new JU.BS(); +if (partialCharge == 0) return; +this.partialCharges = Clazz_newFloatArray (this.at.length, 0); +}this.bsPartialCharges.set(atomIndex); +this.partialCharges[atomIndex] = partialCharge; +if (doTaint) this.taintAtom(atomIndex, 8); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setBondingRadius", +function(atomIndex, radius){ +if (Float.isNaN(radius) || radius == this.at[atomIndex].getBondingRadius()) return; +if (this.bondingRadii == null) { +this.bondingRadii = Clazz_newFloatArray (this.at.length, 0); +} else if (this.bondingRadii.length < this.at.length) { +this.bondingRadii = JU.AU.ensureLengthA(this.bondingRadii, this.at.length); +}this.bondingRadii[atomIndex] = radius; +this.taintAtom(atomIndex, 6); +}, "~N,~N"); +Clazz_defineMethod(c$, "setBFactor", +function(atomIndex, bfactor, doTaint){ +if (Float.isNaN(bfactor) || doTaint && bfactor == this.at[atomIndex].getBfactor100()) return; +if (this.bfactor100s == null) { +if (bfactor == 0) return; +this.bfactor100s = Clazz_newShortArray (this.at.length, 0); +}this.bfactor100s[atomIndex] = Clazz_doubleToShort((bfactor < -327.68 ? -327.68 : bfactor > 327.67 ? 327.67 : bfactor) * 100 + (bfactor < 0 ? -0.5 : 0.5)); +if (doTaint) this.taintAtom(atomIndex, 9); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setHydrophobicity", +function(atomIndex, value){ +if (Float.isNaN(value) || value == this.at[atomIndex].getHydrophobicity()) return; +if (this.hydrophobicities == null) { +this.hydrophobicities = Clazz_newFloatArray (this.at.length, 0); +for (var i = 0; i < this.at.length; i++) this.hydrophobicities[i] = JU.Elements.getHydrophobicity(this.at[i].group.groupID); + +}this.hydrophobicities[atomIndex] = value; +this.taintAtom(atomIndex, 5); +}, "~N,~N"); +Clazz_defineMethod(c$, "setAtomData", +function(type, name, dataString, isDefault){ +var fData = null; +var bs = null; +switch (type) { +case 2: +this.loadCoordinates(dataString, false, !isDefault); +return; +case 12: +this.loadCoordinates(dataString, true, true); +return; +case 18: +fData = Clazz_newFloatArray (this.ac, 0); +bs = JU.BS.newN(this.ac); +break; +} +var lines = JU.Parser.markLines(dataString, ';'); +var n = 0; +try { +var nData = JU.PT.parseInt(dataString.substring(0, lines[0] - 1)); +for (var i = 1; i <= nData; i++) { +var tokens = JU.PT.getTokens(JU.PT.parseTrimmed(dataString.substring(lines[i], lines[i + 1] - 1))); +var atomIndex = JU.PT.parseInt(tokens[0]) - 1; +if (atomIndex < 0 || atomIndex >= this.ac) continue; +var atom = this.at[atomIndex]; +n++; +var pt = tokens.length - 1; +var x = JU.PT.parseFloat(tokens[pt]); +switch (type) { +case 18: +fData[atomIndex] = x; +bs.set(atomIndex); +continue; +case 0: +this.setAtomName(atomIndex, tokens[pt], true); +break; +case 13: +this.setAtomNumber(atomIndex, Clazz_floatToInt(x), true); +break; +case 15: +this.setAtomResno(atomIndex, Clazz_floatToInt(x)); +break; +case 14: +this.setAtomSeqID(atomIndex, Clazz_floatToInt(x)); +break; +case 1: +this.setAtomType(atomIndex, tokens[pt]); +break; +case 16: +this.setChainID(atomIndex, tokens[pt]); +break; +case 17: +atom.atomSite = Clazz_floatToInt(x); +break; +case 3: +atom.setAtomicAndIsotopeNumber(Clazz_floatToInt(x)); +atom.paletteID = J.c.PAL.CPK.id; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +break; +case 4: +atom.setFormalCharge(Clazz_floatToInt(x)); +break; +case 5: +this.setHydrophobicity(atomIndex, x); +break; +case 6: +this.setBondingRadius(atomIndex, x); +break; +case 8: +this.setPartialCharge(atomIndex, x, true); +break; +case 9: +this.setBFactor(atomIndex, x, true); +break; +case 10: +atom.setValence(Clazz_floatToInt(x)); +break; +case 11: +atom.setRadius(x); +break; +} +this.taintAtom(atomIndex, type); +} +if (type == 18 && n > 0) this.vwr.setData(name, Clazz_newArray(-1, [name, fData, bs, Integer.$valueOf(1)]), 0, 0, 0, 0, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("loadData error: " + e); +} else { +throw e; +} +} +}, "~N,~S,~S,~B"); +Clazz_defineMethod(c$, "loadCoordinates", +function(data, isVibrationVectors, doTaint){ +var lines = JU.Parser.markLines(data, ';'); +var v = (isVibrationVectors ? new JU.V3() : null); +try { +var nData = JU.PT.parseInt(data.substring(0, lines[0] - 1)); +for (var i = 1; i <= nData; i++) { +var tokens = JU.PT.getTokens(JU.PT.parseTrimmed(data.substring(lines[i], lines[i + 1]))); +var atomIndex = JU.PT.parseInt(tokens[0]) - 1; +var x = (tokens[3].equalsIgnoreCase("1.4E-45") ? 1.4e-45 : JU.PT.parseFloat(tokens[3])); +var y = (tokens[4].equalsIgnoreCase("1.4E-45") ? 1.4e-45 : JU.PT.parseFloat(tokens[4])); +var z = JU.PT.parseFloat(tokens[5]); +if (isVibrationVectors) { +v.set(x, y, z); +this.setAtomVibrationVector(atomIndex, v); +} else { +this.setAtomCoord(atomIndex, x, y, z); +if (!doTaint) this.untaint(atomIndex, 2); +}} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Frame.loadCoordinate error: " + e); +} else { +throw e; +} +} +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "validateBspf", +function(isValid){ +if (this.bspf != null) this.bspf.isValid = isValid; +}, "~B"); +Clazz_defineMethod(c$, "validateBspfForModel", +function(modelIndex, isValid){ +if (this.bspf != null) this.bspf.validateModel(modelIndex, isValid); +}, "~N,~B"); +Clazz_defineMethod(c$, "setPreserveState", +function(TF){ +this.preserveState = TF; +}, "~B"); +c$.getUserSettableType = Clazz_defineMethod(c$, "getUserSettableType", +function(dataType){ +var isExplicit = (dataType.indexOf("property_") == 0); +var check = (isExplicit ? dataType.substring(9) : dataType); +for (var i = 0; i < 18; i++) if (JM.AtomCollection.userSettableValues[i].equalsIgnoreCase(check)) return i; + +return (isExplicit ? 18 : -1); +}, "~S"); +Clazz_defineMethod(c$, "getTaintedAtoms", +function(type){ +return this.tainted == null ? null : this.tainted[type]; +}, "~N"); +Clazz_defineMethod(c$, "taintAtoms", +function(bsAtoms, type){ +this.canSkipLoad = false; +if (!this.preserveState) return; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) this.taintAtom(i, type); + +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "taintAtom", +function(atomIndex, type){ +if (this.preserveState) { +if (this.tainted == null) this.tainted = new Array(18); +if (this.tainted[type] == null) this.tainted[type] = JU.BS.newN(this.ac); +this.tainted[type].set(atomIndex); +}if (type == 2) this.taintModelCoord(atomIndex); +}, "~N,~N"); +Clazz_defineMethod(c$, "taintModelCoord", +function(atomIndex){ +var m = (this).am[this.at[atomIndex].mi]; +this.validateBspfForModel(m.trajectoryBaseIndex, false); +if (m.isBioModel) m.resetDSSR(true); +this.pointGroup = null; +}, "~N"); +Clazz_defineMethod(c$, "untaint", +function(atomIndex, type){ +if (!this.preserveState) return; +if (this.tainted == null || this.tainted[type] == null) return; +this.tainted[type].clear(atomIndex); +}, "~N,~N"); +Clazz_defineMethod(c$, "setTaintedAtoms", +function(bs, type){ +if (this.preserveState) { +if (bs == null) { +if (this.tainted == null) return; +this.tainted[type] = null; +return; +}if (this.tainted == null) this.tainted = new Array(18); +if (this.tainted[type] == null) this.tainted[type] = JU.BS.newN(this.ac); +JU.BSUtil.copy2(bs, this.tainted[type]); +}if (type == 2) { +var i = bs.nextSetBit(0); +if (i >= 0) this.taintModelCoord(i); +}}, "JU.BS,~N"); +Clazz_defineMethod(c$, "unTaintAtoms", +function(bs, type){ +if (this.tainted == null || this.tainted[type] == null) return; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.tainted[type].clear(i); + +if (this.tainted[type].nextSetBit(0) < 0) this.tainted[type] = null; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "findNearest2", +function(x, y, closest, bsNot, min){ +var champion = null; +var contender; +for (var i = this.ac; --i >= 0; ) { +if (bsNot != null && bsNot.get(i) || (contender = this.at[i]) == null) continue; +if (contender.isClickable() && this.isCursorOnTopOf(contender, x, y, min, champion)) champion = contender; +} +closest[0] = champion; +}, "~N,~N,~A,JU.BS,~N"); +Clazz_defineMethod(c$, "isCursorOnTopOf", +function(contender, x, y, radius, champion){ +return contender.sZ > 1 && !this.g3d.isClippedZ(contender.sZ) && this.g3d.isInDisplayRange(contender.sX, contender.sY) && contender.isCursorOnTopOf(x, y, radius, champion); +}, "JM.Atom,~N,~N,~N,JM.Atom"); +Clazz_defineMethod(c$, "fillADa", +function(atomData, mode){ +atomData.xyz = atomData.atoms = this.at; +atomData.ac = this.ac; +atomData.atomicNumber = Clazz_newIntArray (this.ac, 0); +var includeRadii = ((mode & 2) != 0); +if (includeRadii) atomData.atomRadius = Clazz_newFloatArray (this.ac, 0); +var isMultiModel = ((mode & 16) != 0); +for (var i = 0; i < this.ac; i++) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom) || !isMultiModel && atomData.modelIndex >= 0 && atom.mi != atomData.firstModelIndex) { +if (atomData.bsIgnored == null) atomData.bsIgnored = new JU.BS(); +atomData.bsIgnored.set(i); +continue; +}atomData.atomicNumber[i] = atom.getElementNumber(); +atomData.lastModelIndex = atom.mi; +if (includeRadii) atomData.atomRadius[i] = this.getWorkingRadius(atom, atomData); +} +}, "J.atomdata.AtomData,~N"); +Clazz_defineMethod(c$, "getWorkingRadius", +function(atom, atomData){ +var r = 0; +var rd = atomData.radiusData; +switch (rd.factorType) { +case J.atomdata.RadiusData.EnumType.ABSOLUTE: +r = rd.value; +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +case J.atomdata.RadiusData.EnumType.OFFSET: +switch (rd.vdwType) { +case J.c.VDW.BONDING: +r = atom.getBondingRadius(); +break; +case J.c.VDW.ADPMAX: +r = atom.getADPMinMax(true); +break; +case J.c.VDW.ADPMIN: +r = atom.getADPMinMax(false); +break; +default: +r = atom.getVanderwaalsRadiusFloat(this.vwr, atomData.radiusData.vdwType); +} +if (rd.factorType === J.atomdata.RadiusData.EnumType.FACTOR) r *= rd.value; + else r += rd.value; +} +return r + rd.valueExtended; +}, "JM.Atom,J.atomdata.AtomData"); +Clazz_defineMethod(c$, "calculateHydrogens", +function(bs, nTotal, vConnect, flags){ +var doAll = ((flags & 256) == 256); +var justCarbon = ((flags & 512) == 512); +var isQuick = ((flags & 8) == 8); +var ignoreH = ((flags & 2048) == 2048); +var allowH = ((flags & 4096) == 4096); +var z = new JU.V3(); +var x = new JU.V3(); +var hAtoms = new Array(this.ac); +var bsDeleted = this.vwr.slm.bsDeleted; +var pt; +var nH = nTotal[0] = 0; +if (bs == null) { +return hAtoms; +}var sym = this.vwr.getOperativeSymmetry(); +if (sym != null && this.vwr.getObjectMad10(5) == 0) sym = null; +var ptTemp = (sym == null ? null : new JU.P3()); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (bsDeleted != null && bsDeleted.get(i)) continue; +var atom = this.at[i]; +var atomicNumber = atom.getElementNumber(); +if (justCarbon && atomicNumber != 6) continue; +var dHX = (atomicNumber <= 6 ? 1.1 : atomicNumber <= 10 ? 1.0 : 1.3); +switch (atomicNumber) { +case 7: +case 8: +dHX = 1.0; +break; +case 6: +} +var n = (doAll || ignoreH || allowH ? atom.getCovalentHydrogenCount() : 0); +if (doAll && n > 0 || ignoreH && n == 0) continue; +var nMissing = this.getMissingHydrogenCount(atom, false); +if (doAll && nMissing == 0) continue; +if (!ignoreH) n = nMissing; +var targetValence = this.aaRet[0]; +var hybridization = this.aaRet[2]; +var nBonds = this.aaRet[3] - (ignoreH ? n : 0); +if (nBonds == 0 && atom.isHetero()) continue; +hAtoms[i] = new Array(n); +var hPt = 0; +if (nBonds == 0) { +switch (n) { +case 4: +z.set(0.635, 0.635, 0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 3: +z.set(-0.635, -0.635, 0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 2: +z.set(-0.635, 0.635, -0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +case 1: +z.set(0.635, -0.635, -0.635); +pt = JU.P3.newP(z); +pt.add(atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +} +} else { +switch (n) { +default: +break; +case 3: +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3b", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3c", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, "sp3d", false, true, isQuick, null); +pt = new JU.P3(); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 2: +var isEne = (hybridization == 2 || atomicNumber == 5 || nBonds == 1 && targetValence == 4 || atomicNumber == 7 && this.isAdjacentSp2(atom)); +this.getHybridizationAndAxes(i, atomicNumber, z, x, (isEne ? "sp2b" : targetValence == 3 ? "sp3c" : "lpa"), false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +this.getHybridizationAndAxes(i, atomicNumber, z, x, (isEne ? "sp2c" : targetValence == 3 ? "sp3d" : "lpb"), false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 1: +switch (targetValence - nBonds) { +case 1: +if (atomicNumber == 8 && atom === atom.group.getCarbonylOxygenAtom()) { +hAtoms[i] = null; +continue; +}if (this.getHybridizationAndAxes(i, atomicNumber, z, x, (hybridization == 2 || atomicNumber == 5 || atomicNumber == 6 && this.aaRet[1] == 1 || atomicNumber == 7 && ( new Boolean ( new Boolean (atom.group.getNitrogenAtom() === atom & atom.getFormalCharge() == 0).valueOf() || this.isAdjacentSp2(atom)).valueOf()) ? "sp2c" : "sp3d"), true, false, isQuick, null) != null) { +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +}break; +case 2: +this.getHybridizationAndAxes(i, atomicNumber, z, x, (targetValence == 4 ? "sp2c" : "sp2b"), false, false, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +case 3: +this.getHybridizationAndAxes(i, atomicNumber, z, x, "spb", false, true, isQuick, null); +pt = JU.P3.newP(z); +pt.scaleAdd2(dHX, z, atom); +hPt = JM.AtomCollection.addH(hAtoms[i], hPt, pt, atom, vConnect, sym, ptTemp); +break; +} +} +}if (hPt < n) { +var a = new Array(hPt); +for (var j = 0; j < hPt; j++) a[j] = hAtoms[i][j]; + +hAtoms[i] = a; +}nH += hPt; +} +nTotal[0] = nH; +return hAtoms; +}, "JU.BS,~A,JU.Lst,~N"); +c$.addH = Clazz_defineMethod(c$, "addH", +function(hAtoms, hPt, pt, atom, vConnect, sym, ptTemp){ +if (sym != null) { +ptTemp.setT(pt); +sym.toFractional(ptTemp, false); +if (!sym.isWithinUnitCell(ptTemp, 1, 1, 1)) { +return hPt; +}}hAtoms[hPt++] = pt; +if (vConnect != null) vConnect.addLast(atom); +return hPt; +}, "~A,~N,JU.P3,JM.Atom,JU.Lst,J.api.SymmetryInterface,JU.P3"); +Clazz_defineMethod(c$, "isAdjacentSp2", +function(atom){ +var bonds = atom.bonds; +for (var i = 0; i < bonds.length; i++) { +var b2 = bonds[i].getOtherAtom(atom).bonds; +for (var j = 0; j < b2.length; j++) switch (b2[j].getCovalentOrder()) { +case 2: +case 3: +return true; +} + +} +return false; +}, "JM.Atom"); +Clazz_defineMethod(c$, "getMissingHydrogenCount", +function(atom, allowNegative){ +if (this.aaRet == null) this.aaRet = Clazz_newIntArray (5, 0); +var targetCount = atom.getTargetValence(); +if (targetCount < 0) return 0; +var charge = atom.getFormalCharge(); +var valence = atom.getValence(); +var model = (this).am[atom.mi]; +var s = (model.isBioModel && !model.isPdbWithMultipleBonds ? atom.group.getGroup3() : null); +this.aaRet[0] = targetCount; +this.aaRet[1] = charge; +this.aaRet[2] = 0; +this.aaRet[3] = atom.getCovalentBondCount(); +this.aaRet[4] = (s == null ? 0 : valence); +if (s != null && charge == 0) { +if (this.bioModelset.getAminoAcidValenceAndCharge(s, atom.getAtomName(), this.aaRet)) { +targetCount = this.aaRet[0]; +charge = this.aaRet[1]; +}}if (charge != 0) { +targetCount += (targetCount == 4 ? -Math.abs(charge) : charge); +this.aaRet[0] = targetCount; +}var n = targetCount - valence; +return (n < 0 && !allowNegative ? 0 : n); +}, "JM.Atom,~B"); +Clazz_defineMethod(c$, "fixFormalCharges", +function(bs){ +var n = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = this.at[i]; +var nH = this.getMissingHydrogenCount(a, true); +if (nH != 0) { +var c0 = a.getFormalCharge(); +var c = c0 - nH; +a.setFormalCharge(c); +this.taintAtom(i, 4); +if (JU.Logger.debugging) JU.Logger.debug("atom " + a + " formal charge " + c0 + " -> " + c); +n++; +}} +return n; +}, "JU.BS"); +Clazz_defineMethod(c$, "getHybridizationAndAxes", +function(atomIndex, atomicNumber, z, x, lcaoTypeRaw, hybridizationCompatible, doAlignZ, isQuick, ref){ +var lcaoType = (lcaoTypeRaw.length > 0 && lcaoTypeRaw.charAt(0) == '-' ? lcaoTypeRaw.substring(1) : lcaoTypeRaw); +if (lcaoTypeRaw.indexOf("d") >= 0 && !lcaoTypeRaw.endsWith("sp3d")) return this.getHybridizationAndAxesD(atomIndex, z, x, lcaoType); +var atom = this.at[atomIndex]; +if (atomicNumber == 0) atomicNumber = atom.getElementNumber(); +var attached = this.getAttached(atom, 4, hybridizationCompatible, isQuick); +var nAttached = attached.length; +var pt = (lcaoType.charAt(lcaoType.length - 1)).charCodeAt(0) - 97; +if (pt < 0 || pt > 6) pt = 0; +z.set(0, 0, 0); +x.set(0, 0, 0); +var v = new Array(4); +for (var i = 0; i < nAttached; i++) { +var a = attached[i]; +if (a == null) { +nAttached = i; +break; +}v[i] = JU.V3.newVsub(atom, a); +v[i].normalize(); +z.add(v[i]); +} +if (nAttached > 0) x.setT(v[0]); +var isPlanar = false; +var vTemp = new JU.V3(); +if (nAttached >= 3) { +if (x.angle(v[1]) < 2.9845130209103035) vTemp.cross(x, v[1]); + else vTemp.cross(x, v[2]); +vTemp.normalize(); +var vTemp2 = new JU.V3(); +if (v[1].angle(v[2]) < 2.9845130209103035) vTemp2.cross(v[1], v[2]); + else vTemp2.cross(x, v[2]); +vTemp2.normalize(); +isPlanar = (Math.abs(vTemp2.dot(vTemp)) >= 0.95); +}var isSp3 = (lcaoType.indexOf("sp3") == 0); +var isSp2 = (!isSp3 && lcaoType.indexOf("sp2") == 0); +var isSp = (!isSp3 && !isSp2 && lcaoType.indexOf("sp") == 0); +var isP = (lcaoType.indexOf("p") == 0); +var isLp = (lcaoType.indexOf("lp") == 0); +var hybridization = null; +if (hybridizationCompatible) { +if (nAttached == 0) return null; +if (isSp3) { +if (pt > 3 || nAttached > 4) return null; +} else if (isSp2) { +if (pt > 2 || nAttached > 3) return null; +} else if (isSp) { +if (pt > 1 || nAttached > 2) return null; +}switch (nAttached) { +case 1: +if (atomicNumber == 1 && !isSp3) return null; +if (isSp3) { +hybridization = "sp3"; +break; +}switch (attached[0].getCovalentBondCount()) { +case 1: +if (attached[0].getValence() != 2) { +hybridization = "sp"; +break; +}case 2: +hybridization = (isSp ? "sp" : "sp2"); +break; +case 3: +if (!isSp2 && !isP) return null; +hybridization = "sp2"; +break; +} +break; +case 2: +if (z.length() < 0.1) { +if (lcaoType.indexOf("2") >= 0 || lcaoType.indexOf("3") >= 0) return null; +hybridization = "sp"; +break; +}hybridization = (isSp3 ? "sp3" : "sp2"); +if (lcaoType.indexOf("sp") == 0) { +break; +}if (isLp) { +hybridization = "lp"; +break; +}hybridization = lcaoType; +break; +default: +if (isPlanar && !isQuick) { +hybridization = "sp2"; +} else { +if (isPlanar) z.setT(vTemp); +if (isLp && nAttached == 3) { +hybridization = "lp"; +break; +}hybridization = "sp3"; +}} +if (hybridization == null) return null; +if (lcaoType.indexOf("p") == 0) { +if (hybridization === "sp3") return null; +} else if (lcaoType.indexOf(hybridization) < 0) { +return null; +}}if (pt < nAttached && !lcaoType.startsWith("p") && !lcaoType.startsWith("l")) { +z.sub2(attached[pt], atom); +z.normalize(); +return hybridization; +}switch (nAttached) { +case 0: +if (lcaoType.equals("sp3c") || lcaoType.equals("sp2d") || lcaoType.equals("lpa")) { +z.set(-0.5, -0.7, 1); +x.set(1, 0, 0); +} else if (lcaoType.equals("sp3b") || lcaoType.equals("lpb")) { +z.set(0.5, -0.7, -1.0); +x.set(1, 0, 0); +} else if (lcaoType.equals("sp3a")) { +z.set(0, 1, 0); +x.set(1, 0, 0); +} else { +z.set(0, 0, 1); +x.set(1, 0, 0); +}break; +case 1: +vTemp.setT(JM.AtomCollection.vRef); +x.cross(vTemp, z); +if (isSp3) { +for (var i = attached[0].getBondCount(); --i >= 0; ) { +if (attached[0].bonds[i].isCovalentNotPartial0() && attached[0].getBondedAtomIndex(i) != atom.i) { +x.sub2(attached[0], attached[0].bonds[i].getOtherAtom(attached[0])); +x.cross(z, x); +if (x.length() == 0) continue; +x.cross(x, z); +break; +}} +x.normalize(); +if (Float.isNaN(x.x)) { +x.setT(JM.AtomCollection.vRef); +x.cross(x, z); +}vTemp.cross(z, x); +vTemp.normalize(); +z.normalize(); +x.scaleAdd2(2.828, x, z); +if (pt != 3) { +x.normalize(); + new JU.M3().setAA(JU.A4.new4(z.x, z.y, z.z, (pt == 2 ? 1 : -1) * 2.09439507)).rotate(x); +}z.setT(x); +x.cross(vTemp, z); +break; +}vTemp.cross(x, z); +var na = attached[0].getCovalentBondCount(); +switch (na) { +case 3: +if (ref !== attached[0]) { +this.getHybridizationAndAxes(attached[0].i, 0, x, vTemp, "pz", false, doAlignZ, isQuick, atom); +vTemp.setT(x); +if (isSp2) { +x.cross(x, z); +if (pt == 1) x.scale(-1); +x.scale(JM.AtomCollection.sqrt3_2); +z.scaleAdd2(0.5, z, x); +} else if (isSp) { +} else { +vTemp.setT(z); +z.setT(x); +}x.cross(vTemp, z); +break; +}na = 2; +case 1: +if (na == 1 && attached[0].getValence() != 2) { +break; +}case 2: +var isCumulated = false; +var a0 = attached[0]; +x.setT(z); +vTemp.setT(JM.AtomCollection.vRef); +while (a0 != null && a0.getCovalentBondCount() == 2) { +var bonds = a0.bonds; +var a = null; +isCumulated = !isCumulated; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalentNotPartial0()) { +a = bonds[i].getOtherAtom(a0); +if (a !== atom) { +vTemp.sub2(a, a0); +break; +}} +vTemp.cross(vTemp, x); +if (vTemp.length() > 0.1 || a.getCovalentBondCount() != 2) break; +atom = a0; +a0 = a; +} +if (isSp) { +} else if (vTemp.length() > 0.1) { +z.cross(vTemp, x); +z.normalize(); +if (pt == 1) z.scale(-1); +z.scale(JM.AtomCollection.sqrt3_2); +z.scaleAdd2(0.5, x, z); +if (isP) { +vTemp.cross(z, x); +z.setT(vTemp); +vTemp.setT(x); +}x.cross(vTemp, z); +} else { +z.setT(x); +x.cross(JM.AtomCollection.vRef, x); +}break; +} +break; +case 2: +if (z.length() < 0.1) { +if (!lcaoType.equals("pz")) { +var a = attached[0]; +var ok = (a.getCovalentBondCount() == 3); +if (!ok) ok = ((a = attached[1]).getCovalentBondCount() == 3); +if (ok) { +this.getHybridizationAndAxes(a.i, 0, x, z, "pz", false, doAlignZ, isQuick, null); +if (lcaoType.equals("px")) x.scale(-1); +z.setT(v[0]); +break; +}vTemp.setT(JM.AtomCollection.vRef); +z.cross(vTemp, x); +vTemp.cross(z, x); +}z.setT(x); +x.cross(vTemp, z); +break; +}vTemp.cross(z, x); +if (isSp2) { +x.cross(z, vTemp); +break; +}if (isSp3 || isLp) { +vTemp.normalize(); +z.normalize(); +if (!lcaoType.equals("lp")) { +if (pt == 0 || pt == 2) z.scaleAdd2(-1.2, vTemp, z); + else z.scaleAdd2(1.2, vTemp, z); +}x.cross(z, vTemp); +break; +}x.cross(z, vTemp); +z.setT(vTemp); +if (z.z < 0) { +z.scale(-1); +x.scale(-1); +}break; +default: +if (isSp3) break; +if (!isPlanar) { +x.cross(z, x); +break; +}z.setT(vTemp); +if (z.z < 0 && doAlignZ) { +z.scale(-1); +x.scale(-1); +}} +x.normalize(); +z.normalize(); +return hybridization; +}, "~N,~N,JU.V3,JU.V3,~S,~B,~B,~B,JU.T3"); +Clazz_defineMethod(c$, "getHybridizationAndAxesD", +function(atomIndex, z, x, lcaoType){ +if (lcaoType.startsWith("sp3d2")) lcaoType = "d2sp3" + (lcaoType.length == 5 ? "a" : lcaoType.substring(5)); +if (lcaoType.startsWith("sp3d")) lcaoType = "dsp3" + (lcaoType.length == 4 ? "a" : lcaoType.substring(4)); +if (lcaoType.equals("d2sp3") || lcaoType.equals("dsp3")) lcaoType += "a"; +var isTrigonal = lcaoType.startsWith("dsp3"); +var pt = (lcaoType.charAt(lcaoType.length - 1)).charCodeAt(0) - 97; +if (z != null && (!isTrigonal && (pt > 5 || !lcaoType.startsWith("d2sp3")) || isTrigonal && pt > 4)) return null; +var atom = this.at[atomIndex]; +var attached = this.getAttached(atom, 6, true, false); +if (attached == null) return (z == null ? null : "?"); +var nAttached = attached.length; +if (nAttached < 3 && z != null) return null; +var isLP = (pt >= nAttached); +var nAngles = Clazz_doubleToInt(nAttached * (nAttached - 1) / 2); +var angles = JU.AU.newInt2(nAngles); +var ntypes = Clazz_newIntArray (3, 0); +var typePtrs = Clazz_newIntArray (3, nAngles, 0); +var n = 0; +var _90 = 0; +var _120 = 1; +var _180 = 2; +var n120_atom0 = 0; +for (var i = 0; i < nAttached - 1; i++) for (var j = i + 1; j < nAttached; j++) { +var angle = JU.Measure.computeAngleABC(attached[i], atom, attached[j], true); +var itype = (angle < 105 ? _90 : angle >= 150 ? _180 : _120); +typePtrs[itype][ntypes[itype]] = n; +ntypes[itype]++; +angles[n++] = Clazz_newIntArray(-1, [i, j]); +if (i == 0 && itype == _120) n120_atom0++; +} + +n = ntypes[_90] * 100 + ntypes[_120] * 10 + ntypes[_180]; +if (z == null) { +switch (n) { +default: +return ""; +case 0: +return ""; +case 1: +return "linear"; +case 100: +case 10: +return "bent"; +case 111: +case 201: +return "T-shaped"; +case 30: +case 120: +case 210: +case 300: +if (Math.abs(JU.Measure.computeTorsion(attached[0], atom, attached[1], attached[2], true)) > 162) return "trigonal planar"; +return "trigonal pyramidal"; +case 330: +return (n120_atom0 % 2 == 1 ? "tetrahedral" : "uncapped trigonal pyramid"); +case 60: +case 150: +case 240: +return "tetrahedral"; +case 402: +return "square planar"; +case 411: +case 501: +return "see-saw"; +case 631: +return "trigonal bipyramidal"; +case 802: +return "uncapped square pyramid"; +case 1203: +return "octahedral"; +} +}switch (n) { +default: +return null; +case 201: +break; +case 210: +case 330: +case 411: +case 631: +if (!isTrigonal) return null; +break; +case 300: +case 402: +case 501: +case 802: +case 1203: +if (isTrigonal) return null; +break; +} +if (isLP) { +var a; +var bs; +if (isTrigonal) { +switch (ntypes[_120]) { +case 0: +z.sub2(attached[angles[typePtrs[_90][0]][0]], atom); +x.sub2(attached[angles[typePtrs[_90][0]][1]], atom); +z.cross(z, x); +z.normalize(); +if (pt == 4) z.scale(-1); +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +x.sub2(attached[i], atom); +x.normalize(); +x.scale(0.5); +z.scaleAdd2(JM.AtomCollection.sqrt3_2, z, x); +pt = -1; +break; +case 1: +if (pt == 4) { +a = angles[typePtrs[_120][0]]; +z.add2(attached[a[0]], attached[a[1]]); +z.scaleAdd2(-2, atom, z); +pt = -1; +} else { +bs = this.findNotAttached(nAttached, angles, typePtrs[_120], ntypes[_120]); +pt = bs.nextSetBit(0); +}break; +default: +bs = this.findNotAttached(nAttached, angles, typePtrs[_120], ntypes[_120]); +pt = bs.nextSetBit(0); +} +} else { +var isPlanar = false; +if (nAttached == 4) { +switch (ntypes[_180]) { +case 1: +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +if (pt == 4) pt = i; + else pt = bs.nextSetBit(i + 1); +break; +default: +isPlanar = true; +} +} else { +bs = this.findNotAttached(nAttached, angles, typePtrs[_180], ntypes[_180]); +var i = bs.nextSetBit(0); +for (var j = nAttached; j < pt && i >= 0; j++) i = bs.nextSetBit(i + 1); + +if (i == -1) isPlanar = true; + else pt = i; +}if (isPlanar) { +z.sub2(attached[angles[typePtrs[_90][0]][0]], atom); +x.sub2(attached[angles[typePtrs[_90][0]][1]], atom); +z.cross(z, x); +if (pt == 4) z.scale(-1); +pt = -1; +}}}if (pt >= 0) z.sub2(attached[pt], atom); +if (isLP) z.scale(-1); +z.normalize(); +return (isTrigonal ? "dsp3" : "d2sp3"); +}, "~N,JU.V3,JU.V3,~S"); +Clazz_defineMethod(c$, "getAttached", +function(atom, nMax, doSort, isQuick){ +var nAttached = atom.getCovalentBondCount(); +if (nAttached > nMax) return null; +var attached = new Array(nAttached); +if (nAttached > 0) { +var bonds = atom.bonds; +var n = 0; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalentNotPartial0()) { +var a = bonds[i].getOtherAtom(atom); +if (!isQuick || a.getAtomicAndIsotopeNumber() != 1) attached[n++] = a; +} +if (doSort && !isQuick) java.util.Arrays.sort(attached, Clazz_innerTypeInstance(JM.AtomCollection.AtomSorter, this, null)); +}return attached; +}, "JM.Atom,~N,~B,~B"); +Clazz_defineMethod(c$, "findNotAttached", +function(nAttached, angles, ptrs, nPtrs){ +var bs = JU.BS.newN(nAttached); +bs.setBits(0, nAttached); +for (var i = 0; i < nAttached; i++) for (var j = 0; j < nPtrs; j++) { +var a = angles[ptrs[j]]; +if (a[0] == i || a[1] == i) bs.clear(i); +} + +return bs; +}, "~N,~A,~A,~N"); +Clazz_defineMethod(c$, "getAtomBitsMDa", +function(tokType, specInfo, bs){ +var iSpec = (Clazz_instanceOf(specInfo, Integer) ? (specInfo).intValue() : 0); +switch (tokType) { +case 1086326786: +case 1086326785: +var isType = (tokType == 1086326785); +var names = "," + specInfo + ","; +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var s = (isType ? this.at[i].getAtomType() : this.at[i].getAtomName()); +if (names.indexOf("," + s + ",") >= 0) bs.set(i); +} +return bs; +case 1094715393: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getAtomNumber() == iSpec) bs.set(i); +} +return bs; +case 2097155: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getCovalentBondCount() > 0) bs.set(i); +} +return bs; +case 2097188: +case 2097156: +case 136314895: +case 2097166: +case 2097168: +case 2097170: +case 2097172: +case 2097174: +case 2097184: +return ((this).haveBioModels ? (this).bioModelset.getAtomBitsBS(tokType, null, bs) : bs); +case 1612709900: +iSpec = 1; +case 1094715402: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getElementNumber() == iSpec) bs.set(i); +} +return bs; +case 1612709894: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isHetero()) bs.set(i); +} +return bs; +case 1073741824: +return this.getIdentifierOrNull(specInfo); +case 2097165: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isLeadAtom()) bs.set(i); +} +return bs; +case 1094713362: +case 1639976963: +return ((this).haveBioModels ? (this).bioModelset.getAtomBitsBS(tokType, specInfo, bs) : bs); +case 1094715412: +for (var i = this.ac; --i >= 0; ) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getResno() == iSpec) bs.set(i); +} +return bs; +case 1612709912: +var hs = Clazz_newIntArray (2, 0); +var a; +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var g = this.at[i].group.groupID; +if (g >= 42 && g < 45) { +bs.set(i); +} else if ((a = this.at[i]).getElementNumber() == 8 && a.getCovalentBondCount() == 2) { +var bonds = a.bonds; +var n = 0; +var b; +for (var j = bonds.length; --j >= 0 && n < 3; ) if (bonds[j].isCovalentNotPartial0() && (b = bonds[j].getOtherAtom(a)).getElementNumber() == 1) hs[n++ % 2] = b.i; + +if (n == 2) { +bs.set(hs[1]); +bs.set(hs[0]); +bs.set(i); +}}} +return bs; +case 1073742355: +var spec = specInfo; +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.isAltLoc(this.at[i].altloc, spec)) bs.set(i); + +return bs; +case 1073742356: +var atomSpec = (specInfo).toUpperCase(); +if (atomSpec.indexOf("\\?") >= 0) atomSpec = JU.PT.rep(atomSpec, "\\?", "\1"); +var allowStar = atomSpec.startsWith("?*"); +if (allowStar) atomSpec = atomSpec.substring(1); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.isAtomNameMatch(this.at[i], atomSpec, allowStar, allowStar)) bs.set(i); + +return bs; +case 1073742357: +return JU.BSUtil.copy(this.getChainBits(iSpec)); +case 1073742360: +return this.getSpecName(specInfo); +case 1073742361: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].group.groupID == iSpec) bs.set(i); + +return bs; +case 1073742362: +return JU.BSUtil.copy(this.getSeqcodeBits(iSpec, true)); +case 5: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].group.getInsCode() == iSpec) bs.set(i); + +return bs; +case 1296041985: +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getSymOp() == iSpec) bs.set(i); + +return bs; +} +var bsTemp; +var bsInfo = specInfo; +var i0 = bsInfo.nextSetBit(0); +if (i0 < 0) return bs; +switch (tokType) { +case 1094717454: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +bs.or((this).am[this.at[i].mi].bsAtoms); +bsTemp.andNot(bs); +} +return bs; +case 1086326788: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +this.at[i].group.chain.setAtomBits(bs); +bsTemp.andNot(bs); +} +return bs; +case 1086326789: +bsTemp = new JU.BS(); +for (var i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) bsTemp.set(this.at[i].getElementNumber()); + +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && bsTemp.get(this.at[i].getElementNumber())) bs.set(i); + +return bs; +case 1086324742: +bsTemp = JU.BSUtil.copy(bsInfo); +for (var i = i0; i >= 0; i = bsTemp.nextSetBit(i + 1)) { +this.at[i].group.setAtomBits(bs); +bsTemp.andNot(bs); +} +return bs; +case 1094713366: +bsTemp = new JU.BS(); +for (var i = i0; i >= 0; i = bsInfo.nextSetBit(i + 1)) bsTemp.set(this.at[i].atomSite); + +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && bsTemp.get(this.at[i].atomSite)) bs.set(i); + +return bs; +} +JU.Logger.error("MISSING getAtomBits entry for " + JS.T.nameOf(tokType)); +return bs; +}, "~N,~O,JU.BS"); +Clazz_defineMethod(c$, "getChainBits", +function(chainID){ +var caseSensitive = this.vwr.getBoolean(603979822); +if (caseSensitive) { +if (chainID >= 97 && chainID <= 122) chainID += 159; +} else { +if (chainID >= 0 && chainID < 300) chainID = this.chainToUpper(chainID); +}var bs = new JU.BS(); +var bsDone = JU.BS.newN(this.ac); +var id; +for (var i = bsDone.nextClearBit(0); i < this.ac; i = bsDone.nextClearBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var chain = this.at[i].group.chain; +if (chainID == (id = chain.chainID) || !caseSensitive && id >= 0 && id < 300 && chainID == this.chainToUpper(id)) { +chain.setAtomBits(bs); +bsDone.or(bs); +} else { +chain.setAtomBits(bsDone); +}} +return bs; +}, "~N"); +Clazz_defineMethod(c$, "chainToUpper", +function(chainID){ +return (chainID >= 97 && chainID <= 122 ? chainID - 32 : chainID >= 256 && chainID < 300 ? chainID - 191 : chainID); +}, "~N"); +Clazz_defineMethod(c$, "isAltLoc", +function(altloc, strPattern){ +if (strPattern == null) return (altloc == '\0'); +if (strPattern.length != 1) return false; +var ch = strPattern.charAt(0); +return (ch == '*' || ch == '?' && altloc != '\0' || altloc == ch); +}, "~S,~S"); +Clazz_defineMethod(c$, "getSeqcodeBits", +function(seqcode, returnEmpty){ +var bs = new JU.BS(); +var seqNum = JM.Group.getSeqNumberFor(seqcode); +var haveSeqNumber = (seqNum != 2147483647); +var isEmpty = true; +var insCode = JM.Group.getInsertionCodeChar(seqcode); +switch ((insCode).charCodeAt(0)) { +case 63: +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var atomSeqcode = this.at[i].group.seqcode; +if ((!haveSeqNumber || seqNum == JM.Group.getSeqNumberFor(atomSeqcode)) && JM.Group.getInsertionCodeFor(atomSeqcode) != 0) { +bs.set(i); +isEmpty = false; +}} +break; +default: +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var atomSeqcode = this.at[i].group.seqcode; +if (seqcode == atomSeqcode || !haveSeqNumber && seqcode == JM.Group.getInsertionCodeFor(atomSeqcode) || insCode == '*' && seqNum == JM.Group.getSeqNumberFor(atomSeqcode)) { +bs.set(i); +isEmpty = false; +}} +} +return (!isEmpty || returnEmpty ? bs : null); +}, "~N,~B"); +Clazz_defineMethod(c$, "getIdentifierOrNull", +function(identifier){ +var bs = this.getSpecNameOrNull(identifier, false); +if (identifier.indexOf("\\?") >= 0) identifier = JU.PT.rep(identifier, "\\?", "\1"); +return (bs != null || identifier.indexOf("?") > 0 ? bs : identifier.indexOf("*") > 0 ? this.getSpecNameOrNull(identifier, true) : (this).haveBioModels ? (this).bioModelset.getIdentifierOrNull(identifier) : null); +}, "~S"); +Clazz_defineMethod(c$, "getSpecName", +function(name){ +var bs = this.getSpecNameOrNull(name, false); +if (bs != null) return bs; +if (name.indexOf("*") > 0) bs = this.getSpecNameOrNull(name, true); +return (bs == null ? new JU.BS() : bs); +}, "~S"); +Clazz_defineMethod(c$, "getSpecNameOrNull", +function(name, checkStar){ +var bs = null; +name = name.toUpperCase(); +if (name.indexOf("\\?") >= 0) name = JU.PT.rep(name, "\\?", "\1"); +var allowInitialStar = name.startsWith("?*"); +if (allowInitialStar) name = name.substring(1); +for (var i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var g3 = this.at[i].getGroup3(true); +if (g3 != null && g3.length > 0) { +if (JU.PT.isMatch(g3, name, checkStar, true)) { +if (bs == null) bs = JU.BS.newN(i + 1); +bs.set(i); +while (--i >= 0) { +if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].getGroup3(true).equals(g3)) bs.set(i); +} +i++; +}} else if (this.isAtomNameMatch(this.at[i], name, checkStar, allowInitialStar)) { +if (bs == null) bs = JU.BS.newN(i + 1); +bs.set(i); +}} +return bs; +}, "~S,~B"); +Clazz_defineMethod(c$, "isAtomNameMatch", +function(atom, strPattern, checkStar, allowInitialStar){ +return JU.PT.isMatch(atom.getAtomName().toUpperCase(), strPattern, checkStar, allowInitialStar); +}, "JM.Atom,~S,~B,~B"); +Clazz_defineMethod(c$, "getAtomIndices", +function(bs){ +var n = 0; +var indices = Clazz_newIntArray (this.ac, 0); +for (var j = bs.nextSetBit(0); j >= 0 && j < this.ac; j = bs.nextSetBit(j + 1)) indices[j] = ++n; + +return indices; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAtomsNearPlane", +function(distance, plane){ +var bsResult = new JU.BS(); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var d = JU.Measure.distanceToPlane(plane, atom); +if (distance > 0 && d >= -0.1 && d <= distance || distance < 0 && d <= 0.1 && d >= distance || distance == 0 && Math.abs(d) < 0.01) bsResult.set(atom.i); +} +return bsResult; +}, "~N,JU.P4"); +Clazz_defineMethod(c$, "clearVisibleSets", +function(){ +this.haveBSVisible = false; +this.haveBSClickable = false; +}); +Clazz_defineMethod(c$, "getAtomsInFrame", +function(bsAtoms){ +this.clearVisibleSets(); +bsAtoms.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isVisible(1)) bsAtoms.set(i); + +}, "JU.BS"); +Clazz_defineMethod(c$, "getVisibleSet", +function(forceNew){ +if (forceNew) { +this.vwr.setModelVisibility(); +this.vwr.shm.finalizeAtoms(null, true); +} else if (this.haveBSVisible) { +return this.bsVisible; +}this.bsVisible.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].checkVisible()) this.bsVisible.set(i); + +if (this.vwr.shm.bsSlabbedInternal != null) this.bsVisible.andNot(this.vwr.shm.bsSlabbedInternal); +this.haveBSVisible = true; +return this.bsVisible; +}, "~B"); +Clazz_defineMethod(c$, "getClickableSet", +function(forceNew){ +if (forceNew) this.vwr.setModelVisibility(); + else if (this.haveBSClickable) return this.bsClickable; +this.bsClickable.clearAll(); +for (var i = this.ac; --i >= 0; ) if (!JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].isClickable()) this.bsClickable.set(i); + +this.haveBSClickable = true; +return this.bsClickable; +}, "~B"); +Clazz_defineMethod(c$, "isModulated", +function(i){ +return this.bsModulated != null && this.bsModulated.get(i); +}, "~N"); +Clazz_defineMethod(c$, "deleteModelAtoms", +function(firstAtomIndex, nAtoms, bsAtoms){ +this.at = JU.AU.deleteElements(this.at, firstAtomIndex, nAtoms); +this.ac = this.at.length; +for (var j = firstAtomIndex; j < this.ac; j++) { +this.at[j].i = j; +this.at[j].mi--; +} +if (this.bsModulated != null) JU.BSUtil.deleteBits(this.bsModulated, bsAtoms); +this.deleteAtomTensors(bsAtoms); +this.atomNames = JU.AU.deleteElements(this.atomNames, firstAtomIndex, nAtoms); +this.atomTypes = JU.AU.deleteElements(this.atomTypes, firstAtomIndex, nAtoms); +this.atomResnos = JU.AU.deleteElements(this.atomResnos, firstAtomIndex, nAtoms); +this.atomSerials = JU.AU.deleteElements(this.atomSerials, firstAtomIndex, nAtoms); +this.atomSeqIDs = JU.AU.deleteElements(this.atomSeqIDs, firstAtomIndex, nAtoms); +this.dssrData = JU.AU.deleteElements(this.dssrData, firstAtomIndex, nAtoms); +this.bfactor100s = JU.AU.deleteElements(this.bfactor100s, firstAtomIndex, nAtoms); +this.hasBfactorRange = false; +this.occupancies = JU.AU.deleteElements(this.occupancies, firstAtomIndex, nAtoms); +this.resetPartialCharges(); +this.atomTensorList = JU.AU.deleteElements(this.atomTensorList, firstAtomIndex, nAtoms); +this.vibrations = JU.AU.deleteElements(this.vibrations, firstAtomIndex, nAtoms); +this.nSurfaceAtoms = 0; +this.bsSurface = null; +this.surfaceDistance100s = null; +if (this.tainted != null) for (var i = 0; i < 18; i++) JU.BSUtil.deleteBits(this.tainted[i], bsAtoms); + +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "getAtomIdentityInfo", +function(i, info, ptTemp){ +info.put("_ipt", Integer.$valueOf(i)); +info.put("atomIndex", Integer.$valueOf(i)); +info.put("atomno", Integer.$valueOf(this.at[i].getAtomNumber())); +info.put("info", this.getAtomInfo(i, null, ptTemp)); +info.put("sym", this.at[i].getElementSymbol()); +}, "~N,java.util.Map,JU.P3"); +Clazz_defineMethod(c$, "getAtomTensorList", +function(i){ +return (i < 0 || this.atomTensorList == null || i >= this.atomTensorList.length ? null : this.atomTensorList[i]); +}, "~N"); +Clazz_defineMethod(c$, "deleteAtomTensors", +function(bsAtoms){ +if (this.atomTensors == null) return; +var toDelete = new JU.Lst(); +for (var key, $key = this.atomTensors.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var list = this.atomTensors.get(key); +for (var i = list.size(); --i >= 0; ) { +var t = list.get(i); +if (bsAtoms.get(t.atomIndex1) || t.atomIndex2 >= 0 && bsAtoms.get(t.atomIndex2)) list.removeItemAt(i); +} +if (list.size() == 0) toDelete.addLast(key); +} +for (var i = toDelete.size(); --i >= 0; ) this.atomTensors.remove(toDelete.get(i)); + +}, "JU.BS"); +Clazz_defineMethod(c$, "setCapacity", +function(nAtoms){ +this.atomCapacity += nAtoms; +}, "~N"); +Clazz_defineMethod(c$, "setAtomTensors", +function(atomIndex, list){ +if (list == null || list.size() == 0) return; +if (this.atomTensors == null) this.atomTensors = new java.util.Hashtable(); +if (this.atomTensorList == null) this.atomTensorList = new Array(this.at.length); +this.atomTensorList = JU.AU.ensureLength(this.atomTensorList, this.at.length); +this.atomTensorList[atomIndex] = JM.AtomCollection.getTensorList(list); +for (var i = list.size(); --i >= 0; ) { +var t = list.get(i); +t.atomIndex1 = atomIndex; +t.atomIndex2 = -1; +t.modelIndex = this.at[atomIndex].mi; +this.addTensor(t, t.type); +if (t.altType != null) this.addTensor(t, t.altType); +} +}, "~N,JU.Lst"); +Clazz_defineMethod(c$, "addTensor", +function(t, type){ +type = type.toLowerCase(); +var tensors = this.atomTensors.get(type); +if (tensors == null) { +this.atomTensors.put(type, tensors = new JU.Lst()); +tensors.ensureCapacity(this.atomCapacity); +}tensors.addLast(t); +}, "JU.Tensor,~S"); +c$.getTensorList = Clazz_defineMethod(c$, "getTensorList", +function(list){ +var pt = -1; +var haveTLS = false; +var n = list.size(); +for (var i = n; --i >= 0; ) { +var t = list.get(i); +if (t.forThermalEllipsoid) pt = i; + else if (t.iType == 2) haveTLS = true; +} +var a = new Array((pt >= 0 || !haveTLS ? 0 : 1) + n); +if (pt >= 0) { +a[0] = list.get(pt); +if (list.size() == 1) return a; +}if (haveTLS) { +pt = 0; +for (var i = n; --i >= 0; ) { +var t = list.get(i); +if (t.forThermalEllipsoid) continue; +a[++pt] = t; +} +} else { +for (var i = 0; i < n; i++) a[i] = list.get(i); + +}return a; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getAtomTensor", +function(i, type){ +var tensors = this.getAtomTensorList(i); +if (tensors != null && type != null) { +type = type.toLowerCase(); +for (var j = 0; j < tensors.length; j++) { +var t = tensors[j]; +if (t != null && (type.equals(t.type) || type.equals(t.altType))) return t; +} +}return null; +}, "~N,~S"); +Clazz_defineMethod(c$, "getAllAtomTensors", +function(type){ +if (this.atomTensors == null) return null; +if (type != null) return this.atomTensors.get(type.toLowerCase()); +var list = new JU.Lst(); +for (var e, $e = this.atomTensors.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) list.addAll(e.getValue()); + +return list; +}, "~S"); +Clazz_defineMethod(c$, "scaleVectorsToMax", +function(max){ +if (this.vibrations == null) return; +var m = 0; +var bsVib = JU.BS.newN(this.ac); +for (var i = this.vibrations.length; --i >= 0; ) { +var v = this.getVibration(i, false); +if (v != null && (v.modDim == -1 || v.modDim == -2)) { +m = Math.max(m, v.length()); +bsVib.set(i); +}} +if (m == max || m == 0) return; +m = max / m; +var ok = false; +for (var i = bsVib.nextSetBit(0); i >= 0; i = bsVib.nextSetBit(i + 1)) { +var v = this.getVibration(i, false); +var mod = this.getModulation(i); +if (mod == null) { +if (m == 0) return; +v.scale(m); +} else { +mod.scaleVibration(m); +}if (!ok) { +this.taintAtom(i, 12); +ok = true; +}} +this.tainted[12].or(bsVib); +}, "~N"); +Clazz_defineMethod(c$, "getAtomsFromAtomNumberInFrame", +function(atomNumber){ +var bs = this.vwr.getFrameAtoms(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (this.at[i].getAtomNumber() != atomNumber) bs.clear(i); + +return bs; +}, "~N"); +Clazz_defineMethod(c$, "generateCrystalClass", +function(atomIndex, pt){ +var sym = (atomIndex < 0 || atomIndex >= this.ac ? this.vwr.getOperativeSymmetry() : this.at[atomIndex].getUnitCell()); +var isRandom = (pt != null && Float.isNaN(pt.x)); +var ret = (sym == null ? null : sym.generateCrystalClass(isRandom ? null : pt != null ? pt : this.at[atomIndex])); +return (ret == null ? new JU.Lst() : ret); +}, "~N,JU.P3"); +c$.isDeleted = Clazz_defineMethod(c$, "isDeleted", +function(atom){ +return (atom == null || atom.isDeleted()); +}, "JM.Atom"); +c$.$AtomCollection$AtomSorter$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +Clazz_instantialize(this, arguments);}, JM.AtomCollection, "AtomSorter", null, java.util.Comparator); +Clazz_overrideMethod(c$, "compare", +function(a1, a2){ +return (a1.i > a2.i ? 1 : a1.i < a2.i ? -1 : 0); +}, "JM.Atom,JM.Atom"); +/*eoif4*/})(); +}; +c$.sqrt3_2 = Math.sqrt(3) / 2; +c$.vRef = JU.V3.new3(3.14159, 2.71828, 1.41421); +c$.userSettableValues = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["J.api.AtomIndexIterator"], "JM.AtomIteratorWithinModel", ["J.atomdata.RadiusData"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.cubeIterator = null; +this.bspf = null; +this.threadSafe = false; +this.hemisphereOnly = false; +this.isZeroBased = false; +this.modelIndex = 2147483647; +this.atomIndex = -1; +this.zeroBase = 0; +this.distanceSquared = 0; +this.bsSelected = null; +this.isGreaterOnly = false; +this.checkGreater = false; +this.radiusData = null; +this.vdw1 = 0; +this.isVdw = false; +this.atoms = null; +this.vwr = null; +this.iNext = 0; +Clazz_instantialize(this, arguments);}, JM, "AtomIteratorWithinModel", null, J.api.AtomIndexIterator); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "initialize", +function(bspf, bsSelected, isGreaterOnly, isZeroBased, hemisphereOnly, threadSafe){ +this.bspf = bspf; +this.bsSelected = bsSelected; +this.isGreaterOnly = isGreaterOnly; +this.isZeroBased = isZeroBased; +this.hemisphereOnly = hemisphereOnly; +this.threadSafe = threadSafe; +this.cubeIterator = null; +}, "J.bspt.Bspf,JU.BS,~B,~B,~B,~B"); +Clazz_overrideMethod(c$, "setModel", +function(modelSet, modelIndex, firstModelAtom, atomIndex, center, distance, rd){ +if (this.threadSafe) modelIndex = -1 - modelIndex; +if (modelIndex != this.modelIndex || this.cubeIterator == null) { +this.cubeIterator = this.bspf.getCubeIterator(modelIndex); +this.modelIndex = modelIndex; +}this.zeroBase = (this.isZeroBased ? firstModelAtom : 0); +if (distance == -2147483648) return; +this.atomIndex = (distance < 0 ? -1 : atomIndex); +this.isVdw = (rd != null); +if (this.isVdw) { +this.radiusData = rd; +this.atoms = modelSet.at; +this.vwr = modelSet.vwr; +distance = (rd.factorType === J.atomdata.RadiusData.EnumType.OFFSET ? 5 + rd.value : 5 * rd.value); +this.vdw1 = this.atoms[atomIndex].getVanderwaalsRadiusFloat(this.vwr, rd.vdwType); +}this.checkGreater = (this.isGreaterOnly && atomIndex != 2147483647); +this.setCenter(center, distance); +}, "JM.ModelSet,~N,~N,~N,JU.T3,~N,J.atomdata.RadiusData"); +Clazz_overrideMethod(c$, "setCenter", +function(center, distance){ +this.setCenter2(center, distance); +}, "JU.T3,~N"); +Clazz_defineMethod(c$, "setCenter2", +function(center, distance){ +if (this.cubeIterator == null) return; +this.cubeIterator.initialize(center, distance, this.hemisphereOnly); +this.distanceSquared = distance * distance; +}, "JU.T3,~N"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.hasNext2(); +}); +Clazz_defineMethod(c$, "hasNext2", +function(){ +if (this.atomIndex >= 0) while (this.cubeIterator.hasMoreElements()) { +var a = this.cubeIterator.nextElement(); +if ((this.iNext = a.i) != this.atomIndex && (!this.checkGreater || this.iNext > this.atomIndex) && (this.bsSelected == null || this.bsSelected.get(this.iNext))) { +return true; +}} + else if (this.cubeIterator.hasMoreElements()) { +var a = this.cubeIterator.nextElement(); +this.iNext = a.i; +return true; +}this.iNext = -1; +return false; +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.iNext - this.zeroBase; +}); +Clazz_overrideMethod(c$, "foundDistance2", +function(){ +return (this.cubeIterator == null ? -1 : this.cubeIterator.foundDistance2()); +}); +Clazz_overrideMethod(c$, "addAtoms", +function(bsResult){ +var iAtom; +while (this.hasNext()) if ((iAtom = this.next()) >= 0) { +var d; +if (this.isVdw) { +d = this.atoms[iAtom].getVanderwaalsRadiusFloat(this.vwr, this.radiusData.vdwType) + this.vdw1; +switch (this.radiusData.factorType) { +case J.atomdata.RadiusData.EnumType.OFFSET: +d += this.radiusData.value * 2; +break; +case J.atomdata.RadiusData.EnumType.FACTOR: +d *= this.radiusData.value; +break; +} +d *= d; +} else { +d = this.distanceSquared; +}if (this.foundDistance2() <= d) bsResult.set(iAtom); +} +}, "JU.BS"); +Clazz_overrideMethod(c$, "release", +function(){ +if (this.cubeIterator != null) { +this.cubeIterator.release(); +this.cubeIterator = null; +}}); +Clazz_overrideMethod(c$, "getPosition", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.AtomIteratorWithinModel"], "JM.AtomIteratorWithinModelSet", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bsModels = null; +this.center = null; +this.distance = 0; +Clazz_instantialize(this, arguments);}, JM, "AtomIteratorWithinModelSet", JM.AtomIteratorWithinModel); +Clazz_makeConstructor(c$, +function(bsModels){ +Clazz_superConstructor (this, JM.AtomIteratorWithinModelSet, []); +this.bsModels = bsModels; +}, "JU.BS"); +Clazz_overrideMethod(c$, "setCenter", +function(center, distance){ +this.center = center; +this.distance = distance; +this.set(0); +}, "JU.T3,~N"); +Clazz_defineMethod(c$, "set", +function(iModel){ +if ((this.modelIndex = this.bsModels.nextSetBit(iModel)) < 0 || (this.cubeIterator = this.bspf.getCubeIterator(this.modelIndex)) == null) return false; +this.setCenter2(this.center, this.distance); +return true; +}, "~N"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.hasNext2()) return true; +if (!this.set(this.modelIndex + 1)) return false; +return this.hasNext(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.Edge", "JV.JC"], "JM.Bond", ["JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atom1 = null; +this.atom2 = null; +this.mad = 0; +this.colix = 0; +this.shapeVisibilityFlags = 0; +Clazz_instantialize(this, arguments);}, JM, "Bond", JU.Edge); +Clazz_makeConstructor(c$, +function(atom1, atom2, order, mad, colix){ +Clazz_superConstructor (this, JM.Bond, []); +this.atom1 = atom1; +this.atom2 = atom2; +this.colix = colix; +this.setOrder(order); +this.setMad(mad); +}, "JM.Atom,JM.Atom,~N,~N,~N"); +Clazz_defineMethod(c$, "setMad", +function(mad){ +this.mad = mad; +this.setShapeVisibility(mad != 0); +}, "~N"); +Clazz_defineMethod(c$, "setShapeVisibility", +function(isVisible){ +var wasVisible = ((this.shapeVisibilityFlags & JM.Bond.myVisibilityFlag) != 0); +if (wasVisible == isVisible) return; +this.atom1.addDisplayedBond(JM.Bond.myVisibilityFlag, isVisible); +this.atom2.addDisplayedBond(JM.Bond.myVisibilityFlag, isVisible); +if (isVisible) this.shapeVisibilityFlags |= JM.Bond.myVisibilityFlag; + else this.shapeVisibilityFlags &= ~JM.Bond.myVisibilityFlag; +}, "~B"); +Clazz_defineMethod(c$, "getIdentity", +function(){ +return (this.index + 1) + " " + JU.Edge.getBondOrderNumberFromOrder(this.order) + " " + this.atom1.getInfo() + " -- " + this.atom2.getInfo() + " " + this.atom1.distance(this.atom2); +}); +Clazz_overrideMethod(c$, "isCovalent", +function(){ +return (this.order & 1023) != 0; +}); +Clazz_overrideMethod(c$, "isHydrogen", +function(){ +return JU.Edge.isOrderH(this.order); +}); +Clazz_defineMethod(c$, "isStereo", +function(){ +return (this.order & 1024) != 0; +}); +Clazz_overrideMethod(c$, "isPartial", +function(){ +return (this.order & 224) != 0; +}); +Clazz_defineMethod(c$, "isAromatic", +function(){ +return (this.order & 512) != 0; +}); +Clazz_defineMethod(c$, "getEnergy", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "getValence", +function(){ +return (!this.isCovalent() || this.order == 33 ? 0 : this.is(515) ? 1 : this.order & 7); +}); +Clazz_defineMethod(c$, "deleteAtomReferences", +function(){ +if (this.atom1 != null) this.atom1.deleteBond(this); +if (this.atom2 != null) this.atom2.deleteBond(this); +this.atom1 = this.atom2 = null; +}); +Clazz_defineMethod(c$, "setTranslucent", +function(isTranslucent, translucentLevel){ +this.colix = JU.C.getColixTranslucent3(this.colix, isTranslucent, translucentLevel); +}, "~B,~N"); +Clazz_defineMethod(c$, "setOrder", +function(order){ +if (this.atom1.getElementNumber() == 16 && this.atom2.getElementNumber() == 16) order |= 256; +if (order == 512) order = 515; +this.order = order | (this.order & 131072); +}, "~N"); +Clazz_overrideMethod(c$, "getAtomIndex1", +function(){ +return this.atom1.i; +}); +Clazz_overrideMethod(c$, "getAtomIndex2", +function(){ +return this.atom2.i; +}); +Clazz_overrideMethod(c$, "getCovalentOrder", +function(){ +return JU.Edge.getCovalentBondOrder(this.order); +}); +Clazz_defineMethod(c$, "getOtherAtom", +function(thisAtom){ +return (this.atom1 === thisAtom ? this.atom2 : this.atom2 === thisAtom ? this.atom1 : null); +}, "JM.Atom"); +Clazz_defineMethod(c$, "is", +function(bondType){ +return (this.order & 131071) == bondType; +}, "~N"); +Clazz_overrideMethod(c$, "getOtherNode", +function(thisAtom){ +return (this.atom1 === thisAtom ? this.atom2 : this.atom2 === thisAtom || thisAtom == null ? this.atom1 : null); +}, "JU.SimpleNode"); +Clazz_defineMethod(c$, "setAtropisomerOptions", +function(){ +var i1; +var i2 = 2147483647; +var bonds = this.atom1.bonds; +for (i1 = 0; i1 < bonds.length; i1++) { +var a = bonds[i1].getOtherAtom(this.atom1); +if (a !== this.atom2) break; +} +if (i1 < bonds.length) { +bonds = this.atom2.bonds; +for (i2 = 0; i2 < bonds.length; i2++) { +var a = bonds[i2].getOtherAtom(this.atom2); +if (a !== this.atom1) break; +} +}this.order = (i1 > 2 || i2 >= bonds.length || i2 > 2 ? 1 : JU.Edge.getAtropismOrder(i1 + 1, i2 + 1)); +}); +Clazz_overrideMethod(c$, "getCIPChirality", +function(doCalculate){ +return ""; +}, "~B"); +Clazz_overrideMethod(c$, "setCIPChirality", +function(c){ +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.atom1 + " - " + this.atom2; +}); +Clazz_overrideMethod(c$, "getAtom", +function(i){ +return (i == 1 ? this.atom2 : this.atom1); +}, "~N"); +Clazz_defineMethod(c$, "isCovalentNotPartial0", +function(){ +return ((this.order & 1023) != 0 && this.order != 33); +}); +c$.myVisibilityFlag = JV.JC.getShapeVisibilityFlag(1); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.AtomCollection", "JU.V3"], "JM.BondCollection", ["JU.AU", "$.BS", "$.Measure", "JM.Bond", "$.BondIteratorSelected", "$.BondSet", "$.HBond", "JU.BSUtil", "$.C", "$.Edge"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bo = null; +this.bondCount = 0; +this.numCached = null; +this.freeBonds = null; +this.molecules = null; +this.moleculeCount = 0; +this.defaultCovalentMad = 0; +this.bsAromaticSingle = null; +this.bsAromaticDouble = null; +this.bsAromatic = null; +this.haveHiddenBonds = false; +this.v1 = null; +this.v2 = null; +this.haveAtropicBonds = false; +Clazz_instantialize(this, arguments);}, JM, "BondCollection", JM.AtomCollection); +Clazz_prepareFields (c$, function(){ +this.v1 = new JU.V3(); +this.v2 = new JU.V3(); +}); +Clazz_defineMethod(c$, "setupBC", +function(){ +this.bsAromatic = new JU.BS(); +this.numCached = Clazz_newIntArray (5, 0); +this.freeBonds = new Array(5); +for (var i = 5; --i > 0; ) this.freeBonds[i] = new Array(200); + +this.setupAC(); +}); +Clazz_defineMethod(c$, "releaseModelSetBC", +function(){ +this.bo = null; +this.freeBonds = null; +this.releaseModelSetAC(); +}); +Clazz_defineMethod(c$, "getBondIteratorForType", +function(bondType, bsAtoms){ +return new JM.BondIteratorSelected(this.bo, this.bondCount, bondType, bsAtoms, this.vwr.getBoolean(603979812)); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getBondIterator", +function(bsBonds){ +return new JM.BondIteratorSelected(this.bo, this.bondCount, 131071, bsBonds, false); +}, "JU.BS"); +Clazz_defineMethod(c$, "getBondColix1", +function(i){ +return JU.C.getColixInherited(this.bo[i].colix, this.bo[i].atom1.colixAtom); +}, "~N"); +Clazz_defineMethod(c$, "getBondColix2", +function(i){ +return JU.C.getColixInherited(this.bo[i].colix, this.bo[i].atom2.colixAtom); +}, "~N"); +Clazz_defineMethod(c$, "getBondCountInModel", +function(modelIndex){ +var n = 0; +for (var i = this.bondCount; --i >= 0; ) if (this.bo[i].atom1.mi == modelIndex) n++; + +return n; +}, "~N"); +Clazz_defineMethod(c$, "getBondsForSelectedAtoms", +function(bsAtoms, bondSelectionModeOr){ +var bs = new JU.BS(); +var n = bsAtoms.cardinality(); +switch (n) { +case 0: +return bs; +case 1: +case 2: +var a = this.at[bsAtoms.nextSetBit(0)]; +var b = (n == 2 ? this.at[bsAtoms.nextSetBit(a.i + 1)] : null); +if (n == 1 || bondSelectionModeOr) { +for (var i = a.getBondCount(); --i >= 0; ) bs.set(a.bonds[i].index); + +if (b != null) for (var i = b.getBondCount(); --i >= 0; ) bs.set(b.bonds[i].index); + +} else { +var bond = a.getBond(b); +if (b != null) bs.set(bond.index); +}return bs; +} +for (var iBond = 0; iBond < this.bondCount; ++iBond) { +var bond = this.bo[iBond]; +var isSelected1 = bsAtoms.get(bond.atom1.i); +var isSelected2 = bsAtoms.get(bond.atom2.i); +if (bondSelectionModeOr ? isSelected1 || isSelected2 : isSelected1 && isSelected2) bs.set(iBond); +} +return bs; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "bondAtoms", +function(atom1, atom2, order, mad, bsBonds, energy, addGroup, isNew){ +var bond = this.getOrAddBond(atom1, atom2, order, mad, bsBonds, energy, true); +if (isNew) { +bond.order |= 131072; +if (addGroup) { +atom1.group = atom2.group; +atom1.group.addAtoms(atom1.i); +}}return bond; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS,~N,~B,~B"); +Clazz_defineMethod(c$, "getOrAddBond", +function(atom, atomOther, order, mad, bsBonds, energy, overrideBonding){ +var i; +if (order == 131071 || order == 65535) order = 1; +if (atom.isBonded(atomOther)) { +i = atom.getBond(atomOther).index; +if (overrideBonding) { +this.bo[i].setOrder(order); +this.bo[i].setMad(mad); +if (Clazz_instanceOf(this.bo[i],"JM.HBond")) (this.bo[i]).energy = energy; +}} else { +if (this.bondCount == this.bo.length) this.bo = JU.AU.arrayCopyObject(this.bo, this.bondCount + 250); +i = this.setBond(this.bondCount++, this.bondMutually(atom, atomOther, order, mad, energy)).index; +}if (bsBonds != null) bsBonds.set(i); +return this.bo[i]; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS,~N,~B"); +Clazz_defineMethod(c$, "setBond", +function(index, bond){ +return this.bo[bond.index = index] = bond; +}, "~N,JM.Bond"); +Clazz_defineMethod(c$, "bondMutually", +function(atom, atomOther, order, mad, energy){ +var bond; +if (JU.Edge.isOrderH(order)) { +bond = new JM.HBond(atom, atomOther, order, mad, 0, energy); +} else { +bond = new JM.Bond(atom, atomOther, order, mad, 0); +}this.addBondToAtom(atom, bond); +this.addBondToAtom(atomOther, bond); +return bond; +}, "JM.Atom,JM.Atom,~N,~N,~N"); +Clazz_defineMethod(c$, "addBondToAtom", +function(atom, bond){ +if (atom.bonds == null) { +atom.bonds = new Array(1); +atom.bonds[0] = bond; +} else { +atom.bonds = this.addToBonds(bond, atom.bonds); +}}, "JM.Atom,JM.Bond"); +Clazz_defineMethod(c$, "addToBonds", +function(newBond, oldBonds){ +var newBonds; +if (oldBonds == null) { +if (this.numCached[1] > 0) newBonds = this.freeBonds[1][--this.numCached[1]]; + else newBonds = new Array(1); +newBonds[0] = newBond; +} else { +var oldLength = oldBonds.length; +var newLength = oldLength + 1; +if (newLength < 5 && this.numCached[newLength] > 0) newBonds = this.freeBonds[newLength][--this.numCached[newLength]]; + else newBonds = new Array(newLength); +newBonds[oldLength] = newBond; +for (var i = oldLength; --i >= 0; ) newBonds[i] = oldBonds[i]; + +if (oldLength < 5 && this.numCached[oldLength] < 200) this.freeBonds[oldLength][this.numCached[oldLength]++] = oldBonds; +}return newBonds; +}, "JM.Bond,~A"); +Clazz_defineMethod(c$, "addHBond", +function(atom1, atom2, order, energy){ +if (this.bondCount == this.bo.length) this.bo = JU.AU.arrayCopyObject(this.bo, this.bondCount + 250); +return this.setBond(this.bondCount++, this.bondMutually(atom1, atom2, order, 1, energy)).index; +}, "JM.Atom,JM.Atom,~N,~N"); +Clazz_defineMethod(c$, "deleteAllBonds2", +function(){ +this.vwr.setShapeProperty(1, "reset", null); +for (var i = this.bondCount; --i >= 0; ) { +this.bo[i].deleteAtomReferences(); +this.bo[i] = null; +} +this.bondCount = 0; +}); +Clazz_defineMethod(c$, "getDefaultMadFromOrder", +function(order){ +return (JU.Edge.isOrderH(order) ? 1 : order == 32768 ? Clazz_doubleToInt(Math.floor(this.vwr.getFloat(570425406) * 2000)) : this.defaultCovalentMad); +}, "~N"); +Clazz_defineMethod(c$, "deleteConnections", +function(minD, maxD, order, bsA, bsB, isBonds, matchNull){ +var minDIsFraction = (minD < 0); +var maxDIsFraction = (maxD < 0); +var isFractional = (minDIsFraction || maxDIsFraction); +minD = this.fixD(minD, minDIsFraction); +maxD = this.fixD(maxD, maxDIsFraction); +var bsDelete = new JU.BS(); +var nDeleted = 0; +var newOrder = order |= 131072; +if (!matchNull && JU.Edge.isOrderH(order)) order = 30720; +var bsBonds; +if (isBonds) { +bsBonds = bsA; +} else { +bsBonds = new JU.BS(); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var a = this.at[i]; +if (a.bonds != null) for (var j = a.bonds.length; --j >= 0; ) if (bsB.get(a.getBondedAtomIndex(j))) bsBonds.set(a.bonds[j].index); + +} +}for (var i = bsBonds.nextSetBit(0); i < this.bondCount && i >= 0; i = bsBonds.nextSetBit(i + 1)) { +var bond = this.bo[i]; +if (!this.isInRange(bond.atom1, bond.atom2, minD, maxD, minDIsFraction, maxDIsFraction, isFractional)) continue; +if (matchNull || newOrder == (bond.order & -257 | 131072) || (order & bond.order & 30720) != 0) { +bsDelete.set(i); +nDeleted++; +}} +if (nDeleted > 0) (this).deleteBonds(bsDelete, false); +return Clazz_newIntArray(-1, [0, nDeleted]); +}, "~N,~N,~N,JU.BS,JU.BS,~B,~B"); +Clazz_defineMethod(c$, "fixD", +function(d, isF){ +return (isF ? -d : d * d); +}, "~N,~B"); +Clazz_defineMethod(c$, "isInRange", +function(atom1, atom2, minD, maxD, minFrac, maxfrac, isFractional){ +var d2 = atom1.distanceSquared(atom2); +if (isFractional) { +var dAB = Math.sqrt(d2); +var dABcalc = atom1.getBondingRadius() + atom2.getBondingRadius(); +return ((minFrac ? dAB >= dABcalc * minD : d2 >= minD) && (maxfrac ? dAB <= dABcalc * maxD : d2 <= maxD)); +}return (d2 >= minD && d2 <= maxD); +}, "JM.Atom,JM.Atom,~N,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "dBb", +function(bsBond, isFullModel){ +var iDst = bsBond.nextSetBit(0); +if (iDst < 0) return; +(this).resetMolecules(); +var modelIndexLast = -1; +var n = bsBond.cardinality(); +for (var iSrc = iDst; iSrc < this.bondCount; ++iSrc) { +var bond = this.bo[iSrc]; +if (n > 0 && bsBond.get(iSrc)) { +n--; +if (!isFullModel) { +var modelIndex = bond.atom1.mi; +if (modelIndex != modelIndexLast) (this).am[modelIndexLast = modelIndex].resetBoundCount(); +}bond.deleteAtomReferences(); +} else { +this.setBond(iDst++, bond); +}} +for (var i = this.bondCount; --i >= iDst; ) this.bo[i] = null; + +this.bondCount = iDst; +var sets = this.vwr.getShapeProperty(1, "sets"); +if (sets != null) for (var i = 0; i < sets.length; i++) JU.BSUtil.deleteBits(sets[i], bsBond); + +JU.BSUtil.deleteBits(this.bsAromatic, bsBond); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "resetAromatic", +function(){ +for (var i = this.bondCount; --i >= 0; ) { +var bond = this.bo[i]; +if (bond.isAromatic()) bond.setOrder(515); +} +}); +Clazz_defineMethod(c$, "assignAromaticBondsBs", +function(isUserCalculation, bsBonds){ +if (!isUserCalculation) this.bsAromatic = new JU.BS(); +this.bsAromaticSingle = new JU.BS(); +this.bsAromaticDouble = new JU.BS(); +var isAll = (bsBonds == null); +var i0 = (isAll ? this.bondCount - 1 : bsBonds.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +var bond = this.bo[i]; +if (this.bsAromatic.get(i)) bond.setOrder(515); +switch (bond.order & 131071) { +case 515: +if (!this.assignAromaticMustBeSingle(bond.atom1) && !this.assignAromaticMustBeSingle(bond.atom2)) { +this.bsAromatic.set(i); +break; +}bond.order = 513; +case 513: +this.bsAromaticSingle.set(i); +break; +case 514: +this.bsAromaticDouble.set(i); +break; +} +} +var bond; +isAll = (bsBonds == null); +i0 = (isAll ? this.bondCount - 1 : bsBonds.nextSetBit(0)); +var bsTest = new JU.BS(); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (!bond.is(515) || this.bsAromaticDouble.get(i) || this.bsAromaticSingle.get(i)) continue; +bsTest.set(i); +if (bond.atom1.getElementNumber() == 8 || bond.atom2.getElementNumber() == 8) { +if (!this.assignAromaticDouble(bond)) this.assignAromaticSingle(bond); +}} +for (var i = bsTest.nextSetBit(0); i >= 0; i = bsTest.nextSetBit(i + 1)) if (!this.assignAromaticDouble(bond = this.bo[i])) this.assignAromaticSingle(bond); + +var bsModels = new JU.BS(); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsBonds.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (this.bsAromaticDouble.get(i)) { +if (!bond.is(514)) { +this.bsAromatic.set(i); +bsModels.set(bond.atom1.mi); +bond.setOrder(this.isLinear(bond, this.v1, this.v2) ? 3 : 514); +}} else if (this.bsAromaticSingle.get(i) || bond.isAromatic()) { +if (!bond.is(513)) { +this.bsAromatic.set(i); +bond.setOrder(513); +}}} +var models = (this).am; +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) if (models[i].isBioModel) models[i].isPdbWithMultipleBonds = true; + +this.assignAromaticNandO(bsBonds); +this.bsAromaticSingle = null; +this.bsAromaticDouble = null; +}, "~B,JU.BS"); +Clazz_defineMethod(c$, "isLinear", +function(b, v1, v2){ +if (b.order == 3) return true; +if (b.atom1.getCovalentBondCount() != 2 || b.atom2.getCovalentBondCount() != 2) return false; +var edges = b.atom1.getEdges(); +for (var i = edges.length; -i >= 0; ) { +if (edges[i] !== b && edges[i].isCovalent()) { +if (JU.Measure.computeAngle(edges[i].getOtherNode(b.atom1), b.atom1, b.atom2, v1, v2, true) < 175) return false; +break; +}} +edges = b.atom2.getEdges(); +for (var i = edges.length; -i >= 0; ) { +if (edges[i] !== b && edges[i].isCovalent()) { +if (JU.Measure.computeAngle(edges[i].getOtherNode(b.atom2), b.atom2, b.atom1, v1, v2, true) < 175) return false; +break; +}} +return true; +}, "JM.Bond,JU.V3,JU.V3"); +Clazz_defineMethod(c$, "assignAromaticDouble", +function(bond){ +var bondIndex = bond.index; +if (this.bsAromaticSingle.get(bondIndex)) return false; +if (this.bsAromaticDouble.get(bondIndex)) return true; +this.bsAromaticDouble.set(bondIndex); +if (!this.assignAromaticSingleForAtom(bond.atom1, bondIndex) || !this.assignAromaticSingleForAtom(bond.atom2, bondIndex)) { +this.bsAromaticDouble.clear(bondIndex); +return false; +}return true; +}, "JM.Bond"); +Clazz_defineMethod(c$, "assignAromaticSingle", +function(bond){ +var bondIndex = bond.index; +if (this.bsAromaticDouble.get(bondIndex)) return false; +if (this.bsAromaticSingle.get(bondIndex)) return true; +this.bsAromaticSingle.set(bondIndex); +if (!this.assignAromaticDoubleForAtom(bond.atom1) || !this.assignAromaticDoubleForAtom(bond.atom2)) { +this.bsAromaticSingle.clear(bondIndex); +return false; +}return true; +}, "JM.Bond"); +Clazz_defineMethod(c$, "assignAromaticSingleForAtom", +function(atom, notBondIndex){ +var bonds = atom.bonds; +if (bonds == null) return false; +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +var bondIndex = bond.index; +if (bondIndex == notBondIndex || !bond.isAromatic() || this.bsAromaticSingle.get(bondIndex)) continue; +if (this.bsAromaticDouble.get(bondIndex) || !this.assignAromaticSingle(bond)) { +return false; +}} +return true; +}, "JM.Atom,~N"); +Clazz_defineMethod(c$, "assignAromaticDoubleForAtom", +function(atom){ +var bonds = atom.bonds; +if (bonds == null) return false; +var haveDouble = false; +var lastBond = -1; +for (var i = bonds.length; --i >= 0; ) { +if (this.bsAromaticDouble.get(bonds[i].index)) haveDouble = true; +if (bonds[i].isAromatic()) lastBond = i; +} +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +var bondIndex = bond.index; +if (!bond.isAromatic() || this.bsAromaticDouble.get(bondIndex) || this.bsAromaticSingle.get(bondIndex)) continue; +if (!haveDouble && this.assignAromaticDouble(bond)) haveDouble = true; + else if ((haveDouble || i < lastBond) && !this.assignAromaticSingle(bond)) { +return false; +}} +return haveDouble; +}, "JM.Atom"); +Clazz_defineMethod(c$, "allowAromaticBond", +function(b){ +if (this.assignAromaticMustBeSingle(b.atom1) || this.assignAromaticMustBeSingle(b.atom2)) return false; +switch (b.getCovalentOrder()) { +case 1: +case 2: +return b.atom1.getCovalentBondCount() <= 3 && b.atom2.getCovalentBondCount() <= 3; +default: +return false; +} +}, "JM.Bond"); +Clazz_defineMethod(c$, "assignAromaticMustBeSingle", +function(atom){ +var n = atom.getElementNumber(); +switch (n) { +case 6: +case 7: +case 8: +case 16: +break; +default: +return true; +} +var valence = atom.getValenceAromatic(false); +switch (n) { +case 6: +return (valence == 4); +case 7: +return (atom.group.getNitrogenAtom() === atom || valence == 3 && atom.getFormalCharge() < 1); +case 8: +return (atom.group.getCarbonylOxygenAtom() !== atom && valence == 2 && atom.getFormalCharge() < 1); +case 16: +return (atom.group.groupID == 5 || valence == 2 && atom.getFormalCharge() < 1); +} +return false; +}, "JM.Atom"); +Clazz_defineMethod(c$, "assignAromaticNandO", +function(bsSelected){ +var bond; +var isAll = (bsSelected == null); +var i0 = (isAll ? this.bondCount - 1 : bsSelected.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit(i + 1))) { +bond = this.bo[i]; +if (!bond.is(513)) continue; +var atom1; +var atom2 = bond.atom2; +var n1; +var n2 = atom2.getElementNumber(); +if (n2 == 7 || n2 == 8) { +n1 = n2; +atom1 = atom2; +atom2 = bond.atom1; +n2 = atom2.getElementNumber(); +} else { +atom1 = bond.atom1; +n1 = atom1.getElementNumber(); +}if (n1 != 7 && n1 != 8) continue; +var valence = atom1.getValence(); +if (valence < 0) continue; +var bondorder = atom1.getCovalentBondCount(); +var charge = atom1.getFormalCharge(); +switch (n1) { +case 7: +if (valence == 3 && bondorder == 3 && charge < 1 && n2 == 6 && atom2.getValence() == 3) bond.setOrder(514); +break; +case 8: +if (valence == 1 && charge == 0 && (n2 == 14 || n2 == 16)) bond.setOrder(514); +break; +} +} +}, "JU.BS"); +Clazz_defineMethod(c$, "getAtomBitsMDb", +function(tokType, specInfo){ +var bs = new JU.BS(); +switch (tokType) { +default: +return this.getAtomBitsMDa(tokType, specInfo, bs); +case 1677721602: +var bsBonds = specInfo; +for (var i = bsBonds.nextSetBit(0); i >= 0; i = bsBonds.nextSetBit(i + 1)) { +if (i < this.bondCount) { +bs.set(this.bo[i].atom1.i); +bs.set(this.bo[i].atom2.i); +} else { +bsBonds.clear(i); +}} +return bs; +case 1073742331: +for (var i = this.bondCount; --i >= 0; ) if (this.bo[i].isAromatic()) { +bs.set(this.bo[i].atom1.i); +bs.set(this.bo[i].atom2.i); +} +return bs; +} +}, "~N,~O"); +Clazz_defineMethod(c$, "removeUnnecessaryBonds", +function(atom, deleteAtom){ +var bs = new JU.BS(); +var bsBonds = new JU.BS(); +var bonds = atom.bonds; +if (bonds == null) return; +for (var i = 0; i < bonds.length; i++) if (bonds[i].isCovalent()) { +var atom2 = bonds[i].getOtherAtom(atom); +if (atom2.getElementNumber() == 1) bs.set(bonds[i].getOtherAtom(atom).i); +} else { +bsBonds.set(bonds[i].index); +} +if (bsBonds.nextSetBit(0) >= 0) (this).deleteBonds(bsBonds, false); +if (deleteAtom) bs.set(atom.i); +if (bs.nextSetBit(0) >= 0) this.vwr.deleteAtoms(bs, false); +}, "JM.Atom,~B"); +Clazz_defineMethod(c$, "displayBonds", +function(bs, isDisplay){ +if (!isDisplay) this.haveHiddenBonds = true; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (i < this.bondCount && this.bo[i].mad != 0) this.bo[i].setShapeVisibility(isDisplay); + +}, "JM.BondSet,~B"); +Clazz_defineMethod(c$, "getAtomsConnected", +function(min, max, intType, bs){ +var isBonds = Clazz_instanceOf(bs,"JM.BondSet"); +var bsResult = (isBonds ? new JM.BondSet() : new JU.BS()); +var nBonded = Clazz_newIntArray (this.ac, 0); +var i; +var ishbond = (intType == 30720); +var isall = (intType == 65535); +for (var ibond = 0; ibond < this.bondCount; ibond++) { +var bond = this.bo[ibond]; +if (isall || bond.is(intType) || ishbond && bond.isHydrogen()) { +if (isBonds) { +bsResult.set(ibond); +} else { +if (bs.get(bond.atom1.i)) { +nBonded[i = bond.atom2.i]++; +bsResult.set(i); +}if (bs.get(bond.atom2.i)) { +nBonded[i = bond.atom1.i]++; +bsResult.set(i); +}}}} +if (isBonds) return bsResult; +var nonbonded = (min == 0); +for (i = this.ac; --i >= 0; ) { +var n = nBonded[i]; +if (this.at[i] == null || n < min || n > max) bsResult.clear(i); + else if (nonbonded && n == 0) bsResult.set(i); +} +return bsResult; +}, "~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "addConnectedHAtoms", +function(atom, bsAtoms){ +if (atom.bonds != null) for (var i = atom.bonds.length; --i >= 0; ) { +var atom2 = atom.bonds[i].getOtherAtom(atom); +if (atom2.getElementNumber() == 1) bsAtoms.set(atom2.i); +} +}, "JM.Atom,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_declareInterface(JM, "BondIterator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.BondIterator"], "JM.BondIteratorSelected", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bonds = null; +this.bondCount = 0; +this.bondType = 0; +this.iBond = 0; +this.bsSelected = null; +this.bondSelectionModeOr = false; +Clazz_instantialize(this, arguments);}, JM, "BondIteratorSelected", null, JM.BondIterator); +Clazz_makeConstructor(c$, +function(bonds, bondCount, bondType, bsSelected, bondSelectionModeOr){ +this.bonds = bonds; +this.bondCount = bondCount; +this.bondType = bondType; +this.bsSelected = bsSelected; +this.bondSelectionModeOr = bondSelectionModeOr; +}, "~A,~N,~N,JU.BS,~B"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +if (this.bondType == 131071) { +this.iBond = this.bsSelected.nextSetBit(this.iBond); +return (this.iBond >= 0 && this.iBond < this.bondCount); +}for (; this.iBond < this.bondCount; ++this.iBond) { +var bond = this.bonds[this.iBond]; +if (this.bondType != 65535 && (bond.order & this.bondType) == 0) { +continue; +} else if (this.bondType == 65535 && bond.order == 32768) continue; +var isSelected1 = this.bsSelected.get(bond.atom1.i); +var isSelected2 = this.bsSelected.get(bond.atom2.i); +if ((!this.bondSelectionModeOr && isSelected1 && isSelected2) || (this.bondSelectionModeOr && (isSelected1 || isSelected2))) return true; +} +return false; +}); +Clazz_overrideMethod(c$, "nextIndex", +function(){ +return this.iBond; +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.bonds[this.iBond++]; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.BS"], "JM.BondSet", ["JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.associatedAtoms = null; +Clazz_instantialize(this, arguments);}, JM, "BondSet", JU.BS); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JM.BondSet, []); +}); +c$.newBS = Clazz_defineMethod(c$, "newBS", +function(bs){ +var b = new JM.BondSet(); +JU.BSUtil.copy2(bs, b); +return b; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAssociatedAtoms", +function(ms){ +if (this.associatedAtoms == null) this.associatedAtoms = ms.getAtomIndices(ms.getAtoms(1677721602, this)); +return this.associatedAtoms; +}, "JM.ModelSet"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Structure"], "JM.Chain", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.model = null; +this.chainID = 0; +this.chainNo = 0; +this.groups = null; +this.groupCount = 0; +this.selectedGroupCount = 0; +Clazz_instantialize(this, arguments);}, JM, "Chain", null, JM.Structure); +Clazz_makeConstructor(c$, +function(model, chainID, chainNo){ +this.model = model; +this.chainID = chainID; +this.chainNo = chainNo; +this.groups = new Array(16); +}, "JM.Model,~N,~N"); +Clazz_defineMethod(c$, "getIDStr", +function(){ +return (this.chainID == 0 ? "" : this.chainID < 256 ? "" + String.fromCharCode(this.chainID) : this.model.ms.vwr.getChainIDStr(this.chainID)); +}); +Clazz_defineMethod(c$, "calcSelectedGroupsCount", +function(bsSelected){ +this.selectedGroupCount = 0; +for (var i = 0; i < this.groupCount; i++) this.groups[i].selectedIndex = (this.groups[i].isSelected(bsSelected) ? this.selectedGroupCount++ : -1); + +}, "JU.BS"); +Clazz_defineMethod(c$, "fixIndices", +function(atomsDeleted, bsDeleted){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].fixIndices(atomsDeleted, bsDeleted); + +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setAtomBits", +function(bs){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].setAtomBits(bs); + +}, "JU.BS"); +Clazz_overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +for (var i = 0; i < this.groupCount; i++) this.groups[i].setAtomBitsAndClear(bs, bsOut); + +}, "JU.BS,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Structure", "java.lang.Short", "JV.JC"], "JM.Group", ["java.util.Hashtable", "JU.BS", "$.Quat", "J.c.STR", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.chain = null; +this.groupIndex = 0; +this.group1 = '\0'; +this.firstAtomIndex = -1; +this.leadAtomIndex = -1; +this.lastAtomIndex = 0; +this.bsAdded = null; +this.seqcode = 0; +this.groupID = 0; +this.selectedIndex = 0; +this.shapeVisibilityFlags = 0; +this.dssrNT = null; +Clazz_instantialize(this, arguments);}, JM, "Group", null, JM.Structure); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "setGroup", +function(chain, group3, seqcode, firstAtomIndex, lastAtomIndex){ +this.chain = chain; +this.seqcode = seqcode; +this.firstAtomIndex = firstAtomIndex; +this.lastAtomIndex = lastAtomIndex; +if (group3 != null && group3.length > 0) this.setGroupID(group3); +return this; +}, "JM.Chain,~S,~N,~N,~N"); +Clazz_defineMethod(c$, "setGroupID", +function(group3){ +}, "~S"); +Clazz_defineMethod(c$, "isAdded", +function(atomIndex){ +return this.bsAdded != null && this.bsAdded.get(atomIndex); +}, "~N"); +Clazz_defineMethod(c$, "addAtoms", +function(atomIndex){ +if (this.bsAdded == null) this.bsAdded = new JU.BS(); +this.bsAdded.set(atomIndex); +}, "~N"); +Clazz_overrideMethod(c$, "setAtomBits", +function(bs){ +bs.setBits(this.firstAtomIndex, this.lastAtomIndex + 1); +if (this.bsAdded != null) bs.or(this.bsAdded); +}, "JU.BS"); +Clazz_overrideMethod(c$, "setAtomBitsAndClear", +function(bs, bsOut){ +bs.setBits(this.firstAtomIndex, this.lastAtomIndex + 1); +bsOut.clearBits(this.firstAtomIndex, this.lastAtomIndex + 1); +if (this.bsAdded != null) { +bs.or(this.bsAdded); +bsOut.andNot(this.bsAdded); +}}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "isSelected", +function(bs){ +var pt = bs.nextSetBit(this.firstAtomIndex); +return (pt >= 0 && pt <= this.lastAtomIndex || this.bsAdded != null && this.bsAdded.intersects(bs)); +}, "JU.BS"); +Clazz_defineMethod(c$, "setShapeVisibility", +function(visFlag, isVisible){ +if (isVisible) { +this.shapeVisibilityFlags |= visFlag; +} else { +this.shapeVisibilityFlags &= ~visFlag; +}}, "~N,~B"); +Clazz_defineMethod(c$, "getGroup3", +function(){ +return (this.groupID < 1 ? "" : JM.Group.group3Names[this.groupID]); +}); +Clazz_defineMethod(c$, "getGroup1", +function(){ +return (this.group1 == '\0' ? '?' : this.group1); +}); +Clazz_defineMethod(c$, "getBioPolymerLength", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "getMonomerIndex", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "getStructure", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getStrucNo", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "getProteinStructureType", +function(){ +return J.c.STR.NOT; +}); +Clazz_defineMethod(c$, "getProteinStructureSubType", +function(){ +return this.getProteinStructureType(); +}); +Clazz_defineMethod(c$, "setProteinStructureType", +function(type, monomerIndexCurrent){ +return -1; +}, "J.c.STR,~N"); +Clazz_defineMethod(c$, "isProtein", +function(){ +return (this.groupID >= 1 && this.groupID < 24); +}); +Clazz_defineMethod(c$, "isNucleic", +function(){ +return (this.groupID >= 24 && this.groupID < 42); +}); +Clazz_defineMethod(c$, "isDna", +function(){ +return this.isDnaByID(); +}); +Clazz_defineMethod(c$, "isRna", +function(){ +return this.isRnaByID(); +}); +Clazz_defineMethod(c$, "isPurine", +function(){ +return this.isPurineByID(); +}); +Clazz_defineMethod(c$, "isPurineByID", +function(){ +return (this.isNucleic() && ((153957 & (1 << (this.groupID - 24))) != 0) || "AGag".indexOf(this.getGroup1()) >= 0); +}); +Clazz_defineMethod(c$, "isPyrimidine", +function(){ +return this.isPyrimidineByID(); +}); +Clazz_defineMethod(c$, "isPyrimidineByID", +function(){ +return (this.isNucleic() && (108186 & (1 << (this.groupID - 24))) != 0); +}); +Clazz_defineMethod(c$, "isRnaByID", +function(){ +return (this.isNucleic() && (196663 & (1 << (this.groupID - 24))) != 0); +}); +Clazz_defineMethod(c$, "isDnaByID", +function(){ +return (this.isNucleic() && (65480 & (1 << (this.groupID - 24))) != 0); +}); +Clazz_defineMethod(c$, "isCarbohydrate", +function(){ +return false; +}); +Clazz_defineMethod(c$, "getResno", +function(){ +return (this.seqcode == -2147483648 ? 0 : this.seqcode >> 8); +}); +Clazz_defineMethod(c$, "setResno", +function(i){ +this.seqcode = JM.Group.getSeqcodeFor(i, this.getInsertionCode()); +}, "~N"); +c$.getSeqNumberFor = Clazz_defineMethod(c$, "getSeqNumberFor", +function(seqcode){ +return (JM.Group.haveSequenceNumber(seqcode) ? seqcode >> 8 : 2147483647); +}, "~N"); +c$.haveSequenceNumber = Clazz_defineMethod(c$, "haveSequenceNumber", +function(seqcode){ +return ((seqcode & 128) != 0); +}, "~N"); +Clazz_defineMethod(c$, "getSeqcodeString", +function(){ +return JM.Group.getSeqcodeStringFor(this.seqcode); +}); +c$.getSeqcodeFor = Clazz_defineMethod(c$, "getSeqcodeFor", +function(seqNo, insCode){ +if (seqNo == -2147483648) return seqNo; +if (!((insCode >= 'A' && insCode <= 'Z') || (insCode >= 'a' && insCode <= 'z') || (insCode >= '0' && insCode <= '9') || insCode == '?' || insCode == '*')) { +if (insCode != ' ' && insCode != '\0') JU.Logger.warn("unrecognized insertionCode:" + insCode); +insCode = '\0'; +}return ((seqNo == 2147483647 ? 0 : (seqNo << 8) | 128)) + insCode.charCodeAt(0); +}, "~N,~S"); +c$.getSeqcodeStringFor = Clazz_defineMethod(c$, "getSeqcodeStringFor", +function(seqcode){ +if (seqcode == -2147483648) return null; +var s = "" + (seqcode >> 8); +if ((seqcode & 127) != 0) s += "^" + String.fromCharCode(seqcode & 127); +return s; +}, "~N"); +Clazz_defineMethod(c$, "getInsertionCode", +function(){ +return (this.seqcode == -2147483648 ? '\0' : String.fromCharCode(this.seqcode & 127)); +}); +Clazz_defineMethod(c$, "getInsCode", +function(){ +return (this.seqcode & 127); +}); +c$.getInsertionCodeFor = Clazz_defineMethod(c$, "getInsertionCodeFor", +function(seqcode){ +return (seqcode & 127); +}, "~N"); +c$.getInsertionCodeChar = Clazz_defineMethod(c$, "getInsertionCodeChar", +function(seqcode){ +return (seqcode == -2147483648 ? '\0' : String.fromCharCode(seqcode & 127)); +}, "~N"); +Clazz_defineMethod(c$, "scaleToScreen", +function(Z, mar){ +return this.chain.model.ms.vwr.tm.scaleToScreen(Z, mar); +}, "~N,~N"); +Clazz_defineMethod(c$, "isCursorOnTopOf", +function(atom, x, y, radius, champ){ +return this.chain.model.ms.isCursorOnTopOf(atom, x, y, radius, champ); +}, "JM.Atom,~N,~N,~N,JM.Atom"); +Clazz_defineMethod(c$, "getModel", +function(){ +return this.chain.model; +}); +Clazz_defineMethod(c$, "getSelectedMonomerCount", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "getSelectedMonomerIndex", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "isLeadAtom", +function(atomIndex){ +return false; +}, "~N"); +Clazz_defineMethod(c$, "getLeadAtomOr", +function(atom){ +var a = this.getLeadAtom(); +return (a == null ? atom : a); +}, "JM.Atom"); +Clazz_defineMethod(c$, "getLeadAtom", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getQuaternion", +function(qType){ +return null; +}, "~S"); +Clazz_defineMethod(c$, "getQuaternionFrame", +function(atoms){ +if (this.lastAtomIndex - this.firstAtomIndex < 3) return null; +var pt = this.firstAtomIndex; +return JU.Quat.getQuaternionFrame(atoms[pt], atoms[++pt], atoms[++pt]); +}, "~A"); +Clazz_defineMethod(c$, "setStrucNo", +function(i){ +}, "~N"); +Clazz_defineMethod(c$, "getHelixData", +function(tokType, qType, mStep){ +return JU.Escape.escapeHelical(null, tokType, null, null, null); +}, "~N,~S,~N"); +Clazz_defineMethod(c$, "isWithinStructure", +function(type){ +return false; +}, "J.c.STR"); +Clazz_defineMethod(c$, "getProteinStructureTag", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getStructureId", +function(){ +return ""; +}); +Clazz_defineMethod(c$, "getBioPolymerIndexInModel", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "isCrossLinked", +function(g){ +return false; +}, "JM.Group"); +Clazz_defineMethod(c$, "getCrossLinkVector", +function(vReturn, crosslinkCovalent, crosslinkHBond){ +return false; +}, "JU.Lst,~B,~B"); +Clazz_defineMethod(c$, "getNitrogenAtom", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getCarbonylOxygenAtom", +function(){ +return null; +}); +Clazz_defineMethod(c$, "fixIndices", +function(atomsDeleted, bsDeleted){ +this.firstAtomIndex -= atomsDeleted; +this.leadAtomIndex -= atomsDeleted; +this.lastAtomIndex -= atomsDeleted; +if (this.bsAdded != null) JU.BSUtil.deleteBits(this.bsAdded, bsDeleted); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getGroupInfo", +function(igroup, ptTemp){ +var infoGroup = new java.util.Hashtable(); +infoGroup.put("groupIndex", Integer.$valueOf(igroup)); +infoGroup.put("groupID", Short.$valueOf(this.groupID)); +var s = this.getSeqcodeString(); +if (s != null) infoGroup.put("seqCode", s); +infoGroup.put("_apt1", Integer.$valueOf(this.firstAtomIndex)); +infoGroup.put("_apt2", Integer.$valueOf(this.lastAtomIndex)); +if (this.bsAdded != null) infoGroup.put("addedAtoms", this.bsAdded); +infoGroup.put("atomInfo1", this.chain.model.ms.getAtomInfo(this.firstAtomIndex, null, ptTemp)); +infoGroup.put("atomInfo2", this.chain.model.ms.getAtomInfo(this.lastAtomIndex, null, ptTemp)); +infoGroup.put("visibilityFlags", Integer.$valueOf(this.shapeVisibilityFlags)); +return infoGroup; +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "getMinZ", +function(atoms, minZ){ +minZ[0] = 2147483647; +for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) this.checkMinZ(atoms[i], minZ); + +if (this.bsAdded != null) for (var i = this.bsAdded.nextSetBit(0); i >= 0; i = this.bsAdded.nextSetBit(i + 1)) this.checkMinZ(atoms[i], minZ); + +}, "~A,~A"); +Clazz_defineMethod(c$, "checkMinZ", +function(atom, minZ){ +var z = atom.sZ - Clazz_doubleToInt(atom.sD / 2) - 2; +if (z < minZ[0]) minZ[0] = Math.max(1, z); +}, "JM.Atom,~A"); +Clazz_defineMethod(c$, "getGroupParameter", +function(tok){ +return NaN; +}, "~N"); +Clazz_defineMethod(c$, "getAtomIndex", +function(name, offset){ +return -1; +}, "~S,~N"); +Clazz_defineMethod(c$, "getBSSideChain", +function(){ +return new JU.BS(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getGroup3() + "-" + this.getSeqcodeString() + "]"; +}); +Clazz_defineMethod(c$, "isNucleicMonomer", +function(){ +return false; +}); +c$.standardGroupList = null; +c$.group3Names = new Array(128); +c$.specialAtomNames = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Bond"], "JM.HBond", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.energy = 0; +Clazz_instantialize(this, arguments);}, JM, "HBond", JM.Bond); +Clazz_makeConstructor(c$, +function(atom1, atom2, order, mad, colix, energy){ +Clazz_superConstructor(this, JM.HBond, [atom1, atom2, order, mad, colix]); +this.energy = energy; +if (JU.Logger.debugging) JU.Logger.debug("HBond energy = " + energy + " #" + this.getIdentity()); +}, "JM.Atom,JM.Atom,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "getEnergy", +function(){ +return this.energy; +}); +c$.calcEnergy = Clazz_defineMethod(c$, "calcEnergy", +function(distAH, distCH, distCD, distAD){ +var energy = Math.round(-27888.0 / distAH - -27888.0 / distAD + -27888.0 / distCD - -27888.0 / distCH); +return energy; +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.LabelToken", ["java.util.Hashtable", "JU.AU", "$.PT", "$.SB", "JS.SV", "$.T", "JU.Edge", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.text = null; +this.key = null; +this.data = null; +this.tok = 0; +this.pt = -1; +this.ch1 = '\0'; +this.width = 0; +this.precision = 2147483647; +this.alignLeft = false; +this.zeroPad = false; +this.intAsFloat = false; +Clazz_instantialize(this, arguments);}, JM, "LabelToken", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(text, pt){ +this.text = text; +this.pt = pt; +return this; +}, "~S,~N"); +c$.isLabelPropertyTok = Clazz_defineMethod(c$, "isLabelPropertyTok", +function(tok){ +for (var i = JM.LabelToken.labelTokenIds.length; --i >= 0; ) if (JM.LabelToken.labelTokenIds[i] == tok) return true; + +return false; +}, "~N"); +c$.compile = Clazz_defineMethod(c$, "compile", +function(vwr, strFormat, chAtom, htValues){ +if (strFormat == null || strFormat.length == 0) return null; +if (strFormat.indexOf("%") < 0 || strFormat.length < 2) return Clazz_newArray(-1, [ new JM.LabelToken().set(strFormat, -1)]); +var n = 0; +var ich = -1; +var cch = strFormat.length; +while (++ich < cch && (ich = strFormat.indexOf('%', ich)) >= 0) n++; + +var tokens = new Array(n * 2 + 1); +var ichPercent; +var i = 0; +for (ich = 0; (ichPercent = strFormat.indexOf('%', ich)) >= 0; ) { +if (ich != ichPercent) tokens[i++] = new JM.LabelToken().set(strFormat.substring(ich, ichPercent), -1); +var lt = tokens[i++] = new JM.LabelToken().set(null, ichPercent); +vwr.autoCalculate(lt.tok, null); +ich = JM.LabelToken.setToken(vwr, strFormat, lt, cch, chAtom.charCodeAt(0), htValues); +} +if (ich < cch) tokens[i++] = new JM.LabelToken().set(strFormat.substring(ich), -1); +return tokens; +}, "JV.Viewer,~S,~S,java.util.Map"); +Clazz_defineMethod(c$, "formatLabel", +function(vwr, atom, strFormat, ptTemp){ +return (strFormat == null || strFormat.length == 0 ? null : JM.LabelToken.formatLabelAtomArray(vwr, atom, JM.LabelToken.compile(vwr, strFormat, '\0', null), '\0', null, ptTemp)); +}, "JV.Viewer,JM.Atom,~S,JU.P3"); +c$.formatLabelAtomArray = Clazz_defineMethod(c$, "formatLabelAtomArray", +function(vwr, atom, tokens, chAtom, indices, ptTemp){ +if (atom == null) return null; +var strLabel = (chAtom > '0' ? null : new JU.SB()); +if (tokens != null) for (var i = 0; i < tokens.length; i++) { +var t = tokens[i]; +if (t == null) break; +if (chAtom > '0' && t.ch1 != chAtom) continue; +if (t.tok <= 0 || t.key != null) { +if (strLabel != null) { +strLabel.append(t.text); +if (t.ch1 != '\0') strLabel.appendC(t.ch1); +}} else { +JM.LabelToken.appendAtomTokenValue(vwr, atom, t, strLabel, indices, ptTemp); +}} +return (strLabel == null ? null : strLabel.toString().intern()); +}, "JV.Viewer,JM.Atom,~A,~S,~A,JU.P3"); +c$.getBondLabelValues = Clazz_defineMethod(c$, "getBondLabelValues", +function(){ +var htValues = new java.util.Hashtable(); +htValues.put("#", ""); +htValues.put("ORDER", ""); +htValues.put("TYPE", ""); +htValues.put("LENGTH", Float.$valueOf(0)); +htValues.put("ENERGY", Float.$valueOf(0)); +return htValues; +}); +c$.formatLabelBond = Clazz_defineMethod(c$, "formatLabelBond", +function(vwr, bond, tokens, values, indices, ptTemp){ +values.put("#", "" + (bond.index + 1)); +values.put("ORDER", "" + JU.Edge.getBondOrderNumberFromOrder(bond.order)); +values.put("TYPE", JU.Edge.getBondOrderNameFromOrder(bond.order)); +values.put("LENGTH", Float.$valueOf(bond.atom1.distance(bond.atom2))); +values.put("ENERGY", Float.$valueOf(bond.getEnergy())); +JM.LabelToken.setValues(tokens, values); +JM.LabelToken.formatLabelAtomArray(vwr, bond.atom1, tokens, '1', indices, ptTemp); +JM.LabelToken.formatLabelAtomArray(vwr, bond.atom2, tokens, '2', indices, ptTemp); +return JM.LabelToken.getLabel(tokens); +}, "JV.Viewer,JM.Bond,~A,java.util.Map,~A,JU.P3"); +c$.formatLabelMeasure = Clazz_defineMethod(c$, "formatLabelMeasure", +function(vwr, m, label, value, units){ +var htValues = new java.util.Hashtable(); +htValues.put("#", "" + (m.index + 1)); +htValues.put("VALUE", Float.$valueOf(value)); +htValues.put("UNITS", units); +var tokens = JM.LabelToken.compile(vwr, label, '\1', htValues); +if (tokens == null) return ""; +JM.LabelToken.setValues(tokens, htValues); +var atoms = m.ms.at; +var indices = m.countPlusIndices; +for (var i = indices[0]; i >= 1; --i) if (indices[i] >= 0) JM.LabelToken.formatLabelAtomArray(vwr, atoms[indices[i]], tokens, String.fromCharCode(48 + i), null, null); + +label = JM.LabelToken.getLabel(tokens); +return (label == null ? "" : label); +}, "JV.Viewer,JM.Measurement,~S,~N,~S"); +c$.setValues = Clazz_defineMethod(c$, "setValues", +function(tokens, values){ +for (var i = 0; i < tokens.length; i++) { +var lt = tokens[i]; +if (lt == null) break; +if (lt.key == null) continue; +var value = values.get(lt.key); +lt.text = (Clazz_instanceOf(value, Float) ? lt.format((value).floatValue(), null, null) : lt.format(NaN, value, null)); +} +}, "~A,java.util.Map"); +c$.getLabel = Clazz_defineMethod(c$, "getLabel", +function(tokens){ +var sb = new JU.SB(); +for (var i = 0; i < tokens.length; i++) { +var lt = tokens[i]; +if (lt == null) break; +sb.append(lt.text); +} +return sb.toString(); +}, "~A"); +c$.setToken = Clazz_defineMethod(c$, "setToken", +function(vwr, strFormat, lt, cch, chAtom, htValues){ +var ich = lt.pt + 1; +if (ich >= cch) { +lt.text = "%"; +return ich; +}var ch; +if (strFormat.charAt(ich) == '-') { +lt.alignLeft = true; +++ich; +}if (ich < cch && strFormat.charAt(ich) == '0') { +lt.zeroPad = true; +++ich; +}while (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +lt.width = (10 * lt.width) + (ch.charCodeAt(0) - 48); +++ich; +} +lt.precision = 2147483647; +var isNegative = false; +if (ich < cch && strFormat.charAt(ich) == '.') { +++ich; +if (ich < cch && (ch = strFormat.charAt(ich)) == '-') { +isNegative = true; +++ich; +}if (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +++ich; +lt.precision = ch.charCodeAt(0) - 48; +if (ich < cch && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +++ich; +lt.precision = lt.precision * 10 + (ch.charCodeAt(0) - 48); +}if (isNegative) lt.precision = -1 - lt.precision; +}}if (ich < cch && htValues != null) for (var key, $key = htValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (strFormat.indexOf(key, ich) == ich) return ich + (lt.key = key).length; + +if (ich < cch) switch ((ch = strFormat.charAt(ich++)).charCodeAt(0)) { +case 37: +lt.text = "%"; +return ich; +case 91: +var ichClose = strFormat.indexOf(']', ich); +if (ichClose < ich) { +ich = cch; +break; +}var propertyName = strFormat.substring(ich, ichClose).toLowerCase(); +if (propertyName.startsWith("property_")) { +lt.tok = 134221834; +lt.data = vwr.getDataObj(propertyName, null, 1); +} else if (propertyName.startsWith("validation.")) { +lt.tok = 1073742189; +lt.data = vwr.getDataObj("property_" + propertyName.substring(11), null, 1); +} else if (propertyName.startsWith("unitid")) { +lt.tok = 1073741974; +lt.data = Integer.$valueOf(JV.JC.getUnitIDFlags(propertyName.substring(6))); +} else { +var token = JS.T.getTokenFromName(propertyName); +if (token != null && JM.LabelToken.isLabelPropertyTok(token.tok)) lt.tok = token.tok; +}ich = ichClose + 1; +break; +case 123: +var ichCloseBracket = strFormat.indexOf('}', ich); +if (ichCloseBracket < ich) { +ich = cch; +break; +}var s = strFormat.substring(ich, ichCloseBracket); +lt.data = vwr.getDataObj(s, null, 1); +if (lt.data == null) { +lt.data = vwr.getDataObj(s, null, -1); +if (lt.data != null) { +lt.data = (lt.data)[1]; +if ((typeof(lt.data)=='string')) lt.data = JU.PT.split(lt.data, "\n"); +if (!(JU.AU.isAS(lt.data))) lt.data = null; +}if (lt.data == null) { +lt.tok = 1715472409; +lt.data = s; +} else { +lt.tok = 1275068418; +}} else { +lt.tok = 134221834; +}ich = ichCloseBracket + 1; +break; +default: +var i; +var i1; +if (ich < cch && (i = "fuv".indexOf(ch)) >= 0 && (i1 = "xyz".indexOf(strFormat.charAt(ich))) >= 0) { +lt.tok = JM.LabelToken.twoCharLabelTokenIds[i * 3 + i1]; +ich++; +} else if ((i = "AaBbCcDEefGgIiLlMmNnOoPpQqRrSsTtUuVvWwXxxYyyZzz%%%gqW".indexOf(ch)) >= 0) { +lt.tok = JM.LabelToken.labelTokenIds[i]; +}} +lt.text = strFormat.substring(lt.pt, ich); +if (ich < cch && chAtom != 0 && JU.PT.isDigit(ch = strFormat.charAt(ich))) { +ich++; +lt.ch1 = ch; +if (ch.charCodeAt(0) != chAtom && chAtom != 1) lt.tok = 0; +}return ich; +}, "JV.Viewer,~S,JM.LabelToken,~N,~N,java.util.Map"); +c$.appendAtomTokenValue = Clazz_defineMethod(c$, "appendAtomTokenValue", +function(vwr, atom, t, strLabel, indices, ptTemp){ +var strT = null; +var floatT = NaN; +var ptT = null; +try { +switch (t.tok) { +case 1153433601: +strT = atom.atomPropertyString(vwr, 1153433601); +break; +case 1094713347: +strT = "" + (indices == null ? atom.i : indices[atom.i]); +break; +case 1765808134: +ptT = atom.atomPropertyTuple(vwr, t.tok, ptTemp); +break; +case 1073741974: +strT = atom.getUnitID((t.data).intValue()); +break; +case 134221834: +case 1073742189: +if (t.data != null) { +floatT = (t.data)[atom.i]; +if (t.tok == 1073742189 && floatT != 1 && floatT != 0) { +var o = vwr.getAtomValidation(t.text.substring(13, t.text.length - 1), atom); +if (o == null) { +System.out.println("?? o is null ??"); +} else if (o.size() == 1) { +floatT = o.get(0).floatValue(); +} else { +floatT = NaN; +strT = ""; +for (var i = 0, n = o.size(); i < n; i++) { +strT += "," + o.get(i); +} +if (strT.length > 1) strT = strT.substring(1); +}}}break; +case 1715472409: +var data = vwr.ms.getInfo(atom.mi, t.data); +var iatom = atom.i - vwr.ms.am[atom.mi].firstAtomIndex; +var o = null; +if (iatom >= 0) if ((Clazz_instanceOf(data,Array))) { +var sdata = data; +o = (iatom < sdata.length ? sdata[iatom] : null); +} else if (Clazz_instanceOf(data,"JU.Lst")) { +var list = data; +o = (iatom < list.size() ? JS.SV.oValue(list.get(iatom)) : null); +}if (o == null) { +strT = ""; +} else if (Clazz_instanceOf(o, Float)) { +floatT = (o).floatValue(); +} else if (Clazz_instanceOf(o, Integer)) { +floatT = (o).intValue(); +} else if (Clazz_instanceOf(o,"JU.T3")) { +ptT = o; +} else { +strT = o.toString(); +}break; +case 1275068418: +if (t.data != null) { +var sdata = t.data; +strT = (atom.i < sdata.length ? sdata[atom.i] : ""); +}break; +case 1631586315: +var formalCharge = atom.getFormalCharge(); +strT = (formalCharge > 0 ? "" + formalCharge + "+" : formalCharge < 0 ? "" + -formalCharge + "-" : ""); +break; +case 1094717454: +strT = atom.getModelNumberForLabel(); +break; +case 1128269825: +strT = "" + atom.atomPropertyInt(t.tok); +break; +case 1665140738: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +break; +case 1086324749: +strT = atom.group.getStructureId(); +break; +case 1094713367: +var id = atom.group.getStrucNo(); +strT = (id <= 0 ? "" : "" + id); +break; +case 1111490574: +if (Float.isNaN(floatT = atom.group.getGroupParameter(1111490574))) strT = "null"; +break; +case 1111492626: +case 1111492627: +case 1111492628: +case 1111490583: +case 1111490584: +case 1111490585: +case 1111490586: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +if (Float.isNaN(floatT)) strT = ""; +break; +case 1073877011: +strT = vwr.getNBOAtomLabel(atom); +break; +case 1086324747: +case 1639976963: +case 1237320707: +strT = atom.atomPropertyString(vwr, t.tok); +break; +case 1140850705: +strT = atom.getIdentityXYZ(ptTemp, 1); +break; +case 1086324754: +strT = atom.getWyckoffPosition(false); +break; +case 1086324755: +strT = atom.getWyckoffPosition(true); +break; +case 79: +strT = atom.getSymmetryOperatorList(false); +break; +case 81: +floatT = atom.getOccupancy100() / 100; +break; +default: +switch (t.tok & 1136656384) { +case 1094713344: +if (t.intAsFloat) floatT = atom.atomPropertyInt(t.tok); + else strT = "" + atom.atomPropertyInt(t.tok); +break; +case 1111490560: +floatT = atom.atomPropertyFloat(vwr, t.tok, ptTemp); +break; +case 1086324736: +strT = atom.atomPropertyString(vwr, t.tok); +break; +case 1077936128: +ptT = atom.atomPropertyTuple(vwr, t.tok, ptTemp); +if (ptT == null) strT = ""; +break; +default: +if (t.tok == 1145045003) strT = atom.atomPropertyString(vwr, 1145045003); +} +} +} catch (ioobe) { +if (Clazz_exceptionOf(ioobe,"IndexOutOfBoundsException")){ +floatT = NaN; +strT = null; +ptT = null; +} else { +throw ioobe; +} +} +strT = t.format(floatT, strT, ptT); +if (strLabel == null) t.text = strT; + else strLabel.append(strT); +}, "JV.Viewer,JM.Atom,JM.LabelToken,JU.SB,~A,JU.P3"); +Clazz_defineMethod(c$, "format", +function(floatT, strT, ptT){ +if (!Float.isNaN(floatT)) { +return JU.PT.formatF(floatT, this.width, this.precision, this.alignLeft, this.zeroPad); +} else if (strT != null) { +return JU.PT.formatS(strT, this.width, this.precision, this.alignLeft, this.zeroPad); +} else if (ptT != null) { +if (this.width == 0 && this.precision == 2147483647) { +this.width = 6; +this.precision = 2; +}return JU.PT.formatF(ptT.x, this.width, this.precision, false, false) + JU.PT.formatF(ptT.y, this.width, this.precision, false, false) + JU.PT.formatF(ptT.z, this.width, this.precision, false, false); +} else { +return this.text; +}}, "~N,~S,JU.T3"); +c$.labelTokenIds = Clazz_newIntArray(-1, [1086324739, 1086326786, 1086326785, 1111492620, 1631586315, 1086326788, 1094713347, 1086324746, 1086326789, 1111490569, 1094713357, 1094713361, 1111492618, 1094715393, 1094713363, 1094715402, 1094717454, 1086324743, 1094713360, 1086324742, 79, 1088421903, 1111492619, 1111490570, 81, 1128269825, 1094715412, 1086324747, 1094713366, 1086326788, 1111490574, 1111492620, 1086324745, 1111490575, 1648363544, 1145047055, 1140850705, 1086324755, 1111492612, 1111492609, 1111492629, 1111492613, 1111492610, 1111492630, 1111492614, 1111492611, 1111492631, 1114249217, 1112152066, 1112150019, 1112150020, 1112150021, 1112152070, 1112152071, 1112152073, 1112152074, 1112152076, 1649022989, 1112152078, 1111490561, 1111490562, 1153433601, 1094713346, 1228931586, 1765808134, 1094713356, 1111490564, 1228935687, 1287653388, 1825200146, 1111490567, 1094713359, 1111490565, 1111490568, 1094713362, 1715472409, 1665140738, 1113589787, 1086324748, 1086324744, 1112152075, 1639976963, 1237320707, 1094713367, 1086324749, 1086326798, 1111490576, 1111490577, 1111490578, 1111490579, 1094715418, 1648361473, 1111492626, 1111492627, 1111492628, 1312817669, 1145045006, 1145047050, 1145047049, 1145047053, 1111492615, 1111492616, 1111492617, 1113589786, 1111490571, 1111490572, 1111490573, 1145047052, 1111490566, 1111490563, 1094713351, 1094713365, 1111490583, 1111490584, 1111490585, 1111490586, 1145045008, 1296041985, 1073877011, 1086324752, 1086324753, 1086324754, 1145045003]); +c$.twoCharLabelTokenIds = Clazz_newIntArray(-1, [1111492612, 1111492613, 1111492614, 1111490577, 1111490578, 1111490579, 1111492626, 1111492627, 1111492628]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.Measurement", ["JU.Measure", "$.PT", "$.SB", "J.atomdata.RadiusData", "J.c.VDW", "JM.LabelToken", "JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ms = null; +this.thisID = null; +this.index = 0; +this.isVisible = true; +this.isHidden = false; +this.isTrajectory = false; +this.$isValid = true; +this.colix = 0; +this.labelColix = -1; +this.mad = 0; +this.tickInfo = null; +this.traceX = -2147483648; +this.traceY = 0; +this.count = 0; +this.countPlusIndices = null; +this.pts = null; +this.value = 0; +this.property = null; +this.strFormat = null; +this.units = null; +this.text = null; +this.vwr = null; +this.strMeasurement = null; +this.type = null; +this.tainted = false; +this.renderAxis = null; +this.renderArc = null; +this.newUnits = null; +this.fixedValue = NaN; +this.isPending = false; +this.inFront = false; +this.useDefaultLabel = false; +Clazz_instantialize(this, arguments);}, JM, "Measurement", null); +Clazz_prepareFields (c$, function(){ +this.countPlusIndices = Clazz_newIntArray (5, 0); +}); +Clazz_defineMethod(c$, "isTainted", +function(){ +return (this.tainted && !(this.tainted = false)); +}); +Clazz_defineMethod(c$, "setM", +function(modelSet, m, value, colix, strFormat, index){ +this.ms = modelSet; +this.index = index; +this.vwr = modelSet.vwr; +this.colix = colix; +this.strFormat = strFormat; +if (m != null) { +this.tickInfo = m.tickInfo; +this.pts = m.pts; +this.mad = m.mad; +this.thisID = m.thisID; +this.text = m.text; +this.property = m.property; +this.units = m.units; +if (this.property == null && "+hz".equals(this.units)) { +this.property = "property_J"; +}if (this.thisID != null && this.text != null) this.labelColix = this.text.colix; +}if (this.pts == null) this.pts = new Array(4); +var indices = (m == null ? null : m.countPlusIndices); +this.count = (indices == null ? 0 : indices[0]); +if (this.count > 0) { +System.arraycopy(indices, 0, this.countPlusIndices, 0, this.count + 1); +this.isTrajectory = modelSet.isTrajectoryMeasurement(this.countPlusIndices); +}this.isPending = Float.isNaN(value); +this.value = (this.isPending || this.isTrajectory ? this.getMeasurement(null) : value); +this.formatMeasurement(null); +return this; +}, "JM.ModelSet,JM.Measurement,~N,~N,~S,~N"); +Clazz_defineMethod(c$, "setPoints", +function(modelSet, indices, points, tickInfo){ +this.ms = modelSet; +this.countPlusIndices = indices; +this.count = indices[0]; +this.pts = (points == null ? new Array(4) : points); +this.vwr = modelSet.vwr; +this.tickInfo = tickInfo; +return this; +}, "JM.ModelSet,~A,~A,JM.TickInfo"); +Clazz_defineMethod(c$, "setCount", +function(count){ +this.setCountM(count); +}, "~N"); +Clazz_defineMethod(c$, "setCountM", +function(count){ +this.count = this.countPlusIndices[0] = count; +}, "~N"); +Clazz_defineMethod(c$, "getAtomIndex", +function(n){ +return (n > 0 && n <= this.count ? this.countPlusIndices[n] : -1); +}, "~N"); +Clazz_defineMethod(c$, "getAtom", +function(n){ +var pt = this.countPlusIndices[n]; +return (pt < -1 ? this.pts[-2 - pt] : this.ms.at[pt]); +}, "~N"); +Clazz_defineMethod(c$, "getLastIndex", +function(){ +return (this.count > 0 ? this.countPlusIndices[this.count] : -1); +}); +Clazz_defineMethod(c$, "getString", +function(){ +return this.strMeasurement; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.getString(); +}); +Clazz_defineMethod(c$, "getStringUsing", +function(vwr, strFormat, units){ +this.vwr = vwr; +this.value = this.getMeasurement(null); +this.formatMeasurementAs(strFormat, units, true); +if (strFormat == null) return this.getInfoAsString(units); +return this.strMeasurement; +}, "JV.Viewer,~S,~S"); +Clazz_defineMethod(c$, "getStringDetail", +function(){ +return (this.count == 2 ? "Distance" : this.count == 3 ? "Angle" : "Torsion") + this.getMeasurementScript(" - ", false) + " : " + this.value; +}); +Clazz_defineMethod(c$, "refresh", +function(pts){ +this.value = this.getMeasurement(pts); +this.isTrajectory = this.ms.isTrajectoryMeasurement(this.countPlusIndices); +this.formatMeasurement(null); +}, "~A"); +Clazz_defineMethod(c$, "getMeasurementScript", +function(sep, withModelIndex){ +var sb = new JU.SB(); +var asBitSet = (sep.equals(" ")); +for (var i = 1; i <= this.count; i++) sb.append(i > 1 ? sep : " ").append(this.getLabel(i, asBitSet, withModelIndex)); + +return sb.toString(); +}, "~S,~B"); +Clazz_defineMethod(c$, "formatMeasurementAs", +function(strFormat, units, useDefault){ +if (strFormat != null && strFormat.length == 0) strFormat = null; +if (!useDefault && strFormat != null && strFormat.indexOf(this.countPlusIndices[0] + ":") != 0) return; +this.strFormat = strFormat; +this.formatMeasurement(units); +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "formatMeasurement", +function(units){ +this.tainted = true; +switch (Float.isNaN(this.value) ? 0 : this.count) { +default: +this.strMeasurement = null; +return; +case 2: +this.strMeasurement = this.formatDistance(units); +return; +case 3: +case 4: +this.strMeasurement = this.formatAngle(this.value); +return; +} +}, "~S"); +Clazz_defineMethod(c$, "reformatDistanceIfSelected", +function(isDefault){ +if (this.count == 2 && this.vwr.slm.isSelected(this.countPlusIndices[1]) && this.vwr.slm.isSelected(this.countPlusIndices[2])) { +var pt; +if (this.useDefaultLabel && this.strFormat != null && (pt = this.strFormat.indexOf("//")) >= 0) this.strFormat = this.strFormat.substring(0, pt); +if (isDefault) this.units = null; +this.formatMeasurement(null); +}}, "~B"); +Clazz_defineMethod(c$, "formatDistance", +function(units){ +var label = this.getLabelString(); +if (label == null) return ""; +var pt = this.strFormat.indexOf("//"); +if (units == null) { +units = this.units; +if (units == null) { +units = (pt >= 0 ? this.strFormat.substring(pt + 2) : this.property == null ? this.vwr.g.measureDistanceUnits : ""); +}}if (pt >= 0) { +this.strFormat = this.strFormat.substring(0, pt); +}this.strFormat += "//" + units; +units = JM.Measurement.fixUnits(units); +pt = label.indexOf("//"); +if (pt >= 0) { +label = label.substring(0, pt); +if (label.length == 0) label = "%VALUE"; +}var f = this.fixValue(units, (label.indexOf("%V") >= 0)); +return this.formatString(f, this.newUnits, label); +}, "~S"); +Clazz_defineMethod(c$, "fixValue", +function(units, andRound){ +this.checkJ(units); +if (units != null && units.startsWith("+")) { +if (!this.isPending) this.value = Math.abs(this.value); +units = units.substring(1); +}this.newUnits = units; +if (this.count != 2) return this.value; +var dist = this.value; +if (units == null && this.property != null) units = ""; +if (units != null) { +var isPercent = units.equals("%"); +if (this.property == null && (isPercent || units.endsWith("hz"))) { +var i1 = this.getAtomIndex(1); +var i2 = this.getAtomIndex(2); +if (i1 >= 0 && i2 >= 0) { +var a1 = this.getAtom(1); +var a2 = this.getAtom(2); +var itype = JM.Measurement.nmrType(units); +var isDC = (!isPercent && itype == 1); +this.type = (isPercent ? "percent" : isDC ? "dipoleCouplingConstant" : itype == 3 ? "NOE or 3JHH" : "J-CouplingConstant"); +if (itype == 3) { +var result = this.vwr.getNMRCalculation().getNOEorJHH( Clazz_newArray(-1, [a1, null, null, a2]), 11); +if (result == null) { +dist = NaN; +this.newUnits = units = ""; +} else { +dist = result[1]; +units = this.newUnits = (result.length == 2 ? "noe" : "hz"); +}} else { +dist = (isPercent ? dist / (a1.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO) + a2.getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)) : isDC ? this.vwr.getNMRCalculation().getDipolarConstantHz(a1, a2) : this.vwr.getNMRCalculation().getIsoOrAnisoHz(true, a1, a2, units, null)); +}this.$isValid = !Float.isNaN(dist); +if (isPercent) units = "pm"; +}}return JM.Measurement.toUnits(dist, units, andRound); +}return (andRound ? Math.round(dist * 100) / 100 : dist); +}, "~S,~B"); +Clazz_defineMethod(c$, "checkJ", +function(units){ +if (this.property != null || units != null || this.units != null) return; +units = this.vwr.g.measureDistanceUnits; +if ("+hz".equals(units)) { +this.property = "property_J"; +this.units = units; +}}, "~S"); +c$.nmrType = Clazz_defineMethod(c$, "nmrType", +function(units){ +return (units.indexOf("hz") < 0 ? 0 : units.equals("noe_hz") ? 3 : units.startsWith("dc_") || units.equals("khz") ? 1 : 2); +}, "~S"); +Clazz_defineMethod(c$, "formatAngle", +function(angle){ +var label = this.getLabelString(); +if (label.indexOf("%V") >= 0) angle = Math.round(angle * 10) / 10; +return this.formatString(angle, "\u00B0", label); +}, "~N"); +Clazz_defineMethod(c$, "getLabelString", +function(){ +var atomCount = this.countPlusIndices[0]; +var s = atomCount + ":"; +var label = null; +if (this.strFormat != null) { +if (this.strFormat.length == 0) return null; +label = (this.strFormat.length > 2 && this.strFormat.indexOf(s) == 0 ? this.strFormat : null); +}this.useDefaultLabel = false; +if (label == null) { +this.strFormat = null; +label = this.vwr.getDefaultMeasurementLabel(this.countPlusIndices[0]); +this.useDefaultLabel = (this.units == null); +}if (label.indexOf(s) == 0) label = label.substring(2); +if (this.strFormat == null) this.strFormat = s + label; +return label; +}); +Clazz_defineMethod(c$, "formatString", +function(value, units, label){ +return JM.LabelToken.formatLabelMeasure(this.vwr, this, label, value, units); +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "sameAsPoints", +function(indices, points){ +if (this.count != indices[0]) return false; +var isSame = true; +for (var i = 1; i <= this.count && isSame; i++) isSame = (this.countPlusIndices[i] == indices[i]); + +if (isSame) for (var i = 0; i < this.count && isSame; i++) { +if (points[i] != null) isSame = (this.pts[i].distance(points[i]) < 0.01); +} +if (isSame) return true; +switch (this.count) { +default: +return true; +case 2: +return this.sameAsIJ(indices, points, 1, 2) && this.sameAsIJ(indices, points, 2, 1); +case 3: +return this.sameAsIJ(indices, points, 1, 3) && this.sameAsIJ(indices, points, 2, 2) && this.sameAsIJ(indices, points, 3, 1); +case 4: +return this.sameAsIJ(indices, points, 1, 4) && this.sameAsIJ(indices, points, 2, 3) && this.sameAsIJ(indices, points, 3, 2) && this.sameAsIJ(indices, points, 4, 1); +} +}, "~A,~A"); +Clazz_defineMethod(c$, "sameAsIJ", +function(atoms, points, i, j){ +var ipt = this.countPlusIndices[i]; +var jpt = atoms[j]; +return (ipt >= 0 || jpt >= 0 ? ipt == jpt : this.pts[-2 - ipt].distance(points[-2 - jpt]) < 0.01); +}, "~A,~A,~N,~N"); +Clazz_defineMethod(c$, "sameAs", +function(i, j){ +return this.sameAsIJ(this.countPlusIndices, this.pts, i, j); +}, "~N,~N"); +Clazz_defineMethod(c$, "getPropMeasurement", +function(pts){ +if (this.countPlusIndices == null || this.count != 2) return NaN; +for (var i = this.count; --i >= 0; ) if (this.countPlusIndices[i + 1] < 0) { +return NaN; +} +try { +var ptA = (pts == null ? this.getAtom(1) : pts[0]); +var ptB = (pts == null ? this.getAtom(2) : pts[1]); +var props = this.vwr.getDataObj(this.property, null, 2); +var ia = ptA.i; +var ib = ptB.i; +return (props == null || ib >= props.length || ia >= props.length ? NaN : props[ia][ib]); +} catch (t) { +return NaN; +} +}, "~A"); +Clazz_defineMethod(c$, "getMeasurement", +function(pts){ +this.checkJ(null); +if (!Float.isNaN(this.fixedValue)) return this.fixedValue; +if (this.property != null) return this.getPropMeasurement(pts); +if (this.countPlusIndices == null) return NaN; +if (this.count < 2) return NaN; +for (var i = this.count; --i >= 0; ) if (this.countPlusIndices[i + 1] == -1) { +return NaN; +} +var ptA = (pts == null ? this.getAtom(1) : pts[0]); +var ptB = (pts == null ? this.getAtom(2) : pts[1]); +var ptC; +switch (this.count) { +case 2: +return ptA.distance(ptB); +case 3: +ptC = (pts == null ? this.getAtom(3) : pts[2]); +return JU.Measure.computeAngleABC(ptA, ptB, ptC, true); +case 4: +ptC = (pts == null ? this.getAtom(3) : pts[2]); +var ptD = (pts == null ? this.getAtom(4) : pts[3]); +return JU.Measure.computeTorsion(ptA, ptB, ptC, ptD, true); +default: +return NaN; +} +}, "~A"); +Clazz_defineMethod(c$, "getLabel", +function(i, asBitSet, withModelIndex){ +var atomIndex = this.countPlusIndices[i]; +return (atomIndex < 0 ? (withModelIndex ? "modelIndex " + this.getAtom(i).mi + " " : "") + JU.Escape.eP(this.getAtom(i)) : asBitSet ? "({" + atomIndex + "})" : this.vwr.getAtomInfo(atomIndex)); +}, "~N,~B,~B"); +Clazz_defineMethod(c$, "setModelIndex", +function(modelIndex){ +if (this.pts == null) return; +for (var i = 0; i < this.count; i++) { +if (this.pts[i] != null) this.pts[i].mi = modelIndex; +} +}, "~N"); +Clazz_defineMethod(c$, "isValid", +function(){ +return !(this.sameAs(1, 2) || this.count > 2 && this.sameAs(1, 3) || this.count == 4 && this.sameAs(2, 4)); +}); +c$.find = Clazz_defineMethod(c$, "find", +function(measurements, m){ +var indices = m.countPlusIndices; +var points = m.pts; +for (var i = measurements.size(); --i >= 0; ) if (measurements.get(i).sameAsPoints(indices, points)) return i; + +return -1; +}, "JU.Lst,JM.Measurement"); +Clazz_defineMethod(c$, "isConnected", +function(atoms, count){ +var atomIndexLast = -1; +for (var i = 1; i <= count; i++) { +var atomIndex = this.getAtomIndex(i); +if (atomIndex < 0) continue; +if (atomIndexLast >= 0 && !atoms[atomIndex].isBonded(atoms[atomIndexLast])) return false; +atomIndexLast = atomIndex; +} +return true; +}, "~A,~N"); +Clazz_defineMethod(c$, "getInfoAsString", +function(units){ +var f = this.fixValue(units, true); +var sb = new JU.SB(); +sb.append(this.count == 2 ? (this.property != null ? this.property : this.type == null ? "distance" : this.type) : this.count == 3 ? "angle" : "dihedral"); +sb.append(" \t").appendF(f); +sb.append(" \t").append(JU.PT.esc(this.strMeasurement)); +for (var i = 1; i <= this.count; i++) sb.append(" \t").append(this.getLabel(i, false, false)); + +if (this.thisID != null) sb.append(" \t").append(this.thisID); +return sb.toString(); +}, "~S"); +Clazz_defineMethod(c$, "isInRange", +function(radiusData, value){ +if (radiusData.factorType === J.atomdata.RadiusData.EnumType.FACTOR) { +var atom1 = this.getAtom(1); +var atom2 = this.getAtom(2); +var d = (atom1.getVanderwaalsRadiusFloat(this.vwr, radiusData.vdwType) + atom2.getVanderwaalsRadiusFloat(this.vwr, radiusData.vdwType)) * radiusData.value; +return (value <= d); +}return (radiusData.values[0] == 3.4028235E38 || value >= radiusData.values[0] && value <= radiusData.values[1]); +}, "J.atomdata.RadiusData,~N"); +Clazz_defineMethod(c$, "isIntramolecular", +function(atoms, count){ +var molecule = -1; +for (var i = 1; i <= count; i++) { +var atomIndex = this.getAtomIndex(i); +if (atomIndex < 0) continue; +var m = atoms[atomIndex].getMoleculeNumber(false); +if (molecule < 0) molecule = m; + else if (m != molecule) return false; +} +return true; +}, "~A,~N"); +Clazz_defineMethod(c$, "isMin", +function(htMin){ +var a1 = this.getAtom(1); +var a2 = this.getAtom(2); +var d = Clazz_floatToInt(a2.distanceSquared(a1) * 100); +var n1 = a1.getAtomName(); +var n2 = a2.getAtomName(); +var key = (n1.compareTo(n2) < 0 ? n1 + n2 : n2 + n1); +var min = htMin.get(key); +return (min != null && d == min.intValue()); +}, "java.util.Map"); +c$.isUnits = Clazz_defineMethod(c$, "isUnits", +function(s){ +return (JU.PT.isOneOf((s.startsWith("+") ? s.substring(1) : s).toLowerCase(), ";nm;nanometers;pm;picometers;angstroms;angstroms;ang;\u00C5;au;vanderwaals;vdw;%;noe;") || s.indexOf(" ") < 0 && s.endsWith("hz")); +}, "~S"); +c$.toUnits = Clazz_defineMethod(c$, "toUnits", +function(dist, units, andRound){ +if (Float.isNaN(dist)) return NaN; +if (units.equals("hz")) return (andRound ? Math.round(dist * 10) / 10 : dist); +if (units.equals("nm")) return (andRound ? Math.round(dist * 100) / 1000 : dist / 10); +if (units.equals("pm")) return (andRound ? Math.round(dist * 1000) / 10 : dist * 100); +if (units.equals("au")) return (andRound ? Math.round(dist / 0.5291772 * 1000) / 1000 : dist / 0.5291772); +if (units.endsWith("khz")) return (andRound ? Math.round(dist / 10) / 100 : dist / 1000); +return (andRound ? Math.round(dist * 100) / 100 : dist); +}, "~N,~S,~B"); +c$.fromUnits = Clazz_defineMethod(c$, "fromUnits", +function(dist, units){ +if (units.equals("nm")) return dist * 10; +if (units.equals("pm")) return dist / 100; +if (units.equals("au")) return dist * 0.5291772; +if (units.equals("\u00C5")) return dist; +return 0; +}, "~N,~S"); +c$.fixUnits = Clazz_defineMethod(c$, "fixUnits", +function(u){ +var units = (u.endsWith("s") ? u.substring(0, u.length - 1) : u); +if (units.equals("nanometer")) return "nm"; + else if (units.equals("bohr") || units.equals("atomicunits") || units.equals("atomic")) return "au"; + else if (units.equals("picometer")) return "pm"; + else if (units.equals("\u00E5") || units.equals("angstrom") || units.equals("a") || units.equals("ang")) return "\u00C5"; + else if (units.equals("vanderwaal") || units.equals("vdw")) return "%"; +return u; +}, "~S"); +Clazz_defineMethod(c$, "getDistanceFormatForState", +function(){ +return (this.useDefaultLabel ? null : this.strFormat); +}); +Clazz_defineMethod(c$, "setFromMD", +function(md, andText){ +if (md.thisID != null) { +this.thisID = md.thisID; +this.mad = md.mad; +if (md.colix != 0) this.colix = md.colix; +this.strFormat = md.strFormat; +this.text = md.text; +}this.units = ("default".equals(md.units) ? null : md.units); +this.property = md.property; +this.fixedValue = md.fixedValue; +if (md.colix != 0) this.colix = md.colix; +if (md.mad != 0) this.mad = md.mad; +if (md.strFormat != null) { +this.strFormat = (this.strFormat == null ? md.strFormat : this.strFormat.substring(0, 2)) + md.strFormat.substring(2); +}if (md.text != null) { +if (this.text == null) { +this.text = md.text; +} else { +if (md.text.font != null) { +this.text.setFont(md.text.font, false); +this.text.fontScale = md.text.font.fontSize / md.text.font.fontSizeNominal; +}this.text.text = null; +if (md.text.align != 0) this.text.align = md.text.align; +if (md.colix != 0) this.labelColix = this.text.colix = md.text.colix; +}}this.formatMeasurement(null); +}, "JM.MeasurementData,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["J.api.JmolMeasurementClient"], "JM.MeasurementData", ["JU.Lst", "JM.Measurement"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.client = null; +this.bsSelected = null; +this.measurementStrings = null; +this.measurements = null; +this.points = null; +this.mustBeConnected = false; +this.mustNotBeConnected = false; +this.tickInfo = null; +this.tokAction = 12290; +this.radiusData = null; +this.strFormat = null; +this.property = null; +this.note = null; +this.isAll = false; +this.colix = 0; +this.intramolecular = null; +this.mad = 0; +this.thisID = null; +this.text = null; +this.units = null; +this.fixedValue = 0; +this.atoms = null; +this.minArray = null; +this.ms = null; +this.allowSelf = false; +this.vwr = null; +this.iFirstAtom = 0; +this.justOneModel = true; +this.htMin = null; +Clazz_instantialize(this, arguments);}, JM, "MeasurementData", null, J.api.JmolMeasurementClient); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "init", +function(id, vwr, points){ +this.vwr = vwr; +this.points = points; +this.thisID = id; +return this; +}, "~S,JV.Viewer,JU.Lst"); +Clazz_defineMethod(c$, "setModelSet", +function(m){ +this.ms = m; +return this; +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "set", +function(tokAction, htMin, radiusData, property, strFormat, units, tickInfo, mustBeConnected, mustNotBeConnected, intramolecular, isAll, mad, colix, text, value, bsSelected){ +this.ms = this.vwr.ms; +this.tokAction = tokAction; +if (this.points.size() >= 2 && Clazz_instanceOf(this.points.get(0),"JU.BS") && Clazz_instanceOf(this.points.get(1),"JU.BS")) { +this.justOneModel = this.vwr.ms.getModelBS(this.points.get(0), false).equals(this.vwr.ms.getModelBS(this.points.get(1), false)); +}this.bsSelected = bsSelected; +this.htMin = htMin; +this.radiusData = radiusData; +this.property = property; +this.strFormat = strFormat; +this.units = units; +this.tickInfo = tickInfo; +this.mustBeConnected = mustBeConnected; +this.mustNotBeConnected = mustNotBeConnected; +this.intramolecular = intramolecular; +this.isAll = isAll; +this.mad = mad; +this.colix = colix; +this.text = text; +this.fixedValue = value; +return this; +}, "~N,java.util.Map,J.atomdata.RadiusData,~S,~S,~S,JM.TickInfo,~B,~B,Boolean,~B,~N,~N,JM.Text,~N,JU.BS"); +Clazz_defineMethod(c$, "processNextMeasure", +function(md, m){ +var value = m.getMeasurement(null); +if (this.htMin != null && !m.isMin(this.htMin) || this.radiusData != null && !m.isInRange(this.radiusData, value)) return; +if (this.measurementStrings == null && this.measurements == null) { +var f = this.minArray[this.iFirstAtom]; +m.value = value; +value = m.fixValue(this.units, false); +this.minArray[this.iFirstAtom] = (1 / f == -Infinity ? value : Math.min(f, value)); +return; +}if (this.measurementStrings != null) this.measurementStrings.addLast(m.getStringUsing(this.vwr, this.strFormat, this.units)); + else this.measurements.addLast(Float.$valueOf(m.getMeasurement(null))); +}, "JM.MeasurementData,JM.Measurement"); +Clazz_defineMethod(c$, "getMeasurements", +function(asFloatArray, asMinArray){ +if (asMinArray) { +this.minArray = Clazz_newFloatArray ((this.points.get(0)).cardinality(), 0); +for (var i = 0; i < this.minArray.length; i++) this.minArray[i] = -0.0; + +this.define(null, this.ms); +return this.minArray; +}if (asFloatArray) { +this.allowSelf = true; +this.measurements = new JU.Lst(); +this.define(null, this.ms); +return this.measurements; +}this.measurementStrings = new JU.Lst(); +this.define(null, this.ms); +return this.measurementStrings; +}, "~B,~B"); +Clazz_defineMethod(c$, "define", +function(client, modelSet){ +this.client = (client == null ? this : client); +this.atoms = modelSet.at; +var nPoints = this.points.size(); +if (nPoints < 2) return; +var modelIndex = -1; +var pts = new Array(4); +var indices = Clazz_newIntArray (5, 0); +var m = new JM.Measurement().setPoints(modelSet, indices, pts, null); +m.setCount(nPoints); +m.property = this.property; +m.strFormat = this.strFormat; +m.units = this.units; +m.fixedValue = this.fixedValue; +var ptLastAtom = -1; +for (var i = 0; i < nPoints; i++) { +var obj = this.points.get(i); +if (Clazz_instanceOf(obj,"JU.BS")) { +var bs = obj; +var nAtoms = bs.cardinality(); +if (nAtoms == 0) return; +if (nAtoms > 1) modelIndex = 0; +ptLastAtom = i; +if (i == 0) this.iFirstAtom = 0; +indices[i + 1] = bs.nextSetBit(0); +} else { +pts[i] = obj; +indices[i + 1] = -2 - i; +}} +this.nextMeasure(0, ptLastAtom, m, modelIndex); +}, "J.api.JmolMeasurementClient,JM.ModelSet"); +Clazz_defineMethod(c$, "nextMeasure", +function(thispt, ptLastAtom, m, thisModel){ +if (thispt > ptLastAtom) { +if ((this.allowSelf && !this.mustBeConnected && !this.mustNotBeConnected || m.isValid()) && (!this.mustBeConnected || m.isConnected(this.atoms, thispt)) && (!this.mustNotBeConnected || !m.isConnected(this.atoms, thispt)) && (this.intramolecular == null || m.isIntramolecular(this.atoms, thispt) == this.intramolecular.booleanValue())) this.client.processNextMeasure(this, m); +return; +}var bs = this.points.get(thispt); +var indices = m.countPlusIndices; +var thisAtomIndex = (thispt == 0 ? 2147483647 : indices[thispt]); +if (thisAtomIndex < 0) { +this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +return; +}var haveNext = false; +for (var i = bs.nextSetBit(0), pt = 0; i >= 0; i = bs.nextSetBit(i + 1), pt++) { +if (i == thisAtomIndex && !this.allowSelf) continue; +var modelIndex = this.atoms[i].mi; +if (thisModel >= 0 && this.justOneModel) { +if (thispt == 0) thisModel = modelIndex; + else if (thisModel != modelIndex) continue; +}indices[thispt + 1] = i; +if (thispt == 0) this.iFirstAtom = pt; +haveNext = true; +this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +} +if (!haveNext) this.nextMeasure(thispt + 1, ptLastAtom, m, thisModel); +}, "~N,~N,JM.Measurement,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.Measurement"], "JM.MeasurementPending", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveTarget = false; +this.haveModified = false; +this.numSet = 0; +this.lastIndex = -1; +Clazz_instantialize(this, arguments);}, JM, "MeasurementPending", JM.Measurement); +Clazz_defineMethod(c$, "set", +function(modelSet){ +return this.setM(modelSet, null, NaN, 0, null, 0); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "checkPoint", +function(ptClicked){ +for (var i = 1; i <= this.numSet; i++) if (this.countPlusIndices[i] == -1 - i && this.pts[i - 1].distance(ptClicked) < 0.01) return false; + +return true; +}, "JU.Point3fi"); +Clazz_defineMethod(c$, "getIndexOf", +function(atomIndex){ +for (var i = 1; i <= this.numSet; i++) if (this.countPlusIndices[i] == atomIndex) return i; + +return 0; +}, "~N"); +Clazz_overrideMethod(c$, "setCount", +function(count){ +this.setCountM(count); +this.numSet = count; +}, "~N"); +Clazz_defineMethod(c$, "addPoint", +function(atomIndex, ptClicked, doSet){ +this.haveModified = (atomIndex != this.lastIndex); +this.lastIndex = atomIndex; +if (ptClicked == null) { +if (this.getIndexOf(atomIndex) > 0) { +if (doSet) this.numSet = this.count; +return this.count; +}this.haveTarget = (atomIndex >= 0); +if (!this.haveTarget) return this.count = this.numSet; +this.count = this.numSet + 1; +this.countPlusIndices[this.count] = atomIndex; +} else { +if (!this.checkPoint(ptClicked)) { +if (doSet) this.numSet = this.count; +return this.count; +}var pt = this.numSet; +this.haveModified = this.haveTarget = true; +this.count = this.numSet + 1; +this.pts[pt] = ptClicked; +this.countPlusIndices[this.count] = -2 - pt; +}this.countPlusIndices[0] = this.count; +if (doSet) this.numSet = this.count; +this.value = this.getMeasurement(null); +this.strFormat = null; +this.formatMeasurement(null); +return this.count; +}, "~N,JU.Point3fi,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.Model", ["java.util.Hashtable", "JU.AU", "$.BS", "$.SB", "JU.BSUtil", "JV.FileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ms = null; +this.mat4 = null; +this.modelIndex = 0; +this.fileIndex = 0; +this.isBioModel = false; +this.isPdbWithMultipleBonds = false; +this.isModelKit = false; +this.chains = null; +this.simpleCage = null; +this.dssrCache = null; +this.orientation = null; +this.auxiliaryInfo = null; +this.properties = null; +this.biosymmetry = null; +this.dataFrames = null; +this.translation = null; +this.dataSourceFrame = -1; +this.loadState = ""; +this.loadScript = null; +this.hasRasmolHBonds = false; +this.structureTainted = false; +this.isJmolDataFrame = false; +this.isTrajectory = false; +this.trajectoryBaseIndex = 0; +this.altLocCount = 0; +this.insertionCount = 0; +this.act = 0; +this.bondCount = -1; +this.chainCount = 0; +this.groupCount = -1; +this.hydrogenCount = 0; +this.moleculeCount = 0; +this.biosymmetryCount = 0; +this.firstAtomIndex = 0; +this.firstMoleculeIndex = 0; +this.bsAtoms = null; +this.bsAtomsDeleted = null; +this.defaultRotationRadius = 0; +this.frameDelay = 0; +this.selectedTrajectory = -1; +this.jmolData = null; +this.jmolFrameType = null; +this.pdbID = null; +this.bsCheck = null; +this.hasChirality = false; +this.isOrderly = true; +this.bsAsymmetricUnit = null; +Clazz_instantialize(this, arguments);}, JM, "Model", null); +Clazz_makeConstructor(c$, +function(){ +this.setupArrays(); +}); +Clazz_defineMethod(c$, "setupArrays", +function(){ +this.chains = new Array(8); +this.loadScript = new JU.SB(); +this.bsAtoms = new JU.BS(); +this.bsAtomsDeleted = new JU.BS(); +}); +Clazz_defineMethod(c$, "set", +function(modelSet, modelIndex, trajectoryBaseIndex, jmolData, properties, auxiliaryInfo){ +this.ms = modelSet; +this.dataSourceFrame = this.modelIndex = modelIndex; +this.isTrajectory = (trajectoryBaseIndex >= 0); +this.trajectoryBaseIndex = (this.isTrajectory ? trajectoryBaseIndex : modelIndex); +if (auxiliaryInfo == null) { +auxiliaryInfo = new java.util.Hashtable(); +}this.auxiliaryInfo = auxiliaryInfo; +var bc = (auxiliaryInfo.get("biosymmetryCount")); +if (bc != null) { +this.biosymmetryCount = bc.intValue(); +this.biosymmetry = auxiliaryInfo.get("biosymmetry"); +}var fname = auxiliaryInfo.get("fileName"); +if (fname != null) auxiliaryInfo.put("fileName", JV.FileManager.stripTypePrefix(fname)); +this.properties = properties; +if (jmolData == null) { +this.jmolFrameType = "modelSet"; +} else { +this.jmolData = jmolData; +this.isJmolDataFrame = true; +auxiliaryInfo.put("jmolData", jmolData); +auxiliaryInfo.put("title", jmolData); +this.jmolFrameType = (jmolData.indexOf("ramachandran") >= 0 ? "ramachandran" : jmolData.indexOf("quaternion") >= 0 ? "quaternion" : "data"); +}return this; +}, "JM.ModelSet,~N,~N,~S,java.util.Properties,java.util.Map"); +Clazz_defineMethod(c$, "getTrueAtomCount", +function(){ +return JU.BSUtil.andNot(this.bsAtoms, this.bsAtomsDeleted).cardinality(); +}); +Clazz_defineMethod(c$, "isContainedIn", +function(bs){ +if (this.bsCheck == null) this.bsCheck = new JU.BS(); +this.bsCheck.clearAll(); +this.bsCheck.or(bs); +var bsa = JU.BSUtil.andNot(this.bsAtoms, this.bsAtomsDeleted); +this.bsCheck.and(bsa); +return this.bsCheck.equals(bsa); +}, "JU.BS"); +Clazz_defineMethod(c$, "resetBoundCount", +function(){ +this.bondCount = -1; +}); +Clazz_defineMethod(c$, "getBondCount", +function(){ +if (this.bondCount >= 0) return this.bondCount; +var bonds = this.ms.bo; +this.bondCount = 0; +for (var i = this.ms.bondCount; --i >= 0; ) if (bonds[i].atom1.mi == this.modelIndex) this.bondCount++; + +return this.bondCount; +}); +Clazz_defineMethod(c$, "getChainCount", +function(countWater){ +if (this.chainCount > 1 && !countWater) for (var i = 0; i < this.chainCount; i++) if (this.chains[i].chainID == 0) return this.chainCount - 1; + +return this.chainCount; +}, "~B"); +Clazz_defineMethod(c$, "calcSelectedGroupsCount", +function(bsSelected){ +for (var i = this.chainCount; --i >= 0; ) this.chains[i].calcSelectedGroupsCount(bsSelected); + +}, "JU.BS"); +Clazz_defineMethod(c$, "getGroupCount", +function(){ +if (this.groupCount < 0) { +this.groupCount = 0; +for (var i = this.chainCount; --i >= 0; ) this.groupCount += this.chains[i].groupCount; + +}return this.groupCount; +}); +Clazz_defineMethod(c$, "getChainAt", +function(i){ +return (i < this.chainCount ? this.chains[i] : null); +}, "~N"); +Clazz_defineMethod(c$, "getChain", +function(chainID){ +for (var i = this.chainCount; --i >= 0; ) { +var chain = this.chains[i]; +if (chain.chainID == chainID) return chain; +} +return null; +}, "~N"); +Clazz_defineMethod(c$, "resetDSSR", +function(totally){ +this.dssrCache = null; +if (totally) this.auxiliaryInfo.remove("dssr"); +}, "~B"); +Clazz_defineMethod(c$, "fixIndices", +function(modelIndex, nAtomsDeleted, bsDeleted){ +this.fixIndicesM(modelIndex, nAtomsDeleted, bsDeleted); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "fixIndicesM", +function(modelIndex, nAtomsDeleted, bsDeleted){ +if (this.dataSourceFrame > modelIndex) this.dataSourceFrame--; +if (this.trajectoryBaseIndex > modelIndex) this.trajectoryBaseIndex--; +this.firstAtomIndex -= nAtomsDeleted; +for (var i = 0; i < this.chainCount; i++) this.chains[i].fixIndices(nAtomsDeleted, bsDeleted); + +JU.BSUtil.deleteBits(this.bsAtoms, bsDeleted); +JU.BSUtil.deleteBits(this.bsAtomsDeleted, bsDeleted); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "freeze", +function(){ +this.freezeM(); +return false; +}); +Clazz_defineMethod(c$, "freezeM", +function(){ +for (var i = 0; i < this.chainCount; i++) if (this.chains[i].groupCount == 0) { +for (var j = i + 1; j < this.chainCount; j++) this.chains[j - 1] = this.chains[j]; + +this.chainCount--; +} +this.chains = JU.AU.arrayCopyObject(this.chains, this.chainCount); +this.groupCount = -1; +this.getGroupCount(); +for (var i = 0; i < this.chainCount; ++i) this.chains[i].groups = JU.AU.arrayCopyObject(this.chains[i].groups, this.chains[i].groupCount); + +}); +Clazz_defineMethod(c$, "setSimpleCage", +function(ucell){ +if ((this.simpleCage = ucell) != null) { +this.auxiliaryInfo.put("unitCellParams", ucell.getUnitCellParams()); +}}, "J.api.SymmetryInterface"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["java.util.Hashtable", "JU.BS"], "JM.ModelLoader", ["java.util.Arrays", "JU.AU", "$.Lst", "$.P3", "$.PT", "$.SB", "$.V3", "J.api.Interface", "JM.AtomCollection", "$.Chain", "$.Group", "$.Model", "$.ModelSet", "JS.T", "JU.BSUtil", "$.Elements", "$.JmolMolecule", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.ms = null; +this.modelSet0 = null; +this.merging = false; +this.appendNew = false; +this.jmolData = null; +this.group3Lists = null; +this.group3Counts = null; +this.specialAtomIndexes = null; +this.someModelsHaveUnitcells = false; +this.someModelsAreModulated = false; +this.is2D = false; +this.isMOL2D = false; +this.isMutate = false; +this.isTrajectory = false; +this.isPyMOLsession = false; +this.doMinimize = false; +this.doAddPDBHydrogens = false; +this.fileHeader = null; +this.jbr = null; +this.groups = null; +this.groupCount = 0; +this.modulationTUV = null; +this.noH = false; +this.htAtomMap = null; +this.chainOf = null; +this.group3Of = null; +this.seqcodes = null; +this.firstAtomIndexes = null; +this.iModel = 0; +this.model = null; +this.currentChainID = 0; +this.isNewChain = false; +this.currentChain = null; +this.currentGroupSequenceNumber = 0; +this.currentGroupInsertionCode = '\0'; +this.currentGroup3 = null; +this.nullGroup = null; +this.baseModelIndex = 0; +this.baseModelCount = 0; +this.baseAtomIndex = 0; +this.baseGroupIndex = 0; +this.baseTrajectoryCount = 0; +this.adapterModelCount = 0; +this.adapterTrajectoryCount = 0; +this.noAutoBond = false; +this.modulationOn = false; +this.htGroup1 = null; +this.appendToModelIndex = null; +this.$mergeGroups = null; +this.iChain = 0; +this.vStereo = null; +this.lastModel = -1; +this.structuresDefinedInFile = null; +this.stereodir = 1; +Clazz_instantialize(this, arguments);}, JM, "ModelLoader", null); +Clazz_prepareFields (c$, function(){ +this.htAtomMap = new java.util.Hashtable(); +this.structuresDefinedInFile = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(vwr, modelSetName, loadScript, asc, modelSet0, bsNew){ +this.vwr = vwr; +this.ms = new JM.ModelSet(vwr, modelSetName); +var adapter = vwr.getModelAdapter(); +this.modelSet0 = modelSet0; +this.merging = (modelSet0 != null && (modelSet0.ac > 0 || modelSet0.vwr.getOperativeSymmetry() != null)); +if (this.merging) { +this.ms.canSkipLoad = false; +} else { +vwr.resetShapes(false); +}this.ms.preserveState = vwr.getPreserveState(); +this.ms.showRebondTimes = vwr.getBoolean(603979934); +if (bsNew == null) { +this.initializeInfo(modelSetName, null); +this.createModelSet(null, null, null); +vwr.setStringProperty("_fileType", ""); +return; +}if (!this.ms.preserveState) this.ms.canSkipLoad = false; +var info = adapter.getAtomSetCollectionAuxiliaryInfo(asc); +info.put("loadScript", loadScript); +this.initializeInfo(adapter.getFileTypeName(asc).toLowerCase().intern(), info); +this.createModelSet(adapter, asc, bsNew); +if (info.get("lowPrecision") != null) { +vwr.setBooleanPropertyTok("doublePrecision", 603979831, false); +}if (this.jbr != null) this.jbr.setLoader(null); +this.jbr = null; +}, "JV.Viewer,~S,JU.SB,~O,JM.ModelSet,JU.BS"); +Clazz_defineMethod(c$, "initializeInfo", +function(name, info){ +this.ms.g3d = this.vwr.gdata; +this.ms.modelSetTypeName = name; +this.ms.isXYZ = (name === "xyz"); +this.ms.msInfo = info; +this.ms.modelSetProperties = this.ms.getInfoM("properties"); +this.ms.haveBioModels = this.ms.getMSInfoB(JV.JC.getBoolName(4)); +this.isMutate = this.ms.getMSInfoB("isMutate"); +if (this.ms.haveBioModels) this.jbr = this.vwr.getJBR().setLoader(this); +this.jmolData = (this.adapterModelCount == 0 ? this.ms.getInfoM("jmolData") : null); +this.fileHeader = this.ms.getInfoM("fileHeader"); +var steps = this.ms.getInfoM("trajectorySteps"); +this.isTrajectory = (steps != null); +if (this.isTrajectory) this.ms.trajectory = this.newTrajectory(this.ms, steps); +this.isPyMOLsession = this.ms.getMSInfoB("isPyMOL"); +this.doAddPDBHydrogens = (this.jbr != null && !this.isTrajectory && !this.isPyMOLsession && !this.ms.getMSInfoB("pdbNoHydrogens") && (this.ms.getMSInfoB("pdbAddHydrogens") || this.vwr.getBoolean(603979894))); +if (info != null) { +info.remove("pdbNoHydrogens"); +info.remove("pdbAddHydrogens"); +info.remove("trajectorySteps"); +if (this.isTrajectory) this.ms.vibrationSteps = info.remove("vibrationSteps"); +if (info.containsKey("highPrecision")) { +this.vwr.setBooleanProperty("legacyJavaFloat", true); +}}this.htGroup1 = this.ms.getInfoM("htGroup1"); +var mod = this.ms.getInfoM("modulationOn"); +if (mod != null) { +this.modulationOn = true; +this.modulationTUV = (mod === Boolean.TRUE ? null : mod); +}this.noAutoBond = this.ms.getMSInfoB("noAutoBond"); +this.noH = this.ms.getMSInfoB("noHydrogen"); +this.is2D = this.ms.getMSInfoB("is2D"); +this.doMinimize = (this.is2D && !this.noH || this.ms.getMSInfoB("minimize3D")) && this.ms.getMSInfoB("doMinimize"); +this.adapterTrajectoryCount = (this.isTrajectory ? this.ms.trajectory.steps.size() : 0); +this.ms.someModelsHaveSymmetry = this.ms.getMSInfoB(JV.JC.getBoolName(1)); +this.someModelsHaveUnitcells = this.ms.getMSInfoB(JV.JC.getBoolName(2)); +this.someModelsAreModulated = this.ms.getMSInfoB(JV.JC.getBoolName(9)); +this.ms.someModelsHaveFractionalCoordinates = this.ms.getMSInfoB(JV.JC.getBoolName(1)); +if (this.merging) { +this.ms.haveBioModels = new Boolean (this.ms.haveBioModels | this.modelSet0.haveBioModels).valueOf(); +this.ms.bioModelset = this.modelSet0.bioModelset; +if (this.ms.bioModelset != null) this.ms.bioModelset.set(this.vwr, this.ms); +this.ms.someModelsHaveSymmetry = new Boolean (this.ms.someModelsHaveSymmetry | this.modelSet0.getMSInfoB(JV.JC.getBoolName(1))).valueOf(); +this.someModelsHaveUnitcells = new Boolean (this.someModelsHaveUnitcells | this.modelSet0.getMSInfoB(JV.JC.getBoolName(2))).valueOf(); +this.ms.someModelsHaveFractionalCoordinates = new Boolean (this.ms.someModelsHaveFractionalCoordinates | this.modelSet0.getMSInfoB(JV.JC.getBoolName(0))).valueOf(); +this.ms.someModelsHaveAromaticBonds = new Boolean (this.ms.someModelsHaveAromaticBonds | this.modelSet0.someModelsHaveAromaticBonds).valueOf(); +this.ms.msInfo.put(JV.JC.getBoolName(1), Boolean.$valueOf(this.ms.someModelsHaveSymmetry)); +this.ms.msInfo.put(JV.JC.getBoolName(2), Boolean.$valueOf(this.someModelsHaveUnitcells)); +this.ms.msInfo.put(JV.JC.getBoolName(0), Boolean.$valueOf(this.ms.someModelsHaveFractionalCoordinates)); +this.ms.msInfo.put(JV.JC.getBoolName(8), Boolean.$valueOf(this.ms.someModelsHaveAromaticBonds)); +}}, "~S,java.util.Map"); +Clazz_defineMethod(c$, "newTrajectory", +function(ms, steps){ +return (J.api.Interface.getInterface("JM.Trajectory", this.vwr, "load")).set(this.vwr, ms, steps); +}, "JM.ModelSet,JU.Lst"); +Clazz_defineMethod(c$, "getGroup3", +function(iGroup){ +return (iGroup >= this.group3Of.length ? null : this.group3Of[iGroup]); +}, "~N"); +Clazz_defineMethod(c$, "getFirstAtomIndex", +function(iGroup){ +return this.firstAtomIndexes[iGroup]; +}, "~N"); +Clazz_defineMethod(c$, "getAtomCount", +function(){ +return this.ms.ac; +}); +Clazz_defineMethod(c$, "createModelSet", +function(adapter, asc, bs2D){ +var nAtoms = (adapter == null ? 0 : adapter.getAtomCount(asc, -1)); +if (nAtoms > 0) JU.Logger.info("reading " + nAtoms + " atoms"); +this.adapterModelCount = (adapter == null ? 1 : adapter.getAtomSetCount(asc)); +this.appendToModelIndex = (this.ms.msInfo == null ? null : (this.ms.msInfo.get("appendToModelIndex"))); +this.appendNew = !this.isMutate && (!this.merging || adapter == null || this.adapterModelCount > 1 || this.isTrajectory || this.vwr.getBoolean(603979792) && this.appendToModelIndex == null); +this.htAtomMap.clear(); +this.chainOf = new Array(32); +this.group3Of = new Array(32); +this.seqcodes = Clazz_newIntArray (32, 0); +this.firstAtomIndexes = Clazz_newIntArray (32, 0); +this.currentChainID = 2147483647; +this.currentChain = null; +this.currentGroupInsertionCode = '\uFFFF'; +this.currentGroup3 = "xxxxx"; +this.iModel = -1; +this.model = null; +if (this.merging) this.mergeTrajAndVib(this.modelSet0, this.ms); +this.initializeAtomBondModelCounts(nAtoms); +if (!this.noH && bs2D != null && (this.doMinimize || this.is2D)) { +bs2D.setBits(this.baseAtomIndex, this.baseAtomIndex + adapter.getAtomCount(asc, 0)); +}if (adapter == null) { +this.setModelNameNumberProperties(0, -1, "", 1, null, null, null); +} else { +if (this.adapterModelCount > 0) { +JU.Logger.info("ModelSet: haveSymmetry:" + this.ms.someModelsHaveSymmetry + " haveUnitcells:" + this.someModelsHaveUnitcells + " haveFractionalCoord:" + this.ms.someModelsHaveFractionalCoordinates); +JU.Logger.info(this.adapterModelCount + " model" + (this.ms.mc == 1 ? "" : "s") + " in this collection. Use getProperty \"modelInfo\" or" + " getProperty \"auxiliaryInfo\" to inspect them."); +}var q = this.ms.getInfoM("defaultOrientationQuaternion"); +if (q != null) { +JU.Logger.info("defaultOrientationQuaternion = " + q); +JU.Logger.info("Use \"set autoLoadOrientation TRUE\" before loading or \"restore orientation DEFAULT\" after loading to view this orientation."); +}this.iterateOverAllNewModels(adapter, asc); +var iterBond = adapter.getBondIterator(asc); +var haveBonds = (iterBond != null); +this.iterateOverAllNewAtoms(adapter, asc, haveBonds); +var mad = this.vwr.getMadBond(); +if (haveBonds) { +this.ms.defaultCovalentMad = (this.jmolData == null ? mad : 0); +this.iterateOverAllNewBonds(iterBond); +}this.ms.defaultCovalentMad = mad; +if (this.merging && !this.appendNew) { +var info = adapter.getAtomSetAuxiliaryInfo(asc, 0); +this.ms.setInfo(this.baseModelIndex, "initialAtomCount", info.get("initialAtomCount")); +this.ms.setInfo(this.baseModelIndex, "initialBondCount", info.get("initialBondCount")); +}this.initializeUnitCellAndSymmetry(); +this.initializeBonding(); +}this.finalizeGroupBuild(); +if (this.is2D && this.doMinimize) { +this.setupMinimization(); +}if (this.doAddPDBHydrogens) this.jbr.finalizeHydrogens(); +if (adapter != null) { +this.ms.calculatePolymers(this.groups, this.groupCount, this.baseGroupIndex, null); +if (this.jbr != null) this.jbr.iterateOverAllNewStructures(adapter, asc); +}this.setDefaultRendering(this.vwr.getInt(553648170)); +var rd = this.vwr.rd; +var ac = this.ms.ac; +var atoms = this.ms.at; +for (var i = this.baseAtomIndex; i < ac; i++) atoms[i].setMadAtom(this.vwr, rd); + +var models = this.ms.am; +for (var i = models[this.baseModelIndex].firstAtomIndex; i < ac; i++) if (atoms[i] != null) models[atoms[i].mi].bsAtoms.set(i); + +this.freeze(); +this.finalizeShapes(); +this.vwr.setModelSet(this.ms); +this.setAtomProperties(); +if (adapter != null) adapter.finish(asc); +if (this.modelSet0 != null) { +this.modelSet0.releaseModelSet(); +}this.modelSet0 = null; +}, "J.api.JmolAdapter,~O,JU.BS"); +Clazz_defineMethod(c$, "mergeTrajAndVib", +function(oldSet, newSet){ +this.baseModelCount = oldSet.mc; +this.baseTrajectoryCount = 0; +if (oldSet.trajectory == null) { +if (this.isTrajectory) this.newTrajectory(oldSet, new JU.Lst()); +}if (oldSet.trajectory == null || oldSet.mc == 0) return; +this.baseTrajectoryCount = oldSet.mc; +var n = oldSet.trajectory.steps.size(); +for (var i = n; i < this.baseTrajectoryCount; i++) oldSet.trajectory.steps.addLast(null); + +if (this.isTrajectory) { +if (oldSet.vibrationSteps == null) { +oldSet.vibrationSteps = new JU.Lst(); +for (var i = n; --i >= 0; ) oldSet.vibrationSteps.addLast(null); + +}n = newSet.trajectory.steps.size(); +for (var i = 0; i < n; i++) { +oldSet.trajectory.steps.addLast(newSet.trajectory.steps.get(i)); +oldSet.vibrationSteps.addLast(newSet.vibrationSteps == null ? null : newSet.vibrationSteps.get(i)); +} +} else { +newSet.trajectory = this.newTrajectory(newSet, null); +}newSet.vibrationSteps = oldSet.vibrationSteps; +newSet.trajectory.steps = oldSet.trajectory.steps; +oldSet.trajectory = null; +}, "JM.ModelSet,JM.ModelSet"); +Clazz_defineMethod(c$, "setDefaultRendering", +function(maxAtoms){ +if (this.isPyMOLsession) return; +var sb = new JU.SB(); +var modelCount = this.ms.mc; +var models = this.ms.am; +for (var i = this.baseModelIndex; i < modelCount; i++) if (models[i].isBioModel) (models[i]).getDefaultLargePDBRendering(sb, maxAtoms); + +if (sb.length() == 0) return; +sb.append("select *;"); +var script = this.ms.getInfoM("jmolscript"); +if (script == null) script = ""; +sb.append(script); +this.ms.msInfo.put("jmolscript", sb.toString()); +}, "~N"); +Clazz_defineMethod(c$, "setAtomProperties", +function(){ +var modelCount = this.ms.mc; +for (var i = this.baseModelIndex; i < modelCount; i++) { +var atomProperties = this.ms.getInfo(i, "atomProperties"); +if (this.jmolData != null) this.addJmolDataProperties(this.ms.am[i], this.ms.getInfo(i, "jmolDataProperties")); +var groupList = this.ms.getInfo(i, "groupPropertyList"); +if (this.ms.am[i].isBioModel && this.ms.getInfo(i, "dssr") != null) this.vwr.getAnnotationParser(true).setGroup1(this.ms, i); +if (atomProperties == null) continue; +for (var entry, $entry = atomProperties.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var value = entry.getValue(); +var bs = this.ms.getModelAtomBitSetIncludingDeleted(i, true); +if (this.doAddPDBHydrogens) { +var isGroup = (groupList != null && JU.PT.isOneOf(key, groupList)); +value = this.jbr.fixPropertyValue(bs, value, isGroup); +}key = "property_" + key.toLowerCase(); +JU.Logger.info("creating " + key + " for model " + this.ms.getModelName(i)); +this.vwr.setData(key, Clazz_newArray(-1, [key, value, bs, Integer.$valueOf(-1), Boolean.FALSE, entry]), this.ms.ac, 0, 0, 2147483647, 0); +} +this.ms.setInfo(i, "atomProperties", null); +} +}); +Clazz_defineMethod(c$, "initializeAtomBondModelCounts", +function(nAtoms){ +var trajectoryCount = this.adapterTrajectoryCount; +if (this.merging) { +if (this.appendNew) { +this.baseModelIndex = this.baseModelCount; +this.ms.mc = this.baseModelCount + this.adapterModelCount; +} else { +this.baseModelIndex = (this.appendToModelIndex == null ? this.vwr.am.cmi : this.appendToModelIndex.intValue()); +if (this.baseModelIndex < 0 || this.baseModelIndex >= this.baseModelCount) this.baseModelIndex = this.baseModelCount - 1; +this.ms.mc = this.baseModelCount; +}this.ms.ac = this.baseAtomIndex = this.modelSet0.ac; +this.ms.bondCount = this.modelSet0.bondCount; +this.$mergeGroups = this.modelSet0.getGroups(); +this.groupCount = this.baseGroupIndex = this.$mergeGroups.length; +this.ms.mergeModelArrays(this.modelSet0); +this.ms.growAtomArrays(this.ms.ac + nAtoms); +} else { +this.ms.mc = this.adapterModelCount; +this.ms.ac = 0; +this.ms.bondCount = 0; +this.ms.at = new Array(nAtoms); +this.ms.bo = new Array(250 + nAtoms); +}if (this.doAddPDBHydrogens) this.jbr.initializeHydrogenAddition(); +if (trajectoryCount > 1) this.ms.mc += trajectoryCount - 1; +this.ms.am = JU.AU.arrayCopyObject(this.ms.am, this.ms.mc); +this.ms.modelFileNumbers = JU.AU.arrayCopyI(this.ms.modelFileNumbers, this.ms.mc); +this.ms.modelNumbers = JU.AU.arrayCopyI(this.ms.modelNumbers, this.ms.mc); +this.ms.modelNumbersForAtomLabel = JU.AU.arrayCopyS(this.ms.modelNumbersForAtomLabel, this.ms.mc); +this.ms.modelNames = JU.AU.arrayCopyS(this.ms.modelNames, this.ms.mc); +this.ms.frameTitles = JU.AU.arrayCopyS(this.ms.frameTitles, this.ms.mc); +if (this.merging) for (var i = 0; i < this.modelSet0.mc; i++) (this.ms.am[i] = this.modelSet0.am[i]).ms = this.ms; + +}, "~N"); +Clazz_defineMethod(c$, "mergeGroups", +function(){ +var info = this.modelSet0.getModelSetAuxiliaryInfo(null); +var mergeGroup3Lists = info.get("group3Lists"); +var mergeGroup3Counts = info.get("group3Counts"); +var nLists = (mergeGroup3Lists == null ? 0 : mergeGroup3Lists.length); +if (mergeGroup3Lists != null) { +for (var i = 0; i < this.baseModelCount; i++) { +if (i < nLists) { +this.group3Lists[i + 1] = mergeGroup3Lists[i + 1]; +this.group3Counts[i + 1] = mergeGroup3Counts[i + 1]; +}this.structuresDefinedInFile.set(i); +} +this.group3Lists[0] = mergeGroup3Lists[0]; +this.group3Counts[0] = mergeGroup3Counts[0]; +}if (!this.appendNew && this.ms.haveBioModels) this.structuresDefinedInFile.clear(this.baseModelIndex); +}); +Clazz_defineMethod(c$, "iterateOverAllNewModels", +function(adapter, asc){ +this.group3Lists = new Array(this.ms.mc + 1); +this.group3Counts = JU.AU.newInt2(this.ms.mc + 1); +this.structuresDefinedInFile = new JU.BS(); +if (this.merging) this.mergeGroups(); +var iTrajectory = (this.isTrajectory ? this.baseTrajectoryCount : -1); +var ipt = this.baseModelIndex; +for (var i = 0; i < this.adapterModelCount; ++i, ++ipt) { +var modelNumber = adapter.getAtomSetNumber(asc, i); +var modelName = adapter.getAtomSetName(asc, i); +var modelAuxiliaryInfo = adapter.getAtomSetAuxiliaryInfo(asc, i); +if (modelAuxiliaryInfo.containsKey("modelID")) modelAuxiliaryInfo.put("modelID0", modelAuxiliaryInfo.get("modelID")); +var modelProperties = modelAuxiliaryInfo.get("modelProperties"); +if (!this.merging || this.appendNew) { +var ftype = modelAuxiliaryInfo.get("fileType"); +this.vwr.setStringProperty("_fileType", ftype); +this.vwr.fm.setFileType(ftype); +}if (modelName == null) modelName = (this.jmolData != null && this.jmolData.indexOf(";") > 2 ? this.jmolData.substring(this.jmolData.indexOf(":") + 2, this.jmolData.indexOf(";")) : this.appendNew ? "" + (modelNumber % 1000000) : ""); +this.setModelNameNumberProperties(ipt, iTrajectory, modelName, modelNumber, modelProperties, modelAuxiliaryInfo, this.jmolData); +} +var m = this.ms.am[this.appendToModelIndex == null ? this.baseModelIndex : this.ms.mc - 1]; +this.vwr.setSmilesString(this.ms.msInfo.get("smilesString")); +var loadState = this.ms.msInfo.remove("loadState"); +var loadScript = this.ms.msInfo.remove("loadScript"); +if (loadScript.indexOf("Viewer.AddHydrogens") < 0 || !m.isModelKit) { +var lines = JU.PT.split(loadState, "\n"); +var sb = new JU.SB(); +for (var i = 0; i < lines.length; i++) { +var pt = m.loadState.indexOf(lines[i]); +if (pt < 0 || pt != m.loadState.lastIndexOf(lines[i])) sb.append(lines[i]).appendC('\n'); +} +m.loadState += m.loadScript.toString() + sb.toString(); +m.loadScript = new JU.SB(); +if (loadScript.indexOf("load append ") >= 0 || loadScript.indexOf("data \"append ") >= 0) { +loadScript.insert(0, ";var anew = appendNew;"); +loadScript.append(";set appendNew anew"); +}m.loadScript.append(" ").appendSB(loadScript).append(";\n"); +}if (this.isTrajectory) { +var n = (this.ms.mc - ipt + 1); +JU.Logger.info(n + " trajectory steps read"); +this.ms.setInfo(this.baseModelCount, "trajectoryStepCount", Integer.$valueOf(n)); +for (var ia = this.adapterModelCount, i = ipt; i < this.ms.mc; i++, ia++) { +this.ms.am[i] = this.ms.am[this.baseModelCount]; +this.ms.modelNumbers[i] = adapter.getAtomSetNumber(asc, ia); +this.ms.modelNames[i] = adapter.getAtomSetName(asc, ia); +this.structuresDefinedInFile.set(i); +} +}this.finalizeModels(this.baseModelCount); +}, "J.api.JmolAdapter,~O"); +Clazz_defineMethod(c$, "setModelNameNumberProperties", +function(modelIndex, trajectoryBaseIndex, modelName, modelNumber, modelProperties, modelAuxiliaryInfo, jmolData){ +if (this.appendNew) { +var modelIsPDB = (modelAuxiliaryInfo != null && Boolean.TRUE === modelAuxiliaryInfo.get(JV.JC.getBoolName(4))); +this.ms.am[modelIndex] = (modelIsPDB ? this.jbr.getBioModel(modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo) : new JM.Model().set(this.ms, modelIndex, trajectoryBaseIndex, jmolData, modelProperties, modelAuxiliaryInfo)); +this.ms.modelNumbers[modelIndex] = modelNumber; +this.ms.modelNames[modelIndex] = modelName; +if (modelIsPDB) this.jbr.setGroupLists(modelIndex); +} else { +var atomInfo = modelAuxiliaryInfo.get("PDB_CONECT_firstAtom_count_max"); +if (atomInfo != null) this.ms.setInfo(modelIndex, "PDB_CONECT_firstAtom_count_max", atomInfo); +}var models = this.ms.am; +var atoms = this.ms.at; +models[modelIndex].bsAtoms.set(atoms.length + 1); +models[modelIndex].bsAtoms.clear(atoms.length + 1); +var codes = this.ms.getInfo(modelIndex, "altLocs"); +models[modelIndex].altLocCount = (codes == null ? 0 : codes.length); +if (codes != null) { +var altlocs = codes.toCharArray(); +java.util.Arrays.sort(altlocs); +codes = String.valueOf(altlocs); +this.ms.setInfo(modelIndex, "altLocs", codes); +}codes = this.ms.getInfo(modelIndex, "insertionCodes"); +models[modelIndex].insertionCount = (codes == null ? 0 : codes.length); +var isModelKit = (this.ms.modelSetName != null && this.ms.modelSetName.startsWith("Jmol Model Kit") || modelName.startsWith("Jmol Model Kit") || "Jme".equals(this.ms.getInfo(modelIndex, "fileType")) && this.is2D); +models[modelIndex].isModelKit = isModelKit; +}, "~N,~N,~S,~N,java.util.Properties,java.util.Map,~S"); +Clazz_defineMethod(c$, "finalizeModels", +function(baseModelCount){ +var modelCount = this.ms.mc; +if (modelCount == baseModelCount) return; +var sNum; +var modelnumber = 0; +var lastfilenumber = -1; +var modelNumbers = this.ms.modelNumbers; +var modelNames = this.ms.modelNames; +if (this.isTrajectory) for (var i = baseModelCount; ++i < this.ms.mc; ) modelNumbers[i] = modelNumbers[i - 1] + 1; + +if (baseModelCount > 0) { +if (modelNumbers[0] < 1000000) { +for (var i = 0; i < baseModelCount; i++) { +if (modelNames[i].length == 0) modelNames[i] = "" + modelNumbers[i]; +modelNumbers[i] += 1000000; +this.ms.modelNumbersForAtomLabel[i] = "1." + (i + 1); +} +}var filenumber = modelNumbers[baseModelCount - 1]; +filenumber -= filenumber % 1000000; +if (modelNumbers[baseModelCount] < 1000000) filenumber += 1000000; +for (var i = baseModelCount; i < modelCount; i++) modelNumbers[i] += filenumber; + +}var models = this.ms.am; +for (var i = baseModelCount; i < modelCount; ++i) { +this.ms.setInfo(i, "fileType", this.ms.modelSetTypeName); +if (this.fileHeader != null) this.ms.setInfo(i, "fileHeader", this.fileHeader); +var filenumber = Clazz_doubleToInt(modelNumbers[i] / 1000000); +if (filenumber != lastfilenumber) { +modelnumber = 0; +lastfilenumber = filenumber; +}modelnumber++; +if (filenumber == 0) { +sNum = "" + this.ms.getModelNumber(i); +filenumber = 1; +} else { +sNum = filenumber + "." + modelnumber; +}this.ms.modelNumbersForAtomLabel[i] = sNum; +models[i].fileIndex = filenumber - 1; +this.ms.modelFileNumbers[i] = filenumber * 1000000 + modelnumber; +if (modelNames[i] == null || modelNames[i].length == 0) modelNames[i] = sNum; +} +if (this.merging) for (var i = 0; i < baseModelCount; i++) models[i].ms = this.ms; + +for (var i = 0; i < modelCount; i++) { +this.ms.setInfo(i, "modelName", modelNames[i]); +this.ms.setInfo(i, "modelNumber", Integer.$valueOf(modelNumbers[i] % 1000000)); +this.ms.setInfo(i, "modelFileNumber", Integer.$valueOf(this.ms.modelFileNumbers[i])); +this.ms.setInfo(i, "modelNumberDotted", this.ms.getModelNumberDotted(i)); +var codes = this.ms.getInfo(i, "altLocs"); +if (codes != null) { +JU.Logger.info("model " + this.ms.getModelNumberDotted(i) + " alternative locations: " + codes); +}} +}, "~N"); +Clazz_defineMethod(c$, "iterateOverAllNewAtoms", +function(adapter, asc, haveBonds){ +var iLast = -1; +var siteBase = 0; +var isPdbThisModel = false; +var addH = false; +var isLegacyHAddition = false; +var iterAtom = adapter.getAtomIterator(asc); +var nAtoms = adapter.getAtomCount(asc, -1); +this.ms.setCapacity(adapter.getAtomCount(asc, -1)); +var nRead = 0; +var models = this.ms.am; +if (this.ms.mc > 0) this.nullGroup = new JM.Group().setGroup( new JM.Chain(this.ms.am[this.baseModelIndex], 32, 0), "", 0, -1, -1); +while (iterAtom.hasNext()) { +nRead++; +var modelIndex = iterAtom.getAtomSetIndex() + this.baseModelIndex; +if (modelIndex != iLast) { +this.iChain = 0; +this.iModel = modelIndex; +this.model = models[modelIndex]; +var mbs = this.model.bsAtoms; +if (this.merging && !this.appendNew && this.vwr.getOperativeSymmetry() != null) { +siteBase = this.getAtomSiteBase(mbs); +}this.currentChainID = 2147483647; +this.isNewChain = true; +mbs.set(this.ms.ac + nAtoms); +mbs.clearAll(); +this.model.isOrderly = (this.appendToModelIndex == null); +isPdbThisModel = this.model.isBioModel; +iLast = modelIndex; +addH = isPdbThisModel && this.doAddPDBHydrogens; +if (this.jbr != null) this.jbr.setHaveHsAlready(false); +}var group3 = iterAtom.getGroup3(); +var chainID = iterAtom.getChainID(); +this.checkNewGroup(adapter, chainID, group3, iterAtom.getSequenceNumber(), iterAtom.getInsertionCode(), addH, isLegacyHAddition); +var isotope = iterAtom.getElementNumber(); +if (addH && JU.Elements.getElementNumber(isotope) == 1) this.jbr.setHaveHsAlready(true); +var name = iterAtom.getAtomName(); +var charge = (addH ? this.getPdbCharge(group3, name) : iterAtom.getFormalCharge()); +var atom = this.addAtom(isPdbThisModel, iterAtom.getSymmetry(), iterAtom.getAtomSite() + siteBase, isotope, name, charge, iterAtom.getPartialCharge(), iterAtom.getTensors(), iterAtom.getOccupancy(), iterAtom.getBfactor(), iterAtom.getXYZ(), iterAtom.getIsHetero(), iterAtom.getSerial(), iterAtom.getSeqID(), group3, iterAtom.getVib(), iterAtom.getAltLoc(), iterAtom.getRadius(), iterAtom.getBondRadius()); +if (haveBonds) this.htAtomMap.put(iterAtom.getUniqueID(), atom); +} +if (this.groupCount > 0 && addH) { +this.jbr.addImplicitHydrogenAtoms(adapter, this.groupCount - 1, this.isNewChain && !isLegacyHAddition ? 1 : 0); +}iLast = -1; +var vdwtypeLast = null; +var atoms = this.ms.at; +models[0].firstAtomIndex = 0; +for (var i = 0; i < this.ms.ac; i++) { +if (atoms[i] != null && atoms[i].mi > iLast) { +iLast = atoms[i].mi; +var m = models[iLast]; +m.firstAtomIndex = i; +m.isOrderly = (m.act == m.bsAtoms.length() - i); +var vdwtype = this.ms.getDefaultVdwType(iLast); +if (vdwtype !== vdwtypeLast) { +JU.Logger.info("Default Van der Waals type for model" + " set to " + vdwtype.getVdwLabel()); +vdwtypeLast = vdwtype; +}}} +JU.Logger.info(nRead + " atoms created"); +}, "J.api.JmolAdapter,~O,~B"); +Clazz_defineMethod(c$, "getAtomSiteBase", +function(mbs){ +var base = 0; +for (var i = mbs.nextSetBit(0); i >= 0; i = mbs.nextSetBit(i + 1)) { +var a = this.ms.at[i]; +if (!JM.AtomCollection.isDeleted(a) && a.atomSite > base) { +base = a.atomSite; +}} +return base; +}, "JU.BS"); +Clazz_defineMethod(c$, "addJmolDataProperties", +function(m, jmolDataProperties){ +if (jmolDataProperties == null) return; +var bs = m.bsAtoms; +var nAtoms = bs.cardinality(); +for (var e, $e = jmolDataProperties.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +var data = e.getValue(); +if (data.length != nAtoms) return; +var tok = (key.startsWith("property_") ? 1715472409 : JS.T.getTokFromName(key)); +switch (tok) { +default: +if (JS.T.tokAttr(tok, 2048)) { +this.vwr.setAtomProperty(bs, tok, 0, 0, null, data, null); +break; +}case 1111492629: +case 1111492630: +case 1111492631: +key = "property_" + key; +tok = 1715472409; +case 1715472409: +this.vwr.setData(key, Clazz_newArray(-1, [key, data, bs, Integer.$valueOf(1)]), 0, 0, 0, 0, 0); +} +} +}, "JM.Model,java.util.Map"); +Clazz_defineMethod(c$, "getPdbCharge", +function(group3, name){ +return (group3.equals("ARG") && name.equals("NH1") || group3.equals("LYS") && name.equals("NZ") || group3.equals("HIS") && name.equals("ND1") ? 1 : 0); +}, "~S,~S"); +Clazz_defineMethod(c$, "addAtom", +function(isPDB, atomSymmetry, atomSite, atomicAndIsotopeNumber, atomName, formalCharge, partialCharge, tensors, occupancy, bfactor, xyz, isHetero, atomSerial, atomSeqID, group3, vib, alternateLocationID, radius, bondRadius){ +var specialAtomID = 0; +var atomType = null; +if (atomName != null) { +var i; +if ((i = atomName.indexOf('\0')) >= 0) { +atomType = atomName.substring(i + 1); +atomName = atomName.substring(0, i); +}if (isPDB) { +if (atomName.indexOf('*') >= 0) atomName = atomName.$replace('*', '\''); +specialAtomID = this.vwr.getJBR().lookupSpecialAtomID(atomName); +if (specialAtomID == 2 && "CA".equalsIgnoreCase(group3)) specialAtomID = 0; +}}var atom = this.ms.addAtom(this.iModel, this.nullGroup, atomicAndIsotopeNumber, atomName, atomType, atomSerial, atomSeqID, atomSite, xyz, radius, vib, formalCharge, partialCharge, occupancy, bfactor, tensors, isHetero, specialAtomID, atomSymmetry, bondRadius); +atom.altloc = alternateLocationID; +return atom; +}, "~B,JU.BS,~N,~N,~S,~N,~N,JU.Lst,~N,~N,JU.P3,~B,~N,~N,~S,JU.V3,~S,~N,~N"); +Clazz_defineMethod(c$, "checkNewGroup", +function(adapter, chainID, group3, groupSequenceNumber, groupInsertionCode, addH, isLegacyHAddition){ +if (chainID != this.currentChainID) { +this.currentChainID = chainID; +this.currentChain = this.getOrAllocateChain(this.model, chainID); +this.currentGroupInsertionCode = '\uFFFF'; +this.currentGroupSequenceNumber = -1; +this.currentGroup3 = "xxxx"; +this.isNewChain = true; +}var group3i = (group3 == null ? null : group3.intern()); +if (groupSequenceNumber != this.currentGroupSequenceNumber || groupInsertionCode != this.currentGroupInsertionCode || group3i !== this.currentGroup3) { +if (this.groupCount > 0 && addH) { +this.jbr.addImplicitHydrogenAtoms(adapter, this.groupCount - 1, this.isNewChain && !isLegacyHAddition ? 1 : 0); +this.jbr.setHaveHsAlready(false); +}this.currentGroupSequenceNumber = groupSequenceNumber; +this.currentGroupInsertionCode = groupInsertionCode; +this.currentGroup3 = group3i; +while (this.groupCount >= this.group3Of.length) { +this.chainOf = JU.AU.doubleLength(this.chainOf); +this.group3Of = JU.AU.doubleLengthS(this.group3Of); +this.seqcodes = JU.AU.doubleLengthI(this.seqcodes); +this.firstAtomIndexes = JU.AU.doubleLengthI(this.firstAtomIndexes); +} +this.firstAtomIndexes[this.groupCount] = this.ms.ac; +this.chainOf[this.groupCount] = this.currentChain; +this.group3Of[this.groupCount] = group3; +this.seqcodes[this.groupCount] = JM.Group.getSeqcodeFor(groupSequenceNumber, groupInsertionCode); +++this.groupCount; +}}, "J.api.JmolAdapter,~N,~S,~N,~S,~B,~B"); +Clazz_defineMethod(c$, "getOrAllocateChain", +function(model, chainID){ +var chain = model.getChain(chainID); +if (chain != null) return chain; +if (model.chainCount == model.chains.length) model.chains = (model.chainCount == 0 ? new Array(2) : JU.AU.doubleLength(model.chains)); +return model.chains[model.chainCount++] = new JM.Chain(model, chainID, (chainID == 0 || chainID == 32 ? 0 : ++this.iChain)); +}, "JM.Model,~N"); +Clazz_defineMethod(c$, "iterateOverAllNewBonds", +function(iterBond){ +var force1 = this.isMutate && !this.vwr.getBoolean(603979894); +var haveMultipleBonds = false; +while (iterBond.hasNext()) { +var iOrder = iterBond.getEncodedOrder(); +var order = (force1 ? 1 : iOrder); +var b = this.bondAtoms(iterBond.getAtomUniqueID1(), iterBond.getAtomUniqueID2(), order); +if (b != null) { +if (order > 1 && order != 1025 && order != 1041) haveMultipleBonds = true; +var radius = iterBond.getRadius(); +if (radius > 0) b.setMad(Clazz_floatToShort(radius * 2000)); +var colix = iterBond.getColix(); +if (colix >= 0) b.colix = colix; +b.order |= (iOrder & 98304); +}} +if (haveMultipleBonds && this.ms.someModelsHaveSymmetry && !this.vwr.getBoolean(603979794)) JU.Logger.info("ModelSet: use \"set appletSymmetryToBonds TRUE \" to apply the file-based multiple bonds to symmetry-generated atoms."); +}, "J.api.JmolAdapterBondIterator"); +Clazz_defineMethod(c$, "bondAtoms", +function(atomUid1, atomUid2, order){ +var atom1 = this.htAtomMap.get(atomUid1); +if (atom1 == null) { +JU.Logger.error("bondAtoms cannot find atomUid1?:" + atomUid1); +return null; +}var atom2 = this.htAtomMap.get(atomUid2); +if (atom2 == null) { +JU.Logger.error("bondAtoms cannot find atomUid2?:" + atomUid2); +return null; +}if (atom1.isBonded(atom2)) return null; +var isNear = (order == 1025); +var isFar = (order == 1041); +var bond; +if (isNear || isFar) { +var m = atom1.getModelIndex(); +if (m != this.lastModel) { +this.lastModel = m; +var info = this.ms.getModelAuxiliaryInfo(m); +this.isMOL2D = (this.is2D || info != null && "2D".equals(info.get("dimension"))); +}bond = this.ms.bondMutually(atom1, atom2, (this.isMOL2D ? order : 513), this.ms.getDefaultMadFromOrder(1), 0); +if (this.isMOL2D) { +if (this.vStereo == null) { +this.vStereo = new JU.Lst(); +}this.vStereo.addLast(bond); +}} else { +bond = this.ms.bondMutually(atom1, atom2, order, this.ms.getDefaultMadFromOrder(order), 0); +if (bond.isAromatic()) { +this.ms.someModelsHaveAromaticBonds = true; +}}if (this.ms.bondCount == this.ms.bo.length) { +this.ms.bo = JU.AU.arrayCopyObject(this.ms.bo, this.ms.bondCount + 250); +}this.ms.setBond(this.ms.bondCount++, bond); +return bond; +}, "~O,~O,~N"); +Clazz_defineMethod(c$, "initializeUnitCellAndSymmetry", +function(){ +if (this.someModelsAreModulated && this.ms.bsModulated == null) this.ms.bsModulated = new JU.BS(); +var haveMergeCells = (this.modelSet0 != null && this.modelSet0.unitCells != null); +if (this.someModelsHaveUnitcells || haveMergeCells) { +this.ms.unitCells = new Array(this.ms.mc); +this.ms.haveUnitCells = true; +for (var i = 0, pt = 0; i < this.ms.mc; i++) { +if (haveMergeCells && i < this.baseModelCount) { +this.ms.unitCells[i] = this.modelSet0.unitCells[i]; +} else if (this.ms.getModelAuxiliaryInfo(i).get("spaceGroupIndex") != null) { +this.ms.unitCells[i] = J.api.Interface.getSymmetry(this.vwr, "file"); +var notionalCell = null; +if (this.isTrajectory) { +var lst = this.ms.getInfoM("unitCells"); +if (lst != null) notionalCell = lst.get(pt++); +}(this.ms.unitCells[i]).setSymmetryInfoFromFile(this.ms, i, notionalCell); +}} +}if (this.appendNew && this.ms.someModelsHaveSymmetry) { +this.ms.getAtoms(1088421903, null); +var atoms = this.ms.at; +for (var iAtom = this.baseAtomIndex, iModel = -1, i0 = 0; iAtom < this.ms.ac; iAtom++) { +if (atoms[iAtom].mi != iModel) { +iModel = atoms[iAtom].mi; +i0 = this.baseAtomIndex + this.ms.getInfoI(iModel, "presymmetryAtomIndex"); +if (i0 < 0) break; +var n = this.ms.getInfoI(iModel, "presymmetryAtomCount"); +this.ms.am[iModel].auxiliaryInfo.put("presymmetryAtomIndex", Integer.$valueOf(i0)); +this.ms.setInfo(iModel, "asymmetricUnit", this.ms.am[iModel].bsAsymmetricUnit = JU.BSUtil.newBitSet2(i0, i0 + n)); +i0 += n; +}if (iAtom >= i0) this.ms.bsSymmetry.set(iAtom); +} +}if (this.appendNew && this.ms.someModelsHaveFractionalCoordinates) { +var atoms = this.ms.at; +var modelIndex = -1; +var c = null; +var isFractional = false; +for (var i = this.baseAtomIndex; i < this.ms.ac; i++) { +if (atoms[i].mi != modelIndex) { +modelIndex = atoms[i].mi; +c = this.ms.getUnitCell(modelIndex); +isFractional = (c != null && c.getCoordinatesAreFractional()); +}if (isFractional) { +var m = this.ms.getModulation(i); +var uca = (m == null ? c : atoms[i].getUnitCell()); +uca.toCartesian(uca.toSupercell(atoms[i]), false); +}} +for (var imodel = this.baseModelIndex; imodel < this.ms.mc; imodel++) if (this.ms.isTrajectory(imodel)) this.ms.trajectory.setUnitCell(imodel); + +}}); +Clazz_defineMethod(c$, "initializeBonding", +function(){ +var modelCount = this.ms.mc; +var models = this.ms.am; +var modelAtomCount = 0; +var bsExclude = this.ms.getInfoM("bsExcludeBonding"); +if (bsExclude == null) { +bsExclude = (this.ms.getInfoM(JV.JC.getBoolName(3)) == null ? null : new JU.BS()); +if (bsExclude != null) this.ms.setPdbConectBonding(this.baseAtomIndex, this.baseModelIndex, bsExclude); +}var symmetryAlreadyAppliedToBonds = this.vwr.getBoolean(603979794); +var doAutoBond = this.vwr.getBoolean(603979798); +var forceAutoBond = this.vwr.getBoolean(603979848); +var bs = null; +var autoBonding = false; +if (!this.noAutoBond) for (var i = this.baseModelIndex; i < modelCount; i++) { +modelAtomCount = models[i].bsAtoms.cardinality(); +var modelBondCount = this.ms.getInfoI(i, "initialBondCount"); +var modelIsPDB = models[i].isBioModel; +if (modelBondCount < 0) { +modelBondCount = this.ms.bondCount; +}var doBond = (forceAutoBond || doAutoBond && (modelBondCount == 0 || modelIsPDB && this.jmolData == null && (this.ms.getMSInfoB("havePDBHeaderName") || modelBondCount < Clazz_doubleToInt(modelAtomCount / 2)) || this.ms.getInfoB(i, "hasSymmetry") && !symmetryAlreadyAppliedToBonds && !this.ms.getInfoB(i, "hasBonds"))); +if (!doBond) continue; +autoBonding = true; +if (this.merging || modelCount > 1) { +if (bs == null) bs = JU.BS.newN(this.ms.ac); +if (i == this.baseModelIndex || !this.isTrajectory) bs.or(models[i].bsAtoms); +}} +if (this.modulationOn) this.ms.setModulation(null, true, this.modulationTUV, false); +if (autoBonding) { +this.ms.autoBondBs4(bs, bs, bsExclude, null, this.ms.defaultCovalentMad, this.vwr.getBoolean(603979872), null); +JU.Logger.info("ModelSet: autobonding; use autobond=false to not generate bonds automatically"); +} else { +JU.Logger.info("ModelSet: not autobonding; use forceAutobond=true to force automatic bond creation"); +}}); +Clazz_defineMethod(c$, "finalizeGroupBuild", +function(){ +this.groups = new Array(this.groupCount); +if (this.merging) for (var i = 0; i < this.$mergeGroups.length; i++) (this.groups[i] = this.$mergeGroups[i]).chain.model.ms = this.ms; + +for (var i = this.baseGroupIndex; i < this.groupCount; ++i) this.distinguishAndPropagateGroup(i, this.chainOf[i], this.group3Of[i], this.seqcodes[i], this.firstAtomIndexes[i], (i == this.groupCount - 1 ? this.ms.ac : this.firstAtomIndexes[i + 1]) - 1); + +if (this.group3Lists != null) { +this.ms.msInfo.put("group3Lists", this.group3Lists); +this.ms.msInfo.put("group3Counts", this.group3Counts); +for (var i = 0; i < this.group3Counts.length; i++) if (this.group3Counts[i] == null) this.group3Counts[i] = Clazz_newIntArray (0, 0); + +}}); +Clazz_defineMethod(c$, "distinguishAndPropagateGroup", +function(groupIndex, chain, group3, seqcode, firstAtomIndex, lastAtomIndex){ +if (lastAtomIndex < firstAtomIndex) throw new NullPointerException(); +var group = (group3 == null || this.jbr == null ? null : this.jbr.distinguishAndPropagateGroup(chain, group3, seqcode, firstAtomIndex, lastAtomIndex, this.specialAtomIndexes, this.ms.at)); +var key; +if (group == null) { +group = new JM.Group().setGroup(chain, group3, seqcode, firstAtomIndex, lastAtomIndex); +if (this.jbr != null) group.groupID = this.jbr.getGroupID(group3); +key = "o>"; +} else { +key = (group.isProtein() ? "p>" : group.isNucleic() ? "n>" : group.isCarbohydrate() ? "c>" : "o>"); +}if (group3 != null) { +this.countGroup(this.ms.at[firstAtomIndex].mi, key, group3); +if (group.isNucleic()) { +var g1 = (this.htGroup1 == null ? null : this.htGroup1.get(group3)); +if (g1 != null) group.group1 = g1.charAt(0); +}}this.addGroup(chain, group); +this.groups[groupIndex] = group; +group.groupIndex = groupIndex; +for (var i = lastAtomIndex + 1; --i >= firstAtomIndex; ) this.ms.at[i].group = group; + +}, "~N,JM.Chain,~S,~N,~N,~N"); +Clazz_defineMethod(c$, "addGroup", +function(chain, group){ +if (chain.groupCount == chain.groups.length) chain.groups = JU.AU.doubleLength(chain.groups); +chain.groups[chain.groupCount++] = group; +}, "JM.Chain,JM.Group"); +Clazz_defineMethod(c$, "countGroup", +function(modelIndex, code, group3){ +var ptm = modelIndex + 1; +if (this.group3Lists == null || this.group3Lists[ptm] == null) return; +var g3code = (group3 + " ").substring(0, 3); +var pt = this.group3Lists[ptm].indexOf(g3code); +if (pt < 0) { +this.group3Lists[ptm] += ",[" + g3code + "]"; +pt = this.group3Lists[ptm].indexOf(g3code); +this.group3Counts[ptm] = JU.AU.arrayCopyI(this.group3Counts[ptm], this.group3Counts[ptm].length + 10); +}this.group3Counts[ptm][Clazz_doubleToInt(pt / 6)]++; +pt = this.group3Lists[ptm].indexOf(",[" + g3code); +if (pt >= 0) this.group3Lists[ptm] = this.group3Lists[ptm].substring(0, pt) + code + this.group3Lists[ptm].substring(pt + 2); +if (modelIndex >= 0) this.countGroup(-1, code, group3); +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "freeze", +function(){ +this.htAtomMap.clear(); +if (this.ms.ac < this.ms.at.length) this.ms.growAtomArrays(this.ms.ac); +if (this.ms.bondCount < this.ms.bo.length) this.ms.bo = JU.AU.arrayCopyObject(this.ms.bo, this.ms.bondCount); +for (var i = 5; --i > 0; ) { +this.ms.numCached[i] = 0; +var bondsCache = this.ms.freeBonds[i]; +for (var j = bondsCache.length; --j >= 0; ) bondsCache[j] = null; + +} +this.ms.setAtomNamesAndNumbers(0, this.baseAtomIndex, this.modelSet0, false); +this.findElementsPresent(); +this.ms.resetMolecules(); +this.model = null; +this.currentChain = null; +if (!this.ms.haveBioModels || this.isPyMOLsession || this.isMutate) { +this.ms.freezeModels(); +return; +}var asDSSP = this.vwr.getBoolean(603979826); +var ret = this.ms.calculateStructuresAllExcept(this.structuresDefinedInFile, asDSSP, false, true, true, asDSSP, JV.JC.versionInt >= 1405000 && this.ms.getInfoM("DSSP1") == null ? 2 : 1); +if (ret.length > 0) JU.Logger.info(ret); +}); +Clazz_defineMethod(c$, "findElementsPresent", +function(){ +this.ms.elementsPresent = new Array(this.ms.mc); +for (var i = 0; i < this.ms.mc; i++) this.ms.elementsPresent[i] = JU.BS.newN(64); + +for (var i = this.ms.ac; --i >= 0; ) { +var a = this.ms.at[i]; +if (a == null) continue; +var n = a.getAtomicAndIsotopeNumber(); +if (n >= JU.Elements.elementNumberMax) n = JU.Elements.elementNumberMax + JU.Elements.altElementIndexFromNumber(n); +this.ms.elementsPresent[a.mi].set(n); +} +}); +Clazz_defineMethod(c$, "setupMinimization", +function(){ +this.initialize2DMin(); +var v = new JU.V3(); +if (this.vStereo != null) { +out : for (var i = this.vStereo.size(); --i >= 0; ) { +var b = this.vStereo.get(i); +var a1 = b.atom1; +var bonds = a1.bonds; +for (var j = a1.getBondCount(); --j >= 0; ) { +var b2 = bonds[j]; +if (b2 === b) continue; +var a2 = b2.getOtherAtom(a1); +v.sub2(a2, a1); +if (Math.abs(v.x) < 0.1) { +if ((b.order == 1025) == (v.y < 0)) this.stereodir = -1; +break out; +}} +} +}this.set2dZ(v); +if (this.vStereo != null) { +var bsToTest = JU.BSUtil.newBitSet2(this.baseAtomIndex, this.vwr.ms.ac); +for (var i = this.vStereo.size(); --i >= 0; ) { +var b = this.vStereo.get(i); +var dz2 = (b.order == 1025 ? 3 : -3); +b.order = 1; +if (b.atom1.getBondCount() < 6 && b.atom2.z != b.atom1.z && (dz2 < 0) == (b.atom2.z < b.atom1.z)) dz2 /= 3; +var bs = JU.JmolMolecule.getBranchBitSet(this.ms.at, b.atom2.i, bsToTest, null, b.atom1.i, false, true); +bs.set(b.atom2.i); +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) this.ms.at[j].z += dz2; + +b.atom2.x = (b.atom1.x + b.atom2.x) / 2; +b.atom2.y = (b.atom1.y + b.atom2.y) / 2; +} +this.vStereo = null; +}this.is2D = false; +}); +Clazz_defineMethod(c$, "initialize2DMin", +function(){ +var scaling = 0; +var n = 0; +var lastModel = -1; +var i0 = this.baseAtomIndex; +var i1 = this.vwr.ms.ac; +for (var i = i0; i < i1; i++) { +var a = this.ms.at[i]; +var m = a.getModelIndex(); +if (m != lastModel) { +lastModel = m; +this.ms.setInfo(m, "dimension", "3D"); +}var bonds = a.bonds; +if (bonds == null) continue; +for (var j = bonds.length; --j >= 0; ) { +if (bonds[j] == null) continue; +var b = bonds[j].getOtherAtom(a); +if (b.getAtomNumber() != 1 && b.getIndex() > i) { +scaling += b.distance(a); +n++; +}} +} +if (n == 0) return; +scaling = 1.45 / (scaling / n); +for (var i = i0; i < i1; i++) { +this.ms.at[i].scale(scaling); +} +}); +Clazz_defineMethod(c$, "set2dZ", +function(v){ +var iatom1 = this.baseAtomIndex; +var iatom2 = this.vwr.ms.ac; +var atomlist = JU.BS.newN(iatom2); +var bsBranch = new JU.BS(); +var v0 = JU.V3.new3(0, 1, 0); +var v1 = new JU.V3(); +var bs0 = new JU.BS(); +bs0.setBits(iatom1, iatom2); +for (var i = iatom1; i < iatom2; i++) if (!atomlist.get(i) && !bsBranch.get(i)) { +bsBranch = this.getBranch2dZ(i, -1, bs0, bsBranch, v, v0, v1, this.stereodir); +atomlist.or(bsBranch); +} +}, "JU.V3"); +Clazz_defineMethod(c$, "getBranch2dZ", +function(atomIndex, atomIndexNot, bs0, bsBranch, v, v0, v1, dir){ +var bs = JU.BS.newN(this.ms.ac); +if (atomIndex < 0) return bs; +var bsToTest = JU.BSUtil.copy(bs0); +if (atomIndexNot >= 0) bsToTest.clear(atomIndexNot); +JM.ModelLoader.setBranch2dZ(this.ms.at[atomIndex], bs, bsToTest, v, v0, v1, dir); +return bs; +}, "~N,~N,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N"); +c$.setBranch2dZ = Clazz_defineMethod(c$, "setBranch2dZ", +function(atom, bs, bsToTest, v, v0, v1, dir){ +var atomIndex = atom.i; +if (!bsToTest.get(atomIndex)) return; +bsToTest.clear(atomIndex); +bs.set(atomIndex); +if (atom.bonds == null) return; +for (var i = atom.bonds.length; --i >= 0; ) { +var bond = atom.bonds[i]; +if (bond.isHydrogen()) continue; +var atom2 = bond.getOtherAtom(atom); +JM.ModelLoader.setAtom2dZ(atom, atom2, v, v0, v1, dir); +JM.ModelLoader.setBranch2dZ(atom2, bs, bsToTest, v, v0, v1, dir); +} +}, "JM.Atom,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N"); +c$.setAtom2dZ = Clazz_defineMethod(c$, "setAtom2dZ", +function(atomRef, atom2, v, v0, v1, dir){ +v.sub2(atom2, atomRef); +v.z = 0; +v.normalize(); +v1.cross(v0, v); +var theta = Math.acos(v.dot(v0)); +var f = (0.4 * -dir * Math.sin(4 * theta)); +atom2.z = atomRef.z + f; +}, "JM.Atom,JM.Atom,JU.V3,JU.V3,JU.V3,~N"); +Clazz_defineMethod(c$, "finalizeShapes", +function(){ +this.ms.sm = this.vwr.shm; +this.ms.sm.setModelSet(this.ms); +this.ms.setBsHidden(this.vwr.slm.getHiddenSet()); +if (!this.merging) this.ms.sm.resetShapes(false); +this.ms.sm.loadDefaultShapes(this.ms); +if (this.ms.someModelsHaveAromaticBonds && this.vwr.getBoolean(603979944)) this.ms.assignAromaticBondsBs(false, null); +if (this.merging && this.baseModelCount == 1) this.ms.sm.setShapePropertyBs(6, "clearModelIndex", null, null); +}); +Clazz_defineMethod(c$, "undeleteAtom", +function(iAtom){ +this.ms.at[iAtom].valence = 0; +}, "~N"); +c$.createAtomDataSet = Clazz_defineMethod(c$, "createAtomDataSet", +function(vwr, modelSet, tokType, asc, bsSelected){ +if (asc == null) return null; +var adapter = vwr.getModelAdapter(); +var pt = new JU.P3(); +var atoms = modelSet.at; +var tolerance = vwr.getFloat(570425363); +if (modelSet.unitCells != null) for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) if (atoms[i].atomSymmetry != null) { +tolerance = -tolerance; +break; +} +var i = -1; +var n = 0; +var loadAllData = (JU.BSUtil.cardinalityOf(bsSelected) == vwr.ms.ac); +for (var iterAtom = adapter.getAtomIterator(asc); iterAtom.hasNext(); ) { +var xyz = iterAtom.getXYZ(); +if (Float.isNaN(xyz.x + xyz.y + xyz.z)) continue; +if (tokType == 1145047049) { +i = bsSelected.nextSetBit(i + 1); +if (i < 0) break; +n++; +if (JU.Logger.debugging) JU.Logger.debug("atomIndex = " + i + ": " + atoms[i] + " --> (" + xyz.x + "," + xyz.y + "," + xyz.z); +modelSet.setAtomCoord(i, xyz.x, xyz.y, xyz.z); +continue; +}pt.setT(xyz); +var bs = JU.BS.newN(modelSet.ac); +modelSet.getAtomsWithin(tolerance, pt, bs, -1); +bs.and(bsSelected); +if (loadAllData) { +n = JU.BSUtil.cardinalityOf(bs); +if (n == 0) { +JU.Logger.warn("createAtomDataSet: no atom found at position " + pt); +continue; +} else if (n > 1 && JU.Logger.debugging) { +JU.Logger.debug("createAtomDataSet: " + n + " atoms found at position " + pt); +}}switch (tokType) { +case 1145047055: +var vib = iterAtom.getVib(); +if (vib == null) continue; +if (JU.Logger.debugging) JU.Logger.debug("xyz: " + pt + " vib: " + vib); +modelSet.setAtomCoords(bs, 1145047055, vib); +break; +case 1128269825: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getOccupancy(), null, null, null); +break; +case 1111492619: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getPartialCharge(), null, null, null); +break; +case 1111492620: +modelSet.setAtomProperty(bs, tokType, 0, iterAtom.getBfactor(), null, null, null); +break; +} +} +switch (tokType) { +case 1145047055: +var vibName = adapter.getAtomSetName(asc, 0); +JU.Logger.info("_vibrationName = " + vibName); +vwr.setStringProperty("_vibrationName", vibName); +break; +case 1145047049: +JU.Logger.info(n + " atom positions read"); +modelSet.recalculateLeadMidpointsAndWingVectors(-1); +if (n == modelSet.ac) return "boundbox {*};reset"; +break; +} +return null; +}, "JV.Viewer,JM.ModelSet,~N,~O,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.BondCollection"], "JM.ModelSet", ["java.util.Hashtable", "JU.A4", "$.AU", "$.BS", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.bspt.Bspf", "J.c.PAL", "$.VDW", "JM.Atom", "$.AtomIteratorWithinModel", "$.AtomIteratorWithinModelSet", "$.HBond", "$.Model", "$.StateScript", "JS.ScriptCompiler", "JU.BSUtil", "$.BoxInfo", "$.Edge", "$.Elements", "$.Escape", "$.JmolMolecule", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveBioModels = false; +this.bsSymmetry = null; +this.modelSetName = null; +this.am = null; +this.mc = 0; +this.unitCells = null; +this.haveUnitCells = false; +this.closest = null; +this.modelNumbers = null; +this.modelFileNumbers = null; +this.modelNumbersForAtomLabel = null; +this.modelNames = null; +this.frameTitles = null; +this.elementsPresent = null; +this.isXYZ = false; +this.modelSetProperties = null; +this.msInfo = null; +this.someModelsHaveSymmetry = false; +this.someModelsHaveAromaticBonds = false; +this.someModelsHaveFractionalCoordinates = false; +this.isBbcageDefault = false; +this.bboxModels = null; +this.bboxAtoms = null; +this.boxInfo = null; +this.stateScripts = null; +this.thisStateModel = 0; +this.vibrationSteps = null; +this.selectedMolecules = null; +this.showRebondTimes = true; +this.bsAll = null; +this.sm = null; +this.proteinStructureTainted = false; +this.htPeaks = null; +this.vOrientations = null; +this.ptTemp = null; +this.ptTemp1 = null; +this.ptTemp2 = null; +this.matTemp = null; +this.matInv = null; +this.mat4 = null; +this.mat4t = null; +this.vTemp = null; +this.defaultBBox = null; +this.haveJmolDataFrames = false; +this.echoShapeActive = false; +this.modelSetTypeName = null; +this.translations = null; +this.maxBondWarned = false; +Clazz_instantialize(this, arguments);}, JM, "ModelSet", JM.BondCollection); +Clazz_makeConstructor(c$, +function(vwr, name){ +Clazz_superConstructor (this, JM.ModelSet, []); +this.vwr = vwr; +this.modelSetName = name; +this.selectedMolecules = new JU.BS(); +this.stateScripts = new JU.Lst(); +this.boxInfo = new JU.BoxInfo(); +this.boxInfo.addBoundBoxPoint(JU.P3.new3(-10, -10, -10)); +this.boxInfo.addBoundBoxPoint(JU.P3.new3(10, 10, 10)); +this.am = new Array(1); +this.modelNumbers = Clazz_newIntArray (1, 0); +this.modelFileNumbers = Clazz_newIntArray (1, 0); +this.modelNumbersForAtomLabel = new Array(1); +this.modelNames = new Array(1); +this.frameTitles = new Array(1); +this.closest = new Array(1); +this.ptTemp = new JU.P3(); +this.ptTemp1 = new JU.P3(); +this.ptTemp2 = new JU.P3(); +this.matTemp = new JU.M3(); +this.matInv = new JU.M3(); +this.mat4 = new JU.M4(); +this.mat4t = new JU.M4(); +this.vTemp = new JU.V3(); +this.setupBC(); +}, "JV.Viewer,~S"); +Clazz_defineMethod(c$, "getBoxInfo", +function(){ +return this.boxInfo; +}); +Clazz_defineMethod(c$, "releaseModelSet", +function(){ +this.am = null; +this.mc = 0; +this.closest[0] = null; +this.am = null; +this.bsSymmetry = null; +this.bsAll = null; +this.unitCells = null; +this.releaseModelSetBC(); +}); +Clazz_defineMethod(c$, "getEchoStateActive", +function(){ +return this.echoShapeActive; +}); +Clazz_defineMethod(c$, "setEchoStateActive", +function(TF){ +this.echoShapeActive = TF; +}, "~B"); +Clazz_defineMethod(c$, "getModelSetTypeName", +function(){ +return this.modelSetTypeName; +}); +Clazz_defineMethod(c$, "getModelNumberIndex", +function(modelNumber, useModelNumber, doSetTrajectory){ +if (useModelNumber) { +for (var i = 0; i < this.mc; i++) if (this.modelNumbers[i] == modelNumber || modelNumber < 1000000 && this.modelNumbers[i] == 1000000 + modelNumber) return i; + +return -1; +}if (modelNumber < 1000000) return modelNumber; +for (var i = 0; i < this.mc; i++) if (this.modelFileNumbers[i] == modelNumber) { +if (doSetTrajectory && this.isTrajectory(i)) this.setTrajectory(i); +return i; +} +return -1; +}, "~N,~B,~B"); +Clazz_defineMethod(c$, "getModelDataBaseName", +function(bsAtoms){ +for (var i = 0; i < this.mc; i++) { +if (bsAtoms.equals(this.am[i].bsAtoms)) return this.getInfo(i, "dbName"); +} +return null; +}, "JU.BS"); +Clazz_defineMethod(c$, "setTrajectory", +function(modelIndex){ +if (modelIndex >= 0 && this.isTrajectory(modelIndex) && this.at[this.am[modelIndex].firstAtomIndex].mi != modelIndex) this.trajectory.setModel(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "getBitSetTrajectories", +function(){ +return (this.trajectory == null ? null : this.trajectory.getModelsSelected()); +}); +Clazz_defineMethod(c$, "setTrajectoryBs", +function(bsModels){ +if (this.trajectory != null) for (var i = 0; i < this.mc; i++) if (bsModels.get(i)) this.setTrajectory(i); + +}, "JU.BS"); +Clazz_defineMethod(c$, "morphTrajectories", +function(m1, m2, f){ +if (m1 >= 0 && m2 >= 0 && this.isTrajectory(m1) && this.isTrajectory(m2)) this.trajectory.morph(m1, m2, f); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getTranslation", +function(iModel){ +return (this.translations == null || iModel >= this.translations.length ? null : this.translations[iModel]); +}, "~N"); +Clazz_defineMethod(c$, "translateModel", +function(iModel, pt){ +if (pt == null) { +var t = this.getTranslation(iModel); +if (t == null) return; +pt = JU.P3.newP(t); +pt.scale(-1); +this.translateModel(iModel, pt); +this.translations[iModel] = null; +return; +}if (this.translations == null || this.translations.length <= iModel) this.translations = new Array(this.mc); +if (this.translations[iModel] == null) this.translations[iModel] = new JU.P3(); +this.translations[iModel].add(pt); +var bs = this.am[iModel].bsAtoms; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) this.at[i].add(pt); + +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "getFrameOffsets", +function(bsAtoms, isFull){ +if (bsAtoms == null) { +if (isFull) for (var i = this.mc; --i >= 0; ) { +var m = this.am[i]; +if (!m.isJmolDataFrame && !m.isTrajectory) this.translateModel(m.modelIndex, null); +} +return null; +}var i0 = bsAtoms.nextSetBit(0); +if (i0 < 0) return null; +if (isFull) { +var bs = JU.BSUtil.copy(bsAtoms); +var pt = null; +var pdiff = new JU.P3(); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +if (!m.isJmolDataFrame && !m.isTrajectory) { +var j = bs.nextSetBit(0); +if (m.bsAtoms.get(j)) { +if (pt == null) { +pt = JU.P3.newP(this.at[j]); +} else { +pdiff.sub2(pt, this.at[j]); +this.translateModel(i, pdiff); +}}}bs.andNot(m.bsAtoms); +} +return null; +}var offsets = new Array(this.mc); +for (var i = this.mc; --i >= 0; ) offsets[i] = new JU.P3(); + +var lastModel = 0; +var n = 0; +var lastOffset = null; +var asTrajectory = (this.trajectory != null && this.trajectory.steps.size() == this.mc); +var m1 = (asTrajectory ? this.mc : 1); +for (var m = 0; m < m1; m++) { +if (asTrajectory) this.setTrajectory(m); +for (var i = 0; i <= this.ac; i++) { +if (i < this.ac && JM.AtomCollection.isDeleted(this.at[i])) continue; +if (i == this.ac || this.at[i].mi != lastModel) { +if (n > 0) { +lastOffset.scale(-1.0 / n); +if (lastModel != 0) lastOffset.sub(offsets[0]); +n = 0; +}if (i == this.ac) break; +lastModel = this.at[i].mi; +lastOffset = offsets[lastModel]; +}if (!bsAtoms.get(i)) continue; +lastOffset.add(this.at[i]); +n++; +} +} +offsets[0].set(0, 0, 0); +return offsets; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "getAtoms", +function(tokType, specInfo){ +switch (tokType) { +default: +return JU.BSUtil.andNot(this.getAtomBitsMaybeDeleted(tokType, specInfo), this.vwr.slm.bsDeleted); +case 1073742358: +var modelNumber = (specInfo).intValue(); +var modelIndex = this.getModelNumberIndex(modelNumber, true, true); +return (modelIndex < 0 && modelNumber > 0 ? new JU.BS() : this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +case 1275203608: +var data = Clazz_newArray(-1, [null, null, null]); +this.vwr.shm.getShapePropertyData(21, "getCenters", data); +return (data[1] == null ? new JU.BS() : data[1]); +} +}, "~N,~O"); +Clazz_defineMethod(c$, "findNearestAtomIndex", +function(x, y, bsNot, min){ +if (this.ac == 0) return -1; +this.closest[0] = null; +if (this.g3d.isAntialiased()) { +x <<= 1; +y <<= 1; +}this.findNearest2(x, y, this.closest, bsNot, min); +this.sm.findNearestShapeAtomIndex(x, y, this.closest, bsNot); +var closestIndex = (this.closest[0] == null ? -1 : this.closest[0].i); +this.closest[0] = null; +return closestIndex; +}, "~N,~N,JU.BS,~N"); +Clazz_defineMethod(c$, "calculatePointGroup", +function(bsAtoms){ +return this.calculatePointGroupForFirstModel(bsAtoms, false, false, null, 0, 0, null, null, null); +}, "JU.BS"); +Clazz_defineMethod(c$, "getPointGroupInfo", +function(bsAtoms){ +return this.calculatePointGroupForFirstModel(bsAtoms, false, true, null, 0, 0, null, null, null); +}, "JU.BS"); +Clazz_defineMethod(c$, "getPointGroupAsString", +function(bsAtoms, type, index, scale, pts, center, id){ +return this.calculatePointGroupForFirstModel(bsAtoms, true, false, type, index, scale, pts, center, id); +}, "JU.BS,~S,~N,~N,~A,JU.P3,~S"); +Clazz_defineMethod(c$, "calculatePointGroupForFirstModel", +function(bsAtoms, doAll, asInfo, type, index, scale, pts, center, id){ +var pointGroup = this.pointGroup; +var symmetry = J.api.Interface.getSymmetry(this.vwr, "ms"); +var bs = null; +var haveVibration = false; +var isPolyhedron = false; +var localEnvOnly = false; +var isPoints = (pts != null); +var modelIndex = this.vwr.am.cmi; +if (!isPoints) { +var iAtom = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +if (modelIndex < 0 && iAtom >= 0) modelIndex = this.at[iAtom].mi; +if (modelIndex < 0) { +modelIndex = this.vwr.getVisibleFramesBitSet().nextSetBit(0); +bsAtoms = null; +}bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +localEnvOnly = (bsAtoms != null && bs.cardinality() != bsAtoms.cardinality()); +if (bsAtoms != null) bs.and(bsAtoms); +iAtom = bs.nextSetBit(0); +if (iAtom < 0) { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +iAtom = bs.nextSetBit(0); +}var obj = this.vwr.shm.getShapePropertyIndex(18, "mad", iAtom); +haveVibration = (obj != null && (obj).intValue() != 0 || this.vwr.tm.vibrationOn); +isPolyhedron = (type != null && type.toUpperCase().indexOf(":POLY") >= 0); +if (isPolyhedron) { +var data = Clazz_newArray(-1, [Integer.$valueOf(iAtom), null]); +this.vwr.shm.getShapePropertyData(21, "points", data); +pts = data[1]; +if (pts == null) return null; +bs = null; +haveVibration = false; +pointGroup = null; +} else { +pts = this.at; +}}var tp; +if (type != null && (tp = type.indexOf(":")) >= 0) type = type.substring(0, tp); +if (type != null && (tp = type.indexOf(".")) >= 0) { +index = JU.PT.parseInt(type.substring(tp + 1)); +if (index < 0) index = 0; +type = type.substring(0, tp); +}pointGroup = symmetry.setPointGroup(this.vwr, pointGroup, center, pts, bs, haveVibration, (isPoints ? 0 : this.vwr.getFloat(570425382)), this.vwr.getFloat(570425384), (bs == null ? pts.length : bs.cardinality()), localEnvOnly); +if (!isPolyhedron && !isPoints) this.pointGroup = pointGroup; +if (!doAll && !asInfo) return pointGroup.getPointGroupName(); +var ret = pointGroup.getPointGroupInfo(modelIndex, id, asInfo, type, index, scale); +return (asInfo ? ret : (this.mc > 1 ? "frame " + this.getModelNumberDotted(modelIndex) + "; " : "") + ret); +}, "JU.BS,~B,~B,~S,~N,~N,~A,JU.P3,~S"); +Clazz_defineMethod(c$, "getDefaultStructure", +function(bsAtoms, bsModified){ +return (this.haveBioModels ? this.bioModelset.getAllDefaultStructures(bsAtoms, bsModified) : ""); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "deleteModelBonds", +function(modelIndex){ +var bsAtoms = this.getModelAtomBitSetIncludingDeleted(modelIndex, false); +this.makeConnections(0, 3.4028235E38, 131071, 12291, bsAtoms, bsAtoms, null, false, false, 0); +}, "~N"); +Clazz_defineMethod(c$, "makeConnections", +function(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy){ +this.moleculeCount = 0; +var autoState = (connectOperation == 1073741852 && order != 2048 ? new JU.SB() : null); +var result = this.makeConnections2(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy, autoState); +if (autoState != null) { +this.addStateScript(autoState.toString(), null, null, null, null, false, true); +}return result; +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N"); +Clazz_defineMethod(c$, "setPdbConectBonding", +function(baseAtomIndex, baseModelIndex, bsExclude){ +var mad = this.vwr.getMadBond(); +for (var i = baseModelIndex; i < this.mc; i++) { +var vConnect = this.getInfo(i, "PDB_CONECT_bonds"); +if (vConnect == null) continue; +var nConnect = vConnect.size(); +this.setInfo(i, "initialBondCount", Integer.$valueOf(nConnect)); +var atomInfo = this.getInfo(i, "PDB_CONECT_firstAtom_count_max"); +var firstAtom = atomInfo[0] + baseAtomIndex; +var atomMax = firstAtom + atomInfo[1]; +if (atomMax > this.atomSerials.length) atomMax = this.atomSerials.length; +var max = atomInfo[2]; +var serialMap = Clazz_newIntArray (max + 1, 0); +var iSerial; +for (var iAtom = firstAtom; iAtom < atomMax; iAtom++) if ((iSerial = this.atomSerials[iAtom]) > 0) serialMap[iSerial] = iAtom + 1; + +for (var iConnect = 0; iConnect < nConnect; iConnect++) { +var pair = vConnect.get(iConnect); +var sourceSerial = pair[0]; +var targetSerial = pair[1]; +var order = pair[2]; +if (sourceSerial < 0 || targetSerial < 0 || sourceSerial > max || targetSerial > max) continue; +var sourceIndex = serialMap[sourceSerial] - 1; +var targetIndex = serialMap[targetSerial] - 1; +if (sourceIndex < 0 || targetIndex < 0) continue; +var atomA = this.at[sourceIndex]; +var atomB = this.at[targetIndex]; +if (bsExclude != null) { +if (atomA.isHetero()) bsExclude.set(sourceIndex); +if (atomB.isHetero()) bsExclude.set(targetIndex); +}if (atomA.altloc == atomB.altloc || atomA.altloc == '\0' || atomB.altloc == '\0') this.getOrAddBond(atomA, atomB, order, (order == 2048 ? 1 : mad), null, 0, false); +} +} +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "deleteAllBonds", +function(){ +this.moleculeCount = 0; +for (var i = this.stateScripts.size(); --i >= 0; ) { +if (this.stateScripts.get(i).isConnect()) { +this.stateScripts.removeItemAt(i); +}} +this.deleteAllBonds2(); +}); +Clazz_defineMethod(c$, "includeAllRelatedFrames", +function(bsModels){ +var baseModel = 0; +for (var i = 0; i < this.mc; i++) { +var isTraj = this.isTrajectory(i); +var isBase = (isTraj && bsModels.get(baseModel = this.am[i].trajectoryBaseIndex)); +if (bsModels.get(i)) { +if (isTraj && !isBase) { +bsModels.set(baseModel); +this.includeAllRelatedFrames(bsModels); +return; +}} else if (isTraj || this.isJmolDataFrameForModel(i) && bsModels.get(this.am[i].dataSourceFrame)) { +bsModels.set(i); +}} +}, "JU.BS"); +Clazz_defineMethod(c$, "deleteModels", +function(bsModels){ +this.includeAllRelatedFrames(bsModels); +var nModelsDeleted = bsModels.cardinality(); +if (nModelsDeleted == 0) return null; +this.moleculeCount = 0; +if (this.msInfo != null) this.msInfo.remove("models"); +var bsAtomsToDelete = new JU.BS(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +this.clearDataFrameReference(i); +bsAtomsToDelete.or(this.am[i].bsAtoms); +} +var bsDeleted; +if (nModelsDeleted == this.mc) { +bsDeleted = this.getModelAtomBitSetIncludingDeleted(-1, true); +this.vwr.zap(true, false, false); +return bsDeleted; +}this.validateBspf(false); +bsDeleted = new JU.BS(); +var allOrderly = true; +var isOneOfSeveral = false; +var files = new JU.BS(); +var firstAtom = bsAtomsToDelete.nextSetBit(0); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +if (i < this.mc - 1) allOrderly = new Boolean (allOrderly & (m.isOrderly || m.bsAtoms.length() <= firstAtom)).valueOf(); +if (bsModels.get(i)) { +if (m.fileIndex >= 0) files.set(m.fileIndex); +bsDeleted.or(this.getModelAtomBitSetIncludingDeleted(i, false)); +} else { +if (m.fileIndex >= 0 && files.get(m.fileIndex)) isOneOfSeveral = true; +}} +if (!allOrderly || isOneOfSeveral) { +this.vwr.deleteAtoms(bsDeleted, false); +return null; +}var newModels = new Array(this.mc - nModelsDeleted); +var oldModels = this.am; +for (var i = 0, mpt = 0; i < this.mc; i++) { +if (!bsModels.get(i)) { +var m = this.am[i]; +m.modelIndex = mpt; +newModels[mpt++] = m; +}} +this.am = newModels; +var oldModelCount = this.mc; +var bsBonds = this.getBondsForSelectedAtoms(bsDeleted, true); +this.deleteBonds(bsBonds, true); +for (var i = 0, mpt = 0; i < oldModelCount; i++) { +if (!bsModels.get(i)) { +mpt++; +continue; +}var old = oldModels[i]; +var nAtoms = old.act; +if (nAtoms == 0) continue; +var bsModelAtoms = old.bsAtoms; +var firstAtomIndex = old.firstAtomIndex; +JU.BSUtil.deleteBits(this.bsSymmetry, bsModelAtoms); +this.deleteModel(mpt, bsModelAtoms, bsBonds); +this.deleteModelAtoms(firstAtomIndex, nAtoms, bsModelAtoms); +this.vwr.deleteModelAtoms(mpt, firstAtomIndex, nAtoms, bsModelAtoms); +for (var j = oldModelCount; --j > i; ) oldModels[j].fixIndices(mpt, nAtoms, bsModelAtoms); + +this.vwr.shm.deleteShapeAtoms( Clazz_newArray(-1, [newModels, this.at, Clazz_newIntArray(-1, [mpt, firstAtomIndex, nAtoms])]), bsModelAtoms); +this.mc--; +} +this.haveBioModels = false; +for (var i = this.mc; --i >= 0; ) if (this.am[i].isBioModel) { +this.haveBioModels = true; +this.bioModelset.set(this.vwr, this); +} +this.validateBspf(false); +this.bsAll = null; +this.resetMolecules(); +this.isBbcageDefault = false; +this.calcBoundBoxDimensions(null, 1); +return bsDeleted; +}, "JU.BS"); +Clazz_defineMethod(c$, "resetMolecules", +function(){ +this.bsAll = null; +this.molecules = null; +this.moleculeCount = 0; +this.resetChirality(); +}); +Clazz_defineMethod(c$, "resetChirality", +function(){ +if (this.haveChirality) { +var modelIndex = -1; +for (var i = this.ac; --i >= 0; ) { +var a = this.at[i]; +if (a == null) continue; +a.setCIPChirality(0); +if (a.mi != modelIndex && a.mi < this.am.length) this.am[modelIndex = a.mi].hasChirality = false; +} +}}); +Clazz_defineMethod(c$, "deleteModel", +function(modelIndex, bsModelAtoms, bsBonds){ +if (modelIndex < 0) { +return; +}this.modelNumbers = JU.AU.deleteElements(this.modelNumbers, modelIndex, 1); +this.modelFileNumbers = JU.AU.deleteElements(this.modelFileNumbers, modelIndex, 1); +this.modelNumbersForAtomLabel = JU.AU.deleteElements(this.modelNumbersForAtomLabel, modelIndex, 1); +this.modelNames = JU.AU.deleteElements(this.modelNames, modelIndex, 1); +this.frameTitles = JU.AU.deleteElements(this.frameTitles, modelIndex, 1); +this.thisStateModel = -1; +var group3Lists = this.getInfoM("group3Lists"); +var group3Counts = this.getInfoM("group3Counts"); +var ptm = modelIndex + 1; +if (group3Lists != null && group3Lists[ptm] != null) { +for (var i = Clazz_doubleToInt(group3Lists[ptm].length / 6); --i >= 0; ) if (group3Counts[ptm][i] > 0) { +group3Counts[0][i] -= group3Counts[ptm][i]; +if (group3Counts[0][i] == 0) group3Lists[0] = group3Lists[0].substring(0, i * 6) + ",[" + group3Lists[0].substring(i * 6 + 2); +} +}if (group3Lists != null) { +this.msInfo.put("group3Lists", JU.AU.deleteElements(group3Lists, modelIndex, 1)); +this.msInfo.put("group3Counts", JU.AU.deleteElements(group3Counts, modelIndex, 1)); +}if (this.unitCells != null) { +this.unitCells = JU.AU.deleteElements(this.unitCells, modelIndex, 1); +}for (var i = this.stateScripts.size(); --i >= 0; ) { +if (!this.stateScripts.get(i).deleteAtoms(modelIndex, bsBonds, bsModelAtoms)) { +this.stateScripts.removeItemAt(i); +}} +}, "~N,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "setAtomProperty", +function(bs, tok, iValue, fValue, sValue, values, list){ +switch (tok) { +case 1114249217: +case 1112152066: +case 1112152071: +case 1112152073: +case 1112152074: +case 1649022989: +case 1112152078: +if (fValue > 4.0) fValue = 4.0; +if (values != null) { +var newValues = Clazz_newFloatArray (this.ac, 0); +try { +for (var i = bs.nextSetBit(0), ii = 0; i >= 0; i = bs.nextSetBit(i + 1)) newValues[i] = values[ii++]; + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return; +} else { +throw e; +} +} +values = newValues; +}case 1112152070: +case 1112152076: +var rd = null; +var mar = 0; +if (values == null) { +if (fValue > 16) fValue = 16.1; +if (fValue < 0) fValue = 0; +mar = Clazz_doubleToInt(Math.floor(fValue * 2000)); +} else { +rd = new J.atomdata.RadiusData(values, 0, null, null); +}this.sm.setShapeSizeBs(JV.JC.shapeTokenIndex(tok), mar, rd, bs); +return; +} +this.setAPm(bs, tok, iValue, fValue, sValue, values, list); +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz_defineMethod(c$, "getFileData", +function(modelIndex){ +if (modelIndex < 0) return ""; +var fileData = this.getInfo(modelIndex, "fileData"); +if (fileData != null) return fileData; +if (!this.getInfoB(modelIndex, "isCIF")) return this.getPDBHeader(modelIndex); +fileData = this.vwr.getCifData(modelIndex); +this.setInfo(modelIndex, "fileData", fileData); +return fileData; +}, "~N"); +Clazz_defineMethod(c$, "addHydrogens", +function(vConnections, pts){ +var modelIndex = vConnections.get(0).mi; +var bs = new JU.BS(); +if (this.isTrajectory(modelIndex) || this.am[modelIndex].getGroupCount() > 1) { +return bs; +}this.growAtomArrays(this.ac + pts.length); +var rd = this.vwr.rd; +var mad = this.getDefaultMadFromOrder(1); +this.am[modelIndex].resetDSSR(false); +for (var i = 0, n = this.am[modelIndex].act + 1; i < vConnections.size(); i++, n++) { +var atom1 = vConnections.get(i); +var atom2 = this.addAtom(modelIndex, atom1.group, 1, "H" + n, null, n, atom1.getSeqID(), n, pts[i], NaN, null, 0, 0, 100, NaN, null, false, 0, null, NaN); +atom2.setMadAtom(this.vwr, rd); +bs.set(atom2.i); +this.bondAtoms(atom1, atom2, 1, mad, null, 0, false, false); +} +this.sm.loadDefaultShapes(this); +return bs; +}, "JU.Lst,~A"); +Clazz_defineMethod(c$, "mergeModelArrays", +function(mergeModelSet){ +this.at = mergeModelSet.at; +this.bo = mergeModelSet.bo; +this.stateScripts = mergeModelSet.stateScripts; +this.proteinStructureTainted = mergeModelSet.proteinStructureTainted; +this.thisStateModel = -1; +this.bsSymmetry = mergeModelSet.bsSymmetry; +this.modelFileNumbers = mergeModelSet.modelFileNumbers; +this.modelNumbersForAtomLabel = mergeModelSet.modelNumbersForAtomLabel; +this.modelNames = mergeModelSet.modelNames; +this.modelNumbers = mergeModelSet.modelNumbers; +this.frameTitles = mergeModelSet.frameTitles; +this.haveChirality = mergeModelSet.haveChirality; +this.boxInfo.setBoundBox(mergeModelSet.boxInfo.bbCorner0, mergeModelSet.boxInfo.bbCorner1, true, 1); +if (this.msInfo != null) this.msInfo.remove("models"); +this.mergeAtomArrays(mergeModelSet); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "getUnitCell", +function(modelIndex){ +var returnCage = (modelIndex == -2147483648); +if (returnCage) modelIndex = this.vwr.am.cmi; +if (modelIndex < 0 || modelIndex >= this.mc) return null; +var ucSimple = this.am[modelIndex].simpleCage; +var uc = null; +if (this.unitCells != null && modelIndex < this.unitCells.length && this.unitCells[modelIndex] != null && this.unitCells[modelIndex].haveUnitCell()) uc = this.unitCells[modelIndex]; +if (uc != null && returnCage) { +return (ucSimple == null ? this.setModelCagePts(modelIndex, uc.getUnitCellVectors(), "cage") : ucSimple); +}if (uc == null || ucSimple != null && !uc.isSymmetryCell(ucSimple)) { +uc = ucSimple; +}return uc; +}, "~N"); +Clazz_defineMethod(c$, "setModelCagePts", +function(iModel, originABC, name){ +if (iModel < 0 && (iModel = this.vwr.am.cmi) < 0) return null; +var sym = this.vwr.getSymTemp(); +try { +return this.setModelCage(iModel, originABC == null ? null : sym.getUnitCell(originABC, false, name)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +return null; +} else { +throw e; +} +} +}, "~N,~A,~S"); +Clazz_defineMethod(c$, "getModelName", +function(modelIndex){ +return this.mc < 1 ? "" : modelIndex >= 0 ? this.modelNames[modelIndex] : this.modelNumbersForAtomLabel[-1 - modelIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getModelTitle", +function(modelIndex){ +return this.getInfo(modelIndex, "title"); +}, "~N"); +Clazz_defineMethod(c$, "getModelFileName", +function(modelIndex){ +return this.getInfo(modelIndex, "fileName"); +}, "~N"); +Clazz_defineMethod(c$, "getModelFileType", +function(modelIndex){ +return this.getInfo(modelIndex, "fileType"); +}, "~N"); +Clazz_defineMethod(c$, "setFrameTitle", +function(bsFrames, title){ +if ((typeof(title)=='string')) { +for (var i = bsFrames.nextSetBit(0); i >= 0; i = bsFrames.nextSetBit(i + 1)) this.frameTitles[i] = title; + +} else { +var list = title; +for (var i = bsFrames.nextSetBit(0), n = 0; i >= 0; i = bsFrames.nextSetBit(i + 1)) if (n < list.length) this.frameTitles[i] = list[n++]; + +}}, "JU.BS,~O"); +Clazz_defineMethod(c$, "getFrameTitle", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.frameTitles[modelIndex] : ""); +}, "~N"); +Clazz_defineMethod(c$, "getModelNumberForAtomLabel", +function(modelIndex){ +return this.modelNumbersForAtomLabel[modelIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getGroups", +function(){ +var n = 0; +for (var i = 0; i < this.mc; i++) n += this.am[i].getGroupCount(); + +var groups = new Array(n); +for (var i = 0, iGroup = 0; i < this.mc; i++) for (var j = 0; j < this.am[i].chainCount; j++) for (var k = 0; k < this.am[i].chains[j].groupCount; k++) { +groups[iGroup] = this.am[i].chains[j].groups[k]; +groups[iGroup].groupIndex = iGroup; +iGroup++; +} + + +return groups; +}); +Clazz_defineMethod(c$, "setCrystallographicDefaults", +function(){ +return !this.haveBioModels && (this.someModelsHaveSymmetry && this.someModelsHaveFractionalCoordinates || this.getUnitCell(this.vwr.am.cmi) != null); +}); +Clazz_defineMethod(c$, "getBoundBoxCenter", +function(modelIndex){ +return (this.isJmolDataFrameForModel(modelIndex) ? new JU.P3() : (this.getDefaultBoundBox() == null ? this.boxInfo : this.defaultBBox).getBoundBoxCenter()); +}, "~N"); +Clazz_defineMethod(c$, "getBoundBoxCornerVector", +function(){ +return this.boxInfo.getBoundBoxCornerVector(); +}); +Clazz_defineMethod(c$, "getBBoxVertices", +function(){ +return this.boxInfo.getBoundBoxVertices(); +}); +Clazz_defineMethod(c$, "setBoundBox", +function(pt1, pt2, byCorner, scale){ +if (scale == 0 && this.msInfo != null) { +this.msInfo.remove("boundbox"); +this.defaultBBox = null; +this.isBbcageDefault = false; +this.calcBoundBoxDimensions(null, scale = 1); +}this.isBbcageDefault = false; +this.bboxModels = null; +this.bboxAtoms = null; +this.boxInfo.setBoundBox(pt1, pt2, byCorner, scale); +}, "JU.T3,JU.T3,~B,~N"); +Clazz_defineMethod(c$, "getBoundBoxCommand", +function(withOptions){ +if (!withOptions && this.bboxAtoms != null) return "boundbox " + JU.Escape.eBS(this.bboxAtoms); +this.ptTemp.setT(this.boxInfo.getBoundBoxCenter()); +var bbVector = this.boxInfo.getBoundBoxCornerVector(); +var s = (withOptions ? "boundbox " + JU.Escape.eP(this.ptTemp) + " " + JU.Escape.eP(bbVector) + "\n#or\n" : ""); +this.ptTemp.sub(bbVector); +s += "boundbox corners " + JU.Escape.eP(this.ptTemp) + " "; +this.ptTemp.scaleAdd2(2, bbVector, this.ptTemp); +var v = Math.abs(8 * bbVector.x * bbVector.y * bbVector.z); +s += JU.Escape.eP(this.ptTemp) + " # volume = " + v; +return s; +}, "~B"); +Clazz_defineMethod(c$, "findAtomsInRectangle", +function(rect){ +var bsModels = this.vwr.getVisibleFramesBitSet(); +var bs = new JU.BS(); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (!bsModels.get(atom.mi)) i = this.am[atom.mi].firstAtomIndex; + else if (atom.checkVisible() && rect.contains(atom.sX, atom.sY)) bs.set(i); +} +return bs; +}, "JU.Rectangle"); +Clazz_defineMethod(c$, "getDefaultVdwType", +function(modelIndex){ +return (!this.am[modelIndex].isBioModel ? J.c.VDW.AUTO_BABEL : this.am[modelIndex].hydrogenCount == 0 ? J.c.VDW.AUTO_JMOL : J.c.VDW.AUTO_BABEL); +}, "~N"); +Clazz_defineMethod(c$, "setRotationRadius", +function(modelIndex, angstroms){ +if (this.isJmolDataFrameForModel(modelIndex)) { +this.am[modelIndex].defaultRotationRadius = angstroms; +return false; +}return true; +}, "~N,~N"); +Clazz_defineMethod(c$, "calcRotationRadius", +function(modelIndex, center, useBoundBox){ +if (this.isJmolDataFrameForModel(modelIndex)) { +var r = this.am[modelIndex].defaultRotationRadius; +return (r == 0 ? 10 : r); +}if (useBoundBox && this.getDefaultBoundBox() != null) return this.defaultBBox.getMaxDim() / 2 * 1.2; +if (this.ac == 0) return 10; +modelIndex = -2; +var maxRadius = 0; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (this.isJmolDataFrameForAtom(atom)) { +modelIndex = atom.mi; +while (i >= 0 && this.at[i] != null && this.at[i].mi == modelIndex) i--; + +i++; +continue; +} else if (atom.mi != modelIndex) { +modelIndex = atom.mi; +var uc = (this.am[modelIndex].isBioModel ? null : this.getUnitCell(modelIndex)); +if (uc != null) { +var pts = uc.getUnitCellVerticesNoOffset(); +var off = uc.getCartesianOffset(); +for (var j = 0; j < 8; j++) { +this.ptTemp.setT(pts[j]); +this.ptTemp.add(off); +maxRadius = Math.max(maxRadius, center.distance(this.ptTemp)); +} +}}var d = center.distance(atom) + this.getRadiusVdwJmol(atom); +if (d > maxRadius) maxRadius = d; +} +return (maxRadius == 0 ? 10 : maxRadius); +}, "~N,JU.P3,~B"); +Clazz_defineMethod(c$, "calcBoundBoxDimensions", +function(bs, scale){ +if (bs != null && bs.nextSetBit(0) < 0) bs = null; +if (bs == null && this.isBbcageDefault || this.ac == 0) return; +if (this.getDefaultBoundBox() == null) { +this.bboxModels = this.getModelBS(this.bboxAtoms = JU.BSUtil.copy(bs), false); +if (this.calcAtomsMinMax(bs, this.boxInfo) == this.ac) this.isBbcageDefault = true; +if (bs == null) { +if (this.unitCells != null) this.calcUnitCellMinMax(); +}} else { +var vertices = this.defaultBBox.getBoundBoxVertices(); +this.boxInfo.reset(); +for (var j = 0; j < 8; j++) this.boxInfo.addBoundBoxPoint(vertices[j]); + +}this.boxInfo.setBbcage(scale); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getDefaultBoundBox", +function(){ +var bbox = this.getInfoM("boundbox"); +if (bbox == null) this.defaultBBox = null; + else { +if (this.defaultBBox == null) this.defaultBBox = new JU.BoxInfo(); +this.defaultBBox.setBoundBoxFromOABC(bbox); +}return this.defaultBBox; +}); +Clazz_defineMethod(c$, "getBoxInfo", +function(bs, scale){ +if (bs == null) return this.boxInfo; +var bi = new JU.BoxInfo(); +this.calcAtomsMinMax(bs, bi); +bi.setBbcage(scale); +return bi; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "calcAtomsMinMax", +function(bs, boxInfo){ +boxInfo.reset(); +var nAtoms = 0; +var isAll = (bs == null); +var i0 = (isAll ? this.ac - 1 : bs.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bs.nextSetBit(i + 1))) { +nAtoms++; +var a = this.at[i]; +if (a != null && !this.isJmolDataFrameForAtom(a)) boxInfo.addBoundBoxPoint(a); +} +return nAtoms; +}, "JU.BS,JU.BoxInfo"); +Clazz_defineMethod(c$, "calcUnitCellMinMax", +function(){ +var pt = new JU.P3(); +for (var i = 0; i < this.mc; i++) { +var uc = this.unitCells[i]; +if (uc == null || !uc.getCoordinatesAreFractional()) continue; +var vertices = uc.getUnitCellVerticesNoOffset(); +var offset = uc.getCartesianOffset(); +for (var j = 0; j < 8; j++) { +pt.add2(offset, vertices[j]); +this.boxInfo.addBoundBoxPoint(pt); +} +} +}); +Clazz_defineMethod(c$, "calcRotationRadiusBs", +function(bs){ +var center = this.getAtomSetCenter(bs); +var maxRadius = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var atom = this.at[i]; +var distAtom = center.distance(atom); +var outerVdw = distAtom + this.getRadiusVdwJmol(atom); +if (outerVdw > maxRadius) maxRadius = outerVdw; +} +return (maxRadius == 0 ? 10 : maxRadius); +}, "JU.BS"); +Clazz_defineMethod(c$, "getCenterAndPoints", +function(vAtomSets, addCenters){ +var bsAtoms1; +var bsAtoms2; +var n = (addCenters ? 1 : 0); +for (var ii = vAtomSets.size(); --ii >= 0; ) { +var bss = vAtomSets.get(ii); +bsAtoms1 = bss[0]; +if (Clazz_instanceOf(bss[1],"JU.BS")) { +bsAtoms2 = bss[1]; +n += Math.min(bsAtoms1.cardinality(), bsAtoms2.cardinality()); +} else { +n += Math.min(bsAtoms1.cardinality(), (bss[1]).length); +}} +var points = Clazz_newArray(2, n, null); +if (addCenters) { +points[0][0] = new JU.P3(); +points[1][0] = new JU.P3(); +}for (var ii = vAtomSets.size(); --ii >= 0; ) { +var bss = vAtomSets.get(ii); +bsAtoms1 = bss[0]; +if (Clazz_instanceOf(bss[1],"JU.BS")) { +bsAtoms2 = bss[1]; +for (var i = bsAtoms1.nextSetBit(0), j = bsAtoms2.nextSetBit(0); i >= 0 && j >= 0; i = bsAtoms1.nextSetBit(i + 1), j = bsAtoms2.nextSetBit(j + 1)) { +points[0][--n] = this.at[i]; +points[1][n] = this.at[j]; +if (addCenters) { +points[0][0].add(this.at[i]); +points[1][0].add(this.at[j]); +}} +} else { +var coords = bss[1]; +for (var i = bsAtoms1.nextSetBit(0), j = 0; i >= 0 && j < coords.length; i = bsAtoms1.nextSetBit(i + 1), j++) { +points[0][--n] = this.at[i]; +points[1][n] = coords[j]; +if (addCenters) { +points[0][0].add(this.at[i]); +points[1][0].add(coords[j]); +}} +}} +if (addCenters) { +points[0][0].scale(1 / (points[0].length - 1)); +points[1][0].scale(1 / (points[1].length - 1)); +}return points; +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "getAtomSetCenter", +function(bs){ +var ptCenter = new JU.P3(); +var nPoints = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (!this.isJmolDataFrameForAtom(this.at[i])) { +nPoints++; +ptCenter.add(this.at[i]); +}} +if (nPoints > 1) ptCenter.scale(1.0 / nPoints); +return ptCenter; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAverageAtomPoint", +function(){ +return this.getAtomSetCenter(this.vwr.bsA()); +}); +Clazz_defineMethod(c$, "setAPm", +function(bs, tok, iValue, fValue, sValue, values, list){ +this.setAPa(bs, tok, iValue, fValue, sValue, values, list); +switch (tok) { +case 1094715418: +case 1631586315: +if (this.vwr.getBoolean(603979944)) this.assignAromaticBondsBs(true, null); +break; +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz_defineMethod(c$, "addStateScript", +function(script1, bsBonds, bsAtoms1, bsAtoms2, script2, addFrameNumber, postDefinitions){ +var iModel = this.vwr.am.cmi; +if (addFrameNumber) { +if (this.thisStateModel != iModel) script1 = "frame " + (iModel < 0 ? "all #" + iModel : this.getModelNumberDotted(iModel)) + ";\n " + script1; +this.thisStateModel = iModel; +} else { +this.thisStateModel = -1; +}var stateScript = new JM.StateScript(this.thisStateModel, script1, bsBonds, bsAtoms1, bsAtoms2, script2, postDefinitions); +if (stateScript.isValid()) { +this.stateScripts.addLast(stateScript); +}return stateScript; +}, "~S,JU.BS,JU.BS,JU.BS,~S,~B,~B"); +Clazz_defineMethod(c$, "freezeModels", +function(){ +this.haveBioModels = false; +for (var iModel = this.mc; --iModel >= 0; ) this.haveBioModels = new Boolean (this.haveBioModels | this.am[iModel].freeze()).valueOf(); + +}); +Clazz_defineMethod(c$, "getStructureList", +function(){ +return this.vwr.getStructureList(); +}); +Clazz_defineMethod(c$, "getInfoM", +function(keyName){ +return (this.msInfo == null ? null : this.msInfo.get(keyName)); +}, "~S"); +Clazz_defineMethod(c$, "getMSInfoB", +function(keyName){ +var val = this.getInfoM(keyName); +return (Clazz_instanceOf(val, Boolean) && (val).booleanValue()); +}, "~S"); +Clazz_defineMethod(c$, "isTrajectory", +function(modelIndex){ +return this.am[modelIndex].isTrajectory; +}, "~N"); +Clazz_defineMethod(c$, "isTrajectorySubFrame", +function(i){ +return (this.am[i].trajectoryBaseIndex != i); +}, "~N"); +Clazz_defineMethod(c$, "isTrajectoryMeasurement", +function(countPlusIndices){ +return (this.trajectory != null && this.trajectory.hasMeasure(countPlusIndices)); +}, "~A"); +Clazz_defineMethod(c$, "getModelBS", +function(atomList, allTrajectories){ +var bs = new JU.BS(); +var modelIndex = 0; +var isAll = (atomList == null); +allTrajectories = new Boolean (allTrajectories & (this.trajectory != null)).valueOf(); +var i0 = (isAll ? 0 : atomList.nextSetBit(0)); +for (var i = i0; i >= 0 && i < this.ac; i = (isAll ? i + 1 : atomList.nextSetBit(i + 1))) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +bs.set(modelIndex = this.at[i].mi); +if (allTrajectories) this.trajectory.getModelBS(modelIndex, bs); +var m = this.am[modelIndex]; +if (m.isOrderly) i = m.firstAtomIndex + m.act - 1; +} +return bs; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "getIterativeModels", +function(allowJmolData){ +var bs = new JU.BS(); +for (var i = 0; i < this.mc; i++) { +if (!allowJmolData && this.isJmolDataFrameForModel(i)) continue; +if (!this.isTrajectorySubFrame(i)) bs.set(i); +} +return bs; +}, "~B"); +Clazz_defineMethod(c$, "fillAtomData", +function(atomData, mode){ +if ((mode & 4) != 0) { +this.getMolecules(); +atomData.bsMolecules = new Array(this.molecules.length); +atomData.atomMolecule = Clazz_newIntArray (this.ac, 0); +var bs; +for (var i = 0; i < this.molecules.length; i++) { +bs = atomData.bsMolecules[i] = this.molecules[i].atomList; +for (var iAtom = bs.nextSetBit(0); iAtom >= 0; iAtom = bs.nextSetBit(iAtom + 1)) atomData.atomMolecule[iAtom] = i; + +} +}if ((mode & 8) != 0) { +var nH = Clazz_newIntArray (1, 0); +atomData.hAtomRadius = this.vwr.getVanderwaalsMar(1) / 1000; +atomData.hAtoms = this.calculateHydrogens(atomData.bsSelected, nH, null, 512); +atomData.hydrogenAtomCount = nH[0]; +return; +}if (atomData.modelIndex < 0) atomData.firstAtomIndex = (atomData.bsSelected == null ? 0 : Math.max(0, atomData.bsSelected.nextSetBit(0))); + else atomData.firstAtomIndex = this.am[atomData.modelIndex].firstAtomIndex; +atomData.lastModelIndex = atomData.firstModelIndex = (this.ac == 0 ? 0 : this.at[atomData.firstAtomIndex].mi); +atomData.modelName = this.getModelNumberDotted(atomData.firstModelIndex); +this.fillADa(atomData, mode); +}, "J.atomdata.AtomData,~N"); +Clazz_defineMethod(c$, "getModelNumberDotted", +function(modelIndex){ +return (this.mc < 1 || modelIndex >= this.mc || modelIndex < 0 ? "" : JU.Escape.escapeModelFileNumber(this.modelFileNumbers[modelIndex])); +}, "~N"); +Clazz_defineMethod(c$, "getModelNumber", +function(modelIndex){ +return this.modelNumbers[modelIndex == 2147483647 ? this.mc - 1 : modelIndex]; +}, "~N"); +Clazz_defineMethod(c$, "getModelProperty", +function(modelIndex, property){ +var props = this.am[modelIndex].properties; +return props == null ? null : props.getProperty(property); +}, "~N,~S"); +Clazz_defineMethod(c$, "getModelAuxiliaryInfo", +function(modelIndex){ +return (modelIndex < 0 ? null : this.am[modelIndex].auxiliaryInfo); +}, "~N"); +Clazz_defineMethod(c$, "setInfo", +function(modelIndex, key, value){ +if (modelIndex >= 0 && modelIndex < this.mc) { +if (value == null) this.am[modelIndex].auxiliaryInfo.remove(key); + else this.am[modelIndex].auxiliaryInfo.put(key, value); +}}, "~N,~O,~O"); +Clazz_defineMethod(c$, "getInfo", +function(modelIndex, key){ +return (modelIndex < 0 ? null : this.am[modelIndex].auxiliaryInfo.get(key)); +}, "~N,~S"); +Clazz_defineMethod(c$, "getInfoB", +function(modelIndex, keyName){ +var info = this.am[modelIndex].auxiliaryInfo; +return (info != null && info.containsKey(keyName) && (info.get(keyName)).booleanValue()); +}, "~N,~S"); +Clazz_defineMethod(c$, "getInfoI", +function(modelIndex, keyName){ +var info = this.am[modelIndex].auxiliaryInfo; +if (info != null && info.containsKey(keyName)) { +return (info.get(keyName)).intValue(); +}return -2147483648; +}, "~N,~S"); +Clazz_defineMethod(c$, "getInsertionCountInModel", +function(modelIndex){ +return this.am[modelIndex].insertionCount; +}, "~N"); +c$.modelFileNumberFromFloat = Clazz_defineMethod(c$, "modelFileNumberFromFloat", +function(fDotM){ +var file = Clazz_doubleToInt(Math.floor(fDotM)); +var model = Clazz_doubleToInt(Math.floor((fDotM - file + 0.00001) * 10000)); +while (model != 0 && model % 10 == 0) model /= 10; + +return file * 1000000 + model; +}, "~N"); +Clazz_defineMethod(c$, "getChainCountInModelWater", +function(modelIndex, countWater){ +if (modelIndex < 0) { +var chainCount = 0; +for (var i = this.mc; --i >= 0; ) chainCount += this.am[i].getChainCount(countWater); + +return chainCount; +}return this.am[modelIndex].getChainCount(countWater); +}, "~N,~B"); +Clazz_defineMethod(c$, "getGroupCountInModel", +function(modelIndex){ +if (modelIndex < 0) { +var groupCount = 0; +for (var i = this.mc; --i >= 0; ) groupCount += this.am[i].getGroupCount(); + +return groupCount; +}return this.am[modelIndex].getGroupCount(); +}, "~N"); +Clazz_defineMethod(c$, "calcSelectedGroupsCount", +function(){ +var bsSelected = this.vwr.bsA(); +for (var i = this.mc; --i >= 0; ) this.am[i].calcSelectedGroupsCount(bsSelected); + +}); +Clazz_defineMethod(c$, "isJmolDataFrameForModel", +function(modelIndex){ +return this.haveJmolDataFrames && (this.am != null && modelIndex >= 0 && modelIndex < this.mc && this.am[modelIndex].isJmolDataFrame); +}, "~N"); +Clazz_defineMethod(c$, "isJmolDataFrameForAtom", +function(atom){ +return this.haveJmolDataFrames && this.am[atom.mi].isJmolDataFrame; +}, "JM.Atom"); +Clazz_defineMethod(c$, "setJmolDataFrame", +function(type, modelIndex, modelDataIndex){ +this.haveJmolDataFrames = true; +var model = this.am[type == null ? this.am[modelDataIndex].dataSourceFrame : modelIndex]; +if (type == null) { +type = this.am[modelDataIndex].jmolFrameType; +}if (modelIndex >= 0) { +if (model.dataFrames == null) { +model.dataFrames = new java.util.Hashtable(); +}this.am[modelDataIndex].dataSourceFrame = modelIndex; +this.am[modelDataIndex].jmolFrameType = type; +model.dataFrames.put(type, Integer.$valueOf(modelDataIndex)); +}if (type.startsWith("quaternion") && type.indexOf("deriv") < 0) { +type = type.substring(0, type.indexOf(" ")); +model.dataFrames.put(type, Integer.$valueOf(modelDataIndex)); +}}, "~S,~N,~N"); +Clazz_defineMethod(c$, "getJmolDataFrameIndex", +function(modelIndex, type){ +if (this.am[modelIndex].dataFrames == null) { +return -1; +}var index = this.am[modelIndex].dataFrames.get(type); +return (index == null ? -1 : index.intValue()); +}, "~N,~S"); +Clazz_defineMethod(c$, "clearDataFrameReference", +function(modelIndex){ +for (var i = 0; i < this.mc; i++) { +var df = this.am[i].dataFrames; +if (df == null) { +continue; +}var e = df.values().iterator(); +while (e.hasNext()) { +if ((e.next()).intValue() == modelIndex) { +e.remove(); +}} +} +}, "~N"); +Clazz_defineMethod(c$, "getJmolFrameType", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.am[modelIndex].jmolFrameType : "modelSet"); +}, "~N"); +Clazz_defineMethod(c$, "getJmolDataSourceFrame", +function(modelIndex){ +return (modelIndex >= 0 && modelIndex < this.mc ? this.am[modelIndex].dataSourceFrame : -1); +}, "~N"); +Clazz_defineMethod(c$, "saveModelOrientation", +function(modelIndex, orientation){ +this.am[modelIndex].orientation = orientation; +}, "~N,JM.Orientation"); +Clazz_defineMethod(c$, "getModelOrientation", +function(modelIndex){ +return this.am[modelIndex].orientation; +}, "~N"); +Clazz_defineMethod(c$, "getPDBHeader", +function(modelIndex){ +return (this.am[modelIndex].isBioModel ? (this.am[modelIndex]).getFullPDBHeader() : this.getFileHeader(modelIndex)); +}, "~N"); +Clazz_defineMethod(c$, "getFileHeader", +function(modelIndex){ +if (modelIndex < 0) return ""; +if (this.am[modelIndex].isBioModel) return this.getPDBHeader(modelIndex); +var info = this.getInfo(modelIndex, "fileHeader"); +if (info == null) info = this.modelSetName; +if (info != null) return info; +return "no header information found"; +}, "~N"); +Clazz_defineMethod(c$, "getAltLocCountInModel", +function(modelIndex){ +return this.am[modelIndex].altLocCount; +}, "~N"); +Clazz_defineMethod(c$, "getAltLocIndexInModel", +function(modelIndex, alternateLocationID){ +if (alternateLocationID == '\0') { +return 0; +}var altLocList = this.getAltLocListInModel(modelIndex); +if (altLocList.length == 0) { +return 0; +}return altLocList.indexOf(alternateLocationID) + 1; +}, "~N,~S"); +Clazz_defineMethod(c$, "getInsertionCodeIndexInModel", +function(modelIndex, insertionCode){ +if (insertionCode == '\0') return 0; +var codeList = this.getInsertionListInModel(modelIndex); +if (codeList.length == 0) return 0; +return codeList.indexOf(insertionCode) + 1; +}, "~N,~S"); +Clazz_defineMethod(c$, "getAltLocListInModel", +function(modelIndex){ +var str = this.getInfo(modelIndex, "altLocs"); +return (str == null ? "" : str); +}, "~N"); +Clazz_defineMethod(c$, "getInsertionListInModel", +function(modelIndex){ +var str = this.getInfo(modelIndex, "insertionCodes"); +return (str == null ? "" : str); +}, "~N"); +Clazz_defineMethod(c$, "getModelSymmetryCount", +function(modelIndex){ +return (this.am[modelIndex].biosymmetryCount > 0 ? this.am[modelIndex].biosymmetryCount : this.unitCells == null || this.unitCells[modelIndex] == null ? 0 : this.unitCells[modelIndex].getSpaceGroupOperationCount()); +}, "~N"); +Clazz_defineMethod(c$, "getModelCellRange", +function(modelIndex){ +return (this.unitCells == null ? null : this.unitCells[modelIndex].getCellRange()); +}, "~N"); +Clazz_defineMethod(c$, "getLastVibrationVector", +function(modelIndex, tok){ +if (this.vibrations != null && modelIndex < this.vwr.ms.mc) { +var v; +var a1 = (modelIndex < 0 || this.isTrajectory(modelIndex) || modelIndex >= this.mc - 1 ? this.ac : this.am[modelIndex + 1].firstAtomIndex); +var a0 = (modelIndex <= 0 ? 0 : this.am[modelIndex].firstAtomIndex); +for (var i = a1; --i >= a0; ) { +if ((modelIndex < 0 || !JM.AtomCollection.isDeleted(this.at[i]) && this.at[i].mi == modelIndex) && ((tok == 1275072532 || tok == 0) && (v = this.getModulation(i)) != null || (tok == 4166 || tok == 0) && (v = this.getVibration(i, false)) != null) && v.isNonzero()) return i; +} +}return -1; +}, "~N,~N"); +Clazz_defineMethod(c$, "getModulationList", +function(bs, type, t456){ +var list = new JU.Lst(); +if (this.vibrations != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (Clazz_instanceOf(this.vibrations[i],"J.api.JmolModulationSet")) list.addLast((this.vibrations[i]).getModulation(type, t456, false)); + else list.addLast(Float.$valueOf(type == 'O' ? NaN : -1)); + +return list; +}, "JU.BS,~S,JU.P3"); +Clazz_defineMethod(c$, "getElementsPresentBitSet", +function(modelIndex){ +if (modelIndex >= 0) return this.elementsPresent[modelIndex]; +var bs = new JU.BS(); +for (var i = 0; i < this.mc; i++) bs.or(this.elementsPresent[i]); + +return bs; +}, "~N"); +Clazz_defineMethod(c$, "getMoleculeIndex", +function(atomIndex, inModel){ +if (this.moleculeCount == 0) this.getMolecules(); +for (var i = 0; i < this.moleculeCount; i++) { +if (this.molecules[i].atomList.get(atomIndex)) return (inModel ? this.molecules[i].indexInModel : i); +} +return 0; +}, "~N,~B"); +Clazz_defineMethod(c$, "getMoleculeBitSet", +function(bs){ +if (this.moleculeCount == 0) this.getMolecules(); +var bsResult = JU.BSUtil.copy(bs); +var bsInitial = JU.BSUtil.copy(bs); +var i = 0; +var bsTemp = new JU.BS(); +while ((i = bsInitial.length() - 1) >= 0) { +bsTemp = this.getMoleculeBitSetForAtom(i); +if (bsTemp == null) { +bsInitial.clear(i); +bsResult.clear(i); +continue; +}bsInitial.andNot(bsTemp); +bsResult.or(bsTemp); +} +return bsResult; +}, "JU.BS"); +Clazz_defineMethod(c$, "getMoleculeBitSetForAtom", +function(atomIndex){ +if (this.moleculeCount == 0) this.getMolecules(); +for (var i = 0; i < this.moleculeCount; i++) if (this.molecules[i].atomList.get(atomIndex)) return this.molecules[i].atomList; + +return null; +}, "~N"); +Clazz_defineMethod(c$, "getModelDipole", +function(modelIndex){ +if (modelIndex < 0) return null; +var dipole = this.getInfo(modelIndex, "dipole"); +if (dipole == null) dipole = this.getInfo(modelIndex, "DIPOLE_VEC"); +return dipole; +}, "~N"); +Clazz_defineMethod(c$, "calculateMolecularDipole", +function(modelIndex, bsAtoms){ +if (bsAtoms != null) { +var ia = bsAtoms.nextSetBit(0); +if (ia < 0) return null; +modelIndex = this.at[ia].mi; +}if (modelIndex < 0) return null; +var nPos = 0; +var nNeg = 0; +var cPos = 0; +var cNeg = 0; +var pos = new JU.V3(); +var neg = new JU.V3(); +if (bsAtoms == null) bsAtoms = this.getModelAtomBitSetIncludingDeleted(-1, false); +this.vwr.getOrCalcPartialCharges(this.am[modelIndex].bsAtoms, null); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i]) || this.at[i].mi != modelIndex) { +continue; +}var c = this.partialCharges[i]; +if (c < 0) { +nNeg++; +cNeg += c; +neg.scaleAdd2(c, this.at[i], neg); +} else if (c > 0) { +nPos++; +cPos += c; +pos.scaleAdd2(c, this.at[i], pos); +}} +if (Math.abs(cPos + cNeg) > 0.015) { +JU.Logger.info("Dipole calculation requires balanced charges: " + cPos + " " + cNeg); +return null; +}if (nNeg == 0 || nPos == 0) return null; +pos.add(neg); +pos.scale(4.8); +return pos; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getMoleculeCountInModel", +function(modelIndex){ +var n = 0; +if (this.moleculeCount == 0) this.getMolecules(); +if (modelIndex < 0) return this.moleculeCount; +for (var i = 0; i < this.mc; i++) { +if (modelIndex == i) n += this.am[i].moleculeCount; +} +return n; +}, "~N"); +Clazz_defineMethod(c$, "calcSelectedMoleculesCount", +function(){ +var bsSelected = this.vwr.bsA(); +if (this.moleculeCount == 0) this.getMolecules(); +this.selectedMolecules.xor(this.selectedMolecules); +var bsTemp = new JU.BS(); +for (var i = 0; i < this.moleculeCount; i++) { +JU.BSUtil.copy2(bsSelected, bsTemp); +bsTemp.and(this.molecules[i].atomList); +if (bsTemp.length() > 0) { +this.selectedMolecules.set(i); +}} +}); +Clazz_defineMethod(c$, "setCentroid", +function(bs, minmax){ +var bsDelete = this.getNotInCentroid(bs, minmax); +if (bsDelete != null && bsDelete.nextSetBit(0) >= 0) this.vwr.deleteAtoms(bsDelete, false); +}, "JU.BS,~A"); +Clazz_defineMethod(c$, "getNotInCentroid", +function(bs, minmax){ +var iAtom0 = bs.nextSetBit(0); +if (iAtom0 < 0) return null; +var uc = this.getUnitCell(this.at[iAtom0].mi); +return (uc == null ? null : uc.notInCentroid(this, bs, minmax)); +}, "JU.BS,~A"); +Clazz_defineMethod(c$, "getMolecules", +function(){ +if (this.moleculeCount > 0) return this.molecules; +if (this.molecules == null) this.molecules = new Array(4); +this.moleculeCount = 0; +var m = null; +var bsModelAtoms = new Array(this.mc); +var biobranches = null; +for (var i = 0; i < this.mc; i++) { +bsModelAtoms[i] = this.vwr.getModelUndeletedAtomsBitSet(i); +m = this.am[i]; +m.moleculeCount = 0; +biobranches = (m.isBioModel ? (m).getBioBranches(biobranches) : null); +} +this.molecules = JU.JmolMolecule.getMolecules(this.at, bsModelAtoms, biobranches, null); +this.moleculeCount = this.molecules.length; +for (var i = this.moleculeCount; --i >= 0; ) { +m = this.am[this.molecules[i].modelIndex]; +m.firstMoleculeIndex = i; +m.moleculeCount++; +} +return this.molecules; +}); +Clazz_defineMethod(c$, "initializeBspf", +function(){ +if (this.bspf != null && this.bspf.isValid) return; +if (this.showRebondTimes) JU.Logger.startTimer("build bspf"); +var bspf = new J.bspt.Bspf(3); +if (JU.Logger.debugging) JU.Logger.debug("sequential bspt order"); +var bsNew = JU.BS.newN(this.mc); +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (!JM.AtomCollection.isDeleted(atom) && !this.isTrajectorySubFrame(atom.mi)) { +bspf.addTuple(this.am[atom.mi].trajectoryBaseIndex, atom); +bsNew.set(atom.mi); +}} +if (this.showRebondTimes) { +JU.Logger.checkTimer("build bspf", false); +bspf.stats(); +}for (var i = bsNew.nextSetBit(0); i >= 0; i = bsNew.nextSetBit(i + 1)) bspf.validateModel(i, true); + +bspf.isValid = true; +this.bspf = bspf; +}); +Clazz_defineMethod(c$, "initializeBspt", +function(modelIndex){ +this.initializeBspf(); +if (this.bspf.isInitializedIndex(modelIndex)) return; +this.bspf.initialize(modelIndex, this.at, this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +}, "~N"); +Clazz_defineMethod(c$, "setIteratorForPoint", +function(iterator, modelIndex, pt, distance){ +if (modelIndex < 0) { +iterator.setCenter(pt, distance); +return; +}this.initializeBspt(modelIndex); +iterator.setModel(this, modelIndex, this.am[modelIndex].firstAtomIndex, 2147483647, pt, distance, null); +}, "J.api.AtomIndexIterator,~N,JU.T3,~N"); +Clazz_defineMethod(c$, "setIteratorForAtom", +function(iterator, modelIndex, atomIndex, distance, rd){ +if (modelIndex < 0) modelIndex = this.at[atomIndex].mi; +modelIndex = this.am[modelIndex].trajectoryBaseIndex; +this.initializeBspt(modelIndex); +iterator.setModel(this, modelIndex, this.am[modelIndex].firstAtomIndex, atomIndex, this.at[atomIndex], distance, rd); +}, "J.api.AtomIndexIterator,~N,~N,~N,J.atomdata.RadiusData"); +Clazz_defineMethod(c$, "getSelectedAtomIterator", +function(bsSelected, isGreaterOnly, modelZeroBased, hemisphereOnly, isMultiModel){ +this.initializeBspf(); +var iter; +if (isMultiModel) { +var bsModels = this.getModelBS(bsSelected, false); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) this.initializeBspt(i); + +iter = new JM.AtomIteratorWithinModelSet(bsModels); +} else { +iter = new JM.AtomIteratorWithinModel(); +}iter.initialize(this.bspf, bsSelected, isGreaterOnly, modelZeroBased, hemisphereOnly, this.vwr.isParallel()); +return iter; +}, "JU.BS,~B,~B,~B,~B"); +Clazz_overrideMethod(c$, "getBondCountInModel", +function(modelIndex){ +return (modelIndex < 0 ? this.bondCount : this.am[modelIndex].getBondCount()); +}, "~N"); +Clazz_defineMethod(c$, "getAtomCountInModel", +function(modelIndex){ +return (modelIndex < 0 ? this.ac : this.am[modelIndex].act); +}, "~N"); +Clazz_defineMethod(c$, "getModelAtomBitSetIncludingDeletedBs", +function(bsModels){ +var bs = new JU.BS(); +if (bsModels == null && this.bsAll == null) this.bsAll = JU.BSUtil.setAll(this.ac); +if (bsModels == null) bs.or(this.bsAll); + else for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) bs.or(this.getModelAtomBitSetIncludingDeleted(i, false)); + +return bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "getModelAtomBitSetIncludingDeleted", +function(modelIndex, asCopy){ +var bs = (modelIndex < 0 ? this.bsAll : this.am[modelIndex].bsAtoms); +if (bs == null) bs = this.bsAll = JU.BSUtil.setAll(this.ac); +return (asCopy ? JU.BSUtil.copy(bs) : bs); +}, "~N,~B"); +Clazz_defineMethod(c$, "getAtomBitsMaybeDeleted", +function(tokType, specInfo){ +var bs; +switch (tokType) { +default: +return this.getAtomBitsMDa(tokType, specInfo, bs = new JU.BS()); +case 1073741925: +case 1073742189: +case 1111490587: +case 1073742128: +case 1073741863: +case 1086324744: +bs = new JU.BS(); +return (this.haveBioModels ? this.bioModelset.getAtomBitsStr(tokType, specInfo, bs) : bs); +case 1677721602: +case 1073742331: +return this.getAtomBitsMDb(tokType, specInfo); +case 1812599299: +var boxInfo = this.getBoxInfo(specInfo, 1); +bs = this.getAtomsWithin(boxInfo.getBoundBoxCornerVector().length() + 0.0001, boxInfo.getBoundBoxCenter(), null, -1); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (!boxInfo.isWithin(this.at[i])) bs.clear(i); + +return bs; +case 1094713350: +bs = JU.BSUtil.newBitSet2(0, this.ac); +var pt1 = specInfo; +var minmax = Clazz_newIntArray(-1, [Clazz_floatToInt(pt1.x) - 1, Clazz_floatToInt(pt1.y) - 1, Clazz_floatToInt(pt1.z) - 1, Clazz_floatToInt(pt1.x), Clazz_floatToInt(pt1.y), Clazz_floatToInt(pt1.z), 0]); +for (var i = this.mc; --i >= 0; ) { +var uc1 = this.getUnitCell(i); +if (uc1 == null) { +JU.BSUtil.andNot(bs, this.am[i].bsAtoms); +continue; +}bs.andNot(uc1.notInCentroid(this, this.am[i].bsAtoms, minmax)); +} +return bs; +case 1094713360: +return this.getMoleculeBitSet(specInfo); +case 1073742363: +return this.getSelectCodeRange(specInfo); +case 2097196: +bs = JU.BS.newN(this.ac); +var modelIndex = -1; +var nOps = 0; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var bsSym = atom.atomSymmetry; +if (bsSym != null) { +if (atom.mi != modelIndex) { +modelIndex = atom.mi; +if (this.getModelCellRange(modelIndex) == null) continue; +nOps = this.getModelSymmetryCount(modelIndex); +}var n = 0; +for (var j = nOps; --j >= 0; ) if (bsSym.get(j)) if (++n > 1) { +bs.set(i); +break; +} +}} +return bs; +case 1088421903: +return JU.BSUtil.copy(this.bsSymmetry == null ? this.bsSymmetry = JU.BS.newN(this.ac) : this.bsSymmetry); +case 1814695966: +var isSelectUC = ("unitcell".equals(specInfo)); +if (isSelectUC) { +specInfo = JU.P3.new3(1, 1, 1); +} else { +bs = new JU.BS(); +var uc1 = (Clazz_instanceOf(specInfo,"J.api.SymmetryInterface") ? specInfo : this.vwr.getCurrentUnitCell()); +if (uc1 == null) return bs; +uc1 = uc1.getUnitCellMultiplied(); +for (var i = this.ac; --i >= 0; ) { +if (this.at[i] != null) { +this.ptTemp1.setT(this.at[i]); +uc1.toFractional(this.ptTemp1, false); +if (uc1.checkPeriodic(this.ptTemp1)) bs.set(i); +}} +return bs; +}case 1094713349: +bs = new JU.BS(); +var pt = specInfo; +var uc = this.vwr.getSymTemp(); +System.out.println("MS test within"); +for (var mi = -1, i = this.ac; --i >= 0; ) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var mia = this.at[i].getModelIndex(); +if (mi != mia) { +mi = mia; +uc = this.getUnitCell(mi); +}if (uc == null) continue; +this.ptTemp.setT(this.at[i]); +uc.toFractional(this.ptTemp, false); +if (uc.isWithinUnitCell(this.ptTemp, pt.x, pt.y, pt.z)) bs.set(i); +} +System.out.println("MS test within" + bs); +return bs; +} +}, "~N,~O"); +Clazz_defineMethod(c$, "getSelectCodeRange", +function(info){ +var bs = new JU.BS(); +var seqcodeA = info[0]; +var seqcodeB = info[1]; +var chainID = info[2]; +var caseSensitive = this.vwr.getBoolean(603979822); +if (chainID >= 0 && chainID < 300 && !caseSensitive) chainID = this.chainToUpper(chainID); +for (var iModel = this.mc; --iModel >= 0; ) if (this.am[iModel].isBioModel) { +var m = this.am[iModel]; +var id; +for (var i = m.chainCount; --i >= 0; ) { +var chain = m.chains[i]; +if (chainID == -1 || chainID == (id = chain.chainID) || !caseSensitive && id > 0 && id < 300 && chainID == this.chainToUpper(id)) { +var groups = chain.groups; +var n = chain.groupCount; +for (var index = 0; index >= 0; ) { +index = JM.ModelSet.selectSeqcodeRange(groups, n, index, seqcodeA, seqcodeB, bs); +} +}} +} +return bs; +}, "~A"); +c$.selectSeqcodeRange = Clazz_defineMethod(c$, "selectSeqcodeRange", +function(groups, n, index, seqcodeA, seqcodeB, bs){ +var seqcode; +var indexA; +var indexB; +var minDiff; +var isInexact = false; +for (indexA = index; indexA < n && groups[indexA].seqcode != seqcodeA; indexA++) { +} +if (indexA == n) { +if (index > 0) return -1; +isInexact = true; +minDiff = 2147483647; +for (var i = n; --i >= 0; ) if ((seqcode = groups[i].seqcode) > seqcodeA && (seqcode - seqcodeA) < minDiff) { +indexA = i; +minDiff = seqcode - seqcodeA; +} +if (minDiff == 2147483647) return -1; +}if (seqcodeB == 2147483647) { +indexB = n - 1; +isInexact = true; +} else { +for (indexB = indexA; indexB < n && groups[indexB].seqcode != seqcodeB; indexB++) { +} +if (indexB == n) { +if (index > 0) return -1; +isInexact = true; +minDiff = 2147483647; +for (var i = indexA; i < n; i++) if ((seqcode = groups[i].seqcode) < seqcodeB && (seqcodeB - seqcode) < minDiff) { +indexB = i; +minDiff = seqcodeB - seqcode; +} +if (minDiff == 2147483647) return -1; +}}for (var i = indexA; i <= indexB; ++i) groups[i].setAtomBits(bs); + +return (isInexact ? -1 : indexB + 1); +}, "~A,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "getAtomsWithinRadius", +function(distance, bs, withinAllModels, rd, bsSubset){ +var bsResult = new JU.BS(); +bs = JU.BSUtil.andNot(bs, this.vwr.slm.bsDeleted); +var iter = this.getSelectedAtomIterator(bsSubset, false, false, false, false); +if (withinAllModels) { +var fixJavaFloat = !this.vwr.g.legacyJavaFloat; +var ptTemp = new JU.P3(); +var bsModels = (bsSubset == null ? JU.BSUtil.newBitSet2(0, this.mc) : this.getModelBS(bsSubset, false)); +bsModels.and(this.getIterativeModels(false)); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) for (var iModel = bsModels.nextSetBit(0); iModel >= 0; iModel = bsModels.nextSetBit(iModel + 1)) { +if (distance < 0) { +this.getAtomsWithin(distance, this.at[i].getFractionalUnitCoordPt(fixJavaFloat, true, ptTemp), bsResult, iModel); +} else { +this.setIteratorForAtom(iter, iModel, i, distance, rd); +iter.addAtoms(bsResult); +}} + +} else { +if (bsSubset == null) bsResult.or(bs); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (distance < 0) { +this.getAtomsWithin(distance, this.at[i], bsResult, this.at[i].mi); +} else { +this.setIteratorForAtom(iter, -1, i, distance, rd); +iter.addAtoms(bsResult); +}} +}iter.release(); +return bsResult; +}, "~N,JU.BS,~B,J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "getAtomsWithin", +function(distance, coord, bsResult, modelIndex){ +if (bsResult == null) bsResult = new JU.BS(); +if (distance < 0) { +distance = -distance; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom) || modelIndex >= 0 && atom.mi != modelIndex) continue; +if (!bsResult.get(i) && atom.getFractionalUnitDistance(coord, this.ptTemp1, this.ptTemp2) <= distance) bsResult.set(atom.i); +} +return bsResult; +}var iter = this.getSelectedAtomIterator(null, false, false, false, false); +var bsCheck = (modelIndex >= 0 ? JU.BSUtil.newAndSetBit(modelIndex) : this.getIterativeModels(true)); +for (var m = bsCheck.nextSetBit(0); m >= 0; m = bsCheck.nextSetBit(m + 1)) { +var i = this.am[m].bsAtoms.nextSetBit(0); +if (i < 0) continue; +this.setIteratorForAtom(iter, modelIndex, i, -1, null); +iter.setCenter(coord, distance); +iter.addAtoms(bsResult); +} +iter.release(); +return bsResult; +}, "~N,JU.T3,JU.BS,~N"); +Clazz_defineMethod(c$, "deleteBonds", +function(bsBonds, isFullModel){ +if (!isFullModel) { +var bsA = new JU.BS(); +var bsB = new JU.BS(); +for (var i = bsBonds.nextSetBit(0); i >= 0; i = bsBonds.nextSetBit(i + 1)) { +var atom1 = this.bo[i].atom1; +if (this.am[atom1.mi].isModelKit) continue; +bsA.clearAll(); +bsB.clearAll(); +bsA.set(atom1.i); +bsB.set(this.bo[i].getAtomIndex2()); +this.addStateScript("connect ", null, bsA, bsB, "delete", false, true); +} +}this.dBb(bsBonds, isFullModel); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "makeConnections2", +function(minD, maxD, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy, state){ +if (bsBonds == null) bsBonds = new JU.BS(); +var matchAny = (order == 65535); +var matchNull = (order == 131071); +var isAtrop = (order == 65537); +if (matchNull) order = 1; +var matchHbond = JU.Edge.isOrderH(order); +var identifyOnly = false; +var idOrModifyOnly = false; +var createOnly = false; +var autoAromatize = false; +switch (connectOperation) { +case 12291: +return this.deleteConnections(minD, maxD, order, bsA, bsB, isBonds, matchNull); +case 603979872: +case 1073741852: +if (order != 515) { +if (isBonds) { +var bs = bsA; +bsA = new JU.BS(); +bsB = new JU.BS(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +bsA.set(this.bo[i].atom1.i); +bsB.set(this.bo[i].atom2.i); +} +}return Clazz_newIntArray(-1, [matchHbond ? this.autoHbond(bsA, bsB, false) : this.autoBondBs4(bsA, bsB, null, bsBonds, this.vwr.getMadBond(), connectOperation == 603979872, state), 0]); +}idOrModifyOnly = autoAromatize = true; +break; +case 1086324745: +identifyOnly = idOrModifyOnly = true; +break; +case 1073742025: +idOrModifyOnly = true; +break; +case 1073741904: +createOnly = true; +break; +} +var anyOrNoId = matchAny; +var notAnyAndNoId = (!identifyOnly && !matchAny); +this.defaultCovalentMad = this.vwr.getMadBond(); +var minDIsFrac = (minD < 0); +var maxDIsFrac = (maxD < 0); +var isFractional = (minDIsFrac || maxDIsFrac); +var checkDistance = (!isBonds || minD != 0.1 || maxD != 1.0E8); +if (checkDistance) { +minD = this.fixD(minD, minDIsFrac); +maxD = this.fixD(maxD, maxDIsFrac); +}var mad = this.getDefaultMadFromOrder(order); +var nNew = 0; +var nModified = 0; +var bondAB = null; +var atomA = null; +var atomB = null; +var altloc = '\u0000'; +var newOrder = (order | 131072); +var isAromaticOnly = (order != 65535 && (order & 512) != 0); +try { +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +if (isBonds) { +bondAB = this.bo[i]; +atomA = bondAB.atom1; +atomB = bondAB.atom2; +} else { +atomA = this.at[i]; +if (atomA.isDeleted()) continue; +altloc = (this.isModulated(i) ? '\0' : atomA.altloc); +}for (var j = (isBonds ? 0 : bsB.nextSetBit(0)); j >= 0; j = bsB.nextSetBit(j + 1)) { +if (isBonds) { +j = 2147483646; +} else { +if (j == i) continue; +atomB = this.at[j]; +if (atomB == null || atomA.mi != atomB.mi || atomB.isDeleted()) continue; +if (altloc != '\0' && altloc != atomB.altloc && atomB.altloc != '\0') continue; +bondAB = atomA.getBond(atomB); +}if ((bondAB == null ? idOrModifyOnly : createOnly) || checkDistance && !this.isInRange(atomA, atomB, minD, maxD, minDIsFrac, maxDIsFrac, isFractional) || isAromaticOnly && (bondAB != null && !this.allowAromaticBond(bondAB))) continue; +if (bondAB == null) { +bsBonds.set(this.bondAtoms(atomA, atomB, order, mad, bsBonds, energy, addGroup, true).index); +nNew++; +} else { +if (notAnyAndNoId) { +bondAB.setOrder(order); +if (isAtrop) { +this.haveAtropicBonds = true; +bondAB.setAtropisomerOptions(); +}this.bsAromatic.clear(bondAB.index); +}if (anyOrNoId || order == bondAB.order || newOrder == bondAB.order || matchHbond && bondAB.isHydrogen()) { +bsBonds.set(bondAB.index); +nModified++; +}}} +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (autoAromatize) this.assignAromaticBondsBs(true, bsBonds); +if (!identifyOnly) this.sm.setShapeSizeBs(1, -2147483648, null, bsBonds); +return Clazz_newIntArray(-1, [nNew, nModified]); +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N,JU.SB"); +Clazz_defineMethod(c$, "autoBondBs4", +function(bsA, bsB, bsExclude, bsBonds, mad, preJmol11_9_24, state){ +if (preJmol11_9_24) return this.autoBond_Pre_11_9_24(bsA, bsB, bsExclude, bsBonds, mad); +if (this.ac == 0) return 0; +if (mad == 0) mad = 1; +if (this.maxBondingRadius == 1.4E-45) this.findMaxRadii(); +var bondTolerance = this.vwr.getFloat(570425348); +var minBondDistance = this.vwr.getFloat(570425364); +var minBondDistance2 = minBondDistance * minBondDistance; +var nNew = 0; +if (this.showRebondTimes) JU.Logger.startTimer("autobond"); +var lastModelIndex = -1; +var isAll = (bsA == null); +var bsCheck; +var i0; +if (isAll) { +i0 = 0; +bsCheck = null; +} else { +if (bsA.equals(bsB)) { +bsCheck = bsA; +} else { +bsCheck = JU.BSUtil.copy(bsA); +bsCheck.or(bsB); +}i0 = bsCheck.nextSetBit(0); +}var iter = this.getSelectedAtomIterator(null, false, false, true, false); +var useOccupation = false; +for (var i = i0; i >= 0 && i < this.ac; i = (isAll ? i + 1 : bsCheck.nextSetBit(i + 1))) { +var isAtomInSetA = (isAll || bsA.get(i)); +var isAtomInSetB = (isAll || bsB.get(i)); +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var modelIndex = atom.mi; +if (modelIndex != lastModelIndex) { +lastModelIndex = modelIndex; +if (this.isJmolDataFrameForModel(modelIndex)) { +i = this.am[modelIndex].firstAtomIndex + this.am[modelIndex].act - 1; +continue; +}useOccupation = this.getInfoB(modelIndex, "autoBondUsingOccupation"); +}var myBondingRadius = atom.getBondingRadius(); +if (myBondingRadius == 0) continue; +var myFormalCharge = atom.getFormalCharge(); +var useCharge = (myFormalCharge != 0); +if (useCharge) myFormalCharge = Math.signum(myFormalCharge); +var isFirstExcluded = (bsExclude != null && bsExclude.get(i)); +var searchRadius = myBondingRadius + this.maxBondingRadius + bondTolerance; +this.setIteratorForAtom(iter, -1, i, searchRadius, null); +while (iter.hasNext()) { +var atomNear = this.at[iter.next()]; +if (atomNear.isDeleted()) continue; +var j = atomNear.i; +var isNearInSetA = (isAll || bsA.get(j)); +var isNearInSetB = (isAll || bsB.get(j)); +if (!isNearInSetA && !isNearInSetB || !(isAtomInSetA && isNearInSetB || isAtomInSetB && isNearInSetA) || isFirstExcluded && bsExclude.get(j) || useOccupation && this.occupancies != null && (this.occupancies[i] < 50) != (this.occupancies[j] < 50) || useCharge && (Math.signum(atomNear.getFormalCharge()) == myFormalCharge)) continue; +var order = (this.isBondable(myBondingRadius, atomNear.getBondingRadius(), iter.foundDistance2(), minBondDistance2, bondTolerance) ? 1 : 0); +if (order > 0 && this.autoBondCheck(atom, atomNear, order, mad, bsBonds)) { +nNew++; +if (state != null) state.append("connect ({" + i + "}) ({" + j + "});"); +}} +iter.release(); +} +if (this.showRebondTimes) JU.Logger.checkTimer("autoBond", false); +return nNew; +}, "JU.BS,JU.BS,JU.BS,JU.BS,~N,~B,JU.SB"); +Clazz_defineMethod(c$, "isBondable", +function(bondingRadiusA, bondingRadiusB, distance2, minBondDistance2, bondTolerance){ +if (bondingRadiusA == 0 || bondingRadiusB == 0 || distance2 < minBondDistance2) return false; +var maxAcceptable = bondingRadiusA + bondingRadiusB + bondTolerance; +var maxAcceptable2 = maxAcceptable * maxAcceptable; +return (distance2 <= maxAcceptable2); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "autoBondCheck", +function(atomA, atomB, order, mad, bsBonds){ +if (atomA.getCurrentBondCount() > 20 || atomB.getCurrentBondCount() > 20) { +if (!this.maxBondWarned) JU.Logger.warn("maximum auto bond count reached"); +this.maxBondWarned = true; +return false; +}var formalChargeA = atomA.getFormalCharge(); +if (formalChargeA != 0) { +var formalChargeB = atomB.getFormalCharge(); +if ((formalChargeA < 0 && formalChargeB < 0) || (formalChargeA > 0 && formalChargeB > 0)) return false; +}if (atomA.altloc != atomB.altloc && atomA.altloc != '\0' && atomB.altloc != '\0' && this.getModulation(atomA.i) == null) return false; +this.getOrAddBond(atomA, atomB, order, mad, bsBonds, 0, false); +return true; +}, "JM.Atom,JM.Atom,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "autoBond_Pre_11_9_24", +function(bsA, bsB, bsExclude, bsBonds, mad){ +if (this.ac == 0) return 0; +if (mad == 0) mad = 1; +if (this.maxBondingRadius == 1.4E-45) this.findMaxRadii(); +var bondTolerance = this.vwr.getFloat(570425348); +var minBondDistance = this.vwr.getFloat(570425364); +var minBondDistance2 = minBondDistance * minBondDistance; +var nNew = 0; +this.initializeBspf(); +var lastModelIndex = -1; +for (var i = this.ac; --i >= 0; ) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +var isAtomInSetA = (bsA == null || bsA.get(i)); +var isAtomInSetB = (bsB == null || bsB.get(i)); +if (!isAtomInSetA && !isAtomInSetB) continue; +if (atom.isDeleted()) continue; +var modelIndex = atom.mi; +if (modelIndex != lastModelIndex) { +lastModelIndex = modelIndex; +if (this.isJmolDataFrameForModel(modelIndex)) { +for (; --i >= 0; ) if (JM.AtomCollection.isDeleted(this.at[i]) || this.at[i].mi != modelIndex) break; + +i++; +continue; +}}var myBondingRadius = atom.getBondingRadius(); +if (myBondingRadius == 0) continue; +var searchRadius = myBondingRadius + this.maxBondingRadius + bondTolerance; +this.initializeBspt(modelIndex); +var iter = this.bspf.getCubeIterator(modelIndex); +iter.initialize(atom, searchRadius, true); +while (iter.hasMoreElements()) { +var atomNear = iter.nextElement(); +if (atomNear === atom || atomNear.isDeleted()) continue; +var atomIndexNear = atomNear.i; +var isNearInSetA = (bsA == null || bsA.get(atomIndexNear)); +var isNearInSetB = (bsB == null || bsB.get(atomIndexNear)); +if (!isNearInSetA && !isNearInSetB || bsExclude != null && bsExclude.get(atomIndexNear) && bsExclude.get(i)) continue; +if (!(isAtomInSetA && isNearInSetB || isAtomInSetB && isNearInSetA)) continue; +var order = (this.isBondable(myBondingRadius, atomNear.getBondingRadius(), iter.foundDistance2(), minBondDistance2, bondTolerance) ? 1 : 0); +if (order > 0) { +if (this.autoBondCheck(atom, atomNear, order, mad, bsBonds)) nNew++; +}} +iter.release(); +} +return nNew; +}, "JU.BS,JU.BS,JU.BS,JU.BS,~N"); +Clazz_defineMethod(c$, "autoHbond", +function(bsA, bsB, onlyIfHaveCalculated){ +if (onlyIfHaveCalculated) { +var bsModels = this.getModelBS(bsA, false); +for (var i = bsModels.nextSetBit(0); i >= 0 && onlyIfHaveCalculated; i = bsModels.nextSetBit(i + 1)) onlyIfHaveCalculated = !this.am[i].hasRasmolHBonds; + +if (onlyIfHaveCalculated) return 0; +}var haveHAtoms = false; +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) if (this.at[i].getElementNumber() == 1) { +haveHAtoms = true; +break; +} +var bsHBonds = new JU.BS(); +var useRasMol = this.vwr.getBoolean(603979853); +if (bsB == null || useRasMol && !haveHAtoms) { +JU.Logger.info((bsB == null ? "DSSP/DSSR " : "RasMol") + " pseudo-hbond calculation"); +this.calcRasmolHydrogenBonds(bsA, bsB, null, false, 2147483647, false, bsHBonds); +return -bsHBonds.cardinality(); +}JU.Logger.info(haveHAtoms ? "Standard Hbond calculation" : "Jmol pseudo-hbond calculation"); +var bsCO = null; +if (!haveHAtoms) { +bsCO = new JU.BS(); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var atomID = this.at[i].atomID; +switch (atomID) { +case 64: +case 4: +case 14: +case 15: +case 16: +case 17: +bsCO.set(i); +break; +} +} +}var dmax; +var min2; +if (haveHAtoms) { +dmax = this.vwr.getFloat(570425361); +min2 = 1; +} else { +dmax = this.vwr.getFloat(570425360); +min2 = JM.ModelSet.hbondMinRasmol * JM.ModelSet.hbondMinRasmol; +}var max2 = dmax * dmax; +var minAttachedAngle = (this.vwr.getFloat(570425359) * 3.141592653589793 / 180); +var nNew = 0; +var d2 = 0; +if (this.showRebondTimes && JU.Logger.debugging) JU.Logger.startTimer("hbond"); +var C = null; +var D = null; +var iter = this.getSelectedAtomIterator(bsB, false, false, false, false); +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var atom = this.at[i]; +var elementNumber = atom.getElementNumber(); +var isH = (elementNumber == 1); +if (isH ? !haveHAtoms : haveHAtoms || elementNumber != 7 && elementNumber != 8) continue; +var firstIsCO; +if (isH) { +firstIsCO = false; +var b = atom.bonds; +if (b == null) continue; +var isOK = false; +for (var j = 0; !isOK && j < b.length; j++) { +var a2 = b[j].getOtherAtom(atom); +var element = a2.getElementNumber(); +isOK = (element == 7 || element == 8); +} +if (!isOK) continue; +} else { +firstIsCO = bsCO.get(i); +}this.setIteratorForAtom(iter, -1, atom.i, dmax, null); +while (iter.hasNext()) { +var atomNear = this.at[iter.next()]; +var elementNumberNear = atomNear.getElementNumber(); +if (atomNear === atom || (isH ? elementNumberNear == 1 : elementNumberNear != 7 && elementNumberNear != 8) || (d2 = iter.foundDistance2()) < min2 || d2 > max2 || firstIsCO && bsCO.get(atomNear.i) || atom.isBonded(atomNear)) { +continue; +}this.v1.sub2(atom, atomNear); +if ((D = JM.ModelSet.checkMinAttachedAngle(atom, minAttachedAngle, this.v1, this.v2, haveHAtoms)) == null) continue; +this.v1.scale(-1); +if ((C = JM.ModelSet.checkMinAttachedAngle(atomNear, minAttachedAngle, this.v1, this.v2, haveHAtoms)) == null) continue; +var energy = 0; +var bo; +if (isH && !Float.isNaN(C.x) && !Float.isNaN(D.x)) { +bo = 4096; +energy = JM.HBond.calcEnergy(Math.sqrt(d2), C.distance(atom), C.distance(D), atomNear.distance(D)) / 1000; +} else { +bo = 2048; +}bsHBonds.set(this.addHBond(atom, atomNear, bo, energy)); +nNew++; +} +} +iter.release(); +this.sm.setShapeSizeBs(1, -2147483648, null, bsHBonds); +if (this.showRebondTimes) JU.Logger.checkTimer("hbond", false); +return (haveHAtoms ? nNew : -nNew); +}, "JU.BS,JU.BS,~B"); +c$.checkMinAttachedAngle = Clazz_defineMethod(c$, "checkMinAttachedAngle", +function(atom1, minAngle, v1, v2, haveHAtoms){ +var bonds = atom1.bonds; +var ignore = true; +var X = null; +if (bonds != null && bonds.length > 0) { +var dMin = 3.4028235E38; +for (var i = bonds.length; --i >= 0; ) if (bonds[i].isCovalent()) { +ignore = false; +var atomA = bonds[i].getOtherAtom(atom1); +if (!haveHAtoms && atomA.getElementNumber() == 1) continue; +v2.sub2(atom1, atomA); +var d = v2.angle(v1); +if (d < minAngle) return null; +if (d < dMin) { +X = atomA; +dMin = d; +}} +}return (ignore ? JU.P3.new3(NaN, 0, 0) : X); +}, "JM.Atom,~N,JU.V3,JU.V3,~B"); +Clazz_defineMethod(c$, "setStructureIndexes", +function(){ +var id; +var idnew = 0; +var lastid = -1; +var imodel = -1; +var lastmodel = -1; +for (var i = 0; i < this.ac; i++) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +if ((imodel = this.at[i].mi) != lastmodel) { +idnew = 0; +lastmodel = imodel; +lastid = -1; +}if ((id = this.at[i].group.getStrucNo()) != lastid && id != 0) { +this.at[i].group.setStrucNo(++idnew); +lastid = idnew; +}} +}); +Clazz_defineMethod(c$, "getModelInfoAsString", +function(){ +var sb = new JU.SB().append("\n"); +if (this.modelSetProperties != null) { +var e = this.modelSetProperties.propertyNames(); +while (e.hasMoreElements()) { +var propertyName = e.nextElement(); +sb.append("\n "); +} +sb.append("\n"); +}for (var i = 0; i < this.mc; ++i) { +sb.append("\n"); +} +sb.append("\n"); +return sb.toString(); +}); +Clazz_defineMethod(c$, "getSymmetryInfoAsString", +function(){ +var sb = new JU.SB().append("Symmetry Information:"); +for (var i = 0; i < this.mc; ++i) { +sb.append("\nmodel #").append(this.getModelNumberDotted(i)).append("; name=").append(this.getModelName(i)).append("\n"); +var unitCell = this.getUnitCell(i); +sb.append(unitCell == null ? "no symmetry information" : unitCell.getSymmetryInfoStr()); +} +return sb.toString(); +}); +Clazz_defineMethod(c$, "createModels", +function(n){ +var newModelCount = this.mc + n; +var newModels = JU.AU.arrayCopyObject(this.am, newModelCount); +this.validateBspf(false); +this.modelNumbers = JU.AU.arrayCopyI(this.modelNumbers, newModelCount); +this.modelFileNumbers = JU.AU.arrayCopyI(this.modelFileNumbers, newModelCount); +this.modelNumbersForAtomLabel = JU.AU.arrayCopyS(this.modelNumbersForAtomLabel, newModelCount); +this.modelNames = JU.AU.arrayCopyS(this.modelNames, newModelCount); +this.frameTitles = JU.AU.arrayCopyS(this.frameTitles, newModelCount); +var f = Clazz_doubleToInt(this.modelFileNumbers[this.mc - 1] / 1000000) + 1; +for (var i = this.mc, pt = 0; i < newModelCount; i++) { +this.modelNumbers[i] = i + this.mc; +this.modelFileNumbers[i] = f * 1000000 + (++pt); +this.modelNumbersForAtomLabel[i] = this.modelNames[i] = f + "." + pt; +} +this.thisStateModel = -1; +var group3Lists = this.getInfoM("group3Lists"); +if (group3Lists != null) { +var group3Counts = this.getInfoM("group3Counts"); +group3Lists = JU.AU.arrayCopyS(group3Lists, newModelCount); +group3Counts = JU.AU.arrayCopyII(group3Counts, newModelCount); +this.msInfo.put("group3Lists", group3Lists); +this.msInfo.put("group3Counts", group3Counts); +}this.unitCells = (this.unitCells == null ? new Array(newModelCount) : JU.AU.arrayCopyObject(this.unitCells, newModelCount)); +for (var i = this.mc; i < newModelCount; i++) { +newModels[i] = new JM.Model().set(this, i, -1, null, null, null); +newModels[i].loadState = " model create #" + i + ";"; +} +this.am = newModels; +this.mc = newModelCount; +this.vwr.setAnimationRange(-1, -1); +}, "~N"); +Clazz_defineMethod(c$, "deleteAtoms", +function(bs){ +if (bs == null) return; +var bsModels = this.getModelBS(bs, false); +var bsBonds = new JU.BS(); +var doNull = false; +for (var i = bs.nextSetBit(0); i >= 0 && i < this.ac; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +this.at[i].$delete(bsBonds); +if (doNull) this.at[i] = null; +} +var bsAtoms = JU.BSUtil.copy(bs); +for (var i = 0; i < this.mc; i++) { +var m = this.am[i]; +m.resetDSSR(false); +m.bsAtomsDeleted.or(bs); +m.bsAtomsDeleted.and(m.bsAtoms); +if (m.bsAsymmetricUnit != null) m.bsAsymmetricUnit.andNot(bs); +if (bsModels.get(m.modelIndex)) { +this.updateBasisFromSite(m.modelIndex); +}bs = JU.BSUtil.andNot(m.bsAtoms, m.bsAtomsDeleted); +m.firstAtomIndex = bs.nextSetBit(0); +m.act = bs.cardinality(); +m.isOrderly = (m.act == m.bsAtoms.length() - m.firstAtomIndex); +} +this.deleteBonds(bsBonds, false); +this.vwr.shm.notifyAtoms("atomsDeleted", Clazz_newArray(-1, [bsAtoms, bsModels])); +this.validateBspf(false); +}, "JU.BS"); +Clazz_defineMethod(c$, "clearDB", +function(atomIndex){ +this.getModelAuxiliaryInfo(this.at[atomIndex].mi).remove("dbName"); +}, "~N"); +Clazz_defineMethod(c$, "adjustAtomArrays", +function(map, i0, ac){ +this.ac = ac; +for (var i = i0; i < ac; i++) { +this.at[i] = this.at[map[i]]; +this.at[i].i = i; +var m = this.am[this.at[i].mi]; +if (m.firstAtomIndex == map[i]) m.firstAtomIndex = i; +m.bsAtoms.set(i); +} +if (this.vibrations != null) for (var i = i0; i < ac; i++) this.vibrations[i] = this.vibrations[map[i]]; + +if (this.atomTensorList != null) { +for (var i = i0; i < ac; i++) { +var list = this.atomTensorList[i] = this.atomTensorList[map[i]]; +if (list != null) for (var j = list.length; --j >= 0; ) { +var t = list[j]; +if (t != null) { +t.atomIndex1 = i; +}} +} +}if (this.atomNames != null) for (var i = i0; i < ac; i++) this.atomNames[i] = this.atomNames[map[i]]; + +if (this.atomTypes != null) for (var i = i0; i < ac; i++) this.atomTypes[i] = this.atomTypes[map[i]]; + +if (this.atomResnos != null) for (var i = i0; i < ac; i++) this.atomResnos[i] = this.atomResnos[map[i]]; + +if (this.atomSerials != null) for (var i = i0; i < ac; i++) this.atomSerials[i] = this.atomSerials[map[i]]; + +if (this.atomSeqIDs != null) for (var i = i0; i < ac; i++) this.atomSeqIDs[i] = this.atomSeqIDs[map[i]]; + +if (this.bfactor100s != null) for (var i = i0; i < ac; i++) this.bfactor100s[i] = this.bfactor100s[map[i]]; + +if (this.occupancies != null) for (var i = i0; i < ac; i++) this.occupancies[i] = this.occupancies[map[i]]; + +if (this.partialCharges != null) for (var i = i0; i < ac; i++) this.partialCharges[i] = this.partialCharges[map[i]]; + +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "growAtomArrays", +function(newLength){ +this.at = JU.AU.arrayCopyObject(this.at, newLength); +if (this.vibrations != null) this.vibrations = JU.AU.arrayCopyObject(this.vibrations, newLength); +if (this.occupancies != null) this.occupancies = JU.AU.arrayCopyF(this.occupancies, newLength); +if (this.bfactor100s != null) this.bfactor100s = JU.AU.arrayCopyShort(this.bfactor100s, newLength); +if (this.partialCharges != null) this.partialCharges = JU.AU.arrayCopyF(this.partialCharges, newLength); +if (this.atomTensorList != null) this.atomTensorList = JU.AU.arrayCopyObject(this.atomTensorList, newLength); +if (this.atomNames != null) this.atomNames = JU.AU.arrayCopyS(this.atomNames, newLength); +if (this.atomTypes != null) this.atomTypes = JU.AU.arrayCopyS(this.atomTypes, newLength); +if (this.atomResnos != null) this.atomResnos = JU.AU.arrayCopyI(this.atomResnos, newLength); +if (this.atomSerials != null) this.atomSerials = JU.AU.arrayCopyI(this.atomSerials, newLength); +if (this.atomSeqIDs != null) this.atomSeqIDs = JU.AU.arrayCopyI(this.atomSeqIDs, newLength); +}, "~N"); +Clazz_defineMethod(c$, "addAtom", +function(modelIndex, group, atomicAndIsotopeNumber, atomName, atomType, atomSerial, atomSeqID, atomSite, xyz, radius, vib, formalCharge, partialCharge, occupancy, bfactor, tensors, isHetero, specialAtomID, atomSymmetry, bondRadius){ +var atom = new JM.Atom().setAtom(modelIndex, this.ac, xyz, radius, atomSymmetry, atomSite, atomicAndIsotopeNumber, formalCharge, isHetero); +this.am[modelIndex].act++; +this.am[modelIndex].bsAtoms.set(this.ac); +if (JU.Elements.isElement(atomicAndIsotopeNumber, 1)) this.am[modelIndex].hydrogenCount++; +if (this.ac >= this.at.length) this.growAtomArrays(this.ac + 100); +this.at[this.ac] = atom; +this.setBFactor(this.ac, bfactor, false); +this.setOccupancy(this.ac, occupancy, false); +this.setPartialCharge(this.ac, partialCharge, false); +if (tensors != null) this.setAtomTensors(this.ac, tensors); +atom.group = group; +atom.colixAtom = this.vwr.cm.getColixAtomPalette(atom, J.c.PAL.CPK.id); +if (atomName != null) { +if (atomType != null) { +if (this.atomTypes == null) this.atomTypes = new Array(this.at.length); +this.atomTypes[this.ac] = atomType; +}atom.atomID = specialAtomID; +if (specialAtomID == 0) { +if (this.atomNames == null) this.atomNames = new Array(this.at.length); +this.atomNames[this.ac] = atomName.intern(); +}}if (atomSerial != -2147483648) { +if (this.atomSerials == null) this.atomSerials = Clazz_newIntArray (this.at.length, 0); +this.atomSerials[this.ac] = atomSerial; +}if (atomSeqID != 0) { +if (this.atomSeqIDs == null) this.atomSeqIDs = Clazz_newIntArray (this.at.length, 0); +this.atomSeqIDs[this.ac] = atomSeqID; +}if (vib != null) this.setVibrationVector(this.ac, vib); +if (!Float.isNaN(bondRadius)) this.setBondingRadius(this.ac, bondRadius); +this.ac++; +return atom; +}, "~N,JM.Group,~N,~S,~S,~N,~N,~N,JU.P3,~N,JU.V3,~N,~N,~N,~N,JU.Lst,~B,~N,JU.BS,~N"); +Clazz_defineMethod(c$, "getInlineData", +function(modelIndex){ +var data = null; +if (modelIndex >= 0) data = this.am[modelIndex].loadScript; + else for (modelIndex = this.mc; --modelIndex >= 0; ) if ((data = this.am[modelIndex].loadScript).length() > 0) break; + +var pt = data.lastIndexOf("data \""); +if (pt < 0) { +var s = JU.PT.getQuotedStringAt(data.toString(), 0); +return JS.ScriptCompiler.unescapeString(s, 0, s.length); +}pt = data.indexOf2("\"", pt + 7); +var pt2 = data.lastIndexOf("end \""); +if (pt2 < pt || pt < 0) return null; +return data.substring2(pt + 2, pt2); +}, "~N"); +Clazz_defineMethod(c$, "isAtomPDB", +function(i){ +return i >= 0 && this.am[this.at[i].mi].isBioModel; +}, "~N"); +Clazz_defineMethod(c$, "setAtomNamesAndNumbers", +function(iFirst, baseAtomIndex, mergeSet, isModelKit){ +var mi0 = -1; +if (isModelKit) { +while (iFirst < this.ac && JM.AtomCollection.isDeleted(this.at[iFirst])) iFirst++; + +if (iFirst >= this.ac) return; +mi0 = this.at[iFirst].mi; +iFirst = this.am[mi0].firstAtomIndex; +}if (this.atomSerials == null) this.atomSerials = Clazz_newIntArray (this.ac, 0); +if (this.atomNames == null) this.atomNames = new Array(this.ac); +var isZeroBased = this.isXYZ && this.vwr.getBoolean(603979978); +var thisModelIndex = 2147483647; +var atomNo = 1; +for (var i = iFirst; i < this.ac; ++i) { +var atom = this.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (atom.mi != thisModelIndex) { +if (isModelKit && thisModelIndex != 2147483647 && atom.mi != mi0) continue; +thisModelIndex = atom.mi; +atomNo = (isZeroBased ? 0 : 1); +}var ano = this.atomSerials[i]; +if (i >= -baseAtomIndex) { +if (ano == 0 || isModelKit) this.atomSerials[i] = (i < baseAtomIndex ? mergeSet.atomSerials[i] : atomNo); +if (this.atomNames[i] == null || isModelKit) this.atomNames[i] = (atom.getElementSymbol() + this.atomSerials[i]).intern(); +} else { +if (ano > atomNo) { +atomNo = ano; +}if (isModelKit) { +this.atomNames[i] = (atom.getElementSymbol() + ano).intern(); +}}if (!this.am[thisModelIndex].isModelKit || atom.getElementNumber() > 0) atomNo++; +} +}, "~N,~N,JM.AtomCollection,~B"); +Clazz_defineMethod(c$, "connect", +function(connections){ +this.resetMolecules(); +var bsDelete = new JU.BS(); +for (var i = 0; i < connections.length; i++) { +var f = connections[i]; +if (f == null || f.length < 2) continue; +var index1 = Clazz_floatToInt(f[0]); +var addGroup = (index1 < 0); +if (addGroup) index1 = -1 - index1; +var index2 = Clazz_floatToInt(f[1]); +if (index2 < 0 || index1 >= this.ac || index2 >= this.ac) continue; +var order = (f.length > 2 ? Clazz_floatToInt(f[2]) : 1); +if (order < 0) order &= 0xFFFF; +var mad = (f.length > 3 ? Clazz_floatToShort(1000 * connections[i][3]) : this.getDefaultMadFromOrder(order)); +if (order == 0 || mad == 0 && order != 32768 && !JU.Edge.isOrderH(order)) { +var b = this.at[index1].getBond(this.at[index2]); +if (b != null) bsDelete.set(b.index); +continue; +}var energy = (f.length > 4 ? f[4] : 0); +this.bondAtoms(this.at[index1], this.at[index2], order, mad, null, energy, addGroup, true); +} +if (bsDelete.nextSetBit(0) >= 0) this.deleteBonds(bsDelete, false); +}, "~A"); +Clazz_defineMethod(c$, "setFrameDelayMs", +function(millis, bsModels){ +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) this.am[this.am[i].trajectoryBaseIndex].frameDelay = millis; + +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getFrameDelayMs", +function(i){ +return (i < this.am.length && i >= 0 ? this.am[this.am[i].trajectoryBaseIndex].frameDelay : 0); +}, "~N"); +Clazz_defineMethod(c$, "getModelIndexFromId", +function(id){ +var haveFile = (id.indexOf("#") >= 0); +var isBaseModel = id.toLowerCase().endsWith(".basemodel"); +if (isBaseModel) id = id.substring(0, id.length - 10); +var errCode = -1; +var fname = null; +for (var i = 0; i < this.mc; i++) { +var mid = this.getInfo(i, "modelID"); +var mnum = (id.startsWith("~") ? "~" + this.getModelNumberDotted(i) : null); +if (mnum == null && mid == null && (mid = this.getModelTitle(i)) == null) continue; +if (haveFile) { +fname = this.getModelFileName(i); +if (fname.endsWith("#molfile")) { +mid = fname; +} else { +fname += "#"; +mid = fname + mid; +}}if (id.equalsIgnoreCase(mid) || id.equalsIgnoreCase(mnum)) return (isBaseModel ? this.vwr.getJDXBaseModelIndex(i) : i); +if (fname != null && id.startsWith(fname)) errCode = -2; +} +return (fname == null && !haveFile ? -2 : errCode); +}, "~S"); +Clazz_defineMethod(c$, "getModelSetAuxiliaryInfo", +function(bsModels){ +var info = this.msInfo; +if (info == null) info = new java.util.Hashtable(); +if (bsModels != null || !info.containsKey("models")) { +var minfo = new JU.Lst(); +for (var i = 0; i < this.mc; ++i) if (bsModels == null || bsModels.get(i)) { +var m = this.getModelAuxiliaryInfo(i); +m.put("modelIndex", Integer.$valueOf(i)); +minfo.addLast(m); +} +info.put("models", minfo); +}return info; +}, "JU.BS"); +Clazz_defineMethod(c$, "getDihedralMap", +function(alist){ +var list = new JU.Lst(); +var n = alist.length; +var ai = null; +var aj = null; +var ak = null; +var al = null; +for (var i = n - 1; --i >= 0; ) for (var j = n; --j > i; ) { +ai = this.at[alist[i]]; +aj = this.at[alist[j]]; +if (ai.isBonded(aj)) { +for (var k = n; --k >= 0; ) if (k != i && k != j && (ak = this.at[alist[k]]).isBonded(ai)) for (var l = n; --l >= 0; ) if (l != i && l != j && l != k && (al = this.at[alist[l]]).isBonded(aj)) { +var a = Clazz_newIntArray (4, 0); +a[0] = ak.i; +a[1] = ai.i; +a[2] = aj.i; +a[3] = al.i; +list.addLast(a); +} + +}} + +n = list.size(); +var ilist = JU.AU.newInt2(n); +for (var i = n; --i >= 0; ) ilist[n - i - 1] = list.get(i); + +return ilist; +}, "~A"); +Clazz_defineMethod(c$, "setModulation", +function(bs, isOn, qtOffset, isQ){ +if (this.bsModulated == null) { +if (isOn) this.bsModulated = new JU.BS(); + else if (bs == null) return; +}if (bs == null) bs = this.getModelAtomBitSetIncludingDeleted(-1, false); +var scale = this.vwr.getFloat(1275072532); +var haveMods = false; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var ms = this.getModulation(i); +if (ms == null) continue; +ms.setModTQ(this.at[i], isOn, qtOffset, isQ, scale); +if (this.bsModulated != null) this.bsModulated.setBitTo(i, isOn); +haveMods = true; +} +if (!haveMods) this.bsModulated = null; +}, "JU.BS,~B,JU.P3,~B"); +Clazz_defineMethod(c$, "getBoundBoxOrientation", +function(type, bsAtoms, points){ +var dx = 0; +var dy = 0; +var dz = 0; +var q = null; +var qBest = null; +var j0 = bsAtoms.nextSetBit(0); +var vMin = 0; +if (j0 >= 0) { +if (this.vOrientations == null) { +var n = 0; +var p4 = new JU.P4(); +var av = new Array(3375); +for (var i = -7; i <= 7; i++) for (var j = -7; j <= 7; j++) for (var k = 0; k <= 14; k++, n++) if ((av[n] = JU.V3.new3(i / 7, j / 7, k / 14)).length() > 1) --n; + + + +this.vOrientations = new Array(n); +for (var i = n; --i >= 0; ) { +p4.set4(av[i].x, av[i].y, av[i].z, 0); +this.vOrientations[i] = JU.Quat.newP4(p4); +} +for (var i = n; --i >= 0; ) { +var cos = Math.sqrt(1 - av[i].lengthSquared()); +if (Float.isNaN(cos)) cos = 0; +p4.set4(av[i].x, av[i].y, av[i].z, cos); +this.vOrientations[i] = JU.Quat.newP4(p4); +} +}var pt = new JU.P3(); +vMin = 3.4028235E38; +var bBest = null; +var v; +var b = new JU.BoxInfo(); +b.setMargin(type == 1312817669 ? 0 : 0.1); +for (var i = this.vOrientations.length; --i >= 0; ) { +q = this.vOrientations[i]; +b.reset(); +if (points == null) { +for (var j = j0; j >= 0; j = bsAtoms.nextSetBit(j + 1)) { +var p = q.transform2(this.at[j], pt); +b.addBoundBoxPoint(p); +} +} else { +for (var j = points.length; --j >= 0; ) b.addBoundBoxPoint(q.transform2(points[j], pt)); + +}switch (type) { +default: +case 1312817669: +case 1073741864: +case 1814695966: +v = (b.bbCorner1.x - b.bbCorner0.x) * (b.bbCorner1.y - b.bbCorner0.y) * (b.bbCorner1.z - b.bbCorner0.z); +break; +case 1111492629: +v = b.bbCorner1.x - b.bbCorner0.x; +break; +case 1111492630: +v = b.bbCorner1.y - b.bbCorner0.y; +break; +case 1111492631: +v = b.bbCorner1.z - b.bbCorner0.z; +break; +} +if (v < vMin) { +qBest = q; +bBest = b; +b = new JU.BoxInfo(); +b.setMargin(0.1); +vMin = v; +}} +switch (type) { +default: +return qBest; +case 1814695966: +var pts = bBest.getBoundBoxVertices(); +pts = Clazz_newArray(-1, [pts[0], pts[4], pts[2], pts[1]]); +qBest = qBest.inv(); +for (var i = 0; i < 4; i++) { +qBest.transform2(pts[i], pts[i]); +if (i > 0) pts[i].sub(pts[0]); +} +return pts; +case 1312817669: +case 1073741864: +q = JU.Quat.newQ(qBest); +dx = bBest.bbCorner1.x - bBest.bbCorner0.x; +dy = bBest.bbCorner1.y - bBest.bbCorner0.y; +dz = bBest.bbCorner1.z - bBest.bbCorner0.z; +if (dx < dy) { +pt.set(0, 0, 1); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dx; +dx = dy; +dy = f; +}if (dy < dz) { +if (dz > dx) { +pt.set(0, 1, 0); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dx; +dx = dz; +dz = f; +}pt.set(1, 0, 0); +q = JU.Quat.newVA(pt, 90).mulQ(q); +var f = dy; +dy = dz; +dz = f; +}break; +} +}return (type == 1312817669 ? vMin + "\t{" + dx + " " + dy + " " + dz + "}\t" + bsAtoms : type == 1814695966 ? null : q == null || q.getTheta() == 0 ? new JU.Quat() : q); +}, "~N,JU.BS,~A"); +Clazz_defineMethod(c$, "getUnitCellForAtom", +function(index){ +if (index < 0 || index > this.ac || this.at[index] == null) return null; +if (this.bsModulated != null) { +var ms = this.getModulation(index); +var uc = (ms == null ? null : ms.getSubSystemUnitCell()); +if (uc != null) return uc; +}return this.getUnitCell(this.at[index].mi); +}, "~N"); +Clazz_defineMethod(c$, "clearCache", +function(){ +for (var i = this.mc; --i >= 0; ) this.am[i].resetDSSR(false); + +}); +Clazz_defineMethod(c$, "getSymMatrices", +function(modelIndex){ +var n = this.getModelSymmetryCount(modelIndex); +if (n == 0) return null; +var ops = new Array(n); +var unitcell = this.am[modelIndex].biosymmetry; +if (unitcell == null) unitcell = this.getUnitCell(modelIndex); +for (var i = n; --i >= 0; ) ops[i] = unitcell.getSpaceGroupOperation(i); + +return ops; +}, "~N"); +Clazz_defineMethod(c$, "getSymmetryInvariant", +function(iatom){ +var a = this.getBasisAtom(iatom, true); +if (a == null) return Clazz_newIntArray (0, 0); +return this.getUnitCellForAtom(a.i).getInvariantSymops(a, null); +}, "~N"); +Clazz_defineMethod(c$, "getBsBranches", +function(dihedralList){ +var n = Clazz_doubleToInt(dihedralList.length / 6); +var bsBranches = new Array(n); +var map = new java.util.Hashtable(); +for (var i = 0, pt = 0; i < n; i++, pt += 6) { +var dv = dihedralList[pt + 5] - dihedralList[pt + 4]; +if (Math.abs(dv) < 1) continue; +var i0 = Clazz_floatToInt(dihedralList[pt + 1]); +var i1 = Clazz_floatToInt(dihedralList[pt + 2]); +var s = "" + i0 + "_" + i1; +if (map.containsKey(s)) continue; +map.put(s, Boolean.TRUE); +var bs = this.vwr.getBranchBitSet(i1, i0, true); +var bonds = this.at[i0].bonds; +var a0 = this.at[i0]; +for (var j = 0; j < bonds.length; j++) { +var b = bonds[j]; +if (!b.isCovalent()) continue; +var i2 = b.getOtherAtom(a0).i; +if (i2 == i1) continue; +if (bs.get(i2)) { +bs = null; +break; +}} +bsBranches[i] = bs; +} +return bsBranches; +}, "~A"); +Clazz_defineMethod(c$, "recalculatePositionDependentQuantities", +function(bsAtoms, mat){ +if ((this.vwr.shm.getShape(21) != null)) this.vwr.shm.getShapePropertyData(21, "move", Clazz_newArray(-1, [bsAtoms, mat])); +if (this.haveStraightness) this.calculateStraightnessAll(); +this.recalculateLeadMidpointsAndWingVectors(-1); +var bsModels = this.getModelBS(bsAtoms, false); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +this.sm.notifyAtomPositionsChanged(i, bsAtoms, mat); +if (mat != null) { +var m = this.am[i]; +if (m.isContainedIn(bsAtoms)) { +if (m.mat4 == null) m.mat4 = JU.M4.newM4(null); +m.mat4.mul2(mat, m.mat4); +}}} +}, "JU.BS,JU.M4"); +Clazz_defineMethod(c$, "moveAtoms", +function(m4, mNew, rotation, translation, bs, center, isInternal, translationOnly){ +if (m4 != null) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +m4.rotTrans(this.at[i]); +this.taintAtom(i, 2); +} +this.mat4.setM4(m4); +translation = null; +} else if (translationOnly) { +if (!isInternal) { +this.matInv.setM3(rotation); +this.matInv.invert(); +this.matInv.rotate(translation); +}} else { +if (mNew == null) { +this.matTemp.setM3(rotation); +} else { +this.ptTemp.set(0, 0, 0); +this.matInv.setM3(rotation); +this.matInv.invert(); +this.matTemp.mul2(mNew, rotation); +this.matTemp.mul2(this.matInv, this.matTemp); +}if (isInternal) { +this.vTemp.setT(center); +this.mat4.setIdentity(); +this.mat4.setTranslation(this.vTemp); +this.mat4t.setToM3(this.matTemp); +this.mat4.mul(this.mat4t); +this.mat4t.setIdentity(); +this.vTemp.scale(-1); +this.mat4t.setTranslation(this.vTemp); +this.mat4.mul(this.mat4t); +} else { +this.mat4.setToM3(this.matTemp); +}for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (isInternal) { +this.mat4.rotTrans(this.at[i]); +} else { +this.ptTemp.add(this.at[i]); +this.mat4.rotTrans(this.at[i]); +this.ptTemp.sub(this.at[i]); +}this.taintAtom(i, 2); +} +if (!isInternal) { +this.ptTemp.scale(1 / bs.cardinality()); +if (translation == null) translation = new JU.V3(); +translation.add(this.ptTemp); +}}if (translation != null) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].add(translation); +this.taintAtom(i, 2); +} +if (!translationOnly) { +this.mat4t.setIdentity(); +this.mat4t.setTranslation(translation); +this.mat4.mul2(this.mat4t, this.mat4); +}}this.recalculatePositionDependentQuantities(bs, this.mat4); +}, "JU.M4,JU.M3,JU.M3,JU.V3,JU.BS,JU.P3,~B,~B"); +Clazz_defineMethod(c$, "setDihedrals", +function(dihedralList, bsBranches, f){ +var n = Clazz_doubleToInt(dihedralList.length / 6); +if (f > 1) f = 1; +for (var j = 0, pt = 0; j < n; j++, pt += 6) { +var bs = bsBranches[j]; +if (bs == null || bs.isEmpty()) continue; +var a1 = this.at[Clazz_floatToInt(dihedralList[pt + 1])]; +var v = JU.V3.newVsub(this.at[Clazz_floatToInt(dihedralList[pt + 2])], a1); +var angle = (dihedralList[pt + 5] - dihedralList[pt + 4]) * f; +var aa = JU.A4.newVA(v, (-angle / 57.29577951308232)); +this.matTemp.setAA(aa); +this.ptTemp.setT(a1); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.at[i].sub(this.ptTemp); +this.matTemp.rotate(this.at[i]); +this.at[i].add(this.ptTemp); +this.taintAtom(i, 2); +} +} +}, "~A,~A,~N"); +Clazz_defineMethod(c$, "setAtomCoordsRelative", +function(offset, bs){ +this.setAtomsCoordRelative(bs, offset.x, offset.y, offset.z); +this.mat4.setIdentity(); +this.vTemp.setT(offset); +this.mat4.setTranslation(this.vTemp); +this.recalculatePositionDependentQuantities(bs, this.mat4); +}, "JU.T3,JU.BS"); +Clazz_defineMethod(c$, "setAtomCoords", +function(bs, tokType, xyzValues){ +this.setAtomCoord2(bs, tokType, xyzValues); +switch (tokType) { +case 1111492626: +case 1111492627: +case 1111492628: +case 1145047055: +break; +default: +this.recalculatePositionDependentQuantities(bs, null); +} +}, "JU.BS,~N,~O"); +Clazz_defineMethod(c$, "invertSelected", +function(pt, plane, iAtom, bsAtoms){ +this.resetChirality(); +if (pt != null) { +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var x = (pt.x - this.at[i].x) * 2; +var y = (pt.y - this.at[i].y) * 2; +var z = (pt.z - this.at[i].z) * 2; +this.setAtomCoordRelative(i, x, y, z); +} +return; +}if (plane != null) { +var norm = JU.V3.new3(plane.x, plane.y, plane.z); +norm.normalize(); +var d = Math.sqrt(plane.x * plane.x + plane.y * plane.y + plane.z * plane.z); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var twoD = -JU.Measure.distanceToPlaneD(plane, d, this.at[i]) * 2; +var x = norm.x * twoD; +var y = norm.y * twoD; +var z = norm.z * twoD; +this.setAtomCoordRelative(i, x, y, z); +} +return; +}if (iAtom >= 0) { +var thisAtom = this.at[iAtom]; +var bonds = thisAtom.bonds; +if (bonds == null) return; +var bsToMove = new JU.BS(); +var vNot = new JU.Lst(); +var bsModel = this.vwr.getModelUndeletedAtomsBitSet(thisAtom.mi); +for (var i = 0; i < bonds.length; i++) { +var a = bonds[i].getOtherAtom(thisAtom); +if (bsAtoms.get(a.i)) { +bsToMove.or(JU.JmolMolecule.getBranchBitSet(this.at, a.i, bsModel, null, iAtom, true, true)); +} else { +vNot.addLast(a); +}} +if (vNot.size() == 0) return; +pt = JU.Measure.getCenterAndPoints(vNot)[0]; +var v = JU.V3.newVsub(thisAtom, pt); +var q = JU.Quat.newVA(v, 180); +this.moveAtoms(null, null, q.getMatrix(), null, bsToMove, thisAtom, true, false); +}}, "JU.P3,JU.P4,~N,JU.BS"); +Clazz_defineMethod(c$, "getCellWeights", +function(bsAtoms){ +var wts = null; +var i = bsAtoms.nextSetBit(0); +var iModel = -1; +var sym; +var a; +if (i >= 0 && (sym = this.getUnitCell(iModel = (a = this.at[i]).mi)) != null) { +sym = sym.getUnitCellMultiplied(); +var bs = this.getModelAtomBitSetIncludingDeleted(iModel, true); +bs.and(bsAtoms); +wts = Clazz_newFloatArray (bsAtoms.cardinality(), 0); +var pt = new JU.P3(); +for (var p = 0; i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +a = this.at[i]; +pt.setT(a); +sym.toFractional(pt, false); +sym.unitize(pt); +wts[p++] = sym.getCellWeight(pt); +} +}return wts; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAtomGroupQuaternions", +function(bsAtoms, nMax, qtype){ +var n = 0; +var v = new JU.Lst(); +bsAtoms = JU.BSUtil.copy(bsAtoms); +var bsDone = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0 && n < nMax; i = bsAtoms.nextSetBit(i + 1)) { +var g = this.at[i].group; +g.setAtomBits(bsDone); +bsAtoms.andNot(bsDone); +var q = g.getQuaternion(qtype); +if (q == null) { +if (!this.am[this.at[i].mi].isBioModel) q = g.getQuaternionFrame(this.at); +if (q == null) continue; +}n++; +v.addLast(q); +} +return v.toArray( new Array(v.size())); +}, "JU.BS,~N,~S"); +Clazz_defineMethod(c$, "getConformation", +function(modelIndex, conformationIndex, doSet, bsSelected){ +var bs = new JU.BS(); +for (var i = this.mc; --i >= 0; ) { +if (modelIndex >= 0 && i != modelIndex) continue; +var m = this.am[i]; +var bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +if (bsSelected != null) bsAtoms.and(bsSelected); +if (bsAtoms.nextSetBit(0) < 0) continue; +if (conformationIndex > m.altLocCount) { +if (conformationIndex == 1) bs.or(bsAtoms); +continue; +}var c0; +if (this.am[i].isBioModel) { +if (conformationIndex < -1000) { +c0 = 1000 + conformationIndex; +var altLocs = this.getAltLocListInModel(i); +if (c0 != -32 && altLocs.indexOf(String.fromCharCode(-c0)) < 0) c0 = -2147483648; +} else if (conformationIndex < 0) { +var altLocs = this.getAltLocListInModel(i); +c0 = -1 - conformationIndex; +c0 = (c0 >= altLocs.length ? -2147483648 : -(altLocs.charAt(c0)).charCodeAt(0)); +} else { +c0 = conformationIndex; +}if (c0 == -2147483648) continue; +(this.am[i]).getConformation(c0, doSet, bsAtoms, bs); +} else { +var nAltLocs = this.getAltLocCountInModel(i); +var altLocs = this.getAltLocListInModel(i); +var bsTemp = new JU.BS(); +if (conformationIndex < -1000) { +var c = String.fromCharCode(-1000 - conformationIndex); +c0 = altLocs.indexOf(c); +} else { +c0 = Math.abs(conformationIndex) - 1; +}if (c0 < 0 || c0 >= nAltLocs) { +continue; +}for (var c = nAltLocs; --c >= 0; ) if (c != c0) bsAtoms.andNot(this.getAtomBitsMDa(1073742355, altLocs.substring(c, c + 1), bsTemp)); + +}bs.or(bsAtoms); +} +return bs; +}, "~N,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "getSequenceBits", +function(specInfo, bsAtoms, bsResult){ +return (this.haveBioModels ? this.bioModelset.getAllSequenceBits(specInfo, bsAtoms, bsResult) : bsResult); +}, "~S,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getBioPolymerCountInModel", +function(modelIndex){ +return (this.haveBioModels ? this.bioModelset.getBioPolymerCountInModel(modelIndex) : 0); +}, "~N"); +Clazz_defineMethod(c$, "getPolymerPointsAndVectors", +function(bs, vList, isTraceAlpha, sheetSmoothing){ +if (this.haveBioModels) this.bioModelset.getAllPolymerPointsAndVectors(bs, vList, isTraceAlpha, sheetSmoothing); +}, "JU.BS,JU.Lst,~B,~N"); +Clazz_defineMethod(c$, "recalculateLeadMidpointsAndWingVectors", +function(modelIndex){ +if (this.haveBioModels) this.bioModelset.recalculatePoints(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "calcRasmolHydrogenBonds", +function(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds){ +if (this.haveBioModels) this.bioModelset.calcAllRasmolHydrogenBonds(bsA, bsB, vHBonds, nucleicOnly, nMax, dsspIgnoreHydrogens, bsHBonds, 2); +}, "JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "calculateStraightnessAll", +function(){ +if (this.haveBioModels && !this.haveStraightness) this.bioModelset.calculateStraightnessAll(); +}); +Clazz_defineMethod(c$, "calculateStruts", +function(bs1, bs2){ +return (this.haveBioModels ? this.bioModelset.calculateStruts(bs1, bs2) : 0); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getGroupsWithin", +function(nResidues, bs){ +return (this.haveBioModels ? this.bioModelset.getGroupsWithinAll(nResidues, bs) : new JU.BS()); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getProteinStructureState", +function(bsAtoms, mode){ +return (this.haveBioModels ? this.bioModelset.getFullProteinStructureState(bsAtoms, mode) : ""); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "calculateStructures", +function(bsAtoms, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, version){ +return (this.haveBioModels ? this.bioModelset.calculateAllStuctures(bsAtoms, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, version) : ""); +}, "JU.BS,~B,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "calculateStructuresAllExcept", +function(alreadyDefined, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version){ +this.freezeModels(); +return (this.haveBioModels ? this.bioModelset.calculateAllStructuresExcept(alreadyDefined, asDSSP, doReport, dsspIgnoreHydrogen, setStructure, includeAlpha, version) : ""); +}, "JU.BS,~B,~B,~B,~B,~B,~N"); +Clazz_defineMethod(c$, "recalculatePolymers", +function(bsModelsExcluded){ +this.bioModelset.recalculateAllPolymers(bsModelsExcluded, this.getGroups()); +}, "JU.BS"); +Clazz_defineMethod(c$, "calculatePolymers", +function(groups, groupCount, baseGroupIndex, modelsExcluded){ +if (this.bioModelset != null) this.bioModelset.calculateAllPolymers(groups, groupCount, baseGroupIndex, modelsExcluded); +}, "~A,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "calcSelectedMonomersCount", +function(){ +if (this.haveBioModels) this.bioModelset.calcSelectedMonomersCount(); +}); +Clazz_defineMethod(c$, "setProteinType", +function(bs, type){ +if (this.haveBioModels) this.bioModelset.setAllProteinType(bs, type); +}, "JU.BS,J.c.STR"); +Clazz_defineMethod(c$, "setStructureList", +function(structureList){ +if (this.haveBioModels) this.bioModelset.setAllStructureList(structureList); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setConformation", +function(bsAtoms){ +if (this.haveBioModels) this.bioModelset.setAllConformation(bsAtoms); +return JU.BSUtil.copy(bsAtoms); +}, "JU.BS"); +Clazz_defineMethod(c$, "getHeteroList", +function(modelIndex){ +var o = (this.haveBioModels ? this.bioModelset.getAllHeteroList(modelIndex) : null); +return (o == null ? this.getInfoM("hetNames") : o); +}, "~N"); +Clazz_defineMethod(c$, "getUnitCellPointsWithin", +function(distance, bs, pt, asMap){ +var lst = new JU.Lst(); +var map = null; +var lstI = null; +if (asMap) { +map = new java.util.Hashtable(); +lstI = new JU.Lst(); +map.put("atoms", lstI); +map.put("points", lst); +}var iAtom = (bs == null ? -1 : bs.nextSetBit(0)); +bs = this.vwr.getModelUndeletedAtomsBitSet(iAtom < 0 ? this.vwr.am.cmi : this.at[iAtom].mi); +if (iAtom < 0) iAtom = bs.nextSetBit(0); +if (iAtom >= 0) { +var unitCell = this.getUnitCellForAtom(iAtom); +if (unitCell != null) { +var iter = unitCell.getIterator(this.vwr, this.at[iAtom], bs, distance); +if (pt != null) iter.setCenter(pt, distance); +while (iter.hasNext()) { +iAtom = iter.next(); +pt = iter.getPosition(); +lst.addLast(pt); +if (asMap) { +lstI.addLast(Integer.$valueOf(iAtom)); +}} +}}return (asMap ? map : lst); +}, "~N,JU.BS,JU.P3,~B"); +Clazz_defineMethod(c$, "calculateDssrProperty", +function(dataType){ +if (dataType == null) return; +if (this.dssrData == null || this.dssrData.length < this.ac) this.dssrData = Clazz_newFloatArray (this.ac, 0); +for (var i = 0; i < this.ac; i++) this.dssrData[i] = NaN; + +for (var i = this.mc; --i >= 0; ) if (this.am[i].isBioModel) (this.am[i]).getAtomicDSSRData(this.dssrData, dataType); + +}, "~S"); +Clazz_defineMethod(c$, "getAtomicDSSRData", +function(i){ +return (this.dssrData == null || this.dssrData.length <= i ? NaN : this.dssrData[i]); +}, "~N"); +Clazz_defineMethod(c$, "getAtomCIPChiralityCode", +function(atom){ +this.haveChirality = true; +var m = this.am[atom.mi]; +if (!m.hasChirality) { +this.calculateChiralityForAtoms(m.bsAtoms, false); +m.hasChirality = true; +}return atom.getCIPChiralityCode(); +}, "JM.Atom"); +Clazz_defineMethod(c$, "calculateChiralityForAtoms", +function(bsAtoms, withReturn){ +this.haveChirality = true; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) this.at[i].setCIPChirality(0); + +J.api.Interface.getSymmetry(this.vwr, "ms").calculateCIPChiralityForAtoms(this.vwr, bsAtoms); +if (!withReturn) return null; +var s = ""; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) s += this.at[i].getCIPChirality(false); + +return s; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "getPointTransf", +function(i, a, q, pTemp){ +if (this.isTrajectory(i >= 0 ? i : a.mi)) this.trajectory.getFractional(a, pTemp); + else pTemp.setT(a); +if (q != null) q.transform2(pTemp, pTemp); +}, "~N,JM.Atom,JU.Quat,JU.P3"); +Clazz_defineMethod(c$, "getSymmetryEquivAtoms", +function(bsAtoms, sym, bsModelAtoms){ +bsAtoms = JU.BS.copy(bsAtoms); +var bsEquiv = JU.BS.copy(bsAtoms); +var iAtom = bsAtoms.nextSetBit(0); +if (sym == null) sym = this.getUnitCellForAtom(iAtom); +if (sym != null) { +if (bsModelAtoms == null) bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.at[iAtom].mi); +var bsRemaining = JU.BSUtil.copy(bsModelAtoms); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +this.getSymmetryEquivAtomsForAtom(i, bsAtoms, bsRemaining, bsEquiv); +} +}return bsEquiv; +}, "JU.BS,J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "getSymmetryEquivAtomsForAtom", +function(i, bsAtoms, bsCheck, bsEquiv){ +var a = this.at[i]; +var site = a.getAtomSite(); +if (site > 0) { +for (var j = bsCheck.nextSetBit(0); j >= 0; j = bsCheck.nextSetBit(j + 1)) { +if (this.at[j].getAtomSite() == site) { +bsEquiv.set(j); +if (bsAtoms != null) { +bsAtoms.clear(j); +bsCheck.clear(j); +}}} +} else { +}}, "~N,JU.BS,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "setSpaceGroup", +function(mi, sg, basis){ +if (this.unitCells == null) this.unitCells = new Array(this.mc); +this.unitCells[mi] = sg; +this.haveUnitCells = true; +var isP1 = (sg.getSpaceGroupOperationCount() == 1); +var nops = sg.getFinalOperationCount(); +if (basis != null) { +var needBasis = basis.isEmpty(); +var bs = this.vwr.getModelUndeletedAtomsBitSet(mi); +if (needBasis) { +basis = JU.BSUtil.copy(bs); +} else { +this.setAsymmetricUnit(mi, bs, basis, !isP1); +}if (nops > 1) this.setModelCage(mi, null); +var nid = (this.atomSeqIDs == null ? 0 : this.atomSeqIDs.length); +if (nid > 0) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.atomSeqIDs[i] = 0; +} +}if (isP1) { +this.fixP1AtomSites(sg, bs); +} else { +var haveOccupancies = (this.occupancies != null); +var ops = sg.getSymmetryOperations(); +var a = new JU.P3(); +var b = new JU.P3(); +var t = new JU.P3(); +var site = 0; +for (var j = basis.nextSetBit(0); j >= 0; j = basis.nextSetBit(j + 1)) { +var bb = this.at[j]; +b.setT(bb); +sg.toFractional(b, false); +sg.unitize(b); +if (needBasis) this.setSite(bb, ++site, true); +site = bb.atomSite; +bs.clear(j); +var occj = (haveOccupancies ? this.occupancies[j] : 0); +out : for (var i = bs.nextSetBit(needBasis ? j + 1 : 0); i >= 0; i = bs.nextSetBit(i + 1)) { +var ba = this.at[i]; +var type = ba.atomNumberFlags; +if (ba.atomNumberFlags != type || haveOccupancies && occj != this.occupancies[i]) continue; +a.setT(ba); +sg.toFractional(a, false); +sg.unitize(a); +for (var k = 0; k < nops; k++) { +t.setT(b); +ops[k].rotTrans(t); +sg.unitize(t); +if (t.distanceSquared(a) < 1.96E-6) { +this.setSite(ba, site, true); +bs.clear(i); +basis.clear(i); +continue out; +}} +} +} +if (!bs.isEmpty()) { +System.err.println("Model basis atoms not found for " + bs); +}if (needBasis) { +this.setAsymmetricUnit(mi, null, basis, !isP1); +}}}this.setInfo(mi, "unitCellParams", sg.getUnitCellParams()); +this.setInfo(mi, "spaceGroupAssigned", Boolean.TRUE); +this.setInfo(mi, "spaceGroup", sg.getClegId()); +this.setInfo(mi, "spaceGroupInfo", null); +if (this.am[mi].simpleCage != null) { +sg.getUnitCell(this.am[mi].simpleCage.getUnitCellVectors(), false, null); +this.setInfo(mi, "unitCellParams", sg.getUnitCellParams()); +}this.setModelCage(mi, null); +}, "~N,J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "setAsymmetricUnit", +function(mi, bsModelAtoms, basis, haveSymmetry){ +if (bsModelAtoms == null) bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(mi); +this.am[mi].bsAsymmetricUnit = basis; +if (this.bsSymmetry == null) this.bsSymmetry = JU.BS.newN(this.ac); +this.bsSymmetry.or(bsModelAtoms); +this.bsSymmetry.andNot(basis); +if (haveSymmetry) { +for (var p = 0, i = bsModelAtoms.nextSetBit(0); i >= 0; i = bsModelAtoms.nextSetBit(i + 1)) { +var isBasis = basis.get(i); +this.at[i].setSymop(isBasis ? 1 : 0, false); +if (isBasis) this.setSite(this.at[i], ++p, false); +} +bsModelAtoms.andNot(basis); +}}, "~N,JU.BS,JU.BS,~B"); +Clazz_defineMethod(c$, "setModelCage", +function(modelIndex, simpleCage){ +if (modelIndex >= 0 && modelIndex < this.mc) { +this.am[modelIndex].setSimpleCage(simpleCage); +this.haveUnitCells = true; +}return simpleCage; +}, "~N,J.api.SymmetryInterface"); +Clazz_defineMethod(c$, "fixP1AtomSites", +function(sym, bsAtoms){ +if (sym == null || sym.getSpaceGroupOperationCount() != 1) return; +var n = bsAtoms.cardinality(); +var baseAtoms = new Array(n); +var nbase = 0; +var slop2 = sym.getPrecision(); +slop2 *= slop2; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.at[i]; +var p = new JU.A4(); +p.setT(a); +sym.toFractional(p, false); +sym.unitize(p); +var found = false; +for (var ib = 0; ib < nbase; ib++) { +var b = baseAtoms[ib]; +if (a.atomNumberFlags == b.angle && b.distanceSquared(p) < slop2) { +found = true; +this.setSite(a, ib + 1, true); +break; +}} +if (!found) { +p.angle = a.atomNumberFlags; +baseAtoms[nbase] = p; +this.setSite(a, ++nbase, true); +}} +}, "J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "getBasisAtom", +function(iatom, doCheck){ +var a = this.at[iatom]; +if (!doCheck || this.getUnitCellForAtom(iatom) != null) { +var site = a.atomSite; +if (site > 0) { +var au = this.am[a.mi].bsAsymmetricUnit; +if (au != null) { +for (var i = au.nextSetBit(0); i >= 0; i = au.nextSetBit(i + 1)) { +if (this.at[i].atomSite == site) return this.at[i]; +} +}}}return a; +}, "~N,~B"); +Clazz_defineMethod(c$, "updateBasisFromSite", +function(imodel){ +if (this.getUnitCell(imodel) == null) return; +var bsAU = this.am[imodel].bsAsymmetricUnit; +if (bsAU == null) return; +bsAU.clearAll(); +var bsSites = new JU.BS(); +var bs = this.am[imodel].bsAtoms; +var sites = Clazz_newIntArray (this.ac, 0); +for (var p = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(this.at[i])) continue; +var site = this.at[i].atomSite; +if (!bsSites.get(site)) { +bsSites.set(site); +if (site >= sites.length) continue; +sites[site] = ++p; +bsAU.set(i); +}this.setSite(this.at[i], -1, false); +this.setSite(this.at[i], sites[site], true); +} +if (this.bsSymmetry == null) this.bsSymmetry = JU.BS.newN(this.ac); +this.bsSymmetry.or(bs); +this.bsSymmetry.andNot(bsAU); +}, "~N"); +Clazz_defineMethod(c$, "getConnectingAtoms", +function(bsAtoms, bsFixed){ +var bs = new JU.BS(); +var bsAttached = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.at[i]; +var bonds = a.bonds; +for (var k = 0, j = a.getBondCount(); --j >= 0; ) { +if (bonds[j].isCovalent() && !bsAtoms.get(k = bonds[j].getOtherAtom(a).i)) { +bs.set(i); +bsAttached.set(k); +}} +} +bsAtoms.or(bsAttached); +bsFixed.or(bsAttached); +return bs; +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "saveAtomPositions", +function(){ +var pos = new Array(this.at.length); +for (var i = pos.length; --i >= 0; ) { +var a = this.at[i]; +if (!JM.AtomCollection.isDeleted(a)) pos[i] = JU.P3.newP(a); +} +return pos; +}); +Clazz_defineMethod(c$, "restoreAtomPositions", +function(apos0){ +for (var i = apos0.length; --i >= 0; ) { +var a = this.at[i]; +if (!JM.AtomCollection.isDeleted(a)) a.setT(apos0[i]); +} +}, "~A"); +Clazz_defineMethod(c$, "clearUnitCell", +function(modelIndex){ +if (this.unitCells == null) return; +if (modelIndex < 0) { +for (var i = 0; i < this.mc; i++) this.clearUnitCell(i); + +} else { +this.am[modelIndex].simpleCage = null; +if (modelIndex < this.unitCells.length) { +this.unitCells[modelIndex] = null; +var info = this.getModelAuxiliaryInfo(modelIndex); +var it = info.entrySet().iterator(); +while (it.hasNext()) { +if (JV.JC.isSpaceGroupInfoKey(it.next().getKey())) it.remove(); +} +if (this.mc > 1) return; +}}this.unitCells = null; +this.haveUnitCells = false; +}, "~N"); +c$.hbondMinRasmol = 2.5; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.M3", "$.P3"], "JM.Orientation", ["JU.PT", "JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.saveName = null; +this.rotationMatrix = null; +this.xTrans = 0; +this.yTrans = 0; +this.zoom = 0; +this.rotationRadius = 0; +this.center = null; +this.navCenter = null; +this.xNav = NaN; +this.yNav = NaN; +this.navDepth = NaN; +this.cameraDepth = NaN; +this.cameraX = NaN; +this.cameraY = NaN; +this.windowCenteredFlag = false; +this.navigationMode = false; +this.moveToText = null; +this.pymolView = null; +this.vwr = null; +Clazz_instantialize(this, arguments);}, JM, "Orientation", null); +Clazz_prepareFields (c$, function(){ +this.rotationMatrix = new JU.M3(); +this.center = new JU.P3(); +this.navCenter = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(vwr, asDefault, pymolView){ +this.vwr = vwr; +if (pymolView != null) { +this.pymolView = pymolView; +this.moveToText = "moveTo -1.0 PyMOL " + JU.Escape.eAF(pymolView); +return; +}vwr.finalizeTransformParameters(); +if (asDefault) { +var rot = vwr.ms.getInfoM("defaultOrientationMatrix"); +if (rot == null) this.rotationMatrix.setScale(1); + else this.rotationMatrix.setM3(rot); +} else { +vwr.tm.getRotation(this.rotationMatrix); +}this.xTrans = vwr.tm.getTranslationXPercent(); +this.yTrans = vwr.tm.getTranslationYPercent(); +this.zoom = vwr.tm.getZoomSetting(); +this.center.setT(vwr.tm.fixedRotationCenter); +this.windowCenteredFlag = vwr.tm.isWindowCentered(); +this.rotationRadius = vwr.getFloat(570425388); +this.navigationMode = vwr.getBoolean(603979889); +this.moveToText = vwr.tm.getMoveToText(-1, false); +if (this.navigationMode) { +this.xNav = vwr.tm.getNavigationOffsetPercent('X'); +this.yNav = vwr.tm.getNavigationOffsetPercent('Y'); +this.navDepth = vwr.tm.navigationDepthPercent; +this.navCenter = JU.P3.newP(vwr.tm.navigationCenter); +}if (vwr.tm.camera.z != 0) { +this.cameraDepth = vwr.tm.getCameraDepth(); +this.cameraX = vwr.tm.camera.x; +this.cameraY = vwr.tm.camera.y; +}}, "JV.Viewer,~B,~A"); +Clazz_defineMethod(c$, "getMoveToText", +function(asCommand){ +return (asCommand ? " " + this.moveToText + "\n save orientation " + JU.PT.esc(this.saveName.substring(12)) + ";\n" : this.moveToText); +}, "~B"); +Clazz_defineMethod(c$, "restore", +function(timeSeconds, isAll){ +if (isAll) { +this.vwr.setBooleanProperty("windowCentered", this.windowCenteredFlag); +this.vwr.setBooleanProperty("navigationMode", this.navigationMode); +if (this.pymolView == null) this.vwr.moveTo(this.vwr.eval, timeSeconds, this.center, null, NaN, this.rotationMatrix, this.zoom, this.xTrans, this.yTrans, this.rotationRadius, this.navCenter, this.xNav, this.yNav, this.navDepth, this.cameraDepth, this.cameraX, this.cameraY); + else this.vwr.tm.moveToPyMOL(this.vwr.eval, timeSeconds, this.pymolView); +} else { +this.vwr.tm.setRotation(this.rotationMatrix); +}return true; +}, "~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.StateScript", ["JU.SB", "JU.BSUtil", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modelIndex = 0; +this.bsBonds = null; +this.bsAtoms1 = null; +this.bsAtoms2 = null; +this.script1 = null; +this.script2 = null; +this.inDefinedStateBlock = false; +Clazz_instantialize(this, arguments);}, JM, "StateScript", null); +Clazz_makeConstructor(c$, +function(modelIndex, script1, bsBonds, bsAtoms1, bsAtoms2, script2, inDefinedStateBlock){ +this.modelIndex = modelIndex; +this.script1 = script1; +this.bsBonds = JU.BSUtil.copy(bsBonds); +this.bsAtoms1 = JU.BSUtil.copy(bsAtoms1); +this.bsAtoms2 = JU.BSUtil.copy(bsAtoms2); +this.script2 = script2; +this.inDefinedStateBlock = inDefinedStateBlock; +}, "~N,~S,JU.BS,JU.BS,JU.BS,~S,~B"); +Clazz_defineMethod(c$, "isValid", +function(){ +return this.script1 != null && this.script1.length > 0 && (this.bsBonds == null || this.bsBonds.nextSetBit(0) >= 0) && (this.bsAtoms1 == null || this.bsAtoms1.nextSetBit(0) >= 0) && (this.bsAtoms2 == null || this.bsAtoms2.nextSetBit(0) >= 0); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +if (!this.isValid()) return ""; +var sb = JU.SB.newS(this.script1); +if (this.bsBonds != null) sb.append(" ").append(JU.Escape.eBond(this.bsBonds)); +if (this.bsAtoms1 != null) sb.append(" ").append(JU.Escape.eBS(this.bsAtoms1)); +if (this.bsAtoms2 != null) sb.append(" ").append(JU.Escape.eBS(this.bsAtoms2)); +if (this.script2 != null) sb.append(" ").append(this.script2); +var s = sb.toString(); +if (!s.endsWith(";")) s += ";"; +return s; +}); +Clazz_defineMethod(c$, "isConnect", +function(){ +return (this.script1.indexOf("connect") >= 0); +}); +Clazz_defineMethod(c$, "deleteAtoms", +function(modelIndex, bsBonds, bsAtoms){ +if (modelIndex == this.modelIndex) return false; +if (modelIndex > this.modelIndex) { +return true; +}JU.BSUtil.deleteBits(this.bsBonds, bsBonds); +JU.BSUtil.deleteBits(this.bsAtoms1, bsAtoms); +JU.BSUtil.deleteBits(this.bsAtoms2, bsAtoms); +return this.isValid(); +}, "~N,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "setModelIndex", +function(index){ +this.modelIndex = index; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_declareInterface(JM, "Structure"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.id = ""; +this.type = ' '; +this.ticks = null; +this.tickLabelFormats = null; +this.scale = null; +this.first = 0; +this.signFactor = 1; +this.reference = null; +Clazz_instantialize(this, arguments);}, JM, "TickInfo", null); +Clazz_makeConstructor(c$, +function(ticks){ +this.ticks = ticks; +}, "JU.P3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P3", "$.V3"], "JU.BoxInfo", ["java.util.Hashtable", "JU.Measure", "$.P4", "JU.Point3fi"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bbCorner0 = null; +this.bbCorner1 = null; +this.bbCenter = null; +this.bbVector = null; +this.bbVertices = null; +this.isScaleSet = false; +this.margin = 0; +Clazz_instantialize(this, arguments);}, JU, "BoxInfo", null); +Clazz_prepareFields (c$, function(){ +this.bbCorner0 = new JU.P3(); +this.bbCorner1 = new JU.P3(); +this.bbCenter = new JU.P3(); +this.bbVector = new JU.V3(); +this.bbVertices = new Array(8); +{ +for (var i = 0; i < 8; i++) { +JU.BoxInfo.unitBboxPoints[i] = JU.P3.new3(-1, -1, -1); +JU.BoxInfo.unitBboxPoints[i].scaleAdd2(2, JU.BoxInfo.unitCubePoints[i], JU.BoxInfo.unitBboxPoints[i]); +} +}}); +Clazz_makeConstructor(c$, +function(){ +for (var i = 8; --i >= 0; ) this.bbVertices[i] = new JU.Point3fi(); + +this.reset(); +}); +Clazz_defineMethod(c$, "reset", +function(){ +this.isScaleSet = false; +this.bbCorner0.set(3.4028235E38, 3.4028235E38, 3.4028235E38); +this.bbCorner1.set(-3.4028235E38, -3.4028235E38, -3.4028235E38); +}); +c$.scaleBox = Clazz_defineMethod(c$, "scaleBox", +function(pts, scale){ +if (scale == 0 || scale == 1) return; +var center = new JU.P3(); +var v = new JU.V3(); +for (var i = 0; i < 8; i++) center.add(pts[i]); + +center.scale(0.125); +for (var i = 0; i < 8; i++) { +v.sub2(pts[i], center); +v.scale(scale); +pts[i].add2(center, v); +} +}, "~A,~N"); +c$.getVerticesFromOABC = Clazz_defineMethod(c$, "getVerticesFromOABC", +function(oabc){ +var vertices = new Array(8); +for (var i = 0; i <= 7; i++) { +vertices[i] = JU.P3.newP(oabc[0]); +if ((i & 4) == 4) vertices[i].add(oabc[1]); +if ((i & 2) == 2) vertices[i].add(oabc[2]); +if ((i & 1) == 1) vertices[i].add(oabc[3]); +} +return vertices; +}, "~A"); +c$.getCanonicalCopy = Clazz_defineMethod(c$, "getCanonicalCopy", +function(boxPoints, scale){ +var pts = new Array(8); +for (var i = 0; i < 8; i++) pts[JU.BoxInfo.toCanonical[i]] = JU.P3.newP(boxPoints[i]); + +JU.BoxInfo.scaleBox(pts, scale); +return pts; +}, "~A,~N"); +c$.toOABC = Clazz_defineMethod(c$, "toOABC", +function(bbVertices, offset){ +var center = JU.P3.newP(bbVertices[0]); +var a = JU.P3.newP(bbVertices[4]); +var b = JU.P3.newP(bbVertices[2]); +var c = JU.P3.newP(bbVertices[1]); +a.sub(center); +b.sub(center); +c.sub(center); +if (offset != null) center.add(offset); +return Clazz_newArray(-1, [center, a, b, c]); +}, "~A,JU.T3"); +Clazz_defineMethod(c$, "getBoundBoxCenter", +function(){ +if (!this.isScaleSet) this.setBbcage(1); +return this.bbCenter; +}); +Clazz_defineMethod(c$, "getBoundBoxCornerVector", +function(){ +if (!this.isScaleSet) this.setBbcage(1); +return this.bbVector; +}); +Clazz_defineMethod(c$, "getBoundBoxPoints", +function(isAll){ +if (!this.isScaleSet) this.setBbcage(1); +return (isAll ? Clazz_newArray(-1, [this.bbCenter, JU.P3.newP(this.bbVector), this.bbCorner0, this.bbCorner1]) : Clazz_newArray(-1, [this.bbCorner0, this.bbCorner1])); +}, "~B"); +Clazz_defineMethod(c$, "getBoundBoxVertices", +function(){ +if (!this.isScaleSet) this.setBbcage(1); +return this.bbVertices; +}); +Clazz_defineMethod(c$, "setBoundBoxFromOABC", +function(points){ +var origin = JU.P3.newP(points[0]); +var pt111 = new JU.P3(); +for (var i = 0; i < 4; i++) pt111.add(points[i]); + +this.setBoundBox(origin, pt111, true, 1); +}, "~A"); +Clazz_defineMethod(c$, "setBoundBox", +function(pt1, pt2, byCorner, scale){ +if (pt1 != null) { +if (scale == 0) return; +if (byCorner) { +if (pt1.distance(pt2) == 0) return; +this.bbCorner0.set(Math.min(pt1.x, pt2.x), Math.min(pt1.y, pt2.y), Math.min(pt1.z, pt2.z)); +this.bbCorner1.set(Math.max(pt1.x, pt2.x), Math.max(pt1.y, pt2.y), Math.max(pt1.z, pt2.z)); +} else { +if (pt2.x == 0 || pt2.y == 0 && pt2.z == 0) return; +this.bbCorner0.set(pt1.x - pt2.x, pt1.y - pt2.y, pt1.z - pt2.z); +this.bbCorner1.set(pt1.x + pt2.x, pt1.y + pt2.y, pt1.z + pt2.z); +}}this.setBbcage(scale); +}, "JU.T3,JU.T3,~B,~N"); +Clazz_defineMethod(c$, "setMargin", +function(m){ +this.margin = m; +}, "~N"); +Clazz_defineMethod(c$, "addBoundBoxPoint", +function(pt){ +this.isScaleSet = false; +JU.BoxInfo.addPoint(pt, this.bbCorner0, this.bbCorner1, this.margin); +}, "JU.T3"); +c$.addPoint = Clazz_defineMethod(c$, "addPoint", +function(pt, xyzMin, xyzMax, margin){ +if (pt.x - margin < xyzMin.x) xyzMin.x = pt.x - margin; +if (pt.x + margin > xyzMax.x) xyzMax.x = pt.x + margin; +if (pt.y - margin < xyzMin.y) xyzMin.y = pt.y - margin; +if (pt.y + margin > xyzMax.y) xyzMax.y = pt.y + margin; +if (pt.z - margin < xyzMin.z) xyzMin.z = pt.z - margin; +if (pt.z + margin > xyzMax.z) xyzMax.z = pt.z + margin; +}, "JU.T3,JU.T3,JU.T3,~N"); +c$.addPointXYZ = Clazz_defineMethod(c$, "addPointXYZ", +function(x, y, z, xyzMin, xyzMax, margin){ +if (x - margin < xyzMin.x) xyzMin.x = x - margin; +if (x + margin > xyzMax.x) xyzMax.x = x + margin; +if (y - margin < xyzMin.y) xyzMin.y = y - margin; +if (y + margin > xyzMax.y) xyzMax.y = y + margin; +if (z - margin < xyzMin.z) xyzMin.z = z - margin; +if (z + margin > xyzMax.z) xyzMax.z = z + margin; +}, "~N,~N,~N,JU.P3,JU.P3,~N"); +Clazz_defineMethod(c$, "setBbcage", +function(scale){ +this.isScaleSet = true; +this.bbCenter.add2(this.bbCorner0, this.bbCorner1); +this.bbCenter.scale(0.5); +this.bbVector.sub2(this.bbCorner1, this.bbCenter); +if (scale > 0) { +this.bbVector.scale(scale); +} else { +this.bbVector.x -= scale / 2; +this.bbVector.y -= scale / 2; +this.bbVector.z -= scale / 2; +}for (var i = 8; --i >= 0; ) { +var pt = this.bbVertices[i]; +pt.setT(JU.BoxInfo.unitBboxPoints[i]); +pt.x *= this.bbVector.x; +pt.y *= this.bbVector.y; +pt.z *= this.bbVector.z; +pt.add(this.bbCenter); +} +if (scale != 1) { +this.bbCorner0.setT(this.bbVertices[0]); +this.bbCorner1.setT(this.bbVertices[7]); +}}, "~N"); +Clazz_defineMethod(c$, "isWithin", +function(pt){ +if (!this.isScaleSet) this.setBbcage(1); +return (pt.x >= this.bbCorner0.x && pt.x <= this.bbCorner1.x && pt.y >= this.bbCorner0.y && pt.y <= this.bbCorner1.y && pt.z >= this.bbCorner0.z && pt.z <= this.bbCorner1.z); +}, "JU.P3"); +Clazz_defineMethod(c$, "getMaxDim", +function(){ +return this.bbVector.length() * 2; +}); +Clazz_defineMethod(c$, "getInfo", +function(what){ +var vol = Double.$valueOf(Math.abs(8 * this.bbVector.x * this.bbVector.y * this.bbVector.z)); +if ("volume".equals(what)) { +return vol; +}var c = JU.P3.newP(this.bbCenter); +if ("center".equals(what)) { +return c; +}if (what == null || "info".equals(what)) { +var m = new java.util.Hashtable(); +m.put("center", c); +var v = JU.V3.newVsub(this.bbCorner1, this.bbCorner0); +m.put("dimensions", v); +m.put("girth", Double.$valueOf(v.x + v.y + v.z)); +m.put("area", Double.$valueOf(2 * (v.x * v.y + v.x * v.z + v.z * v.y))); +m.put("volume", vol); +return m; +}return null; +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "" + this.bbCorner0 + this.bbCorner1; +}); +c$.getBoxFacesFromOABC = Clazz_defineMethod(c$, "getBoxFacesFromOABC", +function(oabc){ +var faces = new Array(6); +var vNorm = new JU.V3(); +var vAB = new JU.V3(); +var pta = new JU.P3(); +var ptb = new JU.P3(); +var ptc = new JU.P3(); +var vertices = (oabc == null ? JU.BoxInfo.unitCubePoints : JU.BoxInfo.getVerticesFromOABC(oabc)); +for (var i = 0; i < 6; i++) { +pta.setT(vertices[JU.BoxInfo.facePoints[i][0]]); +ptb.setT(vertices[JU.BoxInfo.facePoints[i][1]]); +ptc.setT(vertices[JU.BoxInfo.facePoints[i][2]]); +faces[i] = JU.Measure.getPlaneThroughPoints(pta, ptb, ptc, vNorm, vAB, new JU.P4()); +} +return faces; +}, "~A"); +c$.bbcageTickEdges = Clazz_newCharArray(-1, ['z', '\0', '\0', 'y', 'x', '\0', '\0', '\0', '\0', '\0', '\0', '\0']); +c$.uccageTickEdges = Clazz_newCharArray(-1, ['z', 'y', 'x', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0']); +c$.edges = Clazz_newByteArray(-1, [0, 1, 0, 2, 0, 4, 1, 3, 1, 5, 2, 3, 2, 6, 3, 7, 4, 5, 4, 6, 5, 7, 6, 7]); +c$.faceOrder = Clazz_newIntArray(-1, [0, 3, 5, 2, 1, 4]); +c$.facePoints = Clazz_newArray(-1, [ Clazz_newIntArray(-1, [4, 0, 6]), Clazz_newIntArray(-1, [4, 6, 5]), Clazz_newIntArray(-1, [5, 7, 1]), Clazz_newIntArray(-1, [1, 3, 0]), Clazz_newIntArray(-1, [6, 2, 7]), Clazz_newIntArray(-1, [1, 0, 5]), Clazz_newIntArray(-1, [0, 2, 6]), Clazz_newIntArray(-1, [6, 7, 5]), Clazz_newIntArray(-1, [7, 3, 1]), Clazz_newIntArray(-1, [3, 2, 0]), Clazz_newIntArray(-1, [2, 3, 7]), Clazz_newIntArray(-1, [0, 4, 5])]); +c$.unitCubePoints = Clazz_newArray(-1, [JU.P3.new3(0, 0, 0), JU.P3.new3(0, 0, 1), JU.P3.new3(0, 1, 0), JU.P3.new3(0, 1, 1), JU.P3.new3(1, 0, 0), JU.P3.new3(1, 0, 1), JU.P3.new3(1, 1, 0), JU.P3.new3(1, 1, 1)]); +c$.toCanonical = Clazz_newIntArray(-1, [0, 3, 4, 7, 1, 2, 5, 6]); +c$.unitBboxPoints = new Array(8); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.BS"], "JU.BSUtil", null, function(){ +var c$ = Clazz_declareType(JU, "BSUtil", null); +c$.newAndSetBit = Clazz_defineMethod(c$, "newAndSetBit", +function(i){ +var bs = JU.BS.newN(i + 1); +bs.set(i); +return bs; +}, "~N"); +c$.areEqual = Clazz_defineMethod(c$, "areEqual", +function(a, b){ +return (a == null || b == null ? a == null && b == null : a.equals(b)); +}, "JU.BS,JU.BS"); +c$.haveCommon = Clazz_defineMethod(c$, "haveCommon", +function(a, b){ +return (a == null || b == null ? false : a.intersects(b)); +}, "JU.BS,JU.BS"); +c$.cardinalityOf = Clazz_defineMethod(c$, "cardinalityOf", +function(bs){ +return (bs == null ? 0 : bs.cardinality()); +}, "JU.BS"); +c$.newBitSet2 = Clazz_defineMethod(c$, "newBitSet2", +function(i0, i1){ +var bs = JU.BS.newN(i1); +bs.setBits(i0, i1); +return bs; +}, "~N,~N"); +c$.setAll = Clazz_defineMethod(c$, "setAll", +function(n){ +var bs = JU.BS.newN(n); +bs.setBits(0, n); +return bs; +}, "~N"); +c$.andNot = Clazz_defineMethod(c$, "andNot", +function(a, b){ +if (b != null && a != null) a.andNot(b); +return a; +}, "JU.BS,JU.BS"); +c$.copy = Clazz_defineMethod(c$, "copy", +function(bs){ +return bs == null ? null : bs.clone(); +}, "JU.BS"); +c$.copy2 = Clazz_defineMethod(c$, "copy2", +function(a, b){ +if (a == null || b == null) return null; +b.clearAll(); +b.or(a); +return b; +}, "JU.BS,JU.BS"); +c$.copyInvert = Clazz_defineMethod(c$, "copyInvert", +function(bs, n){ +return (bs == null ? null : JU.BSUtil.andNot(JU.BSUtil.setAll(n), bs)); +}, "JU.BS,~N"); +c$.invertInPlace = Clazz_defineMethod(c$, "invertInPlace", +function(bs, n){ +return JU.BSUtil.copy2(JU.BSUtil.copyInvert(bs, n), bs); +}, "JU.BS,~N"); +c$.toggleInPlace = Clazz_defineMethod(c$, "toggleInPlace", +function(a, b){ +if (a.equals(b)) { +a.clearAll(); +} else if (JU.BSUtil.andNot(JU.BSUtil.copy(b), a).length() == 0) { +JU.BSUtil.andNot(a, b); +} else { +a.or(b); +}return a; +}, "JU.BS,JU.BS"); +c$.deleteBits = Clazz_defineMethod(c$, "deleteBits", +function(bs, bsDelete){ +if (bs == null || bsDelete == null) return bs; +var ipt = bsDelete.nextSetBit(0); +if (ipt < 0) return bs; +var len = bs.length(); +var lend = Math.min(len, bsDelete.length()); +var i; +for (i = bsDelete.nextClearBit(ipt); i < lend && i >= 0; i = bsDelete.nextClearBit(i + 1)) bs.setBitTo(ipt++, bs.get(i)); + +for (i = lend; i < len; i++) bs.setBitTo(ipt++, bs.get(i)); + +if (ipt < len) bs.clearBits(ipt, len); +return bs; +}, "JU.BS,JU.BS"); +c$.shiftBits = Clazz_defineMethod(c$, "shiftBits", +function(bs, bsAdded, setIfFound, iLast){ +if (bs == null || bsAdded == null) return; +var n = bsAdded.length(); +var bsNew = JU.BS.newN(n); +var isFound = false; +var doSet = false; +var checkFound = setIfFound; +for (var j = 0, i = 0; j < n && i < iLast; j++) { +if (bsAdded.get(j)) { +if (doSet) bsNew.set(j); +checkFound = setIfFound; +isFound = false; +} else if (bs.get(i++)) { +bsNew.set(j); +if (checkFound) { +checkFound = false; +isFound = true; +doSet = true; +}} else if (checkFound && !isFound) { +doSet = false; +}} +bs.clearAll(); +bs.or(bsNew); +}, "JU.BS,JU.BS,~B,~N"); +c$.offset = Clazz_defineMethod(c$, "offset", +function(bs0, pos, offset){ +if (bs0 == null) return; +var bsTemp = JU.BS.newN(bs0.length() + offset); +for (var i = bs0.nextSetBit(0); i >= pos; i = bs0.nextSetBit(i + 1)) bsTemp.set(i + offset); + +JU.BSUtil.copy2(bsTemp, bs0); +}, "JU.BS,~N,~N"); +c$.setMapBitSet = Clazz_defineMethod(c$, "setMapBitSet", +function(ht, i1, i2, key){ +var bs; +if (ht.containsKey(key)) bs = ht.get(key); + else ht.put(key, bs = new JU.BS()); +bs.setBits(i1, i2 + 1); +}, "java.util.Map,~N,~N,~S"); +c$.emptySet = new JU.BS(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Int2IntHash"], "JU.C", ["JU.AU", "$.CU", "$.PT", "$.SB", "J.c.PAL", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_declareType(JU, "C", null); +/*LV!1824 unnec constructor*/c$.getColix = Clazz_defineMethod(c$, "getColix", +function(argb){ +if (argb == 0) return 0; +var translucentFlag = 0; +argb |= 0xFF000000; +var c = JU.C.colixHash.get(argb); +return ((c > 0 ? c : JU.C.allocateColix(argb, false)) | translucentFlag); +}, "~N"); +c$.allocateColix = Clazz_defineMethod(c$, "allocateColix", +function(argb, forceLast){ +var n; +if (forceLast) { +n = 2047; +} else { +if (argb == -74566) return 3; +for (var i = JU.C.colixMax; --i >= 4; ) if ((argb & 0xFFFFFF) == (JU.C.argbs[i] & 0xFFFFFF)) return i; + +n = JU.C.colixMax; +}if (n >= JU.C.argbs.length) { +var newSize = (forceLast ? n + 1 : JU.C.colixMax * 2); +if (newSize > 2048) newSize = 2048; +JU.C.argbs = JU.AU.arrayCopyI(JU.C.argbs, newSize); +if (JU.C.argbsGreyscale != null) JU.C.argbsGreyscale = JU.AU.arrayCopyI(JU.C.argbsGreyscale, newSize); +}JU.C.argbs[n] = argb; +if (JU.C.argbsGreyscale != null) JU.C.argbsGreyscale[n] = JU.CU.toFFGGGfromRGB(argb); +JU.C.colixHash.put(argb, n); +return (n < 2047 ? JU.C.colixMax++ : JU.C.colixMax); +}, "~N,~B"); +c$.setLastGrey = Clazz_defineMethod(c$, "setLastGrey", +function(argb){ +JU.C.calcArgbsGreyscale(); +JU.C.argbsGreyscale[2047] = JU.CU.toFFGGGfromRGB(argb); +}, "~N"); +c$.calcArgbsGreyscale = Clazz_defineMethod(c$, "calcArgbsGreyscale", +function(){ +if (JU.C.argbsGreyscale != null) return; +var a = Clazz_newIntArray (JU.C.argbs.length, 0); +for (var i = JU.C.argbs.length; --i >= 4; ) a[i] = JU.CU.toFFGGGfromRGB(JU.C.argbs[i]); + +JU.C.argbsGreyscale = a; +}); +c$.getArgbGreyscale = Clazz_defineMethod(c$, "getArgbGreyscale", +function(colix){ +if (JU.C.argbsGreyscale == null) JU.C.calcArgbsGreyscale(); +return JU.C.argbsGreyscale[colix & -30721]; +}, "~N"); +c$.getColixO = Clazz_defineMethod(c$, "getColixO", +function(obj){ +if (obj == null) return 0; +if (Clazz_instanceOf(obj,"J.c.PAL")) return ((obj) === J.c.PAL.NONE ? 0 : 2); +if (Clazz_instanceOf(obj, Integer)) return JU.C.getColix((obj).intValue()); +if ((typeof(obj)=='string')) return JU.C.getColixS(obj); +if (Clazz_instanceOf(obj, Byte)) return ((obj).byteValue() == 0 ? 0 : 2); +if (JU.Logger.debugging) { +JU.Logger.debug("?? getColix(" + obj + ")"); +}return 22; +}, "~O"); +c$.getTranslucentFlag = Clazz_defineMethod(c$, "getTranslucentFlag", +function(translucentLevel){ +if (translucentLevel == 0) return 0; +if (translucentLevel < 0) return 30720; +if (Float.isNaN(translucentLevel) || translucentLevel >= 255 || translucentLevel == 1.0) return 16384; +var iLevel = Clazz_doubleToInt(Math.floor(translucentLevel < 1 ? translucentLevel * 256 : translucentLevel >= 15 ? translucentLevel : translucentLevel <= 9 ? (Clazz_doubleToInt(Math.floor(translucentLevel - 1))) << 5 : 256)); +return (((iLevel >> 5) & 0xF) << 11); +}, "~N"); +c$.isColixLastAvailable = Clazz_defineMethod(c$, "isColixLastAvailable", +function(colix){ +return (colix > 0 && (colix & 2047) == 2047); +}, "~N"); +c$.getArgb = Clazz_defineMethod(c$, "getArgb", +function(colix){ +return JU.C.argbs[colix & -30721]; +}, "~N"); +c$.isColixColorInherited = Clazz_defineMethod(c$, "isColixColorInherited", +function(colix){ +switch (colix) { +case 0: +case 1: +return true; +default: +return (colix & -30721) == 1; +} +}, "~N"); +c$.getColixInherited = Clazz_defineMethod(c$, "getColixInherited", +function(myColix, parentColix){ +switch (myColix) { +case 0: +return parentColix; +case 1: +return (parentColix & -30721); +default: +return ((myColix & -30721) == 1 ? (parentColix & -30721 | myColix & 30720) : myColix); +} +}, "~N,~N"); +c$.renderPass2 = Clazz_defineMethod(c$, "renderPass2", +function(colix){ +var c = colix & 30720; +return (c != 0 && c != 30720); +}, "~N"); +c$.isColixTranslucent = Clazz_defineMethod(c$, "isColixTranslucent", +function(colix){ +return ((colix & 30720) != 0); +}, "~N"); +c$.getChangeableColixIndex = Clazz_defineMethod(c$, "getChangeableColixIndex", +function(colix){ +return (colix >= 0 ? -1 : (colix & 2047)); +}, "~N"); +c$.getColixTranslucent3 = Clazz_defineMethod(c$, "getColixTranslucent3", +function(colix, isTranslucent, translucentLevel){ +colix &= -30721; +if (colix == 0) colix = 1; +return (isTranslucent ? (colix | JU.C.getTranslucentFlag(translucentLevel)) : colix); +}, "~N,~B,~N"); +c$.copyColixTranslucency = Clazz_defineMethod(c$, "copyColixTranslucency", +function(colixFrom, colixTo){ +return JU.C.getColixTranslucent3(colixTo, JU.C.isColixTranslucent(colixFrom), JU.C.getColixTranslucencyLevel(colixFrom)); +}, "~N,~N"); +c$.getColixTranslucencyFractional = Clazz_defineMethod(c$, "getColixTranslucencyFractional", +function(colix){ +var translevel = JU.C.getColixTranslucencyLevel(colix); +return (translevel == -1 ? 0.5 : translevel == 0 ? 0 : translevel == 255 ? 1 : translevel / 256); +}, "~N"); +c$.getColixTranslucencyLabel = Clazz_defineMethod(c$, "getColixTranslucencyLabel", +function(colix){ +return "translucent " + ((colix & 30720) == 30720 ? -1 : JU.C.getColixTranslucencyFractional(colix)); +}, "~N"); +c$.getColixTranslucencyLevel = Clazz_defineMethod(c$, "getColixTranslucencyLevel", +function(colix){ +var logAlpha = (colix >> 11) & 0xF; +switch (logAlpha) { +case 0: +return 0; +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +case 7: +return logAlpha << 5; +case 15: +return -1; +default: +return 255; +} +}, "~N"); +c$.getColixS = Clazz_defineMethod(c$, "getColixS", +function(colorName){ +var argb = JU.CU.getArgbFromString(colorName); +if (argb != 0) return JU.C.getColix(argb); +if ("none".equalsIgnoreCase(colorName)) return 0; +if ("opaque".equalsIgnoreCase(colorName)) return 1; +return 2; +}, "~S"); +c$.getColixArray = Clazz_defineMethod(c$, "getColixArray", +function(colorNames){ +if (colorNames == null || colorNames.length == 0) return null; +var colors = JU.PT.getTokens(colorNames); +var colixes = Clazz_newShortArray (colors.length, 0); +for (var j = 0; j < colors.length; j++) { +colixes[j] = JU.C.getColix(JU.CU.getArgbFromString(colors[j])); +if (colixes[j] == 0) return null; +} +return colixes; +}, "~S"); +c$.getHexCode = Clazz_defineMethod(c$, "getHexCode", +function(colix){ +return JU.Escape.escapeColor(JU.C.getArgb(colix)); +}, "~N"); +c$.getHexCodes = Clazz_defineMethod(c$, "getHexCodes", +function(colixes){ +if (colixes == null) return null; +var s = new JU.SB(); +for (var i = 0; i < colixes.length; i++) s.append(i == 0 ? "" : " ").append(JU.C.getHexCode(colixes[i])); + +return s.toString(); +}, "~A"); +c$.getColixTranslucent = Clazz_defineMethod(c$, "getColixTranslucent", +function(argb){ +var a = (argb >> 24) & 0xFF; +return (a == 0xFF ? JU.C.getColix(argb) : JU.C.getColixTranslucent3(JU.C.getColix(argb), true, a / 255)); +}, "~N"); +c$.getBgContrast = Clazz_defineMethod(c$, "getBgContrast", +function(argb){ +return ((JU.CU.toFFGGGfromRGB(argb) & 0xFF) < 128 ? 8 : 4); +}, "~N"); +c$.colixMax = 4; +c$.argbs = Clazz_newIntArray (128, 0); +{ +JU.C.argbs[3] = -74566; +}c$.argbsGreyscale = null; +c$.colixHash = new JU.Int2IntHash(256); +{ +var predefinedArgbs = Clazz_newIntArray(-1, [0xFF000000, 0xFFFFA500, 0xFFFFC0CB, 0xFF0000FF, 0xFFFFFFFF, 0xFF00FFFF, 0xFFFF0000, 0xFF008000, 0xFF808080, 0xFFC0C0C0, 0xFF00FF00, 0xFF800000, 0xFF000080, 0xFF808000, 0xFF800080, 0xFF008080, 0xFFFF00FF, 0xFFFFFF00, 0xFFFF69B4, 0xFFFFD700]); +for (var i = 0; i < predefinedArgbs.length; ++i) JU.C.getColix(predefinedArgbs[i]); + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.ColorEncoder", ["java.util.Hashtable", "JU.AU", "$.CU", "$.Lst", "$.PT", "$.Rdr", "J.c.PAL", "JU.C", "$.Escape", "$.Logger", "JV.FileManager", "$.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.paletteBW = null; +this.paletteWB = null; +this.paletteFriendly = null; +this.argbsCpk = null; +this.argbsRoygb = null; +this.argbsRwb = null; +this.argbsShapely = null; +this.argbsAmino = null; +this.argbsNucleic = null; +this.ihalf = 0; +this.schemes = null; +this.currentPalette = 0; +this.currentSegmentCount = 1; +this.isTranslucent = false; +this.lo = 0; +this.hi = 0; +this.isReversed = false; +this.userScale = null; +this.thisScale = null; +this.thisName = "scheme"; +this.isColorIndex = false; +this.ce = null; +Clazz_instantialize(this, arguments);}, JU, "ColorEncoder", null); +Clazz_prepareFields (c$, function(){ +this.userScale = Clazz_newIntArray(-1, [-8355712]); +this.thisScale = Clazz_newIntArray(-1, [-8355712]); +}); +Clazz_makeConstructor(c$, +function(ce, vwr){ +if (ce == null) { +this.vwr = vwr; +this.schemes = new java.util.Hashtable(); +this.argbsCpk = J.c.PAL.argbsCpk; +this.argbsRoygb = JV.JC.argbsRoygbScale; +this.argbsRwb = JV.JC.argbsRwbScale; +this.argbsAmino = this.argbsNucleic = this.argbsShapely = null; +this.ihalf = Clazz_doubleToInt(JV.JC.argbsRoygbScale.length / 3); +this.ce = this; +} else { +this.ce = ce; +this.vwr = ce.vwr; +this.schemes = ce.schemes; +}}, "JU.ColorEncoder,JV.Viewer"); +Clazz_defineMethod(c$, "clearCache", +function(){ +this.schemes.clear(); +}); +c$.getSchemeIndex = Clazz_defineMethod(c$, "getSchemeIndex", +function(colorScheme){ +for (var i = 0; i < JU.ColorEncoder.colorSchemes.length; i++) if (JU.ColorEncoder.colorSchemes[i].equalsIgnoreCase(colorScheme)) return (i >= 16 ? i - 16 : i < 13 ? i : -i); + +return -1; +}, "~S"); +c$.fixName = Clazz_defineMethod(c$, "fixName", +function(name){ +if (name.equalsIgnoreCase("byelement")) return "byelement_jmol"; +var ipt = JU.ColorEncoder.getSchemeIndex(name); +return (ipt >= 0 ? JU.ColorEncoder.colorSchemes[ipt] : name.indexOf("/") >= 0 ? name : name.toLowerCase()); +}, "~S"); +Clazz_defineMethod(c$, "makeColorScheme", +function(name, scale, isOverloaded){ +name = JU.ColorEncoder.fixName(name); +if (scale == null) { +this.schemes.remove(name); +var iScheme = this.createColorScheme(name, false, isOverloaded); +if (isOverloaded) switch (iScheme) { +case 2147483647: +return 0; +case 12: +this.paletteFriendly = this.getPaletteAC(); +break; +case 10: +this.paletteBW = this.getPaletteBW(); +break; +case 11: +this.paletteWB = this.getPaletteWB(); +break; +case 0: +case 1: +this.argbsRoygb = JV.JC.argbsRoygbScale; +break; +case 6: +case 7: +this.argbsRwb = JV.JC.argbsRwbScale; +break; +case 2: +this.argbsCpk = J.c.PAL.argbsCpk; +break; +case 3: +JU.ColorEncoder.getRasmolScale(); +break; +case 17: +this.getNucleic(); +break; +case 5: +this.getAmino(); +break; +case 4: +this.getShapely(); +break; +} +return iScheme; +}this.schemes.put(name, scale); +this.setThisScheme(name, scale); +var iScheme = this.createColorScheme(name, false, isOverloaded); +if (isOverloaded) switch (iScheme) { +case 10: +this.paletteBW = this.thisScale; +break; +case 11: +this.paletteWB = this.thisScale; +break; +case 0: +case 1: +this.argbsRoygb = this.thisScale; +this.ihalf = Clazz_doubleToInt(this.argbsRoygb.length / 3); +break; +case 6: +case 7: +this.argbsRwb = this.thisScale; +break; +case 2: +this.argbsCpk = this.thisScale; +break; +case 3: +break; +case 5: +this.argbsAmino = this.thisScale; +break; +case 17: +this.argbsNucleic = this.thisScale; +break; +case 4: +this.argbsShapely = this.thisScale; +break; +} +return -1; +}, "~S,~A,~B"); +Clazz_defineMethod(c$, "getShapely", +function(){ +return (this.argbsShapely == null ? this.argbsShapely = this.vwr.getJBR().getArgbs(1073742144) : this.argbsShapely); +}); +Clazz_defineMethod(c$, "getAmino", +function(){ +return (this.argbsAmino == null ? this.argbsAmino = this.vwr.getJBR().getArgbs(2097154) : this.argbsAmino); +}); +Clazz_defineMethod(c$, "getNucleic", +function(){ +return (this.argbsNucleic == null ? this.argbsNucleic = this.vwr.getJBR().getArgbs(2097166) : this.argbsNucleic); +}); +Clazz_defineMethod(c$, "createColorScheme", +function(colorScheme, defaultToRoygb, isOverloaded){ +if (colorScheme.equalsIgnoreCase("inherit")) return 15; +var pte = colorScheme.lastIndexOf("="); +var pts = colorScheme.indexOf("/"); +var pt = Math.max(pte, colorScheme.indexOf("[")); +var name = JU.ColorEncoder.fixName(colorScheme); +var ipt = JU.ColorEncoder.getSchemeIndex(name); +if (ipt == -1 && (pt < 0 || pts > 0)) { +var scale; +var s = colorScheme; +scale = this.schemes.get(name); +if (scale == null) { +try { +var isNot = (s.charAt(1) == '~'); +if (isNot) s = s.substring(1); +var b = null; +while (true) { +if (s.indexOf("/") < 0) { +if (s.indexOf(".") < 0) s += ".lut.txt"; +var data = new Array(1); +try { +JU.Logger.info("ColorEncoder opening colorschemes/" + s); +JU.Rdr.readAllAsString(JV.FileManager.getBufferedReaderForResource(this.vwr, new JU.C(), "JU/", "colorschemes/" + s), -1, false, data, 0); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +JU.Logger.info("ColorEncoder " + e); +break; +} else { +throw e; +} +} +s = data[0]; +} else { +s = JU.PT.rep(s, " ", "%20"); +JU.Logger.info("ColorEncoder opening " + s); +var o = this.vwr.fm.getFileAsBytes(s, null); +if ((typeof(o)=='string')) { +JU.Logger.info("ColorEncoder " + o); +break; +}b = o; +JU.Logger.info("ColorEncoder read " + b.length + " bytes"); +var i0 = 0; +var n = b.length; +if (n == 800 || n == 802) i0 = 32; +if (n - i0 == 768 || n - i0 == 770) { +scale = Clazz_newIntArray (256, 0); +n = 256 + i0; +for (var i = 0; i < 256; i++) { +scale[i] = JU.CU.rgb(b[i + i0] & 0xFF, b[i + i0 + 256] & 0xFF, b[i + i0 + 512] & 0xFF); +} +} else { +s = String.instantialize(b); +}}if (scale == null) { +var lines = JU.PT.split(s.trim(), "\n"); +var n = lines.length; +scale = Clazz_newIntArray (n, 0); +var isInt = (n > 0 && lines[0].indexOf(".") < 0); +for (var i = 0; i < n; i++) { +var tokens = JU.PT.getTokens(lines[i]); +if (tokens.length < 3) { +scale = null; +break; +}var len = tokens.length; +if (isInt) { +scale[i] = JU.CU.rgb(JU.PT.parseInt(tokens[len - 3]), JU.PT.parseInt(tokens[len - 2]), JU.PT.parseInt(tokens[len - 1])); +} else { +scale[i] = JU.CU.colorTriadToFFRGB(JU.PT.parseFloat(tokens[len - 3]), JU.PT.parseFloat(tokens[len - 2]), JU.PT.parseFloat(tokens[len - 1])); +}} +}if (scale != null && isNot) { +for (var i = 0, n = scale.length - 1, n2 = (n + 1) >> 1; i < n2; i++) { +var v = scale[i]; +scale[i] = scale[n - i]; +scale[n - i] = v; +} +}break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.info("ColorEncoder " + e); +scale = null; +} else { +throw e; +} +} +}if (scale == null) scale = Clazz_newIntArray(-1, [-1]); +this.schemes.put(colorScheme, scale); +this.setThisScheme(colorScheme, scale); +return -1; +} else if (pt >= 0) { +colorScheme = colorScheme.toLowerCase(); +name = JU.PT.replaceAllCharacters(colorScheme.substring(0, pt), " =", ""); +if (name.length > 0) isOverloaded = true; +var n = 0; +if (colorScheme.length > pt + 1 && !colorScheme.contains("[")) { +colorScheme = "[" + colorScheme.substring(pt + 1).trim() + "]"; +colorScheme = JU.PT.rep(colorScheme.$replace('\n', ' '), " ", " "); +colorScheme = JU.PT.rep(colorScheme, ", ", ",").$replace(' ', ','); +colorScheme = JU.PT.rep(colorScheme, ",", "]["); +}pt = -1; +while ((pt = colorScheme.indexOf("[", pt + 1)) >= 0) n++; + +if (n == 0) return this.makeColorScheme(name, null, isOverloaded); +var scale = Clazz_newIntArray (n, 0); +n = 0; +while ((pt = colorScheme.indexOf("[", pt + 1)) >= 0) { +var pt2 = colorScheme.indexOf("]", pt); +if (pt2 < 0) pt2 = colorScheme.length - 1; +var c = JU.CU.getArgbFromString(colorScheme.substring(pt, pt2 + 1)); +if (c == 0) c = JU.CU.getArgbFromString(colorScheme.substring(pt + 1, pt2).trim()); +if (c == 0) { +JU.Logger.error("error in color value: " + colorScheme.substring(pt, pt2 + 1)); +return 0; +}scale[n++] = c; +} +if (name.equals("user")) { +this.setUserScale(scale); +return -13; +}return this.makeColorScheme(name, scale, isOverloaded); +}var scale = this.schemes.get(name); +if (scale != null) { +this.setThisScheme(name, scale); +return ipt; +}return (ipt != -1 ? ipt : defaultToRoygb ? 0 : 2147483647); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "setUserScale", +function(scale){ +this.ce.userScale = scale; +this.makeColorScheme("user", scale, false); +}, "~A"); +Clazz_defineMethod(c$, "getColorSchemeArray", +function(palette){ +var b; +switch (palette) { +case -1: +return this.thisScale; +case 0: +return this.ce.argbsRoygb; +case 1: +return JU.AU.arrayCopyRangeRevI(this.ce.argbsRoygb, 0, -1); +case 8: +return JU.AU.arrayCopyRangeI(this.ce.argbsRoygb, 0, this.ce.ihalf); +case 9: +var a = JU.AU.arrayCopyRangeI(this.ce.argbsRoygb, this.ce.argbsRoygb.length - 2 * this.ce.ihalf, -1); +b = Clazz_newIntArray (this.ce.ihalf, 0); +for (var i = b.length, j = a.length; --i >= 0 && --j >= 0; ) b[i] = a[j--]; + +return b; +case 12: +return this.getPaletteAC(); +case 10: +return this.getPaletteBW(); +case 11: +return this.getPaletteWB(); +case 6: +return this.ce.argbsRwb; +case 7: +return JU.AU.arrayCopyRangeRevI(this.ce.argbsRwb, 0, -1); +case 2: +return this.ce.argbsCpk; +case 3: +return JU.ColorEncoder.getRasmolScale(); +case 4: +return this.ce.getShapely(); +case 17: +return this.ce.getNucleic(); +case 5: +return this.ce.getAmino(); +case -13: +return this.ce.userScale; +case -14: +return JU.AU.arrayCopyRangeRevI(this.ce.userScale, 0, -1); +default: +return null; +} +}, "~N"); +Clazz_defineMethod(c$, "getColorIndexFromPalette", +function(val, lo, hi, palette, isTranslucent){ +var colix = JU.C.getColix(this.getArgbFromPalette(val, lo, hi, palette)); +if (isTranslucent) { +var f = (hi - val) / (hi - lo); +if (f > 1) f = 1; + else if (f < 0.125) f = 0.125; +colix = JU.C.getColixTranslucent3(colix, true, f); +}return colix; +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "getPaletteColorCount", +function(palette){ +switch (palette) { +case -1: +return this.thisScale.length; +case 10: +case 11: +return this.getPaletteBW().length; +case 0: +case 1: +return this.ce.argbsRoygb.length; +case 8: +case 9: +return this.ce.ihalf; +case 6: +case 7: +return this.ce.argbsRwb.length; +case -13: +case -14: +return this.ce.userScale.length; +case 2: +return this.ce.argbsCpk.length; +case 3: +return JU.ColorEncoder.getRasmolScale().length; +case 4: +return this.ce.getShapely().length; +case 17: +return this.ce.getNucleic().length; +case 5: +return this.ce.getAmino().length; +case 12: +return this.getPaletteAC().length; +default: +return 0; +} +}, "~N"); +Clazz_defineMethod(c$, "getArgbFromPalette", +function(val, lo, hi, palette){ +if (Float.isNaN(val)) return -8355712; +var n = this.getPaletteColorCount(palette); +switch (palette) { +case -1: +if (this.isColorIndex) { +lo = 0; +hi = this.thisScale.length; +}return this.thisScale[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 10: +return this.getPaletteBW()[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 11: +return this.getPaletteWB()[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 0: +return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 1: +return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(-val, -hi, -lo, n)]; +case 8: +return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 9: +return this.ce.argbsRoygb[this.ce.ihalf + JU.ColorEncoder.quantize4(val, lo, hi, n) * 2]; +case 6: +return this.ce.argbsRwb[JU.ColorEncoder.quantize4(val, lo, hi, n)]; +case 7: +return this.ce.argbsRwb[JU.ColorEncoder.quantize4(-val, -hi, -lo, n)]; +case -13: +return (this.ce.userScale.length == 0 ? -8355712 : this.ce.userScale[JU.ColorEncoder.quantize4(val, lo, hi, n)]); +case -14: +return (this.ce.userScale.length == 0 ? -8355712 : this.ce.userScale[JU.ColorEncoder.quantize4(-val, -hi, -lo, n)]); +case 2: +return this.ce.argbsCpk[JU.ColorEncoder.colorIndex(val, n)]; +case 3: +return JU.ColorEncoder.getRasmolScale()[JU.ColorEncoder.colorIndex(val, n)]; +case 4: +return this.ce.getShapely()[JU.ColorEncoder.colorIndex(val, n)]; +case 5: +return this.ce.getAmino()[JU.ColorEncoder.colorIndex(val, n)]; +case 17: +return this.ce.getNucleic()[JU.ColorEncoder.colorIndex(val - 24 + 2, n)]; +case 12: +return this.getPaletteAC()[JU.ColorEncoder.colorIndexRepeat(val, n)]; +default: +return -8355712; +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setThisScheme", +function(name, scale){ +this.thisName = name; +this.thisScale = scale; +if (name.equals("user")) this.userScale = scale; +this.isColorIndex = (name.indexOf("byelement") == 0 || name.indexOf("byresidue") == 0); +}, "~S,~A"); +Clazz_defineMethod(c$, "getArgb", +function(val){ +return (this.isReversed ? this.getArgbFromPalette(-val, -this.hi, -this.lo, this.currentPalette) : this.getArgbFromPalette(val, this.lo, this.hi, this.currentPalette)); +}, "~N"); +Clazz_defineMethod(c$, "getArgbMinMax", +function(val, min, max){ +return (this.isReversed ? this.getArgbFromPalette(-val, -max, -min, this.currentPalette) : this.getArgbFromPalette(val, min, max, this.currentPalette)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getColorIndex", +function(val){ +return (this.isReversed ? this.getColorIndexFromPalette(-val, -this.hi, -this.lo, this.currentPalette, this.isTranslucent) : this.getColorIndexFromPalette(val, this.lo, this.hi, this.currentPalette, this.isTranslucent)); +}, "~N"); +Clazz_defineMethod(c$, "getColorKey", +function(){ +var info = new java.util.Hashtable(); +var segmentCount = this.getPaletteColorCount(this.currentPalette); +var colors = new JU.Lst(); +var values = Clazz_newFloatArray (segmentCount + 1, 0); +var quantum = (this.hi - this.lo) / segmentCount; +var f = quantum * (this.isReversed ? -0.5 : 0.5); +for (var i = 0; i < segmentCount; i++) { +values[i] = (this.isReversed ? this.hi - i * quantum : this.lo + i * quantum); +colors.addLast(JU.CU.colorPtFromInt(this.getArgb(values[i] + f), null)); +} +values[segmentCount] = (this.isReversed ? this.lo : this.hi); +info.put("values", values); +info.put("colors", colors); +info.put("min", Float.$valueOf(this.lo)); +info.put("max", Float.$valueOf(this.hi)); +info.put("reversed", Boolean.$valueOf(this.isReversed)); +info.put("name", this.getCurrentColorSchemeName()); +return info; +}); +Clazz_defineMethod(c$, "getColorScheme", +function(){ +return (this.isTranslucent ? "translucent " : "") + (this.currentPalette < 0 ? JU.ColorEncoder.getColorSchemeList(this.getColorSchemeArray(this.currentPalette)) : this.getColorSchemeName(this.currentPalette)); +}); +Clazz_defineMethod(c$, "setColorScheme", +function(colorScheme, isTranslucent){ +this.isTranslucent = isTranslucent; +if (colorScheme != null) this.currentPalette = this.createColorScheme(colorScheme, true, false); +}, "~S,~B"); +Clazz_defineMethod(c$, "setRange", +function(lo, hi, isReversed){ +if (hi == 3.4028235E38) { +lo = 1; +hi = this.getPaletteColorCount(this.currentPalette) + 1; +}this.lo = Math.min(lo, hi); +this.hi = Math.max(lo, hi); +this.isReversed = isReversed; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "getCurrentColorSchemeName", +function(){ +return this.getColorSchemeName(this.currentPalette); +}); +Clazz_defineMethod(c$, "getColorSchemeName", +function(i){ +var absi = Math.abs(i); +return (i == -1 ? this.thisName : absi < JU.ColorEncoder.colorSchemes.length && absi >= 0 ? JU.ColorEncoder.colorSchemes[absi] : null); +}, "~N"); +c$.getColorSchemeList = Clazz_defineMethod(c$, "getColorSchemeList", +function(scheme){ +if (scheme == null) return ""; +var colors = ""; +for (var i = 0; i < scheme.length; i++) colors += (i == 0 ? "" : " ") + JU.Escape.escapeColor(scheme[i]); + +return colors; +}, "~A"); +c$.getRasmolScale = Clazz_defineMethod(c$, "getRasmolScale", +function(){ +if (JU.ColorEncoder.rasmolScale != null) return JU.ColorEncoder.rasmolScale; +JU.ColorEncoder.rasmolScale = Clazz_newIntArray (J.c.PAL.argbsCpk.length, 0); +var argb = J.c.PAL.argbsCpkRasmol[0] | 0xFF000000; +for (var i = JU.ColorEncoder.rasmolScale.length; --i >= 0; ) JU.ColorEncoder.rasmolScale[i] = argb; + +for (var i = J.c.PAL.argbsCpkRasmol.length; --i >= 0; ) { +argb = J.c.PAL.argbsCpkRasmol[i]; +JU.ColorEncoder.rasmolScale[argb >> 24] = argb | 0xFF000000; +} +return JU.ColorEncoder.rasmolScale; +}); +Clazz_defineMethod(c$, "getPaletteAC", +function(){ +return (this.ce.paletteFriendly == null ? this.ce.paletteFriendly = Clazz_newIntArray(-1, [0x808080, 0x104BA9, 0xAA00A2, 0xC9F600, 0xFFA200, 0x284A7E, 0x7F207B, 0x9FB82E, 0xBF8B30, 0x052D6E, 0x6E0069, 0x83A000, 0xA66A00, 0x447BD4, 0xD435CD, 0xD8FA3F, 0xFFBA40, 0x6A93D4, 0xD460CF, 0xE1FA71, 0xFFCC73]) : this.ce.paletteFriendly); +}); +Clazz_defineMethod(c$, "getPaletteWB", +function(){ +if (this.ce.paletteWB != null) return this.ce.paletteWB; +var b = Clazz_newIntArray (JV.JC.argbsRoygbScale.length, 0); +for (var i = 0; i < b.length; i++) { +var xff = (1 / b.length * (b.length - i)); +b[i] = JU.CU.colorTriadToFFRGB(xff, xff, xff); +} +return this.ce.paletteWB = b; +}); +c$.getPaletteAtoB = Clazz_defineMethod(c$, "getPaletteAtoB", +function(color1, color2, n){ +if (n < 2) n = JV.JC.argbsRoygbScale.length; +var b = Clazz_newIntArray (n, 0); +var rgb1 = Clazz_newFloatArray (3, 0); +var rgb2 = Clazz_newFloatArray (3, 0); +JU.CU.toRGB3f(color1, rgb1); +JU.CU.toRGB3f(color2, rgb2); +var dr = (rgb2[0] - rgb1[0]) / (n - 1); +var dg = (rgb2[1] - rgb1[1]) / (n - 1); +var db = (rgb2[2] - rgb1[2]) / (n - 1); +for (var i = 0; i < n; i++) b[i] = JU.CU.colorTriadToFFRGB(rgb1[0] + dr * i, rgb1[1] + dg * i, rgb1[2] + db * i); + +return b; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getPaletteBW", +function(){ +if (this.ce.paletteBW != null) return this.ce.paletteBW; +var b = Clazz_newIntArray (JV.JC.argbsRoygbScale.length, 0); +for (var i = 0; i < b.length; i++) { +var xff = (1 / b.length * i); +b[i] = JU.CU.colorTriadToFFRGB(xff, xff, xff); +} +return this.ce.paletteBW = b; +}); +Clazz_defineMethod(c$, "quantize", +function(x, isLowEnd){ +var n = this.getPaletteColorCount(this.currentPalette); +x = ((Clazz_floatToInt(x * n)) + (isLowEnd ? 0 : 1)) / n; +return (x <= 0 ? this.lo : x >= 1 ? this.hi : this.lo + (this.hi - this.lo) * x); +}, "~N,~B"); +c$.quantize4 = Clazz_defineMethod(c$, "quantize4", +function(val, lo, hi, segmentCount){ +var range = hi - lo; +if (range <= 0 || Float.isNaN(val)) return Clazz_doubleToInt(segmentCount / 2); +var t = val - lo; +if (t <= 0) return 0; +var quanta = range / segmentCount; +var q = Clazz_floatToInt(t / quanta + 0.0001); +if (q >= segmentCount) q = segmentCount - 1; +return q; +}, "~N,~N,~N,~N"); +c$.colorIndex = Clazz_defineMethod(c$, "colorIndex", +function(q, segmentCount){ +return Clazz_doubleToInt(Math.floor(q <= 0 || q >= segmentCount ? 0 : q)); +}, "~N,~N"); +c$.colorIndexRepeat = Clazz_defineMethod(c$, "colorIndexRepeat", +function(q, segmentCount){ +var i = Clazz_doubleToInt(Math.floor(q <= 0 ? 0 : q)); +return i % segmentCount; +}, "~N,~N"); +c$.colorSchemes = Clazz_newArray(-1, ["roygb", "bgyor", "byelement_jmol", "byelement_rasmol", "byresidue_shapely", "byresidue_amino", "rwb", "bwr", "low", "high", "bw", "wb", "friendly", "user", "resu", "inherit", "rgb", "bgr", "jmol", "rasmol", "byresidue", "byresidue_nucleic"]); +c$.rasmolScale = null; +c$.argbsChainAtom = null; +c$.argbsChainHetero = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.CommandHistory", ["JU.Lst"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.commandList = null; +this.maxSize = 100; +this.nextCommand = 0; +this.cursorPos = 0; +this.isOn = true; +this.lstStates = null; +Clazz_instantialize(this, arguments);}, JU, "CommandHistory", null); +Clazz_makeConstructor(c$, +function(){ +this.reset(100); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.reset(this.maxSize); +}); +Clazz_defineMethod(c$, "reset", +function(maxSize){ +this.maxSize = maxSize; +this.commandList = new JU.Lst(); +this.nextCommand = 0; +this.commandList.addLast(""); +this.cursorPos = 0; +}, "~N"); +Clazz_defineMethod(c$, "setMaxSize", +function(maxSize){ +if (maxSize == this.maxSize) return; +if (maxSize < 2) maxSize = 2; +while (this.nextCommand > maxSize) { +this.commandList.removeItemAt(0); +this.nextCommand--; +} +if (this.nextCommand > maxSize) this.nextCommand = maxSize - 1; +this.cursorPos = this.nextCommand; +this.maxSize = maxSize; +}, "~N"); +Clazz_defineMethod(c$, "getCommandUp", +function(){ +if (this.cursorPos <= 0) return null; +this.cursorPos--; +var str = this.getCommand(); +if (str.endsWith("#??")) this.removeCommand(this.cursorPos--); +if (this.cursorPos < 0) this.cursorPos = 0; +return str; +}); +Clazz_defineMethod(c$, "getCommandDown", +function(){ +if (this.cursorPos >= this.nextCommand) return null; +this.cursorPos++; +return this.getCommand(); +}); +Clazz_defineMethod(c$, "getCommand", +function(){ +return this.commandList.get(this.cursorPos); +}); +Clazz_defineMethod(c$, "addCommand", +function(strCommand){ +if (!this.isOn && !strCommand.endsWith("#??")) return; +if (strCommand.endsWith("#----")) return; +var i; +while ((i = strCommand.indexOf("\n")) >= 0) { +var str = strCommand.substring(0, i); +if (str.length > 0) this.addCommandLine(str); +strCommand = strCommand.substring(i + 1); +} +if (strCommand.length > 0) this.addCommandLine(strCommand); +}, "~S"); +Clazz_defineMethod(c$, "getSetHistory", +function(n){ +this.isOn = (n == -2 ? this.isOn : true); +switch (n) { +case 0: +this.isOn = false; +this.clear(); +return ""; +case -2147483648: +case -2: +this.clear(); +return ""; +case -1: +return this.getCommandUp(); +case 1: +return this.getCommandDown(); +default: +if (n < 0) { +this.setMaxSize(-2 - n); +return ""; +}n = Math.max(this.nextCommand - n, 0); +} +var str = ""; +for (var i = n; i < this.nextCommand; i++) if (!this.commandList.get(i).toUpperCase().startsWith("WRITE HISTORY")) str += this.commandList.get(i) + "\n"; + +return str; +}, "~N"); +Clazz_defineMethod(c$, "find", +function(cmd, dir){ +var cpos = this.cursorPos; +var c = cmd; +while (c != null) { +c = this.getSetHistory(dir); +if (c == null) break; +if (c.startsWith(cmd)) return c; +} +this.cursorPos = cpos; +return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "removeCommand", +function(){ +return this.removeCommand(this.nextCommand - 1); +}); +Clazz_defineMethod(c$, "removeCommand", +function(n){ +if (n < 0 || n >= this.nextCommand) return ""; +var str = this.commandList.removeItemAt(n); +this.nextCommand--; +return str; +}, "~N"); +Clazz_defineMethod(c$, "addCommandLine", +function(command){ +if (command == null || command.length == 0) return; +if (command.endsWith("#--")) return; +if (this.nextCommand > 0 && command.equals(this.commandList.get(this.nextCommand - 1))) { +this.cursorPos = this.nextCommand; +return; +}if (this.nextCommand >= this.maxSize) { +this.commandList.removeItemAt(0); +this.nextCommand = this.maxSize - 1; +}this.commandList.add(this.nextCommand, command); +this.nextCommand++; +this.cursorPos = this.nextCommand; +this.commandList.add(this.nextCommand, ""); +}, "~S"); +Clazz_defineMethod(c$, "pushState", +function(stateInfo){ +if (this.lstStates == null) this.lstStates = new JU.Lst(); +this.lstStates.addLast(stateInfo); +}, "~S"); +Clazz_defineMethod(c$, "popState", +function(){ +if (this.lstStates == null || this.lstStates.size() == 0) return null; +var s = this.lstStates.removeItemAt(this.lstStates.size() - 1); +return s; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.LoggerInterface"], "JU.DefaultLogger", ["JU.Logger"], function(){ +var c$ = Clazz_declareType(JU, "DefaultLogger", null, JU.LoggerInterface); +Clazz_defineMethod(c$, "log", +function(out, level, txt, e){ +if (out === System.err) System.out.flush(); +if ((out != null) && ((txt != null) || (e != null))) { +txt = (txt != null ? txt : ""); +txt = (JU.Logger.logLevel() ? "[" + JU.Logger.getLevel(level) + "] " : "") + txt + (e != null ? ": " + e.toString() : ""); +out.println(txt); +if (e != null) { +var elements = e.getStackTrace(); +if (elements != null) { +for (var i = 0; i < elements.length; i++) { +out.println(elements[i].getClassName() + " - " + elements[i].getLineNumber() + " - " + elements[i].getMethodName()); +} +}}}if (out === System.err) System.err.flush(); +return txt; +}, "java.io.PrintStream,~N,~S,Throwable"); +Clazz_overrideMethod(c$, "debug", +function(txt){ +this.log(System.out, 5, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "info", +function(txt){ +this.log(System.out, 4, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "warn", +function(txt){ +this.log(System.out, 3, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "warnEx", +function(txt, e){ +this.log(System.out, 3, txt, e); +}, "~S,Throwable"); +Clazz_overrideMethod(c$, "error", +function(txt){ +this.log(System.err, 2, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "errorEx", +function(txt, e){ +this.log(System.err, 2, txt, e); +}, "~S,Throwable"); +Clazz_overrideMethod(c$, "fatal", +function(txt){ +this.log(System.err, 1, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "fatalEx", +function(txt, e){ +this.log(System.err, 1, txt, e); +}, "~S,Throwable"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.BS"], "JU.Elements", ["java.util.Hashtable", "JU.PT", "JU.Logger"], function(){ +var c$ = Clazz_declareType(JU, "Elements", null); +c$.getNaturalIsotope = Clazz_defineMethod(c$, "getNaturalIsotope", +function(elementNumber){ +return JU.Elements.isotopeMass[elementNumber & 127]; +}, "~N"); +c$.getAtomicMass = Clazz_defineMethod(c$, "getAtomicMass", +function(i){ +return (i < 1 || i >= JU.Elements.atomicMass.length ? 0 : JU.Elements.atomicMass[i]); +}, "~N"); +c$.elementNumberFromSymbol = Clazz_defineMethod(c$, "elementNumberFromSymbol", +function(elementSymbol, isSilent){ +if (JU.Elements.htElementMap == null) { +var map = new java.util.Hashtable(); +for (var elementNumber = JU.Elements.elementNumberMax; --elementNumber >= 0; ) { +var symbol = JU.Elements.elementSymbols[elementNumber]; +var boxed = Integer.$valueOf(elementNumber); +map.put(symbol, boxed); +if (symbol.length == 2) map.put(symbol.toUpperCase(), boxed); +} +for (var i = JU.Elements.altElementMax; --i >= 4; ) { +var symbol = JU.Elements.altElementSymbols[i]; +var boxed = Integer.$valueOf(JU.Elements.altElementNumbers[i]); +map.put(symbol, boxed); +if (symbol.length == 2) map.put(symbol.toUpperCase(), boxed); +} +map.put("Z", Integer.$valueOf(0)); +JU.Elements.htElementMap = map; +}if (elementSymbol == null) return 0; +var boxedAtomicNumber = JU.Elements.htElementMap.get(elementSymbol); +if (boxedAtomicNumber != null) return boxedAtomicNumber.intValue(); +if (JU.PT.isDigit(elementSymbol.charAt(0))) { +var pt = elementSymbol.length - 2; +if (pt >= 0 && JU.PT.isDigit(elementSymbol.charAt(pt))) pt++; +var isotope = (pt > 0 ? JU.PT.parseInt(elementSymbol.substring(0, pt)) : 0); +if (isotope > 0) { +var n = JU.Elements.elementNumberFromSymbol(elementSymbol.substring(pt), true); +if (n > 0) { +isotope = JU.Elements.getAtomicAndIsotopeNumber(n, isotope); +JU.Elements.htElementMap.put(elementSymbol.toUpperCase(), Integer.$valueOf(isotope)); +return isotope; +}}}if (!isSilent) JU.Logger.error("'" + elementSymbol + "' is not a recognized symbol"); +return 0; +}, "~S,~B"); +c$.elementSymbolFromNumber = Clazz_defineMethod(c$, "elementSymbolFromNumber", +function(elemNo){ +var isoNumber = 0; +if (elemNo >= JU.Elements.elementNumberMax) { +for (var j = JU.Elements.altElementMax; --j >= 0; ) if (elemNo == JU.Elements.altElementNumbers[j]) return JU.Elements.altElementSymbols[j]; + +isoNumber = JU.Elements.getIsotopeNumber(elemNo); +elemNo &= 127; +return "" + isoNumber + JU.Elements.getElementSymbol(elemNo); +}return JU.Elements.getElementSymbol(elemNo); +}, "~N"); +c$.getElementSymbol = Clazz_defineMethod(c$, "getElementSymbol", +function(elemNo){ +if (elemNo < 0 || elemNo >= JU.Elements.elementNumberMax) elemNo = 0; +return JU.Elements.elementSymbols[elemNo]; +}, "~N"); +c$.elementNameFromNumber = Clazz_defineMethod(c$, "elementNameFromNumber", +function(elementNumber){ +if (elementNumber >= JU.Elements.elementNumberMax) { +for (var j = JU.Elements.altElementMax; --j >= 0; ) if (elementNumber == JU.Elements.altElementNumbers[j]) return JU.Elements.altElementNames[j]; + +elementNumber %= 128; +}if (elementNumber < 0 || elementNumber >= JU.Elements.elementNumberMax) elementNumber = 0; +return JU.Elements.elementNames[elementNumber]; +}, "~N"); +c$.elementNumberFromName = Clazz_defineMethod(c$, "elementNumberFromName", +function(name){ +for (var i = 1; i < JU.Elements.elementNumberMax; i++) if (JU.Elements.elementNames[i].equalsIgnoreCase(name)) return i; + +return -1; +}, "~S"); +c$.altElementNameFromIndex = Clazz_defineMethod(c$, "altElementNameFromIndex", +function(i){ +return JU.Elements.altElementNames[i]; +}, "~N"); +c$.altElementNumberFromIndex = Clazz_defineMethod(c$, "altElementNumberFromIndex", +function(i){ +return JU.Elements.altElementNumbers[i]; +}, "~N"); +c$.altElementSymbolFromIndex = Clazz_defineMethod(c$, "altElementSymbolFromIndex", +function(i){ +return JU.Elements.altElementSymbols[i]; +}, "~N"); +c$.altIsotopeSymbolFromIndex = Clazz_defineMethod(c$, "altIsotopeSymbolFromIndex", +function(i){ +var code = JU.Elements.altElementNumbers[i]; +return (code >> 7) + JU.Elements.elementSymbolFromNumber(code & 127); +}, "~N"); +c$.altIsotopeSymbolFromIndex2 = Clazz_defineMethod(c$, "altIsotopeSymbolFromIndex2", +function(i){ +var code = JU.Elements.altElementNumbers[i]; +return JU.Elements.elementSymbolFromNumber(code & 127) + ((code) >> 7); +}, "~N"); +c$.getElementNumber = Clazz_defineMethod(c$, "getElementNumber", +function(atomicAndIsotopeNumber){ +return atomicAndIsotopeNumber & 127; +}, "~N"); +c$.getIsotopeNumber = Clazz_defineMethod(c$, "getIsotopeNumber", +function(atomicAndIsotopeNumber){ +return (atomicAndIsotopeNumber & 32640) >> 7; +}, "~N"); +c$.getAtomicAndIsotopeNumber = Clazz_defineMethod(c$, "getAtomicAndIsotopeNumber", +function(n, mass){ +return ((n < 0 ? 0 : n) + (mass <= 0 ? 0 : mass << 7)); +}, "~N,~N"); +c$.altElementIndexFromNumber = Clazz_defineMethod(c$, "altElementIndexFromNumber", +function(atomicAndIsotopeNumber){ +for (var i = 0; i < JU.Elements.altElementMax; i++) if (JU.Elements.altElementNumbers[i] == atomicAndIsotopeNumber) return i; + +return 0; +}, "~N"); +c$.isNaturalIsotope = Clazz_defineMethod(c$, "isNaturalIsotope", +function(isotopeSymbol){ +return ("1H,12C,14N".indexOf(isotopeSymbol + ",") >= 0); +}, "~S"); +c$.getBondingRadius = Clazz_defineMethod(c$, "getBondingRadius", +function(atomicNumberAndIsotope, charge){ +var atomicNumber = atomicNumberAndIsotope & 127; +return (charge > 0 && JU.Elements.bsCations.get(atomicNumber) ? JU.Elements.getBondingRadFromTable(atomicNumber, charge, JU.Elements.cationLookupTable) : charge < 0 && JU.Elements.bsAnions.get(atomicNumber) ? JU.Elements.getBondingRadFromTable(atomicNumber, charge, JU.Elements.anionLookupTable) : JU.Elements.defaultBondingMars[(atomicNumber << 1) + JU.Elements.bondingVersion] / 1000); +}, "~N,~N"); +c$.getCovalentRadius = Clazz_defineMethod(c$, "getCovalentRadius", +function(atomicNumberAndIsotope){ +return JU.Elements.defaultBondingMars[((atomicNumberAndIsotope & 127) << 1) + JU.Elements.covalentVersion] / 1000; +}, "~N"); +c$.getBondingRadFromTable = Clazz_defineMethod(c$, "getBondingRadFromTable", +function(atomicNumber, charge, table){ +var ionic = (atomicNumber << 4) + (charge + 4); +var iVal = 0; +var iMid = 0; +var iMin = 0; +var iMax = Clazz_doubleToInt(table.length / 2); +while (iMin != iMax) { +iMid = Clazz_doubleToInt((iMin + iMax) / 2); +iVal = table[iMid << 1]; +if (iVal > ionic) iMax = iMid; + else if (iVal < ionic) iMin = iMid + 1; + else return table[(iMid << 1) + 1] / 1000; +} +if (iVal > ionic) iMid--; +iVal = table[iMid << 1]; +if (atomicNumber != (iVal >> 4)) iMid++; +return table[(iMid << 1) + 1] / 1000; +}, "~N,~N,~A"); +c$.getVanderwaalsMar = Clazz_defineMethod(c$, "getVanderwaalsMar", +function(atomicAndIsotopeNumber, type){ +return JU.Elements.vanderwaalsMars[((atomicAndIsotopeNumber & 127) << 2) + (type.pt % 4)]; +}, "~N,J.c.VDW"); +c$.getHydrophobicity = Clazz_defineMethod(c$, "getHydrophobicity", +function(i){ +return (i < 1 || i >= JU.Elements.hydrophobicities.length ? 0 : JU.Elements.hydrophobicities[i]); +}, "~N"); +c$.getAllredRochowElectroNeg = Clazz_defineMethod(c$, "getAllredRochowElectroNeg", +function(elemno){ +return (elemno > 0 && elemno < JU.Elements.electroNegativities.length ? JU.Elements.electroNegativities[elemno] : 0); +}, "~N"); +c$.isElement = Clazz_defineMethod(c$, "isElement", +function(atomicAndIsotopeNumber, elemNo){ +return ((atomicAndIsotopeNumber & 127) == elemNo); +}, "~N,~N"); +c$.elementSymbols = Clazz_newArray(-1, ["Xx", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt"]); +c$.atomicMass = Clazz_newFloatArray(-1, [0, 1.008, 4.002, 6.9675, 9.012, 10.8135, 12.0106, 14.006, 15.999, 18.998, 20.1797, 22.989, 24.307, 26.981, 28.084, 30.973, 32.059, 35.4515, 39.948, 39.0983, 40.078, 44.955, 47.867, 50.9415, 51.9961, 54.938, 55.845, 58.933, 58.6934, 63.546, 65.38, 69.723, 72.63, 74.921, 78.971, 79.904, 83.798, 85.4678, 87.62, 88.905, 91.224, 92.906, 95.95, 98.91, 101.07, 102.905, 106.42, 107.8682, 112.414, 114.818, 118.71, 121.76, 127.6, 126.904, 131.293, 132.905, 137.327, 138.905, 140.116, 140.907, 144.242, 144.9, 150.36, 151.964, 157.25, 158.925, 162.5, 164.93, 167.259, 168.934, 173.054, 174.9668, 178.49, 180.947, 183.84, 186.207, 190.23, 192.217, 195.084, 196.966, 200.592, 204.3835, 207.2, 208.98, 210, 210, 222, 223, 226.03, 227.03, 232.0377, 231.035, 238.028, 237.05, 239.1, 243.1, 247.1, 247.1, 252.1, 252.1, 257.1, 256.1, 259.1, 260.1, 261, 262, 263, 262, 265, 268]); +c$.isotopeMass = Clazz_newIntArray(-1, [0, 1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40, 39, 40, 45, 48, 51, 52, 55, 56, 59, 59, 64, 65, 70, 73, 75, 79, 80, 84, 85, 88, 89, 91, 93, 96, 98, 101, 103, 106, 108, 112, 115, 119, 122, 128, 127, 131, 133, 137, 139, 140, 141, 144, 145, 150, 152, 157, 159, 163, 165, 167, 169, 173, 175, 179, 181, 184, 186, 190, 192, 195, 197, 201, 204, 207, 209, 209, 210, 222, 223, 226, 227, 232, 231, 238, 237, 244, 243, 247, 247, 251, 252, 257, 258, 259, 260, 261, 262, 263, 262, 265, 268]); +c$.elementNumberMax = JU.Elements.elementSymbols.length; +c$.htElementMap = null; +c$.elementNames = Clazz_newArray(-1, ["unknown", "hydrogen", "helium", "lithium", "beryllium", "boron", "carbon", "nitrogen", "oxygen", "fluorine", "neon", "sodium", "magnesium", "aluminum", "silicon", "phosphorus", "sulfur", "chlorine", "argon", "potassium", "calcium", "scandium", "titanium", "vanadium", "chromium", "manganese", "iron", "cobalt", "nickel", "copper", "zinc", "gallium", "germanium", "arsenic", "selenium", "bromine", "krypton", "rubidium", "strontium", "yttrium", "zirconium", "niobium", "molybdenum", "technetium", "ruthenium", "rhodium", "palladium", "silver", "cadmium", "indium", "tin", "antimony", "tellurium", "iodine", "xenon", "cesium", "barium", "lanthanum", "cerium", "praseodymium", "neodymium", "promethium", "samarium", "europium", "gadolinium", "terbium", "dysprosium", "holmium", "erbium", "thulium", "ytterbium", "lutetium", "hafnium", "tantalum", "tungsten", "rhenium", "osmium", "iridium", "platinum", "gold", "mercury", "thallium", "lead", "bismuth", "polonium", "astatine", "radon", "francium", "radium", "actinium", "thorium", "protactinium", "uranium", "neptunium", "plutonium", "americium", "curium", "berkelium", "californium", "einsteinium", "fermium", "mendelevium", "nobelium", "lawrencium", "rutherfordium", "dubnium", "seaborgium", "bohrium", "hassium", "meitnerium"]); +c$.altElementNumbers = Clazz_newIntArray(-1, [0, 13, 16, 55, 257, 385, 1414, 1670, 1798, 1927]); +c$.altElementMax = JU.Elements.altElementNumbers.length; +c$.altElementSymbols = Clazz_newArray(-1, ["Xx", "Al", "S", "Cs", "D", "T", "11C", "13C", "14C", "15N"]); +c$.altElementNames = Clazz_newArray(-1, ["dummy", "aluminium", "sulphur", "caesium", "deuterium", "tritium", "", "", "", ""]); +c$.vanderwaalsMars = Clazz_newShortArray(-1, [1000, 1000, 1000, 1000, 1200, 1100, 1100, 1200, 1400, 1400, 2200, 1400, 1820, 1810, 1220, 2200, 1700, 1530, 628, 1900, 2080, 1920, 1548, 1800, 1950, 1700, 1548, 1700, 1850, 1550, 1400, 1600, 1700, 1520, 1348, 1550, 1730, 1470, 1300, 1500, 1540, 1540, 2020, 1540, 2270, 2270, 2200, 2400, 1730, 1730, 1500, 2200, 2050, 1840, 1500, 2100, 2100, 2100, 2200, 2100, 2080, 1800, 1880, 1950, 2000, 1800, 1808, 1800, 1970, 1750, 1748, 1800, 1880, 1880, 2768, 1880, 2750, 2750, 2388, 2800, 1973, 2310, 1948, 2400, 1700, 2300, 1320, 2300, 1700, 2150, 1948, 2150, 1700, 2050, 1060, 2050, 1700, 2050, 1128, 2050, 1700, 2050, 1188, 2050, 1700, 2050, 1948, 2050, 1700, 2000, 1128, 2000, 1630, 2000, 1240, 2000, 1400, 2000, 1148, 2000, 1390, 2100, 1148, 2100, 1870, 1870, 1548, 2100, 1700, 2110, 3996, 2100, 1850, 1850, 828, 2050, 1900, 1900, 900, 1900, 2100, 1830, 1748, 1900, 2020, 2020, 1900, 2020, 1700, 3030, 2648, 2900, 1700, 2490, 2020, 2550, 1700, 2400, 1608, 2400, 1700, 2300, 1420, 2300, 1700, 2150, 1328, 2150, 1700, 2100, 1748, 2100, 1700, 2050, 1800, 2050, 1700, 2050, 1200, 2050, 1700, 2000, 1220, 2000, 1630, 2050, 1440, 2050, 1720, 2100, 1548, 2100, 1580, 2200, 1748, 2200, 1930, 2200, 1448, 2200, 2170, 1930, 1668, 2250, 2200, 2170, 1120, 2200, 2060, 2060, 1260, 2100, 2150, 1980, 1748, 2100, 2160, 2160, 2100, 2160, 1700, 3430, 3008, 3000, 1700, 2680, 2408, 2700, 1700, 2500, 1828, 2500, 1700, 2480, 1860, 2480, 1700, 2470, 1620, 2470, 1700, 2450, 1788, 2450, 1700, 2430, 1760, 2430, 1700, 2420, 1740, 2420, 1700, 2400, 1960, 2400, 1700, 2380, 1688, 2380, 1700, 2370, 1660, 2370, 1700, 2350, 1628, 2350, 1700, 2330, 1608, 2330, 1700, 2320, 1588, 2320, 1700, 2300, 1568, 2300, 1700, 2280, 1540, 2280, 1700, 2270, 1528, 2270, 1700, 2250, 1400, 2250, 1700, 2200, 1220, 2200, 1700, 2100, 1260, 2100, 1700, 2050, 1300, 2050, 1700, 2000, 1580, 2000, 1700, 2000, 1220, 2000, 1720, 2050, 1548, 2050, 1660, 2100, 1448, 2100, 1550, 2050, 1980, 2050, 1960, 1960, 1708, 2200, 2020, 2020, 2160, 2300, 1700, 2070, 1728, 2300, 1700, 1970, 1208, 2000, 1700, 2020, 1120, 2000, 1700, 2200, 2300, 2000, 1700, 3480, 3240, 2000, 1700, 2830, 2568, 2000, 1700, 2000, 2120, 2000, 1700, 2400, 1840, 2400, 1700, 2000, 1600, 2000, 1860, 2300, 1748, 2300, 1700, 2000, 1708, 2000, 1700, 2000, 1668, 2000, 1700, 2000, 1660, 2000, 1700, 2000, 1648, 2000, 1700, 2000, 1640, 2000, 1700, 2000, 1628, 2000, 1700, 2000, 1620, 2000, 1700, 2000, 1608, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1588, 2000, 1700, 2000, 1580, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000, 1700, 2000, 1600, 2000]); +c$.covalentVersion = 1; +c$.bondingVersion = 0; +c$.defaultBondingMars = Clazz_newShortArray(-1, [0, 0, 230, 320, 930, 460, 680, 1330, 350, 1020, 830, 850, 680, 750, 680, 710, 680, 630, 640, 640, 1120, 670, 970, 1550, 1100, 1390, 1350, 1260, 1200, 1160, 750, 1110, 1020, 1030, 990, 990, 1570, 960, 1330, 1960, 990, 1710, 1440, 1480, 1470, 1360, 1330, 1340, 1350, 1220, 1350, 1190, 1340, 1160, 1330, 1110, 1500, 1100, 1520, 1120, 1450, 1180, 1220, 1240, 1170, 1210, 1210, 1210, 1220, 1160, 1210, 1140, 1910, 1170, 1470, 2100, 1120, 1850, 1780, 1630, 1560, 1540, 1480, 1470, 1470, 1380, 1350, 1280, 1400, 1250, 1450, 1250, 1500, 1200, 1590, 1280, 1690, 1360, 1630, 1420, 1460, 1400, 1460, 1400, 1470, 1360, 1400, 1330, 1980, 1310, 1670, 2320, 1340, 1960, 1870, 1800, 1830, 1630, 1820, 1760, 1810, 1740, 1800, 1730, 1800, 1720, 1990, 1680, 1790, 1690, 1760, 1680, 1750, 1670, 1740, 1660, 1730, 1650, 1720, 1640, 1940, 1700, 1720, 1620, 1570, 1520, 1430, 1460, 1370, 1370, 1350, 1310, 1370, 1290, 1320, 1220, 1500, 1230, 1500, 1240, 1700, 1330, 1550, 1440, 1540, 1440, 1540, 1510, 1680, 1450, 1700, 1470, 2400, 1420, 2000, 2230, 1900, 2010, 1880, 1860, 1790, 1750, 1610, 1690, 1580, 1700, 1550, 1710, 1530, 1720, 1510, 1660, 1500, 1660, 1500, 1680, 1500, 1680, 1500, 1650, 1500, 1670, 1500, 1730, 1500, 1760, 1500, 1610, 1600, 1570, 1600, 1490, 1600, 1430, 1600, 1410, 1600, 1340, 1600, 1290]); +c$.cationLookupTable = Clazz_newShortArray(-1, [53, 680, 69, 440, 70, 350, 85, 350, 87, 230, 104, 160, 117, 680, 119, 160, 121, 130, 133, 220, 138, 90, 155, 80, 165, 1120, 181, 970, 197, 820, 198, 660, 215, 510, 229, 650, 232, 420, 247, 440, 249, 350, 262, 2190, 264, 370, 266, 300, 281, 340, 283, 270, 293, 1540, 309, 1330, 325, 1180, 326, 990, 343, 732, 357, 960, 358, 940, 359, 760, 360, 680, 374, 880, 375, 740, 376, 630, 377, 590, 389, 810, 390, 890, 391, 630, 394, 520, 406, 800, 407, 660, 408, 600, 411, 460, 422, 740, 423, 640, 438, 720, 439, 630, 454, 690, 469, 960, 470, 720, 485, 880, 486, 740, 501, 810, 503, 620, 518, 730, 520, 530, 535, 580, 537, 460, 549, 660, 552, 500, 554, 420, 569, 470, 571, 390, 597, 1470, 614, 1120, 631, 893, 645, 1090, 648, 790, 661, 1000, 664, 740, 665, 690, 677, 930, 680, 700, 682, 620, 699, 979, 712, 670, 727, 680, 742, 800, 744, 650, 757, 1260, 758, 890, 773, 1140, 774, 970, 791, 810, 806, 930, 808, 710, 823, 760, 825, 620, 837, 820, 840, 700, 842, 560, 857, 620, 859, 500, 885, 1670, 901, 1530, 902, 1340, 917, 1390, 919, 1016, 933, 1270, 935, 1034, 936, 920, 951, 1013, 952, 900, 967, 995, 983, 979, 999, 964, 1014, 1090, 1015, 950, 1031, 938, 1047, 923, 1048, 840, 1063, 908, 1079, 894, 1095, 881, 1111, 870, 1126, 930, 1127, 858, 1143, 850, 1160, 780, 1177, 680, 1192, 700, 1194, 620, 1208, 720, 1211, 560, 1224, 880, 1226, 690, 1240, 680, 1254, 800, 1256, 650, 1269, 1370, 1271, 850, 1285, 1270, 1286, 1100, 1301, 1470, 1303, 950, 1318, 1200, 1320, 840, 1333, 980, 1335, 960, 1337, 740, 1354, 670, 1371, 620, 1397, 1800, 1414, 1430, 1431, 1180, 1448, 1020, 1463, 1130, 1464, 980, 1465, 890, 1480, 970, 1482, 800, 1495, 1100, 1496, 950, 1499, 710, 1511, 1080, 1512, 930, 1527, 1070, 1528, 920]); +c$.anionLookupTable = Clazz_newShortArray(-1, [19, 1540, 96, 2600, 113, 1710, 130, 1360, 131, 680, 147, 1330, 241, 2120, 258, 1840, 275, 1810, 512, 2720, 529, 2220, 546, 1980, 563, 1960, 800, 2940, 803, 3700, 817, 2450, 834, 2110, 835, 2500, 851, 2200]); +c$.bsCations = new JU.BS(); +c$.bsAnions = new JU.BS(); +{ +for (var i = 0; i < JU.Elements.anionLookupTable.length; i += 2) JU.Elements.bsAnions.set(JU.Elements.anionLookupTable[i] >> 4); + +for (var i = 0; i < JU.Elements.cationLookupTable.length; i += 2) JU.Elements.bsCations.set(JU.Elements.cationLookupTable[i] >> 4); + +}c$.hydrophobicities = Clazz_newFloatArray(-1, [0, 0.62, -2.53, -0.78, -0.9, 0.29, -0.85, -0.74, 0.48, -0.4, 1.38, 1.06, -1.5, 0.64, 1.19, 0.12, -0.18, -0.05, 0.81, 0.26, 1.08]); +{ +if ((JU.Elements.elementNames.length != JU.Elements.elementNumberMax) || (JU.Elements.vanderwaalsMars.length >> 2 != JU.Elements.elementNumberMax) || (JU.Elements.defaultBondingMars.length >> 1 != JU.Elements.elementNumberMax)) { +JU.Logger.error("ERROR!!! Element table length mismatch:\n elementSymbols.length=" + JU.Elements.elementSymbols.length + "\n elementNames.length=" + JU.Elements.elementNames.length + "\n vanderwaalsMars.length=" + JU.Elements.vanderwaalsMars.length + "\n covalentMars.length=" + JU.Elements.defaultBondingMars.length); +}}c$.electroNegativities = Clazz_newFloatArray(-1, [0, 2.2, 0, 0.97, 1.47, 2.01, 2.5, 3.07, 3.5, 4.1, 0, 1.01, 1.23, 1.47, 1.74, 2.06, 2.44, 2.83, 0, 0.91, 1.04, 1.2, 1.32, 1.45, 1.56, 1.6, 1.64, 1.7, 1.75, 1.75, 1.66, 1.82, 2.02, 2.2, 2.48, 2.74, 0, 0.89, 0.99, 1.11, 1.22, 1.23, 1.3, 1.36, 1.42, 1.45, 1.35, 1.42, 1.46, 1.49, 1.72, 1.82, 2.01, 2.21]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Escape", ["JU.AU", "$.BS", "$.Lst", "$.M3", "$.M4", "$.P3", "$.P4", "$.PT", "$.SB", "$.V3", "JS.SV"], function(){ +var c$ = Clazz_declareType(JU, "Escape", null); +c$.escapeColor = Clazz_defineMethod(c$, "escapeColor", +function(argb){ +return (argb == 0 ? null : "[x" + JU.Escape.getHexColorFromRGB(argb) + "]"); +}, "~N"); +c$.getHexColorFromRGB = Clazz_defineMethod(c$, "getHexColorFromRGB", +function(argb){ +if (argb == 0) return null; +var r = "00" + Integer.toHexString((argb >> 16) & 0xFF); +r = r.substring(r.length - 2); +var g = "00" + Integer.toHexString((argb >> 8) & 0xFF); +g = g.substring(g.length - 2); +var b = "00" + Integer.toHexString(argb & 0xFF); +b = b.substring(b.length - 2); +return r + g + b; +}, "~N"); +c$.eP = Clazz_defineMethod(c$, "eP", +function(xyz){ +if (xyz == null) return "null"; +return "{" + xyz.x + " " + xyz.y + " " + xyz.z + "}"; +}, "JU.T3"); +c$.matrixToScript = Clazz_defineMethod(c$, "matrixToScript", +function(m){ +return JU.PT.replaceAllCharacters(m.toString(), "\n\r ", "").$replace('\t', ' '); +}, "~O"); +c$.eP4 = Clazz_defineMethod(c$, "eP4", +function(x){ +return "{" + x.x + " " + x.y + " " + x.z + " " + x.w + "}"; +}, "JU.P4"); +c$.drawQuat = Clazz_defineMethod(c$, "drawQuat", +function(q, prefix, id, ptCenter, scale){ +var strV = " VECTOR " + JU.Escape.eP(ptCenter) + " "; +if (scale == 0) scale = 1; +return "draw " + prefix + "x" + id + strV + JU.Escape.eP(q.getVectorScaled(0, scale)) + " color red\n" + "draw " + prefix + "y" + id + strV + JU.Escape.eP(q.getVectorScaled(1, scale)) + " color green\n" + "draw " + prefix + "z" + id + strV + JU.Escape.eP(q.getVectorScaled(2, scale)) + " color blue\n"; +}, "JU.Quat,~S,~S,JU.P3,~N"); +c$.e = Clazz_defineMethod(c$, "e", +function(x){ +if (x == null) return "null"; +if (JU.PT.isNonStringPrimitive(x)) return x.toString(); +if ((typeof(x)=='string')) return JU.PT.esc(x); +if (Clazz_instanceOf(x,"JU.Lst")) return JU.Escape.eV(x); +if (Clazz_instanceOf(x,"java.util.Map")) return JU.Escape.escapeMap(x); +if (Clazz_instanceOf(x,"JU.BS")) return JU.Escape.eBS(x); +if (Clazz_instanceOf(x,"JU.P4")) return JU.Escape.eP4(x); +if (Clazz_instanceOf(x,"JU.T3")) return JU.Escape.eP(x); +if (JU.AU.isAP(x)) return JU.Escape.eAP(x); +if (JU.AU.isAS(x)) return JU.Escape.eAS(x, true); +if (Clazz_instanceOf(x,"JU.M34")) return JU.PT.rep(JU.PT.rep(x.toString(), "[\n ", "["), "] ]", "]]"); +if (JU.AU.isAFF(x)) { +var ff = x; +var sb = new JU.SB().append("["); +var sep = ""; +for (var i = 0; i < ff.length; i++) { +sb.append(sep).append(JU.Escape.eAF(ff[i])); +sep = ","; +} +sb.append("]"); +return sb.toString(); +}if (Clazz_instanceOf(x,"JU.A4")) { +var a = x; +return "{" + a.x + " " + a.y + " " + a.z + " " + (a.angle * 180 / 3.141592653589793) + "}"; +}if (Clazz_instanceOf(x,"JU.Quat")) return x.toString(); +var s = JU.PT.nonArrayString(x); +return (s == null ? JU.PT.toJSON(null, x) : s); +}, "~O"); +c$.eV = Clazz_defineMethod(c$, "eV", +function(list){ +if (list == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < list.size(); i++) { +if (i > 0) s.append(", "); +s.append(JU.Escape.escapeNice(list.get(i).asString())); +} +s.append("]"); +return s.toString(); +}, "JU.Lst"); +c$.escapeMap = Clazz_defineMethod(c$, "escapeMap", +function(ht){ +var sb = new JU.SB(); +sb.append("{ "); +var sep = ""; +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +sb.append(sep).append(JU.PT.esc(key)).appendC(':'); +var val = entry.getValue(); +if (!(Clazz_instanceOf(val,"JS.SV"))) val = JS.SV.getVariable(val); +sb.append((val).escape()); +sep = ","; +} +sb.append(" }"); +return sb.toString(); +}, "java.util.Map"); +c$.escapeFloatA = Clazz_defineMethod(c$, "escapeFloatA", +function(f, asArray){ +if (asArray) return JU.PT.toJSON(null, f); +var sb = new JU.SB(); +for (var i = 0; i < f.length; i++) { +if (i > 0) sb.appendC('\n'); +sb.appendF(f[i]); +} +return sb.toString(); +}, "~A,~B"); +c$.escapeFloatAA = Clazz_defineMethod(c$, "escapeFloatAA", +function(f, addSemi){ +var sb = new JU.SB(); +var eol = (addSemi ? ";\n" : "\n"); +for (var i = 0; i < f.length; i++) if (f[i] != null) { +if (i > 0) sb.append(eol); +for (var j = 0; j < f[i].length; j++) sb.appendF(f[i][j]).appendC('\t'); + +} +return sb.toString(); +}, "~A,~B"); +c$.escapeFloatAAA = Clazz_defineMethod(c$, "escapeFloatAAA", +function(f, addSemi){ +var sb = new JU.SB(); +var eol = (addSemi ? ";\n" : "\n"); +if (f[0] == null || f[0][0] == null) return "0 0 0" + eol; +sb.appendI(f.length).append(" ").appendI(f[0].length).append(" ").appendI(f[0][0].length); +for (var i = 0; i < f.length; i++) if (f[i] != null) { +sb.append(eol); +for (var j = 0; j < f[i].length; j++) if (f[i][j] != null) { +sb.append(eol); +for (var k = 0; k < f[i][j].length; k++) sb.appendF(f[i][j][k]).appendC('\t'); + +} +} +return sb.toString(); +}, "~A,~B"); +c$.eAS = Clazz_defineMethod(c$, "eAS", +function(list, nicely){ +if (list == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < list.length; i++) { +if (i > 0) s.append(", "); +s.append(nicely ? JU.Escape.escapeNice(list[i]) : JU.PT.esc(list[i])); +} +s.append("]"); +return s.toString(); +}, "~A,~B"); +c$.eAI = Clazz_defineMethod(c$, "eAI", +function(ilist){ +if (ilist == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < ilist.length; i++) { +if (i > 0) s.append(", "); +s.appendI(ilist[i]); +} +return s.append("]").toString(); +}, "~A"); +c$.eAD = Clazz_defineMethod(c$, "eAD", +function(dlist){ +if (dlist == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < dlist.length; i++) { +if (i > 0) s.append(", "); +s.appendD(dlist[i]); +} +return s.append("]").toString(); +}, "~A"); +c$.eAF = Clazz_defineMethod(c$, "eAF", +function(flist){ +if (flist == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < flist.length; i++) { +if (i > 0) s.append(", "); +s.appendF(flist[i]); +} +return s.append("]").toString(); +}, "~A"); +c$.eAP = Clazz_defineMethod(c$, "eAP", +function(plist){ +if (plist == null) return JU.PT.esc(""); +var s = new JU.SB(); +s.append("["); +for (var i = 0; i < plist.length; i++) { +if (i > 0) s.append(", "); +s.append(JU.Escape.eP(plist[i])); +} +return s.append("]").toString(); +}, "~A"); +c$.escapeNice = Clazz_defineMethod(c$, "escapeNice", +function(s){ +if (s == null) return "null"; +var f = JU.PT.parseFloatStrict(s); +return (Float.isNaN(f) ? JU.PT.esc(s) : s); +}, "~S"); +c$.uABsM = Clazz_defineMethod(c$, "uABsM", +function(s){ +if (s.charAt(0) == '{') return JU.Escape.uP(s); +if ((JU.Escape.isStringArray(s) || s.startsWith("[{") && s.indexOf("[{") == s.lastIndexOf("[{")) && s.indexOf(',') < 0 && s.indexOf('.') < 0 && s.indexOf('-') < 0) return JU.BS.unescape(s); +if (s.startsWith("[[")) return JU.Escape.unescapeMatrix(s); +return s; +}, "~S"); +c$.isStringArray = Clazz_defineMethod(c$, "isStringArray", +function(s){ +return s.startsWith("({") && s.lastIndexOf("({") == 0 && s.indexOf("})") == s.length - 2; +}, "~S"); +c$.uP = Clazz_defineMethod(c$, "uP", +function(strPoint){ +if (strPoint == null || strPoint.length == 0) return strPoint; +var str = strPoint.$replace('\n', ' ').trim(); +if (str.charAt(0) != '{' || str.charAt(str.length - 1) != '}') return strPoint; +var points = Clazz_newFloatArray (5, 0); +var nPoints = 0; +str = str.substring(1, str.length - 1); +var next = Clazz_newIntArray (1, 0); +for (; nPoints < 5; nPoints++) { +points[nPoints] = JU.PT.parseFloatNext(str, next); +if (Float.isNaN(points[nPoints])) { +if (next[0] >= str.length || str.charAt(next[0]) != ',') break; +next[0]++; +nPoints--; +}} +if (nPoints == 3) return JU.P3.new3(points[0], points[1], points[2]); +if (nPoints == 4) return JU.P4.new4(points[0], points[1], points[2], points[3]); +return strPoint; +}, "~S"); +c$.unescapeMatrix = Clazz_defineMethod(c$, "unescapeMatrix", +function(strMatrix){ +if (strMatrix == null || strMatrix.length == 0) return strMatrix; +var str = strMatrix.$replace('\n', ' ').trim(); +if (str.lastIndexOf("[[") != 0 || str.indexOf("]]") != str.length - 2) return strMatrix; +var points = Clazz_newFloatArray (16, 0); +str = str.substring(2, str.length - 2).$replace('[', ' ').$replace(']', ' ').$replace(',', ' '); +var next = Clazz_newIntArray (1, 0); +var nPoints = 0; +for (; nPoints < 16; nPoints++) { +points[nPoints] = JU.PT.parseFloatNext(str, next); +if (Float.isNaN(points[nPoints])) { +break; +}} +if (!Float.isNaN(JU.PT.parseFloatNext(str, next))) return strMatrix; +if (nPoints == 9) return JU.M3.newA9(points); +if (nPoints == 16) return JU.M4.newA16(points); +return strMatrix; +}, "~S"); +c$.eBS = Clazz_defineMethod(c$, "eBS", +function(bs){ +return JU.BS.escape(bs, '(', ')'); +}, "JU.BS"); +c$.eBond = Clazz_defineMethod(c$, "eBond", +function(bs){ +return JU.BS.escape(bs, '[', ']'); +}, "JU.BS"); +c$.toReadable = Clazz_defineMethod(c$, "toReadable", +function(name, info){ +var sb = new JU.SB(); +var sep = ""; +if (info == null) return "null"; +if (JU.PT.isNonStringPrimitive(info)) return JU.Escape.packageReadable(name, null, info.toString()); +if ((typeof(info)=='string')) return JU.Escape.packageReadable(name, null, JU.PT.esc(info)); +if (Clazz_instanceOf(info,"JS.SV")) return JU.Escape.packageReadable(name, null, (info).escape()); +if (JU.AU.isAS(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "String[" + imax + "]", sb); +}if (JU.AU.isAI(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).appendI((info)[i]); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "int[" + imax + "]", sb); +}if (JU.AU.isAF(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).appendF((info)[i]); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "float[" + imax + "]", sb); +}if (JU.AU.isAD(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).appendD((info)[i]); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "double[" + imax + "]", sb); +}if (JU.AU.isAP(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.eP((info)[i])); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "point3f[" + imax + "]", sb); +}if (JU.AU.isASS(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ",\n"; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "String[" + imax + "][]", sb); +}if (JU.AU.isAII(info)) { +sb.append("["); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ","; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "int[" + imax + "][]", sb); +}if (JU.AU.isAFF(info)) { +sb.append("[\n"); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ",\n"; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "float[][]", sb); +}if (JU.AU.isADD(info)) { +sb.append("[\n"); +var imax = (info).length; +for (var i = 0; i < imax; i++) { +sb.append(sep).append(JU.Escape.toReadable(null, (info)[i])); +sep = ",\n"; +} +sb.append("]"); +return JU.Escape.packageReadableSb(name, "double[][]", sb); +}if (Clazz_instanceOf(info,"JU.Lst")) { +var imax = (info).size(); +for (var i = 0; i < imax; i++) { +sb.append(JU.Escape.toReadable(name + "[" + (i + 1) + "]", (info).get(i))); +} +return JU.Escape.packageReadableSb(name, "List[" + imax + "]", sb); +}if (Clazz_instanceOf(info,"JU.M34") || Clazz_instanceOf(info,"JU.T3") || Clazz_instanceOf(info,"JU.P4") || Clazz_instanceOf(info,"JU.A4")) { +sb.append(JU.Escape.e(info)); +return JU.Escape.packageReadableSb(name, null, sb); +}if (Clazz_instanceOf(info,"java.util.Map")) { +var e = (info).keySet().iterator(); +while (e.hasNext()) { +var key = e.next(); +sb.append(JU.Escape.toReadable((name == null ? "" : name + ".") + key, (info).get(key))); +} +return sb.toString(); +}return JU.Escape.packageReadable(name, null, JU.PT.toJSON(null, info)); +}, "~S,~O"); +c$.packageReadableSb = Clazz_defineMethod(c$, "packageReadableSb", +function(infoName, infoType, sb){ +return JU.Escape.packageReadable(infoName, infoType, sb.toString()); +}, "~S,~S,JU.SB"); +c$.packageReadable = Clazz_defineMethod(c$, "packageReadable", +function(infoName, infoType, info){ +var s = (infoType == null ? "" : infoType + "\t"); +if (infoName == null) return s + info; +return "\n" + infoName + "\t" + (infoType == null ? "" : "*" + infoType + "\t") + info; +}, "~S,~S,~S"); +c$.escapeModelFileNumber = Clazz_defineMethod(c$, "escapeModelFileNumber", +function(iv){ +return "" + (Clazz_doubleToInt(iv / 1000000)) + "." + (iv % 1000000); +}, "~N"); +c$.encapsulateData = Clazz_defineMethod(c$, "encapsulateData", +function(name, data, depth){ +var s; +switch (depth) { +case 1: +s = JU.Escape.escapeFloatA(data, false) + ";\n"; +break; +case 2: +s = JU.Escape.escapeFloatAA(data, true) + ";\n"; +break; +case 3: +s = JU.Escape.escapeFloatAAA(data, true) + ";\n"; +break; +default: +s = data.toString(); +break; +} +return " DATA \"" + name + "\"\n" + s + " END \"" + name + "\";\n"; +}, "~S,~O,~N"); +c$.unescapeUnicode = Clazz_defineMethod(c$, "unescapeUnicode", +function(s){ +var ichMax = s.length; +var sb = JU.SB.newN(ichMax); +var ich = 0; +while (ich < ichMax) { +var ch = s.charAt(ich++); +if (ch == '\\' && ich < ichMax) { +ch = s.charAt(ich++); +switch ((ch).charCodeAt(0)) { +case 117: +if (ich < ichMax) { +var unicode = 0; +for (var k = 4; --k >= 0 && ich < ichMax; ) { +var chT = s.charAt(ich); +var hexit = JU.Escape.getHexitValue(chT); +if (hexit < 0) break; +unicode <<= 4; +unicode += hexit; +++ich; +} +ch = String.fromCharCode(unicode); +}} +}sb.appendC(ch); +} +return sb.toString(); +}, "~S"); +c$.getHexitValue = Clazz_defineMethod(c$, "getHexitValue", +function(ch){ +if (ch.charCodeAt(0) >= 48 && ch.charCodeAt(0) <= 57) return ch.charCodeAt(0) - 48; + else if (ch.charCodeAt(0) >= 97 && ch.charCodeAt(0) <= 102) return 10 + ch.charCodeAt(0) - 97; + else if (ch.charCodeAt(0) >= 65 && ch.charCodeAt(0) <= 70) return 10 + ch.charCodeAt(0) - 65; + else return -1; +}, "~S"); +c$.unescapeStringArray = Clazz_defineMethod(c$, "unescapeStringArray", +function(data){ +if (data == null || !data.startsWith("[") || !data.endsWith("]")) return null; +var v = new JU.Lst(); +var next = Clazz_newIntArray (1, 0); +next[0] = 1; +while (next[0] < data.length) { +var s = JU.PT.getQuotedStringNext(data, next); +if (s == null) return null; +v.addLast(JU.PT.rep(s, "\\\"", "\"")); +while (next[0] < data.length && data.charAt(next[0]) != '"') next[0]++; + +} +return v.toArray( new Array(v.size())); +}, "~S"); +c$.isAV = Clazz_defineMethod(c$, "isAV", +function(x){ +{ +return Clazz_instanceOf(x[0], JS.SV); +}}, "~O"); +c$.escapeHelical = Clazz_defineMethod(c$, "escapeHelical", +function(id, tokType, a, b, pts){ +switch (tokType) { +case 134217751: +return (pts == null ? new JU.P3() : pts[0]); +case 1073741854: +case 1665140738: +return (pts == null ? new JU.V3() : pts[tokType == 1073741854 ? 1 : 2]); +case 134217729: +return Float.$valueOf(pts == null ? NaN : pts[3].x); +case 135176: +return (pts == null ? "" : "draw ID \"" + id + "\" VECTOR " + JU.Escape.eP(pts[0]) + " " + JU.Escape.eP(pts[1]) + " color " + (pts[3].x < 0 ? "{255.0 200.0 0.0}" : "{255.0 0.0 128.0}")); +case 1745489939: +return (pts == null ? "" : "measure " + JU.Escape.eP(a) + JU.Escape.eP(pts[0]) + JU.Escape.eP(pts[4])) + JU.Escape.eP(b); +default: +return (pts == null ? new Array(0) : pts); +} +}, "~S,~N,JU.P3,JU.P3,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["J.api.JmolGraphicsInterface", "JU.Normix"], "JU.GData", ["JU.AU", "$.P3", "$.V3", "JU.C", "$.Font", "$.Shader"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.apiPlatform = null; +this.translucentCoverOnly = false; +this.currentlyRendering = false; +this.antialiasEnabled = false; +this.windowWidth = 0; +this.windowHeight = 0; +this.displayMinX = 0; +this.displayMaxX = 0; +this.displayMinY = 0; +this.displayMaxY = 0; +this.displayMinX2 = 0; +this.displayMaxX2 = 0; +this.displayMinY2 = 0; +this.displayMaxY2 = 0; +this.antialiasThisFrame = false; +this.inGreyscaleMode = false; +this.changeableColixMap = null; +this.backgroundImage = null; +this.newWindowWidth = 0; +this.newWindowHeight = 0; +this.newAntialiasing = false; +this.bgcolor = 0; +this.contrastColix = 0; +this.xLast = 0; +this.yLast = 0; +this.slab = 0; +this.depth = 0; +this.width = 0; +this.height = 0; +this.ambientOcclusion = 0; +this.colixCurrent = 0; +this.argbCurrent = 0; +this.ht3 = 0; +this.isPass2 = false; +this.textY = 0; +this.bufferSize = 0; +this.shader = null; +this.vwr = null; +this.graphicsForMetrics = null; +this.currentFont = null; +this.argbNoisyUp = 0; +this.argbNoisyDn = 0; +this.transformedVectors = null; +Clazz_instantialize(this, arguments);}, JU, "GData", null, J.api.JmolGraphicsInterface); +Clazz_prepareFields (c$, function(){ +this.changeableColixMap = Clazz_newShortArray (16, 0); +this.transformedVectors = new Array(JU.GData.normixCount); +}); +Clazz_makeConstructor(c$, +function(){ +this.shader = new JU.Shader(); +}); +Clazz_defineMethod(c$, "initialize", +function(vwr, apiPlatform){ +this.vwr = vwr; +this.apiPlatform = apiPlatform; +}, "JV.Viewer,J.api.GenericPlatform"); +Clazz_defineMethod(c$, "setDepth", +function(depthValue){ +this.depth = depthValue < 0 ? 0 : depthValue; +}, "~N"); +Clazz_overrideMethod(c$, "setSlab", +function(slabValue){ +this.slab = Math.max(0, slabValue); +}, "~N"); +Clazz_overrideMethod(c$, "setSlabAndZShade", +function(slab, depth, zSlab, zDepth, zPower){ +this.setSlab(slab); +this.setDepth(depth); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAmbientOcclusion", +function(value){ +this.ambientOcclusion = value; +}, "~N"); +Clazz_overrideMethod(c$, "isAntialiased", +function(){ +return this.antialiasThisFrame; +}); +Clazz_defineMethod(c$, "getChangeableColix", +function(id, argb){ +if (id >= this.changeableColixMap.length) this.changeableColixMap = JU.AU.arrayCopyShort(this.changeableColixMap, id + 16); +if (this.changeableColixMap[id] == 0) this.changeableColixMap[id] = JU.C.getColix(argb); +return (id | -32768); +}, "~N,~N"); +Clazz_defineMethod(c$, "changeColixArgb", +function(id, argb){ +if (id < this.changeableColixMap.length && this.changeableColixMap[id] != 0) this.changeableColixMap[id] = JU.C.getColix(argb); +}, "~N,~N"); +Clazz_defineMethod(c$, "getColorArgbOrGray", +function(colix){ +if (colix == 3) return JU.C.getArgb(this.contrastColix); +if (colix < 0) colix = this.changeableColixMap[colix & 2047]; +return (this.inGreyscaleMode ? JU.C.getArgbGreyscale(colix) : JU.C.getArgb(colix)); +}, "~N"); +Clazz_defineMethod(c$, "getShades", +function(colix){ +if (colix < 0) colix = this.changeableColixMap[colix & 2047]; +return (this.inGreyscaleMode ? this.shader.getShadesG(colix) : this.shader.getShades(colix)); +}, "~N"); +Clazz_defineMethod(c$, "setGreyscaleMode", +function(greyscaleMode){ +this.inGreyscaleMode = greyscaleMode; +}, "~B"); +Clazz_defineMethod(c$, "getSpecularPower", +function(){ +return this.shader.specularPower; +}); +Clazz_defineMethod(c$, "setSpecularPower", +function(val){ +if (val < 0) { +this.setSpecularExponent(-val); +return; +}if (this.shader.specularPower == val) return; +this.shader.specularPower = val; +this.shader.intenseFraction = val / 100; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getSpecularPercent", +function(){ +return this.shader.specularPercent; +}); +Clazz_defineMethod(c$, "setSpecularPercent", +function(val){ +if (this.shader.specularPercent == val) return; +this.shader.specularPercent = val; +this.shader.specularFactor = val / 100; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getSpecularExponent", +function(){ +return this.shader.specularExponent; +}); +Clazz_defineMethod(c$, "setSpecularExponent", +function(val){ +if (this.shader.specularExponent == val) return; +this.shader.specularExponent = val; +this.shader.phongExponent = Clazz_doubleToInt(Math.pow(2, val)); +this.shader.usePhongExponent = false; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getPhongExponent", +function(){ +return this.shader.phongExponent; +}); +Clazz_defineMethod(c$, "setPhongExponent", +function(val){ +if (this.shader.phongExponent == val && this.shader.usePhongExponent) return; +this.shader.phongExponent = val; +var x = (Math.log(val) / Math.log(2)); +this.shader.usePhongExponent = (x != Clazz_floatToInt(x)); +if (!this.shader.usePhongExponent) this.shader.specularExponent = Clazz_floatToInt(x); +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getDiffusePercent", +function(){ +return this.shader.diffusePercent; +}); +Clazz_defineMethod(c$, "setDiffusePercent", +function(val){ +if (this.shader.diffusePercent == val) return; +this.shader.diffusePercent = val; +this.shader.diffuseFactor = val / 100; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getAmbientPercent", +function(){ +return this.shader.ambientPercent; +}); +Clazz_defineMethod(c$, "setAmbientPercent", +function(val){ +if (this.shader.ambientPercent == val) return; +this.shader.ambientPercent = val; +this.shader.ambientFraction = val / 100; +this.shader.flushCaches(); +}, "~N"); +Clazz_defineMethod(c$, "getSpecular", +function(){ +return this.shader.specularOn; +}); +Clazz_defineMethod(c$, "setSpecular", +function(val){ +if (this.shader.specularOn == val) return; +this.shader.specularOn = val; +this.shader.flushCaches(); +}, "~B"); +Clazz_defineMethod(c$, "setCel", +function(val){ +this.shader.setCel(val, this.shader.celPower, this.bgcolor); +}, "~B"); +Clazz_defineMethod(c$, "getCel", +function(){ +return this.shader.celOn; +}); +Clazz_defineMethod(c$, "getCelPower", +function(){ +return this.shader.celPower; +}); +Clazz_defineMethod(c$, "setCelPower", +function(celPower){ +this.shader.setCel(this.shader.celOn || this.shader.celPower == 0, celPower, this.bgcolor); +}, "~N"); +Clazz_defineMethod(c$, "getLightSource", +function(){ +return this.shader.lightSource; +}); +Clazz_defineMethod(c$, "isClipped3", +function(x, y, z){ +return (x < 0 || x >= this.width || y < 0 || y >= this.height || z < this.slab || z > this.depth); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isClipped", +function(x, y){ +return (x < 0 || x >= this.width || y < 0 || y >= this.height); +}, "~N,~N"); +Clazz_overrideMethod(c$, "isInDisplayRange", +function(x, y){ +return (x >= this.displayMinX && x < this.displayMaxX && y >= this.displayMinY && y < this.displayMaxY); +}, "~N,~N"); +Clazz_overrideMethod(c$, "isClippedXY", +function(diameter, x, y){ +var r = (diameter + 1) >> 1; +return (x < -r || x >= this.width + r || y < -r || y >= this.height + r); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isClippedZ", +function(z){ +return (z != -2147483648 && (z < this.slab || z > this.depth)); +}, "~N"); +Clazz_defineMethod(c$, "clipCode3", +function(x, y, z){ +var code = 0; +if (x < 0) code |= (x < this.displayMinX2 ? -1 : 8); + else if (x >= this.width) code |= (x > this.displayMaxX2 ? -1 : 4); +if (y < 0) code |= (y < this.displayMinY2 ? -1 : 2); + else if (y >= this.height) code |= (y > this.displayMaxY2 ? -1 : 1); +if (z < this.slab) code |= 32; + else if (z > this.depth) code |= 16; +return code; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "clipCode", +function(z){ +var code = 0; +if (z < this.slab) code |= 32; + else if (z > this.depth) code |= 16; +return code; +}, "~N"); +Clazz_defineMethod(c$, "getFont3D", +function(fontSize){ +return JU.Font.createFont3D(0, 0, fontSize, fontSize, this.apiPlatform, this.graphicsForMetrics); +}, "~N"); +Clazz_defineMethod(c$, "getFont3DFS", +function(fontFace, fontSize){ +return JU.Font.createFont3D(JU.Font.getFontFaceID(fontFace), 0, fontSize, fontSize, this.apiPlatform, this.graphicsForMetrics); +}, "~S,~N"); +Clazz_defineMethod(c$, "getFontFidFS", +function(fontFace, fontSize){ +return this.getFont3DFSS(fontFace, "Bold", fontSize).fid; +}, "~S,~N"); +Clazz_defineMethod(c$, "getFont3DFSS", +function(fontFace, fontStyle, fontSize){ +var iStyle = JU.Font.getFontStyleID(fontStyle); +if (iStyle < 0) iStyle = 0; +return JU.Font.createFont3D(JU.Font.getFontFaceID(fontFace), iStyle, fontSize, fontSize, this.apiPlatform, this.graphicsForMetrics); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "getFont3DScaled", +function(font, scale){ +var newScale = font.fontSizeNominal * scale; +return (newScale == font.fontSize ? font : JU.Font.createFont3D(font.idFontFace, font.idFontStyle, newScale, font.fontSizeNominal, this.apiPlatform, this.graphicsForMetrics)); +}, "JU.Font,~N"); +Clazz_defineMethod(c$, "getFontFidI", +function(fontSize){ +return this.getFont3D(fontSize).fid; +}, "~N"); +Clazz_defineMethod(c$, "getFont3DCurrent", +function(){ +return this.currentFont; +}); +Clazz_defineMethod(c$, "setFont", +function(font3d){ +}, "JU.Font"); +Clazz_defineMethod(c$, "setFontBold", +function(fontFace, fontSize){ +this.setFont(this.getFont3DFSS(fontFace, "Bold", fontSize)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setBackgroundTransparent", +function(TF){ +}, "~B"); +Clazz_defineMethod(c$, "setBackgroundArgb", +function(argb){ +this.bgcolor = argb; +this.setCel(this.shader.celOn); +}, "~N"); +Clazz_defineMethod(c$, "setBackgroundImage", +function(image){ +this.backgroundImage = image; +}, "~O"); +Clazz_defineMethod(c$, "setWindowParameters", +function(width, height, antialias){ +this.setWinParams(width, height, antialias); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setWinParams", +function(width, height, antialias){ +this.newWindowWidth = width; +this.newWindowHeight = height; +this.newAntialiasing = antialias; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setNewWindowParametersForExport", +function(){ +this.windowWidth = this.newWindowWidth; +this.windowHeight = this.newWindowHeight; +this.setWidthHeight(false); +}); +Clazz_defineMethod(c$, "setWidthHeight", +function(isAntialiased){ +this.width = this.windowWidth; +this.height = this.windowHeight; +if (isAntialiased) { +this.width <<= 1; +this.height <<= 1; +}this.xLast = this.width - 1; +this.yLast = this.height - 1; +this.displayMinX = -(this.width >> 1); +this.displayMaxX = this.width - this.displayMinX; +this.displayMinY = -(this.height >> 1); +this.displayMaxY = this.height - this.displayMinY; +this.displayMinX2 = this.displayMinX << 2; +this.displayMaxX2 = this.displayMaxX << 2; +this.displayMinY2 = this.displayMinY << 2; +this.displayMaxY2 = this.displayMaxY << 2; +this.ht3 = this.height * 3; +this.bufferSize = this.width * this.height; +}, "~B"); +Clazz_defineMethod(c$, "beginRendering", +function(stereoRotationMatrix, translucentMode, isImageWrite, renderLow){ +}, "JU.M3,~B,~B,~B"); +Clazz_defineMethod(c$, "endRendering", +function(){ +}); +Clazz_defineMethod(c$, "snapshotAnaglyphChannelBytes", +function(){ +}); +Clazz_defineMethod(c$, "getScreenImage", +function(isImageWrite){ +return null; +}, "~B"); +Clazz_defineMethod(c$, "releaseScreenImage", +function(){ +}); +Clazz_defineMethod(c$, "applyAnaglygh", +function(stereoMode, stereoColors){ +}, "J.c.STER,~A"); +Clazz_defineMethod(c$, "setPass2", +function(antialias){ +return false; +}, "~B"); +Clazz_defineMethod(c$, "destroy", +function(){ +}); +Clazz_defineMethod(c$, "clearFontCache", +function(){ +}); +Clazz_defineMethod(c$, "drawQuadrilateralBits", +function(jmolRenderer, colix, screenA, screenB, screenC, screenD){ +jmolRenderer.drawLineBits(colix, colix, screenA, screenB); +jmolRenderer.drawLineBits(colix, colix, screenB, screenC); +jmolRenderer.drawLineBits(colix, colix, screenC, screenD); +jmolRenderer.drawLineBits(colix, colix, screenD, screenA); +}, "J.api.JmolRendererInterface,~N,JU.P3,JU.P3,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "drawTriangleBits", +function(renderer, screenA, colixA, screenB, colixB, screenC, colixC, check){ +if ((check & 1) == 1) renderer.drawLineBits(colixA, colixB, screenA, screenB); +if ((check & 2) == 2) renderer.drawLineBits(colixB, colixC, screenB, screenC); +if ((check & 4) == 4) renderer.drawLineBits(colixC, colixA, screenC, screenA); +}, "J.api.JmolRendererInterface,JU.P3,~N,JU.P3,~N,JU.P3,~N,~N"); +Clazz_defineMethod(c$, "plotImage", +function(x, y, z, image, jmolRenderer, bgcolix, width, height){ +}, "~N,~N,~N,~O,J.api.JmolRendererInterface,~N,~N,~N"); +Clazz_defineMethod(c$, "plotText", +function(x, y, z, colorArgbOrGray, bgColor, text, font3d, jmolRenderer){ +}, "~N,~N,~N,~N,~N,~S,JU.Font,J.api.JmolRendererInterface"); +Clazz_defineMethod(c$, "renderBackground", +function(jmolRenderer){ +}, "J.api.JmolRendererInterface"); +Clazz_defineMethod(c$, "setColor", +function(argb){ +this.argbCurrent = this.argbNoisyUp = this.argbNoisyDn = argb; +}, "~N"); +Clazz_defineMethod(c$, "setC", +function(colix){ +return true; +}, "~N"); +Clazz_defineMethod(c$, "isDirectedTowardsCamera", +function(normix){ +return (normix < 0) || (this.transformedVectors[normix].z > 0); +}, "~N"); +c$.roundInt = Clazz_defineMethod(c$, "roundInt", +function(a){ +{ +return a; +}}, "~N"); +Clazz_defineMethod(c$, "clear", +function(){ +}); +Clazz_overrideMethod(c$, "renderAllStrings", +function(jmolRenderer){ +}, "~O"); +Clazz_defineMethod(c$, "addRenderer", +function(tok){ +}, "~N"); +c$.getHermiteList = Clazz_defineMethod(c$, "getHermiteList", +function(tension, p0, p1, p2, p3, p4, list, index0, n, isPt){ +var nPoints = n + 1; +var fnPoints = n - 1; +var x1 = p1.x; +var y1 = p1.y; +var z1 = p1.z; +var x2 = p2.x; +var y2 = p2.y; +var z2 = p2.z; +var xT1 = ((x2 - p0.x) * tension) / 8; +var yT1 = ((y2 - p0.y) * tension) / 8; +var zT1 = ((z2 - p0.z) * tension) / 8; +var xT2 = ((p3.x - x1) * tension) / 8; +var yT2 = ((p3.y - y1) * tension) / 8; +var zT2 = ((p3.z - z1) * tension) / 8; +var xT3 = ((p4.x - x2) * tension) / 8; +var yT3 = ((p4.y - y2) * tension) / 8; +var zT3 = ((p4.z - z2) * tension) / 8; +list[index0] = p1; +for (var i = 0; i < nPoints; i++) { +var s = i / fnPoints; +if (i == nPoints - 1) { +x1 = x2; +y1 = y2; +z1 = z2; +x2 = p3.x; +y2 = p3.y; +z2 = p3.z; +xT1 = xT2; +yT1 = yT2; +zT1 = zT2; +xT2 = xT3; +yT2 = yT3; +zT2 = zT3; +s -= 1; +}var s2 = s * s; +var s3 = s2 * s; +var h1 = 2 * s3 - 3 * s2 + 1; +var h2 = -2 * s3 + 3 * s2; +var h3 = s3 - 2 * s2 + s; +var h4 = s3 - s2; +var x = (h1 * x1 + h2 * x2 + h3 * xT1 + h4 * xT2); +var y = (h1 * y1 + h2 * y2 + h3 * yT1 + h4 * yT2); +var z = (h1 * z1 + h2 * z2 + h3 * zT1 + h4 * zT2); +list[index0 + i] = (isPt ? JU.P3.new3(x, y, z) : JU.V3.new3(x, y, z)); +} +}, "~N,JU.T3,JU.T3,JU.T3,JU.T3,JU.T3,~A,~N,~N,~B"); +Clazz_defineMethod(c$, "setTextPosition", +function(y){ +this.textY = y; +}, "~N"); +Clazz_defineMethod(c$, "getTextPosition", +function(){ +return this.textY; +}); +Clazz_defineMethod(c$, "getTransformedVertexVectors", +function(){ +return this.transformedVectors; +}); +Clazz_overrideMethod(c$, "drawLinePixels", +function(sA, sB, z, zslab){ +return; +}, "JU.P3i,JU.P3i,~N,~N"); +c$.normixCount = JU.Normix.getNormixCount(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.JSInterface", "J.api.JmolAppletInterface", "$.JmolStatusListener"], "JU.GenericApplet", ["java.net.URL", "java.util.Hashtable", "JU.Lst", "$.PT", "$.SB", "J.awtjs2d.Platform", "J.c.CBK", "J.i18n.GT", "JU.Logger", "$.Parser", "JV.JC", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.codeBase = null; +this.documentBase = null; +this.isSigned = false; +this.language = null; +this.doTranslate = true; +this.haveDocumentAccess = false; +this.isStereoSlave = false; +this.mayScript = false; +this.htmlName = null; +this.fullName = null; +this.statusForm = null; +this.statusText = null; +this.statusTextarea = null; +this.gRight = null; +this.viewer = null; +this.b$ = null; +this.vwrOptions = null; +this.haveNotifiedError = false; +this.appletObject = null; +this.loading = false; +this.syncId = null; +this.outputBuffer = null; +this.htParams = null; +Clazz_instantialize(this, arguments);}, JU, "GenericApplet", null, [javajs.api.JSInterface, J.api.JmolAppletInterface, J.api.JmolStatusListener]); +Clazz_defineMethod(c$, "setStereoGraphics", +function(isStereo){ +{ +if (isStereo) +return vwr.apiPlatform.context; +}return null; +}, "~B"); +Clazz_overrideMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.viewer.processMouseEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +this.viewer.processKeyEvent(event); +}, "~O"); +Clazz_overrideMethod(c$, "setDisplay", +function(canvas){ +this.viewer.setDisplay(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +return this.viewer.setStatusDragDropped(mode, x, y, fileName, retType); +}, "~N,~N,~N,~S,~A"); +Clazz_overrideMethod(c$, "startHoverWatcher", +function(enable){ +this.viewer.startHoverWatcher(enable); +}, "~B"); +Clazz_overrideMethod(c$, "update", +function(){ +this.viewer.updateJS(); +}); +Clazz_overrideMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +this.viewer.openFileAsyncSpecial(fileName, flags); +}, "~S,~N"); +Clazz_overrideMethod(c$, "openFileAsyncSpecialType", +function(fileName, flags, type){ +this.viewer.openFileAsyncSpecialType(fileName, flags, type); +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +this.viewer.processTwoPointGesture(touches); +}, "~A"); +Clazz_overrideMethod(c$, "setScreenDimension", +function(width, height){ +this.viewer.setScreenDimension(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "resizeDisplay", +function(width, height){ +var jmol = J.awtjs2d.Platform.Jmol(); +jmol.resizeApplet(this.viewer.html5Applet, Clazz_newIntArray(-1, [width, height])); +}, "~N,~N"); +Clazz_defineMethod(c$, "init", +function(applet){ +this.b$ = new java.util.Hashtable(); +if (JU.GenericApplet.htRegistry == null) JU.GenericApplet.htRegistry = new java.util.Hashtable(); +this.appletObject = applet; +this.htmlName = JU.PT.split("" + this.getJmolParameter("name"), "_object")[0]; +this.syncId = this.getJmolParameter("syncId"); +this.fullName = this.htmlName + "__" + this.syncId + "__"; +System.out.println("Jmol JavaScript applet " + this.fullName + " initializing"); +var iLevel = ((this.getValue("logLevel", (this.getBooleanValue("debug", false) ? "5" : "4"))).charAt(0)).charCodeAt(0) - 48; +if (iLevel != 4) System.out.println("setting logLevel=" + iLevel + " -- To change, use script \"set logLevel [0-5]\""); +JU.Logger.setLogLevel(iLevel); +J.i18n.GT.ignoreApplicationBundle(); +this.initOptions(); +JU.GenericApplet.checkIn(this.fullName, this.appletObject); +this.initApplication(); +}, "~O"); +Clazz_defineMethod(c$, "initApplication", +function(){ +this.vwrOptions.put("applet", Boolean.TRUE); +if (this.getJmolParameter("statusListener") == null) this.vwrOptions.put("statusListener", this); +this.language = this.getJmolParameter("language"); +if (this.language != null) this.vwrOptions.put("language", this.language); +this.viewer = new JV.Viewer(this.vwrOptions); +this.viewer.pushHoldRepaint(); +var emulate = this.getValueLowerCase("emulate", "jmol"); +this.setStringProperty("defaults", emulate.equals("chime") ? "RasMol" : "Jmol"); +this.setStringProperty("backgroundColor", this.getValue("bgcolor", this.getValue("boxbgcolor", "black"))); +this.viewer.setBooleanProperty("frank", true); +this.loading = true; +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) { +var name = item.name(); +var o = this.getValue(name + "Callback", null); +if (o != null) { +if ((typeof(o)=='string')) { +this.setStringProperty(name + "Callback", o); +} else { +var def = null; +{ +def = "Info." + o.name; +}this.setStringProperty(name + "Callback", def); +this.setCallback(name, o); +}}} +this.loading = false; +if (this.language != null) System.out.print("requested language=" + this.language + "; "); +this.doTranslate = (!"none".equals(this.language) && this.getBooleanValue("doTranslate", true)); +this.language = J.i18n.GT.getLanguage(); +System.out.println("language=" + this.language); +if (this.b$.get(J.c.CBK.SCRIPT) == null && this.b$.get(J.c.CBK.ERROR) == null) if (this.b$.get(J.c.CBK.MESSAGE) != null || this.statusForm != null || this.statusText != null) { +if (this.doTranslate && (this.getValue("doTranslate", null) == null)) { +this.doTranslate = false; +JU.Logger.warn("Note -- Presence of message callback disables disable translation; to enable message translation use jmolSetTranslation(true) prior to jmolApplet()"); +}if (this.doTranslate) JU.Logger.warn("Note -- Automatic language translation may affect parsing of message callbacks messages; use scriptCallback or errorCallback to process errors"); +}if (!this.doTranslate) { +J.i18n.GT.setDoTranslate(false); +JU.Logger.warn("Note -- language translation disabled"); +}if (!this.getBooleanValue("popupMenu", true)) this.viewer.getProperty("DATA_API", "disablePopupMenu", null); +var menuFile = this.getJmolParameter("menuFile"); +if (menuFile != null) this.viewer.setMenu(menuFile, true); +var script = this.getValue("script", ""); +var loadParam = this.getValue("loadInline", null); +if (loadParam == null) { +if ((loadParam = this.getValue("load", null)) != null) script = "load \"" + loadParam + "\";" + script; +loadParam = null; +}this.viewer.popHoldRepaint("applet init"); +if (loadParam != null && this.viewer.loadInline(loadParam) != null) script = ""; +if (script.length > 0) this.scriptProcessor(script, null, 1); +this.viewer.notifyStatusReady(true); +}); +Clazz_overrideMethod(c$, "destroy", +function(){ +this.gRight = null; +this.viewer.notifyStatusReady(false); +this.viewer = null; +JU.GenericApplet.checkOut(this.fullName); +}); +Clazz_defineMethod(c$, "getBooleanValue", +function(propertyName, defaultValue){ +var value = this.getValue(propertyName, defaultValue ? "true" : ""); +return (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("on") || value.equalsIgnoreCase("yes")); +}, "~S,~B"); +Clazz_defineMethod(c$, "getValue", +function(propertyName, defaultValue){ +var s = this.getJmolParameter(propertyName); +System.out.println("Jmol getValue " + propertyName + " " + s); +return (s == null ? defaultValue : s); +}, "~S,~S"); +Clazz_defineMethod(c$, "getValueLowerCase", +function(paramName, defaultValue){ +var value = this.getValue(paramName, defaultValue); +if (value != null) { +value = value.trim().toLowerCase(); +if (value.length == 0) value = null; +}return value; +}, "~S,~S"); +Clazz_defineMethod(c$, "setStringProperty", +function(name, value){ +if (value == null) return; +JU.Logger.info(name + " = \"" + value + "\""); +this.viewer.setStringProperty(name, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "scriptProcessor", +function(script, statusParams, processType){ +if (script == null || script.length == 0) return ""; +switch (processType) { +case 0: +var err = this.viewer.scriptCheck(script); +return ((typeof(err)=='string') ? err : ""); +case 1: +if (statusParams != null) return this.viewer.scriptWaitStatus(script, statusParams).toString(); +return this.viewer.scriptWait(script); +case 2: +default: +return this.viewer.script(script); +} +}, "~S,~S,~N"); +Clazz_overrideMethod(c$, "register", +function(id, jsi){ +JU.GenericApplet.checkIn(id, jsi); +}, "~S,J.api.JmolSyncInterface"); +Clazz_overrideMethod(c$, "getJSpecViewProperty", +function(key){ +return null; +}, "~S"); +Clazz_defineMethod(c$, "syncScript", +function(script){ +this.viewer.syncScript(script, "~", 0); +}, "~S"); +Clazz_overrideMethod(c$, "handleEvent", +function(e){ +if (this.viewer == null) return false; +return this.viewer.processMouseEvent(e.id, e.x, e.y, e.modifiers, e.when); +}, "java.awt.Event"); +Clazz_overrideMethod(c$, "getAppletInfo", +function(){ +return J.i18n.GT.o(J.i18n.GT.$("Jmol Applet version {0} {1}.\n\nAn OpenScience project.\n\nSee http://www.jmol.org for more information"), Clazz_newArray(-1, [JV.JC.version, JV.JC.date])) + "\nhtmlName = " + JU.PT.esc(this.htmlName) + "\nsyncId = " + JU.PT.esc(this.syncId) + "\ndocumentBase = " + JU.PT.esc(this.documentBase) + "\ncodeBase = " + JU.PT.esc(this.codeBase); +}); +Clazz_overrideMethod(c$, "script", +function(script){ +this.scriptNoWait(script); +}, "~S"); +Clazz_overrideMethod(c$, "scriptCheck", +function(script){ +if (script == null || script.length == 0) return ""; +return this.scriptProcessor(script, null, 0); +}, "~S"); +Clazz_overrideMethod(c$, "scriptNoWait", +function(script){ +if (script == null || script.length == 0) return ""; +return this.scriptProcessor(script, null, 2); +}, "~S"); +Clazz_defineMethod(c$, "scriptWait", +function(script){ +return this.scriptWait(script, null); +}, "~S"); +Clazz_defineMethod(c$, "scriptWait", +function(script, statusParams){ +if (script == null || script.length == 0) return ""; +this.outputBuffer = null; +return this.scriptProcessor(script, statusParams, 1); +}, "~S,~S"); +Clazz_overrideMethod(c$, "scriptWaitOutput", +function(script){ +if (script == null || script.length == 0) return ""; +this.outputBuffer = new JU.SB(); +this.viewer.scriptWaitStatus(script, ""); +var str = (this.outputBuffer == null ? "" : this.outputBuffer.toString()); +this.outputBuffer = null; +return str; +}, "~S"); +Clazz_overrideMethod(c$, "getModelIndexFromId", +function(id){ +return this.viewer.getModelIndexFromId(id); +}, "~S"); +Clazz_defineMethod(c$, "getProperty", +function(infoType){ +return this.viewer.getProperty(null, infoType, ""); +}, "~S"); +Clazz_defineMethod(c$, "getProperty", +function(infoType, paramInfo){ +{ +paramInfo || (paramInfo = ""); +}return this.viewer.getProperty(null, infoType, paramInfo); +}, "~S,~S"); +Clazz_defineMethod(c$, "getPropertyAsString", +function(infoType){ +return this.viewer.getProperty("readable", infoType, "").toString(); +}, "~S"); +Clazz_defineMethod(c$, "getPropertyAsString", +function(infoType, paramInfo){ +{ +paramInfo || (paramInfo = ""); +}return this.viewer.getProperty("readable", infoType, paramInfo).toString(); +}, "~S,~S"); +Clazz_defineMethod(c$, "getPropertyAsJSON", +function(infoType){ +return this.viewer.getProperty("JSON", infoType, "").toString(); +}, "~S"); +Clazz_defineMethod(c$, "getPropertyAsJSON", +function(infoType, paramInfo){ +{ +paramInfo || (paramInfo = ""); +}return this.viewer.getProperty("JSON", infoType, paramInfo).toString(); +}, "~S,~S"); +Clazz_overrideMethod(c$, "loadInlineString", +function(strModel, script, isAppend){ +var errMsg = this.viewer.loadInlineAppend(strModel, isAppend); +if (errMsg == null) this.script(script); +return errMsg; +}, "~S,~S,~B"); +Clazz_overrideMethod(c$, "loadInlineArray", +function(strModels, script, isAppend){ +if (strModels == null || strModels.length == 0) return null; +var errMsg = this.viewer.loadInline(strModels, isAppend); +if (errMsg == null) this.script(script); +return errMsg; +}, "~A,~S,~B"); +Clazz_overrideMethod(c$, "loadDOMNode", +function(DOMNode){ +return this.viewer.openDOM(DOMNode); +}, "~O"); +Clazz_defineMethod(c$, "loadInline", +function(strModel){ +return this.loadInlineString(strModel, "", false); +}, "~S"); +Clazz_defineMethod(c$, "loadInline", +function(strModel, script){ +return this.loadInlineString(strModel, script, false); +}, "~S,~S"); +Clazz_defineMethod(c$, "loadInline", +function(strModels){ +return this.loadInlineArray(strModels, "", false); +}, "~A"); +Clazz_defineMethod(c$, "loadInline", +function(strModels, script){ +return this.loadInlineArray(strModels, script, false); +}, "~A,~S"); +Clazz_defineMethod(c$, "output", +function(s){ +if (this.outputBuffer != null && s != null) this.outputBuffer.append(s).appendC('\n'); +}, "~S"); +Clazz_overrideMethod(c$, "setCallback", +function(name, callbackObject){ +this.viewer.sm.setCallbackFunction(name, callbackObject); +}, "~S,~O"); +Clazz_overrideMethod(c$, "setCallbackFunction", +function(callbackName, callbackObject){ +if (callbackName.equalsIgnoreCase("language")) { +this.consoleMessage(""); +this.consoleMessage(null); +return; +}var callback = J.c.CBK.getCallback(callbackName); +if (callback != null && (this.loading || callback !== J.c.CBK.EVAL)) { +if (callbackObject == null) this.b$.remove(callback); + else this.b$.put(callback, callbackObject); +return; +}this.consoleMessage("Available callbacks include: " + J.c.CBK.getNameList().$replace(';', ' ').trim()); +}, "~S,~S"); +Clazz_defineMethod(c$, "consoleMessage", +function(message){ +this.notifyCallback(J.c.CBK.ECHO, Clazz_newArray(-1, ["", message])); +}, "~S"); +Clazz_overrideMethod(c$, "notifyEnabled", +function(type){ +switch (type) { +case J.c.CBK.SYNC: +if (!JU.GenericApplet.isJS) return false; +case J.c.CBK.ANIMFRAME: +case J.c.CBK.DRAGDROP: +case J.c.CBK.ECHO: +case J.c.CBK.ERROR: +case J.c.CBK.EVAL: +case J.c.CBK.IMAGE: +case J.c.CBK.LOADSTRUCT: +case J.c.CBK.MEASURE: +case J.c.CBK.MESSAGE: +case J.c.CBK.PICK: +case J.c.CBK.SCRIPT: +return true; +case J.c.CBK.AUDIO: +case J.c.CBK.APPLETREADY: +case J.c.CBK.ATOMMOVED: +case J.c.CBK.CLICK: +case J.c.CBK.HOVER: +case J.c.CBK.MINIMIZATION: +case J.c.CBK.MODELKIT: +case J.c.CBK.RESIZE: +case J.c.CBK.SELECT: +case J.c.CBK.SERVICE: +case J.c.CBK.STRUCTUREMODIFIED: +break; +} +return (this.b$.get(type) != null); +}, "J.c.CBK"); +Clazz_defineMethod(c$, "notifyCallback", +function(type, data){ +var callback = (type == null ? null : this.b$.get(type)); +var doCallback = (type == null || callback != null && (data == null || data[0] == null)); +var toConsole = false; +if (data != null) data[0] = this.htmlName; +var strInfo = (data == null || data[1] == null ? null : data[1].toString()); +if (type != null) switch (type) { +case J.c.CBK.APPLETREADY: +data[3] = this.appletObject; +break; +case J.c.CBK.AUDIO: +case J.c.CBK.ERROR: +case J.c.CBK.EVAL: +case J.c.CBK.HOVER: +case J.c.CBK.IMAGE: +case J.c.CBK.MINIMIZATION: +case J.c.CBK.SERVICE: +case J.c.CBK.RESIZE: +case J.c.CBK.DRAGDROP: +case J.c.CBK.ATOMMOVED: +case J.c.CBK.SELECT: +case J.c.CBK.MODELKIT: +case J.c.CBK.STRUCTUREMODIFIED: +break; +case J.c.CBK.CLICK: +if ("alert".equals(callback)) strInfo = "x=" + data[1] + " y=" + data[2] + " action=" + data[3] + " clickCount=" + data[4]; +break; +case J.c.CBK.ANIMFRAME: +var iData = data[1]; +var frameNo = iData[0]; +var fileNo = iData[1]; +var modelNo = iData[2]; +var firstNo = iData[3]; +var lastNo = iData[4]; +var isAnimationRunning = (frameNo <= -2); +var animationDirection = (firstNo < 0 ? -1 : 1); +var currentDirection = (lastNo < 0 ? -1 : 1); +if (doCallback) { +data = Clazz_newArray(-1, [this.htmlName, Integer.$valueOf(Math.max(frameNo, -2 - frameNo)), Integer.$valueOf(fileNo), Integer.$valueOf(modelNo), Integer.$valueOf(Math.abs(firstNo)), Integer.$valueOf(Math.abs(lastNo)), Integer.$valueOf(isAnimationRunning ? 1 : 0), Integer.$valueOf(animationDirection), Integer.$valueOf(currentDirection), data[2], data[3]]); +}break; +case J.c.CBK.ECHO: +var isPrivate = (data.length == 2); +var isScriptQueued = (isPrivate || (data[2]).intValue() == 1); +if (!doCallback) { +if (isScriptQueued) toConsole = true; +doCallback = (!isPrivate && (callback = this.b$.get((type = J.c.CBK.MESSAGE))) != null); +}if (!toConsole) this.output(strInfo); +break; +case J.c.CBK.LOADSTRUCT: +var errorMsg = data[4]; +if (errorMsg != null) { +errorMsg = (errorMsg.indexOf("NOTE:") >= 0 ? "" : J.i18n.GT.$("File Error:")) + errorMsg; +this.doShowStatus(errorMsg); +this.notifyCallback(J.c.CBK.MESSAGE, Clazz_newArray(-1, ["", errorMsg])); +return; +}break; +case J.c.CBK.MEASURE: +if (!doCallback) doCallback = ((callback = this.b$.get((type = J.c.CBK.MESSAGE))) != null); +var status = data[3]; +if (status.indexOf("Picked") >= 0 || status.indexOf("Sequence") >= 0) { +this.doShowStatus(strInfo); +toConsole = true; +} else if (status.indexOf("Completed") >= 0) { +strInfo = status + ": " + strInfo; +toConsole = true; +}break; +case J.c.CBK.MESSAGE: +toConsole = !doCallback; +doCallback = new Boolean (doCallback & (strInfo != null)).valueOf(); +if (!toConsole) this.output(strInfo); +break; +case J.c.CBK.PICK: +this.doShowStatus(strInfo); +toConsole = true; +break; +case J.c.CBK.SCRIPT: +var msWalltime = (data[3]).intValue(); +if (msWalltime > 0) { +} else if (!doCallback) { +doCallback = ((callback = this.b$.get((type = J.c.CBK.MESSAGE))) != null); +}this.output(strInfo); +this.doShowStatus(strInfo); +break; +case J.c.CBK.SYNC: +this.sendScript(strInfo, data[2], true, doCallback); +return; +} +if (toConsole) { +var appConsole = this.viewer.getProperty("DATA_API", "getAppConsole", null); +if (appConsole != null) { +appConsole.notifyCallback(type, data); +this.output(strInfo); +}}if (!doCallback || !this.mayScript) return; +try { +this.doSendCallback(type, callback, data, strInfo); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (!this.haveNotifiedError) if (JU.Logger.debugging) { +JU.Logger.debug(type.name() + "Callback call error to " + callback + ": " + e); +}this.haveNotifiedError = true; +} else { +throw e; +} +} +}, "J.c.CBK,~A"); +Clazz_defineMethod(c$, "sendScript", +function(script, appletName, isSync, doCallback){ +if (!JU.GenericApplet.isJS) return ""; +if (doCallback) { +script = this.notifySync(script, appletName); +if (script == null || script.length == 0 || script.equals("0")) return ""; +}var apps = new JU.Lst(); +JU.GenericApplet.findApplets(appletName, this.syncId, this.fullName, apps); +var nApplets = apps.size(); +if (nApplets == 0) { +if (!doCallback && !appletName.equals("*")) JU.Logger.error(this.fullName + " couldn't find applet " + appletName); +return ""; +}var sb = (isSync ? null : new JU.SB()); +var getGraphics = (isSync && script.equals("GET_GRAPHICS")); +var setNoGraphics = (isSync && script.equals("SET_GRAPHICS_OFF")); +if (getGraphics) this.viewer.setStereo(false, (this.gRight = null)); +for (var i = 0; i < nApplets; i++) { +var theApplet = apps.get(i); +var app = JU.GenericApplet.htRegistry.get(theApplet); +var isScriptable = true; +if (JU.Logger.debugging) JU.Logger.debug(this.fullName + " sending to " + theApplet + ": " + script); +try { +if (isScriptable && (getGraphics || setNoGraphics)) { +this.viewer.setStereo(this.isStereoSlave = getGraphics, this.gRight = (app).setStereoGraphics(getGraphics)); +return ""; +}if (isSync) app.syncScript(script); + else if (isScriptable) sb.append((app).scriptWait(script, "output")).append("\n"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +var msg = this.htmlName + " couldn't send to " + theApplet + ": " + script + ": " + e; +JU.Logger.error(msg); +if (!isSync) sb.append(msg); +} else { +throw e; +} +} +} +return (isSync ? "" : sb.toString()); +}, "~S,~S,~B,~B"); +Clazz_defineMethod(c$, "notifySync", +function(info, appletName){ +var syncCallback = this.b$.get(J.c.CBK.SYNC); +if (!this.mayScript || syncCallback == null) return info; +try { +return this.doSendCallback(J.c.CBK.SYNC, syncCallback, Clazz_newArray(-1, [this.fullName, info, appletName]), null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (!this.haveNotifiedError) if (JU.Logger.debugging) { +JU.Logger.debug("syncCallback call error to " + syncCallback + ": " + e); +}this.haveNotifiedError = true; +} else { +throw e; +} +} +return info; +}, "~S,~S"); +Clazz_overrideMethod(c$, "eval", +function(strEval){ +var pt = strEval.indexOf("\1"); +if (pt >= 0) return this.sendScript(strEval.substring(pt + 1), strEval.substring(0, pt), false, false); +if (!this.haveDocumentAccess) return "NO EVAL ALLOWED"; +if (this.b$.get(J.c.CBK.EVAL) != null) { +this.notifyCallback(J.c.CBK.EVAL, Clazz_newArray(-1, [null, strEval])); +return ""; +}return this.doEval(strEval); +}, "~S"); +Clazz_overrideMethod(c$, "createImage", +function(fileName, type, text_or_bytes, quality){ +return null; +}, "~S,~S,~O,~N"); +Clazz_overrideMethod(c$, "getRegistryInfo", +function(){ +JU.GenericApplet.checkIn(null, null); +return JU.GenericApplet.htRegistry; +}); +Clazz_overrideMethod(c$, "showUrl", +function(urlString){ +if (JU.Logger.debugging) JU.Logger.debug("showUrl(" + urlString + ")"); +if (urlString != null && urlString.length > 0) try { +this.doShowDocument( new java.net.URL(Clazz_castNullAs("java.net.URL"), urlString, null)); +} catch (mue) { +if (Clazz_exceptionOf(mue,"java.net.MalformedURLException")){ +this.consoleMessage("Malformed URL:" + urlString); +} else { +throw mue; +} +} +}, "~S"); +Clazz_overrideMethod(c$, "resizeInnerPanel", +function(data){ +var dims = Clazz_newFloatArray (2, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, dims); +this.resizeDisplay(Clazz_floatToInt(dims[0]), Clazz_floatToInt(dims[1])); +return Clazz_newIntArray(-1, [Clazz_floatToInt(dims[0]), Clazz_floatToInt(dims[1])]); +}, "~S"); +c$.checkIn = Clazz_defineMethod(c$, "checkIn", +function(name, applet){ +if (name != null) { +JU.Logger.info("AppletRegistry.checkIn(" + name + ")"); +JU.GenericApplet.htRegistry.put(name, applet); +}if (JU.Logger.debugging) { +for (var entry, $entry = JU.GenericApplet.htRegistry.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var theApplet = entry.getKey(); +JU.Logger.debug(theApplet + " " + entry.getValue()); +} +}}, "~S,~O"); +c$.checkOut = Clazz_defineMethod(c$, "checkOut", +function(name){ +JU.GenericApplet.htRegistry.remove(name); +}, "~S"); +c$.findApplets = Clazz_defineMethod(c$, "findApplets", +function(appletName, mySyncId, excludeName, apps){ +if (appletName != null && appletName.indexOf(",") >= 0) { +var names = JU.PT.split(appletName, ","); +for (var i = 0; i < names.length; i++) JU.GenericApplet.findApplets(names[i], mySyncId, excludeName, apps); + +return; +}var ext = "__" + mySyncId + "__"; +if (appletName == null || appletName.equals("*") || appletName.equals(">")) { +for (var appletName2, $appletName2 = JU.GenericApplet.htRegistry.keySet().iterator (); $appletName2.hasNext()&& ((appletName2 = $appletName2.next ()) || true);) { +if (!appletName2.equals(excludeName) && appletName2.indexOf(ext) > 0) { +apps.addLast(appletName2); +}} +return; +}if (excludeName.indexOf("_object") >= 0 && appletName.indexOf("_object") < 0) appletName += "_object"; +if (appletName.indexOf("__") < 0) appletName += ext; +if (!JU.GenericApplet.htRegistry.containsKey(appletName)) appletName = "jmolApplet" + appletName; +if (!appletName.equals(excludeName) && JU.GenericApplet.htRegistry.containsKey(appletName)) { +apps.addLast(appletName); +}}, "~S,~S,~S,JU.Lst"); +Clazz_overrideMethod(c$, "notifyAudioEnded", +function(htParams){ +this.viewer.sm.notifyAudioStatus(htParams); +}, "~O"); +Clazz_defineMethod(c$, "setJSOptions", +function(vwrOptions){ +this.htParams = new java.util.Hashtable(); +if (vwrOptions == null) vwrOptions = new java.util.Hashtable(); +this.vwrOptions = vwrOptions; +for (var entry, $entry = vwrOptions.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.htParams.put(entry.getKey().toLowerCase(), entry.getValue()); + +this.documentBase = "" + vwrOptions.get("documentBase"); +this.codeBase = "" + vwrOptions.get("codePath"); +}, "java.util.Map"); +Clazz_defineMethod(c$, "initOptions", +function(){ +this.vwrOptions.remove("debug"); +this.vwrOptions.put("fullName", this.fullName); +this.haveDocumentAccess = "true".equalsIgnoreCase("" + this.getValue("allowjavascript", "true")); +this.mayScript = true; +}); +Clazz_defineMethod(c$, "getJmolParameter", +function(paramName){ +var o = this.htParams.get(paramName.toLowerCase()); +return (o == null ? null : "" + o); +}, "~S"); +Clazz_overrideMethod(c$, "functionXY", +function(functionName, nX, nY){ +var fxy = Clazz_newFloatArray (Math.abs(nX), Math.abs(nY), 0); +if (!this.mayScript || !this.haveDocumentAccess || nX == 0 || nY == 0) return fxy; +try { +if (nX > 0 && nY > 0) { +for (var i = 0; i < nX; i++) for (var j = 0; j < nY; j++) { +{ +fxy[i][j] = window.eval(functionName)(this.htmlName, i, j); +}} + +} else if (nY > 0) { +var data; +{ +data = window.eval(functionName)(this.htmlName, nX, nY); +}nX = Math.abs(nX); +var fdata = Clazz_newFloatArray (nX * nY, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, fdata); +for (var i = 0, ipt = 0; i < nX; i++) { +for (var j = 0; j < nY; j++, ipt++) { +fxy[i][j] = fdata[ipt]; +} +} +} else { +{ +data = window.eval(functionName)(this.htmlName, nX, nY, fxy); +}}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Exception " + e + " with nX, nY: " + nX + " " + nY); +} else { +throw e; +} +} +return fxy; +}, "~S,~N,~N"); +Clazz_overrideMethod(c$, "functionXYZ", +function(functionName, nX, nY, nZ){ +var fxyz = Clazz_newFloatArray (Math.abs(nX), Math.abs(nY), Math.abs(nZ), 0); +if (!this.mayScript || !this.haveDocumentAccess || nX == 0 || nY == 0 || nZ == 0) return fxyz; +try { +{ +window.eval(functionName)(this.htmlName, nX, nY, nZ, fxyz); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Exception " + e + " for " + functionName + " with nX, nY, nZ: " + nX + " " + nY + " " + nZ); +} else { +throw e; +} +} +return fxyz; +}, "~S,~N,~N,~N"); +Clazz_defineMethod(c$, "doShowDocument", +function(url){ +var surl = JU.PT.split(url.toString(), "?POST?"); +if (surl.length == 1) { +{ +window.open(surl[0]); +}return; +}var f = "
"; +f += ""; +f += ""; +var fields = surl[1].$plit("&"); +for (var i = 0; i < fields.length; i++) { +var field = fields[i]; +var pt = field.indexOf("="); +var name = field.substring(0, pt); +var value = field.substring(pt); +if (value.indexOf("\n") >= 0) { +f += ""; +} else { +f += ""; +}} +f += "
"; +{ +var w=window.open("");w.document.write(f);w.document.getElementById("f").submit(); +}}, "java.net.URL"); +Clazz_defineMethod(c$, "doSendCallback", +function(type, callback, data, strInfo){ +var isString = ((typeof(callback)=='string')); +if (callback == null || isString && (callback).length == 0) { +} else { +if (isString && "alert".equals(callback)) { +{ +alert(strInfo); +}return ""; +}var tokens = (isString ? JU.PT.split((callback), ".") : null); +try { +{ +var o; +if (isString) { +o = window[tokens[0]]; +for (var i = 1; i < tokens.length; i++) +o = o[tokens[i]]; +} else { +o = callback; +} +for (var i = 0; i < data.length; i++) { +data[i] && data[i].booleanValue && (data[i] = data[i].booleanValue()); +data[i] instanceof Number && (data[i] = +data[i]); +} +return o.apply(this,data) +}} catch (e) { +System.out.println("callback " + type + " failed " + e); +} +}return ""; +}, "J.c.CBK,~O,~A,~S"); +Clazz_defineMethod(c$, "doEval", +function(strEval){ +try { +{ +return window.eval(strEval); +}} catch (e) { +JU.Logger.error("# error evaluating " + strEval + ":" + e.toString()); +} +return ""; +}, "~S"); +Clazz_defineMethod(c$, "doShowStatus", +function(message){ +try { +System.out.println(message); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "getGLmolView", +function(){ +return this.viewer.getGLmolView(); +}); +Clazz_defineMethod(c$, "openFile", +function(fileName){ +return this.viewer.openFile(fileName); +}, "~S"); +Clazz_overrideMethod(c$, "cacheFileByName", +function(fileName, isAdd){ +return this.viewer.cacheFileByName(fileName, isAdd); +}, "~S,~B"); +Clazz_overrideMethod(c$, "cachePut", +function(key, data){ +this.viewer.cachePut(key, data); +}, "~S,~O"); +Clazz_overrideMethod(c$, "getFullName", +function(){ +return this.fullName; +}); +c$.htRegistry = null; +c$.isJS = false; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.AU"], "JU.Geodesic", ["java.util.Hashtable", "JU.V3"], function(){ +var c$ = Clazz_declareType(JU, "Geodesic", null); +c$.getNeighborVertexesArrays = Clazz_defineMethod(c$, "getNeighborVertexesArrays", +function(){ +if (JU.Geodesic.vertexCounts == null) JU.Geodesic.createGeodesic(3); +return JU.Geodesic.neighborVertexesArrays; +}); +c$.getVertexCount = Clazz_defineMethod(c$, "getVertexCount", +function(level){ +if (JU.Geodesic.vertexCounts == null) JU.Geodesic.createGeodesic(3); +return JU.Geodesic.vertexCounts[level]; +}, "~N"); +c$.getVertexVectors = Clazz_defineMethod(c$, "getVertexVectors", +function(){ +if (JU.Geodesic.vertexCounts == null) JU.Geodesic.createGeodesic(3); +return JU.Geodesic.vertexVectors; +}); +c$.getVertexVector = Clazz_defineMethod(c$, "getVertexVector", +function(i){ +return JU.Geodesic.vertexVectors[i]; +}, "~N"); +c$.getFaceVertexes = Clazz_defineMethod(c$, "getFaceVertexes", +function(level){ +return JU.Geodesic.faceVertexesArrays[level]; +}, "~N"); +c$.createGeodesic = Clazz_defineMethod(c$, "createGeodesic", +function(lvl){ +if (lvl <= JU.Geodesic.currentLevel) return; +JU.Geodesic.currentLevel = lvl; +var v = Clazz_newShortArray (lvl + 1, 0); +JU.Geodesic.neighborVertexesArrays = JU.AU.newShort2(lvl + 1); +JU.Geodesic.faceVertexesArrays = JU.AU.newShort2(lvl + 1); +JU.Geodesic.vertexVectors = new Array(12); +JU.Geodesic.vertexVectors[0] = JU.V3.new3(0, 0, JU.Geodesic.halfRoot5); +for (var i = 0; i < 5; ++i) { +JU.Geodesic.vertexVectors[i + 1] = JU.V3.new3(Math.cos(i * 1.2566370614359172), Math.sin(i * 1.2566370614359172), 0.5); +JU.Geodesic.vertexVectors[i + 6] = JU.V3.new3(Math.cos(i * 1.2566370614359172 + 0.6283185307179586), Math.sin(i * 1.2566370614359172 + 0.6283185307179586), -0.5); +} +JU.Geodesic.vertexVectors[11] = JU.V3.new3(0, 0, -JU.Geodesic.halfRoot5); +for (var i = 12; --i >= 0; ) JU.Geodesic.vertexVectors[i].normalize(); + +JU.Geodesic.faceVertexesArrays[0] = JU.Geodesic.faceVertexesIcosahedron; +JU.Geodesic.neighborVertexesArrays[0] = JU.Geodesic.neighborVertexesIcosahedron; +v[0] = 12; +for (var i = 0; i < lvl; ++i) JU.Geodesic.quadruple(i, v); + +JU.Geodesic.vertexCounts = v; +}, "~N"); +c$.quadruple = Clazz_defineMethod(c$, "quadruple", +function(level, counts){ +JU.Geodesic.htVertex = new java.util.Hashtable(); +var oldVertexCount = JU.Geodesic.vertexVectors.length; +var oldFaceVertexes = JU.Geodesic.faceVertexesArrays[level]; +var oldFaceVertexesLength = oldFaceVertexes.length; +var oldFaceCount = Clazz_doubleToInt(oldFaceVertexesLength / 3); +var oldEdgesCount = oldVertexCount + oldFaceCount - 2; +var newVertexCount = oldVertexCount + oldEdgesCount; +var newFaceCount = 4 * oldFaceCount; +JU.Geodesic.vertexVectors = JU.AU.arrayCopyObject(JU.Geodesic.vertexVectors, newVertexCount); +var newFacesVertexes = Clazz_newShortArray (3 * newFaceCount, 0); +JU.Geodesic.faceVertexesArrays[level + 1] = newFacesVertexes; +var neighborVertexes = Clazz_newShortArray (6 * newVertexCount, 0); +JU.Geodesic.neighborVertexesArrays[level + 1] = neighborVertexes; +for (var i = neighborVertexes.length; --i >= 0; ) neighborVertexes[i] = -1; + +counts[level + 1] = newVertexCount; +JU.Geodesic.vertexNext = oldVertexCount; +var iFaceNew = 0; +for (var i = 0; i < oldFaceVertexesLength; ) { +var iA = oldFaceVertexes[i++]; +var iB = oldFaceVertexes[i++]; +var iC = oldFaceVertexes[i++]; +var iAB = JU.Geodesic.getVertex(iA, iB); +var iBC = JU.Geodesic.getVertex(iB, iC); +var iCA = JU.Geodesic.getVertex(iC, iA); +newFacesVertexes[iFaceNew++] = iA; +newFacesVertexes[iFaceNew++] = iAB; +newFacesVertexes[iFaceNew++] = iCA; +newFacesVertexes[iFaceNew++] = iB; +newFacesVertexes[iFaceNew++] = iBC; +newFacesVertexes[iFaceNew++] = iAB; +newFacesVertexes[iFaceNew++] = iC; +newFacesVertexes[iFaceNew++] = iCA; +newFacesVertexes[iFaceNew++] = iBC; +newFacesVertexes[iFaceNew++] = iCA; +newFacesVertexes[iFaceNew++] = iAB; +newFacesVertexes[iFaceNew++] = iBC; +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iAB, iA); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iAB, iCA); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iAB, iBC); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iAB, iB); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iBC, iB); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iBC, iCA); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iBC, iC); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iCA, iC); +JU.Geodesic.addNeighboringVertexes(neighborVertexes, iCA, iA); +} +if (true) { +var vertexCount = JU.Geodesic.vertexVectors.length; +if (iFaceNew != newFacesVertexes.length) throw new NullPointerException(); +if (JU.Geodesic.vertexNext != newVertexCount) throw new NullPointerException(); +for (var i = 0; i < 12; ++i) { +for (var j = 0; j < 5; ++j) { +var neighbor = neighborVertexes[i * 6 + j]; +if (neighbor < 0) throw new NullPointerException(); +if (neighbor >= vertexCount) throw new NullPointerException(); +if (neighborVertexes[i * 6 + 5] != -1) throw new NullPointerException(); +} +} +for (var i = 72; i < neighborVertexes.length; ++i) { +var neighbor = neighborVertexes[i]; +if (neighbor < 0) throw new NullPointerException(); +if (neighbor >= vertexCount) throw new NullPointerException(); +} +for (var i = 0; i < newVertexCount; ++i) { +var neighborCount = 0; +for (var j = neighborVertexes.length; --j >= 0; ) if (neighborVertexes[j] == i) ++neighborCount; + +if ((i < 12 && neighborCount != 5) || (i >= 12 && neighborCount != 6)) throw new NullPointerException(); +var faceCount = 0; +for (var j = newFacesVertexes.length; --j >= 0; ) if (newFacesVertexes[j] == i) ++faceCount; + +if ((i < 12 && faceCount != 5) || (i >= 12 && faceCount != 6)) throw new NullPointerException(); +} +}JU.Geodesic.htVertex = null; +}, "~N,~A"); +c$.addNeighboringVertexes = Clazz_defineMethod(c$, "addNeighboringVertexes", +function(neighborVertexes, v1, v2){ +for (var i = v1 * 6, iMax = i + 6; i < iMax; ++i) { +if (neighborVertexes[i] == v2) return; +if (neighborVertexes[i] < 0) { +neighborVertexes[i] = v2; +for (var j = v2 * 6, jMax = j + 6; j < jMax; ++j) { +if (neighborVertexes[j] == v1) return; +if (neighborVertexes[j] < 0) { +neighborVertexes[j] = v1; +return; +}} +}} +throw new NullPointerException(); +}, "~A,~N,~N"); +c$.getVertex = Clazz_defineMethod(c$, "getVertex", +function(v1, v2){ +if (v1 > v2) { +var t = v1; +v1 = v2; +v2 = t; +}var hashKey = Integer.$valueOf((v1 << 16) + v2); +var iv = JU.Geodesic.htVertex.get(hashKey); +if (iv != null) { +return iv.shortValue(); +}var newVertexVector = JU.Geodesic.vertexVectors[JU.Geodesic.vertexNext] = new JU.V3(); +newVertexVector.add2(JU.Geodesic.vertexVectors[v1], JU.Geodesic.vertexVectors[v2]); +newVertexVector.normalize(); +JU.Geodesic.htVertex.put(hashKey, Short.$valueOf(JU.Geodesic.vertexNext)); +return JU.Geodesic.vertexNext++; +}, "~N,~N"); +c$.halfRoot5 = 0.5 * Math.sqrt(5); +c$.faceVertexesIcosahedron = Clazz_newShortArray(-1, [0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5, 0, 5, 1, 1, 6, 2, 2, 7, 3, 3, 8, 4, 4, 9, 5, 5, 10, 1, 6, 1, 10, 7, 2, 6, 8, 3, 7, 9, 4, 8, 10, 5, 9, 11, 6, 10, 11, 7, 6, 11, 8, 7, 11, 9, 8, 11, 10, 9]); +c$.neighborVertexesIcosahedron = Clazz_newShortArray(-1, [1, 2, 3, 4, 5, -1, 0, 5, 10, 6, 2, -1, 0, 1, 6, 7, 3, -1, 0, 2, 7, 8, 4, -1, 0, 3, 8, 9, 5, -1, 0, 4, 9, 10, 1, -1, 1, 10, 11, 7, 2, -1, 2, 6, 11, 8, 3, -1, 3, 7, 11, 9, 4, -1, 4, 8, 11, 10, 5, -1, 5, 9, 11, 6, 1, -1, 6, 7, 8, 9, 10, -1]); +c$.vertexCounts = null; +c$.vertexVectors = null; +c$.faceVertexesArrays = null; +c$.neighborVertexesArrays = null; +c$.currentLevel = 0; +c$.vertexNext = 0; +c$.htVertex = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.entryCount = 0; +this.entries = null; +Clazz_instantialize(this, arguments);}, JU, "Int2IntHash", null); +Clazz_makeConstructor(c$, +function(initialCapacity){ +this.entries = new Array(initialCapacity); +}, "~N"); +Clazz_defineMethod(c$, "get", +function(key){ +var entries = this.entries; +var hash = (key & 0x7FFFFFFF) % entries.length; +for (var e = entries[hash]; e != null; e = e.next) if (e.key == key) return e.value; + +return -2147483648; +}, "~N"); +Clazz_defineMethod(c$, "put", +function(key, value){ +var entries = this.entries; +var n = entries.length; +var hash = (key & 0x7FFFFFFF) % n; +for (var e = entries[hash]; e != null; e = e.next) if (e.key == key) { +e.value = value; +return; +} +if (this.entryCount > n) { +var oldSize = n; +n += n + 1; +var newEntries = new Array(n); +for (var i = oldSize; --i >= 0; ) { +for (var e = entries[i]; e != null; ) { +var t = e; +e = e.next; +hash = (t.key & 0x7FFFFFFF) % n; +t.next = newEntries[hash]; +newEntries[hash] = t; +} +} +entries = this.entries = newEntries; +hash = (key & 0x7FFFFFFF) % n; +}entries[hash] = new JU.Int2IntHashEntry(key, value, entries[hash]); +++this.entryCount; +}, "~N,~N"); +var c$ = Clazz_decorateAsClass(function(){ +this.key = 0; +this.value = 0; +this.next = null; +Clazz_instantialize(this, arguments);}, JU, "Int2IntHashEntry", null); +Clazz_makeConstructor(c$, +function(key, value, next){ +this.key = key; +this.value = value; +this.next = next; +}, "~N,~N,JU.Int2IntHashEntry"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.JSJSONParser", ["java.util.Hashtable", "JU.JSONException", "$.Lst", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.str = null; +this.index = 0; +this.len = 0; +this.asHashTable = false; +Clazz_instantialize(this, arguments);}, JU, "JSJSONParser", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "parseMap", +function(str, asHashTable){ +this.index = 0; +this.asHashTable = asHashTable; +this.str = str; +this.len = str.length; +if (this.getChar() != '{') return null; +this.returnChar(); +return this.getValue(false); +}, "~S,~B"); +Clazz_defineMethod(c$, "parse", +function(str, asHashTable){ +this.index = 0; +this.asHashTable = asHashTable; +this.str = str; +this.len = str.length; +return this.getValue(false); +}, "~S,~B"); +Clazz_defineMethod(c$, "next", +function(){ +return (this.index < this.len ? this.str.charAt(this.index++) : '\0'); +}); +Clazz_defineMethod(c$, "returnChar", +function(){ +this.index--; +}); +Clazz_defineMethod(c$, "getChar", +function(){ +for (; ; ) { +var c = this.next(); +if (c.charCodeAt(0) == 0 || c > ' ') { +return c; +}} +}); +Clazz_defineMethod(c$, "getValue", +function(isKey){ +var i = this.index; +var c = this.getChar(); +switch ((c).charCodeAt(0)) { +case 0: +return null; +case 34: +case 39: +return this.getString(c); +case 123: +if (!isKey) return this.getObject(); +c = String.fromCharCode( 0); +break; +case 91: +if (!isKey) return this.getArray(); +c = String.fromCharCode( 0); +break; +default: +this.returnChar(); +while (c >= ' ' && "[,]{:}'\"".indexOf(c) < 0) c = this.next(); + +this.returnChar(); +if (isKey && c != ':') c = String.fromCharCode( 0); +break; +} +if (isKey && c.charCodeAt(0) == 0) throw new JU.JSONException("invalid key"); +var string = this.str.substring(i, this.index).trim(); +if (!isKey) { +if (string.equals("true")) { +return Boolean.TRUE; +}if (string.equals("false")) { +return Boolean.FALSE; +}if (string.equals("null")) { +return (this.asHashTable ? string : null); +}}c = string.charAt(0); +if (c >= '0' && c <= '9' || c == '-') try { +if (string.indexOf('.') < 0 && string.indexOf('e') < 0 && string.indexOf('E') < 0) return new Integer(string); +var d = Float.$valueOf(string); +if (!d.isInfinite() && !d.isNaN()) return d; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +System.out.println("JSON parser cannot parse " + string); +throw new JU.JSONException("invalid value"); +}, "~B"); +Clazz_defineMethod(c$, "getString", +function(quote){ +var c; +var sb = null; +var i0 = this.index; +for (; ; ) { +var i1 = this.index; +switch ((c = this.next()).charCodeAt(0)) { +case 0: +case 10: +case 13: +throw this.syntaxError("Unterminated string"); +case 92: +switch ((c = this.next()).charCodeAt(0)) { +case 34: +case 39: +case 92: +case 47: +break; +case 98: +c = '\b'; +break; +case 116: +c = '\t'; +break; +case 110: +c = '\n'; +break; +case 102: +c = '\f'; +break; +case 114: +c = '\r'; +break; +case 117: +var i = this.index; +this.index += 4; +try { +c = String.fromCharCode(Integer.parseInt(this.str.substring(i, this.index), 16)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw this.syntaxError("Substring bounds error"); +} else { +throw e; +} +} +break; +default: +throw this.syntaxError("Illegal escape."); +} +break; +default: +if (c == quote) return (sb == null ? this.str.substring(i0, i1) : sb.toString()); +break; +} +if (this.index > i1 + 1) { +if (sb == null) { +sb = new JU.SB(); +sb.append(this.str.substring(i0, i1)); +}}if (sb != null) sb.appendC(c); +} +}, "~S"); +Clazz_defineMethod(c$, "getObject", +function(){ +var map = (this.asHashTable ? new java.util.Hashtable() : new java.util.HashMap()); +var key = null; +switch ((this.getChar()).charCodeAt(0)) { +case 125: +return map; +case 0: +throw new JU.JSONException("invalid object"); +} +this.returnChar(); +var isKey = false; +for (; ; ) { +if ((isKey = !isKey) == true) key = this.getValue(true).toString(); + else map.put(key, this.getValue(false)); +switch ((this.getChar()).charCodeAt(0)) { +case 125: +return map; +case 58: +if (isKey) continue; +isKey = true; +case 44: +if (!isKey) continue; +default: +throw this.syntaxError("Expected ',' or ':' or '}'"); +} +} +}); +Clazz_defineMethod(c$, "getArray", +function(){ +var l = new JU.Lst(); +switch ((this.getChar()).charCodeAt(0)) { +case 93: +return l; +case 0: +throw new JU.JSONException("invalid array"); +} +this.returnChar(); +var isNull = false; +for (; ; ) { +if (isNull) { +l.addLast(null); +isNull = false; +} else { +l.addLast(this.getValue(false)); +}switch ((this.getChar()).charCodeAt(0)) { +case 44: +switch ((this.getChar()).charCodeAt(0)) { +case 93: +return l; +case 44: +isNull = true; +default: +this.returnChar(); +} +continue; +case 93: +return l; +default: +throw this.syntaxError("Expected ',' or ']'"); +} +} +}); +Clazz_defineMethod(c$, "syntaxError", +function(message){ +return new JU.JSONException(message + " for " + this.str.substring(0, Math.min(this.index, this.len))); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.lang.RuntimeException"], "JU.JSONException", null, function(){ +var c$ = Clazz_declareType(JU, "JSONException", RuntimeException); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "SimpleNode"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "SimpleEdge"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "Node", JU.SimpleNode); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.lang.Enum", "JU.SimpleEdge"], "JU.Edge", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.index = -1; +this.order = 0; +Clazz_instantialize(this, arguments);}, JU, "Edge", null, JU.SimpleEdge); +c$.getArgbHbondType = Clazz_defineMethod(c$, "getArgbHbondType", +function(order){ +var argbIndex = ((order & 30720) >> 11); +return JU.Edge.argbsHbondType[argbIndex]; +}, "~N"); +c$.getBondOrderNumberFromOrder = Clazz_defineMethod(c$, "getBondOrderNumberFromOrder", +function(order){ +order &= 131071; +switch (order) { +case 131071: +case 65535: +return "0"; +case 1025: +case 1041: +return "1"; +default: +if (JU.Edge.isOrderH(order) || JU.Edge.isAtropism(order) || (order & 256) != 0) return "1"; +if ((order & 224) != 0) return (order >> 5) + "." + (order & 0x1F); +return JU.Edge.EnumBondOrder.getNumberFromCode(order); +} +}, "~N"); +c$.getCmlBondOrder = Clazz_defineMethod(c$, "getCmlBondOrder", +function(order){ +var sname = JU.Edge.getBondOrderNameFromOrder(order); +switch ((sname.charAt(0)).charCodeAt(0)) { +case 115: +case 100: +case 116: +return "" + sname.toUpperCase().charAt(0); +case 97: +if (sname.indexOf("Double") >= 0) return "D"; + else if (sname.indexOf("Single") >= 0) return "S"; +return "aromatic"; +case 112: +if (sname.indexOf(" ") >= 0) return sname.substring(sname.indexOf(" ") + 1); +return "partial12"; +} +return null; +}, "~N"); +c$.getBondOrderNameFromOrder = Clazz_defineMethod(c$, "getBondOrderNameFromOrder", +function(order){ +order &= 131071; +switch (order) { +case 65535: +case 131071: +return ""; +case 1025: +return "near"; +case 1041: +return "far"; +case 32768: +return JU.Edge.EnumBondOrder.STRUT.$$name; +case 1: +return JU.Edge.EnumBondOrder.SINGLE.$$name; +case 2: +return JU.Edge.EnumBondOrder.DOUBLE.$$name; +} +if ((order & 224) != 0) return "partial " + JU.Edge.getBondOrderNumberFromOrder(order); +if (JU.Edge.isOrderH(order)) return JU.Edge.EnumBondOrder.H_REGULAR.$$name; +if ((order & 65537) == 65537) { +var code = JU.Edge.getAtropismCode(order); +return "atropisomer_" + (Clazz_doubleToInt(code / 4)) + (code % 4); +}if ((order & 256) != 0) return JU.Edge.EnumBondOrder.SINGLE.$$name; +return JU.Edge.EnumBondOrder.getNameFromCode(order); +}, "~N"); +c$.getAtropismOrder = Clazz_defineMethod(c$, "getAtropismOrder", +function(nn, mm){ +return JU.Edge.getAtropismOrder12(((nn) << 2) + mm); +}, "~N,~N"); +c$.getAtropismOrder12 = Clazz_defineMethod(c$, "getAtropismOrder12", +function(nnmm){ +return ((nnmm << 11) | 65537); +}, "~N"); +c$.getAtropismCode = Clazz_defineMethod(c$, "getAtropismCode", +function(order){ +return (order >> (11)) & 0xF; +}, "~N"); +c$.getAtropismNode = Clazz_defineMethod(c$, "getAtropismNode", +function(order, a1, isFirst){ +var i1 = (order >> (11 + (isFirst ? 0 : 2))) & 3; +return a1.getEdges()[i1 - 1].getOtherNode(a1); +}, "~N,JU.Node,~B"); +c$.isAtropism = Clazz_defineMethod(c$, "isAtropism", +function(order){ +return (order & 65537) == 65537; +}, "~N"); +c$.isOrderH = Clazz_defineMethod(c$, "isOrderH", +function(order){ +return (order & 30720) != 0 && (order & 65537) == 0; +}, "~N"); +c$.getPartialBondDotted = Clazz_defineMethod(c$, "getPartialBondDotted", +function(order){ +return (order & 0x1F); +}, "~N"); +c$.getPartialBondOrder = Clazz_defineMethod(c$, "getPartialBondOrder", +function(order){ +return ((order & 131071) >> 5); +}, "~N"); +c$.getCovalentBondOrder = Clazz_defineMethod(c$, "getCovalentBondOrder", +function(order){ +if ((order & 1024) != 0) return 1; +if ((order & 1023) == 0) return 0; +order &= 131071; +if ((order & 224) != 0) return JU.Edge.getPartialBondOrder(order); +if ((order & 256) != 0) order &= -257; +if ((order & 0xF8) != 0) order = 1; +return order & 7; +}, "~N"); +c$.getBondOrderFromFloat = Clazz_defineMethod(c$, "getBondOrderFromFloat", +function(fOrder){ +switch (Clazz_floatToInt(fOrder * 10)) { +case 10: +return 1; +case 5: +case -10: +return 33; +case 15: +return 515; +case -15: +return 66; +case 20: +return 2; +case 25: +return 97; +case -25: +return 100; +case 30: +return 3; +case 40: +return 4; +} +return 131071; +}, "~N"); +c$.getBondOrderFromString = Clazz_defineMethod(c$, "getBondOrderFromString", +function(s){ +if (s.indexOf(' ') < 0) { +if (s.indexOf(".") >= 0) { +s = "partial " + s; +} else { +if (JU.PT.isOneOf(s, ";1;2;3;4;5;6;")) { +return (s.charAt(0)).charCodeAt(0) - 48; +}var order = JU.Edge.EnumBondOrder.getCodeFromName(s); +if (order != 131071 || !s.toLowerCase().startsWith("atropisomer_") || s.length != 14) return order; +try { +order = JU.Edge.getAtropismOrder(Integer.parseInt(s.substring(12, 13)), Integer.parseInt(s.substring(13, 14))); +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +return order; +}}if (s.toLowerCase().indexOf("partial ") != 0) return 131071; +s = s.substring(8).trim(); +return JU.Edge.getPartialBondOrderFromFloatEncodedInt(JU.Edge.getFloatEncodedInt(s)); +}, "~S"); +c$.getPartialBondOrderFromFloatEncodedInt = Clazz_defineMethod(c$, "getPartialBondOrderFromFloatEncodedInt", +function(bondOrderInteger){ +return (((Clazz_doubleToInt(bondOrderInteger / 1000000)) % 7) << 5) + ((bondOrderInteger % 1000000) & 0x1F); +}, "~N"); +c$.getFloatEncodedInt = Clazz_defineMethod(c$, "getFloatEncodedInt", +function(strDecimal){ +var pt = strDecimal.indexOf("."); +if (pt < 1 || strDecimal.charAt(0) == '-' || strDecimal.endsWith(".") || strDecimal.contains(".0")) return 2147483647; +var i = 0; +var j = 0; +if (pt > 0) { +try { +i = Integer.parseInt(strDecimal.substring(0, pt)); +if (i < 0) i = -i; +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +i = -1; +} else { +throw e; +} +} +}if (pt < strDecimal.length - 1) try { +j = Integer.parseInt(strDecimal.substring(pt + 1)); +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +i = i * 1000000 + j; +return (i < 0 || i > 2147483647 ? 2147483647 : i); +}, "~S"); +Clazz_overrideMethod(c$, "getBondType", +function(){ +return this.order & 131071; +}); +Clazz_defineMethod(c$, "setCIPChirality", +function(c){ +}, "~N"); +Clazz_defineMethod(c$, "getCIPChirality", +function(doCalculate){ +return ""; +}, "~B"); +/*if2*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.code = 0; +this.number = null; +this.$$name = null; +Clazz_instantialize(this, arguments);}, JU.Edge, "EnumBondOrder", Enum); +Clazz_makeConstructor(c$, +function(code, number, name){ +this.code = code; +this.number = number; +this.$$name = name; +}, "~N,~S,~S"); +c$.getCodeFromName = Clazz_defineMethod(c$, "getCodeFromName", +function(name){ +for (var item, $item = 0, $$item = JU.Edge.EnumBondOrder.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.$$name.equalsIgnoreCase(name)) return item.code; + +return 131071; +}, "~S"); +c$.getNameFromCode = Clazz_defineMethod(c$, "getNameFromCode", +function(code){ +for (var item, $item = 0, $$item = JU.Edge.EnumBondOrder.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.code == code) return item.$$name; + +return "?"; +}, "~N"); +c$.getNumberFromCode = Clazz_defineMethod(c$, "getNumberFromCode", +function(code){ +for (var item, $item = 0, $$item = JU.Edge.EnumBondOrder.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) if (item.code == code) return item.number; + +return "?"; +}, "~N"); +Clazz_defineEnumConstant(c$, "SINGLE", 0, [1, "1", "single"]); +Clazz_defineEnumConstant(c$, "DOUBLE", 1, [2, "2", "double"]); +Clazz_defineEnumConstant(c$, "TRIPLE", 2, [3, "3", "triple"]); +Clazz_defineEnumConstant(c$, "QUADRUPLE", 3, [4, "4", "quadruple"]); +Clazz_defineEnumConstant(c$, "QUINTUPLE", 4, [5, "5", "quintuple"]); +Clazz_defineEnumConstant(c$, "sextuple", 5, [6, "6", "sextuple"]); +Clazz_defineEnumConstant(c$, "AROMATIC", 6, [515, "1.5", "aromatic"]); +Clazz_defineEnumConstant(c$, "STRUT", 7, [32768, "1", "struts"]); +Clazz_defineEnumConstant(c$, "H_REGULAR", 8, [2048, "1", "hbond"]); +Clazz_defineEnumConstant(c$, "PARTIAL01", 9, [33, "0.5", "partial"]); +Clazz_defineEnumConstant(c$, "PARTIAL12", 10, [66, "1.5", "partialDouble"]); +Clazz_defineEnumConstant(c$, "PARTIAL23", 11, [97, "2.5", "partialTriple"]); +Clazz_defineEnumConstant(c$, "PARTIAL32", 12, [100, "2.5", "partialTriple2"]); +Clazz_defineEnumConstant(c$, "AROMATIC_SINGLE", 13, [513, "1", "aromaticSingle"]); +Clazz_defineEnumConstant(c$, "AROMATIC_DOUBLE", 14, [514, "2", "aromaticDouble"]); +Clazz_defineEnumConstant(c$, "ATROPISOMER", 15, [65537, "1", "atropisomer"]); +Clazz_defineEnumConstant(c$, "UNSPECIFIED", 16, [17, "1", "unspecified"]); +/*eoif2*/})(); +c$.argbsHbondType = Clazz_newIntArray(-1, [0xFFFF69B4, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFFFF, 0xFFFF00FF, 0xFFFF0000, 0xFFFFA500, 0xFF00FFFF, 0xFF00FF00, 0xFFFF8080]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Elements"], "JU.JmolMolecule", ["java.util.Hashtable", "JU.AU", "$.BS", "$.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.nodes = null; +this.moleculeIndex = 0; +this.modelIndex = 0; +this.indexInModel = 0; +this.firstAtomIndex = 0; +this.ac = 0; +this.nElements = 0; +this.elementCounts = null; +this.altElementCounts = null; +this.elementNumberMax = 0; +this.altElementMax = 0; +this.mf = null; +this.atomList = null; +this.atNos = null; +Clazz_instantialize(this, arguments);}, JU, "JmolMolecule", null); +Clazz_prepareFields (c$, function(){ +this.elementCounts = Clazz_newIntArray (JU.Elements.elementNumberMax, 0); +this.altElementCounts = Clazz_newIntArray (JU.Elements.altElementMax, 0); +}); +Clazz_makeConstructor(c$, +function(){ +}); +c$.getMolecules = Clazz_defineMethod(c$, "getMolecules", +function(atoms, bsModelAtoms, biobranches, bsExclude){ +var bsToTest = null; +var bsBranch = new JU.BS(); +var thisModelIndex = -1; +var indexInModel = 0; +var moleculeCount = 0; +var molecules = new Array(4); +if (bsExclude == null) bsExclude = new JU.BS(); +for (var i = 0; i < atoms.length; i++) if (!bsExclude.get(i) && !bsBranch.get(i)) { +var a = atoms[i]; +if (a == null || a.isDeleted()) { +bsExclude.set(i); +continue; +}var modelIndex = a.getModelIndex(); +if (modelIndex != thisModelIndex) { +thisModelIndex = modelIndex; +indexInModel = 0; +bsToTest = bsModelAtoms[modelIndex]; +}bsBranch = JU.JmolMolecule.getBranchBitSet(atoms, i, bsToTest, biobranches, -1, true, true); +if (bsBranch.nextSetBit(0) >= 0) { +molecules = JU.JmolMolecule.addMolecule(molecules, moleculeCount++, atoms, i, bsBranch, modelIndex, indexInModel++, bsExclude); +}} +return JU.JmolMolecule.allocateArray(molecules, moleculeCount); +}, "~A,~A,JU.Lst,JU.BS"); +c$.getBranchBitSet = Clazz_defineMethod(c$, "getBranchBitSet", +function(atoms, atomIndex, bsToTest, biobranches, atomIndexNot, allowCyclic, allowBioResidue){ +var bs = JU.BS.newN(atoms.length); +if (atomIndex < 0) return bs; +if (atomIndexNot >= 0) bsToTest.clear(atomIndexNot); +return (JU.JmolMolecule.getCovalentlyConnectedBitSet(atoms, atoms[atomIndex], bsToTest, allowCyclic, allowBioResidue, biobranches, bs, null, null) ? bs : new JU.BS()); +}, "~A,~N,JU.BS,JU.Lst,~N,~B,~B"); +c$.addMolecule = Clazz_defineMethod(c$, "addMolecule", +function(molecules, iMolecule, atoms, iAtom, bsBranch, modelIndex, indexInModel, bsExclude){ +bsExclude.or(bsBranch); +if (iMolecule == molecules.length) molecules = JU.JmolMolecule.allocateArray(molecules, iMolecule * 2 + 1); +molecules[iMolecule] = JU.JmolMolecule.initialize(atoms, iMolecule, iAtom, bsBranch, modelIndex, indexInModel); +return molecules; +}, "~A,~N,~A,~N,JU.BS,~N,~N,JU.BS"); +c$.getMolecularFormulaAtoms = Clazz_defineMethod(c$, "getMolecularFormulaAtoms", +function(atoms, bsSelected, wts, isEmpirical){ +var m = new JU.JmolMolecule(); +m.nodes = atoms; +m.atomList = bsSelected; +return m.getMolecularFormula(false, wts, isEmpirical); +}, "~A,JU.BS,~A,~B"); +Clazz_defineMethod(c$, "getMolecularFormula", +function(includeMissingHydrogens, wts, isEmpirical){ +this.getMFArray(includeMissingHydrogens, wts, isEmpirical); +if (this.elementCounts[0] < 0) return "?"; +var mf = ""; +var sep = ""; +var nX; +for (var i = 1; i <= this.elementNumberMax; i++) { +nX = this.elementCounts[i]; +if (nX != 0) { +mf += sep + JU.Elements.elementSymbolFromNumber(i) + " " + nX; +sep = " "; +}} +return mf; +}, "~B,~A,~B"); +Clazz_defineMethod(c$, "getMFArray", +function(includeMissingHydrogens, wts, isEmpirical){ +if (this.atomList == null) { +this.atomList = new JU.BS(); +this.atomList.setBits(0, this.atNos == null ? this.nodes.length : this.atNos.length); +}this.elementCounts = Clazz_newIntArray (JU.Elements.elementNumberMax, 0); +this.altElementCounts = Clazz_newIntArray (JU.Elements.altElementMax, 0); +this.ac = this.atomList.cardinality(); +this.nElements = 0; +for (var p = 0, i = this.atomList.nextSetBit(0); i >= 0; i = this.atomList.nextSetBit(i + 1), p++) { +var n; +var node = null; +if (this.atNos == null) { +node = this.nodes[i]; +if (node == null) continue; +n = node.getAtomicAndIsotopeNumber(); +} else { +n = this.atNos[i]; +}var f = (wts == null ? 1 : Clazz_floatToInt(8 * wts[p])); +if (n < JU.Elements.elementNumberMax) { +if (this.elementCounts[n] == 0) this.nElements++; +this.elementCounts[n] += f; +this.elementNumberMax = Math.max(this.elementNumberMax, n); +} else { +n = JU.Elements.altElementIndexFromNumber(n); +if (this.altElementCounts[n] == 0) this.nElements++; +this.altElementCounts[n] += f; +this.altElementMax = Math.max(this.altElementMax, n); +}if (includeMissingHydrogens) { +var nH = Math.max(0, node.getImplicitHydrogenCount()) + Math.max(node.getExplicitHydrogenCount(), 0); +if (nH > 0) { +if (this.elementCounts[1] == 0) this.nElements++; +this.elementCounts[1] += nH * f; +this.elementNumberMax = Math.max(this.elementNumberMax, 1); +}}} +if (wts != null) for (var i = 1; i <= this.elementNumberMax; i++) { +var c = Clazz_doubleToInt(this.elementCounts[i] / 8); +if (c * 8 != this.elementCounts[i]) { +this.elementCounts[0] = -1; +return this.elementCounts; +}this.elementCounts[i] = c; +} +if (isEmpirical) { +var min = 2; +var ok = true; +while (ok) { +min = 100000; +var c; +for (var i = 1; i <= this.elementNumberMax; i++) if ((c = this.elementCounts[i]) > 0 && c < min) min = c; + +if (min == 1) break; +var j = min; +for (; j > 1; j--) { +ok = true; +for (var i = 1; i <= this.elementNumberMax && ok; i++) if (Clazz_doubleToInt((c = this.elementCounts[i]) / j) * j != c) ok = false; + +if (ok) { +for (var i = 1; i <= this.elementNumberMax; i++) this.elementCounts[i] /= j; + +break; +}} +} +}return this.elementCounts; +}, "~B,~A,~B"); +c$.initialize = Clazz_defineMethod(c$, "initialize", +function(nodes, moleculeIndex, firstAtomIndex, atomList, modelIndex, indexInModel){ +var jm = new JU.JmolMolecule(); +jm.nodes = nodes; +jm.firstAtomIndex = firstAtomIndex; +jm.atomList = atomList; +jm.ac = atomList.cardinality(); +jm.moleculeIndex = moleculeIndex; +jm.modelIndex = modelIndex; +jm.indexInModel = indexInModel; +return jm; +}, "~A,~N,~N,JU.BS,~N,~N"); +c$.getCovalentlyConnectedBitSet = Clazz_defineMethod(c$, "getCovalentlyConnectedBitSet", +function(atoms, atom, bsToTest, allowCyclic, allowBioResidue, biobranches, bsResult, origAtom, prevAtom){ +var atomIndex = atom.getIndex(); +if (!bsToTest.get(atomIndex)) return allowCyclic; +if (!allowBioResidue && atom.getBioStructureTypeName().length > 0) return allowCyclic; +bsToTest.clear(atomIndex); +if (biobranches != null && !bsResult.get(atomIndex)) { +for (var i = biobranches.size(); --i >= 0; ) { +var b = biobranches.get(i); +if (b.get(atomIndex)) { +bsResult.or(b); +bsToTest.andNot(b); +for (var j = b.nextSetBit(0); j >= 0; j = b.nextSetBit(j + 1)) { +var atom1 = atoms[j]; +if (atom1 == null) continue; +bsToTest.set(j); +JU.JmolMolecule.getCovalentlyConnectedBitSet(atoms, atom1, bsToTest, allowCyclic, allowBioResidue, biobranches, bsResult, origAtom, atom); +bsToTest.clear(j); +} +break; +}} +}bsResult.set(atomIndex); +var bonds = atom.getEdges(); +if (bonds == null) return true; +for (var i = bonds.length; --i >= 0; ) { +var bond = bonds[i]; +if (bond != null && bond.isCovalent()) { +var n = bond.getOtherNode(atom); +if (n === prevAtom) continue; +if (n === origAtom) return false; +if (!JU.JmolMolecule.getCovalentlyConnectedBitSet(atoms, n, bsToTest, allowCyclic, allowBioResidue, biobranches, bsResult, origAtom, atom)) return false; +}} +return true; +}, "~A,JU.Node,JU.BS,~B,~B,JU.Lst,JU.BS,JU.Node,JU.Node"); +c$.allocateArray = Clazz_defineMethod(c$, "allocateArray", +function(molecules, len){ +return (len == molecules.length ? molecules : JU.AU.arrayCopyObject(molecules, len)); +}, "~A,~N"); +c$.getBitSetForMF = Clazz_defineMethod(c$, "getBitSetForMF", +function(at, bsAtoms, mf){ +var map = new java.util.Hashtable(); +var ch; +var isDigit; +mf = JU.PT.rep(JU.PT.clean(mf + "Z"), " ", ""); +for (var i = 0, pt = 0, pt0 = 0, n = mf.length; i < n; i++) { +if ((isDigit = Character.isDigit((ch = mf.charAt(i)))) || i > 0 && Character.isUpperCase(ch)) { +pt0 = i; +var s = mf.substring(pt, pt0).trim(); +if (isDigit) while (i < n && Character.isDigit(mf.charAt(i))) i++; + +pt = i; +map.put(s, Clazz_newIntArray(-1, [isDigit ? JU.PT.parseInt(mf.substring(pt0, pt)) : 1])); +}} +var bs = new JU.BS(); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = at[i].getElementSymbol(); +var c = map.get(a); +if (c == null || c[0]-- < 1) continue; +bs.set(i); +} +for (var e, $e = map.values().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e[0] > 0) return new JU.BS(); + +return bs; +}, "~A,JU.BS,~S"); +c$.getBranchesForInversion = Clazz_defineMethod(c$, "getBranchesForInversion", +function(at, atomIndex, bsToTest){ +var bs = new JU.BS(); +var a = at[atomIndex]; +var bonds = a.getEdges(); +for (var i = a.getBondCount(); --i >= 0; ) { +if (bonds[i].getBondType() == 1) bs.set(bonds[i].getOtherNode(a).getIndex()); +} +if (bs.cardinality() < 2) { +bs.clearAll(); +} else { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (at[i].getCovalentBondCount() == 1) continue; +var bs0 = JU.BS.copy(bsToTest); +bs0.clear(atomIndex); +var bs1 = JU.BS.newN(at.length); +if (!JU.JmolMolecule.getCovalentlyConnectedBitSet(at, at[i], bs0, true, true, null, bs1, at[atomIndex], at[atomIndex])) { +bs.clear(i); +}} +}return bs; +}, "~A,~N,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.Hashtable", "JU.DefaultLogger"], "JU.Logger", null, function(){ +var c$ = Clazz_declareType(JU, "Logger", null); +c$.getProperty = Clazz_defineMethod(c$, "getProperty", +function(level, defaultValue){ +try { +var property = System.getProperty("jmol.logger." + level, null); +if (property != null) { +return (property.equalsIgnoreCase("true")); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return defaultValue; +}, "~S,~B"); +c$.setLogger = Clazz_defineMethod(c$, "setLogger", +function(logger){ +JU.Logger._logger = logger; +JU.Logger.debugging = JU.Logger.isActiveLevel(5) || JU.Logger.isActiveLevel(6); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}, "JU.LoggerInterface"); +c$.isActiveLevel = Clazz_defineMethod(c$, "isActiveLevel", +function(level){ +return JU.Logger._logger != null && level >= 0 && level < 7 && JU.Logger._activeLevels[level]; +}, "~N"); +c$.setActiveLevel = Clazz_defineMethod(c$, "setActiveLevel", +function(level, active){ +if (level < 0) level = 0; +if (level >= 7) level = 6; +JU.Logger._activeLevels[level] = active; +JU.Logger.debugging = JU.Logger.isActiveLevel(5) || JU.Logger.isActiveLevel(6); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}, "~N,~B"); +c$.setLogLevel = Clazz_defineMethod(c$, "setLogLevel", +function(level){ +for (var i = 7; --i >= 0; ) JU.Logger.setActiveLevel(i, i <= level); + +}, "~N"); +c$.getLevel = Clazz_defineMethod(c$, "getLevel", +function(level){ +switch (level) { +case 6: +return "DEBUGHIGH"; +case 5: +return "DEBUG"; +case 4: +return "INFO"; +case 3: +return "WARN"; +case 2: +return "ERROR"; +case 1: +return "FATAL"; +} +return "????"; +}, "~N"); +c$.logLevel = Clazz_defineMethod(c$, "logLevel", +function(){ +return JU.Logger._logLevel; +}); +c$.doLogLevel = Clazz_defineMethod(c$, "doLogLevel", +function(log){ +JU.Logger._logLevel = log; +}, "~B"); +c$.debug = Clazz_defineMethod(c$, "debug", +function(txt){ +if (!JU.Logger.debugging) return; +try { +JU.Logger._logger.debug(txt); +} catch (t) { +} +}, "~S"); +c$.info = Clazz_defineMethod(c$, "info", +function(txt){ +try { +if (JU.Logger.isActiveLevel(4)) { +JU.Logger._logger.info(txt); +}} catch (t) { +} +}, "~S"); +c$.warn = Clazz_defineMethod(c$, "warn", +function(txt){ +try { +if (JU.Logger.isActiveLevel(3)) { +JU.Logger._logger.warn(txt); +}} catch (t) { +} +}, "~S"); +c$.warnEx = Clazz_defineMethod(c$, "warnEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(3)) { +JU.Logger._logger.warnEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.error = Clazz_defineMethod(c$, "error", +function(txt){ +try { +if (JU.Logger.isActiveLevel(2)) { +JU.Logger._logger.error(txt); +}} catch (t) { +} +}, "~S"); +c$.errorEx = Clazz_defineMethod(c$, "errorEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(2)) { +JU.Logger._logger.errorEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.getLogLevel = Clazz_defineMethod(c$, "getLogLevel", +function(){ +for (var i = 7; --i >= 0; ) if (JU.Logger.isActiveLevel(i)) return i; + +return 0; +}); +c$.fatal = Clazz_defineMethod(c$, "fatal", +function(txt){ +try { +if (JU.Logger.isActiveLevel(1)) { +JU.Logger._logger.fatal(txt); +}} catch (t) { +} +}, "~S"); +c$.fatalEx = Clazz_defineMethod(c$, "fatalEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(1)) { +JU.Logger._logger.fatalEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.startTimer = Clazz_defineMethod(c$, "startTimer", +function(msg){ +if (msg != null) JU.Logger.htTiming.put(msg, Long.$valueOf(System.currentTimeMillis())); +}, "~S"); +c$.getTimerMsg = Clazz_defineMethod(c$, "getTimerMsg", +function(msg, time){ +if (time == 0) time = JU.Logger.getTimeFrom(msg); +return "Time for " + msg + ": " + (time) + " ms"; +}, "~S,~N"); +c$.getTimeFrom = Clazz_defineMethod(c$, "getTimeFrom", +function(msg){ +var t; +return (msg == null || (t = JU.Logger.htTiming.get(msg)) == null ? -1 : System.currentTimeMillis() - t.longValue()); +}, "~S"); +c$.checkTimer = Clazz_defineMethod(c$, "checkTimer", +function(msg, andReset){ +var time = JU.Logger.getTimeFrom(msg); +if (time >= 0 && !msg.startsWith("(")) JU.Logger.info(JU.Logger.getTimerMsg(msg, time)); +if (andReset) JU.Logger.startTimer(msg); +return time; +}, "~S,~B"); +c$.checkMemory = Clazz_defineMethod(c$, "checkMemory", +function(){ +var bTotal = 0; +var bFree = 0; +var bMax = 0; +{ +}JU.Logger.info("Memory: Total-Free=" + (bTotal - bFree) + "; Total=" + bTotal + "; Free=" + bFree + "; Max=" + bMax); +}); +c$._logger = new JU.DefaultLogger(); +c$._activeLevels = Clazz_newBooleanArray(7, false); +c$._logLevel = false; +c$.debugging = false; +c$.debuggingHigh = false; +{ +JU.Logger._activeLevels[6] = JU.Logger.getProperty("debugHigh", false); +JU.Logger._activeLevels[5] = JU.Logger.getProperty("debug", false); +JU.Logger._activeLevels[4] = JU.Logger.getProperty("info", true); +JU.Logger._activeLevels[3] = JU.Logger.getProperty("warn", true); +JU.Logger._activeLevels[2] = JU.Logger.getProperty("error", true); +JU.Logger._activeLevels[1] = JU.Logger.getProperty("fatal", true); +JU.Logger._logLevel = JU.Logger.getProperty("logLevel", false); +JU.Logger.debugging = (JU.Logger._logger != null && (JU.Logger._activeLevels[5] || JU.Logger._activeLevels[6])); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}c$.htTiming = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "LoggerInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.V3"], "JU.Measure", ["javajs.api.Interface", "JU.Lst", "$.M3", "$.P3", "$.P4", "$.Quat"], function(){ +var c$ = Clazz_declareType(JU, "Measure", null); +c$.computeAngle = Clazz_defineMethod(c$, "computeAngle", +function(pointA, pointB, pointC, vectorBA, vectorBC, asDegrees){ +vectorBA.sub2(pointA, pointB); +vectorBC.sub2(pointC, pointB); +var angle = vectorBA.angle(vectorBC); +return (asDegrees ? angle / 0.017453292 : angle); +}, "JU.T3,JU.T3,JU.T3,JU.V3,JU.V3,~B"); +c$.computeAngleABC = Clazz_defineMethod(c$, "computeAngleABC", +function(pointA, pointB, pointC, asDegrees){ +var vectorBA = new JU.V3(); +var vectorBC = new JU.V3(); +return JU.Measure.computeAngle(pointA, pointB, pointC, vectorBA, vectorBC, asDegrees); +}, "JU.T3,JU.T3,JU.T3,~B"); +c$.computeTorsion = Clazz_defineMethod(c$, "computeTorsion", +function(p1, p2, p3, p4, asDegrees){ +var ijx = p1.x - p2.x; +var ijy = p1.y - p2.y; +var ijz = p1.z - p2.z; +var kjx = p3.x - p2.x; +var kjy = p3.y - p2.y; +var kjz = p3.z - p2.z; +var klx = p3.x - p4.x; +var kly = p3.y - p4.y; +var klz = p3.z - p4.z; +var ax = ijy * kjz - ijz * kjy; +var ay = ijz * kjx - ijx * kjz; +var az = ijx * kjy - ijy * kjx; +var cx = kjy * klz - kjz * kly; +var cy = kjz * klx - kjx * klz; +var cz = kjx * kly - kjy * klx; +var ai2 = 1 / (ax * ax + ay * ay + az * az); +var ci2 = 1 / (cx * cx + cy * cy + cz * cz); +var ai = Math.sqrt(ai2); +var ci = Math.sqrt(ci2); +var denom = ai * ci; +var cross = ax * cx + ay * cy + az * cz; +var cosang = cross * denom; +if (cosang > 1) { +cosang = 1; +}if (cosang < -1) { +cosang = -1; +}var torsion = Math.acos(cosang); +var dot = ijx * cx + ijy * cy + ijz * cz; +var absDot = Math.abs(dot); +torsion = (dot / absDot > 0) ? torsion : -torsion; +return (asDegrees ? torsion / 0.017453292 : torsion); +}, "JU.T3,JU.T3,JU.T3,JU.T3,~B"); +c$.getPlaneThroughPoints = Clazz_defineMethod(c$, "getPlaneThroughPoints", +function(pointA, pointB, pointC, vNorm, vAB, plane){ +if (vNorm == null) vNorm = new JU.V3(); +if (vAB == null) vAB = new JU.V3(); +var w = JU.Measure.getNormalThroughPoints(pointA, pointB, pointC, vNorm, vAB); +plane.set4(vNorm.x, vNorm.y, vNorm.z, w); +return plane; +}, "JU.T3,JU.T3,JU.T3,JU.V3,JU.V3,JU.P4"); +c$.getPlaneThroughPoint = Clazz_defineMethod(c$, "getPlaneThroughPoint", +function(pt, normal, plane){ +plane.set4(normal.x, normal.y, normal.z, -normal.dot(pt)); +}, "JU.T3,JU.V3,JU.P4"); +c$.distanceToPlane = Clazz_defineMethod(c$, "distanceToPlane", +function(plane, pt){ +return (plane == null ? NaN : (plane.dot(pt) + plane.w) / Math.sqrt(plane.dot(plane))); +}, "JU.P4,JU.T3"); +c$.directedDistanceToPlane = Clazz_defineMethod(c$, "directedDistanceToPlane", +function(pt, plane, ptref){ +var f = plane.dot(pt) + plane.w; +var f1 = plane.dot(ptref) + plane.w; +return Math.signum(f1) * f / Math.sqrt(plane.dot(plane)); +}, "JU.P3,JU.P4,JU.P3"); +c$.distanceToPlaneD = Clazz_defineMethod(c$, "distanceToPlaneD", +function(plane, d, pt){ +return (plane == null ? NaN : (plane.dot(pt) + plane.w) / d); +}, "JU.P4,~N,JU.P3"); +c$.distanceToPlaneV = Clazz_defineMethod(c$, "distanceToPlaneV", +function(norm, w, pt){ +return (norm == null ? NaN : (norm.dot(pt) + w) / Math.sqrt(norm.dot(norm))); +}, "JU.V3,~N,JU.P3"); +c$.calcNormalizedNormal = Clazz_defineMethod(c$, "calcNormalizedNormal", +function(pointA, pointB, pointC, vNormNorm, vAB){ +vAB.sub2(pointB, pointA); +vNormNorm.sub2(pointC, pointA); +vNormNorm.cross(vAB, vNormNorm); +vNormNorm.normalize(); +}, "JU.T3,JU.T3,JU.T3,JU.T3,JU.T3"); +c$.getDirectedNormalThroughPoints = Clazz_defineMethod(c$, "getDirectedNormalThroughPoints", +function(pointA, pointB, pointC, ptRef, vNorm, vAB){ +var nd = JU.Measure.getNormalThroughPoints(pointA, pointB, pointC, vNorm, vAB); +if (ptRef != null) { +var pt0 = JU.P3.newP(pointA); +pt0.add(vNorm); +var d = pt0.distance(ptRef); +pt0.sub2(pointA, vNorm); +if (d > pt0.distance(ptRef)) { +vNorm.scale(-1); +nd = -nd; +}}return nd; +}, "JU.T3,JU.T3,JU.T3,JU.T3,JU.V3,JU.V3"); +c$.getNormalThroughPoints = Clazz_defineMethod(c$, "getNormalThroughPoints", +function(pointA, pointB, pointC, vNorm, vTemp){ +JU.Measure.calcNormalizedNormal(pointA, pointB, pointC, vNorm, vTemp); +vTemp.setT(pointA); +return -vTemp.dot(vNorm); +}, "JU.T3,JU.T3,JU.T3,JU.T3,JU.T3"); +c$.getPlaneProjection = Clazz_defineMethod(c$, "getPlaneProjection", +function(pt, plane, retPtProj, retNorm){ +var dist = JU.Measure.distanceToPlane(plane, pt); +retNorm.set(plane.x, plane.y, plane.z); +retNorm.normalize(); +if (dist > 0) retNorm.scale(-1); +retPtProj.scaleAdd2(Math.abs(dist), retNorm, pt); +return dist; +}, "JU.T3,JU.P4,JU.T3,JU.V3"); +c$.getNormalFromCenter = Clazz_defineMethod(c$, "getNormalFromCenter", +function(ptCenter, ptA, ptB, ptC, isOutward, normal, vTemp){ +var d = JU.Measure.getNormalThroughPoints(ptA, ptB, ptC, normal, vTemp); +var isReversed = (JU.Measure.distanceToPlaneV(normal, d, ptCenter) > 0); +if (isReversed == isOutward) normal.scale(-1.0); +return !isReversed; +}, "JU.P3,JU.P3,JU.P3,JU.P3,~B,JU.V3,JU.V3"); +c$.getNormalToLine = Clazz_defineMethod(c$, "getNormalToLine", +function(pointA, pointB, vNormNorm){ +vNormNorm.sub2(pointA, pointB); +vNormNorm.cross(vNormNorm, JU.Measure.axisY); +vNormNorm.normalize(); +if (Float.isNaN(vNormNorm.x)) vNormNorm.set(1, 0, 0); +}, "JU.P3,JU.P3,JU.V3"); +c$.getBisectingPlane = Clazz_defineMethod(c$, "getBisectingPlane", +function(pointA, vAB, ptTemp, vTemp, plane){ +ptTemp.scaleAdd2(0.5, vAB, pointA); +vTemp.setT(vAB); +vTemp.normalize(); +JU.Measure.getPlaneThroughPoint(ptTemp, vTemp, plane); +}, "JU.P3,JU.V3,JU.T3,JU.V3,JU.P4"); +c$.projectOntoAxis = Clazz_defineMethod(c$, "projectOntoAxis", +function(pt, ptA, axisUnitVector, vectorProjection){ +vectorProjection.sub2(pt, ptA); +var projectedLength = vectorProjection.dot(axisUnitVector); +pt.scaleAdd2(projectedLength, axisUnitVector, ptA); +vectorProjection.sub2(pt, ptA); +return projectedLength; +}, "JU.P3,JU.P3,JU.V3,JU.V3"); +c$.calcBestAxisThroughPoints = Clazz_defineMethod(c$, "calcBestAxisThroughPoints", +function(points, nPoints, axisA, axisUnitVector, vectorProjection, nTriesMax){ +axisA.setT(points[0]); +axisUnitVector.sub2(points[nPoints - 1], axisA); +axisUnitVector.normalize(); +JU.Measure.calcAveragePointN(points, nPoints, axisA); +var nTries = 0; +while (nTries++ < nTriesMax && JU.Measure.findAxis(points, nPoints, axisA, axisUnitVector, vectorProjection) > 0.001) { +} +var tempA = JU.P3.newP(points[0]); +JU.Measure.projectOntoAxis(tempA, axisA, axisUnitVector, vectorProjection); +axisA.setT(tempA); +}, "~A,~N,JU.P3,JU.V3,JU.V3,~N"); +c$.findAxis = Clazz_defineMethod(c$, "findAxis", +function(points, nPoints, axisA, axisUnitVector, vectorProjection){ +var sumXiYi = new JU.V3(); +var vTemp = new JU.V3(); +var pt = new JU.P3(); +var ptProj = new JU.P3(); +var a = JU.V3.newV(axisUnitVector); +var sum_Xi2 = 0; +for (var i = nPoints; --i >= 0; ) { +pt.setT(points[i]); +ptProj.setT(pt); +JU.Measure.projectOntoAxis(ptProj, axisA, axisUnitVector, vectorProjection); +vTemp.sub2(pt, ptProj); +vTemp.cross(vectorProjection, vTemp); +sumXiYi.add(vTemp); +sum_Xi2 += vectorProjection.lengthSquared(); +} +var m = JU.V3.newV(sumXiYi); +m.scale(1 / sum_Xi2); +vTemp.cross(m, axisUnitVector); +axisUnitVector.add(vTemp); +axisUnitVector.normalize(); +vTemp.sub2(axisUnitVector, a); +return vTemp.length(); +}, "~A,~N,JU.P3,JU.V3,JU.V3"); +c$.calcAveragePoint = Clazz_defineMethod(c$, "calcAveragePoint", +function(pointA, pointB, pointC){ +pointC.set((pointA.x + pointB.x) / 2, (pointA.y + pointB.y) / 2, (pointA.z + pointB.z) / 2); +}, "JU.P3,JU.P3,JU.P3"); +c$.calcAveragePointN = Clazz_defineMethod(c$, "calcAveragePointN", +function(points, nPoints, averagePoint){ +averagePoint.setT(points[0]); +for (var i = 1; i < nPoints; i++) averagePoint.add(points[i]); + +averagePoint.scale(1 / nPoints); +}, "~A,~N,JU.P3"); +c$.transformPoints = Clazz_defineMethod(c$, "transformPoints", +function(vPts, m4, center){ +var v = new JU.Lst(); +for (var i = 0; i < vPts.size(); i++) { +var pt = JU.P3.newP(vPts.get(i)); +pt.sub(center); +m4.rotTrans(pt); +pt.add(center); +v.addLast(pt); +} +return v; +}, "JU.Lst,JU.M4,JU.P3"); +c$.isInTetrahedron = Clazz_defineMethod(c$, "isInTetrahedron", +function(pt, ptA, ptB, ptC, ptD, plane, vTemp, vTemp2, fullyEnclosed){ +var b = (JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(ptC, ptD, ptA, vTemp, vTemp2, plane), pt) >= 0); +if (b != (JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(ptA, ptD, ptB, vTemp, vTemp2, plane), pt) >= 0)) return false; +if (b != (JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(ptB, ptD, ptC, vTemp, vTemp2, plane), pt) >= 0)) return false; +var d = JU.Measure.distanceToPlane(JU.Measure.getPlaneThroughPoints(ptA, ptB, ptC, vTemp, vTemp2, plane), pt); +if (fullyEnclosed) return (b == (d >= 0)); +var d1 = JU.Measure.distanceToPlane(plane, ptD); +return d1 * d <= 0 || Math.abs(d1) > Math.abs(d); +}, "JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P4,JU.V3,JU.V3,~B"); +c$.getIntersectionPP = Clazz_defineMethod(c$, "getIntersectionPP", +function(plane1, plane2){ +var a1 = plane1.x; +var b1 = plane1.y; +var c1 = plane1.z; +var d1 = plane1.w; +var a2 = plane2.x; +var b2 = plane2.y; +var c2 = plane2.z; +var d2 = plane2.w; +var norm1 = JU.V3.new3(a1, b1, c1); +var norm2 = JU.V3.new3(a2, b2, c2); +var nxn = new JU.V3(); +nxn.cross(norm1, norm2); +var ax = Math.abs(nxn.x); +var ay = Math.abs(nxn.y); +var az = Math.abs(nxn.z); +var x; +var y; +var z; +var diff; +var type = (ax > ay ? (ax > az ? 1 : 3) : ay > az ? 2 : 3); +switch (type) { +case 1: +x = 0; +diff = (b1 * c2 - b2 * c1); +if (Math.abs(diff) < 0.01) return null; +y = (c1 * d2 - c2 * d1) / diff; +z = (b2 * d1 - d2 * b1) / diff; +break; +case 2: +diff = (a1 * c2 - a2 * c1); +if (Math.abs(diff) < 0.01) return null; +x = (c1 * d2 - c2 * d1) / diff; +y = 0; +z = (a2 * d1 - d2 * a1) / diff; +break; +case 3: +default: +diff = (a1 * b2 - a2 * b1); +if (Math.abs(diff) < 0.01) return null; +x = (b1 * d2 - b2 * d1) / diff; +y = (a2 * d1 - d2 * a1) / diff; +z = 0; +} +var list = new JU.Lst(); +list.addLast(JU.P3.new3(x, y, z)); +nxn.normalize(); +list.addLast(nxn); +return list; +}, "JU.P4,JU.P4"); +c$.getIntersection = Clazz_defineMethod(c$, "getIntersection", +function(pt1, v, plane, ptRet, tempNorm, vTemp){ +JU.Measure.getPlaneProjection(pt1, plane, ptRet, tempNorm); +tempNorm.set(plane.x, plane.y, plane.z); +tempNorm.normalize(); +if (v == null) v = JU.V3.newV(tempNorm); +var l_dot_n = v.dot(tempNorm); +if (Math.abs(l_dot_n) < 0.01) return null; +vTemp.sub2(ptRet, pt1); +ptRet.scaleAdd2(vTemp.dot(tempNorm) / l_dot_n, v, pt1); +return ptRet; +}, "JU.P3,JU.V3,JU.P4,JU.P3,JU.V3,JU.V3"); +c$.calculateQuaternionRotation = Clazz_defineMethod(c$, "calculateQuaternionRotation", +function(centerAndPoints, retStddev){ +retStddev[1] = NaN; +var q = new JU.Quat(); +var ptsA = centerAndPoints[0]; +var ptsB = centerAndPoints[1]; +var nPts = ptsA.length - 1; +if (nPts < 2 || ptsA.length != ptsB.length) return q; +var Sxx = 0; +var Sxy = 0; +var Sxz = 0; +var Syx = 0; +var Syy = 0; +var Syz = 0; +var Szx = 0; +var Szy = 0; +var Szz = 0; +var ptA = new JU.P3(); +var ptB = new JU.P3(); +var ptA0 = ptsA[0]; +var ptB0 = ptsB[0]; +for (var i = nPts + 1; --i >= 1; ) { +ptA.sub2(ptsA[i], ptA0); +ptB.sub2(ptsB[i], ptB0); +Sxx += ptA.x * ptB.x; +Sxy += ptA.x * ptB.y; +Sxz += ptA.x * ptB.z; +Syx += ptA.y * ptB.x; +Syy += ptA.y * ptB.y; +Syz += ptA.y * ptB.z; +Szx += ptA.z * ptB.x; +Szy += ptA.z * ptB.y; +Szz += ptA.z * ptB.z; +} +retStddev[0] = JU.Measure.getRmsd(centerAndPoints, q); +var N = Clazz_newDoubleArray (4, 4, 0); +N[0][0] = Sxx + Syy + Szz; +N[0][1] = N[1][0] = Syz - Szy; +N[0][2] = N[2][0] = Szx - Sxz; +N[0][3] = N[3][0] = Sxy - Syx; +N[1][1] = Sxx - Syy - Szz; +N[1][2] = N[2][1] = Sxy + Syx; +N[1][3] = N[3][1] = Szx + Sxz; +N[2][2] = -Sxx + Syy - Szz; +N[2][3] = N[3][2] = Syz + Szy; +N[3][3] = -Sxx - Syy + Szz; +var v = (javajs.api.Interface.getInterface("JU.Eigen")).setM(N).getEigenvectorsFloatTransposed()[3]; +q = JU.Quat.newP4(JU.P4.new4(v[1], v[2], v[3], v[0])); +retStddev[1] = JU.Measure.getRmsd(centerAndPoints, q); +return q; +}, "~A,~A"); +c$.getTransformMatrix4 = Clazz_defineMethod(c$, "getTransformMatrix4", +function(ptsA, ptsB, m, centerA){ +var cptsA = JU.Measure.getCenterAndPoints(ptsA); +var cptsB = JU.Measure.getCenterAndPoints(ptsB); +var retStddev = Clazz_newFloatArray (2, 0); +var q = JU.Measure.calculateQuaternionRotation( Clazz_newArray(-1, [cptsA, cptsB]), retStddev); +var r = q.getMatrix(); +if (centerA == null) r.rotate(cptsA[0]); + else centerA.setT(cptsA[0]); +var t = JU.V3.newVsub(cptsB[0], cptsA[0]); +m.setMV(r, t); +return retStddev[1]; +}, "JU.Lst,JU.Lst,JU.M4,JU.P3"); +c$.getCenterAndPoints = Clazz_defineMethod(c$, "getCenterAndPoints", +function(vPts){ +var n = vPts.size(); +var pts = new Array(n + 1); +pts[0] = new JU.P3(); +if (n > 0) { +for (var i = 0; i < n; i++) { +pts[0].add(pts[i + 1] = vPts.get(i)); +} +pts[0].scale(1 / n); +}return pts; +}, "JU.Lst"); +c$.getRmsd = Clazz_defineMethod(c$, "getRmsd", +function(centerAndPoints, q){ +var sum2 = 0; +var ptsA = centerAndPoints[0]; +var ptsB = centerAndPoints[1]; +var cA = ptsA[0]; +var cB = ptsB[0]; +var n = ptsA.length - 1; +var ptAnew = new JU.P3(); +for (var i = n + 1; --i >= 1; ) { +ptAnew.sub2(ptsA[i], cA); +q.transform2(ptAnew, ptAnew).add(cB); +sum2 += ptAnew.distanceSquared(ptsB[i]); +} +return Math.sqrt(sum2 / n); +}, "~A,JU.Quat"); +c$.getBestLineThroughPoints = Clazz_defineMethod(c$, "getBestLineThroughPoints", +function(points, nPoints){ +if (nPoints <= 0) nPoints = points.length; +if (nPoints <= 2) { +return points; +}var ptA = new JU.P3(); +var unitVector = new JU.V3(); +var vTemp = new JU.V3(); +JU.Measure.calcBestAxisThroughPoints(points, nPoints, ptA, unitVector, vTemp, 8); +return JU.Measure.getProjectedLineSegment(points, nPoints, ptA, unitVector, vTemp); +}, "~A,~N"); +c$.getProjectedLineSegment = Clazz_defineMethod(c$, "getProjectedLineSegment", +function(points, nPoints, ptA, unitVector, vTemp){ +if (nPoints < 0) nPoints = points.length; +if (vTemp == null) vTemp = new JU.V3(); +var pmin = null; +var pmax = null; +var p; +var dmin = 3.4028235E38; +var dmax = -3.4028235E38; +for (var i = 0; i < points.length; i++) { +JU.Measure.projectOntoAxis(p = JU.P3.newP(points[i]), ptA, unitVector, vTemp); +var d = unitVector.dot(vTemp); +if (d < dmin) { +dmin = d; +pmin = p; +}if (d > dmax) { +dmax = d; +pmax = p; +}} +return Clazz_newArray(-1, [pmin, pmax]); +}, "~A,~N,JU.P3,JU.V3,JU.V3"); +c$.isInTriangle = Clazz_defineMethod(c$, "isInTriangle", +function(p, a, b, c, v0, v1, v2){ +v0.sub2(c, a); +v1.sub2(b, a); +v2.sub2(p, a); +var dot00 = v0.dot(v0); +var dot01 = v0.dot(v1); +var dot02 = v0.dot(v2); +var dot11 = v1.dot(v1); +var dot12 = v1.dot(v2); +var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); +var u = (dot11 * dot02 - dot01 * dot12) * invDenom; +var v = (dot00 * dot12 - dot01 * dot02) * invDenom; +return (u >= 0 && v >= 0 && u + v <= 1); +}, "JU.P3,JU.P3,JU.P3,JU.P3,JU.V3,JU.V3,JU.V3"); +c$.calcBestPlaneThroughPoints = Clazz_defineMethod(c$, "calcBestPlaneThroughPoints", +function(points, nPoints, plane){ +if (nPoints <= 0) { +nPoints = points.length; +}if (nPoints == 3) { +JU.Measure.getPlaneThroughPoints(points[0], points[1], points[2], null, null, plane); +return 0; +}var pmin = plane; +var plane2 = new JU.P4(); +var plane3; +var rmsd = JU.Measure.calcPlaneForMode(points, nPoints, plane, 'z'); +if (rmsd < 1e-6) return rmsd; +var f2 = JU.Measure.calcPlaneForMode(points, nPoints, plane2, 'y'); +if (f2 < rmsd) { +rmsd = f2; +pmin = plane2; +plane3 = plane; +} else { +plane3 = plane2; +}if (rmsd >= 1e-6) { +f2 = JU.Measure.calcPlaneForMode(points, nPoints, plane3, 'x'); +if (f2 < rmsd) { +rmsd = f2; +pmin = plane3; +}}if (pmin !== plane) { +plane.setT(pmin); +plane.w = pmin.w; +}return rmsd; +}, "~A,~N,JU.P4"); +c$.calcPlaneForMode = Clazz_defineMethod(c$, "calcPlaneForMode", +function(points, nPoints, plane, mode){ +var A = Clazz_newDoubleArray (nPoints, 3, 0); +var AT = Clazz_newDoubleArray (3, nPoints, 0); +var ATAT = Clazz_newDoubleArray (3, nPoints, 0); +var ATA1 = Clazz_newDoubleArray (3, 3, 0); +var B = Clazz_newDoubleArray (nPoints, 0); +for (var i = nPoints; --i >= 0; ) { +var p = points[i]; +A[i][0] = AT[0][i] = (mode == 'x' ? p.z : p.x); +A[i][1] = AT[1][i] = (mode == 'y' ? p.z : p.y); +A[i][2] = AT[2][i] = 1; +B[i] = -(mode == 'y' ? p.y : mode == 'x' ? p.x : p.z); +} +var m = new JU.M3(); +for (var i = 3; --i >= 0; ) { +for (var j = 3; --j >= 0; ) { +var d = 0; +for (var k = nPoints; --k >= 0; ) { +d += AT[i][k] * A[k][j]; +} +m.set33(i, j, d); +} +} +m.invert(); +for (var i = 3; --i >= 0; ) { +for (var j = 3; --j >= 0; ) { +ATA1[i][j] = m.get33(i, j); +} +} +for (var i = 3; --i >= 0; ) { +for (var k = nPoints; --k >= 0; ) { +var d = 0; +for (var j = 3; --j >= 0; ) { +d += ATA1[i][j] * AT[j][k]; +} +ATAT[i][k] = d; +} +} +switch ((mode).charCodeAt(0)) { +case 120: +plane.x = 1; +break; +case 121: +plane.y = 1; +break; +case 122: +plane.z = 1; +break; +} +var len2 = 1; +for (var j = 3; --j >= 0; ) { +var v = 0; +for (var k = nPoints; --k >= 0; ) { +v += ATAT[j][k] * B[k]; +} +switch (j) { +case 0: +len2 += v * v; +if (mode == 'x') plane.z = v; + else plane.x = v; +break; +case 1: +len2 += v * v; +if (mode == 'y') plane.z = v; + else plane.y = v; +break; +case 2: +plane.w = v; +} +} +var f = Math.sqrt(len2); +plane.scale4((1 / plane.w > 0 ? 1 : -1) / f); +var sum2 = 0; +for (var i = 0; i < nPoints; i++) { +var d = JU.Measure.distanceToPlane(plane, points[i]); +sum2 += d * d; +} +var ret = Math.sqrt(sum2 / nPoints); +return ret; +}, "~A,~N,JU.P4,~S"); +c$.rndPt = Clazz_defineMethod(c$, "rndPt", +function(){ +return JU.P3.new3(Math.random() * 20, (Math.random() * 20), (Math.random() * 20)); +}); +c$.testRnd = Clazz_defineMethod(c$, "testRnd", +function(){ +var plane = JU.P4.new4(Math.random() * 20, Math.random() * 20, Math.random() * 20, Math.random() * 20); +plane.scale4(1 / plane.length()); +System.out.println("\n==========\n "); +System.out.println("plane is " + plane); +var ptProj = new JU.P3(); +var vNorm = new JU.V3(); +var pts = new Array(4); +for (var i = 0; i < pts.length; i++) { +pts[i] = new JU.P3(); +var p = JU.Measure.rndPt(); +JU.Measure.getPlaneProjection(p, plane, ptProj, vNorm); +pts[i].setT(ptProj); +var d = Math.random() * 0.1; +pts[i].scaleAdd2(d, vNorm, ptProj); +System.out.println(pts[i] + " d=" + d); +} +var p2 = new JU.P4(); +var f = JU.Measure.calcBestPlaneThroughPoints(pts, -1, p2); +System.out.println("found " + p2 + " rmsd = " + f); +}); +c$.test = Clazz_defineMethod(c$, "test", +function(){ +for (var i = 0; i < 10; i++) JU.Measure.testRnd(); + +System.exit(0); +}); +c$.getPointsOnPlane = Clazz_defineMethod(c$, "getPointsOnPlane", +function(pts, plane){ +var ret = new JU.Lst(); +for (var i = pts.length; --i >= 0; ) { +var d = Math.abs(JU.Measure.distanceToPlane(plane, pts[i])); +if (d < 0.001) { +ret.addLast(pts[i]); +}} +return ret; +}, "~A,JU.P4"); +c$.getLatticePoints = Clazz_defineMethod(c$, "getLatticePoints", +function(cpts, h, k, l){ +cpts.addLast( new JU.P3()); +h = (h == 0 ? 1 : Math.abs(h)); +k = (k == 0 ? 1 : Math.abs(k)); +l = (l == 0 ? 1 : Math.abs(l)); +var n = cpts.size(); +for (var ih = -h; ih <= h; ih++) { +for (var ik = -k; ik <= k; ik++) { +for (var il = -l; il <= l; il++) { +for (var i = 0; i < n; i++) { +var pt = JU.P3.new3(ih, ik, il); +pt.add(cpts.get(i)); +cpts.addLast(pt); +} +} +} +} +for (var i = n; --i >= 0; ) cpts.removeItemAt(0); + +return cpts; +}, "JU.Lst,~N,~N,~N"); +c$.computeHelicalAxis = Clazz_defineMethod(c$, "computeHelicalAxis", +function(a, b, dq){ +var vab = new JU.V3(); +vab.sub2(b, a); +var theta = dq.getTheta(); +var n = dq.getNormal(); +var v_dot_n = vab.dot(n); +if (Math.abs(v_dot_n) < 0.0001) v_dot_n = 0; +var va_prime_d = new JU.V3(); +va_prime_d.cross(vab, n); +if (va_prime_d.dot(va_prime_d) != 0) va_prime_d.normalize(); +var vda = new JU.V3(); +var vcb = JU.V3.newV(n); +if (v_dot_n == 0) v_dot_n = 1.4E-45; +vcb.scale(v_dot_n); +vda.sub2(vcb, vab); +vda.scale(0.5); +va_prime_d.scale(theta == 0 ? 0 : (vda.length() / Math.tan(theta / 2 / 180 * 3.141592653589793))); +var r = JU.V3.newV(va_prime_d); +if (theta != 0) r.add(vda); +var pt_a_prime = JU.P3.newP(a); +pt_a_prime.sub(r); +if (v_dot_n != 1.4E-45) n.scale(v_dot_n); +var pt_b_prime = JU.P3.newP(pt_a_prime); +pt_b_prime.add(n); +theta = JU.Measure.computeTorsion(a, pt_a_prime, pt_b_prime, b, true); +if (Float.isNaN(theta) || r.length() < 0.0001) theta = dq.getThetaDirectedV(n); +var residuesPerTurn = Math.abs(theta == 0 ? 0 : 360 / theta); +var pitch = Math.abs(v_dot_n == 1.4E-45 ? 0 : n.length() * (theta == 0 ? 1 : 360 / theta)); +return Clazz_newArray(-1, [pt_a_prime, n, r, JU.P3.new3(theta, pitch, residuesPerTurn), pt_b_prime]); +}, "JU.P3,JU.P3,JU.Quat"); +c$.axisY = JU.V3.new3(0, 1, 0); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.MeshSurface", ["JU.AU", "$.P3", "J.api.Interface", "JU.BoxInfo", "$.C", "$.Geodesic", "$.TempArray"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.slicer = null; +this.oabc = null; +this.meshType = null; +this.vc = 0; +this.vs = null; +this.vvs = null; +this.vertexSource = null; +this.surfaceAtoms = null; +this.pc = 0; +this.pis = null; +this.colorsExplicit = false; +this.isDrawPolygon = false; +this.haveQuads = false; +this.colix = 0; +this.colixBack = 0; +this.isColorSolid = true; +this.offset = null; +this.altVertices = null; +this.pcs = null; +this.vcs = null; +this.normals = null; +this.normalsTemp = null; +this.normalCount = 0; +this.normixCount = 0; +this.bsPolygons = null; +this.mat4 = null; +this.surfaceSet = null; +this.vertexSets = null; +this.nSets = 0; +this.dataOnly = false; +this.lastColor = 0; +this.lastColix = 0; +this.iA = 0; +this.iB = 0; +this.iC = 0; +this.polygonCount0 = 0; +this.vertexCount0 = 0; +this.bsSlabDisplay = null; +this.bsSlabGhost = null; +this.slabMeshType = 0; +this.slabColix = 0; +this.bsDisplay = null; +this.slabOptions = null; +this.mergeVertexCount0 = 0; +this.mergePolygonCount0 = 0; +this.isMerged = false; +Clazz_instantialize(this, arguments);}, JU, "MeshSurface", null); +Clazz_defineMethod(c$, "getMeshSlicer", +function(){ +return (this.slicer == null ? this.slicer = (J.api.Interface.getInterface("JU.MeshSlicer", this.vwr, "script")).set(this) : this.slicer); +}); +c$.newMesh = Clazz_defineMethod(c$, "newMesh", +function(isAlt, vertices, vertexCount, polygonIndexes, normals, nNormals){ +var ms = new JU.MeshSurface(); +ms.pis = polygonIndexes; +if (isAlt) ms.altVertices = vertices; + else ms.vs = vertices; +ms.vc = (vertexCount == 0 ? vertices.length : vertexCount); +ms.normals = normals; +ms.normalCount = (nNormals == 0 && normals != null ? normals.length : nNormals); +return ms; +}, "~B,~A,~N,~A,~A,~N"); +Clazz_defineMethod(c$, "getVertices", +function(){ +return (this.altVertices == null ? this.vs : this.altVertices); +}); +Clazz_defineMethod(c$, "getFaces", +function(){ +return this.pis; +}); +Clazz_defineMethod(c$, "setColix", +function(colix){ +this.colix = colix; +}, "~N"); +Clazz_defineMethod(c$, "setColixBack", +function(colix){ +this.colixBack = colix; +}, "~N"); +Clazz_defineMethod(c$, "addV", +function(vertex, asCopy){ +if (this.vc == 0) this.vs = new Array(25); + else if (this.vc == this.vs.length) this.vs = JU.AU.doubleLength(this.vs); +this.vs[this.vc] = (asCopy ? JU.P3.newP(vertex) : vertex); +return this.vc++; +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "addTriangle", +function(vertexA, vertexB, vertexC){ +this.addPolygon( Clazz_newIntArray(-1, [vertexA, vertexB, vertexC]), null); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "addQuad", +function(vertexA, vertexB, vertexC, vertexD){ +this.haveQuads = true; +this.addPolygon( Clazz_newIntArray(-1, [vertexA, vertexB, vertexC, vertexD]), null); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setPolygonCount", +function(polygonCount){ +this.pc = polygonCount; +if (polygonCount < 0) return; +if (this.pis == null || polygonCount > this.pis.length) this.pis = JU.AU.newInt2(polygonCount); +}, "~N"); +Clazz_defineMethod(c$, "addVCVal", +function(vertex, value, asCopy){ +if (this.vc == 0) this.vvs = Clazz_newFloatArray (25, 0); + else if (this.vc >= this.vvs.length) this.vvs = JU.AU.doubleLengthF(this.vvs); +this.vvs[this.vc] = value; +return this.addV(vertex, asCopy); +}, "JU.T3,~N,~B"); +Clazz_defineMethod(c$, "addTriangleCheck", +function(vertexA, vertexB, vertexC, check, iContour, color){ +return (this.vs == null || this.vvs != null && (Float.isNaN(this.vvs[vertexA]) || Float.isNaN(this.vvs[vertexB]) || Float.isNaN(this.vvs[vertexC])) || Float.isNaN(this.vs[vertexA].x) || Float.isNaN(this.vs[vertexB].x) || Float.isNaN(this.vs[vertexC].x) ? -1 : this.addPolygonV3(vertexA, vertexB, vertexC, check, iContour, color, null)); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "addPolygonV3", +function(vertexA, vertexB, vertexC, check, iContour, color, bs){ +return (this.dataOnly ? this.addPolygon( Clazz_newIntArray(-1, [vertexA, vertexB, vertexC, check]), bs) : this.addPolygonC( Clazz_newIntArray(-1, [vertexA, vertexB, vertexC, check, iContour]), color, bs, (iContour < 0))); +}, "~N,~N,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "addPolygonC", +function(polygon, color, bs, isExplicit){ +if (color != 0) { +if (this.pcs == null || this.pc == 0) this.lastColor = 0; +if (isExplicit) { +this.colorsExplicit = true; +} else { +if (this.pcs == null) { +this.pcs = Clazz_newShortArray (25, 0); +} else if (this.pc >= this.pcs.length) { +this.pcs = JU.AU.doubleLengthShort(this.pcs); +}this.pcs[this.pc] = (isExplicit ? 2047 : color == this.lastColor ? this.lastColix : (this.lastColix = JU.C.getColix(this.lastColor = color))); +}}return this.addPolygon(polygon, bs); +}, "~A,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "addPolygon", +function(polygon, bs){ +var n = this.pc; +if (n == 0) this.pis = JU.AU.newInt2(25); + else if (n == this.pis.length) this.pis = JU.AU.doubleLength(this.pis); +if (bs != null) bs.set(n); +this.pis[this.pc++] = polygon; +return n; +}, "~A,JU.BS"); +Clazz_defineMethod(c$, "invalidatePolygons", +function(){ +for (var i = this.pc; --i >= this.mergePolygonCount0; ) if ((this.bsSlabDisplay == null || this.bsSlabDisplay.get(i)) && this.setABC(i) == null) this.pis[i] = null; + +}); +Clazz_defineMethod(c$, "setABC", +function(i){ +if (this.bsSlabDisplay != null && !this.bsSlabDisplay.get(i) && (this.bsSlabGhost == null || !this.bsSlabGhost.get(i))) return null; +var polygon = this.pis[i]; +if (polygon == null || polygon.length < 3) return null; +this.iA = polygon[0]; +this.iB = polygon[1]; +this.iC = polygon[2]; +return (this.vvs == null || !Float.isNaN(this.vvs[this.iA]) && !Float.isNaN(this.vvs[this.iB]) && !Float.isNaN(this.vvs[this.iC]) ? polygon : null); +}, "~N"); +Clazz_defineMethod(c$, "setTranslucentVertices", +function(bsVertices){ +}, "JU.BS"); +Clazz_defineMethod(c$, "getSlabColor", +function(){ +return (this.bsSlabGhost == null ? null : JU.C.getHexCode(this.slabColix)); +}); +Clazz_defineMethod(c$, "getSlabType", +function(){ +return (this.bsSlabGhost != null && this.slabMeshType == 1073742018 ? "mesh" : null); +}); +Clazz_defineMethod(c$, "resetSlab", +function(){ +if (this.slicer != null) this.slicer.slabPolygons(JU.TempArray.getSlabObjectType(1073742333, null, false, null), false); +}); +Clazz_defineMethod(c$, "slabPolygonsList", +function(slabInfo, allowCap){ +this.getMeshSlicer(); +for (var i = 0; i < slabInfo.size(); i++) if (!this.slicer.slabPolygons(slabInfo.get(i), allowCap)) break; + +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "slabBrillouin", +function(unitCellVectors){ +return; +}, "~A"); +Clazz_defineMethod(c$, "getResolution", +function(){ +return 0; +}); +c$.getSphereData = Clazz_defineMethod(c$, "getSphereData", +function(lvl){ +JU.Geodesic.createGeodesic(lvl); +var vertexCount = JU.Geodesic.getVertexCount(lvl); +var f = JU.Geodesic.getFaceVertexes(lvl); +var nFaces = Clazz_doubleToInt(f.length / 3); +var faces = JU.AU.newInt2(nFaces); +for (var i = 0, fpt = 0; i < nFaces; i++) { +faces[i] = Clazz_newIntArray(-1, [f[fpt++], f[fpt++], f[fpt++]]); +} +var vectors = new Array(vertexCount); +for (var i = 0; i < vertexCount; i++) vectors[i] = JU.Geodesic.getVertexVector(i); + +return JU.MeshSurface.newMesh(true, vectors, 0, faces, vectors, 0); +}, "~N"); +Clazz_defineMethod(c$, "setBox", +function(xyzMin, xyzMax){ +xyzMin.set(3.4028235E38, 3.4028235E38, 3.4028235E38); +xyzMax.set(-3.4028235E38, -3.4028235E38, -3.4028235E38); +for (var i = 0; i < this.vc; i++) { +var p = this.vs[i]; +if (!Float.isNaN(p.x)) JU.BoxInfo.addPoint(p, xyzMin, xyzMax, 0); +} +}, "JU.P3,JU.P3"); +Clazz_defineMethod(c$, "setBoundingBox", +function(boundBoxPoints){ +}, "~A"); +c$.getSphericalInterpolationFraction = Clazz_defineMethod(c$, "getSphericalInterpolationFraction", +function(r, valueA, valueB, d){ +var ra = Math.abs(r + valueA) / d; +var rb = Math.abs(r + valueB) / d; +r /= d; +var ra2 = ra * ra; +var q = ra2 - rb * rb + 1; +var p = 4 * (r * r - ra2); +var factor = (ra < rb ? 1 : -1); +return (((q) + factor * Math.sqrt(q * q + p)) / 2); +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Geodesic"], "JU.Normix", ["JU.BS"], function(){ +var c$ = Clazz_declareType(JU, "Normix", null); +c$.getNormixCount = Clazz_defineMethod(c$, "getNormixCount", +function(){ +return (JU.Normix.normixCount > 1 ? JU.Normix.normixCount : (JU.Normix.normixCount = JU.Geodesic.getVertexCount(3))); +}); +c$.newVertexBitSet = Clazz_defineMethod(c$, "newVertexBitSet", +function(){ +return JU.BS.newN(JU.Normix.getNormixCount()); +}); +c$.getVertexVectors = Clazz_defineMethod(c$, "getVertexVectors", +function(){ +if (JU.Normix.vertexVectors == null) JU.Normix.vertexVectors = JU.Geodesic.getVertexVectors(); +return JU.Normix.vertexVectors; +}); +c$.setInverseNormixes = Clazz_defineMethod(c$, "setInverseNormixes", +function(){ +if (JU.Normix.inverseNormixes != null) return; +JU.Normix.getNormixCount(); +JU.Normix.getVertexVectors(); +JU.Normix.inverseNormixes = Clazz_newShortArray (JU.Normix.normixCount, 0); +var bsTemp = new JU.BS(); +for (var n = JU.Normix.normixCount; --n >= 0; ) { +var v = JU.Normix.vertexVectors[n]; +JU.Normix.inverseNormixes[n] = JU.Normix.getNormix(-v.x, -v.y, -v.z, 3, bsTemp); +} +}); +c$.getInverseNormix = Clazz_defineMethod(c$, "getInverseNormix", +function(normix){ +return JU.Normix.inverseNormixes[normix]; +}, "~N"); +c$.getNeighborVertexArrays = Clazz_defineMethod(c$, "getNeighborVertexArrays", +function(){ +if (JU.Normix.neighborVertexesArrays == null) { +JU.Normix.neighborVertexesArrays = JU.Geodesic.getNeighborVertexesArrays(); +}return JU.Normix.neighborVertexesArrays; +}); +c$.getNormixV = Clazz_defineMethod(c$, "getNormixV", +function(v, bsTemp){ +return JU.Normix.getNormix(v.x, v.y, v.z, 3, bsTemp); +}, "JU.V3,JU.BS"); +c$.get2SidedNormix = Clazz_defineMethod(c$, "get2SidedNormix", +function(v, bsTemp){ +return ~JU.Normix.getNormixV(v, bsTemp); +}, "JU.V3,JU.BS"); +c$.getNormix = Clazz_defineMethod(c$, "getNormix", +function(x, y, z, geodesicLevel, bsConsidered){ +var champion; +var t; +if (z >= 0) { +champion = 0; +t = z - 1; +} else { +champion = 11; +t = z - (-1); +}bsConsidered.clearAll(); +bsConsidered.set(champion); +JU.Normix.getVertexVectors(); +JU.Normix.getNeighborVertexArrays(); +var championDist2 = x * x + y * y + t * t; +for (var lvl = 0; lvl <= geodesicLevel; ++lvl) { +var neighborVertexes = JU.Normix.neighborVertexesArrays[lvl]; +for (var offsetNeighbors = 6 * champion, i = offsetNeighbors + (champion < 12 ? 5 : 6); --i >= offsetNeighbors; ) { +var challenger = neighborVertexes[i]; +if (bsConsidered.get(challenger)) continue; +bsConsidered.set(challenger); +var v = JU.Normix.vertexVectors[challenger]; +var d; +d = v.x - x; +var d2 = d * d; +if (d2 >= championDist2) continue; +d = v.y - y; +d2 += d * d; +if (d2 >= championDist2) continue; +d = v.z - z; +d2 += d * d; +if (d2 >= championDist2) continue; +champion = challenger; +championDist2 = d2; +} +} +return champion; +}, "~N,~N,~N,~N,JU.BS"); +c$.normixCount = 0; +c$.vertexVectors = null; +c$.inverseNormixes = null; +c$.neighborVertexesArrays = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Parser", ["JU.PT"], function(){ +var c$ = Clazz_declareType(JU, "Parser", null); +c$.parseStringInfestedFloatArray = Clazz_defineMethod(c$, "parseStringInfestedFloatArray", +function(str, bs, data){ +return JU.Parser.parseFloatArrayBsData(JU.PT.getTokens(str), bs, data); +}, "~S,JU.BS,~A"); +c$.parseFloatArrayBsData = Clazz_defineMethod(c$, "parseFloatArrayBsData", +function(tokens, bs, data){ +var len = data.length; +var nTokens = tokens.length; +var n = 0; +var max = 0; +var haveBitSet = (bs != null); +for (var i = (haveBitSet ? bs.nextSetBit(0) : 0); i >= 0 && i < len && n < nTokens; i = (haveBitSet ? bs.nextSetBit(i + 1) : i + 1)) { +var f; +while (Float.isNaN(f = JU.PT.parseFloat(tokens[n++])) && n < nTokens) { +} +if (!Float.isNaN(f)) data[(max = i)] = f; +if (n == nTokens) break; +} +return max + 1; +}, "~A,JU.BS,~A"); +c$.parseFloatArrayFromMatchAndField = Clazz_defineMethod(c$, "parseFloatArrayFromMatchAndField", +function(str, bs, fieldMatch, fieldMatchColumnCount, matchData, field, fieldColumnCount, data, firstLine){ +var f; +var i = -1; +var isMatch = (matchData != null); +var lines = JU.Parser.markLines(str, (str.indexOf('\n') >= 0 ? '\n' : ';')); +var iLine = (firstLine <= 1 || firstLine >= lines.length ? 0 : firstLine - 1); +var pt = (iLine == 0 ? 0 : lines[iLine - 1]); +var nLines = lines.length; +if (data == null) data = Clazz_newFloatArray (nLines - iLine, 0); +var len = data.length; +var minLen = (fieldColumnCount <= 0 ? Math.max(field, fieldMatch) : Math.max(field + fieldColumnCount, fieldMatch + fieldMatchColumnCount) - 1); +var haveBitSet = (bs != null); +for (; iLine < nLines; iLine++) { +var line = str.substring(pt, lines[iLine]).trim(); +pt = lines[iLine]; +var tokens = (fieldColumnCount <= 0 ? JU.PT.getTokens(line) : null); +if (fieldColumnCount <= 0) { +if (tokens.length < minLen || Float.isNaN(f = JU.PT.parseFloat(tokens[field - 1]))) continue; +} else { +if (line.length < minLen || Float.isNaN(f = JU.PT.parseFloat(line.substring(field - 1, field + fieldColumnCount - 1)))) continue; +}var iData; +if (isMatch) { +iData = JU.PT.parseInt(tokens == null ? line.substring(fieldMatch - 1, fieldMatch + fieldMatchColumnCount - 1) : tokens[fieldMatch - 1]); +if (iData == -2147483648 || iData < 0 || iData >= len || (iData = matchData[iData]) < 0) continue; +if (haveBitSet) bs.set(iData); +} else { +if (haveBitSet) i = bs.nextSetBit(i + 1); + else i++; +if (i < 0 || i >= len) return data; +iData = i; +}data[iData] = f; +} +return data; +}, "~S,JU.BS,~N,~N,~A,~N,~N,~A,~N"); +c$.fixDataString = Clazz_defineMethod(c$, "fixDataString", +function(str){ +str = str.$replace(';', str.indexOf('\n') < 0 ? '\n' : ' '); +str = JU.PT.trim(str, "\n \t"); +str = JU.PT.rep(str, "\n ", "\n"); +str = JU.PT.rep(str, "\n\n", "\n"); +return str; +}, "~S"); +c$.markLines = Clazz_defineMethod(c$, "markLines", +function(data, eol){ +var nLines = 0; +for (var i = data.length; --i >= 0; ) if (data.charAt(i) == eol) nLines++; + +var lines = Clazz_newIntArray (nLines + 1, 0); +nLines = 0; +var pt = 0; +while ((pt = data.indexOf(eol, pt)) >= 0) lines[nLines++] = ++pt; + +lines[nLines] = data.length; +return lines; +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P3"], "JU.Point3fi", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mi = -1; +this.i = 0; +this.sX = 0; +this.sY = 0; +this.sZ = 0; +this.sD = -1; +Clazz_instantialize(this, arguments);}, JU, "Point3fi", JU.P3, Cloneable); +Clazz_defineMethod(c$, "copy", +function(){ +try { +return this.clone(); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.width = 0; +this.height = 0; +Clazz_instantialize(this, arguments);}, JU, "Rectangle", null); +Clazz_defineMethod(c$, "contains", +function(X, Y){ +return (X >= this.x && Y >= this.y && X - this.x < this.width && Y - this.y < this.height); +}, "~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Rgb16", ["JU.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.r = 0; +this.g = 0; +this.b = 0; +Clazz_instantialize(this, arguments);}, JU, "Rgb16", null); +/*LV!1824 unnec constructor*/c$.newI = Clazz_defineMethod(c$, "newI", +function(argb){ +var c = new JU.Rgb16(); +c.setInt(argb); +return c; +}, "~N"); +Clazz_defineMethod(c$, "setInt", +function(a){ +this.r = ((a >> 8) & 0xFF00) | 0x80; +this.g = ((a) & 0xFF00) | 0x80; +this.b = ((a << 8) & 0xFF00) | 0x80; +}, "~N"); +Clazz_defineMethod(c$, "setRgb", +function(a){ +this.r = a.r; +this.g = a.g; +this.b = a.b; +}, "JU.Rgb16"); +Clazz_defineMethod(c$, "diffDiv", +function(a, b, divisor){ +this.r = Clazz_doubleToInt((a.r - b.r) / divisor); +this.g = Clazz_doubleToInt((a.g - b.g) / divisor); +this.b = Clazz_doubleToInt((a.b - b.b) / divisor); +}, "JU.Rgb16,JU.Rgb16,~N"); +Clazz_defineMethod(c$, "setAndIncrement", +function(base, inc){ +this.r = base.r; +base.r += inc.r; +this.g = base.g; +base.g += inc.g; +this.b = base.b; +base.b += inc.b; +}, "JU.Rgb16,JU.Rgb16"); +Clazz_defineMethod(c$, "getArgb", +function(){ +return (0xFF000000 | ((this.r << 8) & 0x00FF0000) | (this.g & 0x0000FF00) | (this.b >> 8)); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return new JU.SB().append("Rgb16(").appendI(this.r).appendC(',').appendI(this.g).appendC(',').appendI(this.b).append(" -> ").appendI((this.r >> 8) & 0xFF).appendC(',').appendI((this.g >> 8) & 0xFF).appendC(',').appendI((this.b >> 8) & 0xFF).appendC(')').toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.AU", "$.V3"], "JU.Shader", ["JU.CU", "JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xLight = 0; +this.yLight = 0; +this.zLight = 0; +this.lightSource = null; +this.specularOn = true; +this.usePhongExponent = false; +this.ambientPercent = 45; +this.diffusePercent = 84; +this.specularExponent = 6; +this.specularPercent = 22; +this.specularPower = 40; +this.phongExponent = 64; +this.ambientFraction = 0; +this.diffuseFactor = 0; +this.intenseFraction = 0; +this.specularFactor = 0; +this.ashades = null; +this.ashadesGreyscale = null; +this.celOn = false; +this.celPower = 10; +this.celRGB = 0; +this.celZ = 0; +this.useLight = false; +this.sphereShadeIndexes = null; +this.seed = 0x12345679; +this.sphereShapeCache = null; +this.ellipsoidShades = null; +this.nOut = 0; +this.nIn = 0; +Clazz_instantialize(this, arguments);}, JU, "Shader", null); +Clazz_prepareFields (c$, function(){ +this.lightSource = new JU.V3(); +this.ambientFraction = this.ambientPercent / 100; +this.diffuseFactor = this.diffusePercent / 100; +this.intenseFraction = this.specularPower / 100; +this.specularFactor = this.specularPercent / 100; +this.ashades = JU.AU.newInt2(128); +this.sphereShadeIndexes = Clazz_newByteArray (65536, 0); +this.sphereShapeCache = JU.AU.newInt2(128); +}); +Clazz_makeConstructor(c$, +function(){ +this.setLightSource(-1.0, -1.0, 2.5); +}); +Clazz_defineMethod(c$, "setLightSource", +function(x, y, z){ +this.lightSource.set(x, y, z); +this.lightSource.normalize(); +this.xLight = this.lightSource.x; +this.yLight = this.lightSource.y; +this.zLight = this.lightSource.z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setCel", +function(celShading, celShadingPower, argb){ +celShading = celShading && celShadingPower != 0; +argb = JU.C.getArgb(JU.C.getBgContrast(argb)); +argb = (argb == 0xFF000000 ? 0xFF040404 : argb == -1 ? -2 : argb + 1); +if (this.celOn == celShading && this.celRGB == argb && this.celPower == celShadingPower) return; +this.celOn = celShading; +this.celPower = celShadingPower; +this.useLight = (!this.celOn || celShadingPower > 0); +this.celZ = 1 - Math.pow(2, -Math.abs(celShadingPower) / 10); +this.celRGB = argb; +this.flushCaches(); +}, "~B,~N,~N"); +Clazz_defineMethod(c$, "flushCaches", +function(){ +this.checkShades(JU.C.colixMax); +for (var i = JU.C.colixMax; --i >= 0; ) this.ashades[i] = null; + +this.calcSphereShading(); +for (var i = 128; --i >= 0; ) this.sphereShapeCache[i] = null; + +this.ellipsoidShades = null; +}); +Clazz_defineMethod(c$, "setLastColix", +function(argb, asGrey){ +JU.C.allocateColix(argb, true); +this.checkShades(2047); +if (asGrey) JU.C.setLastGrey(argb); +this.ashades[2047] = this.getShades2(argb, false); +}, "~N,~B"); +Clazz_defineMethod(c$, "getShades", +function(colix){ +this.checkShades(JU.C.colixMax); +colix &= -30721; +var shades = this.ashades[colix]; +if (shades == null) shades = this.ashades[colix] = this.getShades2(JU.C.argbs[colix], false); +return shades; +}, "~N"); +Clazz_defineMethod(c$, "getShadesG", +function(colix){ +this.checkShades(JU.C.colixMax); +colix &= -30721; +if (this.ashadesGreyscale == null) this.ashadesGreyscale = JU.AU.newInt2(this.ashades.length); +var shadesGreyscale = this.ashadesGreyscale[colix]; +if (shadesGreyscale == null) shadesGreyscale = this.ashadesGreyscale[colix] = this.getShades2(JU.C.argbs[colix], true); +return shadesGreyscale; +}, "~N"); +Clazz_defineMethod(c$, "checkShades", +function(n){ +if (this.ashades != null && this.ashades.length >= n) return; +if (n == 2047) n++; +this.ashades = JU.AU.arrayCopyII(this.ashades, n); +if (this.ashadesGreyscale != null) this.ashadesGreyscale = JU.AU.arrayCopyII(this.ashadesGreyscale, n); +}, "~N"); +Clazz_defineMethod(c$, "getShades2", +function(rgb, greyScale){ +var shades = Clazz_newIntArray (64, 0); +if (rgb == 0) return shades; +var red0 = ((rgb >> 16) & 0xFF); +var grn0 = ((rgb >> 8) & 0xFF); +var blu0 = (rgb & 0xFF); +var red = 0; +var grn = 0; +var blu = 0; +var f = this.ambientFraction; +while (true) { +red = red0 * f + 0.5; +grn = grn0 * f + 0.5; +blu = blu0 * f + 0.5; +if (f > 0 && red < 4 && grn < 4 && blu < 4) { +red0++; +grn0++; +blu0++; +if (f < 0.1) f += 0.1; +rgb = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red0)), Clazz_doubleToInt(Math.floor(grn0)), Clazz_doubleToInt(Math.floor(blu0))); +continue; +}break; +} +var i = 0; +f = (1 - f) / 52; +var redStep = red0 * f; +var grnStep = grn0 * f; +var bluStep = blu0 * f; +if (this.celOn) { +var max = 32; +var _rgb = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red)), Clazz_doubleToInt(Math.floor(grn)), Clazz_doubleToInt(Math.floor(blu))); +if (this.celPower >= 0) for (; i < max; ++i) shades[i] = _rgb; + +red += redStep * max; +grn += grnStep * max; +blu += bluStep * max; +_rgb = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red)), Clazz_doubleToInt(Math.floor(grn)), Clazz_doubleToInt(Math.floor(blu))); +for (; i < 64; i++) shades[i] = _rgb; + +shades[0] = shades[1] = this.celRGB; +} else { +for (; i < 52; ++i) { +shades[i] = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red)), Clazz_doubleToInt(Math.floor(grn)), Clazz_doubleToInt(Math.floor(blu))); +red += redStep; +grn += grnStep; +blu += bluStep; +} +shades[i++] = rgb; +f = this.intenseFraction / (64 - i); +redStep = (255.5 - red) * f; +grnStep = (255.5 - grn) * f; +bluStep = (255.5 - blu) * f; +for (; i < 64; i++) { +red += redStep; +grn += grnStep; +blu += bluStep; +shades[i] = JU.CU.rgb(Clazz_doubleToInt(Math.floor(red)), Clazz_doubleToInt(Math.floor(grn)), Clazz_doubleToInt(Math.floor(blu))); +} +}if (greyScale) for (; --i >= 0; ) shades[i] = JU.CU.toFFGGGfromRGB(shades[i]); + +return shades; +}, "~N,~B"); +Clazz_defineMethod(c$, "getShadeIndex", +function(x, y, z){ +var magnitude = Math.sqrt(x * x + y * y + z * z); +return Math.round(this.getShadeF((x / magnitude), (y / magnitude), (z / magnitude)) * 63); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeB", +function(x, y, z){ +return Math.round(this.getShadeF(x, y, z) * 63); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeFp8", +function(x, y, z){ +var magnitude = Math.sqrt(x * x + y * y + z * z); +return Clazz_doubleToInt(Math.floor(this.getShadeF((x / magnitude), (y / magnitude), (z / magnitude)) * 63 * (256))); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeF", +function(x, y, z){ +var NdotL = (this.useLight ? x * this.xLight + y * this.yLight + z * this.zLight : z); +if (NdotL <= 0) return 0; +var intensity = NdotL * this.diffuseFactor; +if (this.specularOn) { +var k_specular = 2 * NdotL * z - this.zLight; +if (k_specular > 0) { +if (this.usePhongExponent) { +k_specular = Math.pow(k_specular, this.phongExponent); +} else { +for (var n = this.specularExponent; --n >= 0 && k_specular > .0001; ) k_specular *= k_specular; + +}intensity += k_specular * this.specularFactor; +}}return (this.celOn && z < this.celZ ? 0 : intensity > 1 ? 1 : intensity); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShadeN", +function(x, y, z, r){ +var fp8ShadeIndex = Clazz_doubleToInt(Math.floor(this.getShadeF(x / r, y / r, z / r) * 63 * (256))); +var shadeIndex = fp8ShadeIndex >> 8; +if (!this.useLight) return shadeIndex; +if ((fp8ShadeIndex & 0xFF) > this.nextRandom8Bit()) ++shadeIndex; +var random16bit = this.seed & 0xFFFF; +if (random16bit < 21845 && shadeIndex > 0) --shadeIndex; + else if (random16bit > 43690 && shadeIndex < 63) ++shadeIndex; +return shadeIndex; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "calcSphereShading", +function(){ +var xF = -127.5; +var r2 = 16900; +for (var i = 0; i < 256; ++xF, ++i) { +var yF = -127.5; +var xF2 = xF * xF; +for (var j = 0; j < 256; ++yF, ++j) { +var shadeIndex = 0; +var z2 = r2 - xF2 - yF * yF; +if (z2 > 0) { +var z = Math.sqrt(z2); +shadeIndex = this.getShadeN(xF, yF, z, 130); +}this.sphereShadeIndexes[(j << 8) + i] = shadeIndex; +} +} +}); +Clazz_defineMethod(c$, "nextRandom8Bit", +function(){ +var t = this.seed; +this.seed = t = ((t << 16) + (t << 1) + t) & 0x7FFFFFFF; +return t >> 23; +}); +Clazz_defineMethod(c$, "getEllipsoidShade", +function(x, y, z, radius, mDeriv){ +var tx = mDeriv.m00 * x + mDeriv.m01 * y + mDeriv.m02 * z + mDeriv.m03; +var ty = mDeriv.m10 * x + mDeriv.m11 * y + mDeriv.m12 * z + mDeriv.m13; +var tz = mDeriv.m20 * x + mDeriv.m21 * y + mDeriv.m22 * z + mDeriv.m23; +var f = Math.min(radius / 2, 45) / Math.sqrt(tx * tx + ty * ty + tz * tz); +var i = Clazz_floatToInt(-tx * f); +var j = Clazz_floatToInt(-ty * f); +var k = Clazz_floatToInt(tz * f); +var outside = i < -20 || i >= 20 || j < -20 || j >= 20 || k < 0 || k >= 40; +if (outside) { +while (i % 2 == 0 && j % 2 == 0 && k % 2 == 0 && i + j + k > 0) { +i >>= 1; +j >>= 1; +k >>= 1; +} +outside = i < -20 || i >= 20 || j < -20 || j >= 20 || k < 0 || k >= 40; +}if (outside) this.nOut++; + else this.nIn++; +return (outside ? this.getShadeIndex(i, j, k) : this.ellipsoidShades[i + 20][j + 20][k]); +}, "~N,~N,~N,~N,JU.M4"); +Clazz_defineMethod(c$, "createEllipsoidShades", +function(){ +this.ellipsoidShades = Clazz_newByteArray (40, 40, 40, 0); +for (var ii = 0; ii < 40; ii++) for (var jj = 0; jj < 40; jj++) for (var kk = 0; kk < 40; kk++) this.ellipsoidShades[ii][jj][kk] = this.getShadeIndex(ii - 20, jj - 20, kk); + + + +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JV.Viewer"], "JU.SimpleUnitCell", ["JU.AU", "$.M4", "$.P3", "$.P4", "$.PT", "$.V3", "JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.unitCellParams = null; +this.slop = 0; +this.matrixCartesianToFractional = null; +this.matrixFractionalToCartesian = null; +this.matrixCtoFNoOffset = null; +this.matrixFtoCNoOffset = null; +this.volume = 0; +this.dimension = 3; +this.fractionalOrigin = null; +this.na = 0; +this.nb = 0; +this.nc = 0; +this.a = 0; +this.b = 0; +this.c = 0; +this.alpha = 0; +this.beta = 0; +this.gamma = 0; +this.cosAlpha = 0; +this.sinAlpha = 0; +this.cosBeta = 0; +this.sinBeta = 0; +this.cosGamma = 0; +this.sinGamma = 0; +this.cA_ = 0; +this.cB_ = 0; +this.a_ = 0; +this.b_ = 0; +this.c_ = 0; +Clazz_instantialize(this, arguments);}, JU, "SimpleUnitCell", null); +Clazz_prepareFields (c$, function(){ +this.slop = (JV.Viewer.isHighPrecision ? 1.0E-12 : 1.0E-4); +}); +Clazz_makeConstructor(c$, +function(){ +this.fractionalOrigin = new JU.P3(); +}); +Clazz_defineMethod(c$, "getPrecision", +function(){ +return this.slop; +}); +Clazz_defineMethod(c$, "setPrecision", +function(slop){ +this.unitCellParams[26] = this.slop = (!Float.isNaN(slop) ? slop : !Float.isNaN(this.unitCellParams[26]) ? this.unitCellParams[26] : JV.Viewer.isHighPrecision ? 1.0E-12 : 1.0E-4); +}, "~N"); +Clazz_defineMethod(c$, "isSupercell", +function(){ +return (this.na > 1 || this.nb > 1 || this.nc > 1); +}); +c$.isValid = Clazz_defineMethod(c$, "isValid", +function(parameters){ +return (parameters != null && (parameters[0] > 0 || parameters.length > 14 && !Float.isNaN(parameters[14]))); +}, "~A"); +c$.newA = Clazz_defineMethod(c$, "newA", +function(params){ +var c = new JU.SimpleUnitCell(); +c.init(params); +return c; +}, "~A"); +c$.getDimensionFromParams = Clazz_defineMethod(c$, "getDimensionFromParams", +function(params){ +return (params[0] <= 0 ? 3 : params[1] < 0 ? 1 : params[2] < 0 ? 2 : 3); +}, "~A"); +Clazz_defineMethod(c$, "init", +function(params){ +if (params == null) params = Clazz_newFloatArray(-1, [1, 1, 1, 90, 90, 90]); +if (!JU.SimpleUnitCell.isValid(params)) return; +this.unitCellParams = JU.SimpleUnitCell.newParams(params, NaN); +var rotateHex = false; +this.dimension = JU.SimpleUnitCell.getDimensionFromParams(params); +this.a = params[0]; +this.b = params[1]; +this.c = params[2]; +this.alpha = params[3]; +this.beta = params[4]; +this.gamma = params[5]; +if (this.gamma == -1 && this.c > 0) { +rotateHex = true; +this.gamma = 120; +}if (params.length > 26) { +if (Float.isNaN(params[26])) { +params[26] = this.slop; +} else { +this.slop = params[26]; +}}var fa = this.na = Math.max(1, params.length > 24 && !Float.isNaN(params[22]) ? Clazz_floatToInt(params[22]) : 1); +var fb = this.nb = Math.max(1, params.length > 24 && !Float.isNaN(params[23]) ? Clazz_floatToInt(params[23]) : 1); +var fc = this.nc = Math.max(1, params.length > 24 && !Float.isNaN(params[24]) ? Clazz_floatToInt(params[24]) : 1); +if (params.length > 25 && !Float.isNaN(params[25])) { +var fScale = params[25]; +if (fScale > 0) { +fa *= fScale; +fb *= fScale; +fc *= fScale; +}} else { +fa = fb = fc = 1; +}if (this.a <= 0 && this.c <= 0) { +var va = JU.SimpleUnitCell.newV(params, 6); +var vb = JU.SimpleUnitCell.newV(params, 9); +var vc = JU.SimpleUnitCell.newV(params, 12); +this.setABC(va, vb, vc); +if (this.c < 0) { +var n = JU.AU.arrayCopyF(params, -1); +if (this.b < 0) { +vb.set(0, 0, 1); +vb.cross(vb, va); +if (vb.length() < 0.001) vb.set(0, 1, 0); +vb.normalize(); +n[9] = vb.x; +n[10] = vb.y; +n[11] = vb.z; +}if (this.c < 0) { +vc.cross(va, vb); +vc.normalize(); +n[12] = vc.x; +n[13] = vc.y; +n[14] = vc.z; +}params = n; +}}this.a *= fa; +if (this.b <= 0) { +this.b = this.c = 1; +} else if (this.c <= 0) { +this.c = 1; +this.b *= fb; +} else { +this.b *= fb; +this.c *= fc; +}this.setCellParams(); +if (params.length > 21 && !Float.isNaN(params[21])) { +var scaleMatrix = Clazz_newFloatArray (16, 0); +for (var i = 0; i < 16; i++) { +var f; +switch (i % 4) { +case 0: +f = fa; +break; +case 1: +f = fb; +break; +case 2: +f = fc; +break; +default: +f = 1; +break; +} +scaleMatrix[i] = params[6 + i] * f; +} +this.matrixCartesianToFractional = JU.M4.newA16(scaleMatrix); +this.matrixCartesianToFractional.getTranslation(this.fractionalOrigin); +this.matrixFractionalToCartesian = JU.M4.newM4(this.matrixCartesianToFractional).invert(); +if (params[0] == 1) this.setParamsFromMatrix(); +} else if (params.length > 14 && !Float.isNaN(params[14])) { +var m = this.matrixFractionalToCartesian = new JU.M4(); +m.setColumn4(0, params[6] * fa, params[7] * fa, params[8] * fa, 0); +m.setColumn4(1, params[9] * fb, params[10] * fb, params[11] * fb, 0); +m.setColumn4(2, params[12] * fc, params[13] * fc, params[14] * fc, 0); +if (params.length > 17 && !Float.isNaN(params[17])) { +m.setColumn4(3, params[15], params[16], params[17], 1); +} else { +m.setColumn4(3, 0, 0, 0, 1); +}this.matrixCartesianToFractional = JU.M4.newM4(this.matrixFractionalToCartesian).invert(); +} else { +var m = this.matrixFractionalToCartesian = new JU.M4(); +if (rotateHex) { +m.setColumn4(0, (-this.b * this.cosGamma), (-this.b * this.sinGamma), 0, 0); +m.setColumn4(1, (-this.b * this.cosGamma), (this.b * this.sinGamma), 0, 0); +} else { +m.setColumn4(0, this.a, 0, 0, 0); +m.setColumn4(1, (this.b * this.cosGamma), (this.b * this.sinGamma), 0, 0); +}m.setColumn4(2, (this.c * this.cosBeta), (this.c * (this.cosAlpha - this.cosBeta * this.cosGamma) / this.sinGamma), (this.volume / (this.a * this.b * this.sinGamma)), 0); +m.setColumn4(3, 0, 0, 0, 1); +this.matrixCartesianToFractional = JU.M4.newM4(this.matrixFractionalToCartesian).invert(); +}this.matrixCtoFNoOffset = this.matrixCartesianToFractional; +this.matrixFtoCNoOffset = this.matrixFractionalToCartesian; +}, "~A"); +c$.newV = Clazz_defineMethod(c$, "newV", +function(p, i){ +return JU.V3.new3(p[i++], p[i++], p[i]); +}, "~A,~N"); +c$.newParams = Clazz_defineMethod(c$, "newParams", +function(params, slop){ +var p = Clazz_newFloatArray (27, 0); +var n = params.length; +for (var i = 0; i < 27; i++) p[i] = (i < n ? params[i] : NaN); + +if (n < 27) p[26] = slop; +return p; +}, "~A,~N"); +c$.addVectors = Clazz_defineMethod(c$, "addVectors", +function(params){ +var c = JU.SimpleUnitCell.newA(params); +var m = c.matrixFractionalToCartesian; +for (var i = 0; i < 9; i++) params[6 + i] = m.getElement(i % 3, Clazz_doubleToInt(i / 3)); + +}, "~A"); +Clazz_defineMethod(c$, "setParamsFromMatrix", +function(){ +var va = JU.V3.new3(1, 0, 0); +var vb = JU.V3.new3(0, 1, 0); +var vc = JU.V3.new3(0, 0, 1); +this.matrixFractionalToCartesian.rotate(va); +this.matrixFractionalToCartesian.rotate(vb); +this.matrixFractionalToCartesian.rotate(vc); +this.setABC(va, vb, vc); +this.setCellParams(); +}); +Clazz_defineMethod(c$, "setABC", +function(va, vb, vc){ +JU.SimpleUnitCell.fillParams(va, vb, vc, this.unitCellParams); +var p = this.unitCellParams; +this.a = p[0]; +this.b = p[1]; +this.c = p[2]; +this.alpha = p[3]; +this.beta = p[4]; +this.gamma = p[5]; +}, "JU.V3,JU.V3,JU.V3"); +c$.fillParams = Clazz_defineMethod(c$, "fillParams", +function(va, vb, vc, p){ +if (va == null) { +va = JU.SimpleUnitCell.newV(p, 6); +vb = JU.SimpleUnitCell.newV(p, 9); +vc = JU.SimpleUnitCell.newV(p, 12); +}var a = va.length(); +var b = vb.length(); +var c = vc.length(); +if (a == 0) return; +if (b == 0) b = c = -1; + else if (c == 0) c = -1; +p[0] = a; +p[1] = b; +p[2] = c; +p[3] = (b < 0 || c < 0 ? 90 : vb.angle(vc) / 0.017453292519943295); +p[4] = (c < 0 ? 90 : va.angle(vc) / 0.017453292519943295); +p[5] = (b < 0 ? 90 : va.angle(vb) / 0.017453292519943295); +}, "JU.V3,JU.V3,JU.V3,~A"); +Clazz_defineMethod(c$, "setCellParams", +function(){ +this.cosAlpha = Math.cos(0.017453292519943295 * this.alpha); +this.sinAlpha = Math.sin(0.017453292519943295 * this.alpha); +this.cosBeta = Math.cos(0.017453292519943295 * this.beta); +this.sinBeta = Math.sin(0.017453292519943295 * this.beta); +this.cosGamma = Math.cos(0.017453292519943295 * this.gamma); +this.sinGamma = Math.sin(0.017453292519943295 * this.gamma); +var unitVolume = Math.sqrt(this.sinAlpha * this.sinAlpha + this.sinBeta * this.sinBeta + this.sinGamma * this.sinGamma + 2.0 * this.cosAlpha * this.cosBeta * this.cosGamma - 2); +this.volume = this.a * this.b * this.c * unitVolume; +this.cA_ = (this.cosAlpha - this.cosBeta * this.cosGamma) / this.sinGamma; +this.cB_ = unitVolume / this.sinGamma; +this.a_ = this.b * this.c * this.sinAlpha / this.volume; +this.b_ = this.a * this.c * this.sinBeta / this.volume; +this.c_ = this.a * this.b * this.sinGamma / this.volume; +}); +Clazz_defineMethod(c$, "getFractionalOrigin", +function(){ +return this.fractionalOrigin; +}); +Clazz_defineMethod(c$, "toSupercell", +function(fpt){ +fpt.x /= this.na; +fpt.y /= this.nb; +fpt.z /= this.nc; +return fpt; +}, "JU.P3"); +Clazz_defineMethod(c$, "toCartesian", +function(pt, ignoreOffset){ +if (this.matrixFractionalToCartesian != null) (ignoreOffset ? this.matrixFtoCNoOffset : this.matrixFractionalToCartesian).rotTrans(pt); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "toFractionalM", +function(m){ +if (this.matrixCartesianToFractional == null) return; +m.mul(this.matrixFractionalToCartesian); +m.mul2(this.matrixCartesianToFractional, m); +}, "JU.M4"); +Clazz_defineMethod(c$, "toFractional", +function(pt, ignoreOffset){ +if (this.matrixCartesianToFractional == null) return; +(ignoreOffset ? this.matrixCtoFNoOffset : this.matrixCartesianToFractional).rotTrans(pt); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "isPolymer", +function(){ +return (this.dimension == 1); +}); +Clazz_defineMethod(c$, "isSlab", +function(){ +return (this.dimension == 2); +}); +Clazz_defineMethod(c$, "getUnitCellParams", +function(){ +return this.unitCellParams; +}); +Clazz_defineMethod(c$, "getUnitCellAsArray", +function(vectorsOnly){ +var m = this.matrixFractionalToCartesian; +return (vectorsOnly ? Clazz_newFloatArray(-1, [m.m00, m.m10, m.m20, m.m01, m.m11, m.m21, m.m02, m.m12, m.m22]) : Clazz_newFloatArray(-1, [this.a, this.b, this.c, this.alpha, this.beta, this.gamma, m.m00, m.m10, m.m20, m.m01, m.m11, m.m21, m.m02, m.m12, m.m22, this.dimension, this.volume])); +}, "~B"); +Clazz_defineMethod(c$, "getInfo", +function(infoType){ +switch (infoType) { +case 0: +return this.a; +case 1: +return this.b; +case 2: +return this.c; +case 3: +return this.alpha; +case 4: +return this.beta; +case 5: +return this.gamma; +case 6: +return this.dimension; +case 7: +return (JU.SimpleUnitCell.isHexagonal(this.unitCellParams) ? 1 : 0); +case 8: +return (JU.SimpleUnitCell.isRhombohedral(this.unitCellParams) ? 1 : 0); +} +return NaN; +}, "~N"); +c$.getReciprocal = Clazz_defineMethod(c$, "getReciprocal", +function(abc, ret, scale){ +var off = (abc.length == 4 ? 1 : 0); +var rabc = new Array(4); +rabc[0] = (off == 1 ? JU.P3.newP(abc[0]) : new JU.P3()); +if (scale == 0) scale = (6.283185307179586); +for (var i = 0; i < 3; i++) { +var v = rabc[i + 1] = new JU.P3(); +v.cross(abc[((i + 1) % 3) + off], abc[((i + 2) % 3) + off]); +var vol = abc[i + off].dot(v); +if (scale == -1) scale = Math.sqrt(vol); +v.scale(scale / vol); +} +if (ret == null) return rabc; +for (var i = 0; i < 4; i++) { +ret[i] = rabc[i]; +} +return ret; +}, "~A,~A,~N"); +c$.setAbc = Clazz_defineMethod(c$, "setAbc", +function(abcabg, params, ucnew){ +if (abcabg != null) { +if (params == null) params = Clazz_newFloatArray (6, 0); +var tokens = JU.PT.split(abcabg.$replace(',', '='), "="); +if (tokens.length >= 12) for (var i = 0; i < 6; i++) params[i] = JU.PT.parseFloat(tokens[i * 2 + 1]); + +}if (ucnew == null) return null; +return JU.SimpleUnitCell.setAbcFromParams(params, ucnew); +}, "~S,~A,~A"); +c$.setAbcFromParams = Clazz_defineMethod(c$, "setAbcFromParams", +function(params, ucnew){ +var f = JU.SimpleUnitCell.newA(params).getUnitCellAsArray(true); +ucnew[1].set(f[0], f[1], f[2]); +ucnew[2].set(f[3], f[4], f[5]); +ucnew[3].set(f[6], f[7], f[8]); +return ucnew; +}, "~A,~A"); +Clazz_defineMethod(c$, "unitizeDim", +function(dimension, pt){ +switch (dimension) { +case 3: +pt.z = JU.SimpleUnitCell.unitizeX(pt.z, this.slop); +case 2: +pt.y = JU.SimpleUnitCell.unitizeX(pt.y, this.slop); +case 1: +pt.x = JU.SimpleUnitCell.unitizeX(pt.x, this.slop); +} +}, "~N,JU.T3"); +c$.unitizeDimRnd = Clazz_defineMethod(c$, "unitizeDimRnd", +function(dimension, pt, slop){ +switch (dimension) { +case 3: +pt.z = JU.SimpleUnitCell.unitizeXRnd(pt.z, slop); +case 2: +pt.y = JU.SimpleUnitCell.unitizeXRnd(pt.y, slop); +case 1: +pt.x = JU.SimpleUnitCell.unitizeXRnd(pt.x, slop); +} +}, "~N,JU.T3,~N"); +c$.unitizeX = Clazz_defineMethod(c$, "unitizeX", +function(x, slop){ +x = (x - Math.floor(x)); +if (x > 1 - slop || x < slop) x = 0; +return x; +}, "~N,~N"); +c$.unitizeXRnd = Clazz_defineMethod(c$, "unitizeXRnd", +function(x, slop){ +x = (x - Math.floor(x)); +if (x > 1 - slop || x < slop) x = 0; +return x; +}, "~N,~N"); +Clazz_defineMethod(c$, "twelfthsOf", +function(f){ +if (f == 0) return 0; +f = Math.abs(f * 12); +var i = Math.round(f); +return (i <= 12 && Math.abs(f - i) < this.slop * 12 ? i : -1); +}, "~N"); +Clazz_defineMethod(c$, "twelfthify", +function(pt){ +switch (this.dimension) { +case 3: +pt.z = this.setTwelfths(pt.z); +case 2: +pt.y = this.setTwelfths(pt.y); +case 1: +pt.x = this.setTwelfths(pt.x); +break; +} +}, "JU.P3"); +Clazz_defineMethod(c$, "setTwelfths", +function(x){ +var i = this.twelfthsOf(x); +return (i >= 0 ? i / 12 : x); +}, "~N"); +c$.ijkToPoint3f = Clazz_defineMethod(c$, "ijkToPoint3f", +function(nnn, cell, offset, kcode){ +var f = (nnn > 1000000000 ? 1000 : nnn > 1000000 ? 100 : 10); +var f2 = f * f; +offset -= (offset >= 0 ? Clazz_doubleToInt(5 * f / 10) : offset); +cell.x = ((Clazz_doubleToInt(nnn / f2)) % f) + offset; +cell.y = Clazz_doubleToInt((nnn % f2) / f) + offset; +cell.z = (kcode == 0 ? nnn % f : (offset == -500 ? Clazz_doubleToInt(kcode / f) : kcode) % f) + offset; +}, "~N,JU.P3,~N,~N"); +c$.ptToIJK = Clazz_defineMethod(c$, "ptToIJK", +function(pt, scale){ +if (pt.x <= 5 && pt.y <= 5 && pt.z <= 5) { +return JU.P4.new4(555, (pt.x + 4) * 100 + (pt.y + 4) * 10 + pt.z + 4, scale, 0); +}var i555 = 1500500500; +return JU.P4.new4(i555, i555 + pt.x * 1000000 + pt.y * 1000 + pt.z, scale, 1500500 + pt.z); +}, "JU.T3,~N"); +c$.escapeMultiplier = Clazz_defineMethod(c$, "escapeMultiplier", +function(pt){ +if (Clazz_instanceOf(pt,"JU.P4")) { +var pt4 = pt; +var x = Clazz_doubleToInt(Math.floor(pt4.x / 1000)) * 1000 + Clazz_doubleToInt(Math.floor(pt4.w / 1000)) - 1000; +var y = Clazz_doubleToInt(Math.floor(pt4.y / 1000)) * 1000 + Clazz_doubleToInt(Math.floor(pt4.w)) % 1000; +return "{" + x + " " + y + " " + pt.z + "}"; +}return JU.Escape.eP(pt); +}, "JU.T3"); +c$.setMinMaxLatticeParameters = Clazz_defineMethod(c$, "setMinMaxLatticeParameters", +function(dimension, minXYZ, maxXYZ, kcode){ +if (maxXYZ.x <= maxXYZ.y && maxXYZ.y >= 555) { +var pt = new JU.P3(); +JU.SimpleUnitCell.ijkToPoint3f(maxXYZ.x, pt, 0, kcode); +minXYZ.x = Clazz_floatToInt(pt.x); +minXYZ.y = Clazz_floatToInt(pt.y); +minXYZ.z = Clazz_floatToInt(pt.z); +JU.SimpleUnitCell.ijkToPoint3f(maxXYZ.y, pt, 1, kcode); +maxXYZ.x = Clazz_floatToInt(pt.x); +maxXYZ.y = Clazz_floatToInt(pt.y); +maxXYZ.z = Clazz_floatToInt(pt.z); +}switch (dimension) { +case 1: +minXYZ.y = 0; +maxXYZ.y = 1; +case 2: +minXYZ.z = 0; +maxXYZ.z = 1; +} +}, "~N,JU.P3i,JU.P3i,~N"); +c$.isHexagonal = Clazz_defineMethod(c$, "isHexagonal", +function(params){ +return (JU.SimpleUnitCell.approx0(params[0] - params[1]) && JU.SimpleUnitCell.approx0(params[3] - 90) && JU.SimpleUnitCell.approx0(params[4] - 90) && (JU.SimpleUnitCell.approx0(params[5] - 120) || params[5] == -1)); +}, "~A"); +c$.isRhombohedral = Clazz_defineMethod(c$, "isRhombohedral", +function(params){ +return (JU.SimpleUnitCell.approx0(params[0] - params[1]) && JU.SimpleUnitCell.approx0(params[1] - params[2]) && !JU.SimpleUnitCell.approx0(params[3] - 90) && JU.SimpleUnitCell.approx0(params[3] - params[4]) && JU.SimpleUnitCell.approx0(params[4] - params[5])); +}, "~A"); +c$.approx0 = Clazz_defineMethod(c$, "approx0", +function(f){ +return (Math.abs(f) < 0.001); +}, "~N"); +c$.getCellRange = Clazz_defineMethod(c$, "getCellRange", +function(fset, cellRange){ +var t3w = (Clazz_instanceOf(fset,"JU.T4") ? Clazz_floatToInt((fset).w) : 0); +JU.SimpleUnitCell.ijkToPoint3f(Clazz_floatToInt(fset.x), cellRange[0], 0, t3w); +JU.SimpleUnitCell.ijkToPoint3f(Clazz_floatToInt(fset.y), cellRange[1], 1, t3w); +if (fset.z < 0) { +cellRange[0].scale(-1 / fset.z); +cellRange[1].scale(-1 / fset.z); +}return t3w; +}, "JU.T3,~A"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.a + " " + this.b + " " + this.c + " " + this.alpha + " " + this.beta + " " + this.gamma + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.TempArray", ["JU.P3", "$.P3i"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.lengthsFreePoints = null; +this.freePoints = null; +this.lengthsFreeScreens = null; +this.freeScreens = null; +this.lengthsFreeEnum = null; +this.freeEnum = null; +Clazz_instantialize(this, arguments);}, JU, "TempArray", null); +Clazz_prepareFields (c$, function(){ +this.lengthsFreePoints = Clazz_newIntArray (6, 0); +this.freePoints = new Array(6); +this.lengthsFreeScreens = Clazz_newIntArray (6, 0); +this.freeScreens = new Array(6); +this.lengthsFreeEnum = Clazz_newIntArray (2, 0); +this.freeEnum = new Array(2); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.clearTempPoints(); +this.clearTempScreens(); +}); +c$.findBestFit = Clazz_defineMethod(c$, "findBestFit", +function(size, lengths){ +var iFit = -1; +var fitLength = 2147483647; +for (var i = lengths.length; --i >= 0; ) { +var freeLength = lengths[i]; +if (freeLength >= size && freeLength < fitLength) { +fitLength = freeLength; +iFit = i; +}} +if (iFit >= 0) lengths[iFit] = 0; +return iFit; +}, "~N,~A"); +c$.findShorter = Clazz_defineMethod(c$, "findShorter", +function(size, lengths){ +for (var i = lengths.length; --i >= 0; ) if (lengths[i] == 0) { +lengths[i] = size; +return i; +} +var iShortest = 0; +var shortest = lengths[0]; +for (var i = lengths.length; --i > 0; ) if (lengths[i] < shortest) { +shortest = lengths[i]; +iShortest = i; +} +if (shortest < size) { +lengths[iShortest] = size; +return iShortest; +}return -1; +}, "~N,~A"); +Clazz_defineMethod(c$, "clearTempPoints", +function(){ +for (var i = 0; i < 6; i++) { +this.lengthsFreePoints[i] = 0; +this.freePoints[i] = null; +} +}); +Clazz_defineMethod(c$, "allocTempPoints", +function(size){ +var tempPoints; +var iFit = JU.TempArray.findBestFit(size, this.lengthsFreePoints); +if (iFit > 0) { +tempPoints = this.freePoints[iFit]; +} else { +tempPoints = new Array(size); +for (var i = size; --i >= 0; ) tempPoints[i] = new JU.P3(); + +}return tempPoints; +}, "~N"); +Clazz_defineMethod(c$, "freeTempPoints", +function(tempPoints){ +for (var i = 0; i < this.freePoints.length; i++) if (this.freePoints[i] === tempPoints) { +this.lengthsFreePoints[i] = tempPoints.length; +return; +} +var iFree = JU.TempArray.findShorter(tempPoints.length, this.lengthsFreePoints); +if (iFree >= 0) this.freePoints[iFree] = tempPoints; +}, "~A"); +Clazz_defineMethod(c$, "clearTempScreens", +function(){ +for (var i = 0; i < 6; i++) { +this.lengthsFreeScreens[i] = 0; +this.freeScreens[i] = null; +} +}); +Clazz_defineMethod(c$, "allocTempScreens", +function(size){ +var tempScreens; +var iFit = JU.TempArray.findBestFit(size, this.lengthsFreeScreens); +if (iFit > 0) { +tempScreens = this.freeScreens[iFit]; +} else { +tempScreens = new Array(size); +for (var i = size; --i >= 0; ) tempScreens[i] = new JU.P3i(); + +}return tempScreens; +}, "~N"); +Clazz_defineMethod(c$, "freeTempScreens", +function(tempScreens){ +for (var i = 0; i < this.freeScreens.length; i++) if (this.freeScreens[i] === tempScreens) { +this.lengthsFreeScreens[i] = tempScreens.length; +return; +} +var iFree = JU.TempArray.findShorter(tempScreens.length, this.lengthsFreeScreens); +if (iFree >= 0) this.freeScreens[iFree] = tempScreens; +}, "~A"); +Clazz_defineMethod(c$, "allocTempEnum", +function(size){ +var tempEnum; +var iFit = JU.TempArray.findBestFit(size, this.lengthsFreeEnum); +if (iFit > 0) { +tempEnum = this.freeEnum[iFit]; +} else { +tempEnum = new Array(size); +}return tempEnum; +}, "~N"); +Clazz_defineMethod(c$, "freeTempEnum", +function(tempEnum){ +for (var i = 0; i < this.freeEnum.length; i++) if (this.freeEnum[i] === tempEnum) { +this.lengthsFreeEnum[i] = tempEnum.length; +return; +} +var iFree = JU.TempArray.findShorter(tempEnum.length, this.lengthsFreeEnum); +if (iFree >= 0) this.freeEnum[iFree] = tempEnum; +}, "~A"); +c$.getSlabWithinRange = Clazz_defineMethod(c$, "getSlabWithinRange", +function(min, max){ +return Clazz_newArray(-1, [Integer.$valueOf(1073742114), Clazz_newArray(-1, [Float.$valueOf(min), Float.$valueOf(max)]), Boolean.FALSE, null]); +}, "~N,~N"); +c$.getSlabObjectType = Clazz_defineMethod(c$, "getSlabObjectType", +function(tok, data, isCap, colorData){ +return Clazz_newArray(-1, [Integer.$valueOf(tok), data, Boolean.$valueOf(isCap), colorData]); +}, "~N,~O,~B,~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_declareType(JU, "Txt", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.V3"], "JU.Vibration", ["JU.P3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modDim = -1; +this.modScale = NaN; +this.showTrace = false; +this.trace = null; +this.tracePt = 0; +Clazz_instantialize(this, arguments);}, JU, "Vibration", JU.V3); +Clazz_defineMethod(c$, "setCalcPoint", +function(pt, t456, scale, modulationScale){ +switch (this.modDim) { +case -2: +case -3: +break; +default: +pt.scaleAdd2((Math.cos(t456.x * 6.283185307179586) * scale), this, pt); +break; +} +return pt; +}, "JU.T3,JU.T3,~N,~N"); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("vibVector", JU.V3.newV(this)); +info.put("vibType", (this.modDim == -2 ? "spin" : this.modDim == -1 ? "vib" : "mod")); +}, "java.util.Map"); +Clazz_overrideMethod(c$, "clone", +function(){ +var v = new JU.Vibration(); +v.setT(this); +v.modDim = this.modDim; +return v; +}); +Clazz_defineMethod(c$, "setXYZ", +function(vib){ +this.setT(vib); +}, "JU.T3"); +Clazz_defineMethod(c$, "setType", +function(type){ +this.modDim = type; +return this; +}, "~N"); +Clazz_defineMethod(c$, "isNonzero", +function(){ +return this.x != 0 || this.y != 0 || this.z != 0; +}); +Clazz_defineMethod(c$, "getOccupancy100", +function(isTemp){ +return -2147483648; +}, "~B"); +Clazz_defineMethod(c$, "startTrace", +function(n){ +this.trace = new Array(n); +this.tracePt = n; +}, "~N"); +Clazz_defineMethod(c$, "addTracePt", +function(n, ptNew){ +if (this.trace == null || n == 0 || n != this.trace.length) this.startTrace(n); +if (ptNew != null && n > 2) { +if (--this.tracePt <= 0) { +var p0 = this.trace[this.trace.length - 1]; +for (var i = this.trace.length; --i >= 1; ) this.trace[i] = this.trace[i - 1]; + +this.trace[1] = p0; +this.tracePt = 1; +}var p = this.trace[this.tracePt]; +if (p == null) p = this.trace[this.tracePt] = new JU.P3(); +p.setT(ptNew); +}return this.trace; +}, "~N,JU.Point3fi"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["J.api.EventManager", "JU.Rectangle", "JV.MouseState"], ["JV.MotionPoint", "$.ActionManager", "$.Gesture"], ["JU.AU", "$.PT", "J.api.Interface", "J.i18n.GT", "JS.SV", "$.ScriptEval", "J.thread.HoverWatcherThread", "JU.BSUtil", "$.Escape", "$.Logger", "$.Point3fi", "JV.Viewer", "JV.binding.Binding", "$.JmolBinding"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.haveMultiTouchInput = false; +this.isMultiTouch = false; +this.b = null; +this.jmolBinding = null; +this.pfaatBinding = null; +this.dragBinding = null; +this.rasmolBinding = null; +this.predragBinding = null; +this.LEFT_DRAGGED = 0; +this.hoverable = false; +this.hoverWatcherThread = null; +this.dragGesture = null; +this.apm = 1; +this.bondPickingMode = 0; +this.pickingStyle = 0; +this.pickingStyleSelect = 0; +this.pickingStyleMeasure = 5; +this.rootPickingStyle = 0; +this.gestureSwipeFactor = 1.0; +this.mouseDragFactor = 1.0; +this.mouseWheelFactor = 1.15; +this.current = null; +this.moved = null; +this.clicked = null; +this.pressed = null; +this.dragged = null; +this.pressedCount = 0; +this.clickedCount = 0; +this.drawMode = false; +this.labelMode = false; +this.dragSelectedMode = false; +this.measuresEnabled = true; +this.haveSelection = false; +this.hoverActive = false; +this.mp = null; +this.dragAtomIndex = -1; +this.mkBondPressed = false; +this.rubberbandSelectionMode = false; +this.rectRubber = null; +this.isAltKeyReleased = true; +this.keyProcessing = false; +this.isMultiTouchClient = false; +this.isMultiTouchServer = false; +this.pressAction = 0; +this.dragAction = 0; +this.clickAction = 0; +this.measurementQueued = null; +this.zoomTrigger = false; +this.selectionWorking = false; +Clazz_instantialize(this, arguments);}, JV, "ActionManager", null, J.api.EventManager); +Clazz_prepareFields (c$, function(){ +this.current = new JV.MouseState("current"); +this.moved = new JV.MouseState("moved"); +this.clicked = new JV.MouseState("clicked"); +this.pressed = new JV.MouseState("pressed"); +this.dragged = new JV.MouseState("dragged"); +this.rectRubber = new JU.Rectangle(); +}); +Clazz_defineMethod(c$, "setViewer", +function(vwr, commandOptions){ +this.vwr = vwr; +if (!JV.Viewer.isJS) this.createActions(); +this.setBinding(this.jmolBinding = new JV.binding.JmolBinding()); +this.LEFT_DRAGGED = JV.binding.Binding.getMouseAction(1, 16, 1); +this.dragGesture = new JV.Gesture(20, vwr); +}, "JV.Viewer,~S"); +Clazz_defineMethod(c$, "isHoverable", +function(){ +return this.hoverable; +}); +Clazz_defineMethod(c$, "checkHover", +function(){ +if (this.zoomTrigger) { +this.zoomTrigger = false; +if (this.vwr.currentCursor == 8) this.vwr.setCursor(0); +this.vwr.setInMotion(false); +return; +}if (!this.vwr.getInMotion(true) && !this.vwr.tm.spinOn && !this.vwr.tm.navOn && !this.vwr.checkObjectHovered(this.current.x, this.current.y)) { +var atomIndex = this.vwr.findNearestAtomIndex(this.current.x, this.current.y); +if (atomIndex < 0) return; +var isLabel = (this.apm == 2 && this.bnd(JV.binding.Binding.getMouseAction(this.clickedCount, this.moved.modifiers, 1), [10])); +this.vwr.hoverOn(atomIndex, isLabel); +}}); +Clazz_defineMethod(c$, "processMultitouchEvent", +function(groupID, eventType, touchID, iData, pt, time){ +}, "~N,~N,~N,~N,JU.P3,~N"); +Clazz_defineMethod(c$, "bind", +function(desc, name){ +var jmolAction = JV.ActionManager.getActionFromName(name); +var mouseAction = JV.binding.Binding.getMouseActionStr(desc); +if (mouseAction == 0) return; +if (jmolAction >= 0) { +this.b.bindAction(mouseAction, jmolAction); +} else { +this.b.bindName(mouseAction, name); +}}, "~S,~S"); +Clazz_defineMethod(c$, "clearBindings", +function(){ +this.setBinding(this.jmolBinding = new JV.binding.JmolBinding()); +this.pfaatBinding = null; +this.dragBinding = null; +this.rasmolBinding = null; +}); +Clazz_defineMethod(c$, "unbindAction", +function(desc, name){ +if (desc == null && name == null) { +this.clearBindings(); +return; +}var jmolAction = JV.ActionManager.getActionFromName(name); +var mouseAction = JV.binding.Binding.getMouseActionStr(desc); +if (jmolAction >= 0) this.b.unbindAction(mouseAction, jmolAction); + else if (mouseAction != 0) this.b.unbindName(mouseAction, name); +if (name == null) this.b.unbindUserAction(desc); +}, "~S,~S"); +c$.newAction = Clazz_defineMethod(c$, "newAction", +function(i, name, info){ +JV.ActionManager.actionInfo[i] = info; +JV.ActionManager.actionNames[i] = name; +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "createActions", +function(){ +if (JV.ActionManager.actionInfo[0] != null) return; +JV.ActionManager.newAction(0, "_assignNew", J.i18n.GT.o(J.i18n.GT.$("assign/new atom or bond (requires {0})"), "set picking assignAtom_??/assignBond_?")); +JV.ActionManager.newAction(1, "_center", J.i18n.GT.$("center")); +JV.ActionManager.newAction(2, "_clickFrank", J.i18n.GT.$("pop up recent context menu (click on Jmol frank)")); +JV.ActionManager.newAction(4, "_deleteAtom", J.i18n.GT.o(J.i18n.GT.$("delete atom (requires {0})"), "set picking DELETE ATOM")); +JV.ActionManager.newAction(5, "_deleteBond", J.i18n.GT.o(J.i18n.GT.$("delete bond (requires {0})"), "set picking DELETE BOND")); +JV.ActionManager.newAction(6, "_depth", J.i18n.GT.o(J.i18n.GT.$("adjust depth (back plane; requires {0})"), "SLAB ON")); +JV.ActionManager.newAction(7, "_dragAtom", J.i18n.GT.o(J.i18n.GT.$("move atom (requires {0})"), "set picking DRAGATOM")); +JV.ActionManager.newAction(8, "_dragDrawObject", J.i18n.GT.o(J.i18n.GT.$("move whole DRAW object (requires {0})"), "set picking DRAW")); +JV.ActionManager.newAction(9, "_dragDrawPoint", J.i18n.GT.o(J.i18n.GT.$("move specific DRAW point (requires {0})"), "set picking DRAW")); +JV.ActionManager.newAction(10, "_dragLabel", J.i18n.GT.o(J.i18n.GT.$("move label (requires {0})"), "set picking LABEL")); +JV.ActionManager.newAction(11, "_dragMinimize", J.i18n.GT.o(J.i18n.GT.$("move atom and minimize molecule (requires {0})"), "set picking DRAGMINIMIZE")); +JV.ActionManager.newAction(12, "_dragMinimizeMolecule", J.i18n.GT.o(J.i18n.GT.$("move and minimize molecule (requires {0})"), "set picking DRAGMINIMIZEMOLECULE")); +JV.ActionManager.newAction(13, "_dragSelected", J.i18n.GT.o(J.i18n.GT.$("move selected atoms (requires {0})"), "set DRAGSELECTED")); +JV.ActionManager.newAction(14, "_dragZ", J.i18n.GT.o(J.i18n.GT.$("drag atoms in Z direction (requires {0})"), "set DRAGSELECTED")); +JV.ActionManager.newAction(15, "_multiTouchSimulation", J.i18n.GT.$("simulate multi-touch using the mouse)")); +JV.ActionManager.newAction(16, "_navTranslate", J.i18n.GT.o(J.i18n.GT.$("translate navigation point (requires {0} and {1})"), Clazz_newArray(-1, ["set NAVIGATIONMODE", "set picking NAVIGATE"]))); +JV.ActionManager.newAction(17, "_pickAtom", J.i18n.GT.$("pick an atom")); +JV.ActionManager.newAction(3, "_pickConnect", J.i18n.GT.o(J.i18n.GT.$("connect atoms (requires {0})"), "set picking CONNECT")); +JV.ActionManager.newAction(18, "_pickIsosurface", J.i18n.GT.o(J.i18n.GT.$("pick an ISOSURFACE point (requires {0}"), "set DRAWPICKING")); +JV.ActionManager.newAction(19, "_pickLabel", J.i18n.GT.o(J.i18n.GT.$("pick a label to toggle it hidden/displayed (requires {0})"), "set picking LABEL")); +JV.ActionManager.newAction(20, "_pickMeasure", J.i18n.GT.o(J.i18n.GT.$("pick an atom to include it in a measurement (after starting a measurement or after {0})"), "set picking DISTANCE/ANGLE/TORSION")); +JV.ActionManager.newAction(21, "_pickNavigate", J.i18n.GT.o(J.i18n.GT.$("pick a point or atom to navigate to (requires {0})"), "set NAVIGATIONMODE")); +JV.ActionManager.newAction(22, "_pickPoint", J.i18n.GT.o(J.i18n.GT.$("pick a DRAW point (for measurements) (requires {0}"), "set DRAWPICKING")); +JV.ActionManager.newAction(23, "_popupMenu", J.i18n.GT.$("pop up the full context menu")); +JV.ActionManager.newAction(24, "_reset", J.i18n.GT.$("reset (when clicked off the model)")); +JV.ActionManager.newAction(25, "_rotate", J.i18n.GT.$("rotate")); +JV.ActionManager.newAction(26, "_rotateBranch", J.i18n.GT.o(J.i18n.GT.$("rotate branch around bond (requires {0})"), "set picking ROTATEBOND")); +JV.ActionManager.newAction(27, "_rotateSelected", J.i18n.GT.o(J.i18n.GT.$("rotate selected atoms (requires {0})"), "set DRAGSELECTED")); +JV.ActionManager.newAction(28, "_rotateZ", J.i18n.GT.$("rotate Z")); +JV.ActionManager.newAction(29, "_rotateZorZoom", J.i18n.GT.$("rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)")); +JV.ActionManager.newAction(30, "_select", J.i18n.GT.o(J.i18n.GT.$("select an atom (requires {0})"), "set pickingStyle EXTENDEDSELECT")); +JV.ActionManager.newAction(31, "_selectAndDrag", J.i18n.GT.o(J.i18n.GT.$("select and drag atoms (requires {0})"), "set DRAGSELECTED")); +JV.ActionManager.newAction(32, "_selectAndNot", J.i18n.GT.o(J.i18n.GT.$("unselect this group of atoms (requires {0})"), "set pickingStyle DRAG/EXTENDEDSELECT")); +JV.ActionManager.newAction(33, "_selectNone", J.i18n.GT.o(J.i18n.GT.$("select NONE (requires {0})"), "set pickingStyle EXTENDEDSELECT")); +JV.ActionManager.newAction(34, "_selectOr", J.i18n.GT.o(J.i18n.GT.$("add this group of atoms to the set of selected atoms (requires {0})"), "set pickingStyle DRAG/EXTENDEDSELECT")); +JV.ActionManager.newAction(35, "_selectToggle", J.i18n.GT.o(J.i18n.GT.$("toggle selection (requires {0})"), "set pickingStyle DRAG/EXTENDEDSELECT/RASMOL")); +JV.ActionManager.newAction(36, "_selectToggleOr", J.i18n.GT.o(J.i18n.GT.$("if all are selected, unselect all, otherwise add this group of atoms to the set of selected atoms (requires {0})"), "set pickingStyle DRAG")); +JV.ActionManager.newAction(37, "_setMeasure", J.i18n.GT.$("pick an atom to initiate or conclude a measurement")); +JV.ActionManager.newAction(38, "_slab", J.i18n.GT.o(J.i18n.GT.$("adjust slab (front plane; requires {0})"), "SLAB ON")); +JV.ActionManager.newAction(39, "_slabAndDepth", J.i18n.GT.o(J.i18n.GT.$("move slab/depth window (both planes; requires {0})"), "SLAB ON")); +JV.ActionManager.newAction(40, "_slideZoom", J.i18n.GT.$("zoom (along right edge of window)")); +JV.ActionManager.newAction(41, "_spinDrawObjectCCW", J.i18n.GT.o(J.i18n.GT.$("click on two points to spin around axis counterclockwise (requires {0})"), "set picking SPIN")); +JV.ActionManager.newAction(42, "_spinDrawObjectCW", J.i18n.GT.o(J.i18n.GT.$("click on two points to spin around axis clockwise (requires {0})"), "set picking SPIN")); +JV.ActionManager.newAction(43, "_stopMotion", J.i18n.GT.o(J.i18n.GT.$("stop motion (requires {0})"), "set waitForMoveTo FALSE")); +JV.ActionManager.newAction(44, "_swipe", J.i18n.GT.$("spin model (swipe and release button and stop motion simultaneously)")); +JV.ActionManager.newAction(45, "_translate", J.i18n.GT.$("translate")); +JV.ActionManager.newAction(46, "_wheelZoom", J.i18n.GT.$("zoom")); +}); +c$.getActionName = Clazz_defineMethod(c$, "getActionName", +function(i){ +return (i < JV.ActionManager.actionNames.length ? JV.ActionManager.actionNames[i] : null); +}, "~N"); +c$.getActionFromName = Clazz_defineMethod(c$, "getActionFromName", +function(name){ +for (var i = 0; i < JV.ActionManager.actionNames.length; i++) if (JV.ActionManager.actionNames[i].equalsIgnoreCase(name)) return i; + +return -1; +}, "~S"); +Clazz_defineMethod(c$, "getBindingInfo", +function(qualifiers){ +return this.b.getBindingInfo(JV.ActionManager.actionInfo, JV.ActionManager.actionNames, qualifiers); +}, "~S"); +Clazz_defineMethod(c$, "setBinding", +function(newBinding){ +this.b = newBinding; +}, "JV.binding.Binding"); +Clazz_defineMethod(c$, "bnd", +function(mouseAction, jmolActions){ +for (var i = jmolActions.length; --i >= 0; ) if (this.b.isBound(mouseAction, jmolActions[i])) return true; + +return false; +}, "~N,~A"); +Clazz_defineMethod(c$, "isDrawOrLabelAction", +function(a){ +return (this.drawMode && this.bnd(a, [8, 9]) || this.labelMode && this.bnd(a, [10])); +}, "~N"); +Clazz_defineMethod(c$, "getBondPickingMode", +function(){ +return this.bondPickingMode; +}); +c$.getPickingModeName = Clazz_defineMethod(c$, "getPickingModeName", +function(pickingMode){ +return (pickingMode < 0 || pickingMode >= JV.ActionManager.pickingModeNames.length ? "off" : JV.ActionManager.pickingModeNames[pickingMode]); +}, "~N"); +c$.getPickingMode = Clazz_defineMethod(c$, "getPickingMode", +function(str){ +for (var i = JV.ActionManager.pickingModeNames.length; --i >= 0; ) if (str.equalsIgnoreCase(JV.ActionManager.pickingModeNames[i])) { +if (i == 38) i = 6; +return i; +} +return -1; +}, "~S"); +c$.getPickingStyleName = Clazz_defineMethod(c$, "getPickingStyleName", +function(pickingStyle){ +return (pickingStyle < 0 || pickingStyle >= JV.ActionManager.pickingStyleNames.length ? "toggle" : JV.ActionManager.pickingStyleNames[pickingStyle]); +}, "~N"); +c$.getPickingStyleIndex = Clazz_defineMethod(c$, "getPickingStyleIndex", +function(str){ +for (var i = JV.ActionManager.pickingStyleNames.length; --i >= 0; ) if (str.equalsIgnoreCase(JV.ActionManager.pickingStyleNames[i])) return i; + +return -1; +}, "~S"); +Clazz_defineMethod(c$, "getAtomPickingMode", +function(){ +return this.apm; +}); +Clazz_defineMethod(c$, "setPickingMode", +function(pickingMode){ +var isNew = false; +switch (pickingMode) { +case -1: +isNew = true; +this.bondPickingMode = 35; +pickingMode = 1; +this.vwr.setStringProperty("pickingStyle", "toggle"); +this.vwr.setBooleanProperty("bondPicking", false); +break; +case 34: +case 33: +case 8: +this.vwr.getModelkit(false); +case 35: +this.vwr.setBooleanProperty("bondPicking", true); +this.bondPickingMode = pickingMode; +this.resetMeasurement(); +return; +} +isNew = new Boolean (isNew | (this.apm != pickingMode)).valueOf(); +this.apm = pickingMode; +if (isNew) this.resetMeasurement(); +}, "~N"); +Clazz_defineMethod(c$, "getPickingState", +function(){ +var script = ";set modelkitMode " + this.vwr.getBoolean(603983903) + ";set picking " + JV.ActionManager.getPickingModeName(this.apm); +if (this.apm == 32) script += "_" + this.vwr.getModelkitPropertySafely("atomtype"); +script += ";"; +if (this.bondPickingMode != 0) script += "set picking " + JV.ActionManager.getPickingModeName(this.bondPickingMode); +if (this.bondPickingMode == 33) script += "_" + this.vwr.getModelkitPropertySafely("bondtype"); +script += ";"; +return script; +}); +Clazz_defineMethod(c$, "getPickingStyle", +function(){ +return this.pickingStyle; +}); +Clazz_defineMethod(c$, "setPickingStyle", +function(pickingStyle){ +this.pickingStyle = pickingStyle; +if (pickingStyle >= 4) { +this.pickingStyleMeasure = pickingStyle; +this.resetMeasurement(); +} else { +if (pickingStyle < 3) this.rootPickingStyle = pickingStyle; +this.pickingStyleSelect = pickingStyle; +}this.rubberbandSelectionMode = false; +switch (this.pickingStyleSelect) { +case 2: +if (!this.b.name.equals("extendedSelect")) this.setBinding(this.pfaatBinding == null ? this.pfaatBinding = JV.binding.Binding.newBinding(this.vwr, "Pfaat") : this.pfaatBinding); +break; +case 3: +if (!this.b.name.equals("drag")) this.setBinding(this.dragBinding == null ? this.dragBinding = JV.binding.Binding.newBinding(this.vwr, "Drag") : this.dragBinding); +this.rubberbandSelectionMode = true; +break; +case 1: +if (!this.b.name.equals("selectOrToggle")) this.setBinding(this.rasmolBinding == null ? this.rasmolBinding = JV.binding.Binding.newBinding(this.vwr, "Rasmol") : this.rasmolBinding); +break; +default: +if (this.b !== this.jmolBinding) this.setBinding(this.jmolBinding); +} +if (!this.b.name.equals("drag")) this.predragBinding = this.b; +}, "~N"); +Clazz_defineMethod(c$, "setGestureSwipeFactor", +function(factor){ +this.gestureSwipeFactor = factor; +}, "~N"); +Clazz_defineMethod(c$, "setMouseDragFactor", +function(factor){ +this.mouseDragFactor = factor; +}, "~N"); +Clazz_defineMethod(c$, "setMouseWheelFactor", +function(factor){ +this.mouseWheelFactor = factor; +}, "~N"); +Clazz_defineMethod(c$, "setCurrent", +function(time, x, y, mods){ +this.vwr.hoverOff(); +this.current.set(time, x, y, mods); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getCurrentX", +function(){ +return this.current.x; +}); +Clazz_defineMethod(c$, "getCurrentY", +function(){ +return this.current.y; +}); +Clazz_defineMethod(c$, "setMouseMode", +function(){ +this.drawMode = this.labelMode = false; +this.dragSelectedMode = this.vwr.getDragSelected(); +this.measuresEnabled = !this.dragSelectedMode; +if (!this.dragSelectedMode) switch (this.apm) { +default: +return; +case 32: +this.measuresEnabled = !this.vwr.getModelkit(false).isPickAtomAssignCharge(); +return; +case 4: +this.drawMode = true; +this.measuresEnabled = false; +break; +case 2: +this.labelMode = true; +this.measuresEnabled = false; +break; +case 9: +this.measuresEnabled = false; +break; +case 19: +case 22: +case 20: +case 21: +this.measuresEnabled = false; +return; +} +this.exitMeasurementMode(null); +}); +Clazz_defineMethod(c$, "clearMouseInfo", +function(){ +this.pressedCount = this.clickedCount = 0; +this.dragGesture.setAction(0, 0); +this.exitMeasurementMode(null); +}); +Clazz_defineMethod(c$, "setDragAtomIndex", +function(iatom){ +this.dragAtomIndex = iatom; +this.setAtomsPicked(JU.BSUtil.newAndSetBit(iatom), "Label picked for atomIndex = " + iatom); +}, "~N"); +Clazz_defineMethod(c$, "isMTClient", +function(){ +return this.isMultiTouchClient; +}); +Clazz_defineMethod(c$, "isMTServer", +function(){ +return this.isMultiTouchServer; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +this.clear(); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.startHoverWatcher(false); +if (this.predragBinding != null) this.b = this.predragBinding; +this.vwr.setPickingStyle(null, this.rootPickingStyle); +this.isAltKeyReleased = true; +}); +Clazz_defineMethod(c$, "startHoverWatcher", +function(isStart){ +if (this.vwr.isPreviewOnly) return; +try { +if (isStart) { +if (this.hoverWatcherThread != null) return; +this.current.time = -1; +this.hoverWatcherThread = new J.thread.HoverWatcherThread(this, this.current, this.moved, this.vwr); +} else { +if (this.hoverWatcherThread == null) return; +this.current.time = -1; +this.hoverWatcherThread.interrupt(); +this.hoverWatcherThread = null; +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~B"); +Clazz_defineMethod(c$, "setModeMouse", +function(modeMouse){ +if (modeMouse == -1) { +this.startHoverWatcher(false); +}}, "~N"); +Clazz_overrideMethod(c$, "keyPressed", +function(key, modifiers){ +if (this.keyProcessing) return false; +this.keyProcessing = true; +switch (key) { +case 18: +if (this.dragSelectedMode && this.isAltKeyReleased) this.vwr.moveSelectedXY(-2147483648, 0, modifiers); +this.isAltKeyReleased = false; +this.moved.modifiers |= 8; +break; +case 16: +this.moved.keybuf = 0; +this.dragged.modifiers |= 1; +this.moved.modifiers |= 1; +break; +case 17: +this.moved.modifiers |= 2; +break; +case 27: +this.vwr.hoverOff(); +this.exitMeasurementMode("escape"); +break; +default: +this.vwr.hoverOff(); +break; +} +var action = 16 | 256 | 8192 | this.moved.modifiers; +if (!this.labelMode && !this.b.isUserAction(action)) { +this.checkMotionRotateZoom(action, this.current.x, 0, 0, false); +}if (this.vwr.getBoolean(603979889)) { +switch (key) { +case 38: +case 40: +case 37: +case 39: +case 32: +case 46: +this.vwr.navigate(key, modifiers); +break; +} +}this.keyProcessing = false; +return true; +}, "~N,~N"); +Clazz_overrideMethod(c$, "keyTyped", +function(keyChar, modifiers){ +return false; +}, "~N,~N"); +Clazz_overrideMethod(c$, "keyReleased", +function(key){ +switch (key) { +case 18: +this.moved.modifiers &= -9; +if (this.dragSelectedMode) this.vwr.moveSelectedXY(2147483647, 0, this.moved.modifiers); +this.isAltKeyReleased = true; +break; +case 16: +this.moved.modifiers &= -2; +if (this.moved.keybuf > 0 && this.vwr.isModelKitOpen()) this.checkKeyBuf(0); +break; +case 17: +this.moved.modifiers &= -3; +} +if (this.moved.modifiers == 0) this.vwr.setCursor(0); +if (key >= 65 && this.vwr.isModelKitOpen()) { +this.dragAtomIndex = this.vwr.findNearestAtomIndex(this.current.x, this.current.y); +if (this.dragAtomIndex >= 0) { +this.checkKeyBuf(key); +return; +}}if (this.vwr.getBoolean(603979889)) { +switch (key) { +case 38: +case 40: +case 37: +case 39: +this.vwr.navigate(0, 0); +break; +} +}this.moved.keybuf = 0; +}, "~N"); +Clazz_defineMethod(c$, "checkKeyBuf", +function(key){ +var shiftDown = ((this.moved.modifiers & 1) != 0); +if (key != 0) { +if (this.moved.keybuf == 0) { +this.moved.keybuf = key; +if (shiftDown) return; +} else { +this.moved.keybuf += (key << 8); +}}if (this.moved.keybuf > 0) { +this.assignNew(this.moved.keybuf); +this.moved.keybuf = 0; +}}, "~N"); +Clazz_overrideMethod(c$, "mouseEnterExit", +function(time, x, y, isExit){ +if (this.vwr.tm.stereoDoubleDTI) x = x << 1; +this.setCurrent(time, x, y, 0); +if (isExit) this.exitMeasurementMode("mouseExit"); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setMouseActions", +function(count, buttonMods, isRelease){ +this.pressAction = JV.binding.Binding.getMouseAction(count, buttonMods, isRelease ? 5 : 4); +this.dragAction = JV.binding.Binding.getMouseAction(count, buttonMods, 1); +this.clickAction = JV.binding.Binding.getMouseAction(count, buttonMods, 2); +}, "~N,~N,~B"); +Clazz_overrideMethod(c$, "mouseAction", +function(mode, time, x, y, count, buttonMods){ +if (!this.vwr.getMouseEnabled()) return; +if (JU.Logger.debuggingHigh && mode != 0 && this.vwr.getBoolean(603979960)) this.vwr.showString("mouse action: " + mode + " " + buttonMods + " " + JV.binding.Binding.getMouseActionName(JV.binding.Binding.getMouseAction(count, buttonMods, mode), false), false); +if (this.vwr.tm.stereoDoubleDTI) x = x << 1; +switch (mode) { +case 0: +if (!this.hoverable) { +JU.Logger.info("ActionManager: mouse move detected"); +this.hoverable = true; +}this.setCurrent(time, x, y, buttonMods); +this.moved.setCurrent(this.current, 0); +this.moved.keybuf = 0; +if (this.mp != null || this.hoverActive) { +this.clickAction = JV.binding.Binding.getMouseAction(this.clickedCount, buttonMods, 0); +this.checkClickAction(x, y, time, 0); +return; +}if (this.isZoomArea(x)) { +this.checkMotionRotateZoom(this.LEFT_DRAGGED, 0, 0, 0, false); +return; +}if (this.vwr.currentCursor == 8) this.vwr.setCursor(0); +return; +case 4: +this.setMouseMode(); +this.pressedCount = (this.pressed.check(20, x, y, buttonMods, time, 700) ? this.pressedCount + 1 : 1); +if (this.pressedCount == 1) { +this.vwr.checkInMotion(1); +this.setCurrent(time, x, y, buttonMods); +}this.pressAction = JV.binding.Binding.getMouseAction(this.pressedCount, buttonMods, 4); +this.vwr.setCursor(12); +this.pressed.setCurrent(this.current, 1); +this.dragged.setCurrent(this.current, 1); +this.vwr.setFocus(); +this.dragGesture.setAction(this.dragAction, time); +this.checkPressedAction(x, y, time); +return; +case 1: +this.setMouseMode(); +this.setMouseActions(this.pressedCount, buttonMods, false); +var deltaX = x - this.dragged.x; +var deltaY = y - this.dragged.y; +this.setCurrent(time, x, y, buttonMods); +this.dragged.setCurrent(this.current, -1); +this.dragGesture.add(this.dragAction, x, y, time); +this.checkDragWheelAction(this.dragAction, x, y, deltaX, deltaY, time, 1); +return; +case 5: +this.setMouseActions(this.pressedCount, buttonMods, true); +this.setCurrent(time, x, y, buttonMods); +this.vwr.spinXYBy(0, 0, 0); +var dragRelease = !this.pressed.check(10, x, y, buttonMods, time, 9223372036854775807); +this.checkReleaseAction(x, y, time, dragRelease); +return; +case 3: +if (this.vwr.isApplet && !this.vwr.hasFocus()) return; +this.setCurrent(time, this.current.x, this.current.y, buttonMods); +this.checkDragWheelAction(JV.binding.Binding.getMouseAction(0, buttonMods, 3), this.current.x, this.current.y, 0, y, time, 3); +return; +case 2: +this.setMouseMode(); +this.clickedCount = (count > 1 ? count : this.clicked.check(10, 0, 0, buttonMods, time, 700) ? this.clickedCount + 1 : 1); +if (this.clickedCount == 1) { +this.setCurrent(time, x, y, buttonMods); +}this.setMouseActions(this.clickedCount, buttonMods, false); +this.clicked.setCurrent(this.current, this.clickedCount); +this.vwr.setFocus(); +if (this.apm != 9 && this.bnd(JV.binding.Binding.getMouseAction(1, buttonMods, 4), [31])) return; +this.clickAction = JV.binding.Binding.getMouseAction(this.clickedCount, buttonMods, 2); +this.checkClickAction(x, y, time, this.clickedCount); +return; +} +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "checkPressedAction", +function(x, y, time){ +var buttonMods = JV.binding.Binding.getButtonMods(this.pressAction); +var isDragSelectedAction = this.bnd(JV.binding.Binding.getMouseAction(1, buttonMods, 4), [31]); +if (buttonMods != 0) { +this.pressAction = this.vwr.notifyMouseClicked(x, y, this.pressAction, 4); +if (this.pressAction == 0) return; +buttonMods = JV.binding.Binding.getButtonMods(this.pressAction); +}this.setMouseActions(this.pressedCount, buttonMods, false); +if (JU.Logger.debuggingHigh && this.vwr.getBoolean(603979960)) JU.Logger.debug(JV.binding.Binding.getMouseActionName(this.pressAction, false)); +if (this.isDrawOrLabelAction(this.dragAction) && this.vwr.checkObjectDragged(-2147483648, 0, x, y, this.dragAction)) return; +this.checkUserAction(this.pressAction, x, y, 0, 0, time, 4); +var isBound = false; +switch (this.apm) { +case 32: +isBound = this.bnd(this.clickAction, [0]); +break; +case 28: +isBound = this.bnd(this.dragAction, [7, 14]); +break; +case 26: +case 36: +case 37: +case 27: +isBound = this.bnd(this.dragAction, [7, 14, 27]); +break; +case 29: +isBound = this.bnd(this.dragAction, [11, 14]); +break; +case 30: +isBound = this.bnd(this.dragAction, [11, 14, 27]); +break; +default: +isBound = (this.bondPickingMode == 34); +break; +} +if (isBound) { +this.dragAtomIndex = this.vwr.findNearestAtomIndexMovable(x, y, true); +var bi = (this.bondPickingMode == 34 ? this.vwr.getModelkit(false).getRotateBondIndex() : -1); +if (this.dragAtomIndex >= 0 && (bi >= 0 || this.apm == 32 || this.apm == 31)) { +this.enterMeasurementMode(this.dragAtomIndex); +this.mp.addPoint(this.dragAtomIndex, null, false); +if (bi >= 0) { +this.updateModelkitBranch(bi, true); +}}var xy = this.vwr.getModelkitPropertySafely("screenxy"); +this.mkBondPressed = (xy != null && this.pressed.inRange(10, xy[0], xy[1])); +return; +}if (this.bnd(this.pressAction, [23])) { +this.doPopup(x, y); +return; +}if (this.dragSelectedMode) { +this.haveSelection = (!isDragSelectedAction || this.vwr.findNearestAtomIndexMovable(x, y, true) >= 0); +if (this.haveSelection && this.bnd(this.dragAction, [13, 14])) this.vwr.moveSelectedXY(-2147483648, 0, buttonMods); +return; +}this.checkMotionRotateZoom(this.dragAction, x, 0, 0, true); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "checkDragWheelAction", +function(dragWheelAction, x, y, deltaX, deltaY, time, mode){ +var buttonmods = JV.binding.Binding.getButtonMods(dragWheelAction); +if (buttonmods != 0) { +var newAction = this.vwr.notifyMouseClicked(x, y, JV.binding.Binding.getMouseAction(this.pressedCount, buttonmods, mode), mode); +if (newAction == 0) return; +if (newAction > 0) dragWheelAction = newAction; +}if (this.isRubberBandSelect(dragWheelAction)) { +this.calcRectRubberBand(); +this.vwr.refresh(3, "rubberBand selection"); +return; +}if (this.checkUserAction(dragWheelAction, x, y, deltaX, deltaY, time, mode)) return; +var bi = (this.bondPickingMode == 34 ? this.vwr.getModelkit(false).getRotateBondIndex() : -1); +if (bi >= 0) { +if (this.dragAtomIndex >= 0 || this.mkBondPressed || this.bnd(dragWheelAction, [26])) { +if (this.dragAtomIndex >= 0) { +this.updateModelkitBranch(bi, false); +}this.vwr.moveSelected(deltaX, deltaY, -2147483648, x, y, null, null, null, false, false, this.dragAtomIndex >= 0 ? 0 : 16); +return; +}}var bs = null; +if (this.dragAtomIndex >= 0 && this.apm != 2) { +switch (this.apm) { +case 26: +this.dragSelected(dragWheelAction, deltaX, deltaY, true); +return; +case 36: +case 37: +case 27: +case 30: +bs = this.vwr.ms.getAtoms((this.apm == 37 ? 1094717454 : 1094713360), JU.BSUtil.newAndSetBit(this.dragAtomIndex)); +if (this.apm == 36) bs.and(this.vwr.getAtomBitSet("ligand")); +case 28: +case 29: +if (this.dragGesture.getPointCount() == 1) this.vwr.undoMoveActionClear(this.dragAtomIndex, 2, true); +this.setMotion(13, true); +if (this.bnd(dragWheelAction, [27])) { +this.vwr.rotateSelected(this.getDegrees(deltaX, true), this.getDegrees(deltaY, false), bs); +} else { +switch (this.apm) { +case 36: +case 37: +case 27: +case 30: +this.vwr.selectStatus(bs, false, 0, true, true); +break; +} +this.vwr.moveAtomWithHydrogens(this.dragAtomIndex, deltaX, deltaY, (this.bnd(dragWheelAction, [14]) ? -deltaY : -2147483648), null, bs); +this.vwr.checkCoordinatesChanged(null); +}return; +} +}if (this.dragAtomIndex >= 0 && mode == 1 && this.bnd(this.clickAction, [0]) && this.apm == 32) { +var nearestAtomIndex = this.vwr.findNearestAtomIndexMovable(x, y, false); +if (nearestAtomIndex >= 0) { +if (this.mp != null) { +this.mp.setCount(1); +} else if (this.measuresEnabled) { +this.enterMeasurementMode(nearestAtomIndex); +}this.addToMeasurement(nearestAtomIndex, null, true); +this.mp.colix = 20; +} else if (this.mp != null) { +this.mp.setCount(1); +this.mp.colix = 23; +}if (this.mp == null) return; +if (this.vwr.antialiased) { +x <<= 1; +y <<= 1; +}this.mp.traceX = x; +this.mp.traceY = y; +this.vwr.refresh(3, "assignNew"); +return; +}if (!this.drawMode && !this.labelMode && this.bnd(dragWheelAction, [45])) { +this.vwr.translateXYBy(deltaX, deltaY); +return; +}if (this.dragSelectedMode && this.haveSelection && this.bnd(dragWheelAction, [13, 27])) { +var iatom = this.vwr.bsA().nextSetBit(0); +if (iatom < 0) return; +if (this.dragGesture.getPointCount() == 1) this.vwr.undoMoveActionClear(iatom, 2, true); + else this.vwr.moveSelected(2147483647, 0, -2147483648, -2147483648, -2147483648, null, null, null, false, false, buttonmods); +this.dragSelected(dragWheelAction, deltaX, deltaY, false); +return; +}if (this.isDrawOrLabelAction(dragWheelAction)) { +this.setMotion(13, true); +if (this.vwr.checkObjectDragged(this.dragged.x, this.dragged.y, x, y, dragWheelAction)) { +return; +}}if (this.checkMotionRotateZoom(dragWheelAction, x, deltaX, deltaY, true)) { +if (this.vwr.tm.slabEnabled && this.bnd(dragWheelAction, [39])) this.vwr.slabDepthByPixels(deltaY); + else this.vwr.zoomBy(deltaY); +return; +}if (this.bnd(dragWheelAction, [25])) { +this.vwr.rotateXYBy(this.getDegrees(deltaX, true), this.getDegrees(deltaY, false)); +return; +}if (this.bnd(dragWheelAction, [29])) { +if (deltaX == 0 && Math.abs(deltaY) > 1) { +this.setMotion(8, true); +this.vwr.zoomBy(deltaY + (deltaY > 0 ? -1 : 1)); +} else if (deltaY == 0 && Math.abs(deltaX) > 1) { +this.setMotion(13, true); +this.vwr.rotateZBy(-deltaX + (deltaX > 0 ? 1 : -1), 2147483647, 2147483647); +}return; +}if (this.vwr.tm.slabEnabled) { +if (this.bnd(dragWheelAction, [6])) { +this.vwr.depthByPixels(deltaY); +return; +}if (this.bnd(dragWheelAction, [38])) { +this.vwr.slabByPixels(deltaY); +return; +}if (this.bnd(dragWheelAction, [39])) { +this.vwr.slabDepthByPixels(deltaY); +return; +}}if (this.bnd(dragWheelAction, [46])) { +this.zoomByFactor(deltaY, 2147483647, 2147483647); +return; +}if (this.bnd(dragWheelAction, [28])) { +this.setMotion(13, true); +this.vwr.rotateZBy(-deltaX, 2147483647, 2147483647); +return; +}}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "updateModelkitBranch", +function(bondIndex, isClick){ +this.vwr.setModelkitPropertySafely(isClick ? "branchatomclicked" : "branchatomdragged", Integer.$valueOf(this.dragAtomIndex)); +if (this.measurementQueued == null || this.measurementQueued.numSet == 0 || this.mp == null) { +this.vwr.setPendingMeasurement(this.vwr.getModelkit(false).setBondMeasure(bondIndex, this.measurementQueued = this.mp = this.getMP())); +} else { +this.measurementQueued.refresh(null); +}}, "~N,~B"); +Clazz_defineMethod(c$, "dragSelected", +function(a, deltaX, deltaY, isPickingDrag){ +this.setMotion(13, true); +if (this.bnd(a, [27]) && this.vwr.getBoolean(603979785)) this.vwr.rotateSelected(this.getDegrees(deltaX, true), this.getDegrees(deltaY, false), null); + else this.vwr.moveSelected(deltaX, deltaY, (isPickingDrag && this.bnd(a, [14]) ? -deltaY : -2147483648), -2147483648, -2147483648, null, null, null, true, false, this.dragged.modifiers); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "checkReleaseAction", +function(x, y, time, dragRelease){ +if (JU.Logger.debuggingHigh && this.vwr.getBoolean(603979960)) JU.Logger.debug(JV.binding.Binding.getMouseActionName(this.pressAction, false)); +this.vwr.checkInMotion(0); +this.vwr.setInMotion(false); +this.vwr.setCursor(0); +this.dragGesture.add(this.dragAction, x, y, time); +if (this.dragAtomIndex >= 0 && !this.vwr.isModelkitPickingRotateBond()) { +if (this.apm == 29 || this.apm == 30) this.minimize(true); +}if (this.apm == 32 && this.bnd(this.clickAction, [0])) { +if (this.mp == null || this.dragAtomIndex < 0) { +this.exitMeasurementMode(null); +return; +} else if (this.bondPickingMode == 34) { +this.vwr.setModelkitPropertySafely("rotateBond", Integer.$valueOf(this.dragAtomIndex)); +this.exitMeasurementMode(null); +return; +}this.assignNew(-1); +return; +}this.dragAtomIndex = -1; +this.mkBondPressed = false; +var isRbAction = this.isRubberBandSelect(this.dragAction); +if (isRbAction) this.selectRb(this.clickAction); +this.rubberbandSelectionMode = (this.b.name.equals("drag")); +this.rectRubber.x = 2147483647; +if (dragRelease) { +this.vwr.notifyMouseClicked(x, y, JV.binding.Binding.getMouseAction(this.pressedCount, 0, 5), 5); +}if (this.isDrawOrLabelAction(this.dragAction)) { +this.vwr.checkObjectDragged(2147483647, 0, x, y, this.dragAction); +return; +}if (this.haveSelection && this.dragSelectedMode && this.bnd(this.dragAction, [13])) this.vwr.moveSelectedXY(2147483647, 0, this.dragged.modifiers); +if (dragRelease && this.checkUserAction(this.pressAction, x, y, 0, 0, time, 5)) return; +if (this.vwr.getBoolean(603979780)) { +if (this.bnd(this.dragAction, [44])) { +var speed = this.getExitRate(); +if (speed > 0) this.vwr.spinXYBy(this.dragGesture.getDX(4, 2), this.dragGesture.getDY(4, 2), speed * 30 * this.gestureSwipeFactor); +if (this.vwr.g.logGestures) this.vwr.log("$NOW$ swipe " + this.dragGesture + " " + speed); +return; +}}}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "checkClickAction", +function(x, y, time, clickedCount){ +if (clickedCount > 1 && (this.apm == 5 || this.apm == 6)) { +this.resetMeasurement(); +this.runScript("draw ID sym* delete;spin off;"); +return; +}if (clickedCount > 0) { +if (this.checkUserAction(this.clickAction, x, y, 0, 0, time, 32768)) return; +this.clickAction = this.vwr.notifyMouseClicked(x, y, this.clickAction, 32768); +if (this.clickAction == 0) return; +}if (JU.Logger.debuggingHigh && this.vwr.getBoolean(603979960)) JU.Logger.debug(JV.binding.Binding.getMouseActionName(this.clickAction, false)); +if (this.bnd(this.clickAction, [2])) { +if (this.vwr.frankClicked(x, y)) { +this.vwr.popupMenu(-x, y, 'j'); +return; +}if (this.vwr.frankClickedModelKit(x, y)) { +this.vwr.popupMenu(10, 0, 'm'); +return; +}}var nearestPoint = null; +var isBond = false; +var isIsosurface = false; +var map = null; +if (!this.drawMode) { +map = this.vwr.checkObjectClicked(x, y, this.clickAction); +if (map != null) { +if (this.labelMode) { +this.pickLabel((map.get("atomIndex")).intValue()); +return; +}isBond = "bond".equals(map.get("type")); +isIsosurface = "isosurface".equals(map.get("type")); +nearestPoint = this.getPoint(map); +if (isBond && this.vwr.isModelkitPickingRotateBond()) { +this.vwr.highlightBond((map.get("index")).intValue(), -1, x, y); +}}}if (isBond) clickedCount = 1; +if (nearestPoint != null && Float.isNaN(nearestPoint.x)) return; +var nearestAtomIndex = this.findNearestAtom(x, y, nearestPoint, clickedCount > 0); +if (this.bnd(this.clickAction, [23])) { +this.doPopup(x, y); +return; +}if (clickedCount == 0 && this.apm != 32 && !this.vwr.isModelkitPickingRotateBond()) { +if (this.mp == null) return; +if (nearestPoint != null || this.mp.getIndexOf(nearestAtomIndex) == 0) { +try { +this.mp.addPoint(nearestAtomIndex, nearestPoint, false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.exitMeasurementMode(null); +return; +} else { +throw e; +} +} +}if (this.mp.haveModified) this.vwr.setPendingMeasurement(this.mp); +this.vwr.refresh(3, "measurementPending"); +return; +}this.setMouseMode(); +if (this.bnd(this.clickAction, [43])) { +this.vwr.tm.stopMotion(); +}if (this.vwr.getBoolean(603979889) && this.apm == 23 && this.bnd(this.clickAction, [21])) { +this.vwr.navTranslatePercent(x * 100 / this.vwr.getScreenWidth() - 50, y * 100 / this.vwr.getScreenHeight() - 50); +return; +}if (isBond) { +if (this.bnd(this.clickAction, [this.bondPickingMode == 34 || this.bondPickingMode == 33 ? 0 : 5])) { +this.bondPicked((map.get("index")).intValue()); +this.vwr.refresh(1, "bondpicked"); +return; +}} else if (isIsosurface) { +return; +} else { +if (this.apm != 32 && this.mp != null && this.bnd(this.clickAction, [20])) { +this.atomOrPointPicked(nearestAtomIndex, nearestPoint); +if (this.addToMeasurement(nearestAtomIndex, nearestPoint, false) == 4) this.toggleMeasurement(); +return; +}if (this.bnd(this.clickAction, [37])) { +if (this.mp != null) { +this.addToMeasurement(nearestAtomIndex, nearestPoint, true); +this.toggleMeasurement(); +} else if (!this.drawMode && !this.labelMode && !this.dragSelectedMode && this.measuresEnabled) { +this.enterMeasurementMode(nearestAtomIndex); +this.addToMeasurement(nearestAtomIndex, nearestPoint, true); +}this.atomOrPointPicked(nearestAtomIndex, nearestPoint); +return; +}}if (this.isSelectAction(this.clickAction)) { +if (!isIsosurface) this.atomOrPointPicked(nearestAtomIndex, nearestPoint); +return; +}if (this.bnd(this.clickAction, [24])) { +if (nearestAtomIndex < 0) this.reset(); +return; +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "doPopup", +function(x, y){ +this.vwr.popupMenu(x, y, this.vwr.isModelKitOpen() ? 'm' : 'j'); +}, "~N,~N"); +Clazz_defineMethod(c$, "pickLabel", +function(iatom){ +var label = this.vwr.ms.at[iatom].atomPropertyString(this.vwr, 1825200146); +if (this.pressedCount == 2) { +label = this.vwr.apiPlatform.prompt("Set label for atomIndex=" + iatom, label, null, false); +if (label != null) { +this.vwr.shm.setAtomLabel(label, iatom); +this.vwr.refresh(1, "label atom"); +}} else { +this.setAtomsPicked(JU.BSUtil.newAndSetBit(iatom), "Label picked for atomIndex = " + iatom + ": " + label); +}}, "~N"); +Clazz_defineMethod(c$, "checkUserAction", +function(mouseAction, x, y, deltaX, deltaY, time, mode){ +if (!this.b.isUserAction(mouseAction)) return false; +var passThrough = false; +var obj; +var ht = this.b.getBindings(); +var mkey = mouseAction + "\t"; +for (var key, $key = ht.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (key.indexOf(mkey) != 0 || !JU.AU.isAS(obj = ht.get(key))) continue; +var script = (obj)[1]; +var nearestPoint = null; +if (script.indexOf("_ATOM") >= 0) { +var iatom = this.findNearestAtom(x, y, null, true); +script = JU.PT.rep(script, "_ATOM", "({" + (iatom >= 0 ? "" + iatom : "") + "})"); +if (iatom >= 0) script = JU.PT.rep(script, "_POINT", JU.Escape.eP(this.vwr.ms.at[iatom])); +}if (!this.drawMode && (script.indexOf("_POINT") >= 0 || script.indexOf("_OBJECT") >= 0 || script.indexOf("_BOND") >= 0)) { +var t = this.vwr.checkObjectClicked(x, y, mouseAction); +if (t != null && (nearestPoint = t.get("pt")) != null) { +var isBond = t.get("type").equals("bond"); +if (isBond) script = JU.PT.rep(script, "_BOND", "[{" + t.get("index") + "}]"); +script = JU.PT.rep(script, "_POINT", JU.Escape.eP(nearestPoint)); +script = JU.PT.rep(script, "_OBJECT", JU.Escape.escapeMap(t)); +}script = JU.PT.rep(script, "_BOND", "[{}]"); +script = JU.PT.rep(script, "_OBJECT", "{}"); +}script = JU.PT.rep(script, "_POINT", "{}"); +script = JU.PT.rep(script, "_ACTION", "" + mouseAction); +script = JU.PT.rep(script, "_X", "" + x); +script = JU.PT.rep(script, "_Y", "" + (this.vwr.getScreenHeight() - y)); +script = JU.PT.rep(script, "_DELTAX", "" + deltaX); +script = JU.PT.rep(script, "_DELTAY", "" + deltaY); +script = JU.PT.rep(script, "_TIME", "" + time); +script = JU.PT.rep(script, "_MODE", "" + mode); +if (script.startsWith("+:")) { +passThrough = true; +script = script.substring(2); +}this.vwr.evalStringQuiet(script); +} +return !passThrough; +}, "~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "checkMotionRotateZoom", +function(mouseAction, x, deltaX, deltaY, isDrag){ +var isSlideZoom = this.bnd(mouseAction, [40]) && this.isZoomArea(this.pressed.x); +var isRotateXY = this.bnd(mouseAction, [25]); +var isRotateZorZoom = this.bnd(mouseAction, [29]); +if (!isSlideZoom && !isRotateXY && !isRotateZorZoom) return false; +var isZoom = (isRotateZorZoom && (deltaX == 0 || Math.abs(deltaY) > 5 * Math.abs(deltaX))); +var cursor = (isZoom || this.isZoomArea(this.moved.x) || this.bnd(mouseAction, [46]) ? 8 : isRotateXY || isRotateZorZoom ? 13 : this.bnd(mouseAction, [1]) ? 12 : 0); +this.setMotion(cursor, isDrag); +return (isZoom || isSlideZoom); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "getExitRate", +function(){ +var dt = this.dragGesture.getTimeDifference(2); +return (this.isMultiTouch ? (dt > (80) ? 0 : this.dragGesture.getSpeedPixelsPerMillisecond(2, 1)) : (dt > 10 ? 0 : this.dragGesture.getSpeedPixelsPerMillisecond(4, 2))); +}); +Clazz_defineMethod(c$, "isRubberBandSelect", +function(action){ +action = action & -8193 | 32768; +return (this.rubberbandSelectionMode && this.bnd(action, [35, 34, 32])); +}, "~N"); +Clazz_defineMethod(c$, "getRubberBand", +function(){ +return (this.rubberbandSelectionMode && this.rectRubber.x != 2147483647 ? this.rectRubber : null); +}); +Clazz_defineMethod(c$, "calcRectRubberBand", +function(){ +var factor = (this.vwr.antialiased ? 2 : 1); +if (this.current.x < this.pressed.x) { +this.rectRubber.x = this.current.x * factor; +this.rectRubber.width = (this.pressed.x - this.current.x) * factor; +} else { +this.rectRubber.x = this.pressed.x * factor; +this.rectRubber.width = (this.current.x - this.pressed.x) * factor; +}if (this.current.y < this.pressed.y) { +this.rectRubber.y = this.current.y * factor; +this.rectRubber.height = (this.pressed.y - this.current.y) * factor; +} else { +this.rectRubber.y = this.pressed.y * factor; +this.rectRubber.height = (this.current.y - this.pressed.y) * factor; +}}); +Clazz_defineMethod(c$, "getDegrees", +function(delta, isX){ +return delta / Math.min(500, isX ? this.vwr.getScreenWidth() : this.vwr.getScreenHeight()) * 180 * this.mouseDragFactor; +}, "~N,~B"); +Clazz_defineMethod(c$, "isZoomArea", +function(x){ +return x > this.vwr.getScreenWidth() * (this.vwr.tm.stereoDoubleFull || this.vwr.tm.stereoDoubleDTI ? 2 : 1) * 98 / 100; +}, "~N"); +Clazz_defineMethod(c$, "getPoint", +function(t){ +var pt = new JU.Point3fi(); +pt.setT(t.get("pt")); +pt.mi = (t.get("modelIndex")).intValue(); +return pt; +}, "java.util.Map"); +Clazz_defineMethod(c$, "findNearestAtom", +function(x, y, nearestPoint, isClicked){ +var index = (this.drawMode || nearestPoint != null ? -1 : this.vwr.findNearestAtomIndexMovable(x, y, false)); +return (index >= 0 && (isClicked || this.mp == null) && !this.vwr.slm.isInSelectionSubset(index) ? -1 : index); +}, "~N,~N,JU.Point3fi,~B"); +Clazz_defineMethod(c$, "isSelectAction", +function(action){ +return (this.bnd(action, [17]) || !this.drawMode && !this.labelMode && this.apm == 1 && this.bnd(action, [1]) || this.dragSelectedMode && this.bnd(this.dragAction, [27, 13]) || this.bnd(action, [22, 35, 32, 34, 36, 30])); +}, "~N"); +Clazz_defineMethod(c$, "enterMeasurementMode", +function(iAtom){ +this.vwr.setPicked(iAtom, true); +this.vwr.setCursor(1); +this.vwr.setPendingMeasurement(this.mp = this.getMP()); +this.measurementQueued = this.mp; +}, "~N"); +Clazz_defineMethod(c$, "getMP", +function(){ +return (J.api.Interface.getInterface("JM.MeasurementPending", this.vwr, "mouse")).set(this.vwr.ms); +}); +Clazz_defineMethod(c$, "addToMeasurement", +function(atomIndex, nearestPoint, dblClick){ +if (atomIndex == -1 && nearestPoint == null || this.mp == null) { +this.exitMeasurementMode(null); +return 0; +}var measurementCount = this.mp.count; +if (this.mp.traceX != -2147483648 && measurementCount == 2) this.mp.setCount(measurementCount = 1); +return (measurementCount == 4 && !dblClick ? measurementCount : this.mp.addPoint(atomIndex, nearestPoint, true)); +}, "~N,JU.Point3fi,~B"); +Clazz_defineMethod(c$, "resetMeasurement", +function(){ +this.exitMeasurementMode(null); +this.measurementQueued = this.getMP(); +}); +Clazz_defineMethod(c$, "exitMeasurementMode", +function(refreshWhy){ +if (this.mp == null) return; +this.vwr.setPendingMeasurement(this.mp = null); +this.vwr.setCursor(0); +if (refreshWhy != null) this.vwr.refresh(3, refreshWhy); +}, "~S"); +Clazz_defineMethod(c$, "getSequence", +function(){ +var a1 = this.measurementQueued.getAtomIndex(1); +var a2 = this.measurementQueued.getAtomIndex(2); +if (a1 < 0 || a2 < 0) return; +try { +var sequence = this.vwr.getSmilesOpt(null, a1, a2, 1048576, null); +this.vwr.setStatusMeasuring("measureSequence", -2, sequence, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "minimize", +function(dragDone){ +var iAtom = this.dragAtomIndex; +if (dragDone) { +this.dragAtomIndex = -1; +this.mkBondPressed = false; +}this.vwr.dragMinimizeAtom(iAtom); +}, "~B"); +Clazz_defineMethod(c$, "queueAtom", +function(atomIndex, ptClicked){ +var n = this.measurementQueued.addPoint(atomIndex, ptClicked, true); +if (atomIndex >= 0) this.vwr.setStatusAtomPicked(atomIndex, "Atom #" + n + ":" + this.vwr.getAtomInfo(atomIndex), null, false); +return n; +}, "~N,JU.Point3fi"); +Clazz_defineMethod(c$, "setMotion", +function(cursor, inMotion){ +switch (this.vwr.currentCursor) { +case 3: +break; +default: +this.vwr.setCursor(cursor); +} +if (inMotion) this.vwr.setInMotion(true); +}, "~N,~B"); +Clazz_defineMethod(c$, "zoomByFactor", +function(dz, x, y){ +if (dz == 0) return; +this.setMotion(8, true); +this.vwr.zoomByFactor(Math.pow(this.mouseWheelFactor, dz), x, y); +this.moved.setCurrent(this.current, 0); +this.vwr.setInMotion(true); +this.zoomTrigger = true; +this.startHoverWatcher(true); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "runScript", +function(script){ +this.vwr.evalStringGUI(script); +}, "~S"); +Clazz_defineMethod(c$, "atomOrPointPicked", +function(atomIndex, ptClicked){ +if (atomIndex < 0) { +this.resetMeasurement(); +if (this.bnd(this.clickAction, [33])) { +this.runScript("select none"); +return; +}if (this.apm != 5 && this.apm != 6) return; +}var n = 2; +switch (this.apm) { +case 28: +case 29: +return; +case 0: +return; +case 25: +case 24: +case 8: +var isDelete = (this.apm == 8); +var isStruts = (this.apm == 25); +if (!this.bnd(this.clickAction, [(isDelete ? 5 : 3)])) return; +if (this.measurementQueued == null || this.measurementQueued.count == 0 || this.measurementQueued.count > 2) { +this.resetMeasurement(); +this.enterMeasurementMode(atomIndex); +}this.addToMeasurement(atomIndex, ptClicked, true); +if (this.queueAtom(atomIndex, ptClicked) != 2) return; +var cAction = (isDelete || this.measurementQueued.isConnected(this.vwr.ms.at, 2) ? " DELETE" : isStruts ? "STRUTS" : ""); +this.runScript("connect " + this.measurementQueued.getMeasurementScript(" ", true) + cAction); +this.resetMeasurement(); +return; +case 21: +n++; +case 20: +n++; +case 18: +case 19: +case 22: +if (!this.bnd(this.clickAction, [20])) return; +if (this.measurementQueued == null || this.measurementQueued.count == 0 || this.measurementQueued.count > n) { +this.resetMeasurement(); +this.enterMeasurementMode(atomIndex); +}this.addToMeasurement(atomIndex, ptClicked, true); +this.queueAtom(atomIndex, ptClicked); +var i = this.measurementQueued.count; +if (i == 1) this.vwr.setPicked(atomIndex, true); +if (i < n) return; +if (this.apm == 22) { +this.getSequence(); +} else { +this.vwr.setStatusMeasuring("measurePicked", n, this.measurementQueued.getStringDetail(), this.measurementQueued.value); +if (this.apm == 18 || this.pickingStyleMeasure == 4) { +this.runScript("measure " + this.measurementQueued.getMeasurementScript(" ", true)); +}}this.resetMeasurement(); +return; +} +var mode = (this.mp != null && this.apm != 1 ? 1 : this.apm); +switch (mode) { +case 3: +if (!this.bnd(this.clickAction, [17])) return; +if (ptClicked == null) { +this.zoomTo(atomIndex); +} else { +this.runScript("zoomTo " + JU.Escape.eP(ptClicked)); +}return; +case 5: +case 6: +if (this.bnd(this.clickAction, [17])) { +this.checkTwoAtomAction(ptClicked, atomIndex); +return; +}} +if (ptClicked != null) return; +var bs; +switch (mode) { +case 1: +if (!this.drawMode && !this.labelMode && this.bnd(this.clickAction, [1])) this.zoomTo(atomIndex); + else if (this.bnd(this.clickAction, [17])) this.vwr.setStatusAtomPicked(atomIndex, null, null, false); +return; +case 2: +if (this.bnd(this.clickAction, [19])) { +this.runScript("set labeltoggle {atomindex=" + atomIndex + "}"); +this.pickLabel(atomIndex); +}return; +case 31: +if (this.bnd(this.clickAction, [0])) { +this.vwr.invertAtomCoord(null, null, null, atomIndex, true); +this.vwr.setStatusAtomPicked(atomIndex, "invert stereo for atomIndex=" + atomIndex, null, false); +}return; +case 7: +if (this.bnd(this.clickAction, [4])) { +bs = JU.BSUtil.newAndSetBit(atomIndex); +this.vwr.deleteAtoms(bs, false); +this.vwr.setStatusAtomPicked(atomIndex, "deleted: " + JU.Escape.eBS(bs), null, false); +}return; +} +var spec = "atomindex=" + atomIndex; +switch (this.apm) { +default: +return; +case 9: +this.selectAtoms(spec); +break; +case 10: +this.selectAtoms("within(group, " + spec + ")"); +break; +case 11: +this.selectAtoms("within(chain, " + spec + ")"); +break; +case 13: +this.selectAtoms("within(polymer, " + spec + ")"); +break; +case 14: +this.selectAtoms("within(structure, " + spec + ")"); +break; +case 12: +this.selectAtoms("within(molecule, " + spec + ")"); +break; +case 16: +this.selectAtoms("within(model, " + spec + ")"); +break; +case 17: +this.selectAtoms("visible and within(element, " + spec + ")"); +break; +case 15: +this.selectAtoms("visible and within(site, " + spec + ")"); +break; +} +this.vwr.clearClickCount(); +this.vwr.setStatusAtomPicked(atomIndex, null, null, false); +}, "~N,JU.Point3fi"); +Clazz_defineMethod(c$, "assignNew", +function(key){ +if (key < 0) { +if (!this.vwr.getModelkit(false).handleAssignNew(this.pressed, this.dragged, this.mp, this.dragAtomIndex, key)) { +this.exitMeasurementMode("bond dropped"); +}} else { +this.vwr.getModelkit(false).handleAssignNew(this.current, this.current, null, this.dragAtomIndex, key); +}this.exitMeasurementMode(null); +}, "~N"); +Clazz_defineMethod(c$, "bondPicked", +function(index){ +switch (this.bondPickingMode) { +case 33: +this.vwr.undoMoveActionClear(-1, 4146, true); +this.vwr.setModelkitPropertySafely("assignBond", Integer.$valueOf(index)); +break; +case 34: +break; +case 8: +this.vwr.deleteBonds(JU.BSUtil.newAndSetBit(index)); +} +}, "~N"); +Clazz_defineMethod(c$, "checkTwoAtomAction", +function(ptClicked, atomIndex){ +var isSpin = (this.apm == 5); +var isSymmetry = (this.apm == 6); +if (!isSpin && !isSymmetry) return; +if (this.vwr.tm.spinOn || this.vwr.tm.navOn || this.vwr.getPendingMeasurement() != null) { +this.resetMeasurement(); +if (this.vwr.tm.spinOn) this.runScript("spin off"); +return; +}if (this.measurementQueued.count >= 2) this.resetMeasurement(); +var queuedAtomCount = this.measurementQueued.count; +if (queuedAtomCount == 1) { +if (ptClicked == null) { +if (this.measurementQueued.getAtomIndex(1) == atomIndex) return; +} else { +if (this.measurementQueued.getAtom(1).distance(ptClicked) == 0) return; +}}if (!isSpin && !isSymmetry) return; +if (atomIndex >= 0 || ptClicked != null) queuedAtomCount = this.queueAtom(atomIndex, ptClicked); +if (queuedAtomCount < 2) { +if (isSpin) this.vwr.scriptStatus(queuedAtomCount == 1 ? J.i18n.GT.$("pick one more atom in order to spin the model around an axis") : J.i18n.GT.$("pick two atoms in order to spin the model around an axis")); + else this.vwr.scriptStatus(queuedAtomCount == 1 ? J.i18n.GT.$("pick one more atom in order to display the symmetry relationship") : J.i18n.GT.$("pick two atoms in order to display the symmetry relationship between them")); +return; +}var s = this.measurementQueued.getMeasurementScript(" ", false); +this.resetMeasurement(); +if (isSpin) this.runScript("spin" + s + " " + this.vwr.getInt(553648157)); + else this.runScript("draw symop " + s + ";print 'all:';show symop " + s); +}, "JU.Point3fi,~N"); +Clazz_defineMethod(c$, "reset", +function(){ +this.runScript("!reset"); +}); +Clazz_defineMethod(c$, "selectAtoms", +function(item){ +if (this.mp != null || this.selectionWorking) return; +this.selectionWorking = true; +var s = (this.rubberbandSelectionMode || this.bnd(this.clickAction, [35]) ? "selected and not (" + item + ") or (not selected) and " : this.bnd(this.clickAction, [32]) ? "selected and not " : this.bnd(this.clickAction, [34]) ? "selected or " : this.clickAction == 0 || this.bnd(this.clickAction, [36]) ? "selected tog " : this.bnd(this.clickAction, [30]) ? "" : null); +if (s != null) { +s += "(" + item + ")"; +try { +var bs = this.vwr.getAtomBitSetEval(null, s); +this.setAtomsPicked(bs, "selected: " + JU.Escape.eBS(bs)); +this.vwr.refresh(3, "selections set"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}this.selectionWorking = false; +}, "~S"); +Clazz_defineMethod(c$, "setAtomsPicked", +function(bs, msg){ +this.vwr.selectStatus(bs, false, 0, false, true); +this.vwr.setStatusAtomPicked(-1, msg, null, false); +}, "JU.BS,~S"); +Clazz_defineMethod(c$, "selectRb", +function(action){ +var bs = this.vwr.ms.findAtomsInRectangle(this.rectRubber); +if (bs.length() > 0) { +var s = JU.Escape.eBS(bs); +if (this.bnd(action, [34])) this.runScript("selectionHalos on;select selected or " + s); + else if (this.bnd(action, [32])) this.runScript("selectionHalos on;select selected and not " + s); + else this.runScript("selectionHalos on;select selected tog " + s); +}this.vwr.refresh(3, "mouseReleased"); +}, "~N"); +Clazz_defineMethod(c$, "toggleMeasurement", +function(){ +if (this.mp == null) return; +var measurementCount = this.mp.count; +if (measurementCount >= 2 && measurementCount <= 4) this.runScript("!measure " + this.mp.getMeasurementScript(" ", true)); +this.exitMeasurementMode(null); +}); +Clazz_defineMethod(c$, "zoomTo", +function(atomIndex){ +this.runScript("zoomTo (atomindex=" + atomIndex + ")"); +this.vwr.setStatusAtomPicked(atomIndex, null, null, false); +}, "~N"); +Clazz_defineMethod(c$, "userActionEnabled", +function(action){ +return this.vwr.isFunction(JV.ActionManager.getActionName(action).toLowerCase()); +}, "~N"); +Clazz_defineMethod(c$, "userAction", +function(action, params){ +if (!this.userActionEnabled(action)) return false; +var result = JS.ScriptEval.runUserAction(JV.ActionManager.getActionName(action), params, this.vwr); +return !JS.SV.vF.equals(result); +}, "~N,~A"); +c$.actionInfo = new Array(47); +c$.actionNames = new Array(47); +{ +JV.ActionManager.pickingModeNames = "off identify label center draw spin symmetry deleteatom deletebond atom group chain molecule polymer structure site model element measure distance angle torsion sequence navigate connect struts dragselected dragmolecule dragatom dragminimize dragminimizemolecule invertstereo assignatom assignbond rotatebond identifybond dragligand dragmodel symop".$plit(" "); +}{ +JV.ActionManager.pickingStyleNames = "toggle selectOrToggle extendedSelect drag measure measureoff".$plit(" "); +}var c$ = Clazz_decorateAsClass(function(){ +this.index = 0; +this.x = 0; +this.y = 0; +this.time = 0; +Clazz_instantialize(this, arguments);}, JV, "MotionPoint", null); +Clazz_defineMethod(c$, "set", +function(index, x, y, time){ +this.index = index; +this.x = x; +this.y = y; +this.time = time; +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[x = " + this.x + " y = " + this.y + " time = " + this.time + " ]"; +}); +var c$ = Clazz_decorateAsClass(function(){ +this.action = 0; +this.nodes = null; +this.ptNext = 0; +this.time0 = 0; +this.vwr = null; +Clazz_instantialize(this, arguments);}, JV, "Gesture", null); +Clazz_makeConstructor(c$, +function(nPoints, vwr){ +this.vwr = vwr; +this.nodes = new Array(nPoints); +for (var i = 0; i < nPoints; i++) this.nodes[i] = new JV.MotionPoint(); + +}, "~N,JV.Viewer"); +Clazz_defineMethod(c$, "setAction", +function(action, time){ +this.action = action; +this.ptNext = 0; +this.time0 = time; +for (var i = 0; i < this.nodes.length; i++) this.nodes[i].index = -1; + +}, "~N,~N"); +Clazz_defineMethod(c$, "add", +function(action, x, y, time){ +this.action = action; +this.getNode(this.ptNext).set(this.ptNext, x, y, time - this.time0); +this.ptNext++; +return this.ptNext; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getTimeDifference", +function(nPoints){ +nPoints = this.getPointCount2(nPoints, 0); +if (nPoints < 2) return 0; +var mp1 = this.getNode(this.ptNext - 1); +var mp0 = this.getNode(this.ptNext - nPoints); +return mp1.time - mp0.time; +}, "~N"); +Clazz_defineMethod(c$, "getSpeedPixelsPerMillisecond", +function(nPoints, nPointsPrevious){ +nPoints = this.getPointCount2(nPoints, nPointsPrevious); +if (nPoints < 2) return 0; +var mp1 = this.getNode(this.ptNext - 1 - nPointsPrevious); +var mp0 = this.getNode(this.ptNext - nPoints - nPointsPrevious); +var dx = ((mp1.x - mp0.x)) / this.vwr.getScreenWidth() * 360; +var dy = ((mp1.y - mp0.y)) / this.vwr.getScreenHeight() * 360; +return Math.sqrt(dx * dx + dy * dy) / (mp1.time - mp0.time); +}, "~N,~N"); +Clazz_defineMethod(c$, "getDX", +function(nPoints, nPointsPrevious){ +nPoints = this.getPointCount2(nPoints, nPointsPrevious); +if (nPoints < 2) return 0; +var mp1 = this.getNode(this.ptNext - 1 - nPointsPrevious); +var mp0 = this.getNode(this.ptNext - nPoints - nPointsPrevious); +return mp1.x - mp0.x; +}, "~N,~N"); +Clazz_defineMethod(c$, "getDY", +function(nPoints, nPointsPrevious){ +nPoints = this.getPointCount2(nPoints, nPointsPrevious); +if (nPoints < 2) return 0; +var mp1 = this.getNode(this.ptNext - 1 - nPointsPrevious); +var mp0 = this.getNode(this.ptNext - nPoints - nPointsPrevious); +return mp1.y - mp0.y; +}, "~N,~N"); +Clazz_defineMethod(c$, "getPointCount", +function(){ +return this.ptNext; +}); +Clazz_defineMethod(c$, "getPointCount2", +function(nPoints, nPointsPrevious){ +if (nPoints > this.nodes.length - nPointsPrevious) nPoints = this.nodes.length - nPointsPrevious; +var n = nPoints + 1; +for (; --n >= 0; ) if (this.getNode(this.ptNext - n - nPointsPrevious).index >= 0) break; + +return n; +}, "~N,~N"); +Clazz_defineMethod(c$, "getNode", +function(i){ +return this.nodes[(i + this.nodes.length + this.nodes.length) % this.nodes.length]; +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.nodes.length == 0) return "" + this; +return JV.binding.Binding.getMouseActionName(this.action, false) + " nPoints = " + this.ptNext + " " + this.nodes[0]; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["JU.BS"], "JV.AnimationManager", ["J.api.Interface", "JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.animationThread = null; +this.vwr = null; +this.animationOn = false; +this.animationFps = 0; +this.firstFrameDelayMs = 0; +this.lastFrameDelayMs = 0; +this.bsVisibleModels = null; +this.animationReplayMode = 1073742070; +this.bsDisplay = null; +this.animationFrames = null; +this.isMovie = false; +this.animationPaused = false; +this.cmi = 0; +this.caf = 0; +this.morphCount = 0; +this.animationDirection = 1; +this.currentDirection = 1; +this.firstFrameIndex = 0; +this.lastFrameIndex = 0; +this.frameStep = 0; +this.backgroundModelIndex = -1; +this.currentMorphModel = 0; +this.firstFrameDelay = 0; +this.lastFrameDelay = 1; +this.lastFramePainted = 0; +this.lastModelPainted = 0; +this.intAnimThread = 0; +this.cai = -1; +Clazz_instantialize(this, arguments);}, JV, "AnimationManager", null); +Clazz_prepareFields (c$, function(){ +this.bsVisibleModels = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "setAnimationOn", +function(animationOn){ +if (animationOn == this.animationOn) return; +if (!animationOn || this.vwr.headless) { +this.stopThread(false); +return; +}if (!this.vwr.tm.spinOn) this.vwr.refresh(3, "Anim:setAnimationOn"); +this.setAnimationRange(-1, -1); +this.resumeAnimation(); +}, "~B"); +Clazz_defineMethod(c$, "stopThread", +function(isPaused){ +var stopped = false; +if (this.animationThread != null) { +this.animationThread.interrupt(); +this.animationThread = null; +stopped = true; +}this.animationPaused = isPaused; +if (stopped && !this.vwr.tm.spinOn) this.vwr.refresh(3, "Viewer:setAnimationOff"); +this.animation(false); +this.vwr.setStatusFrameChanged(false, false); +}, "~B"); +Clazz_defineMethod(c$, "setAnimationNext", +function(){ +return this.setAnimationRelative(this.animationDirection); +}); +Clazz_defineMethod(c$, "currentIsLast", +function(){ +return (this.isMovie ? this.lastFramePainted == this.caf : this.lastModelPainted == this.cmi); +}); +Clazz_defineMethod(c$, "currentFrameIs", +function(f){ +var i = this.cmi; +return (this.morphCount == 0 ? i == f : Math.abs(this.currentMorphModel - f) < 0.001); +}, "~N"); +Clazz_defineMethod(c$, "clear", +function(){ +this.setMovie(null); +this.initializePointers(0); +this.setAnimationOn(false); +this.setModel(0, true); +this.currentDirection = 1; +this.cai = -1; +this.setAnimationDirection(1); +this.setAnimationFps(10); +this.setAnimationReplayMode(1073742070, 0, 0); +this.initializePointers(0); +}); +Clazz_defineMethod(c$, "getModelSpecial", +function(i){ +switch (i) { +case -1: +if (this.animationFrames != null) return "1"; +i = this.firstFrameIndex; +break; +case 0: +if (this.morphCount > 0) return "-" + (1 + this.currentMorphModel); +i = this.cmi; +break; +case 1: +if (this.animationFrames != null) return "" + this.animationFrames.length; +i = this.lastFrameIndex; +break; +} +return this.vwr.getModelNumberDotted(i); +}, "~N"); +Clazz_defineMethod(c$, "setDisplay", +function(bs){ +this.bsDisplay = (bs == null || bs.isEmpty() ? null : JU.BSUtil.copy(bs)); +}, "JU.BS"); +Clazz_defineMethod(c$, "setMorphCount", +function(n){ +this.morphCount = (this.isMovie ? 0 : n); +}, "~N"); +Clazz_defineMethod(c$, "morph", +function(modelIndex){ +var m = Clazz_floatToInt(modelIndex); +if (Math.abs(m - modelIndex) < 0.001) modelIndex = m; + else if (Math.abs(m - modelIndex) > 0.999) modelIndex = m = m + 1; +var f = modelIndex - m; +m -= 1; +if (f == 0) { +this.currentMorphModel = m; +this.setModel(m, true); +return; +}var m1; +this.setModel(m, true); +m1 = m + 1; +this.currentMorphModel = m + f; +if (m1 == m || m1 < 0 || m < 0) return; +this.vwr.ms.morphTrajectories(m, m1, f); +}, "~N"); +Clazz_defineMethod(c$, "setModel", +function(modelIndex, clearBackgroundModel){ +if (modelIndex < 0) this.stopThread(false); +var formerModelIndex = this.cmi; +var modelSet = this.vwr.ms; +var modelCount = (modelSet == null ? 0 : modelSet.mc); +if (modelCount == 1) this.cmi = modelIndex = 0; + else if (modelIndex < 0 || modelIndex >= modelCount) modelIndex = -1; +var ids = null; +var isSameSource = false; +if (this.cmi != modelIndex) { +if (modelCount > 0) { +var ms = this.vwr.ms; +var toDataModel = ms.isJmolDataFrameForModel(modelIndex); +var fromDataModel = ms.isJmolDataFrameForModel(this.cmi); +if (fromDataModel) ms.setJmolDataFrame(null, -1, this.cmi); +if (this.cmi != -1) this.vwr.saveModelOrientation(); +if (fromDataModel || toDataModel) { +ids = ms.getJmolFrameType(modelIndex) + " " + modelIndex + " <-- " + " " + this.cmi + " " + ms.getJmolFrameType(this.cmi); +isSameSource = (ms.getJmolDataSourceFrame(modelIndex) == ms.getJmolDataSourceFrame(this.cmi)); +}}this.cmi = modelIndex; +if (ids != null) { +if (modelIndex >= 0) this.vwr.restoreModelOrientation(modelIndex); +if (isSameSource && (ids.indexOf("quaternion") >= 0 || ids.indexOf("plot") < 0 && ids.indexOf("ramachandran") < 0 && ids.indexOf(" property ") < 0)) { +this.vwr.restoreModelRotation(formerModelIndex); +}}}this.setViewer(clearBackgroundModel); +}, "~N,~B"); +Clazz_defineMethod(c$, "setBackgroundModelIndex", +function(modelIndex){ +var modelSet = this.vwr.ms; +if (modelSet == null || modelIndex < 0 || modelIndex >= modelSet.mc) modelIndex = -1; +this.backgroundModelIndex = modelIndex; +if (modelIndex >= 0) this.vwr.ms.setTrajectory(modelIndex); +this.vwr.setTainted(true); +this.setFrameRangeVisible(); +}, "~N"); +Clazz_defineMethod(c$, "initializePointers", +function(frameStep){ +this.firstFrameIndex = 0; +this.lastFrameIndex = (frameStep == 0 ? 0 : this.getFrameCount()) - 1; +this.frameStep = frameStep; +this.vwr.setFrameVariables(); +}, "~N"); +Clazz_defineMethod(c$, "setAnimationDirection", +function(animationDirection){ +this.animationDirection = animationDirection; +}, "~N"); +Clazz_defineMethod(c$, "setAnimationFps", +function(fps){ +if (fps < 1) fps = 1; +if (fps > 50) fps = 50; +this.animationFps = fps; +this.vwr.setFrameVariables(); +}, "~N"); +Clazz_defineMethod(c$, "setAnimationReplayMode", +function(animationReplayMode, firstFrameDelay, lastFrameDelay){ +this.firstFrameDelay = firstFrameDelay > 0 ? firstFrameDelay : 0; +this.firstFrameDelayMs = Clazz_floatToInt(this.firstFrameDelay * 1000); +this.lastFrameDelay = lastFrameDelay > 0 ? lastFrameDelay : 0; +this.lastFrameDelayMs = Clazz_floatToInt(this.lastFrameDelay * 1000); +this.animationReplayMode = animationReplayMode; +this.vwr.setFrameVariables(); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setAnimationRange", +function(framePointer, framePointer2){ +var frameCount = this.getFrameCount(); +if (framePointer < 0) framePointer = 0; +if (framePointer2 < 0) framePointer2 = frameCount; +if (framePointer >= frameCount) framePointer = frameCount - 1; +if (framePointer2 >= frameCount) framePointer2 = frameCount - 1; +this.firstFrameIndex = framePointer; +this.currentMorphModel = this.firstFrameIndex; +this.lastFrameIndex = framePointer2; +this.frameStep = (framePointer2 < framePointer ? -1 : 1); +this.rewindAnimation(); +}, "~N,~N"); +Clazz_defineMethod(c$, "pauseAnimation", +function(){ +this.stopThread(true); +}); +Clazz_defineMethod(c$, "reverseAnimation", +function(){ +this.currentDirection = -this.currentDirection; +if (!this.animationOn) this.resumeAnimation(); +}); +Clazz_defineMethod(c$, "repaintDone", +function(){ +this.lastModelPainted = this.cmi; +this.lastFramePainted = this.caf; +}); +Clazz_defineMethod(c$, "resumeAnimation", +function(){ +if (this.cmi < 0) this.setAnimationRange(this.firstFrameIndex, this.lastFrameIndex); +if (this.getFrameCount() <= 1) { +this.animation(false); +return; +}this.animation(true); +this.animationPaused = false; +if (this.animationThread == null) { +this.intAnimThread++; +this.animationThread = J.api.Interface.getOption("thread.AnimationThread", this.vwr, "script"); +this.animationThread.setManager(this, this.vwr, Clazz_newIntArray(-1, [this.firstFrameIndex, this.lastFrameIndex, this.intAnimThread])); +this.animationThread.start(); +}}); +Clazz_defineMethod(c$, "setAnimationLast", +function(){ +this.setFrame(this.animationDirection > 0 ? this.lastFrameIndex : this.firstFrameIndex); +}); +Clazz_defineMethod(c$, "rewindAnimation", +function(){ +this.setFrame(this.animationDirection > 0 ? this.firstFrameIndex : this.lastFrameIndex); +this.currentDirection = 1; +this.vwr.setFrameVariables(); +}); +Clazz_defineMethod(c$, "setAnimationPrevious", +function(){ +return this.setAnimationRelative(-this.animationDirection); +}); +Clazz_defineMethod(c$, "getAnimRunTimeSeconds", +function(){ +var frameCount = this.getFrameCount(); +if (this.firstFrameIndex == this.lastFrameIndex || this.lastFrameIndex < 0 || this.firstFrameIndex < 0 || this.lastFrameIndex >= frameCount || this.firstFrameIndex >= frameCount) return 0; +var i0 = Math.min(this.firstFrameIndex, this.lastFrameIndex); +var i1 = Math.max(this.firstFrameIndex, this.lastFrameIndex); +var nsec = 1 * (i1 - i0) / this.animationFps + this.firstFrameDelay + this.lastFrameDelay; +for (var i = i0; i <= i1; i++) nsec += this.vwr.ms.getFrameDelayMs(this.modelIndexForFrame(i)) / 1000; + +return nsec; +}); +Clazz_defineMethod(c$, "setMovie", +function(info){ +this.isMovie = (info != null && info.get("scripts") == null); +if (this.isMovie) { +this.animationFrames = info.get("frames"); +if (this.animationFrames == null || this.animationFrames.length == 0) { +this.isMovie = false; +} else { +this.caf = (info.get("currentFrame")).intValue(); +if (this.caf < 0 || this.caf >= this.animationFrames.length) this.caf = 0; +}this.setFrame(this.caf); +}if (!this.isMovie) { +this.animationFrames = null; +}this.vwr.setBooleanProperty("_ismovie", this.isMovie); +this.bsDisplay = null; +this.currentMorphModel = this.morphCount = 0; +this.vwr.setFrameVariables(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "modelIndexForFrame", +function(i){ +return (this.isMovie ? this.animationFrames[i] - 1 : i); +}, "~N"); +Clazz_defineMethod(c$, "getFrameCount", +function(){ +return (this.isMovie ? this.animationFrames.length : this.vwr.ms.mc); +}); +Clazz_defineMethod(c$, "setFrame", +function(i){ +try { +if (this.isMovie) { +var iModel = this.modelIndexForFrame(i); +this.caf = i; +i = iModel; +} else { +this.caf = i; +}this.setModel(i, true); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~N"); +Clazz_defineMethod(c$, "getUnitCellAtomIndex", +function(){ +return this.cai; +}); +Clazz_defineMethod(c$, "setUnitCellAtomIndex", +function(iAtom){ +this.cai = iAtom; +}, "~N"); +Clazz_defineMethod(c$, "setViewer", +function(clearBackgroundModel){ +this.vwr.ms.setTrajectory(this.cmi); +this.vwr.tm.setFrameOffset(this.cmi); +if (this.cmi == -1 && clearBackgroundModel) this.setBackgroundModelIndex(-1); +this.vwr.setTainted(true); +var nDisplay = this.setFrameRangeVisible(); +this.vwr.setStatusFrameChanged(false, false); +if (!this.vwr.g.selectAllModels) this.setSelectAllSubset(nDisplay < 2); +}, "~B"); +Clazz_defineMethod(c$, "setSelectAllSubset", +function(justOne){ +if (this.vwr.ms != null) this.vwr.slm.setSelectionSubset(justOne ? this.vwr.ms.getModelAtomBitSetIncludingDeleted(this.cmi, true) : this.vwr.ms.getModelAtomBitSetIncludingDeletedBs(this.bsVisibleModels)); +}, "~B"); +Clazz_defineMethod(c$, "setFrameRangeVisible", +function(){ +var nDisplayed = 0; +this.bsVisibleModels.clearAll(); +if (this.backgroundModelIndex >= 0) { +this.bsVisibleModels.set(this.backgroundModelIndex); +nDisplayed = 1; +}if (this.cmi >= 0) { +this.bsVisibleModels.set(this.cmi); +return ++nDisplayed; +}if (this.frameStep == 0) return nDisplayed; +var frameDisplayed = 0; +nDisplayed = 0; +for (var iframe = this.firstFrameIndex; iframe != this.lastFrameIndex; iframe += this.frameStep) { +var i = this.modelIndexForFrame(iframe); +if (!this.vwr.ms.isJmolDataFrameForModel(i)) { +this.bsVisibleModels.set(i); +nDisplayed++; +frameDisplayed = iframe; +}} +var i = this.modelIndexForFrame(this.lastFrameIndex); +if (this.firstFrameIndex == this.lastFrameIndex || !this.vwr.ms.isJmolDataFrameForModel(i) || nDisplayed == 0) { +this.bsVisibleModels.set(i); +if (nDisplayed == 0) this.firstFrameIndex = this.lastFrameIndex; +nDisplayed = 0; +}if (nDisplayed == 1 && this.cmi < 0) this.setFrame(frameDisplayed); +return nDisplayed; +}); +Clazz_defineMethod(c$, "animation", +function(TF){ +this.animationOn = TF; +this.vwr.setBooleanProperty("_animating", TF); +}, "~B"); +Clazz_defineMethod(c$, "setAnimationRelative", +function(direction){ +var frameStep = this.getFrameStep(direction); +var thisFrame = (this.isMovie ? this.caf : this.cmi); +var frameNext = thisFrame + frameStep; +var morphStep = 0; +var nextMorphFrame = 0; +var isDone; +if (this.morphCount > 0) { +morphStep = 1 / (this.morphCount + 1); +nextMorphFrame = this.currentMorphModel + frameStep * morphStep; +isDone = this.isNotInRange(nextMorphFrame); +} else { +isDone = this.isNotInRange(frameNext); +}if (isDone) { +switch (this.animationReplayMode) { +case 1073742070: +return false; +case 528411: +nextMorphFrame = frameNext = (this.animationDirection == this.currentDirection ? this.firstFrameIndex : this.lastFrameIndex); +break; +case 1073742082: +this.currentDirection = -this.currentDirection; +frameNext -= 2 * frameStep; +nextMorphFrame -= 2 * frameStep * morphStep; +} +}if (this.morphCount < 1) { +if (frameNext < 0 || frameNext >= this.getFrameCount()) return false; +this.setFrame(frameNext); +return true; +}this.morph(nextMorphFrame + 1); +return true; +}, "~N"); +Clazz_defineMethod(c$, "isNotInRange", +function(frameNext){ +var f = frameNext - 0.001; +return (f > this.firstFrameIndex && f > this.lastFrameIndex || (f = frameNext + 0.001) < this.firstFrameIndex && f < this.lastFrameIndex); +}, "~N"); +Clazz_defineMethod(c$, "getFrameStep", +function(direction){ +return this.frameStep * direction * this.currentDirection; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV.binding"); +Clazz_load(["java.util.Hashtable"], "JV.binding.Binding", ["java.util.Arrays", "JU.AU", "$.Lst", "$.PT", "$.SB", "J.api.Interface", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.bindings = null; +Clazz_instantialize(this, arguments);}, JV.binding, "Binding", null); +Clazz_prepareFields (c$, function(){ +this.bindings = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +c$.getMouseAction = Clazz_defineMethod(c$, "getMouseAction", +function(clickCount, modifiers, mode){ +if (clickCount > 2) clickCount = 2; +switch (clickCount) { +case 0: +break; +case 1: +clickCount = 256; +break; +default: +clickCount = 512; +} +switch (mode) { +case 4: +mode = 4096; +break; +case 1: +mode = 8192; +break; +case 5: +mode = 16384; +break; +case 2: +mode = 32768; +break; +case 3: +mode = 32; +} +return (modifiers & 63) | clickCount | mode; +}, "~N,~N,~N"); +c$.getMouseActionStr = Clazz_defineMethod(c$, "getMouseActionStr", +function(desc){ +if (desc == null) return 0; +var mouseAction = 0; +desc = desc.toUpperCase(); +if (desc.indexOf("MIDDLE") >= 0) mouseAction = 8; + else if (desc.indexOf("RIGHT") >= 0) mouseAction = 4; + else if (desc.indexOf("WHEEL") >= 0) mouseAction = 32; + else mouseAction = 16; +if (desc.indexOf("DOWN") >= 0) mouseAction |= 4096; + else if (desc.indexOf("DRAG") >= 0) mouseAction |= 8192; + else if (desc.indexOf("UP") >= 0) mouseAction |= 16384; + else if (mouseAction != 32) mouseAction |= 32768; +if (mouseAction != 32 && desc.indexOf("DOUBLE") >= 0) mouseAction |= 512; + else if (mouseAction > 0) mouseAction |= 256; +if (mouseAction != (288) && desc.indexOf("ALT") >= 0) mouseAction |= 8; +if (desc.indexOf("CTRL") >= 0) mouseAction |= 2; +if (desc.indexOf("SHIFT") >= 0) mouseAction |= 1; +return mouseAction; +}, "~S"); +c$.getButtonMods = Clazz_defineMethod(c$, "getButtonMods", +function(mouseAction){ +return mouseAction & 63; +}, "~N"); +c$.getClickCount = Clazz_defineMethod(c$, "getClickCount", +function(mouseAction){ +return (mouseAction & 768) >> 8; +}, "~N"); +c$.getMouseActionName = Clazz_defineMethod(c$, "getMouseActionName", +function(mouseAction, addSortCode){ +var sb = new JU.SB(); +if (mouseAction == 0) return ""; +var isMiddle = (JV.binding.Binding.includes(mouseAction, 8) && !JV.binding.Binding.includes(mouseAction, 16) && !JV.binding.Binding.includes(mouseAction, 4)); +var code = " ".toCharArray(); +if (JV.binding.Binding.includes(mouseAction, 2)) { +sb.append("CTRL+"); +code[5] = 'C'; +}if (!isMiddle && JV.binding.Binding.includes(mouseAction, 8)) { +sb.append("ALT+"); +code[4] = 'A'; +}if (JV.binding.Binding.includes(mouseAction, 1)) { +sb.append("SHIFT+"); +code[3] = 'S'; +}if (JV.binding.Binding.includes(mouseAction, 16)) { +code[2] = 'L'; +sb.append("LEFT"); +} else if (JV.binding.Binding.includes(mouseAction, 4)) { +code[2] = 'R'; +sb.append("RIGHT"); +} else if (isMiddle) { +code[2] = 'M'; +sb.append("MIDDLE"); +} else if (JV.binding.Binding.includes(mouseAction, 32)) { +code[2] = 'W'; +sb.append("WHEEL"); +}if (JV.binding.Binding.includes(mouseAction, 512)) { +sb.append("+double"); +code[1] = '2'; +}if (JV.binding.Binding.includes(mouseAction, 4096)) { +sb.append("+down"); +code[0] = '1'; +} else if (JV.binding.Binding.includes(mouseAction, 8192)) { +sb.append("+drag"); +code[0] = '2'; +} else if (JV.binding.Binding.includes(mouseAction, 16384)) { +sb.append("+up"); +code[0] = '3'; +} else if (JV.binding.Binding.includes(mouseAction, 32768)) { +sb.append("+click"); +code[0] = '4'; +}return (addSortCode ? String.instantialize(code) + ":" + sb.toString() : sb.toString()); +}, "~N,~B"); +Clazz_defineMethod(c$, "getBindings", +function(){ +return this.bindings; +}); +Clazz_defineMethod(c$, "bindAction", +function(mouseAction, jmolAction){ +this.addBinding(mouseAction + "\t" + jmolAction, Clazz_newIntArray(-1, [mouseAction, jmolAction])); +}, "~N,~N"); +Clazz_defineMethod(c$, "bindName", +function(mouseAction, name){ +this.addBinding(mouseAction + "\t", Boolean.TRUE); +this.addBinding(mouseAction + "\t" + name, Clazz_newArray(-1, [JV.binding.Binding.getMouseActionName(mouseAction, false), name])); +}, "~N,~S"); +Clazz_defineMethod(c$, "unbindAction", +function(mouseAction, jmolAction){ +if (mouseAction == 0) this.unbindJmolAction(jmolAction); + else this.removeBinding(null, mouseAction + "\t" + jmolAction); +}, "~N,~N"); +Clazz_defineMethod(c$, "unbindName", +function(mouseAction, name){ +if (name == null) this.unbindMouseAction(mouseAction); + else this.removeBinding(null, mouseAction + "\t" + name); +}, "~N,~S"); +Clazz_defineMethod(c$, "unbindJmolAction", +function(jmolAction){ +var e = this.bindings.keySet().iterator(); +var skey = "\t" + jmolAction; +while (e.hasNext()) { +var key = e.next(); +if (key.endsWith(skey)) this.removeBinding(e, key); +} +}, "~N"); +Clazz_defineMethod(c$, "addBinding", +function(key, value){ +if (JU.Logger.debugging) JU.Logger.debug("adding binding " + key + "\t==\t" + JU.Escape.e(value)); +this.bindings.put(key, value); +}, "~S,~O"); +Clazz_defineMethod(c$, "removeBinding", +function(e, key){ +if (JU.Logger.debugging) JU.Logger.debug("removing binding " + key); +if (e == null) this.bindings.remove(key); + else e.remove(); +}, "java.util.Iterator,~S"); +Clazz_defineMethod(c$, "unbindUserAction", +function(script){ +var e = this.bindings.keySet().iterator(); +var skey = "\t" + script; +while (e.hasNext()) { +var key = e.next(); +if (key.endsWith(skey)) this.removeBinding(e, key); +} +}, "~S"); +Clazz_defineMethod(c$, "unbindMouseAction", +function(mouseAction){ +var e = this.bindings.keySet().iterator(); +var skey = mouseAction + "\t"; +while (e.hasNext()) { +var key = e.next(); +if (key.startsWith(skey)) this.removeBinding(e, key); +} +}, "~N"); +Clazz_defineMethod(c$, "isBound", +function(mouseAction, jmolAction){ +return this.bindings.containsKey(mouseAction + "\t" + jmolAction); +}, "~N,~N"); +Clazz_defineMethod(c$, "isUserAction", +function(mouseAction){ +return this.bindings.containsKey(mouseAction + "\t"); +}, "~N"); +Clazz_defineMethod(c$, "getBindingInfo", +function(actionInfo, actionNames, qualifiers){ +var sb = new JU.SB(); +var qlow = (qualifiers == null || qualifiers.equalsIgnoreCase("all") ? null : qualifiers.toLowerCase()); +var names = new Array(actionInfo.length); +var user = new JU.Lst(); +for (var obj, $obj = this.bindings.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (Clazz_instanceOf(obj, Boolean)) { +} else if (JU.AU.isAS(obj)) { +var action = (obj)[0]; +var script = (obj)[1]; +if (qlow == null || qlow.indexOf("user") >= 0 || action.indexOf(qlow) >= 0 || script.indexOf(qlow) >= 0) user.addLast(obj); +} else { +var info = obj; +var i = info[1]; +if (names[i] == null) names[i] = new JU.Lst(); +var name = JV.binding.Binding.getMouseActionName(info[0], true); +if (qlow == null || (actionNames[i] + ";" + actionInfo[i] + ";" + name).toLowerCase().indexOf(qlow) >= 0) names[i].addLast(name); +}} +for (var i = 0; i < actionInfo.length; i++) { +var n; +if (names[i] == null || (n = names[i].size()) == 0) continue; +this.addInfo(sb, names[i].toArray( new Array(n)), actionNames[i], actionInfo[i]); +} +for (var i = 0; i < user.size(); i++) { +var info = user.get(i); +this.addInfo(sb, Clazz_newArray(-1, ["USER:::" + info[0]]), "user-defined", info[1]); +} +return sb.toString(); +}, "~A,~A,~S"); +Clazz_defineMethod(c$, "addInfo", +function(sb, list, name, info){ +java.util.Arrays.sort(list); +JU.PT.leftJustify(sb, " ", name); +sb.append("\t"); +var sep = ""; +var len = sb.length(); +for (var j = 0; j < list.length; j++) { +sb.append(sep).append(list[j].substring(7)); +sep = ", "; +} +len = sb.length() - len; +if (len < 20) sb.append(" ".substring(0, 20 - len)); +sb.append("\t").append(info).appendC('\n'); +}, "JU.SB,~A,~S,~S"); +c$.includes = Clazz_defineMethod(c$, "includes", +function(mouseAction, mod){ +return ((mouseAction & mod) == mod); +}, "~N,~N"); +c$.newBinding = Clazz_defineMethod(c$, "newBinding", +function(vwr, name){ +return J.api.Interface.getInterface("JV.binding." + name + "Binding", vwr, "script"); +}, "JV.Viewer,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV.binding"); +Clazz_load(["JV.binding.JmolBinding"], "JV.binding.DragBinding", null, function(){ +var c$ = Clazz_declareType(JV.binding, "DragBinding", JV.binding.JmolBinding); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JV.binding.DragBinding, []); +this.set("drag"); +}); +Clazz_overrideMethod(c$, "setSelectBindings", +function(){ +this.bindAction(33040, 30); +this.bindAction(33041, 35); +this.bindAction(33048, 34); +this.bindAction(33049, 32); +this.bindAction(4368, 31); +this.bindAction(8464, 13); +this.bindAction(33040, 17); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV.binding"); +Clazz_load(["JV.binding.Binding"], "JV.binding.JmolBinding", null, function(){ +var c$ = Clazz_declareType(JV.binding, "JmolBinding", JV.binding.Binding); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JV.binding.JmolBinding, []); +this.set("toggle"); +}); +Clazz_defineMethod(c$, "set", +function(name){ +this.name = name; +this.setGeneralBindings(); +this.setSelectBindings(); +}, "~S"); +Clazz_defineMethod(c$, "setSelectBindings", +function(){ +this.bindAction(33296, 30); +this.bindAction(33040, 36); +}); +Clazz_defineMethod(c$, "setGeneralBindings", +function(){ +this.bindAction(8474, 45); +this.bindAction(8454, 45); +this.bindAction(8721, 45); +this.bindAction(8712, 45); +this.bindAction(8464, 25); +this.bindAction(8720, 25); +this.bindAction(8472, 28); +this.bindAction(8453, 28); +this.bindAction(8465, 29); +this.bindAction(8456, 29); +this.bindAction(288, 46); +this.bindAction(8464, 40); +this.bindAction(8464, 16); +this.bindAction(4370, 23); +this.bindAction(4356, 23); +this.bindAction(33040, 2); +this.bindAction(8467, 38); +this.bindAction(8723, 6); +this.bindAction(8475, 39); +this.bindAction(290, 46); +this.bindAction(289, 46); +this.bindAction(291, 46); +this.bindAction(290, 38); +this.bindAction(289, 6); +this.bindAction(291, 39); +this.bindAction(8464, 44); +this.bindAction(8464, 41); +this.bindAction(8465, 42); +this.bindAction(8473, 13); +this.bindAction(8465, 14); +this.bindAction(8472, 27); +this.bindAction(8465, 26); +this.bindAction(8464, 10); +this.bindAction(8472, 9); +this.bindAction(8465, 8); +this.bindAction(33297, 24); +this.bindAction(33288, 24); +this.bindAction(33296, 43); +this.bindAction(8464, 7); +this.bindAction(8464, 11); +this.bindAction(8464, 12); +this.bindAction(33040, 17); +this.bindAction(33040, 22); +this.bindAction(33040, 19); +this.bindAction(33040, 20); +this.bindAction(33296, 37); +this.bindAction(33040, 18); +this.bindAction(33043, 21); +this.bindAction(33040, 4); +this.bindAction(33040, 5); +this.bindAction(33040, 3); +this.bindAction(33040, 0); +this.bindAction(33043, 1); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(null, "JV.ColorManager", ["JU.AU", "J.c.PAL", "JU.C", "$.ColorEncoder", "$.Elements", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ce = null; +this.vwr = null; +this.g3d = null; +this.argbsCpk = null; +this.altArgbsCpk = null; +this.colorData = null; +this.isDefaultColorRasmol = false; +this.colixRubberband = 22; +this.colixBackgroundContrast = 0; +Clazz_instantialize(this, arguments);}, JV, "ColorManager", null); +Clazz_makeConstructor(c$, +function(vwr, gdata){ +this.vwr = vwr; +this.ce = new JU.ColorEncoder(null, vwr); +this.g3d = gdata; +this.argbsCpk = J.c.PAL.argbsCpk; +this.altArgbsCpk = JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk, 0, -1); +}, "JV.Viewer,JU.GData"); +Clazz_defineMethod(c$, "setDefaultColors", +function(isRasmol){ +if (isRasmol) { +this.isDefaultColorRasmol = true; +this.argbsCpk = JU.AU.arrayCopyI(JU.ColorEncoder.getRasmolScale(), -1); +} else { +this.isDefaultColorRasmol = false; +this.argbsCpk = J.c.PAL.argbsCpk; +}this.altArgbsCpk = JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk, 0, -1); +this.ce.createColorScheme((isRasmol ? "Rasmol=" : "Jmol="), true, true); +for (var i = J.c.PAL.argbsCpk.length; --i >= 0; ) this.g3d.changeColixArgb(i, this.argbsCpk[i]); + +for (var i = JV.JC.altArgbsCpk.length; --i >= 0; ) this.g3d.changeColixArgb(JU.Elements.elementNumberMax + i, this.altArgbsCpk[i]); + +}, "~B"); +Clazz_defineMethod(c$, "setRubberbandArgb", +function(argb){ +this.colixRubberband = (argb == 0 ? 0 : JU.C.getColix(argb)); +}, "~N"); +Clazz_defineMethod(c$, "setColixBackgroundContrast", +function(argb){ +this.colixBackgroundContrast = JU.C.getBgContrast(argb); +}, "~N"); +Clazz_defineMethod(c$, "getColixBondPalette", +function(bond, pid){ +var argb = 0; +switch (pid) { +case 19: +return this.ce.getColorIndexFromPalette(bond.getEnergy(), -2.5, -0.5, 7, false); +} +return (argb == 0 ? 10 : JU.C.getColix(argb)); +}, "JM.Bond,~N"); +Clazz_defineMethod(c$, "getColixAtomPalette", +function(atom, pid){ +var argb = 0; +var index; +var id; +var modelSet = this.vwr.ms; +var modelIndex; +var lo; +var hi; +switch (pid) { +case 84: +return (this.colorData == null || atom.i >= this.colorData.length || Float.isNaN(this.colorData[atom.i]) ? 12 : this.ce.getColorIndex(this.colorData[atom.i])); +case 0: +case 1: +var a = this.argbsCpk; +var i = id = atom.getAtomicAndIsotopeNumber(); +if (i >= JU.Elements.elementNumberMax) { +id = JU.Elements.altElementIndexFromNumber(i); +if (id > 0) { +i = id; +id += JU.Elements.elementNumberMax; +a = this.altArgbsCpk; +} else { +i = id = JU.Elements.getElementNumber(i); +}}return this.g3d.getChangeableColix(id, a[i]); +case 2: +index = JU.ColorEncoder.quantize4(atom.getPartialCharge(), -1, 1, JV.JC.PARTIAL_CHARGE_RANGE_SIZE); +return this.g3d.getChangeableColix(JV.JC.PARTIAL_CHARGE_COLIX_RED + index, JV.JC.argbsRwbScale[index]); +case 3: +index = atom.getFormalCharge() - -4; +return this.g3d.getChangeableColix(JV.JC.FORMAL_CHARGE_COLIX_RED + index, JV.JC.argbsFormalCharge[index]); +case 68: +case 5: +if (pid == 68) { +lo = this.vwr.ms.getBfactor100Lo(); +hi = this.vwr.ms.getBfactor100Hi(); +} else { +lo = 0; +hi = 10000; +}return this.ce.getColorIndexFromPalette(atom.getBfactor100(), lo, hi, 7, false); +case 86: +return this.ce.getColorIndexFromPalette(atom.group.getGroupParameter(1111490574), -1, 1, 7, false); +case 70: +hi = this.vwr.ms.getSurfaceDistanceMax(); +return this.ce.getColorIndexFromPalette(atom.getSurfaceDistance100(), 0, hi, 7, false); +case 24: +id = atom.group.groupID; +if (id >= 42) id = 24 + "PGCATU".indexOf(Character.toUpperCase(atom.group.group1)) - 1; +return this.ce.getColorIndexFromPalette(id, 0, 0, 17, false); +case 8: +return this.ce.getColorIndexFromPalette(atom.group.groupID, 0, 0, 5, false); +case 9: +return this.ce.getColorIndexFromPalette(atom.group.groupID, 0, 0, 4, false); +case 75: +return this.ce.getColorIndexFromPalette(atom.group.selectedIndex, 0, atom.group.chain.selectedGroupCount - 1, 1, false); +case 87: +var m = this.vwr.ms.am[atom.mi]; +return this.ce.getColorIndexFromPalette(atom.group.getBioPolymerIndexInModel(), 0, (m.isBioModel ? (m).getBioPolymerCount() : 0) - 1, 1, false); +case 76: +return this.ce.getColorIndexFromPalette(atom.group.getSelectedMonomerIndex(), 0, atom.group.getSelectedMonomerCount() - 1, 1, false); +case 77: +return this.ce.getColorIndexFromPalette(modelSet.getMoleculeIndex(atom.i, true), 0, modelSet.getMoleculeCountInModel(atom.mi) - 1, 0, false); +case 14: +modelIndex = atom.mi; +return this.ce.getColorIndexFromPalette(modelSet.getAltLocIndexInModel(modelIndex, atom.altloc), 0, modelSet.getAltLocCountInModel(modelIndex), 0, false); +case 15: +modelIndex = atom.mi; +return this.ce.getColorIndexFromPalette(modelSet.getInsertionCodeIndexInModel(modelIndex, atom.group.getInsertionCode()), 0, modelSet.getInsertionCountInModel(modelIndex), 0, false); +case 16: +id = atom.getAtomicAndIsotopeNumber(); +argb = this.getJmolOrRasmolArgb(id, 1073741991); +break; +case 17: +id = atom.getAtomicAndIsotopeNumber(); +argb = this.getJmolOrRasmolArgb(id, 1073742116); +break; +case 7: +argb = atom.group.getProteinStructureSubType().getColor(); +break; +case 10: +var chain = atom.getChainID(); +if (JU.ColorEncoder.argbsChainAtom == null) { +JU.ColorEncoder.argbsChainAtom = this.getArgbs(1153433601); +JU.ColorEncoder.argbsChainHetero = this.getArgbs(1612709894); +}chain = ((chain < 0 ? 0 : chain >= 256 ? chain - 256 : chain) & 0x1F) % JU.ColorEncoder.argbsChainAtom.length; +argb = (atom.isHetero() ? JU.ColorEncoder.argbsChainHetero : JU.ColorEncoder.argbsChainAtom)[chain]; +break; +} +return (argb == 0 ? 22 : JU.C.getColix(argb)); +}, "JM.Atom,~N"); +Clazz_defineMethod(c$, "getArgbs", +function(tok){ +return this.vwr.getJBR().getArgbs(tok); +}, "~N"); +Clazz_defineMethod(c$, "getJmolOrRasmolArgb", +function(id, argb){ +switch (argb) { +case 1073741991: +if (id >= JU.Elements.elementNumberMax) break; +return this.ce.getArgbFromPalette(id, 0, 0, 2); +case 1073742116: +if (id >= JU.Elements.elementNumberMax) break; +return this.ce.getArgbFromPalette(id, 0, 0, 3); +default: +return argb; +} +return JV.JC.altArgbsCpk[JU.Elements.altElementIndexFromNumber(id)]; +}, "~N,~N"); +Clazz_defineMethod(c$, "getElementColix", +function(elemNo){ +var a = this.argbsCpk; +var i = elemNo; +if (i > JU.Elements.elementNumberMax) { +var ialt = JU.Elements.altElementIndexFromNumber(i); +if (ialt > 0) { +i = ialt; +a = this.altArgbsCpk; +} else { +i = JU.Elements.getElementNumber(i); +}}return JU.C.getColix(a[i]); +}, "~N"); +Clazz_defineMethod(c$, "setElementArgb", +function(elemNo, argb){ +if (argb == 1073741991 && this.argbsCpk === J.c.PAL.argbsCpk) return; +argb = this.getJmolOrRasmolArgb(elemNo, argb); +if (this.argbsCpk === J.c.PAL.argbsCpk) { +this.argbsCpk = JU.AU.arrayCopyRangeI(J.c.PAL.argbsCpk, 0, -1); +this.altArgbsCpk = JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk, 0, -1); +}var id = elemNo; +if (id < JU.Elements.elementNumberMax) { +this.argbsCpk[id] = argb; +} else { +id = JU.Elements.altElementIndexFromNumber(elemNo); +this.altArgbsCpk[id] = argb; +id += JU.Elements.elementNumberMax; +}this.g3d.changeColixArgb(id, argb); +this.vwr.setModelkitPropertySafely("updatemodelkeys", null); +}, "~N,~N"); +Clazz_defineMethod(c$, "getPropertyColorRange", +function(){ +return (this.ce.isReversed ? Clazz_newFloatArray(-1, [this.ce.hi, this.ce.lo]) : Clazz_newFloatArray(-1, [this.ce.lo, this.ce.hi])); +}); +Clazz_defineMethod(c$, "setPropertyColorRangeData", +function(data, bs){ +this.colorData = data; +this.ce.currentPalette = this.ce.createColorScheme(this.vwr.g.propertyColorScheme, true, false); +this.ce.hi = -3.4028235E38; +this.ce.lo = 3.4028235E38; +if (data == null) return; +var isAll = (bs == null); +var d; +var i0 = (isAll ? data.length - 1 : bs.nextSetBit(0)); +for (var i = i0; i >= 0; i = (isAll ? i - 1 : bs.nextSetBit(i + 1))) { +if (Float.isNaN(d = data[i])) continue; +this.ce.hi = Math.max(this.ce.hi, d); +this.ce.lo = Math.min(this.ce.lo, d); +} +this.setPropertyColorRange(this.ce.lo, this.ce.hi); +}, "~A,JU.BS"); +Clazz_defineMethod(c$, "setPropertyColorRange", +function(min, max){ +this.ce.setRange(min, max, min > max); +if (JU.Logger.debugging) JU.Logger.debug("ColorManager: color \"" + this.ce.getCurrentColorSchemeName() + "\" range " + min + " " + max); +}, "~N,~N"); +Clazz_defineMethod(c$, "setPropertyColorScheme", +function(colorScheme, isTranslucent, isOverloaded){ +var isReset = (colorScheme.length == 0); +if (isReset) colorScheme = "="; +var range = this.getPropertyColorRange(); +this.ce.currentPalette = this.ce.createColorScheme(colorScheme, true, isOverloaded); +if (!isReset) this.setPropertyColorRange(range[0], range[1]); +this.ce.isTranslucent = isTranslucent; +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getColorSchemeList", +function(colorScheme){ +var iPt = (colorScheme == null || colorScheme.length == 0) ? this.ce.currentPalette : this.ce.createColorScheme(colorScheme, true, false); +return JU.ColorEncoder.getColorSchemeList(this.ce.getColorSchemeArray(iPt)); +}, "~S"); +Clazz_defineMethod(c$, "getColorEncoder", +function(colorScheme){ +if (colorScheme == null || colorScheme.length == 0) return this.ce; +var c = new JU.ColorEncoder(this.ce, this.vwr); +c.currentPalette = c.createColorScheme(colorScheme, false, true); +return (c.currentPalette == 2147483647 ? null : c); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["javajs.api.BytePoster", "java.util.Hashtable"], "JV.FileManager", ["java.net.URL", "$.URLEncoder", "JU.AU", "$.Base64", "$.LimitedLineReader", "$.Lst", "$.OC", "$.PT", "$.Rdr", "$.SB", "J.api.Interface", "J.io.FileReader", "JU.Escape", "$.Logger", "JV.JC", "$.JmolAsyncException", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.spartanDoc = null; +this.jzu = null; +this.pathForAllFiles = ""; +this.nameAsGiven = "zapped"; +this.fullPathName = null; +this.lastFullPathName = null; +this.lastNameAsGiven = "zapped"; +this.fileName = null; +this.lastFileType = null; +this.appletDocumentBaseURL = null; +this.appletProxy = null; +this.cache = null; +this.pngjCache = null; +this.spardirCache = null; +Clazz_instantialize(this, arguments);}, JV, "FileManager", null, javajs.api.BytePoster); +Clazz_prepareFields (c$, function(){ +this.cache = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +this.clear(); +}, "JV.Viewer"); +Clazz_defineMethod(c$, "spartanUtil", +function(){ +return (this.spartanDoc == null ? this.spartanDoc = (J.api.Interface.getInterface("J.adapter.readers.spartan.SpartanUtil", this.vwr, "fm getSpartanUtil()")).set(this) : this.spartanDoc); +}); +Clazz_defineMethod(c$, "getJzu", +function(){ +return (this.jzu == null ? this.jzu = J.api.Interface.getOption("io.JmolUtil", this.vwr, "file") : this.jzu); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.setFileInfo( Clazz_newArray(-1, [this.vwr.getZapName()])); +this.spardirCache = null; +}); +Clazz_defineMethod(c$, "setLoadState", +function(htParams){ +if (this.vwr.getPreserveState()) { +htParams.put("loadState", this.vwr.g.getLoadState(htParams)); +}}, "java.util.Map"); +Clazz_defineMethod(c$, "getPathForAllFiles", +function(){ +return this.pathForAllFiles; +}); +Clazz_defineMethod(c$, "setPathForAllFiles", +function(value){ +if (value.length > 0 && !value.endsWith("/") && !value.endsWith("|")) value += "/"; +return this.pathForAllFiles = value; +}, "~S"); +Clazz_defineMethod(c$, "setFileInfo", +function(fileInfo){ +if (fileInfo == null) { +this.fullPathName = this.lastFullPathName; +this.nameAsGiven = this.lastNameAsGiven; +return; +}this.fullPathName = fileInfo[0]; +this.fileName = fileInfo[Math.min(1, fileInfo.length - 1)]; +this.nameAsGiven = fileInfo[Math.min(2, fileInfo.length - 1)]; +if (!this.nameAsGiven.equals("zapped")) { +this.lastNameAsGiven = this.nameAsGiven; +this.lastFullPathName = this.fullPathName; +}}, "~A"); +Clazz_defineMethod(c$, "getFileInfo", +function(){ +return Clazz_newArray(-1, [this.fullPathName, this.fileName, this.nameAsGiven]); +}); +Clazz_defineMethod(c$, "getFullPathName", +function(orPrevious){ +var f = (this.fullPathName != null ? this.fullPathName : this.nameAsGiven); +return (!orPrevious || !f.equals("zapped") && !f.equals("string") ? f : this.lastFullPathName != null ? this.lastFullPathName : this.lastNameAsGiven); +}, "~B"); +Clazz_defineMethod(c$, "getFileType", +function(){ +return this.lastFileType; +}); +Clazz_defineMethod(c$, "setFileType", +function(fileType){ +this.lastFileType = fileType; +}, "~S"); +Clazz_defineMethod(c$, "getFileName", +function(){ +return this.fileName != null ? this.fileName : this.nameAsGiven; +}); +Clazz_defineMethod(c$, "getAppletDocumentBase", +function(){ +return (this.appletDocumentBaseURL == null ? "" : this.appletDocumentBaseURL.toString()); +}); +Clazz_defineMethod(c$, "setAppletContext", +function(documentBase){ +try { +System.out.println("setting document base to \"" + documentBase + "\""); +this.appletDocumentBaseURL = (documentBase.length == 0 ? null : new java.net.URL(Clazz_castNullAs("java.net.URL"), documentBase, null)); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +System.out.println("error setting document base to " + documentBase); +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "setAppletProxy", +function(appletProxy){ +this.appletProxy = (appletProxy == null || appletProxy.length == 0 ? null : appletProxy); +}, "~S"); +Clazz_defineMethod(c$, "createAtomSetCollectionFromFile", +function(name, htParams, isAppend){ +if (htParams.get("atomDataOnly") == null) this.setLoadState(htParams); +var name0 = name; +var pt = name.indexOf("::"); +if (pt < 0) { +name = this.vwr.resolveDatabaseFormat(name); +}if (!name0.equals(name) && name0.indexOf("/") < 0 && JV.Viewer.hasDatabasePrefix(name0)) { +htParams.put("dbName", name0); +}if (name.endsWith("%2D%")) { +var filter = htParams.get("filter"); +htParams.put("filter", (filter == null ? "" : filter) + "2D"); +name = name.substring(0, name.length - 4); +}var nameAsGiven = (pt >= 0 ? name.substring(pt + 2) : name); +var fileType = (pt >= 0 ? name.substring(0, pt) : null); +JU.Logger.info("\nFileManager.getAtomSetCollectionFromFile(" + nameAsGiven + ")" + (name.equals(nameAsGiven) ? "" : " //" + name)); +var names = this.getClassifiedName(nameAsGiven, true); +if (names.length == 1) return names[0]; +var fullPathName = names[0]; +var fileName = names[1]; +htParams.put("fullPathName", (fileType == null ? "" : fileType + "::") + JV.FileManager.fixDOSName(fullPathName)); +if (this.vwr.getBoolean(603979879) && this.vwr.getBoolean(603979825)) this.vwr.getChimeMessenger().update(fullPathName); +var fileReader = new J.io.FileReader(this.vwr, fileName, fullPathName, nameAsGiven, fileType, null, htParams, isAppend); +fileReader.run(); +return fileReader.getAtomSetCollection(); +}, "~S,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSetCollectionFromFiles", +function(fileNames, htParams, isAppend){ +this.setLoadState(htParams); +var fullPathNames = new Array(fileNames.length); +var namesAsGiven = new Array(fileNames.length); +var fileTypes = new Array(fileNames.length); +for (var i = 0; i < fileNames.length; i++) { +var pt = fileNames[i].indexOf("::"); +var nameAsGiven = (pt >= 0 ? fileNames[i].substring(pt + 2) : fileNames[i]); +var fileType = (pt >= 0 ? fileNames[i].substring(0, pt) : null); +var names = this.getClassifiedName(nameAsGiven, true); +if (names.length == 1) return names[0]; +fullPathNames[i] = names[0]; +fileNames[i] = JV.FileManager.fixDOSName(names[0]); +fileTypes[i] = fileType; +namesAsGiven[i] = nameAsGiven; +} +htParams.put("fullPathNames", fullPathNames); +htParams.put("fileTypes", fileTypes); +var filesReader = this.newFilesReader(fullPathNames, namesAsGiven, fileTypes, null, htParams, isAppend); +filesReader.run(); +return filesReader.getAtomSetCollection(); +}, "~A,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSetCollectionFromString", +function(strModel, htParams, isAppend){ +this.setLoadState(htParams); +var isAddH = (strModel.indexOf("Viewer.AddHydrogens") >= 0); +var fnames = (isAddH ? this.getFileInfo() : null); +var fileReader = new J.io.FileReader(this.vwr, "string", null, null, null, JU.Rdr.getBR(strModel), htParams, isAppend); +fileReader.run(); +if (fnames != null) this.setFileInfo(fnames); +if (!isAppend && !((typeof(fileReader.getAtomSetCollection())=='string'))) { +this.setFileInfo( Clazz_newArray(-1, [strModel === "5\n\nC 0 0 0\nH .63 .63 .63\nH -.63 -.63 .63\nH -.63 .63 -.63\nH .63 -.63 -.63" ? "Jmol Model Kit" : "string"])); +}return fileReader.getAtomSetCollection(); +}, "~S,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSeCollectionFromStrings", +function(arrayModels, loadScript, htParams, isAppend){ +if (!htParams.containsKey("isData")) { +var oldSep = "\"" + this.vwr.getDataSeparator() + "\""; +var tag = "\"" + (isAppend ? "append" : "model") + " inline\""; +var sb = new JU.SB(); +sb.append("set dataSeparator \"~~~next file~~~\";\ndata ").append(tag); +for (var i = 0; i < arrayModels.length; i++) { +if (i > 0) sb.append("~~~next file~~~"); +sb.append(arrayModels[i]); +} +sb.append("end ").append(tag).append(";set dataSeparator ").append(oldSep); +loadScript.appendSB(sb); +}this.setLoadState(htParams); +JU.Logger.info("FileManager.getAtomSetCollectionFromStrings(string[])"); +var fullPathNames = new Array(arrayModels.length); +var readers = new Array(arrayModels.length); +for (var i = 0; i < arrayModels.length; i++) { +fullPathNames[i] = "string[" + i + "]"; +readers[i] = JV.FileManager.newDataReader(this.vwr, arrayModels[i]); +} +var filesReader = this.newFilesReader(fullPathNames, fullPathNames, null, readers, htParams, isAppend); +filesReader.run(); +return filesReader.getAtomSetCollection(); +}, "~A,JU.SB,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSeCollectionFromArrayData", +function(arrayData, htParams, isAppend){ +JU.Logger.info("FileManager.getAtomSetCollectionFromArrayData(Vector)"); +var nModels = arrayData.size(); +var fullPathNames = new Array(nModels); +var readers = new Array(nModels); +for (var i = 0; i < nModels; i++) { +fullPathNames[i] = "String[" + i + "]"; +readers[i] = JV.FileManager.newDataReader(this.vwr, arrayData.get(i)); +} +var filesReader = this.newFilesReader(fullPathNames, fullPathNames, null, readers, htParams, isAppend); +filesReader.run(); +return filesReader.getAtomSetCollection(); +}, "JU.Lst,java.util.Map,~B"); +c$.newDataReader = Clazz_defineMethod(c$, "newDataReader", +function(vwr, data){ +var reader = ((typeof(data)=='string') ? "String" : JU.AU.isAS(data) ? "Array" : Clazz_instanceOf(data,"JU.Lst") ? "List" : null); +if (reader == null) return null; +var dr = J.api.Interface.getInterface("JU." + reader + "DataReader", vwr, "file"); +return dr.setData(data); +}, "JV.Viewer,~O"); +Clazz_defineMethod(c$, "newFilesReader", +function(fullPathNames, namesAsGiven, fileTypes, readers, htParams, isAppend){ +var fr = J.api.Interface.getOption("io.FilesReader", this.vwr, "file"); +fr.set(this, this.vwr, fullPathNames, namesAsGiven, fileTypes, readers, htParams, isAppend); +return fr; +}, "~A,~A,~A,~A,java.util.Map,~B"); +Clazz_defineMethod(c$, "createAtomSetCollectionFromReader", +function(fullPathName, name, reader, htParams){ +var fileReader = new J.io.FileReader(this.vwr, name, fullPathName, null, null, reader, htParams, false); +fileReader.run(); +return fileReader.getAtomSetCollection(); +}, "~S,~S,~O,java.util.Map"); +Clazz_defineMethod(c$, "getBufferedInputStream", +function(fullPathName){ +var ret = this.getBufferedReaderOrErrorMessageFromName(fullPathName, new Array(2), true, true); +return (Clazz_instanceOf(ret,"java.io.BufferedInputStream") ? ret : null); +}, "~S"); +Clazz_defineMethod(c$, "getBufferedInputStreamOrErrorMessageFromName", +function(name, fullName, showMsg, checkOnly, outputBytes, allowReader, allowCached){ +var bis = null; +var ret = null; +var errorMessage = null; +allowCached = allowCached || name.startsWith("cache://"); +var cacheBytes = (allowCached && outputBytes == null ? cacheBytes = this.getPngjOrDroppedBytes(fullName, name) : null); +try { +if (allowCached && name.indexOf(".png") >= 0 && this.pngjCache == null && !this.vwr.getBoolean(603979960)) this.pngjCache = new java.util.Hashtable(); +if (cacheBytes == null) { +var isPngjBinaryPost = (name.indexOf("?POST?_PNGJBIN_") >= 0); +var isPngjPost = (isPngjBinaryPost || name.indexOf("?POST?_PNGJ_") >= 0); +if (name.indexOf("?POST?_PNG_") > 0 || isPngjPost) { +var errMsg = new Array(1); +var bytes = this.vwr.getImageAsBytes(isPngjPost ? "PNGJ" : "PNG", 0, 0, -1, errMsg); +if (errMsg[0] != null) return errMsg[0]; +if (isPngjBinaryPost) { +outputBytes = bytes; +name = JU.PT.rep(name, "?_", "=_"); +} else { +name = new JU.SB().append(name).append("=").appendSB(JU.Base64.getBase64(bytes)).toString(); +}}var iurl = JU.OC.urlTypeIndex(name); +var isURL = (iurl >= 0); +var post = null; +if (isURL && (iurl = name.indexOf("?POST?")) >= 0) { +post = name.substring(iurl + 6); +name = name.substring(0, iurl); +}var isApplet = (this.appletDocumentBaseURL != null); +if (isApplet || isURL) { +if (isApplet && isURL && this.appletProxy != null) name = this.appletProxy + "?url=" + this.urlEncode(name); +var url = (isApplet ? new java.net.URL(this.appletDocumentBaseURL, name, null) : new java.net.URL(Clazz_castNullAs("java.net.URL"), name, null)); +if (checkOnly) return null; +name = url.toString(); +if (showMsg && name.toLowerCase().indexOf("password") < 0) JU.Logger.info("FileManager opening url " + name); +ret = this.vwr.apiPlatform.getURLContents(url, outputBytes, post, false); +var bytes = null; +if (Clazz_instanceOf(ret,"JU.SB")) { +var sb = ret; +if (allowReader && !JU.Rdr.isBase64(sb)) return JU.Rdr.getBR(sb.toString()); +bytes = JU.Rdr.getBytesFromSB(sb); +} else if (JU.AU.isAB(ret)) { +bytes = ret; +}if (bytes != null) ret = JU.Rdr.getBIS(bytes); +} else if (!allowCached || (cacheBytes = this.cacheGet(name, true)) == null) { +if (showMsg) JU.Logger.info("FileManager opening file " + name); +ret = this.vwr.apiPlatform.getBufferedFileInputStream(name); +}if ((typeof(ret)=='string')) return ret; +}bis = (cacheBytes == null ? ret : JU.Rdr.getBIS(cacheBytes)); +if (checkOnly) { +bis.close(); +bis = null; +}return bis; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +try { +if (bis != null) bis.close(); +} catch (e1) { +if (Clazz_exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +errorMessage = "" + e; +} else { +throw e; +} +} +return errorMessage; +}, "~S,~S,~B,~B,~A,~B,~B"); +c$.getBufferedReaderForResource = Clazz_defineMethod(c$, "getBufferedReaderForResource", +function(vwr, resourceClass, classPath, resourceName){ +var url; +{ +}resourceName = (url == null ? vwr.vwrOptions.get("codePath") + classPath + resourceName : url.getFile()); +if (vwr.async) { +var bytes = vwr.fm.cacheGet(resourceName, false); +if (bytes == null) throw new JV.JmolAsyncException(resourceName); +return JU.Rdr.getBufferedReader(JU.Rdr.getBIS(bytes), null); +}return vwr.fm.getBufferedReaderOrErrorMessageFromName(resourceName, Clazz_newArray(-1, [null, null]), false, true); +}, "JV.Viewer,~O,~S,~S"); +Clazz_defineMethod(c$, "urlEncode", +function(name){ +try { +return java.net.URLEncoder.encode(name, "utf-8"); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +return name; +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "getFullPathNameOrError", +function(filename, getStream, ret){ +var names = this.getClassifiedName(JV.JC.fixProtocol(filename), true); +if (names == null || names[0] == null || names.length < 2) return Clazz_newArray(-1, [null, "cannot read file name: " + filename]); +var name = names[0]; +var fullPath = JV.FileManager.fixDOSName(names[0]); +name = JU.Rdr.getZipRoot(name); +var errMsg = this.getBufferedInputStreamOrErrorMessageFromName(name, fullPath, false, !getStream, null, false, !getStream); +ret[0] = fullPath; +if ((typeof(errMsg)=='string')) ret[1] = errMsg; +return errMsg; +}, "~S,~B,~A"); +Clazz_defineMethod(c$, "getBufferedReaderOrErrorMessageFromName", +function(name, fullPathNameReturn, isBinary, doSpecialLoad){ +name = JV.JC.fixProtocol(name); +var data = this.cacheGet(name, false); +var isBytes = JU.AU.isAB(data); +var bytes = (isBytes ? data : null); +if (name.startsWith("cache://")) { +if (data == null) return "cannot read " + name; +if (isBytes) { +bytes = data; +} else { +return JU.Rdr.getBR(data); +}}var names = this.getClassifiedName(name, true); +if (names == null) return "cannot read file name: " + name; +if (fullPathNameReturn != null) fullPathNameReturn[0] = JV.FileManager.fixDOSName(names[0]); +return this.getUnzippedReaderOrStreamFromName(names[0], bytes, false, isBinary, false, doSpecialLoad, null); +}, "~S,~A,~B,~B"); +Clazz_defineMethod(c$, "getUnzippedReaderOrStreamFromName", +function(name, bytesOrStream, allowZipStream, forceInputStream, isTypeCheckOnly, doSpecialLoad, htParams){ +if (doSpecialLoad && bytesOrStream == null) { +var o = (name.endsWith(".spt") ? Clazz_newArray(-1, [null, null, null]) : name.indexOf(".spardir") < 0 ? null : this.spartanUtil().getFileList(name, isTypeCheckOnly)); +if (o != null) return o; +}name = JV.JC.fixProtocol(name); +if (bytesOrStream == null && (bytesOrStream = this.getCachedPngjBytes(name)) != null && htParams != null) htParams.put("sourcePNGJ", Boolean.TRUE); +name = name.$replace("#_DOCACHE_", ""); +var fullName = name; +var subFileList = null; +if (name.indexOf("|") >= 0) { +subFileList = JU.PT.split(name.$replace('\\', '/'), "|"); +if (bytesOrStream == null) JU.Logger.info("FileManager opening zip " + name); +name = subFileList[0]; +}var t = (bytesOrStream == null ? this.getBufferedInputStreamOrErrorMessageFromName(name, fullName, true, false, null, !forceInputStream, true) : JU.AU.isAB(bytesOrStream) ? JU.Rdr.getBIS(bytesOrStream) : bytesOrStream); +try { +if ((typeof(t)=='string') || Clazz_instanceOf(t,"java.io.BufferedReader")) return t; +var bis = t; +if (JU.Rdr.isGzipS(bis)) bis = JU.Rdr.getUnzippedInputStream(this.vwr.getJzt(), bis); + else if (JU.Rdr.isBZip2S(bis)) bis = JU.Rdr.getUnzippedInputStreamBZip2(this.vwr.getJzt(), bis); +if (forceInputStream && subFileList == null) return bis; +if (JU.Rdr.isCompoundDocumentS(bis)) { +var doc = J.api.Interface.getInterface("JU.CompoundDocument", this.vwr, "file"); +doc.setDocStream(this.vwr.getJzt(), bis); +var s = doc.getAllDataFiles("Molecule", "Input").toString(); +return (forceInputStream ? JU.Rdr.getBIS(s.getBytes()) : JU.Rdr.getBR(s)); +}if (JU.Rdr.isMessagePackS(bis) || JU.Rdr.isPickleS(bis)) return bis; +bis = JU.Rdr.getPngZipStream(bis, true); +var o = null; +if (JU.Rdr.isZipS(bis)) { +if (allowZipStream) return this.vwr.getJzt().newZipInputStream(bis); +o = this.vwr.getJzt().getZipFileDirectory(bis, subFileList, 1, forceInputStream); +} else if (JU.Rdr.isTar(bis)) { +o = this.vwr.getJzt().getZipFileDirectory(bis, subFileList, 1, forceInputStream); +} else if (JU.Rdr.isBinary(bis, 32)) { +return bis; +}if (o != null) { +if (!(Clazz_instanceOf(o,"java.io.BufferedInputStream"))) return ((typeof(o)=='string') ? JU.Rdr.getBR(o) : o); +bis = JU.Rdr.getUnzippedInputStream(this.vwr.getJzt(), o); +}return (forceInputStream ? bis : JU.Rdr.getBufferedReader(bis, null)); +} catch (ioe) { +if (Clazz_exceptionOf(ioe, Exception)){ +return ioe.toString(); +} else { +throw ioe; +} +} +}, "~S,~O,~B,~B,~B,~B,java.util.Map"); +Clazz_defineMethod(c$, "getZipDirectory", +function(fileName, addManifest, allowCached){ +var t = this.getBufferedInputStreamOrErrorMessageFromName(fileName, fileName, false, false, null, false, allowCached); +return this.vwr.getJzt().getZipDirectoryAndClose(t, addManifest ? "JmolManifest" : null); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getFileAsBytes", +function(name, out){ +if (name == null) return null; +var fullName = name; +var subFileList = null; +if (name.indexOf("|") >= 0) { +subFileList = JU.PT.split(name, "|"); +name = subFileList[0]; +}var bytes = (subFileList != null ? null : this.getPngjOrDroppedBytes(fullName, name)); +if (bytes == null) { +var t = this.getBufferedInputStreamOrErrorMessageFromName(name, fullName, false, false, null, false, true); +if ((typeof(t)=='string')) return "Error:" + t; +try { +var bis = t; +bytes = (out != null || subFileList == null || subFileList.length <= 1 || !JU.Rdr.isZipS(bis) && !JU.Rdr.isPngZipStream(bis) && !JU.Rdr.isTar(bis) ? JU.Rdr.getStreamAsBytes(bis, out) : this.vwr.getJzt().getZipFileContentsAsBytes(bis, subFileList, 1)); +bis.close(); +} catch (ioe) { +if (Clazz_exceptionOf(ioe, Exception)){ +return ioe.toString(); +} else { +throw ioe; +} +} +}if (out == null || !JU.AU.isAB(bytes)) return bytes; +out.write(bytes, 0, -1); +return (bytes).length + " bytes"; +}, "~S,JU.OC"); +Clazz_defineMethod(c$, "getFileAsMap", +function(name, type, asBytes){ +var bdata = (asBytes ? null : new java.util.Hashtable()); +var t; +if (name == null) { +var errMsg = new Array(1); +var bytes = this.vwr.getImageAsBytes(type, -1, -1, -1, errMsg); +if (errMsg[0] != null) { +if (asBytes) return Clazz_newByteArray (0, 0); +bdata.put("_ERROR_", errMsg[0]); +return bdata; +}if (bdata == null) return bytes; +t = JU.Rdr.getBIS(bytes); +} else { +var data = new Array(2); +t = this.getFullPathNameOrError(name, true, data); +if ((typeof(t)=='string')) { +if (asBytes) return Clazz_newByteArray (0, 0); +bdata.put("_ERROR_", t); +return bdata; +}if (!this.checkSecurity(data[0])) { +if (asBytes) return Clazz_newByteArray (0, 0); +bdata.put("_ERROR_", "java.io. Security exception: cannot read file " + data[0]); +return bdata; +}}try { +if (asBytes) { +return JU.Rdr.streamToBytes(t); +}this.vwr.getJzt().readFileAsMap(t, bdata, name); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (asBytes) return Clazz_newByteArray (0, 0); +bdata.clear(); +bdata.put("_ERROR_", "" + e); +} else { +throw e; +} +} +return bdata; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getFileDataAsString", +function(data, nBytesMax, doSpecialLoad, allowBinary, checkProtected){ +data[1] = ""; +var name = data[0]; +if (name == null) return false; +var t = this.getBufferedReaderOrErrorMessageFromName(name, data, false, doSpecialLoad); +if ((typeof(t)=='string')) { +data[1] = t; +return false; +}if (checkProtected && !this.checkSecurity(data[0])) { +data[1] = "java.io. Security exception: cannot read file " + data[0]; +return false; +}try { +if (Clazz_instanceOf(t,"java.io.BufferedInputStream")) { +if (name.toUpperCase().endsWith(".PNG") || JV.FileManager.isEmbeddable(name)) t = JU.Rdr.getBufferedReader(t, null); +}return JU.Rdr.readAllAsString(t, nBytesMax, allowBinary, data, 1); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~A,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "checkSecurity", +function(f){ +if (!f.startsWith("file:")) return true; +var pt = f.lastIndexOf('/'); +if (f.lastIndexOf(":/") == pt - 1 || f.indexOf("/.") >= 0 || f.lastIndexOf('.') < f.lastIndexOf('/')) return false; +return true; +}, "~S"); +Clazz_defineMethod(c$, "loadImage", +function(nameOrBytes, echoName, forceSync){ +var image = null; +var nameOrError = null; +var bytes = null; +var isPopupImage = (echoName != null && echoName.startsWith("\1")); +if (isPopupImage) { +if (echoName.equals("\1closeall\1null")) return this.vwr.loadImageData(Boolean.TRUE, "\1closeall", "\1closeall", null); +if ("\1close".equals(nameOrBytes)) return this.vwr.loadImageData(Boolean.FALSE, "\1close", echoName, null); +}if (Clazz_instanceOf(nameOrBytes,"java.util.Map")) { +nameOrBytes = ((nameOrBytes).containsKey("_DATA_") ? (nameOrBytes).get("_DATA_") : (nameOrBytes).get("_IMAGE_")); +}if (Clazz_instanceOf(nameOrBytes,"JS.SV")) nameOrBytes = (nameOrBytes).value; +var name = ((typeof(nameOrBytes)=='string') ? nameOrBytes : null); +var isAsynchronous = false; +if (name != null && name.startsWith(";base64,")) { +bytes = JU.Base64.decodeBase64(name); +} else if (Clazz_instanceOf(nameOrBytes,"JU.BArray")) { +bytes = (nameOrBytes).data; +} else if (echoName == null || (typeof(nameOrBytes)=='string')) { +var names = this.getClassifiedName(nameOrBytes, true); +nameOrError = (names == null ? "cannot read file name: " + nameOrBytes : JV.FileManager.fixDOSName(names[0])); +if (names != null) image = this.getImage(nameOrError, echoName, forceSync); +isAsynchronous = (image == null); +} else { +image = nameOrBytes; +}if (bytes != null) { +image = this.getImage(bytes, echoName, true); +isAsynchronous = false; +}if ((typeof(image)=='string')) { +nameOrError = image; +image = null; +}if (!JV.Viewer.isJS && image != null && bytes != null) nameOrError = ";base64," + JU.Base64.getBase64(bytes).toString(); +if (!JV.Viewer.isJS || isPopupImage && nameOrError == null || !isPopupImage && image != null) return this.vwr.loadImageData(image, nameOrError, echoName, null); +return isAsynchronous; +}, "~O,~S,~B"); +Clazz_defineMethod(c$, "getImage", +function(nameOrBytes, echoName, forceSync){ +return this.getJzu().getImage(this.vwr, nameOrBytes, echoName, forceSync); +}, "~O,~S,~B"); +Clazz_defineMethod(c$, "getClassifiedName", +function(name, isFullLoad){ +if (name == null) return Clazz_newArray(-1, [null]); +var doSetPathForAllFiles = (this.pathForAllFiles.length > 0); +if (name.startsWith("?") || name.startsWith("http://?") || name.startsWith("https://?")) { +if (!JV.Viewer.isJS && (name = this.vwr.dialogAsk("Load", name, null)) == null) return Clazz_newArray(-1, [isFullLoad ? "#CANCELED#" : null]); +doSetPathForAllFiles = false; +}var file = null; +var url = null; +var names = null; +if (name.startsWith("cache://")) { +names = new Array(3); +names[0] = names[2] = name; +names[1] = JV.FileManager.stripPath(names[0]); +return names; +}name = this.vwr.resolveDatabaseFormat(name); +if (name == null) return Clazz_newArray(-1, [null]); +if (name.indexOf(":") < 0 && name.indexOf("/") != 0) name = JV.FileManager.addDirectory(this.vwr.getDefaultDirectory(), name); +if (this.appletDocumentBaseURL == null) { +if (JU.OC.urlTypeIndex(name) >= 0 || this.vwr.haveAccess(JV.Viewer.ACCESS.NONE) || this.vwr.haveAccess(JV.Viewer.ACCESS.READSPT) && !name.endsWith(".spt") && !name.endsWith("/")) { +try { +url = new java.net.URL(Clazz_castNullAs("java.net.URL"), name, null); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +return Clazz_newArray(-1, [isFullLoad ? e.toString() : null]); +} else { +throw e; +} +} +} else { +file = this.vwr.apiPlatform.newFile(name); +var s = file.getFullPath(); +var fname = file.getName(); +names = Clazz_newArray(-1, [(s == null ? fname : s), fname, (s == null ? fname : "file:/" + s.$replace('\\', '/'))]); +}} else { +try { +if (name.indexOf(":\\") == 1 || name.indexOf(":/") == 1) name = "file:/" + name; +url = new java.net.URL(this.appletDocumentBaseURL, name, null); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +return Clazz_newArray(-1, [isFullLoad ? e.toString() : null]); +} else { +throw e; +} +} +}if (url != null) { +names = new Array(3); +names[0] = names[2] = url.toString(); +names[1] = JV.FileManager.stripPath(names[0]); +}if (doSetPathForAllFiles) { +var name0 = names[0]; +names[0] = this.pathForAllFiles + names[1]; +JU.Logger.info("FileManager substituting " + name0 + " --> " + names[0]); +}if (isFullLoad && JU.OC.isLocal(names[0])) { +var path = names[0]; +if (file == null) path = JU.PT.trim(names[0].substring(names[0].indexOf(":") + 1), "/"); +var pt = path.length - names[1].length - 1; +if (pt > 0) { +path = path.substring(0, pt); +JV.FileManager.setLocalPath(this.vwr, path, true); +}}return names; +}, "~S,~B"); +c$.addDirectory = Clazz_defineMethod(c$, "addDirectory", +function(defaultDirectory, name){ +if (defaultDirectory.length == 0 || defaultDirectory.equals(".")) return name; +var ch = (name.length > 0 ? name.charAt(0) : ' '); +var s = defaultDirectory.toLowerCase(); +if ((s.endsWith(".zip") || s.endsWith(".tar")) && ch != '|' && ch != '/') defaultDirectory += "|"; +return defaultDirectory + (ch == '/' || ch == '/' || (ch = defaultDirectory.charAt(defaultDirectory.length - 1)) == '|' || ch == '/' ? "" : "/") + name; +}, "~S,~S"); +Clazz_defineMethod(c$, "getDefaultDirectory", +function(name){ +var names = this.getClassifiedName(name, true); +if (names == null) return ""; +name = JV.FileManager.fixPath(names[0]); +return (name == null ? "" : name.substring(0, name.lastIndexOf("/"))); +}, "~S"); +c$.fixPath = Clazz_defineMethod(c$, "fixPath", +function(path){ +path = JV.FileManager.fixDOSName(path); +path = JU.PT.rep(path, "/./", "/"); +var pt = path.lastIndexOf("//") + 1; +if (pt < 1) pt = path.indexOf(":/") + 1; +if (pt < 1) pt = path.indexOf("/"); +if (pt < 0) return null; +var protocol = path.substring(0, pt); +path = path.substring(pt); +while ((pt = path.lastIndexOf("/../")) >= 0) { +var pt0 = path.substring(0, pt).lastIndexOf("/"); +if (pt0 < 0) return JU.PT.rep(protocol + path, "/../", "/"); +path = path.substring(0, pt0) + path.substring(pt + 3); +} +if (path.length == 0) path = "/"; +return protocol + path; +}, "~S"); +Clazz_defineMethod(c$, "getFilePath", +function(name, addUrlPrefix, asShortName){ +var names = this.getClassifiedName(name, false); +return (names == null || names.length == 1 ? "" : asShortName ? names[1] : addUrlPrefix ? names[2] : names[0] == null ? "" : JV.FileManager.fixDOSName(names[0])); +}, "~S,~B,~B"); +c$.getLocalDirectory = Clazz_defineMethod(c$, "getLocalDirectory", +function(vwr, forDialog){ +var localDir = vwr.getP(forDialog ? "currentLocalPath" : "defaultDirectoryLocal"); +if (forDialog && localDir.length == 0) localDir = vwr.getP("defaultDirectoryLocal"); +if (localDir.length == 0) return (vwr.isApplet ? null : vwr.apiPlatform.newFile(System.getProperty("user.dir", "."))); +if (vwr.isApplet && localDir.indexOf("file:/") == 0) localDir = localDir.substring(6); +var f = vwr.apiPlatform.newFile(localDir); +try { +return f.isDirectory() ? f : f.getParentAsFile(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "JV.Viewer,~B"); +c$.setLocalPath = Clazz_defineMethod(c$, "setLocalPath", +function(vwr, path, forDialog){ +while (path.endsWith("/") || path.endsWith("\\")) path = path.substring(0, path.length - 1); + +vwr.setStringProperty("currentLocalPath", path); +if (!forDialog) vwr.setStringProperty("defaultDirectoryLocal", path); +}, "JV.Viewer,~S,~B"); +c$.getLocalPathForWritingFile = Clazz_defineMethod(c$, "getLocalPathForWritingFile", +function(vwr, file, forDialog){ +if (file.startsWith("http://") || file.startsWith("https://")) return file; +file = JU.PT.rep(file, "?", ""); +if (file.indexOf("file:/") == 0) return file.substring(6); +if (file.indexOf("/") == 0 || file.indexOf(":") >= 0) return file; +var dir = null; +try { +dir = JV.FileManager.getLocalDirectory(vwr, forDialog); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return (dir == null ? file : JV.FileManager.fixPath(dir.toString() + "/" + file)); +}, "JV.Viewer,~S,~B"); +c$.fixDOSName = Clazz_defineMethod(c$, "fixDOSName", +function(fileName){ +return (fileName.indexOf(":\\") >= 0 ? fileName.$replace('\\', '/') : fileName); +}, "~S"); +c$.stripPath = Clazz_defineMethod(c$, "stripPath", +function(name){ +var pt = Math.max(name.lastIndexOf("|"), name.lastIndexOf("/")); +return name.substring(pt + 1); +}, "~S"); +c$.isScriptType = Clazz_defineMethod(c$, "isScriptType", +function(fname){ +return JU.PT.isOneOf(fname.toLowerCase().substring(fname.lastIndexOf(".") + 1), ";pse;spt;png;pngj;jmol;zip;"); +}, "~S"); +c$.determineSurfaceFileType = Clazz_defineMethod(c$, "determineSurfaceFileType", +function(bufferedReader){ +var line = null; +if (Clazz_instanceOf(bufferedReader,"JU.Rdr.StreamReader")) { +var is = (bufferedReader).getStream(); +if (is.markSupported()) { +try { +is.mark(300); +var buf = Clazz_newByteArray (300, 0); +is.read(buf, 0, 300); +is.reset(); +if ((buf[0] & 0xFF) == 0x83) { +if (buf[10] == 68 && buf[11] == 101 && buf[12] == 110) return "BCifDensity"; +}if (buf[0] == 80 && buf[1] == 77 && buf[2] == 1 && buf[3] == 0) return "Pmesh"; +if (buf[208] == 77 && buf[209] == 65 && buf[210] == 80) return "Mrc"; +if (buf[0] == 20 && buf[1] == 0 && buf[2] == 0 && buf[3] == 0) return "DelPhi"; +if (buf[36] == 0 && buf[37] == 100) return "Dsn6"; +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}}var br = null; +try { +br = new JU.LimitedLineReader(bufferedReader, 16000); +line = br.getHeader(0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (br == null || line == null || line.length == 0) return null; +var pt0 = line.indexOf('\0'); +if (pt0 >= 0) { +if ((line.charAt(0)).charCodeAt(0) == 0x83) return "BCifDensity"; +if (line.indexOf("PM\u0001\u0000") == 0) return "Pmesh"; +if (line.indexOf("MAP ") == 208) return "Mrc"; +if (line.indexOf("\u0014\u0000\u0000\u0000") == 0) return "DelPhi"; +if (line.length > 37 && ((line.charAt(36)).charCodeAt(0) == 0 && (line.charAt(37)).charCodeAt(0) == 100 || (line.charAt(36)).charCodeAt(0) == 0 && (line.charAt(37)).charCodeAt(0) == 100)) { +return "Dsn6"; +}}switch ((line.charAt(0)).charCodeAt(0)) { +case 64: +if (line.indexOf("@text") == 0) return "Kinemage"; +break; +case 35: +if (line.indexOf(".obj") >= 0) return "Obj"; +if (line.indexOf("MSMS") >= 0) return "Msms"; +if (line.indexOf("Menu") >= 0) return "MENU"; +break; +case 38: +if (line.indexOf("&plot") == 0) return "Jaguar"; +break; +case 13: +case 10: +if (line.indexOf("ZYX") >= 0) return "Xplor"; +break; +} +if (line.indexOf("Here is your gzipped map") >= 0) return "UPPSALA" + line; +if (line.startsWith("data_SERVER")) return "CifDensity"; +if (line.startsWith("4MESHC")) return "Pmesh4"; +if (line.indexOf("! nspins") >= 0) return "CastepDensity"; +if (line.indexOf("= 0 && line.indexOf("= 0) return "JvxlXml"; +if (line.indexOf("#JVXL+") >= 0) return "Jvxl+"; +if (line.indexOf("#JVXL") >= 0) return "Jvxl"; +if (line.indexOf("#JmolPmesh") >= 0) return "Pmesh"; +if (line.indexOf("#obj") >= 0) return "Obj"; +if (line.indexOf("#pmesh") >= 0) return "Obj"; +if (line.indexOf("= 0) return "Efvet"; +if (line.indexOf("usemtl") >= 0) return "Obj"; +if (line.indexOf("# object with") == 0) return "Nff"; +if (line.indexOf("PRIMVEC") >= 0 || line.indexOf("BEGIN_DATAGRID_3D") >= 0 || line.indexOf("BEGIN_BANDGRID_3D") >= 0) return "Xsf"; +if (line.indexOf("tiles in x, y") >= 0) return "Ras3D"; +if (line.indexOf(" 0.00000e+00 0.00000e+00 0 0\n") >= 0) return "Uhbd"; +line = br.readLineWithNewline(); +if (line.indexOf("object 1 class gridpositions counts") == 0) return "Apbs"; +var tokens = JU.PT.getTokens(line); +var line2 = br.readLineWithNewline(); +if (tokens.length == 2 && JU.PT.parseInt(tokens[0]) == 3 && JU.PT.parseInt(tokens[1]) != -2147483648) { +tokens = JU.PT.getTokens(line2); +if (tokens.length == 3 && JU.PT.parseInt(tokens[0]) != -2147483648 && JU.PT.parseInt(tokens[1]) != -2147483648 && JU.PT.parseInt(tokens[2]) != -2147483648) return "PltFormatted"; +}var line3 = br.readLineWithNewline(); +if (line.startsWith("v ") && line2.startsWith("v ") && line3.startsWith("v ")) return "Obj"; +var nAtoms = JU.PT.parseInt(line3); +if (nAtoms == -2147483648) return (line3.indexOf("+") == 0 ? "Jvxl+" : null); +tokens = JU.PT.getTokens(line3); +if (tokens[0].indexOf(".") > 0) return (line3.length >= 60 || tokens.length != 3 ? null : "VaspChgcar"); +if (nAtoms >= 0) return (tokens.length == 4 || tokens.length == 5 && tokens[4].equals("1") ? "Cube" : null); +nAtoms = -nAtoms; +for (var i = 4 + nAtoms; --i >= 0; ) if ((line = br.readLineWithNewline()) == null) return null; + +var nSurfaces = JU.PT.parseInt(line); +if (nSurfaces == -2147483648) return null; +return (nSurfaces < 0 ? "Jvxl" : "Cube"); +}, "java.io.BufferedReader"); +c$.getManifestScriptPath = Clazz_defineMethod(c$, "getManifestScriptPath", +function(manifest){ +if (manifest.indexOf("$SCRIPT_PATH$") >= 0) return ""; +var ch = (manifest.indexOf('\n') >= 0 ? "\n" : "\r"); +if (manifest.indexOf(".spt") >= 0) { +var s = JU.PT.split(manifest, ch); +for (var i = s.length; --i >= 0; ) if (s[i].indexOf(".spt") >= 0) return "|" + JU.PT.trim(s[i], "\r\n \t"); + +}return null; +}, "~S"); +c$.getFileReferences = Clazz_defineMethod(c$, "getFileReferences", +function(script, fileList, fileListUTF){ +for (var ipt = 0; ipt < JV.FileManager.scriptFilePrefixes.length; ipt++) { +var tag = JV.FileManager.scriptFilePrefixes[ipt]; +var i = -1; +while ((i = script.indexOf(tag, i + 1)) >= 0) { +var s = JU.PT.getQuotedStringAt(script, i); +if (s.indexOf("\\u") >= 0) s = JU.Escape.unescapeUnicode(s); +fileList.addLast(s); +if (fileListUTF != null) { +if (s.indexOf("\\u") >= 0) s = JU.Escape.unescapeUnicode(s); +fileListUTF.addLast(s); +}} +} +}, "~S,JU.Lst,JU.Lst"); +c$.setScriptFileReferences = Clazz_defineMethod(c$, "setScriptFileReferences", +function(script, localPath, remotePath, scriptPath){ +if (localPath != null) script = JV.FileManager.setScriptFileRefs(script, localPath, true); +if (remotePath != null) script = JV.FileManager.setScriptFileRefs(script, remotePath, false); +script = JU.PT.rep(script, "\1\"", "\""); +if (scriptPath != null) { +while (scriptPath.endsWith("/")) scriptPath = scriptPath.substring(0, scriptPath.length - 1); + +for (var ipt = 0; ipt < JV.FileManager.scriptFilePrefixes.length; ipt++) { +var tag = JV.FileManager.scriptFilePrefixes[ipt]; +script = JU.PT.rep(script, tag + ".", tag + scriptPath); +} +}return script; +}, "~S,~S,~S,~S"); +c$.setScriptFileRefs = Clazz_defineMethod(c$, "setScriptFileRefs", +function(script, dataPath, isLocal){ +if (dataPath == null) return script; +var noPath = (dataPath.length == 0); +var fileNames = new JU.Lst(); +JV.FileManager.getFileReferences(script, fileNames, null); +var oldFileNames = new JU.Lst(); +var newFileNames = new JU.Lst(); +var nFiles = fileNames.size(); +for (var iFile = 0; iFile < nFiles; iFile++) { +var name0 = fileNames.get(iFile); +var name = name0; +var pt = name.indexOf("::"); +var type = ""; +if (pt >= 0) { +type = name.substring(pt + 2); +name = name.substring(pt + 2); +}if (isLocal == JU.OC.isLocal(name)) { +pt = (noPath ? -1 : name.indexOf("/" + dataPath + "/")); +if (pt >= 0) { +name = name.substring(pt + 1); +} else { +pt = name.lastIndexOf("/"); +if (pt < 0 && !noPath) name = "/" + name; +if (pt < 0 || noPath) pt++; +name = dataPath + name.substring(pt); +}}name = type + name; +JU.Logger.info("FileManager substituting " + name0 + " --> " + name); +oldFileNames.addLast("\"" + name0 + "\""); +newFileNames.addLast("\1\"" + name + "\""); +} +return JU.PT.replaceStrings(script, oldFileNames, newFileNames); +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "cachePut", +function(key, data){ +key = JV.FileManager.fixDOSName(key); +if (JU.Logger.debugging) JU.Logger.debug("cachePut " + key); +if (data == null || "".equals(data)) { +this.cache.remove(key); +return; +}this.cache.put(key, data); +this.getCachedPngjBytes(key); +}, "~S,~O"); +Clazz_defineMethod(c$, "cacheGet", +function(key, bytesOnly){ +key = JV.FileManager.fixDOSName(key); +var pt = key.indexOf("|"); +if (pt >= 0 && !key.endsWith("##JmolSurfaceInfo##")) key = key.substring(0, pt); +key = this.getFilePath(key, true, false); +var data = null; +{ +(data = Jmol.Cache.get(key)) || (data = this.cache.get(key)); +}return (bytesOnly && ((typeof(data)=='string')) ? null : data); +}, "~S,~B"); +Clazz_defineMethod(c$, "cacheClear", +function(){ +JU.Logger.info("cache cleared"); +this.cache.clear(); +if (this.pngjCache == null) return; +this.pngjCache = null; +JU.Logger.info("PNGJ cache cleared"); +}); +Clazz_defineMethod(c$, "cacheFileByNameAdd", +function(fileName, isAdd){ +if (fileName == null || !isAdd && fileName.equalsIgnoreCase("")) { +this.cacheClear(); +return -1; +}var data; +if (isAdd) { +fileName = JV.JC.fixProtocol(this.vwr.resolveDatabaseFormat(fileName)); +data = this.getFileAsBytes(fileName, null); +if ((typeof(data)=='string')) return 0; +this.cachePut(fileName, data); +} else { +if (fileName.endsWith("*")) return JU.AU.removeMapKeys(this.cache, fileName.substring(0, fileName.length - 1)); +data = this.cache.remove(JV.FileManager.fixDOSName(fileName)); +}return (data == null ? 0 : (typeof(data)=='string') ? (data).length : (data).length); +}, "~S,~B"); +Clazz_defineMethod(c$, "cacheList", +function(){ +var map = new java.util.Hashtable(); +for (var entry, $entry = this.cache.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) map.put(entry.getKey(), Integer.$valueOf(JU.AU.isAB(entry.getValue()) ? (entry.getValue()).length : entry.getValue().toString().length)); + +return map; +}); +Clazz_defineMethod(c$, "getCanonicalName", +function(pathName){ +var names = this.getClassifiedName(pathName, true); +return (names == null ? pathName : names[2]); +}, "~S"); +Clazz_defineMethod(c$, "recachePngjBytes", +function(fileName, bytes){ +if (this.pngjCache == null || !this.pngjCache.containsKey(fileName)) return; +this.pngjCache.put(fileName, bytes); +JU.Logger.info("PNGJ recaching " + fileName + " (" + bytes.length + ")"); +}, "~S,~A"); +Clazz_defineMethod(c$, "getPngjOrDroppedBytes", +function(fullName, name){ +var bytes = this.getCachedPngjBytes(fullName); +return (bytes == null ? this.cacheGet(name, true) : bytes); +}, "~S,~S"); +Clazz_defineMethod(c$, "getCachedPngjBytes", +function(pathName){ +return (pathName == null || this.pngjCache == null || pathName.indexOf(".png") < 0 ? null : this.getJzu().getCachedPngjBytes(this, pathName)); +}, "~S"); +Clazz_overrideMethod(c$, "postByteArray", +function(fileName, bytes){ +if (fileName.startsWith("cache://")) { +this.cachePut(fileName, bytes); +return "OK " + bytes.length + "cached"; +}var ret = this.getBufferedInputStreamOrErrorMessageFromName(fileName, null, false, false, bytes, false, true); +if ((typeof(ret)=='string')) return ret; +try { +ret = JU.Rdr.getStreamAsBytes(ret, null); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +try { +(ret).close(); +} catch (e1) { +if (Clazz_exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +} else { +throw e; +} +} +return (ret == null ? "" : JU.Rdr.fixUTF(ret)); +}, "~S,~A"); +c$.isJmolType = Clazz_defineMethod(c$, "isJmolType", +function(type){ +return (type.equals("PNG") || type.equals("PNGJ") || type.equals("JMOL") || type.equals("ZIP") || type.equals("ZIPALL")); +}, "~S"); +c$.isEmbeddable = Clazz_defineMethod(c$, "isEmbeddable", +function(type){ +var pt = type.lastIndexOf('.'); +if (pt >= 0) type = type.substring(pt + 1); +type = type.toUpperCase(); +return (JV.FileManager.isJmolType(type) || JU.PT.isOneOf(type, ";JPG;JPEG;POV;IDTF;")); +}, "~S"); +Clazz_defineMethod(c$, "getEmbeddedFileState", +function(fileName, allowCached, sptName){ +if (!JV.FileManager.isEmbeddable(fileName)) return ""; +var dir = this.getZipDirectory(fileName, false, allowCached); +if (dir.length == 0) { +var state = this.vwr.getFileAsString4(fileName, -1, false, true, false, "file"); +return (state.indexOf("**** Jmol Embedded Script ****") < 0 ? "" : JV.FileManager.getEmbeddedScript(state)); +}for (var i = 0; i < dir.length; i++) if (dir[i].indexOf(sptName) >= 0) { +var data = Clazz_newArray(-1, [fileName + "|" + dir[i], null]); +this.getFileDataAsString(data, -1, false, false, false); +return data[1]; +} +return ""; +}, "~S,~B,~S"); +c$.stripTypePrefix = Clazz_defineMethod(c$, "stripTypePrefix", +function(fileName){ +var pt = fileName.indexOf("::"); +return (pt < 0 || pt >= 20 ? fileName : fileName.substring(pt + 2)); +}, "~S"); +c$.getEmbeddedScript = Clazz_defineMethod(c$, "getEmbeddedScript", +function(s){ +if (s == null) return s; +var pt = s.indexOf("**** Jmol Embedded Script ****"); +if (pt < 0) return s; +var pt1 = s.lastIndexOf("/*", pt); +var pt2 = s.indexOf((s.charAt(pt1 + 2) == '*' ? "*" : "") + "*/", pt); +if (pt1 >= 0 && pt2 >= pt) s = s.substring(pt + "**** Jmol Embedded Script ****".length, pt2) + "\n"; +while ((pt1 = s.indexOf(" #Jmol...\u0000")) >= 0) s = s.substring(0, pt1) + s.substring(pt1 + " #Jmol...\u0000".length + 4); + +if (JU.Logger.debugging) JU.Logger.debug(s); +return s; +}, "~S"); +Clazz_defineMethod(c$, "isZipStream", +function(br){ +return this.vwr.getJzt().isZipStream(br); +}, "~O"); +c$.SIMULATION_PROTOCOL = "http://SIMULATION/"; +c$.scriptFilePrefixes = Clazz_newArray(-1, ["/*file*/\"", "FILE0=\"", "FILE1=\""]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.util.Hashtable", "JU.P3", "J.c.CBK"], "JV.GlobalSettings", ["JU.DF", "$.PT", "$.SB", "J.c.STR", "JS.SV", "JU.Escape", "$.Logger", "JV.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.htNonbooleanParameterValues = null; +this.htBooleanParameterFlags = null; +this.htPropertyFlagsRemoved = null; +this.htUserVariables = null; +this.zDepth = 0; +this.zShadePower = 3; +this.zSlab = 50; +this.slabByMolecule = false; +this.slabByAtom = false; +this.allowEmbeddedScripts = true; +this.appendNew = true; +this.appletProxy = ""; +this.applySymmetryToBonds = false; +this.atomTypes = ""; +this.autoBond = true; +this.axesOrientationRasmol = false; +this.bondRadiusMilliAngstroms = 150; +this.bondTolerance = 0.45; +this.defaultDirectory = ""; +this.defaultStructureDSSP = true; +this.ptDefaultLattice = null; +this.defaultLoadScript = ""; +this.defaultLoadFilter = ""; +this.defaultDropScript = "zap; load SYNC \"%FILE\";if (%ALLOWCARTOONS && _loadScript == \'\' && defaultLoadScript == \'\' && _filetype == \'Pdb\') {if ({(protein or nucleic)&*/1.1} && {*/1.1}[1].groupindex != {*/1.1}[0].groupindex){select protein or nucleic;cartoons only;}if ({visible && cartoons > 0}){color structure}else{wireframe -0.1};if (!{visible}){spacefill 23%};select *}"; +this.forceAutoBond = false; +this.fractionalRelative = true; +this.inlineNewlineChar = '|'; +this.loadFormat = null; +this.pdbLoadFormat = null; +this.pdbLoadLigandFormat = null; +this.nmrUrlFormat = null; +this.nmrPredictFormat = null; +this.smilesUrlFormat = null; +this.nihResolverFormat = null; +this.pubChemFormat = null; +this.macroDirectory = null; +this.resolverResolver = null; +this.checkCIR = false; +this.minBondDistance = 0.4; +this.minPixelSelRadius = 6; +this.pdbAddHydrogens = false; +this.pdbGetHeader = false; +this.pdbSequential = false; +this.percentVdwAtom = 23; +this.smallMoleculeMaxAtoms = 40000; +this.smartAromatic = true; +this.zeroBasedXyzRasmol = false; +this.legacyAutoBonding = false; +this.legacyHAddition = false; +this.legacyJavaFloat = false; +this.doublePrecision = false; +this.jmolInJSpecView = true; +this.modulateOccupancy = true; +this.allowRotateSelected = false; +this.allowMoveAtoms = false; +this.dotSolvent = false; +this.defaultAngleLabel = "%VALUE %UNITS"; +this.defaultDistanceLabel = "%VALUE %UNITS"; +this.defaultTorsionLabel = "%VALUE %UNITS"; +this.justifyMeasurements = false; +this.measureAllModels = false; +this.minimizationSteps = 100; +this.minimizationRefresh = true; +this.minimizationSilent = false; +this.minimizationCriterion = 0.001; +this.minimizationMaxAtoms = 200; +this.minimizationReportSteps = 10; +this.infoFontSize = 20; +this.antialiasDisplay = false; +this.antialiasImages = true; +this.imageState = true; +this.antialiasTranslucent = true; +this.displayCellParameters = true; +this.dotsSelectedOnly = false; +this.dotSurface = true; +this.dotDensity = 3; +this.dotScale = 1; +this.meshScale = 1; +this.greyscaleRendering = false; +this.isosurfaceKey = false; +this.isosurfacePropertySmoothing = true; +this.isosurfacePropertySmoothingPower = 7; +this.platformSpeed = 10; +this.repaintWaitMs = 1000; +this.showHiddenSelectionHalos = false; +this.showKeyStrokes = true; +this.showMeasurements = true; +this.showTiming = false; +this.zoomLarge = true; +this.zoomHeight = false; +this.backgroundImageFileName = null; +this.partialDots = false; +this.bondModeOr = false; +this.hbondsBackbone = false; +this.hbondsAngleMinimum = 90; +this.hbondNODistanceMaximum = 3.25; +this.hbondHXDistanceMaximum = 2.5; +this.hbondsRasmol = true; +this.hbondsSolid = false; +this.modeMultipleBond = 2; +this.showHydrogens = true; +this.showMultipleBonds = true; +this.ssbondsBackbone = false; +this.multipleBondSpacing = -1; +this.multipleBondRadiusFactor = 0; +this.multipleBondBananas = false; +this.nboCharges = true; +this.cartoonBaseEdges = false; +this.cartoonRockets = false; +this.cartoonBlockHeight = 0.5; +this.cartoonBlocks = false; +this.cartoonSteps = false; +this.cartoonFancy = false; +this.cartoonLadders = false; +this.cartoonRibose = false; +this.chainCaseSensitive = false; +this.cipRule6Full = false; +this.hermiteLevel = 0; +this.highResolutionFlag = false; +this.rangeSelected = false; +this.rasmolHydrogenSetting = true; +this.rasmolHeteroSetting = true; +this.ribbonAspectRatio = 16; +this.ribbonBorder = false; +this.rocketBarrels = false; +this.sheetSmoothing = 1; +this.traceAlpha = true; +this.translucent = true; +this.twistedSheets = false; +this.autoplayMovie = true; +this.allowAudio = true; +this.allowGestures = false; +this.allowModelkit = true; +this.allowMultiTouch = true; +this.allowKeyStrokes = false; +this.hiddenLinesDashed = false; +this.animationFps = 10; +this.atomPicking = true; +this.autoFps = false; +this.axesMode = 603979809; +this.axesScale = 2; +this.axesOffset = 0; +this.starWidth = 0.05; +this.bondPicking = false; +this.dataSeparator = "~~~"; +this.debugScript = false; +this.defaultDrawArrowScale = 0.5; +this.defaultLabelXYZ = "%a"; +this.defaultLabelPDB = "%m%r"; +this.defaultTranslucent = 0.5; +this.delayMaximumMs = 0; +this.dipoleScale = 1; +this.drawFontSize = 16.0; +this.disablePopupMenu = false; +this.dragSelected = false; +this.drawHover = false; +this.drawPicking = false; +this.dsspCalcHydrogen = true; +this.elementKey = false; +this.energyUnits = "kJ"; +this.exportScale = 0; +this.helpPath = "https://chemapps.stolaf.edu/jmol/docs/index.htm"; +this.fontScaling = false; +this.fontCaching = true; +this.forceField = "MMFF"; +this.helixStep = 1; +this.hideNameInPopup = false; +this.hoverDelayMs = 500; +this.labelPointerWidth = 2; +this.loadAtomDataTolerance = 0.01; +this.logCommands = false; +this.logGestures = false; +this.measureDistanceUnits = "nanometers"; +this.measurementLabels = true; +this.messageStyleChime = false; +this.monitorEnergy = false; +this.modulationScale = 1; +this.multiProcessor = true; +this.particleRadius = 20; +this.pickingSpinRate = 10; +this.pickLabel = ""; +this.pointGroupDistanceTolerance = 0.2; +this.pointGroupLinearTolerance = 8.0; +this.preserveState = true; +this.propertyColorScheme = "roygb"; +this.quaternionFrame = "p"; +this.saveProteinStructureState = true; +this.showModVecs = false; +this.showUnitCellDetails = true; +this.solventProbeRadius = 1.2; +this.scriptDelay = 0; +this.selectAllModels = true; +this.statusReporting = true; +this.strandCountForStrands = 5; +this.strandCountForMeshRibbon = 7; +this.strutSpacing = 6; +this.strutLengthMaximum = 7.0; +this.strutDefaultRadius = 0.3; +this.strutsMultiple = false; +this.symmetryHermannMauguin = false; +this.useMinimizationThread = true; +this.useNumberLocalization = true; +this.useScriptQueue = true; +this.waitForMoveTo = true; +this.noDelay = false; +this.vectorScale = 1; +this.vectorSymmetry = false; +this.vectorsCentered = false; +this.vectorTrail = 0; +this.vibrationPeriod = 1; +this.vibrationScale = 1; +this.wireframeRotation = false; +this.hideNavigationPoint = false; +this.navigationMode = false; +this.navigationPeriodic = false; +this.navigationSpeed = 5; +this.showNavigationPointAlways = false; +this.stereoState = null; +this.modelKitMode = false; +this.objColors = null; +this.objStateOn = null; +this.objMad10 = null; +this.ellipsoidAxes = false; +this.ellipsoidDots = false; +this.ellipsoidArcs = false; +this.ellipsoidArrows = false; +this.ellipsoidFill = false; +this.ellipsoidBall = true; +this.ellipsoidDotCount = 200; +this.ellipsoidAxisDiameter = 0.02; +this.testFlag1 = false; +this.testFlag2 = false; +this.testFlag3 = false; +this.testFlag4 = false; +this.structureList = null; +this.haveSetStructureList = false; +this.bondingVersion = 0; +Clazz_instantialize(this, arguments);}, JV, "GlobalSettings", null); +Clazz_prepareFields (c$, function(){ +this.htUserVariables = new java.util.Hashtable(); +this.ptDefaultLattice = new JU.P3(); +this.objColors = Clazz_newIntArray (7, 0); +this.objStateOn = Clazz_newBooleanArray(7, false); +this.objMad10 = Clazz_newIntArray (7, 0); +this.structureList = new java.util.Hashtable(); +{ +this.structureList.put(J.c.STR.TURN, Clazz_newFloatArray(-1, [30, 90, -15, 95])); +this.structureList.put(J.c.STR.SHEET, Clazz_newFloatArray(-1, [-180, -10, 70, 180, -180, -45, -180, -130, 140, 180, 90, 180])); +this.structureList.put(J.c.STR.HELIX, Clazz_newFloatArray(-1, [-160, 0, -100, 45])); +}}); +Clazz_makeConstructor(c$, +function(vwr, g, clearUserVariables){ +this.vwr = vwr; +this.htNonbooleanParameterValues = new java.util.Hashtable(); +this.htBooleanParameterFlags = new java.util.Hashtable(); +this.htPropertyFlagsRemoved = new java.util.Hashtable(); +this.loadFormat = this.pdbLoadFormat = JV.JC.databases.get("pdb"); +this.pdbLoadLigandFormat = JV.JC.databases.get("ligand"); +this.nmrUrlFormat = JV.JC.databases.get("nmr"); +this.nmrPredictFormat = JV.JC.databases.get("nmrdb"); +this.pubChemFormat = JV.JC.databases.get("pubchem"); +this.resolverResolver = JV.JC.databases.get("resolverresolver"); +this.macroDirectory = "https://chemapps.stolaf.edu/jmol/macros"; +if (g == null) { +this.setB("undoAuto", !vwr.isApplet); +} else { +this.setB("undoAuto", vwr.getBooleanProperty("undoAuto")); +if (!clearUserVariables) { +this.setO("_pngjFile", g.getParameter("_pngjFile", false)); +this.htUserVariables = g.htUserVariables; +}this.debugScript = g.debugScript; +this.disablePopupMenu = g.disablePopupMenu; +this.messageStyleChime = g.messageStyleChime; +this.measureDistanceUnits = g.measureDistanceUnits; +this.defaultDirectory = g.defaultDirectory; +this.autoplayMovie = g.autoplayMovie; +this.allowAudio = g.allowAudio; +this.allowGestures = g.allowGestures; +this.allowModelkit = g.allowModelkit; +this.allowMultiTouch = g.allowMultiTouch; +this.allowKeyStrokes = g.allowKeyStrokes; +this.legacyAutoBonding = g.legacyAutoBonding; +this.legacyHAddition = g.legacyHAddition; +this.legacyJavaFloat = g.legacyJavaFloat; +this.minimizationReportSteps = g.minimizationReportSteps; +this.doublePrecision = g.doublePrecision; +this.bondingVersion = g.bondingVersion; +this.platformSpeed = g.platformSpeed; +this.useScriptQueue = g.useScriptQueue; +this.showTiming = g.showTiming; +this.wireframeRotation = g.wireframeRotation; +this.testFlag1 = g.testFlag1; +this.testFlag2 = g.testFlag2; +this.testFlag3 = g.testFlag3; +this.testFlag4 = g.testFlag4; +this.nihResolverFormat = g.nihResolverFormat; +}if (this.nihResolverFormat == null) this.nihResolverFormat = JV.JC.databases.get("nci"); +this.setCIR(this.nihResolverFormat, false); +for (var item, $item = 0, $$item = J.c.CBK.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) this.resetValue(item.name() + "Callback", g); + +this.setF("cameraDepth", 3.0); +this.setI("undoMax", vwr.stm.getUndoMax()); +this.setI("contextDepthMax", 100); +this.setI("depth", 0); +this.setF("gestureSwipeFactor", 1.0); +this.setB("hideNotSelected", false); +this.setI("historyLevel", 0); +this.setO("hoverLabel", ""); +this.setB("isKiosk", vwr.isKiosk()); +this.setO("logFile", vwr.getLogFileName()); +this.setI("logLevel", JU.Logger.getLogLevel()); +this.setF("mouseWheelFactor", 1.15); +this.setF("mouseDragFactor", 1.0); +this.setI("navFps", 10); +this.setI("navigationDepth", 0); +this.setI("navigationSlab", 0); +this.setI("navX", 0); +this.setI("navY", 0); +this.setI("navZ", 0); +this.setO("pathForAllFiles", ""); +this.setB("perspectiveDepth", true); +this.setI("perspectiveModel", 11); +this.setO("picking", "identify"); +this.setO("pickingStyle", "toggle"); +this.setB("refreshing", true); +this.setI("rotationRadius", 0); +this.setI("scaleAngstromsPerInch", 0); +this.setI("scriptReportingLevel", 0); +this.setB("selectionHalos", false); +this.setB("showaxes", false); +this.setB("showboundbox", false); +this.setB("showfrank", false); +this.setB("showUnitcell", false); +this.setI("slab", 100); +this.setB("slabEnabled", false); +this.setF("slabrange", 0); +this.setI("spinX", 0); +this.setI("spinY", 30); +this.setI("spinZ", 0); +this.setI("spinFps", 30); +this.setF("visualRange", 5.0); +this.setI("stereoDegrees", -5); +this.setB("syncScript", vwr.sm.syncingScripts); +this.setB("syncMouse", vwr.sm.syncingMouse); +this.setB("syncStereo", vwr.sm.stereoSync); +this.setB("windowCentered", true); +this.setB("zoomEnabled", true); +this.setI("_version", JV.JC.versionInt); +this.setO("_versionDate", JV.Viewer.getJmolVersion()); +this.setB("axesWindow", true); +this.setB("axesMolecular", false); +this.setB("axesPosition", false); +this.setB("axesUnitcell", false); +this.setI("backgroundModel", 0); +this.setB("colorRasmol", false); +this.setO("currentLocalPath", ""); +this.setO("defaultLattice", "{0 0 0}"); +this.setO("defaultColorScheme", "Jmol"); +this.setO("defaultDirectoryLocal", ""); +this.setO("defaults", "Jmol"); +this.setO("defaultVDW", "Jmol"); +this.setO("exportDrivers", "Idtf;Maya;Povray;Vrml;X3d;Stl;Tachyon;Obj"); +this.setI("propertyAtomNumberColumnCount", 0); +this.setI("propertyAtomNumberField", 0); +this.setI("propertyDataColumnCount", 0); +this.setI("propertyDataField", 0); +this.setI("undoMax", vwr.stm.getUndoMax()); +this.setB("allowEmbeddedScripts", this.allowEmbeddedScripts); +this.setB("allowGestures", this.allowGestures); +this.setB("allowKeyStrokes", this.allowKeyStrokes); +this.setB("allowModelkit", this.allowModelkit); +this.setB("allowMultiTouch", this.allowMultiTouch); +this.setB("allowRotateSelected", this.allowRotateSelected); +this.setB("allowMoveAtoms", this.allowMoveAtoms); +this.setI("animationFps", this.animationFps); +this.setB("antialiasImages", this.antialiasImages); +this.setB("antialiasDisplay", this.antialiasDisplay); +this.setB("antialiasTranslucent", this.antialiasTranslucent); +this.setB("appendNew", this.appendNew); +this.setO("appletProxy", this.appletProxy); +this.setB("applySymmetryToBonds", this.applySymmetryToBonds); +this.setB("atomPicking", this.atomPicking); +this.setO("atomTypes", this.atomTypes); +this.setB("autoBond", this.autoBond); +this.setB("autoFps", this.autoFps); +this.setI("axesMode", this.axesMode == 603979808 ? 2 : this.axesMode == 603979804 ? 1 : 0); +this.setF("axesScale", this.axesScale); +this.setF("axesOffset", this.axesOffset); +this.setB("axesOrientationRasmol", this.axesOrientationRasmol); +this.setF("cartoonBlockHeight", this.cartoonBlockHeight); +this.setB("cartoonBlocks", this.cartoonBlocks); +this.setB("cartoonSteps", this.cartoonSteps); +this.setB("bondModeOr", this.bondModeOr); +this.setB("bondPicking", this.bondPicking); +this.setI("bondRadiusMilliAngstroms", this.bondRadiusMilliAngstroms); +this.setF("bondTolerance", this.bondTolerance); +this.setB("cartoonBaseEdges", this.cartoonBaseEdges); +this.setB("cartoonFancy", this.cartoonFancy); +this.setB("cartoonLadders", this.cartoonLadders); +this.setB("cartoonLadders", this.cartoonRibose); +this.setB("cartoonRockets", this.cartoonRockets); +this.setB("chainCaseSensitive", this.chainCaseSensitive); +this.setB("cipRule6Full", this.cipRule6Full); +this.setI("bondingVersion", this.bondingVersion); +this.setO("dataSeparator", this.dataSeparator); +this.setB("debugScript", this.debugScript); +this.setO("defaultAngleLabel", this.defaultAngleLabel); +this.setF("defaultDrawArrowScale", this.defaultDrawArrowScale); +this.setO("defaultDirectory", this.defaultDirectory); +this.setO("defaultDistanceLabel", this.defaultDistanceLabel); +this.setO("defaultDropScript", this.defaultDropScript); +this.setO("defaultLabelPDB", this.defaultLabelPDB); +this.setO("defaultLabelXYZ", this.defaultLabelXYZ); +this.setO("defaultLoadFilter", this.defaultLoadFilter); +this.setO("defaultLoadScript", this.defaultLoadScript); +this.setB("defaultStructureDSSP", this.defaultStructureDSSP); +this.setO("defaultTorsionLabel", this.defaultTorsionLabel); +this.setF("defaultTranslucent", this.defaultTranslucent); +this.setI("delayMaximumMs", this.delayMaximumMs); +this.setF("dipoleScale", this.dipoleScale); +this.setB("disablePopupMenu", this.disablePopupMenu); +this.setB("displayCellParameters", this.displayCellParameters); +this.setI("dotDensity", this.dotDensity); +this.setI("dotScale", this.dotScale); +this.setB("dotsSelectedOnly", this.dotsSelectedOnly); +this.setB("dotSurface", this.dotSurface); +this.setB("dragSelected", this.dragSelected); +this.setB("drawHover", this.drawHover); +this.setF("drawFontSize", this.drawFontSize); +this.setB("drawPicking", this.drawPicking); +this.setB("dsspCalculateHydrogenAlways", this.dsspCalcHydrogen); +this.setB("elementkey", this.elementKey); +this.setB("ellipsoidArcs", this.ellipsoidArcs); +this.setB("ellipsoidArrows", this.ellipsoidArrows); +this.setB("ellipsoidAxes", this.ellipsoidAxes); +this.setF("ellipsoidAxisDiameter", this.ellipsoidAxisDiameter); +this.setB("ellipsoidBall", this.ellipsoidBall); +this.setI("ellipsoidDotCount", this.ellipsoidDotCount); +this.setB("ellipsoidDots", this.ellipsoidDots); +this.setB("ellipsoidFill", this.ellipsoidFill); +this.setO("energyUnits", this.energyUnits); +this.setF("exportScale", this.exportScale); +this.setB("doublePrecision", this.doublePrecision); +this.setB("fontScaling", this.fontScaling); +this.setB("fontCaching", this.fontCaching); +this.setB("forceAutoBond", this.forceAutoBond); +this.setO("forceField", this.forceField); +this.setB("fractionalRelative", this.fractionalRelative); +this.setF("particleRadius", this.particleRadius); +this.setB("greyscaleRendering", this.greyscaleRendering); +this.setF("hbondsAngleMinimum", this.hbondsAngleMinimum); +this.setF("hbondHXDistanceMaximum", this.hbondHXDistanceMaximum); +this.setF("hbondsDistanceMaximum", this.hbondNODistanceMaximum); +this.setB("hbondsBackbone", this.hbondsBackbone); +this.setB("hbondsRasmol", this.hbondsRasmol); +this.setB("hbondsSolid", this.hbondsSolid); +this.setI("helixStep", this.helixStep); +this.setO("helpPath", this.helpPath); +this.setI("hermiteLevel", this.hermiteLevel); +this.setB("hideNameInPopup", this.hideNameInPopup); +this.setB("hideNavigationPoint", this.hideNavigationPoint); +this.setB("hiddenLinesDashed", this.hiddenLinesDashed); +this.setB("highResolution", this.highResolutionFlag); +this.setF("hoverDelay", this.hoverDelayMs / 1000); +this.setB("imageState", this.imageState); +this.setI("infoFontSize", this.infoFontSize); +this.setB("isosurfaceKey", this.isosurfaceKey); +this.setB("isosurfacePropertySmoothing", this.isosurfacePropertySmoothing); +this.setI("isosurfacePropertySmoothingPower", this.isosurfacePropertySmoothingPower); +this.setB("jmolInJSpecView", this.jmolInJSpecView); +this.setI("labelPointerWidth", this.labelPointerWidth); +this.setB("justifyMeasurements", this.justifyMeasurements); +this.setB("legacyAutoBonding", this.legacyAutoBonding); +this.setB("legacyHAddition", this.legacyHAddition); +this.setB("legacyJavaFloat", this.legacyJavaFloat); +this.setF("loadAtomDataTolerance", this.loadAtomDataTolerance); +this.setO("loadFormat", this.loadFormat); +this.setO("loadLigandFormat", this.pdbLoadLigandFormat); +this.setB("logCommands", this.logCommands); +this.setB("logGestures", this.logGestures); +this.setB("measureAllModels", this.measureAllModels); +this.setB("measurementLabels", this.measurementLabels); +this.setO("measurementUnits", this.measureDistanceUnits); +this.setI("meshScale", this.meshScale); +this.setB("messageStyleChime", this.messageStyleChime); +this.setF("minBondDistance", this.minBondDistance); +this.setI("minPixelSelRadius", this.minPixelSelRadius); +this.setI("minimizationReportSteps", this.minimizationReportSteps); +this.setI("minimizationSteps", this.minimizationSteps); +this.setB("minimizationRefresh", this.minimizationRefresh); +this.setB("minimizationSilent", this.minimizationSilent); +this.setF("minimizationCriterion", this.minimizationCriterion); +this.setB("modelKitMode", this.modelKitMode); +this.setF("modulationScale", this.modulationScale); +this.setB("monitorEnergy", this.monitorEnergy); +this.setF("multipleBondRadiusFactor", this.multipleBondRadiusFactor); +this.setB("multipleBondBananas", this.multipleBondBananas); +this.setF("multipleBondSpacing", this.multipleBondSpacing); +this.setB("multiProcessor", this.multiProcessor && (JV.Viewer.nProcessors > 1)); +this.setB("navigationMode", this.navigationMode); +this.setB("navigationPeriodic", this.navigationPeriodic); +this.setF("navigationSpeed", this.navigationSpeed); +this.setB("nboCharges", this.nboCharges); +this.setB("noDelay", this.noDelay); +this.setO("nmrPredictFormat", this.nmrPredictFormat); +this.setO("nmrUrlFormat", this.nmrUrlFormat); +this.setB("partialDots", this.partialDots); +this.setB("pdbAddHydrogens", this.pdbAddHydrogens); +this.setB("pdbGetHeader", this.pdbGetHeader); +this.setB("pdbSequential", this.pdbSequential); +this.setI("percentVdwAtom", this.percentVdwAtom); +this.setI("pickingSpinRate", this.pickingSpinRate); +this.setO("pickLabel", this.pickLabel); +this.setI("platformSpeed", this.platformSpeed); +this.setF("pointGroupLinearTolerance", this.pointGroupLinearTolerance); +this.setF("pointGroupDistanceTolerance", this.pointGroupDistanceTolerance); +this.setB("preserveState", this.preserveState); +this.setO("propertyColorScheme", this.propertyColorScheme); +this.setO("quaternionFrame", this.quaternionFrame); +this.setB("rangeSelected", this.rangeSelected); +this.setI("repaintWaitMs", this.repaintWaitMs); +this.setI("ribbonAspectRatio", this.ribbonAspectRatio); +this.setB("ribbonBorder", this.ribbonBorder); +this.setB("rocketBarrels", this.rocketBarrels); +this.setB("saveProteinStructureState", this.saveProteinStructureState); +this.setB("scriptqueue", this.useScriptQueue); +this.setB("selectAllModels", this.selectAllModels); +this.setB("selectHetero", this.rasmolHeteroSetting); +this.setB("selectHydrogen", this.rasmolHydrogenSetting); +this.setF("sheetSmoothing", this.sheetSmoothing); +this.setB("showHiddenSelectionHalos", this.showHiddenSelectionHalos); +this.setB("showHydrogens", this.showHydrogens); +this.setB("showKeyStrokes", this.showKeyStrokes); +this.setB("showMeasurements", this.showMeasurements); +this.setB("showModulationVectors", this.showModVecs); +this.setB("showMultipleBonds", this.showMultipleBonds); +this.setB("showNavigationPointAlways", this.showNavigationPointAlways); +this.setI("showScript", this.scriptDelay); +this.setB("showtiming", this.showTiming); +this.setB("slabByMolecule", this.slabByMolecule); +this.setB("slabByAtom", this.slabByAtom); +this.setB("smartAromatic", this.smartAromatic); +this.setI("minimizationMaxAtoms", this.minimizationMaxAtoms); +this.setI("smallMoleculeMaxAtoms", this.smallMoleculeMaxAtoms); +this.setO("smilesUrlFormat", this.smilesUrlFormat); +this.setO("macroDirectory", this.macroDirectory); +this.setO("nihResolverFormat", this.nihResolverFormat); +this.setO("pubChemFormat", this.pubChemFormat); +this.setB("showUnitCellDetails", this.showUnitCellDetails); +this.setB("solventProbe", this.dotSolvent); +this.setF("solventProbeRadius", this.solventProbeRadius); +this.setB("ssbondsBackbone", this.ssbondsBackbone); +this.setF("starWidth", this.starWidth); +this.setB("statusReporting", this.statusReporting); +this.setI("strandCount", this.strandCountForStrands); +this.setI("strandCountForStrands", this.strandCountForStrands); +this.setI("strandCountForMeshRibbon", this.strandCountForMeshRibbon); +this.setF("strutDefaultRadius", this.strutDefaultRadius); +this.setF("strutLengthMaximum", this.strutLengthMaximum); +this.setI("strutSpacing", this.strutSpacing); +this.setB("strutsMultiple", this.strutsMultiple); +this.setB("symmetryhermannmauguin", this.symmetryHermannMauguin); +this.setB("testFlag1", this.testFlag1); +this.setB("testFlag2", this.testFlag2); +this.setB("testFlag3", this.testFlag3); +this.setB("testFlag4", this.testFlag4); +this.setB("traceAlpha", this.traceAlpha); +this.setB("translucent", this.translucent); +this.setB("twistedSheets", this.twistedSheets); +this.setB("useMinimizationThread", this.useMinimizationThread); +this.setB("useNumberLocalization", this.useNumberLocalization); +this.setB("vectorsCentered", this.vectorsCentered); +this.setF("vectorScale", this.vectorScale); +this.setB("vectorSymmetry", this.vectorSymmetry); +this.setI("vectorTrail", this.vectorTrail); +this.setF("vibrationPeriod", this.vibrationPeriod); +this.setF("vibrationScale", this.vibrationScale); +this.setB("waitForMoveTo", this.waitForMoveTo); +this.setB("wireframeRotation", this.wireframeRotation); +this.setI("zDepth", this.zDepth); +this.setB("zeroBasedXyzRasmol", this.zeroBasedXyzRasmol); +this.setB("zoomHeight", this.zoomHeight); +this.setB("zoomLarge", this.zoomLarge); +this.setI("zShadePower", this.zShadePower); +this.setI("zSlab", this.zSlab); +}, "JV.Viewer,JV.GlobalSettings,~B"); +Clazz_defineMethod(c$, "clear", +function(){ +var e = this.htUserVariables.keySet().iterator(); +while (e.hasNext()) { +var key = e.next(); +if (key.charAt(0) == '@' || key.startsWith("site_")) e.remove(); +} +this.vwr.setPicked(-1, false); +this.setI("_atomhovered", -1); +this.setO("_pickinfo", ""); +this.setB("selectionhalos", false); +this.setB("hidenotselected", false); +this.setB("measurementlabels", this.measurementLabels = true); +this.setB("drawHover", this.drawHover = false); +this.vwr.stm.saveScene("DELETE", null); +}); +Clazz_defineMethod(c$, "setUnits", +function(units){ +var mu = this.measureDistanceUnits; +var eu = this.energyUnits; +if (units.equalsIgnoreCase("angstroms")) this.measureDistanceUnits = "angstroms"; + else if (units.equalsIgnoreCase("nanometers") || units.equalsIgnoreCase("nm")) this.measureDistanceUnits = "nanometers"; + else if (units.equalsIgnoreCase("picometers") || units.equalsIgnoreCase("pm")) this.measureDistanceUnits = "picometers"; + else if (units.equalsIgnoreCase("bohr") || units.equalsIgnoreCase("au")) this.measureDistanceUnits = "au"; + else if (units.equalsIgnoreCase("vanderwaals") || units.equalsIgnoreCase("vdw")) this.measureDistanceUnits = "vdw"; + else if (units.toLowerCase().endsWith("hz") || units.toLowerCase().endsWith("khz")) this.measureDistanceUnits = units.toLowerCase(); + else if (units.equalsIgnoreCase("kj")) this.energyUnits = "kJ"; + else if (units.equalsIgnoreCase("kcal")) this.energyUnits = "kcal"; +if (!mu.equalsIgnoreCase(this.measureDistanceUnits)) this.setO("measurementUnits", this.measureDistanceUnits); + else if (!eu.equalsIgnoreCase(this.energyUnits)) this.setO("energyUnits", this.energyUnits); +}, "~S"); +Clazz_defineMethod(c$, "isJmolVariable", +function(key){ +return key.charAt(0) == '_' || this.htNonbooleanParameterValues.containsKey(key = key.toLowerCase()) || this.htBooleanParameterFlags.containsKey(key) || JV.GlobalSettings.unreportedProperties.indexOf(";" + key + ";") >= 0; +}, "~S"); +Clazz_defineMethod(c$, "resetValue", +function(name, g){ +this.setO(name, g == null ? "" : g.getParameter(name, true)); +}, "~S,JV.GlobalSettings"); +Clazz_defineMethod(c$, "setB", +function(name, value){ +name = name.toLowerCase(); +if (this.htNonbooleanParameterValues.containsKey(name)) return; +this.htBooleanParameterFlags.put(name, value ? Boolean.TRUE : Boolean.FALSE); +}, "~S,~B"); +Clazz_defineMethod(c$, "setI", +function(name, value){ +if (value != 2147483647) this.setO(name, Integer.$valueOf(value)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setF", +function(name, value){ +if (!Float.isNaN(value)) this.setO(name, Float.$valueOf(value)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setO", +function(name, value){ +name = name.toLowerCase(); +if (value == null || this.htBooleanParameterFlags.containsKey(name)) return; +this.htNonbooleanParameterValues.put(name, value); +}, "~S,~O"); +Clazz_defineMethod(c$, "removeParam", +function(key){ +key = key.toLowerCase(); +if (this.htBooleanParameterFlags.containsKey(key)) { +this.htBooleanParameterFlags.remove(key); +if (!this.htPropertyFlagsRemoved.containsKey(key)) this.htPropertyFlagsRemoved.put(key, Boolean.FALSE); +return; +}if (this.htNonbooleanParameterValues.containsKey(key)) this.htNonbooleanParameterValues.remove(key); +}, "~S"); +Clazz_defineMethod(c$, "setUserVariable", +function(key, $var){ +if ($var != null) { +key = key.toLowerCase(); +this.htUserVariables.put(key, $var.setName(key)); +}return $var; +}, "~S,JS.SV"); +Clazz_defineMethod(c$, "unsetUserVariable", +function(key){ +if (key.equals("all") || key.equals("variables")) { +this.htUserVariables.clear(); +JU.Logger.info("all user-defined variables deleted"); +} else if (this.htUserVariables.containsKey(key)) { +JU.Logger.info("variable " + key + " deleted"); +this.htUserVariables.remove(key); +}}, "~S"); +Clazz_defineMethod(c$, "removeUserVariable", +function(key){ +this.htUserVariables.remove(key); +}, "~S"); +Clazz_defineMethod(c$, "getUserVariable", +function(name){ +if (name == null) return null; +name = name.toLowerCase(); +return this.htUserVariables.get(name); +}, "~S"); +Clazz_defineMethod(c$, "getParameterEscaped", +function(name, nMax){ +name = name.toLowerCase(); +if (this.htNonbooleanParameterValues.containsKey(name)) { +var v = this.htNonbooleanParameterValues.get(name); +return JV.StateManager.varClip(name, JU.Escape.e(v), nMax); +}if (this.htBooleanParameterFlags.containsKey(name)) return this.htBooleanParameterFlags.get(name).toString(); +if (this.htUserVariables.containsKey(name)) return this.htUserVariables.get(name).escape(); +if (this.htPropertyFlagsRemoved.containsKey(name)) return "false"; +return ""; +}, "~S,~N"); +Clazz_defineMethod(c$, "getParameter", +function(name, nullAsString){ +var v = this.getParam(name, false); +return (v == null && nullAsString ? "" : v); +}, "~S,~B"); +Clazz_defineMethod(c$, "getAndSetNewVariable", +function(name, doSet){ +if (name == null || name.length == 0) name = "x"; +var v = this.getParam(name, true); +return (v == null && doSet && name.charAt(0) != '_' ? this.setUserVariable(name, JS.SV.newV(4, "")) : JS.SV.getVariable(v)); +}, "~S,~B"); +Clazz_defineMethod(c$, "getParam", +function(name, asVariable){ +name = name.toLowerCase(); +if (name.equals("_memory")) { +var bTotal = 0; +var bFree = 0; +{ +}var value = JU.DF.formatDecimal(bTotal - bFree, 1) + "/" + JU.DF.formatDecimal(bTotal, 1); +this.htNonbooleanParameterValues.put("_memory", value); +}if (this.htNonbooleanParameterValues.containsKey(name)) return this.htNonbooleanParameterValues.get(name); +if (this.htBooleanParameterFlags.containsKey(name)) return this.htBooleanParameterFlags.get(name); +if (this.htPropertyFlagsRemoved.containsKey(name)) return Boolean.FALSE; +if (this.htUserVariables.containsKey(name)) { +var v = this.htUserVariables.get(name); +return (asVariable ? v : JS.SV.oValue(v)); +}return null; +}, "~S,~B"); +Clazz_defineMethod(c$, "getVariableList", +function(){ +return JV.StateManager.getVariableList(this.htUserVariables, 0, true, false); +}); +Clazz_defineMethod(c$, "setStructureList", +function(list, type){ +this.haveSetStructureList = true; +this.structureList.put(type, list); +}, "~A,J.c.STR"); +Clazz_defineMethod(c$, "getStructureList", +function(){ +return this.structureList; +}); +c$.doReportProperty = Clazz_defineMethod(c$, "doReportProperty", +function(name){ +return (name.charAt(0) != '_' && JV.GlobalSettings.unreportedProperties.indexOf(";" + name + ";") < 0); +}, "~S"); +Clazz_defineMethod(c$, "getAllVariables", +function(){ +var map = new java.util.Hashtable(); +map.putAll(this.htBooleanParameterFlags); +map.putAll(this.htNonbooleanParameterValues); +map.putAll(this.htUserVariables); +return map; +}); +Clazz_defineMethod(c$, "getLoadState", +function(htParams){ +var str = new JU.SB(); +this.app(str, "set allowEmbeddedScripts false"); +if (this.allowEmbeddedScripts) this.setB("allowEmbeddedScripts", true); +this.app(str, "set appendNew " + this.appendNew); +this.app(str, "set appletProxy " + JU.PT.esc(this.appletProxy)); +this.app(str, "set applySymmetryToBonds " + this.applySymmetryToBonds); +if (this.atomTypes.length > 0) this.app(str, "set atomTypes " + JU.PT.esc(this.atomTypes)); +this.app(str, "set autoBond " + this.autoBond); +if (this.axesOrientationRasmol) this.app(str, "set axesOrientationRasmol true"); +this.app(str, "set bondRadiusMilliAngstroms " + this.bondRadiusMilliAngstroms); +this.app(str, "set bondTolerance " + this.bondTolerance); +this.app(str, "set defaultLattice " + JU.Escape.eP(this.ptDefaultLattice)); +this.app(str, "set defaultLoadFilter " + JU.PT.esc(this.defaultLoadFilter)); +this.app(str, "set defaultLoadScript \"\""); +if (this.defaultLoadScript.length > 0) this.setO("defaultLoadScript", this.defaultLoadScript); +this.app(str, "set defaultStructureDssp " + this.defaultStructureDSSP); +var sMode = this.vwr.getDefaultVdwNameOrData(-2147483648, null, null); +this.app(str, "set defaultVDW " + sMode); +if (sMode.equals("User")) this.app(str, this.vwr.getDefaultVdwNameOrData(2147483647, null, null)); +this.app(str, "set forceAutoBond " + this.forceAutoBond); +this.app(str, "#set defaultDirectory " + JU.PT.esc(this.defaultDirectory)); +this.app(str, "#set loadFormat " + JU.PT.esc(this.loadFormat)); +this.app(str, "#set loadLigandFormat " + JU.PT.esc(this.pdbLoadLigandFormat)); +this.app(str, "#set smilesUrlFormat " + JU.PT.esc(this.smilesUrlFormat)); +this.app(str, "#set nihResolverFormat " + JU.PT.esc(this.nihResolverFormat)); +this.app(str, "#set pubChemFormat " + JU.PT.esc(this.pubChemFormat)); +this.app(str, "set bondingVersion " + this.bondingVersion); +this.app(str, "set legacyAutoBonding " + this.legacyAutoBonding); +this.app(str, "set legacyAutoBonding " + this.legacyAutoBonding); +this.app(str, "set legacyHAddition " + this.legacyHAddition); +this.app(str, "set legacyJavaFloat " + this.legacyJavaFloat); +this.app(str, "set minBondDistance " + this.minBondDistance); +this.app(str, "set minimizationCriterion " + this.minimizationCriterion); +this.app(str, "set minimizationSteps " + this.minimizationSteps); +this.app(str, "set multipleBondBananas false"); +this.app(str, "set pdbAddHydrogens " + (htParams != null && htParams.get("pdbNoHydrogens") !== Boolean.TRUE ? this.pdbAddHydrogens : false)); +this.app(str, "set pdbGetHeader " + this.pdbGetHeader); +this.app(str, "set pdbSequential " + this.pdbSequential); +this.app(str, "set percentVdwAtom " + this.percentVdwAtom); +this.app(str, "set smallMoleculeMaxAtoms " + this.smallMoleculeMaxAtoms); +this.app(str, "set smartAromatic " + this.smartAromatic); +if (this.zeroBasedXyzRasmol) this.app(str, "set zeroBasedXyzRasmol true"); +return str.toString(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "app", +function(s, cmd){ +if (cmd.length == 0) return; +s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz_defineMethod(c$, "setCIR", +function(template, notify){ +if (template == null || template.equals(this.nihResolverFormat) && this.smilesUrlFormat != null) return; +var pt = template.indexOf("/structure"); +if (pt > 0) { +this.nihResolverFormat = template.substring(0, pt + 10); +this.smilesUrlFormat = this.nihResolverFormat + "/%FILE/file?format=sdf&get3d=true"; +if (notify) JU.Logger.info("CIR resolver set to " + this.nihResolverFormat + " template=" + template); +}}, "~S,~B"); +c$.unreportedProperties = (";ambientpercent;animationfps;antialiasdisplay;antialiasimages;antialiastranslucent;appendnew;axescolor;axesposition;axesmolecular;axesorientationrasmol;axesunitcell;axeswindow;axis1color;axis2color;axis3color;backgroundcolor;backgroundmodel;bondsymmetryatoms;boundboxcolor;cameradepth;bondingversion;ciprule6full;contextdepthmax;debug;debugscript;defaultlatttice;defaults;defaultdropscript;diffusepercent;;exportdrivers;exportscale;_filecaching;_filecache;fontcaching;fontscaling;forcefield;language;hbondsDistanceMaximum;hbondsangleminimum;jmolinJSV;legacyautobonding;legacyhaddition;legacyjavafloat;loglevel;logfile;loggestures;logcommands;measurestylechime;loadformat;loadligandformat;macrodirectory;mkaddhydrogens;minimizationmaxatoms;smilesurlformat;pubchemformat;nihresolverformat;edsurlformat;edsurlcutoff;multiprocessor;navigationmode;;nodelay;pathforallfiles;perspectivedepth;phongexponent;perspectivemodel;platformspeed;preservestate;refreshing;repaintwaitms;rotationradius;selectallmodels;showaxes;showaxis1;showaxis2;showaxis3;showboundbox;showfrank;showtiming;showunitcell;slabenabled;slab;slabrange;depth;zshade;zshadepower;specular;specularexponent;specularpercent;celshading;celshadingpower;specularpower;stateversion;statusreporting;stereo;stereostate;vibrationperiod;unitcellcolor;visualrange;windowcentered;zerobasedxyzrasmol;zoomenabled;mousedragfactor;mousewheelfactor;scriptqueue;scriptreportinglevel;syncscript;syncmouse;syncstereo;defaultdirectory;currentlocalpath;defaultdirectorylocal;ambient;bonds;colorrasmol;diffuse;fractionalrelative;frank;hetero;hidenotselected;hoverlabel;hydrogen;languagetranslation;measurementunits;navigationdepth;navigationslab;picking;pickingstyle;propertycolorscheme;radius;rgbblue;rgbgreen;rgbred;scaleangstromsperinch;selectionhalos;showscript;showselections;solvent;strandcount;spinx;spiny;spinz;spinfps;navx;navy;navz;navfps;" + J.c.CBK.getNameList() + ";undo;undoauto;undomax;atompicking;drawpicking;bondpicking;pickspinrate;picklabel" + ";modelkitmode;autoplaymovie;allowaudio;allowgestures;allowkeystrokes;allowmultitouch;allowmodelkit" + ";dodrop;hovered;historylevel;imagestate;iskiosk;useminimizationthread" + ";checkcir;resolverresolver;showkeystrokes;saveproteinstructurestate;testflag1;testflag2;testflag3;testflag4" + ";selecthetero;selecthydrogen" + ";pointgrouplineartolerance;pointgroupdistancetolerance" + ";minimizationreportsteps;elementkey;symmetryhermannmauguin;").toLowerCase(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.util.Hashtable", "JU.SB", "$.V3", "JU.Elements"], "JV.JC", ["JU.PT", "J.i18n.GT", "JU.Logger"], function(){ +var c$ = Clazz_declareType(JV, "JC", null); +c$.getNBOTypeFromName = Clazz_defineMethod(c$, "getNBOTypeFromName", +function(nboType){ +var pt = ";AO;;;;PNAO;;NAO;;;PNHO;;NHO;;;PNBO;;NBO;;;PNLMO;NLMO;;MO;;;;NO;;;;;;;;;;PRNBO;RNBO;;;;;;;;".indexOf(";" + nboType + ";"); +return (pt < 0 ? pt : Clazz_doubleToInt(pt / 6) + 31); +}, "~S"); +c$.getCIPChiralityName = Clazz_defineMethod(c$, "getCIPChiralityName", +function(flags){ +switch (flags) { +case 13: +return "Z"; +case 5: +return "z"; +case 14: +return "E"; +case 6: +return "e"; +case 17: +return "M"; +case 18: +return "P"; +case 1: +return "R"; +case 2: +return "S"; +case 9: +return "r"; +case 10: +return "s"; +case 25: +return "m"; +case 26: +return "p"; +case 7: +return "?"; +case 3: +case 0: +default: +return ""; +} +}, "~N"); +c$.getCIPRuleName = Clazz_defineMethod(c$, "getCIPRuleName", +function(i){ +return JV.JC.ruleNames[i]; +}, "~N"); +c$.getCIPChiralityCode = Clazz_defineMethod(c$, "getCIPChiralityCode", +function(c){ +switch ((c).charCodeAt(0)) { +case 90: +return 13; +case 122: +return 5; +case 69: +return 14; +case 101: +return 6; +case 82: +return 1; +case 83: +return 2; +case 114: +return 9; +case 115: +return 10; +case 63: +return 7; +default: +return 0; +} +}, "~S"); +c$.fixOptimadeCall = Clazz_defineMethod(c$, "fixOptimadeCall", +function(url){ +var pt = url.indexOf("response_fields=") + 16; +var a = ",chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species,"; +if (pt < 16) { +var ptQ = url.indexOf("?"); +url += (ptQ < 0 ? "?" : "&") + "response_fields=" + a.substring(1, a.length - 1); +} else { +var fields = "," + url.substring(pt, (url + "&").indexOf('&', pt)) + ","; +var flen = fields.length; +for (var i = 0, b = 0; i >= 0; i = b) { +b = a.indexOf(',', i + 1); +if (b < 0) break; +var k = a.substring(i, b + 1); +if (fields.indexOf(k) < 0) { +fields += k.substring(1); +}} +url = url.substring(0, pt) + fields.substring(1, fields.length - 1) + url.substring(pt + flen - 2); +}return url; +}, "~S"); +c$.resolveDataBase = Clazz_defineMethod(c$, "resolveDataBase", +function(database, id, format){ +if (format == null) { +if ((format = JV.JC.databases.get(database.toLowerCase())) == null) return null; +var pt = id.indexOf("/"); +if (pt < 0) { +if (database.equals("pubchem")) id = "name/" + id; + else if (database.equals("nci")) id += "/file?format=sdf&get3d=true"; +}if (format.startsWith("'")) { +pt = id.indexOf("."); +var n = (pt > 0 ? JU.PT.parseInt(id.substring(pt + 1)) : 0); +if (pt > 0) id = id.substring(0, pt); +format = JU.PT.rep(format, "%n", "" + n); +}} else if (id.indexOf(".") >= 0 && format.indexOf("%FILE.") >= 0) { +format = format.substring(0, format.indexOf("%FILE")); +}if (format.indexOf("%c") >= 0) for (var i = 1, n = id.length; i <= n; i++) if (format.indexOf("%c" + i) >= 0) format = JU.PT.rep(format, "%c" + i, id.substring(i - 1, i).toLowerCase()); + +return (format.indexOf("%FILE") >= 0 ? JU.PT.rep(format, "%FILE", id) : format.indexOf("%file") >= 0 ? JU.PT.rep(format, "%file", id.toLowerCase()) : format + id); +}, "~S,~S,~S"); +c$.fixProtocol = Clazz_defineMethod(c$, "fixProtocol", +function(name){ +var isHttp = (name != null && name.indexOf("http") >= 0); +var newname = (name == null || !isHttp ? name : name.indexOf("http://www.rcsb.org/pdb/files/") == 0 ? JV.JC.resolveDataBase(name.indexOf("/ligand/") >= 0 ? "ligand" : "pdb", name.substring(name.lastIndexOf("/") + 1), null) : name.indexOf("http://www.ebi") == 0 || name.indexOf("http://rruff") == 0 || name.indexOf("http://pubchem") == 0 || name.indexOf("http://cactus") == 0 || name.indexOf("http://www.materialsproject") == 0 ? "https://" + name.substring(7) : name.indexOf("optimade") > 0 ? JV.JC.fixOptimadeCall(name) : name); +if (newname !== name) JU.Logger.info("JC.fixProtocol " + name + " --> " + newname); +return newname; +}, "~S"); +c$.embedScript = Clazz_defineMethod(c$, "embedScript", +function(s){ +return "\n/**" + "**** Jmol Embedded Script ****" + " \n" + s + "\n**/"; +}, "~S"); +c$.getShapeVisibilityFlag = Clazz_defineMethod(c$, "getShapeVisibilityFlag", +function(shapeID){ +return 16 << Math.min(shapeID, 26); +}, "~N"); +c$.shapeTokenIndex = Clazz_defineMethod(c$, "shapeTokenIndex", +function(tok){ +switch (tok) { +case 1153433601: +case 1073741859: +return 0; +case 1677721602: +case 659488: +return 1; +case 1613238294: +return 2; +case 1611141176: +return 3; +case 659482: +return 4; +case 1825200146: +return 5; +case 1745489939: +case 537006096: +return 6; +case 1112152076: +return 7; +case 1112152070: +return 8; +case 1114249217: +return 9; +case 1112152078: +return 10; +case 1112152066: +return 11; +case 1649022989: +return 12; +case 1112152071: +return 13; +case 1112152073: +return 14; +case 1112152074: +return 15; +case 1112150019: +return 16; +case 135175: +return 17; +case 135198: +return 18; +case 1112150021: +return 19; +case 1112150020: +return 20; +case 1275203608: +return 21; +case 135174: +return 23; +case 135176: +return 22; +case 135180: +return 24; +case 134353926: +return 25; +case 135182: +return 26; +case 1073877010: +return 27; +case 1073877011: +return 28; +case 135188: +return 29; +case 135190: +return 30; +case 537022465: +return 31; +case 1611272194: +return 34; +case 1812599299: +return 32; +case 1814695966: +return 33; +case 544771: +return 35; +case 1611272202: +return 36; +} +return -1; +}, "~N"); +c$.getShapeClassName = Clazz_defineMethod(c$, "getShapeClassName", +function(shapeID, isRenderer){ +if (shapeID < 0) return JV.JC.shapeClassBases[~shapeID]; +return "J." + (isRenderer ? "render" : "shape") + (shapeID >= 9 && shapeID < 16 ? "bio." : shapeID >= 16 && shapeID < 23 ? "special." : shapeID >= 24 && shapeID < 30 ? "surface." : shapeID == 23 ? "cgo." : ".") + JV.JC.shapeClassBases[shapeID]; +}, "~N,~B"); +c$.getEchoName = Clazz_defineMethod(c$, "getEchoName", +function(type){ +return JV.JC.echoNames[type]; +}, "~N"); +c$.setZPosition = Clazz_defineMethod(c$, "setZPosition", +function(offset, pos){ +return (offset & -49) | pos; +}, "~N,~N"); +c$.setPointer = Clazz_defineMethod(c$, "setPointer", +function(offset, pointer){ +return (offset & -4) | pointer; +}, "~N,~N"); +c$.getPointer = Clazz_defineMethod(c$, "getPointer", +function(offset){ +return offset & 3; +}, "~N"); +c$.getPointerName = Clazz_defineMethod(c$, "getPointerName", +function(pointer){ +return ((pointer & 1) == 0 ? "" : (pointer & 2) > 0 ? "background" : "on"); +}, "~N"); +c$.isOffsetAbsolute = Clazz_defineMethod(c$, "isOffsetAbsolute", +function(offset){ +return ((offset & 64) != 0); +}, "~N"); +c$.getOffset = Clazz_defineMethod(c$, "getOffset", +function(xOffset, yOffset, isAbsolute){ +xOffset = Math.min(Math.max(xOffset, -500), 500); +yOffset = (Math.min(Math.max(yOffset, -500), 500)); +var offset = ((xOffset & 1023) << 21) | ((yOffset & 1023) << 11) | (isAbsolute ? 64 : 0); +if (offset == JV.JC.LABEL_DEFAULT_OFFSET) offset = 0; + else if (!isAbsolute && (xOffset == 0 || yOffset == 0)) offset |= 256; +return offset; +}, "~N,~N,~B"); +c$.getXOffset = Clazz_defineMethod(c$, "getXOffset", +function(offset){ +if (offset == 0) return 4; +var x = (offset >> 21) & 1023; +x = (x > 500 ? x - 1023 - 1 : x); +return x; +}, "~N"); +c$.getYOffset = Clazz_defineMethod(c$, "getYOffset", +function(offset){ +if (offset == 0) return 4; +var y = (offset >> 11) & 1023; +return (y > 500 ? y - 1023 - 1 : y); +}, "~N"); +c$.getAlignment = Clazz_defineMethod(c$, "getAlignment", +function(offset){ +return (offset & 12); +}, "~N"); +c$.setHorizAlignment = Clazz_defineMethod(c$, "setHorizAlignment", +function(offset, hAlign){ +return (offset & -13) | hAlign; +}, "~N,~N"); +c$.getHorizAlignmentName = Clazz_defineMethod(c$, "getHorizAlignmentName", +function(align){ +return JV.JC.hAlignNames[(align >> 2) & 3]; +}, "~N"); +c$.isSmilesCanonical = Clazz_defineMethod(c$, "isSmilesCanonical", +function(options){ +return (options != null && JU.PT.isOneOf(options.toLowerCase(), ";/cactvs///;/cactus///;/nci///;/canonical///;")); +}, "~S"); +c$.getServiceCommand = Clazz_defineMethod(c$, "getServiceCommand", +function(script){ +return (script.length < 7 ? -1 : ("JSPECVIPEAKS: SELECT:JSVSTR:H1SIMULC13SIMUNBO:MODNBO:RUNNBO:VIENBO:SEANBO:CONNONESIM").indexOf(script.substring(0, 7).toUpperCase())); +}, "~S"); +c$.getUnitIDFlags = Clazz_defineMethod(c$, "getUnitIDFlags", +function(type){ +var i = 14; +if (type.indexOf("-") == 0) { +if (type.indexOf("m") > 0) i |= 1; +if (type.indexOf("a") < 0) i ^= 4; +if (type.indexOf("t") > 0) i |= 16; +}return i; +}, "~S"); +c$.getBoolName = Clazz_defineMethod(c$, "getBoolName", +function(g){ +return JV.JC.globalBooleans[g]; +}, "~N"); +c$.isSpaceGroupInfoKey = Clazz_defineMethod(c$, "isSpaceGroupInfoKey", +function(key){ +return (key.indexOf("nitCell") >= 0 || key.equals("coordinatesAreFractional") || key.startsWith("spaceGroup") || key.indexOf("ymmet") >= 0 || key.startsWith("lattice") || key.startsWith("intlTable")); +}, "~S"); +c$.getMenuScript = Clazz_defineMethod(c$, "getMenuScript", +function(type){ +if (type === "openPDB") { +return "var x__id__ = _modelTitle; if (x__id__.length != 4) { x__id__ = '1crn'};x__id__ = prompt('" + J.i18n.GT.$("Enter a four-digit PDB model ID or \"=\" and a three-digit ligand ID") + "',x__id__);if (!x__id__) { quit }; load @{'=' + x__id__}"; +}if (type === "openMOL") { +return "var x__id__ = _smilesString; if (!x__id__) { x__id__ = 'tylenol'};x__id__ = prompt('" + J.i18n.GT.$("Enter the name or identifier (SMILES, InChI, CAS) of a compound. Preface with \":\" to load from PubChem; otherwise Jmol will use the NCI/NIH Resolver.") + "',x__id__);if (!x__id__) { quit }; load @{(x__id__[1]==':' ? x__id__ : '$' + x__id__)}"; +}return null; +}, "~S"); +c$.axisLabels = Clazz_newArray(-1, ["+X", "+Y", "+Z", null, null, null, "a", "b", "c", "X", "Y", "Z", null, null, null, "X", null, "Z", null, "(Y)", null]); +c$.axesTypes = Clazz_newArray(-1, ["a", "b", "c", "x", "y", "z"]); +c$.ruleNames = Clazz_newArray(-1, ["", "1a", "1b", "2", "3", "4a", "4b", "4c", "5", "6"]); +c$.databaseArray = Clazz_newArray(-1, ["itatable", "https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-getgen?gnum=$FILE&what=gp&list=Standard%2FDefault+Setting", "itadiagram", "https://onlinelibrary.wiley.com/iucr/itc/Ac/ch2o3v0001/sgtable2o3o%FILE", "aflowbin", "http://aflowlib.mems.duke.edu/users/jmolers/binary_new/%FILE.aflow_binary", "aflowlib", "https://aflow.org/p/%FILE.cif", "aflowpro", "$aflowlib", "ams", "'https://rruff.geo.arizona.edu/AMS/viewJmol.php?'+(0+'%file'==0? 'mineral':('%file'.length==7? 'amcsd':'id'))+'=%file&action=showcif#_DOCACHE_'", "dssr", "http://dssr-jmol.x3dna.org/report.php?id=%FILE&opts=--json=ebi", "dssrModel", "http://dssr-jmol.x3dna.org/report.php?POST?opts=--json=ebi&model=", "iucr", "http://scripts.iucr.org/cgi-bin/sendcif_yard?%FILE", "cod", "http://www.crystallography.net/cod/cif/%c1/%c2%c3/%c4%c5/%FILE.cif", "nmr", "https://www.nmrdb.org/new_predictor?POST?molfile=", "nmrdb", "https://www.nmrdb.org/service/predictor?POST?molfile=", "nmrdb13", "https://www.nmrdb.org/service/jsmol13c?POST?molfile=", "magndata", "http://webbdcrista1.ehu.es/magndata/mcif/%FILE.mcif", "rna3d", "http://rna.bgsu.edu/rna3dhub/%TYPE/download/%FILE", "mmtf", "https://mmtf.rcsb.org/v1.0/full/%FILE", "bcif", "https://models.rcsb.org/%file.bcif", "chebi", "https://www.ebi.ac.uk/chebi/saveStructure.do?defaultImage=true&chebiId=%file%2D%", "ligand", "https://files.rcsb.org/ligands/download/%FILE.cif", "mp", "https://www.materialsproject.org/materials/mp-%FILE/cif#_DOCACHE_", "nci", "https://cactus.nci.nih.gov/chemical/structure/", "pdb", "https://files.rcsb.org/download/%FILE.pdb", "pdb0", "https://files.rcsb.org/download/%FILE.pdb", "pdbe", "https://www.ebi.ac.uk/pdbe/entry-files/download/%FILE.cif", "pdbe2", "https://www.ebi.ac.uk/pdbe/static/entry/%FILE_updated.cif", "pubchem", "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/%FILE/SDF?record_type=3d", "map", "https://www.ebi.ac.uk/pdbe/api/%TYPE/%FILE?pretty=false&metadata=true", "pdbemap", "https://www.ebi.ac.uk/pdbe/coordinates/files/%file.ccp4", "pdbemapdiff", "https://www.ebi.ac.uk/pdbe/coordinates/files/%file_diff.ccp4", "pdbemapserver", "https://www.ebi.ac.uk/pdbe/densities/x-ray/%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif", "pdbemapdiffserver", "https://www.ebi.ac.uk/pdbe/densities/x-ray/%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif&diff=1", "emdbmap", "https://www.ebi.ac.uk/pdbe/densities/emd/emd-%file/cell?detail=6&space=cartesian&encoding=bcif", "emdbquery", "https://www.ebi.ac.uk/emdb/api/search/fitted_pdbs:%file?fl=emdb_id,map_contour_level_value&wt=csv", "emdbmapserver", "https://www.ebi.ac.uk/pdbe/densities/emd/emd-%file/box/0,0,0/0,0,0?detail=6&space=cartesian&encoding=bcif", "xxxresolverResolver", "https://chemapps.stolaf.edu/resolver", "smiles2d", "https://cirx.chemicalcreatures.com/chemical/structure/%FILE/file?format=sdf&get3d=false", "smiles3d", "https://cirx.chemicalcreatures.com/chemical/structure/%FILE/file?format=sdf&get3d=true"]); +c$.databases = new java.util.Hashtable(); +{ +for (var i = 0; i < JV.JC.databaseArray.length; i += 2) { +var target = JV.JC.databaseArray[i + 1]; +if (target.charAt(0) == '$') { +target = JV.JC.databases.get(target.substring(1)); +}JV.JC.databases.put(JV.JC.databaseArray[i].toLowerCase(), target); +} +}c$.majorVersion = null; +{ +var tmpVersion = null; +var tmpDate = null; +{ +tmpVersion = Jmol.___JmolVersion; tmpDate = Jmol.___JmolDate; +}if (tmpDate != null) { +tmpDate = tmpDate.substring(7, 23); +}JV.JC.version = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JV.JC.majorVersion = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JV.JC.date = (tmpDate != null ? tmpDate : "(Unknown_date)"); +var v = -1; +try { +var s = JV.JC.version; +var major = ""; +var i = s.indexOf("."); +if (i < 0) { +v = 100000 * Integer.parseInt(s); +s = null; +}if (s != null) { +v = 100000 * Integer.parseInt(major = s.substring(0, i)); +s = s.substring(i + 1); +i = s.indexOf("."); +if (i < 0) { +v += 1000 * Integer.parseInt(s); +s = null; +}if (s != null) { +var m = s.substring(0, i); +major += "." + m; +JV.JC.majorVersion = major; +v += 1000 * Integer.parseInt(m); +s = s.substring(i + 1); +i = s.indexOf("_"); +if (i >= 0) s = s.substring(0, i); +i = s.indexOf(" "); +if (i >= 0) s = s.substring(0, i); +v += Integer.parseInt(s); +}}} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +JV.JC.versionInt = v; +}c$.center = JU.V3.new3(0, 0, 0); +c$.axisX = JU.V3.new3(1, 0, 0); +c$.axisY = JU.V3.new3(0, 1, 0); +c$.axisZ = JU.V3.new3(0, 0, 1); +c$.axisNX = JU.V3.new3(-1, 0, 0); +c$.axisNY = JU.V3.new3(0, -1, 0); +c$.axisNZ = JU.V3.new3(0, 0, -1); +c$.unitAxisVectors = Clazz_newArray(-1, [JV.JC.axisX, JV.JC.axisY, JV.JC.axisZ, JV.JC.axisNX, JV.JC.axisNY, JV.JC.axisNZ]); +c$.altArgbsCpk = Clazz_newIntArray(-1, [0xFFFF1493, 0xFFBFA6A6, 0xFFFFFF30, 0xFF57178F, 0xFFFFFFC0, 0xFFFFFFA0, 0xFFD8D8D8, 0xFF505050, 0xFF404040, 0xFF105050]); +c$.FORMAL_CHARGE_COLIX_RED = JU.Elements.elementSymbols.length + JV.JC.altArgbsCpk.length; +c$.argbsFormalCharge = Clazz_newIntArray(-1, [0xFFFF0000, 0xFFFF4040, 0xFFFF8080, 0xFFFFC0C0, 0xFFFFFFFF, 0xFFD8D8FF, 0xFFB4B4FF, 0xFF9090FF, 0xFF6C6CFF, 0xFF4848FF, 0xFF2424FF, 0xFF0000FF]); +c$.PARTIAL_CHARGE_COLIX_RED = JV.JC.FORMAL_CHARGE_COLIX_RED + JV.JC.argbsFormalCharge.length; +c$.argbsRwbScale = Clazz_newIntArray(-1, [0xFFFF0000, 0xFFFF1010, 0xFFFF2020, 0xFFFF3030, 0xFFFF4040, 0xFFFF5050, 0xFFFF6060, 0xFFFF7070, 0xFFFF8080, 0xFFFF9090, 0xFFFFA0A0, 0xFFFFB0B0, 0xFFFFC0C0, 0xFFFFD0D0, 0xFFFFE0E0, 0xFFFFFFFF, 0xFFE0E0FF, 0xFFD0D0FF, 0xFFC0C0FF, 0xFFB0B0FF, 0xFFA0A0FF, 0xFF9090FF, 0xFF8080FF, 0xFF7070FF, 0xFF6060FF, 0xFF5050FF, 0xFF4040FF, 0xFF3030FF, 0xFF2020FF, 0xFF1010FF, 0xFF0000FF]); +c$.PARTIAL_CHARGE_RANGE_SIZE = JV.JC.argbsRwbScale.length; +c$.argbsRoygbScale = Clazz_newIntArray(-1, [0xFFFF0000, 0xFFFF2000, 0xFFFF4000, 0xFFFF6000, 0xFFFF8000, 0xFFFFA000, 0xFFFFC000, 0xFFFFE000, 0xFFFFF000, 0xFFFFFF00, 0xFFF0F000, 0xFFE0FF00, 0xFFC0FF00, 0xFFA0FF00, 0xFF80FF00, 0xFF60FF00, 0xFF40FF00, 0xFF20FF00, 0xFF00FF00, 0xFF00FF20, 0xFF00FF40, 0xFF00FF60, 0xFF00FF80, 0xFF00FFA0, 0xFF00FFC0, 0xFF00FFE0, 0xFF00FFFF, 0xFF00E0FF, 0xFF00C0FF, 0xFF00A0FF, 0xFF0080FF, 0xFF0060FF, 0xFF0040FF, 0xFF0020FF, 0xFF0000FF]); +c$.predefinedVariable = Clazz_newArray(-1, ["@_1H _H & !(_2H,_3H)", "@_12C _C & !(_13C,_14C)", "@_14N _N & !(_15N)", "@solvent water, (_g>=45 & _g<48)", "@ligand _g=0|!(_g<46,protein,nucleic,water)", "@turn structure=1", "@sheet structure=2", "@helix structure=3", "@helix310 substructure=7", "@helixalpha substructure=8", "@helixpi substructure=9", "@bulges within(dssr,'bulges')", "@coaxStacks within(dssr,'coaxStacks')", "@hairpins within(dssr,'hairpins')", "@hbonds within(dssr,'hbonds')", "@helices within(dssr,'helices')", "@iloops within(dssr,'iloops')", "@isoCanonPairs within(dssr,'isoCanonPairs')", "@junctions within(dssr,'junctions')", "@kissingLoops within(dssr,'kissingLoops')", "@multiplets within(dssr,'multiplets')", "@nonStack within(dssr,'nonStack')", "@nts within(dssr,'nts')", "@pairs within(dssr,'pairs')", "@ssSegments within(dssr,'ssSegments')", "@stacks within(dssr,'stacks')", "@stems within(dssr,'stems')"]); +c$.predefinedStatic = Clazz_newArray(-1, ["@amino _g>0 & _g<=23", "@acidic asp,glu", "@basic arg,his,lys", "@charged acidic,basic", "@negative acidic", "@positive basic", "@neutral amino&!(acidic,basic)", "@polar amino&!hydrophobic", "@peptide protein&within(chain,monomer>1)&!within(chain,monomer>12)", "@cyclic his,phe,pro,trp,tyr", "@acyclic amino&!cyclic", "@aliphatic ala,gly,ile,leu,val", "@aromatic his,phe,trp,tyr", "@cystine within(group,(cys,cyx)&atomname=sg&connected((cys,cyx)&atomname=sg))", "@buried ala,cys,ile,leu,met,phe,trp,val", "@surface amino&!buried", "@hydrophobic ala,gly,ile,leu,met,phe,pro,trp,tyr,val", "@mainchain backbone", "@small ala,gly,ser", "@medium asn,asp,cys,pro,thr,val", "@large arg,glu,gln,his,ile,leu,lys,met,phe,trp,tyr", "@c nucleic & ([C] or [DC] or within(group,_a=42))", "@g nucleic & ([G] or [DG] or within(group,_a=43))", "@cg c,g", "@a nucleic & ([A] or [DA] or within(group,_a=44))", "@t nucleic & ([T] or [DT] or within(group,_a=45 | _a=49))", "@at a,t", "@i nucleic & ([I] or [DI] or within(group,_a=46) & !g)", "@u nucleic & ([U] or [DU] or within(group,_a=47) & !t)", "@tu nucleic & within(group,_a=48)", "@ions _g>=46&_g<48", "@alpha _a=2", "@_bb protein&(_a>=1&_a<6|_a=64) | nucleic&(_a>=6&_a<14|_a>=73&&_a<=79||_a==99||_a=100)", "@backbone _bb | _H && connected(single, _bb)", "@spine protein&_a>=1&_a<4|nucleic&(_a>=6&_a<11|_a=13)", "@sidechain (protein,nucleic) & !backbone", "@base nucleic & !backbone", "@dynamic_flatring search('[a]')", "@nonmetal _H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn", "@metal !nonmetal && !_Xx", "@alkaliMetal _Li,_Na,_K,_Rb,_Cs,_Fr", "@alkalineEarth _Be,_Mg,_Ca,_Sr,_Ba,_Ra", "@nobleGas _He,_Ne,_Ar,_Kr,_Xe,_Rn", "@metalloid _B,_Si,_Ge,_As,_Sb,_Te", "@transitionMetal elemno>=21&elemno<=30|elemno=57|elemno=89|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112", "@lanthanide elemno>57&elemno<=71", "@actinide elemno>89&elemno<=103"]); +c$.shapeClassBases = Clazz_newArray(-1, ["Balls", "Sticks", "Hsticks", "Sssticks", "Struts", "Labels", "Measures", "Stars", "Halos", "Backbone", "Trace", "Cartoon", "Strands", "MeshRibbon", "Ribbons", "Rockets", "Dots", "Dipoles", "Vectors", "GeoSurface", "Ellipsoids", "Polyhedra", "Draw", "CGO", "Isosurface", "Contact", "LcaoCartoon", "MolecularOrbital", "NBO", "Pmesh", "Plot3D", "Echo", "Bbcage", "Uccage", "Axes", "Hover", "Frank"]); +{ +{ +}}c$.LABEL_DEFAULT_OFFSET = 8396800; +c$.echoNames = Clazz_newArray(-1, ["top", "bottom", "middle", "xy", "xyz"]); +c$.hAlignNames = Clazz_newArray(-1, ["", "left", "center", "right"]); +c$.READER_NOT_FOUND = "File reader was not found:"; +c$.globalBooleans = Clazz_newArray(-1, ["someModelsHaveFractionalCoordinates", "someModelsHaveSymmetry", "someModelsHaveUnitcells", "someModelsHaveCONECT", "isPDB", "someModelsHaveDomains", "someModelsHaveValidations", "isSupercell", "someModelsHaveAromaticBonds", "someModelsAreModulated"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.io.IOException"], "JV.JmolAsyncException", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.fileName = null; +Clazz_instantialize(this, arguments);}, JV, "JmolAsyncException", java.io.IOException); +Clazz_makeConstructor(c$, +function(cacheName){ +Clazz_superConstructor (this, JV.JmolAsyncException, []); +this.fileName = cacheName; +}, "~S"); +Clazz_defineMethod(c$, "getFileName", +function(){ +return this.fileName; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(null, "JV.ModelManager", ["JM.ModelLoader"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.modelSet = null; +this.modelSetPathName = null; +this.fileName = null; +Clazz_instantialize(this, arguments);}, JV, "ModelManager", null); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "zap", +function(){ +this.modelSetPathName = this.fileName = null; + new JM.ModelLoader(this.vwr, this.vwr.getZapName(), null, null, null, null); +}); +Clazz_defineMethod(c$, "createModelSet", +function(fullPathName, fileName, loadScript, atomSetCollection, bsNew, isAppend){ +var modelSetName = null; +if (isAppend) { +modelSetName = this.modelSet.modelSetName; +if (modelSetName.equals("zapped")) modelSetName = null; + else if (modelSetName.indexOf(" (modified)") < 0) modelSetName += " (modified)"; +} else if (atomSetCollection == null) { +this.zap(); +} else { +this.modelSetPathName = fullPathName; +this.fileName = fileName; +}if (atomSetCollection != null) { +if (modelSetName == null) { +modelSetName = this.vwr.getModelAdapter().getAtomSetCollectionName(atomSetCollection); +if (modelSetName != null) { +modelSetName = modelSetName.trim(); +if (modelSetName.length == 0) modelSetName = null; +}if (modelSetName == null) modelSetName = JV.ModelManager.reduceFilename(fileName); +} new JM.ModelLoader(this.vwr, modelSetName, loadScript, atomSetCollection, (isAppend ? this.modelSet : null), bsNew); +}if (this.modelSet.ac == 0 && !this.modelSet.getMSInfoB("isPyMOL")) this.zap(); +}, "~S,~S,JU.SB,~O,JU.BS,~B"); +c$.reduceFilename = Clazz_defineMethod(c$, "reduceFilename", +function(fileName){ +if (fileName == null) return null; +var ichDot = fileName.indexOf('.'); +if (ichDot > 0) fileName = fileName.substring(0, ichDot); +if (fileName.length > 24) fileName = fileName.substring(0, 20) + " ..."; +return fileName; +}, "~S"); +Clazz_defineMethod(c$, "createAtomDataSet", +function(atomSetCollection, tokType){ +return JM.ModelLoader.createAtomDataSet(this.vwr, this.modelSet, tokType, atomSetCollection, this.vwr.bsA()); +}, "~O,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = -1000; +this.y = -1000; +this.modifiers = 0; +this.time = -1; +this.name = null; +this.keybuf = 0; +Clazz_instantialize(this, arguments);}, JV, "MouseState", null); +Clazz_makeConstructor(c$, +function(name){ +this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "set", +function(time, x, y, modifiers){ +this.time = time; +this.x = x; +this.y = y; +this.modifiers = modifiers; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setCurrent", +function(current, clickCount){ +this.time = current.time; +if (clickCount < 2) { +this.x = current.x; +this.y = current.y; +}this.modifiers = current.modifiers; +}, "JV.MouseState,~N"); +Clazz_defineMethod(c$, "inRange", +function(xyRange, x, y){ +return (Math.abs(this.x - x) <= xyRange && Math.abs(this.y - y) <= xyRange); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "check", +function(xyRange, x, y, modifiers, time, delayMax){ +return (this.modifiers == modifiers && (delayMax >= 2147483647 ? this.inRange(xyRange, x, y) : time - this.time < delayMax && time - this.time > 20)); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "is", +function(current){ +return (current.x == this.x && current.y == this.y && current.time == this.time); +}, "JV.MouseState"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["JU.BS"], "JV.SelectionManager", ["JU.AU", "J.i18n.GT", "JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.listeners = null; +this.bsHidden = null; +this.bsSelection = null; +this.bsFixed = null; +this.bsSubset = null; +this.bsDeleted = null; +this.noneSelected = null; +this.empty = 1; +this.hideNotSelected = false; +this.bsTemp = null; +Clazz_instantialize(this, arguments);}, JV, "SelectionManager", null); +Clazz_prepareFields (c$, function(){ +this.listeners = new Array(0); +this.bsHidden = new JU.BS(); +this.bsSelection = new JU.BS(); +this.bsFixed = new JU.BS(); +this.bsTemp = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "processDeletedModelAtoms", +function(bsAtoms){ +JU.BSUtil.deleteBits(this.bsDeleted, bsAtoms); +JU.BSUtil.deleteBits(this.bsSubset, bsAtoms); +JU.BSUtil.deleteBits(this.bsFixed, bsAtoms); +JU.BSUtil.deleteBits(this.bsHidden, bsAtoms); +var bs = JU.BSUtil.copy(this.bsSelection); +JU.BSUtil.deleteBits(bs, bsAtoms); +this.setSelectionSet(bs, 0); +this.selectionChanged(false); +}, "JU.BS"); +Clazz_defineMethod(c$, "clear", +function(){ +this.clearSelection(true); +this.setSelectionSubset(null); +this.hide(null, null, 0, true); +this.bsDeleted = null; +this.setMotionFixedAtoms(null); +}); +Clazz_defineMethod(c$, "display", +function(modelSet, bs, addRemove, isQuiet){ +switch (addRemove) { +default: +var bsNotSubset = (this.bsSubset == null ? null : JU.BSUtil.andNot(JU.BSUtil.copy(this.bsHidden), this.bsSubset)); +var bsAll = modelSet.getModelAtomBitSetIncludingDeleted(-1, false); +this.bsHidden.or(bsAll); +if (bsNotSubset != null) { +this.bsHidden.and(this.bsSubset); +this.bsHidden.or(bsNotSubset); +}case 1275069441: +if (bs != null) this.bsHidden.andNot(bs); +break; +case 1073742119: +if (bs != null) this.bsHidden.or(bs); +break; +} +JU.BSUtil.andNot(this.bsHidden, this.bsDeleted); +modelSet.setBsHidden(this.bsHidden); +if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms hidden"), this.bsHidden.cardinality())); +}, "JM.ModelSet,JU.BS,~N,~B"); +Clazz_defineMethod(c$, "hide", +function(modelSet, bs, addRemove, isQuiet){ +var bsNotSubset = (addRemove == 0 || this.bsSubset == null ? null : JU.BSUtil.andNot(JU.BSUtil.copy(this.bsHidden), this.bsSubset)); +JV.SelectionManager.setBitSet(this.bsHidden, bs, addRemove); +if (bsNotSubset != null) this.bsHidden.or(bsNotSubset); +if (modelSet != null) modelSet.setBsHidden(this.bsHidden); +if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms hidden"), this.bsHidden.cardinality())); +}, "JM.ModelSet,JU.BS,~N,~B"); +Clazz_defineMethod(c$, "setSelectionSet", +function(set, addRemove){ +JV.SelectionManager.setBitSet(this.bsSelection, set, addRemove); +this.empty = -1; +}, "JU.BS,~N"); +c$.setBitSet = Clazz_defineMethod(c$, "setBitSet", +function(bsWhat, bs, addRemove){ +switch (addRemove) { +default: +bsWhat.clearAll(); +case 1275069441: +if (bs != null) bsWhat.or(bs); +break; +case 1073742119: +if (bs != null) bsWhat.andNot(bs); +break; +} +}, "JU.BS,JU.BS,~N"); +Clazz_defineMethod(c$, "getHiddenSet", +function(){ +return this.bsHidden; +}); +Clazz_defineMethod(c$, "getHideNotSelected", +function(){ +return this.hideNotSelected; +}); +Clazz_defineMethod(c$, "setHideNotSelected", +function(TF){ +this.hideNotSelected = TF; +if (TF) this.selectionChanged(false); +}, "~B"); +Clazz_defineMethod(c$, "isSelected", +function(atomIndex){ +return (atomIndex >= 0 && this.bsSelection.get(atomIndex)); +}, "~N"); +Clazz_defineMethod(c$, "select", +function(bs, addRemove, isQuiet){ +if (bs == null) { +this.selectAll(true); +if (!this.vwr.getBoolean(1612709900)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709900, null)); +if (!this.vwr.getBoolean(1612709894)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709894, null)); +} else { +this.setSelectionSet(bs, addRemove); +if (!this.vwr.getBoolean(1612709900)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709900, null)); +if (!this.vwr.getBoolean(1612709894)) this.excludeSelectionSet(this.vwr.ms.getAtoms(1612709894, null)); +}this.selectionChanged(false); +var reportChime = this.vwr.getBoolean(603979879); +if (!reportChime && isQuiet) return; +var n = this.getSelectionCount(); +if (reportChime) this.vwr.getChimeMessenger().reportSelection(n); + else if (!isQuiet) this.vwr.reportSelection(J.i18n.GT.i(J.i18n.GT.$("{0} atoms selected"), n)); +}, "JU.BS,~N,~B"); +Clazz_defineMethod(c$, "selectAll", +function(isQuiet){ +var count = this.vwr.ms.ac; +this.empty = (count == 0) ? 1 : 0; +for (var i = count; --i >= 0; ) this.bsSelection.set(i); + +JU.BSUtil.andNot(this.bsSelection, this.bsDeleted); +this.selectionChanged(isQuiet); +}, "~B"); +Clazz_defineMethod(c$, "clearSelection", +function(isQuiet){ +this.setHideNotSelected(false); +this.bsSelection.clearAll(); +this.empty = 1; +this.selectionChanged(isQuiet); +}, "~B"); +Clazz_defineMethod(c$, "isAtomSelected", +function(atomIndex){ +return ((this.bsSubset == null || this.bsSubset.get(atomIndex)) && this.bsDeleted == null || !this.bsDeleted.get(atomIndex)) && this.bsSelection.get(atomIndex); +}, "~N"); +Clazz_defineMethod(c$, "setSelectedAtom", +function(atomIndex, TF){ +if (atomIndex < 0) { +this.selectionChanged(true); +return; +}if (this.bsSubset != null && !this.bsSubset.get(atomIndex) || this.bsDeleted != null && this.bsDeleted.get(atomIndex)) return; +this.bsSelection.setBitTo(atomIndex, TF); +if (TF) this.empty = 0; + else this.empty = -1; +}, "~N,~B"); +Clazz_defineMethod(c$, "setSelectionSubset", +function(bs){ +this.bsSubset = bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "isInSelectionSubset", +function(atomIndex){ +return (atomIndex < 0 || this.bsSubset == null || this.bsSubset.get(atomIndex)); +}, "~N"); +Clazz_defineMethod(c$, "invertSelection", +function(){ +JU.BSUtil.invertInPlace(this.bsSelection, this.vwr.ms.ac); +this.empty = (this.bsSelection.length() > 0 ? 0 : 1); +this.selectionChanged(false); +}); +Clazz_defineMethod(c$, "excludeSelectionSet", +function(setExclude){ +if (setExclude == null || this.empty == 1) return; +this.bsSelection.andNot(setExclude); +this.empty = -1; +}, "JU.BS"); +Clazz_defineMethod(c$, "getSelectionCount", +function(){ +if (this.empty == 1) return 0; +this.empty = 1; +var bs; +if (this.bsSubset == null) { +bs = this.bsSelection; +} else { +this.bsTemp.clearAll(); +this.bsTemp.or(this.bsSubset); +this.bsTemp.and(this.bsSelection); +bs = this.bsTemp; +}var count = bs.cardinality(); +if (count > 0) this.empty = 0; +return count; +}); +Clazz_defineMethod(c$, "addListener", +function(listener){ +for (var i = this.listeners.length; --i >= 0; ) if (this.listeners[i] === listener) { +this.listeners[i] = null; +break; +} +var len = this.listeners.length; +for (var i = len; --i >= 0; ) if (this.listeners[i] == null) { +this.listeners[i] = listener; +return; +} +if (this.listeners.length == 0) this.listeners = new Array(1); + else this.listeners = JU.AU.doubleLength(this.listeners); +this.listeners[len] = listener; +}, "J.api.JmolSelectionListener"); +Clazz_defineMethod(c$, "selectionChanged", +function(isQuiet){ +if (this.hideNotSelected) this.hide(this.vwr.ms, JU.BSUtil.copyInvert(this.bsSelection, this.vwr.ms.ac), 0, isQuiet); +if (isQuiet || this.listeners.length == 0) return; +for (var i = this.listeners.length; --i >= 0; ) if (this.listeners[i] != null) this.listeners[i].selectionChanged(this.bsSelection); + +}, "~B"); +Clazz_defineMethod(c$, "deleteAtoms", +function(bs){ +var bsNew = JU.BSUtil.copy(bs); +if (this.bsDeleted == null) { +this.bsDeleted = bsNew; +} else { +bsNew.andNot(this.bsDeleted); +this.bsDeleted.or(bs); +}this.bsHidden.andNot(this.bsDeleted); +this.bsSelection.andNot(this.bsDeleted); +return bsNew.cardinality(); +}, "JU.BS"); +Clazz_defineMethod(c$, "getSelectedAtoms", +function(){ +if (this.bsSubset == null) return this.bsSelection; +var bs = JU.BSUtil.copy(this.bsSelection); +bs.and(this.bsSubset); +return bs; +}); +Clazz_defineMethod(c$, "getSelectedAtomsNoSubset", +function(){ +return JU.BSUtil.copy(this.bsSelection); +}); +Clazz_defineMethod(c$, "excludeAtoms", +function(bs, ignoreSubset){ +if (this.bsDeleted != null) bs.andNot(this.bsDeleted); +if (!ignoreSubset && this.bsSubset != null) (bs = JU.BSUtil.copy(bs)).and(this.bsSubset); +return bs; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setMotionFixedAtoms", +function(bs){ +this.bsFixed.clearAll(); +if (bs != null) this.bsFixed.or(bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "getMotionFixedAtoms", +function(){ +return this.bsFixed; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(null, "JV.ShapeManager", ["JU.BS", "$.P3", "J.api.Interface", "J.c.PAL", "$.VDW", "JM.Atom", "JU.BSUtil", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ms = null; +this.shapes = null; +this.vwr = null; +this.scaleText = null; +this.bsRenderableAtoms = null; +this.bsSlabbedInternal = null; +this.navMinMax = null; +Clazz_instantialize(this, arguments);}, JV, "ShapeManager", null); +Clazz_prepareFields (c$, function(){ +this.navMinMax = Clazz_newIntArray (4, 0); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +this.bsRenderableAtoms = new JU.BS(); +this.bsSlabbedInternal = new JU.BS(); +}, "JV.Viewer"); +Clazz_defineMethod(c$, "findNearestShapeAtomIndex", +function(x, y, closest, bsNot){ +if (this.shapes != null) for (var i = 0; i < this.shapes.length && closest[0] == null; ++i) if (this.shapes[i] != null) this.shapes[i].findNearestAtomIndex(x, y, closest, bsNot); + +}, "~N,~N,~A,JU.BS"); +Clazz_defineMethod(c$, "getShapePropertyIndex", +function(shapeID, propertyName, index){ +if (this.shapes == null || this.shapes[shapeID] == null) return null; +this.vwr.setShapeErrorState(shapeID, "get " + propertyName); +var result = this.shapes[shapeID].getProperty(propertyName, index); +this.vwr.setShapeErrorState(-1, null); +return result; +}, "~N,~S,~N"); +Clazz_defineMethod(c$, "getShapePropertyData", +function(shapeID, propertyName, data){ +if (this.shapes == null || this.shapes[shapeID] == null) return false; +this.vwr.setShapeErrorState(shapeID, "get " + propertyName); +var result = this.shapes[shapeID].getPropertyData(propertyName, data); +this.vwr.setShapeErrorState(-1, null); +return result; +}, "~N,~S,~A"); +Clazz_defineMethod(c$, "getShapeIdFromObjectName", +function(objectName){ +if (this.shapes != null) for (var i = 16; i < 30; ++i) if (this.shapes[i] != null && this.shapes[i].getIndexFromName(objectName) >= 0) return i; + +if (this.shapes[6] != null && this.shapes[6].getIndexFromName(objectName) >= 0) { +return 6; +}return -1; +}, "~S"); +Clazz_defineMethod(c$, "loadDefaultShapes", +function(newModelSet){ +this.ms = newModelSet; +if (this.shapes != null) for (var i = 0; i < this.shapes.length; ++i) if (this.shapes[i] != null) this.shapes[i].setModelSet(newModelSet); + +this.loadShape(0); +this.loadShape(1); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "loadShape", +function(shapeID){ +if (this.shapes == null) return null; +if (this.shapes[shapeID] != null) return this.shapes[shapeID]; +if (shapeID == 2 || shapeID == 3 || shapeID == 4) return null; +var className = JV.JC.getShapeClassName(shapeID, false); +var shape; +if ((shape = J.api.Interface.getInterface(className, this.vwr, "shape")) == null) return null; +this.vwr.setShapeErrorState(shapeID, "allocate"); +shape.initializeShape(this.vwr, this.ms, shapeID); +this.vwr.setShapeErrorState(-1, null); +return this.shapes[shapeID] = shape; +}, "~N"); +Clazz_defineMethod(c$, "notifyAtomPositionsChanged", +function(baseModel, bs, mat){ +var Imodel = Integer.$valueOf(baseModel); +var bsModelAtoms = this.vwr.getModelUndeletedAtomsBitSet(baseModel); +for (var i = 0; i < 37; i++) if (this.shapes[i] != null) this.setShapePropertyBs(i, "refreshTrajectories", Clazz_newArray(-1, [Imodel, bs, mat]), bsModelAtoms); + +}, "~N,JU.BS,JU.M4"); +Clazz_defineMethod(c$, "releaseShape", +function(shapeID){ +if (this.shapes != null) this.shapes[shapeID] = null; +}, "~N"); +Clazz_defineMethod(c$, "setScale", +function(){ +if (this.scaleText != null) { +this.loadShape(31); +this.setShapePropertyBs(31, "%SCALE", this.scaleText, null); +this.scaleText = null; +}}); +Clazz_defineMethod(c$, "resetShapes", +function(cacheScale){ +if (cacheScale) { +var data = new Array(1); +this.getShapePropertyData(31, "%SCALE", data); +this.scaleText = data[0]; +}this.shapes = new Array(37); +}, "~B"); +Clazz_defineMethod(c$, "setShapeProperties", +function(shapeID, values){ +this.vwr.setShapeErrorState(shapeID, "set properties"); +this.loadShape(shapeID).setProperties(values); +this.vwr.setShapeErrorState(-1, null); +}, "~N,~A"); +Clazz_defineMethod(c$, "setShapeSizeBs", +function(shapeID, size, rd, bsSelected){ +if (this.shapes == null) return; +if (bsSelected == null && (shapeID != 1 || size != 2147483647)) bsSelected = this.vwr.bsA(); +if (rd != null && rd.value != 0 && rd.vdwType === J.c.VDW.TEMP) this.ms.getBfactor100Lo(); +this.vwr.setShapeErrorState(shapeID, "set size"); +if (rd == null ? size != 0 : rd.value != 0) this.loadShape(shapeID); +if (this.shapes[shapeID] != null) { +this.shapes[shapeID].setShapeSizeRD(size, rd, bsSelected); +}this.vwr.setShapeErrorState(-1, null); +}, "~N,~N,J.atomdata.RadiusData,JU.BS"); +Clazz_defineMethod(c$, "setLabel", +function(strLabel, bsSelection){ +if (strLabel == null) { +if (this.shapes[5] == null) return; +} else { +this.loadShape(5); +this.setShapeSizeBs(5, 0, null, bsSelection); +}this.setShapePropertyBs(5, "label", strLabel, bsSelection); +}, "~O,JU.BS"); +Clazz_defineMethod(c$, "setShapePropertyBs", +function(shapeID, propertyName, value, bsSelected){ +if (this.shapes == null || this.shapes[shapeID] == null) return; +if (bsSelected == null) bsSelected = this.vwr.bsA(); +this.vwr.setShapeErrorState(shapeID, "set " + propertyName); +this.shapes[shapeID].setProperty(propertyName.intern(), value, bsSelected); +this.vwr.setShapeErrorState(-1, null); +}, "~N,~S,~O,JU.BS"); +Clazz_defineMethod(c$, "checkFrankclicked", +function(x, y){ +var frankShape = this.shapes[36]; +return (frankShape != null && frankShape.wasClicked(x, y)); +}, "~N,~N"); +Clazz_defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +var shape; +var map = null; +if (this.vwr.getPickingMode() == 2) { +return (this.shapes[5] == null ? null : this.shapes[5].checkObjectClicked(x, y, modifiers, bsVisible, false)); +}if (modifiers != 0 && this.vwr.getBondsPickable() && (map = this.shapes[1].checkObjectClicked(x, y, modifiers, bsVisible, false)) != null) return map; +for (var i = 0; i < JV.ShapeManager.clickableMax; i++) if ((shape = this.shapes[JV.ShapeManager.hoverable[i]]) != null && (map = shape.checkObjectClicked(x, y, modifiers, bsVisible, drawPicking)) != null) return map; + +return null; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, modifiers, bsVisible, iShape){ +var found = false; +var n = (iShape > 0 ? iShape + 1 : 37); +for (var i = iShape; !found && i < n; ++i) if (this.shapes[i] != null) found = this.shapes[i].checkObjectDragged(prevX, prevY, x, y, modifiers, bsVisible); + +return found; +}, "~N,~N,~N,~N,~N,JU.BS,~N"); +Clazz_defineMethod(c$, "checkObjectHovered", +function(x, y, bsVisible, checkBonds){ +var shape = this.shapes[1]; +if (checkBonds && shape != null && shape.checkObjectHovered(x, y, bsVisible)) return true; +for (var i = 0; i < JV.ShapeManager.hoverable.length; i++) { +shape = this.shapes[JV.ShapeManager.hoverable[i]]; +if (shape != null && shape.checkObjectHovered(x, y, bsVisible)) return true; +} +return false; +}, "~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "deleteShapeAtoms", +function(value, bs){ +if (this.shapes != null) for (var j = 0; j < 37; j++) if (this.shapes[j] != null) this.setShapePropertyBs(j, "deleteModelAtoms", value, bs); + +}, "~A,JU.BS"); +Clazz_defineMethod(c$, "deleteVdwDependentShapes", +function(bs){ +if (bs == null) bs = this.vwr.bsA(); +this.setShapeAtomsSafely(24, "deleteVdw", bs); +this.setShapeAtomsSafely(25, "deleteVdw", bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "setShapeAtomsSafely", +function(i, key, bs){ +if (this.shapes[i] != null) this.shapes[i].setProperty(key, null, bs); +}, "~N,~S,JU.BS"); +Clazz_defineMethod(c$, "notifyAtoms", +function(prop, atomsAndModels){ +switch (prop) { +case "atomsDeleted": +this.setShapeAtomsSafely(6, prop, atomsAndModels[0]); +this.vwr.setModelkitPropertySafely("updatemodelkeys", atomsAndModels); +break; +case "atomsMoved": +if (this.getShape(22) != null) this.vwr.setModelkitPropertySafely(prop, atomsAndModels[0]); +break; +} +}, "~S,~A"); +Clazz_defineMethod(c$, "getAtomShapeValue", +function(tok, group, atomIndex){ +var iShape = JV.JC.shapeTokenIndex(tok); +if (iShape < 0 || this.shapes[iShape] == null) return 0; +var mad = this.shapes[iShape].getSize(atomIndex); +if (mad == 0) { +if ((group.shapeVisibilityFlags & this.shapes[iShape].vf) == 0) return 0; +mad = this.shapes[iShape].getSizeG(group); +}return mad / 2000; +}, "~N,JM.Group,~N"); +Clazz_defineMethod(c$, "replaceGroup", +function(g0, g1){ +if (this.shapes == null) return; +for (var i = 9; i < 16; i++) if (this.shapes[i] != null) this.shapes[i].replaceGroup(g0, g1); + +}, "JM.Group,JM.Group"); +Clazz_defineMethod(c$, "getObjectMap", +function(map, withDollar){ +if (this.shapes == null) return; +var bDollar = Boolean.$valueOf(withDollar); +for (var i = 16; i < 30; ++i) this.getShapePropertyData(i, "getNames", Clazz_newArray(-1, [map, bDollar])); + +}, "java.util.Map,~B"); +Clazz_defineMethod(c$, "getProperty", +function(paramInfo){ +if (paramInfo.equals("getShapes")) return this.shapes; +return null; +}, "~O"); +Clazz_defineMethod(c$, "getShape", +function(i){ +return (this.shapes == null ? null : this.shapes[i]); +}, "~N"); +Clazz_defineMethod(c$, "resetBioshapes", +function(bsAllAtoms){ +if (this.shapes == null) return; +for (var i = 0; i < this.shapes.length; ++i) if (this.shapes[i] != null && this.shapes[i].isBioShape) { +this.shapes[i].setModelSet(this.ms); +this.shapes[i].setShapeSizeRD(0, null, bsAllAtoms); +this.shapes[i].setProperty("color", J.c.PAL.NONE, bsAllAtoms); +} +}, "JU.BS"); +Clazz_defineMethod(c$, "setAtomLabel", +function(strLabel, i){ +if (this.shapes != null) this.shapes[5].setProperty("label:" + strLabel, Integer.$valueOf(i), null); +}, "~S,~N"); +Clazz_defineMethod(c$, "setModelVisibility", +function(){ +var shapes = this.shapes; +if (shapes == null || shapes[0] == null) return; +var bs = this.vwr.getVisibleFramesBitSet(); +for (var i = 8; i < 33; i++) if (shapes[i] != null) shapes[i].setModelVisibilityFlags(bs); + +var showHydrogens = this.vwr.getBoolean(603979922); +var bsDeleted = this.vwr.slm.bsDeleted; +var atoms = this.ms.at; +this.ms.clearVisibleSets(); +if (atoms.length > 0) { +for (var i = this.ms.ac; --i >= 0; ) { +var atom = atoms[i]; +if (atom != null) atom.shapeVisibilityFlags &= -64; +if (bsDeleted != null && bsDeleted.get(i)) continue; +if (bs.get(atom.mi)) { +var f = 1; +if (!this.ms.isAtomHidden(i) && (showHydrogens || atom.getElementNumber() != 1)) { +f |= 8; +if (atom.madAtom != 0) f |= 16; +atom.setShapeVisibility(f, true); +}}} +}this.setShapeVis(); +}); +Clazz_defineMethod(c$, "setShapeVis", +function(){ +for (var i = 0; i < 37; ++i) { +var shape = this.shapes[i]; +if (shape != null) shape.setAtomClickability(); +} +}); +Clazz_defineMethod(c$, "finalizeAtoms", +function(bsTranslateSelected, finalizeParams){ +var vwr = this.vwr; +var tm = vwr.tm; +if (finalizeParams) vwr.finalizeTransformParameters(); +if (bsTranslateSelected != null) { +var ptCenter = this.ms.getAtomSetCenter(bsTranslateSelected); +var pt = new JU.P3(); +tm.transformPt3f(ptCenter, pt); +pt.add(tm.ptOffset); +tm.unTransformPoint(pt, pt); +pt.sub(ptCenter); +vwr.setAtomCoordsRelative(pt, bsTranslateSelected); +tm.ptOffset.set(0, 0, 0); +tm.bsSelectedAtoms = null; +}var bsOK = this.bsRenderableAtoms; +this.ms.getAtomsInFrame(bsOK); +var vibrationVectors = this.ms.vibrations; +var vibsOn = (vibrationVectors != null && tm.vibrationOn); +var checkOccupancy = (this.ms.bsModulated != null && this.ms.occupancies != null); +var atoms = this.ms.at; +var occ; +var haveMods = false; +var bsSlabbed = this.bsSlabbedInternal; +bsSlabbed.clearAll(); +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +var screen = (vibsOn && atom.hasVibration() ? tm.transformPtVib(atom, vibrationVectors[i]) : tm.transformPt(atom)); +if (screen.z == 1 && tm.internalSlab && tm.xyzIsSlabbedInternal(atom)) { +bsSlabbed.set(i); +}atom.sX = screen.x; +atom.sY = screen.y; +atom.sZ = screen.z; +var d = Math.abs(atom.madAtom); +if (d == JM.Atom.MAD_GLOBAL) d = Clazz_floatToInt(vwr.getFloat(1153433601) * 2000); +atom.sD = Clazz_floatToShort(vwr.tm.scaleToScreen(screen.z, d)); +if (checkOccupancy && vibrationVectors[i] != null && (occ = vibrationVectors[i].getOccupancy100(vibsOn)) != -2147483648) { +haveMods = true; +atom.setShapeVisibility(2, false); +if (occ >= 0 && occ < 50) atom.setShapeVisibility(24, false); + else atom.setShapeVisibility(8 | (atom.madAtom > 0 ? 16 : 0), true); +this.ms.occupancies[atom.i] = Math.abs(occ); +}} +if (haveMods) this.setShapeVis(); +var gdata = vwr.gdata; +if (tm.slabEnabled) { +var slabByMolecule = vwr.getBoolean(603979940); +var slabByAtom = vwr.getBoolean(603979939); +var minZ = gdata.slab; +var maxZ = gdata.depth; +if (slabByMolecule) { +var molecules = this.ms.getMolecules(); +var moleculeCount = this.ms.getMoleculeCountInModel(-1); +for (var i = 0; i < moleculeCount; i++) { +var m = molecules[i]; +var j = 0; +var pt = m.firstAtomIndex; +if (!bsOK.get(pt)) continue; +for (; j < m.ac; j++, pt++) if (gdata.isClippedZ(atoms[pt].sZ - (atoms[pt].sD >> 1))) break; + +if (j != m.ac) { +pt = m.firstAtomIndex; +for (var k = 0; k < m.ac; k++) { +bsOK.clear(pt); +atoms[pt++].sZ = 0; +} +}} +}for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (gdata.isClippedZ(atom.sZ - (slabByAtom ? atoms[i].sD >> 1 : 0))) { +atom.setClickable(0); +var r = Clazz_doubleToInt((slabByAtom ? -1 : 1) * atom.sD / 2); +if (atom.sZ + r < minZ || atom.sZ - r > maxZ || !gdata.isInDisplayRange(atom.sX, atom.sY)) { +bsOK.clear(i); +}}} +}if (this.ms.ac == 0 || !vwr.getShowNavigationPoint()) return null; +var minX = 2147483647; +var maxX = -2147483648; +var minY = 2147483647; +var maxY = -2147483648; +for (var i = bsOK.nextSetBit(0); i >= 0; i = bsOK.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (atom.sX < minX) minX = atom.sX; +if (atom.sX > maxX) maxX = atom.sX; +if (atom.sY < minY) minY = atom.sY; +if (atom.sY > maxY) maxY = atom.sY; +} +this.navMinMax[0] = minX; +this.navMinMax[1] = maxX; +this.navMinMax[2] = minY; +this.navMinMax[3] = maxY; +return this.navMinMax; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = modelSet; +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "checkInheritedShapes", +function(){ +if (this.shapes[24] == null) return; +this.setShapePropertyBs(24, "remapInherited", null, null); +}); +Clazz_defineMethod(c$, "restrictSelected", +function(isBond, doInvert){ +var bsSelected = this.vwr.slm.getSelectedAtomsNoSubset(); +if (doInvert) { +this.vwr.slm.invertSelection(); +var bsSubset = this.vwr.slm.bsSubset; +if (bsSubset != null) { +bsSelected = this.vwr.slm.getSelectedAtomsNoSubset(); +bsSelected.and(bsSubset); +this.vwr.selectStatus(bsSelected, false, 0, true, false); +JU.BSUtil.invertInPlace(bsSelected, this.vwr.ms.ac); +bsSelected.and(bsSubset); +}}JU.BSUtil.andNot(bsSelected, this.vwr.slm.bsDeleted); +var bondmode = this.vwr.getBoolean(603979812); +if (!isBond) this.vwr.setBooleanProperty("bondModeOr", true); +this.setShapeSizeBs(1, 0, null, null); +this.setShapePropertyBs(1, "type", Integer.$valueOf(32768), null); +this.setShapeSizeBs(1, 0, null, null); +this.setShapePropertyBs(1, "type", Integer.$valueOf(1023), null); +var bs = this.vwr.bsA(); +for (var iShape = 21; --iShape >= 0; ) if (iShape != 6 && this.getShape(iShape) != null) this.setShapeSizeBs(iShape, 0, null, bs); + +if (this.getShape(21) != null) this.setShapePropertyBs(21, "off", bs, null); +this.setLabel(null, bs); +if (!isBond) this.vwr.setBooleanProperty("bondModeOr", bondmode); +this.vwr.selectStatus(bsSelected, false, 0, true, false); +}, "~B,~B"); +c$.hoverable = Clazz_newIntArray(-1, [31, 20, 25, 24, 22, 36]); +c$.clickableMax = JV.ShapeManager.hoverable.length - 1; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.util.Hashtable"], ["JV.Connection", "$.Scene", "$.StateManager", "$.Connections"], ["java.util.Arrays", "JU.BS", "$.Lst", "$.SB", "JM.Orientation", "JU.BSUtil", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.maxUndo = 20; +this.vwr = null; +this.saved = null; +this.lastOrientation = ""; +this.lastContext = ""; +this.lastConnections = ""; +this.lastScene = ""; +this.lastSelected = ""; +this.lastState = ""; +this.lastShape = ""; +this.lastCoordinates = ""; +this.lastUnitcell = ""; +this.undoStateStack = null; +this.redoStateStack = null; +Clazz_instantialize(this, arguments);}, JV, "StateManager", null); +Clazz_prepareFields (c$, function(){ +this.saved = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +c$.getVariableList = Clazz_defineMethod(c$, "getVariableList", +function(htVariables, nMax, withSites, definedOnly){ +var sb = new JU.SB(); +var n = 0; +var list = new Array(htVariables.size()); +for (var entry, $entry = htVariables.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var $var = entry.getValue(); +if ((withSites || !key.startsWith("site_")) && (!definedOnly || key.charAt(0) == '@')) list[n++] = key + (key.charAt(0) == '@' ? " " + $var.asString() : " = " + JV.StateManager.varClip(key, $var.escape(), nMax)); +} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) sb.append(" ").append(list[i]).append(";\n"); + +if (n == 0 && !definedOnly) sb.append("# --no global user variables defined--;\n"); +return sb.toString(); +}, "java.util.Map,~N,~B,~B"); +c$.getObjectIdFromName = Clazz_defineMethod(c$, "getObjectIdFromName", +function(name){ +if (name == null) return -1; +var objID = "background axis1 axis2 axis3 boundbox unitcell frank ".indexOf(name.toLowerCase()); +return (objID < 0 ? objID : Clazz_doubleToInt(objID / 11)); +}, "~S"); +c$.getObjectNameFromId = Clazz_defineMethod(c$, "getObjectNameFromId", +function(objId){ +if (objId < 0 || objId >= 7) return null; +return "background axis1 axis2 axis3 boundbox unitcell frank ".substring(objId * 11, objId * 11 + 11).trim(); +}, "~N"); +Clazz_defineMethod(c$, "clear", +function(global){ +this.vwr.setShowAxes(false); +this.vwr.setShowBbcage(false); +this.vwr.setShowUnitCell(false); +global.clear(); +}, "JV.GlobalSettings"); +Clazz_defineMethod(c$, "resetLighting", +function(){ +this.vwr.setIntProperty("ambientPercent", 45); +this.vwr.setIntProperty("celShadingPower", 10); +this.vwr.setIntProperty("diffusePercent", 84); +this.vwr.setIntProperty("phongExponent", 64); +this.vwr.setIntProperty("specularExponent", 6); +this.vwr.setIntProperty("specularPercent", 22); +this.vwr.setIntProperty("specularPower", 40); +this.vwr.setIntProperty("zDepth", 0); +this.vwr.setIntProperty("zShadePower", 3); +this.vwr.setIntProperty("zSlab", 50); +this.vwr.setBooleanProperty("specular", true); +this.vwr.setBooleanProperty("celShading", false); +this.vwr.setBooleanProperty("zshade", false); +}); +Clazz_defineMethod(c$, "setCrystallographicDefaults", +function(){ +this.vwr.setAxesMode(603979808); +this.vwr.setShowAxes(true); +this.vwr.setShowUnitCell(true); +this.vwr.setBooleanProperty("perspectiveDepth", false); +}); +Clazz_defineMethod(c$, "setCommonDefaults", +function(){ +this.vwr.setBooleanProperty("perspectiveDepth", true); +this.vwr.setFloatProperty("bondTolerance", 0.45); +this.vwr.setFloatProperty("minBondDistance", 0.4); +this.vwr.setIntProperty("bondingVersion", 0); +this.vwr.setBooleanProperty("translucent", true); +}); +Clazz_defineMethod(c$, "setJmolDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("defaultColorScheme", "Jmol"); +this.vwr.setBooleanProperty("axesOrientationRasmol", false); +this.vwr.setBooleanProperty("zeroBasedXyzRasmol", false); +this.vwr.setIntProperty("percentVdwAtom", 23); +this.vwr.setIntProperty("bondRadiusMilliAngstroms", 150); +this.vwr.setVdwStr("auto"); +}); +Clazz_defineMethod(c$, "setRasMolDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("defaultColorScheme", "RasMol"); +this.vwr.setBooleanProperty("axesOrientationRasmol", true); +this.vwr.setBooleanProperty("zeroBasedXyzRasmol", true); +this.vwr.setIntProperty("percentVdwAtom", 0); +this.vwr.setIntProperty("bondRadiusMilliAngstroms", 1); +this.vwr.setVdwStr("Rasmol"); +}); +Clazz_defineMethod(c$, "setPyMOLDefaults", +function(){ +this.setCommonDefaults(); +this.vwr.setStringProperty("measurementUnits", "ANGSTROMS"); +this.vwr.setBooleanProperty("zoomHeight", true); +}); +c$.getNoCase = Clazz_defineMethod(c$, "getNoCase", +function(saved, name){ +for (var e, $e = saved.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getKey().equalsIgnoreCase(name)) return e.getValue(); + +return null; +}, "java.util.Map,~S"); +Clazz_defineMethod(c$, "listSavedStates", +function(){ +var names = ""; +for (var name, $name = this.saved.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) names += "\n" + name; + +return names; +}); +Clazz_defineMethod(c$, "deleteSavedType", +function(type){ +var e = this.saved.keySet().iterator(); +while (e.hasNext()) if (e.next().startsWith(type)) e.remove(); + +}, "~S"); +Clazz_defineMethod(c$, "deleteSaved", +function(namelike){ +var e = this.saved.keySet().iterator(); +while (e.hasNext()) { +var name = e.next(); +if (name.startsWith(namelike) || name.endsWith("_" + namelike) && name.indexOf("_") == name.lastIndexOf("_" + namelike)) e.remove(); +} +}, "~S"); +Clazz_defineMethod(c$, "saveSelection", +function(saveName, bsSelected){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Selected_"); +return; +}saveName = this.lastSelected = "Selected_" + saveName; +this.saved.put(saveName, JU.BSUtil.copy(bsSelected)); +}, "~S,JU.BS"); +Clazz_defineMethod(c$, "restoreSelection", +function(saveName){ +var name = (saveName.length > 0 ? "Selected_" + saveName : this.lastSelected); +var bsSelected = JV.StateManager.getNoCase(this.saved, name); +if (bsSelected == null) { +this.vwr.selectStatus( new JU.BS(), false, 0, false, false); +return false; +}this.vwr.selectStatus(bsSelected, false, 0, false, false); +return true; +}, "~S"); +Clazz_defineMethod(c$, "saveUnitCell", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Unitcell_"); +return; +}saveName = this.lastUnitcell = "Unitcell_" + saveName; +var uc = this.vwr.getCurrentUnitCell(); +if (uc != null) { +var state = "UNITCELL " + JU.Escape.e(uc.getUnitCellVectors()); +this.saved.put(saveName, "unitcell reset;" + state); +}}, "~S"); +Clazz_defineMethod(c$, "getSavedUnitCell", +function(saveName){ +var name = (saveName.length > 0 ? "Unitcell_" + saveName : this.lastUnitcell); +var ucstate = JV.StateManager.getNoCase(this.saved, name); +return ucstate; +}, "~S"); +Clazz_defineMethod(c$, "restoreUnitCell", +function(saveName){ +var ucstate = this.getSavedUnitCell(saveName); +if (ucstate == null) { +this.vwr.ms.setModelCagePts(-1, null, null); +return false; +}this.vwr.runScript(ucstate); +return true; +}, "~S"); +Clazz_defineMethod(c$, "saveState", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("State_"); +this.clearStateStack(); +return; +}if (saveName.length == 0) { +this.vwr.setBooleanProperty("undoAuto", false); +this.appendState(this.getStack(603984065)); +this.redoStateStack.clear(); +return; +}saveName = this.lastState = "State_" + saveName; +this.saved.put(saveName, this.vwr.getStateInfo()); +}, "~S"); +Clazz_defineMethod(c$, "getSavedState", +function(saveName){ +if (saveName.length == 0) { +var stack = this.getStack(603984065); +return (stack.size() > 0 ? stack.get(stack.size() - 1) : null); +}var name = (saveName.length > 0 ? "State_" + saveName : this.lastState); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz_defineMethod(c$, "popStack", +function(type){ +var stack = this.getStack(type); +var state = (stack.size() > 0 ? stack.removeItemAt(stack.size() - 1) : null); +if (state != null) { +this.appendState(this.getStack(type == 603984065 ? 4139 : 603984065)); +}this.checkStack(this.getStack(603984065)); +return state; +}, "~N"); +Clazz_defineMethod(c$, "appendState", +function(stack){ +this.checkStack(stack); +if (this.maxUndo > 0) stack.addLast(this.vwr.getStateInfo()); +}, "JU.Lst"); +Clazz_defineMethod(c$, "checkStack", +function(stack){ +while (stack.size() > this.maxUndo) stack.removeItemAt(0); + +}, "JU.Lst"); +Clazz_defineMethod(c$, "getStack", +function(type){ +if (this.undoStateStack == null) { +this.undoStateStack = new JU.Lst(); +this.redoStateStack = new JU.Lst(); +}return (type == 603984065 ? this.undoStateStack : this.redoStateStack); +}, "~N"); +Clazz_defineMethod(c$, "clearStateStack", +function(){ +if (this.undoStateStack == null) return; +this.undoStateStack.clear(); +this.redoStateStack.clear(); +}); +Clazz_defineMethod(c$, "saveStructure", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Shape_"); +return; +}saveName = this.lastShape = "Shape_" + saveName; +this.saved.put(saveName, this.vwr.getStructureState()); +}, "~S"); +Clazz_defineMethod(c$, "getSavedStructure", +function(saveName){ +var name = (saveName.length > 0 ? "Shape_" + saveName : this.lastShape); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz_defineMethod(c$, "saveCoordinates", +function(saveName, bsSelected){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Coordinates_"); +return; +}saveName = this.lastCoordinates = "Coordinates_" + saveName; +this.saved.put(saveName, this.vwr.getCoordinateState(bsSelected)); +}, "~S,JU.BS"); +Clazz_defineMethod(c$, "getSavedCoordinates", +function(saveName){ +var name = (saveName.length > 0 ? "Coordinates_" + saveName : this.lastCoordinates); +var script = JV.StateManager.getNoCase(this.saved, name); +return (script == null ? "" : script); +}, "~S"); +Clazz_defineMethod(c$, "getOrientation", +function(){ +return new JM.Orientation(this.vwr, false, null); +}); +Clazz_defineMethod(c$, "getSavedOrientationText", +function(saveName){ +var o; +if (saveName != null) { +o = this.getOrientationFor(saveName); +return (o == null ? "" : o.getMoveToText(true)); +}var sb = new JU.SB(); +for (var e, $e = this.saved.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (name.startsWith("Orientation_")) sb.append((e.getValue()).getMoveToText(true)); +} +return sb.toString(); +}, "~S"); +Clazz_defineMethod(c$, "saveScene", +function(saveName, scene){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Scene_"); +return; +}var o = new JV.Scene(scene); +o.saveName = this.lastScene = "Scene_" + saveName; +this.saved.put(o.saveName, o); +}, "~S,java.util.Map"); +Clazz_defineMethod(c$, "restoreScene", +function(saveName, timeSeconds){ +var o = JV.StateManager.getNoCase(this.saved, (saveName.length > 0 ? "Scene_" + saveName : this.lastScene)); +return (o != null && o.restore(this.vwr, timeSeconds)); +}, "~S,~N"); +Clazz_defineMethod(c$, "saveOrientation", +function(saveName, pymolView){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Orientation_"); +return; +}var o = new JM.Orientation(this.vwr, saveName.equalsIgnoreCase("default"), pymolView); +o.saveName = this.lastOrientation = "Orientation_" + saveName; +this.saved.put(o.saveName, o); +}, "~S,~A"); +Clazz_defineMethod(c$, "restoreOrientation", +function(saveName, timeSeconds, isAll){ +var o = this.getOrientationFor(saveName); +return (o != null && o.restore(timeSeconds, isAll)); +}, "~S,~N,~B"); +Clazz_defineMethod(c$, "getOrientationFor", +function(saveName){ +var name = (saveName.length > 0 ? "Orientation_" + saveName : this.lastOrientation); +return JV.StateManager.getNoCase(this.saved, name); +}, "~S"); +Clazz_defineMethod(c$, "saveContext", +function(saveName, context){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Context_"); +return; +}this.saved.put((this.lastContext = "Context_" + saveName), context); +}, "~S,~O"); +Clazz_defineMethod(c$, "getContext", +function(saveName){ +return this.saved.get(saveName.length == 0 ? this.lastContext : "Context_" + saveName); +}, "~S"); +Clazz_defineMethod(c$, "saveBonds", +function(saveName){ +if (saveName.equalsIgnoreCase("DELETE")) { +this.deleteSavedType("Bonds_"); +return; +}var b = new JV.Connections(this.vwr); +b.saveName = this.lastConnections = "Bonds_" + saveName; +this.saved.put(b.saveName, b); +}, "~S"); +Clazz_defineMethod(c$, "restoreBonds", +function(saveName){ +this.vwr.clearModelDependentObjects(); +var name = (saveName.length > 0 ? "Bonds_" + saveName : this.lastConnections); +var c = JV.StateManager.getNoCase(this.saved, name); +return (c != null && c.restore()); +}, "~S"); +c$.varClip = Clazz_defineMethod(c$, "varClip", +function(name, sv, nMax){ +if (nMax > 0 && sv.length > nMax) sv = sv.substring(0, nMax) + " #...more (" + sv.length + " bytes -- use SHOW " + name + " or MESSAGE @" + name + " to view)"; +return sv; +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "getUndoMax", +function(){ +return this.maxUndo; +}); +Clazz_defineMethod(c$, "setUndoMax", +function(n){ +this.maxUndo = Math.max(n, 0); +this.checkStack(this.getStack(603984065)); +this.checkStack(this.getStack(4139)); +}, "~N"); +Clazz_defineMethod(c$, "getUndoRedoState", +function(tok){ +return this.popStack(tok); +}, "~N"); +Clazz_defineMethod(c$, "canDo", +function(type){ +return (this.maxUndo > 0 && this.vwr.getBoolean(603979898) && !this.getStack(type).isEmpty()); +}, "~N"); +Clazz_defineMethod(c$, "getUndoInfo", +function(){ +var auto = this.vwr.getBooleanProperty("undoAuto"); +return (this.vwr.getBoolean(603979898) ? "undoAuto=" + auto + (!auto ? "; user stack sizes: UNDO=" + this.getStack(603984065).size() + ", REDO=" + this.getStack(4139).size() : "") : "SET preserveState = FALSE -- undo/redo is disabled"); +}); +var c$ = Clazz_decorateAsClass(function(){ +this.saveName = null; +this.scene = null; +Clazz_instantialize(this, arguments);}, JV, "Scene", null); +Clazz_makeConstructor(c$, +function(scene){ +this.scene = scene; +}, "java.util.Map"); +Clazz_defineMethod(c$, "restore", +function(vwr, timeSeconds){ +var gen = this.scene.get("generator"); +if (gen != null) gen.generateScene(this.scene); +var pv = this.scene.get("pymolView"); +return (pv != null && vwr.tm.moveToPyMOL(vwr.eval, timeSeconds, pv)); +}, "JV.Viewer,~N"); +var c$ = Clazz_decorateAsClass(function(){ +this.saveName = null; +this.bondCount = 0; +this.connections = null; +this.vwr = null; +Clazz_instantialize(this, arguments);}, JV, "Connections", null); +Clazz_makeConstructor(c$, +function(vwr){ +var modelSet = vwr.ms; +if (modelSet == null) return; +this.vwr = vwr; +this.bondCount = modelSet.bondCount; +this.connections = new Array(this.bondCount + 1); +var bonds = modelSet.bo; +for (var i = this.bondCount; --i >= 0; ) { +var b = bonds[i]; +this.connections[i] = new JV.Connection(b.atom1.i, b.atom2.i, b.mad, b.colix, b.order, b.getEnergy(), b.shapeVisibilityFlags); +} +}, "JV.Viewer"); +Clazz_defineMethod(c$, "restore", +function(){ +var modelSet = this.vwr.ms; +if (modelSet == null) return false; +modelSet.deleteAllBonds(); +for (var i = this.bondCount; --i >= 0; ) { +var c = this.connections[i]; +var ac = modelSet.ac; +if (c.atomIndex1 >= ac || c.atomIndex2 >= ac) continue; +var b = modelSet.bondAtoms(modelSet.at[c.atomIndex1], modelSet.at[c.atomIndex2], c.order, c.mad, null, c.energy, false, true); +b.colix = c.colix; +b.shapeVisibilityFlags = c.shapeVisibilityFlags; +} +for (var i = modelSet.bondCount; --i >= 0; ) modelSet.bo[i].index = i; + +this.vwr.setShapeProperty(1, "reportAll", null); +return true; +}); +var c$ = Clazz_decorateAsClass(function(){ +this.atomIndex1 = 0; +this.atomIndex2 = 0; +this.mad = 0; +this.colix = 0; +this.order = 0; +this.energy = 0; +this.shapeVisibilityFlags = 0; +Clazz_instantialize(this, arguments);}, JV, "Connection", null); +Clazz_makeConstructor(c$, +function(atom1, atom2, mad, colix, order, energy, shapeVisibilityFlags){ +this.atomIndex1 = atom1; +this.atomIndex2 = atom2; +this.mad = mad; +this.colix = colix; +this.order = order; +this.energy = energy; +this.shapeVisibilityFlags = shapeVisibilityFlags; +}, "~N,~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.util.Hashtable"], "JV.StatusManager", ["JU.Lst", "$.PT", "J.api.Interface", "J.c.CBK", "JS.SV", "JU.BSUtil", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.jsl = null; +this.cbl = null; +this.statusList = ""; +this.allowStatusReporting = false; +this.messageQueue = null; +this.statusPtr = 0; +this.jmolScriptCallbacks = null; +this.imageMap = null; +this.echoing = false; +this.minSyncRepeatMs = 100; +this.syncingScripts = false; +this.syncingMouse = false; +this.drivingSync = false; +this.isSynced = false; +this.syncDisabled = false; +this.stereoSync = false; +this.qualityJPG = -1; +this.qualityPNG = -1; +this.imageType = null; +this.audios = null; +Clazz_instantialize(this, arguments);}, JV, "StatusManager", null); +Clazz_prepareFields (c$, function(){ +this.messageQueue = new java.util.Hashtable(); +this.jmolScriptCallbacks = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "recordStatus", +function(statusName){ +return (this.allowStatusReporting && this.statusList.length > 0 && (this.statusList.equals("all") || this.statusList.indexOf(statusName) >= 0)); +}, "~S"); +Clazz_defineMethod(c$, "setStatusChanged", +function(statusName, intInfo, statusInfo, isReplace){ +if (!this.recordStatus(statusName)) return; +var msgRecord = new JU.Lst(); +msgRecord.addLast(Integer.$valueOf(++this.statusPtr)); +msgRecord.addLast(statusName); +msgRecord.addLast(Integer.$valueOf(intInfo)); +msgRecord.addLast(statusInfo); +var statusRecordSet = (isReplace ? null : this.messageQueue.get(statusName)); +if (statusRecordSet == null) this.messageQueue.put(statusName, statusRecordSet = new JU.Lst()); + else if (statusRecordSet.size() == JV.StatusManager.MAXIMUM_QUEUE_LENGTH) statusRecordSet.removeItemAt(0); +statusRecordSet.addLast(msgRecord); +}, "~S,~N,~O,~B"); +Clazz_defineMethod(c$, "getStatusChanged", +function(newStatusList){ +var isRemove = (newStatusList.length > 0 && newStatusList.charAt(0) == '-'); +var isAdd = (newStatusList.length > 0 && newStatusList.charAt(0) == '+'); +var getList = false; +if (isRemove) { +this.statusList = JU.PT.rep(this.statusList, newStatusList.substring(1, newStatusList.length), ""); +} else { +newStatusList = JU.PT.rep(newStatusList, "+", ""); +if (this.statusList.equals(newStatusList) || isAdd && this.statusList.indexOf(newStatusList) >= 0) { +getList = true; +} else { +if (!isAdd) this.statusList = ""; +this.statusList += newStatusList; +if (JU.Logger.debugging) JU.Logger.debug("StatusManager messageQueue = " + this.statusList); +}}var list = new JU.Lst(); +if (getList) for (var e, $e = this.messageQueue.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) list.addLast(e.getValue()); + +this.messageQueue.clear(); +this.statusPtr = 0; +return list; +}, "~S"); +Clazz_defineMethod(c$, "setCallbackFunction", +function(callbackType, callbackObject){ +var cbk = J.c.CBK.getCallback(callbackType); +var callbackFunction = ((typeof(callbackObject)=='string') ? callbackObject : null); +if (cbk != null) { +var callback = J.c.CBK.getCallback(callbackType).name(); +JU.Logger.info("StatusManager " + callback + "callback set f=" + callbackFunction); +var isSync = (callbackFunction != null && callbackFunction.startsWith("SYNC:")); +if (isSync) { +if (callbackFunction.toLowerCase().trim().equals("sync:off")) { +this.jmolScriptCallbacks.remove("SYNC:" + callback); +JU.Logger.info("SYNC callback for " + callback + " deactivated"); +} else { +this.jmolScriptCallbacks.put("SYNC:" + callback, "_"); +JU.Logger.info("SYNC callback for " + callback + " activated"); +return; +}} else { +var lc = ""; +var pt = (callbackFunction == null ? 0 : (lc = callbackFunction.toLowerCase()).startsWith("script:") ? 7 : lc.startsWith("jmolscript:") ? 11 : 0); +if (pt == 0) { +if (callbackObject == null) this.jmolScriptCallbacks.remove(callback); +} else { +this.jmolScriptCallbacks.put(callback, callbackFunction.substring(pt).trim()); +return; +}}}if (this.cbl != null) this.cbl.setCallbackFunction(callbackType, callbackObject); +}, "~S,~O"); +Clazz_defineMethod(c$, "notifyEnabled", +function(type){ +return this.cbl != null && this.cbl.notifyEnabled(type); +}, "J.c.CBK"); +Clazz_defineMethod(c$, "getJmolScriptCallback", +function(callback){ +return this.jmolScriptCallbacks.get(callback.name()); +}, "J.c.CBK"); +Clazz_defineMethod(c$, "fireJmolScriptCallback", +function(isEnabled, callback, o, doWait){ +var name = callback.name(); +if (o[0] != null) { +var params = new Array(o.length); +System.arraycopy(o, 0, params, 0, o.length); +var cmd = "try{\n" + params[0] + "\n}"; +params[0] = name; +this.vwr.evalCallback(cmd, params, doWait); +}if (this.jmolScriptCallbacks.containsKey("SYNC:" + callback.name())) o[0] = "SYNC"; +if (isEnabled) { +this.cbl.notifyCallback(callback, o); +}}, "~B,J.c.CBK,~A,~B"); +Clazz_defineMethod(c$, "setStatusAppletReady", +function(htmlName, isReady){ +var sJmol = (isReady ? this.getJmolScriptCallback(J.c.CBK.APPLETREADY) : null); +var isEnabled = this.notifyEnabled(J.c.CBK.APPLETREADY); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.APPLETREADY, Clazz_newArray(-1, [sJmol, htmlName, Boolean.$valueOf(isReady), null]), true); +}, "~S,~B"); +Clazz_defineMethod(c$, "setStatusAtomMoved", +function(bsMoved){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.ATOMMOVED); +this.setStatusChanged("atomMoved", -1, bsMoved, false); +var isEnabled = this.notifyEnabled(J.c.CBK.ATOMMOVED); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ATOMMOVED, Clazz_newArray(-1, [sJmol, bsMoved, Integer.$valueOf(bsMoved.cardinality())]), true); +}, "JU.BS"); +Clazz_defineMethod(c$, "setStatusSelect", +function(atoms){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.SELECT); +this.setStatusChanged("select", -1, atoms, false); +var isEnabled = this.notifyEnabled(J.c.CBK.SELECT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.SELECT, Clazz_newArray(-1, [sJmol, atoms, Integer.$valueOf(atoms.cardinality()), Integer.$valueOf(atoms.nextSetBit(0)), Integer.$valueOf(atoms.length())]), true); +}, "JU.BS"); +Clazz_defineMethod(c$, "setStatusStructureModified", +function(atomIndex, modelIndex, mode, msg, n, bsAtoms){ +if (atomIndex >= 0 && bsAtoms == null) bsAtoms = JU.BSUtil.newAndSetBit(atomIndex); +var sJmol = this.getJmolScriptCallback(J.c.CBK.STRUCTUREMODIFIED); +var isEnabled = this.notifyEnabled(J.c.CBK.STRUCTUREMODIFIED); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.STRUCTUREMODIFIED, Clazz_newArray(-1, [sJmol, Integer.$valueOf(mode), Integer.$valueOf(atomIndex), Integer.$valueOf(modelIndex), msg, Integer.$valueOf(n), bsAtoms]), true); +}, "~N,~N,~N,~S,~N,JU.BS"); +Clazz_defineMethod(c$, "setStatusAtomPicked", +function(atomIndex, strInfo, map){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.PICK); +JU.Logger.info("setStatusAtomPicked(" + atomIndex + "," + strInfo + ")"); +this.setStatusChanged("atomPicked", atomIndex, strInfo, false); +var isEnabled = this.notifyEnabled(J.c.CBK.PICK); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.PICK, Clazz_newArray(-1, [sJmol, strInfo, Integer.$valueOf(atomIndex), map]), true); +}, "~N,~S,java.util.Map"); +Clazz_defineMethod(c$, "setStatusClicked", +function(x, y, action, clickCount, mode){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.CLICK); +var m = Clazz_newIntArray(-1, [action, mode]); +var isEnabled = this.notifyEnabled(J.c.CBK.CLICK); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.CLICK, Clazz_newArray(-1, [sJmol, Integer.$valueOf(x), Integer.$valueOf(y), Integer.$valueOf(action), Integer.$valueOf(clickCount), m]), true); +return m[0]; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setStatusResized", +function(width, height){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.RESIZE); +var isEnabled = this.notifyEnabled(J.c.CBK.RESIZE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.RESIZE, Clazz_newArray(-1, [sJmol, Integer.$valueOf(width), Integer.$valueOf(height)]), true); +}, "~N,~N"); +Clazz_defineMethod(c$, "haveHoverCallback", +function(){ +return (this.jmolScriptCallbacks.containsKey(J.c.CBK.HOVER.name()) || this.notifyEnabled(J.c.CBK.HOVER)); +}); +Clazz_defineMethod(c$, "setStatusAtomHovered", +function(iatom, strInfo){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.HOVER); +var isEnabled = this.notifyEnabled(J.c.CBK.HOVER); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.HOVER, Clazz_newArray(-1, [sJmol, strInfo, Integer.$valueOf(iatom)]), true); +}, "~N,~S"); +Clazz_defineMethod(c$, "setStatusObjectHovered", +function(id, strInfo, pt){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.HOVER); +var isEnabled = this.notifyEnabled(J.c.CBK.HOVER); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.HOVER, Clazz_newArray(-1, [sJmol, strInfo, Integer.$valueOf(-1), id, Float.$valueOf(pt.x), Float.$valueOf(pt.y), Float.$valueOf(pt.z)]), true); +}, "~S,~S,JU.T3"); +Clazz_defineMethod(c$, "showImage", +function(title, image){ +var a = JU.PT.split(title, "\1"); +title = (a.length < 2 ? "Jmol" : a.length < 3 || a[2].equals("null") ? a[1].substring(a[1].lastIndexOf("/") + 1) : a[2]); +var sJmol = this.getJmolScriptCallback(J.c.CBK.IMAGE); +var isEnabled = this.notifyEnabled(J.c.CBK.IMAGE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.IMAGE, Clazz_newArray(-1, [sJmol, title, image]), true); +if (Boolean.TRUE.equals(image)) { +if (this.imageMap == null) return; +var lst = new JU.Lst(); +for (var key, $key = this.imageMap.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) lst.addLast(key); + +for (var i = lst.size(); --i >= 0; ) this.imageMap.get(lst.get(i)).closeMe(); + +return; +}if (this.imageMap == null) this.imageMap = new java.util.Hashtable(); +var d = this.imageMap.get(title); +if (Boolean.FALSE.equals(image)) { +if (d != null) d.closeMe(); +return; +}if (d == null && image != null) d = this.vwr.apiPlatform.getImageDialog(title, this.imageMap); +if (d == null) return; +if (image == null) d.closeMe(); + else d.setImage(image); +}, "~S,~O"); +Clazz_defineMethod(c$, "setFileLoadStatus", +function(fullPathName, fileName, modelName, errorMsg, ptLoad, doCallback, isAsync){ +if (fullPathName == null && "resetUndo".equals(fileName)) { +var appConsole = this.vwr.getProperty("DATA_API", "getAppConsole", null); +if (appConsole != null) appConsole.zap(); +fileName = this.vwr.getZapName(); +}this.setStatusChanged("fileLoaded", ptLoad, fullPathName, false); +if (errorMsg != null) this.setStatusChanged("fileLoadError", ptLoad, errorMsg, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.LOADSTRUCT); +var isEnabled = doCallback && this.notifyEnabled(J.c.CBK.LOADSTRUCT); +if (isEnabled || sJmol != null) { +var name = this.vwr.getP("_smilesString"); +if (name.length != 0) fileName = name; +this.fireJmolScriptCallback(isEnabled, J.c.CBK.LOADSTRUCT, Clazz_newArray(-1, [sJmol, fullPathName, fileName, modelName, errorMsg, Integer.$valueOf(ptLoad), this.vwr.getP("_modelNumber"), this.vwr.getModelNumberDotted(this.vwr.ms.mc - 1), isAsync]), true); +}}, "~S,~S,~S,~S,~N,~B,Boolean"); +Clazz_defineMethod(c$, "setStatusModelKit", +function(istate){ +var state = (istate == 1 ? "ON" : "OFF"); +this.setStatusChanged("modelkit", istate, state, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.MODELKIT); +var isEnabled = this.notifyEnabled(J.c.CBK.MODELKIT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MODELKIT, Clazz_newArray(-1, [sJmol, state]), true); +}, "~N"); +Clazz_defineMethod(c$, "setStatusFrameChanged", +function(fileNo, modelNo, firstNo, lastNo, currentFrame, currentMorphModel, entryName){ +if (this.vwr.ms == null) return; +var animating = this.vwr.am.animationOn; +var frameNo = (animating ? -2 - currentFrame : currentFrame); +this.setStatusChanged("frameChanged", frameNo, (currentFrame >= 0 ? this.vwr.getModelNumberDotted(currentFrame) : ""), false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.ANIMFRAME); +var isEnabled = this.notifyEnabled(J.c.CBK.ANIMFRAME); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ANIMFRAME, Clazz_newArray(-1, [sJmol, Clazz_newIntArray(-1, [frameNo, fileNo, modelNo, firstNo, lastNo, currentFrame]), entryName, Float.$valueOf(currentMorphModel)]), false); +if (!animating && !this.vwr.isJSNoAWT) this.vwr.checkMenuUpdate(); +}, "~N,~N,~N,~N,~N,~N,~S"); +Clazz_defineMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +this.setStatusChanged("dragDrop", 0, "", false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.DRAGDROP); +var isEnabled = this.notifyEnabled(J.c.CBK.DRAGDROP); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.DRAGDROP, Clazz_newArray(-1, [sJmol, Integer.$valueOf(mode), Integer.$valueOf(x), Integer.$valueOf(y), fileName, retType]), true); +return isEnabled; +}, "~N,~N,~N,~S,~A"); +Clazz_defineMethod(c$, "setScriptEcho", +function(strEcho, isScriptQueued){ +if (strEcho == null || this.echoing) return; +this.echoing = true; +this.setStatusChanged("scriptEcho", 0, strEcho, false); +var sJmol = this.getJmolScriptCallback(J.c.CBK.ECHO); +var isEnabled = this.notifyEnabled(J.c.CBK.ECHO); +if (isEnabled || sJmol != null) { +this.fireJmolScriptCallback(isEnabled, J.c.CBK.ECHO, Clazz_newArray(-1, [sJmol, strEcho, Integer.$valueOf(isScriptQueued ? 1 : 0)]), true); +}this.echoing = false; +}, "~S,~B"); +Clazz_defineMethod(c$, "setStatusMeasuring", +function(status, intInfo, strMeasure, value){ +this.setStatusChanged(status, intInfo, strMeasure, false); +var sJmol = null; +if (status.equals("measureCompleted")) { +JU.Logger.info("measurement[" + intInfo + "] = " + strMeasure); +sJmol = this.getJmolScriptCallback(J.c.CBK.MEASURE); +} else if (status.equals("measurePicked")) { +this.setStatusChanged("measurePicked", intInfo, strMeasure, false); +JU.Logger.info("measurePicked " + intInfo + " " + strMeasure); +}var isEnabled = this.notifyEnabled(J.c.CBK.MEASURE); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MEASURE, Clazz_newArray(-1, [sJmol, strMeasure, Integer.$valueOf(intInfo), status, Float.$valueOf(value)]), true); +}, "~S,~N,~S,~N"); +Clazz_defineMethod(c$, "notifyError", +function(errType, errMsg, errMsgUntranslated){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.ERROR); +var isEnabled = this.notifyEnabled(J.c.CBK.ERROR); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.ERROR, Clazz_newArray(-1, [sJmol, errType, errMsg, this.vwr.getShapeErrorState(), errMsgUntranslated]), true); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "notifyMinimizationStatus", +function(minStatus, minSteps, minEnergy, minEnergyDiff, ff){ +var sJmol = this.getJmolScriptCallback(J.c.CBK.MINIMIZATION); +var isEnabled = this.notifyEnabled(J.c.CBK.MINIMIZATION); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.MINIMIZATION, Clazz_newArray(-1, [sJmol, minStatus, minSteps, minEnergy, minEnergyDiff, ff]), true); +}, "~S,Integer,Float,Float,~S"); +Clazz_defineMethod(c$, "setScriptStatus", +function(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated){ +if (msWalltime < -1) { +var iscript = -2 - msWalltime; +this.setStatusChanged("scriptStarted", iscript, statusMessage, false); +strStatus = "script " + iscript + " started"; +} else if (strStatus == null) { +return; +}var sJmol = (msWalltime == 0 ? this.getJmolScriptCallback(J.c.CBK.SCRIPT) : null); +var isScriptCompletion = (strStatus === "Script completed"); +if (this.recordStatus("script")) { +var isError = (strErrorMessageUntranslated != null); +this.setStatusChanged((isError ? "scriptError" : "scriptStatus"), 0, strStatus, false); +if (isError || isScriptCompletion) this.setStatusChanged("scriptTerminated", 1, "Jmol script terminated" + (isError ? " unsuccessfully: " + strStatus : " successfully"), false); +}if (isScriptCompletion && this.vwr.getBoolean(603979879) && this.vwr.getBoolean(603979825)) strStatus = this.vwr.getChimeMessenger().scriptCompleted(this, statusMessage, strErrorMessageUntranslated); +var data = Clazz_newArray(-1, [sJmol, strStatus, statusMessage, Integer.$valueOf(isScriptCompletion ? -1 : msWalltime), strErrorMessageUntranslated]); +var isEnabled = this.notifyEnabled(J.c.CBK.SCRIPT); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.SCRIPT, data, true); +this.processScript(data); +}, "~S,~S,~N,~S"); +Clazz_defineMethod(c$, "processScript", +function(data){ +var msWalltime = (data[3]).intValue(); +this.vwr.notifyScriptEditor(msWalltime, data); +if (msWalltime == 0) this.vwr.sendConsoleMessage(data[1] == null ? null : data[1].toString()); +}, "~A"); +Clazz_defineMethod(c$, "doSync", +function(){ +return (this.isSynced && this.drivingSync && !this.syncDisabled); +}); +Clazz_defineMethod(c$, "setSync", +function(mouseCommand){ +if (this.syncingMouse) { +if (mouseCommand != null) { +var sJmol = this.getJmolScriptCallback(J.c.CBK.SYNC); +if (sJmol != null) this.fireJmolScriptCallback(false, J.c.CBK.SYNC, Clazz_newArray(-1, [sJmol, mouseCommand, "sending mouseSync"]), true); +this.syncSend(mouseCommand, "*", 0); +}} else if (!this.syncingScripts) this.syncSend("!" + this.vwr.tm.getMoveToText(this.minSyncRepeatMs / 1000, false), "*", 0); +}, "~S"); +Clazz_defineMethod(c$, "setSyncDriver", +function(syncMode){ +if (this.stereoSync && syncMode != 4) { +this.syncSend("SET_GRAPHICS_OFF", "*", 0); +this.stereoSync = false; +}switch (syncMode) { +case 4: +if (!this.syncDisabled) return; +this.syncDisabled = false; +break; +case 3: +this.syncDisabled = true; +break; +case 5: +this.drivingSync = true; +this.isSynced = true; +this.stereoSync = true; +break; +case 1: +this.drivingSync = true; +this.isSynced = true; +break; +case 2: +this.drivingSync = false; +this.isSynced = true; +break; +default: +this.drivingSync = false; +this.isSynced = false; +} +if (JU.Logger.debugging) { +JU.Logger.debug(this.vwr.appletName + " sync mode=" + syncMode + "; synced? " + this.isSynced + "; driving? " + this.drivingSync + "; disabled? " + this.syncDisabled); +}}, "~N"); +Clazz_defineMethod(c$, "syncSend", +function(script, appletNameOrProp, port){ +if (port != 0 || this.notifyEnabled(J.c.CBK.SYNC)) { +var o = Clazz_newArray(-1, [null, script, appletNameOrProp, Integer.$valueOf(port)]); +if (this.cbl != null) this.cbl.notifyCallback(J.c.CBK.SYNC, o); +return o[0]; +}return null; +}, "~S,~O,~N"); +Clazz_defineMethod(c$, "processService", +function(info){ +var s = info.get("service"); +if (s == null) return null; +if (Clazz_instanceOf(s,"JS.SV")) { +var m = new java.util.Hashtable(); +for (var e, $e = info.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) m.put(e.getKey(), JS.SV.oValue(e.getValue())); + +info = m; +}if (this.notifyEnabled(J.c.CBK.SERVICE)) this.cbl.notifyCallback(J.c.CBK.SERVICE, Clazz_newArray(-1, [null, info])); +return info; +}, "java.util.Map"); +Clazz_defineMethod(c$, "getSyncMode", +function(){ +return (!this.isSynced ? 0 : this.drivingSync ? 1 : 2); +}); +Clazz_defineMethod(c$, "showUrl", +function(urlString){ +if (this.jsl != null) this.jsl.showUrl(urlString); +}, "~S"); +Clazz_defineMethod(c$, "clearConsole", +function(){ +this.vwr.sendConsoleMessage(null); +if (this.jsl != null) this.cbl.notifyCallback(J.c.CBK.MESSAGE, null); +}); +Clazz_defineMethod(c$, "functionXY", +function(functionName, nX, nY){ +return (this.jsl == null ? Clazz_newFloatArray (Math.abs(nX), Math.abs(nY), 0) : this.jsl.functionXY(functionName, nX, nY)); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "functionXYZ", +function(functionName, nX, nY, nZ){ +return (this.jsl == null ? Clazz_newFloatArray (Math.abs(nX), Math.abs(nY), Math.abs(nY), 0) : this.jsl.functionXYZ(functionName, nX, nY, nZ)); +}, "~S,~N,~N,~N"); +Clazz_defineMethod(c$, "jsEval", +function(strEval){ +return (this.jsl == null ? "" : this.jsl.eval(strEval)); +}, "~S"); +Clazz_defineMethod(c$, "createImage", +function(fileNameOrError, type, text, bytes, quality){ +return (this.jsl == null ? null : this.jsl.createImage(fileNameOrError, type, text == null ? bytes : text, quality)); +}, "~S,~S,~S,~A,~N"); +Clazz_defineMethod(c$, "getRegistryInfo", +function(){ +return (this.jsl == null ? null : this.jsl.getRegistryInfo()); +}); +Clazz_defineMethod(c$, "dialogAsk", +function(type, fileName, params){ +var isImage = type.equals("Save Image"); +var sd = J.api.Interface.getOption("dialog.Dialog", this.vwr, "status"); +if (sd == null) return null; +sd.setupUI(false); +if (isImage) sd.setImageInfo(this.qualityJPG, this.qualityPNG, this.imageType); +var outputFileName = sd.getFileNameFromDialog(this.vwr, type, fileName); +if (isImage && outputFileName != null) { +this.qualityJPG = sd.getQuality("JPG"); +this.qualityPNG = sd.getQuality("PNG"); +var sType = sd.getType(); +if (params != null) { +params.put("qualityJPG", Integer.$valueOf(this.qualityJPG)); +params.put("qualityPNG", Integer.$valueOf(this.qualityPNG)); +if (sType != null) params.put("dialogImageType", sType); +}if (sType != null) this.imageType = sType; +}return outputFileName; +}, "~S,~S,java.util.Map"); +Clazz_defineMethod(c$, "getJspecViewProperties", +function(myParam){ +return (this.jsl == null ? null : this.jsl.getJSpecViewProperty(myParam == null || myParam.length == 0 ? "" : ":" + myParam)); +}, "~S"); +Clazz_defineMethod(c$, "resizeInnerPanel", +function(width, height){ +return (this.jsl == null || width == this.vwr.getScreenWidth() && height == this.vwr.getScreenHeight() ? Clazz_newIntArray(-1, [width, height]) : this.jsl.resizeInnerPanel("preferredWidthHeight " + width + " " + height + ";")); +}, "~N,~N"); +Clazz_defineMethod(c$, "resizeInnerPanelString", +function(data){ +if (this.jsl != null) this.jsl.resizeInnerPanel(data); +}, "~S"); +Clazz_defineMethod(c$, "registerAudio", +function(id, htParams){ +this.stopAudio(id); +if (this.audios == null) this.audios = new java.util.Hashtable(); +if (htParams == null) this.audios.remove(id); + else this.audios.put(id, htParams.get("audioPlayer")); +}, "~S,java.util.Map"); +Clazz_defineMethod(c$, "stopAudio", +function(id){ +if (this.audios == null) return; +var player = this.audios.get(id); +if (player != null) player.action("kill"); +}, "~S"); +Clazz_defineMethod(c$, "playAudio", +function(htParams){ +if (!this.vwr.getBoolean(603979797)) { +if (htParams == null) return; +htParams.put("status", "close"); +JU.Logger.info("allowAudio is set false"); +this.notifyAudioStatus(htParams); +return; +}try { +var action = (htParams == null ? "close" : htParams.get("action")); +var id = (htParams == null ? null : htParams.get("id")); +if (action != null && action.length > 0) { +if (id == null || id.length == 0) { +if (this.audios == null || this.audios.isEmpty()) return; +if (action.equals("close")) { +for (var key, $key = this.audios.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var player = this.audios.remove(key); +player.action("close"); +} +}return; +}var player = this.audios.get(id); +if (player != null) { +player.action(action); +return; +}}try { +(J.api.Interface.getInterface("JU.JmolAudio", this.vwr, "script")).playAudio(this.vwr, htParams); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.info(e.getMessage()); +} else { +throw e; +} +} +} catch (t) { +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "notifyAudioStatus", +function(htParams){ +var status = htParams.get("status"); +var script = htParams.get(status); +if (script != null) this.vwr.script(script); +if (status === "ended") this.registerAudio(htParams.get("id"), null); +var sJmol = this.getJmolScriptCallback(J.c.CBK.AUDIO); +var isEnabled = this.notifyEnabled(J.c.CBK.AUDIO); +if (isEnabled || sJmol != null) this.fireJmolScriptCallback(isEnabled, J.c.CBK.AUDIO, Clazz_newArray(-1, [sJmol, htParams, status]), true); +}, "java.util.Map"); +Clazz_defineMethod(c$, "syncScript", +function(script, applet, port){ +if ("GET_GRAPHICS".equalsIgnoreCase(script)) { +this.setSyncDriver(5); +this.syncSend(script, applet, 0); +this.vwr.setBooleanProperty("_syncMouse", false); +this.vwr.setBooleanProperty("_syncScript", false); +return; +}if ("=".equals(applet)) { +applet = "~"; +this.setSyncDriver(2); +}var disableSend = "~".equals(applet); +if (port > 0 || !disableSend && !".".equals(applet)) { +this.syncSend(script, applet, port); +if (!"*".equals(applet) || script.startsWith("{")) return; +}if (script.equalsIgnoreCase("on") || script.equalsIgnoreCase("true")) { +this.setSyncDriver(1); +return; +}if (script.equalsIgnoreCase("off") || script.equalsIgnoreCase("false")) { +this.setSyncDriver(0); +return; +}if (script.equalsIgnoreCase("slave")) { +this.setSyncDriver(2); +return; +}var syncMode = this.getSyncMode(); +if (syncMode == 0) return; +if (syncMode != 1) disableSend = false; +if (JU.Logger.debugging) JU.Logger.debug(this.vwr.htmlName + " syncing with script: " + script); +if (disableSend) this.setSyncDriver(3); +if (script.indexOf("Mouse: ") != 0) { +var serviceMode = JV.JC.getServiceCommand(script); +switch (serviceMode) { +case 70: +case 42: +case 49: +case 56: +case 63: +this.syncSend(script, ".", port); +return; +case -1: +break; +case 0: +case 77: +case 28: +case 35: +if (disableSend) return; +case 21: +case 7: +case 14: +if ((script = this.vwr.getJSV().processSync(script, serviceMode)) == null) return; +} +this.vwr.evalStringQuietSync(script, true, false); +return; +}this.mouseScript(script); +if (disableSend) this.vwr.setSyncDriver(4); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "mouseScript", +function(script){ +var tokens = JU.PT.getTokens(script); +var key = tokens[1]; +try { +key = (key.toLowerCase() + "...............").substring(0, 15); +switch (("zoombyfactor...zoomby.........rotatezby......rotatexyby.....translatexyby..rotatemolecule.spinxyby.......rotatearcball..").indexOf(key)) { +case 0: +switch (tokens.length) { +case 3: +this.vwr.zoomByFactor(JU.PT.parseFloat(tokens[2]), 2147483647, 2147483647); +return; +case 5: +this.vwr.zoomByFactor(JU.PT.parseFloat(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseInt(tokens[4])); +return; +} +break; +case 15: +switch (tokens.length) { +case 3: +this.vwr.zoomBy(JU.PT.parseInt(tokens[2])); +return; +} +break; +case 30: +switch (tokens.length) { +case 3: +this.vwr.rotateZBy(JU.PT.parseInt(tokens[2]), 2147483647, 2147483647); +return; +case 5: +this.vwr.rotateZBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseInt(tokens[4])); +} +break; +case 45: +this.vwr.rotateXYBy(JU.PT.parseFloat(tokens[2]), JU.PT.parseFloat(tokens[3])); +return; +case 60: +this.vwr.translateXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3])); +return; +case 75: +this.vwr.rotateSelected(JU.PT.parseFloat(tokens[2]), JU.PT.parseFloat(tokens[3]), null); +return; +case 90: +this.vwr.spinXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3]), JU.PT.parseFloat(tokens[4])); +return; +case 105: +this.vwr.rotateXYBy(JU.PT.parseInt(tokens[2]), JU.PT.parseInt(tokens[3])); +return; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.vwr.showString("error reading SYNC command: " + script, false); +}, "~S"); +c$.MAXIMUM_QUEUE_LENGTH = 16; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["JU.A4", "$.M3", "$.M4", "$.P3", "$.P3i", "$.V3", "J.c.STER", "JU.Point3fi"], "JV.TransformManager", ["java.util.Hashtable", "JU.P4", "$.Quat", "$.SB", "J.api.Interface", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.movetoThread = null; +this.vibrationThread = null; +this.spinThread = null; +this.perspectiveModel = 11; +this.cameraScaleFactor = 0; +this.referencePlaneOffset = 0; +this.aperatureAngle = 0; +this.cameraDistanceFromCenter = 0; +this.modelCenterOffset = 0; +this.modelRadius = 0; +this.modelRadiusPixels = 0; +this.navigationCenter = null; +this.navigationOffset = null; +this.navigationShiftXY = null; +this.navigationDepthPercent = 0; +this.matrixTemp = null; +this.vectorTemp = null; +this.haveNotifiedNaN = false; +this.spinX = 0; +this.spinY = 30; +this.spinZ = 0; +this.spinFps = 30; +this.navX = 0; +this.navY = 0; +this.navZ = 0; +this.navFps = NaN; +this.isSpinInternal = false; +this.isSpinFixed = false; +this.isSpinSelected = false; +this.doTransform4D = false; +this.fixedRotationOffset = null; +this.fixedRotationCenter = null; +this.perspectiveOffset = null; +this.perspectiveShiftXY = null; +this.rotationCenterDefault = null; +this.rotationRadiusDefault = 0; +this.fixedRotationAxis = null; +this.internalRotationAxis = null; +this.internalTranslation = null; +this.internalRotationCenter = null; +this.internalRotationAngle = 0; +this.matrixRotate = null; +this.matrixTemp3 = null; +this.matrixTemp4 = null; +this.axisangleT = null; +this.vectorT = null; +this.vectorT2 = null; +this.pointT2 = null; +this.rotationAxis = null; +this.rotationRate = 0; +this.fixedTranslation = null; +this.camera = null; +this.cameraSetting = null; +this.xTranslationFraction = 0.5; +this.yTranslationFraction = 0.5; +this.prevZoomSetting = 0; +this.previousX = 0; +this.previousY = 0; +this.zoomEnabled = true; +this.zmPct = 100; +this.zmPctSet = 100; +this.zoomRatio = 0; +this.slabEnabled = false; +this.zShadeEnabled = false; +this.internalSlab = false; +this.slabPercentSetting = 0; +this.depthPercentSetting = 0; +this.slabValue = 0; +this.depthValue = 0; +this.zSlabPercentSetting = 50; +this.zDepthPercentSetting = 0; +this.zSlabPoint = null; +this.zSlabValue = 0; +this.zDepthValue = 0; +this.slabRange = 0; +this.slabPlane = null; +this.depthPlane = null; +this.perspectiveDepth = true; +this.scale3D = false; +this.cameraDepth = 3; +this.cameraDepthSetting = 3; +this.visualRangeAngstroms = 0; +this.cameraDistance = 1000; +this.width = 0; +this.height = 0; +this.screenPixelCount = 0; +this.scalePixelsPerAngstrom = 0; +this.scaleDefaultPixelsPerAngstrom = 0; +this.scale3DAngstromsPerInch = 0; +this.antialias = false; +this.useZoomLarge = false; +this.zoomHeight = false; +this.screenWidth = 0; +this.screenHeight = 0; +this.matrixTransform = null; +this.matrixTransformInv = null; +this.fScrPt = null; +this.iScrPt = null; +this.ptVibTemp = null; +this.navigating = false; +this.mode = 0; +this.defaultMode = 0; +this.untransformedPoint = null; +this.ptTest1 = null; +this.ptTest2 = null; +this.ptTest3 = null; +this.aaTest1 = null; +this.matrixTest = null; +this.spinOn = false; +this.navOn = false; +this.spinIsGesture = false; +this.vibrationOn = false; +this.vibrationPeriod = 0; +this.vibrationPeriodMs = 0; +this.vibrationScale = 0; +this.vibrationT = null; +this.stereoMode = null; +this.stereoColors = null; +this.stereoDoubleDTI = false; +this.stereoDoubleFull = false; +this.stereoDegrees = NaN; +this.stereoRadians = 0; +this.stereoFrame = false; +this.matrixStereo = null; +this.windowCentered = false; +this.frameOffset = null; +this.frameOffsets = null; +this.bsFrameOffsets = null; +this.bsSelectedAtoms = null; +this.ptOffset = null; +this.navMode = 1; +this.zoomFactor = 3.4028235E38; +this.navigationSlabOffset = 0; +this.nav = null; +Clazz_instantialize(this, arguments);}, JV, "TransformManager", null); +Clazz_prepareFields (c$, function(){ +this.navigationCenter = new JU.P3(); +this.navigationOffset = new JU.P3(); +this.navigationShiftXY = new JU.P3(); +this.matrixTemp = new JU.M4(); +this.vectorTemp = new JU.V3(); +this.fixedRotationOffset = new JU.P3(); +this.fixedRotationCenter = new JU.P3(); +this.perspectiveOffset = new JU.P3(); +this.perspectiveShiftXY = new JU.P3(); +this.rotationCenterDefault = new JU.P3(); +this.fixedRotationAxis = new JU.A4(); +this.internalRotationAxis = new JU.A4(); +this.internalRotationCenter = JU.P3.new3(0, 0, 0); +this.matrixRotate = new JU.M3(); +this.matrixTemp3 = new JU.M3(); +this.matrixTemp4 = new JU.M4(); +this.axisangleT = new JU.A4(); +this.vectorT = new JU.V3(); +this.vectorT2 = new JU.V3(); +this.pointT2 = new JU.P3(); +this.rotationAxis = new JU.V3(); +this.fixedTranslation = new JU.P3(); +this.camera = new JU.P3(); +this.cameraSetting = new JU.P3(); +this.matrixTransform = new JU.M4(); +this.matrixTransformInv = new JU.M4(); +this.fScrPt = new JU.P3(); +this.iScrPt = new JU.P3i(); +this.ptVibTemp = new JU.Point3fi(); +this.untransformedPoint = new JU.P3(); +this.ptTest1 = new JU.P3(); +this.ptTest2 = new JU.P3(); +this.ptTest3 = new JU.P3(); +this.aaTest1 = new JU.A4(); +this.matrixTest = new JU.M3(); +this.vibrationT = new JU.P3(); +this.stereoMode = J.c.STER.NONE; +this.matrixStereo = new JU.M3(); +this.frameOffset = new JU.P3(); +this.ptOffset = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +c$.getTransformManager = Clazz_defineMethod(c$, "getTransformManager", +function(vwr, width, height, is4D){ +var me = (is4D ? J.api.Interface.getInterface("JV.TransformManager4D", vwr, "tm") : new JV.TransformManager()); +me.vwr = vwr; +me.setScreenParameters(width, height, true, false, true, true); +return me; +}, "JV.Viewer,~N,~N,~B"); +Clazz_defineMethod(c$, "setDefaultPerspective", +function(){ +this.setCameraDepthPercent(3.0, true); +this.setPerspectiveDepth(true); +this.setStereoDegrees(-5); +this.visualRangeAngstroms = 5.0; +this.setSpinOff(); +this.setVibrationPeriod(0); +}); +Clazz_defineMethod(c$, "homePosition", +function(resetSpin){ +if (resetSpin) this.setSpinOff(); +this.setNavOn(false); +this.navFps = 10; +this.navX = this.navY = this.navZ = 0; +this.rotationCenterDefault.setT(this.vwr.getBoundBoxCenter()); +this.setFixedRotationCenter(this.rotationCenterDefault); +this.rotationRadiusDefault = this.setRotationRadius(0, true); +this.windowCentered = true; +this.setRotationCenterAndRadiusXYZ(null, true); +this.resetRotation(); +var m = this.vwr.ms.getInfoM("defaultOrientationMatrix"); +if (m != null) this.setRotation(m); +this.setZoomEnabled(true); +this.zoomToPercent(this.vwr.g.modelKitMode ? 50 : 100); +this.zmPct = this.zmPctSet; +this.slabReset(); +this.resetFitToScreen(true); +if (this.vwr.isJmolDataFrame()) { +this.fixedRotationCenter.set(0, 0, 0); +} else { +if (this.vwr.g.axesOrientationRasmol) this.matrixRotate.setAsXRotation(3.141592653589793); +}this.vwr.stm.saveOrientation("default", null); +if (this.mode == 1) this.setNavigationMode(true); +}, "~B"); +Clazz_defineMethod(c$, "setRotation", +function(m){ +if (m.isRotation()) this.matrixRotate.setM3(m); + else this.resetRotation(); +}, "JU.M3"); +Clazz_defineMethod(c$, "resetRotation", +function(){ +this.matrixRotate.setScale(1); +}); +Clazz_defineMethod(c$, "clearThreads", +function(){ +this.clearVibration(); +this.clearSpin(); +this.setNavOn(false); +this.stopMotion(); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.fixedRotationCenter.set(0, 0, 0); +this.navigating = false; +this.slabPlane = null; +this.depthPlane = null; +this.zSlabPoint = null; +this.resetNavigationPoint(true); +}); +Clazz_defineMethod(c$, "setFixedRotationCenter", +function(center){ +if (center == null) return; +this.fixedRotationCenter.setT(center); +}, "JU.T3"); +Clazz_defineMethod(c$, "setRotationPointXY", +function(center){ +var newCenterScreen = this.transformPt(center); +this.fixedTranslation.set(newCenterScreen.x, newCenterScreen.y, 0); +}, "JU.P3"); +Clazz_defineMethod(c$, "spinXYBy", +function(xDelta, yDelta, speed){ +if (xDelta == 0 && yDelta == 0) { +if (this.spinThread != null && this.spinIsGesture) this.clearSpin(); +return; +}this.clearSpin(); +var pt1 = JU.P3.newP(this.fixedRotationCenter); +var ptScreen = new JU.P3(); +this.transformPt3f(pt1, ptScreen); +var pt2 = JU.P3.new3(-yDelta, xDelta, 0); +pt2.add(ptScreen); +this.unTransformPoint(pt2, pt2); +this.vwr.setInMotion(false); +this.rotateAboutPointsInternal(null, pt2, pt1, 10 * speed, NaN, false, true, null, true, null, null, null, null, false); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "rotateXYBy", +function(degX, degY, bsAtoms){ +this.rotate3DBall(degX, degY, bsAtoms); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "rotateZBy", +function(zDelta, x, y){ +if (x != 2147483647 && y != 2147483647) this.resetXYCenter(x, y); +this.rotateZRadians((zDelta / 57.29577951308232)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "applyRotation", +function(mNew, isInternal, bsAtoms, translation, translationOnly, m4, useModelKit){ +if (bsAtoms == null) { +this.matrixRotate.mul2(mNew, this.matrixRotate); +return; +}this.vwr.moveAtoms(m4, mNew, this.matrixRotate, translation, this.internalRotationCenter, isInternal, bsAtoms, translationOnly, useModelKit); +if (translation != null) { +this.internalRotationCenter.add(translation); +}}, "JU.M3,~B,JU.BS,JU.V3,~B,JU.M4,~B"); +Clazz_defineMethod(c$, "rotate3DBall", +function(xDeg, yDeg, bsAtoms){ +if (this.matrixTemp3.setAsBallRotation(0.017453292519943295, -yDeg, -xDeg)) this.applyRotation(this.matrixTemp3, false, bsAtoms, null, false, null, false); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "rotateXRadians", +function(angleRadians, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAsXRotation(angleRadians), false, bsAtoms, null, false, null, false); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "rotateYRadians", +function(angleRadians, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAsYRotation(angleRadians), false, bsAtoms, null, false, null, false); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "rotateZRadians", +function(angleRadians){ +this.applyRotation(this.matrixTemp3.setAsZRotation(angleRadians), false, null, null, false, null, false); +}, "~N"); +Clazz_defineMethod(c$, "rotateAxisAngle", +function(rotAxis, radians){ +this.axisangleT.setVA(rotAxis, radians); +this.rotateAxisAngle2(this.axisangleT, null); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "rotateAxisAngle2", +function(axisAngle, bsAtoms){ +this.applyRotation(this.matrixTemp3.setAA(axisAngle), false, bsAtoms, null, false, null, false); +}, "JU.A4,JU.BS"); +Clazz_defineMethod(c$, "rotateAxisAngleAtCenter", +function(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsAtoms){ +if (rotCenter != null) this.moveRotationCenter(rotCenter, true); +if (isSpin) this.setSpinOff(); +this.setNavOn(false); +if (this.vwr.headless) { +if (isSpin && endDegrees == 3.4028235E38) return false; +isSpin = false; +}if (Float.isNaN(degreesPerSecond) || degreesPerSecond == 0 || endDegrees == 0) return false; +if (rotCenter != null) { +this.setRotationPointXY(rotCenter); +}this.setFixedRotationCenter(rotCenter); +this.rotationAxis.setT(rotAxis); +this.rotationRate = degreesPerSecond; +if (isSpin) { +this.fixedRotationAxis.setVA(rotAxis, (degreesPerSecond * 0.017453292519943295)); +this.isSpinInternal = false; +this.isSpinFixed = true; +this.isSpinSelected = (bsAtoms != null); +this.setSpin(eval, true, endDegrees, null, null, bsAtoms, false); +return (endDegrees != 3.4028235E38); +}var radians = (endDegrees * 0.017453292519943295); +this.fixedRotationAxis.setVA(rotAxis, endDegrees); +this.rotateAxisAngleRadiansFixed(radians, bsAtoms); +return true; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.V3,~N,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "rotateAxisAngleRadiansFixed", +function(angleRadians, bsAtoms){ +this.axisangleT.setAA(this.fixedRotationAxis); +this.axisangleT.angle = angleRadians; +this.rotateAxisAngle2(this.axisangleT, bsAtoms); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "rotateAboutPointsInternal", +function(eval, point1, point2, degreesPerSecond, endDegrees, isClockwise, isSpin, bsAtoms, isGesture, translation, finalPoints, dihedralList, m4, useModelKit){ +if (isSpin) this.setSpinOff(); +this.setNavOn(false); +if (dihedralList == null && (translation == null || translation.length() < 0.001) && (isSpin ? Float.isNaN(degreesPerSecond) || degreesPerSecond == 0 : endDegrees == 0)) return false; +var axis = null; +if (dihedralList == null) { +axis = JU.V3.newVsub(point2, point1); +if (isClockwise) axis.scale(-1.0); +this.internalRotationCenter.setT(point1); +this.rotationAxis.setT(axis); +this.internalTranslation = (translation == null ? null : JU.V3.newV(translation)); +}var isSelected = (bsAtoms != null); +if (isSpin) { +if (dihedralList == null) { +if (endDegrees == 0) endDegrees = NaN; +if (Float.isNaN(endDegrees)) { +this.rotationRate = degreesPerSecond; +} else { +var nFrames = Clazz_doubleToInt(Math.abs(endDegrees) / Math.abs(degreesPerSecond) * this.spinFps + 0.5); +this.rotationRate = degreesPerSecond = endDegrees / nFrames * this.spinFps; +if (translation != null) this.internalTranslation.scale(1 / nFrames); +}this.internalRotationAxis.setVA(axis, ((Float.isNaN(this.rotationRate) ? 0 : this.rotationRate) * 0.017453292519943295)); +this.isSpinInternal = true; +this.isSpinFixed = false; +this.isSpinSelected = isSelected; +} else { +endDegrees = degreesPerSecond; +}this.setSpin(eval, true, endDegrees, finalPoints, dihedralList, bsAtoms, isGesture); +return !Float.isNaN(endDegrees); +}var radians = (endDegrees * 0.017453292519943295); +this.internalRotationAxis.setVA(axis, radians); +this.rotateAxisAngleRadiansInternal(radians, bsAtoms, m4, useModelKit); +return false; +}, "J.api.JmolScriptEvaluator,JU.T3,JU.T3,~N,~N,~B,~B,JU.BS,~B,JU.V3,JU.Lst,~A,JU.M4,~B"); +Clazz_defineMethod(c$, "rotateAxisAngleRadiansInternal", +function(radians, bsAtoms, m4, useModelKit){ +this.internalRotationAngle = radians; +this.vectorT.set(this.internalRotationAxis.x, this.internalRotationAxis.y, this.internalRotationAxis.z); +this.matrixRotate.rotate2(this.vectorT, this.vectorT2); +this.axisangleT.setVA(this.vectorT2, radians); +this.applyRotation(this.matrixTemp3.setAA(this.axisangleT), true, bsAtoms, this.internalTranslation, radians > 1e6, m4, useModelKit); +if (bsAtoms == null) this.getNewFixedRotationCenter(); +}, "~N,JU.BS,JU.M4,~B"); +Clazz_defineMethod(c$, "getNewFixedRotationCenter", +function(){ +this.axisangleT.setAA(this.internalRotationAxis); +this.axisangleT.angle = -this.internalRotationAngle; +this.matrixTemp4.setToAA(this.axisangleT); +this.vectorT.setT(this.internalRotationCenter); +this.pointT2.sub2(this.fixedRotationCenter, this.vectorT); +var pt = this.matrixTemp4.rotTrans2(this.pointT2, new JU.P3()); +pt.add(this.vectorT); +this.setRotationCenterAndRadiusXYZ(pt, false); +}); +Clazz_defineMethod(c$, "setTranslationFractions", +function(){ +this.xTranslationFraction = this.fixedTranslation.x / this.width; +this.yTranslationFraction = this.fixedTranslation.y / this.height; +}); +Clazz_defineMethod(c$, "centerAt", +function(x, y, pt){ +if (pt == null) { +this.translateXYBy(x, y); +return; +}if (this.windowCentered) this.vwr.setBooleanProperty("windowCentered", false); +this.fixedTranslation.x = x; +this.fixedTranslation.y = y; +this.setFixedRotationCenter(pt); +}, "~N,~N,JU.P3"); +Clazz_defineMethod(c$, "percentToPixels", +function(xyz, percent){ +switch ((xyz).charCodeAt(0)) { +case 120: +return Clazz_doubleToInt(Math.floor(percent / 100 * this.width)); +case 121: +return Clazz_doubleToInt(Math.floor(percent / 100 * this.height)); +case 122: +return Clazz_doubleToInt(Math.floor(percent / 100 * this.screenPixelCount)); +} +return 0; +}, "~S,~N"); +Clazz_defineMethod(c$, "angstromsToPixels", +function(distance){ +return this.scalePixelsPerAngstrom * distance; +}, "~N"); +Clazz_defineMethod(c$, "translateXYBy", +function(xDelta, yDelta){ +this.fixedTranslation.x += xDelta; +this.fixedTranslation.y += yDelta; +this.setTranslationFractions(); +}, "~N,~N"); +Clazz_defineMethod(c$, "setCamera", +function(x, y){ +this.cameraSetting.set(x, y, (x == 0 && y == 0 ? 0 : 1)); +}, "~N,~N"); +Clazz_defineMethod(c$, "translateToPercent", +function(type, percent){ +switch ((type).charCodeAt(0)) { +case 120: +this.xTranslationFraction = 0.5 + percent / 100; +this.fixedTranslation.x = this.width * this.xTranslationFraction; +return; +case 121: +this.yTranslationFraction = 0.5 + percent / 100; +this.fixedTranslation.y = this.height * this.yTranslationFraction; +return; +case 122: +if (this.mode == 1) this.setNavigationDepthPercent(percent); +return; +} +}, "~S,~N"); +Clazz_defineMethod(c$, "getTranslationXPercent", +function(){ +return (this.width == 0 ? 0 : (this.fixedTranslation.x - this.width / 2) * 100 / this.width); +}); +Clazz_defineMethod(c$, "getTranslationYPercent", +function(){ +return (this.height == 0 ? 0 : (this.fixedTranslation.y - this.height / 2) * 100 / this.height); +}); +Clazz_defineMethod(c$, "getTranslationScript", +function(){ +var info = ""; +var f = this.getTranslationXPercent(); +if (f != 0.0) info += "translate x " + f + ";"; +f = this.getTranslationYPercent(); +if (f != 0.0) info += "translate y " + f + ";"; +return info; +}); +Clazz_defineMethod(c$, "getOrientationText", +function(type, isBest){ +switch (type) { +case 4129: +return this.getMoveToText(1, false); +case 1073742132: +var q = this.getRotationQ(); +if (isBest) q = q.inv(); +return q.toString(); +case 1073742178: +var sb = new JU.SB(); +var d = this.getTranslationXPercent(); +JV.TransformManager.truncate2(sb, (isBest ? -d : d)); +d = this.getTranslationYPercent(); +JV.TransformManager.truncate2(sb, (isBest ? -d : d)); +return sb.toString(); +default: +return this.getMoveToText(1, true) + "\n#OR\n" + this.getRotateZyzText(true); +} +}, "~N,~B"); +Clazz_defineMethod(c$, "getRotationQ", +function(){ +return JU.Quat.newM(this.matrixRotate); +}); +Clazz_defineMethod(c$, "getOrientationInfo", +function(){ +var info = new java.util.Hashtable(); +info.put("moveTo", this.getMoveToText(1, false)); +info.put("center", "center " + this.getCenterText()); +info.put("centerPt", this.fixedRotationCenter); +var aa = new JU.A4(); +aa.setM(this.matrixRotate); +info.put("axisAngle", aa); +info.put("quaternion", this.getRotationQ().toPoint4f()); +info.put("rotationMatrix", this.matrixRotate); +info.put("rotateZYZ", this.getRotateZyzText(false)); +info.put("rotateXYZ", this.getRotateXyzText()); +info.put("transXPercent", Float.$valueOf(this.getTranslationXPercent())); +info.put("transYPercent", Float.$valueOf(this.getTranslationYPercent())); +info.put("zoom", Float.$valueOf(this.zmPct)); +info.put("modelRadius", Float.$valueOf(this.modelRadius)); +if (this.mode == 1) { +info.put("navigationCenter", "navigate center " + JU.Escape.eP(this.navigationCenter)); +info.put("navigationOffsetXPercent", Float.$valueOf(this.getNavigationOffsetPercent('X'))); +info.put("navigationOffsetYPercent", Float.$valueOf(this.getNavigationOffsetPercent('Y'))); +info.put("navigationDepthPercent", Float.$valueOf(this.navigationDepthPercent)); +}return info; +}); +Clazz_defineMethod(c$, "getRotation", +function(m){ +m.setM3(this.matrixRotate); +}, "JU.M3"); +Clazz_defineMethod(c$, "setZoomHeight", +function(zoomHeight, zoomLarge){ +this.zoomHeight = zoomHeight; +this.scaleFitToScreen(false, zoomLarge, false, true); +}, "~B,~B"); +Clazz_defineMethod(c$, "zoomBy", +function(pixels){ +if (pixels > 20) pixels = 20; + else if (pixels < -20) pixels = -20; +var deltaPercent = pixels * this.zmPctSet / 50; +if (deltaPercent == 0) deltaPercent = (pixels > 0 ? 1 : (deltaPercent < 0 ? -1 : 0)); +this.zoomRatio = (deltaPercent + this.zmPctSet) / this.zmPctSet; +this.zmPctSet += deltaPercent; +}, "~N"); +Clazz_defineMethod(c$, "zoomByFactor", +function(factor, x, y){ +if (factor <= 0 || !this.zoomEnabled) return; +if (this.mode != 1) { +this.zoomRatio = factor; +this.zmPctSet *= factor; +this.resetXYCenter(x, y); +} else if (this.getNav()) { +this.nav.zoomByFactor(factor, x, y); +}}, "~N,~N,~N"); +Clazz_defineMethod(c$, "zoomToPercent", +function(percentZoom){ +this.zmPctSet = percentZoom; +this.zoomRatio = 0; +}, "~N"); +Clazz_defineMethod(c$, "translateZBy", +function(pixels){ +if (pixels >= this.screenPixelCount) return; +var sppa = this.scalePixelsPerAngstrom / (1 - pixels * 1.0 / this.screenPixelCount); +if (sppa >= this.screenPixelCount) return; +var newZoomPercent = sppa / this.scaleDefaultPixelsPerAngstrom * 100; +this.zoomRatio = newZoomPercent / this.zmPctSet; +this.zmPctSet = newZoomPercent; +}, "~N"); +Clazz_defineMethod(c$, "resetXYCenter", +function(x, y){ +if (x == 2147483647 || y == 2147483647) return; +if (this.windowCentered) this.vwr.setBooleanProperty("windowCentered", false); +var pt = new JU.P3(); +this.transformPt3f(this.fixedRotationCenter, pt); +pt.set(x, y, pt.z); +this.unTransformPoint(pt, pt); +this.fixedTranslation.set(x, y, 0); +this.setFixedRotationCenter(pt); +}, "~N,~N"); +Clazz_defineMethod(c$, "zoomByPercent", +function(percentZoom){ +var deltaPercent = percentZoom * this.zmPctSet / 100; +if (deltaPercent == 0) deltaPercent = (percentZoom < 0) ? -1 : 1; +this.zoomRatio = (deltaPercent + this.zmPctSet) / this.zmPctSet; +this.zmPctSet += deltaPercent; +}, "~N"); +Clazz_defineMethod(c$, "setScaleAngstromsPerInch", +function(angstromsPerInch){ +this.scale3D = (angstromsPerInch > 0); +if (this.scale3D) this.scale3DAngstromsPerInch = angstromsPerInch; +this.perspectiveDepth = !this.scale3D; +}, "~N"); +Clazz_defineMethod(c$, "setSlabRange", +function(value){ +this.slabRange = value; +}, "~N"); +Clazz_defineMethod(c$, "setSlabEnabled", +function(slabEnabled){ +this.vwr.g.setB("slabEnabled", this.slabEnabled = slabEnabled); +}, "~B"); +Clazz_defineMethod(c$, "setZShadeEnabled", +function(zShadeEnabled){ +this.zShadeEnabled = zShadeEnabled; +this.vwr.g.setB("zShade", zShadeEnabled); +}, "~B"); +Clazz_defineMethod(c$, "setZoomEnabled", +function(zoomEnabled){ +this.zoomEnabled = zoomEnabled; +this.vwr.g.setB("zoomEnabled", zoomEnabled); +}, "~B"); +Clazz_defineMethod(c$, "slabReset", +function(){ +this.slabToPercent(100); +this.depthToPercent(0); +this.depthPlane = null; +this.slabPlane = null; +this.setSlabEnabled(false); +this.setZShadeEnabled(false); +this.slabDepthChanged(); +}); +Clazz_defineMethod(c$, "getSlabPercentSetting", +function(){ +return this.slabPercentSetting; +}); +Clazz_defineMethod(c$, "slabDepthChanged", +function(){ +this.vwr.g.setI("slab", this.slabPercentSetting); +this.vwr.g.setI("depth", this.depthPercentSetting); +this.finalizeTransformParameters(); +}); +Clazz_defineMethod(c$, "slabByPercentagePoints", +function(percentage){ +this.slabPlane = null; +if (percentage < 0 ? this.slabPercentSetting <= Math.max(0, this.depthPercentSetting) : this.slabPercentSetting >= 100) return; +this.slabPercentSetting += percentage; +this.slabDepthChanged(); +if (this.depthPercentSetting >= this.slabPercentSetting) this.depthPercentSetting = this.slabPercentSetting - 1; +}, "~N"); +Clazz_defineMethod(c$, "depthByPercentagePoints", +function(percentage){ +this.depthPlane = null; +if (percentage < 0 ? this.depthPercentSetting <= 0 : this.depthPercentSetting >= Math.min(100, this.slabPercentSetting)) return; +this.depthPercentSetting += percentage; +if (this.slabPercentSetting <= this.depthPercentSetting) this.slabPercentSetting = this.depthPercentSetting + 1; +this.slabDepthChanged(); +}, "~N"); +Clazz_defineMethod(c$, "slabDepthByPercentagePoints", +function(percentage){ +this.slabPlane = null; +this.depthPlane = null; +if (percentage < 0 ? this.slabPercentSetting <= Math.max(0, this.depthPercentSetting) : this.depthPercentSetting >= Math.min(100, this.slabPercentSetting)) return; +this.slabPercentSetting += percentage; +this.depthPercentSetting += percentage; +this.slabDepthChanged(); +}, "~N"); +Clazz_defineMethod(c$, "slabToPercent", +function(percentSlab){ +this.slabPlane = null; +this.vwr.setFloatProperty("slabRange", 0); +this.slabPercentSetting = percentSlab; +if (this.depthPercentSetting >= this.slabPercentSetting) this.depthPercentSetting = this.slabPercentSetting - 1; +this.slabDepthChanged(); +}, "~N"); +Clazz_defineMethod(c$, "depthToPercent", +function(percentDepth){ +this.depthPlane = null; +this.vwr.g.setI("depth", percentDepth); +this.depthPercentSetting = percentDepth; +if (this.slabPercentSetting <= this.depthPercentSetting) this.slabPercentSetting = this.depthPercentSetting + 1; +this.slabDepthChanged(); +}, "~N"); +Clazz_defineMethod(c$, "zSlabToPercent", +function(percentSlab){ +this.zSlabPercentSetting = percentSlab; +if (this.zDepthPercentSetting > this.zSlabPercentSetting) this.zDepthPercentSetting = percentSlab; +}, "~N"); +Clazz_defineMethod(c$, "zDepthToPercent", +function(percentDepth){ +this.zDepthPercentSetting = percentDepth; +if (this.zDepthPercentSetting > this.zSlabPercentSetting) this.zSlabPercentSetting = percentDepth; +}, "~N"); +Clazz_defineMethod(c$, "slabInternal", +function(plane, isDepth){ +if (isDepth) { +this.depthPlane = plane; +this.depthPercentSetting = 0; +} else { +this.slabPlane = plane; +this.slabPercentSetting = 100; +}this.slabDepthChanged(); +}, "JU.P4,~B"); +Clazz_defineMethod(c$, "setSlabDepthInternal", +function(isDepth){ +if (isDepth) this.depthPlane = null; + else this.slabPlane = null; +this.finalizeTransformParameters(); +this.slabInternal(this.getSlabDepthPlane(isDepth), isDepth); +}, "~B"); +Clazz_defineMethod(c$, "getSlabDepthPlane", +function(isDepth){ +if (isDepth) { +if (this.depthPlane != null) return this.depthPlane; +} else if (this.slabPlane != null) { +return this.slabPlane; +}var m = this.matrixTransform; +var plane = JU.P4.new4(-m.m20, -m.m21, -m.m22, -m.m23 + (isDepth ? this.depthValue : this.slabValue)); +return plane; +}, "~B"); +Clazz_defineMethod(c$, "getCameraFactors", +function(){ +this.aperatureAngle = (Math.atan2(this.screenPixelCount / 2, this.referencePlaneOffset) * 2 * 180 / 3.141592653589793); +this.cameraDistanceFromCenter = this.referencePlaneOffset / this.scalePixelsPerAngstrom; +var ptRef = JU.P3.new3(Clazz_doubleToInt(this.screenWidth / 2), Clazz_doubleToInt(this.screenHeight / 2), this.referencePlaneOffset); +this.unTransformPoint(ptRef, ptRef); +var ptCamera = JU.P3.new3(Clazz_doubleToInt(this.screenWidth / 2), Clazz_doubleToInt(this.screenHeight / 2), 0); +this.unTransformPoint(ptCamera, ptCamera); +ptCamera.sub(this.fixedRotationCenter); +var pt = JU.P3.new3(Clazz_doubleToInt(this.screenWidth / 2), Clazz_doubleToInt(this.screenHeight / 2), this.cameraDistanceFromCenter * this.scalePixelsPerAngstrom); +this.unTransformPoint(pt, pt); +pt.sub(this.fixedRotationCenter); +ptCamera.add(pt); +return Clazz_newArray(-1, [ptRef, ptCamera, this.fixedRotationCenter, JU.P3.new3(this.cameraDistanceFromCenter, this.aperatureAngle, this.scalePixelsPerAngstrom)]); +}); +Clazz_defineMethod(c$, "setPerspectiveDepth", +function(perspectiveDepth){ +if (this.perspectiveDepth == perspectiveDepth) return; +this.perspectiveDepth = perspectiveDepth; +this.vwr.g.setB("perspectiveDepth", perspectiveDepth); +this.resetFitToScreen(false); +}, "~B"); +Clazz_defineMethod(c$, "getPerspectiveDepth", +function(){ +return this.perspectiveDepth; +}); +Clazz_defineMethod(c$, "setCameraDepthPercent", +function(percent, resetSlab){ +this.resetNavigationPoint(resetSlab); +var screenMultiples = (percent < 0 ? -percent / 100 : percent); +if (screenMultiples == 0) return; +this.cameraDepthSetting = screenMultiples; +this.vwr.g.setF("cameraDepth", this.cameraDepthSetting); +this.cameraDepth = NaN; +}, "~N,~B"); +Clazz_defineMethod(c$, "getCameraDepth", +function(){ +return this.cameraDepthSetting; +}); +Clazz_defineMethod(c$, "setScreenParameters0", +function(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom){ +if (screenWidth == 2147483647) return; +this.screenWidth = screenWidth; +this.screenHeight = screenHeight; +this.useZoomLarge = useZoomLarge; +this.antialias = antialias; +this.width = (antialias ? screenWidth * 2 : screenWidth); +this.height = (antialias ? screenHeight * 2 : screenHeight); +this.scaleFitToScreen(false, useZoomLarge, resetSlab, resetZoom); +}, "~N,~N,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "setAntialias", +function(TF){ +var isNew = (this.antialias != TF); +this.antialias = TF; +this.width = (this.antialias ? this.screenWidth * 2 : this.screenWidth); +this.height = (this.antialias ? this.screenHeight * 2 : this.screenHeight); +if (isNew) this.scaleFitToScreen(false, this.useZoomLarge, false, false); +}, "~B"); +Clazz_defineMethod(c$, "defaultScaleToScreen", +function(radius){ +return this.screenPixelCount / 2 / radius; +}, "~N"); +Clazz_defineMethod(c$, "resetFitToScreen", +function(andCenter){ +this.scaleFitToScreen(andCenter, this.vwr.g.zoomLarge, true, true); +}, "~B"); +Clazz_defineMethod(c$, "scaleFitToScreen", +function(andCenter, zoomLarge, resetSlab, resetZoom){ +if (this.width == 0 || this.height == 0) { +this.screenPixelCount = 1; +} else { +this.fixedTranslation.set(this.width * (andCenter ? 0.5 : this.xTranslationFraction), this.height * (andCenter ? 0.5 : this.yTranslationFraction), 0); +this.setTranslationFractions(); +if (andCenter) this.camera.set(0, 0, 0); +if (resetZoom) this.resetNavigationPoint(resetSlab); +if (this.zoomHeight) zoomLarge = (this.height > this.width); +this.screenPixelCount = (zoomLarge == (this.height > this.width) ? this.height : this.width); +}if (this.screenPixelCount > 2) this.screenPixelCount -= 2; +this.scaleDefaultPixelsPerAngstrom = this.defaultScaleToScreen(this.modelRadius); +}, "~B,~B,~B,~B"); +Clazz_defineMethod(c$, "scaleToScreen", +function(z, milliAngstroms){ +if (milliAngstroms == 0 || z < 2) return 0; +var pixelSize = this.scaleToPerspective(z, milliAngstroms * this.scalePixelsPerAngstrom / 1000); +return (pixelSize > 0 ? pixelSize : 1); +}, "~N,~N"); +Clazz_defineMethod(c$, "unscaleToScreen", +function(z, screenDistance){ +var d = screenDistance / this.scalePixelsPerAngstrom; +return (this.perspectiveDepth ? d / this.getPerspectiveFactor(z) : d); +}, "~N,~N"); +Clazz_defineMethod(c$, "scaleToPerspective", +function(z, sizeAngstroms){ +return (this.perspectiveDepth ? sizeAngstroms * this.getPerspectiveFactor(z) : sizeAngstroms); +}, "~N,~N"); +Clazz_defineMethod(c$, "setNavigationMode", +function(TF){ +this.mode = (TF ? 1 : this.defaultMode); +this.resetNavigationPoint(true); +}, "~B"); +Clazz_defineMethod(c$, "isNavigating", +function(){ +return this.navigating || this.navOn; +}); +Clazz_defineMethod(c$, "finalizeTransformParameters", +function(){ +this.haveNotifiedNaN = false; +this.fixedRotationOffset.setT(this.fixedTranslation); +this.camera.setT(this.cameraSetting); +this.internalSlab = this.slabEnabled && (this.slabPlane != null || this.depthPlane != null); +var newZoom = this.getZoomSetting(); +if (this.zmPct != newZoom) { +this.zmPct = newZoom; +if (!this.vwr.g.fontCaching) this.vwr.gdata.clearFontCache(); +}this.calcCameraFactors(); +this.calcTransformMatrix(); +if (this.mode == 1) this.calcNavigationPoint(); + else this.calcSlabAndDepthValues(); +}); +Clazz_defineMethod(c$, "getZoomSetting", +function(){ +if (this.zmPctSet < 5) this.zmPctSet = 5; +if (this.zmPctSet > 200000) this.zmPctSet = 200000; +return (this.zoomEnabled || this.mode == 1 ? this.zmPctSet : 100); +}); +Clazz_defineMethod(c$, "calcSlabAndDepthValues", +function(){ +if (this.slabRange < 1) this.slabValue = this.zValueFromPercent(this.slabPercentSetting); + else this.slabValue = Clazz_doubleToInt(Math.floor(this.modelCenterOffset * this.slabRange / (2 * this.modelRadius) * (this.zmPctSet / 100))); +this.depthValue = this.zValueFromPercent(this.depthPercentSetting); +if (this.zSlabPercentSetting == this.zDepthPercentSetting) { +this.zSlabValue = this.slabValue; +this.zDepthValue = this.depthValue; +} else { +this.zSlabValue = this.zValueFromPercent(this.zSlabPercentSetting); +this.zDepthValue = this.zValueFromPercent(this.zDepthPercentSetting); +}if (this.zSlabPoint != null) { +try { +this.transformPt3f(this.zSlabPoint, this.pointT2); +this.zSlabValue = Clazz_floatToInt(this.pointT2.z); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}this.vwr.g.setO("_slabPlane", JU.Escape.eP4(this.getSlabDepthPlane(false))); +this.vwr.g.setO("_depthPlane", JU.Escape.eP4(this.getSlabDepthPlane(true))); +if (this.slabEnabled) return; +this.slabValue = 0; +this.depthValue = 2147483647; +}); +Clazz_defineMethod(c$, "zValueFromPercent", +function(zPercent){ +return Clazz_doubleToInt(Math.floor((1 - zPercent / 50) * this.modelRadiusPixels + this.modelCenterOffset)); +}, "~N"); +Clazz_defineMethod(c$, "calcTransformMatrix", +function(){ +this.matrixTransform.setIdentity(); +this.vectorTemp.sub2(this.frameOffset, this.fixedRotationCenter); +this.matrixTransform.setTranslation(this.vectorTemp); +this.matrixTemp.setToM3(this.stereoFrame ? this.matrixStereo : this.matrixRotate); +this.matrixTransform.mul2(this.matrixTemp, this.matrixTransform); +this.matrixTemp.setIdentity(); +this.matrixTemp.m00 = this.matrixTemp.m11 = this.matrixTemp.m22 = this.scalePixelsPerAngstrom; +this.matrixTemp.m11 = this.matrixTemp.m22 = -this.scalePixelsPerAngstrom; +this.matrixTransform.mul2(this.matrixTemp, this.matrixTransform); +this.matrixTransform.m23 += this.modelCenterOffset; +try { +this.matrixTransformInv.setM4(this.matrixTransform).invert(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("ERROR INVERTING matrixTransform!"); +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "rotatePoint", +function(pt, ptRot){ +this.matrixRotate.rotate2(pt, ptRot); +ptRot.y = -ptRot.y; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "getScreenTemp", +function(ptXYZ){ +this.matrixTransform.rotTrans2(ptXYZ, this.fScrPt); +}, "JU.T3"); +Clazz_defineMethod(c$, "transformPtScr", +function(ptXYZ, pointScreen){ +pointScreen.setT(this.transformPt(ptXYZ)); +}, "JU.T3,JU.P3i"); +Clazz_defineMethod(c$, "transformPtScrT3", +function(ptXYZ, pointScreen){ +this.transformPt(ptXYZ); +pointScreen.setT(this.fScrPt); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "transformPt3f", +function(ptXYZ, screen){ +this.applyPerspective(ptXYZ, ptXYZ); +screen.setT(this.fScrPt); +}, "JU.T3,JU.P3"); +Clazz_defineMethod(c$, "transformPtNoClip", +function(ptXYZ, pointScreen){ +this.applyPerspective(ptXYZ, null); +pointScreen.setT(this.fScrPt); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "transformPt", +function(ptXYZ){ +return this.applyPerspective(ptXYZ, this.internalSlab ? ptXYZ : null); +}, "JU.T3"); +Clazz_defineMethod(c$, "transformPtVib", +function(ptXYZ, v){ +this.ptVibTemp.setT(ptXYZ); +return this.applyPerspective(this.getVibrationPoint(v, this.ptVibTemp, NaN), ptXYZ); +}, "JU.P3,JU.Vibration"); +Clazz_defineMethod(c$, "getVibrationPoint", +function(v, pt, scale){ +return v.setCalcPoint(pt, this.vibrationT, (Float.isNaN(scale) ? this.vibrationScale : scale), this.vwr.g.modulationScale); +}, "JU.Vibration,JU.T3,~N"); +Clazz_defineMethod(c$, "transformPt2Df", +function(v, pt){ +if (v.z == -3.4028235E38 || v.z == 3.4028235E38) { +this.transformPt2D(v); +pt.set(this.iScrPt.x, this.iScrPt.y, this.iScrPt.z); +} else { +this.transformPt3f(v, pt); +}}, "JU.T3,JU.P3"); +Clazz_defineMethod(c$, "transformPtScrT32D", +function(v, pt){ +if (v.z == -3.4028235E38 || v.z == 3.4028235E38) { +this.transformPt2D(v); +pt.set(this.iScrPt.x, this.iScrPt.y, this.iScrPt.z); +} else { +this.transformPtScrT3(v, pt); +}}, "JU.T3,JU.P3"); +Clazz_defineMethod(c$, "transformPt2D", +function(ptXyp){ +if (ptXyp.z == -3.4028235E38) { +this.iScrPt.x = Clazz_doubleToInt(Math.floor(ptXyp.x / 100 * this.screenWidth)); +this.iScrPt.y = Clazz_doubleToInt(Math.floor((1 - ptXyp.y / 100) * this.screenHeight)); +} else { +this.iScrPt.x = Clazz_floatToInt(ptXyp.x); +this.iScrPt.y = (this.screenHeight - Clazz_floatToInt(ptXyp.y)); +}if (this.antialias) { +this.iScrPt.x <<= 1; +this.iScrPt.y <<= 1; +}this.matrixTransform.rotTrans2(this.fixedRotationCenter, this.fScrPt); +this.iScrPt.z = Clazz_floatToInt(this.fScrPt.z); +return this.iScrPt; +}, "JU.T3"); +Clazz_defineMethod(c$, "applyPerspective", +function(ptXYZ, ptRef){ +this.getScreenTemp(ptXYZ); +var z = this.fScrPt.z; +if (Float.isNaN(z)) { +if (!this.haveNotifiedNaN && JU.Logger.debugging) JU.Logger.debug("NaN seen in TransformPoint"); +this.haveNotifiedNaN = true; +z = this.fScrPt.z = 1; +} else if (z <= 0) { +z = this.fScrPt.z = 1; +}switch (this.mode) { +case 1: +this.fScrPt.x -= this.navigationShiftXY.x; +this.fScrPt.y -= this.navigationShiftXY.y; +break; +case 2: +this.fScrPt.x += this.perspectiveShiftXY.x; +this.fScrPt.y += this.perspectiveShiftXY.y; +break; +} +if (this.perspectiveDepth) { +var factor = this.getPerspectiveFactor(z); +this.fScrPt.x *= factor; +this.fScrPt.y *= factor; +}switch (this.mode) { +case 1: +this.fScrPt.x += this.navigationOffset.x; +this.fScrPt.y += this.navigationOffset.y; +break; +case 2: +this.fScrPt.x -= this.perspectiveShiftXY.x; +this.fScrPt.y -= this.perspectiveShiftXY.y; +case 0: +this.fScrPt.x += this.fixedRotationOffset.x; +this.fScrPt.y += this.fixedRotationOffset.y; +break; +} +if (Float.isNaN(this.fScrPt.x) && !this.haveNotifiedNaN) { +if (JU.Logger.debugging) JU.Logger.debug("NaN found in transformPoint "); +this.haveNotifiedNaN = true; +}this.iScrPt.set(Clazz_floatToInt(this.fScrPt.x), Clazz_floatToInt(this.fScrPt.y), Clazz_floatToInt(this.fScrPt.z)); +if (ptRef != null && this.xyzIsSlabbedInternal(ptRef)) this.fScrPt.z = this.iScrPt.z = 1; +return this.iScrPt; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "xyzIsSlabbedInternal", +function(ptRef){ +return (this.slabPlane != null && ptRef.x * this.slabPlane.x + ptRef.y * this.slabPlane.y + ptRef.z * this.slabPlane.z + this.slabPlane.w > 0 || this.depthPlane != null && ptRef.x * this.depthPlane.x + ptRef.y * this.depthPlane.y + ptRef.z * this.depthPlane.z + this.depthPlane.w < 0); +}, "JU.T3"); +Clazz_defineMethod(c$, "move", +function(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps){ +this.movetoThread = J.api.Interface.getOption("thread.MoveToThread", this.vwr, "tm"); +this.movetoThread.setManager(this, this.vwr, Clazz_newArray(-1, [dRot, dTrans, Clazz_newFloatArray(-1, [dZoom, dSlab, floatSecondsTotal, fps])])); +if (floatSecondsTotal > 0) this.movetoThread.setEval(eval); +this.movetoThread.run(); +}, "J.api.JmolScriptEvaluator,JU.V3,~N,JU.V3,~N,~N,~N"); +Clazz_defineMethod(c$, "isInPosition", +function(axis, degrees){ +if (Float.isNaN(degrees)) return true; +this.aaTest1.setVA(axis, (degrees / 57.29577951308232)); +this.ptTest1.set(4.321, 1.23456, 3.14159); +this.getRotation(this.matrixTest); +this.matrixTest.rotate2(this.ptTest1, this.ptTest2); +this.matrixTest.setAA(this.aaTest1).rotate2(this.ptTest1, this.ptTest3); +return (this.ptTest3.distance(this.ptTest2) < 0.1); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "moveToPyMOL", +function(eval, floatSecondsTotal, pymolView){ +var m3 = JU.M3.newA9(pymolView); +m3.invert(); +var cameraX = pymolView[9]; +var cameraY = -pymolView[10]; +var pymolDistanceToCenter = -pymolView[11]; +var center = JU.P3.new3(pymolView[12], pymolView[13], pymolView[14]); +var pymolDistanceToSlab = pymolView[15]; +var pymolDistanceToDepth = pymolView[16]; +var fov = pymolView[17]; +var isOrtho = (fov >= 0); +this.setPerspectiveDepth(!isOrtho); +var theta = Math.abs(fov) / 2; +var tan = Math.tan(theta * 3.141592653589793 / 180); +var rotationRadius = pymolDistanceToCenter * tan; +var jmolCameraToCenter = 0.5 / tan; +var cameraDepth = jmolCameraToCenter - 0.5; +var f = 50 / rotationRadius; +if (pymolDistanceToSlab > 0) { +var slab = 50 + Clazz_floatToInt((pymolDistanceToCenter - pymolDistanceToSlab) * f); +var depth = 50 + Clazz_floatToInt((pymolDistanceToCenter - pymolDistanceToDepth) * f); +this.setSlabEnabled(true); +this.slabToPercent(slab); +this.depthToPercent(depth); +if (pymolView.length == 21) { +var depthCue = (pymolView[18] != 0); +var fog = (pymolView[19] != 0); +var fogStart = pymolView[20]; +this.setZShadeEnabled(depthCue); +if (depthCue) { +if (fog) { +this.vwr.setIntProperty("zSlab", Clazz_floatToInt(Math.min(100, slab + fogStart * (depth - slab)))); +} else { +this.vwr.setIntProperty("zSlab", Clazz_floatToInt((slab + depth) / 2)); +}this.vwr.setIntProperty("zDepth", depth); +}}}this.moveTo(eval, floatSecondsTotal, center, null, 0, m3, 100, NaN, NaN, rotationRadius, null, NaN, NaN, NaN, cameraDepth, cameraX, cameraY); +return true; +}, "J.api.JmolScriptEvaluator,~N,~A"); +Clazz_defineMethod(c$, "moveTo", +function(eval, floatSecondsTotal, center, rotAxis, degrees, matrixEnd, zoom, xTrans, yTrans, newRotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY){ +if (matrixEnd == null) { +matrixEnd = new JU.M3(); +var axis = JU.V3.newV(rotAxis); +if (Float.isNaN(degrees)) { +matrixEnd.m00 = NaN; +} else if (degrees < 0.01 && degrees > -0.01) { +matrixEnd.setScale(1); +} else { +if (axis.x == 0 && axis.y == 0 && axis.z == 0) { +return; +}var aaMoveTo = new JU.A4(); +aaMoveTo.setVA(axis, (degrees / 57.29577951308232)); +matrixEnd.setAA(aaMoveTo); +}}if (cameraX == this.cameraSetting.x) cameraX = NaN; +if (cameraY == this.cameraSetting.y) cameraY = NaN; +if (cameraDepth == this.cameraDepth) cameraDepth = NaN; +if (!Float.isNaN(cameraX)) xTrans = cameraX * 50 / newRotationRadius / this.width * this.screenPixelCount; +if (!Float.isNaN(cameraY)) yTrans = cameraY * 50 / newRotationRadius / this.height * this.screenPixelCount; +var pixelScale = (center == null ? this.scaleDefaultPixelsPerAngstrom : this.defaultScaleToScreen(newRotationRadius)); +if (floatSecondsTotal <= 0) { +this.setAll(center, matrixEnd, navCenter, zoom, xTrans, yTrans, newRotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY); +this.vwr.moveUpdate(floatSecondsTotal); +this.vwr.finalizeTransformParameters(); +return; +}try { +if (this.movetoThread == null) this.movetoThread = J.api.Interface.getOption("thread.MoveToThread", this.vwr, "tm"); +var nSteps = this.movetoThread.setManager(this, this.vwr, Clazz_newArray(-1, [center, matrixEnd, navCenter, Clazz_newFloatArray(-1, [floatSecondsTotal, zoom, xTrans, yTrans, newRotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY])])); +if (nSteps <= 0 || this.vwr.g.waitForMoveTo) { +if (nSteps > 0) this.movetoThread.setEval(eval); +this.movetoThread.run(); +if (!this.vwr.isSingleThreaded) this.movetoThread = null; +} else { +this.movetoThread.start(); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "J.api.JmolScriptEvaluator,~N,JU.P3,JU.T3,~N,JU.M3,~N,~N,~N,~N,JU.P3,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAll", +function(center, m, navCenter, zoom, xTrans, yTrans, rotationRadius, pixelScale, navDepth, xNav, yNav, cameraDepth, cameraX, cameraY){ +if (!Float.isNaN(m.m00)) this.setRotation(m); +if (center != null) this.moveRotationCenter(center, !this.windowCentered); +if (navCenter != null && this.mode == 1) this.navigationCenter.setT(navCenter); +if (!Float.isNaN(cameraDepth)) this.setCameraDepthPercent(cameraDepth, false); +if (!Float.isNaN(cameraX) && !Float.isNaN(cameraY)) this.setCamera(cameraX, cameraY); +if (!Float.isNaN(zoom)) this.zoomToPercent(zoom); +if (!Float.isNaN(rotationRadius)) this.modelRadius = rotationRadius; +if (!Float.isNaN(pixelScale)) this.scaleDefaultPixelsPerAngstrom = pixelScale; +if (!Float.isNaN(xTrans) && !Float.isNaN(yTrans)) { +this.translateToPercent('x', xTrans); +this.translateToPercent('y', yTrans); +}if (this.mode == 1) { +if (!Float.isNaN(xNav) && !Float.isNaN(yNav)) this.navTranslatePercentOrTo(0, xNav, yNav); +if (!Float.isNaN(navDepth)) this.setNavigationDepthPercent(navDepth); +}}, "JU.P3,JU.M3,JU.P3,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "stopMotion", +function(){ +this.movetoThread = null; +}); +Clazz_defineMethod(c$, "getRotationText", +function(){ +this.axisangleT.setM(this.matrixRotate); +var degrees = (this.axisangleT.angle * 57.29577951308232); +var sb = new JU.SB(); +this.vectorT.set(this.axisangleT.x, this.axisangleT.y, this.axisangleT.z); +if (degrees < 0.01) return "{0 0 1 0}"; +this.vectorT.normalize(); +this.vectorT.scale(1000); +sb.append("{"); +JV.TransformManager.truncate0(sb, this.vectorT.x); +JV.TransformManager.truncate0(sb, this.vectorT.y); +JV.TransformManager.truncate0(sb, this.vectorT.z); +JV.TransformManager.truncate2(sb, degrees); +sb.append("}"); +return sb.toString(); +}); +Clazz_defineMethod(c$, "getMoveToText", +function(timespan, addComments){ +this.finalizeTransformParameters(); +var sb = new JU.SB(); +sb.append("moveto "); +if (addComments) sb.append("/* time, axisAngle */ "); +sb.appendF(timespan); +sb.append(" ").append(this.getRotationText()); +if (addComments) sb.append(" /* zoom, translation */ "); +JV.TransformManager.truncate2(sb, this.zmPctSet); +JV.TransformManager.truncate2(sb, this.getTranslationXPercent()); +JV.TransformManager.truncate2(sb, this.getTranslationYPercent()); +sb.append(" "); +if (addComments) sb.append(" /* center, rotationRadius */ "); +sb.append(this.getCenterText()); +sb.append(" ").appendF(this.modelRadius); +sb.append(this.getNavigationText(addComments)); +if (addComments) sb.append(" /* cameraDepth, cameraX, cameraY */ "); +JV.TransformManager.truncate2(sb, this.cameraDepth); +JV.TransformManager.truncate2(sb, this.cameraSetting.x); +JV.TransformManager.truncate2(sb, this.cameraSetting.y); +sb.append(";"); +return sb.toString(); +}, "~N,~B"); +Clazz_defineMethod(c$, "getCenterText", +function(){ +return JU.Escape.eP(this.fixedRotationCenter); +}); +Clazz_defineMethod(c$, "getRotateXyzText", +function(){ +var sb = new JU.SB(); +var m20 = this.matrixRotate.m20; +var rY = -(Math.asin(m20) * 57.29577951308232); +var rX; +var rZ; +if (m20 > .999 || m20 < -0.999) { +rX = -(Math.atan2(this.matrixRotate.m12, this.matrixRotate.m11) * 57.29577951308232); +rZ = 0; +} else { +rX = (Math.atan2(this.matrixRotate.m21, this.matrixRotate.m22) * 57.29577951308232); +rZ = (Math.atan2(this.matrixRotate.m10, this.matrixRotate.m00) * 57.29577951308232); +}sb.append("reset"); +sb.append(";center ").append(this.getCenterText()); +if (rX != 0) { +sb.append("; rotate x"); +JV.TransformManager.truncate2(sb, rX); +}if (rY != 0) { +sb.append("; rotate y"); +JV.TransformManager.truncate2(sb, rY); +}if (rZ != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ); +}sb.append(";"); +this.addZoomTranslationNavigationText(sb); +return sb.toString(); +}); +Clazz_defineMethod(c$, "addZoomTranslationNavigationText", +function(sb){ +if (this.zmPct != 100) { +sb.append(" zoom"); +JV.TransformManager.truncate2(sb, this.zmPct); +sb.append(";"); +}var tX = this.getTranslationXPercent(); +if (tX != 0) { +sb.append(" translate x"); +JV.TransformManager.truncate2(sb, tX); +sb.append(";"); +}var tY = this.getTranslationYPercent(); +if (tY != 0) { +sb.append(" translate y"); +JV.TransformManager.truncate2(sb, tY); +sb.append(";"); +}if (this.modelRadius != this.rotationRadiusDefault || this.modelRadius == 10) { +sb.append(" set rotationRadius"); +JV.TransformManager.truncate2(sb, this.modelRadius); +sb.append(";"); +}if (this.mode == 1) { +sb.append("navigate 0 center ").append(JU.Escape.eP(this.navigationCenter)); +sb.append(";navigate 0 translate"); +JV.TransformManager.truncate2(sb, this.getNavigationOffsetPercent('X')); +JV.TransformManager.truncate2(sb, this.getNavigationOffsetPercent('Y')); +sb.append(";navigate 0 depth "); +JV.TransformManager.truncate2(sb, this.navigationDepthPercent); +sb.append(";"); +}}, "JU.SB"); +Clazz_defineMethod(c$, "getRotateZyzText", +function(iAddComment){ +var sb = new JU.SB(); +var m = this.vwr.ms.getInfoM("defaultOrientationMatrix"); +if (m == null) { +m = this.matrixRotate; +} else { +m = JU.M3.newM3(m); +m.invert(); +m.mul2(this.matrixRotate, m); +}var m22 = m.m22; +var rY = (Math.acos(m22) * 57.29577951308232); +var rZ1; +var rZ2; +if (m22 > .999 || m22 < -0.999) { +rZ1 = (Math.atan2(m.m10, m.m11) * 57.29577951308232); +rZ2 = 0; +} else { +rZ1 = (Math.atan2(m.m21, -m.m20) * 57.29577951308232); +rZ2 = (Math.atan2(m.m12, m.m02) * 57.29577951308232); +}if (rZ1 != 0 && rY != 0 && rZ2 != 0 && iAddComment) sb.append("#Follows Z-Y-Z convention for Euler angles\n"); +sb.append("reset"); +sb.append(";center ").append(this.getCenterText()); +if (rZ1 != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ1); +}if (rY != 0) { +sb.append("; rotate y"); +JV.TransformManager.truncate2(sb, rY); +}if (rZ2 != 0) { +sb.append("; rotate z"); +JV.TransformManager.truncate2(sb, rZ2); +}sb.append(";"); +this.addZoomTranslationNavigationText(sb); +return sb.toString(); +}, "~B"); +c$.truncate0 = Clazz_defineMethod(c$, "truncate0", +function(sb, val){ +sb.appendC(' '); +sb.appendI(Math.round(val)); +}, "JU.SB,~N"); +c$.truncate2 = Clazz_defineMethod(c$, "truncate2", +function(sb, val){ +sb.appendC(' '); +sb.appendF(Math.round(val * 100) / 100); +}, "JU.SB,~N"); +Clazz_defineMethod(c$, "setSpinXYZ", +function(x, y, z){ +if (!Float.isNaN(x)) this.spinX = x; +if (!Float.isNaN(y)) this.spinY = y; +if (!Float.isNaN(z)) this.spinZ = z; +if (this.isSpinInternal || this.isSpinFixed) this.clearSpin(); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setSpinFps", +function(value){ +if (value <= 0) value = 1; + else if (value > 50) value = 50; +this.spinFps = value; +}, "~N"); +Clazz_defineMethod(c$, "setNavXYZ", +function(x, y, z){ +if (!Float.isNaN(x)) this.navX = x; +if (!Float.isNaN(y)) this.navY = y; +if (!Float.isNaN(z)) this.navZ = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "clearSpin", +function(){ +this.setSpinOff(); +this.setNavOn(false); +this.isSpinInternal = false; +this.isSpinFixed = false; +}); +Clazz_defineMethod(c$, "setSpinOn", +function(){ +this.setSpin(null, true, 3.4028235E38, null, null, null, false); +}); +Clazz_defineMethod(c$, "setSpinOff", +function(){ +this.setSpin(null, false, 3.4028235E38, null, null, null, false); +}); +Clazz_defineMethod(c$, "setSpin", +function(eval, spinOn, endDegrees, endPositions, dihedralList, bsAtoms, isGesture){ +if (this.navOn && spinOn) this.setNavOn(false); +if (this.spinOn == spinOn) return; +this.spinOn = spinOn; +this.vwr.g.setB("_spinning", spinOn); +if (spinOn) { +if (this.spinThread == null) { +this.spinThread = J.api.Interface.getOption("thread.SpinThread", this.vwr, "tm"); +this.spinThread.setManager(this, this.vwr, Clazz_newArray(-1, [Float.$valueOf(endDegrees), endPositions, dihedralList, bsAtoms, isGesture ? Boolean.TRUE : null])); +this.spinIsGesture = isGesture; +if ((Float.isNaN(endDegrees) || endDegrees == 3.4028235E38 || !this.vwr.g.waitForMoveTo)) { +this.spinThread.start(); +} else { +this.spinThread.setEval(eval); +this.spinThread.run(); +}}} else if (this.spinThread != null) { +this.spinThread.reset(); +this.spinThread = null; +}}, "J.api.JmolScriptEvaluator,~B,~N,JU.Lst,~A,JU.BS,~B"); +Clazz_defineMethod(c$, "setNavOn", +function(navOn){ +if (Float.isNaN(this.navFps)) return; +var wasOn = this.navOn; +if (navOn && this.spinOn) this.setSpin(null, false, 0, null, null, null, false); +this.navOn = navOn; +this.vwr.g.setB("_navigating", navOn); +if (!navOn) this.navInterrupt(); +if (navOn) { +if (this.navX == 0 && this.navY == 0 && this.navZ == 0) this.navZ = 1; +if (this.navFps == 0) this.navFps = 10; +if (this.spinThread == null) { +this.spinThread = J.api.Interface.getOption("thread.SpinThread", this.vwr, "tm"); +this.spinThread.setManager(this, this.vwr, null); +this.spinThread.start(); +}} else if (wasOn) { +if (this.spinThread != null) { +this.spinThread.interrupt(); +this.spinThread = null; +}}}, "~B"); +Clazz_defineMethod(c$, "setVibrationScale", +function(scale){ +this.vibrationScale = scale; +}, "~N"); +Clazz_defineMethod(c$, "setVibrationPeriod", +function(period){ +if (Float.isNaN(period)) { +period = this.vibrationPeriod; +} else if (period == 0) { +this.vibrationPeriod = 0; +this.vibrationPeriodMs = 0; +} else { +this.vibrationPeriod = Math.abs(period); +this.vibrationPeriodMs = Clazz_floatToInt(this.vibrationPeriod * 1000); +if (period > 0) return; +period = -period; +}this.setVibrationOn(period > 0 && (this.vwr.ms.getLastVibrationVector(this.vwr.am.cmi, 0) >= 0)); +}, "~N"); +Clazz_defineMethod(c$, "setVibrationT", +function(t){ +this.vibrationT.x = this.vibrationT.y = this.vibrationT.z = t; +if (this.vibrationScale == 0) this.vibrationScale = this.vwr.g.vibrationScale; +}, "~N"); +Clazz_defineMethod(c$, "isVibrationOn", +function(){ +return this.vibrationOn; +}); +Clazz_defineMethod(c$, "setVibrationOn", +function(vibrationOn){ +if (!vibrationOn) { +if (this.vibrationThread != null) { +this.vibrationThread.interrupt(); +this.vibrationThread = null; +}this.vibrationOn = false; +this.vibrationT.x = 0; +return; +}if (this.vwr.ms.mc < 1) { +this.vibrationOn = false; +this.vibrationT.x = 0; +return; +}if (this.vibrationThread == null) { +this.vibrationThread = J.api.Interface.getOption("thread.VibrationThread", this.vwr, "tm"); +this.vibrationThread.setManager(this, this.vwr, null); +this.vibrationThread.start(); +}this.vibrationOn = true; +}, "~B"); +Clazz_defineMethod(c$, "clearVibration", +function(){ +this.setVibrationOn(false); +this.vibrationScale = 0; +}); +Clazz_defineMethod(c$, "setStereoMode2", +function(twoColors){ +this.stereoMode = J.c.STER.CUSTOM; +this.stereoColors = twoColors; +}, "~A"); +Clazz_defineMethod(c$, "setStereoMode", +function(stereoMode){ +this.stereoColors = null; +this.stereoMode = stereoMode; +this.stereoDoubleDTI = (stereoMode === J.c.STER.DTI); +this.stereoDoubleFull = (stereoMode === J.c.STER.DOUBLE); +}, "J.c.STER"); +Clazz_defineMethod(c$, "setStereoDegrees", +function(stereoDegrees){ +this.stereoDegrees = stereoDegrees; +this.stereoRadians = (stereoDegrees * 0.017453292519943295); +}, "~N"); +Clazz_defineMethod(c$, "getStereoRotationMatrix", +function(stereoFrame){ +this.stereoFrame = stereoFrame; +if (!stereoFrame) return this.matrixRotate; +this.matrixTemp3.setAsYRotation(-this.stereoRadians); +this.matrixStereo.mul2(this.matrixTemp3, this.matrixRotate); +return this.matrixStereo; +}, "~B"); +Clazz_defineMethod(c$, "isWindowCentered", +function(){ +return this.windowCentered; +}); +Clazz_defineMethod(c$, "setWindowCentered", +function(TF){ +this.windowCentered = TF; +this.resetNavigationPoint(true); +}, "~B"); +Clazz_defineMethod(c$, "setRotationRadius", +function(angstroms, doAll){ +angstroms = (this.modelRadius = (angstroms <= 0 ? this.vwr.ms.calcRotationRadius(this.vwr.am.cmi, this.fixedRotationCenter, true) : angstroms)); +if (doAll) this.vwr.setRotationRadius(angstroms, false); +return angstroms; +}, "~N,~B"); +Clazz_defineMethod(c$, "setRotationCenterAndRadiusXYZ", +function(newCenterOfRotation, andRadius){ +this.resetNavigationPoint(false); +if (newCenterOfRotation == null) { +this.setFixedRotationCenter(this.rotationCenterDefault); +this.modelRadius = this.rotationRadiusDefault; +return; +}this.setFixedRotationCenter(newCenterOfRotation); +if (andRadius && this.windowCentered) this.modelRadius = this.vwr.ms.calcRotationRadius(this.vwr.am.cmi, this.fixedRotationCenter, true); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "setNewRotationCenter", +function(center, doScale){ +if (center == null) center = this.rotationCenterDefault; +if (this.windowCentered) { +this.translateToPercent('x', 0); +this.translateToPercent('y', 0); +this.setRotationCenterAndRadiusXYZ(center, true); +if (doScale) this.resetFitToScreen(true); +} else { +this.moveRotationCenter(center, true); +}}, "JU.P3,~B"); +Clazz_defineMethod(c$, "moveRotationCenter", +function(center, toXY){ +this.setRotationCenterAndRadiusXYZ(center, false); +if (toXY) this.setRotationPointXY(this.fixedRotationCenter); +}, "JU.P3,~B"); +Clazz_defineMethod(c$, "setCenter", +function(){ +this.setRotationCenterAndRadiusXYZ(this.fixedRotationCenter, true); +}); +Clazz_defineMethod(c$, "setCenterAt", +function(relativeTo, pt){ +var pt1 = JU.P3.newP(pt); +switch (relativeTo) { +case 1073741826: +break; +case 96: +pt1.add(this.vwr.ms.getAverageAtomPoint()); +break; +case 1812599299: +pt1.add(this.vwr.getBoundBoxCenter()); +break; +default: +pt1.setT(this.rotationCenterDefault); +break; +} +this.setRotationCenterAndRadiusXYZ(pt1, true); +this.resetFitToScreen(true); +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "setFrameOffset", +function(modelIndex){ +if (this.frameOffsets == null || modelIndex < 0 || modelIndex >= this.frameOffsets.length) this.frameOffset.set(0, 0, 0); + else this.frameOffset.setT(this.frameOffsets[modelIndex]); +}, "~N"); +Clazz_defineMethod(c$, "setSelectedTranslation", +function(bsAtoms, xyz, xy, x){ +if (!this.perspectiveDepth) { +var v = new JU.V3(); +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +v.set(x, 0, 0); +break; +case 89: +case 121: +v.set(0, x, 0); +break; +case 90: +case 122: +v.set(0, 0, x); +break; +} +this.vwr.moveAtoms(null, null, this.matrixRotate, v, this.internalRotationCenter, false, bsAtoms, true, false); +return; +}this.bsSelectedAtoms = bsAtoms; +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +this.ptOffset.x += xy; +break; +case 89: +case 121: +this.ptOffset.y += xy; +break; +case 90: +case 122: +this.ptOffset.z += xy; +break; +} +}, "JU.BS,~S,~N,~N"); +Clazz_defineMethod(c$, "setNavFps", +function(navFps){ +this.navFps = navFps; +}, "~N"); +Clazz_defineMethod(c$, "calcCameraFactors", +function(){ +if (Float.isNaN(this.cameraDepth)) { +this.cameraDepth = this.cameraDepthSetting; +this.zoomFactor = 3.4028235E38; +}this.cameraDistance = this.cameraDepth * this.screenPixelCount; +this.referencePlaneOffset = this.cameraDistance + this.screenPixelCount / 2; +this.scalePixelsPerAngstrom = (this.scale3D && !this.perspectiveDepth && this.mode != 1 ? 72 / this.scale3DAngstromsPerInch * (this.antialias ? 2 : 1) : this.screenPixelCount / this.visualRangeAngstroms); +if (this.mode != 1) this.mode = (this.camera.z == 0 ? 0 : 2); +this.perspectiveShiftXY.set(this.camera.z == 0 ? 0 : this.camera.x * this.scalePixelsPerAngstrom / this.screenWidth * 100, this.camera.z == 0 ? 0 : this.camera.y * this.scalePixelsPerAngstrom / this.screenHeight * 100, 0); +this.modelRadiusPixels = this.modelRadius * this.scalePixelsPerAngstrom; +var offset100 = (2 * this.modelRadius) / this.visualRangeAngstroms * this.referencePlaneOffset; +if (this.mode == 1) { +this.calcNavCameraFactors(offset100); +return; +}this.zoomFactor = 3.4028235E38; +this.modelCenterOffset = this.referencePlaneOffset; +if (!this.scale3D || this.perspectiveDepth) this.scalePixelsPerAngstrom *= (this.modelCenterOffset / offset100) * this.zmPct / 100; +this.modelRadiusPixels = this.modelRadius * this.scalePixelsPerAngstrom; +}); +Clazz_defineMethod(c$, "calcNavCameraFactors", +function(offset100){ +if (this.zoomFactor == 3.4028235E38) { +if (this.zmPct > 10000) this.zmPct = 10000; +this.modelCenterOffset = offset100 * 100 / this.zmPct; +} else if (this.prevZoomSetting != this.zmPctSet) { +if (this.zoomRatio == 0) this.modelCenterOffset = offset100 * 100 / this.zmPctSet; + else this.modelCenterOffset += (1 - this.zoomRatio) * this.referencePlaneOffset; +this.navMode = -1; +}this.prevZoomSetting = this.zmPctSet; +this.zoomFactor = this.modelCenterOffset / this.referencePlaneOffset; +this.zmPct = (this.zoomFactor == 0 ? 10000 : offset100 / this.modelCenterOffset * 100); +}, "~N"); +Clazz_defineMethod(c$, "getPerspectiveFactor", +function(z){ +return (z <= 0 ? this.referencePlaneOffset : this.referencePlaneOffset / z); +}, "~N"); +Clazz_defineMethod(c$, "unTransformPoint", +function(screenPt, coordPt){ +this.untransformedPoint.setT(screenPt); +switch (this.mode) { +case 1: +this.untransformedPoint.x -= this.navigationOffset.x; +this.untransformedPoint.y -= this.navigationOffset.y; +break; +case 2: +this.fScrPt.x += this.perspectiveShiftXY.x; +this.fScrPt.y += this.perspectiveShiftXY.y; +case 0: +this.untransformedPoint.x -= this.fixedRotationOffset.x; +this.untransformedPoint.y -= this.fixedRotationOffset.y; +} +if (this.perspectiveDepth) { +var factor = this.getPerspectiveFactor(this.untransformedPoint.z); +this.untransformedPoint.x /= factor; +this.untransformedPoint.y /= factor; +}switch (this.mode) { +case 1: +this.untransformedPoint.x += this.navigationShiftXY.x; +this.untransformedPoint.y += this.navigationShiftXY.y; +break; +case 2: +this.untransformedPoint.x -= this.perspectiveShiftXY.x; +this.untransformedPoint.y -= this.perspectiveShiftXY.y; +break; +} +this.matrixTransformInv.rotTrans2(this.untransformedPoint, coordPt); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "resetNavigationPoint", +function(doResetSlab){ +if (this.zmPct < 5 && this.mode != 1) { +this.perspectiveDepth = true; +this.mode = 1; +return; +}if (this.mode == 1) { +this.navMode = 1; +this.slabPercentSetting = 0; +this.perspectiveDepth = true; +} else if (doResetSlab) { +this.slabPercentSetting = 100; +}this.vwr.setFloatProperty("slabRange", 0); +if (doResetSlab) { +this.setSlabEnabled(this.mode == 1); +}this.zoomFactor = 3.4028235E38; +this.zmPctSet = this.zmPct; +}, "~B"); +Clazz_defineMethod(c$, "setNavigatePt", +function(pt){ +this.navigationCenter.setT(pt); +this.navMode = 3; +this.navigating = true; +this.finalizeTransformParameters(); +this.navigating = false; +}, "JU.P3"); +Clazz_defineMethod(c$, "setNavigationSlabOffsetPercent", +function(percent){ +this.vwr.g.setF("navigationSlab", percent); +this.calcCameraFactors(); +this.navigationSlabOffset = percent / 50 * this.modelRadiusPixels; +}, "~N"); +Clazz_defineMethod(c$, "getNavigationOffset", +function(){ +this.transformPt3f(this.navigationCenter, this.navigationOffset); +return this.navigationOffset; +}); +Clazz_defineMethod(c$, "getNavPtHeight", +function(){ +return this.height / 2; +}); +Clazz_defineMethod(c$, "getNavigationOffsetPercent", +function(XorY){ +this.getNavigationOffset(); +if (this.width == 0 || this.height == 0) return 0; +return (XorY == 'X' ? (this.navigationOffset.x - this.width / 2) * 100 / this.width : (this.navigationOffset.y - this.getNavPtHeight()) * 100 / this.height); +}, "~S"); +Clazz_defineMethod(c$, "getNavigationText", +function(addComments){ +var s = (addComments ? " /* navigation center, translation, depth */ " : " "); +if (this.mode != 1) return s + "{0 0 0} 0 0 0"; +this.getNavigationOffset(); +return s + JU.Escape.eP(this.navigationCenter) + " " + this.getNavigationOffsetPercent('X') + " " + this.getNavigationOffsetPercent('Y') + " " + this.navigationDepthPercent; +}, "~B"); +Clazz_defineMethod(c$, "setScreenParameters", +function(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom){ +var pt = (this.mode == 1 ? JU.P3.newP(this.navigationCenter) : null); +var ptoff = JU.P3.newP(this.navigationOffset); +ptoff.x = ptoff.x / this.width; +ptoff.y = ptoff.y / this.height; +this.setScreenParameters0(screenWidth, screenHeight, useZoomLarge, antialias, resetSlab, resetZoom); +if (pt != null) { +this.navigationCenter.setT(pt); +this.navTranslatePercentOrTo(-1, ptoff.x * this.width, ptoff.y * this.height); +this.setNavigatePt(pt); +}}, "~N,~N,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "navInterrupt", +function(){ +if (this.nav != null) this.nav.interrupt(); +}); +Clazz_defineMethod(c$, "getNav", +function(){ +if (this.nav != null) return true; +this.nav = J.api.Interface.getOption("navigate.Navigator", this.vwr, "tm"); +if (this.nav == null) return false; +this.nav.set(this, this.vwr); +return true; +}); +Clazz_defineMethod(c$, "navigateList", +function(eval, list){ +if (this.getNav()) this.nav.navigateList(eval, list); +}, "J.api.JmolScriptEvaluator,JU.Lst"); +Clazz_defineMethod(c$, "navigateAxis", +function(rotAxis, degrees){ +if (this.getNav()) this.nav.navigateAxis(rotAxis, degrees); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "setNavigationOffsetRelative", +function(){ +if (this.getNav()) this.nav.setNavigationOffsetRelative(); +}); +Clazz_defineMethod(c$, "navigateKey", +function(keyCode, modifiers){ +if (this.getNav()) this.nav.navigateKey(keyCode, modifiers); +}, "~N,~N"); +Clazz_defineMethod(c$, "setNavigationDepthPercent", +function(percent){ +if (this.getNav()) this.nav.setNavigationDepthPercent(percent); +}, "~N"); +Clazz_defineMethod(c$, "navTranslatePercentOrTo", +function(seconds, x, y){ +if (this.getNav()) this.nav.navTranslatePercentOrTo(seconds, x, y); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "calcNavigationPoint", +function(){ +if (this.getNav()) this.nav.calcNavigationPoint(); +}); +Clazz_defineMethod(c$, "getNavigationState", +function(){ +return (this.mode == 1 && this.getNav() ? this.nav.getNavigationState() : ""); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["java.lang.Enum", "J.api.JmolViewer", "$.PlatformViewer", "J.atomdata.AtomDataServer", "java.util.Hashtable", "JU.P3"], "JV.Viewer", ["java.util.Arrays", "JU.AU", "$.BS", "$.CU", "$.DF", "$.Lst", "$.P3i", "$.PT", "$.Quat", "$.Rdr", "$.SB", "J.adapter.smarter.SmarterJmolAdapter", "J.api.Interface", "J.atomdata.RadiusData", "J.c.FIL", "$.STER", "$.VDW", "J.i18n.GT", "JM.Measurement", "$.ModelSet", "JS.SV", "$.T", "J.thread.TimeoutThread", "JU.BSUtil", "$.C", "$.CommandHistory", "$.Elements", "$.Escape", "$.GData", "$.JmolMolecule", "$.Logger", "$.Parser", "$.TempArray", "JV.ActionManager", "$.AnimationManager", "$.ColorManager", "$.FileManager", "$.GlobalSettings", "$.JC", "$.ModelManager", "$.SelectionManager", "$.ShapeManager", "$.StateManager", "$.StatusManager", "$.TransformManager", "JV.binding.Binding"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.testAsync = false; +this.autoExit = false; +this.haveDisplay = false; +this.isJSNoAWT = false; +this.isWebGL = false; +this.isSingleThreaded = false; +this.queueOnHold = false; +this.fullName = ""; +this.compiler = null; +this.definedAtomSets = null; +this.ms = null; +this.fm = null; +this.isApplet = false; +this.isJNLP = false; +this.isSyntaxAndFileCheck = false; +this.isSyntaxCheck = false; +this.listCommands = false; +this.mustRender = false; +this.htmlName = ""; +this.appletName = ""; +this.tryPt = 0; +this.insertedCommand = ""; +this.gdata = null; +this.html5Applet = null; +this.acm = null; +this.am = null; +this.cm = null; +this.dm = null; +this.shm = null; +this.slm = null; +this.rm = null; +this.g = null; +this.sm = null; +this.tm = null; +this.syncId = ""; +this.logFilePath = ""; +this.allowScripting = false; +this.isPrintOnly = false; +this.isSignedApplet = false; +this.isSignedAppletLocal = false; +this.isSilent = false; +this.multiTouch = false; +this.noGraphicsAllowed = false; +this.useCommandThread = false; +this.commandOptions = null; +this.vwrOptions = null; +this.display = null; +this.modelAdapter = null; +this.access = null; +this.commandHistory = null; +this.mm = null; +this.stm = null; +this.scm = null; +this.eval = null; +this.tempArray = null; +this.allowArrayDotNotation = false; +this.async = false; +this.executor = null; +this.screenWidth = 0; +this.screenHeight = 0; +this.defaultVdw = null; +this.rd = null; +this.chainMap = null; +this.chainList = null; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.privateKey = 0; +this.dataOnly = false; +this.maximumSize = 2147483647; +this.gRight = null; +this.isStereoSlave = false; +this.imageFontScaling = 1; +this.antialiased = false; +this.prevFrame = -2147483648; +this.prevMorphModel = 0; +this.haveJDX = false; +this.jsv = null; +this.outputManager = null; +this.jzt = null; +this.isPreviewOnly = false; +this.headless = false; +this.movableBitSet = null; +this.hasSelected = false; +this.mouse = null; +this.ligandModels = null; +this.ligandModelSet = null; +this.annotationParser = null; +this.dssrParser = null; +this.minimizer = null; +this.smilesMatcher = null; +this.jsc = null; +this.lastData = null; +this.motionEventNumber = 0; +this.inMotion = false; +this.refreshing = true; +this.axesAreTainted = false; +this.captureParams = null; +this.jsParams = null; +this.cirChecked = false; +this.hoverAtomIndex = -1; +this.hoverText = null; +this.hoverLabel = "%U"; +this.hoverEnabled = true; +this.currentCursor = 0; +this.ptTemp = null; +this.selectionHalosEnabled = false; +this.frankOn = true; +this.noFrankEcho = true; +this.scriptEditorVisible = false; +this.appConsole = null; +this.scriptEditor = null; +this.jmolpopup = null; +this.modelkit = null; +this.headlessImageParams = null; +this.pm = null; +this.isTainted = true; +this.movingSelected = false; +this.showSelected = false; +this.ptScreen = null; +this.ptScreenNew = null; +this.ptNew = null; +this.atomHighlighted = -1; +this.creatingImage = false; +this.bsUserVdws = null; +this.userVdws = null; +this.userVdwMars = null; +this.currentShapeID = -1; +this.currentShapeState = null; +this.localFunctions = null; +this.$isKiosk = false; +this.displayLoadErrors = true; +this.$isParallel = false; +this.stateScriptVersionInt = 2147483647; +this.jsExporter3D = null; +this.timeouts = null; +this.chainCaseSpecified = false; +this.nmrCalculation = null; +this.logFileName = null; +this.jbr = null; +this.jcm = null; +this.jsonParser = null; +this.triangulator = null; +this.nboParser = null; +this.macros = null; +this.consoleFontScale = 1; +Clazz_instantialize(this, arguments);}, JV, "Viewer", J.api.JmolViewer, [J.atomdata.AtomDataServer, J.api.PlatformViewer]); +Clazz_prepareFields (c$, function(){ +this.ptScreen = new JU.P3(); +this.ptScreenNew = new JU.P3(); +this.ptNew = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(info){ +Clazz_superConstructor (this, JV.Viewer, []); +this.commandHistory = new JU.CommandHistory(); +this.rd = new J.atomdata.RadiusData(null, 0, null, null); +this.defaultVdw = J.c.VDW.JMOL; +this.localFunctions = new java.util.Hashtable(); +this.privateKey = Math.random(); +this.chainMap = new java.util.Hashtable(); +this.chainList = new JU.Lst(); +this.setOptions(info); +}, "java.util.Map"); +Clazz_defineMethod(c$, "finalize", +function(){ +if (JU.Logger.debugging) JU.Logger.debug("vwr finalize " + this); +Clazz_superCall(this, JV.Viewer, "finalize", []); +}); +Clazz_defineMethod(c$, "setInsertedCommand", +function(strScript){ +this.insertedCommand = strScript; +}, "~S"); +c$.getJmolVersion = Clazz_overrideMethod(c$, "getJmolVersion", +function(){ +return (JV.Viewer.version_date == null ? JV.Viewer.version_date = JV.JC.version + " " + JV.JC.date : JV.Viewer.version_date); +}); +c$.allocateViewer = Clazz_defineMethod(c$, "allocateViewer", +function(display, modelAdapter, fullName, documentBase, codeBase, commandOptions, statusListener, implementedPlatform){ +var info = new java.util.Hashtable(); +info.put("display", display); +info.put("adapter", modelAdapter); +info.put("statusListener", statusListener); +info.put("platform", implementedPlatform); +info.put("options", commandOptions); +info.put("fullName", fullName); +info.put("documentBase", documentBase); +info.put("codeBase", codeBase); +return new JV.Viewer(info); +}, "~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform"); +Clazz_defineMethod(c$, "haveAccess", +function(a){ +return this.access === a; +}, "JV.Viewer.ACCESS"); +Clazz_overrideMethod(c$, "getModelAdapter", +function(){ +return (this.modelAdapter == null ? this.modelAdapter = new J.adapter.smarter.SmarterJmolAdapter() : this.modelAdapter); +}); +Clazz_overrideMethod(c$, "getSmartsMatch", +function(smarts, bsSelected){ +if (bsSelected == null) bsSelected = this.bsA(); +return this.getSmilesMatcher().getSubstructureSet(smarts, this.ms.at, this.ms.ac, bsSelected, 2); +}, "~S,JU.BS"); +Clazz_defineMethod(c$, "isSubstructure", +function(smarts, smiles){ +try { +var map = this.getSmilesMatcher().find(smarts, smiles, 10); +return map != null && map.length > 0; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~S,~S"); +Clazz_defineMethod(c$, "hasStructure", +function(pattern, smiles, isSmarts){ +try { +var ret = this.getSmilesMatcher().hasStructure(pattern, Clazz_newArray(-1, [smiles]), (isSmarts ? 2 : 1) | 8); +return ret[0] == 1; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getSmartsMatchForNodes", +function(smarts, atoms){ +return this.getSmilesMatcher().getSubstructureSet(smarts, atoms, atoms.length, null, 2); +}, "~S,~A"); +Clazz_defineMethod(c$, "getSmartsMap", +function(smilesOrSmarts, bsSelected, flags){ +if (bsSelected == null) bsSelected = this.bsA(); +if (flags == 0) flags = 2; +return this.getSmilesMatcher().getCorrelationMaps(smilesOrSmarts, this.ms.at, this.ms.ac, bsSelected, flags); +}, "~S,JU.BS,~N"); +Clazz_defineMethod(c$, "setOptions", +function(info){ +this.vwrOptions = info; +if (JU.Logger.debugging) { +JU.Logger.debug("Viewer constructor " + this); +}this.modelAdapter = info.get("adapter"); +var statusListener = info.get("statusListener"); +this.fullName = info.get("fullName"); +if (this.fullName == null) this.fullName = ""; +var o = info.get("codePath"); +if (o == null) o = "../java/"; +JV.Viewer.appletCodeBase = o.toString(); +JV.Viewer.appletIdiomaBase = JV.Viewer.appletCodeBase.substring(0, JV.Viewer.appletCodeBase.lastIndexOf("/", JV.Viewer.appletCodeBase.length - 2) + 1) + "idioma"; +o = info.get("documentBase"); +JV.Viewer.appletDocumentBase = (o == null ? "" : o.toString()); +o = info.get("options"); +this.commandOptions = (o == null ? "" : o.toString()); +if (info.containsKey("debug") || this.commandOptions.indexOf("-debug") >= 0) JU.Logger.setLogLevel(5); +if (this.isApplet && info.containsKey("maximumSize")) this.setMaximumSize((info.get("maximumSize")).intValue()); +this.isJNLP = this.checkOption2("isJNLP", "-jnlp"); +if (this.isJNLP) JU.Logger.info("setting JNLP mode TRUE"); +this.isSignedApplet = this.isJNLP || this.checkOption2("signedApplet", "-signed"); +this.isApplet = this.isSignedApplet || this.checkOption2("applet", "-applet"); +this.allowScripting = !this.checkOption2("noscripting", "-noscripting"); +var i = this.fullName.indexOf("__"); +this.htmlName = (i < 0 ? this.fullName : this.fullName.substring(0, i)); +this.appletName = JU.PT.split(this.htmlName + "_", "_")[0]; +this.syncId = (i < 0 ? "" : this.fullName.substring(i + 2, this.fullName.length - 2)); +this.access = (this.checkOption2("access:READSPT", "-r") ? JV.Viewer.ACCESS.READSPT : this.checkOption2("access:NONE", "-R") ? JV.Viewer.ACCESS.NONE : JV.Viewer.ACCESS.ALL); +this.isPreviewOnly = info.containsKey("previewOnly"); +if (this.isPreviewOnly) info.remove("previewOnly"); +this.isPrintOnly = this.checkOption2("printOnly", "-p"); +this.dataOnly = this.checkOption2("isDataOnly", "\0"); +this.autoExit = this.checkOption2("exit", "-x"); +o = info.get("platform"); +var platform = "unknown"; +if (o == null) { +o = (this.commandOptions.contains("platform=") ? this.commandOptions.substring(this.commandOptions.indexOf("platform=") + 9) : "J.awt.Platform"); +}if ((typeof(o)=='string')) { +platform = o; +this.isWebGL = (platform.indexOf(".awtjs.") >= 0); +JV.Viewer.isJS = this.isJSNoAWT = this.isWebGL || (platform.indexOf(".awtjs2d.") >= 0); +this.async = !this.dataOnly && !this.autoExit && (this.testAsync || JV.Viewer.isJS && info.containsKey("async")); +var applet = null; +var jmol = null; +var javaver = "?"; +{ +if(self.Jmol) { jmol = Jmol; applet = +Jmol._applets[this.htmlName.split("_object")[0]]; javaver = +Jmol._version; } +}if (javaver != null) { +this.html5Applet = applet; +JV.Viewer.jmolObject = jmol; +JV.Viewer.strJavaVersion = javaver; +JV.Viewer.strJavaVendor = "Java2Script " + (this.isWebGL ? "(WebGL)" : "(HTML5)"); +}o = J.api.Interface.getInterface(platform, this, "setOptions"); +}this.apiPlatform = o; +this.display = info.get("display"); +this.isSingleThreaded = this.apiPlatform.isSingleThreaded(); +this.noGraphicsAllowed = this.checkOption2("noDisplay", "-n"); +this.headless = this.apiPlatform.isHeadless(); +this.haveDisplay = (this.isWebGL || this.display != null && !this.noGraphicsAllowed && !this.headless && !this.dataOnly); +this.noGraphicsAllowed = new Boolean (this.noGraphicsAllowed & (this.display == null)).valueOf(); +this.headless = new Boolean (this.headless | this.noGraphicsAllowed).valueOf(); +if (this.haveDisplay) { +this.mustRender = true; +this.multiTouch = this.checkOption2("multiTouch", "-multitouch"); +{ +if (!this.isWebGL) this.display = +document.getElementById(this.display); +}} else { +this.display = null; +}this.apiPlatform.setViewer(this, this.display); +o = info.get("graphicsAdapter"); +if (o == null && !this.isWebGL) o = J.api.Interface.getOption("g3d.Graphics3D", this, "setOptions"); +this.gdata = (o == null && (this.isWebGL || !JV.Viewer.isJS) ? new JU.GData() : o); +this.gdata.initialize(this, this.apiPlatform); +this.stm = new JV.StateManager(this); +this.cm = new JV.ColorManager(this, this.gdata); +this.sm = new JV.StatusManager(this); +var is4D = info.containsKey("4DMouse"); +this.tm = JV.TransformManager.getTransformManager(this, 2147483647, 0, is4D); +this.slm = new JV.SelectionManager(this); +if (this.haveDisplay) { +this.acm = (this.multiTouch ? J.api.Interface.getOption("multitouch.ActionManagerMT", null, null) : new JV.ActionManager()); +this.acm.setViewer(this, this.commandOptions + "-multitouch-" + info.get("multiTouch")); +this.mouse = this.apiPlatform.getMouseManager(this.privateKey, this.display); +if (this.multiTouch && !this.checkOption2("-simulated", "-simulated")) this.apiPlatform.setTransparentCursor(this.display); +}this.mm = new JV.ModelManager(this); +this.shm = new JV.ShapeManager(this); +this.tempArray = new JU.TempArray(); +this.am = new JV.AnimationManager(this); +o = info.get("repaintManager"); +if (o == null) o = J.api.Interface.getOption("render.RepaintManager", this, "setOptions"); +if (JV.Viewer.isJS || o != null && !o.equals("")) (this.rm = o).set(this, this.shm); +this.ms = new JM.ModelSet(this, null); +this.initialize(true, false); +this.fm = new JV.FileManager(this); +this.definedAtomSets = new java.util.Hashtable(); +this.setJmolStatusListener(statusListener); +if (this.isApplet) { +JU.Logger.info("vwrOptions: \n" + JU.Escape.escapeMap(this.vwrOptions)); +var path = this.vwrOptions.get("documentLocation"); +if (!JV.Viewer.isJS && path != null && path.startsWith("file:/")) { +path = path.substring(0, path.substring(0, (path + "?").indexOf("?")).lastIndexOf("/")); +JU.Logger.info("setting current directory to " + path); +this.cd(path); +}path = JV.Viewer.appletDocumentBase; +i = path.indexOf("#"); +if (i >= 0) path = path.substring(0, i); +i = path.lastIndexOf("?"); +if (i >= 0) path = path.substring(0, i); +i = path.lastIndexOf("/"); +if (i >= 0) path = path.substring(0, i); +JV.Viewer.jsDocumentBase = path; +this.fm.setAppletContext(JV.Viewer.appletDocumentBase); +var appletProxy = info.get("appletProxy"); +if (appletProxy != null) this.setStringProperty("appletProxy", appletProxy); +if (this.isSignedApplet) { +this.logFilePath = JU.PT.rep(JV.Viewer.appletCodeBase, "file://", ""); +this.logFilePath = JU.PT.rep(this.logFilePath, "file:/", ""); +if (this.logFilePath.indexOf("//") >= 0) this.logFilePath = null; + else this.isSignedAppletLocal = true; +} else if (!JV.Viewer.isJS) { +this.logFilePath = null; +} new J.i18n.GT(this, info.get("language")); +if (JV.Viewer.isJS) this.acm.createActions(); +} else { +this.gdata.setBackgroundTransparent(this.checkOption2("backgroundTransparent", "-b")); +this.isSilent = this.checkOption2("silent", "-i"); +if (this.isSilent) JU.Logger.setLogLevel(3); +if (this.headless && !this.isSilent) JU.Logger.info("Operating headless display=" + this.display + " nographicsallowed=" + this.noGraphicsAllowed); +this.isSyntaxAndFileCheck = this.checkOption2("checkLoad", "-C"); +this.isSyntaxCheck = this.isSyntaxAndFileCheck || this.checkOption2("check", "-c"); +this.listCommands = this.checkOption2("listCommands", "-l"); +this.cd("."); +if (this.headless) { +this.headlessImageParams = info.get("headlessImage"); +o = info.get("headlistMaxTimeMs"); +if (o == null) o = Integer.$valueOf(60000); +this.setTimeout("" + Math.random(), (o).intValue(), "exitJmol"); +}}this.useCommandThread = !this.headless && this.checkOption2("useCommandThread", "-threaded"); +this.setStartupBooleans(); +this.setIntProperty("_nProcessors", JV.Viewer.nProcessors); +if (!this.isSilent) { +JU.Logger.info("(C) 2015 Jmol Development" + "\nJmol Version: " + JV.Viewer.getJmolVersion() + "\njava.vendor: " + JV.Viewer.strJavaVendor + "\njava.version: " + JV.Viewer.strJavaVersion + "\nos.name: " + JV.Viewer.strOSName + "\nAccess: " + this.access + "\nmemory: " + this.getP("_memory") + "\nprocessors available: " + JV.Viewer.nProcessors + "\nuseCommandThread: " + this.useCommandThread + (!this.isApplet ? "" : "\nappletId:" + this.htmlName + (this.isSignedApplet ? " (signed)" : ""))); +}this.zap(false, true, false); +this.g.setO("language", J.i18n.GT.getLanguage()); +this.g.setO("_hoverLabel", this.hoverLabel); +this.stm.setJmolDefaults(); +JU.Elements.covalentVersion = 1; +this.allowArrayDotNotation = true; +if (this.allowScripting) this.getScriptManager(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setMaximumSize", +function(x){ +this.maximumSize = Math.max(x, 100); +}, "~N"); +Clazz_defineMethod(c$, "setStereo", +function(isStereoSlave, gRight){ +this.isStereoSlave = isStereoSlave; +this.gRight = gRight; +}, "~B,~O"); +Clazz_defineMethod(c$, "getMenu", +function(type){ +this.getPopupMenu(); +if (type.equals("\0")) { +this.popupMenu(this.screenWidth - 120, 0, 'j'); +return "OK"; +}return (this.jmolpopup == null ? "" : this.jmolpopup.jpiGetMenuAsString("Jmol version " + JV.Viewer.getJmolVersion() + "|_GET_MENU|" + type)); +}, "~S"); +Clazz_overrideMethod(c$, "resizeInnerPanel", +function(width, height){ +if (!this.autoExit && this.haveDisplay) return this.sm.resizeInnerPanel(width, height); +this.setScreenDimension(width, height); +return Clazz_newIntArray(-1, [this.screenWidth, this.screenHeight]); +}, "~N,~N"); +Clazz_overrideMethod(c$, "setScreenDimension", +function(width, height){ +height = Math.min(height, this.maximumSize); +width = Math.min(width, this.maximumSize); +if (this.tm.stereoDoubleFull) width = Clazz_doubleToInt((width + 1) / 2); +if (this.screenWidth == width && this.screenHeight == height) return; +this.resizeImage(width, height, false, false, true); +}, "~N,~N"); +Clazz_defineMethod(c$, "resizeImage", +function(width, height, isImageWrite, isExport, isReset){ +if (!isImageWrite && this.creatingImage) return; +var wasAntialiased = this.antialiased; +this.antialiased = (isReset ? this.g.antialiasDisplay && this.checkMotionRendering(603979786) : isImageWrite && !isExport ? this.g.antialiasImages : false); +if (!isExport && !isImageWrite && (width > 0 || wasAntialiased != this.antialiased)) this.setShapeProperty(5, "clearBoxes", null); +this.imageFontScaling = (this.antialiased ? 2 : 1) * (isReset || this.tm.scale3D || width <= 0 ? 1 : (this.g.zoomLarge == (height > width) ? height : width) * 1 / this.getScreenDim()); +if (width > 0) { +this.screenWidth = width; +this.screenHeight = height; +if (!isImageWrite) { +this.g.setI("_width", width); +this.g.setI("_height", height); +}} else { +width = (this.screenWidth == 0 ? this.screenWidth = 500 : this.screenWidth); +height = (this.screenHeight == 0 ? this.screenHeight = 500 : this.screenHeight); +}this.tm.setScreenParameters(width, height, isImageWrite || isReset ? this.g.zoomLarge : false, this.antialiased, false, false); +this.gdata.setWindowParameters(width, height, this.antialiased); +this.setModelkitPropertySafely("frameresized", null); +if (width > 0 && !isImageWrite) this.setStatusResized(width, height); +}, "~N,~N,~B,~B,~B"); +Clazz_overrideMethod(c$, "getScreenWidth", +function(){ +return this.screenWidth; +}); +Clazz_overrideMethod(c$, "getScreenHeight", +function(){ +return this.screenHeight; +}); +Clazz_defineMethod(c$, "getScreenDim", +function(){ +return (this.g.zoomLarge == (this.screenHeight > this.screenWidth) ? this.screenHeight : this.screenWidth); +}); +Clazz_defineMethod(c$, "setWidthHeightVar", +function(){ +this.g.setI("_width", this.screenWidth); +this.g.setI("_height", this.screenHeight); +}); +Clazz_defineMethod(c$, "getBoundBoxCenterX", +function(){ +return Clazz_doubleToInt(this.screenWidth / 2); +}); +Clazz_defineMethod(c$, "getBoundBoxCenterY", +function(){ +return Clazz_doubleToInt(this.screenHeight / 2); +}); +Clazz_defineMethod(c$, "updateWindow", +function(width, height){ +if (!this.refreshing || this.creatingImage) return (this.refreshing ? false : !JV.Viewer.isJS); +if (this.isTainted || this.tm.slabEnabled) this.setModelVisibility(); +this.isTainted = false; +if (this.rm != null) { +if (width != 0) this.setScreenDimension(width, height); +}return true; +}, "~N,~N"); +Clazz_defineMethod(c$, "getImage", +function(isStereo, isImageWrite){ +var image = null; +try { +this.beginRendering(isStereo, isImageWrite); +this.render(); +this.gdata.endRendering(); +image = this.gdata.getScreenImage(isImageWrite); +} catch (e$$) { +if (Clazz_exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.gdata.getScreenImage(isImageWrite); +this.handleError(er, false); +this.setErrorMessage("Error during rendering: " + er, null); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.out.println("render error" + e); +} +} else { +throw e$$; +} +} +return image; +}, "~B,~B"); +Clazz_defineMethod(c$, "beginRendering", +function(isStereo, isImageWrite){ +this.gdata.beginRendering(this.tm.getStereoRotationMatrix(isStereo), this.g.translucent, isImageWrite, !this.checkMotionRendering(603979967)); +}, "~B,~B"); +Clazz_defineMethod(c$, "render", +function(){ +if (this.mm.modelSet == null || !this.mustRender || !this.refreshing && !this.creatingImage || this.rm == null) return; +var antialias2 = this.antialiased && this.g.antialiasTranslucent; +var navMinMax = this.shm.finalizeAtoms(this.tm.bsSelectedAtoms, true); +if (this.isWebGL) { +this.rm.renderExport(this.gdata, this.ms, this.jsParams); +this.notifyViewerRepaintDone(); +return; +}this.rm.render(this.gdata, this.ms, true, navMinMax); +if (this.gdata.setPass2(antialias2)) { +this.tm.setAntialias(antialias2); +this.rm.render(this.gdata, this.ms, false, null); +this.tm.setAntialias(this.antialiased); +}}); +Clazz_defineMethod(c$, "drawImage", +function(graphic, img, x, y, isDTI){ +if (graphic != null && img != null) { +this.apiPlatform.drawImage(graphic, img, x, y, this.screenWidth, this.screenHeight, isDTI); +}this.gdata.releaseScreenImage(); +}, "~O,~O,~N,~N,~B"); +Clazz_defineMethod(c$, "getScreenImage", +function(){ +return this.getScreenImageBuffer(null, true); +}); +Clazz_overrideMethod(c$, "getScreenImageBuffer", +function(g, isImageWrite){ +if (this.isWebGL) return (isImageWrite ? this.apiPlatform.allocateRgbImage(0, 0, null, 0, false, true) : null); +var isDouble = this.tm.stereoDoubleFull || this.tm.stereoDoubleDTI; +var isBicolor = this.tm.stereoMode.isBiColor(); +var mergeImages = (g == null && isDouble); +var imageBuffer; +if (isBicolor) { +this.beginRendering(true, isImageWrite); +this.render(); +this.gdata.endRendering(); +this.gdata.snapshotAnaglyphChannelBytes(); +this.beginRendering(false, isImageWrite); +this.render(); +this.gdata.endRendering(); +this.gdata.applyAnaglygh(this.tm.stereoMode, this.tm.stereoColors); +imageBuffer = this.gdata.getScreenImage(isImageWrite); +} else { +imageBuffer = this.getImage(isDouble, isImageWrite); +}var imageBuffer2 = null; +if (mergeImages) { +imageBuffer2 = this.apiPlatform.newBufferedImage(imageBuffer, (this.tm.stereoDoubleDTI ? this.screenWidth : this.screenWidth << 1), this.screenHeight); +g = this.apiPlatform.getGraphics(imageBuffer2); +}if (g != null) { +if (isDouble) { +if (this.tm.stereoMode === J.c.STER.DTI) { +this.drawImage(g, imageBuffer, this.screenWidth >> 1, 0, true); +imageBuffer = this.getImage(false, false); +this.drawImage(g, imageBuffer, 0, 0, true); +g = null; +} else { +this.drawImage(g, imageBuffer, this.screenWidth, 0, false); +imageBuffer = this.getImage(false, false); +}}if (g != null) this.drawImage(g, imageBuffer, 0, 0, false); +}return (mergeImages ? imageBuffer2 : imageBuffer); +}, "~O,~B"); +Clazz_defineMethod(c$, "evalStringWaitStatusQueued", +function(returnType, strScript, statusList, isQuiet, isQueued){ +return (this.getScriptManager() == null ? null : this.scm.evalStringWaitStatusQueued(returnType, strScript, statusList, isQuiet, isQueued)); +}, "~S,~S,~S,~B,~B"); +Clazz_defineMethod(c$, "popupMenu", +function(x, y, type){ +if (!this.haveDisplay || !this.refreshing || this.isPreviewOnly || this.g.disablePopupMenu) return; +switch ((type).charCodeAt(0)) { +case 106: +try { +this.getPopupMenu(); +this.jmolpopup.jpiShow(x, y); +} catch (e) { +JU.Logger.info(e.toString()); +this.g.disablePopupMenu = true; +} +break; +case 97: +case 98: +case 109: +if (this.getModelkit(true) == null) { +return; +}this.modelkit.showMenu(x, y); +break; +} +}, "~N,~N,~S"); +Clazz_defineMethod(c$, "getModelkit", +function(andShow){ +if (this.modelkit == null) { +(this.modelkit = J.api.Interface.getInterface("J.modelkit.ModelKit", this, "script")).setMenu(this.apiPlatform.getMenuPopup(null, 'm')); +} else if (andShow) { +this.modelkit.updateMenu(); +}return this.modelkit; +}, "~B"); +Clazz_defineMethod(c$, "getPopupMenu", +function(){ +if (this.g.disablePopupMenu) return null; +if (this.jmolpopup == null) { +this.jmolpopup = (this.allowScripting ? this.apiPlatform.getMenuPopup(this.menuStructure, 'j') : null); +if (this.jmolpopup == null) { +if (!this.async) this.g.disablePopupMenu = true; +return null; +}}if (this.isJSNoAWT) this.checkMenuUpdate(); +return this.jmolpopup.jpiGetMenuAsObject(); +}); +Clazz_overrideMethod(c$, "setMenu", +function(fileOrText, isFile){ +if (isFile) JU.Logger.info("Setting menu " + (fileOrText.length == 0 ? "to Jmol defaults" : "from file " + fileOrText)); +if (fileOrText.length == 0) fileOrText = null; + else if (isFile) fileOrText = this.getFileAsString3(fileOrText, false, null); +this.getProperty("DATA_API", "setMenu", fileOrText); +this.sm.setCallbackFunction("menu", fileOrText); +}, "~S,~B"); +Clazz_defineMethod(c$, "setStatusFrameChanged", +function(isVib, doNotify){ +if (isVib) { +this.prevFrame = -2147483648; +}this.tm.setVibrationPeriod(NaN); +var firstIndex = this.am.firstFrameIndex; +var lastIndex = this.am.lastFrameIndex; +var isMovie = this.am.isMovie; +var modelIndex = this.am.cmi; +if (firstIndex == lastIndex && !isMovie) modelIndex = firstIndex; +var frameID = this.getModelFileNumber(modelIndex); +var currentFrame = this.am.cmi; +var fileNo = frameID; +var modelNo = frameID % 1000000; +var firstNo = (isMovie ? firstIndex : this.getModelFileNumber(firstIndex)); +var lastNo = (isMovie ? lastIndex : this.getModelFileNumber(lastIndex)); +var strModelNo; +if (isMovie) { +strModelNo = "" + (currentFrame + 1); +} else if (fileNo == 0) { +strModelNo = this.getModelNumberDotted(firstIndex); +if (firstIndex != lastIndex) strModelNo += " - " + this.getModelNumberDotted(lastIndex); +if (Clazz_doubleToInt(firstNo / 1000000) == Clazz_doubleToInt(lastNo / 1000000)) fileNo = firstNo; +} else { +strModelNo = this.getModelNumberDotted(modelIndex); +}if (fileNo != 0) fileNo = (fileNo < 1000000 ? 1 : Clazz_doubleToInt(fileNo / 1000000)); +if (!isMovie) { +this.g.setI("_currentFileNumber", fileNo); +this.g.setI("_currentModelNumberInFile", modelNo); +}var currentMorphModel = this.am.currentMorphModel; +this.g.setI("_currentFrame", currentFrame); +this.g.setI("_morphCount", this.am.morphCount); +this.g.setF("_currentMorphFrame", currentMorphModel); +this.g.setI("_frameID", frameID); +this.g.setI("_modelIndex", modelIndex); +this.g.setO("_modelNumber", strModelNo); +this.g.setO("_modelName", (modelIndex < 0 ? "" : this.getModelName(modelIndex))); +var title = (modelIndex < 0 ? "" : this.ms.getModelTitle(modelIndex)); +this.g.setO("_modelTitle", title == null ? "" : title); +this.g.setO("_modelFile", (modelIndex < 0 ? "" : this.ms.getModelFileName(modelIndex))); +this.g.setO("_modelType", (modelIndex < 0 ? "" : this.ms.getModelFileType(modelIndex))); +if (currentFrame == this.prevFrame && currentMorphModel == this.prevMorphModel) return; +this.prevFrame = currentFrame; +this.prevMorphModel = currentMorphModel; +var entryName = this.getModelName(currentFrame); +if (isMovie) { +entryName = "" + (entryName === "" ? currentFrame + 1 : this.am.caf + 1) + ": " + entryName; +} else { +var script = "" + this.getModelNumberDotted(currentFrame); +if (!script.equals(entryName)) entryName = script + ": " + entryName; +}this.sm.setStatusFrameChanged(fileNo, modelNo, (this.am.animationDirection < 0 ? -firstNo : firstNo), (this.am.currentDirection < 0 ? -lastNo : lastNo), currentFrame, currentMorphModel, entryName); +if (this.doHaveJDX()) this.getJSV().setModel(modelIndex); +if (JV.Viewer.isJS) this.updateJSView(modelIndex, -1); +}, "~B,~B"); +Clazz_defineMethod(c$, "doHaveJDX", +function(){ +return (this.haveJDX || (this.haveJDX = this.getBooleanProperty("_JSpecView".toLowerCase()))); +}); +Clazz_defineMethod(c$, "getJSV", +function(){ +if (this.jsv == null) { +this.jsv = J.api.Interface.getOption("jsv.JSpecView", this, "script"); +this.jsv.setViewer(this); +}return this.jsv; +}); +Clazz_defineMethod(c$, "getJDXBaseModelIndex", +function(modelIndex){ +if (!this.doHaveJDX()) return modelIndex; +return this.getJSV().getBaseModelIndex(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "getJspecViewProperties", +function(myParam){ +var o = this.sm.getJspecViewProperties("" + myParam); +if (o != null) this.haveJDX = true; +return o; +}, "~O"); +Clazz_defineMethod(c$, "scriptEcho", +function(strEcho){ +if (!JU.Logger.isActiveLevel(4)) return; +if (JV.Viewer.isJS) System.out.println(strEcho); +this.sm.setScriptEcho(strEcho, this.isScriptQueued()); +if (this.listCommands && strEcho != null && strEcho.indexOf("$[") == 0) JU.Logger.info(strEcho); +}, "~S"); +Clazz_defineMethod(c$, "isScriptQueued", +function(){ +return this.scm != null && this.scm.isScriptQueued(); +}); +Clazz_defineMethod(c$, "notifyError", +function(errType, errMsg, errMsgUntranslated){ +this.g.setO("_errormessage", errMsgUntranslated); +this.sm.notifyError(errType, errMsg, errMsgUntranslated); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "jsEval", +function(strEval){ +return "" + this.sm.jsEval(strEval); +}, "~S"); +Clazz_defineMethod(c$, "jsEvalSV", +function(strEval){ +return JS.SV.getVariable(JV.Viewer.isJS ? this.sm.jsEval(strEval) : this.jsEval(strEval)); +}, "~S"); +Clazz_defineMethod(c$, "setFileLoadStatus", +function(ptLoad, fullPathName, fileName, modelName, strError, isAsync){ +this.setErrorMessage(strError, null); +this.g.setI("_loadPoint", ptLoad.getCode()); +var doCallback = (ptLoad !== J.c.FIL.CREATING_MODELSET); +if (doCallback) this.setStatusFrameChanged(false, false); +this.sm.setFileLoadStatus(fullPathName, fileName, modelName, strError, ptLoad.getCode(), doCallback, isAsync); +if (doCallback) { +if (this.doHaveJDX()) this.getJSV().setModel(this.am.cmi); +if (JV.Viewer.isJS) this.updateJSView(this.am.cmi, -2); +}}, "J.c.FIL,~S,~S,~S,~S,Boolean"); +Clazz_defineMethod(c$, "getZapName", +function(){ +return (this.g.modelKitMode ? "Jmol Model Kit" : "zapped"); +}); +Clazz_defineMethod(c$, "setStatusMeasuring", +function(status, intInfo, strMeasure, value){ +this.sm.setStatusMeasuring(status, intInfo, strMeasure, value); +}, "~S,~N,~S,~N"); +Clazz_defineMethod(c$, "notifyMinimizationStatus", +function(){ +var step = this.getP("_minimizationStep"); +var ff = this.getP("_minimizationForceField"); +var minStatus = this.getP("_minimizationStatus"); +var starting = "starting".equals(minStatus); +var done = "done".equals(minStatus) || "failed".equals(minStatus); +var includeAtoms = (this.minimizer != null && (done || starting)); +var bsAtoms = (includeAtoms ? this.minimizer.bsAtoms : null); +var atomIndex = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +var modelIndex = (atomIndex >= 0 ? this.getModelIndexForAtom(atomIndex) : -1); +if (starting && atomIndex >= 0) { +this.sm.setStatusStructureModified(atomIndex, modelIndex, 3, "minimize:" + minStatus, bsAtoms.cardinality(), bsAtoms); +}this.sm.notifyMinimizationStatus(minStatus, (typeof(step)=='string') ? Integer.$valueOf(0) : step, this.getP("_minimizationEnergy"), (step.toString().equals("0") ? Float.$valueOf(0) : this.getP("_minimizationEnergyDiff")), ff); +if (done && atomIndex >= 0) { +this.sm.setStatusStructureModified(atomIndex, modelIndex, -3, "minimize:" + minStatus, bsAtoms.cardinality(), bsAtoms); +}}); +Clazz_defineMethod(c$, "setStatusAtomPicked", +function(atomIndex, info, map, andSelect){ +if (andSelect) this.setSelectionSet(JU.BSUtil.newAndSetBit(atomIndex)); +if (info == null) { +info = this.g.pickLabel; +info = (info.length == 0 ? this.getAtomInfoXYZ(atomIndex, this.g.messageStyleChime ? 4 : 2) + (this.getOperativeSymmetry() == null ? "" : " (" + this.getAtomInfoXYZ(atomIndex, 3) + ")") : this.ms.getAtomInfo(atomIndex, info, this.ptTemp)); +}this.setPicked(atomIndex, false); +if (atomIndex < 0) { +var m = this.getPendingMeasurement(); +if (m != null) info = info.substring(0, info.length - 1) + ",\"" + m.getString() + "\"]"; +}this.g.setO("_pickinfo", info); +this.sm.setStatusAtomPicked(atomIndex, info, map); +if (atomIndex < 0) return; +var syncMode = this.sm.getSyncMode(); +if (syncMode == 1 && this.doHaveJDX()) this.getJSV().atomPicked(atomIndex); +if (JV.Viewer.isJS) this.updateJSView(this.ms.at[atomIndex].mi, atomIndex); +}, "~N,~S,java.util.Map,~B"); +Clazz_overrideMethod(c$, "getProperty", +function(returnType, infoType, paramInfo){ +if (!"DATA_API".equals(returnType)) return this.getPropertyManager().getProperty(returnType, infoType, paramInfo); +switch (("scriptCheck.........consoleText.........scriptEditor........scriptEditorState...getAppConsole.......getScriptEditor.....setMenu.............spaceGroupInfo......disablePopupMenu....defaultDirectory....getPopupMenu........shapeManager........getPreference.......").indexOf(infoType)) { +case 0: +return this.scriptCheckRet(paramInfo, true); +case 20: +return (this.appConsole == null ? "" : this.appConsole.getText()); +case 40: +this.showEditor(paramInfo); +return null; +case 60: +this.scriptEditorVisible = (paramInfo).booleanValue(); +return null; +case 80: +if (this.$isKiosk) { +this.appConsole = null; +} else if (Clazz_instanceOf(paramInfo,"J.api.JmolAppConsoleInterface")) { +this.appConsole = paramInfo; +} else if (paramInfo != null && !(paramInfo).booleanValue()) { +this.appConsole = null; +} else if (this.appConsole == null && paramInfo != null && (paramInfo).booleanValue()) { +if (JV.Viewer.isJS) { +this.appConsole = J.api.Interface.getOption("consolejs.AppletConsole", this, "script"); +}{ +}if (this.appConsole != null) this.appConsole.start(this); +}this.scriptEditor = (JV.Viewer.isJS || this.appConsole == null ? null : this.appConsole.getScriptEditor()); +return this.appConsole; +case 100: +if (this.appConsole == null && paramInfo != null && (paramInfo).booleanValue()) { +this.getProperty("DATA_API", "getAppConsole", Boolean.TRUE); +this.scriptEditor = (this.appConsole == null ? null : this.appConsole.getScriptEditor()); +}return this.scriptEditor; +case 120: +if (this.jmolpopup != null) this.jmolpopup.jpiDispose(); +this.jmolpopup = null; +return this.menuStructure = paramInfo; +case 140: +return this.getSymTemp().getSpaceGroupInfo(this.ms, null, -1, false, null); +case 160: +this.g.disablePopupMenu = true; +return null; +case 180: +return this.g.defaultDirectory; +case 200: +if ((typeof(paramInfo)=='string')) return this.getMenu(paramInfo); +return this.getPopupMenu(); +case 220: +return this.shm.getProperty(paramInfo); +case 240: +return this.sm.syncSend("getPreference", paramInfo, 1); +} +JU.Logger.error("ERROR in getProperty DATA_API: " + infoType); +return null; +}, "~S,~S,~O"); +Clazz_defineMethod(c$, "notifyMouseClicked", +function(x, y, action, mode){ +var modifiers = JV.binding.Binding.getButtonMods(action); +var clickCount = JV.binding.Binding.getClickCount(action); +this.g.setI("_mouseX", x); +this.g.setI("_mouseY", this.screenHeight - y); +this.g.setI("_mouseAction", action); +this.g.setI("_mouseModifiers", modifiers); +this.g.setI("_clickCount", clickCount); +return this.sm.setStatusClicked(x, this.screenHeight - y, action, clickCount, mode); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getOutputManager", +function(){ +if (this.outputManager != null) return this.outputManager; +return (this.outputManager = J.api.Interface.getInterface("JV.OutputManager" + (JV.Viewer.isJS ? "JS" : "Awt"), this, "file")).setViewer(this, this.privateKey); +}); +Clazz_defineMethod(c$, "getJzt", +function(){ +return (this.jzt == null ? this.jzt = J.api.Interface.getInterface("JU.ZipTools", this, "zip") : this.jzt); +}); +Clazz_defineMethod(c$, "readFileAsMap", +function(bis, map, name){ +this.getJzt().readFileAsMap(bis, map, name); +}, "java.io.BufferedInputStream,java.util.Map,~S"); +Clazz_defineMethod(c$, "getZipDirectoryAsString", +function(fileName){ +var t = this.fm.getBufferedInputStreamOrErrorMessageFromName(fileName, fileName, false, false, null, false, true); +return this.getJzt().getZipDirectoryAsStringAndClose(t); +}, "~S"); +Clazz_overrideMethod(c$, "getImageAsBytes", +function(type, width, height, quality, errMsg){ +return this.getOutputManager().getImageAsBytes(type, width, height, quality, errMsg); +}, "~S,~N,~N,~N,~A"); +Clazz_overrideMethod(c$, "releaseScreenImage", +function(){ +this.gdata.releaseScreenImage(); +}); +Clazz_defineMethod(c$, "setDisplay", +function(canvas){ +this.display = canvas; +this.apiPlatform.setViewer(this, canvas); +}, "~O"); +Clazz_defineMethod(c$, "newMeasurementData", +function(id, points){ +return (J.api.Interface.getInterface("JM.MeasurementData", this, "script")).init(id, this, points); +}, "~S,JU.Lst"); +Clazz_defineMethod(c$, "getDataManager", +function(){ +return (this.dm == null ? (this.dm = (J.api.Interface.getInterface("JV.DataManager", this, "script")).set(this)) : this.dm); +}); +Clazz_defineMethod(c$, "getScriptManager", +function(){ +if (this.allowScripting && this.scm == null) { +this.scm = J.api.Interface.getInterface("JS.ScriptManager", this, "setOptions"); +if (JV.Viewer.isJS && this.scm == null) throw new NullPointerException(); +if (this.scm == null) { +this.allowScripting = false; +return null; +}this.eval = this.scm.setViewer(this); +if (this.useCommandThread) this.scm.startCommandWatcher(true); +}return this.scm; +}); +Clazz_defineMethod(c$, "checkOption2", +function(key1, key2){ +return (this.vwrOptions.containsKey(key1) && !this.vwrOptions.get(key1).toString().equals("false") || this.commandOptions.indexOf(key2) >= 0); +}, "~S,~S"); +Clazz_defineMethod(c$, "setStartupBooleans", +function(){ +this.setBooleanProperty("_applet", this.isApplet); +this.setBooleanProperty("_JSpecView".toLowerCase(), false); +this.setBooleanProperty("_signedApplet", this.isSignedApplet); +this.setBooleanProperty("_headless", this.headless); +this.setStringProperty("_restrict", "\"" + this.access + "\""); +this.setBooleanProperty("_useCommandThread", this.useCommandThread); +this.setBooleanPropertyTok("doubleprecision", 603979831, false); +}); +Clazz_defineMethod(c$, "getExportDriverList", +function(){ +return (this.haveAccess(JV.Viewer.ACCESS.ALL) ? this.g.getParameter("exportDrivers", true) : ""); +}); +Clazz_overrideMethod(c$, "dispose", +function(){ +this.gRight = null; +if (this.mouse != null) { +this.acm.dispose(); +this.mouse.dispose(); +this.mouse = null; +}this.clearScriptQueue(); +this.clearThreads(); +this.haltScriptExecution(); +if (this.scm != null) this.scm.clear(true); +this.gdata.destroy(); +if (this.jmolpopup != null) this.jmolpopup.jpiDispose(); +if (this.modelkit != null) this.modelkit.dispose(); +try { +if (this.appConsole != null) { +this.appConsole.dispose(); +this.appConsole = null; +}if (this.scriptEditor != null) { +this.scriptEditor.dispose(); +this.scriptEditor = null; +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "reset", +function(includingSpin){ +this.ms.setBoundBox(null, null, true, 0); +this.axesAreTainted = true; +this.tm.homePosition(includingSpin); +if (this.ms.setCrystallographicDefaults()) this.stm.setCrystallographicDefaults(); + else this.setAxesMode(603979809); +this.prevFrame = -2147483648; +if (!this.tm.spinOn) this.setSync(); +}, "~B"); +Clazz_overrideMethod(c$, "homePosition", +function(){ +this.evalString("reset spin"); +}); +Clazz_defineMethod(c$, "initialize", +function(clearUserVariables, isPyMOL){ +this.g = new JV.GlobalSettings(this, this.g, clearUserVariables); +this.setStartupBooleans(); +this.setWidthHeightVar(); +if (this.haveDisplay) { +this.g.setB("_is2D", JV.Viewer.isJS && !this.isWebGL); +this.g.setB("_multiTouchClient", this.acm.isMTClient()); +this.g.setB("_multiTouchServer", this.acm.isMTServer()); +}this.cm.setDefaultColors(false); +this.setObjectColor("background", "black"); +this.setObjectColor("axis1", "red"); +this.setObjectColor("axis2", "green"); +this.setObjectColor("axis3", "blue"); +this.am.setAnimationOn(false); +this.am.setAnimationFps(this.g.animationFps); +this.sm.playAudio(null); +this.sm.allowStatusReporting = this.g.statusReporting; +this.setBooleanPropertyTok("antialiasDisplay", 603979786, (isPyMOL ? true : this.g.antialiasDisplay)); +this.stm.resetLighting(); +this.tm.setDefaultPerspective(); +}, "~B,~B"); +Clazz_defineMethod(c$, "saveModelOrientation", +function(){ +this.ms.saveModelOrientation(this.am.cmi, this.stm.getOrientation()); +}); +Clazz_defineMethod(c$, "restoreModelOrientation", +function(modelIndex){ +var o = this.ms.getModelOrientation(modelIndex); +if (o != null) o.restore(-1, true); +}, "~N"); +Clazz_defineMethod(c$, "restoreModelRotation", +function(modelIndex){ +var o = this.ms.getModelOrientation(modelIndex); +if (o != null) o.restore(-1, false); +}, "~N"); +Clazz_defineMethod(c$, "getGLmolView", +function(){ +var tm = this.tm; +var center = tm.fixedRotationCenter; +var q = tm.getRotationQ(); +var xtrans = tm.xTranslationFraction; +var ytrans = tm.yTranslationFraction; +var scale = tm.scalePixelsPerAngstrom; +var zoom = tm.zmPctSet; +var cd = tm.cameraDistance; +var pc = tm.screenPixelCount; +var pd = tm.perspectiveDepth; +var width = tm.width; +var height = tm.height; +{ +return { center:center, quaternion:q, xtrans:xtrans, +ytrans:ytrans, scale:scale, zoom:zoom, cameraDistance:cd, +pixelCount:pc, perspective:pd, width:width, height:height }; +}}); +Clazz_defineMethod(c$, "setRotationRadius", +function(angstroms, doAll){ +if (doAll) angstroms = this.tm.setRotationRadius(angstroms, false); +if (this.ms.setRotationRadius(this.am.cmi, angstroms)) this.g.setF("rotationRadius", angstroms); +}, "~N,~B"); +Clazz_defineMethod(c$, "setCenterBitSet", +function(bsCenter, doScale){ +if (this.isJmolDataFrame()) return; +this.tm.setNewRotationCenter((JU.BSUtil.cardinalityOf(bsCenter) > 0 ? this.ms.getAtomSetCenter(bsCenter) : null), doScale); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setNewRotationCenter", +function(center){ +if (!this.isJmolDataFrame()) this.tm.setNewRotationCenter(center, true); +}, "JU.P3"); +Clazz_defineMethod(c$, "navigate", +function(keyWhere, modifiers){ +if (this.isJmolDataFrame()) return; +this.tm.navigateKey(keyWhere, modifiers); +if (!this.tm.vibrationOn && keyWhere != 0) this.refresh(1, "Viewer:navigate()"); +}, "~N,~N"); +Clazz_defineMethod(c$, "move", +function(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps){ +this.tm.move(eval, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps); +this.moveUpdate(floatSecondsTotal); +}, "J.api.JmolScriptEvaluator,JU.V3,~N,JU.V3,~N,~N,~N"); +Clazz_defineMethod(c$, "moveTo", +function(eval, floatSecondsTotal, center, rotAxis, degrees, rotationMatrix, zoom, xTrans, yTrans, rotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY){ +if (!this.haveDisplay) floatSecondsTotal = 0; +this.setTainted(true); +this.tm.moveTo(eval, floatSecondsTotal, center, rotAxis, degrees, rotationMatrix, zoom, xTrans, yTrans, rotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY); +}, "J.api.JmolScriptEvaluator,~N,JU.P3,JU.V3,~N,JU.M3,~N,~N,~N,~N,JU.P3,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "moveUpdate", +function(floatSecondsTotal){ +if (floatSecondsTotal > 0) this.requestRepaintAndWait("moveUpdate"); + else if (floatSecondsTotal == 0) this.setSync(); +}, "~N"); +Clazz_defineMethod(c$, "navigatePt", +function(center){ +this.tm.setNavigatePt(center); +this.setSync(); +}, "JU.P3"); +Clazz_defineMethod(c$, "navigateAxis", +function(rotAxis, degrees){ +this.tm.navigateAxis(rotAxis, degrees); +this.setSync(); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "navTranslatePercent", +function(x, y){ +if (this.isJmolDataFrame()) return; +this.tm.navTranslatePercentOrTo(0, x, y); +this.setSync(); +}, "~N,~N"); +Clazz_defineMethod(c$, "zoomBy", +function(pixels){ +this.tm.zoomBy(pixels); +this.refresh(2, this.sm.syncingMouse ? "Mouse: zoomBy " + pixels : ""); +}, "~N"); +Clazz_defineMethod(c$, "zoomByFactor", +function(factor, x, y){ +this.tm.zoomByFactor(factor, x, y); +this.refresh(2, !this.sm.syncingMouse ? "" : "Mouse: zoomByFactor " + factor + (x == 2147483647 ? "" : " " + x + " " + y)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "rotateXYBy", +function(degX, degY){ +this.tm.rotateXYBy(degX, degY, null); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateXYBy " + degX + " " + degY : ""); +}, "~N,~N"); +Clazz_defineMethod(c$, "spinXYBy", +function(xDelta, yDelta, speed){ +this.tm.spinXYBy(xDelta, yDelta, speed); +if (xDelta == 0 && yDelta == 0) return; +this.refresh(2, this.sm.syncingMouse ? "Mouse: spinXYBy " + xDelta + " " + yDelta + " " + speed : ""); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "rotateZBy", +function(zDelta, x, y){ +this.tm.rotateZBy(zDelta, x, y); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateZBy " + zDelta + (x == 2147483647 ? "" : " " + x + " " + y) : ""); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "rotateSelected", +function(deltaX, deltaY, bsSelected){ +if (this.isJmolDataFrame()) return; +this.tm.rotateXYBy(deltaX, deltaY, this.setMovableBitSet(bsSelected, true)); +this.refreshMeasures(true); +this.refresh(2, this.sm.syncingMouse ? "Mouse: rotateMolecule " + deltaX + " " + deltaY : ""); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "setMovableBitSet", +function(bsSelected, checkMolecule){ +if (bsSelected == null) bsSelected = this.bsA(); +bsSelected = JU.BSUtil.copy(bsSelected); +JU.BSUtil.andNot(bsSelected, this.getMotionFixedAtoms(null, null)); +if (checkMolecule && !this.g.allowMoveAtoms) bsSelected = this.ms.getMoleculeBitSet(bsSelected); +return this.movableBitSet = bsSelected; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "translateXYBy", +function(xDelta, yDelta){ +this.tm.translateXYBy(xDelta, yDelta); +this.refresh(2, this.sm.syncingMouse ? "Mouse: translateXYBy " + xDelta + " " + yDelta : ""); +}, "~N,~N"); +Clazz_overrideMethod(c$, "rotateFront", +function(){ +this.tm.resetRotation(); +this.refresh(1, "Viewer:rotateFront()"); +}); +Clazz_defineMethod(c$, "translate", +function(xyz, x, type, bsAtoms){ +var xy = (type == '\0' ? x : type == '%' ? this.tm.percentToPixels(xyz, x) : this.tm.angstromsToPixels(x * (type == 'n' ? 10 : 1))); +if (bsAtoms != null) { +if (x == 0) return; +this.tm.setSelectedTranslation(bsAtoms, xyz, xy, x); +} else { +switch ((xyz).charCodeAt(0)) { +case 88: +case 120: +if (type == '\0') this.tm.translateToPercent('x', x); + else this.tm.translateXYBy(Clazz_floatToInt(xy), 0); +break; +case 89: +case 121: +if (type == '\0') this.tm.translateToPercent('y', x); + else this.tm.translateXYBy(0, Clazz_floatToInt(xy)); +break; +case 90: +case 122: +if (type == '\0') this.tm.translateToPercent('z', x); + else this.tm.translateZBy(Clazz_floatToInt(xy)); +break; +} +}this.refresh(1, "Viewer:translate()"); +}, "~S,~N,~S,JU.BS"); +Clazz_defineMethod(c$, "slabByPixels", +function(pixels){ +this.tm.slabByPercentagePoints(pixels); +this.refresh(3, "slabByPixels"); +}, "~N"); +Clazz_defineMethod(c$, "depthByPixels", +function(pixels){ +this.tm.depthByPercentagePoints(pixels); +this.refresh(3, "depthByPixels"); +}, "~N"); +Clazz_defineMethod(c$, "slabDepthByPixels", +function(pixels){ +this.tm.slabDepthByPercentagePoints(pixels); +this.refresh(3, "slabDepthByPixels"); +}, "~N"); +Clazz_defineMethod(c$, "finalizeTransformParameters", +function(){ +this.tm.finalizeTransformParameters(); +this.gdata.setSlabAndZShade(this.tm.slabValue, this.tm.depthValue, (this.tm.zShadeEnabled ? this.tm.zSlabValue : 2147483647), this.tm.zDepthValue, this.g.zShadePower); +}); +Clazz_defineMethod(c$, "getScalePixelsPerAngstrom", +function(asAntialiased){ +return this.tm.scalePixelsPerAngstrom * (asAntialiased || !this.antialiased ? 1 : 0.5); +}, "~B"); +Clazz_defineMethod(c$, "setSpin", +function(key, value){ +if (!JU.PT.isOneOf(key, ";x;y;z;fps;X;Y;Z;FPS;")) return; +var i = "x;y;z;fps;X;Y;Z;FPS".indexOf(key); +switch (i) { +case 0: +this.tm.setSpinXYZ(value, NaN, NaN); +break; +case 2: +this.tm.setSpinXYZ(NaN, value, NaN); +break; +case 4: +this.tm.setSpinXYZ(NaN, NaN, value); +break; +case 6: +default: +this.tm.setSpinFps(value); +break; +case 10: +this.tm.setNavXYZ(value, NaN, NaN); +break; +case 12: +this.tm.setNavXYZ(NaN, value, NaN); +break; +case 14: +this.tm.setNavXYZ(NaN, NaN, value); +break; +case 16: +this.tm.setNavFps(value); +break; +} +this.g.setI((i < 10 ? "spin" : "nav") + key, value); +}, "~S,~N"); +Clazz_defineMethod(c$, "getSpinState", +function(){ +return this.getStateCreator().getSpinState(false); +}); +Clazz_defineMethod(c$, "getOrientation", +function(type, name, bs, points){ +switch (type) { +case 1312817669: +case 1814695966: +case 1073741864: +case 1111492629: +case 1111492630: +case 1111492631: +case 134221850: +if (bs == null) bs = this.bsA(); +if (bs.isEmpty()) return (type == 1312817669 ? "0" : type == 1814695966 || type == 1073741864 ? null : new JU.Quat()); +var q = this.ms.getBoundBoxOrientation(type, bs, points); +return (name === "best" && type != 1312817669 ? (q).div(this.tm.getRotationQ()) : q); +case 1073742034: +return this.stm.getSavedOrientationText(name); +default: +return this.tm.getOrientationText(type, name === "best"); +} +}, "~N,~S,JU.BS,~A"); +Clazz_defineMethod(c$, "getCurrentColorRange", +function(){ +return this.cm.getPropertyColorRange(); +}); +Clazz_defineMethod(c$, "setDefaultColors", +function(isRasmol){ +this.cm.setDefaultColors(isRasmol); +this.g.setB("colorRasmol", isRasmol); +this.g.setO("defaultColorScheme", (isRasmol ? "rasmol" : "jmol")); +}, "~B"); +Clazz_defineMethod(c$, "setElementArgb", +function(elementNumber, argb){ +this.g.setO("=color " + JU.Elements.elementNameFromNumber(elementNumber), JU.Escape.escapeColor(argb)); +this.cm.setElementArgb(elementNumber, argb); +}, "~N,~N"); +Clazz_overrideMethod(c$, "setVectorScale", +function(scale){ +this.g.setF("vectorScale", scale); +this.g.vectorScale = scale; +}, "~N"); +Clazz_overrideMethod(c$, "setVibrationScale", +function(scale){ +this.tm.setVibrationScale(scale); +this.g.vibrationScale = scale; +this.g.setF("vibrationScale", scale); +}, "~N"); +Clazz_overrideMethod(c$, "setVibrationPeriod", +function(period){ +if (Double.isNaN(period)) { +period = this.g.vibrationPeriod; +}this.tm.setVibrationPeriod(period); +period = Math.abs(period); +this.g.vibrationPeriod = period; +this.g.setF("vibrationPeriod", period); +}, "~N"); +Clazz_defineMethod(c$, "setObjectColor", +function(name, colorName){ +if (colorName == null || colorName.length == 0) return; +this.setObjectArgb(name, JU.CU.getArgbFromString(colorName)); +}, "~S,~S"); +Clazz_defineMethod(c$, "setObjectVisibility", +function(name, b){ +var objId = JV.StateManager.getObjectIdFromName(name); +if (objId >= 0) { +this.setShapeProperty(objId, "display", b ? Boolean.TRUE : Boolean.FALSE); +}}, "~S,~B"); +Clazz_defineMethod(c$, "setObjectArgb", +function(name, argb){ +var objId = JV.StateManager.getObjectIdFromName(name); +if (objId < 0) { +if (name.equalsIgnoreCase("axes")) { +this.setObjectArgb("axis1", argb); +this.setObjectArgb("axis2", argb); +this.setObjectArgb("axis3", argb); +}return; +}this.g.objColors[objId] = argb; +switch (objId) { +case 0: +this.gdata.setBackgroundArgb(argb); +this.cm.setColixBackgroundContrast(argb); +break; +} +this.g.setO(name + "Color", JU.Escape.escapeColor(argb)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setBackgroundImage", +function(fileName, image){ +this.g.backgroundImageFileName = fileName; +this.gdata.setBackgroundImage(image); +}, "~S,~O"); +Clazz_defineMethod(c$, "getObjectColix", +function(objId){ +var argb = this.g.objColors[objId]; +return (argb == 0 ? this.cm.colixBackgroundContrast : JU.C.getColix(argb)); +}, "~N"); +Clazz_overrideMethod(c$, "setColorBackground", +function(colorName){ +this.setObjectColor("background", colorName); +}, "~S"); +Clazz_overrideMethod(c$, "getBackgroundArgb", +function(){ +return this.g.objColors[(0)]; +}); +Clazz_defineMethod(c$, "setObjectMad10", +function(iShape, name, mad10){ +var objId = JV.StateManager.getObjectIdFromName(name.equalsIgnoreCase("axes") ? "axis" : name); +if (objId < 0) return; +if (mad10 == -2 || mad10 == -4) { +var m = mad10 + 3; +mad10 = this.getObjectMad10(objId); +if (mad10 == 0) mad10 = m; +}this.g.setB("show" + name, mad10 != 0); +this.g.objStateOn[objId] = (mad10 != 0); +if (mad10 == 0) return; +this.g.objMad10[objId] = mad10; +this.setShapeSize(iShape, mad10, null); +}, "~N,~S,~N"); +Clazz_defineMethod(c$, "getObjectMad10", +function(objId){ +return (this.g.objStateOn[objId] ? this.g.objMad10[objId] : 0); +}, "~N"); +Clazz_defineMethod(c$, "setPropertyColorScheme", +function(scheme, isTranslucent, isOverloaded){ +this.g.propertyColorScheme = scheme; +if (scheme.startsWith("translucent ")) { +isTranslucent = true; +scheme = scheme.substring(12).trim(); +}this.cm.setPropertyColorScheme(scheme, isTranslucent, isOverloaded); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getLightingState", +function(){ +return this.getStateCreator().getLightingState(true); +}); +Clazz_defineMethod(c$, "getColorPointForPropertyValue", +function(val){ +return JU.CU.colorPtFromInt(this.gdata.getColorArgbOrGray(this.cm.ce.getColorIndex(val)), null); +}, "~N"); +Clazz_defineMethod(c$, "select", +function(bs, isGroup, addRemove, isQuiet){ +if (isGroup) bs = this.getUndeletedGroupAtomBits(bs); +this.slm.select(bs, addRemove, isQuiet); +this.shm.setShapeSizeBs(1, 2147483647, null, null); +this.hasSelected = true; +}, "JU.BS,~B,~N,~B"); +Clazz_overrideMethod(c$, "setSelectionSet", +function(set){ +this.selectStatus(set, false, 0, true, true); +}, "JU.BS"); +Clazz_defineMethod(c$, "selectBonds", +function(bs){ +this.shm.setShapeSizeBs(1, 2147483647, null, bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "displayAtoms", +function(bs, isDisplay, isGroup, addRemove, isQuiet){ +if (isGroup) bs = this.getUndeletedGroupAtomBits(bs); +if (isDisplay) this.slm.display(this.ms, bs, addRemove, isQuiet); + else this.slm.hide(this.ms, bs, addRemove, isQuiet); +}, "JU.BS,~B,~B,~N,~B"); +Clazz_defineMethod(c$, "getUndeletedGroupAtomBits", +function(bs){ +bs = this.ms.getAtoms(1086324742, bs); +JU.BSUtil.andNot(bs, this.slm.bsDeleted); +return bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "reportSelection", +function(msg){ +if (this.selectionHalosEnabled) this.setTainted(true); +if (this.isScriptQueued() || this.g.debugScript) this.scriptStatus(msg); +}, "~S"); +Clazz_defineMethod(c$, "clearAtomSets", +function(){ +this.slm.setSelectionSubset(null); +this.definedAtomSets.clear(); +if (this.haveDisplay) this.acm.exitMeasurementMode("clearAtomSets"); +}); +Clazz_defineMethod(c$, "getDefinedAtomSet", +function(name){ +var o = this.definedAtomSets.get(name.toLowerCase()); +return (Clazz_instanceOf(o,"JU.BS") ? o : new JU.BS()); +}, "~S"); +Clazz_overrideMethod(c$, "selectAll", +function(){ +this.slm.selectAll(false); +}); +Clazz_overrideMethod(c$, "clearSelection", +function(){ +this.slm.clearSelection(true); +this.g.setB("hideNotSelected", false); +}); +Clazz_defineMethod(c$, "bsA", +function(){ +return this.slm.getSelectedAtoms(); +}); +Clazz_overrideMethod(c$, "addSelectionListener", +function(listener){ +this.slm.addListener(listener); +}, "J.api.JmolSelectionListener"); +Clazz_overrideMethod(c$, "removeSelectionListener", +function(listener){ +this.slm.addListener(listener); +}, "J.api.JmolSelectionListener"); +Clazz_defineMethod(c$, "getAtomBitSetEval", +function(eval, atomExpression){ +return (this.allowScripting ? this.getScriptManager().getAtomBitSetEval(eval, atomExpression) : new JU.BS()); +}, "J.api.JmolScriptEvaluator,~O"); +Clazz_defineMethod(c$, "processTwoPointGesture", +function(touches){ +this.mouse.processTwoPointGesture(touches); +}, "~A"); +Clazz_defineMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.mouse.processEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "processKeyEvent", +function(event){ +this.mouse.processKeyEvent(event); +}, "~O"); +Clazz_defineMethod(c$, "getRubberBandSelection", +function(){ +return (this.haveDisplay ? this.acm.getRubberBand() : null); +}); +Clazz_defineMethod(c$, "isBound", +function(mouseAction, jmolAction){ +return (this.haveDisplay && this.acm.bnd(mouseAction, [jmolAction])); +}, "~N,~N"); +Clazz_defineMethod(c$, "getCursorX", +function(){ +return (this.haveDisplay ? this.acm.getCurrentX() : 0); +}); +Clazz_defineMethod(c$, "getCursorY", +function(){ +return (this.haveDisplay ? this.acm.getCurrentY() : 0); +}); +Clazz_defineMethod(c$, "getDefaultDirectory", +function(){ +return this.g.defaultDirectory; +}); +Clazz_defineMethod(c$, "getLocalUrl", +function(fileName){ +return this.apiPlatform.getLocalUrl(fileName); +}, "~S"); +Clazz_defineMethod(c$, "getFileAsString", +function(fileName){ +return this.getAsciiFileOrNull(fileName); +}, "~S"); +Clazz_overrideMethod(c$, "getBufferedInputStream", +function(fullPathName){ +return this.fm.getBufferedInputStream(fullPathName); +}, "~S"); +Clazz_defineMethod(c$, "setLoadParameters", +function(htParams, isAppend){ +if (htParams == null) htParams = new java.util.Hashtable(); +htParams.put("vwr", this); +if (this.g.atomTypes.length > 0) htParams.put("atomTypes", this.g.atomTypes); +if (!htParams.containsKey("lattice")) htParams.put("lattice", this.g.ptDefaultLattice); +if (this.g.applySymmetryToBonds) htParams.put("applySymmetryToBonds", Boolean.TRUE); +if (this.g.pdbGetHeader) htParams.put("getHeader", Boolean.TRUE); +if (this.g.pdbSequential) htParams.put("isSequential", Boolean.TRUE); +if (this.g.legacyJavaFloat || this.g.doublePrecision) htParams.put("highPrecision", Boolean.TRUE); +if (!this.g.doublePrecision) htParams.put("lowPrecision", Boolean.TRUE); +htParams.put("stateScriptVersionInt", Integer.$valueOf(this.stateScriptVersionInt)); +if (!htParams.containsKey("filter")) { +var filter = this.g.defaultLoadFilter; +if (filter.length > 0) htParams.put("filter", filter); +}var merging = (isAppend && !this.g.appendNew && this.ms.ac > 0); +htParams.put("baseAtomIndex", Integer.$valueOf(isAppend ? this.ms.ac : 0)); +htParams.put("baseBondIndex", Integer.$valueOf(isAppend ? this.ms.bondCount : 0)); +htParams.put("baseModelIndex", Integer.$valueOf(this.ms.ac == 0 ? 0 : this.ms.mc + (merging ? -1 : 0))); +if (merging) htParams.put("merging", Boolean.TRUE); +return htParams; +}, "java.util.Map,~B"); +Clazz_overrideMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +this.getScriptManager().openFileAsync(fileName, flags, null); +}, "~S,~N"); +Clazz_overrideMethod(c$, "openFileAsyncSpecialType", +function(fileName, flags, fileType){ +this.getScriptManager().openFileAsync(fileName, flags, fileType); +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "openFile", +function(fileName){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(null, fileName, null, null); +}, "~S"); +Clazz_overrideMethod(c$, "openFiles", +function(fileNames){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(null, null, fileNames, null); +}, "~A"); +Clazz_defineMethod(c$, "openReader", +function(fullPathName, fileName, reader){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint(fullPathName, fileName, null, reader); +}, "~S,~S,~O"); +Clazz_overrideMethod(c$, "openDOM", +function(DOMNode){ +this.zap(true, true, false); +return this.loadModelFromFileRepaint("?", "?", null, DOMNode); +}, "~O"); +Clazz_defineMethod(c$, "loadModelFromFileRepaint", +function(fullPathName, fileName, fileNames, reader){ +var ret = this.loadModelFromFile(fullPathName, fileName, fileNames, reader, false, null, null, null, 0, " "); +this.refresh(1, "loadModelFromFileRepaint"); +return ret; +}, "~S,~S,~A,~O"); +Clazz_defineMethod(c$, "loadModelFromFile", +function(fullPathName, fileName, fileNames, reader, isAppend, htParams, loadScript, sOptions, tokType, filecat){ +if (htParams == null) htParams = this.setLoadParameters(null, isAppend); +if (tokType != 0) htParams.put("dataType", JS.T.nameOf(tokType)); +if (filecat !== " ") htParams.put("concatenate", Boolean.TRUE); +var atomSetCollection; +var saveInfo = this.fm.getFileInfo(); +if (fileNames != null) { +if (loadScript == null) { +loadScript = new JU.SB().append("load files"); +for (var i = 0; i < fileNames.length; i++) loadScript.append(i == 0 || filecat == null ? " " : filecat).append("/*file*/$FILENAME" + (i + 1) + "$"); + +if (sOptions.length() > 0) loadScript.append(" /*options*/ ").append(sOptions.toString()); +}var timeBegin = System.currentTimeMillis(); +atomSetCollection = this.fm.createAtomSetCollectionFromFiles(fileNames, this.setLoadParameters(htParams, isAppend), isAppend); +var ms = System.currentTimeMillis() - timeBegin; +JU.Logger.info("openFiles(" + fileNames.length + ") " + ms + " ms"); +fileNames = htParams.get("fullPathNames"); +var fileTypes = htParams.get("fileTypes"); +var s = loadScript.toString(); +for (var i = 0; i < fileNames.length; i++) { +var fname = fileNames[i]; +if (fileTypes != null && fileTypes[i] != null) fname = fileTypes[i] + "::" + fname; +s = JU.PT.rep(s, "$FILENAME" + (i + 1) + "$", JU.PT.esc(JV.FileManager.fixDOSName(fname))); +} +loadScript = new JU.SB().append(s); +} else if (reader == null) { +if (loadScript == null) loadScript = new JU.SB().append("load /*file*/$FILENAME$"); +atomSetCollection = this.openFileFull(fileName, isAppend, htParams, loadScript); +} else if (Clazz_instanceOf(reader,"java.io.Reader") || Clazz_instanceOf(reader,"java.io.BufferedInputStream") || JU.AU.isAB(reader)) { +atomSetCollection = this.fm.createAtomSetCollectionFromReader(fullPathName, fileName, reader, this.setLoadParameters(htParams, isAppend)); +} else { +return "ERROR - invalid reader"; +}if (tokType != 0) { +this.fm.setFileInfo(saveInfo); +return this.loadAtomDataAndReturnError(atomSetCollection, tokType); +}if (htParams.containsKey("isData")) return atomSetCollection; +if (loadScript != null && !((typeof(atomSetCollection)=='string'))) { +var fname = htParams.get("fullPathName"); +if (fname == null) fname = ""; +if (htParams.containsKey("loadScript")) loadScript = htParams.get("loadScript"); +htParams.put("loadScript", loadScript = new JU.SB().append(JU.PT.rep(loadScript.toString(), "$FILENAME$", JU.PT.esc(JV.FileManager.fixDOSName(fname))))); +}return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~S,~S,~A,~O,~B,java.util.Map,JU.SB,JU.SB,~N,~S"); +Clazz_defineMethod(c$, "setLigandModel", +function(key, data){ +if (this.ligandModels == null) this.ligandModels = new java.util.Hashtable(); +this.ligandModels.put(key, data); +}, "~S,~S"); +Clazz_defineMethod(c$, "getLigandModel", +function(id, prefix, suffix, terminator){ +if (id == null) { +if (this.ligandModelSet != null) { +var e = this.ligandModels.entrySet().iterator(); +while (e.hasNext()) { +var entry = e.next(); +if (Clazz_instanceOf(entry.getValue(), Boolean)) e.remove(); +} +}return null; +}id = id.$replace('\\', '/'); +var isLigand = prefix.equals("ligand_"); +id = (id.indexOf("/cif") >= 0 ? id : isLigand ? id.toUpperCase() : id.substring(id.lastIndexOf("/") + 1)); +if (this.ligandModelSet == null) this.ligandModelSet = new java.util.Hashtable(); +this.ligandModelSet.put(id, Boolean.TRUE); +if (this.ligandModels == null) this.ligandModels = new java.util.Hashtable(); +var pngPt = id.indexOf("|"); +if (pngPt >= 0) id = id.substring(id.indexOf("|") + 1); +var model = (terminator == null ? this.ligandModels.get(id) : null); +var data; +var fname = null; +if (Clazz_instanceOf(model, Boolean)) return null; +if (model == null && (terminator == null || pngPt >= 0)) model = this.ligandModels.get(id + suffix); +var isError = false; +var isNew = (model == null); +if (isNew) { +var s; +if (isLigand) { +fname = this.setLoadFormat(false, "#" + id, '#', false); +if (fname.length == 0) return null; +this.scriptEcho("fetching " + fname); +s = this.getFileAsString3(fname, false, null); +} else { +this.scriptEcho("fetching " + prefix); +s = this.getFileAsString3(prefix, false, null); +var pt = (terminator == null ? -1 : s.indexOf(terminator)); +if (pt >= 0) s = s.substring(0, pt); +}isError = (s.indexOf("java.") == 0); +model = s; +if (!isError) this.ligandModels.put(id + suffix, model); +}if (!isLigand) { +if (!isNew) this.scriptEcho(prefix + " loaded from cache"); +return model; +}if (!isError && (typeof(model)=='string')) { +data = model; +if (data.length != 0) { +var htParams = new java.util.Hashtable(); +htParams.put("modelOnly", Boolean.TRUE); +model = this.getModelAdapter().getAtomSetCollectionReader("ligand", null, JU.Rdr.getBR(data), htParams); +isError = ((typeof(model)=='string')); +if (!isError) { +model = this.getModelAdapter().getAtomSetCollection(model); +isError = ((typeof(model)=='string')); +if (fname != null && !isError) this.scriptEcho(this.getModelAdapter().getAtomSetCollectionAuxiliaryInfo(model).get("modelLoadNote")); +}}}if (isError) { +this.scriptEcho(model.toString()); +this.ligandModels.put(id, Boolean.FALSE); +return null; +}return model; +}, "~S,~S,~S,~S"); +Clazz_defineMethod(c$, "openFileFull", +function(fileName, isAppend, htParams, loadScript){ +if (fileName == null) return null; +if (fileName.equals("String[]")) { +return null; +}var atomSetCollection; +var msg = "openFile(" + fileName + ")"; +JU.Logger.startTimer(msg); +htParams = this.setLoadParameters(htParams, isAppend); +var isLoadVariable = fileName.startsWith("@"); +var haveFileData = (htParams.containsKey("fileData")); +if (fileName.indexOf('$') == 0) htParams.put("smilesString", fileName.substring(1)); +var isString = (fileName.equals("string") || fileName.equals("Jmol Model Kit")); +var strModel = null; +if (haveFileData) { +strModel = htParams.get("fileData"); +if (htParams.containsKey("isData")) { +var o = this.loadInlineScript(strModel, '\0', isAppend, htParams); +this.lastData = (this.g.preserveState ? this.getDataManager().createFileData(strModel) : null); +return o; +}} else if (isString) { +strModel = this.ms.getInlineData(-1); +if (strModel == null) if (this.g.modelKitMode) strModel = "5\n\nC 0 0 0\nH .63 .63 .63\nH -.63 -.63 .63\nH -.63 .63 -.63\nH .63 -.63 -.63"; + else return "cannot find string data"; +if (loadScript != null) htParams.put("loadScript", loadScript = new JU.SB().append(JU.PT.rep(loadScript.toString(), "/*file*/$FILENAME$", "/*data*/data \"model inline\"\n" + strModel + "end \"model inline\""))); +}if (strModel != null) { +if (!isAppend) this.zap(true, false, false); +if (!isLoadVariable && (!haveFileData || isString)) this.getStateCreator().getInlineData(loadScript, strModel, isAppend, htParams.get("appendToModelIndex"), this.g.defaultLoadFilter); +atomSetCollection = this.fm.createAtomSetCollectionFromString(strModel, htParams, isAppend); +} else { +atomSetCollection = this.fm.createAtomSetCollectionFromFile(fileName, htParams, isAppend); +}JU.Logger.checkTimer(msg, false); +return atomSetCollection; +}, "~S,~B,java.util.Map,JU.SB"); +Clazz_overrideMethod(c$, "openStringInline", +function(strModel){ +var ret = this.openStringInlineParamsAppend(strModel, null, false); +this.refresh(1, "openStringInline"); +return ret; +}, "~S"); +Clazz_defineMethod(c$, "loadInline", +function(strModel){ +return this.loadInlineScriptRepaint(strModel, this.g.inlineNewlineChar, false); +}, "~S"); +Clazz_defineMethod(c$, "loadInline", +function(strModel, newLine){ +return this.loadInlineScriptRepaint(strModel, newLine, false); +}, "~S,~S"); +Clazz_overrideMethod(c$, "loadInlineAppend", +function(strModel, isAppend){ +return this.loadInlineScriptRepaint(strModel, '\0', isAppend); +}, "~S,~B"); +Clazz_defineMethod(c$, "loadInlineScriptRepaint", +function(strModel, newLine, isAppend){ +var ret = this.loadInlineScript(strModel, newLine, isAppend, null); +this.refresh(1, "loadInlineScript"); +return ret; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "loadInline", +function(arrayModels){ +return this.loadInline(arrayModels, false); +}, "~A"); +Clazz_defineMethod(c$, "loadInline", +function(arrayModels, isAppend){ +if (arrayModels == null || arrayModels.length == 0) return null; +var ret = this.openStringsInlineParamsAppend(arrayModels, new java.util.Hashtable(), isAppend); +this.refresh(1, "loadInline String[]"); +return ret; +}, "~A,~B"); +Clazz_defineMethod(c$, "loadInline", +function(arrayData, isAppend){ +if (arrayData == null || arrayData.size() == 0) return null; +if (!isAppend) this.zap(true, false, false); +var list = new JU.Lst(); +for (var i = 0; i < arrayData.size(); i++) list.addLast(arrayData.get(i)); + +var atomSetCollection = this.fm.createAtomSeCollectionFromArrayData(list, this.setLoadParameters(null, isAppend), isAppend); +var ret = this.createModelSetAndReturnError(atomSetCollection, isAppend, null, new java.util.Hashtable()); +this.refresh(1, "loadInline"); +return ret; +}, "java.util.List,~B"); +Clazz_defineMethod(c$, "loadInlineScript", +function(strModel, newLine, isAppend, htParams){ +if (strModel == null || strModel.length == 0) return null; +strModel = JV.Viewer.fixInlineString(strModel, newLine); +if (newLine.charCodeAt(0) != 0) JU.Logger.info("loading model inline, " + strModel.length + " bytes, with newLine character " + (newLine).charCodeAt(0) + " isAppend=" + isAppend); +if (JU.Logger.debugging) JU.Logger.debug(strModel); +var datasep = this.getDataSeparator(); +var i; +if (datasep != null && datasep !== "" && (i = strModel.indexOf(datasep)) >= 0 && strModel.indexOf("# Jmol state") < 0) { +var n = 2; +while ((i = strModel.indexOf(datasep, i + 1)) >= 0) n++; + +var strModels = new Array(n); +var pt = 0; +var pt0 = 0; +for (i = 0; i < n; i++) { +pt = strModel.indexOf(datasep, pt0); +if (pt < 0) pt = strModel.length; +strModels[i] = strModel.substring(pt0, pt); +pt0 = pt + datasep.length; +} +return this.openStringsInlineParamsAppend(strModels, htParams, isAppend); +}return this.openStringInlineParamsAppend(strModel, htParams, isAppend); +}, "~S,~S,~B,java.util.Map"); +c$.fixInlineString = Clazz_defineMethod(c$, "fixInlineString", +function(strModel, newLine){ +var i; +if (strModel.indexOf("\\/n") >= 0) { +strModel = JU.PT.rep(strModel, "\n", ""); +strModel = JU.PT.rep(strModel, "\\/n", "\n"); +newLine = String.fromCharCode( 0); +}if (newLine.charCodeAt(0) != 0 && newLine != '\n') { +var repEmpty = (strModel.indexOf('\n') >= 0); +var len = strModel.length; +for (i = 0; i < len && strModel.charAt(i) == ' '; ++i) { +} +if (i < len && strModel.charAt(i) == newLine) strModel = strModel.substring(i + 1); +if (repEmpty) strModel = JU.PT.rep(strModel, "" + newLine, ""); + else strModel = strModel.$replace(newLine, '\n'); +}return strModel; +}, "~S,~S"); +Clazz_defineMethod(c$, "openStringInlineParamsAppend", +function(strModel, htParams, isAppend){ +htParams = this.setLoadParameters(htParams, isAppend); +var type = this.getModelAdapter().getFileTypeName(htParams.get("filter")); +if (type == null && (type = this.getModelAdapter().getFileTypeName(JU.Rdr.getBR(strModel))) == null) return "unknown file type"; +if (type.equals("spt")) { +return "cannot open script inline"; +}var loadScript = htParams.get("loadScript"); +var isLoadCommand = htParams.containsKey("isData"); +if (loadScript == null) loadScript = new JU.SB(); +if (!isAppend) this.zap(true, false, false); +if (!isLoadCommand) this.getStateCreator().getInlineData(loadScript, strModel, isAppend, htParams.get("appendToModelIndex"), this.g.defaultLoadFilter); +var atomSetCollection = this.fm.createAtomSetCollectionFromString(strModel, htParams, isAppend); +return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~S,java.util.Map,~B"); +Clazz_defineMethod(c$, "openStringsInlineParamsAppend", +function(arrayModels, htParams, isAppend){ +var loadScript = new JU.SB(); +if (!isAppend) this.zap(true, false, false); +var atomSetCollection = this.fm.createAtomSeCollectionFromStrings(arrayModels, loadScript, this.setLoadParameters(htParams, isAppend), isAppend); +return this.createModelSetAndReturnError(atomSetCollection, isAppend, loadScript, htParams); +}, "~A,java.util.Map,~B"); +Clazz_defineMethod(c$, "getInlineChar", +function(){ +return this.g.inlineNewlineChar; +}); +Clazz_defineMethod(c$, "getDataSeparator", +function(){ +return this.g.getParameter("dataseparator", true); +}); +Clazz_defineMethod(c$, "createModelSetAndReturnError", +function(atomSetCollection, isAppend, loadScript, htParams){ +JU.Logger.startTimer("creating model"); +var fullPathName = this.fm.getFullPathName(false); +var fileName = this.fm.getFileName(); +var errMsg; +if (loadScript == null) { +this.setBooleanPropertyTok("preserveState", 603979898, false); +loadScript = new JU.SB().append("load \"???\""); +}if ((typeof(atomSetCollection)=='string')) { +errMsg = atomSetCollection; +this.setFileLoadStatus(J.c.FIL.NOT_LOADED, fullPathName, null, null, errMsg, null); +if (this.displayLoadErrors && !isAppend && !errMsg.equals("#CANCELED#") && !errMsg.startsWith(JV.JC.READER_NOT_FOUND)) this.zapMsg(errMsg); +return errMsg; +}if (isAppend) this.clearAtomSets(); + else if (this.g.modelKitMode && !fileName.equals("Jmol Model Kit")) this.setModelKitMode(false); +this.setFileLoadStatus(J.c.FIL.CREATING_MODELSET, fullPathName, fileName, null, null, null); +this.pushHoldRepaintWhy("createModelSet"); +this.setErrorMessage(null, null); +try { +var bsNew = new JU.BS(); +this.mm.createModelSet(fullPathName, fileName, loadScript, atomSetCollection, bsNew, isAppend); +if (!bsNew.isEmpty()) { +var jmolScript = this.ms.getInfoM("jmolscript"); +if (this.ms.getMSInfoB("doMinimize")) { +try { +var eval = htParams.get("eval"); +var stereo = this.getAtomBitSet("_C & connected(3) & !connected(double)"); +stereo.and(bsNew); +if (stereo.nextSetBit(0) >= 0) { +bsNew.or(this.addHydrogens(stereo, 41)); +}this.minimize(eval, 2147483647, 0, bsNew, null, null, 0, 185); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} else { +this.addHydrogens(bsNew, 9); +}if (jmolScript != null) this.ms.msInfo.put("jmolscript", jmolScript); +}this.initializeModel(isAppend); +} catch (er) { +if (Clazz_exceptionOf(er, Error)){ +this.handleError(er, true); +errMsg = this.getShapeErrorState(); +errMsg = ("ERROR creating model: " + er + (errMsg.length == 0 ? "" : "|" + errMsg)); +this.zapMsg(errMsg); +this.setErrorMessage(errMsg, null); +} else { +throw er; +} +} +this.popHoldRepaint("createModelSet \u0001## REPAINT_IGNORE ##"); +errMsg = this.getErrorMessage(); +this.setFileLoadStatus(J.c.FIL.CREATED, fullPathName, fileName, this.ms.modelSetName, errMsg, htParams.get("async")); +if (isAppend) { +this.selectAll(); +this.setTainted(true); +this.axesAreTainted = true; +}atomSetCollection = null; +JU.Logger.checkTimer("creating model", false); +System.gc(); +return errMsg; +}, "~O,~B,JU.SB,java.util.Map"); +Clazz_defineMethod(c$, "loadAtomDataAndReturnError", +function(atomSetCollection, tokType){ +if ((typeof(atomSetCollection)=='string')) return atomSetCollection; +this.setErrorMessage(null, null); +try { +var script = this.mm.createAtomDataSet(atomSetCollection, tokType); +switch (tokType) { +case 1145047049: +if (script != null) this.runScriptCautiously(script); +break; +case 4166: +this.setStatusFrameChanged(true, false); +break; +case 1648363544: +this.shm.deleteVdwDependentShapes(null); +break; +} +} catch (er) { +if (Clazz_exceptionOf(er, Error)){ +this.handleError(er, true); +var errMsg = this.getShapeErrorState(); +errMsg = ("ERROR adding atom data: " + er + (errMsg.length == 0 ? "" : "|" + errMsg)); +this.zapMsg(errMsg); +this.setErrorMessage(errMsg, null); +this.setParallel(false); +} else { +throw er; +} +} +return this.getErrorMessage(); +}, "~O,~N"); +Clazz_defineMethod(c$, "getCurrentFileAsString", +function(state){ +var filename = this.fm.getFullPathName(false); +if (filename.equals("string") || filename.equals("Jmol Model Kit")) return this.ms.getInlineData(this.am.cmi); +if (filename.equals("String[]")) return filename; +if (filename === "JSNode") return ""; +return this.getFileAsString4(filename, -1, true, false, false, state); +}, "~S"); +Clazz_defineMethod(c$, "getFullPathNameOrError", +function(filename){ +var data = new Array(2); +this.fm.getFullPathNameOrError(filename, false, data); +return data; +}, "~S"); +Clazz_defineMethod(c$, "getFileAsString3", +function(name, checkProtected, state){ +return this.getFileAsString4(name, -1, false, false, checkProtected, state); +}, "~S,~B,~S"); +Clazz_defineMethod(c$, "getFileAsString4", +function(name, nBytesMax, doSpecialLoad, allowBinary, checkProtected, state){ +if (name == null) return this.getCurrentFileAsString(state); +var data = Clazz_newArray(-1, [name, null]); +this.fm.getFileDataAsString(data, nBytesMax, doSpecialLoad, allowBinary, checkProtected); +return data[1]; +}, "~S,~N,~B,~B,~B,~S"); +Clazz_defineMethod(c$, "getAsciiFileOrNull", +function(name){ +var data = Clazz_newArray(-1, [name, null]); +return (this.fm.getFileDataAsString(data, -1, false, false, false) ? data[1] : null); +}, "~S"); +Clazz_defineMethod(c$, "autoCalculate", +function(tokProperty, dataType){ +switch (tokProperty) { +case 1111490575: +this.ms.getSurfaceDistanceMax(); +break; +case 1111490574: +this.ms.calculateStraightnessAll(); +break; +case 1111490587: +this.ms.calculateDssrProperty(dataType); +} +}, "~N,~S"); +Clazz_defineMethod(c$, "calculateStraightness", +function(){ +this.ms.haveStraightness = false; +this.ms.calculateStraightnessAll(); +}); +Clazz_defineMethod(c$, "calculateSurface", +function(bsSelected, envelopeRadius){ +if (bsSelected == null) bsSelected = this.bsA(); +if (envelopeRadius == 3.4028235E38 || envelopeRadius == -1) this.ms.addStateScript("calculate surfaceDistance " + (envelopeRadius == 3.4028235E38 ? "FROM" : "WITHIN"), null, bsSelected, null, "", false, true); +return this.ms.calculateSurface(bsSelected, envelopeRadius); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getStructureList", +function(){ +return this.g.getStructureList(); +}); +Clazz_defineMethod(c$, "setStructureList", +function(list, type){ +this.g.setStructureList(list, type); +this.ms.setStructureList(this.getStructureList()); +}, "~A,J.c.STR"); +Clazz_defineMethod(c$, "calculateStructures", +function(bsAtoms, asDSSP, setStructure, version){ +if (bsAtoms == null) bsAtoms = this.bsA(); +return this.ms.calculateStructures(bsAtoms, asDSSP, !this.am.animationOn, this.g.dsspCalcHydrogen, setStructure, version); +}, "JU.BS,~B,~B,~N"); +Clazz_defineMethod(c$, "getAnnotationParser", +function(isDSSR){ +return (isDSSR ? (this.dssrParser == null ? (this.dssrParser = J.api.Interface.getOption("dssx.DSSR1", this, "script")) : this.dssrParser) : (this.annotationParser == null ? (this.annotationParser = J.api.Interface.getOption("dssx.AnnotationParser", this, "script")) : this.annotationParser)); +}, "~B"); +Clazz_overrideMethod(c$, "getSelectedAtomIterator", +function(bsSelected, isGreaterOnly, modelZeroBased, isMultiModel){ +return this.ms.getSelectedAtomIterator(bsSelected, isGreaterOnly, modelZeroBased, false, isMultiModel); +}, "JU.BS,~B,~B,~B"); +Clazz_overrideMethod(c$, "setIteratorForAtom", +function(iterator, atomIndex, distance){ +this.ms.setIteratorForAtom(iterator, -1, atomIndex, distance, null); +}, "J.api.AtomIndexIterator,~N,~N"); +Clazz_overrideMethod(c$, "setIteratorForPoint", +function(iterator, modelIndex, pt, distance){ +this.ms.setIteratorForPoint(iterator, modelIndex, pt, distance); +}, "J.api.AtomIndexIterator,~N,JU.T3,~N"); +Clazz_overrideMethod(c$, "fillAtomData", +function(atomData, mode){ +atomData.programInfo = "Jmol Version " + JV.Viewer.getJmolVersion(); +atomData.fileName = this.fm.getFileName(); +this.ms.fillAtomData(atomData, mode); +}, "J.atomdata.AtomData,~N"); +Clazz_defineMethod(c$, "addStateScript", +function(script, addFrameNumber, postDefinitions){ +return this.ms.addStateScript(script, null, null, null, null, addFrameNumber, postDefinitions); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getMinimizer", +function(createNew){ +return (this.minimizer == null && createNew ? (this.minimizer = J.api.Interface.getInterface("JM.Minimizer", this, "script")).setProperty("vwr", this) : this.minimizer); +}, "~B"); +Clazz_defineMethod(c$, "getSmilesMatcher", +function(){ +return (this.smilesMatcher == null ? (this.smilesMatcher = J.api.Interface.getInterface("JS.SmilesMatcher", this, "script")) : this.smilesMatcher); +}); +Clazz_defineMethod(c$, "clearModelDependentObjects", +function(){ +this.setFrameOffsets(null, false); +this.stopMinimization(); +this.minimizer = null; +this.smilesMatcher = null; +if (this.modelkit != null) this.modelkit.clearAtomConstraints(); +}); +Clazz_defineMethod(c$, "zap", +function(notify, resetUndo, zapModelKit){ +this.clearThreads(); +if (this.mm.modelSet == null) { +this.mm.zap(); +} else { +this.ligandModelSet = null; +this.clearModelDependentObjects(); +this.fm.clear(); +this.clearRepaintManager(-1); +this.am.clear(); +this.tm.clear(); +this.slm.clear(); +this.hasSelected = true; +this.clearAllMeasurements(); +this.clearMinimization(); +this.gdata.clear(); +this.mm.zap(); +if (this.scm != null) this.scm.clear(false); +if (this.nmrCalculation != null) this.getNMRCalculation().setChemicalShiftReference(null, 0); +if (this.haveDisplay) { +this.mouse.clear(); +this.clearTimeouts(); +this.acm.clear(); +}this.stm.clear(this.g); +this.tempArray.clear(); +this.chainMap.clear(); +this.chainList.clear(); +this.chainCaseSpecified = false; +this.definedAtomSets.clear(); +this.lastData = null; +if (this.dm != null) this.dm.clear(); +if (!this.g.doublePrecision && this.g.legacyJavaFloat) this.setBooleanPropertyTok("legacyjavafloat", 603979874, false); +if (resetUndo) { +if (zapModelKit) this.g.removeParam("_pngjFile"); +if (zapModelKit && this.g.modelKitMode) { +this.loadDefaultModelKitModel(null); +} else { +this.setPickingMode(null, 1); +}this.undoMoveAction(4165, -2); +}System.gc(); +}this.initializeModel(false); +if (notify) { +this.setFileLoadStatus(J.c.FIL.ZAPPED, null, (resetUndo ? "resetUndo" : this.getZapName()), null, null, null); +}if (JU.Logger.debugging) JU.Logger.checkMemory(); +}, "~B,~B,~B"); +Clazz_defineMethod(c$, "loadDefaultModelKitModel", +function(htParams){ +if (this.getModelkit(false).isHidden() || this.getOperativeSymmetry() != null) return; +this.openStringInlineParamsAppend(this.getModelkit(false).getDefaultModel(), htParams, true); +this.setRotationRadius(5.0, true); +this.setStringProperty("picking", "assignAtom_C"); +this.setStringProperty("picking", "assignBond_p"); +}, "java.util.Map"); +Clazz_defineMethod(c$, "zapMsg", +function(msg){ +this.zap(true, true, false); +this.echoMessage(msg); +}, "~S"); +Clazz_defineMethod(c$, "echoMessage", +function(msg){ +var iShape = 31; +this.shm.loadShape(iShape); +this.setShapeProperty(iShape, "font", this.getFont3D("SansSerif", "Plain", 20)); +this.setShapeProperty(iShape, "target", "error"); +this.setShapeProperty(iShape, "text", msg); +}, "~S"); +Clazz_defineMethod(c$, "initializeModel", +function(isAppend){ +this.clearThreads(); +if (isAppend) { +this.am.initializePointers(1); +return; +}this.reset(true); +this.selectAll(); +this.setModelkitPropertySafely("initializemodel", null); +this.movingSelected = false; +this.slm.noneSelected = Boolean.FALSE; +this.setHoverEnabled(true); +this.setSelectionHalosEnabled(false); +this.tm.setCenter(); +this.am.initializePointers(1); +this.setBooleanPropertyTok("multipleBondBananas", 603979886, false); +if (!this.ms.getMSInfoB("isPyMOL")) { +this.clearAtomSets(); +this.setCurrentModelIndex(0); +}this.setBackgroundModelIndex(-1); +this.setFrankOn(this.getShowFrank()); +this.shm.setScale(); +this.startHoverWatcher(true); +this.setTainted(true); +this.finalizeTransformParameters(); +}, "~B"); +Clazz_defineMethod(c$, "startHoverWatcher", +function(tf){ +if (tf && this.inMotion || !this.haveDisplay || tf && (!this.hoverEnabled && !this.sm.haveHoverCallback() || this.am.animationOn)) return; +this.acm.startHoverWatcher(tf); +}, "~B"); +Clazz_overrideMethod(c$, "getModelSetPathName", +function(){ +return this.mm.modelSetPathName; +}); +Clazz_overrideMethod(c$, "getModelSetFileName", +function(){ +return (this.mm.fileName == null ? this.getZapName() : this.mm.fileName); +}); +Clazz_defineMethod(c$, "getUnitCellInfoText", +function(){ +var c = this.getCurrentUnitCell(); +return (c == null ? "not applicable" : c.getUnitCellInfo(true)); +}); +Clazz_defineMethod(c$, "getUnitCellInfo", +function(infoType){ +var symmetry = this.getCurrentUnitCell(); +return (symmetry == null ? NaN : symmetry.getUnitCellInfoType(infoType)); +}, "~N"); +Clazz_defineMethod(c$, "getV0abc", +function(iModel, def){ +var uc = (iModel < 0 ? this.getCurrentUnitCell() : this.getUnitCell(iModel)); +if (uc == null) uc = this.getSymTemp(); +return (uc == null ? null : uc.getV0abc(def, null)); +}, "~N,~O"); +Clazz_defineMethod(c$, "getCurrentUnitCell", +function(){ +var iAtom = this.am.getUnitCellAtomIndex(); +return (iAtom >= 0 ? this.ms.getUnitCellForAtom(iAtom) : this.getUnitCell(this.am.cmi)); +}); +Clazz_defineMethod(c$, "getUnitCell", +function(modelIndex){ +if (modelIndex >= 0) return this.ms.getUnitCell(modelIndex); +var models = this.getVisibleFramesBitSet(); +var ucLast = null; +for (var i = models.nextSetBit(0); i >= 0; i = models.nextSetBit(i + 1)) { +var uc = this.ms.getUnitCell(i); +if (uc == null) continue; +if (ucLast == null) { +ucLast = uc; +continue; +}if (!ucLast.unitCellEquals(uc)) return null; +} +return ucLast; +}, "~N"); +Clazz_defineMethod(c$, "getPolymerPointsAndVectors", +function(bs, vList){ +this.ms.getPolymerPointsAndVectors(bs, vList, this.g.traceAlpha, this.g.sheetSmoothing); +}, "JU.BS,JU.Lst"); +Clazz_defineMethod(c$, "getHybridizationAndAxes", +function(atomIndex, z, x, lcaoType){ +return this.ms.getHybridizationAndAxes(atomIndex, 0, z, x, lcaoType, true, true, false, null); +}, "~N,JU.V3,JU.V3,~S"); +Clazz_defineMethod(c$, "getAllAtoms", +function(){ +return this.getModelUndeletedAtomsBitSet(-1); +}); +Clazz_defineMethod(c$, "getFrameAtoms", +function(){ +return this.getModelUndeletedAtomsBitSetBs(this.getVisibleFramesBitSet()); +}); +Clazz_overrideMethod(c$, "getVisibleFramesBitSet", +function(){ +var bs = JU.BSUtil.copy(this.am.bsVisibleModels); +if (this.ms.trajectory != null) this.ms.trajectory.selectDisplayed(bs); +return bs; +}); +Clazz_defineMethod(c$, "getModelUndeletedAtomsBitSet", +function(modelIndex){ +return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeleted(modelIndex, true), false); +}, "~N"); +Clazz_defineMethod(c$, "getModelUndeletedAtomsBitSetBs", +function(bsModels){ +return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeletedBs(bsModels), false); +}, "JU.BS"); +Clazz_overrideMethod(c$, "getBoundBoxCenter", +function(){ +return this.ms.getBoundBoxCenter(this.am.cmi); +}); +Clazz_defineMethod(c$, "calcBoundBoxDimensions", +function(bs, scale){ +this.ms.calcBoundBoxDimensions(bs, scale); +this.axesAreTainted = true; +}, "JU.BS,~N"); +Clazz_overrideMethod(c$, "getBoundBoxCornerVector", +function(){ +return this.ms.getBoundBoxCornerVector(); +}); +Clazz_overrideMethod(c$, "getModelSetProperties", +function(){ +return this.ms.modelSetProperties; +}); +Clazz_overrideMethod(c$, "getModelProperties", +function(modelIndex){ +return this.ms.am[modelIndex].properties; +}, "~N"); +Clazz_defineMethod(c$, "getModelForAtomIndex", +function(iatom){ +return this.ms.am[this.ms.at[iatom].mi]; +}, "~N"); +Clazz_defineMethod(c$, "getModelIndexForAtom", +function(iatom){ +return this.ms.at[iatom].mi; +}, "~N"); +Clazz_overrideMethod(c$, "getModelSetAuxiliaryInfo", +function(){ +return this.ms.getModelSetAuxiliaryInfo(null); +}); +Clazz_overrideMethod(c$, "getModelNumber", +function(modelIndex){ +return (modelIndex < 0 ? modelIndex : this.ms.getModelNumber(modelIndex)); +}, "~N"); +Clazz_defineMethod(c$, "getModelFileNumber", +function(modelIndex){ +return (modelIndex < 0 ? 0 : this.ms.modelFileNumbers[modelIndex]); +}, "~N"); +Clazz_overrideMethod(c$, "getModelNumberDotted", +function(modelIndex){ +return modelIndex < 0 ? "0" : this.ms.getModelNumberDotted(modelIndex); +}, "~N"); +Clazz_overrideMethod(c$, "getModelName", +function(modelIndex){ +return this.ms.getModelName(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "modelHasVibrationVectors", +function(modelIndex){ +return (this.ms.getLastVibrationVector(modelIndex, 4166) >= 0); +}, "~N"); +Clazz_defineMethod(c$, "getBondsForSelectedAtoms", +function(bsAtoms){ +return this.ms.getBondsForSelectedAtoms(bsAtoms, this.g.bondModeOr || JU.BSUtil.cardinalityOf(bsAtoms) == 1); +}, "JU.BS"); +Clazz_defineMethod(c$, "frankClicked", +function(x, y){ +return !this.g.disablePopupMenu && this.getShowFrank() && this.shm.checkFrankclicked(x, y); +}, "~N,~N"); +Clazz_defineMethod(c$, "frankClickedModelKit", +function(x, y){ +return !this.g.disablePopupMenu && this.isModelKitOpen() && x >= 0 && y >= 0 && x < 40 && y < 104; +}, "~N,~N"); +Clazz_overrideMethod(c$, "findNearestAtomIndex", +function(x, y){ +return this.findNearestAtomIndexMovable(x, y, false); +}, "~N,~N"); +Clazz_defineMethod(c$, "findNearestAtomIndexMovable", +function(x, y, mustBeMovable){ +return (!this.g.atomPicking ? -1 : this.ms.findNearestAtomIndex(x, y, mustBeMovable ? this.slm.getMotionFixedAtoms() : null, this.g.minPixelSelRadius)); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "toCartesian", +function(pt, ignoreOffset){ +this.toCartesianUC(null, pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "toCartesianUC", +function(unitCell, pt, ignoreOffset){ +if (unitCell == null) unitCell = this.getCurrentUnitCell(); +if (unitCell != null) { +unitCell.toCartesian(pt, ignoreOffset); +if (!this.g.legacyJavaFloat) JU.PT.fixPtFloats(pt, 10000.0); +}}, "J.api.SymmetryInterface,JU.T3,~B"); +Clazz_defineMethod(c$, "toFractional", +function(pt, ignoreOffset){ +this.toFractionalUC(null, pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "toFractionalUC", +function(unitCell, pt, ignoreOffset){ +if (unitCell == null) unitCell = this.getCurrentUnitCell(); +if (unitCell != null) { +unitCell.toFractional(pt, ignoreOffset); +if (!this.g.legacyJavaFloat) JU.PT.fixPtFloats(pt, 100000.0); +}}, "J.api.SymmetryInterface,JU.T3,~B"); +Clazz_defineMethod(c$, "toUnitCell", +function(pt, offset){ +var unitCell = this.getCurrentUnitCell(); +if (unitCell != null) unitCell.toUnitCell(pt, offset); +}, "JU.P3,JU.P3"); +Clazz_defineMethod(c$, "setCurrentCage", +function(isosurfaceId){ +var data = Clazz_newArray(-1, [isosurfaceId, null]); +this.shm.getShapePropertyData(24, "unitCell", data); +this.ms.setModelCage(this.am.cmi, data[1]); +}, "~S"); +Clazz_defineMethod(c$, "addUnitCellOffset", +function(pt){ +var unitCell = this.getCurrentUnitCell(); +if (unitCell == null) return; +pt.add(unitCell.getCartesianOffset()); +}, "JU.P3"); +Clazz_defineMethod(c$, "setAtomData", +function(type, name, coordinateData, isDefault){ +this.ms.setAtomData(type, name, coordinateData, isDefault); +if (type == 2) this.checkCoordinatesChanged(null); +this.refreshMeasures(true); +}, "~N,~S,~S,~B"); +Clazz_overrideMethod(c$, "setCenterSelected", +function(){ +this.setCenterBitSet(this.bsA(), true); +}); +Clazz_defineMethod(c$, "setApplySymmetryToBonds", +function(TF){ +this.g.applySymmetryToBonds = TF; +}, "~B"); +Clazz_overrideMethod(c$, "setBondTolerance", +function(bondTolerance){ +this.g.setF("bondTolerance", bondTolerance); +this.g.bondTolerance = bondTolerance; +}, "~N"); +Clazz_overrideMethod(c$, "setMinBondDistance", +function(minBondDistance){ +this.g.setF("minBondDistance", minBondDistance); +this.g.minBondDistance = minBondDistance; +}, "~N"); +Clazz_defineMethod(c$, "getAtomsNearPt", +function(distance, coord, bs){ +if (bs == null) bs = new JU.BS(); +this.ms.getAtomsWithin(distance, coord, bs, -1); +return bs; +}, "~N,JU.P3,JU.BS"); +Clazz_defineMethod(c$, "getBranchBitSet", +function(atomIndex, atomIndexNot, allowCyclic){ +if (atomIndex < 0 || atomIndex >= this.ms.ac) return new JU.BS(); +return JU.JmolMolecule.getBranchBitSet(this.ms.at, atomIndex, this.getModelUndeletedAtomsBitSet(this.ms.at[atomIndex].mi), null, atomIndexNot, allowCyclic, true); +}, "~N,~N,~B"); +Clazz_overrideMethod(c$, "getElementsPresentBitSet", +function(modelIndex){ +return this.ms.getElementsPresentBitSet(modelIndex); +}, "~N"); +Clazz_defineMethod(c$, "getFileHeader", +function(){ +return this.ms.getFileHeader(this.am.cmi); +}); +Clazz_defineMethod(c$, "getFileData", +function(){ +return this.ms.getFileData(this.am.cmi); +}); +Clazz_defineMethod(c$, "getCifData", +function(modelIndex){ +return this.readCifData(this.ms.getModelFileName(modelIndex), this.ms.getModelFileType(modelIndex).toUpperCase()); +}, "~N"); +Clazz_defineMethod(c$, "readCifData", +function(fileName, type){ +var fname = (fileName == null ? this.ms.getModelFileName(this.am.cmi) : fileName); +if (type == null && fname != null && fname.toUpperCase().indexOf("BCIF") >= 0) { +var is = this.fm.getBufferedInputStream(fname); +try { +return (J.api.Interface.getInterface("JU.MessagePackReader", this, "script")).getMapForStream(is); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +return new java.util.Hashtable(); +} else { +throw e; +} +} +}var data = (fileName == null || fileName.length == 0 ? this.getCurrentFileAsString("script") : this.getFileAsString3(fileName, false, null)); +if (data == null || data.length < 2) return null; +var rdr = JU.Rdr.getBR(data); +if (type == null) type = this.getModelAdapter().getFileTypeName(rdr); +return (type == null ? null : this.readCifData(null, rdr, type)); +}, "~S,~S"); +Clazz_defineMethod(c$, "readCifData", +function(fileName, rdrOrStringData, type){ +if (rdrOrStringData == null) rdrOrStringData = this.getFileAsString(fileName); +var rdr = (Clazz_instanceOf(rdrOrStringData,"java.io.BufferedReader") ? rdrOrStringData : JU.Rdr.getBR(rdrOrStringData)); +return JU.Rdr.readCifData(J.api.Interface.getInterface(("Cif2".equals(type) ? "J.adapter.readers.cif.Cif2DataParser" : "JU.CifDataParser"), this, "script"), rdr); +}, "~S,~O,~S"); +Clazz_defineMethod(c$, "getStateCreator", +function(){ +if (this.jsc == null) (this.jsc = J.api.Interface.getInterface("JV.StateCreator", this, "script")).setViewer(this); +return this.jsc; +}); +Clazz_defineMethod(c$, "getWrappedStateScript", +function(){ +return this.getOutputManager().getWrappedState(null, null, null, null); +}); +Clazz_overrideMethod(c$, "getStateInfo", +function(){ +return this.getStateInfo3(null, 0, 0); +}); +Clazz_defineMethod(c$, "getStateInfo3", +function(type, width, height){ +return (this.g.preserveState ? this.getStateCreator().getStateScript(type, width, height) : ""); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "getStructureState", +function(){ +return this.getStateCreator().getModelState(null, false, true); +}); +Clazz_defineMethod(c$, "getCoordinateState", +function(bsSelected){ +return this.getStateCreator().getAtomicPropertyState(2, bsSelected); +}, "JU.BS"); +Clazz_defineMethod(c$, "setCurrentColorRange", +function(label){ +var data = this.getDataObj(label, null, 1); +var bs = (data == null ? null : (this.getDataObj(label, null, -1))[2]); +if (bs != null && this.g.rangeSelected) bs.and(this.bsA()); +this.cm.setPropertyColorRangeData(data, bs); +}, "~S"); +Clazz_defineMethod(c$, "setData", +function(key, data, dataType, matchField, matchFieldColumnCount, dataField, dataFieldColumnCount){ +this.getDataManager().setData(key, this.lastData = data, dataType, this.ms.ac, matchField, matchFieldColumnCount, dataField, dataFieldColumnCount); +}, "~S,~A,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getDataObj", +function(key, bsSelected, dataType){ +return (key == null && dataType == -2 ? this.lastData : this.getDataManager().getData(key, bsSelected, dataType)); +}, "~S,JU.BS,~N"); +Clazz_defineMethod(c$, "autoHbond", +function(bsFrom, bsTo, onlyIfHaveCalculated){ +if (bsFrom == null) bsFrom = bsTo = this.bsA(); +return this.ms.autoHbond(bsFrom, bsTo, onlyIfHaveCalculated); +}, "JU.BS,JU.BS,~B"); +Clazz_defineMethod(c$, "getDefaultMeasurementLabel", +function(nPoints){ +switch (nPoints) { +case 2: +return this.g.defaultDistanceLabel; +case 3: +return this.g.defaultAngleLabel; +default: +return this.g.defaultTorsionLabel; +} +}, "~N"); +Clazz_overrideMethod(c$, "getMeasurementCount", +function(){ +var count = this.getShapePropertyAsInt(6, "count"); +return count <= 0 ? 0 : count; +}); +Clazz_overrideMethod(c$, "getMeasurementStringValue", +function(i){ +return "" + this.shm.getShapePropertyIndex(6, "stringValue", i); +}, "~N"); +Clazz_defineMethod(c$, "getMeasurementInfoAsString", +function(){ +return this.getShapeProperty(6, "infostring"); +}); +Clazz_overrideMethod(c$, "getMeasurementCountPlusIndices", +function(i){ +return this.shm.getShapePropertyIndex(6, "countPlusIndices", i); +}, "~N"); +Clazz_defineMethod(c$, "setPendingMeasurement", +function(mp){ +this.shm.loadShape(6); +this.setShapeProperty(6, "pending", mp); +}, "JM.MeasurementPending"); +Clazz_defineMethod(c$, "getPendingMeasurement", +function(){ +return this.getShapeProperty(6, "pending"); +}); +Clazz_defineMethod(c$, "clearAllMeasurements", +function(){ +this.setShapeProperty(6, "clear", null); +}); +Clazz_overrideMethod(c$, "clearMeasurements", +function(){ +this.evalString("measures delete"); +}); +Clazz_defineMethod(c$, "setAnimation", +function(tok){ +switch (tok) { +case 1073742098: +this.am.reverseAnimation(); +case 1073742096: +case 4143: +if (!this.am.animationOn) this.am.resumeAnimation(); +return; +case 20487: +if (this.am.animationOn && !this.am.animationPaused) this.am.pauseAnimation(); +return; +case 1073742037: +this.am.setAnimationNext(); +return; +case 1073742108: +this.am.setAnimationPrevious(); +return; +case 1073741942: +case 1073742125: +this.am.rewindAnimation(); +return; +case 1073741993: +this.am.setAnimationLast(); +return; +} +}, "~N"); +Clazz_overrideMethod(c$, "setAnimationFps", +function(fps){ +this.am.setAnimationFps(fps); +}, "~N"); +Clazz_defineMethod(c$, "setAnimationMode", +function(mode){ +if (mode.equalsIgnoreCase("once")) { +this.am.setAnimationReplayMode(1073742070, 0, 0); +} else if (mode.equalsIgnoreCase("loop")) { +this.am.setAnimationReplayMode(528411, 1, 1); +} else if (mode.startsWith("pal")) { +this.am.setAnimationReplayMode(1073742082, 1, 1); +}}, "~S"); +Clazz_defineMethod(c$, "setAnimationOn", +function(animationOn){ +var wasAnimating = this.am.animationOn; +if (animationOn == wasAnimating) return; +this.am.setAnimationOn(animationOn); +}, "~B"); +Clazz_defineMethod(c$, "setAnimationRange", +function(modelIndex1, modelIndex2){ +this.am.setAnimationRange(modelIndex1, modelIndex2); +}, "~N,~N"); +Clazz_defineMethod(c$, "defineAtomSets", +function(info){ +this.definedAtomSets.putAll(info); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setAnimDisplay", +function(bs){ +this.am.setDisplay(bs); +if (!this.am.animationOn) this.am.morph(this.am.currentMorphModel + 1); +}, "JU.BS"); +Clazz_defineMethod(c$, "setCurrentModelIndex", +function(modelIndex){ +if (modelIndex == -2147483648) { +this.prevFrame = -2147483648; +this.setCurrentModelIndexClear(this.am.cmi, true); +return; +}this.am.setModel(modelIndex, true); +}, "~N"); +Clazz_defineMethod(c$, "getTrajectoryState", +function(){ +return (this.ms.trajectory == null ? "" : this.ms.trajectory.getState()); +}); +Clazz_defineMethod(c$, "setFrameOffsets", +function(bsAtoms, isFull){ +this.tm.bsFrameOffsets = null; +if (isFull) this.clearModelDependentObjects(); + else this.tm.bsFrameOffsets = bsAtoms; +this.tm.frameOffsets = this.ms.getFrameOffsets(bsAtoms, isFull); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setCurrentModelIndexClear", +function(modelIndex, clearBackground){ +this.am.setModel(modelIndex, clearBackground); +}, "~N,~B"); +Clazz_defineMethod(c$, "haveFileSet", +function(){ +return (this.ms.mc > 1 && this.getModelNumber(2147483647) > 2000000); +}); +Clazz_defineMethod(c$, "setBackgroundModelIndex", +function(modelIndex){ +this.am.setBackgroundModelIndex(modelIndex); +this.g.setO("backgroundModel", this.ms.getModelNumberDotted(modelIndex)); +}, "~N"); +Clazz_defineMethod(c$, "setFrameVariables", +function(){ +this.g.setO("animationMode", JS.T.nameOf(this.am.animationReplayMode)); +this.g.setI("animationFps", this.am.animationFps); +this.g.setO("_firstFrame", this.am.getModelSpecial(-1)); +this.g.setO("_lastFrame", this.am.getModelSpecial(1)); +this.g.setF("_animTimeSec", this.am.getAnimRunTimeSeconds()); +this.g.setB("_animMovie", this.am.isMovie); +}); +Clazz_defineMethod(c$, "getInMotion", +function(includeAnim){ +return (this.inMotion || includeAnim && this.am.animationOn); +}, "~B"); +Clazz_overrideMethod(c$, "getMotionEventNumber", +function(){ +return this.motionEventNumber; +}); +Clazz_overrideMethod(c$, "setInMotion", +function(inMotion){ +if ( new Boolean (this.inMotion ^ inMotion).valueOf()) { +this.inMotion = inMotion; +this.resizeImage(0, 0, false, false, true); +if (inMotion) { +this.startHoverWatcher(false); +++this.motionEventNumber; +} else { +this.startHoverWatcher(true); +this.refresh(3, "vwr setInMotion " + inMotion); +}}}, "~B"); +Clazz_defineMethod(c$, "setRefreshing", +function(TF){ +this.refreshing = TF; +}, "~B"); +Clazz_defineMethod(c$, "getRefreshing", +function(){ +return this.refreshing; +}); +Clazz_overrideMethod(c$, "pushHoldRepaint", +function(){ +this.pushHoldRepaintWhy(null); +}); +Clazz_defineMethod(c$, "pushHoldRepaintWhy", +function(why){ +if (this.rm != null) this.rm.pushHoldRepaint(why); +}, "~S"); +Clazz_overrideMethod(c$, "popHoldRepaint", +function(why){ +if (this.rm != null) { +this.rm.popHoldRepaint(why.indexOf("\u0001## REPAINT_IGNORE ##") < 0, why); +}}, "~S"); +Clazz_overrideMethod(c$, "refresh", +function(mode, strWhy){ +if (this.rm == null || !this.refreshing || mode == 6 && this.getInMotion(true) || !this.isWebGL && mode == 7) return; +if (this.isWebGL) { +switch (mode) { +case 1: +case 2: +case 7: +this.tm.finalizeTransformParameters(); +if (this.html5Applet == null) return; +this.html5Applet._refresh(); +if (mode == 7) return; +break; +} +} else { +this.rm.repaintIfReady("refresh " + mode + " " + strWhy); +}if (this.sm.doSync()) this.sm.setSync(mode == 2 ? strWhy : null); +}, "~N,~S"); +Clazz_defineMethod(c$, "requestRepaintAndWait", +function(why){ +if (this.rm == null) return; +if (!this.haveDisplay) { +this.setModelVisibility(); +this.shm.finalizeAtoms(null, true); +return; +}this.rm.requestRepaintAndWait(why); +this.setSync(); +}, "~S"); +Clazz_defineMethod(c$, "clearShapeRenderers", +function(){ +this.clearRepaintManager(-1); +}); +Clazz_defineMethod(c$, "isRepaintPending", +function(){ +return (this.rm == null ? false : this.rm.isRepaintPending()); +}); +Clazz_overrideMethod(c$, "notifyViewerRepaintDone", +function(){ +if (this.rm != null) this.rm.repaintDone(); +this.am.repaintDone(); +}); +Clazz_defineMethod(c$, "areAxesTainted", +function(){ +var TF = this.axesAreTainted; +this.axesAreTainted = false; +return TF; +}); +Clazz_overrideMethod(c$, "generateOutputForExport", +function(params){ +return (this.noGraphicsAllowed || this.rm == null ? null : this.getOutputManager().getOutputFromExport(params)); +}, "java.util.Map"); +Clazz_defineMethod(c$, "clearRepaintManager", +function(iShape){ +if (this.rm != null) this.rm.clear(iShape); +}, "~N"); +Clazz_defineMethod(c$, "renderScreenImage", +function(g, width, height){ +this.renderScreenImageStereo(g, false, width, height); +}, "~O,~N,~N"); +Clazz_defineMethod(c$, "renderScreenImageStereo", +function(gLeft, checkStereoSlave, width, height){ +if (this.updateWindow(width, height)) { +if (!checkStereoSlave || this.gRight == null) { +this.getScreenImageBuffer(gLeft, false); +} else { +this.drawImage(this.gRight, this.getImage(true, false), 0, 0, this.tm.stereoDoubleDTI); +this.drawImage(gLeft, this.getImage(false, false), 0, 0, this.tm.stereoDoubleDTI); +}}if (this.captureParams != null && Boolean.FALSE !== this.captureParams.get("captureEnabled")) { +this.captureParams.remove("imagePixels"); +var t = (this.captureParams.get("endTime")).longValue(); +if (t > 0 && System.currentTimeMillis() + 50 > t) this.captureParams.put("captureMode", "end"); +this.processWriteOrCapture(this.captureParams); +}this.notifyViewerRepaintDone(); +}, "~O,~B,~N,~N"); +Clazz_defineMethod(c$, "updateJS", +function(){ +if (this.isWebGL) { +if (this.jsParams == null) { +this.jsParams = new java.util.Hashtable(); +this.jsParams.put("type", "JS"); +}if (this.updateWindow(0, 0)) this.render(); +this.notifyViewerRepaintDone(); +} else { +if (this.isStereoSlave) return; +this.renderScreenImageStereo(this.apiPlatform.getGraphics(null), true, 0, 0); +}}); +Clazz_defineMethod(c$, "updateJSView", +function(imodel, iatom){ +if (this.html5Applet == null) return; +var applet = this.html5Applet; +var doViewPick = true; +{ +doViewPick = (applet != null && applet._viewSet != null); +}if (doViewPick) this.html5Applet._atomPickedCallback(imodel, iatom); +}, "~N,~N"); +Clazz_overrideMethod(c$, "evalFile", +function(strFilename){ +return this.evalFileArgs(strFilename, null); +}, "~S"); +Clazz_overrideMethod(c$, "evalFileArgs", +function(strFilename, args){ +return (this.allowScripting && this.getScriptManager() != null ? this.scm.evalFileArgs(strFilename, args) : null); +}, "~S,~S"); +Clazz_defineMethod(c$, "getInsertedCommand", +function(){ +var s = this.insertedCommand; +this.insertedCommand = ""; +if (JU.Logger.debugging && s !== "") JU.Logger.debug("inserting: " + s); +return s; +}); +Clazz_overrideMethod(c$, "script", +function(strScript){ +return this.evalStringQuietSync(strScript, false, true); +}, "~S"); +Clazz_overrideMethod(c$, "evalString", +function(strScript){ +return this.evalStringQuietSync(strScript, false, true); +}, "~S"); +Clazz_overrideMethod(c$, "evalStringQuiet", +function(strScript){ +return this.evalStringQuietSync(strScript, true, true); +}, "~S"); +Clazz_defineMethod(c$, "evalStringQuietSync", +function(strScript, isQuiet, allowSyncScript){ +return (this.getScriptManager() == null ? null : this.scm.evalStringQuietSync(strScript, isQuiet, allowSyncScript)); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "clearScriptQueue", +function(){ +if (this.scm != null) this.scm.clearQueue(); +}); +Clazz_defineMethod(c$, "setScriptQueue", +function(TF){ +this.g.useScriptQueue = TF; +if (!TF) this.clearScriptQueue(); +}, "~B"); +Clazz_overrideMethod(c$, "checkHalt", +function(str, isInsert){ +return (this.scm != null && this.scm.checkHalt(str, isInsert)); +}, "~S,~B"); +Clazz_overrideMethod(c$, "scriptWait", +function(strScript){ +return this.evalWait("JSON", strScript, "+scriptStarted,+scriptStatus,+scriptEcho,+scriptTerminated"); +}, "~S"); +Clazz_overrideMethod(c$, "scriptWaitStatus", +function(strScript, statusList){ +return this.evalWait("object", strScript, statusList); +}, "~S,~S"); +Clazz_defineMethod(c$, "evalWait", +function(returnType, strScript, statusList){ +if (this.getScriptManager() == null) return null; +this.scm.waitForQueue(); +var doTranslateTemp = J.i18n.GT.setDoTranslate(false); +var ret = this.evalStringWaitStatusQueued(returnType, strScript, statusList, false, false); +J.i18n.GT.setDoTranslate(doTranslateTemp); +return ret; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "exitJmol", +function(){ +if (this.isApplet && !this.isJNLP) return; +if (this.headlessImageParams != null) { +try { +if (this.headless) this.outputToFile(this.headlessImageParams); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}if (JU.Logger.debugging) JU.Logger.debug("exitJmol -- exiting"); +System.out.flush(); +System.exit(0); +}); +Clazz_defineMethod(c$, "scriptCheckRet", +function(strScript, returnContext){ +return (this.getScriptManager() == null ? null : this.scm.scriptCheckRet(strScript, returnContext)); +}, "~S,~B"); +Clazz_overrideMethod(c$, "scriptCheck", +function(strScript){ +return this.scriptCheckRet(strScript, false); +}, "~S"); +Clazz_overrideMethod(c$, "isScriptExecuting", +function(){ +return (this.eval != null && this.eval.isExecuting()); +}); +Clazz_overrideMethod(c$, "haltScriptExecution", +function(){ +if (this.eval != null) { +this.eval.haltExecution(); +this.eval.stopScriptThreads(); +}this.setStringPropertyTok("pathForAllFiles", 545259572, ""); +this.clearTimeouts(); +}); +Clazz_defineMethod(c$, "pauseScriptExecution", +function(){ +if (this.eval != null) this.eval.pauseExecution(true); +}); +Clazz_defineMethod(c$, "resolveDatabaseFormat", +function(fileName){ +return (JV.Viewer.hasDatabasePrefix(fileName) || fileName.indexOf("cactus.nci.nih.gov/chemical/structure") >= 0 ? this.setLoadFormat(false, fileName, fileName.charAt(0), false) : fileName); +}, "~S"); +c$.hasDatabasePrefix = Clazz_defineMethod(c$, "hasDatabasePrefix", +function(fileName){ +return (fileName.length != 0 && JV.Viewer.isDatabaseCode(fileName.charAt(0))); +}, "~S"); +c$.isDatabaseCode = Clazz_defineMethod(c$, "isDatabaseCode", +function(ch){ +return (ch == '*' || ch == '$' || ch == '=' || ch == ':'); +}, "~S"); +Clazz_defineMethod(c$, "setLoadFormat", +function(isSurface, name, type, withPrefix){ +var format = null; +var id = name.substring(1); +switch ((type).charCodeAt(0)) { +case 99: +return name; +case 104: +if (this.g.checkCIR) this.checkCIR(false); +return this.g.nihResolverFormat + name.substring(name.indexOf("/structure") + 10); +case 61: +if (name.startsWith("==")) { +id = id.substring(1); +if (id.equals("?") && (id = this.getDBID("chemical component from RCSB")) == null) return null; +type = '#'; +} else { +if (id.equals("?") && (id = this.getDBID("PDB ID from RCSB")) == null) return null; +if (id.indexOf("/") > 0) { +try { +var pt = id.indexOf("/"); +var database = id.substring(0, pt); +id = id.substring(pt + 1); +if (database.equalsIgnoreCase("aflowlib")) { +var index = 1; +pt = id.indexOf('.'); +if (pt >= 0) { +index = JU.PT.parseInt(id.substring(pt + 1)); +id = id.substring(0, pt); +}if (id.indexOf("_") < 0) id = this.getSymTemp().getSpaceGroupJSON(this, "AFLOW", id, index); +}id = JV.JC.resolveDataBase(database, id, null); +if (id != null && id.startsWith("'")) id = this.evaluateExpression(id).toString(); +return (id == null || id.length == 0 ? name : id); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return name; +} else { +throw e; +} +} +}if (!isSurface && id.endsWith(".bcif")) { +id = id.substring(0, id.indexOf(".bcif")); +return JV.JC.resolveDataBase("bcif", id.toLowerCase(), null); +}if (id.endsWith(".mmtf")) { +id = id.substring(0, id.indexOf(".mmtf")); +return JV.JC.resolveDataBase("mmtf", id.toUpperCase(), null); +}format = this.g.loadFormat; +}case 35: +if (format == null) format = this.g.pdbLoadLigandFormat; +return JV.JC.resolveDataBase(null, id, format); +case 42: +if (id.equals("?") && (id = this.getDBID("PDB ID from EBI")) == null) return null; +var pt = name.lastIndexOf("/"); +if (name.startsWith("*dom/")) { +id = name.substring(pt + 1); +format = (pt > 4 ? name.substring(5) : "mappings"); +return JU.PT.rep(JV.JC.resolveDataBase("map", id, null), "%TYPE", format); +} else if (name.startsWith("*val/")) { +id = name.substring(pt + 1); +format = (pt > 4 ? name.substring(5) : "validation/outliers/all"); +return JU.PT.rep(JV.JC.resolveDataBase("map", id, null), "%TYPE", format); +} else if (name.startsWith("*rna3d/")) { +id = name.substring(pt + 1); +format = (pt > 6 ? name.substring(6) : "loops"); +return JU.PT.rep(JV.JC.resolveDataBase("rna3d", id, null), "%TYPE", format); +} else if (name.startsWith("*dssr--")) { +id = name.substring(pt + 1); +id = JV.JC.resolveDataBase("dssr", id, null); +return id + "%20" + JU.PT.rep(name.substring(5, pt), " ", "%20"); +} else if (name.startsWith("*dssr/")) { +id = name.substring(pt + 1); +return JV.JC.resolveDataBase("dssr", id, null); +} else if (name.startsWith("*dssr1/")) { +id = name.substring(pt + 1); +return JV.JC.resolveDataBase("dssr1", id, null); +}var pdbe = "pdbe"; +if (id.length == 5 && id.charAt(4) == '*') { +pdbe = "pdbe2"; +id = id.substring(0, 4); +}return JV.JC.resolveDataBase(pdbe, id, null); +case 58: +format = this.g.pubChemFormat; +if (id.equals("?") && (id = this.getDBID("structure from PubChem")) == null) return null; +if (id === "") { +try { +id = "smiles:" + this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}var fl = id.toLowerCase(); +var fi = -2147483648; +try { +fi = Integer.parseInt(id); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (fi != -2147483648) { +id = "cid/" + fi; +} else { +if (fl.startsWith("smiles:")) { +format += "?POST?smiles=" + id.substring(7); +id = "smiles"; +} else if (id.startsWith("cid:") || id.startsWith("inchikey:") || id.startsWith("cas:")) { +id = id.$replace(':', '/'); +} else { +if (fl.startsWith("name:")) id = id.substring(5); +id = "name/" + JU.PT.escapeUrl(id); +}}return JU.PT.formatStringS(format, "FILE", id); +case 36: +this.checkCIR(false); +if (id.equals("?") && (id = this.getDBID("structure from NCI/CADD")) == null) return null; +if (name.equals("$")) { +try { +id = this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} else if (name.startsWith("$$")) { +id = id.substring(1); +if (id.length == 0) { +try { +id = this.getOpenSmiles(this.bsA()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}format = JU.PT.rep(this.g.smilesUrlFormat, "get3d", "get2d"); +return JU.PT.formatStringS(format, "FILE", JU.PT.escapeUrl(id)); +}case 77: +case 78: +case 50: +case 73: +case 75: +case 83: +case 84: +case 47: +id = JU.PT.escapeUrl(id); +switch ((type).charCodeAt(0)) { +case 77: +case 78: +format = this.g.nihResolverFormat + "/%FILE/names"; +break; +case 50: +format = this.g.nihResolverFormat + "/%FILE/image"; +break; +case 73: +case 84: +format = this.g.nihResolverFormat + "/%FILE/stdinchi"; +break; +case 75: +format = this.g.nihResolverFormat + "/%FILE/inchikey"; +break; +case 83: +format = this.g.nihResolverFormat + "/%FILE/stdinchikey"; +break; +case 47: +format = this.g.nihResolverFormat + "/%FILE/"; +break; +default: +format = this.g.smilesUrlFormat; +break; +} +return (withPrefix ? "MOL3D::" : "") + JU.PT.formatStringS(format, "FILE", id); +case 63: +case 45: +case 95: +var isDiff = id.startsWith("*") || id.startsWith("="); +if (isDiff) id = id.substring(1); +var ciftype = null; +pt = id.indexOf("."); +if (pt >= 0) { +ciftype = id.substring(pt + 1); +id = id.substring(0, pt); +}var checkXray = id.startsWith("density"); +if (checkXray) id = "em" + id.substring(7); +if (id.equals("emdb") || id.equals("em")) id += "/"; +if (id.startsWith("em/")) id = "emdb" + id.substring(2); +if (id.startsWith("emdb/")) { +id = id.substring(5); +if (id.length == 0) id = "="; + else if (id.startsWith("*")) id = "=" + id.substring(1); +var emdext = "#-sigma=10"; +if (id.startsWith("=")) { +id = (id.equals("=") ? this.getPdbID() : id.substring(1)); +if (id == null || type == '?') return id; +var q = JV.JC.resolveDataBase("emdbquery", id, null); +var data = this.fm.cacheGet(q, false); +if (data == null) { +this.showString("retrieving " + q, false); +data = this.getFileAsString(q); +if (data == null) { +this.showString("EM retrieve failed for " + id, false); +if (!checkXray) return null; +data = "FAILED"; +} else { +this.showString(data, false); +}this.fm.cachePut(q, data); +}pt = data.indexOf("EMD-"); +if (pt >= 0) { +id = data.substring(pt + 4); +pt = id.indexOf('\n'); +if (pt > 0) id = id.substring(0, pt); +pt = id.indexOf(","); +if (pt > 0) { +emdext = "#-cutoff=" + id.substring(pt + 1); +id = id.substring(0, pt); +}} else { +if (!checkXray) return null; +emdext = null; +}}if (emdext != null) return JV.JC.resolveDataBase("emdbmap" + (type == '-' ? "server" : ""), id, null) + emdext; +}id = JV.JC.resolveDataBase((isDiff ? "pdbemapdiff" : "pdbemap") + (type == '-' ? "server" : ""), id, null); +if ("cif".equals(ciftype)) { +id = id.$replace("bcif", "cif"); +}break; +} +return id; +}, "~B,~S,~S,~B"); +Clazz_defineMethod(c$, "getDBID", +function(type){ +return this.prompt("load a " + type, "", null, false); +}, "~S"); +Clazz_defineMethod(c$, "checkCIR", +function(forceCheck){ +if (this.cirChecked && !forceCheck || this.g.resolverResolver == null) return; +try { +this.g.removeParam("_cirStatus"); +var m = this.getModelSetAuxiliaryInfo(); +m.remove("cirInfo"); +var s = this.getFileAsString(this.g.resolverResolver); +System.out.println(s); +var map = this.parseJSONMap(s); +m.put("cirInfo", map); +this.ms.msInfo = m; +s = map.get("status"); +this.g.setO("_cirStatus", s); +this.g.setCIR(map.get("rfc6570Template"), !this.isSilent); +if (!this.isSilent) JU.Logger.info("Viewer.checkCIR _.cirInfo.status = " + s); +} catch (t) { +System.out.println("Viewer.checkCIR failed at " + this.g.resolverResolver + ": " + t); +} +this.cirChecked = true; +}, "~B"); +Clazz_defineMethod(c$, "getStandardLabelFormat", +function(type){ +switch (type) { +default: +case 0: +return "%[identify]"; +case 1: +return this.g.defaultLabelXYZ; +case 2: +return this.g.defaultLabelPDB; +} +}, "~N"); +Clazz_defineMethod(c$, "getAdditionalHydrogens", +function(bsAtoms, vConnections, flags){ +if (bsAtoms == null) bsAtoms = this.bsA(); +var nTotal = Clazz_newIntArray (1, 0); +var pts = this.ms.calculateHydrogens(bsAtoms, nTotal, vConnections, flags); +var points = new Array(nTotal[0]); +for (var i = 0, pt = 0; i < pts.length; i++) if (pts[i] != null) for (var j = 0; j < pts[i].length; j++) points[pt++] = pts[i][j]; + + +return points; +}, "JU.BS,JU.Lst,~N"); +Clazz_overrideMethod(c$, "setMarBond", +function(marBond){ +this.g.bondRadiusMilliAngstroms = marBond; +this.g.setI("bondRadiusMilliAngstroms", marBond); +this.setShapeSize(1, marBond * 2, JU.BSUtil.setAll(this.ms.ac)); +}, "~N"); +Clazz_defineMethod(c$, "setHoverLabel", +function(strLabel){ +this.shm.loadShape(35); +this.setShapeProperty(35, "label", strLabel); +this.setHoverEnabled(strLabel != null); +this.g.setO("_hoverLabel", this.hoverLabel = strLabel); +if (!this.hoverEnabled && !this.sm.haveHoverCallback()) this.startHoverWatcher(false); +}, "~S"); +Clazz_defineMethod(c$, "setHoverEnabled", +function(tf){ +this.hoverEnabled = tf; +this.g.setB("_hoverEnabled", tf); +}, "~B"); +Clazz_defineMethod(c$, "hoverOn", +function(atomIndex, isLabel){ +this.g.removeParam("_objecthovered"); +this.g.setI("_atomhovered", atomIndex); +this.g.setO("_hoverLabel", this.hoverLabel); +this.g.setUserVariable("hovered", JS.SV.getVariable(JU.BSUtil.newAndSetBit(atomIndex))); +if (this.sm.haveHoverCallback()) this.sm.setStatusAtomHovered(atomIndex, this.getAtomInfoXYZ(atomIndex, 2)); +if (!this.hoverEnabled || this.eval != null && this.isScriptExecuting() || atomIndex == this.hoverAtomIndex || this.g.hoverDelayMs == 0 || !this.slm.isInSelectionSubset(atomIndex)) return; +var label = (isLabel ? J.i18n.GT.$("Drag to move label") : this.isModelKitOpen() || this.isModelkitPickingActive() ? this.getModelkit(false).setProperty("hoverlabel", Integer.$valueOf(atomIndex)) : null); +this.shm.loadShape(35); +if (label != null && (!isLabel || this.ms.at[atomIndex].isVisible(512))) { +this.setShapeProperty(35, "specialLabel", label); +}this.setShapeProperty(35, "text", this.hoverText = null); +this.setShapeProperty(35, "target", Integer.$valueOf(this.hoverAtomIndex = atomIndex)); +this.refresh(3, "hover on atom"); +}, "~N,~B"); +Clazz_defineMethod(c$, "isModelkitPickingActive", +function(){ +if (this.acm.getAtomPickingMode() == 32) return true; +switch (this.acm.getBondPickingMode()) { +case 34: +case 33: +case 8: +case 35: +return this.g.bondPicking; +} +return false; +}); +Clazz_defineMethod(c$, "isModelkitPickingRotateBond", +function(){ +return (this.acm.getBondPickingMode() == 34); +}); +Clazz_defineMethod(c$, "hoverOnPt", +function(x, y, text, id, pt){ +if (this.eval != null && this.isScriptExecuting()) return; +this.g.setO("_hoverLabel", text); +if (id != null && pt != null) { +this.g.setO("_objecthovered", id); +this.g.setI("_atomhovered", -1); +this.g.setUserVariable("hovered", JS.SV.getVariable(pt)); +if (this.sm.haveHoverCallback()) this.sm.setStatusObjectHovered(id, text, pt); +}if (!this.hoverEnabled) return; +this.shm.loadShape(35); +if (this.gdata.antialiasEnabled) { +x <<= 1; +y <<= 1; +}this.setShapeProperty(35, "xy", JU.P3i.new3(x, y, 0)); +this.setShapeProperty(35, "target", null); +this.setShapeProperty(35, "specialLabel", null); +this.setShapeProperty(35, "text", text); +this.hoverAtomIndex = -1; +this.hoverText = text; +this.refresh(3, "hover on point"); +}, "~N,~N,~S,~S,JU.T3"); +Clazz_defineMethod(c$, "hoverOff", +function(){ +try { +if ((this.isModelKitOpen() || this.modelkit != null && this.modelkit.wasRotating()) && !this.isModelkitPickingRotateBond()) this.highlight(null); +if (!this.hoverEnabled) return; +var isHover = (this.hoverText != null || this.hoverAtomIndex >= 0); +if (this.hoverAtomIndex >= 0) { +this.setShapeProperty(35, "target", null); +this.hoverAtomIndex = -1; +}if (this.hoverText != null) { +this.setShapeProperty(35, "text", null); +this.hoverText = null; +}this.setShapeProperty(35, "specialLabel", null); +if (isHover) this.refresh(3, "hover off"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "setDebugScript", +function(debugScript){ +this.g.debugScript = debugScript; +this.g.setB("debugScript", debugScript); +if (this.eval != null) this.eval.setDebugging(); +}, "~B"); +Clazz_defineMethod(c$, "clearClickCount", +function(){ +this.setTainted(true); +}); +Clazz_defineMethod(c$, "setCursor", +function(cursor){ +if (this.$isKiosk || this.currentCursor == cursor || this.multiTouch || !this.haveDisplay) return; +this.apiPlatform.setCursor(this.currentCursor = cursor, this.display); +}, "~N"); +Clazz_defineMethod(c$, "setPickingMode", +function(strMode, pickingMode){ +if (!this.haveDisplay) return; +var mode = this.acm.getAtomPickingMode(); +this.showSelected = false; +var option = null; +if (strMode != null) { +var pt = strMode.indexOf("_"); +if (pt >= 0) { +option = strMode.substring(pt + 1); +strMode = strMode.substring(0, pt); +}pickingMode = JV.ActionManager.getPickingMode(strMode); +}if (pickingMode < 0) pickingMode = 1; +this.acm.setPickingMode(pickingMode); +var name = JV.ActionManager.getPickingModeName(this.acm.getAtomPickingMode()); +this.g.setO("picking", name); +if (this.modelkit != null) { +this.modelkit.setProperty("atompickingmode", name); +this.acm.setPickingMode(pickingMode); +switch (pickingMode) { +case 1: +if (pickingMode != mode) this.setModelKitMode(false); +break; +case 8: +case 35: +this.modelkit.setProperty("bondpickingmode", strMode.toLowerCase()); +break; +} +}if (option == null || option.length == 0) return; +option = Character.toUpperCase(option.charAt(0)) + (option.length == 1 ? "" : option.substring(1, 2)); +switch (pickingMode) { +case 32: +this.getModelkit(false).setProperty("atomtype", option); +break; +case 33: +this.setBooleanPropertyTok("bondPicking", 603979814, true); +this.getModelkit(false).setProperty("bondtype", option); +break; +default: +JU.Logger.error("Bad picking mode: " + strMode + "_" + option); +} +}, "~S,~N"); +Clazz_defineMethod(c$, "getPickingMode", +function(){ +return (this.haveDisplay ? this.acm.getAtomPickingMode() : 0); +}); +Clazz_defineMethod(c$, "setPickingStyle", +function(style, pickingStyle){ +if (!this.haveDisplay) return; +if (style != null) pickingStyle = JV.ActionManager.getPickingStyleIndex(style); +if (pickingStyle < 0) pickingStyle = 0; +this.acm.setPickingStyle(pickingStyle); +this.g.setO("pickingStyle", JV.ActionManager.getPickingStyleName(this.acm.getPickingStyle())); +}, "~S,~N"); +Clazz_defineMethod(c$, "getDrawHover", +function(){ +return this.haveDisplay && this.g.drawHover; +}); +Clazz_defineMethod(c$, "getAtomInfo", +function(atomOrPointIndex){ +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +return (atomOrPointIndex >= 0 ? this.ms.getAtomInfo(atomOrPointIndex, null, this.ptTemp) : this.shm.getShapePropertyIndex(6, "pointInfo", -atomOrPointIndex)); +}, "~N"); +Clazz_defineMethod(c$, "getAtomInfoXYZ", +function(atomIndex, mode){ +var atom = this.ms.at[atomIndex]; +if (mode == 4) return this.getChimeMessenger().getInfoXYZ(atom); +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +return atom.getIdentityXYZ(this.ptTemp, mode); +}, "~N,~N"); +Clazz_defineMethod(c$, "setSync", +function(){ +if (this.sm.doSync()) this.sm.setSync(null); +}); +Clazz_overrideMethod(c$, "setJmolCallbackListener", +function(listener){ +this.sm.cbl = listener; +}, "J.api.JmolCallbackListener"); +Clazz_overrideMethod(c$, "setJmolStatusListener", +function(listener){ +this.sm.cbl = this.sm.jsl = listener; +}, "J.api.JmolStatusListener"); +Clazz_defineMethod(c$, "getStatusChanged", +function(statusNameList){ +return (statusNameList == null ? null : this.sm.getStatusChanged(statusNameList)); +}, "~S"); +Clazz_defineMethod(c$, "menuEnabled", +function(){ +return (!this.g.disablePopupMenu && this.getPopupMenu() != null); +}); +Clazz_defineMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +if (mode == 0) { +this.g.setO("_fileDropped", fileName); +this.g.setUserVariable("doDrop", JS.SV.vT); +this.g.setUserVariable("dropFileType", JS.SV.newS("")); +this.g.setUserVariable("dropFileName", JS.SV.newS(fileName)); +}var handled = this.sm.setStatusDragDropped(mode, x, y, fileName, retType); +var type = this.getP("dropFileType").toString(); +if (type.length > 0 && retType != null) { +retType[0] = type; +}return (!handled || this.getP("doDrop").toString().equals("true")); +}, "~N,~N,~N,~S,~A"); +Clazz_defineMethod(c$, "setStatusResized", +function(width, height){ +this.sm.setStatusResized(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "scriptStatus", +function(strStatus){ +this.setScriptStatus(strStatus, "", 0, null); +}, "~S"); +Clazz_defineMethod(c$, "scriptStatusMsg", +function(strStatus, statusMessage){ +this.setScriptStatus(strStatus, statusMessage, 0, null); +}, "~S,~S"); +Clazz_defineMethod(c$, "setScriptStatus", +function(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated){ +this.sm.setScriptStatus(strStatus, statusMessage, msWalltime, strErrorMessageUntranslated); +}, "~S,~S,~N,~S"); +Clazz_overrideMethod(c$, "showUrl", +function(urlString){ +if (urlString == null) return; +if (urlString.indexOf(":") < 0) { +var base = this.fm.getAppletDocumentBase(); +if (base === "") base = this.fm.getFullPathName(false); +if (base.indexOf("/") >= 0) { +base = base.substring(0, base.lastIndexOf("/") + 1); +} else if (base.indexOf("\\") >= 0) { +base = base.substring(0, base.lastIndexOf("\\") + 1); +}urlString = base + urlString; +}JU.Logger.info("showUrl:" + urlString); +this.sm.showUrl(urlString); +}, "~S"); +Clazz_defineMethod(c$, "setMeshCreator", +function(meshCreator){ +this.shm.loadShape(24); +this.setShapeProperty(24, "meshCreator", meshCreator); +}, "~O"); +Clazz_defineMethod(c$, "showConsole", +function(showConsole){ +if (!this.haveDisplay) return; +try { +if (this.appConsole == null && showConsole) this.getConsole(); +this.appConsole.setVisible(true); +} catch (e) { +} +}, "~B"); +Clazz_defineMethod(c$, "getConsole", +function(){ +this.getProperty("DATA_API", "getAppConsole", Boolean.TRUE); +return this.appConsole; +}); +Clazz_overrideMethod(c$, "getParameter", +function(key){ +return this.getP(key); +}, "~S"); +Clazz_defineMethod(c$, "getP", +function(key){ +return this.g.getParameter(key, true); +}, "~S"); +Clazz_defineMethod(c$, "getPOrNull", +function(key){ +return this.g.getParameter(key, false); +}, "~S"); +Clazz_defineMethod(c$, "unsetProperty", +function(key){ +key = key.toLowerCase(); +if (key.equals("all") || key.equals("variables")) this.fm.setPathForAllFiles(""); +this.g.unsetUserVariable(key); +}, "~S"); +Clazz_overrideMethod(c$, "notifyStatusReady", +function(isReady){ +System.out.println("Jmol applet " + this.fullName + (isReady ? " ready" : " destroyed")); +if (!isReady) this.dispose(); +this.sm.setStatusAppletReady(this.fullName, isReady); +}, "~B"); +Clazz_overrideMethod(c$, "getBooleanProperty", +function(key){ +key = key.toLowerCase(); +if (this.g.htBooleanParameterFlags.containsKey(key)) return this.g.htBooleanParameterFlags.get(key).booleanValue(); +if (key.endsWith("p!")) { +if (this.acm == null) return false; +var s = this.acm.getPickingState().toLowerCase(); +key = key.substring(0, key.length - 2) + ";"; +return (s.indexOf(key) >= 0); +}if (key.equalsIgnoreCase("executionPaused")) return (this.eval != null && this.eval.isPaused()); +if (key.equalsIgnoreCase("executionStepping")) return (this.eval != null && this.eval.isStepping()); +if (key.equalsIgnoreCase("haveBFactors")) return (this.ms.getBFactors() != null); +if (key.equalsIgnoreCase("colorRasmol")) return this.cm.isDefaultColorRasmol; +if (key.equalsIgnoreCase("frank")) return this.getShowFrank(); +if (key.equalsIgnoreCase("spinOn")) return this.tm.spinOn; +if (key.equalsIgnoreCase("isNavigating")) return this.tm.isNavigating(); +if (key.equalsIgnoreCase("showSelections")) return this.selectionHalosEnabled; +if (this.g.htUserVariables.containsKey(key)) { +var t = this.g.getUserVariable(key); +if (t.tok == 1073742335) return true; +if (t.tok == 1073742334) return false; +}JU.Logger.error("vwr.getBooleanProperty(" + key + ") - unrecognized"); +return false; +}, "~S"); +Clazz_overrideMethod(c$, "getInt", +function(tok){ +switch (tok) { +case 553648132: +return this.am.animationFps; +case 553648139: +return this.g.dotDensity; +case 553648140: +return this.g.dotScale; +case 553648142: +return this.g.helixStep; +case 553648145: +return this.g.infoFontSize; +case 553648147: +return this.g.labelPointerWidth; +case 553648149: +return this.g.meshScale; +case 553648150: +return this.g.minimizationReportSteps; +case 553648153: +return this.g.minPixelSelRadius; +case 553648154: +return this.g.percentVdwAtom; +case 553648157: +return this.g.pickingSpinRate; +case 553648166: +return this.g.ribbonAspectRatio; +case 536870922: +return this.g.scriptDelay; +case 553648152: +return this.g.minimizationMaxAtoms; +case 553648170: +return this.g.smallMoleculeMaxAtoms; +case 553648183: +return this.g.strutSpacing; +case 553648184: +return this.stm.getUndoMax(); +case 553648185: +return this.g.vectorTrail; +} +JU.Logger.error("viewer.getInt(" + JS.T.nameOf(tok) + ") - not listed"); +return 0; +}, "~N"); +Clazz_defineMethod(c$, "getDelayMaximumMs", +function(){ +return (this.haveDisplay ? this.g.delayMaximumMs : 1); +}); +Clazz_defineMethod(c$, "getHermiteLevel", +function(){ +return (this.tm.spinOn && this.g.hermiteLevel > 0 ? 0 : this.g.hermiteLevel); +}); +Clazz_defineMethod(c$, "getHoverDelay", +function(){ +return (this.isModelKitOpen() || this.isModelkitPickingActive() || this.getDrawHover() ? 20 : this.g.hoverDelayMs); +}); +Clazz_overrideMethod(c$, "getBoolean", +function(tok){ +switch (tok) { +case 603979970: +return this.g.useMinimizationThread; +case 603979891: +return this.g.nboCharges; +case 603979856: +return this.g.hiddenLinesDashed; +case 1073742086: +return this.ms.getMSInfoB(JV.JC.getBoolName(4)); +case 603979802: +return this.g.autoplayMovie; +case 603979797: +return !this.headless && this.g.allowAudio; +case 603979780: +return this.g.allowGestures; +case 603979784: +return this.g.allowMultiTouch; +case 603979785: +return this.g.allowRotateSelected; +case 603979792: +return this.g.appendNew; +case 603979794: +return this.g.applySymmetryToBonds; +case 603979796: +return this.g.atomPicking; +case 603979798: +return this.g.autoBond; +case 603979800: +return this.g.autoFps; +case 603979806: +return this.g.axesOrientationRasmol; +case 603979811: +return this.g.cartoonSteps; +case 603979810: +return this.g.cartoonBlocks; +case 603979821: +return this.g.checkCIR; +case 603979812: +return this.g.bondModeOr; +case 603979815: +return this.g.cartoonBaseEdges; +case 603979816: +return this.g.cartoonFancy; +case 603979817: +return this.g.cartoonLadders; +case 603979818: +return this.g.cartoonRibose; +case 603979819: +return this.g.cartoonRockets; +case 603979822: +return this.g.chainCaseSensitive || this.chainCaseSpecified; +case 603979823: +return this.g.cipRule6Full; +case 603979825: +return this.g.debugScript; +case 603979826: +return this.g.defaultStructureDSSP; +case 603979827: +return this.g.disablePopupMenu; +case 603979828: +return this.g.displayCellParameters; +case 603979830: +return this.g.dotSurface; +case 603979829: +return this.g.dotsSelectedOnly; +case 603979831: +return this.g.doublePrecision; +case 603979834: +return this.g.drawPicking; +case 603979838: +return this.g.elementKey; +case 603979846: +return this.g.fontCaching; +case 603979847: +return this.g.fontScaling; +case 603979848: +return this.g.forceAutoBond; +case 603979849: +return false; +case 603979850: +return this.g.greyscaleRendering; +case 603979852: +return this.g.hbondsBackbone; +case 603979853: +return this.g.hbondsRasmol; +case 603979854: +return this.g.hbondsSolid; +case 1612709894: +return this.g.rasmolHeteroSetting; +case 603979858: +return this.g.hideNameInPopup; +case 603979864: +return this.g.highResolutionFlag; +case 1612709900: +return this.g.rasmolHydrogenSetting; +case 603979867: +return this.g.isosurfaceKey; +case 603979869: +return this.g.jmolInJSpecView; +case 603979870: +return this.g.justifyMeasurements; +case 603979872: +return this.g.legacyAutoBonding; +case 603979873: +return this.g.legacyHAddition; +case 603979874: +return this.g.legacyJavaFloat; +case 603979876: +return this.g.logGestures; +case 603979877: +return this.g.measureAllModels; +case 603979878: +return this.g.measurementLabels; +case 603979879: +return this.g.messageStyleChime; +case 603983903: +return this.g.modelKitMode; +case 603979886: +return this.g.multipleBondBananas; +case 603979889: +return this.g.navigationMode; +case 603979890: +return this.g.navigationPeriodic; +case 603979893: +return this.g.partialDots; +case 603979894: +return this.g.pdbAddHydrogens; +case 603979896: +return this.g.pdbSequential; +case 603979898: +return this.g.preserveState; +case 603979900: +return this.refreshing; +case 603979901: +return this.g.ribbonBorder; +case 603979902: +return this.g.rocketBarrels; +case 603979892: +return this.g.noDelay; +case 603979906: +return this.g.selectAllModels; +case 603979920: +return this.g.showHiddenSelectionHalos; +case 603979922: +return this.g.showHydrogens; +case 603979926: +return this.g.showMeasurements; +case 603979927: +return this.g.showModVecs; +case 603979928: +return this.g.showMultipleBonds; +case 603979934: +return this.g.showTiming; +case 603979937: +return this.g.showUnitCellDetails; +case 603979939: +return this.g.slabByAtom; +case 603979940: +return this.g.slabByMolecule; +case 603979944: +return this.g.smartAromatic; +case 603979948: +return this.g.dotSolvent; +case 603979952: +return this.g.ssbondsBackbone; +case 603979955: +return this.g.strutsMultiple; +case 603979956: +return this.g.symmetryHermannMauguin; +case 603979960: +return this.g.testFlag1; +case 603979962: +return this.g.testFlag2; +case 603979964: +return this.g.testFlag3; +case 603979965: +return this.g.testFlag4; +case 603979966: +return this.g.traceAlpha; +case 603979967: +return this.g.translucent; +case 603979968: +return this.g.twistedSheets; +case 603979972: +return this.g.vectorsCentered; +case 603979973: +return this.g.vectorSymmetry; +case 603979975: +return this.g.waitForMoveTo; +case 603979978: +return this.g.zeroBasedXyzRasmol; +} +JU.Logger.error("viewer.getBoolean(" + JS.T.nameOf(tok) + ") - not listed"); +return false; +}, "~N"); +Clazz_defineMethod(c$, "allowEmbeddedScripts", +function(){ +return (this.g.allowEmbeddedScripts && !this.isPreviewOnly); +}); +Clazz_defineMethod(c$, "getDragSelected", +function(){ +return (this.g.dragSelected && !this.g.modelKitMode); +}); +Clazz_defineMethod(c$, "getBondsPickable", +function(){ +return (this.g.bondPicking || this.isModelkitPickingActive() || this.isModelKitOpen() && this.getModelkitPropertySafely("ismolecular") === Boolean.TRUE); +}); +Clazz_defineMethod(c$, "isModelKitOpen", +function(){ +return this.g.modelKitMode && this.modelkit != null && !this.modelkit.isHidden(); +}); +Clazz_defineMethod(c$, "useMinimizationThread", +function(){ +return (this.g.useMinimizationThread && !this.autoExit); +}); +Clazz_overrideMethod(c$, "getFloat", +function(tok){ +switch (tok) { +case 1153433601: +return this.g.particleRadius; +case 570425345: +return this.g.axesOffset; +case 570425346: +return this.g.axesScale; +case 570425348: +return this.g.bondTolerance; +case 570425353: +return this.g.defaultTranslucent; +case 570425352: +return this.g.defaultDrawArrowScale; +case 570425354: +return this.g.dipoleScale; +case 570425355: +return this.g.drawFontSize; +case 570425357: +return this.g.exportScale; +case 570425359: +return this.g.hbondsAngleMinimum; +case 570425361: +return this.g.hbondHXDistanceMaximum; +case 570425360: +return this.g.hbondNODistanceMaximum; +case 570425363: +return this.g.loadAtomDataTolerance; +case 570425364: +return this.g.minBondDistance; +case 1275072532: +return this.g.modulationScale; +case 570425370: +return this.g.multipleBondSpacing; +case 570425369: +return this.g.multipleBondRadiusFactor; +case 570425374: +return this.g.navigationSpeed; +case 570425382: +return this.g.pointGroupDistanceTolerance; +case 570425384: +return this.g.pointGroupLinearTolerance; +case 570425388: +return this.tm.modelRadius; +case 570425392: +return this.g.sheetSmoothing; +case 570425394: +return this.g.solventProbeRadius; +case 570425403: +return this.g.starWidth; +case 570425406: +return this.g.strutDefaultRadius; +case 570425408: +return this.g.strutLengthMaximum; +case 1648361473: +return this.g.vectorScale; +case 570425412: +return this.g.vibrationPeriod; +case 570425347: +return this.g.cartoonBlockHeight; +} +JU.Logger.error("viewer.getFloat(" + JS.T.nameOf(tok) + ") - not listed"); +return 0; +}, "~N"); +Clazz_overrideMethod(c$, "setStringProperty", +function(key, value){ +if (value == null || key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setO(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 603979776: +this.setBooleanPropertyTok(key, tok, JS.SV.newV(4, value).asBoolean()); +break; +case 553648128: +this.setIntPropertyTok(key, tok, JS.SV.newV(4, value).asInt()); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, JU.PT.parseFloat(value)); +break; +default: +this.setStringPropertyTok(key, tok, value); +} +}, "~S,~S"); +Clazz_defineMethod(c$, "setStringPropertyTok", +function(key, tok, value){ +switch (tok) { +case 545259567: +this.g.macroDirectory = value = (value == null || value.length == 0 ? "https://chemapps.stolaf.edu/jmol/macros" : value); +this.macros = null; +break; +case 545259570: +this.g.nihResolverFormat = value; +break; +case 545259521: +this.setAnimationMode(value); +return; +case 545259569: +this.g.nmrPredictFormat = value; +break; +case 545259548: +this.g.defaultDropScript = value; +break; +case 545259572: +value = this.fm.setPathForAllFiles(value); +break; +case 545259558: +this.setUnits(value, false); +return; +case 545259560: +if (!this.g.forceField.equals(value)) { +this.g.forceField = value = ("UFF".equalsIgnoreCase(value) ? "UFF" : "UFF2D".equalsIgnoreCase(value) ? "UFF2D" : "MMFF2D".equalsIgnoreCase(value) ? "MMFF2D" : "MMFF"); +this.minimizer = null; +}break; +case 545259571: +this.g.nmrUrlFormat = value; +break; +case 545259568: +this.setUnits(value, true); +return; +case 545259565: +this.g.pdbLoadLigandFormat = value; +break; +case 545259543: +this.g.defaultLabelPDB = value; +break; +case 545259544: +this.g.defaultLabelXYZ = value; +break; +case 545259549: +this.g.defaultLoadFilter = value; +break; +case 545259566: +value = this.getOutputManager().setLogFile(value); +if (value == null) return; +break; +case 545259559: +break; +case 545259524: +this.g.atomTypes = value; +break; +case 545259538: +break; +case 545259576: +this.g.pickLabel = value; +break; +case 545259580: +if (value.length == 2 && value.startsWith("R")) this.g.quaternionFrame = value.substring(0, 2); + else this.g.quaternionFrame = "" + (value.toLowerCase() + "p").charAt(0); +if (!JU.PT.isOneOf(this.g.quaternionFrame, "RC;RP;a;b;c;n;p;q;x;")) this.g.quaternionFrame = "p"; +this.ms.haveStraightness = false; +break; +case 545259555: +this.setVdwStr(value); +return; +case 545259563: + new J.i18n.GT(this, value); +var language = J.i18n.GT.getLanguage(); +this.modelkit = null; +if (this.jmolpopup != null) { +this.jmolpopup.jpiDispose(); +this.jmolpopup = null; +this.getPopupMenu(); +}this.sm.setCallbackFunction("language", language); +value = J.i18n.GT.getLanguage(); +break; +case 545259564: +this.g.loadFormat = value; +break; +case 545259534: +this.setObjectColor("background", value); +return; +case 545259528: +this.setObjectColor("axis1", value); +return; +case 545259530: +this.setObjectColor("axis2", value); +return; +case 545259532: +this.setObjectColor("axis3", value); +return; +case 545259536: +this.setObjectColor("boundbox", value); +return; +case 545259586: +this.setObjectColor("unitcell", value); +return; +case 545259578: +this.setPropertyColorScheme(value, false, false); +break; +case 545259562: +this.shm.loadShape(35); +this.setShapeProperty(35, "atomLabel", value); +break; +case 545259547: +this.g.defaultDistanceLabel = value; +break; +case 545259542: +this.g.defaultAngleLabel = value; +break; +case 545259554: +this.g.defaultTorsionLabel = value; +break; +case 545259550: +this.g.defaultLoadScript = value; +break; +case 545259522: +this.fm.setAppletProxy(value); +break; +case 545259546: +if (value == null) value = ""; +value = value.$replace('\\', '/'); +this.g.defaultDirectory = value; +break; +case 545259561: +this.g.helpPath = value; +break; +case 545259552: +if (!value.equalsIgnoreCase("RasMol") && !value.equalsIgnoreCase("PyMOL")) value = "Jmol"; +this.setDefaultsType(value); +break; +case 545259545: +this.setDefaultColors(value.equalsIgnoreCase("rasmol")); +return; +case 545259573: +this.setPickingMode(value, 0); +return; +case 545259574: +this.setPickingStyle(value, 0); +return; +case 545259540: +break; +default: +if (key.toLowerCase().endsWith("callback")) { +this.sm.setCallbackFunction(key, (value.length == 0 || value.equalsIgnoreCase("none") ? null : value)); +break; +}if (!this.g.htNonbooleanParameterValues.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.newV(4, value)); +return; +}break; +} +this.g.setO(key, value); +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "setFloatProperty", +function(key, value){ +if (key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setF(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, "" + value); +break; +case 603979776: +this.setBooleanPropertyTok(key, tok, value != 0); +break; +case 553648128: +this.setIntPropertyTok(key, tok, Clazz_floatToInt(value)); +break; +case 570425344: +if (Float.isNaN(value)) return; +default: +this.setFloatPropertyTok(key, tok, value); +} +}, "~S,~N"); +Clazz_defineMethod(c$, "setFloatPropertyTok", +function(key, tok, value){ +switch (tok) { +case 570425347: +this.g.cartoonBlockHeight = value; +break; +case 570425366: +this.ms.setModulation(null, false, null, false); +this.g.modulationScale = value = Math.max(0.1, value); +this.ms.setModulation(null, true, null, false); +break; +case 570425381: +this.g.particleRadius = Math.abs(value); +break; +case 570425355: +this.g.drawFontSize = value; +this.shm.setShapePropertyBs(22, "font", null, null); +break; +case 570425357: +this.g.exportScale = value; +break; +case 570425403: +this.g.starWidth = value; +break; +case 570425369: +this.g.multipleBondRadiusFactor = value; +break; +case 570425370: +this.g.multipleBondSpacing = value; +break; +case 570425393: +this.tm.setSlabRange(value); +break; +case 570425365: +this.g.minimizationCriterion = value; +break; +case 570425358: +if (this.haveDisplay) this.acm.setGestureSwipeFactor(value); +break; +case 570425367: +if (this.haveDisplay) this.acm.setMouseDragFactor(value); +break; +case 570425368: +if (this.haveDisplay) this.acm.setMouseWheelFactor(value); +break; +case 570425408: +this.g.strutLengthMaximum = value; +break; +case 570425406: +this.g.strutDefaultRadius = value; +break; +case 570425376: +this.setSpin("X", Clazz_floatToInt(value)); +break; +case 570425378: +this.setSpin("Y", Clazz_floatToInt(value)); +break; +case 570425380: +this.setSpin("Z", Clazz_floatToInt(value)); +break; +case 570425371: +if (Float.isNaN(value)) return; +this.setSpin("FPS", Clazz_floatToInt(value)); +break; +case 570425363: +this.g.loadAtomDataTolerance = value; +break; +case 570425359: +this.g.hbondsAngleMinimum = value; +break; +case 570425361: +this.g.hbondHXDistanceMaximum = value; +break; +case 570425360: +this.g.hbondNODistanceMaximum = value; +break; +case 570425382: +this.g.pointGroupDistanceTolerance = value; +break; +case 570425384: +this.g.pointGroupLinearTolerance = value; +break; +case 570425356: +this.g.ellipsoidAxisDiameter = value; +break; +case 570425398: +this.setSpin("x", Clazz_floatToInt(value)); +break; +case 570425400: +this.setSpin("y", Clazz_floatToInt(value)); +break; +case 570425402: +this.setSpin("z", Clazz_floatToInt(value)); +break; +case 570425396: +this.setSpin("fps", Clazz_floatToInt(value)); +break; +case 570425352: +this.g.defaultDrawArrowScale = value; +break; +case 570425353: +this.g.defaultTranslucent = value; +break; +case 570425345: +this.setAxesScale(tok, value); +break; +case 570425346: +this.setAxesScale(tok, value); +break; +case 570425416: +this.tm.visualRangeAngstroms = value; +this.refresh(1, "set visualRange"); +break; +case 570425372: +this.setNavigationDepthPercent(value); +break; +case 570425374: +this.g.navigationSpeed = value; +break; +case 570425373: +this.tm.setNavigationSlabOffsetPercent(value); +break; +case 570425350: +this.tm.setCameraDepthPercent(value, false); +this.refresh(1, "set cameraDepth"); +return; +case 570425388: +this.setRotationRadius(value, true); +return; +case 570425362: +this.g.hoverDelayMs = Clazz_floatToInt(value * 1000); +break; +case 570425392: +this.g.sheetSmoothing = value; +break; +case 570425354: +value = JV.Viewer.checkFloatRange(value, -10, 10); +this.g.dipoleScale = value; +break; +case 570425404: +this.tm.setStereoDegrees(value); +break; +case 1648361473: +this.setVectorScale(value); +return; +case 570425412: +this.setVibrationPeriod(value); +return; +case 570425414: +this.setVibrationScale(value); +return; +case 570425348: +this.setBondTolerance(value); +return; +case 570425364: +this.setMinBondDistance(value); +return; +case 570425390: +this.tm.setScaleAngstromsPerInch(value); +break; +case 570425394: +value = JV.Viewer.checkFloatRange(value, 0, 10); +this.g.solventProbeRadius = value; +break; +default: +if (!this.g.htNonbooleanParameterValues.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.newF(value)); +return; +}} +this.g.setF(key, value); +}, "~S,~N,~N"); +Clazz_overrideMethod(c$, "setIntProperty", +function(key, value){ +if (value == -2147483648 || key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setI(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, "" + value); +break; +case 603979776: +this.setBooleanPropertyTok(key, tok, value != 0); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, value); +break; +default: +this.setIntPropertyTok(key, tok, value); +} +}, "~S,~N"); +Clazz_defineMethod(c$, "setIntPropertyTok", +function(key, tok, value){ +switch (tok) { +case 553648150: +this.g.minimizationReportSteps = Math.min(Math.max(value, 1), 20); +break; +case 553648184: +this.stm.setUndoMax(value); +break; +case 553648147: +this.g.labelPointerWidth = value; +break; +case 553648152: +this.g.minimizationMaxAtoms = value; +break; +case 553648145: +this.g.infoFontSize = Math.max(0, value); +break; +case 553648167: +case 553648144: +case 553648168: +value = this.eval.setStatic(tok, value); +break; +case 553648185: +this.g.vectorTrail = value; +break; +case 553648136: +value = (value == 0 ? 0 : 1); +this.g.bondingVersion = JU.Elements.bondingVersion = value; +break; +case 553648135: +this.gdata.setCelPower(value); +break; +case 553648129: +this.gdata.setAmbientOcclusion(value); +break; +case 553648158: +this.g.platformSpeed = Math.min(Math.max(value, 0), 10); +break; +case 553648149: +this.g.meshScale = value; +break; +case 553648153: +this.g.minPixelSelRadius = value; +break; +case 553648146: +this.g.isosurfacePropertySmoothingPower = value; +break; +case 553648165: +this.g.repaintWaitMs = value; +break; +case 553648170: +this.g.smallMoleculeMaxAtoms = value; +break; +case 553648151: +this.g.minimizationSteps = value; +break; +case 553648183: +this.g.strutSpacing = value; +break; +case 553648156: +value = JV.Viewer.checkIntRange(value, 0, 1000); +this.gdata.setPhongExponent(value); +break; +case 553648142: +this.g.helixStep = value; +this.ms.haveStraightness = false; +break; +case 553648140: +this.g.dotScale = value; +break; +case 553648139: +this.g.dotDensity = value; +break; +case 553648137: +this.g.delayMaximumMs = value; +break; +case 553648148: +JU.Logger.setLogLevel(value); +JU.Logger.info("logging level set to " + value); +this.g.setI("logLevel", value); +if (this.eval != null) this.eval.setDebugging(); +return; +case 553648133: +this.setAxesMode(value == 2 ? 603979808 : value == 1 ? 603979804 : 603979809); +return; +case 553648178: +this.setStrandCount(0, value); +return; +case 553648182: +this.setStrandCount(12, value); +return; +case 553648180: +this.setStrandCount(13, value); +return; +case 553648155: +return; +case 536870922: +this.g.scriptDelay = value; +break; +case 553648176: +if (value < 0) value = JV.Viewer.checkIntRange(value, -10, -1); + else value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setSpecularPower(value); +break; +case 553648172: +value = JV.Viewer.checkIntRange(-value, -10, -1); +this.gdata.setSpecularPower(value); +break; +case 553648134: +this.setMarBond(value); +return; +case 536870924: +this.setBooleanPropertyTok(key, tok, value == 1); +return; +case 553648174: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setSpecularPercent(value); +break; +case 553648138: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setDiffusePercent(value); +break; +case 553648130: +value = JV.Viewer.checkIntRange(value, 0, 100); +this.gdata.setAmbientPercent(value); +break; +case 553648186: +this.tm.zDepthToPercent(value); +break; +case 553648188: +this.tm.zSlabToPercent(value); +break; +case 554176526: +this.tm.depthToPercent(value); +break; +case 554176565: +this.tm.slabToPercent(value); +break; +case 553648190: +this.g.zShadePower = value = Math.max(value, 0); +break; +case 553648166: +this.g.ribbonAspectRatio = value; +break; +case 553648157: +this.g.pickingSpinRate = (value < 1 ? 1 : value); +break; +case 553648132: +this.setAnimationFps(value); +return; +case 553648154: +this.setPercentVdwAtom(value); +break; +case 553648143: +this.g.hermiteLevel = value; +break; +case 553648141: +case 553648161: +case 553648160: +case 553648162: +case 553648164: +break; +default: +if (!this.g.htNonbooleanParameterValues.containsKey(key)) { +this.g.setUserVariable(key, JS.SV.newI(value)); +return; +}} +this.g.setI(key, value); +}, "~S,~N,~N"); +c$.checkIntRange = Clazz_defineMethod(c$, "checkIntRange", +function(value, min, max){ +return (value < min ? min : value > max ? max : value); +}, "~N,~N,~N"); +c$.checkFloatRange = Clazz_defineMethod(c$, "checkFloatRange", +function(value, min, max){ +return (value < min ? min : value > max ? max : value); +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "setBooleanProperty", +function(key, value){ +if (key == null || key.length == 0) return; +if (key.charAt(0) == '_') { +this.g.setB(key, value); +return; +}var tok = JS.T.getTokFromName(key); +switch (JS.T.getParamType(tok)) { +case 545259520: +this.setStringPropertyTok(key, tok, ""); +break; +case 553648128: +this.setIntPropertyTok(key, tok, value ? 1 : 0); +break; +case 570425344: +this.setFloatPropertyTok(key, tok, value ? 1 : 0); +break; +default: +this.setBooleanPropertyTok(key, tok, value); +} +}, "~S,~B"); +Clazz_defineMethod(c$, "setBooleanPropertyTok", +function(key, tok, value){ +var doRepaint = true; +switch (tok) { +case 603979838: +this.g.elementKey = value; +this.getModelkit(false).setProperty("setelementkey", Boolean.$valueOf(value)); +break; +case 603979956: +this.g.symmetryHermannMauguin = value; +break; +case 603979831: +value = new Boolean (value & JV.Viewer.isJS).valueOf(); +this.g.doublePrecision = value; +JV.Viewer.isHighPrecision = this.g.doublePrecision; +this.setBooleanPropertyTok("legacyJavaFloat", 603979874, value); +break; +case 603979821: +this.g.checkCIR = value; +if (value) { +this.checkCIR(true); +}break; +case 603979823: +this.g.cipRule6Full = value; +break; +case 603979802: +this.g.autoplayMovie = value; +break; +case 603979797: +value = false; +this.g.allowAudio = value; +break; +case 603979892: +this.g.noDelay = value; +break; +case 603979891: +this.g.nboCharges = value; +break; +case 603979856: +this.g.hiddenLinesDashed = value; +break; +case 603979886: +this.g.multipleBondBananas = value; +break; +case 603979884: +this.g.modulateOccupancy = value; +break; +case 603979874: +if (value || !this.g.doublePrecision) this.g.legacyJavaFloat = value; +value = this.g.legacyJavaFloat; +break; +case 603979927: +this.g.showModVecs = value; +break; +case 603979937: +this.g.showUnitCellDetails = value; +break; +case 603979849: +doRepaint = false; +break; +case 603979972: +this.g.vectorsCentered = value; +break; +case 603979810: +this.g.cartoonBlocks = value; +break; +case 603979811: +this.g.cartoonSteps = value; +break; +case 603979818: +this.g.cartoonRibose = value; +break; +case 603979840: +this.g.ellipsoidArrows = value; +break; +case 603979967: +this.g.translucent = value; +break; +case 603979817: +this.g.cartoonLadders = value; +break; +case 603979968: +var b = this.g.twistedSheets; +this.g.twistedSheets = value; +if (b != value) this.checkCoordinatesChanged(null); +break; +case 603979820: +this.gdata.setCel(value); +break; +case 603979816: +this.g.cartoonFancy = value; +break; +case 603979934: +this.g.showTiming = value; +break; +case 603979973: +this.g.vectorSymmetry = value; +break; +case 603979867: +this.g.isosurfaceKey = value; +break; +case 603979893: +this.g.partialDots = value; +break; +case 603979872: +this.g.legacyAutoBonding = value; +break; +case 603979826: +this.g.defaultStructureDSSP = value; +break; +case 603979835: +this.g.dsspCalcHydrogen = value; +break; +case 603979782: +this.g.allowModelkit = value; +if (!value) this.setModelKitMode(false); +break; +case 603983903: +this.setModelKitMode(value); +break; +case 603979887: +this.g.multiProcessor = value && (JV.Viewer.nProcessors > 1); +break; +case 603979885: +this.g.monitorEnergy = value; +break; +case 603979853: +this.g.hbondsRasmol = value; +break; +case 603979880: +this.g.minimizationRefresh = value; +break; +case 603979881: +this.g.minimizationSilent = value; +break; +case 603979866: +if (value) { +this.$isKiosk = true; +this.g.disablePopupMenu = true; +if (this.display != null) this.apiPlatform.setTransparentCursor(this.display); +}break; +case 603979975: +this.g.waitForMoveTo = value; +break; +case 603979875: +this.g.logCommands = true; +break; +case 603979876: +this.g.logGestures = true; +break; +case 603979784: +this.g.allowMultiTouch = value; +break; +case 603979898: +this.g.preserveState = value; +this.ms.setPreserveState(value); +this.undoMoveAction(4165, -2); +break; +case 603979955: +this.g.strutsMultiple = value; +break; +case 603979845: +break; +case 603979939: +this.g.slabByAtom = value; +break; +case 603979940: +this.g.slabByMolecule = value; +break; +case 603979903: +this.g.saveProteinStructureState = value; +break; +case 603979780: +this.g.allowGestures = value; +break; +case 603979865: +this.g.imageState = value; +break; +case 603979970: +this.g.useMinimizationThread = value; +break; +case 603979781: +this.g.allowKeyStrokes = value; +break; +case 603979832: +this.g.dragSelected = value; +this.showSelected = false; +break; +case 603979924: +this.g.showKeyStrokes = value; +break; +case 603979846: +this.g.fontCaching = value; +break; +case 603979796: +this.g.atomPicking = value; +break; +case 603979814: +this.highlight(null); +this.g.bondPicking = value; +break; +case 603979906: +this.g.selectAllModels = value; +if (value) this.slm.setSelectionSubset(null); + else this.am.setSelectAllSubset(false); +break; +case 603979879: +this.g.messageStyleChime = value; +break; +case 603979896: +this.g.pdbSequential = value; +break; +case 603979894: +this.g.pdbAddHydrogens = value; +break; +case 603979895: +this.g.pdbGetHeader = value; +break; +case 603979841: +this.g.ellipsoidAxes = value; +break; +case 603979839: +this.g.ellipsoidArcs = value; +break; +case 603979842: +this.g.ellipsoidBall = value; +break; +case 603979843: +this.g.ellipsoidDots = value; +break; +case 603979844: +this.g.ellipsoidFill = value; +break; +case 603979847: +this.g.fontScaling = value; +break; +case 603979957: +this.setSyncTarget(0, value); +break; +case 603979958: +this.setSyncTarget(1, value); +break; +case 603979977: +this.g.wireframeRotation = value; +break; +case 603979868: +this.g.isosurfacePropertySmoothing = value; +break; +case 603979834: +this.g.drawPicking = value; +break; +case 603979786: +case 603979790: +case 603979788: +this.setAntialias(tok, value); +break; +case 603979944: +this.g.smartAromatic = value; +break; +case 603979794: +this.setApplySymmetryToBonds(value); +break; +case 603979792: +this.g.appendNew = value; +break; +case 603979800: +this.g.autoFps = value; +break; +case 603979971: +JU.DF.setUseNumberLocalization(this.g.useNumberLocalization = value); +break; +case 603979918: +case 1611272202: +key = "showFrank"; +this.setFrankOn(value); +break; +case 1612709912: +key = "solventProbe"; +this.g.dotSolvent = value; +break; +case 603979948: +this.g.dotSolvent = value; +break; +case 603979785: +this.g.allowRotateSelected = value; +break; +case 603979783: +this.g.allowMoveAtoms = value; +this.showSelected = false; +break; +case 536870922: +this.setIntPropertyTok("showScript", tok, value ? 1 : 0); +return; +case 603979778: +this.g.allowEmbeddedScripts = value; +break; +case 603979890: +this.g.navigationPeriodic = value; +break; +case 603979984: +this.tm.setZShadeEnabled(value); +return; +case 603979833: +if (this.haveDisplay) this.g.drawHover = value; +break; +case 603979889: +this.setNavigationMode(value); +break; +case 603979888: +return; +case 603979860: +this.g.hideNavigationPoint = value; +break; +case 603979930: +this.g.showNavigationPointAlways = value; +break; +case 603979900: +this.setRefreshing(value); +break; +case 603979869: +this.g.jmolInJSpecView = value; +break; +case 603979870: +this.g.justifyMeasurements = value; +break; +case 603979952: +this.g.ssbondsBackbone = value; +break; +case 603979852: +this.g.hbondsBackbone = value; +break; +case 603979854: +this.g.hbondsSolid = value; +break; +case 536870924: +this.gdata.setSpecular(value); +break; +case 603979942: +this.tm.setSlabEnabled(value); +return; +case 603979980: +this.tm.setZoomEnabled(value); +return; +case 603979864: +this.g.highResolutionFlag = value; +break; +case 603979966: +this.g.traceAlpha = value; +break; +case 603979983: +this.g.zoomLarge = value; +this.tm.setZoomHeight(this.g.zoomHeight, value); +break; +case 603979982: +this.g.zoomHeight = value; +this.tm.setZoomHeight(value, this.g.zoomLarge); +break; +case 603979871: +J.i18n.GT.setDoTranslate(value); +break; +case 603979862: +this.slm.setHideNotSelected(value); +break; +case 603979904: +this.setScriptQueue(value); +break; +case 603979830: +this.g.dotSurface = value; +break; +case 603979829: +this.g.dotsSelectedOnly = value; +break; +case 1611141172: +this.setSelectionHalosEnabled(value); +break; +case 603979910: +this.g.rasmolHydrogenSetting = value; +break; +case 603979908: +this.g.rasmolHeteroSetting = value; +break; +case 603979928: +this.g.showMultipleBonds = value; +break; +case 603979920: +this.g.showHiddenSelectionHalos = value; +break; +case 603979976: +this.tm.setWindowCentered(value); +break; +case 603979828: +this.g.displayCellParameters = value; +break; +case 603979960: +this.g.testFlag1 = value; +break; +case 603979962: +this.g.testFlag2 = value; +break; +case 603979964: +this.g.testFlag3 = value; +break; +case 603979965: +this.jmolTest(); +this.g.testFlag4 = value; +break; +case 603979901: +this.g.ribbonBorder = value; +break; +case 603979815: +this.g.cartoonBaseEdges = value; +break; +case 603979819: +this.g.cartoonRockets = value; +break; +case 603979902: +this.g.rocketBarrels = value; +break; +case 603979850: +this.gdata.setGreyscaleMode(this.g.greyscaleRendering = value); +break; +case 603979878: +this.g.measurementLabels = value; +break; +case 603979809: +case 603979804: +case 603979808: +this.setAxesMode(tok); +return; +case 603979806: +this.setAxesOrientationRasmol(value); +return; +case 603979824: +this.setStringPropertyTok("defaultcolorscheme", 545259545, value ? "rasmol" : "jmol"); +return; +case 603979825: +this.setDebugScript(value); +return; +case 603979897: +this.setPerspectiveDepth(value); +return; +case 603979798: +this.setAutoBond(value); +return; +case 603979914: +this.setShowAxes(value); +return; +case 603979916: +this.setShowBbcage(value); +return; +case 603979922: +this.setShowHydrogens(value); +return; +case 603979926: +this.setShowMeasurements(value); +return; +case 603979936: +this.setShowUnitCell(value); +return; +case 603979812: +doRepaint = false; +this.g.bondModeOr = value; +break; +case 603979978: +doRepaint = false; +this.g.zeroBasedXyzRasmol = value; +this.reset(true); +break; +case 603979899: +doRepaint = false; +this.g.rangeSelected = value; +break; +case 603979877: +doRepaint = false; +this.g.measureAllModels = value; +break; +case 603979954: +doRepaint = false; +this.sm.allowStatusReporting = value; +break; +case 603979822: +doRepaint = false; +this.g.chainCaseSensitive = value; +break; +case 603979858: +doRepaint = false; +this.g.hideNameInPopup = value; +break; +case 603979827: +doRepaint = false; +this.g.disablePopupMenu = value; +break; +case 603979848: +doRepaint = false; +this.g.forceAutoBond = value; +break; +default: +if (!this.g.htBooleanParameterFlags.containsKey(key.toLowerCase())) { +this.g.setUserVariable(key, JS.SV.getBoolean(value)); +return; +}} +this.g.setB(key, value); +if (doRepaint) this.setTainted(true); +}, "~S,~N,~B"); +Clazz_defineMethod(c$, "setModelKitMode", +function(value){ +if (this.acm == null || !this.allowScripting) return; +if (value || this.g.modelKitMode) { +this.setPickingMode(null, value ? 33 : 1); +this.setPickingMode(null, value ? 32 : 1); +}var isChange = (this.g.modelKitMode != value); +this.g.modelKitMode = value; +this.g.setB("modelkitmode", value); +this.highlight(null); +if (isChange) { +this.setModelkitPropertySafely("constraint", null); +}if (value) { +this.setNavigationMode(false); +this.selectAll(); +this.setStringProperty("picking", "assignAtom_C"); +this.setStringProperty("picking", "assignBond_p"); +if (!this.isApplet) this.popupMenu(10, 0, 'm'); +if (isChange) this.sm.setStatusModelKit(1); +this.g.modelKitMode = true; +if (this.getOperativeSymmetry() != null) { +} else if (this.ms.ac == 0) { +this.zap(false, true, true); +} else if (this.am.cmi >= 0 && this.getModelUndeletedAtomsBitSet(this.am.cmi).isEmpty()) { +var htParams = new java.util.Hashtable(); +htParams.put("appendToModelIndex", Integer.$valueOf(this.am.cmi)); +this.loadDefaultModelKitModel(htParams); +}} else { +this.acm.setPickingMode(-1); +if (isChange) { +this.sm.setStatusModelKit(0); +} else if (!value) { +this.getModelkit(false).setProperty("hidemenu", null); +}}}, "~B"); +Clazz_defineMethod(c$, "setSmilesString", +function(s){ +if (s == null) this.g.removeParam("_smilesString"); + else this.g.setO("_smilesString", s); +}, "~S"); +Clazz_defineMethod(c$, "removeUserVariable", +function(key){ +this.g.removeUserVariable(key); +if (key.endsWith("callback")) this.sm.setCallbackFunction(key, null); +}, "~S"); +Clazz_defineMethod(c$, "jmolTest", +function(){ +}); +Clazz_defineMethod(c$, "showParameter", +function(key, ifNotSet, nMax){ +var sv = "" + this.g.getParameterEscaped(key, nMax); +if (ifNotSet || sv.indexOf("") < 0) this.showString(key + " = " + sv, false); +}, "~S,~B,~N"); +Clazz_defineMethod(c$, "showString", +function(str, isPrint){ +if (!JV.Viewer.isJS && this.isScriptQueued() && (!this.isSilent || isPrint) && !"\0".equals(str)) { +JU.Logger.warn(str); +}this.scriptEcho(str); +}, "~S,~B"); +Clazz_defineMethod(c$, "getAllSettings", +function(prefix){ +return this.getStateCreator().getAllSettings(prefix); +}, "~S"); +Clazz_defineMethod(c$, "getBindingInfo", +function(qualifiers){ +return (this.haveDisplay ? this.acm.getBindingInfo(qualifiers) : ""); +}, "~S"); +Clazz_defineMethod(c$, "getIsosurfacePropertySmoothing", +function(asPower){ +return (asPower ? this.g.isosurfacePropertySmoothingPower : this.g.isosurfacePropertySmoothing ? 1 : 0); +}, "~B"); +Clazz_defineMethod(c$, "setNavigationDepthPercent", +function(percent){ +this.tm.setNavigationDepthPercent(percent); +this.refresh(1, "set navigationDepth"); +}, "~N"); +Clazz_defineMethod(c$, "getShowNavigationPoint", +function(){ +if (!this.g.navigationMode) return false; +return (this.tm.isNavigating() && !this.g.hideNavigationPoint || this.g.showNavigationPointAlways || this.getInMotion(true)); +}); +Clazz_overrideMethod(c$, "setPerspectiveDepth", +function(perspectiveDepth){ +this.tm.setPerspectiveDepth(perspectiveDepth); +}, "~B"); +Clazz_overrideMethod(c$, "setAxesOrientationRasmol", +function(TF){ +this.g.setB("axesOrientationRasmol", TF); +this.g.axesOrientationRasmol = TF; +this.reset(true); +}, "~B"); +Clazz_defineMethod(c$, "setAxesScale", +function(tok, val){ +val = JV.Viewer.checkFloatRange(val, -100, 100); +if (tok == 570425345) this.g.axesOffset = val; + else this.g.axesScale = val; +this.axesAreTainted = true; +}, "~N,~N"); +Clazz_defineMethod(c$, "setAxesMode", +function(mode){ +this.g.axesMode = mode; +this.axesAreTainted = true; +switch (mode) { +case 603979808: +this.g.removeParam("axesmolecular"); +this.g.removeParam("axeswindow"); +this.g.setB("axesUnitcell", true); +mode = 2; +break; +case 603979804: +this.g.removeParam("axesunitcell"); +this.g.removeParam("axeswindow"); +this.g.setB("axesMolecular", true); +mode = 1; +break; +case 603979809: +this.g.removeParam("axesunitcell"); +this.g.removeParam("axesmolecular"); +this.g.setB("axesWindow", true); +mode = 0; +} +this.g.setI("axesMode", mode); +}, "~N"); +Clazz_defineMethod(c$, "getSelectionHalosEnabled", +function(){ +return this.selectionHalosEnabled; +}); +Clazz_defineMethod(c$, "setSelectionHalosEnabled", +function(TF){ +if (this.selectionHalosEnabled == TF) return; +this.g.setB("selectionHalos", TF); +this.shm.loadShape(8); +this.selectionHalosEnabled = TF; +}, "~B"); +Clazz_defineMethod(c$, "getShowSelectedOnce", +function(){ +var flag = this.showSelected; +this.showSelected = false; +return flag; +}); +Clazz_defineMethod(c$, "setStrandCount", +function(type, value){ +value = JV.Viewer.checkIntRange(value, 0, 20); +switch (type) { +case 12: +this.g.strandCountForStrands = value; +break; +case 13: +this.g.strandCountForMeshRibbon = value; +break; +default: +this.g.strandCountForStrands = value; +this.g.strandCountForMeshRibbon = value; +break; +} +this.g.setI("strandCount", value); +this.g.setI("strandCountForStrands", this.g.strandCountForStrands); +this.g.setI("strandCountForMeshRibbon", this.g.strandCountForMeshRibbon); +}, "~N,~N"); +Clazz_defineMethod(c$, "getStrandCount", +function(type){ +return (type == 12 ? this.g.strandCountForStrands : this.g.strandCountForMeshRibbon); +}, "~N"); +Clazz_defineMethod(c$, "setNavigationMode", +function(TF){ +this.g.navigationMode = TF; +this.tm.setNavigationMode(TF); +}, "~B"); +Clazz_overrideMethod(c$, "setAutoBond", +function(TF){ +this.g.setB("autobond", TF); +this.g.autoBond = TF; +}, "~B"); +Clazz_defineMethod(c$, "makeConnections", +function(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy){ +this.clearModelDependentObjects(); +this.clearMinimization(); +return this.ms.makeConnections(minDistance, maxDistance, order, connectOperation, bsA, bsB, bsBonds, isBonds, addGroup, energy); +}, "~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N"); +Clazz_overrideMethod(c$, "rebond", +function(){ +this.rebondState(false); +}); +Clazz_defineMethod(c$, "rebondState", +function(isStateScript){ +this.clearModelDependentObjects(); +this.ms.deleteAllBonds(); +var isLegacy = isStateScript && this.g.legacyAutoBonding; +this.ms.autoBondBs4(null, null, null, null, this.getMadBond(), isLegacy, null); +this.addStateScript((isLegacy ? "set legacyAutoBonding TRUE;connect;set legacyAutoBonding FALSE;" : "connect;"), false, true); +}, "~B"); +Clazz_overrideMethod(c$, "setPercentVdwAtom", +function(value){ +this.g.setI("percentVdwAtom", value); +this.g.percentVdwAtom = value; +this.rd.value = value / 100; +this.rd.factorType = J.atomdata.RadiusData.EnumType.FACTOR; +this.rd.vdwType = J.c.VDW.AUTO; +this.shm.setShapeSizeBs(0, 0, this.rd, null); +}, "~N"); +Clazz_overrideMethod(c$, "getMadBond", +function(){ +return (this.g.bondRadiusMilliAngstroms * 2); +}); +Clazz_overrideMethod(c$, "setShowHydrogens", +function(TF){ +this.g.setB("showHydrogens", TF); +this.g.showHydrogens = TF; +}, "~B"); +Clazz_defineMethod(c$, "setShowBbcage", +function(value){ +this.setObjectMad10(32, "boundbox", (value ? -4 : 0)); +this.g.setB("showBoundBox", value); +}, "~B"); +Clazz_defineMethod(c$, "getShowBbcage", +function(){ +return this.getObjectMad10(4) != 0; +}); +Clazz_defineMethod(c$, "setShowUnitCell", +function(value){ +this.setObjectMad10(33, "unitcell", (value ? -2 : 0)); +this.g.setB("showUnitCell", value); +}, "~B"); +Clazz_defineMethod(c$, "getShowUnitCell", +function(){ +return this.getObjectMad10(5) != 0; +}); +Clazz_defineMethod(c$, "setShowAxes", +function(value){ +this.setObjectMad10(34, "axes", (value ? -2 : 0)); +this.g.setB("showAxes", value); +}, "~B"); +Clazz_defineMethod(c$, "getShowAxes", +function(){ +return this.getObjectMad10(1) != 0; +}); +Clazz_overrideMethod(c$, "setFrankOn", +function(TF){ +if (this.isPreviewOnly) TF = false; +this.frankOn = TF; +this.setObjectMad10(36, "frank", (TF ? 1 : 0)); +}, "~B"); +Clazz_defineMethod(c$, "getShowFrank", +function(){ +if (this.isPreviewOnly || this.isApplet && this.creatingImage) return false; +return (this.isSignedApplet && !this.isSignedAppletLocal && !JV.Viewer.isJS || this.frankOn); +}); +Clazz_overrideMethod(c$, "setShowMeasurements", +function(TF){ +this.g.setB("showMeasurements", TF); +this.g.showMeasurements = TF; +}, "~B"); +Clazz_defineMethod(c$, "setUnits", +function(units, isDistance){ +var isDefault = "default".equals(units); +if (!isDistance || !isDefault) this.g.setUnits(units); +if (isDistance) { +this.setShapeProperty(6, "reformatDistances", units); +}}, "~S,~B"); +Clazz_overrideMethod(c$, "setRasmolDefaults", +function(){ +this.setDefaultsType("RasMol"); +}); +Clazz_overrideMethod(c$, "setJmolDefaults", +function(){ +this.setDefaultsType("Jmol"); +}); +Clazz_defineMethod(c$, "setDefaultsType", +function(type){ +if (type.equalsIgnoreCase("RasMol")) { +this.stm.setRasMolDefaults(); +return; +}if (type.equalsIgnoreCase("PyMOL")) { +this.stm.setPyMOLDefaults(); +return; +}this.stm.setJmolDefaults(); +this.setIntProperty("bondingVersion", 0); +this.shm.setShapeSizeBs(0, 0, this.rd, this.getAllAtoms()); +}, "~S"); +Clazz_defineMethod(c$, "setAntialias", +function(tok, TF){ +var isChanged = false; +switch (tok) { +case 603979786: +isChanged = (this.g.antialiasDisplay != TF); +this.g.antialiasDisplay = TF; +break; +case 603979790: +isChanged = (this.g.antialiasTranslucent != TF); +this.g.antialiasTranslucent = TF; +break; +case 603979788: +this.g.antialiasImages = TF; +return; +} +if (isChanged) { +this.resizeImage(0, 0, false, false, true); +this.refresh(3, "Viewer:setAntialias()"); +}}, "~N,~B"); +Clazz_defineMethod(c$, "allocTempPoints", +function(size){ +return this.tempArray.allocTempPoints(size); +}, "~N"); +Clazz_defineMethod(c$, "freeTempPoints", +function(tempPoints){ +this.tempArray.freeTempPoints(tempPoints); +}, "~A"); +Clazz_defineMethod(c$, "allocTempScreens", +function(size){ +return this.tempArray.allocTempScreens(size); +}, "~N"); +Clazz_defineMethod(c$, "freeTempScreens", +function(tempScreens){ +this.tempArray.freeTempScreens(tempScreens); +}, "~A"); +Clazz_defineMethod(c$, "allocTempEnum", +function(size){ +return this.tempArray.allocTempEnum(size); +}, "~N"); +Clazz_defineMethod(c$, "freeTempEnum", +function(temp){ +this.tempArray.freeTempEnum(temp); +}, "~A"); +Clazz_defineMethod(c$, "getFont3D", +function(fontFace, fontStyle, fontSize){ +return this.gdata.getFont3DFSS(fontFace, fontStyle, fontSize); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "getAtomGroupQuaternions", +function(bsAtoms, nMax){ +return this.ms.getAtomGroupQuaternions(bsAtoms, nMax, this.getQuaternionFrame()); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "setStereoMode", +function(twoColors, stereoMode, degrees){ +this.setFloatProperty("stereoDegrees", degrees); +this.setBooleanPropertyTok("greyscaleRendering", 603979850, stereoMode.isBiColor()); +if (twoColors != null) this.tm.setStereoMode2(twoColors); + else this.tm.setStereoMode(stereoMode); +}, "~A,J.c.STER,~N"); +Clazz_defineMethod(c$, "getChimeInfo", +function(tok){ +return this.getPropertyManager().getChimeInfo(tok, this.bsA()); +}, "~N"); +Clazz_defineMethod(c$, "getModelFileInfo", +function(){ +return this.getPropertyManager().getModelFileInfo(this.getVisibleFramesBitSet()); +}); +Clazz_defineMethod(c$, "getModelFileInfoAll", +function(){ +return this.getPropertyManager().getModelFileInfo(null); +}); +Clazz_defineMethod(c$, "showEditor", +function(file_text){ +var scriptEditor = this.getProperty("DATA_API", "getScriptEditor", Boolean.TRUE); +if (scriptEditor == null) return; +scriptEditor.show(file_text); +}, "~A"); +Clazz_defineMethod(c$, "getPropertyManager", +function(){ +if (this.pm == null) (this.pm = J.api.Interface.getInterface("JV.PropertyManager", this, "prop")).setViewer(this); +return this.pm; +}); +Clazz_defineMethod(c$, "setTainted", +function(TF){ +this.isTainted = this.axesAreTainted = (TF && (this.refreshing || this.creatingImage)); +}, "~B"); +Clazz_defineMethod(c$, "checkObjectClicked", +function(x, y, modifiers){ +return this.shm.checkObjectClicked(x, y, modifiers, this.getVisibleFramesBitSet(), this.g.drawPicking); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "checkObjectHovered", +function(x, y){ +return (x >= 0 && this.shm != null && this.shm.checkObjectHovered(x, y, this.getVisibleFramesBitSet(), this.getBondsPickable())); +}, "~N,~N"); +Clazz_defineMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, action){ +var iShape = 0; +switch (this.getPickingMode()) { +case 2: +iShape = 5; +break; +case 4: +iShape = 22; +break; +} +if (this.shm.checkObjectDragged(prevX, prevY, x, y, action, this.getVisibleFramesBitSet(), iShape)) { +this.refresh(1, "checkObjectDragged"); +if (iShape == 22) this.scriptEcho(this.getShapeProperty(22, "command")); +return true; +}return false; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "rotateAxisAngleAtCenter", +function(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsSelected){ +var isOK = this.tm.rotateAxisAngleAtCenter(eval, rotCenter, rotAxis, degreesPerSecond, endDegrees, isSpin, bsSelected); +if (isOK) this.setSync(); +return isOK; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.V3,~N,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "rotateAboutPointsInternal", +function(eval, point1, point2, degreesPerSecond, endDegrees, isSpin, bsSelected, translation, finalPoints, dihedralList, m4, useModelKit){ +if (eval == null) eval = this.eval; +if (this.headless) { +if (isSpin && endDegrees == 3.4028235E38) return false; +isSpin = false; +}var isOK = this.tm.rotateAboutPointsInternal(eval, point1, point2, degreesPerSecond, endDegrees, false, isSpin, bsSelected, false, translation, finalPoints, dihedralList, m4, useModelKit); +if (isOK) this.setSync(); +return isOK; +}, "J.api.JmolScriptEvaluator,JU.P3,JU.P3,~N,~N,~B,JU.BS,JU.V3,JU.Lst,~A,JU.M4,~B"); +Clazz_defineMethod(c$, "startSpinningAxis", +function(pt1, pt2, isClockwise){ +if (this.tm.spinOn || this.tm.navOn) { +this.tm.setSpinOff(); +this.tm.setNavOn(false); +return; +}this.tm.rotateAboutPointsInternal(null, pt1, pt2, this.g.pickingSpinRate, 3.4028235E38, isClockwise, true, null, false, null, null, null, null, false); +}, "JU.T3,JU.T3,~B"); +Clazz_defineMethod(c$, "getModelDipole", +function(){ +return this.ms.getModelDipole(this.am.cmi); +}); +Clazz_defineMethod(c$, "calculateMolecularDipole", +function(bsAtoms){ +try { +return this.ms.calculateMolecularDipole(this.am.cmi, bsAtoms); +} catch (e) { +if (Clazz_exceptionOf(e,"JV.JmolAsyncException")){ +if (this.eval != null) this.eval.loadFileResourceAsync(e.getFileName()); +return null; +} else { +throw e; +} +} +}, "JU.BS"); +Clazz_defineMethod(c$, "setDefaultLattice", +function(p){ +if (!Float.isNaN(p.x + p.y + p.z)) this.g.ptDefaultLattice.setT(p); +this.g.setO("defaultLattice", JU.Escape.eP(p)); +}, "JU.P3"); +Clazz_defineMethod(c$, "getDefaultLattice", +function(){ +return this.g.ptDefaultLattice; +}); +Clazz_defineMethod(c$, "getModelExtract", +function(atomExpression, doTransform, isModelKit, type){ +return this.getPropertyManager().getModelExtract(this.getAtomBitSet(atomExpression), doTransform, isModelKit, type, false); +}, "~O,~B,~B,~S"); +Clazz_overrideMethod(c$, "getData", +function(atomExpression, type){ +return this.getModelFileData(atomExpression, type, true); +}, "~S,~S"); +Clazz_defineMethod(c$, "getModelFileData", +function(atomExpression, type, allTrajectories){ +return this.getPropertyManager().getAtomData(atomExpression, type, allTrajectories); +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getModelCml", +function(bs, nAtomsMax, addBonds, doTransform){ +return this.getPropertyManager().getModelCml(bs, nAtomsMax, addBonds, doTransform, false); +}, "JU.BS,~N,~B,~B"); +Clazz_defineMethod(c$, "getPdbAtomData", +function(bs, out, asPQR, doTransform){ +return this.getPropertyManager().getPdbAtomData(bs == null ? this.bsA() : bs, out, asPQR, doTransform, false); +}, "JU.BS,JU.OC,~B,~B"); +Clazz_defineMethod(c$, "isJmolDataFrame", +function(){ +return this.ms.isJmolDataFrameForModel(this.am.cmi); +}); +Clazz_defineMethod(c$, "setFrameTitle", +function(modelIndex, title){ +this.ms.setFrameTitle(JU.BSUtil.newAndSetBit(modelIndex), title); +}, "~N,~S"); +Clazz_defineMethod(c$, "setFrameTitleObj", +function(title){ +this.shm.loadShape(31); +this.ms.setFrameTitle(this.getVisibleFramesBitSet(), title); +}, "~O"); +Clazz_defineMethod(c$, "getFrameTitle", +function(){ +return this.ms.getFrameTitle(this.am.cmi); +}); +Clazz_defineMethod(c$, "setAtomProperty", +function(bs, tok, iValue, fValue, sValue, values, list){ +if (tok == 1648363544) this.shm.deleteVdwDependentShapes(bs); +this.clearMinimization(); +this.ms.setAtomProperty(bs, tok, iValue, fValue, sValue, values, list); +switch (tok) { +case 1086326789: +this.setModelkitPropertySafely("updateatomkeys", bs); +case 1111492609: +case 1111492610: +case 1111492611: +case 1111492612: +case 1111492613: +case 1111492614: +case 1111490577: +case 1111490578: +case 1111490579: +this.refreshMeasures(true); +} +}, "JU.BS,~N,~N,~N,~S,~A,~A"); +Clazz_defineMethod(c$, "checkCoordinatesChanged", +function(bsAtoms){ +this.ms.recalculatePositionDependentQuantities(bsAtoms, null); +this.refreshMeasures(true); +}, "JU.BS"); +Clazz_defineMethod(c$, "setAtomCoords", +function(bs, tokType, xyzValues){ +if (bs.isEmpty()) return; +var atom = this.ms.at[bs.nextSetBit(0)]; +var n = bs.cardinality(); +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "setAtomCoords", n, bs); +this.ms.setAtomCoords(bs, tokType, xyzValues); +this.setStatusAtomMoved(true, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +}, "JU.BS,~N,~O"); +Clazz_defineMethod(c$, "setAtomCoordsRelative", +function(offset, bs){ +if (bs == null) bs = this.bsA(); +if (bs.isEmpty()) return; +var doNotify = (offset.lengthSquared() != 0); +var atom = this.ms.at[bs.nextSetBit(0)]; +var n = bs.cardinality(); +if (doNotify) { +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "setAtomCoords", n, bs); +}this.ms.setAtomCoordsRelative(offset, bs); +this.checkMinimization(); +if (doNotify) { +this.setStatusAtomMoved(false, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +}}, "JU.T3,JU.BS"); +Clazz_defineMethod(c$, "invertAtomCoord", +function(pt, plane, bs, ringAtomIndex, isClick){ +if (ringAtomIndex >= 0) { +bs = JU.JmolMolecule.getBranchesForInversion(this.ms.at, ringAtomIndex, this.ms.getMoleculeBitSetForAtom(ringAtomIndex)); +var nb = bs.cardinality(); +switch (nb) { +case 0: +case 1: +return; +case 2: +break; +case 3: +case 4: +var lengths = Clazz_newIntArray (nb, 0); +var points = Clazz_newIntArray (nb, 0); +var ni = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), ni++) { +lengths[ni] = this.getBranchBitSet(i, ringAtomIndex, true).cardinality(); +points[ni] = i; +} +for (var j = 0; j < nb - 2; j++) { +var max = -2147483648; +var imax = 0; +for (var i = 0; i < nb; i++) if (lengths[i] >= max && bs.get(points[i])) { +imax = points[i]; +max = lengths[i]; +} +bs.clear(imax); +} +} +if (isClick && !bs.isEmpty()) this.undoMoveActionClear(ringAtomIndex, 2, true); +}var n = bs.cardinality(); +if (n == 0) return; +var atom = this.ms.at[bs.nextSetBit(0)]; +this.sm.setStatusStructureModified(atom.i, atom.mi, 3, "invertAtomCoords", n, bs); +this.ms.invertSelected(pt, plane, ringAtomIndex, bs); +this.setStatusAtomMoved(true, bs); +this.sm.setStatusStructureModified(atom.i, atom.mi, -3, "OK", n, bs); +if (isClick) this.setStatusAtomPicked(ringAtomIndex, "inverted: " + JU.Escape.eBS(bs), null, false); +}, "JU.P3,JU.P4,JU.BS,~N,~B"); +Clazz_defineMethod(c$, "invertSelected", +function(pt, plane, iAtom, bsAtoms){ +if (bsAtoms == null) bsAtoms = this.bsA(); +if (bsAtoms.isEmpty()) return; +this.ms.invertSelected(pt, plane, iAtom, bsAtoms); +this.setStatusAtomMoved(true, bsAtoms); +}, "JU.P3,JU.P4,~N,JU.BS"); +Clazz_defineMethod(c$, "moveAtoms", +function(m4, mNew, rotation, translation, center, isInternal, bsAtoms, translationOnly, useModelKit){ +if (bsAtoms.isEmpty()) return; +var bsFixed = this.getMotionFixedAtoms(null, null); +if (bsAtoms.intersects(bsFixed)) return; +var uc = (useModelKit ? this.getOperativeSymmetry() : null); +var apos0 = null; +if (uc != null) { +apos0 = this.ms.saveAtomPositions(); +}this.ms.moveAtoms(m4, mNew, rotation, translation, bsAtoms, center, isInternal, translationOnly); +if (uc != null) { +this.getModelkit(false).checkMovedAtoms(bsFixed, bsAtoms, apos0); +}this.setStatusAtomMoved(true, bsAtoms); +}, "JU.M4,JU.M3,JU.M3,JU.V3,JU.P3,~B,JU.BS,~B,~B"); +Clazz_defineMethod(c$, "moveSelectedXY", +function(deltaX, deltaY, modifiers){ +this.moveSelected(deltaX, deltaY, -2147483648, -2147483648, -2147483648, null, null, null, false, false, modifiers); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "moveSelected", +function(deltaX, deltaY, deltaZ, x, y, bsSelected, ptOld, ptNew, isTranslation, asAtoms, modifiers){ +if (deltaZ == 0 && ptNew == null || this.isJmolDataFrame()) return 0; +if (ptNew == null) { +if (x == -2147483648 && this.modelkit != null) this.setModelkitPropertySafely("rotatebondindex", Integer.$valueOf(-2147483648)); +if (deltaX == -2147483648) { +this.showSelected = true; +this.movableBitSet = this.setMovableBitSet(null, !asAtoms); +this.shm.loadShape(8); +this.refresh(6, "moveSelected"); +return 0; +}if (deltaX == 2147483647) { +if (!this.showSelected) return 0; +this.showSelected = false; +this.movableBitSet = null; +this.refresh(6, "moveSelected"); +return 0; +}}if (this.movingSelected) return 0; +this.movingSelected = true; +this.stopMinimization(); +if (ptNew == null && x != -2147483648 && this.modelkit != null && this.modelkit.getProperty("rotatebondindex") != null) { +this.modelkit.actionRotateBond(deltaX, deltaY, x, y, (modifiers & 16) != 0); +} else { +if (bsSelected == null) bsSelected = this.bsA(); +var iatom = bsSelected.nextSetBit(0); +bsSelected = this.setMovableBitSet(bsSelected, !asAtoms); +if (bsSelected.isEmpty()) { +bsSelected.set(iatom); +this.sm.setStatusStructureModified(iatom, this.getModelIndexForAtom(iatom), -3, "FAILED", 1, bsSelected); +} else { +if (isTranslation) { +var ptCenter = (ptOld == null ? this.ms.getAtomSetCenter(bsSelected) : ptOld); +if (ptNew == null) { +this.tm.finalizeTransformParameters(); +var f = (this.g.antialiasDisplay ? 2 : 1); +this.tm.transformPt3f(ptCenter, this.ptScreen); +if (deltaZ != -2147483648) this.ptScreenNew.set(this.ptScreen.x, this.ptScreen.y, this.ptScreen.z + deltaZ); + else this.ptScreenNew.set(this.ptScreen.x + deltaX * f, this.ptScreen.y + deltaY * f, this.ptScreen.z); +this.tm.unTransformPoint(this.ptScreenNew, this.ptNew); +ptNew = this.ptNew; +var uc = this.getOperativeSymmetry(); +if (uc != null) { +ptNew.sub(ptCenter); +ptNew.add(this.ms.at[iatom]); +this.getModelkit(false).cmdAssignMoveAtoms(bsSelected, iatom, ptNew, null, true, !asAtoms); +}}if (!Float.isNaN(ptNew.x)) { +ptNew.sub(ptCenter); +this.setAtomCoordsRelative(ptNew, bsSelected); +}} else { +this.tm.rotateXYBy(deltaX, deltaY, bsSelected); +}}}this.refresh(2, ""); +this.movingSelected = false; +return (bsSelected == null ? 0 : bsSelected.cardinality()); +}, "~N,~N,~N,~N,~N,JU.BS,JU.P3,JU.P3,~B,~B,~N"); +Clazz_defineMethod(c$, "highlightBond", +function(index, closestAtomIndex, x, y){ +if (!this.hoverEnabled) return; +var bs = null; +if (index >= 0) { +var b = this.ms.bo[index]; +var i = b.atom2.i; +bs = JU.BSUtil.newAndSetBit(i); +bs.set(b.atom1.i); +}this.highlight(bs); +this.getModelkit(false); +this.setModelkitPropertySafely("screenxy", Clazz_newIntArray(-1, [x, y])); +this.setModelkitPropertySafely("bondindex", Integer.$valueOf(index)); +var text = this.setModelkitPropertySafely("hoverlabel", Integer.$valueOf(-2 - index)); +if (text != null) this.hoverOnPt(x, y, text, null, null); +this.refresh(3, "highlightBond"); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "highlight", +function(bs){ +this.atomHighlighted = (bs != null && bs.cardinality() == 1 ? bs.nextSetBit(0) : -1); +if (bs == null) { +this.setCursor(0); +} else { +this.shm.loadShape(8); +this.setCursor(12); +}this.setModelkitPropertySafely("highlight", bs); +this.setShapeProperty(8, "highlight", bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "refreshMeasures", +function(andStopMinimization){ +this.setShapeProperty(6, "refresh", null); +this.setStatusMeasuring("refreshed", -3, "", 0); +if (andStopMinimization) this.stopMinimization(); +}, "~B"); +Clazz_defineMethod(c$, "functionXY", +function(functionName, nX, nY){ +var data = null; +if (functionName.indexOf("file:") == 0) data = this.getFileAsString3(functionName.substring(5), false, null); + else if (functionName.indexOf("data2d_") != 0) return this.sm.functionXY(functionName, nX, nY); +nX = Math.abs(nX); +nY = Math.abs(nY); +var fdata; +if (data == null) { +fdata = this.getDataObj(functionName, null, 2); +if (fdata != null) return fdata; +data = ""; +}fdata = Clazz_newFloatArray (nX, nY, 0); +var f = Clazz_newFloatArray (nX * nY, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, f); +for (var i = 0, n = 0; i < nX; i++) for (var j = 0; j < nY; j++) fdata[i][j] = f[n++]; + + +return fdata; +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "functionXYZ", +function(functionName, nX, nY, nZ){ +var data = null; +if (functionName.indexOf("file:") == 0) data = this.getFileAsString3(functionName.substring(5), false, null); + else if (functionName.indexOf("data3d_") != 0) return this.sm.functionXYZ(functionName, nX, nY, nZ); +nX = Math.abs(nX); +nY = Math.abs(nY); +nZ = Math.abs(nZ); +var xyzdata; +if (data == null) { +xyzdata = this.getDataObj(functionName, null, 2); +if (xyzdata != null) return xyzdata; +data = ""; +}xyzdata = Clazz_newFloatArray (nX, nY, nZ, 0); +var f = Clazz_newFloatArray (nX * nY * nZ, 0); +JU.Parser.parseStringInfestedFloatArray(data, null, f); +for (var i = 0, n = 0; i < nX; i++) for (var j = 0; j < nY; j++) for (var k = 0; k < nZ; k++) xyzdata[i][j][k] = f[n++]; + + + +return xyzdata; +}, "~S,~N,~N,~N"); +Clazz_overrideMethod(c$, "extractMolData", +function(what){ +if (what == null) { +var i = this.am.cmi; +if (i < 0 || this.ms.ac == 0) return null; +what = this.getModelNumberDotted(i); +}return this.getModelExtract(what, true, false, "V2000"); +}, "~S"); +Clazz_defineMethod(c$, "getNMRPredict", +function(type){ +type = type.toUpperCase(); +if (type.equals("H") || type.equals("1H") || type.equals("")) type = "H1"; + else if (type.equals("C") || type.equals("13C")) type = "C13"; +if (!type.equals("NONE")) { +if (!type.equals("C13") && !type.equals("H1")) return "Type must be H1 or C13"; +var molFile = this.getModelExtract("selected", true, false, "V2000"); +var pt = molFile.indexOf("\n"); +if (pt < 0) return null; +molFile = "Jmol " + JV.Viewer.version_date + molFile.substring(pt); +if (this.isApplet) { +this.showUrl(this.g.nmrUrlFormat + molFile); +return "opening " + this.g.nmrUrlFormat; +}}this.syncScript("true", "*", 0); +this.syncScript(type + "Simulate:", ".", 0); +return "sending request to JSpecView"; +}, "~S"); +Clazz_defineMethod(c$, "getHelp", +function(what){ +if (this.g.helpPath.indexOf("?") < 0) { +if (what.length > 0 && what.indexOf("?") != 0) what = "?search=" + JU.PT.rep(what, " ", "%20"); +what += (what.length == 0 ? "?ver=" : "&ver=") + JV.JC.majorVersion; +} else { +what = "&" + what; +}this.showUrl(this.g.helpPath + what); +}, "~S"); +Clazz_defineMethod(c$, "getChemicalInfo", +function(smiles, info, bsAtoms){ +info = info.toLowerCase(); +var type = '/'; +switch (";inchi;inchikey;stdinchi;stdinchikey;name;image;drawing;names;".indexOf(";" + info + ";")) { +case 0: +type = 'I'; +break; +case 6: +type = 'K'; +break; +case 15: +type = 'T'; +break; +case 24: +type = 'S'; +break; +case 36: +type = 'M'; +break; +case 41: +case 47: +type = '2'; +break; +case 55: +type = 'N'; +break; +} +var s = this.setLoadFormat(false, "_" + smiles, type, false); +if (type == '2') { +this.fm.loadImage(s, "\1" + smiles, false); +return s; +}if (type == '/') { +if (JU.PT.isOneOf(info, ";alc;cdxml;cerius;charmm;cif;cml;ctx;gjf;gromacs;hyperchem;jme;maestro;mol;mol2;sybyl2;mrv;pdb;sdf;sdf3000;sln;smiles;xyz")) s += "file?format=" + info; + else s += JU.PT.rep(info, " ", "%20"); +}s = this.getFileAsString4(s, -1, false, false, false, "file"); +if (type == 'M' && s.indexOf("\n") > 0) s = s.substring(0, s.indexOf("\n")); + else if (info.equals("jme")) s = this.getPropertyManager().fixJMEFormalCharges(bsAtoms, s); +return s; +}, "~S,~S,JU.BS"); +Clazz_defineMethod(c$, "addCommand", +function(command){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +if (command.startsWith("pause ") || command.equals("pause")) command = "resume"; +this.commandHistory.addCommand(JU.PT.replaceAllCharacters(command, "\r\n\t", " ")); +}, "~S"); +Clazz_defineMethod(c$, "pushState", +function(){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +this.commandHistory.pushState(this.getStateInfo()); +}); +Clazz_defineMethod(c$, "popState", +function(){ +if (this.autoExit || !this.haveDisplay || !this.getPreserveState()) return; +var state = this.commandHistory.popState(); +if (state != null) this.evalStringQuiet(state); +}); +Clazz_defineMethod(c$, "removeCommand", +function(){ +return this.commandHistory.removeCommand(); +}); +Clazz_overrideMethod(c$, "getSetHistory", +function(howFarBack){ +return this.commandHistory.getSetHistory(howFarBack); +}, "~N"); +Clazz_defineMethod(c$, "historyFind", +function(cmd, dir){ +return this.commandHistory.find(cmd, dir); +}, "~S,~N"); +Clazz_defineMethod(c$, "setHistory", +function(fileName){ +this.commandHistory.getSetHistory(-2147483648); +this.commandHistory.addCommand(this.getFileAsString4(fileName, -1, false, false, true, null)); +}, "~S"); +Clazz_defineMethod(c$, "getOutputChannel", +function(localName, fullPath){ +return this.getOutputManager().getOutputChannel(localName, fullPath); +}, "~S,~A"); +Clazz_overrideMethod(c$, "writeTextFile", +function(fileName, data){ +return this.writeFile(fileName, data, "txt"); +}, "~S,~S"); +Clazz_defineMethod(c$, "writeFile", +function(fileName, data, type){ +var params = new java.util.Hashtable(); +params.put("fileName", fileName); +params.put("type", type); +params.put(((typeof(data)=='string') ? "text" : "bytes"), data); +return this.outputToFile(params); +}, "~S,~O,~S"); +Clazz_overrideMethod(c$, "clipImageOrPasteText", +function(text){ +if (!this.haveAccess(JV.Viewer.ACCESS.ALL)) return "no"; +return this.getOutputManager().clipImageOrPasteText(text); +}, "~S"); +Clazz_overrideMethod(c$, "getClipboardText", +function(){ +if (!this.haveAccess(JV.Viewer.ACCESS.ALL)) return "no"; +try { +return this.getOutputManager().getClipboardText(); +} catch (er) { +if (Clazz_exceptionOf(er, Error)){ +return J.i18n.GT.$("clipboard is not accessible -- use signed applet"); +} else { +throw er; +} +} +}); +Clazz_defineMethod(c$, "processWriteOrCapture", +function(params){ +return this.getOutputManager().processWriteOrCapture(params); +}, "java.util.Map"); +Clazz_defineMethod(c$, "createZip", +function(fileName, type, params){ +var state = this.getStateInfo(); +var data = params.get("data"); +if (fileName != null) params.put("fileName", fileName); +params.put("type", type); +params.put("text", state); +if (Clazz_instanceOf(data,Array)) params.put("scripts", data); + else if (Clazz_instanceOf(data,"JU.Lst")) params.put("imageData", data); +return this.getOutputManager().outputToFile(params); +}, "~S,~S,java.util.Map"); +Clazz_overrideMethod(c$, "outputToFile", +function(params){ +return this.getOutputManager().outputToFile(params); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setSyncTarget", +function(mode, TF){ +switch (mode) { +case 0: +this.sm.syncingMouse = TF; +break; +case 1: +this.sm.syncingScripts = TF; +break; +case 2: +this.sm.syncSend(TF ? "GET_GRAPHICS" : "SET_GRAPHICS_OFF", "*", 0); +if (Float.isNaN(this.tm.stereoDegrees)) this.setFloatProperty("stereoDegrees", -5); +if (TF) { +this.setBooleanProperty("_syncMouse", false); +this.setBooleanProperty("_syncScript", false); +}return; +} +if (!this.sm.syncingScripts && !this.sm.syncingMouse) this.setSync(); +}, "~N,~B"); +Clazz_overrideMethod(c$, "syncScript", +function(script, applet, port){ +this.sm.syncScript(script, applet, port); +}, "~S,~S,~N"); +Clazz_overrideMethod(c$, "getModelIndexFromId", +function(id){ +return this.ms.getModelIndexFromId(id); +}, "~S"); +Clazz_defineMethod(c$, "setSyncDriver", +function(mode){ +this.sm.setSyncDriver(mode); +}, "~N"); +Clazz_defineMethod(c$, "setProteinType", +function(type, bs){ +this.ms.setProteinType(bs == null ? this.bsA() : bs, type); +}, "J.c.STR,JU.BS"); +Clazz_defineMethod(c$, "getVanderwaalsMar", +function(i){ +return (this.defaultVdw === J.c.VDW.USER ? this.userVdwMars[i] : JU.Elements.getVanderwaalsMar(i, this.defaultVdw)); +}, "~N"); +Clazz_defineMethod(c$, "getVanderwaalsMarType", +function(atomicAndIsotopeNumber, type){ +if (type == null) type = this.defaultVdw; + else switch (type) { +case J.c.VDW.AUTO: +case J.c.VDW.AUTO_BABEL: +case J.c.VDW.AUTO_JMOL: +case J.c.VDW.AUTO_RASMOL: +if (this.defaultVdw !== J.c.VDW.AUTO) type = this.defaultVdw; +break; +default: +break; +} +if (type === J.c.VDW.USER && this.bsUserVdws == null) type = J.c.VDW.JMOL; +return (type === J.c.VDW.USER ? this.userVdwMars[atomicAndIsotopeNumber & 127] : JU.Elements.getVanderwaalsMar(atomicAndIsotopeNumber, type)); +}, "~N,J.c.VDW"); +Clazz_defineMethod(c$, "setVdwStr", +function(name){ +var type = J.c.VDW.getVdwType(name); +if (type == null) type = J.c.VDW.AUTO; +switch (type) { +case J.c.VDW.JMOL: +case J.c.VDW.BABEL: +case J.c.VDW.RASMOL: +case J.c.VDW.AUTO: +case J.c.VDW.USER: +break; +default: +type = J.c.VDW.JMOL; +} +if (type !== this.defaultVdw && type === J.c.VDW.USER && this.bsUserVdws == null) this.setUserVdw(this.defaultVdw); +this.defaultVdw = type; +this.g.setO("defaultVDW", type.getVdwLabel()); +}, "~S"); +Clazz_defineMethod(c$, "setUserVdw", +function(mode){ +this.userVdwMars = Clazz_newIntArray (JU.Elements.elementNumberMax, 0); +this.userVdws = Clazz_newFloatArray (JU.Elements.elementNumberMax, 0); +this.bsUserVdws = new JU.BS(); +if (mode === J.c.VDW.USER) mode = J.c.VDW.JMOL; +for (var i = 1; i < JU.Elements.elementNumberMax; i++) { +this.userVdwMars[i] = JU.Elements.getVanderwaalsMar(i, mode); +this.userVdws[i] = this.userVdwMars[i] / 1000; +} +}, "J.c.VDW"); +Clazz_defineMethod(c$, "getDefaultVdwNameOrData", +function(mode, type, bs){ +switch (mode) { +case -2147483648: +return this.defaultVdw.getVdwLabel(); +case 2147483647: +if ((bs = this.bsUserVdws) == null) return ""; +type = J.c.VDW.USER; +break; +} +if (type == null || type === J.c.VDW.AUTO) type = this.defaultVdw; +if (type === J.c.VDW.USER && this.bsUserVdws == null) this.setUserVdw(this.defaultVdw); +return this.getDataManager().getDefaultVdwNameOrData(type, bs); +}, "~N,J.c.VDW,JU.BS"); +Clazz_defineMethod(c$, "deleteAtoms", +function(bsAtoms, fullModels){ +var atomIndex = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +if (atomIndex < 0) return 0; +this.clearModelDependentObjects(); +var a = this.ms.at[atomIndex]; +if (a == null) return 0; +var mi = a.mi; +if (fullModels) { +return this.deleteModels(mi, bsAtoms); +}this.sm.setStatusStructureModified(atomIndex, a.mi, 4, "deleting atoms " + bsAtoms, bsAtoms.cardinality(), bsAtoms); +this.ms.deleteAtoms(bsAtoms); +var n = this.slm.deleteAtoms(bsAtoms); +this.setTainted(true); +this.sm.setStatusStructureModified(atomIndex, mi, -4, "OK", n, bsAtoms); +return n; +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "deleteModels", +function(modelIndex, bsAtoms){ +var bsModels = (bsAtoms == null ? JU.BSUtil.newAndSetBit(modelIndex) : this.ms.getModelBS(bsAtoms, false)); +this.clearModelDependentObjects(); +bsAtoms = this.getModelUndeletedAtomsBitSetBs(bsModels); +var n = bsAtoms.cardinality(); +var currentModel = this.am.cmi; +this.setCurrentModelIndexClear(0, false); +this.am.setAnimationOn(false); +var bsD0 = JU.BSUtil.copy(this.slm.bsDeleted); +var bsDeleted = this.ms.deleteModels(bsModels); +if (bsDeleted == null) { +this.setCurrentModelIndexClear(currentModel, false); +return 0; +}this.sm.setStatusStructureModified(-1, modelIndex, 5, "deleting model " + this.getModelNumberDotted(modelIndex), n, bsAtoms); +this.slm.processDeletedModelAtoms(bsDeleted); +if (this.eval != null) this.eval.deleteAtomsInVariables(bsDeleted); +this.setAnimationRange(0, 0); +this.clearRepaintManager(-1); +this.am.clear(); +this.am.initializePointers(1); +this.setCurrentModelIndexClear(this.ms.mc > 1 ? -1 : 0, this.ms.mc > 1); +this.hoverAtomIndex = -1; +this.setFileLoadStatus(J.c.FIL.DELETED, null, null, null, null, null); +this.refreshMeasures(true); +if (bsD0 != null) bsDeleted.andNot(bsD0); +n = JU.BSUtil.cardinalityOf(bsDeleted); +this.sm.setStatusStructureModified(-1, modelIndex, -5, "OK", n, bsDeleted); +return n; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "deleteBonds", +function(bsDeleted){ +var modelIndex = this.ms.bo[bsDeleted.nextSetBit(0)].atom1.mi; +var n = bsDeleted.cardinality(); +if (n == 0) return; +this.sm.setStatusStructureModified(-1, modelIndex, 2, "delete bonds " + JU.Escape.eBond(bsDeleted), bsDeleted.cardinality(), bsDeleted); +this.ms.deleteBonds(bsDeleted, false); +this.sm.setStatusStructureModified(-1, modelIndex, -2, "OK", bsDeleted.cardinality(), bsDeleted); +}, "JU.BS"); +Clazz_defineMethod(c$, "deleteModelAtoms", +function(modelIndex, firstAtomIndex, nAtoms, bsModelAtoms){ +var n = bsModelAtoms.cardinality(); +if (n == 0) return; +this.sm.setStatusStructureModified(-1, modelIndex, 7, "delete atoms " + JU.Escape.eBS(bsModelAtoms), n, bsModelAtoms); +JU.BSUtil.deleteBits(this.tm.bsFrameOffsets, bsModelAtoms); +this.getDataManager().deleteModelAtoms(firstAtomIndex, nAtoms, bsModelAtoms); +this.sm.setStatusStructureModified(-1, modelIndex, -7, "OK", n, bsModelAtoms); +}, "~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "getQuaternionFrame", +function(){ +return this.g.quaternionFrame.charAt(this.g.quaternionFrame.length == 2 ? 1 : 0); +}); +Clazz_defineMethod(c$, "loadImageData", +function(image, nameOrError, echoName, sco){ +var sc = sco; +if (image == null && nameOrError != null) this.scriptEcho(nameOrError); +if (echoName == null) { +this.setBackgroundImage((image == null ? null : nameOrError), image); +} else if (echoName.startsWith("\1")) { +this.sm.showImage(echoName, image); +} else if (echoName.startsWith("\0")) { +if (image != null) { +this.setWindowDimensions( Clazz_newFloatArray(-1, [this.apiPlatform.getImageWidth(image), this.apiPlatform.getImageHeight(image)])); +}} else { +this.shm.loadShape(31); +this.setShapeProperty(31, "text", nameOrError); +if (image != null) this.setShapeProperty(31, "image", image); +}if (JV.Viewer.isJS && sc != null) { +sc.mustResumeEval = true; +this.eval.resumeEval(sc); +}return false; +}, "~O,~S,~S,~O"); +Clazz_defineMethod(c$, "cd", +function(dir){ +if (dir == null) { +dir = "."; +} else if (dir.length == 0) { +this.setStringProperty("defaultDirectory", ""); +dir = "."; +}dir = this.fm.getDefaultDirectory(dir + (dir.equals("=") ? "" : dir.endsWith("/") ? "X.spt" : "/X.spt")); +if (dir.length > 0) this.setStringProperty("defaultDirectory", dir); +var path = this.fm.getFilePath(dir + "/", true, false); +if (path.startsWith("file:/")) JV.FileManager.setLocalPath(this, dir, false); +return dir; +}, "~S"); +Clazz_defineMethod(c$, "setErrorMessage", +function(errMsg, errMsgUntranslated){ +this.errorMessageUntranslated = errMsgUntranslated; +if (errMsg != null) this.eval.stopScriptThreads(); +return (this.errorMessage = errMsg); +}, "~S,~S"); +Clazz_overrideMethod(c$, "getErrorMessage", +function(){ +return this.errorMessage; +}); +Clazz_overrideMethod(c$, "getErrorMessageUn", +function(){ +return this.errorMessageUntranslated == null ? this.errorMessage : this.errorMessageUntranslated; +}); +Clazz_defineMethod(c$, "setShapeErrorState", +function(shapeID, state){ +this.currentShapeID = shapeID; +this.currentShapeState = state; +}, "~N,~S"); +Clazz_defineMethod(c$, "getShapeErrorState", +function(){ +if (this.currentShapeID < 0) return ""; +this.shm.releaseShape(this.currentShapeID); +this.clearRepaintManager(this.currentShapeID); +return JV.JC.getShapeClassName(this.currentShapeID, false) + " " + this.currentShapeState; +}); +Clazz_defineMethod(c$, "handleError", +function(er, doClear){ +try { +if (doClear) this.zapMsg("" + er); +this.undoMoveAction(4165, -2); +if (JU.Logger.getLogLevel() == 0) JU.Logger.setLogLevel(4); +this.setCursor(0); +this.setBooleanPropertyTok("refreshing", 603979900, true); +this.fm.setPathForAllFiles(""); +JU.Logger.error("vwr handling error condition: " + er + " "); +this.notifyError("Error", "doClear=" + doClear + "; " + er, "" + er); +} catch (e1) { +try { +JU.Logger.error("Could not notify error " + er + ": due to " + e1); +} catch (er2) { +} +} +}, "Throwable,~B"); +Clazz_defineMethod(c$, "getFunctions", +function(isStatic){ +return (isStatic ? JV.Viewer.staticFunctions : this.localFunctions); +}, "~B"); +Clazz_defineMethod(c$, "removeFunction", +function(name){ +name = name.toLowerCase(); +var $function = this.getFunction(name); +if ($function == null) return; +JV.Viewer.staticFunctions.remove(name); +this.localFunctions.remove(name); +}, "~S"); +Clazz_defineMethod(c$, "getFunction", +function(name){ +if (name == null) return null; +var $function = (JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).get(name); +return ($function == null || $function.geTokens() == null ? null : $function); +}, "~S"); +c$.isStaticFunction = Clazz_defineMethod(c$, "isStaticFunction", +function(name){ +return name.startsWith("static_"); +}, "~S"); +Clazz_defineMethod(c$, "isFunction", +function(name){ +return (JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).containsKey(name); +}, "~S"); +Clazz_defineMethod(c$, "clearFunctions", +function(){ +JV.Viewer.staticFunctions.clear(); +this.localFunctions.clear(); +}); +Clazz_defineMethod(c$, "addFunction", +function($function){ +var name = $function.getName(); +(JV.Viewer.isStaticFunction(name) ? JV.Viewer.staticFunctions : this.localFunctions).put(name, $function); +}, "J.api.JmolScriptFunction"); +Clazz_defineMethod(c$, "getFunctionCalls", +function(selectedFunction){ +return this.getStateCreator().getFunctionCalls(selectedFunction); +}, "~S"); +Clazz_defineMethod(c$, "checkPrivateKey", +function(privateKey){ +return privateKey == this.privateKey; +}, "~N"); +Clazz_defineMethod(c$, "bindAction", +function(desc, name){ +if (this.haveDisplay) this.acm.bind(desc, name); +}, "~S,~S"); +Clazz_defineMethod(c$, "unBindAction", +function(desc, name){ +if (this.haveDisplay) this.acm.unbindAction(desc, name); +}, "~S,~S"); +Clazz_defineMethod(c$, "calculateStruts", +function(bs1, bs2){ +return this.ms.calculateStruts(bs1 == null ? this.bsA() : bs1, bs2 == null ? this.bsA() : bs2); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getPreserveState", +function(){ +return (this.g.preserveState && this.scm != null); +}); +Clazz_defineMethod(c$, "isKiosk", +function(){ +return this.$isKiosk; +}); +Clazz_defineMethod(c$, "hasFocus", +function(){ +return (this.haveDisplay && (this.$isKiosk || this.apiPlatform.hasFocus(this.display))); +}); +Clazz_defineMethod(c$, "setFocus", +function(){ +if (this.haveDisplay && !this.apiPlatform.hasFocus(this.display)) this.apiPlatform.requestFocusInWindow(this.display); +}); +Clazz_defineMethod(c$, "stopMinimization", +function(){ +if (this.minimizer != null) { +this.minimizer.setProperty("stop", null); +}}); +Clazz_defineMethod(c$, "clearMinimization", +function(){ +if (this.minimizer != null) this.minimizer.setProperty("clear", null); +}); +Clazz_defineMethod(c$, "getMinimizationInfo", +function(){ +return (this.minimizer == null ? "" : this.minimizer.getProperty("log", 0)); +}); +Clazz_defineMethod(c$, "checkMinimization", +function(){ +this.refreshMeasures(true); +if (!this.g.monitorEnergy) return; +try { +this.minimize(null, 0, 0, this.getFrameAtoms(), null, null, 0, 1); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.echoMessage(this.getP("_minimizationForceField") + " Energy = " + this.getP("_minimizationEnergy")); +}); +Clazz_defineMethod(c$, "minimize", +function(eval, steps, crit, bsSelected, bsFixed, bsInFrame, rangeFixed, flags){ +var isSelectionExplicit = (bsSelected != null); +if (isSelectionExplicit) { +flags |= 2; +}var addHydrogen = (flags & 16) != 0; +var isModelkitCmd = (flags & 256) != 0; +var isSilent = (flags & 1) != 0; +var isQuick = (flags & 8) != 0; +var groupSelected = (flags & 64) != 0; +var selectedOnly = groupSelected || (flags & 32) != 0; +var isFixExplicit = (bsFixed != null); +if (this.isModelKitOpen()) this.setModelkitPropertySafely("constraint", null); +if (bsInFrame == null) bsInFrame = this.getFrameAtoms(); +if (!isQuick && !addHydrogen && isSelectionExplicit && !isFixExplicit && !selectedOnly) { +var bs = JU.BSUtil.copy(bsInFrame); +bsFixed = JU.BSUtil.copy(bs); +bsFixed.andNot(bsSelected); +bsSelected = bs; +isFixExplicit = true; +}if (!isSelectionExplicit) { +bsSelected = this.getThisModelAtoms(); +if (selectedOnly) bsSelected.and(this.bsA()); +} else if (!isQuick) { +bsSelected.and(bsInFrame); +}if (bsSelected.isEmpty()) return; +var bsBasis = (isModelkitCmd || !selectedOnly ? JU.BSUtil.copy(this.ms.am[this.ms.at[bsSelected.nextSetBit(0)].mi].bsAsymmetricUnit) : null); +if (isModelkitCmd && bsBasis == null) { +this.scriptStatusMsg("MODELKIT MINIMIZE is only applicable to crystal structures.", "minimization: not a crystal structure"); +return; +}try { +if (isModelkitCmd) { +this.getModelkit(false).cmdMinimize(eval, bsBasis, steps, crit, rangeFixed, flags); +return; +}var ff = (bsBasis == null ? this.g.forceField : "UFF"); +this.getModelForAtomIndex(bsSelected.nextSetBit(0)).auxiliaryInfo.put("dimension", "3D"); +if (isQuick) { +bsInFrame = bsSelected; +}var bsMotionFixed = JU.BSUtil.copy(isFixExplicit ? bsFixed : this.slm.getMotionFixedAtoms()); +var haveFixed = !bsMotionFixed.isEmpty(); +if (haveFixed) bsSelected.andNot(bsMotionFixed); +var bsNearby = (bsBasis != null && isModelkitCmd ? this.getThisModelAtoms() : selectedOnly || !haveFixed ? new JU.BS() : this.ms.getAtomsWithinRadius((rangeFixed <= 0 ? 5.0 : rangeFixed), bsSelected, true, null, null)); +bsNearby.andNot(bsSelected); +if (haveFixed) { +bsMotionFixed.and(bsNearby); +} else { +bsMotionFixed = bsNearby; +}bsMotionFixed.and(bsInFrame); +flags |= ((haveFixed ? 4 : 0) | (this.getBooleanProperty("minimizationSilent") ? 1 : 0)); +if (isQuick && this.getBoolean(603979962)) return; +if (isQuick) { +{ +try { +if (!isSilent) JU.Logger.info("Minimizing " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).minimize(steps, crit, bsSelected, bsMotionFixed, null, flags, "UFF"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Minimization error: " + e.toString()); +e.printStackTrace(); +} else { +throw e; +} +} +}}if (addHydrogen) { +var bsH = this.addHydrogens(bsSelected, flags); +if (!isQuick) bsSelected.or(bsH); +}var n = bsSelected.cardinality(); +if (ff.equals("MMFF") && n > this.g.minimizationMaxAtoms) { +this.scriptStatusMsg("Too many atoms for minimization (" + n + ">" + this.g.minimizationMaxAtoms + "); use 'set minimizationMaxAtoms' to increase this limit", "minimization: too many atoms"); +return; +}if (groupSelected) { +bsMotionFixed.or(this.ms.getConnectingAtoms(bsSelected, bsMotionFixed)); +bsSelected.andNot(bsMotionFixed); +}if (!isSilent) JU.Logger.info("Minimizing " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).minimize(steps, crit, bsSelected, bsMotionFixed, bsBasis, flags, (isQuick ? "MMFF" : ff)); +if (isQuick) { +this.g.forceField = "MMFF"; +this.setHydrogens(bsSelected); +var ffUsed = this.getMinimizer(false).getForceFieldUsed(); +if (ffUsed != null) this.showString("Minimized by Jmol using " + ffUsed, false); +}} catch (e$$) { +if (Clazz_exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +if (eval != null) eval.loadFileResourceAsync(e.getFileName()); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +JU.Logger.error("Minimization error: " + e.toString()); +e.printStackTrace(); +} +} else { +throw e$$; +} +} +}, "J.api.JmolScriptEvaluator,~N,~N,JU.BS,JU.BS,JU.BS,~N,~N"); +Clazz_defineMethod(c$, "setHydrogens", +function(bsAtoms){ +var nTotal = Clazz_newIntArray (1, 0); +var hatoms = this.ms.calculateHydrogens(bsAtoms, nTotal, null, 2056); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var pts = hatoms[i]; +if (pts == null || pts.length == 0) continue; +var a = this.ms.at[i]; +var b = a.bonds; +for (var j = 0, pt = 0, n = a.getBondCount(); j < n; j++) { +var h = b[j].getOtherAtom(a); +if (h.getAtomicAndIsotopeNumber() == 1) { +var p = pts[pt++]; +if (p != null) this.ms.setAtomCoord(h.i, p.x, p.y, p.z); +}} +} +this.ms.resetMolecules(); +}, "JU.BS"); +Clazz_defineMethod(c$, "setMotionFixedAtoms", +function(bs){ +this.slm.setMotionFixedAtoms(bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "setMotionFixed", +function(bs){ +this.slm.setMotionFixedAtoms(bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "getMotionFixedAtoms", +function(sym, bsFixed){ +if (this.am.cmi < 0) return new JU.BS(); +if (bsFixed == null) bsFixed = new JU.BS(); +bsFixed.or(this.slm.getMotionFixedAtoms()); +bsFixed.and(this.getThisModelAtoms()); +if (sym == null) sym = this.getOperativeSymmetry(); +if (sym != null && this.getModelkit(false) != null) this.modelkit.addLockedAtoms(sym, bsFixed); +return bsFixed; +}, "J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "getAtomicPropertyState", +function(commands, type, bs, name, data){ +this.getStateCreator().getAtomicPropertyStateBuffer(commands, type, bs, name, data); +}, "JU.SB,~N,JU.BS,~S,~A"); +Clazz_defineMethod(c$, "getCenterAndPoints", +function(atomSets, addCenter){ +return this.ms.getCenterAndPoints(atomSets, addCenter); +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "writeFileData", +function(fileName, type, modelIndex, parameters){ +return this.getOutputManager().writeFileData(fileName, type, modelIndex, parameters); +}, "~S,~S,~N,~A"); +Clazz_defineMethod(c$, "getPdbData", +function(modelIndex, type, bsAtoms, parameters, oc, getStructure){ +return this.getPropertyManager().getPdbData(modelIndex, type, bsAtoms == null ? this.bsA() : bsAtoms, parameters, oc, getStructure); +}, "~N,~S,JU.BS,~A,JU.OC,~B"); +Clazz_defineMethod(c$, "getGroupsWithin", +function(nResidues, bs){ +return this.ms.getGroupsWithin(nResidues, bs); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setShapeSize", +function(shapeID, madOrMad10, bsSelected){ +if (bsSelected == null) bsSelected = this.bsA(); +this.shm.setShapeSizeBs(shapeID, madOrMad10, null, bsSelected); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "setShapeProperty", +function(shapeID, propertyName, value){ +if (shapeID >= 0) this.shm.setShapePropertyBs(shapeID, propertyName, value, null); +}, "~N,~S,~O"); +Clazz_defineMethod(c$, "getShapeProperty", +function(shapeType, propertyName){ +return this.shm.getShapePropertyIndex(shapeType, propertyName, -2147483648); +}, "~N,~S"); +Clazz_defineMethod(c$, "getShapePropertyAsInt", +function(shapeID, propertyName){ +var value = this.getShapeProperty(shapeID, propertyName); +return value == null || !(Clazz_instanceOf(value, Integer)) ? -2147483648 : (value).intValue(); +}, "~N,~S"); +Clazz_defineMethod(c$, "setModelVisibility", +function(){ +if (this.shm != null) this.shm.setModelVisibility(); +}); +Clazz_defineMethod(c$, "resetShapes", +function(andCreateNew){ +this.shm.resetShapes(!andCreateNew); +if (andCreateNew) { +this.shm.loadDefaultShapes(this.ms); +this.clearRepaintManager(-1); +}}, "~B"); +Clazz_defineMethod(c$, "setParallel", +function(TF){ +return (this.$isParallel = this.g.multiProcessor && TF); +}, "~B"); +Clazz_defineMethod(c$, "isParallel", +function(){ +return this.g.multiProcessor && this.$isParallel; +}); +Clazz_defineMethod(c$, "undoMoveAction", +function(action, n){ +return (this.g.preserveState ? this.getStateCreator().undoMoveAction(action, n) : 0); +}, "~N,~N"); +Clazz_defineMethod(c$, "undoMoveActionClear", +function(taintedAtom, type, clearRedo){ +if (this.g.preserveState && this.getOperativeSymmetry() == null) this.getStateCreator().undoMoveActionClear(taintedAtom, type, clearRedo); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "moveAtomWithHydrogens", +function(atomIndex, deltaX, deltaY, deltaZ, ptNew, bsAtoms){ +this.stopMinimization(); +var modelkitNoAddH = (ptNew != null && deltaX == 0); +var atom = this.ms.at[atomIndex]; +if (bsAtoms == null) { +bsAtoms = JU.BSUtil.newAndSetBit(atomIndex); +var addH = (this.getOperativeSymmetry() == null || this.isModelKitOpen() && !this.modelkit.hasConstraint(atomIndex, true, false)); +if (addH && !modelkitNoAddH) this.ms.addConnectedHAtoms(atom, bsAtoms); +}return this.moveSelected(deltaX, deltaY, deltaZ, -2147483648, -2147483648, bsAtoms, atom, ptNew, true, true, 0); +}, "~N,~N,~N,~N,JU.P3,JU.BS"); +Clazz_defineMethod(c$, "isModelPDB", +function(i){ +return this.ms.am[i].isBioModel; +}, "~N"); +Clazz_overrideMethod(c$, "deleteMeasurement", +function(i){ +this.setShapeProperty(6, "delete", Integer.$valueOf(i)); +}, "~N"); +Clazz_overrideMethod(c$, "getSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 16 | (bs == null && JU.Logger.debugging ? 131072 : 0), null); +}, "JU.BS"); +Clazz_overrideMethod(c$, "getOpenSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 5 | (bs == null && JU.Logger.debugging ? 131072 : 0), "/open///"); +}, "JU.BS"); +Clazz_defineMethod(c$, "getBioSmiles", +function(bs){ +return this.getSmilesOpt(bs, -1, -1, 3145728 | 5242880 | 17825792 | (JU.Logger.debugging ? 131072 : 0), null); +}, "JU.BS"); +Clazz_defineMethod(c$, "getSmilesOpt", +function(bsSelected, index1, index2, flags, options){ +var bioComment = ((flags & 17825792) == 17825792 ? JV.Viewer.getJmolVersion() + " " + this.getModelName(this.am.cmi) : options); +var atoms = this.ms.at; +if (bsSelected == null) { +if (index1 < 0 || index2 < 0) { +bsSelected = this.bsA(); +} else { +if ((flags & 1048576) == 1048576) { +if (index1 > index2) { +var i = index1; +index1 = index2; +index2 = i; +}index1 = atoms[index1].group.firstAtomIndex; +index2 = atoms[index2].group.lastAtomIndex; +}bsSelected = new JU.BS(); +bsSelected.setBits(index1, index2 + 1); +}}flags |= (this.isModel2D(bsSelected) ? 134217728 : 0); +var sm = this.getSmilesMatcher(); +if (JV.JC.isSmilesCanonical(options)) { +var smiles = sm.getSmiles(atoms, this.ms.ac, bsSelected, "/noAromatic/", flags); +return this.getChemicalInfo(smiles, "smiles", null).trim(); +}return sm.getSmiles(atoms, this.ms.ac, bsSelected, bioComment, flags); +}, "JU.BS,~N,~N,~N,~S"); +Clazz_defineMethod(c$, "isModel2D", +function(bs){ +var m = this.getModelForAtomIndex(bs.nextSetBit(0)); +return (m != null && "2D".equals(m.auxiliaryInfo.get("dimension"))); +}, "JU.BS"); +Clazz_defineMethod(c$, "alert", +function(msg){ +this.prompt(msg, null, null, true); +}, "~S"); +Clazz_defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +return (this.$isKiosk ? "null" : this.apiPlatform.prompt(label, data, list, asButtons)); +}, "~S,~S,~A,~B"); +Clazz_defineMethod(c$, "dialogAsk", +function(type, fileName, params){ +{ +return prompt(type, fileName); +}}, "~S,~S,java.util.Map"); +Clazz_defineMethod(c$, "initializeExporter", +function(params){ +var isJS = params.get("type").equals("JS"); +if (isJS) { +if (this.jsExporter3D != null) { +this.jsExporter3D.initializeOutput(this, this.privateKey, params); +return this.jsExporter3D; +}} else { +var fileName = params.get("fileName"); +var fullPath = params.get("fullPath"); +var out = this.getOutputChannel(fileName, fullPath); +if (out == null) return null; +params.put("outputChannel", out); +}var export3D = J.api.Interface.getOption("export.Export3D", this, "export"); +if (export3D == null) return null; +var exporter = export3D.initializeExporter(this, this.privateKey, this.gdata, params); +if (isJS && exporter != null) this.jsExporter3D = export3D; +return (exporter == null ? null : export3D); +}, "java.util.Map"); +Clazz_defineMethod(c$, "getMouseEnabled", +function(){ +return this.refreshing && !this.creatingImage; +}); +Clazz_overrideMethod(c$, "calcAtomsMinMax", +function(bs, boxInfo){ +this.ms.calcAtomsMinMax(bs, boxInfo); +}, "JU.BS,JU.BoxInfo"); +Clazz_defineMethod(c$, "getObjectMap", +function(map, c){ +switch ((c).charCodeAt(0)) { +case 123: +if (this.getScriptManager() != null) { +var m = map; +if (this.definedAtomSets != null) m.putAll(this.definedAtomSets); +JS.T.getTokensType(m, 2097152); +}return; +case 36: +case 48: +this.shm.getObjectMap(map, c == '$'); +return; +} +}, "java.util.Map,~S"); +Clazz_defineMethod(c$, "setPicked", +function(atomIndex, andReset){ +var pickedSet = null; +var pickedList = null; +if (atomIndex >= 0) { +if (andReset) this.setPicked(-1, false); +this.g.setI("_atompicked", atomIndex); +pickedSet = this.g.getParam("picked", true); +pickedList = this.g.getParam("pickedList", true); +}if (pickedSet == null || pickedSet.tok != 10) { +pickedSet = JS.SV.newV(10, new JU.BS()); +pickedList = JS.SV.getVariableList( new JU.Lst()); +this.g.setUserVariable("picked", pickedSet); +this.g.setUserVariable("pickedList", pickedList); +}if (atomIndex < 0) return; +JS.SV.getBitSet(pickedSet, false).set(atomIndex); +var p = pickedList.pushPop(null, null); +if (p.tok == 10) pickedList.pushPop(null, p); +if (p.tok != 10 || !(p.value).get(atomIndex)) pickedList.pushPop(null, JS.SV.newV(10, JU.BSUtil.newAndSetBit(atomIndex))); +}, "~N,~B"); +Clazz_overrideMethod(c$, "runScript", +function(script){ +return "" + this.evaluateExpression( Clazz_newArray(-1, [ Clazz_newArray(-1, [JS.T.tokenScript, JS.T.tokenLeftParen, JS.SV.newS(script), JS.T.tokenRightParen])])); +}, "~S"); +Clazz_overrideMethod(c$, "runScriptCautiously", +function(script){ +var outputBuffer = new JU.SB(); +try { +if (this.getScriptManager() == null) return null; +this.eval.runScriptBuffer(script, outputBuffer, false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return this.eval.getErrorMessage(); +} else { +throw e; +} +} +return outputBuffer.toString(); +}, "~S"); +Clazz_defineMethod(c$, "setFrameDelayMs", +function(millis){ +this.ms.setFrameDelayMs(millis, this.getVisibleFramesBitSet()); +}, "~N"); +Clazz_defineMethod(c$, "getBaseModelBitSet", +function(){ +return this.ms.getModelAtomBitSetIncludingDeleted(this.getJDXBaseModelIndex(this.am.cmi), true); +}); +Clazz_defineMethod(c$, "clearTimeouts", +function(){ +if (this.timeouts != null) J.thread.TimeoutThread.clear(this.timeouts); +}); +Clazz_defineMethod(c$, "setTimeout", +function(name, mSec, script){ +if (!this.haveDisplay || this.headless || this.autoExit) return; +if (name == null) { +this.clearTimeouts(); +return; +}if (this.timeouts == null) { +this.timeouts = new java.util.Hashtable(); +}J.thread.TimeoutThread.setTimeout(this, this.timeouts, name, mSec, script); +}, "~S,~N,~S"); +Clazz_defineMethod(c$, "triggerTimeout", +function(name){ +if (!this.haveDisplay || this.timeouts == null) return; +J.thread.TimeoutThread.trigger(this.timeouts, name); +}, "~S"); +Clazz_defineMethod(c$, "clearTimeout", +function(name){ +this.setTimeout(name, 0, null); +}, "~S"); +Clazz_defineMethod(c$, "showTimeout", +function(name){ +return (this.haveDisplay ? J.thread.TimeoutThread.showTimeout(this.timeouts, name) : ""); +}, "~S"); +Clazz_defineMethod(c$, "getOrCalcPartialCharges", +function(bsSelected, bsIgnore){ +if (bsSelected == null) bsSelected = this.bsA(); +bsSelected = JU.BSUtil.copy(bsSelected); +JU.BSUtil.andNot(bsSelected, bsIgnore); +JU.BSUtil.andNot(bsSelected, this.ms.bsPartialCharges); +if (!bsSelected.isEmpty()) this.calculatePartialCharges(bsSelected); +return this.ms.getPartialCharges(); +}, "JU.BS,JU.BS"); +Clazz_defineMethod(c$, "calculatePartialCharges", +function(bsSelected){ +if (bsSelected == null || bsSelected.isEmpty()) bsSelected = this.getFrameAtoms(); +if (bsSelected.isEmpty()) return; +JU.Logger.info("Calculating MMFF94 partial charges for " + bsSelected.cardinality() + " atoms"); +this.getMinimizer(true).calculatePartialCharges(this.ms, bsSelected, null); +}, "JU.BS"); +Clazz_defineMethod(c$, "setCurrentModelID", +function(id){ +var modelIndex = this.am.cmi; +if (modelIndex >= 0) this.ms.setInfo(modelIndex, "modelID", id); +}, "~S"); +Clazz_defineMethod(c$, "cacheClear", +function(){ +this.fm.cacheClear(); +this.ligandModelSet = null; +this.ligandModels = null; +this.ms.clearCache(); +this.cm.ce.clearCache(); +}); +Clazz_defineMethod(c$, "cachePut", +function(key, data){ +JU.Logger.info("Viewer cachePut " + key); +this.fm.cachePut(key, data); +}, "~S,~O"); +Clazz_defineMethod(c$, "cacheFileByName", +function(fileName, isAdd){ +if (fileName == null) { +this.cacheClear(); +return -1; +}return this.fm.cacheFileByNameAdd(fileName, isAdd); +}, "~S,~B"); +Clazz_defineMethod(c$, "clearThreads", +function(){ +if (this.eval != null) this.eval.stopScriptThreads(); +this.stopMinimization(); +this.tm.clearThreads(); +this.setAnimationOn(false); +}); +Clazz_defineMethod(c$, "getEvalContextAndHoldQueue", +function(eval){ +if (eval == null || !(JV.Viewer.isJS || this.testAsync)) return null; +eval.pushContextDown("getEvalContextAndHoldQueue"); +var sc = eval.getThisContext(); +sc.setMustResume(); +sc.isJSThread = true; +this.queueOnHold = true; +return sc; +}, "J.api.JmolScriptEvaluator"); +Clazz_defineMethod(c$, "getDefaultPropertyParam", +function(propertyID){ +return this.getPropertyManager().getDefaultPropertyParam(propertyID); +}, "~N"); +Clazz_defineMethod(c$, "getPropertyNumber", +function(name){ +return this.getPropertyManager().getPropertyNumber(name); +}, "~S"); +Clazz_defineMethod(c$, "checkPropertyParameter", +function(name){ +return this.getPropertyManager().checkPropertyParameter(name); +}, "~S"); +Clazz_defineMethod(c$, "extractProperty", +function(property, args, pt){ +return this.getPropertyManager().extractProperty(property, args, pt, null, false); +}, "~O,~O,~N"); +Clazz_defineMethod(c$, "addHydrogens", +function(bsAtoms, flags){ +var isSilent = ((flags & 1) == 1); +var isQuick = ((flags & 8) == 8); +var doAll = (bsAtoms == null); +if (bsAtoms == null) bsAtoms = this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().length() - 1); +var bsB = new JU.BS(); +if (bsAtoms.isEmpty()) return bsB; +var vConnections = new JU.Lst(); +var pts = this.getAdditionalHydrogens(bsAtoms, vConnections, flags | (doAll ? 256 : 0)); +var wasAppendNew = false; +wasAppendNew = this.g.appendNew; +if (pts.length > 0) { +this.clearModelDependentObjects(); +try { +bsB = (isQuick && vConnections.get(0).mi == this.ms.mc - 1 ? this.ms.addHydrogens(vConnections, pts) : this.addHydrogensInline(bsAtoms, vConnections, pts, null)); +this.setModelkitPropertySafely("updateatomkeys", bsAtoms); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +if (wasAppendNew) this.g.appendNew = true; +}if (!isSilent) this.scriptStatus(J.i18n.GT.i(J.i18n.GT.$("{0} hydrogens added"), pts.length)); +return bsB; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "addHydrogensInline", +function(bsAtoms, vConnections, pts, htParams){ +if (this.getScriptManager() == null) return null; +return this.scm.addHydrogensInline(bsAtoms, vConnections, pts, htParams); +}, "JU.BS,JU.Lst,~A,java.util.Map"); +Clazz_overrideMethod(c$, "evalFunctionFloat", +function(func, params, values){ +return (this.getScriptManager() == null ? 0 : this.eval.evalFunctionFloat(func, params, values)); +}, "~O,~O,~A"); +Clazz_defineMethod(c$, "evalParallel", +function(context, shapeManager){ +this.displayLoadErrors = false; +var isOK = this.getScriptManager() != null && this.eval.evalParallel(context, (shapeManager == null ? this.shm : shapeManager)); +this.displayLoadErrors = true; +return isOK; +}, "JS.ScriptContext,JV.ShapeManager"); +Clazz_overrideMethod(c$, "evaluateExpression", +function(stringOrTokens){ +return (this.getScriptManager() == null ? null : this.eval.evaluateExpression(stringOrTokens, false, false)); +}, "~O"); +Clazz_overrideMethod(c$, "evaluateExpressionAsVariable", +function(stringOrTokens){ +return (this.getScriptManager() == null ? null : this.eval.evaluateExpression(stringOrTokens, true, false)); +}, "~O"); +Clazz_defineMethod(c$, "getAtomBitSet", +function(atomExpression){ +if (Clazz_instanceOf(atomExpression,"JU.BS")) return this.slm.excludeAtoms(atomExpression, false); +this.getScriptManager(); +return this.getAtomBitSetEval(this.eval, atomExpression); +}, "~O"); +Clazz_defineMethod(c$, "getScriptContext", +function(why){ +return (this.getScriptManager() == null ? null : this.eval.getScriptContext(why)); +}, "~S"); +Clazz_defineMethod(c$, "getAtomDefs", +function(names){ +var keys = new JU.Lst(); +for (var e, $e = names.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (Clazz_instanceOf(e.getValue(),"JU.BS")) keys.addLast("{" + e.getKey() + "} <" + (e.getValue()).cardinality() + " atoms>\n"); + +var n = keys.size(); +var k = new Array(n); +keys.toArray(k); +java.util.Arrays.sort(k); +var sb = new JU.SB(); +for (var i = 0; i < n; i++) sb.append(k[i]); + +return sb.append("\n").toString(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setCGO", +function(info){ +this.shm.loadShape(23); +this.shm.setShapePropertyBs(23, "setCGO", info, null); +}, "JU.Lst"); +Clazz_defineMethod(c$, "setModelSet", +function(modelSet){ +this.ms = this.mm.modelSet = modelSet; +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "setObjectProp", +function(id, tokCommand){ +this.getScriptManager(); +if (id == null) id = "*"; +return (this.eval == null ? null : this.eval.setObjectPropSafe(id, tokCommand)); +}, "~S,~N"); +Clazz_defineMethod(c$, "setDihedrals", +function(dihedralList, bsBranches, rate){ +if (bsBranches == null) bsBranches = this.ms.getBsBranches(dihedralList); +this.ms.setDihedrals(dihedralList, bsBranches, rate); +}, "~A,~A,~N"); +Clazz_defineMethod(c$, "getChainID", +function(id, isAssign){ +var iboxed = this.chainMap.get(id); +if (iboxed != null) return iboxed.intValue(); +var i = (id.charAt(0)).charCodeAt(0); +if (id.length > 1) { +i = 300 + this.chainList.size(); +} else if ((isAssign || this.chainCaseSpecified) && 97 <= i && i <= 122) { +i += 159; +}if (i >= 256) { +iboxed = this.chainMap.get(id); +if (iboxed != null) return iboxed.intValue(); +this.chainCaseSpecified = new Boolean (this.chainCaseSpecified | isAssign).valueOf(); +this.chainList.addLast(id); +}iboxed = Integer.$valueOf(i); +this.chainMap.put(iboxed, id); +this.chainMap.put(id, iboxed); +return i; +}, "~S,~B"); +Clazz_defineMethod(c$, "getChainIDStr", +function(id){ +return this.chainMap.get(Integer.$valueOf(id)); +}, "~N"); +Clazz_defineMethod(c$, "getScriptQueueInfo", +function(){ +return (this.scm != null && this.scm.isQueueProcessing() ? Boolean.TRUE : Boolean.FALSE); +}); +Clazz_defineMethod(c$, "getNMRCalculation", +function(){ +return (this.nmrCalculation == null ? (this.nmrCalculation = J.api.Interface.getOption("quantum.NMRCalculation", this, "script")).setViewer(this) : this.nmrCalculation); +}); +Clazz_defineMethod(c$, "getDistanceUnits", +function(s){ +if (s == null) s = this.getDefaultMeasurementLabel(2); +var pt = s.indexOf("//"); +return (pt < 0 ? this.g.measureDistanceUnits : s.substring(pt + 2)); +}, "~S"); +Clazz_defineMethod(c$, "calculateFormalCharges", +function(bs){ +return this.ms.fixFormalCharges(bs == null ? this.bsA() : bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "setModulation", +function(bs, isOn, t1, isQ){ +if (isQ) this.g.setO("_modt", JU.Escape.eP(t1)); +this.ms.setModulation(bs == null ? this.getAllAtoms() : bs, isOn, t1, isQ); +this.refreshMeasures(true); +}, "JU.BS,~B,JU.P3,~B"); +Clazz_defineMethod(c$, "checkInMotion", +function(state){ +switch (state) { +case 0: +this.setTimeout("_SET_IN_MOTION_", 0, null); +break; +case 1: +if (!this.inMotion) this.setTimeout("_SET_IN_MOTION_", this.g.hoverDelayMs * 2, "!setInMotion"); +break; +case 2: +this.setInMotion(true); +this.refresh(3, "timeoutThread set in motion"); +break; +} +}, "~N"); +Clazz_defineMethod(c$, "checkMotionRendering", +function(tok){ +if (!this.getInMotion(true) && !this.tm.spinOn && !this.tm.vibrationOn && !this.am.animationOn) return true; +if (this.g.wireframeRotation) return false; +var n = 0; +switch (tok) { +case 1677721602: +case 1153433601: +n = 2; +break; +case 1112150020: +n = 3; +break; +case 1112150021: +n = 4; +break; +case 1112152066: +n = 5; +break; +case 1073742018: +n = 6; +break; +case 603979967: +n = 7; +break; +case 603979786: +n = 8; +break; +} +return this.g.platformSpeed >= n; +}, "~N"); +Clazz_defineMethod(c$, "openExportChannel", +function(privateKey, fileName, asWriter){ +return this.getOutputManager().openOutputChannel(privateKey, fileName, asWriter, false); +}, "~N,~S,~B"); +Clazz_overrideMethod(c$, "log", +function(data){ +if (data != null) this.getOutputManager().logToFile(data); +}, "~S"); +Clazz_defineMethod(c$, "getLogFileName", +function(){ +return (this.logFileName == null ? "" : this.logFileName); +}); +Clazz_defineMethod(c$, "getCommands", +function(htDefine, htMore, select){ +return this.getStateCreator().getCommands(htDefine, htMore, select); +}, "java.util.Map,java.util.Map,~S"); +Clazz_defineMethod(c$, "allowCapture", +function(){ +return !this.isApplet || this.isSignedApplet; +}); +Clazz_defineMethod(c$, "compileExpr", +function(expr){ +var o = (this.getScriptManager() == null ? null : this.eval.evaluateExpression(expr, false, true)); +return (Clazz_instanceOf(o,Array) ? o : Clazz_newArray(-1, [JS.T.o(4, expr)])); +}, "~S"); +Clazz_defineMethod(c$, "checkSelect", +function(h, value){ +return this.getScriptManager() != null && this.eval.checkSelect(h, value); +}, "java.util.Map,~A"); +Clazz_defineMethod(c$, "getAnnotationInfo", +function(d, match, type){ +return this.getAnnotationParser(type == 1111490587).getAnnotationInfo(this, d, match, type, this.am.cmi); +}, "JS.SV,~S,~N"); +Clazz_defineMethod(c$, "getAtomValidation", +function(type, atom){ +return this.getAnnotationParser(false).getAtomValidation(this, type, atom); +}, "~S,JM.Atom"); +Clazz_defineMethod(c$, "dragMinimizeAtom", +function(iAtom){ +this.stopMinimization(); +var flags = 0; +var sym = this.getOperativeSymmetry(); +if (sym != null) { +flags = 256; +}var bs = (flags != 0 ? null : (this.getMotionFixedAtoms(sym, null).isEmpty() ? this.ms.getAtoms((this.ms.isAtomPDB(iAtom) ? 1086324742 : 1094713360), JU.BSUtil.newAndSetBit(iAtom)) : JU.BSUtil.setAll(this.ms.ac))); +try { +this.minimize(this.eval, 2147483647, 0, bs, null, null, 0, flags); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (!this.async) return; +var me = this; +var r = ((Clazz_isClassDefined("JV.Viewer$1") ? 0 : JV.Viewer.$Viewer$1$ ()), Clazz_innerTypeInstance(JV.Viewer$1, this, Clazz_cloneFinals("me", me, "iAtom", iAtom))); +{ +setTimeout(function(){r.run()}, 100); +}} else { +throw e; +} +} +}, "~N"); +Clazz_defineMethod(c$, "getJBR", +function(){ +return (this.jbr == null ? this.jbr = (J.api.Interface.getInterface("JM.BioResolver", this, "file")).setViewer(this) : this.jbr); +}); +Clazz_defineMethod(c$, "checkMenuUpdate", +function(){ +if (this.jmolpopup != null) this.jmolpopup.jpiUpdateComputedMenus(); +}); +Clazz_defineMethod(c$, "getChimeMessenger", +function(){ +return (this.jcm == null ? this.jcm = (J.api.Interface.getInterface("JV.ChimeMessenger", this, "script")).set(this) : this.jcm); +}); +Clazz_defineMethod(c$, "getModelSetAuxiliaryInfoForAtoms", +function(atomExpression){ +return this.ms.getModelSetAuxiliaryInfo(this.ms.getModelBS(this.getAtomBitSet(atomExpression), false)); +}, "~O"); +Clazz_defineMethod(c$, "getJSJSONParser", +function(){ +return (this.jsonParser == null ? this.jsonParser = J.api.Interface.getInterface("JU.JSJSONParser", this, "script") : this.jsonParser); +}); +Clazz_defineMethod(c$, "parseJSON", +function(str){ +return (str == null ? null : (str = str.trim()).startsWith("{") ? this.parseJSONMap(str) : this.parseJSONArray(str)); +}, "~S"); +Clazz_defineMethod(c$, "parseJSONMap", +function(jsonMap){ +return this.getJSJSONParser().parseMap(jsonMap, true); +}, "~S"); +Clazz_defineMethod(c$, "parseJSONArray", +function(jsonArray){ +return this.getJSJSONParser().parse(jsonArray, true); +}, "~S"); +Clazz_defineMethod(c$, "getSymTemp", +function(){ +return J.api.Interface.getSymmetry(this, "ms"); +}); +Clazz_defineMethod(c$, "getSymStatic", +function(){ +return (JV.Viewer.symStatic == null ? (JV.Viewer.symStatic = J.api.Interface.getSymmetry(this, "ms")) : JV.Viewer.symStatic); +}); +Clazz_defineMethod(c$, "setWindowDimensions", +function(dims){ +this.resizeInnerPanel(Clazz_floatToInt(dims[0]), Clazz_floatToInt(dims[1])); +}, "~A"); +Clazz_defineMethod(c$, "getTriangulator", +function(){ +return (this.triangulator == null ? (this.triangulator = J.api.Interface.getUtil("Triangulator", this, "script")) : this.triangulator); +}); +Clazz_defineMethod(c$, "getCurrentModelAuxInfo", +function(){ +return (this.am.cmi >= 0 ? this.ms.getModelAuxiliaryInfo(this.am.cmi) : null); +}); +Clazz_defineMethod(c$, "startNBO", +function(options){ +var htParams = new java.util.Hashtable(); +htParams.put("service", "nbo"); +htParams.put("action", "showPanel"); +htParams.put("options", options); +this.sm.processService(htParams); +}, "~S"); +Clazz_defineMethod(c$, "startPlugin", +function(plugin){ +if ("nbo".equalsIgnoreCase(plugin)) this.startNBO("all"); +}, "~S"); +Clazz_defineMethod(c$, "connectNBO", +function(type){ +if (this.am.cmi < 0) return; +this.getNBOParser().connectNBO(this.am.cmi, type); +}, "~S"); +Clazz_defineMethod(c$, "getNBOParser", +function(){ +return (this.nboParser == null ? this.nboParser = (J.api.Interface.getInterface("J.adapter.readers.quantum.NBOParser", this, "script")).set(this) : this.nboParser); +}); +Clazz_defineMethod(c$, "getNBOAtomLabel", +function(atom){ +return this.getNBOParser().getNBOAtomLabel(atom); +}, "JM.Atom"); +Clazz_defineMethod(c$, "calculateChirality", +function(bsAtoms){ +if (bsAtoms == null) bsAtoms = this.bsA(); +return this.ms.calculateChiralityForAtoms(bsAtoms, true); +}, "JU.BS"); +Clazz_defineMethod(c$, "getSubstructureSetArray", +function(pattern, bsSelected, flags){ +return this.getSmilesMatcher().getSubstructureSetArray(pattern, this.ms.at, this.ms.ac, bsSelected, null, flags); +}, "~S,JU.BS,~N"); +Clazz_defineMethod(c$, "getSubstructureSetArrayForNodes", +function(pattern, nodes, flags){ +return this.getSmilesMatcher().getSubstructureSetArray(pattern, nodes, nodes.length, null, null, flags); +}, "~S,~A,~N"); +Clazz_defineMethod(c$, "getSmilesAtoms", +function(smiles){ +return this.getSmilesMatcher().getAtoms(smiles); +}, "~S"); +Clazz_defineMethod(c$, "calculateChiralityForSmiles", +function(smiles){ +try { +return J.api.Interface.getSymmetry(this, "ms").calculateCIPChiralityForSmiles(this, smiles); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "getPdbID", +function(){ +return (this.ms.getInfo(this.am.cmi, JV.JC.getBoolName(4)) === Boolean.TRUE ? this.ms.getInfo(this.am.cmi, "pdbID") : null); +}); +Clazz_defineMethod(c$, "getModelInfo", +function(key){ +return this.ms.getInfo(this.am.cmi, key); +}, "~S"); +Clazz_defineMethod(c$, "notifyScriptEditor", +function(msWalltime, data){ +if (this.scriptEditor != null) { +this.scriptEditor.notify(msWalltime, data); +}}, "~N,~A"); +Clazz_defineMethod(c$, "sendConsoleMessage", +function(msg){ +if (this.appConsole != null) this.appConsole.sendConsoleMessage(msg); +}, "~S"); +Clazz_defineMethod(c$, "getModelkitPropertySafely", +function(name){ +return (this.modelkit == null ? null : this.modelkit.getProperty(name)); +}, "~S"); +Clazz_defineMethod(c$, "setModelkitPropertySafely", +function(key, value){ +return (this.modelkit == null ? null : this.modelkit.setProperty(key, value)); +}, "~S,~O"); +Clazz_defineMethod(c$, "isModelKitOption", +function(type, value){ +return this.modelkit != null && this.modelkit.checkOption(type, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "getSymmetryInfo", +function(iatom, xyz, iOp, translation, pt1, pt2, type, desc, scaleFactor, nth, options, opList){ +try { +return this.getSymTemp().getSymmetryInfoAtom(this.ms, iatom, xyz, iOp, translation, pt1, pt2, desc, type, scaleFactor, nth, options, opList); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("Exception in Viewer.getSymmetryInfo: " + e); +if (!JV.Viewer.isJS) e.printStackTrace(); +return null; +} else { +throw e; +} +} +}, "~N,~S,~N,JU.P3,JU.P3,JU.P3,~N,~S,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "getMacro", +function(key){ +if (this.macros == null || this.macros.isEmpty()) { +try { +var s = this.getAsciiFileOrNull(this.g.macroDirectory + "/macros.json"); +this.macros = this.parseJSON(s); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.macros = new java.util.Hashtable(); +} else { +throw e; +} +} +}if (key == null) { +var s = new JU.SB(); +for (var k, $k = this.macros.keySet().iterator (); $k.hasNext()&& ((k = $k.next ()) || true);) { +var a = this.macros.get(k); +s.append(k).append("\t").appendO(a).append("\n"); +} +return s.toString(); +}key = key.toLowerCase(); +return this.macros.containsKey(key) ? (this.macros.get(key)).get("path").toString() : null; +}, "~S"); +Clazz_defineMethod(c$, "getConsoleFontScale", +function(){ +return this.consoleFontScale; +}); +Clazz_defineMethod(c$, "setConsoleFontScale", +function(scale){ +this.consoleFontScale = scale; +}, "~N"); +Clazz_defineMethod(c$, "confirm", +function(msg, msgNo){ +return this.apiPlatform.confirm(msg, msgNo); +}, "~S,~S"); +Clazz_defineMethod(c$, "evalStringGUI", +function(script){ +this.evalStringQuiet(script + "; ## GUI ##"); +}, "~S"); +Clazz_defineMethod(c$, "selectStatus", +function(bs, isGroup, addRemove, isQuiet, reportStatus){ +this.select(bs, isGroup, addRemove, isQuiet); +if (reportStatus) { +this.setStatusSelect(bs); +}}, "JU.BS,~B,~N,~B,~B"); +Clazz_defineMethod(c$, "setStatusSelect", +function(bs){ +this.hasSelected = false; +this.sm.setStatusSelect(bs == null ? this.bsA() : bs); +}, "JU.BS"); +Clazz_defineMethod(c$, "wasmInchiHack", +function(cmd){ +if (JV.Viewer.isJS && (cmd.indexOf("inchi") >= 0 || cmd.indexOf("INCHI") >= 0) || cmd.indexOf("TAUTOMER") >= 0 || cmd.indexOf("tautomer") >= 0) { +this.getInchi(null, null, null); +}return cmd; +}, "~S"); +Clazz_defineMethod(c$, "getInchi", +function(atoms, molData, options){ +try { +var inch = this.apiPlatform.getInChI(); +if (atoms == null && molData == null) { +return ""; +}if ((typeof(molData)=='string')) { +var data = molData; +if (data.startsWith("$") || data.startsWith(":")) { +molData = this.getFileAsString4(data, -1, false, false, true, "script"); +} else if (!data.startsWith("InChI=") && data.indexOf(" ") < 0) { +data = this.setLoadFormat(false, "$" + molData, '$', false); +molData = this.getFileAsString4(data, -1, false, false, true, "script"); +}}return inch.getInchi(this, atoms, molData, options); +} catch (t) { +return ""; +} +}, "JU.BS,~O,~S"); +Clazz_defineMethod(c$, "findSpaceGroup", +function(sym, bsAtoms, xyzList, unitCellParams, origin, oabc, flags){ +var ret = null; +if (bsAtoms == null && xyzList == null || (flags & 2) != 0) bsAtoms = this.getThisModelAtoms(); +if (xyzList == null) { +if (!bsAtoms.isEmpty()) { +var uc = (sym == null ? this.getOperativeSymmetry() : sym); +ret = (uc == null ? null : uc.findSpaceGroup(this, bsAtoms, null, unitCellParams, null, oabc, flags)); +}} else { +ret = this.getSymTemp().findSpaceGroup(this, bsAtoms, xyzList, unitCellParams, origin, oabc, flags); +}return (ret == null && (flags & 1) != 0 ? "" : ret); +}, "J.api.SymmetryInterface,JU.BS,~S,~A,JU.T3,~A,~N"); +Clazz_defineMethod(c$, "restrictToModel", +function(bs, mi){ +if (bs == null) bs = this.bsA(); +var isEmpty = bs.isEmpty(); +if (isEmpty && mi >= 0) return bs; +if (mi == -1) mi = this.am.cmi; +if (mi < 0) { +if (isEmpty) { +return this.getThisModelAtoms(); +}mi = this.ms.at[bs.nextSetBit(0)].getModelIndex(); +}var bsm = this.getModelUndeletedAtomsBitSet(mi); +bsm.and(bs); +return bsm; +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getThisModelAtoms", +function(){ +return this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().nextSetBit(0)); +}); +Clazz_defineMethod(c$, "getSymmetryEquivPoints", +function(pt, flags){ +var uc = this.getCurrentUnitCell(); +return (uc == null ? new JU.Lst() : uc.getEquivPoints(null, pt, flags)); +}, "JU.P3,~S"); +Clazz_defineMethod(c$, "getSymmetryEquivPointList", +function(pts, flags){ +var uc = this.getCurrentUnitCell(); +if (uc == null) return new JU.Lst(); +uc.getEquivPointList(pts, 0, flags.toLowerCase(), null); +return pts; +}, "JU.Lst,~S"); +Clazz_defineMethod(c$, "getOperativeSymmetry", +function(){ +var sg = this.getCurrentUnitCell(); +return (sg == null || sg.getSymmetryOperations() == null ? null : sg); +}); +Clazz_defineMethod(c$, "formatText", +function(text0){ +var i; +if ((i = text0.indexOf("@{")) < 0 && (i = text0.indexOf("%{")) < 0) return text0; +var text = text0; +var isEscaped = (text.indexOf("\\") >= 0); +if (isEscaped) { +text = JU.PT.rep(text, "\\%", "\1"); +text = JU.PT.rep(text, "\\@", "\2"); +isEscaped = !text.equals(text0); +}text = JU.PT.rep(text, "%{", "@{"); +var name; +while ((i = text.indexOf("@{")) >= 0) { +i++; +var i0 = i + 1; +var len = text.length; +var nP = 1; +var chFirst = '\u0000'; +var chLast = '\u0000'; +while (nP > 0 && ++i < len) { +var ch = text.charAt(i); +if (chFirst != '\0') { +if (chLast == '\\') { +ch = '\0'; +} else if (ch == chFirst) { +chFirst = '\0'; +}chLast = ch; +continue; +}switch ((ch).charCodeAt(0)) { +case 39: +case 34: +chFirst = ch; +break; +case 123: +nP++; +break; +case 125: +nP--; +break; +} +} +if (i >= len) return text; +name = text.substring(i0, i); +if (name.length == 0) return text; +var v = this.evaluateExpression(name); +if (Clazz_instanceOf(v,"JU.P3")) v = JU.Escape.eP(v); +text = text.substring(0, i0 - 2) + v.toString() + text.substring(i + 1); +} +if (isEscaped) { +text = JU.PT.rep(text, "\2", "@"); +text = JU.PT.rep(text, "\1", "%"); +}return text; +}, "~S"); +Clazz_defineMethod(c$, "getScaleText", +function(units, isAntialiased, min, ret){ +var relativeScale = 1; +var u = JM.Measurement.fixUnits(units.length > 0 ? ((units.startsWith("//") ? units.substring(2) : units).toLowerCase()) : this.g.measureDistanceUnits.equals("vdw") ? "angstroms" : this.g.measureDistanceUnits); +if (JM.Measurement.fromUnits(1, u) == 0) { +u = JM.Measurement.fixUnits(this.g.measureDistanceUnits); +}if (ret == null) return u; +var d = this.tm.modelRadius * this.tm.scaleDefaultPixelsPerAngstrom / this.tm.scalePixelsPerAngstrom / 4; +var af = (isAntialiased ? 2 : 1); +var m = 0; +var p = 0; +var e = 0; +var mp = 0; +min = min * this.imageFontScaling / af * relativeScale * 2; +while (p < min) { +e = JM.Measurement.toUnits(d, u, false); +m = Clazz_doubleToInt(Math.floor(Math.log10(e))); +mp = Math.pow(10, m); +e = JM.Measurement.fromUnits(mp + 0.000001, u); +p = Clazz_floatToInt(e * this.tm.scalePixelsPerAngstrom / af); +if (p < min) { +d *= 10; +}} +var se = (m >= 0 ? " " + Clazz_floatToInt(mp) + " " : " 0." + "000000000".substring(0, -1 - m) + "1 "); +ret[0] = p; +ret[1] = e; +return se + u; +}, "~S,~B,~N,~A"); +Clazz_defineMethod(c$, "setStatusAtomMoved", +function(andCheckMinimize, bs){ +if (andCheckMinimize) this.checkMinimization(); +this.sm.setStatusAtomMoved(bs); +}, "~B,JU.BS"); +Clazz_defineMethod(c$, "getFormulaForAtoms", +function(bs, type, isEmpirical){ +return JU.JmolMolecule.getMolecularFormulaAtoms(this.ms.at, bs, ("CELLFORMULA".equals(type) ? this.ms.getCellWeights(bs) : null), isEmpirical); +}, "JU.BS,~S,~B"); +Clazz_defineMethod(c$, "evalCallback", +function(cmd, params, doWait){ +if (this.getScriptManager() != null) this.scm.evalCallback(cmd, params, doWait); +}, "~S,~A,~B"); +Clazz_defineMethod(c$, "checkConsoleScript", +function(strScript){ +{ +if (strScript.indexOf("JSCONSOLE") == 0) { +this.html5Applet._showInfo(strScript.indexOf("CLOSE")<0); if +(strScript.indexOf("CLEAR") >= 0) +this.html5Applet._clearConsole(); return true; } +}return false; +}, "~S"); +c$.$Viewer$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(JV, "Viewer$1", null, Runnable); +Clazz_overrideMethod(c$, "run", +function(){ +this.f$.me.dragMinimizeAtom(this.f$.iAtom); +}); +/*eoif5*/})(); +}; +/*if2*/;(function(){ +var c$ = Clazz_declareType(JV.Viewer, "ACCESS", Enum); +Clazz_defineEnumConstant(c$, "NONE", 0, []); +Clazz_defineEnumConstant(c$, "READSPT", 1, []); +Clazz_defineEnumConstant(c$, "ALL", 2, []); +/*eoif2*/})(); +{ +{ +self.Jmol && Jmol.extend && Jmol.extend("vwr", +JV.Viewer.prototype); +}}c$.isJS = false; +c$.isSwingJS = false; +c$.appletDocumentBase = ""; +c$.appletCodeBase = ""; +c$.appletIdiomaBase = null; +c$.jsDocumentBase = ""; +c$.jmolObject = null; +c$.strJavaVendor = "Java: " + System.getProperty("java.vendor", "j2s"); +c$.strOSName = System.getProperty("os.name", ""); +c$.strJavaVersion = "Java " + System.getProperty("java.version", ""); +c$.version_date = null; +c$.staticFunctions = new java.util.Hashtable(); +c$.nProcessors = 1; +c$.isHighPrecision = false; +{ +{ +}}c$.symStatic = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolJDXMOLParser"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolJDXMOLReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jsv"); +Clazz_load(["J.api.JmolJDXMOLParser"], "J.jsv.JDXMOLParser", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "$.SB", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.line = null; +this.lastModel = ""; +this.thisModelID = null; +this.baseModel = null; +this.vibScale = 0; +this.piUnitsX = null; +this.piUnitsY = null; +this.loader = null; +this.modelIdList = ""; +this.peakIndex = null; +this.peakFilePath = null; +Clazz_instantialize(this, arguments);}, J.jsv, "JDXMOLParser", null, J.api.JmolJDXMOLParser); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "set", +function(loader, filePath, htParams){ +this.loader = loader; +this.peakFilePath = filePath; +this.peakIndex = Clazz_newIntArray (1, 0); +if (htParams != null) { +htParams.remove("modelNumber"); +if (htParams.containsKey("zipSet")) { +this.peakIndex = htParams.get("peakIndex"); +if (this.peakIndex == null) { +this.peakIndex = Clazz_newIntArray (1, 0); +htParams.put("peakIndex", this.peakIndex); +}if (!htParams.containsKey("subFileName")) this.peakFilePath = JU.PT.split(filePath, "|")[0]; +}}return this; +}, "J.api.JmolJDXMOLReader,~S,java.util.Map"); +Clazz_overrideMethod(c$, "getAttribute", +function(line, tag){ +var attr = JU.PT.getQuotedAttribute(line, tag); +return (attr == null ? "" : attr); +}, "~S,~S"); +Clazz_overrideMethod(c$, "getRecord", +function(key){ +if (this.line == null || this.line.indexOf(key) < 0) return null; +var s = this.line; +while (s.indexOf(">") < 0) s += " " + this.readLine(); + +return this.line = s; +}, "~S"); +Clazz_overrideMethod(c$, "readModels", +function(){ +if (!this.findRecord("Models")) return false; +this.line = ""; +this.thisModelID = ""; +var isFirst = true; +while (true) { +this.line = this.loader.discardLinesUntilNonBlank(); +if (this.getRecord("") < 0) s += " " + this.readLine(); + +s = s.trim(); +}s = JU.PT.replaceAllCharacters(s, "()<>", " ").trim(); +if (s.length == 0) break; +var pt = s.indexOf("'"); +if (pt >= 0) { +var pt2 = s.indexOf("'", pt + 1); +s = s.substring(0, pt) + JU.PT.rep(s.substring(pt + 1, pt2), ",", ";") + s.substring(pt2 + 1); +}JU.Logger.info("Peak Assignment: " + s); +var tokens = JU.PT.split(s, ","); +list.addLast(tokens); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Error reading peak assignments at " + this.line + ": " + e); +} else { +throw e; +} +} +return list; +}, "~N,~B"); +Clazz_overrideMethod(c$, "setACDAssignments", +function(model, mytype, peakCount, acdlist, molFile){ +try { +if (peakCount >= 0) this.peakIndex = Clazz_newIntArray(-1, [peakCount]); +var isMS = (mytype.indexOf("MASS") == 0); +var file = " file=" + JU.PT.esc(this.peakFilePath.$replace('\\', '/')); +model = " model=" + JU.PT.esc(model + " (assigned)"); +this.piUnitsX = ""; +this.piUnitsY = ""; +var dx = this.getACDPeakWidth(mytype) / 2; +var htSets = new java.util.Hashtable(); +var list = new JU.Lst(); +var zzcMap = null; +var ptx; +var pta; +var nAtoms = 0; +if (isMS) { +zzcMap = new java.util.Hashtable(); +var tokens = JU.PT.split(molFile, "M ZZC"); +for (var i = tokens.length; --i >= 1; ) { +var ab = JU.PT.getTokens(tokens[i]); +nAtoms = Math.max(nAtoms, JU.PT.parseInt(ab[0])); +zzcMap.put(ab[1], ab[0]); +} +ptx = 4; +pta = 0; +} else if (mytype.indexOf("NMR") >= 0) { +ptx = 0; +pta = 3; +} else { +ptx = 0; +pta = 2; +}var nPeaks = acdlist.size(); +for (var i = 0; i < nPeaks; i++) { +var data = acdlist.get(i); +var x = JU.PT.parseFloat(data[ptx]); +var a = data[pta]; +if (isMS) a = this.fixACDAtomList(a, zzcMap, nAtoms); + else a = a.$replace(';', ','); +if (a.indexOf("select") >= 0) { +var pt = a.indexOf("select atomno="); +if (pt < 0) continue; +a = JU.PT.split(a.substring(pt + 14), " ")[0]; +}var title = (isMS ? "m/z=" + Math.round(x) + ": " + data[2] + " (" + data[1] + ")" : pta == 2 ? "" + (Math.round(x * 10) / 10) : null); +this.getStringInfo(file, title, mytype, model, a, htSets, "" + x, list, " atoms=\"%ATOMS%\" xMin=\"" + (x - dx) + "\" xMax=\"" + (x + dx) + "\">"); +} +return this.setPeakData(list, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return 0; +} else { +throw e; +} +} +}, "~S,~S,~N,JU.Lst,~S"); +Clazz_defineMethod(c$, "fixACDAtomList", +function(atoms, zzcMap, nAtoms){ +atoms = atoms.trim(); +var tokens = JU.PT.getTokens(atoms.$replace(';', ' ')); +var bs = new JU.BS(); +var isM = false; +for (var i = 0; i < tokens.length; i++) { +var a = tokens[i]; +isM = (a.indexOf("M") >= 0); +if (isM) a = "1-" + nAtoms; +var pt = a.indexOf('-'); +if (pt >= 0) { +var i1 = JU.PT.parseInt(a.substring(0, pt)); +var i2 = JU.PT.parseInt(a.substring(pt + 1)) + 1; +for (var k = i1; k < i2; k++) bs.set(isM ? k : JU.PT.parseInt(zzcMap.get("" + k))); + +} else { +bs.set(JU.PT.parseInt(zzcMap.get(a))); +}} +var s = bs.toJSON(); +return s.substring(1, s.length - 1); +}, "~S,java.util.Map,~N"); +Clazz_defineMethod(c$, "getACDPeakWidth", +function(type){ +return (type.indexOf("HNMR") >= 0 ? 0.05 : type.indexOf("CNMR") >= 0 ? 1 : type.indexOf("MASS") >= 0 ? 1 : 10); +}, "~S"); +Clazz_overrideMethod(c$, "readPeaks", +function(isSignals, peakCount){ +try { +if (peakCount >= 0) this.peakIndex = Clazz_newIntArray(-1, [peakCount]); +var offset = (isSignals ? 1 : 0); +var tag1 = (isSignals ? "Signals" : "Peaks"); +var tag2 = (isSignals ? "= 0; j = bs.nextSetBit(j + 1)) s += "," + (j + offset); + +var na = bs.cardinality(); +nH += na; +info = JU.PT.rep(info, "%ATOMS%", s.substring(1)); +info = JU.PT.rep(info, "%S%", (na == 1 ? "" : "s")); +info = JU.PT.rep(info, "%NATOMS%", "" + na); +}JU.Logger.info("adding PeakData " + info); +this.loader.addPeakData(info); +} +this.loader.setSpectrumPeaks(nH, this.piUnitsX, this.piUnitsY); +return n; +}, "JU.Lst,~N"); +Clazz_defineMethod(c$, "getStringInfo", +function(file, title, mytype, model, atoms, htSets, key, list, more){ +if ("HNMR".equals(mytype)) mytype = "1HNMR"; + else if ("CNMR".equals(mytype)) mytype = "13CNMR"; +var type = (mytype == null ? "" : " type=" + JU.PT.esc(mytype)); +if (title == null) title = ("1HNMR".equals(mytype) ? "atom%S%: %ATOMS%; integration: %NATOMS%" : ""); +title = " title=" + JU.PT.esc(title); +var stringInfo = "= 0) { +this.line = this.loader.discardLinesUntilContains(""); +return; +}this.modelIdList += key; +this.baseModel = this.getAttribute(this.line, "baseModel"); +while (this.line.indexOf(">") < 0 && this.line.indexOf("type") < 0) this.readLine(); + +var modelType = this.getAttribute(this.line, "type").toLowerCase(); +this.vibScale = JU.PT.parseFloat(this.getAttribute(this.line, "vibrationScale")); +if (modelType.equals("xyzvib")) modelType = "xyz"; + else if (modelType.length == 0) modelType = null; +var sb = new JU.SB(); +while (this.readLine() != null && !this.line.contains("")) sb.append(this.line).appendC('\n'); + +this.loader.processModelData(sb.toString(), this.thisModelID, modelType, this.baseModel, this.lastModel, NaN, this.vibScale, isFirst); +}, "~B"); +Clazz_defineMethod(c$, "findRecord", +function(tag){ +if (this.line == null) this.readLine(); +if (this.line != null && this.line.indexOf("<" + tag) < 0) this.line = this.loader.discardLinesUntilContains2("<" + tag, "##"); +return (this.line != null && this.line.indexOf("<" + tag) >= 0); +}, "~S"); +Clazz_defineMethod(c$, "readLine", +function(){ +return this.line = this.loader.rd(); +}); +Clazz_overrideMethod(c$, "setLine", +function(s){ +this.line = s; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "AnnotationData"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "AppletFrame"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVAppInterface", JSV.api.JSVAppletInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVAppletInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVFileHelper"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVMainPanel", JSV.api.JSVViewPanel); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVPanel", JSV.api.JSVViewPanel); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVTree"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVTreeNode"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVTreePath"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVViewPanel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVZipReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "PanelListener"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "ScriptInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.app"); +Clazz_load(["JSV.api.JSVAppInterface", "$.PanelListener", "$.ScriptInterface"], "JSV.app.JSVApp", ["JU.Lst", "$.PT", "JSV.common.Coordinate", "$.JSVFileManager", "$.JSVersion", "$.JSViewer", "$.ScriptToken", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.appletFrame = null; +this.isNewWindow = false; +this.appletReadyCallbackFunctionName = null; +this.coordCallbackFunctionName = null; +this.loadFileCallbackFunctionName = null; +this.peakCallbackFunctionName = null; +this.syncCallbackFunctionName = null; +this.vwr = null; +this.prevPanel = null; +Clazz_instantialize(this, arguments);}, JSV.app, "JSVApp", null, [JSV.api.PanelListener, JSV.api.JSVAppInterface, JSV.api.ScriptInterface]); +Clazz_makeConstructor(c$, +function(appletFrame, isJS){ +this.appletFrame = appletFrame; +this.initViewer(isJS); +this.initParams(appletFrame.getParameter("script")); +}, "JSV.api.AppletFrame,~B"); +Clazz_defineMethod(c$, "initViewer", +function(isJS){ +this.vwr = new JSV.common.JSViewer(this, true, isJS); +this.appletFrame.setDropTargetListener(this.isSigned(), this.vwr); +var path = this.appletFrame.getDocumentBase(); +JSV.common.JSVFileManager.setDocumentBase(this.vwr, path); +}, "~B"); +Clazz_overrideMethod(c$, "isPro", +function(){ +return this.isSigned(); +}); +Clazz_overrideMethod(c$, "isSigned", +function(){ +{ +return true; +}}); +Clazz_defineMethod(c$, "getAppletFrame", +function(){ +return this.appletFrame; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +try { +this.vwr.dispose(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "getPropertyAsJavaObject", +function(key){ +return this.vwr.getPropertyAsJavaObject(key); +}, "~S"); +Clazz_overrideMethod(c$, "getPropertyAsJSON", +function(key){ +return JU.PT.toJSON(null, this.getPropertyAsJavaObject(key)); +}, "~S"); +Clazz_overrideMethod(c$, "getCoordinate", +function(){ +return this.vwr.getCoordinate(); +}); +Clazz_overrideMethod(c$, "loadInline", +function(data){ +this.siOpenDataOrFile(data, "[inline]", null, null, -1, -1, true, null, null); +this.appletFrame.validateContent(3); +}, "~S"); +Clazz_overrideMethod(c$, "exportSpectrum", +function(type, n){ +return this.vwr.$export(type, n); +}, "~S,~N"); +Clazz_overrideMethod(c$, "setFilePath", +function(tmpFilePath){ +this.runScript("load " + JU.PT.esc(tmpFilePath)); +}, "~S"); +Clazz_overrideMethod(c$, "setSpectrumNumber", +function(n){ +this.runScript(JSV.common.ScriptToken.SPECTRUMNUMBER + " " + n); +}, "~N"); +Clazz_overrideMethod(c$, "reversePlot", +function(){ +this.toggle(JSV.common.ScriptToken.REVERSEPLOT); +}); +Clazz_overrideMethod(c$, "toggleGrid", +function(){ +this.toggle(JSV.common.ScriptToken.GRIDON); +}); +Clazz_overrideMethod(c$, "toggleCoordinate", +function(){ +this.toggle(JSV.common.ScriptToken.COORDINATESON); +}); +Clazz_overrideMethod(c$, "togglePointsOnly", +function(){ +this.toggle(JSV.common.ScriptToken.POINTSONLY); +}); +Clazz_overrideMethod(c$, "toggleIntegration", +function(){ +this.toggle(JSV.common.ScriptToken.INTEGRATE); +}); +Clazz_defineMethod(c$, "toggle", +function(st){ +if (this.vwr.selectedPanel != null) this.runScript(st + " TOGGLE"); +}, "JSV.common.ScriptToken"); +Clazz_overrideMethod(c$, "addHighlight", +function(x1, x2, r, g, b, a){ +this.runScript("HIGHLIGHT " + x1 + " " + x2 + " " + r + " " + g + " " + b + " " + a); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "removeHighlight", +function(x1, x2){ +this.runScript("HIGHLIGHT " + x1 + " " + x2 + " OFF"); +}, "~N,~N"); +Clazz_overrideMethod(c$, "removeAllHighlights", +function(){ +this.runScript("HIGHLIGHT OFF"); +}); +Clazz_overrideMethod(c$, "syncScript", +function(peakScript){ +this.vwr.syncScript(peakScript); +}, "~S"); +Clazz_overrideMethod(c$, "writeStatus", +function(msg){ +JU.Logger.info(msg); +}, "~S"); +Clazz_defineMethod(c$, "initParams", +function(params){ +this.vwr.parseInitScript(params); +this.newAppletPanel(); +this.vwr.setPopupMenu(this.vwr.allowMenu, this.vwr.parameters.getBoolean(JSV.common.ScriptToken.ENABLEZOOM)); +if (this.vwr.allowMenu) { +this.vwr.closeSource(null); +}this.runScriptNow(params); +}, "~S"); +Clazz_defineMethod(c$, "newAppletPanel", +function(){ +JU.Logger.info("newAppletPanel"); +this.appletFrame.createMainPanel(this.vwr); +}); +Clazz_overrideMethod(c$, "repaint", +function(){ +var applet = (this.vwr == null ? null : this.vwr.html5Applet); +if (JSV.common.JSViewer.jmolObject == null) { +this.appletFrame.repaint(); +} else if (applet != null) { +JSV.common.JSViewer.jmolObject.repaint(applet, true); +}}); +Clazz_defineMethod(c$, "updateJS", +function(width, height){ +}, "~N,~N"); +Clazz_overrideMethod(c$, "runScriptNow", +function(params){ +return this.vwr.runScriptNow(params); +}, "~S"); +Clazz_defineMethod(c$, "checkCallbacks", +function(){ +if (this.coordCallbackFunctionName == null && this.peakCallbackFunctionName == null) return; +var coord = new JSV.common.Coordinate(); +var actualCoord = (this.peakCallbackFunctionName == null ? null : new JSV.common.Coordinate()); +if (!this.vwr.pd().getPickedCoordinates(coord, actualCoord)) return; +var iSpec = this.vwr.mainPanel.getCurrentPanelIndex(); +if (actualCoord == null) this.appletFrame.callToJavaScript(this.coordCallbackFunctionName, Clazz_newArray(-1, [Double.$valueOf(coord.getXVal()), Double.$valueOf(coord.getYVal()), Integer.$valueOf(iSpec + 1)])); + else this.appletFrame.callToJavaScript(this.peakCallbackFunctionName, Clazz_newArray(-1, [Double.$valueOf(coord.getXVal()), Double.$valueOf(coord.getYVal()), Double.$valueOf(actualCoord.getXVal()), Double.$valueOf(actualCoord.getYVal()), Integer.$valueOf(iSpec + 1)])); +}); +Clazz_defineMethod(c$, "doAdvanced", +function(filePath){ +}, "~S"); +Clazz_overrideMethod(c$, "panelEvent", +function(eventObj){ +if (Clazz_instanceOf(eventObj,"JSV.common.PeakPickEvent")) { +this.vwr.processPeakPickEvent(eventObj, false); +} else if (Clazz_instanceOf(eventObj,"JSV.common.ZoomEvent")) { +} else if (Clazz_instanceOf(eventObj,"JSV.common.SubSpecChangeEvent")) { +}}, "~O"); +Clazz_overrideMethod(c$, "getSolnColour", +function(){ +return this.vwr.getSolutionColorStr(true); +}); +Clazz_defineMethod(c$, "updateJSView", +function(msg){ +var applet = this.vwr.html5Applet; +var panel = (applet == null ? null : this.vwr.selectedPanel); +{ +applet && applet._viewSet != null && applet._updateView(panel, msg); +}applet._updateView(panel, msg); +}, "~S"); +Clazz_overrideMethod(c$, "syncToJmol", +function(msg){ +this.updateJSView(msg); +if (this.syncCallbackFunctionName == null) return; +JU.Logger.info("JSVApp.syncToJmol JSV>Jmol " + msg); +this.appletFrame.callToJavaScript(this.syncCallbackFunctionName, Clazz_newArray(-1, [this.vwr.fullName, msg])); +}, "~S"); +Clazz_overrideMethod(c$, "setVisible", +function(b){ +this.appletFrame.setPanelVisible(b); +}, "~B"); +Clazz_overrideMethod(c$, "setCursor", +function(id){ +this.vwr.apiPlatform.setCursor(id, this.appletFrame); +}, "~N"); +Clazz_overrideMethod(c$, "runScript", +function(script){ +this.vwr.runScript(script); +}, "~S"); +Clazz_overrideMethod(c$, "getScriptQueue", +function(){ +return this.vwr.scriptQueue; +}); +Clazz_overrideMethod(c$, "siSetCurrentSource", +function(source){ +this.vwr.currentSource = source; +}, "JSV.source.JDXSource"); +Clazz_overrideMethod(c$, "siSendPanelChange", +function(){ +if (this.vwr.selectedPanel === this.prevPanel) return; +this.prevPanel = this.vwr.selectedPanel; +this.vwr.sendPanelChange(); +}); +Clazz_overrideMethod(c$, "siNewWindow", +function(isSelected, fromFrame){ +this.isNewWindow = isSelected; +if (fromFrame) { +if (this.vwr.jsvpPopupMenu != null) this.vwr.jsvpPopupMenu.setSelected("Window", false); +} else { +this.appletFrame.newWindow(isSelected); +}}, "~B,~B"); +Clazz_overrideMethod(c$, "siValidateAndRepaint", +function(isAll){ +var pd = this.vwr.pd(); +if (pd != null) pd.setTaintedAll(); +this.appletFrame.validate(); +this.repaint(); +}, "~B"); +Clazz_overrideMethod(c$, "siSyncLoad", +function(filePath){ +this.newAppletPanel(); +JU.Logger.info("JSVP syncLoad reading " + filePath); +this.siOpenDataOrFile(null, null, null, filePath, -1, -1, false, null, null); +this.appletFrame.validateContent(3); +}, "~S"); +Clazz_overrideMethod(c$, "siOpenDataOrFile", +function(data, name, specs, url, firstSpec, lastSpec, isAppend, script, id){ +switch (this.vwr.openDataOrFile(data, name, specs, url, firstSpec, lastSpec, isAppend, id)) { +case 0: +if (script != null) this.runScript(script); +break; +case -1: +return; +default: +this.siSetSelectedPanel(null); +return; +} +JU.Logger.info(this.appletFrame.getAppletInfo() + " File " + this.vwr.currentSource.getFilePath() + " Loaded Successfully"); +}, "~O,~S,JU.Lst,~S,~N,~N,~B,~S,~S"); +Clazz_overrideMethod(c$, "siProcessCommand", +function(scriptItem){ +this.vwr.runScriptNow(scriptItem); +}, "~S"); +Clazz_overrideMethod(c$, "siSetSelectedPanel", +function(jsvp){ +this.vwr.mainPanel.setSelectedPanel(this.vwr, jsvp, this.vwr.panelNodes); +this.vwr.selectedPanel = jsvp; +this.vwr.spectraTree.setSelectedPanel(this, jsvp); +if (jsvp == null) { +this.vwr.selectedPanel = jsvp = this.appletFrame.getJSVPanel(this.vwr, null); +this.vwr.mainPanel.setSelectedPanel(this.vwr, jsvp, null); +}this.appletFrame.validate(); +if (jsvp != null) { +jsvp.setEnabled(true); +jsvp.setFocusable(true); +}}, "JSV.api.JSVPanel"); +Clazz_overrideMethod(c$, "siExecSetCallback", +function(st, value){ +switch (st) { +case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME: +this.appletReadyCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +this.loadFileCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +this.peakCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +this.syncCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +this.coordCallbackFunctionName = value; +break; +} +}, "JSV.common.ScriptToken,~S"); +Clazz_overrideMethod(c$, "siLoaded", +function(value){ +if (this.loadFileCallbackFunctionName != null) this.appletFrame.callToJavaScript(this.loadFileCallbackFunctionName, Clazz_newArray(-1, [this.vwr.appletName, value])); +this.updateJSView(null); +return null; +}, "~S"); +Clazz_overrideMethod(c$, "siExecHidden", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "siExecScriptComplete", +function(msg, isOK){ +if (!isOK) this.vwr.showMessage(msg); +this.siValidateAndRepaint(false); +}, "~S,~B"); +Clazz_overrideMethod(c$, "siUpdateBoolean", +function(st, TF){ +}, "JSV.common.ScriptToken,~B"); +Clazz_overrideMethod(c$, "siCheckCallbacks", +function(title){ +this.checkCallbacks(); +}, "~S"); +Clazz_overrideMethod(c$, "siNodeSet", +function(panelNode){ +this.appletFrame.validateContent(2); +this.siValidateAndRepaint(false); +}, "JSV.common.PanelNode"); +Clazz_overrideMethod(c$, "siSourceClosed", +function(source){ +}, "JSV.source.JDXSource"); +Clazz_overrideMethod(c$, "siGetNewJSVPanel", +function(spec){ +if (spec == null) { +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +return null; +}var specs = new JU.Lst(); +specs.addLast(spec); +var jsvp = this.appletFrame.getJSVPanel(this.vwr, specs); +jsvp.getPanelData().addListener(this); +this.vwr.parameters.setFor(jsvp, null, true); +return jsvp; +}, "JSV.common.Spectrum"); +Clazz_overrideMethod(c$, "siGetNewJSVPanel2", +function(specs){ +if (specs == null) { +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +return this.appletFrame.getJSVPanel(this.vwr, null); +}var jsvp = this.appletFrame.getJSVPanel(this.vwr, specs); +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +jsvp.getPanelData().addListener(this); +this.vwr.parameters.setFor(jsvp, null, true); +return jsvp; +}, "JU.Lst"); +Clazz_overrideMethod(c$, "siSetPropertiesFromPreferences", +function(jsvp, includeMeasures){ +this.vwr.checkAutoIntegrate(); +}, "JSV.api.JSVPanel,~B"); +Clazz_overrideMethod(c$, "siSetLoaded", +function(fileName, filePath){ +}, "~S,~S"); +Clazz_overrideMethod(c$, "siSetMenuEnables", +function(node, isSplit){ +}, "JSV.common.PanelNode,~B"); +Clazz_overrideMethod(c$, "siUpdateRecentMenus", +function(filePath){ +}, "~S"); +Clazz_overrideMethod(c$, "siExecTest", +function(value){ +var data = ""; +this.loadInline(data); +}, "~S"); +Clazz_overrideMethod(c$, "print", +function(fileName){ +return this.vwr.print(fileName); +}, "~S"); +Clazz_overrideMethod(c$, "checkScript", +function(script){ +return this.vwr.checkScript(script); +}, "~S"); +c$.getAppletInfo = Clazz_defineMethod(c$, "getAppletInfo", +function(){ +return "JSpecView Applet " + JSV.common.JSVersion.VERSION + "\n\n" + "Authors:\nProf. Robert M. Hanson,\nD. Facey, K. Bryan, C. Walters, Prof. Robert J. Lancashire and\nvolunteer developers through sourceforge."; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.app"); +Clazz_load(["J.api.GenericMouseInterface"], "JSV.app.GenericMouse", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pd = null; +this.jsvp = null; +this.xWhenPressed = 0; +this.yWhenPressed = 0; +this.modifiersWhenPressed10 = 0; +this.isMouseDown = false; +this.disposed = false; +Clazz_instantialize(this, arguments);}, JSV.app, "GenericMouse", null, J.api.GenericMouseInterface); +Clazz_makeConstructor(c$, +function(jsvp){ +this.jsvp = jsvp; +this.pd = jsvp.getPanelData(); +}, "JSV.api.JSVPanel"); +Clazz_overrideMethod(c$, "clear", +function(){ +}); +Clazz_overrideMethod(c$, "processEvent", +function(id, x, y, modifiers, time){ +if (this.pd == null) { +if (!this.disposed && id == 501 && (modifiers & 4) != 0) this.jsvp.showMenu(x, y); +return true; +}if (id != 507) modifiers = JSV.app.GenericMouse.applyLeftMouse(modifiers); +switch (id) { +case 507: +this.wheeled(time, x, modifiers | 32); +break; +case 501: +this.xWhenPressed = x; +this.yWhenPressed = y; +this.modifiersWhenPressed10 = modifiers; +this.pressed(time, x, y, modifiers, false); +break; +case 506: +this.dragged(time, x, y, modifiers); +break; +case 504: +this.entered(time, x, y); +break; +case 505: +this.exited(time, x, y); +break; +case 503: +this.moved(time, x, y, modifiers); +break; +case 502: +this.released(time, x, y, modifiers); +if (x == this.xWhenPressed && y == this.yWhenPressed && modifiers == this.modifiersWhenPressed10) { +this.clicked(time, x, y, modifiers, 1); +}break; +default: +return false; +} +return true; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "mouseEntered", +function(e){ +this.entered(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseExited", +function(e){ +this.exited(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseMoved", +function(e){ +this.moved(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mousePressed", +function(e){ +this.pressed(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.isPopupTrigger()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseDragged", +function(e){ +var modifiers = e.getModifiers(); +if ((modifiers & 28) == 0) modifiers |= 16; +this.dragged(e.getWhen(), e.getX(), e.getY(), modifiers); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseReleased", +function(e){ +this.released(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseClicked", +function(e){ +this.clicked(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.getClickCount()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseWheelMoved", +function(e){ +e.consume(); +this.wheeled(e.getWhen(), e.getWheelRotation(), e.getModifiers() | 32); +}, "java.awt.event.MouseWheelEvent"); +Clazz_defineMethod(c$, "keyTyped", +function(ke){ +if (this.pd == null) return; +var ch = ke.getKeyChar(); +var modifiers = ke.getModifiers(); +if (JU.Logger.debuggingHigh || true) JU.Logger.info("MouseManager keyTyped: " + ch + " " + (0 + ch.charCodeAt(0)) + " " + modifiers); +if (this.pd.keyTyped(ch.charCodeAt(0), modifiers)) ke.consume(); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "keyPressed", +function(ke){ +if (this.pd != null && this.pd.keyPressed(ke.getKeyCode(), ke.getModifiers())) ke.consume(); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "keyReleased", +function(ke){ +if (this.pd != null) this.pd.keyReleased(ke.getKeyCode()); +}, "java.awt.event.KeyEvent"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +var e = event; +switch (e.getID()) { +case 401: +this.keyPressed(e); +break; +case 402: +this.keyReleased(e); +break; +case 400: +this.keyTyped(e); +break; +} +}, "~O"); +Clazz_defineMethod(c$, "entered", +function(time, x, y){ +if (this.pd != null) this.pd.mouseEnterExit(time, x, y, false); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "exited", +function(time, x, y){ +if (this.pd != null) this.pd.mouseEnterExit(time, x, y, true); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "clicked", +function(time, x, y, modifiers, clickCount){ +if (this.pd != null) this.pd.mouseAction(2, time, x, y, 1, modifiers); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "moved", +function(time, x, y, modifiers){ +if (this.pd == null) return; +if (this.isMouseDown) this.pd.mouseAction(1, time, x, y, 0, JSV.app.GenericMouse.applyLeftMouse(modifiers)); + else this.pd.mouseAction(0, time, x, y, 0, modifiers & -29); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "wheeled", +function(time, rotation, modifiers){ +if (this.pd != null) this.pd.mouseAction(3, time, 0, rotation, 0, modifiers); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "pressed", +function(time, x, y, modifiers, isPopupTrigger){ +if (this.pd == null) { +if (!this.disposed) this.jsvp.showMenu(x, y); +return; +}this.isMouseDown = true; +this.pd.mouseAction(4, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "released", +function(time, x, y, modifiers){ +if (this.pd == null) return; +this.isMouseDown = false; +this.pd.mouseAction(5, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "dragged", +function(time, x, y, modifiers){ +if (this.pd == null) return; +if ((modifiers & 20) == 20) modifiers = modifiers & -5 | 2; +this.pd.mouseAction(1, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +c$.applyLeftMouse = Clazz_defineMethod(c$, "applyLeftMouse", +function(modifiers){ +return ((modifiers & 28) == 0) ? (modifiers | 16) : modifiers; +}, "~N"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +}, "~A"); +Clazz_overrideMethod(c$, "dispose", +function(){ +this.pd = null; +this.jsvp = null; +this.disposed = true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.appletjs"); +Clazz_load(["javajs.api.JSInterface", "JSV.api.AppletFrame", "$.JSVAppletInterface"], "JSV.appletjs.JSVApplet", ["java.net.URL", "java.util.Hashtable", "JU.PT", "JSV.app.JSVApp", "JSV.js2d.JsMainPanel", "$.JsPanel", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.app = null; +this.viewer = null; +this.isStandalone = false; +this.viewerOptions = null; +this.htParams = null; +Clazz_instantialize(this, arguments);}, JSV.appletjs, "JSVApplet", null, [JSV.api.JSVAppletInterface, JSV.api.AppletFrame, javajs.api.JSInterface]); +Clazz_makeConstructor(c$, +function(viewerOptions){ +if (viewerOptions == null) viewerOptions = new java.util.Hashtable(); +this.viewerOptions = viewerOptions; +this.htParams = new java.util.Hashtable(); +for (var entry, $entry = viewerOptions.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.htParams.put(entry.getKey().toLowerCase(), entry.getValue()); + +this.init(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "init", +function(){ +this.app = new JSV.app.JSVApp(this, true); +this.initViewer(); +if (this.app.appletReadyCallbackFunctionName != null && this.viewer.fullName != null) this.callToJavaScript(this.app.appletReadyCallbackFunctionName, Clazz_newArray(-1, [this.viewer.appletName, this.viewer.fullName, Boolean.TRUE, this])); +}); +Clazz_defineMethod(c$, "initViewer", +function(){ +this.viewer = this.app.vwr; +this.setLogging(); +this.viewerOptions.remove("debug"); +var o = this.viewerOptions.get("display"); +{ +o = document.getElementById(o); +}this.viewer.setDisplay(o); +JU.Logger.info(this.getAppletInfo()); +}); +Clazz_defineMethod(c$, "setLogging", +function(){ +var iLevel = ((this.getValue("logLevel", (this.getBooleanValue("debug", false) ? "5" : "4"))).charAt(0)).charCodeAt(0) - 48; +if (iLevel != 4) System.out.println("setting logLevel=" + iLevel + " -- To change, use script \"set logLevel [0-5]\""); +JU.Logger.setLogLevel(iLevel); +}); +Clazz_defineMethod(c$, "getParameter", +function(paramName){ +var o = this.htParams.get(paramName.toLowerCase()); +return (o == null ? null : o.toString()); +}, "~S"); +Clazz_defineMethod(c$, "getBooleanValue", +function(propertyName, defaultValue){ +var value = this.getValue(propertyName, defaultValue ? "true" : ""); +return (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("on") || value.equalsIgnoreCase("yes")); +}, "~S,~B"); +Clazz_defineMethod(c$, "getValue", +function(propertyName, defaultValue){ +var stringValue = this.getParameter(propertyName); +System.out.println("getValue " + propertyName + " = " + stringValue); +if (stringValue != null) return stringValue; +return defaultValue; +}, "~S,~S"); +Clazz_overrideMethod(c$, "isPro", +function(){ +return this.app.isPro(); +}); +Clazz_overrideMethod(c$, "isSigned", +function(){ +return this.app.isSigned(); +}); +Clazz_overrideMethod(c$, "destroy", +function(){ +this.app.dispose(); +this.app = null; +}); +Clazz_defineMethod(c$, "getParameter", +function(key, def){ +return this.isStandalone ? System.getProperty(key, def) : (this.getParameter(key) != null ? this.getParameter(key) : def); +}, "~S,~S"); +Clazz_overrideMethod(c$, "getAppletInfo", +function(){ +return JSV.app.JSVApp.getAppletInfo(); +}); +Clazz_overrideMethod(c$, "getSolnColour", +function(){ +return this.app.getSolnColour(); +}); +Clazz_overrideMethod(c$, "getCoordinate", +function(){ +return this.app.getCoordinate(); +}); +Clazz_overrideMethod(c$, "loadInline", +function(data){ +this.app.loadInline(data); +}, "~S"); +Clazz_defineMethod(c$, "$export", +function(type, n){ +return this.app.exportSpectrum(type, n); +}, "~S,~N"); +Clazz_overrideMethod(c$, "exportSpectrum", +function(type, n){ +return this.app.exportSpectrum(type, n); +}, "~S,~N"); +Clazz_overrideMethod(c$, "setFilePath", +function(tmpFilePath){ +this.app.setFilePath(tmpFilePath); +}, "~S"); +Clazz_overrideMethod(c$, "setSpectrumNumber", +function(i){ +this.app.setSpectrumNumber(i); +}, "~N"); +Clazz_overrideMethod(c$, "toggleGrid", +function(){ +this.app.toggleGrid(); +}); +Clazz_overrideMethod(c$, "toggleCoordinate", +function(){ +this.app.toggleCoordinate(); +}); +Clazz_overrideMethod(c$, "togglePointsOnly", +function(){ +this.app.togglePointsOnly(); +}); +Clazz_overrideMethod(c$, "toggleIntegration", +function(){ +this.app.toggleIntegration(); +}); +Clazz_overrideMethod(c$, "addHighlight", +function(x1, x2, r, g, b, a){ +this.app.addHighlight(x1, x2, r, g, b, a); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "removeAllHighlights", +function(){ +this.app.removeAllHighlights(); +}); +Clazz_overrideMethod(c$, "removeHighlight", +function(x1, x2){ +this.app.removeHighlight(x1, x2); +}, "~N,~N"); +Clazz_overrideMethod(c$, "reversePlot", +function(){ +this.app.reversePlot(); +}); +Clazz_defineMethod(c$, "script", +function(script){ +this.app.initParams(script); +}, "~S"); +Clazz_overrideMethod(c$, "runScript", +function(script){ +this.app.runScript(script); +}, "~S"); +Clazz_overrideMethod(c$, "syncScript", +function(peakScript){ +this.app.syncScript(peakScript); +}, "~S"); +Clazz_overrideMethod(c$, "writeStatus", +function(msg){ +this.app.writeStatus(msg); +}, "~S"); +Clazz_overrideMethod(c$, "getPropertyAsJavaObject", +function(key){ +return this.app.getPropertyAsJavaObject(key); +}, "~S"); +Clazz_overrideMethod(c$, "getPropertyAsJSON", +function(key){ +return this.app.getPropertyAsJSON(key); +}, "~S"); +Clazz_overrideMethod(c$, "runScriptNow", +function(script){ +return this.app.runScriptNow(script); +}, "~S"); +Clazz_overrideMethod(c$, "print", +function(fileName){ +return this.app.print(fileName); +}, "~S"); +Clazz_overrideMethod(c$, "setDropTargetListener", +function(isSigned, viewer){ +}, "~B,JSV.common.JSViewer"); +Clazz_overrideMethod(c$, "validateContent", +function(mode){ +}, "~N"); +Clazz_overrideMethod(c$, "createMainPanel", +function(viewer){ +viewer.mainPanel = new JSV.js2d.JsMainPanel(); +}, "JSV.common.JSViewer"); +Clazz_overrideMethod(c$, "newWindow", +function(isSelected){ +}, "~B"); +Clazz_overrideMethod(c$, "callToJavaScript", +function(callback, data){ +var tokens = JU.PT.split(callback, "."); +{ +try{ +var o = window[tokens[0]] +for (var i = 1; i < tokens.length; i++){ +o = o[tokens[i]] +} +return o(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9]); +} catch (e) { +System.out.println(callback + " failed " + e); +} +}}, "~S,~A"); +Clazz_overrideMethod(c$, "setPanelVisible", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "getJSVPanel", +function(viewer, specs){ +return (specs == null ? JSV.js2d.JsPanel.getEmptyPanel(viewer) : JSV.js2d.JsPanel.getPanelMany(viewer, specs)); +}, "JSV.common.JSViewer,JU.Lst"); +Clazz_overrideMethod(c$, "setVisible", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "getDocumentBase", +function(){ +try { +return new java.net.URL(Clazz_castNullAs("java.net.URL"), this.viewerOptions.get("documentBase"), null); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +return null; +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "repaint", +function(){ +}); +Clazz_overrideMethod(c$, "validate", +function(){ +}); +Clazz_overrideMethod(c$, "doExitJmol", +function(){ +}); +Clazz_overrideMethod(c$, "getApp", +function(){ +return this.app; +}); +Clazz_overrideMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +return true; +}, "~N,~N,~N,~S,~A"); +Clazz_overrideMethod(c$, "cacheFileByName", +function(fileName, isAdd){ +return 0; +}, "~S,~B"); +Clazz_overrideMethod(c$, "cachePut", +function(key, data){ +}, "~S,~O"); +Clazz_overrideMethod(c$, "getFullName", +function(){ +return this.app.vwr.fullName; +}); +Clazz_overrideMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.app.vwr.processMouseEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "setDisplay", +function(canvas){ +this.app.vwr.setDisplay(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "startHoverWatcher", +function(enable){ +}, "~B"); +Clazz_overrideMethod(c$, "update", +function(){ +this.app.vwr.updateJS(); +}); +Clazz_defineMethod(c$, "openFile", +function(fileName){ +this.app.vwr.openFile(fileName, true); +return null; +}, "~S"); +Clazz_overrideMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +this.app.vwr.openFileAsyncSpecial(fileName, flags); +}, "~S,~N"); +Clazz_overrideMethod(c$, "openFileAsyncSpecialType", +function(fileName, flags, type){ +this.openFileAsyncSpecial(fileName, flags); +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +this.app.vwr.processTwoPointGesture(touches); +}, "~A"); +Clazz_overrideMethod(c$, "setScreenDimension", +function(width, height){ +this.app.vwr.setScreenDimension(width, height); +}, "~N,~N"); +Clazz_overrideMethod(c$, "checkScript", +function(script){ +var s = this.app.checkScript(script); +if (s != null) System.out.println(s); +return s; +}, "~S"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum", "JSV.common.Coordinate"], "JSV.common.Annotation", ["JU.CU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.text = ""; +this.$isPixels = false; +this.is2D = false; +this.offsetX = 0; +this.offsetY = 0; +this.spec = null; +Clazz_instantialize(this, arguments);}, JSV.common, "Annotation", JSV.common.Coordinate); +Clazz_defineMethod(c$, "setA", +function(x, y, spec, text, isPixels, is2D, offsetX, offsetY){ +this.set(x, y); +this.spec = spec; +this.text = text; +this.$isPixels = isPixels; +this.is2D = is2D; +this.offsetX = offsetX; +this.offsetY = offsetY; +return this; +}, "~N,~N,JSV.common.Spectrum,~S,~B,~B,~N,~N"); +Clazz_defineMethod(c$, "setSpec", +function(spec){ +this.spec = spec; +return this; +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "addSpecShift", +function(dx){ +this.setXVal(this.getXVal() + dx); +}, "~N"); +Clazz_defineMethod(c$, "isPixels", +function(){ +return this.$isPixels; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getXVal() + ", " + this.getYVal() + "," + this.text + "]"; +}); +c$.getColoredAnnotation = Clazz_defineMethod(c$, "getColoredAnnotation", +function(g2d, spec, args, lastAnnotation){ +var arg; +var xPt = 0; +var yPt = 1; +var colorPt = 2; +var textPt = 3; +var nArgs = args.size(); +try { +switch (nArgs) { +default: +return null; +case 1: +arg = args.get(0); +xPt = yPt = -1; +if (arg.charAt(0) == '\"') { +textPt = 0; +colorPt = -1; +} else { +colorPt = 0; +textPt = -1; +}break; +case 2: +xPt = yPt = -1; +arg = args.get(0); +if (arg.charAt(0) == '\"') { +textPt = 0; +colorPt = 1; +} else { +colorPt = 0; +textPt = 1; +}break; +case 3: +case 4: +arg = args.get(2); +if (arg.charAt(0) == '\"') { +textPt = 2; +colorPt = (nArgs == 4 ? 3 : -1); +} else { +colorPt = 2; +textPt = (nArgs == 4 ? 3 : -1); +}arg = args.get(2); +if (arg.charAt(0) == '\"') { +textPt = 2; +colorPt = -1; +} else { +colorPt = 2; +textPt = -1; +}} +if (lastAnnotation == null && (xPt < 0 || yPt < 0 || textPt < 0 || colorPt < 0)) return null; +var x = (xPt < 0 ? lastAnnotation.getXVal() : Double.$valueOf(args.get(xPt)).doubleValue()); +var y = (yPt < 0 ? lastAnnotation.getYVal() : Double.$valueOf(args.get(yPt)).doubleValue()); +var color = (colorPt < 0 ? (lastAnnotation).getColor() : g2d.getColor1(JU.CU.getArgbFromString(args.get(colorPt)))); +var text; +if (textPt < 0) { +text = lastAnnotation.text; +} else { +text = args.get(textPt); +if (text.charAt(0) == '\"') text = text.substring(1, text.length - 1); +}return new JSV.common.ColoredAnnotation().setCA(x, y, spec, text, color, false, false, 0, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "J.api.GenericGraphics,JSV.common.Spectrum,JU.Lst,JSV.common.Annotation"); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.Annotation, "AType", Enum); +Clazz_defineEnumConstant(c$, "Integration", 0, []); +Clazz_defineEnumConstant(c$, "PeakList", 1, []); +Clazz_defineEnumConstant(c$, "Measurements", 2, []); +Clazz_defineEnumConstant(c$, "OverlayLegend", 3, []); +Clazz_defineEnumConstant(c$, "Views", 4, []); +Clazz_defineEnumConstant(c$, "NONE", 5, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Annotation"], "JSV.common.ColoredAnnotation", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.color = null; +Clazz_instantialize(this, arguments);}, JSV.common, "ColoredAnnotation", JSV.common.Annotation); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.common.ColoredAnnotation, []); +}); +Clazz_defineMethod(c$, "getColor", +function(){ +return this.color; +}); +Clazz_defineMethod(c$, "setCA", +function(x, y, spec, text, color, isPixels, is2D, offsetX, offsetY){ +this.setA(x, y, spec, text, isPixels, is2D, offsetX, offsetY); +this.color = color; +return this; +}, "~N,~N,JSV.common.Spectrum,~S,javajs.api.GenericColor,~B,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Parameters"], "JSV.common.ColorParameters", ["java.util.Hashtable", "$.StringTokenizer", "JU.CU", "$.Lst", "JSV.common.ScriptToken"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.titleFontName = null; +this.displayFontName = null; +this.elementColors = null; +this.plotColors = null; +this.isDefault = false; +Clazz_instantialize(this, arguments);}, JSV.common, "ColorParameters", JSV.common.Parameters); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.common.ColorParameters, []); +JSV.common.ColorParameters.BLACK = this.getColor3(0, 0, 0); +JSV.common.ColorParameters.RED = this.getColor3(255, 0, 0); +JSV.common.ColorParameters.LIGHT_GRAY = this.getColor3(200, 200, 200); +JSV.common.ColorParameters.DARK_GRAY = this.getColor3(80, 80, 80); +JSV.common.ColorParameters.BLUE = this.getColor3(0, 0, 255); +JSV.common.ColorParameters.WHITE = this.getColor3(255, 255, 255); +this.elementColors = new java.util.Hashtable(); +this.setColor(JSV.common.ScriptToken.TITLECOLOR, JSV.common.ColorParameters.BLACK); +this.setColor(JSV.common.ScriptToken.UNITSCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.SCALECOLOR, JSV.common.ColorParameters.BLACK); +this.setColor(JSV.common.ScriptToken.COORDINATESCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.GRIDCOLOR, JSV.common.ColorParameters.LIGHT_GRAY); +this.setColor(JSV.common.ScriptToken.PLOTCOLOR, JSV.common.ColorParameters.BLUE); +this.setColor(JSV.common.ScriptToken.PLOTAREACOLOR, JSV.common.ColorParameters.WHITE); +this.setColor(JSV.common.ScriptToken.BACKGROUNDCOLOR, this.getColor3(192, 192, 192)); +this.setColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.PEAKTABCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR, JSV.common.ColorParameters.DARK_GRAY); +for (var i = 0; i < 8; i++) JSV.common.ColorParameters.defaultPlotColors[i] = this.getColorFromString(JSV.common.ColorParameters.defaultPlotColorNames[i]); + +this.plotColors = new Array(8); +System.arraycopy(JSV.common.ColorParameters.defaultPlotColors, 0, this.plotColors, 0, 8); +}); +Clazz_defineMethod(c$, "setFor", +function(jsvp, ds, includeMeasures){ +if (ds == null) ds = this; +if (includeMeasures) jsvp.getPanelData().setBooleans(ds, null); +var pd = jsvp.getPanelData(); +if (pd.getCurrentPlotColor(1) != null) pd.setPlotColors(this.plotColors); +pd.setColorOrFont(ds, null); +}, "JSV.api.JSVPanel,JSV.common.ColorParameters,~B"); +Clazz_defineMethod(c$, "set", +function(pd, st, value){ +var param = null; +switch (st) { +default: +this.setP(pd, st, value); +return; +case JSV.common.ScriptToken.PLOTCOLORS: +if (pd == null) this.getPlotColors(value); + else pd.setPlotColors(this.getPlotColors(value)); +return; +case JSV.common.ScriptToken.BACKGROUNDCOLOR: +case JSV.common.ScriptToken.COORDINATESCOLOR: +case JSV.common.ScriptToken.GRIDCOLOR: +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +case JSV.common.ScriptToken.PEAKTABCOLOR: +case JSV.common.ScriptToken.PLOTAREACOLOR: +case JSV.common.ScriptToken.PLOTCOLOR: +case JSV.common.ScriptToken.SCALECOLOR: +case JSV.common.ScriptToken.TITLECOLOR: +case JSV.common.ScriptToken.UNITSCOLOR: +param = this.setColorFromString(st, value); +break; +case JSV.common.ScriptToken.TITLEFONTNAME: +case JSV.common.ScriptToken.DISPLAYFONTNAME: +param = this.getFontName(st, value); +break; +} +if (pd == null) return; +if (param != null) pd.setColorOrFont(this, st); +}, "JSV.common.PanelData,JSV.common.ScriptToken,~S"); +Clazz_defineMethod(c$, "getElementColor", +function(st){ +return this.elementColors.get(st); +}, "JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setColor", +function(st, color){ +if (color != null) this.elementColors.put(st, color); +return color; +}, "JSV.common.ScriptToken,javajs.api.GenericColor"); +Clazz_defineMethod(c$, "copy", +function(){ +return this.copy(this.name); +}); +Clazz_defineMethod(c$, "setElementColors", +function(p){ +this.displayFontName = p.displayFontName; +for (var entry, $entry = p.elementColors.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setColor(entry.getKey(), entry.getValue()); + +return this; +}, "JSV.common.ColorParameters"); +Clazz_defineMethod(c$, "getColorFromString", +function(name){ +return this.getColor1(JU.CU.getArgbFromString(name)); +}, "~S"); +Clazz_defineMethod(c$, "getPlotColors", +function(plotColorsStr){ +if (plotColorsStr == null) { +this.plotColors[0] = this.getElementColor(JSV.common.ScriptToken.PLOTCOLOR); +return this.plotColors; +}var st = new java.util.StringTokenizer(plotColorsStr, ",;.- "); +var colors = new JU.Lst(); +try { +while (st.hasMoreTokens()) colors.addLast(this.getColorFromString(st.nextToken())); + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +return colors.toArray( new Array(colors.size())); +}, "~S"); +Clazz_defineMethod(c$, "setColorFromString", +function(st, value){ +return this.setColor(st, this.getColorFromString(value)); +}, "JSV.common.ScriptToken,~S"); +Clazz_defineMethod(c$, "getFontName", +function(st, value){ +var isValid = this.isValidFontName(value); +switch (st) { +case JSV.common.ScriptToken.TITLEFONTNAME: +return (isValid ? this.titleFontName = value : this.titleFontName); +case JSV.common.ScriptToken.DISPLAYFONTNAME: +return (isValid ? this.displayFontName = value : this.displayFontName); +} +return null; +}, "JSV.common.ScriptToken,~S"); +c$.BLACK = null; +c$.RED = null; +c$.LIGHT_GRAY = null; +c$.DARK_GRAY = null; +c$.BLUE = null; +c$.WHITE = null; +c$.defaultPlotColors = new Array(8); +c$.defaultPlotColorNames = Clazz_newArray(-1, ["black", "darkGreen", "darkred", "orange", "magenta", "cyan", "maroon", "darkGray"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_declareType(JSV.common, "CoordComparator", null, java.util.Comparator); +Clazz_overrideMethod(c$, "compare", +function(c1, c2){ +return (c1.getXVal() > c2.getXVal() ? 1 : c1.getXVal() < c2.getXVal() ? -1 : 0); +}, "JSV.common.Coordinate,JSV.common.Coordinate"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.CoordComparator"], "JSV.common.Coordinate", ["java.util.Arrays", "$.StringTokenizer", "JU.Lst"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xVal = 0; +this.yVal = 0; +Clazz_instantialize(this, arguments);}, JSV.common, "Coordinate", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(x, y){ +this.xVal = x; +this.yVal = y; +return this; +}, "~N,~N"); +Clazz_defineMethod(c$, "getXVal", +function(){ +return this.xVal; +}); +Clazz_defineMethod(c$, "getYVal", +function(){ +return this.yVal; +}); +Clazz_defineMethod(c$, "setXVal", +function(val){ +this.xVal = val; +}, "~N"); +Clazz_defineMethod(c$, "setYVal", +function(val){ +this.yVal = val; +}, "~N"); +Clazz_defineMethod(c$, "copy", +function(){ +return new JSV.common.Coordinate().set(this.xVal, this.yVal); +}); +Clazz_defineMethod(c$, "equals", +function(coord){ +return (coord.xVal == this.xVal && coord.yVal == this.yVal); +}, "JSV.common.Coordinate"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.xVal + ", " + this.yVal + "]"; +}); +c$.isYInRange = Clazz_defineMethod(c$, "isYInRange", +function(xyCoords, min, max){ +return (JSV.common.Coordinate.getMinY(xyCoords, 0, xyCoords.length - 1) >= min && JSV.common.Coordinate.getMaxY(xyCoords, 0, xyCoords.length - 1) >= max); +}, "~A,~N,~N"); +c$.normalise = Clazz_defineMethod(c$, "normalise", +function(xyCoords, min, max){ +var newXYCoords = new Array(xyCoords.length); +var minY = JSV.common.Coordinate.getMinY(xyCoords, 0, xyCoords.length - 1); +var maxY = JSV.common.Coordinate.getMaxY(xyCoords, 0, xyCoords.length - 1); +var factor = (maxY - minY) / (max - min); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), ((xyCoords[i].getYVal() - minY) / factor) - min); + +return newXYCoords; +}, "~A,~N,~N"); +c$.reverse = Clazz_defineMethod(c$, "reverse", +function(x){ +var n = x.length; +for (var i = 0; i < n; i++) { +var v = x[i]; +x[i] = x[--n]; +x[n] = v; +} +return x; +}, "~A"); +c$.parseDSV = Clazz_defineMethod(c$, "parseDSV", +function(dataPoints, xFactor, yFactor){ +var point; +var xval = 0; +var yval = 0; +var xyCoords = new JU.Lst(); +var delim = " \t\n\r\f,;"; +var st = new java.util.StringTokenizer(dataPoints, delim); +var tmp1; +var tmp2; +while (st.hasMoreTokens()) { +tmp1 = st.nextToken().trim(); +tmp2 = st.nextToken().trim(); +xval = Double.parseDouble(tmp1); +yval = Double.parseDouble(tmp2); +point = new JSV.common.Coordinate().set(xval * xFactor, yval * yFactor); +xyCoords.addLast(point); +} +var coord = new Array(xyCoords.size()); +return xyCoords.toArray(coord); +}, "~S,~N,~N"); +c$.deltaX = Clazz_defineMethod(c$, "deltaX", +function(last, first, numPoints){ +return (last - first) / (numPoints - 1); +}, "~N,~N,~N"); +c$.removeScale = Clazz_defineMethod(c$, "removeScale", +function(xyCoords, xScale, yScale){ +JSV.common.Coordinate.applyScale(xyCoords, (1 / xScale), (1 / yScale)); +}, "~A,~N,~N"); +c$.applyScale = Clazz_defineMethod(c$, "applyScale", +function(xyCoords, xScale, yScale){ +if (xScale != 1 || yScale != 1) { +for (var i = 0; i < xyCoords.length; i++) { +xyCoords[i].setXVal(xyCoords[i].getXVal() * xScale); +xyCoords[i].setYVal(xyCoords[i].getYVal() * yScale); +} +}}, "~A,~N,~N"); +c$.getMinX = Clazz_defineMethod(c$, "getMinX", +function(coords, start, end){ +var min = 1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getXVal(); +if (tmp < min) min = tmp; +} +return min; +}, "~A,~N,~N"); +c$.getMinX = Clazz_defineMethod(c$, "getMinX", +function(spectra, vd){ +var min = 1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = JSV.common.Coordinate.getMinX(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)); +if (tmp < min) min = tmp; +} +return min; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMaxX = Clazz_defineMethod(c$, "getMaxX", +function(coords, start, end){ +var max = -1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getXVal(); +if (tmp > max) max = tmp; +} +return max; +}, "~A,~N,~N"); +c$.getMaxX = Clazz_defineMethod(c$, "getMaxX", +function(spectra, vd){ +var max = -1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = JSV.common.Coordinate.getMaxX(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)); +if (tmp > max) max = tmp; +} +return max; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMinY = Clazz_defineMethod(c$, "getMinY", +function(coords, start, end){ +var min = 1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getYVal(); +if (tmp < min) min = tmp; +} +return min; +}, "~A,~N,~N"); +c$.getMinYUser = Clazz_defineMethod(c$, "getMinYUser", +function(spectra, vd){ +var min = 1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var u = spectra.get(i).getUserYFactor(); +var yref = spectra.get(i).getYRef(); +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = (JSV.common.Coordinate.getMinY(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)) - yref) * u + yref; +if (tmp < min) min = tmp; +} +return min; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMaxY = Clazz_defineMethod(c$, "getMaxY", +function(coords, start, end){ +var max = -1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getYVal(); +if (tmp > max) max = tmp; +} +return max; +}, "~A,~N,~N"); +c$.getMaxYUser = Clazz_defineMethod(c$, "getMaxYUser", +function(spectra, vd){ +var max = -1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var u = spectra.get(i).getUserYFactor(); +var yref = spectra.get(i).getYRef(); +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = (JSV.common.Coordinate.getMaxY(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)) - yref) * u + yref; +if (tmp > max) max = tmp; +} +return max; +}, "JU.Lst,JSV.common.ViewData"); +c$.getYValueAt = Clazz_defineMethod(c$, "getYValueAt", +function(xyCoords, xPt){ +var i = JSV.common.Coordinate.getNearestIndexForX(xyCoords, xPt); +if (i == 0 || i == xyCoords.length) return NaN; +var x1 = xyCoords[i].getXVal(); +var x0 = xyCoords[i - 1].getXVal(); +var y1 = xyCoords[i].getYVal(); +var y0 = xyCoords[i - 1].getYVal(); +if (x1 == x0) return y1; +return y0 + (y1 - y0) / (x1 - x0) * (xPt - x0); +}, "~A,~N"); +c$.intoRange = Clazz_defineMethod(c$, "intoRange", +function(i, i0, i1){ +return Math.max(Math.min(i, i1), i0); +}, "~N,~N,~N"); +c$.getNearestIndexForX = Clazz_defineMethod(c$, "getNearestIndexForX", +function(xyCoords, xPt){ +var x = new JSV.common.Coordinate().set(xPt, 0); +var i = java.util.Arrays.binarySearch(xyCoords, x, JSV.common.Coordinate.c); +if (i < 0) i = -1 - i; +if (i < 0) return 0; +if (i > xyCoords.length - 1) return xyCoords.length - 1; +return i; +}, "~A,~N"); +c$.findXForPeakNearest = Clazz_defineMethod(c$, "findXForPeakNearest", +function(xyCoords, x, isMin){ +var pt = JSV.common.Coordinate.getNearestIndexForX(xyCoords, x); +var f = (isMin ? -1 : 1); +while (pt < xyCoords.length - 1 && f * (xyCoords[pt + 1].yVal - xyCoords[pt].yVal) > 0) pt++; + +while (pt >= 1 && f * (xyCoords[pt - 1].yVal - xyCoords[pt].yVal) > 0) pt--; + +if (pt == 0 || pt == xyCoords.length - 1) return xyCoords[pt].xVal; +return JSV.common.Coordinate.parabolicInterpolation(xyCoords, pt); +}, "~A,~N,~B"); +c$.parabolicInterpolation = Clazz_defineMethod(c$, "parabolicInterpolation", +function(xyCoords, pt){ +var alpha = xyCoords[pt - 1].yVal; +var beta = xyCoords[pt].yVal; +var gamma = xyCoords[pt + 1].yVal; +var p = (alpha - gamma) / 2 / (alpha - 2 * beta + gamma); +return xyCoords[pt].xVal + p * (xyCoords[pt + 1].xVal - xyCoords[pt].xVal); +}, "~A,~N"); +c$.getPickedCoordinates = Clazz_defineMethod(c$, "getPickedCoordinates", +function(coordsClicked, coordClicked, coord, actualCoord){ +if (coordClicked == null) return false; +var x = coordClicked.getXVal(); +coord.setXVal(x); +coord.setYVal(coordClicked.getYVal()); +if (actualCoord == null) return true; +var pt = JSV.common.Coordinate.getNearestIndexForX(coordsClicked, x); +actualCoord.setXVal(coordsClicked[pt].getXVal()); +actualCoord.setYVal(coordsClicked[pt].getYVal()); +return true; +}, "~A,JSV.common.Coordinate,JSV.common.Coordinate,JSV.common.Coordinate"); +c$.shiftX = Clazz_defineMethod(c$, "shiftX", +function(xyCoords, dx){ +for (var i = xyCoords.length; --i >= 0; ) xyCoords[i].xVal += dx; + +}, "~A,~N"); +c$.getNearestXWithYAbove = Clazz_defineMethod(c$, "getNearestXWithYAbove", +function(xyCoords, x, y, inverted, andGreaterThanX){ +var pt = JSV.common.Coordinate.getNearestIndexForX(xyCoords, x); +var f = (inverted ? -1 : 1); +if (andGreaterThanX) while (pt < xyCoords.length && f * (xyCoords[pt].yVal - y) < 0) pt++; + + else while (pt >= 0 && f * (xyCoords[pt].yVal - y) < 0) pt--; + +if (pt == -1 || pt == xyCoords.length) return NaN; +return JSV.common.Coordinate.findXForPeakNearest(xyCoords, xyCoords[pt].getXVal(), inverted); +}, "~A,~N,~N,~B,~B"); +c$.c = new JSV.common.CoordComparator(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum"], "JSV.common.ExportType", null, function(){ +var c$ = Clazz_declareType(JSV.common, "ExportType", Enum); +c$.getType = Clazz_defineMethod(c$, "getType", +function(type){ +type = type.toUpperCase(); +if (type.equalsIgnoreCase("Original...")) return JSV.common.ExportType.SOURCE; +if (type.startsWith("XML")) return JSV.common.ExportType.AML; +for (var mode, $mode = 0, $$mode = JSV.common.ExportType.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (mode.name().equals(type)) return mode; + +return JSV.common.ExportType.UNK; +}, "~S"); +c$.isExportMode = Clazz_defineMethod(c$, "isExportMode", +function(ext){ +return (JSV.common.ExportType.getType(ext) !== JSV.common.ExportType.UNK); +}, "~S"); +Clazz_defineEnumConstant(c$, "UNK", 0, []); +Clazz_defineEnumConstant(c$, "SOURCE", 1, []); +Clazz_defineEnumConstant(c$, "DIF", 2, []); +Clazz_defineEnumConstant(c$, "FIX", 3, []); +Clazz_defineEnumConstant(c$, "SQZ", 4, []); +Clazz_defineEnumConstant(c$, "PAC", 5, []); +Clazz_defineEnumConstant(c$, "XY", 6, []); +Clazz_defineEnumConstant(c$, "DIFDUP", 7, []); +Clazz_defineEnumConstant(c$, "PNG", 8, []); +Clazz_defineEnumConstant(c$, "JPG", 9, []); +Clazz_defineEnumConstant(c$, "SVG", 10, []); +Clazz_defineEnumConstant(c$, "SVGI", 11, []); +Clazz_defineEnumConstant(c$, "CML", 12, []); +Clazz_defineEnumConstant(c$, "AML", 13, []); +Clazz_defineEnumConstant(c$, "PDF", 14, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.XYScaleConverter", "java.util.Hashtable", "JU.BS", "$.Lst", "JSV.common.Coordinate"], "JSV.common.GraphSet", ["JU.DF", "$.PT", "JSV.common.Annotation", "$.ColorParameters", "$.ColoredAnnotation", "$.ImageView", "$.IntegralData", "$.Measurement", "$.MeasurementData", "$.PanelData", "$.Parameters", "$.PeakData", "$.PeakPickEvent", "$.PlotWidget", "$.ScaleData", "$.ScriptToken", "$.Spectrum", "$.ViewData", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.gs2dLinkedX = null; +this.gs2dLinkedY = null; +this.cur1D2Locked = false; +this.highlights = null; +this.spectra = null; +this.isSplittable = true; +this.allowStacking = true; +this.annotations = null; +this.selectedSpectrumMeasurements = null; +this.selectedSpectrumIntegrals = null; +this.lastAnnotation = null; +this.pendingMeasurement = null; +this.pendingIntegral = null; +this.graphsTemp = null; +this.widgets = null; +this.isLinked = false; +this.haveSingleYScale = false; +this.iSpectrumMovedTo = 0; +this.iSpectrumClicked = 0; +this.iSpectrumSelected = -1; +this.stackSelected = false; +this.bsSelected = null; +this.viewData = null; +this.reversePlot = false; +this.nSplit = 1; +this.yStackOffsetPercent = 0; +this.showAllStacked = true; +this.viewList = null; +this.imageView = null; +this.pd = null; +this.sticky2Dcursor = false; +this.nSpectra = 0; +this.fracX = 1; +this.fracY = 1; +this.fX0 = 0; +this.fY0 = 0; +this.zoomBox1D = null; +this.zoomBox2D = null; +this.pin1Dx0 = null; +this.pin1Dx1 = null; +this.pin1Dy0 = null; +this.pin1Dy1 = null; +this.pin1Dx01 = null; +this.pin1Dy01 = null; +this.pin2Dx0 = null; +this.pin2Dx1 = null; +this.pin2Dy0 = null; +this.pin2Dy1 = null; +this.pin2Dx01 = null; +this.pin2Dy01 = null; +this.cur2Dx0 = null; +this.cur2Dx1 = null; +this.cur1D2x1 = null; +this.cur1D2x2 = null; +this.cur2Dy = null; +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.xVArrows = 0; +this.xHArrows = 0; +this.yHArrows = 0; +this.xPixel00 = 0; +this.yPixel00 = 0; +this.xPixel11 = 0; +this.yPixel11 = 0; +this.yPixel000 = 0; +this.xPixels = 0; +this.yPixels = 0; +this.xPixel10 = 0; +this.xPixels0 = 0; +this.allowStackedYScale = true; +this.drawXAxisLeftToRight = false; +this.xAxisLeftToRight = true; +this.iPreviousSpectrumClicked = -1; +this.$haveSelectedSpectrum = false; +this.zoomEnabled = false; +this.currentZoomIndex = 0; +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +this.height = 0; +this.width = 0; +this.right = 0; +this.top = 0; +this.left = 0; +this.bottom = 0; +this.piMouseOver = null; +this.coordTemp = null; +this.FONT_PLAIN = 0; +this.FONT_BOLD = 1; +this.FONT_ITALIC = 2; +this.is2DSpectrum = false; +this.selectedMeasurement = null; +this.selectedIntegral = null; +this.lastXMax = NaN; +this.lastSpecClicked = -1; +this.inPlotMove = false; +this.xPixelMovedTo = -1; +this.xPixelMovedTo2 = -1; +this.yValueMovedTo = 0; +this.xValueMovedTo = 0; +this.haveLeftRightArrows = false; +this.xPixelPlot1 = 0; +this.xPixelPlot0 = 0; +this.yPixelPlot0 = 0; +this.yPixelPlot1 = 0; +this.nextClickForSetPeak = null; +this.closerX = 0; +this.closerY = 0; +this.splitterX = 0; +this.splitterY = 0; +this.mapX = null; +if (!Clazz_isClassDefined("JSV.common.GraphSet.Highlight")) { +JSV.common.GraphSet.$GraphSet$Highlight$ (); +} +this.widgetsAreSet = true; +this.lastIntDragX = 0; +this.nextClickMode = 0; +this.dialogs = null; +this.aIntegrationRatios = null; +this.jsvp = null; +this.image2D = null; +this.plotColors = null; +this.g2d = null; +this.gMain = null; +this.COLOR_GREY = -3; +this.COLOR_BLACK = -2; +this.COLOR_INTEGRAL = -1; +Clazz_instantialize(this, arguments);}, JSV.common, "GraphSet", null, JSV.common.XYScaleConverter); +Clazz_prepareFields (c$, function(){ +this.highlights = new JU.Lst(); +this.spectra = new JU.Lst(); +this.graphsTemp = new JU.Lst(); +this.bsSelected = new JU.BS(); +this.coordTemp = new JSV.common.Coordinate(); +this.mapX = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(pd){ +this.pd = pd; +this.jsvp = pd.jsvp; +this.g2d = pd.g2d; +}, "JSV.common.PanelData"); +Clazz_defineMethod(c$, "setSpectrumMovedTo", +function(i){ +return this.iSpectrumMovedTo = i; +}, "~N"); +Clazz_defineMethod(c$, "setSpectrumClicked", +function(i){ +this.stackSelected = this.showAllStacked; +if (i < 0 || this.iSpectrumClicked != i) { +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +}this.iSpectrumClicked = this.setSpectrumSelected(this.setSpectrumMovedTo(i)); +}, "~N"); +Clazz_defineMethod(c$, "setSpectrumSelected", +function(i){ +var isNew = (i != this.iSpectrumSelected); +this.iSpectrumSelected = i; +if (isNew) { +this.getCurrentView(); +}return this.iSpectrumSelected; +}, "~N"); +Clazz_defineMethod(c$, "closeDialogsExcept", +function(type){ +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (ad.isDialog() && (type === JSV.common.Annotation.AType.NONE || ad.getAType() !== type)) (ad).setVisible(false); +} +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "dispose", +function(){ +this.spectra = null; +this.viewData = null; +this.viewList = null; +this.annotations = null; +this.lastAnnotation = null; +this.pendingMeasurement = null; +this.imageView = null; +this.graphsTemp = null; +this.widgets = null; +this.disposeImage(); +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (ad.isDialog()) (ad).dispose(); +} +this.dialogs = null; +}); +Clazz_defineMethod(c$, "isDrawNoSpectra", +function(){ +return (this.iSpectrumSelected == -2147483648); +}); +Clazz_defineMethod(c$, "getFixedSelectedSpectrumIndex", +function(){ +return Math.max(this.iSpectrumSelected, 0); +}); +Clazz_defineMethod(c$, "getSpectrum", +function(){ +return this.getSpectrumAt(this.getFixedSelectedSpectrumIndex()).getCurrentSubSpectrum(); +}); +Clazz_defineMethod(c$, "getSpectrumAt", +function(index){ +return this.spectra.get(index); +}, "~N"); +Clazz_defineMethod(c$, "getSpectrumIndex", +function(spec){ +for (var i = this.spectra.size(); --i >= 0; ) if (this.spectra.get(i) === spec) return i; + +return -1; +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "addSpec", +function(spec){ +this.spectra.addLast(spec); +this.nSpectra++; +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "splitStack", +function(doSplit){ +if (doSplit && this.isSplittable) { +this.nSplit = this.nSpectra; +this.showAllStacked = false; +this.setSpectrumClicked(this.iSpectrumSelected); +this.pd.currentSplitPoint = this.iSpectrumSelected; +} else { +this.nSplit = 1; +this.showAllStacked = this.allowStacking && !doSplit; +this.setSpectrumClicked(this.iSpectrumSelected); +}this.stackSelected = false; +JSV.common.GraphSet.setFractionalPositions(this.pd, this.pd.graphSets, JSV.common.PanelData.LinkMode.NONE); +this.pd.setTaintedAll(); +}, "~B"); +Clazz_defineMethod(c$, "setPositionForFrame", +function(iSplit){ +if (iSplit < 0) iSplit = 0; +var marginalHeight = this.height - 50; +this.xPixel00 = Clazz_doubleToInt(this.width * this.fX0); +this.xPixel11 = Clazz_doubleToInt(this.xPixel00 + this.width * this.fracX - 1); +this.xHArrows = this.xPixel00 + 25; +this.xVArrows = this.xPixel11 - Clazz_doubleToInt(this.right / 2); +this.xPixel0 = this.xPixel00 + Clazz_doubleToInt(this.left * (1 - this.fX0)); +this.xPixel10 = this.xPixel1 = this.xPixel11 - this.right; +this.xPixels0 = this.xPixels = this.xPixel1 - this.xPixel0 + 1; +this.yPixel000 = (this.fY0 == 0 ? 25 : 0) + Clazz_doubleToInt(this.height * this.fY0); +this.yPixel00 = this.yPixel000 + Clazz_doubleToInt(marginalHeight * this.fracY * iSplit); +this.yPixel11 = this.yPixel00 + Clazz_doubleToInt(marginalHeight * this.fracY) - 1; +this.yHArrows = this.yPixel11 - 12; +this.yPixel0 = this.yPixel00 + Clazz_doubleToInt(this.top / 2); +this.yPixel1 = this.yPixel11 - Clazz_doubleToInt(this.bottom / 2); +this.yPixels = this.yPixel1 - this.yPixel0 + 1; +if (this.imageView != null && this.is2DSpectrum) { +this.setImageWindow(); +if (this.pd.display1D) { +var widthRatio = (this.pd.display1D ? 1.0 * (this.xPixels0 - this.imageView.xPixels) / this.xPixels0 : 1); +this.xPixels = Clazz_doubleToInt(Math.floor(widthRatio * this.xPixels0 * 0.8)); +this.xPixel1 = this.xPixel0 + this.xPixels - 1; +} else { +this.xPixels = 0; +this.xPixel1 = this.imageView.xPixel0 - 30; +}}}, "~N"); +Clazz_defineMethod(c$, "hasPoint", +function(xPixel, yPixel){ +return (xPixel >= this.xPixel00 && xPixel <= this.xPixel11 && yPixel >= this.yPixel000 && yPixel <= this.yPixel11 * this.nSplit); +}, "~N,~N"); +Clazz_defineMethod(c$, "isInPlotRegion", +function(xPixel, yPixel){ +return (xPixel >= this.xPixel0 && xPixel <= this.xPixel1 && yPixel >= this.yPixel0 && yPixel <= this.yPixel1); +}, "~N,~N"); +Clazz_defineMethod(c$, "getSplitPoint", +function(yPixel){ +return Math.max(0, Math.min((Clazz_doubleToInt((yPixel - this.yPixel000) / (this.yPixel11 - this.yPixel00))), this.nSplit - 1)); +}, "~N"); +Clazz_defineMethod(c$, "isSplitWidget", +function(xPixel, yPixel){ +return this.isFrameBox(xPixel, yPixel, this.splitterX, this.splitterY); +}, "~N,~N"); +Clazz_defineMethod(c$, "isCloserWidget", +function(xPixel, yPixel){ +return this.isFrameBox(xPixel, yPixel, this.closerX, this.closerY); +}, "~N,~N"); +Clazz_defineMethod(c$, "initGraphSet", +function(startIndex, endIndex){ +if (JSV.common.GraphSet.veryLightGrey == null) JSV.common.GraphSet.veryLightGrey = this.g2d.getColor3(200, 200, 200); +this.setPlotColors(JSV.common.ColorParameters.defaultPlotColors); +this.xAxisLeftToRight = this.getSpectrumAt(0).shouldDisplayXAxisIncreasing(); +this.setDrawXAxis(); +var startIndices = Clazz_newIntArray (this.nSpectra, 0); +var endIndices = Clazz_newIntArray (this.nSpectra, 0); +this.bsSelected.setBits(0, this.nSpectra); +this.allowStackedYScale = true; +if (endIndex <= 0) endIndex = 2147483647; +this.isSplittable = (this.nSpectra > 1); +this.allowStacking = (this.spectra.get(0).isStackable()); +this.showAllStacked = this.allowStacking && (this.nSpectra > 1); +for (var i = 0; i < this.nSpectra; i++) { +var iLast = this.spectra.get(i).getXYCoords().length - 1; +startIndices[i] = JSV.common.Coordinate.intoRange(startIndex, 0, iLast); +endIndices[i] = JSV.common.Coordinate.intoRange(endIndex, 0, iLast); +this.allowStackedYScale = new Boolean (this.allowStackedYScale & (this.spectra.get(i).getYUnits().equals(this.spectra.get(0).getYUnits()) && this.spectra.get(i).getUserYFactor() == this.spectra.get(0).getUserYFactor())).valueOf(); +} +this.getView(0, 0, 0, 0, startIndices, endIndices, null, null); +this.viewList = new JU.Lst(); +this.viewList.addLast(this.viewData); +}, "~N,~N"); +Clazz_defineMethod(c$, "getView", +function(x1, x2, y1, y2, startIndices, endIndices, viewScales, yScales){ +var graphs = (this.graphsTemp.size() == 0 ? this.spectra : this.graphsTemp); +var subspecs = this.getSpectrumAt(0).getSubSpectra(); +var dontUseSubspecs = (subspecs == null || subspecs.size() == 2 && subspecs.get(1).isImaginary()); +var is2D = !this.getSpectrumAt(0).is1D(); +var useFirstSubSpecOnly = false; +if (is2D && useFirstSubSpecOnly || dontUseSubspecs && y1 == y2) { +graphs = this.spectra; +} else if (y1 == y2) { +this.viewData = new JSV.common.ViewData(subspecs, y1, y2, this.getSpectrum().isContinuous()); +graphs = null; +}if (graphs != null) { +this.viewData = new JSV.common.ViewData(graphs, y1, y2, startIndices, endIndices, this.getSpectrumAt(0).isContinuous(), is2D); +if (x1 != x2) this.getScale().setXRange(x1, x2); +}if (viewScales != null) { +JSV.common.ScaleData.copyScaleFactors(viewScales, this.viewData.getScaleData()); +if (yScales != null) JSV.common.ScaleData.copyYScales(yScales, this.viewData.getScaleData()); +this.getCurrentView(); +}}, "~N,~N,~N,~N,~A,~A,~A,~A"); +Clazz_defineMethod(c$, "isNearby", +function(a1, a2, c, range){ +var x = a1.getXVal(); +var xp1 = c.toPixelX(x); +var yp1 = this.toPixelY(a1.getYVal()); +x = a2.getXVal(); +var xp2 = c.toPixelX(x); +var yp2 = this.toPixelY(a2.getYVal()); +return (Math.abs(xp1 - xp2) + Math.abs(yp1 - yp2) < range); +}, "JSV.common.Coordinate,JSV.common.Coordinate,JSV.common.XYScaleConverter,~N"); +Clazz_defineMethod(c$, "setReversePlot", +function(val){ +this.reversePlot = val; +if (this.reversePlot) this.closeDialogsExcept(JSV.common.Annotation.AType.NONE); +this.setDrawXAxis(); +}, "~B"); +Clazz_defineMethod(c$, "setDrawXAxis", +function(){ +this.drawXAxisLeftToRight = new Boolean (this.xAxisLeftToRight ^ this.reversePlot).valueOf(); +for (var i = 0; i < this.spectra.size(); i++) (this.spectra.get(i)).setExportXAxisDirection(this.drawXAxisLeftToRight); + +}); +Clazz_defineMethod(c$, "isInTopBar", +function(xPixel, yPixel){ +return (xPixel == this.fixX(xPixel) && yPixel > this.pin1Dx0.yPixel0 - 2 && yPixel < this.pin1Dx0.yPixel1); +}, "~N,~N"); +Clazz_defineMethod(c$, "isInTopBar2D", +function(xPixel, yPixel){ +return (this.imageView != null && xPixel == this.imageView.fixX(xPixel) && yPixel > this.pin2Dx0.yPixel0 - 2 && yPixel < this.pin2Dx0.yPixel1); +}, "~N,~N"); +Clazz_defineMethod(c$, "isInRightBar", +function(xPixel, yPixel){ +return (yPixel == this.fixY(yPixel) && xPixel > this.pin1Dy0.xPixel1 && xPixel < this.pin1Dy0.xPixel0 + 2); +}, "~N,~N"); +Clazz_defineMethod(c$, "isInRightBar2D", +function(xPixel, yPixel){ +return (this.imageView != null && yPixel == this.fixY(yPixel) && xPixel > this.pin2Dy0.xPixel1 && xPixel < this.pin2Dy0.xPixel0 + 2); +}, "~N,~N"); +Clazz_defineMethod(c$, "toX0", +function(xPixel){ +return this.viewList.get(0).getScale().toX0(this.fixX(xPixel), this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz_defineMethod(c$, "toY0", +function(yPixel){ +return this.viewList.get(0).getScale().toY0(this.fixY(yPixel), this.yPixel0, this.yPixel1); +}, "~N"); +Clazz_overrideMethod(c$, "toX", +function(xPixel){ +if (this.imageView != null && this.imageView.isXWithinRange(xPixel)) return this.imageView.toX(xPixel); +return this.getScale().toX(this.fixX(xPixel), this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz_overrideMethod(c$, "toY", +function(yPixel){ +return this.getScale().toY(yPixel, this.yPixel0); +}, "~N"); +Clazz_defineMethod(c$, "toPixelX", +function(dx){ +return this.getScale().toPixelX(dx, this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz_defineMethod(c$, "toPixelY", +function(yVal){ +return this.getScale().toPixelY(yVal, this.yPixel1); +}, "~N"); +Clazz_defineMethod(c$, "toPixelX0", +function(x){ +return this.viewList.get(0).getScale().toPixelX0(x, this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz_defineMethod(c$, "toPixelY0", +function(y){ +return this.fixY(this.viewList.get(0).getScale().toPixelY0(y, this.yPixel0, this.yPixel1)); +}, "~N"); +Clazz_defineMethod(c$, "fixX", +function(xPixel){ +return JSV.common.Coordinate.intoRange(xPixel, this.xPixel0, this.xPixel1); +}, "~N"); +Clazz_defineMethod(c$, "fixY", +function(yPixel){ +return JSV.common.Coordinate.intoRange(yPixel, this.yPixel0, this.yPixel1); +}, "~N"); +Clazz_defineMethod(c$, "getXPixel0", +function(){ +return this.xPixel0; +}); +Clazz_defineMethod(c$, "getXPixels", +function(){ +return this.xPixels; +}); +Clazz_overrideMethod(c$, "getYPixels", +function(){ +return this.yPixels; +}); +Clazz_defineMethod(c$, "getScale", +function(){ +return this.viewData.getScale(); +}); +Clazz_defineMethod(c$, "toPixelYint", +function(yVal){ +return this.yPixel1 - Clazz_doubleToInt(Double.isNaN(yVal) ? -2147483648 : this.yPixels * yVal); +}, "~N"); +Clazz_defineMethod(c$, "findAnnotation2D", +function(xy){ +for (var i = this.annotations.size(); --i >= 0; ) { +var a = this.annotations.get(i); +if (this.isNearby(a, xy, this.imageView, 10)) return a; +} +return null; +}, "JSV.common.Coordinate"); +Clazz_defineMethod(c$, "addAnnotation", +function(annotation, isToggle){ +if (this.annotations == null) this.annotations = new JU.Lst(); +var removed = false; +for (var i = this.annotations.size(); --i >= 0; ) if (annotation.is2D ? this.isNearby(this.annotations.get(i), annotation, this.imageView, 10) : annotation.equals(this.annotations.get(i))) { +removed = true; +this.annotations.removeItemAt(i); +} +if (annotation.text.length > 0 && (!removed || !isToggle)) this.annotations.addLast(annotation); +}, "JSV.common.Annotation,~B"); +Clazz_defineMethod(c$, "setImageWindow", +function(){ +this.imageView.setPixelWidthHeight(Clazz_doubleToInt((this.pd.display1D ? 0.6 : 1) * this.xPixels0), this.yPixels); +this.imageView.setXY0(this.getSpectrumAt(0), Clazz_doubleToInt(Math.floor(this.xPixel10 - this.imageView.xPixels)), this.yPixel0); +}); +Clazz_defineMethod(c$, "findNearestMaxMin", +function(){ +if (this.nSpectra > 1 && this.iSpectrumClicked < 0) return false; +this.xValueMovedTo = this.getSpectrum().findXForPeakNearest(this.xValueMovedTo); +this.setXPixelMovedTo(this.xValueMovedTo, 1.7976931348623157E308, 0, 0); +return !Double.isNaN(this.xValueMovedTo); +}); +Clazz_defineMethod(c$, "setXPixelMovedTo", +function(x1, x2, xPixel1, xPixel2){ +if (x1 == 1.7976931348623157E308 && x2 == 1.7976931348623157E308) { +this.xPixelMovedTo = xPixel1; +this.xPixelMovedTo2 = xPixel2; +if (this.isLinked && this.sticky2Dcursor) { +this.pd.setlinkedXMove(this, this.toX(this.xPixelMovedTo), false); +}return; +}if (x1 != 1.7976931348623157E308) { +this.xPixelMovedTo = this.toPixelX(x1); +if (this.fixX(this.xPixelMovedTo) != this.xPixelMovedTo) this.xPixelMovedTo = -1; +this.xPixelMovedTo2 = -1; +if (x1 != 1e10) this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex()); +}if (x2 != 1.7976931348623157E308) { +this.xPixelMovedTo2 = this.toPixelX(x2); +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "processPendingMeasurement", +function(xPixel, yPixel, clickCount){ +if (!this.isInPlotRegion(xPixel, yPixel) || this.is2dClick(xPixel, yPixel)) { +this.pendingMeasurement = null; +return; +}var x = this.toX(xPixel); +var y = this.toY(yPixel); +var x0 = x; +var m; +switch (clickCount) { +case 0: +this.pendingMeasurement.setPt2(this.toX(xPixel), this.toY(yPixel)); +break; +case 3: +case 2: +if (this.iSpectrumClicked < 0) return; +var spec = this.spectra.get(this.iSpectrumClicked); +this.setScale(this.iSpectrumClicked); +if (clickCount == 3) { +} else { +m = this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 1); +if (m != null) { +x = m.getXVal(); +y = m.getYVal(); +} else if ((m = this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 2)) != null) { +x = m.getXVal2(); +y = m.getYVal2(); +} else { +x = this.getNearestPeak(spec, x, y); +}}this.pendingMeasurement = new JSV.common.Measurement().setM1(x, y, spec); +this.pendingMeasurement.setPt2(x0, y); +this.pd.setTaintedAll(); +this.pd.repaint(); +break; +case 1: +case -2: +case -3: +var isOK = (this.pendingMeasurement != null && this.isVisible(this.getDialog(JSV.common.Annotation.AType.Measurements, -1))); +while (isOK) { +this.setScale(this.getSpectrumIndex(this.pendingMeasurement.spec)); +if (clickCount != 3) { +if (!this.findNearestMaxMin()) { +isOK = false; +break; +}xPixel = this.xPixelMovedTo; +}x = this.toX(xPixel); +y = this.toY(yPixel); +this.pendingMeasurement.setPt2(x, y); +if (this.pendingMeasurement.text.length == 0) { +isOK = false; +break; +}this.setMeasurement(this.pendingMeasurement); +if (clickCount != 1) { +isOK = false; +break; +}this.setSpectrumClicked(this.getSpectrumIndex(this.pendingMeasurement.spec)); +this.pendingMeasurement = new JSV.common.Measurement().setM1(x, y, this.pendingMeasurement.spec); +break; +} +if (!isOK) this.pendingMeasurement = null; +this.pd.setTaintedAll(); +this.pd.repaint(); +break; +case 5: +if (this.findNearestMaxMin()) { +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (Double.isNaN(this.lastXMax) || this.lastSpecClicked != iSpec || this.pendingMeasurement == null) { +this.lastXMax = this.xValueMovedTo; +this.lastSpecClicked = iSpec; +this.pendingMeasurement = new JSV.common.Measurement().setM1(this.xValueMovedTo, this.yValueMovedTo, this.spectra.get(iSpec)); +} else { +this.pendingMeasurement.setPt2(this.xValueMovedTo, this.yValueMovedTo); +if (this.pendingMeasurement.text.length > 0) this.setMeasurement(this.pendingMeasurement); +this.pendingMeasurement = null; +this.lastXMax = NaN; +}} else { +this.lastXMax = NaN; +}break; +} +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "checkIntegralNormalizationClick", +function(xPixel, yPixel){ +if (this.selectedSpectrumIntegrals == null) return false; +var integral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, -5); +if (integral == null) return false; +this.selectedIntegral = integral; +this.pd.normalizeIntegral(); +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +this.setSpectrumClicked(this.getSpectrumIndex(integral.spec)); +return true; +}, "~N,~N"); +Clazz_defineMethod(c$, "getNearestPeak", +function(spec, x, y){ +var x0 = JSV.common.Coordinate.getNearestXWithYAbove(spec.getXYCoords(), x, y, spec.isInverted(), false); +var x1 = JSV.common.Coordinate.getNearestXWithYAbove(spec.getXYCoords(), x, y, spec.isInverted(), true); +return (Double.isNaN(x0) ? x1 : Double.isNaN(x1) ? x0 : Math.abs(x0 - x) < Math.abs(x1 - x) ? x0 : x1); +}, "JSV.common.Spectrum,~N,~N"); +Clazz_defineMethod(c$, "findMeasurement", +function(measurements, xPixel, yPixel, iPt){ +if (measurements == null || measurements.size() == 0) return null; +if (iPt == 0) { +var m = this.findMeasurement(measurements, xPixel, yPixel, -1); +if (m != null || Clazz_instanceOf(measurements.get(0),"JSV.common.Integral")) return m; +return this.findMeasurement(measurements, xPixel, yPixel, -2); +}for (var i = measurements.size(); --i >= 0; ) { +var m = measurements.get(i); +var x1; +var x2; +var y1; +var y2; +if (Clazz_instanceOf(m,"JSV.common.Integral")) { +x1 = x2 = this.toPixelX(m.getXVal2()); +y1 = this.toPixelYint(m.getYVal()); +y2 = this.toPixelYint(m.getYVal2()); +} else { +x1 = this.toPixelX(m.getXVal()); +x2 = this.toPixelX(m.getXVal2()); +y1 = y2 = (iPt == -2 ? this.yPixel1 - 2 : this.toPixelY(m.getYVal())); +}switch (iPt) { +case 1: +if (Math.abs(xPixel - x1) + Math.abs(yPixel - y1) < 4) return m; +break; +case 2: +if (Math.abs(xPixel - x2) + Math.abs(yPixel - y2) < 4) return m; +break; +case -5: +y1 = y2 = Clazz_doubleToInt((y1 + y2) / 2); +x2 = x1 + 20; +default: +case -1: +case -2: +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x2, y2)) return m; +break; +} +} +return null; +}, "JSV.common.MeasurementData,~N,~N,~N"); +Clazz_defineMethod(c$, "setMeasurement", +function(m){ +var iSpec = this.getSpectrumIndex(m.spec); +var ad = this.getDialog(JSV.common.Annotation.AType.Measurements, iSpec); +if (ad == null) this.addDialog(iSpec, JSV.common.Annotation.AType.Measurements, ad = new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements, m.spec)); +ad.getData().addLast(m.copyM()); +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}, "JSV.common.Measurement"); +Clazz_defineMethod(c$, "checkArrowUpDownClick", +function(xPixel, yPixel){ +var ok = false; +var f = (this.isArrowClick(xPixel, yPixel, 3) ? JSV.common.GraphSet.RT2 : this.isArrowClick(xPixel, yPixel, 4) ? 1 / JSV.common.GraphSet.RT2 : 0); +if (f != 0) { +if (this.nSplit > 1) this.setSpectrumSelected(this.iSpectrumMovedTo); +if ((this.nSpectra == 1 || this.iSpectrumSelected >= 0) && this.spectra.get(this.getFixedSelectedSpectrumIndex()).isTransmittance()) f = 1 / f; +this.viewData.scaleSpectrum(this.imageView == null ? this.iSpectrumSelected : -2, f); +ok = true; +} else if (this.isArrowClick(xPixel, yPixel, -1)) { +this.resetViewCompletely(); +ok = true; +}if (ok) { +if (this.imageView != null) { +this.update2dImage(false); +this.resetPinsFromView(); +}this.pd.setTaintedAll(); +}return ok; +}, "~N,~N"); +Clazz_defineMethod(c$, "resetViewCompletely", +function(){ +this.clearViews(); +if (this.showAllStacked && !this.stackSelected) this.closeDialogsExcept(JSV.common.Annotation.AType.NONE); +this.viewData.resetScaleFactors(); +this.updateDialogs(); +}); +Clazz_defineMethod(c$, "checkArrowLeftRightClick", +function(xPixel, yPixel){ +if (this.haveLeftRightArrows) { +var dx = (this.isArrowClick(xPixel, yPixel, 1) ? -1 : this.isArrowClick(xPixel, yPixel, 2) ? 1 : 0); +if (dx != 0) { +var i = this.iSpectrumSelected + dx; +if (i < 0) i = this.nSpectra - 1; +this.setSpectrumClicked(i % this.nSpectra); +return true; +}if (this.isArrowClick(xPixel, yPixel, 0)) { +if (this.showAllStacked) { +this.showAllStacked = false; +this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex()); +return true; +}this.showAllStacked = this.allowStacking; +this.setSpectrumSelected(-1); +this.stackSelected = false; +}}return false; +}, "~N,~N"); +Clazz_defineMethod(c$, "isArrowClick", +function(xPixel, yPixel, type){ +var pt; +switch (type) { +case 3: +case 4: +case -1: +pt = Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) + (type == 3 ? -1 : type == 4 ? 1 : 0) * 15; +return (Math.abs(this.xVArrows - xPixel) < 10 && Math.abs(pt - yPixel) < 10); +case 1: +case 2: +case 0: +pt = this.xHArrows + (type == 1 ? -1 : type == 2 ? 1 : 0) * 15; +return (Math.abs(pt - xPixel) < 10 && Math.abs(this.yHArrows - yPixel) < 10); +} +return false; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setWidgetValueByUser", +function(pw){ +var sval; +if (pw === this.cur2Dy) sval = "" + this.imageView.toSubspectrumIndex(pw.yPixel0); + else if (pw === this.pin1Dx01) sval = "" + Math.min(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()) + " - " + Math.max(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()); + else if (pw === this.pin1Dy01) sval = "" + Math.min(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()) + " - " + Math.max(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()); + else if (pw === this.pin2Dx01) sval = "" + Math.min(this.pin2Dx0.getXVal(), this.pin2Dx1.getXVal()) + " - " + Math.max(this.pin2Dx0.getXVal(), this.pin2Dx1.getXVal()); + else if (pw === this.pin2Dy01) sval = "" + Clazz_doubleToInt(Math.min(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())) + " - " + Clazz_doubleToInt(Math.max(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())); + else sval = "" + pw.getValue(); +sval = this.pd.getInput("New value?", "Set Slider", sval); +if (sval == null) return; +sval = sval.trim(); +try { +if (pw === this.pin1Dx01 || pw === this.pin1Dy01 || pw === this.pin2Dx01 || pw === this.pin2Dy01) { +var pt = sval.indexOf("-", 1); +if (pt < 0) return; +var val1 = Double.$valueOf(sval.substring(0, pt)).doubleValue(); +var val2 = Double.$valueOf(sval.substring(pt + 1)).doubleValue(); +if (pw === this.pin1Dx01) { +this.doZoom(val1, this.pin1Dy0.getYVal(), val2, this.pin1Dy1.getYVal(), true, false, false, true, true); +} else if (pw === this.pin1Dy01) { +this.doZoom(this.pin1Dx0.getXVal(), val1, this.pin1Dx1.getXVal(), val2, this.imageView == null, this.imageView == null, false, false, true); +} else if (pw === this.pin2Dx01) { +this.imageView.setView0(this.imageView.toPixelX0(val1), this.pin2Dy0.yPixel0, this.imageView.toPixelX0(val2), this.pin2Dy1.yPixel0); +this.doZoom(val1, this.pin1Dy0.getYVal(), val2, this.pin1Dy1.getYVal(), false, false, false, true, true); +} else if (pw === this.pin2Dy01) { +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.toPixelY0(val1), this.pin2Dx1.xPixel0, this.imageView.toPixelY0(val2)); +this.doZoom(this.imageView.toX(this.imageView.xPixel0), this.getScale().minY, this.imageView.toX(this.imageView.xPixel0 + this.imageView.xPixels - 1), this.getScale().maxY, false, false, false, false, true); +}} else { +var val = Double.$valueOf(sval).doubleValue(); +if (pw.isXtype) { +var val2 = (pw === this.pin1Dx0 || pw === this.cur2Dx0 || pw === this.pin2Dx0 ? this.pin1Dx1.getXVal() : this.pin1Dx0.getXVal()); +this.doZoom(val, 0, val2, 0, !pw.is2D, false, false, true, true); +} else if (pw === this.cur2Dy) { +this.setCurrentSubSpectrum(Clazz_doubleToInt(val)); +} else if (pw === this.pin2Dy0 || pw === this.pin2Dy1) { +var val2 = (pw === this.pin2Dy0 ? this.pin2Dy1.yPixel0 : this.pin2Dy0.yPixel0); +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.subIndexToPixelY(Clazz_doubleToInt(val)), this.pin2Dx1.xPixel0, val2); +} else { +var val2 = (pw === this.pin1Dy0 ? this.pin1Dy1.getYVal() : this.pin1Dy0.getYVal()); +this.doZoom(this.pin1Dx0.getXVal(), val, this.pin1Dx1.getXVal(), val2, this.imageView == null, this.imageView == null, false, false, true); +}}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JSV.common.PlotWidget"); +Clazz_defineMethod(c$, "removeAllHighlights", +function(spec){ +if (spec == null) this.highlights.clear(); + else for (var i = this.highlights.size(); --i >= 0; ) if (this.highlights.get(i).spectrum === spec) this.highlights.removeItemAt(i); + +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setCoordClicked", +function(xPixel, x, y){ +if (y == 0) this.nextClickForSetPeak = null; +if (Double.isNaN(x)) { +this.pd.coordClicked = null; +this.pd.coordsClicked = null; +return null; +}this.pd.coordClicked = new JSV.common.Coordinate().set(this.lastClickX = x, y); +this.pd.coordsClicked = this.getSpectrum().getXYCoords(); +this.pd.xPixelClicked = (this.lastPixelX = xPixel); +return this.pd.coordClicked; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setWidgets", +function(needNewPins, subIndex, doDraw1DObjects){ +if (needNewPins || this.pin1Dx0 == null) { +if (this.zoomBox1D == null) this.newPins(); + else this.resetPinPositions(); +}this.setDerivedPins(subIndex); +this.setPinSliderPositions(doDraw1DObjects); +}, "~B,~N,~B"); +Clazz_defineMethod(c$, "newPins", +function(){ +this.zoomBox1D = new JSV.common.PlotWidget("zoomBox1D"); +this.pin1Dx0 = new JSV.common.PlotWidget("pin1Dx0"); +this.pin1Dx1 = new JSV.common.PlotWidget("pin1Dx1"); +this.pin1Dy0 = new JSV.common.PlotWidget("pin1Dy0"); +this.pin1Dy1 = new JSV.common.PlotWidget("pin1Dy1"); +this.pin1Dx01 = new JSV.common.PlotWidget("pin1Dx01"); +this.pin1Dy01 = new JSV.common.PlotWidget("pin1Dy01"); +this.cur1D2x1 = new JSV.common.PlotWidget("cur1D2x1"); +this.cur1D2x1.color = JSV.common.ScriptToken.PEAKTABCOLOR; +this.cur1D2x2 = new JSV.common.PlotWidget("cur1D2x2"); +this.cur1D2x2.color = JSV.common.ScriptToken.PEAKTABCOLOR; +if (this.imageView != null) { +this.zoomBox2D = new JSV.common.PlotWidget("zoomBox2D"); +this.pin2Dx0 = new JSV.common.PlotWidget("pin2Dx0"); +this.pin2Dx1 = new JSV.common.PlotWidget("pin2Dx1"); +this.pin2Dy0 = new JSV.common.PlotWidget("pin2Dy0"); +this.pin2Dy1 = new JSV.common.PlotWidget("pin2Dy1"); +this.pin2Dx01 = new JSV.common.PlotWidget("pin2Dx01"); +this.pin2Dy01 = new JSV.common.PlotWidget("pin2Dy01"); +this.cur2Dx0 = new JSV.common.PlotWidget("cur2Dx0"); +this.cur2Dx1 = new JSV.common.PlotWidget("cur2Dx1"); +this.cur2Dy = new JSV.common.PlotWidget("cur2Dy"); +this.pin2Dy0.setY(0, this.imageView.toPixelY0(0)); +var n = this.getSpectrumAt(0).getSubSpectra().size(); +this.pin2Dy1.setY(n, this.imageView.toPixelY0(n)); +}this.setWidgetX(this.pin1Dx0, this.getScale().minX); +this.setWidgetX(this.pin1Dx1, this.getScale().maxX); +this.setWidgetY(this.pin1Dy0, this.getScale().minY); +this.setWidgetY(this.pin1Dy1, this.getScale().maxY); +this.widgets = Clazz_newArray(-1, [this.zoomBox1D, this.zoomBox2D, this.pin1Dx0, this.pin1Dx01, this.pin1Dx1, this.pin1Dy0, this.pin1Dy01, this.pin1Dy1, this.pin2Dx0, this.pin2Dx01, this.pin2Dx1, this.pin2Dy0, this.pin2Dy01, this.pin2Dy1, this.cur2Dx0, this.cur2Dx1, this.cur2Dy, this.cur1D2x1, this.cur1D2x2]); +}); +Clazz_defineMethod(c$, "setWidgetX", +function(pw, x){ +pw.setX(x, this.toPixelX0(x)); +}, "JSV.common.PlotWidget,~N"); +Clazz_defineMethod(c$, "setWidgetY", +function(pw, y){ +pw.setY(y, this.toPixelY0(y)); +}, "JSV.common.PlotWidget,~N"); +Clazz_defineMethod(c$, "resetPinsFromView", +function(){ +if (this.pin1Dx0 == null) return; +this.setWidgetX(this.pin1Dx0, this.getScale().minXOnScale); +this.setWidgetX(this.pin1Dx1, this.getScale().maxXOnScale); +this.setWidgetY(this.pin1Dy0, this.getScale().minYOnScale); +this.setWidgetY(this.pin1Dy1, this.getScale().maxYOnScale); +}); +Clazz_defineMethod(c$, "resetPinPositions", +function(){ +this.resetX(this.pin1Dx0); +this.resetY(this.pin1Dy0); +this.resetY(this.pin1Dy1); +if (this.imageView == null) { +if (this.gs2dLinkedX != null) this.resetX(this.cur1D2x1); +if (this.gs2dLinkedY != null) this.resetX(this.cur1D2x2); +} else { +this.pin2Dy0.setY(this.pin2Dy0.getYVal(), this.imageView.toPixelY0(this.pin2Dy0.getYVal())); +this.pin2Dy1.setY(this.pin2Dy1.getYVal(), this.imageView.toPixelY0(this.pin2Dy1.getYVal())); +}}); +Clazz_defineMethod(c$, "resetX", +function(p){ +this.setWidgetX(p, p.getXVal()); +}, "JSV.common.PlotWidget"); +Clazz_defineMethod(c$, "resetY", +function(p){ +this.setWidgetY(p, p.getYVal()); +}, "JSV.common.PlotWidget"); +Clazz_defineMethod(c$, "setPinSliderPositions", +function(doDraw1DObjects){ +this.pin1Dx0.yPixel0 = this.pin1Dx1.yPixel0 = this.pin1Dx01.yPixel0 = this.yPixel0 - 5; +this.pin1Dx0.yPixel1 = this.pin1Dx1.yPixel1 = this.pin1Dx01.yPixel1 = this.yPixel0; +this.cur1D2x1.yPixel1 = this.cur1D2x2.yPixel1 = this.yPixel0 - 5; +this.cur1D2x1.yPixel0 = this.cur1D2x2.yPixel0 = this.yPixel1 + 6; +if (this.imageView == null) { +this.pin1Dy0.xPixel0 = this.pin1Dy1.xPixel0 = this.pin1Dy01.xPixel0 = this.xPixel1 + 5; +this.pin1Dy0.xPixel1 = this.pin1Dy1.xPixel1 = this.pin1Dy01.xPixel1 = this.xPixel1; +} else { +this.pin1Dy0.xPixel0 = this.pin1Dy1.xPixel0 = this.pin1Dy01.xPixel0 = this.imageView.xPixel1 + 15; +this.pin1Dy0.xPixel1 = this.pin1Dy1.xPixel1 = this.pin1Dy01.xPixel1 = this.imageView.xPixel1 + 10; +this.pin2Dx0.yPixel0 = this.pin2Dx1.yPixel0 = this.pin2Dx01.yPixel0 = this.yPixel0 - 5; +this.pin2Dx0.yPixel1 = this.pin2Dx1.yPixel1 = this.pin2Dx01.yPixel1 = this.yPixel0; +this.pin2Dy0.xPixel0 = this.pin2Dy1.xPixel0 = this.pin2Dy01.xPixel0 = this.imageView.xPixel1 + 5; +this.pin2Dy0.xPixel1 = this.pin2Dy1.xPixel1 = this.pin2Dy01.xPixel1 = this.imageView.xPixel1; +this.cur2Dx0.yPixel0 = this.cur2Dx1.yPixel0 = this.yPixel1 + 6; +this.cur2Dx0.yPixel1 = this.cur2Dx1.yPixel1 = this.yPixel0 - 5; +this.cur2Dx0.yPixel0 = this.cur2Dx1.yPixel0 = this.yPixel1 + 6; +this.cur2Dx1.yPixel1 = this.cur2Dx1.yPixel1 = this.yPixel0 - 5; +this.cur2Dy.xPixel0 = (doDraw1DObjects ? Clazz_doubleToInt((this.xPixel1 + this.imageView.xPixel0) / 2) : this.imageView.xPixel0 - 6); +this.cur2Dy.xPixel1 = this.imageView.xPixel1 + 5; +}}, "~B"); +Clazz_defineMethod(c$, "setDerivedPins", +function(subIndex){ +this.widgetsAreSet = true; +if (this.gs2dLinkedX != null) this.cur1D2x1.setX(this.cur1D2x1.getXVal(), this.toPixelX(this.cur1D2x1.getXVal())); +if (this.gs2dLinkedY != null) this.cur1D2x2.setX(this.cur1D2x2.getXVal(), this.toPixelX(this.cur1D2x2.getXVal())); +this.pin1Dx01.setX(0, Clazz_doubleToInt((this.pin1Dx0.xPixel0 + this.pin1Dx1.xPixel0) / 2)); +this.pin1Dy01.setY(0, Clazz_doubleToInt((this.pin1Dy0.yPixel0 + this.pin1Dy1.yPixel0) / 2)); +this.pin1Dx01.setEnabled(Math.min(this.pin1Dx0.xPixel0, this.pin1Dx1.xPixel0) > this.xPixel0 || Math.max(this.pin1Dx0.xPixel0, this.pin1Dx1.xPixel0) < this.xPixel1); +this.pin1Dy01.setEnabled(Math.min(this.pin1Dy0.yPixel0, this.pin1Dy1.yPixel0) > Math.min(this.toPixelY(this.getScale().minY), this.toPixelY(this.getScale().maxY)) || Math.max(this.pin1Dy0.yPixel0, this.pin1Dy1.yPixel0) < Math.max(this.toPixelY(this.getScale().minY), this.toPixelY(this.getScale().maxY))); +if (this.imageView == null) return; +var x = this.pin1Dx0.getXVal(); +this.cur2Dx0.setX(x, this.imageView.toPixelX(x)); +x = this.pin1Dx1.getXVal(); +this.cur2Dx1.setX(x, this.imageView.toPixelX(x)); +x = this.imageView.toX(this.imageView.xPixel0); +this.pin2Dx0.setX(x, this.imageView.toPixelX0(x)); +x = this.imageView.toX(this.imageView.xPixel1); +this.pin2Dx1.setX(x, this.imageView.toPixelX0(x)); +this.pin2Dx01.setX(0, Clazz_doubleToInt((this.pin2Dx0.xPixel0 + this.pin2Dx1.xPixel0) / 2)); +var y = this.imageView.imageHeight - 1 - this.imageView.yView1; +this.pin2Dy0.setY(y, this.imageView.toPixelY0(y)); +y = this.imageView.imageHeight - 1 - this.imageView.yView2; +this.pin2Dy1.setY(y, this.imageView.toPixelY0(y)); +this.pin2Dy01.setY(0, Clazz_doubleToInt((this.pin2Dy0.yPixel0 + this.pin2Dy1.yPixel0) / 2)); +this.cur2Dy.yPixel0 = this.cur2Dy.yPixel1 = this.imageView.subIndexToPixelY(subIndex); +this.pin2Dx01.setEnabled(Math.min(this.pin2Dx0.xPixel0, this.pin2Dx1.xPixel0) != this.imageView.xPixel0 || Math.max(this.pin2Dx0.xPixel0, this.pin2Dx1.xPixel1) != this.imageView.xPixel1); +this.pin2Dy01.setEnabled(Math.min(this.pin2Dy0.yPixel0, this.pin2Dy1.yPixel0) != this.yPixel0 || Math.max(this.pin2Dy0.yPixel0, this.pin2Dy1.yPixel1) != this.yPixel1); +}, "~N"); +Clazz_defineMethod(c$, "doZoom", +function(initX, initY, finalX, finalY, is1D, is1DY, checkRange, checkLinked, addZoom){ +if (initX == finalX) { +initX = this.getScale().minXOnScale; +finalX = this.getScale().maxXOnScale; +} else if (this.isLinked && checkLinked) this.pd.doZoomLinked(this, initX, finalX, addZoom, checkRange, is1D); +if (initX > finalX) { +var tempX = initX; +initX = finalX; +finalX = tempX; +}if (initY > finalY) { +var tempY = initY; +initY = finalY; +finalY = tempY; +}var is2DGrayScaleChange = (!is1D && this.imageView != null && (this.imageView.minZ != initY || this.imageView.maxZ != finalY)); +if (!this.zoomEnabled && !is2DGrayScaleChange) return; +if (checkRange) { +if (!this.getScale().isInRangeX(initX) && !this.getScale().isInRangeX(finalX)) return; +if (!this.getScale().isInRangeX(initX)) { +initX = this.getScale().minX; +} else if (!this.getScale().isInRangeX(finalX)) { +finalX = this.getScale().maxX; +}} else { +}this.pd.setTaintedAll(); +var viewScales = this.viewData.getScaleData(); +var startIndices = Clazz_newIntArray (this.nSpectra, 0); +var endIndices = Clazz_newIntArray (this.nSpectra, 0); +this.graphsTemp.clear(); +var subspecs = this.getSpectrumAt(0).getSubSpectra(); +var dontUseSubspecs = (subspecs == null || subspecs.size() == 2); +var is2D = !this.getSpectrumAt(0).is1D(); +if (!is2D && !dontUseSubspecs) { +this.graphsTemp.addLast(this.getSpectrum()); +if (!JSV.common.ScaleData.setDataPointIndices(this.graphsTemp, initX, finalX, 3, startIndices, endIndices)) return; +} else { +if (!JSV.common.ScaleData.setDataPointIndices(this.spectra, initX, finalX, 3, startIndices, endIndices)) return; +}var y1 = initY; +var y2 = finalY; +var isXOnly = (y1 == y2); +if (isXOnly) { +var f = (!is2DGrayScaleChange && is1D ? f = this.getScale().spectrumScaleFactor : 1); +if (Math.abs(f - 1) < 0.0001) { +y1 = this.getScale().minYOnScale; +y2 = this.getScale().maxYOnScale; +}}var yScales = null; +if (isXOnly || is1DY) { +this.getCurrentView(); +yScales = this.viewData.getNewScales(this.iSpectrumSelected, isXOnly, y1, y2); +}this.getView(initX, finalX, y1, y2, startIndices, endIndices, viewScales, yScales); +this.setXPixelMovedTo(1E10, 1.7976931348623157E308, 0, 0); +this.setWidgetX(this.pin1Dx0, initX); +this.setWidgetX(this.pin1Dx1, finalX); +this.setWidgetY(this.pin1Dy0, y1); +this.setWidgetY(this.pin1Dy1, y2); +if (this.imageView == null) { +this.updateDialogs(); +} else { +var isub = this.getSpectrumAt(0).getSubIndex(); +var ifix = this.imageView.fixSubIndex(isub); +if (ifix != isub) this.setCurrentSubSpectrum(ifix); +if (is2DGrayScaleChange) this.update2dImage(false); +}if (addZoom) this.addCurrentZoom(); +}, "~N,~N,~N,~N,~B,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "updateDialogs", +function(){ +this.updateDialog(JSV.common.Annotation.AType.PeakList, -1); +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}); +Clazz_defineMethod(c$, "setCurrentSubSpectrum", +function(i){ +var spec0 = this.getSpectrumAt(0); +i = spec0.setCurrentSubSpectrum(i); +if (spec0.isForcedSubset()) this.viewData.setXRangeForSubSpectrum(this.getSpectrum().getXYCoords()); +this.pd.notifySubSpectrumChange(i, this.getSpectrum()); +}, "~N"); +Clazz_defineMethod(c$, "addCurrentZoom", +function(){ +if (this.viewList.size() > this.currentZoomIndex + 1) for (var i = this.viewList.size() - 1; i > this.currentZoomIndex; i--) this.viewList.removeItemAt(i); + +this.viewList.addLast(this.viewData); +this.currentZoomIndex++; +}); +Clazz_defineMethod(c$, "setZoomTo", +function(i){ +this.currentZoomIndex = i; +this.viewData = this.viewList.get(i); +this.resetPinsFromView(); +}, "~N"); +Clazz_defineMethod(c$, "clearViews", +function(){ +if (this.isLinked) { +this.pd.clearLinkViews(this); +}this.setZoom(0, 0, 0, 0); +for (var i = this.viewList.size(); --i >= 1; ) this.viewList.removeItemAt(i); + +}); +Clazz_defineMethod(c$, "drawAll", +function(gMain, gFront, gBack, iSplit, needNewPins, doAll, pointsOnly){ +this.g2d = this.pd.g2d; +this.gMain = gMain; +var spec0 = this.getSpectrumAt(0); +var subIndex = spec0.getSubIndex(); +this.is2DSpectrum = (!spec0.is1D() && (this.isLinked || this.pd.getBoolean(JSV.common.ScriptToken.DISPLAY2D)) && (this.imageView != null || this.get2DImage(spec0))); +if (this.imageView != null && doAll) { +if (this.pd.isPrinting && this.g2d !== this.pd.g2d0) this.g2d.newGrayScaleImage(gMain, this.image2D, this.imageView.imageWidth, this.imageView.imageHeight, this.imageView.getBuffer()); +if (this.is2DSpectrum) this.setPositionForFrame(iSplit); +this.draw2DImage(); +}var iSelected = (this.stackSelected || !this.showAllStacked ? this.iSpectrumSelected : -1); +var doYScale = (!this.showAllStacked || this.nSpectra == 1 || iSelected >= 0); +var doDraw1DObjects = (this.imageView == null || this.pd.display1D); +var n = (iSelected >= 0 ? 1 : 0); +var iSpectrumForScale = this.getFixedSelectedSpectrumIndex(); +if (doDraw1DObjects && doAll) { +this.fillBox(gMain, this.xPixel0, this.yPixel0, this.xPixel1, this.yPixel1, JSV.common.ScriptToken.PLOTAREACOLOR); +if (iSelected < 0) { +doYScale = true; +for (var i = 0; i < this.nSpectra; i++) if (this.doPlot(i, iSplit)) { +if (n++ == 0) continue; +doYScale = new Boolean (doYScale & this.viewData.areYScalesSame(i - 1, i)).valueOf(); +} +}}var iSpecForFrame = (this.nSpectra == 1 ? 0 : !this.showAllStacked ? this.iSpectrumMovedTo : this.iSpectrumSelected); +var g2 = (gBack === gMain ? gFront : gBack); +if (doAll) { +var addCurrentBox = (this.pd.getCurrentGraphSet() === this && !this.isLinked && (!this.isSplittable || (this.nSplit == 1 || this.pd.currentSplitPoint == iSplit))); +var drawUpDownArrows = (this.zoomEnabled && !this.isDrawNoSpectra() && this.pd.isCurrentGraphSet(this) && this.spectra.get(0).isScalable() && (addCurrentBox || this.nSpectra == 1) && (this.nSplit == 1 || this.pd.currentSplitPoint == this.iSpectrumMovedTo)); +var addSplitBox = this.isSplittable; +this.drawFrame(gMain, iSpecForFrame, addCurrentBox, addSplitBox, drawUpDownArrows); +}if (this.pd.isCurrentGraphSet(this) && iSplit == this.pd.currentSplitPoint && (n < 2 || this.iSpectrumSelected >= 0)) this.$haveSelectedSpectrum = true; +this.haveSingleYScale = (this.showAllStacked && this.nSpectra > 1 ? this.allowStackedYScale && doYScale : true); +if (doDraw1DObjects) { +var yOffsetPixels = Clazz_floatToInt(this.yPixels * (this.yStackOffsetPercent / 100)); +this.haveLeftRightArrows = false; +for (var i = 0, offset = 0; i < this.nSpectra; i++) { +if (!this.doPlot(i, iSplit)) continue; +var isGrey = (this.stackSelected && this.iSpectrumSelected >= 0 && this.iSpectrumSelected != i); +var ig = (!this.reversePlot && this.getShowAnnotation(JSV.common.Annotation.AType.Integration, i) && (!this.showAllStacked || this.iSpectrumSelected == i) ? this.getDialog(JSV.common.Annotation.AType.Integration, i).getData() : null); +this.setScale(i); +var spec = this.spectra.get(i); +if (this.nSplit > 1) { +iSpectrumForScale = i; +}var doDrawWidgets = !isGrey && (this.nSplit == 1 || this.showAllStacked || this.iSpectrumSelected == iSplit); +var doDraw1DY = (doDrawWidgets && this.$haveSelectedSpectrum && i == iSpectrumForScale); +if (doDrawWidgets) { +this.resetPinsFromView(); +this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, doDraw1DY, false); +}if (this.haveSingleYScale && i == iSpectrumForScale && doAll) { +this.drawGrid(gMain); +if (this.pd.isPrinting && this.nSplit > 1) this.drawSpectrumSource(gMain, i); +}if (doDrawWidgets) this.drawWidgets(gFront, g2, subIndex, false, doDraw1DObjects, doDraw1DY, true); +if (!this.isDrawNoSpectra() && (this.nSpectra == 1 || this.iSpectrumSelected >= 0) && (this.haveSingleYScale && i == iSpectrumForScale || this.showAllStacked && this.stackSelected && i == this.iSpectrumSelected)) this.drawHighlightsAndPeakTabs(gFront, g2, i); +if (doAll) { +if (n == 1 && this.iSpectrumSelected < 0 || this.iSpectrumSelected == i && this.pd.isCurrentGraphSet(this)) { +if (this.pd.titleOn && !this.pd.titleDrawn) { +this.pd.drawTitle(gMain, this.height, this.width, this.pd.getDrawTitle(this.pd.isPrinting)); +this.pd.titleDrawn = true; +}}if (this.haveSingleYScale && i == iSpectrumForScale) { +if (this.pd.getBoolean(JSV.common.ScriptToken.YSCALEON)) this.drawYScale(gMain, this); +if (this.pd.getBoolean(JSV.common.ScriptToken.YUNITSON)) this.drawYUnits(gMain); +}}var isContinuous = spec.isContinuous(); +var onSpectrum = ((this.nSplit > 1 ? i == this.iSpectrumMovedTo : this.isLinked || i == iSpectrumForScale) && !this.pd.isPrinting && isContinuous); +var hasPendingIntegral = (!isGrey && this.pendingIntegral != null && spec === this.pendingIntegral.spec); +if (doAll || hasPendingIntegral) { +this.drawPlot(hasPendingIntegral && !doAll ? gFront : gMain, i, spec, isContinuous, offset, isGrey, null, onSpectrum, hasPendingIntegral, pointsOnly); +}this.drawIntegration(gFront, i, offset, isGrey, ig, isContinuous, onSpectrum); +this.drawMeasurements(gFront, i); +if (this.pendingMeasurement != null && this.pendingMeasurement.spec === spec) this.drawMeasurement(gFront, this.pendingMeasurement); +if (onSpectrum && this.xPixelMovedTo >= 0) { +this.drawSpectrumPointer(gFront, spec, offset, ig); +}if (this.nSpectra > 1 && this.nSplit == 1 && this.pd.isCurrentGraphSet(this) && doAll) { +this.haveLeftRightArrows = true; +if (!this.pd.isPrinting) { +this.setScale(0); +iSpecForFrame = (this.iSpectrumSelected); +if (this.nSpectra != 2) { +this.setPlotColor(gMain, (iSpecForFrame + this.nSpectra - 1) % this.nSpectra); +this.fillArrow(gMain, 1, this.yHArrows, this.xHArrows - 9, true); +this.setCurrentBoxColor(gMain); +this.fillArrow(gMain, 1, this.yHArrows, this.xHArrows - 9, false); +}if (iSpecForFrame >= 0) { +this.setPlotColor(gMain, iSpecForFrame); +this.fillCircle(gMain, this.xHArrows, this.yHArrows, true); +}this.setCurrentBoxColor(gMain); +this.fillCircle(gMain, this.xHArrows, this.yHArrows, false); +this.setPlotColor(gMain, (iSpecForFrame + 1) % this.nSpectra); +this.fillArrow(gMain, 2, this.yHArrows, this.xHArrows + 9, true); +this.setCurrentBoxColor(gMain); +this.fillArrow(gMain, 2, this.yHArrows, this.xHArrows + 9, false); +}}offset -= yOffsetPixels; +} +if (doAll) { +if (this.pd.getBoolean(JSV.common.ScriptToken.XSCALEON)) this.drawXScale(gMain, this); +if (this.pd.getBoolean(JSV.common.ScriptToken.XUNITSON)) this.drawXUnits(gMain); +}} else { +if (doAll) { +if (this.pd.getBoolean(JSV.common.ScriptToken.XSCALEON)) this.drawXScale(gMain, this.imageView); +if (this.pd.getBoolean(JSV.common.ScriptToken.YSCALEON)) this.drawYScale(gMain, this.imageView); +if (subIndex >= 0) this.draw2DUnits(gMain); +}this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, true, false); +this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, true, true); +this.widgetsAreSet = true; +}if (this.annotations != null) this.drawAnnotations(gFront, this.annotations, null); +}, "~O,~O,~O,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "drawSpectrumSource", +function(g, i){ +this.pd.printFilePath(g, this.pd.thisWidth - this.pd.right, this.yPixel0, this.spectra.get(i).getFilePath()); +}, "~O,~N"); +Clazz_defineMethod(c$, "doPlot", +function(i, iSplit){ +var isGrey = (this.stackSelected && this.iSpectrumSelected >= 0 && this.iSpectrumSelected != i); +var ok = (this.showAllStacked || this.iSpectrumSelected == -1 || this.iSpectrumSelected == i); +return (this.nSplit > 1 ? i == iSplit : ok && (!this.pd.isPrinting || !isGrey)); +}, "~N,~N"); +Clazz_defineMethod(c$, "drawSpectrumPointer", +function(gFront, spec, yOffset, ig){ +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +var iHandle = this.pd.integralShiftMode; +if (ig != null) { +if ((!this.pd.ctrlPressed || this.pd.isIntegralDrag) && !this.isOnSpectrum(this.pd.mouseX, this.pd.mouseY, -1)) { +ig = null; +} else if (iHandle == 0) { +iHandle = this.getShiftMode(this.pd.mouseX, this.pd.mouseY); +if (iHandle == 0) iHandle = 2147483647; +}}var y0 = this.yValueMovedTo; +this.yValueMovedTo = (ig == null ? spec.getYValueAt(this.xValueMovedTo) : ig.getPercentYValueAt(this.xValueMovedTo)); +this.setCoordStr(this.xValueMovedTo, this.yValueMovedTo); +if (iHandle != 0) { +this.setPlotColor(gFront, iHandle == 2147483647 ? -1 : 0); +if (iHandle < 0 || iHandle == 2147483647) { +this.drawHandle(gFront, this.xPixelPlot1, this.yPixelPlot0, 3, false); +}if (iHandle > 0) { +this.drawHandle(gFront, this.xPixelPlot0, this.yPixelPlot1, 3, false); +}if (iHandle != 2147483647) return; +}if (ig != null) this.g2d.setStrokeBold(gFront, true); +if (Double.isNaN(y0) || this.pendingMeasurement != null) { +this.g2d.drawLine(gFront, this.xPixelMovedTo, this.yPixel0, this.xPixelMovedTo, this.yPixel1); +if (this.xPixelMovedTo2 >= 0) this.g2d.drawLine(gFront, this.xPixelMovedTo2, this.yPixel0, this.xPixelMovedTo2, this.yPixel1); +this.yValueMovedTo = NaN; +} else { +var y = (ig == null ? yOffset + this.toPixelY(this.yValueMovedTo) : this.toPixelYint(this.yValueMovedTo / 100)); +if (y == this.fixY(y)) this.g2d.drawLine(gFront, this.xPixelMovedTo, y - 10, this.xPixelMovedTo, y + 10); +}if (ig != null) this.g2d.setStrokeBold(gFront, false); +}, "~O,JSV.common.Spectrum,~N,JSV.common.IntegralData"); +Clazz_defineMethod(c$, "setScale", +function(i){ +this.viewData.setScale(i, this.xPixels, this.yPixels, this.spectra.get(i).isInverted()); +}, "~N"); +Clazz_defineMethod(c$, "draw2DUnits", +function(g){ +var nucleusX = this.getSpectrumAt(0).nucleusX; +var nucleusY = this.getSpectrumAt(0).nucleusY; +this.setColorFromToken(g, JSV.common.ScriptToken.PLOTCOLOR); +this.drawUnits(g, nucleusX, this.imageView.xPixel1 + 5 * this.pd.scalingFactor, this.yPixel1, 1, 1.0); +this.drawUnits(g, nucleusY, this.imageView.xPixel0 - 5 * this.pd.scalingFactor, this.yPixel0, 1, 0); +}, "~O"); +Clazz_defineMethod(c$, "drawPeakTabs", +function(gFront, g2, spec){ +var list = (this.nSpectra == 1 || this.iSpectrumSelected >= 0 ? spec.getPeakList() : null); +if (list != null && list.size() > 0) { +if (this.piMouseOver != null && this.piMouseOver.spectrum === spec && this.pd.isMouseUp()) { +this.g2d.setGraphicsColor(g2, this.g2d.getColor4(240, 240, 240, 140)); +this.drawPeak(g2, this.piMouseOver, 0); +spec.setHighlightedPeak(this.piMouseOver); +} else { +spec.setHighlightedPeak(null); +}this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +for (var i = list.size(); --i >= 0; ) { +var p = list.get(i); +this.drawPeak(gFront, p, p === spec.getSelectedPeak() ? 14 : 7); +} +}}, "~O,~O,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "drawPeak", +function(g, pi, tickSize){ +if (this.pd.isPrinting) return; +var xMin = pi.getXMin(); +var xMax = pi.getXMax(); +if (xMin == xMax) return; +this.drawBar(g, pi, xMin, xMax, null, tickSize); +}, "~O,JSV.common.PeakInfo,~N"); +Clazz_defineMethod(c$, "drawWidgets", +function(gFront, gBack, subIndex, needNewPins, doDraw1DObjects, doDraw1DY, postGrid){ +this.setWidgets(needNewPins, subIndex, doDraw1DObjects); +if (this.pd.isPrinting && (this.imageView == null ? !this.cur1D2Locked : this.sticky2Dcursor)) return; +if (!this.pd.isPrinting && !postGrid) { +if (doDraw1DObjects) { +this.fillBox(gFront, this.xPixel0, this.pin1Dx0.yPixel1, this.xPixel1, this.pin1Dx1.yPixel1 + 2, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin1Dx0.xPixel0, this.pin1Dx0.yPixel1, this.pin1Dx1.xPixel0, this.pin1Dx1.yPixel1 + 2, JSV.common.ScriptToken.PLOTCOLOR); +} else { +this.fillBox(gFront, this.imageView.xPixel0, this.pin2Dx0.yPixel1, this.imageView.xPixel1, this.pin2Dx0.yPixel1 + 2, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin2Dx0.xPixel0, this.pin2Dx0.yPixel1, this.pin2Dx1.xPixel0, this.pin2Dx1.yPixel1 + 2, JSV.common.ScriptToken.PLOTCOLOR); +this.fillBox(gFront, this.pin2Dy0.xPixel1, this.yPixel1, this.pin2Dy1.xPixel1 + 2, this.yPixel0, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin2Dy0.xPixel1, this.pin2Dy0.yPixel1, this.pin2Dy1.xPixel1 + 2, this.pin2Dy1.yPixel0, JSV.common.ScriptToken.PLOTCOLOR); +}this.fillBox(gFront, this.pin1Dy0.xPixel1, this.yPixel1, this.pin1Dy1.xPixel1 + 2, this.yPixel0, JSV.common.ScriptToken.GRIDCOLOR); +if (doDraw1DY) this.fillBox(gFront, this.pin1Dy0.xPixel1, this.pin1Dy0.yPixel1, this.pin1Dy1.xPixel1 + 2, this.pin1Dy1.yPixel0, JSV.common.ScriptToken.PLOTCOLOR); +}for (var i = 0; i < this.widgets.length; i++) { +var pw = this.widgets[i]; +if (pw == null || !pw.isPinOrCursor && !this.zoomEnabled) continue; +var isLockedCursor = (pw === this.cur1D2x1 || pw === this.cur1D2x2 || pw === this.cur2Dx0 || pw === this.cur2Dx1 || pw === this.cur2Dy); +if ((pw.isPin || !pw.isPinOrCursor) == postGrid) continue; +if (pw.is2D) { +if (pw === this.cur2Dx0 && !doDraw1DObjects) continue; +} else { +var isPin1Dy = (pw === this.pin1Dy0 || pw === this.pin1Dy1 || pw === this.pin1Dy01); +if ((this.imageView != null && doDraw1DObjects == isPin1Dy) || isPin1Dy && !doDraw1DY || pw === this.cur1D2x1 && this.gs2dLinkedX == null || pw === this.cur1D2x2 && this.gs2dLinkedY == null || pw === this.zoomBox1D && (this.pd.isIntegralDrag || this.pd.integralShiftMode != 0)) { +if (!this.isLinked || this.imageView != null) continue; +}}if (this.pd.isPrinting && !isLockedCursor) continue; +if (pw.isPinOrCursor) { +this.setColorFromToken(gFront, pw.color); +this.g2d.drawLine(gFront, pw.xPixel0, pw.yPixel0, pw.xPixel1, pw.yPixel1); +pw.isVisible = true; +if (pw.isPin) this.drawHandle(gFront, pw.xPixel0, pw.yPixel0, 2, !pw.isEnabled); +} else if (pw.xPixel1 != pw.xPixel0) { +this.fillBox(gBack, pw.xPixel0, pw.yPixel0, pw.xPixel1, pw.yPixel1, pw === this.zoomBox1D && this.pd.shiftPressed ? JSV.common.ScriptToken.ZOOMBOXCOLOR2 : JSV.common.ScriptToken.ZOOMBOXCOLOR); +}} +}, "~O,~O,~N,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "drawBar", +function(g, pi, xMin, xMax, whatColor, tickSize){ +var r = xMax + xMin; +var d = Math.abs(xMax - xMin); +var range = Math.abs(this.toX(this.xPixel1) - this.toX(this.xPixel0)); +if (false && tickSize > 0 && d > range / 20) { +d = range / 20; +xMin = r / 2 - d / 2; +xMax = r / 2 + d / 2; +}var x1 = this.toPixelX(xMin); +var x2 = this.toPixelX(xMax); +if (x1 > x2) { +var tmp = x1; +x1 = x2; +x2 = tmp; +}x1 = this.fixX(x1); +x2 = this.fixX(x2); +if (x2 - x1 < 3) { +x1 -= 2; +x2 += 2; +}if (pi != null) pi.setPixelRange(x1, x2); +if (tickSize == 0) { +this.fillBox(g, x1, this.yPixel0, x2, this.yPixel0 + this.yPixels, whatColor); +} else { +this.fillBox(g, x1, this.yPixel0 + 2, x2, this.yPixel0 + 5, whatColor); +if (pi != null) { +x1 = Clazz_doubleToInt((x1 + x2) / 2); +this.fillBox(g, x1 - 1, this.yPixel0 + 2, x1 + 1, this.yPixel0 + 2 + tickSize, whatColor); +}}}, "~O,JSV.common.PeakInfo,~N,~N,JSV.common.ScriptToken,~N"); +Clazz_defineMethod(c$, "drawIntegration", +function(gFront, index, yOffset, isGrey, iData, isContinuous, isSelected){ +if (iData != null) { +if (this.haveIntegralDisplayed(index)) this.drawPlot(gFront, index, this.spectra.get(index), true, yOffset, false, iData, true, false, false); +this.drawIntegralValues(gFront, index, yOffset); +}var ratios = this.getIntegrationRatios(index); +if (ratios != null) this.drawAnnotations(gFront, ratios, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +}, "~O,~N,~N,~B,JSV.common.IntegralData,~B,~B"); +Clazz_defineMethod(c$, "getMeasurements", +function(type, iSpec){ +var ad = this.getDialog(type, iSpec); +return (ad == null || ad.getData().size() == 0 || !ad.getState() ? null : ad.getData()); +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "drawPlot", +function(g, index, spec, isContinuous, yOffset, isGrey, ig, isSelected, hasPendingIntegral, pointsOnly){ +var xyCoords = (ig == null ? spec.getXYCoords() : this.getIntegrationGraph(index).getXYCoords()); +var isIntegral = (ig != null); +var bsDraw = (isIntegral ? ig.getBitSet() : null); +var fillPeaks = (hasPendingIntegral || spec.fillColor != null && isSelected); +var iColor = (isGrey ? -2 : isIntegral ? -1 : !this.allowStacking ? 0 : index); +this.setPlotColor(g, iColor); +var plotOn = true; +var y0 = this.toPixelY(0); +if (isIntegral) fillPeaks = new Boolean (fillPeaks & (y0 == this.fixY(y0))).valueOf(); + else y0 = this.fixY(y0); +var cInt = (isIntegral || fillPeaks ? this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR) : null); +var cFill = (cInt == null || spec.fillColor == null ? cInt : spec.fillColor); +var iFirst = this.viewData.getStartingPointIndex(index); +var iLast = this.viewData.getEndingPointIndex(index); +if (isContinuous && !pointsOnly) { +iLast--; +var doLineTo = (isIntegral || this.pendingIntegral != null) && this.g2d.canDoLineTo(); +if (doLineTo) this.g2d.doStroke(g, true); +var isDown = false; +for (var i = iFirst; i <= iLast; i++) { +var point1 = xyCoords[i]; +var point2 = xyCoords[i + 1]; +var y1 = (isIntegral ? this.toPixelYint(point1.getYVal()) : this.toPixelY(point1.getYVal())); +if (y1 == -2147483648) continue; +var y2 = (isIntegral ? this.toPixelYint(point2.getYVal()) : this.toPixelY(point2.getYVal())); +if (y2 == -2147483648) continue; +var xv1 = point1.getXVal(); +var xv2 = point2.getXVal(); +var x1 = this.toPixelX(xv1); +var x2 = this.toPixelX(xv2); +y1 = this.fixY(yOffset + y1); +y2 = this.fixY(yOffset + y2); +if (isIntegral) { +if (i == iFirst) { +this.xPixelPlot1 = x1; +this.yPixelPlot0 = y1; +}this.xPixelPlot0 = x2; +this.yPixelPlot1 = y2; +}if (x2 == x1 && y1 == y2) continue; +if (fillPeaks && hasPendingIntegral && this.pendingIntegral.overlaps(xv1, xv2)) { +if (cFill != null) { +this.g2d.doStroke(g, false); +this.g2d.setGraphicsColor(g, cFill); +}this.g2d.fillRect(g, Math.min(x1, x2), Math.min(y0, y1), Math.max(1, Math.abs(x2 - x1)), Math.abs(y0 - y1)); +if (cFill != null) { +this.g2d.doStroke(g, false); +this.g2d.doStroke(g, true); +isDown = false; +this.setPlotColor(g, iColor); +}continue; +}if (y1 == y2 && (y1 == this.yPixel0)) { +continue; +}if (bsDraw != null && bsDraw.get(i) != plotOn) { +plotOn = bsDraw.get(i); +if (doLineTo && isDown) { +this.g2d.doStroke(g, false); +this.g2d.doStroke(g, true); +isDown = false; +}if (!this.pd.isPrinting && this.pd.integralShiftMode != 0) this.setPlotColor(g, 0); + else if (plotOn) this.setColorFromToken(g, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); + else this.setPlotColor(g, -3); +}if (this.pd.isPrinting && !plotOn) continue; +if (isDown) { +this.g2d.lineTo(g, x2, y2); +} else { +this.g2d.drawLine(g, x1, y1, x2, y2); +isDown = doLineTo; +}} +if (doLineTo) this.g2d.doStroke(g, false); +} else { +for (var i = iFirst; i <= iLast; i++) { +var point = xyCoords[i]; +var y2 = this.toPixelY(point.getYVal()); +if (y2 == -2147483648) continue; +var x1 = this.toPixelX(point.getXVal()); +var y1 = this.toPixelY(Math.max(this.getScale().minYOnScale, 0)); +y1 = this.fixY(yOffset + y1); +y2 = this.fixY(yOffset + y2); +if (y1 == y2 && (y1 == this.yPixel0 || y1 == this.yPixel1)) continue; +if (pointsOnly) this.g2d.fillRect(g, x1 - 1, y2 - 1, 3, 3); + else this.g2d.drawLine(g, x1, y1, x1, y2); +} +if (!pointsOnly && this.getScale().isYZeroOnScale()) { +var y = yOffset + this.toPixelY(this.getScale().spectrumYRef); +if (y == this.fixY(y)) this.g2d.drawLine(g, this.xPixel1, y, this.xPixel0, y); +}}}, "~O,~N,JSV.common.Spectrum,~B,~N,~B,JSV.common.IntegralData,~B,~B,~B"); +Clazz_defineMethod(c$, "drawFrame", +function(g, iSpec, addCurrentBox, addSplitBox, drawUpDownArrows){ +if (!this.pd.gridOn || this.pd.isPrinting) { +this.setColorFromToken(g, JSV.common.ScriptToken.GRIDCOLOR); +this.g2d.drawRect(g, this.xPixel0, this.yPixel0, this.xPixels, this.yPixels); +if (this.pd.isPrinting) return; +}this.setCurrentBoxColor(g); +if (drawUpDownArrows) { +if (iSpec >= 0) { +this.setPlotColor(g, iSpec); +this.fillArrow(g, 3, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) - 9, true); +this.fillArrow(g, 4, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) + 9, true); +this.setCurrentBoxColor(g); +}this.fillArrow(g, 3, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) - 9, false); +this.fillCircle(g, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2), false); +this.fillArrow(g, 4, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) + 9, false); +}if (this.imageView != null) return; +if (addCurrentBox) { +var x1 = this.xPixel00 + 10; +var x2 = this.xPixel11 - 10; +var y1 = this.yPixel00 + 1; +var y2 = this.yPixel11 - 2; +this.g2d.drawLine(g, x1, y1, x2, y1); +this.g2d.drawLine(g, x2, y1, x2, y2); +this.g2d.drawLine(g, x1, y2, x2, y2); +this.splitterX = this.closerX = -2147483648; +this.drawBox(g, x2 - 10, y1, x2, y1 + 10, null); +this.g2d.drawLine(g, x2 - 10, y1 + 10, x2, y1); +this.g2d.drawLine(g, x2, y1 + 10, x2 - 10, y1); +this.closerX = x2 - 10; +this.closerY = y1; +if (addSplitBox) { +x2 -= 10; +this.fillBox(g, x2 - 10, y1, x2, y1 + 10, null); +this.splitterX = x2 - 10; +this.splitterY = y1; +}}}, "~O,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "drawGrid", +function(g){ +if (!this.pd.gridOn || this.imageView != null) return; +this.setColorFromToken(g, JSV.common.ScriptToken.GRIDCOLOR); +var lastX; +if (Double.isNaN(this.getScale().firstX)) { +lastX = this.getScale().maxXOnScale + this.getScale().steps[0] / 2; +for (var val = this.getScale().minXOnScale; val < lastX; val += this.getScale().steps[0]) { +var x = this.toPixelX(val); +this.g2d.drawLine(g, x, this.yPixel0, x, this.yPixel1); +} +} else { +lastX = this.getScale().maxXOnScale * 1.0001; +for (var val = this.getScale().firstX; val <= lastX; val += this.getScale().steps[0]) { +var x = this.toPixelX(val); +this.g2d.drawLine(g, x, this.yPixel0, x, this.yPixel1); +} +}for (var val = this.getScale().firstY; val < this.getScale().maxYOnScale + this.getScale().steps[1] / 2; val += this.getScale().steps[1]) { +var y = this.toPixelY(val); +if (y == this.fixY(y)) this.g2d.drawLine(g, this.xPixel0, y, this.xPixel1, y); +} +}, "~O"); +Clazz_defineMethod(c$, "drawXScale", +function(g, c){ +this.setColorFromToken(g, JSV.common.ScriptToken.SCALECOLOR); +if (this.pd.isPrinting) this.g2d.drawLine(g, c.getXPixel0(), this.yPixel1, c.getXPixel0() + c.getXPixels() - 1, this.yPixel1); +var precision = this.getScale().precision[0]; +var font = this.pd.setFont(g, c.getXPixels(), 0, this.pd.isPrinting ? 10 : 12, false); +var y1 = this.yPixel1; +var y2 = this.yPixel1 + 4 * this.pd.scalingFactor; +var y3 = this.yPixel1 + 2 * this.pd.scalingFactor; +var h = font.getHeight(); +var dx = c.toPixelX(this.getScale().steps[0]) - c.toPixelX(0); +var maxWidth = Math.abs(dx * 0.95); +var firstX = this.getScale().firstX - this.getScale().steps[0]; +var lastX = (this.getScale().maxXOnScale + this.getScale().steps[0]) * 1.0001; +for (var pass = 0; pass < 2; pass++) { +if (pass == 1) JSV.common.ScaleData.fixScale(this.mapX); +var prevX = 1e10; +for (var val = firstX; val <= lastX; val += this.getScale().steps[0]) { +var x = c.toPixelX(val); +var d = Double.$valueOf(val); +var s; +switch (pass) { +case 0: +s = JU.DF.formatDecimalDbl(val, precision); +this.mapX.put(d, s); +this.drawTick(g, x, y1, y2, c); +dx = Math.abs(prevX - val); +var ntick = this.getScale().minorTickCounts[0]; +if (ntick != 0) { +var step = dx / ntick; +for (var i = 1; i < ntick; i++) { +var x1 = val - i * step; +this.drawTick(g, c.toPixelX(x1), y1, y3, c); +} +}prevX = val; +continue; +case 1: +s = this.mapX.get(d); +if (s == null || x != c.fixX(x)) continue; +var w = this.pd.getStringWidth(s); +var n = (x + Clazz_doubleToInt(w / 2) == c.fixX(x + Clazz_doubleToInt(w / 2)) ? 2 : 0); +if (n > 0) this.g2d.drawString(g, s, x - Clazz_doubleToInt(w / n), y2 + h); +val += Math.floor(w / maxWidth) * this.getScale().steps[0]; +break; +} +} +} +this.mapX.clear(); +}, "~O,JSV.common.XYScaleConverter"); +Clazz_defineMethod(c$, "drawTick", +function(g, x, y1, y2, c){ +if (x == c.fixX(x)) this.g2d.drawLine(g, x, y1, x, y2); +}, "~O,~N,~N,~N,JSV.common.XYScaleConverter"); +Clazz_defineMethod(c$, "drawYScale", +function(g, c){ +var sd = c.getScale(); +var precision = sd.precision[1]; +var font = this.pd.setFont(g, c.getXPixels(), 0, this.pd.isPrinting ? 10 : 12, false); +var h = font.getHeight(); +var max = sd.maxYOnScale + sd.steps[1] / 2; +var yLast = -2147483648; +this.setColorFromToken(g, JSV.common.ScriptToken.SCALECOLOR); +for (var pass = 0; pass < 2; pass++) { +if (pass == 1) JSV.common.ScaleData.fixScale(this.mapX); +for (var val = sd.firstY; val < max; val += sd.steps[1]) { +var d = Double.$valueOf(val); +var x1 = c.getXPixel0(); +var y = c.toPixelY(val); +if (y != c.fixY(y)) continue; +var s; +if (pass == 0) this.g2d.drawLine(g, x1, y, x1 - 3 * this.pd.scalingFactor, y); +if (Math.abs(y - yLast) <= h) continue; +yLast = y; +switch (pass) { +case 0: +s = JU.DF.formatDecimalDbl(val, precision); +this.mapX.put(d, s); +break; +case 1: +s = this.mapX.get(d); +if (s == null) continue; +if (s.startsWith("0") && s.contains("E")) s = "0"; +this.g2d.drawString(g, s, (x1 - 4 * this.pd.scalingFactor - this.pd.getStringWidth(s)), y + Clazz_doubleToInt(h / 3)); +break; +} +} +} +this.mapX.clear(); +}, "~O,JSV.common.XYScaleConverter"); +Clazz_defineMethod(c$, "drawXUnits", +function(g){ +var units = this.spectra.get(0).getAxisLabel(true); +if (units != null) this.drawUnits(g, units, this.xPixel1 + 25 * this.pd.scalingFactor, this.yPixel1 + 5 * this.pd.scalingFactor, 1, 1); +}, "~O"); +Clazz_defineMethod(c$, "drawUnits", +function(g, s, x, y, hOff, vOff){ +this.setColorFromToken(g, JSV.common.ScriptToken.UNITSCOLOR); +this.pd.setFont(g, (this.imageView == null ? this : this.imageView).getXPixels(), 3, 10, false); +this.g2d.drawString(g, s, Clazz_doubleToInt(x - this.pd.getStringWidth(s) * hOff), Clazz_doubleToInt(y + this.pd.getFontHeight() * vOff)); +}, "~O,~S,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawYUnits", +function(g){ +var units = this.spectra.get(0).getAxisLabel(false); +if (units != null) this.drawUnits(g, units, (this.pd.isPrinting ? 30 : 5) * this.pd.scalingFactor, this.yPixel0 + (this.pd.isPrinting ? 0 : 5) * this.pd.scalingFactor, 0, -1); +}, "~O"); +Clazz_defineMethod(c$, "drawHighlightsAndPeakTabs", +function(gFront, gBack, iSpec){ +var md = this.getMeasurements(JSV.common.Annotation.AType.PeakList, iSpec); +var spec = this.spectra.get(iSpec); +if (this.pd.isPrinting) { +if (md != null) { +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +this.printPeakList(gFront, spec, md); +}return; +}if (md == null) { +for (var i = 0; i < this.highlights.size(); i++) { +var hl = this.highlights.get(i); +if (hl.spectrum === spec) { +this.pd.setHighlightColor(hl.color); +this.drawBar(gBack, null, hl.x1, hl.x2, JSV.common.ScriptToken.HIGHLIGHTCOLOR, 0); +}} +if (this.pd.peakTabsOn) this.drawPeakTabs(gFront, gBack, spec); +}var y; +if (md != null) { +y = (spec.isInverted() ? this.yPixel1 - 10 * this.pd.scalingFactor : this.yPixel0); +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +for (var i = md.size(); --i >= 0; ) { +var m = md.get(i); +var x = this.toPixelX(m.getXVal()); +this.g2d.drawLine(gFront, x, y, x, y + 10 * this.pd.scalingFactor); +} +if (this.isVisible(this.getDialog(JSV.common.Annotation.AType.PeakList, iSpec))) { +y = this.toPixelY((md).getThresh()); +if (y == this.fixY(y) && !this.pd.isPrinting) this.g2d.drawLine(gFront, this.xPixel0, y, this.xPixel1, y); +}}}, "~O,~O,~N"); +Clazz_defineMethod(c$, "printPeakList", +function(g, spec, data){ +var sdata = data.getMeasurementListArray(null); +if (sdata.length == 0) return; +this.pd.setFont(g, this.xPixels, 0, 8, false); +var h = this.pd.getFontHeight(); +var xs = Clazz_newIntArray (data.size(), 0); +var xs0 = Clazz_newIntArray (data.size(), 0); +var dx = 0; +var s5 = 5 * this.pd.scalingFactor; +var s10 = 10 * this.pd.scalingFactor; +var s15 = 15 * this.pd.scalingFactor; +var s25 = 25 * this.pd.scalingFactor; +for (var i = 0; i < sdata.length; i++) { +xs0[i] = this.toPixelX(Double.parseDouble(sdata[i][1])); +if (i == 0) { +xs[i] = xs0[i]; +continue; +}xs[i] = Math.max(xs[i - 1] + h, xs0[i] + h); +dx += (xs[i] - xs0[i]); +} +dx /= 2 * sdata.length; +if (xs[0] - dx < this.xPixel0 + s25) dx = xs[0] - (this.xPixel0 + s25); +for (var i = 0; i < sdata.length; i++) xs[i] -= dx; + +var inverted = spec.isInverted(); +var y4 = this.pd.getStringWidth("99.9999"); +var y2 = (sdata[0].length >= 6 ? this.pd.getStringWidth("99.99") : 0); +var f = (inverted ? -1 : 1); +var y = (inverted ? this.yPixel1 : this.yPixel0) + f * (y2 + y4 + s15); +for (var i = 0; i < sdata.length; i++) { +this.g2d.drawLine(g, xs[i], y, xs[i], y + s5 * f); +this.g2d.drawLine(g, xs[i], y + s5 * f, xs0[i], y + s10 * f); +this.g2d.drawLine(g, xs0[i], y + s10 * f, xs0[i], y + s15 * f); +if (y2 > 0 && sdata[i][4].length > 0) this.g2d.drawLine(g, Clazz_doubleToInt((xs[i] + xs[i - 1]) / 2), y - y4 + s5, Clazz_doubleToInt((xs[i] + xs[i - 1]) / 2), y - y4 - s5); +} +y -= f * 2 * this.pd.scalingFactor; +if (y2 > 0) { +this.drawStringRotated(g, -90, xs[0] - s15, y, " ppm"); +this.drawStringRotated(g, -90, xs[0] - s15, y - y4 - s5, " Hz"); +}for (var i = data.size(); --i >= 0; ) { +this.drawStringRotated(g, -90 * f, xs[i] + Clazz_doubleToInt(f * h / 3), y, sdata[i][1]); +if (y2 > 0 && sdata[i][4].length > 0) { +var x = Clazz_doubleToInt((xs[i] + xs[i - 1]) / 2) + Clazz_doubleToInt(h / 3); +this.drawStringRotated(g, -90, x, y - y4 - s5, sdata[i][4]); +}} +}, "~O,JSV.common.Spectrum,JSV.common.PeakData"); +Clazz_defineMethod(c$, "drawStringRotated", +function(g, angle, x, y, s){ +this.g2d.drawStringRotated(g, s, x, y, angle); +}, "~O,~N,~N,~N,~S"); +Clazz_defineMethod(c$, "drawAnnotations", +function(g, annotations, whatColor){ +this.pd.setFont(g, this.xPixels, 1, 18, false); +for (var i = annotations.size(); --i >= 0; ) { +var note = annotations.get(i); +this.setAnnotationColor(g, note, whatColor); +var c = (note.is2D ? this.imageView : this); +var x = c.toPixelX(note.getXVal()); +var y = (note.isPixels() ? Clazz_doubleToInt(this.yPixel0 + 10 + 10 * this.pd.scalingFactor - note.getYVal()) : note.is2D ? this.imageView.subIndexToPixelY(Clazz_doubleToInt(note.getYVal())) : this.toPixelY(note.getYVal())); +this.g2d.drawString(g, note.text, x + note.offsetX * this.pd.scalingFactor, y - note.offsetY * this.pd.scalingFactor); +} +}, "~O,JU.Lst,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "drawIntegralValues", +function(g, iSpec, yOffset){ +var integrals = this.getMeasurements(JSV.common.Annotation.AType.Integration, iSpec); +if (integrals != null) { +if (this.pd.isPrinting) this.pd.setFont(g, this.xPixels, 0, 8, false); + else this.pd.setFont(g, this.xPixels, 1, 12, false); +this.setColorFromToken(g, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +var h = this.pd.getFontHeight(); +this.g2d.setStrokeBold(g, true); +for (var i = integrals.size(); --i >= 0; ) { +var $in = integrals.get(i); +if ($in.getValue() == 0) continue; +var x = this.toPixelX($in.getXVal2()); +var y1 = yOffset * this.pd.scalingFactor + this.toPixelYint($in.getYVal()); +var y2 = yOffset * this.pd.scalingFactor + this.toPixelYint($in.getYVal2()); +if (x != this.fixX(x) || y1 != this.fixY(y1) || y2 != this.fixY(y2)) continue; +if (!this.pd.isPrinting) this.g2d.drawLine(g, x, y1, x, y2); +var s = " " + $in.text; +this.g2d.drawString(g, s, x, Clazz_doubleToInt((y1 + y2) / 2) + Clazz_doubleToInt(h / 3)); +} +this.g2d.setStrokeBold(g, false); +}if (iSpec == this.getFixedSelectedSpectrumIndex()) this.selectedSpectrumIntegrals = integrals; +}, "~O,~N,~N"); +Clazz_defineMethod(c$, "drawMeasurements", +function(g, iSpec){ +var md = this.getMeasurements(JSV.common.Annotation.AType.Measurements, iSpec); +if (md != null) for (var i = md.size(); --i >= 0; ) this.drawMeasurement(g, md.get(i)); + +if (iSpec == this.getFixedSelectedSpectrumIndex()) this.selectedSpectrumMeasurements = md; +}, "~O,~N"); +Clazz_defineMethod(c$, "drawMeasurement", +function(g, m){ +if (m.text.length == 0 && m !== this.pendingMeasurement) return; +this.pd.setFont(g, this.xPixels, 1, 12, false); +this.g2d.setGraphicsColor(g, (m === this.pendingMeasurement ? this.pd.getColor(JSV.common.ScriptToken.PEAKTABCOLOR) : this.pd.BLACK)); +var x1 = this.toPixelX(m.getXVal()); +var y1 = this.toPixelY(m.getYVal()); +var x2 = this.toPixelX(m.getXVal2()); +if (Double.isNaN(m.getXVal()) || x1 != this.fixX(x1) || x2 != this.fixX(x2)) return; +var drawString = (Math.abs(x1 - x2) >= 2); +var drawBaseLine = this.getScale().isYZeroOnScale() && m.spec.isHNMR(); +var x = Clazz_doubleToInt((x1 + x2) / 2); +this.g2d.setStrokeBold(g, true); +if (drawString) this.g2d.drawLine(g, x1, y1, x2, y1); +if (drawBaseLine) this.g2d.drawLine(g, x1 + 1, this.yPixel1 - 1, x2, this.yPixel1 - 1); +this.g2d.setStrokeBold(g, false); +if (drawString) this.g2d.drawString(g, m.text, x + m.offsetX, y1 - m.offsetY); +if (drawBaseLine) { +this.g2d.drawLine(g, x1, this.yPixel1, x1, this.yPixel1 - 6 * this.pd.scalingFactor); +this.g2d.drawLine(g, x2, this.yPixel1, x2, this.yPixel1 - 6 * this.pd.scalingFactor); +}}, "~O,JSV.common.Measurement"); +Clazz_defineMethod(c$, "getPinSelected", +function(xPixel, yPixel){ +if (this.widgets != null) for (var i = 0; i < this.widgets.length; i++) { +if (this.widgets[i] != null && this.widgets[i].isPinOrCursor && this.widgets[i].selected(xPixel, yPixel)) { +return this.widgets[i]; +}} +return null; +}, "~N,~N"); +Clazz_defineMethod(c$, "set2DCrossHairs", +function(xPixel, yPixel){ +var x; +if (xPixel == this.imageView.fixX(xPixel) && yPixel == this.fixY(yPixel)) { +this.pin1Dx1.setX(x = this.imageView.toX(xPixel), this.toPixelX(x)); +this.cur2Dx1.setX(x, xPixel); +this.setCurrentSubSpectrum(this.imageView.toSubspectrumIndex(yPixel)); +if (this.isLinked) { +var y = this.imageView.toY(yPixel); +this.pd.set2DCrossHairsLinked(this, x, y, !this.sticky2Dcursor); +}}}, "~N,~N"); +Clazz_defineMethod(c$, "reset2D", +function(isX){ +if (isX) { +this.imageView.setView0(this.imageView.xPixel0, this.pin2Dy0.yPixel0, this.imageView.xPixel1, this.pin2Dy1.yPixel0); +this.doZoom(0, this.getScale().minY, 0, this.getScale().maxY, true, false, false, false, true); +} else { +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.yPixel0, this.pin2Dx1.xPixel0, this.imageView.yPixel1); +}}, "~B"); +Clazz_defineMethod(c$, "setAnnotationText", +function(a){ +var sval = this.pd.getInput("New text?", "Set Label", a.text); +if (sval == null) return false; +if (sval.length == 0) this.annotations.removeObj(a); + else a.text = sval; +return true; +}, "JSV.common.Annotation"); +Clazz_defineMethod(c$, "checkIntegral", +function(x1, x2, isFinal){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (ad == null) return false; +var integral = (ad.getData()).addIntegralRegion(x1, x2); +if (isFinal && ad.isDialog()) (ad).update(null, 0, 0); +if (Double.isNaN(x2)) return false; +this.pendingIntegral = (isFinal ? null : integral); +this.pd.isIntegralDrag = !isFinal; +this.selectedSpectrumIntegrals = null; +return true; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setToolTipForPixels", +function(xPixel, yPixel){ +if (this.iSpectrumMovedTo != this.iSpectrumClicked || this.pd.getCurrentGraphSet() !== this) { +this.pd.setToolTipText("click spectrum to activate"); +return; +}if (this.isSplitWidget(xPixel, yPixel)) { +this.pd.setToolTipText("click to " + (this.nSplit > 1 ? "combine" : "split")); +return; +}if (this.isCloserWidget(xPixel, yPixel)) { +this.pd.setToolTipText("click to close"); +return; +}var pw = this.getPinSelected(xPixel, yPixel); +var precisionX = this.getScale().precision[0]; +var precisionY = this.getScale().precision[1]; +if (pw != null) { +if (this.setStartupPinTip()) return; +var s; +if (pw === this.pin1Dx01 || pw === this.pin2Dx01) { +s = JU.DF.formatDecimalDbl(Math.min(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()), precisionX) + " - " + JU.DF.formatDecimalDbl(Math.max(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()), precisionX); +} else if (pw === this.pin1Dy01) { +s = JU.DF.formatDecimalDbl(Math.min(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()), precisionY) + " - " + JU.DF.formatDecimalDbl(Math.max(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()), precisionY); +} else if (pw === this.cur2Dy) { +var isub = this.imageView.toSubspectrumIndex(pw.yPixel0); +s = this.get2DYLabel(isub, precisionX); +} else if (pw === this.pin2Dy01) { +s = "" + Clazz_doubleToInt(Math.min(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())) + " - " + Clazz_doubleToInt(Math.max(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())); +} else if (pw.isXtype) { +s = JU.DF.formatDecimalDbl(pw.getXVal(), precisionX); +} else if (pw.is2D) { +s = "" + Clazz_doubleToInt(pw.getYVal()); +} else { +s = JU.DF.formatDecimalDbl(pw.getYVal(), precisionY); +}this.pd.setToolTipText(s); +return; +}var yPt; +if (this.imageView != null) { +if (this.imageView.fixX(xPixel) == xPixel && this.fixY(yPixel) == yPixel) { +var isub = this.imageView.toSubspectrumIndex(yPixel); +var s = "y=" + this.get2DYLabel(isub, precisionX) + " / x=" + JU.DF.formatDecimalDbl(this.imageView.toX(xPixel), precisionX) + " " + this.getSpectrum().getAxisLabel(true); +this.pd.setToolTipText(s); +this.pd.coordStr = s; +return; +}if (!this.pd.display1D) { +this.pd.setToolTipText(""); +this.pd.coordStr = ""; +return; +}}var xPt = this.toX(this.fixX(xPixel)); +yPt = (this.imageView != null && this.imageView.isXWithinRange(xPixel) ? this.imageView.toSubspectrumIndex(this.fixY(yPixel)) : this.toY(this.fixY(yPixel))); +var xx = this.setCoordStr(xPt, yPt); +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (!this.isInPlotRegion(xPixel, yPixel)) { +yPt = NaN; +} else if (this.nSpectra == 1) { +} else if (this.haveIntegralDisplayed(iSpec)) { +yPt = this.getIntegrationGraph(iSpec).getPercentYValueAt(xPt); +xx += ", " + JU.DF.formatDecimalDbl(yPt, 1); +}this.pd.setToolTipText((this.selectedIntegral != null ? "click to set value" : this.pendingMeasurement != null || this.selectedMeasurement != null ? (this.pd.hasFocus() ? "Press ESC to delete " + (this.selectedIntegral != null ? "integral, DEL to delete all visible, or N to normalize" : this.pendingMeasurement == null ? "\"" + this.selectedMeasurement.text + "\" or DEL to delete all visible" : "measurement") : "") : Double.isNaN(yPt) ? null : xx)); +}, "~N,~N"); +Clazz_defineMethod(c$, "isFrameBox", +function(xPixel, yPixel, boxX, boxY){ +return Math.abs(xPixel - (boxX + 5)) < 5 && Math.abs(yPixel - (boxY + 5)) < 5; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setCoordStr", +function(xPt, yPt){ +var xx = JU.DF.formatDecimalDbl(xPt, this.getScale().precision[0]); +this.pd.coordStr = "(" + xx + (this.haveSingleYScale || this.iSpectrumSelected >= 0 ? ", " + JU.DF.formatDecimalDbl(yPt, this.getScale().precision[1]) : "") + ")"; +return xx; +}, "~N,~N"); +Clazz_defineMethod(c$, "setStartupPinTip", +function(){ +if (this.pd.startupPinTip == null) return false; +this.pd.setToolTipText(this.pd.startupPinTip); +this.pd.startupPinTip = null; +return true; +}); +Clazz_defineMethod(c$, "get2DYLabel", +function(isub, precision){ +var spec = this.getSpectrumAt(0).getSubSpectra().get(isub); +return JU.DF.formatDecimalDbl(spec.getY2DPPM(), precision) + " PPM" + (spec.y2DUnits.equals("HZ") ? " (" + JU.DF.formatDecimalDbl(spec.getY2D(), precision) + " HZ) " : ""); +}, "~N,~N"); +Clazz_defineMethod(c$, "isOnSpectrum", +function(xPixel, yPixel, index){ +var xyCoords = null; +var isContinuous = true; +var isIntegral = (index < 0); +if (isIntegral) { +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (ad == null) return false; +xyCoords = (ad.getData()).getXYCoords(); +index = this.getFixedSelectedSpectrumIndex(); +} else { +this.setScale(index); +var spec = this.spectra.get(index); +xyCoords = spec.xyCoords; +isContinuous = spec.isContinuous(); +}var yOffset = index * Clazz_floatToInt(this.yPixels * (this.yStackOffsetPercent / 100)); +var ix0 = this.viewData.getStartingPointIndex(index); +var ix1 = this.viewData.getEndingPointIndex(index); +if (isContinuous) { +for (var i = ix0; i < ix1; i++) { +var point1 = xyCoords[i]; +var point2 = xyCoords[i + 1]; +var x1 = this.toPixelX(point1.getXVal()); +var x2 = this.toPixelX(point2.getXVal()); +var y1 = (isIntegral ? this.toPixelYint(point1.getYVal()) : this.toPixelY(point1.getYVal())); +var y2 = (isIntegral ? this.toPixelYint(point2.getYVal()) : this.toPixelY(point2.getYVal())); +if (y1 == -2147483648 || y2 == -2147483648) continue; +y1 = this.fixY(y1) - yOffset; +y2 = this.fixY(y2) - yOffset; +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x2, y2)) return true; +} +} else { +for (var i = ix0; i <= ix1; i++) { +var point = xyCoords[i]; +var y2 = this.toPixelY(point.getYVal()); +if (y2 == -2147483648) continue; +var x1 = this.toPixelX(point.getXVal()); +var y1 = this.toPixelY(Math.max(this.getScale().minYOnScale, 0)); +y1 = this.fixY(y1); +y2 = this.fixY(y2); +if (y1 == y2 && (y1 == this.yPixel0 || y1 == this.yPixel1)) continue; +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x1, y2)) return true; +} +}return false; +}, "~N,~N,~N"); +c$.distance = Clazz_defineMethod(c$, "distance", +function(dx, dy){ +return Math.sqrt(dx * dx + dy * dy); +}, "~N,~N"); +c$.findCompatibleGraphSet = Clazz_defineMethod(c$, "findCompatibleGraphSet", +function(graphSets, spec){ +for (var i = 0; i < graphSets.size(); i++) if (JSV.common.Spectrum.areXScalesCompatible(spec, graphSets.get(i).getSpectrum(), false, false)) return graphSets.get(i); + +return null; +}, "JU.Lst,JSV.common.Spectrum"); +c$.isGoodEvent = Clazz_defineMethod(c$, "isGoodEvent", +function(zOrP, p, asX){ +return (p == null ? (Math.abs(zOrP.xPixel1 - zOrP.xPixel0) > 5 && Math.abs(zOrP.yPixel1 - zOrP.yPixel0) > 5) : asX ? Math.abs(zOrP.xPixel0 - p.xPixel0) > 5 : Math.abs(zOrP.yPixel0 - p.yPixel0) > 5); +}, "JSV.common.PlotWidget,JSV.common.PlotWidget,~B"); +c$.isOnLine = Clazz_defineMethod(c$, "isOnLine", +function(xPixel, yPixel, x1, y1, x2, y2){ +var dx1 = Math.abs(x1 - xPixel); +if (dx1 < 2 && Math.abs(y1 - yPixel) < 2) return true; +var dx2 = x2 - xPixel; +if (Math.abs(dx2) < 2 && Math.abs(y2 - yPixel) < 2) return true; +var dy12 = y1 - y2; +if (Math.abs(dy12) > 2 && (y1 < yPixel) == (y2 < yPixel)) return false; +var dx12 = x1 - x2; +if (Math.abs(dx12) > 2 && (x1 < xPixel) == (x2 < xPixel)) return false; +return (JSV.common.GraphSet.distance(dx1, y1 - yPixel) + JSV.common.GraphSet.distance(dx2, yPixel - y2) < JSV.common.GraphSet.distance(dx12, dy12) + 2); +}, "~N,~N,~N,~N,~N,~N"); +c$.setFractionalPositions = Clazz_defineMethod(c$, "setFractionalPositions", +function(pd, graphSets, linkMode){ +var n = graphSets.size(); +var f = 0; +var n2d = 1; +var gs; +var y = 0; +pd.isLinked = (linkMode !== JSV.common.PanelData.LinkMode.NONE); +if (linkMode === JSV.common.PanelData.LinkMode.NONE) { +for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +f += (gs.getSpectrumAt(0).is1D() ? 1 : n2d) * gs.nSplit; +} +f = 1 / f; +for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +gs.isLinked = false; +var g = (gs.getSpectrumAt(0).is1D() ? f : n2d * f); +gs.fX0 = 0; +gs.fY0 = y; +gs.fracX = 1; +gs.fracY = g; +y += g * gs.nSplit; +} +} else { +var gs2d = null; +var i2d = -1; +if (n == 2 || n == 3) for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +if (!gs.getSpectrum().is1D()) { +gs2d = gs; +if (i2d >= 0) i = -2; +i2d = i; +break; +}} +if (i2d == -2 || i2d == -1 && n != 2) { +JSV.common.GraphSet.setFractionalPositions(pd, graphSets, JSV.common.PanelData.LinkMode.NONE); +return; +}for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +gs.isLinked = true; +var s1 = gs.getSpectrumAt(0); +var is1D = s1.is1D(); +if (is1D) { +if (gs2d != null) { +var s2 = gs2d.getSpectrumAt(0); +if (JSV.common.Spectrum.areLinkableX(s1, s2)) gs.gs2dLinkedX = gs2d; +if (JSV.common.Spectrum.areLinkableY(s1, s2)) gs.gs2dLinkedY = gs2d; +}gs.fX0 = 0; +gs.fY0 = y; +gs.fracX = (gs2d == null ? 1 : 0.5); +gs.fracY = (n == 3 || gs2d == null ? 0.5 : 1); +y += 0.5; +} else { +gs.fX0 = 0.5; +gs.fY0 = 0; +gs.fracX = 0.5; +gs.fracY = 1; +}} +}}, "JSV.common.PanelData,JU.Lst,JSV.common.PanelData.LinkMode"); +Clazz_defineMethod(c$, "addAnnotation", +function(args, title){ +if (args.size() == 0 || args.size() == 1 && args.get(0).equalsIgnoreCase("none")) { +this.annotations = null; +this.lastAnnotation = null; +return null; +}if (args.size() < 4 && this.lastAnnotation == null) this.lastAnnotation = this.getAnnotation((this.getScale().maxXOnScale + this.getScale().minXOnScale) / 2, (this.getScale().maxYOnScale + this.getScale().minYOnScale) / 2, title, false, false, 0, 0); +var annotation = this.getAnnotation(args, this.lastAnnotation); +if (annotation == null) return null; +if (this.annotations == null && args.size() == 1 && args.get(0).charAt(0) == '\"') { +var s = annotation.text; +this.getSpectrum().setTitle(s); +return s; +}this.lastAnnotation = annotation; +this.addAnnotation(annotation, false); +return null; +}, "JU.Lst,~S"); +Clazz_defineMethod(c$, "addHighlight", +function(x1, x2, spec, color){ +if (spec == null) spec = this.getSpectrumAt(0); +var hl = Clazz_innerTypeInstance(JSV.common.GraphSet.Highlight, this, null, x1, x2, spec, (color == null ? this.pd.getColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR) : color)); +if (!this.highlights.contains(hl)) this.highlights.addLast(hl); +}, "~N,~N,JSV.common.Spectrum,javajs.api.GenericColor"); +Clazz_defineMethod(c$, "addPeakHighlight", +function(peakInfo){ +for (var i = this.spectra.size(); --i >= 0; ) { +var spec = this.spectra.get(i); +this.removeAllHighlights(spec); +if (peakInfo == null || peakInfo.isClearAll() || spec !== peakInfo.spectrum) continue; +var peak = peakInfo.toString(); +if (peak == null) { +continue; +}var xMin = JU.PT.getQuotedAttribute(peak, "xMin"); +var xMax = JU.PT.getQuotedAttribute(peak, "xMax"); +if (xMin == null || xMax == null) return; +var x1 = JU.PT.parseFloat(xMin); +var x2 = JU.PT.parseFloat(xMax); +if (Float.isNaN(x1) || Float.isNaN(x2)) return; +this.pd.addHighlight(this, x1, x2, spec, 200, 140, 140, 100); +spec.setSelectedPeak(peakInfo); +if (this.getScale().isInRangeX(x1) || this.getScale().isInRangeX(x2) || x1 < this.getScale().minX && this.getScale().maxX < x2) { +} else { +this.setZoomTo(0); +}} +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "advanceSubSpectrum", +function(dir){ +var spec0 = this.getSpectrumAt(0); +var i = spec0.advanceSubSpectrum(dir); +if (spec0.isForcedSubset()) this.viewData.setXRangeForSubSpectrum(this.getSpectrum().getXYCoords()); +this.pd.notifySubSpectrumChange(i, this.getSpectrum()); +}, "~N"); +Clazz_defineMethod(c$, "checkSpectrumClickedEvent", +function(xPixel, yPixel, clickCount){ +if (this.nextClickForSetPeak != null) return false; +if (clickCount > 1 || this.pendingMeasurement != null || !this.isInPlotRegion(xPixel, yPixel)) return false; +if (clickCount == 0) { +var isOnIntegral = this.isOnSpectrum(xPixel, yPixel, -1); +this.pd.integralShiftMode = (isOnIntegral ? this.getShiftMode(xPixel, yPixel) : 0); +this.pd.isIntegralDrag = (this.pd.integralShiftMode == 0 && (isOnIntegral || this.haveIntegralDisplayed(-1) && this.findMeasurement(this.getIntegrationGraph(-1), xPixel, yPixel, 0) != null)); +if (this.pd.integralShiftMode != 0) return false; +}if (!this.showAllStacked) return false; +this.stackSelected = false; +for (var i = 0; i < this.nSpectra; i++) { +if (!this.isOnSpectrum(xPixel, yPixel, i)) continue; +this.setSpectrumClicked(this.iPreviousSpectrumClicked = i); +return false; +} +if (this.isDialogOpen()) return false; +this.setSpectrumClicked(-1); +return this.stackSelected = false; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShiftMode", +function(xPixel, yPixel){ +return (this.isStartEndIntegral(xPixel, false) ? yPixel : this.isStartEndIntegral(xPixel, true) ? -yPixel : 0); +}, "~N,~N"); +Clazz_defineMethod(c$, "isDialogOpen", +function(){ +return (this.isVisible(this.getDialog(JSV.common.Annotation.AType.Integration, -1)) || this.isVisible(this.getDialog(JSV.common.Annotation.AType.Measurements, -1)) || this.isVisible(this.getDialog(JSV.common.Annotation.AType.PeakList, -1))); +}); +Clazz_defineMethod(c$, "isStartEndIntegral", +function(xPixel, isEnd){ +return (isEnd ? this.xPixelPlot1 - xPixel < 20 : xPixel - this.xPixelPlot0 < 20); +}, "~N,~B"); +Clazz_defineMethod(c$, "checkWidgetEvent", +function(xPixel, yPixel, isPress){ +if (!this.widgetsAreSet) return false; +this.widgetsAreSet = false; +var widget; +if (isPress) { +if (this.pd.clickCount == 2 && this.lastIntDragX != xPixel && !this.is2dClick(xPixel, yPixel)) { +if (this.pendingMeasurement == null) { +if (this.iSpectrumClicked == -1 && this.iPreviousSpectrumClicked >= 0) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +}this.processPendingMeasurement(xPixel, yPixel, 2); +return true; +}} else if (!this.is2dClick(xPixel, yPixel)) { +if (this.isOnSpectrum(xPixel, yPixel, -1)) { +this.checkIntegral(this.toX(xPixel), NaN, false); +}if (this.lastIntDragX == xPixel) { +this.pd.isIntegralDrag = true; +if (!this.checkIntegral(this.toX(xPixel), this.toX(xPixel), false)) return false; +}}if (this.pendingMeasurement != null) return true; +widget = this.getPinSelected(xPixel, yPixel); +if (widget == null) { +yPixel = this.fixY(yPixel); +if (xPixel < this.xPixel1) { +if (this.pd.shiftPressed) this.setSpectrumClicked(this.iPreviousSpectrumClicked); +xPixel = this.fixX(xPixel); +if (this.zoomBox1D == null) this.newPins(); +this.zoomBox1D.setX(this.toX(xPixel), xPixel); +this.zoomBox1D.yPixel0 = yPixel; +widget = this.zoomBox1D; +} else if (this.imageView != null && xPixel < this.imageView.xPixel1) { +this.zoomBox2D.setX(this.imageView.toX(xPixel), this.imageView.fixX(xPixel)); +this.zoomBox2D.yPixel0 = yPixel; +widget = this.zoomBox2D; +}}this.pd.thisWidget = widget; +return false; +}this.nextClickForSetPeak = null; +widget = this.pd.thisWidget; +if (widget == null) return false; +if (widget === this.zoomBox1D) { +this.zoomBox1D.xPixel1 = this.fixX(xPixel); +this.zoomBox1D.yPixel1 = this.fixY(yPixel); +if (this.pd.isIntegralDrag && this.zoomBox1D.xPixel0 != this.zoomBox1D.xPixel1) { +if ((this.lastIntDragX <= xPixel) != (this.zoomBox1D.xPixel0 <= xPixel)) { +this.zoomBox1D.xPixel0 = this.lastIntDragX; +this.zoomBox1D.xPixel1 = xPixel; +this.zoomBox1D.setXVal(this.toX(this.zoomBox1D.xPixel0)); +}this.lastIntDragX = xPixel; +this.checkIntegral(this.zoomBox1D.getXVal(), this.toX(this.zoomBox1D.xPixel1), false); +}return false; +}if (!this.zoomEnabled) return false; +if (widget === this.zoomBox2D) { +this.zoomBox2D.xPixel1 = this.imageView.fixX(xPixel); +this.zoomBox2D.yPixel1 = this.fixY(yPixel); +return true; +}if (widget === this.cur2Dy) { +yPixel = this.fixY(yPixel); +this.cur2Dy.yPixel0 = this.cur2Dy.yPixel1 = yPixel; +this.setCurrentSubSpectrum(this.imageView.toSubspectrumIndex(yPixel)); +return true; +}if (widget === this.cur2Dx0 || widget === this.cur2Dx1) { +return false; +}if (widget === this.pin1Dx0 || widget === this.pin1Dx1 || widget === this.pin1Dx01) { +xPixel = this.fixX(xPixel); +widget.setX(this.toX0(xPixel), xPixel); +if (widget === this.pin1Dx01) { +var dp = xPixel - (Clazz_doubleToInt((this.pin1Dx0.xPixel0 + this.pin1Dx1.xPixel0) / 2)); +var dp1 = (dp < 0 ? dp : dp); +var dp2 = (dp < 0 ? dp : dp); +xPixel = this.pin1Dx0.xPixel0 + dp2; +var xPixel1 = this.pin1Dx1.xPixel0 + dp1; +if (dp == 0 || this.fixX(xPixel) != xPixel || this.fixX(xPixel1) != xPixel1) return true; +this.pin1Dx0.setX(this.toX0(xPixel), xPixel); +this.pin1Dx1.setX(this.toX0(xPixel1), xPixel1); +}this.doZoom(this.pin1Dx0.getXVal(), 0, this.pin1Dx1.getXVal(), 0, true, false, false, true, false); +return true; +}if (widget === this.pin1Dy0 || widget === this.pin1Dy1 || widget === this.pin1Dy01) { +yPixel = this.fixY(yPixel); +widget.setY(this.toY0(yPixel), yPixel); +if (widget === this.pin1Dy01) { +var dp = yPixel - Clazz_doubleToInt((this.pin1Dy0.yPixel0 + this.pin1Dy1.yPixel0) / 2) + 1; +yPixel = this.pin1Dy0.yPixel0 + dp; +var yPixel1 = this.pin1Dy1.yPixel0 + dp; +var y0 = this.toY0(yPixel); +var y1 = this.toY0(yPixel1); +if (Math.min(y0, y1) == this.getScale().minY || Math.max(y0, y1) == this.getScale().maxY) return true; +this.pin1Dy0.setY(y0, yPixel); +this.pin1Dy1.setY(y1, yPixel1); +}this.doZoom(0, this.pin1Dy0.getYVal(), 0, this.pin1Dy1.getYVal(), this.imageView == null, this.imageView == null, false, false, false); +return true; +}if (widget === this.pin2Dx0 || widget === this.pin2Dx1 || widget === this.pin2Dx01) { +xPixel = this.imageView.fixX(xPixel); +widget.setX(this.imageView.toX0(xPixel), xPixel); +if (widget === this.pin2Dx01) { +var dp = xPixel - Clazz_doubleToInt((this.pin2Dx0.xPixel0 + this.pin2Dx1.xPixel0) / 2) + 1; +xPixel = this.pin2Dx0.xPixel0 + dp; +var xPixel1 = this.pin2Dx1.xPixel0 + dp; +if (this.imageView.fixX(xPixel) != xPixel || this.imageView.fixX(xPixel1) != xPixel1) return true; +this.pin2Dx0.setX(this.imageView.toX0(xPixel), xPixel); +this.pin2Dx1.setX(this.imageView.toX0(xPixel1), xPixel1); +}if (!JSV.common.GraphSet.isGoodEvent(this.pin2Dx0, this.pin2Dx1, true)) { +this.reset2D(true); +return true; +}this.imageView.setView0(this.pin2Dx0.xPixel0, this.pin2Dy0.yPixel0, this.pin2Dx1.xPixel0, this.pin2Dy1.yPixel0); +this.doZoom(this.pin2Dx0.getXVal(), this.getScale().minY, this.pin2Dx1.getXVal(), this.getScale().maxY, false, false, false, true, false); +return true; +}if (widget === this.pin2Dy0 || widget === this.pin2Dy1 || widget === this.pin2Dy01) { +yPixel = this.fixY(yPixel); +widget.setY(this.imageView.toSubspectrumIndex(yPixel), yPixel); +if (widget === this.pin2Dy01) { +var dp = yPixel - Clazz_doubleToInt((this.pin2Dy0.yPixel0 + this.pin2Dy1.yPixel0) / 2) + 1; +yPixel = this.pin2Dy0.yPixel0 + dp; +var yPixel1 = this.pin2Dy1.yPixel0 + dp; +if (yPixel != this.fixY(yPixel) || yPixel1 != this.fixY(yPixel1)) return true; +this.pin2Dy0.setY(this.imageView.toSubspectrumIndex(yPixel), yPixel); +this.pin2Dy1.setY(this.imageView.toSubspectrumIndex(yPixel1), yPixel1); +}if (!JSV.common.GraphSet.isGoodEvent(this.pin2Dy0, this.pin2Dy1, false)) { +this.reset2D(false); +return true; +}this.imageView.setView0(this.pin2Dx0.xPixel0, this.pin2Dy0.yPixel0, this.pin2Dx1.xPixel1, this.pin2Dy1.yPixel1); +return true; +}return false; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "clearIntegrals", +function(){ +this.checkIntegral(NaN, 0, false); +}); +Clazz_defineMethod(c$, "clearMeasurements", +function(){ +this.removeDialog(this.getFixedSelectedSpectrumIndex(), JSV.common.Annotation.AType.Measurements); +}); +c$.createGraphSetsAndSetLinkMode = Clazz_defineMethod(c$, "createGraphSetsAndSetLinkMode", +function(pd, jsvp, spectra, startIndex, endIndex, linkMode){ +var graphSets = new JU.Lst(); +for (var i = 0; i < spectra.size(); i++) { +var spec = spectra.get(i); +var graphSet = (linkMode === JSV.common.PanelData.LinkMode.NONE ? JSV.common.GraphSet.findCompatibleGraphSet(graphSets, spec) : null); +if (graphSet == null) graphSets.addLast(graphSet = new JSV.common.GraphSet(jsvp.getPanelData())); +graphSet.addSpec(spec); +} +JSV.common.GraphSet.setFractionalPositions(pd, graphSets, linkMode); +for (var i = graphSets.size(); --i >= 0; ) { +graphSets.get(i).initGraphSet(startIndex, endIndex); +JU.Logger.info("JSVGraphSet " + (i + 1) + " nSpectra = " + graphSets.get(i).nSpectra); +} +return graphSets; +}, "JSV.common.PanelData,JSV.api.JSVPanel,JU.Lst,~N,~N,JSV.common.PanelData.LinkMode"); +Clazz_defineMethod(c$, "drawGraphSet", +function(gMain, gFront, gBack, width, height, left, right, top, bottom, isResized, taintedAll, pointsOnly){ +this.zoomEnabled = this.pd.getBoolean(JSV.common.ScriptToken.ENABLEZOOM); +this.height = height * this.pd.scalingFactor; +this.width = width * this.pd.scalingFactor; +this.left = left * this.pd.scalingFactor; +this.right = right * this.pd.scalingFactor; +this.top = top * this.pd.scalingFactor; +this.bottom = bottom * this.pd.scalingFactor; +this.$haveSelectedSpectrum = false; +this.selectedSpectrumIntegrals = null; +this.selectedSpectrumMeasurements = null; +if (!this.pd.isPrinting && this.widgets != null) for (var j = 0; j < this.widgets.length; j++) if (this.widgets[j] != null) this.widgets[j].isVisible = false; + +for (var iSplit = 0; iSplit < this.nSplit; iSplit++) { +this.setPositionForFrame(iSplit); +this.drawAll(gMain, gFront, gBack, iSplit, isResized || this.nSplit > 1, taintedAll, pointsOnly); +} +this.setPositionForFrame(this.nSplit > 1 ? this.pd.currentSplitPoint : 0); +if (this.pd.isPrinting) return; +}, "~O,~O,~O,~N,~N,~N,~N,~N,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "escapeKeyPressed", +function(isDEL){ +if (this.zoomBox1D != null) this.zoomBox1D.xPixel0 = this.zoomBox1D.xPixel1 = 0; +if (this.zoomBox2D != null) this.zoomBox2D.xPixel0 = this.zoomBox2D.xPixel1 = 0; +if (!this.inPlotMove) return; +if (this.pendingMeasurement != null) { +this.pendingMeasurement = null; +return; +}this.pd.thisWidget = null; +this.pendingMeasurement = null; +if (this.selectedSpectrumMeasurements != null && this.selectedMeasurement != null) { +if (isDEL) this.selectedSpectrumMeasurements.clear(this.getScale().minXOnScale, this.getScale().maxXOnScale); + else this.selectedSpectrumMeasurements.removeObj(this.selectedMeasurement); +this.selectedMeasurement = null; +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}if (this.selectedSpectrumIntegrals != null && this.selectedIntegral != null) { +if (isDEL) this.selectedSpectrumIntegrals.clear(this.getScale().minXOnScale, this.getScale().maxXOnScale); + else this.selectedSpectrumIntegrals.removeObj(this.selectedIntegral); +this.selectedIntegral = null; +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +}}, "~B"); +c$.findGraphSet = Clazz_defineMethod(c$, "findGraphSet", +function(graphSets, xPixel, yPixel){ +for (var i = graphSets.size(); --i >= 0; ) if (graphSets.get(i).hasPoint(xPixel, yPixel)) return graphSets.get(i); + +return null; +}, "JU.Lst,~N,~N"); +Clazz_defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +var pi2 = null; +for (var i = 0; i < this.spectra.size(); i++) if ((pi2 = (this.spectra.get(i)).findMatchingPeakInfo(pi)) != null) break; + +return pi2; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getCurrentSpectrumIndex", +function(){ +return (this.nSpectra == 1 ? 0 : this.iSpectrumSelected); +}); +Clazz_defineMethod(c$, "getSelectedIntegral", +function(){ +return this.selectedIntegral; +}); +Clazz_defineMethod(c$, "getShowAnnotation", +function(type, i){ +var id = this.getDialog(type, i); +return (id != null && id.getState()); +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "hasFileLoaded", +function(filePath){ +for (var i = this.spectra.size(); --i >= 0; ) if (this.spectra.get(i).getFilePathForwardSlash().equals(filePath)) return true; + +return false; +}, "~S"); +Clazz_defineMethod(c$, "haveSelectedSpectrum", +function(){ +return this.$haveSelectedSpectrum; +}); +Clazz_defineMethod(c$, "mouseClickedEvent", +function(xPixel, yPixel, clickCount, isControlDown){ +this.selectedMeasurement = null; +this.selectedIntegral = null; +var isNextClick = this.nextClickForSetPeak; +this.nextClickForSetPeak = null; +if (this.checkArrowUpDownClick(xPixel, yPixel) || this.checkArrowLeftRightClick(xPixel, yPixel)) return; +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +if (this.isSplitWidget(xPixel, yPixel)) { +this.splitStack(this.nSplit == 1); +return; +}if (this.isCloserWidget(xPixel, yPixel)) { +this.pd.closeSpectrum(); +return; +}var pw = this.getPinSelected(xPixel, yPixel); +if (pw != null) { +this.setWidgetValueByUser(pw); +return; +}var is2D = this.is2dClick(xPixel, yPixel); +if (clickCount == 2 && this.iSpectrumClicked == -1 && this.iPreviousSpectrumClicked >= 0) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +}if (!is2D && isControlDown) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, -3); +} else if (this.iSpectrumClicked >= 0) { +this.processPendingMeasurement(xPixel, yPixel, 3); +}return; +}this.lastXMax = NaN; +if (clickCount == 2) { +if (is2D) { +if (this.sticky2Dcursor) { +this.addAnnotation(this.getAnnotation(this.imageView.toX(xPixel), this.imageView.toSubspectrumIndex(yPixel), this.pd.coordStr, false, true, 5, 5), true); +}this.sticky2Dcursor = true; +this.set2DCrossHairs(xPixel, yPixel); +return; +}if (this.isInTopBar(xPixel, yPixel)) { +this.doZoom(this.toX0(this.xPixel0), 0, this.toX0(this.xPixel1), 0, true, false, false, true, true); +} else if (this.isInRightBar(xPixel, yPixel)) { +this.doZoom(this.getScale().minXOnScale, this.viewList.get(0).getScale().minYOnScale, this.getScale().maxXOnScale, this.viewList.get(0).getScale().maxYOnScale, true, true, false, false, false); +} else if (this.isInTopBar2D(xPixel, yPixel)) { +this.reset2D(true); +} else if (this.isInRightBar2D(xPixel, yPixel)) { +this.reset2D(false); +} else if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, -2); +} else if (this.iSpectrumClicked >= 0) { +this.processPendingMeasurement(xPixel, yPixel, 2); +}return; +}if (is2D) { +if (this.annotations != null) { +var xy = new JSV.common.Coordinate().set(this.imageView.toX(xPixel), this.imageView.toSubspectrumIndex(yPixel)); +var a = this.findAnnotation2D(xy); +if (a != null && this.setAnnotationText(a)) { +return; +}}if (clickCount == 1) this.sticky2Dcursor = false; +this.set2DCrossHairs(xPixel, yPixel); +return; +}if (this.isInPlotRegion(xPixel, yPixel)) { +if (this.selectedSpectrumIntegrals != null && this.checkIntegralNormalizationClick(xPixel, yPixel)) return; +if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, 1); +return; +}this.setCoordClicked(xPixel, this.toX(xPixel), this.toY(yPixel)); +this.updateDialog(JSV.common.Annotation.AType.PeakList, -1); +if (isNextClick != null) { +this.nextClickForSetPeak = isNextClick; +this.shiftSpectrum(4, NaN, NaN); +this.nextClickForSetPeak = null; +return; +}} else { +this.setCoordClicked(0, NaN, 0); +}this.pd.notifyPeakPickedListeners(null); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "is2dClick", +function(xPixel, yPixel){ +return (this.imageView != null && xPixel == this.imageView.fixX(xPixel) && yPixel == this.fixY(yPixel)); +}, "~N,~N"); +Clazz_defineMethod(c$, "updateDialog", +function(type, iSpec){ +var ad = this.getDialog(type, iSpec); +if (ad == null || !this.isVisible(ad)) return; +var xRange = this.toX(this.xPixel1) - this.toX(this.xPixel0); +var yOffset = (this.getSpectrum().isInverted() ? this.yPixel1 - this.pd.mouseY : this.pd.mouseY - this.yPixel0); +(ad).update(this.pd.coordClicked, xRange, yOffset); +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "isVisible", +function(ad){ +return ad != null && (ad.isDialog() && ad.isVisible()); +}, "JSV.api.AnnotationData"); +Clazz_defineMethod(c$, "mousePressedEvent", +function(xPixel, yPixel, clickCount){ +this.checkWidgetEvent(xPixel, yPixel, true); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "mouseReleasedEvent", +function(xPixel, yPixel){ +if (this.pendingMeasurement != null) { +if (Math.abs(this.toPixelX(this.pendingMeasurement.getXVal()) - xPixel) < 2) this.pendingMeasurement = null; +this.processPendingMeasurement(xPixel, yPixel, -2); +this.setToolTipForPixels(xPixel, yPixel); +return; +}if (this.pd.integralShiftMode != 0) { +this.pd.integralShiftMode = 0; +this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0; +return; +}if (this.iSpectrumMovedTo >= 0) this.setScale(this.iSpectrumMovedTo); +var thisWidget = this.pd.thisWidget; +if (this.pd.isIntegralDrag) { +if (JSV.common.GraphSet.isGoodEvent(this.zoomBox1D, null, true)) { +this.checkIntegral(this.toX(this.zoomBox1D.xPixel0), this.toX(this.zoomBox1D.xPixel1), true); +}this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0 = 0; +this.pendingIntegral = null; +this.pd.isIntegralDrag = false; +} else if (thisWidget === this.zoomBox2D) { +if (!JSV.common.GraphSet.isGoodEvent(this.zoomBox2D, null, true)) return; +this.imageView.setZoom(this.zoomBox2D.xPixel0, this.zoomBox2D.yPixel0, this.zoomBox2D.xPixel1, this.zoomBox2D.yPixel1); +this.zoomBox2D.xPixel1 = this.zoomBox2D.xPixel0; +this.doZoom(this.imageView.toX(this.imageView.xPixel0), this.getScale().minY, this.imageView.toX(this.imageView.xPixel0 + this.imageView.xPixels - 1), this.getScale().maxY, false, false, false, true, true); +} else if (thisWidget === this.zoomBox1D) { +if (!JSV.common.GraphSet.isGoodEvent(this.zoomBox1D, null, true)) return; +var x1 = this.zoomBox1D.xPixel1; +var doY = (this.pd.shiftPressed); +this.doZoom(this.toX(this.zoomBox1D.xPixel0), (doY ? this.toY(this.zoomBox1D.yPixel0) : 0), this.toX(x1), (doY ? this.toY(this.zoomBox1D.yPixel1) : 0), true, doY, true, true, true); +this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0; +} else if (thisWidget === this.pin1Dx0 || thisWidget === this.pin1Dx1 || thisWidget === this.cur2Dx0 || thisWidget === this.cur2Dx1) { +this.addCurrentZoom(); +}}, "~N,~N"); +Clazz_defineMethod(c$, "mouseMovedEvent", +function(xPixel, yPixel){ +if (this.nSpectra > 1) { +var iFrame = this.getSplitPoint(yPixel); +this.setPositionForFrame(iFrame); +this.setSpectrumMovedTo(this.nSplit > 1 ? iFrame : this.iSpectrumSelected); +if (this.iSpectrumMovedTo >= 0) this.setScale(this.iSpectrumMovedTo); +}this.inPlotMove = this.isInPlotRegion(xPixel, yPixel); +this.setXPixelMovedTo(1.7976931348623157E308, 1.7976931348623157E308, (this.inPlotMove ? xPixel : -1), -1); +if (this.inPlotMove) { +this.xValueMovedTo = this.toX(this.xPixelMovedTo); +this.yValueMovedTo = this.getSpectrum().getYValueAt(this.xValueMovedTo); +}if (this.pd.integralShiftMode != 0) { +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +var xy = (ad.getData()).getXYCoords(); +var y = xy[this.pd.integralShiftMode > 0 ? xy.length - 1 : 0].getYVal(); +(ad.getData()).shiftY(this.pd.integralShiftMode, this.toPixelYint(y) + yPixel - (this.pd.integralShiftMode > 0 ? this.yPixelPlot1 : this.yPixelPlot0), this.yPixel0, this.yPixels); +} else if (this.pd.isIntegralDrag) { +} else if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, 0); +this.setToolTipForPixels(xPixel, yPixel); +} else { +this.selectedMeasurement = (this.inPlotMove && this.selectedSpectrumMeasurements != null ? this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 0) : null); +this.selectedIntegral = null; +if (this.inPlotMove && this.selectedSpectrumIntegrals != null && this.selectedMeasurement == null) { +this.selectedIntegral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, 0); +if (this.selectedIntegral == null) this.selectedIntegral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, -5); +}this.setToolTipForPixels(xPixel, yPixel); +if (this.imageView == null) { +this.piMouseOver = null; +var iSpec = (this.nSplit > 1 ? this.iSpectrumMovedTo : this.iSpectrumClicked); +if (!this.isDrawNoSpectra() && iSpec >= 0) { +var spec = this.spectra.get(iSpec); +if (spec.getPeakList() != null) { +this.coordTemp.setXVal(this.toX(xPixel)); +this.coordTemp.setYVal(this.toY(yPixel)); +this.piMouseOver = spec.findPeakByCoord(xPixel, this.coordTemp); +}}} else { +if (!this.pd.display1D && this.sticky2Dcursor) { +this.set2DCrossHairs(xPixel, yPixel); +}}}}, "~N,~N"); +Clazz_defineMethod(c$, "nextView", +function(){ +if (this.currentZoomIndex + 1 < this.viewList.size()) this.setZoomTo(this.currentZoomIndex + 1); +}); +Clazz_defineMethod(c$, "previousView", +function(){ +if (this.currentZoomIndex > 0) this.setZoomTo(this.currentZoomIndex - 1); +}); +Clazz_defineMethod(c$, "resetView", +function(){ +this.setZoomTo(0); +}); +Clazz_defineMethod(c$, "removeAllHighlights", +function(){ +this.removeAllHighlights(null); +}); +Clazz_defineMethod(c$, "removeHighlight", +function(index){ +this.highlights.removeItemAt(index); +}, "~N"); +Clazz_defineMethod(c$, "removeHighlight", +function(x1, x2){ +for (var i = this.highlights.size(); --i >= 0; ) { +var h = this.highlights.get(i); +if (h.x1 == x1 && h.x2 == x2) this.highlights.removeItemAt(i); +} +}, "~N,~N"); +Clazz_defineMethod(c$, "scaleYBy", +function(factor){ +if (this.imageView == null && !this.zoomEnabled) return; +this.viewData.scaleSpectrum(this.imageView == null ? this.iSpectrumSelected : -2, factor); +if (this.imageView != null) { +this.update2dImage(false); +this.resetPinsFromView(); +}this.pd.refresh(); +}, "~N"); +Clazz_defineMethod(c$, "selectSpectrum", +function(filePath, type, model){ +var haveFound = false; +for (var i = this.spectra.size(); --i >= 0; ) if ((filePath == null || this.getSpectrumAt(i).getFilePathForwardSlash().equals(filePath)) && (this.getSpectrumAt(i).matchesPeakTypeModel(type, model))) { +this.setSpectrumSelected(i); +if (this.nSplit > 1) this.splitStack(true); +haveFound = true; +} +if (this.nSpectra > 1 && !haveFound && this.iSpectrumSelected >= 0 && !this.pd.isCurrentGraphSet(this)) this.setSpectrumSelected(-2147483648); +return haveFound; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +var pi; +for (var i = this.spectra.size(); --i >= 0; ) if ((pi = this.getSpectrumAt(i).selectPeakByFileIndex(filePath, index, atomKey)) != null) return pi; + +return null; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "setSelected", +function(i){ +if (i < 0) { +this.bsSelected.clearAll(); +this.setSpectrumClicked(-1); +return; +}this.bsSelected.set(i); +this.setSpectrumClicked((this.bsSelected.cardinality() == 1 ? i : -1)); +if (this.nSplit > 1 && i >= 0) this.pd.currentSplitPoint = i; +}, "~N"); +Clazz_defineMethod(c$, "setSelectedIntegral", +function(val){ +var spec = this.selectedIntegral.getSpectrum(); +this.getIntegrationGraph(this.getSpectrumIndex(spec)).setSelectedIntegral(this.selectedIntegral, val); +}, "~N"); +Clazz_defineMethod(c$, "setShowAnnotation", +function(type, tfToggle){ +var id = this.getDialog(type, -1); +if (id == null) { +if (tfToggle != null && tfToggle !== Boolean.TRUE) return; +if (type === JSV.common.Annotation.AType.PeakList || type === JSV.common.Annotation.AType.Integration || type === JSV.common.Annotation.AType.Measurements) this.pd.showDialog(type); +return; +}if (tfToggle == null) { +if (id.isDialog()) (id).setVisible(!(id).isVisible()); + else this.pd.showDialog(type); +return; +}var isON = tfToggle.booleanValue(); +if (isON) id.setState(isON); +if (isON || id.isDialog()) this.pd.showDialog(type); +if (!isON && id.isDialog()) (id).setVisible(false); +}, "JSV.common.Annotation.AType,Boolean"); +Clazz_defineMethod(c$, "checkIntegralParams", +function(parameters, value){ +var spec = this.getSpectrum(); +if (!spec.canIntegrate() || this.reversePlot) return false; +var iSpec = this.getFixedSelectedSpectrumIndex(); +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (value == null) return true; +switch (JSV.common.IntegralData.IntMode.getMode(value.toUpperCase())) { +case JSV.common.IntegralData.IntMode.NA: +return false; +case JSV.common.IntegralData.IntMode.CLEAR: +this.integrate(iSpec, null); +this.integrate(iSpec, parameters); +break; +case JSV.common.IntegralData.IntMode.ON: +if (ad == null) this.integrate(iSpec, parameters); + else ad.setState(true); +break; +case JSV.common.IntegralData.IntMode.OFF: +if (ad != null) ad.setState(false); +break; +case JSV.common.IntegralData.IntMode.TOGGLE: +if (ad == null) this.integrate(iSpec, parameters); + else ad.setState(!ad.getState()); +break; +case JSV.common.IntegralData.IntMode.AUTO: +if (ad == null) { +this.checkIntegralParams(parameters, "ON"); +ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +}if (ad != null) (ad.getData()).autoIntegrate(); +break; +case JSV.common.IntegralData.IntMode.LIST: +this.pd.showDialog(JSV.common.Annotation.AType.Integration); +break; +case JSV.common.IntegralData.IntMode.MARK: +if (ad == null) { +this.checkIntegralParams(parameters, "ON"); +ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +}if (ad != null) (ad.getData()).addMarks(value.substring(4).trim()); +break; +case JSV.common.IntegralData.IntMode.MIN: +if (ad != null) { +try { +var val = Double.parseDouble(JSV.common.ScriptToken.getTokens(value).get(1)); +(ad.getData()).setMinimumIntegral(val); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}break; +case JSV.common.IntegralData.IntMode.UPDATE: +if (ad != null) (ad.getData()).update(parameters); +} +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +return true; +}, "JSV.common.Parameters,~S"); +Clazz_defineMethod(c$, "setSpectrum", +function(iSpec, fromSplit){ +if (fromSplit && this.nSplit > 1) { +if (this.nSplit > 1) this.setSpectrumClicked(iSpec); +} else { +this.setSpectrumClicked(iSpec); +this.stackSelected = false; +this.showAllStacked = false; +}if (iSpec >= 0) this.dialogsToFront(this.getSpectrum()); +}, "~N,~B"); +Clazz_defineMethod(c$, "setSpectrumJDX", +function(spec){ +var pt = this.getFixedSelectedSpectrumIndex(); +this.spectra.removeItemAt(pt); +this.spectra.add(pt, spec); +this.pendingMeasurement = null; +this.clearViews(); +this.viewData.newSpectrum(this.spectra); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setZoom", +function(x1, y1, x2, y2){ +this.setZoomTo(0); +if (x1 == 0 && x2 == 0 && y1 == 0 && y2 == 0) { +this.newPins(); +this.imageView = null; +x1 = this.getScale().minXOnScale; +x2 = this.getScale().maxXOnScale; +} else { +this.doZoom(x1, y1, x2, y2, true, (y1 != y2), false, true, true); +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "shiftSpectrum", +function(mode, xOld, xNew){ +var spec = this.getSpectrum(); +if (!spec.isNMR() || !spec.is1D()) return false; +var ok = null; +var dx = 0; +if (xNew == 1.7976931348623157E308) { +dx = -spec.addSpecShift(0); +} else { +switch (mode) { +case 3: +dx = xNew; +break; +case 1: +case 2: +this.nextClickMode = mode; +if (Double.isNaN(xOld)) { +ok = this.pd.getInput("Click on " + (mode == 1 ? "or beside a peak to set its chemical shift" : "the spectrum set the chemical shift at that point") + (xNew == -2147483648 ? "" : " to " + xNew) + ".", "Set Reference " + (mode == 1 ? "for Peak" : "at Point"), "OK"); +this.nextClickForSetPeak = ("OK".equals(ok) ? Double.$valueOf(xNew) : null); +return false; +}this.nextClickForSetPeak = null; +case 4: +if (this.nextClickForSetPeak != null) { +xNew = this.nextClickForSetPeak.doubleValue(); +this.nextClickForSetPeak = null; +}if (Double.isNaN(xOld)) xOld = this.lastClickX; +if (this.nextClickMode == 1) xOld = this.getNearestPeak(spec, xOld, this.toY(this.pd.mouseY)); +if (Double.isNaN(xNew)) try { +var s = this.pd.getInput("New chemical shift (set blank to reset)", "Set Reference", JU.DF.formatDecimalDbl(xOld, this.getScale().precision[0])).trim(); +if (s.length == 0) xNew = xOld - spec.addSpecShift(0); + else xNew = Double.parseDouble(s); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +dx = xNew - xOld; +break; +} +}if (dx == 0) return false; +spec.addSpecShift(dx); +if (this.annotations != null) for (var i = this.annotations.size(); --i >= 0; ) if (this.annotations.get(i).spec === spec) this.annotations.get(i).addSpecShift(dx); + +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getValue().getSpectrum() === spec) e.getValue().setSpecShift(dx); + +this.getScale().addSpecShift(dx); +if (!Double.isNaN(this.lastClickX)) this.lastClickX += dx; +this.updateDialogs(); +this.doZoom(0, this.getScale().minYOnScale, 0, this.getScale().maxYOnScale, true, true, false, true, false); +this.pd.setTaintedAll(); +this.pd.repaint(); +return true; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "toPeak", +function(istep){ +istep *= (this.drawXAxisLeftToRight ? 1 : -1); +if (Double.isNaN(this.lastClickX)) this.lastClickX = this.lastPixelX = 0; +var spec = this.getSpectrum(); +var coord = this.setCoordClicked(this.lastPixelX, this.lastClickX, 0); +var iPeak = spec.setNextPeak(coord, istep); +if (iPeak < 0) return; +var peak = spec.getPeakList().get(iPeak); +spec.setSelectedPeak(peak); +this.setCoordClicked(peak.getXPixel(), peak.getX(), 0); +this.pd.notifyPeakPickedListeners( new JSV.common.PeakPickEvent(this.jsvp, this.pd.coordClicked, peak)); +}, "~N"); +Clazz_defineMethod(c$, "scaleSelectedBy", +function(f){ +for (var i = this.bsSelected.nextSetBit(0); i >= 0; i = this.bsSelected.nextSetBit(i + 1)) this.viewData.scaleSpectrum(i, f); + +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "gs: " + this.nSpectra + " " + this.spectra + " " + this.spectra.get(0).getFilePath(); +}); +Clazz_defineMethod(c$, "setXPointer", +function(spec, x){ +if (spec != null) this.setSpectrumClicked(this.getSpectrumIndex(spec)); +this.xValueMovedTo = this.lastClickX = x; +this.lastPixelX = this.toPixelX(x); +this.setXPixelMovedTo(x, 1.7976931348623157E308, 0, 0); +this.yValueMovedTo = NaN; +}, "JSV.common.Spectrum,~N"); +Clazz_defineMethod(c$, "setXPointer2", +function(spec, x){ +if (spec != null) this.setSpectrumClicked(this.getSpectrumIndex(spec)); +this.setXPixelMovedTo(1.7976931348623157E308, x, 0, 0); +}, "JSV.common.Spectrum,~N"); +Clazz_defineMethod(c$, "hasCurrentMeasurement", +function(type){ +return ((type === JSV.common.Annotation.AType.Integration ? this.selectedSpectrumIntegrals : this.selectedSpectrumMeasurements) != null); +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "getDialog", +function(type, iSpec){ +if (iSpec == -1) iSpec = this.getCurrentSpectrumIndex(); +return (this.dialogs == null || iSpec < 0 ? null : this.dialogs.get(type + "_" + iSpec)); +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "removeDialog", +function(iSpec, type){ +if (this.dialogs != null && iSpec >= 0) this.dialogs.remove(type + "_" + iSpec); +}, "~N,JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "addDialog", +function(iSpec, type, dialog){ +if (this.dialogs == null) this.dialogs = new java.util.Hashtable(); +var key = type + "_" + iSpec; +dialog.setGraphSetKey(key); +this.dialogs.put(key, dialog); +return dialog; +}, "~N,JSV.common.Annotation.AType,JSV.api.AnnotationData"); +Clazz_defineMethod(c$, "removeDialog", +function(dialog){ +var key = dialog.getGraphSetKey(); +this.dialogs.remove(key); +var data = dialog.getData(); +if (data != null) this.dialogs.put(key, data); +}, "JSV.dialog.JSVDialog"); +Clazz_defineMethod(c$, "getPeakListing", +function(iSpec, p, forceNew){ +if (iSpec < 0) iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) return null; +var dialog = this.getDialog(JSV.common.Annotation.AType.PeakList, -1); +if (dialog == null) { +if (!forceNew) return null; +this.addDialog(iSpec, JSV.common.Annotation.AType.PeakList, dialog = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.getSpectrum())); +}(dialog.getData()).setPeakList(p, -2147483648, this.viewData.getScale()); +if (dialog.isDialog()) (dialog).setFields(); +return dialog.getData(); +}, "~N,JSV.common.Parameters,~B"); +Clazz_defineMethod(c$, "setPeakListing", +function(tfToggle){ +var dialog = this.getDialog(JSV.common.Annotation.AType.PeakList, -1); +var ad = (dialog != null && dialog.isDialog() ? dialog : null); +var isON = (tfToggle == null ? ad == null || !ad.isVisible() : tfToggle.booleanValue()); +if (isON) { +this.pd.showDialog(JSV.common.Annotation.AType.PeakList); +} else { +if (dialog.isDialog()) (dialog).setVisible(false); +}}, "Boolean"); +Clazz_defineMethod(c$, "haveIntegralDisplayed", +function(i){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, i); +return (ad != null && ad.getState()); +}, "~N"); +Clazz_defineMethod(c$, "getIntegrationGraph", +function(i){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, i); +return (ad == null ? null : ad.getData()); +}, "~N"); +Clazz_defineMethod(c$, "setIntegrationRatios", +function(value){ +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (this.aIntegrationRatios == null) this.aIntegrationRatios = new Array(this.nSpectra); +this.aIntegrationRatios[iSpec] = JSV.common.IntegralData.getIntegrationRatiosFromString(this.getSpectrum(), value); +}, "~S"); +Clazz_defineMethod(c$, "getIntegrationRatios", +function(i){ +return (this.aIntegrationRatios == null ? null : this.aIntegrationRatios[i]); +}, "~N"); +Clazz_defineMethod(c$, "integrate", +function(iSpec, parameters){ +var spec = this.getSpectrumAt(iSpec); +if (parameters == null || !spec.canIntegrate()) { +this.removeDialog(iSpec, JSV.common.Annotation.AType.Integration); +return false; +}this.addDialog(iSpec, JSV.common.Annotation.AType.Integration, new JSV.common.IntegralData(spec, parameters)); +return true; +}, "~N,JSV.common.Parameters"); +Clazz_defineMethod(c$, "getIntegration", +function(iSpec, p, forceNew){ +if (iSpec < 0) iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) return null; +var dialog = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (dialog == null) { +if (!forceNew) return null; +dialog = this.addDialog(iSpec, JSV.common.Annotation.AType.Integration, new JSV.common.IntegralData(this.getSpectrum(), p)); +}return dialog.getData(); +}, "~N,JSV.common.Parameters,~B"); +Clazz_defineMethod(c$, "getMeasurementInfo", +function(type, iSpec){ +var md; +switch (type) { +case JSV.common.Annotation.AType.PeakList: +md = this.getPeakListing(iSpec, null, false); +break; +case JSV.common.Annotation.AType.Integration: +md = this.getIntegration(iSpec, null, false); +break; +default: +return null; +} +if (md == null) return null; +var info = new java.util.Hashtable(); +md.getInfo(info); +return info; +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "getInfo", +function(key, iSpec){ +var spectraInfo = new java.util.Hashtable(); +if ("".equals(key)) { +spectraInfo.put("KEYS", "viewInfo spectra"); +} else if ("viewInfo".equalsIgnoreCase(key)) return this.getScale().getInfo(spectraInfo); +var specInfo = new JU.Lst(); +spectraInfo.put("spectra", specInfo); +for (var i = 0; i < this.nSpectra; i++) { +if (iSpec >= 0 && i != iSpec) continue; +var spec = this.spectra.get(i); +var info = spec.getInfo(key); +if (iSpec >= 0 && key != null && (info.size() == 2 || key.equalsIgnoreCase("id"))) { +if (info.size() == 2) info.remove("id"); +return info; +}JSV.common.Parameters.putInfo(key, info, "type", spec.getDataType()); +JSV.common.Parameters.putInfo(key, info, "titleLabel", spec.getTitleLabel()); +JSV.common.Parameters.putInfo(key, info, "filePath", spec.getFilePath().$replace('\\', '/')); +JSV.common.Parameters.putInfo(key, info, "PeakList", (JSV.common.Parameters.isMatch(key, "PeakList") ? this.getMeasurementInfo(JSV.common.Annotation.AType.PeakList, i) : null)); +JSV.common.Parameters.putInfo(key, info, "Integration", (JSV.common.Parameters.isMatch(key, "Integration") ? this.getMeasurementInfo(JSV.common.Annotation.AType.Integration, i) : null)); +if (iSpec >= 0) return info; +specInfo.addLast(info); +} +return spectraInfo; +}, "~S,~N"); +Clazz_defineMethod(c$, "getTitle", +function(forPrinting){ +return (this.nSpectra == 1 || this.iSpectrumSelected >= 0 && (!forPrinting || this.nSplit == 1) ? this.getSpectrum().getTitle() : null); +}, "~B"); +Clazz_defineMethod(c$, "getCurrentView", +function(){ +this.setScale(this.getFixedSelectedSpectrumIndex()); +return this.viewData.getScale(); +}); +Clazz_defineMethod(c$, "set2DXY", +function(x, y, isLocked){ +var p; +if (this.gs2dLinkedX != null) { +p = this.toPixelX(x); +if (p != this.fixX(p)) { +p = -2147483648; +x = 1.7976931348623157E308; +}this.cur1D2x1.setX(x, p); +}if (this.gs2dLinkedY != null) { +p = this.toPixelX(y); +if (p != this.fixX(p)) { +p = -2147483648; +y = 1.7976931348623157E308; +}this.cur1D2x2.setX(y, p); +}this.cur1D2Locked = isLocked; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "dialogsToFront", +function(spec){ +if (this.dialogs == null) return; +if (spec == null) spec = this.getSpectrum(); +for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (this.isVisible(ad)) { +if (spec == null) (ad).setVisible(true); + else (ad).setFocus(ad.getSpectrum() === spec); +}} +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setPlotColors", +function(oColors){ +var colors = oColors; +if (colors.length > this.nSpectra) { +var tmpPlotColors = new Array(this.nSpectra); +System.arraycopy(colors, 0, tmpPlotColors, 0, this.nSpectra); +colors = tmpPlotColors; +} else if (this.nSpectra > colors.length) { +var tmpPlotColors = new Array(this.nSpectra); +var numAdditionColors = this.nSpectra - colors.length; +System.arraycopy(colors, 0, tmpPlotColors, 0, colors.length); +for (var i = 0, j = colors.length; i < numAdditionColors; i++, j++) tmpPlotColors[j] = this.generateRandomColor(); + +colors = tmpPlotColors; +}this.plotColors = colors; +}, "~O"); +Clazz_defineMethod(c$, "disposeImage", +function(){ +{ +if (this.image2D != null) +this.image2D.parentNode.removeChild(this.image2D); +}this.image2D = null; +this.jsvp = null; +this.pd = null; +this.highlights = null; +this.plotColors = null; +}); +Clazz_defineMethod(c$, "generateRandomColor", +function(){ +while (true) { +var red = Clazz_doubleToInt(Math.random() * 255); +var green = Clazz_doubleToInt(Math.random() * 255); +var blue = Clazz_doubleToInt(Math.random() * 255); +var randomColor = this.g2d.getColor3(red, green, blue); +if (randomColor.getRGB() != 0) return randomColor; +} +}); +Clazz_defineMethod(c$, "setPlotColor0", +function(oColor){ +this.plotColors[0] = oColor; +}, "~O"); +Clazz_defineMethod(c$, "getPlotColor", +function(index){ +if (index >= this.plotColors.length) return null; +return this.plotColors[index]; +}, "~N"); +Clazz_defineMethod(c$, "setColorFromToken", +function(og, whatColor){ +if (whatColor != null) this.g2d.setGraphicsColor(og, whatColor === JSV.common.ScriptToken.PLOTCOLOR ? this.plotColors[0] : this.pd.getColor(whatColor)); +}, "~O,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setPlotColor", +function(og, i){ +var c; +switch (i) { +case -3: +c = JSV.common.GraphSet.veryLightGrey; +break; +case -2: +c = this.pd.BLACK; +break; +case -1: +c = this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +break; +default: +c = this.plotColors[i]; +break; +} +this.g2d.setGraphicsColor(og, c); +}, "~O,~N"); +Clazz_defineMethod(c$, "draw2DImage", +function(){ +if (this.imageView != null) this.g2d.drawGrayScaleImage(this.gMain, this.image2D, this.imageView.xPixel0, this.imageView.yPixel0, this.imageView.xPixel0 + this.imageView.xPixels - 1, this.imageView.yPixel0 + this.imageView.yPixels - 1, this.imageView.xView1, this.imageView.yView1, this.imageView.xView2, this.imageView.yView2); +}); +Clazz_defineMethod(c$, "get2DImage", +function(spec0){ +this.imageView = new JSV.common.ImageView(); +this.imageView.set(this.viewList.get(0).getScale()); +if (!this.update2dImage(true)) return false; +this.imageView.resetZoom(); +this.sticky2Dcursor = true; +return true; +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "update2dImage", +function(isCreation){ +this.imageView.set(this.viewData.getScale()); +var spec = this.getSpectrumAt(0); +var buffer = this.imageView.get2dBuffer(spec, !isCreation); +if (buffer == null) { +this.image2D = null; +this.imageView = null; +return false; +}if (isCreation) { +buffer = this.imageView.adjustView(spec, this.viewData); +this.imageView.resetView(); +}this.image2D = this.g2d.newGrayScaleImage(this.gMain, this.image2D, this.imageView.imageWidth, this.imageView.imageHeight, buffer); +this.setImageWindow(); +return true; +}, "~B"); +Clazz_defineMethod(c$, "getAnnotation", +function(x, y, text, isPixels, is2d, offsetX, offsetY){ +return new JSV.common.ColoredAnnotation().setCA(x, y, this.getSpectrum(), text, this.pd.BLACK, isPixels, is2d, offsetX, offsetY); +}, "~N,~N,~S,~B,~B,~N,~N"); +Clazz_defineMethod(c$, "getAnnotation", +function(args, lastAnnotation){ +return JSV.common.Annotation.getColoredAnnotation(this.g2d, this.getSpectrum(), args, lastAnnotation); +}, "JU.Lst,JSV.common.Annotation"); +Clazz_defineMethod(c$, "fillBox", +function(g, x0, y0, x1, y1, whatColor){ +this.setColorFromToken(g, whatColor); +this.g2d.fillRect(g, Math.min(x0, x1), Math.min(y0, y1), Math.abs(x0 - x1), Math.abs(y0 - y1)); +}, "~O,~N,~N,~N,~N,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "drawBox", +function(g, x0, y0, x1, y1, whatColor){ +this.setColorFromToken(g, whatColor); +this.g2d.drawRect(g, Math.min(x0, x1), Math.min(y0, y1), Math.abs(x0 - x1) - 1, Math.abs(y0 - y1) - 1); +}, "~O,~N,~N,~N,~N,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "drawHandle", +function(g, x, y, size, outlineOnly){ +if (outlineOnly) this.g2d.drawRect(g, x - size, y - size, size * 2, size * 2); + else this.g2d.fillRect(g, x - size, y - size, size * 2 + 1, size * 2 + 1); +}, "~O,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setCurrentBoxColor", +function(g){ +this.g2d.setGraphicsColor(g, this.pd.BLACK); +}, "~O"); +Clazz_defineMethod(c$, "fillArrow", +function(g, type, x, y, doFill){ +var f = 1; +switch (type) { +case 1: +case 3: +f = -1; +break; +} +var axPoints = Clazz_newIntArray(-1, [x - 5, x - 5, x + 5, x + 5, x + 8, x, x - 8]); +var ayPoints = Clazz_newIntArray(-1, [y + 5 * f, y - f, y - f, y + 5 * f, y + 5 * f, y + 10 * f, y + 5 * f]); +switch (type) { +case 1: +case 2: +if (doFill) this.g2d.fillPolygon(g, ayPoints, axPoints, 7); + else this.g2d.drawPolygon(g, ayPoints, axPoints, 7); +break; +case 3: +case 4: +if (doFill) this.g2d.fillPolygon(g, axPoints, ayPoints, 7); + else this.g2d.drawPolygon(g, axPoints, ayPoints, 7); +} +}, "~O,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "fillCircle", +function(g, x, y, doFill){ +if (doFill) this.g2d.fillCircle(g, x - 4, y - 4, 8); + else this.g2d.drawCircle(g, x - 4, y - 4, 8); +}, "~O,~N,~N,~B"); +Clazz_defineMethod(c$, "setAnnotationColor", +function(g, note, whatColor){ +if (whatColor != null) { +this.setColorFromToken(g, whatColor); +return; +}var color = null; +if (Clazz_instanceOf(note,"JSV.common.ColoredAnnotation")) color = (note).getColor(); +if (color == null) color = this.pd.BLACK; +this.g2d.setGraphicsColor(g, color); +}, "~O,JSV.common.Annotation,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setSolutionColor", +function(vi, isNone, asFitted){ +for (var i = 0; i < this.nSpectra; i++) { +var spec = this.spectra.get(i); +var color = (isNone || !spec.canShowSolutionColor() ? -1 : vi.getColour(spec, asFitted)); +spec.setFillColor(color == -1 ? null : this.pd.vwr.parameters.getColor1(color)); +} +}, "JSV.api.VisibleInterface,~B,~B"); +Clazz_defineMethod(c$, "setIRMode", +function(mode, type){ +for (var i = 0; i < this.nSpectra; i++) { +var spec = this.spectra.get(i); +if (!spec.dataType.equals(type)) continue; +var spec2 = JSV.common.Spectrum.taConvert(spec, mode); +if (spec2 !== spec) this.pd.setSpecForIRMode(spec2); +} +}, "JSV.common.Spectrum.IRMode,~S"); +Clazz_defineMethod(c$, "getSpectrumCount", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "invertYAxis", +function(){ +this.viewList.get(0).init(null, 0, 0, this.getSpectrum().invertYAxis().isContinuous()); +this.resetViewCompletely(); +}); +c$.$GraphSet$Highlight$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.x1 = 0; +this.x2 = 0; +this.color = null; +this.spectrum = null; +Clazz_instantialize(this, arguments);}, JSV.common.GraphSet, "Highlight", null); +Clazz_makeConstructor(c$, +function(x1, x2, spec, color){ +this.x1 = x1; +this.x2 = x2; +this.color = color; +this.spectrum = spec; +}, "~N,~N,JSV.common.Spectrum,javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "highlight " + this.x1 + " " + this.x2 + " " + this.spectrum; +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz_instanceOf(obj,"JSV.common.GraphSet.Highlight"))) return false; +var hl = obj; +return ((hl.x1 == this.x1) && (hl.x2 == this.x2)); +}, "~O"); +/*eoif4*/})(); +}; +c$.RT2 = Math.sqrt(2.0); +c$.veryLightGrey = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.XYScaleConverter"], "JSV.common.ImageView", ["JSV.common.Coordinate", "$.ScaleData"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf2d = null; +this.grayFactorLast = 0; +this.averageGray = 0; +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.imageWidth = 0; +this.imageHeight = 0; +this.xPixels = 0; +this.yPixels = 0; +this.xPixelZoom1 = 0; +this.yPixelZoom1 = 0; +this.xPixelZoom2 = 0; +this.yPixelZoom2 = 0; +this.xView1 = 0; +this.yView1 = 0; +this.xView2 = 0; +this.yView2 = 0; +this.minX = NaN; +this.maxX = 0; +this.minY = 0; +this.maxY = 0; +this.minZ = 0; +this.maxZ = 0; +this.scaleData = null; +Clazz_instantialize(this, arguments);}, JSV.common, "ImageView", null, JSV.common.XYScaleConverter); +Clazz_defineMethod(c$, "set", +function(view){ +if (Double.isNaN(this.minX)) { +this.minX = view.minX; +this.maxX = view.maxX; +}this.minZ = view.minY; +this.maxZ = view.maxY; +this.scaleData = new JSV.common.ScaleData(); +}, "JSV.common.ScaleData"); +Clazz_defineMethod(c$, "setZoom", +function(xPixel1, yPixel1, xPixel2, yPixel2){ +this.xPixelZoom1 = Math.min(xPixel1, xPixel2); +this.yPixelZoom1 = Math.min(yPixel1, yPixel2); +this.xPixelZoom2 = Math.max(xPixel1, xPixel2); +this.yPixelZoom2 = Math.max(yPixel1, yPixel2); +this.setView(); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setXY0", +function(spec, xPixel, yPixel){ +this.xPixel0 = xPixel; +this.yPixel0 = yPixel; +this.xPixel1 = this.xPixel0 + this.xPixels - 1; +this.yPixel1 = this.yPixel0 + this.yPixels - 1; +this.setMinMaxY(spec); +}, "JSV.common.Spectrum,~N,~N"); +Clazz_defineMethod(c$, "setPixelWidthHeight", +function(xPixels, yPixels){ +this.xPixels = xPixels; +this.yPixels = yPixels; +}, "~N,~N"); +Clazz_defineMethod(c$, "resetView", +function(){ +this.xView1 = 0; +this.yView1 = 0; +this.xView2 = this.imageWidth - 1; +this.yView2 = this.imageHeight - 1; +}); +Clazz_defineMethod(c$, "setView", +function(){ +if (this.xPixelZoom1 == 0) this.resetZoom(); +var x1 = this.toImageX(this.xPixelZoom1); +var y1 = this.toImageY(this.yPixelZoom1); +var x2 = this.toImageX(this.xPixelZoom2); +var y2 = this.toImageY(this.yPixelZoom2); +this.xView1 = Math.min(x1, x2); +this.yView1 = Math.min(y1, y2); +this.xView2 = Math.max(x1, x2); +this.yView2 = Math.max(y1, y2); +this.setScaleData(); +this.resetZoom(); +}); +Clazz_defineMethod(c$, "resetZoom", +function(){ +this.xPixelZoom1 = this.xPixel0; +this.yPixelZoom1 = this.yPixel0; +this.xPixelZoom2 = this.xPixel1; +this.yPixelZoom2 = this.yPixel1; +}); +Clazz_defineMethod(c$, "toImageX", +function(xPixel){ +return this.xView1 + Clazz_doubleToInt(Math.floor((xPixel - this.xPixel0) / (this.xPixels - 1.0) * (this.xView2 - this.xView1))); +}, "~N"); +Clazz_defineMethod(c$, "toImageY", +function(yPixel){ +return this.yView1 + Clazz_doubleToInt(Math.floor((yPixel - this.yPixel0) / (this.yPixels - 1.0) * (this.yView2 - this.yView1))); +}, "~N"); +Clazz_defineMethod(c$, "toImageX0", +function(xPixel){ +return JSV.common.Coordinate.intoRange(Clazz_doubleToInt((1.0 * xPixel - this.xPixel0) / (this.xPixels - 1) * (this.imageWidth - 1)), 0, this.imageWidth - 1); +}, "~N"); +Clazz_defineMethod(c$, "toImageY0", +function(yPixel){ +return JSV.common.Coordinate.intoRange(Clazz_doubleToInt((1.0 * yPixel - this.yPixel0) / (this.yPixels - 1) * (this.imageHeight - 1)), 0, this.imageHeight - 1); +}, "~N"); +Clazz_defineMethod(c$, "isXWithinRange", +function(xPixel){ +return (xPixel >= this.xPixel0 - 5 && xPixel < this.xPixel0 + this.xPixels + 5); +}, "~N"); +Clazz_defineMethod(c$, "toSubspectrumIndex", +function(yPixel){ +return JSV.common.Coordinate.intoRange(this.imageHeight - 1 - this.toImageY(yPixel), 0, this.imageHeight - 1); +}, "~N"); +Clazz_defineMethod(c$, "toX0", +function(xPixel){ +return this.maxX + (this.minX - this.maxX) * (this.fixX(xPixel) - this.xPixel0) / (this.xPixels - 1); +}, "~N"); +Clazz_defineMethod(c$, "toPixelX0", +function(x){ +return this.xPixel1 - Clazz_doubleToInt((x - this.minX) / (this.maxX - this.minX) * (this.xPixels - 1)); +}, "~N"); +Clazz_defineMethod(c$, "toPixelY0", +function(ysub){ +return this.yPixel1 - Clazz_doubleToInt(ysub / (this.imageHeight - 1) * (this.yPixels - 1)); +}, "~N"); +Clazz_defineMethod(c$, "subIndexToPixelY", +function(subIndex){ +var f = 1.0 * (this.imageHeight - 1 - subIndex - this.yView1) / (this.yView2 - this.yView1); +var y = this.yPixel0 + Clazz_doubleToInt(f * (this.yPixels - 1)); +return y; +}, "~N"); +Clazz_defineMethod(c$, "fixSubIndex", +function(subIndex){ +return JSV.common.Coordinate.intoRange(subIndex, this.imageHeight - 1 - this.yView2, this.imageHeight - 1 - this.yView1); +}, "~N"); +Clazz_defineMethod(c$, "setView0", +function(xp1, yp1, xp2, yp2){ +var x1 = this.toImageX0(xp1); +var y1 = this.toImageY0(yp1); +var x2 = this.toImageX0(xp2); +var y2 = this.toImageY0(yp2); +this.xView1 = Math.min(x1, x2); +this.yView1 = Math.min(y1, y2); +this.xView2 = Math.max(x1, x2); +this.yView2 = Math.max(y1, y2); +this.resetZoom(); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "get2dBuffer", +function(spec, forceNew){ +var subSpectra = spec.getSubSpectra(); +if (subSpectra == null || !subSpectra.get(0).isContinuous()) return null; +var xyCoords = spec.getXYCoords(); +var nSpec = subSpectra.size(); +this.imageWidth = xyCoords.length; +this.imageHeight = nSpec; +var grayFactor = 255 / (this.maxZ - this.minZ); +if (!forceNew && this.buf2d != null && grayFactor == this.grayFactorLast) return this.buf2d; +this.grayFactorLast = grayFactor; +var pt = this.imageWidth * this.imageHeight; +var buf = (this.buf2d == null || this.buf2d.length != pt ? Clazz_newIntArray (pt, 0) : this.buf2d); +var totalGray = 0; +for (var i = 0; i < nSpec; i++) { +var points = subSpectra.get(i).xyCoords; +if (points.length != xyCoords.length) return null; +for (var j = 0; j < xyCoords.length; j++) { +var y = points[j].getYVal(); +var gray = 255 - JSV.common.Coordinate.intoRange(Clazz_doubleToInt((y - this.minZ) * grayFactor), 0, 255); +buf[--pt] = gray; +totalGray += gray; +} +} +this.averageGray = (1 - totalGray / (this.imageWidth * this.imageHeight) / 255); +System.out.println("Average gray = " + this.averageGray); +return (this.buf2d = buf); +}, "JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "adjustView", +function(spec, view){ +var i = 0; +var isLow = false; +while (((isLow = (this.averageGray < 0.05)) || this.averageGray > 0.3) && i++ < 10) { +view.scaleSpectrum(-2, isLow ? 2 : 0.5); +this.set(view.getScale()); +this.get2dBuffer(spec, false); +} +return this.buf2d; +}, "JSV.common.Spectrum,JSV.common.ViewData"); +Clazz_defineMethod(c$, "getBuffer", +function(){ +return this.buf2d; +}); +Clazz_defineMethod(c$, "setMinMaxY", +function(spec){ +var subSpectra = spec.getSubSpectra(); +var spec0 = subSpectra.get(0); +this.maxY = spec0.getY2D(); +this.minY = subSpectra.get(subSpectra.size() - 1).getY2D(); +if (spec0.y2DUnits.equalsIgnoreCase("Hz")) { +this.maxY /= spec0.freq2dY; +this.minY /= spec0.freq2dY; +}this.setScaleData(); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setScaleData", +function(){ +this.scaleData.minY = this.minY; +this.scaleData.maxY = this.maxY; +this.scaleData.setYScale(this.toY(this.yPixel0), this.toY(this.yPixel1), false, false); +}); +Clazz_overrideMethod(c$, "fixX", +function(xPixel){ +return (xPixel < this.xPixel0 ? this.xPixel0 : xPixel > this.xPixel1 ? this.xPixel1 : xPixel); +}, "~N"); +Clazz_overrideMethod(c$, "fixY", +function(yPixel){ +return JSV.common.Coordinate.intoRange(yPixel, this.yPixel0, this.yPixel1); +}, "~N"); +Clazz_overrideMethod(c$, "getScale", +function(){ +return this.scaleData; +}); +Clazz_overrideMethod(c$, "toX", +function(xPixel){ +return this.maxX + (this.minX - this.maxX) * this.toImageX(this.fixX(xPixel)) / (this.imageWidth - 1); +}, "~N"); +Clazz_overrideMethod(c$, "toY", +function(yPixel){ +var isub = this.toSubspectrumIndex(yPixel); +return this.maxY + (this.minY - this.maxY) * isub / (this.imageHeight - 1); +}, "~N"); +Clazz_overrideMethod(c$, "toPixelX", +function(x){ +var x0 = this.toX(this.xPixel0); +var x1 = this.toX(this.xPixel1); +return this.xPixel0 + Clazz_doubleToInt((x - x0) / (x1 - x0) * (this.xPixels - 1)); +}, "~N"); +Clazz_overrideMethod(c$, "toPixelY", +function(y){ +var f = (y - this.scaleData.minYOnScale) / (this.scaleData.maxYOnScale - this.scaleData.minYOnScale); +return Clazz_doubleToInt(this.yPixel0 + f * this.yPixels); +}, "~N"); +Clazz_overrideMethod(c$, "getXPixels", +function(){ +return this.xPixels; +}); +Clazz_overrideMethod(c$, "getYPixels", +function(){ +return this.yPixels; +}); +Clazz_overrideMethod(c$, "getXPixel0", +function(){ +return this.xPixel0; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Measurement"], "JSV.common.Integral", null, function(){ +var c$ = Clazz_declareType(JSV.common, "Integral", JSV.common.Measurement); +Clazz_defineMethod(c$, "setInt", +function(x1, y1, spec, value, x2, y2){ +this.setA(x1, y1, spec, "", false, false, 0, 6); +this.setPt2(x2, y2); +this.setValue(value); +return this; +}, "~N,~N,JSV.common.Spectrum,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_declareType(JSV.common, "IntegralComparator", null, java.util.Comparator); +Clazz_overrideMethod(c$, "compare", +function(m1, m2){ +return (m1.getXVal() < m2.getXVal() ? -1 : m1.getXVal() > m2.getXVal() ? 1 : 0); +}, "JSV.common.Measurement,JSV.common.Measurement"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum", "JSV.common.MeasurementData", "$.IntegralComparator"], "JSV.common.IntegralData", ["java.util.Collections", "$.StringTokenizer", "JU.AU", "$.BS", "$.DF", "$.Lst", "$.PT", "JSV.common.Annotation", "$.Coordinate", "$.Integral", "$.ScriptToken"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.percentMinY = 0; +this.percentOffset = 0; +this.intRange = 0; +this.normalizationFactor = 1; +this.percentRange = 0; +this.offset = 0; +this.integralTotal = 0; +this.haveRegions = false; +this.xyCoords = null; +Clazz_instantialize(this, arguments);}, JSV.common, "IntegralData", JSV.common.MeasurementData); +Clazz_makeConstructor(c$, +function(integralMinY, integralOffset, integralRange, spec){ +Clazz_superConstructor(this, JSV.common.IntegralData, [JSV.common.Annotation.AType.Integration, spec]); +this.percentMinY = integralMinY; +this.percentOffset = integralOffset; +this.percentRange = integralRange; +this.calculateIntegral(); +}, "~N,~N,~N,JSV.common.Spectrum"); +Clazz_makeConstructor(c$, +function(spec, p){ +Clazz_superConstructor(this, JSV.common.IntegralData, [JSV.common.Annotation.AType.Integration, spec]); +if (p == null) { +this.autoIntegrate(); +return; +}this.percentOffset = p.integralOffset; +this.percentRange = p.integralRange; +this.calculateIntegral(); +}, "JSV.common.Spectrum,JSV.common.Parameters"); +Clazz_defineMethod(c$, "getPercentMinimumY", +function(){ +return this.percentMinY; +}); +Clazz_defineMethod(c$, "getPercentOffset", +function(){ +return this.percentOffset; +}); +Clazz_defineMethod(c$, "getIntegralFactor", +function(){ +return this.intRange; +}); +Clazz_defineMethod(c$, "update", +function(parameters){ +this.update(parameters.integralMinY, parameters.integralOffset, parameters.integralRange); +}, "JSV.common.Parameters"); +Clazz_defineMethod(c$, "update", +function(integralMinY, integralOffset, integralRange){ +var percentRange0 = this.percentRange; +if (integralRange <= 0 || integralRange == this.percentRange && integralOffset == this.percentOffset) return; +this.percentOffset = integralOffset; +this.percentRange = integralRange; +this.checkRange(); +var intRangeNew = integralRange / 100 / this.integralTotal; +var offsetNew = integralOffset / 100; +for (var i = 0; i < this.xyCoords.length; i++) { +var y = this.xyCoords[i].getYVal(); +y = (y - this.offset) / this.intRange; +this.xyCoords[i].setYVal(y * intRangeNew + offsetNew); +} +if (this.normalizationFactor != 1) this.normalizationFactor *= percentRange0 / integralRange; +if (this.haveRegions) { +for (var i = this.size(); --i >= 0; ) { +var ir = this.get(i); +var y1 = this.getYValueAt(ir.getXVal()); +var y2 = this.getYValueAt(ir.getXVal2()); +ir.setYVal(y1); +ir.setYVal2(y2); +ir.setValue(Math.abs(y2 - y1) * 100 * this.normalizationFactor); +} +}this.intRange = intRangeNew; +this.offset = offsetNew; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getYValueAt", +function(x){ +return JSV.common.Coordinate.getYValueAt(this.xyCoords, x); +}, "~N"); +Clazz_defineMethod(c$, "addIntegralRegion", +function(x1, x2){ +if (Double.isNaN(x1)) { +this.haveRegions = false; +this.clear(); +return null; +}if (Double.isNaN(x2)) { +return this.splitIntegral(x1); +}if (x1 == x2) return null; +if (x1 < x2) { +this.clear(x1, x2); +return null; +}var y1 = this.getYValueAt(x1); +var y2 = this.getYValueAt(x2); +this.haveRegions = true; +var $in = new JSV.common.Integral().setInt(x1, y1, this.spec, Math.abs(y2 - y1) * 100 * this.normalizationFactor, x2, y2); +this.clear(x1, x2); +this.addLast($in); +java.util.Collections.sort(this, JSV.common.IntegralData.c); +return $in; +}, "~N,~N"); +Clazz_defineMethod(c$, "splitIntegral", +function(x){ +var i = this.find(x); +if (i < 0) return null; +var integral = this.removeItemAt(i); +var x0 = integral.getXVal(); +var x2 = integral.getXVal2(); +this.addIntegralRegion(x0, x); +return this.addIntegralRegion(x, x2); +}, "~N"); +Clazz_overrideMethod(c$, "setSpecShift", +function(dx){ +JSV.common.Coordinate.shiftX(this.xyCoords, dx); +for (var i = this.size(); --i >= 1; ) { +this.get(i).addSpecShift(dx); +} +}, "~N"); +Clazz_defineMethod(c$, "addMarks", +function(ppms){ +ppms = JU.PT.rep(" " + ppms, ",", " "); +ppms = JU.PT.rep(ppms, " -", " #"); +ppms = JU.PT.rep(ppms, "--", "-#"); +ppms = ppms.$replace('-', '^'); +ppms = ppms.$replace('#', '-'); +var tokens = JSV.common.ScriptToken.getTokens(ppms); +for (var i = 0; i < tokens.size(); i++) { +try { +var s = tokens.get(i); +var norm = 0; +var pt = s.indexOf('^'); +if (pt < 0) continue; +var pt2 = s.indexOf(':'); +if (pt2 > pt) { +norm = Double.$valueOf(s.substring(pt2 + 1).trim()).doubleValue(); +s = s.substring(0, pt2).trim(); +}var x2 = Double.$valueOf(s.substring(0, pt).trim()).doubleValue(); +var x1 = Double.$valueOf(s.substring(pt + 1).trim()).doubleValue(); +if (x1 == 0 && x2 == 0) this.clear(); +if (x1 == x2) continue; +var m = this.addIntegralRegion(Math.max(x1, x2), Math.min(x1, x2)); +if (m != null && norm > 0) this.setSelectedIntegral(m, norm); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +continue; +} else { +throw e; +} +} +} +}, "~S"); +Clazz_defineMethod(c$, "calculateIntegral", +function(){ +var specXyCoords = this.spec.getXYCoords(); +this.xyCoords = new Array(specXyCoords.length); +this.integralTotal = 0; +this.checkRange(); +var minY = 1E100; +for (var i = 0; i < specXyCoords.length; i++) { +var y = specXyCoords[i].getYVal(); +if (y < minY && y >= 0) minY = y; +} +var minI = 1E100; +var maxI = -1.0E100; +for (var i = 0; i < specXyCoords.length; i++) { +var y = specXyCoords[i].getYVal(); +this.integralTotal += (y - minY); +if (this.integralTotal < minI) minI = this.integralTotal; +if (this.integralTotal > maxI) maxI = this.integralTotal; +} +this.integralTotal = maxI - minI; +this.intRange = (this.percentRange / 100) / this.integralTotal; +this.offset = (this.percentOffset / 100); +var integral = 0; +for (var i = specXyCoords.length; --i >= 0; ) { +var y = specXyCoords[i].getYVal(); +integral += (y - minY); +this.xyCoords[i] = new JSV.common.Coordinate().set(specXyCoords[i].getXVal(), integral * this.intRange + this.offset); +} +return this.xyCoords; +}); +Clazz_defineMethod(c$, "checkRange", +function(){ +this.percentOffset = Math.max(5, this.percentOffset); +this.percentRange = Math.max(10, this.percentRange); +}); +c$.getIntegrationRatiosFromString = Clazz_defineMethod(c$, "getIntegrationRatiosFromString", +function(spec, key_values){ +var ratios = new JU.Lst(); +var allParamTokens = new java.util.StringTokenizer(key_values, ","); +while (allParamTokens.hasMoreTokens()) { +var token = allParamTokens.nextToken(); +var eachParam = new java.util.StringTokenizer(token, ":"); +var ratio = new JSV.common.Annotation().setA(Double.parseDouble(eachParam.nextToken()), 0.0, spec, eachParam.nextToken(), true, false, 0, 0); +ratios.addLast(ratio); +} +return ratios; +}, "JSV.common.Spectrum,~S"); +Clazz_defineMethod(c$, "getXYCoords", +function(){ +return this.xyCoords; +}); +Clazz_defineMethod(c$, "getPercentYValueAt", +function(x){ +return this.getYValueAt(x) * 100; +}, "~N"); +Clazz_defineMethod(c$, "dispose", +function(){ +this.spec = null; +this.xyCoords = null; +}); +Clazz_defineMethod(c$, "setSelectedIntegral", +function(integral, val){ +var val0 = integral.getValue(); +var factor = (val <= 0 ? 1 / this.normalizationFactor : val / val0); +this.factorAllIntegrals(factor, val <= 0); +}, "JSV.common.Measurement,~N"); +Clazz_defineMethod(c$, "factorAllIntegrals", +function(factor, isReset){ +for (var i = 0; i < this.size(); i++) { +var m = this.get(i); +m.setValue(factor * m.getValue()); +} +this.normalizationFactor = (isReset ? 1 : this.normalizationFactor * factor); +}, "~N,~B"); +Clazz_defineMethod(c$, "remove", +function(i){ +return this.removeItemAt(i); +}, "~N"); +Clazz_defineMethod(c$, "getBitSet", +function(){ +var bs = JU.BS.newN(this.xyCoords.length); +if (this.size() == 0) { +bs.setBits(0, this.xyCoords.length); +return bs; +}for (var i = this.size(); --i >= 0; ) { +var m = this.get(i); +var x1 = JSV.common.Coordinate.getNearestIndexForX(this.xyCoords, m.getXVal()); +var x2 = JSV.common.Coordinate.getNearestIndexForX(this.xyCoords, m.getXVal2()); +bs.setBits(Math.min(x1, x2), Math.max(x1, x2)); +} +return bs; +}); +Clazz_overrideMethod(c$, "getMeasurementListArray", +function(units){ +var data = new Array(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; ) data[pt++] = Clazz_newArray(-1, ["" + pt, JU.DF.formatDecimalDbl(this.get(i).getXVal(), 2), JU.DF.formatDecimalDbl(this.get(i).getXVal2(), 2), this.get(i).text]); + +return data; +}, "~S"); +Clazz_overrideMethod(c$, "getMeasurementListArrayReal", +function(units){ +var data = JU.AU.newDouble2(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; pt++) data[pt] = Clazz_newDoubleArray(-1, [this.get(i).getXVal(), this.get(i).getXVal2(), this.get(i).getValue()]); + +return data; +}, "~S"); +Clazz_overrideMethod(c$, "getDataHeader", +function(){ +return JSV.common.IntegralData.$HEADER; +}); +Clazz_defineMethod(c$, "shiftY", +function(yOld, yNew, yPixel0, yPixels){ +var pt = Clazz_doubleToInt(100.0 * (yPixel0 + yPixels - yNew) / yPixels); +if (yOld < 0) pt -= this.percentOffset; +if (yOld < 0) { +this.update(0, this.percentOffset, pt); +} else { +this.update(0, pt, this.percentRange); +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "autoIntegrate", +function(){ +if (this.xyCoords == null) this.calculateIntegral(); +if (this.xyCoords.length == 0) return; +this.clear(); +var iStart = -1; +var cutoff = 0.0001; +var nCount = 0; +var nMin = 20; +var y0 = this.xyCoords[this.xyCoords.length - 1].getYVal(); +for (var i = this.xyCoords.length - 1; --i >= 0; ) { +var y = this.xyCoords[i].getYVal(); +nCount++; +if ((y - y0) < cutoff && iStart < 0) { +if (y < y0) { +y0 = y; +nCount = 0; +}continue; +}if (iStart < 0) { +iStart = i + Math.min(nCount, nMin); +y0 = y; +nCount = 0; +continue; +}if ((y - y0) < cutoff) { +if (nCount == 1) y0 = y; +if (nCount >= nMin) { +this.addIntegralRegion(this.xyCoords[iStart].getXVal(), this.xyCoords[i].getXVal()); +iStart = -1; +y0 = y; +nCount = 0; +}} else { +nCount = 0; +y0 = y; +}} +var nH = this.spec.getHydrogenCount(); +if (nH > 0) this.factorAllIntegrals(nH / this.percentRange, false); +}); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("offset", Double.$valueOf(this.myParams.integralOffset)); +info.put("range", Double.$valueOf(this.myParams.integralRange)); +info.put("normalizationFactor", Double.$valueOf(this.normalizationFactor)); +info.put("integralTotal", Double.$valueOf(this.integralTotal)); +Clazz_superCall(this, JSV.common.IntegralData, "getInfo", [info]); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setMinimumIntegral", +function(val){ +for (var i = this.size(); --i >= 0; ) if (this.get(i).getValue() < val) this.removeItemAt(i); + +}, "~N"); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.IntegralData, "IntMode", Enum); +c$.getMode = Clazz_defineMethod(c$, "getMode", +function(value){ +for (var mode, $mode = 0, $$mode = JSV.common.IntegralData.IntMode.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (value.startsWith(mode.name())) return mode; + +return JSV.common.IntegralData.IntMode.NA; +}, "~S"); +Clazz_defineEnumConstant(c$, "OFF", 0, []); +Clazz_defineEnumConstant(c$, "ON", 1, []); +Clazz_defineEnumConstant(c$, "TOGGLE", 2, []); +Clazz_defineEnumConstant(c$, "AUTO", 3, []); +Clazz_defineEnumConstant(c$, "LIST", 4, []); +Clazz_defineEnumConstant(c$, "MARK", 5, []); +Clazz_defineEnumConstant(c$, "MIN", 6, []); +Clazz_defineEnumConstant(c$, "UPDATE", 7, []); +Clazz_defineEnumConstant(c$, "CLEAR", 8, []); +Clazz_defineEnumConstant(c$, "NA", 9, []); +/*eoif2*/})(); +c$.c = new JSV.common.IntegralComparator(); +c$.$HEADER = Clazz_newArray(-1, ["peak", "start/ppm", "end/ppm", "value"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum", "JSV.source.JDXDataObject", "JU.Lst"], "JSV.common.Spectrum", ["java.util.Hashtable", "JU.PT", "JSV.common.Coordinate", "$.Parameters", "$.PeakInfo", "JSV.source.JDXSourceStreamTokenizer", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.id = ""; +this.fillColor = null; +this.subSpectra = null; +this.peakList = null; +this.peakXLabel = null; +this.peakYLabel = null; +this.selectedPeak = null; +this.highlightedPeak = null; +this.convertedSpectrum = null; +this.specShift = 0; +this.userYFactor = 1; +this.currentSubSpectrumIndex = 0; +this.$isForcedSubset = false; +this.exportXAxisLeftToRight = false; +this.titleLabel = null; +Clazz_instantialize(this, arguments);}, JSV.common, "Spectrum", JSV.source.JDXDataObject); +Clazz_prepareFields (c$, function(){ +this.peakList = new JU.Lst(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.common.Spectrum, []); +this.headerTable = new JU.Lst(); +this.xyCoords = new Array(0); +this.parent = this; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +}); +Clazz_defineMethod(c$, "isForcedSubset", +function(){ +return this.$isForcedSubset; +}); +Clazz_defineMethod(c$, "setId", +function(id){ +this.id = id; +}, "~S"); +Clazz_defineMethod(c$, "copy", +function(){ +var newSpectrum = new JSV.common.Spectrum(); +this.copyTo(newSpectrum); +newSpectrum.setPeakList(this.peakList, this.peakXLabel, null); +newSpectrum.fillColor = this.fillColor; +return newSpectrum; +}); +Clazz_defineMethod(c$, "getXYCoords", +function(){ +return this.getCurrentSubSpectrum().xyCoords; +}); +Clazz_defineMethod(c$, "getPeakList", +function(){ +return this.peakList; +}); +Clazz_defineMethod(c$, "setPeakList", +function(list, peakXLabel, peakYLabel){ +this.peakList = list; +this.peakXLabel = peakXLabel; +this.peakYLabel = peakYLabel; +for (var i = list.size(); --i >= 0; ) this.peakList.get(i).spectrum = this; + +if (JU.Logger.debugging) JU.Logger.info("Spectrum " + this.getTitle() + " peaks: " + list.size()); +return list.size(); +}, "JU.Lst,~S,~S"); +Clazz_defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +if (this.peakList != null && this.peakList.size() > 0 && (atomKey == null || this.sourceID.equals(index))) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkFileIndex(filePath, index, atomKey)) { +System.out.println("selecting peak by FileIndex " + this + " " + this.peakList.get(i)); +return (this.selectedPeak = this.peakList.get(i)); +} +return null; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "selectPeakByFilePathTypeModel", +function(filePath, type, model){ +if (this.peakList != null && this.peakList.size() > 0) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkFileTypeModel(filePath, type, model)) { +System.out.println("selecting peak byFilePathTypeModel " + this + " " + this.peakList.get(i)); +return (this.selectedPeak = this.peakList.get(i)); +} +return null; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "matchesPeakTypeModel", +function(type, model){ +if (type.equals("ID")) return (this.sourceID.equalsIgnoreCase(model)); +if (this.peakList != null && this.peakList.size() > 0) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkTypeModel(type, model)) return true; + +return false; +}, "~S,~S"); +Clazz_defineMethod(c$, "setSelectedPeak", +function(peak){ +this.selectedPeak = peak; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "setHighlightedPeak", +function(peak){ +this.highlightedPeak = peak; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getSelectedPeak", +function(){ +return this.selectedPeak; +}); +Clazz_defineMethod(c$, "getModelPeakInfoForAutoSelectOnLoad", +function(){ +if (this.peakList != null) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).autoSelectOnLoad()) return this.peakList.get(i); + +return null; +}); +Clazz_defineMethod(c$, "getAssociatedPeakInfo", +function(xPixel, coord){ +this.selectedPeak = this.findPeakByCoord(xPixel, coord); +return (this.selectedPeak == null ? this.getBasePeakInfo() : this.selectedPeak); +}, "~N,JSV.common.Coordinate"); +Clazz_defineMethod(c$, "findPeakByCoord", +function(xPixel, coord){ +if (coord != null && this.peakList != null && this.peakList.size() > 0) { +var xVal = coord.getXVal(); +var iBest = -1; +var dBest = 1e100; +for (var i = 0; i < this.peakList.size(); i++) { +var d = this.peakList.get(i).checkRange(xPixel, xVal); +if (d < dBest) { +dBest = d; +iBest = i; +}} +if (iBest >= 0) return this.peakList.get(iBest); +}return null; +}, "~N,JSV.common.Coordinate"); +Clazz_defineMethod(c$, "getPeakTitle", +function(){ +return (this.selectedPeak != null ? this.selectedPeak.getTitle() : this.highlightedPeak != null ? this.highlightedPeak.getTitle() : this.getTitleLabel()); +}); +Clazz_defineMethod(c$, "getTitleLabel", +function(){ +if (this.titleLabel != null) return this.titleLabel; +var type = (this.peakList == null || this.peakList.size() == 0 ? this.getQualifiedDataType() : this.peakList.get(0).getType()); +if (type != null && type.startsWith("NMR")) { +if (this.nucleusY != null && !this.nucleusY.equals("?")) { +type = "2D" + type; +} else { +type = JSV.source.JDXDataObject.getNominalSpecFreq(this.nucleusX, this.getObservedFreq()) + " MHz " + this.nucleusX + " " + type; +}}return this.titleLabel = (type != null && type.length > 0 ? type + " " : "") + this.getTitle(); +}); +Clazz_defineMethod(c$, "setNextPeak", +function(coord, istep){ +if (this.peakList == null || this.peakList.size() == 0) return -1; +var x0 = coord.getXVal() + istep * 0.000001; +var ipt1 = -1; +var ipt2 = -1; +var dmin1 = 1.7976931348623157E308 * istep; +var dmin2 = 0; +for (var i = this.peakList.size(); --i >= 0; ) { +var x = this.peakList.get(i).getX(); +if (istep > 0) { +if (x > x0 && x < dmin1) { +ipt1 = i; +dmin1 = x; +} else if (x < x0 && x - x0 < dmin2) { +ipt2 = i; +dmin2 = x - x0; +}} else { +if (x < x0 && x > dmin1) { +ipt1 = i; +dmin1 = x; +} else if (x > x0 && x - x0 > dmin2) { +ipt2 = i; +dmin2 = x - x0; +}}} +if (ipt1 < 0) { +if (ipt2 < 0) return -1; +ipt1 = ipt2; +}return ipt1; +}, "JSV.common.Coordinate,~N"); +Clazz_defineMethod(c$, "getPercentYValueAt", +function(x){ +if (!this.isContinuous()) return NaN; +return this.getYValueAt(x); +}, "~N"); +Clazz_defineMethod(c$, "getYValueAt", +function(x){ +return JSV.common.Coordinate.getYValueAt(this.xyCoords, x); +}, "~N"); +Clazz_defineMethod(c$, "setUserYFactor", +function(userYFactor){ +this.userYFactor = userYFactor; +}, "~N"); +Clazz_defineMethod(c$, "getUserYFactor", +function(){ +return this.userYFactor; +}); +Clazz_defineMethod(c$, "getConvertedSpectrum", +function(){ +return this.convertedSpectrum; +}); +Clazz_defineMethod(c$, "setConvertedSpectrum", +function(spectrum){ +this.convertedSpectrum = spectrum; +}, "JSV.common.Spectrum"); +c$.taConvert = Clazz_defineMethod(c$, "taConvert", +function(spectrum, mode){ +if (!spectrum.isContinuous()) return spectrum; +switch (mode) { +case JSV.common.Spectrum.IRMode.NO_CONVERT: +return spectrum; +case JSV.common.Spectrum.IRMode.TO_ABS: +if (!spectrum.isTransmittance()) return spectrum; +break; +case JSV.common.Spectrum.IRMode.TO_TRANS: +if (!spectrum.isAbsorbance()) return spectrum; +break; +case JSV.common.Spectrum.IRMode.TOGGLE: +break; +} +var spec = spectrum.getConvertedSpectrum(); +return (spec != null ? spec : spectrum.isAbsorbance() ? JSV.common.Spectrum.toT(spectrum) : JSV.common.Spectrum.toA(spectrum)); +}, "JSV.common.Spectrum,JSV.common.Spectrum.IRMode"); +c$.toT = Clazz_defineMethod(c$, "toT", +function(spectrum){ +if (!spectrum.isAbsorbance()) return null; +var xyCoords = spectrum.getXYCoords(); +var newXYCoords = new Array(xyCoords.length); +if (!JSV.common.Coordinate.isYInRange(xyCoords, 0, 4.0)) xyCoords = JSV.common.Coordinate.normalise(xyCoords, 0, 4.0); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), JSV.common.Spectrum.toTransmittance(xyCoords[i].getYVal())); + +return JSV.common.Spectrum.newSpectrum(spectrum, newXYCoords, "TRANSMITTANCE"); +}, "JSV.common.Spectrum"); +c$.toA = Clazz_defineMethod(c$, "toA", +function(spectrum){ +if (!spectrum.isTransmittance()) return null; +var xyCoords = spectrum.getXYCoords(); +var newXYCoords = new Array(xyCoords.length); +var isPercent = JSV.common.Coordinate.isYInRange(xyCoords, -2, 2); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), JSV.common.Spectrum.toAbsorbance(xyCoords[i].getYVal(), isPercent)); + +return JSV.common.Spectrum.newSpectrum(spectrum, newXYCoords, "ABSORBANCE"); +}, "JSV.common.Spectrum"); +c$.newSpectrum = Clazz_defineMethod(c$, "newSpectrum", +function(spectrum, newXYCoords, units){ +var specNew = spectrum.copy(); +specNew.setOrigin("JSpecView Converted"); +specNew.setOwner("JSpecView Generated"); +specNew.setXYCoords(newXYCoords); +specNew.setYUnits(units); +spectrum.setConvertedSpectrum(specNew); +specNew.setConvertedSpectrum(spectrum); +return specNew; +}, "JSV.common.Spectrum,~A,~S"); +c$.toAbsorbance = Clazz_defineMethod(c$, "toAbsorbance", +function(x, isPercent){ +return (Math.min(4.0, isPercent ? 2 - JSV.common.Spectrum.log10(x) : -JSV.common.Spectrum.log10(x))); +}, "~N,~B"); +c$.toTransmittance = Clazz_defineMethod(c$, "toTransmittance", +function(x){ +return (x <= 0 ? 1 : Math.pow(10, -x)); +}, "~N"); +c$.log10 = Clazz_defineMethod(c$, "log10", +function(value){ +return Math.log(value) / Math.log(10); +}, "~N"); +c$.process = Clazz_defineMethod(c$, "process", +function(specs, irMode){ +if (irMode === JSV.common.Spectrum.IRMode.TO_ABS || irMode === JSV.common.Spectrum.IRMode.TO_TRANS) for (var i = 0; i < specs.size(); i++) specs.set(i, JSV.common.Spectrum.taConvert(specs.get(i), irMode)); + +return true; +}, "JU.Lst,JSV.common.Spectrum.IRMode"); +Clazz_defineMethod(c$, "getSubSpectra", +function(){ +return this.subSpectra; +}); +Clazz_defineMethod(c$, "getCurrentSubSpectrum", +function(){ +return (this.subSpectra == null ? this : this.subSpectra.get(this.currentSubSpectrumIndex)); +}); +Clazz_defineMethod(c$, "advanceSubSpectrum", +function(dir){ +return this.setCurrentSubSpectrum(this.currentSubSpectrumIndex + dir); +}, "~N"); +Clazz_defineMethod(c$, "setCurrentSubSpectrum", +function(n){ +return (this.currentSubSpectrumIndex = JSV.common.Coordinate.intoRange(n, 0, this.subSpectra.size() - 1)); +}, "~N"); +Clazz_defineMethod(c$, "addSubSpectrum", +function(spectrum, forceSub){ +if (!forceSub && (this.is1D() || this.blockID != spectrum.blockID) || !JSV.common.Spectrum.allowSubSpec(this, spectrum)) return false; +this.$isForcedSubset = forceSub; +if (this.subSpectra == null) { +this.subSpectra = new JU.Lst(); +this.addSubSpectrum(this, true); +}this.subSpectra.addLast(spectrum); +spectrum.parent = this; +return true; +}, "JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "getSubIndex", +function(){ +return (this.subSpectra == null ? -1 : this.currentSubSpectrumIndex); +}); +Clazz_defineMethod(c$, "setExportXAxisDirection", +function(leftToRight){ +this.exportXAxisLeftToRight = leftToRight; +}, "~B"); +Clazz_defineMethod(c$, "isExportXAxisLeftToRight", +function(){ +return this.exportXAxisLeftToRight; +}); +Clazz_defineMethod(c$, "getInfo", +function(key){ +var info = new java.util.Hashtable(); +if ("id".equalsIgnoreCase(key)) { +info.put(key, this.id); +return info; +}var keys = null; +if ("".equals(key)) { +keys = "id specShift header"; +}info.put("id", this.id); +JSV.common.Parameters.putInfo(key, info, "specShift", Double.$valueOf(this.specShift)); +var justHeader = ("header".equals(key)); +if (!justHeader && key != null && keys == null) { +for (var i = this.headerTable.size(); --i >= 0; ) { +var entry = this.headerTable.get(i); +if (entry[0].equalsIgnoreCase(key) || entry[2].equalsIgnoreCase(key)) { +info.put(key, entry[1]); +return info; +}} +}var head = new java.util.Hashtable(); +var list = this.getHeaderRowDataAsArray(); +for (var i = 0; i < list.length; i++) { +var label = JSV.source.JDXSourceStreamTokenizer.cleanLabel(list[i][0]); +if (keys != null) { +keys += " " + label; +continue; +}if (key != null && !justHeader && !label.equals(key)) continue; +var val = JSV.common.Spectrum.fixInfoValue(list[i][1]); +if (key == null) { +var data = new java.util.Hashtable(); +data.put("value", val); +data.put("index", Integer.$valueOf(i + 1)); +info.put(label, data); +} else { +info.put(label, val); +}} +if (head.size() > 0) info.put("header", head); +if (!justHeader) { +if (keys != null) { +keys += " titleLabel type isHZToPPM subSpectrumCount"; +} else { +JSV.common.Parameters.putInfo(key, info, "titleLabel", this.getTitleLabel()); +JSV.common.Parameters.putInfo(key, info, "type", this.getDataType()); +JSV.common.Parameters.putInfo(key, info, "isHZToPPM", Boolean.$valueOf(this.isHZtoPPM())); +JSV.common.Parameters.putInfo(key, info, "subSpectrumCount", Integer.$valueOf(this.subSpectra == null ? 0 : this.subSpectra.size())); +}}if (keys != null) info.put("KEYS", keys); +return info; +}, "~S"); +c$.fixInfoValue = Clazz_defineMethod(c$, "fixInfoValue", +function(info){ +try { +return (Integer.$valueOf(info)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +try { +return (Double.$valueOf(info)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return info; +}, "~S"); +Clazz_defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkTypeMatch(pi)) return this.peakList.get(i); + +return null; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getBasePeakInfo", +function(){ +return (this.peakList.size() == 0 ? new JSV.common.PeakInfo() : new JSV.common.PeakInfo(" baseModel=\"\" " + this.peakList.get(0))); +}); +Clazz_defineMethod(c$, "getAxisLabel", +function(isX){ +var label = (isX ? this.peakXLabel : this.peakYLabel); +if (label == null) label = (isX ? this.xLabel : this.yLabel); +if (label == null) label = (isX ? this.xUnits : this.yUnits); +return (label == null ? "" : label.equalsIgnoreCase("WAVENUMBERS") ? "1/cm" : label.equalsIgnoreCase("nanometers") ? "nm" : label); +}, "~B"); +Clazz_defineMethod(c$, "findXForPeakNearest", +function(x){ +return JSV.common.Coordinate.findXForPeakNearest(this.xyCoords, x, this.isInverted()); +}, "~N"); +Clazz_defineMethod(c$, "addSpecShift", +function(dx){ +if (dx != 0) { +this.specShift += dx; +JSV.common.Coordinate.shiftX(this.xyCoords, dx); +if (this.subSpectra != null) for (var i = this.subSpectra.size(); --i >= 0; ) { +var spec = this.subSpectra.get(i); +if (spec !== this && spec !== this.parent) spec.addSpecShift(dx); +} +}return this.specShift; +}, "~N"); +c$.allowSubSpec = Clazz_defineMethod(c$, "allowSubSpec", +function(s1, s2){ +return (s1.is1D() == s2.is1D() && s1.xUnits.equalsIgnoreCase(s2.xUnits) && s1.isHNMR() == s2.isHNMR()); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +c$.areXScalesCompatible = Clazz_defineMethod(c$, "areXScalesCompatible", +function(s1, s2, isSubspecCheck, isLinkCheck){ +var isNMR1 = s1.isNMR(); +if (isNMR1 != s2.isNMR() || s1.isContinuous() != s2.isContinuous() || !isLinkCheck && !JSV.common.Spectrum.areUnitsCompatible(s1.xUnits, s2.xUnits)) return false; +if (isSubspecCheck) { +if (s1.is1D() != s2.is1D()) return false; +} else if (isLinkCheck) { +if (!isNMR1) return true; +} else if (!s1.is1D() || !s2.is1D()) { +return false; +}return (!isNMR1 || s2.is1D() && s1.parent.nucleusX.equals(s2.parent.nucleusX)); +}, "JSV.common.Spectrum,JSV.common.Spectrum,~B,~B"); +c$.areUnitsCompatible = Clazz_defineMethod(c$, "areUnitsCompatible", +function(u1, u2){ +if (u1.equalsIgnoreCase(u2)) return true; +u1 = u1.toUpperCase(); +u2 = u2.toUpperCase(); +return (u1.equals("HZ") && u2.equals("PPM") || u1.equals("PPM") && u2.equals("HZ")); +}, "~S,~S"); +c$.areLinkableX = Clazz_defineMethod(c$, "areLinkableX", +function(s1, s2){ +return (s1.isNMR() && s2.isNMR() && s1.nucleusX.equals(s2.nucleusX)); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +c$.areLinkableY = Clazz_defineMethod(c$, "areLinkableY", +function(s1, s2){ +return (s1.isNMR() && s2.isNMR() && s1.nucleusX.equals(s2.nucleusY)); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "getPeakWidth", +function(){ +var w = this.getLastX() - this.getFirstX(); +return (w / 100); +}); +Clazz_defineMethod(c$, "setSimulated", +function(filePath){ +this.isSimulation = true; +var s = this.sourceID; +if (s.length == 0) s = JU.PT.rep(filePath, "http://SIMULATION/", ""); +if (s.indexOf("MOL=") >= 0) s = ""; +this.title = "SIMULATED " + JU.PT.rep(s, "$", ""); +}, "~S"); +Clazz_defineMethod(c$, "setFillColor", +function(color){ +this.fillColor = color; +if (this.convertedSpectrum != null) this.convertedSpectrum.fillColor = color; +}, "javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.getTitleLabel() + (this.xyCoords == null ? "" : " xyCoords.length=" + this.xyCoords.length); +}); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.Spectrum, "IRMode", Enum); +c$.getMode = Clazz_defineMethod(c$, "getMode", +function(value){ +switch ((value == null ? 'I' : value.toUpperCase().charAt(0)).charCodeAt(0)) { +case 65: +return JSV.common.Spectrum.IRMode.TO_ABS; +case 84: +return (value.equalsIgnoreCase("TOGGLE") ? JSV.common.Spectrum.IRMode.TOGGLE : JSV.common.Spectrum.IRMode.TO_TRANS); +case 78: +return JSV.common.Spectrum.IRMode.NO_CONVERT; +default: +return JSV.common.Spectrum.IRMode.TOGGLE; +} +}, "~S"); +Clazz_defineEnumConstant(c$, "NO_CONVERT", 0, []); +Clazz_defineEnumConstant(c$, "TO_TRANS", 1, []); +Clazz_defineEnumConstant(c$, "TO_ABS", 2, []); +Clazz_defineEnumConstant(c$, "TOGGLE", 3, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_declareType(JSV.common, "JSVersion", null); +{ +var tmpVersion = null; +var tmpDate = null; +{ +tmpVersion = Jmol.___JmolVersion; tmpDate = Jmol.___JmolDate; +}if (tmpDate != null) { +tmpDate = tmpDate.substring(7, 23); +}JSV.common.JSVersion.VERSION_SHORT = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +var mv = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JSV.common.JSVersion.date = (tmpDate != null ? tmpDate : ""); +JSV.common.JSVersion.VERSION = JSV.common.JSVersion.VERSION_SHORT + (JSV.common.JSVersion.date == null ? "" : " " + JSV.common.JSVersion.date); +var v = -1; +if (tmpVersion != null) try { +var s = JSV.common.JSVersion.VERSION_SHORT; +var major = ""; +var i = s.indexOf("."); +if (i < 0) { +v = 100000 * Integer.parseInt(s); +s = null; +}if (s != null) { +v = 100000 * Integer.parseInt(major = s.substring(0, i)); +s = s.substring(i + 1); +i = s.indexOf("."); +if (i < 0) { +v += 1000 * Integer.parseInt(s); +s = null; +}if (s != null) { +var m = s.substring(0, i); +major += "." + m; +mv = major; +v += 1000 * Integer.parseInt(m); +s = s.substring(i + 1); +i = s.indexOf("_"); +if (i >= 0) s = s.substring(0, i); +i = s.indexOf(" "); +if (i >= 0) s = s.substring(0, i); +v += Integer.parseInt(s); +}}} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +JSV.common.JSVersion.majorVersion = mv; +JSV.common.JSVersion.versionInt = v; +}})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.util.Hashtable"], "JSV.common.JSVFileManager", ["java.io.BufferedInputStream", "$.BufferedReader", "$.InputStreamReader", "$.StringReader", "java.net.URL", "JU.AU", "$.BS", "$.Encoding", "$.JSJSONParser", "$.P3", "$.PT", "$.SB", "JSV.common.JSVersion", "$.JSViewer", "JSV.exception.JSVException", "JU.Logger"], function(){ +var c$ = Clazz_declareType(JSV.common, "JSVFileManager", null); +Clazz_defineMethod(c$, "isApplet", +function(){ +return (JSV.common.JSVFileManager.appletDocumentBase != null); +}); +c$.getFileAsString = Clazz_defineMethod(c$, "getFileAsString", +function(name){ +if (name == null) return null; +var br; +var sb = new JU.SB(); +try { +br = JSV.common.JSVFileManager.getBufferedReaderFromName(name, null); +var line; +while ((line = br.readLine()) != null) { +sb.append(line); +sb.appendC('\n'); +} +br.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +return sb.toString(); +}, "~S"); +c$.getBufferedReaderForInputStream = Clazz_defineMethod(c$, "getBufferedReaderForInputStream", +function($in){ +try { +return new java.io.BufferedReader( new java.io.InputStreamReader($in, "UTF-8")); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.getBufferedReaderForStringOrBytes = Clazz_defineMethod(c$, "getBufferedReaderForStringOrBytes", +function(stringOrBytes){ +return (stringOrBytes == null ? null : new java.io.BufferedReader( new java.io.StringReader((typeof(stringOrBytes)=='string') ? stringOrBytes : String.instantialize(stringOrBytes)))); +}, "~O"); +c$.getBufferedReaderFromName = Clazz_defineMethod(c$, "getBufferedReaderFromName", +function(name, startCode){ +if (name == null) throw new JSV.exception.JSVException("Cannot find " + name); +JU.Logger.info("JSVFileManager getBufferedReaderFromName " + name); +var path = JSV.common.JSVFileManager.getFullPathName(name); +if (!path.equals(name)) JU.Logger.info("JSVFileManager getBufferedReaderFromName " + path); +return JSV.common.JSVFileManager.getUnzippedBufferedReaderFromName(path, startCode); +}, "~S,~S"); +c$.getFullPathName = Clazz_defineMethod(c$, "getFullPathName", +function(name){ +try { +if (JSV.common.JSVFileManager.appletDocumentBase == null) { +if (JSV.common.JSVFileManager.isURL(name)) { +var url = new java.net.URL(Clazz_castNullAs("java.net.URL"), name, null); +return url.toString(); +}return JSV.common.JSVFileManager.viewer.apiPlatform.newFile(name).getFullPath(); +}if (name.indexOf(":\\") == 1 || name.indexOf(":/") == 1) name = "file:///" + name; + else if (name.startsWith("cache://")) return name; +var url = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, name, null); +return url.toString(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException("Cannot create path for " + name); +} else { +throw e; +} +} +}, "~S"); +c$.isURL = Clazz_defineMethod(c$, "isURL", +function(name){ +for (var i = JSV.common.JSVFileManager.urlPrefixes.length; --i >= 0; ) if (name.startsWith(JSV.common.JSVFileManager.urlPrefixes[i])) return true; + +return false; +}, "~S"); +c$.urlTypeIndex = Clazz_defineMethod(c$, "urlTypeIndex", +function(name){ +for (var i = 0; i < JSV.common.JSVFileManager.urlPrefixes.length; ++i) { +if (name.startsWith(JSV.common.JSVFileManager.urlPrefixes[i])) { +return i; +}} +return -1; +}, "~S"); +c$.isLocal = Clazz_defineMethod(c$, "isLocal", +function(fileName){ +if (fileName == null) return false; +var itype = JSV.common.JSVFileManager.urlTypeIndex(fileName); +return (itype < 0 || itype == 4); +}, "~S"); +c$.getUnzippedBufferedReaderFromName = Clazz_defineMethod(c$, "getUnzippedBufferedReaderFromName", +function(name, startCode){ +var subFileList = null; +if (name.indexOf("|") >= 0) { +subFileList = JU.PT.split(name, "|"); +if (subFileList != null && subFileList.length > 0) name = subFileList[0]; +}if (name.startsWith("http://SIMULATION/")) return JSV.common.JSVFileManager.getSimulationReader(name); +try { +var ret = JSV.common.JSVFileManager.getInputStream(name, true, null); +if (Clazz_instanceOf(ret,"JU.SB") || (typeof(ret)=='string')) return new java.io.BufferedReader( new java.io.StringReader(ret.toString())); +if (JSV.common.JSVFileManager.isAB(ret)) return new java.io.BufferedReader( new java.io.StringReader( String.instantialize(ret))); +var bis = new java.io.BufferedInputStream(ret); +var $in = bis; +if (JSV.common.JSVFileManager.isGzip(bis)) $in = (JSV.common.JSViewer.getInterface("JSV.common.JSVZipUtil")).newGZIPInputStream($in); +return new java.io.BufferedReader( new java.io.InputStreamReader($in, "UTF-8")); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw e; +} else { +throw e; +} +} +}, "~S,~S"); +c$.getAbbrSimulationFileName = Clazz_defineMethod(c$, "getAbbrSimulationFileName", +function(name){ +var type = JSV.common.JSVFileManager.getSimulationType(name); +var filename = JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, true); +return filename; +}, "~S"); +c$.getAbbreviatedSimulationName = Clazz_defineMethod(c$, "getAbbreviatedSimulationName", +function(name, type, addProtocol){ +return (name.indexOf("MOL=") >= 0 ? (addProtocol ? "http://SIMULATION/" : "") + "MOL=" + JSV.common.JSVFileManager.getSimulationHash(name, type) : name); +}, "~S,~S,~B"); +c$.getSimulationHash = Clazz_defineMethod(c$, "getSimulationHash", +function(name, type){ +var code = type + Math.abs(name.substring(name.indexOf("V2000") + 1).hashCode()); +if (JU.Logger.debugging) System.out.println("JSVFileManager hash for " + name + " = " + code); +return code; +}, "~S,~S"); +c$.getSimulationFileData = Clazz_defineMethod(c$, "getSimulationFileData", +function(name, type){ +return JSV.common.JSVFileManager.cacheGet(name.startsWith("MOL=") ? name.substring(4) : JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, false)); +}, "~S,~S"); +c$.cachePut = Clazz_defineMethod(c$, "cachePut", +function(name, data){ +if (JU.Logger.debugging) JU.Logger.debug("JSVFileManager cachePut " + data + " for " + name); +if (data != null) JSV.common.JSVFileManager.htCorrelationCache.put(name, data); +}, "~S,~S"); +c$.cacheGet = Clazz_defineMethod(c$, "cacheGet", +function(key){ +var data = JSV.common.JSVFileManager.htCorrelationCache.get(key); +if (JU.Logger.debugging) JU.Logger.info("JSVFileManager cacheGet " + data + " for " + key); +return data; +}, "~S"); +c$.getSimulationReader = Clazz_defineMethod(c$, "getSimulationReader", +function(name){ +var data = JSV.common.JSVFileManager.cacheGet(name); +if (data == null) JSV.common.JSVFileManager.cachePut(name, data = JSV.common.JSVFileManager.getNMRSimulationJCampDX(name.substring("http://SIMULATION/".length))); +return JSV.common.JSVFileManager.getBufferedReaderForStringOrBytes(data); +}, "~S"); +c$.isAB = Clazz_defineMethod(c$, "isAB", +function(x){ +return JU.AU.isAB(x); +}, "~O"); +c$.isZipFile = Clazz_defineMethod(c$, "isZipFile", +function(is){ +try { +var abMagic = Clazz_newByteArray (4, 0); +is.mark(5); +var countRead = is.read(abMagic, 0, 4); +is.reset(); +return (countRead == 4 && abMagic[0] == 0x50 && abMagic[1] == 0x4B && abMagic[2] == 0x03 && abMagic[3] == 0x04); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.isGzip = Clazz_defineMethod(c$, "isGzip", +function(is){ +try { +var abMagic = Clazz_newByteArray (4, 0); +is.mark(5); +var countRead = is.read(abMagic, 0, 4); +is.reset(); +return (countRead == 4 && abMagic[0] == 0x1F && abMagic[1] == 0x8B); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.getStreamAsBytes = Clazz_defineMethod(c$, "getStreamAsBytes", +function(bis, out){ +try { +var buf = Clazz_newByteArray (1024, 0); +var bytes = (out == null ? Clazz_newByteArray (4096, 0) : null); +var len = 0; +var totalLen = 0; +while ((len = bis.read(buf, 0, 1024)) > 0) { +totalLen += len; +if (out == null) { +if (totalLen >= bytes.length) bytes = JU.AU.ensureLengthByte(bytes, totalLen * 2); +System.arraycopy(buf, 0, bytes, totalLen - len, len); +} else { +out.write(buf, 0, len); +}} +bis.close(); +if (out == null) { +return JU.AU.arrayCopyByte(bytes, totalLen); +}return totalLen + " bytes"; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.BufferedInputStream,JU.OC"); +c$.postByteArray = Clazz_defineMethod(c$, "postByteArray", +function(fileName, bytes){ +var ret = null; +try { +ret = JSV.common.JSVFileManager.getInputStream(fileName, false, bytes); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +ret = e.toString(); +} else { +throw e; +} +} +if ((typeof(ret)=='string')) return ret; +try { +ret = JSV.common.JSVFileManager.getStreamAsBytes(ret, null); +} catch (e) { +if (Clazz_exceptionOf(e,"JSV.exception.JSVException")){ +try { +(ret).close(); +} catch (e1) { +if (Clazz_exceptionOf(e1, Exception)){ +} else { +throw e1; +} +} +} else { +throw e; +} +} +return (ret == null ? "" : JSV.common.JSVFileManager.fixUTF(ret)); +}, "~S,~A"); +c$.getUTFEncoding = Clazz_defineMethod(c$, "getUTFEncoding", +function(bytes){ +if (bytes.length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) return JU.Encoding.UTF8; +if (bytes.length >= 4 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == 0xFE && bytes[3] == 0xFF) return JU.Encoding.UTF_32BE; +if (bytes.length >= 4 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0 && bytes[3] == 0) return JU.Encoding.UTF_32LE; +if (bytes.length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) return JU.Encoding.UTF_16LE; +if (bytes.length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) return JU.Encoding.UTF_16BE; +return JU.Encoding.NONE; +}, "~A"); +c$.fixUTF = Clazz_defineMethod(c$, "fixUTF", +function(bytes){ +var encoding = JSV.common.JSVFileManager.getUTFEncoding(bytes); +if (encoding !== JU.Encoding.NONE) try { +var s = String.instantialize(bytes, encoding.name().$replace('_', '-')); +switch (encoding) { +case JU.Encoding.UTF8: +case JU.Encoding.UTF_16BE: +case JU.Encoding.UTF_16LE: +s = s.substring(1); +break; +default: +break; +} +return s; +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +JU.Logger.error("fixUTF error " + e); +} else { +throw e; +} +} +return String.instantialize(bytes); +}, "~A"); +c$.getInputStream = Clazz_defineMethod(c$, "getInputStream", +function(name, showMsg, postBytes){ +var isURL = JSV.common.JSVFileManager.isURL(name); +var isApplet = (JSV.common.JSVFileManager.appletDocumentBase != null); +var $in = null; +var post = null; +var iurl; +if (isURL && (iurl = name.indexOf("?POST?")) >= 0) { +post = name.substring(iurl + 6); +name = name.substring(0, iurl); +}if (isApplet || isURL) { +var url; +try { +url = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, name, null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException("Cannot read " + name); +} else { +throw e; +} +} +JU.Logger.info("JSVFileManager opening URL " + url + (post == null ? "" : " with POST of " + post.length + " bytes")); +$in = JSV.common.JSVFileManager.viewer.apiPlatform.getURLContents(url, postBytes, post, false); +} else { +if (showMsg) JU.Logger.info("JSVFileManager opening file " + name); +$in = JSV.common.JSVFileManager.viewer.apiPlatform.getBufferedFileInputStream(name); +}if ((typeof($in)=='string')) throw new JSV.exception.JSVException($in); +return $in; +}, "~S,~B,~A"); +c$.getNMRSimulationJCampDX = Clazz_defineMethod(c$, "getNMRSimulationJCampDX", +function(name){ +var pt = 0; +var molFile = null; +var type = JSV.common.JSVFileManager.getSimulationType(name); +if (name.startsWith(type)) name = name.substring(type.length + 1); +var isInline = name.startsWith("MOL="); +if (isInline) { +name = name.substring(4); +pt = name.indexOf("/n__Jmol"); +if (pt > 0) name = name.substring(0, pt) + JU.PT.rep(name.substring(pt), "/n", "\n"); +molFile = name = JU.PT.rep(name, "\\n", "\n"); +}var key = "" + JSV.common.JSVFileManager.getSimulationHash(name, type); +if (JU.Logger.debugging) JU.Logger.info("JSVFileManager type=" + type + " key=" + key + " name=" + name); +var jcamp = JSV.common.JSVFileManager.cacheGet(key); +if (jcamp != null) return jcamp; +var src = (isInline ? null : JU.PT.rep(JSV.common.JSVFileManager.nciResolver, "%FILE", JU.PT.escapeUrl(name))); +if (!isInline && (molFile = JSV.common.JSVFileManager.getFileAsString(src)) == null || molFile.indexOf("= 0) { +JU.Logger.error("no MOL data returned by NCI"); +return null; +}var is13C = type.equals("C13"); +var url = (is13C ? JSV.common.JSVFileManager.nmrdbServerC13 : JSV.common.JSVFileManager.nmrdbServerH1); +var json = JSV.common.JSVFileManager.getFileAsString(url + molFile); +var map = ( new JU.JSJSONParser()).parseMap(json, true); +JSV.common.JSVFileManager.cachePut("json", json); +if (is13C) map = map.get("result"); +var jsonMolFile = map.get("molfile"); +if (jsonMolFile == null) { +System.out.println("JSVFileManager: no MOL file returned from EPFL"); +jsonMolFile = molFile; +} else { +System.out.println("JSVFileManager: MOL file hash=" + jsonMolFile.hashCode()); +}var atomMap = JSV.common.JSVFileManager.getAtomMap(jsonMolFile, molFile); +JSV.common.JSVFileManager.cachePut("mol", molFile); +{ +if (!isInline) Jmol.Cache.put("http://SIMULATION/" + type + +"/" + name + "#molfile", molFile.getBytes()); +}var xml = "\n"; +if (is13C) { +var spec = map.get("spectrum13C"); +jcamp = (spec.get("jcamp")).get("value"); +var lst = spec.get("predCSNuc"); +var sb = new JU.SB(); +for (var i = lst.size(); --i >= 0; ) { +map = lst.get(i); +sb.append("\n"); +} +sb.append(""); +xml += sb.toString(); +} else { +xml = JU.PT.rep(map.get("xml"), "", xml); +if (atomMap != null) { +var sb = new JU.SB(); +var signals = JU.PT.split(xml, " atoms=\""); +sb.append(signals[0]); +for (var i = 1; i < signals.length; i++) { +var s = signals[i]; +var a = JU.PT.parseInt(s); +sb.append(" atoms=\"").appendI(atomMap[a]).append(s.substring(s.indexOf("\""))); +} +xml = sb.toString(); +}xml = JU.PT.rep(xml, "<", ">\n<"); +xml = JU.PT.rep(xml, "\\\"", "\""); +jcamp = map.get("jcamp"); +}if (JU.Logger.debugging) JU.Logger.info(xml); +JSV.common.JSVFileManager.cachePut("xml", xml); +jcamp = "##TITLE=" + (isInline ? "JMOL SIMULATION/" + type : name) + "\n" + jcamp.substring(jcamp.indexOf("\n##") + 1); +pt = molFile.indexOf("\n"); +pt = molFile.indexOf("\n", pt + 1); +if (pt > 0 && pt == molFile.indexOf("\n \n")) molFile = molFile.substring(0, pt + 1) + "Created " + JSV.common.JSVFileManager.viewer.apiPlatform.getDateFormat("8824") + " by JSpecView " + JSV.common.JSVersion.VERSION + molFile.substring(pt + 1); +pt = 0; +pt = jcamp.indexOf("##."); +var id = JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, false); +var pt1 = id.indexOf("id='"); +if (isInline && pt1 > 0) id = id.substring(pt1 + 4, (id + "'").indexOf("'", pt1 + 4)); +jcamp = jcamp.substring(0, pt) + "##$MODELS=\n\n" + "\n" + molFile + "\n\n" + "##$SIGNALS=\n" + xml + "\n" + jcamp.substring(pt); +JSV.common.JSVFileManager.cachePut("jcamp", jcamp); +JSV.common.JSVFileManager.cachePut(key, jcamp); +return jcamp; +}, "~S"); +c$.getAtomMap = Clazz_defineMethod(c$, "getAtomMap", +function(jsonMolFile, jmolMolFile){ +var acJson = JSV.common.JSVFileManager.getCoord(jsonMolFile); +var acJmol = JSV.common.JSVFileManager.getCoord(jmolMolFile); +var n = acJson.length; +if (n != acJmol.length) return null; +var map = Clazz_newIntArray (n, 0); +var bs = new JU.BS(); +bs.setBits(0, n); +var haveMap = false; +for (var i = 0; i < n; i++) { +var a = acJson[i]; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +if (a.distanceSquared(acJmol[j]) < 0.1) { +bs.clear(j); +map[i] = j; +if (i != j) haveMap = true; +break; +}} +} +return (haveMap ? map : null); +}, "~S,~S"); +c$.getCoord = Clazz_defineMethod(c$, "getCoord", +function(mol){ +var lines = JU.PT.split(mol, "\n"); +var data = Clazz_newFloatArray (3, 0); +var n = Integer.parseInt(lines[3].substring(0, 3).trim()); +var pts = new Array(n); +for (var i = 0; i < n; i++) { +var line = lines[4 + i]; +JU.PT.parseFloatArrayInfested(JU.PT.getTokens(line.substring(0, 31)), data); +pts[i] = JU.P3.new3(data[0], data[1], data[2]); +} +return pts; +}, "~S"); +c$.setAttr = Clazz_defineMethod(c$, "setAttr", +function(sb, mykey, lucsKey, map){ +sb.append(mykey + "=\"").appendO(map.get(lucsKey)).append("\" "); +}, "JU.SB,~S,~S,java.util.Map"); +c$.getResource = Clazz_defineMethod(c$, "getResource", +function(object, fileName, error){ +var url = null; +try { +if ((url = object.getClass().getResource(fileName)) == null) error[0] = "Couldn't find file: " + fileName; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +error[0] = "Exception " + e + " in getResource " + fileName; +} else { +throw e; +} +} +return url; +}, "~O,~S,~A"); +c$.getResourceString = Clazz_defineMethod(c$, "getResourceString", +function(object, name, error){ +var url = JSV.common.JSVFileManager.getResource(object, name, error); +if (url == null) { +error[0] = "Error loading resource " + name; +return null; +}if ((typeof(url)=='string')) { +return JSV.common.JSVFileManager.getFileAsString(url); +}var sb = new JU.SB(); +try { +var br = new java.io.BufferedReader( new java.io.InputStreamReader((url).getContent(), "UTF-8")); +var line; +while ((line = br.readLine()) != null) sb.append(line).append("\n"); + +br.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +error[0] = e.toString(); +} else { +throw e; +} +} +return sb.toString(); +}, "~O,~S,~A"); +c$.getJmolFilePath = Clazz_defineMethod(c$, "getJmolFilePath", +function(filePath){ +try { +filePath = JSV.common.JSVFileManager.getFullPathName(filePath); +} catch (e) { +if (Clazz_exceptionOf(e,"JSV.exception.JSVException")){ +return null; +} else { +throw e; +} +} +return (JSV.common.JSVFileManager.appletDocumentBase == null ? filePath.$replace('\\', '/') : filePath); +}, "~S"); +c$.getTagName = Clazz_defineMethod(c$, "getTagName", +function(fileName){ +if (fileName == null) return "String" + (++JSV.common.JSVFileManager.stringCount); +if (JSV.common.JSVFileManager.isURL(fileName)) { +try { +if (fileName.startsWith("http://SIMULATION/")) return JSV.common.JSVFileManager.getAbbrSimulationFileName(fileName); +var name = ( new java.net.URL(Clazz_castNullAs("java.net.URL"), fileName, null)).getFile(); +return name.substring(name.lastIndexOf('/') + 1); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +return null; +} else { +throw e; +} +} +}return JSV.common.JSVFileManager.viewer.apiPlatform.newFile(fileName).getName(); +}, "~S"); +c$.setDocumentBase = Clazz_defineMethod(c$, "setDocumentBase", +function(v, documentBase){ +JSV.common.JSVFileManager.viewer = v; +JSV.common.JSVFileManager.appletDocumentBase = documentBase; +}, "JSV.common.JSViewer,java.net.URL"); +c$.getSimulationType = Clazz_defineMethod(c$, "getSimulationType", +function(filePath){ +return (filePath.indexOf("C13/") >= 0 ? "C13" : "H1"); +}, "~S"); +c$.appletDocumentBase = null; +c$.viewer = null; +c$.jsDocumentBase = ""; +c$.urlPrefixes = Clazz_newArray(-1, ["http:", "https:", "ftp:", "http://SIMULATION/", "file:"]); +c$.htCorrelationCache = new java.util.Hashtable(); +c$.nciResolver = "https://cactus.nci.nih.gov/chemical/structure/%FILE/file?format=sdf&get3d=True"; +c$.nmrdbServerH1 = "https://www.nmrdb.org/tools/jmol/predict.php?POST?molfile="; +c$.nmrdbServerC13 = "https://www.nmrdb.org/service/jsmol13c?POST?molfile="; +c$.stringCount = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["javajs.api.BytePoster", "J.api.PlatformViewer", "JSV.common.Spectrum"], "JSV.common.JSViewer", ["java.io.File", "java.net.URL", "java.util.Arrays", "$.Hashtable", "JU.CU", "$.Lst", "$.OC", "$.PT", "$.SB", "JSV.common.Annotation", "$.ExportType", "$.JSVFileManager", "$.PanelData", "$.PanelNode", "$.Parameters", "$.PeakInfo", "$.PrintLayout", "$.RepaintManager", "$.ScriptToken", "$.ScriptTokenizer", "JSV.source.JDXReader", "$.JDXSource", "JSV.tree.SimpleTree", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.si = null; +this.g2d = null; +this.spectraTree = null; +this.currentSource = null; +this.panelNodes = null; +this.parameters = null; +this.repaintManager = null; +this.selectedPanel = null; +this.mainPanel = null; +this.properties = null; +this.scriptQueue = null; +this.fileHelper = null; +this.jsvpPopupMenu = null; +this.dialogManager = null; +this.viewDialog = null; +this.overlayLegendDialog = null; +this.irMode = null; +this.loadImaginary = false; +this.interfaceOverlaid = false; +this.autoIntegrate = false; +this.autoShowLegend = false; +this.obscureTitleFromUser = null; +this.allowMenu = true; +this.initialStartIndex = -1; +this.initialEndIndex = -1; +this.isSingleThreaded = false; +this.isApplet = false; +this.isSigned = false; +this.recentScript = ""; +this.appletName = null; +this.fullName = null; +this.syncID = null; +this.html5Applet = null; +this.display = null; +this.maximumSize = 2147483647; +this.screenHeight = 0; +this.screenWidth = 0; +this.fileCount = 0; +this.nViews = 0; +this.scriptLevelCount = 0; +this.returnFromJmolModel = null; +this.integrationRatios = null; +this.apiPlatform = null; +this.popupAllowMenu = true; +this.popupZoomEnabled = true; +this.defaultLoadScript = null; +this.nmrMaxY = NaN; +this.overlayLegendVisible = false; +this.recentStackPercent = 5; +this.lastPrintLayout = null; +this.offWindowFrame = null; +this.recentOpenURL = "http://"; +this.recentURL = null; +this.recentSimulation = "tylenol"; +Clazz_instantialize(this, arguments);}, JSV.common, "JSViewer", null, [J.api.PlatformViewer, javajs.api.BytePoster]); +Clazz_prepareFields (c$, function(){ +this.irMode = JSV.common.Spectrum.IRMode.NO_CONVERT; +}); +Clazz_makeConstructor(c$, +function(si, isApplet, isJSApplet){ +this.si = si; +this.isApplet = isApplet; +JSV.common.JSViewer.isJS = isApplet && isJSApplet; +var jmol = null; +{ +self.Jmol && (jmol = Jmol); +}JSV.common.JSViewer.jmolObject = jmol; +this.isSigned = si.isSigned(); +this.apiPlatform = this.getPlatformInterface("Platform"); +this.apiPlatform.setViewer(this, this.display); +this.g2d = this.getPlatformInterface("G2D"); +this.spectraTree = new JSV.tree.SimpleTree(this); +this.parameters = this.getPlatformInterface("Parameters"); +this.parameters.setName("applet"); +this.fileHelper = (this.getPlatformInterface("FileHelper")).set(this); +this.isSingleThreaded = this.apiPlatform.isSingleThreaded(); +this.panelNodes = new JU.Lst(); +this.repaintManager = new JSV.common.RepaintManager(this); +if (!isApplet) this.setPopupMenu(true, true); +}, "JSV.api.ScriptInterface,~B,~B"); +Clazz_defineMethod(c$, "setProperty", +function(key, value){ +if (this.properties != null) this.properties.setProperty(key, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "setNode", +function(node){ +if (node.jsvp !== this.selectedPanel) this.si.siSetSelectedPanel(node.jsvp); +this.si.siSendPanelChange(); +this.si.siNodeSet(node); +}, "JSV.common.PanelNode"); +Clazz_defineMethod(c$, "setPopupMenu", +function(allowMenu, zoomEnabled){ +this.popupAllowMenu = allowMenu; +this.popupZoomEnabled = zoomEnabled; +}, "~B,~B"); +Clazz_defineMethod(c$, "showMenu", +function(x, y){ +if (!this.popupAllowMenu) return; +if (this.jsvpPopupMenu == null) { +try { +this.jsvpPopupMenu = this.getPlatformInterface("Popup"); +this.jsvpPopupMenu.jpiInitialize(this, this.isApplet ? "appletMenu" : "appMenu"); +this.jsvpPopupMenu.setEnabled(this.popupAllowMenu, this.popupZoomEnabled); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e + " initializing popup menu"); +return; +} else { +throw e; +} +} +}this.jsvpPopupMenu.jpiShow(x, y); +}, "~N,~N"); +Clazz_defineMethod(c$, "runScriptNow", +function(script){ +System.out.println(this.checkScript(script)); +this.scriptLevelCount++; +if (script == null) script = ""; +script = script.trim(); +if (script.startsWith("!")) script = script.substring(1).trim(); + else if (script.startsWith(">")) { +JU.Logger.error(script); +return true; +}if (script.indexOf("= 0) { +this.syncScript(script); +return true; +}JU.Logger.info("RUNSCRIPT " + script); +var isOK = true; +var nErrorsLeft = 10; +var commandTokens = new JSV.common.ScriptTokenizer(script, true); +var msg = null; +while (commandTokens != null && commandTokens.hasMoreTokens() && nErrorsLeft > 0 && isOK) { +var token = commandTokens.nextToken(); +var eachParam = new JSV.common.ScriptTokenizer(token, false); +var key = JSV.common.ScriptToken.getKey(eachParam); +if (key == null) continue; +var st = JSV.common.ScriptToken.getScriptToken(key); +var value = JSV.common.ScriptToken.getValue(st, eachParam, token); +try { +switch (st) { +case JSV.common.ScriptToken.UNKNOWN: +JU.Logger.info("Unrecognized parameter: " + key); +--nErrorsLeft; +break; +default: +if (this.selectedPanel == null) break; +this.parameters.set(this.pd(), st, value); +this.si.siUpdateBoolean(st, JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +this.si.siExecSetCallback(st, value); +break; +case JSV.common.ScriptToken.DEFAULTLOADSCRIPT: +value = JU.PT.rep(value, "''", "\""); +this.defaultLoadScript = (value.length > 0 ? value : null); +break; +case JSV.common.ScriptToken.DEFAULTNMRNORMALIZATION: +this.nmrMaxY = JU.PT.parseFloat(value); +break; +case JSV.common.ScriptToken.AUTOINTEGRATE: +this.autoIntegrate = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.CLOSE: +this.execClose(value); +break; +case JSV.common.ScriptToken.DEBUG: +JU.Logger.setLogLevel(value.toLowerCase().equals("high") ? 6 : JSV.common.Parameters.isTrue(value) ? 5 : 4); +break; +case JSV.common.ScriptToken.GETPROPERTY: +var info = (this.selectedPanel == null ? null : this.getPropertyAsJavaObject(value)); +if (info != null) this.selectedPanel.showMessage(JU.PT.toJSON(null, info), value); +break; +case JSV.common.ScriptToken.HELP: +this.execHelp(value); +break; +case JSV.common.ScriptToken.HIDDEN: +this.si.siExecHidden(JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.INTEGRATIONRATIOS: +this.integrationRatios = value; +this.execIntegrate(null); +break; +case JSV.common.ScriptToken.INTERFACE: +this.interfaceOverlaid = this.checkOvelayInterface(value); +break; +case JSV.common.ScriptToken.INTEGRALOFFSET: +case JSV.common.ScriptToken.INTEGRALRANGE: +this.execSetIntegralParameter(st, Double.parseDouble(value)); +break; +case JSV.common.ScriptToken.INVERTY: +this.execZoom("invertY"); +break; +case JSV.common.ScriptToken.JMOL: +this.si.syncToJmol(value); +break; +case JSV.common.ScriptToken.JSV: +this.syncScript(JU.PT.trimQuotes(value)); +break; +case JSV.common.ScriptToken.LOAD: +if (value.length == 0) { +if (this.defaultLoadScript != null) this.runScriptNow(this.defaultLoadScript); +break; +}this.execLoad(value, (this.defaultLoadScript == null ? "" : this.defaultLoadScript + ";") + commandTokens.getRemainingScript()); +msg = (this.selectedPanel == null ? null : this.si.siLoaded(value)); +commandTokens = null; +break; +case JSV.common.ScriptToken.LOADIMAGINARY: +this.loadImaginary = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.PEAK: +this.execPeak(value); +break; +case JSV.common.ScriptToken.PEAKLIST: +this.execPeakList(value); +break; +case JSV.common.ScriptToken.SCALEBY: +this.scaleSelectedBy(this.panelNodes, value); +break; +case JSV.common.ScriptToken.SCRIPT: +if (value.equals("") || value.toLowerCase().startsWith("inline")) { +this.execScriptInline(value); +} else { +var s = JSV.common.JSVFileManager.getFileAsString(value); +if (s != null && this.scriptLevelCount < 100) this.runScriptNow(s); +}break; +case JSV.common.ScriptToken.SELECT: +this.execSelect(value); +break; +case JSV.common.ScriptToken.SPECTRUM: +case JSV.common.ScriptToken.SPECTRUMNUMBER: +if (!this.setSpectrum(value)) isOK = false; +break; +case JSV.common.ScriptToken.STACKOFFSETY: +this.execOverlayOffsetY(JU.PT.parseInt("" + JU.PT.parseFloat(value))); +break; +case JSV.common.ScriptToken.TEST: +this.si.siExecTest(value); +break; +case JSV.common.ScriptToken.OVERLAY: +case JSV.common.ScriptToken.VIEW: +this.execView(value, true); +break; +case JSV.common.ScriptToken.HIGHLIGHT: +isOK = this.highlight(token); +break; +case JSV.common.ScriptToken.FINDX: +case JSV.common.ScriptToken.GETSOLUTIONCOLOR: +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +case JSV.common.ScriptToken.IRMODE: +case JSV.common.ScriptToken.LABEL: +case JSV.common.ScriptToken.LINK: +case JSV.common.ScriptToken.OVERLAYSTACKED: +case JSV.common.ScriptToken.PRINT: +case JSV.common.ScriptToken.SETPEAK: +case JSV.common.ScriptToken.SETX: +case JSV.common.ScriptToken.SHIFTX: +case JSV.common.ScriptToken.SHOWERRORS: +case JSV.common.ScriptToken.SHOWMEASUREMENTS: +case JSV.common.ScriptToken.SHOWMENU: +case JSV.common.ScriptToken.SHOWKEY: +case JSV.common.ScriptToken.SHOWPEAKLIST: +case JSV.common.ScriptToken.SHOWINTEGRATION: +case JSV.common.ScriptToken.SHOWPROPERTIES: +case JSV.common.ScriptToken.SHOWSOURCE: +case JSV.common.ScriptToken.YSCALE: +case JSV.common.ScriptToken.WRITE: +case JSV.common.ScriptToken.ZOOM: +if (this.isClosed()) { +isOK = false; +break; +}switch (st) { +default: +break; +case JSV.common.ScriptToken.FINDX: +this.pd().findX(null, Double.parseDouble(value)); +break; +case JSV.common.ScriptToken.GETSOLUTIONCOLOR: +this.show("solutioncolor" + value.toLowerCase()); +break; +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +this.execIntegrate(value); +break; +case JSV.common.ScriptToken.IRMODE: +this.execIRMode(value); +break; +case JSV.common.ScriptToken.LABEL: +this.pd().addAnnotation(JSV.common.ScriptToken.getTokens(value)); +break; +case JSV.common.ScriptToken.LINK: +this.pd().linkSpectra(JSV.common.PanelData.LinkMode.getMode(value)); +break; +case JSV.common.ScriptToken.OVERLAYSTACKED: +this.pd().splitStack(!JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.PRINT: +msg = this.execWrite(null); +break; +case JSV.common.ScriptToken.SETPEAK: +case JSV.common.ScriptToken.SETX: +case JSV.common.ScriptToken.SHIFTX: +this.execShiftSpectrum(st, token); +break; +case JSV.common.ScriptToken.SHOWERRORS: +this.show("errors"); +break; +case JSV.common.ScriptToken.SHOWINTEGRATION: +this.pd().showAnnotation(JSV.common.Annotation.AType.Integration, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWKEY: +this.setOverlayLegendVisibility(JSV.common.Parameters.getTFToggle(value), true); +break; +case JSV.common.ScriptToken.SHOWMEASUREMENTS: +this.pd().showAnnotation(JSV.common.Annotation.AType.Measurements, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWMENU: +this.showMenu(-2147483648, 0); +break; +case JSV.common.ScriptToken.SHOWPEAKLIST: +this.pd().showAnnotation(JSV.common.Annotation.AType.PeakList, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWPROPERTIES: +this.show("properties"); +break; +case JSV.common.ScriptToken.SHOWSOURCE: +this.show("source"); +break; +case JSV.common.ScriptToken.YSCALE: +this.setYScale(value); +break; +case JSV.common.ScriptToken.WINDOW: +this.si.siNewWindow(JSV.common.Parameters.isTrue(value), false); +break; +case JSV.common.ScriptToken.WRITE: +msg = this.execWrite(value); +break; +case JSV.common.ScriptToken.ZOOM: +isOK = this.execZoom(value); +break; +} +break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +msg = e.toString(); +JU.Logger.error(e.toString()); +isOK = false; +--nErrorsLeft; +} else { +throw e; +} +} +} +this.scriptLevelCount--; +this.si.siExecScriptComplete(msg, true); +return isOK; +}, "~S"); +Clazz_defineMethod(c$, "execShiftSpectrum", +function(st, script){ +var tokens = JSV.common.ScriptToken.getTokens(script); +var xOld = NaN; +var xNew = NaN; +switch (tokens.size()) { +case 2: +var value = tokens.get(1); +if (value.equals("")) value = "?"; +xNew = value.equalsIgnoreCase("NONE") ? 1.7976931348623157E308 : value.equalsIgnoreCase("?") ? NaN : Double.parseDouble(value); +break; +case 3: +xOld = Double.parseDouble(tokens.get(1)); +xNew = Double.parseDouble(tokens.get(2)); +break; +default: +Double.parseDouble(""); +} +var mode = 0; +switch (st) { +case JSV.common.ScriptToken.SETPEAK: +mode = 1; +break; +case JSV.common.ScriptToken.SETX: +mode = 2; +break; +case JSV.common.ScriptToken.SHIFTX: +mode = 3; +if (Double.isNaN(xNew)) Double.parseDouble(""); +break; +default: +return; +} +this.pd().shiftSpectrum(mode, xOld, xNew); +}, "JSV.common.ScriptToken,~S"); +Clazz_defineMethod(c$, "execClose", +function(value){ +var fromScript = (!value.startsWith("!")); +if (!fromScript) value = value.substring(1); +this.close(JU.PT.trimQuotes(value)); +if (!fromScript || this.panelNodes.size() == 0) this.si.siValidateAndRepaint(true); +}, "~S"); +Clazz_defineMethod(c$, "checkOvelayInterface", +function(value){ +return (value.equalsIgnoreCase("single") || value.equalsIgnoreCase("overlay")); +}, "~S"); +Clazz_defineMethod(c$, "execPeak", +function(value){ +try { +var tokens = JSV.common.ScriptToken.getTokens(JU.PT.rep(value, "#", "INDEX=")); +value = " type=\"" + tokens.get(0).toUpperCase() + "\" _match=\"" + JU.PT.trimQuotes(tokens.get(1).toUpperCase()) + "\""; +if (tokens.size() > 2 && tokens.get(2).equalsIgnoreCase("all")) value += " title=\"ALL\""; +this.processPeakPickEvent( new JSV.common.PeakInfo(value), false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "execPeakList", +function(value){ +var p = this.parameters; +var b = JSV.common.Parameters.getTFToggle(value); +if (value.indexOf("=") < 0) { +if (!this.isClosed()) this.pd().getPeakListing(null, b); +} else { +var tokens = JSV.common.ScriptToken.getTokens(value); +var threshold = p.peakListThreshold; +var interp = p.peakListInterpolation; +try { +for (var i = tokens.size(); --i >= 0; ) { +var token = tokens.get(i); +var pt = token.indexOf("="); +if (pt <= 0) continue; +var key = token.substring(0, pt); +value = token.substring(pt + 1); +if (key.startsWith("thr")) { +threshold = Double.$valueOf(value).doubleValue(); +} else if (key.startsWith("int")) { +interp = (value.equalsIgnoreCase("none") ? "NONE" : "parabolic"); +}} +p.peakListThreshold = threshold; +p.peakListInterpolation = interp; +if (!this.isClosed()) this.pd().getPeakListing(p, Boolean.TRUE); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}, "~S"); +Clazz_defineMethod(c$, "highlight", +function(value){ +var tokens = JSV.common.ScriptToken.getTokens(value); +var n = tokens.size(); +switch (n) { +case 3: +case 5: +case 6: +case 7: +break; +case 2: +case 4: +if (tokens.get(n - 1).equalsIgnoreCase("OFF")) break; +default: +return false; +} +if (!this.isClosed()) { +var x1 = JU.PT.parseFloat(n > 1 ? tokens.get(1) : ""); +var x2 = JU.PT.parseFloat(n > 2 ? tokens.get(2) : ""); +var r = this.getRGB(n > 3 ? tokens.get(3) : "100"); +var g = this.getRGB(n > 4 ? tokens.get(4) : "100"); +var b = this.getRGB(n > 5 ? tokens.get(5) : "100"); +var a = this.getRGB(n > 6 ? tokens.get(6) : "100"); +if (Float.isNaN(x1) || Float.isNaN(x2)) { +this.pd().removeAllHighlights(); +} else { +this.pd().removeHighlight(x1, x2); +if (a < 0) a = 150; +if (r >= 0 && g >= 0 && b >= 0) this.pd().addHighlight(null, x1, x2, null, r, g, b, a); +}this.repaint(true); +}return true; +}, "~S"); +Clazz_defineMethod(c$, "getRGB", +function(s){ +var f = JU.PT.parseFloat(s); +return Clazz_floatToInt(Float.isNaN(f) ? -1 : f > 1 ? f : f * 255); +}, "~S"); +Clazz_defineMethod(c$, "execZoom", +function(value){ +var x1 = 0; +var x2 = 0; +var y1 = 0; +var y2 = 0; +value = JU.PT.rep(value, " - ", " ").$replace(',', ' '); +var tokens = JSV.common.ScriptToken.getTokens(value); +switch (tokens.size()) { +default: +return false; +case 0: +var v = this.pd().getCurrentGraphSet().getCurrentView(); +value = Math.round(v.minXOnScale * 100) / 100 + "," + Math.round(v.maxXOnScale * 100) / 100; +value = this.selectedPanel.getInput("Enter zoom range x1 x2", "Zoom", value); +return (value == null || this.execZoom(value)); +case 1: +value = tokens.get(0); +if (value.equalsIgnoreCase("next")) { +this.pd().nextView(); +} else if (value.toLowerCase().startsWith("prev")) { +this.pd().previousView(); +} else if (value.equalsIgnoreCase("out")) { +this.pd().resetView(); +} else if (value.equalsIgnoreCase("clear")) { +this.pd().clearAllView(); +} else if (value.equalsIgnoreCase("invertY")) { +this.pd().getCurrentGraphSet().invertYAxis(); +}return true; +case 2: +x1 = Double.parseDouble(tokens.get(0)); +x2 = Double.parseDouble(tokens.get(1)); +break; +case 3: +var xy = tokens.get(0); +if (xy.equalsIgnoreCase("X")) { +x1 = Double.parseDouble(tokens.get(1)); +x2 = Double.parseDouble(tokens.get(2)); +} else if (xy.equalsIgnoreCase("Y")) { +y1 = Double.parseDouble(tokens.get(1)); +y2 = Double.parseDouble(tokens.get(2)); +}break; +case 4: +x1 = Double.parseDouble(tokens.get(0)); +y1 = Double.parseDouble(tokens.get(1)); +x2 = Double.parseDouble(tokens.get(2)); +y2 = Double.parseDouble(tokens.get(3)); +} +this.pd().setZoom(x1, y1, x2, y2); +return true; +}, "~S"); +Clazz_defineMethod(c$, "scaleSelectedBy", +function(nodes, value){ +try { +var f = Double.parseDouble(value); +for (var i = nodes.size(); --i >= 0; ) nodes.get(i).pd().scaleSelectedBy(f); + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JU.Lst,~S"); +Clazz_defineMethod(c$, "pd", +function(){ +return (this.selectedPanel == null ? null : this.selectedPanel.getPanelData()); +}); +Clazz_defineMethod(c$, "isClosed", +function(){ +return (this.pd() == null); +}); +Clazz_defineMethod(c$, "execSelect", +function(value){ +if (value.startsWith("ID ")) { +if (!this.isClosed()) try { +this.pd().selectSpectrum(null, "ID", JU.PT.trimQuotes(value.substring(3)), true); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return; +}var nodes = this.panelNodes; +for (var i = nodes.size(); --i >= 0; ) nodes.get(i).pd().selectFromEntireSet(-2147483648); + +var speclist = new JU.Lst(); +this.fillSpecList(value, speclist, false); +}, "~S"); +Clazz_defineMethod(c$, "execView", +function(value, fromScript){ +if (value.equals("")) { +this.checkOverlay(); +return; +}var speclist = new JU.Lst(); +var strlist = this.fillSpecList(value, speclist, true); +if (speclist.size() > 0) this.si.siOpenDataOrFile(null, strlist, speclist, strlist, -1, -1, false, null, null); +if (!fromScript) { +this.si.siValidateAndRepaint(false); +}}, "~S,~B"); +Clazz_defineMethod(c$, "execIRMode", +function(value){ +var mode = JSV.common.Spectrum.IRMode.getMode(value); +var type = this.pd().getSpectrum().dataType; +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().setIRMode(mode, type); + +this.setIRmode(value); +}, "~S"); +Clazz_defineMethod(c$, "execIntegrate", +function(value){ +if (this.isClosed()) return; +this.pd().checkIntegral(this.parameters, value); +if (this.integrationRatios != null) this.pd().setIntegrationRatios(this.integrationRatios); +this.integrationRatios = null; +this.repaint(true); +}, "~S"); +Clazz_defineMethod(c$, "repaint", +function(andTaintAll){ +this.selectedPanel.doRepaint(andTaintAll); +}, "~B"); +Clazz_defineMethod(c$, "execSetIntegralParameter", +function(st, value){ +var p = this.parameters; +switch (st) { +case JSV.common.ScriptToken.INTEGRALRANGE: +p.integralRange = value; +break; +case JSV.common.ScriptToken.INTEGRALOFFSET: +p.integralOffset = value; +break; +} +if (!this.isClosed()) this.pd().checkIntegral(this.parameters, "update"); +}, "JSV.common.ScriptToken,~N"); +Clazz_defineMethod(c$, "setYScale", +function(value){ +var tokens = JSV.common.ScriptToken.getTokens(value); +var pt = 0; +var isAll = false; +if (tokens.size() > 1 && tokens.get(0).equalsIgnoreCase("ALL")) { +isAll = true; +pt++; +}var y1 = Double.parseDouble(tokens.get(pt++)); +var y2 = Double.parseDouble(tokens.get(pt)); +if (isAll) { +var spec = this.pd().getSpectrum(); +for (var i = this.panelNodes.size(); --i >= 0; ) { +var node = this.panelNodes.get(i); +if (node.source !== this.currentSource) continue; +if (JSV.common.Spectrum.areXScalesCompatible(spec, node.getSpectrum(), false, false)) node.pd().setZoom(0, y1, 0, y2); +} +} else { +this.pd().setZoom(0, y1, 0, y2); +}}, "~S"); +Clazz_defineMethod(c$, "setOverlayLegendVisibility", +function(tftoggle, doSet){ +if (doSet) this.overlayLegendVisible = (tftoggle == null ? !this.overlayLegendVisible : tftoggle === Boolean.TRUE); +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +for (var i = this.panelNodes.size(); --i >= 0; ) this.showOverlayLegend(this.panelNodes.get(i), this.panelNodes.get(i) === node && this.overlayLegendVisible); + +}, "Boolean,~B"); +Clazz_defineMethod(c$, "showOverlayLegend", +function(node, visible){ +var legend = node.legend; +if (legend == null && visible) { +legend = node.setLegend(node.pd().getNumberOfSpectraInCurrentSet() > 1 && node.pd().getNumberOfGraphSets() == 1 ? this.getDialog(JSV.common.Annotation.AType.OverlayLegend, null) : null); +}if (legend != null) legend.setVisible(visible); +}, "JSV.common.PanelNode,~B"); +Clazz_defineMethod(c$, "syncScript", +function(peakScript){ +if (peakScript.equals("TEST")) peakScript = JSV.common.JSViewer.testScript; +JU.Logger.info("JSViewer.syncScript Jmol>JSV " + peakScript); +if (peakScript.indexOf("= 0) this.syncPeaksAfterSyncScript(); +return; +}JU.Logger.info(">>toJSV>> " + peakScript); +var sourceID = JU.PT.getQuotedAttribute(peakScript, "sourceID"); +var type; +var model; +var file; +var jmolSource; +var index; +var atomKey; +if (sourceID == null) { +file = JU.PT.getQuotedAttribute(peakScript, "file"); +index = JU.PT.getQuotedAttribute(peakScript, "index"); +if (file == null || index == null) return; +file = JU.PT.rep(file, "#molfile", ""); +model = JU.PT.getQuotedAttribute(peakScript, "model"); +jmolSource = JU.PT.getQuotedAttribute(peakScript, "src"); +var modelSent = (jmolSource != null && jmolSource.startsWith("Jmol") ? null : this.returnFromJmolModel); +if (model != null && modelSent != null && !model.equals(modelSent)) { +JU.Logger.info("JSV ignoring model " + model + "; should be " + modelSent); +return; +}this.returnFromJmolModel = null; +if (this.panelNodes.size() == 0 || !this.checkFileAlreadyLoaded(file)) { +JU.Logger.info("file " + file + " not found -- JSViewer closing all and reopening"); +this.si.siSyncLoad(file); +}type = JU.PT.getQuotedAttribute(peakScript, "type"); +atomKey = null; +} else { +file = null; +index = model = sourceID; +atomKey = "," + JU.PT.getQuotedAttribute(peakScript, "atom") + ","; +type = "ID"; +jmolSource = sourceID; +}var pi = this.selectPanelByPeak(file, index, atomKey); +var pd = this.pd(); +pd.selectSpectrum(file, type, model, true); +this.si.siSendPanelChange(); +pd.addPeakHighlight(pi); +this.repaint(true); +if (jmolSource == null || (pi != null && pi.getAtoms() != null)) this.si.syncToJmol(this.jmolSelect(pi)); +}, "~S"); +Clazz_defineMethod(c$, "syncPeaksAfterSyncScript", +function(){ +var source = this.currentSource; +if (source == null) return; +try { +var file = "file=" + JU.PT.esc(source.getFilePath()); +var peaks = source.getSpectra().get(0).getPeakList(); +var sb = new JU.SB(); +sb.append("["); +var n = peaks.size(); +for (var i = 0; i < n; i++) { +var s = peaks.get(i).toString(); +s = s + " " + file; +sb.append(JU.PT.esc(s)); +if (i > 0) sb.append(","); +} +sb.append("]"); +this.si.syncToJmol("Peaks: " + sb); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "checkFileAlreadyLoaded", +function(fileName){ +if (this.isClosed()) return false; +if (this.pd().hasFileLoaded(fileName)) return true; +for (var i = this.panelNodes.size(); --i >= 0; ) if (this.panelNodes.get(i).pd().hasFileLoaded(fileName)) { +this.si.siSetSelectedPanel(this.panelNodes.get(i).jsvp); +return true; +} +return false; +}, "~S"); +Clazz_defineMethod(c$, "selectPanelByPeak", +function(file, index, atomKey){ +if (this.panelNodes == null) return null; +var pi = null; +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().addPeakHighlight(null); + +pi = this.pd().selectPeakByFileIndex(file, index, atomKey); +if (pi != null) { +this.setNode(JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes)); +} else { +for (var i = this.panelNodes.size(); --i >= 0; ) { +var node = this.panelNodes.get(i); +if ((pi = node.pd().selectPeakByFileIndex(file, index, atomKey)) != null) { +this.setNode(node); +break; +}} +}return pi; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "processPeakPickEvent", +function(eventObj, isApp){ +var pi; +if (Clazz_instanceOf(eventObj,"JSV.common.PeakInfo")) { +pi = eventObj; +var pi2 = this.pd().findMatchingPeakInfo(pi); +if (pi2 == null) { +if (!"ALL".equals(pi.getTitle())) return; +var node = null; +for (var i = 0; i < this.panelNodes.size(); i++) if ((pi2 = this.panelNodes.get(i).pd().findMatchingPeakInfo(pi)) != null) { +node = this.panelNodes.get(i); +break; +} +if (node == null) return; +this.setNode(node); +}pi = pi2; +} else { +var e = (eventObj); +this.si.siSetSelectedPanel(e.getSource()); +pi = e.getPeakInfo(); +}this.pd().addPeakHighlight(pi); +this.syncToJmol(pi); +if (pi.isClearAll()) this.repaint(false); + else this.pd().selectSpectrum(pi.getFilePath(), pi.getType(), pi.getModel(), true); +this.si.siCheckCallbacks(pi.getTitle()); +}, "~O,~B"); +Clazz_defineMethod(c$, "newStructToJmol", +function(data){ +JU.Logger.info("sending new structure to Jmol:\n" + data); +this.si.syncToJmol("struct:" + data); +}, "~S"); +Clazz_defineMethod(c$, "syncToJmol", +function(pi){ +this.repaint(true); +this.returnFromJmolModel = pi.getModel(); +this.si.syncToJmol(this.jmolSelect(pi)); +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "sendPanelChange", +function(){ +var pd = this.pd(); +var spec = pd.getSpectrum(); +var pi = spec.getSelectedPeak(); +if (pi == null) pi = spec.getModelPeakInfoForAutoSelectOnLoad(); +if (pi == null) pi = spec.getBasePeakInfo(); +pd.addPeakHighlight(pi); +JU.Logger.info(Thread.currentThread() + "JSViewer sendFrameChange " + this.selectedPanel); +this.syncToJmol(pi); +}); +Clazz_defineMethod(c$, "jmolSelect", +function(pi){ +var script = ("IR".equals(pi.getType()) || "RAMAN".equals(pi.getType()) ? "vibration ON; selectionHalos OFF;" : "vibration OFF; selectionhalos " + (pi.getAtoms() == null ? "OFF" : "ON")); +return "Select: " + pi + " script=\"" + script + " \" sourceID=\"" + this.pd().getSpectrum().sourceID + "\""; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getPropertyAsJavaObject", +function(key){ +var map = new java.util.Hashtable(); +if ("SOURCEID".equalsIgnoreCase(key)) { +map.put(key, (this.pd() == null ? "" : this.pd().getSpectrum().sourceID)); +return map; +}if (key != null && key.startsWith("DATA_")) { +map.put(key, "" + JSV.common.JSVFileManager.cacheGet(key.substring(5))); +return map; +}var isAll = false; +if (key != null && key.toUpperCase().startsWith("ALL ") || "all".equalsIgnoreCase(key)) { +key = key.substring(3).trim(); +isAll = true; +}if ("".equals(key)) key = null; +if ("NAMES".equalsIgnoreCase(key) || "KEYS".equalsIgnoreCase(key)) key = ""; +var map0 = this.pd().getInfo(true, key); +if (!isAll && map0 != null) return map0; +if (map0 != null) map.put("current", map0); +var info = new JU.Lst(); +for (var i = 0; i < this.panelNodes.size(); i++) { +var jsvp = this.panelNodes.get(i).jsvp; +if (jsvp == null) continue; +info.addLast(this.panelNodes.get(i).getInfo(key)); +} +map.put("items", info); +return map; +}, "~S"); +Clazz_defineMethod(c$, "getCoordinate", +function(){ +if (!this.isClosed()) { +var coord = this.pd().getClickedCoordinate(); +if (coord != null) return coord.getXVal() + " " + coord.getYVal(); +}return ""; +}); +Clazz_defineMethod(c$, "fillSpecList", +function(value, speclist, isView){ +var prefix = "1."; +var list; +var list0 = null; +var isNone = (value.equalsIgnoreCase("NONE")); +if (isNone || value.equalsIgnoreCase("all")) value = "*"; +if (value.indexOf("*") < 0) { +var tokens = value.$plit(" "); +var sb = new JU.SB(); +for (var i = 0; i < tokens.length; i++) { +var pt = tokens[i].indexOf('.'); +if (pt != tokens[i].lastIndexOf('.')) tokens[i] = tokens[i].substring(0, pt + 1) + tokens[i].substring(pt + 1).$replace('.', '_'); +sb.append(tokens[i]).append(" "); +} +value = sb.toString().trim(); +}if (value.equals("*")) { +list = JSV.common.ScriptToken.getTokens(JSV.common.PanelNode.getSpectrumListAsString(this.panelNodes)); +} else if (value.startsWith("\"") || value.startsWith("'")) { +list = JSV.common.ScriptToken.getTokens(value); +} else { +value = JU.PT.rep(value, "_", " _ "); +value = JU.PT.rep(value, "-", " - "); +list = JSV.common.ScriptToken.getTokens(value); +list0 = JSV.common.ScriptToken.getTokens(JSV.common.PanelNode.getSpectrumListAsString(this.panelNodes)); +if (list0.size() == 0) return null; +}var id0 = (this.isClosed() ? prefix : JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes).id); +id0 = id0.substring(0, id0.indexOf(".") + 1); +var sb = new JU.SB(); +var n = list.size(); +var idLast = null; +for (var i = 0; i < n; i++) { +var id = list.get(i); +var userYFactor = NaN; +var isubspec = -1; +if (i + 1 < n && list.get(i + 1).equals("*")) { +i += 2; +userYFactor = Double.parseDouble(list.get(i)); +} else if (i + 1 < n && list.get(i + 1).equals("_")) { +i += 2; +isubspec = Integer.parseInt(list.get(i)); +}if (id.equals("-")) { +if (idLast == null) idLast = list0.get(0); +id = (i + 1 == n ? list0.get(list0.size() - 1) : list.get(++i)); +if (!id.contains(".")) id = id0 + id; +var pt = 0; +while (pt < list0.size() && !list0.get(pt).equals(idLast)) pt++; + +pt++; +while (pt < list0.size() && !idLast.equals(id)) { +var node = JSV.common.PanelNode.findNodeById((idLast = list0.get(pt++)), this.panelNodes); +speclist.addLast(node.pd().getSpectrumAt(0)); +sb.append(",").append(idLast); +} +continue; +}var node; +if (id.startsWith("'") && id.endsWith("'")) id = "\"" + JU.PT.trim(id, "'") + "\""; +if (id.startsWith("\"")) { +id = JU.PT.trim(id, "\""); +var pn = this.panelNodes.size(); +for (var j = 0; j < pn; j++) { +node = this.panelNodes.get(j); +if (node.fileName != null && node.fileName.startsWith(id) || node.frameTitle != null && node.frameTitle.startsWith(id)) { +this.addSpecToList(node.pd(), userYFactor, -1, speclist, isView); +sb.append(",").append(node.id); +}} +continue; +}if (!id.contains(".")) id = id0 + id; +node = JSV.common.PanelNode.findNodeById(id, this.panelNodes); +if (node == null) continue; +idLast = id; +this.addSpecToList(node.pd(), userYFactor, isubspec, speclist, isView); +sb.append(",").append(id); +if (isubspec > 0) sb.append(".").appendI(isubspec); +} +if (isView && speclist.size() > 0) { +var node = JSV.common.PanelNode.findNodeById(sb.substring(1), this.panelNodes); +if (node != null) { +this.setNode(node); +speclist.clear(); +}}return (isNone ? "NONE" : sb.length() > 0 ? sb.toString().substring(1) : null); +}, "~S,JU.Lst,~B"); +Clazz_defineMethod(c$, "addSpecToList", +function(pd, userYFactor, isubspec, list, isView){ +if (isView) { +var spec = pd.getSpectrumAt(0); +spec.setUserYFactor(Double.isNaN(userYFactor) ? 1 : userYFactor); +pd.addToList(isubspec - 1, list); +} else { +pd.selectFromEntireSet(isubspec - 1); +}}, "JSV.common.PanelData,~N,~N,JU.Lst,~B"); +Clazz_defineMethod(c$, "getSolutionColor", +function(asFitted){ +var spectrum = this.pd().getSpectrum(); +var vi = (spectrum.canShowSolutionColor() ? JSV.common.JSViewer.getInterface("JSV.common.Visible") : null); +return (vi == null ? -1 : vi.getColour(spectrum, asFitted)); +}, "~B"); +Clazz_defineMethod(c$, "openDataOrFile", +function(data, name, specs, strUrl, firstSpec, lastSpec, isAppend, id){ +if ("NONE".equals(name)) { +this.close("View*"); +return 0; +}this.si.writeStatus(""); +var filePath = null; +var newPath = null; +var fileName = null; +var isView = false; +if (strUrl != null && strUrl.startsWith("cache://")) { +{ +data = Jmol.Cache.get(name = strUrl); +}}var file = null; +if (data != null) { +try { +fileName = name; +newPath = filePath = JSV.common.JSVFileManager.getFullPathName(name); +} catch (e) { +if (Clazz_exceptionOf(e,"JSV.exception.JSVException")){ +} else { +throw e; +} +} +} else if (specs != null) { +isView = true; +newPath = fileName = filePath = "View" + (++this.nViews); +} else if (strUrl != null) { +try { +file = this.apiPlatform.newFile(strUrl); +var u = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, strUrl, null); +filePath = u.toString(); +this.recentURL = filePath; +fileName = JSV.common.JSVFileManager.getTagName(filePath); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +fileName = file.getName(); +newPath = filePath = file.getFullPath(); +this.recentURL = null; +} else { +throw e; +} +} +}var pt = -1; +if ((pt = JSV.common.PanelNode.isOpen(this.panelNodes, filePath)) >= 0 || (pt = JSV.common.PanelNode.isOpen(this.panelNodes, strUrl)) >= 0) { +if (isView) { +--this.nViews; +this.setNode(this.panelNodes.get(pt)); +} else { +this.si.writeStatus(filePath + " is already open"); +}return -1; +}if (!isAppend && !isView) this.close("all"); +this.si.setCursor(3); +try { +this.si.siSetCurrentSource(isView ? JSV.source.JDXSource.createView(specs) : JSV.source.JDXReader.createJDXSource(file, data, filePath, this.obscureTitleFromUser === Boolean.TRUE, this.loadImaginary, firstSpec, lastSpec, this.nmrMaxY)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +{ +alert(e.toString()) +}this.si.setCursor(0); +if (this.isApplet) { +this.selectedPanel.showMessage(e.toString(), "Error Opening File"); +}return -3; +} else { +throw e; +} +} +this.si.setCursor(0); +System.gc(); +if (newPath == null) { +newPath = this.currentSource.getFilePath(); +if (newPath != null) fileName = newPath.substring(newPath.lastIndexOf("/") + 1); +} else { +this.currentSource.setFilePath(newPath); +}if (id == null && !isView) id = newPath; +if (id != null) this.currentSource.setID(id); +this.si.siSetLoaded(fileName, newPath); +var spec = this.currentSource.getJDXSpectrum(0); +if (spec == null) { +return -4; +}specs = this.currentSource.getSpectra(); +JSV.common.Spectrum.process(specs, this.irMode); +var autoOverlay = this.interfaceOverlaid || spec.isAutoOverlayFromJmolClick(); +var combine = isView || autoOverlay && this.currentSource.isCompoundSource; +if (combine) { +this.combineSpectra((isView ? strUrl : null)); +} else { +this.splitSpectra(); +}this.pd().setTaintedAll(); +if (!isView) this.si.siUpdateRecentMenus(filePath); +return 0; +}, "~O,~S,JU.Lst,~S,~N,~N,~B,~S"); +Clazz_defineMethod(c$, "close", +function(value){ +var n0 = 0; +var pt = (value == null ? -2 : value.indexOf(">")); +if (pt > 0) { +n0 = JU.PT.parseInt(value.substring(pt + 1).trim()); +value = value.substring(0, pt).trim(); +}if ("*".equals(value)) value = "all"; +var isAll = (value === "all"); +if (value == null || n0 == 0 && value.equalsIgnoreCase("all")) { +this.closeSource(null); +return; +}var isViews = value.equalsIgnoreCase("views"); +var list = new JU.Lst(); +var source; +value = value.$replace('\\', '/'); +var n = this.panelNodes.size(); +var nMax = n - n0; +if (value.endsWith("*")) { +value = value.substring(0, value.length - 1); +for (var i = n; --i >= 0; ) if (this.panelNodes.get(i).fileName.startsWith(value)) list.addLast(this.panelNodes.get(i).source); + +} else if (value.equalsIgnoreCase("selected")) { +var lastSource = null; +for (var i = n; --i >= 0; ) { +source = this.panelNodes.get(i).source; +if (this.panelNodes.get(i).isSelected && (lastSource == null || lastSource !== source)) list.addLast(source); +lastSource = source; +} +} else if (isAll || isViews || value.equalsIgnoreCase("simulations")) { +for (var n1 = 0, i = n; --i >= 0 && n1 < nMax; ) if (isAll ? true : isViews ? this.panelNodes.get(i).isView : this.panelNodes.get(i).isSimulation) { +list.addLast(this.panelNodes.get(i).source); +n1++; +} +} else { +source = (value.length == 0 ? this.currentSource : JSV.common.PanelNode.findSourceByNameOrId(value, this.panelNodes)); +if (source != null) list.addLast(source); +}for (var i = list.size(); --i >= 0; ) this.closeSource(list.get(i)); + +if (this.selectedPanel == null && this.panelNodes.size() > 0) this.si.siSetSelectedPanel(JSV.common.PanelNode.getLastFileFirstNode(this.panelNodes)); +}, "~S"); +Clazz_defineMethod(c$, "execLoad", +function(value, script){ +var applet = this.html5Applet; +var isID = false; +if (isID) { +applet._search(value); +return; +}var tokens = JSV.common.ScriptToken.getTokens(value); +var filename = tokens.get(0); +var id = null; +var pt = 0; +if (filename.equalsIgnoreCase("ID")) { +id = JU.PT.trimQuotes(tokens.get(1)); +filename = tokens.get(2); +pt = 2; +}var isAppend = filename.equalsIgnoreCase("APPEND"); +var isCheck = filename.equalsIgnoreCase("CHECK"); +if (isAppend || isCheck) pt++; +if (pt > 0) filename = tokens.get(pt); +if (script == null) script = this.defaultLoadScript; +if (filename.equals("?")) { +this.openFileFromDialog(isAppend, false, null, script); +return; +}if (filename.equals("http://?")) { +this.openFileFromDialog(isAppend, true, null, null); +return; +}if (filename.equals("$?") || filename.equals("$H1?")) { +this.openFileFromDialog(isAppend, true, "H1", null); +return; +}if (filename.equals("$C13?")) { +this.openFileFromDialog(isAppend, true, "C13", null); +return; +}var isH1 = filename.equalsIgnoreCase("MOL") || filename.equalsIgnoreCase("H1"); +var isC13 = filename.equalsIgnoreCase("C13"); +if (isH1 || isC13) filename = "http://SIMULATION/" + (isH1 ? "H1/" : "C13/") + "MOL=" + JU.PT.trimQuotes(tokens.get(++pt)); +if (!isCheck && !isAppend) { +if (filename.equals("\"\"") && this.currentSource != null) filename = this.currentSource.getFilePath(); +this.close("all"); +}filename = JU.PT.trimQuotes(filename); +var isSimulation = filename.startsWith("$"); +if (isSimulation) { +if (!filename.startsWith("$H1") && !filename.startsWith("$C13")) filename = "$H1/" + filename.substring(1); +filename = "http://SIMULATION/" + filename.substring(1); +}var firstSpec = (pt + 1 < tokens.size() ? Integer.$valueOf(tokens.get(++pt)).intValue() : -1); +var lastSpec = (pt + 1 < tokens.size() ? Integer.$valueOf(tokens.get(++pt)).intValue() : firstSpec); +this.si.siOpenDataOrFile(null, null, null, filename, firstSpec, lastSpec, isAppend, script, id); +if (isSimulation) { +this.close("views"); +this.execView("*", true); +}}, "~S,~S"); +Clazz_defineMethod(c$, "combineSpectra", +function(name){ +var source = this.currentSource; +var specs = source.getSpectra(); +var haveSimulation = false; +for (var i = specs.size(); --i >= 0; ) if (specs.get(i).isSimulation) { +haveSimulation = true; +break; +} +var jsvp = this.si.siGetNewJSVPanel2(specs); +jsvp.setTitle(source.getTitle()); +if (jsvp.getTitle().equals("")) { +jsvp.getPanelData().setViewTitle(source.getFilePath()); +jsvp.setTitle(name); +}this.si.siSetPropertiesFromPreferences(jsvp, true); +this.spectraTree.createTree(++this.fileCount, source, Clazz_newArray(-1, [jsvp])).getPanelNode().isView = true; +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +node.setFrameTitle(name); +node.isView = true; +if (this.autoShowLegend && this.pd().getNumberOfGraphSets() == 1) node.setLegend(this.getDialog(JSV.common.Annotation.AType.OverlayLegend, null)); +this.si.siSetMenuEnables(node, false); +if (haveSimulation) this.pd().splitStack(true); +}, "~S"); +Clazz_defineMethod(c$, "closeSource", +function(source){ +var rootNode = this.spectraTree.getRootNode(); +var fileName = (source == null ? null : source.getFilePath()); +var toDelete = new JU.Lst(); +var enume = rootNode.children(); +while (enume.hasMoreElements()) { +var node = enume.nextElement(); +if (fileName == null || node.getPanelNode().source.matchesFilePath(fileName)) { +JU.Logger.info("Closing " + node.getPanelNode().source.getFilePath()); +for (var e = node.children(); e.hasMoreElements(); ) { +var childNode = e.nextElement(); +toDelete.addLast(childNode); +this.panelNodes.removeObj(childNode.getPanelNode()); +} +toDelete.addLast(node); +if (fileName != null) break; +}} +this.spectraTree.deleteNodes(toDelete); +if (source == null) { +if (this.currentSource != null) this.currentSource.dispose(); +this.currentSource = null; +if (this.selectedPanel != null) this.selectedPanel.dispose(); +} else { +}if (this.currentSource === source) { +this.si.siSetSelectedPanel(null); +this.si.siSetCurrentSource(null); +}var max = 0; +for (var i = 0; i < this.panelNodes.size(); i++) { +var f = JU.PT.parseFloat(this.panelNodes.get(i).id); +if (f >= max + 1) max = Clazz_doubleToInt(Math.floor(f)); +} +this.fileCount = max; +System.gc(); +if (JU.Logger.debugging) JU.Logger.checkMemory(); +this.si.siSourceClosed(source); +}, "JSV.source.JDXSource"); +Clazz_defineMethod(c$, "setFrameAndTreeNode", +function(i){ +if (this.panelNodes == null || i < 0 || i >= this.panelNodes.size()) return; +this.setNode(this.panelNodes.get(i)); +}, "~N"); +Clazz_defineMethod(c$, "selectFrameNode", +function(jsvp){ +var node = JSV.common.PanelNode.findNode(jsvp, this.panelNodes); +if (node == null) return null; +this.spectraTree.setPath(this.spectraTree.newTreePath(node.treeNode.getPath())); +this.setOverlayLegendVisibility(null, false); +return node; +}, "JSV.api.JSVPanel"); +Clazz_defineMethod(c$, "setSpectrum", +function(value){ +if (value.indexOf('.') >= 0) { +var node = JSV.common.PanelNode.findNodeById(value, this.panelNodes); +if (node == null) return false; +this.setNode(node); +} else { +var n = JU.PT.parseInt(value); +if (n <= 0) { +this.checkOverlay(); +return false; +}this.setFrameAndTreeNode(n - 1); +}return true; +}, "~S"); +Clazz_defineMethod(c$, "splitSpectra", +function(){ +var source = this.currentSource; +var specs = source.getSpectra(); +var panels = new Array(specs.size()); +var jsvp = null; +for (var i = 0; i < specs.size(); i++) { +var spec = specs.get(i); +jsvp = this.si.siGetNewJSVPanel(spec); +this.si.siSetPropertiesFromPreferences(jsvp, true); +panels[i] = jsvp; +} +this.spectraTree.createTree(++this.fileCount, source, panels); +this.si.siGetNewJSVPanel(null); +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +this.si.siSetMenuEnables(node, true); +}); +Clazz_defineMethod(c$, "selectedTreeNode", +function(node){ +if (node == null) { +return; +}if (node.isLeaf()) { +this.setNode(node.getPanelNode()); +} else { +System.out.println("not a leaf"); +}this.si.siSetCurrentSource(node.getPanelNode().source); +}, "JSV.api.JSVTreeNode"); +Clazz_defineMethod(c$, "dispose", +function(){ +this.fileHelper = null; +if (this.viewDialog != null) this.viewDialog.dispose(); +this.viewDialog = null; +if (this.overlayLegendDialog != null) this.overlayLegendDialog.dispose(); +this.overlayLegendDialog = null; +if (this.jsvpPopupMenu != null) { +this.jsvpPopupMenu.jpiDispose(); +this.jsvpPopupMenu = null; +}if (this.panelNodes != null) for (var i = this.panelNodes.size(); --i >= 0; ) { +this.panelNodes.get(i).dispose(); +this.panelNodes.removeItemAt(i); +} +}); +Clazz_defineMethod(c$, "runScript", +function(script){ +if (this.scriptQueue == null) this.si.siProcessCommand(script); + else this.scriptQueue.addLast(script); +}, "~S"); +Clazz_defineMethod(c$, "requestRepaint", +function(){ +if (this.selectedPanel != null) this.repaintManager.refresh(); +}); +Clazz_defineMethod(c$, "repaintDone", +function(){ +this.repaintManager.repaintDone(); +}); +Clazz_defineMethod(c$, "checkOverlay", +function(){ +if (this.mainPanel != null) this.markSelectedPanels(this.panelNodes, this.mainPanel.getCurrentPanelIndex()); +this.viewDialog = this.getDialog(JSV.common.Annotation.AType.Views, null); +}); +Clazz_defineMethod(c$, "markSelectedPanels", +function(panelNodes, ip){ +for (var i = panelNodes.size(); --i >= 0; ) panelNodes.get(i).isSelected = (ip == i); + +}, "JU.Lst,~N"); +Clazz_defineMethod(c$, "execOverlayOffsetY", +function(offset){ +if (offset == -2147483648) { +if (this.selectedPanel == null) return; +var soffset = this.selectedPanel.getInput("Enter a vertical offset in percent for stacked plots", "Overlay", "" + this.recentStackPercent); +var f = JU.PT.parseFloat(soffset); +if (Float.isNaN(f)) return; +offset = Clazz_floatToInt(f); +}this.recentStackPercent = offset; +this.parameters.viewOffset = offset; +if (this.isClosed()) this.pd().setYStackOffsetPercent(offset); +}, "~N"); +Clazz_defineMethod(c$, "execScriptInline", +function(script){ +if (script.length > 0) script = script.substring(6).trim(); +if (script.length == 0) script = this.selectedPanel.getInput("Enter a JSpecView script", "Script", this.recentScript); +if (script == null) return; +this.recentScript = script; +this.runScriptNow(script); +}, "~S"); +Clazz_defineMethod(c$, "setDisplay", +function(canvas){ +this.apiPlatform.setViewer(this, this.display = canvas); +var wh = Clazz_newIntArray (2, 0); +this.apiPlatform.getFullScreenDimensions(canvas, wh); +this.setScreenDimension(wh[0], wh[1]); +}, "~O"); +Clazz_defineMethod(c$, "setScreenDimension", +function(width, height){ +height = Math.min(height, this.maximumSize); +width = Math.min(width, this.maximumSize); +if (this.screenWidth == width && this.screenHeight == height) return; +this.resizeImage(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "resizeImage", +function(width, height){ +if (width > 0) { +this.screenWidth = width; +this.screenHeight = height; +} else { +width = (this.screenWidth == 0 ? this.screenWidth = 500 : this.screenWidth); +height = (this.screenHeight == 0 ? this.screenHeight = 500 : this.screenHeight); +}this.g2d.setWindowParameters(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "updateJS", +function(){ +if (this.selectedPanel != null) this.selectedPanel.paintComponent(this.apiPlatform.getGraphics(null)); +}); +Clazz_defineMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return (this.selectedPanel != null && this.selectedPanel.processMouseEvent(id, x, y, modifiers, time)); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "processTwoPointGesture", +function(touches){ +if (!this.isClosed()) this.selectedPanel.processTwoPointGesture(touches); +}, "~A"); +Clazz_defineMethod(c$, "getApplet", +function(){ +return this.html5Applet; +}); +Clazz_defineMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +var ans = (this.currentSource == null ? "NO" : this.getDialogManager().getDialogInput(this, "Do you want to append this file? (Answer NO to replace.)", "Drag/Drop Action", 3, null, null, "YES")); +if (ans == null) return; +var pre = (ans.toLowerCase().startsWith("y") ? "append" : ""); +var post = (pre === "" ? "" : "; view *"); +this.runScript("load " + pre + " \"" + fileName + "\"" + post); +}, "~S,~N"); +Clazz_defineMethod(c$, "getHeight", +function(){ +return this.screenHeight; +}); +Clazz_defineMethod(c$, "getWidth", +function(){ +return this.screenWidth; +}); +Clazz_defineMethod(c$, "getPlatformInterface", +function(type){ +return JSV.common.JSViewer.getInterface("JSV." + (JSV.common.JSViewer.isJS ? "js2d.Js" : "java.Awt") + type); +}, "~S"); +Clazz_defineMethod(c$, "getDialogManager", +function(){ +if (this.dialogManager != null) return this.dialogManager; +this.dialogManager = this.getPlatformInterface("DialogManager"); +return this.dialogManager.set(this); +}); +Clazz_defineMethod(c$, "getDialog", +function(type, spec){ +var root = "JSV.dialog."; +switch (type) { +case JSV.common.Annotation.AType.Integration: +return (JSV.common.JSViewer.getInterface(root + "IntegrationDialog")).setParams("Integration for " + spec, this, spec); +case JSV.common.Annotation.AType.Measurements: +return (JSV.common.JSViewer.getInterface(root + "MeasurementsDialog")).setParams("Measurements for " + spec, this, spec); +case JSV.common.Annotation.AType.PeakList: +return (JSV.common.JSViewer.getInterface(root + "PeakListDialog")).setParams("Peak List for " + spec, this, spec); +case JSV.common.Annotation.AType.OverlayLegend: +return this.overlayLegendDialog = (JSV.common.JSViewer.getInterface(root + "OverlayLegendDialog")).setParams(this.pd().getViewTitle(), this, null); +case JSV.common.Annotation.AType.Views: +return this.viewDialog = (JSV.common.JSViewer.getInterface(root + "ViewsDialog")).setParams("View/Combine/Close Spectra", this, null); +default: +return null; +} +}, "JSV.common.Annotation.AType,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "show", +function(what){ +this.getDialogManager(); +if (what.equals("properties")) { +this.dialogManager.showProperties(null, this.pd().getSpectrum()); +} else if (what.equals("errors")) { +this.dialogManager.showSourceErrors(null, this.currentSource); +} else if (what.equals("source")) { +if (this.currentSource == null) { +if (this.panelNodes.size() > 0) this.dialogManager.showMessageDialog(null, "Please Select a Spectrum", "Select Spectrum", 0); +return; +}this.dialogManager.showSource(this, this.pd().getSpectrum()); +} else if (what.startsWith("solutioncolorfill")) { +if (what.indexOf("all") >= 0) { +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().setSolutionColor(what); + +} else { +this.pd().setSolutionColor(what); +}} else if (what.startsWith("solutioncolor")) { +var msg = this.getSolutionColorStr(what.indexOf("false") < 0); +msg = "background-color:rgb(" + msg + ")'>
Predicted Solution Colour- RGB(" + msg + ")

"; +if (JSV.common.JSViewer.isJS) { +this.dialogManager.showMessage(this, "
", "Predicted Colour"); +}}}, "~S"); +Clazz_defineMethod(c$, "getDialogPrint", +function(isJob){ +if (!JSV.common.JSViewer.isJS) try { +var pl = (this.getPlatformInterface("PrintDialog")).set(this.offWindowFrame, this.lastPrintLayout, isJob).getPrintLayout(); +if (pl != null) this.lastPrintLayout = pl; +return pl; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return new JSV.common.PrintLayout(this.pd()); +}, "~B"); +Clazz_defineMethod(c$, "setIRmode", +function(mode){ +if (mode.equals("AtoT")) { +this.irMode = JSV.common.Spectrum.IRMode.TO_TRANS; +} else if (mode.equals("TtoA")) { +this.irMode = JSV.common.Spectrum.IRMode.TO_ABS; +} else { +this.irMode = JSV.common.Spectrum.IRMode.getMode(mode); +}}, "~S"); +Clazz_defineMethod(c$, "getOptionFromDialog", +function(items, title, label){ +return this.getDialogManager().getOptionFromDialog(null, items, this.selectedPanel, title, label); +}, "~A,~S,~S"); +Clazz_defineMethod(c$, "print", +function(fileName){ +return this.execWrite("PDF \"" + fileName + "\""); +}, "~S"); +Clazz_defineMethod(c$, "execWrite", +function(value){ +if (JSV.common.JSViewer.isJS && value == null) value = "PDF"; +var msg = (JSV.common.JSViewer.getInterface("JSV.export.Exporter")).write(this, value == null ? null : JSV.common.ScriptToken.getTokens(value), false); +this.si.writeStatus(msg); +return msg; +}, "~S"); +Clazz_defineMethod(c$, "$export", +function(type, n){ +if (type == null) type = "XY"; +var pd = this.pd(); +var nMax = pd.getNumberOfSpectraInCurrentSet(); +if (n < -1 || n >= nMax) return "Maximum spectrum index (0-based) is " + (nMax - 1) + "."; +var spec = (n < 0 ? pd.getSpectrum() : pd.getSpectrumAt(n)); +try { +return (JSV.common.JSViewer.getInterface("JSV.export.Exporter")).exportTheSpectrum(this, JSV.common.ExportType.getType(type), null, spec, 0, spec.getXYCoords().length - 1, null, type.equalsIgnoreCase("PDF")); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return null; +} else { +throw e; +} +} +}, "~S,~N"); +Clazz_overrideMethod(c$, "postByteArray", +function(fileName, bytes){ +return JSV.common.JSVFileManager.postByteArray(fileName, bytes); +}, "~S,~A"); +Clazz_defineMethod(c$, "getOutputChannel", +function(fileName, isBinary){ +var os = null; +{ +while (fileName.startsWith("/")) fileName = +fileName.substring(1); +}return new JU.OC().setParams(this, fileName, !isBinary, os); +}, "~S,~B"); +c$.getInterface = Clazz_defineMethod(c$, "getInterface", +function(name){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "showMessage", +function(msg){ +if (this.selectedPanel != null && msg != null) this.selectedPanel.showMessage(msg, null); +}, "~S"); +Clazz_defineMethod(c$, "openFileFromDialog", +function(isAppend, isURL, simulationType, script){ +var url = null; +if (simulationType != null) { +url = this.fileHelper.getUrlFromDialog("Enter the name or identifier of a compound", this.recentSimulation); +if (url == null) return; +this.recentSimulation = url; +url = "$" + simulationType + "/" + url; +} else if (isURL) { +url = this.fileHelper.getUrlFromDialog("Enter the URL of a JCAMP-DX File", this.recentURL == null ? this.recentOpenURL : this.recentURL); +if (url == null) return; +this.recentOpenURL = url; +} else { +var userData = Clazz_newArray(-1, [Boolean.$valueOf(isAppend), script]); +var file = this.fileHelper.showFileOpenDialog(this.mainPanel, userData); +if (file != null) url = file.getFullPath(); +}if (url != null) this.runScriptNow("load " + (isAppend ? "APPEND " : "") + "\"" + url + "\"" + (script == null ? "" : ";" + script)); +}, "~B,~B,~S,~S"); +Clazz_defineMethod(c$, "openFile", +function(fileName, closeFirst){ +if (closeFirst && this.panelNodes != null) { +var source = JSV.common.PanelNode.findSourceByNameOrId(( new java.io.File(fileName)).getAbsolutePath(), this.panelNodes); +if (source != null) this.closeSource(source); +}this.si.siOpenDataOrFile(null, null, null, fileName, -1, -1, true, this.defaultLoadScript, null); +}, "~S,~B"); +Clazz_defineMethod(c$, "selectPanel", +function(jsvp, panelNodes){ +var iPanel = -1; +if (panelNodes != null) { +for (var i = panelNodes.size(); --i >= 0; ) { +var j = panelNodes.get(i).jsvp; +if (j === jsvp) { +iPanel = i; +} else { +j.setEnabled(false); +j.setFocusable(false); +j.getPanelData().closeAllDialogsExcept(JSV.common.Annotation.AType.NONE); +}} +this.markSelectedPanels(panelNodes, iPanel); +}return iPanel; +}, "JSV.api.JSVPanel,JU.Lst"); +Clazz_defineMethod(c$, "checkAutoIntegrate", +function(){ +if (this.autoIntegrate) this.pd().integrateAll(this.parameters); +}); +Clazz_defineMethod(c$, "parseInitScript", +function(params){ +if (params == null) params = ""; +var allParamTokens = new JSV.common.ScriptTokenizer(params, true); +if (JU.Logger.debugging) { +JU.Logger.info("Running in DEBUG mode"); +}while (allParamTokens.hasMoreTokens()) { +var token = allParamTokens.nextToken(); +var eachParam = new JSV.common.ScriptTokenizer(token, false); +var key = eachParam.nextToken(); +if (key.equalsIgnoreCase("SET")) key = eachParam.nextToken(); +key = key.toUpperCase(); +var st = JSV.common.ScriptToken.getScriptToken(key); +var value = JSV.common.ScriptToken.getValue(st, eachParam, token); +JU.Logger.info("KEY-> " + key + " VALUE-> " + value + " : " + st); +try { +switch (st) { +default: +this.parameters.set(null, st, value); +break; +case JSV.common.ScriptToken.UNKNOWN: +break; +case JSV.common.ScriptToken.APPLETID: +this.fullName = this.appletName + "__" + (this.appletName = value) + "__"; +var applet = null; +{ +self.Jmol && (applet = Jmol._applets[value]); +}this.html5Applet = applet; +break; +case JSV.common.ScriptToken.AUTOINTEGRATE: +this.autoIntegrate = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.COMPOUNDMENUON: +break; +case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +this.si.siExecSetCallback(st, value); +break; +case JSV.common.ScriptToken.ENDINDEX: +this.initialEndIndex = Integer.parseInt(value); +break; +case JSV.common.ScriptToken.INTERFACE: +this.checkOvelayInterface(value); +break; +case JSV.common.ScriptToken.IRMODE: +this.setIRmode(value); +break; +case JSV.common.ScriptToken.MENUON: +this.allowMenu = Boolean.parseBoolean(value); +break; +case JSV.common.ScriptToken.OBSCURE: +if (this.obscureTitleFromUser == null) this.obscureTitleFromUser = Boolean.$valueOf(value); +break; +case JSV.common.ScriptToken.STARTINDEX: +this.initialStartIndex = Integer.parseInt(value); +break; +case JSV.common.ScriptToken.SYNCID: +this.fullName = this.appletName + "__" + (this.syncID = value) + "__"; +break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +}, "~S"); +Clazz_defineMethod(c$, "getSolutionColorStr", +function(asFit){ +var pt = JU.CU.colorPtFromInt(this.getSolutionColor(asFit), null); +return Clazz_floatToInt(pt.x) + "," + Clazz_floatToInt(pt.y) + "," + Clazz_floatToInt(pt.z); +}, "~B"); +Clazz_defineMethod(c$, "checkCommandLineForTip", +function(c, cmd, oneLineOnly){ +var isHelp = (c == '\1'); +if (!isHelp && c != '\0') { +if (c != '\t' && (c == '\n' || c.charCodeAt(0) < 32 || c.charCodeAt(0) > 126)) return null; +cmd += (Character.isISOControl(c) ? "" : "" + c); +}var tip; +if (cmd.indexOf(";") >= 0) cmd = cmd.substring(cmd.lastIndexOf(";") + 1); +var ret = null; +while (cmd.startsWith(" ")) cmd = cmd.substring(1); + +if (cmd.length == 0 && !isHelp) { +tip = ""; +} else { +var tokens = JSV.common.ScriptToken.getTokens(cmd); +if (tokens.size() == 0 && !isHelp) return ""; +var isExact = (cmd.endsWith(" ") || tokens.size() > 1 && oneLineOnly); +var list = JSV.common.ScriptToken.getScriptTokenList(tokens.size() == 0 ? null : tokens.get(0), isExact); +switch (list.size()) { +case 0: +tip = "?"; +break; +case 1: +var st = list.get(0); +tip = st.getTip(); +try { +if (tip.indexOf("TRUE") >= 0) tip = " (" + this.parameters.getBoolean(st) + ")"; + else if (st.name().indexOf("COLOR") >= 0) tip = " (" + JU.CU.toRGBHexString(this.parameters.getElementColor(st)) + ")"; + else tip = ""; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +if (c == '\t' || isExact || !oneLineOnly) { +tip = st.name() + " " + st.getTip() + tip + " " + st.getDescription(); +if (c == '\t') ret = st.name() + " "; +break; +}tip = st.name() + " " + tip; +break; +default: +tip = JSV.common.ScriptToken.getNameList(list); +} +}if (oneLineOnly) { +this.si.writeStatus(tip); +} else { +ret = tip; +}return ret; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "checkScript", +function(script){ +return this.checkCommandLineForTip('\0', script, false); +}, "~S"); +Clazz_defineMethod(c$, "execHelp", +function(value){ +var s = this.checkCommandLineForTip('\1', value, false); +if (s.indexOf(" ") < 0 && s.indexOf(",") > 0) { +var tokens = JU.PT.split(s, ","); +java.util.Arrays.sort(tokens); +s = ""; +for (var i = 0; i < tokens.length; i++) { +var st = JSV.common.ScriptToken.getScriptToken(tokens[i]); +s += tokens[i] + " " + st.getTip() + "\n " + st.getDescription() + "\n\n"; +} +this.getDialogManager().showMessage(null, s, "HELP " + value); +} else { +this.selectedPanel.showMessage(s, "Help " + value); +}System.out.println(s); +}, "~S"); +c$.testScript = " src=\"JPECVIEW\" file=\"http://SIMULATION/$caffeine\""; +c$.isJS = false; +c$.isSwingJS = false; +c$.jmolObject = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Annotation", "$.Coordinate"], "JSV.common.Measurement", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pt2 = null; +this.value = 0; +Clazz_instantialize(this, arguments);}, JSV.common, "Measurement", JSV.common.Annotation); +Clazz_prepareFields (c$, function(){ +this.pt2 = new JSV.common.Coordinate(); +}); +Clazz_defineMethod(c$, "setM1", +function(x, y, spec){ +this.setA(x, y, spec, "", false, false, 0, 6); +this.setPt2(this.getXVal(), this.getYVal()); +return this; +}, "~N,~N,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "copyM", +function(){ +var m = new JSV.common.Measurement(); +m.setA(this.getXVal(), this.getYVal(), this.spec, this.text, false, false, this.offsetX, this.offsetY); +m.setPt2(this.pt2.getXVal(), this.pt2.getYVal()); +return m; +}); +Clazz_defineMethod(c$, "setPt2", +function(spec, doSetPt2){ +this.spec = spec; +if (doSetPt2) this.setPt2(this.getXVal(), this.getYVal()); +return this; +}, "JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "setPt2", +function(x, y){ +this.pt2.setXVal(x); +this.pt2.setYVal(y); +this.value = Math.abs(x - this.getXVal()); +this.text = this.spec.setMeasurementText(this); +}, "~N,~N"); +Clazz_defineMethod(c$, "getSpectrum", +function(){ +return this.spec; +}); +Clazz_defineMethod(c$, "setValue", +function(value){ +this.value = value; +this.text = this.spec.setMeasurementText(this); +}, "~N"); +Clazz_defineMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz_defineMethod(c$, "getXVal2", +function(){ +return this.pt2.getXVal(); +}); +Clazz_defineMethod(c$, "getYVal2", +function(){ +return this.pt2.getYVal(); +}); +Clazz_overrideMethod(c$, "addSpecShift", +function(dx){ +this.setXVal(this.getXVal() + dx); +this.pt2.setXVal(this.pt2.getXVal() + dx); +}, "~N"); +Clazz_defineMethod(c$, "setYVal2", +function(y2){ +this.pt2.setYVal(y2); +}, "~N"); +Clazz_defineMethod(c$, "overlaps", +function(x1, x2){ +return (Math.min(this.getXVal(), this.getXVal2()) < Math.max(x1, x2) && Math.max(this.getXVal(), this.getXVal2()) > Math.min(x1, x2)); +}, "~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getXVal() + "," + this.pt2.getXVal() + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JU.Lst", "JSV.api.AnnotationData"], "JSV.common.MeasurementData", ["JU.AU", "$.DF", "JSV.common.Annotation", "$.Parameters"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.type = null; +this.spec = null; +this.units = null; +this.precision = 0; +this.myParams = null; +this.isON = true; +this.key = null; +Clazz_instantialize(this, arguments);}, JSV.common, "MeasurementData", JU.Lst, JSV.api.AnnotationData); +Clazz_makeConstructor(c$, +function(type, spec){ +Clazz_superConstructor (this, JSV.common.MeasurementData, []); +this.type = type; +this.spec = spec; +this.myParams = new JSV.common.Parameters().setName("MeasurementData"); +}, "JSV.common.Annotation.AType,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "getMeasurements", +function(){ +return this; +}); +Clazz_overrideMethod(c$, "getAType", +function(){ +return this.type; +}); +Clazz_overrideMethod(c$, "getState", +function(){ +return this.isON; +}); +Clazz_overrideMethod(c$, "setState", +function(b){ +this.isON = b; +}, "~B"); +Clazz_defineMethod(c$, "setMeasurements", +function(measurements){ +}, "JU.Lst"); +Clazz_overrideMethod(c$, "getParameters", +function(){ +return this.myParams; +}); +Clazz_defineMethod(c$, "getDataHeader", +function(){ +return JSV.common.MeasurementData.HEADER; +}); +Clazz_defineMethod(c$, "getMeasurementListArray", +function(units){ +this.units = units; +var ddata = this.getMeasurementListArrayReal(units); +var precisionX = (this.spec.isNMR() ? 4 : 2); +var precisionDX = (this.spec.isHNMR() && units.equals("ppm") ? 4 : 2); +var data = new Array(this.size()); +for (var i = this.size(); --i >= 0; ) data[i] = Clazz_newArray(-1, ["" + (i + 1), JU.DF.formatDecimalDbl(ddata[i][0], precisionX), JU.DF.formatDecimalDbl(ddata[i][1], precisionX), JU.DF.formatDecimalDbl(ddata[i][2], precisionDX)]); + +return data; +}, "~S"); +Clazz_defineMethod(c$, "getMeasurementListArrayReal", +function(units){ +var toHz = this.spec.isNMR() && units.equalsIgnoreCase("HZ"); +var data = JU.AU.newDouble2(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; ) { +var y = this.get(i).getValue(); +if (toHz) y *= this.spec.getObservedFreq(); +data[pt++] = Clazz_newDoubleArray(-1, [this.get(i).getXVal(), this.get(i).getXVal2(), y]); +} +return data; +}, "~S"); +c$.checkParameters = Clazz_defineMethod(c$, "checkParameters", +function(md, p){ +if (md.size() == 0) return false; +var myParams = md.getParameters(); +switch (md.getAType()) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.PeakList: +return (p.peakListInterpolation.equals(myParams.peakListInterpolation) && p.peakListThreshold == myParams.peakListThreshold); +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +} +return false; +}, "JSV.common.MeasurementData,JSV.common.ColorParameters"); +Clazz_overrideMethod(c$, "getSpectrum", +function(){ +return this.spec; +}); +Clazz_overrideMethod(c$, "getData", +function(){ +return this; +}); +Clazz_defineMethod(c$, "clear", +function(x1, x2){ +for (var i = this.size(); --i >= 0; ) { +var $in = this.get(i); +if ($in.text.length == 0 || $in.overlaps(x1, x2)) { +this.removeItemAt(i); +}} +}, "~N,~N"); +Clazz_defineMethod(c$, "find", +function(x){ +for (var i = this.size(); --i >= 0; ) { +var $in = this.get(i); +if ($in.overlaps(x, x)) { +return i; +}} +return -1; +}, "~N"); +Clazz_overrideMethod(c$, "setSpecShift", +function(dx){ +for (var i = this.size(); --i >= 0; ) { +var m = this.get(i); +var x = m.getXVal() + dx; +m.setXVal(x); +m.setValue(x); +m.text = JU.DF.formatDecimalDbl(x, this.precision); +} +}, "~N"); +Clazz_overrideMethod(c$, "getGraphSetKey", +function(){ +return this.key; +}); +Clazz_overrideMethod(c$, "setGraphSetKey", +function(key){ +this.key = key; +}, "~S"); +Clazz_overrideMethod(c$, "isVisible", +function(){ +return true; +}); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("header", this.getDataHeader()); +info.put("table", this.getMeasurementListArrayReal("ppm")); +if (this.units != null) info.put("units", this.units); +}, "java.util.Map"); +Clazz_overrideMethod(c$, "isDialog", +function(){ +return false; +}); +c$.HEADER = Clazz_newArray(-1, ["", "start", "end", "value"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum", "J.api.EventManager", "java.util.Hashtable", "JU.Lst"], "JSV.common.PanelData", ["JU.CU", "JSV.common.Annotation", "$.Coordinate", "$.GraphSet", "$.JSVFileManager", "$.JSVersion", "$.JSViewer", "$.MeasurementData", "$.Parameters", "$.PeakPickEvent", "$.ScriptToken", "$.Spectrum", "$.SubSpecChangeEvent", "$.ZoomEvent", "JU.Font", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g2d = null; +this.g2d0 = null; +this.vwr = null; +this.listeners = null; +this.currentGraphSet = null; +this.options = null; +this.jsvp = null; +this.graphSets = null; +this.currentSplitPoint = 0; +this.thisWidget = null; +this.coordClicked = null; +this.coordsClicked = null; +this.ctrlPressed = false; +this.shiftPressed = false; +this.drawXAxisLeftToRight = false; +this.isIntegralDrag = false; +this.xAxisLeftToRight = true; +this.scalingFactor = 1; +this.integralShiftMode = 0; +this.left = 60; +this.right = 50; +this.coordStr = ""; +this.startupPinTip = "Click to set."; +this.title = null; +this.clickCount = 0; +this.nSpectra = 0; +this.thisWidth = 0; +this.thisHeight = 0; +this.startIndex = 0; +this.endIndex = 0; +this.commonFilePath = null; +this.viewTitle = null; +this.displayFontName = null; +this.titleFontName = null; +this.isPrinting = false; +this.doReset = true; +this.printingFontName = null; +this.printGraphPosition = "default"; +this.titleDrawn = false; +this.display1D = false; +this.isLinked = false; +this.printJobTitle = null; +this.spectra = null; +this.taintedAll = true; +this.testingJavaScript = false; +this.currentFont = null; +this.mouseState = null; +this.gridOn = false; +this.titleOn = false; +this.peakTabsOn = false; +this.mouseX = 0; +this.mouseY = 0; +this.linking = false; +this.xPixelClicked = 0; +this.coordinatesColor = null; +this.gridColor = null; +this.integralPlotColor = null; +this.peakTabColor = null; +this.plotAreaColor = null; +this.scaleColor = null; +this.titleColor = null; +this.unitsColor = null; +this.highlightColor = null; +this.zoomBoxColor = null; +this.zoomBoxColor2 = null; +this.BLACK = null; +this.bgcolor = null; +this.optionsSaved = null; +this.gMain = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PanelData", null, J.api.EventManager); +Clazz_prepareFields (c$, function(){ +this.listeners = new JU.Lst(); +this.options = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(panel, viewer){ +this.vwr = viewer; +this.jsvp = panel; +this.g2d = this.g2d0 = viewer.g2d; +this.BLACK = this.g2d.getColor1(0); +this.highlightColor = this.g2d.getColor4(255, 0, 0, 200); +this.zoomBoxColor = this.g2d.getColor4(150, 150, 100, 130); +this.zoomBoxColor2 = this.g2d.getColor4(150, 100, 100, 130); +}, "JSV.api.JSVPanel,JSV.common.JSViewer"); +Clazz_defineMethod(c$, "addListener", +function(listener){ +if (!this.listeners.contains(listener)) { +this.listeners.addLast(listener); +}}, "JSV.api.PanelListener"); +Clazz_defineMethod(c$, "getCurrentGraphSet", +function(){ +return this.currentGraphSet; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +this.jsvp = null; +for (var i = 0; i < this.graphSets.size(); i++) this.graphSets.get(i).dispose(); + +this.graphSets = null; +this.currentFont = null; +this.currentGraphSet = null; +this.coordClicked = null; +this.coordsClicked = null; +this.thisWidget = null; +this.options = null; +this.listeners = null; +}); +Clazz_defineMethod(c$, "setViewTitle", +function(title){ +this.viewTitle = title; +}, "~S"); +Clazz_defineMethod(c$, "getViewTitle", +function(){ +return (this.viewTitle == null ? this.getTitle() : this.viewTitle); +}); +Clazz_defineMethod(c$, "getInfo", +function(selectedOnly, key){ +var info = new java.util.Hashtable(); +var sets = null; +if (selectedOnly) return this.currentGraphSet.getInfo(key, this.getCurrentSpectrumIndex()); +var entries = this.options.entrySet(); +if ("".equals(key)) { +var val = "type title nSets "; +for (var entry, $entry = entries.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) val += entry.getKey().name() + " "; + +info.put("KEYS", val); +} else { +for (var entry, $entry = entries.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) JSV.common.Parameters.putInfo(key, info, entry.getKey().name(), entry.getValue()); + +JSV.common.Parameters.putInfo(key, info, "type", this.getSpectrumAt(0).getDataType()); +JSV.common.Parameters.putInfo(key, info, "title", this.title); +JSV.common.Parameters.putInfo(key, info, "nSets", Integer.$valueOf(this.graphSets.size())); +}sets = new JU.Lst(); +for (var i = this.graphSets.size(); --i >= 0; ) sets.addLast(this.graphSets.get(i).getInfo(key, -1)); + +info.put("sets", sets); +return info; +}, "~B,~S"); +Clazz_defineMethod(c$, "setBooleans", +function(parameters, st){ +if (st == null) { +var booleans = parameters.getBooleans(); +for (var entry, $entry = booleans.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setBooleans(parameters, entry.getKey()); + +return; +}this.setBoolean(st, parameters.getBoolean(st)); +}, "JSV.common.Parameters,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setBoolean", +function(st, isTrue){ +this.setTaintedAll(); +if (st === JSV.common.ScriptToken.REVERSEPLOT) { +this.currentGraphSet.setReversePlot(isTrue); +return; +}this.options.put(st, Boolean.$valueOf(isTrue)); +switch (st) { +case JSV.common.ScriptToken.DISPLAY1D: +case JSV.common.ScriptToken.DISPLAY2D: +this.doReset = true; +break; +} +}, "JSV.common.ScriptToken,~B"); +Clazz_defineMethod(c$, "getBoolean", +function(st){ +if (st === JSV.common.ScriptToken.REVERSEPLOT) return this.currentGraphSet.reversePlot; +if (this.options == null) return false; +var b = this.options.get(st); +return (b != null && (Clazz_instanceOf(b, Boolean)) && (b) === Boolean.TRUE); +}, "JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setFontName", +function(st, fontName){ +switch (st) { +case JSV.common.ScriptToken.DISPLAYFONTNAME: +this.displayFontName = fontName; +break; +case JSV.common.ScriptToken.TITLEFONTNAME: +this.titleFontName = fontName; +break; +} +if (fontName != null) this.options.put(st, fontName); +}, "JSV.common.ScriptToken,~S"); +Clazz_defineMethod(c$, "getDisplay1D", +function(){ +return this.display1D; +}); +Clazz_defineMethod(c$, "setTaintedAll", +function(){ +this.taintedAll = true; +}); +Clazz_defineMethod(c$, "initOne", +function(spectrum){ +this.spectra = new JU.Lst(); +this.spectra.addLast(spectrum); +this.initMany(this.spectra, 0, 0); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "initMany", +function(spectra, startIndex, endIndex){ +this.startIndex = startIndex; +this.endIndex = endIndex; +this.nSpectra = spectra.size(); +this.spectra = spectra; +this.commonFilePath = spectra.get(0).getFilePath(); +for (var i = 0; i < this.nSpectra; i++) if (!this.commonFilePath.equalsIgnoreCase(spectra.get(i).getFilePath())) { +this.commonFilePath = null; +break; +} +this.setGraphSets(JSV.common.PanelData.LinkMode.NONE); +}, "JU.Lst,~N,~N"); +Clazz_defineMethod(c$, "setGraphSets", +function(linkMode){ +this.graphSets = JSV.common.GraphSet.createGraphSetsAndSetLinkMode(this, this.jsvp, this.spectra, this.startIndex, this.endIndex, linkMode); +this.currentGraphSet = this.graphSets.get(0); +this.title = this.getSpectrum().getTitleLabel(); +}, "JSV.common.PanelData.LinkMode"); +Clazz_defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +var pi2 = null; +for (var i = 0; i < this.graphSets.size(); i++) if ((pi2 = this.graphSets.get(i).findMatchingPeakInfo(pi)) != null) break; + +return pi2; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "integrateAll", +function(parameters){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).integrate(-1, parameters); + +}, "JSV.common.ColorParameters"); +Clazz_defineMethod(c$, "getNumberOfGraphSets", +function(){ +return this.graphSets.size(); +}); +Clazz_defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz_defineMethod(c$, "refresh", +function(){ +this.doReset = true; +}); +Clazz_defineMethod(c$, "addAnnotation", +function(tokens){ +var title = this.currentGraphSet.addAnnotation(tokens, this.getTitle()); +if (title != null) this.title = title; +}, "JU.Lst"); +Clazz_defineMethod(c$, "addPeakHighlight", +function(peakInfo){ +for (var i = 0; i < this.graphSets.size(); i++) this.graphSets.get(i).addPeakHighlight(peakInfo); + +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +var pi = this.currentGraphSet.selectPeakByFileIndex(filePath, index, atomKey); +if (pi == null) for (var i = this.graphSets.size(); --i >= 0; ) if (this.graphSets.get(i) !== this.currentGraphSet && (pi = this.graphSets.get(i).selectPeakByFileIndex(filePath, index, atomKey)) != null) break; + +return pi; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "setPlotColors", +function(colors){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setPlotColors(colors); + +}, "~A"); +Clazz_defineMethod(c$, "selectSpectrum", +function(filePath, type, model, andCurrent){ +if (andCurrent) this.currentGraphSet.selectSpectrum(filePath, type, model); +if ("ID".equals(type)) { +this.jumpToSpectrumIndex(this.getCurrentSpectrumIndex(), true); +return; +}for (var i = 0; i < this.graphSets.size(); i++) if (this.graphSets.get(i) !== this.currentGraphSet) this.graphSets.get(i).selectSpectrum(filePath, type, model); + +}, "~S,~S,~S,~B"); +Clazz_defineMethod(c$, "hasFileLoaded", +function(filePath){ +for (var i = this.graphSets.size(); --i >= 0; ) if (this.graphSets.get(i).hasFileLoaded(filePath)) return true; + +return false; +}, "~S"); +Clazz_defineMethod(c$, "clearAllView", +function(){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).resetViewCompletely(); + +}); +Clazz_defineMethod(c$, "drawGraph", +function(gMain, gFront, gRear, width, height, addFilePath){ +var withCoords; +this.gMain = gMain; +this.display1D = !this.isLinked && this.getBoolean(JSV.common.ScriptToken.DISPLAY1D); +var top = 40; +var bottom = 50; +var isResized = (this.isPrinting || this.doReset || this.thisWidth != width || this.thisHeight != height); +if (isResized) this.setTaintedAll(); +if (this.taintedAll) this.g2d.fillBackground(gRear, this.bgcolor); +if (gFront !== gMain) { +this.g2d.fillBackground(gFront, null); +if (gMain !== gRear) this.g2d.fillBackground(gMain, null); +this.g2d.setStrokeBold(gMain, false); +}if (this.isPrinting) { +top *= 3; +bottom *= 3; +this.scalingFactor = 10; +withCoords = false; +} else { +this.scalingFactor = 1; +withCoords = this.getBoolean(JSV.common.ScriptToken.COORDINATESON); +this.titleOn = this.getBoolean(JSV.common.ScriptToken.TITLEON); +this.gridOn = this.getBoolean(JSV.common.ScriptToken.GRIDON); +this.peakTabsOn = this.getBoolean(JSV.common.ScriptToken.PEAKTABSON); +}var pointsOnly = this.getBoolean(JSV.common.ScriptToken.POINTSONLY); +this.doReset = false; +this.titleDrawn = false; +this.thisWidth = width; +this.thisHeight = height; +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).drawGraphSet(gMain, gFront, gRear, width, height, this.left, this.right, top, bottom, isResized, this.taintedAll, pointsOnly); + +if (this.titleOn && !this.titleDrawn && this.taintedAll) this.drawTitle(gMain, height * this.scalingFactor, width * this.scalingFactor, this.getDrawTitle(this.isPrinting)); +if (withCoords && this.coordStr != null) this.drawCoordinates(gFront, top, this.thisWidth - this.right, top - 20); +if (addFilePath && this.taintedAll) { +this.printFilePath(gMain, this.left, height, this.commonFilePath != null ? this.commonFilePath : this.graphSets.size() == 1 && this.currentGraphSet.getTitle(true) != null ? this.getSpectrum().getFilePath() : null); +}if (this.isPrinting) { +this.printVersion(gMain, height); +}if (!this.testingJavaScript && (this.isPrinting || gMain === gFront)) this.setTaintedAll(); + else this.taintedAll = false; +}, "~O,~O,~O,~N,~N,~B"); +Clazz_defineMethod(c$, "drawCoordinates", +function(g, top, x, y){ +this.g2d.setGraphicsColor(g, this.coordinatesColor); +var font = this.setFont(g, this.jsvp.getWidth(), 1, 14, true); +this.g2d.drawString(g, this.coordStr, x - font.stringWidth(this.coordStr), y); +}, "~O,~N,~N,~N"); +Clazz_defineMethod(c$, "setFont", +function(g, width, style, size, isLabel){ +return this.g2d.setFont(g, this.getFont(g, width, style, size, isLabel)); +}, "~O,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "printFilePath", +function(g, x, y, s){ +if (s == null) return; +x *= this.scalingFactor; +y *= this.scalingFactor; +if (s.indexOf("?") > 0) s = s.substring(s.indexOf("?") + 1); +s = s.substring(s.lastIndexOf("/") + 1); +s = s.substring(s.lastIndexOf("\\") + 1); +this.g2d.setGraphicsColor(g, this.BLACK); +var font = this.setFont(g, 1000, 0, 9, true); +if (x != this.left * this.scalingFactor) x -= font.stringWidth(s); +this.g2d.drawString(g, s, x, y - font.getHeight()); +}, "~O,~N,~N,~S"); +Clazz_defineMethod(c$, "printVersion", +function(g, pageHeight){ +this.g2d.setGraphicsColor(g, this.BLACK); +var font = this.setFont(g, 100, 0, 12, true); +var s = this.jsvp.getApiPlatform().getDateFormat(null) + " JSpecView " + JSV.common.JSVersion.VERSION_SHORT; +var w = font.stringWidth(s); +this.g2d.drawString(g, s, (this.thisWidth - this.right) * this.scalingFactor - w, pageHeight * this.scalingFactor - font.getHeight() * 3); +}, "~O,~N"); +Clazz_defineMethod(c$, "drawTitle", +function(g, pageHeight, pageWidth, title){ +title = title.$replace('\n', ' '); +var font = this.getFont(g, pageWidth, this.isPrinting || this.getBoolean(JSV.common.ScriptToken.TITLEBOLDON) ? 1 : 0, 14, true); +var nPixels = font.stringWidth(title); +if (nPixels > pageWidth) { +var size = Clazz_doubleToInt(14.0 * pageWidth / nPixels); +if (size < 10) size = 10; +font = this.getFont(g, pageWidth, this.isPrinting || this.getBoolean(JSV.common.ScriptToken.TITLEBOLDON) ? 1 : 0, size, true); +}this.g2d.setGraphicsColor(g, this.titleColor); +this.setCurrentFont(this.g2d.setFont(g, font)); +this.g2d.drawString(g, title, (this.isPrinting ? this.left * this.scalingFactor : 5), pageHeight - Clazz_doubleToInt(font.getHeight() * (this.isPrinting ? 2 : 0.5))); +}, "~O,~N,~N,~S"); +Clazz_defineMethod(c$, "setCurrentFont", +function(font){ +this.currentFont = font; +}, "JU.Font"); +Clazz_defineMethod(c$, "getFontHeight", +function(){ +return this.currentFont.getAscent(); +}); +Clazz_defineMethod(c$, "getStringWidth", +function(s){ +return this.currentFont.stringWidth(s); +}, "~S"); +Clazz_defineMethod(c$, "selectFromEntireSet", +function(iSpec){ +for (var i = 0, pt = 0; i < this.graphSets.size(); i++) { +if (iSpec == -2147483648) { +this.graphSets.get(i).setSelected(-1); +continue; +}var specs = this.graphSets.get(i).spectra; +for (var j = 0; j < specs.size(); j++, pt++) if (iSpec < 0 || iSpec == pt) this.graphSets.get(i).setSelected(j); + +} +}, "~N"); +Clazz_defineMethod(c$, "addToList", +function(iSpec, list){ +for (var i = 0; i < this.spectra.size(); i++) if (iSpec < 0 || i == iSpec) list.addLast(this.spectra.get(i)); + +}, "~N,JU.Lst"); +Clazz_defineMethod(c$, "scaleSelectedBy", +function(f){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).scaleSelectedBy(f); + +}, "~N"); +Clazz_defineMethod(c$, "setCurrentGraphSet", +function(gs, yPixel){ +var splitPoint = (gs.nSplit > 1 ? gs.getSplitPoint(yPixel) : gs.getCurrentSpectrumIndex()); +var isNewSet = (this.currentGraphSet !== gs); +var isNewSplitPoint = (isNewSet || this.currentSplitPoint != splitPoint); +this.currentGraphSet = gs; +this.currentSplitPoint = splitPoint; +if (isNewSet || gs.nSplit > 1 && isNewSplitPoint) this.setSpectrum(splitPoint, true); +if (!isNewSet) { +isNewSet = gs.checkSpectrumClickedEvent(this.mouseX, this.mouseY, this.clickCount); +if (!isNewSet) return false; +this.currentSplitPoint = splitPoint = gs.getCurrentSpectrumIndex(); +this.setSpectrum(splitPoint, true); +}this.jumpToSpectrumIndex(splitPoint, isNewSet || gs.nSplit > 1 && isNewSplitPoint); +return isNewSet; +}, "JSV.common.GraphSet,~N"); +Clazz_defineMethod(c$, "jumpToSpectrum", +function(spec){ +var index = this.currentGraphSet.getSpectrumIndex(spec); +this.jumpToSpectrumIndex(index, true); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "jumpToSpectrumIndex", +function(index, doSetSpec){ +if (index < 0 || index >= this.currentGraphSet.nSpectra) return; +this.currentSplitPoint = index; +if (doSetSpec) this.setSpectrum(this.currentSplitPoint, this.currentGraphSet.nSplit > 1); +var spec = this.getSpectrum(); +this.notifySubSpectrumChange(spec.getSubIndex(), spec); +}, "~N,~B"); +Clazz_defineMethod(c$, "splitStack", +function(doSplit){ +this.currentGraphSet.splitStack(doSplit); +}, "~B"); +Clazz_defineMethod(c$, "getNumberOfSpectraInCurrentSet", +function(){ +return this.currentGraphSet.nSpectra; +}); +Clazz_defineMethod(c$, "getSourceID", +function(){ +var id = this.getSpectrum().sourceID; +return (id == null ? this.getSpectrumAt(0).sourceID : id); +}); +Clazz_defineMethod(c$, "getStartingPointIndex", +function(index){ +return this.currentGraphSet.viewData.getStartingPointIndex(index); +}, "~N"); +Clazz_defineMethod(c$, "getEndingPointIndex", +function(index){ +return this.currentGraphSet.viewData.getEndingPointIndex(index); +}, "~N"); +Clazz_defineMethod(c$, "haveSelectedSpectrum", +function(){ +return this.currentGraphSet.haveSelectedSpectrum(); +}); +Clazz_defineMethod(c$, "getShowAnnotation", +function(type){ +return this.currentGraphSet.getShowAnnotation(type, -1); +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "showAnnotation", +function(type, tfToggle){ +this.currentGraphSet.setShowAnnotation(type, tfToggle); +}, "JSV.common.Annotation.AType,Boolean"); +Clazz_defineMethod(c$, "setYStackOffsetPercent", +function(offset){ +this.currentGraphSet.yStackOffsetPercent = offset; +}, "~N"); +Clazz_defineMethod(c$, "setSpectrum", +function(iSpec, isSplit){ +this.currentGraphSet.setSpectrum(iSpec, isSplit); +}, "~N,~B"); +Clazz_defineMethod(c$, "getSpectrum", +function(){ +return this.currentGraphSet.getSpectrum(); +}); +Clazz_defineMethod(c$, "setSpecForIRMode", +function(spec){ +this.setTaintedAll(); +var spec0 = this.currentGraphSet.getSpectrum(); +this.currentGraphSet.setSpectrumJDX(spec); +for (var i = 0; i < this.spectra.size(); i++) if (this.spectra.get(i) === spec0) this.spectra.set(i, spec); + +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "isShowAllStacked", +function(){ +return this.currentGraphSet.showAllStacked; +}); +Clazz_defineMethod(c$, "getCurrentSpectrumIndex", +function(){ +return this.currentGraphSet.getCurrentSpectrumIndex(); +}); +Clazz_defineMethod(c$, "getSpectrumAt", +function(index){ +if (this.currentGraphSet == null) return null; +return this.currentGraphSet.getSpectrumAt(index); +}, "~N"); +Clazz_defineMethod(c$, "addHighlight", +function(gs, x1, x2, spec, r, g, b, a){ +(gs == null ? this.currentGraphSet : gs).addHighlight(x1, x2, spec, this.g2d.getColor4(r, g, b, a)); +}, "JSV.common.GraphSet,~N,~N,JSV.common.Spectrum,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "removeHighlight", +function(x1, x2){ +this.currentGraphSet.removeHighlight(x1, x2); +}, "~N,~N"); +Clazz_defineMethod(c$, "removeAllHighlights", +function(){ +this.currentGraphSet.removeAllHighlights(); +}); +Clazz_defineMethod(c$, "setZoom", +function(x1, y1, x2, y2){ +this.currentGraphSet.setZoom(x1, y1, x2, y2); +this.doReset = true; +this.setTaintedAll(); +this.notifyListeners( new JSV.common.ZoomEvent()); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "resetView", +function(){ +this.currentGraphSet.resetView(); +}); +Clazz_defineMethod(c$, "previousView", +function(){ +this.currentGraphSet.previousView(); +}); +Clazz_defineMethod(c$, "nextView", +function(){ +this.currentGraphSet.nextView(); +}); +Clazz_defineMethod(c$, "getSelectedIntegral", +function(){ +return this.currentGraphSet.getSelectedIntegral(); +}); +Clazz_defineMethod(c$, "advanceSubSpectrum", +function(dir){ +this.currentGraphSet.advanceSubSpectrum(dir); +}, "~N"); +Clazz_defineMethod(c$, "setSelectedIntegral", +function(val){ +this.currentGraphSet.setSelectedIntegral(val); +}, "~N"); +Clazz_defineMethod(c$, "scaleYBy", +function(f){ +this.currentGraphSet.scaleYBy(f); +}, "~N"); +Clazz_defineMethod(c$, "toPeak", +function(i){ +this.currentGraphSet.toPeak(i); +}, "~N"); +Clazz_defineMethod(c$, "getClickedCoordinate", +function(){ +return this.coordClicked; +}); +Clazz_defineMethod(c$, "getPickedCoordinates", +function(coord, actualCoord){ +return JSV.common.Coordinate.getPickedCoordinates(this.coordsClicked, this.coordClicked, coord, actualCoord); +}, "JSV.common.Coordinate,JSV.common.Coordinate"); +Clazz_defineMethod(c$, "shiftSpectrum", +function(mode, xOld, xNew){ +return this.currentGraphSet.shiftSpectrum(mode, xOld, xNew); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "findX", +function(spec, d){ +this.currentGraphSet.setXPointer(spec, d); +}, "JSV.common.Spectrum,~N"); +Clazz_defineMethod(c$, "setXPointers", +function(spec, x1, spec2, x2){ +this.currentGraphSet.setXPointer(spec, x1); +this.currentGraphSet.setXPointer2(spec2, x2); +}, "JSV.common.Spectrum,~N,JSV.common.Spectrum,~N"); +Clazz_defineMethod(c$, "isCurrentGraphSet", +function(graphSet){ +return graphSet === this.currentGraphSet; +}, "JSV.common.GraphSet"); +Clazz_defineMethod(c$, "repaint", +function(){ +this.jsvp.doRepaint(false); +}); +Clazz_defineMethod(c$, "setToolTipText", +function(s){ +this.jsvp.setToolTipText(s); +}, "~S"); +Clazz_defineMethod(c$, "setHighlightColor", +function(color){ +this.setColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR, color); +}, "javajs.api.GenericColor"); +Clazz_defineMethod(c$, "getInput", +function(message, title, sval){ +return this.jsvp.getInput(message, title, sval); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "getFont", +function(g, width, style, size, isLabel){ +size *= this.scalingFactor; +if (isLabel) { +if (width < 400) size = ((width * size) / 400); +} else { +if (width < 250) size = ((width * size) / 250); +}var face = this.jsvp.getFontFaceID(this.isPrinting ? this.printingFontName : this.displayFontName); +return this.currentFont = JU.Font.createFont3D(face, style, size, size, this.jsvp.getApiPlatform(), g); +}, "~O,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "notifySubSpectrumChange", +function(isub, spec){ +this.notifyListeners( new JSV.common.SubSpecChangeEvent(isub, (spec == null ? null : spec.getTitleLabel()))); +}, "~N,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "notifyPeakPickedListeners", +function(p){ +if (p == null) { +p = new JSV.common.PeakPickEvent(this.jsvp, this.coordClicked, this.getSpectrum().getAssociatedPeakInfo(this.xPixelClicked, this.coordClicked)); +}this.notifyListeners(p); +}, "JSV.common.PeakPickEvent"); +Clazz_defineMethod(c$, "notifyListeners", +function(eventObj){ +for (var i = 0; i < this.listeners.size(); i++) if (this.listeners.get(i) != null) this.listeners.get(i).panelEvent(eventObj); + +}, "~O"); +Clazz_defineMethod(c$, "escapeKeyPressed", +function(isDEL){ +this.currentGraphSet.escapeKeyPressed(isDEL); +}, "~B"); +Clazz_defineMethod(c$, "hasFocus", +function(){ +return this.jsvp.hasFocus(); +}); +Clazz_defineMethod(c$, "isMouseUp", +function(){ +return (this.mouseState === JSV.common.PanelData.Mouse.UP); +}); +Clazz_defineMethod(c$, "doMouseMoved", +function(xPixel, yPixel){ +this.mouseX = xPixel; +this.mouseY = yPixel; +this.mouseState = JSV.common.PanelData.Mouse.UP; +this.clickCount = 0; +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +gs.mouseMovedEvent(xPixel, yPixel); +}, "~N,~N"); +Clazz_defineMethod(c$, "doMousePressed", +function(xPixel, yPixel){ +this.mouseState = JSV.common.PanelData.Mouse.DOWN; +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +this.setCurrentGraphSet(gs, yPixel); +this.clickCount = (++this.clickCount % 3); +this.currentGraphSet.mousePressedEvent(xPixel, yPixel, this.clickCount); +}, "~N,~N"); +Clazz_defineMethod(c$, "doMouseDragged", +function(xPixel, yPixel){ +this.isIntegralDrag = new Boolean (this.isIntegralDrag | this.ctrlPressed).valueOf(); +this.mouseState = JSV.common.PanelData.Mouse.DOWN; +if (JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel) !== this.currentGraphSet) return; +if (this.currentGraphSet.checkWidgetEvent(xPixel, yPixel, false)) this.setTaintedAll(); +this.currentGraphSet.mouseMovedEvent(xPixel, yPixel); +}, "~N,~N"); +Clazz_defineMethod(c$, "doMouseReleased", +function(xPixel, yPixel, isButton1){ +this.mouseState = JSV.common.PanelData.Mouse.UP; +if (this.thisWidget == null && this.currentGraphSet.pendingMeasurement == null || !isButton1) return; +this.currentGraphSet.mouseReleasedEvent(xPixel, yPixel); +this.thisWidget = null; +this.isIntegralDrag = false; +this.integralShiftMode = 0; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "doMouseClicked", +function(xPixel, yPixel, isControlDown){ +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +this.setCurrentGraphSet(gs, yPixel); +gs.mouseClickedEvent(xPixel, yPixel, this.clickCount, isControlDown); +this.setTaintedAll(); +this.repaint(); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "hasCurrentMeasurements", +function(type){ +return this.currentGraphSet.hasCurrentMeasurement(type); +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "getDialog", +function(type){ +return this.currentGraphSet.getDialog(type, -1); +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "addDialog", +function(iSpec, type, dialog){ +this.currentGraphSet.addDialog(iSpec, type, dialog); +}, "~N,JSV.common.Annotation.AType,JSV.api.AnnotationData"); +Clazz_defineMethod(c$, "getPeakListing", +function(p, tfToggle){ +if (p != null) this.currentGraphSet.getPeakListing(-1, p, true); +this.currentGraphSet.setPeakListing(tfToggle); +}, "JSV.common.Parameters,Boolean"); +Clazz_defineMethod(c$, "checkIntegral", +function(parameters, value){ +this.currentGraphSet.checkIntegralParams(parameters, value); +}, "JSV.common.Parameters,~S"); +Clazz_defineMethod(c$, "setIntegrationRatios", +function(value){ +this.currentGraphSet.setIntegrationRatios(value); +}, "~S"); +Clazz_defineMethod(c$, "getView", +function(){ +return this.currentGraphSet.getCurrentView(); +}); +Clazz_defineMethod(c$, "closeAllDialogsExcept", +function(type){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).closeDialogsExcept(type); + +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "removeDialog", +function(dialog){ +this.currentGraphSet.removeDialog(dialog); +}, "JSV.dialog.JSVDialog"); +Clazz_defineMethod(c$, "normalizeIntegral", +function(){ +var integral = this.getSelectedIntegral(); +if (integral == null) return; +var sValue = integral.text; +if (sValue.length == 0) sValue = "" + integral.getValue(); +var newValue = this.getInput("Enter a new value for this integral", "Normalize Integral", sValue); +try { +this.setSelectedIntegral(Double.parseDouble(newValue)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "getDrawTitle", +function(isPrinting){ +var title = null; +if (isPrinting) title = this.printJobTitle; + else if (this.nSpectra == 1) { +title = this.getSpectrum().getPeakTitle(); +} else if (this.viewTitle != null) { +if (this.currentGraphSet.getTitle(false) != null) title = this.getSpectrum().getPeakTitle(); +if (title == null) title = this.viewTitle; +} else { +title = this.jsvp.getTitle().trim(); +}if (title.indexOf("\n") >= 0) title = title.substring(0, title.indexOf("\n")).trim(); +return title; +}, "~B"); +Clazz_defineMethod(c$, "getPrintJobTitle", +function(isPrinting){ +var title = null; +if (this.nSpectra == 1) { +title = this.getSpectrum().getTitle(); +} else if (this.viewTitle != null) { +if (this.graphSets.size() == 1) title = this.currentGraphSet.getTitle(isPrinting); +if (title == null) title = this.viewTitle; +} else { +title = this.jsvp.getTitle().trim(); +}if (title.indexOf("\n") >= 0) title = title.substring(0, title.indexOf("\n")).trim(); + else if (title.startsWith("$")) title = title.substring(1); +return title; +}, "~B"); +Clazz_defineMethod(c$, "linkSpectra", +function(mode){ +if (mode === JSV.common.PanelData.LinkMode.ALL) mode = (this.nSpectra == 2 ? JSV.common.PanelData.LinkMode.AB : this.nSpectra == 3 ? JSV.common.PanelData.LinkMode.ABC : JSV.common.PanelData.LinkMode.NONE); +if (mode !== JSV.common.PanelData.LinkMode.NONE && mode.toString().length != this.nSpectra) return; +this.setGraphSets(mode); +}, "JSV.common.PanelData.LinkMode"); +Clazz_defineMethod(c$, "doZoomLinked", +function(graphSet, initX, finalX, addZoom, checkRange, is1d){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrumAt(0); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrumAt(0), false, true)) gs.doZoom(initX, 0, finalX, 0, is1d, false, checkRange, false, addZoom); +} +this.linking = false; +}, "JSV.common.GraphSet,~N,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "clearLinkViews", +function(graphSet){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrum(); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrum(), false, true)) gs.clearViews(); +} +this.linking = false; +}, "JSV.common.GraphSet"); +Clazz_defineMethod(c$, "setlinkedXMove", +function(graphSet, x, isX2){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrum(); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrum(), false, true)) { +if (gs.imageView == null) if (isX2) { +gs.setXPixelMovedTo(1.7976931348623157E308, x, 0, 0); +} else { +gs.setXPixelMovedTo(x, 1.7976931348623157E308, 0, 0); +}}} +this.linking = false; +}, "JSV.common.GraphSet,~N,~B"); +Clazz_defineMethod(c$, "set2DCrossHairsLinked", +function(graphSet, x, y, isLocked){ +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet) gs.set2DXY(x, y, isLocked); +} +}, "JSV.common.GraphSet,~N,~N,~B"); +Clazz_defineMethod(c$, "dialogsToFront", +function(spec){ +this.currentGraphSet.dialogsToFront(spec); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setColor", +function(st, color){ +if (color != null) this.options.put(st, JU.CU.toRGBHexString(color)); +switch (st) { +case JSV.common.ScriptToken.COORDINATESCOLOR: +this.coordinatesColor = color; +return; +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +this.highlightColor = color; +if (this.highlightColor.getOpacity255() == 255) this.highlightColor.setOpacity255(150); +return; +case JSV.common.ScriptToken.ZOOMBOXCOLOR: +this.zoomBoxColor = color; +return; +case JSV.common.ScriptToken.ZOOMBOXCOLOR2: +this.zoomBoxColor2 = color; +return; +case JSV.common.ScriptToken.BACKGROUNDCOLOR: +this.jsvp.setBackgroundColor(this.bgcolor = color); +break; +case JSV.common.ScriptToken.GRIDCOLOR: +this.gridColor = color; +break; +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +this.integralPlotColor = color; +break; +case JSV.common.ScriptToken.PEAKTABCOLOR: +this.peakTabColor = color; +break; +case JSV.common.ScriptToken.PLOTCOLOR: +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setPlotColor0(color); + +break; +case JSV.common.ScriptToken.PLOTAREACOLOR: +this.plotAreaColor = color; +break; +case JSV.common.ScriptToken.SCALECOLOR: +this.scaleColor = color; +break; +case JSV.common.ScriptToken.TITLECOLOR: +this.titleColor = color; +break; +case JSV.common.ScriptToken.UNITSCOLOR: +this.unitsColor = color; +break; +default: +JU.Logger.warn("AwtPanel --- unrecognized color: " + st); +return; +} +this.taintedAll = true; +}, "JSV.common.ScriptToken,javajs.api.GenericColor"); +Clazz_defineMethod(c$, "getColor", +function(whatColor){ +switch (whatColor) { +default: +JU.Logger.error("awtgraphset missing color " + whatColor); +return this.BLACK; +case JSV.common.ScriptToken.ZOOMBOXCOLOR2: +return this.zoomBoxColor2; +case JSV.common.ScriptToken.ZOOMBOXCOLOR: +return this.zoomBoxColor; +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +return this.highlightColor; +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +return this.integralPlotColor; +case JSV.common.ScriptToken.GRIDCOLOR: +return this.gridColor; +case JSV.common.ScriptToken.PEAKTABCOLOR: +return this.peakTabColor; +case JSV.common.ScriptToken.PLOTAREACOLOR: +return this.plotAreaColor; +case JSV.common.ScriptToken.SCALECOLOR: +return this.scaleColor; +case JSV.common.ScriptToken.TITLECOLOR: +return this.titleColor; +case JSV.common.ScriptToken.UNITSCOLOR: +return this.unitsColor; +} +}, "JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "getOverlayLegendData", +function(){ +var numSpectra = this.currentGraphSet.nSpectra; +var data = new Array(numSpectra); +var f1 = this.getSpectrumAt(0).getFilePath(); +var f2 = this.getSpectrumAt(numSpectra - 1).getFilePath(); +var useFileName = f1 != null && f2 != null && !f1.equals(f2); +for (var index = 0; index < numSpectra; index++) { +var cols = new Array(3); +var spectrum = this.getSpectrumAt(index); +this.title = spectrum.getTitle(); +if (useFileName) this.title = JSV.common.JSVFileManager.getTagName(spectrum.getFilePath()) + " - " + this.title; +var plotColor = this.getCurrentPlotColor(index); +cols[0] = new Integer(index + 1); +cols[1] = plotColor; +cols[2] = " " + this.title; +data[index] = cols; +} +return data; +}); +Clazz_defineMethod(c$, "setColorOrFont", +function(params, st){ +if (st == null) { +var colors = params.elementColors; +for (var entry, $entry = colors.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setColorOrFont(params, entry.getKey()); + +this.setColorOrFont(params, JSV.common.ScriptToken.DISPLAYFONTNAME); +this.setColorOrFont(params, JSV.common.ScriptToken.TITLEFONTNAME); +return; +}switch (st) { +case JSV.common.ScriptToken.DISPLAYFONTNAME: +this.setFontName(st, params.displayFontName); +return; +case JSV.common.ScriptToken.TITLEFONTNAME: +this.setFontName(st, params.titleFontName); +return; +} +this.setColor(st, params.getElementColor(st)); +}, "JSV.common.ColorParameters,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "getCurrentPlotColor", +function(i){ +return this.currentGraphSet.getPlotColor(i); +}, "~N"); +Clazz_defineMethod(c$, "setPrint", +function(pl, fontName){ +if (pl == null) { +this.options.putAll(this.optionsSaved); +this.optionsSaved = null; +return; +}this.printJobTitle = pl.title; +this.printingFontName = fontName; +this.printGraphPosition = pl.position; +this.optionsSaved = new java.util.Hashtable(); +this.optionsSaved.putAll(this.options); +this.gridOn = pl.showGrid; +this.titleOn = pl.showTitle; +this.setBoolean(JSV.common.ScriptToken.XSCALEON, pl.showXScale); +this.setBoolean(JSV.common.ScriptToken.XUNITSON, pl.showXScale); +this.setBoolean(JSV.common.ScriptToken.YSCALEON, pl.showYScale); +this.setBoolean(JSV.common.ScriptToken.YUNITSON, pl.showYScale); +}, "JSV.common.PrintLayout,~S"); +Clazz_defineMethod(c$, "setDefaultPrintOptions", +function(pl){ +pl.showGrid = this.gridOn; +pl.showXScale = this.getBoolean(JSV.common.ScriptToken.XSCALEON); +pl.showYScale = this.getBoolean(JSV.common.ScriptToken.YSCALEON); +pl.showTitle = this.titleOn; +}, "JSV.common.PrintLayout"); +Clazz_defineMethod(c$, "showDialog", +function(type){ +var ad = this.getDialog(type); +this.closeAllDialogsExcept(type); +if (ad != null && Clazz_instanceOf(ad,"JSV.dialog.JSVDialog")) return (ad).reEnable(); +var iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) { +this.jsvp.showMessage("To enable " + type + " first select a spectrum by clicking on it.", "" + type); +return null; +}var spec = this.getSpectrum(); +var dialog = this.vwr.getDialog(type, spec); +if (ad == null && type === JSV.common.Annotation.AType.Measurements) ad = new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements, spec); +if (ad != null) dialog.setData(ad); +this.addDialog(iSpec, type, dialog); +dialog.reEnable(); +return dialog; +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "printPdf", +function(pdfCreator, pl){ +var isPortrait = !pl.layout.equals("landscape"); +this.print(pdfCreator, (isPortrait ? pl.imageableHeight : pl.imageableWidth), (isPortrait ? pl.imageableWidth : pl.imageableHeight), pl.imageableX, pl.imageableY, pl.paperHeight, pl.paperWidth, isPortrait, 0); +}, "J.api.GenericGraphics,JSV.common.PrintLayout"); +Clazz_defineMethod(c$, "print", +function(g, height, width, x, y, paperHeight, paperWidth, isPortrait, pi){ +this.g2d = this.g2d0; +if (pi == 0) { +this.isPrinting = true; +var addFilePath = false; +if (Clazz_instanceOf(g,"J.api.GenericGraphics")) { +this.g2d = g; +g = this.gMain; +}if (this.printGraphPosition.equals("default")) { +if (isPortrait) { +height = 450; +width = 280; +} else { +height = 280; +width = 450; +}} else if (this.printGraphPosition.equals("fit to page")) { +addFilePath = true; +} else { +if (isPortrait) { +height = 450; +width = 280; +x = Clazz_doubleToInt(Clazz_doubleToInt(paperWidth - width) / 2); +y = Clazz_doubleToInt(Clazz_doubleToInt(paperHeight - height) / 2); +} else { +height = 280; +width = 450; +y = Clazz_doubleToInt(Clazz_doubleToInt(paperWidth - 280) / 2); +x = Clazz_doubleToInt(Clazz_doubleToInt(paperHeight - 450) / 2); +}}this.g2d.translateScale(g, x, y, 0.1); +this.setTaintedAll(); +this.drawGraph(g, g, g, Clazz_doubleToInt(width), Clazz_doubleToInt(height), addFilePath); +this.isPrinting = false; +return 0; +}this.isPrinting = false; +return 1; +}, "~O,~N,~N,~N,~N,~N,~N,~B,~N"); +Clazz_overrideMethod(c$, "keyPressed", +function(code, modifiers){ +if (this.isPrinting) return false; +this.checkKeyControl(code, true); +switch (code) { +case 27: +case 127: +case 8: +this.escapeKeyPressed(code != 27); +this.isIntegralDrag = false; +this.setTaintedAll(); +this.repaint(); +return true; +} +var scaleFactor = 0; +var doConsume = false; +if (modifiers == 0) { +switch (code) { +case 37: +case 39: +this.doMouseMoved((code == 39 ? ++this.mouseX : --this.mouseX), this.mouseY); +this.repaint(); +doConsume = true; +break; +case 33: +case 34: +scaleFactor = (code == 33 ? JSV.common.GraphSet.RT2 : 1 / JSV.common.GraphSet.RT2); +doConsume = true; +break; +case 40: +case 38: +var dir = (code == 40 ? -1 : 1); +if (this.getSpectrumAt(0).getSubSpectra() == null) { +this.notifySubSpectrumChange(dir, null); +} else { +this.advanceSubSpectrum(dir); +this.setTaintedAll(); +this.repaint(); +}doConsume = true; +break; +} +} else if (this.checkMod(code, 2)) { +switch (code) { +case 40: +case 38: +case 45: +case 61: +scaleFactor = (code == 61 || code == 38 ? JSV.common.GraphSet.RT2 : 1 / JSV.common.GraphSet.RT2); +doConsume = true; +break; +case 37: +case 39: +this.toPeak(code == 39 ? 1 : -1); +doConsume = true; +break; +} +}if (scaleFactor != 0) { +this.scaleYBy(scaleFactor); +this.setTaintedAll(); +this.repaint(); +}return doConsume; +}, "~N,~N"); +Clazz_overrideMethod(c$, "keyReleased", +function(keyCode){ +if (this.isPrinting) return; +this.checkKeyControl(keyCode, false); +}, "~N"); +Clazz_overrideMethod(c$, "keyTyped", +function(ch, mods){ +if (this.isPrinting) return false; +switch (ch) { +case 110: +if (mods != 0) break; +this.normalizeIntegral(); +return true; +case 26: +if (mods != 2) break; +this.previousView(); +this.setTaintedAll(); +this.repaint(); +return true; +case 25: +if (mods != 2) break; +this.nextView(); +this.setTaintedAll(); +this.repaint(); +return true; +} +return false; +}, "~N,~N"); +Clazz_overrideMethod(c$, "mouseAction", +function(mode, time, x, y, countIgnored, buttonMods){ +if (this.isPrinting) return; +switch (mode) { +case 4: +if (!this.checkMod(buttonMods, 16)) return; +this.doMousePressed(x, y); +break; +case 5: +this.doMouseReleased(x, y, this.checkMod(buttonMods, 16)); +this.setTaintedAll(); +this.repaint(); +break; +case 1: +this.doMouseDragged(x, y); +this.repaint(); +break; +case 0: +this.jsvp.getFocusNow(false); +if ((buttonMods & 28) != 0) { +this.doMouseDragged(x, y); +this.repaint(); +return; +}this.doMouseMoved(x, y); +if (this.coordStr != null) this.repaint(); +break; +case 2: +if (this.checkMod(buttonMods, 4)) { +this.jsvp.showMenu(x, y); +return; +}this.ctrlPressed = false; +this.doMouseClicked(x, y, this.updateControlPressed(buttonMods)); +break; +} +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "checkMod", +function(buttonMods, mask){ +return ((buttonMods & mask) == mask); +}, "~N,~N"); +Clazz_defineMethod(c$, "checkKeyControl", +function(keyCode, isPressed){ +switch (keyCode) { +case 17: +case 157: +this.ctrlPressed = isPressed; +break; +case 16: +this.shiftPressed = isPressed; +break; +} +}, "~N,~B"); +Clazz_defineMethod(c$, "updateControlPressed", +function(mods){ +return (this.ctrlPressed = new Boolean (this.ctrlPressed |(this.checkMod(mods, 2) || this.checkMod(mods, 20))).valueOf()); +}, "~N"); +Clazz_overrideMethod(c$, "mouseEnterExit", +function(time, x, y, isExit){ +if (isExit) { +this.thisWidget = null; +this.isIntegralDrag = false; +this.integralShiftMode = 0; +} else { +try { +this.jsvp.getFocusNow(false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("pd " + this + " cannot focus"); +} else { +throw e; +} +} +}}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setSolutionColor", +function(what){ +var isNone = (what.indexOf("none") >= 0); +var asFitted = (what.indexOf("false") < 0); +if (what.indexOf("all") < 0) { +var color = (isNone ? -1 : this.vwr.getSolutionColor(asFitted)); +this.getSpectrum().setFillColor(color == -1 ? null : this.vwr.parameters.getColor1(color)); +} else { +var vi = JSV.common.JSViewer.getInterface("JSV.common.Visible"); +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setSolutionColor(vi, isNone, asFitted); + +}}, "~S"); +Clazz_defineMethod(c$, "setIRMode", +function(mode, type){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setIRMode(mode, type); + +}, "JSV.common.Spectrum.IRMode,~S"); +Clazz_defineMethod(c$, "closeSpectrum", +function(){ +this.vwr.close("views"); +this.vwr.close(this.getSourceID()); +this.vwr.execView("*", true); +}); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.PanelData, "LinkMode", Enum); +c$.getMode = Clazz_defineMethod(c$, "getMode", +function(abc){ +if (abc.equals("*")) return JSV.common.PanelData.LinkMode.ALL; +for (var mode, $mode = 0, $$mode = JSV.common.PanelData.LinkMode.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (mode.name().equalsIgnoreCase(abc)) return mode; + +return JSV.common.PanelData.LinkMode.NONE; +}, "~S"); +Clazz_defineEnumConstant(c$, "ALL", 0, []); +Clazz_defineEnumConstant(c$, "NONE", 1, []); +Clazz_defineEnumConstant(c$, "AB", 2, []); +Clazz_defineEnumConstant(c$, "ABC", 3, []); +/*eoif2*/})(); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.PanelData, "Mouse", Enum); +Clazz_defineEnumConstant(c$, "UP", 0, []); +Clazz_defineEnumConstant(c$, "DOWN", 1, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.PanelNode", ["JU.SB", "JSV.common.Parameters"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.treeNode = null; +this.source = null; +this.fileName = null; +this.jsvp = null; +this.id = null; +this.legend = null; +this.isSelected = false; +this.isView = false; +this.isSimulation = false; +this.frameTitle = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PanelNode", null); +Clazz_makeConstructor(c$, +function(id, fileName, source, jsvp){ +this.id = id; +this.source = source; +this.fileName = fileName; +this.isSimulation = (source.getFilePath().indexOf("http://SIMULATION/") >= 0); +this.jsvp = jsvp; +if (jsvp != null) { +this.pd().getSpectrumAt(0).setId(id); +this.frameTitle = jsvp.getTitle(); +}}, "~S,~S,JSV.source.JDXSource,JSV.api.JSVPanel"); +Clazz_defineMethod(c$, "setTreeNode", +function(node){ +this.treeNode = node; +}, "JSV.api.JSVTreeNode"); +Clazz_defineMethod(c$, "getTreeNode", +function(){ +return this.treeNode; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +this.source.dispose(); +if (this.jsvp != null) this.jsvp.dispose(); +this.source = null; +this.jsvp = null; +this.legend = null; +}); +Clazz_defineMethod(c$, "pd", +function(){ +return this.jsvp.getPanelData(); +}); +Clazz_defineMethod(c$, "getSpectrum", +function(){ +return this.pd().getSpectrum(); +}); +Clazz_defineMethod(c$, "setLegend", +function(legend){ +if (this.legend != null) this.legend.dispose(); +this.legend = legend; +return legend; +}, "JSV.dialog.JSVDialog"); +Clazz_overrideMethod(c$, "toString", +function(){ +return ((this.id == null ? "" : this.id + ": ") + (this.frameTitle == null ? this.fileName : this.frameTitle)); +}); +c$.findSourceByNameOrId = Clazz_defineMethod(c$, "findSourceByNameOrId", +function(id, panelNodes){ +for (var i = panelNodes.size(); --i >= 0; ) { +var node = panelNodes.get(i); +if (id.equals(node.id) || id.equals(node.source.getSpectra().get(0).sourceID) || node.source.matchesFilePath(id)) return node.source; +} +for (var i = panelNodes.size(); --i >= 0; ) { +var node = panelNodes.get(i); +if (id.equals(node.fileName)) return node.source; +} +return null; +}, "~S,JU.Lst"); +c$.findNodeById = Clazz_defineMethod(c$, "findNodeById", +function(id, panelNodes){ +if (id != null) for (var i = panelNodes.size(); --i >= 0; ) if (id.equals(panelNodes.get(i).id) || id.equals(panelNodes.get(i).frameTitle)) return panelNodes.get(i); + +return null; +}, "~S,JU.Lst"); +c$.findNode = Clazz_defineMethod(c$, "findNode", +function(jsvp, panelNodes){ +for (var i = panelNodes.size(); --i >= 0; ) if (panelNodes.get(i).jsvp === jsvp) return panelNodes.get(i); + +return null; +}, "JSV.api.JSVPanel,JU.Lst"); +c$.getSpectrumListAsString = Clazz_defineMethod(c$, "getSpectrumListAsString", +function(panelNodes){ +var sb = new JU.SB(); +for (var i = 0; i < panelNodes.size(); i++) { +var node = panelNodes.get(i); +if (!node.isView) sb.append(" ").append(node.id); +} +return sb.toString().trim(); +}, "JU.Lst"); +c$.isOpen = Clazz_defineMethod(c$, "isOpen", +function(panelNodes, filePath){ +var pt = -1; +if (filePath != null) for (var i = panelNodes.size(); --i >= 0; ) { +if (panelNodes.get(i).source.matchesFilePath(filePath) || filePath.equals(panelNodes.get(i).frameTitle)) return pt; +} +return -1; +}, "JU.Lst,~S"); +Clazz_defineMethod(c$, "setFrameTitle", +function(name){ +this.frameTitle = name; +}, "~S"); +c$.getLastFileFirstNode = Clazz_defineMethod(c$, "getLastFileFirstNode", +function(panelNodes){ +var n = panelNodes.size(); +var node = (n == 0 ? null : panelNodes.get(n - 1)); +for (var i = n - 1; --i >= 0; ) { +if (panelNodes.get(i).source !== node.source) break; +node = panelNodes.get(i); +} +return (node == null ? null : node.jsvp); +}, "JU.Lst"); +Clazz_defineMethod(c$, "getInfo", +function(key){ +var info = this.pd().getInfo(false, key); +JSV.common.Parameters.putInfo(key, info, "panelId", this.id); +JSV.common.Parameters.putInfo(key, info, "panelFileName", this.fileName); +JSV.common.Parameters.putInfo(key, info, "panelSource", this.source.getFilePath()); +return info; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.Parameters", ["java.util.Hashtable", "JSV.common.ScriptToken"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.integralMinY = 0.1; +this.integralRange = 50.0; +this.integralOffset = 30.0; +this.integralDrawAll = false; +this.viewOffset = 0; +this.peakListThreshold = NaN; +this.peakListInterpolation = "parabolic"; +this.precision = 2; +this.htBooleans = null; +Clazz_instantialize(this, arguments);}, JSV.common, "Parameters", null); +Clazz_makeConstructor(c$, +function(){ +this.htBooleans = new java.util.Hashtable(); +this.setBoolean(JSV.common.ScriptToken.TITLEON, true); +this.setBoolean(JSV.common.ScriptToken.ENABLEZOOM, true); +this.setBoolean(JSV.common.ScriptToken.DISPLAY2D, true); +this.setBoolean(JSV.common.ScriptToken.COORDINATESON, true); +this.setBoolean(JSV.common.ScriptToken.PEAKTABSON, true); +this.setBoolean(JSV.common.ScriptToken.POINTSONLY, false); +this.setBoolean(JSV.common.ScriptToken.GRIDON, true); +this.setBoolean(JSV.common.ScriptToken.XSCALEON, true); +this.setBoolean(JSV.common.ScriptToken.YSCALEON, true); +this.setBoolean(JSV.common.ScriptToken.XUNITSON, true); +this.setBoolean(JSV.common.ScriptToken.YUNITSON, true); +}); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = name; +return this; +}, "~S"); +Clazz_defineMethod(c$, "getBooleans", +function(){ +return this.htBooleans; +}); +Clazz_defineMethod(c$, "setBoolean", +function(st, val){ +this.htBooleans.put(st, Boolean.$valueOf(val)); +return val; +}, "JSV.common.ScriptToken,~B"); +Clazz_defineMethod(c$, "getBoolean", +function(t){ +return Boolean.TRUE === this.htBooleans.get(t); +}, "JSV.common.ScriptToken"); +c$.isTrue = Clazz_defineMethod(c$, "isTrue", +function(value){ +return (value.length == 0 || Boolean.parseBoolean(value)); +}, "~S"); +c$.getTFToggle = Clazz_defineMethod(c$, "getTFToggle", +function(value){ +return (value.equalsIgnoreCase("TOGGLE") ? null : JSV.common.Parameters.isTrue(value) ? Boolean.TRUE : Boolean.FALSE); +}, "~S"); +Clazz_defineMethod(c$, "setP", +function(pd, st, value){ +switch (st) { +default: +return; +case JSV.common.ScriptToken.COORDINATESON: +case JSV.common.ScriptToken.DISPLAY1D: +case JSV.common.ScriptToken.DISPLAY2D: +case JSV.common.ScriptToken.ENABLEZOOM: +case JSV.common.ScriptToken.GRIDON: +case JSV.common.ScriptToken.POINTSONLY: +case JSV.common.ScriptToken.PEAKTABSON: +case JSV.common.ScriptToken.REVERSEPLOT: +case JSV.common.ScriptToken.TITLEON: +case JSV.common.ScriptToken.TITLEBOLDON: +case JSV.common.ScriptToken.XSCALEON: +case JSV.common.ScriptToken.XUNITSON: +case JSV.common.ScriptToken.YSCALEON: +case JSV.common.ScriptToken.YUNITSON: +var tfToggle = JSV.common.Parameters.getTFToggle(value); +if (tfToggle != null) { +this.setBoolean(st, tfToggle.booleanValue()); +break; +}if (pd == null) return; +var b = !pd.getBoolean(st); +switch (st) { +default: +break; +case JSV.common.ScriptToken.XSCALEON: +this.setBoolean(JSV.common.ScriptToken.XUNITSON, b); +pd.setBoolean(JSV.common.ScriptToken.XUNITSON, b); +break; +case JSV.common.ScriptToken.YSCALEON: +this.setBoolean(JSV.common.ScriptToken.YUNITSON, b); +pd.setBoolean(JSV.common.ScriptToken.YUNITSON, b); +break; +} +this.setBoolean(st, b); +break; +} +if (pd == null) return; +pd.setBooleans(this, st); +}, "JSV.common.PanelData,JSV.common.ScriptToken,~S"); +c$.isMatch = Clazz_defineMethod(c$, "isMatch", +function(match, key){ +return match == null || key.equalsIgnoreCase(match); +}, "~S,~S"); +c$.putInfo = Clazz_defineMethod(c$, "putInfo", +function(match, info, key, value){ +if (value != null && JSV.common.Parameters.isMatch(match, key)) info.put(match == null ? key : match, value); +}, "~S,java.util.Map,~S,~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.MeasurementData"], "JSV.common.PeakData", ["JU.DF", "JSV.common.Coordinate", "$.PeakPick"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.thresh = 0; +this.minY = 0; +this.maxY = 0; +Clazz_instantialize(this, arguments);}, JSV.common, "PeakData", JSV.common.MeasurementData); +Clazz_defineMethod(c$, "getThresh", +function(){ +return this.thresh; +}); +Clazz_overrideMethod(c$, "getDataHeader", +function(){ +return (this.spec.isHNMR() ? JSV.common.PeakData.HNMR_HEADER : Clazz_newArray(-1, ["peak", this.spec.getXUnits(), this.spec.getYUnits()])); +}); +Clazz_overrideMethod(c$, "getMeasurementListArray", +function(units){ +var data = new Array(this.size()); +var last = Clazz_newDoubleArray(-1, [-1.0E100, 1e100, 1e100]); +var ddata; +for (var pt = 0, i = this.size(); --i >= 0; pt++) { +ddata = this.spec.getPeakListArray(this.get(i), last, this.maxY); +if (ddata.length == 2) data[pt] = Clazz_newArray(-1, ["" + (pt + 1), JU.DF.formatDecimalDbl(ddata[0], 2), JU.DF.formatDecimalDbl(ddata[1], 4)]); + else data[pt] = Clazz_newArray(-1, ["" + (pt + 1), JU.DF.formatDecimalDbl(ddata[0], 4), JU.DF.formatDecimalDbl(ddata[1], 4), JU.DF.formatDecimalDbl(ddata[2], 2), (ddata[3] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[3], 2)), (ddata[4] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[4], 2)), (ddata[5] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[5], 2))]); +} +return data; +}, "~S"); +Clazz_overrideMethod(c$, "getMeasurementListArrayReal", +function(units){ +var data = Clazz_newDoubleArray (this.size(), 0); +var last = Clazz_newDoubleArray(-1, [-1.0E100, 1e100, 1e100]); +for (var pt = 0, i = this.size(); --i >= 0; pt++) data[pt] = this.spec.getPeakListArray(this.get(i), last, this.maxY); + +return data; +}, "~S"); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("interpolation", this.myParams.peakListInterpolation); +info.put("threshold", Double.$valueOf(this.myParams.peakListThreshold)); +Clazz_superCall(this, JSV.common.PeakData, "getInfo", [info]); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setPeakList", +function(p, precision, view){ +this.precision = (precision == -2147483648 ? this.spec.getDefaultUnitPrecision() : precision); +var xyCoords = this.spec.getXYCoords(); +if (xyCoords.length < 3) return; +this.clear(); +if (p != null) { +this.myParams.peakListInterpolation = p.peakListInterpolation; +this.myParams.peakListThreshold = p.peakListThreshold; +}var doInterpolate = (this.myParams.peakListInterpolation.equals("parabolic")); +var isInverted = this.spec.isInverted(); +this.minY = view.minYOnScale; +this.maxY = view.maxYOnScale; +var minX = view.minXOnScale; +var maxX = view.maxXOnScale; +this.thresh = this.myParams.peakListThreshold; +if (Double.isNaN(this.thresh)) this.thresh = this.myParams.peakListThreshold = (this.minY + this.maxY) / 2; +var yLast = 0; +var y3 = Clazz_newDoubleArray(-1, [xyCoords[0].getYVal(), yLast = xyCoords[1].getYVal(), 0]); +var n = 0; +if (isInverted) for (var i = 2; i < xyCoords.length; i++) { +var y = y3[i % 3] = xyCoords[i].getYVal(); +if (yLast < this.thresh && y3[(i - 2) % 3] > yLast && yLast < y) { +var x = (doInterpolate ? JSV.common.Coordinate.parabolicInterpolation(xyCoords, i - 1) : xyCoords[i - 1].getXVal()); +if (x >= minX || x <= maxX) { +var m = new JSV.common.PeakPick().setValue(x, y, this.spec, null, 0); +this.addLast(m); +if (++n == 100) break; +}}yLast = y; +} + else for (var i = 2; i < xyCoords.length; i++) { +var y = y3[i % 3] = xyCoords[i].getYVal(); +if (yLast > this.thresh && y3[(i - 2) % 3] < yLast && yLast > y) { +var x = (doInterpolate ? JSV.common.Coordinate.parabolicInterpolation(xyCoords, i - 1) : xyCoords[i - 1].getXVal()); +if (x >= minX && x <= maxX) { +var m = new JSV.common.PeakPick().setValue(x, y, this.spec, JU.DF.formatDecimalDbl(x, precision), x); +this.addLast(m); +if (++n == 100) break; +}}yLast = y; +} +}, "JSV.common.Parameters,~N,JSV.common.ScaleData"); +c$.HNMR_HEADER = Clazz_newArray(-1, ["peak", "shift/ppm", "intens", "shift/hz", "diff/hz", "2-diff", "3-diff"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.PeakInfo", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xMin = 0; +this.xMax = 0; +this.yMin = 0; +this.yMax = 0; +this.px0 = 0; +this.px1 = 0; +this.stringInfo = null; +this.type = null; +this.type2 = null; +this.index = null; +this.file = null; +this.filePathForwardSlash = null; +this.title = null; +this.model = null; +this.atoms = null; +this.id = null; +this.spectrum = null; +this._match = null; +this.atomKey = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PeakInfo", null); +/*LV!1824 unnec constructor*/Clazz_makeConstructor(c$, +function(s){ +this.stringInfo = s; +this.type = JU.PT.getQuotedAttribute(s, "type"); +if (this.type == null) this.type = ""; +this.type = this.type.toUpperCase(); +var pt = this.type.indexOf('/'); +this.type2 = (pt < 0 ? "" : JSV.common.PeakInfo.fixType(this.type.substring(this.type.indexOf('/') + 1))); +if (pt >= 0) this.type = JSV.common.PeakInfo.fixType(this.type.substring(0, pt)) + "/" + this.type2; + else this.type = JSV.common.PeakInfo.fixType(this.type); +this.id = JU.PT.getQuotedAttribute(s, "id"); +this.index = JU.PT.getQuotedAttribute(s, "index"); +this.file = JU.PT.getQuotedAttribute(s, "file"); +System.out.println("pi file=" + this.file); +this.filePathForwardSlash = (this.file == null ? null : this.file.$replace('\\', '/')); +this.model = JU.PT.getQuotedAttribute(s, "model"); +var isBaseModel = s.contains("baseModel=\"\""); +if (!isBaseModel) this.atoms = JU.PT.getQuotedAttribute(s, "atoms"); +this.atomKey = "," + this.atoms + ","; +this.title = JU.PT.getQuotedAttribute(s, "title"); +this._match = JU.PT.getQuotedAttribute(s, "_match"); +this.xMax = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "xMax")); +this.xMin = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "xMin")); +this.yMax = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "yMax")); +this.yMin = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "yMin")); +}, "~S"); +Clazz_defineMethod(c$, "isClearAll", +function(){ +return (this.spectrum == null); +}); +Clazz_defineMethod(c$, "getType", +function(){ +return this.type; +}); +Clazz_defineMethod(c$, "getAtoms", +function(){ +return this.atoms; +}); +Clazz_defineMethod(c$, "getXMax", +function(){ +return this.xMax; +}); +Clazz_defineMethod(c$, "getXMin", +function(){ +return this.xMin; +}); +Clazz_defineMethod(c$, "getYMin", +function(){ +return this.yMin; +}); +Clazz_defineMethod(c$, "getYMax", +function(){ +return this.yMax; +}); +Clazz_defineMethod(c$, "getX", +function(){ +return (this.xMax + this.xMin) / 2; +}); +Clazz_defineMethod(c$, "getMatch", +function(){ +return this._match; +}); +c$.fixType = Clazz_defineMethod(c$, "fixType", +function(type){ +return (type.equals("HNMR") ? "1HNMR" : type.equals("CNMR") ? "13CNMR" : type); +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.stringInfo; +}); +Clazz_defineMethod(c$, "getIndex", +function(){ +return this.index; +}); +Clazz_defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz_defineMethod(c$, "checkFileIndex", +function(filePath, sIndex, sAtomKey){ +return (sAtomKey != null ? this.atomKey.indexOf(sAtomKey) >= 0 : sIndex.equals(this.index) && (filePath.equals(this.file) || filePath.equals(this.filePathForwardSlash))); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "checkFileTypeModel", +function(filePath, type, model){ +return filePath.equals(this.file) && this.checkModel(model) && this.type.endsWith(type); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "checkTypeModel", +function(type, model){ +return this.checkType(type) && this.checkModel(model); +}, "~S,~S"); +Clazz_defineMethod(c$, "checkModel", +function(model){ +return (model != null && model.equals(this.model)); +}, "~S"); +Clazz_defineMethod(c$, "checkType", +function(type){ +return (type.endsWith(this.type)); +}, "~S"); +Clazz_defineMethod(c$, "checkTypeMatch", +function(pi){ +return (this.checkType(pi.type) && (this.checkId(pi._match) || this.checkModel(pi._match) || this.title.toUpperCase().indexOf(pi._match) >= 0)); +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "checkId", +function(match){ +if (match == null) return false; +return (this.id != null && match.toUpperCase().startsWith("ID=") && match.substring(3).equals(this.id) || (match = match.toUpperCase()).startsWith("INDEX=") && match.equals("INDEX=" + this.index) || match.startsWith("#=") && match.equals("#=" + this.index)); +}, "~S"); +Clazz_defineMethod(c$, "getModel", +function(){ +return this.model; +}); +Clazz_defineMethod(c$, "getFilePath", +function(){ +return this.file; +}); +Clazz_defineMethod(c$, "autoSelectOnLoad", +function(){ +return (this.type.startsWith("GC")); +}); +Clazz_defineMethod(c$, "setPixelRange", +function(x0, x1){ +this.px0 = x0; +this.px1 = x1; +}, "~N,~N"); +Clazz_defineMethod(c$, "checkRange", +function(xPixel, xVal){ +if (xPixel != 2147483647 ? (this.px0 <= xPixel && this.px1 >= xPixel) : xVal >= this.xMin && xVal <= this.xMax) { +return Math.abs(xVal - this.getX()); +}return 1e100; +}, "~N,~N"); +Clazz_defineMethod(c$, "getXPixel", +function(){ +return Clazz_doubleToInt((this.px0 + this.px1) / 2); +}); +c$.nullPeakInfo = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Measurement"], "JSV.common.PeakPick", null, function(){ +var c$ = Clazz_declareType(JSV.common, "PeakPick", JSV.common.Measurement); +Clazz_defineMethod(c$, "setValue", +function(x, y, spec, text, value){ +if (text == null) { +this.set(x, y); +this.setPt2(spec, false); +} else { +this.setA(x, y, spec, text, false, false, 0, 6); +this.value = value; +this.setPt2(this.getXVal(), this.getYVal()); +}return this; +}, "~N,~N,JSV.common.Spectrum,~S,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.util.EventObject"], "JSV.common.PeakPickEvent", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.coord = null; +this.peakInfo = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PeakPickEvent", java.util.EventObject); +Clazz_makeConstructor(c$, +function(source, coord, peakInfo){ +Clazz_superConstructor(this, JSV.common.PeakPickEvent, [source]); +this.coord = coord; +this.peakInfo = (peakInfo == null ? null : peakInfo); +}, "~O,JSV.common.Coordinate,JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getCoord", +function(){ +return this.coord; +}); +Clazz_defineMethod(c$, "getPeakInfo", +function(){ +return this.peakInfo; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return (this.peakInfo == null ? null : this.peakInfo.toString()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Coordinate", "$.ScriptToken"], "JSV.common.PlotWidget", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.isPin = false; +this.isPinOrCursor = false; +this.isXtype = false; +this.is2D = false; +this.is2Donly = false; +this.isEnabled = true; +this.isVisible = false; +this.name = null; +this.color = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PlotWidget", JSV.common.Coordinate); +Clazz_prepareFields (c$, function(){ +this.color = JSV.common.ScriptToken.PLOTCOLOR; +}); +Clazz_makeConstructor(c$, +function(name){ +Clazz_superConstructor (this, JSV.common.PlotWidget, []); +this.name = name; +this.isPin = (name.charAt(0) == 'p'); +this.isPinOrCursor = (name.charAt(0) != 'z'); +this.isXtype = (name.indexOf("x") >= 0); +this.is2D = (name.indexOf("2D") >= 0); +this.is2Donly = (this.is2D && name.charAt(0) == 'p'); +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.name + (!this.isPinOrCursor ? "" + this.xPixel0 + " " + this.yPixel0 + " / " + this.xPixel1 + " " + this.yPixel1 : " x=" + this.getXVal() + "/" + this.xPixel0 + " y=" + this.getYVal() + "/" + this.yPixel0); +}); +Clazz_defineMethod(c$, "selected", +function(xPixel, yPixel){ +return (this.isVisible && Math.abs(xPixel - this.xPixel0) < 5 && Math.abs(yPixel - this.yPixel0) < 5); +}, "~N,~N"); +Clazz_defineMethod(c$, "setX", +function(x, xPixel){ +this.setXVal(x); +this.xPixel0 = this.xPixel1 = xPixel; +}, "~N,~N"); +Clazz_defineMethod(c$, "setY", +function(y, yPixel){ +this.setYVal(y); +this.yPixel0 = this.yPixel1 = yPixel; +}, "~N,~N"); +Clazz_defineMethod(c$, "getValue", +function(){ +return (this.isXtype ? this.getXVal() : this.getYVal()); +}); +Clazz_defineMethod(c$, "setEnabled", +function(enabled){ +this.isEnabled = enabled; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.imageableX = 0; +this.imageableY = 0; +this.paperHeight = 0; +this.paperWidth = 0; +this.imageableHeight = 0; +this.imageableWidth = 0; +this.layout = "landscape"; +this.position = "fit to page"; +this.showGrid = true; +this.showXScale = true; +this.showYScale = true; +this.showTitle = true; +this.font = "Helvetica"; +this.paper = null; +this.asPDF = true; +this.title = null; +this.date = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PrintLayout", null); +Clazz_prepareFields (c$, function(){ +this.paperHeight = Clazz_floatToInt(Math.min(11, 11.69) * 72); +this.paperWidth = Clazz_floatToInt(Math.min(8.5, 8.27) * 72); +this.imageableHeight = this.paperHeight; +this.imageableWidth = this.paperWidth; +}); +Clazz_makeConstructor(c$, +function(pd){ +if (pd != null) { +this.asPDF = true; +pd.setDefaultPrintOptions(this); +}}, "JSV.common.PanelData"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.RepaintManager", ["JSV.common.JSViewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.repaintPending = false; +this.vwr = null; +Clazz_instantialize(this, arguments);}, JSV.common, "RepaintManager", null); +Clazz_makeConstructor(c$, +function(viewer){ +this.vwr = viewer; +}, "JSV.common.JSViewer"); +Clazz_defineMethod(c$, "refresh", +function(){ +if (this.repaintPending) { +return false; +}this.repaintPending = true; +var applet = this.vwr.html5Applet; +var jmol = (JSV.common.JSViewer.isJS && !JSV.common.JSViewer.isSwingJS ? JSV.common.JSViewer.jmolObject : null); +if (jmol == null) { +this.vwr.selectedPanel.repaint(); +} else { +jmol.repaint(applet, false); +this.repaintDone(); +}return true; +}); +Clazz_defineMethod(c$, "repaintDone", +function(){ +this.repaintPending = false; +this.notify(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.ScaleData", ["JSV.common.Coordinate"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.initMinYOnScale = 0; +this.initMaxYOnScale = 0; +this.initMinY = 0; +this.initMaxY = 0; +this.startDataPointIndex = 0; +this.endDataPointIndex = 0; +this.pointCount = 0; +this.minX = 0; +this.maxX = 0; +this.firstX = NaN; +this.minXOnScale = 0; +this.maxXOnScale = 0; +this.specShift = 0; +this.precision = null; +this.exportPrecision = null; +this.steps = null; +this.minorTickCounts = null; +this.minYOnScale = 0; +this.maxYOnScale = 0; +this.minY = 0; +this.maxY = 0; +this.isShiftZoomedY = false; +this.spectrumScaleFactor = 1; +this.spectrumYRef = 0; +this.userYFactor = 1; +this.firstY = 0; +this.minY2D = 0; +this.maxY2D = 0; +this.xFactorForScale = 0; +this.yFactorForScale = 0; +Clazz_instantialize(this, arguments);}, JSV.common, "ScaleData", null); +Clazz_prepareFields (c$, function(){ +this.precision = Clazz_newIntArray (2, 0); +this.exportPrecision = Clazz_newIntArray (2, 0); +this.steps = Clazz_newDoubleArray (2, 0); +this.minorTickCounts = Clazz_newIntArray (2, 0); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_makeConstructor(c$, +function(iStart, iEnd){ +this.startDataPointIndex = iStart; +this.endDataPointIndex = iEnd; +this.pointCount = this.endDataPointIndex - this.startDataPointIndex + 1; +}, "~N,~N"); +Clazz_makeConstructor(c$, +function(coords, start, end, isContinuous, isInverted){ +this.minX = JSV.common.Coordinate.getMinX(coords, start, end); +this.maxX = JSV.common.Coordinate.getMaxX(coords, start, end); +this.minY = JSV.common.Coordinate.getMinY(coords, start, end); +if (this.minY > 0 && !isContinuous) this.minY = 0; +this.maxY = JSV.common.Coordinate.getMaxY(coords, start, end); +this.setScale(isContinuous, isInverted); +}, "~A,~N,~N,~B,~B"); +Clazz_defineMethod(c$, "setScale", +function(isContinuous, isInverted){ +this.setXScale(); +if (!isContinuous) this.maxXOnScale += this.steps[0] / 2; +this.setYScale(this.minY, this.maxY, true, isInverted); +}, "~B,~B"); +Clazz_defineMethod(c$, "setXScale", +function(){ +var xStep = this.setScaleParams(this.minX, this.maxX, 0); +this.firstX = Math.floor(this.minX / xStep) * xStep; +if (Math.abs((this.minX - this.firstX) / xStep) > 0.0001) this.firstX += xStep; +this.minXOnScale = this.minX; +this.maxXOnScale = this.maxX; +}); +Clazz_defineMethod(c$, "isYZeroOnScale", +function(){ +return (this.minYOnScale < this.spectrumYRef && this.maxYOnScale > this.spectrumYRef); +}); +Clazz_defineMethod(c$, "setYScale", +function(minY, maxY, setScaleMinMax, isInverted){ +if (minY == 0 && maxY == 0) maxY = 1; +if (this.isShiftZoomedY) { +minY = this.minYOnScale; +maxY = this.maxYOnScale; +}var yStep = this.setScaleParams(minY, maxY, 1); +var dy = (isInverted ? yStep / 2 : yStep / 4); +var dy2 = (isInverted ? yStep / 4 : yStep / 2); +if (!this.isShiftZoomedY) { +this.minYOnScale = (minY == 0 ? 0 : setScaleMinMax ? dy * Math.floor(minY / dy) : minY); +this.maxYOnScale = (setScaleMinMax ? dy2 * Math.ceil(maxY * 1.05 / dy2) : maxY); +}this.firstY = (minY == 0 ? 0 : Math.floor(minY / dy) * dy); +if (this.minYOnScale < 0 && this.maxYOnScale > 0) { +this.firstY = 0; +while (this.firstY - yStep > this.minYOnScale) this.firstY -= yStep; + +} else if (this.minYOnScale != 0 && Math.abs((minY - this.firstY) / dy) > 0.0001) { +this.firstY += dy; +}if (setScaleMinMax) { +this.initMinYOnScale = this.minYOnScale; +this.initMaxYOnScale = this.maxYOnScale; +this.initMinY = minY; +this.initMaxY = maxY; +}}, "~N,~N,~B,~B"); +Clazz_defineMethod(c$, "scale2D", +function(f){ +var dy = this.maxY - this.minY; +if (f == 1) { +this.maxY = this.initMaxY; +this.minY = this.initMinY; +return; +}this.maxY = this.minY + dy / f; +}, "~N"); +Clazz_defineMethod(c$, "setXRange", +function(x1, x2){ +this.minX = x1; +this.maxX = x2; +this.setXScale(); +}, "~N,~N"); +c$.getXRange = Clazz_defineMethod(c$, "getXRange", +function(i, xyCoords, initX, finalX, iStart, iEnd, startIndices, endIndices){ +var index = 0; +var ptCount = 0; +for (index = iStart; index <= iEnd; index++) { +if (xyCoords[index].getXVal() >= initX) { +startIndices[i] = index; +ptCount = 1; +break; +}} +while (++index <= iEnd && xyCoords[index].getXVal() <= finalX) { +ptCount++; +} +endIndices[i] = startIndices[i] + ptCount - 1; +return ptCount; +}, "~N,~A,~N,~N,~N,~N,~A,~A"); +Clazz_defineMethod(c$, "setScaleParams", +function(min, max, i){ +var dx = (max == min ? 1 : Math.abs(max - min) / 14); +var log = Math.log10(Math.abs(dx)); +var exp = Clazz_doubleToInt(Math.floor(log)); +this.exportPrecision[i] = exp; +this.precision[i] = (exp <= 0 ? Math.min(8, 1 - exp) : exp > 3 ? -2 : 0); +var j = 0; +var dec = Math.pow(10, log - exp); +while (dec > JSV.common.ScaleData.NTICKS[j]) { +j++; +} +this.steps[i] = Math.pow(10, exp) * JSV.common.ScaleData.NTICKS[j]; +log = Math.log10(Math.abs(this.steps[i] * 1.0001e5)); +var mantissa = log - Math.floor(log); +var n = 0; +for (j = 0; j < JSV.common.ScaleData.NTICKS.length; j++) if (Math.abs(mantissa - JSV.common.ScaleData.LOGTICKS[j]) < 0.001) { +n = JSV.common.ScaleData.NTICKS[j]; +break; +} +this.minorTickCounts[i] = n; +return this.steps[i]; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isInRangeX", +function(x){ +return (x >= this.minX && x <= this.maxX); +}, "~N"); +Clazz_defineMethod(c$, "addSpecShift", +function(dx){ +this.specShift += dx; +this.minX += dx; +this.maxX += dx; +this.minXOnScale += dx; +this.maxXOnScale += dx; +this.firstX += dx; +}, "~N"); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("specShift", Double.$valueOf(this.specShift)); +info.put("minX", Double.$valueOf(this.minX)); +info.put("maxX", Double.$valueOf(this.maxX)); +info.put("minXOnScale", Double.$valueOf(this.minXOnScale)); +info.put("maxXOnScale", Double.$valueOf(this.maxXOnScale)); +info.put("minY", Double.$valueOf(this.minY)); +info.put("maxY", Double.$valueOf(this.maxY)); +info.put("minYOnScale", Double.$valueOf(this.minYOnScale)); +info.put("maxYOnScale", Double.$valueOf(this.maxYOnScale)); +info.put("minorTickCountX", Integer.$valueOf(this.minorTickCounts[0])); +info.put("xStep", Double.$valueOf(this.steps[0])); +return info; +}, "java.util.Map"); +Clazz_defineMethod(c$, "setMinMax", +function(minX, maxX, minY, maxY){ +this.minX = minX; +this.maxX = maxX; +this.minY = minY; +this.maxY = maxY; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "toX", +function(xPixel, xPixel1, drawXAxisLeftToRight){ +return this.toXScaled(xPixel, xPixel1, drawXAxisLeftToRight, this.xFactorForScale); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "toX0", +function(xPixel, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toXScaled(xPixel, xPixel1, drawXAxisLeftToRight, (this.maxXOnScale - this.minXOnScale) / (xPixel1 - xPixel0)); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "toXScaled", +function(xPixel, xPixel1, drawXAxisLeftToRight, factor){ +return (drawXAxisLeftToRight ? this.maxXOnScale - (xPixel1 - xPixel) * factor : this.minXOnScale + (xPixel1 - xPixel) * factor); +}, "~N,~N,~B,~N"); +Clazz_defineMethod(c$, "toPixelX", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toPixelXScaled(dx, xPixel0, xPixel1, drawXAxisLeftToRight, this.xFactorForScale); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "toPixelX0", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toPixelXScaled(dx, xPixel0, xPixel1, drawXAxisLeftToRight, (this.maxXOnScale - this.minXOnScale) / (xPixel1 - xPixel0)); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "toPixelXScaled", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight, factor){ +var x = Clazz_doubleToInt((dx - this.minXOnScale) / factor); +return (drawXAxisLeftToRight ? xPixel0 + x : xPixel1 - x); +}, "~N,~N,~N,~B,~N"); +Clazz_defineMethod(c$, "toY", +function(yPixel, yPixel0){ +return this.maxYOnScale + (yPixel0 - yPixel) * this.yFactorForScale; +}, "~N,~N"); +Clazz_defineMethod(c$, "toY0", +function(yPixel, yPixel0, yPixel1){ +var factor = (this.maxYOnScale - this.minYOnScale) / (yPixel1 - yPixel0); +var y = this.maxYOnScale + (yPixel0 - yPixel) * factor; +return Math.max(this.minYOnScale, Math.min(y, this.maxYOnScale)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "toPixelY", +function(yVal, yPixel1){ +return (Double.isNaN(yVal) ? -2147483648 : yPixel1 - Clazz_doubleToInt(((yVal - this.spectrumYRef) * this.userYFactor + this.spectrumYRef - this.minYOnScale) / this.yFactorForScale)); +}, "~N,~N"); +Clazz_defineMethod(c$, "toPixelY0", +function(y, yPixel0, yPixel1){ +var factor = (this.maxYOnScale - this.minYOnScale) / (yPixel1 - yPixel0); +return Clazz_doubleToInt(yPixel0 + (this.maxYOnScale - y) / factor); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setXYScale", +function(xPixels, yPixels, isInverted){ +var yRef = this.spectrumYRef; +var f = this.spectrumScaleFactor; +var useInit = (f != 1 || this.isShiftZoomedY); +var minY = (useInit ? this.initMinYOnScale : this.minY); +var maxY = (useInit ? this.initMaxYOnScale : this.maxY); +if (useInit && yRef < minY) yRef = minY; +if (useInit && yRef > maxY) yRef = maxY; +this.setYScale((minY - yRef) / f + yRef, (maxY - yRef) / f + yRef, f == 1, isInverted); +this.xFactorForScale = (this.maxXOnScale - this.minXOnScale) / (xPixels - 1); +this.yFactorForScale = (this.maxYOnScale - this.minYOnScale) / (yPixels - 1); +}, "~N,~N,~B"); +c$.copyScaleFactors = Clazz_defineMethod(c$, "copyScaleFactors", +function(sdFrom, sdTo){ +for (var i = 0; i < sdFrom.length; i++) { +sdTo[i].spectrumScaleFactor = sdFrom[i].spectrumScaleFactor; +sdTo[i].spectrumYRef = sdFrom[i].spectrumYRef; +sdTo[i].userYFactor = sdFrom[i].userYFactor; +sdTo[i].specShift = sdFrom[i].specShift; +sdTo[i].isShiftZoomedY = sdFrom[i].isShiftZoomedY; +} +}, "~A,~A"); +c$.copyYScales = Clazz_defineMethod(c$, "copyYScales", +function(sdFrom, sdTo){ +for (var i = 0; i < sdFrom.length; i++) { +sdTo[i].initMinYOnScale = sdFrom[i].initMinYOnScale; +sdTo[i].initMaxYOnScale = sdFrom[i].initMaxYOnScale; +sdTo[i].minY = sdFrom[i].minY; +sdTo[i].maxY = sdFrom[i].maxY; +if (sdFrom[i].isShiftZoomedY) { +sdTo[i].isShiftZoomedY = true; +sdTo[i].minYOnScale = sdFrom[i].minYOnScale; +sdTo[i].maxYOnScale = sdFrom[i].maxYOnScale; +}} +}, "~A,~A"); +c$.setDataPointIndices = Clazz_defineMethod(c$, "setDataPointIndices", +function(graphsTemp, initX, finalX, minPoints, startIndices, endIndices){ +var nSpectraOK = 0; +var nSpectra = graphsTemp.size(); +for (var i = 0; i < nSpectra; i++) { +var xyCoords = graphsTemp.get(i).getXYCoords(); +if (JSV.common.ScaleData.getXRange(i, xyCoords, initX, finalX, 0, xyCoords.length - 1, startIndices, endIndices) >= minPoints) nSpectraOK++; +} +return (nSpectraOK == nSpectra); +}, "JU.Lst,~N,~N,~N,~A,~A"); +c$.fixScale = Clazz_defineMethod(c$, "fixScale", +function(map){ +if (map.isEmpty()) return; +while (true) { +for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var s = entry.getValue(); +var pt = s.indexOf("E"); +if (pt >= 0) s = s.substring(0, pt); +if (s.indexOf(".") < 0) return; +if (!s.endsWith("0") && !s.endsWith(".")) return; +} +for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var s = entry.getValue(); +var pt = s.indexOf("E"); +if (pt >= 0) entry.setValue(s.substring(0, pt - 1) + s.substring(pt)); + else entry.setValue(s.substring(0, s.length - 1)); +} +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "scaleBy", +function(f){ +if (this.isShiftZoomedY) { +var center = (this.isYZeroOnScale() ? this.spectrumYRef : (this.minYOnScale + this.maxYOnScale) / 2); +this.minYOnScale = center - (center - this.minYOnScale) / f; +this.maxYOnScale = center - (center - this.maxYOnScale) / f; +} else { +this.spectrumScaleFactor *= f; +}}, "~N"); +c$.NTICKS = Clazz_newIntArray(-1, [2, 5, 10, 10]); +c$.LOGTICKS = Clazz_newDoubleArray(-1, [Math.log10(2), Math.log10(5), 0, 1]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum"], "JSV.common.ScriptToken", ["java.util.Hashtable", "JU.Lst", "$.PT", "$.SB", "JSV.common.ScriptTokenizer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tip = null; +this.description = null; +Clazz_instantialize(this, arguments);}, JSV.common, "ScriptToken", Enum); +Clazz_defineMethod(c$, "getTip", +function(){ +return " " + (this.tip === "T" ? "TRUE/FALSE/TOGGLE" : this.tip === "TF" ? "TRUE or FALSE" : this.tip === "C" ? "COLOR" : this.tip); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_makeConstructor(c$, +function(tip){ +this.tip = tip; +this.description = ""; +}, "~S"); +Clazz_makeConstructor(c$, +function(tip, description){ +this.tip = tip; +this.description = "-- " + description; +}, "~S,~S"); +c$.getParams = Clazz_defineMethod(c$, "getParams", +function(){ +if (JSV.common.ScriptToken.htParams == null) { +JSV.common.ScriptToken.htParams = new java.util.Hashtable(); +for (var item, $item = 0, $$item = JSV.common.ScriptToken.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) JSV.common.ScriptToken.htParams.put(item.name(), item); + +}return JSV.common.ScriptToken.htParams; +}); +c$.getScriptToken = Clazz_defineMethod(c$, "getScriptToken", +function(name){ +var st = JSV.common.ScriptToken.getParams().get(name.toUpperCase()); +return (st == null ? JSV.common.ScriptToken.UNKNOWN : st); +}, "~S"); +c$.getScriptTokenList = Clazz_defineMethod(c$, "getScriptTokenList", +function(name, isExact){ +if (name != null) name = name.toUpperCase(); +var list = new JU.Lst(); +if (isExact) { +var st = JSV.common.ScriptToken.getScriptToken(name); +if (st != null) list.addLast(st); +} else { +for (var entry, $entry = JSV.common.ScriptToken.getParams().entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) if ((name == null || entry.getKey().startsWith(name)) && entry.getValue().tip != null) list.addLast(entry.getValue()); + +}return list; +}, "~S,~B"); +c$.getValue = Clazz_defineMethod(c$, "getValue", +function(st, params, cmd){ +if (!params.hasMoreTokens()) return ""; +switch (st) { +default: +return JSV.common.ScriptTokenizer.nextStringToken(params, true); +case JSV.common.ScriptToken.CLOSE: +case JSV.common.ScriptToken.GETPROPERTY: +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +case JSV.common.ScriptToken.JMOL: +case JSV.common.ScriptToken.LABEL: +case JSV.common.ScriptToken.LOAD: +case JSV.common.ScriptToken.PEAK: +case JSV.common.ScriptToken.PLOTCOLORS: +case JSV.common.ScriptToken.YSCALE: +case JSV.common.ScriptToken.WRITE: +return JSV.common.ScriptToken.removeCommandName(cmd); +case JSV.common.ScriptToken.SELECT: +case JSV.common.ScriptToken.OVERLAY: +case JSV.common.ScriptToken.VIEW: +case JSV.common.ScriptToken.ZOOM: +return JSV.common.ScriptToken.removeCommandName(cmd).$replace(',', ' ').trim(); +} +}, "JSV.common.ScriptToken,JSV.common.ScriptTokenizer,~S"); +c$.removeCommandName = Clazz_defineMethod(c$, "removeCommandName", +function(cmd){ +var pt = cmd.indexOf(" "); +if (pt < 0) return ""; +return cmd.substring(pt).trim(); +}, "~S"); +c$.getKey = Clazz_defineMethod(c$, "getKey", +function(eachParam){ +var key = eachParam.nextToken(); +if (key.startsWith("#") || key.startsWith("//")) return null; +if (key.equalsIgnoreCase("SET")) key = eachParam.nextToken(); +return key.toUpperCase(); +}, "JSV.common.ScriptTokenizer"); +c$.getTokens = Clazz_defineMethod(c$, "getTokens", +function(value){ +if (value.startsWith("'") && value.endsWith("'")) value = "\"" + JU.PT.trim(value, "'") + "\""; +var tokens = new JU.Lst(); +var st = new JSV.common.ScriptTokenizer(value, false); +while (st.hasMoreTokens()) { +var s = JSV.common.ScriptTokenizer.nextStringToken(st, false); +if (s.startsWith("//") || s.startsWith("#")) break; +tokens.addLast(s); +} +return tokens; +}, "~S"); +c$.getNameList = Clazz_defineMethod(c$, "getNameList", +function(list){ +if (list.size() == 0) return ""; +var sb = new JU.SB(); +for (var i = 0; i < list.size(); i++) sb.append(",").append(list.get(i).toString()); + +return sb.toString().substring(1); +}, "JU.Lst"); +Clazz_defineMethod(c$, "getDescription", +function(){ +return this.description; +}); +c$.htParams = null; +Clazz_defineEnumConstant(c$, "UNKNOWN", 0, []); +Clazz_defineEnumConstant(c$, "APPLETID", 1, []); +Clazz_defineEnumConstant(c$, "APPLETREADYCALLBACKFUNCTIONNAME", 2, []); +Clazz_defineEnumConstant(c$, "AUTOINTEGRATE", 3, ["TF", "automatically integrate an NMR spectrum"]); +Clazz_defineEnumConstant(c$, "BACKGROUNDCOLOR", 4, ["C", "set the background color"]); +Clazz_defineEnumConstant(c$, "CLOSE", 5, ["spectrumId or fileName or ALL or VIEWS or SIMULATIONS", "close one or more views or simulations"]); +Clazz_defineEnumConstant(c$, "COMPOUNDMENUON", 6, []); +Clazz_defineEnumConstant(c$, "COORDCALLBACKFUNCTIONNAME", 7, []); +Clazz_defineEnumConstant(c$, "COORDINATESCOLOR", 8, ["C", "set the color of the coordinates shown in the upper right-hand corner"]); +Clazz_defineEnumConstant(c$, "COORDINATESON", 9, ["T", "turn on or off the coordinates shown in the upper right-hand corner"]); +Clazz_defineEnumConstant(c$, "DEBUG", 10, ["TF", "turn debugging on and off"]); +Clazz_defineEnumConstant(c$, "DEFAULTLOADSCRIPT", 11, ["\"script...\"", "set the script to be run after each file is loaded"]); +Clazz_defineEnumConstant(c$, "DEFAULTNMRNORMALIZATION", 12, ["maxYvalue", "set the value to be given the largest peak in an HMR spectrum"]); +Clazz_defineEnumConstant(c$, "DISPLAYFONTNAME", 13, []); +Clazz_defineEnumConstant(c$, "DISPLAY1D", 14, ["T", "turn on or off display of 1D spectra when 1D and 2D spectra are loaded"]); +Clazz_defineEnumConstant(c$, "DISPLAY2D", 15, ["T", "turn on or off display of the 2D spectrum when 1D and 2D spectra are loaded"]); +Clazz_defineEnumConstant(c$, "ENABLEZOOM", 16, ["T", "allow or disallow zooming"]); +Clazz_defineEnumConstant(c$, "ENDINDEX", 17, []); +Clazz_defineEnumConstant(c$, "FINDX", 18, ["value", "move the vertical-line cursor to a specific x-axis value"]); +Clazz_defineEnumConstant(c$, "GETPROPERTY", 19, ["[propertyName] or ALL or NAMES", "get a property value or all property values as key/value pairs, or a list of names"]); +Clazz_defineEnumConstant(c$, "GETSOLUTIONCOLOR", 20, [" FILL or FILLNONE or FILLALL or FILLALLNONE", "estimate the solution color for UV/VIS spectra"]); +Clazz_defineEnumConstant(c$, "GRIDCOLOR", 21, ["C", "color of the grid"]); +Clazz_defineEnumConstant(c$, "GRIDON", 22, ["T", "turn the grid lines on or off"]); +Clazz_defineEnumConstant(c$, "HELP", 23, ["[command]", "get this listing or help for a specific command"]); +Clazz_defineEnumConstant(c$, "HIDDEN", 24, []); +Clazz_defineEnumConstant(c$, "HIGHLIGHTCOLOR", 25, ["C", "set the highlight color"]); +Clazz_defineEnumConstant(c$, "HIGHLIGHT", 26, ["OFF or X1 X2 [OFF] or X1 X2 r g b [a]", "turns on or off a highlight color, possibily setting its color, where r g b a are 0-255 or 0.0-1.0"]); +Clazz_defineEnumConstant(c$, "INTEGRALOFFSET", 27, ["percent", "sets the integral offset from baseline"]); +Clazz_defineEnumConstant(c$, "INTEGRALRANGE", 28, ["percent", "sets the height of the total integration"]); +Clazz_defineEnumConstant(c$, "INTEGRATE", 29, ["", "see INTEGRATION"]); +Clazz_defineEnumConstant(c$, "INTEGRATION", 30, ["ON/OFF/TOGGLE/AUTO/CLEAR/MIN value/MARK ppm1-ppm2:norm,ppm3-ppm4,...", "show/hide integration or set integrals (1D 1H NMR only)"]); +Clazz_defineEnumConstant(c$, "INTEGRALPLOTCOLOR", 31, ["C", "color of the integration line"]); +Clazz_defineEnumConstant(c$, "INTEGRATIONRATIOS", 32, ["'x:value,x:value,..'", "annotate the spectrum with numbers or text at specific x values"]); +Clazz_defineEnumConstant(c$, "INTERFACE", 33, ["SINGLE or OVERLAY", "set how multiple spectra are displayed"]); +Clazz_defineEnumConstant(c$, "INVERTY", 34, ["", "invert the Y axis"]); +Clazz_defineEnumConstant(c$, "IRMODE", 35, ["A or T or TOGGLE", "set the IR mode to absorption or transmission"]); +Clazz_defineEnumConstant(c$, "JMOL", 36, ["...Jmol command...", "send a command to Jmol (if present)"]); +Clazz_defineEnumConstant(c$, "JSV", 37, []); +Clazz_defineEnumConstant(c$, "LABEL", 38, ["x y [color and/or \"text\"]", "add a text label"]); +Clazz_defineEnumConstant(c$, "LINK", 39, ["AB or ABC or NONE or ALL", "synchronize the crosshair of a 2D spectrum with 1D cursors"]); +Clazz_defineEnumConstant(c$, "LOAD", 40, ["[APPEND] \"fileName\" [first] [last]; use \"\" for current file; $H1/name or $C13/name for simulation", "load a specturm"]); +Clazz_defineEnumConstant(c$, "LOADFILECALLBACKFUNCTIONNAME", 41, []); +Clazz_defineEnumConstant(c$, "LOADIMAGINARY", 42, ["TF", "set TRUE to load imaginary NMR component"]); +Clazz_defineEnumConstant(c$, "MENUON", 43, []); +Clazz_defineEnumConstant(c$, "OBSCURE", 44, []); +Clazz_defineEnumConstant(c$, "OVERLAY", 45, []); +Clazz_defineEnumConstant(c$, "OVERLAYSTACKED", 46, ["TF", "whether viewed spectra are shown separately, in a stack"]); +Clazz_defineEnumConstant(c$, "PEAK", 47, ["[IR,CNMR,HNMR,MS] [#nnn or ID=xxx or text] [ALL], for example: PEAK HNMR #3", "highlights a peak based on its number or title text, optionally checking all loade spectra"]); +Clazz_defineEnumConstant(c$, "PEAKCALLBACKFUNCTIONNAME", 48, []); +Clazz_defineEnumConstant(c$, "PEAKLIST", 49, ["[THRESHOLD=n] [INTERPOLATE=PARABOLIC or NONE]", "creates a peak list based on a threshold value and parabolic or no interpolation"]); +Clazz_defineEnumConstant(c$, "PEAKTABCOLOR", 50, ["C", "sets the color of peak marks for a peak listing"]); +Clazz_defineEnumConstant(c$, "PEAKTABSON", 51, ["T", "show peak tabs for simulated spectra"]); +Clazz_defineEnumConstant(c$, "PLOTAREACOLOR", 52, ["C", "sets the color of the plot background"]); +Clazz_defineEnumConstant(c$, "PLOTCOLOR", 53, ["C", "sets the color of the graph line"]); +Clazz_defineEnumConstant(c$, "PLOTCOLORS", 54, ["color,color,color,...", "sets the colors of multiple plots"]); +Clazz_defineEnumConstant(c$, "POINTSONLY", 55, ["TF", "show points only for all data"]); +Clazz_defineEnumConstant(c$, "PRINT", 56, ["", "prints the current spectrum"]); +Clazz_defineEnumConstant(c$, "REVERSEPLOT", 57, ["T", "reverses the x-axis of a spectrum"]); +Clazz_defineEnumConstant(c$, "SCALEBY", 58, ["factor", "multiplies the y-scale of the spectrum by a factor"]); +Clazz_defineEnumConstant(c$, "SCALECOLOR", 59, ["C", "sets the color of the x-axis and y-axis scales"]); +Clazz_defineEnumConstant(c$, "SCRIPT", 60, ["filename.jsv", "runs a script from a file"]); +Clazz_defineEnumConstant(c$, "SELECT", 61, ["spectrumID, spectrumID,...", "selects one or more spectra based on IDs"]); +Clazz_defineEnumConstant(c$, "SETPEAK", 62, ["xNew, xOld xNew, ?, or NONE", "sets nearest peak to xOld ppm to a new value; NONE resets (1D NMR only)"]); +Clazz_defineEnumConstant(c$, "SETX", 63, ["xNew, xOld xNew, ?, or NONE", "sets an old ppm position in the spectrum to a new value; NONE resets (1D NMR only)"]); +Clazz_defineEnumConstant(c$, "SHIFTX", 64, ["dx or NONE", "shifts the x-axis of a 1D NMR spectrum by the given ppm; NONE resets (1D NMR only)"]); +Clazz_defineEnumConstant(c$, "SHOWERRORS", 65, ["shows recent errors"]); +Clazz_defineEnumConstant(c$, "SHOWINTEGRATION", 66, ["T", "shows an integration listing"]); +Clazz_defineEnumConstant(c$, "SHOWKEY", 67, ["T", "shows a color key when multiple spectra are displayed"]); +Clazz_defineEnumConstant(c$, "SHOWMEASUREMENTS", 68, ["T", "shows a listing of measurements"]); +Clazz_defineEnumConstant(c$, "SHOWMENU", 69, ["displays the popup menu"]); +Clazz_defineEnumConstant(c$, "SHOWPEAKLIST", 70, ["T", "shows a listing for peak picking"]); +Clazz_defineEnumConstant(c$, "SHOWPROPERTIES", 71, ["displays the header information of a JDX file"]); +Clazz_defineEnumConstant(c$, "SHOWSOURCE", 72, ["displays the source JDX file associated with the selected data"]); +Clazz_defineEnumConstant(c$, "SPECTRUM", 73, ["id", "displays a specific spectrum, where id is a number 1, 2, 3... or a file.spectrum number such as 2.1"]); +Clazz_defineEnumConstant(c$, "SPECTRUMNUMBER", 74, ["n", "displays the nth spectrum loaded"]); +Clazz_defineEnumConstant(c$, "STACKOFFSETY", 75, ["percent", "sets the y-axis offset of stacked spectra"]); +Clazz_defineEnumConstant(c$, "STARTINDEX", 76, []); +Clazz_defineEnumConstant(c$, "SYNCCALLBACKFUNCTIONNAME", 77, []); +Clazz_defineEnumConstant(c$, "SYNCID", 78, []); +Clazz_defineEnumConstant(c$, "TEST", 79, []); +Clazz_defineEnumConstant(c$, "TITLEON", 80, ["T", "turns the title in the bottom left corner on or off"]); +Clazz_defineEnumConstant(c$, "TITLEBOLDON", 81, ["T", "makes the title bold"]); +Clazz_defineEnumConstant(c$, "TITLECOLOR", 82, ["C", "sets the color of the title"]); +Clazz_defineEnumConstant(c$, "TITLEFONTNAME", 83, ["fontName", "sets the title font"]); +Clazz_defineEnumConstant(c$, "UNITSCOLOR", 84, ["C", "sets the color of the x-axis and y-axis units"]); +Clazz_defineEnumConstant(c$, "VERSION", 85, []); +Clazz_defineEnumConstant(c$, "VIEW", 86, ["spectrumID, spectrumID, ... Example: VIEW 3.1, 3.2 or VIEW \"acetophenone\"", "creates a view of one or more spectra"]); +Clazz_defineEnumConstant(c$, "XSCALEON", 87, ["T", "set FALSE to turn off the x-axis scale"]); +Clazz_defineEnumConstant(c$, "XUNITSON", 88, ["T", "set FALSE to turn off the x-axis units"]); +Clazz_defineEnumConstant(c$, "YSCALE", 89, ["[ALL] lowValue highValue"]); +Clazz_defineEnumConstant(c$, "YSCALEON", 90, ["T", "set FALSE to turn off the y-axis scale"]); +Clazz_defineEnumConstant(c$, "YUNITSON", 91, ["T", "set FALSE to turn off the y-axis units"]); +Clazz_defineEnumConstant(c$, "WINDOW", 92, []); +Clazz_defineEnumConstant(c$, "WRITE", 93, ["[XY,DIF,DIFDUP,PAC,FIX,SQZ,AML,CML,JPG,PDF,PNG,SVG] \"filename\"", "writes a file in the specified format"]); +Clazz_defineEnumConstant(c$, "ZOOM", 94, ["OUT or PREVIOUS or NEXT or x1,x2 or x1,y1 x2,y2", "sets the zoom"]); +Clazz_defineEnumConstant(c$, "ZOOMBOXCOLOR", 95, []); +Clazz_defineEnumConstant(c$, "ZOOMBOXCOLOR2", 96, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.ScriptTokenizer", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.str = null; +this.pt = -1; +this.len = 0; +this.isCmd = false; +this.doCheck = true; +Clazz_instantialize(this, arguments);}, JSV.common, "ScriptTokenizer", null); +Clazz_makeConstructor(c$, +function(str, isCmd){ +this.str = str; +this.len = str.length; +this.isCmd = isCmd; +}, "~S,~B"); +c$.nextStringToken = Clazz_defineMethod(c$, "nextStringToken", +function(eachParam, removeQuotes){ +var s = eachParam.nextToken(); +return (removeQuotes && s.charAt(0) == '"' && s.endsWith("\"") && s.length > 1 ? JU.PT.trimQuotes(s) : s); +}, "JSV.common.ScriptTokenizer,~B"); +Clazz_defineMethod(c$, "nextToken", +function(){ +if (this.doCheck) this.hasMoreTokens(); +var pt0 = this.pt; +var inQuote = (this.str.charAt(this.pt) == '"'); +while (++this.pt < this.len) { +switch ((this.str.charAt(this.pt)).charCodeAt(0)) { +case 34: +if (inQuote) { +if (this.isCmd) { +inQuote = false; +continue; +}this.pt++; +break; +}if (this.isCmd) inQuote = true; +continue; +case 32: +if (!this.isCmd && !inQuote) break; +continue; +case 59: +case 10: +if (this.isCmd && !inQuote) break; +continue; +default: +continue; +} +break; +} +this.doCheck = true; +return this.str.substring(pt0, this.pt); +}); +Clazz_defineMethod(c$, "hasMoreTokens", +function(){ +while (++this.pt < this.len) { +switch ((this.str.charAt(this.pt)).charCodeAt(0)) { +case 32: +case 59: +case 10: +continue; +} +break; +} +this.doCheck = false; +return (this.pt < this.len); +}); +Clazz_defineMethod(c$, "getRemainingScript", +function(){ +return this.str.substring(this.pt); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isub = 0; +this.title = null; +Clazz_instantialize(this, arguments);}, JSV.common, "SubSpecChangeEvent", null); +Clazz_makeConstructor(c$, +function(isub, title){ +this.isub = isub; +this.title = title; +}, "~N,~S"); +Clazz_defineMethod(c$, "isValid", +function(){ +return (this.title != null); +}); +Clazz_defineMethod(c$, "getSubIndex", +function(){ +return this.isub; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.title; +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.ViewData", ["JSV.common.Coordinate", "$.ScaleData"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.scaleData = null; +this.thisScale = null; +this.nSpectra = 0; +this.iThisScale = 0; +this.spectra = null; +Clazz_instantialize(this, arguments);}, JSV.common, "ViewData", null); +Clazz_makeConstructor(c$, +function(spectra, yPt1, yPt2, startList, endList, isContinuous, is2D){ +this.nSpectra = (is2D ? 1 : spectra.size()); +this.scaleData = new Array(this.nSpectra); +for (var j = 0; j < this.nSpectra; j++) this.scaleData[j] = new JSV.common.ScaleData(startList[j], endList[j]); + +this.init(spectra, yPt1, yPt2, isContinuous); +}, "JU.Lst,~N,~N,~A,~A,~B,~B"); +Clazz_makeConstructor(c$, +function(spectra, yPt1, yPt2, isContinuous){ +this.nSpectra = spectra.size(); +var n = spectra.get(0).getXYCoords().length; +this.scaleData = new Array(1); +this.scaleData[0] = new JSV.common.ScaleData(0, n - 1); +this.init(spectra, yPt1, yPt2, isContinuous); +}, "JU.Lst,~N,~N,~B"); +Clazz_defineMethod(c$, "getScaleData", +function(){ +return this.scaleData; +}); +Clazz_defineMethod(c$, "getScale", +function(){ +return this.thisScale; +}); +Clazz_defineMethod(c$, "init", +function(spectra, yPt1, yPt2, isContinuous){ +if (spectra == null) spectra = this.spectra; + else this.spectra = spectra; +this.thisScale = this.scaleData[this.iThisScale = 0]; +for (var i = 0; i < this.scaleData.length; i++) { +this.scaleData[i].userYFactor = spectra.get(i).getUserYFactor(); +this.scaleData[i].spectrumYRef = spectra.get(i).getYRef(); +} +this.resetScaleFactors(); +var minX = JSV.common.Coordinate.getMinX(spectra, this); +var maxX = JSV.common.Coordinate.getMaxX(spectra, this); +var minY = JSV.common.Coordinate.getMinYUser(spectra, this); +var maxY = JSV.common.Coordinate.getMaxYUser(spectra, this); +if (yPt1 != yPt2) { +minY = yPt1; +maxY = yPt2; +if (minY > maxY) { +var t = minY; +minY = maxY; +maxY = t; +}}var isInverted = spectra.get(0).isInverted(); +for (var i = 0; i < this.scaleData.length; i++) { +this.scaleData[i].setMinMax(minX, maxX, minY, maxY); +this.scaleData[i].setScale(isContinuous, isInverted); +} +}, "JU.Lst,~N,~N,~B"); +Clazz_defineMethod(c$, "newSpectrum", +function(spectra){ +this.init(spectra, 0, 0, false); +}, "JU.Lst"); +Clazz_defineMethod(c$, "setXRangeForSubSpectrum", +function(xyCoords){ +this.setXRange(0, xyCoords, this.scaleData[0].minX, this.scaleData[0].maxX, 0, xyCoords.length - 1); +}, "~A"); +Clazz_defineMethod(c$, "setXRange", +function(i, xyCoords, initX, finalX, iStart, iEnd){ +var index = 0; +var ptCount = 0; +for (index = iStart; index <= iEnd; index++) { +var x = xyCoords[index].getXVal(); +if (x >= initX) { +this.scaleData[i % this.scaleData.length].startDataPointIndex = index; +break; +}} +for (; index <= iEnd; index++) { +var x = xyCoords[index].getXVal(); +ptCount++; +if (x >= finalX) { +break; +}} +this.scaleData[i % this.scaleData.length].endDataPointIndex = index; +return ptCount; +}, "~N,~A,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getStartingPointIndex", +function(i){ +return this.scaleData[i % this.scaleData.length].startDataPointIndex; +}, "~N"); +Clazz_defineMethod(c$, "getEndingPointIndex", +function(i){ +return this.scaleData[i % this.scaleData.length].endDataPointIndex; +}, "~N"); +Clazz_defineMethod(c$, "areYScalesSame", +function(i, j){ +i %= this.scaleData.length; +j %= this.scaleData.length; +return (this.scaleData[i].minYOnScale == this.scaleData[j].minYOnScale && this.scaleData[i].maxYOnScale == this.scaleData[j].maxYOnScale); +}, "~N,~N"); +Clazz_defineMethod(c$, "setScale", +function(i, xPixels, yPixels, isInverted){ +this.iThisScale = i % this.scaleData.length; +this.thisScale = this.scaleData[this.iThisScale]; +this.thisScale.setXYScale(xPixels, yPixels, isInverted); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "resetScaleFactors", +function(){ +for (var i = 0; i < this.scaleData.length; i++) this.scaleData[i].spectrumScaleFactor = 1; + +}); +Clazz_defineMethod(c$, "scaleSpectrum", +function(i, f){ +if (f <= 0 || i >= this.nSpectra) return; +if (i == -2) { +this.thisScale.scale2D(f); +return; +}if (i < 0) for (i = 0; i < this.scaleData.length; i++) this.scaleData[i].scaleBy(f); + + else this.scaleData[i % this.scaleData.length].scaleBy(f); +}, "~N,~N"); +Clazz_defineMethod(c$, "getNewScales", +function(iSelected, isXOnly, y1, y2){ +if (isXOnly) return this.scaleData; +iSelected %= this.scaleData.length; +var f1 = (y1 - this.thisScale.minYOnScale) / (this.thisScale.maxYOnScale - this.thisScale.minYOnScale); +var f2 = (y2 - this.thisScale.minYOnScale) / (this.thisScale.maxYOnScale - this.thisScale.minYOnScale); +var sd = new Array(this.scaleData.length); +for (var i = 0; i < this.scaleData.length; i++) sd[i] = (iSelected >= 0 && i != iSelected ? this.scaleData[i] : new JSV.common.ScaleData()); + +JSV.common.ScaleData.copyScaleFactors(this.scaleData, sd); +JSV.common.ScaleData.copyYScales(this.scaleData, sd); +for (var i = 0; i < this.scaleData.length; i++) { +if (iSelected >= 0 && i != iSelected) continue; +sd[i].isShiftZoomedY = true; +sd[i].minYOnScale = this.scaleData[i].minYOnScale * (1 - f1) + f1 * this.scaleData[i].maxYOnScale; +sd[i].maxYOnScale = this.scaleData[i].minYOnScale * (1 - f2) + f2 * this.scaleData[i].maxYOnScale; +} +return sd; +}, "~N,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_declareInterface(JSV.common, "XYScaleConverter"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_declareType(JSV.common, "ZoomEvent", null); +/*LV!1824 unnec constructor*/})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.dialog"); +Clazz_load(["JSV.api.AnnotationData", "JSV.common.Annotation"], "JSV.dialog.JSVDialog", ["JU.DF", "$.PT", "JSV.common.IntegralData", "$.PeakData", "JSV.dialog.DialogManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.optionKey = null; +this.options = null; +this.type = null; +this.title = null; +this.vwr = null; +this.$spec = null; +this.manager = null; +this.dialog = null; +this.jsvp = null; +this.txt1 = null; +this.txt2 = null; +this.txt3 = null; +this.combo1 = null; +this.xyData = null; +this.myParams = null; +this.precision = 1; +this.loc = null; +this.showHideButton = null; +this.addClearBtn = false; +this.addCombo1 = false; +this.addApplyBtn = false; +this.isNumeric = false; +this.defaultVisible = false; +this.subType = null; +this.graphSetKey = null; +this.tableData = null; +this.addUnits = false; +this.unitOptions = null; +this.formatOptions = null; +this.unitPtr = null; +this.isON = true; +this.lastNorm = 1; +this.iRowColSelected = -1; +this.iSelected = -1; +this.skipCreate = false; +this.iRowSelected = -1; +this.iColSelected = -1; +Clazz_instantialize(this, arguments);}, JSV.dialog, "JSVDialog", JSV.common.Annotation, JSV.api.AnnotationData); +Clazz_overrideMethod(c$, "isDialog", +function(){ +return true; +}); +Clazz_defineMethod(c$, "setParams", +function(title, viewer, spec){ +title = JSV.dialog.DialogManager.fixTitle(title); +this.title = title; +this.vwr = viewer; +this.$spec = spec; +this.manager = viewer.getDialogManager(); +this.jsvp = viewer.selectedPanel; +this.myParams = (viewer.getPlatformInterface("Parameters")).setName("dialogParams"); +this.subType = (spec == null ? "!" : spec.getTypeLabel()); +this.optionKey = this.type + "_" + this.subType; +this.options = this.manager.getDialogOptions(); +if (spec != null) { +var specOptions = spec.getDefaultAnnotationInfo(this.type); +this.options.put(this.optionKey, specOptions); +this.unitOptions = specOptions[0]; +this.formatOptions = specOptions[1]; +this.unitPtr = this.options.get(this.optionKey + "_unitPtr"); +if (this.unitPtr == null) this.unitPtr = specOptions[2]; +}switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.isNumeric = true; +this.addClearBtn = true; +this.defaultVisible = true; +this.addApplyBtn = true; +break; +case JSV.common.Annotation.AType.Measurements: +this.isNumeric = true; +this.addClearBtn = true; +this.addCombo1 = true; +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.PeakList: +this.isNumeric = true; +this.addApplyBtn = true; +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.Views: +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.NONE: +break; +} +this.initDialog(); +return this; +}, "~S,JSV.common.JSViewer,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "initDialog", +function(){ +this.dialog = this.manager.getDialog(this); +this.restoreDialogPosition(this.jsvp, this.getPosXY()); +this.dialog.setTitle(this.title); +this.layoutDialog(); +}); +Clazz_defineMethod(c$, "layoutDialog", +function(){ +this.dialog.startLayout(); +this.addUniqueControls(); +if (this.isNumeric) { +this.getUnitOptions(); +if (this.addCombo1) this.combo1 = this.dialog.addSelectOption("cmbUnits", "Units", this.unitOptions, this.unitPtr.intValue(), this.addUnits); +if (this.addApplyBtn) this.dialog.addButton("btnApply", "Apply"); +this.showHideButton = this.dialog.addButton("btnShow", "Show"); +if (this.addClearBtn) this.dialog.addButton("btnClear", "Clear"); +}this.dialog.endLayout(); +this.checkEnables(); +this.dialog.setVisible(this.defaultVisible); +}); +Clazz_defineMethod(c$, "callbackAD", +function(id, msg){ +if (id.equals("FOCUS")) { +this.eventFocus(); +} else if (id.equals("tableSelect")) { +this.tableSelect(msg); +} else if (id.equals("btnClear")) { +this.clear(); +} else if (id.equals("btnApply")) { +this.eventApply(); +} else if (id.equals("btnShow")) { +var label = this.dialog.getText(this.showHideButton); +this.eventShowHide(label.equals("Show")); +} else if (id.equals("cmbUnits")) { +this.setPrecision(this.dialog.getSelectedIndex(this.combo1)); +} else if (id.startsWith("txt")) { +this.eventApply(); +} else if (id.equals("windowClosing")) { +this.done(); +return true; +}if (this.jsvp != null) this.jsvp.doRepaint(true); +return true; +}, "~S,~S"); +Clazz_defineMethod(c$, "addUniqueControls", +function(dialogHelper){ +}, "JSV.dialog.DialogManager"); +Clazz_overrideMethod(c$, "getAType", +function(){ +return this.type; +}); +Clazz_overrideMethod(c$, "getGraphSetKey", +function(){ +return this.graphSetKey; +}); +Clazz_overrideMethod(c$, "setGraphSetKey", +function(key){ +this.graphSetKey = key; +}, "~S"); +Clazz_overrideMethod(c$, "getSpectrum", +function(){ +return this.$spec; +}); +Clazz_overrideMethod(c$, "getState", +function(){ +return this.isON; +}); +Clazz_overrideMethod(c$, "setState", +function(b){ +this.isON = b; +}, "~B"); +Clazz_defineMethod(c$, "checkEnables", +function(){ +var isShow = this.checkVisible(); +this.dialog.setText(this.showHideButton, isShow ? "Hide" : "Show"); +}); +Clazz_defineMethod(c$, "createTable", +function(data, header, widths){ +this.tableData = data; +this.dialog.createTable(data, header, widths); +}, "~A,~A,~A"); +Clazz_defineMethod(c$, "setTableSelectionEnabled", +function(enabled){ +this.dialog.setCellSelectionEnabled(enabled); +}, "~B"); +Clazz_defineMethod(c$, "getParameters", +function(){ +return this.myParams; +}); +Clazz_defineMethod(c$, "showMessage", +function(msg, title, msgType){ +this.manager.showMessageDialog(this.dialog, msg, title, msgType); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "setThreshold", +function(y){ +this.dialog.setText(this.txt1, this.getThreasholdText(y)); +}, "~N"); +Clazz_defineMethod(c$, "setComboSelected", +function(i){ +this.dialog.setSelectedIndex(this.combo1, i); +}, "~N"); +Clazz_defineMethod(c$, "applyFromFields", +function(){ +this.apply(null); +}); +Clazz_defineMethod(c$, "reEnable", +function(){ +this.paramsReEnable(); +return this; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +this.dialog.dispose(); +}); +Clazz_defineMethod(c$, "setVisible", +function(visible){ +this.dialog.setVisible(visible); +}, "~B"); +Clazz_overrideMethod(c$, "isVisible", +function(){ +return this.dialog.isVisible(); +}); +Clazz_defineMethod(c$, "selectTableRow", +function(i){ +this.dialog.selectTableRow(i); +}, "~N"); +Clazz_defineMethod(c$, "repaint", +function(){ +this.dialog.repaint(); +}); +Clazz_defineMethod(c$, "setFields", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.myParams = this.xyData.getParameters(); +this.setThreshold(this.myParams.peakListThreshold); +this.setComboSelected(this.myParams.peakListInterpolation.equals("none") ? 1 : 0); +this.createData(); +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz_defineMethod(c$, "setFocus", +function(tf){ +this.dialog.setFocus(tf); +}, "~B"); +Clazz_defineMethod(c$, "update", +function(clicked, xRange, yOffset){ +this.selectTableRow(-1); +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.loadData(); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.Measurements: +this.loadData(); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +if (yOffset > 20) this.applyFromFields(); +if (this.xyData == null || clicked == null || yOffset > 20) return; +var ipt = 0; +var dx0 = 1e100; +var xval = clicked.getXVal(); +var md = this.xyData; +var min = Math.abs(xRange / 20); +for (var i = md.size(); --i >= 0; ) { +var dx = Math.abs(xval - md.get(i).getXVal()); +if (dx < dx0) { +dx0 = dx; +ipt = i; +}} +if (dx0 < min) { +this.selectTableRow(md.size() - 2 - ipt); +this.repaint(); +}break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}, "JSV.common.Coordinate,~N,~N"); +Clazz_defineMethod(c$, "getPeakData", +function(){ +var md = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.$spec); +md.setPeakList(this.myParams, this.precision, this.jsvp.getPanelData().getView()); +this.xyData = md; +return null; +}); +Clazz_overrideMethod(c$, "getData", +function(){ +if (this.xyData == null) this.createData(); +return this.xyData; +}); +Clazz_defineMethod(c$, "setData", +function(data){ +this.myParams = data.getParameters(); +this.xyData = data; +}, "JSV.api.AnnotationData"); +Clazz_overrideMethod(c$, "setSpecShift", +function(dx){ +if (this.xyData != null) this.xyData.setSpecShift(dx); +}, "~N"); +Clazz_defineMethod(c$, "setType", +function(type){ +this.type = type; +switch (type) { +case JSV.common.Annotation.AType.Measurements: +this.addUnits = true; +break; +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.PeakList: +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +case JSV.common.Annotation.AType.NONE: +break; +} +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "apply", +function(objects){ +try { +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +var offset = Double.parseDouble(objects[0]); +var scale = Double.parseDouble(objects[1]); +this.myParams.integralOffset = offset; +this.myParams.integralRange = scale; +this.myParams.integralDrawAll = false; +(this.getData()).update(this.myParams); +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +return; +case JSV.common.Annotation.AType.PeakList: +if (!this.skipCreate) { +this.setThreshold(NaN); +this.createData(); +}this.skipCreate = false; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +this.vwr.parameters.viewOffset = Double.parseDouble(objects[0]); +break; +} +this.loadData(); +this.checkEnables(); +this.jsvp.doRepaint(true); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A"); +Clazz_defineMethod(c$, "done", +function(){ +if (this.jsvp != null && this.$spec != null) this.jsvp.getPanelData().removeDialog(this); +if (this.xyData != null) this.xyData.setState(this.isON); +this.saveDialogPosition(this.getPosXY()); +this.dispose(); +this.jsvp.doRepaint(true); +}); +Clazz_defineMethod(c$, "restoreDialogPosition", +function(panel, posXY){ +if (panel != null) { +if (posXY[0] == -2147483648) { +posXY[0] = 0; +posXY[1] = -20; +}var pt = this.manager.getLocationOnScreen(panel); +var height = panel.getHeight(); +this.loc = Clazz_newIntArray(-1, [Math.max(0, pt[0] + posXY[0]), Math.max(0, pt[1] + height + posXY[1])]); +this.dialog.setIntLocation(this.loc); +}}, "JSV.api.JSVPanel,~A"); +Clazz_defineMethod(c$, "saveDialogPosition", +function(posXY){ +try { +var pt = this.manager.getLocationOnScreen(this.dialog); +posXY[0] += pt[0] - this.loc[0]; +posXY[1] += pt[1] - this.loc[1]; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A"); +Clazz_defineMethod(c$, "getThreasholdText", +function(y){ +if (Double.isNaN(y)) { +var pd = this.jsvp.getPanelData(); +var f = (pd.getSpectrum().isInverted() ? 0.1 : 0.9); +var c = pd.getClickedCoordinate(); +y = (c == null ? (pd.getView().minYOnScale * f + pd.getView().maxYOnScale) * (1 - f) : c.getYVal()); +}var sy = JU.DF.formatDecimalDbl(y, y < 1000 ? 2 : -2); +return " " + sy; +}, "~N"); +Clazz_defineMethod(c$, "checkVisible", +function(){ +return this.vwr.pd().getShowAnnotation(this.type); +}); +Clazz_defineMethod(c$, "getUnitOptions", +function(){ +var key = this.optionKey + "_format"; +var format = this.options.get(key); +if (format == null) this.options.put(key, format = Integer.$valueOf(this.formatOptions[this.unitPtr == null ? 0 : this.unitPtr.intValue()])); +}); +Clazz_defineMethod(c$, "eventFocus", +function(){ +if (this.$spec != null) this.jsvp.getPanelData().jumpToSpectrum(this.$spec); +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +if (this.iRowSelected >= 0) { +this.iRowSelected++; +this.tableCellSelect(-1, -1); +}break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.createData(); +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz_defineMethod(c$, "eventApply", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.createData(); +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +this.applyFromFields(); +}); +Clazz_defineMethod(c$, "eventShowHide", +function(isShow){ +this.isON = isShow; +if (isShow) this.eventApply(); +this.jsvp.doRepaint(true); +this.checkEnables(); +}, "~B"); +Clazz_defineMethod(c$, "clear", +function(){ +this.setState(true); +if (this.xyData != null) { +this.xyData.clear(); +this.applyFromFields(); +}}); +Clazz_defineMethod(c$, "paramsReEnable", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +this.setVisible(true); +this.isON = true; +this.applyFromFields(); +}); +Clazz_defineMethod(c$, "tableCellSelect", +function(iRow, iCol){ +System.out.println(iRow + " jSVDial " + iCol); +if (iRow < 0) { +iRow = Clazz_doubleToInt(this.iRowColSelected / 1000); +iCol = this.iRowColSelected % 1000; +this.iRowColSelected = -1; +}var value = this.tableData[iRow][1]; +var icolrow = iRow * 1000 + iCol; +if (icolrow == this.iRowColSelected) return; +this.iRowColSelected = icolrow; +System.out.println("Setting rc = " + this.iRowColSelected + " " + this.$spec); +this.selectTableRow(this.iRowSelected); +try { +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.callback("SHOWSELECTION", value.toString()); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +try { +switch (iCol) { +case 6: +case 5: +case 4: +var x1 = Double.parseDouble(value); +var x2 = Double.parseDouble(this.tableData[iRow + 3 - iCol][1]); +this.jsvp.getPanelData().setXPointers(this.$spec, x1, this.$spec, x2); +break; +default: +this.jsvp.getPanelData().findX(this.$spec, Double.parseDouble(value)); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.jsvp.getPanelData().findX(this.$spec, 1E100); +} else { +throw e; +} +} +this.jsvp.doRepaint(false); +break; +case JSV.common.Annotation.AType.OverlayLegend: +this.jsvp.getPanelData().setSpectrum(iRow, false); +break; +case JSV.common.Annotation.AType.Views: +break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~N,~N"); +Clazz_defineMethod(c$, "loadData", +function(){ +var data; +var header; +var widths; +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +if (this.xyData == null) this.createData(); +this.iSelected = -1; +data = (this.xyData).getMeasurementListArray(null); +header = this.xyData.getDataHeader(); +widths = Clazz_newIntArray(-1, [40, 65, 65, 50]); +this.createTable(data, header, widths); +break; +case JSV.common.Annotation.AType.Measurements: +if (this.xyData == null) return; +data = this.xyData.getMeasurementListArray(this.dialog.getSelectedItem(this.combo1).toString()); +header = this.xyData.getDataHeader(); +widths = Clazz_newIntArray(-1, [40, 65, 65, 50]); +this.createTable(data, header, widths); +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +if (this.xyData == null) this.createData(); +data = (this.xyData).getMeasurementListArray(null); +header = (this.xyData).getDataHeader(); +widths = Clazz_newIntArray(-1, [40, 65, 50, 50, 50, 50, 50]); +this.createTable(data, header, widths); +this.setTableSelectionEnabled(true); +break; +case JSV.common.Annotation.AType.OverlayLegend: +header = Clazz_newArray(-1, ["No.", "Plot Color", "Title"]); +data = this.vwr.selectedPanel.getPanelData().getOverlayLegendData(); +widths = Clazz_newIntArray(-1, [30, 60, 250]); +this.createTable(data, header, widths); +this.setTableSelectionEnabled(true); +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz_defineMethod(c$, "createData", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.xyData = new JSV.common.IntegralData(this.$spec, this.myParams); +this.iSelected = -1; +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +try { +var thresh = Double.parseDouble(this.dialog.getText(this.txt1)); +this.myParams.peakListThreshold = thresh; +this.myParams.peakListInterpolation = this.dialog.getSelectedItem(this.combo1).toString(); +this.myParams.precision = this.precision; +var md = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.$spec); +md.setPeakList(this.myParams, this.precision, this.jsvp.getPanelData().getView()); +this.xyData = md; +this.loadData(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz_defineMethod(c$, "setPrecision", +function(i){ +this.precision = this.formatOptions[i]; +}, "~N"); +Clazz_defineMethod(c$, "tableSelect", +function(url){ +var isAdjusting = "true".equals(this.getField(url, "adjusting")); +if (isAdjusting) { +this.iColSelected = this.iRowSelected = -1; +System.out.println("adjusting" + url); +return; +}var index = JU.PT.parseInt(this.getField(url, "index")); +switch ("ROW COL ROWCOL".indexOf(this.getField(url, "selector"))) { +case 8: +this.iColSelected = JU.PT.parseInt(this.getField(url, "index2")); +case 0: +this.iRowSelected = index; +System.out.println("r set to " + index); +break; +case 4: +this.iColSelected = index; +System.out.println("c set to " + index); +break; +} +if (this.iColSelected >= 0 && this.iRowSelected >= 0) { +this.tableCellSelect(this.iRowSelected, this.iColSelected); +}}, "~S"); +Clazz_defineMethod(c$, "getField", +function(url, name){ +url += "&"; +var key = "&" + name + "="; +var pt = url.indexOf(key); +return (pt < 0 ? null : url.substring(pt + key.length, url.indexOf("&", pt + 1))); +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.exception"); +Clazz_load(["java.lang.Exception"], "JSV.exception.JSVException", null, function(){ +var c$ = Clazz_declareType(JSV.exception, "JSVException", Exception); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz_declareType(JSV.js2d, "Display", null); +c$.getFullScreenDimensions = Clazz_defineMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +{ +widthHeight[0] = canvas.width; +widthHeight[1] = canvas.height; +}}, "~O,~A"); +c$.hasFocus = Clazz_defineMethod(c$, "hasFocus", +function(canvas){ +return true; +}, "~O"); +c$.requestFocusInWindow = Clazz_defineMethod(c$, "requestFocusInWindow", +function(canvas){ +}, "~O"); +c$.repaint = Clazz_defineMethod(c$, "repaint", +function(canvas){ +}, "~O"); +c$.renderScreenImage = Clazz_defineMethod(c$, "renderScreenImage", +function(viewer, g, size){ +{ +}}, "J.api.PlatformViewer,~O,~O"); +c$.setTransparentCursor = Clazz_defineMethod(c$, "setTransparentCursor", +function(canvas){ +}, "~O"); +c$.setCursor = Clazz_defineMethod(c$, "setCursor", +function(c, canvas){ +}, "~N,~O"); +c$.prompt = Clazz_defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +{ +var s = prompt(label, data); +if (s != null)return s; +}return "null"; +}, "~S,~S,~A,~B"); +c$.convertPointFromScreen = Clazz_defineMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +}, "~O,JU.P3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz_declareType(JSV.js2d, "Image", null); +c$.getWidth = Clazz_defineMethod(c$, "getWidth", +function(canvas){ +{ +return (canvas.imageWidth ? canvas.imageWidth : canvas.width); +}}, "~O"); +c$.getHeight = Clazz_defineMethod(c$, "getHeight", +function(canvas){ +{ +return (canvas.imageHeight ? canvas.imageHeight : canvas.height); +}}, "~O"); +c$.grabPixels = Clazz_defineMethod(c$, "grabPixels", +function(context, width, height){ +var data = null; +{ +if (context._buf32) return context._buf32; // non-canvas internal buffer for image writing +data = context.getImageData(0, 0, width, height).data; +}return JSV.js2d.Image.toIntARGB(data); +}, "~O,~N,~N"); +c$.toIntARGB = Clazz_defineMethod(c$, "toIntARGB", +function(imgData){ +var n = Clazz_doubleToInt(imgData.length / 4); +var iData = Clazz_newIntArray (n, 0); +for (var i = 0, j = 0; i < n; j++) { +iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | 0xFF000000; +} +return iData; +}, "~A"); +c$.fromIntARGB = Clazz_defineMethod(c$, "fromIntARGB", +function(buf32, buf8){ +var n = buf8.length >> 2; +for (var i = 0, j = 0; i < n; i++) { +buf8[j++] = (buf32[i] >> 16) & 0xFF; +buf8[j++] = (buf32[i] >> 8) & 0xFF; +buf8[j++] = buf32[i] & 0xFF; +buf8[j++] = 0xFF; +} +}, "~A,~A"); +c$.getTextPixels = Clazz_defineMethod(c$, "getTextPixels", +function(text, font3d, context, width, height, ascent){ +{ +context.fillStyle = "#000000"; +context.fillRect(0, 0, width, height); +context.fillStyle = "#FFFFFF"; +context.font = font3d.font; +context.fillText(text, 0, ascent); +}return JSV.js2d.Image.grabPixels(context, width, height); +}, "~S,JU.Font,~O,~N,~N,~N"); +c$.allocateRgbImage = Clazz_defineMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, canvas){ +{ +if (canvas == null) +canvas = {width:windowWidth,height:windowHeight}; +canvas.buf32 = pBuffer; +}}, "~N,~N,~A,~N,~B,~O"); +c$.getStaticGraphics = Clazz_defineMethod(c$, "getStaticGraphics", +function(canvas, backgroundTransparent){ +return JSV.js2d.Image.getGraphics(canvas); +}, "~O,~B"); +c$.getGraphics = Clazz_defineMethod(c$, "getGraphics", +function(canvas){ +{ +return canvas.getContext("2d"); +}}, "~O"); +c$.drawImage = Clazz_defineMethod(c$, "drawImage", +function(context, canvas, x, y, width, height){ +{ +this.fromIntARGB(canvas.buf32, canvas.buf8); +context.putImageData(canvas.imgdata,x,y); +}}, "~O,~O,~N,~N,~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["J.api.GenericFileInterface"], "JSV.js2d.JsFile", ["JU.PT", "JSV.common.JSVFileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.fullName = null; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsFile", null, J.api.GenericFileInterface); +Clazz_makeConstructor(c$, +function(name){ +this.name = name.$replace('\\', '/'); +this.fullName = name; +if (!this.fullName.startsWith("/") && JSV.common.JSVFileManager.urlTypeIndex(name) < 0) this.fullName = JSV.common.JSVFileManager.jsDocumentBase + "/" + this.fullName; +this.fullName = JU.PT.rep(this.fullName, "/./", "/"); +name = name.substring(name.lastIndexOf("/") + 1); +}, "~S"); +c$.newFile = Clazz_defineMethod(c$, "newFile", +function(name){ +return new JSV.js2d.JsFile(name); +}, "~S"); +Clazz_overrideMethod(c$, "getParentAsFile", +function(){ +var pt = this.fullName.lastIndexOf("/"); +return (pt < 0 ? null : new JSV.js2d.JsFile(this.fullName.substring(0, pt))); +}); +Clazz_overrideMethod(c$, "getFullPath", +function(){ +return this.fullName; +}); +Clazz_overrideMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_overrideMethod(c$, "isDirectory", +function(){ +return this.fullName.endsWith("/"); +}); +Clazz_overrideMethod(c$, "length", +function(){ +return 0; +}); +c$.getURLContents = Clazz_defineMethod(c$, "getURLContents", +function(url, outputBytes, post){ +try { +var conn = url.openConnection(); +if (outputBytes != null) conn.outputBytes(outputBytes); + else if (post != null) conn.outputString(post); +return conn.getContents(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return e.toString(); +} else { +throw e; +} +} +}, "java.net.URL,~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.api.JSVFileHelper"], "JSV.js2d.JsFileHelper", ["JU.PT", "JSV.common.JSViewer", "JSV.js2d.JsFile"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsFileHelper", null, JSV.api.JSVFileHelper); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "set", +function(viewer){ +this.vwr = viewer; +return this; +}, "JSV.common.JSViewer"); +Clazz_overrideMethod(c$, "getFile", +function(fileName, panelOrFrame, isSave){ +var f = null; +fileName = JU.PT.rep(fileName, "=", "_"); +{ +f = prompt("Enter a file name:", fileName); +}return (f == null ? null : new JSV.js2d.JsFile(f)); +}, "~S,~O,~B"); +Clazz_overrideMethod(c$, "setDirLastExported", +function(name){ +return name; +}, "~S"); +Clazz_overrideMethod(c$, "setFileChooser", +function(pdf){ +}, "JSV.common.ExportType"); +Clazz_overrideMethod(c$, "showFileOpenDialog", +function(panelOrFrame, userData){ +JSV.common.JSViewer.jmolObject.loadFileAsynchronously(this, this.vwr.html5Applet, "?", userData); +return null; +}, "~O,~A"); +Clazz_defineMethod(c$, "setData", +function(fileName, data, userInfo){ +if (fileName == null) return; +if (data == null) { +this.vwr.selectedPanel.showMessage(fileName, "File Open Error"); +return; +}var script = (userInfo == null ? null : ""); +var isAppend = false; +{ +isAppend = userInfo[0]; +script = userInfo[1]; +}this.vwr.si.siOpenDataOrFile( String.instantialize(data), "cache://" + fileName, null, null, -1, -1, isAppend, null, null); +if (script != null) this.vwr.runScript(script); +}, "~S,~O,~A"); +Clazz_overrideMethod(c$, "getUrlFromDialog", +function(info, msg){ +{ +return prompt(info, msg); +}}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz_declareType(JSV.js2d, "JsFont", null); +c$.newFont = Clazz_defineMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize, type){ +fontFace = (fontFace.equals("Monospaced") ? "Courier" : fontFace.startsWith("Sans") ? "Sans-Serif" : "Serif"); +return (isBold ? "bold " : "") + (isItalic ? "italic " : "") + fontSize + type + " " + fontFace; +}, "~S,~B,~B,~N,~S"); +c$.getFontMetrics = Clazz_defineMethod(c$, "getFontMetrics", +function(font, context){ +{ +if (context.font != font.font) { +context.font = font.font; +font.font = context.font; +context._fontAscent = Math.ceil(font.fontSize); //pt, not px +// the descent is actually (px - pt) +// but I know of no way of getting access to the drawn height +context._fontDescent = Math.ceil(font.fontSize * 0.25);//approx +} +}return context; +}, "JU.Font,~O"); +c$.getAscent = Clazz_defineMethod(c$, "getAscent", +function(context){ +{ +return Math.ceil(context._fontAscent); +}}, "~O"); +c$.getDescent = Clazz_defineMethod(c$, "getDescent", +function(context){ +{ +return Math.ceil(context._fontDescent); +}}, "~O"); +c$.stringWidth = Clazz_defineMethod(c$, "stringWidth", +function(font, text){ +{ +font.fontMetrics.font = font.font; +return Math.ceil(font.fontMetrics.measureText(text).width); +}}, "JU.Font,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["J.api.GenericGraphics"], "JSV.js2d.JsG2D", ["JU.CU", "JSV.common.JSViewer", "JS.Color"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.windowWidth = 0; +this.windowHeight = 0; +this.isShifted = false; +this.inPath = false; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsG2D", null, J.api.GenericGraphics); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "getColor4", +function(r, g, b, a){ +return JS.Color.get4(r, g, b, a); +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "getColor3", +function(r, g, b){ +return JS.Color.get3(r, g, b); +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "getColor1", +function(rgb){ +return JS.Color.get1(rgb); +}, "~N"); +Clazz_overrideMethod(c$, "newGrayScaleImage", +function(context, image, width, height, grayBuffer){ +return JSV.common.JSViewer.jmolObject.newGrayScaleImage(context, image, width, height, grayBuffer); +}, "~O,~O,~N,~N,~A"); +Clazz_overrideMethod(c$, "drawGrayScaleImage", +function(g, image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1){ +var iw; +var ih; +{ +iw = image.w; +ih = image.h; +}var dw = (destX1 - destX0 + 1); +var dh = (destY1 - destY0 + 1); +var sw = (srcX1 - srcX0 + 1); +var sh = (srcY1 - srcY0 + 1); +var x = -srcX0 * dw / sw; +var w = iw * dw / sw; +var y = -srcY0 * dh / sh; +var h = ih * dh / sh; +{ +image.width = w; +image.height = h; +var div = image.div; +var layer = image.layer; +layer.style.left = destX0 + "px"; +layer.style.top = destY0 + "px"; +layer.style.width = dw + "px"; +layer.style.height = dh+ "px"; +div.style.left= x + "px"; +div.style.top = y + "px"; +div.style.width = w + "px"; +div.style.height = h + "px"; +}}, "~O,~O,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawLine", +function(g, x0, y0, x1, y1){ +var inPath = this.inPath; +{ +if (!inPath) g.beginPath(); +g.moveTo(x0, y0); +g.lineTo(x1, y1); +if (!inPath) g.stroke(); +}}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawCircle", +function(g, x, y, diameter){ +{ +var r = diameter/2; +g.beginPath(); +g.arc(x + r, y + r, r, 0, 2 * Math.PI, false); +g.stroke(); +}}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.doPoly(g, ayPoints, axPoints, nPoints, false); +}, "~O,~A,~A,~N"); +Clazz_defineMethod(c$, "doPoly", +function(g, axPoints, ayPoints, nPoints, doFill){ +{ +g.beginPath(); +g.moveTo(axPoints[0], ayPoints[0]); +for (var i = 1; i < nPoints; i++) +g.lineTo(axPoints[i], ayPoints[i]); +if (doFill) +g.fill(); +else +g.stroke(); +}}, "~O,~A,~A,~N,~B"); +Clazz_overrideMethod(c$, "drawRect", +function(g, x, y, width, height){ +{ +g.beginPath(); +g.rect(x ,y, width, height); +g.stroke(); +}}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawString", +function(g, s, x, y){ +{ +g.fillText(s,x,y); +}}, "~O,~S,~N,~N"); +Clazz_overrideMethod(c$, "drawStringRotated", +function(g, s, x, y, angle){ +}, "~O,~S,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillBackground", +function(g, bgcolor){ +if (bgcolor == null) { +{ +if (!this.isShifted) { +g.translate(-0.5, -0.5); +this.isShifted = true; +} +g.clearRect(0,0, this.windowWidth, this.windowHeight); +return; +}}this.setGraphicsColor(g, bgcolor); +this.fillRect(g, 0, 0, this.windowWidth, this.windowHeight); +}, "~O,javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "fillCircle", +function(g, x, y, diameter){ +{ +var r = diameter/2; +g.beginPath(); +g.arc(x + r, y + r, r, 0, 2 * Math.PI, false); +g.fill(); +}}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.doPoly(g, ayPoints, axPoints, nPoints, true); +}, "~O,~A,~A,~N"); +Clazz_overrideMethod(c$, "fillRect", +function(g, x, y, width, height){ +{ +g.fillRect(x, y, width, height); +}}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "setGraphicsColor", +function(g, c){ +var s = JU.CU.toCSSString(c); +{ +g.fillStyle = g.strokeStyle = s; +}}, "~O,javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "setFont", +function(g, font){ +var s = font.getInfo(); +var pt = s.indexOf(" "); +s = s.substring(0, pt) + "px" + s.substring(pt); +{ +g.font = s; +}return font; +}, "~O,JU.Font"); +Clazz_overrideMethod(c$, "setStrokeBold", +function(g, tf){ +{ +g.lineWidth = (tf ? 2 : 1); +}}, "~O,~B"); +Clazz_overrideMethod(c$, "setWindowParameters", +function(width, height){ +this.windowWidth = width; +this.windowHeight = height; +}, "~N,~N"); +Clazz_overrideMethod(c$, "translateScale", +function(g, x, y, scale){ +}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "canDoLineTo", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "doStroke", +function(g, isBegin){ +this.inPath = isBegin; +{ +if (isBegin) { +g.beginPath(); +} else { +g.stroke(); +} +}}, "~O,~B"); +Clazz_overrideMethod(c$, "lineTo", +function(g, x2, y2){ +{ +g.lineTo(x2, y2); +}}, "~O,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.api.JSVPanel"], "JSV.js2d.JsPanel", ["JSV.common.JSViewer", "$.PanelData", "JU.Font", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.apiPlatform = null; +this.pd = null; +this.mouse = null; +this.vwr = null; +this.name = null; +this.bgcolor = null; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsPanel", null, JSV.api.JSVPanel); +Clazz_makeConstructor(c$, +function(viewer, withPd){ +this.vwr = viewer; +this.pd = (withPd ? new JSV.common.PanelData(this, viewer) : null); +this.apiPlatform = viewer.apiPlatform; +this.mouse = this.apiPlatform.getMouseManager(0, this); +}, "JSV.common.JSViewer,~B"); +Clazz_overrideMethod(c$, "getApiPlatform", +function(){ +return this.apiPlatform; +}); +Clazz_overrideMethod(c$, "getPanelData", +function(){ +return this.pd; +}); +c$.getEmptyPanel = Clazz_defineMethod(c$, "getEmptyPanel", +function(viewer){ +var p = new JSV.js2d.JsPanel(viewer, false); +p.pd = null; +return p; +}, "JSV.common.JSViewer"); +c$.getPanelMany = Clazz_defineMethod(c$, "getPanelMany", +function(viewer, spectra){ +var p = new JSV.js2d.JsPanel(viewer, true); +p.pd.initMany(spectra, viewer.initialStartIndex, viewer.initialEndIndex); +return p; +}, "JSV.common.JSViewer,JU.Lst"); +Clazz_overrideMethod(c$, "getTitle", +function(){ +return this.pd.getTitle(); +}); +Clazz_overrideMethod(c$, "dispose", +function(){ +if (this.pd != null) this.pd.dispose(); +this.pd = null; +this.mouse.dispose(); +this.mouse = null; +}); +Clazz_overrideMethod(c$, "setTitle", +function(title){ +this.pd.title = title; +this.name = title; +}, "~S"); +Clazz_defineMethod(c$, "setColorOrFont", +function(ds, st){ +this.pd.setColorOrFont(ds, st); +}, "JSV.common.ColorParameters,JSV.common.ScriptToken"); +Clazz_overrideMethod(c$, "setBackgroundColor", +function(color){ +this.bgcolor = color; +}, "javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "getInput", +function(message, title, sval){ +var ret = null; +{ +ret = prompt(message, sval); +}this.getFocusNow(true); +return ret; +}, "~S,~S,~S"); +Clazz_overrideMethod(c$, "showMessage", +function(msg, title){ +JU.Logger.info(msg); +var applet = this.vwr.html5Applet; +{ +applet._showStatus(msg, title); +}this.getFocusNow(true); +}, "~S,~S"); +Clazz_overrideMethod(c$, "getFocusNow", +function(asThread){ +if (this.pd != null) this.pd.dialogsToFront(null); +}, "~B"); +Clazz_overrideMethod(c$, "getFontFaceID", +function(name){ +return JU.Font.getFontFaceID("SansSerif"); +}, "~S"); +Clazz_overrideMethod(c$, "doRepaint", +function(andTaintAll){ +if (this.pd == null) return; +if (andTaintAll) this.pd.setTaintedAll(); +if (!this.pd.isPrinting) this.vwr.requestRepaint(); +}, "~B"); +Clazz_overrideMethod(c$, "paintComponent", +function(context){ +var contextFront = null; +var contextRear = null; +{ +contextFront = context.canvas.frontLayer.getContext("2d"); +contextRear = context; +}if (this.vwr == null) return; +if (this.pd == null) { +if (this.bgcolor == null) this.bgcolor = this.vwr.g2d.getColor1(-1); +this.vwr.g2d.fillBackground(context, this.bgcolor); +this.vwr.g2d.fillBackground(contextRear, this.bgcolor); +this.vwr.g2d.fillBackground(contextFront, this.bgcolor); +return; +}if (this.pd.graphSets == null || this.pd.isPrinting) return; +this.pd.g2d = this.pd.g2d0; +this.pd.drawGraph(context, contextFront, contextRear, this.getWidth(), this.getHeight(), false); +this.vwr.repaintDone(); +}, "~O"); +Clazz_overrideMethod(c$, "printPanel", +function(pl, os, title){ +pl.title = title; +pl.date = this.apiPlatform.getDateFormat("8824"); +this.pd.setPrint(pl, "Helvetica"); +try { +(JSV.common.JSViewer.getInterface("JSV.common.PDFWriter")).createPdfDocument(this, pl, os); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.showMessage(ex.toString(), "creating PDF"); +} else { +throw ex; +} +} finally { +this.pd.setPrint(null, null); +} +}, "JSV.common.PrintLayout,java.io.OutputStream,~S"); +Clazz_overrideMethod(c$, "saveImage", +function(type, file, out){ +var fname = file.getName(); +if (out != null) out.cancel(); +JSV.common.JSViewer.jmolObject.saveImage(this.vwr.html5Applet, "png", fname); +return "OK"; +}, "~S,J.api.GenericFileInterface,JU.OC"); +Clazz_overrideMethod(c$, "hasFocus", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "repaint", +function(){ +}); +Clazz_overrideMethod(c$, "setToolTipText", +function(s){ +var x = this.pd.mouseX; +var y = this.pd.mouseY; +var applet = this.vwr.html5Applet; +{ +applet._showTooltip && applet._showTooltip(s, x, y); +}}, "~S"); +Clazz_overrideMethod(c$, "getHeight", +function(){ +return this.vwr.getHeight(); +}); +Clazz_overrideMethod(c$, "getWidth", +function(){ +return this.vwr.getWidth(); +}); +Clazz_overrideMethod(c$, "isEnabled", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "isFocusable", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "isVisible", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "setEnabled", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "setFocusable", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +return (this.pd == null ? "" : "" + this.pd.getSpectrumAt(0)); +}); +Clazz_overrideMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.mouse != null && this.mouse.processEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +if (this.mouse != null) this.mouse.processTwoPointGesture(touches); +}, "~A"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +if (this.mouse != null) this.mouse.processKeyEvent(event); +}, "~O"); +Clazz_overrideMethod(c$, "showMenu", +function(x, y){ +this.vwr.showMenu(x, y); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.common.ColorParameters"], "JSV.js2d.JsParameters", ["JS.Color"], function(){ +var c$ = Clazz_declareType(JSV.js2d, "JsParameters", JSV.common.ColorParameters); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.js2d.JsParameters, []); +}); +Clazz_overrideMethod(c$, "isValidFontName", +function(name){ +return true; +}, "~S"); +Clazz_overrideMethod(c$, "getColor1", +function(rgb){ +return JS.Color.get1(rgb); +}, "~N"); +Clazz_overrideMethod(c$, "getColor3", +function(r, g, b){ +return JS.Color.get3(r, g, b); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "copy", +function(newName){ +return ( new JSV.js2d.JsParameters().setName(newName)).setElementColors(this); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["J.api.GenericPlatform"], "JSV.js2d.JsPlatform", ["java.net.URL", "JU.AjaxURLStreamHandlerFactory", "$.Rdr", "JSV.app.GenericMouse", "JSV.js2d.Display", "$.Image", "$.JsFile", "$.JsFont"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.canvas = null; +this.viewer = null; +this.context = null; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsPlatform", null, J.api.GenericPlatform); +Clazz_overrideMethod(c$, "setViewer", +function(viewer, canvas){ +var context = ""; +this.viewer = viewer; +this.canvas = canvas; +{ +if (canvas != null) { +context = canvas.getContext("2d"); +canvas.imgdata = context.getImageData(0, 0, canvas.width, canvas.height); +canvas.buf8 = canvas.imgdata.data; +} +}if (context !== "") this.context = context; +try { +java.net.URL.setURLStreamHandlerFactory( new JU.AjaxURLStreamHandlerFactory()); +} catch (e) { +} +}, "J.api.PlatformViewer,~O"); +Clazz_overrideMethod(c$, "isSingleThreaded", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "getJsObjectInfo", +function(jsObject, method, args){ +{ +return (method == null ? null : method == "localName" ? jsObject[0]["nodeName"] : args == null ? jsObject[0][method] : jsObject[0][method](args[0])); +}}, "~A,~S,~A"); +Clazz_overrideMethod(c$, "isHeadless", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "getMouseManager", +function(privateKey, jsvp){ +return new JSV.app.GenericMouse(jsvp); +}, "~N,~O"); +Clazz_overrideMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +JSV.js2d.Display.convertPointFromScreen(canvas, ptTemp); +}, "~O,JU.P3"); +Clazz_overrideMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +JSV.js2d.Display.getFullScreenDimensions(canvas, widthHeight); +}, "~O,~A"); +Clazz_overrideMethod(c$, "getMenuPopup", +function(menuStructure, type){ +return null; +}, "~S,~S"); +Clazz_overrideMethod(c$, "hasFocus", +function(canvas){ +return JSV.js2d.Display.hasFocus(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "prompt", +function(label, data, list, asButtons){ +return JSV.js2d.Display.prompt(label, data, list, asButtons); +}, "~S,~S,~A,~B"); +Clazz_overrideMethod(c$, "renderScreenImage", +function(context, size){ +JSV.js2d.Display.renderScreenImage(this.viewer, context, size); +}, "~O,~O"); +Clazz_overrideMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +JSV.js2d.Image.drawImage(context, canvas, x, y, width, height); +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz_overrideMethod(c$, "requestFocusInWindow", +function(canvas){ +JSV.js2d.Display.requestFocusInWindow(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "repaint", +function(canvas){ +JSV.js2d.Display.repaint(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "setTransparentCursor", +function(canvas){ +JSV.js2d.Display.setTransparentCursor(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "setCursor", +function(c, canvas){ +JSV.js2d.Display.setCursor(c, canvas); +}, "~N,~O"); +Clazz_overrideMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, isImageWrite){ +return JSV.js2d.Image.allocateRgbImage(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, (isImageWrite ? null : this.canvas)); +}, "~N,~N,~A,~N,~B,~B"); +Clazz_overrideMethod(c$, "notifyEndOfRendering", +function(){ +}); +Clazz_overrideMethod(c$, "createImage", +function(data){ +return null; +}, "~O"); +Clazz_overrideMethod(c$, "disposeGraphics", +function(gOffscreen){ +}, "~O"); +Clazz_overrideMethod(c$, "grabPixels", +function(canvas, width, height, pixels){ +{ +if (canvas.image && (width != canvas.width || height != canvas.height)) +Jmol._setCanvasImage(canvas, width, height); +if (canvas.buf32) return canvas.buf32; +}var buf = JSV.js2d.Image.grabPixels(JSV.js2d.Image.getGraphics(canvas), width, height); +{ +canvas.buf32 = buf; +}return buf; +}, "~O,~N,~N,~A"); +Clazz_overrideMethod(c$, "drawImageToBuffer", +function(gOffscreen, imageOffscreen, canvas, width, height, bgcolor){ +return this.grabPixels(canvas, width, height, null); +}, "~O,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "getTextPixels", +function(text, font3d, context, image, width, height, ascent){ +return JSV.js2d.Image.getTextPixels(text, font3d, context, width, height, ascent); +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "flushImage", +function(imagePixelBuffer){ +}, "~O"); +Clazz_overrideMethod(c$, "getGraphics", +function(canvas){ +return (canvas == null ? this.context : (this.context = JSV.js2d.Image.getGraphics(this.canvas = canvas))); +}, "~O"); +Clazz_overrideMethod(c$, "getImageHeight", +function(canvas){ +return (canvas == null ? -1 : JSV.js2d.Image.getHeight(canvas)); +}, "~O"); +Clazz_overrideMethod(c$, "getImageWidth", +function(canvas){ +return (canvas == null ? -1 : JSV.js2d.Image.getWidth(canvas)); +}, "~O"); +Clazz_overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return JSV.js2d.Image.getStaticGraphics(image, backgroundTransparent); +}, "~O,~B"); +Clazz_overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +{ +if (self.Jmol && Jmol._getHiddenCanvas) +return Jmol._getHiddenCanvas(this.vwr.html5Applet, "stereoImage", w, h); +}return null; +}, "~O,~N,~N"); +Clazz_overrideMethod(c$, "newOffScreenImage", +function(w, h){ +{ +if (self.Jmol && Jmol._getHiddenCanvas) +return Jmol._getHiddenCanvas(this.vwr.html5Applet, "textImage", w, h); +}return null; +}, "~N,~N"); +Clazz_overrideMethod(c$, "waitForDisplay", +function(echoNameAndPath, zipBytes){ +return false; +}, "~O,~O"); +Clazz_overrideMethod(c$, "fontStringWidth", +function(font, text){ +return JSV.js2d.JsFont.stringWidth(font, text); +}, "JU.Font,~S"); +Clazz_overrideMethod(c$, "getFontAscent", +function(context){ +return JSV.js2d.JsFont.getAscent(context); +}, "~O"); +Clazz_overrideMethod(c$, "getFontDescent", +function(context){ +return JSV.js2d.JsFont.getDescent(context); +}, "~O"); +Clazz_overrideMethod(c$, "getFontMetrics", +function(font, context){ +return JSV.js2d.JsFont.getFontMetrics(font, context); +}, "JU.Font,~O"); +Clazz_overrideMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize){ +return JSV.js2d.JsFont.newFont(fontFace, isBold, isItalic, fontSize, "px"); +}, "~S,~B,~B,~N"); +Clazz_overrideMethod(c$, "getDateFormat", +function(isoType){ +{ +if (isoType == null) { +} else if (isoType.indexOf("8824") >= 0) { +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + d.getMonth(); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} else if (isoType.indexOf("8601") >= 0){ +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + d.getMonth(); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} +return ("" + (new Date())).split(" (")[0]; +}}, "~S"); +Clazz_overrideMethod(c$, "newFile", +function(name){ +return new JSV.js2d.JsFile(name); +}, "~S"); +Clazz_overrideMethod(c$, "getBufferedFileInputStream", +function(name){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "getURLContents", +function(url, outputBytes, post, asString){ +var ret = JSV.js2d.JsFile.getURLContents(url, outputBytes, post); +try { +return (!asString ? ret : (typeof(ret)=='string') ? ret : Clazz_instanceOf(ret,"JU.SB") ? (ret).toString() : Clazz_instanceOf(ret,Array) ? String.instantialize(ret) : String.instantialize(JU.Rdr.getStreamAsBytes(ret, null))); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return "" + e; +} else { +throw e; +} +} +}, "java.net.URL,~A,~S,~B"); +Clazz_overrideMethod(c$, "getLocalUrl", +function(fileName){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "getImageDialog", +function(title, imageMap){ +return null; +}, "~S,java.util.Map"); +Clazz_overrideMethod(c$, "forceAsyncLoad", +function(filename){ +return false; +}, "~S"); +Clazz_overrideMethod(c$, "getInChI", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "confirm", +function(msg, msgNo){ +var ok = false; +if (ok) return 0; +if (msgNo != null) ok = false; +return (ok ? 1 : 2); +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.api.JSVMainPanel"], "JSV.js2d.JsMainPanel", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.selectedPanel = null; +this.currentPanelIndex = 0; +this.title = null; +this.visible = false; +this.focusable = false; +this.enabled = false; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsMainPanel", null, JSV.api.JSVMainPanel); +Clazz_overrideMethod(c$, "getCurrentPanelIndex", +function(){ +return this.currentPanelIndex; +}); +Clazz_overrideMethod(c$, "dispose", +function(){ +}); +Clazz_overrideMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz_overrideMethod(c$, "setTitle", +function(title){ +this.title = title; +}, "~S"); +Clazz_overrideMethod(c$, "setSelectedPanel", +function(viewer, jsvp, panelNodes){ +if (jsvp !== this.selectedPanel) this.selectedPanel = jsvp; +var i = viewer.selectPanel(jsvp, panelNodes); +if (i >= 0) this.currentPanelIndex = i; +this.visible = true; +}, "JSV.common.JSViewer,JSV.api.JSVPanel,JU.Lst"); +Clazz_defineMethod(c$, "getHeight", +function(){ +return (this.selectedPanel == null ? 0 : this.selectedPanel.getHeight()); +}); +Clazz_defineMethod(c$, "getWidth", +function(){ +return (this.selectedPanel == null ? 0 : this.selectedPanel.getWidth()); +}); +Clazz_overrideMethod(c$, "isEnabled", +function(){ +return this.enabled; +}); +Clazz_overrideMethod(c$, "isFocusable", +function(){ +return this.focusable; +}); +Clazz_overrideMethod(c$, "isVisible", +function(){ +return this.visible; +}); +Clazz_overrideMethod(c$, "setEnabled", +function(b){ +this.enabled = b; +}, "~B"); +Clazz_overrideMethod(c$, "setFocusable", +function(b){ +this.focusable = b; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["JSV.source.JDXHeader", "java.util.Hashtable"], "JSV.source.JDXDataObject", ["JU.DF", "$.PT", "JSV.common.Annotation", "$.Coordinate", "JSV.exception.JSVException", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sourceID = ""; +this.isSimulation = false; +this.blockID = 0; +this.filePath = null; +this.filePathForwardSlash = null; +this.inlineData = null; +this.fileShiftRef = 1.7976931348623157E308; +this.fileShiftRefType = -1; +this.fileShiftRefDataPt = -1; +this.minX = NaN; +this.minY = NaN; +this.maxX = NaN; +this.maxY = NaN; +this.deltaX = NaN; +this.xyCoords = null; +this.continuous = false; +this.$isHZtoPPM = false; +this.xIncreases = true; +this.fileFirstX = 1.7976931348623157E308; +this.fileLastX = 1.7976931348623157E308; +this.fileNPoints = -1; +this.xFactor = 1.7976931348623157E308; +this.yFactor = 1.7976931348623157E308; +this.nucleusX = null; +this.nucleusY = "?"; +this.freq2dX = NaN; +this.freq2dY = NaN; +this.y2DUnits = ""; +this.parent = null; +this.xUnits = ""; +this.yUnits = ""; +this.xLabel = null; +this.yLabel = null; +this.varName = ""; +this.observedNucl = ""; +this.observedFreq = 1.7976931348623157E308; +this.numDim = 1; +this.nH = 0; +this.y2D = NaN; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXDataObject", JSV.source.JDXHeader); +Clazz_defineMethod(c$, "setInlineData", +function(data){ +this.inlineData = data; +}, "~S"); +Clazz_defineMethod(c$, "getInlineData", +function(){ +return this.inlineData; +}); +Clazz_defineMethod(c$, "setFilePath", +function(filePath){ +if (filePath != null) this.filePathForwardSlash = (this.filePath = filePath.trim()).$replace('\\', '/'); +}, "~S"); +Clazz_defineMethod(c$, "getFilePath", +function(){ +return this.filePath; +}); +Clazz_defineMethod(c$, "getFilePathForwardSlash", +function(){ +return this.filePathForwardSlash; +}); +Clazz_defineMethod(c$, "setBlockID", +function(id){ +this.blockID = id; +}, "~N"); +Clazz_defineMethod(c$, "checkJDXRequiredTokens", +function(){ +var missingTag = (this.fileFirstX == 1.7976931348623157E308 ? "##FIRSTX" : this.fileLastX == 1.7976931348623157E308 ? "##LASTX" : this.fileNPoints == -1 ? "##NPOINTS" : this.xFactor == 1.7976931348623157E308 ? "##XFACTOR" : this.yFactor == 1.7976931348623157E308 ? "##YFACTOR" : null); +if (missingTag != null) throw new JSV.exception.JSVException("Error Reading Data Set: " + missingTag + " not found"); +}); +Clazz_defineMethod(c$, "setXFactor", +function(xFactor){ +this.xFactor = xFactor; +}, "~N"); +Clazz_defineMethod(c$, "getXFactor", +function(){ +return this.xFactor; +}); +Clazz_defineMethod(c$, "setYFactor", +function(yFactor){ +this.yFactor = yFactor; +}, "~N"); +Clazz_defineMethod(c$, "getYFactor", +function(){ +return this.yFactor; +}); +Clazz_defineMethod(c$, "setVarName", +function(name){ +this.varName = name; +}, "~S"); +Clazz_defineMethod(c$, "isImaginary", +function(){ +return this.varName.contains("IMAG"); +}); +Clazz_defineMethod(c$, "setXUnits", +function(xUnits){ +this.xUnits = xUnits; +}, "~S"); +Clazz_defineMethod(c$, "getXUnits", +function(){ +return this.xUnits; +}); +Clazz_defineMethod(c$, "setYUnits", +function(yUnits){ +if (yUnits.equals("PPM")) yUnits = "ARBITRARY UNITS"; +this.yUnits = yUnits; +}, "~S"); +Clazz_defineMethod(c$, "getYUnits", +function(){ +return this.yUnits; +}); +Clazz_defineMethod(c$, "setXLabel", +function(value){ +this.xLabel = value; +}, "~S"); +Clazz_defineMethod(c$, "setYLabel", +function(value){ +this.yLabel = value; +}, "~S"); +Clazz_defineMethod(c$, "setObservedNucleus", +function(value){ +this.observedNucl = value; +if (this.is1D()) this.parent.nucleusX = this.nucleusX = this.fixNucleus(value); +}, "~S"); +Clazz_defineMethod(c$, "getObservedNucleus", +function(){ +return this.observedNucl; +}); +Clazz_defineMethod(c$, "setObservedFreq", +function(observedFreq){ +this.observedFreq = observedFreq; +}, "~N"); +Clazz_defineMethod(c$, "getObservedFreq", +function(){ +return this.observedFreq; +}); +Clazz_defineMethod(c$, "setHydrogenCount", +function(nH){ +this.nH = nH; +}, "~N"); +Clazz_defineMethod(c$, "getHydrogenCount", +function(){ +return this.nH; +}); +Clazz_defineMethod(c$, "is1D", +function(){ +return this.numDim == 1; +}); +Clazz_defineMethod(c$, "getNumDim", +function(){ +return this.numDim; +}); +Clazz_defineMethod(c$, "setNumDim", +function(n){ +this.numDim = n; +}, "~N"); +Clazz_defineMethod(c$, "setY2D", +function(d){ +this.y2D = d; +}, "~N"); +Clazz_defineMethod(c$, "getY2D", +function(){ +return this.y2D; +}); +Clazz_defineMethod(c$, "setY2DUnits", +function(units){ +this.y2DUnits = units; +}, "~S"); +Clazz_defineMethod(c$, "getY2DPPM", +function(){ +var d = this.y2D; +if (this.y2DUnits.equals("HZ")) d /= this.freq2dY; +return d; +}); +Clazz_defineMethod(c$, "setNucleusAndFreq", +function(nuc, isX){ +nuc = this.fixNucleus(nuc); +if (isX) this.nucleusX = nuc; + else this.nucleusY = nuc; +var freq; +if (this.observedNucl.indexOf(nuc) >= 0) { +freq = this.observedFreq; +} else { +var g1 = JSV.source.JDXDataObject.getGyromagneticRatio(this.fixNucleus(this.observedNucl)); +var g2 = JSV.source.JDXDataObject.getGyromagneticRatio(nuc); +freq = this.observedFreq * g2 / g1; +}if (isX) this.freq2dX = freq; + else this.freq2dY = freq; +JU.Logger.info("Freq for " + nuc + " = " + freq); +}, "~S,~B"); +Clazz_defineMethod(c$, "fixNucleus", +function(nuc){ +return JU.PT.rep(JU.PT.trim(nuc, "[]^<>"), "NUC_", ""); +}, "~S"); +c$.getNominalSpecFreq = Clazz_defineMethod(c$, "getNominalSpecFreq", +function(nuc, freq){ +var d = freq * JSV.source.JDXDataObject.getGyromagneticRatio("1H") / JSV.source.JDXDataObject.getGyromagneticRatio(nuc); +var century = Math.round(d / 100) * 100; +return (Double.isNaN(d) ? -1 : Math.abs(d - century) < 2 ? century : Math.round(d)); +}, "~S,~N"); +c$.getGyromagneticRatio = Clazz_defineMethod(c$, "getGyromagneticRatio", +function(nuc){ +var v = null; +try { +v = JSV.source.JDXDataObject.gyroMap.get(nuc); +if (v != null) return v.doubleValue(); +var pt = 0; +while (pt < nuc.length && Character.isDigit(nuc.charAt(pt))) pt++; + +v = JSV.source.JDXDataObject.gyroMap.get(nuc.substring(0, pt)); +if (v != null) JSV.source.JDXDataObject.gyroMap.put(nuc, v); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return (v == null ? NaN : v.doubleValue()); +}, "~S"); +Clazz_defineMethod(c$, "isTransmittance", +function(){ +var s = this.yUnits.toLowerCase(); +return (s.equals("transmittance") || s.contains("trans") || s.equals("t")); +}); +Clazz_defineMethod(c$, "isAbsorbance", +function(){ +var s = this.yUnits.toLowerCase(); +return (s.equals("absorbance") || s.contains("abs") || s.equals("a")); +}); +Clazz_defineMethod(c$, "canSaveAsJDX", +function(){ +return this.getDataClass().equals("XYDATA"); +}); +Clazz_defineMethod(c$, "canIntegrate", +function(){ +return (this.continuous && (this.isHNMR() || this.isGC()) && this.is1D()); +}); +Clazz_defineMethod(c$, "isAutoOverlayFromJmolClick", +function(){ +return (this.isGC()); +}); +Clazz_defineMethod(c$, "isGC", +function(){ +return this.dataType.startsWith("GC") || this.dataType.startsWith("GAS"); +}); +Clazz_defineMethod(c$, "isMS", +function(){ +return this.dataType.startsWith("MASS") || this.dataType.startsWith("MS"); +}); +Clazz_defineMethod(c$, "isStackable", +function(){ +return !this.isMS(); +}); +Clazz_defineMethod(c$, "isScalable", +function(){ +return true; +}); +Clazz_defineMethod(c$, "getYRef", +function(){ +return (!this.isTransmittance() ? 0.0 : JSV.common.Coordinate.getMaxY(this.xyCoords, 0, this.xyCoords.length - 1) < 2 ? 1.0 : 100.0); +}); +Clazz_defineMethod(c$, "isInverted", +function(){ +return this.isTransmittance(); +}); +Clazz_defineMethod(c$, "canConvertTransAbs", +function(){ +return (this.continuous && (this.yUnits.toLowerCase().contains("abs")) || this.yUnits.toLowerCase().contains("trans")); +}); +Clazz_defineMethod(c$, "canShowSolutionColor", +function(){ +return (this.isContinuous() && this.canConvertTransAbs() && (this.xUnits.toLowerCase().contains("nanometer") || this.xUnits.equalsIgnoreCase("nm")) && this.getFirstX() < 401 && this.getLastX() > 699 && this.xyCoords.length >= 30); +}); +Clazz_defineMethod(c$, "isHZtoPPM", +function(){ +return this.$isHZtoPPM; +}); +Clazz_defineMethod(c$, "setHZtoPPM", +function(val){ +this.$isHZtoPPM = val; +}, "~B"); +Clazz_defineMethod(c$, "setIncreasing", +function(val){ +this.xIncreases = val; +}, "~B"); +Clazz_defineMethod(c$, "isXIncreasing", +function(){ +return this.xIncreases; +}); +Clazz_defineMethod(c$, "shouldDisplayXAxisIncreasing", +function(){ +var dt = this.dataType.toUpperCase(); +var xu = this.xUnits.toUpperCase(); +if (dt.contains("NMR") && !dt.contains("FID")) { +return false; +} else if (dt.contains("LINK") && xu.contains("CM")) { +return false; +} else if (dt.startsWith("IR") || dt.contains("INFRA") && xu.contains("CM")) { +return false; +} else if (dt.contains("RAMAN") && xu.contains("CM")) { +return false; +} else if (dt.contains("VIS") && xu.contains("NANOMETERS")) { +return true; +}return this.xIncreases; +}); +Clazz_defineMethod(c$, "setContinuous", +function(val){ +this.continuous = val; +}, "~B"); +Clazz_defineMethod(c$, "isContinuous", +function(){ +return this.continuous; +}); +Clazz_defineMethod(c$, "getHeaderRowDataAsArray", +function(){ +var n = 8; +if (this.observedFreq != 1.7976931348623157E308) n++; +if (this.observedNucl !== "") n++; +var rowData = this.getHeaderRowDataAsArray(true, n); +var i = rowData.length - n; +if (this.observedFreq != 1.7976931348623157E308) rowData[i++] = Clazz_newArray(-1, ["##.OBSERVE FREQUENCY", "" + this.observedFreq]); +if (this.observedNucl !== "") rowData[i++] = Clazz_newArray(-1, ["##.OBSERVE NUCLEUS", this.observedNucl]); +rowData[i++] = Clazz_newArray(-1, ["##XUNITS", this.$isHZtoPPM ? "HZ" : this.xUnits]); +rowData[i++] = Clazz_newArray(-1, ["##YUNITS", this.yUnits]); +var x = (this.xIncreases ? this.getFirstX() : this.getLastX()); +rowData[i++] = Clazz_newArray(-1, ["##FIRSTX", String.valueOf(this.isHZtoPPM() ? x * this.observedFreq : x)]); +x = (this.xIncreases ? this.getLastX() : this.getFirstX()); +rowData[i++] = Clazz_newArray(-1, ["##FIRSTY", String.valueOf(this.xIncreases ? this.getFirstY() : this.getLastY())]); +rowData[i++] = Clazz_newArray(-1, ["##LASTX", String.valueOf(this.isHZtoPPM() ? x * this.observedFreq : x)]); +rowData[i++] = Clazz_newArray(-1, ["##XFACTOR", String.valueOf(this.getXFactor())]); +rowData[i++] = Clazz_newArray(-1, ["##YFACTOR", String.valueOf(this.getYFactor())]); +rowData[i++] = Clazz_newArray(-1, ["##NPOINTS", String.valueOf(this.xyCoords.length)]); +return rowData; +}); +Clazz_defineMethod(c$, "getDefaultUnitPrecision", +function(){ +return 2; +}); +Clazz_defineMethod(c$, "setMeasurementText", +function(m){ +var dx = m.getValue(); +if (Double.isNaN(dx)) return ""; +var precision = 1; +var units = ""; +if (this.isNMR()) { +if (this.is1D()) { +var isIntegral = (Clazz_instanceOf(m,"JSV.common.Integral")); +if (this.isHNMR() || isIntegral) { +if (!isIntegral) { +dx *= this.observedFreq; +units = " Hz"; +}} else { +units = " ppm"; +precision = 2; +}} else { +return ""; +}}return (dx < 0.1 ? "" : JU.DF.formatDecimalDbl(dx, precision) + units); +}, "JSV.common.Measurement"); +Clazz_defineMethod(c$, "isNMR", +function(){ +return (this.dataType.toUpperCase().indexOf("NMR") >= 0); +}); +Clazz_defineMethod(c$, "isHNMR", +function(){ +return (this.isNMR() && this.observedNucl.toUpperCase().indexOf("H") >= 0); +}); +Clazz_defineMethod(c$, "setXYCoords", +function(coords){ +this.xyCoords = coords; +}, "~A"); +Clazz_defineMethod(c$, "invertYAxis", +function(){ +for (var i = this.xyCoords.length; --i >= 0; ) { +this.xyCoords[i].setYVal(-this.xyCoords[i].getYVal()); +} +var d = this.minY; +this.minY = -this.maxY; +this.maxY = -d; +return this; +}); +Clazz_defineMethod(c$, "getFirstX", +function(){ +return this.xyCoords[0].getXVal(); +}); +Clazz_defineMethod(c$, "getFirstY", +function(){ +return this.xyCoords[0].getYVal(); +}); +Clazz_defineMethod(c$, "getLastX", +function(){ +return this.xyCoords[this.xyCoords.length - 1].getXVal(); +}); +Clazz_defineMethod(c$, "getLastY", +function(){ +return this.xyCoords[this.xyCoords.length - 1].getYVal(); +}); +Clazz_defineMethod(c$, "getMinX", +function(){ +return (Double.isNaN(this.minX) ? (this.minX = JSV.common.Coordinate.getMinX(this.xyCoords, 0, this.xyCoords.length - 1)) : this.minX); +}); +Clazz_defineMethod(c$, "getMinY", +function(){ +return (Double.isNaN(this.minY) ? (this.minY = JSV.common.Coordinate.getMinY(this.xyCoords, 0, this.xyCoords.length - 1)) : this.minY); +}); +Clazz_defineMethod(c$, "getMaxX", +function(){ +return (Double.isNaN(this.maxX) ? (this.maxX = JSV.common.Coordinate.getMaxX(this.xyCoords, 0, this.xyCoords.length - 1)) : this.maxX); +}); +Clazz_defineMethod(c$, "getMaxY", +function(){ +return (Double.isNaN(this.maxY) ? (this.maxY = JSV.common.Coordinate.getMaxY(this.xyCoords, 0, this.xyCoords.length - 1)) : this.maxY); +}); +Clazz_defineMethod(c$, "normalizeSimulation", +function(max){ +if (!this.isNMR() || !this.is1D()) return; +var f = max / this.getMaxY(); +this.maxY = NaN; +JSV.common.Coordinate.applyScale(this.xyCoords, 1, f); +JU.Logger.info("Y values have been scaled by a factor of " + f); +}, "~N"); +Clazz_defineMethod(c$, "getDeltaX", +function(){ +return (Double.isNaN(this.deltaX) ? (this.deltaX = JSV.common.Coordinate.deltaX(this.getLastX(), this.getFirstX(), this.xyCoords.length)) : this.deltaX); +}); +Clazz_defineMethod(c$, "copyTo", +function(newObj){ +newObj.setTitle(this.title); +newObj.setJcampdx(this.jcampdx); +newObj.setOrigin(this.origin); +newObj.setOwner(this.owner); +newObj.setDataClass(this.dataClass); +newObj.setDataType(this.dataType); +newObj.setHeaderTable(this.headerTable); +newObj.setXFactor(this.xFactor); +newObj.setYFactor(this.yFactor); +newObj.setXUnits(this.xUnits); +newObj.setYUnits(this.yUnits); +newObj.setXLabel(this.xLabel); +newObj.setYLabel(this.yLabel); +newObj.setXYCoords(this.xyCoords); +newObj.setContinuous(this.continuous); +newObj.setIncreasing(this.xIncreases); +newObj.observedFreq = this.observedFreq; +newObj.observedNucl = this.observedNucl; +newObj.fileShiftRef = this.fileShiftRef; +newObj.fileShiftRefDataPt = this.fileShiftRefDataPt; +newObj.fileShiftRefType = this.fileShiftRefType; +newObj.$isHZtoPPM = this.$isHZtoPPM; +newObj.numDim = this.numDim; +newObj.nucleusX = this.nucleusX; +newObj.nucleusY = this.nucleusY; +newObj.freq2dX = this.freq2dX; +newObj.freq2dY = this.freq2dY; +newObj.setFilePath(this.filePath); +newObj.nH = this.nH; +}, "JSV.source.JDXDataObject"); +Clazz_defineMethod(c$, "getTypeLabel", +function(){ +return (this.isNMR() ? this.nucleusX + "NMR" : this.dataType); +}); +Clazz_defineMethod(c$, "getDefaultAnnotationInfo", +function(type){ +var s1; +var s2; +var isNMR = this.isNMR(); +switch (type) { +case JSV.common.Annotation.AType.Integration: +return Clazz_newArray(-1, [null, Clazz_newIntArray(-1, [1]), null]); +case JSV.common.Annotation.AType.Measurements: +s1 = (isNMR ? Clazz_newArray(-1, ["Hz", "ppm"]) : Clazz_newArray(-1, [""])); +s2 = (this.isHNMR() ? Clazz_newIntArray(-1, [1, 4]) : Clazz_newIntArray(-1, [1, 3])); +return Clazz_newArray(-1, [s1, s2, Integer.$valueOf(0)]); +case JSV.common.Annotation.AType.PeakList: +s1 = (isNMR ? Clazz_newArray(-1, ["Hz", "ppm"]) : Clazz_newArray(-1, [""])); +s2 = (this.isHNMR() ? Clazz_newIntArray(-1, [1, 2]) : Clazz_newIntArray(-1, [1, 1])); +return Clazz_newArray(-1, [s1, s2, Integer.$valueOf(isNMR ? 1 : 0)]); +case JSV.common.Annotation.AType.NONE: +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +return null; +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "getPeakListArray", +function(m, last, maxY){ +var x = m.getXVal(); +var y = m.getYVal(); +if (this.isNMR()) y /= maxY; +var dx = Math.abs(x - last[0]); +last[0] = x; +var ddx = dx + last[1]; +last[1] = dx; +var dddx = ddx + last[2]; +last[2] = ddx; +if (this.isNMR()) { +return Clazz_newDoubleArray(-1, [x, y, x * this.observedFreq, (dx * this.observedFreq > 20 ? 0 : dx * this.observedFreq), (ddx * this.observedFreq > 20 ? 0 : ddx * this.observedFreq), (dddx * this.observedFreq > 20 ? 0 : dddx * this.observedFreq)]); +}return Clazz_newDoubleArray(-1, [x, y]); +}, "JSV.common.Measurement,~A,~N"); +Clazz_defineMethod(c$, "finalizeCoordinates", +function(){ +var freq = (Double.isNaN(this.freq2dX) ? this.observedFreq : this.freq2dX); +var isHz = (freq != 1.7976931348623157E308 && this.getXUnits().toUpperCase().equals("HZ")); +if (this.fileShiftRef != 1.7976931348623157E308 && freq != 1.7976931348623157E308 && this.dataType.toUpperCase().contains("SPECTRUM") && this.jcampdx.indexOf("JEOL") < 0) { +this.applyShiftReference(isHz ? freq : 1, this.fileShiftRef); +}if (this.fileFirstX > this.fileLastX) JSV.common.Coordinate.reverse(this.xyCoords); +if (isHz) { +JSV.common.Coordinate.applyScale(this.xyCoords, (1.0 / freq), 1); +this.setXUnits("PPM"); +this.setHZtoPPM(true); +}}); +Clazz_defineMethod(c$, "setShiftReference", +function(shift, pt, type){ +this.fileShiftRef = shift; +this.fileShiftRefDataPt = (pt > 0 ? pt : 1); +this.fileShiftRefType = type; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isShiftTypeSpecified", +function(){ +return (this.fileShiftRefType != -1); +}); +Clazz_defineMethod(c$, "applyShiftReference", +function(referenceFreq, shift){ +if (this.fileShiftRefDataPt > this.xyCoords.length || this.fileShiftRefDataPt < 0) return; +var coord; +switch (this.fileShiftRefType) { +case 0: +shift = this.xyCoords[this.fileShiftRefDataPt - 1].getXVal() - shift * referenceFreq; +break; +case 1: +shift = this.fileFirstX - shift * referenceFreq; +break; +case 2: +shift = this.fileLastX + shift; +break; +} +for (var index = 0; index < this.xyCoords.length; index++) { +coord = this.xyCoords[index]; +coord.setXVal(coord.getXVal() - shift); +this.xyCoords[index] = coord; +} +}, "~N,~N"); +c$.gyroData = Clazz_newDoubleArray(-1, [1, 42.5774806, 2, 6.53590131, 3, 45.4148, 3, 32.436, 6, 6.2661, 7, 16.5483, 9, 5.9842, 10, 4.5752, 11, 13.663, 13, 10.70839657, 14, 3.07770646, 15, 4.31726570, 17, 5.7742, 19, 40.07757016, 21, 3.3631, 23, 11.26952167, 25, 2.6083, 27, 11.1031, 29, 8.4655, 31, 17.25144090, 33, 3.2717, 35, 4.1765, 37, 3.4765, 37, 5.819, 39, 3.46, 39, 1.9893, 40, 2.4737, 41, 1.0919, 43, 2.8688, 45, 10.3591, 47, 2.4041, 49, 2.4048, 50, 4.2505, 51, 11.2133, 53, 2.4115, 55, 10.5763, 57, 1.3816, 59, 10.077, 61, 3.8114, 63, 11.2982, 65, 12.103, 67, 2.6694, 69, 10.2478, 71, 13.0208, 73, 1.4897, 75, 7.315, 77, 8.1571, 79, 10.7042, 81, 11.5384, 83, 1.6442, 85, 4.1254, 87, 13.9811, 87, 1.8525, 89, 2.0949, 91, 3.9748, 93, 10.4523, 95, 2.7874, 97, 2.8463, 99, 9.6294, 99, 1.9553, 101, 2.1916, 103, 1.3477, 105, 1.957, 107, 1.7331, 109, 1.9924, 111, 9.0692, 113, 9.4871, 113, 9.3655, 115, 9.3856, 115, 14.0077, 117, 15.261, 119, 15.966, 121, 10.2551, 123, 5.5532, 123, 11.2349, 125, 13.5454, 127, 8.5778, 129, 11.8604, 131, 3.5159, 133, 5.6234, 135, 4.2582, 137, 4.7634, 138, 5.6615, 139, 6.0612, 137, 4.88, 139, 5.39, 141, 2.37, 141, 13.0359, 143, 2.319, 145, 1.429, 143, 11.59, 147, 5.62, 147, 1.7748, 149, 14631, 151, 10.5856, 153, 4.6745, 155, 1.312, 157, 1.72, 159, 10.23, 161, 1.4654, 163, 2.0508, 165, 9.0883, 167, 1.2281, 169, 3.531, 171, 7.5261, 173, 2.073, 175, 4.8626, 176, 3.451, 177, 1.7282, 179, 1.0856, 180, 4.087, 181, 5.1627, 183, 1.7957, 185, 9.7176, 187, 9.817, 187, 0.9856, 189, 3.3536, 191, 0.7658, 191, 0.8319, 195, 9.2922, 197, 0.7406, 199, 7.7123, 201, 2.8469, 203, 24.7316, 205, 24.9749, 207, 9.034, 209, 6.963, 209, 11.7, 211, 9.16, 223, 5.95, 223, 1.3746, 225, 11.187, 227, 5.6, 229, 1.4, 231, 10.2, 235, 0.83, 237, 9.57, 239, 3.09, 243, 4.6, 1E100]); +c$.gyroMap = new java.util.Hashtable(); +{ +for (var i = 0, n = JSV.source.JDXDataObject.gyroData.length - 1; i < n; i += 2) JSV.source.JDXDataObject.gyroMap.put("" + Clazz_doubleToInt(JSV.source.JDXDataObject.gyroData[i]), Double.$valueOf(JSV.source.JDXDataObject.gyroData[i + 1])); + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["java.util.Iterator"], "JSV.source.JDXDecompressor", ["JSV.common.Coordinate", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xFactor = 0; +this.yFactor = 0; +this.nPoints = 0; +this.ich = 0; +this.t = null; +this.firstX = 0; +this.lastX = 0; +this.maxY = 4.9E-324; +this.minY = 1.7976931348623157E308; +this.debugging = false; +this.xyCoords = null; +this.line = null; +this.lineLen = 0; +this.errorLog = null; +this.lastDif = -2147483648; +this.dupCount = 0; +this.nptsFound = 0; +this.lastY = 0; +this.isDIF = true; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXDecompressor", null, java.util.Iterator); +Clazz_makeConstructor(c$, +function(t, firstX, lastX, xFactor, yFactor, nPoints){ +this.t = t; +this.firstX = firstX; +this.lastX = lastX; +this.xFactor = xFactor; +this.yFactor = yFactor; +this.nPoints = nPoints; +this.debugging = JU.Logger.isActiveLevel(6); +}, "JSV.source.JDXSourceStreamTokenizer,~N,~N,~N,~N,~N"); +Clazz_makeConstructor(c$, +function(line, lastY){ +this.line = line.trim(); +this.lineLen = line.length; +this.lastY = lastY; +}, "~S,~N"); +Clazz_defineMethod(c$, "getMinY", +function(){ +return this.minY; +}); +Clazz_defineMethod(c$, "getMaxY", +function(){ +return this.maxY; +}); +Clazz_defineMethod(c$, "decompressData", +function(errorLog){ +this.errorLog = errorLog; +var deltaXcalc = JSV.common.Coordinate.deltaX(this.lastX, this.firstX, this.nPoints); +if (this.debugging) this.logError("firstX=" + this.firstX + " lastX=" + this.lastX + " xFactor=" + this.xFactor + " yFactor=" + this.yFactor + " deltaX=" + deltaXcalc + " nPoints=" + this.nPoints); +this.xyCoords = new Array(this.nPoints); +var difFracMax = 0.5; +var prevXcheck = 0; +var prevIpt = 0; +var lastXExpected = this.lastX; +var x = this.lastX = this.firstX; +var lastLine = null; +var ipt = 0; +var yval = 0; +var haveWarned = false; +var lineNumber = this.t.labelLineNo; +try { +while ((this.line = this.t.readLineTrimmed()) != null && this.line.indexOf("##") < 0) { +lineNumber++; +if ((this.lineLen = this.line.length) == 0) continue; +this.ich = 0; +var isCheckPoint = this.isDIF; +var xcheck = this.readSignedFloat() * this.xFactor; +yval = this.nextValue(yval); +if (!isCheckPoint && ipt > 0) x += deltaXcalc; +if (this.debugging) this.logError("Line: " + lineNumber + " isCP=" + isCheckPoint + "\t>>" + this.line + "<<\n x, xcheck " + x + " " + x / this.xFactor + " " + xcheck / this.xFactor + " " + deltaXcalc / this.xFactor); +var y = yval * this.yFactor; +var point = new JSV.common.Coordinate().set(x, y); +if (ipt == 0 || !isCheckPoint) { +this.addPoint(point, ipt++); +} else if (ipt < this.nPoints) { +var lastY = this.xyCoords[ipt - 1].getYVal(); +if (y != lastY) { +this.xyCoords[ipt - 1] = point; +this.logError(lastLine + "\n" + this.line + "\nY-value Checkpoint Error! Line " + lineNumber + " for y=" + y + " yLast=" + lastY); +}if (xcheck == prevXcheck || (xcheck < prevXcheck) != (deltaXcalc < 0)) { +this.logError(lastLine + "\n" + this.line + "\nX-sequence Checkpoint Error! Line " + lineNumber + " order for xCheck=" + xcheck + " after prevXCheck=" + prevXcheck); +}var xcheckDif = Math.abs(xcheck - prevXcheck); +var xiptDif = Math.abs((ipt - prevIpt) * deltaXcalc); +var fracDif = Math.abs((xcheckDif - xiptDif)) / xcheckDif; +if (this.debugging) System.err.println("JDXD fracDif = " + xcheck + "\t" + prevXcheck + "\txcheckDif=" + xcheckDif + "\txiptDif=" + xiptDif + "\tf=" + fracDif); +if (fracDif > difFracMax) { +this.logError(lastLine + "\n" + this.line + "\nX-value Checkpoint Error! Line " + lineNumber + " expected " + xiptDif + " but X-Sequence Check difference reads " + xcheckDif); +}}prevIpt = (ipt == 1 ? 0 : ipt); +prevXcheck = xcheck; +var nX = 0; +while (this.hasNext()) { +var ich0 = this.ich; +if (this.debugging) this.logError("line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(this.ich)); +if (Double.isNaN(yval = this.nextValue(yval))) { +this.logError("There was an error reading line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(ich0)); +} else { +x += deltaXcalc; +if (yval == 1.7976931348623157E308) { +yval = 0; +this.logError("Point marked invalid '?' for line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(ich0)); +}this.addPoint( new JSV.common.Coordinate().set(x, yval * this.yFactor), ipt++); +if (this.debugging) this.logError("nx=" + ++nX + " " + x + " " + x / this.xFactor + " yval=" + yval); +}} +this.lastX = x; +if (!haveWarned && ipt > this.nPoints) { +this.logError("! points overflow nPoints!"); +haveWarned = true; +}lastLine = this.line; +} +} catch (ioe) { +if (Clazz_exceptionOf(ioe,"java.io.IOException")){ +ioe.printStackTrace(); +} else { +throw ioe; +} +} +this.checkZeroFill(ipt, lastXExpected); +return this.xyCoords; +}, "JU.SB"); +Clazz_defineMethod(c$, "checkZeroFill", +function(ipt, lastXExpected){ +this.nptsFound = ipt; +if (this.nPoints == this.nptsFound) { +if (Math.abs(lastXExpected - this.lastX) > 0.00001) this.logError("Something went wrong! The last X value was " + this.lastX + " but expected " + lastXExpected); +} else { +this.logError("Decompressor did not find " + this.nPoints + " points -- instead " + this.nptsFound + " xyCoords.length set to " + this.nPoints); +for (var i = this.nptsFound; i < this.nPoints; i++) this.addPoint( new JSV.common.Coordinate().set(0, NaN), i); + +}}, "~N,~N"); +Clazz_defineMethod(c$, "addPoint", +function(pt, ipt){ +if (ipt >= this.nPoints) return; +this.xyCoords[ipt] = pt; +var y = pt.getYVal(); +if (y > this.maxY) this.maxY = y; + else if (y < this.minY) this.minY = y; +if (this.debugging) this.logError("Coord: " + ipt + pt); +}, "JSV.common.Coordinate,~N"); +Clazz_defineMethod(c$, "logError", +function(s){ +if (this.debugging) JU.Logger.debug(s); +System.err.println(s); +this.errorLog.append(s).appendC('\n'); +}, "~S"); +Clazz_defineMethod(c$, "nextValue", +function(yval){ +if (this.dupCount > 0) return this.getDuplicate(yval); +var ch = this.skipUnknown(); +switch (JSV.source.JDXDecompressor.actions[ch.charCodeAt(0)]) { +case 1: +this.isDIF = true; +return yval + (this.lastDif = this.readNextInteger(ch == '%' ? 0 : ch <= 'R' ? ch.charCodeAt(0) - 73 : 105 - ch.charCodeAt(0))); +case 2: +this.dupCount = this.readNextInteger((ch == 's' ? 9 : ch.charCodeAt(0) - 82)) - 1; +return this.getDuplicate(yval); +case 3: +yval = this.readNextSqueezedNumber(ch); +break; +case 4: +this.ich--; +yval = this.readSignedFloat(); +break; +case -1: +yval = 1.7976931348623157E308; +break; +default: +yval = NaN; +break; +} +this.isDIF = false; +return yval; +}, "~N"); +Clazz_defineMethod(c$, "skipUnknown", +function(){ +var ch = '\u0000'; +while (this.ich < this.lineLen && JSV.source.JDXDecompressor.actions[(ch = this.line.charAt(this.ich++)).charCodeAt(0)] == 0) { +} +return ch; +}); +Clazz_defineMethod(c$, "readSignedFloat", +function(){ +var ich0 = this.ich; +var ch = '\u0000'; +while (this.ich < this.lineLen && " ,\t\n".indexOf(ch = this.line.charAt(this.ich)) >= 0) this.ich++; + +var factor = 1; +switch ((ch).charCodeAt(0)) { +case 45: +factor = -1; +case 43: +ich0 = ++this.ich; +break; +} +if (this.scanToNonnumeric() == 'E' && this.ich + 3 < this.lineLen) { +switch ((this.line.charAt(this.ich + 1)).charCodeAt(0)) { +case 45: +case 43: +this.ich += 4; +if (this.ich < this.lineLen && (ch = this.line.charAt(this.ich)) >= '0' && ch <= '9') this.ich++; +break; +} +}return factor * Double.parseDouble(this.line.substring(ich0, this.ich)); +}); +Clazz_defineMethod(c$, "getDuplicate", +function(yval){ +this.dupCount--; +return (this.isDIF ? yval + this.lastDif : yval); +}, "~N"); +Clazz_defineMethod(c$, "readNextInteger", +function(n){ +var c = String.fromCharCode(0); +while (this.ich < this.lineLen && (c = this.line.charAt(this.ich)) >= '0' && c <= '9') { +n = n * 10 + (n < 0 ? 48 - c.charCodeAt(0) : c.charCodeAt(0) - 48); +this.ich++; +} +return n; +}, "~N"); +Clazz_defineMethod(c$, "readNextSqueezedNumber", +function(ch){ +var ich0 = this.ich; +this.scanToNonnumeric(); +return Double.parseDouble((ch.charCodeAt(0) > 0x60 ? 0x60 - ch.charCodeAt(0) : ch.charCodeAt(0) - 0x40) + this.line.substring(ich0, this.ich)); +}, "~S"); +Clazz_defineMethod(c$, "scanToNonnumeric", +function(){ +var ch = String.fromCharCode(0); +while (this.ich < this.lineLen && ((ch = this.line.charAt(this.ich)) == '.' || ch >= '0' && ch <= '9')) this.ich++; + +return (this.ich < this.lineLen ? ch : '\0'); +}); +Clazz_defineMethod(c$, "getNPointsFound", +function(){ +return this.nptsFound; +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return (this.ich < this.lineLen || this.dupCount > 0); +}); +Clazz_overrideMethod(c$, "next", +function(){ +return (this.hasNext() ? Double.$valueOf(this.lastY = this.nextValue(this.lastY)) : null); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +}); +c$.actions = Clazz_newIntArray (255, 0); +{ +for (var i = 0x25; i <= 0x73; i++) { +var c = String.fromCharCode(i); +switch ((c).charCodeAt(0)) { +case 37: +case 74: +case 75: +case 76: +case 77: +case 78: +case 79: +case 80: +case 81: +case 82: +case 106: +case 107: +case 108: +case 109: +case 110: +case 111: +case 112: +case 113: +case 114: +JSV.source.JDXDecompressor.actions[i] = 1; +break; +case 43: +case 45: +case 46: +case 48: +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +case 55: +case 56: +case 57: +JSV.source.JDXDecompressor.actions[i] = 4; +break; +case 63: +JSV.source.JDXDecompressor.actions[i] = -1; +break; +case 64: +case 65: +case 66: +case 67: +case 68: +case 69: +case 70: +case 71: +case 72: +case 73: +case 97: +case 98: +case 99: +case 100: +case 101: +case 102: +case 103: +case 104: +case 105: +JSV.source.JDXDecompressor.actions[i] = 3; +break; +case 83: +case 84: +case 85: +case 86: +case 87: +case 88: +case 89: +case 90: +case 115: +JSV.source.JDXDecompressor.actions[i] = 2; +break; +} +} +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["JU.Lst"], "JSV.source.JDXHeader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.title = ""; +this.jcampdx = "5.01"; +this.dataType = ""; +this.dataClass = ""; +this.origin = ""; +this.owner = "PUBLIC DOMAIN"; +this.longDate = ""; +this.date = ""; +this.time = ""; +this.qualifiedType = null; +this.headerTable = null; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXHeader", null); +Clazz_prepareFields (c$, function(){ +this.headerTable = new JU.Lst(); +}); +Clazz_defineMethod(c$, "setTitle", +function(title){ +this.title = title; +}, "~S"); +Clazz_defineMethod(c$, "setJcampdx", +function(versionNum){ +this.jcampdx = versionNum; +}, "~S"); +Clazz_defineMethod(c$, "setDataType", +function(dataType){ +this.dataType = dataType; +}, "~S"); +Clazz_defineMethod(c$, "setDataClass", +function(dataClass){ +this.dataClass = dataClass; +}, "~S"); +Clazz_defineMethod(c$, "setOrigin", +function(origin){ +this.origin = origin; +}, "~S"); +Clazz_defineMethod(c$, "setOwner", +function(owner){ +this.owner = owner; +}, "~S"); +Clazz_defineMethod(c$, "setLongDate", +function(longDate){ +this.longDate = longDate; +}, "~S"); +Clazz_defineMethod(c$, "setDate", +function(date){ +this.date = date; +}, "~S"); +Clazz_defineMethod(c$, "setTime", +function(time){ +this.time = time; +}, "~S"); +Clazz_defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +c$.getTypeName = Clazz_defineMethod(c$, "getTypeName", +function(type){ +type = type.toUpperCase(); +for (var i = 0; i < JSV.source.JDXHeader.typeNames.length; i++) if (JSV.source.JDXHeader.typeNames[i].startsWith(type)) { +return JSV.source.JDXHeader.typeNames[i].substring(18); +} +return type; +}, "~S"); +Clazz_defineMethod(c$, "getQualifiedDataType", +function(){ +return (this.qualifiedType == null ? (this.qualifiedType = JSV.source.JDXHeader.getTypeName(this.dataType)) : this.qualifiedType); +}); +Clazz_defineMethod(c$, "getJcampdx", +function(){ +return this.jcampdx; +}); +Clazz_defineMethod(c$, "getDataType", +function(){ +return this.dataType; +}); +Clazz_defineMethod(c$, "getOrigin", +function(){ +return this.origin; +}); +Clazz_defineMethod(c$, "getOwner", +function(){ +return this.owner; +}); +Clazz_defineMethod(c$, "getLongDate", +function(){ +return this.longDate; +}); +Clazz_defineMethod(c$, "getDate", +function(){ +return this.date; +}); +Clazz_defineMethod(c$, "getTime", +function(){ +return this.time; +}); +Clazz_defineMethod(c$, "getDataClass", +function(){ +return this.dataClass; +}); +Clazz_defineMethod(c$, "setHeaderTable", +function(table){ +this.headerTable = table; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getHeaderTable", +function(){ +return this.headerTable; +}); +Clazz_defineMethod(c$, "getHeaderRowDataAsArray", +function(addDataClass, nMore){ +var rowData = new Array((addDataClass ? 6 : 5) + this.headerTable.size() + nMore); +var i = 0; +rowData[i++] = Clazz_newArray(-1, ["##TITLE", this.title]); +rowData[i++] = Clazz_newArray(-1, ["##JCAMP-DX", this.jcampdx]); +rowData[i++] = Clazz_newArray(-1, ["##DATA TYPE", this.dataType]); +if (addDataClass) rowData[i++] = Clazz_newArray(-1, ["##DATA CLASS", this.dataClass]); +rowData[i++] = Clazz_newArray(-1, ["##ORIGIN", this.origin]); +rowData[i++] = Clazz_newArray(-1, ["##OWNER", this.owner]); +for (var j = 0; j < this.headerTable.size(); j++) rowData[i++] = this.getRow(j); + +return rowData; +}, "~B,~N"); +Clazz_defineMethod(c$, "getRow", +function(j){ +var s = this.headerTable.get(j); +{ +return [s[0], JU.PT.rep(s[1], "<", "<")]; +}}, "~N"); +c$.typeNames = Clazz_newArray(-1, ["ND NMR SPECTRUM NMR", "NMR SPECTRUM NMR", "INFRARED SPECTRUM IR", "MASS SPECTRUM MS", "RAMAN SPECTRUM RAMAN", "GAS CHROMATOGRAM GC", "UV/VIS SPECTRUM UV/VIS"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["J.api.JmolJDXMOLReader"], "JSV.source.JDXReader", ["java.io.BufferedReader", "$.StringReader", "java.util.Hashtable", "$.LinkedHashMap", "$.StringTokenizer", "javajs.api.Interface", "JU.AU", "$.Lst", "$.PT", "$.Rdr", "$.SB", "JSV.common.Coordinate", "$.JSVFileManager", "$.JSViewer", "$.PeakInfo", "$.Spectrum", "JSV.exception.JSVException", "JSV.source.JDXDecompressor", "$.JDXSource", "$.JDXSourceStreamTokenizer", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.nmrMaxY = NaN; +this.source = null; +this.t = null; +this.errorLog = null; +this.obscure = false; +this.done = false; +this.isZipFile = false; +this.filePath = null; +this.loadImaginary = true; +this.isSimulation = false; +this.ignoreShiftReference = false; +this.ignorePeakTables = false; +this.lastErrPath = null; +this.isTabularData = false; +this.firstSpec = 0; +this.lastSpec = 0; +this.nSpec = 0; +this.blockID = 0; +this.mpr = null; +this.reader = null; +this.modelSpectrum = null; +this.acdAssignments = null; +this.acdMolFile = null; +this.peakData = null; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXReader", null, J.api.JmolJDXMOLReader); +Clazz_makeConstructor(c$, +function(filePath, obscure, loadImaginary, iSpecFirst, iSpecLast, nmrNormalization){ +filePath = JU.PT.trimQuotes(filePath); +this.isSimulation = (filePath != null && filePath.startsWith("http://SIMULATION/")); +if (this.isSimulation) { +this.nmrMaxY = (Float.isNaN(nmrNormalization) ? 10000 : nmrNormalization); +}this.filePath = filePath; +this.obscure = obscure; +this.firstSpec = iSpecFirst; +this.lastSpec = iSpecLast; +this.loadImaginary = loadImaginary; +}, "~S,~B,~B,~N,~N,~N"); +c$.getVarList = Clazz_defineMethod(c$, "getVarList", +function(dataClass){ +var index = JSV.source.JDXReader.VAR_LIST_TABLE[0].indexOf(dataClass); +return JSV.source.JDXReader.VAR_LIST_TABLE[1].substring(index + 1, index + 12).trim(); +}, "~S"); +c$.createJDXSourceFromStream = Clazz_defineMethod(c$, "createJDXSourceFromStream", +function($in, obscure, loadImaginary, nmrMaxY){ +return JSV.source.JDXReader.createJDXSource(null, $in, "stream", obscure, loadImaginary, -1, -1, nmrMaxY); +}, "java.io.InputStream,~B,~B,~N"); +c$.getHeaderMap = Clazz_defineMethod(c$, "getHeaderMap", +function($in, map){ +return JSV.source.JDXReader.getHeaderMapS($in, map, null); +}, "java.io.InputStream,java.util.Map"); +c$.getHeaderMapS = Clazz_defineMethod(c$, "getHeaderMapS", +function($in, map, suffix){ +if (map == null) map = new java.util.LinkedHashMap(); +var hlist = JSV.source.JDXReader.createJDXSource(null, $in, null, false, false, 0, -1, 0).getJDXSpectrum(0).headerTable; +for (var i = 0, n = hlist.size(); i < n; i++) { +var h = hlist.get(i); +map.put((suffix == null ? h[2] : h[2] + suffix), h[1]); +} +return map; +}, "java.io.InputStream,java.util.Map,~S"); +c$.createJDXSource = Clazz_defineMethod(c$, "createJDXSource", +function(file, $in, filePath, obscure, loadImaginary, iSpecFirst, iSpecLast, nmrMaxY){ +var isHeaderOnly = (iSpecLast < iSpecFirst); +var data = null; +var br; +var bytes = null; +if (JU.AU.isAB($in)) { +bytes = $in; +if (JU.Rdr.isZipB(bytes)) { +return JSV.source.JDXReader.readBrukerFileZip(bytes, file == null ? filePath : file.getFullPath()); +}}if ((typeof($in)=='string') || bytes != null) { +if ((typeof($in)=='string')) data = $in; +br = JSV.common.JSVFileManager.getBufferedReaderForStringOrBytes($in); +} else if (Clazz_instanceOf($in,"java.io.InputStream")) { +br = JSV.common.JSVFileManager.getBufferedReaderForInputStream($in); +} else { +br = $in; +}var header = null; +var source = null; +try { +if (br == null) { +if (file != null && file.isDirectory()) return JSV.source.JDXReader.readBrukerFileDir(file.getFullPath()); +br = JSV.common.JSVFileManager.getBufferedReaderFromName(filePath, "##TITLE"); +}if (!isHeaderOnly) { +br.mark(400); +var chs = Clazz_newCharArray (400, '\0'); +br.read(chs, 0, 400); +br.reset(); +header = String.instantialize(chs); +if (header.startsWith("PK")) { +br.close(); +return JSV.source.JDXReader.readBrukerFileZip(null, file.getFullPath()); +}if (header.indexOf('\0') >= 0 || header.indexOf("##TITLE= Parameter file") == 0 || header.indexOf("##TITLE= Audit trail") == 0) { +br.close(); +return JSV.source.JDXReader.readBrukerFileDir(file.getParentAsFile().getFullPath()); +}var pt1 = header.indexOf('#'); +var pt2 = header.indexOf('<'); +if (pt1 < 0 || pt2 >= 0 && pt2 < pt1) { +var xmlType = header.toLowerCase(); +xmlType = (xmlType.contains(""); +break; +}continue; +}if (!isHeaderOnly) { +if (label.equals("##DATATYPE") && value.toUpperCase().equals("LINK")) { +this.getBlockSpectra(dataLDRTable); +spectrum = null; +continue; +}if (label.equals("##NTUPLES") || label.equals("##VARNAME")) { +this.getNTupleSpectra(dataLDRTable, spectrum, label); +spectrum = null; +continue; +}}if (label.equals("##JCAMPDX")) { +this.setVenderSpecificValues(this.t.rawLine); +}if (spectrum == null) spectrum = new JSV.common.Spectrum(); +this.processLabel(spectrum, dataLDRTable, label, value, isHeaderOnly); +} +if (isHeaderOnly && spectrum != null) this.addSpectrum(spectrum, false); +} +if (!isOK) throw new JSV.exception.JSVException("##TITLE record not found"); +this.source.setErrorLog(this.errorLog.toString()); +return this.source; +}, "~O,~B"); +Clazz_defineMethod(c$, "processLabel", +function(spectrum, dataLDRTable, label, value, isHeaderOnly){ +if (!this.readDataLabel(spectrum, label, value, this.errorLog, this.obscure, isHeaderOnly) && !isHeaderOnly) return; +JSV.source.JDXReader.addHeader(dataLDRTable, this.t.rawLabel, value); +if (!isHeaderOnly) this.checkCustomTags(spectrum, label, value); +}, "JSV.common.Spectrum,JU.Lst,~S,~S,~B"); +Clazz_defineMethod(c$, "logError", +function(err){ +this.errorLog.append(this.filePath == null || this.filePath.equals(this.lastErrPath) ? "" : this.filePath).append("\n").append(err).append("\n"); +this.lastErrPath = this.filePath; +}, "~S"); +Clazz_defineMethod(c$, "setVenderSpecificValues", +function(rawLine){ +if (rawLine.indexOf("JEOL") >= 0) { +System.out.println("Skipping ##SHIFTREFERENCE for JEOL " + rawLine); +this.ignoreShiftReference = true; +}if (rawLine.indexOf("MestReNova") >= 0) { +this.ignorePeakTables = true; +}}, "~S"); +Clazz_defineMethod(c$, "getValue", +function(label){ +var value = (this.isTabularDataLabel(label) ? "" : this.t.getValue()); +return ("##END".equals(label) ? null : value); +}, "~S"); +Clazz_defineMethod(c$, "isTabularDataLabel", +function(label){ +return (this.isTabularData = ("##DATATABLE##PEAKTABLE##XYDATA##XYPOINTS#".indexOf(label + "#") >= 0)); +}, "~S"); +Clazz_defineMethod(c$, "addSpectrum", +function(spectrum, forceSub){ +if (!this.loadImaginary && spectrum.isImaginary()) { +JU.Logger.info("FileReader skipping imaginary spectrum -- use LOADIMAGINARY TRUE to load this spectrum."); +return true; +}if (this.acdAssignments != null) { +if (!spectrum.dataType.equals("MASS SPECTRUM") && !spectrum.isContinuous()) { +JU.Logger.info("Skipping ACD Labs line spectrum for " + spectrum); +return true; +}if (this.acdAssignments.size() > 0) { +try { +this.mpr.setACDAssignments(spectrum.title, spectrum.getTypeLabel(), this.source.peakCount, this.acdAssignments, this.acdMolFile); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.info("Failed to create peak data: " + e); +} else { +throw e; +} +} +}if (this.acdMolFile != null) JSV.common.JSVFileManager.cachePut("mol", this.acdMolFile); +}if (!Float.isNaN(this.nmrMaxY)) spectrum.normalizeSimulation(this.nmrMaxY); + else if (spectrum.getMaxY() >= 10000) spectrum.normalizeSimulation(1000); +if (this.isSimulation) spectrum.setSimulated(this.filePath); +this.nSpec++; +if (this.firstSpec > 0 && this.nSpec < this.firstSpec) return true; +if (this.lastSpec > 0 && this.nSpec > this.lastSpec) return !(this.done = true); +spectrum.setBlockID(this.blockID); +this.source.addJDXSpectrum(null, spectrum, forceSub); +return true; +}, "JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "getBlockSpectra", +function(sourceLDRTable){ +JU.Logger.debug("--JDX block start--"); +var label = ""; +var value = null; +var isNew = (this.source.type == 0); +var forceSub = false; +while ((label = this.t.getLabel()) != null && !label.equals("##TITLE")) { +value = this.getValue(label); +if (isNew && !JSV.source.JDXReader.readHeaderLabel(this.source, label, value, this.errorLog, this.obscure)) JSV.source.JDXReader.addHeader(sourceLDRTable, this.t.rawLabel, value); +if (label.equals("##BLOCKS")) { +var nBlocks = JU.PT.parseInt(value); +if (nBlocks > 100 && this.firstSpec <= 0) forceSub = true; +}} +value = this.getValue(label); +if (!"##TITLE".equals(label)) throw new JSV.exception.JSVException("Unable to read block source"); +if (isNew) this.source.setHeaderTable(sourceLDRTable); +this.source.type = 1; +this.source.isCompoundSource = true; +var dataLDRTable; +var spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +this.readDataLabel(spectrum, label, value, this.errorLog, this.obscure, false); +try { +var tmp; +while ((tmp = this.t.getLabel()) != null) { +if ((value = this.getValue(tmp)) == null && "##END".equals(label)) { +JU.Logger.debug("##END= " + this.t.getValue()); +break; +}label = tmp; +if (this.isTabularData) { +this.processTabularData(spectrum, dataLDRTable, label, false); +continue; +}if (label.equals("##DATATYPE")) { +if (value.toUpperCase().equals("LINK")) { +this.getBlockSpectra(dataLDRTable); +spectrum = null; +label = null; +} else if (value.toUpperCase().startsWith("NMR PEAK")) { +if (this.ignorePeakTables) { +this.done = true; +return this.source; +}}} else if (label.equals("##NTUPLES") || label.equals("##VARNAME")) { +this.getNTupleSpectra(dataLDRTable, spectrum, label); +spectrum = null; +label = ""; +}if (this.done) break; +if (spectrum == null) { +spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +if (label === "") continue; +if (label == null) { +label = "##END"; +continue; +}}if (value == null) { +if (spectrum.getXYCoords().length > 0 && !this.addSpectrum(spectrum, forceSub)) return this.source; +spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +continue; +}this.processLabel(spectrum, dataLDRTable, label, value, false); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (!JSV.common.JSViewer.isJS) e.printStackTrace(); +throw new JSV.exception.JSVException(e.getMessage()); +} else { +throw e; +} +} +this.addErrorLogSeparator(); +this.source.setErrorLog(this.errorLog.toString()); +JU.Logger.debug("--JDX block end--"); +return this.source; +}, "JU.Lst"); +Clazz_defineMethod(c$, "addErrorLogSeparator", +function(){ +if (this.errorLog.length() > 0 && this.errorLog.lastIndexOf("=====================\n") != this.errorLog.length() - "=====================\n".length) this.logError("=====================\n"); +}); +Clazz_defineMethod(c$, "getNTupleSpectra", +function(sourceLDRTable, spectrum0, label){ +var minMaxY = Clazz_newDoubleArray(-1, [1.7976931348623157E308, 4.9E-324]); +this.blockID = Math.random(); +var isOK = true; +if (this.firstSpec > 0) spectrum0.setNumDim(1); +var isVARNAME = label.equals("##VARNAME"); +if (!isVARNAME) { +label = ""; +}var nTupleTable = new java.util.Hashtable(); +var plotSymbols = new Array(2); +var isNew = (this.source.type == 0); +if (isNew) { +this.source.type = 2; +this.source.isCompoundSource = true; +this.source.setHeaderTable(sourceLDRTable); +}while (!(label = (isVARNAME ? label : this.t.getLabel())).equals("##PAGE")) { +isVARNAME = false; +var st = new java.util.StringTokenizer(this.t.getValue(), ","); +var attrList = new JU.Lst(); +while (st.hasMoreTokens()) attrList.addLast(st.nextToken().trim()); + +nTupleTable.put(label, attrList); +} +var symbols = nTupleTable.get("##SYMBOL"); +if (!label.equals("##PAGE")) throw new JSV.exception.JSVException("Error Reading NTuple Source"); +var page = this.t.getValue(); +var spectrum = null; +var isFirst = true; +while (!this.done) { +if ((label = this.t.getLabel()).equals("##ENDNTUPLES")) { +this.t.getValue(); +break; +}if (label.equals("##PAGE")) { +page = this.t.getValue(); +continue; +}if (spectrum == null) { +spectrum = new JSV.common.Spectrum(); +spectrum0.copyTo(spectrum); +spectrum.setTitle(spectrum0.getTitle()); +if (!spectrum.is1D()) { +var pt = page.indexOf('='); +if (pt >= 0) try { +spectrum.setY2D(this.parseAFFN(page.substring(0, pt), page.substring(pt + 1).trim())); +var y2dUnits = page.substring(0, pt).trim(); +var i = symbols.indexOf(y2dUnits); +if (i >= 0) spectrum.setY2DUnits(nTupleTable.get("##UNITS").get(i)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}var dataLDRTable = new JU.Lst(); +spectrum.setHeaderTable(dataLDRTable); +while (!label.equals("##DATATABLE")) { +JSV.source.JDXReader.addHeader(dataLDRTable, this.t.rawLabel, this.t.getValue()); +label = this.t.getLabel(); +} +var continuous = true; +var line = this.t.flushLine(); +if (line.trim().indexOf("PEAKS") > 0) continuous = false; +var index1 = line.indexOf('('); +var index2 = line.lastIndexOf(')'); +if (index1 == -1 || index2 == -1) throw new JSV.exception.JSVException("Variable List not Found"); +var varList = line.substring(index1, index2 + 1); +var countSyms = 0; +for (var i = 0; i < symbols.size(); i++) { +var sym = symbols.get(i).trim(); +if (varList.indexOf(sym) != -1) { +plotSymbols[countSyms++] = sym; +}if (countSyms == 2) break; +} +this.setTabularDataType(spectrum, "##" + (continuous ? "XYDATA" : "PEAKTABLE")); +if (!this.readNTUPLECoords(spectrum, nTupleTable, plotSymbols, minMaxY)) throw new JSV.exception.JSVException("Unable to read Ntuple Source"); +if (!spectrum.nucleusX.equals("?")) spectrum0.nucleusX = spectrum.nucleusX; +spectrum0.nucleusY = spectrum.nucleusY; +spectrum0.freq2dX = spectrum.freq2dX; +spectrum0.freq2dY = spectrum.freq2dY; +spectrum0.y2DUnits = spectrum.y2DUnits; +for (var i = 0; i < sourceLDRTable.size(); i++) { +var entry = sourceLDRTable.get(i); +var key = JSV.source.JDXSourceStreamTokenizer.cleanLabel(entry[0]); +if (!key.equals("##TITLE") && !key.equals("##DATACLASS") && !key.equals("##NTUPLES")) dataLDRTable.addLast(entry); +} +if (isOK) this.addSpectrum(spectrum, !isFirst); +isFirst = false; +spectrum = null; +} +this.addErrorLogSeparator(); +this.source.setErrorLog(this.errorLog.toString()); +JU.Logger.info("NTUPLE MIN/MAX Y = " + minMaxY[0] + " " + minMaxY[1]); +return this.source; +}, "JU.Lst,JSV.source.JDXDataObject,~S"); +Clazz_defineMethod(c$, "readDataLabel", +function(spectrum, label, value, errorLog, obscure, isHeaderOnly){ +if (!JSV.source.JDXReader.readHeaderLabel(spectrum, label, value, errorLog, obscure)) return false; +label += " "; +if (("##MINX ##MINY ##MAXX ##MAXY ##FIRSTY ##DELTAX ##DATACLASS ").indexOf(label) >= 0) return false; +switch (("##FIRSTX ##LASTX ##NPOINTS ##XFACTOR ##YFACTOR ##XUNITS ##YUNITS ##XLABEL ##YLABEL ##NUMDIM ##OFFSET ").indexOf(label)) { +case 0: +spectrum.fileFirstX = this.parseAFFN(label, value); +return false; +case 10: +spectrum.fileLastX = this.parseAFFN(label, value); +return false; +case 20: +spectrum.fileNPoints = Integer.parseInt(value); +return false; +case 30: +spectrum.setXFactor(this.parseAFFN(label, value)); +return false; +case 40: +spectrum.yFactor = this.parseAFFN(label, value); +return false; +case 50: +spectrum.setXUnits(value); +return false; +case 60: +spectrum.setYUnits(value); +return false; +case 70: +spectrum.setXLabel(value); +return true; +case 80: +spectrum.setYLabel(value); +return true; +case 90: +spectrum.setNumDim(Integer.parseInt(value)); +return false; +case 100: +if (!spectrum.isShiftTypeSpecified()) { +spectrum.setShiftReference(this.parseAFFN(label, value), 1, 1); +}return false; +default: +if (label.length < 17) return true; +if (label.equals("##.OBSERVEFREQUENCY ")) { +spectrum.setObservedFreq(this.parseAFFN(label, value)); +return false; +}if (label.equals("##.OBSERVENUCLEUS ")) { +spectrum.setObservedNucleus(value); +return false; +}if (label.equals("##$REFERENCEPOINT ") && !spectrum.isShiftTypeSpecified()) { +var pt = value.indexOf(" "); +if (pt > 0) value = value.substring(0, pt); +spectrum.setShiftReference(this.parseAFFN(label, value), 1, 2); +return false; +}if (label.equals("##.SHIFTREFERENCE ")) { +if (this.ignoreShiftReference || !(spectrum.dataType.toUpperCase().contains("SPECTRUM"))) return false; +value = JU.PT.replaceAllCharacters(value, ")(", ""); +var srt = new java.util.StringTokenizer(value, ","); +if (srt.countTokens() != 4) return false; +try { +srt.nextToken(); +srt.nextToken(); +var pt = Integer.parseInt(srt.nextToken().trim()); +var shift = this.parseAFFN(label, srt.nextToken().trim()); +spectrum.setShiftReference(shift, pt, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return false; +}return true; +} +}, "JSV.source.JDXDataObject,~S,~S,JU.SB,~B,~B"); +c$.readHeaderLabel = Clazz_defineMethod(c$, "readHeaderLabel", +function(jdxHeader, label, value, errorLog, obscure){ +switch (("##TITLE#####JCAMPDX###ORIGIN####OWNER#####DATATYPE##LONGDATE##DATE######TIME####").indexOf(label + "#")) { +case 0: +jdxHeader.setTitle(obscure || value == null || value.equals("") ? "Unknown" : value); +return false; +case 10: +jdxHeader.jcampdx = value; +var version = JU.PT.parseFloat(value); +if (version >= 6.0 || Float.isNaN(version)) { +if (errorLog != null) errorLog.append("Warning: JCAMP-DX version may not be fully supported: " + value); +}return false; +case 20: +jdxHeader.origin = (value != null && !value.equals("") ? value : "Unknown"); +return false; +case 30: +jdxHeader.owner = (value != null && !value.equals("") ? value : "Unknown"); +return false; +case 40: +jdxHeader.dataType = value; +return false; +case 50: +jdxHeader.longDate = value; +return false; +case 60: +jdxHeader.date = value; +return false; +case 70: +jdxHeader.time = value; +return false; +} +return true; +}, "JSV.source.JDXHeader,~S,~S,JU.SB,~B"); +Clazz_defineMethod(c$, "setTabularDataType", +function(spectrum, label){ +if (label.equals("##PEAKASSIGNMENTS")) spectrum.setDataClass("PEAKASSIGNMENTS"); + else if (label.equals("##PEAKTABLE")) spectrum.setDataClass("PEAKTABLE"); + else if (label.equals("##XYDATA")) spectrum.setDataClass("XYDATA"); + else if (label.equals("##XYPOINTS")) spectrum.setDataClass("XYPOINTS"); +}, "JSV.source.JDXDataObject,~S"); +Clazz_defineMethod(c$, "processTabularData", +function(spec, table, label, isHeaderOnly){ +this.setTabularDataType(spec, label); +spec.setHeaderTable(table); +if (spec.dataClass.equals("XYDATA")) { +spec.checkJDXRequiredTokens(); +if (!isHeaderOnly) this.decompressData(spec, null); +return; +}if (spec.dataClass.equals("PEAKTABLE") || spec.dataClass.equals("XYPOINTS")) { +spec.setContinuous(spec.dataClass.equals("XYPOINTS")); +try { +this.t.readLineTrimmed(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +var xyCoords; +if (spec.xFactor != 1.7976931348623157E308 && spec.yFactor != 1.7976931348623157E308) { +var data = this.t.getValue(); +xyCoords = JSV.common.Coordinate.parseDSV(data, spec.xFactor, spec.yFactor); +} else { +xyCoords = JSV.common.Coordinate.parseDSV(this.t.getValue(), 1, 1); +}spec.setXYCoords(xyCoords); +var fileDeltaX = JSV.common.Coordinate.deltaX(xyCoords[xyCoords.length - 1].getXVal(), xyCoords[0].getXVal(), xyCoords.length); +spec.setIncreasing(fileDeltaX > 0); +return; +}throw new JSV.exception.JSVException("Unable to read JDX file tabular data for line " + this.t.labelLineNo); +}, "JSV.source.JDXDataObject,JU.Lst,~S,~B"); +Clazz_defineMethod(c$, "readNTUPLECoords", +function(spec, nTupleTable, plotSymbols, minMaxY){ +var list; +var label; +if (spec.dataClass.equals("XYDATA")) { +list = nTupleTable.get("##SYMBOL"); +var index1 = list.indexOf(plotSymbols[0]); +var index2 = list.indexOf(plotSymbols[1]); +list = nTupleTable.get("##VARNAME"); +spec.setVarName(list.get(index2).toUpperCase()); +list = nTupleTable.get(label = "##FACTOR"); +spec.setXFactor(this.parseAFFN(label, list.get(index1))); +spec.setYFactor(this.parseAFFN(label, list.get(index2))); +list = nTupleTable.get(label = "##LAST"); +spec.fileLastX = this.parseAFFN(label, list.get(index1)); +list = nTupleTable.get(label = "##FIRST"); +spec.fileFirstX = this.parseAFFN(label, list.get(index1)); +list = nTupleTable.get("##VARDIM"); +spec.fileNPoints = Integer.parseInt(list.get(index1)); +list = nTupleTable.get("##UNITS"); +spec.setXUnits(list.get(index1)); +spec.setYUnits(list.get(index2)); +if (spec.nucleusX == null && (list = nTupleTable.get("##.NUCLEUS")) != null) { +spec.setNucleusAndFreq(list.get(0), false); +spec.setNucleusAndFreq(list.get(index1), true); +} else { +if (spec.nucleusX == null) spec.nucleusX = "?"; +}this.decompressData(spec, minMaxY); +return true; +}if (spec.dataClass.equals("PEAKTABLE") || spec.dataClass.equals("XYPOINTS")) { +spec.setContinuous(spec.dataClass.equals("XYPOINTS")); +list = nTupleTable.get("##SYMBOL"); +var index1 = list.indexOf(plotSymbols[0]); +var index2 = list.indexOf(plotSymbols[1]); +list = nTupleTable.get("##UNITS"); +spec.setXUnits(list.get(index1)); +spec.setYUnits(list.get(index2)); +spec.setXYCoords(JSV.common.Coordinate.parseDSV(this.t.getValue(), spec.xFactor, spec.yFactor)); +return true; +}return false; +}, "JSV.source.JDXDataObject,java.util.Map,~A,~A"); +Clazz_defineMethod(c$, "parseAFFN", +function(label, val){ +var pt = val.indexOf("E"); +if (pt > 0) { +var len = val.length; +var ch; +switch (len - pt) { +case 2: +case 3: +this.logError("Warning - " + label + " value " + val + " is not of the format xxxE[+/-]nn or xxxE[+/-]nnn (spec. 4.5.3) -- warning only; accepted"); +break; +case 4: +case 5: +if ((ch = val.charAt(pt + 1)) == '+' || ch == '-') break; +default: +this.logError("Error - " + label + " value " + val + " is not of the format xxxE[+/-]nn or xxxE[+/-]nnn (spec. 4.5.3) -- " + val.substring(pt) + " ignored!"); +val = val.substring(0, pt); +} +}return Double.parseDouble(val); +}, "~S,~S"); +Clazz_defineMethod(c$, "decompressData", +function(spec, minMaxY){ +var errPt = this.errorLog.length(); +spec.setIncreasing(spec.fileLastX > spec.fileFirstX); +spec.setContinuous(true); +var decompressor = new JSV.source.JDXDecompressor(this.t, spec.fileFirstX, spec.fileLastX, spec.xFactor, spec.yFactor, spec.fileNPoints); +var t = System.currentTimeMillis(); +var xyCoords = decompressor.decompressData(this.errorLog); +if (JU.Logger.debugging) JU.Logger.debug("decompression time = " + (System.currentTimeMillis() - t) + " ms"); +spec.setXYCoords(xyCoords); +var d = decompressor.getMinY(); +if (minMaxY != null) { +if (d < minMaxY[0]) minMaxY[0] = d; +d = decompressor.getMaxY(); +if (d > minMaxY[1]) minMaxY[1] = d; +}spec.finalizeCoordinates(); +if (this.errorLog.length() != errPt) { +var fileDeltaX = JSV.common.Coordinate.deltaX(spec.fileLastX, spec.fileFirstX, spec.fileNPoints); +this.logError(spec.getTitle()); +this.logError("firstX from Header " + spec.fileFirstX); +this.logError("lastX from Header " + spec.fileLastX + " Found " + decompressor.lastX); +this.logError("deltaX from Header " + fileDeltaX); +this.logError("Number of points in Header " + spec.fileNPoints + " Found " + decompressor.getNPointsFound()); +} else { +}if (JU.Logger.debugging) { +System.err.println(this.errorLog.toString()); +}}, "JSV.source.JDXDataObject,~A"); +c$.addHeader = Clazz_defineMethod(c$, "addHeader", +function(table, label, value){ +var entry = null; +for (var i = 0; i < table.size(); i++) if ((entry = table.get(i))[0].equals(label)) { +entry[1] = value; +return; +} +table.addLast( Clazz_newArray(-1, [label, value, JSV.source.JDXSourceStreamTokenizer.cleanLabel(label)])); +}, "JU.Lst,~S,~S"); +Clazz_defineMethod(c$, "checkCustomTags", +function(spectrum, label, value){ +if (label.length > 10) label = label.substring(0, 10); +if (spectrum == null) System.out.println(label); + else this.modelSpectrum = spectrum; +var pt = "##$MODELS ##$PEAKS ##$SIGNALS##$MOLFILE##PEAKASSI##$UVIRASS##$MSFRAGM".indexOf(label); +if (pt < 0) return false; +this.getMpr().set(this, this.filePath, null); +try { +this.reader = new java.io.BufferedReader( new java.io.StringReader(value)); +switch (pt) { +case 0: +this.mpr.readModels(); +break; +case 10: +case 20: +this.peakData = new JU.Lst(); +this.source.peakCount += this.mpr.readPeaks(pt == 20, this.source.peakCount); +break; +case 30: +this.acdAssignments = new JU.Lst(); +this.acdMolFile = JU.PT.rep(value, "$$ Empty String", ""); +break; +case 40: +case 50: +case 60: +this.acdAssignments = this.mpr.readACDAssignments((spectrum).fileNPoints, pt == 40); +break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.getMessage()); +} else { +throw e; +} +} finally { +this.reader = null; +} +return true; +}, "JSV.common.Spectrum,~S,~S"); +Clazz_defineMethod(c$, "getMpr", +function(){ +return (this.mpr == null ? this.mpr = JSV.common.JSViewer.getInterface("J.jsv.JDXMOLParser") : this.mpr); +}); +Clazz_overrideMethod(c$, "rd", +function(){ +return this.reader.readLine(); +}); +Clazz_overrideMethod(c$, "setSpectrumPeaks", +function(nH, peakXLabel, peakYlabel){ +this.modelSpectrum.setPeakList(this.peakData, peakXLabel, peakYlabel); +if (this.modelSpectrum.isNMR()) this.modelSpectrum.setHydrogenCount(nH); +}, "~N,~S,~S"); +Clazz_overrideMethod(c$, "addPeakData", +function(info){ +if (this.peakData == null) this.peakData = new JU.Lst(); +this.peakData.addLast( new JSV.common.PeakInfo(info)); +}, "~S"); +Clazz_overrideMethod(c$, "processModelData", +function(id, data, type, base, last, modelScale, vibScale, isFirst){ +}, "~S,~S,~S,~S,~S,~N,~N,~B"); +Clazz_overrideMethod(c$, "discardLinesUntilContains", +function(containsMatch){ +var line; +while ((line = this.rd()) != null && line.indexOf(containsMatch) < 0) { +} +return line; +}, "~S"); +Clazz_overrideMethod(c$, "discardLinesUntilContains2", +function(s1, s2){ +var line; +while ((line = this.rd()) != null && line.indexOf(s1) < 0 && line.indexOf(s2) < 0) { +} +return line; +}, "~S,~S"); +Clazz_overrideMethod(c$, "discardLinesUntilNonBlank", +function(){ +var line; +while ((line = this.rd()) != null && line.trim().length == 0) { +} +return line; +}); +c$.VAR_LIST_TABLE = Clazz_newArray(-1, ["PEAKTABLE XYDATA XYPOINTS", " (XY..XY) (X++(Y..Y)) (XY..XY) "]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["JSV.source.JDXHeader"], "JSV.source.JDXSource", ["JU.Lst"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.type = 0; +this.isCompoundSource = false; +this.jdxSpectra = null; +this.errors = ""; +this.filePath = null; +this.peakCount = 0; +this.isView = false; +this.inlineData = null; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXSource", JSV.source.JDXHeader); +Clazz_makeConstructor(c$, +function(type, filePath){ +Clazz_superConstructor (this, JSV.source.JDXSource, []); +this.type = type; +this.setFilePath(filePath); +this.headerTable = new JU.Lst(); +this.jdxSpectra = new JU.Lst(); +this.isCompoundSource = (type != 0); +}, "~N,~S"); +Clazz_defineMethod(c$, "dispose", +function(){ +this.headerTable = null; +this.jdxSpectra = null; +}); +Clazz_defineMethod(c$, "getJDXSpectrum", +function(index){ +return (this.jdxSpectra.size() <= index ? null : this.jdxSpectra.get(index)); +}, "~N"); +Clazz_defineMethod(c$, "addJDXSpectrum", +function(filePath, spectrum, forceSub){ +if (filePath == null) filePath = this.filePath; +spectrum.setFilePath(filePath); +if (this.inlineData != null) spectrum.setInlineData(this.inlineData); +var n = this.jdxSpectra.size(); +if (n == 0 || !this.jdxSpectra.get(n - 1).addSubSpectrum(spectrum, forceSub)) this.jdxSpectra.addLast(spectrum); +}, "~S,JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "getNumberOfSpectra", +function(){ +return this.jdxSpectra.size(); +}); +Clazz_defineMethod(c$, "getSpectra", +function(){ +return this.jdxSpectra; +}); +Clazz_defineMethod(c$, "getSpectraAsArray", +function(){ +return (this.jdxSpectra == null ? null : this.jdxSpectra.toArray()); +}); +Clazz_defineMethod(c$, "getErrorLog", +function(){ +return this.errors; +}); +Clazz_defineMethod(c$, "setErrorLog", +function(errors){ +this.errors = errors; +}, "~S"); +Clazz_defineMethod(c$, "setFilePath", +function(filePath){ +this.filePath = filePath; +}, "~S"); +Clazz_defineMethod(c$, "getFilePath", +function(){ +return this.filePath; +}); +c$.createView = Clazz_defineMethod(c$, "createView", +function(specs){ +var source = new JSV.source.JDXSource(-2, "view"); +source.isView = true; +for (var i = 0; i < specs.size(); i++) source.addJDXSpectrum(specs.get(i).getFilePath(), specs.get(i), false); + +return source; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getHeaderRowDataAsArray", +function(addDataClass, rowData){ +if (rowData == null) rowData = Clazz_newArray(0, 0, null); +var data = this.getHeaderRowDataAsArray(addDataClass, rowData.length); +for (var i = rowData.length; --i >= 0; ) data[data.length - rowData.length + i] = rowData[i]; + +return data; +}, "~B,~A"); +Clazz_defineMethod(c$, "setID", +function(id){ +this.jdxSpectra.get(0).sourceID = id; +}, "~S"); +Clazz_defineMethod(c$, "matchesFilePath", +function(filePath){ +return this.filePath.equals(filePath) || this.filePath.$replace('\\', '/').equals(filePath); +}, "~S"); +Clazz_defineMethod(c$, "setInlineData", +function(data){ +this.inlineData = data; +if (this.jdxSpectra != null) for (var i = this.jdxSpectra.size(); --i >= 0; ) this.jdxSpectra.get(i).setInlineData(data); + +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(null, "JSV.source.JDXSourceStreamTokenizer", ["JU.SB", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.br = null; +this.rawLabel = null; +this.value = null; +this.labelLineNo = 0; +this.line = null; +this.lineNo = 0; +this.rawLine = null; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXSourceStreamTokenizer", null); +Clazz_makeConstructor(c$, +function(br){ +this.br = br; +}, "java.io.BufferedReader"); +Clazz_defineMethod(c$, "peakLabel", +function(){ +return this.nextLabel(false); +}); +Clazz_defineMethod(c$, "getLabel", +function(){ +return this.nextLabel(true); +}); +Clazz_defineMethod(c$, "nextLabel", +function(isGet){ +this.rawLabel = null; +this.value = null; +while (this.line == null || this.line.length == 0) { +try { +this.readLine(); +if (this.line == null) { +this.line = ""; +return null; +}this.line = this.line.trim(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +this.line = ""; +return null; +} else { +throw e; +} +} +if (this.line.startsWith("##")) break; +this.line = null; +} +this.rawLine = this.line; +var pt = this.line.indexOf("="); +if (pt < 0) { +if (isGet) JU.Logger.info("BAD JDX LINE -- no '=' (line " + this.lineNo + "): " + this.line); +this.rawLabel = this.line; +if (!isGet) this.line = ""; +} else { +this.rawLabel = this.line.substring(0, pt).trim(); +if (isGet) this.line = this.line.substring(pt + 1); +}this.labelLineNo = this.lineNo; +if (JU.Logger.debugging) JU.Logger.info(this.rawLabel); +return JSV.source.JDXSourceStreamTokenizer.cleanLabel(this.rawLabel); +}, "~B"); +c$.cleanLabel = Clazz_defineMethod(c$, "cleanLabel", +function(label){ +if (label == null) return null; +var i; +var str = new JU.SB(); +for (i = 0; i < label.length; i++) { +switch ((label.charAt(i)).charCodeAt(0)) { +case 47: +case 92: +case 32: +case 45: +case 95: +break; +default: +str.appendC(label.charAt(i)); +break; +} +} +return str.toString().toUpperCase(); +}, "~S"); +Clazz_defineMethod(c$, "getValue", +function(){ +if (this.value != null) return this.value; +var sb = new JU.SB().append(this.line); +if (sb.length() > 0) sb.appendC('\n'); +try { +while (this.readLine() != null) { +if (this.line.indexOf("##") >= 0 && this.line.trim().startsWith("##")) break; +sb.append(this.line).appendC('\n'); +} +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +JU.Logger.info(e.toString()); +} else { +throw e; +} +} +this.value = (this.rawLabel.startsWith("##$") ? sb.toString().trim() : JSV.source.JDXSourceStreamTokenizer.trimLines(sb)); +if (JU.Logger.debugging) JU.Logger.info(this.value); +return this.value; +}); +Clazz_defineMethod(c$, "readLineTrimmed", +function(){ +this.readLine(); +if (this.line == null) return null; +if (this.line.indexOf("$$") < 0) return this.line.trim(); +var sb = new JU.SB().append(this.line); +return JSV.source.JDXSourceStreamTokenizer.trimLines(sb); +}); +Clazz_defineMethod(c$, "flushLine", +function(){ +var sb = new JU.SB().append(this.line); +this.line = null; +return JSV.source.JDXSourceStreamTokenizer.trimLines(sb); +}); +Clazz_defineMethod(c$, "readLine", +function(){ +this.line = this.br.readLine(); +this.lineNo++; +return this.line; +}); +c$.trimLines = Clazz_defineMethod(c$, "trimLines", +function(v){ +var n = v.length(); +var ilast = n - 1; +var vpt = JSV.source.JDXSourceStreamTokenizer.ptNonWhite(v, 0, n); +if (vpt >= n) return ""; +var buffer = Clazz_newCharArray (n - vpt, '\0'); +var pt = 0; +for (; vpt < n; vpt++) { +var ch; +switch ((ch = v.charAt(vpt)).charCodeAt(0)) { +case 13: +if (vpt < ilast && v.charAt(vpt + 1) == '\n') continue; +ch = '\n'; +break; +case 10: +if (pt > 0 && buffer[pt - 1] != '\n') pt -= vpt - JSV.source.JDXSourceStreamTokenizer.ptNonSpaceRev(v, vpt) - 1; +vpt = JSV.source.JDXSourceStreamTokenizer.ptNonSpace(v, ++vpt, n) - 1; +break; +case 36: +if (vpt < ilast && v.charAt(vpt + 1) == '$') { +vpt++; +while (++vpt < n && "\n\r".indexOf(v.charAt(vpt)) < 0) { +} +continue; +}break; +} +if (ch == '\n' && pt > 0 && buffer[pt - 1] == '\n') continue; +buffer[pt++] = ch; +} +if (pt > 0 && buffer[pt - 1] == '\n') --pt; +return ( String.instantialize(buffer)).substring(0, pt).trim(); +}, "JU.SB"); +c$.ptNonWhite = Clazz_defineMethod(c$, "ptNonWhite", +function(v, pt, n){ +while (pt < n && Character.isWhitespace(v.charAt(pt))) pt++; + +return pt; +}, "JU.SB,~N,~N"); +c$.ptNonSpace = Clazz_defineMethod(c$, "ptNonSpace", +function(v, pt, n){ +while (pt < n && (v.charAt(pt) == ' ' || v.charAt(pt) == '\t')) pt++; + +return pt; +}, "JU.SB,~N,~N"); +c$.ptNonSpaceRev = Clazz_defineMethod(c$, "ptNonSpaceRev", +function(v, pt){ +while (--pt >= 0 && (v.charAt(pt) == ' ' || v.charAt(pt) == '\t')) { +} +return pt; +}, "JU.SB,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +Clazz_load(["JSV.api.JSVTree"], "JSV.tree.SimpleTree", ["JSV.common.JSVFileManager", "$.PanelNode", "JSV.tree.SimpleTreeModel", "$.SimpleTreeNode", "$.SimpleTreePath"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.si = null; +this.rootNode = null; +this.spectraTreeModel = null; +this.vwr = null; +this.selectedPath = null; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTree", null, JSV.api.JSVTree); +Clazz_makeConstructor(c$, +function(viewer){ +this.vwr = viewer; +this.rootNode = new JSV.tree.SimpleTreeNode("Spectra", null); +this.spectraTreeModel = new JSV.tree.SimpleTreeModel(this.rootNode); +}, "JSV.common.JSViewer"); +Clazz_overrideMethod(c$, "getRootNode", +function(){ +return this.rootNode; +}); +Clazz_defineMethod(c$, "valueChanged", +function(){ +this.vwr.selectedTreeNode(this.getLastSelectedPathComponent()); +}); +Clazz_defineMethod(c$, "getLastSelectedPathComponent", +function(){ +return (this.selectedPath == null ? null : this.selectedPath.getLastPathComponent()); +}); +Clazz_overrideMethod(c$, "setSelectedPanel", +function(si, jsvp){ +if (jsvp != null) { +var treeNode = JSV.common.PanelNode.findNode(jsvp, this.vwr.panelNodes).treeNode; +this.setSelectionPath(this.vwr.spectraTree.newTreePath(treeNode.getPath())); +}}, "JSV.api.ScriptInterface,JSV.api.JSVPanel"); +Clazz_defineMethod(c$, "setSelectionPath", +function(newTreePath){ +this.selectedPath = newTreePath; +this.valueChanged(); +}, "JSV.api.JSVTreePath"); +Clazz_overrideMethod(c$, "createTree", +function(fileCount, source, panels){ +var tree = this.vwr.spectraTree; +var rootNode = tree.getRootNode(); +var panelNodes = this.vwr.panelNodes; +var fileName = JSV.common.JSVFileManager.getTagName(source.getFilePath()); +var panelNode = new JSV.common.PanelNode(null, fileName, source, null); +var fileNode = new JSV.tree.SimpleTreeNode(fileName, panelNode); +panelNode.setTreeNode(fileNode); +tree.spectraTreeModel.insertNodeInto(fileNode, rootNode, rootNode.getChildCount()); +for (var i = 0; i < panels.length; i++) { +var jsvp = panels[i]; +var id = fileCount + "." + (i + 1); +panelNode = new JSV.common.PanelNode(id, fileName, source, jsvp); +var treeNode = new JSV.tree.SimpleTreeNode(panelNode.toString(), panelNode); +panelNode.setTreeNode(treeNode); +panelNodes.addLast(panelNode); +tree.spectraTreeModel.insertNodeInto(treeNode, fileNode, fileNode.getChildCount()); +} +this.vwr.selectFrameNode(panels[0]); +return fileNode; +}, "~N,JSV.source.JDXSource,~A"); +Clazz_overrideMethod(c$, "setPath", +function(path){ +this.setSelectionPath(path); +}, "JSV.api.JSVTreePath"); +Clazz_defineMethod(c$, "newTreePath", +function(path){ +return new JSV.tree.SimpleTreePath(path); +}, "~A"); +Clazz_overrideMethod(c$, "deleteNodes", +function(toDelete){ +for (var i = 0; i < toDelete.size(); i++) { +this.spectraTreeModel.removeNodeFromParent(toDelete.get(i)); +} +}, "JU.Lst"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +Clazz_load(["java.util.Enumeration"], "JSV.tree.SimpleTreeEnumeration", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.node = null; +this.pt = 0; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTreeEnumeration", null, java.util.Enumeration); +Clazz_makeConstructor(c$, +function(jsTreeNode){ +this.node = jsTreeNode; +}, "JSV.tree.SimpleTreeNode"); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +return (this.pt < this.node.$children.size()); +}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +return this.node.$children.get(this.pt++); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.rootNode = null; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTreeModel", null); +Clazz_makeConstructor(c$, +function(rootNode){ +this.rootNode = rootNode; +}, "JSV.api.JSVTreeNode"); +Clazz_defineMethod(c$, "insertNodeInto", +function(fileNode, rootNode, i){ +var node = rootNode; +node.$children.add(i, fileNode); +(fileNode).prevNode = node; +}, "JSV.api.JSVTreeNode,JSV.api.JSVTreeNode,~N"); +Clazz_defineMethod(c$, "removeNodeFromParent", +function(node){ +(node).prevNode.$children.removeObj(node); +}, "JSV.api.JSVTreeNode"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +Clazz_load(["JSV.api.JSVTreeNode"], "JSV.tree.SimpleTreeNode", ["JU.Lst", "JSV.tree.SimpleTreeEnumeration"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.panelNode = null; +this.index = 0; +this.prevNode = null; +this.$children = null; +this.text = null; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTreeNode", null, JSV.api.JSVTreeNode); +Clazz_makeConstructor(c$, +function(text, panelNode){ +this.text = text; +this.panelNode = panelNode; +this.$children = new JU.Lst(); +}, "~S,JSV.common.PanelNode"); +Clazz_overrideMethod(c$, "getPanelNode", +function(){ +return this.panelNode; +}); +Clazz_overrideMethod(c$, "getIndex", +function(){ +return this.index; +}); +Clazz_overrideMethod(c$, "setIndex", +function(index){ +this.index = index; +}, "~N"); +Clazz_overrideMethod(c$, "children", +function(){ +return new JSV.tree.SimpleTreeEnumeration(this); +}); +Clazz_overrideMethod(c$, "getChildCount", +function(){ +return this.$children.size(); +}); +Clazz_overrideMethod(c$, "getPath", +function(){ +var o = new JU.Lst(); +var node = this; +o.addLast(node); +while ((node = node.prevNode) != null) o.add(0, node); + +return o.toArray(); +}); +Clazz_overrideMethod(c$, "isLeaf", +function(){ +return (this.prevNode != null && this.prevNode.prevNode != null); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.text; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +Clazz_load(["JSV.api.JSVTreePath"], "JSV.tree.SimpleTreePath", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.path = null; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTreePath", null, JSV.api.JSVTreePath); +Clazz_makeConstructor(c$, +function(path){ +this.path = path; +}, "~A"); +Clazz_overrideMethod(c$, "getLastPathComponent", +function(){ +return (this.path == null || this.path.length == 0 ? null : this.path[this.path.length - 1]); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 + +})(); + +Clazz._coreLoaded = true; + + + +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejmoljsv.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corejmoljsv.z.js new file mode 100755 index 000000000000..eb2698cd3762 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejmoljsv.z.js @@ -0,0 +1,3451 @@ +(function(ra,tb,ub,vb,v,wb,n,C,A,u,r,F,xb,x,B,E,D,L,G,N,I,O,K,U,Y,W,fa,w,ma,sa,ha,ta,Ca,ba,Da,R,ua,Oa,cb,db,eb,Pa,fb,gb,hb,ib,jb,kb,lb,Qa,Ra,mb,Sa,nb,yb,c,f,qa,Ia){Jmol.___JmolDate="$Date: 2024-06-07 15:31:04 +0100 (Fri, 07 Jun 2024) $";Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties";Jmol.___JmolVersion="16.2.17";(function(b){b._Loader.registerPackages("java",["io","lang","lang.reflect","util"]);var a=java.util;b._Loader.ignore("net.sf.j2s.ajax.HttpRequest java.util.MapEntry.Type java.net.UnknownServiceException java.lang.Runtime java.security.AccessController java.security.PrivilegedExceptionAction java.io.File java.io.FileInputStream java.io.FileWriter java.io.OutputStreamWriter java.util.concurrent.Executors".split(" ")); +Math.rint=Math.round;Math.log10||(Math.log10=function(a){return Math.log(a)/2.302585092994046});Math.signum||(Math.signum=function(a){return 0==a||isNaN(a)?a:0>a?-1:1});if(b._supportsNativeObject)for(var d=0;dthis&&0this&&0d?1:0},"Number,Number");c(Integer,"bitCount",function(a){a-=a>>>1&1431655765;a=(a&858993459)+(a>>>2&858993459);a=a+(a>>>4)&252645135;a+=a>>>8;return a+(a>>>16)&63},"Number");Integer.bitCount=Integer.prototype.bitCount;c(Integer,"numberOfLeadingZeros",function(a){if(0==a)return 32;var d=1;0==a>>> +16&&(d+=16,a<<=16);0==a>>>24&&(d+=8,a<<=8);0==a>>>28&&(d+=4,a<<=4);0==a>>>30&&(d+=2,a<<=2);return d-(a>>>31)},"Number");Integer.numberOfLeadingZeros=Integer.prototype.numberOfLeadingZeros;c(Integer,"numberOfTrailingZeros",function(a){if(0==a)return 32;var d=31,h=a<<16;0!=h&&(d-=16,a=h);h=a<<8;0!=h&&(d-=8,a=h);h=a<<4;0!=h&&(d-=4,a=h);h=a<<2;0!=h&&(d-=2,a=h);return d-(a<<1>>>31)},"Number");Integer.numberOfTrailingZeros=Integer.prototype.numberOfTrailingZeros;c(Integer,"parseIntRadix",function(a,d){if(null== +a)throw new NumberFormatException("null");if(2>d)throw new NumberFormatException("radix "+d+" less than Character.MIN_RADIX");if(36=b)&&(0a){var d=a&16777215;return(a>>24&255)._numberToString(16)+(d="000000"+d._numberToString(16)).substring(d.length- +6)}return a._numberToString(16)};Integer.toOctalString=Integer.prototype.toOctalString=function(a){a.valueOf&&(a=a.valueOf());return a._numberToString(8)};Integer.toBinaryString=Integer.prototype.toBinaryString=function(a){a.valueOf&&(a=a.valueOf());return a._numberToString(2)};Integer.decodeRaw=c(Integer,"decodeRaw",function(a){0<=a.indexOf(".")&&(a="");var d=a.startsWith("-")?1:0;a=a.replace(/\#/,"0x").toLowerCase();d=a.startsWith("0x",d)?16:a.startsWith("0",d)?8:10;a=Number(a)&4294967295;return 8== +d?parseInt(a,8):a},"~S");Integer.decode=c(Integer,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a)||aInteger.MAX_VALUE)throw new NumberFormatException("Invalid Integer");return new Integer(a)},"~S");f(Integer,"hashCode",function(){return this.valueOf()});java.lang.Long=Long=function(){u(this,arguments)};ta(Long,"Long",Number,Comparable,null,!0);Long.prototype.valueOf=function(){return 0};Long.toString=Long.prototype.toString=function(){return 0!=arguments.length?""+arguments[0]: +this===Long?"class java.lang.Long":""+this.valueOf()};ua(Long,function(a){null==a&&(a=0);a="number"==typeof a?Math.round(a):Integer.parseIntRadix(a,10);this.valueOf=function(){return a}});Long.TYPE=Long.prototype.TYPE=Long;c(Long,"parseLong",function(a,d){return Integer.parseInt(a,d||10)});Long.parseLong=Long.prototype.parseLong;f(Long,"$valueOf",function(a){return new Long(a)});Long.$valueOf=Long.prototype.$valueOf;f(Long,"equals",function(a){return null==a||!C(a,Long)?!1:a.valueOf()==this.valueOf()}, +"Object");Long.toHexString=Long.prototype.toHexString=function(a){return a.toString(16)};Long.toOctalString=Long.prototype.toOctalString=function(a){return a.toString(8)};Long.toBinaryString=Long.prototype.toBinaryString=function(a){return a.toString(2)};Long.decode=c(Long,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a))throw new NumberFormatException("Invalid Long");return new Long(a)},"~S");java.lang.Short=Short=function(){u(this,arguments)};ta(Short,"Short",Number,Comparable,null,!0);Short.prototype.valueOf= +function(){return 0};Short.toString=Short.prototype.toString=function(){return 0!=arguments.length?""+arguments[0]:this===Short?"class java.lang.Short":""+this.valueOf()};ua(Short,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Integer.parseIntRadix(a,10));a=a.shortValue();this.valueOf=function(){return a}});Short.MIN_VALUE=Short.prototype.MIN_VALUE=-32768;Short.MAX_VALUE=Short.prototype.MAX_VALUE=32767;Short.TYPE=Short.prototype.TYPE=Short;c(Short,"parseShortRadix",function(a,d){return Integer.parseIntRadix(a, +d).shortValue()},"String, Number");Short.parseShortRadix=Short.prototype.parseShortRadix;c(Short,"parseShort",function(a){return Short.parseShortRadix(a,10)},"String");Short.parseShort=Short.prototype.parseShort;f(Short,"$valueOf",function(a){return new Short(a)});Short.$valueOf=Short.prototype.$valueOf;f(Short,"equals",function(a){return null==a||!C(a,Short)?!1:a.valueOf()==this.valueOf()},"Object");Short.toHexString=Short.prototype.toHexString=function(a){return a.toString(16)};Short.toOctalString= +Short.prototype.toOctalString=function(a){return a.toString(8)};Short.toBinaryString=Short.prototype.toBinaryString=function(a){return a.toString(2)};Short.decode=c(Short,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a)||-32768>a||32767a||127a.indexOf(".")&&(0>a.indexOf("e")&&"NaN"!=a)&&(a+=".0");return a};java.lang.Float=Float=function(){u(this,arguments)};ta(Float,"Float",Number,Comparable,null,!0);Float.prototype.valueOf= +function(){return 0};Float.toString=Float.prototype.toString=function(){return 0!=arguments.length?b._floatToString(arguments[0]):this===Float?"class java.lang.Float":b._floatToString(this.valueOf())};b._a32=null;Float.floatToIntBits=function(a){var d=b._a32||(b._a32=new Float32Array(1));d[0]=a;return(new Int32Array(d.buffer))[0]};ua(Float,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Number(a));this.valueOf=function(){return a}});Float.serialVersionUID=Float.prototype.serialVersionUID=-0x2512365d24c31000; +Float.MIN_VALUE=Float.prototype.MIN_VALUE=1.4E-45;Float.MAX_VALUE=Float.prototype.MAX_VALUE=3.4028235E38;Float.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY;Float.POSITIVE_INFINITY=Number.POSITIVE_INFINITY;Float.NaN=Number.NaN;Float.TYPE=Float.prototype.TYPE=Float;c(Float,"parseFloat",function(a){if(null==a)throw new NumberFormatException("null");if("number"==typeof a)return a;var d=Number(a);if(isNaN(d))throw new NumberFormatException("Not a Number : "+a);return d},"String");Float.parseFloat=Float.prototype.parseFloat; +f(Float,"$valueOf",function(a){return new Float(a)});Float.$valueOf=Float.prototype.$valueOf;c(Float,"isNaN",function(a){return isNaN(1==arguments.length?a:this.valueOf())},"Number");Float.isNaN=Float.prototype.isNaN;c(Float,"isInfinite",function(a){return!isFinite(1==arguments.length?a:this.valueOf())},"Number");Float.isInfinite=Float.prototype.isInfinite;f(Float,"equals",function(a){return null==a||!C(a,Float)?!1:a.valueOf()==this.valueOf()},"Object");java.lang.Double=Double=function(){u(this,arguments)}; +ta(Double,"Double",Number,Comparable,null,!0);Double.prototype.valueOf=function(){return 0};Double.toString=Double.prototype.toString=function(){return 0!=arguments.length?b._floatToString(arguments[0]):this===Double?"class java.lang.Double":b._floatToString(this.valueOf())};ua(Double,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Double.parseDouble(a));this.valueOf=function(){return a}});Double.serialVersionUID=Double.prototype.serialVersionUID=-0x7f4c3db5d6940400;Double.MIN_VALUE=Double.prototype.MIN_VALUE= +4.9E-324;Double.MAX_VALUE=Double.prototype.MAX_VALUE=1.7976931348623157E308;Double.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY;Double.POSITIVE_INFINITY=Number.POSITIVE_INFINITY;Double.NaN=Number.NaN;Double.TYPE=Double.prototype.TYPE=Double;c(Double,"isNaN",function(a){return isNaN(1==arguments.length?a:this.valueOf())},"Number");Double.isNaN=Double.prototype.isNaN;c(Double,"isInfinite",function(a){return!isFinite(1==arguments.length?a:this.valueOf())},"Number");Double.isInfinite=Double.prototype.isInfinite; +c(Double,"parseDouble",function(a){if(null==a)throw new NumberFormatException("null");if("number"==typeof a)return a;var d=Number(a);if(isNaN(d))throw new NumberFormatException("Not a Number : "+a);return d},"String");Double.parseDouble=Double.prototype.parseDouble;c(Double,"$valueOf",function(a){return new Double(a)},"Number");Double.$valueOf=Double.prototype.$valueOf;f(Double,"equals",function(a){return null==a||!C(a,Double)?!1:a.valueOf()==this.valueOf()},"Object");Boolean=java.lang.Boolean=Boolean|| +function(){u(this,arguments)};if(b._supportsNativeObject)for(d=0;de)h[h.length]=d.charAt(b);else if(192e){e&=31;b++;var c=d.charCodeAt(b)&63,e=(e<<6)+c;h[h.length]=String.fromCharCode(e)}else if(224<=e){e&=15;b++;c=d.charCodeAt(b)&63;b++;var g=d.charCodeAt(b)&63,e=(e<<12)+(c<<6)+g;h[h.length]=String.fromCharCode(e)}}return h.join("")};a.readUTF8Array=function(d){var h=a.guessEncodingArray(d),b=0;h==a.UTF8? +b=3:h==a.UTF16&&(b=2);for(h=[];be)h[h.length]=String.fromCharCode(e);else if(192e){var e=e&31,c=d[++b]&63,e=(e<<6)+c;h[h.length]=String.fromCharCode(e)}else if(224<=e){var e=e&15,c=d[++b]&63,g=d[++b]&63,e=(e<<12)+(c<<6)+g;h[h.length]=String.fromCharCode(e)}}return h.join("")};a.convert2UTF8=function(d){var h=this.guessEncoding(d),b=0;if(h==a.UTF8)return d;h==a.UTF16&&(b=2);for(var h=Array(0+d.length-b),e=b;ec)h[0+ +e-b]=d.charAt(e);else if(2047>=c){var g=192+((c&1984)>>6),j=128+(c&63);h[0+e-b]=String.fromCharCode(g)+String.fromCharCode(j)}else g=224+((c&61440)>>12),j=128+((c&4032)>>6),c=128+(c&63),h[0+e-b]=String.fromCharCode(g)+String.fromCharCode(j)+String.fromCharCode(c)}return h.join("")};a.base64Chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");a.encodeBase64=function(d){if(null==d||0==d.length)return d;for(var h=a.base64Chars,b=d.length,e=0,c=[],g,j;e>2],e>4],e>6],c[c.length]=h[g&63]):(c[c.length]=h[j<<2&60],c[c.length]="=")):(c[c.length]=h[g<<4&48],c[c.length]="=",c[c.length]="=");return c.join("")};a.decodeBase64=function(d){if(null==d||0==d.length)return d;var h=a.base64Chars,b=a.xBase64Chars;if(null==a.xBase64Chars){for(var b={},e=0;ev++;)g= +b[d.charAt(e++)],j=b[d.charAt(e++)],f=b[d.charAt(e++)],M=b[d.charAt(e++)],c[c.length]=String.fromCharCode(g<<2&255|j>>4),null!=f&&(c[c.length]=String.fromCharCode(j<<4&255|f>>2),null!=M&&(c[c.length]=String.fromCharCode(f<<6&255|M)));return c.join("")};if(null==String.prototype.$replace){java.lang.String=String;b._setDeclared("String",String);if(b._supportsNativeObject)for(var d=0;dthis.indexOf(a))return""+this;1==a.length?0<="\\$.*+|?^{}()[]".indexOf(a)&&(a="\\"+a):a=a.replace(/([\\\$\.\*\+\|\?\^\{\}\(\)\[\]])/g,function(a,d){return"\\"+d});return this.replace(RegExp(a,"gm"),d)};d.$generateExpFunction= +function(a){var d=[],h=[],b=0;d[0]="";for(var q=0;qb||0>d||d>this.length-q||b>h.length-q)return!1;d=this.substring(d,d+q);h=h.substring(b,b+q);a&&(d=d.toLowerCase(), +h=h.toLowerCase());return d==h};d.$plit=function(a,d){if(!d&&" "==a)return this.split(a);if(null!=d&&0d&&(h[d-1]=q.substring(q.indexOf("@@_@@")+5),h.length=d);return h}h=RegExp(a,"gm");return this.split(h)};d.trim||(d.trim=function(){return this.replace(/^\s+/g,"").replace(/\s+$/g,"")});if(!d.startsWith||!d.endsWith){var h=function(a,d,h){var b= +h,q=0,e=d.length;if(0>h||h>a.length-e)return!1;for(;0<=--e;)if(a.charAt(b++)!=d.charAt(q++))return!1;return!0};d.startsWith=function(a){return 1==arguments.length?h(this,arguments[0],0):2==arguments.length?h(this,arguments[0],arguments[1]):!1};d.endsWith=function(a){return h(this,a,this.length-a.length)}}d.equals=function(a){return this.valueOf()==a};d.equalsIgnoreCase=function(a){return null==a?!1:this==a||this.toLowerCase()==a.toLowerCase()};d.hash=0;d.hashCode=function(){var a=this.hash;if(0== +a){for(var d=0,h=this.length,b=0;b>8,e+=2):h[e]=b,e++;return O(h)};d.contains=function(a){return 0<=this.indexOf(a)};d.compareTo=function(a){return this>a?1:thish?1:-1};d.contentEquals=function(a){if(this.length!=a.length())return!1;a=a.getValue();for(var d=0,h=0,b=this.length;0!= +b--;)if(this.charCodeAt(d++)!=a[h++])return!1;return!0};d.getChars=function(a,d,h,b){if(0>a)throw new StringIndexOutOfBoundsException(a);if(d>this.length)throw new StringIndexOutOfBoundsException(d);if(a>d)throw new StringIndexOutOfBoundsException(d-a);if(null==h)throw new NullPointerException;for(var q=0;q=d+this.length?-1:null!=d?this.$lastIndexOf(a,d):this.$lastIndexOf(a)};d.intern=function(){return this.valueOf()};String.copyValueOf=d.copyValueOf=function(){return 1==arguments.length?String.instantialize(arguments[0]):String.instantialize(arguments[0],arguments[1],arguments[2])};d.codePointAt||(d.codePointAt=d.charCodeAt)})(String.prototype);var c=new TextDecoder;String.instantialize=function(){switch(arguments.length){case 0:return new String;case 1:var a=arguments[0];return a.BYTES_PER_ELEMENT? +0==a.length?"":"number"==typeof a[0]?c.decode(a):a.join(""):a instanceof Array?0==a.length?"":"number"==typeof a[0]?c.decode(new Uint8Array(a)):a.join(""):"string"==typeof a||a instanceof String?new String(a):""+a;case 2:var a=arguments[0],d=arguments[1];return"string"==typeof d?String.instantialize(a,0,a.length,d):String.instantialize(a,d,0,a.length);case 3:var a=arguments[0],h=arguments[1],d=arguments[2];arguments[2]instanceof Array&&(a=arguments[2],h=arguments[0],d=arguments[1]);var b=Array(d); +if(0>h||d+h>a.length)throw new IndexOutOfBoundsException;if(0=a},"~N");d.isUpperCase=c(d,"isUpperCase",function(a){a= +a.charCodeAt(0);return 65<=a&&90>=a},"~N");d.isLowerCase=c(d,"isLowerCase",function(a){a=a.charCodeAt(0);return 97<=a&&122>=a},"~N");d.isWhitespace=c(d,"isWhitespace",function(a){a=a.charCodeAt(0);return 28<=a&&32>=a||9<=a&&13>=a||5760==a||8192<=a&&8199!=a&&(8203>=a||8232==a||8233==a||12288==a)},"~N");d.isLetter=c(d,"isLetter",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a},"~N");d.isLetterOrDigit=c(d,"isLetterOrDigit",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>= +a||48<=a&&57>=a},"~N");d.isSpaceChar=c(d,"isSpaceChar",function(a){a=a.charCodeAt(0);return 32==a||160==a||5760==a?!0:8192>a?!1:8203>=a||8232==a||8233==a||8239==a||12288==a},"~N");d.digit=c(d,"digit",function(a,d){var h=a.charCodeAt(0);if(2<=d&&36>=d&&128>h){var b=-1;48<=h&&57>=h?b=h-48:97<=h&&122>=h?b=h-87:65<=h&&90>=h&&(b=h-55);return ba.getTime()},"javautil.Date");c(a.Date,"equals",function(d){return C(d,a.Date)&&this.getTime()==d.getTime()},"Object");c(a.Date,"compareTo",function(a){if(null== +a)return 1;var d=this.getTime();a=a.getTime();return d>32)});d=r(function(){this.source=null;u(this,arguments)},a,"EventObject",null,java.io.Serializable);x(d,function(a){if(null!=a)this.source=a;else throw new IllegalArgumentException;},"~O");c(d,"getSource",function(){return this.source});f(d,"toString",function(){return this.getClass().getName()+"[source="+String.valueOf(this.source)+"]"}); +K(a,"EventListener");d=r(function(){this.listener=null;u(this,arguments)},a,"EventListenerProxy",null,a.EventListener);x(d,function(a){this.listener=a},"javautil.EventListener");c(d,"getListener",function(){return this.listener});K(a,"Iterator");K(a,"ListIterator",a.Iterator);K(a,"Enumeration");K(a,"Collection",Iterable);K(a,"Set",a.Collection);K(a,"Map");K(a.Map,"Entry");K(a,"List",a.Collection);K(a,"Queue",a.Collection);K(a,"RandomAccess");d=r(function(){this.stackTrace=this.cause=this.detailMessage= +null;u(this,arguments)},java.lang,"Throwable",null,java.io.Serializable);N(d,function(){this.cause=this});x(d,function(){this.fillInStackTrace()});x(d,function(a,d){this.fillInStackTrace();!d&&"object"==typeof a&&(d=a,a=d.toString());d&&(this.cause=d);this.detailMessage=a},"~S,Throwable");c(d,"getMessage",function(){return this.message||this.detailMessage||this.toString()});c(d,"getLocalizedMessage",function(){return this.getMessage()});c(d,"getCause",function(){return this.cause===this?null:this.cause}); +c(d,"initCause",function(a){if(this.cause!==this)throw new IllegalStateException("Can't overwrite cause");if(a===this)throw new IllegalArgumentException("Self-causation not permitted");this.cause=a;return this},"Throwable");f(d,"toString",function(){var a=this.getClass().getName(),d=this.message||this.detailMessage;return d?a+": "+d:a});c(d,"printStackTrace",function(){System.err.println(this.getStackTrace?this.getStackTrace():this.message+" "+Sa())});c(d,"getStackTrace",function(){for(var a=""+this+ +"\n",d=0;ddb(h.nativeClazz,Throwable))a+=h+"\n"}return a});c(d,"printStackTrace",function(){this.printStackTrace()},"java.io.PrintStream");c(d,"printStackTrace",function(){this.printStackTrace()},"java.io.PrintWriter");c(d,"fillInStackTrace",function(){this.stackTrace=[];for(var a=arguments.callee.caller,d=null,h=[],c=b._callingStackTraces.length- +1,k=!0;-1c)break;k=!0;d=b._callingStackTraces[c].caller;l=b._callingStackTraces[c].owner;c--}else d=a,null!=d.claxxOwner?l=d.claxxOwner:null!=d.exClazz&&(l=d.exClazz);a=new StackTraceElement(null!=l&&0!=l.__CLASS_NAME__.length?l.__CLASS_NAME__:"anonymous",(null==d.exName?"anonymous":d.exName)+" ("+eb(d.arguments)+")",null,-1);a.nativeClazz=l;this.stackTrace[this.stackTrace.length]=a;for(l=0;l":this.declaringClass});c(d,"getFileName",function(){return this.fileName});c(d,"getLineNumber",function(){return this.lineNumber});c(d,"getMethodName",function(){return null==this.methodName?"":this.methodName});f(d,"hashCode",function(){return null==this.methodName?0:this.methodName.hashCode()^this.declaringClass.hashCode()});c(d,"isNativeMethod",function(){return-2==this.lineNumber}); +f(d,"toString",function(){var a=this.getClassName()+"."+this.getMethodName();if(this.isNativeMethod())a+="(Native Method)";else{var d=this.getFileName();if(null==d)a+="(Unknown Source)";else{var h=this.getLineNumber(),a=a+"("+d;0<=h&&(a+=":",a+=h);a+=")"}}return a});TypeError.prototype.getMessage||(TypeError.prototype.getMessage=function(){return(this.message||this.toString())+(this.getStackTrace?this.getStackTrace():Sa())});Clazz_Error=Error;Clazz_declareTypeError=function(a,d,h,b,c){return r(function(){u(this, +arguments);return Clazz_Error()},a,d,h,b,c)};b._Error||(b._Error=Error);r(function(){u(this,arguments);return b._Error()},java.lang,"Error",Throwable);d=G(java.lang,"LinkageError",Error);d=G(java.lang,"IncompatibleClassChangeError",LinkageError);d=G(java.lang,"AbstractMethodError",IncompatibleClassChangeError);d=G(java.lang,"AssertionError",Error);x(d,function(a){I(this,AssertionError,[""+a,C(a,Throwable)?a:null])},"~O");d=G(java.lang,"ClassCircularityError",LinkageError);d=G(java.lang,"ClassFormatError", +LinkageError);d=r(function(){this.exception=null;u(this,arguments)},java.lang,"ExceptionInInitializerError",LinkageError);x(d,function(){I(this,ExceptionInInitializerError);this.initCause(null)});x(d,function(a){I(this,ExceptionInInitializerError,[a]);this.initCause(null)},"~S");x(d,function(a){I(this,ExceptionInInitializerError);this.exception=a;this.initCause(a)},"Throwable");c(d,"getException",function(){return this.exception});f(d,"getCause",function(){return this.exception});d=G(java.lang,"IllegalAccessError", +IncompatibleClassChangeError);d=G(java.lang,"InstantiationError",IncompatibleClassChangeError);d=G(java.lang,"VirtualMachineError",Error);d=G(java.lang,"InternalError",VirtualMachineError);d=G(java.lang,"NoClassDefFoundError",LinkageError);d=G(java.lang,"NoSuchFieldError",IncompatibleClassChangeError);d=G(java.lang,"NoSuchMethodError",IncompatibleClassChangeError);d=G(java.lang,"OutOfMemoryError",VirtualMachineError);d=G(java.lang,"StackOverflowError",VirtualMachineError);d=G(java.lang,"UnknownError", +VirtualMachineError);d=G(java.lang,"UnsatisfiedLinkError",LinkageError);d=G(java.lang,"UnsupportedClassVersionError",ClassFormatError);d=G(java.lang,"VerifyError",LinkageError);d=G(java.lang,"ThreadDeath",Error);x(d,function(){I(this,ThreadDeath,[])});d=G(java.lang,"Exception",Throwable);d=G(java.lang,"RuntimeException",Exception);d=G(java.lang,"ArithmeticException",RuntimeException);d=G(java.lang,"IndexOutOfBoundsException",RuntimeException);d=G(java.lang,"ArrayIndexOutOfBoundsException",IndexOutOfBoundsException); +x(d,function(a){I(this,ArrayIndexOutOfBoundsException,["Array index out of range: "+a])},"~N");d=G(java.lang,"ArrayStoreException",RuntimeException);d=G(java.lang,"ClassCastException",RuntimeException);d=r(function(){this.ex=null;u(this,arguments)},java.lang,"ClassNotFoundException",Exception);x(d,function(){I(this,ClassNotFoundException,[ma("Throwable")])});x(d,function(a){I(this,ClassNotFoundException,[a,null])},"~S");x(d,function(a,d){I(this,ClassNotFoundException,[a]);this.ex=d},"~S,Throwable"); +c(d,"getException",function(){return this.ex});f(d,"getCause",function(){return this.ex});d=G(java.lang,"CloneNotSupportedException",Exception);d=G(java.lang,"IllegalAccessException",Exception);d=G(java.lang,"IllegalArgumentException",RuntimeException);x(d,function(a){I(this,IllegalArgumentException,[null==a?null:a.toString(),a])},"Throwable");d=G(java.lang,"IllegalMonitorStateException",RuntimeException);d=G(java.lang,"IllegalStateException",RuntimeException);x(d,function(a){I(this,IllegalStateException, +[null==a?null:a.toString(),a])},"Throwable");d=G(java.lang,"IllegalThreadStateException",IllegalArgumentException);d=G(java.lang,"InstantiationException",Exception);d=G(java.lang,"InterruptedException",Exception);d=G(java.lang,"NegativeArraySizeException",RuntimeException);d=G(java.lang,"NoSuchFieldException",Exception);d=G(java.lang,"NoSuchMethodException",Exception);d=G(java.lang,"NullPointerException",RuntimeException);d=G(java.lang,"NumberFormatException",IllegalArgumentException);d=G(java.lang, +"SecurityException",RuntimeException);x(d,function(a){I(this,SecurityException,[null==a?null:a.toString(),a])},"Throwable");d=G(java.lang,"StringIndexOutOfBoundsException",IndexOutOfBoundsException);x(d,function(a){I(this,StringIndexOutOfBoundsException,["String index out of range: "+a])},"~N");d=G(java.lang,"UnsupportedOperationException",RuntimeException);x(d,function(){I(this,UnsupportedOperationException,[])});x(d,function(a){I(this,UnsupportedOperationException,[null==a?null:a.toString(),a])}, +"Throwable");d=r(function(){this.target=null;u(this,arguments)},java.lang.reflect,"InvocationTargetException",Exception);x(d,function(){I(this,java.lang.reflect.InvocationTargetException,[ma("Throwable")])});x(d,function(a){I(this,java.lang.reflect.InvocationTargetException,[null,a]);this.target=a},"Throwable");x(d,function(a,d){I(this,java.lang.reflect.InvocationTargetException,[d,a]);this.target=a},"Throwable,~S");c(d,"getTargetException",function(){return this.target});f(d,"getCause",function(){return this.target}); +d=r(function(){this.undeclaredThrowable=null;u(this,arguments)},java.lang.reflect,"UndeclaredThrowableException",RuntimeException);x(d,function(a){I(this,java.lang.reflect.UndeclaredThrowableException);this.undeclaredThrowable=a;this.initCause(a)},"Throwable");x(d,function(a,d){I(this,java.lang.reflect.UndeclaredThrowableException,[d]);this.undeclaredThrowable=a;this.initCause(a)},"Throwable,~S");c(d,"getUndeclaredThrowable",function(){return this.undeclaredThrowable});f(d,"getCause",function(){return this.undeclaredThrowable}); +d=G(java.io,"IOException",Exception);d=G(java.io,"CharConversionException",java.io.IOException);d=G(java.io,"EOFException",java.io.IOException);d=G(java.io,"FileNotFoundException",java.io.IOException);d=r(function(){this.bytesTransferred=0;u(this,arguments)},java.io,"InterruptedIOException",java.io.IOException);d=G(java.io,"SyncFailedException",java.io.IOException);d=G(java.io,"UnsupportedEncodingException",java.io.IOException);d=G(java.io,"UTFDataFormatException",java.io.IOException);c(d,"getMessage", +function(){var a=ha(this,java.io.WriteAbortedException,"getMessage",[]);return this.detail?a+"; "+this.detail.toString():a});f(d,"getCause",function(){return this.detail});d=G(a,"ConcurrentModificationException",RuntimeException);x(d,function(){I(this,a.ConcurrentModificationException,[])});d=G(a,"EmptyStackException",RuntimeException);d=r(function(){this.key=this.className=null;u(this,arguments)},a,"MissingResourceException",RuntimeException);x(d,function(d,h,b){I(this,a.MissingResourceException, +[d]);this.className=h;this.key=b},"~S,~S,~S");c(d,"getClassName",function(){return this.className});c(d,"getKey",function(){return this.key});d=G(a,"NoSuchElementException",RuntimeException);d=G(a,"TooManyListenersException",Exception);d=G(java.lang,"Void");d.TYPE=d;K(java.lang.reflect,"GenericDeclaration");K(java.lang.reflect,"AnnotatedElement");d=G(java.lang.reflect,"AccessibleObject",null,java.lang.reflect.AnnotatedElement);x(d,function(){});c(d,"isAccessible",function(){return!1});d.setAccessible= +c(d,"setAccessible",function(){},"~A,~B");c(d,"setAccessible",function(){},"~B");f(d,"isAnnotationPresent",function(){return!1},"Class");f(d,"getDeclaredAnnotations",function(){return[]});f(d,"getAnnotations",function(){return[]});f(d,"getAnnotation",function(){return null},"Class");d.marshallArguments=c(d,"marshallArguments",function(){return null},"~A,~A");c(d,"invokeV",function(){},"~O,~A");c(d,"invokeL",function(){return null},"~O,~A");c(d,"invokeI",function(){return 0},"~O,~A");c(d,"invokeJ", +function(){return 0},"~O,~A");c(d,"invokeF",function(){return 0},"~O,~A");c(d,"invokeD",function(){return 0},"~O,~A");d.emptyArgs=d.prototype.emptyArgs=[];K(java.lang.reflect,"InvocationHandler");d=K(java.lang.reflect,"Member");d=G(java.lang.reflect,"Modifier");x(d,function(){});d.isAbstract=c(d,"isAbstract",function(a){return 0!=(a&1024)},"~N");d.isFinal=c(d,"isFinal",function(a){return 0!=(a&16)},"~N");d.isInterface=c(d,"isInterface",function(a){return 0!=(a&512)},"~N");d.isNative=c(d,"isNative", +function(a){return 0!=(a&256)},"~N");d.isPrivate=c(d,"isPrivate",function(a){return 0!=(a&2)},"~N");d.isProtected=c(d,"isProtected",function(a){return 0!=(a&4)},"~N");d.isPublic=c(d,"isPublic",function(a){return 0!=(a&1)},"~N");d.isStatic=c(d,"isStatic",function(a){return 0!=(a&8)},"~N");d.isStrict=c(d,"isStrict",function(a){return 0!=(a&2048)},"~N");d.isSynchronized=c(d,"isSynchronized",function(a){return 0!=(a&32)},"~N");d.isTransient=c(d,"isTransient",function(a){return 0!=(a&128)},"~N");d.isVolatile= +c(d,"isVolatile",function(a){return 0!=(a&64)},"~N");d.toString=c(d,"toString",function(a){var d=[];java.lang.reflect.Modifier.isPublic(a)&&(d[d.length]="public");java.lang.reflect.Modifier.isProtected(a)&&(d[d.length]="protected");java.lang.reflect.Modifier.isPrivate(a)&&(d[d.length]="private");java.lang.reflect.Modifier.isAbstract(a)&&(d[d.length]="abstract");java.lang.reflect.Modifier.isStatic(a)&&(d[d.length]="static");java.lang.reflect.Modifier.isFinal(a)&&(d[d.length]="final");java.lang.reflect.Modifier.isTransient(a)&& +(d[d.length]="transient");java.lang.reflect.Modifier.isVolatile(a)&&(d[d.length]="volatile");java.lang.reflect.Modifier.isSynchronized(a)&&(d[d.length]="synchronized");java.lang.reflect.Modifier.isNative(a)&&(d[d.length]="native");java.lang.reflect.Modifier.isStrict(a)&&(d[d.length]="strictfp");java.lang.reflect.Modifier.isInterface(a)&&(d[d.length]="interface");return 0a)throw new IllegalArgumentException; +this.priority=a},"~N");c(b,"getPriority",function(){return this.priority});c(b,"setName",function(a){this.name=a},"~S");c(b,"getName",function(){return String.valueOf(this.name)});c(b,"getThreadGroup",function(){return this.group});f(b,"toString",function(){var a=this.getThreadGroup();return null!=a?"Thread["+this.getName()+","+this.getPriority()+","+a.getName()+"]":"Thread["+this.getName()+","+this.getPriority()+",]"});b.J2S_THREAD=null});var va=r(function(){this.name=this.parent=null;this.maxPriority= +0;u(this,arguments)},java.lang,"ThreadGroup",null);x(va,function(){this.name="system";this.maxPriority=10});x(va,function(b){this.construct(Thread.currentThread().getThreadGroup(),b)},"~S");x(va,function(b,a){if(null==b)throw new NullPointerException;this.name=a;this.parent=b;this.maxPriority=10},"ThreadGroup,~S");c(va,"getName",function(){return this.name});c(va,"getParent",function(){return this.parent});c(va,"getMaxPriority",function(){return this.maxPriority});A(["java.io.FilterInputStream"], +"java.io.BufferedInputStream",null,function(){var b=r(function(){this.buf=null;this.pos=this.count=0;this.markpos=-1;this.marklimit=0;u(this,arguments)},java.io,"BufferedInputStream",java.io.FilterInputStream);x(b,function(a){I(this,java.io.BufferedInputStream,[a]);this.buf=O(8192,0)},"java.io.InputStream");c(b,"getInIfOpen",function(){var a=this.$in;if(null==a)throw new java.io.IOException("Stream closed");return a});c(b,"getBufIfOpen",function(){var a=this.buf;if(null==a)throw new java.io.IOException("Stream closed"); +return a});f(b,"resetStream",function(){});c(b,"fill",function(){var a=this.getBufIfOpen();if(0>this.markpos)this.pos=0;else if(this.pos>=a.length)if(0=this.marklimit?(this.markpos=-1,this.pos=0):(d=2*this.pos,d>this.marklimit&&(d=this.marklimit),d=O(d,0),System.arraycopy(a,0,d,0,this.pos),a=this.buf=d);this.count=this.pos;a=this.isRead(a,this.pos,a.length-this.pos);0=this.count&&(this.fill(),this.pos>=this.count)?-1:this.getBufIfOpen()[this.pos++]&255});c(b,"read1",function(a,d,h){var b=this.count-this.pos;if(0>=b){if(h>=this.getBufIfOpen().length&&0>this.markpos)return this.isRead(a,d,h);this.fill();b=this.count-this.pos;if(0>=b)return-1}h=b(d|h|d+h|a.length-(d+h)))throw new IndexOutOfBoundsException;if(0==h)return 0;for(var b=0;;){var c=this.read1(a,d+b,h-b);if(0>=c)return 0==b?c:b;b+=c;if(b>=h)return b;c=this.$in;if(null!=c&&0>=c.available())return b}},"~A,~N,~N");f(b,"skip",function(a){this.getBufIfOpen();if(0>=a)return 0;var d=this.count-this.pos;if(0>=d){if(0>this.markpos)return this.getInIfOpen().skip(a); +this.fill();d=this.count-this.pos;if(0>=d)return 0}a=d2147483647-d?2147483647:a+d});f(b,"mark",function(a){this.marklimit=a;this.markpos=this.pos},"~N");f(b,"reset",function(){this.getBufIfOpen();if(0>this.markpos)throw new java.io.IOException("Resetting to invalid mark");this.pos=this.markpos});f(b,"markSupported",function(){return!0});f(b,"close",function(){var a=this.$in; +this.$in=null;null!=a&&a.close()})});A(["java.io.Reader"],"java.io.BufferedReader",null,function(){var b=r(function(){this.cb=this.$in=null;this.nextChar=this.nChars=0;this.markedChar=-1;this.readAheadLimit=0;this.markedSkipLF=this.skipLF=!1;u(this,arguments)},java.io,"BufferedReader",java.io.Reader);x(b,function(a){I(this,java.io.BufferedReader,[a]);this.$in=a;this.setSize(8192)},"java.io.Reader");c(b,"setSize",function(a){if(0>=a)throw new IllegalArgumentException("Buffer size <= 0");this.cb=ba(a, +"\x00");this.nextChar=this.nChars=0},"~N");c(b,"ensureOpen",function(){if(null==this.$in)throw new java.io.IOException("Stream closed");});c(b,"fill",function(){var a;if(-1>=this.markedChar)a=0;else{var d=this.nextChar-this.markedChar;d>=this.readAheadLimit?(this.markedChar=-2,a=this.readAheadLimit=0):(this.readAheadLimit<=this.cb.length?System.arraycopy(this.cb,this.markedChar,this.cb,0,d):(a=ba(this.readAheadLimit,"\x00"),System.arraycopy(this.cb,this.markedChar,a,0,d),this.cb=a),this.markedChar= +0,this.nextChar=this.nChars=a=d)}do d=this.$in.read(this.cb,a,this.cb.length-a);while(0==d);0=this.nChars){if(h>=this.cb.length&&-1>=this.markedChar&&!this.skipLF)return this.$in.read(a,d,h);this.fill()}if(this.nextChar>=this.nChars||this.skipLF&&(this.skipLF=!1,"\n"==this.cb[this.nextChar]&&(this.nextChar++,this.nextChar>=this.nChars&&this.fill(),this.nextChar>=this.nChars)))return-1;h=Math.min(h,this.nChars-this.nextChar); +System.arraycopy(this.cb,this.nextChar,a,d,h);this.nextChar+=h;return h},"~A,~N,~N");c(b,"read",function(a,d,h){this.ensureOpen();if(0>d||d>a.length||0>h||d+h>a.length||0>d+h)throw new IndexOutOfBoundsException;if(0==h)return 0;var b=this.read1(a,d,h);if(0>=b)return b;for(;b=c)break;b+=c}return b},"~A,~N,~N");c(b,"readLine1",function(a){var d=null,h;this.ensureOpen();for(a=a||this.skipLF;;){this.nextChar>=this.nChars&&this.fill();if(this.nextChar>= +this.nChars)return null!=d&&0 +a)throw new IllegalArgumentException("skip value is negative");this.ensureOpen();for(var d=a;0=this.nChars&&this.fill();if(this.nextChar>=this.nChars)break;this.skipLF&&(this.skipLF=!1,"\n"==this.cb[this.nextChar]&&this.nextChar++);var h=this.nChars-this.nextChar;if(d<=h){this.nextChar+=d;d=0;break}d-=h;this.nextChar=this.nChars}return a-d},"~N");c(b,"ready",function(){this.ensureOpen();this.skipLF&&(this.nextChar>=this.nChars&&this.$in.ready()&&this.fill(),this.nextChara)throw new IllegalArgumentException("Read-ahead limit < 0");this.ensureOpen();this.readAheadLimit=a;this.markedChar=this.nextChar;this.markedSkipLF=this.skipLF},"~N");f(b,"reset",function(){this.ensureOpen();if(0>this.markedChar)throw new java.io.IOException(-2==this.markedChar?"Mark invalid":"Stream not marked"); +this.nextChar=this.markedChar;this.skipLF=this.markedSkipLF});c(b,"close",function(){null!=this.$in&&(this.$in.close(),this.cb=this.$in=null)})});A(["java.io.Writer"],"java.io.BufferedWriter",null,function(){var b=r(function(){this.buf=this.out=null;this.pos=0;this.lineSeparator="\r\n";u(this,arguments)},java.io,"BufferedWriter",java.io.Writer);x(b,function(a){I(this,java.io.BufferedWriter,[a]);this.out=a;this.buf=ba(8192,"\x00")},"java.io.Writer");x(b,function(a,d){I(this,java.io.BufferedWriter, +[a]);if(0d||d>a.length-h||0>h)throw new IndexOutOfBoundsException;if(0==this.pos&&h>=this.buf.length)this.out.write(a,d,h);else{var b=this.buf.length-this.pos;hb&&(d+=b,b=h-b,b>=this.buf.length?this.out.write(a,d,b):(System.arraycopy(a,d,this.buf,this.pos,b),this.pos+=b)))}},"~A,~N,~N");c(b,"write",function(a){if(this.isOpen())this.pos>=this.buf.length&& +(this.out.write(this.buf,0,this.buf.length),this.pos=0),this.buf[this.pos++]=String.fromCharCode(a);else throw new java.io.IOException("K005d");},"~N");c(b,"write",function(a,d,h){if(!this.isOpen())throw new java.io.IOException("K005d");if(!(0>=h)){if(d>a.length-h||0>d)throw new StringIndexOutOfBoundsException;if(0==this.pos&&h>=this.buf.length){var b=ba(h,"\x00");a.getChars(d,d+h,b,0);this.out.write(b,0,h)}else{var c=this.buf.length-this.pos;hc&&(d+=c,c=h-c,c>=this.buf.length?(b=ba(h,"\x00"),a.getChars(d,d+c,b,0),this.out.write(b,0,c)):(a.getChars(d,d+c,this.buf,this.pos),this.pos+=c)))}}},"~S,~N,~N")});A(["java.io.InputStream"],"java.io.ByteArrayInputStream",null,function(){var b=r(function(){this.buf=null;this.count=this.$mark=this.pos=0;u(this,arguments)},java.io,"ByteArrayInputStream",java.io.InputStream);x(b,function(a){I(this,java.io.ByteArrayInputStream, +[]);this.buf=a;this.pos=0;this.count=a.length},"~A");f(b,"readByteAsInt",function(){return this.posd||0>h||h>a.length-d)throw new IndexOutOfBoundsException;if(this.pos>=this.count)return-1;var b=this.count-this.pos;h>b&&(h=b);if(0>=h)return 0;System.arraycopy(this.buf,this.pos,a,d,h);this.pos+=h;return h},"~A,~N,~N"); +f(b,"skip",function(a){var d=this.count-this.pos;aa?0:a);this.pos+=d;return d},"~N");f(b,"available",function(){return this.count-this.pos});f(b,"markSupported",function(){return!0});f(b,"mark",function(){this.$mark=this.pos},"~N");f(b,"resetStream",function(){});f(b,"reset",function(){this.pos=this.$mark});f(b,"close",function(){})});A(["java.io.OutputStream"],"java.io.ByteArrayOutputStream",null,function(){var b=r(function(){this.buf=null;this.count=0;u(this,arguments)},java.io,"ByteArrayOutputStream", +java.io.OutputStream);x(b,function(){this.construct(32)});x(b,function(a){I(this,java.io.ByteArrayOutputStream,[]);if(0>a)throw new IllegalArgumentException("Negative initial size: "+a);this.buf=O(a,0)},"~N");c(b,"ensureCapacity",function(a){0d-a&&(d=a);if(0>d){if(0>a)throw new OutOfMemoryError;d=a}this.buf=java.io.ByteArrayOutputStream.arrayCopyByte(this.buf,d)},"~N");b.arrayCopyByte=c(b,"arrayCopyByte",function(a, +d){var h=O(d,0);System.arraycopy(a,0,h,0,a.lengthd||d>a.length||0>h||0d||0>h||h>a.length-d)throw new IndexOutOfBoundsException;if(0==h)return 0;var b=this.readByteAsInt();if(-1==b)return-1;a[d]=b;var c=1;try{for(;c=a)return 0;for(;0h)break;d-=h}return a-d},"~N");c(b,"available",function(){return 0});f(b,"close",function(){});c(b,"mark",function(){},"~N");c(b,"reset",function(){throw new java.io.IOException("mark/reset not supported");});c(b,"markSupported",function(){return!1});c(b,"resetStream",function(){});b.skipBuffer=null});A(["java.io.Reader"],"java.io.InputStreamReader",null, +function(){var b=r(function(){this.$in=null;this.isOpen=!0;this.charsetName=null;this.isUTF8=!1;this.bytearr=null;this.pos=0;u(this,arguments)},java.io,"InputStreamReader",java.io.Reader);x(b,function(a,d){I(this,java.io.InputStreamReader,[a]);this.$in=a;this.charsetName=d;if(!(this.isUTF8="UTF-8".equals(d))&&!"ISO-8859-1".equals(d))throw new NullPointerException("charsetName");},"java.io.InputStream,~S");c(b,"getEncoding",function(){return this.charsetName});f(b,"read",function(a,d,h){if(null==this.bytearr|| +this.bytearr.lengthk)return-1;for(var f=k;g>4){case 12:case 13:if(g+1>=k){if(1<=l){f=g;continue}}else if(128==((b=this.bytearr[g+1])&192)){a[j++]=String.fromCharCode((h&31)<<6|b&63);g+=2;continue}this.isUTF8=!1;break;case 14:if(g+2>=k){if(2<=l){f=g;continue}}else if(128==((b=this.bytearr[g+1])&192)&&128==((c=this.bytearr[g+2])&192)){a[j++]= +String.fromCharCode((h&15)<<12|(b&63)<<6|c&63);g+=3;continue}this.isUTF8=!1}g++;a[j++]=String.fromCharCode(h)}this.pos=k-g;for(a=0;ad||d>a.length||0>h||d+h>a.length||0>d+h)throw new IndexOutOfBoundsException;if(0!=h)for(var b=0;b +a)throw new IllegalArgumentException("skip value is negative");var d=Math.min(a,8192);if(null==this.skipBuffer||this.skipBuffer.lengthd||d>a.length||0>h||d+h>a.length||0>d+h)throw new IndexOutOfBoundsException; +if(0==h)return 0;if(this.next>=this.length)return-1;h=Math.min(this.length-this.next,h);this.str.getChars(this.next,this.next+h,a,d);this.next+=h;return h},"~A,~N,~N");f(b,"skip",function(a){this.ensureOpen();if(this.next>=this.length)return 0;a=Math.min(this.length-this.next,a);a=Math.max(-this.next,a);this.next+=a;return a},"~N");f(b,"ready",function(){this.ensureOpen();return!0});f(b,"markSupported",function(){return!0});f(b,"mark",function(a){if(0>a)throw new IllegalArgumentException("Read-ahead limit < 0"); +this.ensureOpen();this.$mark=this.next},"~N");f(b,"reset",function(){this.ensureOpen();this.next=this.$mark});f(b,"close",function(){this.str=null})});A(["java.io.Closeable","$.Flushable","java.lang.Appendable"],"java.io.Writer",null,function(){var b=r(function(){this.lock=null;u(this,arguments)},java.io,"Writer",null,[Appendable,java.io.Closeable,java.io.Flushable]);x(b,function(){this.lock=this});x(b,function(a){if(null!=a)this.lock=a;else throw new NullPointerException;},"~O");c(b,"write",function(a){this.write(a, +0,a.length)},"~A");c(b,"write",function(a){var d=ba(1,"\x00");d[0]=String.fromCharCode(a);this.write(d)},"~N");c(b,"write",function(a){var d=ba(a.length,"\x00");a.getChars(0,d.length,d,0);this.write(d)},"~S");c(b,"write",function(a,d,h){if(0<=h){var b=ba(h,"\x00");a.getChars(d,d+h,b,0);this.write(b)}else throw new StringIndexOutOfBoundsException;},"~S,~N,~N");c(b,"append",function(a){this.write(a.charCodeAt(0));return this},"~S");c(b,"append",function(a){null==a?this.write("null"):this.write(a.toString()); +return this},"CharSequence");c(b,"append",function(a,d,h){null==a?this.write("null".substring(d,h)):this.write(a.subSequence(d,h).toString());return this},"CharSequence,~N,~N")});n("java.net");A(["java.io.IOException"],"java.net.MalformedURLException",null,function(){var b=G(java.net,"MalformedURLException",java.io.IOException);x(b,function(){I(this,java.net.MalformedURLException,[])})});n("java.net");A(["java.io.IOException"],"java.net.UnknownServiceException",null,function(){var b=G(java.net,"UnknownServiceException", +java.io.IOException);x(b,function(){I(this,java.net.UnknownServiceException,[])})});n("java.net");A(["java.util.Hashtable"],"java.net.URL",null,function(){var b=r(function(){this.host=this.protocol=null;this.port=-1;this.handler=this.ref=this.userInfo=this.path=this.authority=this.query=this.file=null;this.$hashCode=-1;u(this,arguments)},java.net,"URL",null);x(b,function(a,d,h){switch(arguments.length){case 1:d=a;a=h=null;break;case 2:h=null;break;case 3:if(null==a||C(a,java.net.URL))break;default:alert("java.net.URL constructor format not supported")}a&& +a.valueOf&&null==a.valueOf()&&(a=null);var b=d,c,g,j,k=0,l=null,f=!1,m=!1;try{for(g=d.length;0=d.charAt(g-1);)g--;for(;k=d.charAt(k);)k++;d.regionMatches(!0,k,"url:",0,4)&&(k+=4);kd)return!1;var h=a.charAt(0);if(!Character.isLetter(h))return!1;for(var b=1;by&&(h=y),a=a.substring(0,y))}var H=0;if(!(d<=h-4&&"/"== +a.charAt(d)&&"/"==a.charAt(d+1)&&"/"==a.charAt(d+2)&&"/"==a.charAt(d+3))&&d<=h-2&&"/"==a.charAt(d)&&"/"==a.charAt(d+1)){d+=2;H=a.indexOf("/",d);0>H&&(H=a.indexOf("?",d),0>H&&(H=h));j=c=a.substring(d,H);y=c.indexOf("@");-1!=y?(g=c.substring(0,y),j=c.substring(y+1)):g=null;if(null!=j){if(0y+1&&(k=Integer.parseInt(j.substring(y+1))),j=j.substring(0,y))}else j="";if(-1>k)throw new IllegalArgumentException("Invalid port number :"+ +k);d=H;0y&&(y=0),l=l.substring(0,y)+"/");null==l&&(l="");if(p){for(;0<=(H=l.indexOf("/./"));)l=l.substring(0,H)+l.substring(H+2);for(H=0;0<=(H=l.indexOf("/../",H));)0>>48-b},"~N");c(ja,"nextBoolean",function(){return 0.5>=8},"~A");c(ja,"nextDouble",function(){return Math.random()});c(ja,"nextFloat", +function(){return Math.random()});c(ja,"nextGaussian",function(){if(this.haveNextNextGaussian)return this.haveNextNextGaussian=!1,this.nextNextGaussian;var b,a,d;do b=2*this.nextDouble()-1,a=2*this.nextDouble()-1,d=b*b+a*a;while(1<=d);d=Math.sqrt(-2*Math.log(d)/d);this.nextNextGaussian=a*d;this.haveNextNextGaussian=!0;return b*d});c(ja,"nextInt",function(b){if(0==arguments.length)return 4294967296*Math.random()|0;if(0>=b)throw new IllegalArgumentException;return Math.random()*b|0},"~N");c(ja,"nextLong", +function(){return(this.next(32)<<32)+this.next(32)});c(ja,"setSeed",function(b){Math.seedrandom(b)},"~N");var Ea=[],Aa=Math,Fa=52,Ua=void 0,Va=void 0,ob=function(b){var a,d,h=this,q=b.length,c=0,g=h.i=h.j=h.m=0;h.S=[];h.c=[];for(q||(b=[q++]);256>c;)h.S[c]=c++;for(c=0;256>c;c++)a=h.S[c],g=g+a+b[c%q]&255,d=h.S[g],h.S[c]=d,h.S[g]=a;h.g=function(a){var d=h.S,b=h.i+1&255,q=d[b],c=h.j+q&255,e=d[c];d[b]=e;d[c]=q;for(var g=d[q+e&255];--a;)b=b+1&255,q=d[b],c=c+q&255,e=d[c],d[b]=e,d[c]=q,g=256*g+d[q+e&255]; +h.i=b;h.j=c;return g};h.g(256)},Wa=function(b,a,d,h){d=[];if(a&&"object"==typeof b)for(h in b)if(5>h.indexOf("S"))try{d.push(Wa(b[h],a-1))}catch(q){}return d.length?d:""+b},Ja=function(b,a,d,h){b+="";for(h=d=0;h=Ua;)a/=2,d/=2,b>>>=1;return(a+b)/d};return b};Va=Aa.pow(256,6);Fa=Aa.pow(2,Fa);Ua=2*Fa;Ja(Aa.random(),Ea);A(["java.util.Collection"],"java.util.AbstractCollection",["java.lang.reflect.Array"],function(){var b=G(java.util,"AbstractCollection",null,java.util.Collection);f(b,"add",function(){throw new UnsupportedOperationException;},"~O");f(b,"addAll",function(a){var d=!1;for(a=a.iterator();a.hasNext();)this.add(a.next())&&(d=!0);return d},"java.util.Collection"); +f(b,"clear",function(){for(var a=this.iterator();a.hasNext();)a.next(),a.remove()});f(b,"contains",function(a){var d=this.iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next()))return!0}else for(;d.hasNext();)if(null==d.next())return!0;return!1},"~O");f(b,"containsAll",function(a){for(a=a.iterator();a.hasNext();)if(!this.contains(a.next()))return!1;return!0},"java.util.Collection");f(b,"isEmpty",function(){return 0==this.size()});f(b,"remove",function(a){var d=this.iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next()))return d.remove(), +!0}else for(;d.hasNext();)if(null==d.next())return d.remove(),!0;return!1},"~O");f(b,"removeAll",function(a){for(var d=!1,h=this.iterator();h.hasNext();)a.contains(h.next())&&(h.remove(),d=!0);return d},"java.util.Collection");f(b,"retainAll",function(a){for(var d=!1,h=this.iterator();h.hasNext();)a.contains(h.next())||(h.remove(),d=!0);return d},"java.util.Collection");c(b,"toArray",function(){for(var a=this.size(),d=0,h=this.iterator(),b=Array(a);da.length&&(a=a.getClass().getComponentType(),a=java.lang.reflect.Array.newInstance(a,d));for(var b,d=this.iterator();d.hasNext()&&((b=d.next())||1);)a[h++]=b;h= +this.start});c(b,"next",function(){if(this.iterator.nextIndex()=this.start)return this.iterator.previous();throw new java.util.NoSuchElementException;});c(b,"previousIndex",function(){var a=this.iterator.previousIndex();return a>=this.start?a-this.start:-1});c(b,"remove",function(){this.iterator.remove(); +this.subList.sizeChanged(!1);this.end--});c(b,"set",function(a){this.iterator.set(a)},"~O")});A(["java.util.Map"],"java.util.AbstractMap",["java.util.AbstractCollection","$.AbstractSet","$.Iterator"],function(){var b=r(function(){this.$values=this.$keySet=null;u(this,arguments)},java.util,"AbstractMap",null,java.util.Map);f(b,"clear",function(){this.entrySet().clear()});f(b,"containsKey",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next().getKey()))return!0}else for(;d.hasNext();)if(null== +d.next().getKey())return!0;return!1},"~O");f(b,"containsValue",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next().getValue()))return!0}else for(;d.hasNext();)if(null==d.next().getValue())return!0;return!1},"~O");f(b,"equals",function(a){if(this===a)return!0;if(C(a,"java.util.Map")){if(this.size()!=a.size())return!1;a=a.entrySet();for(var d=this.entrySet().iterator();d.hasNext();)if(!a.contains(d.next()))return!1;return!0}return!1},"~O");f(b,"get",function(a){var d= +this.entrySet().iterator();if(null!=a)for(;d.hasNext();){var h=d.next();if(a.equals(h.getKey()))return h.getValue()}else for(;d.hasNext();)if(h=d.next(),null==h.getKey())return h.getValue();return null},"~O");f(b,"hashCode",function(){for(var a=0,d=this.entrySet().iterator();d.hasNext();)a+=d.next().hashCode();return a});f(b,"isEmpty",function(){return 0==this.size()});f(b,"keySet",function(){null==this.$keySet&&(this.$keySet=(W("java.util.AbstractMap$1")?0:java.util.AbstractMap.$AbstractMap$1$(), +Y(java.util.AbstractMap$1,this,null)));return this.$keySet});f(b,"put",function(){throw new UnsupportedOperationException;},"~O,~O");f(b,"putAll",function(a){this.putAllAM(a)},"java.util.Map");c(b,"putAllAM",function(a){if(!a.isEmpty()){var d;for(a=a.entrySet().iterator();a.hasNext()&&((d=a.next())||1);)this.put(d.getKey(),d.getValue())}},"java.util.Map");f(b,"remove",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){var h=d.next();if(a.equals(h.getKey()))return d.remove(), +h.getValue()}else for(;d.hasNext();)if(h=d.next(),null==h.getKey())return d.remove(),h.getValue();return null},"~O");f(b,"size",function(){return this.entrySet().size()});f(b,"toString",function(){if(this.isEmpty())return"{}";for(var a="{",d=this.entrySet().iterator();d.hasNext();){var h=d.next(),b=h.getKey(),a=b!==this?a+b:a+"(this Map)",a=a+"=",h=h.getValue(),a=h!==this?a+h:a+"(this Map)";d.hasNext()&&(a+=", ")}return a+"}"});f(b,"values",function(){null==this.$values&&(this.$values=(W("java.util.AbstractMap$2")? +0:java.util.AbstractMap.$AbstractMap$2$(),Y(java.util.AbstractMap$2,this,null)));return this.$values});c(b,"clone",function(){return this.cloneAM()});c(b,"cloneAM",function(){var a;a=Oa(this);a.$keySet=null;a.$values=null;return a});b.$AbstractMap$1$=function(){var a=qa(java.util,"AbstractMap$1",java.util.AbstractSet);f(a,"contains",function(a){return this.b$["java.util.AbstractMap"].containsKey(a)},"~O");f(a,"size",function(){return this.b$["java.util.AbstractMap"].size()});f(a,"iterator",function(){return W("java.util.AbstractMap$1$1")? +0:java.util.AbstractMap.$AbstractMap$1$1$(),Y(java.util.AbstractMap$1$1,this,null)})};b.$AbstractMap$1$1$=function(){var a=r(function(){fa(this,arguments);this.setIterator=null;u(this,arguments)},java.util,"AbstractMap$1$1",null,java.util.Iterator);N(a,function(){this.setIterator=this.b$["java.util.AbstractMap"].entrySet().iterator()});f(a,"hasNext",function(){return this.setIterator.hasNext()});f(a,"next",function(){return this.setIterator.next().getKey()});f(a,"remove",function(){this.setIterator.remove()})}; +b.$AbstractMap$2$=function(){var a=qa(java.util,"AbstractMap$2",java.util.AbstractCollection);f(a,"size",function(){return this.b$["java.util.AbstractMap"].size()});f(a,"contains",function(a){return this.b$["java.util.AbstractMap"].containsValue(a)},"~O");f(a,"iterator",function(){return W("java.util.AbstractMap$2$1")?0:java.util.AbstractMap.$AbstractMap$2$1$(),Y(java.util.AbstractMap$2$1,this,null)})};b.$AbstractMap$2$1$=function(){var a=r(function(){fa(this,arguments);this.setIterator=null;u(this, +arguments)},java.util,"AbstractMap$2$1",null,java.util.Iterator);N(a,function(){this.setIterator=this.b$["java.util.AbstractMap"].entrySet().iterator()});f(a,"hasNext",function(){return this.setIterator.hasNext()});f(a,"next",function(){return this.setIterator.next().getValue()});f(a,"remove",function(){this.setIterator.remove()})}});A(["java.util.AbstractCollection","$.Set"],"java.util.AbstractSet",null,function(){var b=G(java.util,"AbstractSet",java.util.AbstractCollection,java.util.Set);f(b,"equals", +function(a){return this===a?!0:C(a,"java.util.Set")?this.size()==a.size()&&this.containsAll(a):!1},"~O");f(b,"hashCode",function(){for(var a=0,d=this.iterator();d.hasNext();)var h=d.next(),a=a+(null==h?0:h.hashCode());return a});f(b,"removeAll",function(a){var d=!1;if(this.size()<=a.size())for(var h=this.iterator();h.hasNext();)a.contains(h.next())&&(h.remove(),d=!0);else for(h=a.iterator();h.hasNext();)d=this.remove(h.next())||d;return d},"java.util.Collection")});A(["java.util.AbstractList","$.List", +"$.RandomAccess"],"java.util.ArrayList",["java.util.Arrays"],function(){var b=r(function(){this.lastIndex=this.firstIndex=0;this.array=null;u(this,arguments)},java.util,"ArrayList",java.util.AbstractList,[java.util.List,Cloneable,java.io.Serializable,java.util.RandomAccess]);x(b,function(){I(this,java.util.ArrayList,[]);this.setCapacity(0)});x(b,function(a){I(this,java.util.ArrayList,[]);this.setCapacity(a)},"~N");x(b,function(a){this.firstIndex=this.lastIndex=0;var d=-1;a?"number"==typeof a&&(d= +a):d=0;0<=d?this.setCapacity(d):(d=a.size(),this.array=this.newElementArray(d+v(d/10)),this.addAll(a))},"java.util.Collection");c(b,"setCapacity",function(a){try{this.array=this.newElementArray(a)}catch(d){if(E(d,"NegativeArraySizeException"))throw new IllegalArgumentException;throw d;}},"~N");c(b,"newElementArray",function(a){return Array(a)},"~N");c(b,"add",function(a,d){this.add2(a,d)},"~N,~O");c(b,"add2",function(a,d){var h=this.size();if(0a||a>h)throw new IndexOutOfBoundsException;var b=d.size();if(0this.array.length-b){var c=this.firstIndex-b;if(0>c){var g=a+this.firstIndex; +System.arraycopy(this.array,g,this.array,g-c,h-a);this.lastIndex-=c;c=0}System.arraycopy(this.array,this.firstIndex,this.array,c,a);this.firstIndex=c}else g=a+this.firstIndex,System.arraycopy(this.array,g,this.array,g+b,h-a),this.lastIndex+=b;else 0==a?(this.growAtFront(b),this.firstIndex-=b):a==h&&(this.lastIndex>this.array.length-b&&this.growAtEnd(b),this.lastIndex+=b);if(0this.array.length-d&&this.growAtEnd(d);a=a.iterator();for(d=this.lastIndex+d;this.lastIndex=a-(this.array.length-this.lastIndex))a=this.lastIndex-this.firstIndex,0h&&(h=a);12>h&&(h=12);a=this.newElementArray(d+h);0< +d&&System.arraycopy(this.array,this.firstIndex,a,this.firstIndex,d);this.array=a}},"~N");c(b,"growAtFront",function(a){var d=this.size();if(this.array.length-this.lastIndex>=a)a=this.array.length-d,0a?a:this.firstIndex+d,null)),this.firstIndex=a,this.lastIndex=this.array.length;else{var h=v(d/2);a>h&&(h=a);12>h&&(h=12);a=this.newElementArray(d+h);0b&&(b=d);12>b&&(b=12);var c=this.newElementArray(h+b);if(a=this.firstIndex;d--){if(a.equals(this.array[d]))return d-this.firstIndex}else for(d= +this.lastIndex-1;d>=this.firstIndex;d--)if(null==this.array[d])return d-this.firstIndex;return-1},"~O");c(b,"remove",function(a){return this._removeItemAt(a)},"~N");c(b,"_removeObject",function(a){a=this.indexOf(a);if(0>a)return!1;this._removeItemAt(a);return!0},"~O");c(b,"_removeItemAt",function(a){var d,h=this.size();if(0<=a&&aa.length)return this.array.slice(this.firstIndex,this.firstIndex+d);System.arraycopy(this.array,this.firstIndex,a,0,d);db)throw new IllegalArgumentException("fromIndex("+h+") > toIndex("+b+")");if(0>h)throw new ArrayIndexOutOfBoundsException(h); +if(b>a)throw new ArrayIndexOutOfBoundsException(b);},"~N,~N,~N");b.binarySearch=c(b,"binarySearch",function(a,h){for(var b=0,c=a.length-1;b<=c;){var g=b+c>>1,j=a[g];if(jh)c=g-1;else return g}return-(b+1)},"~A,~N");b.binarySearch=c(b,"binarySearch",function(a,h){for(var b=0,c=a.length-1;b<=c;){var g=b+c>>1,j=a[g].compareTo(h);if(0>j)b=g+1;else if(0>1,k=b.compare(a[j],h);if(0>k)c=j+1;else if(0a.length)){var g=0,j=null,g=arguments.count,j=h,k=a,l=null; +switch(g){case 1:j=null;case 2:h=0;b=a.length;break;case 3:case 4:j=c,0==h&&b==a.length?k=a:(k=a.slice(h,b),l=a)}java.util.Arrays.rangeCheck(a.length,h,b);null==j&&(j=java.util.Arrays.comp);k.sort(j.compare);null!=l&&System.arraycopy(k,0,l,h,b)}},"~A,~N,~N,java.util.Comparator");var a=r(function(){this.a=null;u(this,arguments)},java.util.Arrays,"ArrayList",java.util.AbstractList,[java.util.RandomAccess,java.io.Serializable]);x(a,function(a){I(this,java.util.Arrays.ArrayList,[]);if(null==a)throw new NullPointerException; +this.a=a},"~A");f(a,"size",function(){return this.a.length});c(a,"toArray",function(){return this.a.clone()});f(a,"get",function(a){return this.a[a]},"~N");f(a,"set",function(a,h){var b=this.a[a];this.a[a]=h;return b},"~N,~O");f(a,"indexOf",function(a){if(null==a)for(var h=0;h=(c=h.compareTo(b.next())))return 0==c?b.previousIndex():-b.previousIndex()-1}return-a.size()-1}var b=0,g=a.size(),j=g-1;for(c=-1;b<=j;)if(g=b+j>>1,0<(c=h.compareTo(a.get(g))))b=g+1;else{if(0==c)return g;j=g-1}return-g-(0>c?1:2)},"java.util.List,~O");b.binarySearch=c(b,"binarySearch",function(a,h,b){if(null==b)return java.util.Collections.binarySearch(a,h);if(!C(a,"java.util.RandomAccess")){for(var c=a.listIterator();c.hasNext();){var g;if(0>=(g=b.compare(h, +c.next())))return 0==g?c.previousIndex():-c.previousIndex()-1}return-a.size()-1}var c=0,j=a.size(),k=j-1;for(g=-1;c<=k;)if(j=c+k>>1,0<(g=b.compare(h,a.get(j))))c=j+1;else{if(0==g)return j;k=j-1}return-j-(0>g?1:2)},"java.util.List,~O,java.util.Comparator");b.copy=c(b,"copy",function(a,h){if(a.size()h.compareTo(b)&&(h=b)}return h},"java.util.Collection"); +b.max=c(b,"max",function(a,h){for(var b=a.iterator(),c=b.next();b.hasNext();){var g=b.next();0>h.compare(c,g)&&(c=g)}return c},"java.util.Collection,java.util.Comparator");b.min=c(b,"min",function(a){a=a.iterator();for(var h=a.next();a.hasNext();){var b=a.next();0g&&(g=-g),a.set(g,a.set(c,a.get(g)));else{for(var b=a.toArray(),c=b.length-1;0g&&(g=-g);var j=b[c];b[c]=b[g];b[g]=j}c=0;for(g=a.listIterator();g.hasNext();)g.next(),g.set(b[c++])}},"java.util.List,java.util.Random"); +b.singleton=c(b,"singleton",function(a){return new java.util.Collections.SingletonSet(a)},"~O");b.singletonList=c(b,"singletonList",function(a){return new java.util.Collections.SingletonList(a)},"~O");b.singletonMap=c(b,"singletonMap",function(a,h){return new java.util.Collections.SingletonMap(a,h)},"~O,~O");b.sort=c(b,"sort",function(a){var h=a.toArray();java.util.Arrays.sort(h);var b=0;for(a=a.listIterator();a.hasNext();)a.next(),a.set(h[b++])},"java.util.List");b.sort=c(b,"sort",function(a,h){var b= +a.toArray(Array(a.size()));java.util.Arrays.sort(b,h);for(var c=0,g=a.listIterator();g.hasNext();)g.next(),g.set(b[c++])},"java.util.List,java.util.Comparator");b.swap=c(b,"swap",function(a,h,b){if(null==a)throw new NullPointerException;h!=b&&a.set(b,a.set(h,a.get(b)))},"java.util.List,~N,~N");b.replaceAll=c(b,"replaceAll",function(a,h,b){for(var c,g=!1;-1<(c=a.indexOf(h));)g=!0,a.set(c,b);return g},"java.util.List,~O,~O");b.rotate=c(b,"rotate",function(a,h){var b=a.size();if(0!=b){var c;c=0b)return-1;if(0==c)return 0;var g=h.get(0),j=a.indexOf(g);if(-1==j)return-1;for(;j=c;){var k= +a.listIterator(j);if(null==g?null==k.next():g.equals(k.next())){for(var l=h.listIterator(1),f=!1;l.hasNext();){var m=l.next();if(!k.hasNext())return-1;if(null==m?null!=k.next():!m.equals(k.next())){f=!0;break}}if(!f)return j}j++}return-1},"java.util.List,java.util.List");b.lastIndexOfSubList=c(b,"lastIndexOfSubList",function(a,h){var b=h.size(),c=a.size();if(b>c)return-1;if(0==b)return c;for(var c=h.get(b-1),g=a.lastIndexOf(c);-1=b;){var j=a.listIterator(g+1);if(null==c?null==j.previous(): +c.equals(j.previous())){for(var k=h.listIterator(b-1),l=!1;k.hasPrevious();){var f=k.previous();if(!j.hasPrevious())return-1;if(null==f?null!=j.previous():!f.equals(j.previous())){l=!0;break}}if(!l)return j.nextIndex()}g--}return-1},"java.util.List,java.util.List");b.list=c(b,"list",function(a){for(var h=new java.util.ArrayList;a.hasMoreElements();)h.add(a.nextElement());return h},"java.util.Enumeration");b.synchronizedCollection=c(b,"synchronizedCollection",function(a){if(null==a)throw new NullPointerException; +return new java.util.Collections.SynchronizedCollection(a)},"java.util.Collection");b.synchronizedList=c(b,"synchronizedList",function(a){if(null==a)throw new NullPointerException;return C(a,"java.util.RandomAccess")?new java.util.Collections.SynchronizedRandomAccessList(a):new java.util.Collections.SynchronizedList(a)},"java.util.List");b.synchronizedMap=c(b,"synchronizedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedMap(a)},"java.util.Map"); +b.synchronizedSet=c(b,"synchronizedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSet(a)},"java.util.Set");b.synchronizedSortedMap=c(b,"synchronizedSortedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSortedMap(a)},"java.util.SortedMap");b.synchronizedSortedSet=c(b,"synchronizedSortedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSortedSet(a)}, +"java.util.SortedSet");b.unmodifiableCollection=c(b,"unmodifiableCollection",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableCollection(a)},"java.util.Collection");b.unmodifiableList=c(b,"unmodifiableList",function(a){if(null==a)throw new NullPointerException;return C(a,"java.util.RandomAccess")?new java.util.Collections.UnmodifiableRandomAccessList(a):new java.util.Collections.UnmodifiableList(a)},"java.util.List");b.unmodifiableMap=c(b,"unmodifiableMap", +function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableMap(a)},"java.util.Map");b.unmodifiableSet=c(b,"unmodifiableSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSet(a)},"java.util.Set");b.unmodifiableSortedMap=c(b,"unmodifiableSortedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSortedMap(a)},"java.util.SortedMap");b.unmodifiableSortedSet=c(b, +"unmodifiableSortedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSortedSet(a)},"java.util.SortedSet");b.frequency=c(b,"frequency",function(a,h){if(null==a)throw new NullPointerException;if(a.isEmpty())return 0;for(var b=0,c=a.iterator();c.hasNext();){var g=c.next();(null==h?null==g:h.equals(g))&&b++}return b},"java.util.Collection,~O");b.emptyList=c(b,"emptyList",function(){return java.util.Collections.EMPTY_LIST});b.emptySet=c(b,"emptySet", +function(){return java.util.Collections.EMPTY_SET});b.emptyMap=c(b,"emptyMap",function(){return java.util.Collections.EMPTY_MAP});b.checkedCollection=c(b,"checkedCollection",function(a,h){return new java.util.Collections.CheckedCollection(a,h)},"java.util.Collection,Class");b.checkedMap=c(b,"checkedMap",function(a,h,b){return new java.util.Collections.CheckedMap(a,h,b)},"java.util.Map,Class,Class");b.checkedList=c(b,"checkedList",function(a,h){return C(a,"java.util.RandomAccess")?new java.util.Collections.CheckedRandomAccessList(a, +h):new java.util.Collections.CheckedList(a,h)},"java.util.List,Class");b.checkedSet=c(b,"checkedSet",function(a,h){return new java.util.Collections.CheckedSet(a,h)},"java.util.Set,Class");b.checkedSortedMap=c(b,"checkedSortedMap",function(a,h,b){return new java.util.Collections.CheckedSortedMap(a,h,b)},"java.util.SortedMap,Class,Class");b.checkedSortedSet=c(b,"checkedSortedSet",function(a,h){return new java.util.Collections.CheckedSortedSet(a,h)},"java.util.SortedSet,Class");b.addAll=c(b,"addAll", +function(a,h){for(var b=!1,c=0;ca.size()){var b=a;a=h;h=b}for(b=a.iterator();b.hasNext();)if(h.contains(b.next()))return!1;return!0},"java.util.Collection,java.util.Collection");b.checkType=c(b,"checkType",function(a,h){if(!h.isInstance(a))throw new ClassCastException("Attempt to insert "+a.getClass()+" element into collection with element type "+ +h);return a},"~O,Class");b.$Collections$1$=function(){var a=r(function(){fa(this,arguments);this.it=null;u(this,arguments)},java.util,"Collections$1",null,java.util.Enumeration);N(a,function(){this.it=this.f$.c.iterator()});c(a,"hasMoreElements",function(){return this.it.hasNext()});c(a,"nextElement",function(){return this.it.next()})};var a=G(java.util.Collections,"EmptyEnumeration",null,java.util.Enumeration);f(a,"hasMoreElements",function(){return!1});f(a,"nextElement",function(){throw new java.util.NoSuchElementException; +});a=G(java.util.Collections,"EmptyIterator",null,java.util.Iterator);f(a,"hasNext",function(){return!1});f(a,"next",function(){throw new java.util.NoSuchElementException;});f(a,"remove",function(){throw new IllegalStateException;});a=r(function(){this.n=0;this.element=null;u(this,arguments)},java.util.Collections,"CopiesList",java.util.AbstractList,java.io.Serializable);x(a,function(a,h){I(this,java.util.Collections.CopiesList,[]);if(0>a)throw new IllegalArgumentException;this.n=a;this.element=h}, +"~N,~O");f(a,"contains",function(a){return null==this.element?null==a:this.element.equals(a)},"~O");f(a,"size",function(){return this.n});f(a,"get",function(a){if(0<=a&&aa.length&&(a=a.getClass().getComponentType(),a=java.lang.reflect.Array.newInstance(a,h));for(;bc)throw new IllegalArgumentException("Illegal Capacity: "+c);if(0>=g||Float.isNaN(g))throw new IllegalArgumentException("Illegal Load: "+g);0==c&&(c=1);this.loadFactor=g;this.table=Array(c);this.threshold=F(Math.min(c*g,2147483640));this.__setJS();null!=b&&this.putAll(b)});f(b,"size",function(){var a=this.count;return a=this.__m&&this.__m.size||a});f(b,"isEmpty",function(){return 0==this.size()});f(b,"keys",function(){return this.getEnumeration(0)});f(b,"elements",function(){return this.getEnumeration(1)}); +c(b,"contains",function(a){if(null==a)throw new NullPointerException;if(0==this.size())return!1;if(java.util.Hashtable.__isSimple(this))for(var h=this.__m.values(),b=h.next();!b.done;b=h.next()){if(b.value==a||b.value.equals(a))return!0}else{h=this.table;for(b=h.length;0=this.threshold&&(this.rehash(),g=this.table,a=h.hashCode(),c=(a&2147483647)% +g.length);g[c]=new java.util.Hashtable.Entry(a,h,b,g[c]);this.count++},"~N,~O,~O,~N");f(b,"put",function(a,h){if(null==h)throw new NullPointerException;switch(java.util.Hashtable.__hasKey(this,a)){case 1:java.util.Hashtable.__ensureJavaMap(this);break;case 2:return this.__m.set(a,h),++this.modCount,null;case 3:var b=null,b=this.__m.get(a);this.__m.set(a,h);++this.modCount;return b}for(var c=this.table,b=a.hashCode(),g=(b&2147483647)%c.length,c=c[g];null!=c;c=c.next_)if(c.hash==b&&c.key.equals(a))return b= +c.value,c.value=h,b;this.addEntry(b,a,h,g);return null},"~O,~O");f(b,"remove",function(a){if(null==a)throw new NullPointerException("Hashtable key may not be null");switch(java.util.Hashtable.__hasKey(this,a)){case 1:java.util.Hashtable.__ensureJavaMap(this);break;case 2:return null;case 3:var h=null,h=this.__m.get(a);this.__m["delete"](a);++this.modCount;return h}for(var b=this.table,c=a.hashCode(),g=(c&2147483647)%b.length,h=b[g],j=null;null!=h;j=h,h=h.next_)if(h.hash==c&&h.key.equals(a))return this.modCount++, +null!=j?j.next_=h.next_:b[g]=h.next_,this.count--,a=h.value,h.value=null,a;return null},"~O");f(b,"putAll",function(a){if(java.util.Hashtable.__isSimple(a)){var h=this;a.__m.forEach(function(a,d){h.put(d,a)})}else{var b;for(a=a.entrySet().iterator();a.hasNext()&&((b=a.next())||1);)this.put(b.getKey(),b.getValue())}},"java.util.Map");f(b,"clear",function(){var a=this.table;this.modCount++;java.util.Hashtable.__isSimple(this)&&this.__m.clear();this.__setJS();for(var h=a.length;0<=--h;)a[h]=null;this.count= +0});c(b,"clone",function(){try{var a=ha(this,java.util.Hashtable,"clone",[]);a.table=Array(this.table.length);for(var h=this.table.length;0this.loadFactor)return a;this.loadFactor=-this.loadFactor;for(var h,b=0,c=this.table;bh)return a.value[h];b=a.value[0];c=a.value[1]}if(!g)return W("java.util.Hashtable$Enumerator$1")?0:java.util.Hashtable.Enumerator.$Hashtable$Enumerator$1$(),Y(java.util.Hashtable$Enumerator$1,this,null,0,b,c,null)}}else{b=this.index;for(h=this.table;null==a&&0=c)){c=Integer.toHexString(c.charCodeAt(0));a+="\\u"; +for(var g=0;g<4-c.length;g++)a+="0"}a+=c}}return a},"~S,~S,~B");c(b,"getProperty",function(a){var d=this.get(a),d="string"==typeof d?d:null;null==d&&null!=this.defaults&&(d=this.defaults.getProperty(a));return d},"~S");c(b,"getProperty",function(a,d){var h=this.get(a),h="string"==typeof h?h:null;null==h&&null!=this.defaults&&(h=this.defaults.getProperty(a));return null==h?d:h},"~S,~S");c(b,"list",function(a){if(null==a)throw new NullPointerException;for(var d="",h=this.propertyNames();h.hasMoreElements();){for(var b= +h.nextElement(),d=d+b,d=d+"=",c=this.get(b),g=this.defaults;null==c;)c=g.get(b),g=g.defaults;40",">").replaceAll("'","'").replaceAll('"',""")},"~S");b.lineSeparator=null});K(java.util,"SortedMap",java.util.Map); +K(java.util,"SortedSet",java.util.Set);A(["java.util.Enumeration"],"java.util.StringTokenizer",null,function(){var b=r(function(){this.delimiters=this.string=null;this.returnDelimiters=!1;this.position=0;u(this,arguments)},java.util,"StringTokenizer",null,java.util.Enumeration);x(b,function(a,d,h){switch(arguments.length){case 1:d=" \t\n\r\f";case 2:h=!1}if(null==a)throw new NullPointerException;this.string=a;this.delimiters=d;this.returnDelimiters=h;this.position=0},"~S,~S,~B");c(b,"countTokens", +function(){for(var a=0,d=!1,h=this.position,b=this.string.length;h>24&255});f(b,"setOpacity255",function(a){this.argb=this.argb&16777215|(a&255)<<24},"~N");b.get1=c(b,"get1", +function(a){var d=new JS.Color;d.argb=a|4278190080;return d},"~N");b.get3=c(b,"get3",function(a,d,h){return(new JS.Color).set4(a,d,h,255)},"~N,~N,~N");b.get4=c(b,"get4",function(a,d,h,b){return(new JS.Color).set4(a,d,h,b)},"~N,~N,~N,~N");c(b,"set4",function(a,d,h,b){this.argb=(b<<24|a<<16|d<<8|h)&4294967295;return this},"~N,~N,~N,~N");f(b,"toString",function(){var a="00000000"+Integer.toHexString(this.argb);return"[0x"+a.substring(a.length-8,a.length)+"]"})});n("JS");var Xa=r(function(){this.height= +this.width=0;u(this,arguments)},JS,"Dimension",null);x(Xa,function(b,a){this.set(b,a)},"~N,~N");c(Xa,"set",function(b,a){this.width=b;this.height=a;return this},"~N,~N");n("J.awtjs");G(J.awtjs,"Event",null);n("J.api");K(J.api,"GenericMenuInterface");n("JU");A(["JU.P3"],"JU.A4",["JU.T3"],function(){var b=r(function(){this.angle=0;u(this,arguments)},JU,"A4",JU.P3);x(b,function(){I(this,JU.A4,[]);this.z=1});b.new4=c(b,"new4",function(a,d,h,b){var c=new JU.A4;c.set4(a,d,h,b);return c},"~N,~N,~N,~N"); +b.newAA=c(b,"newAA",function(a){var d=new JU.A4;d.set4(a.x,a.y,a.z,a.angle);return d},"JU.A4");b.newVA=c(b,"newVA",function(a,d){var h=new JU.A4;h.setVA(a,d);return h},"JU.V3,~N");c(b,"setVA",function(a,d){this.x=a.x;this.y=a.y;this.z=a.z;this.angle=d},"JU.V3,~N");c(b,"set4",function(a,d,h,b){this.x=a;this.y=d;this.z=h;this.angle=b},"~N,~N,~N,~N");c(b,"setAA",function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.angle=a.angle},"JU.A4");c(b,"setM",function(a){this.setFromMat(a.m00,a.m01,a.m02,a.m10,a.m11, +a.m12,a.m20,a.m21,a.m22)},"JU.M3");c(b,"setFromMat",function(a,d,h,b,c,g,j,k,l){a=0.5*(a+c+l-1);this.x=k-g;this.y=h-j;this.z=b-d;d=0.5*Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z);0==d&&1==a?(this.x=this.y=0,this.z=1,this.angle=0):this.angle=Math.atan2(d,a)},"~N,~N,~N,~N,~N,~N,~N,~N,~N");f(b,"hashCode",function(){return JU.T3.floatToIntBits(this.x)^JU.T3.floatToIntBits(this.y)^JU.T3.floatToIntBits(this.z)^JU.T3.floatToIntBits(this.angle)});f(b,"equals",function(a){return!C(a,"JU.A4")?!1:this.x== +a.x&&this.y==a.y&&this.z==a.z&&this.angle==a.angle},"~O");f(b,"toString",function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.angle+")"});f(b,"toJSON",function(){return"["+this.x+","+this.y+","+this.z+","+180*this.angle/3.141592653589793+"]"})});n("JU");A(["java.net.URLConnection"],"JU.AjaxURLConnection",["JU.AU","$.Rdr"],function(){var b=r(function(){this.bytesOut=null;this.postOut="";u(this,arguments)},JU,"AjaxURLConnection",java.net.URLConnection);c(b,"doAjax",function(){var a=null,a= +Jmol;return a.doAjax(this.url,this.postOut,this.bytesOut,!1)});f(b,"connect",function(){});c(b,"outputBytes",function(a){this.bytesOut=a},"~A");c(b,"outputString",function(a){this.postOut=a},"~S");f(b,"getInputStream",function(){var a=null,d=this.doAjax();JU.AU.isAB(d)?a=JU.Rdr.getBIS(d):C(d,"JU.SB")?a=JU.Rdr.getBIS(JU.Rdr.getBytesFromSB(d)):"string"==typeof d&&(a=JU.Rdr.getBIS(d.getBytes()));return a});c(b,"getContents",function(){return this.doAjax()})});n("JU");A(["java.net.URLStreamHandler"], +"JU.AjaxURLStreamHandler",["JU.AjaxURLConnection","$.SB"],function(){var b=r(function(){this.protocol=null;u(this,arguments)},JU,"AjaxURLStreamHandler",java.net.URLStreamHandler);x(b,function(a){I(this,JU.AjaxURLStreamHandler,[]);this.protocol=a},"~S");c(b,"openConnection",function(a){return new JU.AjaxURLConnection(a)},"java.net.URL");f(b,"toExternalForm",function(a){var d=new JU.SB;d.append(a.getProtocol());d.append(":");null!=a.getAuthority()&&0=d?a:JU.AU.arrayCopyObject(a,d)},"~O,~N");b.ensureLengthS=c(b,"ensureLengthS",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyS(a, +d)},"~A,~N");b.ensureLengthA=c(b,"ensureLengthA",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyF(a,d)},"~A,~N");b.ensureLengthI=c(b,"ensureLengthI",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyI(a,d)},"~A,~N");b.ensureLengthShort=c(b,"ensureLengthShort",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyShort(a,d)},"~A,~N");b.ensureLengthByte=c(b,"ensureLengthByte",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyByte(a,d)},"~A,~N");b.doubleLength=c(b, +"doubleLength",function(a){return JU.AU.arrayCopyObject(a,null==a?16:2*JU.AU.getLength(a))},"~O");b.doubleLengthS=c(b,"doubleLengthS",function(a){return JU.AU.arrayCopyS(a,null==a?16:2*a.length)},"~A");b.doubleLengthF=c(b,"doubleLengthF",function(a){return JU.AU.arrayCopyF(a,null==a?16:2*a.length)},"~A");b.doubleLengthI=c(b,"doubleLengthI",function(a){return JU.AU.arrayCopyI(a,null==a?16:2*a.length)},"~A");b.doubleLengthShort=c(b,"doubleLengthShort",function(a){return JU.AU.arrayCopyShort(a,null== +a?16:2*a.length)},"~A");b.doubleLengthByte=c(b,"doubleLengthByte",function(a){return JU.AU.arrayCopyByte(a,null==a?16:2*a.length)},"~A");b.doubleLengthBool=c(b,"doubleLengthBool",function(a){return JU.AU.arrayCopyBool(a,null==a?16:2*a.length)},"~A");b.deleteElements=c(b,"deleteElements",function(a,d,h){if(0==h||null==a)return a;var b=JU.AU.getLength(a);if(d>=b)return a;b-=d+h;0>b&&(b=0);var c=JU.AU.newInstanceO(a,d+b);0d&&(d=h);if(d==h)return a;if(dd&&(d=h);if(dd&&(d=a.length);var h=Array(d);if(null!=a){var b=a.length;System.arraycopy(a,0,h,0,bd&&(d=h);if(dd&&(d=h);if(dd&&(d=h);if(dd&&(d=h);if(dd&&(d=h);if(d=c;g--){a+="\n*"+g+"*";for(j=h;j<=b;j++)a+="\t"+(j>18&63));h.appendC(JU.Base64.base64.charAt(g>>12&63));h.appendC(2==c?"=":JU.Base64.base64.charAt(g>>6&63));h.appendC(1<=c?"=":JU.Base64.base64.charAt(g&63))}return h},"~A");b.decodeBase64=c(b,"decodeBase64",function(a){var d=0,h,b=a.indexOf(";base64,")+1;0=b;)d+=65==(h=a[g].charCodeAt(0)&127)||0>2,j=O(d,0),k=18,g=b,l=b=0;gk&&(j[b++]=(l&16711680)>>16,b>8),b>5},"~N");c(b,"recalculateWordsInUse", +function(){var a;for(a=this.wordsInUse-1;0<=a&&0==this.words[a];a--);this.wordsInUse=a+1});b.newN=c(b,"newN",function(a){var d=new JU.BS;d.init(a);return d},"~N");c(b,"init",function(a){if(0>a)throw new NegativeArraySizeException("nbits < 0: "+a);this.initWords(a);this.sizeIsSticky=!0},"~N");c(b,"initWords",function(a){this.words=D(JU.BS.wordIndex(a-1)+1,0)},"~N");c(b,"ensureCapacity",function(a){this.words.lengtha)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);this.expandTo(d);this.words[d]|=1<>>-d;if(h==b)this.words[h]|=c&g;else{this.words[h]|=c;for(h+= +1;ha)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);d>=this.wordsInUse||(this.words[d]&=~(1<=this.wordsInUse)){var b=JU.BS.wordIndex(d-1);b>=this.wordsInUse&&(d=this.length(),b=this.wordsInUse-1);var c=-1<>>-d;if(h==b)this.words[h]&=~(c&g);else{this.words[h]&=~c;for(h+= +1;ha)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);return da)throw new IndexOutOfBoundsException("fromIndex < 0: "+a);var d=JU.BS.wordIndex(a);if(d>=this.wordsInUse)return-1;for(a=this.words[d]& +-1<a)throw new IndexOutOfBoundsException("fromIndex < 0: "+a);var d=JU.BS.wordIndex(a);if(d>=this.wordsInUse)return a;for(a=~this.words[d]&-1<a.wordsInUse;)this.words[--this.wordsInUse]=0;for(var d=0;d>32^a});c(b,"size",function(){return 32*this.words.length});f(b,"equals",function(a){if(!C(a, +"JU.BS"))return!1;if(this===a)return!0;if(this.wordsInUse!=a.wordsInUse)return!1;for(var d=0;d=a;)this.get(h)&&d--;return d},"~N");f(b,"toJSON",function(){var a=128c&&(b.append((-2==g?"":" ")+j),g=j),c=j)}b.append("}").appendC(h);return b.toString()},"JU.BS,~S,~S");b.unescape= +c(b,"unescape",function(a){var d,h;if(null==a||4>(h=(a=a.trim()).length)||a.equalsIgnoreCase("({null})")||"("!=(d=a.charAt(0))&&"["!=d||a.charAt(h-1)!=("("==d?")":"]")||"{"!=a.charAt(1)||a.indexOf("}")!=h-2)return null;for(var b=h-=2;2<=--b;)if(!JU.PT.isDigit(d=a.charAt(b))&&" "!=d&&"\t"!=d&&":"!=d)return null;for(var c=h;JU.PT.isDigit(a.charAt(--c)););if(++c==h)c=0;else try{c=Integer.parseInt(a.substring(c,h))}catch(g){if(E(g,"NumberFormatException"))return null;throw g;}for(var j=JU.BS.newN(c), +k=c=-1,l=-2,b=2;b<=h;b++)switch((d=a.charAt(b)).charCodeAt(0)){case 9:case 32:case 125:if(0>l)break;if(lk&&(k=l);j.setBits(k,l+1);k=-1;l=-2;break;case 58:k=c=l;l=-2;break;default:JU.PT.isDigit(d)&&(0>l&&(l=0),l=10*l+(d.charCodeAt(0)-48))}return 0<=k?null:j},"~S");b.emptyBitmap=D(0,0)});n("JU");A(["java.util.Hashtable"],"JU.CU",["JU.P3","$.PT"],function(){var b=G(JU,"CU",null);b.toRGBHexString=c(b,"toRGBHexString",function(a){var d=a.getRGB();if(0==d)return"000000";a="00"+Integer.toHexString(d>> +16&255);a=a.substring(a.length-2);var h="00"+Integer.toHexString(d>>8&255),h=h.substring(h.length-2),d="00"+Integer.toHexString(d&255),d=d.substring(d.length-2);return a+h+d},"javajs.api.GenericColor");b.toCSSString=c(b,"toCSSString",function(a){var d=a.getOpacity255();if(255==d)return"#"+JU.CU.toRGBHexString(a);a=a.getRGB();return"rgba("+(a>>16&255)+","+(a>>8&255)+","+(a&255)+","+d/255+")"},"javajs.api.GenericColor");b.getArgbFromString=c(b,"getArgbFromString",function(a){var d=0;if(null==a||0== +(d=a.length))return 0;a=a.toLowerCase();if("["==a.charAt(0)&&"]"==a.charAt(d-1)){var h;if(0<=a.indexOf(",")){h=JU.PT.split(a.substring(1,a.length-1),",");if(3!=h.length)return 0;a=JU.PT.parseFloat(h[0]);d=JU.PT.parseFloat(h[1]);h=JU.PT.parseFloat(h[2]);return JU.CU.colorTriadToFFRGB(a,d,h)}switch(d){case 9:h="x";break;case 10:h="0x";break;default:return 0}if(1!=a.indexOf(h))return 0;a="#"+a.substring(d-7,d-1);d=7}if(7==d&&"#"==a.charAt(0))try{return JU.PT.parseIntRadix(a.substring(1,7),16)|4278190080}catch(b){if(E(b, +Exception))return 0;throw b;}a=JU.CU.mapJavaScriptColors.get(a);return null==a?0:a.intValue()},"~S");b.colorTriadToFFRGB=c(b,"colorTriadToFFRGB",function(a,d,h){1>=a&&(1>=d&&1>=h)&&(0>16&255,a>>8&255,a&255);return d},"~N,JU.P3");b.colorPtToFFRGB=c(b,"colorPtToFFRGB",function(a){return JU.CU.colorTriadToFFRGB(a.x,a.y,a.z)},"JU.T3");b.toRGB3f=c(b,"toRGB3f",function(a,d){d[0]=(a>>16&255)/255;d[1]=(a>>8&255)/255;d[2]=(a&255)/255},"~N,~A");b.toFFGGGfromRGB=c(b,"toFFGGGfromRGB",function(a){a=v((2989*(a>>16&255)+5870*(a>>8&255)+1140*(a&255)+5E3)/1E4)&16777215;return JU.CU.rgb(a,a,a)},"~N");b.rgbToHSL=c(b,"rgbToHSL",function(a, +d){var h=a.x/255,b=a.y/255,c=a.z/255,g=Math.min(h,Math.min(b,c)),j=Math.max(h,Math.max(b,c)),k=j+g,g=j-g,h=60*(0==g?0:j==h?(b-c)/g+6:j==b?(c-h)/g+2:(h-b)/g+4)%360,b=g/(0==g?1:1>=k?k:2-k);return d?JU.P3.new3(Math.round(10*h)/10,Math.round(1E3*b)/10,Math.round(500*k)/10):JU.P3.new3(h,100*b,50*k)},"JU.P3,~B");b.hslToRGB=c(b,"hslToRGB",function(a){var d=Math.max(0,Math.min(360,a.x))/60,h=Math.max(0,Math.min(100,a.y))/100;a=Math.max(0,Math.min(100,a.z))/100;var h=a-(0.5>a?a:1-a)*h,b=2*(a-h);a=JU.CU.toRGB(h, +b,d+2);var c=JU.CU.toRGB(h,b,d),d=JU.CU.toRGB(h,b,d-2);return JU.P3.new3(Math.round(255*a),Math.round(255*c),Math.round(255*d))},"JU.P3");b.toRGB=c(b,"toRGB",function(a,d,h){return 1>(h+=0>h?6:6h?a+d:4>h?a+d*(4-h):a},"~N,~N,~N");b.colorNames=w(-1,"contrast black pewhite pecyan pepurple pegreen peblue peviolet pebrown pepink peyellow pedarkgreen peorange pelightblue pedarkcyan pedarkgray aliceblue antiquewhite aqua aquamarine azure beige bisque blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkturquoise darkviolet deeppink deepskyblue dimgray dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgreen lightgrey lightgray lightpink lightsalmon lightseagreen lightskyblue lightslategray lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen bluetint greenblue greentint grey gray pinktint redorange yellowtint".split(" ")); +b.colorArgbs=D(-1,[4294892730,4278190080,4294967295,4278255615,4291830015,4278255360,4284506367,4294934720,4288946216,4294957272,4294967040,4278239232,4294946816,4289769727,4278231200,4284506208,4293982463,4294634455,4278255615,4286578644,4293984255,4294309340,4294960324,4294962125,4278190335,4287245282,4289014314,4292786311,4284456608,4286578432,4291979550,4294934352,4284782061,4294965468,4292613180,4278255615,4278190219,4278225803,4290283019,4289309097,4278215680,4290623339,4287299723,4283788079, +4294937600,4288230092,4287299584,4293498490,4287609999,4282924427,4281290575,4278243025,4287889619,4294907027,4278239231,4285098345,4280193279,4289864226,4294966E3,4280453922,4294902015,4292664540,4294506751,4294956800,4292519200,4286611584,4278222848,4289593135,4293984240,4294928820,4291648604,4283105410,4294967280,4293977740,4293322490,4294963445,4286381056,4294965965,4289583334,4293951616,4292935679,4294638290,4287688336,4292072403,4292072403,4294948545,4294942842,4280332970,4287090426,4286023833, +4289774814,4294967264,4278255360,4281519410,4294635750,4294902015,4286578688,4284927402,4278190285,4290401747,4287852763,4282168177,4286277870,4278254234,4282962380,4291237253,4279834992,4294311930,4294960353,4294960309,4294958765,4278190208,4294833638,4286611456,4285238819,4294944E3,4294919424,4292505814,4293847210,4288215960,4289720046,4292571283,4294963157,4294957753,4291659071,4294951115,4292714717,4289781990,4286578816,4294901760,4290547599,4282477025,4287317267,4294606962,4294222944,4281240407, +4294964718,4288696877,4290822336,4287090411,4285160141,4285563024,4294966010,4278255487,4282811060,4291998860,4278222976,4292394968,4294927175,4282441936,4293821166,4294303411,4294967295,4294309365,4294967040,4288335154,4289714175,4281240407,4288217011,4286611584,4286611584,4294945723,4294919424,4294375029]);b.mapJavaScriptColors=new java.util.Hashtable;for(b=JU.CU.colorNames.length;0<=--b;)JU.CU.mapJavaScriptColors.put(JU.CU.colorNames[b],Integer.$valueOf(JU.CU.colorArgbs[b]))});n("JU");A(null,"JU.DF", +["JU.PT","$.SB"],function(){var b=G(JU,"DF",null);b.setUseNumberLocalization=c(b,"setUseNumberLocalization",function(a){JU.DF.useNumberLocalization[0]=a?Boolean.TRUE:Boolean.FALSE},"~B");b.formatDecimalDbl=c(b,"formatDecimalDbl",function(a,d){return 2147483647==d||-Infinity==a||Infinity==a||Double.isNaN(a)?""+a:JU.DF.formatDecimal(a,d)},"~N,~N");b.formatDecimal=c(b,"formatDecimal",function(a,d){if(-Infinity==a||(Infinity==a||Double.isNaN(a))||2147483647==d)return""+a;var h=0>a;h&&(a=-a);var b;if(0> +d){d=-d;d>JU.DF.formattingStrings.length&&(d=JU.DF.formattingStrings.length);if(0==a)return JU.DF.formattingStrings[d-1]+"E+0";var c;1>Math.abs(a)?(b=100,c=1E-100*a):(b=-100,c=1E100*a);c=(""+c).toUpperCase();var g=c.indexOf("E");0>g?c=""+a:(b=JU.PT.parseInt(c.substring(g+(c.indexOf("E+")==g?2:1)))+b,c=JU.PT.parseFloat(c.substring(0,g)),c=JU.DF.formatDecimal(c,d-1),c.startsWith("10.")&&(c=JU.DF.formatDecimal(1,d-1),b++));return(h?"-":"")+c+"E"+(0<=b?"+":"")+b}d>=JU.DF.formattingStrings.length&&(d= +JU.DF.formattingStrings.length-1);c=(""+a).toUpperCase();b=c.indexOf(".");if(0>b)return(h?"-":"")+c+JU.DF.formattingStrings[d].substring(1);g=c.indexOf("E-");0c&&"0"==h.charAt(b);)b--;return h.substring(0,b+1)},"~N,~N");b.formattingStrings=w(-1,"0 0.0 0.00 0.000 0.0000 0.00000 0.000000 0.0000000 0.00000000 0.000000000 0.0000000000 0.00000000000 0.000000000000".split(" "));b.formatAdds=R(-1,[0.5,0.05,0.005, +5E-4,5E-5,5E-6,5E-7,5E-8,5E-9,5E-10,5E-11,5E-12,5E-13]);b.useNumberLocalization=w(-1,[Boolean.TRUE])});n("JU");A(["java.lang.Enum"],"JU.Encoding",null,function(){var b=G(JU,"Encoding",Enum);B(b,"NONE",0,[]);B(b,"UTF8",1,[]);B(b,"UTF_16BE",2,[]);B(b,"UTF_16LE",3,[]);B(b,"UTF_32BE",4,[]);B(b,"UTF_32LE",5,[])});n("JU");A(["java.util.ArrayList"],"JU.Lst",null,function(){var b=G(JU,"Lst",java.util.ArrayList);c(b,"addLast",function(a){return this.add1(a)},"~O");f(b,"add",function(a,d){return this.add2(a, +d)},"~N,~O");c(b,"removeItemAt",function(a){return this._removeItemAt(a)},"~N");c(b,"removeObj",function(a){return this._removeObject(a)},"~O")});n("JU");var P=r(function(){this.m22=this.m21=this.m20=this.m12=this.m11=this.m10=this.m02=this.m01=this.m00=0;u(this,arguments)},JU,"M34",null);c(P,"setAA33",function(b){var a=b.x,d=b.y,h=b.z;b=b.angle;var q=Math.sqrt(a*a+d*d+h*h),q=1/q,a=a*q,d=d*q,h=h*q,c=Math.cos(b);b=Math.sin(b);q=1-c;this.m00=c+a*a*q;this.m11=c+d*d*q;this.m22=c+h*h*q;var c=a*d*q,g=h* +b;this.m01=c-g;this.m10=c+g;c=a*h*q;g=d*b;this.m02=c+g;this.m20=c-g;c=d*h*q;g=a*b;this.m12=c-g;this.m21=c+g},"JU.A4");c(P,"rotate",function(b){this.rotate2(b,b)},"JU.T3");c(P,"rotate2",function(b,a){a.set(this.m00*b.x+this.m01*b.y+this.m02*b.z,this.m10*b.x+this.m11*b.y+this.m12*b.z,this.m20*b.x+this.m21*b.y+this.m22*b.z)},"JU.T3,JU.T3");c(P,"setM33",function(b){this.m00=b.m00;this.m01=b.m01;this.m02=b.m02;this.m10=b.m10;this.m11=b.m11;this.m12=b.m12;this.m20=b.m20;this.m21=b.m21;this.m22=b.m22},"JU.M34"); +c(P,"clear33",function(){this.m00=this.m01=this.m02=this.m10=this.m11=this.m12=this.m20=this.m21=this.m22=0});c(P,"set33",function(b,a,d){switch(b){case 0:switch(a){case 0:this.m00=d;return;case 1:this.m01=d;return;case 2:this.m02=d;return}break;case 1:switch(a){case 0:this.m10=d;return;case 1:this.m11=d;return;case 2:this.m12=d;return}break;case 2:switch(a){case 0:this.m20=d;return;case 1:this.m21=d;return;case 2:this.m22=d;return}}this.err()},"~N,~N,~N");c(P,"get33",function(b,a){switch(b){case 0:switch(a){case 0:return this.m00; +case 1:return this.m01;case 2:return this.m02}break;case 1:switch(a){case 0:return this.m10;case 1:return this.m11;case 2:return this.m12}break;case 2:switch(a){case 0:return this.m20;case 1:return this.m21;case 2:return this.m22}}this.err();return 0},"~N,~N");c(P,"setRow33",function(b,a){switch(b){case 0:this.m00=a[0];this.m01=a[1];this.m02=a[2];break;case 1:this.m10=a[0];this.m11=a[1];this.m12=a[2];break;case 2:this.m20=a[0];this.m21=a[1];this.m22=a[2];break;default:this.err()}},"~N,~A");c(P,"getRow33", +function(b,a){switch(b){case 0:a[0]=this.m00;a[1]=this.m01;a[2]=this.m02;return;case 1:a[0]=this.m10;a[1]=this.m11;a[2]=this.m12;return;case 2:a[0]=this.m20;a[1]=this.m21;a[2]=this.m22;return}this.err()},"~N,~A");c(P,"setColumn33",function(b,a){switch(b){case 0:this.m00=a[0];this.m10=a[1];this.m20=a[2];break;case 1:this.m01=a[0];this.m11=a[1];this.m21=a[2];break;case 2:this.m02=a[0];this.m12=a[1];this.m22=a[2];break;default:this.err()}},"~N,~A");c(P,"getColumn33",function(b,a){switch(b){case 0:a[0]= +this.m00;a[1]=this.m10;a[2]=this.m20;break;case 1:a[0]=this.m01;a[1]=this.m11;a[2]=this.m21;break;case 2:a[0]=this.m02;a[1]=this.m12;a[2]=this.m22;break;default:this.err()}},"~N,~A");c(P,"add33",function(b){this.m00+=b.m00;this.m01+=b.m01;this.m02+=b.m02;this.m10+=b.m10;this.m11+=b.m11;this.m12+=b.m12;this.m20+=b.m20;this.m21+=b.m21;this.m22+=b.m22},"JU.M34");c(P,"sub33",function(b){this.m00-=b.m00;this.m01-=b.m01;this.m02-=b.m02;this.m10-=b.m10;this.m11-=b.m11;this.m12-=b.m12;this.m20-=b.m20;this.m21-= +b.m21;this.m22-=b.m22},"JU.M34");c(P,"mul33",function(b){this.m00*=b;this.m01*=b;this.m02*=b;this.m10*=b;this.m11*=b;this.m12*=b;this.m20*=b;this.m21*=b;this.m22*=b},"~N");c(P,"transpose33",function(){var b=this.m01;this.m01=this.m10;this.m10=b;b=this.m02;this.m02=this.m20;this.m20=b;b=this.m12;this.m12=this.m21;this.m21=b});c(P,"setXRot",function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=1;this.m10=this.m02=this.m01=0;this.m11=a;this.m12=-b;this.m20=0;this.m21=b;this.m22=a},"~N");c(P,"setYRot", +function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=a;this.m01=0;this.m02=b;this.m10=0;this.m11=1;this.m12=0;this.m20=-b;this.m21=0;this.m22=a},"~N");c(P,"setZRot",function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=a;this.m01=-b;this.m02=0;this.m10=b;this.m11=a;this.m21=this.m20=this.m12=0;this.m22=1},"~N");c(P,"determinant3",function(){return this.m00*(this.m11*this.m22-this.m21*this.m12)-this.m01*(this.m10*this.m22-this.m20*this.m12)+this.m02*(this.m10*this.m21-this.m20*this.m11)});c(P,"err", +function(){throw new ArrayIndexOutOfBoundsException("matrix column/row out of bounds");});n("JU");A(["JU.M34"],"JU.M3",["JU.T3"],function(){var b=G(JU,"M3",JU.M34,java.io.Serializable);b.newA9=c(b,"newA9",function(a){var d=new JU.M3;d.setA(a);return d},"~A");b.newM3=c(b,"newM3",function(a){var d=new JU.M3;if(null==a)return d.setScale(1),d;d.m00=a.m00;d.m01=a.m01;d.m02=a.m02;d.m10=a.m10;d.m11=a.m11;d.m12=a.m12;d.m20=a.m20;d.m21=a.m21;d.m22=a.m22;return d},"JU.M3");c(b,"setScale",function(a){this.clear33(); +this.m00=this.m11=this.m22=a},"~N");c(b,"setM3",function(a){this.setM33(a)},"JU.M34");c(b,"setA",function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m10=a[3];this.m11=a[4];this.m12=a[5];this.m20=a[6];this.m21=a[7];this.m22=a[8]},"~A");c(b,"setElement",function(a,d,h){this.set33(a,d,h)},"~N,~N,~N");c(b,"getElement",function(a,d){return this.get33(a,d)},"~N,~N");c(b,"setRow",function(a,d,h,b){switch(a){case 0:this.m00=d;this.m01=h;this.m02=b;break;case 1:this.m10=d;this.m11=h;this.m12=b;break; +case 2:this.m20=d;this.m21=h;this.m22=b;break;default:this.err()}},"~N,~N,~N,~N");c(b,"setRowV",function(a,d){switch(a){case 0:this.m00=d.x;this.m01=d.y;this.m02=d.z;break;case 1:this.m10=d.x;this.m11=d.y;this.m12=d.z;break;case 2:this.m20=d.x;this.m21=d.y;this.m22=d.z;break;default:this.err()}},"~N,JU.T3");c(b,"setRowA",function(a,d){this.setRow33(a,d)},"~N,~A");f(b,"getRow",function(a,d){this.getRow33(a,d)},"~N,~A");c(b,"setColumn3",function(a,d,h,b){switch(a){case 0:this.m00=d;this.m10=h;this.m20= +b;break;case 1:this.m01=d;this.m11=h;this.m21=b;break;case 2:this.m02=d;this.m12=h;this.m22=b;break;default:this.err()}},"~N,~N,~N,~N");c(b,"setColumnV",function(a,d){switch(a){case 0:this.m00=d.x;this.m10=d.y;this.m20=d.z;break;case 1:this.m01=d.x;this.m11=d.y;this.m21=d.z;break;case 2:this.m02=d.x;this.m12=d.y;this.m22=d.z;break;default:this.err()}},"~N,JU.T3");c(b,"getColumnV",function(a,d){switch(a){case 0:d.x=this.m00;d.y=this.m10;d.z=this.m20;break;case 1:d.x=this.m01;d.y=this.m11;d.z=this.m21; +break;case 2:d.x=this.m02;d.y=this.m12;d.z=this.m22;break;default:this.err()}},"~N,JU.T3");c(b,"setColumnA",function(a,d){this.setColumn33(a,d)},"~N,~A");c(b,"getColumn",function(a,d){this.getColumn33(a,d)},"~N,~A");c(b,"add",function(a){this.add33(a)},"JU.M3");c(b,"sub",function(a){this.sub33(a)},"JU.M3");c(b,"transpose",function(){this.transpose33()});c(b,"transposeM",function(a){this.setM33(a);this.transpose33()},"JU.M3");c(b,"invertM",function(a){this.setM33(a);this.invert()},"JU.M3");c(b,"invert", +function(){var a=this.determinant3();0!=a&&(a=1/a,this.set9(this.m11*this.m22-this.m12*this.m21,this.m02*this.m21-this.m01*this.m22,this.m01*this.m12-this.m02*this.m11,this.m12*this.m20-this.m10*this.m22,this.m00*this.m22-this.m02*this.m20,this.m02*this.m10-this.m00*this.m12,this.m10*this.m21-this.m11*this.m20,this.m01*this.m20-this.m00*this.m21,this.m00*this.m11-this.m01*this.m10),this.scale(a))});c(b,"setAsXRotation",function(a){this.setXRot(a);return this},"~N");c(b,"setAsYRotation",function(a){this.setYRot(a); +return this},"~N");c(b,"setAsZRotation",function(a){this.setZRot(a);return this},"~N");c(b,"scale",function(a){this.mul33(a)},"~N");c(b,"mul",function(a){this.mul2(this,a)},"JU.M3");c(b,"mul2",function(a,d){this.set9(a.m00*d.m00+a.m01*d.m10+a.m02*d.m20,a.m00*d.m01+a.m01*d.m11+a.m02*d.m21,a.m00*d.m02+a.m01*d.m12+a.m02*d.m22,a.m10*d.m00+a.m11*d.m10+a.m12*d.m20,a.m10*d.m01+a.m11*d.m11+a.m12*d.m21,a.m10*d.m02+a.m11*d.m12+a.m12*d.m22,a.m20*d.m00+a.m21*d.m10+a.m22*d.m20,a.m20*d.m01+a.m21*d.m11+a.m22*d.m21, +a.m20*d.m02+a.m21*d.m12+a.m22*d.m22)},"JU.M3,JU.M3");f(b,"equals",function(a){return!C(a,"JU.M3")?!1:this.m00==a.m00&&this.m01==a.m01&&this.m02==a.m02&&this.m10==a.m10&&this.m11==a.m11&&this.m12==a.m12&&this.m20==a.m20&&this.m21==a.m21&&this.m22==a.m22},"~O");f(b,"hashCode",function(){return JU.T3.floatToIntBits(this.m00)^JU.T3.floatToIntBits(this.m01)^JU.T3.floatToIntBits(this.m02)^JU.T3.floatToIntBits(this.m10)^JU.T3.floatToIntBits(this.m11)^JU.T3.floatToIntBits(this.m12)^JU.T3.floatToIntBits(this.m20)^ +JU.T3.floatToIntBits(this.m21)^JU.T3.floatToIntBits(this.m22)});c(b,"setZero",function(){this.clear33()});c(b,"set9",function(a,d,h,b,c,g,j,k,l){this.m00=a;this.m01=d;this.m02=h;this.m10=b;this.m11=c;this.m12=g;this.m20=j;this.m21=k;this.m22=l},"~N,~N,~N,~N,~N,~N,~N,~N,~N");f(b,"toString",function(){return"[\n ["+this.m00+"\t"+this.m01+"\t"+this.m02+"]\n ["+this.m10+"\t"+this.m11+"\t"+this.m12+"]\n ["+this.m20+"\t"+this.m21+"\t"+this.m22+"] ]"});c(b,"setAA",function(a){this.setAA33(a);return this}, +"JU.A4");c(b,"setAsBallRotation",function(a,d,h){var b=Math.sqrt(d*d+h*h),c=b*a;if(0==c)return this.setScale(1),!1;a=Math.cos(c);c=Math.sin(c);h=-h/b;d/=b;b=a-1;this.m00=1+b*h*h;this.m01=this.m10=b*h*d;this.m20=-(this.m02=c*h);this.m11=1+b*d*d;this.m21=-(this.m12=c*d);this.m22=a;return!0},"~N,~N,~N");c(b,"isRotation",function(){return 0.001>Math.abs(this.determinant3()-1)})});n("JU");A(["JU.M34"],"JU.M4",["JU.T3"],function(){var b=r(function(){this.m33=this.m32=this.m31=this.m30=this.m23=this.m13= +this.m03=0;u(this,arguments)},JU,"M4",JU.M34);b.newA16=c(b,"newA16",function(a){var d=new JU.M4;d.m00=a[0];d.m01=a[1];d.m02=a[2];d.m03=a[3];d.m10=a[4];d.m11=a[5];d.m12=a[6];d.m13=a[7];d.m20=a[8];d.m21=a[9];d.m22=a[10];d.m23=a[11];d.m30=a[12];d.m31=a[13];d.m32=a[14];d.m33=a[15];return d},"~A");b.newM4=c(b,"newM4",function(a){var d=new JU.M4;if(null==a)return d.setIdentity(),d;d.setToM3(a);d.m03=a.m03;d.m13=a.m13;d.m23=a.m23;d.m30=a.m30;d.m31=a.m31;d.m32=a.m32;d.m33=a.m33;return d},"JU.M4");b.newMV= +c(b,"newMV",function(a,d){var h=new JU.M4;h.setMV(a,d);return h},"JU.M3,JU.T3");c(b,"setZero",function(){this.clear33();this.m03=this.m13=this.m23=this.m30=this.m31=this.m32=this.m33=0});c(b,"setIdentity",function(){this.setZero();this.m00=this.m11=this.m22=this.m33=1});c(b,"setM4",function(a){this.setM33(a);this.m03=a.m03;this.m13=a.m13;this.m23=a.m23;this.m30=a.m30;this.m31=a.m31;this.m32=a.m32;this.m33=a.m33;return this},"JU.M4");c(b,"setMV",function(a,d){this.setM33(a);this.setTranslation(d); +this.m33=1},"JU.M3,JU.T3");c(b,"setToM3",function(a){this.setM33(a);this.m03=this.m13=this.m23=this.m30=this.m31=this.m32=0;this.m33=1},"JU.M34");c(b,"setToAA",function(a){this.setIdentity();this.setAA33(a)},"JU.A4");c(b,"setA",function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m03=a[3];this.m10=a[4];this.m11=a[5];this.m12=a[6];this.m13=a[7];this.m20=a[8];this.m21=a[9];this.m22=a[10];this.m23=a[11];this.m30=a[12];this.m31=a[13];this.m32=a[14];this.m33=a[15]},"~A");c(b,"setTranslation",function(a){this.m03= +a.x;this.m13=a.y;this.m23=a.z},"JU.T3");c(b,"setElement",function(a,d,h){if(3>a&&3>d)this.set33(a,d,h);else{(3a&&3>d)return this.get33(a,d);if(3a&&this.setRow33(a,d);switch(a){case 0:this.m03=d[3];return;case 1:this.m13=d[3];return;case 2:this.m23=d[3];return;case 3:this.m30=d[0];this.m31=d[1];this.m32=d[2];this.m33=d[3];return}this.err()},"~N,~A");f(b,"getRow",function(a,d){3>a&&this.getRow33(a,d);switch(a){case 0:d[3]=this.m03;return;case 1:d[3]=this.m13;return;case 2:d[3]=this.m23;return;case 3:d[0]=this.m30;d[1]=this.m31;d[2]=this.m32;d[3]=this.m33; +return}this.err()},"~N,~A");c(b,"setColumn4",function(a,d,h,b,c){0==a?(this.m00=d,this.m10=h,this.m20=b,this.m30=c):1==a?(this.m01=d,this.m11=h,this.m21=b,this.m31=c):2==a?(this.m02=d,this.m12=h,this.m22=b,this.m32=c):3==a?(this.m03=d,this.m13=h,this.m23=b,this.m33=c):this.err()},"~N,~N,~N,~N,~N");c(b,"setColumnA",function(a,d){3>a&&this.setColumn33(a,d);switch(a){case 0:this.m30=d[3];break;case 1:this.m31=d[3];break;case 2:this.m32=d[3];break;case 3:this.m03=d[0];this.m13=d[1];this.m23=d[2];this.m33= +d[3];break;default:this.err()}},"~N,~A");c(b,"getColumn",function(a,d){3>a&&this.getColumn33(a,d);switch(a){case 0:d[3]=this.m30;break;case 1:d[3]=this.m31;break;case 2:d[3]=this.m32;break;case 3:d[0]=this.m03;d[1]=this.m13;d[2]=this.m23;d[3]=this.m33;break;default:this.err()}},"~N,~A");c(b,"sub",function(a){this.sub33(a);this.m03-=a.m03;this.m13-=a.m13;this.m23-=a.m23;this.m30-=a.m30;this.m31-=a.m31;this.m32-=a.m32;this.m33-=a.m33},"JU.M4");c(b,"add",function(a){this.m03+=a.x;this.m13+=a.y;this.m23+= +a.z},"JU.T3");c(b,"transpose",function(){this.transpose33();var a=this.m03;this.m03=this.m30;this.m30=a;a=this.m13;this.m13=this.m31;this.m31=a;a=this.m23;this.m23=this.m32;this.m32=a});c(b,"invert",function(){var a=this.determinant4();if(0==a)return this;a=1/a;this.set(this.m11*(this.m22*this.m33-this.m23*this.m32)+this.m12*(this.m23*this.m31-this.m21*this.m33)+this.m13*(this.m21*this.m32-this.m22*this.m31),this.m21*(this.m02*this.m33-this.m03*this.m32)+this.m22*(this.m03*this.m31-this.m01*this.m33)+ +this.m23*(this.m01*this.m32-this.m02*this.m31),this.m31*(this.m02*this.m13-this.m03*this.m12)+this.m32*(this.m03*this.m11-this.m01*this.m13)+this.m33*(this.m01*this.m12-this.m02*this.m11),this.m01*(this.m13*this.m22-this.m12*this.m23)+this.m02*(this.m11*this.m23-this.m13*this.m21)+this.m03*(this.m12*this.m21-this.m11*this.m22),this.m12*(this.m20*this.m33-this.m23*this.m30)+this.m13*(this.m22*this.m30-this.m20*this.m32)+this.m10*(this.m23*this.m32-this.m22*this.m33),this.m22*(this.m00*this.m33-this.m03* +this.m30)+this.m23*(this.m02*this.m30-this.m00*this.m32)+this.m20*(this.m03*this.m32-this.m02*this.m33),this.m32*(this.m00*this.m13-this.m03*this.m10)+this.m33*(this.m02*this.m10-this.m00*this.m12)+this.m30*(this.m03*this.m12-this.m02*this.m13),this.m02*(this.m13*this.m20-this.m10*this.m23)+this.m03*(this.m10*this.m22-this.m12*this.m20)+this.m00*(this.m12*this.m23-this.m13*this.m22),this.m13*(this.m20*this.m31-this.m21*this.m30)+this.m10*(this.m21*this.m33-this.m23*this.m31)+this.m11*(this.m23*this.m30- +this.m20*this.m33),this.m23*(this.m00*this.m31-this.m01*this.m30)+this.m20*(this.m01*this.m33-this.m03*this.m31)+this.m21*(this.m03*this.m30-this.m00*this.m33),this.m33*(this.m00*this.m11-this.m01*this.m10)+this.m30*(this.m01*this.m13-this.m03*this.m11)+this.m31*(this.m03*this.m10-this.m00*this.m13),this.m03*(this.m11*this.m20-this.m10*this.m21)+this.m00*(this.m13*this.m21-this.m11*this.m23)+this.m01*(this.m10*this.m23-this.m13*this.m20),this.m10*(this.m22*this.m31-this.m21*this.m32)+this.m11*(this.m20* +this.m32-this.m22*this.m30)+this.m12*(this.m21*this.m30-this.m20*this.m31),this.m20*(this.m02*this.m31-this.m01*this.m32)+this.m21*(this.m00*this.m32-this.m02*this.m30)+this.m22*(this.m01*this.m30-this.m00*this.m31),this.m30*(this.m02*this.m11-this.m01*this.m12)+this.m31*(this.m00*this.m12-this.m02*this.m10)+this.m32*(this.m01*this.m10-this.m00*this.m11),this.m00*(this.m11*this.m22-this.m12*this.m21)+this.m01*(this.m12*this.m20-this.m10*this.m22)+this.m02*(this.m10*this.m21-this.m11*this.m20));this.scale(a); +return this});c(b,"set",function(a,d,h,b,c,g,j,k,l,f,m,p,z,y,H,M){this.m00=a;this.m01=d;this.m02=h;this.m03=b;this.m10=c;this.m11=g;this.m12=j;this.m13=k;this.m20=l;this.m21=f;this.m22=m;this.m23=p;this.m30=z;this.m31=y;this.m32=H;this.m33=M},"~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");c(b,"determinant4",function(){return(this.m00*this.m11-this.m01*this.m10)*(this.m22*this.m33-this.m23*this.m32)-(this.m00*this.m12-this.m02*this.m10)*(this.m21*this.m33-this.m23*this.m31)+(this.m00*this.m13- +this.m03*this.m10)*(this.m21*this.m32-this.m22*this.m31)+(this.m01*this.m12-this.m02*this.m11)*(this.m20*this.m33-this.m23*this.m30)-(this.m01*this.m13-this.m03*this.m11)*(this.m20*this.m32-this.m22*this.m30)+(this.m02*this.m13-this.m03*this.m12)*(this.m20*this.m31-this.m21*this.m30)});c(b,"scale",function(a){this.mul33(a);this.m03*=a;this.m13*=a;this.m23*=a;this.m30*=a;this.m31*=a;this.m32*=a;this.m33*=a},"~N");c(b,"mul",function(a){this.mul2(this,a)},"JU.M4");c(b,"mul2",function(a,d){this.set(a.m00* +d.m00+a.m01*d.m10+a.m02*d.m20+a.m03*d.m30,a.m00*d.m01+a.m01*d.m11+a.m02*d.m21+a.m03*d.m31,a.m00*d.m02+a.m01*d.m12+a.m02*d.m22+a.m03*d.m32,a.m00*d.m03+a.m01*d.m13+a.m02*d.m23+a.m03*d.m33,a.m10*d.m00+a.m11*d.m10+a.m12*d.m20+a.m13*d.m30,a.m10*d.m01+a.m11*d.m11+a.m12*d.m21+a.m13*d.m31,a.m10*d.m02+a.m11*d.m12+a.m12*d.m22+a.m13*d.m32,a.m10*d.m03+a.m11*d.m13+a.m12*d.m23+a.m13*d.m33,a.m20*d.m00+a.m21*d.m10+a.m22*d.m20+a.m23*d.m30,a.m20*d.m01+a.m21*d.m11+a.m22*d.m21+a.m23*d.m31,a.m20*d.m02+a.m21*d.m12+a.m22* +d.m22+a.m23*d.m32,a.m20*d.m03+a.m21*d.m13+a.m22*d.m23+a.m23*d.m33,a.m30*d.m00+a.m31*d.m10+a.m32*d.m20+a.m33*d.m30,a.m30*d.m01+a.m31*d.m11+a.m32*d.m21+a.m33*d.m31,a.m30*d.m02+a.m31*d.m12+a.m32*d.m22+a.m33*d.m32,a.m30*d.m03+a.m31*d.m13+a.m32*d.m23+a.m33*d.m33)},"JU.M4,JU.M4");c(b,"transform",function(a){this.transform2(a,a)},"JU.T4");c(b,"transform2",function(a,d){d.set4(this.m00*a.x+this.m01*a.y+this.m02*a.z+this.m03*a.w,this.m10*a.x+this.m11*a.y+this.m12*a.z+this.m13*a.w,this.m20*a.x+this.m21*a.y+ +this.m22*a.z+this.m23*a.w,this.m30*a.x+this.m31*a.y+this.m32*a.z+this.m33*a.w)},"JU.T4,JU.T4");c(b,"rotTrans",function(a){this.rotTrans2(a,a)},"JU.T3");c(b,"rotTrans2",function(a,d){d.set(this.m00*a.x+this.m01*a.y+this.m02*a.z+this.m03,this.m10*a.x+this.m11*a.y+this.m12*a.z+this.m13,this.m20*a.x+this.m21*a.y+this.m22*a.z+this.m23);return d},"JU.T3,JU.T3");c(b,"setAsXYRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m22=d;this.m23=-a;this.m32=a;this.m33=d;return this}, +"~N");c(b,"setAsYZRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m00=d;this.m03=-a;this.m30=a;this.m33=d;return this},"~N");c(b,"setAsXZRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m11=d;this.m13=-a;this.m31=a;this.m33=d;return this},"~N");f(b,"equals",function(a){return!C(a,"JU.M4")?!1:this.m00==a.m00&&this.m01==a.m01&&this.m02==a.m02&&this.m03==a.m03&&this.m10==a.m10&&this.m11==a.m11&&this.m12==a.m12&&this.m13==a.m13&&this.m20==a.m20&& +this.m21==a.m21&&this.m22==a.m22&&this.m23==a.m23&&this.m30==a.m30&&this.m31==a.m31&&this.m32==a.m32&&this.m33==a.m33},"~O");f(b,"hashCode",function(){return JU.T3.floatToIntBits(this.m00)^JU.T3.floatToIntBits(this.m01)^JU.T3.floatToIntBits(this.m02)^JU.T3.floatToIntBits(this.m03)^JU.T3.floatToIntBits(this.m10)^JU.T3.floatToIntBits(this.m11)^JU.T3.floatToIntBits(this.m12)^JU.T3.floatToIntBits(this.m13)^JU.T3.floatToIntBits(this.m20)^JU.T3.floatToIntBits(this.m21)^JU.T3.floatToIntBits(this.m22)^JU.T3.floatToIntBits(this.m23)^ +JU.T3.floatToIntBits(this.m30)^JU.T3.floatToIntBits(this.m31)^JU.T3.floatToIntBits(this.m32)^JU.T3.floatToIntBits(this.m33)});f(b,"toString",function(){return"[\n ["+this.m00+"\t"+this.m01+"\t"+this.m02+"\t"+this.m03+"]\n ["+this.m10+"\t"+this.m11+"\t"+this.m12+"\t"+this.m13+"]\n ["+this.m20+"\t"+this.m21+"\t"+this.m22+"\t"+this.m23+"]\n ["+this.m30+"\t"+this.m31+"\t"+this.m32+"\t"+this.m33+"] ]"});c(b,"round",function(a){this.m00=this.rnd(this.m00,a);this.m01=this.rnd(this.m01,a);this.m02=this.rnd(this.m02, +a);this.m03=this.rnd(this.m03,a);this.m10=this.rnd(this.m10,a);this.m11=this.rnd(this.m11,a);this.m12=this.rnd(this.m12,a);this.m13=this.rnd(this.m13,a);this.m20=this.rnd(this.m20,a);this.m21=this.rnd(this.m21,a);this.m22=this.rnd(this.m22,a);this.m23=this.rnd(this.m23,a);this.m30=this.rnd(this.m30,a);this.m31=this.rnd(this.m31,a);this.m32=this.rnd(this.m32,a);this.m33=this.rnd(this.m33,a);return this},"~N");c(b,"rnd",function(a,d){return Math.abs(a)h&&(h=a.length-d);try{this.os.write(a,d,h)}catch(b){if(!E(b,"java.io.IOException"))throw b;}this.byteCount+=h},"~A,~N,~N");f(b,"writeShort",function(a){this.isBigEndian()?(this.writeByteAsInt(a>>8),this.writeByteAsInt(a)):(this.writeByteAsInt(a),this.writeByteAsInt(a>> +8))},"~N");f(b,"writeLong",function(a){this.isBigEndian()?(this.writeInt(a>>32&4294967295),this.writeInt(a&4294967295)):(this.writeByteAsInt(a>>56),this.writeByteAsInt(a>>48),this.writeByteAsInt(a>>40),this.writeByteAsInt(a>>32),this.writeByteAsInt(a>>24),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>8),this.writeByteAsInt(a))},"~N");c(b,"cancel",function(){this.isCanceled=!0;this.closeChannel()});f(b,"closeChannel",function(){if(this.closed)return null;try{null!=this.bw?(this.bw.flush(),this.bw.close()): +null!=this.os&&(this.os.flush(),this.os.close()),null!=this.os0&&this.isCanceled&&(this.os0.flush(),this.os0.close())}catch(a){if(!E(a,Exception))throw a;}if(this.isCanceled)return this.closed=!0,null;if(null==this.fileName){if(this.$isBase64){var d=this.getBase64();null!=this.os0&&(this.os=this.os0,this.append(d));this.sb=new JU.SB;this.sb.append(d);this.$isBase64=!1;return this.closeChannel()}return null==this.sb?null:this.sb.toString()}this.closed=!0;if(!this.isLocalFile){d=this.postByteArray(); +if(null==d||d.startsWith("java.net"))this.byteCount=-1;return d}var h=d=null,d=self.J2S||Jmol,h="function"==typeof this.fileName?this.fileName:null;if(null!=d){var b=null==this.sb?this.toByteArray():this.sb.toString();null==h?d.doAjax(this.fileName,null,b,null==this.sb):d.applyFunc(this.fileName,b)}return null});c(b,"isBase64",function(){return this.$isBase64});c(b,"getBase64",function(){return JU.Base64.getBase64(this.toByteArray()).toString()});c(b,"toByteArray",function(){return null!=this.bytes? +this.bytes:C(this.os,"java.io.ByteArrayOutputStream")?this.os.toByteArray():null});c(b,"close",function(){this.closeChannel()});f(b,"toString",function(){if(null!=this.bw)try{this.bw.flush()}catch(a){if(!E(a,"java.io.IOException"))throw a;}return null!=this.sb?this.closeChannel():this.byteCount+" bytes"});c(b,"postByteArray",function(){var a=null==this.sb?this.toByteArray():this.sb.toString().getBytes();return this.bytePoster.postByteArray(this.fileName,a)});b.isRemote=c(b,"isRemote",function(a){if(null== +a)return!1;a=JU.OC.urlTypeIndex(a);return 0<=a&&4>a},"~S");b.isLocal=c(b,"isLocal",function(a){return null!=a&&!JU.OC.isRemote(a)},"~S");b.urlTypeIndex=c(b,"urlTypeIndex",function(a){if(null==a)return-2;for(var d=0;d>24),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>8),this.writeByteAsInt(a)):(this.writeByteAsInt(a),this.writeByteAsInt(a>> +8),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>24))},"~N");c(b,"writeFloat",function(a){this.writeInt(0==a?0:Float.floatToIntBits(a))},"~N");b.urlPrefixes=w(-1,"http: https: sftp: ftp: file: cache:".split(" "))});n("JU");A(["JU.T3"],"JU.P3",null,function(){var b=G(JU,"P3",JU.T3);b.newP=c(b,"newP",function(a){var d=new JU.P3;d.x=a.x;d.y=a.y;d.z=a.z;return d},"JU.T3");b.getUnlikely=c(b,"getUnlikely",function(){return null==JU.P3.unlikely?JU.P3.unlikely=JU.P3.new3(3.141592653589793,2.718281828459045, +8.539734222673566):JU.P3.unlikely});b.new3=c(b,"new3",function(a,d,h){var b=new JU.P3;b.x=a;b.y=d;b.z=h;return b},"~N,~N,~N");b.newA=c(b,"newA",function(a){return JU.P3.new3(a[0],a[1],a[2])},"~A");b.unlikely=null});n("JU");A(["JU.T3i"],"JU.P3i",null,function(){var b=G(JU,"P3i",JU.T3i);b.new3=c(b,"new3",function(a,d,h){var b=new JU.P3i;b.x=a;b.y=d;b.z=h;return b},"~N,~N,~N")});n("JU");A(["JU.T4"],"JU.P4",null,function(){var b=G(JU,"P4",JU.T4);b.new4=c(b,"new4",function(a,d,h,b){var c=new JU.P4;c.set4(a, +d,h,b);return c},"~N,~N,~N,~N");b.newPt=c(b,"newPt",function(a){var d=new JU.P4;d.set4(a.x,a.y,a.z,a.w);return d},"JU.P4");c(b,"distance4",function(a){var d=this.x-a.x,h=this.y-a.y,b=this.z-a.z;a=this.w-a.w;return Math.sqrt(d*d+h*h+b*b+a*a)},"JU.P4")});n("JU");A(null,"JU.PT",["java.util.Arrays","JU.AU","$.DF","$.SB"],function(){var b=G(JU,"PT",null);b.parseInt=c(b,"parseInt",function(a){return JU.PT.parseIntNext(a,D(-1,[0]))},"~S");b.parseIntNext=c(b,"parseIntNext",function(a,d){var h=a.length;return 0> +d[0]||d[0]>=h?-2147483648:JU.PT.parseIntChecked(a,h,d)},"~S,~A");b.parseIntChecked=c(b,"parseIntChecked",function(a,d,h){var b=!1,c=0,g=h[0];if(0>g)return-2147483648;for(var j;g=j;)c=10*c+(j-48),b=!0,++g;b?k&&(c=-c):c=-2147483648;h[0]=g;return c},"~S,~N,~A");b.isWhiteSpace=c(b,"isWhiteSpace",function(a,d){var h;return 0<=d&&(" "==(h=a.charAt(d))||"\t"==h||"\n"== +h)},"~S,~N");b.parseFloatChecked=c(b,"parseFloatChecked",function(a,d,h,b){var c=!1,g=h[0];if(b&&a.indexOf("\n")!=a.lastIndexOf("\n"))return NaN;for(;g=k;)l=10*l+1*(k-48),++g,c=!0;var m=!1,p=0,z=0==l?-1:0;if(46==k)for(m=!0;++g=k;){c=!0;if(0>z){if(48==k){z--;continue}z=-z}p=d)return NaN;k=a.charAt(g).charCodeAt(0);if(43==k&&++g>=d)return NaN;h[0]=g;g=JU.PT.parseIntChecked(a,d,h);if(-2147483648==g)return NaN;0g&&-g<=JU.PT.decimalScale.length?c*=JU.PT.decimalScale[-g-1]:0!=g&&(c*=Math.pow(10,g))}else h[0]=g;j&&(c=-c);Infinity==c&&(c=3.4028235E38); +return!b||(!l||m)&&JU.PT.checkTrailingText(a,h[0],d)?c:NaN},"~S,~N,~A,~B");b.checkTrailingText=c(b,"checkTrailingText",function(a,d,h){for(var b;dj?j=a.length:a=a.substring(0,j),d[0]+=j+1,a=JU.PT.getTokens(a),null==h&&(h=L(a.length,0)),g=JU.PT.parseFloatArrayInfested(a,h));if(null==h)return L(0,0);for(a=g;ab&&(d=b);return 0>h[0]||h[0]>=d?NaN:JU.PT.parseFloatChecked(a,d,h,!1)},"~S,~N,~A");b.parseFloatNext=c(b,"parseFloatNext",function(a,d){var h=null==a?-1:a.length;return 0>d[0]||d[0]>=h?NaN:JU.PT.parseFloatChecked(a,h,d,!1)},"~S,~A");b.parseFloatStrict=c(b,"parseFloatStrict",function(a){var d=a.length;return 0==d?NaN:JU.PT.parseFloatChecked(a,d,D(-1,[0]),!0)},"~S");b.parseFloat=c(b,"parseFloat",function(a){return JU.PT.parseFloatNext(a,D(-1,[0]))},"~S");b.parseIntRadix= +c(b,"parseIntRadix",function(a,d){return Integer.parseIntRadix(a,d)},"~S,~N");b.getTokens=c(b,"getTokens",function(a){return JU.PT.getTokensAt(a,0)},"~S");b.parseToken=c(b,"parseToken",function(a){return JU.PT.parseTokenNext(a,D(-1,[0]))},"~S");b.parseTrimmed=c(b,"parseTrimmed",function(a){return JU.PT.parseTrimmedRange(a,0,a.length)},"~S");b.parseTrimmedAt=c(b,"parseTrimmedAt",function(a,d){return JU.PT.parseTrimmedRange(a,d,a.length)},"~S,~N");b.parseTrimmedRange=c(b,"parseTrimmedRange",function(a, +d,h){var b=a.length;hd||d>h)return null;var b=JU.PT.countTokens(a,d),c=Array(b),g=D(1,0);g[0]=d;for(var j=0;jd[0]||d[0]>=h?null:JU.PT.parseTokenChecked(a,h,d)},"~S,~A");b.parseTokenRange=c(b,"parseTokenRange",function(a,d,h){var b=a.length;d>b&&(d=b);return 0>h[0]||h[0]>=d?null:JU.PT.parseTokenChecked(a,d,h)},"~S,~N,~A");b.parseTokenChecked=c(b,"parseTokenChecked",function(a,d, +h){for(var b=h[0];b=d&&JU.PT.isWhiteSpace(a,h);)--h;return hb&&(d=b);return 0>h[0]||h[0]>=d?-2147483648:JU.PT.parseIntChecked(a,d,h)},"~S,~N,~A");b.parseFloatArrayData=c(b,"parseFloatArrayData",function(a,d){JU.PT.parseFloatArrayDataN(a,d,d.length)},"~A,~A");b.parseFloatArrayDataN=c(b,"parseFloatArrayDataN",function(a,d,h){for(;0<=--h;)d[h]=h>=a.length?NaN:JU.PT.parseFloat(a[h])},"~A,~A,~N");b.split=c(b,"split",function(a, +d){if(0==a.length)return[];var h=1,b=a.indexOf(d),c,g=d.length;if(0>b||0==g)return c=Array(1),c[0]=a,c;for(var j=a.length-g;0<=b&&bh||0>(h=a.indexOf('"',h)))return"";for(var b=h+1,c=a.length;++hh||(h=h+d.length+1)>=a.length)return"";var b=a.charAt(h);switch(b.charCodeAt(0)){case 39:case 34:h++;break;default:b=" ",a+=" "}b=a.indexOf(b,h);return 0>b?null:a.substring(h, +b)},"~S,~S");b.getCSVString=c(b,"getCSVString",function(a,d){var h=d[1];if(0>h||0>(h=a.indexOf('"',h)))return null;for(var b=d[0]=h,c=a.length,g=!1,j=!1;++h=c)return d[1]=-1,null;d[1]=h+1;h=a.substring(b+1,h);return j?JU.PT.rep(JU.PT.rep(h,'""',"\x00"),"\x00",'"'):h},"~S,~A");b.isOneOf=c(b,"isOneOf",function(a,d){if(0==d.length)return!1;";"!=d.charAt(0)&&(d=";"+d+";");return 0>a.indexOf(";")&&0<=d.indexOf(";"+a+";")},"~S,~S"); +b.getQuotedAttribute=c(b,"getQuotedAttribute",function(a,d){var h=a.indexOf(d+"=");return 0>h?null:JU.PT.getQuotedStringAt(a,h)},"~S,~S");b.approx=c(b,"approx",function(a,d){return Math.round(a*d)/d},"~N,~N");b.rep=c(b,"rep",function(a,d,h){if(null==a||0==d.length||0>a.indexOf(d))return a;var b=0<=h.indexOf(d);do a=a.$replace(d,h);while(!b&&0<=a.indexOf(d));return a},"~S,~S,~S");b.formatF=c(b,"formatF",function(a,d,h,b,c){return JU.PT.formatS(JU.DF.formatDecimal(a,h),d,0,b,c)},"~N,~N,~N,~B,~B");b.formatD= +c(b,"formatD",function(a,d,h,b,c){return JU.PT.formatS(JU.DF.formatDecimal(a,-1-h),d,0,b,c)},"~N,~N,~N,~B,~B");b.formatS=c(b,"formatS",function(a,d,h,b,c){if(null==a)return"";var g=a.length;2147483647!=h&&0h&&0<=g+h&&(a=a.substring(g+h+1));h=d-a.length;if(0>=h)return a;d=c&&!b&&"-"==a.charAt(0);c=c?"0":" ";var j=d?"-":c,g=new JU.SB;b&&g.append(a);for(g.appendC(j);0<--h;)g.appendC(c);b||g.append(d?c+a.substring(1):a);return g.toString()},"~S,~N,~N,~B,~B");b.replaceWithCharacter= +c(b,"replaceWithCharacter",function(a,d,h){if(null==a)return null;for(var b=d.length;0<=--b;)a=a.$replace(d.charAt(b),h);return a},"~S,~S,~S");b.replaceAllCharacters=c(b,"replaceAllCharacters",function(a,d,h){for(var b=d.length;0<=--b;){var c=d.substring(b,b+1);a=JU.PT.rep(a,c,h)}return a},"~S,~S,~S");b.trim=c(b,"trim",function(a,d){if(null==a||0==a.length)return a;if(0==d.length)return a.trim();for(var h=a.length,b=0;bb&&0<=d.indexOf(a.charAt(h));)h--; +return a.substring(b,h+1)},"~S,~S");b.trimQuotes=c(b,"trimQuotes",function(a){return null!=a&&1h;h+=2)if(0<=a.indexOf('\\\\\tt\rr\nn""'.charAt(h))){d=!0;break}if(d)for(;10>h;){for(var d=-1,b='\\\\\tt\rr\nn""'.charAt(h++),c='\\\\\tt\rr\nn""'.charAt(h++),g=new JU.SB, +j=0;0<=(d=a.indexOf(b,d+1));)g.append(a.substring(j,d)).appendC("\\").appendC(c),j=d+1;g.append(a.substring(j,a.length));a=g.toString()}return'"'+JU.PT.escUnicode(a)+'"'},"~S");b.escUnicode=c(b,"escUnicode",function(a){for(var d=a.length;0<=--d;)if(127a.indexOf(".")&&(0>a.indexOf("e")&&0>a.indexOf("N")&& +0>a.indexOf("n"))&&(a+=".0");return a},"~N");b.join=c(b,"join",function(a,d,h){if(a.lengtha.indexOf("%")||0==j||0>a.indexOf(d))return a;var k="",l,f,m;for(l=0;0<=(f=a.indexOf("%",l))&&0<=(m=a.indexOf(d,f+1));)if(l!=f&&(k+=a.substring(l,f)),l=f+1,m>f+6)k+="%";else try{var p=!1;"-"==a.charAt(l)&& +(p=!0,++l);var z=!1;"0"==a.charAt(l)&&(z=!0,++l);for(var y,H=0;"0"<=(y=a.charAt(l))&&"9">=y;)H=10*H+(y.charCodeAt(0)-48),++l;var M=2147483647,v=!1;if("."==a.charAt(l)){++l;if("-"==(y=a.charAt(l)))v=!0,++l;if("0"<=(y=a.charAt(l))&&"9">=y)if(M=y.charCodeAt(0)-48,++l,"0"<=(y=a.charAt(l))&&"9">=y)M=10*M+(y.charCodeAt(0)-48),++l;v&&(M=-M)}if(a.substring(l,l+j).equals(d)){if(l+=j,Float.isNaN(b)?null!=h?k+=JU.PT.formatS(h,H,0>M?M-1:M,p,z):Double.isNaN(c)||(k+=JU.PT.formatD(c,H,M-1,p,z)):k+=JU.PT.formatF(b, +H,M,p,z),g)break}else l=f+1,k+="%"}catch(n){if(E(n,"IndexOutOfBoundsException")){l=f;break}else throw n;}return k+=a.substring(l)},"~S,~S,~S,~N,~N,~B");b.formatStringS=c(b,"formatStringS",function(a,d,h){return JU.PT.formatString(a,d,h,NaN,NaN,!1)},"~S,~S,~S");b.formatStringF=c(b,"formatStringF",function(a,d,h){return JU.PT.formatString(a,d,null,h,NaN,!1)},"~S,~S,~N");b.formatStringI=c(b,"formatStringI",function(a,d,h){return JU.PT.formatString(a,d,""+h,NaN,NaN,!1)},"~S,~S,~N");b.sprintf=c(b,"sprintf", +function(a,d,h){if(null==h)return a;var b=d.length;if(b==h.length)try{for(var c=0;ca.indexOf("p")&&0>a.indexOf("q"))return a;a=JU.PT.rep(a, +"%%","\u0001");a=JU.PT.rep(a,"%p","%6.2p");a=JU.PT.rep(a,"%q","%6.2q");a=JU.PT.split(a,"%");var d=new JU.SB;d.append(a[0]);for(var h=1;ha&&(a=0);return(a+" ").substring(0,d)},"~N,~N");b.isWild=c(b,"isWild",function(a){return null!=a&&(0<=a.indexOf("*")||0<=a.indexOf("?"))},"~S");b.isMatch=c(b,"isMatch",function(a,d,h,b){if(a.equals(d))return!0;var c=d.length;if(0==c)return!1;var g=h&&b?"*"==d.charAt(0):!1;if(1==c&&g)return!0;var j=h&&d.endsWith("*");if(!(0<=d.indexOf("?"))){if(g)return j? +3>c||0<=a.indexOf(d.substring(1,c-1)):a.endsWith(d.substring(1));if(j)return a.startsWith(d.substring(0,c-1))}for(var k=a.length,l="????",f=4;fk;){if(b&&"?"==d.charAt(h))++h;else if("?"!=d.charAt(h+c-1))return!1;--c}for(b=k;0<=--b;)if(c=d.charAt(h+b),"?"!=c&&(k=a.charAt(b),c!=k&&("\u0001"!=c||"?"!=k)))return!1;return!0},"~S,~S,~B,~B");b.replaceQuotedStrings=c(b,"replaceQuotedStrings",function(a, +d,h){for(var b=d.size(),c=0;c=a},"~S");b.isUpperCase=c(b,"isUpperCase",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a},"~S");b.isLowerCase= +c(b,"isLowerCase",function(a){a=a.charCodeAt(0);return 97<=a&&122>=a},"~S");b.isLetter=c(b,"isLetter",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a},"~S");b.isLetterOrDigit=c(b,"isLetterOrDigit",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a||48<=a&&57>=a},"~S");b.isWhitespace=c(b,"isWhitespace",function(a){a=a.charCodeAt(0);return 28<=a&&32>=a||9<=a&&13>=a},"~S");b.fixPtFloats=c(b,"fixPtFloats",function(a,d){a.x=Math.round(a.x*d)/d;a.y=Math.round(a.y*d)/d;a.z= +Math.round(a.z*d)/d},"JU.T3,~N");b.fixFloat=c(b,"fixFloat",function(a,d){return Math.round(a*d)/d},"~N,~N");b.fixDouble=c(b,"fixDouble",function(a,d){return Math.round(a*d)/d},"~N,~N");b.parseFloatFraction=c(b,"parseFloatFraction",function(a){var d=a.indexOf("/");return 0>d?JU.PT.parseFloat(a):JU.PT.parseFloat(a.substring(0,d))/JU.PT.parseFloat(a.substring(d+1))},"~S");b.tensScale=L(-1,[10,100,1E3,1E4,1E5,1E6]);b.decimalScale=L(-1,[0.1,0.01,0.001,1E-4,1E-5,1E-6,1E-7,1E-8,1E-9,1E-10,1E-11,1E-12,1E-13, +1E-14,1E-15])});n("JU");var T=r(function(){this.s=this.sb=null;u(this,arguments)},JU,"SB",null);x(T,function(){this.s=""});T.newN=c(T,"newN",function(){return new JU.SB},"~N");T.newS=c(T,"newS",function(b){var a=new JU.SB;a.s=b;return a},"~S");c(T,"append",function(b){this.s+=b;return this},"~S");c(T,"appendC",function(b){this.s+=b;return this},"~S");c(T,"appendI",function(b){this.s+=b;return this},"~N");c(T,"appendB",function(b){this.s+=b;return this},"~B");c(T,"appendF",function(b){b=""+b;0>b.indexOf(".")&& +0>b.indexOf("e")&&(b+=".0");this.s+=b;return this},"~N");c(T,"appendD",function(b){b=""+b;0>b.indexOf(".")&&0>b.indexOf("e")&&(b+=".0");this.s+=b;return this},"~N");c(T,"appendSB",function(b){this.s+=b.s;return this},"JU.SB");c(T,"appendO",function(b){null!=b&&(this.s+=b.toString());return this},"~O");c(T,"appendCB",function(b,a,d){this.s+=b.slice(a,a+d).join("")},"~A,~N,~N");f(T,"toString",function(){return this.s});c(T,"length",function(){return this.s.length});c(T,"indexOf",function(b){return this.s.indexOf(b)}, +"~S");c(T,"charAt",function(b){return this.s.charAt(b)},"~N");c(T,"charCodeAt",function(b){return this.s.charCodeAt(b)},"~N");c(T,"setLength",function(b){this.s=this.s.substring(0,b)},"~N");c(T,"lastIndexOf",function(b){return this.s.lastIndexOf(b)},"~S");c(T,"indexOf2",function(b,a){return this.s.indexOf(b,a)},"~S,~N");c(T,"substring",function(b){return this.s.substring(b)},"~N");c(T,"substring2",function(b,a){return this.s.substring(b,a)},"~N,~N");c(T,"toBytes",function(b,a){return 0==a?O(0,0): +(0>32});b.floatToIntBits=c(b,"floatToIntBits",function(a){return 0==a?0:Float.floatToIntBits(a)},"~N");f(b,"equals",function(a){return!C(a,"JU.T3")?!1:this.x==a.x&&this.y==a.y&&this.z==a.z},"~O");f(b,"toString",function(){return"{"+this.x+", "+this.y+", "+this.z+"}"});f(b,"toJSON",function(){return"["+this.x+","+this.y+","+this.z+"]"});c(b,"setP",function(a){this.set(a.x,a.y,a.z);return this},"JU.T3");c(b,"putP",function(a){a.set(this.x,this.y,this.z); +return a},"JU.T3")});n("JU");var pa=r(function(){this.z=this.y=this.x=0;u(this,arguments)},JU,"T3i",null,java.io.Serializable);c(pa,"set",function(b,a,d){this.x=b;this.y=a;this.z=d},"~N,~N,~N");c(pa,"setT",function(b){this.x=b.x;this.y=b.y;this.z=b.z},"JU.T3i");c(pa,"add",function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z},"JU.T3i");c(pa,"scaleAdd",function(b,a,d){this.x=b*a.x+d.x;this.y=b*a.y+d.y;this.z=b*a.z+d.z},"~N,JU.T3i,JU.T3i");f(pa,"hashCode",function(){return this.x^this.y^this.z});f(pa,"equals", +function(b){return!C(b,"JU.T3i")?!1:this.x==b.x&&this.y==b.y&&this.z==b.z},"~O");c(pa,"asString",function(){return"("+this.x+", "+this.y+", "+this.z+")"});f(pa,"toString",function(){return this.asString()});n("JU");A(["JU.T3"],"JU.T4",null,function(){var b=r(function(){this.w=0;u(this,arguments)},JU,"T4",JU.T3);c(b,"set4",function(a,d,h,b){this.x=a;this.y=d;this.z=h;this.w=b},"~N,~N,~N,~N");c(b,"scale4",function(a){this.scale(a);this.w*=a},"~N");f(b,"hashCode",function(){return JU.T3.floatToIntBits(this.x)^ +JU.T3.floatToIntBits(this.y)^JU.T3.floatToIntBits(this.z)^JU.T3.floatToIntBits(this.w)});f(b,"equals",function(a){return!C(a,"JU.T4")?!1:this.x==a.x&&this.y==a.y&&this.z==a.z&&this.w==a.w},"~O");f(b,"toString",function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"});f(b,"toJSON",function(){return"["+this.x+", "+this.y+", "+this.z+", "+this.w+"]"})});n("JU");A(["JU.T3"],"JU.V3",null,function(){var b=G(JU,"V3",JU.T3);b.newV=c(b,"newV",function(a){return JU.V3.new3(a.x,a.y,a.z)},"JU.T3"); +b.newVsub=c(b,"newVsub",function(a,d){return JU.V3.new3(a.x-d.x,a.y-d.y,a.z-d.z)},"JU.T3,JU.T3");b.new3=c(b,"new3",function(a,d,h){var b=new JU.V3;b.x=a;b.y=d;b.z=h;return b},"~N,~N,~N");c(b,"angle",function(a){var d=this.y*a.z-this.z*a.y,h=this.z*a.x-this.x*a.z,b=this.x*a.y-this.y*a.x,d=Math.sqrt(d*d+h*h+b*b);return Math.abs(Math.atan2(d,this.dot(a)))},"JU.V3")});n("javajs.api");K(javajs.api,"GenericBinaryDocument",javajs.api.GenericBinaryDocumentReader);n("javajs.api");K(javajs.api,"GenericBinaryDocumentReader"); +n("javajs.api");K(javajs.api,"GenericZipTools");n("javajs.api");K(javajs.api,"GenericLineReader");n("javajs.api");K(javajs.api,"GenericCifDataParser");n("javajs.api");var Ya=G(javajs.api,"Interface",null);Ya.getInterface=c(Ya,"getInterface",function(b){try{var a=ra._4Name(b);return null==a?null:a.newInstance()}catch(d){if(E(d,Exception))return System.out.println("Interface.java Error creating instance for "+b+": \n"+d),null;throw d;}},"~S");n("JU");var Ga=r(function(){this.data=null;u(this,arguments)}, +JU,"BArray",null);x(Ga,function(b){this.data=b},"~A");f(Ga,"equals",function(b){if(C(b,"JU.BArray")&&(b=b.data,b.length==this.data.length)){for(var a=0;ag;)Math.abs(c[h])>Math.abs(c[b])&&(b=h);if(b!=g){for(k=d;0<=--k;)h=this.LU[b][k],this.LU[b][k]=this.LU[g][k],this.LU[g][k]=h;k=this.piv[b];this.piv[b]=this.piv[g];this.piv[g]=k;this.pivsign=-this.pivsign}if((new Boolean(gg;)this.LU[h][g]/=this.LU[g][g]}},"~N,~N");c(b,"solve",function(a,d){for(var h=0;hb)return c.q0=-1,c;if(1a.m22?(b=Math.sqrt(1+h),d=(a.m02-a.m20)/b,h=(a.m10+a.m01)/b,c=(a.m21+a.m12)/b):(c=Math.sqrt(1+a.m22+a.m22-d),d=(a.m10-a.m01)/c,h=(a.m20+a.m02)/c,b=(a.m21+a.m12)/c);this.q0=0.5*d;this.q1=0.5*h;this.q2=0.5*b;this.q3=0.5*c},"JU.M3"); +c(b,"setRef",function(a){null==a?this.mul(this.getFixFactor()):0<=this.dot(a)||(this.q0*=-1,this.q1*=-1,this.q2*=-1,this.q3*=-1)},"JU.Quat");b.getQuaternionFrame=c(b,"getQuaternionFrame",function(a,d,h){d=JU.V3.newV(d);h=JU.V3.newV(h);null!=a&&(d.sub(a),h.sub(a));return JU.Quat.getQuaternionFrameV(d,h,null,!1)},"JU.P3,JU.T3,JU.T3");b.getQuaternionFrameV=c(b,"getQuaternionFrameV",function(a,d,h,b){null==h&&(h=new JU.V3,h.cross(a,d),b&&a.cross(d,h));d=new JU.V3;d.cross(h,a);a.normalize();d.normalize(); +h.normalize();b=new JU.M3;b.setColumnV(0,a);b.setColumnV(1,d);b.setColumnV(2,h);return JU.Quat.newM(b)},"JU.V3,JU.V3,JU.V3,~B");c(b,"getMatrix",function(){null==this.mat&&this.setMatrix();return this.mat});c(b,"setMatrix",function(){this.mat=new JU.M3;this.mat.m00=this.q0*this.q0+this.q1*this.q1-this.q2*this.q2-this.q3*this.q3;this.mat.m01=2*this.q1*this.q2-2*this.q0*this.q3;this.mat.m02=2*this.q1*this.q3+2*this.q0*this.q2;this.mat.m10=2*this.q1*this.q2+2*this.q0*this.q3;this.mat.m11=this.q0*this.q0- +this.q1*this.q1+this.q2*this.q2-this.q3*this.q3;this.mat.m12=2*this.q2*this.q3-2*this.q0*this.q1;this.mat.m20=2*this.q1*this.q3-2*this.q0*this.q2;this.mat.m21=2*this.q2*this.q3+2*this.q0*this.q1;this.mat.m22=this.q0*this.q0-this.q1*this.q1-this.q2*this.q2+this.q3*this.q3});c(b,"add",function(a){return JU.Quat.newVA(this.getNormal(),this.getTheta()+a)},"~N");c(b,"mul",function(a){return 1==a?JU.Quat.new4(this.q1,this.q2,this.q3,this.q0):JU.Quat.newVA(this.getNormal(),this.getTheta()*a)},"~N");c(b, +"mulQ",function(a){return JU.Quat.new4(this.q0*a.q1+this.q1*a.q0+this.q2*a.q3-this.q3*a.q2,this.q0*a.q2+this.q2*a.q0+this.q3*a.q1-this.q1*a.q3,this.q0*a.q3+this.q3*a.q0+this.q1*a.q2-this.q2*a.q1,this.q0*a.q0-this.q1*a.q1-this.q2*a.q2-this.q3*a.q3)},"JU.Quat");c(b,"divLeft",function(a){return this.inv().mulQ(a)},"JU.Quat");c(b,"dot",function(a){return this.q0*a.q0+this.q1*a.q1+this.q2*a.q2+this.q3*a.q3},"JU.Quat");c(b,"inv",function(){return JU.Quat.new4(-this.q1,-this.q2,-this.q3,this.q0)});c(b,"negate", +function(){return JU.Quat.new4(-this.q1,-this.q2,-this.q3,-this.q0)});c(b,"getFixFactor",function(){return 0>this.q0||0==this.q0&&(0>this.q1||0==this.q1&&(0>this.q2||0==this.q2&&0>this.q3))?-1:1});c(b,"getVector",function(a){return this.getVectorScaled(a,1)},"~N");c(b,"getVectorScaled",function(a,d){if(-1==a)return d*=this.getFixFactor(),JU.V3.new3(this.q1*d,this.q2*d,this.q3*d);null==this.mat&&this.setMatrix();var h=new JU.V3;this.mat.getColumnV(a,h);1!=d&&h.scale(d);return h},"~N,~N");c(b,"getNormal", +function(){var a=JU.Quat.getRawNormal(this);a.scale(this.getFixFactor());return a});b.getRawNormal=c(b,"getRawNormal",function(a){a=JU.V3.new3(a.q1,a.q2,a.q3);if(0==a.length())return JU.V3.new3(0,0,1);a.normalize();return a},"JU.Quat");c(b,"getTheta",function(){return 360*Math.acos(Math.abs(this.q0))/3.141592653589793});c(b,"getThetaRadians",function(){return 2*Math.acos(Math.abs(this.q0))});c(b,"getNormalDirected",function(a){var d=this.getNormal();0>d.x*a.x+d.y*a.y+d.z*a.z&&d.scale(-1);return d}, +"JU.V3");c(b,"get3dProjection",function(a){a.set(this.q1,this.q2,this.q3);return a},"JU.V3");c(b,"getThetaDirected",function(a){var d=this.getTheta(),h=this.getNormal();0>a.x*this.q1+a.y*this.q2+a.z*this.q3&&(h.scale(-1),d=-d);a.set4(h.x,h.y,h.z,d);return a},"JU.P4");c(b,"getThetaDirectedV",function(a){var d=this.getTheta(),h=this.getNormal();0>a.x*this.q1+a.y*this.q2+a.z*this.q3&&(h.scale(-1),d=-d);return d},"JU.V3");c(b,"toPoint4f",function(){return JU.P4.new4(this.q1,this.q2,this.q3,this.q0)}); +c(b,"toAxisAngle4f",function(){var a=2*Math.acos(Math.abs(this.q0)),d=Math.sin(a/2),h=this.getNormal();0>d&&(h.scale(-1),a=3.141592653589793-a);return JU.A4.newVA(h,a)});c(b,"transform2",function(a,d){null==this.mat&&this.setMatrix();this.mat.rotate2(a,d);return d},"JU.T3,JU.T3");c(b,"leftDifference",function(a){a=0>this.dot(a)?a.negate():a;return this.inv().mulQ(a)},"JU.Quat");c(b,"rightDifference",function(a){a=0>this.dot(a)?a.negate():a;return this.mulQ(a.inv())},"JU.Quat");f(b,"toString",function(){return"{"+ +this.q1+" "+this.q2+" "+this.q3+" "+this.q0+"}"});c(b,"div",function(a){return this.mulQ(a.inv())},"JU.Quat");b.arrayDiv=c(b,"arrayDiv",function(a,d,h,b){var c;if(null==a||null==d||0==(c=Math.min(a.length,d.length)))return null;0h&&(c=h);h=Array(c);for(var g=0;gh&&0!=c;)g=JU.Quat.newMean(a,g),d[0]=JU.Quat.stdDev(a,g),b=Math.abs(d[0]-c),c=d[0];return g},"~A,~A,~N");b.simpleAverage=c(b,"simpleAverage",function(a){var d=JU.V3.new3(0,0,1),h=a[0].getNormal();d.add(h);for(var b=a.length;0<=--b;)d.add(a[b].getNormalDirected(d));d.sub(h);d.normalize();for(var c=0,b=a.length;0<=--b;)c+=Math.abs(a[b].get3dProjection(h).dot(d));0!=c&&d.scale(c/a.length);c=Math.sqrt(1-d.lengthSquared()); +Float.isNaN(c)&&(c=0);return JU.Quat.newP4(JU.P4.new4(d.x,d.y,d.z,c))},"~A");b.newMean=c(b,"newMean",function(a,d){for(var h=new JU.V3,b,c,g=a.length;0<=--g;)b=a[g],c=b.div(d),b=c.getNormal(),b.scale(c.getTheta()),h.add(b);h.scale(1/a.length);return JU.Quat.newVA(h,h.length()).mulQ(d)},"~A,JU.Quat");b.stdDev=c(b,"stdDev",function(a,d){for(var h=0,b=a.length,c=b;0<=--c;)var g=a[c].div(d).getTheta(),h=h+g*g;return Math.sqrt(h/b)},"~A,JU.Quat");c(b,"getEulerZYZ",function(){var a,d,h;if(0==this.q1&&0== +this.q2)return a=this.getTheta(),L(-1,[0>this.q3?-a:a,0,0]);a=Math.atan2(2*(this.q2*this.q3+this.q0*this.q1),2*(-this.q1*this.q3+this.q0*this.q2));d=Math.acos(this.q3*this.q3-this.q2*this.q2-this.q1*this.q1+this.q0*this.q0);h=Math.atan2(2*(this.q2*this.q3-this.q0*this.q1),2*(this.q0*this.q2+this.q1*this.q3));return L(-1,[a/0.017453292519943295,d/0.017453292519943295,h/0.017453292519943295])});c(b,"getEulerZXZ",function(){var a,d,h;if(0==this.q1&&0==this.q2)return a=this.getTheta(),L(-1,[0>this.q3? +-a:a,0,0]);a=Math.atan2(2*(this.q1*this.q3-this.q0*this.q2),2*(this.q0*this.q1+this.q2*this.q3));d=Math.acos(this.q3*this.q3-this.q2*this.q2-this.q1*this.q1+this.q0*this.q0);h=Math.atan2(2*(this.q1*this.q3+this.q0*this.q2),2*(-this.q2*this.q3+this.q0*this.q1));return L(-1,[a/0.017453292519943295,d/0.017453292519943295,h/0.017453292519943295])});b.qZero=new JU.P4});n("JU");A(["java.io.BufferedReader","javajs.api.GenericLineReader"],"JU.Rdr","java.io.BufferedInputStream $.ByteArrayInputStream $.InputStreamReader $.StringReader JU.AU $.Base64 $.Encoding $.SB".split(" "), +function(){var b=r(function(){this.reader=null;u(this,arguments)},JU,"Rdr",null,javajs.api.GenericLineReader);x(b,function(a){this.reader=a},"java.io.BufferedReader");f(b,"readNextLine",function(){return this.reader.readLine()});b.readCifData=c(b,"readCifData",function(a,h){return a.set(null,h,!1).getAllCifData()},"javajs.api.GenericCifDataParser,java.io.BufferedReader");b.fixUTF=c(b,"fixUTF",function(a){var h=JU.Rdr.getUTFEncoding(a);if(h!==JU.Encoding.NONE)try{var b=String.instantialize(a,h.name().$replace("_", +"-"));switch(h){case JU.Encoding.UTF8:case JU.Encoding.UTF_16BE:case JU.Encoding.UTF_16LE:b=b.substring(1)}return b}catch(c){if(E(c,"java.io.UnsupportedEncodingException"))System.out.println(c);else throw c;}return String.instantialize(a)},"~A");b.getUTFEncoding=c(b,"getUTFEncoding",function(a){return 3<=a.length&&239==(a[0]&255)&&187==(a[1]&255)&&191==(a[2]&255)?JU.Encoding.UTF8:4<=a.length&&0==(a[0]&255)&&0==(a[1]&255)&&254==(a[2]&255)&&255==(a[3]&255)?JU.Encoding.UTF_32BE:4<=a.length&&255==(a[0]& +255)&&254==(a[1]&255)&&0==(a[2]&255)&&0==(a[3]&255)?JU.Encoding.UTF_32LE:2<=a.length&&255==(a[0]&255)&&254==(a[1]&255)?JU.Encoding.UTF_16LE:2<=a.length&&254==(a[0]&255)&&255==(a[1]&255)?JU.Encoding.UTF_16BE:JU.Encoding.NONE},"~A");b.getUTFEncodingForStream=c(b,"getUTFEncodingForStream",function(a){a.resetStream();var h=O(4,0);h[3]=1;try{a.mark(5)}catch(b){if(E(b,Exception))return JU.Encoding.NONE;throw b;}a.read(h,0,4);a.reset();return JU.Rdr.getUTFEncoding(h)},"java.io.BufferedInputStream");b.isBase64= +c(b,"isBase64",function(a){return 0==a.indexOf(";base64,")},"JU.SB");b.isCompoundDocumentS=c(b,"isCompoundDocumentS",function(a){return JU.Rdr.isCompoundDocumentB(JU.Rdr.getMagic(a,8))},"java.io.InputStream");b.isCompoundDocumentB=c(b,"isCompoundDocumentB",function(a){return 8<=a.length&&208==(a[0]&255)&&207==(a[1]&255)&&17==(a[2]&255)&&224==(a[3]&255)&&161==(a[4]&255)&&177==(a[5]&255)&&26==(a[6]&255)&&225==(a[7]&255)},"~A");b.isBZip2S=c(b,"isBZip2S",function(a){return JU.Rdr.isBZip2B(JU.Rdr.getMagic(a, +3))},"java.io.InputStream");b.isGzipS=c(b,"isGzipS",function(a){return JU.Rdr.isGzipB(JU.Rdr.getMagic(a,2))},"java.io.InputStream");b.isBZip2B=c(b,"isBZip2B",function(a){return null!=a&&3<=a.length&&66==(a[0]&255)&&90==(a[1]&255)&&104==(a[2]&255)},"~A");b.isGzipB=c(b,"isGzipB",function(a){return null!=a&&2<=a.length&&31==(a[0]&255)&&139==(a[1]&255)},"~A");b.isPickleS=c(b,"isPickleS",function(a){return JU.Rdr.isPickleB(JU.Rdr.getMagic(a,2))},"java.io.InputStream");b.isPickleB=c(b,"isPickleB",function(a){return null!= +a&&2<=a.length&&125==(a[0]&255)&&113==(a[1]&255)},"~A");b.isMessagePackS=c(b,"isMessagePackS",function(a){return JU.Rdr.isMessagePackB(JU.Rdr.getMagic(a,2))},"java.io.InputStream");b.isMessagePackB=c(b,"isMessagePackB",function(a){var h;return null!=a&&1<=a.length&&(222==(h=a[0]&255)||128==(h&224)&&80!=a[1])},"~A");b.isPngZipStream=c(b,"isPngZipStream",function(a){return JU.Rdr.isPngZipB(JU.Rdr.getMagic(a,55))},"java.io.InputStream");b.isPngZipB=c(b,"isPngZipB",function(a){return 0==a[50]&&80==a[51]&& +78==a[52]&&71==a[53]&&74==a[54]},"~A");b.isZipS=c(b,"isZipS",function(a){return JU.Rdr.isZipB(JU.Rdr.getMagic(a,4))},"java.io.InputStream");b.isZipB=c(b,"isZipB",function(a){return 4<=a.length&&80==a[0]&&75==a[1]&&3==a[2]&&4==a[3]},"~A");b.getMagic=c(b,"getMagic",function(a,h){var b=264a.length?-1:a[1]){case 0:return"image/jpg";case 73:return"image/gif";case 77:return"image/BMP";case 80:return"image/png";default:return"image/unknown"}},"~A");b.getBIS=c(b,"getBIS",function(a){return new java.io.BufferedInputStream(new java.io.ByteArrayInputStream(a))},"~A");b.getBR=c(b,"getBR",function(a){return new java.io.BufferedReader(new java.io.StringReader(a))}, +"~S");b.getUnzippedInputStream=c(b,"getUnzippedInputStream",function(a,h){for(;JU.Rdr.isGzipS(h);)h=new java.io.BufferedInputStream(a.newGZIPInputStream(h));return h},"javajs.api.GenericZipTools,java.io.BufferedInputStream");b.getUnzippedInputStreamBZip2=c(b,"getUnzippedInputStreamBZip2",function(a,h){for(;JU.Rdr.isBZip2S(h);)h=new java.io.BufferedInputStream(a.newBZip2InputStream(h));return h},"javajs.api.GenericZipTools,java.io.BufferedInputStream");b.getBytesFromSB=c(b,"getBytesFromSB",function(a){return JU.Rdr.isBase64(a)? +JU.Base64.decodeBase64(a.substring(8)):a.toBytes(0,-1)},"JU.SB");b.getStreamAsBytes=c(b,"getStreamAsBytes",function(a,h){for(var b=O(1024,0),c=null==h?O(4096,0):null,g=0,j=0;0<(g=a.read(b,0,1024));)j+=g,null==h?(j>=c.length&&(c=JU.AU.ensureLengthByte(c,2*j)),System.arraycopy(b,0,c,j-g,g)):h.write(b,0,g);a.close();return null==h?JU.AU.arrayCopyByte(c,j):j+" bytes"},"java.io.BufferedInputStream,JU.OC");b.getBufferedReader=c(b,"getBufferedReader",function(a,h){if(JU.Rdr.getUTFEncodingForStream(a)=== +JU.Encoding.NONE)return new JU.Rdr.StreamReader(a,h);var b=JU.Rdr.getLimitedStreamBytes(a,-1);a.close();return JU.Rdr.getBR(null==h?JU.Rdr.fixUTF(b):String.instantialize(b,h))},"java.io.BufferedInputStream,~S");b.getLimitedStreamBytes=c(b,"getLimitedStreamBytes",function(a,h){var b=0h?h:1024,c=O(b,0),g=O(0>h?4096:h,0),j=0,k=0;for(0>h&&(h=2147483647);kg.length&&(g=JU.AU.ensureLengthByte(g,2*k)),System.arraycopy(c,0,g,k-j,j),2147483647!=h&&k+b>g.length&&(b=g.length- +k);if(k==g.length)return g;c=O(k,0);System.arraycopy(g,0,c,0,k);return c},"java.io.InputStream,~N");b.streamToUTF8String=c(b,"streamToUTF8String",function(a){var h=Array(1);try{JU.Rdr.readAllAsString(JU.Rdr.getBufferedReader(a,"UTF-8"),-1,!0,h,0)}catch(b){if(!E(b,"java.io.IOException"))throw b;}return h[0]},"java.io.BufferedInputStream");b.readAllAsString=c(b,"readAllAsString",function(a,h,b,c,g){try{var j=JU.SB.newN(8192),k;if(0>h){if(k=a.readLine(),b||null!=k&&0>k.indexOf("\x00")&&(4!=k.length|| +65533!=k.charAt(0).charCodeAt(0)||1!=k.indexOf("PNG")))for(j.append(k).appendC("\n");null!=(k=a.readLine());)j.append(k).appendC("\n")}else{b=0;for(var l;bh?a:a.substring(0,h)},"~S");b.isTar=c(b,"isTar",function(a){a=JU.Rdr.getMagic(a,264);return-1==a[264]&&117==(a[257]&255)&&115==(a[258]&255)&&116==(a[259]&255)&&97==(a[260]&255)&&114==(a[261]&255)},"java.io.BufferedInputStream");b.streamToBytes=c(b,"streamToBytes",function(a){var h=JU.Rdr.getLimitedStreamBytes(a,-1);a.close();return h},"java.io.InputStream");b.streamToString= +c(b,"streamToString",function(a){return String.instantialize(JU.Rdr.streamToBytes(a))},"java.io.InputStream");b.isBinary=c(b,"isBinary",function(a,h){var b=JU.Rdr.getMagic(a,h);if(-1==JU.Rdr.b264[264])for(var c=0;cb[c])return!0;return!1},"java.io.BufferedInputStream,~N");var a=r(function(){this.stream=null;u(this,arguments)},JU.Rdr,"StreamReader",java.io.BufferedReader);x(a,function(a,h){I(this,JU.Rdr.StreamReader,[new java.io.InputStreamReader(a,null==h?"UTF-8":h)]);this.stream=a},"java.io.BufferedInputStream,~S"); +c(a,"getStream",function(){try{this.stream.reset()}catch(a){if(!E(a,"java.io.IOException"))throw a;}return this.stream});b.b264=null});n("JU");var ca=r(function(){this.z=this.y=this.x=0;u(this,arguments)},JU,"T3d",null,java.io.Serializable);c(ca,"set",function(b,a,d){this.x=b;this.y=a;this.z=d},"~N,~N,~N");c(ca,"setA",function(b){this.x=b[0];this.y=b[1];this.z=b[2]},"~A");c(ca,"setT",function(b){this.x=b.x;this.y=b.y;this.z=b.z},"JU.T3d");c(ca,"add2",function(b,a){this.x=b.x+a.x;this.y=b.y+a.y;this.z= +b.z+a.z},"JU.T3d,JU.T3d");c(ca,"add",function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z},"JU.T3d");c(ca,"sub2",function(b,a){this.x=b.x-a.x;this.y=b.y-a.y;this.z=b.z-a.z},"JU.T3d,JU.T3d");c(ca,"sub",function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z},"JU.T3d");c(ca,"scale",function(b){this.x*=b;this.y*=b;this.z*=b},"~N");c(ca,"scaleAdd",function(b,a,d){this.x=b*a.x+d.x;this.y=b*a.y+d.y;this.z=b*a.z+d.z},"~N,JU.T3d,JU.T3d");c(ca,"scaleAdd2",function(b,a,d){this.x=b*a.x+d.x;this.y=b*a.y+d.y;this.z=b*a.z+ +d.z},"~N,JU.T3d,JU.T3d");f(ca,"hashCode",function(){var b=JU.T3d.doubleToLongBits0(this.x),a=JU.T3d.doubleToLongBits0(this.y),d=JU.T3d.doubleToLongBits0(this.z);return b^b>>32^a^a>>32^d^d>>32});ca.doubleToLongBits0=c(ca,"doubleToLongBits0",function(b){return 0==b?0:Double.doubleToLongBits(b)},"~N");f(ca,"equals",function(b){return!C(b,"JU.T3d")?!1:this.x==b.x&&this.y==b.y&&this.z==b.z},"~O");f(ca,"toString",function(){return"{"+this.x+", "+this.y+", "+this.z+"}"});n("JU");A(["JU.T3d"],"JU.V3d",null, +function(){var b=G(JU,"V3d",JU.T3d);c(b,"cross",function(a,d){this.set(a.y*d.z-a.z*d.y,a.z*d.x-a.x*d.z,a.x*d.y-a.y*d.x)},"JU.V3d,JU.V3d");c(b,"normalize",function(){var a=this.length();this.x/=a;this.y/=a;this.z/=a});c(b,"angle",function(a){var d=this.y*a.z-this.z*a.y,h=this.z*a.x-this.x*a.z,b=this.x*a.y-this.y*a.x,d=Math.sqrt(d*d+h*h+b*b);return Math.abs(Math.atan2(d,this.dot(a)))},"JU.V3d");c(b,"dot",function(a){return this.x*a.x+this.y*a.y+this.z*a.z},"JU.V3d");c(b,"lengthSquared",function(){return this.x* +this.x+this.y*this.y+this.z*this.z});c(b,"length",function(){return Math.sqrt(this.lengthSquared())})});n("J.adapter.readers.molxyz");A(["J.adapter.smarter.AtomSetCollectionReader"],"J.adapter.readers.molxyz.MolReader","java.util.Hashtable JU.BS $.Lst $.PT J.adapter.smarter.Atom J.api.JmolAdapter JU.Logger".split(" "),function(){var b=r(function(){this.haveAtomSerials=!1;this.allow2D=!0;this.iatom0=0;this.vr=null;this.atomCount=0;this.bsDeleted=this.atomData=null;this.is3D=this.fixN=this.haveNonzeroZ= +!1;this.nC=this.nH=this.nDouble=0;u(this,arguments)},J.adapter.readers.molxyz,"MolReader",J.adapter.smarter.AtomSetCollectionReader);f(b,"initializeReader",function(){this.fixN=this.checkFilterKey("FIXN")});f(b,"checkLine",function(){var a=this.line.startsWith("$MDL");if(a){if(this.discardLinesUntilStartsWith("$HDR"),this.rd(),null==this.line)return JU.Logger.warn("$HDR not found in MDL RG file"),this.continuing=!1}else if(this.line.equals("M END"))return!0;if(this.doGetModel(++this.modelNumber, +null)&&(this.iatom0=this.asc.ac,this.processMolSdHeader(),this.processCtab(a),this.vr=null,this.isLastModel(this.modelNumber)))return this.continuing=!1;null!=this.line&&0>this.line.indexOf("$$$$")&&this.discardLinesUntilStartsWith("$$$$");return!0});f(b,"finalizeSubclassReader",function(){this.finalizeReaderMR()});c(b,"finalizeReaderMR",function(){this.fixN&&this.addJmolScript("{search('[Nv4+0,nv4+0]')}.formalCharge=1;{search('{[Ov1-0]}[Nv4+1,nv4+1]')}.formalCharge=-1;");this.check2D3D();null!=this.bsDeleted&& +this.asc.getBSAtoms(-1).andNot(this.bsDeleted);this.isTrajectory=!1;this.finalizeReaderASCR()});c(b,"check2D3D",function(){this.haveNonzeroZ?this.is2D&&(this.is2D=this.optimize2D=!1):!this.is2D&&!this.is3D&&(0b?c=this.line.substring(31).trim():(c=this.line.substring(31,34).trim(),c.equals("H1")&&(c="H",f=1),39<=b&&(b=this.parseIntRange(this.line,36,39),1<=b&&7>=b&&(l=4-b),b=this.parseIntRange(this.line,34,36),0!=b&&(-3<=b&&4>=b)&&(f=J.api.JmolAdapter.getNaturalIsotope(J.api.JmolAdapter.getElementNumber(c))+b),-2147483648==m&&this.haveAtomSerials&&(m=h+1)));this.addMolAtom(m,f,c,l,g,j,k)}this.asc.setModelInfoForSet("dimension",this.is2D?"2D":"3D",this.asc.iSet); +this.rd();this.line.startsWith("V ")&&this.readAtomValues();0==d&&this.asc.setNoAutoBond();for(h=0;h")?this.readMolData(h,c):this.line.startsWith("M ISO")?this.readIsotopes():this.rd();null!=this.atomData&&(g=h.get("atom_value_name"),h.put(null==g?"atom_values":g.toString(),this.atomData));h.isEmpty()||(this.asc.setCurrentModelInfo("molDataKeys",c),this.asc.setCurrentModelInfo("molData",h))},"~N,~N");c(b,"readAtomValues",function(){this.atomData=Array(this.atomCount); +for(var a=this.atomData.length;0<=--a;)this.atomData[a]="";for(;0==this.line.indexOf("V ");){a=this.parseIntAt(this.line,3);if(1>a||a>this.atomCount){JU.Logger.error("V nnn does not evalute to a valid atom number: "+a);break}var d=this.line.substring(6).trim();this.atomData[a-1]=d;this.rd()}});c(b,"readIsotopes",function(){var a=this.parseIntAt(this.line,6);try{for(var d=this.asc.getLastAtomSetAtomIndex(),h=0,b=9;h <").toLowerCase(),c="",g=null;null!=this.rd()&&!this.line.equals("$$$$")&&0= +this.desiredVibrationNumber?this.doGetModel(this.modelNumber,null):this.doGetVibration(this.vibrationNumber)){this.rd();this.checkCurrentLineForScript();this.asc.newAtomSet();var d=this.line.trim();this.readAtoms(a);this.applySymmetryAndSetTrajectory();this.asc.setAtomSetName(d);if(this.isLastModel(this.modelNumber))return this.continuing=!1}else this.skipAtomSet(a);this.discardLinesUntilNonBlank();return!1});f(b,"finalizeSubclassReader",function(){this.isTrajectory=!1;this.finalizeReaderASCR()}); +c(b,"skipAtomSet",function(a){for(this.rd();0<=--a;)this.rd()},"~N");c(b,"readAtoms",function(a){for(var d=0;dh.length)JU.Logger.warn("line cannot be read for XYZ atom data: "+this.line);else{var b=this.addAtomXYZSymName(h,1,null,null);this.setElementAndIsotope(b,h[0]);var c=4;switch(h.length){case 4:continue;case 5:case 6:case 8:case 9:if(0<=h[4].indexOf("."))b.partialCharge=this.parseFloatStr(h[4]);else{var g=this.parseIntStr(h[4]);-2147483648!=g&&(b.formalCharge= +g)}switch(h.length){case 5:continue;case 6:b.radius=this.parseFloatStr(h[5]);continue;case 9:b.atomSerial=this.parseIntStr(h[8])}c++;default:var g=this.parseFloatStr(h[c++]),j=this.parseFloatStr(h[c++]),h=this.parseFloatStr(h[c++]);if(Float.isNaN(g)||Float.isNaN(j)||Float.isNaN(h))continue;this.asc.addVibrationVector(b.index,g,j,h)}}}},"~N")});n("J.adapter.smarter");A(["JU.P3"],"J.adapter.smarter.Atom",["JU.AU","$.Lst","$.V3"],function(){var b=r(function(){this.index=this.atomSetIndex=0;this.bsSymmetry= +null;this.atomSite=0;this.elementSymbol=null;this.elementNumber=-1;this.atomName=null;this.formalCharge=-2147483648;this.partialCharge=NaN;this.vib=null;this.bfactor=NaN;this.foccupancy=1;this.radius=NaN;this.isHetero=!1;this.atomSerial=-2147483648;this.chainID=0;this.bondingRadius=NaN;this.altLoc="\x00";this.group3=null;this.sequenceNumber=-2147483648;this.insertionCode="\x00";this.tensors=this.anisoBorU=null;this.isNegDisorder=!1;this.typeSymbol=null;u(this,arguments)},J.adapter.smarter,"Atom", +JU.P3,Cloneable);x(b,function(){I(this,J.adapter.smarter.Atom,[]);this.set(NaN,NaN,NaN)});c(b,"addTensor",function(a,d,h){if(null==a)return null;if(h||null==this.tensors)this.tensors=new JU.Lst;this.tensors.addLast(a);null!=d&&a.setType(d);return a},"JU.Tensor,~S,~B");c(b,"getClone",function(){var a;try{a=this.clone()}catch(d){if(E(d,"CloneNotSupportedException"))return null;throw d;}null!=this.vib&&(a.vib=C(this.vib,"JU.Vibration")?this.vib.clone():JU.V3.newV(a.vib));null!=this.anisoBorU&&(a.anisoBorU= +JU.AU.arrayCopyF(this.anisoBorU,-1));if(null!=this.tensors){a.tensors=new JU.Lst;for(var h=this.tensors.size();0<=--h;)a.tensors.addLast(this.tensors.get(h).copyTensor())}return a});c(b,"getElementSymbol",function(){if(null==this.elementSymbol&&null!=this.atomName){for(var a=this.atomName.length,d=0,h=String.fromCharCode(0);d=a&&0>J.adapter.smarter.Atom.elementCharMasks[a.charCodeAt(0)-65]},"~S");b.isValidSym2=c(b,"isValidSym2",function(a,d){return"A"<=a&&"Z">=a&&"a"<=d&&"z">=d&&0!=(J.adapter.smarter.Atom.elementCharMasks[a.charCodeAt(0)-65]>>d.charCodeAt(0)-97&1)},"~S,~S");b.isValidSymNoCase=c(b,"isValidSymNoCase",function(a, +d){return J.adapter.smarter.Atom.isValidSym2(a,"a">d?String.fromCharCode(d.charCodeAt(0)+32):d)},"~S,~S");b.isValidSymChar1=c(b,"isValidSymChar1",function(a){return"A"<=a&&"Z">=a&&0!=J.adapter.smarter.Atom.elementCharMasks[a.charCodeAt(0)-65]},"~S");c(b,"copyTo",function(a,d){var h=d.newCloneAtom(this);h.setT(a);return h},"JU.P3,J.adapter.smarter.AtomSetCollection");b.elementCharMasks=D(-1,[1972292,-2147351151,-2146019271,-2130706430,1441792,-2147348464,25,-2147205008,-2147344384,0,-2147352576,1179905, +548936,-2147434213,-2147221504,-2145759221,0,1056947,-2147339946,-2147477097,-2147483648,-2147483648,-2147483648,8388624,-2147483646,139264])});n("J.adapter.smarter");A(["J.api.JmolAdapterAtomIterator"],"J.adapter.smarter.AtomIterator",["J.api.JmolAdapter"],function(){var b=r(function(){this.iatom=0;this.atom=null;this.ac=0;this.bsAtoms=this.atoms=null;u(this,arguments)},J.adapter.smarter,"AtomIterator",null,J.api.JmolAdapterAtomIterator);x(b,function(a){this.ac=a.ac;this.atoms=a.atoms;this.bsAtoms= +a.bsAtoms;this.iatom=0},"J.adapter.smarter.AtomSetCollection");f(b,"hasNext",function(){if(this.iatom==this.ac)return!1;for(;null==(this.atom=this.atoms[this.iatom++])||null!=this.bsAtoms&&!this.bsAtoms.get(this.atom.index);)if(this.iatom==this.ac)return!1;this.atoms[this.iatom-1]=null;return!0});f(b,"getAtomSetIndex",function(){return this.atom.atomSetIndex});f(b,"getSymmetry",function(){return this.atom.bsSymmetry});f(b,"getAtomSite",function(){return this.atom.atomSite+1});f(b,"getUniqueID",function(){return Integer.$valueOf(this.atom.index)}); +f(b,"getElementNumber",function(){return 0>7})});n("J.adapter.smarter");A(["java.util.Hashtable"],"J.adapter.smarter.AtomSetCollection","java.util.Collections $.Properties JU.AU $.BS $.Lst $.P3 $.V3 J.adapter.smarter.Atom $.Bond $.SmarterJmolAdapter J.api.Interface JU.BSUtil $.Logger JV.JC".split(" "),function(){var b=r(function(){this.atoms=this.atomSetInfo=this.collectionName=this.fileTypeName=this.bsAtoms=this.reader=null;this.ac=0;this.bonds=null;this.bondCount=0;this.structures=null;this.atomSetCount= +this.structureCount=0;this.iSet=-1;this.errorMessage=this.atomSetAuxiliaryInfo=this.atomSetBondCounts=this.atomSetAtomCounts=this.atomSetAtomIndexes=this.atomSetNumbers=null;this.isTrajectory=this.coordinatesAreFractional=!1;this.trajectoryStepCount=0;this.trajectoryNames=this.vibrationSteps=this.trajectorySteps=null;this.allowMultiple=this.doFixPeriodic=!1;this.readerList=null;this.atomMapAnyCase=!1;this.fixedSite=0;this.bsStructuredModels=null;this.haveAnisou=!1;this.baseSymmetryAtomCount=0;this.crystalReaderLatticeOpsOnly= +!1;this.xtalSymmetry=null;this.bondIndex0=0;this.atomSymbolicMap=null;this.haveUnitCell=!1;this.vibScale=0;this.firstAtomToBond=-1;u(this,arguments)},J.adapter.smarter,"AtomSetCollection",null);N(b,function(){this.atomSetInfo=new java.util.Hashtable;this.atoms=Array(256);this.bonds=Array(256);this.structures=Array(16);this.atomSetNumbers=D(16,0);this.atomSetAtomIndexes=D(16,0);this.atomSetAtomCounts=D(16,0);this.atomSetBondCounts=D(16,0);this.atomSetAuxiliaryInfo=Array(16);this.atomSymbolicMap=new java.util.Hashtable}); +x(b,function(a,d,h,b){this.fileTypeName=a;this.reader=d;this.allowMultiple=null==d||0>d.desiredVibrationNumber;a=new java.util.Properties;a.put("PATH_KEY",".PATH");a.put("PATH_SEPARATOR",J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR);this.setInfo("properties",a);null!=d&&(a=d.htParams.get("appendToModelIndex"),null!=a&&this.setInfo("appendToModelIndex",a),a=d.htParams.get("fixedSite"),null!=a&&(this.fixedSite=a.intValue()));if(null!=h){d=0;this.readerList=new JU.Lst;for(b=0;b=a)){for(var d=Array(a),h=0a?this.iSet+ +1:1E6*(a+1)+d.atomSetNumbers[g]}for(b=0;ba[b].atomSetIndex)return;h[a[b].atomSetIndex].addLast(a[b])}for(b=this.atomSetCount;0<=--b;)for(var c=h[b].size();0<=--c;)a[--d]=h[b].get(c)},"~A,~N");c(b,"reverseObject",function(a){for(var d=this.atomSetCount,h=v(d/2);0<=--h;)JU.AU.swap(a,h,d-1-h)},"~A");b.reverseList=c(b,"reverseList",function(a){null!=a&&java.util.Collections.reverse(a)},"JU.Lst");c(b,"reverseArray",function(a){for(var d=this.atomSetCount,h=v(d/2);0<=--h;)JU.AU.swapInt(a, +h,d-1-h)},"~A");c(b,"getList",function(a){var d;for(d=this.ac;0<=--d&&!(null!=this.atoms[d]&&"\x00"!=(a?this.atoms[d].altLoc:this.atoms[d].insertionCode)););if(!(0>d)){var h=Array(this.atomSetCount);for(d=0;dh[b=this.atoms[d].atomSetIndex].indexOf(c))h[b]+=c}a=a?"altLocs":"insertionCodes";for(d=0;dthis.iSet)){var a=this.atomSetAtomIndexes[this.iSet];null!=this.bsAtoms&&this.bsAtoms.clearBits(a, +this.ac);this.ac=a;this.atomSetAtomCounts[this.iSet]=0;this.iSet--;this.atomSetCount--;this.reader.doCheckUnitCell=!1}});c(b,"getHydrogenAtomCount",function(){for(var a=0,d=0;da.atomIndex1||0>a.atomIndex2||0>a.order||a.atomIndex1==a.atomIndex2||this.atoms[a.atomIndex1].atomSetIndex!=this.atoms[a.atomIndex2].atomSetIndex?JU.Logger.debugging&&JU.Logger.debug(">>>>>>BAD BOND:"+a.atomIndex1+"-"+a.atomIndex2+" order="+a.order):this.addBondNoCheck(a))},"J.adapter.smarter.Bond");c(b,"addBondNoCheck",function(a){this.bondCount==this.bonds.length&&(this.bonds= +JU.AU.arrayCopyObject(this.bonds,this.bondCount+1024));this.bonds[this.bondCount++]=a;this.atomSetBondCounts[this.iSet]++},"J.adapter.smarter.Bond");c(b,"finalizeStructures",function(){if(0!=this.structureCount){this.bsStructuredModels=new JU.BS;for(var a=new java.util.Hashtable,d=0;da-d;)a+=1;return a},"~N,~N");c(b,"finalizeTrajectoryAs",function(a,d){this.trajectorySteps=a;this.vibrationSteps=d;this.trajectoryStepCount=a.size();this.finalizeTrajectory()},"JU.Lst,JU.Lst");c(b,"finalizeTrajectory",function(){if(0!=this.trajectoryStepCount){var a=this.trajectorySteps.get(0),d=null==this.vibrationSteps?null:this.vibrationSteps.get(0),h=null==this.bsAtoms?this.ac:this.bsAtoms.cardinality();if(null!=this.vibrationSteps&& +null!=d&&d.lengththis.atomSetNumbers.length&&(this.atomSetAtomIndexes=JU.AU.doubleLengthI(this.atomSetAtomIndexes),this.atomSetAtomCounts=JU.AU.doubleLengthI(this.atomSetAtomCounts),this.atomSetBondCounts=JU.AU.doubleLengthI(this.atomSetBondCounts),this.atomSetAuxiliaryInfo=JU.AU.doubleLength(this.atomSetAuxiliaryInfo)); +this.atomSetAtomIndexes[this.iSet]=this.ac;this.atomSetCount+this.trajectoryStepCount>this.atomSetNumbers.length&&(this.atomSetNumbers=JU.AU.doubleLengthI(this.atomSetNumbers));this.isTrajectory?this.atomSetNumbers[this.iSet+this.trajectoryStepCount]=this.atomSetCount+this.trajectoryStepCount:this.atomSetNumbers[this.iSet]=this.atomSetCount;a&&this.clearMap();this.setCurrentModelInfo("title",this.collectionName)},"~B");c(b,"clearMap",function(){this.atomSymbolicMap.clear();this.atomMapAnyCase=!1}); +c(b,"getAtomSetAtomIndex",function(a){return this.atomSetAtomIndexes[a]},"~N");c(b,"getAtomSetAtomCount",function(a){return this.atomSetAtomCounts[a]},"~N");c(b,"getAtomSetBondCount",function(a){return this.atomSetBondCounts[a]},"~N");c(b,"setAtomSetName",function(a){if(null!=a)if(this.isTrajectory)this.setTrajectoryName(a);else{var d=0>this.iSet?null:this.getAtomSetName(this.iSet);this.setModelInfoForSet("name",a,this.iSet);null!=this.reader&&(0h&&(h=this.iSet);var b=this.getAtomSetAuxiliaryInfoValue(h,"atomProperties");null==b&&this.setModelInfoForSet("atomProperties",b=new java.util.Hashtable,h);b.put(a,d)},"~S,~O,~N,~B");c(b,"setAtomSetPartialCharges",function(a){if(!this.atomSetAuxiliaryInfo[this.iSet].containsKey(a))return!1;a=this.getAtomSetAuxiliaryInfoValue(this.iSet,a);for(var d=a.size();0<=--d;)this.atoms[d].partialCharge=a.get(d).floatValue();return!0},"~S");c(b,"getAtomSetAuxiliaryInfoValue",function(a,d){return this.atomSetAuxiliaryInfo[0<= +a?a:this.iSet].get(d)},"~N,~S");c(b,"setCurrentModelInfo",function(a,d){this.setModelInfoForSet(a,d,this.iSet)},"~S,~O");c(b,"setModelInfoForSet",function(a,d,h){0>h||(null==this.atomSetAuxiliaryInfo[h]&&(this.atomSetAuxiliaryInfo[h]=new java.util.Hashtable),null==d?this.atomSetAuxiliaryInfo[h].remove(a):this.atomSetAuxiliaryInfo[h].put(a,d))},"~S,~O,~N");c(b,"getAtomSetNumber",function(a){return this.atomSetNumbers[a>=this.atomSetCount?0:a]},"~N");c(b,"getAtomSetName",function(a){if(null!=this.trajectoryNames&& +a=this.atomSetCount&&(a=this.atomSetCount-1);return this.getAtomSetAuxiliaryInfoValue(a,"name")},"~N");c(b,"getAtomSetAuxiliaryInfo",function(a){a=a>=this.atomSetCount?this.atomSetCount-1:a;return 0>a?null:this.atomSetAuxiliaryInfo[a]},"~N");c(b,"setAtomSetEnergy",function(a,d){0>this.iSet||(JU.Logger.info("Energy for model "+(this.iSet+1)+" = "+a),this.setCurrentModelInfo("EnergyString",a),this.setCurrentModelInfo("Energy",Float.$valueOf(d)), +this.setAtomSetModelProperty("Energy",""+d))},"~S,~N");c(b,"setAtomSetFrequency",function(a,d,h,b,c){this.setAtomSetModelProperty("FreqValue",b);b+=" "+(null==c?"cm^-1":c);c=(null==h?"":h+" ")+b;this.setAtomSetName(c);this.setAtomSetModelProperty("Frequency",b);this.setAtomSetModelProperty("Mode",""+a);this.setModelInfoForSet("vibrationalMode",Integer.$valueOf(a),this.iSet);null!=h&&this.setAtomSetModelProperty("FrequencyLabel",h);this.setAtomSetModelProperty(".PATH",(null==d?"":d+J.adapter.smarter.SmarterJmolAdapter.PATH_SEPARATOR+ +"Frequencies")+"Frequencies");return c},"~N,~S,~S,~S,~S");c(b,"getBondList",function(){for(var a=Array(this.bondCount),d=0;d=b;)a.add(this.atoms[c]);a.scale(1/h);for(c=b+h;--c>= +b;)this.atoms[c].sub(a)}});c(b,"mergeTrajectories",function(a){if(this.isTrajectory&&a.isTrajectory&&null==this.vibrationSteps){for(var d=0;da?this.ac:a));return this.bsAtoms}, +"~N");c(b,"setBSAtomsForSet",function(a){if(null!=this.bsAtoms){0>a&&(a=this.iSet);var d=this.atomSetAtomIndexes[a];0>this.bsAtoms.nextSetBit(d)&&this.bsAtoms.setBits(d,d+this.atomSetAtomCounts[a])}},"~N");c(b,"fix2Stereo",function(){this.getBSAtoms(-1);for(var a=this.bondCount;0<=--a;){var d=this.bonds[a];this.atoms[d.atomIndex2].elementSymbol.equals("H")&&1025!=d.order&&1041!=d.order&&this.atoms[d.atomIndex1].elementSymbol.equals("C")?this.bsAtoms.clear(d.atomIndex2):this.atoms[d.atomIndex1].elementSymbol.equals("H")&& +this.atoms[d.atomIndex2].elementSymbol.equals("C")&&this.bsAtoms.clear(d.atomIndex1)}})});n("J.adapter.smarter");A(["javajs.api.GenericLineReader","JU.SB","JV.Viewer"],"J.adapter.smarter.AtomSetCollectionReader","JU.BS $.Lst $.M3 $.P3 $.PT $.Quat $.V3 J.adapter.smarter.Atom $.AtomSetCollection J.api.Interface $.JmolAdapter JU.BSUtil $.Logger $.SimpleUnitCell JV.FileManager $.JC".split(" "),function(){var b=r(function(){this.requiresBSFilter=this.debugging=this.isBinary=!1;this.dssr=this.validation= +this.domains=this.trajectorySteps=this.htParams=this.readerName=this.binaryDoc=this.reader=this.asc=this.primitiveToCrystal=null;this.isConcatenated=!1;this.lstNCS=this.thisBiomolecule=this.addedDataKey=this.addedData=null;this.floatifyJavaDouble=!0;this.next=this.prevline=this.line=null;this.ptLine=0;this.checkNearAtoms=!0;this.fillRange=this.latticeCells=this.latticeType=null;this.iHaveSymmetryOperators=this.iHaveUnitCell=this.doProcessLines=!1;this.continuing=!0;this.vwr=null;this.isMolecular= +this.is2D=this.noMinimize=this.noHydrogens=this.optimize2D=this.isSequential=this.getHeader=this.doCheckUnitCell=this.applySymmetryToBonds=this.isTrajectory=this.ignoreFileSymmetryOperators=this.doApplySymmetry=!1;this.vibrationNumber=this.modelNumber=this.templateAtomCount=0;this.desiredVibrationNumber=-2147483648;this.bsModels=null;this.havePartialChargeFilter=this.useFileModelNumbers=!1;this.calculationType="?";this.sgName=null;this.ignoreFileSpaceGroupName=this.ignoreFileUnitCell=!1;this.unitCellParams= +null;this.desiredModelNumber=-2147483648;this.out=this.symmetry=null;this.doPackUnitCell=this.iHaveFractionalCoordinates=!1;this.ptSupercell=null;this.forcePacked=this.mustFinalizeModelSet=!1;this.packingRange=null;this.cellSlop=1E-4;this.isPrimitive=this.rotateHexCell=!1;this.modDim=0;this.highprecision0=this.lowPrecision=!1;this.loadNote=null;this.merging=this.fileCoordinatesAreFractional=this.doConvertToFractional=!1;this.symmetryRange=0;this.firstLastStep=null;this.lastModelNumber=2147483647; +this.desiredSpaceGroupIndex=-1;this.latticeScaling=NaN;this.unitCellOffset=null;this.unitCellOffsetFractional=!1;this.paramsLattice=this.moreUnitCellInfo=null;this.paramsPacked=this.paramsCentroid=!1;this.fileName=this.filePath=this.fileOffsetFractional=this.fileOffset=this.fileScaling=null;this.baseBondIndex=this.baseAtomIndex=0;this.stateScriptVersionInt=2147483647;this.isSUPERCELL=this.noPack=this.isFinalized=!1;this.precision=0;this.haveModel=!1;this.previousUnitCell=this.previousSpaceGroup=null; +this.nMatrixElements=0;this.filterCased=this.filter=this.bsFilter=this.matUnitCellOrientation=this.ucItems=null;this.filterAtomType=this.filterAtomName=this.filterChain=this.filterGroup3=this.filterAltLoc=this.haveAtomFilter=!1;this.filterAtomTypeStr=null;this.filterAtomNameTerminator=";";this.filterEveryNth=this.filterAllHetero=this.filterHetero=this.filterElement=!1;this.filterSymop=null;this.nFiltered=this.filterN=0;this.reverseModels=this.doReadMolecularOrbitals=this.allowPDBFilter=this.isDSSP1= +this.ignoreStructure=this.useAltNames=this.addVibrations=this.doCentralize=this.doSetOrientation=!1;this.nameRequired=null;this.centroidPacked=this.doCentroidUnitCell=!1;this.strSupercell=null;this.filteredPrecision=this.fixUnitCell=this.polymerX=this.slabXY=this.allow_a_len_1=!1;this.ms=this.matRot=this.filter2Cased=this.filter1Cased=this.filter2=this.filter1=null;this.vibsFractional=!1;this.siteScript=this.previousScript=null;u(this,arguments)},J.adapter.smarter,"AtomSetCollectionReader",null,javajs.api.GenericLineReader); +N(b,function(){this.next=D(1,0);this.highprecision0=JV.Viewer.isHighPrecision;this.loadNote=new JU.SB});c(b,"getPackingRangeValue",function(a){return null!=this.packingRange?this.packingRange.floatValue():0!=a?a:0.02},"~N");c(b,"setup",function(a,d,h){this.setupASCR(a,d,h)},"~S,java.util.Map,~O");c(b,"setupASCR",function(a,d,h){null!=a&&(this.debugging=JU.Logger.debugging,this.htParams=d,this.filePath=JV.FileManager.stripTypePrefix(""+d.get("fullPathName")),a=this.filePath.lastIndexOf("/"),this.fileName= +this.filePath.substring(a+1),C(h,"java.io.BufferedReader")?this.reader=h:C(h,"javajs.api.GenericBinaryDocument")&&(this.binaryDoc=h))},"~S,java.util.Map,~O");c(b,"readData",function(){this.initialize();this.asc=new J.adapter.smarter.AtomSetCollection(this.readerName,this,null,null);try{this.initializeReader();if(null==this.binaryDoc)for(null==this.line&&this.continuing&&this.rd();null!=this.line&&this.continuing;)this.checkLine()&&this.rd();else this.binaryDoc.setOutputChannel(this.out),this.processBinaryDocument(); +this.finalizeSubclassReader();this.isFinalized||this.finalizeReaderASCR()}catch(a){JU.Logger.info("Reader error: "+a),a.printStackTrace(),this.setError(a)}null!=this.reader&&this.reader.close();null!=this.binaryDoc&&this.binaryDoc.close();return this.finish()});c(b,"fixBaseIndices",function(){try{var a=this.htParams.get("baseModelIndex");if(null!=a){var d=a.intValue();this.baseAtomIndex+=this.asc.ac;this.baseBondIndex+=this.asc.bondCount;d+=this.asc.atomSetCount;this.htParams.put("baseAtomIndex", +Integer.$valueOf(this.baseAtomIndex));this.htParams.put("baseBondIndex",Integer.$valueOf(this.baseBondIndex));this.htParams.put("baseModelIndex",Integer.$valueOf(d))}}catch(h){if(!E(h,Exception))throw h;}});c(b,"readDataObject",function(a){this.initialize();this.asc=new J.adapter.smarter.AtomSetCollection(this.readerName,this,null,null);this.initializeReader();this.processDOM(a);return this.finish()},"~O");c(b,"processDOM",function(){},"~O");c(b,"processBinaryDocument",function(){});c(b,"initializeReader", +function(){});c(b,"checkLine",function(){return!0});c(b,"checkLastModel",function(){if(this.isLastModel(this.modelNumber)&&this.doProcessLines)return this.continuing=this.doProcessLines=!1;this.doProcessLines=!1;return!0});c(b,"isLastModel",function(a){return 0=this.lastModelNumber},"~N");c(b,"appendLoadNote",function(a){null==a?this.loadNote=new JU.SB:(this.loadNote.append(a).append("\n"),JU.Logger.info(a))},"~S");c(b,"initializeTrajectoryFile",function(){this.asc.addAtom(new J.adapter.smarter.Atom); +this.trajectorySteps=this.htParams.get("trajectorySteps");null==this.trajectorySteps&&this.htParams.put("trajectorySteps",this.trajectorySteps=new JU.Lst)});c(b,"finalizeSubclassReader",function(){});c(b,"finalizeReaderASCR",function(){this.isFinalized=!0;if(0h&&(h=d.indexOf("metadata"));0<=h&&(d=d.substring(0,h));d=JU.PT.rep(JU.PT.replaceAllCharacters(d,"{}","").trim(),"\n","\n ")+"\n\nUse SHOW DOMAINS for details.";this.appendLoadNote("\nDomains loaded:\n "+ +d);for(d=this.asc.atomSetCount;0<=--d;)a=this.asc.getAtomSetAuxiliaryInfo(d),a.put("domains",this.domains)}if(null!=this.validation)for(d=this.asc.atomSetCount;0<=--d;)a=this.asc.getAtomSetAuxiliaryInfo(d),a.put("validation",this.validation);if(null!=this.dssr){a.put("dssrJSON",Boolean.TRUE);for(d=this.asc.atomSetCount;0<=--d;)a=this.asc.getAtomSetAuxiliaryInfo(d),a.put("dssr",this.dssr)}}}this.floatifyJavaDouble||this.asc.setInfo("highPrecision",Boolean.TRUE);this.setLoadNote()});c(b,"setLoadNote", +function(){var a=this.loadNote.toString();0this.asc.bsAtoms.nextSetBit(0))&&0>d.indexOf("DataOnly")&&null==this.asc.atomSetInfo.get("dataOnly"))return"No atoms found\nfor file "+this.filePath+"\ntype "+a;this.fixBaseIndices();return this.asc});c(b,"setError",function(a){var d=a.getMessage();this.asc.errorMessage=null==this.line?"Error reading file at end of file \n"+d:"Error reading file at line "+this.ptLine+":\n"+this.line+"\n"+d;a.printStackTrace()},"Throwable");c(b,"initialize",function(){this.htParams.containsKey("baseAtomIndex")&& +(this.baseAtomIndex=this.htParams.get("baseAtomIndex").intValue());this.htParams.containsKey("baseBondIndex")&&(this.baseBondIndex=this.htParams.get("baseBondIndex").intValue());this.initializeSymmetry();this.vwr=this.htParams.remove("vwr");this.htParams.containsKey("stateScriptVersionInt")&&(this.stateScriptVersionInt=this.htParams.get("stateScriptVersionInt").intValue());this.packingRange=this.htParams.get("packingRange");var a=null!=this.htParams.get("highPrecision");null==this.packingRange&&a&& +(this.floatifyJavaDouble=!1,this.packingRange=Float.$valueOf(1E-4));this.merging=this.htParams.containsKey("merging");this.getHeader=this.htParams.containsKey("getHeader");this.isSequential=this.htParams.containsKey("isSequential");this.readerName=this.htParams.get("readerName");this.htParams.containsKey("outputChannel")&&(this.out=this.htParams.get("outputChannel"));this.htParams.containsKey("vibrationNumber")?this.desiredVibrationNumber=this.htParams.get("vibrationNumber").intValue():this.htParams.containsKey("modelNumber")&& +(this.desiredModelNumber=this.htParams.get("modelNumber").intValue());this.applySymmetryToBonds=this.htParams.containsKey("applySymmetryToBonds");this.bsFilter=this.requiresBSFilter?this.htParams.get("bsFilter"):null;this.setFilter(null);this.fillRange=this.htParams.get("fillRange");this.paramsLattice=this.htParams.get("lattice");a=this.htParams.get("supercell");this.noPack=this.checkFilterKey("NOPACK");null!=this.strSupercell&&!this.noPack&&(this.forcePacked=!0);C(a,"JU.P3")?(a=this.ptSupercell= +a,1!=a.length()&&(this.strSupercell=F(a.x)+"a,"+F(a.y)+"b,"+F(a.z)+"c",this.isSUPERCELL=!0)):"string"==typeof a&&(this.strSupercell=a,this.isSUPERCELL=!0);a=this.htParams.containsKey("ptFile")?this.htParams.get("ptFile").intValue():-1;this.isTrajectory=this.htParams.containsKey("isTrajectory");0this.firstLastStep[0]&& +(this.firstLastStep[0]=0);if(0==this.firstLastStep[2]||this.firstLastStep[1]this.firstLastStep[2]&&(this.firstLastStep[2]=1);this.bsModels=JU.BSUtil.newAndSetBit(this.firstLastStep[0]);if(this.firstLastStep[1]>this.firstLastStep[0])for(a=this.firstLastStep[0];a<=this.firstLastStep[1];a+=this.firstLastStep[2])this.bsModels.set(a)}if(null!=this.bsModels&&(null==this.firstLastStep||-1!=this.firstLastStep[1]))this.lastModelNumber=this.bsModels.length(); +this.symmetryRange=this.htParams.containsKey("symmetryRange")?this.htParams.get("symmetryRange").floatValue():0;this.paramsCentroid=this.htParams.containsKey("centroid");this.paramsPacked=this.htParams.containsKey("packed");this.initializeSymmetryOptions();this.htParams.containsKey("spaceGroupIndex")&&(this.desiredSpaceGroupIndex=this.htParams.get("spaceGroupIndex").intValue(),-2==this.desiredSpaceGroupIndex&&(this.sgName=this.htParams.get("spaceGroupName")),this.ignoreFileSpaceGroupName=-2==this.desiredSpaceGroupIndex|| +0<=this.desiredSpaceGroupIndex,this.ignoreFileSymmetryOperators=-1!=this.desiredSpaceGroupIndex);this.htParams.containsKey("unitCellOffset")&&(this.fileScaling=JU.P3.new3(1,1,1),this.fileOffset=this.htParams.get("unitCellOffset"),this.fileOffsetFractional=JU.P3.newP(this.fileOffset),this.unitCellOffsetFractional=this.htParams.containsKey("unitCellOffsetFractional"));this.htParams.containsKey("unitcell")&&(a=this.htParams.get("unitcell"),this.merging&&this.setFractionalCoordinates(!0),9==a.length? +(this.addExplicitLatticeVector(0,a,0),this.addExplicitLatticeVector(1,a,3),this.addExplicitLatticeVector(2,a,6)):this.setUnitCell(a[0],a[1],a[2],a[3],a[4],a[5]),this.ignoreFileUnitCell=this.iHaveUnitCell,this.merging&&!this.iHaveUnitCell&&this.setFractionalCoordinates(!1));this.domains=this.htParams.get("domains");this.validation=this.htParams.get("validation");this.dssr=this.htParams.get("dssr");this.isConcatenated=this.htParams.containsKey("concatenate")});c(b,"parsePrecision",function(a){if(!this.filteredPrecision){var d= +a.indexOf(".")+1;if(0<=d){var h=a.indexOf("(");0>h?this.precision=Math.max(this.precision,a.length-d):(0==this.precision&&(this.precision=h),this.precision=Math.min(this.precision,h-1-d))}}return this.parseFloatStr(a)},"~S");c(b,"setLowPrecision",function(){this.lowPrecision=!0;this.cellSlop=1E-4;null==this.packingRange&&(this.packingRange=Double.$valueOf(1E-4))});c(b,"setPrecision",function(){var a;if(this.lowPrecision)a=!1,this.precision=4;else if(this.precision=1E3this.precision&&(this.cellSlop=Math.pow(10, +-this.precision));this.symmetry.setPrecision(this.cellSlop);this.unitCellParams[26]=this.cellSlop;if(this.fileCoordinatesAreFractional){a=this.asc.ac;for(var d=this.asc.getLastAtomSetAtomIndex();--a>=d;)this.symmetry.twelfthify(this.asc.atoms[a])}this.appendLoadNote("Precision set to "+this.precision+"; packing set to "+(null==this.packingRange?0.02:this.packingRange.floatValue()))});c(b,"initializeSymmetryOptions",function(){this.latticeCells=D(4,0);this.doApplySymmetry=!1;var a=this.paramsLattice; +if(null==a||0==a.length()){if(!this.forcePacked&&null==this.strSupercell)return;a=JU.P3.new3(1,1,1)}this.latticeCells[0]=F(a.x);this.latticeCells[1]=F(a.y);this.latticeCells[2]=F(a.z);C(a,"JU.T4")&&(this.latticeCells[3]=F(a.w));if((this.doCentroidUnitCell=this.paramsCentroid)&&(-1==this.latticeCells[2]||0==this.latticeCells[2]))this.latticeCells[2]=1;a=this.forcePacked||this.paramsPacked;this.centroidPacked=this.doCentroidUnitCell&&a;this.doPackUnitCell=!this.doCentroidUnitCell&&(a||0>this.latticeCells[2]); +this.doApplySymmetry=0d.toUpperCase().indexOf(this.nameRequired))return!1;var h=null==this.bsModels?1>this.desiredModelNumber||a==this.desiredModelNumber:a>this.lastModelNumber?!1:0this.firstLastStep[1]&&(2>this.firstLastStep[2]||0==(a- +1-this.firstLastStep[0])%this.firstLastStep[2]);h&&0==this.desiredModelNumber&&this.discardPreviousAtoms();this.haveModel=(new Boolean(this.haveModel|h)).valueOf();h&&(this.doProcessLines=!0);return h},"~N,~S");c(b,"discardPreviousAtoms",function(){this.asc.discardPreviousAtoms()});c(b,"initializeSymmetry",function(){this.previousSpaceGroup=this.sgName;this.previousUnitCell=this.unitCellParams;this.iHaveUnitCell=this.ignoreFileUnitCell;if(!this.ignoreFileUnitCell){this.unitCellParams=L(27,0);for(var a= +27;0<=--a;)this.unitCellParams[a]=NaN;this.unitCellParams[25]=this.latticeScaling;this.unitCellParams[26]=this.cellSlop;this.symmetry=null}this.ignoreFileSpaceGroupName||(this.sgName="unspecified!");this.doCheckUnitCell=!1});c(b,"newAtomSet",function(a){0<=this.asc.iSet?(this.asc.newAtomSet(),this.asc.setCollectionName("")):this.asc.setCollectionName(a);this.asc.setModelInfoForSet("name",a,Math.max(0,this.asc.iSet));this.asc.setAtomSetName(a)},"~S");c(b, +"cloneLastAtomSet",function(a,d){var h=this.asc.getLastAtomSetAtomCount();this.asc.cloneLastAtomSetFromPoints(a,d);this.asc.haveUnitCell&&(this.doCheckUnitCell=this.iHaveUnitCell=!0,this.sgName=this.previousSpaceGroup,this.unitCellParams=this.previousUnitCell);return h},"~N,~A");c(b,"setSpaceGroupName",function(a){this.ignoreFileSpaceGroupName||null==a||(a=a.trim(),0==a.length||(a.equals("HM:")||a.equals(this.sgName))||(a.equals("P1")||JU.Logger.info("Setting space group name to "+a),this.sgName= +a))},"~S");c(b,"setSymmetryOperator",function(a){if(this.ignoreFileSymmetryOperators)return-1;var d=this.asc.getXSymmetry().addSpaceGroupOperation(a,!0);0>d&&JU.Logger.warn("Skippings symmetry operation "+a);this.iHaveSymmetryOperators=!0;return d},"~S");c(b,"initializeCartesianToFractional",function(){for(var a=0;16>a;a++)if(!Float.isNaN(this.unitCellParams[6+a]))return;for(a=0;16>a;a++)this.unitCellParams[6+a]=0==a%5?1:0;this.nMatrixElements=0});c(b,"clearUnitCell",function(){if(!this.ignoreFileUnitCell){for(var a= +6;22>a;a++)this.unitCellParams[a]=NaN;this.checkUnitCell(6)}});c(b,"setUnitCellItem",function(a,d){this.ignoreFileUnitCell||(0==a&&1==d&&!this.allow_a_len_1||3==a&&0==d?(null==this.ucItems&&(this.ucItems=L(6,0)),this.ucItems[a]=d):(null!=this.ucItems&&6>a&&(this.ucItems[a]=d),!Float.isNaN(d)&&(6<=a&&Float.isNaN(this.unitCellParams[6]))&&this.initializeCartesianToFractional(),this.unitCellParams[a]=d,this.debugging&&JU.Logger.debug("setunitcellitem "+a+" "+d),6>a||Float.isNaN(d)?this.iHaveUnitCell= +this.checkUnitCell(6):12==++this.nMatrixElements&&(this.iHaveUnitCell=this.checkUnitCell(22))))},"~N,~N");c(b,"setUnitCell",function(a,d,h,b,c,g){this.ignoreFileUnitCell||(this.clearUnitCell(),this.unitCellParams[0]=a,this.unitCellParams[1]=d,this.unitCellParams[2]=h,0!=b&&(this.unitCellParams[3]=b),0!=c&&(this.unitCellParams[4]=c),0!=g&&(this.unitCellParams[5]=g),this.iHaveUnitCell=this.checkUnitCell(6))},"~N,~N,~N,~N,~N,~N");c(b,"addExplicitLatticeVector",function(a,d,h){if(!this.ignoreFileUnitCell){if(0== +a)for(var b=0;6>b;b++)this.unitCellParams[b]=0;a=6+3*a;this.unitCellParams[a++]=d[h++];this.unitCellParams[a++]=d[h++];this.unitCellParams[a]=d[h];if(Float.isNaN(this.unitCellParams[0]))for(a=0;6>a;a++)this.unitCellParams[a]=-1;if(this.iHaveUnitCell=this.checkUnitCell(15)){if(this.slabXY||this.polymerX)this.unitCellParams[2]=-1;this.polymerX&&(this.unitCellParams[1]=-1)}}},"~N,~A,~N");c(b,"checkUnitCell",function(a){for(var d=0;d=a&&(this.precision=1E3+a,this.filteredPrecision=!0)),a=this.getFilter("LATTICESCALING="),null!=a&&25 +d?null:this.filterCased.substring(d+a.length,this.filterCased.indexOf(";",d))},"~S");c(b,"getFilter",function(a){var d=null==this.filter?-1:this.filter.indexOf(a);return 0>d?null:this.filter.substring(d+a.length,this.filter.indexOf(";",d))},"~S");c(b,"checkFilterKey",function(a){return null!=this.filter&&0<=this.filter.indexOf(a)},"~S");c(b,"checkAndRemoveFilterKey",function(a){if(!this.checkFilterKey(a))return!1;this.filter=JU.PT.rep(this.filter,a,"");3>this.filter.length&&(this.filter=null);return!0}, +"~S");c(b,"filterAtom",function(a,d){if(!this.haveAtomFilter)return!0;var h=this.checkFilter(a,this.filter1,this.filter1Cased);null!=this.filter2&&(h=(new Boolean(h|this.checkFilter(a,this.filter2,this.filter2Cased))).valueOf());if(h&&this.filterEveryNth&&(!a.isHetero||!this.filterAllHetero))h=0==this.nFiltered++%this.filterN;this.bsFilter.setBitTo(0<=d?d:this.asc.ac,h);return h},"J.adapter.smarter.Atom,~N");c(b,"checkFilter",function(a,d,h){return a.isHetero&&this.filterAllHetero?!0:(!this.filterGroup3|| +null==a.group3||!this.filterReject(d,"[",a.group3.toUpperCase()+"]"))&&(!this.filterAtomName||this.allowAtomName(a.atomName,d))&&(null==this.filterAtomTypeStr||null==a.atomName||0<=a.atomName.toUpperCase().indexOf("\x00"+this.filterAtomTypeStr))&&(!this.filterElement||null==a.elementSymbol||!this.filterReject(d,"_",a.elementSymbol.toUpperCase()+";"))&&(!this.filterChain||0==a.chainID||!this.filterReject(h,":",""+this.vwr.getChainIDStr(a.chainID)))&&(!this.filterAltLoc||"\x00"==a.altLoc||!this.filterReject(d, +"%",""+a.altLoc))&&(!this.filterHetero||!this.allowPDBFilter||!this.filterReject(d,"HETATM",a.isHetero?"-Y":"-N"))},"J.adapter.smarter.Atom,~S,~S");c(b,"rejectAtomName",function(a){return this.filterAtomName&&!this.allowAtomName(a,this.filter)},"~S");c(b,"allowAtomName",function(a,d){return null==a||!this.filterReject(d,".",a.toUpperCase()+this.filterAtomNameTerminator)},"~S,~S");c(b,"filterReject",function(a,d,h){return 0<=a.indexOf(d)&&0<=a.indexOf("!"+d)==0<=a.indexOf(d+h)},"~S,~S,~S");c(b,"set2D", +function(){this.asc.setInfo("is2D",Boolean.TRUE);this.asc.getBSAtoms(-1);this.noHydrogens&&(this.asc.setInfo("noHydrogen",Boolean.TRUE),this.optimize2D=!1);this.optimize2D?(this.asc.fix2Stereo(),this.asc.setInfo("doMinimize",Boolean.TRUE),this.appendLoadNote("This model is 2D. Its 3D structure was generated.")):(this.appendLoadNote('This model is 2D. Its 3D structure has not been generated; use LOAD "" FILTER "2D" to optimize 3D.'),this.addJmolScript("select thismodel;wireframe only"))});c(b,"doGetVibration", +function(a){return this.addVibrations&&(0>=this.desiredVibrationNumber||a==this.desiredVibrationNumber)},"~N");c(b,"setTransform",function(a,d,h,b,c,g,j,k,l){null==this.matRot&&this.doSetOrientation&&(this.matRot=new JU.M3,a=JU.V3.new3(a,d,h),a.normalize(),this.matRot.setColumnV(0,a),a.set(b,c,g),a.normalize(),this.matRot.setColumnV(1,a),a.set(j,k,l),a.normalize(),this.matRot.setColumnV(2,a),this.asc.setInfo("defaultOrientationMatrix",JU.M3.newM3(this.matRot)),b=JU.Quat.newM(this.matRot),this.asc.setInfo("defaultOrientationQuaternion", +b),JU.Logger.info("defaultOrientationMatrix = "+this.matRot))},"~N,~N,~N,~N,~N,~N,~N,~N,~N");c(b,"setAtomCoordXYZ",function(a,d,h,b){a.set(d,h,b);this.setAtomCoord(a)},"J.adapter.smarter.Atom,~N,~N,~N");c(b,"setAtomCoordScaled",function(a,d,h,b){null==a&&(a=this.asc.addNewAtom());this.setAtomCoordXYZ(a,this.parsePrecision(d[h])*b,this.parsePrecision(d[h+1])*b,this.parsePrecision(d[h+2])*b);return a},"J.adapter.smarter.Atom,~A,~N,~N");c(b,"setAtomCoordTokens",function(a,d,h){this.setAtomCoordXYZ(a, +this.parsePrecision(d[h]),this.parsePrecision(d[h+1]),this.parsePrecision(d[h+2]))},"J.adapter.smarter.Atom,~A,~N");c(b,"addAtomXYZSymName",function(a,d,h,b){var c=this.asc.addNewAtom();null!=h&&(c.elementSymbol=h);null!=b&&(c.atomName=b);this.setAtomCoordTokens(c,a,d);return c},"~A,~N,~S,~S");c(b,"setAtomCoord",function(a){var d=this.doConvertToFractional&&!this.fileCoordinatesAreFractional&&null!=this.getSymmetry();null!=this.fileScaling&&(a.x=a.x*this.fileScaling.x+this.fileOffset.x,a.y=a.y*this.fileScaling.y+ +this.fileOffset.y,a.z=a.z*this.fileScaling.z+this.fileOffset.z);d&&(this.symmetry.haveUnitCell()||this.symmetry.setUnitCellFromParams(this.unitCellParams,!1,NaN),this.symmetry.toFractional(a,!1),this.iHaveFractionalCoordinates=!0);this.floatifyJavaDouble&&this.fileCoordinatesAreFractional&&this.fixFloatPt(a,1E5);this.doCheckUnitCell=!0},"J.adapter.smarter.Atom");c(b,"addSites",function(a){this.asc.setCurrentModelInfo("pdbSites",a);var d="",h;for(a=a.entrySet().iterator();a.hasNext()&&((h=a.next())|| +1);){for(var b=h.getKey(),c=h.getValue(),g,j=b.length;0<=--j;)if(!JU.PT.isLetterOrDigit(g=b.charAt(j))&&"'"!=g)b=b.substring(0,j)+"_"+b.substring(j+1);c=c.get("groups");0!=c.length&&(this.addSiteScript("@site_"+b+" "+c),this.addSiteScript("site_"+b+' = ["'+JU.PT.rep(c,",",'","')+'"]'),d+=',"site_'+b+'"')}0g;g++){if(b||d>=a.length){for(;3>(a=JU.PT.getTokens(this.rd())).length;);d=0>c?a.length+c:c}for(var j=0;3>j;j++)h[g][j]=Double.$valueOf(a[d++]).doubleValue()}return h},"~A,~N");c(b,"fillFloatArray",function(a,d,h){for(var b=[],c=0,g=0;g=b.length;){null== +a&&(a=this.rd());if(0==d)b=JU.PT.getTokens(a);else{b=Array(v(a.length/d));for(c=0;cw||(w+=a+h*M++,this.debugging&&JU.Logger.debug("atom "+w+" vib"+M+": "+n+" "+u+" "+r),this.asc.addVibrationVectorWithSymmetry(w,n,u,r,m))}}}},"~N,~N,~N,~A,~B,~N,~N,~A,~N,~A");c(b,"fillDataBlockFixed",function(a,d, +h,b){if(0==h)this.fillDataBlock(a,b);else for(var c=a.length,g=0;gb&&" "==this.line.charAt(-b)){a[0]=null;break}var j=v((this.line.length-d+1)/h);a[g]=Array(j);for(var k=0,l=d;kthis.line.indexOf(a););return this.line},"~S");c(b,"discardLinesUntilContains2",function(a,d){for(;null!=this.rd()&&0>this.line.indexOf(a)&&0>this.line.indexOf(d););return this.line},"~S,~S");c(b,"discardLinesUntilBlank",function(){for(;null!=this.rd()&&0!=this.line.trim().length;);return this.line});c(b,"discardLinesUntilNonBlank",function(){for(;null!=this.rd()&&0==this.line.trim().length;);return this.line});c(b,"checkLineForScript", +function(a){this.line=a;this.checkCurrentLineForScript()},"~S");c(b,"checkCurrentLineForScript",function(){this.line.endsWith("#noautobond")&&(this.line=this.line.substring(0,this.line.lastIndexOf("#")).trim(),this.asc.setNoAutoBond());var a=this.line.indexOf("jmolscript:");if(0<=a){var d=this.line.substring(a+11,this.line.length);0<=d.indexOf("#")&&(d=d.substring(0,d.indexOf("#")));this.addJmolScript(d);this.line=this.line.substring(0,a).trim()}});c(b,"addJmolScript",function(a){JU.Logger.info("#jmolScript: "+ +a);null==this.previousScript?this.previousScript="":this.previousScript.endsWith(";")||(this.previousScript+=";");this.previousScript+=a;this.asc.setInfo("jmolscript",this.previousScript)},"~S");c(b,"addSiteScript",function(a){null==this.siteScript?this.siteScript="":this.siteScript.endsWith(";")||(this.siteScript+=";");this.siteScript+=a;this.asc.setInfo("sitescript",this.siteScript)},"~S");c(b,"rd",function(){return this.RL()});c(b,"RL",function(){this.prevline=this.line;this.line=this.reader.readLine(); +null!=this.out&&null!=this.line&&this.out.append(this.line).append("\n");this.ptLine++;this.debugging&&null!=this.line&&JU.Logger.info(this.line);return this.line});b.getStrings=c(b,"getStrings",function(a,d,h){for(var b=Array(d),c=0,g=0;cb;b++){if(0< +b||Float.isNaN(this.parseFloatStr(this.line)))if(this.rd(),0==b&&null!=this.line){b=-1;continue}this.fillFloatArray(this.line,0,h);d[b]=new JU.V3;d[b].setA(h);a&&d[b].scale(0.5291772)}return d},"~B");c(b,"setElementAndIsotope",function(a,d){var h=this.parseIntStr(d);-2147483648==h?a.elementSymbol=d:(d=d.substring((""+h).length),a.elementNumber=0==d.length?h:(h<<7)+J.api.JmolAdapter.getElementNumber(d))},"J.adapter.smarter.Atom,~S");c(b,"finalizeModelSet",function(){});c(b,"setChainID",function(a, +d){a.chainID=this.vwr.getChainID(d,!0)},"J.adapter.smarter.Atom,~S");f(b,"readNextLine",function(){null!=this.rd()&&0<=this.line.indexOf("#jmolscript:")&&this.checkCurrentLineForScript();return this.line});c(b,"appendUunitCellInfo",function(a){null==this.moreUnitCellInfo&&(this.moreUnitCellInfo=new JU.Lst);this.moreUnitCellInfo.addLast(a);this.appendLoadNote(a)},"~S");c(b,"getInterface",function(a){a=J.api.Interface.getInterface(a,this.vwr,"file");if(null==a)throw new NullPointerException("Interface"); +return a},"~S");c(b,"forceSymmetry",function(a){a&&(this.doPackUnitCell=a);this.doApplySymmetry||(this.doApplySymmetry=!0,this.latticeCells[0]=this.latticeCells[1]=this.latticeCells[2]=1)},"~B");c(b,"fixFloatA",function(a){if(this.floatifyJavaDouble)for(var d=a.length;0<=--d;)Float.isNaN(a[d])||(a[d]=JU.PT.fixFloat(a[d],1E5))},"~A");c(b,"fixDoubleA",function(a){if(this.floatifyJavaDouble)for(var d=a.length;0<=--d;)Double.isNaN(a[d])||(a[d]=JU.PT.fixDouble(a[d],1E5))},"~A");c(b,"fixFloatPt",function(a, +d){this.floatifyJavaDouble&&JU.PT.fixPtFloats(a,d)},"JU.P3,~N")});n("J.adapter.smarter");r(function(){this.atomSetIndex=0;u(this,arguments)},J.adapter.smarter,"AtomSetObject",null);n("J.adapter.smarter");A(["J.adapter.smarter.AtomSetObject"],"J.adapter.smarter.Bond",null,function(){var b=r(function(){this.order=this.atomIndex2=this.atomIndex1=0;this.uniqueID=this.colix=this.radius=-1;this.distance=0;u(this,arguments)},J.adapter.smarter,"Bond",J.adapter.smarter.AtomSetObject);x(b,function(a,d,h){I(this, +J.adapter.smarter.Bond,[]);this.atomIndex1=a;this.atomIndex2=d;this.order=h},"~N,~N,~N");f(b,"toString",function(){return"[Bond "+this.atomIndex1+" "+this.atomIndex2+" "+this.order+"]"})});n("J.adapter.smarter");A(["J.api.JmolAdapterBondIterator"],"J.adapter.smarter.BondIterator",null,function(){var b=r(function(){this.bonds=this.bsAtoms=null;this.ibond=0;this.bond=null;this.bondCount=0;u(this,arguments)},J.adapter.smarter,"BondIterator",J.api.JmolAdapterBondIterator);x(b,function(a){I(this,J.adapter.smarter.BondIterator, +[]);this.bsAtoms=a.bsAtoms;this.bonds=a.bonds;this.bondCount=a.bondCount;this.ibond=0},"J.adapter.smarter.AtomSetCollection");f(b,"hasNext",function(){if(this.ibond==this.bondCount)return!1;for(;null==(this.bond=this.bonds[this.ibond++])||null!=this.bsAtoms&&(!this.bsAtoms.get(this.bond.atomIndex1)||!this.bsAtoms.get(this.bond.atomIndex2));)if(this.ibond==this.bondCount)return!1;return!0});f(b,"getAtomUniqueID1",function(){return Integer.$valueOf(this.bond.atomIndex1)});f(b,"getAtomUniqueID2",function(){return Integer.$valueOf(this.bond.atomIndex2)}); +f(b,"getEncodedOrder",function(){return this.bond.order});f(b,"getRadius",function(){return this.bond.radius});f(b,"getColix",function(){return this.bond.colix})});n("J.adapter.smarter");A(null,"J.adapter.smarter.Resolver","java.io.BufferedInputStream java.util.StringTokenizer JU.LimitedLineReader $.PT $.Rdr J.adapter.smarter.AtomSetCollectionReader $.SmarterJmolAdapter J.api.Interface JU.Logger JV.JC".split(" "),function(){var b=G(J.adapter.smarter,"Resolver",null);b.getReaderClassBase=c(b,"getReaderClassBase", +function(a){var d=a+"Reader";if(a.startsWith("Xml"))return"J.adapter.readers.xml."+d;a=";"+a+";";for(var h=1;h=c&&b.put("readerName",g);return J.adapter.smarter.Resolver.getReader(g, +b)},"~S,~S,~O,java.util.Map,~N");b.getReader=c(b,"getReader",function(a){var d=null,h=null,d=null,h=J.adapter.smarter.Resolver.getReaderClassBase(a);if(null==(d=J.api.Interface.getInterface(h,null,"reader")))d=JV.JC.READER_NOT_FOUND+h,JU.Logger.error(d);return d},"~S,java.util.Map");b.getReaderFromType=c(b,"getReaderFromType",function(a){a.endsWith("(XML)")&&(a="Xml"+a.substring(0,a.length-5));a=";"+a.toLowerCase()+";";if(0<=";zmatrix;cfi;c;vfi;v;mnd;jag;gms;g;gau;mp;nw;orc;pqs;qc;".indexOf(a))return"Input"; +for(var d,h,b=J.adapter.smarter.Resolver.readerSets.length;0<=--b;)if(0<=(h=(d=J.adapter.smarter.Resolver.readerSets[b--]).toLowerCase().indexOf(a)))return d.substring(h+1,d.indexOf(";",h+2));return null},"~S");b.split=c(b,"split",function(a,d){for(var h="",b=a.length,c=0,g=0;ca.length)return!1;for(var h=d.length;0<=--h;)if(a[h]!=d[h])return!1;return!0},"~A,~A");b.checkFileStart=c(b,"checkFileStart",function(a){for(var d=0;dd?0=d;d++){var h=new java.util.StringTokenizer(a[d]),b=h.countTokens();if(!(4==b||2==d&&5==b)||!J.adapter.smarter.Resolver.isInt(h.nextToken()))return!1;for(var c=3;0<=--c;)if(!J.adapter.smarter.Resolver.isFloat(h.nextToken()))return!1;if(5==b&&!J.adapter.smarter.Resolver.isInt(h.nextToken()))return!1}return!0},"~A"); +b.checkFoldingXyz=c(b,"checkFoldingXyz",function(a){var d=new java.util.StringTokenizer(a[0].trim()," \t");if(2>d.countTokens()||!J.adapter.smarter.Resolver.isInt(d.nextToken().trim()))return!1;d=a[1].trim();0==d.length&&(d=a[2].trim());d=new java.util.StringTokenizer(d," \t");return 0d.length||0<=d.indexOf(".")||a[0].startsWith("data_"))return 0;if(d.endsWith("V2000"))return 2E3;if(d.endsWith("V3000"))return 3E3;var d=JU.PT.parseInt(a[3].substring(0,3).trim()),h=JU.PT.parseInt(a[3].substring(3,6).trim());return 0")&&0!= +a[1].indexOf("@")&&0!=a[2].indexOf("@")?3:0},"~A");b.checkMopacGraphf=c(b,"checkMopacGraphf",function(a){return 2=a.length||" "!=a[d].charAt(0)||(d+=2)+1>=a.length)return!1;var h=a[d];if(3>h.length)return!1;var b=JU.PT.parseInt(h.substring(2).trim()),c=JU.PT.parseInt(h.substring(0,2).trim());if(2>(h=a[d+1]).length)return!1; +a=JU.PT.parseInt(h.substring(0,2).trim());if(0>b||5=a||-2147483648==c||5a.indexOf(d[h])))return h=d[0],!h.equals("Xml")?h:0<=a.indexOf("/AFLOWDATA/")||0<=a.indexOf("-- Structure PRE --")?"AFLOW":0>a.indexOf("a.indexOf("XHTML")&&(0>a.indexOf("xhtml")||0<=a.indexOf("")?"XmlCml":0<=a.indexOf("XSD")?"XmlXsd":0<=a.indexOf(">vasp")?"XmlVasp":0<=a.indexOf("")?"XmlQE":"XmlCml(unidentified)"},"~S");b.checkSpecial2=c(b,"checkSpecial2",function(a){if(J.adapter.smarter.Resolver.checkGromacs(a))return"Gromacs"; +if(J.adapter.smarter.Resolver.checkCrystal(a))return"Crystal";if(J.adapter.smarter.Resolver.checkFAH(a))return"FAH";a=J.adapter.smarter.Resolver.checkCastepVaspSiesta(a);return null!=a?a:null},"~A");b.checkFAH=c(b,"checkFAH",function(a){return(a[0].trim()+a[2].trim()).equals('{"atoms": [')},"~A");b.checkCrystal=c(b,"checkCrystal",function(a){var d=a[1].trim();if(d.equals("SLAB")||d.equals("MOLECULE")||d.equals("CRYSTAL")||d.equals("POLYMER")||(d=a[3]).equals("SLAB")||d.equals("MOLECULE")||d.equals("POLYMER"))return!0; +for(d=0;dh&&0!=d;h++)if(69!=(d=a[h].length)&&45!=d&&0!=d)return!1;return!0},"~A");b.checkCastepVaspSiesta= +c(b,"checkCastepVaspSiesta",function(a){for(var d=0;dd&&(h.startsWith("DIRECT")||h.startsWith("CARTESIAN")))return"VaspPoscar"}return null},"~A");b.getFileTypefromFilter= +c(b,"getFileTypefromFilter",function(a){var d=null==a?-1:a.toLowerCase().indexOf("filetype");return 0>d?null:a.substring(d+8,(a+";").indexOf(";",d)).$replace("="," ").trim()},"~S");b.fixDOSName=c(b,"fixDOSName",function(a){return 0<=a.indexOf(":\\")?a.$replace("\\","/"):a},"~S");b.readerSets=w(-1,"cif. ;Cif;Cif2;MMCif;MMTF;MagCif;BCIF; molxyz. ;Mol3D;Mol;Xyz; more. ;AFLOW;BinaryDcd;CDX;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;TlsDataOnly; quantum. ;Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GaussianFchk;GaussianWfn;Jaguar;Molden;MopacGraphf;GenNBO;NWChem;Psi;Qchem;QCJSON;WebMO;Orca;MO;Ams; pdb. ;Pdb;Pqr;P2n;JmolData; pymol. ;PyMOL; simple. ;Alchemy;Ampac;Cube;FoldingXyz;GhemicalMM;HyperChem;Jme;JSON;Mopac;MopacArchive;Tinker;Input;FAH; spartan. ;Spartan;SpartanSmol;Odyssey; xtal. ;Abinit;Aims;Bilbao;Castep;Cgd;Crystal;Dmol;Espresso;Gulp;Jana;Magres;Shelx;Siesta;VaspOutcar;VaspPoscar;Wien2k;Xcrysden;PWmat;Optimade;Cmdf; xml. ;XmlCdx;XmlArgus;XmlCml;XmlChem3d;XmlMolpro;XmlOdyssey;XmlXsd;XmlVasp;XmlQE;".split(" ")); +b.cdxMagic=O(-1,["V","j","C","D"]);b.cmdfMagic=O(-1,["C","M","D","F"]);b.sptRecords=w(-1,["spt","# Jmol state","# Jmol script","JmolManifest"]);b.m3dStartRecords=w(-1,["Alchemy","STRUCTURE 1.00 1"]);b.cubeFileStartRecords=w(-1,["Cube","JVXL","#JVXL"]);b.mol2Records=w(-1,["Mol2","mol2","@"]);b.webmoFileStartRecords=w(-1,["WebMO","[HEADER]"]);b.moldenFileStartRecords=w(-1,["Molden","[Molden","MOLDEN","[MOLDEN"]);b.dcdFileStartRecords=w(-1,["BinaryDcd","T\x00\x00\x00CORD","\x00\x00\x00TCORD"]); +b.tlsDataOnlyFileStartRecords=w(-1,["TlsDataOnly","REFMAC\n\nTL","REFMAC\r\n\r\n","REFMAC\r\rTL"]);b.inputFileStartRecords=w(-1,["Input","#ZMATRIX","%mem=","AM1","$rungauss"]);b.magresFileStartRecords=w(-1,["Magres","#$magres","# magres"]);b.pymolStartRecords=w(-1,["PyMOL","}q"]);b.janaStartRecords=w(-1,["Jana","Version Jana"]);b.jsonStartRecords=w(-1,["JSON",'{"mol":']);b.jcampdxStartRecords=w(-1,["Jcampdx","##TITLE"]);b.jmoldataStartRecords=w(-1,["JmolData","REMARK 6 Jmol"]);b.pqrStartRecords= +w(-1,["Pqr","REMARK 1 PQR","REMARK The B-factors"]);b.p2nStartRecords=w(-1,["P2n","REMARK 1 P2N"]);b.cif2StartRecords=w(-1,["Cif2","#\\#CIF_2","\u00ef\u00bb\u00bf#\\#CIF_2"]);b.xmlStartRecords=w(-1,["Xml","Bilbao Crystallographic Server<"]);b.xmlContainsRecords=w(-1, +'Xml =j&&m.startsWith("{"))f=m.contains('version":"DSSR')?"dssr":m.contains("/outliers/")?"validation":"domains",m=g.parseJSONMap(m), +null!=m&&b.put(f,f.equals("dssr")?m:JS.SV.getVariableMap(m));else{0<=f.indexOf("|")&&(f=JU.PT.rep(f,"_","/"));if(1==l){if(0<=f.indexOf("/rna3dhub/")){k+="\n_rna3d \n;"+m+"\n;\n";continue}if(0<=f.indexOf("/dssr/")){k+="\n_dssr \n;"+m+"\n;\n";continue}}k+=m;k.endsWith("\n")||(k+="\n")}}j=1;k=JU.Rdr.getBR(k)}for(var m=c?Array(j):null,f=c?null:Array(j),p=null,l=0;ld)return null==a.bsAtoms?a.ac:a.bsAtoms.cardinality();if(null==a.bsAtoms)return a.getAtomSetAtomCount(d);var h=JU.BSUtil.copy(a.bsAtoms),b=a.getAtomSetAtomIndex(d);h.and(JU.BSUtil.newBitSet2(b,b+a.getAtomSetAtomCount(d)));return h.cardinality()},"~O,~N");f(b,"coordinatesAreFractional",function(a){return a.coordinatesAreFractional}, +"~O");f(b,"getAtomIterator",function(a){return new J.adapter.smarter.AtomIterator(a)},"~O");f(b,"getBondIterator",function(a){return 0==a.bondCount?null:new J.adapter.smarter.BondIterator(a)},"~O");f(b,"getStructureIterator",function(a){return 0==a.structureCount?null:new J.adapter.smarter.StructureIterator(a)},"~O");b.close=c(b,"close",function(a){C(a,"java.io.BufferedReader");a.close()},"~O");b.PATH_SEPARATOR=System.getProperty("path.separator","/")});n("J.adapter.smarter");A(["J.api.JmolAdapterStructureIterator"], +"J.adapter.smarter.StructureIterator",["J.api.JmolAdapter"],function(){var b=r(function(){this.structureCount=0;this.structure=this.structures=null;this.istructure=0;this.bsModelsDefined=null;u(this,arguments)},J.adapter.smarter,"StructureIterator",J.api.JmolAdapterStructureIterator);x(b,function(a){I(this,J.adapter.smarter.StructureIterator,[]);this.structureCount=a.structureCount;this.structures=a.structures;this.istructure=0;this.bsModelsDefined=a.bsStructuredModels},"J.adapter.smarter.AtomSetCollection"); +f(b,"hasNext",function(){if(this.istructure==this.structureCount)return!1;this.structure=this.structures[this.istructure++];return!0});f(b,"getStructureType",function(){return this.structure.structureType});f(b,"getSubstructureType",function(){return this.structure.substructureType});f(b,"getStructureID",function(){return this.structure.structureID});f(b,"getStrandID",function(){return this.structure.strandID});f(b,"getStartChainID",function(){return this.structure.startChainID});f(b,"getStartSequenceNumber", +function(){return this.structure.startSequenceNumber});f(b,"getStartInsertionCode",function(){return J.api.JmolAdapter.canonizeInsertionCode(this.structure.startInsertionCode)});f(b,"getEndChainID",function(){return this.structure.endChainID});f(b,"getEndSequenceNumber",function(){return this.structure.endSequenceNumber});f(b,"getEndInsertionCode",function(){return this.structure.endInsertionCode});f(b,"getStrandCount",function(){return this.structure.strandCount});f(b,"getStructuredModels",function(){return this.bsModelsDefined}); +f(b,"getAtomIndices",function(){return this.structure.atomStartEnd});f(b,"getModelIndices",function(){return this.structure.modelStartEnd});f(b,"getBSAll",function(){return this.structure.bsAll})});n("J.api");K(J.api,"AtomIndexIterator");n("J.api");A(null,"J.api.Interface",["JU.Logger"],function(){var b=G(J.api,"Interface",null);b.getInterface=c(b,"getInterface",function(a){try{var d=ra._4Name(a);return null==d?null:d.newInstance()}catch(h){if(E(h,Exception))return JU.Logger.error("Interface.java Error creating instance for "+ +a+": \n"+h),null;throw h;}},"~S,JV.Viewer,~S");b.getOption=c(b,"getOption",function(a,d,h){return J.api.Interface.getInterface("J."+a,d,h)},"~S,JV.Viewer,~S");b.getUtil=c(b,"getUtil",function(a,d,h){return J.api.Interface.getInterface("JU."+a,d,h)},"~S,JV.Viewer,~S");b.getSymmetry=c(b,"getSymmetry",function(a,d){return J.api.Interface.getInterface("JS.Symmetry",a,d)},"JV.Viewer,~S")});n("J.api");A(null,"J.api.JmolAdapter",["JU.PT","J.api.JmolViewer","JU.Elements"],function(){var b=G(J.api,"JmolAdapter", +null);b.getElementSymbol=c(b,"getElementSymbol",function(a){return JU.Elements.elementSymbolFromNumber(a)},"~N");b.getElementNumber=c(b,"getElementNumber",function(a){return JU.Elements.elementNumberFromSymbol(a,!1)},"~S");b.getNaturalIsotope=c(b,"getNaturalIsotope",function(a){return JU.Elements.getNaturalIsotope(a)},"~N");b.getBondingRadius=c(b,"getBondingRadius",function(a,d){return JU.Elements.getBondingRadius(a,d)},"~N,~N");c(b,"getAtomSetCollectionFromReaderType",function(a,d,h,b){a=this.getAtomSetCollectionReader(a, +d,h,J.api.JmolViewer.allocateViewer(null,this).setLoadParameters(b,!1));return"string"==typeof a?a:this.getAtomSetCollection(a)},"~S,~S,~O,java.util.Map");c(b,"openBufferedReader",function(a,d){return this.getAtomSetCollectionFromReaderType(a,null,d,null)},"~S,java.io.BufferedReader");c(b,"openBufferedReader",function(a,d,h){return this.getAtomSetCollectionFromReaderType(a,null,d,h)},"~S,java.io.BufferedReader,java.util.Map");c(b,"openBufferedReader",function(a,d,h){return this.getAtomSetCollectionFromReaderType(a, +d,h,null)},"~S,~S,java.io.BufferedReader");b.canonizeAlphaDigit=c(b,"canonizeAlphaDigit",function(a){return JU.PT.isLetterOrDigit(a)?a:"\x00"},"~S");b.canonizeInsertionCode=c(b,"canonizeInsertionCode",function(a){return J.api.JmolAdapter.canonizeAlphaDigit(a)},"~S");b.canonizeAlternateLocationID=c(b,"canonizeAlternateLocationID",function(a){return J.api.JmolAdapter.canonizeAlphaDigit(a)},"~S");b.cellParamNames=w(-1,"_cell_length_a _cell_length_b _cell_length_c _cell_angle_alpha _cell_angle_beta _cell_angle_gamma".split(" "))}); +n("J.api");K(J.api,"JmolAdapterAtomIterator");n("J.api");G(J.api,"JmolAdapterBondIterator",null);n("J.api");G(J.api,"JmolAdapterStructureIterator",null);n("J.api");K(J.api,"JmolAppConsoleInterface");n("J.api");K(J.api,"JmolAppletInterface",J.api.JmolSyncInterface);n("J.api");K(J.api,"JmolCallbackListener");n("J.api");K(J.api,"JmolAnnotationParser");n("J.api");K(J.api,"JmolGraphicsInterface");n("J.api");K(J.api,"JmolMeasurementClient");n("J.api");K(J.api,"JmolModulationSet");n("J.api");K(J.api,"JmolNavigatorInterface", +Runnable);n("J.api");K(J.api,"JmolRendererInterface",J.api.JmolGraphicsInterface);n("J.api");K(J.api,"JmolRepaintManager");n("J.api");K(J.api,"JmolStatusListener",J.api.JmolCallbackListener);n("J.api");K(J.api,"JmolSyncInterface");n("J.api");A(null,"J.api.JmolViewer",["java.util.Hashtable","JV.JC"],function(){var b=r(function(){this.apiPlatform=this.menuStructure=null;u(this,arguments)},J.api,"JmolViewer",null);b.allocateViewer=c(b,"allocateViewer",function(a,d,h,b,c,g,j,k){var l=new java.util.Hashtable; +null!=a&&l.put("display",a);null!=d&&l.put("adapter",d);null!=j&&l.put("statuslistener",j);null!=k&&l.put("platform",k);null!=g&&l.put("options",g);null!=h&&l.put("fullname",h);null!=b&&l.put("documentbase",b);null!=c&&l.put("codebase",c);l.put("isApp",Boolean.TRUE);return new JV.Viewer(l)},"~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform");b.allocateViewer=c(b,"allocateViewer",function(a,d){return J.api.JmolViewer.allocateViewer(a,d,null,null,null, +null,null,null)},"~O,J.api.JmolAdapter");b.allocateViewer=c(b,"allocateViewer",function(a,d,h,b,c,g,j){return J.api.JmolViewer.allocateViewer(a,d,h,b,c,g,j,null)},"~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener");c(b,"setConsole",function(a){this.getProperty("DATA_API","getAppConsole",a)},"J.api.JmolAppConsoleInterface");b.getJmolVersion=c(b,"getJmolVersion",function(){return JV.Viewer.getJmolVersion()});b.getJmolVersionNoDate=c(b,"getJmolVersionNoDate",function(){return JV.JC.version}); +c(b,"openReader",function(a,d){return this.openReader(null==a?"String":a,null,d)},"~S,~O");c(b,"openFileAsync",function(a){this.openFileAsyncSpecial(a,0)},"~S");c(b,"renderScreenImage",function(a,d){this.apiPlatform.renderScreenImage(a,d)},"~O,~O,~O");c(b,"runScriptCautiously",function(){return null},"~S");c(b,"dispose",function(){})});n("J.api");K(J.api,"SymmetryInterface");n("J.api");K(J.api,"Translator");n("J.appletjs");A(["JU.GenericApplet"],"J.appletjs.Jmol",["java.util.Hashtable"],function(){var b= +G(J.appletjs,"Jmol",JU.GenericApplet);x(b,function(a){I(this,J.appletjs.Jmol,[]);this.htParams=new java.util.Hashtable;null==a&&(a=new java.util.Hashtable);this.vwrOptions=a;for(var d,h=a.entrySet().iterator();h.hasNext()&&((d=h.next())||1);)this.htParams.put(d.getKey().toLowerCase(),d.getValue());this.documentBase=""+a.get("documentBase");this.codeBase=""+a.get("codePath");JU.GenericApplet.isJS=!0;this.init(this)},"java.util.Map")});n("J.atomdata");A(null,"J.atomdata.AtomData",["JU.P3","JU.BSUtil"], +function(){var b=r(function(){this.modelName=this.fileName=this.programInfo=null;this.modelIndex=0;this.radiusData=this.bsMolecules=this.bsIgnored=this.bsSelected=null;this.hAtomRadius=this.lastModelIndex=this.firstModelIndex=this.firstAtomIndex=0;this.hAtoms=this.atomMolecule=this.atomicNumber=this.atomRadius=this.xyz=this.atoms=this.atomIndex=null;this.adpMode=this.hydrogenAtomCount=this.ac=0;u(this,arguments)},J.atomdata,"AtomData",null);c(b,"transformXYZ",function(a,d){var h=Array(this.xyz.length); +null==d&&(d=JU.BSUtil.newBitSet2(0,this.xyz.length));for(var b=d.nextSetBit(0);0<=b;b=d.nextSetBit(b+1))null!=this.xyz[b]&&(h[b]=JU.P3.newP(this.xyz[b]),a.rotTrans(h[b]));this.xyz=h},"JU.M4,JU.BS")});n("J.atomdata");K(J.atomdata,"AtomDataServer");n("J.atomdata");A(["java.lang.Enum","J.c.VDW"],"J.atomdata.RadiusData",["JU.SB"],function(){var b=r(function(){this.vdwType=this.factorType=this.info=null;this.value=NaN;this.valueExtended=0;this.values=null;u(this,arguments)},J.atomdata,"RadiusData",null); +N(b,function(){this.factorType=J.atomdata.RadiusData.EnumType.ABSOLUTE;this.vdwType=J.c.VDW.AUTO});x(b,function(a,d,h,b){null!=a?(this.values=a,this.value=2147483647):null!=h&&(this.factorType=h,this.value=d,null!=b&&(this.vdwType=b))},"~A,~N,J.atomdata.RadiusData.EnumType,J.c.VDW");f(b,"toString",function(){if(Float.isNaN(this.value))return"";var a=new JU.SB;switch(this.factorType){case J.atomdata.RadiusData.EnumType.ABSOLUTE:a.appendF(this.value);break;case J.atomdata.RadiusData.EnumType.OFFSET:a.append(0< +this.value?"+":"").appendF(this.value);break;case J.atomdata.RadiusData.EnumType.FACTOR:a.appendI(F(100*this.value)).append("%");this.vdwType!==J.c.VDW.AUTO&&a.append(this.vdwType.getVdwLabel());break;case J.atomdata.RadiusData.EnumType.SCREEN:a.appendI(F(this.value))}return a.toString()});b=G(J.atomdata.RadiusData,"EnumType",Enum);B(b,"ABSOLUTE",0,[]);B(b,"OFFSET",1,[]);B(b,"FACTOR",2,[]);B(b,"SCREEN",3,[])});n("J.awtjs");A(["J.awtjs2d.Platform"],"J.awtjs.Platform",null,function(){var b=G(J.awtjs, +"Platform",J.awtjs2d.Platform);f(b,"drawImage",function(){},"~O,~O,~N,~N,~N,~N,~B");f(b,"getTextPixels",function(){return null},"~S,JU.Font,~O,~O,~N,~N,~N");f(b,"getGraphics",function(){return null},"~O");f(b,"getStaticGraphics",function(){return null},"~O,~B");f(b,"newBufferedImage",function(){return null},"~O,~N,~N");f(b,"newOffScreenImage",function(){return null},"~N,~N")});n("J.awtjs2d");var da=G(J.awtjs2d,"Display",null);da.getFullScreenDimensions=c(da,"getFullScreenDimensions",function(b,a){a[0]= +b.width;a[1]=b.height},"~O,~A");da.hasFocus=c(da,"hasFocus",function(){return!0},"~O");da.requestFocusInWindow=c(da,"requestFocusInWindow",function(){},"~O");da.renderScreenImage=c(da,"renderScreenImage",function(){},"J.api.PlatformViewer,~O,~O");da.prompt=c(da,"prompt",function(b,a){var d=null==a?alert(b):prompt(b,a);return null!=d?d:"null"},"~S,~S,~A,~B");da.convertPointFromScreen=c(da,"convertPointFromScreen",function(){},"~O,JU.P3");da.drawImage=c(da,"drawImage",function(b,a,d,h,q,c,g){h=a.buf8; +c=a.buf32;var j=a.width*a.height,k=1;if(g){var l=q%2;q=Math.floor(q/2);k=Math.floor(a.width/q)}g=4*(a.width-q||d);var f=0,m=0;for(d*=4;f>16&255,h[d++]=c[f]>>8&255,h[d++]=c[f]&255,h[d++]=255,f+=k,0==++m%q&&(l&&(f+=1,h[d]=0,h[d+1]=0,h[d+2]=0,h[d+3]=0),d+=g);b.putImageData(a.imgdata,0,0)},"~O,~O,~N,~N,~N,~N,~B");n("J.awtjs2d");A(null,"J.awtjs2d.Image",["J.awtjs2d.Platform"],function(){var b=G(J.awtjs2d,"Image",null);b.getWidth=c(b,"getWidth",function(a){return a.imageWidth?a.imageWidth: +a.width},"~O");b.getHeight=c(b,"getHeight",function(a){return a.imageHeight?a.imageHeight:a.height},"~O");b.grabPixels=c(b,"grabPixels",function(a,d,h){var b=null,b=a.getImageData(0,0,d,h).data;return J.awtjs2d.Image.toIntARGB(b)},"~O,~N,~N");b.toIntARGB=c(b,"toIntARGB",function(a){for(var d=v(a.length/4),h=D(d,0),b=0,c=0;bJU.OC.urlTypeIndex(a)&&(this.fullName=JV.Viewer.jsDocumentBase+"/"+this.fullName);this.fullName=JU.PT.rep(this.fullName,"/./","/");a.substring(a.lastIndexOf("/")+1)},"~S");b.newFile=c(b,"newFile",function(a){return new J.awtjs2d.JSFile(a)},"~S");f(b,"getParentAsFile",function(){var a=this.fullName.lastIndexOf("/"); +return 0>a?null:new J.awtjs2d.JSFile(this.fullName.substring(0,a))});f(b,"getFullPath",function(){return this.fullName});f(b,"getName",function(){return this.name});f(b,"isDirectory",function(){return this.fullName.endsWith("/")});f(b,"length",function(){return 0});b.getURLContents=c(b,"getURLContents",function(a,d,h){try{var b=a.openConnection();null!=d?b.outputBytes(d):null!=h&&b.outputString(h);return b.getContents()}catch(c){if(E(c,Exception))return c.toString();throw c;}},"java.net.URL,~A,~S"); +f(b,"toString",function(){return this.fullName})});n("J.awtjs2d");var ka=G(J.awtjs2d,"JSFont",null);ka.newFont=c(ka,"newFont",function(b,a,d,h,q){b=b.equals("Monospaced")?"Courier":b.startsWith("Sans")?"Helvetica Neue, Sans-serif":"Serif";return(a?"bold ":"")+(d?"italic ":"")+h+q+" "+b},"~S,~B,~B,~N,~S");ka.getFontMetrics=c(ka,"getFontMetrics",function(b,a){a.font!=b.font&&(a.font=b.font,b.font=a.font,a._fontAscent=Math.ceil(b.fontSize),a._fontDescent=Math.ceil(0.25*b.fontSize));return a},"JU.Font,~O"); +ka.getAscent=c(ka,"getAscent",function(b){return Math.ceil(b._fontAscent)},"~O");ka.getDescent=c(ka,"getDescent",function(b){return Math.ceil(b._fontDescent)},"~O");ka.stringWidth=c(ka,"stringWidth",function(b,a,d){a.font=b.font;return Math.ceil(a.measureText(d).width)},"JU.Font,~O,~S");n("J.awtjs2d");A(["J.api.GenericMouseInterface"],"J.awtjs2d.Mouse",["JU.PT","$.V3","JU.Logger"],function(){var b=r(function(){this.manager=this.vwr=null;this.keyBuffer="";this.wheeling=this.isMouseDown=!1;this.modifiersWhenPressed10= +this.yWhenPressed=this.xWhenPressed=this.modifiersDown=0;u(this,arguments)},J.awtjs2d,"Mouse",null,J.api.GenericMouseInterface);x(b,function(a,d){this.vwr=d;this.manager=this.vwr.acm},"~N,JV.Viewer,~O");f(b,"clear",function(){});f(b,"dispose",function(){});f(b,"processEvent",function(a,d,h,b,c){507!=a&&(b=J.awtjs2d.Mouse.applyLeftMouse(b));switch(a){case 507:this.wheeled(c,d,b);break;case 501:this.xWhenPressed=d;this.yWhenPressed=h;this.modifiersWhenPressed10=b;this.pressed(c,d,h,b,!1);break;case 506:this.dragged(c, +d,h);break;case 504:this.entry(c,d,h,!1);break;case 505:this.entry(c,d,h,!0);break;case 503:this.moved(c,d,h,b);break;case 502:this.released(c,d,h,b);d==this.xWhenPressed&&(h==this.yWhenPressed&&b==this.modifiersWhenPressed10)&&this.clicked(c,d,h,b,1);break;default:return!1}return!0},"~N,~N,~N,~N,~N");f(b,"processTwoPointGesture",function(a){if(!(2>a[0].length)){var d=a[0],h=a[1],b=d[0],c=d[h.length-1];a=b[0];var g=c[0],b=b[1],c=c[1],j=JU.V3.new3(g-a,c-b,0),k=j.length(),l=h[0],f=h[h.length-1],h=l[0], +m=f[0],l=l[1],f=f[1],p=JU.V3.new3(m-h,f-l,0),z=p.length();1>k||1>z||(j.normalize(),p.normalize(),j=j.dot(p),0.8j&&(j=JU.V3.new3(h-a,l-b,0),p=JU.V3.new3(m-g,f-c,0),d=p.length()-j.length(),this.wheeled(System.currentTimeMillis(),0>d?-1:1,32)))}},"~A");c(b,"mouseClicked",function(a){this.clicked(a.getWhen(),a.getX(),a.getY(),a.getModifiers(),a.getClickCount())},"java.awt.event.MouseEvent");c(b,"mouseEntered",function(a){this.entry(a.getWhen(), +a.getX(),a.getY(),!1)},"java.awt.event.MouseEvent");c(b,"mouseExited",function(a){this.entry(a.getWhen(),a.getX(),a.getY(),!0)},"java.awt.event.MouseEvent");c(b,"mousePressed",function(a){this.pressed(a.getWhen(),a.getX(),a.getY(),a.getModifiers(),a.isPopupTrigger())},"java.awt.event.MouseEvent");c(b,"mouseReleased",function(a){this.released(a.getWhen(),a.getX(),a.getY(),a.getModifiers())},"java.awt.event.MouseEvent");c(b,"mouseDragged",function(a){a.getModifiers();this.dragged(a.getWhen(),a.getX(), +a.getY())},"java.awt.event.MouseEvent");c(b,"mouseMoved",function(a){this.moved(a.getWhen(),a.getX(),a.getY(),a.getModifiers())},"java.awt.event.MouseEvent");c(b,"mouseWheelMoved",function(a){a.consume();this.wheeled(a.getWhen(),a.getWheelRotation(),a.getModifiers())},"java.awt.event.MouseWheelEvent");c(b,"keyTyped",function(a){a.consume();if(this.vwr.menuEnabled()){var d=a.getKeyChar(),h=a.getModifiers();JU.Logger.debuggingHigh&&JU.Logger.debug("MouseManager keyTyped: "+d+" "+(0+d.charCodeAt(0))+ +" "+h);if(0!=h&&1!=h)switch(d.charCodeAt(0)){case String.fromCharCode(11):case 107:a=!this.vwr.getBooleanProperty("allowKeyStrokes");switch(h){case 2:this.vwr.setBooleanProperty("allowKeyStrokes",a);this.vwr.setBooleanProperty("showKeyStrokes",!0);break;case 10:case 1:this.vwr.setBooleanProperty("allowKeyStrokes",a),this.vwr.setBooleanProperty("showKeyStrokes",!1)}this.clearKeyBuffer();this.vwr.refresh(3,"showkey");break;case 26:case 122:switch(h){case 2:this.vwr.undoMoveAction(4165,1);break;case 3:this.vwr.undoMoveAction(4140, +1)}break;case 25:case 121:switch(h){case 2:this.vwr.undoMoveAction(4140,1)}}else this.vwr.getBooleanProperty("allowKeyStrokes")&&this.addKeyBuffer(1==a.getModifiers()?Character.toUpperCase(d):d)}},"java.awt.event.KeyEvent");c(b,"keyPressed",function(a){this.vwr.isApplet&&a.consume();this.manager.keyPressed(a.getKeyCode(),a.getModifiers())},"java.awt.event.KeyEvent");c(b,"keyReleased",function(a){a.consume();this.manager.keyReleased(a.getKeyCode())},"java.awt.event.KeyEvent");c(b,"clearKeyBuffer", +function(){0!=this.keyBuffer.length&&(this.keyBuffer="",this.vwr.getBooleanProperty("showKeyStrokes")&&this.vwr.evalStringQuietSync('!set echo _KEYSTROKES; set echo bottom left;echo ""',!0,!0))});c(b,"addKeyBuffer",function(a){10==a.charCodeAt(0)?this.sendKeyBuffer():(8==a.charCodeAt(0)?0a&&null!=this.bspts[a]&&this.bsptsValid[a]},"~N");c(b,"addTuple",function(a,d){a>=this.bspts.length&&(this.bspts=JU.AU.arrayCopyObject(this.bspts,a+1),this.bsptsValid=JU.AU.arrayCopyBool(this.bsptsValid,a+1));var h=this.bspts[a];null==h&&(h=this.bspts[a]=new J.bspt.Bspt(this.dimMax,a));h.addTuple(d)}, +"~N,JU.P3");c(b,"stats",function(){for(var a=0;aa)return this.getNewCubeIterator(-1-a);a>=this.cubeIterators.length&&(this.cubeIterators=JU.AU.arrayCopyObject(this.cubeIterators,a+1));null==this.cubeIterators[a]&&null!=this.bspts[a]&&(this.cubeIterators[a]=this.getNewCubeIterator(a));this.cubeIterators[a].set(this.bspts[a]);return this.cubeIterators[a]},"~N");c(b,"getNewCubeIterator",function(a){return this.bspts[a].allocateCubeIterator()}, +"~N");c(b,"initialize",function(a,d,h){null!=this.bspts[a]&&this.bspts[a].reset();for(var b=h.nextSetBit(0);0<=b;b=h.nextSetBit(b+1))this.addTuple(a,d[b]);this.bsptsValid[a]=!0},"~N,~A,JU.BS")});n("J.bspt");A(null,"J.bspt.Bspt",["J.bspt.CubeIterator","$.Leaf"],function(){var b=r(function(){this.index=this.dimMax=this.treeDepth=0;this.eleRoot=null;u(this,arguments)},J.bspt,"Bspt",null);x(b,function(a,d){this.dimMax=a;this.index=d;this.reset()},"~N,~N");c(b,"reset",function(){this.eleRoot=new J.bspt.Leaf(this, +null,0);this.treeDepth=1});c(b,"addTuple",function(a){this.eleRoot=this.eleRoot.addTuple(0,a)},"JU.T3");c(b,"stats",function(){});c(b,"allocateCubeIterator",function(){return new J.bspt.CubeIterator(this)})});n("J.bspt");var na=r(function(){this.stack=this.bspt=null;this.leafIndex=this.sp=0;this.leaf=null;this.dz=this.dy=this.dx=this.cz=this.cy=this.cx=this.radius=0;this.tHemisphere=!1;u(this,arguments)},J.bspt,"CubeIterator",null);x(na,function(b){this.set(b)},"J.bspt.Bspt");c(na,"set",function(b){this.bspt= +b;this.stack=Array(b.treeDepth)},"J.bspt.Bspt");c(na,"initialize",function(b,a,d){this.radius=a;this.tHemisphere=!1;this.cx=b.x;this.cy=b.y;this.cz=b.z;this.leaf=null;this.stack.length=b.minLeft)d>=b.minRight&& +a<=b.maxRight&&(this.stack[this.sp++]=b.eleRight),b=b.eleLeft;else if(d>=b.minRight&&a<=b.maxRight)b=b.eleRight;else{if(0==this.sp)return;b=this.stack[--this.sp]}}this.leaf=b;this.leafIndex=0}});c(na,"isWithinRadius",function(b){this.dx=b.x-this.cx;return(!this.tHemisphere||0<=this.dx)&&(this.dx=Math.abs(this.dx))<=this.radius&&(this.dy=Math.abs(b.y-this.cy))<=this.radius&&(this.dz=Math.abs(b.z-this.cz))<=this.radius},"JU.T3");n("J.bspt");r(function(){this.bspt=null;this.count=0;u(this,arguments)}, +J.bspt,"Element",null);n("J.bspt");A(["J.bspt.Element"],"J.bspt.Leaf",["J.bspt.Node"],function(){var b=r(function(){this.tuples=null;u(this,arguments)},J.bspt,"Leaf",J.bspt.Element);x(b,function(a,d,h){this.bspt=a;this.count=0;this.tuples=Array(2);if(null!=d){for(a=h;2>a;++a)this.tuples[this.count++]=d.tuples[a],d.tuples[a]=null;d.count=h}},"J.bspt.Bspt,J.bspt.Leaf,~N");c(b,"sort",function(a){for(var d=this.count;0<--d;)for(var h=this.tuples[d],b=J.bspt.Node.getDimensionValue(h,a),c=d;0<=--c;){var g= +this.tuples[c],j=J.bspt.Node.getDimensionValue(g,a);j>b&&(this.tuples[d]=g,this.tuples[c]=h,h=g,b=j)}},"~N");f(b,"addTuple",function(a,d){return 2>this.count?(this.tuples[this.count++]=d,this):(new J.bspt.Node(this.bspt,a,this)).addTuple(a,d)},"~N,JU.T3")});n("J.bspt");A(["J.bspt.Element"],"J.bspt.Node",["J.bspt.Leaf"],function(){var b=r(function(){this.maxLeft=this.minLeft=this.dim=0;this.eleLeft=null;this.maxRight=this.minRight=0;this.eleRight=null;u(this,arguments)},J.bspt,"Node",J.bspt.Element); +x(b,function(a,d,h){this.bspt=a;d==a.treeDepth&&(a.treeDepth=d+1);if(2!=h.count)throw new NullPointerException;this.dim=d%a.dimMax;h.sort(this.dim);a=new J.bspt.Leaf(a,h,1);this.minLeft=J.bspt.Node.getDimensionValue(h.tuples[0],this.dim);this.maxLeft=J.bspt.Node.getDimensionValue(h.tuples[h.count-1],this.dim);this.minRight=J.bspt.Node.getDimensionValue(a.tuples[0],this.dim);this.maxRight=J.bspt.Node.getDimensionValue(a.tuples[a.count-1],this.dim);this.eleLeft=h;this.eleRight=a;this.count=2},"J.bspt.Bspt,~N,J.bspt.Leaf"); +c(b,"addTuple",function(a,d){var h=J.bspt.Node.getDimensionValue(d,this.dim);++this.count;hthis.minRight?0:h==this.maxLeft?h==this.minRight?this.eleLeft.countthis.maxLeft&&(this.maxLeft=h),this.eleLeft=this.eleLeft.addTuple(a+1,d)):(hthis.maxRight&&(this.maxRight=h),this.eleRight=this.eleRight.addTuple(a+1,d));return this},"~N,JU.T3"); +b.getDimensionValue=c(b,"getDimensionValue",function(a,d){null==a&&System.out.println("bspt.Node ???");switch(d){case 0:return a.x;case 1:return a.y;default:return a.z}},"JU.T3,~N")});n("J.c");A(["java.lang.Enum"],"J.c.CBK",["JU.SB"],function(){var b=G(J.c,"CBK",Enum);b.getCallback=c(b,"getCallback",function(a){a=a.toUpperCase();var d=a.indexOf("CALLBACK");0a.indexOf("_"))for(var d, +h=0,b=J.c.PAL.values();ha.indexOf("_"))for(var d,h=0,b=J.c.PAL.values();hthis.id?"":a&&this.isProtein()?"protein":this.name()},"~B");c(b,"isProtein",function(){return 0<=this.id&&3>=this.id||7<=this.id});B(b,"NOT",0,[-1,4286611584]);B(b,"NONE",1,[0,4294967295]);B(b,"TURN",2,[1,4284514559]);B(b,"SHEET",3,[2,4294952960]);B(b,"HELIX",4,[3,4294901888]);B(b,"DNA",5,[4,4289593598]); +B(b,"RNA",6,[5,4294771042]);B(b,"CARBOHYDRATE",7,[6,4289111802]);B(b,"HELIX310",8,[7,4288675968]);B(b,"HELIXALPHA",9,[8,4294901888]);B(b,"HELIXPI",10,[9,4284481664]);B(b,"ANNOTATION",11,[-2,0])});n("J.c");A(["java.lang.Enum"],"J.c.VDW",null,function(){var b=r(function(){this.pt=0;this.type2=this.type=null;u(this,arguments)},J.c,"VDW",Enum);x(b,function(a,d,h){this.pt=a;this.type=d;this.type2=h},"~N,~S,~S");c(b,"getVdwLabel",function(){return null==this.type?this.type2:this.type});b.getVdwType=c(b, +"getVdwType",function(a){if(null!=a)for(var d,h=0,b=J.c.VDW.values();h=c)this.line3d.plotLineDeltaOld(z.getColorArgbOrGray(a),z.getColorArgbOrGray(d),g,j,k,this.dxB,this.dyB,this.dzB,this.clipped);else{l=0==h&&(this.clipped||2==b||0==b);this.diameter=c;this.xA=g;this.yA=j;this.zA=k;this.endcaps=b;this.shadesA=z.getShades(this.colixA=a);this.shadesB=z.getShades(this.colixB=d);this.calcArgbEndcap(!0, +!1);this.calcCosSin(this.dxB,this.dyB,this.dzB);this.calcPoints(3,!1);this.interpolate(0,1,this.xyzfRaster,this.xyztRaster);this.interpolate(1,2,this.xyzfRaster,this.xyztRaster);k=this.xyzfRaster;2==b&&this.renderFlatEndcap(!0,!1,k);z.setZMargin(5);a=z.width;d=z.zbuf;c=k[0];g=k[1];j=k[2];k=k[3];f=z.pixel;for(m=this.rasterCount;0<=--m;)y=k[m]>>8,H=y>>1,M=c[m],p=g[m],n=j[m],this.endCapHidden&&0!=this.argbEndcap&&(this.clipped?(z.plotPixelClippedArgb(this.argbEndcap,this.xEndcap+M,this.yEndcap+p,this.zEndcap- +n-1,a,d,f),z.plotPixelClippedArgb(this.argbEndcap,this.xEndcap-M,this.yEndcap-p,this.zEndcap+n-1,a,d,f)):(z.plotPixelUnclipped(this.argbEndcap,this.xEndcap+M,this.yEndcap+p,this.zEndcap-n-1,a,d,f),z.plotPixelUnclipped(this.argbEndcap,this.xEndcap-M,this.yEndcap-p,this.zEndcap+n-1,a,d,f))),this.line3d.plotLineDeltaAOld(this.shadesA,this.shadesB,h,y,this.xA+M,this.yA+p,this.zA-n,this.dxB,this.dyB,this.dzB,this.clipped),l&&this.line3d.plotLineDeltaOld(this.shadesA[H],this.shadesB[H],this.xA-M,this.yA- +p,this.zA+n,this.dxB,this.dyB,this.dzB,this.clipped);z.setZMargin(0);3==b&&this.renderSphericalEndcaps()}},"~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");c(b,"renderBitsFloat",function(a,d,h,b,c,g,j){var k=this.g3d;null==this.ptA0&&(this.ptA0=new JU.P3,this.ptB0=new JU.P3);this.ptA0.setT(g);var l=v(c/2)+1,f=Math.round(g.x),m=Math.round(g.y),p=Math.round(g.z),z=Math.round(j.x),y=Math.round(j.y),H=Math.round(j.z),M=k.clipCode3(f-l,m-l,p-l),f=k.clipCode3(f+l,m+l,p+l),m=k.clipCode3(z-l,y-l,H-l),l=k.clipCode3(z+ +l,y+l,H+l),z=M|f|m|l;this.clipped=0!=z;if(!(-1==z||0!=(M&l&f&m))){this.dxBf=j.x-g.x;this.dyBf=j.y-g.y;this.dzBf=j.z-g.z;0>8,f=H>>1,m=j[y],p=M[y],n=l[y];this.endCapHidden&&0!=this.argbEndcap&&(this.clipped?(k.plotPixelClippedArgb(this.argbEndcap,this.xEndcap+m,this.yEndcap+p,this.zEndcap-n-1,a,d,c),k.plotPixelClippedArgb(this.argbEndcap,this.xEndcap-m,this.yEndcap-p,this.zEndcap+n-1,a,d,c)):(k.plotPixelUnclipped(this.argbEndcap, +this.xEndcap+m,this.yEndcap+p,this.zEndcap-n-1,a,d,c),k.plotPixelUnclipped(this.argbEndcap,this.xEndcap-m,this.yEndcap-p,this.zEndcap+n-1,a,d,c)));this.ptA0.set(this.xA+m,this.yA+p,this.zA-n);this.ptB0.setT(this.ptA0);this.ptB0.x+=this.dxB;this.ptB0.y+=this.dyB;this.ptB0.z+=this.dzB;this.line3d.plotLineDeltaABitsFloat(this.shadesA,this.shadesB,H,this.ptA0,this.ptB0,h,this.clipped);g&&(this.ptA0.set(this.xA-m,this.yA-p,this.zA+n),this.ptB0.setT(this.ptA0),this.ptB0.x+=this.dxB,this.ptB0.y+=this.dyB, +this.ptB0.z+=this.dzB,this.line3d.plotLineDeltaABitsFloat(this.shadesA,this.shadesB,f,this.ptA0,this.ptB0,h,this.clipped))}k.setZMargin(0);3==b&&this.renderSphericalEndcaps();this.xAf+=this.dxBf;this.yAf+=this.dyBf;this.zAf+=this.dzBf}},"~N,~N,~N,~N,~N,JU.P3,JU.P3");c(b,"renderBits",function(a,d,h,b,c,g,j){var k=this.g3d;if(0==c||1==c)this.line3d.plotLineBits(k.getColorArgbOrGray(a),k.getColorArgbOrGray(d),g,j,0,0,!1);else{this.ptA0i.setT(g);var l=v(c/2)+1,f=g.x,m=g.y,p=g.z,z=j.x,y=j.y,H=j.z,M=k.clipCode3(f- +l,m-l,p-l),f=k.clipCode3(f+l,m+l,p+l),m=k.clipCode3(z-l,y-l,H-l),l=k.clipCode3(z+l,y+l,H+l),z=M|f|m|l;this.clipped=0!=z;if(!(-1==z||0!=(M&l&f&m))){this.dxBf=j.x-g.x;this.dyBf=j.y-g.y;this.dzBf=j.z-g.z;0>8,f=H>>1,m=j[y],p=M[y],n=l[y];this.endCapHidden&&0!=this.argbEndcap&&(this.clipped?(k.plotPixelClippedArgb(this.argbEndcap,this.xEndcap+m,this.yEndcap+p,this.zEndcap-n-1,a,d,c),k.plotPixelClippedArgb(this.argbEndcap, +this.xEndcap-m,this.yEndcap-p,this.zEndcap+n-1,a,d,c)):(k.plotPixelUnclipped(this.argbEndcap,this.xEndcap+m,this.yEndcap+p,this.zEndcap-n-1,a,d,c),k.plotPixelUnclipped(this.argbEndcap,this.xEndcap-m,this.yEndcap-p,this.zEndcap+n-1,a,d,c)));this.ptA0i.set(this.xA+m,this.yA+p,this.zA-n);this.ptB0i.setT(this.ptA0i);this.ptB0i.x+=this.dxB;this.ptB0i.y+=this.dyB;this.ptB0i.z+=this.dzB;this.line3d.plotLineDeltaABitsInt(this.shadesA,this.shadesB,H,this.ptA0i,this.ptB0i,h,this.clipped);g&&(this.ptA0i.set(this.xA- +m,this.yA-p,this.zA+n),this.ptB0i.setT(this.ptA0i),this.ptB0i.x+=this.dxB,this.ptB0i.y+=this.dyB,this.ptB0i.z+=this.dzB,this.line3d.plotLineDeltaABitsInt(this.shadesA,this.shadesB,f,this.ptA0i,this.ptB0i,h,this.clipped))}k.setZMargin(0);3==b&&this.renderSphericalEndcaps();this.xAf+=this.dxBf;this.yAf+=this.dyBf;this.zAf+=this.dzBf}}},"~N,~N,~N,~N,~N,JU.P3i,JU.P3i");c(b,"renderConeOld",function(a,d,h,b,c,g,j,k,l,f,m){this.dxBf=j-(this.xAf=b);this.dyBf=k-(this.yAf=c);this.dzBf=l-(this.zAf=g);this.xA= +v(Math.floor(this.xAf));this.yA=v(Math.floor(this.yAf));this.zA=v(Math.floor(this.zAf));this.dxB=v(Math.floor(this.dxBf));this.dyB=v(Math.floor(this.dyBf));this.dzB=v(Math.floor(this.dzBf));this.xTip=j;this.yTip=k;this.zTip=l;this.shadesA=this.g3d.getShades(this.colixA=a);var p=this.shader.getShadeIndex(this.dxB,this.dyB,-this.dzB);a=this.g3d;b=a.pixel;c=a.width;g=a.zbuf;a.plotPixelClippedArgb(this.shadesA[p],F(j),F(k),F(l),c,g,b);this.diameter=h;if(1>=h)1==h&&this.line3d.plotLineDeltaOld(this.colixA, +this.colixA,this.xA,this.yA,this.zA,this.dxB,this.dyB,this.dzB,this.clipped);else{this.endcaps=d;this.calcArgbEndcap(!1,!0);this.generateBaseEllipsePrecisely(m);!m&&2==this.endcaps&&this.renderFlatEndcap(!1,!0,this.xyzfRaster);a.setZMargin(5);d=this.xyztRaster[0];h=this.xyztRaster[1];j=this.xyztRaster[2];k=this.xyzfRaster[3];l=this.shadesA;for(var p=this.endCapHidden&&0!=this.argbEndcap,z=this.rasterCount;0<=--z;){var y=d[z],H=h[z],M=j[z],n=k[z]>>8,u=this.xAf+y,r=this.yAf+H,w=this.zAf-M,y=this.xAf- +y,H=this.yAf-H,M=this.zAf+M,B=l[0];p&&(a.plotPixelClippedArgb(this.argbEndcap,F(u),F(r),F(w),c,g,b),a.plotPixelClippedArgb(this.argbEndcap,F(y),F(H),F(M),c,g,b));0!=B&&(this.line3d.plotLineDeltaAOld(l,l,0,n,F(u),F(r),F(w),v(Math.ceil(this.xTip-u)),v(Math.ceil(this.yTip-r)),v(Math.ceil(this.zTip-w)),!0),f&&(this.line3d.plotLineDeltaAOld(l,l,0,n,F(u),F(r)+1,F(w),v(Math.ceil(this.xTip-u)),v(Math.ceil(this.yTip-r))+1,v(Math.ceil(this.zTip-w)),!0),this.line3d.plotLineDeltaAOld(l,l,0,n,F(u)+1,F(r),F(w), +v(Math.ceil(this.xTip-u))+1,v(Math.ceil(this.yTip-r)),v(Math.ceil(this.zTip-w)),!0)),!m&&!(2!=this.endcaps&&0=d[0].length)for(;this.rasterCount>=d[0].length;){for(var b=4;0<=--b;)d[b]=JU.AU.doubleLengthI(d[b]);h[3]=JU.AU.doubleLengthF(h[3])}if(a)for(;this.rasterCount>=h[0].length;)for(b=3;0<=--b;)h[b]=JU.AU.doubleLengthF(h[b]);return this.rasterCount++},"~B,~A,~A");c(b,"interpolate",function(a,d,h,b){var c=h[0],g=h[1],c=c[d]-c[a];0>c&&(c=-c);g=g[d]-g[a];0>g&&(g=-g);if(!(1>=c+g)){for(var j=this.allocRaster(!1,h,b),c=h[0],g=h[1], +k=h[3],l=b[3][a],f=b[3][d],m=4;0<=--m;){var p=(l+f)/2;this.calcRotatedPoint(p,j,!1,h,b);if(c[j]==c[a]&&g[j]==g[a])k[a]=k[a]+k[j]>>>1,l=p;else if(c[j]==c[d]&&g[j]==g[d])k[d]=k[d]+k[j]>>>1,f=p;else{this.interpolate(a,j,h,b);this.interpolate(j,d,h,b);return}}c[j]=c[a];g[j]=g[d]}},"~N,~N,~A,~A");c(b,"interpolatePrecisely",function(a,d,h,b){var c=b[0],g=b[1],j=v(Math.floor(c[d]))-v(Math.floor(c[a]));0>j&&(j=-j);g=v(Math.floor(g[d]))-v(Math.floor(g[a]));0>g&&(g=-g);if(!(1>=j+g)){for(var g=b[3],j=g[a],k= +g[d],l=this.allocRaster(!0,h,b),c=b[0],g=b[1],f=h[3],m=4;0<=--m;){var p=(j+k)/2;this.calcRotatedPoint(p,l,!0,h,b);if(v(Math.floor(c[l]))==v(Math.floor(c[a]))&&v(Math.floor(g[l]))==v(Math.floor(g[a])))f[a]=f[a]+f[l]>>>1,j=p;else if(v(Math.floor(c[l]))==v(Math.floor(c[d]))&&v(Math.floor(g[l]))==v(Math.floor(g[d])))f[d]=f[d]+f[l]>>>1,k=p;else{this.interpolatePrecisely(a,l,h,b);this.interpolatePrecisely(l,d,h,b);return}}c[l]=c[a];g[l]=g[d]}},"~N,~N,~A,~A");c(b,"renderFlatEndcap",function(a,d,h){var b, +c;if(d){if(0==this.dzBf||0==this.colixEndcap||!this.g3d.setC(this.colixEndcap))return;d=this.xAf;b=this.yAf;c=this.zAf;a&&0>this.dzBf&&(d+=this.dxBf,b+=this.dyBf,c+=this.dzBf);d=F(d);b=F(b);c=F(c)}else{if(0==this.dzB||0==this.colixEndcap||!this.g3d.setC(this.colixEndcap))return;d=this.xAend;b=this.yAend;c=this.zAend;a&&0>this.dzB&&(d+=this.dxB,b+=this.dyB,c+=this.dzB)}var g=h[1][0];a=h[1][0];var j=0,k=0,l=h[0],f=h[1];h=h[2];for(var m=this.rasterCount;0<--m;){var p=f[m];pa?a=p:(p=-p,pa&&(a=p))}for(p=g;p<=a;++p){for(var g=2147483647,z=-2147483648,m=this.rasterCount;0<=--m;){if(f[m]==p){var y=l[m];yz&&(z=y,k=h[m])}f[m]==-p&&(y=-l[m],yz&&(z=y,k=-h[m]))}m=z-g+1;this.g3d.setColorNoisy(this.endcapShadeIndex);this.g3d.plotPixelsClippedRaster(m,d+g,b+p,c-j-1,c-k-1,null,null)}},"~B,~B,~A");c(b,"renderSphericalEndcaps",function(){0!=this.colixA&&this.g3d.setC(this.colixA)&&this.g3d.fillSphereXYZ(this.diameter,this.xA,this.yA,this.zA+1);0!=this.colixB&& +this.g3d.setC(this.colixB)&&this.g3d.fillSphereXYZ(this.diameter,this.xA+this.dxB,this.yA+this.dyB,this.zA+this.dzB+1)});c(b,"calcArgbEndcap",function(a,d){this.tEvenDiameter=0==(this.diameter&1);this.radius=this.diameter/2;this.radius2=this.radius*this.radius;this.endCapHidden=!1;var h=d?this.dzBf:this.dzB;if(!(3==this.endcaps||0==h)){this.xEndcap=this.xAend=this.xA;this.yEndcap=this.yAend=this.yA;this.zEndcap=this.zAend=this.zA;var b=d?this.dxBf:this.dxB,c=d?this.dyBf:this.dyB;0<=h||!a?(this.endcapShadeIndex= +this.shader.getShadeIndex(-b,-c,h),0==this.colixA?(this.xAend+=v(this.dxB/2),this.yAend+=v(this.dyB/2),this.zAend+=v(this.dzB/2),this.colixEndcap=this.colixB):this.colixEndcap=this.colixA):(this.endcapShadeIndex=this.shader.getShadeIndex(b,c,-h),0==this.colixB?(this.colixEndcap=this.colixA,this.xAend-=v(this.dxB/2),this.yAend-=v(this.dyB/2),this.zAend-=v(this.dzB/2)):(this.colixEndcap=this.colixB,this.xEndcap+=this.dxB,this.yEndcap+=this.dyB,this.zEndcap+=this.dzB));h=this.colixEndcap==this.colixA? +this.shadesA:this.shadesB;56>24&15){case 0:h=b;a=c;break;case 1:h=(b<<2)+(b<<1)+b+h>>3&16711935;a=(c<<2)+ +(c<<1)+c+a>>3&65280;break;case 2:h=(b<<1)+b+h>>2&16711935;a=(c<<1)+c+a>>2&65280;break;case 3:h=(b<<2)+b+(h<<1)+h>>3&16711935;a=(c<<2)+c+(a<<1)+a>>3&65280;break;case 4:h=h+b>>1&16711935;a=a+c>> +1&65280;break;case 5:h=(b<<1)+b+(h<<2)+h>>3&16711935;a=(c<<1)+c+(a<<2)+a>>3&65280;break;case 6:h=(h<<1)+h+b>>2&16711935;a=(a<<1)+a+c>>2&65280;break;case 7:h=(h<<2)+(h<<1)+h+b>>3&16711935,a=(a<<2)+(a<<1)+a+c>>3&65280}return 4278190080|h|a},"~N,~N,~N");f(b,"getScreenImage",function(a){var d=this.platform.bufferedImage;a&&this.releaseBuffers();return d},"~B");f(b,"applyAnaglygh",function(a,d){switch(a){case J.c.STER.REDCYAN:for(var h=this.anaglyphLength;0<=--h;){var b=this.anaglyphChannelBytes[h]&255; +this.pbuf[h]=this.pbuf[h]&4294901760|b<<8|b}break;case J.c.STER.CUSTOM:for(var b=d[0],c=d[1]&16777215,h=this.anaglyphLength;0<=--h;){var g=this.anaglyphChannelBytes[h]&255,g=(g|(g|g<<8)<<8)&c;this.pbuf[h]=this.pbuf[h]&b|g}break;case J.c.STER.REDBLUE:for(h=this.anaglyphLength;0<=--h;)b=this.anaglyphChannelBytes[h]&255,this.pbuf[h]=this.pbuf[h]&4294901760|b;break;case J.c.STER.REDGREEN:for(h=this.anaglyphLength;0<=--h;)this.pbuf[h]=this.pbuf[h]&4294901760|(this.anaglyphChannelBytes[h]&255)<<8}},"J.c.STER,~A"); +f(b,"snapshotAnaglyphChannelBytes",function(){if(this.currentlyRendering)throw new NullPointerException;this.anaglyphLength=this.windowWidth*this.windowHeight;if(null==this.anaglyphChannelBytes||this.anaglyphChannelBytes.length!=this.anaglyphLength)this.anaglyphChannelBytes=O(this.anaglyphLength,0);for(var a=this.anaglyphLength;0<=--a;)this.anaglyphChannelBytes[a]=this.pbuf[a]});f(b,"releaseScreenImage",function(){this.platform.clearScreenBufferThreaded()});f(b,"haveTranslucentObjects",function(){return this.$haveTranslucentObjects}); +f(b,"setSlabAndZShade",function(a,d,h,b,c){this.setSlab(a);this.setDepth(d);h>2&1061109567)<<2,j=j+((j&3233857728)>>6),k=0,l=0,g=h;0<=--g;l+=c)for(h=d;0<=--h;++k){var f=(a[l]>>2&1061109567)+(a[l++ +c]>>2&1061109567)+(a[l]>>2&1061109567)+(a[l++ +c]>>2&1061109567),f=f+((f&3233857728)>>6);f==j&&(f=b);a[k]=f&16777215|4278190080}},"~A,~N,~N,~N");b.downsample2dZ=c(b,"downsample2dZ", +function(a,d,h,b,c){for(var g=h<<1,j=0,k=0;0<=--b;k+=g)for(var l=h;0<=--l;++j,++k){var f=Math.min(d[k],d[k+g]),f=Math.min(f,d[++k]),f=Math.min(f,d[k+g]);2147483647!=f&&(f>>=1);d[j]=a[j]==c?2147483647:f}},"~A,~A,~N,~N,~N");c(b,"hasContent",function(){return this.platform.hasContent()});f(b,"setC",function(a){var d=JU.C.isColixLastAvailable(a);if(!d&&a==this.colixCurrent&&-1==this.currentShadeIndex)return!0;var h=a&30720;if(16384==h)return!1;this.renderLow&&(h=0);var b=0!=h,c=b&&30720==h;this.setScreened(c); +if(!this.checkTranslucent(b&&!c))return!1;this.isPass2?(this.translucencyMask=h<<13|16777215,this.translucencyLog=h>>11):this.translucencyLog=0;this.colixCurrent=a;d&&this.argbCurrent!=this.lastRawColor&&(0==this.argbCurrent&&(this.argbCurrent=4294967295),this.lastRawColor=this.argbCurrent,this.shader.setLastColix(this.argbCurrent,this.inGreyscaleMode));this.shadesCurrent=this.getShades(a);this.currentShadeIndex=-1;this.setColor(this.getColorArgbOrGray(a));return!0},"~N");c(b,"setScreened",function(a){this.wasScreened!= +a&&((this.wasScreened=a)?(null==this.pixelScreened&&(this.pixelScreened=new J.g3d.PixelatorScreened(this,this.pixel0)),null==this.pixel.p0?this.pixel=this.pixelScreened:this.pixel.p0=this.pixelScreened):null==this.pixel.p0||this.pixel===this.pixelScreened?this.pixel=this.isPass2?this.pixelT0:this.pixel0:this.pixel.p0=this.isPass2?this.pixelT0:this.pixel0);return this.pixel},"~B");f(b,"drawFilledCircle",function(a,d,h,b,c,g){if(!this.isClippedZ(g)){var j=v((h+1)/2),j=b=this.width||c= +this.height;if(!j||!this.isClippedXY(h,b,c))0!=a&&this.setC(a)&&(j?this.isClippedXY(h,b,c)||this.circle3d.plotCircleCenteredClipped(b,c,g,h):this.circle3d.plotCircleCenteredUnclipped(b,c,g,h)),0!=d&&this.setC(d)&&(j?this.circle3d.plotFilledCircleCenteredClipped(b,c,g,h):this.circle3d.plotFilledCircleCenteredUnclipped(b,c,g,h))}},"~N,~N,~N,~N,~N,~N");f(b,"volumeRender4",function(a,d,h,b){if(1==a)this.plotPixelClippedArgb(this.argbCurrent,d,h,b,this.width,this.zbuf,this.pixel);else if(!this.isClippedZ(b)){var c= +v((a+1)/2),c=d=this.width||h=this.height;if(!c||!this.isClippedXY(a,d,h))c?this.circle3d.plotFilledCircleCenteredClipped(d,h,b,a):this.circle3d.plotFilledCircleCenteredUnclipped(d,h,b,a)}},"~N,~N,~N,~N");f(b,"fillSphereXYZ",function(a,d,h,b){switch(a){case 1:this.plotPixelClippedArgb(this.argbCurrent,d,h,b,this.width,this.zbuf,this.pixel);return;case 0:return}a<=(this.antialiasThisFrame?2E3:1E3)&&this.sphere3d.render(this.shadesCurrent,a,d,h,b,null,null,null,-1,null)},"~N,~N,~N,~N"); +f(b,"volumeRender",function(a){a?(this.saveAmbient=this.getAmbientPercent(),this.saveDiffuse=this.getDiffusePercent(),this.setAmbientPercent(100),this.setDiffusePercent(0),this.addRenderer(1073741880)):(this.setAmbientPercent(this.saveAmbient),this.setDiffusePercent(this.saveDiffuse))},"~B");f(b,"fillSphereI",function(a,d){this.fillSphereXYZ(a,d.x,d.y,d.z)},"~N,JU.P3i");f(b,"fillSphereBits",function(a,d){this.fillSphereXYZ(a,Math.round(d.x),Math.round(d.y),Math.round(d.z))},"~N,JU.P3");f(b,"fillEllipsoid", +function(a,d,h,b,c,g,j,k,l,f,m){switch(g){case 1:this.plotPixelClippedArgb(this.argbCurrent,h,b,c,this.width,this.zbuf,this.pixel);return;case 0:return}g<=(this.antialiasThisFrame?2E3:1E3)&&this.sphere3d.render(this.shadesCurrent,g,h,b,c,j,k,l,f,m)},"JU.P3,~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A");f(b,"drawRect",function(a,d,h,b,c,g){if(!(0!=b&&this.isClippedZ(b))){b=c-1;g-=1;c=a+b;var j=d+g;0<=d&&db&&(a+=b,b=-b);0>a&&(b+=a,a=0);a+b>=this.width&&(b=this.width-1-a);var c=this.pixel,g=this.argbCurrent;a+=this.width*d;for(d=0;d<=b;d++)hb&&(d+=b,b=-b);0>d&&(b+=d,d=0);d+b>=this.height&&(b=this.height-1-d);a+=this.width*d;d=this.pixel;for(var c=this.argbCurrent,g=0;g<=b;g++)ha){c+=a;if(0>=c)return;a=0}if(a+c>b&&(c=b-a,0>=c))return;if(0>d){g+=d;if(0>=g)return;d=0}d+g>this.height&&(g=this.height-d);var j=this.argbCurrent;this.isAntialiased()&&(j=J.g3d.Graphics3D.fixTextImageRGB(j));for(var k=this.zbuf,l=this.pixel;0<=--g;)this.plotPixelsUnclippedCount(j,c,a,d++,h,b,k,l)}},"~N,~N,~N,~N,~N,~N");f(b,"drawString",function(a,d,h,b,c,g,j){this.currentShadeIndex= +0;null!=a&&(this.isClippedZ(g)||this.drawStringNoSlab(a,d,h,b,c,j))},"~S,JU.Font,~N,~N,~N,~N,~N");f(b,"drawStringNoSlab",function(a,d,h,b,c,g){if(null!=a){null==this.strings&&(this.strings=Array(10));this.stringCount==this.strings.length&&(this.strings=JU.AU.doubleLength(this.strings));var j=new J.g3d.TextString;j.setText(a,null==d?this.currentFont:this.currentFont=d,this.argbCurrent,JU.C.isColixTranslucent(g)?this.getColorArgbOrGray(g)&16777215|(g&30720)<<13:0,h,b,c);this.strings[this.stringCount++]= +j}},"~S,JU.Font,~N,~N,~N,~N");f(b,"renderAllStrings",function(a){if(null!=this.strings){2<=this.stringCount&&(null==J.g3d.Graphics3D.sort&&(J.g3d.Graphics3D.sort=new J.g3d.TextString),java.util.Arrays.sort(this.strings,J.g3d.Graphics3D.sort));for(var d=0;d=a+j||a>=this.width||0>=d+k||d>=this.height))if(b=this.apiPlatform.drawImageToBuffer(null, +this.platform.offscreenImage,b,j,k,l?g:0),null!=b){var l=this.zbuf,f=this.width,m=this.pixel,p=this.height,z=this.translucencyLog;if(null==c&&0<=a&&a+j<=f&&0<=d&&d+k<=p){var y=0,H=0;for(a=d*f+a;yb||(this.plotPoints(a,d,c,g),this.plotPoints(a,d,c,g));else this.plotPoints(a,d,0,0)},"~N,~A,~N");f(b,"drawDashedLineBits",function(a,d,h,b){this.isAntialiased()&&(a+=a,d+=d);this.setScreeni(h,this.sA);this.setScreeni(b,this.sB); +this.drawLineABBits(a,d,!0)},"~N,~N,JU.P3,JU.P3");c(b,"drawLineABBits",function(a,d,h){this.line3d.plotLineBits(this.argbCurrent,this.argbCurrent,this.sA,this.sB,a,d,h);Math.abs(this.sA.x-this.sB.x) +this.ht3)){var m=0;this.currentShadeIndex=0;this.setC(d)||(d=0);this.wasScreened&&(m=2);this.setC(a)||(a=0);this.wasScreened&&(m+=1);0==a&&0==d||this.cylinder3d.renderOld(a,d,m,h,b,c,g,j,k,l,f)}},"~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");f(b,"fillCylinderScreen3I",function(a,d,h,b){d<=this.ht3&&this.cylinder3d.renderOld(this.colixCurrent,this.colixCurrent,0,a,d,F(h.x),F(h.y),F(h.z),F(b.x),F(b.y),F(b.z))},"~N,~N,JU.P3,JU.P3,JU.P3,JU.P3,~N");f(b,"fillCylinder",function(a,d,h,b){d<=this.ht3&&this.cylinder3d.renderOld(this.colixCurrent, +this.colixCurrent,0,a,d,h.x,h.y,h.z,b.x,b.y,b.z)},"~N,~N,JU.P3i,JU.P3i");f(b,"fillCylinderBits",function(a,d,h,b){d<=this.ht3&&(1!=h.z&&1!=b.z)&&(0==d||1==d?(this.setScreeni(h,this.sA),this.setScreeni(b,this.sB),this.line3d.plotLineBits(this.getColorArgbOrGray(this.colixCurrent),this.getColorArgbOrGray(this.colixCurrent),this.sA,this.sB,0,0,!1)):this.cylinder3d.renderBitsFloat(this.colixCurrent,this.colixCurrent,0,a,d,h,b))},"~N,~N,JU.P3,JU.P3");f(b,"fillCylinderBits2",function(a,d,h,b,c,g){if(!(b> +this.ht3)){var j=0;this.currentShadeIndex=0;this.setC(d)||(d=0);this.wasScreened&&(j=2);this.setC(a)||(a=0);this.wasScreened&&(j+=1);0==a&&0==d||(this.setScreeni(c,this.sA),this.setScreeni(g,this.sB),this.cylinder3d.renderBits(a,d,j,h,b,this.sA,this.sB))}},"~N,~N,~N,~N,JU.P3,JU.P3");f(b,"fillConeScreen3f",function(a,d,h,b,c){d<=this.ht3&&this.cylinder3d.renderConeOld(this.colixCurrent,a,d,h.x,h.y,h.z,b.x,b.y,b.z,!0,c)},"~N,~N,JU.P3,JU.P3,~B");f(b,"drawHermite4",function(a,d,h,b,c){this.hermite3d.renderHermiteRope(!1, +a,0,0,0,d,h,b,c)},"~N,JU.P3,JU.P3,JU.P3,JU.P3");f(b,"drawHermite7",function(a,d,h,b,c,g,j,k,l,f,m,p,z){if(0==z)this.hermite3d.renderHermiteRibbon(a,d,h,b,c,g,j,k,l,f,m,p,0);else{this.hermite3d.renderHermiteRibbon(a,d,h,b,c,g,j,k,l,f,m,p,1);var y=this.colixCurrent;this.setC(z);this.hermite3d.renderHermiteRibbon(a,d,h,b,c,g,j,k,l,f,m,p,-1);this.setC(y)}},"~B,~B,~N,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,~N,~N");f(b,"fillHermite",function(a,d,h,b,c,g,j,k){this.hermite3d.renderHermiteRope(!0, +a,d,h,b,c,g,j,k)},"~N,~N,~N,~N,JU.P3,JU.P3,JU.P3,JU.P3");f(b,"drawTriangle3C",function(a,d,h,b,c,g,j){1==(j&1)&&this.drawLine(d,b,a.x,a.y,a.z,h.x,h.y,h.z);2==(j&2)&&this.drawLine(b,g,h.x,h.y,h.z,c.x,c.y,c.z);4==(j&4)&&this.drawLine(d,g,a.x,a.y,a.z,c.x,c.y,c.z)},"JU.P3i,~N,JU.P3i,~N,JU.P3i,~N,~N");f(b,"fillTriangleTwoSided",function(a,d,h,b){this.setColorNoisy(this.getShadeIndex(a));this.fillTriangleP3f(d,h,b,!1)},"~N,JU.P3,JU.P3,JU.P3");c(b,"fillTriangleP3f",function(a,d,h,b){this.setScreeni(a,this.sA); +this.setScreeni(d,this.sB);this.setScreeni(h,this.sC);this.triangle3d.fillTriangle(this.sA,this.sB,this.sC,b)},"JU.P3,JU.P3,JU.P3,~B");f(b,"fillTriangle3f",function(a,d,h,b){var c=this.getShadeIndexP3(a,d,h,b);0>c||(b?this.setColorNoisy(c):this.setColor(this.shadesCurrent[c]),this.fillTriangleP3f(a,d,h,!1))},"JU.P3,JU.P3,JU.P3,~B");f(b,"fillTriangle3i",function(a,d,h,b,c,g,j){j&&(b=this.vectorAB,b.set(d.x-a.x,d.y-a.y,d.z-a.z),null==h?b=this.shader.getShadeIndex(-b.x,-b.y,b.z):(this.vectorAC.set(h.x- +a.x,h.y-a.y,h.z-a.z),b.cross(b,this.vectorAC),b=0<=b.z?this.shader.getShadeIndex(-b.x,-b.y,b.z):this.shader.getShadeIndex(b.x,b.y,-b.z)),56a?this.shadeIndexes2Sided[~a]:this.shadeIndexes[a]},"~N");c(b,"setTriangleTranslucency",function(a,d,h){this.isPass2&&(a&=14336,d&=14336,h&=14336,this.translucencyMask=(JU.GData.roundInt(v((a+d+h)/3))&30720)<<13|16777215)},"~N,~N,~N");f(b,"fillQuadrilateral",function(a,d,h,b,c){c=this.getShadeIndexP3(a,d,h,c);0>c||(this.setColorNoisy(c),this.fillTriangleP3f(a,d,h,!1),this.fillTriangleP3f(a,h,b,!1))},"JU.P3,JU.P3,JU.P3,JU.P3,~B"); +f(b,"drawSurface",function(){},"JU.MeshSurface,~N");f(b,"plotPixelClippedP3i",function(a){this.plotPixelClippedArgb(this.argbCurrent,a.x,a.y,a.z,this.width,this.zbuf,this.pixel)},"JU.P3i");c(b,"plotPixelClippedArgb",function(a,d,h,b,c,g,j){this.isClipped3(d,h,b)||(d=h*c+d,bd||(d>=j||0>h||h>=k)||f.addImagePixel(c,m,h*j+d,b,a,g)},"~N,~N,~N,~N,~N,~N,~N,~N,~A,~O,~N");c(b,"plotPixelsClippedRaster",function(a,d,h,b,c,g,j){var k,l;if(!(0>=a||0>h||h>=this.height||d>=this.width||b<(l=this.slab)&&c(k=this.depth)&&c>k)){var f=this.zbuf,m=(d<<16)+(h<<1)^858993459,p=(b<<10)+512;b=c-b;c=v(a/2);b=JU.GData.roundInt(v(((b<<10)+(0<=b?c:-c))/a));if(0>d){d=-d;p+=b*d;a-=d;if(0>=a)return;d=0}a+d>this.width&&(a=this.width-d);d=h*this.width+d;h=this.pixel;if(null==g){g= +this.argbNoisyDn;c=this.argbNoisyUp;for(var z=this.argbCurrent;0<=--a;){j=p>>10;if(j>=l&&j<=k&&j>16&7;h.addPixel(d,j,0==y?g:1==y?c:z)}++d;p+=b}}else{m=g.r<<8;c=v((j.r-g.r<<8)/a);z=g.g;y=v((j.g-z)/a);g=g.b;for(var H=v((j.b-g)/a);0<=--a;)j=p>>10,j>=l&&(j<=k&&j>8&255),++d,p+=b,m+=c,z+=y,g+=H}}},"~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16");c(b,"plotPixelsUnclippedRaster",function(a,d,h,b,c,g,j){if(!(0>=a)){var k= +((d<<16)+(h<<1)^858993459)&2147483647,l=(b<<10)+512;b=c-b;c=v(a/2);b=JU.GData.roundInt(v(((b<<10)+(0<=b?c:-c))/a));d=h*this.width+d;h=this.zbuf;c=this.pixel;if(null==g){g=this.argbNoisyDn;for(var f=this.argbNoisyUp,m=this.argbCurrent;0<=--a;){j=l>>10;if(j>16&7;c.addPixel(d,j,0==p?g:1==p?f:m)}++d;l+=b}}else{k=g.r<<8;f=JU.GData.roundInt(v((j.r-g.r<<8)/a));m=g.g;p=JU.GData.roundInt(v((j.g-m)/a));g=g.b;for(var z=JU.GData.roundInt(v((j.b-g)/a));0<=--a;)j=l>> +10,j>8&255),++d,l+=b,k+=f,m+=p,g+=z}}},"~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16");c(b,"plotPixelsClippedRasterBits",function(a,d,h,b,c,g,j,k,l){var f,m;if(!(0>=a||0>h||h>=this.height||d>=this.width||b<(m=this.slab)&&c(f=this.depth)&&c>f)){b=this.zbuf;var p=(d<<16)+(h<<1)^858993459;if(0>d){a-=-d;if(0>=a)return;d=0}a+d>this.width&&(a=this.width-d);h=h*this.width+d;c=this.pixel;if(null==g){g=this.argbNoisyDn;for(var z=this.argbNoisyUp,y=this.argbCurrent;0<= +--a;){j=this.line3d.getZCurrent(k,l,d++);if(j>=m&&j<=f&&j>16&7;c.addPixel(h,j,2>H?g:6>H?z:y)}++h}}else{p=g.r<<8;z=v((j.r-g.r<<8)/a);y=g.g;H=v((j.g-y)/a);g=g.b;for(var M=v((j.b-g)/a);0<=--a;)j=this.line3d.getZCurrent(k,l,d++),j>=m&&(j<=f&&j>8&255),++h,p+=z,y+=H,g+=M}}},"~N,~N,~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N");c(b,"plotPixelsUnclippedRasterBits",function(a,d,h,b,c,g,j){if(!(0>=a)){var k=((d<<16)+(h<< +1)^858993459)&2147483647;h=h*this.width+d;var l=this.zbuf,f=this.pixel;if(null==b)for(var m=this.argbNoisyDn,p=this.argbNoisyUp,z=this.argbCurrent;0<=--a;)c=this.line3d.getZCurrent(g,j,d++),c>16&7,f.addPixel(h,c,0==b?m:1==b?p:z)),++h;else{k=b.r<<8;m=JU.GData.roundInt(v((c.r-b.r<<8)/a));p=b.g;z=JU.GData.roundInt(v((c.g-p)/a));b=b.b;for(var y=JU.GData.roundInt(v((c.b-b)/a));0<=--a;)c=this.line3d.getZCurrent(g,j,d++),c>8&255),++h,k+=m,p+=z,b+=y}}},"~N,~N,~N,JU.Rgb16,JU.Rgb16,~N,~N");c(b,"plotPixelsUnclippedCount",function(a,d,h,b,c,g,j,k){for(h=b*g+h;0<=--d;)ca?a+1:63];this.argbNoisyDn=this.shadesCurrent[0a.z?this.shader.getShadeIndex(a.x,a.y,-a.z):b?-1:this.shader.getShadeIndex(-a.x,-a.y,a.z)},"JU.P3,JU.P3,JU.P3,~B");f(b,"renderBackground",function(a){null!=this.backgroundImage&&this.plotImage(-2147483648,0,-2147483648,this.backgroundImage,a,0,0,0)},"J.api.JmolRendererInterface");f(b,"drawAtom",function(a){this.fillSphereXYZ(a.sD,a.sX,a.sY,a.sZ)},"JM.Atom,~N");f(b,"getExportType",function(){return 0});f(b,"getExportName",function(){return null});c(b,"canDoTriangles",function(){return!0}); +c(b,"isCartesianExport",function(){return!1});f(b,"initializeExporter",function(){return null},"JV.Viewer,~N,JU.GData,java.util.Map");f(b,"finalizeOutput",function(){return null});f(b,"drawBond",function(){},"JU.P3,JU.P3,~N,~N,~N,~N,~N");f(b,"drawEllipse",function(){return!1},"JU.P3,JU.P3,JU.P3,~B,~B");c(b,"getPrivateKey",function(){return 0});f(b,"clearFontCache",function(){J.g3d.TextRenderer.clearFontCache()});c(b,"setRotationMatrix",function(a){for(var d=JU.Normix.getVertexVectors(),h=JU.GData.normixCount;0<= +--h;){var b=this.transformedVectors[h];a.rotate2(d[h],b);this.shadeIndexes[h]=this.shader.getShadeB(b.x,-b.y,b.z);this.shadeIndexes2Sided[h]=0<=b.z?this.shadeIndexes[h]:this.shader.getShadeB(-b.x,b.y,-b.z)}},"JU.M3");f(b,"renderCrossHairs",function(a,d,h,b,c){d=this.isAntialiased();this.setC(0>c?10:100>=1;this.setC(a[1]b.x?21:11);this.drawRect(c+k,h,g,0,k,d);this.setC(a[3]b.y?21:11);this.drawRect(c,h+k,g,0,d,k)},"~A,~N,~N,JU.P3,~N");f(b,"initializeOutput",function(){return!1},"JV.Viewer,~N,java.util.Map");b.fixTextImageRGB=c(b,"fixTextImageRGB",function(a){return 0==(a&12632256)?a|263172:a},"~N");b.sort=null;b.nullShadeIndex=50});n("J.g3d"); +A(["J.g3d.PrecisionRenderer","java.util.Hashtable"],"J.g3d.LineRenderer",["JU.BS"],function(){var b=r(function(){this.lineBits=this.shader=this.g3d=null;this.slope=0;this.lineTypeX=!1;this.nBits=0;this.slopeKey=this.lineCache=null;this.z2t=this.y2t=this.x2t=this.z1t=this.y1t=this.x1t=0;u(this,arguments)},J.g3d,"LineRenderer",J.g3d.PrecisionRenderer);N(b,function(){this.lineCache=new java.util.Hashtable});x(b,function(a){I(this,J.g3d.LineRenderer,[]);this.g3d=a;this.shader=a.shader},"J.g3d.Graphics3D"); +c(b,"setLineBits",function(a,d){this.slope=0!=a?d/a:0<=d?3.4028235E38:-3.4028235E38;this.nBits=(this.lineTypeX=1>=this.slope&&-1<=this.slope)?this.g3d.width:this.g3d.height;this.slopeKey=Float.$valueOf(this.slope);if(this.lineCache.containsKey(this.slopeKey))this.lineBits=this.lineCache.get(this.slopeKey);else{this.lineBits=JU.BS.newN(this.nBits);d=Math.abs(d);a=Math.abs(a);if(d>a){var h=a;a=d;d=h}for(var h=0,b=a+a,c=d+d,g=0;ga&&(this.lineBits.set(g),h-=b);this.lineCache.put(this.slopeKey, +this.lineBits)}},"~N,~N");c(b,"clearLineCache",function(){this.lineCache.clear()});c(b,"plotLineOld",function(a,d,h,b,c,g,j,k){this.x1t=h;this.x2t=g;this.y1t=b;this.y2t=j;this.z1t=c;this.z2t=k;var l=!0;switch(this.getTrimmedLineImpl()){case 0:l=!1;break;case 2:return}this.plotLineClippedOld(a,d,h,b,c,g-h,j-b,k-c,l,0,0)},"~N,~N,~N,~N,~N,~N,~N,~N");c(b,"plotLineDeltaOld",function(a,d,h,b,c,g,j,k,l){this.x1t=h;this.x2t=h+g;this.y1t=b;this.y2t=b+j;this.z1t=c;this.z2t=c+k;if(l)switch(this.getTrimmedLineImpl()){case 2:return; +case 0:l=!1}this.plotLineClippedOld(a,d,h,b,c,g,j,k,l,0,0)},"~N,~N,~N,~N,~N,~N,~N,~N,~B");c(b,"plotLineDeltaAOld",function(a,d,h,b,c,g,j,k,l,f,m){this.x1t=c;this.x2t=c+k;this.y1t=g;this.y2t=g+l;this.z1t=j;this.z2t=j+f;if(m)switch(this.getTrimmedLineImpl()){case 2:return;case 0:m=!1}var p=this.g3d.zbuf,z=this.g3d.width,y=0,H=g*z+c,M=this.g3d.bufferSize,n=63>b?b+1:b,u=0k&&(k=-k,m=-1);0>l&&(l=-l,u=-z);z=k+k;g=l+l;j<<=10;if(l<=k){var A=k-1;0>f&&(A=-A);f=v(((f<<10)+A)/k);l=0;A=Math.abs(c-this.x2t)-1;c=Math.abs(c-this.x1t)-1;for(var x=k-1,C=v(x/2);--x>=A;){if(x==C){a=B;if(0==a)break;r=n;w=d;0!=h%3&&(b=this.g3d.setScreened(2==(h&2)),this.g3d.currentShadeIndex=0)}H+=m;j+=f;l+=g;l>k&&(H+=u,l-=z);if(0!=a&&xy){var D=j>>10;if(DE?w:170f&&(A=-A);f=v(((f<<10)+A)/l);k=0;A=Math.abs(x-this.y2t)-1;c=Math.abs(x-this.y1t)-1;x=l-1;for(C=v(x/2);--x>=A;){if(x==C){a=B;if(0==a)break;r=n;w=d;0!=h%3&&(b=this.g3d.setScreened(2==(h&2)),this.g3d.currentShadeIndex=0)}H+=u;j+=f;k+=z;k>l&&(H+=m,k-=g);0!=a&&(xy)&&(D=j>>10,DE?w:170h?h+1:h,p=0m)&&(b=this.getZCurrent(this.a,this.b,n),bM?H:170w;)w+=this.nBits;this.lineBits.get(w%this.nBits)&&(p+=y)}}},"~A,~A,~N,JU.P3,JU.P3,~N,~B");c(b,"plotLineDeltaABitsInt",function(a,d,h,b,c,g,j){var k=b.x,l=b.y,f=b.z,m=c.x,p=c.y,z=c.z,y=m-k,H=p-l;this.x1t=k;this.x2t=m;this.y1t=l;this.y2t=p;this.z1t=f;this.z2t=z;if(!(j&&2==this.getTrimmedLineImpl())){j=this.g3d.zbuf;var M=this.g3d.width,m=0,z=63>h?h+1:h,p=0m)&& +(b=this.getZCurrent(this.a,this.b,n),bM?H:170w;)w+=this.nBits;this.lineBits.get(w%this.nBits)&&(p+=y)}}},"~A,~A,~N,JU.P3i,JU.P3i,~N,~B");c(b,"plotLineBits",function(a,d,h,b,c,g,j){if(!(1>=h.z||1>=b.z)){var k=!0;this.x1t=h.x;this.y1t=h.y;this.z1t=h.z;this.x2t=b.x;this.y2t=b.y;this.z2t=b.z;switch(this.getTrimmedLineImpl()){case 2:return;case 0:k=!1;break;default:j&&(h.set(this.x1t,this.y1t,this.z1t), +b.set(this.x2t,this.y2t,this.z2t))}j=this.g3d.zbuf;var l=this.g3d.width,f=0;0==c&&(g=2147483647,c=1);var m=h.x,p=h.y,z=h.z,y=b.x-m,H=m+y,n=b.y-p,u=p+n,r=p*l+m,w=this.g3d.bufferSize,x=this.g3d.pixel;0!=a&&(!k&&0<=r&&ry&&(y=-y,k=-1);0>n&&(n=-n,z=-l,B=-1);var l=y+y,A=n+n;if(n<=y){this.setRastAB(h.x,h.z,b.x,b.z);p=0;h=Math.abs(H-this.x2t)-1;H=Math.abs(H-this.x1t)-1;u=y-1;for(b=v(u/2);--u>=h&&!(u==b&&(a=d,0==a));){r+=k;m+=k;p+=A;p>y&&(r+= +z,p-=l);if(0!=a&&u=h&&!(u==b&&(a=d,0==a));)r+=z,p+=B,m+=l,m>n&&(r+=k,m-=A),0!=a&&(ug&&(g=-g,l=-1);0>j&&(j=-j,r=-z);z=g+g;b=j+j;c<<=10;if(j<=g){var x=g-1;0>k&&(x=-x);k=v(((k<<10)+x)/g);j=0;x=Math.abs(h-this.x2t)-1;h=Math.abs(h-this.x1t)-1;for(var w=g-1,B=v(w/2);--w>=x&&!(w==B&&(a=d,0==a));){H+=l;c+=k;j+=b;j>g&&(H+=r,j-=z);if(0!=a&&w>10;Ak&&(x=-x);k=v(((k<<10)+x)/j);g=0;x=Math.abs(w-this.y2t)-1;h=Math.abs(w-this.y1t)- +1;w=j-1;for(B=v(w/2);--w>=x&&!(w==B&&(a=d,0==a));)H+=r,c+=k,g+=z,g>j&&(H+=l,g-=b),0!=a&&(w>10,Ad&&(this.zb[a]=2147483647)},"~N,~N");c(b,"addPixel",function(a,d,h){this.zb[a]=d;this.pb[a]=h},"~N,~N,~N");c(b,"addImagePixel",function(a,d,h,b,c,g){if(b=a&&(d=this.pb[h],0!=g&&(d=J.g3d.Graphics3D.mergeBufferPixel(d,g,g)),d=J.g3d.Graphics3D.mergeBufferPixel(d,c&16777215|a<<24,this.bgcolor),this.addPixel(h,b,d))}},"~N,~N,~N,~N,~N,~N")});n("J.g3d"); +A(["J.g3d.Pixelator"],"J.g3d.PixelatorT",["J.g3d.Graphics3D"],function(){var b=G(J.g3d,"PixelatorT",J.g3d.Pixelator);f(b,"clearPixel",function(){},"~N,~N");f(b,"addPixel",function(a,d,h){var b=this.g.zbufT[a];if(dthis.g.zMargin)&&(this.pb[a]=J.g3d.Graphics3D.mergeBufferPixel(this.pb[a],c,this.g.bgcolor));this.g.zbufT[a]=d;this.g.pbufT[a]=h&this.g.translucencyMask}else d!=b&&!this.g.translucentCoverOnly&&d-b>this.g.zMargin&&(this.pb[a]= +J.g3d.Graphics3D.mergeBufferPixel(this.pb[a],h&this.g.translucencyMask,this.g.bgcolor))},"~N,~N,~N")});n("J.g3d");A(["J.g3d.Pixelator"],"J.g3d.PixelatorShaded",null,function(){var b=r(function(){this.tmp=this.bgRGB=null;this.zShadePower=this.zDepth=this.zSlab=0;u(this,arguments)},J.g3d,"PixelatorShaded",J.g3d.Pixelator);x(b,function(a){I(this,J.g3d.PixelatorShaded,[a]);this.tmp=D(3,0)},"J.g3d.Graphics3D");c(b,"set",function(a,d,h){this.bgcolor=this.g.bgcolor;this.bgRGB=D(-1,[this.bgcolor&255,this.bgcolor>> +8&255,this.g.bgcolor>>16&255]);this.zSlab=0>a?0:a;this.zDepth=0>d?0:d;this.zShadePower=h;this.p0=this.g.pixel0;return this},"~N,~N,~N");f(b,"addPixel",function(a,d,h){if(!(d>this.zDepth)){if(d>=this.zSlab&&0>8;b[2]=h>>16;var g=(this.zDepth-d)/(this.zDepth-this.zSlab);if(1j;j++)b[j]=c[j]+F(g*((b[j]&255)-c[j]));h=b[2]<<16|b[1]<<8|b[0]|h&4278190080}this.p0.addPixel(a,d,h)}}, +"~N,~N,~N");c(b,"showZBuffer",function(){for(var a=this.p0.zb.length;0<=--a;)if(0!=this.p0.pb[a]){var d=F(Math.min(255,Math.max(0,255*(this.zDepth-this.p0.zb[a])/(this.zDepth-this.zSlab))));this.p0.pb[a]=4278190080|d|d<<8|d<<16}})});n("J.g3d");A(["J.g3d.Pixelator"],"J.g3d.PixelatorScreened",null,function(){var b=G(J.g3d,"PixelatorScreened",J.g3d.Pixelator);x(b,function(a,d){I(this,J.g3d.PixelatorScreened,[a]);this.width=a.width;this.p0=d},"J.g3d.Graphics3D,J.g3d.Pixelator");f(b,"addPixel",function(a, +d,h){a%this.width%2==v(a/this.width)%2&&this.p0.addPixel(a,d,h)},"~N,~N,~N")});n("J.g3d");var Z=r(function(){this.bufferSizeT=this.bufferSize=this.bufferHeight=this.bufferWidth=this.windowSize=this.windowHeight=this.windowWidth=0;this.zBufferT=this.zBuffer=this.pBufferT=this.pBuffer=this.bufferedImage=null;this.heightOffscreen=this.widthOffscreen=0;this.apiPlatform=this.graphicsForTextOrImage=this.offscreenImage=null;u(this,arguments)},J.g3d,"Platform3D",null);x(Z,function(b){this.apiPlatform=b}, +"J.api.GenericPlatform");c(Z,"getGraphicsForMetrics",function(){return this.apiPlatform.getGraphics(this.allocateOffscreenImage(1,1))});c(Z,"allocateTBuffers",function(b){this.bufferSizeT=b?this.bufferSize:this.windowSize;this.zBufferT=D(this.bufferSizeT,0);this.pBufferT=D(this.bufferSizeT,0)},"~B");c(Z,"allocateBuffers",function(b,a,d,h){this.windowWidth=b;this.windowHeight=a;this.windowSize=b*a;d&&(b*=2,a*=2);this.bufferWidth=b;this.bufferHeight=a;this.bufferSize=this.bufferWidth*this.bufferHeight; +this.zBuffer=D(this.bufferSize,0);this.pBuffer=D(this.bufferSize,0);this.bufferedImage=this.apiPlatform.allocateRgbImage(this.windowWidth,this.windowHeight,this.pBuffer,this.windowSize,J.g3d.Platform3D.backgroundTransparent,h)},"~N,~N,~B,~B");c(Z,"releaseBuffers",function(){this.windowWidth=this.windowHeight=this.bufferWidth=this.bufferHeight=this.bufferSize=-1;null!=this.bufferedImage&&(this.apiPlatform.flushImage(this.bufferedImage),this.bufferedImage=null);this.zBufferT=this.pBufferT=this.zBuffer= +this.pBuffer=null});c(Z,"hasContent",function(){for(var b=this.bufferSize;0<=--b;)if(2147483647!=this.zBuffer[b])return!0;return!1});c(Z,"clearScreenBuffer",function(){for(var b=this.bufferSize;0<=--b;)this.zBuffer[b]=2147483647,this.pBuffer[b]=0});c(Z,"setBackgroundColor",function(b){if(null!=this.pBuffer)for(var a=this.bufferSize;0<=--a;)0==this.pBuffer[a]&&(this.pBuffer[a]=b)},"~N");c(Z,"clearTBuffer",function(){for(var b=this.bufferSizeT;0<=--b;)this.zBufferT[b]=2147483647,this.pBufferT[b]=0}); +c(Z,"clearBuffer",function(){this.clearScreenBuffer()});c(Z,"clearScreenBufferThreaded",function(){});c(Z,"notifyEndOfRendering",function(){this.apiPlatform.notifyEndOfRendering()});c(Z,"getGraphicsForTextOrImage",function(b,a){if(b>this.widthOffscreen||a>this.heightOffscreen)null!=this.offscreenImage&&(this.apiPlatform.disposeGraphics(this.graphicsForTextOrImage),this.apiPlatform.flushImage(this.offscreenImage)),b>this.widthOffscreen&&(this.widthOffscreen=b),a>this.heightOffscreen&&(this.heightOffscreen= +a),this.offscreenImage=this.allocateOffscreenImage(this.widthOffscreen,this.heightOffscreen),this.graphicsForTextOrImage=this.apiPlatform.getStaticGraphics(this.offscreenImage,J.g3d.Platform3D.backgroundTransparent);return this.graphicsForTextOrImage},"~N,~N");c(Z,"allocateOffscreenImage",function(b,a){return this.apiPlatform.newOffScreenImage(b,a)},"~N,~N");c(Z,"setBackgroundTransparent",function(b){J.g3d.Platform3D.backgroundTransparent=b},"~B");Z.backgroundTransparent=!1;n("J.g3d");var La=r(function(){this.b= +this.a=0;this.isOrthographic=!1;u(this,arguments)},J.g3d,"PrecisionRenderer",null);c(La,"getZCurrent",function(b,a,d){return Math.round(1.4E-45==b?a:this.isOrthographic?b*d+a:b/(a-d))},"~N,~N,~N");c(La,"setRastABFloat",function(b,a,d,h){var c=h-a,e=d-b;0==c||0==e?(this.a=1.4E-45,this.b=a):this.isOrthographic?(this.a=c/e,this.b=a-this.a*b):(this.a=e*a*(h/c),this.b=(d*h-b*a)/c)},"~N,~N,~N,~N");c(La,"setRastAB",function(b,a,d,h){var c=h-a,e=d-b;1.4E-45==b||0==c||0==e?(this.a=1.4E-45,this.b=h):this.isOrthographic? +(this.a=c/e,this.b=a-this.a*b):(this.a=e*a*(h/c),this.b=(d*h-b*a)/c)},"~N,~N,~N,~N");n("J.g3d");A(["JU.P3"],"J.g3d.SphereRenderer",null,function(){var b=r(function(){this.mDeriv=this.coef=this.mat=this.zroot=this.shader=this.g3d=null;this.planeShade=this.selectedOctant=0;this.zbuf=null;this.offsetPbufBeginLine=this.slab=this.depth=this.height=this.width=0;this.dxyz=this.planeShades=this.ptTemp=null;u(this,arguments)},J.g3d,"SphereRenderer",null);N(b,function(){this.zroot=R(2,0);this.ptTemp=new JU.P3; +this.planeShades=D(3,0);this.dxyz=L(3,3,0)});x(b,function(a){this.g3d=a;this.shader=a.shader},"J.g3d.Graphics3D");c(b,"render",function(a,d,h,b,c,g,j,k,l,f){if(1!=c&&(49>1,p=c-m;if(!(c+mthis.depth)){var z=h-m,y=h+m,H=b-m,n=b+m;this.shader.nOut=this.shader.nIn=0;this.zbuf=this.g3d.zbuf;this.height=this.g3d.height;this.width=this.g3d.width;this.offsetPbufBeginLine=this.width*b+h;var u= +this.shader;this.mat=g;if(null!=g&&(this.coef=j,this.mDeriv=k,this.selectedOctant=l,null==u.ellipsoidShades&&u.createEllipsoidShades(),null!=f)){this.planeShade=-1;for(j=0;3>j;j++)if(m=this.dxyz[j][0]=f[j].x-h,k=this.dxyz[j][1]=f[j].y-b,l=this.dxyz[j][2]=f[j].z-c,this.planeShades[j]=u.getShadeIndex(m,k,-l),0==m&&0==k){this.planeShade=this.planeShades[j];break}}if(null!=g||128z||y>=this.width||0>H||n>=this.height||pthis.depth?this.renderSphereClipped(r,h,b,c,d,a):this.renderSphereUnclipped(r,c,d,a)}this.zbuf=null}}},"~A,~N,~N,~N,~N,JU.M3,~A,JU.M4,~N,~A");c(b,"renderSphereUnclipped",function(a,d,h,b){var c=0,g=1-(h&1),j=this.offsetPbufBeginLine,k=j-g*this.width;h=v((h+1)/2);var l=this.zbuf,f=this.width,m=this.g3d.pixel;do{var p=j,z=j-g,y=k,H=k-g,n;do{n=a[c++];var r=d-(n&127);r> +7&63]);r>13&63]);r>19&63]);r>25&63]);++p;--z;++y;--H}while(0<=n);j+=f;k-=f}while(0<--h)},"~A,~N,~N,~A");c(b,"renderSphereClipped",function(a,d,h,b,c,g){var j=this.width,k=this.height,l=0,f=1-(c&1),m=this.offsetPbufBeginLine,p=m-f*j;c=v((c+1)/2);var z=h,y=h-f;h=(d<<16)+(h<<1)^858993459;var H=this.zbuf,n=this.g3d.pixel,r=this.slab,u=this.depth;do{var w=0<=z&&z=r):(N=b-K,K=N=r&&N<=u){if(w){if(L&&N>7&7):D>>7&63;n.addPixel(B,N,g[O])}I&&N>13&7):D>>13&63,n.addPixel(A,N,g[O]))}x&&(L&&N>19&7):D>>19&63,n.addPixel(C,N,g[O])),I&&N>25&7):D>>25&63,n.addPixel(E,N,g[O])))}++B;--A;++C;--E;++F;--G;K&&(h=(h<<16)+(h<<1)+h&2147483647)}while(0<=D);m+=j;p-=j;++z;--y}while(0<--c)},"~A,~N,~N,~N,~N,~A");c(b,"renderQuadrant",function(a, +d,h,b,c,g,j){g=v(g/2);var k=h+g*a,l=(0>h?-1:hk?-2:kb?-1:bk?-2:k=this.slab&&c<=this.depth?this.renderQuadrantUnclipped(g,a,d,c,j):this.renderQuadrantClipped(g,a,d,h,b,c,j)))},"~N,~N,~N,~N,~N,~N,~A");c(b,"renderQuadrantUnclipped",function(a,d,h,b,c){for(var g=a*a,j=2*a+1,k=0>h?-this.width:this.width,l=this.offsetPbufBeginLine,f=this.zbuf,m=this.g3d.pixel, +p=this.shader.sphereShadeIndexes,z=0,y=0;y<=g;y+=z+ ++z,l+=k)for(var H=l,n=g-y,r=b-a,u=v((z*h+a<<8)/j),w=0,x=0;x<=n;x+=w+ ++w,H+=d)if(!(f[H]<=r)&&(r=v(Math.sqrt(n-x)),r=b-r,!(f[H]<=r))){var B=v((w*d+a<<8)/j);m.addPixel(H,r,c[p[(u<<8)+B]])}},"~N,~N,~N,~N,~A");c(b,"renderQuadrantClipped",function(a,d,h,b,c,g,j){for(var k=null!=this.mat,l=0<=this.selectedOctant,f=a*a,m=2*a+1,p=0>h?-this.width:this.width,z=this.offsetPbufBeginLine,y=(b<<16)+(c<<1)^858993459,H=0,n=0,r=this.g3d.pixel,u=0,w=this.height, +x=this.width,B=this.zbuf,A=this.dxyz,C=this.slab,E=this.depth,D=this.ptTemp,F=this.coef,G=this.zroot,I=this.selectedOctant,K=this.shader,L=this.planeShades,N=K.sphereShadeIndexes,O=this.planeShade,R=this.mat,T=0,V=0,Q=c;V<=f;V+=T+ ++T,z+=p,Q+=h)if(0>Q){if(0>h)break}else if(Q>=w){if(0P){if(0>d)break}else if(P>=x){if(0aa){if(0<=$)break;continue}aa=Math.sqrt(aa);G[0]=-S-aa;G[1]=-S+aa;$=gD.x&&(aa|=1);0>D.y&&(aa|=2);0>D.z&&(aa|=4);if(aa==I){if(0<=O)n=O;else{U=3;n=3.4028235E38;for(S=0;3>S;S++)if(0!=(aa=A[S][2]))aa=g+(-A[S][0]*(P-b)-A[S][1]*(Q-c))/aa,aa=C:SE||B[Z]<= +u)continue}else{S=v(Math.sqrt(Y-W));S=g+(g=C:SE||B[Z]<=S)continue}switch(U){case 0:n=44+(y>>8&7);y=(y<<16)+(y<<1)+y&2147483647;U=1;break;case 2:n=K.getEllipsoidShade(P,Q,G[$],a,this.mDeriv);break;case 3:r.clearPixel(Z,u);break;default:n=v((X*d+a<<8)/m),n=N[(H<<8)+n]}r.addPixel(Z,S,j[n])}y=(y+P+Q|1)&2147483647}},"~N,~N,~N,~N,~N,~N,~A")});n("J.g3d");A(["java.util.Hashtable"],"J.g3d.TextRenderer",["JU.CU","J.g3d.Graphics3D"],function(){var b=r(function(){this.size= +this.mapWidth=this.width=this.ascent=this.height=0;this.tmap=null;this.isInvalid=!1;u(this,arguments)},J.g3d,"TextRenderer",null);x(b,function(a,d){this.ascent=d.getAscent();this.height=d.getHeight();this.width=d.stringWidth(a);0!=this.width&&(this.mapWidth=this.width,this.size=this.mapWidth*this.height)},"~S,JU.Font");b.clearFontCache=c(b,"clearFontCache",function(){J.g3d.TextRenderer.working||(J.g3d.TextRenderer.htFont3d.clear(),J.g3d.TextRenderer.htFont3dAntialias.clear())});b.plot=c(b,"plot", +function(a,d,h,b,c,g,j,k,l,f){if(0==g.length)return 0;if(0<=g.indexOf("a||a+g.width>p||0>d||d+g.height>z)&&null!=(l=k))for(var r=k=0;r",n);if(0>r)continue;b=JU.CU.getArgbFromString(g.substring(n+7,r).trim());n=r;continue}if(n+7")){n+=7;b=H;continue}if(n+4")){n+=4;d+=z;continue}if(n+4")){n+=4;d+=y;continue}if(n+5")){n+=5;d-=z;continue}if(n+5")){n+=5;d-=y;continue}}r=J.g3d.TextRenderer.plot(a+m,d,h,b,c,g.substring(n,n+1),j,k,l,f);m+= +r}return m},"~N,~N,~N,~N,~N,~S,JU.Font,J.g3d.Graphics3D,J.api.JmolRendererInterface,~B");b.getPlotText3D=c(b,"getPlotText3D",function(a,d,h,b,c,g){J.g3d.TextRenderer.working=!0;g=g?J.g3d.TextRenderer.htFont3dAntialias:J.g3d.TextRenderer.htFont3d;var j=g.get(c),k=null,l=!1,f=!1;null!=j?k=j.get(b):(j=new java.util.Hashtable,l=!0);null==k&&(k=new J.g3d.TextRenderer(b,c),f=!0);k.isInvalid=0==k.width||0>=a+k.width||a>=h.width||0>=d+k.height||d>=h.height;if(k.isInvalid)return k;l&&g.put(c,j);f&&(k.setTranslucency(b, +c,h),j.put(b,k));J.g3d.TextRenderer.working=!1;return k},"~N,~N,J.g3d.Graphics3D,~S,JU.Font,~B");c(b,"setTranslucency",function(a,d,h){a=h.apiPlatform.getTextPixels(a,d,h.platform.getGraphicsForTextOrImage(this.mapWidth,this.height),h.platform.offscreenImage,this.mapWidth,this.height,this.ascent);if(null!=a){this.tmap=O(this.size,0);for(d=a.length;0<=--d;)h=a[d]&255,0!=h&&(this.tmap[d]=J.g3d.TextRenderer.translucency[h>>5])}},"~S,JU.Font,J.g3d.Graphics3D");b.translucency=O(-1,[7,6,5,4,3,2,1,8]);b.working= +!1;b.htFont3d=new java.util.Hashtable;b.htFont3dAntialias=new java.util.Hashtable});n("J.g3d");A(["JU.P3i"],"J.g3d.TextString",null,function(){var b=r(function(){this.font=this.text=null;this.bgargb=this.argb=0;u(this,arguments)},J.g3d,"TextString",JU.P3i,java.util.Comparator);c(b,"setText",function(a,d,h,b,c,g,j){this.text=a;this.font=d;this.argb=h;this.bgargb=b;this.x=c;this.y=g;this.z=j},"~S,JU.Font,~N,~N,~N,~N,~N");f(b,"compare",function(a,d){return null==a||null==d?0:a.z>d.z?-1:a.z=this.az[0]||1>=this.az[1]||1>=this.az[2])){d=this.g3d.clipCode3(this.ax[0],this.ay[0],this.az[0]);h=this.g3d.clipCode3(this.ax[1],this.ay[1],this.az[1]);var c=this.g3d.clipCode3(this.ax[2],this.ay[2],this.az[2]),g=d|h|c;a=0!=g;if(!a||!(-1==g||0!=(d&h&c))){c=0;this.ay[1]this.ay[j])var k=g,g=j,j=k;d=this.ay[c];var l=this.ay[g],f=this.ay[j];h=f-d+1;if(!(h>3*this.g3d.height)){if(h>this.axW.length){var m= +h+31&-32;this.axW=D(m,0);this.azW=D(m,0);this.axE=D(m,0);this.azE=D(m,0);this.aa=L(m,0);this.bb=L(m,0);this.rgb16sW=this.reallocRgb16s(this.rgb16sW,m);this.rgb16sE=this.reallocRgb16s(this.rgb16sE,m)}var p;b?(m=this.rgb16sW,p=this.rgb16sE):m=p=null;k=l-d;0==k?(this.ax[g]l&&(f=-f),this.ax[c]+v((l*k+f)/h)d&&(h+=d, +j-=d,d=0);d+h>this.g3d.height&&(h=this.g3d.height-d);if(b)if(a)for(;--h>=c;++d,++j)a=this.axE[j]-(b=this.axW[j])+g,0=c;++d,++j)a=this.axE[j]-(b=this.axW[j])+g,1==c&&0>a&&(a=1,b--),0=c;++d,++j)a=this.axE[j]-(b=this.axW[j])+g,0=c;++d,++j)a=this.axE[j]-(b=this.axW[j])+g,1==c&&0>a&&(a=1,b--),0g)c[l]=u==x?this.ax[b]:k,e[l]=this.getZCurrent(y,n,w),r&&(this.setRastAB(this.axW[l],this.azW[l],c[l],e[l]),this.aa[l]=this.a,this.bb[l]=this.b);k+=z;p+=m;0=j.length?(2==a&&(0!=c.length&&0!=e.length)&&d.put(e,c),a=0):0==j.indexOf("msgid")?(a=1,e=J.i18n.Resource.fix(j)):0==j.indexOf("msgstr")?(a=2,c=J.i18n.Resource.fix(j)):1==a?e+=J.i18n.Resource.fix(j):2==a&&(c+=J.i18n.Resource.fix(j))}}catch(k){if(!E(k,Exception))throw k;}JU.Logger.info(d.size()+" translations loaded"); +return 0==d.size()?null:new J.i18n.Resource(d,null)},"~S");b.fix=c(b,"fix",function(a){0<=a.indexOf('\\"')&&(a=JU.PT.rep(a,'\\"','"'));return JU.PT.rep(a.substring(a.indexOf('"')+1,a.lastIndexOf('"')),"\\n","\n")},"~S")});n("J.io");A(null,"J.io.FileReader","java.io.BufferedReader JU.AU $.PT $.Rdr J.api.Interface JU.Logger".split(" "),function(){var b=r(function(){this.htParams=this.readerOrDocument=this.atomSetCollection=this.fileTypeIn=this.nameAsGivenIn=this.fullPathNameIn=this.fileNameIn=this.vwr= +null;this.isAppend=!1;this.bytesOrStream=null;u(this,arguments)},J.io,"FileReader",null);x(b,function(a,d,b,c,e,g,j,k){this.vwr=a;this.fileNameIn=null==d?b:d;this.fullPathNameIn=null==b?this.fileNameIn:b;this.nameAsGivenIn=null==c?this.fileNameIn:c;this.fileTypeIn=e;null!=g&&(JU.AU.isAB(g)||C(g,"java.io.BufferedInputStream")?(this.bytesOrStream=g,g=null):C(g,"java.io.Reader")&&!C(g,"java.io.BufferedReader")&&(g=new java.io.BufferedReader(g)));this.readerOrDocument=g;this.htParams=j;this.isAppend= +k},"JV.Viewer,~S,~S,~S,~S,~O,java.util.Map,~B");c(b,"run",function(){!this.isAppend&&this.vwr.displayLoadErrors&&this.vwr.zap(!1,!0,!1);var a=null,d=null;this.fullPathNameIn.contains("#_DOCACHE_")&&(this.readerOrDocument=J.io.FileReader.getChangeableReader(this.vwr,this.nameAsGivenIn,this.fullPathNameIn));if(null==this.readerOrDocument){d=this.vwr.fm.getUnzippedReaderOrStreamFromName(this.fullPathNameIn,this.bytesOrStream,!0,!1,!1,!0,this.htParams);if(null==d||"string"==typeof d){a=null==d?"error opening:"+ +this.nameAsGivenIn:d;a.startsWith("NOTE:")||JU.Logger.error("file ERROR: "+this.fullPathNameIn+"\n"+a);this.atomSetCollection=a;return}if(C(d,"java.io.BufferedReader"))this.readerOrDocument=d;else if(C(d,"javajs.api.ZInputStream")){var a=this.fullPathNameIn,b=null,a=a.$replace("\\","/");0<=a.indexOf("|")&&!a.endsWith(".zip")&&(b=JU.PT.split(a,"|"),a=b[0]);null!=b&&this.htParams.put("subFileList",b);b=d;d=this.vwr.fm.getZipDirectory(a,!0,!0);this.atomSetCollection=d=this.vwr.fm.getJzu().getAtomSetCollectionOrBufferedReaderFromZip(this.vwr, +b,a,d,this.htParams,1,!1);try{b.close()}catch(c){if(!E(c,Exception))throw c;}}}C(d,"java.io.BufferedInputStream")&&(this.readerOrDocument=J.api.Interface.getInterface("JU.BinaryDocument",this.vwr,"file").setStream(d,!this.htParams.containsKey("isLittleEndian")));if(null!=this.readerOrDocument){this.atomSetCollection=this.vwr.getModelAdapter().getAtomSetCollectionReader(this.fullPathNameIn,this.fileTypeIn,this.readerOrDocument,this.htParams);"string"!=typeof this.atomSetCollection&&(this.atomSetCollection= +this.vwr.getModelAdapter().getAtomSetCollection(this.atomSetCollection));try{C(this.readerOrDocument,"java.io.BufferedReader")?this.readerOrDocument.close():C(this.readerOrDocument,"javajs.api.GenericBinaryDocument")&&this.readerOrDocument.close()}catch(e){if(!E(e,"java.io.IOException"))throw e;}}"string"!=typeof this.atomSetCollection&&(!this.isAppend&&!this.vwr.displayLoadErrors&&this.vwr.zap(!1,!0,!1),this.vwr.fm.setFileInfo(w(-1,[this.fullPathNameIn,this.fileNameIn,this.nameAsGivenIn])))});b.getChangeableReader= +c(b,"getChangeableReader",function(a,d,b){return JU.Rdr.getBR(a.getLigandModel(d,b,"_file",null))},"JV.Viewer,~S,~S");c(b,"getAtomSetCollection",function(){return this.atomSetCollection})});n("J.render");A(["J.render.ShapeRenderer"],"J.render.BallsRenderer",["J.shape.Shape"],function(){var b=G(J.render,"BallsRenderer",J.render.ShapeRenderer);f(b,"render",function(){var a=!1;if(this.isExport||this.vwr.checkMotionRendering(1153433601))for(var d=this.ms.at,b=this.shape.colixes,c=this.vwr.shm.bsRenderableAtoms, +e=c.nextSetBit(0);0<=e;e=c.nextSetBit(e+1)){var g=d[e];0b?this.g3d.drawDashedLineBits(8,4,a,d):this.g3d.fillCylinderBits(this.endcap,1==this.exportType?-b:b,a,d);c&&null!=this.tickInfo&&(this.checkTickTemps(), +this.tickAs.setT(a),this.tickBs.setT(d),this.drawTicks(b,!0))},"JU.P3,JU.P3,~N,~B");c(b,"checkTickTemps",function(){null==this.tickA&&(this.tickA=new JU.P3,this.tickB=new JU.P3,this.tickAs=new JU.P3,this.tickBs=new JU.P3)});c(b,"drawTicks",function(a,d){Float.isNaN(this.tickInfo.first)&&(this.tickInfo.first=0);this.drawTicks2(this.tickInfo.ticks.x,8,a,!d?null:null==this.tickInfo.tickLabelFormats?w(-1,["%0.2f"]):this.tickInfo.tickLabelFormats);this.drawTicks2(this.tickInfo.ticks.y,4,a,null);this.drawTicks2(this.tickInfo.ticks.z, +2,a,null)},"~N,~B");c(b,"drawTicks2",function(a,d,b,c){if(0!=a&&(this.g3d.isAntialiased()&&(d*=2),this.vectorT2.set(this.tickBs.x,this.tickBs.y,0),this.vectorT.set(this.tickAs.x,this.tickAs.y,0),this.vectorT2.sub(this.vectorT),!(50>this.vectorT2.length()))){var e=this.tickInfo.signFactor;this.vectorT.sub2(this.tickB,this.tickA);var g=this.vectorT.length();if(null!=this.tickInfo.scale)if(Float.isNaN(this.tickInfo.scale.x)){var j=this.vwr.getUnitCellInfo(0);Float.isNaN(j)||this.vectorT.set(this.vectorT.x/ +j,this.vectorT.y/this.vwr.getUnitCellInfo(1),this.vectorT.z/this.vwr.getUnitCellInfo(2))}else this.vectorT.set(this.vectorT.x*this.tickInfo.scale.x,this.vectorT.y*this.tickInfo.scale.y,this.vectorT.z*this.tickInfo.scale.z);j=this.vectorT.length()+1E-4*a;if(!(jb&&(b=1);this.vectorT2.set(-this.vectorT2.y,this.vectorT2.x,0);this.vectorT2.scale(d/this.vectorT2.length());d=this.tickInfo.reference;null==d?(this.pointT3.setT(this.vwr.getBoundBoxCenter()),603979809==this.vwr.g.axesMode&&this.pointT3.add3(1,1,1)):this.pointT3.setT(d);this.tm.transformPtScr(this.pointT3,this.pt2i);d=0.2>Math.abs(this.vectorT2.x/this.vectorT2.y);for(var f=!d,m=!d&&0>this.vectorT2.x,p=null!=c&&0=this.tickInfo.first&& +(this.pointT2.setT(this.pointT),this.tm.transformPt3f(this.pointT2,this.pointT2),this.drawLine(v(Math.floor(this.pointT2.x)),v(Math.floor(this.pointT2.y)),F(l),z=v(Math.floor(this.pointT2.x+this.vectorT2.x)),y=v(Math.floor(this.pointT2.y+this.vectorT2.y)),F(l),b),p&&(this.draw000||0!=k))){n[0]=Float.$valueOf(0==k?0:k*e);var u=JU.PT.sprintf(c[r%c.length],"f",n);this.drawString(z,y,F(l),4,m,d,f,v(Math.floor(this.pointT2.y)),u)}this.pointT.add(this.vectorT);k+=a;l+=g;r++}}}},"~N,~N,~N,~A");c(b,"drawLine", +function(a,d,b,c,e,g,j){return this.drawLine2(this.g3d,a,d,b,c,e,g,j)},"~N,~N,~N,~N,~N,~N,~N");c(b,"drawLine2",function(a,d,b,c,e,g,j,k){this.pt0.set(d,b,c);this.pt1.set(e,g,j);if(this.dotsOrDashes)null!=this.dashDots&&J.render.FontLineShapeRenderer.drawDashedCylinder(a,d,b,c,e,g,j,this.dashDots,this.width,this.colixA,this.colixB,!this.isExport||1==this.mad?this.width:this.mad,this.asLineOnly,this.s1);else{if(0>k)return a.drawDashedLineBits(8,4,this.pt0,this.pt1),1;a.fillCylinderBits(2,k,this.pt0, +this.pt1)}return v((k+1)/2)},"J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N");c(b,"drawString",function(a,d,b,c,e,g,j,k,l){if(null!=l){var f=this.font3d.stringWidth(l),m=this.font3d.getAscent();a=e?a-(v(c/2)+2+f):g?a-(v(c/2)+2+v(f/2)):a+(v(c/2)+2);e=d;e=j?e+v(m/2):0==k||kd&&(d=1);this.g3d.drawString(l,this.font3d,a,e,d,d,0)}},"~N,~N,~N,~N,~B,~B,~B,~N,~S");b.drawDashedCylinder=c(b,"drawDashedCylinder",function(a,d,b,c,e,g,j,k,l,f,m,p,z,y){if(!(null==k||0>l)){var n=k[0]; +e-=d;g-=b;j-=c;var r=0,u=k===J.render.FontLineShapeRenderer.ndots,w=u||k===J.render.FontLineShapeRenderer.sixdots;if(w){null==y&&(y=new JU.P3i);var x=(e*e+g*g)/(l*l);u?(n=Math.sqrt(x)/1.5,r=F(n)+2):8>x?k=J.render.FontLineShapeRenderer.twodots:32>x&&(k=J.render.FontLineShapeRenderer.fourdots)}var x=k[1],B=k[2],A=f,C=0==B?m:f;0==r&&(r=k.length);for(var E=0,D=3;D=this.holdRepaint&&(this.holdRepaint=0,a&&(this.repaintPending=!0,this.repaintNow(d)))},"~B,~S");f(b,"requestRepaintAndWait",function(a){var d=null;JV.Viewer.isJS&&!JV.Viewer.isSwingJS&&(d=self.Jmol&&Jmol.repaint?Jmol:null);if(null==d)try{this.repaintNow(a),JV.Viewer.isJS||this.wait(this.vwr.g.repaintWaitMs),this.repaintPending&&(JU.Logger.error("repaintManager requestRepaintAndWait timeout"),this.repaintDone())}catch(b){if(E(b,"InterruptedException"))System.out.println("repaintManager requestRepaintAndWait interrupted thread="+ +Thread.currentThread().getName());else throw b;}else d.repaint(this.vwr.html5Applet,!1),this.repaintDone()},"~S");f(b,"repaintIfReady",function(a){if(this.repaintPending)return!1;this.repaintPending=!0;0==this.holdRepaint&&this.repaintNow(a);return!0},"~S");c(b,"repaintNow",function(){this.vwr.haveDisplay&&this.vwr.apiPlatform.repaint(this.vwr.display)},"~S");f(b,"repaintDone",function(){this.repaintPending=!1});f(b,"clear",function(a){if(null!=this.renderers)if(0<=a)this.renderers[a]=null;else for(a= +0;37>a;++a)this.renderers[a]=null},"~N");c(b,"getRenderer",function(a){if(null!=this.renderers[a])return this.renderers[a];var d=JV.JC.getShapeClassName(a,!0)+"Renderer";if(null==(d=J.api.Interface.getInterface(d,this.vwr,"render")))return null;d.setViewerG3dShapeID(this.vwr,a);return this.renderers[a]=d},"~N");f(b,"render",function(a,d,b,c){null==this.renderers&&(this.renderers=Array(37));this.getAllRenderers();try{var e=this.vwr.getBoolean(603979934);a.renderBackground(null);if(b){this.bsTranslucent.clearAll(); +null!=c&&a.renderCrossHairs(c,this.vwr.getScreenWidth(),this.vwr.getScreenHeight(),this.vwr.tm.getNavigationOffset(),this.vwr.tm.navigationDepthPercent);var g=this.vwr.getRubberBandSelection();null!=g&&a.setC(this.vwr.cm.colixRubberband)&&a.drawRect(g.x,g.y,0,0,g.width,g.height);this.vwr.noFrankEcho=!0}c=null;for(g=0;37>g&&a.currentlyRendering;++g){var j=this.shapeManager.getShape(g);null!=j&&(e&&(c="rendering "+JV.JC.getShapeClassName(g,!1),JU.Logger.startTimer(c)),(b||this.bsTranslucent.get(g))&& +this.getRenderer(g).renderShape(a,d,j)&&this.bsTranslucent.set(g),e&&JU.Logger.checkTimer(c,!1))}a.renderAllStrings(null)}catch(k){if(E(k,Exception)){k.printStackTrace();if(this.vwr.async&&"Interface".equals(k.getMessage()))throw new NullPointerException;JU.Logger.error("rendering error? "+k)}else throw k;}},"JU.GData,JM.ModelSet,~B,~A");c(b,"getAllRenderers",function(){for(var a=!0,d=0;37>d;++d)null==this.shapeManager.getShape(d)||null!=this.getRenderer(d)||(a=this.repaintPending=!this.vwr.async); +if(!a)throw new NullPointerException;});f(b,"renderExport",function(a,d,b){this.shapeManager.finalizeAtoms(null,!0);a=this.vwr.initializeExporter(b);if(null==a)return JU.Logger.error("Cannot export "+b.get("type")),null;null==this.renderers&&(this.renderers=Array(37));this.getAllRenderers();b=null;try{var c=this.vwr.getBoolean(603979934);a.renderBackground(a);for(var e=0;37>e;++e){var g=this.shapeManager.getShape(e);null!=g&&(c&&(b="rendering "+JV.JC.getShapeClassName(e,!1),JU.Logger.startTimer(b)), +this.getRenderer(e).renderShape(a,d,g),c&&JU.Logger.checkTimer(b,!1))}a.renderAllStrings(a);b=a.finalizeOutput()}catch(j){if(E(j,Exception))j.printStackTrace(),JU.Logger.error("rendering error? "+j);else throw j;}return b},"JU.GData,JM.ModelSet,java.util.Map")});n("J.render");A(null,"J.render.ShapeRenderer",["JV.JC"],function(){var b=r(function(){this.shape=this.ms=this.g3d=this.tm=this.vwr=null;this.exportType=this.mad=this.colix=this.shapeID=this.myVisibilityFlag=0;this.isExport=!1;u(this,arguments)}, +J.render,"ShapeRenderer",null);c(b,"initRenderer",function(){});c(b,"setViewerG3dShapeID",function(a,d){this.vwr=a;this.tm=a.tm;this.shapeID=d;this.myVisibilityFlag=JV.JC.getShapeVisibilityFlag(d);this.initRenderer()},"JV.Viewer,~N");c(b,"renderShape",function(a,d,b){this.setup(a,d,b);a=this.render();this.exportType=0;this.isExport=!1;return a},"J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape");c(b,"setup",function(a,d,b){this.g3d=a;this.ms=d;this.shape=b;this.exportType=a.getExportType();this.isExport= +0!=this.exportType},"J.api.JmolRendererInterface,JM.ModelSet,J.shape.Shape");c(b,"isVisibleForMe",function(a){return a.isVisible(this.myVisibilityFlag|9)},"JM.Atom")});n("J.render");A(["J.render.FontLineShapeRenderer","JU.BS","$.P3","$.V3"],"J.render.SticksRenderer",["JU.A4","$.M3","J.c.PAL","JU.C","$.Edge"],function(){var b=r(function(){this.showMultipleBonds=!1;this.multipleBondRadiusFactor=this.multipleBondSpacing=0;this.useBananas=this.bondsPerp=!1;this.modeMultipleBond=0;this.isCartesian=!1; +this.endcaps=0;this.hbondsSolid=this.bondsBackbone=this.hbondsBackbone=this.ssbondsBackbone=!1;this.bond=this.b=this.a=null;this.bondOrder=this.mag2d=this.dy=this.dx=this.zB=this.yB=this.xB=this.zA=this.yA=this.xA=0;this.slabByAtom=this.slabbing=this.isAntialiased=this.wireframeOnly=!1;this.bsForPass2=this.p2=this.p1=this.z=this.y=this.x=null;this.isPass2=!1;this.dyStep=this.dxStep=this.yAxis2=this.xAxis2=this.yAxis1=this.xAxis1=0;this.a4=this.rot=null;u(this,arguments)},J.render,"SticksRenderer", +J.render.FontLineShapeRenderer);N(b,function(){this.x=new JU.V3;this.y=new JU.V3;this.z=new JU.V3;this.p1=new JU.P3;this.p2=new JU.P3;this.bsForPass2=JU.BS.newN(64)});f(b,"render",function(){var a=this.ms.bo;if(null==a)return!1;(this.isPass2=this.vwr.gdata.isPass2)||this.bsForPass2.clearAll();this.slabbing=this.tm.slabEnabled;this.slabByAtom=this.vwr.getBoolean(603979939);this.endcaps=3;this.dashDots=this.vwr.getBoolean(603979893)?J.render.FontLineShapeRenderer.sixdots:J.render.FontLineShapeRenderer.dashes; +this.isCartesian=1==this.exportType;this.getMultipleBondSettings(!1);this.wireframeOnly=!this.vwr.checkMotionRendering(1677721602);this.ssbondsBackbone=this.vwr.getBoolean(603979952);this.hbondsBackbone=this.vwr.getBoolean(603979852);this.bondsBackbone=(new Boolean(this.hbondsBackbone|this.ssbondsBackbone)).valueOf();this.hbondsSolid=this.vwr.getBoolean(603979854);this.isAntialiased=this.g3d.isAntialiased();var d=!1;if(this.isPass2){if(!this.isExport)for(var b=this.bsForPass2.nextSetBit(0);0<=b;b= +this.bsForPass2.nextSetBit(b+1))this.bond=a[b],this.renderBond()}else for(b=this.ms.bondCount;0<=--b;)this.bond=a[b],0!=(this.bond.shapeVisibilityFlags&this.myVisibilityFlag)&&this.renderBond()&&(d=!0,this.bsForPass2.set(b));return d});c(b,"getMultipleBondSettings",function(a){this.useBananas=this.vwr.getBoolean(603979886)&&!a;this.multipleBondSpacing=a?0.15:this.vwr.getFloat(570425370);this.multipleBondRadiusFactor=a?0.4:this.vwr.getFloat(570425369);this.bondsPerp=this.useBananas||0this.multipleBondRadiusFactor;this.useBananas&&(this.multipleBondSpacing=0>this.multipleBondSpacing?0.4*-this.multipleBondSpacing:this.multipleBondSpacing);this.multipleBondRadiusFactor=Math.abs(this.multipleBondRadiusFactor);0==this.multipleBondSpacing&&this.isCartesian&&(this.multipleBondSpacing=0.2);this.modeMultipleBond=this.vwr.g.modeMultipleBond;this.showMultipleBonds=0!=this.multipleBondSpacing&&0!=this.modeMultipleBond&&this.vwr.getBoolean(603979928)},"~B");c(b,"renderBond",function(){var a, +d;this.a=a=this.bond.atom1;this.b=d=this.bond.atom2;var b=this.bond.order&131071;this.bondsBackbone&&(this.ssbondsBackbone&&0!=(b&256)?(this.a=this.a.group.getLeadAtomOr(this.a),this.b=this.b.group.getLeadAtomOr(this.b)):this.hbondsBackbone&&JU.Edge.isOrderH(b)&&(this.a=this.a.group.getLeadAtomOr(this.a),this.b=this.b.group.getLeadAtomOr(this.b)));if(!this.isPass2&&(!this.a.isVisible(9)||!this.b.isVisible(9)||!this.g3d.isInDisplayRange(this.a.sX,this.a.sY)||!this.g3d.isInDisplayRange(this.b.sX,this.b.sY)))return!1; +if(this.slabbing){var c=this.vwr.gdata.isClippedZ(this.a.sZ);if(c&&this.vwr.gdata.isClippedZ(this.b.sZ)||this.slabByAtom&&(c||this.vwr.gdata.isClippedZ(this.b.sZ)))return!1}this.zA=this.a.sZ;this.zB=this.b.sZ;if(1==this.zA||1==this.zB)return!1;this.colixA=a.colixAtom;this.colixB=d.colixAtom;2==((this.colix=this.bond.colix)&-30721)?(this.colix&=30720,this.colixA=JU.C.getColixInherited(this.colix|this.vwr.cm.getColixAtomPalette(a,J.c.PAL.CPK.id),this.colixA),this.colixB=JU.C.getColixInherited(this.colix| +this.vwr.cm.getColixAtomPalette(d,J.c.PAL.CPK.id),this.colixB)):(this.colixA=JU.C.getColixInherited(this.colix,this.colixA),this.colixB=JU.C.getColixInherited(this.colix,this.colixB));a=!1;if(!this.isExport&&!this.isPass2&&(d=!JU.C.renderPass2(this.colixA),c=!JU.C.renderPass2(this.colixB),!d||!c)){if(!d&&!c&&!a)return this.g3d.setC(!d?this.colixA:this.colixB),!0;a=!0}this.bondOrder=b&131071;if(0==(this.bondOrder&224)&&(0!=(this.bondOrder&256)&&(this.bondOrder&=-257),0!=(this.bondOrder&1023)&&(!this.showMultipleBonds|| +2==this.modeMultipleBond&&500=this.width)&&this.isAntialiased)this.width=3,this.asLineOnly=!1;b=!this.isExport||1==this.mad?this.width:this.mad;switch(d){case -2:this.drawBond(0);this.getMultipleBondSettings(!1);break;case -1:J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d,this.xA,this.yA,this.zA,this.xB,this.yB,this.zB,J.render.FontLineShapeRenderer.hDashes,this.width,this.colixA,this.colixB,b,this.asLineOnly,this.s1);break;default:switch(this.bondOrder){case 4:this.bondOrder= +2;b=this.multipleBondRadiusFactor;0==b&&1b&&(this.multipleBondSpacing=0.3);this.drawBond(d);this.bondsPerp=!this.bondsPerp;this.bondOrder=2;this.drawBond(d>>2);this.bondsPerp=!this.bondsPerp;this.multipleBondSpacing=b;break;case 5:this.bondOrder=3;b=this.multipleBondRadiusFactor;0==b&&1b&&(this.multipleBondSpacing=0.2);this.drawBond(d);this.bondsPerp=!this.bondsPerp; +this.bondOrder=2;this.multipleBondSpacing*=1.5;this.drawBond(d>>3);this.bondsPerp=!this.bondsPerp;this.multipleBondSpacing=b;break;case 6:this.bondOrder=4;b=this.multipleBondRadiusFactor;0==b&&1b&&(this.multipleBondSpacing=0.15);this.drawBond(d);this.bondsPerp=!this.bondsPerp;this.bondOrder=2;this.multipleBondSpacing*=1.5;this.drawBond(d>>4);this.bondsPerp=!this.bondsPerp;this.multipleBondSpacing=b;break;default:this.drawBond(d)}}return a}); +c(b,"drawBond",function(a){var d=0!=(a&1),b=16384==(this.colixA&30720)||16384==(this.colixB&30720)?2:this.endcaps;if(this.isCartesian&&1==this.bondOrder&&!d)this.g3d.drawBond(this.a,this.b,this.colixA,this.colixB,b,this.mad,-1);else{var c=0==this.dx&&0==this.dy;if(!c||!this.asLineOnly||this.isCartesian){var e=!this.isExport||1==this.mad?this.width:this.mad,g=1>=1;d=0!=(a&1);if(0>=--this.bondOrder)break;this.p1.add(this.y); +this.p2.add(this.y);this.stepAxisCoordinates()}}else if(this.mag2d=Math.round(Math.sqrt(this.dx*this.dx+this.dy*this.dy)),this.resetAxisCoordinates(),this.isCartesian&&3==this.bondOrder)J.render.FontLineShapeRenderer.fillCylinder(this.g3d,this.colixA,this.colixB,b,this.xAxis1,this.yAxis1,this.zA,this.xAxis2,this.yAxis2,this.zB,e,this.asLineOnly),this.stepAxisCoordinates(),this.x.sub2(this.b,this.a),this.x.scale(0.05),this.p1.sub2(this.a,this.x),this.p2.add2(this.b,this.x),this.g3d.drawBond(this.p1, +this.p2,this.colixA,this.colixB,b,this.mad,-2),this.stepAxisCoordinates(),J.render.FontLineShapeRenderer.fillCylinder(this.g3d,this.colixA,this.colixB,b,this.xAxis1,this.yAxis1,this.zA,this.xAxis2,this.yAxis2,this.zB,e,this.asLineOnly);else for(;;){0!=(a&1)?J.render.FontLineShapeRenderer.drawDashedCylinder(this.g3d,this.xAxis1,this.yAxis1,this.zA,this.xAxis2,this.yAxis2,this.zB,this.dashDots,this.width,this.colixA,this.colixB,e,this.asLineOnly,this.s1):J.render.FontLineShapeRenderer.fillCylinder(this.g3d, +this.colixA,this.colixB,b,this.xAxis1,this.yAxis1,this.zA,this.xAxis2,this.yAxis2,this.zB,e,this.asLineOnly);a>>=1;if(0>=--this.bondOrder)break;this.stepAxisCoordinates()}}}},"~N");c(b,"resetAxisCoordinates",function(){var a=this.mag2d>>3;-1!=this.multipleBondSpacing&&0>this.multipleBondSpacing&&(a*=-this.multipleBondSpacing);a=this.width+a;this.dxStep=v(a*this.dy/this.mag2d);this.dyStep=v(a*-this.dx/this.mag2d);this.xAxis1=this.xA;this.yAxis1=this.yA;this.xAxis2=this.xB;this.yAxis2=this.yB;a=this.bondOrder- +1;this.xAxis1-=v(this.dxStep*a/2);this.yAxis1-=v(this.dyStep*a/2);this.xAxis2-=v(this.dxStep*a/2);this.yAxis2-=v(this.dyStep*a/2)});c(b,"stepAxisCoordinates",function(){this.xAxis1+=this.dxStep;this.yAxis1+=this.dyStep;this.xAxis2+=this.dxStep;this.yAxis2+=this.dyStep});c(b,"getAromaticDottedBondMask",function(){var a=this.b.findAromaticNeighbor(this.a.i);return null==a?1:0>this.dx*(a.sY-this.yA)-this.dy*(a.sX-this.xA)?2:1});c(b,"drawBanana",function(a,d,b,c){this.g3d.addRenderer(553648143);this.vectorT.sub2(d, +a);null==this.rot&&(this.rot=new JU.M3,this.a4=new JU.A4);this.a4.setVA(this.vectorT,3.141592653589793*c/180);this.rot.setAA(this.a4);this.pointT.setT(a);this.pointT3.setT(d);this.pointT2.ave(a,d);this.rot.rotate2(b,this.vectorT);this.pointT2.add(this.vectorT);this.tm.transformPtScrT3(a,this.pointT);this.tm.transformPtScrT3(this.pointT2,this.pointT2);this.tm.transformPtScrT3(d,this.pointT3);a=Math.max(this.width,1);this.g3d.setC(this.colixA);this.g3d.fillHermite(5,a,a,a,this.pointT,this.pointT,this.pointT2, +this.pointT3);this.g3d.setC(this.colixB);this.g3d.fillHermite(5,a,a,a,this.pointT,this.pointT2,this.pointT3,this.pointT3)},"JM.Atom,JM.Atom,JU.V3,~N")});n("JS");A(["JS.T"],"JS.ContextToken",["java.util.Hashtable","JS.SV"],function(){var b=r(function(){this.name0=this.forVars=this.contextVariables=null;u(this,arguments)},JS,"ContextToken",JS.T);b.newContext=c(b,"newContext",function(a){a=a?JS.ContextToken.newCmd(1275335685,"{"):JS.ContextToken.newCmd(1275334681,"}");a.intValue=0;return a},"~B");b.newCmd= +c(b,"newCmd",function(a,d){var b=new JS.ContextToken;b.tok=a;b.value=d;return b},"~N,~O");c(b,"addName",function(a){null==this.contextVariables&&(this.contextVariables=new java.util.Hashtable);this.contextVariables.put(a,JS.SV.newS("").setName(a))},"~S")});n("JS");A(null,"JS.ScriptContext",["java.util.Hashtable","JS.SV"],function(){var b=r(function(){this.aatoken=null;this.chk=this.allowJSThreads=!1;this.contextPath=" >> ";this.vars=null;this.displayLoadErrorsSave=!1;this.errorType=this.errorMessageUntranslated= +this.errorMessage=null;this.isEditorScript=this.isEditor=this.executionStepping=this.executionPaused=!1;this.functionName=null;this.iCommandError=-1;this.id=0;this.isComplete=!0;this.isTryCatch=this.isStateScript=this.isJSThread=this.isFunction=!1;this.forVars=null;this.iToken=0;this.lineEnd=2147483647;this.lineNumbers=this.lineIndices=null;this.mustResumeEval=!1;this.parentContext=this.parallelProcessor=this.outputBuffer=null;this.pc0=this.pc=0;this.pcEnd=2147483647;this.scriptFileName=this.scriptExtensions= +this.script=null;this.scriptLevel=0;this.htFileCache=this.statement=null;this.statementLength=0;this.token=null;this.tryPt=0;this.theToken=null;this.theTok=0;this.privateFuncs=this.why=this.pointers=null;u(this,arguments)},JS,"ScriptContext",null);x(b,function(){this.id=++JS.ScriptContext.contextCount});c(b,"setMustResume",function(){for(var a=this;null!=a;)a.mustResumeEval=!0,a.pc=a.pc0,a=a.parentContext});c(b,"getVariable",function(a){for(var d=this,b;null!=d&&!d.isFunction;){if(null!=d.vars&&null!= +(b=d.vars.get(a)))return b;d=d.parentContext}return null},"~S");c(b,"getFullMap",function(){var a=new java.util.Hashtable,d=this;for(null!=this.contextPath&&a.put("_path",JS.SV.newS(this.contextPath));null!=d&&!d.isFunction;){if(null!=d.vars)for(var b,c=d.vars.keySet().iterator();c.hasNext()&&((b=c.next())||1);)if(!a.containsKey(b)){var e=d.vars.get(b);(2!=e.tok||2147483647!=e.intValue)&&a.put(b,e)}d=d.parentContext}return a});c(b,"saveTokens",function(a){this.aatoken=a;if(null==a)this.pointers=null; +else{this.pointers=D(a.length,0);for(var d=this.pointers.length;0<=--d;)this.pointers[d]=null==a[d]?-1:a[d][0].intValue}},"~A");c(b,"restoreTokens",function(){if(null!=this.pointers)for(var a=this.pointers.length;0<=--a;)null!=this.aatoken[a]&&(this.aatoken[a][0].intValue=this.pointers[a]);return this.aatoken});c(b,"getTokenCount",function(){return null==this.aatoken?-1:this.aatoken.length});c(b,"getToken",function(a){return this.aatoken[a]},"~N");b.contextCount=0});n("JS");A(["java.lang.Exception"], +"JS.ScriptException",null,function(){var b=r(function(){this.untranslated=this.message=this.eval=null;this.isError=!1;u(this,arguments)},JS,"ScriptException",Exception);x(b,function(a,d,b,c){this.eval=a;this.message=d;(this.isError=c)&&this.eval.setException(this,d,b)},"JS.ScriptError,~S,~S,~B");c(b,"getErrorMessageUntranslated",function(){return this.untranslated});f(b,"getMessage",function(){return this.message});f(b,"toString",function(){return this.message})});n("JS");A(["javajs.api.JSONEncodable", +"JS.T","JU.P3"],"JS.SV","java.util.Arrays $.Collections $.Hashtable JU.AU $.BArray $.BS $.Base64 $.Lst $.Measure $.PT $.SB JM.BondSet JU.BSUtil $.Escape JV.Viewer".split(" "),function(){var b=r(function(){this.index=2147483647;this.myName=null;W("JS.SV.Sort")||JS.SV.$SV$Sort$();u(this,arguments)},JS,"SV",JS.T,javajs.api.JSONEncodable);b.newV=c(b,"newV",function(a,d){var b=new JS.SV;b.tok=a;b.value=d;return b},"~N,~O");b.newI=c(b,"newI",function(a){var d=new JS.SV;d.tok=2;d.intValue=a;return d},"~N"); +b.newF=c(b,"newF",function(a){if(a!=a)return JS.SV.vNaN;var d=new JS.SV;d.tok=3;d.value=Float.$valueOf(a);return d},"~N");b.newS=c(b,"newS",function(a){return JS.SV.newV(4,a)},"~S");b.newT=c(b,"newT",function(a){return JS.SV.newSV(a.tok,a.intValue,a.value)},"JS.T");b.newSV=c(b,"newSV",function(a,d,b){a=JS.SV.newV(a,b);a.intValue=d;return a},"~N,~N,~O");c(b,"setv",function(a){this.index=a.index;this.intValue=a.intValue;this.tok=a.tok;this.value=a.value;return this},"JS.SV");b.copySafely=c(b,"copySafely", +function(a){return null==a.myName?a:(new JS.SV).setv(a)},"JS.SV");b.sizeOf=c(b,"sizeOf",function(a){switch(null==a?0:a.tok){case 10:return JS.SV.bsSelectToken(a).cardinality();case 15:return a.value.data.length;case 4:return a.value.length;case 7:return 2147483647==a.intValue?a.getList().size():JS.SV.sizeOf(JS.SV.selectItemTok(a,-2147483648));case 6:return a.value.size();case 14:return a.value.getFullMap().size();case 1073742335:case 1073742334:return-1;case 2:return-2;case 3:return-4;case 8:return-8; +case 9:return-16;case 11:return-32;case 12:return-64;default:return 0}},"JS.T");b.isVariableType=c(b,"isVariableType",function(a){return C(a,"JS.SV")||C(a,Boolean)||C(a,Integer)||C(a,Float)||"string"==typeof a||C(a,"JU.T3")||C(a,"JU.BS")||C(a,"JU.P4")||C(a,"JU.Quat")||C(a,"JU.M34")||C(a,"java.util.Map")||C(a,"JU.Lst")||C(a,"JU.BArray")||C(a,"JS.ScriptContext")||JS.SV.isArray(a)},"~O");b.isArray=c(b,"isArray",function(a){return C(a,Array)},"~O");b.getVariable=c(b,"getVariable",function(a){return null== +a?JS.SV.newS(""):C(a,"JS.SV")?a:C(a,Boolean)?JS.SV.getBoolean(a.booleanValue()):C(a,Integer)?JS.SV.newI(a.intValue()):C(a,Float)?JS.SV.newV(3,a):"string"==typeof a?(a=JS.SV.unescapePointOrBitsetAsVariable(a),C(a,"JS.SV")?a:JS.SV.newV(4,a)):C(a,"JU.P3")?JS.SV.newV(8,a):C(a,"JU.V3")?JS.SV.newV(8,JU.P3.newP(a)):C(a,"JU.BS")?JS.SV.newV(10,a):C(a,"JU.P4")?JS.SV.newV(9,a):C(a,"JU.Quat")?JS.SV.newV(9,a.toPoint4f()):C(a,"JU.M34")?JS.SV.newV(C(a,"JU.M4")?12:11,a):C(a,"java.util.Map")?JS.SV.getVariableMap(a): +C(a,"JU.Lst")?JS.SV.getVariableList(a):C(a,"JU.BArray")?JS.SV.newV(15,a):C(a,"JS.ScriptContext")?JS.SV.newV(14,a):JS.SV.isASV(a)?JS.SV.getVariableAV(a):JU.AU.isAI(a)?JS.SV.getVariableAI(a):JU.AU.isAB(a)?JS.SV.getVariableAB(a):JU.AU.isAF(a)?JS.SV.getVariableAF(a):JU.AU.isAD(a)?JS.SV.getVariableAD(a):JU.AU.isAS(a)?JS.SV.getVariableAS(a):JU.AU.isAP(a)?JS.SV.getVariableAP(a):JU.AU.isAII(a)?JS.SV.getVariableAII(a):JU.AU.isAFF(a)?JS.SV.getVariableAFF(a):JU.AU.isASS(a)?JS.SV.getVariableASS(a):JU.AU.isADD(a)? +JS.SV.getVariableADD(a):JU.AU.isAFloat(a)?JS.SV.newV(13,a):JS.SV.newJSVar(a)},"~O");b.isASV=c(b,"isASV",function(a){return!JV.Viewer.isSwingJS?a&&a[0]&&"JS.SV"==a[0].__CLASS_NAME__:C(a,Array)},"~O");b.newJSVar=c(b,"newJSVar",function(a){var d,b,c,e,g;switch(a.BYTES_PER_ELEMENT?Array:a.constructor){case Boolean:d=0;b=a;break;case Number:d=1;c=a;break;case Array:d=2;e=a;break;case Object:d=3,e=a,g=Object.keys(a)}switch(d){case 0:return b?JS.SV.vT:JS.SV.vF;case 1:return 2147483647=d&&(d=b.size()-d);if(2147483647!=d)return 1>d||d>b.size()?"":JS.SV.sValue(b.get(d-1));case 6:case 14:if("string"==typeof a.value)return a.value;d=new JU.SB;JS.SV.sValueArray(d,a,"","",!1,!0,!0, +2147483647,!1);return JU.PT.rep(d.toString(),"\n\x00"," ");case 4:return b=a.value,d=a.intValue,0>=d&&(d=b.length-d),2147483647==d?b:1>d||d>b.length?"":""+b.charAt(d-1);case 8:return JU.Escape.eP(a.value);case 9:return JU.Escape.eP4(a.value);case 11:case 12:return JU.Escape.e(a.value);default:return a.value.toString()}},"JS.T");b.sValueArray=c(b,"sValueArray",function(a,d,b,c,e,g,j,k,l){switch(d.tok){case 6:case 14:case 7:var f=";"+d.hashCode()+";";if(0<=b.indexOf(f)){a.append(e?7==d.tok?"[ ]":"{ }": +(7==d.tok?"":"\x00")+'"<'+(null==d.myName?"circular reference":d.myName)+'>"');break}b+=f;if(7==d.tok){if(!j)break;g||a.append(e?"[ ":c+"[\n");d=d.getList();for(f=0;fj)){var l=b.keySet(),l=b.keySet().toArray(Array(l.size()));java.util.Arrays.sort(l);if(e){a.append("{ ");for(var f="",m=0;m=d?d:1);a=JS.SV.selectItemTok(a,0>=d?2147483646:d);return a.value},"JS.T,~N");b.selectItemVar=c(b,"selectItemVar",function(a){return 2147483647!=a.index||(7==a.tok||15==a.tok)&&2147483647==a.intValue?a:JS.SV.selectItemTok(a,-2147483648)},"JS.SV");b.selectItemTok=c(b,"selectItemTok",function(a,d){switch(a.tok){case 11:case 12:case 10:case 7:case 15:case 4:break;default:return C(a,"JS.SV")&&null!=a.myName?JS.SV.copySafely(a): +a}var b=null,c=null,e=a.intValue,g=-2147483648==d;if(2147483647==e)return g&&4==a.tok?a:JS.SV.newSV(a.tok,g?e:d,a.value);var j=0,k=C(a,"JS.SV")&&2147483647!=a.index,l=JS.SV.newSV(a.tok,2147483647,null);switch(a.tok){case 10:C(a.value,"JM.BondSet")?(b=JM.BondSet.newBS(a.value),j=b.cardinality()):(b=JU.BSUtil.copy(a.value),j=k?1:b.cardinality());break;case 15:j=a.value.data.length;break;case 7:j=a.getList().size();break;case 4:c=a.value;j=c.length;break;case 11:j=-3;break;case 12:j=-4}if(0>j){j=-j; +if(0j)return l=e%10,e=v((e-l)/10),0j)return JS.SV.newV(4,"");b=L(j,0);0>e?a.value.getColumn(-1-e,b):a.value.getRow(e-1,b);return g?JS.SV.getVariableAF(b):1>d||d>j?JS.SV.newV(4,""):JS.SV.newV(3,Float.$valueOf(b[d-1]))}0>=e&&(e=j+e);g||(1>e&&(e=1),0==d?d=j:0>d&&(d=j+d),dd)&&b.clear(g);break;case 4:l.value=0>--e||e>=j?"":g?c.substring(e,e+1):c.substring(e,Math.min(d,j));break;case 7:if(0>--e||e>=j)return JS.SV.newV(4,"");if(g)return a.getList().get(e);b=new JU.Lst;g=a.getList();c=Math.min(d,j)-e;for(j=0;j--e||e>=j)return JS.SV.newV(4,"");b=a.value.data;if(g)return JS.SV.newI(b[e]);g=O(Math.min(d, +j)-e,0);for(j=g.length;0<=--j;)g[j]=b[e+j];l.value=new JU.BArray(g)}return l},"JS.T,~N");c(b,"setSelectedValue",function(a,d,b){if(2147483647!=a){var c;switch(this.tok){case 11:case 12:c=11==this.tok?3:4;if(2147483647!=d){var e=a;if(0=a&&(a=e+a);for(0>--a&&(a=0);a>=c.length;)c+=" ";if(2147483647==d)d=a;else for(0>--d&&(d=e+d);d>=c.length;)c+=" ";d>=a&&(this.value=c.substring(0,a)+JS.SV.sValue(b)+c.substring(++d));this.intValue=this.index=2147483647;break;case 7:e=this.value;c=e.size();0>=a&&(a=c+a);0>--a&&(a=0);if(c<=a)for(d=c;d<= +a;d++)e.addLast(JS.SV.newV(4,""));e.set(a,b)}}},"~N,~N,JS.SV");c(b,"escape",function(){switch(this.tok){case 4:return JU.PT.esc(this.value);case 11:case 12:return JU.PT.toJSON(null,this.value);case 7:case 6:case 14:var a=new JU.SB;JS.SV.sValueArray(a,this,"","",!0,!1,!0,2147483647,!1);return a.toString();default:return JS.SV.sValue(this)}});b.unescapePointOrBitsetAsVariable=c(b,"unescapePointOrBitsetAsVariable",function(a){if(null==a)return a;var d=null,b=null;if(C(a,"JS.SV"))switch(a.tok){case 8:case 9:case 11:case 12:case 10:d= +a.value;break;case 4:b=a.value;break;default:b=JS.SV.sValue(a)}else"string"==typeof a&&(b=a);if(null!=b&&0==b.length)return b;null==d&&(d=JU.Escape.uABsM(b));return C(d,"JU.P3")?JS.SV.newV(8,d):C(d,"JU.P4")?JS.SV.newV(9,d):C(d,"JU.BS")?(null!=b&&0==b.indexOf("[{")&&(d=JM.BondSet.newBS(d)),JS.SV.newV(10,d)):C(d,"JU.M34")?JS.SV.newV(C(d,"JU.M3")?11:12,d):a},"~O");b.getBoolean=c(b,"getBoolean",function(a){return JS.SV.newT(a?JS.SV.vT:JS.SV.vF)},"~B");b.sprintf=c(b,"sprintf",function(a,d){if(null==d)return a; +var b=7==d.tok,c=0<=a.indexOf("d")||0<=a.indexOf("i")?D(1,0):null,e=0<=a.indexOf("f")?L(1,0):null,g=0<=a.indexOf("e")?R(1,0):null,j=0<=a.indexOf("s"),k=0<=a.indexOf("p")&&(b||8==d.tok),l=0<=a.indexOf("q")&&(b||9==d.tok),f=w(-1,[c,e,g,null,null,null]);if(!b)return JS.SV.sprintf(a,d,f,c,e,g,j,k,l);for(var b=d.getList(),m=Array(b.size()),p=0;pa.value.distance(d.value); +case 9:return 1E-6>a.value.distance4(d.value);case 11:return a.value.equals(d.value);case 12:return a.value.equals(d.value)}return a.isNaN()?d.isNaN():1E-6>Math.abs(JS.SV.fValue(a)-JS.SV.fValue(d))},"JS.SV,JS.SV");b.isLike=c(b,"isLike",function(a,d){return null!=a&&null!=d&&4==a.tok&&4==d.tok&&JU.PT.isLike(a.value,d.value)},"JS.SV,JS.SV");c(b,"sortOrReverse",function(a){var d=this.getList();if(null!=d&&1c)return JS.SV.newS("");var e=b.substring(c);this.value=b.substring(0,c);return JS.SV.newS(e)}this.value+=JS.SV.sValue(d);return this}c=this.getMap();if(null==c){b=this.getList();if(null==d||null==b)return null==b||0==b.size()?JS.SV.newS(""):b.removeItemAt(b.size()-1);b.addLast(JS.SV.copySafely(d))}else null== +d?c.clear():(b=d.getMap(),null!=b&&c.putAll(b))}else{c=this.getMap();if(null==d){b=null;if(null==c){var c=this.getList(),e=c.size(),g=JS.SV.iValue(a)-1;0>g&&(g+=e);0<=g&&g=d?null:a.get(c),0);return b},"JS.T,~N");b.flistValue=c(b,"flistValue",function(a,d){if(null==a||7!=a.tok)return L(-1,[JS.SV.fValue(a)]);var b=a.getList(),c;c=L(Math.max(d,b.size()),0);0==d&&(d=c.length);for(var e=Math.min(b.size(),d);0<=--e;)c[e]=JS.SV.fValue(b.get(e));return c},"JS.T,~N");c(b,"toArray",function(){var a,d,b=null,c=null;switch(this.tok){case 11:b=this.value;a=3;break;case 12:c=this.value;a=4;break;case 7:return this;case 1275068418:return this.arrayToList(new JS.SV); +default:return d=new JU.Lst,d.addLast(this),JS.SV.newV(7,d)}d=new JU.Lst;for(var e=0;ea.value.indexOf("\n");default:return!0}},"JS.SV");f(b,"toJSON",function(){switch(this.tok){case 1073742335:case 1073742334:case 2:case 3:return JS.SV.sValue(this);case 15:return JU.PT.byteArrayToJSON(this.value.data); +case 14:return JU.PT.toJSON(null,this.value.getFullMap());case 7:case 6:if(null!=this.myName)return this.myName=null,6==this.tok?"{ }":"[ ]";this.myName="x";var a=JU.PT.toJSON(null,this.value);this.myName=null;return a;default:return JU.PT.toJSON(null,this.value)}});c(b,"mapGet",function(a){return this.getMap().get(a)},"~S");c(b,"mapPut",function(a,d){switch(this.tok){case 6:case 14:this.getMap().put(a,JS.SV.copySafely(d).setName(a))}},"~S,JS.SV");c(b,"getMap",function(){switch(this.tok){case 6:return this.value; +case 14:return this.value.vars}return null});c(b,"getMapKeys",function(a,d){if(6!=this.tok)return"";var b=new JU.SB;JS.SV.sValueArray(b,this,"","",!0,!1,!1,a+1,d);return b.toString()},"~N,~B");f(b,"toString",function(){return this.toString2()+"["+this.myName+" index ="+this.index+" intValue="+this.intValue+"]"});c(b,"getKeys",function(a){switch(this.tok){case 6:case 14:case 7:break;default:return null}var d=new JU.Lst;this.getKeyList(a,d,"");a=d.toArray(Array(d.size()));java.util.Arrays.sort(a);return a}, +"~B");c(b,"getKeyList",function(a,d,b){var c=this.getMap();if(null==c){if(a){var e,g;null!=(e=this.getList())&&0<(g=e.size())&&e.get(g-1).getKeyList(!0,d,b+"."+g+".")}}else for(var j,c=c.entrySet().iterator();c.hasNext()&&((j=c.next())||1);){e=j.getKey();if(a&&(0==e.length||!JU.PT.isLetter(e.charAt(0))))b.endsWith(".")&&(b=b.substring(0,b.length-1)),e="["+JU.PT.esc(e)+"]";d.addLast(b+e);a&&j.getValue().getKeyList(!0,d,b+e+".")}},"~B,JU.Lst,~S");b.deepCopy=c(b,"deepCopy",function(a,d,b){if(d){d=new java.util.Hashtable; +var c;for(a=a.entrySet().iterator();a.hasNext()&&((c=a.next())||1);){var e=c.getValue();d.put(c.getKey(),b?JS.SV.deepCopySV(e):e)}return d}c=new JU.Lst;d=0;for(e=a.size();de?1:0}if(4==a.tok||4==b.tok)return JS.SV.sValue(a).compareTo(JS.SV.sValue(b))}switch(a.tok){case 2:return a.intValueb.intValue?1:0;case 4:return JS.SV.sValue(a).compareTo(JS.SV.sValue(b));case 7:c=a.getList();e=b.getList(); +if(c.size()!=e.size())return c.size()g&&(g+=c.size());return 0>g||g>=c.size()?0:this.compare(c.get(g),e.get(g));case 6:if(null!=this.myKey)return this.compare(a.getMap().get(this.myKey),b.getMap().get(this.myKey));default:return c=JS.SV.fValue(a),e=JS.SV.fValue(b),ce?1:0}},"JS.SV,JS.SV")};b.vT=JS.SV.newSV(1073742335,1,"true");b.vF=JS.SV.newSV(1073742334,0,"false");b.vNaN=JS.SV.newSV(3,2147483647,Float.$valueOf(NaN));b.pt0=new JU.P3});n("JS");A(["java.util.Hashtable"], +"JS.T",["java.util.Arrays","JU.AU","$.Lst","JU.Logger"],function(){var b=r(function(){this.tok=0;this.value=null;this.intValue=2147483647;u(this,arguments)},JS,"T",null);b.t=c(b,"t",function(a){var d=new JS.T;d.tok=a;return d},"~N");b.tv=c(b,"tv",function(a,d,b){a=JS.T.t(a);a.intValue=d;a.value=b;return a},"~N,~N,~O");b.o=c(b,"o",function(a,d){var b=JS.T.t(a);b.value=d;return b},"~N,~O");b.n=c(b,"n",function(a,d){var b=JS.T.t(a);b.intValue=d;return b},"~N,~N");b.i=c(b,"i",function(a){var d=JS.T.t(2); +d.intValue=a;return d},"~N");b.tokAttr=c(b,"tokAttr",function(a,d){return(a&d)==(d&d)},"~N,~N");b.tokAttrOr=c(b,"tokAttrOr",function(a,d,b){return(a&d)==(d&d)||(a&b)==(b&b)},"~N,~N,~N");b.getPrecedence=c(b,"getPrecedence",function(a){return a>>9&15},"~N");b.getMaxMathParams=c(b,"getMaxMathParams",function(a){return a>>9&3},"~N");b.addToken=c(b,"addToken",function(a,d){JS.T.tokenMap.put(a,d)},"~S,JS.T");b.getTokenFromName=c(b,"getTokenFromName",function(a){return JS.T.tokenMap.get(a)},"~S");b.getTokFromName= +c(b,"getTokFromName",function(a){a=JS.T.getTokenFromName(a.toLowerCase());return null==a?0:a.tok},"~S");b.nameOf=c(b,"nameOf",function(a){for(var d,b=JS.T.tokenMap.values().iterator();b.hasNext()&&((d=b.next())||1);)if(d.tok==a)return""+d.value;return"0x"+Integer.toHexString(a)},"~N");f(b,"toString",function(){return this.toString2()});c(b,"toString2",function(){return"Token["+JS.T.astrType[16>this.tok?this.tok:16]+"("+this.tok%1E3+"/0x"+Integer.toHexString(this.tok)+")"+(2147483647==this.intValue? +"":" intValue="+this.intValue+"(0x"+Integer.toHexString(this.intValue)+")")+(null==this.value?"":"string"==typeof this.value?' value="'+this.value+'"':" value="+this.value)+"]"});b.getCommandSet=c(b,"getCommandSet",function(a){var d="",b=new java.util.Hashtable,h=0;a=null==a||0==a.length?null:a.toLowerCase();for(var c=null!=a&&1= > != <> LIKE within . .. [ ] { } $ % ; ++ -- ** \\ animation anim assign axes backbone background bind bondorder boundbox boundingBox break calculate capture cartoon cartoons case catch cd center centre centerat cgo color colour compare configuration conformation config connect console contact contacts continue data default define @ delay delete density depth dipole dipoles display dot dots draw echo ellipsoid ellipsoids else elseif end endif exit eval file files font for format frame frames frank function functions geosurface getProperty goto halo halos helix helixalpha helix310 helixpi hbond hbonds help hide history hover if in initialize invertSelected isosurface javascript label labels lcaoCartoon lcaoCartoons load log loop matrix measure measures monitor monitors meshribbon meshribbons message minimize minimization mo model models modulation move moveTo mutate navigate navigation nbo origin out parallel pause wait plot private plot3d pmesh polygon polyhedra polyhedron print process prompt quaternion quaternions quit ramachandran rama refresh reset unset restore restrict return ribbon ribbons rocket rockets rotate rotateSelected save select selectionHalos selectionHalo showSelections sheet show slab spacefill cpk spin ssbond ssbonds star stars step steps stereo strand strands structure _structure strucNo struts strut subset subsystem synchronize sync trace translate translateSelected try unbind unitcell var vector vectors vibration while wireframe write zap zoom zoomTo atom atoms axisangle basepair basepairs orientation orientations pdbheader polymer polymers residue residues rotation row sequence seqcode shape state symbol symmetry symmetryHM spaceGroup transform translation url _ abs absolute _args acos add adpmax adpmin align altloc altlocs ambientOcclusion amino angle array as _a atomID _atomID atomIndex atomName atomno atomType atomX atomY atomZ average babel babel21 back backlit backshell balls baseModel best beta bin bondCount bonded bottom branch brillouin bzone cache carbohydrate cell chain chains chainNo chemicalShift cs clash clear clickable clipboard connected context constraint contourLines coord coordinates coords cos cross covalentRadius covalent direction displacement displayed distance div DNA domains dotted DSSP DSSR element elemno _e error exportScale fill find fixedTemperature forcefield formalCharge charge eta front frontlit frontOnly fullylit fx fy fz fxyz fux fuy fuz fuxyz group groups group1 _g groupID _groupID groupIndex hidden highlight hkl hydrophobicity hydrophobic hydro id identify ident image info infoFontSize inline insertion insertions intramolecular intra intermolecular inter bondingRadius ionicRadius ionic isAromatic Jmol JSON join keys last left length lines list magneticShielding ms mass max mep mesh middle min mlp mode modify modifyOrCreate modt modt1 modt2 modt3 modx mody modz modo modxyz molecule molecules modelIndex monomer morph movie mouse mul mul3 nboCharges nci next noDelay noDots noFill noMesh none null inherit normal noBackshell noContourLines notFrontOnly noTriangles now nucleic occupancy omega only opaque options partialCharge pattern phi pivot plane planar play playRev point points pointGroup polymerLength pop previous prev probe property properties protein psi purine push PyMOL pyrimidine random range rasmol replace resno resume rewind reverse right rmsd RNA rna3d rock rubberband rxyz saSurface saved scale scene search smarts selected seqid shapely sidechain sin site size smiles substructure solid sort specialPosition sqrt split starWidth starScale stddev straightness structureId supercell sub sum sum2 surface surfaceDistance symop symops sx sy sz sxyz temperature relativeTemperature tensor theta thisModel ticks top torsion trajectory trajectories translucent transparent triangles trim type ux uy uz uxyz user valence vanderWaals vdw vdwRadius visible volume vx vy vz vxyz xyz w wyckoff wyckoffm x y z addHydrogens allConnected angstroms anisotropy append arc area aromatic arrow async audio auto axis barb binary blockData cancel cap cavity centroid check checkCIR chemical circle collapsed col colorScheme command commands contour contours corners count criterion create crossed curve cutoff cylinder diameter discrete distanceFactor downsample drawing dynamicMeasurements eccentricity ed edges edgesOnly energy exitJmol faceCenterOffset filter first fixed fix flat fps from frontEdges full fullPlane functionXY functionXYZ gridPoints hiddenLinesDashed homo ignore InChI InChIKey increment insideout interior intersection intersect internal lattice line lineData link lobe lonePair lp lumo macro manifest mapProperty maxSet menu minSet modelBased molecular mrc msms name nmr noCross noDebug noEdges noHead noLoad noPlane object obj offset offsetSide once orbital atomicOrbital packed palindrome parameters path pdb period periodic perpendicular perp phase planarParam pocket pointsPerAngstrom radical rad reference remove resolution reverseColor rotate45 selection sigma sign silent sphere squared stdInChI stdInChIKey stop title titleFormat to validation value variable variables vertices width wigner wignerSeitz backgroundModel celShading celShadingPower debug debugHigh defaultLattice measurements measurement scale3D toggleLabel userColorScheme throw timeout timeouts window animationMode appletProxy atomTypes axesColor axis1Color axis2Color axis3Color backgroundColor bondmode boundBoxColor boundingBoxColor chirality cipRule currentLocalPath dataSeparator defaultAngleLabel defaultColorScheme defaultColors defaultDirectory defaultDistanceLabel defaultDropScript defaultLabelPDB defaultLabelXYZ defaultLoadFilter defaultLoadScript defaults defaultTorsionLabel defaultVDW drawFontSize eds edsDiff energyUnits fileCacheDirectory fontsize helpPath hoverLabel language loadFormat loadLigandFormat logFile measurementUnits nihResolverFormat nmrPredictFormat nmrUrlFormat pathForAllFiles picking pickingStyle pickLabel platformSpeed propertyColorScheme quaternionFrame smilesUrlFormat smiles2dImageFormat unitCellColor axesOffset axisOffset axesScale axisScale bondTolerance cameraDepth defaultDrawArrowScale defaultTranslucent dipoleScale ellipsoidAxisDiameter gestureSwipeFactor hbondsAngleMinimum hbondHXDistanceMaximum hbondsDistanceMaximum hbondNODistanceMaximum hoverDelay loadAtomDataTolerance minBondDistance minimizationCriterion minimizationMaxAtoms modulationScale mouseDragFactor mouseWheelFactor navFPS navigationDepth navigationSlab navigationSpeed navX navY navZ particleRadius pointGroupDistanceTolerance pointGroupLinearTolerance radius rotationRadius scaleAngstromsPerInch sheetSmoothing slabRange solventProbeRadius spinFPS spinX spinY spinZ stereoDegrees strutDefaultRadius strutLengthMaximum vectorScale vectorsCentered vectorSymmetry vectorTrail vibrationPeriod vibrationScale visualRange ambientPercent ambient animationFps axesMode bondRadiusMilliAngstroms bondingVersion delayMaximumMs diffusePercent diffuse dotDensity dotScale ellipsoidDotCount helixStep hermiteLevel historyLevel labelpointerwidth lighting logLevel meshScale minimizationReportSteps minimizationSteps minPixelSelRadius percentVdwAtom perspectiveModel phongExponent pickingSpinRate propertyAtomNumberField propertyAtomNumberColumnCount propertyDataColumnCount propertyDataField repaintWaitMs ribbonAspectRatio contextDepthMax scriptReportingLevel showScript smallMoleculeMaxAtoms specular specularExponent specularPercent specPercent specularPower specpower strandCount strandCountForMeshRibbon strandCountForStrands strutSpacing zDepth zSlab zshadePower allowEmbeddedScripts allowGestures allowKeyStrokes allowModelKit allowMoveAtoms allowMultiTouch allowRotateSelected antialiasDisplay antialiasImages antialiasTranslucent appendNew applySymmetryToBonds atomPicking allowAudio autobond autoFPS autoplayMovie axesMolecular axesOrientationRasmol axesUnitCell axesWindow bondModeOr bondPicking bonds bond cartoonBaseEdges cartoonBlocks cartoonBlockHeight cartoonsFancy cartoonFancy cartoonLadders cartoonRibose cartoonRockets cartoonSteps chainCaseSensitive cipRule6Full colorRasmol debugScript defaultStructureDssp disablePopupMenu displayCellParameters showUnitcellInfo dotsSelectedOnly dotSurface doublePrecision dragSelected drawHover drawPicking dsspCalculateHydrogenAlways elementKey ellipsoidArcs ellipsoidArrows ellipsoidAxes ellipsoidBall ellipsoidDots ellipsoidFill fileCaching fontCaching fontScaling forceAutoBond fractionalRelative greyscaleRendering hbondsBackbone hbondsRasmol hbondsSolid hetero hideNameInPopup hideNavigationPoint hideNotSelected highResolution hydrogen hydrogens imageState isKiosk isosurfaceKey isosurfacePropertySmoothing isosurfacePropertySmoothingPower jmolInJSpecView justifyMeasurements languageTranslation leadAtom leadAtoms legacyAutoBonding legacyHAddition legacyJavaFloat logCommands logGestures macroDirectory measureAllModels measurementLabels measurementNumbers messageStyleChime minimizationRefresh minimizationSilent modelkit modelkitMode modulateOccupancy monitorEnergy multiplebondbananas multipleBondRadiusFactor multipleBondSpacing multiProcessor navigateSurface navigationMode navigationPeriodic partialDots pdbAddHydrogens pdbGetHeader pdbSequential perspectiveDepth preserveState rangeSelected redo redoMove refreshing ribbonBorder rocketBarrels saveProteinStructureState scriptQueue selectAllModels selectHetero selectHydrogen showAxes showBoundBox showBoundingBox showFrank showHiddenSelectionHalos showHydrogens showKeyStrokes showMeasurements showModulationVectors showMultipleBonds showNavigationPointAlways showTiming showUnitcell showUnitcellDetails slabByAtom slabByMolecule slabEnabled smartAromatic solvent solventProbe ssBondsBackbone statusReporting strutsMultiple syncMouse syncScript testFlag1 testFlag2 testFlag3 testFlag4 traceAlpha twistedSheets undoAuto undo undoMax undoMove useMinimizationThread useNumberLocalization waitForMoveTo windowCentered wireframeRotation zeroBasedXyzRasmol zoomEnabled zoomHeight zoomLarge zShade".split(" ")), +j=D(-1,[268442114,-1,-1,-1,-1,-1,-1,268439040,-1,268438017,268438018,268440323,268440322,268440321,268440320,268440325,-1,268440326,134217759,1073742336,1073742337,268437504,268437505,1073742332,1073742338,1073742330,268441090,1073742339,268441602,268441601,268441603,268441091,4097,-1,4098,1611272194,1114249217,1610616835,4100,4101,1812599299,-1,102407,4102,4103,1112152066,-1,102411,102412,20488,12289,-1,4105,135174,1765808134,-1,134221831,1094717448,-1,-1,4106,528395,134353926,-1,102408,134221834, +102413,12290,-1,528397,12291,1073741914,554176526,135175,-1,1610625028,1275069444,1112150019,135176,537022465,1112150020,-1,364547,102402,102409,364548,266255,134218759,1228935687,-1,4114,134320648,1287653388,4115,-1,1611272202,134320141,-1,1112150021,1275072526,20500,1112152070,-1,136314895,2097159,2097160,2097162,1613238294,-1,20482,12294,1610616855,544771,134320649,1275068432,4121,4122,135180,134238732,1825200146,-1,135182,-1,134223363,36869,528411,134217766,1745489939,-1,-1,-1,1112152071,-1,20485, +4126,-1,1073877010,1094717454,-1,1275072532,4128,4129,4130,4131,-1,1073877011,1073742078,1073742079,102436,20487,-1,4133,4134,135190,135188,1073742106,1275203608,-1,36865,102439,134256129,134221850,-1,266281,4138,-1,266284,4141,-1,4142,12295,36866,1112152073,-1,1112152074,-1,528432,4145,4146,1275082241,1611141172,-1,-1,2097184,134222350,554176565,1112152075,-1,1611141175,1611141176,-1,1112152076,-1,266298,-1,528443,1649022989,-1,1639976963,-1,1094713367,659482,-1,2109448,1094713368,4156,-1,1112152078, +4160,4162,364558,4163,1814695966,36868,135198,-1,4166,102406,659488,134221856,12297,4168,4170,1153433601,-1,134217731,1073741863,-1,1073742077,-1,1073742088,1094713362,-1,1073742120,-1,1073742132,1275068935,1086324744,1086324747,1086324748,1073742158,1086326798,1088421903,603979956,134217764,1073742176,1073742178,1073742184,1275068446,134218250,1073741826,134217765,134218241,1275069441,1111490561,1111490562,1073741832,1086324739,-1,553648129,2097154,134217729,1275068418,1073741848,1094713346,-1,-1, +1094713347,1086326786,1094715393,1086326785,1111492609,1111492610,1111492611,96,1073741856,1073741857,1073741858,1073741861,1073741862,1073741859,2097200,1073741864,1073741865,1275068420,1228931586,2097155,1073741871,1073742328,1073741872,-1,134221829,2097188,1094713349,1086326788,-1,1094713351,1111490563,-1,1073741881,1073741882,2097190,1073741884,134217736,14,1073741894,1073741898,1073742329,-1,-1,134218245,1275069442,1111490564,-1,1073741918,1073741922,2097192,1275069443,1275068928,2097156,1073741925, +1073741926,1073741915,1111490587,1086326789,1094715402,1094713353,1073741936,570425357,1073741938,1275068427,1073741946,545259560,1631586315,-1,1111490565,1073741954,1073741958,1073741960,1073741964,1111492612,1111492613,1111492614,1145047050,1111492615,1111492616,1111492617,1145047053,1086324742,-1,1086324743,1094713356,-1,-1,1094713357,2097194,536870920,134219777,1113589786,-1,-1,1073741974,1086324745,-1,4120,1073741982,553648145,1073741984,1086324746,-1,1073741989,-1,1073741990,-1,1111492618,-1, +-1,1073742331,1073741991,1073741992,1275069446,1140850706,1073741993,1073741996,1140850691,1140850692,1073742001,1111490566,-1,1111490567,64,1073742016,1073742018,1073742019,32,1073742022,1073742024,1073742025,1073742026,1111490580,-1,1111490581,1111490582,1111490583,1111490584,1111490585,1111490586,1145045008,1094713360,-1,1094713359,1094713361,1073742029,1073742031,1073742030,1275068929,1275068930,603979891,1073742036,1073742037,603979892,1073742042,1073742046,1073742052,1073742333,-1,-1,1073742056, +1073742057,1073742039,1073742058,1073742060,134218760,2097166,1128269825,1111490568,1073742072,1073742074,1073742075,1111492619,134218753,1111490569,1275068725,134217750,-1,1073742096,1073742098,134217751,-1,1275068447,1094713363,1275334681,1073742108,-1,1073742109,1715472409,-1,2097168,1111490570,2097170,1275335685,1073742110,2097172,134219266,1073742114,1073742116,1275068443,1094715412,4143,1073742125,1140850693,1073742126,1073742127,2097174,1073742128,1073742129,1073742134,1145045003,1073742135, +1073742136,536875059,1073742139,134218756,-1,1113589787,1094713365,1073742144,2097178,134218244,1094713366,1140850694,134218757,1237320707,1073742150,1275068444,2097196,134218246,1275069447,570425403,-1,192,1111490574,1086324749,1073742163,1275068931,128,160,2097180,1111490575,1296041985,-1,1111490571,1111490572,1111490573,1145047052,1111492620,-1,1275068445,1111490576,2097182,1073742164,1073742172,1073742174,536870926,-1,603979967,-1,1073742182,1275068932,1140850696,1111490577,1111490578,1111490579, +1145045006,1073742186,1094715418,1648363544,-1,-1,2097198,1312817669,1111492626,1111492627,1111492628,1145047055,1145047049,1140850705,1086324754,1086324755,1111492629,1111492630,1111492631,1073741828,1073741834,1073741836,1073741837,1073741839,1073741840,1073741842,1075838996,1073741846,1073741849,1073741851,1073741852,1073741854,1073741860,1073741866,1073741868,1073741874,1073741875,1073741876,1094713350,1073741877,603979821,1073741879,1073741880,1073741886,1275068934,1073741888,1073741890,1073741892, +1073741896,1073741900,1073741902,1275068425,1073741905,1073741904,1073741906,1073741908,1073741910,1073741912,1073741917,1073741920,1073741924,1073741928,1073741929,603979836,1073741931,1073741932,1073741933,1073741934,1073741935,266256,1073741937,1073741940,1073741942,12293,-1,1073741948,1073741950,1073741952,1073741956,1073741961,1073741962,1073741966,1073741968,1073741970,603979856,1073741973,1073741976,1275068433,1073741978,1073741981,1073741985,1073741986,134217763,-1,1073741988,1073741994,1073741998, +1073742E3,1073741999,1073742002,1073742004,1073742006,1073742008,4124,1073742010,4125,1073742014,1073742015,1073742020,1073742027,1073742028,1073742032,1073742033,1073742034,1073742038,1073742040,1073742041,1073742044,1073742048,1073742050,1073742054,1073742064,1073742062,1073742066,1073742068,1073742070,1073742076,1073741850,1073742080,1073742082,1073742083,1073742084,1073742086,1073742090,-1,1073742092,-1,1073742094,1073742099,1073742100,1073742104,1073742112,1073742111,1073742118,1073742119,1073742122, +1073742124,1073742130,1073742140,1073742146,1073742147,1073742148,1073742154,1073742156,1073742159,1073742160,1073742162,1073742166,1073742168,1073742170,1073742189,1073742188,1073742190,1073742192,1073742194,1073742196,1073742197,-1,536870914,603979820,553648135,536870916,536870917,536870918,537006096,-1,1610612740,1610612741,536870930,36870,536875070,-1,536870932,545259521,545259522,545259524,545259526,545259528,545259530,545259532,545259534,1610612737,545259536,-1,1086324752,1086324753,545259538, +545259540,545259542,545259545,-1,545259546,545259547,545259548,545259543,545259544,545259549,545259550,545259552,545259554,545259555,570425355,545259556,545259557,545259558,545259559,1610612738,545259561,545259562,545259563,545259564,545259565,545259566,545259568,545259570,545259569,545259571,545259572,545259573,545259574,545259576,553648158,545259578,545259580,545259582,545259584,545259586,570425345,-1,570425346,-1,570425348,570425350,570425352,570425353,570425354,570425356,570425358,570425359,570425361, +570425360,-1,570425362,570425363,570425364,570425365,553648152,570425366,570425367,570425368,570425371,570425372,570425373,570425374,570425376,570425378,570425380,570425381,570425382,570425384,1665140738,570425388,570425390,570425392,570425393,570425394,570425396,570425398,570425400,570425402,570425404,570425406,570425408,1648361473,603979972,603979973,553648185,570425412,570425414,570425416,553648130,-1,553648132,553648133,553648134,553648136,553648137,553648138,-1,553648139,553648140,553648141, +553648142,553648143,553648144,553648147,1073741995,553648148,553648149,553648150,553648151,553648153,553648154,553648155,553648156,553648157,553648160,553648161,553648162,553648164,553648165,553648166,553648167,553648168,536870922,553648170,536870924,553648172,553648174,-1,553648176,-1,553648178,553648180,553648182,553648183,553648186,553648188,553648190,603979778,603979780,603979781,603979782,603979783,603979784,603979785,603979786,603979788,603979790,603979792,603979794,603979796,603979797,603979798, +603979800,603979802,603979804,603979806,603979808,603979809,603979812,603979814,1677721602,-1,603979815,603979810,570425347,603979816,-1,603979817,603979818,603979819,603979811,603979822,603979823,603979824,603979825,603979826,603979827,603979828,-1,603979829,603979830,603979831,603979832,603979833,603979834,603979835,603979838,603979839,603979840,603979841,603979842,603979843,603979844,603979845,603979846,603979847,603979848,603979849,603979850,603979852,603979853,603979854,1612709894,603979858, +603979860,603979862,603979864,1612709900,-1,603979865,603979866,603979867,603979868,553648146,603979869,603979870,603979871,2097165,-1,603979872,603979873,603979874,603979875,603979876,545259567,603979877,603979878,1610612739,603979879,603979880,603979881,603983903,-1,603979884,603979885,603979886,570425369,570425370,603979887,603979888,603979889,603979890,603979893,603979894,603979895,603979896,603979897,603979898,603979899,4139,4140,603979900,603979901,603979902,603979903,603979904,603979906,603979908, +603979910,603979914,603979916,-1,603979918,603979920,603979922,603979924,603979926,603979927,603979928,603979930,603979934,603979936,603979937,603979939,603979940,603979942,603979944,1612709912,603979948,603979952,603979954,603979955,603979957,603979958,603979960,603979962,603979964,603979965,603979966,603979968,603979969,603984065,553648184,4165,603979970,603979971,603979975,603979976,603979977,603979978,603979980,603979982,603979983,603979984]);a.length!=j.length&&(JU.Logger.error("sTokens.length ("+ +a.length+") != iTokens.length! ("+j.length+")"),System.exit(1));e=a.length;for(g=0;gthis.colixes.length)this.colixes=JU.AU.ensureLengthShort(this.colixes,d),this.paletteIDs=JU.AU.ensureLengthByte(this.paletteIDs,d);null==this.bsColixSet&&(this.bsColixSet=JU.BS.newN(this.ms.ac));return d}, +"~N,~N");c(b,"setColixAndPalette",function(a,d,b){null==this.colixes&&this.checkColixLength(-1,this.ms.ac);this.colixes[b]=a=this.getColixI(a,d,b);this.bsColixSet.setBitTo(b,0!=a||0==this.shapeID);this.paletteIDs[b]=d},"~N,~N,~N");f(b,"setAtomClickability",function(){if(this.isActive)for(var a=this.ms.at,d=this.ms.ac;0<=--d;){var b=a[d];null==b||(0==(b.shapeVisibilityFlags&this.vf)||this.ms.isAtomHidden(d))||b.setClickable(this.vf)}});f(b,"getShapeState",function(){return null})});n("J.shape");A(["J.shape.AtomShape"], +"J.shape.Balls",["JU.BS","J.c.PAL","JU.C"],function(){var b=G(J.shape,"Balls",J.shape.AtomShape);f(b,"setSize",function(a,d){2147483647==a?(this.isActive=!0,null==this.bsSizeSet&&(this.bsSizeSet=new JU.BS),this.bsSizeSet.or(d)):this.setSize2(a,d)},"~N,JU.BS");f(b,"setSizeRD",function(a,d){this.isActive=!0;null==this.bsSizeSet&&(this.bsSizeSet=new JU.BS);for(var b=Math.min(this.ms.at.length,d.length()),c=d.nextSetBit(0);0<=c&&c=d.length);a=b.nextSetBit(a+1))e=Integer.$valueOf(d[j++]),c=JU.C.getColixO(e),0==c&&(c=2),e=J.c.PAL.pidOf(e),g=this.ms.at[a],g.colixAtom=this.getColixA(c,e,g),this.bsColixSet.setBitTo(a,2!=c||e!=J.c.PAL.NONE.id),g.paletteID=e}}else if("colors"===a){j=d[0];null==this.bsColixSet&&(this.bsColixSet=new JU.BS);d=this.ms.at;for(a=b.nextSetBit(0);0<=a;a=b.nextSetBit(a+1))if(!(a>=j.length||0==(c=j[a])))d[a].colixAtom=c,d[a].paletteID=J.c.PAL.UNKNOWN.id,this.bsColixSet.set(a)}else if("translucency"=== +a){c=d.equals("translucent");null==this.bsColixSet&&(this.bsColixSet=new JU.BS);d=this.ms.at;for(a=b.nextSetBit(0);0<=a;a=b.nextSetBit(a+1))d[a].setTranslucent(c,this.translucentLevel),c&&this.bsColixSet.set(a)}else a.startsWith("ball")&&(a=a.substring(4).intern()),this.setPropAS(a,d,b)},"~S,~O,JU.BS");f(b,"setAtomClickability",function(){for(var a=this.vwr.slm.bsDeleted,d=this.ms.ac;0<=--d;){var b=this.ms.at[d];null!=b&&(b.setClickable(0),null!=a&&a.get(d)||(0==(b.shapeVisibilityFlags&this.vf)|| +this.ms.isAtomHidden(d))||b.setClickable(this.vf))}})});n("J.shape");A(["J.shape.Shape"],"J.shape.FontLineShape",null,function(){var b=r(function(){this.font3d=this.tickInfos=null;u(this,arguments)},J.shape,"FontLineShape",J.shape.Shape);f(b,"initShape",function(){this.translucentAllowed=!1});c(b,"setPropFLS",function(a,d){if("tickInfo"===a){var b=d.type;if(null==d.ticks)if(" "==d.type)this.tickInfos=null;else{if(null!=this.tickInfos){for(var b=!1,c=0;4>c;c++)null!=this.tickInfos[c]&&this.tickInfos[c].type== +d.type?this.tickInfos[c]=null:b=!0;b||(this.tickInfos=null)}}else null==this.tickInfos&&(this.tickInfos=Array(4)),this.tickInfos["xyz".indexOf(b)+1]=d}else"font"===a&&(this.font3d=d)},"~S,~O");f(b,"getShapeState",function(){return null})});n("J.shape");A(["J.shape.Shape"],"J.shape.Frank",["J.i18n.GT","JV.Viewer"],function(){var b=r(function(){this.baseFont3d=this.currentMetricsFont3d=null;this.scaling=this.dy=this.dx=this.y=this.x=this.frankDescent=this.frankAscent=this.frankWidth=0;this.font3d=null; +u(this,arguments)},J.shape,"Frank",J.shape.Shape);f(b,"initShape",function(){this.myType="frank";this.baseFont3d=this.font3d=this.vwr.gdata.getFont3DFSS("SansSerif","Plain",16);if(JV.Viewer.isJS||JV.Viewer.isSwingJS)J.shape.Frank.frankString="JSmol";this.calcMetrics()});f(b,"setProperty",function(a,d){"font"===a&&10<=d.fontSize&&(this.baseFont3d=d,this.scaling=0)},"~S,~O,JU.BS");f(b,"wasClicked",function(a,d){var b=this.vwr.getScreenWidth(),c=this.vwr.getScreenHeight();return 0b-this.frankWidth- +4&&d>c-this.frankAscent-4},"~N,~N");f(b,"checkObjectHovered",function(a,d){if(!this.vwr.getShowFrank()||!this.wasClicked(a,d)||!this.vwr.menuEnabled())return!1;this.vwr.hoverOnPt(a,d,J.i18n.GT.$("Click for menu..."),null,null);return!0},"~N,~N,JU.BS");c(b,"calcMetrics",function(){this.font3d!==this.currentMetricsFont3d&&(this.currentMetricsFont3d=this.font3d,this.frankWidth=this.font3d.stringWidth(J.shape.Frank.frankString),this.frankDescent=this.font3d.getDescent(),this.frankAscent=this.font3d.getAscent())}); +c(b,"getFont",function(a){a!=this.scaling&&(this.scaling=a,this.font3d=this.vwr.gdata.getFont3DScaled(this.baseFont3d,a),this.calcMetrics())},"~N");f(b,"getShapeState",function(){return null});b.frankString="Jmol"});n("J.shape");A(null,"J.shape.Shape",["J.c.PAL","JU.C","$.Logger","JV.JC"],function(){var b=r(function(){this.ms=this.vwr=this.myType=null;this.translucentLevel=this.vf=this.shapeID=0;this.translucentAllowed=!0;this.isBioShape=!1;this.bsColixSet=this.bsSizeSet=null;u(this,arguments)},J.shape, +"Shape",null);c(b,"initializeShape",function(a,d,b){this.vwr=a;this.shapeID=b;this.vf=JV.JC.getShapeVisibilityFlag(b);this.setModelSet(d);this.initShape()},"JV.Viewer,JM.ModelSet,~N");c(b,"setModelVisibilityFlags",function(){},"JU.BS");c(b,"getSize",function(){return 0},"~N");c(b,"getSizeG",function(){return 0},"JM.Group");c(b,"replaceGroup",function(){},"JM.Group,JM.Group");c(b,"setModelSet",function(a){this.ms=a;this.initModelSet()},"JM.ModelSet");c(b,"initModelSet",function(){});c(b,"setShapeSizeRD", +function(a,d,b){null==d?this.setSize(a,b):this.setSizeRD(d,b)},"~N,J.atomdata.RadiusData,JU.BS");c(b,"setSize",function(){},"~N,JU.BS");c(b,"setSizeRD",function(){},"J.atomdata.RadiusData,JU.BS");c(b,"setPropS",function(a,d){"setProperties"===a?this.setProperties(d):"translucentLevel"===a?this.translucentLevel=d.floatValue():"refreshTrajectories"!==a&&JU.Logger.warn("unassigned "+JV.JC.shapeClassBases[this.shapeID]+" + shape setProperty:"+a+":"+d)},"~S,~O,JU.BS");c(b,"getPropertyData",function(a, +d){return this.getPropShape(a,d)},"~S,~A");c(b,"getPropShape",function(a,d){if(C(d[1],Integer)){var b=d[1].intValue();d[1]=this.getProperty(a,b);return null!=d[1]}return!1},"~S,~A");c(b,"getProperty",function(){return null},"~S,~N");c(b,"getIndexFromName",function(){return-1},"~S");c(b,"wasClicked",function(){return!1},"~N,~N");c(b,"findNearestAtomIndex",function(){},"~N,~N,~A,JU.BS");c(b,"checkBoundsMinMax",function(){},"JU.P3,JU.P3");c(b,"setAtomClickability",function(){});c(b,"checkObjectClicked", +function(){return null},"~N,~N,~N,JU.BS,~B");c(b,"checkObjectHovered",function(){return!1},"~N,~N,JU.BS");c(b,"checkObjectDragged",function(){return!1},"~N,~N,~N,~N,~N,JU.BS");c(b,"coordinateInRange",function(a,d,b,c,e){this.vwr.tm.transformPtScr(b,e);a=(a-e.x)*(a-e.x)+(d-e.y)*(d-e.y);return a<=c?a:-1},"~N,~N,JU.T3,~N,JU.P3i");c(b,"getColixI",function(a,d,b){return this.getColixA(a,d,this.ms.at[b])},"~N,~N,~N");c(b,"getColixA",function(a,d,b){return 2==a?this.vwr.cm.getColixAtomPalette(b,d):a},"~N,~N,JM.Atom"); +c(b,"getColixB",function(a,d,b){return 2==a?this.vwr.cm.getColixBondPalette(b,d):a},"~N,~N,JM.Bond");c(b,"getShapeDetail",function(){return null});b.getColix=c(b,"getColix",function(a,d,b){return JU.C.getColixInherited(null==a||d>=a.length?0:a[d],b.colixAtom)},"~A,~N,JM.Atom");b.getFontCommand=c(b,"getFontCommand",function(a,d){return null==d?"":"font "+a+" "+d.getInfo()},"~S,JU.Font");b.getColorCommandUnk=c(b,"getColorCommandUnk",function(a,d,b){return J.shape.Shape.getColorCommand(a,J.c.PAL.UNKNOWN.id, +d,b)},"~S,~N,~B");b.getColorCommand=c(b,"getColorCommand",function(a,d,b,c){if(d==J.c.PAL.UNKNOWN.id&&0==b)return"";d=d==J.c.PAL.UNKNOWN.id&&0==b?"":(c?J.shape.Shape.getTranslucentLabel(b)+" ":"")+(d!=J.c.PAL.UNKNOWN.id&&!J.c.PAL.isPaletteVariable(d)?J.c.PAL.getPaletteName(d):J.shape.Shape.encodeColor(b));return"color "+a+" "+d},"~S,~N,~N,~B");b.encodeColor=c(b,"encodeColor",function(a){return JU.C.isColixColorInherited(a)?"none":JU.C.getHexCode(a)},"~N");b.getTranslucentLabel=c(b,"getTranslucentLabel", +function(a){return JU.C.isColixTranslucent(a)?JU.C.getColixTranslucencyLabel(a):"opaque"},"~N");b.appendCmd=c(b,"appendCmd",function(a,d){0!=d.length&&a.append(" ").append(d).append(";\n")},"JU.SB,~S");c(b,"setProperties",function(a){var d=this.vwr.bsA();if(C(a,"JU.Lst"))for(;0y||0.6y?m.i:p.i),c.setT(j))}}}}return g},"~N,~N,JU.BS,JU.P3,~A")});n("J.thread");A(["J.thread.JmolThread"],"J.thread.HoverWatcherThread",null,function(){var b=r(function(){this.moved=this.current=this.actionManager=null;this.hoverDelay=0;u(this,arguments)},J.thread,"HoverWatcherThread",J.thread.JmolThread);x(b,function(a,d,b,c){this.setViewer(c,"HoverWatcher");this.actionManager=a;this.current=d;this.moved=b;this.start()},"JV.ActionManager,JV.MouseState,JV.MouseState,JV.Viewer");f(b,"run1",function(a){for(;;)switch(a){case -1:this.isJS|| +Thread.currentThread().setPriority(1);a=0;break;case 0:this.hoverDelay=this.vwr.getHoverDelay();if(this.stopped||0>=this.hoverDelay||!this.runSleep(this.hoverDelay,1))return;a=1;break;case 1:this.moved.is(this.current)&&(this.currentTime=System.currentTimeMillis(),this.currentTime-this.moved.time>(this.vwr.acm.zoomTrigger?100:this.hoverDelay)&&!this.stopped&&this.actionManager.checkHover()),a=0}},"~N")});n("J.thread");A(["java.lang.Thread"],"J.thread.JmolThread",["JU.Logger","JV.Viewer"],function(){var b= +r(function(){this.$name="JmolThread";this.sc=this.eval=this.vwr=null;this.hoverEnabled=this.haveReference=!1;this.sleepTime=this.currentTime=this.lastRepaintTime=this.targetTime=this.startTime=0;this.isReset=this.stopped=this.isJS=!1;this.useTimeout=!0;this.junk=0;u(this,arguments)},J.thread,"JmolThread",Thread);c(b,"setManager",function(){return 0},"~O,JV.Viewer,~O");c(b,"setViewer",function(a,d){this.setName(d);this.$name=d+"_"+ ++J.thread.JmolThread.threadIndex;this.vwr=a;this.isJS=a.isSingleThreaded}, +"JV.Viewer,~S");c(b,"setEval",function(a){this.eval=a;this.sc=this.vwr.getEvalContextAndHoldQueue(a);null!=this.sc&&(this.useTimeout=a.getAllowJSThreads())},"J.api.JmolScriptEvaluator");c(b,"resumeEval",function(){if(!(null==this.eval||!this.isJS&&!this.vwr.testAsync||!this.useTimeout)){this.sc.mustResumeEval=!this.stopped;var a=this.eval,d=this.sc;this.sc=this.eval=null;setTimeout(function(){a.resumeEval(d)},1)}});f(b,"start",function(){this.run()});f(b,"run",function(){this.startTime=System.currentTimeMillis(); +try{this.run1(-1)}catch(a){if(E(a,"InterruptedException")){var d=a;JU.Logger.debugging&&!C(this,"J.thread.HoverWatcherThread")&&this.oops(d)}else if(E(a,Exception))this.oops(a);else throw a;}});c(b,"oops",function(a){JU.Logger.debug(this.$name+" exception "+a);(!JV.Viewer.isJS||JV.Viewer.isSwingJS)&&a.printStackTrace();this.vwr.queueOnHold=!1},"Exception");c(b,"runSleep",function(a,d){if(this.isJS&&!this.useTimeout)return!0;var b=this;setTimeout(function(){b.run1(d)},Math.max(a,0));return!1},"~N,~N"); +c(b,"interrupt",function(){this.stopped=!0;this.vwr.startHoverWatcher(!0);this.isJS||ha(this,J.thread.JmolThread,"interrupt",[])});c(b,"checkInterrupted",function(a){return this.haveReference&&(null==a||!a.$name.equals(this.$name))?!0:this.stopped},"J.thread.JmolThread");c(b,"reset",function(){this.isReset=!0;this.interrupt()});c(b,"toString",function(){return ha(this,J.thread.JmolThread,"toString",[])+"["+this.$name+"]"});b.threadIndex=0});n("J.thread");A(["J.thread.JmolThread"],"J.thread.TimeoutThread", +["JU.SB"],function(){var b=r(function(){this.script=null;this.status=0;this.triggered=!0;u(this,arguments)},J.thread,"TimeoutThread",J.thread.JmolThread);x(b,function(a,d,b,c){this.setViewer(a,d);this.$name=d;this.set(b,c)},"JV.Viewer,~S,~N,~S");c(b,"set",function(a,d){this.sleepTime=a;null!=d&&(this.script=d)},"~N,~S");f(b,"toString",function(){return"timeout name="+this.$name+" executions="+this.status+" mSec="+this.sleepTime+" secRemaining="+(this.targetTime-System.currentTimeMillis())/1E3+" script="+ +this.script});f(b,"run1",function(a){for(;;)switch(a){case -1:this.isJS||Thread.currentThread().setPriority(1);this.targetTime=System.currentTimeMillis()+Math.abs(this.sleepTime);a=0;break;case 0:if(this.checkInterrupted(null)||(null==this.script||0==this.script.length)||!this.runSleep(26,1))return;a=1;break;case 1:a=System.currentTimeMillis()this.sleepTime)? +this.targetTime=System.currentTimeMillis()+Math.abs(this.sleepTime):this.vwr.timeouts.remove(this.$name);this.triggered&&(this.triggered=!1,this.$name.equals("_SET_IN_MOTION_")?this.vwr.checkInMotion(2):this.vwr.evalStringQuiet(a?this.script+';\ntimeout ID "'+this.$name+'";':this.script));a=a?0:-2;break;case -2:this.vwr.timeouts.remove(this.$name);return}},"~N");b.clear=c(b,"clear",function(a){for(var d,b=a.values().iterator();b.hasNext()&&((d=b.next())||1);){var c=d;c.script.equals("exitJmol")|| +c.interrupt()}a.clear()},"java.util.Map");b.setTimeout=c(b,"setTimeout",function(a,d,b,c,e){var g=d.get(b);0==c?null!=g&&(g.interrupt(),d.remove(b)):null!=g?g.set(c,e):(g=new J.thread.TimeoutThread(a,b,c,e),d.put(b,g),g.start())},"JV.Viewer,java.util.Map,~S,~N,~S");b.trigger=c(b,"trigger",function(a,d){var b=a.get(d);null!=b&&(b.triggered=0>b.sleepTime)},"java.util.Map,~S");b.showTimeout=c(b,"showTimeout",function(a,d){var b=new JU.SB;if(null!=a)for(var c,e=a.values().iterator();e.hasNext()&&((c= +e.next())||1);){var g=c;(null==d||g.$name.equalsIgnoreCase(d))&&b.append(g.toString()).append("\n")}return 0"},"java.util.Map,~S")});n("JM");A(["JU.Node","$.Point3fi","J.c.PAL"],"JM.Atom","JU.BS $.CU $.P3 $.PT $.SB J.atomdata.RadiusData J.c.VDW JM.Group JU.C $.Elements JV.JC".split(" "),function(){var b=r(function(){this.altloc="\x00";this.atomSite=this.atomID=0;this.group=null;this.atomNumberFlags=this.valence=this.userDefinedVanDerWaalRadius=0;this.atomSymmetry= +null;this.paletteID=this.colixAtom=this.madAtom=this.formalChargeAndFlags=0;this.bonds=null;this.shapeVisibilityFlags=this.clickabilityFlags=this.nBackbonesDisplayed=this.nBondsDisplayed=0;u(this,arguments)},JM,"Atom",JU.Point3fi,JU.Node);N(b,function(){this.paletteID=J.c.PAL.CPK.id});f(b,"setAtom",function(a,d,b,c,e,g,j,k,l){this.mi=a;this.atomSymmetry=e;this.atomSite=g;this.i=d;this.atomNumberFlags=j;l&&(this.formalChargeAndFlags=2);0!=k&&-2147483648!=k&&this.setFormalCharge(k);this.userDefinedVanDerWaalRadius= +c;null!=b&&this.setT(b);return this},"~N,~N,JU.P3,~N,JU.BS,~N,~N,~N,~B");c(b,"setShapeVisibility",function(a,d){this.shapeVisibilityFlags=d?this.shapeVisibilityFlags|a:this.shapeVisibilityFlags&~a},"~N,~B");c(b,"isCovalentlyBonded",function(a){if(null!=this.bonds)for(var d=this.bonds.length;0<=--d;)if(this.bonds[d].isCovalent()&&this.bonds[d].getOtherAtom(this)===a)return!0;return!1},"JM.Atom");c(b,"isBonded",function(a){if(null!=this.bonds)for(var d=this.bonds.length;0<=--d;)if(this.bonds[d].getOtherAtom(this)=== +a)return!0;return!1},"JM.Atom");c(b,"getBond",function(a){if(null!=this.bonds)for(var d=this.bonds.length;0<=--d;)if(null!=this.bonds[d].getOtherAtom(a))return this.bonds[d];return null},"JM.Atom");c(b,"addDisplayedBond",function(a,d){this.nBondsDisplayed+=d?1:-1;this.setShapeVisibility(a,0b?b:2E3*b);0>c&&0a||(a&127)>=JU.Elements.elementNumberMax||32767a?-3:a)<<24},"~N");c(b,"setVibrationVector",function(){this.formalChargeAndFlags|=1});f(b,"getFormalCharge",function(){return this.formalChargeAndFlags>>24});c(b,"getOccupancy100",function(){var a=this.group.chain.model.ms.occupancies;return null==a?100:Math.round(a[this.i])});c(b,"isOccupied",function(){var a=this.group.chain.model.ms.occupancies;return null==a||50<=a[this.i]}); +c(b,"getBfactor100",function(){var a=this.group.chain.model.ms.bfactor100s;return null==a?0:a[this.i]});c(b,"getHydrophobicity",function(){var a=this.group.chain.model.ms.hydrophobicities;return null==a?JU.Elements.getHydrophobicity(this.group.groupID):a[this.i]});c(b,"setRadius",function(a){return!Float.isNaN(this.userDefinedVanDerWaalRadius=0this.valence});c(b,"setValence",function(a){this.isDeleted()||(this.valence=0>a?0:127>=a?a:127)},"~N");f(b,"getValence",function(){return this.isDeleted()?-1:0d&&0!=b)&&d++}return d},"~B");f(b,"getCovalentBondCount",function(){if(null==this.bonds)return 0;for(var a=0,d=this.bonds.length;0<=--d;){var b=this.bonds[d];b.isCovalentNotPartial0()&&!b.getOtherAtom(this).isDeleted()&&++a}return a});c(b,"getCovalentOrPartialBondCount",function(){if(null==this.bonds)return 0;for(var a=0,d=this.bonds.length;0<=--d;){var b=this.bonds[d];b.isCovalent()&&!b.getOtherAtom(this).isDeleted()&&++a}return a});f(b,"getCovalentHydrogenCount",function(){if(null== +this.bonds)return 0;for(var a=0,d=this.bonds.length;0<=--d;)if(this.bonds[d].isCovalentNotPartial0()){var b=this.bonds[d].getOtherAtom(this);0<=b.valence&&1==b.getElementNumber()&&++a}return a});f(b,"getImplicitHydrogenCount",function(){return this.group.chain.model.ms.getMissingHydrogenCount(this,!1)});f(b,"getTotalHydrogenCount",function(){return this.getCovalentHydrogenCount()+this.getImplicitHydrogenCount()});f(b,"getTotalValence",function(){var a=this.getValence();if(0>a)return a;var d=this.getImplicitHydrogenCount(); +return a+d+this.group.chain.model.ms.aaRet[4]});f(b,"getCovalentBondCountPlusMissingH",function(){return this.getCovalentBondCount()+this.getImplicitHydrogenCount()});c(b,"getTargetValence",function(){switch(this.getElementNumber()){case 6:case 14:case 32:return 4;case 5:case 7:case 15:return 3;case 8:case 16:return 2;case 1:case 9:case 17:case 35:case 53:return 1}return-1});c(b,"getDimensionValue",function(a){return 0==a?this.x:1==a?this.y:this.z},"~N");c(b,"getVanderwaalsRadiusFloat",function(a, +d){return Float.isNaN(this.userDefinedVanDerWaalRadius)?a.getVanderwaalsMarType(this.atomNumberFlags,this.getVdwType(d))/1E3:this.userDefinedVanDerWaalRadius},"JV.Viewer,J.c.VDW");c(b,"getVdwType",function(a){switch(a){case J.c.VDW.AUTO:a=this.group.chain.model.ms.getDefaultVdwType(this.mi);break;case J.c.VDW.NOJMOL:a=this.group.chain.model.ms.getDefaultVdwType(this.mi),a===J.c.VDW.AUTO_JMOL&&(a=J.c.VDW.AUTO_BABEL)}return a},"J.c.VDW");c(b,"getBondingRadius",function(){var a=this.group.chain.model.ms.bondingRadii, +a=null==a||this.i>=a.length?0:a[this.i];return 0==a?JU.Elements.getBondingRadius(this.atomNumberFlags,this.getFormalCharge()):a});c(b,"getVolume",function(a,d){var b=null==d?this.userDefinedVanDerWaalRadius:NaN;Float.isNaN(b)&&(b=a.getVanderwaalsMarType(this.getElementNumber(),this.getVdwType(d))/1E3);var c=0;if(null!=this.bonds)for(var e=0;eb+j)){if(g+b<=j)return 0;j=b-(b*b+g*g-j*j)/(2*g);c-=1.0471975511965976*j*j*(3*b-j)}}return c+4.1887902047863905*b*b*b},"JV.Viewer,J.c.VDW");c(b,"getCurrentBondCount",function(){return null==this.bonds?0:this.bonds.length});c(b,"getRadius",function(){return Math.abs(this.madAtom/2E3)});f(b,"getIndex",function(){return this.i});f(b,"getAtomSite",function(){return this.atomSite});f(b,"getGroupBits",function(a){this.group.setAtomBits(a)},"JU.BS");f(b,"getAtomName", +function(){return 0b)return!1;var g=this.sY-d;b-=e+g*g;if(0>b)return!1;if(null==c)return!0;var e=this.sZ,g=c.sZ,j=v(c.sD/2);if(ea?360+a:a}return this.group.getGroupParameter(d);case 1665140738:case 1112152075:return this.getRadius();case 1111490571:return a.antialiased?v(this.sX/2):this.sX;case 1111490572:return a.getScreenHeight()-(a.antialiased?v(this.sY/2):this.sY);case 1111490573:return a.antialiased?v(this.sZ/2):this.sZ;case 1113589787:return a.slm.isAtomSelected(this.i)? +1:0;case 1111490575:return a.ms.getSurfaceDistanceMax(),this.getSurfaceDistance100()/100;case 1111492620:return this.getBfactor100()/100;case 1111490577:return this.getFractionalUnitCoord(!a.g.legacyJavaFloat,"X",b);case 1111490578:return this.getFractionalUnitCoord(!a.g.legacyJavaFloat,"Y",b);case 1111490579:return this.getFractionalUnitCoord(!a.g.legacyJavaFloat,"Z",b);case 1648363544:return this.getVanderwaalsRadiusFloat(a,J.c.VDW.AUTO);case 1648361473:return d=this.getVibrationVector(),null== +d?0:d.length()*a.getFloat(1648361473);case 1111492626:return this.getVib("x");case 1111492627:return this.getVib("y");case 1111492628:return this.getVib("z");case 1111490583:return this.getVib("X");case 1111490584:return this.getVib("Y");case 1111490585:return this.getVib("Z");case 1111490586:return this.getVib("O");case 1111490580:return this.getVib("1");case 1111490581:return this.getVib("2");case 1111490582:return this.getVib("3");case 1312817669:return this.getVolume(a,J.c.VDW.AUTO);case 1145047050:case 1145047053:case 1145045006:case 1145047052:case 1145047055:case 1145045008:case 1145047049:return a= +this.atomPropertyTuple(a,d,b),null==a?-1:a.length()}return this.atomPropertyInt(d)},"JV.Viewer,~N,JU.P3");c(b,"getVib",function(a){return this.group.chain.model.ms.getVibCoord(this.i,a)},"~S");c(b,"getNominalMass",function(){var a=this.getIsotopeNumber();return 0>16):"")+String.fromCharCode(b&255);var b=this.getUnitCell(),c;if(null==b||null==(c=b.getWyckoffPosition(d.vwr,this,"M")))c="0?";d.setAtomSeqID(this.i,(JU.PT.parseInt(c)<<16)+c.charAt(c.length-1).charCodeAt(0));return a?c:c.substring(c.length-1)},"~B");f(b,"getCIPChirality",function(a){var d=(this.formalChargeAndFlags&496)>>4;0==d&&(1>9;return JV.JC.getCIPRuleName(a+1)});f(b,"setCIPChirality",function(a){this.formalChargeAndFlags=this.formalChargeAndFlags&-4081|a<<4},"~N");f(b,"getCIPChiralityCode",function(){return(this.formalChargeAndFlags&496)>>4});f(b,"getInsertionCode",function(){return this.group.getInsertionCode()});c(b,"atomPropertyTuple",function(a,d,b){switch(d){case 1073742329:return JU.P3.newP(this); +case 1145047050:return this.getFractionalCoordPt(!a.g.legacyJavaFloat,!1,b);case 1145047053:return this.getFractionalCoordPt(!a.g.legacyJavaFloat,!1,b);case 1145045006:return this.group.chain.model.isJmolDataFrame?this.getFractionalCoordPt(!a.g.legacyJavaFloat,!1,b):this.getFractionalUnitCoordPt(!a.g.legacyJavaFloat,!1,b);case 1145047052:return JU.P3.new3(a.antialiased?v(this.sX/2):this.sX,a.getScreenHeight()-(a.antialiased?v(this.sY/2):this.sY),a.antialiased?v(this.sZ/2):this.sZ);case 1145047055:return this.getVibrationVector(); +case 1145045008:return a=this.getModulation(),null==a?null:a.getV3();case 1145047049:return this;case 1765808134:return JU.CU.colorPtFromInt(this.group.chain.model.ms.vwr.gdata.getColorArgbOrGray(this.colixAtom),b)}return null},"JV.Viewer,~N,JU.P3");f(b,"getOffsetResidueAtom",function(a,d){return this.group.getAtomIndex(a,d)},"~S,~N");f(b,"isCrossLinked",function(a){return this.group.isCrossLinked(a.group)},"JU.Node");f(b,"getCrossLinkVector",function(a,d,b){return this.group.getCrossLinkVector(a, +d,b)},"JU.Lst,~B,~B");f(b,"toString",function(){return this.getInfo()});f(b,"findAtomsLike",function(a){return this.group.chain.model.ms.vwr.getAtomBitSet(a)},"~S");c(b,"getUnitID",function(a){var d=this.group.chain.model;return d.isBioModel?d.getUnitID(this,a):""},"~N");f(b,"getFloatProperty",function(a){a=this.group.chain.model.ms.vwr.getDataObj(a,null,1);var d=NaN;if(null!=a)try{d=a[this.i]}catch(b){if(!E(b,Exception))throw b;}return d},"~S");f(b,"modelIsRawPDB",function(){var a=this.group.chain.model; +return a.isBioModel&&!a.isPdbWithMultipleBonds&&0==a.hydrogenCount});c(b,"setSymop",function(a,d){null==this.atomSymmetry&&(this.atomSymmetry=new JU.BS);d&&this.atomSymmetry.clearAll();0a?null:this.at[a].group.getQuaternion(d)},"~N,~S"); +c(b,"getFirstAtomIndexFromAtomNumber",function(a,d){for(var b=0;bthis.maxBondingRadius)this.maxBondingRadius=a;if((a=b.getVanderwaalsRadiusFloat(this.vwr, +J.c.VDW.AUTO))>this.maxVanderwaalsRadius)this.maxVanderwaalsRadius=a}}});c(b,"clearBfactorRange",function(){this.hasBfactorRange=!1});c(b,"calcBfactorRange",function(a){if(!this.hasBfactorRange){this.bfactor100Lo=2147483647;this.bfactor100Hi=-2147483648;if(null==a)for(var d=0;dthis.bfactor100Hi&&(this.bfactor100Hi=a))},"~N");c(b,"getBfactor100Lo",function(){this.hasBfactorRange||(this.vwr.g.rangeSelected?this.calcBfactorRange(this.vwr.bsA()):this.calcBfactorRange(null));return this.bfactor100Lo});c(b,"getBfactor100Hi",function(){this.getBfactor100Lo();return this.bfactor100Hi});c(b,"getSurfaceDistanceMax",function(){null==this.surfaceDistance100s&&this.calcSurfaceDistances();return this.surfaceDistanceMax});c(b,"calculateVolume", +function(a,d){var b=0;if(null!=a)for(var c=a.nextSetBit(0);0<=c;c=a.nextSetBit(c+1))b+=this.at[c].getVolume(this.vwr,d);return b},"JU.BS,J.c.VDW");c(b,"getSurfaceDistance100",function(a){if(0==this.nSurfaceAtoms)return-1;null==this.surfaceDistance100s&&this.calcSurfaceDistances();return this.surfaceDistance100s[a]},"~N");c(b,"calcSurfaceDistances",function(){this.calculateSurface(null,-1)});c(b,"calculateSurface",function(a,d){0>d&&(d=3);var b=J.api.Interface.getOption("geodesic.EnvelopeCalculation", +this.vwr,"ms").set(this.vwr,this.ac,null);b.calculate(new J.atomdata.RadiusData(null,d,J.atomdata.RadiusData.EnumType.ABSOLUTE,null),3.4028235E38,a,JU.BSUtil.copyInvert(a,this.ac),!1,!1,!1,!0);var c=b.getPoints();this.surfaceDistanceMax=0;this.bsSurface=b.getBsSurfaceClone();this.surfaceDistance100s=D(this.ac,0);this.nSurfaceAtoms=JU.BSUtil.cardinalityOf(this.bsSurface);if(0==this.nSurfaceAtoms||null==c||0==c.length)return c;for(var b=3.4028235E38==d?0:d,e=0;e=k)return;c=g.get(b++);break;case 2:if(b>=k)return;c=e[b++]}if(null!=c)switch(d){case 1145047049:this.setAtomCoord(l,c.x,c.y,c.z);break;case 1145047050:case 1145047053:this.at[l].setFractionalCoordTo(c,!1);this.taintAtom(l,2);break;case 1145047055:this.setAtomVibrationVector(l,c)}}},"JU.BS,~N,~O");c(b,"setAtomVibrationVector",function(a,d){this.setVibrationVector(a,d);this.taintAtom(a,12)},"~N,JU.T3"); +c(b,"setAtomCoord",function(a,d,b,c){if(!(0>a||a>=this.ac)){var e=this.at[a];e.set(d,b,c);this.fixTrajectory(e);this.taintAtom(a,2)}},"~N,~N,~N,~N");c(b,"fixTrajectory",function(a){this.isTrajectory(a.mi)&&this.trajectory.fixAtom(a)},"JM.Atom");c(b,"setAtomCoordRelative",function(a,d,b,c){if(!(0>a||a>=this.ac)){var e=this.at[a];e.add3(d,b,c);this.fixTrajectory(e);this.taintAtom(a,2)}},"~N,~N,~N,~N");c(b,"setAtomsCoordRelative",function(a,d,b,c){if(null!=a)for(var e=a.nextSetBit(0);0<=e;e=a.nextSetBit(e+ +1))this.setAtomCoordRelative(e,d,b,c)},"JU.BS,~N,~N,~N");c(b,"setAPa",function(a,d,b,c,e,g,j){var k=0;if(!(null!=g&&0==g.length||null==a)){for(var l=null!=g&&g.length==this.ac||null!=j&&j.length==this.ac,f=a.nextSetBit(0);0<=f;f=a.nextSetBit(f+1)){l&&(k=f);if(null!=g){if(k>=g.length)return;c=g[k++];if(Float.isNaN(c))continue;b=F(c)}else if(null!=j){if(k>=j.length)return;e=j[k++]}var m=this.at[f],p;switch(d){case 1086326786:this.setAtomName(f,e,!0);break;case 1086326785:this.setAtomType(f,e);break; +case 1086326788:this.setChainID(f,e);break;case 1094715393:this.setAtomNumber(f,b,!0);break;case 1094713365:this.setAtomSeqID(f,b);break;case 1111492609:case 1111492629:this.setAtomCoord(f,c,m.y,m.z);break;case 1111492610:case 1111492630:this.setAtomCoord(f,m.x,c,m.z);break;case 1111492611:case 1111492631:this.setAtomCoord(f,m.x,m.y,c);break;case 1111492626:case 1111492627:case 1111492628:this.setVibrationVector2(f,d,c);break;case 1111492612:case 1111492613:case 1111492614:case 1111492615:case 1111492616:case 1111492617:m.setFractionalCoord(d, +c,!1);this.taintAtom(f,2);break;case 1094715402:case 1086326789:this.setElement(m,b,!0);break;case 1631586315:this.resetPartialCharges();m.setFormalCharge(b);this.taintAtom(f,4);break;case 1113589786:this.setHydrophobicity(f,c);break;case 1128269825:p=2>c&&0.01<=c?100*c:c;this.setOccupancy(f,p,!0);break;case 1111492619:this.setPartialCharge(f,c,!0);break;case 1111492618:this.setBondingRadius(f,c);break;case 1111492620:this.setBFactor(f,c,!0);break;case 1094715412:this.setAtomResno(f,b);break;case 1825200146:case 1287653388:this.vwr.shm.setAtomLabel(e, +f);break;case 1665140738:case 1112152075:p=c;0>p?p=0:16a&&(this.vibrations[a]=null); +else if(!Double.isNaN(d.x)&&!Double.isNaN(d.y)&&!Double.isNaN(d.z)){if(null==this.vibrations||this.vibrations.length<=a)this.vibrations=Array(this.at.length);C(d,"JU.Vibration")?this.vibrations[a]=d:(null==this.vibrations[a]&&(this.vibrations[a]=new JU.Vibration),this.vibrations[a].setXYZ(d));this.at[a].setVibrationVector()}},"~N,JU.T3");c(b,"setVibrationVector2",function(a,d,b){var c=this.getVibration(a,!0);if(null!=c){switch(d){case 1111492626:c.x=b;break;case 1111492627:c.y=b;break;case 1111492628:c.z= +b}this.setAtomVibrationVector(a,c)}},"~N,~N,~N");c(b,"setAtomName",function(a,d,b){if(!b||!d.equals(this.at[a].getAtomName())){var c=this.am[this.at[a].mi].isBioModel?this.vwr.getJBR().lookupSpecialAtomID(d):0;this.at[a].atomID=c;0>=c&&(null==this.atomNames&&(this.atomNames=Array(this.at.length)),this.atomNames[a]=d);b&&this.taintAtom(a,0)}},"~N,~S,~B");c(b,"setAtomType",function(a,d){d.equals(this.at[a].getAtomType())||(null==this.atomTypes&&(this.atomTypes=Array(this.at.length)),this.atomTypes[a]= +d)},"~N,~S");c(b,"setChainID",function(a,d){if(!d.equals(this.at[a].getChainIDStr())){var b=this.at[a].getChainID(),b=this.getChainBits(b);this.at[a].group.chain.chainID=this.vwr.getChainID(d,!0);for(var c=b.nextSetBit(0);0<=c;c=b.nextSetBit(c+1))this.taintAtom(c,16)}},"~N,~S");c(b,"setAtomNumber",function(a,d,b){b&&d==this.at[a].getAtomNumber()||(null==this.atomSerials&&(this.atomSerials=D(this.at.length,0)),this.atomSerials[a]=d,b&&this.taintAtom(a,13))},"~N,~N,~B");c(b,"setElement",function(a, +d,b){b&&a.getElementNumber()==d||(a.setAtomicAndIsotopeNumber(d),a.paletteID=J.c.PAL.CPK.id,a.colixAtom=this.vwr.cm.getColixAtomPalette(a,J.c.PAL.CPK.id),this.resetPartialCharges(),b&&this.taintAtom(a.i,3))},"JM.Atom,~N,~B");c(b,"setSite",function(a,d,b){a.atomSite!=d&&(a.atomSite=d,b&&this.taintAtom(a.i,17))},"JM.Atom,~N,~B");c(b,"resetPartialCharges",function(){this.bsPartialCharges=this.partialCharges=null});c(b,"setAtomResno",function(a,d){d!=this.at[a].getResno()&&(this.at[a].group.setResno(d), +null==this.atomResnos&&(this.atomResnos=D(this.at.length,0)),this.atomResnos[a]=d,this.taintAtom(a,15))},"~N,~N");c(b,"setAtomSeqID",function(a,d){d!=this.at[a].getSeqID()&&(null==this.atomSeqIDs&&(this.atomSeqIDs=D(this.at.length,0)),this.atomSeqIDs[a]=d,this.taintAtom(a,14))},"~N,~N");c(b,"setOccupancy",function(a,d,b){if(!(b&&d==this.at[a].getOccupancy100())){if(null==this.occupancies){if(100==d)return;this.occupancies=L(this.at.length,0);for(var c=this.at.length;0<=--c;)this.occupancies[c]=100}this.occupancies[a]= +d;b&&this.taintAtom(a,7)}},"~N,~N,~B");c(b,"getOccupancyFloat",function(a){return null==this.occupancies||a>=this.occupancies.length?100:this.occupancies[a]},"~N");c(b,"setPartialCharge",function(a,d,b){if(!Float.isNaN(d)){if(null==this.partialCharges){this.bsPartialCharges=new JU.BS;if(0==d)return;this.partialCharges=L(this.at.length,0)}this.bsPartialCharges.set(a);this.partialCharges[a]=d;b&&this.taintAtom(a,8)}},"~N,~N,~B");c(b,"setBondingRadius",function(a,d){Float.isNaN(d)||d==this.at[a].getBondingRadius()|| +(null==this.bondingRadii?this.bondingRadii=L(this.at.length,0):this.bondingRadii.lengthd?-327.68:327.67d?-0.5:0.5));b&&this.taintAtom(a, +9)}},"~N,~N,~B");c(b,"setHydrophobicity",function(a,d){if(!(Float.isNaN(d)||d==this.at[a].getHydrophobicity())){if(null==this.hydrophobicities){this.hydrophobicities=L(this.at.length,0);for(var b=0;bm||m>=this.ac)){var p=this.at[m];j++;var z=s.length-1,y=JU.PT.parseFloat(s[z]);switch(a){case 18:e[m]=y;g.set(m);continue;case 0:this.setAtomName(m,s[z],!0);break;case 13:this.setAtomNumber(m,F(y),!0);break;case 15:this.setAtomResno(m,F(y));break; +case 14:this.setAtomSeqID(m,F(y));break;case 1:this.setAtomType(m,s[z]);break;case 16:this.setChainID(m,s[z]);break;case 17:p.atomSite=F(y);break;case 3:p.setAtomicAndIsotopeNumber(F(y));p.paletteID=J.c.PAL.CPK.id;p.colixAtom=this.vwr.cm.getColixAtomPalette(p,J.c.PAL.CPK.id);break;case 4:p.setFormalCharge(F(y));break;case 5:this.setHydrophobicity(m,y);break;case 6:this.setBondingRadius(m,y);break;case 8:this.setPartialCharge(m,y,!0);break;case 9:this.setBFactor(m,y,!0);break;case 10:p.setValence(F(y)); +break;case 11:p.setRadius(y)}this.taintAtom(m,a)}}18==a&&0b;b++)if(JM.AtomCollection.userSettableValues[b].equalsIgnoreCase(a))return b;return d?18:-1},"~S");c(b,"getTaintedAtoms",function(a){return null==this.tainted?null:this.tainted[a]},"~N");c(b,"taintAtoms",function(a,d){this.canSkipLoad=!1;if(this.preserveState)for(var b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1))this.taintAtom(b, +d)},"JU.BS,~N");c(b,"taintAtom",function(a,d){this.preserveState&&(null==this.tainted&&(this.tainted=Array(18)),null==this.tainted[d]&&(this.tainted[d]=JU.BS.newN(this.ac)),this.tainted[d].set(a));2==d&&this.taintModelCoord(a)},"~N,~N");c(b,"taintModelCoord",function(a){a=this.am[this.at[a].mi];this.validateBspfForModel(a.trajectoryBaseIndex,!1);a.isBioModel&&a.resetDSSR(!0);this.pointGroup=null},"~N");c(b,"untaint",function(a,d){this.preserveState&&(null==this.tainted||null==this.tainted[d]||this.tainted[d].clear(a))}, +"~N,~N");c(b,"setTaintedAtoms",function(a,d){if(this.preserveState){if(null==a){if(null==this.tainted)return;this.tainted[d]=null;return}null==this.tainted&&(this.tainted=Array(18));null==this.tainted[d]&&(this.tainted[d]=JU.BS.newN(this.ac));JU.BSUtil.copy2(a,this.tainted[d])}if(2==d){var b=a.nextSetBit(0);0<=b&&this.taintModelCoord(b)}},"JU.BS,~N");c(b,"unTaintAtoms",function(a,d){if(!(null==this.tainted||null==this.tainted[d])){for(var b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1))this.tainted[d].clear(b); +0>this.tainted[d].nextSetBit(0)&&(this.tainted[d]=null)}},"JU.BS,~N");c(b,"findNearest2",function(a,d,b,c,e){for(var g=null,j,k=this.ac;0<=--k;)if(!(null!=c&&c.get(k)||null==(j=this.at[k])))j.isClickable()&&this.isCursorOnTopOf(j,a,d,e,g)&&(g=j);b[0]=g},"~N,~N,~A,JU.BS,~N");c(b,"isCursorOnTopOf",function(a,d,b,c,e){return 1=w?1.1:10>=w?1:1.3;switch(w){case 7:case 8:x=1}var B=e||k||c?v.getCovalentHydrogenCount(): +0;if(!(e&&0b)return 0;var c=a.getFormalCharge(),e=a.getValence(),g=this.am[a.mi],g=g.isBioModel&&!g.isPdbWithMultipleBonds?a.group.getGroup3():null;this.aaRet[0]=b;this.aaRet[1]=c;this.aaRet[2]=0;this.aaRet[3]=a.getCovalentBondCount();this.aaRet[4]=null==g?0:e;null!=g&&0==c&&this.bioModelset.getAminoAcidValenceAndCharge(g, +a.getAtomName(),this.aaRet)&&(b=this.aaRet[0],c=this.aaRet[1]);0!=c&&(b+=4==b?-Math.abs(c):c,this.aaRet[0]=b);b-=e;return 0>b&&!d?0:b},"JM.Atom,~B");c(b,"fixFormalCharges",function(a){for(var d=0,b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1)){var c=this.at[b],e=this.getMissingHydrogenCount(c,!0);if(0!=e){var g=c.getFormalCharge(),e=g-e;c.setFormalCharge(e);this.taintAtom(b,4);JU.Logger.debugging&&JU.Logger.debug("atom "+c+" formal charge "+g+" -> "+e);d++}}return d},"JU.BS");c(b,"getHybridizationAndAxes", +function(a,d,b,c,e,g,j,k,f){var s=0z||6 +c.angle(y[1])?a.cross(c,y[1]):a.cross(c,y[2]);a.normalize();var u=new JU.V3;2.9845130209103035>y[1].angle(y[2])?u.cross(y[1],y[2]):u.cross(c,y[2]);u.normalize();n=0.95<=Math.abs(u.dot(a))}var v=0==s.indexOf("sp3"),r=!v&&0==s.indexOf("sp2"),w=!v&&!r&&0==s.indexOf("sp"),x=0==s.indexOf("p"),A=0==s.indexOf("lp"),u=null;if(g){if(0==p)return null;if(v){if(3b.length()){if(0<=s.indexOf("2")||0<=s.indexOf("3"))return null;u="sp";break}u=v?"sp3":"sp2";if(0==s.indexOf("sp"))break;if(A){u="lp";break}u=s;break;default:if(n&&!k)u="sp2";else{n&&b.setT(a);if(A&&3==p){u="lp";break}u="sp3"}}if(null==u)return null;if(0==s.indexOf("p")){if("sp3"===u)return null}else if(0>s.indexOf(u))return null}if(zb.length()){if(!s.equals("pz")){r=m[0];(f=3==r.getCovalentBondCount())||(f=3==(r=m[1]).getCovalentBondCount());if(f){this.getHybridizationAndAxes(r.i,0,c,b,"pz",!1,j,k,null);s.equals("px")&&c.scale(-1);b.setT(y[0]);break}a.setT(JM.AtomCollection.vRef);b.cross(a,c);a.cross(b,c)}b.setT(c);c.cross(a,b);break}a.cross(b,c);if(r){c.cross(b,a);break}if(v||A){a.normalize();b.normalize();s.equals("lp")||(0==z||2==z?b.scaleAdd2(-1.2, +a,b):b.scaleAdd2(1.2,a,b));c.cross(b,a);break}c.cross(b,a);b.setT(a);0>b.z&&(b.scale(-1),c.scale(-1));break;default:if(v)break;if(!n){c.cross(b,c);break}b.setT(a);0>b.z&&j&&(b.scale(-1),c.scale(-1))}c.normalize();b.normalize();return u},"~N,~N,JU.V3,JU.V3,~S,~B,~B,~B,JU.T3");c(b,"getHybridizationAndAxesD",function(a,d,b,c){c.startsWith("sp3d2")&&(c="d2sp3"+(5==c.length?"a":c.substring(5)));c.startsWith("sp3d")&&(c="dsp3"+(4==c.length?"a":c.substring(4)));if(c.equals("d2sp3")||c.equals("dsp3"))c+= +"a";var e=c.startsWith("dsp3"),g=c.charAt(c.length-1).charCodeAt(0)-97;if(null!=d&&(!e&&(5j&&null!=d)return null;for(var k=g>=j,f=v(j*(j-1)/2),s=JU.AU.newInt2(f),m=D(3,0),f=D(3,f,0),p=0,z=0,y=0;yr?0:150<=r?2:1;f[r][m[r]]=p;m[r]++;s[p++]=D(-1,[y,n]);0==y&&1==r&&z++}p= +100*m[0]+10*m[1]+m[2];if(null==d)switch(p){default:return"";case 0:return"";case 1:return"linear";case 100:case 10:return"bent";case 111:case 201:return"T-shaped";case 30:case 120:case 210:case 300:return 162d)return null;d=Array(e);if(0c)b.set(a);else if(8==(e=this.at[a]).getElementNumber()&&2==e.getCovalentBondCount()){for(var c=e.bonds,j=0,k=c.length;0<=--k&&3>j;)if(c[k].isCovalentNotPartial0()&&1==(g=c[k].getOtherAtom(e)).getElementNumber())d[j++%2]=g.i;2==j&&(b.set(d[1]),b.set(d[0]),b.set(a))}return b; +case 1073742355:for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.isAltLoc(this.at[a].altloc,d)&&b.set(a);return b;case 1073742356:e=d.toUpperCase();0<=e.indexOf("\\?")&&(e=JU.PT.rep(e,"\\?","\u0001"));(g=e.startsWith("?*"))&&(e=e.substring(1));for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.isAtomNameMatch(this.at[a],e,g,g)&&b.set(a);return b;case 1073742357:return JU.BSUtil.copy(this.getChainBits(c));case 1073742360:return this.getSpecName(d);case 1073742361:for(a= +this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].group.groupID==c&&b.set(a);return b;case 1073742362:return JU.BSUtil.copy(this.getSeqcodeBits(c,!0));case 5:for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].group.getInsCode()==c&&b.set(a);return b;case 1296041985:for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].getSymOp()==c&&b.set(a);return b}g=d.nextSetBit(0);if(0>g)return b;switch(a){case 1094717454:e=JU.BSUtil.copy(d);for(a= +g;0<=a;a=e.nextSetBit(a+1))b.or(this.am[this.at[a].mi].bsAtoms),e.andNot(b);return b;case 1086326788:e=JU.BSUtil.copy(d);for(a=g;0<=a;a=e.nextSetBit(a+1))this.at[a].group.chain.setAtomBits(b),e.andNot(b);return b;case 1086326789:e=new JU.BS;for(a=g;0<=a;a=d.nextSetBit(a+1))e.set(this.at[a].getElementNumber());for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&e.get(this.at[a].getElementNumber())&&b.set(a);return b;case 1086324742:e=JU.BSUtil.copy(d);for(a=g;0<=a;a=e.nextSetBit(a+1))this.at[a].group.setAtomBits(b), +e.andNot(b);return b;case 1094713366:e=new JU.BS;for(a=g;0<=a;a=d.nextSetBit(a+1))e.set(this.at[a].atomSite);for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&e.get(this.at[a].atomSite)&&b.set(a);return b}JU.Logger.error("MISSING getAtomBits entry for "+JS.T.nameOf(a));return b},"~N,~O,JU.BS");c(b,"getChainBits",function(a){var d=this.vwr.getBoolean(603979822);d?97<=a&&122>=a&&(a+=159):0<=a&&300>a&&(a=this.chainToUpper(a));for(var b=new JU.BS,c=JU.BS.newN(this.ac),e,g=c.nextClearBit(0);g< +this.ac;g=c.nextClearBit(g+1))if(!JM.AtomCollection.isDeleted(this.at[g])){var j=this.at[g].group.chain;a==(e=j.chainID)||!d&&0<=e&&300>e&&a==this.chainToUpper(e)?(j.setAtomBits(b),c.or(b)):j.setAtomBits(c)}return b},"~N");c(b,"chainToUpper",function(a){return 97<=a&&122>=a?a-32:256<=a&&300>a?a-191:a},"~N");c(b,"isAltLoc",function(a,d){if(null==d)return"\x00"==a;if(1!=d.length)return!1;var b=d.charAt(0);return"*"==b||"?"==b&&"\x00"!=a||a==b},"~S,~S");c(b,"getSeqcodeBits",function(a,d){var b=new JU.BS, +c=JM.Group.getSeqNumberFor(a),e=2147483647!=c,g=!0,j=JM.Group.getInsertionCodeChar(a);switch(j.charCodeAt(0)){case 63:for(var k=this.ac;0<=--k;)if(!JM.AtomCollection.isDeleted(this.at[k])){var f=this.at[k].group.seqcode;if((!e||c==JM.Group.getSeqNumberFor(f))&&0!=JM.Group.getInsertionCodeFor(f))b.set(k),g=!1}break;default:for(k=this.ac;0<=--k;)if(!JM.AtomCollection.isDeleted(this.at[k])&&(f=this.at[k].group.seqcode,a==f||!e&&a==JM.Group.getInsertionCodeFor(f)||"*"==j&&c==JM.Group.getSeqNumberFor(f)))b.set(k), +g=!1}return!g||d?b:null},"~N,~B");c(b,"getIdentifierOrNull",function(a){var d=this.getSpecNameOrNull(a,!1);0<=a.indexOf("\\?")&&(a=JU.PT.rep(a,"\\?","\u0001"));return null!=d||0a&&0.1>=g&&g>=a|| +0==a&&0.01>Math.abs(g))&&b.set(e.i)}}return b},"~N,JU.P4");c(b,"clearVisibleSets",function(){this.haveBSClickable=this.haveBSVisible=!1});c(b,"getAtomsInFrame",function(a){this.clearVisibleSets();a.clearAll();for(var d=this.ac;0<=--d;)!JM.AtomCollection.isDeleted(this.at[d])&&this.at[d].isVisible(1)&&a.set(d)},"JU.BS");c(b,"getVisibleSet",function(a){if(a)this.vwr.setModelVisibility(),this.vwr.shm.finalizeAtoms(null,!0);else if(this.haveBSVisible)return this.bsVisible;this.bsVisible.clearAll();for(a= +this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].checkVisible()&&this.bsVisible.set(a);null!=this.vwr.shm.bsSlabbedInternal&&this.bsVisible.andNot(this.vwr.shm.bsSlabbedInternal);this.haveBSVisible=!0;return this.bsVisible},"~B");c(b,"getClickableSet",function(a){if(a)this.vwr.setModelVisibility();else if(this.haveBSClickable)return this.bsClickable;this.bsClickable.clearAll();for(a=this.ac;0<=--a;)!JM.AtomCollection.isDeleted(this.at[a])&&this.at[a].isClickable()&&this.bsClickable.set(a); +this.haveBSClickable=!0;return this.bsClickable},"~B");c(b,"isModulated",function(a){return null!=this.bsModulated&&this.bsModulated.get(a)},"~N");c(b,"deleteModelAtoms",function(a,d,b){this.at=JU.AU.deleteElements(this.at,a,d);this.ac=this.at.length;for(var c=a;ca;a++)JU.BSUtil.deleteBits(this.tainted[a],b)},"~N,~N,JU.BS");c(b,"getAtomIdentityInfo",function(a,d,b){d.put("_ipt",Integer.$valueOf(a));d.put("atomIndex",Integer.$valueOf(a));d.put("atomno",Integer.$valueOf(this.at[a].getAtomNumber()));d.put("info",this.getAtomInfo(a,null,b));d.put("sym",this.at[a].getElementSymbol())},"~N,java.util.Map,JU.P3");c(b,"getAtomTensorList",function(a){return 0>a|| +null==this.atomTensorList||a>=this.atomTensorList.length?null:this.atomTensorList[a]},"~N");c(b,"deleteAtomTensors",function(a){if(null!=this.atomTensors){for(var d=new JU.Lst,b,c=this.atomTensors.keySet().iterator();c.hasNext()&&((b=c.next())||1);){for(var e=this.atomTensors.get(b),g=e.size();0<=--g;){var j=e.get(g);(a.get(j.atomIndex1)||0<=j.atomIndex2&&a.get(j.atomIndex2))&&e.removeItemAt(g)}0==e.size()&&d.addLast(b)}for(g=d.size();0<=--g;)this.atomTensors.remove(d.get(g))}},"JU.BS");c(b,"setCapacity", +function(a){this.atomCapacity+=a},"~N");c(b,"setAtomTensors",function(a,d){if(!(null==d||0==d.size())){null==this.atomTensors&&(this.atomTensors=new java.util.Hashtable);null==this.atomTensorList&&(this.atomTensorList=Array(this.at.length));this.atomTensorList=JU.AU.ensureLength(this.atomTensorList,this.at.length);this.atomTensorList[a]=JM.AtomCollection.getTensorList(d);for(var b=d.size();0<=--b;){var c=d.get(b);c.atomIndex1=a;c.atomIndex2=-1;c.modelIndex=this.at[a].mi;this.addTensor(c,c.type);null!= +c.altType&&this.addTensor(c,c.altType)}}},"~N,JU.Lst");c(b,"addTensor",function(a,d){d=d.toLowerCase();var b=this.atomTensors.get(d);null==b&&(this.atomTensors.put(d,b=new JU.Lst),b.ensureCapacity(this.atomCapacity));b.addLast(a)},"JU.Tensor,~S");b.getTensorList=c(b,"getTensorList",function(a){for(var d=-1,b=!1,c=a.size(),e=c;0<=--e;){var g=a.get(e);g.forThermalEllipsoid?d=e:2==g.iType&&(b=!0)}var j=Array((0<=d||!b?0:1)+c);if(0<=d&&(j[0]=a.get(d),1==a.size()))return j;if(b){d=0;for(e=c;0<=--e;)g= +a.get(e),g.forThermalEllipsoid||(j[++d]=g)}else for(e=0;ea||a>=this.ac?this.vwr.getOperativeSymmetry():this.at[a].getUnitCell(),c=null!=d&&Float.isNaN(d.x),b=null==b?null:b.generateCrystalClass(c?null:null!=d?d:this.at[a]);return null==b?new JU.Lst:b},"~N,JU.P3");b.isDeleted=c(b,"isDeleted", +function(a){return null==a||a.isDeleted()},"JM.Atom");b.$AtomCollection$AtomSorter$=function(){var a=r(function(){fa(this,arguments);u(this,arguments)},JM.AtomCollection,"AtomSorter",null,java.util.Comparator);f(a,"compare",function(a,b){return a.i>b.i?1:a.ig?-1:c;if(this.isVdw=null!=j)this.radiusData=j,this.atoms=a.at,this.vwr=a.vwr,g=j.factorType===J.atomdata.RadiusData.EnumType.OFFSET?5+j.value:5*j.value,this.vdw1=this.atoms[c].getVanderwaalsRadiusFloat(this.vwr, +j.vdwType);this.checkGreater=this.isGreaterOnly&&2147483647!=c;this.setCenter(e,g)}},"JM.ModelSet,~N,~N,~N,JU.T3,~N,J.atomdata.RadiusData");f(b,"setCenter",function(a,d){this.setCenter2(a,d)},"JU.T3,~N");c(b,"setCenter2",function(a,d){null!=this.cubeIterator&&(this.cubeIterator.initialize(a,d,this.hemisphereOnly),this.distanceSquared=d*d)},"JU.T3,~N");f(b,"hasNext",function(){return this.hasNext2()});c(b,"hasNext2",function(){if(0<=this.atomIndex)for(;this.cubeIterator.hasMoreElements();){var a=this.cubeIterator.nextElement(); +if((this.iNext=a.i)!=this.atomIndex&&(!this.checkGreater||this.iNext>this.atomIndex)&&(null==this.bsSelected||this.bsSelected.get(this.iNext)))return!0}else if(this.cubeIterator.hasMoreElements())return a=this.cubeIterator.nextElement(),this.iNext=a.i,!0;this.iNext=-1;return!1});f(b,"next",function(){return this.iNext-this.zeroBase});f(b,"foundDistance2",function(){return null==this.cubeIterator?-1:this.cubeIterator.foundDistance2()});f(b,"addAtoms",function(a){for(var d;this.hasNext();)if(0<=(d= +this.next())){var b;if(this.isVdw){b=this.atoms[d].getVanderwaalsRadiusFloat(this.vwr,this.radiusData.vdwType)+this.vdw1;switch(this.radiusData.factorType){case J.atomdata.RadiusData.EnumType.OFFSET:b+=2*this.radiusData.value;break;case J.atomdata.RadiusData.EnumType.FACTOR:b*=this.radiusData.value}b*=b}else b=this.distanceSquared;this.foundDistance2()<=b&&a.set(d)}},"JU.BS");f(b,"release",function(){null!=this.cubeIterator&&(this.cubeIterator.release(),this.cubeIterator=null)});f(b,"getPosition", +function(){return null})});n("JM");A(["JM.AtomIteratorWithinModel"],"JM.AtomIteratorWithinModelSet",null,function(){var b=r(function(){this.center=this.bsModels=null;this.distance=0;u(this,arguments)},JM,"AtomIteratorWithinModelSet",JM.AtomIteratorWithinModel);x(b,function(a){I(this,JM.AtomIteratorWithinModelSet,[]);this.bsModels=a},"JU.BS");f(b,"setCenter",function(a,d){this.center=a;this.distance=d;this.set(0)},"JU.T3,~N");c(b,"set",function(a){if(0>(this.modelIndex=this.bsModels.nextSetBit(a))|| +null==(this.cubeIterator=this.bspf.getCubeIterator(this.modelIndex)))return!1;this.setCenter2(this.center,this.distance);return!0},"~N");f(b,"hasNext",function(){return this.hasNext2()?!0:!this.set(this.modelIndex+1)?!1:this.hasNext()})});n("JM");A(["JU.Edge","JV.JC"],"JM.Bond",["JU.C"],function(){var b=r(function(){this.atom2=this.atom1=null;this.shapeVisibilityFlags=this.colix=this.mad=0;u(this,arguments)},JM,"Bond",JU.Edge);x(b,function(a,d,b,c,e){I(this,JM.Bond,[]);this.atom1=a;this.atom2=d;this.colix= +e;this.setOrder(b);this.setMad(c)},"JM.Atom,JM.Atom,~N,~N,~N");c(b,"setMad",function(a){this.mad=a;this.setShapeVisibility(0!=a)},"~N");c(b,"setShapeVisibility",function(a){0!=(this.shapeVisibilityFlags&JM.Bond.myVisibilityFlag)!=a&&(this.atom1.addDisplayedBond(JM.Bond.myVisibilityFlag,a),this.atom2.addDisplayedBond(JM.Bond.myVisibilityFlag,a),this.shapeVisibilityFlags=a?this.shapeVisibilityFlags|JM.Bond.myVisibilityFlag:this.shapeVisibilityFlags&~JM.Bond.myVisibilityFlag)},"~B");c(b,"getIdentity", +function(){return this.index+1+" "+JU.Edge.getBondOrderNumberFromOrder(this.order)+" "+this.atom1.getInfo()+" -- "+this.atom2.getInfo()+" "+this.atom1.distance(this.atom2)});f(b,"isCovalent",function(){return 0!=(this.order&1023)});f(b,"isHydrogen",function(){return JU.Edge.isOrderH(this.order)});c(b,"isStereo",function(){return 0!=(this.order&1024)});f(b,"isPartial",function(){return 0!=(this.order&224)});c(b,"isAromatic",function(){return 0!=(this.order&512)});c(b,"getEnergy",function(){return 0}); +c(b,"getValence",function(){return!this.isCovalent()||33==this.order?0:this.is(515)?1:this.order&7});c(b,"deleteAtomReferences",function(){null!=this.atom1&&this.atom1.deleteBond(this);null!=this.atom2&&this.atom2.deleteBond(this);this.atom1=this.atom2=null});c(b,"setTranslucent",function(a,d){this.colix=JU.C.getColixTranslucent3(this.colix,a,d)},"~B,~N");c(b,"setOrder",function(a){16==this.atom1.getElementNumber()&&16==this.atom2.getElementNumber()&&(a|=256);512==a&&(a=515);this.order=a|this.order& +131072},"~N");f(b,"getAtomIndex1",function(){return this.atom1.i});f(b,"getAtomIndex2",function(){return this.atom2.i});f(b,"getCovalentOrder",function(){return JU.Edge.getCovalentBondOrder(this.order)});c(b,"getOtherAtom",function(a){return this.atom1===a?this.atom2:this.atom2===a?this.atom1:null},"JM.Atom");c(b,"is",function(a){return(this.order&131071)==a},"~N");f(b,"getOtherNode",function(a){return this.atom1===a?this.atom2:this.atom2===a||null==a?this.atom1:null},"JU.SimpleNode");c(b,"setAtropisomerOptions", +function(){var a,d=2147483647,b=this.atom1.bonds;for(a=0;a=b.length||2b&&0c&&200>this.numCached[c]&&(this.freeBonds[c][this.numCached[c]++]=d)}return b},"JM.Bond,~A");c(b,"addHBond",function(a,d,b,c){this.bondCount== +this.bo.length&&(this.bo=JU.AU.arrayCopyObject(this.bo,this.bondCount+250));return this.setBond(this.bondCount++,this.bondMutually(a,d,b,1,c)).index},"JM.Atom,JM.Atom,~N,~N");c(b,"deleteAllBonds2",function(){this.vwr.setShapeProperty(1,"reset",null);for(var a=this.bondCount;0<=--a;)this.bo[a].deleteAtomReferences(),this.bo[a]=null;this.bondCount=0});c(b,"getDefaultMadFromOrder",function(a){return JU.Edge.isOrderH(a)?1:32768==a?v(Math.floor(2E3*this.vwr.getFloat(570425406))):this.defaultCovalentMad}, +"~N");c(b,"deleteConnections",function(a,d,b,c,e,g,j){var k=0>a,f=0>d,s=k||f;a=this.fixD(a,k);d=this.fixD(d,f);var m=new JU.BS,p=0,z=b|=131072;!j&&JU.Edge.isOrderH(b)&&(b=30720);if(g)g=c;else{g=new JU.BS;for(var y=c.nextSetBit(0);0<=y;y=c.nextSetBit(y+1)){var n=this.at[y];if(null!=n.bonds)for(var r=n.bonds.length;0<=--r;)e.get(n.getBondedAtomIndex(r))&&g.set(n.bonds[r].index)}}for(y=g.nextSetBit(0);y=a*b:k>=b)&&(g?j<=a*c:k<=c)):k>=b&&k<=c},"JM.Atom,JM.Atom,~N,~N,~B,~B,~B");c(b,"dBb",function(a,d){var b=a.nextSetBit(0);if(!(0>b)){this.resetMolecules();for(var c=-1, +e=a.cardinality(),g=b;g=b;)this.bo[c]=null;this.bondCount=b;b=this.vwr.getShapeProperty(1,"sets");if(null!=b)for(c=0;cJU.Measure.computeAngle(c[e].getOtherNode(a.atom1),a.atom1,a.atom2,d,b,!0))return!1;break}c=a.atom2.getEdges();for(e=c.length;0<=-e;)if(c[e]!==a&&c[e].isCovalent()){if(175>JU.Measure.computeAngle(c[e].getOtherNode(a.atom2),a.atom2,a.atom1,d,b,!0))return!1;break}return!0},"JM.Bond,JU.V3,JU.V3"); +c(b,"assignAromaticDouble",function(a){var d=a.index;if(this.bsAromaticSingle.get(d))return!1;if(this.bsAromaticDouble.get(d))return!0;this.bsAromaticDouble.set(d);return!this.assignAromaticSingleForAtom(a.atom1,d)||!this.assignAromaticSingleForAtom(a.atom2,d)?(this.bsAromaticDouble.clear(d),!1):!0},"JM.Bond");c(b,"assignAromaticSingle",function(a){var d=a.index;if(this.bsAromaticDouble.get(d))return!1;if(this.bsAromaticSingle.get(d))return!0;this.bsAromaticSingle.set(d);return!this.assignAromaticDoubleForAtom(a.atom1)|| +!this.assignAromaticDoubleForAtom(a.atom2)?(this.bsAromaticSingle.clear(d),!1):!0},"JM.Bond");c(b,"assignAromaticSingleForAtom",function(a,d){var b=a.bonds;if(null==b)return!1;for(var c=b.length;0<=--c;){var e=b[c],g=e.index;if(!(g==d||!e.isAromatic()||this.bsAromaticSingle.get(g)))if(this.bsAromaticDouble.get(g)||!this.assignAromaticSingle(e))return!1}return!0},"JM.Atom,~N");c(b,"assignAromaticDoubleForAtom",function(a){a=a.bonds;if(null==a)return!1;for(var d=!1,b=-1,c=a.length;0<=--c;)this.bsAromaticDouble.get(a[c].index)&& +(d=!0),a[c].isAromatic()&&(b=c);for(c=a.length;0<=--c;){var e=a[c],g=e.index;if(e.isAromatic()&&!this.bsAromaticDouble.get(g)&&!this.bsAromaticSingle.get(g))if(!d&&this.assignAromaticDouble(e))d=!0;else if((d||c=a.atom1.getCovalentBondCount()&&3>=a.atom2.getCovalentBondCount(); +default:return!1}},"JM.Bond");c(b,"assignAromaticMustBeSingle",function(a){var d=a.getElementNumber();switch(d){case 6:case 7:case 8:case 16:break;default:return!0}var b=a.getValenceAromatic(!1);switch(d){case 6:return 4==b;case 7:return a.group.getNitrogenAtom()===a||3==b&&1>a.getFormalCharge();case 8:return a.group.getCarbonylOxygenAtom()!==a&&2==b&&1>a.getFormalCharge();case 16:return 5==a.group.groupID||2==b&&1>a.getFormalCharge()}return!1},"JM.Atom");c(b,"assignAromaticNandO",function(a){for(var d, +b=null==a,c=b?this.bondCount-1:a.nextSetBit(0);0<=c;c=b?c-1:a.nextSetBit(c+1))if(d=this.bo[c],d.is(513)){var e,g=d.atom2,j,k=g.getElementNumber();7==k||8==k?(j=k,e=g,g=d.atom1,k=g.getElementNumber()):(e=d.atom1,j=e.getElementNumber());if(!(7!=j&&8!=j)){var f=e.getValence();if(!(0>f)){var s=e.getCovalentBondCount();e=e.getFormalCharge();switch(j){case 7:3==f&&(3==s&&1>e&&6==k&&3==g.getValence())&&d.setOrder(514);break;case 8:1==f&&(0==e&&(14==k||16==k))&&d.setOrder(514)}}}}},"JU.BS");c(b,"getAtomBitsMDb", +function(a,d){var b=new JU.BS;switch(a){default:return this.getAtomBitsMDa(a,d,b);case 1677721602:for(var c=d.nextSetBit(0);0<=c;c=d.nextSetBit(c+1))cd?g.clear(k):b&&0==c&&g.set(k);return g},"~N,~N,~N,JU.BS");c(b,"addConnectedHAtoms",function(a,d){if(null!=a.bonds)for(var b=a.bonds.length;0<=--b;){var c=a.bonds[b].getOtherAtom(a);1==c.getElementNumber()&& +d.set(c.i)}},"JM.Atom,JU.BS")});n("JM");K(JM,"BondIterator");n("JM");A(["JM.BondIterator"],"JM.BondIteratorSelected",null,function(){var b=r(function(){this.bonds=null;this.iBond=this.bondType=this.bondCount=0;this.bsSelected=null;this.bondSelectionModeOr=!1;u(this,arguments)},JM,"BondIteratorSelected",null,JM.BondIterator);x(b,function(a,d,b,c,e){this.bonds=a;this.bondCount=d;this.bondType=b;this.bsSelected=c;this.bondSelectionModeOr=e},"~A,~N,~N,JU.BS,~B");f(b,"hasNext",function(){if(131071==this.bondType)return this.iBond= +this.bsSelected.nextSetBit(this.iBond),0<=this.iBond&&this.iBondthis.chainID?""+String.fromCharCode(this.chainID):this.model.ms.vwr.getChainIDStr(this.chainID)});c(b,"calcSelectedGroupsCount",function(a){for(var d=this.selectedGroupCount=0;d< +this.groupCount;d++)this.groups[d].selectedIndex=this.groups[d].isSelected(a)?this.selectedGroupCount++:-1},"JU.BS");c(b,"fixIndices",function(a,d){for(var b=0;bthis.groupID?"":JM.Group.group3Names[this.groupID]}); +c(b,"getGroup1",function(){return"\x00"==this.group1?"?":this.group1});c(b,"getBioPolymerLength",function(){return 0});c(b,"getMonomerIndex",function(){return-1});c(b,"getStructure",function(){return null});c(b,"getStrucNo",function(){return 0});c(b,"getProteinStructureType",function(){return J.c.STR.NOT});c(b,"getProteinStructureSubType",function(){return this.getProteinStructureType()});c(b,"setProteinStructureType",function(){return-1},"J.c.STR,~N");c(b,"isProtein",function(){return 1<=this.groupID&& +24>this.groupID});c(b,"isNucleic",function(){return 24<=this.groupID&&42>this.groupID});c(b,"isDna",function(){return this.isDnaByID()});c(b,"isRna",function(){return this.isRnaByID()});c(b,"isPurine",function(){return this.isPurineByID()});c(b,"isPurineByID",function(){return this.isNucleic()&&0!=(153957&1<>8});c(b,"setResno",function(a){this.seqcode=JM.Group.getSeqcodeFor(a,this.getInsertionCode())},"~N");b.getSeqNumberFor=c(b,"getSeqNumberFor",function(a){return JM.Group.haveSequenceNumber(a)?a>>8: +2147483647},"~N");b.haveSequenceNumber=c(b,"haveSequenceNumber",function(a){return 0!=(a&128)},"~N");c(b,"getSeqcodeString",function(){return JM.Group.getSeqcodeStringFor(this.seqcode)});b.getSeqcodeFor=c(b,"getSeqcodeFor",function(a,d){if(-2147483648==a)return a;"A"<=d&&"Z">=d||("a"<=d&&"z">=d||"0"<=d&&"9">=d||"?"==d||"*"==d)||(" "!=d&&"\x00"!=d&&JU.Logger.warn("unrecognized insertionCode:"+d),d="\x00");return(2147483647==a?0:a<<8|128)+d.charCodeAt(0)},"~N,~S");b.getSeqcodeStringFor=c(b,"getSeqcodeStringFor", +function(a){if(-2147483648==a)return null;var d=""+(a>>8);0!=(a&127)&&(d+="^"+String.fromCharCode(a&127));return d},"~N");c(b,"getInsertionCode",function(){return-2147483648==this.seqcode?"\x00":String.fromCharCode(this.seqcode&127)});c(b,"getInsCode",function(){return this.seqcode&127});b.getInsertionCodeFor=c(b,"getInsertionCodeFor",function(a){return a&127},"~N");b.getInsertionCodeChar=c(b,"getInsertionCodeChar",function(a){return-2147483648==a?"\x00":String.fromCharCode(a&127)},"~N");c(b,"scaleToScreen", +function(a,d){return this.chain.model.ms.vwr.tm.scaleToScreen(a,d)},"~N,~N");c(b,"isCursorOnTopOf",function(a,d,b,c,e){return this.chain.model.ms.isCursorOnTopOf(a,d,b,c,e)},"JM.Atom,~N,~N,~N,JM.Atom");c(b,"getModel",function(){return this.chain.model});c(b,"getSelectedMonomerCount",function(){return 0});c(b,"getSelectedMonomerIndex",function(){return-1});c(b,"isLeadAtom",function(){return!1},"~N");c(b,"getLeadAtomOr",function(a){var d=this.getLeadAtom();return null==d?a:d},"JM.Atom");c(b,"getLeadAtom", +function(){return null});c(b,"getQuaternion",function(){return null},"~S");c(b,"getQuaternionFrame",function(a){if(3>this.lastAtomIndex-this.firstAtomIndex)return null;var d=this.firstAtomIndex;return JU.Quat.getQuaternionFrame(a[d],a[++d],a[++d])},"~A");c(b,"setStrucNo",function(){},"~N");c(b,"getHelixData",function(a){return JU.Escape.escapeHelical(null,a,null,null,null)},"~N,~S,~N");c(b,"isWithinStructure",function(){return!1},"J.c.STR");c(b,"getProteinStructureTag",function(){return null});c(b, +"getStructureId",function(){return""});c(b,"getBioPolymerIndexInModel",function(){return-1});c(b,"isCrossLinked",function(){return!1},"JM.Group");c(b,"getCrossLinkVector",function(){return!1},"JU.Lst,~B,~B");c(b,"getNitrogenAtom",function(){return null});c(b,"getCarbonylOxygenAtom",function(){return null});c(b,"fixIndices",function(a,d){this.firstAtomIndex-=a;this.leadAtomIndex-=a;this.lastAtomIndex-=a;null!=this.bsAdded&&JU.BSUtil.deleteBits(this.bsAdded,d)},"~N,JU.BS");c(b,"getGroupInfo",function(a, +d){var b=new java.util.Hashtable;b.put("groupIndex",Integer.$valueOf(a));b.put("groupID",Short.$valueOf(this.groupID));var c=this.getSeqcodeString();null!=c&&b.put("seqCode",c);b.put("_apt1",Integer.$valueOf(this.firstAtomIndex));b.put("_apt2",Integer.$valueOf(this.lastAtomIndex));null!=this.bsAdded&&b.put("addedAtoms",this.bsAdded);b.put("atomInfo1",this.chain.model.ms.getAtomInfo(this.firstAtomIndex,null,d));b.put("atomInfo2",this.chain.model.ms.getAtomInfo(this.lastAtomIndex,null,d));b.put("visibilityFlags", +Integer.$valueOf(this.shapeVisibilityFlags));return b},"~N,JU.P3");c(b,"getMinZ",function(a,d){d[0]=2147483647;for(var b=this.firstAtomIndex;b<=this.lastAtomIndex;b++)this.checkMinZ(a[b],d);if(null!=this.bsAdded)for(b=this.bsAdded.nextSetBit(0);0<=b;b=this.bsAdded.nextSetBit(b+1))this.checkMinZ(a[b],d)},"~A,~A");c(b,"checkMinZ",function(a,d){var b=a.sZ-v(a.sD/2)-2;bd.indexOf("%")||2>d.length)return w(-1,[(new JM.LabelToken).set(d,-1)]);for(var e=0,g=-1,j=d.length;++g=f.tok||null!=f.key?null!=j&&(j.append(f.text),"\x00"!=f.ch1&&j.appendC(f.ch1)):JM.LabelToken.appendAtomTokenValue(a,d,f,j,e,g))}return null==j?null:j.toString().intern()},"JV.Viewer,JM.Atom,~A,~S,~A,JU.P3");b.getBondLabelValues=c(b,"getBondLabelValues", +function(){var a=new java.util.Hashtable;a.put("#","");a.put("ORDER","");a.put("TYPE","");a.put("LENGTH",Float.$valueOf(0));a.put("ENERGY",Float.$valueOf(0));return a});b.formatLabelBond=c(b,"formatLabelBond",function(a,d,b,c,e,g){c.put("#",""+(d.index+1));c.put("ORDER",""+JU.Edge.getBondOrderNumberFromOrder(d.order));c.put("TYPE",JU.Edge.getBondOrderNameFromOrder(d.order));c.put("LENGTH",Float.$valueOf(d.atom1.distance(d.atom2)));c.put("ENERGY",Float.$valueOf(d.getEnergy()));JM.LabelToken.setValues(b, +c);JM.LabelToken.formatLabelAtomArray(a,d.atom1,b,"1",e,g);JM.LabelToken.formatLabelAtomArray(a,d.atom2,b,"2",e,g);return JM.LabelToken.getLabel(b)},"JV.Viewer,JM.Bond,~A,java.util.Map,~A,JU.P3");b.formatLabelMeasure=c(b,"formatLabelMeasure",function(a,d,b,c,e){var g=new java.util.Hashtable;g.put("#",""+(d.index+1));g.put("VALUE",Float.$valueOf(c));g.put("UNITS",e);b=JM.LabelToken.compile(a,b,"\u0001",g);if(null==b)return"";JM.LabelToken.setValues(b,g);g=d.ms.at;d=d.countPlusIndices;for(c=d[0];1<= +c;--c)0<=d[c]&&JM.LabelToken.formatLabelAtomArray(a,g[d[c]],b,String.fromCharCode(48+c),null,null);b=JM.LabelToken.getLabel(b);return null==b?"":b},"JV.Viewer,JM.Measurement,~S,~N,~S");b.setValues=c(b,"setValues",function(a,d){for(var b=0;b=c)return b.text="%",j;var k;"-"==d.charAt(j)&&(b.alignLeft=!0,++j);jn?""+-n+"-":"";break;case 1094717454:j=d.getModelNumberForLabel();break;case 1128269825:j=""+d.atomPropertyInt(b.tok);break;case 1665140738:k=d.atomPropertyFloat(a,b.tok,g);break;case 1086324749:j=d.group.getStructureId();break;case 1094713367:var r=d.group.getStrucNo(),j=0>=r?"":""+r;break;case 1111490574:if(Float.isNaN(k=d.group.getGroupParameter(1111490574)))j= +"null";break;case 1111492626:case 1111492627:case 1111492628:case 1111490583:case 1111490584:case 1111490585:case 1111490586:k=d.atomPropertyFloat(a,b.tok,g);Float.isNaN(k)&&(j="");break;case 1073877011:j=a.getNBOAtomLabel(d);break;case 1086324747:case 1639976963:case 1237320707:j=d.atomPropertyString(a,b.tok);break;case 1140850705:j=d.getIdentityXYZ(g,1);break;case 1086324754:j=d.getWyckoffPosition(!1);break;case 1086324755:j=d.getWyckoffPosition(!0);break;case 79:j=d.getSymmetryOperatorList(!1); +break;case 81:k=d.getOccupancy100()/100;break;default:switch(b.tok&1136656384){case 1094713344:b.intAsFloat?k=d.atomPropertyInt(b.tok):j=""+d.atomPropertyInt(b.tok);break;case 1111490560:k=d.atomPropertyFloat(a,b.tok,g);break;case 1086324736:j=d.atomPropertyString(a,b.tok);break;case 1077936128:f=d.atomPropertyTuple(a,b.tok,g);null==f&&(j="");break;default:1145045003==b.tok&&(j=d.atomPropertyString(a,1145045003))}}}catch(u){if(E(u,"IndexOutOfBoundsException"))k=NaN,f=j=null;else throw u;}j=b.format(k, +j,f);null==c?b.text=j:c.append(j)},"JV.Viewer,JM.Atom,JM.LabelToken,JU.SB,~A,JU.P3");c(b,"format",function(a,d,b){return Float.isNaN(a)?null!=d?JU.PT.formatS(d,this.width,this.precision,this.alignLeft,this.zeroPad):null!=b?(0==this.width&&2147483647==this.precision&&(this.width=6,this.precision=2),JU.PT.formatF(b.x,this.width,this.precision,!1,!1)+JU.PT.formatF(b.y,this.width,this.precision,!1,!1)+JU.PT.formatF(b.z,this.width,this.precision,!1,!1)):this.text:JU.PT.formatF(a,this.width,this.precision, +this.alignLeft,this.zeroPad)},"~N,~S,JU.T3");b.labelTokenIds=D(-1,[1086324739,1086326786,1086326785,1111492620,1631586315,1086326788,1094713347,1086324746,1086326789,1111490569,1094713357,1094713361,1111492618,1094715393,1094713363,1094715402,1094717454,1086324743,1094713360,1086324742,79,1088421903,1111492619,1111490570,81,1128269825,1094715412,1086324747,1094713366,1086326788,1111490574,1111492620,1086324745,1111490575,1648363544,1145047055,1140850705,1086324755,1111492612,1111492609,1111492629, +1111492613,1111492610,1111492630,1111492614,1111492611,1111492631,1114249217,1112152066,1112150019,1112150020,1112150021,1112152070,1112152071,1112152073,1112152074,1112152076,1649022989,1112152078,1111490561,1111490562,1153433601,1094713346,1228931586,1765808134,1094713356,1111490564,1228935687,1287653388,1825200146,1111490567,1094713359,1111490565,1111490568,1094713362,1715472409,1665140738,1113589787,1086324748,1086324744,1112152075,1639976963,1237320707,1094713367,1086324749,1086326798,1111490576, +1111490577,1111490578,1111490579,1094715418,1648361473,1111492626,1111492627,1111492628,1312817669,1145045006,1145047050,1145047049,1145047053,1111492615,1111492616,1111492617,1113589786,1111490571,1111490572,1111490573,1145047052,1111490566,1111490563,1094713351,1094713365,1111490583,1111490584,1111490585,1111490586,1145045008,1296041985,1073877011,1086324752,1086324753,1086324754,1145045003]);b.twoCharLabelTokenIds=D(-1,[1111492612,1111492613,1111492614,1111490577,1111490578,1111490579,1111492626, +1111492627,1111492628])});n("JM");A(null,"JM.Measurement","JU.Measure $.PT $.SB J.atomdata.RadiusData J.c.VDW JM.LabelToken JU.Escape".split(" "),function(){var b=r(function(){this.thisID=this.ms=null;this.index=0;this.isVisible=!0;this.isTrajectory=this.isHidden=!1;this.$isValid=!0;this.colix=0;this.labelColix=-1;this.mad=0;this.tickInfo=null;this.traceX=-2147483648;this.count=this.traceY=0;this.pts=this.countPlusIndices=null;this.value=0;this.type=this.strMeasurement=this.vwr=this.text=this.units= +this.strFormat=this.property=null;this.tainted=!1;this.newUnits=this.renderArc=this.renderAxis=null;this.fixedValue=NaN;this.useDefaultLabel=this.inFront=this.isPending=!1;u(this,arguments)},JM,"Measurement",null);N(b,function(){this.countPlusIndices=D(5,0)});c(b,"isTainted",function(){return this.tainted&&!(this.tainted=!1)});c(b,"setM",function(a,d,b,c,e,g){this.ms=a;this.index=g;this.vwr=a.vwr;this.colix=c;this.strFormat=e;null!=d&&(this.tickInfo=d.tickInfo,this.pts=d.pts,this.mad=d.mad,this.thisID= +d.thisID,this.text=d.text,this.property=d.property,this.units=d.units,null==this.property&&"+hz".equals(this.units)&&(this.property="property_J"),null!=this.thisID&&null!=this.text&&(this.labelColix=this.text.colix));null==this.pts&&(this.pts=Array(4));d=null==d?null:d.countPlusIndices;this.count=null==d?0:d[0];0a?this.pts[-2-a]:this.ms.at[a]},"~N");c(b,"getLastIndex",function(){return 0a.indexOf("hz")?0:a.equals("noe_hz")?3:a.startsWith("dc_")||a.equals("khz")?1:2},"~S");c(b,"formatAngle",function(a){var d=this.getLabelString();0<=d.indexOf("%V")&&(a=Math.round(10*a)/10);return this.formatString(a,"\u00b0",d)},"~N");c(b,"getLabelString",function(){var a=this.countPlusIndices[0]+":",d=null;if(null!=this.strFormat){if(0==this.strFormat.length)return null;d=2this.pts[c].distance(d[c]));if(b)return!0;switch(this.count){default:return!0;case 2:return this.sameAsIJ(a,d,1,2)&&this.sameAsIJ(a,d,2,1);case 3:return this.sameAsIJ(a,d,1,3)&&this.sameAsIJ(a,d,2,2)&&this.sameAsIJ(a,d,3,1);case 4:return this.sameAsIJ(a,d,1,4)&&this.sameAsIJ(a,d,2,3)&&this.sameAsIJ(a,d,3,2)&&this.sameAsIJ(a,d,4,1)}},"~A,~A");c(b,"sameAsIJ",function(a,d,b,c){b=this.countPlusIndices[b];a=a[c];return 0<=b||0<=a?b==a:0.01>this.pts[-2-b].distance(d[-2-a])},"~A,~A,~N,~N");c(b,"sameAs", +function(a,d){return this.sameAsIJ(this.countPlusIndices,this.pts,a,d)},"~N,~N");c(b,"getPropMeasurement",function(a){if(null==this.countPlusIndices||2!=this.count)return NaN;for(var d=this.count;0<=--d;)if(0>this.countPlusIndices[d+1])return NaN;try{var b=null==a?this.getAtom(1):a[0],c=null==a?this.getAtom(2):a[1],e=this.vwr.getDataObj(this.property,null,2),g=b.i,j=c.i;return null==e||j>=e.length||g>=e.length?NaN:e[g][j]}catch(k){return NaN}},"~A");c(b,"getMeasurement",function(a){this.checkJ(null); +if(!Float.isNaN(this.fixedValue))return this.fixedValue;if(null!=this.property)return this.getPropMeasurement(a);if(null==this.countPlusIndices||2>this.count)return NaN;for(var d=this.count;0<=--d;)if(-1==this.countPlusIndices[d+1])return NaN;var d=null==a?this.getAtom(1):a[0],b=null==a?this.getAtom(2):a[1],c;switch(this.count){case 2:return d.distance(b);case 3:return c=null==a?this.getAtom(3):a[2],JU.Measure.computeAngleABC(d,b,c,!0);case 4:return c=null==a?this.getAtom(3):a[2],a=null==a?this.getAtom(4): +a[3],JU.Measure.computeTorsion(d,b,c,a,!0);default:return NaN}},"~A");c(b,"getLabel",function(a,d,b){var c=this.countPlusIndices[a];return 0>c?(b?"modelIndex "+this.getAtom(a).mi+" ":"")+JU.Escape.eP(this.getAtom(a)):d?"({"+c+"})":this.vwr.getAtomInfo(c)},"~N,~B,~B");c(b,"setModelIndex",function(a){if(null!=this.pts)for(var d=0;de)){if(0<=b&&!a[e].isBonded(a[b]))return!1;b=e}}return!0},"~A,~N");c(b,"getInfoAsString",function(a){var d=this.fixValue(a,!0);a=new JU.SB;a.append(2==this.count?null!=this.property?this.property:null==this.type?"distance":this.type:3==this.count? +"angle":"dihedral");a.append(" \t").appendF(d);a.append(" \t").append(JU.PT.esc(this.strMeasurement));for(d=1;d<=this.count;d++)a.append(" \t").append(this.getLabel(d,!1,!1));null!=this.thisID&&a.append(" \t").append(this.thisID);return a.toString()},"~S");c(b,"isInRange",function(a,d){if(a.factorType===J.atomdata.RadiusData.EnumType.FACTOR){var b=this.getAtom(1),c=this.getAtom(2),b=(b.getVanderwaalsRadiusFloat(this.vwr,a.vdwType)+c.getVanderwaalsRadiusFloat(this.vwr,a.vdwType))*a.value;return d<= +b}return 3.4028235E38==a.values[0]||d>=a.values[0]&&d<=a.values[1]},"J.atomdata.RadiusData,~N");c(b,"isIntramolecular",function(a,d){for(var b=-1,c=1;c<=d;c++){var e=this.getAtomIndex(c);if(!(0>e))if(e=a[e].getMoleculeNumber(!1),0>b)b=e;else if(e!=b)return!1}return!0},"~A,~N");c(b,"isMin",function(a){var d=this.getAtom(1),b=this.getAtom(2),c=F(100*b.distanceSquared(d)),d=d.getAtomName(),b=b.getAtomName(),b=0>d.compareTo(b)?d+b:b+d;a=a.get(b);return null!=a&&c==a.intValue()},"java.util.Map");b.isUnits= +c(b,"isUnits",function(a){return JU.PT.isOneOf((a.startsWith("+")?a.substring(1):a).toLowerCase(),";nm;nanometers;pm;picometers;angstroms;angstroms;ang;\u00c5;au;vanderwaals;vdw;%;noe;")||0>a.indexOf(" ")&&a.endsWith("hz")},"~S");b.toUnits=c(b,"toUnits",function(a,d,b){return Float.isNaN(a)?NaN:d.equals("hz")?b?Math.round(10*a)/10:a:d.equals("nm")?b?Math.round(100*a)/1E3:a/10:d.equals("pm")?b?Math.round(1E3*a)/10:100*a:d.equals("au")?b?Math.round(1E3*(a/0.5291772))/1E3:a/0.5291772:d.endsWith("khz")? +b?Math.round(a/10)/100:a/1E3:b?Math.round(100*a)/100:a},"~N,~S,~B");b.fromUnits=c(b,"fromUnits",function(a,d){return d.equals("nm")?10*a:d.equals("pm")?a/100:d.equals("au")?0.5291772*a:d.equals("\u00c5")?a:0},"~N,~S");b.fixUnits=c(b,"fixUnits",function(a){var d=a.endsWith("s")?a.substring(0,a.length-1):a;return d.equals("nanometer")?"nm":d.equals("bohr")||d.equals("atomicunits")||d.equals("atomic")?"au":d.equals("picometer")?"pm":d.equals("\u00e5")||d.equals("angstrom")||d.equals("a")||d.equals("ang")? +"\u00c5":d.equals("vanderwaal")||d.equals("vdw")?"%":a},"~S");c(b,"getDistanceFormatForState",function(){return this.useDefaultLabel?null:this.strFormat});c(b,"setFromMD",function(a){null!=a.thisID&&(this.thisID=a.thisID,this.mad=a.mad,0!=a.colix&&(this.colix=a.colix),this.strFormat=a.strFormat,this.text=a.text);this.units="default".equals(a.units)?null:a.units;this.property=a.property;this.fixedValue=a.fixedValue;0!=a.colix&&(this.colix=a.colix);0!=a.mad&&(this.mad=a.mad);null!=a.strFormat&&(this.strFormat= +(null==this.strFormat?a.strFormat:this.strFormat.substring(0,2))+a.strFormat.substring(2));null!=a.text&&(null==this.text?this.text=a.text:(null!=a.text.font&&(this.text.setFont(a.text.font,!1),this.text.fontScale=a.text.font.fontSize/a.text.font.fontSizeNominal),this.text.text=null,0!=a.text.align&&(this.text.align=a.text.align),0!=a.colix&&(this.labelColix=this.text.colix=a.text.colix)));this.formatMeasurement(null)},"JM.MeasurementData,~B")});n("JM");A(["J.api.JmolMeasurementClient"],"JM.MeasurementData", +["JU.Lst","JM.Measurement"],function(){var b=r(function(){this.points=this.measurements=this.measurementStrings=this.bsSelected=this.client=null;this.mustNotBeConnected=this.mustBeConnected=!1;this.tickInfo=null;this.tokAction=12290;this.note=this.property=this.strFormat=this.radiusData=null;this.isAll=!1;this.colix=0;this.intramolecular=null;this.mad=0;this.units=this.text=this.thisID=null;this.fixedValue=0;this.ms=this.minArray=this.atoms=null;this.allowSelf=!1;this.vwr=null;this.iFirstAtom=0;this.justOneModel= +!0;this.htMin=null;u(this,arguments)},JM,"MeasurementData",null,J.api.JmolMeasurementClient);c(b,"init",function(a,d,b){this.vwr=d;this.points=b;this.thisID=a;return this},"~S,JV.Viewer,JU.Lst");c(b,"setModelSet",function(a){this.ms=a;return this},"JM.ModelSet");c(b,"set",function(a,d,b,c,e,g,j,k,f,s,m,p,z,y,n,r){this.ms=this.vwr.ms;this.tokAction=a;2<=this.points.size()&&(C(this.points.get(0),"JU.BS")&&C(this.points.get(1),"JU.BS"))&&(this.justOneModel=this.vwr.ms.getModelBS(this.points.get(0),!1).equals(this.vwr.ms.getModelBS(this.points.get(1), +!1)));this.bsSelected=r;this.htMin=d;this.radiusData=b;this.property=c;this.strFormat=e;this.units=g;this.tickInfo=j;this.mustBeConnected=k;this.mustNotBeConnected=f;this.intramolecular=s;this.isAll=m;this.mad=p;this.colix=z;this.text=y;this.fixedValue=n;return this},"~N,java.util.Map,J.atomdata.RadiusData,~S,~S,~S,JM.TickInfo,~B,~B,Boolean,~B,~N,~N,JM.Text,~N,JU.BS");c(b,"processNextMeasure",function(a,d){var b=d.getMeasurement(null);if(!(null!=this.htMin&&!d.isMin(this.htMin)||null!=this.radiusData&& +!d.isInRange(this.radiusData,b)))if(null==this.measurementStrings&&null==this.measurements){var c=this.minArray[this.iFirstAtom];d.value=b;b=d.fixValue(this.units,!1);this.minArray[this.iFirstAtom]=-Infinity==1/c?b:Math.min(c,b)}else null!=this.measurementStrings?this.measurementStrings.addLast(d.getStringUsing(this.vwr,this.strFormat,this.units)):this.measurements.addLast(Float.$valueOf(d.getMeasurement(null)))},"JM.MeasurementData,JM.Measurement");c(b,"getMeasurements",function(a,d){if(d){this.minArray= +L(this.points.get(0).cardinality(),0);for(var b=0;bb)){var c=-1,e=Array(4),g=D(5,0),j=(new JM.Measurement).setPoints(d, +g,e,null);j.setCount(b);j.property=this.property;j.strFormat=this.strFormat;j.units=this.units;j.fixedValue=this.fixedValue;for(var k=-1,f=0;fd)(this.allowSelf&&!this.mustBeConnected&&!this.mustNotBeConnected||b.isValid())&& +((!this.mustBeConnected||b.isConnected(this.atoms,a))&&(!this.mustNotBeConnected||!b.isConnected(this.atoms,a))&&(null==this.intramolecular||b.isIntramolecular(this.atoms,a)==this.intramolecular.booleanValue()))&&this.client.processNextMeasure(this,b);else{var e=this.points.get(a),g=b.countPlusIndices,j=0==a?2147483647:g[a];if(0>j)this.nextMeasure(a+1,d,b,c);else{for(var k=!1,f=e.nextSetBit(0),s=0;0<=f;f=e.nextSetBit(f+1),s++)if(f!=j||this.allowSelf){var m=this.atoms[f].mi;if(0<=c&&this.justOneModel)if(0== +a)c=m;else if(c!=m)continue;g[a+1]=f;0==a&&(this.iFirstAtom=s);k=!0;this.nextMeasure(a+1,d,b,c)}k||this.nextMeasure(a+1,d,b,c)}}},"~N,~N,JM.Measurement,~N")});n("JM");A(["JM.Measurement"],"JM.MeasurementPending",null,function(){var b=r(function(){this.haveModified=this.haveTarget=!1;this.numSet=0;this.lastIndex=-1;u(this,arguments)},JM,"MeasurementPending",JM.Measurement);c(b,"set",function(a){return this.setM(a,null,NaN,0,null,0)},"JM.ModelSet");c(b,"checkPoint",function(a){for(var d=1;d<=this.numSet;d++)if(this.countPlusIndices[d]== +-1-d&&0.01>this.pts[d-1].distance(a))return!1;return!0},"JU.Point3fi");c(b,"getIndexOf",function(a){for(var d=1;d<=this.numSet;d++)if(this.countPlusIndices[d]==a)return d;return 0},"~N");f(b,"setCount",function(a){this.setCountM(a);this.numSet=a},"~N");c(b,"addPoint",function(a,d,b){this.haveModified=a!=this.lastIndex;this.lastIndex=a;if(null==d){if(0this.groupCount){this.groupCount=0;for(var a=this.chainCount;0<=--a;)this.groupCount+=this.chains[a].groupCount}return this.groupCount});c(b,"getChainAt",function(a){return aa&&this.dataSourceFrame--;this.trajectoryBaseIndex>a&&this.trajectoryBaseIndex--;this.firstAtomIndex-=d;for(a=0;a=this.group3Of.length?null:this.group3Of[a]},"~N");c(b, +"getFirstAtomIndex",function(a){return this.firstAtomIndexes[a]},"~N");c(b,"getAtomCount",function(){return this.ms.ac});c(b,"createModelSet",function(a,d,b){var c=null==a?0:a.getAtomCount(d,-1);0this.baseModelIndex||this.baseModelIndex>=this.baseModelCount)this.baseModelIndex=this.baseModelCount-1;this.ms.mc=this.baseModelCount}this.ms.ac=this.baseAtomIndex=this.modelSet0.ac;this.ms.bondCount=this.modelSet0.bondCount;this.$mergeGroups=this.modelSet0.getGroups(); +this.groupCount=this.baseGroupIndex=this.$mergeGroups.length;this.ms.mergeModelArrays(this.modelSet0);this.ms.growAtomArrays(this.ms.ac+a)}else this.ms.mc=this.adapterModelCount,this.ms.ac=0,this.ms.bondCount=0,this.ms.at=Array(a),this.ms.bo=Array(250+a);this.doAddPDBHydrogens&&this.jbr.initializeHydrogenAddition();1g.indexOf("Viewer.AddHydrogens")||!b.isModelKit){j=JU.PT.split(e,"\n");k=new JU.SB;for(e=0;ef||f!=b.loadState.lastIndexOf(j[e]))&& +k.append(j[e]).appendC("\n");b.loadState+=b.loadScript.toString()+k.toString();b.loadScript=new JU.SB;if(0<=g.indexOf("load append ")||0<=g.indexOf('data "append '))g.insert(0,";var anew = appendNew;"),g.append(";set appendNew anew");b.loadScript.append(" ").appendSB(g).append(";\n")}if(this.isTrajectory){e=this.ms.mc-c+1;JU.Logger.info(e+" trajectory steps read");this.ms.setInfo(this.baseModelCount,"trajectoryStepCount",Integer.$valueOf(e));b=this.adapterModelCount;for(e=c;eg[0])for(k=0;kg[a]&&(f+=1E6);for(k=a;kc&&(c=b[e].mi,k=s[c],k.firstAtomIndex=e,k.isOrderly=k.act==k.bsAtoms.length()-e,k=this.ms.getDefaultVdwType(c),k!== +a&&(JU.Logger.info("Default Van der Waals type for model set to "+k.getVdwLabel()),a=k));JU.Logger.info(d+" atoms created")},"J.api.JmolAdapter,~O,~B");c(b,"getAtomSiteBase",function(a){for(var d=0,b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1)){var c=this.ms.at[b];!JM.AtomCollection.isDeleted(c)&&c.atomSite>d&&(d=c.atomSite)}return d},"JU.BS");c(b,"addJmolDataProperties",function(a,d){if(null!=d)for(var b=a.bsAtoms,c=b.cardinality(),e,g=d.entrySet().iterator();g.hasNext()&&((e=g.next())||1);){var j= +e.getKey(),k=e.getValue();if(k.length!=c)break;var f=j.startsWith("property_")?1715472409:JS.T.getTokFromName(j);switch(f){default:if(JS.T.tokAttr(f,2048)){this.vwr.setAtomProperty(b,f,0,0,null,k,null);break}case 1111492629:case 1111492630:case 1111492631:j="property_"+j;case 1715472409:this.vwr.setData(j,w(-1,[j,k,b,Integer.$valueOf(1)]),0,0,0,0,0)}}},"JM.Model,java.util.Map");c(b,"getPdbCharge",function(a,d){return a.equals("ARG")&&d.equals("NH1")||a.equals("LYS")&&d.equals("NZ")||a.equals("HIS")&& +d.equals("ND1")?1:0},"~S,~S");c(b,"addAtom",function(a,d,b,c,e,g,j,k,f,s,m,p,z,y,n,r,u,v,w){var x=0,A=null;if(null!=e){var B;if(0<=(B=e.indexOf("\x00")))A=e.substring(B+1),e=e.substring(0,B);a&&(0<=e.indexOf("*")&&(e=e.$replace("*","'")),x=this.vwr.getJBR().lookupSpecialAtomID(e),2==x&&"CA".equalsIgnoreCase(n)&&(x=0))}a=this.ms.addAtom(this.iModel,this.nullGroup,c,e,A,z,y,b,m,v,r,g,j,f,s,k,p,x,d,w);a.altloc=u;return a},"~B,JU.BS,~N,~N,~S,~N,~N,JU.Lst,~N,~N,JU.P3,~B,~N,~N,~S,JU.V3,~S,~N,~N");c(b,"checkNewGroup", +function(a,d,b,c,e,g,j){d!=this.currentChainID&&(this.currentChainID=d,this.currentChain=this.getOrAllocateChain(this.model,d),this.currentGroupInsertionCode="\uffff",this.currentGroupSequenceNumber=-1,this.currentGroup3="xxxx",this.isNewChain=!0);d=null==b?null:b.intern();if(c!=this.currentGroupSequenceNumber||e!=this.currentGroupInsertionCode||d!==this.currentGroup3){0=this.group3Of.length;)this.chainOf=JU.AU.doubleLength(this.chainOf),this.group3Of=JU.AU.doubleLengthS(this.group3Of),this.seqcodes=JU.AU.doubleLengthI(this.seqcodes),this.firstAtomIndexes=JU.AU.doubleLengthI(this.firstAtomIndexes);this.firstAtomIndexes[this.groupCount]=this.ms.ac;this.chainOf[this.groupCount]=this.currentChain;this.group3Of[this.groupCount]=b;this.seqcodes[this.groupCount]= +JM.Group.getSeqcodeFor(c,e);++this.groupCount}},"J.api.JmolAdapter,~N,~S,~N,~S,~B,~B");c(b,"getOrAllocateChain",function(a,d){var b=a.getChain(d);if(null!=b)return b;a.chainCount==a.chains.length&&(a.chains=0==a.chainCount?Array(2):JU.AU.doubleLength(a.chains));return a.chains[a.chainCount++]=new JM.Chain(a,d,0==d||32==d?0:++this.iChain)},"JM.Model,~N");c(b,"iterateOverAllNewBonds",function(a){for(var d=this.isMutate&&!this.vwr.getBoolean(603979894),b=!1;a.hasNext();){var c=a.getEncodedOrder(),e= +d?1:c,g=this.bondAtoms(a.getAtomUniqueID1(),a.getAtomUniqueID2(),e);null!=g&&(1c)break;e=this.ms.getInfoI(b,"presymmetryAtomCount");this.ms.am[b].auxiliaryInfo.put("presymmetryAtomIndex",Integer.$valueOf(c));this.ms.setInfo(b,"asymmetricUnit",this.ms.am[b].bsAsymmetricUnit=JU.BSUtil.newBitSet2(c,c+e));c+=e}d>=c&&this.ms.bsSymmetry.set(d)}}if(this.appendNew&& +this.ms.someModelsHaveFractionalCoordinates){a=this.ms.at;b=-1;c=null;e=!1;for(d=this.baseAtomIndex;dm&&(m=this.ms.bondCount);if(j||g&&(0==m||p&&null==this.jmolData&&(this.ms.getMSInfoB("havePDBHeaderName")|| +m"):c=j.isProtein()?"p>":j.isNucleic()?"n>":j.isCarbohydrate()?"c>": +"o>";null!=b&&(this.countGroup(this.ms.at[e].mi,c,b),j.isNucleic()&&(b=null==this.htGroup1?null:this.htGroup1.get(b),null!=b&&(j.group1=b.charAt(0))));this.addGroup(d,j);this.groups[a]=j;j.groupIndex=a;for(a=g+1;--a>=e;)this.ms.at[a].group=j},"~N,JM.Chain,~S,~N,~N,~N");c(b,"addGroup",function(a,d){a.groupCount==a.groups.length&&(a.groups=JU.AU.doubleLength(a.groups));a.groups[a.groupCount++]=d},"JM.Chain,JM.Group");c(b,"countGroup",function(a,d,b){var c=a+1;if(!(null==this.group3Lists||null==this.group3Lists[c])){var e= +(b+" ").substring(0,3),g=this.group3Lists[c].indexOf(e);0>g&&(this.group3Lists[c]+=",["+e+"]",g=this.group3Lists[c].indexOf(e),this.group3Counts[c]=JU.AU.arrayCopyI(this.group3Counts[c],this.group3Counts[c].length+10));this.group3Counts[c][v(g/6)]++;g=this.group3Lists[c].indexOf(",["+e);0<=g&&(this.group3Lists[c]=this.group3Lists[c].substring(0,g)+d+this.group3Lists[c].substring(g+2));0<=a&&this.countGroup(-1,d,b)}},"~N,~S,~S");c(b,"freeze",function(){this.htAtomMap.clear();this.ms.ac=JU.Elements.elementNumberMax&&(b=JU.Elements.elementNumberMax+JU.Elements.altElementIndexFromNumber(b)); +this.ms.elementsPresent[d.mi].set(b)}}});c(b,"setupMinimization",function(){this.initialize2DMin();var a=new JU.V3;if(null!=this.vStereo){var d=this.vStereo.size();a:for(;0<=--d;)for(var b=this.vStereo.get(d),c=b.atom1,e=c.bonds,g=c.getBondCount();0<=--g;){var j=e[g];if(j!==b&&(j=j.getOtherAtom(c),a.sub2(j,c),0.1>Math.abs(a.x))){1025==b.order==0>a.y&&(this.stereodir=-1);break a}}}this.set2dZ(a);if(null!=this.vStereo){a=JU.BSUtil.newBitSet2(this.baseAtomIndex,this.vwr.ms.ac);for(d=this.vStereo.size();0<= +--d;){b=this.vStereo.get(d);c=1025==b.order?3:-3;b.order=1;6>b.atom1.getBondCount()&&(b.atom2.z!=b.atom1.z&&0>c==b.atom2.zg&&(a+=s.distance(j),d++)}}if(0!=d){a=1.45/(a/d);for(g=c;ga)return c;b=JU.BSUtil.copy(b);0<=d&&b.clear(d);JM.ModelLoader.setBranch2dZ(this.ms.at[a],c,b,e,g,j,k);return c},"~N,~N,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N");b.setBranch2dZ=c(b,"setBranch2dZ",function(a,d,b,c,e,g,j){var k=a.i;if(b.get(k)&&(b.clear(k),d.set(k),null!=a.bonds))for(k=a.bonds.length;0<=--k;){var f=a.bonds[k];f.isHydrogen()||(f=f.getOtherAtom(a),JM.ModelLoader.setAtom2dZ(a, +f,c,e,g,j),JM.ModelLoader.setBranch2dZ(f,d,b,c,e,g,j))}},"JM.Atom,JU.BS,JU.BS,JU.V3,JU.V3,JU.V3,~N");b.setAtom2dZ=c(b,"setAtom2dZ",function(a,d,b,c,e,g){b.sub2(d,a);b.z=0;b.normalize();e.cross(c,b);b=Math.acos(b.dot(c));g=0.4*-g*Math.sin(4*b);d.z=a.z+g},"JM.Atom,JM.Atom,JU.V3,JU.V3,JU.V3,~N");c(b,"finalizeShapes",function(){this.ms.sm=this.vwr.shm;this.ms.sm.setModelSet(this.ms);this.ms.setBsHidden(this.vwr.slm.getHiddenSet());this.merging||this.ms.sm.resetShapes(!1);this.ms.sm.loadDefaultShapes(this.ms); +this.ms.someModelsHaveAromaticBonds&&this.vwr.getBoolean(603979944)&&this.ms.assignAromaticBondsBs(!1,null);this.merging&&1==this.baseModelCount&&this.ms.sm.setShapePropertyBs(6,"clearModelIndex",null,null)});c(b,"undeleteAtom",function(a){this.ms.at[a].valence=0},"~N");b.createAtomDataSet=c(b,"createAtomDataSet",function(a,d,b,c,e){if(null==c)return null;var g=a.getModelAdapter(),j=new JU.P3,k=d.at,f=a.getFloat(570425363);if(null!=d.unitCells)for(var s=e.nextSetBit(0);0<=s;s=e.nextSetBit(s+1))if(null!= +k[s].atomSymmetry){f=-f;break}for(var s=-1,m=0,p=JU.BSUtil.cardinalityOf(e)==a.ms.ac,z=g.getAtomIterator(c);z.hasNext();){var y=z.getXYZ();if(!Float.isNaN(y.x+y.y+y.z))if(1145047049==b){s=e.nextSetBit(s+1);if(0>s)break;m++;JU.Logger.debugging&&JU.Logger.debug("atomIndex = "+s+": "+k[s]+" --\x3e ("+y.x+","+y.y+","+y.z);d.setAtomCoord(s,y.x,y.y,y.z)}else{j.setT(y);y=JU.BS.newN(d.ac);d.getAtomsWithin(f,j,y,-1);y.and(e);if(p)if(m=JU.BSUtil.cardinalityOf(y),0==m){JU.Logger.warn("createAtomDataSet: no atom found at position "+ +j);continue}else 1a&&this.modelNumbers[d]==1E6+a)return d;return-1}if(1E6>a)return a;for(d=0;d=this.translations.length?null:this.translations[a]},"~N");c(b,"translateModel",function(a,d){if(null==d){var b=this.getTranslation(a);null!=b&&(d=JU.P3.newP(b),d.scale(-1),this.translateModel(a,d),this.translations[a]=null)}else{if(null==this.translations||this.translations.length<=a)this.translations=Array(this.mc);null==this.translations[a]&&(this.translations[a]=new JU.P3);this.translations[a].add(d);for(var b=this.am[a].bsAtoms,c= +b.nextSetBit(0);0<=c;c=b.nextSetBit(c+1))this.at[c].add(d)}},"~N,JU.T3");c(b,"getFrameOffsets",function(a,d){if(null==a){if(d)for(var b=this.mc;0<=--b;){var c=this.am[b];!c.isJmolDataFrame&&!c.isTrajectory&&this.translateModel(c.modelIndex,null)}return null}if(0>a.nextSetBit(0))return null;if(d){for(var e=JU.BSUtil.copy(a),g=null,j=new JU.P3,b=0;bc&&0u&&0<=j&&(u=this.at[j].mi),0>u&&(u=this.vwr.getVisibleFramesBitSet().nextSetBit(0),a=null),p=this.vwr.getModelUndeletedAtomsBitSet(u),n=null!=a&&p.cardinality()!= +a.cardinality(),null!=a&&p.and(a),j=p.nextSetBit(0),0>j&&(p=this.vwr.getModelUndeletedAtomsBitSet(u),j=p.nextSetBit(0)),y=this.vwr.shm.getShapePropertyIndex(18,"mad",j),z=null!=y&&0!=y.intValue()||this.vwr.tm.vibrationOn,y=null!=c&&0<=c.toUpperCase().indexOf(":POLY")){s=w(-1,[Integer.$valueOf(j),null]);this.vwr.shm.getShapePropertyData(21,"points",s);j=s[1];if(null==j)return null;p=null;z=!1;s=null}else j=this.at;var v;if(null!=c&&0<=(v=c.indexOf(":")))c=c.substring(0,v);if(null!=c&&0<=(v=c.indexOf(".")))e= +JU.PT.parseInt(c.substring(v+1)),0>e&&(e=0),c=c.substring(0,v);s=m.setPointGroup(this.vwr,s,k,j,p,z,r?0:this.vwr.getFloat(570425382),this.vwr.getFloat(570425384),null==p?j.length:p.cardinality(),n);!y&&!r&&(this.pointGroup=s);if(!d&&!b)return s.getPointGroupName();d=s.getPointGroupInfo(u,f,b,c,e,g);return b?d:(1this.atomSerials.length&&(f=this.atomSerials.length);for(var j=j[2],s=D(j+1,0),m=k;mm||0>p||m>j||p>j))if(m=s[m]-1,p=s[p]-1,!(0>m||0>p)){var z=this.at[m], +y=this.at[p];null!=b&&(z.isHetero()&&b.set(m),y.isHetero()&&b.set(p));if(z.altloc==y.altloc||"\x00"==z.altloc||"\x00"==y.altloc)this.getOrAddBond(z,y,k,2048==k?1:c,null,0,!1)}}}}},"~N,~N,JU.BS");c(b,"deleteAllBonds",function(){this.moleculeCount=0;for(var a=this.stateScripts.size();0<=--a;)this.stateScripts.get(a).isConnect()&&this.stateScripts.removeItemAt(a);this.deleteAllBonds2()});c(b,"includeAllRelatedFrames",function(a){for(var d=0,b=0;bc;)g[p].fixIndices(j,f,m);this.vwr.shm.deleteShapeAtoms(w(-1,[d,this.at,D(-1,[j,s,f])]),m);this.mc--}}else j++; +this.haveBioModels=!1;for(c=this.mc;0<=--c;)this.am[c].isBioModel&&(this.haveBioModels=!0,this.bioModelset.set(this.vwr,this));this.validateBspf(!1);this.bsAll=null;this.resetMolecules();this.isBbcageDefault=!1;this.calcBoundBoxDimensions(null,1);return e},"JU.BS");c(b,"resetMolecules",function(){this.molecules=this.bsAll=null;this.moleculeCount=0;this.resetChirality()});c(b,"resetChirality",function(){if(this.haveChirality)for(var a=-1,d=this.ac;0<=--d;){var b=this.at[d];null!=b&&(b.setCIPChirality(0), +b.mi!=a&&b.mia)){this.modelNumbers=JU.AU.deleteElements(this.modelNumbers,a,1);this.modelFileNumbers=JU.AU.deleteElements(this.modelFileNumbers,a,1);this.modelNumbersForAtomLabel=JU.AU.deleteElements(this.modelNumbersForAtomLabel,a,1);this.modelNames=JU.AU.deleteElements(this.modelNames,a,1);this.frameTitles=JU.AU.deleteElements(this.frameTitles,a,1);this.thisStateModel=-1;var c=this.getInfoM("group3Lists"), +e=this.getInfoM("group3Counts"),g=a+1;if(null!=c&&null!=c[g])for(var j=v(c[g].length/6);0<=--j;)0c&&(c=0),b=v(Math.floor(2E3*c))):k=new J.atomdata.RadiusData(g,0,null,null);this.sm.setShapeSizeBs(JV.JC.shapeTokenIndex(d), +b,k,a);return}this.setAPm(a,d,b,c,e,g,j)},"JU.BS,~N,~N,~N,~S,~A,~A");c(b,"getFileData",function(a){if(0>a)return"";var d=this.getInfo(a,"fileData");if(null!=d)return d;if(!this.getInfoB(a,"isCIF"))return this.getPDBHeader(a);d=this.vwr.getCifData(a);this.setInfo(a,"fileData",d);return d},"~N");c(b,"addHydrogens",function(a,d){var b=a.get(0).mi,c=new JU.BS;if(this.isTrajectory(b)||1a||a>=this.mc)return null; +var b=this.am[a].simpleCage,c=null;null!=this.unitCells&&(aa&&0>(a=this.vwr.am.cmi))return null;var c=this.vwr.getSymTemp();try{return this.setModelCage(a,null==d?null:c.getUnitCell(d,!1,b))}catch(e){if(E(e, +Exception))return e.printStackTrace(),null;throw e;}},"~N,~A,~S");c(b,"getModelName",function(a){return 1>this.mc?"":0<=a?this.modelNames[a]:this.modelNumbersForAtomLabel[-1-a]},"~N");c(b,"getModelTitle",function(a){return this.getInfo(a,"title")},"~N");c(b,"getModelFileName",function(a){return this.getInfo(a,"fileName")},"~N");c(b,"getModelFileType",function(a){return this.getInfo(a,"fileType")},"~N");c(b,"setFrameTitle",function(a,d){if("string"==typeof d)for(var b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+ +1))this.frameTitles[b]=d;else for(var b=a.nextSetBit(0),c=0;0<=b;b=a.nextSetBit(b+1))ck;k++)this.ptTemp.setT(j[k]),this.ptTemp.add(g), +b=Math.max(b,d.distance(this.ptTemp))}e=d.distance(e)+this.getRadiusVdwJmol(e);e>b&&(b=e)}}return 0==b?10:b},"~N,JU.P3,~B");c(b,"calcBoundBoxDimensions",function(a,d){null!=a&&0>a.nextSetBit(0)&&(a=null);if(!(null==a&&this.isBbcageDefault||0==this.ac)){if(null==this.getDefaultBoundBox())this.bboxModels=this.getModelBS(this.bboxAtoms=JU.BSUtil.copy(a),!1),this.calcAtomsMinMax(a,this.boxInfo)==this.ac&&(this.isBbcageDefault=!0),null==a&&null!=this.unitCells&&this.calcUnitCellMinMax();else{var b=this.defaultBBox.getBoundBoxVertices(); +this.boxInfo.reset();for(var c=0;8>c;c++)this.boxInfo.addBoundBoxPoint(b[c])}this.boxInfo.setBbcage(d)}},"JU.BS,~N");c(b,"getDefaultBoundBox",function(){var a=this.getInfoM("boundbox");null==a?this.defaultBBox=null:(null==this.defaultBBox&&(this.defaultBBox=new JU.BoxInfo),this.defaultBBox.setBoundBoxFromOABC(a));return this.defaultBBox});c(b,"getBoxInfo",function(a,d){if(null==a)return this.boxInfo;var b=new JU.BoxInfo;this.calcAtomsMinMax(a,b);b.setBbcage(d);return b},"JU.BS,~N");c(b,"calcAtomsMinMax", +function(a,d){d.reset();for(var b=0,c=null==a,e=c?this.ac-1:a.nextSetBit(0);0<=e;e=c?e-1:a.nextSetBit(e+1)){b++;var g=this.at[e];null!=g&&!this.isJmolDataFrameForAtom(g)&&d.addBoundBoxPoint(g)}return b},"JU.BS,JU.BoxInfo");c(b,"calcUnitCellMinMax",function(){for(var a=new JU.P3,d=0;de;e++)a.add2(b,c[e]),this.boxInfo.addBoundBoxPoint(a)}});c(b,"calcRotationRadiusBs", +function(a){for(var d=this.getAtomSetCenter(a),b=0,c=a.nextSetBit(0);0<=c;c=a.nextSetBit(c+1)){var e=this.at[c],e=d.distance(e)+this.getRadiusVdwJmol(e);e>b&&(b=e)}return 0==b?10:b},"JU.BS");c(b,"getCenterAndPoints",function(a,d){for(var b,c,e=d?1:0,g=a.size();0<=--g;){var j=a.get(g);b=j[0];C(j[1],"JU.BS")?(c=j[1],e+=Math.min(b.cardinality(),c.cardinality())):e+=Math.min(b.cardinality(),j[1].length)}var k=w(2,e,null);d&&(k[0][0]=new JU.P3,k[1][0]=new JU.P3);for(g=a.size();0<=--g;)if(j=a.get(g),b= +j[0],C(j[1],"JU.BS")){c=j[1];for(var j=b.nextSetBit(0),f=c.nextSetBit(0);0<=j&&0<=f;j=b.nextSetBit(j+1),f=c.nextSetBit(f+1))k[0][--e]=this.at[j],k[1][e]=this.at[f],d&&(k[0][0].add(this.at[j]),k[1][0].add(this.at[f]))}else{c=j[1];j=b.nextSetBit(0);for(f=0;0<=j&&fk?"all #"+k:this.getModelNumberDotted(k))+";\n "+a),this.thisStateModel=k):this.thisStateModel=-1;a=new JM.StateScript(this.thisStateModel,a,d,b,c,e,j);a.isValid()&&this.stateScripts.addLast(a);return a},"~S,JU.BS,JU.BS,JU.BS,~S,~B,~B");c(b,"freezeModels",function(){this.haveBioModels=!1;for(var a=this.mc;0<=--a;)this.haveBioModels=(new Boolean(this.haveBioModels|this.am[a].freeze())).valueOf()});c(b,"getStructureList",function(){return this.vwr.getStructureList()}); +c(b,"getInfoM",function(a){return null==this.msInfo?null:this.msInfo.get(a)},"~S");c(b,"getMSInfoB",function(a){a=this.getInfoM(a);return C(a,Boolean)&&a.booleanValue()},"~S");c(b,"isTrajectory",function(a){return this.am[a].isTrajectory},"~N");c(b,"isTrajectorySubFrame",function(a){return this.am[a].trajectoryBaseIndex!=a},"~N");c(b,"isTrajectoryMeasurement",function(a){return null!=this.trajectory&&this.trajectory.hasMeasure(a)},"~A");c(b,"getModelBS",function(a,d){var b=new JU.BS,c=0,e=null==a; +d=(new Boolean(d&null!=this.trajectory)).valueOf();for(var g=e?0:a.nextSetBit(0);0<=g&&ga.modelIndex?null==a.bsSelected?0:Math.max(0,a.bsSelected.nextSetBit(0)): +this.am[a.modelIndex].firstAtomIndex,a.lastModelIndex=a.firstModelIndex=0==this.ac?0:this.at[a.firstAtomIndex].mi,a.modelName=this.getModelNumberDotted(a.firstModelIndex),this.fillADa(a,d))},"J.atomdata.AtomData,~N");c(b,"getModelNumberDotted",function(a){return 1>this.mc||a>=this.mc||0>a?"":JU.Escape.escapeModelFileNumber(this.modelFileNumbers[a])},"~N");c(b,"getModelNumber",function(a){return this.modelNumbers[2147483647==a?this.mc-1:a]},"~N");c(b,"getModelProperty",function(a,d){var b=this.am[a].properties; +return null==b?null:b.getProperty(d)},"~N,~S");c(b,"getModelAuxiliaryInfo",function(a){return 0>a?null:this.am[a].auxiliaryInfo},"~N");c(b,"setInfo",function(a,d,b){0<=a&&aa?null:this.am[a].auxiliaryInfo.get(d)},"~N,~S");c(b,"getInfoB",function(a,d){var b=this.am[a].auxiliaryInfo;return null!=b&&b.containsKey(d)&&b.get(d).booleanValue()},"~N,~S");c(b,"getInfoI", +function(a,d){var b=this.am[a].auxiliaryInfo;return null!=b&&b.containsKey(d)?b.get(d).intValue():-2147483648},"~N,~S");c(b,"getInsertionCountInModel",function(a){return this.am[a].insertionCount},"~N");b.modelFileNumberFromFloat=c(b,"modelFileNumberFromFloat",function(a){var d=v(Math.floor(a));for(a=v(Math.floor(1E4*(a-d+1E-5)));0!=a&&0==a%10;)a/=10;return 1E6*d+a},"~N");c(b,"getChainCountInModelWater",function(a,d){if(0>a){for(var b=0,c=this.mc;0<=--c;)b+=this.am[c].getChainCount(d);return b}return this.am[a].getChainCount(d)}, +"~N,~B");c(b,"getGroupCountInModel",function(a){if(0>a){a=0;for(var d=this.mc;0<=--d;)a+=this.am[d].getGroupCount();return a}return this.am[a].getGroupCount()},"~N");c(b,"calcSelectedGroupsCount",function(){for(var a=this.vwr.bsA(),d=this.mc;0<=--d;)this.am[d].calcSelectedGroupsCount(a)});c(b,"isJmolDataFrameForModel",function(a){return this.haveJmolDataFrames&&null!=this.am&&0<=a&&aa.indexOf("deriv")&&(a=a.substring(0,a.indexOf(" ")),c.dataFrames.put(a,Integer.$valueOf(b)))},"~S,~N,~N");c(b, +"getJmolDataFrameIndex",function(a,d){if(null==this.am[a].dataFrames)return-1;var b=this.am[a].dataFrames.get(d);return null==b?-1:b.intValue()},"~N,~S");c(b,"clearDataFrameReference",function(a){for(var d=0;da)return"";if(this.am[a].isBioModel)return this.getPDBHeader(a);a=this.getInfo(a,"fileHeader");null==a&&(a=this.modelSetName);return null!= +a?a:"no header information found"},"~N");c(b,"getAltLocCountInModel",function(a){return this.am[a].altLocCount},"~N");c(b,"getAltLocIndexInModel",function(a,d){if("\x00"==d)return 0;var b=this.getAltLocListInModel(a);return 0==b.length?0:b.indexOf(d)+1},"~N,~S");c(b,"getInsertionCodeIndexInModel",function(a,d){if("\x00"==d)return 0;var b=this.getInsertionListInModel(a);return 0==b.length?0:b.indexOf(d)+1},"~N,~S");c(b,"getAltLocListInModel",function(a){a=this.getInfo(a,"altLocs");return null==a?"": +a},"~N");c(b,"getInsertionListInModel",function(a){a=this.getInfo(a,"insertionCodes");return null==a?"":a},"~N");c(b,"getModelSymmetryCount",function(a){return 0a||this.isTrajectory(a)||a>=this.mc-1?this.ac:this.am[a+1].firstAtomIndex,e=0>=a?0:this.am[a].firstAtomIndex;--c>=e;)if((0>a||!JM.AtomCollection.isDeleted(this.at[c])&&this.at[c].mi==a)&&((1275072532==d||0==d)&&null!=(b=this.getModulation(c))||(4166==d||0==d)&&null!=(b=this.getVibration(c,!1)))&&b.isNonzero())return c;return-1},"~N,~N");c(b,"getModulationList",function(a,d,b){var c=new JU.Lst;if(null!=this.vibrations)for(var e=a.nextSetBit(0);0<=e;e=a.nextSetBit(e+1))C(this.vibrations[e], +"J.api.JmolModulationSet")?c.addLast(this.vibrations[e].getModulation(d,b,!1)):c.addLast(Float.$valueOf("O"==d?NaN:-1));return c},"JU.BS,~S,JU.P3");c(b,"getElementsPresentBitSet",function(a){if(0<=a)return this.elementsPresent[a];a=new JU.BS;for(var d=0;da)return null;var d=this.getInfo(a,"dipole");null==d&&(d=this.getInfo(a,"DIPOLE_VEC"));return d},"~N");c(b,"calculateMolecularDipole",function(a,d){if(null!=d){var b=d.nextSetBit(0);if(0>b)return null;a=this.at[b].mi}if(0>a)return null;var c=b=0,e=0,g=0,j=new JU.V3,k=new JU.V3;null==d&&(d=this.getModelAtomBitSetIncludingDeleted(-1,!1));this.vwr.getOrCalcPartialCharges(this.am[a].bsAtoms,null);for(var f=d.nextSetBit(0);0<=f;f=d.nextSetBit(f+1))if(!(JM.AtomCollection.isDeleted(this.at[f])|| +this.at[f].mi!=a)){var s=this.partialCharges[f];0>s?(c++,g+=s,k.scaleAdd2(s,this.at[f],k)):0a)return this.moleculeCount;for(var b=0;bb)return null;b=this.getUnitCell(this.at[b].mi);return null==b?null:b.notInCentroid(this,a,d)},"JU.BS,~A");c(b,"getMolecules",function(){if(0d?a.setCenter(b,c):(this.initializeBspt(d),a.setModel(this, +d,this.am[d].firstAtomIndex,2147483647,b,c,null))},"J.api.AtomIndexIterator,~N,JU.T3,~N");c(b,"setIteratorForAtom",function(a,d,b,c,e){0>d&&(d=this.at[b].mi);d=this.am[d].trajectoryBaseIndex;this.initializeBspt(d);a.setModel(this,d,this.am[d].firstAtomIndex,b,this.at[b],c,e)},"J.api.AtomIndexIterator,~N,~N,~N,J.atomdata.RadiusData");c(b,"getSelectedAtomIterator",function(a,d,b,c,e){this.initializeBspf();if(e){e=this.getModelBS(a,!1);for(var g=e.nextSetBit(0);0<=g;g=e.nextSetBit(g+1))this.initializeBspt(g); +e=new JM.AtomIteratorWithinModelSet(e)}else e=new JM.AtomIteratorWithinModel;e.initialize(this.bspf,a,d,b,c,this.vwr.isParallel());return e},"JU.BS,~B,~B,~B,~B");f(b,"getBondCountInModel",function(a){return 0>a?this.bondCount:this.am[a].getBondCount()},"~N");c(b,"getAtomCountInModel",function(a){return 0>a?this.ac:this.am[a].act},"~N");c(b,"getModelAtomBitSetIncludingDeletedBs",function(a){var d=new JU.BS;null==a&&null==this.bsAll&&(this.bsAll=JU.BSUtil.setAll(this.ac));if(null==a)d.or(this.bsAll); +else for(var b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1))d.or(this.getModelAtomBitSetIncludingDeleted(b,!1));return d},"JU.BS");c(b,"getModelAtomBitSetIncludingDeleted",function(a,d){var b=0>a?this.bsAll:this.am[a].bsAtoms;null==b&&(b=this.bsAll=JU.BSUtil.setAll(this.ac));return d?JU.BSUtil.copy(b):b},"~N,~B");c(b,"getAtomBitsMaybeDeleted",function(a,d){var b;switch(a){default:return this.getAtomBitsMDa(a,d,new JU.BS);case 1073741925:case 1073742189:case 1111490587:case 1073742128:case 1073741863:case 1086324744:return b= +new JU.BS,this.haveBioModels?this.bioModelset.getAtomBitsStr(a,d,b):b;case 1677721602:case 1073742331:return this.getAtomBitsMDb(a,d);case 1812599299:var c=this.getBoxInfo(d,1);b=this.getAtomsWithin(c.getBoundBoxCornerVector().length()+1E-4,c.getBoundBoxCenter(),null,-1);for(var e=b.nextSetBit(0);0<=e;e=b.nextSetBit(e+1))c.isWithin(this.at[e])||b.clear(e);return b;case 1094713350:b=JU.BSUtil.newBitSet2(0,this.ac);e=d;c=D(-1,[F(e.x)-1,F(e.y)-1,F(e.z)-1,F(e.x),F(e.y),F(e.z),0]);for(e=this.mc;0<=--e;){var g= +this.getUnitCell(e);null==g?JU.BSUtil.andNot(b,this.am[e].bsAtoms):b.andNot(g.notInCentroid(this,this.am[e].bsAtoms,c))}return b;case 1094713360:return this.getMoleculeBitSet(d);case 1073742363:return this.getSelectCodeRange(d);case 2097196:b=JU.BS.newN(this.ac);c=-1;g=0;for(e=this.ac;0<=--e;){var j=this.at[e];if(!JM.AtomCollection.isDeleted(j)){var k=j.atomSymmetry;if(null!=k){if(j.mi!=c){c=j.mi;if(null==this.getModelCellRange(c))continue;g=this.getModelSymmetryCount(c)}for(var j=0,f=g;0<=--f;)if(k.get(f)&& +1<++j){b.set(e);break}}}}return b;case 1088421903:return JU.BSUtil.copy(null==this.bsSymmetry?this.bsSymmetry=JU.BS.newN(this.ac):this.bsSymmetry);case 1814695966:if("unitcell".equals(d))d=JU.P3.new3(1,1,1);else{b=new JU.BS;g=C(d,"J.api.SymmetryInterface")?d:this.vwr.getCurrentUnitCell();if(null==g)return b;g=g.getUnitCellMultiplied();for(e=this.ac;0<=--e;)null!=this.at[e]&&(this.ptTemp1.setT(this.at[e]),g.toFractional(this.ptTemp1,!1),g.checkPeriodic(this.ptTemp1)&&b.set(e));return b}case 1094713349:b= +new JU.BS;c=d;g=this.vwr.getSymTemp();System.out.println("MS test within");k=-1;for(e=this.ac;0<=--e;)JM.AtomCollection.isDeleted(this.at[e])||(j=this.at[e].getModelIndex(),k!=j&&(k=j,g=this.getUnitCell(k)),null!=g&&(this.ptTemp.setT(this.at[e]),g.toFractional(this.ptTemp,!1),g.isWithinUnitCell(this.ptTemp,c.x,c.y,c.z)&&b.set(e)));System.out.println("MS test within"+b);return b}},"~N,~O");c(b,"getSelectCodeRange",function(a){var d=new JU.BS,b=a[0],c=a[1];a=a[2];var e=this.vwr.getBoolean(603979822); +0<=a&&(300>a&&!e)&&(a=this.chainToUpper(a));for(var g=this.mc;0<=--g;)if(this.am[g].isBioModel)for(var j=this.am[g],k,f=j.chainCount;0<=--f;){var s=j.chains[f];if(-1==a||a==(k=s.chainID)||!e&&0k&&a==this.chainToUpper(k))for(var m=s.groups,s=s.groupCount,p=0;0<=p;)p=JM.ModelSet.selectSeqcodeRange(m,s,p,b,c,d)}return d},"~A");b.selectSeqcodeRange=c(b,"selectSeqcodeRange",function(a,d,b,c,e,g){var j,k,f,s=!1;for(k=b;kc&&j-ca?this.getAtomsWithin(a,this.at[f].getFractionalUnitCoordPt(b,!0,k),g,s):(this.setIteratorForAtom(j,s,f,a,c),j.addAtoms(g))}else{null==e&&g.or(d);for(f=d.nextSetBit(0);0<=f;f=d.nextSetBit(f+1))0>a?this.getAtomsWithin(a,this.at[f],g,this.at[f].mi): +(this.setIteratorForAtom(j,-1,f,a,c),j.addAtoms(g))}j.release();return g},"~N,JU.BS,~B,J.atomdata.RadiusData,JU.BS");c(b,"getAtomsWithin",function(a,d,b,c){null==b&&(b=new JU.BS);if(0>a){a=-a;for(var e=this.ac;0<=--e;){var g=this.at[e];JM.AtomCollection.isDeleted(g)||0<=c&&g.mi!=c||!b.get(e)&&g.getFractionalUnitDistance(d,this.ptTemp1,this.ptTemp2)<=a&&b.set(g.i)}return b}for(var g=this.getSelectedAtomIterator(null,!1,!1,!1,!1),j=0<=c?JU.BSUtil.newAndSetBit(c):this.getIterativeModels(!0),k=j.nextSetBit(0);0<= +k;k=j.nextSetBit(k+1))e=this.am[k].bsAtoms.nextSetBit(0),0>e||(this.setIteratorForAtom(g,c,e,-1,null),g.setCenter(d,a),g.addAtoms(b));g.release();return b},"~N,JU.T3,JU.BS,~N");c(b,"deleteBonds",function(a,d){if(!d)for(var b=new JU.BS,c=new JU.BS,e=a.nextSetBit(0);0<=e;e=a.nextSetBit(e+1)){var g=this.bo[e].atom1;this.am[g.mi].isModelKit||(b.clearAll(),c.clearAll(),b.set(g.i),c.set(this.bo[e].getAtomIndex2()),this.addStateScript("connect ",null,b,c,"delete",!1,!0))}this.dBb(a,d)},"JU.BS,~B");c(b,"makeConnections2", +function(a,d,b,c,e,g,j,k,f,s,m){null==j&&(j=new JU.BS);var p=65535==b,z=131071==b,y=65537==b;z&&(b=1);var n=JU.Edge.isOrderH(b),r=!1,u=!1,v=!1,w=!1;switch(c){case 12291:return this.deleteConnections(a,d,b,e,g,k,z);case 603979872:case 1073741852:if(515!=b){if(k){a=e;e=new JU.BS;g=new JU.BS;for(var x=a.nextSetBit(0);0<=x;x=a.nextSetBit(x+1))e.set(this.bo[x].atom1.i),g.set(this.bo[x].atom2.i)}return D(-1,[n?this.autoHbond(e,g,!1):this.autoBondBs4(e,g,null,j,this.vwr.getMadBond(),603979872==c,m),0])}u= +w=!0;break;case 1086324745:r=u=!0;break;case 1073742025:u=!0;break;case 1073741904:v=!0}c=!r&&!p;this.defaultCovalentMad=this.vwr.getMadBond();m=0>a;var z=0>d,A=m||z,B=!k||0.1!=a||1E8!=d;B&&(a=this.fixD(a,m),d=this.fixD(d,z));var C=this.getDefaultMadFromOrder(b),F=0,G=0,I=null,K=null,L=null,N="\x00",O=b|131072,Q=65535!=b&&0!=(b&512);try{for(x=e.nextSetBit(0);0<=x;x=e.nextSetBit(x+1)){if(k)I=this.bo[x],K=I.atom1,L=I.atom2;else{K=this.at[x];if(K.isDeleted())continue;N=this.isModulated(x)?"\x00":K.altloc}for(var P= +k?0:g.nextSetBit(0);0<=P;P=g.nextSetBit(P+1)){if(k)P=2147483646;else{if(P==x)continue;L=this.at[P];if(null==L||K.mi!=L.mi||L.isDeleted())continue;if("\x00"!=N&&N!=L.altloc&&"\x00"!=L.altloc)continue;I=K.getBond(L)}if(!(null==I?u:v)&&!(B&&!this.isInRange(K,L,a,d,m,z,A)||Q&&null!=I&&!this.allowAromaticBond(I)))if(null==I)j.set(this.bondAtoms(K,L,b,C,j,s,f,!0).index),F++;else if(c&&(I.setOrder(b),y&&(this.haveAtropicBonds=!0,I.setAtropisomerOptions()),this.bsAromatic.clear(I.index)),p||b==I.order||O== +I.order||n&&I.isHydrogen())j.set(I.index),G++}}}catch(R){if(!E(R,Exception))throw R;}w&&this.assignAromaticBondsBs(!0,j);r||this.sm.setShapeSizeBs(1,-2147483648,null,j);return D(-1,[F,G])},"~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N,JU.SB");c(b,"autoBondBs4",function(a,d,b,c,e,g,j){if(g)return this.autoBond_Pre_11_9_24(a,d,b,c,e);if(0==this.ac)return 0;0==e&&(e=1);1.4E-45==this.maxBondingRadius&&this.findMaxRadii();g=this.vwr.getFloat(570425348);var k=this.vwr.getFloat(570425364),k=k*k,f=0;this.showRebondTimes&& +JU.Logger.startTimer("autobond");var s=-1,m=null==a,p,z;m?(z=0,p=null):(a.equals(d)?p=a:(p=JU.BSUtil.copy(a),p.or(d)),z=p.nextSetBit(0));for(var y=this.getSelectedAtomIterator(null,!1,!1,!0,!1),n=!1;0<=z&&zthis.occupancies[z]!=50>this.occupancies[E]||A&&Math.signum(C.getFormalCharge())==x)||(D=this.isBondable(w,C.getBondingRadius(),y.foundDistance2(),k,g)?1:0,0g&&0>j||0f||r&&g.get(v.i)||n.isBonded(v)))if(this.v1.sub2(n,v),null!=(y=JM.ModelSet.checkMinAttachedAngle(n,s,this.v1,this.v2,b)))if(this.v1.scale(-1),null!=(z=JM.ModelSet.checkMinAttachedAngle(v,s,this.v1,this.v2,b))){var w=0,x;u&&!Float.isNaN(z.x)&&!Float.isNaN(y.x)? +(x=4096,w=JM.HBond.calcEnergy(Math.sqrt(p),z.distance(n),z.distance(y),v.distance(y))/1E3):x=2048;c.set(this.addHBond(n,v,x,w));m++}}}d.release();this.sm.setShapeSizeBs(1,-2147483648,null,c);this.showRebondTimes&&JU.Logger.checkTimer("hbond",!1);return b?m:-m},"JU.BS,JU.BS,~B");b.checkMinAttachedAngle=c(b,"checkMinAttachedAngle",function(a,d,b,c,e){var g=a.bonds,j=!0,k=null;if(null!=g&&0\n');if(null!=this.modelSetProperties){for(var d=this.modelSetProperties.propertyNames();d.hasMoreElements();){var b=d.nextElement();a.append('\n ');a.append("\n");return a.toString()});c(b,"getSymmetryInfoAsString",function(){for(var a=(new JU.SB).append("Symmetry Information:"),d=0;d=this.at.length&&this.growAtomArrays(this.ac+100);this.at[this.ac]=k;this.setBFactor(this.ac,n,!1);this.setOccupancy(this.ac,y,!1);this.setPartialCharge(this.ac,z,!1);null!=r&&this.setAtomTensors(this.ac,r);k.group=d;k.colixAtom=this.vwr.cm.getColixAtomPalette(k,J.c.PAL.CPK.id);null!=c&&(null!=e&&(null==this.atomTypes&& +(this.atomTypes=Array(this.at.length)),this.atomTypes[this.ac]=e),k.atomID=v,0==v&&(null==this.atomNames&&(this.atomNames=Array(this.at.length)),this.atomNames[this.ac]=c.intern()));-2147483648!=g&&(null==this.atomSerials&&(this.atomSerials=D(this.at.length,0)),this.atomSerials[this.ac]=g);0!=j&&(null==this.atomSeqIDs&&(this.atomSeqIDs=D(this.at.length,0)),this.atomSeqIDs[this.ac]=j);null!=m&&this.setVibrationVector(this.ac,m);Float.isNaN(x)||this.setBondingRadius(this.ac,x);this.ac++;return k},"~N,JM.Group,~N,~S,~S,~N,~N,~N,JU.P3,~N,JU.V3,~N,~N,~N,~N,JU.Lst,~B,~N,JU.BS,~N"); +c(b,"getInlineData",function(a){var d=null;if(0<=a)d=this.am[a].loadScript;else for(a=this.mc;0<=--a&&!(0<(d=this.am[a].loadScript).length()););a=d.lastIndexOf('data "');if(0>a)return d=JU.PT.getQuotedStringAt(d.toString(),0),JS.ScriptCompiler.unescapeString(d,0,d.length);a=d.indexOf2('"',a+7);var b=d.lastIndexOf('end "');return ba?null:d.substring2(a+2,b)},"~N");c(b,"isAtomPDB",function(a){return 0<=a&&this.am[this.at[a].mi].isBioModel},"~N");c(b,"setAtomNamesAndNumbers",function(a,d,b,c){var e= +-1;if(c){for(;a=this.ac)return;e=this.at[a].mi;a=this.am[e].firstAtomIndex}null==this.atomSerials&&(this.atomSerials=D(this.ac,0));null==this.atomNames&&(this.atomNames=Array(this.ac));for(var g=this.isXYZ&&this.vwr.getBoolean(603979978),j=2147483647,k=1;a=-d){if(0==s||c)this.atomSerials[a]= +ak&&(k=s),c&&(this.atomNames[a]=(f.getElementSymbol()+s).intern());(!this.am[j].isModelKit||0c.length)){var e=F(c[0]),g=0>e;g&&(e=-1-e);var j=F(c[1]);if(!(0>j||e>=this.ac||j>=this.ac)){var k=2k&&(k&=65535);var f=3k;)if(c=this.at[a[k]],e=this.at[a[f]],c.isBonded(e))for(var s=b;0<=--s;)if(s!=k&&s!=f&&(g=this.at[a[s]]).isBonded(c))for(var m=b;0<=--m;)if(m!=k&&m!=f&&m!=s&&(j=this.at[a[m]]).isBonded(e)){var p=D(4,0);p[0]=g.i;p[1]=c.i;p[2]=e.i;p[3]=j.i;d.addLast(p)}b=d.size();a=JU.AU.newInt2(b);for(k=b;0<=--k;)a[b-k-1]=d.get(k);return a},"~A");c(b,"setModulation",function(a,d,b,c){if(null==this.bsModulated)if(d)this.bsModulated=new JU.BS;else if(null== +a)return;null==a&&(a=this.getModelAtomBitSetIncludingDeleted(-1,!1));for(var e=this.vwr.getFloat(1275072532),g=!1,j=a.nextSetBit(0);0<=j;j=a.nextSetBit(j+1)){var k=this.getModulation(j);null!=k&&(k.setModTQ(this.at[j],d,b,c,e),null!=this.bsModulated&&this.bsModulated.setBitTo(j,d),g=!0)}g||(this.bsModulated=null)},"JU.BS,~B,JU.P3,~B");c(b,"getBoundBoxOrientation",function(a,d,b){var c=0,e=0,g=0,j=null,k=null,f=d.nextSetBit(0),s=0;if(0<=f){if(null==this.vOrientations){for(var m=0,j=new JU.P4,s=Array(3375), +c=-7;7>=c;c++)for(e=-7;7>=e;e++)for(g=0;14>=g;g++,m++)1<(s[m]=JU.V3.new3(c/7,e/7,g/14)).length()&&--m;this.vOrientations=Array(m);for(c=m;0<=--c;)j.set4(s[c].x,s[c].y,s[c].z,0),this.vOrientations[c]=JU.Quat.newP4(j);for(c=m;0<=--c;)m=Math.sqrt(1-s[c].lengthSquared()),Float.isNaN(m)&&(m=0),j.set4(s[c].x,s[c].y,s[c].z,m),this.vOrientations[c]=JU.Quat.newP4(j)}var m=new JU.P3,s=3.4028235E38,g=null,p=new JU.BoxInfo;p.setMargin(1312817669==a?0:0.1);for(c=this.vOrientations.length;0<=--c;){j=this.vOrientations[c]; +p.reset();if(null==b)for(e=f;0<=e;e=d.nextSetBit(e+1)){var z=j.transform2(this.at[e],m);p.addBoundBoxPoint(z)}else for(e=b.length;0<=--e;)p.addBoundBoxPoint(j.transform2(b[e],m));switch(a){default:case 1312817669:case 1073741864:case 1814695966:e=(p.bbCorner1.x-p.bbCorner0.x)*(p.bbCorner1.y-p.bbCorner0.y)*(p.bbCorner1.z-p.bbCorner0.z);break;case 1111492629:e=p.bbCorner1.x-p.bbCorner0.x;break;case 1111492630:e=p.bbCorner1.y-p.bbCorner0.y;break;case 1111492631:e=p.bbCorner1.z-p.bbCorner0.z}ec;c++)k.transform2(a[c],a[c]),0c&&(m.set(0,1,0),j=JU.Quat.newVA(m,90).mulQ(j),k=c,c=g,g=k),m.set(1, +0,0),j=JU.Quat.newVA(m,90).mulQ(j),k=e,e=g,g=k)}}return 1312817669==a?s+"\t{"+c+" "+e+" "+g+"}\t"+d:1814695966==a?null:null==j||0==j.getTheta()?new JU.Quat:j},"~N,JU.BS,~A");c(b,"getUnitCellForAtom",function(a){if(0>a||a>this.ac||null==this.at[a])return null;if(null!=this.bsModulated){var d=this.getModulation(a),d=null==d?null:d.getSubSystemUnitCell();if(null!=d)return d}return this.getUnitCell(this.at[a].mi)},"~N");c(b,"clearCache",function(){for(var a=this.mc;0<=--a;)this.am[a].resetDSSR(!1)}); +c(b,"getSymMatrices",function(a){var d=this.getModelSymmetryCount(a);if(0==d)return null;var b=Array(d),c=this.am[a].biosymmetry;null==c&&(c=this.getUnitCell(a));for(a=d;0<=--a;)b[a]=c.getSpaceGroupOperation(a);return b},"~N");c(b,"getSymmetryInvariant",function(a){a=this.getBasisAtom(a,!0);return null==a?D(0,0):this.getUnitCellForAtom(a.i).getInvariantSymops(a,null)},"~N");c(b,"getBsBranches",function(a){for(var d=v(a.length/6),b=Array(d),c=new java.util.Hashtable,e=0,g=0;eMath.abs(a[g+ +5]-a[g+4]))){var j=F(a[g+1]),k=F(a[g+2]),f=""+j+"_"+k;if(!c.containsKey(f)){c.put(f,Boolean.TRUE);for(var f=this.vwr.getBranchBitSet(k,j,!0),s=this.at[j].bonds,j=this.at[j],m=0;mk.nextSetBit(0)))if(d>j.altLocCount)1==d&&e.or(k);else{if(this.am[g].isBioModel){if(-1E3>d){var j=1E3+d,f=this.getAltLocListInModel(g);-32!=j&&0>f.indexOf(String.fromCharCode(-j))&&(j=-2147483648)}else 0> +d?(f=this.getAltLocListInModel(g),j=-1-d,j=j>=f.length?-2147483648:-f.charAt(j).charCodeAt(0)):j=d;if(-2147483648==j)continue;this.am[g].getConformation(j,b,k,e)}else{var s=this.getAltLocCountInModel(g),f=this.getAltLocListInModel(g),m=new JU.BS;if(-1E3>d)var p=String.fromCharCode(-1E3-d),j=f.indexOf(p);else j=Math.abs(d)-1;if(0>j||j>=s)continue;for(p=s;0<=--p;)p!=j&&k.andNot(this.getAtomBitsMDa(1073742355,f.substring(p,p+1),m))}e.or(k)}}return e},"~N,~N,~B,JU.BS");c(b,"getSequenceBits",function(a, +d,b){return this.haveBioModels?this.bioModelset.getAllSequenceBits(a,d,b):b},"~S,JU.BS,JU.BS");c(b,"getBioPolymerCountInModel",function(a){return this.haveBioModels?this.bioModelset.getBioPolymerCountInModel(a):0},"~N");c(b,"getPolymerPointsAndVectors",function(a,d,b,c){this.haveBioModels&&this.bioModelset.getAllPolymerPointsAndVectors(a,d,b,c)},"JU.BS,JU.Lst,~B,~N");c(b,"recalculateLeadMidpointsAndWingVectors",function(a){this.haveBioModels&&this.bioModelset.recalculatePoints(a)},"~N");c(b,"calcRasmolHydrogenBonds", +function(a,d,b,c,e,g,j){this.haveBioModels&&this.bioModelset.calcAllRasmolHydrogenBonds(a,d,b,c,e,g,j,2)},"JU.BS,JU.BS,JU.Lst,~B,~N,~B,JU.BS");c(b,"calculateStraightnessAll",function(){this.haveBioModels&&!this.haveStraightness&&this.bioModelset.calculateStraightnessAll()});c(b,"calculateStruts",function(a,d){return this.haveBioModels?this.bioModelset.calculateStruts(a,d):0},"JU.BS,JU.BS");c(b,"getGroupsWithin",function(a,d){return this.haveBioModels?this.bioModelset.getGroupsWithinAll(a,d):new JU.BS}, +"~N,JU.BS");c(b,"getProteinStructureState",function(a,d){return this.haveBioModels?this.bioModelset.getFullProteinStructureState(a,d):""},"JU.BS,~N");c(b,"calculateStructures",function(a,d,b,c,e,g){return this.haveBioModels?this.bioModelset.calculateAllStuctures(a,d,b,c,e,g):""},"JU.BS,~B,~B,~B,~B,~N");c(b,"calculateStructuresAllExcept",function(a,d,b,c,e,g,j){this.freezeModels();return this.haveBioModels?this.bioModelset.calculateAllStructuresExcept(a,d,b,c,e,g,j):""},"JU.BS,~B,~B,~B,~B,~B,~N"); +c(b,"recalculatePolymers",function(a){this.bioModelset.recalculateAllPolymers(a,this.getGroups())},"JU.BS");c(b,"calculatePolymers",function(a,d,b,c){null!=this.bioModelset&&this.bioModelset.calculateAllPolymers(a,d,b,c)},"~A,~N,~N,JU.BS");c(b,"calcSelectedMonomersCount",function(){this.haveBioModels&&this.bioModelset.calcSelectedMonomersCount()});c(b,"setProteinType",function(a,d){this.haveBioModels&&this.bioModelset.setAllProteinType(a,d)},"JU.BS,J.c.STR");c(b,"setStructureList",function(a){this.haveBioModels&& +this.bioModelset.setAllStructureList(a)},"java.util.Map");c(b,"setConformation",function(a){this.haveBioModels&&this.bioModelset.setAllConformation(a);return JU.BSUtil.copy(a)},"JU.BS");c(b,"getHeteroList",function(a){a=this.haveBioModels?this.bioModelset.getAllHeteroList(a):null;return null==a?this.getInfoM("hetNames"):a},"~N");c(b,"getUnitCellPointsWithin",function(a,d,b,c){var e=new JU.Lst,g=null,j=null;c&&(g=new java.util.Hashtable,j=new JU.Lst,g.put("atoms",j),g.put("points",e));var k=null== +d?-1:d.nextSetBit(0);d=this.vwr.getModelUndeletedAtomsBitSet(0>k?this.vwr.am.cmi:this.at[k].mi);0>k&&(k=d.nextSetBit(0));if(0<=k){var f=this.getUnitCellForAtom(k);if(null!=f){d=f.getIterator(this.vwr,this.at[k],d,a);for(null!=b&&d.setCenter(b,a);d.hasNext();)k=d.next(),b=d.getPosition(),e.addLast(b),c&&j.addLast(Integer.$valueOf(k))}}return c?g:e},"~N,JU.BS,JU.P3,~B");c(b,"calculateDssrProperty",function(a){if(null!=a){if(null==this.dssrData||this.dssrData.lengthz.distanceSquared(m)){this.setSite(u,y,!0);j.clear(k);b.clear(k);continue a}}}}j.isEmpty()||System.err.println("Model basis atoms not found for "+j);g&&this.setAsymmetricUnit(a,null,b,!c)}}this.setInfo(a,"unitCellParams",d.getUnitCellParams());this.setInfo(a,"spaceGroupAssigned",Boolean.TRUE);this.setInfo(a,"spaceGroup",d.getClegId());this.setInfo(a,"spaceGroupInfo", +null);null!=this.am[a].simpleCage&&(d.getUnitCell(this.am[a].simpleCage.getUnitCellVectors(),!1,null),this.setInfo(a,"unitCellParams",d.getUnitCellParams()));this.setModelCage(a,null)},"~N,J.api.SymmetryInterface,JU.BS");c(b,"setAsymmetricUnit",function(a,d,b,c){null==d&&(d=this.vwr.getModelUndeletedAtomsBitSet(a));this.am[a].bsAsymmetricUnit=b;null==this.bsSymmetry&&(this.bsSymmetry=JU.BS.newN(this.ac));this.bsSymmetry.or(d);this.bsSymmetry.andNot(b);if(c){a=0;for(c=d.nextSetBit(0);0<=c;c=d.nextSetBit(c+ +1)){var e=b.get(c);this.at[c].setSymop(e?1:0,!1);e&&this.setSite(this.at[c],++a,!1)}d.andNot(b)}},"~N,JU.BS,JU.BS,~B");c(b,"setModelCage",function(a,d){0<=a&&a=c.length)continue;c[j]=++e;d.set(g)}this.setSite(this.at[g],-1,!1);this.setSite(this.at[g],c[j],!0)}null==this.bsSymmetry&&(this.bsSymmetry=JU.BS.newN(this.ac)); +this.bsSymmetry.or(a);this.bsSymmetry.andNot(d)}}},"~N");c(b,"getConnectingAtoms",function(a,d){for(var b=new JU.BS,c=new JU.BS,e=a.nextSetBit(0);0<=e;e=a.nextSetBit(e+1))for(var g=this.at[e],j=g.bonds,k=0,f=g.getBondCount();0<=--f;)if(j[f].isCovalent()&&!a.get(k=j[f].getOtherAtom(g).i))b.set(e),c.set(k);a.or(c);d.or(c);return b},"JU.BS,JU.BS");c(b,"saveAtomPositions",function(){for(var a=Array(this.at.length),d=a.length;0<=--d;){var b=this.at[d];JM.AtomCollection.isDeleted(b)||(a[d]=JU.P3.newP(b))}return a}); +c(b,"restoreAtomPositions",function(a){for(var d=a.length;0<=--d;){var b=this.at[d];JM.AtomCollection.isDeleted(b)||b.setT(a[d])}},"~A");c(b,"clearUnitCell",function(a){if(null!=this.unitCells){if(0>a)for(a=0;athis.modelIndex)return!0;JU.BSUtil.deleteBits(this.bsBonds, +d);JU.BSUtil.deleteBits(this.bsAtoms1,b);JU.BSUtil.deleteBits(this.bsAtoms2,b);return this.isValid()},"~N,JU.BS,JU.BS");c(b,"setModelIndex",function(a){this.modelIndex=a},"~N")});n("JM");K(JM,"Structure");n("JM");var pb=r(function(){this.id="";this.type=" ";this.scale=this.tickLabelFormats=this.ticks=null;this.first=0;this.signFactor=1;this.reference=null;u(this,arguments)},JM,"TickInfo",null);x(pb,function(b){this.ticks=b},"JU.P3");n("JU");A(["JU.P3","$.V3"],"JU.BoxInfo",["java.util.Hashtable","JU.Measure", +"$.P4","JU.Point3fi"],function(){var b=r(function(){this.bbVertices=this.bbVector=this.bbCenter=this.bbCorner1=this.bbCorner0=null;this.isScaleSet=!1;this.margin=0;u(this,arguments)},JU,"BoxInfo",null);N(b,function(){this.bbCorner0=new JU.P3;this.bbCorner1=new JU.P3;this.bbCenter=new JU.P3;this.bbVector=new JU.V3;this.bbVertices=Array(8);for(var a=0;8>a;a++)JU.BoxInfo.unitBboxPoints[a]=JU.P3.new3(-1,-1,-1),JU.BoxInfo.unitBboxPoints[a].scaleAdd2(2,JU.BoxInfo.unitCubePoints[a],JU.BoxInfo.unitBboxPoints[a])}); +x(b,function(){for(var a=8;0<=--a;)this.bbVertices[a]=new JU.Point3fi;this.reset()});c(b,"reset",function(){this.isScaleSet=!1;this.bbCorner0.set(3.4028235E38,3.4028235E38,3.4028235E38);this.bbCorner1.set(-3.4028235E38,-3.4028235E38,-3.4028235E38)});b.scaleBox=c(b,"scaleBox",function(a,d){if(!(0==d||1==d)){for(var b=new JU.P3,c=new JU.V3,e=0;8>e;e++)b.add(a[e]);b.scale(0.125);for(e=0;8>e;e++)c.sub2(a[e],b),c.scale(d),a[e].add2(b,c)}},"~A,~N");b.getVerticesFromOABC=c(b,"getVerticesFromOABC",function(a){for(var d= +Array(8),b=0;7>=b;b++)d[b]=JU.P3.newP(a[0]),4==(b&4)&&d[b].add(a[1]),2==(b&2)&&d[b].add(a[2]),1==(b&1)&&d[b].add(a[3]);return d},"~A");b.getCanonicalCopy=c(b,"getCanonicalCopy",function(a,d){for(var b=Array(8),c=0;8>c;c++)b[JU.BoxInfo.toCanonical[c]]=JU.P3.newP(a[c]);JU.BoxInfo.scaleBox(b,d);return b},"~A,~N");b.toOABC=c(b,"toOABC",function(a,d){var b=JU.P3.newP(a[0]),c=JU.P3.newP(a[4]),e=JU.P3.newP(a[2]),g=JU.P3.newP(a[1]);c.sub(b);e.sub(b);g.sub(b);null!=d&&b.add(d);return w(-1,[b,c,e,g])},"~A,JU.T3"); +c(b,"getBoundBoxCenter",function(){this.isScaleSet||this.setBbcage(1);return this.bbCenter});c(b,"getBoundBoxCornerVector",function(){this.isScaleSet||this.setBbcage(1);return this.bbVector});c(b,"getBoundBoxPoints",function(a){this.isScaleSet||this.setBbcage(1);return a?w(-1,[this.bbCenter,JU.P3.newP(this.bbVector),this.bbCorner0,this.bbCorner1]):w(-1,[this.bbCorner0,this.bbCorner1])},"~B");c(b,"getBoundBoxVertices",function(){this.isScaleSet||this.setBbcage(1);return this.bbVertices});c(b,"setBoundBoxFromOABC", +function(a){for(var d=JU.P3.newP(a[0]),b=new JU.P3,c=0;4>c;c++)b.add(a[c]);this.setBoundBox(d,b,!0,1)},"~A");c(b,"setBoundBox",function(a,d,b,c){if(null!=a){if(0==c)return;if(b){if(0==a.distance(d))return;this.bbCorner0.set(Math.min(a.x,d.x),Math.min(a.y,d.y),Math.min(a.z,d.z));this.bbCorner1.set(Math.max(a.x,d.x),Math.max(a.y,d.y),Math.max(a.z,d.z))}else{if(0==d.x||0==d.y&&0==d.z)return;this.bbCorner0.set(a.x-d.x,a.y-d.y,a.z-d.z);this.bbCorner1.set(a.x+d.x,a.y+d.y,a.z+d.z)}}this.setBbcage(c)},"JU.T3,JU.T3,~B,~N"); +c(b,"setMargin",function(a){this.margin=a},"~N");c(b,"addBoundBoxPoint",function(a){this.isScaleSet=!1;JU.BoxInfo.addPoint(a,this.bbCorner0,this.bbCorner1,this.margin)},"JU.T3");b.addPoint=c(b,"addPoint",function(a,d,b,c){a.x-cb.x&&(b.x=a.x+c);a.y-cb.y&&(b.y=a.y+c);a.z-cb.z&&(b.z=a.z+c)},"JU.T3,JU.T3,JU.T3,~N");b.addPointXYZ=c(b,"addPointXYZ",function(a,d,b,c,e,g){a-ge.x&&(e.x=a+g);d-ge.y&& +(e.y=d+g);b-ge.z&&(e.z=b+g)},"~N,~N,~N,JU.P3,JU.P3,~N");c(b,"setBbcage",function(a){this.isScaleSet=!0;this.bbCenter.add2(this.bbCorner0,this.bbCorner1);this.bbCenter.scale(0.5);this.bbVector.sub2(this.bbCorner1,this.bbCenter);0=this.bbCorner0.x&&a.x<=this.bbCorner1.x&&a.y>=this.bbCorner0.y&&a.y<=this.bbCorner1.y&&a.z>=this.bbCorner0.z&&a.z<=this.bbCorner1.z},"JU.P3");c(b,"getMaxDim",function(){return 2*this.bbVector.length()});c(b,"getInfo",function(a){var d=Double.$valueOf(Math.abs(8*this.bbVector.x*this.bbVector.y*this.bbVector.z));if("volume".equals(a))return d; +var b=JU.P3.newP(this.bbCenter);return"center".equals(a)?b:null==a||"info".equals(a)?(a=new java.util.Hashtable,a.put("center",b),b=JU.V3.newVsub(this.bbCorner1,this.bbCorner0),a.put("dimensions",b),a.put("girth",Double.$valueOf(b.x+b.y+b.z)),a.put("area",Double.$valueOf(2*(b.x*b.y+b.x*b.z+b.z*b.y))),a.put("volume",d),a):null},"~S");f(b,"toString",function(){return""+this.bbCorner0+this.bbCorner1});b.getBoxFacesFromOABC=c(b,"getBoxFacesFromOABC",function(a){var d=Array(6),b=new JU.V3,c=new JU.V3, +e=new JU.P3,g=new JU.P3,j=new JU.P3;a=null==a?JU.BoxInfo.unitCubePoints:JU.BoxInfo.getVerticesFromOABC(a);for(var k=0;6>k;k++)e.setT(a[JU.BoxInfo.facePoints[k][0]]),g.setT(a[JU.BoxInfo.facePoints[k][1]]),j.setT(a[JU.BoxInfo.facePoints[k][2]]),d[k]=JU.Measure.getPlaneThroughPoints(e,g,j,b,c,new JU.P4);return d},"~A");b.bbcageTickEdges=ba(-1,"z\x00\x00yx\x00\x00\x00\x00\x00\x00\x00".split(""));b.uccageTickEdges=ba(-1,"zyx\x00\x00\x00\x00\x00\x00\x00\x00\x00".split(""));b.edges=O(-1,[0,1,0,2,0,4,1,3, +1,5,2,3,2,6,3,7,4,5,4,6,5,7,6,7]);b.faceOrder=D(-1,[0,3,5,2,1,4]);b.facePoints=w(-1,[D(-1,[4,0,6]),D(-1,[4,6,5]),D(-1,[5,7,1]),D(-1,[1,3,0]),D(-1,[6,2,7]),D(-1,[1,0,5]),D(-1,[0,2,6]),D(-1,[6,7,5]),D(-1,[7,3,1]),D(-1,[3,2,0]),D(-1,[2,3,7]),D(-1,[0,4,5])]);b.unitCubePoints=w(-1,[JU.P3.new3(0,0,0),JU.P3.new3(0,0,1),JU.P3.new3(0,1,0),JU.P3.new3(0,1,1),JU.P3.new3(1,0,0),JU.P3.new3(1,0,1),JU.P3.new3(1,1,0),JU.P3.new3(1,1,1)]);b.toCanonical=D(-1,[0,3,4,7,1,2,5,6]);b.unitBboxPoints=Array(8)});n("JU");A(["JU.BS"], +"JU.BSUtil",null,function(){var b=G(JU,"BSUtil",null);b.newAndSetBit=c(b,"newAndSetBit",function(a){var d=JU.BS.newN(a+1);d.set(a);return d},"~N");b.areEqual=c(b,"areEqual",function(a,d){return null==a||null==d?null==a&&null==d:a.equals(d)},"JU.BS,JU.BS");b.haveCommon=c(b,"haveCommon",function(a,d){return null==a||null==d?!1:a.intersects(d)},"JU.BS,JU.BS");b.cardinalityOf=c(b,"cardinalityOf",function(a){return null==a?0:a.cardinality()},"JU.BS");b.newBitSet2=c(b,"newBitSet2",function(a,d){var b=JU.BS.newN(d); +b.setBits(a,d);return b},"~N,~N");b.setAll=c(b,"setAll",function(a){var d=JU.BS.newN(a);d.setBits(0,a);return d},"~N");b.andNot=c(b,"andNot",function(a,d){null!=d&&null!=a&&a.andNot(d);return a},"JU.BS,JU.BS");b.copy=c(b,"copy",function(a){return null==a?null:a.clone()},"JU.BS");b.copy2=c(b,"copy2",function(a,d){if(null==a||null==d)return null;d.clearAll();d.or(a);return d},"JU.BS,JU.BS");b.copyInvert=c(b,"copyInvert",function(a,d){return null==a?null:JU.BSUtil.andNot(JU.BSUtil.setAll(d),a)},"JU.BS,~N"); +b.invertInPlace=c(b,"invertInPlace",function(a,d){return JU.BSUtil.copy2(JU.BSUtil.copyInvert(a,d),a)},"JU.BS,~N");b.toggleInPlace=c(b,"toggleInPlace",function(a,d){a.equals(d)?a.clearAll():0==JU.BSUtil.andNot(JU.BSUtil.copy(d),a).length()?JU.BSUtil.andNot(a,d):a.or(d);return a},"JU.BS,JU.BS");b.deleteBits=c(b,"deleteBits",function(a,d){if(null==a||null==d)return a;var b=d.nextSetBit(0);if(0>b)return a;var c=a.length(),e=Math.min(c,d.length()),g;for(g=d.nextClearBit(b);g=d;e=a.nextSetBit(e+ +1))c.set(e+b);JU.BSUtil.copy2(c,a)}},"JU.BS,~N,~N");b.setMapBitSet=c(b,"setMapBitSet",function(a,d,b,c){var e;a.containsKey(c)?e=a.get(c):a.put(c,e=new JU.BS);e.setBits(d,b+1)},"java.util.Map,~N,~N,~S");b.emptySet=new JU.BS});n("JU");A(["JU.Int2IntHash"],"JU.C","JU.AU $.CU $.PT $.SB J.c.PAL JU.Escape $.Logger".split(" "),function(){var b=G(JU,"C",null);b.getColix=c(b,"getColix",function(a){if(0==a)return 0;a|=4278190080;var b=JU.C.colixHash.get(a);return(0=JU.C.argbs.length){var e=b?c+1:2*JU.C.colixMax;2048 +c?JU.C.colixMax++:JU.C.colixMax},"~N,~B");b.setLastGrey=c(b,"setLastGrey",function(a){JU.C.calcArgbsGreyscale();JU.C.argbsGreyscale[2047]=JU.CU.toFFGGGfromRGB(a)},"~N");b.calcArgbsGreyscale=c(b,"calcArgbsGreyscale",function(){if(null==JU.C.argbsGreyscale){for(var a=D(JU.C.argbs.length,0),b=JU.C.argbs.length;4<=--b;)a[b]=JU.CU.toFFGGGfromRGB(JU.C.argbs[b]);JU.C.argbsGreyscale=a}});b.getArgbGreyscale=c(b,"getArgbGreyscale",function(a){null==JU.C.argbsGreyscale&&JU.C.calcArgbsGreyscale();return JU.C.argbsGreyscale[a& +-30721]},"~N");b.getColixO=c(b,"getColixO",function(a){if(null==a)return 0;if(C(a,"J.c.PAL"))return a===J.c.PAL.NONE?0:2;if(C(a,Integer))return JU.C.getColix(a.intValue());if("string"==typeof a)return JU.C.getColixS(a);if(C(a,Byte))return 0==a.byteValue()?0:2;JU.Logger.debugging&&JU.Logger.debug("?? getColix("+a+")");return 22},"~O");b.getTranslucentFlag=c(b,"getTranslucentFlag",function(a){return 0==a?0:0>a?30720:Float.isNaN(a)||255<=a||1==a?16384:(v(Math.floor(1>a?256*a:15<=a?a:9>=a?v(Math.floor(a- +1))<<5:256))>>5&15)<<11},"~N");b.isColixLastAvailable=c(b,"isColixLastAvailable",function(a){return 0>11&15;switch(a){case 0:return 0;case 1:case 2:case 3:case 4:case 5:case 6:case 7:return a<< +5;case 15:return-1;default:return 255}},"~N");b.getColixS=c(b,"getColixS",function(a){var b=JU.CU.getArgbFromString(a);return 0!=b?JU.C.getColix(b):"none".equalsIgnoreCase(a)?0:"opaque".equalsIgnoreCase(a)?1:2},"~S");b.getColixArray=c(b,"getColixArray",function(a){if(null==a||0==a.length)return null;a=JU.PT.getTokens(a);for(var b=U(a.length,0),c=0;c>24&255;return 255==b?JU.C.getColix(a):JU.C.getColixTranslucent3(JU.C.getColix(a),!0,b/255)},"~N");b.getBgContrast=c(b,"getBgContrast",function(a){return 128>(JU.CU.toFFGGGfromRGB(a)&255)?8:4},"~N");b.colixMax=4;b.argbs=D(128,0);JU.C.argbs[3]= +-74566;b.argbsGreyscale=null;b.colixHash=new JU.Int2IntHash(256);for(var b=D(-1,[4278190080,4294944E3,4294951115,4278190335,4294967295,4278255615,4294901760,4278222848,4286611584,4290822336,4278255360,4286578688,4278190208,4286611456,4286578816,4278222976,4294902015,4294967040,4294928820,4294956800]),a=0;ad?d:-d;return-1},"~S");b.fixName=c(b,"fixName",function(a){if(a.equalsIgnoreCase("byelement"))return"byelement_jmol";var d=JU.ColorEncoder.getSchemeIndex(a);return 0<=d?JU.ColorEncoder.colorSchemes[d]:0<=a.indexOf("/")?a:a.toLowerCase()},"~S");c(b,"makeColorScheme",function(a,d,b){a=JU.ColorEncoder.fixName(a);if(null==d){this.schemes.remove(a);a=this.createColorScheme(a,!1,b);if(b)switch(a){case 2147483647:return 0; +case 12:this.paletteFriendly=this.getPaletteAC();break;case 10:this.paletteBW=this.getPaletteBW();break;case 11:this.paletteWB=this.getPaletteWB();break;case 0:case 1:this.argbsRoygb=JV.JC.argbsRoygbScale;break;case 6:case 7:this.argbsRwb=JV.JC.argbsRwbScale;break;case 2:this.argbsCpk=J.c.PAL.argbsCpk;break;case 3:JU.ColorEncoder.getRasmolScale();break;case 17:this.getNucleic();break;case 5:this.getAmino();break;case 4:this.getShapely()}return a}this.schemes.put(a,d);this.setThisScheme(a,d);a=this.createColorScheme(a, +!1,b);if(b)switch(a){case 10:this.paletteBW=this.thisScale;break;case 11:this.paletteWB=this.thisScale;break;case 0:case 1:this.argbsRoygb=this.thisScale;this.ihalf=v(this.argbsRoygb.length/3);break;case 6:case 7:this.argbsRwb=this.thisScale;break;case 2:this.argbsCpk=this.thisScale;break;case 5:this.argbsAmino=this.thisScale;break;case 17:this.argbsNucleic=this.thisScale;break;case 4:this.argbsShapely=this.thisScale}return-1},"~S,~A,~B");c(b,"getShapely",function(){return null==this.argbsShapely? +this.argbsShapely=this.vwr.getJBR().getArgbs(1073742144):this.argbsShapely});c(b,"getAmino",function(){return null==this.argbsAmino?this.argbsAmino=this.vwr.getJBR().getArgbs(2097154):this.argbsAmino});c(b,"getNucleic",function(){return null==this.argbsNucleic?this.argbsNucleic=this.vwr.getJBR().getArgbs(2097166):this.argbsNucleic});c(b,"createColorScheme",function(a,d,b){if(a.equalsIgnoreCase("inherit"))return 15;var c=a.lastIndexOf("="),e=a.indexOf("/"),g=Math.max(c,a.indexOf("[")),c=JU.ColorEncoder.fixName(a), +j=JU.ColorEncoder.getSchemeIndex(c);if(-1==j&&(0>g||0b.indexOf("/")){0>b.indexOf(".")&&(b+=".lut.txt");var f=Array(1);try{JU.Logger.info("ColorEncoder opening colorschemes/"+b),JU.Rdr.readAllAsString(JV.FileManager.getBufferedReaderForResource(this.vwr,new JU.C,"JU/","colorschemes/"+b),-1,!1,f,0)}catch(s){if(E(s,"java.io.IOException")){JU.Logger.info("ColorEncoder "+s);break}else throw s; +}b=f[0]}else{b=JU.PT.rep(b," ","%20");JU.Logger.info("ColorEncoder opening "+b);var m=this.vwr.fm.getFileAsBytes(b,null);if("string"==typeof m){JU.Logger.info("ColorEncoder "+m);break}c=m;JU.Logger.info("ColorEncoder read "+c.length+" bytes");var f=0,p=c.length;if(800==p||802==p)f=32;if(768==p-f||770==p-f)for(var e=D(256,0),p=256+f,z=0;256>z;z++)e[z]=JU.CU.rgb(c[z+f]&255,c[z+f+256]&255,c[z+f+512]&255);else b=String.instantialize(c)}if(null==e)for(var n=JU.PT.split(b.trim(),"\n"),p=n.length,e=D(p, +0),r=0n[0].indexOf("."),z=0;zu.length){e=null;break}var v=u.length;e[z]=r?JU.CU.rgb(JU.PT.parseInt(u[v-3]),JU.PT.parseInt(u[v-2]),JU.PT.parseInt(u[v-1])):JU.CU.colorTriadToFFRGB(JU.PT.parseFloat(u[v-3]),JU.PT.parseFloat(u[v-2]),JU.PT.parseFloat(u[v-1]))}if(null!=e&&k){z=0;p=e.length-1;for(k=p+1>>1;zg+1&&!a.contains("[")&&(a="["+a.substring(g+1).trim()+"]",a=JU.PT.rep(a.$replace("\n"," ")," "," "),a=JU.PT.rep(a,", ",",").$replace(" ",","),a=JU.PT.rep(a,",","]["));for(g=-1;0<=(g=a.indexOf("[",g+1));)p++;if(0==p)return this.makeColorScheme(c,null,b);e=D(p,0);for(p=0;0<=(g=a.indexOf("[",g+1));){z=a.indexOf("]",g);0>z&&(z=a.length- +1);w=JU.CU.getArgbFromString(a.substring(g,z+1));0==w&&(w=JU.CU.getArgbFromString(a.substring(g+1,z).trim()));if(0==w)return JU.Logger.error("error in color value: "+a.substring(g,z+1)),0;e[p++]=w}return c.equals("user")?(this.setUserScale(e),-13):this.makeColorScheme(c,e,b)}e=this.schemes.get(c);return null!=e?(this.setThisScheme(c,e),j):-1!=j?j:d?0:2147483647},"~S,~B,~B");c(b,"setUserScale",function(a){this.ce.userScale=a;this.makeColorScheme("user",a,!1)},"~A");c(b,"getColorSchemeArray",function(a){switch(a){case -1:return this.thisScale; +case 0:return this.ce.argbsRoygb;case 1:return JU.AU.arrayCopyRangeRevI(this.ce.argbsRoygb,0,-1);case 8:return JU.AU.arrayCopyRangeI(this.ce.argbsRoygb,0,this.ce.ihalf);case 9:var d=JU.AU.arrayCopyRangeI(this.ce.argbsRoygb,this.ce.argbsRoygb.length-2*this.ce.ihalf,-1);a=D(this.ce.ihalf,0);for(var b=a.length,c=d.length;0<=--b&&0<=--c;)a[b]=d[c--];return a;case 12:return this.getPaletteAC();case 10:return this.getPaletteBW();case 11:return this.getPaletteWB();case 6:return this.ce.argbsRwb;case 7:return JU.AU.arrayCopyRangeRevI(this.ce.argbsRwb, +0,-1);case 2:return this.ce.argbsCpk;case 3:return JU.ColorEncoder.getRasmolScale();case 4:return this.ce.getShapely();case 17:return this.ce.getNucleic();case 5:return this.ce.getAmino();case -13:return this.ce.userScale;case -14:return JU.AU.arrayCopyRangeRevI(this.ce.userScale,0,-1);default:return null}},"~N");c(b,"getColorIndexFromPalette",function(a,d,b,c,e){c=JU.C.getColix(this.getArgbFromPalette(a,d,b,c));e&&(a=(b-a)/(b-d),1a&&(a=0.125),c=JU.C.getColixTranslucent3(c,!0,a));return c}, +"~N,~N,~N,~N,~B");c(b,"getPaletteColorCount",function(a){switch(a){case -1:return this.thisScale.length;case 10:case 11:return this.getPaletteBW().length;case 0:case 1:return this.ce.argbsRoygb.length;case 8:case 9:return this.ce.ihalf;case 6:case 7:return this.ce.argbsRwb.length;case -13:case -14:return this.ce.userScale.length;case 2:return this.ce.argbsCpk.length;case 3:return JU.ColorEncoder.getRasmolScale().length;case 4:return this.ce.getShapely().length;case 17:return this.ce.getNucleic().length; +case 5:return this.ce.getAmino().length;case 12:return this.getPaletteAC().length;default:return 0}},"~N");c(b,"getArgbFromPalette",function(a,d,b,c){if(Float.isNaN(a))return-8355712;var e=this.getPaletteColorCount(c);switch(c){case -1:return this.isColorIndex&&(d=0,b=this.thisScale.length),this.thisScale[JU.ColorEncoder.quantize4(a,d,b,e)];case 10:return this.getPaletteBW()[JU.ColorEncoder.quantize4(a,d,b,e)];case 11:return this.getPaletteWB()[JU.ColorEncoder.quantize4(a,d,b,e)];case 0:return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(a, +d,b,e)];case 1:return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(-a,-b,-d,e)];case 8:return this.ce.argbsRoygb[JU.ColorEncoder.quantize4(a,d,b,e)];case 9:return this.ce.argbsRoygb[this.ce.ihalf+2*JU.ColorEncoder.quantize4(a,d,b,e)];case 6:return this.ce.argbsRwb[JU.ColorEncoder.quantize4(a,d,b,e)];case 7:return this.ce.argbsRwb[JU.ColorEncoder.quantize4(-a,-b,-d,e)];case -13:return 0==this.ce.userScale.length?-8355712:this.ce.userScale[JU.ColorEncoder.quantize4(a,d,b,e)];case -14:return 0==this.ce.userScale.length? +-8355712:this.ce.userScale[JU.ColorEncoder.quantize4(-a,-b,-d,e)];case 2:return this.ce.argbsCpk[JU.ColorEncoder.colorIndex(a,e)];case 3:return JU.ColorEncoder.getRasmolScale()[JU.ColorEncoder.colorIndex(a,e)];case 4:return this.ce.getShapely()[JU.ColorEncoder.colorIndex(a,e)];case 5:return this.ce.getAmino()[JU.ColorEncoder.colorIndex(a,e)];case 17:return this.ce.getNucleic()[JU.ColorEncoder.colorIndex(a-24+2,e)];case 12:return this.getPaletteAC()[JU.ColorEncoder.colorIndexRepeat(a,e)];default:return-8355712}}, +"~N,~N,~N,~N");c(b,"setThisScheme",function(a,d){this.thisName=a;this.thisScale=d;a.equals("user")&&(this.userScale=d);this.isColorIndex=0==a.indexOf("byelement")||0==a.indexOf("byresidue")},"~S,~A");c(b,"getArgb",function(a){return this.isReversed?this.getArgbFromPalette(-a,-this.hi,-this.lo,this.currentPalette):this.getArgbFromPalette(a,this.lo,this.hi,this.currentPalette)},"~N");c(b,"getArgbMinMax",function(a,d,b){return this.isReversed?this.getArgbFromPalette(-a,-b,-d,this.currentPalette):this.getArgbFromPalette(a, +d,b,this.currentPalette)},"~N,~N,~N");c(b,"getColorIndex",function(a){return this.isReversed?this.getColorIndexFromPalette(-a,-this.hi,-this.lo,this.currentPalette,this.isTranslucent):this.getColorIndexFromPalette(a,this.lo,this.hi,this.currentPalette,this.isTranslucent)},"~N");c(b,"getColorKey",function(){for(var a=new java.util.Hashtable,d=this.getPaletteColorCount(this.currentPalette),b=new JU.Lst,c=L(d+1,0),e=(this.hi-this.lo)/d,g=e*(this.isReversed?-0.5:0.5),j=0;jthis.currentPalette?JU.ColorEncoder.getColorSchemeList(this.getColorSchemeArray(this.currentPalette)): +this.getColorSchemeName(this.currentPalette))});c(b,"setColorScheme",function(a,d){this.isTranslucent=d;null!=a&&(this.currentPalette=this.createColorScheme(a,!0,!1))},"~S,~B");c(b,"setRange",function(a,d,b){3.4028235E38==d&&(a=1,d=this.getPaletteColorCount(this.currentPalette)+1);this.lo=Math.min(a,d);this.hi=Math.max(a,d);this.isReversed=b},"~N,~N,~B");c(b,"getCurrentColorSchemeName",function(){return this.getColorSchemeName(this.currentPalette)});c(b,"getColorSchemeName",function(a){var d=Math.abs(a); +return-1==a?this.thisName:d>24]=a|4278190080;return JU.ColorEncoder.rasmolScale});c(b,"getPaletteAC",function(){return null==this.ce.paletteFriendly?this.ce.paletteFriendly=D(-1,[8421504,1067945,11141282,13235712,16753152,2640510,8331387,10467374,12553008,339310,7209065,8626176,10906112,4488148,13907405,14219839,16759360,6984660,13918415,14809713, +16764019]):this.ce.paletteFriendly});c(b,"getPaletteWB",function(){if(null!=this.ce.paletteWB)return this.ce.paletteWB;for(var a=D(JV.JC.argbsRoygbScale.length,0),d=0;db&&(b=JV.JC.argbsRoygbScale.length);var c=D(b,0),e=L(3,0),g=L(3,0);JU.CU.toRGB3f(a,e);JU.CU.toRGB3f(d,g);a=(g[0]-e[0])/(b-1);d=(g[1]-e[1])/(b-1);for(var g=(g[2]-e[2])/ +(b-1),j=0;j=a?this.lo:1<=a?this.hi:this.lo+(this.hi-this.lo)*a},"~N,~B"); +b.quantize4=c(b,"quantize4",function(a,d,b,c){b-=d;if(0>=b||Float.isNaN(a))return v(c/2);a-=d;if(0>=a)return 0;a=F(a/(b/c)+1E-4);a>=c&&(a=c-1);return a},"~N,~N,~N,~N");b.colorIndex=c(b,"colorIndex",function(a,d){return v(Math.floor(0>=a||a>=d?0:a))},"~N,~N");b.colorIndexRepeat=c(b,"colorIndexRepeat",function(a,d){return v(Math.floor(0>=a?0:a))%d},"~N,~N");b.colorSchemes=w(-1,"roygb bgyor byelement_jmol byelement_rasmol byresidue_shapely byresidue_amino rwb bwr low high bw wb friendly user resu inherit rgb bgr jmol rasmol byresidue byresidue_nucleic".split(" ")); +b.rasmolScale=null;b.argbsChainAtom=null;b.argbsChainHetero=null});n("JU");A(null,"JU.CommandHistory",["JU.Lst"],function(){var b=r(function(){this.commandList=null;this.maxSize=100;this.cursorPos=this.nextCommand=0;this.isOn=!0;this.lstStates=null;u(this,arguments)},JU,"CommandHistory",null);x(b,function(){this.reset(100)});c(b,"clear",function(){this.reset(this.maxSize)});c(b,"reset",function(a){this.maxSize=a;this.commandList=new JU.Lst;this.nextCommand=0;this.commandList.addLast("");this.cursorPos= +0},"~N");c(b,"setMaxSize",function(a){if(a!=this.maxSize){for(2>a&&(a=2);this.nextCommand>a;)this.commandList.removeItemAt(0),this.nextCommand--;this.nextCommand>a&&(this.nextCommand=a-1);this.cursorPos=this.nextCommand;this.maxSize=a}},"~N");c(b,"getCommandUp",function(){if(0>=this.cursorPos)return null;this.cursorPos--;var a=this.getCommand();a.endsWith("#??")&&this.removeCommand(this.cursorPos--);0>this.cursorPos&&(this.cursorPos=0);return a});c(b,"getCommandDown",function(){if(this.cursorPos>= +this.nextCommand)return null;this.cursorPos++;return this.getCommand()});c(b,"getCommand",function(){return this.commandList.get(this.cursorPos)});c(b,"addCommand",function(a){if((this.isOn||a.endsWith("#??"))&&!a.endsWith("#----")){for(var d;0<=(d=a.indexOf("\n"));){var b=a.substring(0,d);0a)return this.setMaxSize(-2-a),"";a=Math.max(this.nextCommand-a,0)}for(var d="";aa||a>=this.nextCommand)return"";a=this.commandList.removeItemAt(a);this.nextCommand--;return a},"~N");c(b,"addCommandLine",function(a){if(!(null==a||0==a.length)&&!a.endsWith("#--"))0=this.maxSize&&(this.commandList.removeItemAt(0),this.nextCommand= +this.maxSize-1),this.commandList.add(this.nextCommand,a),this.nextCommand++,this.cursorPos=this.nextCommand,this.commandList.add(this.nextCommand,""))},"~S");c(b,"pushState",function(a){null==this.lstStates&&(this.lstStates=new JU.Lst);this.lstStates.addLast(a)},"~S");c(b,"popState",function(){return null==this.lstStates||0==this.lstStates.size()?null:this.lstStates.removeItemAt(this.lstStates.size()-1)})});n("JU");A(["JU.LoggerInterface"],"JU.DefaultLogger",["JU.Logger"],function(){var b=G(JU,"DefaultLogger", +null,JU.LoggerInterface);c(b,"log",function(a,d,b,c){a===System.err&&System.out.flush();if(null!=a&&(null!=b||null!=c))if(b=(JU.Logger.logLevel()?"["+JU.Logger.getLevel(d)+"] ":"")+(null!=b?b:"")+(null!=c?": "+c.toString():""),a.println(b),null!=c&&(d=c.getStackTrace(),null!=d))for(c=0;ca||a>=JU.Elements.atomicMass.length?0:JU.Elements.atomicMass[a]},"~N");b.elementNumberFromSymbol=c(b,"elementNumberFromSymbol",function(a,b){if(null==JU.Elements.htElementMap){for(var c=new java.util.Hashtable,e=JU.Elements.elementNumberMax;0<=--e;){var g=JU.Elements.elementSymbols[e], +j=Integer.$valueOf(e);c.put(g,j);2==g.length&&c.put(g.toUpperCase(),j)}for(e=JU.Elements.altElementMax;4<=--e;)g=JU.Elements.altElementSymbols[e],j=Integer.$valueOf(JU.Elements.altElementNumbers[e]),c.put(g,j),2==g.length&&c.put(g.toUpperCase(),j);c.put("Z",Integer.$valueOf(0));JU.Elements.htElementMap=c}if(null==a)return 0;c=JU.Elements.htElementMap.get(a);if(null!=c)return c.intValue();if(JU.PT.isDigit(a.charAt(0))&&(g=a.length-2,0<=g&&JU.PT.isDigit(a.charAt(g))&&g++,c=0=JU.Elements.elementNumberMax){for(b=JU.Elements.altElementMax;0<=--b;)if(a==JU.Elements.altElementNumbers[b])return JU.Elements.altElementSymbols[b]; +b=JU.Elements.getIsotopeNumber(a);return""+b+JU.Elements.getElementSymbol(a&127)}return JU.Elements.getElementSymbol(a)},"~N");b.getElementSymbol=c(b,"getElementSymbol",function(a){if(0>a||a>=JU.Elements.elementNumberMax)a=0;return JU.Elements.elementSymbols[a]},"~N");b.elementNameFromNumber=c(b,"elementNameFromNumber",function(a){if(a>=JU.Elements.elementNumberMax){for(var b=JU.Elements.altElementMax;0<=--b;)if(a==JU.Elements.altElementNumbers[b])return JU.Elements.altElementNames[b];a%=128}if(0> +a||a>=JU.Elements.elementNumberMax)a=0;return JU.Elements.elementNames[a]},"~N");b.elementNumberFromName=c(b,"elementNumberFromName",function(a){for(var b=1;b>7)+JU.Elements.elementSymbolFromNumber(a&127)},"~N");b.altIsotopeSymbolFromIndex2=c(b,"altIsotopeSymbolFromIndex2",function(a){a=JU.Elements.altElementNumbers[a];return JU.Elements.elementSymbolFromNumber(a&127)+(a>>7)},"~N");b.getElementNumber=c(b,"getElementNumber",function(a){return a&127}, +"~N");b.getIsotopeNumber=c(b,"getIsotopeNumber",function(a){return(a&32640)>>7},"~N");b.getAtomicAndIsotopeNumber=c(b,"getAtomicAndIsotopeNumber",function(a,b){return(0>a?0:a)+(0>=b?0:b<<7)},"~N,~N");b.altElementIndexFromNumber=c(b,"altElementIndexFromNumber",function(a){for(var b=0;bb&&JU.Elements.bsAnions.get(c)?JU.Elements.getBondingRadFromTable(c,b,JU.Elements.anionLookupTable):JU.Elements.defaultBondingMars[(c<<1)+JU.Elements.bondingVersion]/1E3},"~N,~N");b.getCovalentRadius=c(b,"getCovalentRadius",function(a){return JU.Elements.defaultBondingMars[((a&127)<<1)+JU.Elements.covalentVersion]/1E3},"~N");b.getBondingRadFromTable= +c(b,"getBondingRadFromTable",function(a,b,c){b=(a<<4)+(b+4);for(var e=0,g=0,j=0,k=v(c.length/2);j!=k;)if(g=v((j+k)/2),e=c[g<<1],e>b)k=g;else if(eb&&g--;e=c[g<<1];a!=e>>4&&g++;return c[(g<<1)+1]/1E3},"~N,~N,~A");b.getVanderwaalsMar=c(b,"getVanderwaalsMar",function(a,b){return JU.Elements.vanderwaalsMars[((a&127)<<2)+b.pt%4]},"~N,J.c.VDW");b.getHydrophobicity=c(b,"getHydrophobicity",function(a){return 1>a||a>=JU.Elements.hydrophobicities.length?0:JU.Elements.hydrophobicities[a]}, +"~N");b.getAllredRochowElectroNeg=c(b,"getAllredRochowElectroNeg",function(a){return 0>4);for(a=0;a>4);b.hydrophobicities=L(-1,[0,0.62,-2.53,-0.78,-0.9,0.29,-0.85,-0.74,0.48,-0.4, +1.38,1.06,-1.5,0.64,1.19,0.12,-0.18,-0.05,0.81,0.26,1.08]);(JU.Elements.elementNames.length!=JU.Elements.elementNumberMax||JU.Elements.vanderwaalsMars.length>>2!=JU.Elements.elementNumberMax||JU.Elements.defaultBondingMars.length>>1!=JU.Elements.elementNumberMax)&&JU.Logger.error("ERROR!!! Element table length mismatch:\n elementSymbols.length="+JU.Elements.elementSymbols.length+"\n elementNames.length="+JU.Elements.elementNames.length+"\n vanderwaalsMars.length="+JU.Elements.vanderwaalsMars.length+ +"\n covalentMars.length="+JU.Elements.defaultBondingMars.length);b.electroNegativities=L(-1,[0,2.2,0,0.97,1.47,2.01,2.5,3.07,3.5,4.1,0,1.01,1.23,1.47,1.74,2.06,2.44,2.83,0,0.91,1.04,1.2,1.32,1.45,1.56,1.6,1.64,1.7,1.75,1.75,1.66,1.82,2.02,2.2,2.48,2.74,0,0.89,0.99,1.11,1.22,1.23,1.3,1.36,1.42,1.45,1.35,1.42,1.46,1.49,1.72,1.82,2.01,2.21])});n("JU");A(null,"JU.Escape","JU.AU $.BS $.Lst $.M3 $.M4 $.P3 $.P4 $.PT $.SB $.V3 JS.SV".split(" "),function(){var b=G(JU,"Escape",null);b.escapeColor=c(b,"escapeColor", +function(a){return 0==a?null:"[x"+JU.Escape.getHexColorFromRGB(a)+"]"},"~N");b.getHexColorFromRGB=c(b,"getHexColorFromRGB",function(a){if(0==a)return null;var d="00"+Integer.toHexString(a>>16&255),d=d.substring(d.length-2),b="00"+Integer.toHexString(a>>8&255),b=b.substring(b.length-2);a="00"+Integer.toHexString(a&255);a=a.substring(a.length-2);return d+b+a},"~N");b.eP=c(b,"eP",function(a){return null==a?"null":"{"+a.x+" "+a.y+" "+a.z+"}"},"JU.T3");b.matrixToScript=c(b,"matrixToScript",function(a){return JU.PT.replaceAllCharacters(a.toString(), +"\n\r ","").$replace("\t"," ")},"~O");b.eP4=c(b,"eP4",function(a){return"{"+a.x+" "+a.y+" "+a.z+" "+a.w+"}"},"JU.P4");b.drawQuat=c(b,"drawQuat",function(a,d,b,c,e){c=" VECTOR "+JU.Escape.eP(c)+" ";0==e&&(e=1);return"draw "+d+"x"+b+c+JU.Escape.eP(a.getVectorScaled(0,e))+" color red\ndraw "+d+"y"+b+c+JU.Escape.eP(a.getVectorScaled(1,e))+" color green\ndraw "+d+"z"+b+c+JU.Escape.eP(a.getVectorScaled(2,e))+" color blue\n"},"JU.Quat,~S,~S,JU.P3,~N");b.e=c(b,"e",function(a){if(null==a)return"null";if(JU.PT.isNonStringPrimitive(a))return a.toString(); +if("string"==typeof a)return JU.PT.esc(a);if(C(a,"JU.Lst"))return JU.Escape.eV(a);if(C(a,"java.util.Map"))return JU.Escape.escapeMap(a);if(C(a,"JU.BS"))return JU.Escape.eBS(a);if(C(a,"JU.P4"))return JU.Escape.eP4(a);if(C(a,"JU.T3"))return JU.Escape.eP(a);if(JU.AU.isAP(a))return JU.Escape.eAP(a);if(JU.AU.isAS(a))return JU.Escape.eAS(a,!0);if(C(a,"JU.M34"))return JU.PT.rep(JU.PT.rep(a.toString(),"[\n ","["),"] ]","]]");if(JU.AU.isAFF(a)){for(var d=(new JU.SB).append("["),b="",c=0;ca.indexOf(",")&&0>a.indexOf(".")&&0>a.indexOf("-")?JU.BS.unescape(a):a.startsWith("[[")? +JU.Escape.unescapeMatrix(a):a},"~S");b.isStringArray=c(b,"isStringArray",function(a){return a.startsWith("({")&&0==a.lastIndexOf("({")&&a.indexOf("})")==a.length-2},"~S");b.uP=c(b,"uP",function(a){if(null==a||0==a.length)return a;var d=a.$replace("\n"," ").trim();if("{"!=d.charAt(0)||"}"!=d.charAt(d.length-1))return a;for(var b=L(5,0),c=0,d=d.substring(1,d.length-1),e=D(1,0);5>c;c++)if(b[c]=JU.PT.parseFloatNext(d,e),Float.isNaN(b[c])){if(e[0]>=d.length||","!=d.charAt(e[0]))break;e[0]++;c--}return 3== +c?JU.P3.new3(b[0],b[1],b[2]):4==c?JU.P4.new4(b[0],b[1],b[2],b[3]):a},"~S");b.unescapeMatrix=c(b,"unescapeMatrix",function(a){if(null==a||0==a.length)return a;var d=a.$replace("\n"," ").trim();if(0!=d.lastIndexOf("[[")||d.indexOf("]]")!=d.length-2)return a;for(var b=L(16,0),d=d.substring(2,d.length-2).$replace("["," ").$replace("]"," ").$replace(","," "),c=D(1,0),e=0;16>e&&!(b[e]=JU.PT.parseFloatNext(d,c),Float.isNaN(b[e]));e++);return!Float.isNaN(JU.PT.parseFloatNext(d,c))?a:9==e?JU.M3.newA9(b):16== +e?JU.M4.newA16(b):a},"~S");b.eBS=c(b,"eBS",function(a){return JU.BS.escape(a,"(",")")},"JU.BS");b.eBond=c(b,"eBond",function(a){return JU.BS.escape(a,"[","]")},"JU.BS");b.toReadable=c(b,"toReadable",function(a,d){var b=new JU.SB,c="";if(null==d)return"null";if(JU.PT.isNonStringPrimitive(d))return JU.Escape.packageReadable(a,null,d.toString());if("string"==typeof d)return JU.Escape.packageReadable(a,null,JU.PT.esc(d));if(C(d,"JS.SV"))return JU.Escape.packageReadable(a,null,d.escape());if(JU.AU.isAS(d)){b.append("["); +for(var e=d.length,g=0;gj)break;e<<=4;e+=j;++c}e=String.fromCharCode(e)}}b.appendC(e)}return b.toString()}, +"~S");b.getHexitValue=c(b,"getHexitValue",function(a){return 48<=a.charCodeAt(0)&&57>=a.charCodeAt(0)?a.charCodeAt(0)-48:97<=a.charCodeAt(0)&&102>=a.charCodeAt(0)?10+a.charCodeAt(0)-97:65<=a.charCodeAt(0)&&70>=a.charCodeAt(0)?10+a.charCodeAt(0)-65:-1},"~S");b.unescapeStringArray=c(b,"unescapeStringArray",function(a){if(null==a||!a.startsWith("[")||!a.endsWith("]"))return null;var d=new JU.Lst,b=D(1,0);for(b[0]=1;b[0]e[3].x?"{255.0 200.0 0.0}":"{255.0 0.0 128.0}");case 1745489939:return(null==e?"":"measure "+JU.Escape.eP(b)+JU.Escape.eP(e[0])+JU.Escape.eP(e[4]))+JU.Escape.eP(c);default:return null==e?[]:e}},"~S,~N,JU.P3,JU.P3,~A")});n("JU");A(["J.api.JmolGraphicsInterface","JU.Normix"],"JU.GData","JU.AU $.P3 $.V3 JU.C $.Font $.Shader".split(" "),function(){var b=r(function(){this.apiPlatform=null;this.antialiasEnabled=this.currentlyRendering=this.translucentCoverOnly=!1;this.displayMaxY2=this.displayMinY2= +this.displayMaxX2=this.displayMinX2=this.displayMaxY=this.displayMinY=this.displayMaxX=this.displayMinX=this.windowHeight=this.windowWidth=0;this.inGreyscaleMode=this.antialiasThisFrame=!1;this.backgroundImage=this.changeableColixMap=null;this.newWindowHeight=this.newWindowWidth=0;this.newAntialiasing=!1;this.ht3=this.argbCurrent=this.colixCurrent=this.ambientOcclusion=this.height=this.width=this.depth=this.slab=this.yLast=this.xLast=this.contrastColix=this.bgcolor=0;this.isPass2=!1;this.bufferSize= +this.textY=0;this.currentFont=this.graphicsForMetrics=this.vwr=this.shader=null;this.argbNoisyDn=this.argbNoisyUp=0;this.transformedVectors=null;u(this,arguments)},JU,"GData",null,J.api.JmolGraphicsInterface);N(b,function(){this.changeableColixMap=U(16,0);this.transformedVectors=Array(JU.GData.normixCount)});x(b,function(){this.shader=new JU.Shader});c(b,"initialize",function(a,d){this.vwr=a;this.apiPlatform=d},"JV.Viewer,J.api.GenericPlatform");c(b,"setDepth",function(a){this.depth=0>a?0:a},"~N"); +f(b,"setSlab",function(a){this.slab=Math.max(0,a)},"~N");f(b,"setSlabAndZShade",function(a,d){this.setSlab(a);this.setDepth(d)},"~N,~N,~N,~N,~N");c(b,"setAmbientOcclusion",function(a){this.ambientOcclusion=a},"~N");f(b,"isAntialiased",function(){return this.antialiasThisFrame});c(b,"getChangeableColix",function(a,d){a>=this.changeableColixMap.length&&(this.changeableColixMap=JU.AU.arrayCopyShort(this.changeableColixMap,a+16));0==this.changeableColixMap[a]&&(this.changeableColixMap[a]=JU.C.getColix(d)); +return a|-32768},"~N,~N");c(b,"changeColixArgb",function(a,d){aa&&(a=this.changeableColixMap[a&2047]);return this.inGreyscaleMode?JU.C.getArgbGreyscale(a):JU.C.getArgb(a)},"~N");c(b,"getShades",function(a){0>a&&(a=this.changeableColixMap[a&2047]);return this.inGreyscaleMode?this.shader.getShadesG(a): +this.shader.getShades(a)},"~N");c(b,"setGreyscaleMode",function(a){this.inGreyscaleMode=a},"~B");c(b,"getSpecularPower",function(){return this.shader.specularPower});c(b,"setSpecularPower",function(a){0>a?this.setSpecularExponent(-a):this.shader.specularPower!=a&&(this.shader.specularPower=a,this.shader.intenseFraction=a/100,this.shader.flushCaches())},"~N");c(b,"getSpecularPercent",function(){return this.shader.specularPercent});c(b,"setSpecularPercent",function(a){this.shader.specularPercent!=a&& +(this.shader.specularPercent=a,this.shader.specularFactor=a/100,this.shader.flushCaches())},"~N");c(b,"getSpecularExponent",function(){return this.shader.specularExponent});c(b,"setSpecularExponent",function(a){this.shader.specularExponent!=a&&(this.shader.specularExponent=a,this.shader.phongExponent=v(Math.pow(2,a)),this.shader.usePhongExponent=!1,this.shader.flushCaches())},"~N");c(b,"getPhongExponent",function(){return this.shader.phongExponent});c(b,"setPhongExponent",function(a){this.shader.phongExponent== +a&&this.shader.usePhongExponent||(this.shader.phongExponent=a,a=Math.log(a)/Math.log(2),this.shader.usePhongExponent=a!=F(a),this.shader.usePhongExponent||(this.shader.specularExponent=F(a)),this.shader.flushCaches())},"~N");c(b,"getDiffusePercent",function(){return this.shader.diffusePercent});c(b,"setDiffusePercent",function(a){this.shader.diffusePercent!=a&&(this.shader.diffusePercent=a,this.shader.diffuseFactor=a/100,this.shader.flushCaches())},"~N");c(b,"getAmbientPercent",function(){return this.shader.ambientPercent}); +c(b,"setAmbientPercent",function(a){this.shader.ambientPercent!=a&&(this.shader.ambientPercent=a,this.shader.ambientFraction=a/100,this.shader.flushCaches())},"~N");c(b,"getSpecular",function(){return this.shader.specularOn});c(b,"setSpecular",function(a){this.shader.specularOn!=a&&(this.shader.specularOn=a,this.shader.flushCaches())},"~B");c(b,"setCel",function(a){this.shader.setCel(a,this.shader.celPower,this.bgcolor)},"~B");c(b,"getCel",function(){return this.shader.celOn});c(b,"getCelPower",function(){return this.shader.celPower}); +c(b,"setCelPower",function(a){this.shader.setCel(this.shader.celOn||0==this.shader.celPower,a,this.bgcolor)},"~N");c(b,"getLightSource",function(){return this.shader.lightSource});c(b,"isClipped3",function(a,d,b){return 0>a||a>=this.width||0>d||d>=this.height||bthis.depth},"~N,~N,~N");c(b,"isClipped",function(a,d){return 0>a||a>=this.width||0>d||d>=this.height},"~N,~N");f(b,"isInDisplayRange",function(a,d){return a>=this.displayMinX&&a=this.displayMinY&&d>1;return d<-a||d>=this.width+a||b<-a||b>=this.height+a},"~N,~N,~N");c(b,"isClippedZ",function(a){return-2147483648!=a&&(athis.depth)},"~N");c(b,"clipCode3",function(a,d,b){var c=0;0>a?c|=a=this.width&&(c|=a>this.displayMaxX2?-1:4);0>d?c|=d=this.height&&(c|=d>this.displayMaxY2?-1:1);bthis.depth&&(c|=16);return c},"~N,~N,~N");c(b,"clipCode",function(a){var d=0;athis.depth&&(d|=16);return d},"~N");c(b,"getFont3D",function(a){return JU.Font.createFont3D(0,0,a,a,this.apiPlatform,this.graphicsForMetrics)},"~N");c(b,"getFont3DFS",function(a,d){return JU.Font.createFont3D(JU.Font.getFontFaceID(a),0,d,d,this.apiPlatform,this.graphicsForMetrics)},"~S,~N");c(b,"getFontFidFS",function(a,d){return this.getFont3DFSS(a,"Bold",d).fid},"~S,~N");c(b,"getFont3DFSS",function(a,d,b){d=JU.Font.getFontStyleID(d);0>d&&(d=0);return JU.Font.createFont3D(JU.Font.getFontFaceID(a), +d,b,b,this.apiPlatform,this.graphicsForMetrics)},"~S,~S,~N");c(b,"getFont3DScaled",function(a,d){var b=a.fontSizeNominal*d;return b==a.fontSize?a:JU.Font.createFont3D(a.idFontFace,a.idFontStyle,b,a.fontSizeNominal,this.apiPlatform,this.graphicsForMetrics)},"JU.Font,~N");c(b,"getFontFidI",function(a){return this.getFont3D(a).fid},"~N");c(b,"getFont3DCurrent",function(){return this.currentFont});c(b,"setFont",function(){},"JU.Font");c(b,"setFontBold",function(a,d){this.setFont(this.getFont3DFSS(a,"Bold", +d))},"~S,~N");c(b,"setBackgroundTransparent",function(){},"~B");c(b,"setBackgroundArgb",function(a){this.bgcolor=a;this.setCel(this.shader.celOn)},"~N");c(b,"setBackgroundImage",function(a){this.backgroundImage=a},"~O");c(b,"setWindowParameters",function(a,d,b){this.setWinParams(a,d,b)},"~N,~N,~B");c(b,"setWinParams",function(a,d,b){this.newWindowWidth=a;this.newWindowHeight=d;this.newAntialiasing=b},"~N,~N,~B");c(b,"setNewWindowParametersForExport",function(){this.windowWidth=this.newWindowWidth; +this.windowHeight=this.newWindowHeight;this.setWidthHeight(!1)});c(b,"setWidthHeight",function(a){this.width=this.windowWidth;this.height=this.windowHeight;a&&(this.width<<=1,this.height<<=1);this.xLast=this.width-1;this.yLast=this.height-1;this.displayMinX=-(this.width>>1);this.displayMaxX=this.width-this.displayMinX;this.displayMinY=-(this.height>>1);this.displayMaxY=this.height-this.displayMinY;this.displayMinX2=this.displayMinX<<2;this.displayMaxX2=this.displayMaxX<<2;this.displayMinY2=this.displayMinY<< +2;this.displayMaxY2=this.displayMaxY<<2;this.ht3=3*this.height;this.bufferSize=this.width*this.height},"~B");c(b,"beginRendering",function(){},"JU.M3,~B,~B,~B");c(b,"endRendering",function(){});c(b,"snapshotAnaglyphChannelBytes",function(){});c(b,"getScreenImage",function(){return null},"~B");c(b,"releaseScreenImage",function(){});c(b,"applyAnaglygh",function(){},"J.c.STER,~A");c(b,"setPass2",function(){return!1},"~B");c(b,"destroy",function(){});c(b,"clearFontCache",function(){});c(b,"drawQuadrilateralBits", +function(a,d,b,c,e,g){a.drawLineBits(d,d,b,c);a.drawLineBits(d,d,c,e);a.drawLineBits(d,d,e,g);a.drawLineBits(d,d,g,b)},"J.api.JmolRendererInterface,~N,JU.P3,JU.P3,JU.P3,JU.P3");c(b,"drawTriangleBits",function(a,d,b,c,e,g,j,k){1==(k&1)&&a.drawLineBits(b,e,d,c);2==(k&2)&&a.drawLineBits(e,j,c,g);4==(k&4)&&a.drawLineBits(j,b,g,d)},"J.api.JmolRendererInterface,JU.P3,~N,JU.P3,~N,JU.P3,~N,~N");c(b,"plotImage",function(){},"~N,~N,~N,~O,J.api.JmolRendererInterface,~N,~N,~N");c(b,"plotText",function(){},"~N,~N,~N,~N,~N,~S,JU.Font,J.api.JmolRendererInterface"); +c(b,"renderBackground",function(){},"J.api.JmolRendererInterface");c(b,"setColor",function(a){this.argbCurrent=this.argbNoisyUp=this.argbNoisyDn=a},"~N");c(b,"setC",function(){return!0},"~N");c(b,"isDirectedTowardsCamera",function(a){return 0>a||0"))for(a=JU.GenericApplet.htRegistry.keySet().iterator();a.hasNext()&&((e=a.next())||1);)!e.equals(b)&&0a.indexOf("_object")&&(a+="_object"),0>a.indexOf("__")&&(a+=d),JU.GenericApplet.htRegistry.containsKey(a)||(a="jmolApplet"+a),!a.equals(b)&&JU.GenericApplet.htRegistry.containsKey(a)&& +c.addLast(a)},"~S,~S,~S,JU.Lst");f(b,"notifyAudioEnded",function(a){this.viewer.sm.notifyAudioStatus(a)},"~O");c(b,"setJSOptions",function(a){this.htParams=new java.util.Hashtable;null==a&&(a=new java.util.Hashtable);this.vwrOptions=a;for(var d,b=a.entrySet().iterator();b.hasNext()&&((d=b.next())||1);)this.htParams.put(d.getKey().toLowerCase(),d.getValue());this.documentBase=""+a.get("documentBase");this.codeBase=""+a.get("codePath")},"java.util.Map");c(b,"initOptions",function(){this.vwrOptions.remove("debug"); +this.vwrOptions.put("fullName",this.fullName);this.haveDocumentAccess="true".equalsIgnoreCase(""+this.getValue("allowjavascript","true"));this.mayScript=!0});c(b,"getJmolParameter",function(a){a=this.htParams.get(a.toLowerCase());return null==a?null:""+a},"~S");f(b,"functionXY",function(a,d,b){var c=L(Math.abs(d),Math.abs(b),0);if(!this.mayScript||!this.haveDocumentAccess||0==d||0==b)return c;try{if(0";a+="";for(var d=d[1].$plit("&"),b=0;b"+c+""):a+("')}a+="";d=window.open("");d.document.write(a);d.document.getElementById("f").submit()}},"java.net.URL");c(b,"doSendCallback",function(a,d,b,c){var e="string"==typeof d;if(!(null==d||e&&0==d.length)){if(e&&"alert".equals(d))return alert(c),"";c=e?JU.PT.split(d,"."):null;try{var g;if(e){g=window[c[0]];for(var j=1;jb;++b)JU.Geodesic.vertexVectors[b+1]=JU.V3.new3(Math.cos(1.2566370614359172*b),Math.sin(1.2566370614359172* +b),0.5),JU.Geodesic.vertexVectors[b+6]=JU.V3.new3(Math.cos(1.2566370614359172*b+0.6283185307179586),Math.sin(1.2566370614359172*b+0.6283185307179586),-0.5);JU.Geodesic.vertexVectors[11]=JU.V3.new3(0,0,-JU.Geodesic.halfRoot5);for(b=12;0<=--b;)JU.Geodesic.vertexVectors[b].normalize();JU.Geodesic.faceVertexesArrays[0]=JU.Geodesic.faceVertexesIcosahedron;JU.Geodesic.neighborVertexesArrays[0]=JU.Geodesic.neighborVertexesIcosahedron;d[0]=12;for(b=0;bf;++f)for(c=0;5>c;++c){b=k[6*f+c];if(0>b)throw new NullPointerException;if(b>=e)throw new NullPointerException;if(-1!=k[6*f+5])throw new NullPointerException;}for(f=72;fb)throw new NullPointerException;if(b>=e)throw new NullPointerException;}for(f=0;ff&&5!=e||12<=f&&6!=e)throw new NullPointerException;e=0;for(c=g.length;0<=--c;)g[c]==f&&++e;if(12>f&&5!=e||12<=f&&6!=e)throw new NullPointerException;}JU.Geodesic.htVertex=null},"~N,~A");b.addNeighboringVertexes=c(b,"addNeighboringVertexes",function(a,d,b){for(var c=6*d,e=c+6;ca[c]){a[c]=b;for(var g=6*b,j=g+6;ga[g]){a[g]=d;return}}}}throw new NullPointerException;},"~A,~N,~N");b.getVertex=c(b,"getVertex",function(a, +d){if(a>d){var b=a;a=d;d=b}var b=Integer.$valueOf((a<<16)+d),c=JU.Geodesic.htVertex.get(b);if(null!=c)return c.shortValue();c=JU.Geodesic.vertexVectors[JU.Geodesic.vertexNext]=new JU.V3;c.add2(JU.Geodesic.vertexVectors[a],JU.Geodesic.vertexVectors[d]);c.normalize();JU.Geodesic.htVertex.put(b,Short.$valueOf(JU.Geodesic.vertexNext));return JU.Geodesic.vertexNext++},"~N,~N");b.halfRoot5=0.5*Math.sqrt(5);b.faceVertexesIcosahedron=U(-1,[0,1,2,0,2,3,0,3,4,0,4,5,0,5,1,1,6,2,2,7,3,3,8,4,4,9,5,5,10,1,6,1, +10,7,2,6,8,3,7,9,4,8,10,5,9,11,6,10,11,7,6,11,8,7,11,9,8,11,10,9]);b.neighborVertexesIcosahedron=U(-1,[1,2,3,4,5,-1,0,5,10,6,2,-1,0,1,6,7,3,-1,0,2,7,8,4,-1,0,3,8,9,5,-1,0,4,9,10,1,-1,1,10,11,7,2,-1,2,6,11,8,3,-1,3,7,11,9,4,-1,4,8,11,10,5,-1,5,9,11,6,1,-1,6,7,8,9,10,-1]);b.vertexCounts=null;b.vertexVectors=null;b.faceVertexesArrays=null;b.neighborVertexesArrays=null;b.currentLevel=0;b.vertexNext=0;b.htVertex=null});n("JU");var Ba=r(function(){this.entryCount=0;this.entries=null;u(this,arguments)}, +JU,"Int2IntHash",null);x(Ba,function(b){this.entries=Array(b)},"~N");c(Ba,"get",function(b){for(var a=this.entries,a=a[(b&2147483647)%a.length];null!=a;a=a.next)if(a.key==b)return a.value;return-2147483648},"~N");c(Ba,"put",function(b,a){for(var d=this.entries,c=d.length,q=(b&2147483647)%c,e=d[q];null!=e;e=e.next)if(e.key==b){e.value=a;return}if(this.entryCount>c){for(var q=c,c=c+(c+1),g=Array(c),j=q;0<=--j;)for(e=d[j];null!=e;){var k=e,e=e.next,q=(k.key&2147483647)%c;k.next=g[q];g[q]=k}d=this.entries= +g;q=(b&2147483647)%c}d[q]=new JU.Int2IntHashEntry(b,a,d[q]);++this.entryCount},"~N,~N");Ba=r(function(){this.value=this.key=0;this.next=null;u(this,arguments)},JU,"Int2IntHashEntry",null);x(Ba,function(b,a,d){this.key=b;this.value=a;this.next=d},"~N,~N,JU.Int2IntHashEntry");n("JU");A(null,"JU.JSJSONParser",["java.util.Hashtable","JU.JSONException","$.Lst","$.SB"],function(){var b=r(function(){this.str=null;this.len=this.index=0;this.asHashTable=!1;u(this,arguments)},JU,"JSJSONParser",null);c(b,"parseMap", +function(a,d){this.index=0;this.asHashTable=d;this.str=a;this.len=a.length;if("{"!=this.getChar())return null;this.returnChar();return this.getValue(!1)},"~S,~B");c(b,"parse",function(a,d){this.index=0;this.asHashTable=d;this.str=a;this.len=a.length;return this.getValue(!1)},"~S,~B");c(b,"next",function(){return this.index"[,]{:}'\"".indexOf(b);)b=this.next();this.returnChar();a&&":"!=b&&(b=String.fromCharCode(0))}if(a&&0==b.charCodeAt(0))throw new JU.JSONException("invalid key");d=this.str.substring(d, +this.index).trim();if(!a){if(d.equals("true"))return Boolean.TRUE;if(d.equals("false"))return Boolean.FALSE;if(d.equals("null"))return this.asHashTable?d:null}b=d.charAt(0);if("0"<=b&&"9">=b||"-"==b)try{if(0>d.indexOf(".")&&0>d.indexOf("e")&&0>d.indexOf("E"))return new Integer(d);var c=Float.$valueOf(d);if(!c.isInfinite()&&!c.isNaN())return c}catch(e){if(!E(e,Exception))throw e;}System.out.println("JSON parser cannot parse "+d);throw new JU.JSONException("invalid value");},"~B");c(b,"getString",function(a){for(var d, +b=null,c=this.index;;){var e=this.index;switch((d=this.next()).charCodeAt(0)){case 0:case 10:case 13:throw this.syntaxError("Unterminated string");case 92:switch((d=this.next()).charCodeAt(0)){case 34:case 39:case 92:case 47:break;case 98:d="\b";break;case 116:d="\t";break;case 110:d="\n";break;case 102:d="\f";break;case 114:d="\r";break;case 117:var g=this.index;this.index+=4;try{d=String.fromCharCode(Integer.parseInt(this.str.substring(g,this.index),16))}catch(j){if(E(j,Exception))throw this.syntaxError("Substring bounds error"); +throw j;}break;default:throw this.syntaxError("Illegal escape.");}break;default:if(d==a)return null==b?this.str.substring(c,e):b.toString()}this.index>e+1&&null==b&&(b=new JU.SB,b.append(this.str.substring(c,e)));null!=b&&b.appendC(d)}},"~S");c(b,"getObject",function(){var a=this.asHashTable?new java.util.Hashtable:new java.util.HashMap,d=null;switch(this.getChar().charCodeAt(0)){case 125:return a;case 0:throw new JU.JSONException("invalid object");}this.returnChar();for(var b=!1;;)switch(!0==(b= +!b)?d=this.getValue(!0).toString():a.put(d,this.getValue(!1)),this.getChar().charCodeAt(0)){case 125:return a;case 58:if(b)continue;b=!0;case 44:if(!b)continue;default:throw this.syntaxError("Expected ',' or ':' or '}'");}});c(b,"getArray",function(){var a=new JU.Lst;switch(this.getChar().charCodeAt(0)){case 93:return a;case 0:throw new JU.JSONException("invalid array");}this.returnChar();for(var d=!1;;)switch(d?(a.addLast(null),d=!1):a.addLast(this.getValue(!1)),this.getChar().charCodeAt(0)){case 44:switch(this.getChar().charCodeAt(0)){case 93:return a; +case 44:d=!0;default:this.returnChar()}continue;case 93:return a;default:throw this.syntaxError("Expected ',' or ']'");}});c(b,"syntaxError",function(a){return new JU.JSONException(a+" for "+this.str.substring(0,Math.min(this.index,this.len)))},"~S")});n("JU");A(["java.lang.RuntimeException"],"JU.JSONException",null,function(){G(JU,"JSONException",RuntimeException)});n("JU");K(JU,"SimpleNode");n("JU");K(JU,"SimpleEdge");n("JU");K(JU,"Node",JU.SimpleNode);n("JU");A(["java.lang.Enum","JU.SimpleEdge"], +"JU.Edge",["JU.PT"],function(){var b=r(function(){this.index=-1;this.order=0;u(this,arguments)},JU,"Edge",null,JU.SimpleEdge);b.getArgbHbondType=c(b,"getArgbHbondType",function(a){return JU.Edge.argbsHbondType[(a&30720)>>11]},"~N");b.getBondOrderNumberFromOrder=c(b,"getBondOrderNumberFromOrder",function(a){a&=131071;switch(a){case 131071:case 65535:return"0";case 1025:case 1041:return"1";default:return JU.Edge.isOrderH(a)||JU.Edge.isAtropism(a)||0!=(a&256)?"1":0!=(a&224)?(a>>5)+"."+(a&31):JU.Edge.EnumBondOrder.getNumberFromCode(a)}}, +"~N");b.getCmlBondOrder=c(b,"getCmlBondOrder",function(a){a=JU.Edge.getBondOrderNameFromOrder(a);switch(a.charAt(0).charCodeAt(0)){case 115:case 100:case 116:return""+a.toUpperCase().charAt(0);case 97:return 0<=a.indexOf("Double")?"D":0<=a.indexOf("Single")?"S":"aromatic";case 112:return 0<=a.indexOf(" ")?a.substring(a.indexOf(" ")+1):"partial12"}return null},"~N");b.getBondOrderNameFromOrder=c(b,"getBondOrderNameFromOrder",function(a){a&=131071;switch(a){case 65535:case 131071:return"";case 1025:return"near"; +case 1041:return"far";case 32768:return JU.Edge.EnumBondOrder.STRUT.$$name;case 1:return JU.Edge.EnumBondOrder.SINGLE.$$name;case 2:return JU.Edge.EnumBondOrder.DOUBLE.$$name}return 0!=(a&224)?"partial "+JU.Edge.getBondOrderNumberFromOrder(a):JU.Edge.isOrderH(a)?JU.Edge.EnumBondOrder.H_REGULAR.$$name:65537==(a&65537)?(a=JU.Edge.getAtropismCode(a),"atropisomer_"+v(a/4)+a%4):0!=(a&256)?JU.Edge.EnumBondOrder.SINGLE.$$name:JU.Edge.EnumBondOrder.getNameFromCode(a)},"~N");b.getAtropismOrder=c(b,"getAtropismOrder", +function(a,b){return JU.Edge.getAtropismOrder12((a<<2)+b)},"~N,~N");b.getAtropismOrder12=c(b,"getAtropismOrder12",function(a){return a<<11|65537},"~N");b.getAtropismCode=c(b,"getAtropismCode",function(a){return a>>11&15},"~N");b.getAtropismNode=c(b,"getAtropismNode",function(a,b,c){a=a>>11+(c?0:2)&3;return b.getEdges()[a-1].getOtherNode(b)},"~N,JU.Node,~B");b.isAtropism=c(b,"isAtropism",function(a){return 65537==(a&65537)},"~N");b.isOrderH=c(b,"isOrderH",function(a){return 0!=(a&30720)&&0==(a&65537)}, +"~N");b.getPartialBondDotted=c(b,"getPartialBondDotted",function(a){return a&31},"~N");b.getPartialBondOrder=c(b,"getPartialBondOrder",function(a){return(a&131071)>>5},"~N");b.getCovalentBondOrder=c(b,"getCovalentBondOrder",function(a){if(0!=(a&1024))return 1;if(0==(a&1023))return 0;a&=131071;if(0!=(a&224))return JU.Edge.getPartialBondOrder(a);0!=(a&256)&&(a&=-257);0!=(a&248)&&(a=1);return a&7},"~N");b.getBondOrderFromFloat=c(b,"getBondOrderFromFloat",function(a){switch(F(10*a)){case 10:return 1; +case 5:case -10:return 33;case 15:return 515;case -15:return 66;case 20:return 2;case 25:return 97;case -25:return 100;case 30:return 3;case 40:return 4}return 131071},"~N");b.getBondOrderFromString=c(b,"getBondOrderFromString",function(a){if(0>a.indexOf(" "))if(0<=a.indexOf("."))a="partial "+a;else{if(JU.PT.isOneOf(a,";1;2;3;4;5;6;"))return a.charAt(0).charCodeAt(0)-48;var b=JU.Edge.EnumBondOrder.getCodeFromName(a);if(131071!=b||!a.toLowerCase().startsWith("atropisomer_")||14!=a.length)return b; +try{b=JU.Edge.getAtropismOrder(Integer.parseInt(a.substring(12,13)),Integer.parseInt(a.substring(13,14)))}catch(c){if(!E(c,"NumberFormatException"))throw c;}return b}if(0!=a.toLowerCase().indexOf("partial "))return 131071;a=a.substring(8).trim();return JU.Edge.getPartialBondOrderFromFloatEncodedInt(JU.Edge.getFloatEncodedInt(a))},"~S");b.getPartialBondOrderFromFloatEncodedInt=c(b,"getPartialBondOrderFromFloatEncodedInt",function(a){return(v(a/1E6)%7<<5)+(a%1E6&31)},"~N");b.getFloatEncodedInt=c(b, +"getFloatEncodedInt",function(a){var b=a.indexOf(".");if(1>b||"-"==a.charAt(0)||a.endsWith(".")||a.contains(".0"))return 2147483647;var c=0,e=0;if(0c&&(c=-c)}catch(g){if(E(g,"NumberFormatException"))c=-1;else throw g;}if(bc||2147483647d)return k;0<=e&&b.clear(e);return JU.JmolMolecule.getCovalentlyConnectedBitSet(a,a[d],b,g,j,c,k,null,null)?k:new JU.BS},"~A,~N,JU.BS,JU.Lst,~N,~B,~B");b.addMolecule=c(b,"addMolecule",function(a,d,b,c,e,g,j,k){k.or(e);d==a.length&&(a=JU.JmolMolecule.allocateArray(a,2*d+1));a[d]=JU.JmolMolecule.initialize(b,d,c,e,g,j); +return a},"~A,~N,~A,~N,JU.BS,~N,~N,JU.BS");b.getMolecularFormulaAtoms=c(b,"getMolecularFormulaAtoms",function(a,d,b,c){var e=new JU.JmolMolecule;e.nodes=a;e.atomList=d;return e.getMolecularFormula(!1,b,c)},"~A,JU.BS,~A,~B");c(b,"getMolecularFormula",function(a,d,b){this.getMFArray(a,d,b);if(0>this.elementCounts[0])return"?";d=a="";for(var c=1;c<=this.elementNumberMax;c++)b=this.elementCounts[c],0!=b&&(a+=d+JU.Elements.elementSymbolFromNumber(c)+" "+b,d=" ");return a},"~B,~A,~B");c(b,"getMFArray", +function(a,d,b){null==this.atomList&&(this.atomList=new JU.BS,this.atomList.setBits(0,null==this.atNos?this.nodes.length:this.atNos.length));this.elementCounts=D(JU.Elements.elementNumberMax,0);this.altElementCounts=D(JU.Elements.altElementMax,0);this.ac=this.atomList.cardinality();for(var c=this.nElements=0,e=this.atomList.nextSetBit(0);0<=e;e=this.atomList.nextSetBit(e+1),c++){var g,j=null;if(null==this.atNos){j=this.nodes[e];if(null==j)continue;g=j.getAtomicAndIsotopeNumber()}else g=this.atNos[e]; +var k=null==d?1:F(8*d[c]);ge[0]--||b.set(j);var p;for(a=c.values().iterator();a.hasNext()&&((p=a.next())||1);)if(0c.cardinality())c.clearAll();else for(j=c.nextSetBit(0);0<=j;j=c.nextSetBit(j+1))1!=a[j].getCovalentBondCount()&& +(e=JU.BS.copy(b),e.clear(d),g=JU.BS.newN(a.length),JU.JmolMolecule.getCovalentlyConnectedBitSet(a,a[j],e,!0,!0,null,g,a[d],a[d])||c.clear(j));return c},"~A,~N,JU.BS")});n("JU");A(["java.util.Hashtable","JU.DefaultLogger"],"JU.Logger",null,function(){var b=G(JU,"Logger",null);b.getProperty=c(b,"getProperty",function(a,d){try{var b=System.getProperty("jmol.logger."+a,null);if(null!=b)return b.equalsIgnoreCase("true")}catch(c){if(!E(c,Exception))throw c;}return d},"~S,~B");b.setLogger=c(b,"setLogger", +function(a){JU.Logger._logger=a;JU.Logger.debugging=JU.Logger.isActiveLevel(5)||JU.Logger.isActiveLevel(6);JU.Logger.debuggingHigh=JU.Logger.debugging&&JU.Logger._activeLevels[6]},"JU.LoggerInterface");b.isActiveLevel=c(b,"isActiveLevel",function(a){return null!=JU.Logger._logger&&0<=a&&7>a&&JU.Logger._activeLevels[a]},"~N");b.setActiveLevel=c(b,"setActiveLevel",function(a,d){0>a&&(a=0);7<=a&&(a=6);JU.Logger._activeLevels[a]=d;JU.Logger.debugging=JU.Logger.isActiveLevel(5)||JU.Logger.isActiveLevel(6); +JU.Logger.debuggingHigh=JU.Logger.debugging&&JU.Logger._activeLevels[6]},"~N,~B");b.setLogLevel=c(b,"setLogLevel",function(a){for(var d=7;0<=--d;)JU.Logger.setActiveLevel(d,d<=a)},"~N");b.getLevel=c(b,"getLevel",function(a){switch(a){case 6:return"DEBUGHIGH";case 5:return"DEBUG";case 4:return"INFO";case 3:return"WARN";case 2:return"ERROR";case 1:return"FATAL"}return"????"},"~N");b.logLevel=c(b,"logLevel",function(){return JU.Logger._logLevel});b.doLogLevel=c(b,"doLogLevel",function(a){JU.Logger._logLevel= +a},"~B");b.debug=c(b,"debug",function(a){if(JU.Logger.debugging)try{JU.Logger._logger.debug(a)}catch(d){}},"~S");b.info=c(b,"info",function(a){try{JU.Logger.isActiveLevel(4)&&JU.Logger._logger.info(a)}catch(d){}},"~S");b.warn=c(b,"warn",function(a){try{JU.Logger.isActiveLevel(3)&&JU.Logger._logger.warn(a)}catch(d){}},"~S");b.warnEx=c(b,"warnEx",function(a,d){try{JU.Logger.isActiveLevel(3)&&JU.Logger._logger.warnEx(a,d)}catch(b){}},"~S,Throwable");b.error=c(b,"error",function(a){try{JU.Logger.isActiveLevel(2)&& +JU.Logger._logger.error(a)}catch(d){}},"~S");b.errorEx=c(b,"errorEx",function(a,d){try{JU.Logger.isActiveLevel(2)&&JU.Logger._logger.errorEx(a,d)}catch(b){}},"~S,Throwable");b.getLogLevel=c(b,"getLogLevel",function(){for(var a=7;0<=--a;)if(JU.Logger.isActiveLevel(a))return a;return 0});b.fatal=c(b,"fatal",function(a){try{JU.Logger.isActiveLevel(1)&&JU.Logger._logger.fatal(a)}catch(d){}},"~S");b.fatalEx=c(b,"fatalEx",function(a,d){try{JU.Logger.isActiveLevel(1)&&JU.Logger._logger.fatalEx(a,d)}catch(b){}}, +"~S,Throwable");b.startTimer=c(b,"startTimer",function(a){null!=a&&JU.Logger.htTiming.put(a,Long.$valueOf(System.currentTimeMillis()))},"~S");b.getTimerMsg=c(b,"getTimerMsg",function(a,d){0==d&&(d=JU.Logger.getTimeFrom(a));return"Time for "+a+": "+d+" ms"},"~S,~N");b.getTimeFrom=c(b,"getTimeFrom",function(a){var d;return null==a||null==(d=JU.Logger.htTiming.get(a))?-1:System.currentTimeMillis()-d.longValue()},"~S");b.checkTimer=c(b,"checkTimer",function(a,d){var b=JU.Logger.getTimeFrom(a);0<=b&&!a.startsWith("(")&& +JU.Logger.info(JU.Logger.getTimerMsg(a,b));d&&JU.Logger.startTimer(a);return b},"~S,~B");b.checkMemory=c(b,"checkMemory",function(){JU.Logger.info("Memory: Total-Free=0; Total=0; Free=0; Max=0")});b._logger=new JU.DefaultLogger;b._activeLevels=Ca(7,!1);b._logLevel=!1;b.debugging=!1;b.debuggingHigh=!1;JU.Logger._activeLevels[6]=JU.Logger.getProperty("debugHigh",!1);JU.Logger._activeLevels[5]=JU.Logger.getProperty("debug",!1);JU.Logger._activeLevels[4]=JU.Logger.getProperty("info",!0);JU.Logger._activeLevels[3]= +JU.Logger.getProperty("warn",!0);JU.Logger._activeLevels[2]=JU.Logger.getProperty("error",!0);JU.Logger._activeLevels[1]=JU.Logger.getProperty("fatal",!0);JU.Logger._logLevel=JU.Logger.getProperty("logLevel",!1);JU.Logger.debugging=null!=JU.Logger._logger&&(JU.Logger._activeLevels[5]||JU.Logger._activeLevels[6]);JU.Logger.debuggingHigh=JU.Logger.debugging&&JU.Logger._activeLevels[6];b.htTiming=new java.util.Hashtable});n("JU");K(JU,"LoggerInterface");n("JU");A(["JU.V3"],"JU.Measure","javajs.api.Interface JU.Lst $.M3 $.P3 $.P4 $.Quat".split(" "), +function(){var b=G(JU,"Measure",null);b.computeAngle=c(b,"computeAngle",function(a,d,b,c,e,g){c.sub2(a,d);e.sub2(b,d);a=c.angle(e);return g?a/0.017453292:a},"JU.T3,JU.T3,JU.T3,JU.V3,JU.V3,~B");b.computeAngleABC=c(b,"computeAngleABC",function(a,d,b,c){var e=new JU.V3,g=new JU.V3;return JU.Measure.computeAngle(a,d,b,e,g,c)},"JU.T3,JU.T3,JU.T3,~B");b.computeTorsion=c(b,"computeTorsion",function(a,d,b,c,e){var g=a.x-d.x,j=a.y-d.y;a=a.z-d.z;var k=b.x-d.x,f=b.y-d.y,s=b.z-d.z,m=b.x-c.x,p=b.y-c.y,z=b.z-c.z; +c=j*s-a*f;d=a*k-g*s;var n=g*f-j*k;b=f*z-s*p;s=s*m-k*z;k=k*p-f*m;m=1/(b*b+s*s+k*k);f=Math.sqrt(1/(c*c+d*d+n*n));m=Math.sqrt(m);c=(c*b+d*s+n*k)*f*m;1c&&(c=-1);c=Math.acos(c);g=g*b+j*s+a*k;j=Math.abs(g);c=0b.distance(c)&&(e.scale(-1),d=-d));return d},"JU.T3,JU.T3,JU.T3,JU.T3,JU.V3,JU.V3");b.getNormalThroughPoints=c(b,"getNormalThroughPoints",function(a,d,b,c,e){JU.Measure.calcNormalizedNormal(a,d,b,c,e);e.setT(a);return-e.dot(c)},"JU.T3,JU.T3,JU.T3,JU.T3,JU.T3");b.getPlaneProjection=c(b,"getPlaneProjection",function(a,d,b,c){var e=JU.Measure.distanceToPlane(d,a);c.set(d.x,d.y,d.z);c.normalize();0=e*a||Math.abs(e)>Math.abs(a)},"JU.P3,JU.P3,JU.P3,JU.P3,JU.P3,JU.P4,JU.V3,JU.V3,~B");b.getIntersectionPP=c(b,"getIntersectionPP",function(a,d){var b=a.x,c=a.y,e=a.z,g=a.w,j=d.x,k=d.y,f=d.z,s=d.w,m=JU.V3.new3(b,c,e),p=JU.V3.new3(j,k,f),z=new JU.V3;z.cross(m, +p);var m=Math.abs(z.x),p=Math.abs(z.y),n=Math.abs(z.z);switch(m>p?m>n?1:3:p>n?2:3){case 1:m=0;p=c*f-k*e;if(0.01>Math.abs(p))return null;e=(e*s-f*g)/p;b=(k*g-s*c)/p;break;case 2:p=b*f-j*e;if(0.01>Math.abs(p))return null;m=(e*s-f*g)/p;e=0;b=(j*g-s*b)/p;break;default:p=b*k-j*c;if(0.01>Math.abs(p))return null;m=(c*s-k*g)/p;e=(j*g-s*b)/p;b=0}c=new JU.Lst;c.addLast(JU.P3.new3(m,e,b));z.normalize();c.addLast(z);return c},"JU.P4,JU.P4");b.getIntersection=c(b,"getIntersection",function(a,d,b,c,e,g){JU.Measure.getPlaneProjection(a, +b,c,e);e.set(b.x,b.y,b.z);e.normalize();null==d&&(d=JU.V3.newV(e));b=d.dot(e);if(0.01>Math.abs(b))return null;g.sub2(c,a);c.scaleAdd2(g.dot(e)/b,d,a);return c},"JU.P3,JU.V3,JU.P4,JU.P3,JU.V3,JU.V3");b.calculateQuaternionRotation=c(b,"calculateQuaternionRotation",function(a,d){d[1]=NaN;var b=new JU.Quat,c=a[0],e=a[1],g=c.length-1;if(2>g||c.length!=e.length)return b;for(var j=0,k=0,f=0,s=0,m=0,p=0,z=0,n=0,r=0,u=new JU.P3,v=new JU.P3,w=c[0],x=e[0],g=g+1;1<=--g;)u.sub2(c[g],w),v.sub2(e[g],x),j+=u.x*v.x, +k+=u.x*v.y,f+=u.x*v.z,s+=u.y*v.x,m+=u.y*v.y,p+=u.y*v.z,z+=u.z*v.x,n+=u.z*v.y,r+=u.z*v.z;d[0]=JU.Measure.getRmsd(a,b);b=R(4,4,0);b[0][0]=j+m+r;b[0][1]=b[1][0]=p-n;b[0][2]=b[2][0]=z-f;b[0][3]=b[3][0]=k-s;b[1][1]=j-m-r;b[1][2]=b[2][1]=k+s;b[1][3]=b[3][1]=z+f;b[2][2]=-j+m-r;b[2][3]=b[3][2]=p+n;b[3][3]=-j-m+r;j=javajs.api.Interface.getInterface("JU.Eigen").setM(b).getEigenvectorsFloatTransposed()[3];b=JU.Quat.newP4(JU.P4.new4(j[1],j[2],j[3],j[0]));d[1]=JU.Measure.getRmsd(a,b);return b},"~A,~A");b.getTransformMatrix4= +c(b,"getTransformMatrix4",function(a,d,b,c){a=JU.Measure.getCenterAndPoints(a);var e=JU.Measure.getCenterAndPoints(d);d=L(2,0);var g=JU.Measure.calculateQuaternionRotation(w(-1,[a,e]),d).getMatrix();null==c?g.rotate(a[0]):c.setT(a[0]);c=JU.V3.newVsub(e[0],a[0]);b.setMV(g,c);return d[1]},"JU.Lst,JU.Lst,JU.M4,JU.P3");b.getCenterAndPoints=c(b,"getCenterAndPoints",function(a){var d=a.size(),b=Array(d+1);b[0]=new JU.P3;if(0=d&&(d=a.length);if(2>=d)return a;var b=new JU.P3,c=new JU.V3,e=new JU.V3;JU.Measure.calcBestAxisThroughPoints(a,d,b,c,e,8);return JU.Measure.getProjectedLineSegment(a,d,b,c,e)},"~A,~N");b.getProjectedLineSegment= +c(b,"getProjectedLineSegment",function(a,d,b,c,e){null==e&&(e=new JU.V3);for(var g=d=null,j,k=3.4028235E38,f=-3.4028235E38,s=0;sf&&(f=m,g=j)}return w(-1,[d,g])},"~A,~N,JU.P3,JU.V3,JU.V3");b.isInTriangle=c(b,"isInTriangle",function(a,d,b,c,e,g,j){e.sub2(c,d);g.sub2(b,d);j.sub2(a,d);a=e.dot(e);d=e.dot(g);e=e.dot(j);b=g.dot(g);g=g.dot(j);j=1/(a*b-d*d);b=(b*e-d*g)*j;g=(a*g-d*e)*j;return 0<=b&&0<=g&&1>= +b+g},"JU.P3,JU.P3,JU.P3,JU.P3,JU.V3,JU.V3,JU.V3");b.calcBestPlaneThroughPoints=c(b,"calcBestPlaneThroughPoints",function(a,d,b){0>=d&&(d=a.length);if(3==d)return JU.Measure.getPlaneThroughPoints(a[0],a[1],a[2],null,null,b),0;var c=b,e=new JU.P4,g=JU.Measure.calcPlaneForMode(a,d,b,"z");if(1E-6>g)return g;var j=JU.Measure.calcPlaneForMode(a,d,e,"y");ja;a++)JU.Measure.testRnd();System.exit(0)});b.getPointsOnPlane=c(b,"getPointsOnPlane",function(a,d){for(var b=new JU.Lst,c=a.length;0<=--c;)0.001>Math.abs(JU.Measure.distanceToPlane(d,a[c]))&&b.addLast(a[c]);return b},"~A,JU.P4");b.getLatticePoints=c(b,"getLatticePoints",function(a,d,b,c){a.addLast(new JU.P3);d=0==d?1:Math.abs(d);b=0==b?1:Math.abs(b);c=0==c?1:Math.abs(c);for(var e=a.size(),g=-d;g<=d;g++)for(var j=-b;j<=b;j++)for(var k=-c;k<=c;k++)for(var f=0;f< +e;f++){var s=JU.P3.new3(g,j,k);s.add(a.get(f));a.addLast(s)}for(f=e;0<=--f;)a.removeItemAt(0);return a},"JU.Lst,~N,~N,~N");b.computeHelicalAxis=c(b,"computeHelicalAxis",function(a,d,b){var c=new JU.V3;c.sub2(d,a);var e=b.getTheta(),g=b.getNormal(),j=c.dot(g);1E-4>Math.abs(j)&&(j=0);var k=new JU.V3;k.cross(c,g);0!=k.dot(k)&&k.normalize();var f=new JU.V3,s=JU.V3.newV(g);0==j&&(j=1.4E-45);s.scale(j);f.sub2(s,c);f.scale(0.5);k.scale(0==e?0:f.length()/Math.tan(3.141592653589793*(e/2/180)));c=JU.V3.newV(k); +0!=e&&c.add(f);f=JU.P3.newP(a);f.sub(c);1.4E-45!=j&&g.scale(j);k=JU.P3.newP(f);k.add(g);e=JU.Measure.computeTorsion(a,f,k,d,!0);if(Float.isNaN(e)||1E-4>c.length())e=b.getThetaDirectedV(g);a=Math.abs(0==e?0:360/e);j=Math.abs(1.4E-45==j?0:g.length()*(0==e?1:360/e));return w(-1,[f,g,c,JU.P3.new3(e,j,a),k])},"JU.P3,JU.P3,JU.Quat");b.axisY=JU.V3.new3(0,1,0)});n("JU");A(null,"JU.MeshSurface","JU.AU $.P3 J.api.Interface JU.BoxInfo $.C $.Geodesic $.TempArray".split(" "),function(){var b=r(function(){this.meshType= +this.oabc=this.slicer=this.vwr=null;this.vc=0;this.surfaceAtoms=this.vertexSource=this.vvs=this.vs=null;this.pc=0;this.pis=null;this.haveQuads=this.isDrawPolygon=this.colorsExplicit=!1;this.colixBack=this.colix=0;this.isColorSolid=!0;this.normalsTemp=this.normals=this.vcs=this.pcs=this.altVertices=this.offset=null;this.normixCount=this.normalCount=0;this.vertexSets=this.surfaceSet=this.mat4=this.bsPolygons=null;this.nSets=0;this.dataOnly=!1;this.vertexCount0=this.polygonCount0=this.iC=this.iB=this.iA= +this.lastColix=this.lastColor=0;this.bsSlabGhost=this.bsSlabDisplay=null;this.slabColix=this.slabMeshType=0;this.slabOptions=this.bsDisplay=null;this.mergePolygonCount0=this.mergeVertexCount0=0;this.isMerged=!1;u(this,arguments)},JU,"MeshSurface",null);c(b,"getMeshSlicer",function(){return null==this.slicer?this.slicer=J.api.Interface.getInterface("JU.MeshSlicer",this.vwr,"script").set(this):this.slicer});b.newMesh=c(b,"newMesh",function(a,d,b,c,e,g){var j=new JU.MeshSurface;j.pis=c;a?j.altVertices= +d:j.vs=d;j.vc=0==b?d.length:b;j.normals=e;j.normalCount=0==g&&null!=e?e.length:g;return j},"~B,~A,~N,~A,~A,~N");c(b,"getVertices",function(){return null==this.altVertices?this.vs:this.altVertices});c(b,"getFaces",function(){return this.pis});c(b,"setColix",function(a){this.colix=a},"~N");c(b,"setColixBack",function(a){this.colixBack=a},"~N");c(b,"addV",function(a,d){0==this.vc?this.vs=Array(25):this.vc==this.vs.length&&(this.vs=JU.AU.doubleLength(this.vs));this.vs[this.vc]=d?JU.P3.newP(a):a;return this.vc++}, +"JU.T3,~B");c(b,"addTriangle",function(a,d,b){this.addPolygon(D(-1,[a,d,b]),null)},"~N,~N,~N");c(b,"addQuad",function(a,d,b,c){this.haveQuads=!0;this.addPolygon(D(-1,[a,d,b,c]),null)},"~N,~N,~N,~N");c(b,"setPolygonCount",function(a){this.pc=a;if(!(0>a)&&(null==this.pis||a>this.pis.length))this.pis=JU.AU.newInt2(a)},"~N");c(b,"addVCVal",function(a,d,b){0==this.vc?this.vvs=L(25,0):this.vc>=this.vvs.length&&(this.vvs=JU.AU.doubleLengthF(this.vvs));this.vvs[this.vc]=d;return this.addV(a,b)},"JU.T3,~N,~B"); +c(b,"addTriangleCheck",function(a,d,b,c,e,g){return null==this.vs||null!=this.vvs&&(Float.isNaN(this.vvs[a])||Float.isNaN(this.vvs[d])||Float.isNaN(this.vvs[b]))||Float.isNaN(this.vs[a].x)||Float.isNaN(this.vs[d].x)||Float.isNaN(this.vs[b].x)?-1:this.addPolygonV3(a,d,b,c,e,g,null)},"~N,~N,~N,~N,~N,~N");c(b,"addPolygonV3",function(a,d,b,c,e,g,j){return this.dataOnly?this.addPolygon(D(-1,[a,d,b,c]),j):this.addPolygonC(D(-1,[a,d,b,c,e]),g,j,0>e)},"~N,~N,~N,~N,~N,~N,JU.BS");c(b,"addPolygonC",function(a, +d,b,c){if(0!=d){if(null==this.pcs||0==this.pc)this.lastColor=0;c?this.colorsExplicit=!0:(null==this.pcs?this.pcs=U(25,0):this.pc>=this.pcs.length&&(this.pcs=JU.AU.doubleLengthShort(this.pcs)),this.pcs[this.pc]=c?2047:d==this.lastColor?this.lastColix:this.lastColix=JU.C.getColix(this.lastColor=d))}return this.addPolygon(a,b)},"~A,~N,JU.BS,~B");c(b,"addPolygon",function(a,d){var b=this.pc;0==b?this.pis=JU.AU.newInt2(25):b==this.pis.length&&(this.pis=JU.AU.doubleLength(this.pis));null!=d&&d.set(b);this.pis[this.pc++]= +a;return b},"~A,JU.BS");c(b,"invalidatePolygons",function(){for(var a=this.pc;--a>=this.mergePolygonCount0;)if((null==this.bsSlabDisplay||this.bsSlabDisplay.get(a))&&null==this.setABC(a))this.pis[a]=null});c(b,"setABC",function(a){if(null!=this.bsSlabDisplay&&!this.bsSlabDisplay.get(a)&&(null==this.bsSlabGhost||!this.bsSlabGhost.get(a)))return null;a=this.pis[a];if(null==a||3>a.length)return null;this.iA=a[0];this.iB=a[1];this.iC=a[2];return null==this.vvs||!Float.isNaN(this.vvs[this.iA])&&!Float.isNaN(this.vvs[this.iB])&& +!Float.isNaN(this.vvs[this.iC])?a:null},"~N");c(b,"setTranslucentVertices",function(){},"JU.BS");c(b,"getSlabColor",function(){return null==this.bsSlabGhost?null:JU.C.getHexCode(this.slabColix)});c(b,"getSlabType",function(){return null!=this.bsSlabGhost&&1073742018==this.slabMeshType?"mesh":null});c(b,"resetSlab",function(){null!=this.slicer&&this.slicer.slabPolygons(JU.TempArray.getSlabObjectType(1073742333,null,!1,null),!1)});c(b,"slabPolygonsList",function(a,d){this.getMeshSlicer();for(var b= +0;bg?5:6);--m>=s;){var p=f[m];if(!e.get(p)){e.set(p);var n=JU.Normix.vertexVectors[p],y;y=n.x-a;var r=y*y;r>=j||(y=n.y-d,r+=y*y,r>=j||(y=n.z-b,r+=y*y,r>=j||(g=p,j=r)))}}return g},"~N,~N,~N,~N,JU.BS");b.normixCount=0;b.vertexVectors=null;b.inverseNormixes=null;b.neighborVertexesArrays=null});n("JU");A(null,"JU.Parser",["JU.PT"],function(){var b=G(JU,"Parser",null);b.parseStringInfestedFloatArray=c(b,"parseStringInfestedFloatArray", +function(a,d,b){return JU.Parser.parseFloatArrayBsData(JU.PT.getTokens(a),d,b)},"~S,JU.BS,~A");b.parseFloatArrayBsData=c(b,"parseFloatArrayBsData",function(a,d,b){for(var c=b.length,e=a.length,g=0,j=0,k=null!=d,f=k?d.nextSetBit(0):0;0<=f&&f=f||f>=n.length?0:f-1;var y=0==f?0:n[f-1],r=n.length;null==k&&(k=L(r-f,0));for(var u=k.length,v=0>=j?Math.max(g,b):Math.max(g+j,b+c)-1,w=null!=d;f=j?JU.PT.getTokens(x):null;if(0>=j){if(A.lengthx||x>=u||0>(x=e[x]))continue;w&&d.set(x)}else{w?m=d.nextSetBit(m+1):m++;if(0>m||m>=u)break;x=m}k[x]=s}return k},"~S,JU.BS,~N,~N,~A,~N,~N,~A,~N");b.fixDataString=c(b,"fixDataString",function(a){a=a.$replace(";",0>a.indexOf("\n")?"\n":" ");a=JU.PT.trim(a,"\n \t");a=JU.PT.rep(a,"\n ","\n");return a=JU.PT.rep(a,"\n\n","\n")},"~S");b.markLines=c(b,"markLines",function(a,d){for(var b=0,c=a.length;0<=--c;)a.charAt(c)==d&&b++;for(var c=D(b+1,0),e=b=0;0<=(e=a.indexOf(d, +e));)c[b++]=++e;c[b]=a.length;return c},"~S,~S")});n("JU");A(["JU.P3"],"JU.Point3fi",null,function(){var b=r(function(){this.mi=-1;this.sZ=this.sY=this.sX=this.i=0;this.sD=-1;u(this,arguments)},JU,"Point3fi",JU.P3,Cloneable);c(b,"copy",function(){try{return this.clone()}catch(a){if(E(a,"CloneNotSupportedException"))return null;throw a;}})});n("JU");var qb=r(function(){this.height=this.width=this.y=this.x=0;u(this,arguments)},JU,"Rectangle",null);c(qb,"contains",function(b,a){return b>=this.x&&a>= +this.y&&b-this.x>8&65280|128;this.g=a&65280|128;this.b=a<<8&65280|128},"~N");c(b,"setRgb",function(a){this.r=a.r;this.g=a.g;this.b=a.b},"JU.Rgb16");c(b,"diffDiv",function(a,d,b){this.r=v((a.r-d.r)/b);this.g=v((a.g-d.g)/b); +this.b=v((a.b-d.b)/b)},"JU.Rgb16,JU.Rgb16,~N");c(b,"setAndIncrement",function(a,d){this.r=a.r;a.r+=d.r;this.g=a.g;a.g+=d.g;this.b=a.b;a.b+=d.b},"JU.Rgb16,JU.Rgb16");c(b,"getArgb",function(){return 4278190080|this.r<<8&16711680|this.g&65280|this.b>>8});f(b,"toString",function(){return(new JU.SB).append("Rgb16(").appendI(this.r).appendC(",").appendI(this.g).appendC(",").appendI(this.b).append(" -> ").appendI(this.r>>8&255).appendC(",").appendI(this.g>>8&255).appendC(",").appendI(this.b>>8&255).appendC(")").toString()})}); +n("JU");A(["JU.AU","$.V3"],"JU.Shader",["JU.CU","JU.C"],function(){var b=r(function(){this.zLight=this.yLight=this.xLight=0;this.lightSource=null;this.specularOn=!0;this.usePhongExponent=!1;this.ambientPercent=45;this.diffusePercent=84;this.specularExponent=6;this.specularPercent=22;this.specularPower=40;this.phongExponent=64;this.specularFactor=this.intenseFraction=this.diffuseFactor=this.ambientFraction=0;this.ashadesGreyscale=this.ashades=null;this.celOn=!1;this.celPower=10;this.celZ=this.celRGB= +0;this.useLight=!1;this.sphereShadeIndexes=null;this.seed=305419897;this.ellipsoidShades=this.sphereShapeCache=null;this.nIn=this.nOut=0;u(this,arguments)},JU,"Shader",null);N(b,function(){this.lightSource=new JU.V3;this.ambientFraction=this.ambientPercent/100;this.diffuseFactor=this.diffusePercent/100;this.intenseFraction=this.specularPower/100;this.specularFactor=this.specularPercent/100;this.ashades=JU.AU.newInt2(128);this.sphereShadeIndexes=O(65536,0);this.sphereShapeCache=JU.AU.newInt2(128)}); +x(b,function(){this.setLightSource(-1,-1,2.5)});c(b,"setLightSource",function(a,d,b){this.lightSource.set(a,d,b);this.lightSource.normalize();this.xLight=this.lightSource.x;this.yLight=this.lightSource.y;this.zLight=this.lightSource.z},"~N,~N,~N");c(b,"setCel",function(a,d,b){a=a&&0!=d;b=JU.C.getArgb(JU.C.getBgContrast(b));b=4278190080==b?4278453252:-1==b?-2:b+1;this.celOn==a&&this.celRGB==b&&this.celPower==d||(this.celOn=a,this.celPower=d,this.useLight=!this.celOn||0=a||(2047==a&&a++,this.ashades=JU.AU.arrayCopyII(this.ashades,a),null!=this.ashadesGreyscale&& +(this.ashadesGreyscale=JU.AU.arrayCopyII(this.ashadesGreyscale,a)))},"~N");c(b,"getShades2",function(a,d){var b=D(64,0);if(0==a)return b;for(var c=a>>16&255,e=a>>8&255,g=a&255,j=0,k=0,f=0,s=this.ambientFraction;;)if(j=c*s+0.5,k=e*s+0.5,f=g*s+0.5,0j&&4>k&&4>f)c++,e++,g++,0.1>s&&(s+=0.1),a=JU.CU.rgb(v(Math.floor(c)),v(Math.floor(e)),v(Math.floor(g)));else break;var m=0,s=(1-s)/52,c=c*s,e=e*s,g=g*s;if(this.celOn){s=JU.CU.rgb(v(Math.floor(j)),v(Math.floor(k)),v(Math.floor(f)));if(0<=this.celPower)for(;32> +m;++m)b[m]=s;k+=32*e;f+=32*g;for(s=JU.CU.rgb(v(Math.floor(j+32*c)),v(Math.floor(k)),v(Math.floor(f)));64>m;m++)b[m]=s;b[0]=b[1]=this.celRGB}else{for(;52>m;++m)b[m]=JU.CU.rgb(v(Math.floor(j)),v(Math.floor(k)),v(Math.floor(f))),j+=c,k+=e,f+=g;b[m++]=a;s=this.intenseFraction/(64-m);c=(255.5-j)*s;e=(255.5-k)*s;for(g=(255.5-f)*s;64>m;m++)j+=c,k+=e,f+=g,b[m]=JU.CU.rgb(v(Math.floor(j)),v(Math.floor(k)),v(Math.floor(f)))}if(d)for(;0<=--m;)b[m]=JU.CU.toFFGGGfromRGB(b[m]);return b},"~N,~B");c(b,"getShadeIndex", +function(a,d,b){var c=Math.sqrt(a*a+d*d+b*b);return Math.round(63*this.getShadeF(a/c,d/c,b/c))},"~N,~N,~N");c(b,"getShadeB",function(a,d,b){return Math.round(63*this.getShadeF(a,d,b))},"~N,~N,~N");c(b,"getShadeFp8",function(a,d,b){var c=Math.sqrt(a*a+d*d+b*b);return v(Math.floor(16128*this.getShadeF(a/c,d/c,b/c)))},"~N,~N,~N");c(b,"getShadeF",function(a,d,b){d=this.useLight?a*this.xLight+d*this.yLight+b*this.zLight:b;if(0>=d)return 0;a=d*this.diffuseFactor;if(this.specularOn&&(d=2*d*b-this.zLight, +0>8;if(!this.useLight)return a;(d&255)>this.nextRandom8Bit()&&++a;d=this.seed&65535;21845>d&&0a&&++a;return a},"~N,~N,~N,~N");c(b,"calcSphereShading",function(){for(var a=-127.5,d=0;256>d;++a,++d)for(var b= +-127.5,c=a*a,e=0;256>e;++b,++e){var g=0,j=16900-c-b*b;0>23});c(b,"getEllipsoidShade",function(a,d,b,c,e){var g=e.m00*a+e.m01*d+e.m02*b+e.m03,j=e.m10*a+e.m11*d+e.m12*b+e.m13;a=e.m20*a+e.m21*d+e.m22*b+e.m23;c=Math.min(c/2,45)/Math.sqrt(g*g+j*j+a*a);g=F(-g*c);j=F(-j*c);c=F(a*c);if(a=-20>g||20<=g||-20>j||20<=j||0>c||40<= +c){for(;0==g%2&&0==j%2&&0==c%2&&0>=1,j>>=1,c>>=1;a=-20>g||20<=g||-20>j||20<=j||0>c||40<=c}a?this.nOut++:this.nIn++;return a?this.getShadeIndex(g,j,c):this.ellipsoidShades[g+20][j+20][c]},"~N,~N,~N,~N,JU.M4");c(b,"createEllipsoidShades",function(){this.ellipsoidShades=O(40,40,40,0);for(var a=0;40>a;a++)for(var d=0;40>d;d++)for(var b=0;40>b;b++)this.ellipsoidShades[a][d][b]=this.getShadeIndex(a-20,d-20,b)})});n("JU");A(["JV.Viewer"],"JU.SimpleUnitCell","JU.AU $.M4 $.P3 $.P4 $.PT $.V3 JU.Escape".split(" "), +function(){var b=r(function(){this.unitCellParams=null;this.slop=0;this.matrixFtoCNoOffset=this.matrixCtoFNoOffset=this.matrixFractionalToCartesian=this.matrixCartesianToFractional=null;this.volume=0;this.dimension=3;this.fractionalOrigin=null;this.c_=this.b_=this.a_=this.cB_=this.cA_=this.sinGamma=this.cosGamma=this.sinBeta=this.cosBeta=this.sinAlpha=this.cosAlpha=this.gamma=this.beta=this.alpha=this.c=this.b=this.a=this.nc=this.nb=this.na=0;u(this,arguments)},JU,"SimpleUnitCell",null);N(b,function(){this.slop= +JV.Viewer.isHighPrecision?1E-12:1E-4});x(b,function(){this.fractionalOrigin=new JU.P3});c(b,"getPrecision",function(){return this.slop});c(b,"setPrecision",function(a){this.unitCellParams[26]=this.slop=!Float.isNaN(a)?a:!Float.isNaN(this.unitCellParams[26])?this.unitCellParams[26]:JV.Viewer.isHighPrecision?1E-12:1E-4},"~N");c(b,"isSupercell",function(){return 1=a[0]?3:0>a[1]?1:0>a[2]?2:3},"~A");c(b,"init",function(a){null==a&&(a=L(-1,[1,1,1,90,90,90]));if(JU.SimpleUnitCell.isValid(a)){this.unitCellParams=JU.SimpleUnitCell.newParams(a,NaN);var d=!1;this.dimension=JU.SimpleUnitCell.getDimensionFromParams(a);this.a=a[0];this.b=a[1];this.c=a[2];this.alpha=a[3];this.beta=a[4];this.gamma=a[5];-1==this.gamma&& +0=this.a&&0>=this.c){var g=JU.SimpleUnitCell.newV(a,6),j=JU.SimpleUnitCell.newV(a,9),k=JU.SimpleUnitCell.newV(a,12); +this.setABC(g,j,k);0>this.c&&(a=JU.AU.arrayCopyF(a,-1),0>this.b&&(j.set(0,0,1),j.cross(j,g),0.001>j.length()&&j.set(0,1,0),j.normalize(),a[9]=j.x,a[10]=j.y,a[11]=j.z),0>this.c&&(k.cross(g,j),k.normalize(),a[12]=k.x,a[13]=k.y,a[14]=k.z))}this.a*=b;0>=this.b?this.b=this.c=1:0>=this.c?(this.c=1,this.b*=c):(this.b*=c,this.c*=e);this.setCellParams();if(21g;g++){switch(g%4){case 0:j=b;break;case 1:j=c;break;case 2:j=e;break;default:j=1}d[g]=a[6+g]*j}this.matrixCartesianToFractional= +JU.M4.newA16(d);this.matrixCartesianToFractional.getTranslation(this.fractionalOrigin);this.matrixFractionalToCartesian=JU.M4.newM4(this.matrixCartesianToFractional).invert();1==a[0]&&this.setParamsFromMatrix()}else 14e;e++)b[e]=ec&&(b[26]=d);return b},"~A,~N");b.addVectors=c(b,"addVectors",function(a){for(var d=JU.SimpleUnitCell.newA(a).matrixFractionalToCartesian,b=0;9>b;b++)a[6+b]=d.getElement(b%3,v(b/3))},"~A");c(b,"setParamsFromMatrix", +function(){var a=JU.V3.new3(1,0,0),d=JU.V3.new3(0,1,0),b=JU.V3.new3(0,0,1);this.matrixFractionalToCartesian.rotate(a);this.matrixFractionalToCartesian.rotate(d);this.matrixFractionalToCartesian.rotate(b);this.setABC(a,d,b);this.setCellParams()});c(b,"setABC",function(a,d,b){JU.SimpleUnitCell.fillParams(a,d,b,this.unitCellParams);a=this.unitCellParams;this.a=a[0];this.b=a[1];this.c=a[2];this.alpha=a[3];this.beta=a[4];this.gamma=a[5]},"JU.V3,JU.V3,JU.V3");b.fillParams=c(b,"fillParams",function(a,d, +b,c){null==a&&(a=JU.SimpleUnitCell.newV(c,6),d=JU.SimpleUnitCell.newV(c,9),b=JU.SimpleUnitCell.newV(c,12));var e=a.length(),g=d.length(),j=b.length();0!=e&&(0==g?g=j=-1:0==j&&(j=-1),c[0]=e,c[1]=g,c[2]=j,c[3]=0>g||0>j?90:d.angle(b)/0.017453292519943295,c[4]=0>j?90:a.angle(b)/0.017453292519943295,c[5]=0>g?90:a.angle(d)/0.017453292519943295)},"JU.V3,JU.V3,JU.V3,~A");c(b,"setCellParams",function(){this.cosAlpha=Math.cos(0.017453292519943295*this.alpha);this.sinAlpha=Math.sin(0.017453292519943295*this.alpha); +this.cosBeta=Math.cos(0.017453292519943295*this.beta);this.sinBeta=Math.sin(0.017453292519943295*this.beta);this.cosGamma=Math.cos(0.017453292519943295*this.gamma);this.sinGamma=Math.sin(0.017453292519943295*this.gamma);var a=Math.sqrt(this.sinAlpha*this.sinAlpha+this.sinBeta*this.sinBeta+this.sinGamma*this.sinGamma+2*this.cosAlpha*this.cosBeta*this.cosGamma-2);this.volume=this.a*this.b*this.c*a;this.cA_=(this.cosAlpha-this.cosBeta*this.cosGamma)/this.sinGamma;this.cB_=a/this.sinGamma;this.a_=this.b* +this.c*this.sinAlpha/this.volume;this.b_=this.a*this.c*this.sinBeta/this.volume;this.c_=this.a*this.b*this.sinGamma/this.volume});c(b,"getFractionalOrigin",function(){return this.fractionalOrigin});c(b,"toSupercell",function(a){a.x/=this.na;a.y/=this.nb;a.z/=this.nc;return a},"JU.P3");c(b,"toCartesian",function(a,d){null!=this.matrixFractionalToCartesian&&(d?this.matrixFtoCNoOffset:this.matrixFractionalToCartesian).rotTrans(a)},"JU.T3,~B");c(b,"toFractionalM",function(a){null!=this.matrixCartesianToFractional&& +(a.mul(this.matrixFractionalToCartesian),a.mul2(this.matrixCartesianToFractional,a))},"JU.M4");c(b,"toFractional",function(a,d){null!=this.matrixCartesianToFractional&&(d?this.matrixCtoFNoOffset:this.matrixCartesianToFractional).rotTrans(a)},"JU.T3,~B");c(b,"isPolymer",function(){return 1==this.dimension});c(b,"isSlab",function(){return 2==this.dimension});c(b,"getUnitCellParams",function(){return this.unitCellParams});c(b,"getUnitCellAsArray",function(a){var d=this.matrixFractionalToCartesian;return a? +L(-1,[d.m00,d.m10,d.m20,d.m01,d.m11,d.m21,d.m02,d.m12,d.m22]):L(-1,[this.a,this.b,this.c,this.alpha,this.beta,this.gamma,d.m00,d.m10,d.m20,d.m01,d.m11,d.m21,d.m02,d.m12,d.m22,this.dimension,this.volume])},"~B");c(b,"getInfo",function(a){switch(a){case 0:return this.a;case 1:return this.b;case 2:return this.c;case 3:return this.alpha;case 4:return this.beta;case 5:return this.gamma;case 6:return this.dimension;case 7:return JU.SimpleUnitCell.isHexagonal(this.unitCellParams)?1:0;case 8:return JU.SimpleUnitCell.isRhombohedral(this.unitCellParams)? +1:0}return NaN},"~N");b.getReciprocal=c(b,"getReciprocal",function(a,d,b){var c=4==a.length?1:0,e=Array(4);e[0]=1==c?JU.P3.newP(a[0]):new JU.P3;0==b&&(b=6.283185307179586);for(var g=0;3>g;g++){var j=e[g+1]=new JU.P3;j.cross(a[(g+1)%3+c],a[(g+2)%3+c]);var k=a[g+c].dot(j);-1==b&&(b=Math.sqrt(k));j.scale(b/k)}if(null==d)return e;for(g=0;4>g;g++)d[g]=e[g];return d},"~A,~A,~N");b.setAbc=c(b,"setAbc",function(a,d,b){if(null!=a&&(null==d&&(d=L(6,0)),a=JU.PT.split(a.$replace(",","="),"="),12<=a.length))for(var c= +0;6>c;c++)d[c]=JU.PT.parseFloat(a[2*c+1]);return null==b?null:JU.SimpleUnitCell.setAbcFromParams(d,b)},"~S,~A,~A");b.setAbcFromParams=c(b,"setAbcFromParams",function(a,d){var b=JU.SimpleUnitCell.newA(a).getUnitCellAsArray(!0);d[1].set(b[0],b[1],b[2]);d[2].set(b[3],b[4],b[5]);d[3].set(b[6],b[7],b[8]);return d},"~A,~A");c(b,"unitizeDim",function(a,d){switch(a){case 3:d.z=JU.SimpleUnitCell.unitizeX(d.z,this.slop);case 2:d.y=JU.SimpleUnitCell.unitizeX(d.y,this.slop);case 1:d.x=JU.SimpleUnitCell.unitizeX(d.x, +this.slop)}},"~N,JU.T3");b.unitizeDimRnd=c(b,"unitizeDimRnd",function(a,d,b){switch(a){case 3:d.z=JU.SimpleUnitCell.unitizeXRnd(d.z,b);case 2:d.y=JU.SimpleUnitCell.unitizeXRnd(d.y,b);case 1:d.x=JU.SimpleUnitCell.unitizeXRnd(d.x,b)}},"~N,JU.T3,~N");b.unitizeX=c(b,"unitizeX",function(a,d){a-=Math.floor(a);if(a>1-d||a1-d||a=d&&Math.abs(a-d)<12*this.slop?d:-1},"~N");c(b,"twelfthify",function(a){switch(this.dimension){case 3:a.z=this.setTwelfths(a.z);case 2:a.y=this.setTwelfths(a.y);case 1:a.x=this.setTwelfths(a.x)}},"JU.P3");c(b,"setTwelfths",function(a){var d=this.twelfthsOf(a);return 0<=d?d/12:a},"~N");b.ijkToPoint3f=c(b,"ijkToPoint3f",function(a,d,b,c){var e=1E9=a.x&&5>=a.y&&5>=a.z?JU.P4.new4(555,100*(a.x+4)+10*(a.y+4)+a.z+4,d,0):JU.P4.new4(1500500500,1500500500+1E6*a.x+1E3*a.y+a.z,d,1500500+a.z)},"JU.T3,~N");b.escapeMultiplier=c(b,"escapeMultiplier",function(a){if(C(a,"JU.P4")){var d=1E3*v(Math.floor(a.x/1E3))+v(Math.floor(a.w/1E3))-1E3,b=1E3*v(Math.floor(a.y/1E3))+v(Math.floor(a.w))%1E3;return"{"+d+" "+b+" "+a.z+"}"}return JU.Escape.eP(a)},"JU.T3");b.setMinMaxLatticeParameters=c(b,"setMinMaxLatticeParameters", +function(a,d,b,c){if(b.x<=b.y&&555<=b.y){var e=new JU.P3;JU.SimpleUnitCell.ijkToPoint3f(b.x,e,0,c);d.x=F(e.x);d.y=F(e.y);d.z=F(e.z);JU.SimpleUnitCell.ijkToPoint3f(b.y,e,1,c);b.x=F(e.x);b.y=F(e.y);b.z=F(e.z)}switch(a){case 1:d.y=0,b.y=1;case 2:d.z=0,b.z=1}},"~N,JU.P3i,JU.P3i,~N");b.isHexagonal=c(b,"isHexagonal",function(a){return JU.SimpleUnitCell.approx0(a[0]-a[1])&&JU.SimpleUnitCell.approx0(a[3]-90)&&JU.SimpleUnitCell.approx0(a[4]-90)&&(JU.SimpleUnitCell.approx0(a[5]-120)||-1==a[5])},"~A");b.isRhombohedral= +c(b,"isRhombohedral",function(a){return JU.SimpleUnitCell.approx0(a[0]-a[1])&&JU.SimpleUnitCell.approx0(a[1]-a[2])&&!JU.SimpleUnitCell.approx0(a[3]-90)&&JU.SimpleUnitCell.approx0(a[3]-a[4])&&JU.SimpleUnitCell.approx0(a[4]-a[5])},"~A");b.approx0=c(b,"approx0",function(a){return 0.001>Math.abs(a)},"~N");b.getCellRange=c(b,"getCellRange",function(a,d){var b=C(a,"JU.T4")?F(a.w):0;JU.SimpleUnitCell.ijkToPoint3f(F(a.x),d[0],0,b);JU.SimpleUnitCell.ijkToPoint3f(F(a.y),d[1],1,b);0>a.z&&(d[0].scale(-1/a.z), +d[1].scale(-1/a.z));return b},"JU.T3,~A");f(b,"toString",function(){return"["+this.a+" "+this.b+" "+this.c+" "+this.alpha+" "+this.beta+" "+this.gamma+"]"})});n("JU");A(null,"JU.TempArray",["JU.P3","$.P3i"],function(){var b=r(function(){this.freeEnum=this.lengthsFreeEnum=this.freeScreens=this.lengthsFreeScreens=this.freePoints=this.lengthsFreePoints=null;u(this,arguments)},JU,"TempArray",null);N(b,function(){this.lengthsFreePoints=D(6,0);this.freePoints=Array(6);this.lengthsFreeScreens=D(6,0);this.freeScreens= +Array(6);this.lengthsFreeEnum=D(2,0);this.freeEnum=Array(2)});x(b,function(){});c(b,"clear",function(){this.clearTempPoints();this.clearTempScreens()});b.findBestFit=c(b,"findBestFit",function(a,d){for(var b=-1,c=2147483647,e=d.length;0<=--e;){var g=d[e];g>=a&&ga;a++)this.lengthsFreePoints[a]=0,this.freePoints[a]=null});c(b,"allocTempPoints",function(a){var d;d=JU.TempArray.findBestFit(a,this.lengthsFreePoints);if(0a;a++)this.lengthsFreeScreens[a]=0,this.freeScreens[a]=null});c(b,"allocTempScreens",function(a){var d;d=JU.TempArray.findBestFit(a,this.lengthsFreeScreens);if(0=--this.tracePt){for(var b=this.trace[this.trace.length-1],c=this.trace.length;1<=--c;)this.trace[c]=this.trace[c-1];this.trace[1]=b;this.tracePt=1}b=this.trace[this.tracePt];null==b&&(b=this.trace[this.tracePt]=new JU.P3);b.setT(d)}return this.trace}, +"~N,JU.Point3fi")});n("JV");A(["J.api.EventManager","JU.Rectangle","JV.MouseState"],["JV.MotionPoint","$.ActionManager","$.Gesture"],"JU.AU $.PT J.api.Interface J.i18n.GT JS.SV $.ScriptEval J.thread.HoverWatcherThread JU.BSUtil $.Escape $.Logger $.Point3fi JV.Viewer JV.binding.Binding $.JmolBinding".split(" "),function(){var b=r(function(){this.vwr=null;this.isMultiTouch=this.haveMultiTouchInput=!1;this.predragBinding=this.rasmolBinding=this.dragBinding=this.pfaatBinding=this.jmolBinding=this.b=null; +this.LEFT_DRAGGED=0;this.hoverable=!1;this.dragGesture=this.hoverWatcherThread=null;this.apm=1;this.pickingStyleSelect=this.pickingStyle=this.bondPickingMode=0;this.pickingStyleMeasure=5;this.rootPickingStyle=0;this.mouseDragFactor=this.gestureSwipeFactor=1;this.mouseWheelFactor=1.15;this.dragged=this.pressed=this.clicked=this.moved=this.current=null;this.clickedCount=this.pressedCount=0;this.dragSelectedMode=this.labelMode=this.drawMode=!1;this.measuresEnabled=!0;this.hoverActive=this.haveSelection= +!1;this.mp=null;this.dragAtomIndex=-1;this.rubberbandSelectionMode=this.mkBondPressed=!1;this.rectRubber=null;this.isAltKeyReleased=!0;this.isMultiTouchServer=this.isMultiTouchClient=this.keyProcessing=!1;this.clickAction=this.dragAction=this.pressAction=0;this.measurementQueued=null;this.selectionWorking=this.zoomTrigger=!1;u(this,arguments)},JV,"ActionManager",null,J.api.EventManager);N(b,function(){this.current=new JV.MouseState("current");this.moved=new JV.MouseState("moved");this.clicked=new JV.MouseState("clicked"); +this.pressed=new JV.MouseState("pressed");this.dragged=new JV.MouseState("dragged");this.rectRubber=new JU.Rectangle});c(b,"setViewer",function(a){this.vwr=a;JV.Viewer.isJS||this.createActions();this.setBinding(this.jmolBinding=new JV.binding.JmolBinding);this.LEFT_DRAGGED=JV.binding.Binding.getMouseAction(1,16,1);this.dragGesture=new JV.Gesture(20,a)},"JV.Viewer,~S");c(b,"isHoverable",function(){return this.hoverable});c(b,"checkHover",function(){if(this.zoomTrigger)this.zoomTrigger=!1,8==this.vwr.currentCursor&& +this.vwr.setCursor(0),this.vwr.setInMotion(!1);else if(!this.vwr.getInMotion(!0)&&!this.vwr.tm.spinOn&&!this.vwr.tm.navOn&&!this.vwr.checkObjectHovered(this.current.x,this.current.y)){var a=this.vwr.findNearestAtomIndex(this.current.x,this.current.y);if(!(0>a)){var d=2==this.apm&&this.bnd(JV.binding.Binding.getMouseAction(this.clickedCount,this.moved.modifiers,1),[10]);this.vwr.hoverOn(a,d)}}});c(b,"processMultitouchEvent",function(){},"~N,~N,~N,~N,JU.P3,~N");c(b,"bind",function(a,d){var b=JV.ActionManager.getActionFromName(d), +c=JV.binding.Binding.getMouseActionStr(a);0!=c&&(0<=b?this.b.bindAction(c,b):this.b.bindName(c,d))},"~S,~S");c(b,"clearBindings",function(){this.setBinding(this.jmolBinding=new JV.binding.JmolBinding);this.rasmolBinding=this.dragBinding=this.pfaatBinding=null});c(b,"unbindAction",function(a,d){if(null==a&&null==d)this.clearBindings();else{var b=JV.ActionManager.getActionFromName(d),c=JV.binding.Binding.getMouseActionStr(a);0<=b?this.b.unbindAction(c,b):0!=c&&this.b.unbindName(c,d);null==d&&this.b.unbindUserAction(a)}}, +"~S,~S");b.newAction=c(b,"newAction",function(a,d,b){JV.ActionManager.actionInfo[a]=b;JV.ActionManager.actionNames[a]=d},"~N,~S,~S");c(b,"createActions",function(){null==JV.ActionManager.actionInfo[0]&&(JV.ActionManager.newAction(0,"_assignNew",J.i18n.GT.o(J.i18n.GT.$("assign/new atom or bond (requires {0})"),"set picking assignAtom_??/assignBond_?")),JV.ActionManager.newAction(1,"_center",J.i18n.GT.$("center")),JV.ActionManager.newAction(2,"_clickFrank",J.i18n.GT.$("pop up recent context menu (click on Jmol frank)")), +JV.ActionManager.newAction(4,"_deleteAtom",J.i18n.GT.o(J.i18n.GT.$("delete atom (requires {0})"),"set picking DELETE ATOM")),JV.ActionManager.newAction(5,"_deleteBond",J.i18n.GT.o(J.i18n.GT.$("delete bond (requires {0})"),"set picking DELETE BOND")),JV.ActionManager.newAction(6,"_depth",J.i18n.GT.o(J.i18n.GT.$("adjust depth (back plane; requires {0})"),"SLAB ON")),JV.ActionManager.newAction(7,"_dragAtom",J.i18n.GT.o(J.i18n.GT.$("move atom (requires {0})"),"set picking DRAGATOM")),JV.ActionManager.newAction(8, +"_dragDrawObject",J.i18n.GT.o(J.i18n.GT.$("move whole DRAW object (requires {0})"),"set picking DRAW")),JV.ActionManager.newAction(9,"_dragDrawPoint",J.i18n.GT.o(J.i18n.GT.$("move specific DRAW point (requires {0})"),"set picking DRAW")),JV.ActionManager.newAction(10,"_dragLabel",J.i18n.GT.o(J.i18n.GT.$("move label (requires {0})"),"set picking LABEL")),JV.ActionManager.newAction(11,"_dragMinimize",J.i18n.GT.o(J.i18n.GT.$("move atom and minimize molecule (requires {0})"),"set picking DRAGMINIMIZE")), +JV.ActionManager.newAction(12,"_dragMinimizeMolecule",J.i18n.GT.o(J.i18n.GT.$("move and minimize molecule (requires {0})"),"set picking DRAGMINIMIZEMOLECULE")),JV.ActionManager.newAction(13,"_dragSelected",J.i18n.GT.o(J.i18n.GT.$("move selected atoms (requires {0})"),"set DRAGSELECTED")),JV.ActionManager.newAction(14,"_dragZ",J.i18n.GT.o(J.i18n.GT.$("drag atoms in Z direction (requires {0})"),"set DRAGSELECTED")),JV.ActionManager.newAction(15,"_multiTouchSimulation",J.i18n.GT.$("simulate multi-touch using the mouse)")), +JV.ActionManager.newAction(16,"_navTranslate",J.i18n.GT.o(J.i18n.GT.$("translate navigation point (requires {0} and {1})"),w(-1,["set NAVIGATIONMODE","set picking NAVIGATE"]))),JV.ActionManager.newAction(17,"_pickAtom",J.i18n.GT.$("pick an atom")),JV.ActionManager.newAction(3,"_pickConnect",J.i18n.GT.o(J.i18n.GT.$("connect atoms (requires {0})"),"set picking CONNECT")),JV.ActionManager.newAction(18,"_pickIsosurface",J.i18n.GT.o(J.i18n.GT.$("pick an ISOSURFACE point (requires {0}"),"set DRAWPICKING")), +JV.ActionManager.newAction(19,"_pickLabel",J.i18n.GT.o(J.i18n.GT.$("pick a label to toggle it hidden/displayed (requires {0})"),"set picking LABEL")),JV.ActionManager.newAction(20,"_pickMeasure",J.i18n.GT.o(J.i18n.GT.$("pick an atom to include it in a measurement (after starting a measurement or after {0})"),"set picking DISTANCE/ANGLE/TORSION")),JV.ActionManager.newAction(21,"_pickNavigate",J.i18n.GT.o(J.i18n.GT.$("pick a point or atom to navigate to (requires {0})"),"set NAVIGATIONMODE")),JV.ActionManager.newAction(22, +"_pickPoint",J.i18n.GT.o(J.i18n.GT.$("pick a DRAW point (for measurements) (requires {0}"),"set DRAWPICKING")),JV.ActionManager.newAction(23,"_popupMenu",J.i18n.GT.$("pop up the full context menu")),JV.ActionManager.newAction(24,"_reset",J.i18n.GT.$("reset (when clicked off the model)")),JV.ActionManager.newAction(25,"_rotate",J.i18n.GT.$("rotate")),JV.ActionManager.newAction(26,"_rotateBranch",J.i18n.GT.o(J.i18n.GT.$("rotate branch around bond (requires {0})"),"set picking ROTATEBOND")),JV.ActionManager.newAction(27, +"_rotateSelected",J.i18n.GT.o(J.i18n.GT.$("rotate selected atoms (requires {0})"),"set DRAGSELECTED")),JV.ActionManager.newAction(28,"_rotateZ",J.i18n.GT.$("rotate Z")),JV.ActionManager.newAction(29,"_rotateZorZoom",J.i18n.GT.$("rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)")),JV.ActionManager.newAction(30,"_select",J.i18n.GT.o(J.i18n.GT.$("select an atom (requires {0})"),"set pickingStyle EXTENDEDSELECT")),JV.ActionManager.newAction(31,"_selectAndDrag",J.i18n.GT.o(J.i18n.GT.$("select and drag atoms (requires {0})"), +"set DRAGSELECTED")),JV.ActionManager.newAction(32,"_selectAndNot",J.i18n.GT.o(J.i18n.GT.$("unselect this group of atoms (requires {0})"),"set pickingStyle DRAG/EXTENDEDSELECT")),JV.ActionManager.newAction(33,"_selectNone",J.i18n.GT.o(J.i18n.GT.$("select NONE (requires {0})"),"set pickingStyle EXTENDEDSELECT")),JV.ActionManager.newAction(34,"_selectOr",J.i18n.GT.o(J.i18n.GT.$("add this group of atoms to the set of selected atoms (requires {0})"),"set pickingStyle DRAG/EXTENDEDSELECT")),JV.ActionManager.newAction(35, +"_selectToggle",J.i18n.GT.o(J.i18n.GT.$("toggle selection (requires {0})"),"set pickingStyle DRAG/EXTENDEDSELECT/RASMOL")),JV.ActionManager.newAction(36,"_selectToggleOr",J.i18n.GT.o(J.i18n.GT.$("if all are selected, unselect all, otherwise add this group of atoms to the set of selected atoms (requires {0})"),"set pickingStyle DRAG")),JV.ActionManager.newAction(37,"_setMeasure",J.i18n.GT.$("pick an atom to initiate or conclude a measurement")),JV.ActionManager.newAction(38,"_slab",J.i18n.GT.o(J.i18n.GT.$("adjust slab (front plane; requires {0})"), +"SLAB ON")),JV.ActionManager.newAction(39,"_slabAndDepth",J.i18n.GT.o(J.i18n.GT.$("move slab/depth window (both planes; requires {0})"),"SLAB ON")),JV.ActionManager.newAction(40,"_slideZoom",J.i18n.GT.$("zoom (along right edge of window)")),JV.ActionManager.newAction(41,"_spinDrawObjectCCW",J.i18n.GT.o(J.i18n.GT.$("click on two points to spin around axis counterclockwise (requires {0})"),"set picking SPIN")),JV.ActionManager.newAction(42,"_spinDrawObjectCW",J.i18n.GT.o(J.i18n.GT.$("click on two points to spin around axis clockwise (requires {0})"), +"set picking SPIN")),JV.ActionManager.newAction(43,"_stopMotion",J.i18n.GT.o(J.i18n.GT.$("stop motion (requires {0})"),"set waitForMoveTo FALSE")),JV.ActionManager.newAction(44,"_swipe",J.i18n.GT.$("spin model (swipe and release button and stop motion simultaneously)")),JV.ActionManager.newAction(45,"_translate",J.i18n.GT.$("translate")),JV.ActionManager.newAction(46,"_wheelZoom",J.i18n.GT.$("zoom")))});b.getActionName=c(b,"getActionName",function(a){return aa||a>=JV.ActionManager.pickingModeNames.length?"off":JV.ActionManager.pickingModeNames[a]},"~N");b.getPickingMode=c(b,"getPickingMode",function(a){for(var d=JV.ActionManager.pickingModeNames.length;0<=--d;)if(a.equalsIgnoreCase(JV.ActionManager.pickingModeNames[d]))return 38== +d&&(d=6),d;return-1},"~S");b.getPickingStyleName=c(b,"getPickingStyleName",function(a){return 0>a||a>=JV.ActionManager.pickingStyleNames.length?"toggle":JV.ActionManager.pickingStyleNames[a]},"~N");b.getPickingStyleIndex=c(b,"getPickingStyleIndex",function(a){for(var d=JV.ActionManager.pickingStyleNames.length;0<=--d;)if(a.equalsIgnoreCase(JV.ActionManager.pickingStyleNames[d]))return d;return-1},"~S");c(b,"getAtomPickingMode",function(){return this.apm});c(b,"setPickingMode",function(a){var d=!1; +switch(a){case -1:d=!0;this.bondPickingMode=35;a=1;this.vwr.setStringProperty("pickingStyle","toggle");this.vwr.setBooleanProperty("bondPicking",!1);break;case 34:case 33:case 8:this.vwr.getModelkit(!1);case 35:this.vwr.setBooleanProperty("bondPicking",!0);this.bondPickingMode=a;this.resetMeasurement();return}d=(new Boolean(d|this.apm!=a)).valueOf();this.apm=a;d&&this.resetMeasurement()},"~N");c(b,"getPickingState",function(){var a=";set modelkitMode "+this.vwr.getBoolean(603983903)+";set picking "+ +JV.ActionManager.getPickingModeName(this.apm);32==this.apm&&(a+="_"+this.vwr.getModelkitPropertySafely("atomtype"));a+=";";0!=this.bondPickingMode&&(a+="set picking "+JV.ActionManager.getPickingModeName(this.bondPickingMode));33==this.bondPickingMode&&(a+="_"+this.vwr.getModelkitPropertySafely("bondtype"));return a+";"});c(b,"getPickingStyle",function(){return this.pickingStyle});c(b,"setPickingStyle",function(a){this.pickingStyle=a;4<=a?(this.pickingStyleMeasure=a,this.resetMeasurement()):(3>a&& +(this.rootPickingStyle=a),this.pickingStyleSelect=a);this.rubberbandSelectionMode=!1;switch(this.pickingStyleSelect){case 2:this.b.name.equals("extendedSelect")||this.setBinding(null==this.pfaatBinding?this.pfaatBinding=JV.binding.Binding.newBinding(this.vwr,"Pfaat"):this.pfaatBinding);break;case 3:this.b.name.equals("drag")||this.setBinding(null==this.dragBinding?this.dragBinding=JV.binding.Binding.newBinding(this.vwr,"Drag"):this.dragBinding);this.rubberbandSelectionMode=!0;break;case 1:this.b.name.equals("selectOrToggle")|| +this.setBinding(null==this.rasmolBinding?this.rasmolBinding=JV.binding.Binding.newBinding(this.vwr,"Rasmol"):this.rasmolBinding);break;default:this.b!==this.jmolBinding&&this.setBinding(this.jmolBinding)}this.b.name.equals("drag")||(this.predragBinding=this.b)},"~N");c(b,"setGestureSwipeFactor",function(a){this.gestureSwipeFactor=a},"~N");c(b,"setMouseDragFactor",function(a){this.mouseDragFactor=a},"~N");c(b,"setMouseWheelFactor",function(a){this.mouseWheelFactor=a},"~N");c(b,"setCurrent",function(a, +d,b,c){this.vwr.hoverOff();this.current.set(a,d,b,c)},"~N,~N,~N,~N");c(b,"getCurrentX",function(){return this.current.x});c(b,"getCurrentY",function(){return this.current.y});c(b,"setMouseMode",function(){this.drawMode=this.labelMode=!1;this.dragSelectedMode=this.vwr.getDragSelected();this.measuresEnabled=!this.dragSelectedMode;if(!this.dragSelectedMode)switch(this.apm){default:return;case 32:this.measuresEnabled=!this.vwr.getModelkit(!1).isPickAtomAssignCharge();return;case 4:this.drawMode=!0;this.measuresEnabled= +!1;break;case 2:this.labelMode=!0;this.measuresEnabled=!1;break;case 9:this.measuresEnabled=!1;break;case 19:case 22:case 20:case 21:this.measuresEnabled=!1;return}this.exitMeasurementMode(null)});c(b,"clearMouseInfo",function(){this.pressedCount=this.clickedCount=0;this.dragGesture.setAction(0,0);this.exitMeasurementMode(null)});c(b,"setDragAtomIndex",function(a){this.dragAtomIndex=a;this.setAtomsPicked(JU.BSUtil.newAndSetBit(a),"Label picked for atomIndex = "+a)},"~N");c(b,"isMTClient",function(){return this.isMultiTouchClient}); +c(b,"isMTServer",function(){return this.isMultiTouchServer});c(b,"dispose",function(){this.clear()});c(b,"clear",function(){this.startHoverWatcher(!1);null!=this.predragBinding&&(this.b=this.predragBinding);this.vwr.setPickingStyle(null,this.rootPickingStyle);this.isAltKeyReleased=!0});c(b,"startHoverWatcher",function(a){if(!this.vwr.isPreviewOnly)try{a?null==this.hoverWatcherThread&&(this.current.time=-1,this.hoverWatcherThread=new J.thread.HoverWatcherThread(this,this.current,this.moved,this.vwr)): +null!=this.hoverWatcherThread&&(this.current.time=-1,this.hoverWatcherThread.interrupt(),this.hoverWatcherThread=null)}catch(d){if(!E(d,Exception))throw d;}},"~B");c(b,"setModeMouse",function(a){-1==a&&this.startHoverWatcher(!1)},"~N");f(b,"keyPressed",function(a,d){if(this.keyProcessing)return!1;this.keyProcessing=!0;switch(a){case 18:this.dragSelectedMode&&this.isAltKeyReleased&&this.vwr.moveSelectedXY(-2147483648,0,d);this.isAltKeyReleased=!1;this.moved.modifiers|=8;break;case 16:this.moved.keybuf= +0;this.dragged.modifiers|=1;this.moved.modifiers|=1;break;case 17:this.moved.modifiers|=2;break;case 27:this.vwr.hoverOff();this.exitMeasurementMode("escape");break;default:this.vwr.hoverOff()}var b=8464|this.moved.modifiers;!this.labelMode&&!this.b.isUserAction(b)&&this.checkMotionRotateZoom(b,this.current.x,0,0,!1);if(this.vwr.getBoolean(603979889))switch(a){case 38:case 40:case 37:case 39:case 32:case 46:this.vwr.navigate(a,d)}this.keyProcessing=!1;return!0},"~N,~N");f(b,"keyTyped",function(){return!1}, +"~N,~N");f(b,"keyReleased",function(a){switch(a){case 18:this.moved.modifiers&=-9;this.dragSelectedMode&&this.vwr.moveSelectedXY(2147483647,0,this.moved.modifiers);this.isAltKeyReleased=!0;break;case 16:this.moved.modifiers&=-2;0d||(1==this.dragGesture.getPointCount()?this.vwr.undoMoveActionClear(d,2,!0):this.vwr.moveSelected(2147483647,0,-2147483648,-2147483648,-2147483648,null,null,null,!1,!1,k),this.dragSelected(a,c,e,!1));else{if(this.isDrawOrLabelAction(a)&&(this.setMotion(13,!0),this.vwr.checkObjectDragged(this.dragged.x,this.dragged.y, +d,b,a)))return;if(this.checkMotionRotateZoom(a,d,c,e,!0))this.vwr.tm.slabEnabled&&this.bnd(a,[39])?this.vwr.slabDepthByPixels(e):this.vwr.zoomBy(e);else if(this.bnd(a,[25]))this.vwr.rotateXYBy(this.getDegrees(c,!0),this.getDegrees(e,!1));else if(this.bnd(a,[29]))0==c&&1this.dragAtomIndex?this.exitMeasurementMode(null): +34==this.bondPickingMode?(this.vwr.setModelkitPropertySafely("rotateBond",Integer.$valueOf(this.dragAtomIndex)),this.exitMeasurementMode(null)):this.assignNew(-1);else if(this.dragAtomIndex=-1,this.mkBondPressed=!1,this.isRubberBandSelect(this.dragAction)&&this.selectRb(this.clickAction),this.rubberbandSelectionMode=this.b.name.equals("drag"),this.rectRubber.x=2147483647,c&&this.vwr.notifyMouseClicked(a,d,JV.binding.Binding.getMouseAction(this.pressedCount,0,5),5),this.isDrawOrLabelAction(this.dragAction))this.vwr.checkObjectDragged(2147483647, +0,a,d,this.dragAction);else if(this.haveSelection&&(this.dragSelectedMode&&this.bnd(this.dragAction,[13]))&&this.vwr.moveSelectedXY(2147483647,0,this.dragged.modifiers),(!c||!this.checkUserAction(this.pressAction,a,d,0,0,b,5))&&this.vwr.getBoolean(603979780)&&this.bnd(this.dragAction,[44]))a=this.getExitRate(),0k&&this.reset()}}}},"~N,~N,~N,~N");c(b,"doPopup",function(a,d){this.vwr.popupMenu(a, +d,this.vwr.isModelKitOpen()?"m":"j")},"~N,~N");c(b,"pickLabel",function(a){var d=this.vwr.ms.at[a].atomPropertyString(this.vwr,1825200146);2==this.pressedCount?(d=this.vwr.apiPlatform.prompt("Set label for atomIndex="+a,d,null,!1),null!=d&&(this.vwr.shm.setAtomLabel(d,a),this.vwr.refresh(1,"label atom"))):this.setAtomsPicked(JU.BSUtil.newAndSetBit(a),"Label picked for atomIndex = "+a+": "+d)},"~N");c(b,"checkUserAction",function(a,d,b,c,e,g,j){if(!this.b.isUserAction(a))return!1;for(var k=!1,f,s= +this.b.getBindings(),m=a+"\t",p,n=s.keySet().iterator();n.hasNext()&&((p=n.next())||1);)if(0==p.indexOf(m)&&JU.AU.isAS(f=s.get(p))){var y=f[1],r=null;if(0<=y.indexOf("_ATOM")){var u=this.findNearestAtom(d,b,null,!0),y=JU.PT.rep(y,"_ATOM","({"+(0<=u?""+u:"")+"})");0<=u&&(y=JU.PT.rep(y,"_POINT",JU.Escape.eP(this.vwr.ms.at[u])))}if(!this.drawMode&&(0<=y.indexOf("_POINT")||0<=y.indexOf("_OBJECT")||0<=y.indexOf("_BOND"))){u=this.vwr.checkObjectClicked(d,b,a);if(null!=u&&null!=(r=u.get("pt")))u.get("type").equals("bond")&& +(y=JU.PT.rep(y,"_BOND","[{"+u.get("index")+"}]")),y=JU.PT.rep(y,"_POINT",JU.Escape.eP(r)),y=JU.PT.rep(y,"_OBJECT",JU.Escape.escapeMap(u));y=JU.PT.rep(y,"_BOND","[{}]");y=JU.PT.rep(y,"_OBJECT","{}")}y=JU.PT.rep(y,"_POINT","{}");y=JU.PT.rep(y,"_ACTION",""+a);y=JU.PT.rep(y,"_X",""+d);y=JU.PT.rep(y,"_Y",""+(this.vwr.getScreenHeight()-b));y=JU.PT.rep(y,"_DELTAX",""+c);y=JU.PT.rep(y,"_DELTAY",""+e);y=JU.PT.rep(y,"_TIME",""+g);y=JU.PT.rep(y,"_MODE",""+j);y.startsWith("+:")&&(k=!0,y=y.substring(2));this.vwr.evalStringQuiet(y)}return!k}, +"~N,~N,~N,~N,~N,~N,~N");c(b,"checkMotionRotateZoom",function(a,d,b,c,e){d=this.bnd(a,[40])&&this.isZoomArea(this.pressed.x);var g=this.bnd(a,[25]),j=this.bnd(a,[29]);if(!d&&!g&&!j)return!1;a=(b=j&&(0==b||Math.abs(c)>5*Math.abs(b)))||this.isZoomArea(this.moved.x)||this.bnd(a,[46])?8:g||j?13:this.bnd(a,[1])?12:0;this.setMotion(a,e);return b||d},"~N,~N,~N,~N,~B");c(b,"getExitRate",function(){var a=this.dragGesture.getTimeDifference(2);return this.isMultiTouch?8098*this.vwr.getScreenWidth()* +(this.vwr.tm.stereoDoubleFull||this.vwr.tm.stereoDoubleDTI?2:1)/100},"~N");c(b,"getPoint",function(a){var d=new JU.Point3fi;d.setT(a.get("pt"));d.mi=a.get("modelIndex").intValue();return d},"java.util.Map");c(b,"findNearestAtom",function(a,d,b,c){a=this.drawMode||null!=b?-1:this.vwr.findNearestAtomIndexMovable(a,d,!1);return 0<=a&&(c||null==this.mp)&&!this.vwr.slm.isInSelectionSubset(a)?-1:a},"~N,~N,JU.Point3fi,~B");c(b,"isSelectAction",function(a){return this.bnd(a,[17])||!this.drawMode&&!this.labelMode&& +1==this.apm&&this.bnd(a,[1])||this.dragSelectedMode&&this.bnd(this.dragAction,[27,13])||this.bnd(a,[22,35,32,34,36,30])},"~N");c(b,"enterMeasurementMode",function(a){this.vwr.setPicked(a,!0);this.vwr.setCursor(1);this.vwr.setPendingMeasurement(this.mp=this.getMP());this.measurementQueued=this.mp},"~N");c(b,"getMP",function(){return J.api.Interface.getInterface("JM.MeasurementPending",this.vwr,"mouse").set(this.vwr.ms)});c(b,"addToMeasurement",function(a,d,b){if(-1==a&&null==d||null==this.mp)return this.exitMeasurementMode(null), +0;var c=this.mp.count;-2147483648!=this.mp.traceX&&2==c&&this.mp.setCount(c=1);return 4==c&&!b?c:this.mp.addPoint(a,d,!0)},"~N,JU.Point3fi,~B");c(b,"resetMeasurement",function(){this.exitMeasurementMode(null);this.measurementQueued=this.getMP()});c(b,"exitMeasurementMode",function(a){null!=this.mp&&(this.vwr.setPendingMeasurement(this.mp=null),this.vwr.setCursor(0),null!=a&&this.vwr.refresh(3,a))},"~S");c(b,"getSequence",function(){var a=this.measurementQueued.getAtomIndex(1),d=this.measurementQueued.getAtomIndex(2); +if(!(0>a||0>d))try{var b=this.vwr.getSmilesOpt(null,a,d,1048576,null);this.vwr.setStatusMeasuring("measureSequence",-2,b,0)}catch(c){if(E(c,Exception))JU.Logger.error(c.toString());else throw c;}});c(b,"minimize",function(a){var d=this.dragAtomIndex;a&&(this.dragAtomIndex=-1,this.mkBondPressed=!1);this.vwr.dragMinimizeAtom(d)},"~B");c(b,"queueAtom",function(a,d){var b=this.measurementQueued.addPoint(a,d,!0);0<=a&&this.vwr.setStatusAtomPicked(a,"Atom #"+b+":"+this.vwr.getAtomInfo(a),null,!1);return b}, +"~N,JU.Point3fi");c(b,"setMotion",function(a,d){switch(this.vwr.currentCursor){case 3:break;default:this.vwr.setCursor(a)}d&&this.vwr.setInMotion(!0)},"~N,~B");c(b,"zoomByFactor",function(a,d,b){0!=a&&(this.setMotion(8,!0),this.vwr.zoomByFactor(Math.pow(this.mouseWheelFactor,a),d,b),this.moved.setCurrent(this.current,0),this.vwr.setInMotion(!0),this.zoomTrigger=!0,this.startHoverWatcher(!0))},"~N,~N,~N");c(b,"runScript",function(a){this.vwr.evalStringGUI(a)},"~S");c(b,"atomOrPointPicked",function(a, +d){if(0>a){this.resetMeasurement();if(this.bnd(this.clickAction,[33])){this.runScript("select none");return}if(5!=this.apm&&6!=this.apm)return}var b=2;switch(this.apm){case 28:case 29:return;case 0:return;case 25:case 24:case 8:var b=8==this.apm,c=25==this.apm;if(!this.bnd(this.clickAction,[b?5:3]))return;if(null==this.measurementQueued||0==this.measurementQueued.count||2b)this.resetMeasurement(),this.enterMeasurementMode(a);this.addToMeasurement(a,d,!0);this.queueAtom(a,d);c=this.measurementQueued.count; +1==c&&this.vwr.setPicked(a,!0);if(ca?this.vwr.getModelkit(!1).handleAssignNew(this.pressed,this.dragged,this.mp,this.dragAtomIndex,a)||this.exitMeasurementMode("bond dropped"): +this.vwr.getModelkit(!1).handleAssignNew(this.current,this.current,null,this.dragAtomIndex,a);this.exitMeasurementMode(null)},"~N");c(b,"bondPicked",function(a){switch(this.bondPickingMode){case 33:this.vwr.undoMoveActionClear(-1,4146,!0);this.vwr.setModelkitPropertySafely("assignBond",Integer.$valueOf(a));break;case 8:this.vwr.deleteBonds(JU.BSUtil.newAndSetBit(a))}},"~N");c(b,"checkTwoAtomAction",function(a,d){var b=5==this.apm,c=6==this.apm;if(b||c)if(this.vwr.tm.spinOn||this.vwr.tm.navOn||null!= +this.vwr.getPendingMeasurement())this.resetMeasurement(),this.vwr.tm.spinOn&&this.runScript("spin off");else{2<=this.measurementQueued.count&&this.resetMeasurement();var e=this.measurementQueued.count;if(1==e)if(null==a){if(this.measurementQueued.getAtomIndex(1)==d)return}else if(0==this.measurementQueued.getAtom(1).distance(a))return;if(b||c){if(0<=d||null!=a)e=this.queueAtom(d,a);2>e?b?this.vwr.scriptStatus(1==e?J.i18n.GT.$("pick one more atom in order to spin the model around an axis"):J.i18n.GT.$("pick two atoms in order to spin the model around an axis")): +this.vwr.scriptStatus(1==e?J.i18n.GT.$("pick one more atom in order to display the symmetry relationship"):J.i18n.GT.$("pick two atoms in order to display the symmetry relationship between them")):(c=this.measurementQueued.getMeasurementScript(" ",!1),this.resetMeasurement(),b?this.runScript("spin"+c+" "+this.vwr.getInt(553648157)):this.runScript("draw symop "+c+";print 'all:';show symop "+c))}}},"JU.Point3fi,~N");c(b,"reset",function(){this.runScript("!reset")});c(b,"selectAtoms",function(a){if(!(null!= +this.mp||this.selectionWorking)){this.selectionWorking=!0;var d=this.rubberbandSelectionMode||this.bnd(this.clickAction,[35])?"selected and not ("+a+") or (not selected) and ":this.bnd(this.clickAction,[32])?"selected and not ":this.bnd(this.clickAction,[34])?"selected or ":0==this.clickAction||this.bnd(this.clickAction,[36])?"selected tog ":this.bnd(this.clickAction,[30])?"":null;if(null!=d)try{var b=this.vwr.getAtomBitSetEval(null,d+("("+a+")"));this.setAtomsPicked(b,"selected: "+JU.Escape.eBS(b)); +this.vwr.refresh(3,"selections set")}catch(c){if(!E(c,Exception))throw c;}this.selectionWorking=!1}},"~S");c(b,"setAtomsPicked",function(a,d){this.vwr.selectStatus(a,!1,0,!1,!0);this.vwr.setStatusAtomPicked(-1,d,null,!1)},"JU.BS,~S");c(b,"selectRb",function(a){var d=this.vwr.ms.findAtomsInRectangle(this.rectRubber);0=a&&this.runScript("!measure "+this.mp.getMeasurementScript(" ",!0));this.exitMeasurementMode(null)}});c(b,"zoomTo",function(a){this.runScript("zoomTo (atomindex="+a+")");this.vwr.setStatusAtomPicked(a,null,null,!1)},"~N");c(b,"userActionEnabled",function(a){return this.vwr.isFunction(JV.ActionManager.getActionName(a).toLowerCase())}, +"~N");c(b,"userAction",function(a,d){if(!this.userActionEnabled(a))return!1;var b=JS.ScriptEval.runUserAction(JV.ActionManager.getActionName(a),d,this.vwr);return!JS.SV.vF.equals(b)},"~N,~A");b.actionInfo=Array(47);b.actionNames=Array(47);JV.ActionManager.pickingModeNames="off identify label center draw spin symmetry deleteatom deletebond atom group chain molecule polymer structure site model element measure distance angle torsion sequence navigate connect struts dragselected dragmolecule dragatom dragminimize dragminimizemolecule invertstereo assignatom assignbond rotatebond identifybond dragligand dragmodel symop".$plit(" "); +JV.ActionManager.pickingStyleNames="toggle selectOrToggle extendedSelect drag measure measureoff".$plit(" ");b=r(function(){this.time=this.y=this.x=this.index=0;u(this,arguments)},JV,"MotionPoint",null);c(b,"set",function(a,d,b,c){this.index=a;this.x=d;this.y=b;this.time=c},"~N,~N,~N,~N");f(b,"toString",function(){return"[x = "+this.x+" y = "+this.y+" time = "+this.time+" ]"});b=r(function(){this.action=0;this.nodes=null;this.time0=this.ptNext=0;this.vwr=null;u(this,arguments)},JV,"Gesture",null); +x(b,function(a,d){this.vwr=d;this.nodes=Array(a);for(var b=0;ba)return 0;var d=this.getNode(this.ptNext- +1);a=this.getNode(this.ptNext-a);return d.time-a.time},"~N");c(b,"getSpeedPixelsPerMillisecond",function(a,d){a=this.getPointCount2(a,d);if(2>a)return 0;var b=this.getNode(this.ptNext-1-d),c=this.getNode(this.ptNext-a-d),e=360*((b.x-c.x)/this.vwr.getScreenWidth()),g=360*((b.y-c.y)/this.vwr.getScreenHeight());return Math.sqrt(e*e+g*g)/(b.time-c.time)},"~N,~N");c(b,"getDX",function(a,d){a=this.getPointCount2(a,d);if(2>a)return 0;var b=this.getNode(this.ptNext-1-d),c=this.getNode(this.ptNext-a-d);return b.x- +c.x},"~N,~N");c(b,"getDY",function(a,d){a=this.getPointCount2(a,d);if(2>a)return 0;var b=this.getNode(this.ptNext-1-d),c=this.getNode(this.ptNext-a-d);return b.y-c.y},"~N,~N");c(b,"getPointCount",function(){return this.ptNext});c(b,"getPointCount2",function(a,d){a>this.nodes.length-d&&(a=this.nodes.length-d);for(var b=a+1;0<=--b&&!(0<=this.getNode(this.ptNext-b-d).index););return b},"~N,~N");c(b,"getNode",function(a){return this.nodes[(a+this.nodes.length+this.nodes.length)%this.nodes.length]},"~N"); +f(b,"toString",function(){return 0==this.nodes.length?""+this:JV.binding.Binding.getMouseActionName(this.action,!1)+" nPoints = "+this.ptNext+" "+this.nodes[0]})});n("JV");A(["JU.BS"],"JV.AnimationManager",["J.api.Interface","JU.BSUtil"],function(){var b=r(function(){this.vwr=this.animationThread=null;this.animationOn=!1;this.lastFrameDelayMs=this.firstFrameDelayMs=this.animationFps=0;this.bsVisibleModels=null;this.animationReplayMode=1073742070;this.animationFrames=this.bsDisplay=null;this.animationPaused= +this.isMovie=!1;this.morphCount=this.caf=this.cmi=0;this.currentDirection=this.animationDirection=1;this.frameStep=this.lastFrameIndex=this.firstFrameIndex=0;this.backgroundModelIndex=-1;this.firstFrameDelay=this.currentMorphModel=0;this.lastFrameDelay=1;this.intAnimThread=this.lastModelPainted=this.lastFramePainted=0;this.cai=-1;u(this,arguments)},JV,"AnimationManager",null);N(b,function(){this.bsVisibleModels=new JU.BS});x(b,function(a){this.vwr=a},"JV.Viewer");c(b,"setAnimationOn",function(a){a!= +this.animationOn&&(!a||this.vwr.headless?this.stopThread(!1):(this.vwr.tm.spinOn||this.vwr.refresh(3,"Anim:setAnimationOn"),this.setAnimationRange(-1,-1),this.resumeAnimation()))},"~B");c(b,"stopThread",function(a){var d=!1;null!=this.animationThread&&(this.animationThread.interrupt(),this.animationThread=null,d=!0);this.animationPaused=a;d&&!this.vwr.tm.spinOn&&this.vwr.refresh(3,"Viewer:setAnimationOff");this.animation(!1);this.vwr.setStatusFrameChanged(!1,!1)},"~B");c(b,"setAnimationNext",function(){return this.setAnimationRelative(this.animationDirection)}); +c(b,"currentIsLast",function(){return this.isMovie?this.lastFramePainted==this.caf:this.lastModelPainted==this.cmi});c(b,"currentFrameIs",function(a){var d=this.cmi;return 0==this.morphCount?d==a:0.001>Math.abs(this.currentMorphModel-a)},"~N");c(b,"clear",function(){this.setMovie(null);this.initializePointers(0);this.setAnimationOn(!1);this.setModel(0,!0);this.currentDirection=1;this.cai=-1;this.setAnimationDirection(1);this.setAnimationFps(10);this.setAnimationReplayMode(1073742070,0,0);this.initializePointers(0)}); +c(b,"getModelSpecial",function(a){switch(a){case -1:if(null!=this.animationFrames)return"1";a=this.firstFrameIndex;break;case 0:if(0Math.abs(d-a)?a=d:0.999b||0>d)||this.vwr.ms.morphTrajectories(d,b,a)}},"~N");c(b,"setModel",function(a,d){0>a&&this.stopThread(!1);var b=this.cmi,c=this.vwr.ms,e=null==c?0:c.mc;if(1==e)this.cmi=a=0;else if(0>a||a>=e)a=-1;var c=null,g=!1;if(this.cmi!=a){if(0c.indexOf("plot")&&0>c.indexOf("ramachandran")&&0>c.indexOf(" property "))&&this.vwr.restoreModelRotation(b))}this.setViewer(d)}, +"~N,~B");c(b,"setBackgroundModelIndex",function(a){var d=this.vwr.ms;if(null==d||0>a||a>=d.mc)a=-1;this.backgroundModelIndex=a;0<=a&&this.vwr.ms.setTrajectory(a);this.vwr.setTainted(!0);this.setFrameRangeVisible()},"~N");c(b,"initializePointers",function(a){this.firstFrameIndex=0;this.lastFrameIndex=(0==a?0:this.getFrameCount())-1;this.frameStep=a;this.vwr.setFrameVariables()},"~N");c(b,"setAnimationDirection",function(a){this.animationDirection=a},"~N");c(b,"setAnimationFps",function(a){1>a&&(a= +1);50a&&(a=0);0>d&&(d=b);a>=b&&(a=b-1);d>=b&&(d=b-1);this.currentMorphModel=this.firstFrameIndex= +a;this.lastFrameIndex=d;this.frameStep=dthis.cmi&&this.setAnimationRange(this.firstFrameIndex,this.lastFrameIndex);1>=this.getFrameCount()?this.animation(!1): +(this.animation(!0),this.animationPaused=!1,null==this.animationThread&&(this.intAnimThread++,this.animationThread=J.api.Interface.getOption("thread.AnimationThread",this.vwr,"script"),this.animationThread.setManager(this,this.vwr,D(-1,[this.firstFrameIndex,this.lastFrameIndex,this.intAnimThread])),this.animationThread.start()))});c(b,"setAnimationLast",function(){this.setFrame(0this.lastFrameIndex||0>this.firstFrameIndex||this.lastFrameIndex>=a||this.firstFrameIndex>=a)return 0;for(var b=Math.min(this.firstFrameIndex,this.lastFrameIndex),a=Math.max(this.firstFrameIndex, +this.lastFrameIndex),c=1*(a-b)/this.animationFps+this.firstFrameDelay+this.lastFrameDelay;b<=a;b++)c+=this.vwr.ms.getFrameDelayMs(this.modelIndexForFrame(b))/1E3;return c});c(b,"setMovie",function(a){if(this.isMovie=null!=a&&null==a.get("scripts")){this.animationFrames=a.get("frames");if(null==this.animationFrames||0==this.animationFrames.length)this.isMovie=!1;else if(this.caf=a.get("currentFrame").intValue(),0>this.caf||this.caf>=this.animationFrames.length)this.caf=0;this.setFrame(this.caf)}this.isMovie|| +(this.animationFrames=null);this.vwr.setBooleanProperty("_ismovie",this.isMovie);this.bsDisplay=null;this.currentMorphModel=this.morphCount=0;this.vwr.setFrameVariables()},"java.util.Map");c(b,"modelIndexForFrame",function(a){return this.isMovie?this.animationFrames[a]-1:a},"~N");c(b,"getFrameCount",function(){return this.isMovie?this.animationFrames.length:this.vwr.ms.mc});c(b,"setFrame",function(a){try{if(this.isMovie){var b=this.modelIndexForFrame(a);this.caf=a;a=b}else this.caf=a;this.setModel(a, +!0)}catch(c){if(!E(c,Exception))throw c;}},"~N");c(b,"getUnitCellAtomIndex",function(){return this.cai});c(b,"setUnitCellAtomIndex",function(a){this.cai=a},"~N");c(b,"setViewer",function(a){this.vwr.ms.setTrajectory(this.cmi);this.vwr.tm.setFrameOffset(this.cmi);-1==this.cmi&&a&&this.setBackgroundModelIndex(-1);this.vwr.setTainted(!0);a=this.setFrameRangeVisible();this.vwr.setStatusFrameChanged(!1,!1);this.vwr.g.selectAllModels||this.setSelectAllSubset(2>a)},"~B");c(b,"setSelectAllSubset",function(a){null!= +this.vwr.ms&&this.vwr.slm.setSelectionSubset(a?this.vwr.ms.getModelAtomBitSetIncludingDeleted(this.cmi,!0):this.vwr.ms.getModelAtomBitSetIncludingDeletedBs(this.bsVisibleModels))},"~B");c(b,"setFrameRangeVisible",function(){var a=0;this.bsVisibleModels.clearAll();0<=this.backgroundModelIndex&&(this.bsVisibleModels.set(this.backgroundModelIndex),a=1);if(0<=this.cmi)return this.bsVisibleModels.set(this.cmi),++a;if(0==this.frameStep)return a;for(var b=0,a=0,c=this.firstFrameIndex;c!=this.lastFrameIndex;c+= +this.frameStep){var q=this.modelIndexForFrame(c);this.vwr.ms.isJmolDataFrameForModel(q)||(this.bsVisibleModels.set(q),a++,b=c)}q=this.modelIndexForFrame(this.lastFrameIndex);if(this.firstFrameIndex==this.lastFrameIndex||!this.vwr.ms.isJmolDataFrameForModel(q)||0==a)this.bsVisibleModels.set(q),0==a&&(this.firstFrameIndex=this.lastFrameIndex),a=0;1==a&&0>this.cmi&&this.setFrame(b);return a});c(b,"animation",function(a){this.animationOn=a;this.vwr.setBooleanProperty("_animating",a)},"~B");c(b,"setAnimationRelative", +function(a){a=this.getFrameStep(a);var b=(this.isMovie?this.caf:this.cmi)+a,c=0,q=0,e;0this.morphCount){if(0>b||b>=this.getFrameCount())return!1; +this.setFrame(b);return!0}this.morph(q+1);return!0},"~N");c(b,"isNotInRange",function(a){var b=a-0.001;return b>this.firstFrameIndex&&b>this.lastFrameIndex||(b=a+0.001)>8},"~N");b.getMouseActionName=c(b,"getMouseActionName", +function(a,b){var c=new JU.SB;if(0==a)return"";var q=JV.binding.Binding.includes(a,8)&&!JV.binding.Binding.includes(a,16)&&!JV.binding.Binding.includes(a,4),e=" ".toCharArray();JV.binding.Binding.includes(a,2)&&(c.append("CTRL+"),e[5]="C");!q&&JV.binding.Binding.includes(a,8)&&(c.append("ALT+"),e[4]="A");JV.binding.Binding.includes(a,1)&&(c.append("SHIFT+"),e[3]="S");JV.binding.Binding.includes(a,16)?(e[2]="L",c.append("LEFT")):JV.binding.Binding.includes(a,4)?(e[2]="R",c.append("RIGHT")):q? +(e[2]="M",c.append("MIDDLE")):JV.binding.Binding.includes(a,32)&&(e[2]="W",c.append("WHEEL"));JV.binding.Binding.includes(a,512)&&(c.append("+double"),e[1]="2");JV.binding.Binding.includes(a,4096)?(c.append("+down"),e[0]="1"):JV.binding.Binding.includes(a,8192)?(c.append("+drag"),e[0]="2"):JV.binding.Binding.includes(a,16384)?(c.append("+up"),e[0]="3"):JV.binding.Binding.includes(a,32768)&&(c.append("+click"),e[0]="4");return b?String.instantialize(e)+":"+c.toString():c.toString()},"~N,~B");c(b,"getBindings", +function(){return this.bindings});c(b,"bindAction",function(a,b){this.addBinding(a+"\t"+b,D(-1,[a,b]))},"~N,~N");c(b,"bindName",function(a,b){this.addBinding(a+"\t",Boolean.TRUE);this.addBinding(a+"\t"+b,w(-1,[JV.binding.Binding.getMouseActionName(a,!1),b]))},"~N,~S");c(b,"unbindAction",function(a,b){0==a?this.unbindJmolAction(b):this.removeBinding(null,a+"\t"+b)},"~N,~N");c(b,"unbindName",function(a,b){null==b?this.unbindMouseAction(a):this.removeBinding(null,a+"\t"+b)},"~N,~S");c(b,"unbindJmolAction", +function(a){var b=this.bindings.keySet().iterator();for(a="\t"+a;b.hasNext();){var c=b.next();c.endsWith(a)&&this.removeBinding(b,c)}},"~N");c(b,"addBinding",function(a,b){JU.Logger.debugging&&JU.Logger.debug("adding binding "+a+"\t==\t"+JU.Escape.e(b));this.bindings.put(a,b)},"~S,~O");c(b,"removeBinding",function(a,b){JU.Logger.debugging&&JU.Logger.debug("removing binding "+b);null==a?this.bindings.remove(b):a.remove()},"java.util.Iterator,~S");c(b,"unbindUserAction",function(a){var b=this.bindings.keySet().iterator(); +for(a="\t"+a;b.hasNext();){var c=b.next();c.endsWith(a)&&this.removeBinding(b,c)}},"~S");c(b,"unbindMouseAction",function(a){var b=this.bindings.keySet().iterator();for(a+="\t";b.hasNext();){var c=b.next();c.startsWith(a)&&this.removeBinding(b,c)}},"~N");c(b,"isBound",function(a,b){return this.bindings.containsKey(a+"\t"+b)},"~N,~N");c(b,"isUserAction",function(a){return this.bindings.containsKey(a+"\t")},"~N");c(b,"getBindingInfo",function(a,b,c){var q=new JU.SB;c=null==c||c.equalsIgnoreCase("all")? +null:c.toLowerCase();for(var e=Array(a.length),g=new JU.Lst,j,k=this.bindings.values().iterator();k.hasNext()&&((j=k.next())||1);)if(!C(j,Boolean))if(JU.AU.isAS(j)){var f=j[0],s=j[1];(null==c||0<=c.indexOf("user")||0<=f.indexOf(c)||0<=s.indexOf(c))&&g.addLast(j)}else s=j,f=s[1],null==e[f]&&(e[f]=new JU.Lst),s=JV.binding.Binding.getMouseActionName(s[0],!0),(null==c||0<=(b[f]+";"+a[f]+";"+s).toLowerCase().indexOf(c))&&e[f].addLast(s);for(f=0;fe&&a.append(" ".substring(0,20-e));a.append("\t").append(q).appendC("\n")},"JU.SB,~A,~S,~S");b.includes= +c(b,"includes",function(a,b){return(a&b)==b},"~N,~N");b.newBinding=c(b,"newBinding",function(a,b){return J.api.Interface.getInterface("JV.binding."+b+"Binding",a,"script")},"JV.Viewer,~S")});n("JV.binding");A(["JV.binding.JmolBinding"],"JV.binding.DragBinding",null,function(){var b=G(JV.binding,"DragBinding",JV.binding.JmolBinding);x(b,function(){I(this,JV.binding.DragBinding,[]);this.set("drag")});f(b,"setSelectBindings",function(){this.bindAction(33040,30);this.bindAction(33041,35);this.bindAction(33048, +34);this.bindAction(33049,32);this.bindAction(4368,31);this.bindAction(8464,13);this.bindAction(33040,17)})});n("JV.binding");A(["JV.binding.Binding"],"JV.binding.JmolBinding",null,function(){var b=G(JV.binding,"JmolBinding",JV.binding.Binding);x(b,function(){I(this,JV.binding.JmolBinding,[]);this.set("toggle")});c(b,"set",function(a){this.name=a;this.setGeneralBindings();this.setSelectBindings()},"~S");c(b,"setSelectBindings",function(){this.bindAction(33296,30);this.bindAction(33040,36)});c(b,"setGeneralBindings", +function(){this.bindAction(8474,45);this.bindAction(8454,45);this.bindAction(8721,45);this.bindAction(8712,45);this.bindAction(8464,25);this.bindAction(8720,25);this.bindAction(8472,28);this.bindAction(8453,28);this.bindAction(8465,29);this.bindAction(8456,29);this.bindAction(288,46);this.bindAction(8464,40);this.bindAction(8464,16);this.bindAction(4370,23);this.bindAction(4356,23);this.bindAction(33040,2);this.bindAction(8467,38);this.bindAction(8723,6);this.bindAction(8475,39);this.bindAction(290, +46);this.bindAction(289,46);this.bindAction(291,46);this.bindAction(290,38);this.bindAction(289,6);this.bindAction(291,39);this.bindAction(8464,44);this.bindAction(8464,41);this.bindAction(8465,42);this.bindAction(8473,13);this.bindAction(8465,14);this.bindAction(8472,27);this.bindAction(8465,26);this.bindAction(8464,10);this.bindAction(8472,9);this.bindAction(8465,8);this.bindAction(33297,24);this.bindAction(33288,24);this.bindAction(33296,43);this.bindAction(8464,7);this.bindAction(8464,11);this.bindAction(8464, +12);this.bindAction(33040,17);this.bindAction(33040,22);this.bindAction(33040,19);this.bindAction(33040,20);this.bindAction(33296,37);this.bindAction(33040,18);this.bindAction(33043,21);this.bindAction(33040,4);this.bindAction(33040,5);this.bindAction(33040,3);this.bindAction(33040,0);this.bindAction(33043,1)})});n("JV");A(null,"JV.ColorManager","JU.AU J.c.PAL JU.C $.ColorEncoder $.Elements $.Logger JV.JC".split(" "),function(){var b=r(function(){this.colorData=this.altArgbsCpk=this.argbsCpk=this.g3d= +this.vwr=this.ce=null;this.isDefaultColorRasmol=!1;this.colixRubberband=22;this.colixBackgroundContrast=0;u(this,arguments)},JV,"ColorManager",null);x(b,function(a,b){this.vwr=a;this.ce=new JU.ColorEncoder(null,a);this.g3d=b;this.argbsCpk=J.c.PAL.argbsCpk;this.altArgbsCpk=JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk,0,-1)},"JV.Viewer,JU.GData");c(b,"setDefaultColors",function(a){a?(this.isDefaultColorRasmol=!0,this.argbsCpk=JU.AU.arrayCopyI(JU.ColorEncoder.getRasmolScale(),-1)):(this.isDefaultColorRasmol= +!1,this.argbsCpk=J.c.PAL.argbsCpk);this.altArgbsCpk=JU.AU.arrayCopyRangeI(JV.JC.altArgbsCpk,0,-1);this.ce.createColorScheme(a?"Rasmol=":"Jmol=",!0,!0);for(a=J.c.PAL.argbsCpk.length;0<=--a;)this.g3d.changeColixArgb(a,this.argbsCpk[a]);for(a=JV.JC.altArgbsCpk.length;0<=--a;)this.g3d.changeColixArgb(JU.Elements.elementNumberMax+a,this.altArgbsCpk[a])},"~B");c(b,"setRubberbandArgb",function(a){this.colixRubberband=0==a?0:JU.C.getColix(a)},"~N");c(b,"setColixBackgroundContrast",function(a){this.colixBackgroundContrast= +JU.C.getBgContrast(a)},"~N");c(b,"getColixBondPalette",function(a,b){switch(b){case 19:return this.ce.getColorIndexFromPalette(a.getEnergy(),-2.5,-0.5,7,!1)}return 10},"JM.Bond,~N");c(b,"getColixAtomPalette",function(a,b){var c=0,q;q=this.vwr.ms;switch(b){case 84:return null==this.colorData||a.i>=this.colorData.length||Float.isNaN(this.colorData[a.i])?12:this.ce.getColorIndex(this.colorData[a.i]);case 0:case 1:var c=this.argbsCpk,e=q=a.getAtomicAndIsotopeNumber();e>=JU.Elements.elementNumberMax&& +(q=JU.Elements.altElementIndexFromNumber(e),0q?0:256<=q?q-256:q)&31)%JU.ColorEncoder.argbsChainAtom.length,c=(a.isHetero()?JU.ColorEncoder.argbsChainHetero:JU.ColorEncoder.argbsChainAtom)[q]}return 0== +c?22:JU.C.getColix(c)},"JM.Atom,~N");c(b,"getArgbs",function(a){return this.vwr.getJBR().getArgbs(a)},"~N");c(b,"getJmolOrRasmolArgb",function(a,b){switch(b){case 1073741991:if(a>=JU.Elements.elementNumberMax)break;return this.ce.getArgbFromPalette(a,0,0,2);case 1073742116:if(a>=JU.Elements.elementNumberMax)break;return this.ce.getArgbFromPalette(a,0,0,3);default:return b}return JV.JC.altArgbsCpk[JU.Elements.altElementIndexFromNumber(a)]},"~N,~N");c(b,"getElementColix",function(a){var b=this.argbsCpk; +if(a>JU.Elements.elementNumberMax){var c=JU.Elements.altElementIndexFromNumber(a);0b);JU.Logger.debugging&&JU.Logger.debug('ColorManager: color "'+this.ce.getCurrentColorSchemeName()+'" range '+a+" "+b)},"~N,~N");c(b,"setPropertyColorScheme",function(a, +b,c){var q=0==a.length;q&&(a="=");var e=this.getPropertyColorRange();this.ce.currentPalette=this.ce.createColorScheme(a,!0,c);q||this.setPropertyColorRange(e[0],e[1]);this.ce.isTranslucent=b},"~S,~B,~B");c(b,"getColorSchemeList",function(a){a=null==a||0==a.length?this.ce.currentPalette:this.ce.createColorScheme(a,!0,!1);return JU.ColorEncoder.getColorSchemeList(this.ce.getColorSchemeArray(a))},"~S");c(b,"getColorEncoder",function(a){if(null==a||0==a.length)return this.ce;var b=new JU.ColorEncoder(this.ce, +this.vwr);b.currentPalette=b.createColorScheme(a,!1,!0);return 2147483647==b.currentPalette?null:b},"~S")});n("JV");A(["javajs.api.BytePoster","java.util.Hashtable"],"JV.FileManager","java.net.URL $.URLEncoder JU.AU $.Base64 $.LimitedLineReader $.Lst $.OC $.PT $.Rdr $.SB J.api.Interface J.io.FileReader JU.Escape $.Logger JV.JC $.JmolAsyncException $.Viewer".split(" "),function(){var b=r(function(){this.jzu=this.spartanDoc=this.vwr=null;this.pathForAllFiles="";this.nameAsGiven="zapped";this.lastFullPathName= +this.fullPathName=null;this.lastNameAsGiven="zapped";this.spardirCache=this.pngjCache=this.cache=this.appletProxy=this.appletDocumentBaseURL=this.lastFileType=this.fileName=null;u(this,arguments)},JV,"FileManager",null,javajs.api.BytePoster);N(b,function(){this.cache=new java.util.Hashtable});x(b,function(a){this.vwr=a;this.clear()},"JV.Viewer");c(b,"spartanUtil",function(){return null==this.spartanDoc?this.spartanDoc=J.api.Interface.getInterface("J.adapter.readers.spartan.SpartanUtil",this.vwr,"fm getSpartanUtil()").set(this): +this.spartanDoc});c(b,"getJzu",function(){return null==this.jzu?this.jzu=J.api.Interface.getOption("io.JmolUtil",this.vwr,"file"):this.jzu});c(b,"clear",function(){this.setFileInfo(w(-1,[this.vwr.getZapName()]));this.spardirCache=null});c(b,"setLoadState",function(a){this.vwr.getPreserveState()&&a.put("loadState",this.vwr.g.getLoadState(a))},"java.util.Map");c(b,"getPathForAllFiles",function(){return this.pathForAllFiles});c(b,"setPathForAllFiles",function(a){0e&&(a=this.vwr.resolveDatabaseFormat(a));!q.equals(a)&&(0>q.indexOf("/")&&JV.Viewer.hasDatabasePrefix(q))&&b.put("dbName",q);a.endsWith("%2D%")&&(q=b.get("filter"),b.put("filter",(null==q?"":q)+"2D"),a=a.substring(0,a.length-4));q=0<=e?a.substring(e+2):a;e=0<=e?a.substring(0,e):null;JU.Logger.info("\nFileManager.getAtomSetCollectionFromFile("+q+")"+(a.equals(q)?"":" //"+a));var g=this.getClassifiedName(q,!0);if(1==g.length)return g[0];a=g[0];g=g[1];b.put("fullPathName",(null== +e?"":e+"::")+JV.FileManager.fixDOSName(a));this.vwr.getBoolean(603979879)&&this.vwr.getBoolean(603979825)&&this.vwr.getChimeMessenger().update(a);b=new J.io.FileReader(this.vwr,g,a,q,e,null,b,c);b.run();return b.getAtomSetCollection()},"~S,java.util.Map,~B");c(b,"createAtomSetCollectionFromFiles",function(a,b,c){this.setLoadState(b);for(var q=Array(a.length),e=Array(a.length),g=Array(a.length),j=0;ja.toLowerCase().indexOf("password")&&JU.Logger.info("FileManager opening url "+a);l=this.vwr.apiPlatform.getURLContents(u,e,m,!1);n=null;if(C(l,"JU.SB")){a=l;if(g&&!JU.Rdr.isBase64(a))return JU.Rdr.getBR(a.toString());n=JU.Rdr.getBytesFromSB(a)}else JU.AU.isAB(l)&&(n=l);null!=n&&(l=JU.Rdr.getBIS(n))}else if(!j||null==(b=this.cacheGet(a,!0)))c&&JU.Logger.info("FileManager opening file "+a),l=this.vwr.apiPlatform.getBufferedFileInputStream(a);if("string"== +typeof l)return l}f=null==b?l:JU.Rdr.getBIS(b);q&&(f.close(),f=null);return f}catch(v){if(E(v,Exception))try{null!=f&&f.close()}catch(w){if(!E(w,"java.io.IOException"))throw w;}else throw v;}return""+v},"~S,~S,~B,~B,~A,~B,~B");b.getBufferedReaderForResource=c(b,"getBufferedReaderForResource",function(a,b,c,q){q=a.vwrOptions.get("codePath")+c+q;if(a.async){a=a.fm.cacheGet(q,!1);if(null==a)throw new JV.JmolAsyncException(q);return JU.Rdr.getBufferedReader(JU.Rdr.getBIS(a),null)}return a.fm.getBufferedReaderOrErrorMessageFromName(q, +w(-1,[null,null]),!1,!0)},"JV.Viewer,~O,~S,~S");c(b,"urlEncode",function(a){try{return java.net.URLEncoder.encode(a,"utf-8")}catch(b){if(E(b,"java.io.UnsupportedEncodingException"))return a;throw b;}},"~S");c(b,"getFullPathNameOrError",function(a,b,c){var q=this.getClassifiedName(JV.JC.fixProtocol(a),!0);if(null==q||null==q[0]||2>q.length)return w(-1,[null,"cannot read file name: "+a]);a=q[0];q=JV.FileManager.fixDOSName(q[0]);a=JU.Rdr.getZipRoot(a);b=this.getBufferedInputStreamOrErrorMessageFromName(a, +q,!1,!b,null,!1,!b);c[0]=q;"string"==typeof b&&(c[1]=b);return b},"~S,~B,~A");c(b,"getBufferedReaderOrErrorMessageFromName",function(a,b,c,q){a=JV.JC.fixProtocol(a);var e=this.cacheGet(a,!1),g=JU.AU.isAB(e),j=g?e:null;if(a.startsWith("cache://")){if(null==e)return"cannot read "+a;if(g)j=e;else return JU.Rdr.getBR(e)}e=this.getClassifiedName(a,!0);if(null==e)return"cannot read file name: "+a;null!=b&&(b[0]=JV.FileManager.fixDOSName(e[0]));return this.getUnzippedReaderOrStreamFromName(e[0],j,!1,c,!1, +q,null)},"~S,~A,~B,~B");c(b,"getUnzippedReaderOrStreamFromName",function(a,b,c,q,e,g,j){if(g&&null==b){var f=a.endsWith(".spt")?w(-1,[null,null,null]):0>a.indexOf(".spardir")?null:this.spartanUtil().getFileList(a,e);if(null!=f)return f}a=JV.JC.fixProtocol(a);null==b&&(null!=(b=this.getCachedPngjBytes(a))&&null!=j)&&j.put("sourcePNGJ",Boolean.TRUE);g=a=a.$replace("#_DOCACHE_","");e=null;0<=a.indexOf("|")&&(e=JU.PT.split(a.$replace("\\","/"),"|"),null==b&&JU.Logger.info("FileManager opening zip "+a), +a=e[0]);a=null==b?this.getBufferedInputStreamOrErrorMessageFromName(a,g,!0,!1,null,!q,!0):JU.AU.isAB(b)?JU.Rdr.getBIS(b):b;try{if("string"==typeof a||C(a,"java.io.BufferedReader"))return a;JU.Rdr.isGzipS(a)?a=JU.Rdr.getUnzippedInputStream(this.vwr.getJzt(),a):JU.Rdr.isBZip2S(a)&&(a=JU.Rdr.getUnzippedInputStreamBZip2(this.vwr.getJzt(),a));if(q&&null==e)return a;if(JU.Rdr.isCompoundDocumentS(a)){var l=J.api.Interface.getInterface("JU.CompoundDocument",this.vwr,"file");l.setDocStream(this.vwr.getJzt(), +a);var s=l.getAllDataFiles("Molecule","Input").toString();return q?JU.Rdr.getBIS(s.getBytes()):JU.Rdr.getBR(s)}if(JU.Rdr.isMessagePackS(a)||JU.Rdr.isPickleS(a))return a;a=JU.Rdr.getPngZipStream(a,!0);f=null;if(JU.Rdr.isZipS(a)){if(c)return this.vwr.getJzt().newZipInputStream(a);f=this.vwr.getJzt().getZipFileDirectory(a,e,1,q)}else if(JU.Rdr.isTar(a))f=this.vwr.getJzt().getZipFileDirectory(a,e,1,q);else if(JU.Rdr.isBinary(a,32))return a;if(null!=f){if(!C(f,"java.io.BufferedInputStream"))return"string"== +typeof f?JU.Rdr.getBR(f):f;a=JU.Rdr.getUnzippedInputStream(this.vwr.getJzt(),f)}return q?a:JU.Rdr.getBufferedReader(a,null)}catch(m){if(E(m,Exception))return m.toString();throw m;}},"~S,~O,~B,~B,~B,~B,java.util.Map");c(b,"getZipDirectory",function(a,b,c){a=this.getBufferedInputStreamOrErrorMessageFromName(a,a,!1,!1,null,!1,c);return this.vwr.getJzt().getZipDirectoryAndClose(a,b?"JmolManifest":null)},"~S,~B,~B");c(b,"getFileAsBytes",function(a,b){if(null==a)return null;var c=a,q=null;0<=a.indexOf("|")&& +(q=JU.PT.split(a,"|"),a=q[0]);var e=null!=q?null:this.getPngjOrDroppedBytes(c,a);if(null==e){c=this.getBufferedInputStreamOrErrorMessageFromName(a,c,!1,!1,null,!1,!0);if("string"==typeof c)return"Error:"+c;try{e=null!=b||null==q||1>=q.length||!JU.Rdr.isZipS(c)&&!JU.Rdr.isPngZipStream(c)&&!JU.Rdr.isTar(c)?JU.Rdr.getStreamAsBytes(c,b):this.vwr.getJzt().getZipFileContentsAsBytes(c,q,1),c.close()}catch(g){if(E(g,Exception))return g.toString();throw g;}}if(null==b||!JU.AU.isAB(e))return e;b.write(e,0, +-1);return e.length+" bytes"},"~S,JU.OC");c(b,"getFileAsMap",function(a,b,c){var q=c?null:new java.util.Hashtable,e;if(null==a){e=Array(1);b=this.vwr.getImageAsBytes(b,-1,-1,-1,e);if(null!=e[0]){if(c)return O(0,0);q.put("_ERROR_",e[0]);return q}if(null==q)return b;e=JU.Rdr.getBIS(b)}else{b=Array(2);e=this.getFullPathNameOrError(a,!0,b);if("string"==typeof e){if(c)return O(0,0);q.put("_ERROR_",e);return q}if(!this.checkSecurity(b[0])){if(c)return O(0,0);q.put("_ERROR_","java.io. Security exception: cannot read file "+ +b[0]);return q}}try{if(c)return JU.Rdr.streamToBytes(e);this.vwr.getJzt().readFileAsMap(e,q,a)}catch(g){if(E(g,Exception)){if(c)return O(0,0);q.clear();q.put("_ERROR_",""+g)}else throw g;}return q},"~S,~S,~B");c(b,"getFileDataAsString",function(a,b,c,q,e){a[1]="";var g=a[0];if(null==g)return!1;c=this.getBufferedReaderOrErrorMessageFromName(g,a,!1,c);if("string"==typeof c)return a[1]=c,!1;if(e&&!this.checkSecurity(a[0]))return a[1]="java.io. Security exception: cannot read file "+a[0],!1;try{if(C(c, +"java.io.BufferedInputStream")&&(g.toUpperCase().endsWith(".PNG")||JV.FileManager.isEmbeddable(g)))c=JU.Rdr.getBufferedReader(c,null);return JU.Rdr.readAllAsString(c,b,q,a,1)}catch(j){if(E(j,Exception))return!1;throw j;}},"~A,~N,~B,~B,~B");c(b,"checkSecurity",function(a){if(!a.startsWith("file:"))return!0;var b=a.lastIndexOf("/");return a.lastIndexOf(":/")==b-1||0<=a.indexOf("/.")||a.lastIndexOf(".")a.indexOf(":")&&0!=a.indexOf("/")&& +(a=JV.FileManager.addDirectory(this.vwr.getDefaultDirectory(),a));if(null==this.appletDocumentBaseURL)if(0<=JU.OC.urlTypeIndex(a)||this.vwr.haveAccess(JV.Viewer.ACCESS.NONE)||this.vwr.haveAccess(JV.Viewer.ACCESS.READSPT)&&!a.endsWith(".spt")&&!a.endsWith("/"))try{e=new java.net.URL(ma("java.net.URL"),a,null)}catch(j){if(E(j,"java.net.MalformedURLException"))return w(-1,[b?j.toString():null]);throw j;}else var q=this.vwr.apiPlatform.newFile(a),g=q.getFullPath(),f=q.getName(),g=w(-1,[null==g?f:g,f, +null==g?f:"file:/"+g.$replace("\\","/")]);else try{if(1==a.indexOf(":\\")||1==a.indexOf(":/"))a="file:/"+a;e=new java.net.URL(this.appletDocumentBaseURL,a,null)}catch(l){if(E(l,"java.net.MalformedURLException"))return w(-1,[b?l.toString():null]);throw l;}null!=e&&(g=Array(3),g[0]=g[2]=e.toString(),g[1]=JV.FileManager.stripPath(g[0]));c&&(c=g[0],g[0]=this.pathForAllFiles+g[1],JU.Logger.info("FileManager substituting "+c+" --\x3e "+g[0]));b&&JU.OC.isLocal(g[0])&&(c=g[0],null==q&&(c=JU.PT.trim(g[0].substring(g[0].indexOf(":")+ +1),"/")),q=c.length-g[1].length-1,0b&&(b=a.indexOf(":/")+1);1>b&&(b=a.indexOf("/"));if(0>b)return null;var c=a.substring(0,b);for(a=a.substring(b);0<=(b=a.lastIndexOf("/../"));){var q=a.substring(0,b).lastIndexOf("/");if(0>q)return JU.PT.rep(c+a,"/../","/");a=a.substring(0,q)+a.substring(b+3)}0==a.length&&(a="/");return c+ +a},"~S");c(b,"getFilePath",function(a,b,c){a=this.getClassifiedName(a,!1);return null==a||1==a.length?"":c?a[1]:b?a[2]:null==a[0]?"":JV.FileManager.fixDOSName(a[0])},"~S,~B,~B");b.getLocalDirectory=c(b,"getLocalDirectory",function(a,b){var c=a.getP(b?"currentLocalPath":"defaultDirectoryLocal");b&&0==c.length&&(c=a.getP("defaultDirectoryLocal"));if(0==c.length)return a.isApplet?null:a.apiPlatform.newFile(System.getProperty("user.dir","."));a.isApplet&&0==c.indexOf("file:/")&&(c=c.substring(6));c=a.apiPlatform.newFile(c); +try{return c.isDirectory()?c:c.getParentAsFile()}catch(q){if(E(q,Exception))return null;throw q;}},"JV.Viewer,~B");b.setLocalPath=c(b,"setLocalPath",function(a,b,c){for(;b.endsWith("/")||b.endsWith("\\");)b=b.substring(0,b.length-1);a.setStringProperty("currentLocalPath",b);c||a.setStringProperty("defaultDirectoryLocal",b)},"JV.Viewer,~S,~B");b.getLocalPathForWritingFile=c(b,"getLocalPathForWritingFile",function(a,b,c){if(b.startsWith("http://")||b.startsWith("https://"))return b;b=JU.PT.rep(b,"?", +"");if(0==b.indexOf("file:/"))return b.substring(6);if(0==b.indexOf("/")||0<=b.indexOf(":"))return b;var q=null;try{q=JV.FileManager.getLocalDirectory(a,c)}catch(e){if(!E(e,Exception))throw e;}return null==q?b:JV.FileManager.fixPath(q.toString()+"/"+b)},"JV.Viewer,~S,~B");b.fixDOSName=c(b,"fixDOSName",function(a){return 0<=a.indexOf(":\\")?a.$replace("\\","/"):a},"~S");b.stripPath=c(b,"stripPath",function(a){var b=Math.max(a.lastIndexOf("|"),a.lastIndexOf("/"));return a.substring(b+1)},"~S");b.isScriptType= +c(b,"isScriptType",function(a){return JU.PT.isOneOf(a.toLowerCase().substring(a.lastIndexOf(".")+1),";pse;spt;png;pngj;jmol;zip;")},"~S");b.determineSurfaceFileType=c(b,"determineSurfaceFileType",function(a){var b=null;if(C(a,"JU.Rdr.StreamReader")){var c=a.getStream();if(c.markSupported())try{c.mark(300);var q=O(300,0);c.read(q,0,300);c.reset();if(131==(q[0]&255)&&68==q[10]&&101==q[11]&&110==q[12])return"BCifDensity";if(80==q[0]&&77==q[1]&&1==q[2]&&0==q[3])return"Pmesh";if(77==q[208]&&65==q[209]&& +80==q[210])return"Mrc";if(20==q[0]&&0==q[1]&&0==q[2]&&0==q[3])return"DelPhi";if(0==q[36]&&100==q[37])return"Dsn6"}catch(e){if(!E(e,"java.io.IOException"))throw e;}}c=null;try{c=new JU.LimitedLineReader(a,16E3),b=c.getHeader(0)}catch(g){if(!E(g,Exception))throw g;}if(null==c||null==b||0==b.length)return null;if(0<=b.indexOf("\x00")){if(131==b.charAt(0).charCodeAt(0))return"BCifDensity";if(0==b.indexOf("PM\u0001\x00"))return"Pmesh";if(208==b.indexOf("MAP "))return"Mrc";if(0==b.indexOf("\u0014\x00\x00\x00"))return"DelPhi"; +if(37b?"Jvxl":"Cube"},"java.io.BufferedReader");b.getManifestScriptPath=c(b,"getManifestScriptPath",function(a){if(0<=a.indexOf("$SCRIPT_PATH$"))return"";var b=0<=a.indexOf("\n")?"\n":"\r";if(0<=a.indexOf(".spt")){a=JU.PT.split(a,b);for(b=a.length;0<=--b;)if(0<=a[b].indexOf(".spt"))return"|"+JU.PT.trim(a[b],"\r\n \t")}return null},"~S");b.getFileReferences=c(b,"getFileReferences",function(a,b,c){for(var q=0;qp&&!q&&(m="/"+m),(0>p||q)&&p++,m=b+m.substring(p)));m=n+m;JU.Logger.info("FileManager substituting "+s+" --\x3e "+m);g.addLast('"'+s+'"');j.addLast('\u0001"'+m+'"')}return JU.PT.replaceStrings(a,g,j)},"~S,~S,~B");c(b,"cachePut",function(a,b){a=JV.FileManager.fixDOSName(a);JU.Logger.debugging&&JU.Logger.debug("cachePut "+a);null==b||"".equals(b)?this.cache.remove(a):(this.cache.put(a,b),this.getCachedPngjBytes(a))},"~S,~O");c(b,"cacheGet",function(a, +b){a=JV.FileManager.fixDOSName(a);var c=a.indexOf("|");0<=c&&!a.endsWith("##JmolSurfaceInfo##")&&(a=a.substring(0,c));a=this.getFilePath(a,!0,!1);c=null;(c=Jmol.Cache.get(a))||(c=this.cache.get(a));return b&&"string"==typeof c?null:c},"~S,~B");c(b,"cacheClear",function(){JU.Logger.info("cache cleared");this.cache.clear();null!=this.pngjCache&&(this.pngjCache=null,JU.Logger.info("PNGJ cache cleared"))});c(b,"cacheFileByNameAdd",function(a,b){if(null==a||!b&&a.equalsIgnoreCase(""))return this.cacheClear(), +-1;var c;if(b){a=JV.JC.fixProtocol(this.vwr.resolveDatabaseFormat(a));c=this.getFileAsBytes(a,null);if("string"==typeof c)return 0;this.cachePut(a,c)}else{if(a.endsWith("*"))return JU.AU.removeMapKeys(this.cache,a.substring(0,a.length-1));c=this.cache.remove(JV.FileManager.fixDOSName(a))}return null==c?0:c.length},"~S,~B");c(b,"cacheList",function(){for(var a=new java.util.Hashtable,b,c=this.cache.entrySet().iterator();c.hasNext()&&((b=c.next())||1);)a.put(b.getKey(),Integer.$valueOf(JU.AU.isAB(b.getValue())? +b.getValue().length:b.getValue().toString().length));return a});c(b,"getCanonicalName",function(a){var b=this.getClassifiedName(a,!0);return null==b?a:b[2]},"~S");c(b,"recachePngjBytes",function(a,b){null!=this.pngjCache&&this.pngjCache.containsKey(a)&&(this.pngjCache.put(a,b),JU.Logger.info("PNGJ recaching "+a+" ("+b.length+")"))},"~S,~A");c(b,"getPngjOrDroppedBytes",function(a,b){var c=this.getCachedPngjBytes(a);return null==c?this.cacheGet(b,!0):c},"~S,~S");c(b,"getCachedPngjBytes",function(a){return null== +a||null==this.pngjCache||0>a.indexOf(".png")?null:this.getJzu().getCachedPngjBytes(this,a)},"~S");f(b,"postByteArray",function(a,b){if(a.startsWith("cache://"))return this.cachePut(a,b),"OK "+b.length+"cached";var c=this.getBufferedInputStreamOrErrorMessageFromName(a,null,!1,!1,b,!1,!0);if("string"==typeof c)return c;try{c=JU.Rdr.getStreamAsBytes(c,null)}catch(q){if(E(q,"java.io.IOException"))try{c.close()}catch(e){if(!E(e,"java.io.IOException"))throw e;}else throw q;}return null==c?"":JU.Rdr.fixUTF(c)}, +"~S,~A");b.isJmolType=c(b,"isJmolType",function(a){return a.equals("PNG")||a.equals("PNGJ")||a.equals("JMOL")||a.equals("ZIP")||a.equals("ZIPALL")},"~S");b.isEmbeddable=c(b,"isEmbeddable",function(a){var b=a.lastIndexOf(".");0<=b&&(a=a.substring(b+1));a=a.toUpperCase();return JV.FileManager.isJmolType(a)||JU.PT.isOneOf(a,";JPG;JPEG;POV;IDTF;")},"~S");c(b,"getEmbeddedFileState",function(a,b,c){if(!JV.FileManager.isEmbeddable(a))return"";b=this.getZipDirectory(a,!1,b);if(0==b.length)return a=this.vwr.getFileAsString4(a, +-1,!1,!0,!1,"file"),0>a.indexOf("**** Jmol Embedded Script ****")?"":JV.FileManager.getEmbeddedScript(a);for(var q=0;qb||20<=b?a:a.substring(b+2)},"~S");b.getEmbeddedScript=c(b,"getEmbeddedScript",function(a){if(null==a)return a;var b=a.indexOf("**** Jmol Embedded Script ****");if(0> +b)return a;var c=a.lastIndexOf("/*",b),q=a.indexOf(("*"==a.charAt(c+2)?"*":"")+"*/",b);for(0<=c&&q>=b&&(a=a.substring(b+30,q)+"\n");0<=(c=a.indexOf(" #Jmol...\x00"));)a=a.substring(0,c)+a.substring(c+10+4);JU.Logger.debugging&&JU.Logger.debug(a);return a},"~S");c(b,"isZipStream",function(a){return this.vwr.getJzt().isZipStream(a)},"~O");b.SIMULATION_PROTOCOL="http://SIMULATION/";b.scriptFilePrefixes=w(-1,['/*file*/"','FILE0="','FILE1="'])});n("JV");A(["java.util.Hashtable","JU.P3","J.c.CBK"],"JV.GlobalSettings", +"JU.DF $.PT $.SB J.c.STR JS.SV JU.Escape $.Logger JV.JC $.StateManager $.Viewer".split(" "),function(){var b=r(function(){this.htUserVariables=this.htPropertyFlagsRemoved=this.htBooleanParameterFlags=this.htNonbooleanParameterValues=this.vwr=null;this.zDepth=0;this.zShadePower=3;this.zSlab=50;this.slabByAtom=this.slabByMolecule=!1;this.appendNew=this.allowEmbeddedScripts=!0;this.appletProxy="";this.applySymmetryToBonds=!1;this.atomTypes="";this.autoBond=!0;this.axesOrientationRasmol=!1;this.bondRadiusMilliAngstroms= +150;this.bondTolerance=0.45;this.defaultDirectory="";this.defaultStructureDSSP=!0;this.ptDefaultLattice=null;this.defaultLoadFilter=this.defaultLoadScript="";this.defaultDropScript="zap; load SYNC \"%FILE\";if (%ALLOWCARTOONS && _loadScript == '' && defaultLoadScript == '' && _filetype == 'Pdb') {if ({(protein or nucleic)&*/1.1} && {*/1.1}[1].groupindex != {*/1.1}[0].groupindex){select protein or nucleic;cartoons only;}if ({visible && cartoons > 0}){color structure}else{wireframe -0.1};if (!{visible}){spacefill 23%};select *}"; +this.forceAutoBond=!1;this.fractionalRelative=!0;this.inlineNewlineChar="|";this.resolverResolver=this.macroDirectory=this.pubChemFormat=this.nihResolverFormat=this.smilesUrlFormat=this.nmrPredictFormat=this.nmrUrlFormat=this.pdbLoadLigandFormat=this.pdbLoadFormat=this.loadFormat=null;this.checkCIR=!1;this.minBondDistance=0.4;this.minPixelSelRadius=6;this.pdbSequential=this.pdbGetHeader=this.pdbAddHydrogens=!1;this.percentVdwAtom=23;this.smallMoleculeMaxAtoms=4E4;this.smartAromatic=!0;this.doublePrecision= +this.legacyJavaFloat=this.legacyHAddition=this.legacyAutoBonding=this.zeroBasedXyzRasmol=!1;this.modulateOccupancy=this.jmolInJSpecView=!0;this.dotSolvent=this.allowMoveAtoms=this.allowRotateSelected=!1;this.defaultTorsionLabel=this.defaultDistanceLabel=this.defaultAngleLabel="%VALUE %UNITS";this.measureAllModels=this.justifyMeasurements=!1;this.minimizationSteps=100;this.minimizationRefresh=!0;this.minimizationSilent=!1;this.minimizationCriterion=0.001;this.minimizationMaxAtoms=200;this.minimizationReportSteps= +10;this.infoFontSize=20;this.antialiasDisplay=!1;this.displayCellParameters=this.antialiasTranslucent=this.imageState=this.antialiasImages=!0;this.dotsSelectedOnly=!1;this.dotSurface=!0;this.dotDensity=3;this.meshScale=this.dotScale=1;this.isosurfaceKey=this.greyscaleRendering=!1;this.isosurfacePropertySmoothing=!0;this.isosurfacePropertySmoothingPower=7;this.platformSpeed=10;this.repaintWaitMs=1E3;this.showHiddenSelectionHalos=!1;this.showMeasurements=this.showKeyStrokes=!0;this.showTiming=!1;this.zoomLarge= +!0;this.zoomHeight=!1;this.backgroundImageFileName=null;this.hbondsBackbone=this.bondModeOr=this.partialDots=!1;this.hbondsAngleMinimum=90;this.hbondNODistanceMaximum=3.25;this.hbondHXDistanceMaximum=2.5;this.hbondsRasmol=!0;this.hbondsSolid=!1;this.modeMultipleBond=2;this.showMultipleBonds=this.showHydrogens=!0;this.ssbondsBackbone=!1;this.multipleBondSpacing=-1;this.multipleBondRadiusFactor=0;this.multipleBondBananas=!1;this.nboCharges=!0;this.cartoonRockets=this.cartoonBaseEdges=!1;this.cartoonBlockHeight= +0.5;this.cipRule6Full=this.chainCaseSensitive=this.cartoonRibose=this.cartoonLadders=this.cartoonFancy=this.cartoonSteps=this.cartoonBlocks=!1;this.hermiteLevel=0;this.rangeSelected=this.highResolutionFlag=!1;this.rasmolHeteroSetting=this.rasmolHydrogenSetting=!0;this.ribbonAspectRatio=16;this.rocketBarrels=this.ribbonBorder=!1;this.sheetSmoothing=1;this.translucent=this.traceAlpha=!0;this.twistedSheets=!1;this.allowAudio=this.autoplayMovie=!0;this.allowGestures=!1;this.allowMultiTouch=this.allowModelkit= +!0;this.hiddenLinesDashed=this.allowKeyStrokes=!1;this.animationFps=10;this.atomPicking=!0;this.autoFps=!1;this.axesMode=603979809;this.axesScale=2;this.axesOffset=0;this.starWidth=0.05;this.bondPicking=!1;this.dataSeparator="~~~";this.debugScript=!1;this.defaultDrawArrowScale=0.5;this.defaultLabelXYZ="%a";this.defaultLabelPDB="%m%r";this.defaultTranslucent=0.5;this.delayMaximumMs=0;this.dipoleScale=1;this.drawFontSize=16;this.drawPicking=this.drawHover=this.dragSelected=this.disablePopupMenu=!1; +this.dsspCalcHydrogen=!0;this.elementKey=!1;this.energyUnits="kJ";this.exportScale=0;this.helpPath="https://chemapps.stolaf.edu/jmol/docs/index.htm";this.fontScaling=!1;this.fontCaching=!0;this.forceField="MMFF";this.helixStep=1;this.hideNameInPopup=!1;this.hoverDelayMs=500;this.labelPointerWidth=2;this.loadAtomDataTolerance=0.01;this.logGestures=this.logCommands=!1;this.measureDistanceUnits="nanometers";this.measurementLabels=!0;this.monitorEnergy=this.messageStyleChime=!1;this.modulationScale=1; +this.multiProcessor=!0;this.particleRadius=20;this.pickingSpinRate=10;this.pickLabel="";this.pointGroupDistanceTolerance=0.2;this.pointGroupLinearTolerance=8;this.preserveState=!0;this.propertyColorScheme="roygb";this.quaternionFrame="p";this.saveProteinStructureState=!0;this.showModVecs=!1;this.showUnitCellDetails=!0;this.solventProbeRadius=1.2;this.scriptDelay=0;this.statusReporting=this.selectAllModels=!0;this.strandCountForStrands=5;this.strandCountForMeshRibbon=7;this.strutSpacing=6;this.strutLengthMaximum= +7;this.strutDefaultRadius=0.3;this.symmetryHermannMauguin=this.strutsMultiple=!1;this.waitForMoveTo=this.useScriptQueue=this.useNumberLocalization=this.useMinimizationThread=!0;this.noDelay=!1;this.vectorScale=1;this.vectorsCentered=this.vectorSymmetry=!1;this.vectorTrail=0;this.vibrationScale=this.vibrationPeriod=1;this.navigationPeriodic=this.navigationMode=this.hideNavigationPoint=this.wireframeRotation=!1;this.navigationSpeed=5;this.showNavigationPointAlways=!1;this.stereoState=null;this.modelKitMode= +!1;this.objMad10=this.objStateOn=this.objColors=null;this.ellipsoidFill=this.ellipsoidArrows=this.ellipsoidArcs=this.ellipsoidDots=this.ellipsoidAxes=!1;this.ellipsoidBall=!0;this.ellipsoidDotCount=200;this.ellipsoidAxisDiameter=0.02;this.testFlag4=this.testFlag3=this.testFlag2=this.testFlag1=!1;this.structureList=null;this.haveSetStructureList=!1;this.bondingVersion=0;u(this,arguments)},JV,"GlobalSettings",null);N(b,function(){this.htUserVariables=new java.util.Hashtable;this.ptDefaultLattice=new JU.P3; +this.objColors=D(7,0);this.objStateOn=Ca(7,!1);this.objMad10=D(7,0);this.structureList=new java.util.Hashtable;this.structureList.put(J.c.STR.TURN,L(-1,[30,90,-15,95]));this.structureList.put(J.c.STR.SHEET,L(-1,[-180,-10,70,180,-180,-45,-180,-130,140,180,90,180]));this.structureList.put(J.c.STR.HELIX,L(-1,[-160,0,-100,45]))});x(b,function(a,b,c){this.vwr=a;this.htNonbooleanParameterValues=new java.util.Hashtable;this.htBooleanParameterFlags=new java.util.Hashtable;this.htPropertyFlagsRemoved=new java.util.Hashtable; +this.loadFormat=this.pdbLoadFormat=JV.JC.databases.get("pdb");this.pdbLoadLigandFormat=JV.JC.databases.get("ligand");this.nmrUrlFormat=JV.JC.databases.get("nmr");this.nmrPredictFormat=JV.JC.databases.get("nmrdb");this.pubChemFormat=JV.JC.databases.get("pubchem");this.resolverResolver=JV.JC.databases.get("resolverresolver");this.macroDirectory="https://chemapps.stolaf.edu/jmol/macros";null==b?this.setB("undoAuto",!a.isApplet):(this.setB("undoAuto",a.getBooleanProperty("undoAuto")),c||(this.setO("_pngjFile", +b.getParameter("_pngjFile",!1)),this.htUserVariables=b.htUserVariables),this.debugScript=b.debugScript,this.disablePopupMenu=b.disablePopupMenu,this.messageStyleChime=b.messageStyleChime,this.measureDistanceUnits=b.measureDistanceUnits,this.defaultDirectory=b.defaultDirectory,this.autoplayMovie=b.autoplayMovie,this.allowAudio=b.allowAudio,this.allowGestures=b.allowGestures,this.allowModelkit=b.allowModelkit,this.allowMultiTouch=b.allowMultiTouch,this.allowKeyStrokes=b.allowKeyStrokes,this.legacyAutoBonding= +b.legacyAutoBonding,this.legacyHAddition=b.legacyHAddition,this.legacyJavaFloat=b.legacyJavaFloat,this.minimizationReportSteps=b.minimizationReportSteps,this.doublePrecision=b.doublePrecision,this.bondingVersion=b.bondingVersion,this.platformSpeed=b.platformSpeed,this.useScriptQueue=b.useScriptQueue,this.showTiming=b.showTiming,this.wireframeRotation=b.wireframeRotation,this.testFlag1=b.testFlag1,this.testFlag2=b.testFlag2,this.testFlag3=b.testFlag3,this.testFlag4=b.testFlag4,this.nihResolverFormat= +b.nihResolverFormat);null==this.nihResolverFormat&&(this.nihResolverFormat=JV.JC.databases.get("nci"));this.setCIR(this.nihResolverFormat,!1);var q;c=0;for(var e=J.c.CBK.values();c"}, +"~S,~N");c(b,"getParameter",function(a,b){var c=this.getParam(a,!1);return null==c&&b?"":c},"~S,~B");c(b,"getAndSetNewVariable",function(a,b){if(null==a||0==a.length)a="x";var c=this.getParam(a,!0);return null==c&&b&&"_"!=a.charAt(0)?this.setUserVariable(a,JS.SV.newV(4,"")):JS.SV.getVariable(c)},"~S,~B");c(b,"getParam",function(a,b){a=a.toLowerCase();if(a.equals("_memory")){var c=JU.DF.formatDecimal(0,1)+"/"+JU.DF.formatDecimal(0,1);this.htNonbooleanParameterValues.put("_memory",c)}return this.htNonbooleanParameterValues.containsKey(a)? +this.htNonbooleanParameterValues.get(a):this.htBooleanParameterFlags.containsKey(a)?this.htBooleanParameterFlags.get(a):this.htPropertyFlagsRemoved.containsKey(a)?Boolean.FALSE:this.htUserVariables.containsKey(a)?(c=this.htUserVariables.get(a),b?c:JS.SV.oValue(c)):null},"~S,~B");c(b,"getVariableList",function(){return JV.StateManager.getVariableList(this.htUserVariables,0,!0,!1)});c(b,"setStructureList",function(a,b){this.haveSetStructureList=!0;this.structureList.put(b,a)},"~A,J.c.STR");c(b,"getStructureList", +function(){return this.structureList});b.doReportProperty=c(b,"doReportProperty",function(a){return"_"!=a.charAt(0)&&0>JV.GlobalSettings.unreportedProperties.indexOf(";"+a+";")},"~S");c(b,"getAllVariables",function(){var a=new java.util.Hashtable;a.putAll(this.htBooleanParameterFlags);a.putAll(this.htNonbooleanParameterValues);a.putAll(this.htUserVariables);return a});c(b,"getLoadState",function(a){var b=new JU.SB;this.app(b,"set allowEmbeddedScripts false");this.allowEmbeddedScripts&&this.setB("allowEmbeddedScripts", +!0);this.app(b,"set appendNew "+this.appendNew);this.app(b,"set appletProxy "+JU.PT.esc(this.appletProxy));this.app(b,"set applySymmetryToBonds "+this.applySymmetryToBonds);0a?a:v(a/6)+31},"~S");b.getCIPChiralityName=c(b,"getCIPChiralityName",function(a){switch(a){case 13:return"Z";case 5:return"z";case 14:return"E";case 6:return"e";case 17:return"M";case 18:return"P"; +case 1:return"R";case 2:return"S";case 9:return"r";case 10:return"s";case 25:return"m";case 26:return"p";case 7:return"?";default:return""}},"~N");b.getCIPRuleName=c(b,"getCIPRuleName",function(a){return JV.JC.ruleNames[a]},"~N");b.getCIPChiralityCode=c(b,"getCIPChiralityCode",function(a){switch(a.charCodeAt(0)){case 90:return 13;case 122:return 5;case 69:return 14;case 101:return 6;case 82:return 1;case 83:return 2;case 114:return 9;case 115:return 10;case 63:return 7;default:return 0}},"~S");b.fixOptimadeCall= +c(b,"fixOptimadeCall",function(a){var b=a.indexOf("response_fields=")+16;if(16>b)b=a.indexOf("?"),a+=(0>b?"?":"&")+"response_fields=chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species";else{for(var d=","+a.substring(b,(a+"&").indexOf("&",b))+",",c=d.length,h=0,e=0;0<=h;h=e){e=",chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species,".indexOf(",",h+1);if(0>e)break;h=",chemical_formula_descriptive,dimension_types,lattice_vectors,cartesian_site_positions,species_at_sites,species,".substring(h, +e+1);0>d.indexOf(h)&&(d+=h.substring(1))}a=a.substring(0,b)+d.substring(1,d.length-1)+a.substring(b+c-2)}return a},"~S");b.resolveDataBase=c(b,"resolveDataBase",function(a,b,d){if(null==d){if(null==(d=JV.JC.databases.get(a.toLowerCase())))return null;var c=b.indexOf("/");0>c&&(a.equals("pubchem")?b="name/"+b:a.equals("nci")&&(b+="/file?format=sdf&get3d=true"));d.startsWith("'")&&(c=b.indexOf("."),a=0a?JV.JC.shapeClassBases[~a]:"J."+(b?"render":"shape")+(9<=a&&16>a?"bio.":16<=a&&23>a?"special.":24<=a&&30>a?"surface.":23==a?"cgo.":".")+JV.JC.shapeClassBases[a]},"~N,~B");b.getEchoName=c(b,"getEchoName",function(a){return JV.JC.echoNames[a]},"~N");b.setZPosition=c(b,"setZPosition",function(a,b){return a&-49|b},"~N,~N"); +b.setPointer=c(b,"setPointer",function(a,b){return a&-4|b},"~N,~N");b.getPointer=c(b,"getPointer",function(a){return a&3},"~N");b.getPointerName=c(b,"getPointerName",function(a){return 0==(a&1)?"":0<(a&2)?"background":"on"},"~N");b.isOffsetAbsolute=c(b,"isOffsetAbsolute",function(a){return 0!=(a&64)},"~N");b.getOffset=c(b,"getOffset",function(a,b,d){a=Math.min(Math.max(a,-500),500);b=Math.min(Math.max(b,-500),500);var c=(a&1023)<<21|(b&1023)<<11|(d?64:0);if(c==JV.JC.LABEL_DEFAULT_OFFSET)c=0;else if(!d&& +(0==a||0==b))c|=256;return c},"~N,~N,~B");b.getXOffset=c(b,"getXOffset",function(a){if(0==a)return 4;a=a>>21&1023;return 500>11&1023;return 500>2&3]},"~N");b.isSmilesCanonical= +c(b,"isSmilesCanonical",function(a){return null!=a&&JU.PT.isOneOf(a.toLowerCase(),";/cactvs///;/cactus///;/nci///;/canonical///;")},"~S");b.getServiceCommand=c(b,"getServiceCommand",function(a){return 7>a.length?-1:"JSPECVIPEAKS: SELECT:JSVSTR:H1SIMULC13SIMUNBO:MODNBO:RUNNBO:VIENBO:SEANBO:CONNONESIM".indexOf(a.substring(0,7).toUpperCase())},"~S");b.getUnitIDFlags=c(b,"getUnitIDFlags",function(a){var b=14;0==a.indexOf("-")&&(0a.indexOf("a")&&(b^=4),0a&&(d=1E5*Integer.parseInt(q),q=null);if(null!=q&&(d=1E5*Integer.parseInt(h=q.substring(0,a)),q=q.substring(a+1),a=q.indexOf("."),0>a&&(d+=1E3*Integer.parseInt(q),q=null),null!=q)){var e=q.substring(0,a);JV.JC.majorVersion=h+("."+e);d+=1E3*Integer.parseInt(e);q=q.substring(a+1);a=q.indexOf("_");0<=a&&(q=q.substring(0,a));a=q.indexOf(" ");0<=a&&(q=q.substring(0,a));d+=Integer.parseInt(q)}}catch(g){if(!E(g,"NumberFormatException"))throw g;}JV.JC.versionInt=d;b.center=JU.V3.new3(0,0,0);b.axisX=JU.V3.new3(1, +0,0);b.axisY=JU.V3.new3(0,1,0);b.axisZ=JU.V3.new3(0,0,1);b.axisNX=JU.V3.new3(-1,0,0);b.axisNY=JU.V3.new3(0,-1,0);b.axisNZ=JU.V3.new3(0,0,-1);b.unitAxisVectors=w(-1,[JV.JC.axisX,JV.JC.axisY,JV.JC.axisZ,JV.JC.axisNX,JV.JC.axisNY,JV.JC.axisNZ]);b.altArgbsCpk=D(-1,[4294907027,4290750118,4294967088,4283897743,4294967232,4294967200,4292401368,4283453520,4282400832,4279259216]);b.FORMAL_CHARGE_COLIX_RED=JU.Elements.elementSymbols.length+JV.JC.altArgbsCpk.length;b.argbsFormalCharge=D(-1,[4294901760,4294918208, +4294934656,4294951104,4294967295,4292401407,4290032895,4287664383,4285295871,4282927359,4280558847,4278190335]);b.PARTIAL_CHARGE_COLIX_RED=JV.JC.FORMAL_CHARGE_COLIX_RED+JV.JC.argbsFormalCharge.length;b.argbsRwbScale=D(-1,[4294901760,4294905872,4294909984,4294914096,4294918208,4294922320,4294926432,4294930544,4294934656,4294938768,4294942880,4294946992,4294951104,4294955216,4294959328,4294967295,4292927743,4291875071,4290822399,4289769727,4288717055,4287664383,4286611711,4285559039,4284506367,4283453695, +4282401023,4281348351,4280295679,4279243007,4278190335]);b.PARTIAL_CHARGE_RANGE_SIZE=JV.JC.argbsRwbScale.length;b.argbsRoygbScale=D(-1,[4294901760,4294909952,4294918144,4294926336,4294934528,4294942720,4294950912,4294959104,4294963200,4294967040,4293980160,4292935424,4290838272,4288741120,4286643968,4284546816,4282449664,4280352512,4278255360,4278255392,4278255424,4278255456,4278255488,4278255520,4278255552,4278255584,4278255615,4278247679,4278239487,4278231295,4278223103,4278214911,4278206719,4278198527, +4278190335]);b.predefinedVariable=w(-1,"@_1H _H & !(_2H,_3H);@_12C _C & !(_13C,_14C);@_14N _N & !(_15N);@solvent water, (_g>=45 & _g<48);@ligand _g=0|!(_g<46,protein,nucleic,water);@turn structure=1;@sheet structure=2;@helix structure=3;@helix310 substructure=7;@helixalpha substructure=8;@helixpi substructure=9;@bulges within(dssr,'bulges');@coaxStacks within(dssr,'coaxStacks');@hairpins within(dssr,'hairpins');@hbonds within(dssr,'hbonds');@helices within(dssr,'helices');@iloops within(dssr,'iloops');@isoCanonPairs within(dssr,'isoCanonPairs');@junctions within(dssr,'junctions');@kissingLoops within(dssr,'kissingLoops');@multiplets within(dssr,'multiplets');@nonStack within(dssr,'nonStack');@nts within(dssr,'nts');@pairs within(dssr,'pairs');@ssSegments within(dssr,'ssSegments');@stacks within(dssr,'stacks');@stems within(dssr,'stems')".split(";")); +b.predefinedStatic=w(-1,"@amino _g>0 & _g<=23;@acidic asp,glu;@basic arg,his,lys;@charged acidic,basic;@negative acidic;@positive basic;@neutral amino&!(acidic,basic);@polar amino&!hydrophobic;@peptide protein&within(chain,monomer>1)&!within(chain,monomer>12);@cyclic his,phe,pro,trp,tyr;@acyclic amino&!cyclic;@aliphatic ala,gly,ile,leu,val;@aromatic his,phe,trp,tyr;@cystine within(group,(cys,cyx)&atomname=sg&connected((cys,cyx)&atomname=sg));@buried ala,cys,ile,leu,met,phe,trp,val;@surface amino&!buried;@hydrophobic ala,gly,ile,leu,met,phe,pro,trp,tyr,val;@mainchain backbone;@small ala,gly,ser;@medium asn,asp,cys,pro,thr,val;@large arg,glu,gln,his,ile,leu,lys,met,phe,trp,tyr;@c nucleic & ([C] or [DC] or within(group,_a=42));@g nucleic & ([G] or [DG] or within(group,_a=43));@cg c,g;@a nucleic & ([A] or [DA] or within(group,_a=44));@t nucleic & ([T] or [DT] or within(group,_a=45 | _a=49));@at a,t;@i nucleic & ([I] or [DI] or within(group,_a=46) & !g);@u nucleic & ([U] or [DU] or within(group,_a=47) & !t);@tu nucleic & within(group,_a=48);@ions _g>=46&_g<48;@alpha _a=2;@_bb protein&(_a>=1&_a<6|_a=64) | nucleic&(_a>=6&_a<14|_a>=73&&_a<=79||_a==99||_a=100);@backbone _bb | _H && connected(single, _bb);@spine protein&_a>=1&_a<4|nucleic&(_a>=6&_a<11|_a=13);@sidechain (protein,nucleic) & !backbone;@base nucleic & !backbone;@dynamic_flatring search('[a]');@nonmetal _H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn;@metal !nonmetal && !_Xx;@alkaliMetal _Li,_Na,_K,_Rb,_Cs,_Fr;@alkalineEarth _Be,_Mg,_Ca,_Sr,_Ba,_Ra;@nobleGas _He,_Ne,_Ar,_Kr,_Xe,_Rn;@metalloid _B,_Si,_Ge,_As,_Sb,_Te;@transitionMetal elemno>=21&elemno<=30|elemno=57|elemno=89|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112;@lanthanide elemno>57&elemno<=71;@actinide elemno>89&elemno<=103".split(";")); +b.shapeClassBases=w(-1,"Balls Sticks Hsticks Sssticks Struts Labels Measures Stars Halos Backbone Trace Cartoon Strands MeshRibbon Ribbons Rockets Dots Dipoles Vectors GeoSurface Ellipsoids Polyhedra Draw CGO Isosurface Contact LcaoCartoon MolecularOrbital NBO Pmesh Plot3D Echo Bbcage Uccage Axes Hover Frank".split(" "));b.LABEL_DEFAULT_OFFSET=8396800;b.echoNames=w(-1,["top","bottom","middle","xy","xyz"]);b.hAlignNames=w(-1,["","left","center","right"]);b.READER_NOT_FOUND="File reader was not found:"; +b.globalBooleans=w(-1,"someModelsHaveFractionalCoordinates someModelsHaveSymmetry someModelsHaveUnitcells someModelsHaveCONECT isPDB someModelsHaveDomains someModelsHaveValidations isSupercell someModelsHaveAromaticBonds someModelsAreModulated".split(" "))});n("JV");A(["java.io.IOException"],"JV.JmolAsyncException",null,function(){var b=r(function(){this.fileName=null;u(this,arguments)},JV,"JmolAsyncException",java.io.IOException);x(b,function(a){I(this,JV.JmolAsyncException,[]);this.fileName=a}, +"~S");c(b,"getFileName",function(){return this.fileName})});n("JV");A(null,"JV.ModelManager",["JM.ModelLoader"],function(){var b=r(function(){this.fileName=this.modelSetPathName=this.modelSet=this.vwr=null;u(this,arguments)},JV,"ModelManager",null);x(b,function(a){this.vwr=a},"JV.Viewer");c(b,"zap",function(){this.modelSetPathName=this.fileName=null;new JM.ModelLoader(this.vwr,this.vwr.getZapName(),null,null,null,null)});c(b,"createModelSet",function(a,b,c,q,e,g){var j=null;g?(j=this.modelSet.modelSetName, +j.equals("zapped")?j=null:0>j.indexOf(" (modified)")&&(j+=" (modified)")):null==q?this.zap():(this.modelSetPathName=a,this.fileName=b);null!=q&&(null==j&&(j=this.vwr.getModelAdapter().getAtomSetCollectionName(q),null!=j&&(j=j.trim(),0==j.length&&(j=null)),null==j&&(j=JV.ModelManager.reduceFilename(b))),new JM.ModelLoader(this.vwr,j,c,q,g?this.modelSet:null,e));0==this.modelSet.ac&&!this.modelSet.getMSInfoB("isPyMOL")&&this.zap()},"~S,~S,JU.SB,~O,JU.BS,~B");b.reduceFilename=c(b,"reduceFilename",function(a){if(null== +a)return null;var b=a.indexOf(".");0a&&(this.x=b.x,this.y=b.y);this.modifiers=b.modifiers},"JV.MouseState,~N");c(wa,"inRange",function(b,a,d){return Math.abs(this.x-a)<=b&&Math.abs(this.y-d)<=b},"~N,~N,~N");c(wa,"check",function(b,a,d,c,q,e){return this.modifiers==c&&(2147483647<=e?this.inRange(b,a,d):q-this.timea?this.selectionChanged(!0):null!=this.bsSubset&&!this.bsSubset.get(a)||null!=this.bsDeleted&&this.bsDeleted.get(a)||(this.bsSelection.setBitTo(a,b),this.empty= +b?0:-1)},"~N,~B");c(b,"setSelectionSubset",function(a){this.bsSubset=a},"JU.BS");c(b,"isInSelectionSubset",function(a){return 0>a||null==this.bsSubset||this.bsSubset.get(a)},"~N");c(b,"invertSelection",function(){JU.BSUtil.invertInPlace(this.bsSelection,this.vwr.ms.ac);this.empty=0b;++b)if(null!=this.shapes[b]&&0<=this.shapes[b].getIndexFromName(a))return b;return null!=this.shapes[6]&&0<=this.shapes[6].getIndexFromName(a)?6:-1},"~S");c(b,"loadDefaultShapes",function(a){this.ms=a;if(null!=this.shapes)for(var b= +0;be;e++)null!=this.shapes[e]&&this.setShapePropertyBs(e,"refreshTrajectories",w(-1,[q,b,c]),a)},"~N,JU.BS,JU.M4");c(b,"releaseShape",function(a){null!=this.shapes&&(this.shapes[a]=null)},"~N");c(b,"setScale",function(){null!=this.scaleText&&(this.loadShape(31),this.setShapePropertyBs(31,"%SCALE",this.scaleText,null),this.scaleText=null)});c(b,"resetShapes",function(a){a&& +(a=Array(1),this.getShapePropertyData(31,"%SCALE",a),this.scaleText=a[0]);this.shapes=Array(37)},"~B");c(b,"setShapeProperties",function(a,b){this.vwr.setShapeErrorState(a,"set properties");this.loadShape(a).setProperties(b);this.vwr.setShapeErrorState(-1,null)},"~N,~A");c(b,"setShapeSizeBs",function(a,b,c,q){if(null!=this.shapes){if(null==q&&(1!=a||2147483647!=b))q=this.vwr.bsA();null!=c&&(0!=c.value&&c.vdwType===J.c.VDW.TEMP)&&this.ms.getBfactor100Lo();this.vwr.setShapeErrorState(a,"set size"); +(null==c?0!=b:0!=c.value)&&this.loadShape(a);null!=this.shapes[a]&&this.shapes[a].setShapeSizeRD(b,c,q);this.vwr.setShapeErrorState(-1,null)}},"~N,~N,J.atomdata.RadiusData,JU.BS");c(b,"setLabel",function(a,b){if(null==a){if(null==this.shapes[5])return}else this.loadShape(5),this.setShapeSizeBs(5,0,null,b);this.setShapePropertyBs(5,"label",a,b)},"~O,JU.BS");c(b,"setShapePropertyBs",function(a,b,c,q){null==this.shapes||null==this.shapes[a]||(null==q&&(q=this.vwr.bsA()),this.vwr.setShapeErrorState(a, +"set "+b),this.shapes[a].setProperty(b.intern(),c,q),this.vwr.setShapeErrorState(-1,null))},"~N,~S,~O,JU.BS");c(b,"checkFrankclicked",function(a,b){var c=this.shapes[36];return null!=c&&c.wasClicked(a,b)},"~N,~N");c(b,"checkObjectClicked",function(a,b,c,q,e){var g,j=null;if(2==this.vwr.getPickingMode())return null==this.shapes[5]?null:this.shapes[5].checkObjectClicked(a,b,c,q,!1);if(0!=c&&this.vwr.getBondsPickable()&&null!=(j=this.shapes[1].checkObjectClicked(a,b,c,q,!1)))return j;for(var f=0;fc;c++)null!=this.shapes[c]&&this.setShapePropertyBs(c,"deleteModelAtoms",a,b)},"~A,JU.BS");c(b,"deleteVdwDependentShapes",function(a){null==a&&(a=this.vwr.bsA());this.setShapeAtomsSafely(24,"deleteVdw",a);this.setShapeAtomsSafely(25,"deleteVdw",a)},"JU.BS");c(b,"setShapeAtomsSafely",function(a,b,c){null!=this.shapes[a]&&this.shapes[a].setProperty(b,null, +c)},"~N,~S,JU.BS");c(b,"notifyAtoms",function(a,b){switch(a){case "atomsDeleted":this.setShapeAtomsSafely(6,a,b[0]);this.vwr.setModelkitPropertySafely("updatemodelkeys",b);break;case "atomsMoved":null!=this.getShape(22)&&this.vwr.setModelkitPropertySafely(a,b[0])}},"~S,~A");c(b,"getAtomShapeValue",function(a,b,c){a=JV.JC.shapeTokenIndex(a);if(0>a||null==this.shapes[a])return 0;c=this.shapes[a].getSize(c);if(0==c){if(0==(b.shapeVisibilityFlags&this.shapes[a].vf))return 0;c=this.shapes[a].getSizeG(b)}return c/ +2E3},"~N,JM.Group,~N");c(b,"replaceGroup",function(a,b){if(null!=this.shapes)for(var c=9;16>c;c++)null!=this.shapes[c]&&this.shapes[c].replaceGroup(a,b)},"JM.Group,JM.Group");c(b,"getObjectMap",function(a,b){if(null!=this.shapes)for(var c=Boolean.$valueOf(b),q=16;30>q;++q)this.getShapePropertyData(q,"getNames",w(-1,[a,c]))},"java.util.Map,~B");c(b,"getProperty",function(a){return a.equals("getShapes")?this.shapes:null},"~O");c(b,"getShape",function(a){return null==this.shapes?null:this.shapes[a]}, +"~N");c(b,"resetBioshapes",function(a){if(null!=this.shapes)for(var b=0;bc;c++)null!=a[c]&&a[c].setModelVisibilityFlags(b);var a=this.vwr.getBoolean(603979922),q=this.vwr.slm.bsDeleted,e=this.ms.at;this.ms.clearVisibleSets();if(0a;++a){var b=this.shapes[a];null!=b&&b.setAtomClickability()}});c(b,"finalizeAtoms",function(a,b){var c=this.vwr,q=c.tm;b&&c.finalizeTransformParameters();if(null!=a){var e=this.ms.getAtomSetCenter(a),g=new JU.P3;q.transformPt3f(e,g);g.add(q.ptOffset);q.unTransformPoint(g,g);g.sub(e);c.setAtomCoordsRelative(g,a);q.ptOffset.set(0,0,0);q.bsSelectedAtoms=null}e=this.bsRenderableAtoms;this.ms.getAtomsInFrame(e);var j=this.ms.vibrations,f=null!=j&&q.vibrationOn,l=null!=this.ms.bsModulated&&null!= +this.ms.occupancies,s=this.ms.at,m,p=!1,n=this.bsSlabbedInternal;n.clearAll();for(var y=e.nextSetBit(0);0<=y;y=e.nextSetBit(y+1)){var g=s[y],r=f&&g.hasVibration()?q.transformPtVib(g,j[y]):q.transformPt(g);1==r.z&&(q.internalSlab&&q.xyzIsSlabbedInternal(g))&&n.set(y);g.sX=r.x;g.sY=r.y;g.sZ=r.z;var u=Math.abs(g.madAtom);u==JM.Atom.MAD_GLOBAL&&(u=F(2E3*c.getFloat(1153433601)));g.sD=sa(c.tm.scaleToScreen(r.z,u));if(l&&null!=j[y]&&-2147483648!=(m=j[y].getOccupancy100(f)))p=!0,g.setShapeVisibility(2,!1), +0<=m&&50>m?g.setShapeVisibility(24,!1):g.setShapeVisibility(8|(0>1));r++,g++);if(r!=n.ac){g=n.firstAtomIndex;for(r=0;r>1:0)))g.setClickable(0),l=v((q?-1:1)*g.sD/2),(g.sZ+lf||!m.isInDisplayRange(g.sX,g.sY))&&e.clear(y)}if(0==this.ms.ac||!c.getShowNavigationPoint())return null;c=2147483647;m=-2147483648;q=2147483647;j=-2147483648;for(y=e.nextSetBit(0);0<=y;y=e.nextSetBit(y+1))g=s[y],g.sXm&&(m=g.sX),g.sYj&&(j=g.sY);this.navMinMax[0]=c;this.navMinMax[1]=m;this.navMinMax[2]=q;this.navMinMax[3]= +j;return this.navMinMax},"JU.BS,~B");c(b,"setModelSet",function(a){this.ms=a},"JM.ModelSet");c(b,"checkInheritedShapes",function(){null!=this.shapes[24]&&this.setShapePropertyBs(24,"remapInherited",null,null)});c(b,"restrictSelected",function(a,b){var c=this.vwr.slm.getSelectedAtomsNoSubset();if(b){this.vwr.slm.invertSelection();var q=this.vwr.slm.bsSubset;null!=q&&(c=this.vwr.slm.getSelectedAtomsNoSubset(),c.and(q),this.vwr.selectStatus(c,!1,0,!0,!1),JU.BSUtil.invertInPlace(c,this.vwr.ms.ac),c.and(q))}JU.BSUtil.andNot(c, +this.vwr.slm.bsDeleted);q=this.vwr.getBoolean(603979812);a||this.vwr.setBooleanProperty("bondModeOr",!0);this.setShapeSizeBs(1,0,null,null);this.setShapePropertyBs(1,"type",Integer.$valueOf(32768),null);this.setShapeSizeBs(1,0,null,null);this.setShapePropertyBs(1,"type",Integer.$valueOf(1023),null);for(var e=this.vwr.bsA(),g=21;0<=--g;)6!=g&&null!=this.getShape(g)&&this.setShapeSizeBs(g,0,null,e);null!=this.getShape(21)&&this.setShapePropertyBs(21,"off",e,null);this.setLabel(null,e);a||this.vwr.setBooleanProperty("bondModeOr", +q);this.vwr.selectStatus(c,!1,0,!0,!1)},"~B,~B");b.hoverable=D(-1,[31,20,25,24,22,36]);b.clickableMax=JV.ShapeManager.hoverable.length-1});n("JV");A(["java.util.Hashtable"],["JV.Connection","$.Scene","$.StateManager","$.Connections"],"java.util.Arrays JU.BS $.Lst $.SB JM.Orientation JU.BSUtil $.Escape".split(" "),function(){var b=r(function(){this.maxUndo=20;this.saved=this.vwr=null;this.lastUnitcell=this.lastCoordinates=this.lastShape=this.lastState=this.lastSelected=this.lastScene=this.lastConnections= +this.lastContext=this.lastOrientation="";this.redoStateStack=this.undoStateStack=null;u(this,arguments)},JV,"StateManager",null);N(b,function(){this.saved=new java.util.Hashtable});x(b,function(a){this.vwr=a},"JV.Viewer");b.getVariableList=c(b,"getVariableList",function(a,b,c,q){var e=new JU.SB,g=0,j=Array(a.size()),f;for(a=a.entrySet().iterator();a.hasNext()&&((f=a.next())||1);){var l=f.getKey(),s=f.getValue();if((c||!l.startsWith("site_"))&&(!q||"@"==l.charAt(0)))j[g++]=l+("@"==l.charAt(0)?" "+ +s.asString():" = "+JV.StateManager.varClip(l,s.escape(),b))}java.util.Arrays.sort(j,0,g);for(b=0;ba?a:v(a/11)},"~S");b.getObjectNameFromId= +c(b,"getObjectNameFromId",function(a){return 0>a||7<=a?null:"background axis1 axis2 axis3 boundbox unitcell frank ".substring(11*a,11*a+11).trim()},"~N");c(b,"clear",function(a){this.vwr.setShowAxes(!1);this.vwr.setShowBbcage(!1);this.vwr.setShowUnitCell(!1);a.clear()},"JV.GlobalSettings");c(b,"resetLighting",function(){this.vwr.setIntProperty("ambientPercent",45);this.vwr.setIntProperty("celShadingPower",10);this.vwr.setIntProperty("diffusePercent",84);this.vwr.setIntProperty("phongExponent", +64);this.vwr.setIntProperty("specularExponent",6);this.vwr.setIntProperty("specularPercent",22);this.vwr.setIntProperty("specularPower",40);this.vwr.setIntProperty("zDepth",0);this.vwr.setIntProperty("zShadePower",3);this.vwr.setIntProperty("zSlab",50);this.vwr.setBooleanProperty("specular",!0);this.vwr.setBooleanProperty("celShading",!1);this.vwr.setBooleanProperty("zshade",!1)});c(b,"setCrystallographicDefaults",function(){this.vwr.setAxesMode(603979808);this.vwr.setShowAxes(!0);this.vwr.setShowUnitCell(!0); +this.vwr.setBooleanProperty("perspectiveDepth",!1)});c(b,"setCommonDefaults",function(){this.vwr.setBooleanProperty("perspectiveDepth",!0);this.vwr.setFloatProperty("bondTolerance",0.45);this.vwr.setFloatProperty("minBondDistance",0.4);this.vwr.setIntProperty("bondingVersion",0);this.vwr.setBooleanProperty("translucent",!0)});c(b,"setJmolDefaults",function(){this.setCommonDefaults();this.vwr.setStringProperty("defaultColorScheme","Jmol");this.vwr.setBooleanProperty("axesOrientationRasmol",!1);this.vwr.setBooleanProperty("zeroBasedXyzRasmol", +!1);this.vwr.setIntProperty("percentVdwAtom",23);this.vwr.setIntProperty("bondRadiusMilliAngstroms",150);this.vwr.setVdwStr("auto")});c(b,"setRasMolDefaults",function(){this.setCommonDefaults();this.vwr.setStringProperty("defaultColorScheme","RasMol");this.vwr.setBooleanProperty("axesOrientationRasmol",!0);this.vwr.setBooleanProperty("zeroBasedXyzRasmol",!0);this.vwr.setIntProperty("percentVdwAtom",0);this.vwr.setIntProperty("bondRadiusMilliAngstroms",1);this.vwr.setVdwStr("Rasmol")});c(b,"setPyMOLDefaults", +function(){this.setCommonDefaults();this.vwr.setStringProperty("measurementUnits","ANGSTROMS");this.vwr.setBooleanProperty("zoomHeight",!0)});b.getNoCase=c(b,"getNoCase",function(a,b){for(var c,q=a.entrySet().iterator();q.hasNext()&&((c=q.next())||1);)if(c.getKey().equalsIgnoreCase(b))return c.getValue();return null},"java.util.Map,~S");c(b,"listSavedStates",function(){for(var a="",b,c=this.saved.keySet().iterator();c.hasNext()&&((b=c.next())||1);)a+="\n"+b;return a});c(b,"deleteSavedType",function(a){for(var b= +this.saved.keySet().iterator();b.hasNext();)b.next().startsWith(a)&&b.remove()},"~S");c(b,"deleteSaved",function(a){for(var b=this.saved.keySet().iterator();b.hasNext();){var c=b.next();(c.startsWith(a)||c.endsWith("_"+a)&&c.indexOf("_")==c.lastIndexOf("_"+a))&&b.remove()}},"~S");c(b,"saveSelection",function(a,b){a.equalsIgnoreCase("DELETE")?this.deleteSavedType("Selected_"):(a=this.lastSelected="Selected_"+a,this.saved.put(a,JU.BSUtil.copy(b)))},"~S,JU.BS");c(b,"restoreSelection",function(a){a=JV.StateManager.getNoCase(this.saved, +0this.maxUndo;)a.removeItemAt(0)},"JU.Lst");c(b,"getStack",function(a){null==this.undoStateStack&&(this.undoStateStack=new JU.Lst,this.redoStateStack=new JU.Lst);return 603984065==a?this.undoStateStack:this.redoStateStack},"~N");c(b,"clearStateStack",function(){null!=this.undoStateStack&&(this.undoStateStack.clear(),this.redoStateStack.clear())});c(b,"saveStructure",function(a){a.equalsIgnoreCase("DELETE")?this.deleteSavedType("Shape_"): +(a=this.lastShape="Shape_"+a,this.saved.put(a,this.vwr.getStructureState()))},"~S");c(b,"getSavedStructure",function(a){a=JV.StateManager.getNoCase(this.saved,0c&&(b=b.substring(0,c)+" #...more ("+b.length+" bytes -- use SHOW "+a+" or MESSAGE @"+a+" to view)");return b},"~S,~S,~N");c(b,"getUndoMax",function(){return this.maxUndo});c(b,"setUndoMax",function(a){this.maxUndo=Math.max(a,0);this.checkStack(this.getStack(603984065));this.checkStack(this.getStack(4139))},"~N");c(b,"getUndoRedoState",function(a){return this.popStack(a)},"~N");c(b,"canDo",function(a){return 0=q||c.atomIndex2>=q||(q=a.bondAtoms(a.at[c.atomIndex1],a.at[c.atomIndex2],c.order,c.mad,null,c.energy,!1,!0),q.colix=c.colix,q.shapeVisibilityFlags=c.shapeVisibilityFlags)}for(b=a.bondCount;0<=--b;)a.bo[b].index=b;this.vwr.setShapeProperty(1,"reportAll",null);return!0});b=r(function(){this.shapeVisibilityFlags=this.energy=this.order= +this.colix=this.mad=this.atomIndex2=this.atomIndex1=0;u(this,arguments)},JV,"Connection",null);x(b,function(a,b,c,q,e,g,j){this.atomIndex1=a;this.atomIndex2=b;this.mad=c;this.colix=q;this.order=e;this.energy=g;this.shapeVisibilityFlags=j},"~N,~N,~N,~N,~N,~N,~N")});n("JV");A(["java.util.Hashtable"],"JV.StatusManager","JU.Lst $.PT J.api.Interface J.c.CBK JS.SV JU.BSUtil $.Logger JV.JC".split(" "),function(){var b=r(function(){this.cbl=this.jsl=this.vwr=null;this.statusList="";this.allowStatusReporting= +!1;this.messageQueue=null;this.statusPtr=0;this.imageMap=this.jmolScriptCallbacks=null;this.echoing=!1;this.minSyncRepeatMs=100;this.stereoSync=this.syncDisabled=this.isSynced=this.drivingSync=this.syncingMouse=this.syncingScripts=!1;this.qualityPNG=this.qualityJPG=-1;this.audios=this.imageType=null;u(this,arguments)},JV,"StatusManager",null);N(b,function(){this.messageQueue=new java.util.Hashtable;this.jmolScriptCallbacks=new java.util.Hashtable});x(b,function(a){this.vwr=a},"JV.Viewer");c(b,"recordStatus", +function(a){return this.allowStatusReporting&&0c.length?"Jmol":3>c.length||c[2].equals("null")?c[1].substring(c[1].lastIndexOf("/")+1):c[2];var c=this.getJmolScriptCallback(J.c.CBK.IMAGE),q=this.notifyEnabled(J.c.CBK.IMAGE);(q||null!=c)&&this.fireJmolScriptCallback(q,J.c.CBK.IMAGE,w(-1,[c,a,b]),!0);if(Boolean.TRUE.equals(b)){if(null!=this.imageMap){for(var c= +new JU.Lst,e,q=this.imageMap.keySet().iterator();q.hasNext()&&((e=q.next())||1);)c.addLast(e);for(e=c.size();0<=--e;)this.imageMap.get(c.get(e)).closeMe()}}else null==this.imageMap&&(this.imageMap=new java.util.Hashtable),e=this.imageMap.get(a),Boolean.FALSE.equals(b)?null!=e&&e.closeMe():(null==e&&null!=b&&(e=this.vwr.apiPlatform.getImageDialog(a,this.imageMap)),null!=e&&(null==b?e.closeMe():e.setImage(b)))},"~S,~O");c(b,"setFileLoadStatus",function(a,b,c,q,e,g,j){null==a&&"resetUndo".equals(b)&& +(b=this.vwr.getProperty("DATA_API","getAppConsole",null),null!=b&&b.zap(),b=this.vwr.getZapName());this.setStatusChanged("fileLoaded",e,a,!1);null!=q&&this.setStatusChanged("fileLoadError",e,q,!1);var f=this.getJmolScriptCallback(J.c.CBK.LOADSTRUCT);if((g=g&&this.notifyEnabled(J.c.CBK.LOADSTRUCT))||null!=f){var l=this.vwr.getP("_smilesString");0!=l.length&&(b=l);this.fireJmolScriptCallback(g,J.c.CBK.LOADSTRUCT,w(-1,[f,a,b,c,q,Integer.$valueOf(e),this.vwr.getP("_modelNumber"),this.vwr.getModelNumberDotted(this.vwr.ms.mc- +1),j]),!0)}},"~S,~S,~S,~S,~N,~B,Boolean");c(b,"setStatusModelKit",function(a){var b=1==a?"ON":"OFF";this.setStatusChanged("modelkit",a,b,!1);a=this.getJmolScriptCallback(J.c.CBK.MODELKIT);var c=this.notifyEnabled(J.c.CBK.MODELKIT);(c||null!=a)&&this.fireJmolScriptCallback(c,J.c.CBK.MODELKIT,w(-1,[a,b]),!0)},"~N");c(b,"setStatusFrameChanged",function(a,b,c,q,e,g,j){if(null!=this.vwr.ms){var f=this.vwr.am.animationOn,l=f?-2-e:e;this.setStatusChanged("frameChanged",l,0<=e?this.vwr.getModelNumberDotted(e): +"",!1);var s=this.getJmolScriptCallback(J.c.CBK.ANIMFRAME),m=this.notifyEnabled(J.c.CBK.ANIMFRAME);(m||null!=s)&&this.fireJmolScriptCallback(m,J.c.CBK.ANIMFRAME,w(-1,[s,D(-1,[l,a,b,c,q,e]),j,Float.$valueOf(g)]),!1);!f&&!this.vwr.isJSNoAWT&&this.vwr.checkMenuUpdate()}},"~N,~N,~N,~N,~N,~N,~S");c(b,"setStatusDragDropped",function(a,b,c,q,e){this.setStatusChanged("dragDrop",0,"",!1);var g=this.getJmolScriptCallback(J.c.CBK.DRAGDROP),j=this.notifyEnabled(J.c.CBK.DRAGDROP);(j||null!=g)&&this.fireJmolScriptCallback(j, +J.c.CBK.DRAGDROP,w(-1,[g,Integer.$valueOf(a),Integer.$valueOf(b),Integer.$valueOf(c),q,e]),!0);return j},"~N,~N,~N,~S,~A");c(b,"setScriptEcho",function(a,b){if(!(null==a||this.echoing)){this.echoing=!0;this.setStatusChanged("scriptEcho",0,a,!1);var c=this.getJmolScriptCallback(J.c.CBK.ECHO),q=this.notifyEnabled(J.c.CBK.ECHO);if(q||null!=c)this.fireJmolScriptCallback(q,J.c.CBK.ECHO,w(-1,[c,a,Integer.$valueOf(b?1:0)]),!0);this.echoing=!1}},"~S,~B");c(b,"setStatusMeasuring",function(a,b,c,q){this.setStatusChanged(a, +b,c,!1);var e=null;a.equals("measureCompleted")?(JU.Logger.info("measurement["+b+"] = "+c),e=this.getJmolScriptCallback(J.c.CBK.MEASURE)):a.equals("measurePicked")&&(this.setStatusChanged("measurePicked",b,c,!1),JU.Logger.info("measurePicked "+b+" "+c));var g=this.notifyEnabled(J.c.CBK.MEASURE);(g||null!=e)&&this.fireJmolScriptCallback(g,J.c.CBK.MEASURE,w(-1,[e,c,Integer.$valueOf(b),a,Float.$valueOf(q)]),!0)},"~S,~N,~S,~N");c(b,"notifyError",function(a,b,c){var q=this.getJmolScriptCallback(J.c.CBK.ERROR), +e=this.notifyEnabled(J.c.CBK.ERROR);(e||null!=q)&&this.fireJmolScriptCallback(e,J.c.CBK.ERROR,w(-1,[q,a,b,this.vwr.getShapeErrorState(),c]),!0)},"~S,~S,~S");c(b,"notifyMinimizationStatus",function(a,b,c,q,e){var g=this.getJmolScriptCallback(J.c.CBK.MINIMIZATION),j=this.notifyEnabled(J.c.CBK.MINIMIZATION);(j||null!=g)&&this.fireJmolScriptCallback(j,J.c.CBK.MINIMIZATION,w(-1,[g,a,b,c,q,e]),!0)},"~S,Integer,Float,Float,~S");c(b,"setScriptStatus",function(a,b,c,q){if(-1>c){var e=-2-c;this.setStatusChanged("scriptStarted", +e,b,!1);a="script "+e+" started"}else if(null==a)return;var e=0==c?this.getJmolScriptCallback(J.c.CBK.SCRIPT):null,g="Script completed"===a;if(this.recordStatus("script")){var j=null!=q;this.setStatusChanged(j?"scriptError":"scriptStatus",0,a,!1);if(j||g)this.setStatusChanged("scriptTerminated",1,"Jmol script terminated"+(j?" unsuccessfully: "+a:" successfully"),!1)}g&&(this.vwr.getBoolean(603979879)&&this.vwr.getBoolean(603979825))&&(a=this.vwr.getChimeMessenger().scriptCompleted(this,b,q));b=w(-1, +[e,a,b,Integer.$valueOf(g?-1:c),q]);((c=this.notifyEnabled(J.c.CBK.SCRIPT))||null!=e)&&this.fireJmolScriptCallback(c,J.c.CBK.SCRIPT,b,!0);this.processScript(b)},"~S,~S,~N,~S");c(b,"processScript",function(a){var b=a[3].intValue();this.vwr.notifyScriptEditor(b,a);0==b&&this.vwr.sendConsoleMessage(null==a[1]?null:a[1].toString())},"~A");c(b,"doSync",function(){return this.isSynced&&this.drivingSync&&!this.syncDisabled});c(b,"setSync",function(a){if(this.syncingMouse){if(null!=a){var b=this.getJmolScriptCallback(J.c.CBK.SYNC); +null!=b&&this.fireJmolScriptCallback(!1,J.c.CBK.SYNC,w(-1,[b,a,"sending mouseSync"]),!0);this.syncSend(a,"*",0)}}else this.syncingScripts||this.syncSend("!"+this.vwr.tm.getMoveToText(this.minSyncRepeatMs/1E3,!1),"*",0)},"~S");c(b,"setSyncDriver",function(a){this.stereoSync&&4!=a&&(this.syncSend("SET_GRAPHICS_OFF","*",0),this.stereoSync=!1);switch(a){case 4:if(!this.syncDisabled)return;this.syncDisabled=!1;break;case 3:this.syncDisabled=!0;break;case 5:this.stereoSync=this.isSynced=this.drivingSync= +!0;break;case 1:this.isSynced=this.drivingSync=!0;break;case 2:this.drivingSync=!1;this.isSynced=!0;break;default:this.isSynced=this.drivingSync=!1}JU.Logger.debugging&&JU.Logger.debug(this.vwr.appletName+" sync mode="+a+"; synced? "+this.isSynced+"; driving? "+this.drivingSync+"; disabled? "+this.syncDisabled)},"~N");c(b,"syncSend",function(a,b,c){return 0!=c||this.notifyEnabled(J.c.CBK.SYNC)?(a=w(-1,[null,a,b,Integer.$valueOf(c)]),null!=this.cbl&&this.cbl.notifyCallback(J.c.CBK.SYNC,a),a[0]):null}, +"~S,~O,~N");c(b,"processService",function(a){var b=a.get("service");if(null==b)return null;if(C(b,"JS.SV")){var b=new java.util.Hashtable,c;for(a=a.entrySet().iterator();a.hasNext()&&((c=a.next())||1);)b.put(c.getKey(),JS.SV.oValue(c.getValue()));a=b}this.notifyEnabled(J.c.CBK.SERVICE)&&this.cbl.notifyCallback(J.c.CBK.SERVICE,w(-1,[null,a]));return a},"java.util.Map");c(b,"getSyncMode",function(){return!this.isSynced?0:this.drivingSync?1:2});c(b,"showUrl",function(a){null!=this.jsl&&this.jsl.showUrl(a)}, +"~S");c(b,"clearConsole",function(){this.vwr.sendConsoleMessage(null);null!=this.jsl&&this.cbl.notifyCallback(J.c.CBK.MESSAGE,null)});c(b,"functionXY",function(a,b,c){return null==this.jsl?L(Math.abs(b),Math.abs(c),0):this.jsl.functionXY(a,b,c)},"~S,~N,~N");c(b,"functionXYZ",function(a,b,c,q){return null==this.jsl?L(Math.abs(b),Math.abs(c),Math.abs(c),0):this.jsl.functionXYZ(a,b,c,q)},"~S,~N,~N,~N");c(b,"jsEval",function(a){return null==this.jsl?"":this.jsl.eval(a)},"~S");c(b,"createImage",function(a, +b,c,q,e){return null==this.jsl?null:this.jsl.createImage(a,b,null==c?q:c,e)},"~S,~S,~S,~A,~N");c(b,"getRegistryInfo",function(){return null==this.jsl?null:this.jsl.getRegistryInfo()});c(b,"dialogAsk",function(a,b,c){var q=a.equals("Save Image"),e=J.api.Interface.getOption("dialog.Dialog",this.vwr,"status");if(null==e)return null;e.setupUI(!1);q&&e.setImageInfo(this.qualityJPG,this.qualityPNG,this.imageType);a=e.getFileNameFromDialog(this.vwr,a,b);q&&null!=a&&(this.qualityJPG=e.getQuality("JPG"),this.qualityPNG= +e.getQuality("PNG"),q=e.getType(),null!=c&&(c.put("qualityJPG",Integer.$valueOf(this.qualityJPG)),c.put("qualityPNG",Integer.$valueOf(this.qualityPNG)),null!=q&&c.put("dialogImageType",q)),null!=q&&(this.imageType=q));return a},"~S,~S,java.util.Map");c(b,"getJspecViewProperties",function(a){return null==this.jsl?null:this.jsl.getJSpecViewProperty(null==a||0==a.length?"":":"+a)},"~S");c(b,"resizeInnerPanel",function(a,b){return null==this.jsl||a==this.vwr.getScreenWidth()&&b==this.vwr.getScreenHeight()? +D(-1,[a,b]):this.jsl.resizeInnerPanel("preferredWidthHeight "+a+" "+b+";")},"~N,~N");c(b,"resizeInnerPanelString",function(a){null!=this.jsl&&this.jsl.resizeInnerPanel(a)},"~S");c(b,"registerAudio",function(a,b){this.stopAudio(a);null==this.audios&&(this.audios=new java.util.Hashtable);null==b?this.audios.remove(a):this.audios.put(a,b.get("audioPlayer"))},"~S,java.util.Map");c(b,"stopAudio",function(a){null!=this.audios&&(a=this.audios.get(a),null!=a&&a.action("kill"))},"~S");c(b,"playAudio",function(a){if(this.vwr.getBoolean(603979797))try{var b= +null==a?"close":a.get("action"),c=null==a?null:a.get("id");if(null!=b&&0s.length())&&(j?Float.isNaN(q)||0==q:0==e))return!1;var r=null;null==p&&(r=JU.V3.newVsub(c,b),g&&r.scale(-1),this.internalRotationCenter.setT(b),this.rotationAxis.setT(r),this.internalTranslation=null==s?null:JU.V3.newV(s));b=null!=f;if(j)return null== +p?(0==e&&(e=NaN),Float.isNaN(e)?this.rotationRate=q:(n=v(Math.abs(e)/Math.abs(q)*this.spinFps+0.5),this.rotationRate=e/n*this.spinFps,null!=s&&this.internalTranslation.scale(1/n)),this.internalRotationAxis.setVA(r,0.017453292519943295*(Float.isNaN(this.rotationRate)?0:this.rotationRate)),this.isSpinInternal=!0,this.isSpinFixed=!1,this.isSpinSelected=b):e=q,this.setSpin(a,!0,e,m,p,f,l),!Float.isNaN(e);a=0.017453292519943295*e;this.internalRotationAxis.setVA(r,a);this.rotateAxisAngleRadiansInternal(a, +f,n,y);return!1},"J.api.JmolScriptEvaluator,JU.T3,JU.T3,~N,~N,~B,~B,JU.BS,~B,JU.V3,JU.Lst,~A,JU.M4,~B");c(b,"rotateAxisAngleRadiansInternal",function(a,b,c,q){this.internalRotationAngle=a;this.vectorT.set(this.internalRotationAxis.x,this.internalRotationAxis.y,this.internalRotationAxis.z);this.matrixRotate.rotate2(this.vectorT,this.vectorT2);this.axisangleT.setVA(this.vectorT2,a);this.applyRotation(this.matrixTemp3.setAA(this.axisangleT),!0,b,this.internalTranslation,1E6a&&(a=-20);var b=a*this.zmPctSet/50;0==b&&(b=0b?-1:0);this.zoomRatio=(b+this.zmPctSet)/this.zmPctSet;this.zmPctSet+=b},"~N");c(b,"zoomByFactor",function(a,b,c){!(0>=a)&&this.zoomEnabled&&(1!=this.mode?(this.zoomRatio= +a,this.zmPctSet*=a,this.resetXYCenter(b,c)):this.getNav()&&this.nav.zoomByFactor(a,b,c))},"~N,~N,~N");c(b,"zoomToPercent",function(a){this.zmPctSet=a;this.zoomRatio=0},"~N");c(b,"translateZBy",function(a){a>=this.screenPixelCount||(a=this.scalePixelsPerAngstrom/(1-1*a/this.screenPixelCount),a>=this.screenPixelCount||(a=100*(a/this.scaleDefaultPixelsPerAngstrom),this.zoomRatio=a/this.zmPctSet,this.zmPctSet=a))},"~N");c(b,"resetXYCenter",function(a,b){if(!(2147483647==a||2147483647==b)){this.windowCentered&& +this.vwr.setBooleanProperty("windowCentered",!1);var c=new JU.P3;this.transformPt3f(this.fixedRotationCenter,c);c.set(a,b,c.z);this.unTransformPoint(c,c);this.fixedTranslation.set(a,b,0);this.setFixedRotationCenter(c)}},"~N,~N");c(b,"zoomByPercent",function(a){var b=a*this.zmPctSet/100;0==b&&(b=0>a?-1:1);this.zoomRatio=(b+this.zmPctSet)/this.zmPctSet;this.zmPctSet+=b},"~N");c(b,"setScaleAngstromsPerInch",function(a){if(this.scale3D=0a?this.slabPercentSetting<=Math.max(0,this.depthPercentSetting):100<=this.slabPercentSetting))this.slabPercentSetting+=a,this.slabDepthChanged(),this.depthPercentSetting>=this.slabPercentSetting&& +(this.depthPercentSetting=this.slabPercentSetting-1)},"~N");c(b,"depthByPercentagePoints",function(a){this.depthPlane=null;if(!(0>a?0>=this.depthPercentSetting:this.depthPercentSetting>=Math.min(100,this.slabPercentSetting)))this.depthPercentSetting+=a,this.slabPercentSetting<=this.depthPercentSetting&&(this.slabPercentSetting=this.depthPercentSetting+1),this.slabDepthChanged()},"~N");c(b,"slabDepthByPercentagePoints",function(a){this.depthPlane=this.slabPlane=null;if(!(0>a?this.slabPercentSetting<= +Math.max(0,this.depthPercentSetting):this.depthPercentSetting>=Math.min(100,this.slabPercentSetting)))this.slabPercentSetting+=a,this.depthPercentSetting+=a,this.slabDepthChanged()},"~N");c(b,"slabToPercent",function(a){this.slabPlane=null;this.vwr.setFloatProperty("slabRange",0);this.slabPercentSetting=a;this.depthPercentSetting>=this.slabPercentSetting&&(this.depthPercentSetting=this.slabPercentSetting-1);this.slabDepthChanged()},"~N");c(b,"depthToPercent",function(a){this.depthPlane=null;this.vwr.g.setI("depth", +a);this.depthPercentSetting=a;this.slabPercentSetting<=this.depthPercentSetting&&(this.slabPercentSetting=this.depthPercentSetting+1);this.slabDepthChanged()},"~N");c(b,"zSlabToPercent",function(a){this.zSlabPercentSetting=a;this.zDepthPercentSetting>this.zSlabPercentSetting&&(this.zDepthPercentSetting=a)},"~N");c(b,"zDepthToPercent",function(a){this.zDepthPercentSetting=a;this.zDepthPercentSetting>this.zSlabPercentSetting&&(this.zSlabPercentSetting=a)},"~N");c(b,"slabInternal",function(a,b){b?(this.depthPlane= +a,this.depthPercentSetting=0):(this.slabPlane=a,this.slabPercentSetting=100);this.slabDepthChanged()},"JU.P4,~B");c(b,"setSlabDepthInternal",function(a){a?this.depthPlane=null:this.slabPlane=null;this.finalizeTransformParameters();this.slabInternal(this.getSlabDepthPlane(a),a)},"~B");c(b,"getSlabDepthPlane",function(a){if(a){if(null!=this.depthPlane)return this.depthPlane}else if(null!=this.slabPlane)return this.slabPlane;var b=this.matrixTransform;return JU.P4.new4(-b.m20,-b.m21,-b.m22,-b.m23+(a? +this.depthValue:this.slabValue))},"~B");c(b,"getCameraFactors",function(){this.aperatureAngle=360*Math.atan2(this.screenPixelCount/2,this.referencePlaneOffset)/3.141592653589793;this.cameraDistanceFromCenter=this.referencePlaneOffset/this.scalePixelsPerAngstrom;var a=JU.P3.new3(v(this.screenWidth/2),v(this.screenHeight/2),this.referencePlaneOffset);this.unTransformPoint(a,a);var b=JU.P3.new3(v(this.screenWidth/2),v(this.screenHeight/2),0);this.unTransformPoint(b,b);b.sub(this.fixedRotationCenter); +var c=JU.P3.new3(v(this.screenWidth/2),v(this.screenHeight/2),this.cameraDistanceFromCenter*this.scalePixelsPerAngstrom);this.unTransformPoint(c,c);c.sub(this.fixedRotationCenter);b.add(c);return w(-1,[a,b,this.fixedRotationCenter,JU.P3.new3(this.cameraDistanceFromCenter,this.aperatureAngle,this.scalePixelsPerAngstrom)])});c(b,"setPerspectiveDepth",function(a){this.perspectiveDepth!=a&&(this.perspectiveDepth=a,this.vwr.g.setB("perspectiveDepth",a),this.resetFitToScreen(!1))},"~B");c(b,"getPerspectiveDepth", +function(){return this.perspectiveDepth});c(b,"setCameraDepthPercent",function(a,b){this.resetNavigationPoint(b);var c=0>a?-a/100:a;0!=c&&(this.cameraDepthSetting=c,this.vwr.g.setF("cameraDepth",this.cameraDepthSetting),this.cameraDepth=NaN)},"~N,~B");c(b,"getCameraDepth",function(){return this.cameraDepthSetting});c(b,"setScreenParameters0",function(a,b,c,q,e,g){2147483647!=a&&(this.screenWidth=a,this.screenHeight=b,this.useZoomLarge=c,this.width=(this.antialias=q)?2*a:a,this.height=q?2*b:b,this.scaleFitToScreen(!1, +c,e,g))},"~N,~N,~B,~B,~B,~B");c(b,"setAntialias",function(a){var b=this.antialias!=a;this.width=(this.antialias=a)?2*this.screenWidth:this.screenWidth;this.height=this.antialias?2*this.screenHeight:this.screenHeight;b&&this.scaleFitToScreen(!1,this.useZoomLarge,!1,!1)},"~B");c(b,"defaultScaleToScreen",function(a){return this.screenPixelCount/2/a},"~N");c(b,"resetFitToScreen",function(a){this.scaleFitToScreen(a,this.vwr.g.zoomLarge,!0,!0)},"~B");c(b,"scaleFitToScreen",function(a,b,c,q){0==this.width|| +0==this.height?this.screenPixelCount=1:(this.fixedTranslation.set(this.width*(a?0.5:this.xTranslationFraction),this.height*(a?0.5:this.yTranslationFraction),0),this.setTranslationFractions(),a&&this.camera.set(0,0,0),q&&this.resetNavigationPoint(c),this.zoomHeight&&(b=this.height>this.width),this.screenPixelCount=b==this.height>this.width?this.height:this.width);2a)return 0;var c=this.scaleToPerspective(a,b*this.scalePixelsPerAngstrom/1E3);return 0this.zmPctSet&&(this.zmPctSet=5);2E5this.slabRange?this.zValueFromPercent(this.slabPercentSetting):v(Math.floor(this.modelCenterOffset*this.slabRange/(2*this.modelRadius)*(this.zmPctSet/100)));this.depthValue=this.zValueFromPercent(this.depthPercentSetting);this.zSlabPercentSetting== +this.zDepthPercentSetting?(this.zSlabValue=this.slabValue,this.zDepthValue=this.depthValue):(this.zSlabValue=this.zValueFromPercent(this.zSlabPercentSetting),this.zDepthValue=this.zValueFromPercent(this.zDepthPercentSetting));if(null!=this.zSlabPoint)try{this.transformPt3f(this.zSlabPoint,this.pointT2),this.zSlabValue=F(this.pointT2.z)}catch(a){if(!E(a,Exception))throw a;}this.vwr.g.setO("_slabPlane",JU.Escape.eP4(this.getSlabDepthPlane(!1)));this.vwr.g.setO("_depthPlane",JU.Escape.eP4(this.getSlabDepthPlane(!0))); +this.slabEnabled||(this.slabValue=0,this.depthValue=2147483647)});c(b,"zValueFromPercent",function(a){return v(Math.floor((1-a/50)*this.modelRadiusPixels+this.modelCenterOffset))},"~N");c(b,"calcTransformMatrix",function(){this.matrixTransform.setIdentity();this.vectorTemp.sub2(this.frameOffset,this.fixedRotationCenter);this.matrixTransform.setTranslation(this.vectorTemp);this.matrixTemp.setToM3(this.stereoFrame?this.matrixStereo:this.matrixRotate);this.matrixTransform.mul2(this.matrixTemp,this.matrixTransform); +this.matrixTemp.setIdentity();this.matrixTemp.m00=this.matrixTemp.m11=this.matrixTemp.m22=this.scalePixelsPerAngstrom;this.matrixTemp.m11=this.matrixTemp.m22=-this.scalePixelsPerAngstrom;this.matrixTransform.mul2(this.matrixTemp,this.matrixTransform);this.matrixTransform.m23+=this.modelCenterOffset;try{this.matrixTransformInv.setM4(this.matrixTransform).invert()}catch(a){if(E(a,Exception))System.out.println("ERROR INVERTING matrixTransform!");else throw a;}});c(b,"rotatePoint",function(a,b){this.matrixRotate.rotate2(a, +b);b.y=-b.y},"JU.T3,JU.T3");c(b,"getScreenTemp",function(a){this.matrixTransform.rotTrans2(a,this.fScrPt)},"JU.T3");c(b,"transformPtScr",function(a,b){b.setT(this.transformPt(a))},"JU.T3,JU.P3i");c(b,"transformPtScrT3",function(a,b){this.transformPt(a);b.setT(this.fScrPt)},"JU.T3,JU.T3");c(b,"transformPt3f",function(a,b){this.applyPerspective(a,a);b.setT(this.fScrPt)},"JU.T3,JU.P3");c(b,"transformPtNoClip",function(a,b){this.applyPerspective(a,null);b.setT(this.fScrPt)},"JU.T3,JU.T3");c(b,"transformPt", +function(a){return this.applyPerspective(a,this.internalSlab?a:null)},"JU.T3");c(b,"transformPtVib",function(a,b){this.ptVibTemp.setT(a);return this.applyPerspective(this.getVibrationPoint(b,this.ptVibTemp,NaN),a)},"JU.P3,JU.Vibration");c(b,"getVibrationPoint",function(a,b,c){return a.setCalcPoint(b,this.vibrationT,Float.isNaN(c)?this.vibrationScale:c,this.vwr.g.modulationScale)},"JU.Vibration,JU.T3,~N");c(b,"transformPt2Df",function(a,b){-3.4028235E38==a.z||3.4028235E38==a.z?(this.transformPt2D(a), +b.set(this.iScrPt.x,this.iScrPt.y,this.iScrPt.z)):this.transformPt3f(a,b)},"JU.T3,JU.P3");c(b,"transformPtScrT32D",function(a,b){-3.4028235E38==a.z||3.4028235E38==a.z?(this.transformPt2D(a),b.set(this.iScrPt.x,this.iScrPt.y,this.iScrPt.z)):this.transformPtScrT3(a,b)},"JU.T3,JU.P3");c(b,"transformPt2D",function(a){-3.4028235E38==a.z?(this.iScrPt.x=v(Math.floor(a.x/100*this.screenWidth)),this.iScrPt.y=v(Math.floor((1-a.y/100)*this.screenHeight))):(this.iScrPt.x=F(a.x),this.iScrPt.y=this.screenHeight- +F(a.y));this.antialias&&(this.iScrPt.x<<=1,this.iScrPt.y<<=1);this.matrixTransform.rotTrans2(this.fixedRotationCenter,this.fScrPt);this.iScrPt.z=F(this.fScrPt.z);return this.iScrPt},"JU.T3");c(b,"applyPerspective",function(a,b){this.getScreenTemp(a);var c=this.fScrPt.z;Float.isNaN(c)?(!this.haveNotifiedNaN&&JU.Logger.debugging&&JU.Logger.debug("NaN seen in TransformPoint"),this.haveNotifiedNaN=!0,c=this.fScrPt.z=1):0>=c&&(c=this.fScrPt.z=1);switch(this.mode){case 1:this.fScrPt.x-=this.navigationShiftXY.x; +this.fScrPt.y-=this.navigationShiftXY.y;break;case 2:this.fScrPt.x+=this.perspectiveShiftXY.x,this.fScrPt.y+=this.perspectiveShiftXY.y}this.perspectiveDepth&&(c=this.getPerspectiveFactor(c),this.fScrPt.x*=c,this.fScrPt.y*=c);switch(this.mode){case 1:this.fScrPt.x+=this.navigationOffset.x;this.fScrPt.y+=this.navigationOffset.y;break;case 2:this.fScrPt.x-=this.perspectiveShiftXY.x,this.fScrPt.y-=this.perspectiveShiftXY.y;case 0:this.fScrPt.x+=this.fixedRotationOffset.x,this.fScrPt.y+=this.fixedRotationOffset.y}Float.isNaN(this.fScrPt.x)&& +!this.haveNotifiedNaN&&(JU.Logger.debugging&&JU.Logger.debug("NaN found in transformPoint "),this.haveNotifiedNaN=!0);this.iScrPt.set(F(this.fScrPt.x),F(this.fScrPt.y),F(this.fScrPt.z));null!=b&&this.xyzIsSlabbedInternal(b)&&(this.fScrPt.z=this.iScrPt.z=1);return this.iScrPt},"JU.T3,JU.T3");c(b,"xyzIsSlabbedInternal",function(a){return null!=this.slabPlane&&0a.x*this.depthPlane.x+a.y*this.depthPlane.y+ +a.z*this.depthPlane.z+this.depthPlane.w},"JU.T3");c(b,"move",function(a,b,c,q,e,g,j){this.movetoThread=J.api.Interface.getOption("thread.MoveToThread",this.vwr,"tm");this.movetoThread.setManager(this,this.vwr,w(-1,[b,q,L(-1,[c,e,g,j])]));0this.ptTest3.distance(this.ptTest2)},"JU.V3,~N");c(b,"moveToPyMOL",function(a,b,c){var q=JU.M3.newA9(c);q.invert();var e=c[9],g=-c[10],j=-c[11],f=JU.P3.new3(c[12],c[13],c[14]),l=c[15],s=c[16],m=c[17];this.setPerspectiveDepth(!(0<=m));var m=Math.abs(m)/2,p=Math.tan(3.141592653589793*m/180),m=j*p,p=0.5/p-0.5,n=50/m;0 +e&&-0.01=b)this.setAll(c,g,m,j,f,l,s,e,y,p,n,r,u,v),this.vwr.moveUpdate(b),this.vwr.finalizeTransformParameters(); +else try{null==this.movetoThread&&(this.movetoThread=J.api.Interface.getOption("thread.MoveToThread",this.vwr,"tm"));var A=this.movetoThread.setManager(this,this.vwr,w(-1,[c,g,m,L(-1,[b,j,f,l,s,e,y,p,n,r,u,v])]));0>=A||this.vwr.g.waitForMoveTo?(0a)return"{0 0 1 0}";this.vectorT.normalize(); +this.vectorT.scale(1E3);b.append("{");JV.TransformManager.truncate0(b,this.vectorT.x);JV.TransformManager.truncate0(b,this.vectorT.y);JV.TransformManager.truncate0(b,this.vectorT.z);JV.TransformManager.truncate2(b,a);b.append("}");return b.toString()});c(b,"getMoveToText",function(a,b){this.finalizeTransformParameters();var c=new JU.SB;c.append("moveto ");b&&c.append("/* time, axisAngle */ ");c.appendF(a);c.append(" ").append(this.getRotationText());b&&c.append(" /* zoom, translation */ ");JV.TransformManager.truncate2(c, +this.zmPctSet);JV.TransformManager.truncate2(c,this.getTranslationXPercent());JV.TransformManager.truncate2(c,this.getTranslationYPercent());c.append(" ");b&&c.append(" /* center, rotationRadius */ ");c.append(this.getCenterText());c.append(" ").appendF(this.modelRadius);c.append(this.getNavigationText(b));b&&c.append(" /* cameraDepth, cameraX, cameraY */ ");JV.TransformManager.truncate2(c,this.cameraDepth);JV.TransformManager.truncate2(c,this.cameraSetting.x);JV.TransformManager.truncate2(c,this.cameraSetting.y); +c.append(";");return c.toString()},"~N,~B");c(b,"getCenterText",function(){return JU.Escape.eP(this.fixedRotationCenter)});c(b,"getRotateXyzText",function(){var a=new JU.SB,b=this.matrixRotate.m20,c=-(57.29577951308232*Math.asin(b)),q;0.999b?(b=-(57.29577951308232*Math.atan2(this.matrixRotate.m12,this.matrixRotate.m11)),q=0):(b=57.29577951308232*Math.atan2(this.matrixRotate.m21,this.matrixRotate.m22),q=57.29577951308232*Math.atan2(this.matrixRotate.m10,this.matrixRotate.m00));a.append("reset"); +a.append(";center ").append(this.getCenterText());0!=b&&(a.append("; rotate x"),JV.TransformManager.truncate2(a,b));0!=c&&(a.append("; rotate y"),JV.TransformManager.truncate2(a,c));0!=q&&(a.append("; rotate z"),JV.TransformManager.truncate2(a,q));a.append(";");this.addZoomTranslationNavigationText(a);return a.toString()});c(b,"addZoomTranslationNavigationText",function(a){100!=this.zmPct&&(a.append(" zoom"),JV.TransformManager.truncate2(a,this.zmPct),a.append(";"));var b=this.getTranslationXPercent(); +0!=b&&(a.append(" translate x"),JV.TransformManager.truncate2(a,b),a.append(";"));b=this.getTranslationYPercent();0!=b&&(a.append(" translate y"),JV.TransformManager.truncate2(a,b),a.append(";"));if(this.modelRadius!=this.rotationRadiusDefault||10==this.modelRadius)a.append(" set rotationRadius"),JV.TransformManager.truncate2(a,this.modelRadius),a.append(";");1==this.mode&&(a.append("navigate 0 center ").append(JU.Escape.eP(this.navigationCenter)),a.append(";navigate 0 translate"),JV.TransformManager.truncate2(a, +this.getNavigationOffsetPercent("X")),JV.TransformManager.truncate2(a,this.getNavigationOffsetPercent("Y")),a.append(";navigate 0 depth "),JV.TransformManager.truncate2(a,this.navigationDepthPercent),a.append(";"))},"JU.SB");c(b,"getRotateZyzText",function(a){var b=new JU.SB,c=this.vwr.ms.getInfoM("defaultOrientationMatrix");null==c?c=this.matrixRotate:(c=JU.M3.newM3(c),c.invert(),c.mul2(this.matrixRotate,c));var q=c.m22,e=57.29577951308232*Math.acos(q);0.999q?(q=57.29577951308232*Math.atan2(c.m10, +c.m11),c=0):(q=57.29577951308232*Math.atan2(c.m21,-c.m20),c=57.29577951308232*Math.atan2(c.m12,c.m02));0!=q&&(0!=e&&0!=c&&a)&&b.append("#Follows Z-Y-Z convention for Euler angles\n");b.append("reset");b.append(";center ").append(this.getCenterText());0!=q&&(b.append("; rotate z"),JV.TransformManager.truncate2(b,q));0!=e&&(b.append("; rotate y"),JV.TransformManager.truncate2(b,e));0!=c&&(b.append("; rotate z"),JV.TransformManager.truncate2(b,c));b.append(";");this.addZoomTranslationNavigationText(b); +return b.toString()},"~B");b.truncate0=c(b,"truncate0",function(a,b){a.appendC(" ");a.appendI(Math.round(b))},"JU.SB,~N");b.truncate2=c(b,"truncate2",function(a,b){a.appendC(" ");a.appendF(Math.round(100*b)/100)},"JU.SB,~N");c(b,"setSpinXYZ",function(a,b,c){Float.isNaN(a)||(this.spinX=a);Float.isNaN(b)||(this.spinY=b);Float.isNaN(c)||(this.spinZ=c);(this.isSpinInternal||this.isSpinFixed)&&this.clearSpin()},"~N,~N,~N");c(b,"setSpinFps",function(a){0>=a?a=1:50this.vwr.ms.mc?(this.vibrationOn=!1,this.vibrationT.x=0):(null==this.vibrationThread&&(this.vibrationThread=J.api.Interface.getOption("thread.VibrationThread",this.vwr,"tm"),this.vibrationThread.setManager(this,this.vwr,null),this.vibrationThread.start()),this.vibrationOn=!0):(null!=this.vibrationThread&&(this.vibrationThread.interrupt(),this.vibrationThread=null),this.vibrationOn= +!1,this.vibrationT.x=0)},"~B");c(b,"clearVibration",function(){this.setVibrationOn(!1);this.vibrationScale=0});c(b,"setStereoMode2",function(a){this.stereoMode=J.c.STER.CUSTOM;this.stereoColors=a},"~A");c(b,"setStereoMode",function(a){this.stereoColors=null;this.stereoMode=a;this.stereoDoubleDTI=a===J.c.STER.DTI;this.stereoDoubleFull=a===J.c.STER.DOUBLE},"J.c.STER");c(b,"setStereoDegrees",function(a){this.stereoDegrees=a;this.stereoRadians=0.017453292519943295*a},"~N");c(b,"getStereoRotationMatrix", +function(a){this.stereoFrame=a;if(!a)return this.matrixRotate;this.matrixTemp3.setAsYRotation(-this.stereoRadians);this.matrixStereo.mul2(this.matrixTemp3,this.matrixRotate);return this.matrixStereo},"~B");c(b,"isWindowCentered",function(){return this.windowCentered});c(b,"setWindowCentered",function(a){this.windowCentered=a;this.resetNavigationPoint(!0)},"~B");c(b,"setRotationRadius",function(a,b){a=this.modelRadius=0>=a?this.vwr.ms.calcRotationRadius(this.vwr.am.cmi,this.fixedRotationCenter,!0): +a;b&&this.vwr.setRotationRadius(a,!1);return a},"~N,~B");c(b,"setRotationCenterAndRadiusXYZ",function(a,b){this.resetNavigationPoint(!1);null==a?(this.setFixedRotationCenter(this.rotationCenterDefault),this.modelRadius=this.rotationRadiusDefault):(this.setFixedRotationCenter(a),b&&this.windowCentered&&(this.modelRadius=this.vwr.ms.calcRotationRadius(this.vwr.am.cmi,this.fixedRotationCenter,!0)))},"JU.T3,~B");c(b,"setNewRotationCenter",function(a,b){null==a&&(a=this.rotationCenterDefault);this.windowCentered? +(this.translateToPercent("x",0),this.translateToPercent("y",0),this.setRotationCenterAndRadiusXYZ(a,!0),b&&this.resetFitToScreen(!0)):this.moveRotationCenter(a,!0)},"JU.P3,~B");c(b,"moveRotationCenter",function(a,b){this.setRotationCenterAndRadiusXYZ(a,!1);b&&this.setRotationPointXY(this.fixedRotationCenter)},"JU.P3,~B");c(b,"setCenter",function(){this.setRotationCenterAndRadiusXYZ(this.fixedRotationCenter,!0)});c(b,"setCenterAt",function(a,b){var c=JU.P3.newP(b);switch(a){case 1073741826:break;case 96:c.add(this.vwr.ms.getAverageAtomPoint()); +break;case 1812599299:c.add(this.vwr.getBoundBoxCenter());break;default:c.setT(this.rotationCenterDefault)}this.setRotationCenterAndRadiusXYZ(c,!0);this.resetFitToScreen(!0)},"~N,JU.P3");c(b,"setFrameOffset",function(a){null==this.frameOffsets||0>a||a>=this.frameOffsets.length?this.frameOffset.set(0,0,0):this.frameOffset.setT(this.frameOffsets[a])},"~N");c(b,"setSelectedTranslation",function(a,b,c,q){if(this.perspectiveDepth)switch(this.bsSelectedAtoms=a,b.charCodeAt(0)){case 88:case 120:this.ptOffset.x+= +c;break;case 89:case 121:this.ptOffset.y+=c;break;case 90:case 122:this.ptOffset.z+=c}else{c=new JU.V3;switch(b.charCodeAt(0)){case 88:case 120:c.set(q,0,0);break;case 89:case 121:c.set(0,q,0);break;case 90:case 122:c.set(0,0,q)}this.vwr.moveAtoms(null,null,this.matrixRotate,c,this.internalRotationCenter,!1,a,!0,!1)}},"JU.BS,~S,~N,~N");c(b,"setNavFps",function(a){this.navFps=a},"~N");c(b,"calcCameraFactors",function(){Float.isNaN(this.cameraDepth)&&(this.cameraDepth=this.cameraDepthSetting,this.zoomFactor= +3.4028235E38);this.cameraDistance=this.cameraDepth*this.screenPixelCount;this.referencePlaneOffset=this.cameraDistance+this.screenPixelCount/2;this.scalePixelsPerAngstrom=this.scale3D&&!this.perspectiveDepth&&1!=this.mode?72/this.scale3DAngstromsPerInch*(this.antialias?2:1):this.screenPixelCount/this.visualRangeAngstroms;1!=this.mode&&(this.mode=0==this.camera.z?0:2);this.perspectiveShiftXY.set(0==this.camera.z?0:100*(this.camera.x*this.scalePixelsPerAngstrom/this.screenWidth),0==this.camera.z?0: +100*(this.camera.y*this.scalePixelsPerAngstrom/this.screenHeight),0);this.modelRadiusPixels=this.modelRadius*this.scalePixelsPerAngstrom;var a=2*this.modelRadius/this.visualRangeAngstroms*this.referencePlaneOffset;if(1==this.mode)this.calcNavCameraFactors(a);else{this.zoomFactor=3.4028235E38;this.modelCenterOffset=this.referencePlaneOffset;if(!this.scale3D||this.perspectiveDepth)this.scalePixelsPerAngstrom*=this.modelCenterOffset/a*this.zmPct/100;this.modelRadiusPixels=this.modelRadius*this.scalePixelsPerAngstrom}}); +c(b,"calcNavCameraFactors",function(a){3.4028235E38==this.zoomFactor?(1E4=a?this.referencePlaneOffset:this.referencePlaneOffset/a},"~N");c(b,"unTransformPoint",function(a,b){this.untransformedPoint.setT(a);switch(this.mode){case 1:this.untransformedPoint.x-=this.navigationOffset.x;this.untransformedPoint.y-=this.navigationOffset.y;break;case 2:this.fScrPt.x+=this.perspectiveShiftXY.x,this.fScrPt.y+=this.perspectiveShiftXY.y;case 0:this.untransformedPoint.x-=this.fixedRotationOffset.x,this.untransformedPoint.y-=this.fixedRotationOffset.y}if(this.perspectiveDepth){var c= +this.getPerspectiveFactor(this.untransformedPoint.z);this.untransformedPoint.x/=c;this.untransformedPoint.y/=c}switch(this.mode){case 1:this.untransformedPoint.x+=this.navigationShiftXY.x;this.untransformedPoint.y+=this.navigationShiftXY.y;break;case 2:this.untransformedPoint.x-=this.perspectiveShiftXY.x,this.untransformedPoint.y-=this.perspectiveShiftXY.y}this.matrixTransformInv.rotTrans2(this.untransformedPoint,b)},"JU.T3,JU.T3");c(b,"resetNavigationPoint",function(a){5>this.zmPct&&1!=this.mode? +(this.perspectiveDepth=!0,this.mode=1):(1==this.mode?(this.navMode=1,this.slabPercentSetting=0,this.perspectiveDepth=!0):a&&(this.slabPercentSetting=100),this.vwr.setFloatProperty("slabRange",0),a&&this.setSlabEnabled(1==this.mode),this.zoomFactor=3.4028235E38,this.zmPctSet=this.zmPct)},"~B");c(b,"setNavigatePt",function(a){this.navigationCenter.setT(a);this.navMode=3;this.navigating=!0;this.finalizeTransformParameters();this.navigating=!1},"JU.P3");c(b,"setNavigationSlabOffsetPercent",function(a){this.vwr.g.setF("navigationSlab", +a);this.calcCameraFactors();this.navigationSlabOffset=a/50*this.modelRadiusPixels},"~N");c(b,"getNavigationOffset",function(){this.transformPt3f(this.navigationCenter,this.navigationOffset);return this.navigationOffset});c(b,"getNavPtHeight",function(){return this.height/2});c(b,"getNavigationOffsetPercent",function(a){this.getNavigationOffset();return 0==this.width||0==this.height?0:"X"==a?100*(this.navigationOffset.x-this.width/2)/this.width:100*(this.navigationOffset.y-this.getNavPtHeight())/this.height}, +"~S");c(b,"getNavigationText",function(a){a=a?" /* navigation center, translation, depth */ ":" ";if(1!=this.mode)return a+"{0 0 0} 0 0 0";this.getNavigationOffset();return a+JU.Escape.eP(this.navigationCenter)+" "+this.getNavigationOffsetPercent("X")+" "+this.getNavigationOffsetPercent("Y")+" "+this.navigationDepthPercent},"~B");c(b,"setScreenParameters",function(a,b,c,q,e,g){var j=1==this.mode?JU.P3.newP(this.navigationCenter):null,f=JU.P3.newP(this.navigationOffset);f.x/=this.width;f.y/=this.height; +this.setScreenParameters0(a,b,c,q,e,g);null!=j&&(this.navigationCenter.setT(j),this.navTranslatePercentOrTo(-1,f.x*this.width,f.y*this.height),this.setNavigatePt(j))},"~N,~N,~B,~B,~B,~B");c(b,"navInterrupt",function(){null!=this.nav&&this.nav.interrupt()});c(b,"getNav",function(){if(null!=this.nav)return!0;this.nav=J.api.Interface.getOption("navigate.Navigator",this.vwr,"tm");if(null==this.nav)return!1;this.nav.set(this,this.vwr);return!0});c(b,"navigateList",function(a,b){this.getNav()&&this.nav.navigateList(a, +b)},"J.api.JmolScriptEvaluator,JU.Lst");c(b,"navigateAxis",function(a,b){this.getNav()&&this.nav.navigateAxis(a,b)},"JU.V3,~N");c(b,"setNavigationOffsetRelative",function(){this.getNav()&&this.nav.setNavigationOffsetRelative()});c(b,"navigateKey",function(a,b){this.getNav()&&this.nav.navigateKey(a,b)},"~N,~N");c(b,"setNavigationDepthPercent",function(a){this.getNav()&&this.nav.setNavigationDepthPercent(a)},"~N");c(b,"navTranslatePercentOrTo",function(a,b,c){this.getNav()&&this.nav.navTranslatePercentOrTo(a, +b,c)},"~N,~N,~N");c(b,"calcNavigationPoint",function(){this.getNav()&&this.nav.calcNavigationPoint()});c(b,"getNavigationState",function(){return 1==this.mode&&this.getNav()?this.nav.getNavigationState():""})});n("JV");A("java.lang.Enum J.api.JmolViewer $.PlatformViewer J.atomdata.AtomDataServer java.util.Hashtable JU.P3".split(" "),"JV.Viewer","java.util.Arrays JU.AU $.BS $.CU $.DF $.Lst $.P3i $.PT $.Quat $.Rdr $.SB J.adapter.smarter.SmarterJmolAdapter J.api.Interface J.atomdata.RadiusData J.c.FIL $.STER $.VDW J.i18n.GT JM.Measurement $.ModelSet JS.SV $.T J.thread.TimeoutThread JU.BSUtil $.C $.CommandHistory $.Elements $.Escape $.GData $.JmolMolecule $.Logger $.Parser $.TempArray JV.ActionManager $.AnimationManager $.ColorManager $.FileManager $.GlobalSettings $.JC $.ModelManager $.SelectionManager $.ShapeManager $.StateManager $.StatusManager $.TransformManager JV.binding.Binding".split(" "), +function(){var b=r(function(){this.queueOnHold=this.isSingleThreaded=this.isWebGL=this.isJSNoAWT=this.haveDisplay=this.autoExit=this.testAsync=!1;this.fullName="";this.fm=this.ms=this.definedAtomSets=this.compiler=null;this.mustRender=this.listCommands=this.isSyntaxCheck=this.isSyntaxAndFileCheck=this.isJNLP=this.isApplet=!1;this.appletName=this.htmlName="";this.tryPt=0;this.insertedCommand="";this.tm=this.sm=this.g=this.rm=this.slm=this.shm=this.dm=this.cm=this.am=this.acm=this.html5Applet=this.gdata= +null;this.logFilePath=this.syncId="";this.useCommandThread=this.noGraphicsAllowed=this.multiTouch=this.isSilent=this.isSignedAppletLocal=this.isSignedApplet=this.isPrintOnly=this.allowScripting=!1;this.tempArray=this.eval=this.scm=this.stm=this.mm=this.commandHistory=this.access=this.modelAdapter=this.display=this.vwrOptions=this.commandOptions=null;this.async=this.allowArrayDotNotation=!1;this.executor=null;this.screenHeight=this.screenWidth=0;this.errorMessageUntranslated=this.errorMessage=this.chainList= +this.chainMap=this.rd=this.defaultVdw=null;this.privateKey=0;this.dataOnly=!1;this.maximumSize=2147483647;this.gRight=null;this.isStereoSlave=!1;this.imageFontScaling=1;this.antialiased=!1;this.prevFrame=-2147483648;this.prevMorphModel=0;this.haveJDX=!1;this.jzt=this.outputManager=this.jsv=null;this.headless=this.isPreviewOnly=!1;this.movableBitSet=null;this.hasSelected=!1;this.lastData=this.jsc=this.smilesMatcher=this.minimizer=this.dssrParser=this.annotationParser=this.ligandModelSet=this.ligandModels= +this.mouse=null;this.motionEventNumber=0;this.inMotion=!1;this.refreshing=!0;this.axesAreTainted=!1;this.jsParams=this.captureParams=null;this.cirChecked=!1;this.hoverAtomIndex=-1;this.hoverText=null;this.hoverLabel="%U";this.hoverEnabled=!0;this.currentCursor=0;this.ptTemp=null;this.selectionHalosEnabled=!1;this.noFrankEcho=this.frankOn=!0;this.scriptEditorVisible=!1;this.pm=this.headlessImageParams=this.modelkit=this.jmolpopup=this.scriptEditor=this.appConsole=null;this.isTainted=!0;this.showSelected= +this.movingSelected=!1;this.ptNew=this.ptScreenNew=this.ptScreen=null;this.atomHighlighted=-1;this.creatingImage=!1;this.userVdwMars=this.userVdws=this.bsUserVdws=null;this.currentShapeID=-1;this.localFunctions=this.currentShapeState=null;this.$isKiosk=!1;this.displayLoadErrors=!0;this.$isParallel=!1;this.stateScriptVersionInt=2147483647;this.timeouts=this.jsExporter3D=null;this.chainCaseSpecified=!1;this.macros=this.nboParser=this.triangulator=this.jsonParser=this.jcm=this.jbr=this.logFileName=this.nmrCalculation= +null;this.consoleFontScale=1;u(this,arguments)},JV,"Viewer",J.api.JmolViewer,[J.atomdata.AtomDataServer,J.api.PlatformViewer]);N(b,function(){this.ptScreen=new JU.P3;this.ptScreenNew=new JU.P3;this.ptNew=new JU.P3});x(b,function(a){I(this,JV.Viewer,[]);this.commandHistory=new JU.CommandHistory;this.rd=new J.atomdata.RadiusData(null,0,null,null);this.defaultVdw=J.c.VDW.JMOL;this.localFunctions=new java.util.Hashtable;this.privateKey=Math.random();this.chainMap=new java.util.Hashtable;this.chainList= +new JU.Lst;this.setOptions(a)},"java.util.Map");c(b,"finalize",function(){JU.Logger.debugging&&JU.Logger.debug("vwr finalize "+this);ha(this,JV.Viewer,"finalize",[])});c(b,"setInsertedCommand",function(a){this.insertedCommand=a},"~S");b.getJmolVersion=f(b,"getJmolVersion",function(){return null==JV.Viewer.version_date?JV.Viewer.version_date=JV.JC.version+" "+JV.JC.date:JV.Viewer.version_date});b.allocateViewer=c(b,"allocateViewer",function(a,b,c,e,g,j,f,l){var s=new java.util.Hashtable;s.put("display", +a);s.put("adapter",b);s.put("statusListener",f);s.put("platform",l);s.put("options",j);s.put("fullName",c);s.put("documentBase",e);s.put("codeBase",g);return new JV.Viewer(s)},"~O,J.api.JmolAdapter,~S,java.net.URL,java.net.URL,~S,J.api.JmolStatusListener,J.api.GenericPlatform");c(b,"haveAccess",function(a){return this.access===a},"JV.Viewer.ACCESS");f(b,"getModelAdapter",function(){return null==this.modelAdapter?this.modelAdapter=new J.adapter.smarter.SmarterJmolAdapter:this.modelAdapter});f(b,"getSmartsMatch", +function(a,b){null==b&&(b=this.bsA());return this.getSmilesMatcher().getSubstructureSet(a,this.ms.at,this.ms.ac,b,2)},"~S,JU.BS");c(b,"isSubstructure",function(a,b){try{var c=this.getSmilesMatcher().find(a,b,10);return null!=c&&0e?this.fullName:this.fullName.substring(0,e);this.appletName=JU.PT.split(this.htmlName+"_","_")[0];this.syncId= +0>e?"":this.fullName.substring(e+2,this.fullName.length-2);this.access=this.checkOption2("access:READSPT","-r")?JV.Viewer.ACCESS.READSPT:this.checkOption2("access:NONE","-R")?JV.Viewer.ACCESS.NONE:JV.Viewer.ACCESS.ALL;(this.isPreviewOnly=a.containsKey("previewOnly"))&&a.remove("previewOnly");this.isPrintOnly=this.checkOption2("printOnly","-p");this.dataOnly=this.checkOption2("isDataOnly","\x00");this.autoExit=this.checkOption2("exit","-x");c=a.get("platform");e="unknown";null==c&&(c=this.commandOptions.contains("platform=")? +this.commandOptions.substring(this.commandOptions.indexOf("platform=")+9):"J.awt.Platform");if("string"==typeof c){e=c;this.isWebGL=0<=e.indexOf(".awtjs.");JV.Viewer.isJS=this.isJSNoAWT=this.isWebGL||0<=e.indexOf(".awtjs2d.");this.async=!this.dataOnly&&!this.autoExit&&(this.testAsync||JV.Viewer.isJS&&a.containsKey("async"));var g=c=null,j="?";self.Jmol&&(g=Jmol,c=Jmol._applets[this.htmlName.split("_object")[0]],j=Jmol._version);null!=j&&(this.html5Applet=c,JV.Viewer.jmolObject=g,JV.Viewer.strJavaVersion= +j,JV.Viewer.strJavaVendor="Java2Script "+(this.isWebGL?"(WebGL)":"(HTML5)"));c=J.api.Interface.getInterface(e,this,"setOptions")}this.apiPlatform=c;this.display=a.get("display");this.isSingleThreaded=this.apiPlatform.isSingleThreaded();this.noGraphicsAllowed=this.checkOption2("noDisplay","-n");this.headless=this.apiPlatform.isHeadless();this.haveDisplay=this.isWebGL||null!=this.display&&!this.noGraphicsAllowed&&!this.headless&&!this.dataOnly;this.noGraphicsAllowed=(new Boolean(this.noGraphicsAllowed& +null==this.display)).valueOf();this.headless=(new Boolean(this.headless|this.noGraphicsAllowed)).valueOf();this.haveDisplay?(this.mustRender=!0,this.multiTouch=this.checkOption2("multiTouch","-multitouch"),this.isWebGL||(this.display=document.getElementById(this.display))):this.display=null;this.apiPlatform.setViewer(this,this.display);c=a.get("graphicsAdapter");null==c&&!this.isWebGL&&(c=J.api.Interface.getOption("g3d.Graphics3D",this,"setOptions"));this.gdata=null==c&&(this.isWebGL||!JV.Viewer.isJS)? +new JU.GData:c;this.gdata.initialize(this,this.apiPlatform);this.stm=new JV.StateManager(this);this.cm=new JV.ColorManager(this,this.gdata);this.sm=new JV.StatusManager(this);e=a.containsKey("4DMouse");this.tm=JV.TransformManager.getTransformManager(this,2147483647,0,e);this.slm=new JV.SelectionManager(this);this.haveDisplay&&(this.acm=this.multiTouch?J.api.Interface.getOption("multitouch.ActionManagerMT",null,null):new JV.ActionManager,this.acm.setViewer(this,this.commandOptions+"-multitouch-"+a.get("multiTouch")), +this.mouse=this.apiPlatform.getMouseManager(this.privateKey,this.display),this.multiTouch&&!this.checkOption2("-simulated","-simulated")&&this.apiPlatform.setTransparentCursor(this.display));this.mm=new JV.ModelManager(this);this.shm=new JV.ShapeManager(this);this.tempArray=new JU.TempArray;this.am=new JV.AnimationManager(this);c=a.get("repaintManager");null==c&&(c=J.api.Interface.getOption("render.RepaintManager",this,"setOptions"));if(JV.Viewer.isJS||null!=c&&!c.equals(""))(this.rm=c).set(this, +this.shm);this.ms=new JM.ModelSet(this,null);this.initialize(!0,!1);this.fm=new JV.FileManager(this);this.definedAtomSets=new java.util.Hashtable;this.setJmolStatusListener(b);this.isApplet?(JU.Logger.info("vwrOptions: \n"+JU.Escape.escapeMap(this.vwrOptions)),b=this.vwrOptions.get("documentLocation"),!JV.Viewer.isJS&&(null!=b&&b.startsWith("file:/"))&&(b=b.substring(0,b.substring(0,(b+"?").indexOf("?")).lastIndexOf("/")),JU.Logger.info("setting current directory to "+b),this.cd(b)),b=JV.Viewer.appletDocumentBase, +e=b.indexOf("#"),0<=e&&(b=b.substring(0,e)),e=b.lastIndexOf("?"),0<=e&&(b=b.substring(0,e)),e=b.lastIndexOf("/"),0<=e&&(b=b.substring(0,e)),JV.Viewer.jsDocumentBase=b,this.fm.setAppletContext(JV.Viewer.appletDocumentBase),b=a.get("appletProxy"),null!=b&&this.setStringProperty("appletProxy",b),this.isSignedApplet?(this.logFilePath=JU.PT.rep(JV.Viewer.appletCodeBase,"file://",""),this.logFilePath=JU.PT.rep(this.logFilePath,"file:/",""),0<=this.logFilePath.indexOf("//")?this.logFilePath=null:this.isSignedAppletLocal= +!0):JV.Viewer.isJS||(this.logFilePath=null),new J.i18n.GT(this,a.get("language")),JV.Viewer.isJS&&this.acm.createActions()):(this.gdata.setBackgroundTransparent(this.checkOption2("backgroundTransparent","-b")),(this.isSilent=this.checkOption2("silent","-i"))&&JU.Logger.setLogLevel(3),this.headless&&!this.isSilent&&JU.Logger.info("Operating headless display="+this.display+" nographicsallowed="+this.noGraphicsAllowed),this.isSyntaxCheck=(this.isSyntaxAndFileCheck=this.checkOption2("checkLoad","-C"))|| +this.checkOption2("check","-c"),this.listCommands=this.checkOption2("listCommands","-l"),this.cd("."),this.headless&&(this.headlessImageParams=a.get("headlessImage"),c=a.get("headlistMaxTimeMs"),null==c&&(c=Integer.$valueOf(6E4)),this.setTimeout(""+Math.random(),c.intValue(),"exitJmol")));this.useCommandThread=!this.headless&&this.checkOption2("useCommandThread","-threaded");this.setStartupBooleans();this.setIntProperty("_nProcessors",JV.Viewer.nProcessors);this.isSilent||JU.Logger.info("(C) 2015 Jmol Development\nJmol Version: "+ +JV.Viewer.getJmolVersion()+"\njava.vendor: "+JV.Viewer.strJavaVendor+"\njava.version: "+JV.Viewer.strJavaVersion+"\nos.name: "+JV.Viewer.strOSName+"\nAccess: "+this.access+"\nmemory: "+this.getP("_memory")+"\nprocessors available: "+JV.Viewer.nProcessors+"\nuseCommandThread: "+this.useCommandThread+(!this.isApplet?"":"\nappletId:"+this.htmlName+(this.isSignedApplet?" (signed)":"")));this.zap(!1,!0,!1);this.g.setO("language",J.i18n.GT.getLanguage());this.g.setO("_hoverLabel",this.hoverLabel);this.stm.setJmolDefaults(); +JU.Elements.covalentVersion=1;this.allowArrayDotNotation=!0;this.allowScripting&&this.getScriptManager()},"java.util.Map");c(b,"setMaximumSize",function(a){this.maximumSize=Math.max(a,100)},"~N");c(b,"setStereo",function(a,b){this.isStereoSlave=a;this.gRight=b},"~B,~O");c(b,"getMenu",function(a){this.getPopupMenu();return a.equals("\x00")?(this.popupMenu(this.screenWidth-120,0,"j"),"OK"):null==this.jmolpopup?"":this.jmolpopup.jpiGetMenuAsString("Jmol version "+JV.Viewer.getJmolVersion()+"|_GET_MENU|"+ +a)},"~S");f(b,"resizeInnerPanel",function(a,b){if(!this.autoExit&&this.haveDisplay)return this.sm.resizeInnerPanel(a,b);this.setScreenDimension(a,b);return D(-1,[this.screenWidth,this.screenHeight])},"~N,~N");f(b,"setScreenDimension",function(a,b){b=Math.min(b,this.maximumSize);a=Math.min(a,this.maximumSize);this.tm.stereoDoubleFull&&(a=v((a+1)/2));this.screenWidth==a&&this.screenHeight==b||this.resizeImage(a,b,!1,!1,!0)},"~N,~N");c(b,"resizeImage",function(a,b,c,e,g){if(c||!this.creatingImage){var j= +this.antialiased;this.antialiased=g?this.g.antialiasDisplay&&this.checkMotionRendering(603979786):c&&!e?this.g.antialiasImages:!1;!e&&(!c&&(0=a?1:1*(this.g.zoomLarge==b>a?b:a)/this.getScreenDim());0this.screenWidth?this.screenHeight: +this.screenWidth});c(b,"setWidthHeightVar",function(){this.g.setI("_width",this.screenWidth);this.g.setI("_height",this.screenHeight)});c(b,"getBoundBoxCenterX",function(){return v(this.screenWidth/2)});c(b,"getBoundBoxCenterY",function(){return v(this.screenHeight/2)});c(b,"updateWindow",function(a,b){if(!this.refreshing||this.creatingImage)return this.refreshing?!1:!JV.Viewer.isJS;(this.isTainted||this.tm.slabEnabled)&&this.setModelVisibility();this.isTainted=!1;null!=this.rm&&0!=a&&this.setScreenDimension(a, +b);return!0},"~N,~N");c(b,"getImage",function(a,b){var c=null;try{this.beginRendering(a,b),this.render(),this.gdata.endRendering(),c=this.gdata.getScreenImage(b)}catch(e){if(E(e,Error))this.gdata.getScreenImage(b),this.handleError(e,!1),this.setErrorMessage("Error during rendering: "+e,null);else if(E(e,Exception))System.out.println("render error"+e);else throw e;}return c},"~B,~B");c(b,"beginRendering",function(a,b){this.gdata.beginRendering(this.tm.getStereoRotationMatrix(a),this.g.translucent, +b,!this.checkMotionRendering(603979967))},"~B,~B");c(b,"render",function(){if(!(null==this.mm.modelSet||!this.mustRender||!this.refreshing&&!this.creatingImage||null==this.rm)){var a=this.antialiased&&this.g.antialiasTranslucent,b=this.shm.finalizeAtoms(this.tm.bsSelectedAtoms,!0);this.isWebGL?(this.rm.renderExport(this.gdata,this.ms,this.jsParams),this.notifyViewerRepaintDone()):(this.rm.render(this.gdata,this.ms,!0,b),this.gdata.setPass2(a)&&(this.tm.setAntialias(a),this.rm.render(this.gdata,this.ms, +!1,null),this.tm.setAntialias(this.antialiased)))}});c(b,"drawImage",function(a,b,c,e,g){null!=a&&null!=b&&this.apiPlatform.drawImage(a,b,c,e,this.screenWidth,this.screenHeight,g);this.gdata.releaseScreenImage()},"~O,~O,~N,~N,~B");c(b,"getScreenImage",function(){return this.getScreenImageBuffer(null,!0)});f(b,"getScreenImageBuffer",function(a,b){if(this.isWebGL)return b?this.apiPlatform.allocateRgbImage(0,0,null,0,!1,!0):null;var c=this.tm.stereoDoubleFull||this.tm.stereoDoubleDTI,e=this.tm.stereoMode.isBiColor(), +g=null==a&&c;e?(this.beginRendering(!0,b),this.render(),this.gdata.endRendering(),this.gdata.snapshotAnaglyphChannelBytes(),this.beginRendering(!1,b),this.render(),this.gdata.endRendering(),this.gdata.applyAnaglygh(this.tm.stereoMode,this.tm.stereoColors),e=this.gdata.getScreenImage(b)):e=this.getImage(c,b);var j=null;g&&(j=this.apiPlatform.newBufferedImage(e,this.tm.stereoDoubleDTI?this.screenWidth:this.screenWidth<<1,this.screenHeight),a=this.apiPlatform.getGraphics(j));null!=a&&(c&&(this.tm.stereoMode=== +J.c.STER.DTI?(this.drawImage(a,e,this.screenWidth>>1,0,!0),e=this.getImage(!1,!1),this.drawImage(a,e,0,0,!0),a=null):(this.drawImage(a,e,this.screenWidth,0,!1),e=this.getImage(!1,!1))),null!=a&&this.drawImage(a,e,0,0,!1));return g?j:e},"~O,~B");c(b,"evalStringWaitStatusQueued",function(a,b,c,e,g){return null==this.getScriptManager()?null:this.scm.evalStringWaitStatusQueued(a,b,c,e,g)},"~S,~S,~S,~B,~B");c(b,"popupMenu",function(a,b,c){if(this.haveDisplay&&this.refreshing&&!this.isPreviewOnly&&!this.g.disablePopupMenu)switch(c.charCodeAt(0)){case 106:try{this.getPopupMenu(), +this.jmolpopup.jpiShow(a,b)}catch(e){JU.Logger.info(e.toString()),this.g.disablePopupMenu=!0}break;case 97:case 98:case 109:if(null==this.getModelkit(!0))break;this.modelkit.showMenu(a,b)}},"~N,~N,~S");c(b,"getModelkit",function(a){null==this.modelkit?(this.modelkit=J.api.Interface.getInterface("J.modelkit.ModelKit",this,"script")).setMenu(this.apiPlatform.getMenuPopup(null,"m")):a&&this.modelkit.updateMenu();return this.modelkit},"~B");c(b,"getPopupMenu",function(){if(this.g.disablePopupMenu)return null; +if(null==this.jmolpopup&&(this.jmolpopup=this.allowScripting?this.apiPlatform.getMenuPopup(this.menuStructure,"j"):null,null==this.jmolpopup))return this.async||(this.g.disablePopupMenu=!0),null;this.isJSNoAWT&&this.checkMenuUpdate();return this.jmolpopup.jpiGetMenuAsObject()});f(b,"setMenu",function(a,b){b&&JU.Logger.info("Setting menu "+(0==a.length?"to Jmol defaults":"from file "+a));0==a.length?a=null:b&&(a=this.getFileAsString3(a,!1,null));this.getProperty("DATA_API","setMenu",a);this.sm.setCallbackFunction("menu", +a)},"~S,~B");c(b,"setStatusFrameChanged",function(a){a&&(this.prevFrame=-2147483648);this.tm.setVibrationPeriod(NaN);var b=this.am.firstFrameIndex,c=this.am.lastFrameIndex,e=this.am.isMovie;a=this.am.cmi;b==c&&!e&&(a=b);var g=this.getModelFileNumber(a),j=this.am.cmi,f=g,l=g%1E6,s=e?b:this.getModelFileNumber(b),m=e?c:this.getModelFileNumber(c),p;e?p=""+(j+1):0==f?(p=this.getModelNumberDotted(b),b!=c&&(p+=" - "+this.getModelNumberDotted(c)),v(s/1E6)==v(m/1E6)&&(f=s)):p=this.getModelNumberDotted(a); +0!=f&&(f=1E6>f?1:v(f/1E6));e||(this.g.setI("_currentFileNumber",f),this.g.setI("_currentModelNumberInFile",l));b=this.am.currentMorphModel;this.g.setI("_currentFrame",j);this.g.setI("_morphCount",this.am.morphCount);this.g.setF("_currentMorphFrame",b);this.g.setI("_frameID",g);this.g.setI("_modelIndex",a);this.g.setO("_modelNumber",p);this.g.setO("_modelName",0>a?"":this.getModelName(a));g=0>a?"":this.ms.getModelTitle(a);this.g.setO("_modelTitle",null==g?"":g);this.g.setO("_modelFile",0>a?"":this.ms.getModelFileName(a)); +this.g.setO("_modelType",0>a?"":this.ms.getModelFileType(a));j==this.prevFrame&&b==this.prevMorphModel||(this.prevFrame=j,this.prevMorphModel=b,g=this.getModelName(j),e?g=""+(""===g?j+1:this.am.caf+1)+": "+g:(e=""+this.getModelNumberDotted(j),e.equals(g)||(g=e+": "+g)),this.sm.setStatusFrameChanged(f,l,0>this.am.animationDirection?-s:s,0>this.am.currentDirection?-m:m,j,b,g),this.doHaveJDX()&&this.getJSV().setModel(a),JV.Viewer.isJS&&this.updateJSView(a,-1))},"~B,~B");c(b,"doHaveJDX",function(){return this.haveJDX|| +(this.haveJDX=this.getBooleanProperty("_jspecview"))});c(b,"getJSV",function(){null==this.jsv&&(this.jsv=J.api.Interface.getOption("jsv.JSpecView",this,"script"),this.jsv.setViewer(this));return this.jsv});c(b,"getJDXBaseModelIndex",function(a){return!this.doHaveJDX()?a:this.getJSV().getBaseModelIndex(a)},"~N");c(b,"getJspecViewProperties",function(a){a=this.sm.getJspecViewProperties(""+a);null!=a&&(this.haveJDX=!0);return a},"~O");c(b,"scriptEcho",function(a){JU.Logger.isActiveLevel(4)&&(JV.Viewer.isJS&& +System.out.println(a),this.sm.setScriptEcho(a,this.isScriptQueued()),this.listCommands&&(null!=a&&0==a.indexOf("$["))&&JU.Logger.info(a))},"~S");c(b,"isScriptQueued",function(){return null!=this.scm&&this.scm.isScriptQueued()});c(b,"notifyError",function(a,b,c){this.g.setO("_errormessage",c);this.sm.notifyError(a,b,c)},"~S,~S,~S");c(b,"jsEval",function(a){return""+this.sm.jsEval(a)},"~S");c(b,"jsEvalSV",function(a){return JS.SV.getVariable(JV.Viewer.isJS?this.sm.jsEval(a):this.jsEval(a))},"~S");c(b, +"setFileLoadStatus",function(a,b,c,e,g,j){this.setErrorMessage(g,null);this.g.setI("_loadPoint",a.getCode());var f=a!==J.c.FIL.CREATING_MODELSET;f&&this.setStatusFrameChanged(!1,!1);this.sm.setFileLoadStatus(b,c,e,g,a.getCode(),f,j);f&&(this.doHaveJDX()&&this.getJSV().setModel(this.am.cmi),JV.Viewer.isJS&&this.updateJSView(this.am.cmi,-2))},"J.c.FIL,~S,~S,~S,~S,Boolean");c(b,"getZapName",function(){return this.g.modelKitMode?"Jmol Model Kit":"zapped"});c(b,"setStatusMeasuring",function(a,b,c,e){this.sm.setStatusMeasuring(a, +b,c,e)},"~S,~N,~S,~N");c(b,"notifyMinimizationStatus",function(){var a=this.getP("_minimizationStep"),b=this.getP("_minimizationForceField"),c=this.getP("_minimizationStatus"),e="starting".equals(c),g="done".equals(c)||"failed".equals(c),j=null!=this.minimizer&&(g||e)?this.minimizer.bsAtoms:null,f=null==j?-1:j.nextSetBit(0),l=0<=f?this.getModelIndexForAtom(f):-1;e&&0<=f&&this.sm.setStatusStructureModified(f,l,3,"minimize:"+c,j.cardinality(),j);this.sm.notifyMinimizationStatus(c,"string"==typeof a? +Integer.$valueOf(0):a,this.getP("_minimizationEnergy"),a.toString().equals("0")?Float.$valueOf(0):this.getP("_minimizationEnergyDiff"),b);g&&0<=f&&this.sm.setStatusStructureModified(f,l,-3,"minimize:"+c,j.cardinality(),j)});c(b,"setStatusAtomPicked",function(a,b,c,e){e&&this.setSelectionSet(JU.BSUtil.newAndSetBit(a));null==b&&(b=this.g.pickLabel,b=0==b.length?this.getAtomInfoXYZ(a,this.g.messageStyleChime?4:2)+(null==this.getOperativeSymmetry()?"":" ("+this.getAtomInfoXYZ(a,3)+")"):this.ms.getAtomInfo(a, +b,this.ptTemp));this.setPicked(a,!1);0>a&&(e=this.getPendingMeasurement(),null!=e&&(b=b.substring(0,b.length-1)+',"'+e.getString()+'"]'));this.g.setO("_pickinfo",b);this.sm.setStatusAtomPicked(a,b,c);0>a||(1==this.sm.getSyncMode()&&this.doHaveJDX()&&this.getJSV().atomPicked(a),JV.Viewer.isJS&&this.updateJSView(this.ms.at[a].mi,a))},"~N,~S,java.util.Map,~B");f(b,"getProperty",function(a,b,c){if(!"DATA_API".equals(a))return this.getPropertyManager().getProperty(a,b,c);switch("scriptCheck.........consoleText.........scriptEditor........scriptEditorState...getAppConsole.......getScriptEditor.....setMenu.............spaceGroupInfo......disablePopupMenu....defaultDirectory....getPopupMenu........shapeManager........getPreference.......".indexOf(b)){case 0:return this.scriptCheckRet(c, +!0);case 20:return null==this.appConsole?"":this.appConsole.getText();case 40:return this.showEditor(c),null;case 60:return this.scriptEditorVisible=c.booleanValue(),null;case 80:return this.$isKiosk?this.appConsole=null:C(c,"J.api.JmolAppConsoleInterface")?this.appConsole=c:null!=c&&!c.booleanValue()?this.appConsole=null:null==this.appConsole&&(null!=c&&c.booleanValue())&&(JV.Viewer.isJS&&(this.appConsole=J.api.Interface.getOption("consolejs.AppletConsole",this,"script")),null!=this.appConsole&& +this.appConsole.start(this)),this.scriptEditor=JV.Viewer.isJS||null==this.appConsole?null:this.appConsole.getScriptEditor(),this.appConsole;case 100:return null==this.appConsole&&(null!=c&&c.booleanValue())&&(this.getProperty("DATA_API","getAppConsole",Boolean.TRUE),this.scriptEditor=null==this.appConsole?null:this.appConsole.getScriptEditor()),this.scriptEditor;case 120:return null!=this.jmolpopup&&this.jmolpopup.jpiDispose(),this.jmolpopup=null,this.menuStructure=c;case 140:return this.getSymTemp().getSpaceGroupInfo(this.ms, +null,-1,!1,null);case 160:return this.g.disablePopupMenu=!0,null;case 180:return this.g.defaultDirectory;case 200:return"string"==typeof c?this.getMenu(c):this.getPopupMenu();case 220:return this.shm.getProperty(c);case 240:return this.sm.syncSend("getPreference",c,1)}JU.Logger.error("ERROR in getProperty DATA_API: "+b);return null},"~S,~S,~O");c(b,"notifyMouseClicked",function(a,b,c,e){var g=JV.binding.Binding.getButtonMods(c),j=JV.binding.Binding.getClickCount(c);this.g.setI("_mouseX",a);this.g.setI("_mouseY", +this.screenHeight-b);this.g.setI("_mouseAction",c);this.g.setI("_mouseModifiers",g);this.g.setI("_clickCount",j);return this.sm.setStatusClicked(a,this.screenHeight-b,c,j,e)},"~N,~N,~N,~N");c(b,"getOutputManager",function(){return null!=this.outputManager?this.outputManager:(this.outputManager=J.api.Interface.getInterface("JV.OutputManager"+(JV.Viewer.isJS?"JS":"Awt"),this,"file")).setViewer(this,this.privateKey)});c(b,"getJzt",function(){return null==this.jzt?this.jzt=J.api.Interface.getInterface("JU.ZipTools", +this,"zip"):this.jzt});c(b,"readFileAsMap",function(a,b,c){this.getJzt().readFileAsMap(a,b,c)},"java.io.BufferedInputStream,java.util.Map,~S");c(b,"getZipDirectoryAsString",function(a){a=this.fm.getBufferedInputStreamOrErrorMessageFromName(a,a,!1,!1,null,!1,!0);return this.getJzt().getZipDirectoryAsStringAndClose(a)},"~S");f(b,"getImageAsBytes",function(a,b,c,e,g){return this.getOutputManager().getImageAsBytes(a,b,c,e,g)},"~S,~N,~N,~N,~A");f(b,"releaseScreenImage",function(){this.gdata.releaseScreenImage()}); +c(b,"setDisplay",function(a){this.display=a;this.apiPlatform.setViewer(this,a)},"~O");c(b,"newMeasurementData",function(a,b){return J.api.Interface.getInterface("JM.MeasurementData",this,"script").init(a,this,b)},"~S,JU.Lst");c(b,"getDataManager",function(){return null==this.dm?this.dm=J.api.Interface.getInterface("JV.DataManager",this,"script").set(this):this.dm});c(b,"getScriptManager",function(){if(this.allowScripting&&null==this.scm){this.scm=J.api.Interface.getInterface("JS.ScriptManager",this, +"setOptions");if(JV.Viewer.isJS&&null==this.scm)throw new NullPointerException;if(null==this.scm)return this.allowScripting=!1,null;this.eval=this.scm.setViewer(this);this.useCommandThread&&this.scm.startCommandWatcher(!0)}return this.scm});c(b,"checkOption2",function(a,b){return this.vwrOptions.containsKey(a)&&!this.vwrOptions.get(a).toString().equals("false")||0<=this.commandOptions.indexOf(b)},"~S,~S");c(b,"setStartupBooleans",function(){this.setBooleanProperty("_applet",this.isApplet);this.setBooleanProperty("_jspecview", +!1);this.setBooleanProperty("_signedApplet",this.isSignedApplet);this.setBooleanProperty("_headless",this.headless);this.setStringProperty("_restrict",'"'+this.access+'"');this.setBooleanProperty("_useCommandThread",this.useCommandThread);this.setBooleanPropertyTok("doubleprecision",603979831,!1)});c(b,"getExportDriverList",function(){return this.haveAccess(JV.Viewer.ACCESS.ALL)?this.g.getParameter("exportDrivers",!0):""});f(b,"dispose",function(){this.gRight=null;null!=this.mouse&&(this.acm.dispose(), +this.mouse.dispose(),this.mouse=null);this.clearScriptQueue();this.clearThreads();this.haltScriptExecution();null!=this.scm&&this.scm.clear(!0);this.gdata.destroy();null!=this.jmolpopup&&this.jmolpopup.jpiDispose();null!=this.modelkit&&this.modelkit.dispose();try{null!=this.appConsole&&(this.appConsole.dispose(),this.appConsole=null),null!=this.scriptEditor&&(this.scriptEditor.dispose(),this.scriptEditor=null)}catch(a){if(!E(a,Exception))throw a;}});c(b,"reset",function(a){this.ms.setBoundBox(null, +null,!0,0);this.axesAreTainted=!0;this.tm.homePosition(a);this.ms.setCrystallographicDefaults()?this.stm.setCrystallographicDefaults():this.setAxesMode(603979809);this.prevFrame=-2147483648;this.tm.spinOn||this.setSync()},"~B");f(b,"homePosition",function(){this.evalString("reset spin")});c(b,"initialize",function(a,b){this.g=new JV.GlobalSettings(this,this.g,a);this.setStartupBooleans();this.setWidthHeightVar();this.haveDisplay&&(this.g.setB("_is2D",JV.Viewer.isJS&&!this.isWebGL),this.g.setB("_multiTouchClient", +this.acm.isMTClient()),this.g.setB("_multiTouchServer",this.acm.isMTServer()));this.cm.setDefaultColors(!1);this.setObjectColor("background","black");this.setObjectColor("axis1","red");this.setObjectColor("axis2","green");this.setObjectColor("axis3","blue");this.am.setAnimationOn(!1);this.am.setAnimationFps(this.g.animationFps);this.sm.playAudio(null);this.sm.allowStatusReporting=this.g.statusReporting;this.setBooleanPropertyTok("antialiasDisplay",603979786,b?!0:this.g.antialiasDisplay);this.stm.resetLighting(); +this.tm.setDefaultPerspective()},"~B,~B");c(b,"saveModelOrientation",function(){this.ms.saveModelOrientation(this.am.cmi,this.stm.getOrientation())});c(b,"restoreModelOrientation",function(a){a=this.ms.getModelOrientation(a);null!=a&&a.restore(-1,!0)},"~N");c(b,"restoreModelRotation",function(a){a=this.ms.getModelOrientation(a);null!=a&&a.restore(-1,!1)},"~N");c(b,"getGLmolView",function(){var a=this.tm,b=a.fixedRotationCenter,c=a.getRotationQ();return{center:b,quaternion:c,xtrans:a.xTranslationFraction, +ytrans:a.yTranslationFraction,scale:a.scalePixelsPerAngstrom,zoom:a.zmPctSet,cameraDistance:a.cameraDistance,pixelCount:a.screenPixelCount,perspective:a.perspectiveDepth,width:a.width,height:a.height}});c(b,"setRotationRadius",function(a,b){b&&(a=this.tm.setRotationRadius(a,!1));this.ms.setRotationRadius(this.am.cmi,a)&&this.g.setF("rotationRadius",a)},"~N,~B");c(b,"setCenterBitSet",function(a,b){this.isJmolDataFrame()||this.tm.setNewRotationCenter(0c?"spin":"nav")+a,b)}},"~S,~N");c(b,"getSpinState",function(){return this.getStateCreator().getSpinState(!1)});c(b,"getOrientation",function(a,b,c,e){switch(a){case 1312817669:case 1814695966:case 1073741864:case 1111492629:case 1111492630:case 1111492631:case 134221850:null==c&&(c=this.bsA());if(c.isEmpty())return 1312817669==a?"0":1814695966==a||1073741864==a?null:new JU.Quat; +c=this.ms.getBoundBoxOrientation(a,c,e);return"best"===b&&1312817669!=a?c.div(this.tm.getRotationQ()):c;case 1073742034:return this.stm.getSavedOrientationText(b);default:return this.tm.getOrientationText(a,"best"===b)}},"~N,~S,JU.BS,~A");c(b,"getCurrentColorRange",function(){return this.cm.getPropertyColorRange()});c(b,"setDefaultColors",function(a){this.cm.setDefaultColors(a);this.g.setB("colorRasmol",a);this.g.setO("defaultColorScheme",a?"rasmol":"jmol")},"~B");c(b,"setElementArgb",function(a, +b){this.g.setO("=color "+JU.Elements.elementNameFromNumber(a),JU.Escape.escapeColor(b));this.cm.setElementArgb(a,b)},"~N,~N");f(b,"setVectorScale",function(a){this.g.setF("vectorScale",a);this.g.vectorScale=a},"~N");f(b,"setVibrationScale",function(a){this.tm.setVibrationScale(a);this.g.vibrationScale=a;this.g.setF("vibrationScale",a)},"~N");f(b,"setVibrationPeriod",function(a){Double.isNaN(a)&&(a=this.g.vibrationPeriod);this.tm.setVibrationPeriod(a);a=Math.abs(a);this.g.vibrationPeriod=a;this.g.setF("vibrationPeriod", +a)},"~N");c(b,"setObjectColor",function(a,b){null==b||0==b.length||this.setObjectArgb(a,JU.CU.getArgbFromString(b))},"~S,~S");c(b,"setObjectVisibility",function(a,b){var c=JV.StateManager.getObjectIdFromName(a);0<=c&&this.setShapeProperty(c,"display",b?Boolean.TRUE:Boolean.FALSE)},"~S,~B");c(b,"setObjectArgb",function(a,b){var c=JV.StateManager.getObjectIdFromName(a);if(0>c)a.equalsIgnoreCase("axes")&&(this.setObjectArgb("axis1",b),this.setObjectArgb("axis2",b),this.setObjectArgb("axis3",b));else{this.g.objColors[c]= +b;switch(c){case 0:this.gdata.setBackgroundArgb(b),this.cm.setColixBackgroundContrast(b)}this.g.setO(a+"Color",JU.Escape.escapeColor(b))}},"~S,~N");c(b,"setBackgroundImage",function(a,b){this.g.backgroundImageFileName=a;this.gdata.setBackgroundImage(b)},"~S,~O");c(b,"getObjectColix",function(a){a=this.g.objColors[a];return 0==a?this.cm.colixBackgroundContrast:JU.C.getColix(a)},"~N");f(b,"setColorBackground",function(a){this.setObjectColor("background",a)},"~S");f(b,"getBackgroundArgb",function(){return this.g.objColors[0]}); +c(b,"setObjectMad10",function(a,b,c){var e=JV.StateManager.getObjectIdFromName(b.equalsIgnoreCase("axes")?"axis":b);if(!(0>e)){if(-2==c||-4==c){var g=c+3;c=this.getObjectMad10(e);0==c&&(c=g)}this.g.setB("show"+b,0!=c);this.g.objStateOn[e]=0!=c;0!=c&&(this.g.objMad10[e]=c,this.setShapeSize(a,c,null))}},"~N,~S,~N");c(b,"getObjectMad10",function(a){return this.g.objStateOn[a]?this.g.objMad10[a]:0},"~N");c(b,"setPropertyColorScheme",function(a,b,c){this.g.propertyColorScheme=a;a.startsWith("translucent ")&& +(b=!0,a=a.substring(12).trim());this.cm.setPropertyColorScheme(a,b,c)},"~S,~B,~B");c(b,"getLightingState",function(){return this.getStateCreator().getLightingState(!0)});c(b,"getColorPointForPropertyValue",function(a){return JU.CU.colorPtFromInt(this.gdata.getColorArgbOrGray(this.cm.ce.getColorIndex(a)),null)},"~N");c(b,"select",function(a,b,c,e){b&&(a=this.getUndeletedGroupAtomBits(a));this.slm.select(a,c,e);this.shm.setShapeSizeBs(1,2147483647,null,null);this.hasSelected=!0},"JU.BS,~B,~N,~B");f(b, +"setSelectionSet",function(a){this.selectStatus(a,!1,0,!0,!0)},"JU.BS");c(b,"selectBonds",function(a){this.shm.setShapeSizeBs(1,2147483647,null,a)},"JU.BS");c(b,"displayAtoms",function(a,b,c,e,g){c&&(a=this.getUndeletedGroupAtomBits(a));b?this.slm.display(this.ms,a,e,g):this.slm.hide(this.ms,a,e,g)},"JU.BS,~B,~B,~N,~B");c(b,"getUndeletedGroupAtomBits",function(a){a=this.ms.getAtoms(1086324742,a);JU.BSUtil.andNot(a,this.slm.bsDeleted);return a},"JU.BS");c(b,"reportSelection",function(a){this.selectionHalosEnabled&& +this.setTainted(!0);(this.isScriptQueued()||this.g.debugScript)&&this.scriptStatus(a)},"~S");c(b,"clearAtomSets",function(){this.slm.setSelectionSubset(null);this.definedAtomSets.clear();this.haveDisplay&&this.acm.exitMeasurementMode("clearAtomSets")});c(b,"getDefinedAtomSet",function(a){a=this.definedAtomSets.get(a.toLowerCase());return C(a,"JU.BS")?a:new JU.BS},"~S");f(b,"selectAll",function(){this.slm.selectAll(!1)});f(b,"clearSelection",function(){this.slm.clearSelection(!0);this.g.setB("hideNotSelected", +!1)});c(b,"bsA",function(){return this.slm.getSelectedAtoms()});f(b,"addSelectionListener",function(a){this.slm.addListener(a)},"J.api.JmolSelectionListener");f(b,"removeSelectionListener",function(a){this.slm.addListener(a)},"J.api.JmolSelectionListener");c(b,"getAtomBitSetEval",function(a,b){return this.allowScripting?this.getScriptManager().getAtomBitSetEval(a,b):new JU.BS},"J.api.JmolScriptEvaluator,~O");c(b,"processTwoPointGesture",function(a){this.mouse.processTwoPointGesture(a)},"~A");c(b, +"processMouseEvent",function(a,b,c,e,g){return this.mouse.processEvent(a,b,c,e,g)},"~N,~N,~N,~N,~N");c(b,"processKeyEvent",function(a){this.mouse.processKeyEvent(a)},"~O");c(b,"getRubberBandSelection",function(){return this.haveDisplay?this.acm.getRubberBand():null});c(b,"isBound",function(a,b){return this.haveDisplay&&this.acm.bnd(a,[b])},"~N,~N");c(b,"getCursorX",function(){return this.haveDisplay?this.acm.getCurrentX():0});c(b,"getCursorY",function(){return this.haveDisplay?this.acm.getCurrentY(): +0});c(b,"getDefaultDirectory",function(){return this.g.defaultDirectory});c(b,"getLocalUrl",function(a){return this.apiPlatform.getLocalUrl(a)},"~S");c(b,"getFileAsString",function(a){return this.getAsciiFileOrNull(a)},"~S");f(b,"getBufferedInputStream",function(a){return this.fm.getBufferedInputStream(a)},"~S");c(b,"setLoadParameters",function(a,b){null==a&&(a=new java.util.Hashtable);a.put("vwr",this);0a.indexOf("# Jmol state")){for(var j=2;0<=(g=a.indexOf(b,g+1));)j++;var f=Array(j), +l=0,s=0;for(g=0;gl&&(l=a.length),f[g]=a.substring(s,l),s=l+b.length;return this.openStringsInlineParamsAppend(f,e,c)}return this.openStringInlineParamsAppend(a,e,c)},"~S,~S,~B,java.util.Map");b.fixInlineString=c(b,"fixInlineString",function(a,b){var c;0<=a.indexOf("\\/n")&&(a=JU.PT.rep(a,"\n",""),a=JU.PT.rep(a,"\\/n","\n"),b=String.fromCharCode(0));if(0!=b.charCodeAt(0)&&"\n"!=b){var e=0<=a.indexOf("\n"),g=a.length;for(c=0;c":this.getFileAsString4(b,-1,!0,!1,!1,a)},"~S");c(b,"getFullPathNameOrError", +function(a){var b=Array(2);this.fm.getFullPathNameOrError(a,!1,b);return b},"~S");c(b,"getFileAsString3",function(a,b,c){return this.getFileAsString4(a,-1,!1,!1,b,c)},"~S,~B,~S");c(b,"getFileAsString4",function(a,b,c,e,g,j){if(null==a)return this.getCurrentFileAsString(j);a=w(-1,[a,null]);this.fm.getFileDataAsString(a,b,c,e,g);return a[1]},"~S,~N,~B,~B,~B,~S");c(b,"getAsciiFileOrNull",function(a){a=w(-1,[a,null]);return this.fm.getFileDataAsString(a,-1,!1,!1,!1)?a[1]:null},"~S");c(b,"autoCalculate", +function(a,b){switch(a){case 1111490575:this.ms.getSurfaceDistanceMax();break;case 1111490574:this.ms.calculateStraightnessAll();break;case 1111490587:this.ms.calculateDssrProperty(b)}},"~N,~S");c(b,"calculateStraightness",function(){this.ms.haveStraightness=!1;this.ms.calculateStraightnessAll()});c(b,"calculateSurface",function(a,b){null==a&&(a=this.bsA());if(3.4028235E38==b||-1==b)this.ms.addStateScript("calculate surfaceDistance "+(3.4028235E38==b?"FROM":"WITHIN"),null,a,null,"",!1,!0);return this.ms.calculateSurface(a, +b)},"JU.BS,~N");c(b,"getStructureList",function(){return this.g.getStructureList()});c(b,"setStructureList",function(a,b){this.g.setStructureList(a,b);this.ms.setStructureList(this.getStructureList())},"~A,J.c.STR");c(b,"calculateStructures",function(a,b,c,e){null==a&&(a=this.bsA());return this.ms.calculateStructures(a,b,!this.am.animationOn,this.g.dsspCalcHydrogen,c,e)},"JU.BS,~B,~B,~N");c(b,"getAnnotationParser",function(a){return a?null==this.dssrParser?this.dssrParser=J.api.Interface.getOption("dssx.DSSR1", +this,"script"):this.dssrParser:null==this.annotationParser?this.annotationParser=J.api.Interface.getOption("dssx.AnnotationParser",this,"script"):this.annotationParser},"~B");f(b,"getSelectedAtomIterator",function(a,b,c,e){return this.ms.getSelectedAtomIterator(a,b,c,!1,e)},"JU.BS,~B,~B,~B");f(b,"setIteratorForAtom",function(a,b,c){this.ms.setIteratorForAtom(a,-1,b,c,null)},"J.api.AtomIndexIterator,~N,~N");f(b,"setIteratorForPoint",function(a,b,c,e){this.ms.setIteratorForPoint(a,b,c,e)},"J.api.AtomIndexIterator,~N,JU.T3,~N"); +f(b,"fillAtomData",function(a,b){a.programInfo="Jmol Version "+JV.Viewer.getJmolVersion();a.fileName=this.fm.getFileName();this.ms.fillAtomData(a,b)},"J.atomdata.AtomData,~N");c(b,"addStateScript",function(a,b,c){return this.ms.addStateScript(a,null,null,null,null,b,c)},"~S,~B,~B");c(b,"getMinimizer",function(a){return null==this.minimizer&&a?(this.minimizer=J.api.Interface.getInterface("JM.Minimizer",this,"script")).setProperty("vwr",this):this.minimizer},"~B");c(b,"getSmilesMatcher",function(){return null== +this.smilesMatcher?this.smilesMatcher=J.api.Interface.getInterface("JS.SmilesMatcher",this,"script"):this.smilesMatcher});c(b,"clearModelDependentObjects",function(){this.setFrameOffsets(null,!1);this.stopMinimization();this.smilesMatcher=this.minimizer=null;null!=this.modelkit&&this.modelkit.clearAtomConstraints()});c(b,"zap",function(a,b,c){this.clearThreads();null==this.mm.modelSet?this.mm.zap():(this.ligandModelSet=null,this.clearModelDependentObjects(),this.fm.clear(),this.clearRepaintManager(-1), +this.am.clear(),this.tm.clear(),this.slm.clear(),this.hasSelected=!0,this.clearAllMeasurements(),this.clearMinimization(),this.gdata.clear(),this.mm.zap(),null!=this.scm&&this.scm.clear(!1),null!=this.nmrCalculation&&this.getNMRCalculation().setChemicalShiftReference(null,0),this.haveDisplay&&(this.mouse.clear(),this.clearTimeouts(),this.acm.clear()),this.stm.clear(this.g),this.tempArray.clear(),this.chainMap.clear(),this.chainList.clear(),this.chainCaseSpecified=!1,this.definedAtomSets.clear(),this.lastData= +null,null!=this.dm&&this.dm.clear(),!this.g.doublePrecision&&this.g.legacyJavaFloat&&this.setBooleanPropertyTok("legacyjavafloat",603979874,!1),b&&(c&&this.g.removeParam("_pngjFile"),c&&this.g.modelKitMode?this.loadDefaultModelKitModel(null):this.setPickingMode(null,1),this.undoMoveAction(4165,-2)),System.gc());this.initializeModel(!1);a&&this.setFileLoadStatus(J.c.FIL.ZAPPED,null,b?"resetUndo":this.getZapName(),null,null,null);JU.Logger.debugging&&JU.Logger.checkMemory()},"~B,~B,~B");c(b,"loadDefaultModelKitModel", +function(a){this.getModelkit(!1).isHidden()||null!=this.getOperativeSymmetry()||(this.openStringInlineParamsAppend(this.getModelkit(!1).getDefaultModel(),a,!0),this.setRotationRadius(5,!0),this.setStringProperty("picking","assignAtom_C"),this.setStringProperty("picking","assignBond_p"))},"java.util.Map");c(b,"zapMsg",function(a){this.zap(!0,!0,!1);this.echoMessage(a)},"~S");c(b,"echoMessage",function(a){this.shm.loadShape(31);this.setShapeProperty(31,"font",this.getFont3D("SansSerif","Plain",20)); +this.setShapeProperty(31,"target","error");this.setShapeProperty(31,"text",a)},"~S");c(b,"initializeModel",function(a){this.clearThreads();a?this.am.initializePointers(1):(this.reset(!0),this.selectAll(),this.setModelkitPropertySafely("initializemodel",null),this.movingSelected=!1,this.slm.noneSelected=Boolean.FALSE,this.setHoverEnabled(!0),this.setSelectionHalosEnabled(!1),this.tm.setCenter(),this.am.initializePointers(1),this.setBooleanPropertyTok("multipleBondBananas",603979886,!1),this.ms.getMSInfoB("isPyMOL")|| +(this.clearAtomSets(),this.setCurrentModelIndex(0)),this.setBackgroundModelIndex(-1),this.setFrankOn(this.getShowFrank()),this.shm.setScale(),this.startHoverWatcher(!0),this.setTainted(!0),this.finalizeTransformParameters())},"~B");c(b,"startHoverWatcher",function(a){a&&this.inMotion||(!this.haveDisplay||a&&(!this.hoverEnabled&&!this.sm.haveHoverCallback()||this.am.animationOn))||this.acm.startHoverWatcher(a)},"~B");f(b,"getModelSetPathName",function(){return this.mm.modelSetPathName});f(b,"getModelSetFileName", +function(){return null==this.mm.fileName?this.getZapName():this.mm.fileName});c(b,"getUnitCellInfoText",function(){var a=this.getCurrentUnitCell();return null==a?"not applicable":a.getUnitCellInfo(!0)});c(b,"getUnitCellInfo",function(a){var b=this.getCurrentUnitCell();return null==b?NaN:b.getUnitCellInfoType(a)},"~N");c(b,"getV0abc",function(a,b){var c=0>a?this.getCurrentUnitCell():this.getUnitCell(a);null==c&&(c=this.getSymTemp());return null==c?null:c.getV0abc(b,null)},"~N,~O");c(b,"getCurrentUnitCell", +function(){var a=this.am.getUnitCellAtomIndex();return 0<=a?this.ms.getUnitCellForAtom(a):this.getUnitCell(this.am.cmi)});c(b,"getUnitCell",function(a){if(0<=a)return this.ms.getUnitCell(a);a=this.getVisibleFramesBitSet();for(var b=null,c=a.nextSetBit(0);0<=c;c=a.nextSetBit(c+1)){var e=this.ms.getUnitCell(c);if(null!=e)if(null==b)b=e;else if(!b.unitCellEquals(e))return null}return b},"~N");c(b,"getPolymerPointsAndVectors",function(a,b){this.ms.getPolymerPointsAndVectors(a,b,this.g.traceAlpha,this.g.sheetSmoothing)}, +"JU.BS,JU.Lst");c(b,"getHybridizationAndAxes",function(a,b,c,e){return this.ms.getHybridizationAndAxes(a,0,b,c,e,!0,!0,!1,null)},"~N,JU.V3,JU.V3,~S");c(b,"getAllAtoms",function(){return this.getModelUndeletedAtomsBitSet(-1)});c(b,"getFrameAtoms",function(){return this.getModelUndeletedAtomsBitSetBs(this.getVisibleFramesBitSet())});f(b,"getVisibleFramesBitSet",function(){var a=JU.BSUtil.copy(this.am.bsVisibleModels);null!=this.ms.trajectory&&this.ms.trajectory.selectDisplayed(a);return a});c(b,"getModelUndeletedAtomsBitSet", +function(a){return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeleted(a,!0),!1)},"~N");c(b,"getModelUndeletedAtomsBitSetBs",function(a){return this.slm.excludeAtoms(this.ms.getModelAtomBitSetIncludingDeletedBs(a),!1)},"JU.BS");f(b,"getBoundBoxCenter",function(){return this.ms.getBoundBoxCenter(this.am.cmi)});c(b,"calcBoundBoxDimensions",function(a,b){this.ms.calcBoundBoxDimensions(a,b);this.axesAreTainted=!0},"JU.BS,~N");f(b,"getBoundBoxCornerVector",function(){return this.ms.getBoundBoxCornerVector()}); +f(b,"getModelSetProperties",function(){return this.ms.modelSetProperties});f(b,"getModelProperties",function(a){return this.ms.am[a].properties},"~N");c(b,"getModelForAtomIndex",function(a){return this.ms.am[this.ms.at[a].mi]},"~N");c(b,"getModelIndexForAtom",function(a){return this.ms.at[a].mi},"~N");f(b,"getModelSetAuxiliaryInfo",function(){return this.ms.getModelSetAuxiliaryInfo(null)});f(b,"getModelNumber",function(a){return 0>a?a:this.ms.getModelNumber(a)},"~N");c(b,"getModelFileNumber",function(a){return 0> +a?0:this.ms.modelFileNumbers[a]},"~N");f(b,"getModelNumberDotted",function(a){return 0>a?"0":this.ms.getModelNumberDotted(a)},"~N");f(b,"getModelName",function(a){return this.ms.getModelName(a)},"~N");c(b,"modelHasVibrationVectors",function(a){return 0<=this.ms.getLastVibrationVector(a,4166)},"~N");c(b,"getBondsForSelectedAtoms",function(a){return this.ms.getBondsForSelectedAtoms(a,this.g.bondModeOr||1==JU.BSUtil.cardinalityOf(a))},"JU.BS");c(b,"frankClicked",function(a,b){return!this.g.disablePopupMenu&& +this.getShowFrank()&&this.shm.checkFrankclicked(a,b)},"~N,~N");c(b,"frankClickedModelKit",function(a,b){return!this.g.disablePopupMenu&&this.isModelKitOpen()&&0<=a&&0<=b&&40>a&&104>b},"~N,~N");f(b,"findNearestAtomIndex",function(a,b){return this.findNearestAtomIndexMovable(a,b,!1)},"~N,~N");c(b,"findNearestAtomIndexMovable",function(a,b,c){return!this.g.atomPicking?-1:this.ms.findNearestAtomIndex(a,b,c?this.slm.getMotionFixedAtoms():null,this.g.minPixelSelRadius)},"~N,~N,~B");c(b,"toCartesian",function(a, +b){this.toCartesianUC(null,a,b)},"JU.T3,~B");c(b,"toCartesianUC",function(a,b,c){null==a&&(a=this.getCurrentUnitCell());null!=a&&(a.toCartesian(b,c),this.g.legacyJavaFloat||JU.PT.fixPtFloats(b,1E4))},"J.api.SymmetryInterface,JU.T3,~B");c(b,"toFractional",function(a,b){this.toFractionalUC(null,a,b)},"JU.T3,~B");c(b,"toFractionalUC",function(a,b,c){null==a&&(a=this.getCurrentUnitCell());null!=a&&(a.toFractional(b,c),this.g.legacyJavaFloat||JU.PT.fixPtFloats(b,1E5))},"J.api.SymmetryInterface,JU.T3,~B"); +c(b,"toUnitCell",function(a,b){var c=this.getCurrentUnitCell();null!=c&&c.toUnitCell(a,b)},"JU.P3,JU.P3");c(b,"setCurrentCage",function(a){a=w(-1,[a,null]);this.shm.getShapePropertyData(24,"unitCell",a);this.ms.setModelCage(this.am.cmi,a[1])},"~S");c(b,"addUnitCellOffset",function(a){var b=this.getCurrentUnitCell();null!=b&&a.add(b.getCartesianOffset())},"JU.P3");c(b,"setAtomData",function(a,b,c,e){this.ms.setAtomData(a,b,c,e);2==a&&this.checkCoordinatesChanged(null);this.refreshMeasures(!0)},"~N,~S,~S,~B"); +f(b,"setCenterSelected",function(){this.setCenterBitSet(this.bsA(),!0)});c(b,"setApplySymmetryToBonds",function(a){this.g.applySymmetryToBonds=a},"~B");f(b,"setBondTolerance",function(a){this.g.setF("bondTolerance",a);this.g.bondTolerance=a},"~N");f(b,"setMinBondDistance",function(a){this.g.setF("minBondDistance",a);this.g.minBondDistance=a},"~N");c(b,"getAtomsNearPt",function(a,b,c){null==c&&(c=new JU.BS);this.ms.getAtomsWithin(a,b,c,-1);return c},"~N,JU.P3,JU.BS");c(b,"getBranchBitSet",function(a, +b,c){return 0>a||a>=this.ms.ac?new JU.BS:JU.JmolMolecule.getBranchBitSet(this.ms.at,a,this.getModelUndeletedAtomsBitSet(this.ms.at[a].mi),null,b,c,!0)},"~N,~N,~B");f(b,"getElementsPresentBitSet",function(a){return this.ms.getElementsPresentBitSet(a)},"~N");c(b,"getFileHeader",function(){return this.ms.getFileHeader(this.am.cmi)});c(b,"getFileData",function(){return this.ms.getFileData(this.am.cmi)});c(b,"getCifData",function(a){return this.readCifData(this.ms.getModelFileName(a),this.ms.getModelFileType(a).toUpperCase())}, +"~N");c(b,"readCifData",function(a,b){var c=null==a?this.ms.getModelFileName(this.am.cmi):a;if(null==b&&null!=c&&0<=c.toUpperCase().indexOf("BCIF")){c=this.fm.getBufferedInputStream(c);try{return J.api.Interface.getInterface("JU.MessagePackReader",this,"script").getMapForStream(c)}catch(e){if(E(e,Exception))return e.printStackTrace(),new java.util.Hashtable;throw e;}}c=null==a||0==a.length?this.getCurrentFileAsString("script"):this.getFileAsString3(a,!1,null);if(null==c||2>c.length)return null;c= +JU.Rdr.getBR(c);null==b&&(b=this.getModelAdapter().getFileTypeName(c));return null==b?null:this.readCifData(null,c,b)},"~S,~S");c(b,"readCifData",function(a,b,c){null==b&&(b=this.getFileAsString(a));a=C(b,"java.io.BufferedReader")?b:JU.Rdr.getBR(b);return JU.Rdr.readCifData(J.api.Interface.getInterface("Cif2".equals(c)?"J.adapter.readers.cif.Cif2DataParser":"JU.CifDataParser",this,"script"),a)},"~S,~O,~S");c(b,"getStateCreator",function(){null==this.jsc&&(this.jsc=J.api.Interface.getInterface("JV.StateCreator", +this,"script")).setViewer(this);return this.jsc});c(b,"getWrappedStateScript",function(){return this.getOutputManager().getWrappedState(null,null,null,null)});f(b,"getStateInfo",function(){return this.getStateInfo3(null,0,0)});c(b,"getStateInfo3",function(a,b,c){return this.g.preserveState?this.getStateCreator().getStateScript(a,b,c):""},"~S,~N,~N");c(b,"getStructureState",function(){return this.getStateCreator().getModelState(null,!1,!0)});c(b,"getCoordinateState",function(a){return this.getStateCreator().getAtomicPropertyState(2, +a)},"JU.BS");c(b,"setCurrentColorRange",function(a){var b=this.getDataObj(a,null,1);a=null==b?null:this.getDataObj(a,null,-1)[2];null!=a&&this.g.rangeSelected&&a.and(this.bsA());this.cm.setPropertyColorRangeData(b,a)},"~S");c(b,"setData",function(a,b,c,e,g,j,f){this.getDataManager().setData(a,this.lastData=b,c,this.ms.ac,e,g,j,f)},"~S,~A,~N,~N,~N,~N,~N");c(b,"getDataObj",function(a,b,c){return null==a&&-2==c?this.lastData:this.getDataManager().getData(a,b,c)},"~S,JU.BS,~N");c(b,"autoHbond",function(a, +b,c){null==a&&(a=b=this.bsA());return this.ms.autoHbond(a,b,c)},"JU.BS,JU.BS,~B");c(b,"getDefaultMeasurementLabel",function(a){switch(a){case 2:return this.g.defaultDistanceLabel;case 3:return this.g.defaultAngleLabel;default:return this.g.defaultTorsionLabel}},"~N");f(b,"getMeasurementCount",function(){var a=this.getShapePropertyAsInt(6,"count");return 0>=a?0:a});f(b,"getMeasurementStringValue",function(a){return""+this.shm.getShapePropertyIndex(6,"stringValue",a)},"~N");c(b,"getMeasurementInfoAsString", +function(){return this.getShapeProperty(6,"infostring")});f(b,"getMeasurementCountPlusIndices",function(a){return this.shm.getShapePropertyIndex(6,"countPlusIndices",a)},"~N");c(b,"setPendingMeasurement",function(a){this.shm.loadShape(6);this.setShapeProperty(6,"pending",a)},"JM.MeasurementPending");c(b,"getPendingMeasurement",function(){return this.getShapeProperty(6,"pending")});c(b,"clearAllMeasurements",function(){this.setShapeProperty(6,"clear",null)});f(b,"clearMeasurements",function(){this.evalString("measures delete")}); +c(b,"setAnimation",function(a){switch(a){case 1073742098:this.am.reverseAnimation();case 1073742096:case 4143:this.am.animationOn||this.am.resumeAnimation();break;case 20487:this.am.animationOn&&!this.am.animationPaused&&this.am.pauseAnimation();break;case 1073742037:this.am.setAnimationNext();break;case 1073742108:this.am.setAnimationPrevious();break;case 1073741942:case 1073742125:this.am.rewindAnimation();break;case 1073741993:this.am.setAnimationLast()}},"~N");f(b,"setAnimationFps",function(a){this.am.setAnimationFps(a)}, +"~N");c(b,"setAnimationMode",function(a){a.equalsIgnoreCase("once")?this.am.setAnimationReplayMode(1073742070,0,0):a.equalsIgnoreCase("loop")?this.am.setAnimationReplayMode(528411,1,1):a.startsWith("pal")&&this.am.setAnimationReplayMode(1073742082,1,1)},"~S");c(b,"setAnimationOn",function(a){a!=this.am.animationOn&&this.am.setAnimationOn(a)},"~B");c(b,"setAnimationRange",function(a,b){this.am.setAnimationRange(a,b)},"~N,~N");c(b,"defineAtomSets",function(a){this.definedAtomSets.putAll(a)},"java.util.Map"); +c(b,"setAnimDisplay",function(a){this.am.setDisplay(a);this.am.animationOn||this.am.morph(this.am.currentMorphModel+1)},"JU.BS");c(b,"setCurrentModelIndex",function(a){-2147483648==a?(this.prevFrame=-2147483648,this.setCurrentModelIndexClear(this.am.cmi,!0)):this.am.setModel(a,!0)},"~N");c(b,"getTrajectoryState",function(){return null==this.ms.trajectory?"":this.ms.trajectory.getState()});c(b,"setFrameOffsets",function(a,b){this.tm.bsFrameOffsets=null;b?this.clearModelDependentObjects():this.tm.bsFrameOffsets= +a;this.tm.frameOffsets=this.ms.getFrameOffsets(a,b)},"JU.BS,~B");c(b,"setCurrentModelIndexClear",function(a,b){this.am.setModel(a,b)},"~N,~B");c(b,"haveFileSet",function(){return 1a.indexOf("\u0001## REPAINT_IGNORE ##"), +a)},"~S");f(b,"refresh",function(a,b){if(!(null==this.rm||!this.refreshing||6==a&&this.getInMotion(!0)||!this.isWebGL&&7==a)){if(this.isWebGL)switch(a){case 1:case 2:case 7:this.tm.finalizeTransformParameters();if(null==this.html5Applet)return;this.html5Applet._refresh();if(7==a)return}else this.rm.repaintIfReady("refresh "+a+" "+b);this.sm.doSync()&&this.sm.setSync(2==a?b:null)}},"~N,~S");c(b,"requestRepaintAndWait",function(a){null!=this.rm&&(this.haveDisplay?(this.rm.requestRepaintAndWait(a),this.setSync()): +(this.setModelVisibility(),this.shm.finalizeAtoms(null,!0)))},"~S");c(b,"clearShapeRenderers",function(){this.clearRepaintManager(-1)});c(b,"isRepaintPending",function(){return null==this.rm?!1:this.rm.isRepaintPending()});f(b,"notifyViewerRepaintDone",function(){null!=this.rm&&this.rm.repaintDone();this.am.repaintDone()});c(b,"areAxesTainted",function(){var a=this.axesAreTainted;this.axesAreTainted=!1;return a});f(b,"generateOutputForExport",function(a){return this.noGraphicsAllowed||null==this.rm? +null:this.getOutputManager().getOutputFromExport(a)},"java.util.Map");c(b,"clearRepaintManager",function(a){null!=this.rm&&this.rm.clear(a)},"~N");c(b,"renderScreenImage",function(a,b,c){this.renderScreenImageStereo(a,!1,b,c)},"~O,~N,~N");c(b,"renderScreenImageStereo",function(a,b,c,e){this.updateWindow(c,e)&&(!b||null==this.gRight?this.getScreenImageBuffer(a,!1):(this.drawImage(this.gRight,this.getImage(!0,!1),0,0,this.tm.stereoDoubleDTI),this.drawImage(a,this.getImage(!1,!1),0,0,this.tm.stereoDoubleDTI))); +null!=this.captureParams&&Boolean.FALSE!==this.captureParams.get("captureEnabled")&&(this.captureParams.remove("imagePixels"),a=this.captureParams.get("endTime").longValue(),0a&&this.captureParams.put("captureMode","end"),this.processWriteOrCapture(this.captureParams));this.notifyViewerRepaintDone()},"~O,~B,~N,~N");c(b,"updateJS",function(){this.isWebGL?(null==this.jsParams&&(this.jsParams=new java.util.Hashtable,this.jsParams.put("type","JS")),this.updateWindow(0, +0)&&this.render(),this.notifyViewerRepaintDone()):this.isStereoSlave||this.renderScreenImageStereo(this.apiPlatform.getGraphics(null),!0,0,0)});c(b,"updateJSView",function(a,b){if(null!=this.html5Applet){var c=this.html5Applet,e=!0;(e=null!=c&&null!=c._viewSet)&&this.html5Applet._atomPickedCallback(a,b)}},"~N,~N");f(b,"evalFile",function(a){return this.evalFileArgs(a,null)},"~S");f(b,"evalFileArgs",function(a,b){return this.allowScripting&&null!=this.getScriptManager()?this.scm.evalFileArgs(a,b): +null},"~S,~S");c(b,"getInsertedCommand",function(){var a=this.insertedCommand;this.insertedCommand="";JU.Logger.debugging&&""!==a&&JU.Logger.debug("inserting: "+a);return a});f(b,"script",function(a){return this.evalStringQuietSync(a,!1,!0)},"~S");f(b,"evalString",function(a){return this.evalStringQuietSync(a,!1,!0)},"~S");f(b,"evalStringQuiet",function(a){return this.evalStringQuietSync(a,!0,!0)},"~S");c(b,"evalStringQuietSync",function(a,b,c){return null==this.getScriptManager()?null:this.scm.evalStringQuietSync(a, +b,c)},"~S,~B,~B");c(b,"clearScriptQueue",function(){null!=this.scm&&this.scm.clearQueue()});c(b,"setScriptQueue",function(a){(this.g.useScriptQueue=a)||this.clearScriptQueue()},"~B");f(b,"checkHalt",function(a,b){return null!=this.scm&&this.scm.checkHalt(a,b)},"~S,~B");f(b,"scriptWait",function(a){return this.evalWait("JSON",a,"+scriptStarted,+scriptStatus,+scriptEcho,+scriptTerminated")},"~S");f(b,"scriptWaitStatus",function(a,b){return this.evalWait("object",a,b)},"~S,~S");c(b,"evalWait",function(a, +b,c){if(null==this.getScriptManager())return null;this.scm.waitForQueue();var e=J.i18n.GT.setDoTranslate(!1);a=this.evalStringWaitStatusQueued(a,b,c,!1,!1);J.i18n.GT.setDoTranslate(e);return a},"~S,~S,~S");c(b,"exitJmol",function(){if(!this.isApplet||this.isJNLP){if(null!=this.headlessImageParams)try{this.headless&&this.outputToFile(this.headlessImageParams)}catch(a){if(!E(a,Exception))throw a;}JU.Logger.debugging&&JU.Logger.debug("exitJmol -- exiting");System.out.flush();System.exit(0)}});c(b,"scriptCheckRet", +function(a,b){return null==this.getScriptManager()?null:this.scm.scriptCheckRet(a,b)},"~S,~B");f(b,"scriptCheck",function(a){return this.scriptCheckRet(a,!1)},"~S");f(b,"isScriptExecuting",function(){return null!=this.eval&&this.eval.isExecuting()});f(b,"haltScriptExecution",function(){null!=this.eval&&(this.eval.haltExecution(),this.eval.stopScriptThreads());this.setStringPropertyTok("pathForAllFiles",545259572,"");this.clearTimeouts()});c(b,"pauseScriptExecution",function(){null!=this.eval&&this.eval.pauseExecution(!0)}); +c(b,"resolveDatabaseFormat",function(a){return JV.Viewer.hasDatabasePrefix(a)||0<=a.indexOf("cactus.nci.nih.gov/chemical/structure")?this.setLoadFormat(!1,a,a.charAt(0),!1):a},"~S");b.hasDatabasePrefix=c(b,"hasDatabasePrefix",function(a){return 0!=a.length&&JV.Viewer.isDatabaseCode(a.charAt(0))},"~S");b.isDatabaseCode=c(b,"isDatabaseCode",function(a){return"*"==a||"$"==a||"="==a||":"==a},"~S");c(b,"setLoadFormat",function(a,b,c,e){var g=null,j=b.substring(1);switch(c.charCodeAt(0)){case 99:return b; +case 104:return this.g.checkCIR&&this.checkCIR(!1),this.g.nihResolverFormat+b.substring(b.indexOf("/structure")+10);case 61:if(b.startsWith("==")){if(j=j.substring(1),j.equals("?")&&null==(j=this.getDBID("chemical component from RCSB")))return null}else{if(j.equals("?")&&null==(j=this.getDBID("PDB ID from RCSB")))return null;if(0j.indexOf("_")&&(j=this.getSymTemp().getSpaceGroupJSON(this,"AFLOW",j,c)));j=JV.JC.resolveDataBase(l,j,null);null!=j&&j.startsWith("'")&&(j=this.evaluateExpression(j).toString());return null==j||0==j.length?b:j}catch(s){if(E(s,Exception))return b;throw s;}if(!a&&j.endsWith(".bcif"))return j=j.substring(0,j.indexOf(".bcif")),JV.JC.resolveDataBase("bcif",j.toLowerCase(),null);if(j.endsWith(".mmtf"))return j=j.substring(0,j.indexOf(".mmtf")),JV.JC.resolveDataBase("mmtf",j.toUpperCase(), +null);g=this.g.loadFormat}case 35:return null==g&&(g=this.g.pdbLoadLigandFormat),JV.JC.resolveDataBase(null,j,g);case 42:if(j.equals("?")&&null==(j=this.getDBID("PDB ID from EBI")))return null;f=b.lastIndexOf("/");if(b.startsWith("*dom/"))return j=b.substring(f+1),g=4b&&(b=1);this.acm.setPickingMode(b);g=JV.ActionManager.getPickingModeName(this.acm.getAtomPickingMode());this.g.setO("picking",g);if(null!=this.modelkit)switch(this.modelkit.setProperty("atompickingmode",g),this.acm.setPickingMode(b),b){case 1:b!= +c&&this.setModelKitMode(!1);break;case 8:case 35:this.modelkit.setProperty("bondpickingmode",a.toLowerCase())}if(!(null==e||0==e.length))switch(e=Character.toUpperCase(e.charAt(0))+(1==e.length?"":e.substring(1,2)),b){case 32:this.getModelkit(!1).setProperty("atomtype",e);break;case 33:this.setBooleanPropertyTok("bondPicking",603979814,!0);this.getModelkit(!1).setProperty("bondtype",e);break;default:JU.Logger.error("Bad picking mode: "+a+"_"+e)}}},"~S,~N");c(b,"getPickingMode",function(){return this.haveDisplay? +this.acm.getAtomPickingMode():0});c(b,"setPickingStyle",function(a,b){this.haveDisplay&&(null!=a&&(b=JV.ActionManager.getPickingStyleIndex(a)),0>b&&(b=0),this.acm.setPickingStyle(b),this.g.setO("pickingStyle",JV.ActionManager.getPickingStyleName(this.acm.getPickingStyle())))},"~S,~N");c(b,"getDrawHover",function(){return this.haveDisplay&&this.g.drawHover});c(b,"getAtomInfo",function(a){null==this.ptTemp&&(this.ptTemp=new JU.P3);return 0<=a?this.ms.getAtomInfo(a,null,this.ptTemp):this.shm.getShapePropertyIndex(6, +"pointInfo",-a)},"~N");c(b,"getAtomInfoXYZ",function(a,b){var c=this.ms.at[a];if(4==b)return this.getChimeMessenger().getInfoXYZ(c);null==this.ptTemp&&(this.ptTemp=new JU.P3);return c.getIdentityXYZ(this.ptTemp,b)},"~N,~N");c(b,"setSync",function(){this.sm.doSync()&&this.sm.setSync(null)});f(b,"setJmolCallbackListener",function(a){this.sm.cbl=a},"J.api.JmolCallbackListener");f(b,"setJmolStatusListener",function(a){this.sm.cbl=this.sm.jsl=a},"J.api.JmolStatusListener");c(b,"getStatusChanged",function(a){return null== +a?null:this.sm.getStatusChanged(a)},"~S");c(b,"menuEnabled",function(){return!this.g.disablePopupMenu&&null!=this.getPopupMenu()});c(b,"setStatusDragDropped",function(a,b,c,e,g){0==a&&(this.g.setO("_fileDropped",e),this.g.setUserVariable("doDrop",JS.SV.vT),this.g.setUserVariable("dropFileType",JS.SV.newS("")),this.g.setUserVariable("dropFileName",JS.SV.newS(e)));a=this.sm.setStatusDragDropped(a,b,c,e,g);b=this.getP("dropFileType").toString();0a.indexOf(":")){var b=this.fm.getAppletDocumentBase();""===b&&(b=this.fm.getFullPathName(!1));0<=b.indexOf("/")?b=b.substring(0, +b.lastIndexOf("/")+1):0<=b.indexOf("\\")&&(b=b.substring(0,b.lastIndexOf("\\")+1));a=b+a}JU.Logger.info("showUrl:"+a);this.sm.showUrl(a)}},"~S");c(b,"setMeshCreator",function(a){this.shm.loadShape(24);this.setShapeProperty(24,"meshCreator",a)},"~O");c(b,"showConsole",function(a){if(this.haveDisplay)try{null==this.appConsole&&a&&this.getConsole(),this.appConsole.setVisible(!0)}catch(b){}},"~B");c(b,"getConsole",function(){this.getProperty("DATA_API","getAppConsole",Boolean.TRUE);return this.appConsole}); +f(b,"getParameter",function(a){return this.getP(a)},"~S");c(b,"getP",function(a){return this.g.getParameter(a,!0)},"~S");c(b,"getPOrNull",function(a){return this.g.getParameter(a,!1)},"~S");c(b,"unsetProperty",function(a){a=a.toLowerCase();(a.equals("all")||a.equals("variables"))&&this.fm.setPathForAllFiles("");this.g.unsetUserVariable(a)},"~S");f(b,"notifyStatusReady",function(a){System.out.println("Jmol applet "+this.fullName+(a?" ready":" destroyed"));a||this.dispose();this.sm.setStatusAppletReady(this.fullName, +a)},"~B");f(b,"getBooleanProperty",function(a){a=a.toLowerCase();if(this.g.htBooleanParameterFlags.containsKey(a))return this.g.htBooleanParameterFlags.get(a).booleanValue();if(a.endsWith("p!")){if(null==this.acm)return!1;var b=this.acm.getPickingState().toLowerCase();a=a.substring(0,a.length-2)+";";return 0<=b.indexOf(a)}if(a.equalsIgnoreCase("executionPaused"))return null!=this.eval&&this.eval.isPaused();if(a.equalsIgnoreCase("executionStepping"))return null!=this.eval&&this.eval.isStepping();if(a.equalsIgnoreCase("haveBFactors"))return null!= +this.ms.getBFactors();if(a.equalsIgnoreCase("colorRasmol"))return this.cm.isDefaultColorRasmol;if(a.equalsIgnoreCase("frank"))return this.getShowFrank();if(a.equalsIgnoreCase("spinOn"))return this.tm.spinOn;if(a.equalsIgnoreCase("isNavigating"))return this.tm.isNavigating();if(a.equalsIgnoreCase("showSelections"))return this.selectionHalosEnabled;if(this.g.htUserVariables.containsKey(a)){b=this.g.getUserVariable(a);if(1073742335==b.tok)return!0;if(1073742334==b.tok)return!1}JU.Logger.error("vwr.getBooleanProperty("+ +a+") - unrecognized");return!1},"~S");f(b,"getInt",function(a){switch(a){case 553648132:return this.am.animationFps;case 553648139:return this.g.dotDensity;case 553648140:return this.g.dotScale;case 553648142:return this.g.helixStep;case 553648145:return this.g.infoFontSize;case 553648147:return this.g.labelPointerWidth;case 553648149:return this.g.meshScale;case 553648150:return this.g.minimizationReportSteps;case 553648153:return this.g.minPixelSelRadius;case 553648154:return this.g.percentVdwAtom; +case 553648157:return this.g.pickingSpinRate;case 553648166:return this.g.ribbonAspectRatio;case 536870922:return this.g.scriptDelay;case 553648152:return this.g.minimizationMaxAtoms;case 553648170:return this.g.smallMoleculeMaxAtoms;case 553648183:return this.g.strutSpacing;case 553648184:return this.stm.getUndoMax();case 553648185:return this.g.vectorTrail}JU.Logger.error("viewer.getInt("+JS.T.nameOf(a)+") - not listed");return 0},"~N");c(b,"getDelayMaximumMs",function(){return this.haveDisplay? +this.g.delayMaximumMs:1});c(b,"getHermiteLevel",function(){return this.tm.spinOn&&0c?JV.Viewer.checkIntRange(c,-10,-1):JV.Viewer.checkIntRange(c,0,100);this.gdata.setSpecularPower(c); +break;case 553648172:c=JV.Viewer.checkIntRange(-c,-10,-1);this.gdata.setSpecularPower(c);break;case 553648134:this.setMarBond(c);return;case 536870924:this.setBooleanPropertyTok(a,b,1==c);return;case 553648174:c=JV.Viewer.checkIntRange(c,0,100);this.gdata.setSpecularPercent(c);break;case 553648138:c=JV.Viewer.checkIntRange(c,0,100);this.gdata.setDiffusePercent(c);break;case 553648130:c=JV.Viewer.checkIntRange(c,0,100);this.gdata.setAmbientPercent(c);break;case 553648186:this.tm.zDepthToPercent(c); +break;case 553648188:this.tm.zSlabToPercent(c);break;case 554176526:this.tm.depthToPercent(c);break;case 554176565:this.tm.slabToPercent(c);break;case 553648190:this.g.zShadePower=c=Math.max(c,0);break;case 553648166:this.g.ribbonAspectRatio=c;break;case 553648157:this.g.pickingSpinRate=1>c?1:c;break;case 553648132:this.setAnimationFps(c);return;case 553648154:this.setPercentVdwAtom(c);break;case 553648143:this.g.hermiteLevel=c;break;case 553648141:case 553648161:case 553648160:case 553648162:case 553648164:break; +default:if(!this.g.htNonbooleanParameterValues.containsKey(a)){this.g.setUserVariable(a,JS.SV.newI(c));return}}this.g.setI(a,c)},"~S,~N,~N");b.checkIntRange=c(b,"checkIntRange",function(a,b,c){return ac?c:a},"~N,~N,~N");b.checkFloatRange=c(b,"checkFloatRange",function(a,b,c){return ac?c:a},"~N,~N,~N");f(b,"setBooleanProperty",function(a,b){if(!(null==a||0==a.length))if("_"==a.charAt(0))this.g.setB(a,b);else{var c=JS.T.getTokFromName(a);switch(JS.T.getParamType(c)){case 545259520:this.setStringPropertyTok(a, +c,"");break;case 553648128:this.setIntPropertyTok(a,c,b?1:0);break;case 570425344:this.setFloatPropertyTok(a,c,b?1:0);break;default:this.setBooleanPropertyTok(a,c,b)}}},"~S,~B");c(b,"setBooleanPropertyTok",function(a,b,c){var e=!0;switch(b){case 603979838:this.g.elementKey=c;this.getModelkit(!1).setProperty("setelementkey",Boolean.$valueOf(c));break;case 603979956:this.g.symmetryHermannMauguin=c;break;case 603979831:c=(new Boolean(c&JV.Viewer.isJS)).valueOf();this.g.doublePrecision=c;JV.Viewer.isHighPrecision= +this.g.doublePrecision;this.setBooleanPropertyTok("legacyJavaFloat",603979874,c);break;case 603979821:(this.g.checkCIR=c)&&this.checkCIR(!0);break;case 603979823:this.g.cipRule6Full=c;break;case 603979802:this.g.autoplayMovie=c;break;case 603979797:c=!1;this.g.allowAudio=c;break;case 603979892:this.g.noDelay=c;break;case 603979891:this.g.nboCharges=c;break;case 603979856:this.g.hiddenLinesDashed=c;break;case 603979886:this.g.multipleBondBananas=c;break;case 603979884:this.g.modulateOccupancy=c;break; +case 603979874:if(c||!this.g.doublePrecision)this.g.legacyJavaFloat=c;c=this.g.legacyJavaFloat;break;case 603979927:this.g.showModVecs=c;break;case 603979937:this.g.showUnitCellDetails=c;break;case 603979849:e=!1;break;case 603979972:this.g.vectorsCentered=c;break;case 603979810:this.g.cartoonBlocks=c;break;case 603979811:this.g.cartoonSteps=c;break;case 603979818:this.g.cartoonRibose=c;break;case 603979840:this.g.ellipsoidArrows=c;break;case 603979967:this.g.translucent=c;break;case 603979817:this.g.cartoonLadders= +c;break;case 603979968:b=this.g.twistedSheets;this.g.twistedSheets=c;b!=c&&this.checkCoordinatesChanged(null);break;case 603979820:this.gdata.setCel(c);break;case 603979816:this.g.cartoonFancy=c;break;case 603979934:this.g.showTiming=c;break;case 603979973:this.g.vectorSymmetry=c;break;case 603979867:this.g.isosurfaceKey=c;break;case 603979893:this.g.partialDots=c;break;case 603979872:this.g.legacyAutoBonding=c;break;case 603979826:this.g.defaultStructureDSSP=c;break;case 603979835:this.g.dsspCalcHydrogen= +c;break;case 603979782:(this.g.allowModelkit=c)||this.setModelKitMode(!1);break;case 603983903:this.setModelKitMode(c);break;case 603979887:this.g.multiProcessor=c&&1c.indexOf(""))&&this.showString(a+" = "+c,!1)},"~S,~B,~N");c(b,"showString",function(a,b){!JV.Viewer.isJS&&(this.isScriptQueued()&&(!this.isSilent|| +b)&&!"\x00".equals(a))&&JU.Logger.warn(a);this.scriptEcho(a)},"~S,~B");c(b,"getAllSettings",function(a){return this.getStateCreator().getAllSettings(a)},"~S");c(b,"getBindingInfo",function(a){return this.haveDisplay?this.acm.getBindingInfo(a):""},"~S");c(b,"getIsosurfacePropertySmoothing",function(a){return a?this.g.isosurfacePropertySmoothingPower:this.g.isosurfacePropertySmoothing?1:0},"~B");c(b,"setNavigationDepthPercent",function(a){this.tm.setNavigationDepthPercent(a);this.refresh(1,"set navigationDepth")}, +"~N");c(b,"getShowNavigationPoint",function(){return!this.g.navigationMode?!1:this.tm.isNavigating()&&!this.g.hideNavigationPoint||this.g.showNavigationPointAlways||this.getInMotion(!0)});f(b,"setPerspectiveDepth",function(a){this.tm.setPerspectiveDepth(a)},"~B");f(b,"setAxesOrientationRasmol",function(a){this.g.setB("axesOrientationRasmol",a);this.g.axesOrientationRasmol=a;this.reset(!0)},"~B");c(b,"setAxesScale",function(a,b){b=JV.Viewer.checkFloatRange(b,-100,100);570425345==a?this.g.axesOffset= +b:this.g.axesScale=b;this.axesAreTainted=!0},"~N,~N");c(b,"setAxesMode",function(a){this.g.axesMode=a;this.axesAreTainted=!0;switch(a){case 603979808:this.g.removeParam("axesmolecular");this.g.removeParam("axeswindow");this.g.setB("axesUnitcell",!0);a=2;break;case 603979804:this.g.removeParam("axesunitcell");this.g.removeParam("axeswindow");this.g.setB("axesMolecular",!0);a=1;break;case 603979809:this.g.removeParam("axesunitcell"),this.g.removeParam("axesmolecular"),this.g.setB("axesWindow",!0),a= +0}this.g.setI("axesMode",a)},"~N");c(b,"getSelectionHalosEnabled",function(){return this.selectionHalosEnabled});c(b,"setSelectionHalosEnabled",function(a){this.selectionHalosEnabled!=a&&(this.g.setB("selectionHalos",a),this.shm.loadShape(8),this.selectionHalosEnabled=a)},"~B");c(b,"getShowSelectedOnce",function(){var a=this.showSelected;this.showSelected=!1;return a});c(b,"setStrandCount",function(a,b){b=JV.Viewer.checkIntRange(b,0,20);switch(a){case 12:this.g.strandCountForStrands=b;break;case 13:this.g.strandCountForMeshRibbon= +b;break;default:this.g.strandCountForStrands=b,this.g.strandCountForMeshRibbon=b}this.g.setI("strandCount",b);this.g.setI("strandCountForStrands",this.g.strandCountForStrands);this.g.setI("strandCountForMeshRibbon",this.g.strandCountForMeshRibbon)},"~N,~N");c(b,"getStrandCount",function(a){return 12==a?this.g.strandCountForStrands:this.g.strandCountForMeshRibbon},"~N");c(b,"setNavigationMode",function(a){this.g.navigationMode=a;this.tm.setNavigationMode(a)},"~B");f(b,"setAutoBond",function(a){this.g.setB("autobond", +a);this.g.autoBond=a},"~B");c(b,"makeConnections",function(a,b,c,e,g,j,f,l,s,m){this.clearModelDependentObjects();this.clearMinimization();return this.ms.makeConnections(a,b,c,e,g,j,f,l,s,m)},"~N,~N,~N,~N,JU.BS,JU.BS,JU.BS,~B,~B,~N");f(b,"rebond",function(){this.rebondState(!1)});c(b,"rebondState",function(a){this.clearModelDependentObjects();this.ms.deleteAllBonds();a=a&&this.g.legacyAutoBonding;this.ms.autoBondBs4(null,null,null,null,this.getMadBond(),a,null);this.addStateScript(a?"set legacyAutoBonding TRUE;connect;set legacyAutoBonding FALSE;": +"connect;",!1,!0)},"~B");f(b,"setPercentVdwAtom",function(a){this.g.setI("percentVdwAtom",a);this.g.percentVdwAtom=a;this.rd.value=a/100;this.rd.factorType=J.atomdata.RadiusData.EnumType.FACTOR;this.rd.vdwType=J.c.VDW.AUTO;this.shm.setShapeSizeBs(0,0,this.rd,null)},"~N");f(b,"getMadBond",function(){return 2*this.g.bondRadiusMilliAngstroms});f(b,"setShowHydrogens",function(a){this.g.setB("showHydrogens",a);this.g.showHydrogens=a},"~B");c(b,"setShowBbcage",function(a){this.setObjectMad10(32,"boundbox", +a?-4:0);this.g.setB("showBoundBox",a)},"~B");c(b,"getShowBbcage",function(){return 0!=this.getObjectMad10(4)});c(b,"setShowUnitCell",function(a){this.setObjectMad10(33,"unitcell",a?-2:0);this.g.setB("showUnitCell",a)},"~B");c(b,"getShowUnitCell",function(){return 0!=this.getObjectMad10(5)});c(b,"setShowAxes",function(a){this.setObjectMad10(34,"axes",a?-2:0);this.g.setB("showAxes",a)},"~B");c(b,"getShowAxes",function(){return 0!=this.getObjectMad10(1)});f(b,"setFrankOn",function(a){this.isPreviewOnly&& +(a=!1);this.frankOn=a;this.setObjectMad10(36,"frank",a?1:0)},"~B");c(b,"getShowFrank",function(){return this.isPreviewOnly||this.isApplet&&this.creatingImage?!1:this.isSignedApplet&&!this.isSignedAppletLocal&&!JV.Viewer.isJS||this.frankOn});f(b,"setShowMeasurements",function(a){this.g.setB("showMeasurements",a);this.g.showMeasurements=a},"~B");c(b,"setUnits",function(a,b){var c="default".equals(a);(!b||!c)&&this.g.setUnits(a);b&&this.setShapeProperty(6,"reformatDistances",a)},"~S,~B");f(b,"setRasmolDefaults", +function(){this.setDefaultsType("RasMol")});f(b,"setJmolDefaults",function(){this.setDefaultsType("Jmol")});c(b,"setDefaultsType",function(a){a.equalsIgnoreCase("RasMol")?this.stm.setRasMolDefaults():a.equalsIgnoreCase("PyMOL")?this.stm.setPyMOLDefaults():(this.stm.setJmolDefaults(),this.setIntProperty("bondingVersion",0),this.shm.setShapeSizeBs(0,0,this.rd,this.getAllAtoms()))},"~S");c(b,"setAntialias",function(a,b){var c=!1;switch(a){case 603979786:c=this.g.antialiasDisplay!=b;this.g.antialiasDisplay= +b;break;case 603979790:c=this.g.antialiasTranslucent!=b;this.g.antialiasTranslucent=b;break;case 603979788:this.g.antialiasImages=b;return}c&&(this.resizeImage(0,0,!1,!1,!0),this.refresh(3,"Viewer:setAntialias()"))},"~N,~B");c(b,"allocTempPoints",function(a){return this.tempArray.allocTempPoints(a)},"~N");c(b,"freeTempPoints",function(a){this.tempArray.freeTempPoints(a)},"~A");c(b,"allocTempScreens",function(a){return this.tempArray.allocTempScreens(a)},"~N");c(b,"freeTempScreens",function(a){this.tempArray.freeTempScreens(a)}, +"~A");c(b,"allocTempEnum",function(a){return this.tempArray.allocTempEnum(a)},"~N");c(b,"freeTempEnum",function(a){this.tempArray.freeTempEnum(a)},"~A");c(b,"getFont3D",function(a,b,c){return this.gdata.getFont3DFSS(a,b,c)},"~S,~S,~N");c(b,"getAtomGroupQuaternions",function(a,b){return this.ms.getAtomGroupQuaternions(a,b,this.getQuaternionFrame())},"JU.BS,~N");c(b,"setStereoMode",function(a,b,c){this.setFloatProperty("stereoDegrees",c);this.setBooleanPropertyTok("greyscaleRendering",603979850,b.isBiColor()); +null!=a?this.tm.setStereoMode2(a):this.tm.setStereoMode(b)},"~A,J.c.STER,~N");c(b,"getChimeInfo",function(a){return this.getPropertyManager().getChimeInfo(a,this.bsA())},"~N");c(b,"getModelFileInfo",function(){return this.getPropertyManager().getModelFileInfo(this.getVisibleFramesBitSet())});c(b,"getModelFileInfoAll",function(){return this.getPropertyManager().getModelFileInfo(null)});c(b,"showEditor",function(a){var b=this.getProperty("DATA_API","getScriptEditor",Boolean.TRUE);null!=b&&b.show(a)}, +"~A");c(b,"getPropertyManager",function(){null==this.pm&&(this.pm=J.api.Interface.getInterface("JV.PropertyManager",this,"prop")).setViewer(this);return this.pm});c(b,"setTainted",function(a){this.isTainted=this.axesAreTainted=a&&(this.refreshing||this.creatingImage)},"~B");c(b,"checkObjectClicked",function(a,b,c){return this.shm.checkObjectClicked(a,b,c,this.getVisibleFramesBitSet(),this.g.drawPicking)},"~N,~N,~N");c(b,"checkObjectHovered",function(a,b){return 0<=a&&null!=this.shm&&this.shm.checkObjectHovered(a, +b,this.getVisibleFramesBitSet(),this.getBondsPickable())},"~N,~N");c(b,"checkObjectDragged",function(a,b,c,e,g){var j=0;switch(this.getPickingMode()){case 2:j=5;break;case 4:j=22}return this.shm.checkObjectDragged(a,b,c,e,g,this.getVisibleFramesBitSet(),j)?(this.refresh(1,"checkObjectDragged"),22==j&&this.scriptEcho(this.getShapeProperty(22,"command")),!0):!1},"~N,~N,~N,~N,~N");c(b,"rotateAxisAngleAtCenter",function(a,b,c,e,g,j,f){(a=this.tm.rotateAxisAngleAtCenter(a,b,c,e,g,j,f))&&this.setSync(); +return a},"J.api.JmolScriptEvaluator,JU.P3,JU.V3,~N,~N,~B,JU.BS");c(b,"rotateAboutPointsInternal",function(a,b,c,e,g,j,f,l,s,m,p,n){null==a&&(a=this.eval);if(this.headless){if(j&&3.4028235E38==g)return!1;j=!1}(a=this.tm.rotateAboutPointsInternal(a,b,c,e,g,!1,j,f,!1,l,s,m,p,n))&&this.setSync();return a},"J.api.JmolScriptEvaluator,JU.P3,JU.P3,~N,~N,~B,JU.BS,JU.V3,JU.Lst,~A,JU.M4,~B");c(b,"startSpinningAxis",function(a,b,c){this.tm.spinOn||this.tm.navOn?(this.tm.setSpinOff(),this.tm.setNavOn(!1)):this.tm.rotateAboutPointsInternal(null, +a,b,this.g.pickingSpinRate,3.4028235E38,c,!0,null,!1,null,null,null,null,!1)},"JU.T3,JU.T3,~B");c(b,"getModelDipole",function(){return this.ms.getModelDipole(this.am.cmi)});c(b,"calculateMolecularDipole",function(a){try{return this.ms.calculateMolecularDipole(this.am.cmi,a)}catch(b){if(E(b,"JV.JmolAsyncException"))return null!=this.eval&&this.eval.loadFileResourceAsync(b.getFileName()),null;throw b;}},"JU.BS");c(b,"setDefaultLattice",function(a){Float.isNaN(a.x+a.y+a.z)||this.g.ptDefaultLattice.setT(a); +this.g.setO("defaultLattice",JU.Escape.eP(a))},"JU.P3");c(b,"getDefaultLattice",function(){return this.g.ptDefaultLattice});c(b,"getModelExtract",function(a,b,c,e){return this.getPropertyManager().getModelExtract(this.getAtomBitSet(a),b,c,e,!1)},"~O,~B,~B,~S");f(b,"getData",function(a,b){return this.getModelFileData(a,b,!0)},"~S,~S");c(b,"getModelFileData",function(a,b,c){return this.getPropertyManager().getAtomData(a,b,c)},"~S,~S,~B");c(b,"getModelCml",function(a,b,c,e){return this.getPropertyManager().getModelCml(a, +b,c,e,!1)},"JU.BS,~N,~B,~B");c(b,"getPdbAtomData",function(a,b,c,e){return this.getPropertyManager().getPdbAtomData(null==a?this.bsA():a,b,c,e,!1)},"JU.BS,JU.OC,~B,~B");c(b,"isJmolDataFrame",function(){return this.ms.isJmolDataFrameForModel(this.am.cmi)});c(b,"setFrameTitle",function(a,b){this.ms.setFrameTitle(JU.BSUtil.newAndSetBit(a),b)},"~N,~S");c(b,"setFrameTitleObj",function(a){this.shm.loadShape(31);this.ms.setFrameTitle(this.getVisibleFramesBitSet(),a)},"~O");c(b,"getFrameTitle",function(){return this.ms.getFrameTitle(this.am.cmi)}); +c(b,"setAtomProperty",function(a,b,c,e,g,j,f){1648363544==b&&this.shm.deleteVdwDependentShapes(a);this.clearMinimization();this.ms.setAtomProperty(a,b,c,e,g,j,f);switch(b){case 1086326789:this.setModelkitPropertySafely("updateatomkeys",a);case 1111492609:case 1111492610:case 1111492611:case 1111492612:case 1111492613:case 1111492614:case 1111490577:case 1111490578:case 1111490579:this.refreshMeasures(!0)}},"JU.BS,~N,~N,~N,~S,~A,~A");c(b,"checkCoordinatesChanged",function(a){this.ms.recalculatePositionDependentQuantities(a, +null);this.refreshMeasures(!0)},"JU.BS");c(b,"setAtomCoords",function(a,b,c){if(!a.isEmpty()){var e=this.ms.at[a.nextSetBit(0)],g=a.cardinality();this.sm.setStatusStructureModified(e.i,e.mi,3,"setAtomCoords",g,a);this.ms.setAtomCoords(a,b,c);this.setStatusAtomMoved(!0,a);this.sm.setStatusStructureModified(e.i,e.mi,-3,"OK",g,a)}},"JU.BS,~N,~O");c(b,"setAtomCoordsRelative",function(a,b){null==b&&(b=this.bsA());if(!b.isEmpty()){var c=0!=a.lengthSquared(),e=this.ms.at[b.nextSetBit(0)],g=b.cardinality(); +c&&this.sm.setStatusStructureModified(e.i,e.mi,3,"setAtomCoords",g,b);this.ms.setAtomCoordsRelative(a,b);this.checkMinimization();c&&(this.setStatusAtomMoved(!1,b),this.sm.setStatusStructureModified(e.i,e.mi,-3,"OK",g,b))}},"JU.T3,JU.BS");c(b,"invertAtomCoord",function(a,b,c,e,g){if(0<=e){c=JU.JmolMolecule.getBranchesForInversion(this.ms.at,e,this.ms.getMoleculeBitSetForAtom(e));var j=c.cardinality();switch(j){case 0:case 1:return;case 3:case 4:for(var f=D(j,0),l=D(j,0),s=0,m=c.nextSetBit(0);0<=m;m= +c.nextSetBit(m+1),s++)f[s]=this.getBranchBitSet(m,e,!0).cardinality(),l[s]=m;for(s=0;s=p&&c.get(l[m])&&(n=l[m],p=f[m]);c.clear(n)}}g&&!c.isEmpty()&&this.undoMoveActionClear(e,2,!0)}j=c.cardinality();0!=j&&(f=this.ms.at[c.nextSetBit(0)],this.sm.setStatusStructureModified(f.i,f.mi,3,"invertAtomCoords",j,c),this.ms.invertSelected(a,b,e,c),this.setStatusAtomMoved(!0,c),this.sm.setStatusStructureModified(f.i,f.mi,-3,"OK",j,c),g&&this.setStatusAtomPicked(e, +"inverted: "+JU.Escape.eBS(c),null,!1))},"JU.P3,JU.P4,JU.BS,~N,~B");c(b,"invertSelected",function(a,b,c,e){null==e&&(e=this.bsA());e.isEmpty()||(this.ms.invertSelected(a,b,c,e),this.setStatusAtomMoved(!0,e))},"JU.P3,JU.P4,~N,JU.BS");c(b,"moveAtoms",function(a,b,c,e,g,j,f,l,s){if(!f.isEmpty()){var m=this.getMotionFixedAtoms(null,null);if(!f.intersects(m)){s=s?this.getOperativeSymmetry():null;var p=null;null!=s&&(p=this.ms.saveAtomPositions());this.ms.moveAtoms(a,b,c,e,f,g,j,l);null!=s&&this.getModelkit(!1).checkMovedAtoms(m, +f,p);this.setStatusAtomMoved(!0,f)}}},"JU.M4,JU.M3,JU.M3,JU.V3,JU.P3,~B,JU.BS,~B,~B");c(b,"moveSelectedXY",function(a,b,c){this.moveSelected(a,b,-2147483648,-2147483648,-2147483648,null,null,null,!1,!1,c)},"~N,~N,~N");c(b,"moveSelected",function(a,b,c,e,g,j,f,l,s,m,p){if(0==c&&null==l||this.isJmolDataFrame())return 0;if(null==l){-2147483648==e&&null!=this.modelkit&&this.setModelkitPropertySafely("rotatebondindex",Integer.$valueOf(-2147483648));if(-2147483648==a)return this.showSelected=!0,this.movableBitSet= +this.setMovableBitSet(null,!m),this.shm.loadShape(8),this.refresh(6,"moveSelected"),0;if(2147483647==a){if(!this.showSelected)return 0;this.showSelected=!1;this.movableBitSet=null;this.refresh(6,"moveSelected");return 0}}if(this.movingSelected)return 0;this.movingSelected=!0;this.stopMinimization();null==l&&-2147483648!=e&&null!=this.modelkit&&null!=this.modelkit.getProperty("rotatebondindex")?this.modelkit.actionRotateBond(a,b,e,g,0!=(p&16)):(null==j&&(j=this.bsA()),e=j.nextSetBit(0),j=this.setMovableBitSet(j, +!m),j.isEmpty()?(j.set(e),this.sm.setStatusStructureModified(e,this.getModelIndexForAtom(e),-3,"FAILED",1,j)):s?(f=null==f?this.ms.getAtomSetCenter(j):f,null==l&&(this.tm.finalizeTransformParameters(),l=this.g.antialiasDisplay?2:1,this.tm.transformPt3f(f,this.ptScreen),-2147483648!=c?this.ptScreenNew.set(this.ptScreen.x,this.ptScreen.y,this.ptScreen.z+c):this.ptScreenNew.set(this.ptScreen.x+a*l,this.ptScreen.y+b*l,this.ptScreen.z),this.tm.unTransformPoint(this.ptScreenNew,this.ptNew),l=this.ptNew, +null!=this.getOperativeSymmetry()&&(l.sub(f),l.add(this.ms.at[e]),this.getModelkit(!1).cmdAssignMoveAtoms(j,e,l,null,!0,!m))),Float.isNaN(l.x)||(l.sub(f),this.setAtomCoordsRelative(l,j))):this.tm.rotateXYBy(a,b,j));this.refresh(2,"");this.movingSelected=!1;return null==j?0:j.cardinality()},"~N,~N,~N,~N,~N,JU.BS,JU.P3,JU.P3,~B,~B,~N");c(b,"highlightBond",function(a,b,c,e){if(this.hoverEnabled){b=null;if(0<=a){var g=this.ms.bo[a];b=JU.BSUtil.newAndSetBit(g.atom2.i);b.set(g.atom1.i)}this.highlight(b); +this.getModelkit(!1);this.setModelkitPropertySafely("screenxy",D(-1,[c,e]));this.setModelkitPropertySafely("bondindex",Integer.$valueOf(a));a=this.setModelkitPropertySafely("hoverlabel",Integer.$valueOf(-2-a));null!=a&&this.hoverOnPt(c,e,a,null,null);this.refresh(3,"highlightBond")}},"~N,~N,~N,~N");c(b,"highlight",function(a){this.atomHighlighted=null!=a&&1==a.cardinality()?a.nextSetBit(0):-1;null==a?this.setCursor(0):(this.shm.loadShape(8),this.setCursor(12));this.setModelkitPropertySafely("highlight", +a);this.setShapeProperty(8,"highlight",a)},"JU.BS");c(b,"refreshMeasures",function(a){this.setShapeProperty(6,"refresh",null);this.setStatusMeasuring("refreshed",-3,"",0);a&&this.stopMinimization()},"~B");c(b,"functionXY",function(a,b,c){var e=null;if(0==a.indexOf("file:"))e=this.getFileAsString3(a.substring(5),!1,null);else if(0!=a.indexOf("data2d_"))return this.sm.functionXY(a,b,c);b=Math.abs(b);c=Math.abs(c);if(null==e){a=this.getDataObj(a,null,2);if(null!=a)return a;e=""}a=L(b,c,0);var g=L(b* +c,0);JU.Parser.parseStringInfestedFloatArray(e,null,g);for(var j=e=0;ea||0==this.ms.ac)return null;a=this.getModelNumberDotted(a)}return this.getModelExtract(a,!0,!1,"V2000")},"~S");c(b,"getNMRPredict",function(a){a=a.toUpperCase();if(a.equals("H")||a.equals("1H")||a.equals(""))a="H1";else if(a.equals("C")||a.equals("13C"))a="C13";if(!a.equals("NONE")){if(!a.equals("C13")&&!a.equals("H1"))return"Type must be H1 or C13"; +var b=this.getModelExtract("selected",!0,!1,"V2000"),c=b.indexOf("\n");if(0>c)return null;b="Jmol "+JV.Viewer.version_date+b.substring(c);if(this.isApplet)return this.showUrl(this.g.nmrUrlFormat+b),"opening "+this.g.nmrUrlFormat}this.syncScript("true","*",0);this.syncScript(a+"Simulate:",".",0);return"sending request to JSpecView"},"~S");c(b,"getHelp",function(a){0>this.g.helpPath.indexOf("?")?(0c)return 0;this.clearModelDependentObjects();var e=this.ms.at[c];if(null==e)return 0;var g=e.mi;if(b)return this.deleteModels(g,a);this.sm.setStatusStructureModified(c,e.mi,4,"deleting atoms "+a,a.cardinality(),a);this.ms.deleteAtoms(a); +e=this.slm.deleteAtoms(a);this.setTainted(!0);this.sm.setStatusStructureModified(c,g,-4,"OK",e,a);return e},"JU.BS,~B");c(b,"deleteModels",function(a,b){var c=null==b?JU.BSUtil.newAndSetBit(a):this.ms.getModelBS(b,!1);this.clearModelDependentObjects();b=this.getModelUndeletedAtomsBitSetBs(c);var e=b.cardinality(),g=this.am.cmi;this.setCurrentModelIndexClear(0,!1);this.am.setAnimationOn(!1);var j=JU.BSUtil.copy(this.slm.bsDeleted),c=this.ms.deleteModels(c);if(null==c)return this.setCurrentModelIndexClear(g, +!1),0;this.sm.setStatusStructureModified(-1,a,5,"deleting model "+this.getModelNumberDotted(a),e,b);this.slm.processDeletedModelAtoms(c);null!=this.eval&&this.eval.deleteAtomsInVariables(c);this.setAnimationRange(0,0);this.clearRepaintManager(-1);this.am.clear();this.am.initializePointers(1);this.setCurrentModelIndexClear(1this.currentShapeID)return"";this.shm.releaseShape(this.currentShapeID);this.clearRepaintManager(this.currentShapeID);return JV.JC.getShapeClassName(this.currentShapeID,!1)+" "+this.currentShapeState});c(b,"handleError",function(a,b){try{b&&this.zapMsg(""+a),this.undoMoveAction(4165,-2),0==JU.Logger.getLogLevel()&&JU.Logger.setLogLevel(4),this.setCursor(0),this.setBooleanPropertyTok("refreshing",603979900,!0),this.fm.setPathForAllFiles(""), +JU.Logger.error("vwr handling error condition: "+a+" "),this.notifyError("Error","doClear="+b+"; "+a,""+a)}catch(c){try{JU.Logger.error("Could not notify error "+a+": due to "+c)}catch(e){}}},"Throwable,~B");c(b,"getFunctions",function(a){return a?JV.Viewer.staticFunctions:this.localFunctions},"~B");c(b,"removeFunction",function(a){a=a.toLowerCase();null!=this.getFunction(a)&&(JV.Viewer.staticFunctions.remove(a),this.localFunctions.remove(a))},"~S");c(b,"getFunction",function(a){if(null==a)return null; +a=(JV.Viewer.isStaticFunction(a)?JV.Viewer.staticFunctions:this.localFunctions).get(a);return null==a||null==a.geTokens()?null:a},"~S");b.isStaticFunction=c(b,"isStaticFunction",function(a){return a.startsWith("static_")},"~S");c(b,"isFunction",function(a){return(JV.Viewer.isStaticFunction(a)?JV.Viewer.staticFunctions:this.localFunctions).containsKey(a)},"~S");c(b,"clearFunctions",function(){JV.Viewer.staticFunctions.clear();this.localFunctions.clear()});c(b,"addFunction",function(a){var b=a.getName(); +(JV.Viewer.isStaticFunction(b)?JV.Viewer.staticFunctions:this.localFunctions).put(b,a)},"J.api.JmolScriptFunction");c(b,"getFunctionCalls",function(a){return this.getStateCreator().getFunctionCalls(a)},"~S");c(b,"checkPrivateKey",function(a){return a==this.privateKey},"~N");c(b,"bindAction",function(a,b){this.haveDisplay&&this.acm.bind(a,b)},"~S,~S");c(b,"unBindAction",function(a,b){this.haveDisplay&&this.acm.unbindAction(a,b)},"~S,~S");c(b,"calculateStruts",function(a,b){return this.ms.calculateStruts(null== +a?this.bsA():a,null==b?this.bsA():b)},"JU.BS,JU.BS");c(b,"getPreserveState",function(){return this.g.preserveState&&null!=this.scm});c(b,"isKiosk",function(){return this.$isKiosk});c(b,"hasFocus",function(){return this.haveDisplay&&(this.$isKiosk||this.apiPlatform.hasFocus(this.display))});c(b,"setFocus",function(){this.haveDisplay&&!this.apiPlatform.hasFocus(this.display)&&this.apiPlatform.requestFocusInWindow(this.display)});c(b,"stopMinimization",function(){null!=this.minimizer&&this.minimizer.setProperty("stop", +null)});c(b,"clearMinimization",function(){null!=this.minimizer&&this.minimizer.setProperty("clear",null)});c(b,"getMinimizationInfo",function(){return null==this.minimizer?"":this.minimizer.getProperty("log",0)});c(b,"checkMinimization",function(){this.refreshMeasures(!0);if(this.g.monitorEnergy){try{this.minimize(null,0,0,this.getFrameAtoms(),null,null,0,1)}catch(a){if(!E(a,Exception))throw a;}this.echoMessage(this.getP("_minimizationForceField")+" Energy = "+this.getP("_minimizationEnergy"))}}); +c(b,"minimize",function(a,b,c,e,g,j,f,l){var s=null!=e;s&&(l|=2);var m=0!=(l&16),p=0!=(l&256),n=0!=(l&1),r=0!=(l&8),u=0!=(l&64),v=u||0!=(l&32),w=null!=g;this.isModelKitOpen()&&this.setModelkitPropertySafely("constraint",null);null==j&&(j=this.getFrameAtoms());!r&&(!m&&s&&!w&&!v)&&(w=JU.BSUtil.copy(j),g=JU.BSUtil.copy(w),g.andNot(e),e=w,w=!0);s?r||e.and(j):(e=this.getThisModelAtoms(),v&&e.and(this.bsA()));if(!e.isEmpty())if(s=p||!v?JU.BSUtil.copy(this.ms.am[this.ms.at[e.nextSetBit(0)].mi].bsAsymmetricUnit): +null,p&&null==s)this.scriptStatusMsg("MODELKIT MINIMIZE is only applicable to crystal structures.","minimization: not a crystal structure");else try{if(p)this.getModelkit(!1).cmdMinimize(a,s,b,c,f,l);else{var x=null==s?this.g.forceField:"UFF";this.getModelForAtomIndex(e.nextSetBit(0)).auxiliaryInfo.put("dimension","3D");r&&(j=e);var A=JU.BSUtil.copy(w?g:this.slm.getMotionFixedAtoms()),B=!A.isEmpty();B&&e.andNot(A);var C=null!=s&&p?this.getThisModelAtoms():v||!B?new JU.BS:this.ms.getAtomsWithinRadius(0>= +f?5:f,e,!0,null,null);C.andNot(e);B?A.and(C):A=C;A.and(j);l|=(B?4:0)|(this.getBooleanProperty("minimizationSilent")?1:0);if(!r||!this.getBoolean(603979962)){if(r)try{n||JU.Logger.info("Minimizing "+e.cardinality()+" atoms"),this.getMinimizer(!0).minimize(b,c,e,A,null,l,"UFF")}catch(D){if(E(D,Exception))JU.Logger.error("Minimization error: "+D.toString()),D.printStackTrace();else throw D;}if(m){var F=this.addHydrogens(e,l);r||e.or(F)}var G=e.cardinality();if(x.equals("MMFF")&&G>this.g.minimizationMaxAtoms)this.scriptStatusMsg("Too many atoms for minimization ("+ +G+">"+this.g.minimizationMaxAtoms+"); use 'set minimizationMaxAtoms' to increase this limit","minimization: too many atoms");else if(u&&(A.or(this.ms.getConnectingAtoms(e,A)),e.andNot(A)),n||JU.Logger.info("Minimizing "+e.cardinality()+" atoms"),this.getMinimizer(!0).minimize(b,c,e,A,s,l,r?"MMFF":x),r){this.g.forceField="MMFF";this.setHydrogens(e);var I=this.getMinimizer(!1).getForceFieldUsed();null!=I&&this.showString("Minimized by Jmol using "+I,!1)}}}}catch(K){if(E(K,"JV.JmolAsyncException"))null!= +a&&a.loadFileResourceAsync(K.getFileName());else if(E(K,Exception))a=K,JU.Logger.error("Minimization error: "+a.toString()),a.printStackTrace();else throw K;}},"J.api.JmolScriptEvaluator,~N,~N,JU.BS,JU.BS,JU.BS,~N,~N");c(b,"setHydrogens",function(a){for(var b=D(1,0),b=this.ms.calculateHydrogens(a,b,null,2056),c=a.nextSetBit(0);0<=c;c=a.nextSetBit(c+1)){var e=b[c];if(!(null==e||0==e.length))for(var g=this.ms.at[c],j=g.bonds,f=0,l=0,s=g.getBondCount();fthis.am.cmi)return new JU.BS;null==b&&(b=new JU.BS);b.or(this.slm.getMotionFixedAtoms());b.and(this.getThisModelAtoms());null==a&&(a=this.getOperativeSymmetry());null!=a&&null!=this.getModelkit(!1)&&this.modelkit.addLockedAtoms(a, +b);return b},"J.api.SymmetryInterface,JU.BS");c(b,"getAtomicPropertyState",function(a,b,c,e,g){this.getStateCreator().getAtomicPropertyStateBuffer(a,b,c,e,g)},"JU.SB,~N,JU.BS,~S,~A");c(b,"getCenterAndPoints",function(a,b){return this.ms.getCenterAndPoints(a,b)},"JU.Lst,~B");c(b,"writeFileData",function(a,b,c,e){return this.getOutputManager().writeFileData(a,b,c,e)},"~S,~S,~N,~A");c(b,"getPdbData",function(a,b,c,e,g,j){return this.getPropertyManager().getPdbData(a,b,null==c?this.bsA():c,e,g,j)},"~N,~S,JU.BS,~A,JU.OC,~B"); +c(b,"getGroupsWithin",function(a,b){return this.ms.getGroupsWithin(a,b)},"~N,JU.BS");c(b,"setShapeSize",function(a,b,c){null==c&&(c=this.bsA());this.shm.setShapeSizeBs(a,b,null,c)},"~N,~N,JU.BS");c(b,"setShapeProperty",function(a,b,c){0<=a&&this.shm.setShapePropertyBs(a,b,c,null)},"~N,~S,~O");c(b,"getShapeProperty",function(a,b){return this.shm.getShapePropertyIndex(a,b,-2147483648)},"~N,~S");c(b,"getShapePropertyAsInt",function(a,b){var c=this.getShapeProperty(a,b);return null==c||!C(c,Integer)? +-2147483648:c.intValue()},"~N,~S");c(b,"setModelVisibility",function(){null!=this.shm&&this.shm.setModelVisibility()});c(b,"resetShapes",function(a){this.shm.resetShapes(!a);a&&(this.shm.loadDefaultShapes(this.ms),this.clearRepaintManager(-1))},"~B");c(b,"setParallel",function(a){return this.$isParallel=this.g.multiProcessor&&a},"~B");c(b,"isParallel",function(){return this.g.multiProcessor&&this.$isParallel});c(b,"undoMoveAction",function(a,b){return this.g.preserveState?this.getStateCreator().undoMoveAction(a, +b):0},"~N,~N");c(b,"undoMoveActionClear",function(a,b,c){this.g.preserveState&&null==this.getOperativeSymmetry()&&this.getStateCreator().undoMoveActionClear(a,b,c)},"~N,~N,~B");c(b,"moveAtomWithHydrogens",function(a,b,c,e,g,j){this.stopMinimization();var f=null!=g&&0==b,l=this.ms.at[a];null==j&&(j=JU.BSUtil.newAndSetBit(a),(null==this.getOperativeSymmetry()||this.isModelKitOpen()&&!this.modelkit.hasConstraint(a,!0,!1))&&!f&&this.ms.addConnectedHAtoms(l,j));return this.moveSelected(b,c,e,-2147483648, +-2147483648,j,l,g,!0,!0,0)},"~N,~N,~N,~N,JU.P3,JU.BS");c(b,"isModelPDB",function(a){return this.ms.am[a].isBioModel},"~N");f(b,"deleteMeasurement",function(a){this.setShapeProperty(6,"delete",Integer.$valueOf(a))},"~N");f(b,"getSmiles",function(a){return this.getSmilesOpt(a,-1,-1,16|(null==a&&JU.Logger.debugging?131072:0),null)},"JU.BS");f(b,"getOpenSmiles",function(a){return this.getSmilesOpt(a,-1,-1,5|(null==a&&JU.Logger.debugging?131072:0),"/open///")},"JU.BS");c(b,"getBioSmiles",function(a){return this.getSmilesOpt(a, +-1,-1,24117248|(JU.Logger.debugging?131072:0),null)},"JU.BS");c(b,"getSmilesOpt",function(a,b,c,e,g){var j=17825792==(e&17825792)?JV.Viewer.getJmolVersion()+" "+this.getModelName(this.am.cmi):g,f=this.ms.at;null==a&&(0>b||0>c?a=this.bsA():(1048576==(e&1048576)&&(b>c&&(a=b,b=c,c=a),b=f[b].group.firstAtomIndex,c=f[c].group.lastAtomIndex),a=new JU.BS,a.setBits(b,c+1)));e|=this.isModel2D(a)?134217728:0;b=this.getSmilesMatcher();return JV.JC.isSmilesCanonical(g)?(e=b.getSmiles(f,this.ms.ac,a,"/noAromatic/", +e),this.getChemicalInfo(e,"smiles",null).trim()):b.getSmiles(f,this.ms.ac,a,j,e)},"JU.BS,~N,~N,~N,~S");c(b,"isModel2D",function(a){a=this.getModelForAtomIndex(a.nextSetBit(0));return null!=a&&"2D".equals(a.auxiliaryInfo.get("dimension"))},"JU.BS");c(b,"alert",function(a){this.prompt(a,null,null,!0)},"~S");c(b,"prompt",function(a,b,c,e){return this.$isKiosk?"null":this.apiPlatform.prompt(a,b,c,e)},"~S,~S,~A,~B");c(b,"dialogAsk",function(a,b){return prompt(a,b)},"~S,~S,java.util.Map");c(b,"initializeExporter", +function(a){var b=a.get("type").equals("JS");if(b){if(null!=this.jsExporter3D)return this.jsExporter3D.initializeOutput(this,this.privateKey,a),this.jsExporter3D}else{var c=a.get("fileName"),e=a.get("fullPath"),c=this.getOutputChannel(c,e);if(null==c)return null;a.put("outputChannel",c)}c=J.api.Interface.getOption("export.Export3D",this,"export");if(null==c)return null;a=c.initializeExporter(this,this.privateKey,this.gdata,a);b&&null!=a&&(this.jsExporter3D=c);return null==a?null:c},"java.util.Map"); +c(b,"getMouseEnabled",function(){return this.refreshing&&!this.creatingImage});f(b,"calcAtomsMinMax",function(a,b){this.ms.calcAtomsMinMax(a,b)},"JU.BS,JU.BoxInfo");c(b,"getObjectMap",function(a,b){switch(b.charCodeAt(0)){case 123:null!=this.getScriptManager()&&(null!=this.definedAtomSets&&a.putAll(this.definedAtomSets),JS.T.getTokensType(a,2097152));break;case 36:case 48:this.shm.getObjectMap(a,"$"==b)}},"java.util.Map,~S");c(b,"setPicked",function(a,b){var c=null,e=null;0<=a&&(b&&this.setPicked(-1, +!1),this.g.setI("_atompicked",a),c=this.g.getParam("picked",!0),e=this.g.getParam("pickedList",!0));if(null==c||10!=c.tok)c=JS.SV.newV(10,new JU.BS),e=JS.SV.getVariableList(new JU.Lst),this.g.setUserVariable("picked",c),this.g.setUserVariable("pickedList",e);0>a||(JS.SV.getBitSet(c,!1).set(a),c=e.pushPop(null,null),10==c.tok&&e.pushPop(null,c),(10!=c.tok||!c.value.get(a))&&e.pushPop(null,JS.SV.newV(10,JU.BSUtil.newAndSetBit(a))))},"~N,~B");f(b,"runScript",function(a){return""+this.evaluateExpression(w(-1, +[w(-1,[JS.T.tokenScript,JS.T.tokenLeftParen,JS.SV.newS(a),JS.T.tokenRightParen])]))},"~S");f(b,"runScriptCautiously",function(a){var b=new JU.SB;try{if(null==this.getScriptManager())return null;this.eval.runScriptBuffer(a,b,!1)}catch(c){if(E(c,Exception))return this.eval.getErrorMessage();throw c;}return b.toString()},"~S");c(b,"setFrameDelayMs",function(a){this.ms.setFrameDelayMs(a,this.getVisibleFramesBitSet())},"~N");c(b,"getBaseModelBitSet",function(){return this.ms.getModelAtomBitSetIncludingDeleted(this.getJDXBaseModelIndex(this.am.cmi), +!0)});c(b,"clearTimeouts",function(){null!=this.timeouts&&J.thread.TimeoutThread.clear(this.timeouts)});c(b,"setTimeout",function(a,b,c){this.haveDisplay&&(!this.headless&&!this.autoExit)&&(null==a?this.clearTimeouts():(null==this.timeouts&&(this.timeouts=new java.util.Hashtable),J.thread.TimeoutThread.setTimeout(this,this.timeouts,a,b,c)))},"~S,~N,~S");c(b,"triggerTimeout",function(a){this.haveDisplay&&null!=this.timeouts&&J.thread.TimeoutThread.trigger(this.timeouts,a)},"~S");c(b,"clearTimeout", +function(a){this.setTimeout(a,0,null)},"~S");c(b,"showTimeout",function(a){return this.haveDisplay?J.thread.TimeoutThread.showTimeout(this.timeouts,a):""},"~S");c(b,"getOrCalcPartialCharges",function(a,b){null==a&&(a=this.bsA());a=JU.BSUtil.copy(a);JU.BSUtil.andNot(a,b);JU.BSUtil.andNot(a,this.ms.bsPartialCharges);a.isEmpty()||this.calculatePartialCharges(a);return this.ms.getPartialCharges()},"JU.BS,JU.BS");c(b,"calculatePartialCharges",function(a){if(null==a||a.isEmpty())a=this.getFrameAtoms(); +a.isEmpty()||(JU.Logger.info("Calculating MMFF94 partial charges for "+a.cardinality()+" atoms"),this.getMinimizer(!0).calculatePartialCharges(this.ms,a,null))},"JU.BS");c(b,"setCurrentModelID",function(a){var b=this.am.cmi;0<=b&&this.ms.setInfo(b,"modelID",a)},"~S");c(b,"cacheClear",function(){this.fm.cacheClear();this.ligandModels=this.ligandModelSet=null;this.ms.clearCache();this.cm.ce.clearCache()});c(b,"cachePut",function(a,b){JU.Logger.info("Viewer cachePut "+a);this.fm.cachePut(a,b)},"~S,~O"); +c(b,"cacheFileByName",function(a,b){return null==a?(this.cacheClear(),-1):this.fm.cacheFileByNameAdd(a,b)},"~S,~B");c(b,"clearThreads",function(){null!=this.eval&&this.eval.stopScriptThreads();this.stopMinimization();this.tm.clearThreads();this.setAnimationOn(!1)});c(b,"getEvalContextAndHoldQueue",function(a){if(null==a||!JV.Viewer.isJS&&!this.testAsync)return null;a.pushContextDown("getEvalContextAndHoldQueue");a=a.getThisContext();a.setMustResume();this.queueOnHold=a.isJSThread=!0;return a},"J.api.JmolScriptEvaluator"); +c(b,"getDefaultPropertyParam",function(a){return this.getPropertyManager().getDefaultPropertyParam(a)},"~N");c(b,"getPropertyNumber",function(a){return this.getPropertyManager().getPropertyNumber(a)},"~S");c(b,"checkPropertyParameter",function(a){return this.getPropertyManager().checkPropertyParameter(a)},"~S");c(b,"extractProperty",function(a,b,c){return this.getPropertyManager().extractProperty(a,b,c,null,!1)},"~O,~O,~N");c(b,"addHydrogens",function(a,b){var c=1==(b&1),e=8==(b&8),g=null==a;null== +a&&(a=this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().length()-1));var j=new JU.BS;if(a.isEmpty())return j;var f=new JU.Lst,g=this.getAdditionalHydrogens(a,f,b|(g?256:0)),l=!1,l=this.g.appendNew;if(0\n");c=b.size();a=Array(c);b.toArray(a);java.util.Arrays.sort(a);for(var b=new JU.SB,e=0;e=e)e+=159;if(256<=e){c=this.chainMap.get(a);if(null!=c)return c.intValue();this.chainCaseSpecified=(new Boolean(this.chainCaseSpecified|b)).valueOf();this.chainList.addLast(a)}c=Integer.$valueOf(e);this.chainMap.put(c,a);this.chainMap.put(a,c);return e},"~S,~B");c(b,"getChainIDStr",function(a){return this.chainMap.get(Integer.$valueOf(a))},"~N");c(b,"getScriptQueueInfo",function(){return null!=this.scm&&this.scm.isQueueProcessing()? +Boolean.TRUE:Boolean.FALSE});c(b,"getNMRCalculation",function(){return null==this.nmrCalculation?(this.nmrCalculation=J.api.Interface.getOption("quantum.NMRCalculation",this,"script")).setViewer(this):this.nmrCalculation});c(b,"getDistanceUnits",function(a){null==a&&(a=this.getDefaultMeasurementLabel(2));var b=a.indexOf("//");return 0>b?this.g.measureDistanceUnits:a.substring(b+2)},"~S");c(b,"calculateFormalCharges",function(a){return this.ms.fixFormalCharges(null==a?this.bsA():a)},"JU.BS");c(b,"setModulation", +function(a,b,c,e){e&&this.g.setO("_modt",JU.Escape.eP(c));this.ms.setModulation(null==a?this.getAllAtoms():a,b,c,e);this.refreshMeasures(!0)},"JU.BS,~B,JU.P3,~B");c(b,"checkInMotion",function(a){switch(a){case 0:this.setTimeout("_SET_IN_MOTION_",0,null);break;case 1:this.inMotion||this.setTimeout("_SET_IN_MOTION_",2*this.g.hoverDelayMs,"!setInMotion");break;case 2:this.setInMotion(!0),this.refresh(3,"timeoutThread set in motion")}},"~N");c(b,"checkMotionRendering",function(a){if(!this.getInMotion(!0)&& +!this.tm.spinOn&&!this.tm.vibrationOn&&!this.am.animationOn)return!0;if(this.g.wireframeRotation)return!1;var b=0;switch(a){case 1677721602:case 1153433601:b=2;break;case 1112150020:b=3;break;case 1112150021:b=4;break;case 1112152066:b=5;break;case 1073742018:b=6;break;case 603979967:b=7;break;case 603979786:b=8}return this.g.platformSpeed>=b},"~N");c(b,"openExportChannel",function(a,b,c){return this.getOutputManager().openOutputChannel(a,b,c,!1)},"~N,~S,~B");f(b,"log",function(a){null!=a&&this.getOutputManager().logToFile(a)}, +"~S");c(b,"getLogFileName",function(){return null==this.logFileName?"":this.logFileName});c(b,"getCommands",function(a,b,c){return this.getStateCreator().getCommands(a,b,c)},"java.util.Map,java.util.Map,~S");c(b,"allowCapture",function(){return!this.isApplet||this.isSignedApplet});c(b,"compileExpr",function(a){var b=null==this.getScriptManager()?null:this.eval.evaluateExpression(a,!1,!0);return C(b,Array)?b:w(-1,[JS.T.o(4,a)])},"~S");c(b,"checkSelect",function(a,b){return null!=this.getScriptManager()&& +this.eval.checkSelect(a,b)},"java.util.Map,~A");c(b,"getAnnotationInfo",function(a,b,c){return this.getAnnotationParser(1111490587==c).getAnnotationInfo(this,a,b,c,this.am.cmi)},"JS.SV,~S,~N");c(b,"getAtomValidation",function(a,b){return this.getAnnotationParser(!1).getAtomValidation(this,a,b)},"~S,JM.Atom");c(b,"dragMinimizeAtom",function(a){this.stopMinimization();var b=0,c=this.getOperativeSymmetry();null!=c&&(b=256);c=0!=b?null:this.getMotionFixedAtoms(c,null).isEmpty()?this.ms.getAtoms(this.ms.isAtomPDB(a)? +1086324742:1094713360,JU.BSUtil.newAndSetBit(a)):JU.BSUtil.setAll(this.ms.ac);try{this.minimize(this.eval,2147483647,0,c,null,null,0,b)}catch(e){if(E(e,Exception)){if(this.async){var g=(W("JV.Viewer$1")?0:JV.Viewer.$Viewer$1$(),Y(JV.Viewer$1,this,Ia("me",this,"iAtom",a)));setTimeout(function(){g.run()},100)}}else throw e;}},"~N");c(b,"getJBR",function(){return null==this.jbr?this.jbr=J.api.Interface.getInterface("JM.BioResolver",this,"file").setViewer(this):this.jbr});c(b,"checkMenuUpdate",function(){null!= +this.jmolpopup&&this.jmolpopup.jpiUpdateComputedMenus()});c(b,"getChimeMessenger",function(){return null==this.jcm?this.jcm=J.api.Interface.getInterface("JV.ChimeMessenger",this,"script").set(this):this.jcm});c(b,"getModelSetAuxiliaryInfoForAtoms",function(a){return this.ms.getModelSetAuxiliaryInfo(this.ms.getModelBS(this.getAtomBitSet(a),!1))},"~O");c(b,"getJSJSONParser",function(){return null==this.jsonParser?this.jsonParser=J.api.Interface.getInterface("JU.JSJSONParser",this,"script"):this.jsonParser}); +c(b,"parseJSON",function(a){return null==a?null:(a=a.trim()).startsWith("{")?this.parseJSONMap(a):this.parseJSONArray(a)},"~S");c(b,"parseJSONMap",function(a){return this.getJSJSONParser().parseMap(a,!0)},"~S");c(b,"parseJSONArray",function(a){return this.getJSJSONParser().parse(a,!0)},"~S");c(b,"getSymTemp",function(){return J.api.Interface.getSymmetry(this,"ms")});c(b,"getSymStatic",function(){return null==JV.Viewer.symStatic?JV.Viewer.symStatic=J.api.Interface.getSymmetry(this,"ms"):JV.Viewer.symStatic}); +c(b,"setWindowDimensions",function(a){this.resizeInnerPanel(F(a[0]),F(a[1]))},"~A");c(b,"getTriangulator",function(){return null==this.triangulator?this.triangulator=J.api.Interface.getUtil("Triangulator",this,"script"):this.triangulator});c(b,"getCurrentModelAuxInfo",function(){return 0<=this.am.cmi?this.ms.getModelAuxiliaryInfo(this.am.cmi):null});c(b,"startNBO",function(a){var b=new java.util.Hashtable;b.put("service","nbo");b.put("action","showPanel");b.put("options",a);this.sm.processService(b)}, +"~S");c(b,"startPlugin",function(a){"nbo".equalsIgnoreCase(a)&&this.startNBO("all")},"~S");c(b,"connectNBO",function(a){0>this.am.cmi||this.getNBOParser().connectNBO(this.am.cmi,a)},"~S");c(b,"getNBOParser",function(){return null==this.nboParser?this.nboParser=J.api.Interface.getInterface("J.adapter.readers.quantum.NBOParser",this,"script").set(this):this.nboParser});c(b,"getNBOAtomLabel",function(a){return this.getNBOParser().getNBOAtomLabel(a)},"JM.Atom");c(b,"calculateChirality",function(a){null== +a&&(a=this.bsA());return this.ms.calculateChiralityForAtoms(a,!0)},"JU.BS");c(b,"getSubstructureSetArray",function(a,b,c){return this.getSmilesMatcher().getSubstructureSetArray(a,this.ms.at,this.ms.ac,b,null,c)},"~S,JU.BS,~N");c(b,"getSubstructureSetArrayForNodes",function(a,b,c){return this.getSmilesMatcher().getSubstructureSetArray(a,b,b.length,null,null,c)},"~S,~A,~N");c(b,"getSmilesAtoms",function(a){return this.getSmilesMatcher().getAtoms(a)},"~S");c(b,"calculateChiralityForSmiles",function(a){try{return J.api.Interface.getSymmetry(this, +"ms").calculateCIPChiralityForSmiles(this,a)}catch(b){if(E(b,Exception))return null;throw b;}},"~S");c(b,"getPdbID",function(){return this.ms.getInfo(this.am.cmi,JV.JC.getBoolName(4))===Boolean.TRUE?this.ms.getInfo(this.am.cmi,"pdbID"):null});c(b,"getModelInfo",function(a){return this.ms.getInfo(this.am.cmi,a)},"~S");c(b,"notifyScriptEditor",function(a,b){null!=this.scriptEditor&&this.scriptEditor.notify(a,b)},"~N,~A");c(b,"sendConsoleMessage",function(a){null!=this.appConsole&&this.appConsole.sendConsoleMessage(a)}, +"~S");c(b,"getModelkitPropertySafely",function(a){return null==this.modelkit?null:this.modelkit.getProperty(a)},"~S");c(b,"setModelkitPropertySafely",function(a,b){return null==this.modelkit?null:this.modelkit.setProperty(a,b)},"~S,~O");c(b,"isModelKitOption",function(a,b){return null!=this.modelkit&&this.modelkit.checkOption(a,b)},"~S,~S");c(b,"getSymmetryInfo",function(a,b,c,e,g,j,f,l,s,m,p,n){try{return this.getSymTemp().getSymmetryInfoAtom(this.ms,a,b,c,e,g,j,l,f,s,m,p,n)}catch(r){if(E(r,Exception))return System.out.println("Exception in Viewer.getSymmetryInfo: "+ +r),JV.Viewer.isJS||r.printStackTrace(),null;throw r;}},"~N,~S,~N,JU.P3,JU.P3,JU.P3,~N,~S,~N,~N,~N,~A");c(b,"getMacro",function(a){if(null==this.macros||this.macros.isEmpty())try{var b=this.getAsciiFileOrNull(this.g.macroDirectory+"/macros.json");this.macros=this.parseJSON(b)}catch(c){if(E(c,Exception))this.macros=new java.util.Hashtable;else throw c;}if(null==a){var b=new JU.SB,e;for(a=this.macros.keySet().iterator();a.hasNext()&&((e=a.next())||1);){var g=this.macros.get(e);b.append(e).append("\t").appendO(g).append("\n")}return b.toString()}a= +a.toLowerCase();return this.macros.containsKey(a)?this.macros.get(a).get("path").toString():null},"~S");c(b,"getConsoleFontScale",function(){return this.consoleFontScale});c(b,"setConsoleFontScale",function(a){this.consoleFontScale=a},"~N");c(b,"confirm",function(a,b){return this.apiPlatform.confirm(a,b)},"~S,~S");c(b,"evalStringGUI",function(a){this.evalStringQuiet(a+"; ## GUI ##")},"~S");c(b,"selectStatus",function(a,b,c,e,g){this.select(a,b,c,e);g&&this.setStatusSelect(a)},"JU.BS,~B,~N,~B,~B"); +c(b,"setStatusSelect",function(a){this.hasSelected=!1;this.sm.setStatusSelect(null==a?this.bsA():a)},"JU.BS");c(b,"wasmInchiHack",function(a){(JV.Viewer.isJS&&(0<=a.indexOf("inchi")||0<=a.indexOf("INCHI"))||0<=a.indexOf("TAUTOMER")||0<=a.indexOf("tautomer"))&&this.getInchi(null,null,null);return a},"~S");c(b,"getInchi",function(a,b,c){try{var e=this.apiPlatform.getInChI();if(null==a&&null==b)return"";if("string"==typeof b){var g=b;g.startsWith("$")||g.startsWith(":")?b=this.getFileAsString4(g,-1, +!1,!1,!0,"script"):!g.startsWith("InChI=")&&0>g.indexOf(" ")&&(g=this.setLoadFormat(!1,"$"+b,"$",!1),b=this.getFileAsString4(g,-1,!1,!1,!0,"script"))}return e.getInchi(this,a,b,c)}catch(j){return""}},"JU.BS,~O,~S");c(b,"findSpaceGroup",function(a,b,c,e,g,j,f){var l=null;if(null==b&&null==c||0!=(f&2))b=this.getThisModelAtoms();null==c?b.isEmpty()||(a=null==a?this.getOperativeSymmetry():a,l=null==a?null:a.findSpaceGroup(this,b,null,e,null,j,f)):l=this.getSymTemp().findSpaceGroup(this,b,c,e,g,j,f);return null== +l&&0!=(f&1)?"":l},"J.api.SymmetryInterface,JU.BS,~S,~A,JU.T3,~A,~N");c(b,"restrictToModel",function(a,b){null==a&&(a=this.bsA());var c=a.isEmpty();if(c&&0<=b)return a;-1==b&&(b=this.am.cmi);if(0>b){if(c)return this.getThisModelAtoms();b=this.ms.at[a.nextSetBit(0)].getModelIndex()}c=this.getModelUndeletedAtomsBitSet(b);c.and(a);return c},"JU.BS,~N");c(b,"getThisModelAtoms",function(){return this.getModelUndeletedAtomsBitSet(this.getVisibleFramesBitSet().nextSetBit(0))});c(b,"getSymmetryEquivPoints", +function(a,b){var c=this.getCurrentUnitCell();return null==c?new JU.Lst:c.getEquivPoints(null,a,b)},"JU.P3,~S");c(b,"getSymmetryEquivPointList",function(a,b){var c=this.getCurrentUnitCell();if(null==c)return new JU.Lst;c.getEquivPointList(a,0,b.toLowerCase(),null);return a},"JU.Lst,~S");c(b,"getOperativeSymmetry",function(){var a=this.getCurrentUnitCell();return null==a||null==a.getSymmetryOperations()?null:a});c(b,"formatText",function(a){if(0>a.indexOf("@{")&&0>a.indexOf("%{"))return a;var b=a, +c=0<=b.indexOf("\\");c&&(b=JU.PT.rep(b,"\\%","\u0001"),b=JU.PT.rep(b,"\\@","\u0002"),c=!b.equals(a));for(var b=JU.PT.rep(b,"%{","@{"),e;0<=(a=b.indexOf("@{"));){a++;var g=a+1;e=b.length;for(var j=1,f="\x00",l="\x00";0=e)return b;e=b.substring(g,a);if(0==e.length)return b;e=this.evaluateExpression(e);C(e,"JU.P3")&&(e=JU.Escape.eP(e)); +b=b.substring(0,g-2)+e.toString()+b.substring(a+1)}c&&(b=JU.PT.rep(b,"\u0002","@"),b=JU.PT.rep(b,"\u0001","%"));return b},"~S");c(b,"getScaleText",function(a,b,c,e){a=JM.Measurement.fixUnits(0a.indexOf("CLOSE")),0<=a.indexOf("CLEAR")&&this.html5Applet._clearConsole(),!0):!1},"~S");b.$Viewer$1$=function(){var a=qa(JV,"Viewer$1",null, +Runnable);f(a,"run",function(){this.f$.me.dragMinimizeAtom(this.f$.iAtom)})};var a=G(JV.Viewer,"ACCESS",Enum);B(a,"NONE",0,[]);B(a,"READSPT",1,[]);B(a,"ALL",2,[]);self.Jmol&&Jmol.extend&&Jmol.extend("vwr",JV.Viewer.prototype);b.isJS=!1;b.isSwingJS=!1;b.appletDocumentBase="";b.appletCodeBase="";b.appletIdiomaBase=null;b.jsDocumentBase="";b.jmolObject=null;b.strJavaVendor="Java: "+System.getProperty("java.vendor","j2s");b.strOSName=System.getProperty("os.name","");b.strJavaVersion="Java "+System.getProperty("java.version", +"");b.version_date=null;b.staticFunctions=new java.util.Hashtable;b.nProcessors=1;b.isHighPrecision=!1;b.symStatic=null});n("J.api");K(J.api,"JmolJDXMOLParser");n("J.api");K(J.api,"JmolJDXMOLReader");n("J.jsv");A(["J.api.JmolJDXMOLParser"],"J.jsv.JDXMOLParser","java.util.Hashtable JU.BS $.Lst $.PT $.SB JU.Logger".split(" "),function(){var b=r(function(){this.line=null;this.lastModel="";this.baseModel=this.thisModelID=null;this.vibScale=0;this.loader=this.piUnitsY=this.piUnitsX=null;this.modelIdList= +"";this.peakFilePath=this.peakIndex=null;u(this,arguments)},J.jsv,"JDXMOLParser",null,J.api.JmolJDXMOLParser);f(b,"set",function(a,b,c){this.loader=a;this.peakFilePath=b;this.peakIndex=D(1,0);null!=c&&(c.remove("modelNumber"),c.containsKey("zipSet")&&(this.peakIndex=c.get("peakIndex"),null==this.peakIndex&&(this.peakIndex=D(1,0),c.put("peakIndex",this.peakIndex)),c.containsKey("subFileName")||(this.peakFilePath=JU.PT.split(b,"|")[0])));return this},"J.api.JmolJDXMOLReader,~S,java.util.Map");f(b,"getAttribute", +function(a,b){var c=JU.PT.getQuotedAttribute(a,b);return null==c?"":c},"~S,~S");f(b,"getRecord",function(a){if(null==this.line||0>this.line.indexOf(a))return null;for(a=this.line;0>a.indexOf(">");)a+=" "+this.readLine();return this.line=a},"~S");f(b,"readModels",function(){if(!this.findRecord("Models"))return!1;this.thisModelID=this.line="";for(var a=!0;;){this.line=this.loader.discardLinesUntilNonBlank();if(null==this.getRecord("a&&(a=2147483647);for(var f=0;fe.indexOf(">");)e+=" "+this.readLine();e=e.trim()}e=JU.PT.replaceAllCharacters(e, +"()<>"," ").trim();if(0==e.length)break;var g=e.indexOf("'");if(0<=g)var j=e.indexOf("'",g+1),e=e.substring(0,g)+JU.PT.rep(e.substring(g+1,j),",",";")+e.substring(j+1);JU.Logger.info("Peak Assignment: "+e);var k=JU.PT.split(e,",");c.addLast(k)}}catch(l){if(E(l,Exception))JU.Logger.error("Error reading peak assignments at "+this.line+": "+l);else throw l;}return c},"~N,~B");f(b,"setACDAssignments",function(a,b,c,f,e){try{0<=c&&(this.peakIndex=D(-1,[c]));var g=0==b.indexOf("MASS"),j=" file="+JU.PT.esc(this.peakFilePath.$replace("\\", +"/"));a=" model="+JU.PT.esc(a+" (assigned)");this.piUnitsY=this.piUnitsX="";var k=this.getACDPeakWidth(b)/2,l=new java.util.Hashtable,s=new JU.Lst;c=null;var m,p,n=0;if(g){c=new java.util.Hashtable;for(var r=JU.PT.split(e,"M ZZC"),u=r.length;1<=--u;){var v=JU.PT.getTokens(r[u]),n=Math.max(n,JU.PT.parseInt(v[0]));c.put(v[1],v[0])}m=4;p=0}else 0<=b.indexOf("NMR")?(m=0,p=3):(m=0,p=2);for(var w=f.size(),u=0;u')}return this.setPeakData(s,0)}catch(G){if(E(G,Exception))return 0;throw G;}},"~S,~S,~N,JU.Lst,~S");c(b,"fixACDAtomList",function(a,b,c){a=a.trim();a=JU.PT.getTokens(a.$replace(";"," "));for(var f=new JU.BS, +e=!1,g=0;g");else{this.modelIdList+=b;for(this.baseModel=this.getAttribute(this.line,"baseModel");0>this.line.indexOf(">")&&0>this.line.indexOf("type");)this.readLine(); +b=this.getAttribute(this.line,"type").toLowerCase();this.vibScale=JU.PT.parseFloat(this.getAttribute(this.line,"vibrationScale"));b.equals("xyzvib")?b="xyz":0==b.length&&(b=null);for(var c=new JU.SB;null!=this.readLine()&&!this.line.contains("");)c.append(this.line).appendC("\n");this.loader.processModelData(c.toString(),this.thisModelID,b,this.baseModel,this.lastModel,NaN,this.vibScale,a)}},"~B");c(b,"findRecord",function(a){null==this.line&&this.readLine();null!=this.line&&0>this.line.indexOf("<"+ +a)&&(this.line=this.loader.discardLinesUntilContains2("<"+a,"##"));return null!=this.line&&0<=this.line.indexOf("<"+a)},"~S");c(b,"readLine",function(){return this.line=this.loader.rd()});f(b,"setLine",function(a){this.line=a},"~S")});n("JSV.api");K(JSV.api,"AnnotationData");n("JSV.api");K(JSV.api,"AppletFrame");n("JSV.api");K(JSV.api,"JSVAppInterface",JSV.api.JSVAppletInterface);n("JSV.api");K(JSV.api,"JSVAppletInterface");n("JSV.api");K(JSV.api,"JSVFileHelper");n("JSV.api");K(JSV.api,"JSVMainPanel", +JSV.api.JSVViewPanel);n("JSV.api");K(JSV.api,"JSVPanel",JSV.api.JSVViewPanel);n("JSV.api");K(JSV.api,"JSVTree");n("JSV.api");K(JSV.api,"JSVTreeNode");n("JSV.api");K(JSV.api,"JSVTreePath");n("JSV.api");K(JSV.api,"JSVViewPanel");n("JSV.api");K(JSV.api,"JSVZipReader");n("JSV.api");K(JSV.api,"PanelListener");n("JSV.api");K(JSV.api,"ScriptInterface");n("JSV.app");A(["JSV.api.JSVAppInterface","$.PanelListener","$.ScriptInterface"],"JSV.app.JSVApp","JU.Lst $.PT JSV.common.Coordinate $.JSVFileManager $.JSVersion $.JSViewer $.ScriptToken JU.Logger".split(" "), +function(){var b=r(function(){this.appletFrame=null;this.isNewWindow=!1;this.prevPanel=this.vwr=this.syncCallbackFunctionName=this.peakCallbackFunctionName=this.loadFileCallbackFunctionName=this.coordCallbackFunctionName=this.appletReadyCallbackFunctionName=null;u(this,arguments)},JSV.app,"JSVApp",null,[JSV.api.PanelListener,JSV.api.JSVAppInterface,JSV.api.ScriptInterface]);x(b,function(a,b){this.appletFrame=a;this.initViewer(b);this.initParams(a.getParameter("script"))},"JSV.api.AppletFrame,~B"); +c(b,"initViewer",function(a){this.vwr=new JSV.common.JSViewer(this,!0,a);this.appletFrame.setDropTargetListener(this.isSigned(),this.vwr);a=this.appletFrame.getDocumentBase();JSV.common.JSVFileManager.setDocumentBase(this.vwr,a)},"~B");f(b,"isPro",function(){return this.isSigned()});f(b,"isSigned",function(){return!0});c(b,"getAppletFrame",function(){return this.appletFrame});c(b,"dispose",function(){try{this.vwr.dispose()}catch(a){if(E(a,Exception))a.printStackTrace();else throw a;}});f(b,"getPropertyAsJavaObject", +function(a){return this.vwr.getPropertyAsJavaObject(a)},"~S");f(b,"getPropertyAsJSON",function(a){return JU.PT.toJSON(null,this.getPropertyAsJavaObject(a))},"~S");f(b,"getCoordinate",function(){return this.vwr.getCoordinate()});f(b,"loadInline",function(a){this.siOpenDataOrFile(a,"[inline]",null,null,-1,-1,!0,null,null);this.appletFrame.validateContent(3)},"~S");f(b,"exportSpectrum",function(a,b){return this.vwr.$export(a,b)},"~S,~N");f(b,"setFilePath",function(a){this.runScript("load "+JU.PT.esc(a))}, +"~S");f(b,"setSpectrumNumber",function(a){this.runScript(JSV.common.ScriptToken.SPECTRUMNUMBER+" "+a)},"~N");f(b,"reversePlot",function(){this.toggle(JSV.common.ScriptToken.REVERSEPLOT)});f(b,"toggleGrid",function(){this.toggle(JSV.common.ScriptToken.GRIDON)});f(b,"toggleCoordinate",function(){this.toggle(JSV.common.ScriptToken.COORDINATESON)});f(b,"togglePointsOnly",function(){this.toggle(JSV.common.ScriptToken.POINTSONLY)});f(b,"toggleIntegration",function(){this.toggle(JSV.common.ScriptToken.INTEGRATE)}); +c(b,"toggle",function(a){null!=this.vwr.selectedPanel&&this.runScript(a+" TOGGLE")},"JSV.common.ScriptToken");f(b,"addHighlight",function(a,b,c,f,e,g){this.runScript("HIGHLIGHT "+a+" "+b+" "+c+" "+f+" "+e+" "+g)},"~N,~N,~N,~N,~N,~N");f(b,"removeHighlight",function(a,b){this.runScript("HIGHLIGHT "+a+" "+b+" OFF")},"~N,~N");f(b,"removeAllHighlights",function(){this.runScript("HIGHLIGHT OFF")});f(b,"syncScript",function(a){this.vwr.syncScript(a)},"~S");f(b,"writeStatus",function(a){JU.Logger.info(a)}, +"~S");c(b,"initParams",function(a){this.vwr.parseInitScript(a);this.newAppletPanel();this.vwr.setPopupMenu(this.vwr.allowMenu,this.vwr.parameters.getBoolean(JSV.common.ScriptToken.ENABLEZOOM));this.vwr.allowMenu&&this.vwr.closeSource(null);this.runScriptNow(a)},"~S");c(b,"newAppletPanel",function(){JU.Logger.info("newAppletPanel");this.appletFrame.createMainPanel(this.vwr)});f(b,"repaint",function(){var a=null==this.vwr?null:this.vwr.html5Applet;null==JSV.common.JSViewer.jmolObject?this.appletFrame.repaint(): +null!=a&&JSV.common.JSViewer.jmolObject.repaint(a,!0)});c(b,"updateJS",function(){},"~N,~N");f(b,"runScriptNow",function(a){return this.vwr.runScriptNow(a)},"~S");c(b,"checkCallbacks",function(){if(!(null==this.coordCallbackFunctionName&&null==this.peakCallbackFunctionName)){var a=new JSV.common.Coordinate,b=null==this.peakCallbackFunctionName?null:new JSV.common.Coordinate;if(this.vwr.pd().getPickedCoordinates(a,b)){var c=this.vwr.mainPanel.getCurrentPanelIndex();null==b?this.appletFrame.callToJavaScript(this.coordCallbackFunctionName, +w(-1,[Double.$valueOf(a.getXVal()),Double.$valueOf(a.getYVal()),Integer.$valueOf(c+1)])):this.appletFrame.callToJavaScript(this.peakCallbackFunctionName,w(-1,[Double.$valueOf(a.getXVal()),Double.$valueOf(a.getYVal()),Double.$valueOf(b.getXVal()),Double.$valueOf(b.getYVal()),Integer.$valueOf(c+1)]))}}});c(b,"doAdvanced",function(){},"~S");f(b,"panelEvent",function(a){C(a,"JSV.common.PeakPickEvent")?this.vwr.processPeakPickEvent(a,!1):C(a,"JSV.common.ZoomEvent")||C(a,"JSV.common.SubSpecChangeEvent")}, +"~O");f(b,"getSolnColour",function(){return this.vwr.getSolutionColorStr(!0)});c(b,"updateJSView",function(a){var b=this.vwr.html5Applet,c=null==b?null:this.vwr.selectedPanel;b&&null!=b._viewSet&&b._updateView(c,a);b._updateView(c,a)},"~S");f(b,"syncToJmol",function(a){this.updateJSView(a);null!=this.syncCallbackFunctionName&&(JU.Logger.info("JSVApp.syncToJmol JSV>Jmol "+a),this.appletFrame.callToJavaScript(this.syncCallbackFunctionName,w(-1,[this.vwr.fullName,a])))},"~S");f(b,"setVisible",function(a){this.appletFrame.setPanelVisible(a)}, +"~B");f(b,"setCursor",function(a){this.vwr.apiPlatform.setCursor(a,this.appletFrame)},"~N");f(b,"runScript",function(a){this.vwr.runScript(a)},"~S");f(b,"getScriptQueue",function(){return this.vwr.scriptQueue});f(b,"siSetCurrentSource",function(a){this.vwr.currentSource=a},"JSV.source.JDXSource");f(b,"siSendPanelChange",function(){this.vwr.selectedPanel!==this.prevPanel&&(this.prevPanel=this.vwr.selectedPanel,this.vwr.sendPanelChange())});f(b,"siNewWindow",function(a,b){this.isNewWindow=a;b?null!= +this.vwr.jsvpPopupMenu&&this.vwr.jsvpPopupMenu.setSelected("Window",!1):this.appletFrame.newWindow(a)},"~B,~B");f(b,"siValidateAndRepaint",function(){var a=this.vwr.pd();null!=a&&a.setTaintedAll();this.appletFrame.validate();this.repaint()},"~B");f(b,"siSyncLoad",function(a){this.newAppletPanel();JU.Logger.info("JSVP syncLoad reading "+a);this.siOpenDataOrFile(null,null,null,a,-1,-1,!1,null,null);this.appletFrame.validateContent(3)},"~S");f(b,"siOpenDataOrFile",function(a,b,c,f,e,g,j,k,l){switch(this.vwr.openDataOrFile(a, +b,c,f,e,g,j,l)){case 0:null!=k&&this.runScript(k);break;case -1:return;default:this.siSetSelectedPanel(null);return}JU.Logger.info(this.appletFrame.getAppletInfo()+" File "+this.vwr.currentSource.getFilePath()+" Loaded Successfully")},"~O,~S,JU.Lst,~S,~N,~N,~B,~S,~S");f(b,"siProcessCommand",function(a){this.vwr.runScriptNow(a)},"~S");f(b,"siSetSelectedPanel",function(a){this.vwr.mainPanel.setSelectedPanel(this.vwr,a,this.vwr.panelNodes);this.vwr.selectedPanel=a;this.vwr.spectraTree.setSelectedPanel(this, +a);null==a&&(this.vwr.selectedPanel=a=this.appletFrame.getJSVPanel(this.vwr,null),this.vwr.mainPanel.setSelectedPanel(this.vwr,a,null));this.appletFrame.validate();null!=a&&(a.setEnabled(!0),a.setFocusable(!0))},"JSV.api.JSVPanel");f(b,"siExecSetCallback",function(a,b){switch(a){case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME:this.appletReadyCallbackFunctionName=b;break;case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME:this.loadFileCallbackFunctionName=b;break;case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME:this.peakCallbackFunctionName= +b;break;case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME:this.syncCallbackFunctionName=b;break;case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME:this.coordCallbackFunctionName=b}},"JSV.common.ScriptToken,~S");f(b,"siLoaded",function(a){null!=this.loadFileCallbackFunctionName&&this.appletFrame.callToJavaScript(this.loadFileCallbackFunctionName,w(-1,[this.vwr.appletName,a]));this.updateJSView(null);return null},"~S");f(b,"siExecHidden",function(){},"~B");f(b,"siExecScriptComplete",function(a, +b){b||this.vwr.showMessage(a);this.siValidateAndRepaint(!1)},"~S,~B");f(b,"siUpdateBoolean",function(){},"JSV.common.ScriptToken,~B");f(b,"siCheckCallbacks",function(){this.checkCallbacks()},"~S");f(b,"siNodeSet",function(){this.appletFrame.validateContent(2);this.siValidateAndRepaint(!1)},"JSV.common.PanelNode");f(b,"siSourceClosed",function(){},"JSV.source.JDXSource");f(b,"siGetNewJSVPanel",function(a){if(null==a)return this.vwr.initialEndIndex=this.vwr.initialStartIndex=-1,null;var b=new JU.Lst; +b.addLast(a);a=this.appletFrame.getJSVPanel(this.vwr,b);a.getPanelData().addListener(this);this.vwr.parameters.setFor(a,null,!0);return a},"JSV.common.Spectrum");f(b,"siGetNewJSVPanel2",function(a){if(null==a)return this.vwr.initialEndIndex=this.vwr.initialStartIndex=-1,this.appletFrame.getJSVPanel(this.vwr,null);a=this.appletFrame.getJSVPanel(this.vwr,a);this.vwr.initialEndIndex=this.vwr.initialStartIndex=-1;a.getPanelData().addListener(this);this.vwr.parameters.setFor(a,null,!0);return a},"JU.Lst"); +f(b,"siSetPropertiesFromPreferences",function(){this.vwr.checkAutoIntegrate()},"JSV.api.JSVPanel,~B");f(b,"siSetLoaded",function(){},"~S,~S");f(b,"siSetMenuEnables",function(){},"JSV.common.PanelNode,~B");f(b,"siUpdateRecentMenus",function(){},"~S");f(b,"siExecTest",function(){this.loadInline("")},"~S");f(b,"print",function(a){return this.vwr.print(a)},"~S");f(b,"checkScript",function(a){return this.vwr.checkScript(a)},"~S");b.getAppletInfo=c(b,"getAppletInfo",function(){return"JSpecView Applet "+ +JSV.common.JSVersion.VERSION+"\n\nAuthors:\nProf. Robert M. Hanson,\nD. Facey, K. Bryan, C. Walters, Prof. Robert J. Lancashire and\nvolunteer developers through sourceforge."})});n("JSV.app");A(["J.api.GenericMouseInterface"],"JSV.app.GenericMouse",["JU.Logger"],function(){var b=r(function(){this.jsvp=this.pd=null;this.modifiersWhenPressed10=this.yWhenPressed=this.xWhenPressed=0;this.disposed=this.isMouseDown=!1;u(this,arguments)},JSV.app,"GenericMouse",null,J.api.GenericMouseInterface);x(b,function(a){this.jsvp= +a;this.pd=a.getPanelData()},"JSV.api.JSVPanel");f(b,"clear",function(){});f(b,"processEvent",function(a,b,c,f,e){if(null==this.pd)return!this.disposed&&(501==a&&0!=(f&4))&&this.jsvp.showMenu(b,c),!0;507!=a&&(f=JSV.app.GenericMouse.applyLeftMouse(f));switch(a){case 507:this.wheeled(e,b,f|32);break;case 501:this.xWhenPressed=b;this.yWhenPressed=c;this.modifiersWhenPressed10=f;this.pressed(e,b,c,f,!1);break;case 506:this.dragged(e,b,c,f);break;case 504:this.entered(e,b,c);break;case 505:this.exited(e, +b,c);break;case 503:this.moved(e,b,c,f);break;case 502:this.released(e,b,c,f);b==this.xWhenPressed&&(c==this.yWhenPressed&&f==this.modifiersWhenPressed10)&&this.clicked(e,b,c,f,1);break;default:return!1}return!0},"~N,~N,~N,~N,~N");c(b,"mouseEntered",function(a){this.entered(a.getWhen(),a.getX(),a.getY())},"java.awt.event.MouseEvent");c(b,"mouseExited",function(a){this.exited(a.getWhen(),a.getX(),a.getY())},"java.awt.event.MouseEvent");c(b,"mouseMoved",function(a){this.moved(a.getWhen(),a.getX(),a.getY(), +a.getModifiers())},"java.awt.event.MouseEvent");c(b,"mousePressed",function(a){this.pressed(a.getWhen(),a.getX(),a.getY(),a.getModifiers(),a.isPopupTrigger())},"java.awt.event.MouseEvent");c(b,"mouseDragged",function(a){var b=a.getModifiers();0==(b&28)&&(b|=16);this.dragged(a.getWhen(),a.getX(),a.getY(),b)},"java.awt.event.MouseEvent");c(b,"mouseReleased",function(a){this.released(a.getWhen(),a.getX(),a.getY(),a.getModifiers())},"java.awt.event.MouseEvent");c(b,"mouseClicked",function(a){this.clicked(a.getWhen(), +a.getX(),a.getY(),a.getModifiers(),a.getClickCount())},"java.awt.event.MouseEvent");c(b,"mouseWheelMoved",function(a){a.consume();this.wheeled(a.getWhen(),a.getWheelRotation(),a.getModifiers()|32)},"java.awt.event.MouseWheelEvent");c(b,"keyTyped",function(a){if(null!=this.pd){var b=a.getKeyChar(),c=a.getModifiers();JU.Logger.info("MouseManager keyTyped: "+b+" "+(0+b.charCodeAt(0))+" "+c);this.pd.keyTyped(b.charCodeAt(0),c)&&a.consume()}},"java.awt.event.KeyEvent");c(b,"keyPressed",function(a){null!= +this.pd&&this.pd.keyPressed(a.getKeyCode(),a.getModifiers())&&a.consume()},"java.awt.event.KeyEvent");c(b,"keyReleased",function(a){null!=this.pd&&this.pd.keyReleased(a.getKeyCode())},"java.awt.event.KeyEvent");f(b,"processKeyEvent",function(a){switch(a.getID()){case 401:this.keyPressed(a);break;case 402:this.keyReleased(a);break;case 400:this.keyTyped(a)}},"~O");c(b,"entered",function(a,b,c){null!=this.pd&&this.pd.mouseEnterExit(a,b,c,!1)},"~N,~N,~N");c(b,"exited",function(a,b,c){null!=this.pd&& +this.pd.mouseEnterExit(a,b,c,!0)},"~N,~N,~N");c(b,"clicked",function(a,b,c,f){null!=this.pd&&this.pd.mouseAction(2,a,b,c,1,f)},"~N,~N,~N,~N,~N");c(b,"moved",function(a,b,c,f){null!=this.pd&&(this.isMouseDown?this.pd.mouseAction(1,a,b,c,0,JSV.app.GenericMouse.applyLeftMouse(f)):this.pd.mouseAction(0,a,b,c,0,f&-29))},"~N,~N,~N,~N");c(b,"wheeled",function(a,b,c){null!=this.pd&&this.pd.mouseAction(3,a,0,b,0,c)},"~N,~N,~N");c(b,"pressed",function(a,b,c,f){null==this.pd?this.disposed||this.jsvp.showMenu(b, +c):(this.isMouseDown=!0,this.pd.mouseAction(4,a,b,c,0,f))},"~N,~N,~N,~N,~B");c(b,"released",function(a,b,c,f){null!=this.pd&&(this.isMouseDown=!1,this.pd.mouseAction(5,a,b,c,0,f))},"~N,~N,~N,~N");c(b,"dragged",function(a,b,c,f){null!=this.pd&&(20==(f&20)&&(f=f&-5|2),this.pd.mouseAction(1,a,b,c,0,f))},"~N,~N,~N,~N");b.applyLeftMouse=c(b,"applyLeftMouse",function(a){return 0==(a&28)?a|16:a},"~N");f(b,"processTwoPointGesture",function(){},"~A");f(b,"dispose",function(){this.jsvp=this.pd=null;this.disposed= +!0})});n("JSV.appletjs");A(["javajs.api.JSInterface","JSV.api.AppletFrame","$.JSVAppletInterface"],"JSV.appletjs.JSVApplet","java.net.URL java.util.Hashtable JU.PT JSV.app.JSVApp JSV.js2d.JsMainPanel $.JsPanel JU.Logger".split(" "),function(){var b=r(function(){this.viewer=this.app=null;this.isStandalone=!1;this.htParams=this.viewerOptions=null;u(this,arguments)},JSV.appletjs,"JSVApplet",null,[JSV.api.JSVAppletInterface,JSV.api.AppletFrame,javajs.api.JSInterface]);x(b,function(a){null==a&&(a=new java.util.Hashtable); +this.viewerOptions=a;this.htParams=new java.util.Hashtable;var b;for(a=a.entrySet().iterator();a.hasNext()&&((b=a.next())||1);)this.htParams.put(b.getKey().toLowerCase(),b.getValue());this.init()},"java.util.Map");c(b,"init",function(){this.app=new JSV.app.JSVApp(this,!0);this.initViewer();null!=this.app.appletReadyCallbackFunctionName&&null!=this.viewer.fullName&&this.callToJavaScript(this.app.appletReadyCallbackFunctionName,w(-1,[this.viewer.appletName,this.viewer.fullName,Boolean.TRUE,this]))}); +c(b,"initViewer",function(){this.viewer=this.app.vwr;this.setLogging();this.viewerOptions.remove("debug");var a=this.viewerOptions.get("display"),a=document.getElementById(a);this.viewer.setDisplay(a);JU.Logger.info(this.getAppletInfo())});c(b,"setLogging",function(){var a=this.getValue("logLevel",this.getBooleanValue("debug",!1)?"5":"4").charAt(0).charCodeAt(0)-48;4!=a&&System.out.println("setting logLevel="+a+' -- To change, use script "set logLevel [0-5]"');JU.Logger.setLogLevel(a)});c(b,"getParameter", +function(a){a=this.htParams.get(a.toLowerCase());return null==a?null:a.toString()},"~S");c(b,"getBooleanValue",function(a,b){var c=this.getValue(a,b?"true":"");return c.equalsIgnoreCase("true")||c.equalsIgnoreCase("on")||c.equalsIgnoreCase("yes")},"~S,~B");c(b,"getValue",function(a,b){var c=this.getParameter(a);System.out.println("getValue "+a+" = "+c);return null!=c?c:b},"~S,~S");f(b,"isPro",function(){return this.app.isPro()});f(b,"isSigned",function(){return this.app.isSigned()});f(b,"destroy", +function(){this.app.dispose();this.app=null});c(b,"getParameter",function(a,b){return this.isStandalone?System.getProperty(a,b):null!=this.getParameter(a)?this.getParameter(a):b},"~S,~S");f(b,"getAppletInfo",function(){return JSV.app.JSVApp.getAppletInfo()});f(b,"getSolnColour",function(){return this.app.getSolnColour()});f(b,"getCoordinate",function(){return this.app.getCoordinate()});f(b,"loadInline",function(a){this.app.loadInline(a)},"~S");c(b,"$export",function(a,b){return this.app.exportSpectrum(a, +b)},"~S,~N");f(b,"exportSpectrum",function(a,b){return this.app.exportSpectrum(a,b)},"~S,~N");f(b,"setFilePath",function(a){this.app.setFilePath(a)},"~S");f(b,"setSpectrumNumber",function(a){this.app.setSpectrumNumber(a)},"~N");f(b,"toggleGrid",function(){this.app.toggleGrid()});f(b,"toggleCoordinate",function(){this.app.toggleCoordinate()});f(b,"togglePointsOnly",function(){this.app.togglePointsOnly()});f(b,"toggleIntegration",function(){this.app.toggleIntegration()});f(b,"addHighlight",function(a, +b,c,f,e,g){this.app.addHighlight(a,b,c,f,e,g)},"~N,~N,~N,~N,~N,~N");f(b,"removeAllHighlights",function(){this.app.removeAllHighlights()});f(b,"removeHighlight",function(a,b){this.app.removeHighlight(a,b)},"~N,~N");f(b,"reversePlot",function(){this.app.reversePlot()});c(b,"script",function(a){this.app.initParams(a)},"~S");f(b,"runScript",function(a){this.app.runScript(a)},"~S");f(b,"syncScript",function(a){this.app.syncScript(a)},"~S");f(b,"writeStatus",function(a){this.app.writeStatus(a)},"~S");f(b, +"getPropertyAsJavaObject",function(a){return this.app.getPropertyAsJavaObject(a)},"~S");f(b,"getPropertyAsJSON",function(a){return this.app.getPropertyAsJSON(a)},"~S");f(b,"runScriptNow",function(a){return this.app.runScriptNow(a)},"~S");f(b,"print",function(a){return this.app.print(a)},"~S");f(b,"setDropTargetListener",function(){},"~B,JSV.common.JSViewer");f(b,"validateContent",function(){},"~N");f(b,"createMainPanel",function(a){a.mainPanel=new JSV.js2d.JsMainPanel},"JSV.common.JSViewer");f(b, +"newWindow",function(){},"~B");f(b,"callToJavaScript",function(a,b){var c=JU.PT.split(a,".");try{for(var f=window[c[0]],e=1;eg||0>j||0> +l||0>k))return null;var m=0>g?f.getXVal():Double.$valueOf(c.get(g)).doubleValue(),p=0>j?f.getYVal():Double.$valueOf(c.get(j)).doubleValue(),n=0>k?f.getColor():a.getColor1(JU.CU.getArgbFromString(c.get(k))),r;0>l?r=f.text:(r=c.get(l),'"'==r.charAt(0)&&(r=r.substring(1,r.length-1)));return(new JSV.common.ColoredAnnotation).setCA(m,p,b,r,n,!1,!1,0,0)}catch(u){if(E(u,Exception))return null;throw u;}},"J.api.GenericGraphics,JSV.common.Spectrum,JU.Lst,JSV.common.Annotation");b=G(JSV.common.Annotation,"AType", +Enum);B(b,"Integration",0,[]);B(b,"PeakList",1,[]);B(b,"Measurements",2,[]);B(b,"OverlayLegend",3,[]);B(b,"Views",4,[]);B(b,"NONE",5,[])});n("JSV.common");A(["JSV.common.Annotation"],"JSV.common.ColoredAnnotation",null,function(){var b=r(function(){this.color=null;u(this,arguments)},JSV.common,"ColoredAnnotation",JSV.common.Annotation);x(b,function(){I(this,JSV.common.ColoredAnnotation,[])});c(b,"getColor",function(){return this.color});c(b,"setCA",function(a,b,c,f,e,g,j,k,l){this.setA(a,b,c,f,g, +j,k,l);this.color=e;return this},"~N,~N,JSV.common.Spectrum,~S,javajs.api.GenericColor,~B,~B,~N,~N")});n("JSV.common");A(["JSV.common.Parameters"],"JSV.common.ColorParameters",["java.util.Hashtable","$.StringTokenizer","JU.CU","$.Lst","JSV.common.ScriptToken"],function(){var b=r(function(){this.plotColors=this.elementColors=this.displayFontName=this.titleFontName=null;this.isDefault=!1;u(this,arguments)},JSV.common,"ColorParameters",JSV.common.Parameters);x(b,function(){I(this,JSV.common.ColorParameters, +[]);JSV.common.ColorParameters.BLACK=this.getColor3(0,0,0);JSV.common.ColorParameters.RED=this.getColor3(255,0,0);JSV.common.ColorParameters.LIGHT_GRAY=this.getColor3(200,200,200);JSV.common.ColorParameters.DARK_GRAY=this.getColor3(80,80,80);JSV.common.ColorParameters.BLUE=this.getColor3(0,0,255);JSV.common.ColorParameters.WHITE=this.getColor3(255,255,255);this.elementColors=new java.util.Hashtable;this.setColor(JSV.common.ScriptToken.TITLECOLOR,JSV.common.ColorParameters.BLACK);this.setColor(JSV.common.ScriptToken.UNITSCOLOR, +JSV.common.ColorParameters.RED);this.setColor(JSV.common.ScriptToken.SCALECOLOR,JSV.common.ColorParameters.BLACK);this.setColor(JSV.common.ScriptToken.COORDINATESCOLOR,JSV.common.ColorParameters.RED);this.setColor(JSV.common.ScriptToken.GRIDCOLOR,JSV.common.ColorParameters.LIGHT_GRAY);this.setColor(JSV.common.ScriptToken.PLOTCOLOR,JSV.common.ColorParameters.BLUE);this.setColor(JSV.common.ScriptToken.PLOTAREACOLOR,JSV.common.ColorParameters.WHITE);this.setColor(JSV.common.ScriptToken.BACKGROUNDCOLOR, +this.getColor3(192,192,192));this.setColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR,JSV.common.ColorParameters.RED);this.setColor(JSV.common.ScriptToken.PEAKTABCOLOR,JSV.common.ColorParameters.RED);this.setColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR,JSV.common.ColorParameters.DARK_GRAY);for(var a=0;8>a;a++)JSV.common.ColorParameters.defaultPlotColors[a]=this.getColorFromString(JSV.common.ColorParameters.defaultPlotColorNames[a]);this.plotColors=Array(8);System.arraycopy(JSV.common.ColorParameters.defaultPlotColors, +0,this.plotColors,0,8)});c(b,"setFor",function(a,b,c){null==b&&(b=this);c&&a.getPanelData().setBooleans(b,null);a=a.getPanelData();null!=a.getCurrentPlotColor(1)&&a.setPlotColors(this.plotColors);a.setColorOrFont(b,null)},"JSV.api.JSVPanel,JSV.common.ColorParameters,~B");c(b,"set",function(a,b,c){var f=null;switch(b){default:this.setP(a,b,c);return;case JSV.common.ScriptToken.PLOTCOLORS:null==a?this.getPlotColors(c):a.setPlotColors(this.getPlotColors(c));return;case JSV.common.ScriptToken.BACKGROUNDCOLOR:case JSV.common.ScriptToken.COORDINATESCOLOR:case JSV.common.ScriptToken.GRIDCOLOR:case JSV.common.ScriptToken.HIGHLIGHTCOLOR:case JSV.common.ScriptToken.INTEGRALPLOTCOLOR:case JSV.common.ScriptToken.PEAKTABCOLOR:case JSV.common.ScriptToken.PLOTAREACOLOR:case JSV.common.ScriptToken.PLOTCOLOR:case JSV.common.ScriptToken.SCALECOLOR:case JSV.common.ScriptToken.TITLECOLOR:case JSV.common.ScriptToken.UNITSCOLOR:f= +this.setColorFromString(b,c);break;case JSV.common.ScriptToken.TITLEFONTNAME:case JSV.common.ScriptToken.DISPLAYFONTNAME:f=this.getFontName(b,c)}null!=a&&null!=f&&a.setColorOrFont(this,b)},"JSV.common.PanelData,JSV.common.ScriptToken,~S");c(b,"getElementColor",function(a){return this.elementColors.get(a)},"JSV.common.ScriptToken");c(b,"setColor",function(a,b){null!=b&&this.elementColors.put(a,b);return b},"JSV.common.ScriptToken,javajs.api.GenericColor");c(b,"copy",function(){return this.copy(this.name)}); +c(b,"setElementColors",function(a){this.displayFontName=a.displayFontName;var b;for(a=a.elementColors.entrySet().iterator();a.hasNext()&&((b=a.next())||1);)this.setColor(b.getKey(),b.getValue());return this},"JSV.common.ColorParameters");c(b,"getColorFromString",function(a){return this.getColor1(JU.CU.getArgbFromString(a))},"~S");c(b,"getPlotColors",function(a){if(null==a)return this.plotColors[0]=this.getElementColor(JSV.common.ScriptToken.PLOTCOLOR),this.plotColors;a=new java.util.StringTokenizer(a, +",;.- ");var b=new JU.Lst;try{for(;a.hasMoreTokens();)b.addLast(this.getColorFromString(a.nextToken()))}catch(c){if(E(c,Exception))return null;throw c;}return b.toArray(Array(b.size()))},"~S");c(b,"setColorFromString",function(a,b){return this.setColor(a,this.getColorFromString(b))},"JSV.common.ScriptToken,~S");c(b,"getFontName",function(a,b){var c=this.isValidFontName(b);switch(a){case JSV.common.ScriptToken.TITLEFONTNAME:return c?this.titleFontName=b:this.titleFontName;case JSV.common.ScriptToken.DISPLAYFONTNAME:return c? +this.displayFontName=b:this.displayFontName}return null},"JSV.common.ScriptToken,~S");b.BLACK=null;b.RED=null;b.LIGHT_GRAY=null;b.DARK_GRAY=null;b.BLUE=null;b.WHITE=null;b.defaultPlotColors=Array(8);b.defaultPlotColorNames=w(-1,"black darkGreen darkred orange magenta cyan maroon darkGray".split(" "))});n("JSV.common");var rb=G(JSV.common,"CoordComparator",null,java.util.Comparator);f(rb,"compare",function(b,a){return b.getXVal()>a.getXVal()?1:b.getXVal()=b&&JSV.common.Coordinate.getMaxY(a,0,a.length-1)>=c},"~A,~N,~N");b.normalise=c(b,"normalise",function(a,b,c){var f=Array(a.length),e=JSV.common.Coordinate.getMinY(a,0,a.length-1);c=(JSV.common.Coordinate.getMaxY(a,0,a.length-1)- +e)/(c-b);for(var g=0;gf&&(f=e)}return f},"~A,~N,~N");b.getMaxX=c(b,"getMaxX",function(a,b){for(var c=-1.7976931348623157E308, +f=0;fc&&(c=e)}return c},"JU.Lst,JSV.common.ViewData");b.getMinY=c(b,"getMinY",function(a,b,c){for(var f=1.7976931348623157E308;b<=c;b++){var e=a[b].getYVal();ef&&(f=e)}return f},"~A,~N,~N");b.getMaxYUser=c(b,"getMaxYUser",function(a,b){for(var c=-1.7976931348623157E308,f=0;fc&&(c=e)}return c},"JU.Lst,JSV.common.ViewData");b.getYValueAt=c(b,"getYValueAt",function(a,b){var c=JSV.common.Coordinate.getNearestIndexForX(a,b);if(0==c||c==a.length)return NaN;var f=a[c].getXVal(),e=a[c-1].getXVal(),g=a[c].getYVal(),c=a[c-1].getYVal();return f==e?g:c+(g-c)/(f-e)*(b-e)},"~A,~N");b.intoRange=c(b,"intoRange",function(a,b,c){return Math.max(Math.min(a,c),b)},"~N,~N,~N");b.getNearestIndexForX=c(b,"getNearestIndexForX",function(a,b){var c=(new JSV.common.Coordinate).set(b, +0),c=java.util.Arrays.binarySearch(a,c,JSV.common.Coordinate.c);0>c&&(c=-1-c);return 0>c?0:c>a.length-1?a.length-1:c},"~A,~N");b.findXForPeakNearest=c(b,"findXForPeakNearest",function(a,b,c){b=JSV.common.Coordinate.getNearestIndexForX(a,b);for(c=c?-1:1;bg*(a[b].yVal-c);)b++;else for(;0<=b&&0>g*(a[b].yVal-c);)b--;return-1==b||b==a.length?NaN:JSV.common.Coordinate.findXForPeakNearest(a,a[b].getXVal(),f)},"~A,~N,~N,~B,~B");b.c=new JSV.common.CoordComparator});n("JSV.common");A(["java.lang.Enum"],"JSV.common.ExportType",null,function(){var b=G(JSV.common, +"ExportType",Enum);b.getType=c(b,"getType",function(a){a=a.toUpperCase();if(a.equalsIgnoreCase("Original..."))return JSV.common.ExportType.SOURCE;if(a.startsWith("XML"))return JSV.common.ExportType.AML;for(var b,c=0,f=JSV.common.ExportType.values();ca||this.iSpectrumClicked!=a)this.lastClickX=NaN,this.lastPixelX=2147483647;this.iSpectrumClicked=this.setSpectrumSelected(this.setSpectrumMovedTo(a))},"~N");c(b,"setSpectrumSelected",function(a){var b=a!=this.iSpectrumSelected; +this.iSpectrumSelected=a;b&&this.getCurrentView();return this.iSpectrumSelected},"~N");c(b,"closeDialogsExcept",function(a){if(null!=this.dialogs)for(var b,c=this.dialogs.entrySet().iterator();c.hasNext()&&((b=c.next())||1);){var f=b.getValue();f.isDialog()&&(a===JSV.common.Annotation.AType.NONE||f.getAType()!==a)&&f.setVisible(!1)}},"JSV.common.Annotation.AType");c(b,"dispose",function(){this.widgets=this.graphsTemp=this.imageView=this.pendingMeasurement=this.lastAnnotation=this.annotations=this.viewList= +this.viewData=this.spectra=null;this.disposeImage();if(null!=this.dialogs)for(var a,b=this.dialogs.entrySet().iterator();b.hasNext()&&((a=b.next())||1);){var c=a.getValue();c.isDialog()&&c.dispose()}this.dialogs=null});c(b,"isDrawNoSpectra",function(){return-2147483648==this.iSpectrumSelected});c(b,"getFixedSelectedSpectrumIndex",function(){return Math.max(this.iSpectrumSelected,0)});c(b,"getSpectrum",function(){return this.getSpectrumAt(this.getFixedSelectedSpectrumIndex()).getCurrentSubSpectrum()}); +c(b,"getSpectrumAt",function(a){return this.spectra.get(a)},"~N");c(b,"getSpectrumIndex",function(a){for(var b=this.spectra.size();0<=--b;)if(this.spectra.get(b)===a)return b;return-1},"JSV.common.Spectrum");c(b,"addSpec",function(a){this.spectra.addLast(a);this.nSpectra++},"JSV.common.Spectrum");c(b,"splitStack",function(a){a&&this.isSplittable?(this.nSplit=this.nSpectra,this.showAllStacked=!1,this.setSpectrumClicked(this.iSpectrumSelected),this.pd.currentSplitPoint=this.iSpectrumSelected):(this.nSplit= +1,this.showAllStacked=this.allowStacking&&!a,this.setSpectrumClicked(this.iSpectrumSelected));this.stackSelected=!1;JSV.common.GraphSet.setFractionalPositions(this.pd,this.pd.graphSets,JSV.common.PanelData.LinkMode.NONE);this.pd.setTaintedAll()},"~B");c(b,"setPositionForFrame",function(a){0>a&&(a=0);var b=this.height-50;this.xPixel00=v(this.width*this.fX0);this.xPixel11=v(this.xPixel00+this.width*this.fracX-1);this.xHArrows=this.xPixel00+25;this.xVArrows=this.xPixel11-v(this.right/2);this.xPixel0= +this.xPixel00+v(this.left*(1-this.fX0));this.xPixel10=this.xPixel1=this.xPixel11-this.right;this.xPixels0=this.xPixels=this.xPixel1-this.xPixel0+1;this.yPixel000=(0==this.fY0?25:0)+v(this.height*this.fY0);this.yPixel00=this.yPixel000+v(b*this.fracY*a);this.yPixel11=this.yPixel00+v(b*this.fracY)-1;this.yHArrows=this.yPixel11-12;this.yPixel0=this.yPixel00+v(this.top/2);this.yPixel1=this.yPixel11-v(this.bottom/2);this.yPixels=this.yPixel1-this.yPixel0+1;null!=this.imageView&&this.is2DSpectrum&&(this.setImageWindow(), +this.pd.display1D?(this.xPixels=v(Math.floor(0.8*(this.pd.display1D?1*(this.xPixels0-this.imageView.xPixels)/this.xPixels0:1)*this.xPixels0)),this.xPixel1=this.xPixel0+this.xPixels-1):(this.xPixels=0,this.xPixel1=this.imageView.xPixel0-30))},"~N");c(b,"hasPoint",function(a,b){return a>=this.xPixel00&&a<=this.xPixel11&&b>=this.yPixel000&&b<=this.yPixel11*this.nSplit},"~N,~N");c(b,"isInPlotRegion",function(a,b){return a>=this.xPixel0&&a<=this.xPixel1&&b>=this.yPixel0&&b<=this.yPixel1},"~N,~N");c(b, +"getSplitPoint",function(a){return Math.max(0,Math.min(v((a-this.yPixel000)/(this.yPixel11-this.yPixel00)),this.nSplit-1))},"~N");c(b,"isSplitWidget",function(a,b){return this.isFrameBox(a,b,this.splitterX,this.splitterY)},"~N,~N");c(b,"isCloserWidget",function(a,b){return this.isFrameBox(a,b,this.closerX,this.closerY)},"~N,~N");c(b,"initGraphSet",function(a,b){null==JSV.common.GraphSet.veryLightGrey&&(JSV.common.GraphSet.veryLightGrey=this.g2d.getColor3(200,200,200));this.setPlotColors(JSV.common.ColorParameters.defaultPlotColors); +this.xAxisLeftToRight=this.getSpectrumAt(0).shouldDisplayXAxisIncreasing();this.setDrawXAxis();var c=D(this.nSpectra,0),f=D(this.nSpectra,0);this.bsSelected.setBits(0,this.nSpectra);this.allowStackedYScale=!0;0>=b&&(b=2147483647);this.isSplittable=1this.pin1Dx0.yPixel0-2&&bthis.pin2Dx0.yPixel0-2&&bthis.pin1Dy0.xPixel1&&athis.pin2Dy0.xPixel1&&athis.iSpectrumClicked)return!1;this.xValueMovedTo=this.getSpectrum().findXForPeakNearest(this.xValueMovedTo); +this.setXPixelMovedTo(this.xValueMovedTo,1.7976931348623157E308,0,0);return!Double.isNaN(this.xValueMovedTo)});c(b,"setXPixelMovedTo",function(a,b,c,f){1.7976931348623157E308==a&&1.7976931348623157E308==b?(this.xPixelMovedTo=c,this.xPixelMovedTo2=f,this.isLinked&&this.sticky2Dcursor&&this.pd.setlinkedXMove(this,this.toX(this.xPixelMovedTo),!1)):(1.7976931348623157E308!=a&&(this.xPixelMovedTo=this.toPixelX(a),this.fixX(this.xPixelMovedTo)!=this.xPixelMovedTo&&(this.xPixelMovedTo=-1),this.xPixelMovedTo2= +-1,1E10!=a&&this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex())),1.7976931348623157E308!=b&&(this.xPixelMovedTo2=this.toPixelX(b)))},"~N,~N,~N,~N");c(b,"processPendingMeasurement",function(a,b,c){if(!this.isInPlotRegion(a,b)||this.is2dClick(a,b))this.pendingMeasurement=null;else{var f=this.toX(a),e=this.toY(b),g=f;switch(c){case 0:this.pendingMeasurement.setPt2(this.toX(a),this.toY(b));break;case 3:case 2:if(0>this.iSpectrumClicked)break;var j=this.spectra.get(this.iSpectrumClicked);this.setScale(this.iSpectrumClicked); +3!=c&&(c=this.findMeasurement(this.selectedSpectrumMeasurements,a,b,1),null!=c?(f=c.getXVal(),e=c.getYVal()):null!=(c=this.findMeasurement(this.selectedSpectrumMeasurements,a,b,2))?(f=c.getXVal2(),e=c.getYVal2()):f=this.getNearestPeak(j,f,e));this.pendingMeasurement=(new JSV.common.Measurement).setM1(f,e,j);this.pendingMeasurement.setPt2(g,e);this.pd.setTaintedAll();this.pd.repaint();break;case 1:case -2:case -3:for(g=null!=this.pendingMeasurement&&this.isVisible(this.getDialog(JSV.common.Annotation.AType.Measurements, +-1));g;){this.setScale(this.getSpectrumIndex(this.pendingMeasurement.spec));if(3!=c){if(!this.findNearestMaxMin()){g=!1;break}a=this.xPixelMovedTo}f=this.toX(a);e=this.toY(b);this.pendingMeasurement.setPt2(f,e);if(0==this.pendingMeasurement.text.length){g=!1;break}this.setMeasurement(this.pendingMeasurement);if(1!=c){g=!1;break}this.setSpectrumClicked(this.getSpectrumIndex(this.pendingMeasurement.spec));this.pendingMeasurement=(new JSV.common.Measurement).setM1(f,e,this.pendingMeasurement.spec);break}g|| +(this.pendingMeasurement=null);this.pd.setTaintedAll();this.pd.repaint();break;case 5:this.findNearestMaxMin()?(a=this.getFixedSelectedSpectrumIndex(),Double.isNaN(this.lastXMax)||this.lastSpecClicked!=a||null==this.pendingMeasurement?(this.lastXMax=this.xValueMovedTo,this.lastSpecClicked=a,this.pendingMeasurement=(new JSV.common.Measurement).setM1(this.xValueMovedTo,this.yValueMovedTo,this.spectra.get(a))):(this.pendingMeasurement.setPt2(this.xValueMovedTo,this.yValueMovedTo),0Math.abs(b-j)+Math.abs(c-l))return e;break;case 2:if(4>Math.abs(b-k)+Math.abs(c-s))return e;break;case -5:l=s=v((l+s)/2),k=j+20;default:case -1:case -2:if(JSV.common.GraphSet.isOnLine(b, +c,j,l,k,s))return e}}return null},"JSV.common.MeasurementData,~N,~N,~N");c(b,"setMeasurement",function(a){var b=this.getSpectrumIndex(a.spec),c=this.getDialog(JSV.common.Annotation.AType.Measurements,b);null==c&&this.addDialog(b,JSV.common.Annotation.AType.Measurements,c=new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements,a.spec));c.getData().addLast(a.copyM());this.updateDialog(JSV.common.Annotation.AType.Measurements,-1)},"JSV.common.Measurement");c(b,"checkArrowUpDownClick", +function(a,b){var c=!1,f=this.isArrowClick(a,b,3)?JSV.common.GraphSet.RT2:this.isArrowClick(a,b,4)?1/JSV.common.GraphSet.RT2:0;if(0!=f){1c&&(c=this.nSpectra- +1),this.setSpectrumClicked(c%this.nSpectra),!0;if(this.isArrowClick(a,b,0)){if(this.showAllStacked)return this.showAllStacked=!1,this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex()),!0;this.showAllStacked=this.allowStacking;this.setSpectrumSelected(-1);this.stackSelected=!1}}return!1},"~N,~N");c(b,"isArrowClick",function(a,b,c){switch(c){case 3:case 4:case -1:return c=v((this.yPixel00+this.yPixel11)/2)+15*(3==c?-1:4==c?1:0),10>Math.abs(this.xVArrows-a)&&10>Math.abs(c-b);case 1:case 2:case 0:return c= +this.xHArrows+15*(1==c?-1:2==c?1:0),10>Math.abs(c-a)&&10>Math.abs(this.yHArrows-b)}return!1},"~N,~N,~N");c(b,"setWidgetValueByUser",function(a){var b;b=a===this.cur2Dy?""+this.imageView.toSubspectrumIndex(a.yPixel0):a===this.pin1Dx01?""+Math.min(this.pin1Dx0.getXVal(),this.pin1Dx1.getXVal())+" - "+Math.max(this.pin1Dx0.getXVal(),this.pin1Dx1.getXVal()):a===this.pin1Dy01?""+Math.min(this.pin1Dy0.getYVal(),this.pin1Dy1.getYVal())+" - "+Math.max(this.pin1Dy0.getYVal(),this.pin1Dy1.getYVal()):a===this.pin2Dx01? +""+Math.min(this.pin2Dx0.getXVal(),this.pin2Dx1.getXVal())+" - "+Math.max(this.pin2Dx0.getXVal(),this.pin2Dx1.getXVal()):a===this.pin2Dy01?""+v(Math.min(this.pin2Dy0.getYVal(),this.pin2Dy1.getYVal()))+" - "+v(Math.max(this.pin2Dy0.getYVal(),this.pin2Dy1.getYVal())):""+a.getValue();b=this.pd.getInput("New value?","Set Slider",b);if(null!=b){b=b.trim();try{if(a===this.pin1Dx01||a===this.pin1Dy01||a===this.pin2Dx01||a===this.pin2Dy01){var c=b.indexOf("-",1);if(!(0>c)){var f=Double.$valueOf(b.substring(0, +c)).doubleValue(),e=Double.$valueOf(b.substring(c+1)).doubleValue();a===this.pin1Dx01?this.doZoom(f,this.pin1Dy0.getYVal(),e,this.pin1Dy1.getYVal(),!0,!1,!1,!0,!0):a===this.pin1Dy01?this.doZoom(this.pin1Dx0.getXVal(),f,this.pin1Dx1.getXVal(),e,null==this.imageView,null==this.imageView,!1,!1,!0):a===this.pin2Dx01?(this.imageView.setView0(this.imageView.toPixelX0(f),this.pin2Dy0.yPixel0,this.imageView.toPixelX0(e),this.pin2Dy1.yPixel0),this.doZoom(f,this.pin1Dy0.getYVal(),e,this.pin1Dy1.getYVal(),!1, +!1,!1,!0,!0)):a===this.pin2Dy01&&(this.imageView.setView0(this.pin2Dx0.xPixel0,this.imageView.toPixelY0(f),this.pin2Dx1.xPixel0,this.imageView.toPixelY0(e)),this.doZoom(this.imageView.toX(this.imageView.xPixel0),this.getScale().minY,this.imageView.toX(this.imageView.xPixel0+this.imageView.xPixels-1),this.getScale().maxY,!1,!1,!1,!1,!0))}}else{var g=Double.$valueOf(b).doubleValue();a.isXtype?(e=a===this.pin1Dx0||a===this.cur2Dx0||a===this.pin2Dx0?this.pin1Dx1.getXVal():this.pin1Dx0.getXVal(),this.doZoom(g, +0,e,0,!a.is2D,!1,!1,!0,!0)):a===this.cur2Dy?this.setCurrentSubSpectrum(v(g)):a===this.pin2Dy0||a===this.pin2Dy1?(e=a===this.pin2Dy0?this.pin2Dy1.yPixel0:this.pin2Dy0.yPixel0,this.imageView.setView0(this.pin2Dx0.xPixel0,this.imageView.subIndexToPixelY(v(g)),this.pin2Dx1.xPixel0,e)):(e=a===this.pin1Dy0?this.pin1Dy1.getYVal():this.pin1Dy0.getYVal(),this.doZoom(this.pin1Dx0.getXVal(),g,this.pin1Dx1.getXVal(),e,null==this.imageView,null==this.imageView,!1,!1,!0))}}catch(j){if(!E(j,Exception))throw j;}}}, +"JSV.common.PlotWidget");c(b,"removeAllHighlights",function(a){if(null==a)this.highlights.clear();else for(var b=this.highlights.size();0<=--b;)this.highlights.get(b).spectrum===a&&this.highlights.removeItemAt(b)},"JSV.common.Spectrum");c(b,"setCoordClicked",function(a,b,c){0==c&&(this.nextClickForSetPeak=null);if(Double.isNaN(b))return this.pd.coordClicked=null,this.pd.coordsClicked=null;this.pd.coordClicked=(new JSV.common.Coordinate).set(this.lastClickX=b,c);this.pd.coordsClicked=this.getSpectrum().getXYCoords(); +this.pd.xPixelClicked=this.lastPixelX=a;return this.pd.coordClicked},"~N,~N,~N");c(b,"setWidgets",function(a,b,c){if(a||null==this.pin1Dx0)null==this.zoomBox1D?this.newPins():this.resetPinPositions();this.setDerivedPins(b);this.setPinSliderPositions(c)},"~B,~N,~B");c(b,"newPins",function(){this.zoomBox1D=new JSV.common.PlotWidget("zoomBox1D");this.pin1Dx0=new JSV.common.PlotWidget("pin1Dx0");this.pin1Dx1=new JSV.common.PlotWidget("pin1Dx1");this.pin1Dy0=new JSV.common.PlotWidget("pin1Dy0");this.pin1Dy1= +new JSV.common.PlotWidget("pin1Dy1");this.pin1Dx01=new JSV.common.PlotWidget("pin1Dx01");this.pin1Dy01=new JSV.common.PlotWidget("pin1Dy01");this.cur1D2x1=new JSV.common.PlotWidget("cur1D2x1");this.cur1D2x1.color=JSV.common.ScriptToken.PEAKTABCOLOR;this.cur1D2x2=new JSV.common.PlotWidget("cur1D2x2");this.cur1D2x2.color=JSV.common.ScriptToken.PEAKTABCOLOR;if(null!=this.imageView){this.zoomBox2D=new JSV.common.PlotWidget("zoomBox2D");this.pin2Dx0=new JSV.common.PlotWidget("pin2Dx0");this.pin2Dx1=new JSV.common.PlotWidget("pin2Dx1"); +this.pin2Dy0=new JSV.common.PlotWidget("pin2Dy0");this.pin2Dy1=new JSV.common.PlotWidget("pin2Dy1");this.pin2Dx01=new JSV.common.PlotWidget("pin2Dx01");this.pin2Dy01=new JSV.common.PlotWidget("pin2Dy01");this.cur2Dx0=new JSV.common.PlotWidget("cur2Dx0");this.cur2Dx1=new JSV.common.PlotWidget("cur2Dx1");this.cur2Dy=new JSV.common.PlotWidget("cur2Dy");this.pin2Dy0.setY(0,this.imageView.toPixelY0(0));var a=this.getSpectrumAt(0).getSubSpectra().size();this.pin2Dy1.setY(a,this.imageView.toPixelY0(a))}this.setWidgetX(this.pin1Dx0, +this.getScale().minX);this.setWidgetX(this.pin1Dx1,this.getScale().maxX);this.setWidgetY(this.pin1Dy0,this.getScale().minY);this.setWidgetY(this.pin1Dy1,this.getScale().maxY);this.widgets=w(-1,[this.zoomBox1D,this.zoomBox2D,this.pin1Dx0,this.pin1Dx01,this.pin1Dx1,this.pin1Dy0,this.pin1Dy01,this.pin1Dy1,this.pin2Dx0,this.pin2Dx01,this.pin2Dx1,this.pin2Dy0,this.pin2Dy01,this.pin2Dy1,this.cur2Dx0,this.cur2Dx1,this.cur2Dy,this.cur1D2x1,this.cur1D2x2])});c(b,"setWidgetX",function(a,b){a.setX(b,this.toPixelX0(b))}, +"JSV.common.PlotWidget,~N");c(b,"setWidgetY",function(a,b){a.setY(b,this.toPixelY0(b))},"JSV.common.PlotWidget,~N");c(b,"resetPinsFromView",function(){null!=this.pin1Dx0&&(this.setWidgetX(this.pin1Dx0,this.getScale().minXOnScale),this.setWidgetX(this.pin1Dx1,this.getScale().maxXOnScale),this.setWidgetY(this.pin1Dy0,this.getScale().minYOnScale),this.setWidgetY(this.pin1Dy1,this.getScale().maxYOnScale))});c(b,"resetPinPositions",function(){this.resetX(this.pin1Dx0);this.resetY(this.pin1Dy0);this.resetY(this.pin1Dy1); +null==this.imageView?(null!=this.gs2dLinkedX&&this.resetX(this.cur1D2x1),null!=this.gs2dLinkedY&&this.resetX(this.cur1D2x2)):(this.pin2Dy0.setY(this.pin2Dy0.getYVal(),this.imageView.toPixelY0(this.pin2Dy0.getYVal())),this.pin2Dy1.setY(this.pin2Dy1.getYVal(),this.imageView.toPixelY0(this.pin2Dy1.getYVal())))});c(b,"resetX",function(a){this.setWidgetX(a,a.getXVal())},"JSV.common.PlotWidget");c(b,"resetY",function(a){this.setWidgetY(a,a.getYVal())},"JSV.common.PlotWidget");c(b,"setPinSliderPositions", +function(a){this.pin1Dx0.yPixel0=this.pin1Dx1.yPixel0=this.pin1Dx01.yPixel0=this.yPixel0-5;this.pin1Dx0.yPixel1=this.pin1Dx1.yPixel1=this.pin1Dx01.yPixel1=this.yPixel0;this.cur1D2x1.yPixel1=this.cur1D2x2.yPixel1=this.yPixel0-5;this.cur1D2x1.yPixel0=this.cur1D2x2.yPixel0=this.yPixel1+6;null==this.imageView?(this.pin1Dy0.xPixel0=this.pin1Dy1.xPixel0=this.pin1Dy01.xPixel0=this.xPixel1+5,this.pin1Dy0.xPixel1=this.pin1Dy1.xPixel1=this.pin1Dy01.xPixel1=this.xPixel1):(this.pin1Dy0.xPixel0=this.pin1Dy1.xPixel0= +this.pin1Dy01.xPixel0=this.imageView.xPixel1+15,this.pin1Dy0.xPixel1=this.pin1Dy1.xPixel1=this.pin1Dy01.xPixel1=this.imageView.xPixel1+10,this.pin2Dx0.yPixel0=this.pin2Dx1.yPixel0=this.pin2Dx01.yPixel0=this.yPixel0-5,this.pin2Dx0.yPixel1=this.pin2Dx1.yPixel1=this.pin2Dx01.yPixel1=this.yPixel0,this.pin2Dy0.xPixel0=this.pin2Dy1.xPixel0=this.pin2Dy01.xPixel0=this.imageView.xPixel1+5,this.pin2Dy0.xPixel1=this.pin2Dy1.xPixel1=this.pin2Dy01.xPixel1=this.imageView.xPixel1,this.cur2Dx0.yPixel0=this.cur2Dx1.yPixel0= +this.yPixel1+6,this.cur2Dx0.yPixel1=this.cur2Dx1.yPixel1=this.yPixel0-5,this.cur2Dx0.yPixel0=this.cur2Dx1.yPixel0=this.yPixel1+6,this.cur2Dx1.yPixel1=this.cur2Dx1.yPixel1=this.yPixel0-5,this.cur2Dy.xPixel0=a?v((this.xPixel1+this.imageView.xPixel0)/2):this.imageView.xPixel0-6,this.cur2Dy.xPixel1=this.imageView.xPixel1+5)},"~B");c(b,"setDerivedPins",function(a){this.widgetsAreSet=!0;null!=this.gs2dLinkedX&&this.cur1D2x1.setX(this.cur1D2x1.getXVal(),this.toPixelX(this.cur1D2x1.getXVal()));null!=this.gs2dLinkedY&& +this.cur1D2x2.setX(this.cur1D2x2.getXVal(),this.toPixelX(this.cur1D2x2.getXVal()));this.pin1Dx01.setX(0,v((this.pin1Dx0.xPixel0+this.pin1Dx1.xPixel0)/2));this.pin1Dy01.setY(0,v((this.pin1Dy0.yPixel0+this.pin1Dy1.yPixel0)/2));this.pin1Dx01.setEnabled(Math.min(this.pin1Dx0.xPixel0,this.pin1Dx1.xPixel0)>this.xPixel0||Math.max(this.pin1Dx0.xPixel0,this.pin1Dx1.xPixel0)Math.min(this.toPixelY(this.getScale().minY), +this.toPixelY(this.getScale().maxY))||Math.max(this.pin1Dy0.yPixel0,this.pin1Dy1.yPixel0)c&&(k=a,a=c,c=k);b>f&&(k=b,b=f,f=k);k=!e&&null!= +this.imageView&&(this.imageView.minZ!=b||this.imageView.maxZ!=f);if(this.zoomEnabled||k){if(j){if(!this.getScale().isInRangeX(a)&&!this.getScale().isInRangeX(c))return;this.getScale().isInRangeX(a)?this.getScale().isInRangeX(c)||(c=this.getScale().maxX):a=this.getScale().minX}this.pd.setTaintedAll();j=this.viewData.getScaleData();var s=D(this.nSpectra,0),m=D(this.nSpectra,0);this.graphsTemp.clear();var p=this.getSpectrumAt(0).getSubSpectra(),p=null==p||2==p.size();if(this.getSpectrumAt(0).is1D()&& +!p){if(this.graphsTemp.addLast(this.getSpectrum()),!JSV.common.ScaleData.setDataPointIndices(this.graphsTemp,a,c,3,s,m))return}else if(!JSV.common.ScaleData.setDataPointIndices(this.spectra,a,c,3,s,m))return;if(p=b==f)e=!k&&e?e=this.getScale().spectrumScaleFactor:1,1E-4>Math.abs(e-1)&&(b=this.getScale().minYOnScale,f=this.getScale().maxYOnScale);e=null;if(p||g)this.getCurrentView(),e=this.viewData.getNewScales(this.iSpectrumSelected,p,b,f);this.getView(a,c,b,f,s,m,j,e);this.setXPixelMovedTo(1E10, +1.7976931348623157E308,0,0);this.setWidgetX(this.pin1Dx0,a);this.setWidgetX(this.pin1Dx1,c);this.setWidgetY(this.pin1Dy0,b);this.setWidgetY(this.pin1Dy1,f);null==this.imageView?this.updateDialogs():(a=this.getSpectrumAt(0).getSubIndex(),c=this.imageView.fixSubIndex(a),c!=a&&this.setCurrentSubSpectrum(c),k&&this.update2dImage(!1));l&&this.addCurrentZoom()}},"~N,~N,~N,~N,~B,~B,~B,~B,~B");c(b,"updateDialogs",function(){this.updateDialog(JSV.common.Annotation.AType.PeakList,-1);this.updateDialog(JSV.common.Annotation.AType.Measurements, +-1)});c(b,"setCurrentSubSpectrum",function(a){var b=this.getSpectrumAt(0);a=b.setCurrentSubSpectrum(a);b.isForcedSubset()&&this.viewData.setXRangeForSubSpectrum(this.getSpectrum().getXYCoords());this.pd.notifySubSpectrumChange(a,this.getSpectrum())},"~N");c(b,"addCurrentZoom",function(){if(this.viewList.size()>this.currentZoomIndex+1)for(var a=this.viewList.size()-1;a>this.currentZoomIndex;a--)this.viewList.removeItemAt(a);this.viewList.addLast(this.viewData);this.currentZoomIndex++});c(b,"setZoomTo", +function(a){this.currentZoomIndex=a;this.viewData=this.viewList.get(a);this.resetPinsFromView()},"~N");c(b,"clearViews",function(){this.isLinked&&this.pd.clearLinkViews(this);this.setZoom(0,0,0,0);for(var a=this.viewList.size();1<=--a;)this.viewList.removeItemAt(a)});c(b,"drawAll",function(a,b,c,f,e,g,j){this.g2d=this.pd.g2d;this.gMain=a;var k=this.getSpectrumAt(0),l=k.getSubIndex();this.is2DSpectrum=!k.is1D()&&(this.isLinked||this.pd.getBoolean(JSV.common.ScriptToken.DISPLAY2D))&&(null!=this.imageView|| +this.get2DImage(k));null!=this.imageView&&g&&(this.pd.isPrinting&&this.g2d!==this.pd.g2d0&&this.g2d.newGrayScaleImage(a,this.image2D,this.imageView.imageWidth,this.imageView.imageHeight,this.imageView.getBuffer()),this.is2DSpectrum&&this.setPositionForFrame(f),this.draw2DImage());var s=this.stackSelected||!this.showAllStacked?this.iSpectrumSelected:-1,m=!this.showAllStacked||1==this.nSpectra||0<=s,k=null==this.imageView||this.pd.display1D,p=0<=s?1:0,n=this.getFixedSelectedSpectrumIndex();if(k&&g&& +(this.fillBox(a,this.xPixel0,this.yPixel0,this.xPixel1,this.yPixel1,JSV.common.ScriptToken.PLOTAREACOLOR),0>s)){m=!0;for(s=0;sp||0<=this.iSpectrumSelected))this.$haveSelectedSpectrum=!0;this.haveSingleYScale=this.showAllStacked&&1this.iSpectrumSelected||this.iSpectrumSelected==s&& +this.pd.isCurrentGraphSet(this))&&this.pd.titleOn&&!this.pd.titleDrawn)this.pd.drawTitle(a,this.height,this.width,this.pd.getDrawTitle(this.pd.isPrinting)),this.pd.titleDrawn=!0;this.haveSingleYScale&&s==n&&(this.pd.getBoolean(JSV.common.ScriptToken.YSCALEON)&&this.drawYScale(a,this),this.pd.getBoolean(JSV.common.ScriptToken.YUNITSON)&&this.drawYUnits(a))}var x=w.isContinuous(),A=(1e||2147483647==e)&&this.drawHandle(a,this.xPixelPlot1,this.yPixelPlot0,3,!1),0f){var j=c;c=f;f=j}c=this.fixX(c);f=this.fixX(f);3>f-c&&(c-=2,f+=2);null!=b&&b.setPixelRange(c,f);0==g?this.fillBox(a,c,this.yPixel0,f,this.yPixel0+this.yPixels,e):(this.fillBox(a,c,this.yPixel0+2,f,this.yPixel0+5,e),null!=b&&(c=v((c+f)/2),this.fillBox(a,c-1,this.yPixel0+2,c+1,this.yPixel0+2+g,e)))},"~O,JSV.common.PeakInfo,~N,~N,JSV.common.ScriptToken,~N"); +c(b,"drawIntegration",function(a,b,c,f,e){null!=e&&(this.haveIntegralDisplayed(b)&&this.drawPlot(a,b,this.spectra.get(b),!0,c,!1,e,!0,!1,!1),this.drawIntegralValues(a,b,c));b=this.getIntegrationRatios(b);null!=b&&this.drawAnnotations(a,b,JSV.common.ScriptToken.INTEGRALPLOTCOLOR)},"~O,~N,~N,~B,JSV.common.IntegralData,~B,~B");c(b,"getMeasurements",function(a,b){var c=this.getDialog(a,b);return null==c||0==c.getData().size()||!c.getState()?null:c.getData()},"JSV.common.Annotation.AType,~N");c(b,"drawPlot", +function(a,b,c,f,e,g,j,k,l,s){var m=null==j?c.getXYCoords():this.getIntegrationGraph(b).getXYCoords(),p=null!=j;j=p?j.getBitSet():null;k=l||null!=c.fillColor&&k;g=g?-2:p?-1:!this.allowStacking?0:b;this.setPlotColor(a,g);var n=!0,r=this.toPixelY(0);p?k=(new Boolean(k&r==this.fixY(r))).valueOf():r=this.fixY(r);var u=p||k?this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR):null;c=null==u||null==c.fillColor?u:c.fillColor;u=this.viewData.getStartingPointIndex(b);b=this.viewData.getEndingPointIndex(b); +if(f&&!s){b--;(s=(p||null!=this.pendingIntegral)&&this.g2d.canDoLineTo())&&this.g2d.doStroke(a,!0);var v=!1;for(f=u;f<=b;f++){var w=m[f],x=m[f+1],A=p?this.toPixelYint(w.getYVal()):this.toPixelY(w.getYVal());if(-2147483648!=A){var B=p?this.toPixelYint(x.getYVal()):this.toPixelY(x.getYVal());if(-2147483648!=B){var w=w.getXVal(),C=x.getXVal(),x=this.toPixelX(w),D=this.toPixelX(C),A=this.fixY(e+A),B=this.fixY(e+B);p&&(f==u&&(this.xPixelPlot1=x,this.yPixelPlot0=A),this.xPixelPlot0=D,this.yPixelPlot1=B); +if(!(D==x&&A==B))if(k&&l&&this.pendingIntegral.overlaps(w,C))null!=c&&(this.g2d.doStroke(a,!1),this.g2d.setGraphicsColor(a,c)),this.g2d.fillRect(a,Math.min(x,D),Math.min(r,A),Math.max(1,Math.abs(D-x)),Math.abs(r-A)),null!=c&&(this.g2d.doStroke(a,!1),this.g2d.doStroke(a,!0),v=!1,this.setPlotColor(a,g));else if(!(A==B&&A==this.yPixel0)&&(null!=j&&j.get(f)!=n&&(n=j.get(f),s&&v&&(this.g2d.doStroke(a,!1),this.g2d.doStroke(a,!0),v=!1),!this.pd.isPrinting&&0!=this.pd.integralShiftMode?this.setPlotColor(a, +0):n?this.setColorFromToken(a,JSV.common.ScriptToken.INTEGRALPLOTCOLOR):this.setPlotColor(a,-3)),!this.pd.isPrinting||n))v?this.g2d.lineTo(a,D,B):(this.g2d.drawLine(a,x,A,D,B),v=s)}}}s&&this.g2d.doStroke(a,!1)}else{for(f=u;f<=b;f++)l=m[f],B=this.toPixelY(l.getYVal()),-2147483648!=B&&(x=this.toPixelX(l.getXVal()),A=this.toPixelY(Math.max(this.getScale().minYOnScale,0)),A=this.fixY(e+A),B=this.fixY(e+B),A==B&&(A==this.yPixel0||A==this.yPixel1)||(s?this.g2d.fillRect(a,x-1,B-1,3,3):this.g2d.drawLine(a, +x,A,x,B)));!s&&this.getScale().isYZeroOnScale()&&(e+=this.toPixelY(this.getScale().spectrumYRef),e==this.fixY(e)&&this.g2d.drawLine(a,this.xPixel1,e,this.xPixel0,e))}},"~O,~N,JSV.common.Spectrum,~B,~N,~B,JSV.common.IntegralData,~B,~B,~B");c(b,"drawFrame",function(a,b,c,f,e){if(!this.pd.gridOn||this.pd.isPrinting)if(this.setColorFromToken(a,JSV.common.ScriptToken.GRIDCOLOR),this.g2d.drawRect(a,this.xPixel0,this.yPixel0,this.xPixels,this.yPixels),this.pd.isPrinting)return;this.setCurrentBoxColor(a); +e&&(0<=b&&(this.setPlotColor(a,b),this.fillArrow(a,3,this.xVArrows,v((this.yPixel00+this.yPixel11)/2)-9,!0),this.fillArrow(a,4,this.xVArrows,v((this.yPixel00+this.yPixel11)/2)+9,!0),this.setCurrentBoxColor(a)),this.fillArrow(a,3,this.xVArrows,v((this.yPixel00+this.yPixel11)/2)-9,!1),this.fillCircle(a,this.xVArrows,v((this.yPixel00+this.yPixel11)/2),!1),this.fillArrow(a,4,this.xVArrows,v((this.yPixel00+this.yPixel11)/2)+9,!1));if(null==this.imageView&&c){b=this.xPixel00+10;c=this.xPixel11-10;e=this.yPixel00+ +1;var g=this.yPixel11-2;this.g2d.drawLine(a,b,e,c,e);this.g2d.drawLine(a,c,e,c,g);this.g2d.drawLine(a,b,g,c,g);this.splitterX=this.closerX=-2147483648;this.drawBox(a,c-10,e,c,e+10,null);this.g2d.drawLine(a,c-10,e+10,c,e);this.g2d.drawLine(a,c,e+10,c-10,e);this.closerX=c-10;this.closerY=e;f&&(c-=10,this.fillBox(a,c-10,e,c,e+10,null),this.splitterX=c-10,this.splitterY=e)}},"~O,~N,~B,~B,~B");c(b,"drawGrid",function(a){if(this.pd.gridOn&&null==this.imageView){this.setColorFromToken(a,JSV.common.ScriptToken.GRIDCOLOR); +var b;if(Double.isNaN(this.getScale().firstX)){b=this.getScale().maxXOnScale+this.getScale().steps[0]/2;for(var c=this.getScale().minXOnScale;cp;p++){1==p&&JSV.common.ScaleData.fixScale(this.mapX);for(var n=1E10,r=s;r<=m;r+=this.getScale().steps[0]){var k=b.toPixelX(r),u=Double.$valueOf(r),w;switch(p){case 0:w=JU.DF.formatDecimalDbl(r,c);this.mapX.put(u,w);this.drawTick(a,k,e,g,b);k=Math.abs(n-r);n=this.getScale().minorTickCounts[0]; +if(0!=n){k/=n;for(w=1;wk;k++){1==k&&JSV.common.ScaleData.fixScale(this.mapX);for(var l=c.firstY;lMath.abs(a- +(c+5))&&5>Math.abs(b-(f+5))},"~N,~N,~N,~N");c(b,"setCoordStr",function(a,b){var c=JU.DF.formatDecimalDbl(a,this.getScale().precision[0]);this.pd.coordStr="("+c+(this.haveSingleYScale||0<=this.iSpectrumSelected?", "+JU.DF.formatDecimalDbl(b,this.getScale().precision[1]):"")+")";return c},"~N,~N");c(b,"setStartupPinTip",function(){if(null==this.pd.startupPinTip)return!1;this.pd.setToolTipText(this.pd.startupPinTip);this.pd.startupPinTip=null;return!0});c(b,"get2DYLabel",function(a,b){var c=this.getSpectrumAt(0).getSubSpectra().get(a); +return JU.DF.formatDecimalDbl(c.getY2DPPM(),b)+" PPM"+(c.y2DUnits.equals("HZ")?" ("+JU.DF.formatDecimalDbl(c.getY2D(),b)+" HZ) ":"")},"~N,~N");c(b,"isOnSpectrum",function(a,b,c){var f=null,e=!0,g=0>c;if(g){f=this.getDialog(JSV.common.Annotation.AType.Integration,-1);if(null==f)return!1;f=f.getData().getXYCoords();c=this.getFixedSelectedSpectrumIndex()}else{this.setScale(c);var j=this.spectra.get(c),f=j.xyCoords,e=j.isContinuous()}var j=c*F(this.yPixels*(this.yStackOffsetPercent/100)),k=this.viewData.getStartingPointIndex(c); +c=this.viewData.getEndingPointIndex(c);if(e)for(e=k;ej&&2>Math.abs(f-b))return!0;var k=e-a;if(2>Math.abs(k)&&2>Math.abs(g-b))return!0;var l=f-g;if(2a.size()&&null==this.lastAnnotation&&(this.lastAnnotation=this.getAnnotation((this.getScale().maxXOnScale+this.getScale().minXOnScale)/2,(this.getScale().maxYOnScale+this.getScale().minYOnScale)/2,b,!1,!1,0,0));var c=this.getAnnotation(a,this.lastAnnotation);if(null==c)return null;if(null== +this.annotations&&1==a.size()&&'"'==a.get(0).charAt(0))return c=c.text,this.getSpectrum().setTitle(c),c;this.lastAnnotation=c;this.addAnnotation(c,!1);return null},"JU.Lst,~S");c(b,"addHighlight",function(a,b,c,f){null==c&&(c=this.getSpectrumAt(0));a=Y(JSV.common.GraphSet.Highlight,this,null,a,b,c,null==f?this.pd.getColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR):f);this.highlights.contains(a)||this.highlights.addLast(a)},"~N,~N,JSV.common.Spectrum,javajs.api.GenericColor");c(b,"addPeakHighlight",function(a){for(var b= +this.spectra.size();0<=--b;){var c=this.spectra.get(b);this.removeAllHighlights(c);if(!(null==a||a.isClearAll()||c!==a.spectrum)){var f=a.toString();if(null!=f){var e=JU.PT.getQuotedAttribute(f,"xMin"),f=JU.PT.getQuotedAttribute(f,"xMax");if(null==e||null==f)break;e=JU.PT.parseFloat(e);f=JU.PT.parseFloat(f);if(Float.isNaN(e)||Float.isNaN(f))break;this.pd.addHighlight(this,e,f,c,200,140,140,100);c.setSelectedPeak(a);!this.getScale().isInRangeX(e)&&!(this.getScale().isInRangeX(f)||ethis.xPixelPlot1-a:20>a-this.xPixelPlot0},"~N,~B");c(b,"checkWidgetEvent",function(a,b,c){if(!this.widgetsAreSet)return!1; +this.widgetsAreSet=!1;if(c){if(2==this.pd.clickCount&&this.lastIntDragX!=a&&!this.is2dClick(a,b)){if(null==this.pendingMeasurement)return-1==this.iSpectrumClicked&&0<=this.iPreviousSpectrumClicked&&this.setSpectrumClicked(this.iPreviousSpectrumClicked),this.processPendingMeasurement(a,b,2),!0}else if(!this.is2dClick(a,b)&&(this.isOnSpectrum(a,b,-1)&&this.checkIntegral(this.toX(a),NaN,!1),this.lastIntDragX==a&&(this.pd.isIntegralDrag=!0,!this.checkIntegral(this.toX(a),this.toX(a),!1))))return!1;if(null!= +this.pendingMeasurement)return!0;c=this.getPinSelected(a,b);null==c&&(b=this.fixY(b),aMath.abs(this.toPixelX(this.pendingMeasurement.getXVal())-a)&&(this.pendingMeasurement=null),this.processPendingMeasurement(a,b,-2),this.setToolTipForPixels(a,b);else if(0!=this.pd.integralShiftMode)this.pd.integralShiftMode=0,this.zoomBox1D.xPixel1= +this.zoomBox1D.xPixel0;else{0<=this.iSpectrumMovedTo&&this.setScale(this.iSpectrumMovedTo);var c=this.pd.thisWidget;if(this.pd.isIntegralDrag)JSV.common.GraphSet.isGoodEvent(this.zoomBox1D,null,!0)&&this.checkIntegral(this.toX(this.zoomBox1D.xPixel0),this.toX(this.zoomBox1D.xPixel1),!0),this.zoomBox1D.xPixel1=this.zoomBox1D.xPixel0=0,this.pendingIntegral=null,this.pd.isIntegralDrag=!1;else if(c===this.zoomBox2D)JSV.common.GraphSet.isGoodEvent(this.zoomBox2D,null,!0)&&(this.imageView.setZoom(this.zoomBox2D.xPixel0, +this.zoomBox2D.yPixel0,this.zoomBox2D.xPixel1,this.zoomBox2D.yPixel1),this.zoomBox2D.xPixel1=this.zoomBox2D.xPixel0,this.doZoom(this.imageView.toX(this.imageView.xPixel0),this.getScale().minY,this.imageView.toX(this.imageView.xPixel0+this.imageView.xPixels-1),this.getScale().maxY,!1,!1,!1,!0,!0));else if(c===this.zoomBox1D){if(JSV.common.GraphSet.isGoodEvent(this.zoomBox1D,null,!0)){var c=this.zoomBox1D.xPixel1,f=this.pd.shiftPressed;this.doZoom(this.toX(this.zoomBox1D.xPixel0),f?this.toY(this.zoomBox1D.yPixel0): +0,this.toX(c),f?this.toY(this.zoomBox1D.yPixel1):0,!0,f,!0,!0,!0);this.zoomBox1D.xPixel1=this.zoomBox1D.xPixel0}}else(c===this.pin1Dx0||c===this.pin1Dx1||c===this.cur2Dx0||c===this.cur2Dx1)&&this.addCurrentZoom()}},"~N,~N");c(b,"mouseMovedEvent",function(a,b){if(1a?(this.bsSelected.clearAll(),this.setSpectrumClicked(-1)):(this.bsSelected.set(a), +this.setSpectrumClicked(1==this.bsSelected.cardinality()?a:-1),1a||(a=b.getPeakList().get(a),b.setSelectedPeak(a),this.setCoordClicked(a.getXPixel(),a.getX(),0),this.pd.notifyPeakPickedListeners(new JSV.common.PeakPickEvent(this.jsvp,this.pd.coordClicked,a)))},"~N");c(b,"scaleSelectedBy",function(a){for(var b=this.bsSelected.nextSetBit(0);0<=b;b=this.bsSelected.nextSetBit(b+1))this.viewData.scaleSpectrum(b, +a)},"~N");f(b,"toString",function(){return"gs: "+this.nSpectra+" "+this.spectra+" "+this.spectra.get(0).getFilePath()});c(b,"setXPointer",function(a,b){null!=a&&this.setSpectrumClicked(this.getSpectrumIndex(a));this.xValueMovedTo=this.lastClickX=b;this.lastPixelX=this.toPixelX(b);this.setXPixelMovedTo(b,1.7976931348623157E308,0,0);this.yValueMovedTo=NaN},"JSV.common.Spectrum,~N");c(b,"setXPointer2",function(a,b){null!=a&&this.setSpectrumClicked(this.getSpectrumIndex(a));this.setXPixelMovedTo(1.7976931348623157E308, +b,0,0)},"JSV.common.Spectrum,~N");c(b,"hasCurrentMeasurement",function(a){return null!=(a===JSV.common.Annotation.AType.Integration?this.selectedSpectrumIntegrals:this.selectedSpectrumMeasurements)},"JSV.common.Annotation.AType");c(b,"getDialog",function(a,b){-1==b&&(b=this.getCurrentSpectrumIndex());return null==this.dialogs||0>b?null:this.dialogs.get(a+"_"+b)},"JSV.common.Annotation.AType,~N");c(b,"removeDialog",function(a,b){null!=this.dialogs&&0<=a&&this.dialogs.remove(b+"_"+a)},"~N,JSV.common.Annotation.AType"); +c(b,"addDialog",function(a,b,c){null==this.dialogs&&(this.dialogs=new java.util.Hashtable);a=b+"_"+a;c.setGraphSetKey(a);this.dialogs.put(a,c);return c},"~N,JSV.common.Annotation.AType,JSV.api.AnnotationData");c(b,"removeDialog",function(a){var b=a.getGraphSetKey();this.dialogs.remove(b);a=a.getData();null!=a&&this.dialogs.put(b,a)},"JSV.dialog.JSVDialog");c(b,"getPeakListing",function(a,b,c){0>a&&(a=this.getCurrentSpectrumIndex());if(0>a)return null;var f=this.getDialog(JSV.common.Annotation.AType.PeakList, +-1);if(null==f){if(!c)return null;this.addDialog(a,JSV.common.Annotation.AType.PeakList,f=new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList,this.getSpectrum()))}f.getData().setPeakList(b,-2147483648,this.viewData.getScale());f.isDialog()&&f.setFields();return f.getData()},"~N,JSV.common.Parameters,~B");c(b,"setPeakListing",function(a){var b=this.getDialog(JSV.common.Annotation.AType.PeakList,-1),c=null!=b&&b.isDialog()?b:null;(null==a?null==c||!c.isVisible():a.booleanValue())?this.pd.showDialog(JSV.common.Annotation.AType.PeakList): +b.isDialog()&&b.setVisible(!1)},"Boolean");c(b,"haveIntegralDisplayed",function(a){a=this.getDialog(JSV.common.Annotation.AType.Integration,a);return null!=a&&a.getState()},"~N");c(b,"getIntegrationGraph",function(a){a=this.getDialog(JSV.common.Annotation.AType.Integration,a);return null==a?null:a.getData()},"~N");c(b,"setIntegrationRatios",function(a){var b=this.getFixedSelectedSpectrumIndex();null==this.aIntegrationRatios&&(this.aIntegrationRatios=Array(this.nSpectra));this.aIntegrationRatios[b]= +JSV.common.IntegralData.getIntegrationRatiosFromString(this.getSpectrum(),a)},"~S");c(b,"getIntegrationRatios",function(a){return null==this.aIntegrationRatios?null:this.aIntegrationRatios[a]},"~N");c(b,"integrate",function(a,b){var c=this.getSpectrumAt(a);if(null==b||!c.canIntegrate())return this.removeDialog(a,JSV.common.Annotation.AType.Integration),!1;this.addDialog(a,JSV.common.Annotation.AType.Integration,new JSV.common.IntegralData(c,b));return!0},"~N,JSV.common.Parameters");c(b,"getIntegration", +function(a,b,c){0>a&&(a=this.getCurrentSpectrumIndex());if(0>a)return null;var f=this.getDialog(JSV.common.Annotation.AType.Integration,-1);if(null==f){if(!c)return null;f=this.addDialog(a,JSV.common.Annotation.AType.Integration,new JSV.common.IntegralData(this.getSpectrum(),b))}return f.getData()},"~N,JSV.common.Parameters,~B");c(b,"getMeasurementInfo",function(a,b){var c;switch(a){case JSV.common.Annotation.AType.PeakList:c=this.getPeakListing(b,null,!1);break;case JSV.common.Annotation.AType.Integration:c= +this.getIntegration(b,null,!1);break;default:return null}if(null==c)return null;var f=new java.util.Hashtable;c.getInfo(f);return f},"JSV.common.Annotation.AType,~N");c(b,"getInfo",function(a,b){var c=new java.util.Hashtable;if("".equals(a))c.put("KEYS","viewInfo spectra");else if("viewInfo".equalsIgnoreCase(a))return this.getScale().getInfo(c);var f=new JU.Lst;c.put("spectra",f);for(var e=0;ethis.nSpectra)a=Array(this.nSpectra),System.arraycopy(b,0,a,0,this.nSpectra),b=a;else if(this.nSpectra>b.length){a=Array(this.nSpectra);var c=this.nSpectra-b.length;System.arraycopy(b,0,a,0,b.length);for(var f=0,b=b.length;f=this.plotColors.length?null:this.plotColors[a]},"~N");c(b,"setColorFromToken",function(a,b){null!=b&&this.g2d.setGraphicsColor(a,b===JSV.common.ScriptToken.PLOTCOLOR?this.plotColors[0]:this.pd.getColor(b))},"~O,JSV.common.ScriptToken"); +c(b,"setPlotColor",function(a,b){var c;switch(b){case -3:c=JSV.common.GraphSet.veryLightGrey;break;case -2:c=this.pd.BLACK;break;case -1:c=this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR);break;default:c=this.plotColors[b]}this.g2d.setGraphicsColor(a,c)},"~O,~N");c(b,"draw2DImage",function(){null!=this.imageView&&this.g2d.drawGrayScaleImage(this.gMain,this.image2D,this.imageView.xPixel0,this.imageView.yPixel0,this.imageView.xPixel0+this.imageView.xPixels-1,this.imageView.yPixel0+this.imageView.yPixels- +1,this.imageView.xView1,this.imageView.yView1,this.imageView.xView2,this.imageView.yView2)});c(b,"get2DImage",function(){this.imageView=new JSV.common.ImageView;this.imageView.set(this.viewList.get(0).getScale());if(!this.update2dImage(!0))return!1;this.imageView.resetZoom();return this.sticky2Dcursor=!0},"JSV.common.Spectrum");c(b,"update2dImage",function(a){this.imageView.set(this.viewData.getScale());var b=this.getSpectrumAt(0),c=this.imageView.get2dBuffer(b,!a);if(null==c)return this.imageView= +this.image2D=null,!1;a&&(c=this.imageView.adjustView(b,this.viewData),this.imageView.resetView());this.image2D=this.g2d.newGrayScaleImage(this.gMain,this.image2D,this.imageView.imageWidth,this.imageView.imageHeight,c);this.setImageWindow();return!0},"~B");c(b,"getAnnotation",function(a,b,c,f,e,g,j){return(new JSV.common.ColoredAnnotation).setCA(a,b,this.getSpectrum(),c,this.pd.BLACK,f,e,g,j)},"~N,~N,~S,~B,~B,~N,~N");c(b,"getAnnotation",function(a,b){return JSV.common.Annotation.getColoredAnnotation(this.g2d, +this.getSpectrum(),a,b)},"JU.Lst,JSV.common.Annotation");c(b,"fillBox",function(a,b,c,f,e,g){this.setColorFromToken(a,g);this.g2d.fillRect(a,Math.min(b,f),Math.min(c,e),Math.abs(b-f),Math.abs(c-e))},"~O,~N,~N,~N,~N,JSV.common.ScriptToken");c(b,"drawBox",function(a,b,c,f,e,g){this.setColorFromToken(a,g);this.g2d.drawRect(a,Math.min(b,f),Math.min(c,e),Math.abs(b-f)-1,Math.abs(c-e)-1)},"~O,~N,~N,~N,~N,JSV.common.ScriptToken");c(b,"drawHandle",function(a,b,c,f,e){e?this.g2d.drawRect(a,b-f,c-f,2*f,2*f): +this.g2d.fillRect(a,b-f,c-f,2*f+1,2*f+1)},"~O,~N,~N,~N,~B");c(b,"setCurrentBoxColor",function(a){this.g2d.setGraphicsColor(a,this.pd.BLACK)},"~O");c(b,"fillArrow",function(a,b,c,f,e){var g=1;switch(b){case 1:case 3:g=-1}c=D(-1,[c-5,c-5,c+5,c+5,c+8,c,c-8]);f=D(-1,[f+5*g,f-g,f-g,f+5*g,f+5*g,f+10*g,f+5*g]);switch(b){case 1:case 2:e?this.g2d.fillPolygon(a,f,c,7):this.g2d.drawPolygon(a,f,c,7);break;case 3:case 4:e?this.g2d.fillPolygon(a,c,f,7):this.g2d.drawPolygon(a,c,f,7)}},"~O,~N,~N,~N,~B");c(b,"fillCircle", +function(a,b,c,f){f?this.g2d.fillCircle(a,b-4,c-4,8):this.g2d.drawCircle(a,b-4,c-4,8)},"~O,~N,~N,~B");c(b,"setAnnotationColor",function(a,b,c){null!=c?this.setColorFromToken(a,c):(c=null,C(b,"JSV.common.ColoredAnnotation")&&(c=b.getColor()),null==c&&(c=this.pd.BLACK),this.g2d.setGraphicsColor(a,c))},"~O,JSV.common.Annotation,JSV.common.ScriptToken");c(b,"setSolutionColor",function(a,b,c){for(var f=0;f=this.xPixel0-5&&athis.averageGray)||0.3c++;)b.scaleSpectrum(-2,f?2:0.5),this.set(b.getScale()),this.get2dBuffer(a,!1);return this.buf2d},"JSV.common.Spectrum,JSV.common.ViewData");c(b,"getBuffer",function(){return this.buf2d});c(b,"setMinMaxY",function(a){a=a.getSubSpectra();var b=a.get(0);this.maxY= +b.getY2D();this.minY=a.get(a.size()-1).getY2D();b.y2DUnits.equalsIgnoreCase("Hz")&&(this.maxY/=b.freq2dY,this.minY/=b.freq2dY);this.setScaleData()},"JSV.common.Spectrum");c(b,"setScaleData",function(){this.scaleData.minY=this.minY;this.scaleData.maxY=this.maxY;this.scaleData.setYScale(this.toY(this.yPixel0),this.toY(this.yPixel1),!1,!1)});f(b,"fixX",function(a){return athis.xPixel1?this.xPixel1:a},"~N");f(b,"fixY",function(a){return JSV.common.Coordinate.intoRange(a,this.yPixel0, +this.yPixel1)},"~N");f(b,"getScale",function(){return this.scaleData});f(b,"toX",function(a){return this.maxX+(this.minX-this.maxX)*this.toImageX(this.fixX(a))/(this.imageWidth-1)},"~N");f(b,"toY",function(a){a=this.toSubspectrumIndex(a);return this.maxY+(this.minY-this.maxY)*a/(this.imageHeight-1)},"~N");f(b,"toPixelX",function(a){var b=this.toX(this.xPixel0),c=this.toX(this.xPixel1);return this.xPixel0+v((a-b)/(c-b)*(this.xPixels-1))},"~N");f(b,"toPixelY",function(a){return v(this.yPixel0+(a-this.scaleData.minYOnScale)/ +(this.scaleData.maxYOnScale-this.scaleData.minYOnScale)*this.yPixels)},"~N");f(b,"getXPixels",function(){return this.xPixels});f(b,"getYPixels",function(){return this.yPixels});f(b,"getXPixel0",function(){return this.xPixel0})});n("JSV.common");A(["JSV.common.Measurement"],"JSV.common.Integral",null,function(){var b=G(JSV.common,"Integral",JSV.common.Measurement);c(b,"setInt",function(a,b,c,f,e,g){this.setA(a,b,c,"",!1,!1,0,6);this.setPt2(e,g);this.setValue(f);return this},"~N,~N,JSV.common.Spectrum,~N,~N,~N")}); +n("JSV.common");var sb=G(JSV.common,"IntegralComparator",null,java.util.Comparator);f(sb,"compare",function(b,a){return b.getXVal()a.getXVal()?1:0},"JSV.common.Measurement,JSV.common.Measurement");n("JSV.common");A(["java.lang.Enum","JSV.common.MeasurementData","$.IntegralComparator"],"JSV.common.IntegralData","java.util.Collections $.StringTokenizer JU.AU $.BS $.DF $.Lst $.PT JSV.common.Annotation $.Coordinate $.Integral $.ScriptToken".split(" "),function(){var b=r(function(){this.intRange= +this.percentOffset=this.percentMinY=0;this.normalizationFactor=1;this.integralTotal=this.offset=this.percentRange=0;this.haveRegions=!1;this.xyCoords=null;u(this,arguments)},JSV.common,"IntegralData",JSV.common.MeasurementData);x(b,function(a,b,c,e){I(this,JSV.common.IntegralData,[JSV.common.Annotation.AType.Integration,e]);this.percentMinY=a;this.percentOffset=b;this.percentRange=c;this.calculateIntegral()},"~N,~N,~N,JSV.common.Spectrum");x(b,function(a,b){I(this,JSV.common.IntegralData,[JSV.common.Annotation.AType.Integration, +a]);null==b?this.autoIntegrate():(this.percentOffset=b.integralOffset,this.percentRange=b.integralRange,this.calculateIntegral())},"JSV.common.Spectrum,JSV.common.Parameters");c(b,"getPercentMinimumY",function(){return this.percentMinY});c(b,"getPercentOffset",function(){return this.percentOffset});c(b,"getIntegralFactor",function(){return this.intRange});c(b,"update",function(a){this.update(a.integralMinY,a.integralOffset,a.integralRange)},"JSV.common.Parameters");c(b,"update",function(a,b,c){var e= +this.percentRange;if(!(0>=c||c==this.percentRange&&b==this.percentOffset)){this.percentOffset=b;this.percentRange=c;this.checkRange();a=c/100/this.integralTotal;b/=100;for(var g=0;gb)return null;var c=this.removeItemAt(b),b=c.getXVal(),c=c.getXVal2();this.addIntegralRegion(b,a);return this.addIntegralRegion(a,c)},"~N");f(b,"setSpecShift",function(a){JSV.common.Coordinate.shiftX(this.xyCoords,a);for(var b=this.size();1<=--b;)this.get(b).addSpecShift(a)}, +"~N");c(b,"addMarks",function(a){a=JU.PT.rep(" "+a,","," ");a=JU.PT.rep(a," -"," #");a=JU.PT.rep(a,"--","-#");a=a.$replace("-","^");a=a.$replace("#","-");a=JSV.common.ScriptToken.getTokens(a);for(var b=0;bg)){var f=c.indexOf(":");f>g&&(e=Double.$valueOf(c.substring(f+1).trim()).doubleValue(),c=c.substring(0,f).trim());var k=Double.$valueOf(c.substring(0,g).trim()).doubleValue(),l=Double.$valueOf(c.substring(g+1).trim()).doubleValue();0== +l&&0==k&&this.clear();if(l!=k){var n=this.addIntegralRegion(Math.max(l,k),Math.min(l,k));null!=n&&0f&&(f=this.integralTotal);this.integralTotal=f-g;this.intRange=this.percentRange/100/this.integralTotal;this.offset=this.percentOffset/100;g=0;for(c=a.length;0<=--c;)e=a[c].getYVal(),g+=e-b,this.xyCoords[c]=(new JSV.common.Coordinate).set(a[c].getXVal(),g*this.intRange+this.offset);return this.xyCoords});c(b,"checkRange",function(){this.percentOffset=Math.max(5,this.percentOffset);this.percentRange=Math.max(10,this.percentRange)});b.getIntegrationRatiosFromString=c(b,"getIntegrationRatiosFromString", +function(a,b){for(var c=new JU.Lst,e=new java.util.StringTokenizer(b,",");e.hasMoreTokens();){var g=e.nextToken(),g=new java.util.StringTokenizer(g,":"),g=(new JSV.common.Annotation).setA(Double.parseDouble(g.nextToken()),0,a,g.nextToken(),!0,!1,0,0);c.addLast(g)}return c},"JSV.common.Spectrum,~S");c(b,"getXYCoords",function(){return this.xyCoords});c(b,"getPercentYValueAt",function(a){return 100*this.getYValueAt(a)},"~N");c(b,"dispose",function(){this.xyCoords=this.spec=null});c(b,"setSelectedIntegral", +function(a,b){var c=a.getValue();this.factorAllIntegrals(0>=b?1/this.normalizationFactor:b/c,0>=b)},"JSV.common.Measurement,~N");c(b,"factorAllIntegrals",function(a,b){for(var c=0;ca&&(b-=this.percentOffset);0>a?this.update(0,this.percentOffset,b):this.update(0,b,this.percentRange)},"~N,~N,~N,~N");c(b,"autoIntegrate",function(){null==this.xyCoords&&this.calculateIntegral();if(0!= +this.xyCoords.length){this.clear();for(var a=-1,b=0,c=this.xyCoords[this.xyCoords.length-1].getYVal(),e=this.xyCoords.length-1;0<=--e;){var g=this.xyCoords[e].getYVal();b++;1E-4>g-c&&0>a?ga?(a=e+Math.min(b,20),c=g,b=0):1E-4>g-c?(1==b&&(c=g),20<=b&&(this.addIntegralRegion(this.xyCoords[a].getXVal(),this.xyCoords[e].getXVal()),a=-1,c=g,b=0)):(b=0,c=g)}a=this.spec.getHydrogenCount();0c&&lg?(f=k,g=l):l>c&&l-c>j&&(e=k,j=l-c)}if(0>f){if(0>e)return-1;f=e}return f},"JSV.common.Coordinate,~N");c(b,"getPercentYValueAt", +function(a){return!this.isContinuous()?NaN:this.getYValueAt(a)},"~N");c(b,"getYValueAt",function(a){return JSV.common.Coordinate.getYValueAt(this.xyCoords,a)},"~N");c(b,"setUserYFactor",function(a){this.userYFactor=a},"~N");c(b,"getUserYFactor",function(){return this.userYFactor});c(b,"getConvertedSpectrum",function(){return this.convertedSpectrum});c(b,"setConvertedSpectrum",function(a){this.convertedSpectrum=a},"JSV.common.Spectrum");b.taConvert=c(b,"taConvert",function(a,b){if(!a.isContinuous())return a; +switch(b){case JSV.common.Spectrum.IRMode.NO_CONVERT:return a;case JSV.common.Spectrum.IRMode.TO_ABS:if(!a.isTransmittance())return a;break;case JSV.common.Spectrum.IRMode.TO_TRANS:if(!a.isAbsorbance())return a}var c=a.getConvertedSpectrum();return null!=c?c:a.isAbsorbance()?JSV.common.Spectrum.toT(a):JSV.common.Spectrum.toA(a)},"JSV.common.Spectrum,JSV.common.Spectrum.IRMode");b.toT=c(b,"toT",function(a){if(!a.isAbsorbance())return null;var b=a.getXYCoords(),c=Array(b.length);JSV.common.Coordinate.isYInRange(b, +0,4)||(b=JSV.common.Coordinate.normalise(b,0,4));for(var f=0;f=a?1:Math.pow(10,-a)},"~N");b.log10=c(b,"log10",function(a){return Math.log(a)/Math.log(10)},"~N");b.process=c(b,"process",function(a,b){if(b===JSV.common.Spectrum.IRMode.TO_ABS||b===JSV.common.Spectrum.IRMode.TO_TRANS)for(var c=0;cea&&(oa=1E5*Integer.parseInt(Q),Q=null);if(null!=Q&&(oa=1E5*Integer.parseInt(Ma=Q.substring(0,ea)), +Q=Q.substring(ea+1),ea=Q.indexOf("."),0>ea&&(oa+=1E3*Integer.parseInt(Q),Q=null),null!=Q)){var $a=Q.substring(0,ea),Za=Ma+="."+$a,oa=oa+1E3*Integer.parseInt($a),Q=Q.substring(ea+1),ea=Q.indexOf("_");0<=ea&&(Q=Q.substring(0,ea));ea=Q.indexOf(" ");0<=ea&&(Q=Q.substring(0,ea));oa+=Integer.parseInt(Q)}}catch(ab){if(!E(ab,"NumberFormatException"))throw ab;}JSV.common.JSVersion.majorVersion=Za;JSV.common.JSVersion.versionInt=oa;n("JSV.common");A(["java.util.Hashtable"],"JSV.common.JSVFileManager","java.io.BufferedInputStream $.BufferedReader $.InputStreamReader $.StringReader java.net.URL JU.AU $.BS $.Encoding $.JSJSONParser $.P3 $.PT $.SB JSV.common.JSVersion $.JSViewer JSV.exception.JSVException JU.Logger".split(" "), +function(){var b=G(JSV.common,"JSVFileManager",null);c(b,"isApplet",function(){return null!=JSV.common.JSVFileManager.appletDocumentBase});b.getFileAsString=c(b,"getFileAsString",function(a){if(null==a)return null;var b,c=new JU.SB;try{b=JSV.common.JSVFileManager.getBufferedReaderFromName(a,null);for(var f;null!=(f=b.readLine());)c.append(f),c.appendC("\n");b.close()}catch(e){if(E(e,Exception))return null;throw e;}return c.toString()},"~S");b.getBufferedReaderForInputStream=c(b,"getBufferedReaderForInputStream", +function(a){try{return new java.io.BufferedReader(new java.io.InputStreamReader(a,"UTF-8"))}catch(b){if(E(b,Exception))return null;throw b;}},"java.io.InputStream");b.getBufferedReaderForStringOrBytes=c(b,"getBufferedReaderForStringOrBytes",function(a){return null==a?null:new java.io.BufferedReader(new java.io.StringReader("string"==typeof a?a:String.instantialize(a)))},"~O");b.getBufferedReaderFromName=c(b,"getBufferedReaderFromName",function(a,b){if(null==a)throw new JSV.exception.JSVException("Cannot find "+ +a);JU.Logger.info("JSVFileManager getBufferedReaderFromName "+a);var c=JSV.common.JSVFileManager.getFullPathName(a);c.equals(a)||JU.Logger.info("JSVFileManager getBufferedReaderFromName "+c);return JSV.common.JSVFileManager.getUnzippedBufferedReaderFromName(c,b)},"~S,~S");b.getFullPathName=c(b,"getFullPathName",function(a){try{if(null==JSV.common.JSVFileManager.appletDocumentBase){if(JSV.common.JSVFileManager.isURL(a)){var b=new java.net.URL(ma("java.net.URL"),a,null);return b.toString()}return JSV.common.JSVFileManager.viewer.apiPlatform.newFile(a).getFullPath()}if(1== +a.indexOf(":\\")||1==a.indexOf(":/"))a="file:///"+a;else if(a.startsWith("cache://"))return a;b=new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase,a,null);return b.toString()}catch(c){if(E(c,Exception))throw new JSV.exception.JSVException("Cannot create path for "+a);throw c;}},"~S");b.isURL=c(b,"isURL",function(a){for(var b=JSV.common.JSVFileManager.urlPrefixes.length;0<=--b;)if(a.startsWith(JSV.common.JSVFileManager.urlPrefixes[b]))return!0;return!1},"~S");b.urlTypeIndex=c(b,"urlTypeIndex", +function(a){for(var b=0;ba||4==a},"~S");b.getUnzippedBufferedReaderFromName=c(b,"getUnzippedBufferedReaderFromName",function(a){var b=null;0<=a.indexOf("|")&&(b=JU.PT.split(a,"|"),null!=b&&0=f.length&&(f=JU.AU.ensureLengthByte(f,2*g)),System.arraycopy(c,0,f,g-e,e)):b.write(c,0,e);a.close();return null==b?JU.AU.arrayCopyByte(f,g):g+" bytes"}catch(j){if(E(j,Exception))throw new JSV.exception.JSVException(j.toString());throw j;}},"java.io.BufferedInputStream,JU.OC");b.postByteArray=c(b,"postByteArray", +function(a,b){var c=null;try{c=JSV.common.JSVFileManager.getInputStream(a,!1,b)}catch(f){if(E(f,Exception))c=f.toString();else throw f;}if("string"==typeof c)return c;try{c=JSV.common.JSVFileManager.getStreamAsBytes(c,null)}catch(e){if(E(e,"JSV.exception.JSVException"))try{c.close()}catch(g){if(!E(g,Exception))throw g;}else throw e;}return null==c?"":JSV.common.JSVFileManager.fixUTF(c)},"~S,~A");b.getUTFEncoding=c(b,"getUTFEncoding",function(a){return 3<=a.length&&239==a[0]&&187==a[1]&&191==a[2]? +JU.Encoding.UTF8:4<=a.length&&0==a[0]&&0==a[1]&&254==a[2]&&255==a[3]?JU.Encoding.UTF_32BE:4<=a.length&&255==a[0]&&254==a[1]&&0==a[2]&&0==a[3]?JU.Encoding.UTF_32LE:2<=a.length&&255==a[0]&&254==a[1]?JU.Encoding.UTF_16LE:2<=a.length&&254==a[0]&&255==a[1]?JU.Encoding.UTF_16BE:JU.Encoding.NONE},"~A");b.fixUTF=c(b,"fixUTF",function(a){var b=JSV.common.JSVFileManager.getUTFEncoding(a);if(b!==JU.Encoding.NONE)try{var c=String.instantialize(a,b.name().$replace("_","-"));switch(b){case JU.Encoding.UTF8:case JU.Encoding.UTF_16BE:case JU.Encoding.UTF_16LE:c= +c.substring(1)}return c}catch(f){if(E(f,"java.io.IOException"))JU.Logger.error("fixUTF error "+f);else throw f;}return String.instantialize(a)},"~A");b.getInputStream=c(b,"getInputStream",function(a,b,c){var f=JSV.common.JSVFileManager.isURL(a),e=null!=JSV.common.JSVFileManager.appletDocumentBase,g=null,g=null,j;if(f&&0<=(j=a.indexOf("?POST?")))g=a.substring(j+6),a=a.substring(0,j);if(e||f){var k;try{k=new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase,a,null)}catch(l){if(E(l,Exception))throw new JSV.exception.JSVException("Cannot read "+ +a);throw l;}JU.Logger.info("JSVFileManager opening URL "+k+(null==g?"":" with POST of "+g.length+" bytes"));g=JSV.common.JSVFileManager.viewer.apiPlatform.getURLContents(k,c,g,!1)}else b&&JU.Logger.info("JSVFileManager opening file "+a),g=JSV.common.JSVFileManager.viewer.apiPlatform.getBufferedFileInputStream(a);if("string"==typeof g)throw new JSV.exception.JSVException(g);return g},"~S,~B,~A");b.getNMRSimulationJCampDX=c(b,"getNMRSimulationJCampDX",function(a){var b=0,c=null,f=JSV.common.JSVFileManager.getSimulationType(a); +a.startsWith(f)&&(a=a.substring(f.length+1));var e=a.startsWith("MOL=");e&&(a=a.substring(4),b=a.indexOf("/n__Jmol"),0\n";if(j){for(var b=b.get("spectrum13C"),j=b.get("jcamp").get("value"),m=b.get("predCSNuc"),p=new JU.SB,r=m.size();0<=--r;)b= +m.get(r),p.append("\n"); +p.append("");n+=p.toString()}else{n=JU.PT.rep(b.get("xml"),"",n);if(null!=l){p=new JU.SB;n=JU.PT.split(n,' atoms="');p.append(n[0]);for(r=1;r<",">\n<");n=JU.PT.rep(n,'\\"','"');j=b.get("jcamp")}JU.Logger.debugging&&JU.Logger.info(n);JSV.common.JSVFileManager.cachePut("xml",n);j="##TITLE="+(e?"JMOL SIMULATION/"+ +f:a)+"\n"+j.substring(j.indexOf("\n##")+1);b=c.indexOf("\n");b=c.indexOf("\n",b+1);0\n"))return JU.Logger.error(a),!0;if(0<=a.indexOf("this.scriptLevelCount&&this.runScriptNow(n)}break;case JSV.common.ScriptToken.SELECT:this.execSelect(g);break; +case JSV.common.ScriptToken.SPECTRUM:case JSV.common.ScriptToken.SPECTRUMNUMBER:this.setSpectrum(g)||(b=!1);break;case JSV.common.ScriptToken.STACKOFFSETY:this.execOverlayOffsetY(JU.PT.parseInt(""+JU.PT.parseFloat(g)));break;case JSV.common.ScriptToken.TEST:this.si.siExecTest(g);break;case JSV.common.ScriptToken.OVERLAY:case JSV.common.ScriptToken.VIEW:this.execView(g,!0);break;case JSV.common.ScriptToken.HIGHLIGHT:b=this.highlight(e);break;case JSV.common.ScriptToken.FINDX:case JSV.common.ScriptToken.GETSOLUTIONCOLOR:case JSV.common.ScriptToken.INTEGRATION:case JSV.common.ScriptToken.INTEGRATE:case JSV.common.ScriptToken.IRMODE:case JSV.common.ScriptToken.LABEL:case JSV.common.ScriptToken.LINK:case JSV.common.ScriptToken.OVERLAYSTACKED:case JSV.common.ScriptToken.PRINT:case JSV.common.ScriptToken.SETPEAK:case JSV.common.ScriptToken.SETX:case JSV.common.ScriptToken.SHIFTX:case JSV.common.ScriptToken.SHOWERRORS:case JSV.common.ScriptToken.SHOWMEASUREMENTS:case JSV.common.ScriptToken.SHOWMENU:case JSV.common.ScriptToken.SHOWKEY:case JSV.common.ScriptToken.SHOWPEAKLIST:case JSV.common.ScriptToken.SHOWINTEGRATION:case JSV.common.ScriptToken.SHOWPROPERTIES:case JSV.common.ScriptToken.SHOWSOURCE:case JSV.common.ScriptToken.YSCALE:case JSV.common.ScriptToken.WRITE:case JSV.common.ScriptToken.ZOOM:if(this.isClosed()){b= +!1;break}switch(k){case JSV.common.ScriptToken.FINDX:this.pd().findX(null,Double.parseDouble(g));break;case JSV.common.ScriptToken.GETSOLUTIONCOLOR:this.show("solutioncolor"+g.toLowerCase());break;case JSV.common.ScriptToken.INTEGRATION:case JSV.common.ScriptToken.INTEGRATE:this.execIntegrate(g);break;case JSV.common.ScriptToken.IRMODE:this.execIRMode(g);break;case JSV.common.ScriptToken.LABEL:this.pd().addAnnotation(JSV.common.ScriptToken.getTokens(g));break;case JSV.common.ScriptToken.LINK:this.pd().linkSpectra(JSV.common.PanelData.LinkMode.getMode(g)); +break;case JSV.common.ScriptToken.OVERLAYSTACKED:this.pd().splitStack(!JSV.common.Parameters.isTrue(g));break;case JSV.common.ScriptToken.PRINT:f=this.execWrite(null);break;case JSV.common.ScriptToken.SETPEAK:case JSV.common.ScriptToken.SETX:case JSV.common.ScriptToken.SHIFTX:this.execShiftSpectrum(k,e);break;case JSV.common.ScriptToken.SHOWERRORS:this.show("errors");break;case JSV.common.ScriptToken.SHOWINTEGRATION:this.pd().showAnnotation(JSV.common.Annotation.AType.Integration,JSV.common.Parameters.getTFToggle(g)); +break;case JSV.common.ScriptToken.SHOWKEY:this.setOverlayLegendVisibility(JSV.common.Parameters.getTFToggle(g),!0);break;case JSV.common.ScriptToken.SHOWMEASUREMENTS:this.pd().showAnnotation(JSV.common.Annotation.AType.Measurements,JSV.common.Parameters.getTFToggle(g));break;case JSV.common.ScriptToken.SHOWMENU:this.showMenu(-2147483648,0);break;case JSV.common.ScriptToken.SHOWPEAKLIST:this.pd().showAnnotation(JSV.common.Annotation.AType.PeakList,JSV.common.Parameters.getTFToggle(g));break;case JSV.common.ScriptToken.SHOWPROPERTIES:this.show("properties"); +break;case JSV.common.ScriptToken.SHOWSOURCE:this.show("source");break;case JSV.common.ScriptToken.YSCALE:this.setYScale(g);break;case JSV.common.ScriptToken.WINDOW:this.si.siNewWindow(JSV.common.Parameters.isTrue(g),!1);break;case JSV.common.ScriptToken.WRITE:f=this.execWrite(g);break;case JSV.common.ScriptToken.ZOOM:b=this.execZoom(g)}}}catch(m){if(E(m,Exception))f=m.toString(),JU.Logger.error(m.toString()),b=!1,--c;else throw m;}}}this.scriptLevelCount--;this.si.siExecScriptComplete(f,!0);return b}, +"~S");c(b,"execShiftSpectrum",function(a,b){var c=JSV.common.ScriptToken.getTokens(b),f=NaN,e=NaN;switch(c.size()){case 2:e=c.get(1);e.equals("")&&(e="?");e=e.equalsIgnoreCase("NONE")?1.7976931348623157E308:e.equalsIgnoreCase("?")?NaN:Double.parseDouble(e);break;case 3:f=Double.parseDouble(c.get(1));e=Double.parseDouble(c.get(2));break;default:Double.parseDouble("")}c=0;switch(a){case JSV.common.ScriptToken.SETPEAK:c=1;break;case JSV.common.ScriptToken.SETX:c=2;break;case JSV.common.ScriptToken.SHIFTX:c= +3;Double.isNaN(e)&&Double.parseDouble("");break;default:return}this.pd().shiftSpectrum(c,f,e)},"JSV.common.ScriptToken,~S");c(b,"execClose",function(a){var b=!a.startsWith("!");b||(a=a.substring(1));this.close(JU.PT.trimQuotes(a));(!b||0==this.panelNodes.size())&&this.si.siValidateAndRepaint(!0)},"~S");c(b,"checkOvelayInterface",function(a){return a.equalsIgnoreCase("single")||a.equalsIgnoreCase("overlay")},"~S");c(b,"execPeak",function(a){try{var b=JSV.common.ScriptToken.getTokens(JU.PT.rep(a,"#", +"INDEX="));a=' type="'+b.get(0).toUpperCase()+'" _match="'+JU.PT.trimQuotes(b.get(1).toUpperCase())+'"';2a.indexOf("="))this.isClosed()||this.pd().getPeakListing(null,c);else{var c=JSV.common.ScriptToken.getTokens(a),f=b.peakListThreshold, +e=b.peakListInterpolation;try{for(var g=c.size();0<=--g;){var j=c.get(g),k=j.indexOf("=");if(!(0>=k)){var l=j.substring(0,k);a=j.substring(k+1);l.startsWith("thr")?f=Double.$valueOf(a).doubleValue():l.startsWith("int")&&(e=a.equalsIgnoreCase("none")?"NONE":"parabolic")}}b.peakListThreshold=f;b.peakListInterpolation=e;this.isClosed()||this.pd().getPeakListing(b,Boolean.TRUE)}catch(n){if(!E(n,Exception))throw n;}}},"~S");c(b,"highlight",function(a){var b=JSV.common.ScriptToken.getTokens(a),c=b.size(); +switch(c){case 3:case 5:case 6:case 7:break;case 2:case 4:if(b.get(c-1).equalsIgnoreCase("OFF"))break;default:return!1}if(!this.isClosed()){a=JU.PT.parseFloat(1b&&(b=150),0<=e&&(0<=g&&0<=j)&&this.pd().addHighlight(null, +a,f,null,e,g,j,b));this.repaint(!0)}return!0},"~S");c(b,"getRGB",function(a){a=JU.PT.parseFloat(a);return F(Float.isNaN(a)?-1:1JSV "+a);if(0>a.indexOf(">toJSV>> "+a);var b=JU.PT.getQuotedAttribute(a,"sourceID"),c,f,e,g;if(null==b){f=JU.PT.getQuotedAttribute(a,"file");e=JU.PT.getQuotedAttribute(a, +"index");if(null==f||null==e)return;f=JU.PT.rep(f,"#molfile","");c=JU.PT.getQuotedAttribute(a,"model");b=JU.PT.getQuotedAttribute(a,"src");g=null!=b&&b.startsWith("Jmol")?null:this.returnFromJmolModel;if(null!=c&&null!=g&&!c.equals(g)){JU.Logger.info("JSV ignoring model "+c+"; should be "+g);return}this.returnFromJmolModel=null;if(0==this.panelNodes.size()||!this.checkFileAlreadyLoaded(f))JU.Logger.info("file "+f+" not found -- JSViewer closing all and reopening"),this.si.siSyncLoad(f);a=JU.PT.getQuotedAttribute(a, +"type");g=null}else f=null,e=c=b,g=","+JU.PT.getQuotedAttribute(a,"atom")+",",a="ID";e=this.selectPanelByPeak(f,e,g);g=this.pd();g.selectSpectrum(f,a,c,!0);this.si.siSendPanelChange();g.addPeakHighlight(e);this.repaint(!0);(null==b||null!=e&&null!=e.getAtoms())&&this.si.syncToJmol(this.jmolSelect(e))}},"~S");c(b,"syncPeaksAfterSyncScript",function(){var a=this.currentSource;if(null!=a)try{var b="file="+JU.PT.esc(a.getFilePath()),c=a.getSpectra().get(0).getPeakList(),f=new JU.SB;f.append("[");for(var e= +c.size(),a=0;aa.indexOf("*")){f=a.$plit(" ");a=new JU.SB;for(var j=0;j");0=c+1&&(c=v(Math.floor(b)));this.fileCount=c;System.gc();JU.Logger.debugging&& +JU.Logger.checkMemory();this.si.siSourceClosed(a)},"JSV.source.JDXSource");c(b,"setFrameAndTreeNode",function(a){null==this.panelNodes||(0>a||a>=this.panelNodes.size())||this.setNode(this.panelNodes.get(a))},"~N");c(b,"selectFrameNode",function(a){a=JSV.common.PanelNode.findNode(a,this.panelNodes);if(null==a)return null;this.spectraTree.setPath(this.spectraTree.newTreePath(a.treeNode.getPath()));this.setOverlayLegendVisibility(null,!1);return a},"JSV.api.JSVPanel");c(b,"setSpectrum",function(a){if(0<= +a.indexOf(".")){a=JSV.common.PanelNode.findNodeById(a,this.panelNodes);if(null==a)return!1;this.setNode(a)}else{a=JU.PT.parseInt(a);if(0>=a)return this.checkOverlay(),!1;this.setFrameAndTreeNode(a-1)}return!0},"~S");c(b,"splitSpectra",function(){for(var a=this.currentSource,b=a.getSpectra(),c=Array(b.size()),f=null,e=0;ea.indexOf("false")),a="background-color:rgb("+a+")'>
Predicted Solution Colour- RGB("+a+")

",JSV.common.JSViewer.isJS?this.dialogManager.showMessage(this,"
","Predicted Colour"))},"~S");c(b,"getDialogPrint",function(a){if(!JSV.common.JSViewer.isJS)try{var b=this.getPlatformInterface("PrintDialog").set(this.offWindowFrame, +this.lastPrintLayout,a).getPrintLayout();null!=b&&(this.lastPrintLayout=b);return b}catch(c){if(!E(c,Exception))throw c;}return new JSV.common.PrintLayout(this.pd())},"~B");c(b,"setIRmode",function(a){this.irMode=a.equals("AtoT")?JSV.common.Spectrum.IRMode.TO_TRANS:a.equals("TtoA")?JSV.common.Spectrum.IRMode.TO_ABS:JSV.common.Spectrum.IRMode.getMode(a)},"~S");c(b,"getOptionFromDialog",function(a,b,c){return this.getDialogManager().getOptionFromDialog(null,a,this.selectedPanel,b,c)},"~A,~S,~S");c(b, +"print",function(a){return this.execWrite('PDF "'+a+'"')},"~S");c(b,"execWrite",function(a){JSV.common.JSViewer.isJS&&null==a&&(a="PDF");a=JSV.common.JSViewer.getInterface("JSV.export.Exporter").write(this,null==a?null:JSV.common.ScriptToken.getTokens(a),!1);this.si.writeStatus(a);return a},"~S");c(b,"$export",function(a,b){null==a&&(a="XY");var c=this.pd(),f=c.getNumberOfSpectraInCurrentSet();if(-1>b||b>=f)return"Maximum spectrum index (0-based) is "+(f-1)+".";c=0>b?c.getSpectrum():c.getSpectrumAt(b); +try{return JSV.common.JSViewer.getInterface("JSV.export.Exporter").exportTheSpectrum(this,JSV.common.ExportType.getType(a),null,c,0,c.getXYCoords().length-1,null,a.equalsIgnoreCase("PDF"))}catch(e){if(E(e,Exception))return JU.Logger.error(e.toString()),null;throw e;}},"~S,~N");f(b,"postByteArray",function(a,b){return JSV.common.JSVFileManager.postByteArray(a,b)},"~S,~A");c(b,"getOutputChannel",function(a,b){for(;a.startsWith("/");)a=a.substring(1);return(new JU.OC).setParams(this,a,!b,null)},"~S,~B"); +b.getInterface=c(b,"getInterface",function(a){try{var b=ra._4Name(a);return null==b?null:b.newInstance()}catch(c){if(E(c,Exception))return JU.Logger.error("Interface.java Error creating instance for "+a+": \n"+c),null;throw c;}},"~S");c(b,"showMessage",function(a){null!=this.selectedPanel&&null!=a&&this.selectedPanel.showMessage(a,null)},"~S");c(b,"openFileFromDialog",function(a,b,c,f){var e=null;if(null!=c){e=this.fileHelper.getUrlFromDialog("Enter the name or identifier of a compound",this.recentSimulation); +if(null==e)return;this.recentSimulation=e;e="$"+c+"/"+e}else if(b){e=this.fileHelper.getUrlFromDialog("Enter the URL of a JCAMP-DX File",null==this.recentURL?this.recentOpenURL:this.recentURL);if(null==e)return;this.recentOpenURL=e}else b=w(-1,[Boolean.$valueOf(a),f]),b=this.fileHelper.showFileOpenDialog(this.mainPanel,b),null!=b&&(e=b.getFullPath());null!=e&&this.runScriptNow("load "+(a?"APPEND ":"")+'"'+e+'"'+(null==f?"":";"+f))},"~B,~B,~S,~S");c(b,"openFile",function(a,b){if(b&&null!=this.panelNodes){var c= +JSV.common.PanelNode.findSourceByNameOrId((new java.io.File(a)).getAbsolutePath(),this.panelNodes);null!=c&&this.closeSource(c)}this.si.siOpenDataOrFile(null,null,null,a,-1,-1,!0,this.defaultLoadScript,null)},"~S,~B");c(b,"selectPanel",function(a,b){var c=-1;if(null!=b){for(var f=b.size();0<=--f;){var e=b.get(f).jsvp;e===a?c=f:(e.setEnabled(!1),e.setFocusable(!1),e.getPanelData().closeAllDialogsExcept(JSV.common.Annotation.AType.NONE))}this.markSelectedPanels(b,c)}return c},"JSV.api.JSVPanel,JU.Lst"); +c(b,"checkAutoIntegrate",function(){this.autoIntegrate&&this.pd().integrateAll(this.parameters)});c(b,"parseInitScript",function(a){null==a&&(a="");a=new JSV.common.ScriptTokenizer(a,!0);for(JU.Logger.debugging&&JU.Logger.info("Running in DEBUG mode");a.hasMoreTokens();){var b=a.nextToken(),c=new JSV.common.ScriptTokenizer(b,!1),f=c.nextToken();f.equalsIgnoreCase("SET")&&(f=c.nextToken());var f=f.toUpperCase(),e=JSV.common.ScriptToken.getScriptToken(f),b=JSV.common.ScriptToken.getValue(e,c,b);JU.Logger.info("KEY-> "+ +f+" VALUE-> "+b+" : "+e);try{switch(e){default:this.parameters.set(null,e,b);break;case JSV.common.ScriptToken.UNKNOWN:break;case JSV.common.ScriptToken.APPLETID:this.fullName=this.appletName+"__"+(this.appletName=b)+"__";f=null;self.Jmol&&(f=Jmol._applets[b]);this.html5Applet=f;break;case JSV.common.ScriptToken.AUTOINTEGRATE:this.autoIntegrate=JSV.common.Parameters.isTrue(b);break;case JSV.common.ScriptToken.COMPOUNDMENUON:break;case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME:case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME:case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME:case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME:case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME:this.si.siExecSetCallback(e, +b);break;case JSV.common.ScriptToken.ENDINDEX:this.initialEndIndex=Integer.parseInt(b);break;case JSV.common.ScriptToken.INTERFACE:this.checkOvelayInterface(b);break;case JSV.common.ScriptToken.IRMODE:this.setIRmode(b);break;case JSV.common.ScriptToken.MENUON:this.allowMenu=Boolean.parseBoolean(b);break;case JSV.common.ScriptToken.OBSCURE:null==this.obscureTitleFromUser&&(this.obscureTitleFromUser=Boolean.$valueOf(b));break;case JSV.common.ScriptToken.STARTINDEX:this.initialStartIndex=Integer.parseInt(b); +break;case JSV.common.ScriptToken.SYNCID:this.fullName=this.appletName+"__"+(this.syncID=b)+"__"}}catch(g){if(!E(g,Exception))throw g;}}},"~S");c(b,"getSolutionColorStr",function(a){a=JU.CU.colorPtFromInt(this.getSolutionColor(a),null);return F(a.x)+","+F(a.y)+","+F(a.z)},"~B");c(b,"checkCommandLineForTip",function(a,b,c){var f="\u0001"==a;if(!f&&"\x00"!=a){if("\t"!=a&&("\n"==a||32>a.charCodeAt(0)||126b.indexOf(" ")&&0Math.min(a, +b)},"~N,~N");f(b,"toString",function(){return"["+this.getXVal()+","+this.pt2.getXVal()+"]"})});n("JSV.common");A(["JU.Lst","JSV.api.AnnotationData"],"JSV.common.MeasurementData",["JU.AU","$.DF","JSV.common.Annotation","$.Parameters"],function(){var b=r(function(){this.units=this.spec=this.type=null;this.precision=0;this.myParams=null;this.isON=!0;this.key=null;u(this,arguments)},JSV.common,"MeasurementData",JU.Lst,JSV.api.AnnotationData);x(b,function(a,b){I(this,JSV.common.MeasurementData,[]);this.type= +a;this.spec=b;this.myParams=(new JSV.common.Parameters).setName("MeasurementData")},"JSV.common.Annotation.AType,JSV.common.Spectrum");c(b,"getMeasurements",function(){return this});f(b,"getAType",function(){return this.type});f(b,"getState",function(){return this.isON});f(b,"setState",function(a){this.isON=a},"~B");c(b,"setMeasurements",function(){},"JU.Lst");f(b,"getParameters",function(){return this.myParams});c(b,"getDataHeader",function(){return JSV.common.MeasurementData.HEADER});c(b,"getMeasurementListArray", +function(a){this.units=a;var b=this.getMeasurementListArrayReal(a),c=this.spec.isNMR()?4:2;a=this.spec.isHNMR()&&a.equals("ppm")?4:2;for(var f=Array(this.size()),e=this.size();0<=--e;)f[e]=w(-1,[""+(e+1),JU.DF.formatDecimalDbl(b[e][0],c),JU.DF.formatDecimalDbl(b[e][1],c),JU.DF.formatDecimalDbl(b[e][2],a)]);return f},"~S");c(b,"getMeasurementListArrayReal",function(a){a=this.spec.isNMR()&&a.equalsIgnoreCase("HZ");for(var b=JU.AU.newDouble2(this.size()),c=0,f=this.size();0<=--f;){var e=this.get(f).getValue(); +a&&(e*=this.spec.getObservedFreq());b[c++]=R(-1,[this.get(f).getXVal(),this.get(f).getXVal2(),e])}return b},"~S");b.checkParameters=c(b,"checkParameters",function(a,b){if(0==a.size())return!1;var c=a.getParameters();switch(a.getAType()){case JSV.common.Annotation.AType.PeakList:return b.peakListInterpolation.equals(c.peakListInterpolation)&&b.peakListThreshold==c.peakListThreshold}return!1},"JSV.common.MeasurementData,JSV.common.ColorParameters");f(b,"getSpectrum",function(){return this.spec});f(b, +"getData",function(){return this});c(b,"clear",function(a,b){for(var c=this.size();0<=--c;){var f=this.get(c);(0==f.text.length||f.overlaps(a,b))&&this.removeItemAt(c)}},"~N,~N");c(b,"find",function(a){for(var b=this.size();0<=--b;)if(this.get(b).overlaps(a,a))return b;return-1},"~N");f(b,"setSpecShift",function(a){for(var b=this.size();0<=--b;){var c=this.get(b),f=c.getXVal()+a;c.setXVal(f);c.setValue(f);c.text=JU.DF.formatDecimalDbl(f,this.precision)}},"~N");f(b,"getGraphSetKey",function(){return this.key}); +f(b,"setGraphSetKey",function(a){this.key=a},"~S");f(b,"isVisible",function(){return!0});c(b,"getInfo",function(a){a.put("header",this.getDataHeader());a.put("table",this.getMeasurementListArrayReal("ppm"));null!=this.units&&a.put("units",this.units)},"java.util.Map");f(b,"isDialog",function(){return!1});b.HEADER=w(-1,["","start","end","value"])});n("JSV.common");A(["java.lang.Enum","J.api.EventManager","java.util.Hashtable","JU.Lst"],"JSV.common.PanelData","JU.CU JSV.common.Annotation $.Coordinate $.GraphSet $.JSVFileManager $.JSVersion $.JSViewer $.MeasurementData $.Parameters $.PeakPickEvent $.ScriptToken $.Spectrum $.SubSpecChangeEvent $.ZoomEvent JU.Font $.Logger".split(" "), +function(){var b=r(function(){this.graphSets=this.jsvp=this.options=this.currentGraphSet=this.listeners=this.vwr=this.g2d0=this.g2d=null;this.currentSplitPoint=0;this.coordsClicked=this.coordClicked=this.thisWidget=null;this.isIntegralDrag=this.drawXAxisLeftToRight=this.shiftPressed=this.ctrlPressed=!1;this.xAxisLeftToRight=!0;this.scalingFactor=1;this.integralShiftMode=0;this.left=60;this.right=50;this.coordStr="";this.startupPinTip="Click to set.";this.title=null;this.endIndex=this.startIndex=this.thisHeight= +this.thisWidth=this.nSpectra=this.clickCount=0;this.titleFontName=this.displayFontName=this.viewTitle=this.commonFilePath=null;this.isPrinting=!1;this.doReset=!0;this.printingFontName=null;this.printGraphPosition="default";this.isLinked=this.display1D=this.titleDrawn=!1;this.spectra=this.printJobTitle=null;this.taintedAll=!0;this.testingJavaScript=!1;this.mouseState=this.currentFont=null;this.peakTabsOn=this.titleOn=this.gridOn=!1;this.mouseY=this.mouseX=0;this.linking=!1;this.xPixelClicked=0;this.gMain= +this.optionsSaved=this.bgcolor=this.BLACK=this.zoomBoxColor2=this.zoomBoxColor=this.highlightColor=this.unitsColor=this.titleColor=this.scaleColor=this.plotAreaColor=this.peakTabColor=this.integralPlotColor=this.gridColor=this.coordinatesColor=null;u(this,arguments)},JSV.common,"PanelData",null,J.api.EventManager);N(b,function(){this.listeners=new JU.Lst;this.options=new java.util.Hashtable});x(b,function(a,b){this.vwr=b;this.jsvp=a;this.g2d=this.g2d0=b.g2d;this.BLACK=this.g2d.getColor1(0);this.highlightColor= +this.g2d.getColor4(255,0,0,200);this.zoomBoxColor=this.g2d.getColor4(150,150,100,130);this.zoomBoxColor2=this.g2d.getColor4(150,100,100,130)},"JSV.api.JSVPanel,JSV.common.JSViewer");c(b,"addListener",function(a){this.listeners.contains(a)||this.listeners.addLast(a)},"JSV.api.PanelListener");c(b,"getCurrentGraphSet",function(){return this.currentGraphSet});c(b,"dispose",function(){this.jsvp=null;for(var a=0;ac&&(e=v(14*c/g),10>e&&(e=10),e=this.getFont(a,c,this.isPrinting||this.getBoolean(JSV.common.ScriptToken.TITLEBOLDON)?1:0,e,!0));this.g2d.setGraphicsColor(a,this.titleColor);this.setCurrentFont(this.g2d.setFont(a,e));this.g2d.drawString(a,f,this.isPrinting? +this.left*this.scalingFactor:5,b-v(e.getHeight()*(this.isPrinting?2:0.5)))},"~O,~N,~N,~S");c(b,"setCurrentFont",function(a){this.currentFont=a},"JU.Font");c(b,"getFontHeight",function(){return this.currentFont.getAscent()});c(b,"getStringWidth",function(a){return this.currentFont.stringWidth(a)},"~S");c(b,"selectFromEntireSet",function(a){for(var b=0,c=0;ba||a==c)&&this.graphSets.get(b).setSelected(e)},"~N");c(b,"addToList",function(a,b){for(var c=0;ca||c==a)&&b.addLast(this.spectra.get(c))},"~N,JU.Lst");c(b,"scaleSelectedBy",function(a){for(var b=this.graphSets.size();0<=--b;)this.graphSets.get(b).scaleSelectedBy(a)},"~N");c(b,"setCurrentGraphSet",function(a,b){var c=1a||a>=this.currentGraphSet.nSpectra)){this.currentSplitPoint= +a;b&&this.setSpectrum(this.currentSplitPoint,1b&&(f=b*f/400):250>b&&(f=b*f/250);b=this.jsvp.getFontFaceID(this.isPrinting?this.printingFontName:this.displayFontName);return this.currentFont=JU.Font.createFont3D(b,c,f,f,this.jsvp.getApiPlatform(),a)},"~O,~N,~N,~N,~B");c(b,"notifySubSpectrumChange", +function(a,b){this.notifyListeners(new JSV.common.SubSpecChangeEvent(a,null==b?null:b.getTitleLabel()))},"~N,JSV.common.Spectrum");c(b,"notifyPeakPickedListeners",function(a){null==a&&(a=new JSV.common.PeakPickEvent(this.jsvp,this.coordClicked,this.getSpectrum().getAssociatedPeakInfo(this.xPixelClicked,this.coordClicked)));this.notifyListeners(a)},"JSV.common.PeakPickEvent");c(b,"notifyListeners",function(a){for(var b=0;bc)return this.jsvp.showMessage("To enable "+a+" first select a spectrum by clicking on it.",""+a),null;var f=this.getSpectrum(),e=this.vwr.getDialog(a,f);null==b&&a===JSV.common.Annotation.AType.Measurements&&(b=new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements,f));null!= +b&&e.setData(b);this.addDialog(c,a,e);e.reEnable();return e},"JSV.common.Annotation.AType");c(b,"printPdf",function(a,b){var c=!b.layout.equals("landscape");this.print(a,c?b.imageableHeight:b.imageableWidth,c?b.imageableWidth:b.imageableHeight,b.imageableX,b.imageableY,b.paperHeight,b.paperWidth,c,0)},"J.api.GenericGraphics,JSV.common.PrintLayout");c(b,"print",function(a,b,c,f,e,g,j,k,l){this.g2d=this.g2d0;if(0==l)return this.isPrinting=!0,l=!1,C(a,"J.api.GenericGraphics")&&(this.g2d=a,a=this.gMain), +this.printGraphPosition.equals("default")?k?(b=450,c=280):(b=280,c=450):this.printGraphPosition.equals("fit to page")?l=!0:k?(b=450,c=280,f=v(v(j-c)/2),e=v(v(g-b)/2)):(b=280,c=450,e=v(v(j-280)/2),f=v(v(g-450)/2)),this.g2d.translateScale(a,f,e,0.1),this.setTaintedAll(),this.drawGraph(a,a,a,v(c),v(b),l),this.isPrinting=!1,0;this.isPrinting=!1;return 1},"~O,~N,~N,~N,~N,~N,~N,~B,~N");f(b,"keyPressed",function(a,b){if(this.isPrinting)return!1;this.checkKeyControl(a,!0);switch(a){case 27:case 127:case 8:return this.escapeKeyPressed(27!= +a),this.isIntegralDrag=!1,this.setTaintedAll(),this.repaint(),!0}var c=0,f=!1;if(0==b)switch(a){case 37:case 39:this.doMouseMoved(39==a?++this.mouseX:--this.mouseX,this.mouseY);this.repaint();f=!0;break;case 33:case 34:c=33==a?JSV.common.GraphSet.RT2:1/JSV.common.GraphSet.RT2;f=!0;break;case 40:case 38:f=40==a?-1:1,null==this.getSpectrumAt(0).getSubSpectra()?this.notifySubSpectrumChange(f,null):(this.advanceSubSpectrum(f),this.setTaintedAll(),this.repaint()),f=!0}else if(this.checkMod(a,2))switch(a){case 40:case 38:case 45:case 61:c= +61==a||38==a?JSV.common.GraphSet.RT2:1/JSV.common.GraphSet.RT2;f=!0;break;case 37:case 39:this.toPeak(39==a?1:-1),f=!0}0!=c&&(this.scaleYBy(c),this.setTaintedAll(),this.repaint());return f},"~N,~N");f(b,"keyReleased",function(a){this.isPrinting||this.checkKeyControl(a,!1)},"~N");f(b,"keyTyped",function(a,b){if(this.isPrinting)return!1;switch(a){case 110:if(0!=b)break;this.normalizeIntegral();return!0;case 26:if(2!=b)break;this.previousView();this.setTaintedAll();this.repaint();return!0;case 25:if(2!= +b)break;this.nextView();this.setTaintedAll();this.repaint();return!0}return!1},"~N,~N");f(b,"mouseAction",function(a,b,c,f,e,g){if(!this.isPrinting)switch(a){case 4:if(!this.checkMod(g,16))break;this.doMousePressed(c,f);break;case 5:this.doMouseReleased(c,f,this.checkMod(g,16));this.setTaintedAll();this.repaint();break;case 1:this.doMouseDragged(c,f);this.repaint();break;case 0:this.jsvp.getFocusNow(!1);if(0!=(g&28)){this.doMouseDragged(c,f);this.repaint();break}this.doMouseMoved(c,f);null!=this.coordStr&& +this.repaint();break;case 2:if(this.checkMod(g,4)){this.jsvp.showMenu(c,f);break}this.ctrlPressed=!1;this.doMouseClicked(c,f,this.updateControlPressed(g))}},"~N,~N,~N,~N,~N,~N");c(b,"checkMod",function(a,b){return(a&b)==b},"~N,~N");c(b,"checkKeyControl",function(a,b){switch(a){case 17:case 157:this.ctrlPressed=b;break;case 16:this.shiftPressed=b}},"~N,~B");c(b,"updateControlPressed",function(a){return this.ctrlPressed=(new Boolean(this.ctrlPressed|(this.checkMod(a,2)||this.checkMod(a,20)))).valueOf()}, +"~N");f(b,"mouseEnterExit",function(a,b,c,f){if(f)this.thisWidget=null,this.isIntegralDrag=!1,this.integralShiftMode=0;else try{this.jsvp.getFocusNow(!1)}catch(e){if(E(e,Exception))System.out.println("pd "+this+" cannot focus");else throw e;}},"~N,~N,~N,~B");c(b,"setSolutionColor",function(a){var b=0<=a.indexOf("none"),c=0>a.indexOf("false");if(0>a.indexOf("all"))b=b?-1:this.vwr.getSolutionColor(c),this.getSpectrum().setFillColor(-1==b?null:this.vwr.parameters.getColor1(b));else{a=JSV.common.JSViewer.getInterface("JSV.common.Visible"); +for(var f=this.graphSets.size();0<=--f;)this.graphSets.get(f).setSolutionColor(a,b,c)}},"~S");c(b,"setIRMode",function(a,b){for(var c=this.graphSets.size();0<=--c;)this.graphSets.get(c).setIRMode(a,b)},"JSV.common.Spectrum.IRMode,~S");c(b,"closeSpectrum",function(){this.vwr.close("views");this.vwr.close(this.getSourceID());this.vwr.execView("*",!0)});b=G(JSV.common.PanelData,"LinkMode",Enum);b.getMode=c(b,"getMode",function(a){if(a.equals("*"))return JSV.common.PanelData.LinkMode.ALL;for(var b,c= +0,f=JSV.common.PanelData.LinkMode.values();cf.length)){this.clear();null!=a&&(this.myParams.peakListInterpolation=a.peakListInterpolation,this.myParams.peakListThreshold=a.peakListThreshold);a=this.myParams.peakListInterpolation.equals("parabolic");var e=this.spec.isInverted();this.minY=c.minYOnScale;this.maxY=c.maxYOnScale;var g=c.minXOnScale; +c=c.maxXOnScale;this.thresh=this.myParams.peakListThreshold;Double.isNaN(this.thresh)&&(this.thresh=this.myParams.peakListThreshold=(this.minY+this.maxY)/2);var j=0,k=R(-1,[f[0].getYVal(),j=f[1].getYVal(),0]),l=0;if(e)for(e=2;ej&&j=g||j<=c))if(j=(new JSV.common.PeakPick).setValue(j,n,this.spec,null,0),this.addLast(j),100==++l)break;j=n}else for(e= +2;ethis.thresh&&(k[(e-2)%3]n)&&(j=a?JSV.common.Coordinate.parabolicInterpolation(f,e-1):f[e-1].getXVal(),j>=g&&j<=c&&(j=(new JSV.common.PeakPick).setValue(j,n,this.spec,JU.DF.formatDecimalDbl(j,b),j),this.addLast(j),100==++l)))break;j=n}}},"JSV.common.Parameters,~N,JSV.common.ScaleData");b.HNMR_HEADER=w(-1,"peak shift/ppm intens shift/hz diff/hz 2-diff 3-diff".split(" "))});n("JSV.common");A(null,"JSV.common.PeakInfo",["JU.PT"],function(){var b=r(function(){this.px1= +this.px0=this.yMax=this.yMin=this.xMax=this.xMin=0;this.atomKey=this._match=this.spectrum=this.id=this.atoms=this.model=this.title=this.filePathForwardSlash=this.file=this.index=this.type2=this.type=this.stringInfo=null;u(this,arguments)},JSV.common,"PeakInfo",null);x(b,function(a){this.stringInfo=a;this.type=JU.PT.getQuotedAttribute(a,"type");null==this.type&&(this.type="");this.type=this.type.toUpperCase();var b=this.type.indexOf("/");this.type2=0>b?"":JSV.common.PeakInfo.fixType(this.type.substring(this.type.indexOf("/")+ +1));this.type=0<=b?JSV.common.PeakInfo.fixType(this.type.substring(0,b))+"/"+this.type2:JSV.common.PeakInfo.fixType(this.type);this.id=JU.PT.getQuotedAttribute(a,"id");this.index=JU.PT.getQuotedAttribute(a,"index");this.file=JU.PT.getQuotedAttribute(a,"file");System.out.println("pi file="+this.file);this.filePathForwardSlash=null==this.file?null:this.file.$replace("\\","/");this.model=JU.PT.getQuotedAttribute(a,"model");a.contains('baseModel=""')||(this.atoms=JU.PT.getQuotedAttribute(a,"atoms")); +this.atomKey=","+this.atoms+",";this.title=JU.PT.getQuotedAttribute(a,"title");this._match=JU.PT.getQuotedAttribute(a,"_match");this.xMax=JU.PT.parseFloat(JU.PT.getQuotedAttribute(a,"xMax"));this.xMin=JU.PT.parseFloat(JU.PT.getQuotedAttribute(a,"xMin"));this.yMax=JU.PT.parseFloat(JU.PT.getQuotedAttribute(a,"yMax"));this.yMin=JU.PT.parseFloat(JU.PT.getQuotedAttribute(a,"yMin"))},"~S");c(b,"isClearAll",function(){return null==this.spectrum});c(b,"getType",function(){return this.type});c(b,"getAtoms", +function(){return this.atoms});c(b,"getXMax",function(){return this.xMax});c(b,"getXMin",function(){return this.xMin});c(b,"getYMin",function(){return this.yMin});c(b,"getYMax",function(){return this.yMax});c(b,"getX",function(){return(this.xMax+this.xMin)/2});c(b,"getMatch",function(){return this._match});b.fixType=c(b,"fixType",function(a){return a.equals("HNMR")?"1HNMR":a.equals("CNMR")?"13CNMR":a},"~S");f(b,"toString",function(){return this.stringInfo});c(b,"getIndex",function(){return this.index}); +c(b,"getTitle",function(){return this.title});c(b,"checkFileIndex",function(a,b,c){return null!=c?0<=this.atomKey.indexOf(c):b.equals(this.index)&&(a.equals(this.file)||a.equals(this.filePathForwardSlash))},"~S,~S,~S");c(b,"checkFileTypeModel",function(a,b,c){return a.equals(this.file)&&this.checkModel(c)&&this.type.endsWith(b)},"~S,~S,~S");c(b,"checkTypeModel",function(a,b){return this.checkType(a)&&this.checkModel(b)},"~S,~S");c(b,"checkModel",function(a){return null!=a&&a.equals(this.model)},"~S"); +c(b,"checkType",function(a){return a.endsWith(this.type)},"~S");c(b,"checkTypeMatch",function(a){return this.checkType(a.type)&&(this.checkId(a._match)||this.checkModel(a._match)||0<=this.title.toUpperCase().indexOf(a._match))},"JSV.common.PeakInfo");c(b,"checkId",function(a){return null==a?!1:null!=this.id&&a.toUpperCase().startsWith("ID=")&&a.substring(3).equals(this.id)||(a=a.toUpperCase()).startsWith("INDEX=")&&a.equals("INDEX="+this.index)||a.startsWith("#=")&&a.equals("#="+this.index)},"~S"); +c(b,"getModel",function(){return this.model});c(b,"getFilePath",function(){return this.file});c(b,"autoSelectOnLoad",function(){return this.type.startsWith("GC")});c(b,"setPixelRange",function(a,b){this.px0=a;this.px1=b},"~N,~N");c(b,"checkRange",function(a,b){return(2147483647!=a?this.px0<=a&&this.px1>=a:b>=this.xMin&&b<=this.xMax)?Math.abs(b-this.getX()):1E100},"~N,~N");c(b,"getXPixel",function(){return v((this.px0+this.px1)/2)});b.nullPeakInfo=null});n("JSV.common");A(["JSV.common.Measurement"], +"JSV.common.PeakPick",null,function(){var b=G(JSV.common,"PeakPick",JSV.common.Measurement);c(b,"setValue",function(a,b,c,f,e){null==f?(this.set(a,b),this.setPt2(c,!1)):(this.setA(a,b,c,f,!1,!1,0,6),this.value=e,this.setPt2(this.getXVal(),this.getYVal()));return this},"~N,~N,JSV.common.Spectrum,~S,~N")});n("JSV.common");A(["java.util.EventObject"],"JSV.common.PeakPickEvent",null,function(){var b=r(function(){this.peakInfo=this.coord=null;u(this,arguments)},JSV.common,"PeakPickEvent",java.util.EventObject); +x(b,function(a,b,c){I(this,JSV.common.PeakPickEvent,[a]);this.coord=b;this.peakInfo=null==c?null:c},"~O,JSV.common.Coordinate,JSV.common.PeakInfo");c(b,"getCoord",function(){return this.coord});c(b,"getPeakInfo",function(){return this.peakInfo});f(b,"toString",function(){return null==this.peakInfo?null:this.peakInfo.toString()})});n("JSV.common");A(["JSV.common.Coordinate","$.ScriptToken"],"JSV.common.PlotWidget",null,function(){var b=r(function(){this.yPixel1=this.xPixel1=this.yPixel0=this.xPixel0= +0;this.is2Donly=this.is2D=this.isXtype=this.isPinOrCursor=this.isPin=!1;this.isEnabled=!0;this.isVisible=!1;this.color=this.name=null;u(this,arguments)},JSV.common,"PlotWidget",JSV.common.Coordinate);N(b,function(){this.color=JSV.common.ScriptToken.PLOTCOLOR});x(b,function(a){I(this,JSV.common.PlotWidget,[]);this.name=a;this.isPin="p"==a.charAt(0);this.isPinOrCursor="z"!=a.charAt(0);this.isXtype=0<=a.indexOf("x");this.is2Donly=(this.is2D=0<=a.indexOf("2D"))&&"p"==a.charAt(0)},"~S");f(b,"toString", +function(){return this.name+(!this.isPinOrCursor?""+this.xPixel0+" "+this.yPixel0+" / "+this.xPixel1+" "+this.yPixel1:" x="+this.getXVal()+"/"+this.xPixel0+" y="+this.getYVal()+"/"+this.yPixel0)});c(b,"selected",function(a,b){return this.isVisible&&5>Math.abs(a-this.xPixel0)&&5>Math.abs(b-this.yPixel0)},"~N,~N");c(b,"setX",function(a,b){this.setXVal(a);this.xPixel0=this.xPixel1=b},"~N,~N");c(b,"setY",function(a,b){this.setYVal(a);this.yPixel0=this.yPixel1=b},"~N,~N");c(b,"getValue",function(){return this.isXtype? +this.getXVal():this.getYVal()});c(b,"setEnabled",function(a){this.isEnabled=a},"~B")});n("JSV.common");var bb=r(function(){this.imageableWidth=this.imageableHeight=this.paperWidth=this.paperHeight=this.imageableY=this.imageableX=0;this.layout="landscape";this.position="fit to page";this.showTitle=this.showYScale=this.showXScale=this.showGrid=!0;this.font="Helvetica";this.paper=null;this.asPDF=!0;this.date=this.title=null;u(this,arguments)},JSV.common,"PrintLayout",null);N(bb,function(){this.paperHeight= +F(72*Math.min(11,11.69));this.paperWidth=F(72*Math.min(8.5,8.27));this.imageableHeight=this.paperHeight;this.imageableWidth=this.paperWidth});x(bb,function(b){null!=b&&(this.asPDF=!0,b.setDefaultPrintOptions(this))},"JSV.common.PanelData");n("JSV.common");A(null,"JSV.common.RepaintManager",["JSV.common.JSViewer"],function(){var b=r(function(){this.repaintPending=!1;this.vwr=null;u(this,arguments)},JSV.common,"RepaintManager",null);x(b,function(a){this.vwr=a},"JSV.common.JSViewer");c(b,"refresh",function(){if(this.repaintPending)return!1; +this.repaintPending=!0;var a=this.vwr.html5Applet,b=JSV.common.JSViewer.isJS&&!JSV.common.JSViewer.isSwingJS?JSV.common.JSViewer.jmolObject:null;null==b?this.vwr.selectedPanel.repaint():(b.repaint(a,!1),this.repaintDone());return!0});c(b,"repaintDone",function(){this.repaintPending=!1;this.notify()})});n("JSV.common");A(null,"JSV.common.ScaleData",["JSV.common.Coordinate"],function(){var b=r(function(){this.maxX=this.minX=this.pointCount=this.endDataPointIndex=this.startDataPointIndex=this.initMaxY= +this.initMinY=this.initMaxYOnScale=this.initMinYOnScale=0;this.firstX=NaN;this.specShift=this.maxXOnScale=this.minXOnScale=0;this.minorTickCounts=this.steps=this.exportPrecision=this.precision=null;this.maxY=this.minY=this.maxYOnScale=this.minYOnScale=0;this.isShiftZoomedY=!1;this.spectrumScaleFactor=1;this.spectrumYRef=0;this.userYFactor=1;this.yFactorForScale=this.xFactorForScale=this.maxY2D=this.minY2D=this.firstY=0;u(this,arguments)},JSV.common,"ScaleData",null);N(b,function(){this.precision= +D(2,0);this.exportPrecision=D(2,0);this.steps=R(2,0);this.minorTickCounts=D(2,0)});x(b,function(){});x(b,function(a,b){this.startDataPointIndex=a;this.endDataPointIndex=b;this.pointCount=this.endDataPointIndex-this.startDataPointIndex+1},"~N,~N");x(b,function(a,b,c,f,e){this.minX=JSV.common.Coordinate.getMinX(a,b,c);this.maxX=JSV.common.Coordinate.getMaxX(a,b,c);this.minY=JSV.common.Coordinate.getMinY(a,b,c);0this.spectrumYRef});c(b, +"setYScale",function(a,b,c,f){0==a&&0==b&&(b=1);this.isShiftZoomedY&&(a=this.minYOnScale,b=this.maxYOnScale);var e=this.setScaleParams(a,b,1),g=f?e/2:e/4;f=f?e/4:e/2;this.isShiftZoomedY||(this.minYOnScale=0==a?0:c?g*Math.floor(a/g):a,this.maxYOnScale=c?f*Math.ceil(1.05*b/f):b);this.firstY=0==a?0:Math.floor(a/g)*g;if(0>this.minYOnScale&&0this.minYOnScale;)this.firstY-=e;else 0!=this.minYOnScale&&1E-4=c){j[a]=l;n=1;break}for(;++l<=g&&b[l].getXVal()<=f;)n++; +k[a]=j[a]+n-1;return n},"~N,~A,~N,~N,~N,~N,~A,~A");c(b,"setScaleParams",function(a,b,c){a=b==a?1:Math.abs(b-a)/14;var f=Math.log10(Math.abs(a));b=v(Math.floor(f));this.exportPrecision[c]=b;this.precision[c]=0>=b?Math.min(8,1-b):3JSV.common.ScaleData.NTICKS[a];)a++;this.steps[c]=Math.pow(10,b)*JSV.common.ScaleData.NTICKS[a];f=Math.log10(Math.abs(100010*this.steps[c]));b=f-Math.floor(f);for(a=f=0;aMath.abs(b-JSV.common.ScaleData.LOGTICKS[a])){f= +JSV.common.ScaleData.NTICKS[a];break}this.minorTickCounts[c]=f;return this.steps[c]},"~N,~N,~N");c(b,"isInRangeX",function(a){return a>=this.minX&&a<=this.maxX},"~N");c(b,"addSpecShift",function(a){this.specShift+=a;this.minX+=a;this.maxX+=a;this.minXOnScale+=a;this.maxXOnScale+=a;this.firstX+=a},"~N");c(b,"getInfo",function(a){a.put("specShift",Double.$valueOf(this.specShift));a.put("minX",Double.$valueOf(this.minX));a.put("maxX",Double.$valueOf(this.maxX));a.put("minXOnScale",Double.$valueOf(this.minXOnScale)); +a.put("maxXOnScale",Double.$valueOf(this.maxXOnScale));a.put("minY",Double.$valueOf(this.minY));a.put("maxY",Double.$valueOf(this.maxY));a.put("minYOnScale",Double.$valueOf(this.minYOnScale));a.put("maxYOnScale",Double.$valueOf(this.maxYOnScale));a.put("minorTickCountX",Integer.$valueOf(this.minorTickCounts[0]));a.put("xStep",Double.$valueOf(this.steps[0]));return a},"java.util.Map");c(b,"setMinMax",function(a,b,c,f){this.minX=a;this.maxX=b;this.minY=c;this.maxY=f},"~N,~N,~N,~N");c(b,"toX",function(a, +b,c){return this.toXScaled(a,b,c,this.xFactorForScale)},"~N,~N,~B");c(b,"toX0",function(a,b,c,f){return this.toXScaled(a,c,f,(this.maxXOnScale-this.minXOnScale)/(c-b))},"~N,~N,~N,~B");c(b,"toXScaled",function(a,b,c,f){return c?this.maxXOnScale-(b-a)*f:this.minXOnScale+(b-a)*f},"~N,~N,~B,~N");c(b,"toPixelX",function(a,b,c,f){return this.toPixelXScaled(a,b,c,f,this.xFactorForScale)},"~N,~N,~N,~B");c(b,"toPixelX0",function(a,b,c,f){return this.toPixelXScaled(a,b,c,f,(this.maxXOnScale-this.minXOnScale)/ +(c-b))},"~N,~N,~N,~B");c(b,"toPixelXScaled",function(a,b,c,f,e){a=v((a-this.minXOnScale)/e);return f?b+a:c-a},"~N,~N,~N,~B,~N");c(b,"toY",function(a,b){return this.maxYOnScale+(b-a)*this.yFactorForScale},"~N,~N");c(b,"toY0",function(a,b,c){return Math.max(this.minYOnScale,Math.min(this.maxYOnScale+(b-a)*((this.maxYOnScale-this.minYOnScale)/(c-b)),this.maxYOnScale))},"~N,~N,~N");c(b,"toPixelY",function(a,b){return Double.isNaN(a)?-2147483648:b-v(((a-this.spectrumYRef)*this.userYFactor+this.spectrumYRef- +this.minYOnScale)/this.yFactorForScale)},"~N,~N");c(b,"toPixelY0",function(a,b,c){return v(b+(this.maxYOnScale-a)/((this.maxYOnScale-this.minYOnScale)/(c-b)))},"~N,~N,~N");c(b,"setXYScale",function(a,b,c){var f=this.spectrumYRef,e=this.spectrumScaleFactor,g=1!=e||this.isShiftZoomedY,j=g?this.initMinYOnScale:this.minY,k=g?this.initMaxYOnScale:this.maxY;g&&fk&&(f=k);this.setYScale((j-f)/e+f,(k-f)/e+f,1==e,c);this.xFactorForScale=(this.maxXOnScale-this.minXOnScale)/(a-1);this.yFactorForScale= +(this.maxYOnScale-this.minYOnScale)/(b-1)},"~N,~N,~B");b.copyScaleFactors=c(b,"copyScaleFactors",function(a,b){for(var c=0;c=f&&j++}return j==k},"JU.Lst,~N,~N,~N,~A,~A");b.fixScale=c(b,"fixScale",function(a){if(!a.isEmpty())for(;;){for(var b,c=a.entrySet().iterator();c.hasNext()&& +((b=c.next())||1);){var f=b.getValue(),e=f.indexOf("E");0<=e&&(f=f.substring(0,e));if(0>f.indexOf(".")||!f.endsWith("0")&&!f.endsWith("."))return}for(c=a.entrySet().iterator();c.hasNext()&&((b=c.next())||1);)f=b.getValue(),e=f.indexOf("E"),0<=e?b.setValue(f.substring(0,e-1)+f.substring(e)):b.setValue(f.substring(0,f.length-1))}},"java.util.Map");c(b,"scaleBy",function(a){if(this.isShiftZoomedY){var b=this.isYZeroOnScale()?this.spectrumYRef:(this.minYOnScale+this.maxYOnScale)/2;this.minYOnScale=b- +(b-this.minYOnScale)/a;this.maxYOnScale=b-(b-this.maxYOnScale)/a}else this.spectrumScaleFactor*=a},"~N");b.NTICKS=D(-1,[2,5,10,10]);b.LOGTICKS=R(-1,[Math.log10(2),Math.log10(5),0,1])});n("JSV.common");A(["java.lang.Enum"],"JSV.common.ScriptToken",["java.util.Hashtable","JU.Lst","$.PT","$.SB","JSV.common.ScriptTokenizer"],function(){var b=r(function(){this.description=this.tip=null;u(this,arguments)},JSV.common,"ScriptToken",Enum);c(b,"getTip",function(){return" "+("T"===this.tip?"TRUE/FALSE/TOGGLE": +"TF"===this.tip?"TRUE or FALSE":"C"===this.tip?"COLOR":this.tip)});x(b,function(){});x(b,function(a){this.tip=a;this.description=""},"~S");x(b,function(a,b){this.tip=a;this.description="-- "+b},"~S,~S");b.getParams=c(b,"getParams",function(){if(null==JSV.common.ScriptToken.htParams){JSV.common.ScriptToken.htParams=new java.util.Hashtable;for(var a,b=0,c=JSV.common.ScriptToken.values();bb?"":a.substring(b).trim()},"~S");b.getKey=c(b,"getKey",function(a){var b=a.nextToken();if(b.startsWith("#")||b.startsWith("//"))return null;b.equalsIgnoreCase("SET")&& +(b=a.nextToken());return b.toUpperCase()},"JSV.common.ScriptTokenizer");b.getTokens=c(b,"getTokens",function(a){a.startsWith("'")&&a.endsWith("'")&&(a='"'+JU.PT.trim(a,"'")+'"');var b=new JU.Lst;for(a=new JSV.common.ScriptTokenizer(a,!1);a.hasMoreTokens();){var c=JSV.common.ScriptTokenizer.nextStringToken(a,!1);if(c.startsWith("//")||c.startsWith("#"))break;b.addLast(c)}return b},"~S");b.getNameList=c(b,"getNameList",function(a){if(0==a.size())return"";for(var b=new JU.SB,c=0;cl&&(e=k,k=l,l=e));a=a.get(0).isInverted();for(e=0;e=c){this.scaleData[a%this.scaleData.length].startDataPointIndex=j;break}for(;j<=g&&!(e=b[j].getXVal(),k++,e>=f);j++);this.scaleData[a%this.scaleData.length].endDataPointIndex= +j;return k},"~N,~A,~N,~N,~N,~N");c(b,"getStartingPointIndex",function(a){return this.scaleData[a%this.scaleData.length].startDataPointIndex},"~N");c(b,"getEndingPointIndex",function(a){return this.scaleData[a%this.scaleData.length].endDataPointIndex},"~N");c(b,"areYScalesSame",function(a,b){a%=this.scaleData.length;b%=this.scaleData.length;return this.scaleData[a].minYOnScale==this.scaleData[b].minYOnScale&&this.scaleData[a].maxYOnScale==this.scaleData[b].maxYOnScale},"~N,~N");c(b,"setScale",function(a, +b,c,f){this.iThisScale=a%this.scaleData.length;this.thisScale=this.scaleData[this.iThisScale];this.thisScale.setXYScale(b,c,f)},"~N,~N,~N,~B");c(b,"resetScaleFactors",function(){for(var a=0;a=b||a>=this.nSpectra))if(-2==a)this.thisScale.scale2D(b);else if(0>a)for(a=0;aa?2:-2)},"~N");c(b,"checkVisible", +function(){return this.vwr.pd().getShowAnnotation(this.type)});c(b,"getUnitOptions",function(){var a=this.optionKey+"_format";null==this.options.get(a)&&this.options.put(a,Integer.$valueOf(this.formatOptions[null==this.unitPtr?0:this.unitPtr.intValue()]))});c(b,"eventFocus",function(){null!=this.$spec&&this.jsvp.getPanelData().jumpToSpectrum(this.$spec);switch(this.type){case JSV.common.Annotation.AType.Integration:0<=this.iRowSelected&&(this.iRowSelected++,this.tableCellSelect(-1,-1));break;case JSV.common.Annotation.AType.PeakList:this.createData(), +this.skipCreate=!0}});c(b,"eventApply",function(){switch(this.type){case JSV.common.Annotation.AType.PeakList:this.createData(),this.skipCreate=!0}this.applyFromFields()});c(b,"eventShowHide",function(a){(this.isON=a)&&this.eventApply();this.jsvp.doRepaint(!0);this.checkEnables()},"~B");c(b,"clear",function(){this.setState(!0);null!=this.xyData&&(this.xyData.clear(),this.applyFromFields())});c(b,"paramsReEnable",function(){switch(this.type){case JSV.common.Annotation.AType.PeakList:this.skipCreate= +!0}this.setVisible(!0);this.isON=!0;this.applyFromFields()});c(b,"tableCellSelect",function(a,b){System.out.println(a+" jSVDial "+b);0>a&&(a=v(this.iRowColSelected/1E3),b=this.iRowColSelected%1E3,this.iRowColSelected=-1);var c=this.tableData[a][1],f=1E3*a+b;if(f!=this.iRowColSelected){this.iRowColSelected=f;System.out.println("Setting rc = "+this.iRowColSelected+" "+this.$spec);this.selectTableRow(this.iRowSelected);try{switch(this.type){case JSV.common.Annotation.AType.Integration:this.callback("SHOWSELECTION", +c.toString());this.checkEnables();break;case JSV.common.Annotation.AType.PeakList:try{switch(b){case 6:case 5:case 4:var e=Double.parseDouble(c),g=Double.parseDouble(this.tableData[a+3-b][1]);this.jsvp.getPanelData().setXPointers(this.$spec,e,this.$spec,g);break;default:this.jsvp.getPanelData().findX(this.$spec,Double.parseDouble(c))}}catch(j){if(E(j,Exception))this.jsvp.getPanelData().findX(this.$spec,1E100);else throw j;}this.jsvp.doRepaint(!1);break;case JSV.common.Annotation.AType.OverlayLegend:this.jsvp.getPanelData().setSpectrum(a, +!1)}}catch(k){if(!E(k,Exception))throw k;}}},"~N,~N");c(b,"loadData",function(){var a,b,c;switch(this.type){case JSV.common.Annotation.AType.Integration:null==this.xyData&&this.createData();this.iSelected=-1;a=this.xyData.getMeasurementListArray(null);b=this.xyData.getDataHeader();c=D(-1,[40,65,65,50]);this.createTable(a,b,c);break;case JSV.common.Annotation.AType.Measurements:if(null==this.xyData)break;a=this.xyData.getMeasurementListArray(this.dialog.getSelectedItem(this.combo1).toString());b=this.xyData.getDataHeader(); +c=D(-1,[40,65,65,50]);this.createTable(a,b,c);break;case JSV.common.Annotation.AType.PeakList:null==this.xyData&&this.createData();a=this.xyData.getMeasurementListArray(null);b=this.xyData.getDataHeader();c=D(-1,[40,65,50,50,50,50,50]);this.createTable(a,b,c);this.setTableSelectionEnabled(!0);break;case JSV.common.Annotation.AType.OverlayLegend:b=w(-1,["No.","Plot Color","Title"]),a=this.vwr.selectedPanel.getPanelData().getOverlayLegendData(),c=D(-1,[30,60,250]),this.createTable(a,b,c),this.setTableSelectionEnabled(!0)}}); +c(b,"createData",function(){switch(this.type){case JSV.common.Annotation.AType.Integration:this.xyData=new JSV.common.IntegralData(this.$spec,this.myParams);this.iSelected=-1;break;case JSV.common.Annotation.AType.PeakList:try{var a=Double.parseDouble(this.dialog.getText(this.txt1));this.myParams.peakListThreshold=a;this.myParams.peakListInterpolation=this.dialog.getSelectedItem(this.combo1).toString();this.myParams.precision=this.precision;var b=new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, +this.$spec);b.setPeakList(this.myParams,this.precision,this.jsvp.getPanelData().getView());this.xyData=b;this.loadData()}catch(c){if(!E(c,Exception))throw c;}}});c(b,"setPrecision",function(a){this.precision=this.formatOptions[a]},"~N");c(b,"tableSelect",function(a){if("true".equals(this.getField(a,"adjusting")))this.iColSelected=this.iRowSelected=-1,System.out.println("adjusting"+a);else{var b=JU.PT.parseInt(this.getField(a,"index"));switch("ROW COL ROWCOL".indexOf(this.getField(a,"selector"))){case 8:this.iColSelected= +JU.PT.parseInt(this.getField(a,"index2"));case 0:this.iRowSelected=b;System.out.println("r set to "+b);break;case 4:this.iColSelected=b,System.out.println("c set to "+b)}0<=this.iColSelected&&0<=this.iRowSelected&&this.tableCellSelect(this.iRowSelected,this.iColSelected)}},"~S");c(b,"getField",function(a,b){a+="&";var c="&"+b+"=",f=a.indexOf(c);return 0>f?null:a.substring(f+c.length,a.indexOf("&",f+1))},"~S,~S")});n("JSV.exception");A(["java.lang.Exception"],"JSV.exception.JSVException",null,function(){G(JSV.exception, +"JSVException",Exception)});n("JSV.js2d");var $=G(JSV.js2d,"Display",null);$.getFullScreenDimensions=c($,"getFullScreenDimensions",function(b,a){a[0]=b.width;a[1]=b.height},"~O,~A");$.hasFocus=c($,"hasFocus",function(){return!0},"~O");$.requestFocusInWindow=c($,"requestFocusInWindow",function(){},"~O");$.repaint=c($,"repaint",function(){},"~O");$.renderScreenImage=c($,"renderScreenImage",function(){},"J.api.PlatformViewer,~O,~O");$.setTransparentCursor=c($,"setTransparentCursor",function(){},"~O"); +$.setCursor=c($,"setCursor",function(){},"~N,~O");$.prompt=c($,"prompt",function(b,a){var c=prompt(b,a);return null!=c?c:"null"},"~S,~S,~A,~B");$.convertPointFromScreen=c($,"convertPointFromScreen",function(){},"~O,JU.P3");n("JSV.js2d");var X=G(JSV.js2d,"Image",null);X.getWidth=c(X,"getWidth",function(b){return b.imageWidth?b.imageWidth:b.width},"~O");X.getHeight=c(X,"getHeight",function(b){return b.imageHeight?b.imageHeight:b.height},"~O");X.grabPixels=c(X,"grabPixels",function(b,a,c){var f=null; +if(b._buf32)return b._buf32;f=b.getImageData(0,0,a,c).data;return JSV.js2d.Image.toIntARGB(f)},"~O,~N,~N");X.toIntARGB=c(X,"toIntARGB",function(b){for(var a=v(b.length/4),c=D(a,0),f=0,q=0;f>2,f=0,q=0;f>16&255,a[q++]=b[f]>>8&255,a[q++]=b[f]&255,a[q++]=255},"~A,~A");X.getTextPixels=c(X,"getTextPixels",function(b,a,c,f,q,e){c.fillStyle="#000000";c.fillRect(0, +0,f,q);c.fillStyle="#FFFFFF";c.font=a.font;c.fillText(b,0,e);return JSV.js2d.Image.grabPixels(c,f,q)},"~S,JU.Font,~O,~N,~N,~N");X.allocateRgbImage=c(X,"allocateRgbImage",function(b,a,c,f,q,e){null==e&&(e={width:b,height:a});e.buf32=c},"~N,~N,~A,~N,~B,~O");X.getStaticGraphics=c(X,"getStaticGraphics",function(b){return JSV.js2d.Image.getGraphics(b)},"~O,~B");X.getGraphics=c(X,"getGraphics",function(b){return b.getContext("2d")},"~O");X.drawImage=c(X,"drawImage",function(b,a,c,f){this.fromIntARGB(a.buf32, +a.buf8);b.putImageData(a.imgdata,c,f)},"~O,~O,~N,~N,~N,~N");n("JSV.js2d");A(["J.api.GenericFileInterface"],"JSV.js2d.JsFile",["JU.PT","JSV.common.JSVFileManager"],function(){var b=r(function(){this.fullName=this.name=null;u(this,arguments)},JSV.js2d,"JsFile",null,J.api.GenericFileInterface);x(b,function(a){this.name=a.$replace("\\","/");this.fullName=a;!this.fullName.startsWith("/")&&0>JSV.common.JSVFileManager.urlTypeIndex(a)&&(this.fullName=JSV.common.JSVFileManager.jsDocumentBase+"/"+this.fullName); +this.fullName=JU.PT.rep(this.fullName,"/./","/");a.substring(a.lastIndexOf("/")+1)},"~S");b.newFile=c(b,"newFile",function(a){return new JSV.js2d.JsFile(a)},"~S");f(b,"getParentAsFile",function(){var a=this.fullName.lastIndexOf("/");return 0>a?null:new JSV.js2d.JsFile(this.fullName.substring(0,a))});f(b,"getFullPath",function(){return this.fullName});f(b,"getName",function(){return this.name});f(b,"isDirectory",function(){return this.fullName.endsWith("/")});f(b,"length",function(){return 0});b.getURLContents= +c(b,"getURLContents",function(a,b,c){try{var f=a.openConnection();null!=b?f.outputBytes(b):null!=c&&f.outputString(c);return f.getContents()}catch(e){if(E(e,Exception))return e.toString();throw e;}},"java.net.URL,~A,~S")});n("JSV.js2d");A(["JSV.api.JSVFileHelper"],"JSV.js2d.JsFileHelper",["JU.PT","JSV.common.JSViewer","JSV.js2d.JsFile"],function(){var b=r(function(){this.vwr=null;u(this,arguments)},JSV.js2d,"JsFileHelper",null,JSV.api.JSVFileHelper);f(b,"set",function(a){this.vwr=a;return this},"JSV.common.JSViewer"); +f(b,"getFile",function(a){var b=null;a=JU.PT.rep(a,"=","_");b=prompt("Enter a file name:",a);return null==b?null:new JSV.js2d.JsFile(b)},"~S,~O,~B");f(b,"setDirLastExported",function(a){return a},"~S");f(b,"setFileChooser",function(){},"JSV.common.ExportType");f(b,"showFileOpenDialog",function(a,b){JSV.common.JSViewer.jmolObject.loadFileAsynchronously(this,this.vwr.html5Applet,"?",b);return null},"~O,~A");c(b,"setData",function(a,b,c){if(null!=a)if(null==b)this.vwr.selectedPanel.showMessage(a,"File Open Error"); +else{var f=null==c?null:"",e=!1,e=c[0],f=c[1];this.vwr.si.siOpenDataOrFile(String.instantialize(b),"cache://"+a,null,null,-1,-1,e,null,null);null!=f&&this.vwr.runScript(f)}},"~S,~O,~A");f(b,"getUrlFromDialog",function(a,b){return prompt(a,b)},"~S,~S")});n("JSV.js2d");var la=G(JSV.js2d,"JsFont",null);la.newFont=c(la,"newFont",function(b,a,c,f,q){b=b.equals("Monospaced")?"Courier":b.startsWith("Sans")?"Sans-Serif":"Serif";return(a?"bold ":"")+(c?"italic ":"")+f+q+" "+b},"~S,~B,~B,~N,~S");la.getFontMetrics= +c(la,"getFontMetrics",function(b,a){a.font!=b.font&&(a.font=b.font,b.font=a.font,a._fontAscent=Math.ceil(b.fontSize),a._fontDescent=Math.ceil(0.25*b.fontSize));return a},"JU.Font,~O");la.getAscent=c(la,"getAscent",function(b){return Math.ceil(b._fontAscent)},"~O");la.getDescent=c(la,"getDescent",function(b){return Math.ceil(b._fontDescent)},"~O");la.stringWidth=c(la,"stringWidth",function(b,a){b.fontMetrics.font=b.font;return Math.ceil(b.fontMetrics.measureText(a).width)},"JU.Font,~S");n("JSV.js2d"); +A(["J.api.GenericGraphics"],"JSV.js2d.JsG2D",["JU.CU","JSV.common.JSViewer","JS.Color"],function(){var b=r(function(){this.windowHeight=this.windowWidth=0;this.inPath=this.isShifted=!1;u(this,arguments)},JSV.js2d,"JsG2D",null,J.api.GenericGraphics);f(b,"getColor4",function(a,b,c,f){return JS.Color.get4(a,b,c,f)},"~N,~N,~N,~N");f(b,"getColor3",function(a,b,c){return JS.Color.get3(a,b,c)},"~N,~N,~N");f(b,"getColor1",function(a){return JS.Color.get1(a)},"~N");f(b,"newGrayScaleImage",function(a,b,c,f, +e){return JSV.common.JSViewer.jmolObject.newGrayScaleImage(a,b,c,f,e)},"~O,~O,~N,~N,~A");f(b,"drawGrayScaleImage",function(a,b,c,f,e,g,j,k,l,n){a=e-c+1;g=g-f+1;l=l-j+1;n=n-k+1;e=b.w*a/l;var m=b.h*g/n;b.width=e;b.height=m;var p=b.div;b=b.layer;b.style.left=c+"px";b.style.top=f+"px";b.style.width=a+"px";b.style.height=g+"px";p.style.left=-j*a/l+"px";p.style.top=-k*g/n+"px";p.style.width=e+"px";p.style.height=m+"px"},"~O,~O,~N,~N,~N,~N,~N,~N,~N,~N");f(b,"drawLine",function(a,b,c,f,e){var g=this.inPath; +g||a.beginPath();a.moveTo(b,c);a.lineTo(f,e);g||a.stroke()},"~O,~N,~N,~N,~N");f(b,"drawCircle",function(a,b,c,f){f/=2;a.beginPath();a.arc(b+f,c+f,f,0,2*Math.PI,!1);a.stroke()},"~O,~N,~N,~N");f(b,"drawPolygon",function(a,b,c,f){this.doPoly(a,b,c,f,!1)},"~O,~A,~A,~N");c(b,"doPoly",function(a,b,c,f,e){a.beginPath();a.moveTo(b[0],c[0]);for(var g=1;g":""+this.pd.getSpectrumAt(0)});f(b,"processMouseEvent",function(a,b,c,f,e){return null!=this.mouse&&this.mouse.processEvent(a,b,c,f,e)},"~N,~N,~N,~N,~N");f(b,"processTwoPointGesture",function(a){null!=this.mouse&&this.mouse.processTwoPointGesture(a)},"~A");f(b,"processKeyEvent",function(a){null!=this.mouse&&this.mouse.processKeyEvent(a)},"~O");f(b,"showMenu",function(a,b){this.vwr.showMenu(a, +b)},"~N,~N")});n("JSV.js2d");A(["JSV.common.ColorParameters"],"JSV.js2d.JsParameters",["JS.Color"],function(){var b=G(JSV.js2d,"JsParameters",JSV.common.ColorParameters);x(b,function(){I(this,JSV.js2d.JsParameters,[])});f(b,"isValidFontName",function(){return!0},"~S");f(b,"getColor1",function(a){return JS.Color.get1(a)},"~N");f(b,"getColor3",function(a,b,c){return JS.Color.get3(a,b,c)},"~N,~N,~N");c(b,"copy",function(a){return(new JSV.js2d.JsParameters).setName(a).setElementColors(this)},"~S")}); +n("JSV.js2d");A(["J.api.GenericPlatform"],"JSV.js2d.JsPlatform","java.net.URL JU.AjaxURLStreamHandlerFactory $.Rdr JSV.app.GenericMouse JSV.js2d.Display $.Image $.JsFile $.JsFont".split(" "),function(){var b=r(function(){this.context=this.viewer=this.canvas=null;u(this,arguments)},JSV.js2d,"JsPlatform",null,J.api.GenericPlatform);f(b,"setViewer",function(a,b){var c="";this.viewer=a;this.canvas=b;null!=b&&(c=b.getContext("2d"),b.imgdata=c.getImageData(0,0,b.width,b.height),b.buf8=b.imgdata.data);""!== +c&&(this.context=c);try{java.net.URL.setURLStreamHandlerFactory(new JU.AjaxURLStreamHandlerFactory)}catch(f){}},"J.api.PlatformViewer,~O");f(b,"isSingleThreaded",function(){return!0});f(b,"getJsObjectInfo",function(a,b,c){return null==b?null:"localName"==b?a[0].nodeName:null==c?a[0][b]:a[0][b](c[0])},"~A,~S,~A");f(b,"isHeadless",function(){return!1});f(b,"getMouseManager",function(a,b){return new JSV.app.GenericMouse(b)},"~N,~O");f(b,"convertPointFromScreen",function(a,b){JSV.js2d.Display.convertPointFromScreen(a, +b)},"~O,JU.P3");f(b,"getFullScreenDimensions",function(a,b){JSV.js2d.Display.getFullScreenDimensions(a,b)},"~O,~A");f(b,"getMenuPopup",function(){return null},"~S,~S");f(b,"hasFocus",function(a){return JSV.js2d.Display.hasFocus(a)},"~O");f(b,"prompt",function(a,b,c,f){return JSV.js2d.Display.prompt(a,b,c,f)},"~S,~S,~A,~B");f(b,"renderScreenImage",function(a,b){JSV.js2d.Display.renderScreenImage(this.viewer,a,b)},"~O,~O");f(b,"drawImage",function(a,b,c,f,e,g){JSV.js2d.Image.drawImage(a,b,c,f,e,g)}, +"~O,~O,~N,~N,~N,~N,~B");f(b,"requestFocusInWindow",function(a){JSV.js2d.Display.requestFocusInWindow(a)},"~O");f(b,"repaint",function(a){JSV.js2d.Display.repaint(a)},"~O");f(b,"setTransparentCursor",function(a){JSV.js2d.Display.setTransparentCursor(a)},"~O");f(b,"setCursor",function(a,b){JSV.js2d.Display.setCursor(a,b)},"~N,~O");f(b,"allocateRgbImage",function(a,b,c,f,e,g){return JSV.js2d.Image.allocateRgbImage(a,b,c,f,e,g?null:this.canvas)},"~N,~N,~A,~N,~B,~B");f(b,"notifyEndOfRendering",function(){}); +f(b,"createImage",function(){return null},"~O");f(b,"disposeGraphics",function(){},"~O");f(b,"grabPixels",function(a,b,c){a.image&&(b!=a.width||c!=a.height)&&Jmol._setCanvasImage(a,b,c);if(a.buf32)return a.buf32;b=JSV.js2d.Image.grabPixels(JSV.js2d.Image.getGraphics(a),b,c);return a.buf32=b},"~O,~N,~N,~A");f(b,"drawImageToBuffer",function(a,b,c,f,e){return this.grabPixels(c,f,e,null)},"~O,~O,~O,~N,~N,~N");f(b,"getTextPixels",function(a,b,c,f,e,g,j){return JSV.js2d.Image.getTextPixels(a,b,c,e,g,j)}, +"~S,JU.Font,~O,~O,~N,~N,~N");f(b,"flushImage",function(){},"~O");f(b,"getGraphics",function(a){return null==a?this.context:this.context=JSV.js2d.Image.getGraphics(this.canvas=a)},"~O");f(b,"getImageHeight",function(a){return null==a?-1:JSV.js2d.Image.getHeight(a)},"~O");f(b,"getImageWidth",function(a){return null==a?-1:JSV.js2d.Image.getWidth(a)},"~O");f(b,"getStaticGraphics",function(a,b){return JSV.js2d.Image.getStaticGraphics(a,b)},"~O,~B");f(b,"newBufferedImage",function(a,b,c){return self.Jmol&& +Jmol._getHiddenCanvas?Jmol._getHiddenCanvas(this.vwr.html5Applet,"stereoImage",b,c):null},"~O,~N,~N");f(b,"newOffScreenImage",function(a,b){return self.Jmol&&Jmol._getHiddenCanvas?Jmol._getHiddenCanvas(this.vwr.html5Applet,"textImage",a,b):null},"~N,~N");f(b,"waitForDisplay",function(){return!1},"~O,~O");f(b,"fontStringWidth",function(a,b){return JSV.js2d.JsFont.stringWidth(a,b)},"JU.Font,~S");f(b,"getFontAscent",function(a){return JSV.js2d.JsFont.getAscent(a)},"~O");f(b,"getFontDescent",function(a){return JSV.js2d.JsFont.getDescent(a)}, +"~O");f(b,"getFontMetrics",function(a,b){return JSV.js2d.JsFont.getFontMetrics(a,b)},"JU.Font,~O");f(b,"newFont",function(a,b,c,f){return JSV.js2d.JsFont.newFont(a,b,c,f,"px")},"~S,~B,~B,~N");f(b,"getDateFormat",function(a){if(null!=a){if(0<=a.indexOf("8824")){var b=new Date;a=b.toString().split(" ");var c="0"+b.getMonth(),c=c.substring(c.length-2),b="0"+b.getDate(),b=b.substring(b.length-2);return a[3]+c+b+a[4].replace(/\:/g,"")+a[5].substring(3,6)+"'"+a[5].substring(6,8)+"'"}if(0<=a.indexOf("8601"))return b= +new Date,a=b.toString().split(" "),c="0"+b.getMonth(),c=c.substring(c.length-2),b="0"+b.getDate(),b=b.substring(b.length-2),a[3]+c+b+a[4].replace(/\:/g,"")+a[5].substring(3,6)+"'"+a[5].substring(6,8)+"'"}return(""+new Date).split(" (")[0]},"~S");f(b,"newFile",function(a){return new JSV.js2d.JsFile(a)},"~S");f(b,"getBufferedFileInputStream",function(){return null},"~S");f(b,"getURLContents",function(a,b,c,f){a=JSV.js2d.JsFile.getURLContents(a,b,c);try{return!f?a:"string"==typeof a?a:C(a,"JU.SB")?a.toString(): +C(a,Array)?String.instantialize(a):String.instantialize(JU.Rdr.getStreamAsBytes(a,null))}catch(e){if(E(e,Exception))return""+e;throw e;}},"java.net.URL,~A,~S,~B");f(b,"getLocalUrl",function(){return null},"~S");f(b,"getImageDialog",function(){return null},"~S,java.util.Map");f(b,"forceAsyncLoad",function(){return!1},"~S");f(b,"getInChI",function(){return null});f(b,"confirm",function(a,b){var c=!1;null!=b&&(c=!1);return c?1:2},"~S,~S")});n("JSV.js2d");A(["JSV.api.JSVMainPanel"],"JSV.js2d.JsMainPanel", +null,function(){var b=r(function(){this.selectedPanel=null;this.currentPanelIndex=0;this.title=null;this.enabled=this.focusable=this.visible=!1;u(this,arguments)},JSV.js2d,"JsMainPanel",null,JSV.api.JSVMainPanel);f(b,"getCurrentPanelIndex",function(){return this.currentPanelIndex});f(b,"dispose",function(){});f(b,"getTitle",function(){return this.title});f(b,"setTitle",function(a){this.title=a},"~S");f(b,"setSelectedPanel",function(a,b,c){b!==this.selectedPanel&&(this.selectedPanel=b);a=a.selectPanel(b, +c);0<=a&&(this.currentPanelIndex=a);this.visible=!0},"JSV.common.JSViewer,JSV.api.JSVPanel,JU.Lst");c(b,"getHeight",function(){return null==this.selectedPanel?0:this.selectedPanel.getHeight()});c(b,"getWidth",function(){return null==this.selectedPanel?0:this.selectedPanel.getWidth()});f(b,"isEnabled",function(){return this.enabled});f(b,"isFocusable",function(){return this.focusable});f(b,"isVisible",function(){return this.visible});f(b,"setEnabled",function(a){this.enabled=a},"~B");f(b,"setFocusable", +function(a){this.focusable=a},"~B")});n("JSV.source");A(["JSV.source.JDXHeader","java.util.Hashtable"],"JSV.source.JDXDataObject","JU.DF $.PT JSV.common.Annotation $.Coordinate JSV.exception.JSVException JU.Logger".split(" "),function(){var b=r(function(){this.sourceID="";this.isSimulation=!1;this.blockID=0;this.inlineData=this.filePathForwardSlash=this.filePath=null;this.fileShiftRef=1.7976931348623157E308;this.fileShiftRefDataPt=this.fileShiftRefType=-1;this.deltaX=this.maxY=this.maxX=this.minY= +this.minX=NaN;this.xyCoords=null;this.$isHZtoPPM=this.continuous=!1;this.xIncreases=!0;this.fileLastX=this.fileFirstX=1.7976931348623157E308;this.fileNPoints=-1;this.yFactor=this.xFactor=1.7976931348623157E308;this.nucleusX=null;this.nucleusY="?";this.freq2dY=this.freq2dX=NaN;this.y2DUnits="";this.parent=null;this.yUnits=this.xUnits="";this.yLabel=this.xLabel=null;this.observedNucl=this.varName="";this.observedFreq=1.7976931348623157E308;this.numDim=1;this.nH=0;this.y2D=NaN;u(this,arguments)},JSV.source, +"JDXDataObject",JSV.source.JDXHeader);c(b,"setInlineData",function(a){this.inlineData=a},"~S");c(b,"getInlineData",function(){return this.inlineData});c(b,"setFilePath",function(a){null!=a&&(this.filePathForwardSlash=(this.filePath=a.trim()).$replace("\\","/"))},"~S");c(b,"getFilePath",function(){return this.filePath});c(b,"getFilePathForwardSlash",function(){return this.filePathForwardSlash});c(b,"setBlockID",function(a){this.blockID=a},"~N");c(b,"checkJDXRequiredTokens",function(){var a=1.7976931348623157E308== +this.fileFirstX?"##FIRSTX":1.7976931348623157E308==this.fileLastX?"##LASTX":-1==this.fileNPoints?"##NPOINTS":1.7976931348623157E308==this.xFactor?"##XFACTOR":1.7976931348623157E308==this.yFactor?"##YFACTOR":null;if(null!=a)throw new JSV.exception.JSVException("Error Reading Data Set: "+a+" not found");});c(b,"setXFactor",function(a){this.xFactor=a},"~N");c(b,"getXFactor",function(){return this.xFactor});c(b,"setYFactor",function(a){this.yFactor=a},"~N");c(b,"getYFactor",function(){return this.yFactor}); +c(b,"setVarName",function(a){this.varName=a},"~S");c(b,"isImaginary",function(){return this.varName.contains("IMAG")});c(b,"setXUnits",function(a){this.xUnits=a},"~S");c(b,"getXUnits",function(){return this.xUnits});c(b,"setYUnits",function(a){a.equals("PPM")&&(a="ARBITRARY UNITS");this.yUnits=a},"~S");c(b,"getYUnits",function(){return this.yUnits});c(b,"setXLabel",function(a){this.xLabel=a},"~S");c(b,"setYLabel",function(a){this.yLabel=a},"~S");c(b,"setObservedNucleus",function(a){this.observedNucl= +a;this.is1D()&&(this.parent.nucleusX=this.nucleusX=this.fixNucleus(a))},"~S");c(b,"getObservedNucleus",function(){return this.observedNucl});c(b,"setObservedFreq",function(a){this.observedFreq=a},"~N");c(b,"getObservedFreq",function(){return this.observedFreq});c(b,"setHydrogenCount",function(a){this.nH=a},"~N");c(b,"getHydrogenCount",function(){return this.nH});c(b,"is1D",function(){return 1==this.numDim});c(b,"getNumDim",function(){return this.numDim});c(b,"setNumDim",function(a){this.numDim=a}, +"~N");c(b,"setY2D",function(a){this.y2D=a},"~N");c(b,"getY2D",function(){return this.y2D});c(b,"setY2DUnits",function(a){this.y2DUnits=a},"~S");c(b,"getY2DPPM",function(){var a=this.y2D;this.y2DUnits.equals("HZ")&&(a/=this.freq2dY);return a});c(b,"setNucleusAndFreq",function(a,b){a=this.fixNucleus(a);b?this.nucleusX=a:this.nucleusY=a;var c;if(0<=this.observedNucl.indexOf(a))c=this.observedFreq;else{c=JSV.source.JDXDataObject.getGyromagneticRatio(this.fixNucleus(this.observedNucl));var e=JSV.source.JDXDataObject.getGyromagneticRatio(a); +c=this.observedFreq*e/c}b?this.freq2dX=c:this.freq2dY=c;JU.Logger.info("Freq for "+a+" = "+c)},"~S,~B");c(b,"fixNucleus",function(a){return JU.PT.rep(JU.PT.trim(a,"[]^<>"),"NUC_","")},"~S");b.getNominalSpecFreq=c(b,"getNominalSpecFreq",function(a,b){var c=b*JSV.source.JDXDataObject.getGyromagneticRatio("1H")/JSV.source.JDXDataObject.getGyromagneticRatio(a),e=100*Math.round(c/100);return Double.isNaN(c)?-1:2>Math.abs(c-e)?e:Math.round(c)},"~S,~N");b.getGyromagneticRatio=c(b,"getGyromagneticRatio", +function(a){var b=null;try{b=JSV.source.JDXDataObject.gyroMap.get(a);if(null!=b)return b.doubleValue();for(var c=0;cJSV.common.Coordinate.getMaxY(this.xyCoords,0,this.xyCoords.length-1)?1:100});c(b,"isInverted",function(){return this.isTransmittance()});c(b,"canConvertTransAbs",function(){return this.continuous&&this.yUnits.toLowerCase().contains("abs")||this.yUnits.toLowerCase().contains("trans")});c(b,"canShowSolutionColor",function(){return this.isContinuous()&& +this.canConvertTransAbs()&&(this.xUnits.toLowerCase().contains("nanometer")||this.xUnits.equalsIgnoreCase("nm"))&&401>this.getFirstX()&&699b?"":JU.DF.formatDecimalDbl(b,c)+e},"JSV.common.Measurement");c(b,"isNMR",function(){return 0<=this.dataType.toUpperCase().indexOf("NMR")});c(b,"isHNMR",function(){return this.isNMR()&&0<=this.observedNucl.toUpperCase().indexOf("H")});c(b,"setXYCoords",function(a){this.xyCoords=a},"~A");c(b,"invertYAxis",function(){for(var a=this.xyCoords.length;0<=--a;)this.xyCoords[a].setYVal(-this.xyCoords[a].getYVal()); +a=this.minY;this.minY=-this.maxY;this.maxY=-a;return this});c(b,"getFirstX",function(){return this.xyCoords[0].getXVal()});c(b,"getFirstY",function(){return this.xyCoords[0].getYVal()});c(b,"getLastX",function(){return this.xyCoords[this.xyCoords.length-1].getXVal()});c(b,"getLastY",function(){return this.xyCoords[this.xyCoords.length-1].getYVal()});c(b,"getMinX",function(){return Double.isNaN(this.minX)?this.minX=JSV.common.Coordinate.getMinX(this.xyCoords,0,this.xyCoords.length-1):this.minX});c(b, +"getMinY",function(){return Double.isNaN(this.minY)?this.minY=JSV.common.Coordinate.getMinY(this.xyCoords,0,this.xyCoords.length-1):this.minY});c(b,"getMaxX",function(){return Double.isNaN(this.maxX)?this.maxX=JSV.common.Coordinate.getMaxX(this.xyCoords,0,this.xyCoords.length-1):this.maxX});c(b,"getMaxY",function(){return Double.isNaN(this.maxY)?this.maxY=JSV.common.Coordinate.getMaxY(this.xyCoords,0,this.xyCoords.length-1):this.maxY});c(b,"normalizeSimulation",function(a){this.isNMR()&&this.is1D()&& +(a/=this.getMaxY(),this.maxY=NaN,JSV.common.Coordinate.applyScale(this.xyCoords,1,a),JU.Logger.info("Y values have been scaled by a factor of "+a))},"~N");c(b,"getDeltaX",function(){return Double.isNaN(this.deltaX)?this.deltaX=JSV.common.Coordinate.deltaX(this.getLastX(),this.getFirstX(),this.xyCoords.length):this.deltaX});c(b,"copyTo",function(a){a.setTitle(this.title);a.setJcampdx(this.jcampdx);a.setOrigin(this.origin);a.setOwner(this.owner);a.setDataClass(this.dataClass);a.setDataType(this.dataType); +a.setHeaderTable(this.headerTable);a.setXFactor(this.xFactor);a.setYFactor(this.yFactor);a.setXUnits(this.xUnits);a.setYUnits(this.yUnits);a.setXLabel(this.xLabel);a.setYLabel(this.yLabel);a.setXYCoords(this.xyCoords);a.setContinuous(this.continuous);a.setIncreasing(this.xIncreases);a.observedFreq=this.observedFreq;a.observedNucl=this.observedNucl;a.fileShiftRef=this.fileShiftRef;a.fileShiftRefDataPt=this.fileShiftRefDataPt;a.fileShiftRefType=this.fileShiftRefType;a.$isHZtoPPM=this.$isHZtoPPM;a.numDim= +this.numDim;a.nucleusX=this.nucleusX;a.nucleusY=this.nucleusY;a.freq2dX=this.freq2dX;a.freq2dY=this.freq2dY;a.setFilePath(this.filePath);a.nH=this.nH},"JSV.source.JDXDataObject");c(b,"getTypeLabel",function(){return this.isNMR()?this.nucleusX+"NMR":this.dataType});c(b,"getDefaultAnnotationInfo",function(a){var b,c=this.isNMR();switch(a){case JSV.common.Annotation.AType.Integration:return w(-1,[null,D(-1,[1]),null]);case JSV.common.Annotation.AType.Measurements:return a=c?w(-1,["Hz","ppm"]):w(-1,[""]), +b=this.isHNMR()?D(-1,[1,4]):D(-1,[1,3]),w(-1,[a,b,Integer.$valueOf(0)]);case JSV.common.Annotation.AType.PeakList:return a=c?w(-1,["Hz","ppm"]):w(-1,[""]),b=this.isHNMR()?D(-1,[1,2]):D(-1,[1,1]),w(-1,[a,b,Integer.$valueOf(c?1:0)])}return null},"JSV.common.Annotation.AType");c(b,"getPeakListArray",function(a,b,c){var e=a.getXVal();a=a.getYVal();this.isNMR()&&(a/=c);c=Math.abs(e-b[0]);b[0]=e;var g=c+b[1];b[1]=c;var f=g+b[2];b[2]=g;return this.isNMR()?R(-1,[e,a,e*this.observedFreq,20this.jcampdx.indexOf("JEOL"))&&this.applyShiftReference(b? +a:1,this.fileShiftRef);this.fileFirstX>this.fileLastX&&JSV.common.Coordinate.reverse(this.xyCoords);b&&(JSV.common.Coordinate.applyScale(this.xyCoords,1/a,1),this.setXUnits("PPM"),this.setHZtoPPM(!0))});c(b,"setShiftReference",function(a,b,c){this.fileShiftRef=a;this.fileShiftRefDataPt=0this.xyCoords.length||0>this.fileShiftRefDataPt)){var c; +switch(this.fileShiftRefType){case 0:b=this.xyCoords[this.fileShiftRefDataPt-1].getXVal()-b*a;break;case 1:b=this.fileFirstX-b*a;break;case 2:b=this.fileLastX+b}for(var e=0;e>"+this.line+"<<\n x, xcheck "+e+" "+e/this.xFactor+" "+p/this.xFactor+" "+a/this.xFactor);var r=k*this.yFactor,u=(new JSV.common.Coordinate).set(e,r);if(0==j||!m)this.addPoint(u,j++);else if(j>>>"+this.line.substring(this.ich));Double.isNaN(k=this.nextValue(k))? +this.logError("There was an error reading line "+n+" char "+C+":"+this.line.substring(0,C)+">>>>"+this.line.substring(C)):(e+=a,1.7976931348623157E308==k&&(k=0,this.logError("Point marked invalid '?' for line "+n+" char "+C+":"+this.line.substring(0,C)+">>>>"+this.line.substring(C))),this.addPoint((new JSV.common.Coordinate).set(e,k*this.yFactor),j++),this.debugging&&this.logError("nx="+ ++B+" "+e+" "+e/this.xFactor+" yval="+k))}this.lastX=e;!l&&j>this.nPoints&&(this.logError("! points overflow nPoints!"), +l=!0);g=this.line}}catch(D){if(E(D,"java.io.IOException"))D.printStackTrace();else throw D;}this.checkZeroFill(j,f);return this.xyCoords},"JU.SB");c(b,"checkZeroFill",function(a,b){this.nptsFound=a;if(this.nPoints==this.nptsFound)1E-5=this.nPoints)){this.xyCoords[b]=a;var c=a.getYVal();c>this.maxY?this.maxY=c:c=b?b.charCodeAt(0)-73:105-b.charCodeAt(0)));case 2:return this.dupCount=this.readNextInteger("s"==b?9:b.charCodeAt(0)-82)-1,this.getDuplicate(a);case 3:a=this.readNextSqueezedNumber(b);break;case 4:this.ich--;a=this.readSignedFloat();break;case -1:a=1.7976931348623157E308;break;default:a=NaN}this.isDIF=!1;return a},"~N");c(b,"skipUnknown", +function(){for(var a="\x00";this.ich=b)&&this.ich++}return c*Double.parseDouble(this.line.substring(a,this.ich))});c(b,"getDuplicate",function(a){this.dupCount--;return this.isDIF?a+this.lastDif:a},"~N");c(b,"readNextInteger",function(a){for(var b=String.fromCharCode(0);this.ich=b;)a=10*a+(0>a?48-b.charCodeAt(0):b.charCodeAt(0)-48),this.ich++;return a},"~N");c(b,"readNextSqueezedNumber",function(a){var b=this.ich;this.scanToNonnumeric(); +return Double.parseDouble((96=a);)this.ich++;return this.ich=b;b++)switch(String.fromCharCode(b).charCodeAt(0)){case 37:case 74:case 75:case 76:case 77:case 78:case 79:case 80:case 81:case 82:case 106:case 107:case 108:case 109:case 110:case 111:case 112:case 113:case 114:JSV.source.JDXDecompressor.actions[b]=1;break;case 43:case 45:case 46:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:JSV.source.JDXDecompressor.actions[b]=4;break; +case 63:JSV.source.JDXDecompressor.actions[b]=-1;break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:JSV.source.JDXDecompressor.actions[b]=3;break;case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 115:JSV.source.JDXDecompressor.actions[b]=2}});n("JSV.source");A(["JU.Lst"],"JSV.source.JDXHeader",null,function(){var b=r(function(){this.title="";this.jcampdx="5.01";this.origin= +this.dataClass=this.dataType="";this.owner="PUBLIC DOMAIN";this.time=this.date=this.longDate="";this.headerTable=this.qualifiedType=null;u(this,arguments)},JSV.source,"JDXHeader",null);N(b,function(){this.headerTable=new JU.Lst});c(b,"setTitle",function(a){this.title=a},"~S");c(b,"setJcampdx",function(a){this.jcampdx=a},"~S");c(b,"setDataType",function(a){this.dataType=a},"~S");c(b,"setDataClass",function(a){this.dataClass=a},"~S");c(b,"setOrigin",function(a){this.origin=a},"~S");c(b,"setOwner",function(a){this.owner= +a},"~S");c(b,"setLongDate",function(a){this.longDate=a},"~S");c(b,"setDate",function(a){this.date=a},"~S");c(b,"setTime",function(a){this.time=a},"~S");c(b,"getTitle",function(){return this.title});b.getTypeName=c(b,"getTypeName",function(a){a=a.toUpperCase();for(var b=0;bu||0<=v&&v");break}}else{if(!b){if(c.equals("##DATATYPE")&&f.toUpperCase().equals("LINK")){this.getBlockSpectra(j);g=null;continue}if(c.equals("##NTUPLES")||c.equals("##VARNAME")){this.getNTupleSpectra(j, +g,c);g=null;continue}}c.equals("##JCAMPDX")&&this.setVenderSpecificValues(this.t.rawLine);null==g&&(g=new JSV.common.Spectrum);this.processLabel(g,j,c,f,b)}b&&null!=g&&this.addSpectrum(g,!1)}if(!e)throw new JSV.exception.JSVException("##TITLE record not found");this.source.setErrorLog(this.errorLog.toString());return this.source},"~O,~B");c(b,"processLabel",function(a,b,c,f,e){if(this.readDataLabel(a,c,f,this.errorLog,this.obscure,e)||e)JSV.source.JDXReader.addHeader(b,this.t.rawLabel,f),e||this.checkCustomTags(a, +c,f)},"JSV.common.Spectrum,JU.Lst,~S,~S,~B");c(b,"logError",function(a){this.errorLog.append(null==this.filePath||this.filePath.equals(this.lastErrPath)?"":this.filePath).append("\n").append(a).append("\n");this.lastErrPath=this.filePath},"~S");c(b,"setVenderSpecificValues",function(a){0<=a.indexOf("JEOL")&&(System.out.println("Skipping ##SHIFTREFERENCE for JEOL "+a),this.ignoreShiftReference=!0);0<=a.indexOf("MestReNova")&&(this.ignorePeakTables=!0)},"~S");c(b,"getValue",function(a){var b=this.isTabularDataLabel(a)? +"":this.t.getValue();return"##END".equals(a)?null:b},"~S");c(b,"isTabularDataLabel",function(a){return this.isTabularData=0<="##DATATABLE##PEAKTABLE##XYDATA##XYPOINTS#".indexOf(a+"#")},"~S");c(b,"addSpectrum",function(a,b){if(!this.loadImaginary&&a.isImaginary())return JU.Logger.info("FileReader skipping imaginary spectrum -- use LOADIMAGINARY TRUE to load this spectrum."),!0;if(null!=this.acdAssignments){if(!a.dataType.equals("MASS SPECTRUM")&&!a.isContinuous())return JU.Logger.info("Skipping ACD Labs line spectrum for "+ +a),!0;if(0this.lastSpec)return!(this.done=!0);a.setBlockID(this.blockID);this.source.addJDXSpectrum(null,a,b);return!0},"JSV.common.Spectrum,~B");c(b,"getBlockSpectra",function(a){JU.Logger.debug("--JDX block start--");for(var b="",c=null,f=0==this.source.type,e=!1;null!=(b=this.t.getLabel())&&!b.equals("##TITLE");)c=this.getValue(b),f&&!JSV.source.JDXReader.readHeaderLabel(this.source,b,c,this.errorLog,this.obscure)&&JSV.source.JDXReader.addHeader(a, +this.t.rawLabel,c),b.equals("##BLOCKS")&&100=this.firstSpec&&(e=!0);c=this.getValue(b);if(!"##TITLE".equals(b))throw new JSV.exception.JSVException("Unable to read block source");f&&this.source.setHeaderTable(a);this.source.type=1;this.source.isCompoundSource=!0;f=new JSV.common.Spectrum;a=new JU.Lst;this.readDataLabel(f,b,c,this.errorLog,this.obscure,!1);try{for(var g;null!=(g=this.t.getLabel());){if(null==(c=this.getValue(g))&&"##END".equals(b)){JU.Logger.debug("##END= "+this.t.getValue()); +break}b=g;if(this.isTabularData)this.processTabularData(f,a,b,!1);else{if(b.equals("##DATATYPE"))if(c.toUpperCase().equals("LINK"))this.getBlockSpectra(a),b=f=null;else{if(c.toUpperCase().startsWith("NMR PEAK")&&this.ignorePeakTables)return this.done=!0,this.source}else if(b.equals("##NTUPLES")||b.equals("##VARNAME"))this.getNTupleSpectra(a,f,b),f=null,b="";if(this.done)break;if(null==f){f=new JSV.common.Spectrum;a=new JU.Lst;if(""===b)continue;if(null==b){b="##END";continue}}if(null==c){if(0 +b.length)return!0;if(b.equals("##.OBSERVEFREQUENCY "))return a.setObservedFreq(this.parseAFFN(b,c)),!1;if(b.equals("##.OBSERVENUCLEUS "))return a.setObservedNucleus(c),!1;if(b.equals("##$REFERENCEPOINT ")&&!a.isShiftTypeSpecified()){var g=c.indexOf(" ");0a.fileFirstX);a.setContinuous(!0);var f=new JSV.source.JDXDecompressor(this.t,a.fileFirstX,a.fileLastX,a.xFactor,a.yFactor,a.fileNPoints),e=System.currentTimeMillis(),g=f.decompressData(this.errorLog);JU.Logger.debugging&&JU.Logger.debug("decompression time = "+(System.currentTimeMillis()-e)+" ms");a.setXYCoords(g);e=f.getMinY();null!= +b&&(eb[1]&&(b[1]=e));a.finalizeCoordinates();this.errorLog.length()!=c&&(c=JSV.common.Coordinate.deltaX(a.fileLastX,a.fileFirstX,a.fileNPoints),this.logError(a.getTitle()),this.logError("firstX from Header "+a.fileFirstX),this.logError("lastX from Header "+a.fileLastX+" Found "+f.lastX),this.logError("deltaX from Header "+c),this.logError("Number of points in Header "+a.fileNPoints+" Found "+f.getNPointsFound()));JU.Logger.debugging&&System.err.println(this.errorLog.toString())}, +"JSV.source.JDXDataObject,~A");b.addHeader=c(b,"addHeader",function(a,b,c){for(var f=null,e=0;eb)return!1;this.getMpr().set(this,this.filePath, +null);try{switch(this.reader=new java.io.BufferedReader(new java.io.StringReader(c)),b){case 0:this.mpr.readModels();break;case 10:case 20:this.peakData=new JU.Lst;this.source.peakCount+=this.mpr.readPeaks(20==b,this.source.peakCount);break;case 30:this.acdAssignments=new JU.Lst;this.acdMolFile=JU.PT.rep(c,"$$ Empty String","");break;case 40:case 50:case 60:this.acdAssignments=this.mpr.readACDAssignments(a.fileNPoints,40==b);break}}catch(f){if(E(f,Exception))throw new JSV.exception.JSVException(f.getMessage()); +throw f;}finally{this.reader=null}return!0},"JSV.common.Spectrum,~S,~S");c(b,"getMpr",function(){return null==this.mpr?this.mpr=JSV.common.JSViewer.getInterface("J.jsv.JDXMOLParser"):this.mpr});f(b,"rd",function(){return this.reader.readLine()});f(b,"setSpectrumPeaks",function(a,b,c){this.modelSpectrum.setPeakList(this.peakData,b,c);this.modelSpectrum.isNMR()&&this.modelSpectrum.setHydrogenCount(a)},"~N,~S,~S");f(b,"addPeakData",function(a){null==this.peakData&&(this.peakData=new JU.Lst);this.peakData.addLast(new JSV.common.PeakInfo(a))}, +"~S");f(b,"processModelData",function(){},"~S,~S,~S,~S,~S,~N,~N,~B");f(b,"discardLinesUntilContains",function(a){for(var b;null!=(b=this.rd())&&0>b.indexOf(a););return b},"~S");f(b,"discardLinesUntilContains2",function(a,b){for(var c;null!=(c=this.rd())&&0>c.indexOf(a)&&0>c.indexOf(b););return c},"~S,~S");f(b,"discardLinesUntilNonBlank",function(){for(var a;null!=(a=this.rd())&&0==a.trim().length;);return a});b.VAR_LIST_TABLE=w(-1,["PEAKTABLE XYDATA XYPOINTS"," (XY..XY) (X++(Y..Y)) (XY..XY) "])}); +n("JSV.source");A(["JSV.source.JDXHeader"],"JSV.source.JDXSource",["JU.Lst"],function(){var b=r(function(){this.type=0;this.isCompoundSource=!1;this.jdxSpectra=null;this.errors="";this.filePath=null;this.peakCount=0;this.isView=!1;this.inlineData=null;u(this,arguments)},JSV.source,"JDXSource",JSV.source.JDXHeader);x(b,function(a,b){I(this,JSV.source.JDXSource,[]);this.type=a;this.setFilePath(b);this.headerTable=new JU.Lst;this.jdxSpectra=new JU.Lst;this.isCompoundSource=0!=a},"~N,~S");c(b,"dispose", +function(){this.jdxSpectra=this.headerTable=null});c(b,"getJDXSpectrum",function(a){return this.jdxSpectra.size()<=a?null:this.jdxSpectra.get(a)},"~N");c(b,"addJDXSpectrum",function(a,b,c){null==a&&(a=this.filePath);b.setFilePath(a);null!=this.inlineData&&b.setInlineData(this.inlineData);a=this.jdxSpectra.size();(0==a||!this.jdxSpectra.get(a-1).addSubSpectrum(b,c))&&this.jdxSpectra.addLast(b)},"~S,JSV.common.Spectrum,~B");c(b,"getNumberOfSpectra",function(){return this.jdxSpectra.size()});c(b,"getSpectra", +function(){return this.jdxSpectra});c(b,"getSpectraAsArray",function(){return null==this.jdxSpectra?null:this.jdxSpectra.toArray()});c(b,"getErrorLog",function(){return this.errors});c(b,"setErrorLog",function(a){this.errors=a},"~S");c(b,"setFilePath",function(a){this.filePath=a},"~S");c(b,"getFilePath",function(){return this.filePath});b.createView=c(b,"createView",function(a){var b=new JSV.source.JDXSource(-2,"view");b.isView=!0;for(var c=0;cc?(a&&JU.Logger.info("BAD JDX LINE -- no '=' (line "+this.lineNo+"): "+this.line),this.rawLabel=this.line,a||(this.line="")):(this.rawLabel=this.line.substring(0, +c).trim(),a&&(this.line=this.line.substring(c+1)));this.labelLineNo=this.lineNo;JU.Logger.debugging&&JU.Logger.info(this.rawLabel);return JSV.source.JDXSourceStreamTokenizer.cleanLabel(this.rawLabel)},"~B");b.cleanLabel=c(b,"cleanLabel",function(a){if(null==a)return null;var b,c=new JU.SB;for(b=0;bthis.line.indexOf("$$"))return this.line.trim();var a=(new JU.SB).append(this.line);return JSV.source.JDXSourceStreamTokenizer.trimLines(a)});c(b,"flushLine",function(){var a=(new JU.SB).append(this.line);this.line=null;return JSV.source.JDXSourceStreamTokenizer.trimLines(a)});c(b,"readLine",function(){this.line=this.br.readLine();this.lineNo++;return this.line});b.trimLines=c(b,"trimLines",function(a){var b=a.length(),c=b-1,f=JSV.source.JDXSourceStreamTokenizer.ptNonWhite(a, +0,b);if(f>=b)return"";for(var e=ba(b-f,"\x00"),g=0;f"\n\r".indexOf(a.charAt(f)););continue}}"\n"==j&&0 0 ? x - 0x10000 : x); +}); + +Clazz_defineMethod(Number,"byteValue", +function(){ +var x = Math.round(this)&0xff; +return (this < 0 && x > 0 ? x - 0x100 : x); +}); + +Clazz_defineMethod(Number,"intValue", +function(){ +return Math.round(this)&0xffffffff; +}); + +Clazz_defineMethod(Number,"longValue", +function(){ +return Math.round(this); +}); + +Clazz_defineMethod(Number,"floatValue", +function(){ +return this.valueOf(); +}); +Clazz_defineMethod(Number,"doubleValue", +function(){ +return parseFloat(this.valueOf()); +}); + +Clazz_overrideMethod(Number,"hashCode", +function(){ +return this.valueOf(); +}); + +java.lang.Integer=Integer=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Integer,"Integer",Number,Comparable,null,true); +Integer.prototype.valueOf=function(){return 0;}; +Integer.toString=Integer.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +} else if(this===Integer){ +return"class java.lang.Integer"; +} +return""+this.valueOf(); +}; + +/* + +Clazz_makeConstructor(Integer, +function(){ +this.valueOf=function(){ +return 0; +}; +}); +*/ + + +Clazz_overrideConstructor(Integer, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + this.valueOf=function(){return v;}; +}); //BH +/* +Clazz_makeConstructor(Integer, +function(s){ +var value=Integer.parseInt(s,10); +this.valueOf=function(){ +return value; +}; +},"String"); +*/ +Integer.MIN_VALUE=Integer.prototype.MIN_VALUE=-0x80000000; +Integer.MAX_VALUE=Integer.prototype.MAX_VALUE=0x7fffffff; +Integer.TYPE=Integer.prototype.TYPE=Integer; + + +Integer.compare = Clazz_defineMethod(Integer,"compare", +function(i,j) { + return (i < j ? -1 : i > j ? 1 : 0); +},"Number,Number"); + +Clazz_defineMethod(Integer,"bitCount", +function(i) { + i = i - ((i >>> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); + i = (i + (i >>> 4)) & 0x0f0f0f0f; + i = i + (i >>> 8); + i = i + (i >>> 16); + return i & 0x3f; +},"Number"); +Integer.bitCount=Integer.prototype.bitCount; + +Clazz_defineMethod(Integer,"numberOfLeadingZeros", +function(i) { + if (i == 0) return 32; + var n = 1; + if (i >>> 16 == 0) { n += 16; i <<= 16; } + if (i >>> 24 == 0) { n += 8; i <<= 8; } + if (i >>> 28 == 0) { n += 4; i <<= 4; } + if (i >>> 30 == 0) { n += 2; i <<= 2; } + n -= i >>> 31; + return n; +},"Number"); +Integer.numberOfLeadingZeros=Integer.prototype.numberOfLeadingZeros; + +Clazz_defineMethod(Integer,"numberOfTrailingZeros", +function(i) { + if (i == 0) return 32; + var n = 31; + var y = i <<16; if (y != 0) { n = n -16; i = y; } + y = i << 8; if (y != 0) { n = n - 8; i = y; } + y = i << 4; if (y != 0) { n = n - 4; i = y; } + y = i << 2; if (y != 0) { n = n - 2; i = y; } + return n - ((i << 1) >>> 31); +},"Number"); +Integer.numberOfTrailingZeros=Integer.prototype.numberOfTrailingZeros; + +Clazz_defineMethod(Integer,"parseIntRadix", +function(s,radix){ +if(s==null){ +throw new NumberFormatException("null"); +}if(radix<2){ +throw new NumberFormatException("radix "+radix+" less than Character.MIN_RADIX"); +}if(radix>36){ +throw new NumberFormatException("radix "+radix+" greater than Character.MAX_RADIX"); +} +if (radix == 10) { + for (var i = s.length; --i >= 0;) { + var c = s.charCodeAt(i); + if (c >= 48 && c <= 57) continue; + if (i > 0 || c != 43 && c != 45) + throw new NumberFormatException("Not a Number : "+s); + + } +} +var i=parseInt(s,radix); +if(isNaN(i)){ +throw new NumberFormatException("Not a Number : "+s); +} +return i; +},"String, Number"); +Integer.parseIntRadix=Integer.prototype.parseIntRadix; + +Clazz_defineMethod(Integer,"parseInt", +function(s){ +return Integer.parseIntRadix(s,10); +},"String"); +Integer.parseInt=Integer.prototype.parseInt; + +/* +Clazz_defineMethod(Integer,"$valueOf", +function(s){ +return new Integer(Integer.parseIntRadix(s,10)); +},"String"); +*/ + +Clazz_overrideMethod(Integer,"$valueOf", +function(s){ +return new Integer(s); +}); + +/* +Clazz_defineMethod(Integer,"$valueOf", +function(s,r){ +return new Integer(Integer.parseIntRadix(s,r)); +},"String, Number"); +*/ + +Integer.$valueOf=Integer.prototype.$valueOf; + + +Clazz_overrideMethod(Integer,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Integer)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Integer.toHexString=Integer.prototype.toHexString=function(d){ +if(d.valueOf)d=d.valueOf(); +if (d < 0) { +var b = d & 0xFFFFFF; +var c = ((d>>24)&0xFF); +return c._numberToString(16) + (b = "000000" + b._numberToString(16)).substring(b.length - 6); +} +return d._numberToString(16);}; +Integer.toOctalString=Integer.prototype.toOctalString=function(d){if(d.valueOf)d=d.valueOf();return d._numberToString(8);}; +Integer.toBinaryString=Integer.prototype.toBinaryString=function(d){if(d.valueOf)d=d.valueOf();return d._numberToString(2);}; + +Integer.decodeRaw=Clazz_defineMethod(Integer,"decodeRaw", function(n){ +if (n.indexOf(".") >= 0)n = ""; +var i = (n.startsWith("-") ? 1 : 0); +n = n.replace(/\#/, "0x").toLowerCase(); +var radix=(n.startsWith("0x", i) ? 16 : n.startsWith("0", i) ? 8 : 10); +// The general problem with parseInt is that is not strict -- ParseInt("10whatever") == 10. +// Number is strict, but Number("055") does not work, though ParseInt("055", 8) does. +// need to make sure negative numbers are negative +n = Number(n) & 0xFFFFFFFF; +return (radix == 8 ? parseInt(n, 8) : n); +},"~S"); + +Integer.decode=Clazz_defineMethod(Integer,"decode", function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < Integer.MIN_VALUE|| n > Integer.MAX_VALUE) + throw new NumberFormatException("Invalid Integer"); + return new Integer(n); +},"~S"); + +Clazz_overrideMethod(Integer,"hashCode", +function(){ +return this.valueOf(); +}); + +// Note that Long is problematic in JavaScript + +java.lang.Long=Long=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Long,"Long",Number,Comparable,null,true); +Long.prototype.valueOf=function(){return 0;}; +Long.toString=Long.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +}else if(this===Long){ +return"class java.lang.Long"; +} +return""+this.valueOf(); +}; + +Clazz_overrideConstructor(Long, function(v){ + v == null && (v = 0); + v = (typeof v == "number" ? Math.round(v) : Integer.parseIntRadix(v, 10)); +this.valueOf=function(){return v;}; +}); + +//Long.MIN_VALUE=Long.prototype.MIN_VALUE=-0x8000000000000000; +//Long.MAX_VALUE=Long.prototype.MAX_VALUE=0x7fffffffffffffff; +Long.TYPE=Long.prototype.TYPE=Long; + +Clazz_defineMethod(Long,"parseLong", +function(s,radix){ + return Integer.parseInt(s, radix || 10); +}); + +Long.parseLong=Long.prototype.parseLong; + +Clazz_overrideMethod(Long,"$valueOf", +function(s){ +return new Long(s); +}); +/* +Clazz_defineMethod(Long,"$valueOf", +function(s){ +return new Long(s); +},"Number"); + +Clazz_defineMethod(Long,"$valueOf", +function(s,r){ +return new Long(Long.parseLong(s,r)); +},"String, Number"); +*/ +Long.$valueOf=Long.prototype.$valueOf; +Clazz_overrideMethod(Long,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Long)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Long.toHexString=Long.prototype.toHexString=function(i){ +return i.toString(16); +}; +Long.toOctalString=Long.prototype.toOctalString=function(i){ +return i.toString(8); +}; +Long.toBinaryString=Long.prototype.toBinaryString=function(i){ +return i.toString(2); +}; + + +Long.decode=Clazz_defineMethod(Long,"decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n)) + throw new NumberFormatException("Invalid Long"); + return new Long(n); +},"~S"); + +java.lang.Short = Short = function () { +Clazz_instantialize (this, arguments); +}; +Clazz_decorateAsType (Short, "Short", Number, Comparable, null, true); +Short.prototype.valueOf = function () { return 0; }; +Short.toString = Short.prototype.toString = function () { + if (arguments.length != 0) { + return "" + arguments[0]; + } else if (this === Short) { + return "class java.lang.Short"; // Short.class.toString + } + return "" + this.valueOf (); +}; + +Clazz_overrideConstructor(Short, +function (v) { + v == null && (v = 0); + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + v = v.shortValue(); + this.valueOf = function () {return v;}; +}); + + +Short.MIN_VALUE = Short.prototype.MIN_VALUE = -32768; +Short.MAX_VALUE = Short.prototype.MAX_VALUE = 32767; +Short.TYPE = Short.prototype.TYPE = Short; + +Clazz_defineMethod(Short, "parseShortRadix", +function (s, radix) { +return Integer.parseIntRadix(s, radix).shortValue(); +}, "String, Number"); +Short.parseShortRadix = Short.prototype.parseShortRadix; + +Clazz_defineMethod(Short, "parseShort", +function (s) { +return Short.parseShortRadix (s, 10); +}, "String"); + +Short.parseShort = Short.prototype.parseShort; + +/* +Clazz_defineMethod(Short, "$valueOf", +function (s) { +return new Short(Short.parseShort (s, 10)); +}, "String"); + */ + +Clazz_overrideMethod(Short, "$valueOf", +function (s) { +return new Short(s); +}); + +/* +Clazz_defineMethod(Short, "$valueOf", +function (s, r) { +return new Short(Short.parseShort (s, r)); +}, "String, Number"); + */ + +Short.$valueOf = Short.prototype.$valueOf; +Clazz_overrideMethod(Short, "equals", +function (s) { +if(s == null || !Clazz_instanceOf(s, Short) ){ + return false; +} +return s.valueOf() == this.valueOf(); +}, "Object"); +Short.toHexString = Short.prototype.toHexString = function (i) { + return i.toString (16); +}; +Short.toOctalString = Short.prototype.toOctalString = function (i) { + return i.toString (8); +}; +Short.toBinaryString = Short.prototype.toBinaryString = function (i) { + return i.toString (2); +}; +Short.decode = Clazz_defineMethod(Short, "decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < -32768|| n > 32767) + throw new NumberFormatException("Invalid Short"); + return new Short(n); +}, "~S"); + +java.lang.Byte=Byte=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Byte,"Byte",Number,Comparable,null,true); +Byte.prototype.valueOf=function(){return 0;}; +Byte.toString=Byte.prototype.toString=function(){ +if(arguments.length!=0){ +return""+arguments[0]; +}else if(this===Byte){ +return"class java.lang.Byte"; +} +return""+this.valueOf(); +}; +Clazz_makeConstructor(Byte, +function(v){ + if (typeof v != "number") + v = Integer.parseIntRadix(v, 10); + v = v.byteValue(); +this.valueOf=function(){ +return v; +}; +}); + +Byte.serialVersionUID=Byte.prototype.serialVersionUID=-7183698231559129828; +Byte.MIN_VALUE=Byte.prototype.MIN_VALUE=-128; +Byte.MAX_VALUE=Byte.prototype.MAX_VALUE=127; +Byte.SIZE=Byte.prototype.SIZE=8; +Byte.TYPE=Byte.prototype.TYPE=Byte; + +Clazz_defineMethod(Byte,"parseByteRadix", +function(s,radix){ + return Integer.parseIntRadix(s, radix).byteValue(); +},"String, Number"); +Byte.parseByteRadix=Byte.prototype.parseByteRadix; + +Clazz_defineMethod(Byte,"parseByte", +function(s){ +return Byte.parseByte(s,10); +},"String"); + +Byte.parseByte=Byte.prototype.parseByte; + +Clazz_overrideMethod(Byte, "$valueOf", +function (s) { +return new Byte(s); +}); + +Byte.$valueOf=Byte.prototype.$valueOf; +Clazz_overrideMethod(Byte,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Byte)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); +Byte.toHexString=Byte.prototype.toHexString=function(i){ +return i.toString(16); +}; +Byte.toOctalString=Byte.prototype.toOctalString=function(i){ +return i.toString(8); +}; +Byte.toBinaryString=Byte.prototype.toBinaryString=function(i){ +return i.toString(2); +}; +Byte.decode=Clazz_defineMethod(Byte,"decode", +function(n){ + n = Integer.decodeRaw(n); + if (isNaN(n) || n < -128|| n > 127) + throw new NumberFormatException("Invalid Byte"); +return new Byte(n); +},"~S"); + +Clazz._floatToString = function(f) { + var s = ""+f + if (s.indexOf(".") < 0 && s.indexOf("e") < 0 && s != "NaN") + s += ".0"; + return s; +} + +java.lang.Float=Float=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Float,"Float",Number,Comparable,null,true); +Float.prototype.valueOf=function(){return 0;}; +Float.toString=Float.prototype.toString=function(){ +if(arguments.length!=0){ +return Clazz._floatToString(arguments[0]); +}else if(this===Float){ +return"class java.lang.Float"; +} +return Clazz._floatToString(this.valueOf()); +}; + +Clazz._a32 = null; + +Float.floatToIntBits = function(f) { +var a = Clazz._a32 || (Clazz._a32 = new Float32Array(1)); +a[0] = f; +return new Int32Array(a.buffer)[0]; +} + +Clazz_overrideConstructor(Float, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Number(v); + this.valueOf=function(){return v;} +}); + +Float.serialVersionUID=Float.prototype.serialVersionUID=-2671257302660747028; +Float.MIN_VALUE=Float.prototype.MIN_VALUE=1.4e-45; +Float.MAX_VALUE=Float.prototype.MAX_VALUE=3.4028235e+38; +Float.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY; +Float.POSITIVE_INFINITY=Number.POSITIVE_INFINITY; +Float.NaN=Number.NaN; +Float.TYPE=Float.prototype.TYPE=Float; + +Clazz_defineMethod(Float,"parseFloat", +function(s){ +if(s==null){ +throw new NumberFormatException("null"); +} +if (typeof s == "number")return s; // important -- typeof NaN is "number" and is OK here +var floatVal=Number(s); +if(isNaN(floatVal)){ +throw new NumberFormatException("Not a Number : "+s); +} +return floatVal; +},"String"); +Float.parseFloat=Float.prototype.parseFloat; + +Clazz_overrideMethod(Float,"$valueOf", +function(s){ +return new Float(s); +}); + +Float.$valueOf=Float.prototype.$valueOf; + +Clazz_defineMethod(Float,"isNaN", +function(num){ +return isNaN(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Float.isNaN=Float.prototype.isNaN; +Clazz_defineMethod(Float,"isInfinite", +function(num){ +return!isFinite(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Float.isInfinite=Float.prototype.isInfinite; + +Clazz_overrideMethod(Float,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Float)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); + +java.lang.Double=Double=function(){ +Clazz_instantialize(this,arguments); +}; +Clazz_decorateAsType(Double,"Double",Number,Comparable,null,true); +Double.prototype.valueOf=function(){return 0;}; +Double.toString=Double.prototype.toString=function(){ +if(arguments.length!=0){ +return Clazz._floatToString(arguments[0]); +}else if(this===Double){ +return"class java.lang.Double"; +} +return Clazz._floatToString(this.valueOf()); +}; + +Clazz_overrideConstructor(Double, function(v){ + v == null && (v = 0); + if (typeof v != "number") + v = Double.parseDouble(v); + this.valueOf=function(){return v;}; +}); // BH + +Double.serialVersionUID=Double.prototype.serialVersionUID=-9172774392245257468; +Double.MIN_VALUE=Double.prototype.MIN_VALUE=4.9e-324; +Double.MAX_VALUE=Double.prototype.MAX_VALUE=1.7976931348623157e+308; +Double.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY; +Double.POSITIVE_INFINITY=Number.POSITIVE_INFINITY; +Double.NaN=Number.NaN; +Double.TYPE=Double.prototype.TYPE=Double; + +Clazz_defineMethod(Double,"isNaN", +function(num){ +return isNaN(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Double.isNaN=Double.prototype.isNaN; +Clazz_defineMethod(Double,"isInfinite", +function(num){ +return!isFinite(arguments.length == 1 ? num : this.valueOf()); +},"Number"); +Double.isInfinite=Double.prototype.isInfinite; + +Clazz_defineMethod(Double,"parseDouble", +function(s){ +if(s==null){ +throw new NumberFormatException("null"); +} +if (typeof s == "number")return s; // important -- typeof NaN is "number" and is OK here +var doubleVal=Number(s); +if(isNaN(doubleVal)){ +throw new NumberFormatException("Not a Number : "+s); +} +return doubleVal; +},"String"); +Double.parseDouble=Double.prototype.parseDouble; + +/* +Clazz_defineMethod(Double,"$valueOf", +function(s){ +return new Double(this.parseDouble(s)); +},"String"); +*/ + +Clazz_defineMethod(Double,"$valueOf", +function(v){ +return new Double(v); +},"Number"); + +Double.$valueOf=Double.prototype.$valueOf; + +Clazz_overrideMethod(Double,"equals", +function(s){ +if(s==null||!Clazz_instanceOf(s,Double)){ +return false; +} +return s.valueOf()==this.valueOf(); +},"Object"); + + +//java.lang.B00lean = Boolean; ?? BH why this? +Boolean = java.lang.Boolean = Boolean || function () {Clazz_instantialize (this, arguments);}; +if (Clazz._supportsNativeObject) { + for (var i = 0; i < Clazz._extendedObjectMethods.length; i++) { + var p = Clazz._extendedObjectMethods[i]; + Boolean.prototype[p] = Clazz._O.prototype[p]; + } +} +Boolean.__CLASS_NAME__="Boolean"; +Clazz_implementOf(Boolean,[java.io.Serializable,java.lang.Comparable]); +Boolean.equals=Clazz._innerFunctions.equals; +Boolean.getName=Clazz._innerFunctions.getName; +Boolean.serialVersionUID=Boolean.prototype.serialVersionUID=-3665804199014368530; + +//Clazz_makeConstructor(Boolean, +//function(value){ +//this.valueOf=function(){ +//return value; +//}; +//},"~B"); + +Clazz_overrideConstructor(Boolean, +function(s){ + var b = ((typeof s == "string" ? Boolean.toBoolean(s) : s) ? true : false); + this.valueOf=function(){return b;}; +},"~O"); + +Boolean.parseBoolean=Clazz_defineMethod(Boolean,"parseBoolean", +function(s){ +return Boolean.toBoolean(s); +},"~S"); +Clazz_defineMethod(Boolean,"booleanValue", +function(){ +return this.valueOf(); +}); +Boolean.$valueOf=Clazz_overrideMethod(Boolean,"$valueOf", +function(b){ +return((typeof b == "string"? "true".equalsIgnoreCase(b) : b)?Boolean.TRUE:Boolean.FALSE); +}); + +/* +Boolean.toString=Clazz_defineMethod(Boolean,"toString", +function(b){ +return b?"true":"false"; +},"~B"); +*/ + +Clazz_overrideMethod(Boolean,"toString", +function(){ +return this.valueOf()?"true":"false"; +}); +Clazz_overrideMethod(Boolean,"hashCode", +function(){ +return this.valueOf()?1231:1237; +}); +Clazz_overrideMethod(Boolean,"equals", +function(obj){ +if(Clazz_instanceOf(obj,Boolean)){ +return this.booleanValue()==obj.booleanValue(); +}return false; +},"~O"); +Boolean.getBoolean=Clazz_defineMethod(Boolean,"getBoolean", +function(name){ +var result=false; +try{ +result=Boolean.toBoolean(System.getProperty(name)); +}catch(e){ +if(Clazz_instanceOf(e,IllegalArgumentException)){ +}else if(Clazz_instanceOf(e,NullPointerException)){ +}else{ +throw e; +} +} +return result; +},"~S"); +Clazz_overrideMethod(Boolean,"compareTo", +function(b){ +return(b.value==this.value?0:(this.value?1:-1)); +},"Boolean"); +Boolean.toBoolean=Clazz_defineMethod(Boolean,"toBoolean", +($fz=function(name){ +return((name!=null)&&name.equalsIgnoreCase("true")); +},$fz.isPrivate=true,$fz),"~S"); +Boolean.TRUE=Boolean.prototype.TRUE=new Boolean(true); +Boolean.FALSE=Boolean.prototype.FALSE=new Boolean(false); +Boolean.TYPE=Boolean.prototype.TYPE=Boolean; + + +Clazz._Encoding=new Object(); + +(function(Encoding) { + +Encoding.UTF8="utf-8"; +Encoding.UTF16="utf-16"; +Encoding.ASCII="ascii"; + + +Encoding.guessEncoding=function(str){ +if(str.charCodeAt(0)==0xEF&&str.charCodeAt(1)==0xBB&&str.charCodeAt(2)==0xBF){ +return Encoding.UTF8; +}else if(str.charCodeAt(0)==0xFF&&str.charCodeAt(1)==0xFE){ +return Encoding.UTF16; +}else{ +return Encoding.ASCII; +} +}; + +Encoding.guessEncodingArray=function(a){ +if(a[0]==0xEF&&a[1]==0xBB&&a[2]==0xBF){ +return Encoding.UTF8; +}else if(a[0]==0xFF&&a[1]==0xFE){ +return Encoding.UTF16; +}else{ +return Encoding.ASCII; +} +}; + +Encoding.readUTF8=function(str){ +if (typeof str != "string") return Encoding.readUTF8Array(str); +var encoding=Encoding.guessEncoding(str); +var startIdx=0; +if(encoding==Encoding.UTF8){ +startIdx=3; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} +var arrs=new Array(); +for(var i=startIdx;i0xc0&&charCode<0xe0){ +var c1=charCode&0x1f; +i++; +var c2=str.charCodeAt(i)&0x3f; +var c=(c1<<6)+c2; +arrs[arrs.length]=String.fromCharCode(c); +}else if(charCode>=0xe0){ +var c1=charCode&0x0f; +i++; +var c2=str.charCodeAt(i)&0x3f; +i++; +var c3=str.charCodeAt(i)&0x3f; +var c=(c1<<12)+(c2<<6)+c3; +arrs[arrs.length]=String.fromCharCode(c); +} +} +return arrs.join(''); +}; + +Encoding.readUTF8Array=function(a){ +var encoding=Encoding.guessEncodingArray(a); +var startIdx=0; +if(encoding==Encoding.UTF8){ +startIdx=3; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} +var arrs=new Array(); +for(var i=startIdx;i0xc0&&charCode<0xe0){ +var c1=charCode&0x1f; +var c2=a[++i]&0x3f; +var c=(c1<<6)+c2; +arrs[arrs.length]=String.fromCharCode(c); +}else if(charCode>=0xe0){ +var c1=charCode&0x0f; +var c2=a[++i]&0x3f; +var c3=a[++i]&0x3f; +var c=(c1<<12)+(c2<<6)+c3; +arrs[arrs.length]=String.fromCharCode(c); +} +} +return arrs.join(''); +}; + +Encoding.convert2UTF8=function(str){ +var encoding=this.guessEncoding(str); +var startIdx=0; +if(encoding==Encoding.UTF8){ +return str; +}else if(encoding==Encoding.UTF16){ +startIdx=2; +} + +var offset=0; +var arrs=new Array(offset+str.length-startIdx); + +for(var i=startIdx;i>6); +var c2=0x80+(charCode&0x003f); +arrs[offset+i-startIdx]=String.fromCharCode(c1)+String.fromCharCode(c2); +}else{ +var c1=0xe0+((charCode&0xf000)>>12); +var c2=0x80+((charCode&0x0fc0)>>6); +var c3=0x80+(charCode&0x003f); +arrs[offset+i-startIdx]=String.fromCharCode(c1)+String.fromCharCode(c2)+String.fromCharCode(c3); +} +} +return arrs.join(''); +}; +Encoding.base64Chars=new Array( +'A','B','C','D','E','F','G','H', +'I','J','K','L','M','N','O','P', +'Q','R','S','T','U','V','W','X', +'Y','Z','a','b','c','d','e','f', +'g','h','i','j','k','l','m','n', +'o','p','q','r','s','t','u','v', +'w','x','y','z','0','1','2','3', +'4','5','6','7','8','9','+','/' +); +Encoding.encodeBase64=function(str){ +if(str==null||str.length==0)return str; +var b64=Encoding.base64Chars; +var length=str.length; +var index=0; +var buf=[]; +var c0,c1,c2; +while(index>2]; +if(index>4)]; +if(index>6)]; +buf[buf.length]=b64[c2&0x3F]; +}else{ +buf[buf.length]=b64[((c1<<2)&0x3c)]; +buf[buf.length]='='; +} +}else{ +buf[buf.length]=b64[(c0<<4)&0x30]; +buf[buf.length]='='; +buf[buf.length]='='; +} +} +return buf.join(''); +}; +Encoding.decodeBase64=function(str){ +if(str==null||str.length==0)return str; +var b64=Encoding.base64Chars; +var xb64=Encoding.xBase64Chars; +if(Encoding.xBase64Chars==null){ +xb64=new Object(); +for(var i=0;i>4); +if(c2!=null){ +buf[buf.length]=String.fromCharCode(((c1<<4)&0xff)|c2>>2); +if(c3!=null){ +buf[buf.length]=String.fromCharCode(((c2<<6)&0xff)|c3); +} +} +} +return buf.join(''); +}; + +if(String.prototype.$replace==null){ +java.lang.String=String; +Clazz._setDeclared("String", String); + +if(Clazz._supportsNativeObject){ +for(var i=0;i= 0) c1 = "\\" + c1; + } else { + c1=c1.replace(/([\\\$\.\*\+\|\?\^\{\}\(\)\[\]])/g,function($0,$1){return"\\"+$1;}); + } + return this.replace(new RegExp(c1,"gm"),c2); +}; +sp.$generateExpFunction=function(str){ +var arr=[]; +var orders=[]; +var idx=0; +arr[0]=""; +var i=0; +for(;ithis.length-len)|| +(ooffset>other.length-len)){ +return false; +} +var s1=this.substring(toffset,toffset+len); +var s2=other.substring(ooffset,ooffset+len); +if(ignoreCase){ +s1=s1.toLowerCase(); +s2=s2.toLowerCase(); +} +return s1==s2; +}; + + + +sp.$plit=function(regex,limit){ +if (!limit && regex == " ") + return this.split(regex); + +if(limit!=null&&limit>0){ +if(limit==1){ +return this; +} +var regExp=new RegExp("("+regex+")","gm"); +var count=1; +var s=this.replace(regExp,function($0,$1){ +count++; +if(count==limit){ +return"@@_@@"; +}else if(count>limit){ +return $0; +}else{ +return $0; +} +}); +regExp=new RegExp(regex,"gm"); +var arr=this.split(regExp); +if(arr.length>limit){ +arr[limit-1]=s.substring(s.indexOf("@@_@@")+5); +arr.length=limit; +} +return arr; +}else{ +var regExp=new RegExp(regex,"gm"); +return this.split(regExp); +} +}; +/* +sp.trim=function(){ +var len=this.length; +var st=0; + +while((st0)||(lens.length-pc)){ +return false; +} +while(--pc>=0){ +if(s.charAt(to++)!=prefix.charAt(po++)){ +return false; +} +} +return true; +}; + +sp.startsWith=function(prefix){ +if(arguments.length==1){ +return sn(this,arguments[0],0); +}else if(arguments.length==2){ +return sn(this,arguments[0],arguments[1]); +}else{ +return false; +} +}; + +sp.endsWith=function(suffix){ +return sn(this, suffix,this.length-suffix.length); +}; + +} + +sp.equals=function(anObject){ +return this.valueOf()==anObject; +}; + +sp.equalsIgnoreCase=function(anotherString){ +return(anotherString==null)?false:(this==anotherString +||this.toLowerCase()==anotherString.toLowerCase()); +}; + + +sp.hash=0; + +sp.hashCode=function(){ +var h=this.hash; +if(h==0){ +var off=0; +var len=this.length; +for(var i=0;i255){ +arrs[ii]=0x1a; +arrs[ii+1]=c&0xff; +arrs[ii+2]=(c&0xff00)>>8; +ii+=2; +}else{ +arrs[ii]=c; +} +ii++; +} +return Clazz_newByteArray(arrs); +}; + +/* +sp.compareTo=function(anotherString){ +if(anotherString==null){ +throw new java.lang.NullPointerException(); +} +var len1=this.length; +var len2=anotherString.length; +var n=Math.min(len1,len2); +var k=0; +while(k= 0} // bh added +sp.compareTo = function(a){return this > a ? 1 : this < a ? -1 : 0} // bh added + + + +sp.toCharArray=function(){ +var result=new Array(this.length); +for(var i=0;is2){ +return 1; +}else{ +return-1; +} +} +}; + +sp.contentEquals=function(sb){ +if(this.length!=sb.length()){ +return false; +} +var v=sb.getValue(); +var i=0; +var j=0; +var n=this.length; +while(n--!=0){ +if(this.charCodeAt(i++)!=v[j++]){ +return false; +} +} +return true; +}; + +sp.getChars=function(srcBegin,srcEnd,dst,dstBegin){ +if(srcBegin<0){ +throw new StringIndexOutOfBoundsException(srcBegin); +} +if(srcEnd>this.length){ +throw new StringIndexOutOfBoundsException(srcEnd); +} +if(srcBegin>srcEnd){ +throw new StringIndexOutOfBoundsException(srcEnd-srcBegin); +} +if(dst==null){ +throw new NullPointerException(); +} +for(var i=0;ibytes.length){ + throw new IndexOutOfBoundsException(); + } + if(length>0){ + var isChar=(bytes[offset].length!=null); + if(isChar){ + for(var i=0;i0;){ + value[i]=String.fromCharCode(bytes[i+offset]&0xff); + } + }else{ + hibyte<<=8; + for(var i=count;i-->0;){ + value[i]=String.fromCharCode(hibyte|(bytes[i+offset]&0xff)); + } + } + return value.join(''); +default: + var s=""; + for(var i=0;i= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd || c == 0x1680 + || c >= 0x2000 && c != 0x2007 && (c <= 0x200b || c == 0x2028 || c == 0x2029 || c == 0x3000)); +},"~N"); +c$.isLetter=Clazz_defineMethod(c$,"isLetter", +function(c){ +c = c.charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122); +},"~N"); +c$.isLetterOrDigit=Clazz_defineMethod(c$,"isLetterOrDigit", +function(c){ +c = c.charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57); +},"~N"); +c$.isSpaceChar=Clazz_defineMethod(c$,"isSpaceChar", +function(c){ + var i = c.charCodeAt(0); +if(i==0x20||i==0xa0||i==0x1680)return true; +if(i<0x2000)return false; +return i<=0x200b||i==0x2028||i==0x2029||i==0x202f||i==0x3000; +},"~N"); +c$.digit=Clazz_defineMethod(c$,"digit", +function(c,radix){ +var i = c.charCodeAt(0); +if(radix >= 2 && radix <= 36){ + if(i < 128){ + var result = -1; + if(48 <= i && i <= 57){ + result = i - 48; + }else if(97 <= i && i <= 122){ + result = i - 87; + }else if(65 <= i && i <= 90){ + result=i-(55); + } + return (result < radix ? result : -1); + } +} +return -1; +},"~N,~N"); +Clazz_overrideMethod(c$,"toString", +function(){ +var buf=[this.value]; +return String.valueOf(buf); +}); +c$.toString=Clazz_overrideMethod(c$,"toString", +function(c){ +{ +if(this===Character){ +return"class java.lang.Character"; +} +}return String.valueOf(c); +},"~N"); +c$.TYPE=c$; + + + +Clazz._ArrayWrapper = function(a, type) { + return { + a: a, + __CLASS_NAME__:"Array", + superClazz: Array, + getComponentType: function() {return type}, + instanceOf: function(o) { return Clazz_instanceOf(type, o) }, + getName: function() { return this.__CLASS_NAME__ } + }; +} +c$=Clazz_declareType(java.lang.reflect,"Array"); +c$.newInstance=Clazz_defineMethod(c$,"newInstance", +function(componentType,size){ +var a = Clazz_newArray(size); + a.getClass = function() { return new Clazz._ArrayWrapper(this, componentType);}; +return a; +},"Class,~N"); + +c$.getLength = function(o){return o.length}; +c$.get = function(o, i){return o[i]}; + +javautil.Date=Date; +Date.TYPE="javautil.Date"; +Date.__CLASS_NAME__="Date"; +Clazz._setDeclared("java.util.Date", Date); +Clazz._setDeclared("Date", Date); +Clazz_implementOf(Date,[java.io.Serializable,java.lang.Comparable]); +Clazz_defineMethod(javautil.Date,"clone", +function(){ +return new Date(this.getTime()); +}); + +Clazz_defineMethod(javautil.Date,"before", +function(when){ +return this.getTime()when.getTime(); +},"javautil.Date"); +Clazz_defineMethod(javautil.Date,"equals", +function(obj){ +return Clazz_instanceOf(obj,javautil.Date)&&this.getTime()==(obj).getTime(); +},"Object"); +Clazz_defineMethod(javautil.Date,"compareTo", +function(anotherDate){ +if (anotherDate == null)return 1; +var thisTime=this.getTime(); +var anotherTime=anotherDate.getTime(); +return(thisTime>32)); +}); + +c$=Clazz_decorateAsClass(function(){ +this.source=null; +Clazz_instantialize(this,arguments); +},javautil,"EventObject",null,java.io.Serializable); +Clazz_makeConstructor(c$, +function(source){ +if(source!=null)this.source=source; +else throw new IllegalArgumentException(); +},"~O"); +Clazz_defineMethod(c$,"getSource", +function(){ +return this.source; +}); +Clazz_overrideMethod(c$,"toString", +function(){ +return this.getClass().getName()+"[source="+String.valueOf(this.source)+']'; +}); +Clazz_declareInterface(javautil,"EventListener"); + +c$=Clazz_decorateAsClass(function(){ +this.listener=null; +Clazz_instantialize(this,arguments); +},javautil,"EventListenerProxy",null,javautil.EventListener); +Clazz_makeConstructor(c$, +function(listener){ +this.listener=listener; +},"javautil.EventListener"); +Clazz_defineMethod(c$,"getListener", +function(){ +return this.listener; +}); +Clazz_declareInterface(javautil,"Iterator"); + +Clazz_declareInterface(javautil,"ListIterator",javautil.Iterator); +Clazz_declareInterface(javautil,"Enumeration"); +Clazz_declareInterface(javautil,"Collection",Iterable); + +Clazz_declareInterface(javautil,"Set",javautil.Collection); +Clazz_declareInterface(javautil,"Map"); +Clazz_declareInterface(javautil.Map,"Entry"); + +Clazz_declareInterface(javautil,"List",javautil.Collection); + +Clazz_declareInterface(javautil,"Queue",javautil.Collection); +Clazz_declareInterface(javautil,"RandomAccess"); +c$=Clazz_decorateAsClass(function(){ +this.detailMessage=null; +this.cause=null; +this.stackTrace=null; +Clazz_instantialize(this,arguments); +},java.lang,"Throwable",null,java.io.Serializable); +Clazz_prepareFields(c$,function(){ +this.cause=this; +//alert("e0 "+ arguments.callee.caller.caller.caller.caller.caller) +}); +Clazz_makeConstructor(c$, +function(){ +this.fillInStackTrace(); +}); +Clazz_makeConstructor(c$, +function(message,cause){ +this.fillInStackTrace(); +if (!cause && typeof message == "object") { + cause = message; + message = cause.toString(); +} +cause && (this.cause=cause); +this.detailMessage=message; +},"~S,Throwable"); + + + + +Clazz_defineMethod(c$,"getMessage", +function(){ +return (this.message || this.detailMessage || this.toString()); +}); +Clazz_defineMethod(c$,"getLocalizedMessage", +function(){ +return this.getMessage(); +}); +Clazz_defineMethod(c$,"getCause", +function(){ +return(this.cause===this?null:this.cause); +}); +Clazz_defineMethod(c$,"initCause", +function(cause){ +if(this.cause!==this)throw new IllegalStateException("Can't overwrite cause"); +if(cause===this)throw new IllegalArgumentException("Self-causation not permitted"); +this.cause=cause; +return this; +},"Throwable"); +Clazz_overrideMethod(c$,"toString", +function(){ +var s=this.getClass().getName(); +var message=this.message || this.detailMessage; +return(message ? s+": "+message : s); +}); +Clazz_defineMethod(c$,"printStackTrace", +function(){ +System.err.println(this.getStackTrace ? this.getStackTrace() : this.message + " " + Clazz_getStackTrace()); +}); + +Clazz_defineMethod(c$,"getStackTrace", +function(){ +var s = "" + this + "\n"; +for(var i=0;i-1||caller!=null){ +var clazzName=null; +var nativeClass=null; +if(!noLooping||caller==Clazz_tryToSearchAndExecute||caller==Clazz_superCall||caller==null){ +if(index<0){ +break; +} +noLooping=true; +superCaller=Clazz._callingStackTraces[index].caller; +nativeClass=Clazz._callingStackTraces[index].owner; +index--; +}else{ +superCaller=caller; +if(superCaller.claxxOwner!=null){ +nativeClass=superCaller.claxxOwner; +}else if(superCaller.exClazz!=null){ +nativeClass=superCaller.exClazz; +} +} +var st=new StackTraceElement( +((nativeClass!=null&&nativeClass.__CLASS_NAME__.length!=0)? +nativeClass.__CLASS_NAME__:"anonymous"), +((superCaller.exName==null)?"anonymous":superCaller.exName) ++" ("+Clazz_getParamsType(superCaller.arguments)+")", +null,-1); +st.nativeClazz=nativeClass; +this.stackTrace[this.stackTrace.length]=st; +for(var i=0;i":this.declaringClass; +}); +Clazz_defineMethod(c$,"getFileName", +function(){ +return this.fileName; +}); +Clazz_defineMethod(c$,"getLineNumber", +function(){ +return this.lineNumber; +}); +Clazz_defineMethod(c$,"getMethodName", +function(){ +return(this.methodName==null)?"":this.methodName; +}); +Clazz_overrideMethod(c$,"hashCode", +function(){ +if(this.methodName==null){ +return 0; +}return this.methodName.hashCode()^this.declaringClass.hashCode(); +}); +Clazz_defineMethod(c$,"isNativeMethod", +function(){ +return this.lineNumber==-2; +}); +Clazz_overrideMethod(c$,"toString", +function(){ +var buf = this.getClassName() + "." + this.getMethodName(); +if(this.isNativeMethod()){ +buf += ("(Native Method)"); +}else{ +var fName=this.getFileName(); +if(fName==null){ +buf += ("(Unknown Source)"); +}else{ +var lineNum=this.getLineNumber(); +buf += ('('); +buf += (fName); +if(lineNum>=0){ +buf += (':'); +buf = buf + lineNum; +}buf += (')'); +}}return buf; +}); +TypeError.prototype.getMessage || (TypeError.prototype.getMessage = function(){ return (this.message || this.toString()) + (this.getStackTrace ? this.getStackTrace() : Clazz_getStackTrace())}); + + +Clazz_Error = Error; + +Clazz_declareTypeError = function (prefix, name, clazzParent, interfacez, + parentClazzInstance, _declareType) { + var f = function () { + Clazz_instantialize (this, arguments); + return Clazz_Error(); + }; + return Clazz_decorateAsClass (f, prefix, name, clazzParent, interfacez, + parentClazzInstance); +}; + +// at least allow Error() by itself to work as before +Clazz._Error || (Clazz._Error = Error); +Clazz_decorateAsClass (function (){Clazz_instantialize(this, arguments);return Clazz._Error();}, java.lang, "Error", Throwable); + +//c$=Clazz_declareTypeError(java.lang,"Error",Throwable); + + +c$=Clazz_declareType(java.lang,"LinkageError",Error); + +c$=Clazz_declareType(java.lang,"IncompatibleClassChangeError",LinkageError); + +c$=Clazz_declareType(java.lang,"AbstractMethodError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"AssertionError",Error); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,AssertionError,["" + detailMessage,(Clazz_instanceOf(detailMessage,Throwable)?detailMessage:null)]); +},"~O"); + +c$=Clazz_declareType(java.lang,"ClassCircularityError",LinkageError); + +c$=Clazz_declareType(java.lang,"ClassFormatError",LinkageError); + +c$=Clazz_decorateAsClass(function(){ +this.exception=null; +Clazz_instantialize(this,arguments); +},java.lang,"ExceptionInInitializerError",LinkageError); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ExceptionInInitializerError); +this.initCause(null); +}); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,ExceptionInInitializerError,[detailMessage]); +this.initCause(null); +},"~S"); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,ExceptionInInitializerError); +this.exception=exception; +this.initCause(exception); +},"Throwable"); +Clazz_defineMethod(c$,"getException", +function(){ +return this.exception; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.exception; +}); + +c$=Clazz_declareType(java.lang,"IllegalAccessError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"InstantiationError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"VirtualMachineError",Error); + +c$=Clazz_declareType(java.lang,"InternalError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"NoClassDefFoundError",LinkageError); + +c$=Clazz_declareType(java.lang,"NoSuchFieldError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"NoSuchMethodError",IncompatibleClassChangeError); + +c$=Clazz_declareType(java.lang,"OutOfMemoryError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"StackOverflowError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"UnknownError",VirtualMachineError); + +c$=Clazz_declareType(java.lang,"UnsatisfiedLinkError",LinkageError); + +c$=Clazz_declareType(java.lang,"UnsupportedClassVersionError",ClassFormatError); + +c$=Clazz_declareType(java.lang,"VerifyError",LinkageError); + +c$=Clazz_declareType(java.lang,"ThreadDeath",Error); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ThreadDeath,[]); +}); + +c$=Clazz_declareType(java.lang,"Exception",Throwable); + +c$=Clazz_declareType(java.lang,"RuntimeException",Exception); + +c$=Clazz_declareType(java.lang,"ArithmeticException",RuntimeException); + +c$=Clazz_declareType(java.lang,"IndexOutOfBoundsException",RuntimeException); + +c$=Clazz_declareType(java.lang,"ArrayIndexOutOfBoundsException",IndexOutOfBoundsException); +Clazz_makeConstructor(c$, +function(index){ +Clazz_superConstructor(this,ArrayIndexOutOfBoundsException,["Array index out of range: "+index]); +},"~N"); + +c$=Clazz_declareType(java.lang,"ArrayStoreException",RuntimeException); + +c$=Clazz_declareType(java.lang,"ClassCastException",RuntimeException); + +c$=Clazz_decorateAsClass(function(){ +this.ex=null; +Clazz_instantialize(this,arguments); +},java.lang,"ClassNotFoundException",Exception); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,ClassNotFoundException,[Clazz_castNullAs("Throwable")]); +}); +Clazz_makeConstructor(c$, +function(detailMessage){ +Clazz_superConstructor(this,ClassNotFoundException,[detailMessage,null]); +},"~S"); +Clazz_makeConstructor(c$, +function(detailMessage,exception){ +Clazz_superConstructor(this,ClassNotFoundException,[detailMessage]); +this.ex=exception; +},"~S,Throwable"); +Clazz_defineMethod(c$,"getException", +function(){ +return this.ex; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.ex; +}); + +c$=Clazz_declareType(java.lang,"CloneNotSupportedException",Exception); + +c$=Clazz_declareType(java.lang,"IllegalAccessException",Exception); + +c$=Clazz_declareType(java.lang,"IllegalArgumentException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,IllegalArgumentException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"IllegalMonitorStateException",RuntimeException); + +c$=Clazz_declareType(java.lang,"IllegalStateException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,IllegalStateException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"IllegalThreadStateException",IllegalArgumentException); + +c$=Clazz_declareType(java.lang,"InstantiationException",Exception); + +c$=Clazz_declareType(java.lang,"InterruptedException",Exception); + +c$=Clazz_declareType(java.lang,"NegativeArraySizeException",RuntimeException); + +c$=Clazz_declareType(java.lang,"NoSuchFieldException",Exception); + +c$=Clazz_declareType(java.lang,"NoSuchMethodException",Exception); + +c$=Clazz_declareType(java.lang,"NullPointerException",RuntimeException); + +c$=Clazz_declareType(java.lang,"NumberFormatException",IllegalArgumentException); + +c$=Clazz_declareType(java.lang,"SecurityException",RuntimeException); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,SecurityException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_declareType(java.lang,"StringIndexOutOfBoundsException",IndexOutOfBoundsException); +Clazz_makeConstructor(c$, +function(index){ +Clazz_superConstructor(this,StringIndexOutOfBoundsException,["String index out of range: "+index]); +},"~N"); + +c$=Clazz_declareType(java.lang,"UnsupportedOperationException",RuntimeException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,UnsupportedOperationException,[]); +}); +Clazz_makeConstructor(c$, +function(cause){ +Clazz_superConstructor(this,UnsupportedOperationException,[(cause==null?null:cause.toString()),cause]); +},"Throwable"); + +c$=Clazz_decorateAsClass(function(){ +this.target=null; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"InvocationTargetException",Exception); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[Clazz_castNullAs("Throwable")]); +}); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[null,exception]); +this.target=exception; +},"Throwable"); +Clazz_makeConstructor(c$, +function(exception,detailMessage){ +Clazz_superConstructor(this,java.lang.reflect.InvocationTargetException,[detailMessage,exception]); +this.target=exception; +},"Throwable,~S"); +Clazz_defineMethod(c$,"getTargetException", +function(){ +return this.target; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.target; +}); + +c$=Clazz_decorateAsClass(function(){ +this.undeclaredThrowable=null; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"UndeclaredThrowableException",RuntimeException); +Clazz_makeConstructor(c$, +function(exception){ +Clazz_superConstructor(this,java.lang.reflect.UndeclaredThrowableException); +this.undeclaredThrowable=exception; +this.initCause(exception); +},"Throwable"); +Clazz_makeConstructor(c$, +function(exception,detailMessage){ +Clazz_superConstructor(this,java.lang.reflect.UndeclaredThrowableException,[detailMessage]); +this.undeclaredThrowable=exception; +this.initCause(exception); +},"Throwable,~S"); +Clazz_defineMethod(c$,"getUndeclaredThrowable", +function(){ +return this.undeclaredThrowable; +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.undeclaredThrowable; +}); + +c$=Clazz_declareType(java.io,"IOException",Exception); + + +c$=Clazz_declareType(java.io,"CharConversionException",java.io.IOException); + +c$=Clazz_declareType(java.io,"EOFException",java.io.IOException); + +c$=Clazz_declareType(java.io,"FileNotFoundException",java.io.IOException); + +c$=Clazz_decorateAsClass(function(){ +this.bytesTransferred=0; +Clazz_instantialize(this,arguments); +},java.io,"InterruptedIOException",java.io.IOException); + +c$=Clazz_declareType(java.io,"SyncFailedException",java.io.IOException); + +c$=Clazz_declareType(java.io,"UnsupportedEncodingException",java.io.IOException); + +c$=Clazz_declareType(java.io,"UTFDataFormatException",java.io.IOException); + +// ignore ObjectStream exceptions + +Clazz_defineMethod(c$,"getMessage", +function(){ +var msg=Clazz_superCall(this,java.io.WriteAbortedException,"getMessage",[]); +return (this.detail ? msg + "; "+this.detail.toString() : msg); +}); +Clazz_overrideMethod(c$,"getCause", +function(){ +return this.detail; +}); + +c$=Clazz_declareType(javautil,"ConcurrentModificationException",RuntimeException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this,javautil.ConcurrentModificationException,[]); +}); + +c$=Clazz_declareType(javautil,"EmptyStackException",RuntimeException); + +c$=Clazz_decorateAsClass(function(){ +this.className=null; +this.key=null; +Clazz_instantialize(this,arguments); +},javautil,"MissingResourceException",RuntimeException); +Clazz_makeConstructor(c$, +function(detailMessage,className,resourceName){ +Clazz_superConstructor(this,javautil.MissingResourceException,[detailMessage]); +this.className=className; +this.key=resourceName; +},"~S,~S,~S"); +Clazz_defineMethod(c$,"getClassName", +function(){ +return this.className; +}); +Clazz_defineMethod(c$,"getKey", +function(){ +return this.key; +}); + +c$=Clazz_declareType(javautil,"NoSuchElementException",RuntimeException); + +c$=Clazz_declareType(javautil,"TooManyListenersException",Exception); + +c$=Clazz_declareType(java.lang,"Void"); +c$.TYPE = c$; + +Clazz_declareInterface(java.lang.reflect,"GenericDeclaration"); +Clazz_declareInterface(java.lang.reflect,"AnnotatedElement"); + +c$=Clazz_declareType(java.lang.reflect,"AccessibleObject",null,java.lang.reflect.AnnotatedElement); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$,"isAccessible", +function(){ +return false; +}); +c$.setAccessible=Clazz_defineMethod(c$,"setAccessible", +function(objects,flag){ +return; +},"~A,~B"); +Clazz_defineMethod(c$,"setAccessible", +function(flag){ +return; +},"~B"); +Clazz_overrideMethod(c$,"isAnnotationPresent", +function(annotationType){ +return false; +},"Class"); +Clazz_overrideMethod(c$,"getDeclaredAnnotations", +function(){ +return new Array(0); +}); +Clazz_overrideMethod(c$,"getAnnotations", +function(){ +return new Array(0); +}); +Clazz_overrideMethod(c$,"getAnnotation", +function(annotationType){ +return null; +},"Class"); +c$.marshallArguments=Clazz_defineMethod(c$,"marshallArguments", +function(parameterTypes,args){ +return null; +},"~A,~A"); +Clazz_defineMethod(c$,"invokeV", +function(receiver,args){ +return; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeL", +function(receiver,args){ +return null; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeI", +function(receiver,args){ +return 0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeJ", +function(receiver,args){ +return 0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeF", +function(receiver,args){ +return 0.0; +},"~O,~A"); +Clazz_defineMethod(c$,"invokeD", +function(receiver,args){ +return 0.0; +},"~O,~A"); +c$.emptyArgs=c$.prototype.emptyArgs=new Array(0); +Clazz_declareInterface(java.lang.reflect,"InvocationHandler"); +c$=Clazz_declareInterface(java.lang.reflect,"Member"); +c$=Clazz_declareType(java.lang.reflect,"Modifier"); + +Clazz_makeConstructor(c$, +function(){ +}); +c$.isAbstract=Clazz_defineMethod(c$,"isAbstract", +function(modifiers){ +return((modifiers&1024)!=0); +},"~N"); +c$.isFinal=Clazz_defineMethod(c$,"isFinal", +function(modifiers){ +return((modifiers&16)!=0); +},"~N"); +c$.isInterface=Clazz_defineMethod(c$,"isInterface", +function(modifiers){ +return((modifiers&512)!=0); +},"~N"); +c$.isNative=Clazz_defineMethod(c$,"isNative", +function(modifiers){ +return((modifiers&256)!=0); +},"~N"); +c$.isPrivate=Clazz_defineMethod(c$,"isPrivate", +function(modifiers){ +return((modifiers&2)!=0); +},"~N"); +c$.isProtected=Clazz_defineMethod(c$,"isProtected", +function(modifiers){ +return((modifiers&4)!=0); +},"~N"); +c$.isPublic=Clazz_defineMethod(c$,"isPublic", +function(modifiers){ +return((modifiers&1)!=0); +},"~N"); +c$.isStatic=Clazz_defineMethod(c$,"isStatic", +function(modifiers){ +return((modifiers&8)!=0); +},"~N"); +c$.isStrict=Clazz_defineMethod(c$,"isStrict", +function(modifiers){ +return((modifiers&2048)!=0); +},"~N"); +c$.isSynchronized=Clazz_defineMethod(c$,"isSynchronized", +function(modifiers){ +return((modifiers&32)!=0); +},"~N"); +c$.isTransient=Clazz_defineMethod(c$,"isTransient", +function(modifiers){ +return((modifiers&128)!=0); +},"~N"); +c$.isVolatile=Clazz_defineMethod(c$,"isVolatile", +function(modifiers){ +return((modifiers&64)!=0); +},"~N"); +c$.toString=Clazz_defineMethod(c$,"toString", +function(modifiers){ +var sb=new Array(0); +if(java.lang.reflect.Modifier.isPublic(modifiers))sb[sb.length]="public"; +if(java.lang.reflect.Modifier.isProtected(modifiers))sb[sb.length]="protected"; +if(java.lang.reflect.Modifier.isPrivate(modifiers))sb[sb.length]="private"; +if(java.lang.reflect.Modifier.isAbstract(modifiers))sb[sb.length]="abstract"; +if(java.lang.reflect.Modifier.isStatic(modifiers))sb[sb.length]="static"; +if(java.lang.reflect.Modifier.isFinal(modifiers))sb[sb.length]="final"; +if(java.lang.reflect.Modifier.isTransient(modifiers))sb[sb.length]="transient"; +if(java.lang.reflect.Modifier.isVolatile(modifiers))sb[sb.length]="volatile"; +if(java.lang.reflect.Modifier.isSynchronized(modifiers))sb[sb.length]="synchronized"; +if(java.lang.reflect.Modifier.isNative(modifiers))sb[sb.length]="native"; +if(java.lang.reflect.Modifier.isStrict(modifiers))sb[sb.length]="strictfp"; +if(java.lang.reflect.Modifier.isInterface(modifiers))sb[sb.length]="interface"; +if(sb.length>0){ +return sb.join(" "); +}return""; +},"~N"); + +c$=Clazz_decorateAsClass(function(){ +this.clazz=null; +this.parameterTypes=null; +this.exceptionTypes=null; +this.modifiers=0; +Clazz_instantialize(this,arguments); +},java.lang.reflect,"Constructor",java.lang.reflect.AccessibleObject,[java.lang.reflect.GenericDeclaration,java.lang.reflect.Member]); +Clazz_makeConstructor(c$, +function(declaringClass,parameterTypes,checkedExceptions,modifiers){ +Clazz_superConstructor(this,java.lang.reflect.Constructor,[]); +this.clazz=declaringClass; +this.parameterTypes=parameterTypes; +this.exceptionTypes=checkedExceptions; +this.modifiers=modifiers; +},"Class,~A,~A,~N"); +Clazz_overrideMethod(c$,"getTypeParameters", +function(){ +return null; +}); +Clazz_defineMethod(c$,"toGenericString", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getGenericParameterTypes", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getGenericExceptionTypes", +function(){ +return null; +}); +Clazz_defineMethod(c$,"getParameterAnnotations", +function(){ +return null; +}); +Clazz_defineMethod(c$,"isVarArgs", +function(){ +return false; +}); +Clazz_overrideMethod(c$,"isSynthetic", +function(){ +return false; +}); +Clazz_overrideMethod(c$,"equals", +function(object){ +if(object!=null&&Clazz_instanceOf(object,java.lang.reflect.Constructor)){ +var other=object; +if(this.getDeclaringClass()===other.getDeclaringClass()){ +var params1=this.parameterTypes; +var params2=other.parameterTypes; +if(params1.length==params2.length){ +for(var i=0;i 10 || newPriority < 1) { +throw new IllegalArgumentException(); +}this.priority = newPriority; +}, "~N"); +Clazz_defineMethod(c$, "getPriority", +function(){ +return this.priority; +}); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "getName", +function(){ +return String.valueOf(this.name); +}); +Clazz_defineMethod(c$, "getThreadGroup", +function(){ +return this.group; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +var group = this.getThreadGroup(); +if (group != null) { +return "Thread[" + this.getName() + "," + this.getPriority() + "," + group.getName() + "]"; +} else { +return "Thread[" + this.getName() + "," + this.getPriority() + "," + "" + "]"; +}}); +c$.J2S_THREAD = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.parent = null; +this.name = null; +this.maxPriority = 0; +Clazz_instantialize(this, arguments);}, java.lang, "ThreadGroup", null); +Clazz_makeConstructor(c$, +function(){ +this.name = "system"; +this.maxPriority = 10; +}); +Clazz_makeConstructor(c$, +function(name){ +this.construct (Thread.currentThread().getThreadGroup(), name); +}, "~S"); +Clazz_makeConstructor(c$, +function(parent, name){ +if (parent == null) { +throw new NullPointerException(); +}this.name = name; +this.parent = parent; +this.maxPriority = 10; +}, "ThreadGroup,~S"); +Clazz_defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_defineMethod(c$, "getParent", +function(){ +return this.parent; +}); +Clazz_defineMethod(c$, "getMaxPriority", +function(){ +return this.maxPriority; +}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.FilterInputStream"], "java.io.BufferedInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.count = 0; +this.pos = 0; +this.markpos = -1; +this.marklimit = 0; +Clazz_instantialize(this, arguments);}, java.io, "BufferedInputStream", java.io.FilterInputStream); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor(this, java.io.BufferedInputStream, [$in]); +this.buf = Clazz_newByteArray (8192, 0); +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "getInIfOpen", +function(){ +var input = this.$in; +if (input == null) throw new java.io.IOException("Stream closed"); +return input; +}); +Clazz_defineMethod(c$, "getBufIfOpen", +function(){ +var buffer = this.buf; +if (buffer == null) throw new java.io.IOException("Stream closed"); +return buffer; +}); +Clazz_overrideMethod(c$, "resetStream", +function(){ +}); +Clazz_defineMethod(c$, "fill", +function(){ +var buffer = this.getBufIfOpen(); +if (this.markpos < 0) this.pos = 0; + else if (this.pos >= buffer.length) if (this.markpos > 0) { +var sz = this.pos - this.markpos; +System.arraycopy(buffer, this.markpos, buffer, 0, sz); +this.pos = sz; +this.markpos = 0; +} else if (buffer.length >= this.marklimit) { +this.markpos = -1; +this.pos = 0; +} else { +var nsz = this.pos * 2; +if (nsz > this.marklimit) nsz = this.marklimit; +var nbuf = Clazz_newByteArray (nsz, 0); +System.arraycopy(buffer, 0, nbuf, 0, this.pos); +buffer = this.buf = nbuf; +}this.count = this.pos; +var n = this.isRead(buffer, this.pos, buffer.length - this.pos); +if (n > 0) this.count = n + this.pos; +}); +Clazz_overrideMethod(c$, "readByteAsInt", +function(){ +if (this.pos >= this.count) { +this.fill(); +if (this.pos >= this.count) return -1; +}return this.getBufIfOpen()[this.pos++] & 0xff; +}); +Clazz_defineMethod(c$, "read1", +function(b, off, len){ +var avail = this.count - this.pos; +if (avail <= 0) { +if (len >= this.getBufIfOpen().length && this.markpos < 0) { +return this.isRead(b, off, len); +}this.fill(); +avail = this.count - this.pos; +if (avail <= 0) return -1; +}var cnt = (avail < len) ? avail : len; +System.arraycopy(this.getBufIfOpen(), this.pos, b, off, cnt); +this.pos += cnt; +return cnt; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "isRead", +function(b, off, len){ +var is = this.getInIfOpen(); +{ +if (is.readBAIS) return is.readBAIS(b, off, len); +}return is.read(b, off, len); +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.readBIS(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readBIS", +function(b, off, len){ +this.getBufIfOpen(); +if ((off | len | (off + len) | (b.length - (off + len))) < 0) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var n = 0; +for (; ; ) { +var nread = this.read1(b, off + n, len - n); +if (nread <= 0) return (n == 0) ? nread : n; +n += nread; +if (n >= len) return n; +var input = this.$in; +if (input != null && input.available() <= 0) return n; +} +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(n){ +this.getBufIfOpen(); +if (n <= 0) { +return 0; +}var avail = this.count - this.pos; +if (avail <= 0) { +if (this.markpos < 0) return this.getInIfOpen().skip(n); +this.fill(); +avail = this.count - this.pos; +if (avail <= 0) return 0; +}var skipped = (avail < n) ? avail : n; +this.pos += skipped; +return skipped; +}, "~N"); +Clazz_overrideMethod(c$, "available", +function(){ +var n = this.count - this.pos; +var avail = this.getInIfOpen().available(); +return n > (2147483647 - avail) ? 2147483647 : n + avail; +}); +Clazz_overrideMethod(c$, "mark", +function(readlimit){ +this.marklimit = readlimit; +this.markpos = this.pos; +}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.getBufIfOpen(); +if (this.markpos < 0) throw new java.io.IOException("Resetting to invalid mark"); +this.pos = this.markpos; +}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "close", +function(){ +var input = this.$in; +this.$in = null; +if (input != null) input.close(); +return; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.BufferedReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +this.cb = null; +this.nChars = 0; +this.nextChar = 0; +this.markedChar = -1; +this.readAheadLimit = 0; +this.skipLF = false; +this.markedSkipLF = false; +Clazz_instantialize(this, arguments);}, java.io, "BufferedReader", java.io.Reader); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor(this, java.io.BufferedReader, [$in]); +this.$in = $in; +this.setSize(8192); +}, "java.io.Reader"); +Clazz_defineMethod(c$, "setSize", +function(sz){ +if (sz <= 0) throw new IllegalArgumentException("Buffer size <= 0"); +this.cb = Clazz_newCharArray (sz, '\0'); +this.nextChar = this.nChars = 0; +}, "~N"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.$in == null) throw new java.io.IOException("Stream closed"); +}); +Clazz_defineMethod(c$, "fill", +function(){ +var dst; +if (this.markedChar <= -1) { +dst = 0; +} else { +var delta = this.nextChar - this.markedChar; +if (delta >= this.readAheadLimit) { +this.markedChar = -2; +this.readAheadLimit = 0; +dst = 0; +} else { +if (this.readAheadLimit <= this.cb.length) { +System.arraycopy(this.cb, this.markedChar, this.cb, 0, delta); +this.markedChar = 0; +dst = delta; +} else { +var ncb = Clazz_newCharArray (this.readAheadLimit, '\0'); +System.arraycopy(this.cb, this.markedChar, ncb, 0, delta); +this.cb = ncb; +this.markedChar = 0; +dst = delta; +}this.nextChar = this.nChars = delta; +}}var n; +do { +n = this.$in.read(this.cb, dst, this.cb.length - dst); +} while (n == 0); +if (n > 0) { +this.nChars = dst + n; +this.nextChar = dst; +}}); +Clazz_defineMethod(c$, "read1", +function(cbuf, off, len){ +if (this.nextChar >= this.nChars) { +if (len >= this.cb.length && this.markedChar <= -1 && !this.skipLF) { +return this.$in.read(cbuf, off, len); +}this.fill(); +}if (this.nextChar >= this.nChars) return -1; +if (this.skipLF) { +this.skipLF = false; +if (this.cb[this.nextChar] == '\n') { +this.nextChar++; +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) return -1; +}}var n = Math.min(len, this.nChars - this.nextChar); +System.arraycopy(this.cb, this.nextChar, cbuf, off, n); +this.nextChar += n; +return n; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "read", +function(cbuf, off, len){ +{ +this.ensureOpen(); +if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var n = this.read1(cbuf, off, len); +if (n <= 0) return n; +while ((n < len) && this.$in.ready()) { +var n1 = this.read1(cbuf, off + n, len - n); +if (n1 <= 0) break; +n += n1; +} +return n; +}}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readLine1", +function(ignoreLF){ +var s = null; +var startChar; +{ +this.ensureOpen(); +var omitLF = ignoreLF || this.skipLF; +for (; ; ) { +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) { +if (s != null && s.length > 0) return s.toString(); +return null; +}var eol = false; +var c = String.fromCharCode(0); +var i; +if (omitLF && (this.cb[this.nextChar] == '\n')) this.nextChar++; +this.skipLF = false; +omitLF = false; +charLoop : for (i = this.nextChar; i < this.nChars; i++) { +c = this.cb[i]; +if ((c == '\n') || (c == '\r')) { +eol = true; +break charLoop; +}} +startChar = this.nextChar; +this.nextChar = i; +var str = String.instantialize(this.cb, startChar, i - startChar); +if (eol) { +if (s != null) { +s += str; +str = s; +}this.nextChar++; +if (c == '\r') { +this.skipLF = true; +}return str; +}if (s == null) s = ""; +s += str; +} +}}, "~B"); +Clazz_defineMethod(c$, "readLine", +function(){ +return this.readLine1(false); +}); +Clazz_overrideMethod(c$, "skip", +function(n){ +if (n < 0) { +throw new IllegalArgumentException("skip value is negative"); +}{ +this.ensureOpen(); +var r = n; +while (r > 0) { +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) break; +if (this.skipLF) { +this.skipLF = false; +if (this.cb[this.nextChar] == '\n') { +this.nextChar++; +}}var d = this.nChars - this.nextChar; +if (r <= d) { +this.nextChar += r; +r = 0; +break; +}r -= d; +this.nextChar = this.nChars; +} +return n - r; +}}, "~N"); +Clazz_defineMethod(c$, "ready", +function(){ +{ +this.ensureOpen(); +if (this.skipLF) { +if (this.nextChar >= this.nChars && this.$in.ready()) { +this.fill(); +}if (this.nextChar < this.nChars) { +if (this.cb[this.nextChar] == '\n') this.nextChar++; +this.skipLF = false; +}}return (this.nextChar < this.nChars) || this.$in.ready(); +}}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +if (readAheadLimit < 0) { +throw new IllegalArgumentException("Read-ahead limit < 0"); +}{ +this.ensureOpen(); +this.readAheadLimit = readAheadLimit; +this.markedChar = this.nextChar; +this.markedSkipLF = this.skipLF; +}}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +{ +this.ensureOpen(); +if (this.markedChar < 0) throw new java.io.IOException((this.markedChar == -2) ? "Mark invalid" : "Stream not marked"); +this.nextChar = this.markedChar; +this.skipLF = this.markedSkipLF; +}}); +Clazz_defineMethod(c$, "close", +function(){ +{ +if (this.$in == null) return; +this.$in.close(); +this.$in = null; +this.cb = null; +}}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Writer"], "java.io.BufferedWriter", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.out = null; +this.buf = null; +this.pos = 0; +this.lineSeparator = "\r\n"; +Clazz_instantialize(this, arguments);}, java.io, "BufferedWriter", java.io.Writer); +Clazz_makeConstructor(c$, +function(out){ +Clazz_superConstructor(this, java.io.BufferedWriter, [out]); +this.out = out; +this.buf = Clazz_newCharArray (8192, '\0'); +}, "java.io.Writer"); +Clazz_makeConstructor(c$, +function(out, size){ +Clazz_superConstructor(this, java.io.BufferedWriter, [out]); +if (size > 0) { +this.out = out; +this.buf = Clazz_newCharArray (size, '\0'); +} else { +throw new IllegalArgumentException(("K0058")); +}}, "java.io.Writer,~N"); +Clazz_defineMethod(c$, "close", +function(){ +{ +if (this.isOpen()) { +this.flush(); +this.out.close(); +this.buf = null; +this.out = null; +}}}); +Clazz_defineMethod(c$, "flush", +function(){ +{ +if (this.isOpen()) { +if (this.pos > 0) { +this.out.write(this.buf, 0, this.pos); +}this.pos = 0; +this.out.flush(); +} else { +throw new java.io.IOException(("K005d")); +}}}); +Clazz_defineMethod(c$, "isOpen", +function(){ +return this.out != null; +}); +Clazz_defineMethod(c$, "newLine", +function(){ +this.write("\r\n", 0, "\r\n".length); +}); +Clazz_defineMethod(c$, "write", +function(cbuf, offset, count){ +{ +if (!this.isOpen()) { +throw new java.io.IOException(("K005d")); +}if (offset < 0 || offset > cbuf.length - count || count < 0) { +throw new IndexOutOfBoundsException(); +}if (this.pos == 0 && count >= this.buf.length) { +this.out.write(cbuf, offset, count); +return; +}var available = this.buf.length - this.pos; +if (count < available) { +available = count; +}if (available > 0) { +System.arraycopy(cbuf, offset, this.buf, this.pos, available); +this.pos += available; +}if (this.pos == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +if (count > available) { +offset += available; +available = count - available; +if (available >= this.buf.length) { +this.out.write(cbuf, offset, available); +return; +}System.arraycopy(cbuf, offset, this.buf, this.pos, available); +this.pos += available; +}}}}, "~A,~N,~N"); +Clazz_defineMethod(c$, "write", +function(oneChar){ +{ +if (this.isOpen()) { +if (this.pos >= this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +}this.buf[this.pos++] = String.fromCharCode(oneChar); +} else { +throw new java.io.IOException(("K005d")); +}}}, "~N"); +Clazz_defineMethod(c$, "write", +function(str, offset, count){ +{ +if (!this.isOpen()) { +throw new java.io.IOException(("K005d")); +}if (count <= 0) { +return; +}if (offset > str.length - count || offset < 0) { +throw new StringIndexOutOfBoundsException(); +}if (this.pos == 0 && count >= this.buf.length) { +var chars = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + count, chars, 0); +this.out.write(chars, 0, count); +return; +}var available = this.buf.length - this.pos; +if (count < available) { +available = count; +}if (available > 0) { +str.getChars(offset, offset + available, this.buf, this.pos); +this.pos += available; +}if (this.pos == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +if (count > available) { +offset += available; +available = count - available; +if (available >= this.buf.length) { +var chars = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + available, chars, 0); +this.out.write(chars, 0, available); +return; +}str.getChars(offset, offset + available, this.buf, this.pos); +this.pos += available; +}}}}, "~S,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.InputStream"], "java.io.ByteArrayInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.pos = 0; +this.$mark = 0; +this.count = 0; +Clazz_instantialize(this, arguments);}, java.io, "ByteArrayInputStream", java.io.InputStream); +Clazz_makeConstructor(c$, +function(buf){ +Clazz_superConstructor (this, java.io.ByteArrayInputStream, []); +this.buf = buf; +this.pos = 0; +this.count = buf.length; +}, "~A"); +Clazz_overrideMethod(c$, "readByteAsInt", +function(){ +return (this.pos < this.count) ? (this.buf[this.pos++] & 0xff) : -1; +}); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.readBAIS(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readBAIS", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +}if (this.pos >= this.count) { +return -1; +}var avail = this.count - this.pos; +if (len > avail) { +len = avail; +}if (len <= 0) { +return 0; +}System.arraycopy(this.buf, this.pos, b, off, len); +this.pos += len; +return len; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(n){ +var k = this.count - this.pos; +if (n < k) { +k = n < 0 ? 0 : n; +}this.pos += k; +return k; +}, "~N"); +Clazz_overrideMethod(c$, "available", +function(){ +return this.count - this.pos; +}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +this.$mark = this.pos; +}, "~N"); +Clazz_overrideMethod(c$, "resetStream", +function(){ +}); +Clazz_overrideMethod(c$, "reset", +function(){ +this.pos = this.$mark; +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.OutputStream"], "java.io.ByteArrayOutputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf = null; +this.count = 0; +Clazz_instantialize(this, arguments);}, java.io, "ByteArrayOutputStream", java.io.OutputStream); +Clazz_makeConstructor(c$, +function(){ +this.construct (32); +}); +Clazz_makeConstructor(c$, +function(size){ +Clazz_superConstructor (this, java.io.ByteArrayOutputStream, []); +if (size < 0) { +throw new IllegalArgumentException("Negative initial size: " + size); +}this.buf = Clazz_newByteArray (size, 0); +}, "~N"); +Clazz_defineMethod(c$, "ensureCapacity", +function(minCapacity){ +if (minCapacity - this.buf.length > 0) this.grow(minCapacity); +}, "~N"); +Clazz_defineMethod(c$, "grow", +function(minCapacity){ +var oldCapacity = this.buf.length; +var newCapacity = oldCapacity << 1; +if (newCapacity - minCapacity < 0) newCapacity = minCapacity; +if (newCapacity < 0) { +if (minCapacity < 0) throw new OutOfMemoryError(); +newCapacity = minCapacity; +}this.buf = java.io.ByteArrayOutputStream.arrayCopyByte(this.buf, newCapacity); +}, "~N"); +c$.arrayCopyByte = Clazz_defineMethod(c$, "arrayCopyByte", +function(array, newLength){ +var t = Clazz_newByteArray (newLength, 0); +System.arraycopy(array, 0, t, 0, array.length < newLength ? array.length : newLength); +return t; +}, "~A,~N"); +Clazz_overrideMethod(c$, "writeByteAsInt", +function(b){ +this.ensureCapacity(this.count + 1); +this.buf[this.count] = b; +this.count += 1; +}, "~N"); +Clazz_defineMethod(c$, "write", +function(b, off, len){ +if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) - b.length > 0)) { +throw new IndexOutOfBoundsException(); +}this.ensureCapacity(this.count + len); +System.arraycopy(b, off, this.buf, this.count, len); +this.count += len; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "writeTo", +function(out){ +out.write(this.buf, 0, this.count); +}, "java.io.OutputStream"); +Clazz_defineMethod(c$, "reset", +function(){ +this.count = 0; +}); +Clazz_defineMethod(c$, "toByteArray", +function(){ +return (this.count == this.buf.length ? this.buf : java.io.ByteArrayOutputStream.arrayCopyByte(this.buf, this.count)); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.count; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return String.instantialize(this.buf, 0, this.count); +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.InputStream"], "java.io.FilterInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +Clazz_instantialize(this, arguments);}, java.io, "FilterInputStream", java.io.InputStream); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor (this, java.io.FilterInputStream, []); +this.$in = $in; +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "readByteAsInt", +function(){ +return this.$in.readByteAsInt(); +}); +Clazz_overrideMethod(c$, "read", +function(b, off, len){ +return this.$in.read(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "skip", +function(n){ +return this.$in.skip(n); +}, "~N"); +Clazz_defineMethod(c$, "available", +function(){ +return this.$in.available(); +}); +Clazz_defineMethod(c$, "close", +function(){ +this.$in.close(); +}); +Clazz_defineMethod(c$, "mark", +function(readlimit){ +this.$in.mark(readlimit); +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +this.$in.reset(); +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return this.$in.markSupported(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable"], "java.io.InputStream", null, function(){ +var c$ = Clazz_declareType(java.io, "InputStream", null, java.io.Closeable); +Clazz_defineMethod(c$, "read", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var c = this.readByteAsInt(); +if (c == -1) { +return -1; +}b[off] = c; +var i = 1; +try { +for (; i < len; i++) { +c = this.readByteAsInt(); +if (c == -1) { +break; +}b[off + i] = c; +} +} catch (ee) { +if (Clazz_exceptionOf(ee,"java.io.IOException")){ +} else { +throw ee; +} +} +return i; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "skip", +function(n){ +var remaining = n; +var nr; +if (java.io.InputStream.skipBuffer == null) java.io.InputStream.skipBuffer = Clazz_newByteArray (2048, 0); +var localSkipBuffer = java.io.InputStream.skipBuffer; +if (n <= 0) { +return 0; +}while (remaining > 0) { +nr = this.read(localSkipBuffer, 0, Math.min(2048, remaining)); +if (nr < 0) { +break; +}remaining -= nr; +} +return n - remaining; +}, "~N"); +Clazz_defineMethod(c$, "available", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +Clazz_defineMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_defineMethod(c$, "resetStream", +function(){ +}); +c$.skipBuffer = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.InputStreamReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$in = null; +this.isOpen = true; +this.charsetName = null; +this.isUTF8 = false; +this.bytearr = null; +this.pos = 0; +Clazz_instantialize(this, arguments);}, java.io, "InputStreamReader", java.io.Reader); +Clazz_makeConstructor(c$, +function($in, charsetName){ +Clazz_superConstructor(this, java.io.InputStreamReader, [$in]); +this.$in = $in; +this.charsetName = charsetName; +if (!(this.isUTF8 = "UTF-8".equals(charsetName)) && !"ISO-8859-1".equals(charsetName)) throw new NullPointerException("charsetName"); +}, "java.io.InputStream,~S"); +Clazz_defineMethod(c$, "getEncoding", +function(){ +return this.charsetName; +}); +Clazz_overrideMethod(c$, "read", +function(cbuf, offset, length){ +if (this.bytearr == null || this.bytearr.length < length) this.bytearr = Clazz_newByteArray (length, 0); +var c; +var char2; +var char3; +var byteCount = 0; +var charCount = offset; +var byteLen = this.$in.read(this.bytearr, this.pos, length - this.pos); +var nAvail = this.$in.available(); +if (byteLen < 0) return -1; +var nMax = byteLen; +while (byteCount < nMax) { +c = this.bytearr[byteCount] & 0xff; +if (this.isUTF8) switch (c >> 4) { +case 0xC: +case 0xD: +if (byteCount + 1 >= byteLen) { +if (nAvail >= 1) { +nMax = byteCount; +continue; +}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80) { +cbuf[charCount++] = String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); +byteCount += 2; +continue; +}this.isUTF8 = false; +break; +case 0xE: +if (byteCount + 2 >= byteLen) { +if (nAvail >= 2) { +nMax = byteCount; +continue; +}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80 && ((char3 = this.bytearr[byteCount + 2]) & 0xC0) == 0x80) { +cbuf[charCount++] = String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | (char3 & 0x3F)); +byteCount += 3; +continue; +}this.isUTF8 = false; +break; +} +byteCount++; +cbuf[charCount++] = String.fromCharCode(c); +} +this.pos = byteLen - byteCount; +for (var i = 0; i < this.pos; i++) { +this.bytearr[i] = this.bytearr[byteCount++]; +} +return charCount - offset; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "ready", +function(){ +return this.isOpen; +}); +Clazz_overrideMethod(c$, "close", +function(){ +this.$in.close(); +this.isOpen = false; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable", "$.Flushable"], "java.io.OutputStream", null, function(){ +var c$ = Clazz_declareType(java.io, "OutputStream", null, [java.io.Closeable, java.io.Flushable]); +Clazz_defineMethod(c$, "write", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return; +}for (var i = 0; i < len; i++) { +this.writeByteAsInt(b[off + i]); +} +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "flush", +function(){ +}); +Clazz_overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable"], "java.io.Reader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.lock = null; +this.skipBuffer = String.fromCharCode(null); +Clazz_instantialize(this, arguments);}, java.io, "Reader", null, java.io.Closeable); +Clazz_makeConstructor(c$, +function(lock){ +if (lock == null) { +throw new NullPointerException(); +}this.lock = lock; +}, "~O"); +Clazz_defineMethod(c$, "skip", +function(n){ +if (n < 0) throw new IllegalArgumentException("skip value is negative"); +var nn = Math.min(n, 8192); +{ +if ((this.skipBuffer == null) || (this.skipBuffer.length < nn)) this.skipBuffer = Clazz_newCharArray (nn, '\0'); +var r = n; +while (r > 0) { +var nc = this.read(this.skipBuffer, 0, Math.min(r, nn)); +if (nc == -1) break; +r -= nc; +} +return n - r; +}}, "~N"); +Clazz_defineMethod(c$, "ready", +function(){ +return false; +}); +Clazz_defineMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_defineMethod(c$, "mark", +function(readAheadLimit){ +throw new java.io.IOException("mark() not supported"); +}, "~N"); +Clazz_defineMethod(c$, "reset", +function(){ +throw new java.io.IOException("reset() not supported"); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Reader"], "java.io.StringReader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.str = null; +this.length = 0; +this.next = 0; +this.$mark = 0; +Clazz_instantialize(this, arguments);}, java.io, "StringReader", java.io.Reader); +Clazz_makeConstructor(c$, +function(s){ +Clazz_superConstructor(this, java.io.StringReader, [s]); +this.str = s; +this.length = s.length; +}, "~S"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.str == null) throw new java.io.IOException("Stream closed"); +}); +Clazz_overrideMethod(c$, "read", +function(cbuf, off, len){ +{ +this.ensureOpen(); +if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}if (this.next >= this.length) return -1; +var n = Math.min(this.length - this.next, len); +this.str.getChars(this.next, this.next + n, cbuf, off); +this.next += n; +return n; +}}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(ns){ +{ +this.ensureOpen(); +if (this.next >= this.length) return 0; +var n = Math.min(this.length - this.next, ns); +n = Math.max(-this.next, n); +this.next += n; +return n; +}}, "~N"); +Clazz_overrideMethod(c$, "ready", +function(){ +{ +this.ensureOpen(); +return true; +}}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "mark", +function(readAheadLimit){ +if (readAheadLimit < 0) { +throw new IllegalArgumentException("Read-ahead limit < 0"); +}{ +this.ensureOpen(); +this.$mark = this.next; +}}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +{ +this.ensureOpen(); +this.next = this.$mark; +}}); +Clazz_overrideMethod(c$, "close", +function(){ +this.str = null; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.io.Closeable", "$.Flushable", "java.lang.Appendable"], "java.io.Writer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.lock = null; +Clazz_instantialize(this, arguments);}, java.io, "Writer", null, [Appendable, java.io.Closeable, java.io.Flushable]); +Clazz_makeConstructor(c$, +function(){ +this.lock = this; +}); +Clazz_makeConstructor(c$, +function(lock){ +if (lock != null) { +this.lock = lock; +} else { +throw new NullPointerException(); +}}, "~O"); +Clazz_defineMethod(c$, "write", +function(buf){ +this.write(buf, 0, buf.length); +}, "~A"); +Clazz_defineMethod(c$, "write", +function(oneChar){ +{ +var oneCharArray = Clazz_newCharArray (1, '\0'); +oneCharArray[0] = String.fromCharCode(oneChar); +this.write(oneCharArray); +}}, "~N"); +Clazz_defineMethod(c$, "write", +function(str){ +var buf = Clazz_newCharArray (str.length, '\0'); +str.getChars(0, buf.length, buf, 0); +{ +this.write(buf); +}}, "~S"); +Clazz_defineMethod(c$, "write", +function(str, offset, count){ +if (count >= 0) { +var buf = Clazz_newCharArray (count, '\0'); +str.getChars(offset, offset + count, buf, 0); +{ +this.write(buf); +}} else { +throw new StringIndexOutOfBoundsException(); +}}, "~S,~N,~N"); +Clazz_defineMethod(c$, "append", +function(c){ +this.write(c.charCodeAt(0)); +return this; +}, "~S"); +Clazz_defineMethod(c$, "append", +function(csq){ +if (null == csq) { +this.write("null"); +} else { +this.write(csq.toString()); +}return this; +}, "CharSequence"); +Clazz_defineMethod(c$, "append", +function(csq, start, end){ +if (null == csq) { +this.write("null".substring(start, end)); +} else { +this.write(csq.subSequence(start, end).toString()); +}return this; +}, "CharSequence,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.io.IOException"], "java.net.MalformedURLException", null, function(){ +var c$ = Clazz_declareType(java.net, "MalformedURLException", java.io.IOException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.net.MalformedURLException, []); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.io.IOException"], "java.net.UnknownServiceException", null, function(){ +var c$ = Clazz_declareType(java.net, "UnknownServiceException", java.io.IOException); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.net.UnknownServiceException, []); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(["java.util.Hashtable"], "java.net.URL", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.protocol = null; +this.host = null; +this.port = -1; +this.file = null; +this.query = null; +this.authority = null; +this.path = null; +this.userInfo = null; +this.ref = null; +this.handler = null; +this.$hashCode = -1; +Clazz_instantialize(this, arguments);}, java.net, "URL", null); +Clazz_makeConstructor(c$, +function(context, spec, handler){ +{ +switch (arguments.length) { +case 1: +spec = context;context = handler = null; +break; +case 2: +handler = null; +break; +case 3: +if (context == null || Clazz_instanceOf(context, java.net.URL)) +break; +default: +alert("java.net.URL constructor format not supported"); +break; +} +context && context.valueOf && context.valueOf() == null && (context = null); +}var original = spec; +var i; +var limit; +var c; +var start = 0; +var newProtocol = null; +var aRef = false; +var isRelative = false; +try { +limit = spec.length; +while ((limit > 0) && (spec.charAt(limit - 1) <= ' ')) { +limit--; +} +while ((start < limit) && (spec.charAt(start) <= ' ')) { +start++; +} +if (spec.regionMatches(true, start, "url:", 0, 4)) { +start += 4; +}if (start < spec.length && spec.charAt(start) == '#') { +aRef = true; +}for (i = start; !aRef && (i < limit) && ((c = (spec.charAt(i)).charCodeAt(0)) != 47); i++) { +if (c == 58) { +var s = spec.substring(start, i).toLowerCase(); +if (this.isValidProtocol(s)) { +newProtocol = s; +start = i + 1; +}break; +}} +this.protocol = newProtocol; +if ((context != null) && ((newProtocol == null) || newProtocol.equalsIgnoreCase(context.protocol))) { +if (handler == null) { +handler = context.handler; +}if (context.path != null && context.path.startsWith("/")) newProtocol = null; +if (newProtocol == null) { +this.protocol = context.protocol; +this.authority = context.authority; +this.userInfo = context.userInfo; +this.host = context.host; +this.port = context.port; +this.file = context.file; +this.path = context.path; +isRelative = true; +}}if (this.protocol == null) { +throw new java.net.MalformedURLException("no protocol: " + original); +}if (handler == null && (handler = java.net.URL.getURLStreamHandler(this.protocol)) == null) { +throw new java.net.MalformedURLException("unknown protocol: " + this.protocol); +}this.handler = handler; +i = spec.indexOf('#', start); +if (i >= 0) { +this.ref = spec.substring(i + 1, limit); +limit = i; +}if (isRelative && start == limit) { +this.query = context.query; +if (this.ref == null) { +this.ref = context.ref; +}}handler.parseURL(this, spec, start, limit); +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"java.net.MalformedURLException")){ +var e = e$$; +{ +throw e; +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +var exception = new java.net.MalformedURLException(e.getMessage()); +exception.initCause(e); +throw exception; +} +} else { +throw e$$; +} +} +}, "java.net.URL,~S,java.net.URLStreamHandler"); +Clazz_defineMethod(c$, "isValidProtocol", +function(protocol){ +var len = protocol.length; +if (len < 1) return false; +var c = protocol.charAt(0); +if (!Character.isLetter(c)) return false; +for (var i = 1; i < len; i++) { +c = protocol.charAt(i); +if (!Character.isLetterOrDigit(c) && c != '.' && c != '+' && c != '-') { +return false; +}} +return true; +}, "~S"); +Clazz_defineMethod(c$, "set5", +function(protocol, host, port, file, ref){ +{ +this.protocol = protocol; +this.host = host; +this.authority = port == -1 ? host : host + ":" + port; +this.port = port; +this.file = file; +this.ref = ref; +this.$hashCode = -1; +var q = file.lastIndexOf('?'); +if (q != -1) { +this.query = file.substring(q + 1); +this.path = file.substring(0, q); +} else this.path = file; +}}, "~S,~S,~N,~S,~S"); +Clazz_defineMethod(c$, "set", +function(protocol, host, port, authority, userInfo, path, query, ref){ +{ +this.protocol = protocol; +this.host = host; +this.port = port; +this.file = query == null ? path : path + "?" + query; +this.userInfo = userInfo; +this.path = path; +this.ref = ref; +this.$hashCode = -1; +this.query = query; +this.authority = authority; +}}, "~S,~S,~N,~S,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "getQuery", +function(){ +return this.query; +}); +Clazz_defineMethod(c$, "getPath", +function(){ +return this.path; +}); +Clazz_defineMethod(c$, "getUserInfo", +function(){ +return this.userInfo; +}); +Clazz_defineMethod(c$, "getAuthority", +function(){ +return this.authority; +}); +Clazz_defineMethod(c$, "getPort", +function(){ +return this.port; +}); +Clazz_defineMethod(c$, "getDefaultPort", +function(){ +return this.handler.getDefaultPort(); +}); +Clazz_defineMethod(c$, "getProtocol", +function(){ +return this.protocol; +}); +Clazz_defineMethod(c$, "getHost", +function(){ +return this.host; +}); +Clazz_defineMethod(c$, "getFile", +function(){ +return this.file; +}); +Clazz_defineMethod(c$, "getRef", +function(){ +return this.ref; +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz_instanceOf(obj,"java.net.URL"))) return false; +var u2 = obj; +return this.handler.equals2(this, u2); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +if (this.$hashCode != -1) return this.$hashCode; +this.$hashCode = this.handler.hashCode(this); +return this.$hashCode; +}); +Clazz_defineMethod(c$, "sameFile", +function(other){ +return this.handler.sameFile(this, other); +}, "java.net.URL"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.toExternalForm(); +}); +Clazz_defineMethod(c$, "toExternalForm", +function(){ +return this.handler.toExternalForm(this); +}); +Clazz_defineMethod(c$, "openConnection", +function(){ +return this.handler.openConnection(this); +}); +Clazz_defineMethod(c$, "openStream", +function(){ +return this.openConnection().getInputStream(); +}); +Clazz_defineMethod(c$, "getContent", +function(){ +return this.openConnection().getInputStream(); +}); +c$.setURLStreamHandlerFactory = Clazz_defineMethod(c$, "setURLStreamHandlerFactory", +function(fac){ +{ +if (java.net.URL.factory != null) { +throw new Error("factory already defined"); +}var security = System.getSecurityManager(); +if (security != null) { +security.checkSetFactory(); +}java.net.URL.handlers.clear(); +java.net.URL.factory = fac; +}}, "java.net.URLStreamHandlerFactory"); +c$.getURLStreamHandler = Clazz_defineMethod(c$, "getURLStreamHandler", +function(protocol){ +var handler = java.net.URL.handlers.get(protocol); +if (handler == null) { +if (java.net.URL.factory != null) { +handler = java.net.URL.factory.createURLStreamHandler(protocol); +}}return handler; +}, "~S"); +c$.factory = null; +c$.handlers = new java.util.Hashtable(); +c$.streamHandlerLock = new Clazz._O(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_load(null, "java.net.URLConnection", ["java.util.ArrayList"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.url = null; +this.doInput = true; +this.doOutput = false; +this.connected = false; +this.requests = null; +Clazz_instantialize(this, arguments);}, java.net, "URLConnection", null); +Clazz_makeConstructor(c$, +function(url){ +this.url = url; +}, "java.net.URL"); +Clazz_defineMethod(c$, "setDoInput", +function(doinput){ +if (this.connected) throw new IllegalStateException("Already connected"); +this.doInput = doinput; +}, "~B"); +Clazz_defineMethod(c$, "getDoInput", +function(){ +return this.doInput; +}); +Clazz_defineMethod(c$, "setDoOutput", +function(dooutput){ +if (this.connected) throw new IllegalStateException("Already connected"); +this.doOutput = dooutput; +}, "~B"); +Clazz_defineMethod(c$, "getDoOutput", +function(){ +return this.doOutput; +}); +Clazz_defineMethod(c$, "getURL", +function(){ +return this.url; +}); +Clazz_defineMethod(c$, "getInputStream", +function(){ +throw new java.net.UnknownServiceException("protocol doesn't support input"); +}); +Clazz_defineMethod(c$, "getOutputStream", +function(){ +throw new java.net.UnknownServiceException("protocol doesn't support output"); +}); +Clazz_defineMethod(c$, "setRequestProperty", +function(key, value){ +if (this.connected) throw new IllegalStateException("Already connected"); +if (key == null) throw new NullPointerException("key is null"); +if (this.requests == null) this.requests = new java.util.ArrayList(); +for (var i = this.requests.size(); --i >= 0; ) if (this.requests.get(i)[0].equals(key)) { +this.requests.get(i)[1] = value; +return; +} +this.requests.add( Clazz_newArray(-1, [key, value])); +}, "~S,~S"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +(function(){ +var c$ = Clazz_declareType(java.net, "URLEncoder", null); +c$.encode = Clazz_defineMethod(c$, "encode", +function(s){ +return encodeURIComponent(s); +}, "~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +(function(){ +var c$ = Clazz_declareType(java.net, "URLStreamHandler", null); +Clazz_defineMethod(c$, "openConnectionProxy", +function(u, p){ +throw new UnsupportedOperationException("Method not implemented."); +}, "java.net.URL,java.net.Proxy"); +Clazz_defineMethod(c$, "parseURL", +function(u, spec, start, limit){ +var protocol = u.getProtocol(); +var authority = u.getAuthority(); +var userInfo = u.getUserInfo(); +var host = u.getHost(); +var port = u.getPort(); +var path = u.getPath(); +var query = u.getQuery(); +var ref = u.getRef(); +var isRelPath = false; +var queryOnly = false; +if (start < limit) { +var queryStart = spec.indexOf('?'); +queryOnly = queryStart == start; +if ((queryStart != -1) && (queryStart < limit)) { +query = spec.substring(queryStart + 1, limit); +if (limit > queryStart) limit = queryStart; +spec = spec.substring(0, queryStart); +}}var i = 0; +var isUNCName = (start <= limit - 4) && (spec.charAt(start) == '/') && (spec.charAt(start + 1) == '/') && (spec.charAt(start + 2) == '/') && (spec.charAt(start + 3) == '/'); +if (!isUNCName && (start <= limit - 2) && (spec.charAt(start) == '/') && (spec.charAt(start + 1) == '/')) { +start += 2; +i = spec.indexOf('/', start); +if (i < 0) { +i = spec.indexOf('?', start); +if (i < 0) i = limit; +}host = authority = spec.substring(start, i); +var ind = authority.indexOf('@'); +if (ind != -1) { +userInfo = authority.substring(0, ind); +host = authority.substring(ind + 1); +} else { +userInfo = null; +}if (host != null) { +if (host.length > 0 && (host.charAt(0) == '[')) { +throw new IllegalArgumentException("Invalid host: " + host); +}ind = host.indexOf(':'); +port = -1; +if (ind >= 0) { +if (host.length > (ind + 1)) { +port = Integer.parseInt(host.substring(ind + 1)); +}host = host.substring(0, ind); +}} else { +host = ""; +}if (port < -1) throw new IllegalArgumentException("Invalid port number :" + port); +start = i; +if (authority.length > 0) path = ""; +}if (host == null) { +host = ""; +}if (start < limit) { +if (spec.charAt(start) == '/') { +path = spec.substring(start, limit); +} else if (path != null && path.length > 0) { +isRelPath = true; +var ind = path.lastIndexOf('/'); +var seperator = ""; +if (ind == -1 && authority != null) seperator = "/"; +path = path.substring(0, ind + 1) + seperator + spec.substring(start, limit); +} else { +var seperator = (authority != null) ? "/" : ""; +path = seperator + spec.substring(start, limit); +}} else if (queryOnly && path != null) { +var ind = path.lastIndexOf('/'); +if (ind < 0) ind = 0; +path = path.substring(0, ind) + "/"; +}if (path == null) path = ""; +if (isRelPath) { +while ((i = path.indexOf("/./")) >= 0) { +path = path.substring(0, i) + path.substring(i + 2); +} +i = 0; +while ((i = path.indexOf("/../", i)) >= 0) { +if (i > 0 && (limit = path.lastIndexOf('/', i - 1)) >= 0 && (path.indexOf("/../", limit) != 0)) { +path = path.substring(0, limit) + path.substring(i + 3); +i = 0; +} else { +i = i + 3; +}} +while (path.endsWith("/..")) { +i = path.indexOf("/.."); +if ((limit = path.lastIndexOf('/', i - 1)) >= 0) { +path = path.substring(0, limit + 1); +} else { +break; +}} +if (path.startsWith("./") && path.length > 2) path = path.substring(2); +if (path.endsWith("/.")) path = path.substring(0, path.length - 1); +}this.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~N,~N"); +Clazz_defineMethod(c$, "getDefaultPort", +function(){ +return -1; +}); +Clazz_defineMethod(c$, "equals2", +function(u1, u2){ +var ref1 = u1.getRef(); +var ref2 = u2.getRef(); +return (ref1 === ref2 || (ref1 != null && ref1.equals(ref2))) && this.sameFile(u1, u2); +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "hashCode", +function(u){ +var h = 0; +var protocol = u.getProtocol(); +if (protocol != null) h += protocol.hashCode(); +h += u.toString().hashCode(); +var file = u.getFile(); +if (file != null) h += file.hashCode(); +if (u.getPort() == -1) h += this.getDefaultPort(); + else h += u.getPort(); +var ref = u.getRef(); +if (ref != null) h += ref.hashCode(); +return h; +}, "java.net.URL"); +Clazz_defineMethod(c$, "sameFile", +function(u1, u2){ +if (!((u1.getProtocol() === u2.getProtocol()) || (u1.getProtocol() != null && u1.getProtocol().equalsIgnoreCase(u2.getProtocol())))) return false; +if (!(u1.getFile() === u2.getFile() || (u1.getFile() != null && u1.getFile().equals(u2.getFile())))) return false; +var port1; +var port2; +port1 = (u1.getPort() != -1) ? u1.getPort() : u1.handler.getDefaultPort(); +port2 = (u2.getPort() != -1) ? u2.getPort() : u2.handler.getDefaultPort(); +if (port1 != port2) return false; +if (!this.hostsEqual(u1, u2)) return false; +return true; +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "hostsEqual", +function(u1, u2){ +if (u1.getHost() != null && u2.getHost() != null) return u1.getHost().equalsIgnoreCase(u2.getHost()); +return u1.getHost() == null && u2.getHost() == null; +}, "java.net.URL,java.net.URL"); +Clazz_defineMethod(c$, "toExternalForm", +function(u){ +return ""; +}, "java.net.URL"); +Clazz_defineMethod(c$, "setURL", +function(u, protocol, host, port, authority, userInfo, path, query, ref){ +if (this !== u.handler) { +throw new SecurityException("handler for url different from this handler"); +}u.set(u.getProtocol(), host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~S,~N,~S,~S,~S,~S,~S"); +Clazz_defineMethod(c$, "setURLDeprecated", +function(u, protocol, host, port, file, ref){ +var authority = null; +var userInfo = null; +if (host != null && host.length != 0) { +authority = (port == -1) ? host : host + ":" + port; +var at = host.lastIndexOf('@'); +if (at != -1) { +userInfo = host.substring(0, at); +host = host.substring(at + 1); +}}var path = null; +var query = null; +if (file != null) { +var q = file.lastIndexOf('?'); +if (q != -1) { +query = file.substring(q + 1); +path = file.substring(0, q); +} else path = file; +}this.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~S,~N,~S,~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.net"); +Clazz_declareInterface(java.net, "URLStreamHandlerFactory"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.text"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pattern = null; +Clazz_instantialize(this, arguments);}, java.text, "MessageFormat", null); +Clazz_makeConstructor(c$, +function(pattern){ +this.pattern = pattern; +}, "~S"); +Clazz_makeConstructor(c$, +function(pattern, locale){ +this.pattern = pattern; +}, "~S,java.util.Locale"); +c$.format = Clazz_defineMethod(c$, "format", +function(pattern, args){ +return pattern.replace (/\{(\d+)\}/g, function ($0, $1) { +var i = parseInt ($1); +if (args == null) return null; +return args[i]; +}); +}, "~S,~A"); +Clazz_defineMethod(c$, "format", +function(obj){ +return java.text.MessageFormat.format(this.pattern, Clazz_newArray(-1, [obj])); +}, "~O"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveNextNextGaussian = false; +this.seed = 0; +this.nextNextGaussian = 0; +Clazz_instantialize(this, arguments);}, java.util, "Random", null, java.io.Serializable); +Clazz_makeConstructor(c$, +function(){ +var seed = -2147483648; +{ +arguments.length == 1 && (seed = arguments[0]); +}if (seed == -2147483648) seed = System.currentTimeMillis(); +this.setSeed(seed); +}); +Clazz_defineMethod(c$, "next", +function(bits){ +this.seed = (this.seed * 25214903917 + 0xb) & (281474976710655); +return (this.seed >>> (48 - bits)); +}, "~N"); +Clazz_defineMethod(c$, "nextBoolean", +function(){ +{ +return Math.random () > 0.5; +}}); +Clazz_defineMethod(c$, "nextBytes", +function(buf){ +{ +var rand = 0; +var count = 0; +var loop = 0; +while (count < buf.length) { +if (loop == 0) { +rand = this.nextInt(); +loop = 3; +} else { +loop--; +}buf[count++] = rand; +rand >>= 8; +} +}}, "~A"); +Clazz_defineMethod(c$, "nextDouble", +function(){ +{ +return Math.random (); +}}); +Clazz_defineMethod(c$, "nextFloat", +function(){ +{ +return Math.random (); +}}); +Clazz_defineMethod(c$, "nextGaussian", +function(){ +if (this.haveNextNextGaussian) { +this.haveNextNextGaussian = false; +return this.nextNextGaussian; +}var v1; +var v2; +var s; +do { +v1 = 2 * this.nextDouble() - 1; +v2 = 2 * this.nextDouble() - 1; +s = v1 * v1 + v2 * v2; +} while (s >= 1); +var norm = Math.sqrt(-2 * Math.log(s) / s); +this.nextNextGaussian = v2 * norm; +this.haveNextNextGaussian = true; +return v1 * norm; +}); +Clazz_defineMethod(c$, "nextInt", +function(n){ +{ +if (arguments.length == 0) +return Math.random()*0x100000000 | 0; +}if (n <= 0) { +throw new IllegalArgumentException(); +}{ +return Math.random() * n|0 +}}, "~N"); +Clazz_defineMethod(c$, "nextLong", +function(){ +return (this.next(32) << 32) + this.next(32); +}); +Clazz_defineMethod(c$, "setSeed", +function(seed){ +{ +Math.seedrandom(seed); +}}, "~N"); +{ +{ +(function (pool, math, width, chunks, significance, overflow, startdenom) { +var copyright = "Copyright 2010 David Bau, all rights reserved. (BSD)" +// +// seedrandom() +// This is the seedrandom function described above. +// +math['seedrandom'] = function seedrandom(seed, use_entropy) { +var key = []; +var arc4; +// Flatten the seed string or build one from local entropy if needed. +seed = mixkey(flatten( +use_entropy ? [seed, pool] : +arguments.length ? seed : +[new Date().getTime(), pool, window], 3), key); +// Use the seed to initialize an ARC4 generator. +arc4 = new ARC4(key); +// Mix the randomness into accumulated entropy. +mixkey(arc4.S, pool); +// Override Math.random +// This function returns a random double in [0, 1) that contains +// randomness in every bit of the mantissa of the IEEE 754 value. +math['random'] = function random() { // Closure to return a random double: +var n = arc4.g(chunks); // Start with a numerator n < 2 ^ 48 +var d = startdenom; // and denominator d = 2 ^ 48. +var x = 0; // and no 'extra last byte'. +while (n < significance) { // Fill up all significant digits by +n = (n + x) * width; // shifting numerator and +d *= width; // denominator and generating a +x = arc4.g(1); // new least-significant-byte. +} +while (n >= overflow) { // To avoid rounding up, before adding +n /= 2; // last byte, shift everything +d /= 2; // right using integer math until +x >>>= 1; // we have exactly the desired bits. +} +return (n + x) / d; // Form the number within [0, 1). +}; +// Return the seed that was used +return seed; +}; +// +// ARC4 +// +// An ARC4 implementation. The constructor takes a key in the form of +// an array of at most (width) integers that should be 0 <= x < (width). +// +// The g(count) method returns a pseudorandom integer that concatenates +// the next (count) outputs from ARC4. Its return value is a number x +// that is in the range 0 <= x < (width ^ count). +// +function ARC4(key) { +var t, u, me = this, keylen = key.length; +var i = 0, j = me.i = me.j = me.m = 0; +me.S = []; +me.c = []; +// The empty key [] is treated as [0]. +if (!keylen) { key = [keylen++]; } +// Set up S using the standard key scheduling algorithm. +while (i < width) { me.S[i] = i++; } +for (i = 0; i < width; i++) { +t = me.S[i]; +j = lowbits(j + t + key[i % keylen]); +u = me.S[j]; +me.S[i] = u; +me.S[j] = t; +} +// The "g" method returns the next (count) outputs as one number. +me.g = function getnext(count) { +var s = me.S; +var i = lowbits(me.i + 1); var t = s[i]; +var j = lowbits(me.j + t); var u = s[j]; +s[i] = u; +s[j] = t; +var r = s[lowbits(t + u)]; +while (--count) { +i = lowbits(i + 1); t = s[i]; +j = lowbits(j + t); u = s[j]; +s[i] = u; +s[j] = t; +r = r * width + s[lowbits(t + u)]; +} +me.i = i; +me.j = j; +return r; +}; +// For robust unpredictability discard an initial batch of values. +// See http://www.rsa.com/rsalabs/node.asp?id=2009 +me.g(width); +} +// +// flatten() +// Converts an object tree to nested arrays of strings. +// +function flatten(obj, depth, result, prop) { +result = []; +if (depth && typeof(obj) == 'object') { +for (prop in obj) { +if (prop.indexOf('S') < 5) { // Avoid FF3 bug (local/sessionStorage) +try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} +} +} +} +return result.length ? result : '' + obj; +} +// +// mixkey() +// Mixes a string seed into a key that is an array of integers, and +// returns a shortened string seed that is equivalent to the result key. +// +function mixkey(seed, key, smear, j) { +seed += ''; // Ensure the seed is a string +smear = 0; +for (j = 0; j < seed.length; j++) { +key[lowbits(j)] = +lowbits((smear ^= key[lowbits(j)] * 19) + seed.charCodeAt(j)); +} +seed = ''; +for (j in key) { seed += String.fromCharCode(key[j]); } +return seed; +} +// +// lowbits() +// A quick "n mod width" for width a power of 2. +// +function lowbits(n) { return n & (width - 1); } +// +// The following constants are related to IEEE 754 limits. +// +startdenom = math.pow(width, chunks); +significance = math.pow(2, significance); +overflow = significance * 2; +// +// When seedrandom.js is loaded, we immediately mix a few bits +// from the built-in RNG into the entropy pool. Because we do +// not want to intefere with determinstic PRNG state later, +// seedrandom will not call math.random on its own again after +// initialization. +// +mixkey(math.random(), pool); +// End anonymous scope, and pass initial values. +})( +[], // pool: entropy pool starts empty +Math, // math: package containing random, pow, and seedrandom +256, // width: each RC4 output is 0 <= x < 256 +6, // chunks: at least six RC4 outputs for each double +52 // significance: there are 52 significant digits in a double +); +}}})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Collection"], "java.util.AbstractCollection", ["java.lang.reflect.Array"], function(){ +var c$ = Clazz_declareType(java.util, "AbstractCollection", null, java.util.Collection); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "addAll", +function(collection){ +var result = false; +var it = collection.iterator(); +while (it.hasNext()) { +if (this.add(it.next())) { +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +var it = this.iterator(); +while (it.hasNext()) { +it.next(); +it.remove(); +} +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +var it = this.iterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsAll", +function(collection){ +var it = collection.iterator(); +while (it.hasNext()) { +if (!this.contains(it.next())) { +return false; +}} +return true; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "remove", +function(object){ +var it = this.iterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +it.remove(); +return true; +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +it.remove(); +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +var result = false; +var it = this.iterator(); +while (it.hasNext()) { +if (collection.contains(it.next())) { +it.remove(); +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "retainAll", +function(collection){ +var result = false; +var it = this.iterator(); +while (it.hasNext()) { +if (!collection.contains(it.next())) { +it.remove(); +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz_defineMethod(c$, "toArray", +function(){ +var size = this.size(); +var index = 0; +var it = this.iterator(); +var array = new Array(size); +while (index < size) { +array[index++] = it.next(); +} +return array; +}); +Clazz_defineMethod(c$, "toArray", +function(contents){ +var size = this.size(); +var index = 0; +if (size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, size); +}for (var entry, $entry = this.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +contents[index++] = entry; +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.isEmpty()) { +return "[]"; +}var buffer = "["; +var it = this.iterator(); +while (it.hasNext()) { +var next = it.next(); +if (next !== this) { +buffer += next; +} else { +buffer += ("(this Collection)"); +}if (it.hasNext()) { +buffer += (", "); +}} +buffer += (']'); +return buffer; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.Iterator", "$.List", "$.ListIterator", "$.RandomAccess"], "java.util.AbstractList", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modCount = 0; +Clazz_instantialize(this, arguments);}, java.util, "AbstractList", java.util.AbstractCollection, java.util.List); +Clazz_defineMethod(c$, "add", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +this.add(this.size(), object); +return true; +}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +var it = collection.iterator(); +while (it.hasNext()) { +this.add(location++, it.next()); +} +return !collection.isEmpty(); +}, "~N,java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.removeRange(0, this.size()); +}); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.List")) { +var list = object; +if (list.size() != this.size()) { +return false; +}var it1 = this.iterator(); +var it2 = list.iterator(); +while (it1.hasNext()) { +var e1 = it1.next(); +var e2 = it2.next(); +if (!(e1 == null ? e2 == null : e1.equals(e2))) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 1; +var it = this.iterator(); +while (it.hasNext()) { +var object = it.next(); +result = (31 * result) + (object == null ? 0 : object.hashCode()); +} +return result; +}); +Clazz_overrideMethod(c$, "indexOf", +function(object){ +var it = this.listIterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +return it.previousIndex(); +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +return it.previousIndex(); +}} +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return new java.util.AbstractList.SimpleListIterator(this); +}); +Clazz_overrideMethod(c$, "lastIndexOf", +function(object){ +var it = this.listIterator(this.size()); +if (object != null) { +while (it.hasPrevious()) { +if (object.equals(it.previous())) { +return it.nextIndex(); +}} +} else { +while (it.hasPrevious()) { +if (it.previous() == null) { +return it.nextIndex(); +}} +}return -1; +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +return new java.util.AbstractList.FullListIterator(this, location); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +throw new UnsupportedOperationException(); +}, "~N"); +Clazz_defineMethod(c$, "removeRange", +function(start, end){ +var it = this.listIterator(start); +for (var i = start; i < end; i++) { +it.next(); +it.remove(); +} +}, "~N,~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +if (0 <= start && end <= this.size()) { +if (start <= end) { +if (Clazz_instanceOf(this,"java.util.RandomAccess")) { +return new java.util.AbstractList.SubAbstractListRandomAccess(this, start, end); +}return new java.util.AbstractList.SubAbstractList(this, start, end); +}throw new IllegalArgumentException(); +}throw new IndexOutOfBoundsException(); +}, "~N,~N"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pos = -1; +this.expectedModCount = 0; +this.lastPosition = -1; +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.AbstractList, "SimpleListIterator", null, java.util.Iterator); +Clazz_makeConstructor(c$, +function(l){ +this.list = l; +this.expectedModCount = l.modCount; +}, "java.util.AbstractList"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.pos + 1 < this.list.size(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +var result = this.list.get(this.pos + 1); +this.lastPosition = ++this.pos; +return result; +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}throw new java.util.ConcurrentModificationException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.remove(this.lastPosition); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new IllegalStateException(); +} else { +throw e; +} +} +if (this.list.modCount != this.expectedModCount) { +this.expectedModCount++; +}if (this.pos == this.lastPosition) { +this.pos--; +}this.lastPosition = -1; +} else { +throw new java.util.ConcurrentModificationException(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.AbstractList, "FullListIterator", java.util.AbstractList.SimpleListIterator, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(list, start){ +Clazz_superConstructor(this, java.util.AbstractList.FullListIterator, [list]); +if (0 <= start && start <= list.size()) { +this.pos = start - 1; +} else { +throw new IndexOutOfBoundsException(); +}}, "java.util.AbstractList,~N"); +Clazz_overrideMethod(c$, "add", +function(object){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.add(this.pos + 1, object); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +this.pos++; +this.lastPosition = -1; +if (this.list.modCount != this.expectedModCount) { +this.expectedModCount++; +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +Clazz_overrideMethod(c$, "hasPrevious", +function(){ +return this.pos >= 0; +}); +Clazz_overrideMethod(c$, "nextIndex", +function(){ +return this.pos + 1; +}); +Clazz_overrideMethod(c$, "previous", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +var result = this.list.get(this.pos); +this.lastPosition = this.pos; +this.pos--; +return result; +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}throw new java.util.ConcurrentModificationException(); +}); +Clazz_overrideMethod(c$, "previousIndex", +function(){ +return this.pos; +}); +Clazz_overrideMethod(c$, "set", +function(object){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.set(this.lastPosition, object); +} catch (e) { +if (Clazz_exceptionOf(e,"IndexOutOfBoundsException")){ +throw new IllegalStateException(); +} else { +throw e; +} +} +} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.AbstractList, "SubAbstractListRandomAccess", java.util.AbstractList.SubAbstractList, java.util.RandomAccess); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.fullList = null; +this.offset = 0; +this.$size = 0; +Clazz_instantialize(this, arguments);}, java.util.AbstractList, "SubAbstractList", java.util.AbstractList); +Clazz_makeConstructor(c$, +function(list, start, end){ +Clazz_superConstructor(this, java.util.AbstractList.SubAbstractList); +this.fullList = list; +this.modCount = this.fullList.modCount; +this.offset = start; +this.$size = end - start; +}, "java.util.AbstractList,~N,~N"); +Clazz_defineMethod(c$, "add", +function(location, object){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +this.fullList.add(location + this.offset, object); +this.$size++; +this.modCount = this.fullList.modCount; +} else { +throw new IndexOutOfBoundsException(); +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +var result = this.fullList.addAll(location + this.offset, collection); +if (result) { +this.$size += collection.size(); +this.modCount = this.fullList.modCount; +}return result; +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +if (this.modCount == this.fullList.modCount) { +var result = this.fullList.addAll(this.offset + this.$size, collection); +if (result) { +this.$size += collection.size(); +this.modCount = this.fullList.modCount; +}return result; +}throw new java.util.ConcurrentModificationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "get", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +return this.fullList.get(location + this.offset); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +return new java.util.AbstractList.SubAbstractList.SubAbstractListIterator(this.fullList.listIterator(location + this.offset), this, this.offset, this.$size); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +var result = this.fullList.remove(location + this.offset); +this.$size--; +this.modCount = this.fullList.modCount; +return result; +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz_defineMethod(c$, "removeRange", +function(start, end){ +if (start != end) { +if (this.modCount == this.fullList.modCount) { +this.fullList.removeRange(start + this.offset, end + this.offset); +this.$size -= end - start; +this.modCount = this.fullList.modCount; +} else { +throw new java.util.ConcurrentModificationException(); +}}}, "~N,~N"); +Clazz_defineMethod(c$, "set", +function(location, object){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +return this.fullList.set(location + this.offset, object); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.$size; +}); +Clazz_defineMethod(c$, "sizeChanged", +function(increment){ +if (increment) { +this.$size++; +} else { +this.$size--; +}this.modCount = this.fullList.modCount; +}, "~B"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.subList = null; +this.iterator = null; +this.start = 0; +this.end = 0; +Clazz_instantialize(this, arguments);}, java.util.AbstractList.SubAbstractList, "SubAbstractListIterator", null, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(it, list, offset, length){ +this.iterator = it; +this.subList = list; +this.start = offset; +this.end = this.start + length; +}, "java.util.ListIterator,java.util.AbstractList.SubAbstractList,~N,~N"); +Clazz_defineMethod(c$, "add", +function(object){ +this.iterator.add(object); +this.subList.sizeChanged(true); +this.end++; +}, "~O"); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.iterator.nextIndex() < this.end; +}); +Clazz_overrideMethod(c$, "hasPrevious", +function(){ +return this.iterator.previousIndex() >= this.start; +}); +Clazz_defineMethod(c$, "next", +function(){ +if (this.iterator.nextIndex() < this.end) { +return this.iterator.next(); +}throw new java.util.NoSuchElementException(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.iterator.nextIndex() - this.start; +}); +Clazz_defineMethod(c$, "previous", +function(){ +if (this.iterator.previousIndex() >= this.start) { +return this.iterator.previous(); +}throw new java.util.NoSuchElementException(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +var previous = this.iterator.previousIndex(); +if (previous >= this.start) { +return previous - this.start; +}return -1; +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.iterator.remove(); +this.subList.sizeChanged(false); +this.end--; +}); +Clazz_defineMethod(c$, "set", +function(object){ +this.iterator.set(object); +}, "~O"); +/*eoif3*/})(); +/*eoif3*/})(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Map"], "java.util.AbstractMap", ["java.util.AbstractCollection", "$.AbstractSet", "$.Iterator"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$keySet = null; +this.$values = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap", null, java.util.Map); +Clazz_overrideMethod(c$, "clear", +function(){ +this.entrySet().clear(); +}); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +if (key.equals(it.next().getKey())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next().getKey() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +var it = this.entrySet().iterator(); +if (value != null) { +while (it.hasNext()) { +if (value.equals(it.next().getValue())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next().getValue() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Map")) { +var map = object; +if (this.size() != map.size()) { +return false; +}var objectSet = map.entrySet(); +var it = this.entrySet().iterator(); +while (it.hasNext()) { +if (!objectSet.contains(it.next())) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +var entry = it.next(); +if (key.equals(entry.getKey())) { +return entry.getValue(); +}} +} else { +while (it.hasNext()) { +var entry = it.next(); +if (entry.getKey() == null) { +return entry.getValue(); +}} +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 0; +var it = this.entrySet().iterator(); +while (it.hasNext()) { +result += it.next().hashCode(); +} +return result; +}); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = ((Clazz_isClassDefined("java.util.AbstractMap$1") ? 0 : java.util.AbstractMap.$AbstractMap$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$1, this, null)); +}return this.$keySet; +}); +Clazz_overrideMethod(c$, "put", +function(key, value){ +throw new UnsupportedOperationException(); +}, "~O,~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +this.putAllAM(map); +}, "java.util.Map"); +Clazz_defineMethod(c$, "putAllAM", +function(map){ +if (!map.isEmpty()) for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +this.put(entry.getKey(), entry.getValue()); +} +}, "java.util.Map"); +Clazz_overrideMethod(c$, "remove", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +var entry = it.next(); +if (key.equals(entry.getKey())) { +it.remove(); +return entry.getValue(); +}} +} else { +while (it.hasNext()) { +var entry = it.next(); +if (entry.getKey() == null) { +it.remove(); +return entry.getValue(); +}} +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.entrySet().size(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.isEmpty()) { +return "{}"; +}var buffer = "{"; +var it = this.entrySet().iterator(); +while (it.hasNext()) { +var entry = it.next(); +var key = entry.getKey(); +if (key !== this) { +buffer += (key); +} else { +buffer += ("(this Map)"); +}buffer += ('='); +var value = entry.getValue(); +if (value !== this) { +buffer += (value); +} else { +buffer += ("(this Map)"); +}if (it.hasNext()) { +buffer += (", "); +}} +buffer += ('}'); +return buffer; +}); +Clazz_overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = ((Clazz_isClassDefined("java.util.AbstractMap$2") ? 0 : java.util.AbstractMap.$AbstractMap$2$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$2, this, null)); +}return this.$values; +}); +Clazz_defineMethod(c$, "clone", +function(){ +return this.cloneAM(); +}); +Clazz_defineMethod(c$, "cloneAM", +function(){ +var result; +{ +result = Clazz_clone(this); +}result.$keySet = null; +result.$values = null; +return result; +}); +c$.$AbstractMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "AbstractMap$1", java.util.AbstractSet); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.AbstractMap"].containsKey(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.b$["java.util.AbstractMap"].size(); +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.AbstractMap$1$1") ? 0 : java.util.AbstractMap.$AbstractMap$1$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$1$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.setIterator = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap$1$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.setIterator = this.b$["java.util.AbstractMap"].entrySet().iterator(); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.setIterator.hasNext(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.setIterator.next().getKey(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +this.setIterator.remove(); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "AbstractMap$2", java.util.AbstractCollection); +Clazz_overrideMethod(c$, "size", +function(){ +return this.b$["java.util.AbstractMap"].size(); +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.AbstractMap"].containsValue(object); +}, "~O"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.AbstractMap$2$1") ? 0 : java.util.AbstractMap.$AbstractMap$2$1$ ()), Clazz_innerTypeInstance(java.util.AbstractMap$2$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$2$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.setIterator = null; +Clazz_instantialize(this, arguments);}, java.util, "AbstractMap$2$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.setIterator = this.b$["java.util.AbstractMap"].entrySet().iterator(); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.setIterator.hasNext(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +return this.setIterator.next().getValue(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +this.setIterator.remove(); +}); +/*eoif5*/})(); +}; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.Set"], "java.util.AbstractSet", null, function(){ +var c$ = Clazz_declareType(java.util, "AbstractSet", java.util.AbstractCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Set")) { +var s = object; +return this.size() == s.size() && this.containsAll(s); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var result = 0; +var it = this.iterator(); +while (it.hasNext()) { +var next = it.next(); +result += next == null ? 0 : next.hashCode(); +} +return result; +}); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +var result = false; +if (this.size() <= collection.size()) { +var it = this.iterator(); +while (it.hasNext()) { +if (collection.contains(it.next())) { +it.remove(); +result = true; +}} +} else { +var it = collection.iterator(); +while (it.hasNext()) { +result = this.remove(it.next()) || result; +} +}return result; +}, "java.util.Collection"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.List", "$.RandomAccess"], "java.util.ArrayList", ["java.util.Arrays"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.firstIndex = 0; +this.lastIndex = 0; +this.array = null; +Clazz_instantialize(this, arguments);}, java.util, "ArrayList", java.util.AbstractList, [java.util.List, Cloneable, java.io.Serializable, java.util.RandomAccess]); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.util.ArrayList, []); +this.setCapacity(0); +}); +Clazz_makeConstructor(c$, +function(capacity){ +Clazz_superConstructor (this, java.util.ArrayList, []); +this.setCapacity(capacity); +}, "~N"); +Clazz_makeConstructor(c$, +function(collection){ +this.firstIndex = this.lastIndex = 0; +var n = -1; +{ +if (!collection) { +n = 0; +} else if (typeof collection == "number") { +n = collection; +} +}if (n >= 0) { +this.setCapacity(n); +return; +}var size = collection.size(); +this.array = this.newElementArray(size + (Clazz_doubleToInt(size / 10))); +this.addAll(collection); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "setCapacity", +function(capacity){ +try { +this.array = this.newElementArray(capacity); +} catch (e) { +if (Clazz_exceptionOf(e,"NegativeArraySizeException")){ +throw new IllegalArgumentException(); +} else { +throw e; +} +} +}, "~N"); +Clazz_defineMethod(c$, "newElementArray", +function(size){ +return new Array(size); +}, "~N"); +Clazz_defineMethod(c$, "add", +function(location, object){ +this.add2(location, object); +}, "~N,~O"); +Clazz_defineMethod(c$, "add2", +function(location, object){ +var size = this.size(); +if (0 < location && location < size) { +if (this.firstIndex == 0 && this.lastIndex == this.array.length) { +this.growForInsert(location, 1); +} else if ((location < Clazz_doubleToInt(size / 2) && this.firstIndex > 0) || this.lastIndex == this.array.length) { +System.arraycopy(this.array, this.firstIndex, this.array, --this.firstIndex, location); +} else { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index + 1, size - location); +this.lastIndex++; +}this.array[location + this.firstIndex] = object; +} else if (location == 0) { +if (this.firstIndex == 0) { +this.growAtFront(1); +}this.array[--this.firstIndex] = object; +} else if (location == size) { +if (this.lastIndex == this.array.length) { +this.growAtEnd(1); +}this.array[this.lastIndex++] = object; +} else { +throw new IndexOutOfBoundsException(); +}this.modCount++; +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +return this.add1(object); +}, "~O"); +Clazz_defineMethod(c$, "add1", +function(object){ +if (this.lastIndex == this.array.length) { +this.growAtEnd(1); +}this.array[this.lastIndex++] = object; +this.modCount++; +return true; +}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +var size = this.size(); +if (location < 0 || location > size) { +throw new IndexOutOfBoundsException(); +}var growSize = collection.size(); +if (0 < location && location < size) { +if (this.array.length - size < growSize) { +this.growForInsert(location, growSize); +} else if ((location < Clazz_doubleToInt(size / 2) && this.firstIndex > 0) || this.lastIndex > this.array.length - growSize) { +var newFirst = this.firstIndex - growSize; +if (newFirst < 0) { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index - newFirst, size - location); +this.lastIndex -= newFirst; +newFirst = 0; +}System.arraycopy(this.array, this.firstIndex, this.array, newFirst, location); +this.firstIndex = newFirst; +} else { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index + growSize, size - location); +this.lastIndex += growSize; +}} else if (location == 0) { +this.growAtFront(growSize); +this.firstIndex -= growSize; +} else if (location == size) { +if (this.lastIndex > this.array.length - growSize) { +this.growAtEnd(growSize); +}this.lastIndex += growSize; +}if (growSize > 0) { +var it = collection.iterator(); +var index = location + this.firstIndex; +var end = index + growSize; +while (index < end) { +this.array[index++] = it.next(); +} +this.modCount++; +return true; +}return false; +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +var growSize = collection.size(); +if (growSize > 0) { +if (this.lastIndex > this.array.length - growSize) { +this.growAtEnd(growSize); +}var it = collection.iterator(); +var end = this.lastIndex + growSize; +while (this.lastIndex < end) { +this.array[this.lastIndex++] = it.next(); +} +this.modCount++; +return true; +}return false; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +if (this.firstIndex != this.lastIndex) { +java.util.Arrays.fill(this.array, this.firstIndex, this.lastIndex, null); +this.firstIndex = this.lastIndex = 0; +this.modCount++; +}}); +Clazz_defineMethod(c$, "clone", +function(){ +try { +var newList = Clazz_superCall(this, java.util.ArrayList, "clone", []); +newList.array = this.array.clone(); +return newList; +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "contains", +function(object){ +if (object != null) { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (object.equals(this.array[i])) { +return true; +}} +} else { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (this.array[i] == null) { +return true; +}} +}return false; +}, "~O"); +Clazz_defineMethod(c$, "ensureCapacity", +function(minimumCapacity){ +if (this.array.length < minimumCapacity) { +if (this.firstIndex > 0) { +this.growAtFront(minimumCapacity - this.array.length); +} else { +this.growAtEnd(minimumCapacity - this.array.length); +}}}, "~N"); +Clazz_overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.size()) { +return this.array[this.firstIndex + location]; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz_defineMethod(c$, "growAtEnd", +function(required){ +var size = this.size(); +if (this.firstIndex >= required - (this.array.length - this.lastIndex)) { +var newLast = this.lastIndex - this.firstIndex; +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, this.array, 0, size); +var start = newLast < this.firstIndex ? this.firstIndex : newLast; +java.util.Arrays.fill(this.array, start, this.array.length, null); +}this.firstIndex = 0; +this.lastIndex = newLast; +} else { +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, newArray, this.firstIndex, size); +}this.array = newArray; +}}, "~N"); +Clazz_defineMethod(c$, "growAtFront", +function(required){ +var size = this.size(); +if (this.array.length - this.lastIndex >= required) { +var newFirst = this.array.length - size; +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, this.array, newFirst, size); +var length = this.firstIndex + size > newFirst ? newFirst : this.firstIndex + size; +java.util.Arrays.fill(this.array, this.firstIndex, length, null); +}this.firstIndex = newFirst; +this.lastIndex = this.array.length; +} else { +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, newArray, newArray.length - size, size); +}this.firstIndex = newArray.length - size; +this.lastIndex = newArray.length; +this.array = newArray; +}}, "~N"); +Clazz_defineMethod(c$, "growForInsert", +function(location, required){ +var size = this.size(); +var increment = Clazz_doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (location < Clazz_doubleToInt(size / 2)) { +var newFirst = newArray.length - (size + required); +System.arraycopy(this.array, location, newArray, location + increment, size - location); +System.arraycopy(this.array, this.firstIndex, newArray, newFirst, location); +this.firstIndex = newFirst; +this.lastIndex = newArray.length; +} else { +System.arraycopy(this.array, this.firstIndex, newArray, 0, location); +System.arraycopy(this.array, location, newArray, location + required, size - location); +this.firstIndex = 0; +this.lastIndex += required; +}this.array = newArray; +}, "~N,~N"); +Clazz_overrideMethod(c$, "indexOf", +function(object){ +if (object != null) { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (object.equals(this.array[i])) { +return i - this.firstIndex; +}} +} else { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (this.array[i] == null) { +return i - this.firstIndex; +}} +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.lastIndex == this.firstIndex; +}); +Clazz_overrideMethod(c$, "lastIndexOf", +function(object){ +if (object != null) { +for (var i = this.lastIndex - 1; i >= this.firstIndex; i--) { +if (object.equals(this.array[i])) { +return i - this.firstIndex; +}} +} else { +for (var i = this.lastIndex - 1; i >= this.firstIndex; i--) { +if (this.array[i] == null) { +return i - this.firstIndex; +}} +}return -1; +}, "~O"); +Clazz_defineMethod(c$, "remove", +function(location){ +{ +}return this._removeItemAt(location); +}, "~N"); +Clazz_defineMethod(c$, "_removeObject", +function(o){ +var i = this.indexOf(o); +if (i < 0) return false; +this._removeItemAt(i); +return true; +}, "~O"); +Clazz_defineMethod(c$, "_removeItemAt", +function(location){ +var result; +var size = this.size(); +if (0 <= location && location < size) { +if (location == size - 1) { +result = this.array[--this.lastIndex]; +this.array[this.lastIndex] = null; +} else if (location == 0) { +result = this.array[this.firstIndex]; +this.array[this.firstIndex++] = null; +} else { +var elementIndex = this.firstIndex + location; +result = this.array[elementIndex]; +if (location < Clazz_doubleToInt(size / 2)) { +System.arraycopy(this.array, this.firstIndex, this.array, this.firstIndex + 1, location); +this.array[this.firstIndex++] = null; +} else { +System.arraycopy(this.array, elementIndex + 1, this.array, elementIndex, size - location - 1); +this.array[--this.lastIndex] = null; +}}} else { +throw new IndexOutOfBoundsException(); +}this.modCount++; +return result; +}, "~N"); +Clazz_overrideMethod(c$, "removeRange", +function(start, end){ +if (start >= 0 && start <= end && end <= this.size()) { +if (start == end) { +return; +}var size = this.size(); +if (end == size) { +java.util.Arrays.fill(this.array, this.firstIndex + start, this.lastIndex, null); +this.lastIndex = this.firstIndex + start; +} else if (start == 0) { +java.util.Arrays.fill(this.array, this.firstIndex, this.firstIndex + end, null); +this.firstIndex += end; +} else { +System.arraycopy(this.array, this.firstIndex + end, this.array, this.firstIndex + start, size - end); +var newLast = this.lastIndex + start - end; +java.util.Arrays.fill(this.array, newLast, this.lastIndex, null); +this.lastIndex = newLast; +}this.modCount++; +} else { +throw new IndexOutOfBoundsException(); +}}, "~N,~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +if (0 <= location && location < this.size()) { +var result = this.array[this.firstIndex + location]; +this.array[this.firstIndex + location] = object; +return result; +}throw new IndexOutOfBoundsException(); +}, "~N,~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.lastIndex - this.firstIndex; +}); +Clazz_overrideMethod(c$, "toArray", +function(contents){ +var size = this.size(); +if (contents == null || size > contents.length) { +{ +return this.array.slice(this.firstIndex, this.firstIndex + size); +}}System.arraycopy(this.array, this.firstIndex, contents, 0, size); +if (size < contents.length) { +contents[size] = null; +}return contents; +}, "~A"); +Clazz_defineMethod(c$, "trimToSize", +function(){ +var size = this.size(); +var newArray = this.newElementArray(size); +System.arraycopy(this.array, this.firstIndex, newArray, 0, size); +this.array = newArray; +this.firstIndex = 0; +this.lastIndex = this.array.length; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.RandomAccess"], "java.util.Arrays", null, function(){ +var c$ = Clazz_declareType(java.util, "Arrays", null); +c$.fill = Clazz_defineMethod(c$, "fill", +function(a, fromIndex, toIndex, val){ +{ +if (arguments.length == 2) { +val = arguments[1]; +fromIndex = 0; +toIndex = a.length; +} +}java.util.Arrays.rangeCheck(a.length, fromIndex, toIndex); +for (var i = fromIndex; i < toIndex; i++) a[i] = val; + +}, "~A,~N,~N,~O"); +c$.asList = Clazz_defineMethod(c$, "asList", +function(a){ +return new java.util.Arrays.ArrayList(a); +}, "~A"); +c$.rangeCheck = Clazz_defineMethod(c$, "rangeCheck", +function(arrayLen, fromIndex, toIndex){ +if (fromIndex > toIndex) throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")"); +if (fromIndex < 0) throw new ArrayIndexOutOfBoundsException(fromIndex); +if (toIndex > arrayLen) throw new ArrayIndexOutOfBoundsException(toIndex); +}, "~N,~N,~N"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key){ +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +if (midVal < key) low = mid + 1; + else if (midVal > key) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~N"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key){ +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +var cmp = (midVal).compareTo(key); +if (cmp < 0) low = mid + 1; + else if (cmp > 0) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~O"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(a, key, c){ +if (c == null) return java.util.Arrays.binarySearch(a, key); +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +var cmp = c.compare(midVal, key); +if (cmp < 0) low = mid + 1; + else if (cmp > 0) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~O,java.util.Comparator"); +c$.equals = Clazz_defineMethod(c$, "equals", +function(a, a2){ +if (a === a2) return true; +if (a == null || a2 == null) return false; +var length = a.length; +if (a2.length != length) return false; +for (var i = 0; i < length; i++) { +var o1 = a[i]; +var o2 = a2[i]; +{ +if(!(o1==null?o2==null:(o1.equals==null?o1==o2:o1.equals(o2))))return false; +}} +return true; +}, "~A,~A"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(a, fromIndex, toIndex, c){ +if (a.length < 2) return; +var n = 0; +var p = null; +{ +n = arguments.count; p = fromIndex; +}var temp = a; +var ret = null; +switch (n) { +case 1: +p = null; +case 2: +fromIndex = 0; +toIndex = a.length; +break; +case 3: +p = null; +case 4: +p = c; +if (fromIndex == 0 && toIndex == a.length) { +temp = a; +} else { +{ +temp = a.slice(fromIndex, toIndex); +}ret = a; +}break; +} +java.util.Arrays.rangeCheck(a.length, fromIndex, toIndex); +if (p == null) p = java.util.Arrays.comp; +c = p; +{ +temp.sort(c.compare); +}if (ret != null) { +System.arraycopy(temp, 0, ret, fromIndex, toIndex); +}}, "~A,~N,~N,java.util.Comparator"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.a = null; +Clazz_instantialize(this, arguments);}, java.util.Arrays, "ArrayList", java.util.AbstractList, [java.util.RandomAccess, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(array){ +Clazz_superConstructor (this, java.util.Arrays.ArrayList, []); +if (array == null) throw new NullPointerException(); +this.a = array; +}, "~A"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.a.length; +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.a.clone(); +}); +Clazz_overrideMethod(c$, "get", +function(index){ +return this.a[index]; +}, "~N"); +Clazz_overrideMethod(c$, "set", +function(index, element){ +var oldValue = this.a[index]; +this.a[index] = element; +return oldValue; +}, "~N,~O"); +Clazz_overrideMethod(c$, "indexOf", +function(o){ +if (o == null) { +for (var i = 0; i < this.a.length; i++) if (this.a[i] == null) return i; + +} else { +for (var i = 0; i < this.a.length; i++) if (o.equals(this.a[i])) return i; + +}return -1; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.indexOf(o) != -1; +}, "~O"); +/*eoif3*/})(); +c$.comp = null; +{ +c$.comp = {compare: function (o1, o2) { +return (o1 == null ? (o2 == null ? 0 : -1) : o2 == null ? 1 +: typeof o1 == "number" ? o1 - o2 : o1.compareTo(o2))}}; +}}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractList", "$.AbstractMap", "$.AbstractSet", "$.Collection", "$.Enumeration", "$.Iterator", "$.List", "$.ListIterator", "$.Map", "$.RandomAccess", "$.Set", "$.SortedMap", "$.SortedSet", "java.lang.reflect.Array"], "java.util.Collections", ["java.util.ArrayList", "$.Arrays", "java.util.Map.Entry", "java.util.Random"], function(){ +var c$ = Clazz_declareType(java.util, "Collections", null); +c$.emptyEnumeration = Clazz_defineMethod(c$, "emptyEnumeration", +function(){ +if (java.util.Collections.EMPTY_ENUMERATION == null) java.util.Collections.EMPTY_ENUMERATION = new java.util.Collections.EmptyEnumeration(); +return java.util.Collections.EMPTY_ENUMERATION; +}); +c$.emptyIterator = Clazz_defineMethod(c$, "emptyIterator", +function(){ +if (java.util.Collections.EMPTY_ITERATOR == null) { +java.util.Collections.EMPTY_ITERATOR = new java.util.Collections.EmptyIterator(); +}return java.util.Collections.EMPTY_ITERATOR; +}); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(list, object){ +if (list == null) { +throw new NullPointerException(); +}if (list.isEmpty()) { +return -1; +}var key = object; +if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var it = list.listIterator(); +while (it.hasNext()) { +var result; +if ((result = key.compareTo(it.next())) <= 0) { +if (result == 0) { +return it.previousIndex(); +}return -it.previousIndex() - 1; +}} +return -list.size() - 1; +}var low = 0; +var mid = list.size(); +var high = mid - 1; +var result = -1; +while (low <= high) { +mid = (low + high) >> 1; +if ((result = key.compareTo(list.get(mid))) > 0) { +low = mid + 1; +} else if (result == 0) { +return mid; +} else { +high = mid - 1; +}} +return -mid - (result < 0 ? 1 : 2); +}, "java.util.List,~O"); +c$.binarySearch = Clazz_defineMethod(c$, "binarySearch", +function(list, object, comparator){ +if (comparator == null) { +return java.util.Collections.binarySearch(list, object); +}if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var it = list.listIterator(); +while (it.hasNext()) { +var result; +if ((result = comparator.compare(object, it.next())) <= 0) { +if (result == 0) { +return it.previousIndex(); +}return -it.previousIndex() - 1; +}} +return -list.size() - 1; +}var low = 0; +var mid = list.size(); +var high = mid - 1; +var result = -1; +while (low <= high) { +mid = (low + high) >> 1; +if ((result = comparator.compare(object, list.get(mid))) > 0) { +low = mid + 1; +} else if (result == 0) { +return mid; +} else { +high = mid - 1; +}} +return -mid - (result < 0 ? 1 : 2); +}, "java.util.List,~O,java.util.Comparator"); +c$.copy = Clazz_defineMethod(c$, "copy", +function(destination, source){ +if (destination.size() < source.size()) { +throw new ArrayIndexOutOfBoundsException(); +}var srcIt = source.iterator(); +var destIt = destination.listIterator(); +while (srcIt.hasNext()) { +try { +destIt.next(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.util.NoSuchElementException")){ +throw new ArrayIndexOutOfBoundsException(); +} else { +throw e; +} +} +destIt.set(srcIt.next()); +} +}, "java.util.List,java.util.List"); +c$.enumeration = Clazz_defineMethod(c$, "enumeration", +function(collection){ +var c = collection; +return ((Clazz_isClassDefined("java.util.Collections$1") ? 0 : java.util.Collections.$Collections$1$ ()), Clazz_innerTypeInstance(java.util.Collections$1, this, Clazz_cloneFinals("c", c))); +}, "java.util.Collection"); +c$.fill = Clazz_defineMethod(c$, "fill", +function(list, object){ +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(object); +} +}, "java.util.List,~O"); +c$.max = Clazz_defineMethod(c$, "max", +function(collection){ +var it = collection.iterator(); +var max = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (max.compareTo(next) < 0) { +max = next; +}} +return max; +}, "java.util.Collection"); +c$.max = Clazz_defineMethod(c$, "max", +function(collection, comparator){ +var it = collection.iterator(); +var max = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (comparator.compare(max, next) < 0) { +max = next; +}} +return max; +}, "java.util.Collection,java.util.Comparator"); +c$.min = Clazz_defineMethod(c$, "min", +function(collection){ +var it = collection.iterator(); +var min = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (min.compareTo(next) > 0) { +min = next; +}} +return min; +}, "java.util.Collection"); +c$.min = Clazz_defineMethod(c$, "min", +function(collection, comparator){ +var it = collection.iterator(); +var min = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (comparator.compare(min, next) > 0) { +min = next; +}} +return min; +}, "java.util.Collection,java.util.Comparator"); +c$.nCopies = Clazz_defineMethod(c$, "nCopies", +function(length, object){ +return new java.util.Collections.CopiesList(length, object); +}, "~N,~O"); +c$.reverse = Clazz_defineMethod(c$, "reverse", +function(list){ +var size = list.size(); +var front = list.listIterator(); +var back = list.listIterator(size); +for (var i = 0; i < Clazz_doubleToInt(size / 2); i++) { +var frontNext = front.next(); +var backPrev = back.previous(); +front.set(backPrev); +back.set(frontNext); +} +}, "java.util.List"); +c$.reverseOrder = Clazz_defineMethod(c$, "reverseOrder", +function(){ +return new java.util.Collections.ReverseComparator(); +}); +c$.reverseOrder = Clazz_defineMethod(c$, "reverseOrder", +function(c){ +if (c == null) { +return java.util.Collections.reverseOrder(); +}return new java.util.Collections.ReverseComparatorWithComparator(c); +}, "java.util.Comparator"); +c$.shuffle = Clazz_defineMethod(c$, "shuffle", +function(list){ +java.util.Collections.shuffle(list, new java.util.Random()); +}, "java.util.List"); +c$.shuffle = Clazz_defineMethod(c$, "shuffle", +function(list, random){ +if (!(Clazz_instanceOf(list,"java.util.RandomAccess"))) { +var array = list.toArray(); +for (var i = array.length - 1; i > 0; i--) { +var index = random.nextInt() % (i + 1); +if (index < 0) { +index = -index; +}var temp = array[i]; +array[i] = array[index]; +array[index] = temp; +} +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +} else { +var rawList = list; +for (var i = rawList.size() - 1; i > 0; i--) { +var index = random.nextInt() % (i + 1); +if (index < 0) { +index = -index; +}rawList.set(index, rawList.set(i, rawList.get(index))); +} +}}, "java.util.List,java.util.Random"); +c$.singleton = Clazz_defineMethod(c$, "singleton", +function(object){ +return new java.util.Collections.SingletonSet(object); +}, "~O"); +c$.singletonList = Clazz_defineMethod(c$, "singletonList", +function(object){ +return new java.util.Collections.SingletonList(object); +}, "~O"); +c$.singletonMap = Clazz_defineMethod(c$, "singletonMap", +function(key, value){ +return new java.util.Collections.SingletonMap(key, value); +}, "~O,~O"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(list){ +var array = list.toArray(); +java.util.Arrays.sort(array); +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +}, "java.util.List"); +c$.sort = Clazz_defineMethod(c$, "sort", +function(list, comparator){ +var array = list.toArray( new Array(list.size())); +java.util.Arrays.sort(array, comparator); +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +}, "java.util.List,java.util.Comparator"); +c$.swap = Clazz_defineMethod(c$, "swap", +function(list, index1, index2){ +if (list == null) { +throw new NullPointerException(); +}if (index1 == index2) { +return; +}var rawList = list; +rawList.set(index2, rawList.set(index1, rawList.get(index2))); +}, "java.util.List,~N,~N"); +c$.replaceAll = Clazz_defineMethod(c$, "replaceAll", +function(list, obj, obj2){ +var index; +var found = false; +while ((index = list.indexOf(obj)) > -1) { +found = true; +list.set(index, obj2); +} +return found; +}, "java.util.List,~O,~O"); +c$.rotate = Clazz_defineMethod(c$, "rotate", +function(lst, dist){ +var list = lst; +var size = list.size(); +if (size == 0) { +return; +}var normdist; +if (dist > 0) { +normdist = dist % size; +} else { +normdist = size - ((dist % size) * (-1)); +}if (normdist == 0 || normdist == size) { +return; +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +var temp = list.get(0); +var index = 0; +var beginIndex = 0; +for (var i = 0; i < size; i++) { +index = (index + normdist) % size; +temp = list.set(index, temp); +if (index == beginIndex) { +index = ++beginIndex; +temp = list.get(beginIndex); +}} +} else { +var divideIndex = (size - normdist) % size; +var sublist1 = list.subList(0, divideIndex); +var sublist2 = list.subList(divideIndex, size); +java.util.Collections.reverse(sublist1); +java.util.Collections.reverse(sublist2); +java.util.Collections.reverse(list); +}}, "java.util.List,~N"); +c$.indexOfSubList = Clazz_defineMethod(c$, "indexOfSubList", +function(list, sublist){ +var size = list.size(); +var sublistSize = sublist.size(); +if (sublistSize > size) { +return -1; +}if (sublistSize == 0) { +return 0; +}var firstObj = sublist.get(0); +var index = list.indexOf(firstObj); +if (index == -1) { +return -1; +}while (index < size && (size - index >= sublistSize)) { +var listIt = list.listIterator(index); +if ((firstObj == null) ? listIt.next() == null : firstObj.equals(listIt.next())) { +var sublistIt = sublist.listIterator(1); +var difFound = false; +while (sublistIt.hasNext()) { +var element = sublistIt.next(); +if (!listIt.hasNext()) { +return -1; +}if ((element == null) ? listIt.next() != null : !element.equals(listIt.next())) { +difFound = true; +break; +}} +if (!difFound) { +return index; +}}index++; +} +return -1; +}, "java.util.List,java.util.List"); +c$.lastIndexOfSubList = Clazz_defineMethod(c$, "lastIndexOfSubList", +function(list, sublist){ +var sublistSize = sublist.size(); +var size = list.size(); +if (sublistSize > size) { +return -1; +}if (sublistSize == 0) { +return size; +}var lastObj = sublist.get(sublistSize - 1); +var index = list.lastIndexOf(lastObj); +while ((index > -1) && (index + 1 >= sublistSize)) { +var listIt = list.listIterator(index + 1); +if ((lastObj == null) ? listIt.previous() == null : lastObj.equals(listIt.previous())) { +var sublistIt = sublist.listIterator(sublistSize - 1); +var difFound = false; +while (sublistIt.hasPrevious()) { +var element = sublistIt.previous(); +if (!listIt.hasPrevious()) { +return -1; +}if ((element == null) ? listIt.previous() != null : !element.equals(listIt.previous())) { +difFound = true; +break; +}} +if (!difFound) { +return listIt.nextIndex(); +}}index--; +} +return -1; +}, "java.util.List,java.util.List"); +c$.list = Clazz_defineMethod(c$, "list", +function(enumeration){ +var list = new java.util.ArrayList(); +while (enumeration.hasMoreElements()) { +list.add(enumeration.nextElement()); +} +return list; +}, "java.util.Enumeration"); +c$.synchronizedCollection = Clazz_defineMethod(c$, "synchronizedCollection", +function(collection){ +if (collection == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedCollection(collection); +}, "java.util.Collection"); +c$.synchronizedList = Clazz_defineMethod(c$, "synchronizedList", +function(list){ +if (list == null) { +throw new NullPointerException(); +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.SynchronizedRandomAccessList(list); +}return new java.util.Collections.SynchronizedList(list); +}, "java.util.List"); +c$.synchronizedMap = Clazz_defineMethod(c$, "synchronizedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedMap(map); +}, "java.util.Map"); +c$.synchronizedSet = Clazz_defineMethod(c$, "synchronizedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSet(set); +}, "java.util.Set"); +c$.synchronizedSortedMap = Clazz_defineMethod(c$, "synchronizedSortedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSortedMap(map); +}, "java.util.SortedMap"); +c$.synchronizedSortedSet = Clazz_defineMethod(c$, "synchronizedSortedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSortedSet(set); +}, "java.util.SortedSet"); +c$.unmodifiableCollection = Clazz_defineMethod(c$, "unmodifiableCollection", +function(collection){ +if (collection == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableCollection(collection); +}, "java.util.Collection"); +c$.unmodifiableList = Clazz_defineMethod(c$, "unmodifiableList", +function(list){ +if (list == null) { +throw new NullPointerException(); +}if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.UnmodifiableRandomAccessList(list); +}return new java.util.Collections.UnmodifiableList(list); +}, "java.util.List"); +c$.unmodifiableMap = Clazz_defineMethod(c$, "unmodifiableMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableMap(map); +}, "java.util.Map"); +c$.unmodifiableSet = Clazz_defineMethod(c$, "unmodifiableSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSet(set); +}, "java.util.Set"); +c$.unmodifiableSortedMap = Clazz_defineMethod(c$, "unmodifiableSortedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSortedMap(map); +}, "java.util.SortedMap"); +c$.unmodifiableSortedSet = Clazz_defineMethod(c$, "unmodifiableSortedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSortedSet(set); +}, "java.util.SortedSet"); +c$.frequency = Clazz_defineMethod(c$, "frequency", +function(c, o){ +if (c == null) { +throw new NullPointerException(); +}if (c.isEmpty()) { +return 0; +}var result = 0; +var itr = c.iterator(); +while (itr.hasNext()) { +var e = itr.next(); +if (o == null ? e == null : o.equals(e)) { +result++; +}} +return result; +}, "java.util.Collection,~O"); +c$.emptyList = Clazz_defineMethod(c$, "emptyList", +function(){ +return java.util.Collections.EMPTY_LIST; +}); +c$.emptySet = Clazz_defineMethod(c$, "emptySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +c$.emptyMap = Clazz_defineMethod(c$, "emptyMap", +function(){ +return java.util.Collections.EMPTY_MAP; +}); +c$.checkedCollection = Clazz_defineMethod(c$, "checkedCollection", +function(c, type){ +return new java.util.Collections.CheckedCollection(c, type); +}, "java.util.Collection,Class"); +c$.checkedMap = Clazz_defineMethod(c$, "checkedMap", +function(m, keyType, valueType){ +return new java.util.Collections.CheckedMap(m, keyType, valueType); +}, "java.util.Map,Class,Class"); +c$.checkedList = Clazz_defineMethod(c$, "checkedList", +function(list, type){ +if (Clazz_instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.CheckedRandomAccessList(list, type); +}return new java.util.Collections.CheckedList(list, type); +}, "java.util.List,Class"); +c$.checkedSet = Clazz_defineMethod(c$, "checkedSet", +function(s, type){ +return new java.util.Collections.CheckedSet(s, type); +}, "java.util.Set,Class"); +c$.checkedSortedMap = Clazz_defineMethod(c$, "checkedSortedMap", +function(m, keyType, valueType){ +return new java.util.Collections.CheckedSortedMap(m, keyType, valueType); +}, "java.util.SortedMap,Class,Class"); +c$.checkedSortedSet = Clazz_defineMethod(c$, "checkedSortedSet", +function(s, type){ +return new java.util.Collections.CheckedSortedSet(s, type); +}, "java.util.SortedSet,Class"); +c$.addAll = Clazz_defineMethod(c$, "addAll", +function(c, a){ +var modified = false; +for (var i = 0; i < a.length; i++) { +modified = new Boolean (modified | c.add(a[i])).valueOf(); +} +return modified; +}, "java.util.Collection,~A"); +c$.disjoint = Clazz_defineMethod(c$, "disjoint", +function(c1, c2){ +if ((Clazz_instanceOf(c1,"java.util.Set")) && !(Clazz_instanceOf(c2,"java.util.Set")) || (c2.size()) > c1.size()) { +var tmp = c1; +c1 = c2; +c2 = tmp; +}var it = c1.iterator(); +while (it.hasNext()) { +if (c2.contains(it.next())) { +return false; +}} +return true; +}, "java.util.Collection,java.util.Collection"); +c$.checkType = Clazz_defineMethod(c$, "checkType", +function(obj, type){ +if (!type.isInstance(obj)) { +throw new ClassCastException("Attempt to insert " + obj.getClass() + " element into collection with element type " + type); +}return obj; +}, "~O,Class"); +c$.$Collections$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.it = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$1", null, java.util.Enumeration); +Clazz_prepareFields (c$, function(){ +this.it = this.f$.c.iterator(); +}); +Clazz_defineMethod(c$, "hasMoreElements", +function(){ +return this.it.hasNext(); +}); +Clazz_defineMethod(c$, "nextElement", +function(){ +return this.it.next(); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyEnumeration", null, java.util.Enumeration); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +throw new java.util.NoSuchElementException(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyIterator", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "next", +function(){ +throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new IllegalStateException(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.n = 0; +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CopiesList", java.util.AbstractList, java.io.Serializable); +Clazz_makeConstructor(c$, +function(length, object){ +Clazz_superConstructor (this, java.util.Collections.CopiesList, []); +if (length < 0) { +throw new IllegalArgumentException(); +}this.n = length; +this.element = object; +}, "~N,~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.n; +}); +Clazz_overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.n) { +return this.element; +}throw new IndexOutOfBoundsException(); +}, "~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyList", java.util.AbstractList, java.io.Serializable); +Clazz_overrideMethod(c$, "contains", +function(object){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "get", +function(location){ +throw new IndexOutOfBoundsException(); +}, "~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptySet", java.util.AbstractSet, java.io.Serializable); +Clazz_overrideMethod(c$, "contains", +function(object){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$EmptySet$1") ? 0 : java.util.Collections.EmptySet.$Collections$EmptySet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$EmptySet$1, this, null)); +}); +c$.$Collections$EmptySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$EmptySet$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "next", +function(){ +throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "EmptyMap", java.util.AbstractMap, java.io.Serializable); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return false; +}, "~O"); +Clazz_overrideMethod(c$, "entrySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +Clazz_overrideMethod(c$, "get", +function(key){ +return null; +}, "~O"); +Clazz_overrideMethod(c$, "keySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +Clazz_overrideMethod(c$, "values", +function(){ +return java.util.Collections.EMPTY_LIST; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "ReverseComparator", null, [java.util.Comparator, java.io.Serializable]); +Clazz_overrideMethod(c$, "compare", +function(o1, o2){ +var c2 = o2; +return c2.compareTo(o1); +}, "~O,~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.comparator = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "ReverseComparatorWithComparator", null, [java.util.Comparator, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(comparator){ +this.comparator = comparator; +}, "java.util.Comparator"); +Clazz_defineMethod(c$, "compare", +function(o1, o2){ +return this.comparator.compare(o2, o1); +}, "~O,~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonSet", java.util.AbstractSet, java.io.Serializable); +Clazz_makeConstructor(c$, +function(object){ +Clazz_superConstructor (this, java.util.Collections.SingletonSet, []); +this.element = object; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonSet$1") ? 0 : java.util.Collections.SingletonSet.$Collections$SingletonSet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonSet$1, this, null)); +}); +c$.$Collections$SingletonSet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.$hasNext = true; +Clazz_instantialize(this, arguments);}, java.util, "Collections$SingletonSet$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.$hasNext; +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.$hasNext) { +this.$hasNext = false; +return this.b$["java.util.Collections.SingletonSet"].element; +}throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.element = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonList", java.util.AbstractList, java.io.Serializable); +Clazz_makeConstructor(c$, +function(object){ +Clazz_superConstructor (this, java.util.Collections.SingletonList, []); +this.element = object; +}, "~O"); +Clazz_overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(location){ +if (location == 0) { +return this.element; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.k = null; +this.v = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SingletonMap", java.util.AbstractMap, java.io.Serializable); +Clazz_makeConstructor(c$, +function(key, value){ +Clazz_superConstructor (this, java.util.Collections.SingletonMap, []); +this.k = key; +this.v = value; +}, "~O,~O"); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +return this.k == null ? key == null : this.k.equals(key); +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return this.v == null ? value == null : this.v.equals(value); +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +if (this.containsKey(key)) { +return this.v; +}return null; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "entrySet", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1") ? 0 : java.util.Collections.SingletonMap.$Collections$SingletonMap$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1, this, null)); +}); +c$.$Collections$SingletonMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$SingletonMap$1", java.util.AbstractSet); +Clazz_overrideMethod(c$, "contains", +function(object){ +if (Clazz_instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return this.b$["java.util.Collections.SingletonMap"].containsKey(entry.getKey()) && this.b$["java.util.Collections.SingletonMap"].containsValue(entry.getValue()); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1$1") ? 0 : java.util.Collections.$Collections$SingletonMap$1$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$Collections$SingletonMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.$hasNext = true; +Clazz_instantialize(this, arguments);}, java.util, "Collections$SingletonMap$1$1", null, java.util.Iterator); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.$hasNext; +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.$hasNext) { +this.$hasNext = false; +return ((Clazz_isClassDefined("java.util.Collections$SingletonMap$1$1$1") ? 0 : java.util.Collections.$Collections$SingletonMap$1$1$1$ ()), Clazz_innerTypeInstance(java.util.Collections$SingletonMap$1$1$1, this, null)); +}throw new java.util.NoSuchElementException(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +c$.$Collections$SingletonMap$1$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Collections$SingletonMap$1$1$1", null, java.util.Map.Entry); +Clazz_overrideMethod(c$, "equals", +function(object){ +return this.b$["java.util.Collections$SingletonMap$1"].contains(object); +}, "~O"); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.b$["java.util.Collections.SingletonMap"].k; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.b$["java.util.Collections.SingletonMap"].v; +}); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return (this.b$["java.util.Collections.SingletonMap"].k == null ? 0 : this.b$["java.util.Collections.SingletonMap"].k.hashCode()) ^ (this.b$["java.util.Collections.SingletonMap"].v == null ? 0 : this.b$["java.util.Collections.SingletonMap"].v.hashCode()); +}); +Clazz_overrideMethod(c$, "setValue", +function(value){ +throw new UnsupportedOperationException(); +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +this.mutex = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(collection){ +this.c = collection; +this.mutex = this; +}, "java.util.Collection"); +Clazz_makeConstructor(c$, +function(collection, mutex){ +this.c = collection; +this.mutex = mutex; +}, "java.util.Collection,~O"); +Clazz_defineMethod(c$, "add", +function(object){ +{ +return this.c.add(object); +}}, "~O"); +Clazz_defineMethod(c$, "addAll", +function(collection){ +{ +return this.c.addAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "clear", +function(){ +{ +this.c.clear(); +}}); +Clazz_defineMethod(c$, "contains", +function(object){ +{ +return this.c.contains(object); +}}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(collection){ +{ +return this.c.containsAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +{ +return this.c.isEmpty(); +}}); +Clazz_defineMethod(c$, "iterator", +function(){ +{ +return this.c.iterator(); +}}); +Clazz_defineMethod(c$, "remove", +function(object){ +{ +return this.c.remove(object); +}}, "~O"); +Clazz_defineMethod(c$, "removeAll", +function(collection){ +{ +return this.c.removeAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "retainAll", +function(collection){ +{ +return this.c.retainAll(collection); +}}, "java.util.Collection"); +Clazz_defineMethod(c$, "size", +function(){ +{ +return this.c.size(); +}}); +Clazz_defineMethod(c$, "toArray", +function(){ +{ +return this.c.toArray(); +}}); +Clazz_defineMethod(c$, "toString", +function(){ +{ +return this.c.toString(); +}}); +Clazz_defineMethod(c$, "toArray", +function(array){ +{ +return this.c.toArray(array); +}}, "~A"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "SynchronizedRandomAccessList", java.util.Collections.SynchronizedList, java.util.RandomAccess); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +{ +return new java.util.Collections.SynchronizedRandomAccessList(this.list.subList(start, end), this.mutex); +}}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedList", java.util.Collections.SynchronizedCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedList, [l]); +this.list = l; +}, "java.util.List"); +Clazz_makeConstructor(c$, +function(l, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedList, [l, mutex]); +this.list = l; +}, "java.util.List,~O"); +Clazz_defineMethod(c$, "add", +function(location, object){ +{ +this.list.add(location, object); +}}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +{ +return this.list.addAll(location, collection); +}}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "equals", +function(object){ +{ +return this.list.equals(object); +}}, "~O"); +Clazz_defineMethod(c$, "get", +function(location){ +{ +return this.list.get(location); +}}, "~N"); +Clazz_defineMethod(c$, "hashCode", +function(){ +{ +return this.list.hashCode(); +}}); +Clazz_defineMethod(c$, "indexOf", +function(object){ +{ +return this.list.indexOf(object); +}}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(object){ +{ +return this.list.lastIndexOf(object); +}}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +{ +return this.list.listIterator(); +}}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +{ +return this.list.listIterator(location); +}}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +{ +return this.list.remove(location); +}}, "~N"); +Clazz_defineMethod(c$, "set", +function(location, object){ +{ +return this.list.set(location, object); +}}, "~N,~O"); +Clazz_defineMethod(c$, "subList", +function(start, end){ +{ +return new java.util.Collections.SynchronizedList(this.list.subList(start, end), this.mutex); +}}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +this.mutex = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(map){ +this.m = map; +this.mutex = this; +}, "java.util.Map"); +Clazz_makeConstructor(c$, +function(map, mutex){ +this.m = map; +this.mutex = mutex; +}, "java.util.Map,~O"); +Clazz_defineMethod(c$, "clear", +function(){ +{ +this.m.clear(); +}}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +{ +return this.m.containsKey(key); +}}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +{ +return this.m.containsValue(value); +}}, "~O"); +Clazz_defineMethod(c$, "entrySet", +function(){ +{ +return new java.util.Collections.SynchronizedSet(this.m.entrySet(), this.mutex); +}}); +Clazz_defineMethod(c$, "equals", +function(object){ +{ +return this.m.equals(object); +}}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +{ +return this.m.get(key); +}}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +{ +return this.m.hashCode(); +}}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +{ +return this.m.isEmpty(); +}}); +Clazz_defineMethod(c$, "keySet", +function(){ +{ +return new java.util.Collections.SynchronizedSet(this.m.keySet(), this.mutex); +}}); +Clazz_defineMethod(c$, "put", +function(key, value){ +{ +return this.m.put(key, value); +}}, "~O,~O"); +Clazz_defineMethod(c$, "putAll", +function(map){ +{ +this.m.putAll(map); +}}, "java.util.Map"); +Clazz_defineMethod(c$, "remove", +function(key){ +{ +return this.m.remove(key); +}}, "~O"); +Clazz_defineMethod(c$, "size", +function(){ +{ +return this.m.size(); +}}); +Clazz_defineMethod(c$, "values", +function(){ +{ +return new java.util.Collections.SynchronizedCollection(this.m.values(), this.mutex); +}}); +Clazz_defineMethod(c$, "toString", +function(){ +{ +return this.m.toString(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "SynchronizedSet", java.util.Collections.SynchronizedCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +{ +return this.c.equals(object); +}}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +{ +return this.c.hashCode(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedSortedMap", java.util.Collections.SynchronizedMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(map){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedMap, [map]); +this.sm = map; +}, "java.util.SortedMap"); +Clazz_makeConstructor(c$, +function(map, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedMap, [map, mutex]); +this.sm = map; +}, "java.util.SortedMap,~O"); +Clazz_defineMethod(c$, "comparator", +function(){ +{ +return this.sm.comparator(); +}}); +Clazz_defineMethod(c$, "firstKey", +function(){ +{ +return this.sm.firstKey(); +}}); +Clazz_defineMethod(c$, "headMap", +function(endKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.headMap(endKey), this.mutex); +}}, "~O"); +Clazz_defineMethod(c$, "lastKey", +function(){ +{ +return this.sm.lastKey(); +}}); +Clazz_defineMethod(c$, "subMap", +function(startKey, endKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.subMap(startKey, endKey), this.mutex); +}}, "~O,~O"); +Clazz_defineMethod(c$, "tailMap", +function(startKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.tailMap(startKey), this.mutex); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "SynchronizedSortedSet", java.util.Collections.SynchronizedSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(set){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedSet, [set]); +this.ss = set; +}, "java.util.SortedSet"); +Clazz_makeConstructor(c$, +function(set, mutex){ +Clazz_superConstructor(this, java.util.Collections.SynchronizedSortedSet, [set, mutex]); +this.ss = set; +}, "java.util.SortedSet,~O"); +Clazz_defineMethod(c$, "comparator", +function(){ +{ +return this.ss.comparator(); +}}); +Clazz_defineMethod(c$, "first", +function(){ +{ +return this.ss.first(); +}}); +Clazz_defineMethod(c$, "headSet", +function(end){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.headSet(end), this.mutex); +}}, "~O"); +Clazz_defineMethod(c$, "last", +function(){ +{ +return this.ss.last(); +}}); +Clazz_defineMethod(c$, "subSet", +function(start, end){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.subSet(start, end), this.mutex); +}}, "~O,~O"); +Clazz_defineMethod(c$, "tailSet", +function(start){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.tailSet(start), this.mutex); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(collection){ +this.c = collection; +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "addAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "clear", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_defineMethod(c$, "contains", +function(object){ +return this.c.contains(object); +}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(collection){ +return this.c.containsAll(collection); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.c.isEmpty(); +}); +Clazz_defineMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableCollection$1") ? 0 : java.util.Collections.UnmodifiableCollection.$Collections$UnmodifiableCollection$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableCollection$1, this, null)); +}); +Clazz_overrideMethod(c$, "remove", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_overrideMethod(c$, "removeAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "retainAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "size", +function(){ +return this.c.size(); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.c.toArray(); +}); +Clazz_defineMethod(c$, "toArray", +function(array){ +return this.c.toArray(array); +}, "~A"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.c.toString(); +}); +c$.$Collections$UnmodifiableCollection$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableCollection$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableCollection"].c.iterator(); +}); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.iterator.next(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "UnmodifiableRandomAccessList", java.util.Collections.UnmodifiableList, java.util.RandomAccess); +Clazz_overrideMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.UnmodifiableRandomAccessList(this.list.subList(start, end)); +}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.list = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableList", java.util.Collections.UnmodifiableCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableList, [l]); +this.list = l; +}, "java.util.List"); +Clazz_defineMethod(c$, "add", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "addAll", +function(location, collection){ +throw new UnsupportedOperationException(); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.list.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(location){ +return this.list.get(location); +}, "~N"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.list.hashCode(); +}); +Clazz_defineMethod(c$, "indexOf", +function(object){ +return this.list.indexOf(object); +}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(object){ +return this.list.lastIndexOf(object); +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return this.listIterator(0); +}); +Clazz_defineMethod(c$, "listIterator", +function(location){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableList$1") ? 0 : java.util.Collections.UnmodifiableList.$Collections$UnmodifiableList$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableList$1, this, Clazz_cloneFinals("location", location))); +}, "~N"); +Clazz_defineMethod(c$, "remove", +function(location){ +throw new UnsupportedOperationException(); +}, "~N"); +Clazz_overrideMethod(c$, "set", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz_defineMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.UnmodifiableList(this.list.subList(start, end)); +}, "~N,~N"); +c$.$Collections$UnmodifiableList$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableList$1", null, java.util.ListIterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableList"].list.listIterator(this.f$.location); +}); +Clazz_overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "hasPrevious", +function(){ +return this.iterator.hasPrevious(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.iterator.next(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.iterator.nextIndex(); +}); +Clazz_defineMethod(c$, "previous", +function(){ +return this.iterator.previous(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +return this.iterator.previousIndex(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_overrideMethod(c$, "set", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(map){ +this.m = map; +}, "java.util.Map"); +Clazz_overrideMethod(c$, "clear", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +return this.m.containsKey(key); +}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +return this.m.containsValue(value); +}, "~O"); +Clazz_defineMethod(c$, "entrySet", +function(){ +return new java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet(this.m.entrySet()); +}); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.m.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +return this.m.get(key); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.m.hashCode(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.m.isEmpty(); +}); +Clazz_defineMethod(c$, "keySet", +function(){ +return new java.util.Collections.UnmodifiableSet(this.m.keySet()); +}); +Clazz_overrideMethod(c$, "put", +function(key, value){ +throw new UnsupportedOperationException(); +}, "~O,~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +throw new UnsupportedOperationException(); +}, "java.util.Map"); +Clazz_overrideMethod(c$, "remove", +function(key){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "size", +function(){ +return this.m.size(); +}); +Clazz_defineMethod(c$, "values", +function(){ +return new java.util.Collections.UnmodifiableCollection(this.m.values()); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.m.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections.UnmodifiableMap, "UnmodifiableEntrySet", java.util.Collections.UnmodifiableSet); +Clazz_overrideMethod(c$, "iterator", +function(){ +return ((Clazz_isClassDefined("java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1") ? 0 : java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.$Collections$UnmodifiableMap$UnmodifiableEntrySet$1$ ()), Clazz_innerTypeInstance(java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1, this, null)); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +var length = this.c.size(); +var result = new Array(length); +var it = this.iterator(); +for (var i = length; --i >= 0; ) { +result[i] = it.next(); +} +return result; +}); +Clazz_defineMethod(c$, "toArray", +function(contents){ +var size = this.c.size(); +var index = 0; +var it = this.iterator(); +if (size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, size); +}while (index < size) { +contents[index++] = it.next(); +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +c$.$Collections$UnmodifiableMap$UnmodifiableEntrySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.iterator = null; +Clazz_instantialize(this, arguments);}, java.util, "Collections$UnmodifiableMap$UnmodifiableEntrySet$1", null, java.util.Iterator); +Clazz_prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet"].c.iterator(); +}); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return new java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.UnmodifiableMapEntry(this.iterator.next()); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mapEntry = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet, "UnmodifiableMapEntry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(entry){ +this.mapEntry = entry; +}, "java.util.Map.Entry"); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.mapEntry.equals(object); +}, "~O"); +Clazz_defineMethod(c$, "getKey", +function(){ +return this.mapEntry.getKey(); +}); +Clazz_defineMethod(c$, "getValue", +function(){ +return this.mapEntry.getValue(); +}); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.mapEntry.hashCode(); +}); +Clazz_overrideMethod(c$, "setValue", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.mapEntry.toString(); +}); +/*eoif3*/})(); +/*eoif3*/})(); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "UnmodifiableSet", java.util.Collections.UnmodifiableCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(object){ +return this.c.equals(object); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.c.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableSortedMap", java.util.Collections.UnmodifiableMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(map){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableSortedMap, [map]); +this.sm = map; +}, "java.util.SortedMap"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.sm.comparator(); +}); +Clazz_defineMethod(c$, "firstKey", +function(){ +return this.sm.firstKey(); +}); +Clazz_defineMethod(c$, "headMap", +function(before){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.headMap(before)); +}, "~O"); +Clazz_defineMethod(c$, "lastKey", +function(){ +return this.sm.lastKey(); +}); +Clazz_defineMethod(c$, "subMap", +function(start, end){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.subMap(start, end)); +}, "~O,~O"); +Clazz_defineMethod(c$, "tailMap", +function(after){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.tailMap(after)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "UnmodifiableSortedSet", java.util.Collections.UnmodifiableSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(set){ +Clazz_superConstructor(this, java.util.Collections.UnmodifiableSortedSet, [set]); +this.ss = set; +}, "java.util.SortedSet"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.ss.comparator(); +}); +Clazz_defineMethod(c$, "first", +function(){ +return this.ss.first(); +}); +Clazz_defineMethod(c$, "headSet", +function(before){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.headSet(before)); +}, "~O"); +Clazz_defineMethod(c$, "last", +function(){ +return this.ss.last(); +}); +Clazz_defineMethod(c$, "subSet", +function(start, end){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.subSet(start, end)); +}, "~O,~O"); +Clazz_defineMethod(c$, "tailSet", +function(after){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.tailSet(after)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.c = null; +this.type = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(c, type){ +if (c == null || type == null) { +throw new NullPointerException(); +}this.c = c; +this.type = type; +}, "java.util.Collection,Class"); +Clazz_defineMethod(c$, "size", +function(){ +return this.c.size(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.c.isEmpty(); +}); +Clazz_defineMethod(c$, "contains", +function(obj){ +return this.c.contains(obj); +}, "~O"); +Clazz_defineMethod(c$, "iterator", +function(){ +var i = this.c.iterator(); +if (Clazz_instanceOf(i,"java.util.ListIterator")) { +i = new java.util.Collections.CheckedListIterator(i, this.type); +}return i; +}); +Clazz_defineMethod(c$, "toArray", +function(){ +return this.c.toArray(); +}); +Clazz_defineMethod(c$, "toArray", +function(arr){ +return this.c.toArray(arr); +}, "~A"); +Clazz_defineMethod(c$, "add", +function(obj){ +return this.c.add(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +Clazz_defineMethod(c$, "remove", +function(obj){ +return this.c.remove(obj); +}, "~O"); +Clazz_defineMethod(c$, "containsAll", +function(c1){ +return this.c.containsAll(c1); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "addAll", +function(c1){ +var size = c1.size(); +if (size == 0) { +return false; +}var arr = new Array(size); +var it = c1.iterator(); +for (var i = 0; i < size; i++) { +arr[i] = java.util.Collections.checkType(it.next(), this.type); +} +var added = false; +for (var i = 0; i < size; i++) { +added = new Boolean (added | this.c.add(arr[i])).valueOf(); +} +return added; +}, "java.util.Collection"); +Clazz_defineMethod(c$, "removeAll", +function(c1){ +return this.c.removeAll(c1); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "retainAll", +function(c1){ +return this.c.retainAll(c1); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "clear", +function(){ +this.c.clear(); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.c.toString(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.i = null; +this.type = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedListIterator", null, java.util.ListIterator); +Clazz_makeConstructor(c$, +function(i, type){ +this.i = i; +this.type = type; +}, "java.util.ListIterator,Class"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.i.hasNext(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return this.i.next(); +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.i.remove(); +}); +Clazz_defineMethod(c$, "hasPrevious", +function(){ +return this.i.hasPrevious(); +}); +Clazz_defineMethod(c$, "previous", +function(){ +return this.i.previous(); +}); +Clazz_defineMethod(c$, "nextIndex", +function(){ +return this.i.nextIndex(); +}); +Clazz_defineMethod(c$, "previousIndex", +function(){ +return this.i.previousIndex(); +}); +Clazz_defineMethod(c$, "set", +function(obj){ +this.i.set(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +Clazz_defineMethod(c$, "add", +function(obj){ +this.i.add(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.l = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedList", java.util.Collections.CheckedCollection, java.util.List); +Clazz_makeConstructor(c$, +function(l, type){ +Clazz_superConstructor(this, java.util.Collections.CheckedList, [l, type]); +this.l = l; +}, "java.util.List,Class"); +Clazz_defineMethod(c$, "addAll", +function(index, c1){ +var size = c1.size(); +if (size == 0) { +return false; +}var arr = new Array(size); +var it = c1.iterator(); +for (var i = 0; i < size; i++) { +arr[i] = java.util.Collections.checkType(it.next(), this.type); +} +return this.l.addAll(index, java.util.Arrays.asList(arr)); +}, "~N,java.util.Collection"); +Clazz_defineMethod(c$, "get", +function(index){ +return this.l.get(index); +}, "~N"); +Clazz_defineMethod(c$, "set", +function(index, obj){ +return this.l.set(index, java.util.Collections.checkType(obj, this.type)); +}, "~N,~O"); +Clazz_defineMethod(c$, "add", +function(index, obj){ +this.l.add(index, java.util.Collections.checkType(obj, this.type)); +}, "~N,~O"); +Clazz_defineMethod(c$, "remove", +function(index){ +return this.l.remove(index); +}, "~N"); +Clazz_defineMethod(c$, "indexOf", +function(obj){ +return this.l.indexOf(obj); +}, "~O"); +Clazz_defineMethod(c$, "lastIndexOf", +function(obj){ +return this.l.lastIndexOf(obj); +}, "~O"); +Clazz_defineMethod(c$, "listIterator", +function(){ +return new java.util.Collections.CheckedListIterator(this.l.listIterator(), this.type); +}); +Clazz_defineMethod(c$, "listIterator", +function(index){ +return new java.util.Collections.CheckedListIterator(this.l.listIterator(index), this.type); +}, "~N"); +Clazz_defineMethod(c$, "subList", +function(fromIndex, toIndex){ +return java.util.Collections.checkedList(this.l.subList(fromIndex, toIndex), this.type); +}, "~N,~N"); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.l.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.l.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "CheckedRandomAccessList", java.util.Collections.CheckedList, java.util.RandomAccess); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_declareType(java.util.Collections, "CheckedSet", java.util.Collections.CheckedCollection, java.util.Set); +Clazz_overrideMethod(c$, "equals", +function(obj){ +return this.c.equals(obj); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.c.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m = null; +this.keyType = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedMap", null, [java.util.Map, java.io.Serializable]); +Clazz_makeConstructor(c$, +function(m, keyType, valueType){ +if (m == null || keyType == null || valueType == null) { +throw new NullPointerException(); +}this.m = m; +this.keyType = keyType; +this.valueType = valueType; +}, "java.util.Map,Class,Class"); +Clazz_defineMethod(c$, "size", +function(){ +return this.m.size(); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.m.isEmpty(); +}); +Clazz_defineMethod(c$, "containsKey", +function(key){ +return this.m.containsKey(key); +}, "~O"); +Clazz_defineMethod(c$, "containsValue", +function(value){ +return this.m.containsValue(value); +}, "~O"); +Clazz_defineMethod(c$, "get", +function(key){ +return this.m.get(key); +}, "~O"); +Clazz_defineMethod(c$, "put", +function(key, value){ +return this.m.put(java.util.Collections.checkType(key, this.keyType), java.util.Collections.checkType(value, this.valueType)); +}, "~O,~O"); +Clazz_defineMethod(c$, "remove", +function(key){ +return this.m.remove(key); +}, "~O"); +Clazz_overrideMethod(c$, "putAll", +function(map){ +var size = map.size(); +if (size == 0) { +return; +}var entries = new Array(size); +var it = map.entrySet().iterator(); +for (var i = 0; i < size; i++) { +var e = it.next(); +java.util.Collections.checkType(e.getKey(), this.keyType); +java.util.Collections.checkType(e.getValue(), this.valueType); +entries[i] = e; +} +for (var i = 0; i < size; i++) { +this.m.put(entries[i].getKey(), entries[i].getValue()); +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "clear", +function(){ +this.m.clear(); +}); +Clazz_defineMethod(c$, "keySet", +function(){ +return this.m.keySet(); +}); +Clazz_defineMethod(c$, "values", +function(){ +return this.m.values(); +}); +Clazz_defineMethod(c$, "entrySet", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntrySet(this.m.entrySet(), this.valueType); +}); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.m.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.m.hashCode(); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.m.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.e = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap, "CheckedEntry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(e, valueType){ +if (e == null) { +throw new NullPointerException(); +}this.e = e; +this.valueType = valueType; +}, "java.util.Map.Entry,Class"); +Clazz_defineMethod(c$, "getKey", +function(){ +return this.e.getKey(); +}); +Clazz_defineMethod(c$, "getValue", +function(){ +return this.e.getValue(); +}); +Clazz_defineMethod(c$, "setValue", +function(obj){ +return this.e.setValue(java.util.Collections.checkType(obj, this.valueType)); +}, "~O"); +Clazz_defineMethod(c$, "equals", +function(obj){ +return this.e.equals(obj); +}, "~O"); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.e.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.s = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap, "CheckedEntrySet", null, java.util.Set); +Clazz_makeConstructor(c$, +function(s, valueType){ +this.s = s; +this.valueType = valueType; +}, "java.util.Set,Class"); +Clazz_defineMethod(c$, "iterator", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntrySet.CheckedEntryIterator(this.s.iterator(), this.valueType); +}); +Clazz_defineMethod(c$, "toArray", +function(){ +var thisSize = this.size(); +var array = new Array(thisSize); +var it = this.iterator(); +for (var i = 0; i < thisSize; i++) { +array[i] = it.next(); +} +return array; +}); +Clazz_defineMethod(c$, "toArray", +function(array){ +var thisSize = this.size(); +if (array.length < thisSize) { +var ct = array.getClass().getComponentType(); +array = java.lang.reflect.Array.newInstance(ct, thisSize); +}var it = this.iterator(); +for (var i = 0; i < thisSize; i++) { +array[i] = it.next(); +} +if (thisSize < array.length) { +array[thisSize] = null; +}return array; +}, "~A"); +Clazz_defineMethod(c$, "retainAll", +function(c){ +return this.s.retainAll(c); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "removeAll", +function(c){ +return this.s.removeAll(c); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "containsAll", +function(c){ +return this.s.containsAll(c); +}, "java.util.Collection"); +Clazz_overrideMethod(c$, "addAll", +function(c){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz_defineMethod(c$, "remove", +function(o){ +return this.s.remove(o); +}, "~O"); +Clazz_defineMethod(c$, "contains", +function(o){ +return this.s.contains(o); +}, "~O"); +Clazz_overrideMethod(c$, "add", +function(o){ +throw new UnsupportedOperationException(); +}, "java.util.Map.Entry"); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.s.isEmpty(); +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.s.clear(); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.s.size(); +}); +Clazz_defineMethod(c$, "hashCode", +function(){ +return this.s.hashCode(); +}); +Clazz_defineMethod(c$, "equals", +function(object){ +return this.s.equals(object); +}, "~O"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.i = null; +this.valueType = null; +Clazz_instantialize(this, arguments);}, java.util.Collections.CheckedMap.CheckedEntrySet, "CheckedEntryIterator", null, java.util.Iterator); +Clazz_makeConstructor(c$, +function(i, valueType){ +this.i = i; +this.valueType = valueType; +}, "java.util.Iterator,Class"); +Clazz_defineMethod(c$, "hasNext", +function(){ +return this.i.hasNext(); +}); +Clazz_defineMethod(c$, "remove", +function(){ +this.i.remove(); +}); +Clazz_defineMethod(c$, "next", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntry(this.i.next(), this.valueType); +}); +/*eoif3*/})(); +/*eoif3*/})(); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ss = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedSortedSet", java.util.Collections.CheckedSet, java.util.SortedSet); +Clazz_makeConstructor(c$, +function(s, type){ +Clazz_superConstructor(this, java.util.Collections.CheckedSortedSet, [s, type]); +this.ss = s; +}, "java.util.SortedSet,Class"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.ss.comparator(); +}); +Clazz_defineMethod(c$, "subSet", +function(fromElement, toElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.subSet(fromElement, toElement), this.type); +}, "~O,~O"); +Clazz_defineMethod(c$, "headSet", +function(toElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.headSet(toElement), this.type); +}, "~O"); +Clazz_defineMethod(c$, "tailSet", +function(fromElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.tailSet(fromElement), this.type); +}, "~O"); +Clazz_defineMethod(c$, "first", +function(){ +return this.ss.first(); +}); +Clazz_defineMethod(c$, "last", +function(){ +return this.ss.last(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +Clazz_instantialize(this, arguments);}, java.util.Collections, "CheckedSortedMap", java.util.Collections.CheckedMap, java.util.SortedMap); +Clazz_makeConstructor(c$, +function(m, keyType, valueType){ +Clazz_superConstructor(this, java.util.Collections.CheckedSortedMap, [m, keyType, valueType]); +this.sm = m; +}, "java.util.SortedMap,Class,Class"); +Clazz_defineMethod(c$, "comparator", +function(){ +return this.sm.comparator(); +}); +Clazz_defineMethod(c$, "subMap", +function(fromKey, toKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.subMap(fromKey, toKey), this.keyType, this.valueType); +}, "~O,~O"); +Clazz_defineMethod(c$, "headMap", +function(toKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.headMap(toKey), this.keyType, this.valueType); +}, "~O"); +Clazz_defineMethod(c$, "tailMap", +function(fromKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.tailMap(fromKey), this.keyType, this.valueType); +}, "~O"); +Clazz_defineMethod(c$, "firstKey", +function(){ +return this.sm.firstKey(); +}); +Clazz_defineMethod(c$, "lastKey", +function(){ +return this.sm.lastKey(); +}); +/*eoif3*/})(); +c$.EMPTY_ENUMERATION = null; +c$.EMPTY_ITERATOR = null; +c$.EMPTY_LIST = new java.util.Collections.EmptyList(); +c$.EMPTY_SET = new java.util.Collections.EmptySet(); +c$.EMPTY_MAP = new java.util.Collections.EmptyMap(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +(function(){ +var c$ = Clazz_declareType(java.util, "Dictionary", null); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.AbstractCollection", "$.AbstractSet", "$.Dictionary", "$.Enumeration", "$.Iterator", "$.Map"], "java.util.Hashtable", ["java.util.Collections"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.table = null; +this.count = 0; +this.threshold = 0; +this.loadFactor = 0; +this.modCount = 0; +this.$keySet = null; +this.$entrySet = null; +this.$values = null; +this.__m = null; +this.__allowJS = false; +Clazz_instantialize(this, arguments);}, java.util, "Hashtable", java.util.Dictionary, [java.util.Map, Cloneable]); +Clazz_makeConstructor(c$, +function(){ +this.initHT(); +}); +Clazz_defineMethod(c$, "initHT", +function(){ +var map = null; +var capacity = 11; +var loadFactor = 0.75; +{ +capacity = arguments[0]; +loadFactor = arguments[1]; +if (typeof capacity == "object") { +map = capacity; +capacity = Math.max(2*t.size(), 11); +this.__allowJS = map.__allowJS; +} else { +this.__allowJS = true; +} +capacity = (capacity || 11); +loadFactor = (loadFactor || 0.75); +}if (capacity < 0) throw new IllegalArgumentException("Illegal Capacity: " + capacity); +if (loadFactor <= 0 || Float.isNaN(loadFactor)) throw new IllegalArgumentException("Illegal Load: " + loadFactor); +if (capacity == 0) capacity = 1; +this.loadFactor = loadFactor; +this.table = new Array(capacity); +this.threshold = Clazz_floatToInt(Math.min(capacity * loadFactor, 2147483640)); +this.__setJS(); +if (map != null) this.putAll(map); +}); +Clazz_overrideMethod(c$, "size", +function(){ +var c = this.count; +{ +c = this.__m && this.__m.size || c; +}return c; +}); +Clazz_overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz_overrideMethod(c$, "keys", +function(){ +return this.getEnumeration(0); +}); +Clazz_overrideMethod(c$, "elements", +function(){ +return this.getEnumeration(1); +}); +Clazz_defineMethod(c$, "contains", +function(value){ +if (value == null) { +throw new NullPointerException(); +}if (this.size() == 0) return false; +if (java.util.Hashtable.__isSimple(this)) { +var m = this.__m; +{ +var iter = m.values(); +for (var n = iter.next(); !n.done; n = iter.next()) { +if (n.value == value || n.value.equals(value)) { +return true; +} +} +}} else { +var tab = this.table; +for (var i = tab.length; i-- > 0; ) { +for (var e = tab[i]; e != null; e = e.next_) { +if (e.value.equals(value)) { +return true; +}} +} +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "containsValue", +function(value){ +return this.contains(value); +}, "~O"); +Clazz_overrideMethod(c$, "containsKey", +function(key){ +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return false; +case 3: +return true; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +return true; +}} +return false; +}, "~O"); +Clazz_overrideMethod(c$, "get", +function(key){ +if (key == null) return null; +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v = null; +{ +v = this.__m.get(key); +}return v; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +return e.value; +}} +return null; +}, "~O"); +Clazz_defineMethod(c$, "rehash", +function(){ +var oldCapacity = this.table.length; +var oldMap = this.table; +var newCapacity = (oldCapacity << 1) + 1; +if (newCapacity - 2147483639 > 0) { +if (oldCapacity == 2147483639) return; +newCapacity = 2147483639; +}var newMap = new Array(newCapacity); +this.modCount++; +this.threshold = Clazz_floatToInt(Math.min(newCapacity * this.loadFactor, 2147483640)); +this.table = newMap; +for (var i = oldCapacity; i-- > 0; ) { +for (var old = oldMap[i]; old != null; ) { +var e = old; +old = old.next_; +var index = (e.hash & 0x7FFFFFFF) % newCapacity; +e.next_ = newMap[index]; +newMap[index] = e; +} +} +}); +Clazz_defineMethod(c$, "addEntry", +function(hash, key, value, index){ +this.modCount++; +var tab = this.table; +if (this.count >= this.threshold) { +this.rehash(); +tab = this.table; +hash = key.hashCode(); +index = (hash & 0x7FFFFFFF) % tab.length; +}var e = tab[index]; +tab[index] = new java.util.Hashtable.Entry(hash, key, value, e); +this.count++; +}, "~N,~O,~O,~N"); +Clazz_overrideMethod(c$, "put", +function(key, value){ +if (value == null) { +throw new NullPointerException(); +}switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +{ +this.__m.set(key, value); +}++this.modCount; +return null; +case 3: +var v0 = null; +{ +v0 = this.__m.get(key); +this.__m.set(key, value); +}++this.modCount; +return v0; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var entry = tab[index]; +for (; entry != null; entry = entry.next_) { +if ((entry.hash == hash) && entry.key.equals(key)) { +var old = entry.value; +entry.value = value; +return old; +}} +this.addEntry(hash, key, value, index); +return null; +}, "~O,~O"); +Clazz_overrideMethod(c$, "remove", +function(key){ +if (key == null) throw new NullPointerException("Hashtable key may not be null"); +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v0 = null; +{ +v0 = this.__m.get(key); this.__m["delete"](key); +}++this.modCount; +return v0; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +this.modCount++; +if (prev != null) { +prev.next_ = e.next_; +} else { +tab[index] = e.next_; +}this.count--; +var oldValue = e.value; +e.value = null; +return oldValue; +}} +return null; +}, "~O"); +Clazz_overrideMethod(c$, "putAll", +function(t){ +var key = null; +var value = null; +if (java.util.Hashtable.__isSimple(t)) { +var me = this; +{ +t.__m.forEach(function(value, key) { me.put(key, value); }) +}return; +}for (var e, $e = t.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.put(e.getKey(), e.getValue()); + +}, "java.util.Map"); +Clazz_overrideMethod(c$, "clear", +function(){ +var tab = this.table; +this.modCount++; +if (java.util.Hashtable.__isSimple(this)) { +{ +this.__m.clear(); +}}this.__setJS(); +for (var index = tab.length; --index >= 0; ) tab[index] = null; + +this.count = 0; +}); +Clazz_defineMethod(c$, "clone", +function(){ +try { +var t = Clazz_superCall(this, java.util.Hashtable, "clone", []); +t.table = new Array(this.table.length); +for (var i = this.table.length; i-- > 0; ) { +t.table[i] = (this.table[i] != null) ? this.table[i].clone() : null; +} +t.$keySet = null; +t.$entrySet = null; +t.$values = null; +t.modCount = 0; +if (java.util.Hashtable.__isSimple(this)) { +t.__setJS(); +var me = this; +{ +me.__m.forEach(function(value, key) { +t.__m.set(key, value); t.modCount++; +}); +}} else { +t.__m = null; +}return t; +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +throw new InternalError(e); +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "toString", +function(){ +var max = this.size() - 1; +if (max == -1) return "{}"; +var it = this.entrySet().iterator(); +var sb = "{"; +for (var i = 0; ; i++) { +var e = it.next(); +var key = e.getKey(); +var value = e.getValue(); +sb += (key === this ? "(this Map)" : key.toString()); +sb += "="; +sb += (value === this ? "(this Map)" : value.toString()); +if (i == max) return sb + '}'; +sb += ", "; +} +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (o === this) return true; +if (!(Clazz_instanceOf(o,"java.util.Map"))) return false; +var t = o; +if (t.size() != this.size()) return false; +try { +var i = this.entrySet().iterator(); +while (i.hasNext()) { +var e = i.next(); +var key = e.getKey(); +var value = e.getValue(); +if (value == null) { +if (!(t.get(key) == null && t.containsKey(key))) return false; +} else { +if (!value.equals(t.get(key))) return false; +}} +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"ClassCastException")){ +var unused = e$$; +{ +return false; +} +} else if (Clazz_exceptionOf(e$$, NullPointerException)){ +var unused = e$$; +{ +return false; +} +} else { +throw e$$; +} +} +return true; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var h = 0; +if (this.count == 0 || this.loadFactor < 0) return h; +this.loadFactor = -this.loadFactor; +var tab = this.table; +for (var entry, $entry = 0, $$entry = tab; $entry < $$entry.length && ((entry = $$entry[$entry]) || true); $entry++) { +while (entry != null) { +h += entry.hashCode(); +entry = entry.next_; +} +} +this.loadFactor = -this.loadFactor; +return h; +}); +Clazz_defineMethod(c$, "getEnumeration", +function(type){ +if (this.size() == 0) { +return java.util.Collections.emptyEnumeration(); +} else { +return new java.util.Hashtable.Enumerator(this, type, false); +}}, "~N"); +Clazz_defineMethod(c$, "getIterator", +function(type){ +if (this.size() == 0) { +return java.util.Collections.emptyIterator(); +} else { +return new java.util.Hashtable.Enumerator(this, type, true); +}}, "~N"); +Clazz_overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) this.$keySet = new java.util.Hashtable.KeySet(this); +return this.$keySet; +}); +Clazz_overrideMethod(c$, "entrySet", +function(){ +if (this.$entrySet == null) this.$entrySet = new java.util.Hashtable.EntrySet(this); +return this.$entrySet; +}); +Clazz_overrideMethod(c$, "values", +function(){ +if (this.$values == null) this.$values = new java.util.Hashtable.ValueCollection(this); +return this.$values; +}); +Clazz_defineMethod(c$, "__setJS", +function(){ +if (this.__allowJS && java.util.Hashtable.USE_SIMPLE) { +var m = null; +{ +m = new Map(); +}this.__m = m; +} else { +this.__m = null; +}}); +c$.__get = Clazz_defineMethod(c$, "__get", +function(map, key){ +{ +return map.__m.get(key == null ? null : key + "") +}}, "~O,~O"); +c$.__set = Clazz_defineMethod(c$, "__set", +function(map, key, value){ +{ +map.__m.set(key == null ? null : key + "", value) +}}, "java.util.Map,~O,~O"); +c$.__hasKey = Clazz_defineMethod(c$, "__hasKey", +function(map, key){ +{ +return (!map.__m ? 0 : key != null && typeof key != "string" +? 1 : map.__m.has(key) ? 3 : 2); +}}, "java.util.Map,~O"); +c$.__isSimple = Clazz_defineMethod(c$, "__isSimple", +function(map){ +{ +return !!map.__m; +}}, "java.util.Map"); +c$.__ensureJavaMap = Clazz_defineMethod(c$, "__ensureJavaMap", +function(map){ +{ +if (map.__m) { +var m = map.__m; +map.__m = null; +m.forEach(function(value, key){map.put(key, value);}); +m.clear(); +} +}}, "java.util.Map"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.hash = 0; +this.key = null; +this.value = null; +this.next_ = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "Entry", null, java.util.Map.Entry); +Clazz_makeConstructor(c$, +function(hash, key, value, next){ +this.hash = hash; +this.key = key; +this.value = value; +this.next_ = next; +}, "~N,~O,~O,java.util.Hashtable.Entry"); +Clazz_overrideMethod(c$, "clone", +function(){ +return new java.util.Hashtable.Entry(this.hash, this.key, this.value, (this.next_ == null ? null : this.next_.clone())); +}); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.key; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz_overrideMethod(c$, "setValue", +function(value){ +if (value == null) throw new NullPointerException(); +var oldValue = this.value; +this.value = value; +return oldValue; +}, "~O"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var e = o; +return (this.key == null ? e.getKey() == null : this.key.equals(e.getKey())) && (this.value == null ? e.getValue() == null : this.value.equals(e.getValue())); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.hash ^ (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz_defineMethod(c$, "toString", +function(){ +return this.key.toString() + "=" + this.value.toString(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "KeySet", java.util.AbstractSet); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.KeySet, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(0); +}); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.ht.containsKey(o); +}, "~O"); +Clazz_overrideMethod(c$, "remove", +function(o){ +return this.ht.remove(o) != null; +}, "~O"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "EntrySet", java.util.AbstractSet); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.EntrySet, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(2); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var entry = o; +var key = entry.getKey(); +switch (java.util.Hashtable.__hasKey(this.ht, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this.ht); +break; +case 3: +var value = entry.getValue(); +var v = this.ht.get(key); +return (value === v || value != null && value.equals(key)); +case 2: +return false; +} +var tab = this.ht.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) if (e.hash == hash && e.equals(entry)) return true; + +return false; +}, "~O"); +Clazz_overrideMethod(c$, "remove", +function(o){ +if (!(Clazz_instanceOf(o,"java.util.Map.Entry"))) return false; +var entry = o; +var key = entry.getKey(); +switch (java.util.Hashtable.__hasKey(this.ht, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this.ht); +break; +case 3: +var value = entry.getValue(); +if (value == null) return false; +var v = this.ht.get(key); +if (v === value || v.equals(value)) { +this.ht.remove(key); +return true; +}return false; +case 2: +return false; +} +var tab = this.ht.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if (e.hash == hash && e.equals(entry)) { +this.ht.modCount++; +if (prev != null) prev.next_ = e.next_; + else tab[index] = e.next_; +this.ht.count--; +e.value = null; +return true; +}} +return false; +}, "~O"); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ht = null; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "ValueCollection", java.util.AbstractCollection); +Clazz_makeConstructor(c$, +function(ht){ +Clazz_superConstructor (this, java.util.Hashtable.ValueCollection, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz_overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(1); +}); +Clazz_overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz_overrideMethod(c$, "contains", +function(o){ +return this.ht.containsValue(o); +}, "~O"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.table = null; +this.index = 0; +this.next_ = null; +this.current = null; +this.type = 0; +this.jsMapIterator = null; +this.ht = null; +this.isIterator = false; +this.expectedModCount = 0; +Clazz_instantialize(this, arguments);}, java.util.Hashtable, "Enumerator", null, [java.util.Enumeration, java.util.Iterator]); +Clazz_makeConstructor(c$, +function(ht, type, iterator){ +this.ht = ht; +this.table = ht.table; +this.index = ht.table.length; +this.type = type; +this.isIterator = iterator; +this.expectedModCount = ht.modCount; +if (java.util.Hashtable.__isSimple(ht)) { +var m = ht.__m; +{ +this.jsMapIterator = m.entries(); +this.next_ = this.jsMapIterator.next(); +}}}, "java.util.Hashtable,~N,~B"); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +if (java.util.Hashtable.__isSimple(this.ht)) { +var b = false; +{ +b = this.next_ && !this.next_.done +}return b; +} else { +var e = this.next_; +var i = this.index; +var t = this.table; +while (e == null && i > 0) { +e = t[--i]; +} +this.next_ = e; +this.index = i; +return e != null; +}}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +var node = this.next_; +if (java.util.Hashtable.__isSimple(this.ht)) { +var t = this.type; +this.current = node; +var n = null; +{ +n = this.jsMapIterator.next() || null; +}this.next_ = n; +if (node != null) { +var k = null; +var v = null; +var done = false; +{ +done = node.done; +if (!done) { +if (t < 2) return node.value[t]; +k = node.value[0]; +v = node.value[1]; +} +}if (!done) { +return ((Clazz_isClassDefined("java.util.Hashtable$Enumerator$1") ? 0 : java.util.Hashtable.Enumerator.$Hashtable$Enumerator$1$ ()), Clazz_innerTypeInstance(java.util.Hashtable$Enumerator$1, this, null, 0, k, v, null)); +}}} else { +var i = this.index; +var t = this.table; +while (node == null && i > 0) { +node = t[--i]; +} +this.next_ = node; +this.index = i; +if (node != null) { +var e = this.current = this.next_; +this.next_ = e.next_; +return this.type == 0 ? e.key : (this.type == 1 ? e.value : e); +}}throw new java.util.NoSuchElementException("Hashtable Enumerator"); +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return this.hasMoreElements(); +}); +Clazz_overrideMethod(c$, "next", +function(){ +if (this.ht.modCount != this.expectedModCount) throw new java.util.ConcurrentModificationException(); +return this.nextElement(); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +if (!this.isIterator) throw new UnsupportedOperationException(); +var p = this.current; +if (p == null) throw new IllegalStateException("Hashtable Enumerator"); +if (this.ht.modCount != this.expectedModCount) throw new java.util.ConcurrentModificationException(); +if (java.util.Hashtable.__isSimple(this.ht)) { +var key = null; +{ +key = p.value[0]; +}this.ht.remove(key); +this.expectedModCount++; +} else { +{ +var tab = this.ht.table; +var index = (this.current.hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if (e === this.current) { +this.ht.modCount++; +this.expectedModCount++; +if (prev == null) tab[index] = e.next_; + else prev.next_ = e.next_; +this.ht.count--; +this.current = null; +return; +}} +throw new java.util.ConcurrentModificationException(); +}}}); +c$.$Hashtable$Enumerator$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz_declareAnonymous(java.util, "Hashtable$Enumerator$1", java.util.Hashtable.Entry); +Clazz_overrideMethod(c$, "setValue", +function(value){ +var m = this.b$["java.util.Hashtable.Enumerator"].ht.modCount; +var v = this.b$["java.util.Hashtable.Enumerator"].ht.put(this.getKey(), value); +this.b$["java.util.Hashtable.Enumerator"].ht.modCount = m; +return v; +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +c$.USE_SIMPLE = true; +}); +;//5.0.1-v2 Sat Apr 06 02:47:40 CDT 2024 +Clazz_load(["java.util.Map"], "java.util.MapEntry", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.key = null; +this.value = null; +Clazz_instantialize(this, arguments);}, java.util, "MapEntry", null, [java.util.Map.Entry, Cloneable]); +Clazz_makeConstructor(c$, +function(theKey){ +this.key = theKey; +}, "~O"); +Clazz_makeConstructor(c$, +function(theKey, theValue){ +this.key = theKey; +this.value = theValue; +}, "~O,~O"); +Clazz_defineMethod(c$, "clone", +function(){ +try { +return Clazz_superCall(this, java.util.MapEntry, "clone", []); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz_instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return (this.key == null ? entry.getKey() == null : this.key.equals(entry.getKey())) && (this.value == null ? entry.getValue() == null : this.value.equals(entry.getValue())); +}return false; +}, "~O"); +Clazz_overrideMethod(c$, "getKey", +function(){ +return this.key; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return (this.key == null ? 0 : this.key.hashCode()) ^ (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz_overrideMethod(c$, "setValue", +function(object){ +var result = this.value; +this.value = object; +return result; +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.key + "=" + this.value; +}); +Clazz_declareInterface(java.util.MapEntry, "Type"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Hashtable"], "java.util.Properties", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.builder = null; +this.defaults = null; +Clazz_instantialize(this, arguments);}, java.util, "Properties", java.util.Hashtable); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.util.Properties, []); +}); +Clazz_makeConstructor(c$, +function(properties){ +this.initHT(); +this.defaults = (properties == null ? null : properties); +}, "java.util.Properties"); +Clazz_defineMethod(c$, "dumpString", +function(buffer, string, key){ +var i = 0; +if (!key && i < string.length && string.charAt(i) == ' ') { +buffer += ("\\ "); +i++; +}for (; i < string.length; i++) { +var ch = string.charAt(i); +switch ((ch).charCodeAt(0)) { +case 9: +buffer += ("\\t"); +break; +case 10: +buffer += ("\\n"); +break; +case 12: +buffer += ("\\f"); +break; +case 13: +buffer += ("\\r"); +break; +default: +if ("\\#!=:".indexOf(ch) >= 0 || (key && ch == ' ')) { +buffer += ('\\'); +}if (ch >= ' ' && ch <= '~') { +buffer += (ch); +} else { +var hex = Integer.toHexString(ch.charCodeAt(0)); +buffer += ("\\u"); +for (var j = 0; j < 4 - hex.length; j++) { +buffer += ("0"); +} +buffer += (hex); +}} +} +return buffer; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "getProperty", +function(name){ +var result = this.get(name); +var property = (typeof(result)=='string') ? result : null; +if (property == null && this.defaults != null) { +property = this.defaults.getProperty(name); +}return property; +}, "~S"); +Clazz_defineMethod(c$, "getProperty", +function(name, defaultValue){ +var result = this.get(name); +var property = (typeof(result)=='string') ? result : null; +if (property == null && this.defaults != null) { +property = this.defaults.getProperty(name); +}if (property == null) { +return defaultValue; +}return property; +}, "~S,~S"); +Clazz_defineMethod(c$, "list", +function(out){ +if (out == null) { +throw new NullPointerException(); +}var buffer = ""; +var keys = this.propertyNames(); +while (keys.hasMoreElements()) { +var key = keys.nextElement(); +buffer += (key); +buffer += ('='); +var property = this.get(key); +var def = this.defaults; +while (property == null) { +property = def.get(key); +def = def.defaults; +} +if (property.length > 40) { +buffer += (property.substring(0, 37)); +buffer += ("..."); +} else { +buffer += (property); +}out.println(buffer.toString()); +buffer = ""; +} +}, "java.io.PrintStream"); +Clazz_defineMethod(c$, "list", +function(writer){ +if (writer == null) { +throw new NullPointerException(); +}var buffer = ""; +var keys = this.propertyNames(); +while (keys.hasMoreElements()) { +var key = keys.nextElement(); +buffer += (key); +buffer += ('='); +var property = this.get(key); +var def = this.defaults; +while (property == null) { +property = def.get(key); +def = def.defaults; +} +if (property.length > 40) { +buffer += (property.substring(0, 37)); +buffer += ("..."); +} else { +buffer += (property); +}writer.println(buffer.toString()); +buffer = ""; +} +}, "java.io.PrintWriter"); +Clazz_defineMethod(c$, "load", +function($in){ + +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "propertyNames", +function(){ +if (this.defaults == null) { +return this.keys(); +}var set = new java.util.Hashtable(this.defaults.size() + this.size()); +var keys = this.defaults.propertyNames(); +while (keys.hasMoreElements()) { +set.put(keys.nextElement(), set); +} +keys = this.keys(); +while (keys.hasMoreElements()) { +set.put(keys.nextElement(), set); +} +return set.keys(); +}); +Clazz_defineMethod(c$, "save", +function(out, comment){ +try { +this.store(out, comment); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "setProperty", +function(name, value){ +return this.put(name, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "store", +function(out, comment){ + +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "loadFromXML", +function($in){ + +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "storeToXML", +function(os, comment){ + +}, "java.io.OutputStream,~S"); +Clazz_defineMethod(c$, "storeToXML", +function(os, comment, encoding){ + +}, "java.io.OutputStream,~S,~S"); +Clazz_defineMethod(c$, "substitutePredefinedEntries", +function(s){ +return s.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\u0027", "'").replaceAll("\"", """); +}, "~S"); +c$.lineSeparator = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declareInterface(java.util, "SortedMap", java.util.Map); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declareInterface(java.util, "SortedSet", java.util.Set); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_load(["java.util.Enumeration"], "java.util.StringTokenizer", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.string = null; +this.delimiters = null; +this.returnDelimiters = false; +this.position = 0; +Clazz_instantialize(this, arguments);}, java.util, "StringTokenizer", null, java.util.Enumeration); +Clazz_makeConstructor(c$, +function(string, delimiters, returnDelimiters){ +{ +switch (arguments.length) { +case 1: delimiters = " \t\n\r\f"; +case 2: returnDelimiters = false; +} +}if (string == null) throw new NullPointerException(); +this.string = string; +this.delimiters = delimiters; +this.returnDelimiters = returnDelimiters; +this.position = 0; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "countTokens", +function(){ +var count = 0; +var inToken = false; +for (var i = this.position, length = this.string.length; i < length; i++) { +if (this.delimiters.indexOf(this.string.charAt(i), 0) >= 0) { +if (this.returnDelimiters) count++; +if (inToken) { +count++; +inToken = false; +}} else { +inToken = true; +}} +if (inToken) count++; +return count; +}); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +return this.hasMoreTokens(); +}); +Clazz_defineMethod(c$, "hasMoreTokens", +function(){ +var length = this.string.length; +if (this.position < length) { +if (this.returnDelimiters) return true; +for (var i = this.position; i < length; i++) if (this.delimiters.indexOf(this.string.charAt(i), 0) == -1) return true; + +}return false; +}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +return this.nextToken(); +}); +Clazz_defineMethod(c$, "nextToken", +function(){ +{ +(arguments.length == 1) && (this.delimiters = arguments[0]); +}var i = this.position; +var length = this.string.length; +if (i < length) { +if (this.returnDelimiters) { +if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return String.valueOf(this.string.charAt(this.position++)); +for (this.position++; this.position < length; this.position++) if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return this.string.substring(i, this.position); + +return this.string.substring(i); +}while (i < length && this.delimiters.indexOf(this.string.charAt(i), 0) >= 0) i++; + +this.position = i; +if (i < length) { +for (this.position++; this.position < length; this.position++) if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return this.string.substring(i, this.position); + +return this.string.substring(i); +}}throw new java.util.NoSuchElementException(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "BytePoster"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericColor"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericFileInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "GenericOutputChannel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "JSInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "JSONEncodable"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api"); +Clazz_declareInterface(javajs.api, "ZInputStream"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.api.js"); +Clazz_declareInterface(javajs.api.js, "J2SObjectInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericMouseInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_load(["J.api.FontManager"], "J.api.GenericPlatform", null, function(){ +var c$ = Clazz_declareInterface(J.api, "GenericPlatform", J.api.FontManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "PlatformViewer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "EventManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "FontManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Font", ["JU.AU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.fid = 0; +this.fontFace = null; +this.fontStyle = null; +this.fontSizeNominal = 0; +this.idFontFace = 0; +this.idFontStyle = 0; +this.fontSize = 0; +this.font = null; +this.fontMetrics = null; +this.manager = null; +this.ascent = 0; +this.descent = 0; +this.isBold = false; +this.isItalic = false; +Clazz_instantialize(this, arguments);}, JU, "Font", null); +Clazz_makeConstructor(c$, +function(manager, fid, idFontFace, idFontStyle, fontSize, fontSizeNominal, graphics){ +this.manager = manager; +this.fid = fid; +this.fontFace = JU.Font.fontFaces[idFontFace]; +this.fontStyle = JU.Font.fontStyles[idFontStyle]; +this.idFontFace = idFontFace; +this.idFontStyle = idFontStyle; +this.fontSize = fontSize; +this.isBold = (idFontStyle & 1) == 1; +this.isItalic = (idFontStyle & 2) == 2; +this.fontSizeNominal = fontSizeNominal; +this.font = manager.newFont(JU.Font.fontFaces[idFontFace], this.isBold, this.isItalic, fontSize); +this.fontMetrics = manager.getFontMetrics(this, graphics); +this.descent = manager.getFontDescent(this.fontMetrics); +this.ascent = manager.getFontAscent(this.fontMetrics); +}, "J.api.FontManager,~N,~N,~N,~N,~N,~O"); +c$.getFont3D = Clazz_defineMethod(c$, "getFont3D", +function(fontID){ +return JU.Font.font3ds[fontID]; +}, "~N"); +c$.createFont3D = Clazz_defineMethod(c$, "createFont3D", +function(fontface, fontstyle, fontsize, fontsizeNominal, manager, graphicsForMetrics){ +if (fontsize > 0xFF) fontsize = 0xFF; +var fontsizeX16 = (Clazz_floatToInt(fontsize)) << 4; +var fontkey = ((fontface & 3) | ((fontstyle & 3) << 2) | (fontsizeX16 << 4)); +for (var i = JU.Font.fontkeyCount; --i > 0; ) if (fontkey == JU.Font.fontkeys[i] && JU.Font.font3ds[i].fontSizeNominal == fontsizeNominal) return JU.Font.font3ds[i]; + +var fontIndexNext = JU.Font.fontkeyCount++; +if (fontIndexNext == JU.Font.fontkeys.length) { +JU.Font.fontkeys = JU.AU.arrayCopyI(JU.Font.fontkeys, fontIndexNext + 8); +JU.Font.font3ds = JU.AU.arrayCopyObject(JU.Font.font3ds, fontIndexNext + 8); +}var font3d = new JU.Font(manager, fontIndexNext, fontface, fontstyle, fontsize, fontsizeNominal, graphicsForMetrics); +JU.Font.font3ds[fontIndexNext] = font3d; +JU.Font.fontkeys[fontIndexNext] = fontkey; +return font3d; +}, "~N,~N,~N,~N,J.api.FontManager,~O"); +c$.getFontFaceID = Clazz_defineMethod(c$, "getFontFaceID", +function(fontface){ +return ("Monospaced".equalsIgnoreCase(fontface) ? 2 : "Serif".equalsIgnoreCase(fontface) ? 1 : 0); +}, "~S"); +c$.getFontStyleID = Clazz_defineMethod(c$, "getFontStyleID", +function(fontstyle){ +for (var i = 4; --i >= 0; ) if (JU.Font.fontStyles[i].equalsIgnoreCase(fontstyle)) return i; + +return -1; +}, "~S"); +Clazz_defineMethod(c$, "getAscent", +function(){ +return this.ascent; +}); +Clazz_defineMethod(c$, "getDescent", +function(){ +return this.descent; +}); +Clazz_defineMethod(c$, "getHeight", +function(){ +return this.getAscent() + this.getDescent(); +}); +Clazz_defineMethod(c$, "getFontMetrics", +function(){ +return this.fontMetrics; +}); +Clazz_defineMethod(c$, "stringWidth", +function(text){ +return this.manager.fontStringWidth(this, text); +}, "~S"); +Clazz_defineMethod(c$, "getInfo", +function(){ +return this.fontSizeNominal + " " + this.fontFace + " " + this.fontStyle; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getInfo() + "]"; +}); +c$.fontkeyCount = 1; +c$.fontkeys = Clazz_newIntArray (8, 0); +c$.font3ds = new Array(8); +c$.fontFaces = Clazz_newArray(-1, ["SansSerif", "Serif", "Monospaced", ""]); +c$.fontStyles = Clazz_newArray(-1, ["Plain", "Bold", "Italic", "BoldItalic"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["javajs.api.GenericColor"], "JS.Color", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.argb = 0; +Clazz_instantialize(this, arguments);}, JS, "Color", null, javajs.api.GenericColor); +Clazz_overrideMethod(c$, "getRGB", +function(){ +return this.argb & 0x00FFFFFF; +}); +Clazz_overrideMethod(c$, "getOpacity255", +function(){ +return ((this.argb >> 24) & 0xFF); +}); +Clazz_overrideMethod(c$, "setOpacity255", +function(a){ +this.argb = this.argb & 0xFFFFFF | ((a & 0xFF) << 24); +}, "~N"); +c$.get1 = Clazz_defineMethod(c$, "get1", +function(rgb){ +var c = new JS.Color(); +c.argb = rgb | 0xFF000000; +return c; +}, "~N"); +c$.get3 = Clazz_defineMethod(c$, "get3", +function(r, g, b){ +return new JS.Color().set4(r, g, b, 0xFF); +}, "~N,~N,~N"); +c$.get4 = Clazz_defineMethod(c$, "get4", +function(r, g, b, a){ +return new JS.Color().set4(r, g, b, a); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "set4", +function(r, g, b, a){ +this.argb = ((a << 24) | (r << 16) | (g << 8) | b) & 0xFFFFFFFF; +return this; +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +var s = ("00000000" + Integer.toHexString(this.argb)); +return "[0x" + s.substring(s.length - 8, s.length) + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.width = 0; +this.height = 0; +Clazz_instantialize(this, arguments);}, JS, "Dimension", null); +Clazz_makeConstructor(c$, +function(w, h){ +this.set(w, h); +}, "~N,~N"); +Clazz_defineMethod(c$, "set", +function(w, h){ +this.width = w; +this.height = h; +return this; +}, "~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs"); +(function(){ +var c$ = Clazz_declareType(J.awtjs, "Event", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericMenuInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P3"], "JU.A4", ["JU.T3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.angle = 0; +Clazz_instantialize(this, arguments);}, JU, "A4", JU.P3); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JU.A4, []); +this.z = 1.0; +}); +c$.new4 = Clazz_defineMethod(c$, "new4", +function(x, y, z, angle){ +var a = new JU.A4(); +a.set4(x, y, z, angle); +return a; +}, "~N,~N,~N,~N"); +c$.newAA = Clazz_defineMethod(c$, "newAA", +function(a1){ +var a = new JU.A4(); +a.set4(a1.x, a1.y, a1.z, a1.angle); +return a; +}, "JU.A4"); +c$.newVA = Clazz_defineMethod(c$, "newVA", +function(axis, angle){ +var a = new JU.A4(); +a.setVA(axis, angle); +return a; +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "setVA", +function(axis, angle){ +this.x = axis.x; +this.y = axis.y; +this.z = axis.z; +this.angle = angle; +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "set4", +function(x, y, z, angle){ +this.x = x; +this.y = y; +this.z = z; +this.angle = angle; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setAA", +function(a){ +this.x = a.x; +this.y = a.y; +this.z = a.z; +this.angle = a.angle; +}, "JU.A4"); +Clazz_defineMethod(c$, "setM", +function(m1){ +this.setFromMat(m1.m00, m1.m01, m1.m02, m1.m10, m1.m11, m1.m12, m1.m20, m1.m21, m1.m22); +}, "JU.M3"); +Clazz_defineMethod(c$, "setFromMat", +function(m00, m01, m02, m10, m11, m12, m20, m21, m22){ +var cos = (m00 + m11 + m22 - 1.0) * 0.5; +this.x = (m21 - m12); +this.y = (m02 - m20); +this.z = (m10 - m01); +var sin = 0.5 * Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); +if (sin == 0 && cos == 1) { +this.x = this.y = 0; +this.z = 1; +this.angle = 0; +} else { +this.angle = Math.atan2(sin, cos); +}}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.x) ^ JU.T3.floatToIntBits(this.y) ^ JU.T3.floatToIntBits(this.z) ^ JU.T3.floatToIntBits(this.angle); +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.A4"))) return false; +var a1 = o; +return this.x == a1.x && this.y == a1.y && this.z == a1.z && this.angle == a1.angle; +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.angle + ")"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + "," + this.y + "," + this.z + "," + (this.angle * 180.0 / 3.141592653589793) + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLConnection"], "JU.AjaxURLConnection", ["JU.AU", "$.Rdr"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bytesOut = null; +this.postOut = ""; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLConnection", java.net.URLConnection); +Clazz_defineMethod(c$, "doAjax", +function(){ +var jmol = null; +{ +jmol = Jmol; +}return jmol.doAjax(this.url, this.postOut, this.bytesOut, false); +}); +Clazz_overrideMethod(c$, "connect", +function(){ +}); +Clazz_defineMethod(c$, "outputBytes", +function(bytes){ +this.bytesOut = bytes; +}, "~A"); +Clazz_defineMethod(c$, "outputString", +function(post){ +this.postOut = post; +}, "~S"); +Clazz_overrideMethod(c$, "getInputStream", +function(){ +var is = null; +var o = this.doAjax(); +if (JU.AU.isAB(o)) is = JU.Rdr.getBIS(o); + else if (Clazz_instanceOf(o,"JU.SB")) is = JU.Rdr.getBIS(JU.Rdr.getBytesFromSB(o)); + else if ((typeof(o)=='string')) is = JU.Rdr.getBIS((o).getBytes()); +return is; +}); +Clazz_defineMethod(c$, "getContents", +function(){ +return this.doAjax(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLStreamHandler"], "JU.AjaxURLStreamHandler", ["JU.AjaxURLConnection", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.protocol = null; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLStreamHandler", java.net.URLStreamHandler); +Clazz_makeConstructor(c$, +function(protocol){ +Clazz_superConstructor (this, JU.AjaxURLStreamHandler, []); +this.protocol = protocol; +}, "~S"); +Clazz_defineMethod(c$, "openConnection", +function(url){ +return new JU.AjaxURLConnection(url); +}, "java.net.URL"); +Clazz_overrideMethod(c$, "toExternalForm", +function(u){ +var result = new JU.SB(); +result.append(u.getProtocol()); +result.append(":"); +if (u.getAuthority() != null && u.getAuthority().length > 0) { +result.append("//"); +result.append(u.getAuthority()); +}if (u.getPath() != null) { +result.append(u.getPath()); +}if (u.getQuery() != null) { +result.append("?"); +result.append(u.getQuery()); +}if (u.getRef() != null) { +result.append("#"); +result.append(u.getRef()); +}return result.toString(); +}, "java.net.URL"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.net.URLStreamHandlerFactory", "java.util.Hashtable"], "JU.AjaxURLStreamHandlerFactory", ["JU.AjaxURLStreamHandler"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.htFactories = null; +Clazz_instantialize(this, arguments);}, JU, "AjaxURLStreamHandlerFactory", null, java.net.URLStreamHandlerFactory); +Clazz_prepareFields (c$, function(){ +this.htFactories = new java.util.Hashtable(); +}); +Clazz_overrideMethod(c$, "createURLStreamHandler", +function(protocol){ +var fac = this.htFactories.get(protocol); +if (fac == null) this.htFactories.put(protocol, fac = new JU.AjaxURLStreamHandler(protocol)); +return (fac.protocol == null ? null : fac); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.AU", ["java.lang.reflect.Array", "java.util.Arrays", "JU.Lst"], function(){ +var c$ = Clazz_declareType(JU, "AU", null); +c$.ensureLength = Clazz_defineMethod(c$, "ensureLength", +function(array, minimumLength){ +return (array != null && JU.AU.getLength(array) >= minimumLength ? array : JU.AU.arrayCopyObject(array, minimumLength)); +}, "~O,~N"); +c$.ensureLengthS = Clazz_defineMethod(c$, "ensureLengthS", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyS(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthA = Clazz_defineMethod(c$, "ensureLengthA", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyF(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthI = Clazz_defineMethod(c$, "ensureLengthI", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyI(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthShort = Clazz_defineMethod(c$, "ensureLengthShort", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyShort(array, minimumLength)); +}, "~A,~N"); +c$.ensureLengthByte = Clazz_defineMethod(c$, "ensureLengthByte", +function(array, minimumLength){ +return (array != null && array.length >= minimumLength ? array : JU.AU.arrayCopyByte(array, minimumLength)); +}, "~A,~N"); +c$.doubleLength = Clazz_defineMethod(c$, "doubleLength", +function(array){ +return JU.AU.arrayCopyObject(array, (array == null ? 16 : 2 * JU.AU.getLength(array))); +}, "~O"); +c$.doubleLengthS = Clazz_defineMethod(c$, "doubleLengthS", +function(array){ +return JU.AU.arrayCopyS(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthF = Clazz_defineMethod(c$, "doubleLengthF", +function(array){ +return JU.AU.arrayCopyF(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthI = Clazz_defineMethod(c$, "doubleLengthI", +function(array){ +return JU.AU.arrayCopyI(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthShort = Clazz_defineMethod(c$, "doubleLengthShort", +function(array){ +return JU.AU.arrayCopyShort(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthByte = Clazz_defineMethod(c$, "doubleLengthByte", +function(array){ +return JU.AU.arrayCopyByte(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.doubleLengthBool = Clazz_defineMethod(c$, "doubleLengthBool", +function(array){ +return JU.AU.arrayCopyBool(array, (array == null ? 16 : 2 * array.length)); +}, "~A"); +c$.deleteElements = Clazz_defineMethod(c$, "deleteElements", +function(array, firstElement, nElements){ +if (nElements == 0 || array == null) return array; +var oldLength = JU.AU.getLength(array); +if (firstElement >= oldLength) return array; +var n = oldLength - (firstElement + nElements); +if (n < 0) n = 0; +var t = JU.AU.newInstanceO(array, firstElement + n); +if (firstElement > 0) System.arraycopy(array, 0, t, 0, firstElement); +if (n > 0) System.arraycopy(array, firstElement + nElements, t, firstElement, n); +return t; +}, "~O,~N,~N"); +c$.arrayCopyObject = Clazz_defineMethod(c$, "arrayCopyObject", +function(array, newLength){ +var oldLength = (array == null ? -1 : JU.AU.getLength(array)); +if (newLength < 0) newLength = oldLength; +if (newLength == oldLength) return array; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = JU.AU.newInstanceO(array, newLength); +if (oldLength > 0) System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +return t; +}, "~O,~N"); +c$.newInstanceO = Clazz_defineMethod(c$, "newInstanceO", +function(array, n){ +if (JU.AU.isAI(array)) return Clazz_newIntArray (n, 0); +{ +if (!array.getClass || !array.getClass().getComponentType) +return new Array(n); +}return java.lang.reflect.Array.newInstance(array.getClass().getComponentType(), n); +}, "~O,~N"); +c$.getLength = Clazz_defineMethod(c$, "getLength", +function(array){ +{ +return array.length +}}, "~O"); +c$.arrayCopyS = Clazz_defineMethod(c$, "arrayCopyS", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = new Array(newLength); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyII = Clazz_defineMethod(c$, "arrayCopyII", +function(array, newLength){ +var t = JU.AU.newInt2(newLength); +if (array != null) { +var oldLength = array.length; +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyPt = Clazz_defineMethod(c$, "arrayCopyPt", +function(array, newLength){ +if (newLength < 0) newLength = array.length; +var t = new Array(newLength); +if (array != null) { +var oldLength = array.length; +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyF = Clazz_defineMethod(c$, "arrayCopyF", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newFloatArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyI = Clazz_defineMethod(c$, "arrayCopyI", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newIntArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyRangeI = Clazz_defineMethod(c$, "arrayCopyRangeI", +function(array, i0, n){ +if (array == null) return null; +var oldLength = array.length; +if (n == -1) n = oldLength; +if (n == -2) n = Clazz_doubleToInt(oldLength / 2); +{ +return Clazz_newArray(-1, array, i0, n); +}}, "~A,~N,~N"); +c$.arrayCopyRangeRevI = Clazz_defineMethod(c$, "arrayCopyRangeRevI", +function(array, i0, n){ +if (array == null) return null; +{ +return Clazz_newArray(-1, array, i0, n).reverse(); +}}, "~A,~N,~N"); +c$.arrayCopyShort = Clazz_defineMethod(c$, "arrayCopyShort", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newShortArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyByte = Clazz_defineMethod(c$, "arrayCopyByte", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newByteArray (newLength, 0); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.arrayCopyBool = Clazz_defineMethod(c$, "arrayCopyBool", +function(array, newLength){ +var oldLength = (array == null ? -1 : array.length); +if (newLength < 0) newLength = oldLength; +{ +if (newLength < oldLength) return Clazz_newArray(-1, array, 0, newLength); +}var t = Clazz_newBooleanArray(newLength, false); +if (array != null) { +System.arraycopy(array, 0, t, 0, oldLength < newLength ? oldLength : newLength); +}return t; +}, "~A,~N"); +c$.swapInt = Clazz_defineMethod(c$, "swapInt", +function(array, indexA, indexB){ +var t = array[indexA]; +array[indexA] = array[indexB]; +array[indexB] = t; +}, "~A,~N,~N"); +c$.dumpArray = Clazz_defineMethod(c$, "dumpArray", +function(msg, A, x1, x2, y1, y2){ +var s = "dumpArray: " + msg + "\n"; +for (var x = x1; x <= x2; x++) s += "\t*" + x + "*"; + +for (var y = y2; y >= y1; y--) { +s += "\n*" + y + "*"; +for (var x = x1; x <= x2; x++) s += "\t" + (x < A.length && y < A[x].length ? A[x][y] : NaN); + +} +return s; +}, "~S,~A,~N,~N,~N,~N"); +c$.dumpIntArray = Clazz_defineMethod(c$, "dumpIntArray", +function(A, n){ +var str = ""; +for (var i = 0; i < n; i++) str += " " + A[i]; + +return str; +}, "~A,~N"); +c$.sortedItem = Clazz_defineMethod(c$, "sortedItem", +function(v, n){ +if (v.size() == 0) return null; +if (v.size() == 1) return v.get(0); +var keys = v.toArray( new Array(v.size())); +java.util.Arrays.sort(keys); +return keys[n % keys.length]; +}, "JU.Lst,~N"); +c$.createArrayOfArrayList = Clazz_defineMethod(c$, "createArrayOfArrayList", +function(size){ +return new Array(size); +}, "~N"); +c$.createArrayOfHashtable = Clazz_defineMethod(c$, "createArrayOfHashtable", +function(size){ +return new Array(size); +}, "~N"); +c$.swap = Clazz_defineMethod(c$, "swap", +function(o, i, j){ +var oi = o[i]; +o[i] = o[j]; +o[j] = oi; +}, "~A,~N,~N"); +c$.newFloat2 = Clazz_defineMethod(c$, "newFloat2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newInt2 = Clazz_defineMethod(c$, "newInt2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newInt3 = Clazz_defineMethod(c$, "newInt3", +function(nx, ny){ +{ +return Clazz_newArray(nx, null); +}}, "~N,~N"); +c$.newFloat3 = Clazz_defineMethod(c$, "newFloat3", +function(nx, ny){ +{ +return Clazz_newArray(nx, null); +}}, "~N,~N"); +c$.newInt4 = Clazz_defineMethod(c$, "newInt4", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newShort2 = Clazz_defineMethod(c$, "newShort2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newByte2 = Clazz_defineMethod(c$, "newByte2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newDouble2 = Clazz_defineMethod(c$, "newDouble2", +function(n){ +{ +return Clazz_newArray(n, null); +}}, "~N"); +c$.newDouble3n = Clazz_defineMethod(c$, "newDouble3n", +function(n){ +return Clazz_newDoubleArray (n, 0); +}, "~N"); +c$.removeMapKeys = Clazz_defineMethod(c$, "removeMapKeys", +function(map, root){ +var list = new JU.Lst(); +for (var key, $key = map.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (key.startsWith(root)) list.addLast(key); + +for (var i = list.size(); --i >= 0; ) map.remove(list.get(i)); + +return list.size(); +}, "java.util.Map,~S"); +c$.isAS = Clazz_defineMethod(c$, "isAS", +function(x){ +{ +return Clazz_isAS(x); +}}, "~O"); +c$.isASS = Clazz_defineMethod(c$, "isASS", +function(x){ +{ +return Clazz_isASS(x); +}}, "~O"); +c$.isAP = Clazz_defineMethod(c$, "isAP", +function(x){ +{ +return Clazz_isAP(x); +}}, "~O"); +c$.isAF = Clazz_defineMethod(c$, "isAF", +function(x){ +{ +return Clazz_isAF(x); +}}, "~O"); +c$.isAFloat = Clazz_defineMethod(c$, "isAFloat", +function(x){ +{ +return Clazz_isAFloat(x); +}}, "~O"); +c$.isAD = Clazz_defineMethod(c$, "isAD", +function(x){ +{ +return Clazz_isAF(x); +}}, "~O"); +c$.isADD = Clazz_defineMethod(c$, "isADD", +function(x){ +{ +return Clazz_isAFF(x); +}}, "~O"); +c$.isADDD = Clazz_defineMethod(c$, "isADDD", +function(x){ +{ +return Clazz_isAFFF(x); +}}, "~O"); +c$.isAB = Clazz_defineMethod(c$, "isAB", +function(x){ +{ +return Clazz_isAB(x); +}}, "~O"); +c$.isAI = Clazz_defineMethod(c$, "isAI", +function(x){ +{ +return Clazz_isAI(x); +}}, "~O"); +c$.isAII = Clazz_defineMethod(c$, "isAII", +function(x){ +{ +return Clazz_isAII(x); +}}, "~O"); +c$.isAFF = Clazz_defineMethod(c$, "isAFF", +function(x){ +{ +return Clazz_isAFF(x); +}}, "~O"); +c$.isAFFF = Clazz_defineMethod(c$, "isAFFF", +function(x){ +{ +return Clazz_isAFFF(x); +}}, "~O"); +c$.ensureSignedBytes = Clazz_defineMethod(c$, "ensureSignedBytes", +function(b){ +if (b != null) { +{ +for (var i = b.length; --i >= 0;) { var j = b[i] & 0xFF; if +(j >= 0x80) j -= 0x100; b[i] = j; } +}}return b; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.Base64", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JU, "Base64", null); +c$.getBytes64 = Clazz_defineMethod(c$, "getBytes64", +function(bytes){ +return JU.Base64.getBase64(bytes).toBytes(0, -1); +}, "~A"); +c$.getBase64 = Clazz_defineMethod(c$, "getBase64", +function(bytes){ +var nBytes = bytes.length; +var sout = new JU.SB(); +if (nBytes == 0) return sout; +for (var i = 0, nPad = 0; i < nBytes && nPad == 0; ) { +if (i % 75 == 0 && i != 0) sout.append("\r\n"); +nPad = (i + 2 == nBytes ? 1 : i + 1 == nBytes ? 2 : 0); +var outbytes = ((bytes[i++] << 16) & 0xFF0000) | ((nPad == 2 ? 0 : bytes[i++] << 8) & 0x00FF00) | ((nPad >= 1 ? 0 : bytes[i++]) & 0x0000FF); +sout.appendC(JU.Base64.base64.charAt((outbytes >> 18) & 0x3F)); +sout.appendC(JU.Base64.base64.charAt((outbytes >> 12) & 0x3F)); +sout.appendC(nPad == 2 ? '=' : JU.Base64.base64.charAt((outbytes >> 6) & 0x3F)); +sout.appendC(nPad >= 1 ? '=' : JU.Base64.base64.charAt(outbytes & 0x3F)); +} +return sout; +}, "~A"); +c$.decodeBase64 = Clazz_defineMethod(c$, "decodeBase64", +function(strBase64){ +var nBytes = 0; +var ch; +var pt0 = strBase64.indexOf(";base64,") + 1; +if (pt0 > 0) pt0 += 7; +var chars64 = strBase64.toCharArray(); +var len64 = chars64.length; +if (len64 == 0) return Clazz_newByteArray (0, 0); +for (var i = len64; --i >= pt0; ) nBytes += ((ch = (chars64[i]).charCodeAt(0) & 0x7F) == 65 || JU.Base64.decode64[ch] > 0 ? 3 : 0); + +nBytes = nBytes >> 2; +var bytes = Clazz_newByteArray (nBytes, 0); +var offset = 18; +for (var i = pt0, pt = 0, b = 0; i < len64; i++) { +if (JU.Base64.decode64[ch = (chars64[i]).charCodeAt(0) & 0x7F] > 0 || ch == 65 || ch == 61) { +b |= JU.Base64.decode64[ch] << offset; +offset -= 6; +if (offset < 0) { +bytes[pt++] = ((b & 0xFF0000) >> 16); +if (pt < nBytes) bytes[pt++] = ((b & 0xFF00) >> 8); +if (pt < nBytes) bytes[pt++] = (b & 0xFF); +offset = 18; +b = 0; +}}} +return bytes; +}, "~S"); +c$.base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +c$.decode64 = Clazz_newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 62, 0, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 63, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.JSONEncodable"], "JU.BS", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.words = null; +this.wordsInUse = 0; +this.sizeIsSticky = false; +Clazz_instantialize(this, arguments);}, JU, "BS", null, [Cloneable, javajs.api.JSONEncodable]); +Clazz_makeConstructor(c$, +function(){ +this.initWords(32); +this.sizeIsSticky = false; +}); +c$.wordIndex = Clazz_defineMethod(c$, "wordIndex", +function(bitIndex){ +return bitIndex >> 5; +}, "~N"); +Clazz_defineMethod(c$, "recalculateWordsInUse", +function(){ +var i; +for (i = this.wordsInUse - 1; i >= 0; i--) if (this.words[i] != 0) break; + +this.wordsInUse = i + 1; +}); +c$.newN = Clazz_defineMethod(c$, "newN", +function(nbits){ +var bs = new JU.BS(); +bs.init(nbits); +return bs; +}, "~N"); +Clazz_defineMethod(c$, "init", +function(nbits){ +if (nbits < 0) throw new NegativeArraySizeException("nbits < 0: " + nbits); +this.initWords(nbits); +this.sizeIsSticky = true; +}, "~N"); +Clazz_defineMethod(c$, "initWords", +function(nbits){ +this.words = Clazz_newIntArray (JU.BS.wordIndex(nbits - 1) + 1, 0); +}, "~N"); +Clazz_defineMethod(c$, "ensureCapacity", +function(wordsRequired){ +if (this.words.length < wordsRequired) { +var request = Math.max(2 * this.words.length, wordsRequired); +this.setLength(request); +this.sizeIsSticky = false; +}}, "~N"); +Clazz_defineMethod(c$, "expandTo", +function(wordIndex){ +var wordsRequired = wordIndex + 1; +if (this.wordsInUse < wordsRequired) { +this.ensureCapacity(wordsRequired); +this.wordsInUse = wordsRequired; +}}, "~N"); +Clazz_defineMethod(c$, "set", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +this.expandTo(wordIndex); +this.words[wordIndex] |= (1 << bitIndex); +}, "~N"); +Clazz_defineMethod(c$, "setBitTo", +function(bitIndex, value){ +if (value) this.set(bitIndex); + else this.clear(bitIndex); +}, "~N,~B"); +Clazz_defineMethod(c$, "setBits", +function(fromIndex, toIndex){ +if (fromIndex == toIndex) return; +var startWordIndex = JU.BS.wordIndex(fromIndex); +var endWordIndex = JU.BS.wordIndex(toIndex - 1); +this.expandTo(endWordIndex); +var firstWordMask = -1 << fromIndex; +var lastWordMask = -1 >>> -toIndex; +if (startWordIndex == endWordIndex) { +this.words[startWordIndex] |= (firstWordMask & lastWordMask); +} else { +this.words[startWordIndex] |= firstWordMask; +for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = -1; + +this.words[endWordIndex] |= lastWordMask; +}}, "~N,~N"); +Clazz_defineMethod(c$, "clear", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +if (wordIndex >= this.wordsInUse) return; +this.words[wordIndex] &= ~(1 << bitIndex); +this.recalculateWordsInUse(); +}, "~N"); +Clazz_defineMethod(c$, "clearBits", +function(fromIndex, toIndex){ +if (fromIndex == toIndex) return; +var startWordIndex = JU.BS.wordIndex(fromIndex); +if (startWordIndex >= this.wordsInUse) return; +var endWordIndex = JU.BS.wordIndex(toIndex - 1); +if (endWordIndex >= this.wordsInUse) { +toIndex = this.length(); +endWordIndex = this.wordsInUse - 1; +}var firstWordMask = -1 << fromIndex; +var lastWordMask = -1 >>> -toIndex; +if (startWordIndex == endWordIndex) { +this.words[startWordIndex] &= ~(firstWordMask & lastWordMask); +} else { +this.words[startWordIndex] &= ~firstWordMask; +for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = 0; + +this.words[endWordIndex] &= ~lastWordMask; +}this.recalculateWordsInUse(); +}, "~N,~N"); +Clazz_defineMethod(c$, "clearAll", +function(){ +while (this.wordsInUse > 0) this.words[--this.wordsInUse] = 0; + +}); +Clazz_defineMethod(c$, "get", +function(bitIndex){ +if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex); +var wordIndex = JU.BS.wordIndex(bitIndex); +return (wordIndex < this.wordsInUse) && ((this.words[wordIndex] & (1 << bitIndex)) != 0); +}, "~N"); +Clazz_defineMethod(c$, "nextSetBit", +function(fromIndex){ +if (fromIndex < 0) throw new IndexOutOfBoundsException("fromIndex < 0: " + fromIndex); +var u = JU.BS.wordIndex(fromIndex); +if (u >= this.wordsInUse) return -1; +var word = this.words[u] & (-1 << fromIndex); +while (true) { +if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros(word); +if (++u == this.wordsInUse) return -1; +word = this.words[u]; +} +}, "~N"); +Clazz_defineMethod(c$, "nextClearBit", +function(fromIndex){ +if (fromIndex < 0) throw new IndexOutOfBoundsException("fromIndex < 0: " + fromIndex); +var u = JU.BS.wordIndex(fromIndex); +if (u >= this.wordsInUse) return fromIndex; +var word = ~this.words[u] & (-1 << fromIndex); +while (true) { +if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros(word); +if (++u == this.wordsInUse) return this.wordsInUse * 32; +word = ~this.words[u]; +} +}, "~N"); +Clazz_defineMethod(c$, "length", +function(){ +if (this.wordsInUse == 0) return 0; +return 32 * (this.wordsInUse - 1) + (32 - Integer.numberOfLeadingZeros(this.words[this.wordsInUse - 1])); +}); +Clazz_defineMethod(c$, "isEmpty", +function(){ +return this.wordsInUse == 0; +}); +Clazz_defineMethod(c$, "intersects", +function(set){ +for (var i = Math.min(this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) if ((this.words[i] & set.words[i]) != 0) return true; + +return false; +}, "JU.BS"); +Clazz_defineMethod(c$, "cardinality", +function(){ +var sum = 0; +for (var i = 0; i < this.wordsInUse; i++) sum += Integer.bitCount(this.words[i]); + +return sum; +}); +Clazz_defineMethod(c$, "and", +function(set){ +if (this === set) return; +while (this.wordsInUse > set.wordsInUse) this.words[--this.wordsInUse] = 0; + +for (var i = 0; i < this.wordsInUse; i++) this.words[i] &= set.words[i]; + +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_defineMethod(c$, "or", +function(set){ +if (this === set) return; +var wordsInCommon = Math.min(this.wordsInUse, set.wordsInUse); +if (this.wordsInUse < set.wordsInUse) { +this.ensureCapacity(set.wordsInUse); +this.wordsInUse = set.wordsInUse; +}for (var i = 0; i < wordsInCommon; i++) this.words[i] |= set.words[i]; + +if (wordsInCommon < set.wordsInUse) System.arraycopy(set.words, wordsInCommon, this.words, wordsInCommon, this.wordsInUse - wordsInCommon); +}, "JU.BS"); +Clazz_defineMethod(c$, "xor", +function(set){ +var wordsInCommon = Math.min(this.wordsInUse, set.wordsInUse); +if (this.wordsInUse < set.wordsInUse) { +this.ensureCapacity(set.wordsInUse); +this.wordsInUse = set.wordsInUse; +}for (var i = 0; i < wordsInCommon; i++) this.words[i] ^= set.words[i]; + +if (wordsInCommon < set.wordsInUse) System.arraycopy(set.words, wordsInCommon, this.words, wordsInCommon, set.wordsInUse - wordsInCommon); +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_defineMethod(c$, "andNot", +function(set){ +for (var i = Math.min(this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) this.words[i] &= ~set.words[i]; + +this.recalculateWordsInUse(); +}, "JU.BS"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var h = 1234; +for (var i = this.wordsInUse; --i >= 0; ) h ^= this.words[i] * (i + 1); + +return ((h >> 32) ^ h); +}); +Clazz_defineMethod(c$, "size", +function(){ +return this.words.length * 32; +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz_instanceOf(obj,"JU.BS"))) return false; +if (this === obj) return true; +var set = obj; +if (this.wordsInUse != set.wordsInUse) return false; +for (var i = 0; i < this.wordsInUse; i++) if (this.words[i] != set.words[i]) return false; + +return true; +}, "~O"); +Clazz_overrideMethod(c$, "clone", +function(){ +if (!this.sizeIsSticky && this.wordsInUse != this.words.length) this.setLength(this.wordsInUse); +return JU.BS.copy(this); +}); +Clazz_defineMethod(c$, "setLength", +function(n){ +{ +if (n == this.words.length) return; +if (n == this.wordsInUse) { +this.words = Clazz_newArray(-1, this.words, 0, n); +return; +} +}var a = Clazz_newIntArray (n, 0); +System.arraycopy(this.words, 0, a, 0, this.wordsInUse); +this.words = a; +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return JU.BS.escape(this, '(', ')'); +}); +c$.copy = Clazz_defineMethod(c$, "copy", +function(bitsetToCopy){ +var bs; +{ +bs = Clazz_clone(bitsetToCopy); +}var wordCount = bitsetToCopy.wordsInUse; +if (wordCount == 0) { +bs.words = JU.BS.emptyBitmap; +} else { +{ +bs.words = Clazz_newArray(-1, bitsetToCopy.words, 0, bs.wordsInUse = wordCount); +}}return bs; +}, "JU.BS"); +Clazz_defineMethod(c$, "cardinalityN", +function(max){ +var n = this.cardinality(); +for (var i = this.length(); --i >= max; ) if (this.get(i)) n--; + +return n; +}, "~N"); +Clazz_overrideMethod(c$, "toJSON", +function(){ +var numBits = (this.wordsInUse > 128 ? this.cardinality() : this.wordsInUse * 32); +var b = JU.SB.newN(6 * numBits + 2); +b.appendC('['); +var i = this.nextSetBit(0); +if (i != -1) { +b.appendI(i); +for (i = this.nextSetBit(i + 1); i >= 0; i = this.nextSetBit(i + 1)) { +var endOfRun = this.nextClearBit(i); +do { +b.append(", ").appendI(i); +} while (++i < endOfRun); +} +}b.appendC(']'); +return b.toString(); +}); +c$.escape = Clazz_defineMethod(c$, "escape", +function(bs, chOpen, chClose){ +if (bs == null) return chOpen + "{}" + chClose; +var s = new JU.SB(); +s.append(chOpen + "{"); +var imax = bs.length(); +var iLast = -1; +var iFirst = -2; +var i = -1; +while (++i <= imax) { +var isSet = bs.get(i); +if (i == imax || iLast >= 0 && !isSet) { +if (iLast >= 0 && iFirst != iLast) s.append((iFirst == iLast - 1 ? " " : ":") + iLast); +if (i == imax) break; +iLast = -1; +}if (bs.get(i)) { +if (iLast < 0) { +s.append((iFirst == -2 ? "" : " ") + i); +iFirst = i; +}iLast = i; +}} +s.append("}").appendC(chClose); +return s.toString(); +}, "JU.BS,~S,~S"); +c$.unescape = Clazz_defineMethod(c$, "unescape", +function(str){ +var ch; +var len; +if (str == null || (len = (str = str.trim()).length) < 4 || str.equalsIgnoreCase("({null})") || (ch = str.charAt(0)) != '(' && ch != '[' || str.charAt(len - 1) != (ch == '(' ? ')' : ']') || str.charAt(1) != '{' || str.indexOf('}') != len - 2) return null; +len -= 2; +for (var i = len; --i >= 2; ) if (!JU.PT.isDigit(ch = str.charAt(i)) && ch != ' ' && ch != '\t' && ch != ':') return null; + +var lastN = len; +while (JU.PT.isDigit(str.charAt(--lastN))) { +} +if (++lastN == len) lastN = 0; + else try { +lastN = Integer.parseInt(str.substring(lastN, len)); +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +return null; +} else { +throw e; +} +} +var bs = JU.BS.newN(lastN); +lastN = -1; +var iPrev = -1; +var iThis = -2; +for (var i = 2; i <= len; i++) { +switch ((ch = str.charAt(i)).charCodeAt(0)) { +case 9: +case 32: +case 125: +if (iThis < 0) break; +if (iThis < lastN) return null; +lastN = iThis; +if (iPrev < 0) iPrev = iThis; +bs.setBits(iPrev, iThis + 1); +iPrev = -1; +iThis = -2; +break; +case 58: +iPrev = lastN = iThis; +iThis = -2; +break; +default: +if (JU.PT.isDigit(ch)) { +if (iThis < 0) iThis = 0; +iThis = (iThis * 10) + (ch.charCodeAt(0) - 48); +}} +} +return (iPrev >= 0 ? null : bs); +}, "~S"); +c$.emptyBitmap = Clazz_newIntArray (0, 0); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.Hashtable"], "JU.CU", ["JU.P3", "$.PT"], function(){ +var c$ = Clazz_declareType(JU, "CU", null); +c$.toRGBHexString = Clazz_defineMethod(c$, "toRGBHexString", +function(c){ +var rgb = c.getRGB(); +if (rgb == 0) return "000000"; +var r = "00" + Integer.toHexString((rgb >> 16) & 0xFF); +r = r.substring(r.length - 2); +var g = "00" + Integer.toHexString((rgb >> 8) & 0xFF); +g = g.substring(g.length - 2); +var b = "00" + Integer.toHexString(rgb & 0xFF); +b = b.substring(b.length - 2); +return r + g + b; +}, "javajs.api.GenericColor"); +c$.toCSSString = Clazz_defineMethod(c$, "toCSSString", +function(c){ +var opacity = c.getOpacity255(); +if (opacity == 255) return "#" + JU.CU.toRGBHexString(c); +var rgb = c.getRGB(); +return "rgba(" + ((rgb >> 16) & 0xFF) + "," + ((rgb >> 8) & 0xff) + "," + (rgb & 0xff) + "," + opacity / 255 + ")"; +}, "javajs.api.GenericColor"); +c$.getArgbFromString = Clazz_defineMethod(c$, "getArgbFromString", +function(strColor){ +var len = 0; +if (strColor == null || (len = strColor.length) == 0) return 0; +strColor = strColor.toLowerCase(); +if (strColor.charAt(0) == '[' && strColor.charAt(len - 1) == ']') { +var check; +if (strColor.indexOf(",") >= 0) { +var tokens = JU.PT.split(strColor.substring(1, strColor.length - 1), ","); +if (tokens.length != 3) return 0; +var red = JU.PT.parseFloat(tokens[0]); +var grn = JU.PT.parseFloat(tokens[1]); +var blu = JU.PT.parseFloat(tokens[2]); +return JU.CU.colorTriadToFFRGB(red, grn, blu); +}switch (len) { +case 9: +check = "x"; +break; +case 10: +check = "0x"; +break; +default: +return 0; +} +if (strColor.indexOf(check) != 1) return 0; +strColor = "#" + strColor.substring(len - 7, len - 1); +len = 7; +}if (len == 7 && strColor.charAt(0) == '#') { +try { +return JU.PT.parseIntRadix(strColor.substring(1, 7), 16) | 0xFF000000; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return 0; +} else { +throw e; +} +} +}var boxedArgb = JU.CU.mapJavaScriptColors.get(strColor); +return (boxedArgb == null ? 0 : boxedArgb.intValue()); +}, "~S"); +c$.colorTriadToFFRGB = Clazz_defineMethod(c$, "colorTriadToFFRGB", +function(x, y, z){ +if (x <= 1 && y <= 1 && z <= 1) { +if (x > 0) x = x * 256 - 1; +if (y > 0) y = y * 256 - 1; +if (z > 0) z = z * 256 - 1; +}return JU.CU.rgb(Clazz_floatToInt(x), Clazz_floatToInt(y), Clazz_floatToInt(z)); +}, "~N,~N,~N"); +c$.rgb = Clazz_defineMethod(c$, "rgb", +function(red, grn, blu){ +return 0xFF000000 | (red << 16) | (grn << 8) | blu; +}, "~N,~N,~N"); +c$.colorPtFromString = Clazz_defineMethod(c$, "colorPtFromString", +function(colorName){ +return JU.CU.colorPtFromInt(JU.CU.getArgbFromString(colorName), null); +}, "~S"); +c$.colorPtFromInt = Clazz_defineMethod(c$, "colorPtFromInt", +function(color, pt){ +if (pt == null) pt = new JU.P3(); +pt.set((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF); +return pt; +}, "~N,JU.P3"); +c$.colorPtToFFRGB = Clazz_defineMethod(c$, "colorPtToFFRGB", +function(pt){ +return JU.CU.colorTriadToFFRGB(pt.x, pt.y, pt.z); +}, "JU.T3"); +c$.toRGB3f = Clazz_defineMethod(c$, "toRGB3f", +function(c, f){ +f[0] = ((c >> 16) & 0xFF) / 255; +f[1] = ((c >> 8) & 0xFF) / 255; +f[2] = (c & 0xFF) / 255; +}, "~N,~A"); +c$.toFFGGGfromRGB = Clazz_defineMethod(c$, "toFFGGGfromRGB", +function(rgb){ +var grey = (Clazz_doubleToInt(((2989 * ((rgb >> 16) & 0xFF)) + (5870 * ((rgb >> 8) & 0xFF)) + (1140 * (rgb & 0xFF)) + 5000) / 10000)) & 0xFFFFFF; +return JU.CU.rgb(grey, grey, grey); +}, "~N"); +c$.rgbToHSL = Clazz_defineMethod(c$, "rgbToHSL", +function(rgb, doRound){ +var r = rgb.x / 255; +var g = rgb.y / 255; +var b = rgb.z / 255; +var min = Math.min(r, Math.min(g, b)); +var max = Math.max(r, Math.max(g, b)); +var p = (max + min); +var q = (max - min); +var h = (60 * ((q == 0 ? 0 : max == r ? ((g - b) / q + 6) : max == g ? (b - r) / q + 2 : (r - g) / q + 4))) % 360; +var s = q / (q == 0 ? 1 : p <= 1 ? p : 2 - p); +return (doRound ? JU.P3.new3(Math.round(h * 10) / 10, Math.round(s * 1000) / 10, Math.round(p * 500) / 10) : JU.P3.new3(h, s * 100, p * 50)); +}, "JU.P3,~B"); +c$.hslToRGB = Clazz_defineMethod(c$, "hslToRGB", +function(hsl){ +var h = Math.max(0, Math.min(360, hsl.x)) / 60; +var s = Math.max(0, Math.min(100, hsl.y)) / 100; +var l = Math.max(0, Math.min(100, hsl.z)) / 100; +var p = l - (l < 0.5 ? l : 1 - l) * s; +var q = 2 * (l - p); +var r = JU.CU.toRGB(p, q, h + 2); +var g = JU.CU.toRGB(p, q, h); +var b = JU.CU.toRGB(p, q, h - 2); +return JU.P3.new3(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)); +}, "JU.P3"); +c$.toRGB = Clazz_defineMethod(c$, "toRGB", +function(p, q, h){ +return ((h = (h + (h < 0 ? 6 : h > 6 ? -6 : 0))) < 1 ? p + q * h : h < 3 ? p + q : h < 4 ? p + q * (4 - h) : p); +}, "~N,~N,~N"); +c$.colorNames = Clazz_newArray(-1, ["contrast", "black", "pewhite", "pecyan", "pepurple", "pegreen", "peblue", "peviolet", "pebrown", "pepink", "peyellow", "pedarkgreen", "peorange", "pelightblue", "pedarkcyan", "pedarkgray", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgreen", "lightgrey", "lightgray", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "bluetint", "greenblue", "greentint", "grey", "gray", "pinktint", "redorange", "yellowtint"]); +c$.colorArgbs = Clazz_newIntArray(-1, [0xFFfedcba, 0xFF000000, 0xFFffffff, 0xFF00ffff, 0xFFd020ff, 0xFF00ff00, 0xFF6060ff, 0xFFff80c0, 0xFFa42028, 0xFFffd8d8, 0xFFffff00, 0xFF00c000, 0xFFffb000, 0xFFb0b0ff, 0xFF00a0a0, 0xFF606060, 0xFFF0F8FF, 0xFFFAEBD7, 0xFF00FFFF, 0xFF7FFFD4, 0xFFF0FFFF, 0xFFF5F5DC, 0xFFFFE4C4, 0xFFFFEBCD, 0xFF0000FF, 0xFF8A2BE2, 0xFFA52A2A, 0xFFDEB887, 0xFF5F9EA0, 0xFF7FFF00, 0xFFD2691E, 0xFFFF7F50, 0xFF6495ED, 0xFFFFF8DC, 0xFFDC143C, 0xFF00FFFF, 0xFF00008B, 0xFF008B8B, 0xFFB8860B, 0xFFA9A9A9, 0xFF006400, 0xFFBDB76B, 0xFF8B008B, 0xFF556B2F, 0xFFFF8C00, 0xFF9932CC, 0xFF8B0000, 0xFFE9967A, 0xFF8FBC8F, 0xFF483D8B, 0xFF2F4F4F, 0xFF00CED1, 0xFF9400D3, 0xFFFF1493, 0xFF00BFFF, 0xFF696969, 0xFF1E90FF, 0xFFB22222, 0xFFFFFAF0, 0xFF228B22, 0xFFFF00FF, 0xFFDCDCDC, 0xFFF8F8FF, 0xFFFFD700, 0xFFDAA520, 0xFF808080, 0xFF008000, 0xFFADFF2F, 0xFFF0FFF0, 0xFFFF69B4, 0xFFCD5C5C, 0xFF4B0082, 0xFFFFFFF0, 0xFFF0E68C, 0xFFE6E6FA, 0xFFFFF0F5, 0xFF7CFC00, 0xFFFFFACD, 0xFFADD8E6, 0xFFF08080, 0xFFE0FFFF, 0xFFFAFAD2, 0xFF90EE90, 0xFFD3D3D3, 0xFFD3D3D3, 0xFFFFB6C1, 0xFFFFA07A, 0xFF20B2AA, 0xFF87CEFA, 0xFF778899, 0xFFB0C4DE, 0xFFFFFFE0, 0xFF00FF00, 0xFF32CD32, 0xFFFAF0E6, 0xFFFF00FF, 0xFF800000, 0xFF66CDAA, 0xFF0000CD, 0xFFBA55D3, 0xFF9370DB, 0xFF3CB371, 0xFF7B68EE, 0xFF00FA9A, 0xFF48D1CC, 0xFFC71585, 0xFF191970, 0xFFF5FFFA, 0xFFFFE4E1, 0xFFFFE4B5, 0xFFFFDEAD, 0xFF000080, 0xFFFDF5E6, 0xFF808000, 0xFF6B8E23, 0xFFFFA500, 0xFFFF4500, 0xFFDA70D6, 0xFFEEE8AA, 0xFF98FB98, 0xFFAFEEEE, 0xFFDB7093, 0xFFFFEFD5, 0xFFFFDAB9, 0xFFCD853F, 0xFFFFC0CB, 0xFFDDA0DD, 0xFFB0E0E6, 0xFF800080, 0xFFFF0000, 0xFFBC8F8F, 0xFF4169E1, 0xFF8B4513, 0xFFFA8072, 0xFFF4A460, 0xFF2E8B57, 0xFFFFF5EE, 0xFFA0522D, 0xFFC0C0C0, 0xFF87CEEB, 0xFF6A5ACD, 0xFF708090, 0xFFFFFAFA, 0xFF00FF7F, 0xFF4682B4, 0xFFD2B48C, 0xFF008080, 0xFFD8BFD8, 0xFFFF6347, 0xFF40E0D0, 0xFFEE82EE, 0xFFF5DEB3, 0xFFFFFFFF, 0xFFF5F5F5, 0xFFFFFF00, 0xFF9ACD32, 0xFFAFD7FF, 0xFF2E8B57, 0xFF98FFB3, 0xFF808080, 0xFF808080, 0xFFFFABBB, 0xFFFF4500, 0xFFF6F675]); +c$.mapJavaScriptColors = new java.util.Hashtable(); +{ +for (var i = JU.CU.colorNames.length; --i >= 0; ) JU.CU.mapJavaScriptColors.put(JU.CU.colorNames[i], Integer.$valueOf(JU.CU.colorArgbs[i])); + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.DF", ["JU.PT", "$.SB"], function(){ +var c$ = Clazz_declareType(JU, "DF", null); +c$.setUseNumberLocalization = Clazz_defineMethod(c$, "setUseNumberLocalization", +function(TF){ +JU.DF.useNumberLocalization[0] = (TF ? Boolean.TRUE : Boolean.FALSE); +}, "~B"); +c$.formatDecimalDbl = Clazz_defineMethod(c$, "formatDecimalDbl", +function(value, decimalDigits){ +if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Double.isNaN(value)) return "" + value; +return JU.DF.formatDecimal(value, decimalDigits); +}, "~N,~N"); +c$.formatDecimal = Clazz_defineMethod(c$, "formatDecimal", +function(value, decimalDigits){ +if (value == -Infinity || value == Infinity || Double.isNaN(value)) return "" + value; +if (decimalDigits == 2147483647) return "" + value; +var isNeg = (value < 0); +if (isNeg) value = -value; +var n; +if (decimalDigits < 0) { +decimalDigits = -decimalDigits; +if (decimalDigits > JU.DF.formattingStrings.length) decimalDigits = JU.DF.formattingStrings.length; +if (value == 0) return JU.DF.formattingStrings[decimalDigits - 1] + "E+0"; +n = 0; +var d; +if (Math.abs(value) < 1) { +n = 100; +d = value * 1e-100; +} else { +n = -100; +d = value * 1e100; +}var s = ("" + d).toUpperCase(); +var i1 = s.indexOf("E"); +var sf; +if (i1 < 0) { +sf = "" + value; +} else { +n = JU.PT.parseInt(s.substring(i1 + (s.indexOf("E+") == i1 ? 2 : 1))) + n; +var f = JU.PT.parseFloat(s.substring(0, i1)); +sf = JU.DF.formatDecimal(f, decimalDigits - 1); +if (sf.startsWith("10.")) { +sf = JU.DF.formatDecimal(1, decimalDigits - 1); +n++; +}}return (isNeg ? "-" : "") + sf + "E" + (n >= 0 ? "+" : "") + n; +}if (decimalDigits >= JU.DF.formattingStrings.length) decimalDigits = JU.DF.formattingStrings.length - 1; +var s1 = ("" + value).toUpperCase(); +var pt = s1.indexOf("."); +if (pt < 0) return (isNeg ? "-" : "") + s1 + JU.DF.formattingStrings[decimalDigits].substring(1); +var pt1 = s1.indexOf("E-"); +if (pt1 > 0) { +n = JU.PT.parseInt(s1.substring(pt1 + 1)); +s1 = "0." + "0000000000000000000000000000000000000000".substring(0, -n - 1) + s1.substring(0, 1) + s1.substring(2, pt1); +pt = 1; +}pt1 = s1.indexOf("E"); +if (pt1 > 0) { +n = JU.PT.parseInt(s1.substring(pt1 + 1)); +s1 = s1.substring(0, 1) + s1.substring(2, pt1) + "0000000000000000000000000000000000000000"; +s1 = s1.substring(0, n + 1) + "." + s1.substring(n + 1); +pt = s1.indexOf("."); +}var len = s1.length; +var pt2 = decimalDigits + pt + 1; +if (pt2 < len && s1.charAt(pt2) >= '5') { +return JU.DF.formatDecimal((isNeg ? -1 : 1) * (value + JU.DF.formatAdds[decimalDigits]), decimalDigits); +}var s0 = s1.substring(0, (decimalDigits == 0 ? pt : ++pt)); +var sb = JU.SB.newS(s0); +if (isNeg && s0.equals("0.") && decimalDigits + 2 <= len && s1.substring(2, 2 + decimalDigits).equals("0000000000000000000000000000000000000000".substring(0, decimalDigits))) isNeg = false; +for (var i = 0; i < decimalDigits; i++, pt++) { +if (pt < len) sb.appendC(s1.charAt(pt)); + else sb.appendC('0'); +} +s1 = (isNeg ? "-" : "") + sb; +return (Boolean.TRUE.equals(JU.DF.useNumberLocalization[0]) ? s1 : s1.$replace(',', '.')); +}, "~N,~N"); +c$.formatDecimalTrimmed = Clazz_defineMethod(c$, "formatDecimalTrimmed", +function(x, precision){ +var str = JU.DF.formatDecimalDbl(x, precision); +var m = str.length - 1; +var zero = '0'; +while (m >= 0 && str.charAt(m) == zero) m--; + +return str.substring(0, m + 1); +}, "~N,~N"); +c$.formatDecimalTrimmed0 = Clazz_defineMethod(c$, "formatDecimalTrimmed0", +function(x, precision){ +var str = JU.DF.formatDecimalDbl(x, precision); +var m = str.length - 1; +var pt = str.indexOf(".") + 1; +while (m > pt && str.charAt(m) == '0') m--; + +return str.substring(0, m + 1); +}, "~N,~N"); +c$.formattingStrings = Clazz_newArray(-1, ["0", "0.0", "0.00", "0.000", "0.0000", "0.00000", "0.000000", "0.0000000", "0.00000000", "0.000000000", "0.0000000000", "0.00000000000", "0.000000000000"]); +c$.formatAdds = Clazz_newDoubleArray(-1, [0.5, 0.05, 0.005, 0.0005, 0.00005, 0.000005, 0.0000005, 0.00000005, 0.000000005, 0.0000000005, 0.00000000005, 0.000000000005, 0.0000000000005]); +c$.useNumberLocalization = Clazz_newArray(-1, [Boolean.TRUE]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.lang.Enum"], "JU.Encoding", null, function(){ +var c$ = Clazz_declareType(JU, "Encoding", Enum); +Clazz_defineEnumConstant(c$, "NONE", 0, []); +Clazz_defineEnumConstant(c$, "UTF8", 1, []); +Clazz_defineEnumConstant(c$, "UTF_16BE", 2, []); +Clazz_defineEnumConstant(c$, "UTF_16LE", 3, []); +Clazz_defineEnumConstant(c$, "UTF_32BE", 4, []); +Clazz_defineEnumConstant(c$, "UTF_32LE", 5, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.ArrayList"], "JU.Lst", null, function(){ +var c$ = Clazz_declareType(JU, "Lst", java.util.ArrayList); +Clazz_defineMethod(c$, "addLast", +function(v){ +{ +return this.add1(v); +}}, "~O"); +Clazz_overrideMethod(c$, "add", +function(pos, v){ +{ +return this.add2(pos, v); +}}, "~N,~O"); +Clazz_defineMethod(c$, "removeItemAt", +function(location){ +{ +return this._removeItemAt(location); +}}, "~N"); +Clazz_defineMethod(c$, "removeObj", +function(v){ +{ +return this._removeObject(v); +}}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m00 = 0; +this.m01 = 0; +this.m02 = 0; +this.m10 = 0; +this.m11 = 0; +this.m12 = 0; +this.m20 = 0; +this.m21 = 0; +this.m22 = 0; +Clazz_instantialize(this, arguments);}, JU, "M34", null); +Clazz_defineMethod(c$, "setAA33", +function(a){ +var x = a.x; +var y = a.y; +var z = a.z; +var angle = a.angle; +var n = Math.sqrt(x * x + y * y + z * z); +n = 1 / n; +x *= n; +y *= n; +z *= n; +var c = Math.cos(angle); +var s = Math.sin(angle); +var omc = 1.0 - c; +this.m00 = (c + x * x * omc); +this.m11 = (c + y * y * omc); +this.m22 = (c + z * z * omc); +var tmp1 = x * y * omc; +var tmp2 = z * s; +this.m01 = (tmp1 - tmp2); +this.m10 = (tmp1 + tmp2); +tmp1 = x * z * omc; +tmp2 = y * s; +this.m02 = (tmp1 + tmp2); +this.m20 = (tmp1 - tmp2); +tmp1 = y * z * omc; +tmp2 = x * s; +this.m12 = (tmp1 - tmp2); +this.m21 = (tmp1 + tmp2); +}, "JU.A4"); +Clazz_defineMethod(c$, "rotate", +function(t){ +this.rotate2(t, t); +}, "JU.T3"); +Clazz_defineMethod(c$, "rotate2", +function(t, result){ +result.set(this.m00 * t.x + this.m01 * t.y + this.m02 * t.z, this.m10 * t.x + this.m11 * t.y + this.m12 * t.z, this.m20 * t.x + this.m21 * t.y + this.m22 * t.z); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "setM33", +function(m1){ +this.m00 = m1.m00; +this.m01 = m1.m01; +this.m02 = m1.m02; +this.m10 = m1.m10; +this.m11 = m1.m11; +this.m12 = m1.m12; +this.m20 = m1.m20; +this.m21 = m1.m21; +this.m22 = m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "clear33", +function(){ +this.m00 = this.m01 = this.m02 = this.m10 = this.m11 = this.m12 = this.m20 = this.m21 = this.m22 = 0.0; +}); +Clazz_defineMethod(c$, "set33", +function(row, col, v){ +switch (row) { +case 0: +switch (col) { +case 0: +this.m00 = v; +return; +case 1: +this.m01 = v; +return; +case 2: +this.m02 = v; +return; +} +break; +case 1: +switch (col) { +case 0: +this.m10 = v; +return; +case 1: +this.m11 = v; +return; +case 2: +this.m12 = v; +return; +} +break; +case 2: +switch (col) { +case 0: +this.m20 = v; +return; +case 1: +this.m21 = v; +return; +case 2: +this.m22 = v; +return; +} +break; +} +this.err(); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "get33", +function(row, col){ +switch (row) { +case 0: +switch (col) { +case 0: +return this.m00; +case 1: +return this.m01; +case 2: +return this.m02; +} +break; +case 1: +switch (col) { +case 0: +return this.m10; +case 1: +return this.m11; +case 2: +return this.m12; +} +break; +case 2: +switch (col) { +case 0: +return this.m20; +case 1: +return this.m21; +case 2: +return this.m22; +} +break; +} +this.err(); +return 0; +}, "~N,~N"); +Clazz_defineMethod(c$, "setRow33", +function(row, v){ +switch (row) { +case 0: +this.m00 = v[0]; +this.m01 = v[1]; +this.m02 = v[2]; +return; +case 1: +this.m10 = v[0]; +this.m11 = v[1]; +this.m12 = v[2]; +return; +case 2: +this.m20 = v[0]; +this.m21 = v[1]; +this.m22 = v[2]; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getRow33", +function(row, v){ +switch (row) { +case 0: +v[0] = this.m00; +v[1] = this.m01; +v[2] = this.m02; +return; +case 1: +v[0] = this.m10; +v[1] = this.m11; +v[2] = this.m12; +return; +case 2: +v[0] = this.m20; +v[1] = this.m21; +v[2] = this.m22; +return; +} +this.err(); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn33", +function(column, v){ +switch (column) { +case 0: +this.m00 = v[0]; +this.m10 = v[1]; +this.m20 = v[2]; +break; +case 1: +this.m01 = v[0]; +this.m11 = v[1]; +this.m21 = v[2]; +break; +case 2: +this.m02 = v[0]; +this.m12 = v[1]; +this.m22 = v[2]; +break; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn33", +function(column, v){ +switch (column) { +case 0: +v[0] = this.m00; +v[1] = this.m10; +v[2] = this.m20; +break; +case 1: +v[0] = this.m01; +v[1] = this.m11; +v[2] = this.m21; +break; +case 2: +v[0] = this.m02; +v[1] = this.m12; +v[2] = this.m22; +break; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "add33", +function(m1){ +this.m00 += m1.m00; +this.m01 += m1.m01; +this.m02 += m1.m02; +this.m10 += m1.m10; +this.m11 += m1.m11; +this.m12 += m1.m12; +this.m20 += m1.m20; +this.m21 += m1.m21; +this.m22 += m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "sub33", +function(m1){ +this.m00 -= m1.m00; +this.m01 -= m1.m01; +this.m02 -= m1.m02; +this.m10 -= m1.m10; +this.m11 -= m1.m11; +this.m12 -= m1.m12; +this.m20 -= m1.m20; +this.m21 -= m1.m21; +this.m22 -= m1.m22; +}, "JU.M34"); +Clazz_defineMethod(c$, "mul33", +function(x){ +this.m00 *= x; +this.m01 *= x; +this.m02 *= x; +this.m10 *= x; +this.m11 *= x; +this.m12 *= x; +this.m20 *= x; +this.m21 *= x; +this.m22 *= x; +}, "~N"); +Clazz_defineMethod(c$, "transpose33", +function(){ +var tmp = this.m01; +this.m01 = this.m10; +this.m10 = tmp; +tmp = this.m02; +this.m02 = this.m20; +this.m20 = tmp; +tmp = this.m12; +this.m12 = this.m21; +this.m21 = tmp; +}); +Clazz_defineMethod(c$, "setXRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = 1.0; +this.m01 = 0.0; +this.m02 = 0.0; +this.m10 = 0.0; +this.m11 = c; +this.m12 = -s; +this.m20 = 0.0; +this.m21 = s; +this.m22 = c; +}, "~N"); +Clazz_defineMethod(c$, "setYRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m01 = 0.0; +this.m02 = s; +this.m10 = 0.0; +this.m11 = 1.0; +this.m12 = 0.0; +this.m20 = -s; +this.m21 = 0.0; +this.m22 = c; +}, "~N"); +Clazz_defineMethod(c$, "setZRot", +function(angle){ +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m01 = -s; +this.m02 = 0.0; +this.m10 = s; +this.m11 = c; +this.m12 = 0.0; +this.m20 = 0.0; +this.m21 = 0.0; +this.m22 = 1.0; +}, "~N"); +Clazz_defineMethod(c$, "determinant3", +function(){ +return this.m00 * (this.m11 * this.m22 - this.m21 * this.m12) - this.m01 * (this.m10 * this.m22 - this.m20 * this.m12) + this.m02 * (this.m10 * this.m21 - this.m20 * this.m11); +}); +Clazz_defineMethod(c$, "err", +function(){ +throw new ArrayIndexOutOfBoundsException("matrix column/row out of bounds"); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.M34"], "JU.M3", ["JU.T3"], function(){ +var c$ = Clazz_declareType(JU, "M3", JU.M34, java.io.Serializable); +c$.newA9 = Clazz_defineMethod(c$, "newA9", +function(v){ +var m = new JU.M3(); +m.setA(v); +return m; +}, "~A"); +c$.newM3 = Clazz_defineMethod(c$, "newM3", +function(m1){ +var m = new JU.M3(); +if (m1 == null) { +m.setScale(1); +return m; +}m.m00 = m1.m00; +m.m01 = m1.m01; +m.m02 = m1.m02; +m.m10 = m1.m10; +m.m11 = m1.m11; +m.m12 = m1.m12; +m.m20 = m1.m20; +m.m21 = m1.m21; +m.m22 = m1.m22; +return m; +}, "JU.M3"); +Clazz_defineMethod(c$, "setScale", +function(scale){ +this.clear33(); +this.m00 = this.m11 = this.m22 = scale; +}, "~N"); +Clazz_defineMethod(c$, "setM3", +function(m1){ +this.setM33(m1); +}, "JU.M34"); +Clazz_defineMethod(c$, "setA", +function(m){ +this.m00 = m[0]; +this.m01 = m[1]; +this.m02 = m[2]; +this.m10 = m[3]; +this.m11 = m[4]; +this.m12 = m[5]; +this.m20 = m[6]; +this.m21 = m[7]; +this.m22 = m[8]; +}, "~A"); +Clazz_defineMethod(c$, "setElement", +function(row, col, v){ +this.set33(row, col, v); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getElement", +function(row, col){ +return this.get33(row, col); +}, "~N,~N"); +Clazz_defineMethod(c$, "setRow", +function(row, x, y, z){ +switch (row) { +case 0: +this.m00 = x; +this.m01 = y; +this.m02 = z; +return; +case 1: +this.m10 = x; +this.m11 = y; +this.m12 = z; +return; +case 2: +this.m20 = x; +this.m21 = y; +this.m22 = z; +return; +default: +this.err(); +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setRowV", +function(row, v){ +switch (row) { +case 0: +this.m00 = v.x; +this.m01 = v.y; +this.m02 = v.z; +return; +case 1: +this.m10 = v.x; +this.m11 = v.y; +this.m12 = v.z; +return; +case 2: +this.m20 = v.x; +this.m21 = v.y; +this.m22 = v.z; +return; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setRowA", +function(row, v){ +this.setRow33(row, v); +}, "~N,~A"); +Clazz_overrideMethod(c$, "getRow", +function(row, v){ +this.getRow33(row, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn3", +function(column, x, y, z){ +switch (column) { +case 0: +this.m00 = x; +this.m10 = y; +this.m20 = z; +break; +case 1: +this.m01 = x; +this.m11 = y; +this.m21 = z; +break; +case 2: +this.m02 = x; +this.m12 = y; +this.m22 = z; +break; +default: +this.err(); +} +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setColumnV", +function(column, v){ +switch (column) { +case 0: +this.m00 = v.x; +this.m10 = v.y; +this.m20 = v.z; +break; +case 1: +this.m01 = v.x; +this.m11 = v.y; +this.m21 = v.z; +break; +case 2: +this.m02 = v.x; +this.m12 = v.y; +this.m22 = v.z; +break; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "getColumnV", +function(column, v){ +switch (column) { +case 0: +v.x = this.m00; +v.y = this.m10; +v.z = this.m20; +break; +case 1: +v.x = this.m01; +v.y = this.m11; +v.z = this.m21; +break; +case 2: +v.x = this.m02; +v.y = this.m12; +v.z = this.m22; +break; +default: +this.err(); +} +}, "~N,JU.T3"); +Clazz_defineMethod(c$, "setColumnA", +function(column, v){ +this.setColumn33(column, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn", +function(column, v){ +this.getColumn33(column, v); +}, "~N,~A"); +Clazz_defineMethod(c$, "add", +function(m1){ +this.add33(m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "sub", +function(m1){ +this.sub33(m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "transpose", +function(){ +this.transpose33(); +}); +Clazz_defineMethod(c$, "transposeM", +function(m1){ +this.setM33(m1); +this.transpose33(); +}, "JU.M3"); +Clazz_defineMethod(c$, "invertM", +function(m1){ +this.setM33(m1); +this.invert(); +}, "JU.M3"); +Clazz_defineMethod(c$, "invert", +function(){ +var s = this.determinant3(); +if (s == 0.0) return; +s = 1 / s; +this.set9(this.m11 * this.m22 - this.m12 * this.m21, this.m02 * this.m21 - this.m01 * this.m22, this.m01 * this.m12 - this.m02 * this.m11, this.m12 * this.m20 - this.m10 * this.m22, this.m00 * this.m22 - this.m02 * this.m20, this.m02 * this.m10 - this.m00 * this.m12, this.m10 * this.m21 - this.m11 * this.m20, this.m01 * this.m20 - this.m00 * this.m21, this.m00 * this.m11 - this.m01 * this.m10); +this.scale(s); +}); +Clazz_defineMethod(c$, "setAsXRotation", +function(angle){ +this.setXRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsYRotation", +function(angle){ +this.setYRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsZRotation", +function(angle){ +this.setZRot(angle); +return this; +}, "~N"); +Clazz_defineMethod(c$, "scale", +function(scalar){ +this.mul33(scalar); +}, "~N"); +Clazz_defineMethod(c$, "mul", +function(m1){ +this.mul2(this, m1); +}, "JU.M3"); +Clazz_defineMethod(c$, "mul2", +function(m1, m2){ +this.set9(m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22); +}, "JU.M3,JU.M3"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.M3"))) return false; +var m = o; +return this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22; +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.m00) ^ JU.T3.floatToIntBits(this.m01) ^ JU.T3.floatToIntBits(this.m02) ^ JU.T3.floatToIntBits(this.m10) ^ JU.T3.floatToIntBits(this.m11) ^ JU.T3.floatToIntBits(this.m12) ^ JU.T3.floatToIntBits(this.m20) ^ JU.T3.floatToIntBits(this.m21) ^ JU.T3.floatToIntBits(this.m22); +}); +Clazz_defineMethod(c$, "setZero", +function(){ +this.clear33(); +}); +Clazz_defineMethod(c$, "set9", +function(m00, m01, m02, m10, m11, m12, m20, m21, m22){ +this.m00 = m00; +this.m01 = m01; +this.m02 = m02; +this.m10 = m10; +this.m11 = m11; +this.m12 = m12; +this.m20 = m20; +this.m21 = m21; +this.m22 = m22; +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[\n [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "]" + "\n [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "]" + "\n [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "] ]"; +}); +Clazz_defineMethod(c$, "setAA", +function(a){ +this.setAA33(a); +return this; +}, "JU.A4"); +Clazz_defineMethod(c$, "setAsBallRotation", +function(responseFactor, dx, dy){ +var r = Math.sqrt(dx * dx + dy * dy); +var th = r * responseFactor; +if (th == 0) { +this.setScale(1); +return false; +}var c = Math.cos(th); +var s = Math.sin(th); +var nx = -dy / r; +var ny = dx / r; +var c1 = c - 1; +this.m00 = 1 + c1 * nx * nx; +this.m01 = this.m10 = c1 * nx * ny; +this.m20 = -(this.m02 = s * nx); +this.m11 = 1 + c1 * ny * ny; +this.m21 = -(this.m12 = s * ny); +this.m22 = c; +return true; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isRotation", +function(){ +return (Math.abs(this.determinant3() - 1) < 0.001); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.M34"], "JU.M4", ["JU.T3"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.m03 = 0; +this.m13 = 0; +this.m23 = 0; +this.m30 = 0; +this.m31 = 0; +this.m32 = 0; +this.m33 = 0; +Clazz_instantialize(this, arguments);}, JU, "M4", JU.M34); +c$.newA16 = Clazz_defineMethod(c$, "newA16", +function(v){ +var m = new JU.M4(); +m.m00 = v[0]; +m.m01 = v[1]; +m.m02 = v[2]; +m.m03 = v[3]; +m.m10 = v[4]; +m.m11 = v[5]; +m.m12 = v[6]; +m.m13 = v[7]; +m.m20 = v[8]; +m.m21 = v[9]; +m.m22 = v[10]; +m.m23 = v[11]; +m.m30 = v[12]; +m.m31 = v[13]; +m.m32 = v[14]; +m.m33 = v[15]; +return m; +}, "~A"); +c$.newM4 = Clazz_defineMethod(c$, "newM4", +function(m1){ +var m = new JU.M4(); +if (m1 == null) { +m.setIdentity(); +return m; +}m.setToM3(m1); +m.m03 = m1.m03; +m.m13 = m1.m13; +m.m23 = m1.m23; +m.m30 = m1.m30; +m.m31 = m1.m31; +m.m32 = m1.m32; +m.m33 = m1.m33; +return m; +}, "JU.M4"); +c$.newMV = Clazz_defineMethod(c$, "newMV", +function(m1, t){ +var m = new JU.M4(); +m.setMV(m1, t); +return m; +}, "JU.M3,JU.T3"); +Clazz_defineMethod(c$, "setZero", +function(){ +this.clear33(); +this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = this.m33 = 0.0; +}); +Clazz_defineMethod(c$, "setIdentity", +function(){ +this.setZero(); +this.m00 = this.m11 = this.m22 = this.m33 = 1.0; +}); +Clazz_defineMethod(c$, "setM4", +function(m1){ +this.setM33(m1); +this.m03 = m1.m03; +this.m13 = m1.m13; +this.m23 = m1.m23; +this.m30 = m1.m30; +this.m31 = m1.m31; +this.m32 = m1.m32; +this.m33 = m1.m33; +return this; +}, "JU.M4"); +Clazz_defineMethod(c$, "setMV", +function(m1, t){ +this.setM33(m1); +this.setTranslation(t); +this.m33 = 1; +}, "JU.M3,JU.T3"); +Clazz_defineMethod(c$, "setToM3", +function(m1){ +this.setM33(m1); +this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = 0.0; +this.m33 = 1.0; +}, "JU.M34"); +Clazz_defineMethod(c$, "setToAA", +function(a){ +this.setIdentity(); +this.setAA33(a); +}, "JU.A4"); +Clazz_defineMethod(c$, "setA", +function(m){ +this.m00 = m[0]; +this.m01 = m[1]; +this.m02 = m[2]; +this.m03 = m[3]; +this.m10 = m[4]; +this.m11 = m[5]; +this.m12 = m[6]; +this.m13 = m[7]; +this.m20 = m[8]; +this.m21 = m[9]; +this.m22 = m[10]; +this.m23 = m[11]; +this.m30 = m[12]; +this.m31 = m[13]; +this.m32 = m[14]; +this.m33 = m[15]; +}, "~A"); +Clazz_defineMethod(c$, "setTranslation", +function(trans){ +this.m03 = trans.x; +this.m13 = trans.y; +this.m23 = trans.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "setElement", +function(row, col, v){ +if (row < 3 && col < 3) { +this.set33(row, col, v); +return; +}if (row > 3 || col > 3) this.err(); +switch (row) { +case 0: +this.m03 = v; +return; +case 1: +this.m13 = v; +return; +case 2: +this.m23 = v; +return; +} +switch (col) { +case 0: +this.m30 = v; +return; +case 1: +this.m31 = v; +return; +case 2: +this.m32 = v; +return; +case 3: +this.m33 = v; +return; +} +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getElement", +function(row, col){ +if (row < 3 && col < 3) return this.get33(row, col); +if (row > 3 || col > 3) { +this.err(); +return 0; +}switch (row) { +case 0: +return this.m03; +case 1: +return this.m13; +case 2: +return this.m23; +default: +switch (col) { +case 0: +return this.m30; +case 1: +return this.m31; +case 2: +return this.m32; +default: +return this.m33; +} +} +}, "~N,~N"); +Clazz_defineMethod(c$, "getTranslation", +function(trans){ +trans.x = this.m03; +trans.y = this.m13; +trans.z = this.m23; +}, "JU.T3"); +Clazz_defineMethod(c$, "getRotationScale", +function(m1){ +m1.m00 = this.m00; +m1.m01 = this.m01; +m1.m02 = this.m02; +m1.m10 = this.m10; +m1.m11 = this.m11; +m1.m12 = this.m12; +m1.m20 = this.m20; +m1.m21 = this.m21; +m1.m22 = this.m22; +}, "JU.M3"); +Clazz_defineMethod(c$, "setRotationScale", +function(m1){ +this.m00 = m1.m00; +this.m01 = m1.m01; +this.m02 = m1.m02; +this.m10 = m1.m10; +this.m11 = m1.m11; +this.m12 = m1.m12; +this.m20 = m1.m20; +this.m21 = m1.m21; +this.m22 = m1.m22; +}, "JU.M3"); +Clazz_defineMethod(c$, "setRowA", +function(row, v){ +if (row < 3) this.setRow33(row, v); +switch (row) { +case 0: +this.m03 = v[3]; +return; +case 1: +this.m13 = v[3]; +return; +case 2: +this.m23 = v[3]; +return; +case 3: +this.m30 = v[0]; +this.m31 = v[1]; +this.m32 = v[2]; +this.m33 = v[3]; +return; +} +this.err(); +}, "~N,~A"); +Clazz_overrideMethod(c$, "getRow", +function(row, v){ +if (row < 3) this.getRow33(row, v); +switch (row) { +case 0: +v[3] = this.m03; +return; +case 1: +v[3] = this.m13; +return; +case 2: +v[3] = this.m23; +return; +case 3: +v[0] = this.m30; +v[1] = this.m31; +v[2] = this.m32; +v[3] = this.m33; +return; +} +this.err(); +}, "~N,~A"); +Clazz_defineMethod(c$, "setColumn4", +function(column, x, y, z, w){ +if (column == 0) { +this.m00 = x; +this.m10 = y; +this.m20 = z; +this.m30 = w; +} else if (column == 1) { +this.m01 = x; +this.m11 = y; +this.m21 = z; +this.m31 = w; +} else if (column == 2) { +this.m02 = x; +this.m12 = y; +this.m22 = z; +this.m32 = w; +} else if (column == 3) { +this.m03 = x; +this.m13 = y; +this.m23 = z; +this.m33 = w; +} else { +this.err(); +}}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setColumnA", +function(column, v){ +if (column < 3) this.setColumn33(column, v); +switch (column) { +case 0: +this.m30 = v[3]; +return; +case 1: +this.m31 = v[3]; +return; +case 2: +this.m32 = v[3]; +return; +case 3: +this.m03 = v[0]; +this.m13 = v[1]; +this.m23 = v[2]; +this.m33 = v[3]; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "getColumn", +function(column, v){ +if (column < 3) this.getColumn33(column, v); +switch (column) { +case 0: +v[3] = this.m30; +return; +case 1: +v[3] = this.m31; +return; +case 2: +v[3] = this.m32; +return; +case 3: +v[0] = this.m03; +v[1] = this.m13; +v[2] = this.m23; +v[3] = this.m33; +return; +default: +this.err(); +} +}, "~N,~A"); +Clazz_defineMethod(c$, "sub", +function(m1){ +this.sub33(m1); +this.m03 -= m1.m03; +this.m13 -= m1.m13; +this.m23 -= m1.m23; +this.m30 -= m1.m30; +this.m31 -= m1.m31; +this.m32 -= m1.m32; +this.m33 -= m1.m33; +}, "JU.M4"); +Clazz_defineMethod(c$, "add", +function(pt){ +this.m03 += pt.x; +this.m13 += pt.y; +this.m23 += pt.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "transpose", +function(){ +this.transpose33(); +var tmp = this.m03; +this.m03 = this.m30; +this.m30 = tmp; +tmp = this.m13; +this.m13 = this.m31; +this.m31 = tmp; +tmp = this.m23; +this.m23 = this.m32; +this.m32 = tmp; +}); +Clazz_defineMethod(c$, "invert", +function(){ +var s = this.determinant4(); +if (s == 0.0) return this; +s = 1 / s; +this.set(this.m11 * (this.m22 * this.m33 - this.m23 * this.m32) + this.m12 * (this.m23 * this.m31 - this.m21 * this.m33) + this.m13 * (this.m21 * this.m32 - this.m22 * this.m31), this.m21 * (this.m02 * this.m33 - this.m03 * this.m32) + this.m22 * (this.m03 * this.m31 - this.m01 * this.m33) + this.m23 * (this.m01 * this.m32 - this.m02 * this.m31), this.m31 * (this.m02 * this.m13 - this.m03 * this.m12) + this.m32 * (this.m03 * this.m11 - this.m01 * this.m13) + this.m33 * (this.m01 * this.m12 - this.m02 * this.m11), this.m01 * (this.m13 * this.m22 - this.m12 * this.m23) + this.m02 * (this.m11 * this.m23 - this.m13 * this.m21) + this.m03 * (this.m12 * this.m21 - this.m11 * this.m22), this.m12 * (this.m20 * this.m33 - this.m23 * this.m30) + this.m13 * (this.m22 * this.m30 - this.m20 * this.m32) + this.m10 * (this.m23 * this.m32 - this.m22 * this.m33), this.m22 * (this.m00 * this.m33 - this.m03 * this.m30) + this.m23 * (this.m02 * this.m30 - this.m00 * this.m32) + this.m20 * (this.m03 * this.m32 - this.m02 * this.m33), this.m32 * (this.m00 * this.m13 - this.m03 * this.m10) + this.m33 * (this.m02 * this.m10 - this.m00 * this.m12) + this.m30 * (this.m03 * this.m12 - this.m02 * this.m13), this.m02 * (this.m13 * this.m20 - this.m10 * this.m23) + this.m03 * (this.m10 * this.m22 - this.m12 * this.m20) + this.m00 * (this.m12 * this.m23 - this.m13 * this.m22), this.m13 * (this.m20 * this.m31 - this.m21 * this.m30) + this.m10 * (this.m21 * this.m33 - this.m23 * this.m31) + this.m11 * (this.m23 * this.m30 - this.m20 * this.m33), this.m23 * (this.m00 * this.m31 - this.m01 * this.m30) + this.m20 * (this.m01 * this.m33 - this.m03 * this.m31) + this.m21 * (this.m03 * this.m30 - this.m00 * this.m33), this.m33 * (this.m00 * this.m11 - this.m01 * this.m10) + this.m30 * (this.m01 * this.m13 - this.m03 * this.m11) + this.m31 * (this.m03 * this.m10 - this.m00 * this.m13), this.m03 * (this.m11 * this.m20 - this.m10 * this.m21) + this.m00 * (this.m13 * this.m21 - this.m11 * this.m23) + this.m01 * (this.m10 * this.m23 - this.m13 * this.m20), this.m10 * (this.m22 * this.m31 - this.m21 * this.m32) + this.m11 * (this.m20 * this.m32 - this.m22 * this.m30) + this.m12 * (this.m21 * this.m30 - this.m20 * this.m31), this.m20 * (this.m02 * this.m31 - this.m01 * this.m32) + this.m21 * (this.m00 * this.m32 - this.m02 * this.m30) + this.m22 * (this.m01 * this.m30 - this.m00 * this.m31), this.m30 * (this.m02 * this.m11 - this.m01 * this.m12) + this.m31 * (this.m00 * this.m12 - this.m02 * this.m10) + this.m32 * (this.m01 * this.m10 - this.m00 * this.m11), this.m00 * (this.m11 * this.m22 - this.m12 * this.m21) + this.m01 * (this.m12 * this.m20 - this.m10 * this.m22) + this.m02 * (this.m10 * this.m21 - this.m11 * this.m20)); +this.scale(s); +return this; +}); +Clazz_defineMethod(c$, "set", +function(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33){ +this.m00 = m00; +this.m01 = m01; +this.m02 = m02; +this.m03 = m03; +this.m10 = m10; +this.m11 = m11; +this.m12 = m12; +this.m13 = m13; +this.m20 = m20; +this.m21 = m21; +this.m22 = m22; +this.m23 = m23; +this.m30 = m30; +this.m31 = m31; +this.m32 = m32; +this.m33 = m33; +}, "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "determinant4", +function(){ +return (this.m00 * this.m11 - this.m01 * this.m10) * (this.m22 * this.m33 - this.m23 * this.m32) - (this.m00 * this.m12 - this.m02 * this.m10) * (this.m21 * this.m33 - this.m23 * this.m31) + (this.m00 * this.m13 - this.m03 * this.m10) * (this.m21 * this.m32 - this.m22 * this.m31) + (this.m01 * this.m12 - this.m02 * this.m11) * (this.m20 * this.m33 - this.m23 * this.m30) - (this.m01 * this.m13 - this.m03 * this.m11) * (this.m20 * this.m32 - this.m22 * this.m30) + (this.m02 * this.m13 - this.m03 * this.m12) * (this.m20 * this.m31 - this.m21 * this.m30); +}); +Clazz_defineMethod(c$, "scale", +function(scalar){ +this.mul33(scalar); +this.m03 *= scalar; +this.m13 *= scalar; +this.m23 *= scalar; +this.m30 *= scalar; +this.m31 *= scalar; +this.m32 *= scalar; +this.m33 *= scalar; +}, "~N"); +Clazz_defineMethod(c$, "mul", +function(m1){ +this.mul2(this, m1); +}, "JU.M4"); +Clazz_defineMethod(c$, "mul2", +function(m1, m2){ +this.set(m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20 + m1.m03 * m2.m30, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21 + m1.m03 * m2.m31, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22 + m1.m03 * m2.m32, m1.m00 * m2.m03 + m1.m01 * m2.m13 + m1.m02 * m2.m23 + m1.m03 * m2.m33, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20 + m1.m13 * m2.m30, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21 + m1.m13 * m2.m31, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22 + m1.m13 * m2.m32, m1.m10 * m2.m03 + m1.m11 * m2.m13 + m1.m12 * m2.m23 + m1.m13 * m2.m33, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20 + m1.m23 * m2.m30, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21 + m1.m23 * m2.m31, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22 + m1.m23 * m2.m32, m1.m20 * m2.m03 + m1.m21 * m2.m13 + m1.m22 * m2.m23 + m1.m23 * m2.m33, m1.m30 * m2.m00 + m1.m31 * m2.m10 + m1.m32 * m2.m20 + m1.m33 * m2.m30, m1.m30 * m2.m01 + m1.m31 * m2.m11 + m1.m32 * m2.m21 + m1.m33 * m2.m31, m1.m30 * m2.m02 + m1.m31 * m2.m12 + m1.m32 * m2.m22 + m1.m33 * m2.m32, m1.m30 * m2.m03 + m1.m31 * m2.m13 + m1.m32 * m2.m23 + m1.m33 * m2.m33); +}, "JU.M4,JU.M4"); +Clazz_defineMethod(c$, "transform", +function(vec){ +this.transform2(vec, vec); +}, "JU.T4"); +Clazz_defineMethod(c$, "transform2", +function(vec, vecOut){ +vecOut.set4(this.m00 * vec.x + this.m01 * vec.y + this.m02 * vec.z + this.m03 * vec.w, this.m10 * vec.x + this.m11 * vec.y + this.m12 * vec.z + this.m13 * vec.w, this.m20 * vec.x + this.m21 * vec.y + this.m22 * vec.z + this.m23 * vec.w, this.m30 * vec.x + this.m31 * vec.y + this.m32 * vec.z + this.m33 * vec.w); +}, "JU.T4,JU.T4"); +Clazz_defineMethod(c$, "rotTrans", +function(point){ +this.rotTrans2(point, point); +}, "JU.T3"); +Clazz_defineMethod(c$, "rotTrans2", +function(point, pointOut){ +pointOut.set(this.m00 * point.x + this.m01 * point.y + this.m02 * point.z + this.m03, this.m10 * point.x + this.m11 * point.y + this.m12 * point.z + this.m13, this.m20 * point.x + this.m21 * point.y + this.m22 * point.z + this.m23); +return pointOut; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "setAsXYRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m22 = c; +this.m23 = -s; +this.m32 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsYZRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m00 = c; +this.m03 = -s; +this.m30 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_defineMethod(c$, "setAsXZRotation", +function(angle){ +this.setIdentity(); +var c = Math.cos(angle); +var s = Math.sin(angle); +this.m11 = c; +this.m13 = -s; +this.m31 = s; +this.m33 = c; +return this; +}, "~N"); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.M4"))) return false; +var m = o; +return (this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m03 == m.m03 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m13 == m.m13 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22 && this.m23 == m.m23 && this.m30 == m.m30 && this.m31 == m.m31 && this.m32 == m.m32 && this.m33 == m.m33); +}, "~O"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.m00) ^ JU.T3.floatToIntBits(this.m01) ^ JU.T3.floatToIntBits(this.m02) ^ JU.T3.floatToIntBits(this.m03) ^ JU.T3.floatToIntBits(this.m10) ^ JU.T3.floatToIntBits(this.m11) ^ JU.T3.floatToIntBits(this.m12) ^ JU.T3.floatToIntBits(this.m13) ^ JU.T3.floatToIntBits(this.m20) ^ JU.T3.floatToIntBits(this.m21) ^ JU.T3.floatToIntBits(this.m22) ^ JU.T3.floatToIntBits(this.m23) ^ JU.T3.floatToIntBits(this.m30) ^ JU.T3.floatToIntBits(this.m31) ^ JU.T3.floatToIntBits(this.m32) ^ JU.T3.floatToIntBits(this.m33); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[\n [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "\t" + this.m03 + "]" + "\n [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "\t" + this.m13 + "]" + "\n [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "\t" + this.m23 + "]" + "\n [" + this.m30 + "\t" + this.m31 + "\t" + this.m32 + "\t" + this.m33 + "] ]"; +}); +Clazz_defineMethod(c$, "round", +function(f){ +this.m00 = this.rnd(this.m00, f); +this.m01 = this.rnd(this.m01, f); +this.m02 = this.rnd(this.m02, f); +this.m03 = this.rnd(this.m03, f); +this.m10 = this.rnd(this.m10, f); +this.m11 = this.rnd(this.m11, f); +this.m12 = this.rnd(this.m12, f); +this.m13 = this.rnd(this.m13, f); +this.m20 = this.rnd(this.m20, f); +this.m21 = this.rnd(this.m21, f); +this.m22 = this.rnd(this.m22, f); +this.m23 = this.rnd(this.m23, f); +this.m30 = this.rnd(this.m30, f); +this.m31 = this.rnd(this.m31, f); +this.m32 = this.rnd(this.m32, f); +this.m33 = this.rnd(this.m33, f); +return this; +}, "~N"); +Clazz_defineMethod(c$, "rnd", +function(n, f){ +return (Math.abs(n) < f ? 0 : n); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.io.OutputStream", "javajs.api.GenericOutputChannel"], "JU.OC", ["java.io.BufferedWriter", "$.ByteArrayOutputStream", "$.OutputStreamWriter", "JU.Base64", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bytePoster = null; +this.fileName = null; +this.bw = null; +this.isLocalFile = false; +this.byteCount = 0; +this.isCanceled = false; +this.closed = false; +this.os = null; +this.sb = null; +this.type = null; +this.$isBase64 = false; +this.os0 = null; +this.bytes = null; +this.bigEndian = true; +Clazz_instantialize(this, arguments);}, JU, "OC", java.io.OutputStream, javajs.api.GenericOutputChannel); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JU.OC, []); +}); +Clazz_makeConstructor(c$, +function(fileName){ +Clazz_superConstructor (this, JU.OC, []); +this.setParams(null, fileName, false, null); +}, "~S"); +Clazz_defineMethod(c$, "setParams", +function(bytePoster, fileName, asWriter, os){ +this.bytePoster = bytePoster; +this.$isBase64 = ";base64,".equals(fileName); +if (this.$isBase64) { +fileName = null; +this.os0 = os; +os = null; +}this.fileName = fileName; +this.os = os; +this.isLocalFile = (fileName != null && !JU.OC.isRemote(fileName)); +if (asWriter && !this.$isBase64 && os != null) this.bw = new java.io.BufferedWriter( new java.io.OutputStreamWriter(os)); +return this; +}, "javajs.api.BytePoster,~S,~B,java.io.OutputStream"); +Clazz_overrideMethod(c$, "isBigEndian", +function(){ +return this.bigEndian; +}); +Clazz_defineMethod(c$, "setBigEndian", +function(TF){ +this.bigEndian = TF; +}, "~B"); +Clazz_defineMethod(c$, "setBytes", +function(b){ +this.bytes = b; +return this; +}, "~A"); +Clazz_defineMethod(c$, "getFileName", +function(){ +return this.fileName; +}); +Clazz_defineMethod(c$, "getName", +function(){ +return (this.fileName == null ? null : this.fileName.substring(this.fileName.lastIndexOf("/") + 1)); +}); +Clazz_defineMethod(c$, "getByteCount", +function(){ +return this.byteCount; +}); +Clazz_defineMethod(c$, "setType", +function(type){ +this.type = type; +}, "~S"); +Clazz_defineMethod(c$, "getType", +function(){ +return this.type; +}); +Clazz_defineMethod(c$, "append", +function(s){ +try { +if (this.bw != null) { +this.bw.write(s); +} else if (this.os == null) { +if (this.sb == null) this.sb = new JU.SB(); +this.sb.append(s); +} else { +var b = s.getBytes(); +this.os.write(b, 0, b.length); +this.byteCount += b.length; +return this; +}} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +this.byteCount += s.length; +return this; +}, "~S"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.sb = null; +this.initOS(); +}); +Clazz_defineMethod(c$, "initOS", +function(){ +if (this.sb != null) { +var s = this.sb.toString(); +this.reset(); +this.append(s); +return; +}try { +{ +this.os = null; +}if (this.os == null) this.os = new java.io.ByteArrayOutputStream(); +if (this.bw != null) { +this.bw.close(); +this.bw = new java.io.BufferedWriter( new java.io.OutputStreamWriter(this.os)); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +this.byteCount = 0; +}); +Clazz_overrideMethod(c$, "writeByteAsInt", +function(b){ +if (this.os == null) this.initOS(); +{ +this.os.writeByteAsInt(b); +}this.byteCount++; +}, "~N"); +Clazz_overrideMethod(c$, "write", +function(buf, i, len){ +if (this.os == null) this.initOS(); +if (len < 0) len = buf.length - i; +try { +this.os.write(buf, i, len); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +this.byteCount += len; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "writeShort", +function(i){ +if (this.isBigEndian()) { +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i); +} else { +this.writeByteAsInt(i); +this.writeByteAsInt(i >> 8); +}}, "~N"); +Clazz_overrideMethod(c$, "writeLong", +function(b){ +if (this.isBigEndian()) { +this.writeInt(((b >> 32) & 0xFFFFFFFF)); +this.writeInt((b & 0xFFFFFFFF)); +} else { +this.writeByteAsInt((b >> 56)); +this.writeByteAsInt((b >> 48)); +this.writeByteAsInt((b >> 40)); +this.writeByteAsInt((b >> 32)); +this.writeByteAsInt((b >> 24)); +this.writeByteAsInt((b >> 16)); +this.writeByteAsInt((b >> 8)); +this.writeByteAsInt(b); +}}, "~N"); +Clazz_defineMethod(c$, "cancel", +function(){ +this.isCanceled = true; +this.closeChannel(); +}); +Clazz_overrideMethod(c$, "closeChannel", +function(){ +if (this.closed) return null; +try { +if (this.bw != null) { +this.bw.flush(); +this.bw.close(); +} else if (this.os != null) { +this.os.flush(); +this.os.close(); +}if (this.os0 != null && this.isCanceled) { +this.os0.flush(); +this.os0.close(); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (this.isCanceled) { +this.closed = true; +return null; +}if (this.fileName == null) { +if (this.$isBase64) { +var s = this.getBase64(); +if (this.os0 != null) { +this.os = this.os0; +this.append(s); +}this.sb = new JU.SB(); +this.sb.append(s); +this.$isBase64 = false; +return this.closeChannel(); +}return (this.sb == null ? null : this.sb.toString()); +}this.closed = true; +if (!this.isLocalFile) { +var ret = this.postByteArray(); +if (ret == null || ret.startsWith("java.net")) this.byteCount = -1; +return ret; +}var jmol = null; +var _function = null; +{ +jmol = self.J2S || Jmol; _function = (typeof this.fileName == +"function" ? this.fileName : null); +}if (jmol != null) { +var data = (this.sb == null ? this.toByteArray() : this.sb.toString()); +if (_function == null) jmol.doAjax(this.fileName, null, data, this.sb == null); + else jmol.applyFunc(this.fileName, data); +}return null; +}); +Clazz_defineMethod(c$, "isBase64", +function(){ +return this.$isBase64; +}); +Clazz_defineMethod(c$, "getBase64", +function(){ +return JU.Base64.getBase64(this.toByteArray()).toString(); +}); +Clazz_defineMethod(c$, "toByteArray", +function(){ +return (this.bytes != null ? this.bytes : Clazz_instanceOf(this.os,"java.io.ByteArrayOutputStream") ? (this.os).toByteArray() : null); +}); +Clazz_defineMethod(c$, "close", +function(){ +this.closeChannel(); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +if (this.bw != null) try { +this.bw.flush(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +if (this.sb != null) return this.closeChannel(); +return this.byteCount + " bytes"; +}); +Clazz_defineMethod(c$, "postByteArray", +function(){ +var bytes = (this.sb == null ? this.toByteArray() : this.sb.toString().getBytes()); +return this.bytePoster.postByteArray(this.fileName, bytes); +}); +c$.isRemote = Clazz_defineMethod(c$, "isRemote", +function(fileName){ +if (fileName == null) return false; +var itype = JU.OC.urlTypeIndex(fileName); +return (itype >= 0 && itype < 4); +}, "~S"); +c$.isLocal = Clazz_defineMethod(c$, "isLocal", +function(fileName){ +return (fileName != null && !JU.OC.isRemote(fileName)); +}, "~S"); +c$.urlTypeIndex = Clazz_defineMethod(c$, "urlTypeIndex", +function(name){ +if (name == null) return -2; +for (var i = 0; i < JU.OC.urlPrefixes.length; ++i) { +if (name.startsWith(JU.OC.urlPrefixes[i])) { +return i; +}} +return -1; +}, "~S"); +Clazz_overrideMethod(c$, "writeInt", +function(i){ +if (this.bigEndian) { +this.writeByteAsInt(i >> 24); +this.writeByteAsInt(i >> 16); +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i); +} else { +this.writeByteAsInt(i); +this.writeByteAsInt(i >> 8); +this.writeByteAsInt(i >> 16); +this.writeByteAsInt(i >> 24); +}}, "~N"); +Clazz_defineMethod(c$, "writeFloat", +function(x){ +this.writeInt(x == 0 ? 0 : Float.floatToIntBits(x)); +}, "~N"); +c$.urlPrefixes = Clazz_newArray(-1, ["http:", "https:", "sftp:", "ftp:", "file:", "cache:"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.P3", null, function(){ +var c$ = Clazz_declareType(JU, "P3", JU.T3); +c$.newP = Clazz_defineMethod(c$, "newP", +function(t){ +var p = new JU.P3(); +p.x = t.x; +p.y = t.y; +p.z = t.z; +return p; +}, "JU.T3"); +c$.getUnlikely = Clazz_defineMethod(c$, "getUnlikely", +function(){ +return (JU.P3.unlikely == null ? JU.P3.unlikely = JU.P3.new3(3.141592653589793, 2.718281828459045, (8.539734222673566)) : JU.P3.unlikely); +}); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var p = new JU.P3(); +p.x = x; +p.y = y; +p.z = z; +return p; +}, "~N,~N,~N"); +c$.newA = Clazz_defineMethod(c$, "newA", +function(a){ +return JU.P3.new3(a[0], a[1], a[2]); +}, "~A"); +c$.unlikely = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3i"], "JU.P3i", null, function(){ +var c$ = Clazz_declareType(JU, "P3i", JU.T3i); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var pt = new JU.P3i(); +pt.x = x; +pt.y = y; +pt.z = z; +return pt; +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T4"], "JU.P4", null, function(){ +var c$ = Clazz_declareType(JU, "P4", JU.T4); +c$.new4 = Clazz_defineMethod(c$, "new4", +function(x, y, z, w){ +var pt = new JU.P4(); +pt.set4(x, y, z, w); +return pt; +}, "~N,~N,~N,~N"); +c$.newPt = Clazz_defineMethod(c$, "newPt", +function(value){ +var pt = new JU.P4(); +pt.set4(value.x, value.y, value.z, value.w); +return pt; +}, "JU.P4"); +Clazz_defineMethod(c$, "distance4", +function(p1){ +var dx = this.x - p1.x; +var dy = this.y - p1.y; +var dz = this.z - p1.z; +var dw = this.w - p1.w; +return Math.sqrt(dx * dx + dy * dy + dz * dz + dw * dw); +}, "JU.P4"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.PT", ["java.util.Arrays", "JU.AU", "$.DF", "$.SB"], function(){ +var c$ = Clazz_declareType(JU, "PT", null); +c$.parseInt = Clazz_defineMethod(c$, "parseInt", +function(str){ +return JU.PT.parseIntNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseIntNext = Clazz_defineMethod(c$, "parseIntNext", +function(str, next){ +var cch = str.length; +if (next[0] < 0 || next[0] >= cch) return -2147483648; +return JU.PT.parseIntChecked(str, cch, next); +}, "~S,~A"); +c$.parseIntChecked = Clazz_defineMethod(c$, "parseIntChecked", +function(str, ichMax, next){ +var digitSeen = false; +var value = 0; +var ich = next[0]; +if (ich < 0) return -2147483648; +var ch; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var negative = false; +if (ich < ichMax && (str.charAt(ich)).charCodeAt(0) == 45) { +negative = true; +++ich; +}while (ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +value = value * 10 + (ch - 48); +digitSeen = true; +++ich; +} +if (!digitSeen) value = -2147483648; + else if (negative) value = -value; +next[0] = ich; +return value; +}, "~S,~N,~A"); +c$.isWhiteSpace = Clazz_defineMethod(c$, "isWhiteSpace", +function(str, ich){ +var ch; +return (ich >= 0 && ((ch = str.charAt(ich)) == ' ' || ch == '\t' || ch == '\n')); +}, "~S,~N"); +c$.parseFloatChecked = Clazz_defineMethod(c$, "parseFloatChecked", +function(str, ichMax, next, isStrict){ +var digitSeen = false; +var ich = next[0]; +if (isStrict && str.indexOf('\n') != str.lastIndexOf('\n')) return NaN; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var negative = false; +if (ich < ichMax && str.charAt(ich) == '-') { +++ich; +negative = true; +}var ch = 0; +var ival = 0; +var ival2 = 0; +while (ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +ival = (ival * 10) + (ch - 48) * 1; +++ich; +digitSeen = true; +} +var isDecimal = false; +var iscale = 0; +var nzero = (ival == 0 ? -1 : 0); +if (ch == 46) { +isDecimal = true; +while (++ich < ichMax && (ch = (str.charAt(ich)).charCodeAt(0)) >= 48 && ch <= 57) { +digitSeen = true; +if (nzero < 0) { +if (ch == 48) { +nzero--; +continue; +}nzero = -nzero; +}if (iscale < JU.PT.decimalScale.length) { +ival2 = (ival2 * 10) + (ch - 48) * 1; +iscale++; +}} +}var value; +if (!digitSeen) { +value = NaN; +} else if (ival2 > 0) { +value = ival2 * JU.PT.decimalScale[iscale - 1]; +if (nzero > 1) { +if (nzero - 2 < JU.PT.decimalScale.length) { +value *= JU.PT.decimalScale[nzero - 2]; +} else { +value *= Math.pow(10, 1 - nzero); +}} else { +value += ival; +}} else { +value = ival; +}var isExponent = false; +if (ich < ichMax && (ch == 69 || ch == 101 || ch == 68)) { +isExponent = true; +if (++ich >= ichMax) return NaN; +ch = (str.charAt(ich)).charCodeAt(0); +if ((ch == 43) && (++ich >= ichMax)) return NaN; +next[0] = ich; +var exponent = JU.PT.parseIntChecked(str, ichMax, next); +if (exponent == -2147483648) return NaN; +if (exponent > 0 && exponent <= JU.PT.tensScale.length) value *= JU.PT.tensScale[exponent - 1]; + else if (exponent < 0 && -exponent <= JU.PT.decimalScale.length) value *= JU.PT.decimalScale[-exponent - 1]; + else if (exponent != 0) value *= Math.pow(10, exponent); +} else { +next[0] = ich; +}if (negative) value = -value; +if (value == Infinity) value = 3.4028235E38; +return (!isStrict || (!isExponent || isDecimal) && JU.PT.checkTrailingText(str, next[0], ichMax) ? value : NaN); +}, "~S,~N,~A,~B"); +c$.checkTrailingText = Clazz_defineMethod(c$, "checkTrailingText", +function(str, ich, ichMax){ +var ch; +while (ich < ichMax && (JU.PT.isWhitespace(ch = str.charAt(ich)) || ch == ';')) ++ich; + +return (ich == ichMax); +}, "~S,~N,~N"); +c$.parseFloatArray = Clazz_defineMethod(c$, "parseFloatArray", +function(str){ +return JU.PT.parseFloatArrayNext(str, Clazz_newIntArray (1, 0), null, null, null); +}, "~S"); +c$.parseFloatArrayInfested = Clazz_defineMethod(c$, "parseFloatArrayInfested", +function(tokens, data){ +var len = data.length; +var nTokens = tokens.length; +var n = 0; +var max = 0; +for (var i = 0; i >= 0 && i < len && n < nTokens; i++) { +var f; +while (Float.isNaN(f = JU.PT.parseFloat(tokens[n++])) && n < nTokens) { +} +if (!Float.isNaN(f)) data[(max = i)] = f; +if (n == nTokens) break; +} +return max + 1; +}, "~A,~A"); +c$.parseFloatArrayNext = Clazz_defineMethod(c$, "parseFloatArrayNext", +function(str, next, f, strStart, strEnd){ +var n = 0; +var pt = next[0]; +if (pt >= 0) { +if (strStart != null) { +var p = str.indexOf(strStart, pt); +if (p >= 0) next[0] = p + strStart.length; +}str = str.substring(next[0]); +pt = (strEnd == null ? -1 : str.indexOf(strEnd)); +if (pt < 0) pt = str.length; + else str = str.substring(0, pt); +next[0] += pt + 1; +var tokens = JU.PT.getTokens(str); +if (f == null) f = Clazz_newFloatArray (tokens.length, 0); +n = JU.PT.parseFloatArrayInfested(tokens, f); +}if (f == null) return Clazz_newFloatArray (0, 0); +for (var i = n; i < f.length; i++) f[i] = NaN; + +return f; +}, "~S,~A,~A,~S,~S"); +c$.parseFloatRange = Clazz_defineMethod(c$, "parseFloatRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +if (next[0] < 0 || next[0] >= ichMax) return NaN; +return JU.PT.parseFloatChecked(str, ichMax, next, false); +}, "~S,~N,~A"); +c$.parseFloatNext = Clazz_defineMethod(c$, "parseFloatNext", +function(str, next){ +var cch = (str == null ? -1 : str.length); +return (next[0] < 0 || next[0] >= cch ? NaN : JU.PT.parseFloatChecked(str, cch, next, false)); +}, "~S,~A"); +c$.parseFloatStrict = Clazz_defineMethod(c$, "parseFloatStrict", +function(str){ +var cch = str.length; +if (cch == 0) return NaN; +return JU.PT.parseFloatChecked(str, cch, Clazz_newIntArray(-1, [0]), true); +}, "~S"); +c$.parseFloat = Clazz_defineMethod(c$, "parseFloat", +function(str){ +return JU.PT.parseFloatNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseIntRadix = Clazz_defineMethod(c$, "parseIntRadix", +function(s, i){ +{ +return Integer.parseIntRadix(s, i); +}}, "~S,~N"); +c$.getTokens = Clazz_defineMethod(c$, "getTokens", +function(line){ +return JU.PT.getTokensAt(line, 0); +}, "~S"); +c$.parseToken = Clazz_defineMethod(c$, "parseToken", +function(str){ +return JU.PT.parseTokenNext(str, Clazz_newIntArray(-1, [0])); +}, "~S"); +c$.parseTrimmed = Clazz_defineMethod(c$, "parseTrimmed", +function(str){ +return JU.PT.parseTrimmedRange(str, 0, str.length); +}, "~S"); +c$.parseTrimmedAt = Clazz_defineMethod(c$, "parseTrimmedAt", +function(str, ichStart){ +return JU.PT.parseTrimmedRange(str, ichStart, str.length); +}, "~S,~N"); +c$.parseTrimmedRange = Clazz_defineMethod(c$, "parseTrimmedRange", +function(str, ichStart, ichMax){ +var cch = str.length; +if (ichMax < cch) cch = ichMax; +if (cch < ichStart) return ""; +return JU.PT.parseTrimmedChecked(str, ichStart, cch); +}, "~S,~N,~N"); +c$.getTokensAt = Clazz_defineMethod(c$, "getTokensAt", +function(line, ich){ +if (line == null) return null; +var cchLine = line.length; +if (ich < 0 || ich > cchLine) return null; +var tokenCount = JU.PT.countTokens(line, ich); +var tokens = new Array(tokenCount); +var next = Clazz_newIntArray (1, 0); +next[0] = ich; +for (var i = 0; i < tokenCount; ++i) tokens[i] = JU.PT.parseTokenChecked(line, cchLine, next); + +return tokens; +}, "~S,~N"); +c$.countChar = Clazz_defineMethod(c$, "countChar", +function(line, c){ +var n = 0; +for (var i = line.lastIndexOf(c) + 1; --i >= 0; ) if (line.charAt(i) == c) n++; + +return n; +}, "~S,~S"); +c$.countTokens = Clazz_defineMethod(c$, "countTokens", +function(line, ich){ +var tokenCount = 0; +if (line != null) { +var ichMax = line.length; +while (true) { +while (ich < ichMax && JU.PT.isWhiteSpace(line, ich)) ++ich; + +if (ich == ichMax) break; +++tokenCount; +do { +++ich; +} while (ich < ichMax && !JU.PT.isWhiteSpace(line, ich)); +} +}return tokenCount; +}, "~S,~N"); +c$.parseTokenNext = Clazz_defineMethod(c$, "parseTokenNext", +function(str, next){ +var cch = str.length; +return (next[0] < 0 || next[0] >= cch ? null : JU.PT.parseTokenChecked(str, cch, next)); +}, "~S,~A"); +c$.parseTokenRange = Clazz_defineMethod(c$, "parseTokenRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +return (next[0] < 0 || next[0] >= ichMax ? null : JU.PT.parseTokenChecked(str, ichMax, next)); +}, "~S,~N,~A"); +c$.parseTokenChecked = Clazz_defineMethod(c$, "parseTokenChecked", +function(str, ichMax, next){ +var ich = next[0]; +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var ichNonWhite = ich; +while (ich < ichMax && !JU.PT.isWhiteSpace(str, ich)) ++ich; + +next[0] = ich; +return (ichNonWhite == ich ? null : str.substring(ichNonWhite, ich)); +}, "~S,~N,~A"); +c$.parseTrimmedChecked = Clazz_defineMethod(c$, "parseTrimmedChecked", +function(str, ich, ichMax){ +while (ich < ichMax && JU.PT.isWhiteSpace(str, ich)) ++ich; + +var ichLast = ichMax - 1; +while (ichLast >= ich && JU.PT.isWhiteSpace(str, ichLast)) --ichLast; + +return (ichLast < ich ? "" : str.substring(ich, ichLast + 1)); +}, "~S,~N,~N"); +c$.dVal = Clazz_defineMethod(c$, "dVal", +function(s){ +{ +if(s==null) +throw new NumberFormatException("null"); +var d=parseFloat(s); +if(isNaN(d)) +throw new NumberFormatException("Not a Number : "+s); +return d +}}, "~S"); +c$.fVal = Clazz_defineMethod(c$, "fVal", +function(s){ +{ +return this.dVal(s); +}}, "~S"); +c$.parseIntRange = Clazz_defineMethod(c$, "parseIntRange", +function(str, ichMax, next){ +var cch = str.length; +if (ichMax > cch) ichMax = cch; +return (next[0] < 0 || next[0] >= ichMax ? -2147483648 : JU.PT.parseIntChecked(str, ichMax, next)); +}, "~S,~N,~A"); +c$.parseFloatArrayData = Clazz_defineMethod(c$, "parseFloatArrayData", +function(tokens, data){ +JU.PT.parseFloatArrayDataN(tokens, data, data.length); +}, "~A,~A"); +c$.parseFloatArrayDataN = Clazz_defineMethod(c$, "parseFloatArrayDataN", +function(tokens, data, nData){ +for (var i = nData; --i >= 0; ) data[i] = (i >= tokens.length ? NaN : JU.PT.parseFloat(tokens[i])); + +}, "~A,~A,~N"); +c$.split = Clazz_defineMethod(c$, "split", +function(text, run){ +if (text.length == 0) return new Array(0); +var n = 1; +var i = text.indexOf(run); +var lines; +var runLen = run.length; +if (i < 0 || runLen == 0) { +lines = new Array(1); +lines[0] = text; +return lines; +}var len = text.length - runLen; +for (; i >= 0 && i < len; n++) i = text.indexOf(run, i + runLen); + +lines = new Array(n); +i = 0; +var ipt = 0; +var pt = 0; +for (; (ipt = text.indexOf(run, i)) >= 0 && pt + 1 < n; ) { +lines[pt++] = text.substring(i, ipt); +i = ipt + runLen; +} +if (text.indexOf(run, len) != len) len += runLen; +lines[pt] = text.substring(i, len); +return lines; +}, "~S,~S"); +c$.getQuotedStringAt = Clazz_defineMethod(c$, "getQuotedStringAt", +function(line, ipt0){ +var next = Clazz_newIntArray(-1, [ipt0]); +return JU.PT.getQuotedStringNext(line, next); +}, "~S,~N"); +c$.getQuotedStringNext = Clazz_defineMethod(c$, "getQuotedStringNext", +function(line, next){ +var i = next[0]; +if (i < 0 || (i = line.indexOf("\"", i)) < 0) return ""; +var pt = i + 1; +var len = line.length; +while (++i < len && line.charAt(i) != '"') if (line.charAt(i) == '\\') i++; + +next[0] = i + 1; +return line.substring(pt, i); +}, "~S,~A"); +c$.getQuotedOrUnquotedAttribute = Clazz_defineMethod(c$, "getQuotedOrUnquotedAttribute", +function(line, key){ +if (line == null || key == null) return null; +var pt = line.toLowerCase().indexOf(key.toLowerCase() + "="); +if (pt < 0 || (pt = pt + key.length + 1) >= line.length) return ""; +var c = line.charAt(pt); +switch ((c).charCodeAt(0)) { +case 39: +case 34: +pt++; +break; +default: +c = ' '; +line += " "; +} +var pt1 = line.indexOf(c, pt); +return (pt1 < 0 ? null : line.substring(pt, pt1)); +}, "~S,~S"); +c$.getCSVString = Clazz_defineMethod(c$, "getCSVString", +function(line, next){ +var i = next[1]; +if (i < 0 || (i = line.indexOf("\"", i)) < 0) return null; +var pt = next[0] = i; +var len = line.length; +var escaped = false; +var haveEscape = false; +while (++i < len && (line.charAt(i) != '"' || (escaped = (i + 1 < len && line.charAt(i + 1) == '"')))) if (escaped) { +escaped = false; +haveEscape = true; +i++; +} +if (i >= len) { +next[1] = -1; +return null; +}next[1] = i + 1; +var s = line.substring(pt + 1, i); +return (haveEscape ? JU.PT.rep(JU.PT.rep(s, "\"\"", "\0"), "\0", "\"") : s); +}, "~S,~A"); +c$.isOneOf = Clazz_defineMethod(c$, "isOneOf", +function(key, semiList){ +if (semiList.length == 0) return false; +if (semiList.charAt(0) != ';') semiList = ";" + semiList + ";"; +return key.indexOf(";") < 0 && semiList.indexOf(';' + key + ';') >= 0; +}, "~S,~S"); +c$.getQuotedAttribute = Clazz_defineMethod(c$, "getQuotedAttribute", +function(info, name){ +var i = info.indexOf(name + "="); +return (i < 0 ? null : JU.PT.getQuotedStringAt(info, i)); +}, "~S,~S"); +c$.approx = Clazz_defineMethod(c$, "approx", +function(f, n){ +return Math.round(f * n) / n; +}, "~N,~N"); +c$.rep = Clazz_defineMethod(c$, "rep", +function(str, strFrom, strTo){ +if (str == null || strFrom.length == 0 || str.indexOf(strFrom) < 0) return str; +var isOnce = (strTo.indexOf(strFrom) >= 0); +do { +str = str.$replace(strFrom, strTo); +} while (!isOnce && str.indexOf(strFrom) >= 0); +return str; +}, "~S,~S,~S"); +c$.formatF = Clazz_defineMethod(c$, "formatF", +function(value, width, precision, alignLeft, zeroPad){ +return JU.PT.formatS(JU.DF.formatDecimal(value, precision), width, 0, alignLeft, zeroPad); +}, "~N,~N,~N,~B,~B"); +c$.formatD = Clazz_defineMethod(c$, "formatD", +function(value, width, precision, alignLeft, zeroPad){ +return JU.PT.formatS(JU.DF.formatDecimal(value, -1 - precision), width, 0, alignLeft, zeroPad); +}, "~N,~N,~N,~B,~B"); +c$.formatS = Clazz_defineMethod(c$, "formatS", +function(value, width, precision, alignLeft, zeroPad){ +if (value == null) return ""; +var len = value.length; +if (precision != 2147483647 && precision > 0 && precision < len) value = value.substring(0, precision); + else if (precision < 0 && len + precision >= 0) value = value.substring(len + precision + 1); +var padLength = width - value.length; +if (padLength <= 0) return value; +var isNeg = (zeroPad && !alignLeft && value.charAt(0) == '-'); +var padChar = (zeroPad ? '0' : ' '); +var padChar0 = (isNeg ? '-' : padChar); +var sb = new JU.SB(); +if (alignLeft) sb.append(value); +sb.appendC(padChar0); +for (var i = padLength; --i > 0; ) sb.appendC(padChar); + +if (!alignLeft) sb.append(isNeg ? padChar + value.substring(1) : value); +return sb.toString(); +}, "~S,~N,~N,~B,~B"); +c$.replaceWithCharacter = Clazz_defineMethod(c$, "replaceWithCharacter", +function(str, strFrom, chTo){ +if (str == null) return null; +for (var i = strFrom.length; --i >= 0; ) str = str.$replace(strFrom.charAt(i), chTo); + +return str; +}, "~S,~S,~S"); +c$.replaceAllCharacters = Clazz_defineMethod(c$, "replaceAllCharacters", +function(str, strFrom, strTo){ +for (var i = strFrom.length; --i >= 0; ) { +var chFrom = strFrom.substring(i, i + 1); +str = JU.PT.rep(str, chFrom, strTo); +} +return str; +}, "~S,~S,~S"); +c$.trim = Clazz_defineMethod(c$, "trim", +function(str, chars){ +if (str == null || str.length == 0) return str; +if (chars.length == 0) return str.trim(); +var len = str.length; +var k = 0; +while (k < len && chars.indexOf(str.charAt(k)) >= 0) k++; + +var m = str.length - 1; +while (m > k && chars.indexOf(str.charAt(m)) >= 0) m--; + +return str.substring(k, m + 1); +}, "~S,~S"); +c$.trimQuotes = Clazz_defineMethod(c$, "trimQuotes", +function(value){ +return (value != null && value.length > 1 && value.startsWith("\"") && value.endsWith("\"") ? value.substring(1, value.length - 1) : value); +}, "~S"); +c$.isNonStringPrimitive = Clazz_defineMethod(c$, "isNonStringPrimitive", +function(info){ +{ +if(typeof info == "number" || typeof info == "boolean") { +return true; +} +}return Clazz_instanceOf(info, Number) || Clazz_instanceOf(info, Boolean); +}, "~O"); +c$.toJSON = Clazz_defineMethod(c$, "toJSON", +function(infoType, info){ +if (info == null) return JU.PT.packageJSON(infoType, null); +if (JU.PT.isNonStringPrimitive(info)) return JU.PT.packageJSON(infoType, info.toString()); +var s = null; +var sb = null; +while (true) { +if ((typeof(info)=='string')) { +s = info; +{ +if (typeof s == "undefined") s = "null" +}if (s.indexOf("{\"") != 0) { +s = JU.PT.esc(s); +}break; +}if (Clazz_instanceOf(info,"javajs.api.JSONEncodable")) { +if ((s = (info).toJSON()) == null) s = "null"; +break; +}sb = new JU.SB(); +if (Clazz_instanceOf(info,"java.util.Map")) { +sb.append("{ "); +var sep = ""; +var keys = (info).keySet(); +var skeys = keys.toArray( new Array(keys.size())); +java.util.Arrays.sort(skeys); +for (var i = 0, n = skeys.length; i < n; i++) { +var key = skeys[i]; +if (key == null) key = "null"; +sb.append(sep).append(JU.PT.packageJSON(key, JU.PT.toJSON(null, (info).get(key)))); +sep = ","; +} +sb.append(" }"); +break; +}if (Clazz_instanceOf(info,"JU.Lst")) { +sb.append("[ "); +var n = (info).size(); +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.append(JU.PT.toJSON(null, (info).get(i))); +} +sb.append(" ]"); +break; +}if (Clazz_instanceOf(info,"JU.M34")) { +var len = (Clazz_instanceOf(info,"JU.M4") ? 4 : 3); +var x = Clazz_newFloatArray (len, 0); +var m = info; +sb.appendC('['); +for (var i = 0; i < len; i++) { +if (i > 0) sb.appendC(','); +m.getRow(i, x); +sb.append(JU.PT.toJSON(null, x)); +} +sb.appendC(']'); +break; +}s = JU.PT.nonArrayString(info); +if (s == null) { +sb.append("["); +var n = JU.AU.getLength(info); +var o = null; +{ +o = info[0]; +typeof o != "number" && typeof 0 != "boolean" && (o = null); +}if (o != null) { +sb.appendO(info); +} else { +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.append(JU.PT.toJSON(null, JU.PT.arrayGet(info, i))); +} +}sb.append("]"); +break; +}info = info.toString(); +} +return JU.PT.packageJSON(infoType, (s == null ? sb.toString() : s)); +}, "~S,~O"); +c$.arrayGet = Clazz_defineMethod(c$, "arrayGet", +function(info, i){ +{ +return info[i]; +}}, "~O,~N"); +c$.nonArrayString = Clazz_defineMethod(c$, "nonArrayString", +function(x){ +{ +return (x.constructor == Array || x.BYTES_PER_ELEMENT ? null : x.toString()); +}}, "~O"); +c$.byteArrayToJSON = Clazz_defineMethod(c$, "byteArrayToJSON", +function(data){ +var sb = new JU.SB(); +sb.append("["); +var n = data.length; +for (var i = 0; i < n; i++) { +if (i > 0) sb.appendC(','); +sb.appendI(data[i] & 0xFF); +} +sb.append("]"); +return sb.toString(); +}, "~A"); +c$.packageJSON = Clazz_defineMethod(c$, "packageJSON", +function(infoType, info){ +return (infoType == null ? info : "\"" + infoType + "\": " + info); +}, "~S,~S"); +c$.escapeUrl = Clazz_defineMethod(c$, "escapeUrl", +function(url){ +url = JU.PT.rep(url, "\n", ""); +url = JU.PT.rep(url, "%", "%25"); +url = JU.PT.rep(url, "#", "%23"); +url = JU.PT.rep(url, "[", "%5B"); +url = JU.PT.rep(url, "\\", "%5C"); +url = JU.PT.rep(url, "]", "%5D"); +url = JU.PT.rep(url, " ", "%20"); +return url; +}, "~S"); +c$.esc = Clazz_defineMethod(c$, "esc", +function(str){ +if (str == null || str.length == 0) return "\"\""; +var haveEscape = false; +var i = 0; +for (; i < "\\\\\tt\rr\nn\"\"".length; i += 2) if (str.indexOf("\\\\\tt\rr\nn\"\"".charAt(i)) >= 0) { +haveEscape = true; +break; +} +if (haveEscape) while (i < "\\\\\tt\rr\nn\"\"".length) { +var pt = -1; +var ch = "\\\\\tt\rr\nn\"\"".charAt(i++); +var ch2 = "\\\\\tt\rr\nn\"\"".charAt(i++); +var sb = new JU.SB(); +var pt0 = 0; +while ((pt = str.indexOf(ch, pt + 1)) >= 0) { +sb.append(str.substring(pt0, pt)).appendC('\\').appendC(ch2); +pt0 = pt + 1; +} +sb.append(str.substring(pt0, str.length)); +str = sb.toString(); +} +return "\"" + JU.PT.escUnicode(str) + "\""; +}, "~S"); +c$.escUnicode = Clazz_defineMethod(c$, "escUnicode", +function(str){ +for (var i = str.length; --i >= 0; ) if ((str.charAt(i)).charCodeAt(0) > 0x7F) { +var s = "0000" + Integer.toHexString(str.charAt(i).charCodeAt(0)); +str = str.substring(0, i) + "\\u" + s.substring(s.length - 4) + str.substring(i + 1); +} +return str; +}, "~S"); +c$.escF = Clazz_defineMethod(c$, "escF", +function(f){ +var sf = "" + f; +{ +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0 && sf.indexOf("N") < 0 && sf.indexOf("n") < 0) +sf += ".0"; +}return sf; +}, "~N"); +c$.join = Clazz_defineMethod(c$, "join", +function(s, c, i0){ +if (s.length < i0) return null; +var sb = new JU.SB(); +sb.append(s[i0++]); +for (var i = i0; i < s.length; i++) sb.appendC(c).append(s[i]); + +return sb.toString(); +}, "~A,~S,~N"); +c$.isLike = Clazz_defineMethod(c$, "isLike", +function(a, b){ +var areEqual = a.equals(b); +if (areEqual) return true; +var isStart = b.startsWith("*"); +var isEnd = b.endsWith("*"); +return (!isStart && !isEnd) ? areEqual : isStart && isEnd ? b.length == 1 || a.contains(b.substring(1, b.length - 1)) : isStart ? a.endsWith(b.substring(1)) : a.startsWith(b.substring(0, b.length - 1)); +}, "~S,~S"); +c$.getMapValueNoCase = Clazz_defineMethod(c$, "getMapValueNoCase", +function(h, key){ +if ("this".equals(key)) return h; +var val = h.get(key); +if (val == null) for (var e, $e = h.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getKey().equalsIgnoreCase(key)) return e.getValue(); + +return val; +}, "java.util.Map,~S"); +c$.clean = Clazz_defineMethod(c$, "clean", +function(s){ +return JU.PT.rep(JU.PT.replaceAllCharacters(s, " \t\n\r", " "), " ", " ").trim(); +}, "~S"); +c$.fdup = Clazz_defineMethod(c$, "fdup", +function(f, pt, n){ +var ch; +var count = 0; +for (var i = pt; --i >= 1; ) { +if (JU.PT.isDigit(ch = f.charAt(i))) continue; +switch ((ch).charCodeAt(0)) { +case 46: +if (count++ != 0) return f; +continue; +case 45: +if (i != 1 && f.charAt(i - 1) != '.') return f; +continue; +default: +return f; +} +} +var s = f.substring(0, pt + 1); +var sb = new JU.SB(); +for (var i = 0; i < n; i++) sb.append(s); + +sb.append(f.substring(pt + 1)); +return sb.toString(); +}, "~S,~N,~N"); +c$.formatString = Clazz_defineMethod(c$, "formatString", +function(strFormat, key, strT, floatT, doubleT, doOne){ +if (strFormat == null) return null; +if ("".equals(strFormat)) return ""; +var len = key.length; +if (strFormat.indexOf("%") < 0 || len == 0 || strFormat.indexOf(key) < 0) return strFormat; +var strLabel = ""; +var ich; +var ichPercent; +var ichKey; +for (ich = 0; (ichPercent = strFormat.indexOf('%', ich)) >= 0 && (ichKey = strFormat.indexOf(key, ichPercent + 1)) >= 0; ) { +if (ich != ichPercent) strLabel += strFormat.substring(ich, ichPercent); +ich = ichPercent + 1; +if (ichKey > ichPercent + 6) { +strLabel += '%'; +continue; +}try { +var alignLeft = false; +if (strFormat.charAt(ich) == '-') { +alignLeft = true; +++ich; +}var zeroPad = false; +if (strFormat.charAt(ich) == '0') { +zeroPad = true; +++ich; +}var ch; +var width = 0; +while ((ch = strFormat.charAt(ich)) >= '0' && (ch <= '9')) { +width = (10 * width) + (ch.charCodeAt(0) - 48); +++ich; +} +var precision = 2147483647; +var isExponential = false; +if (strFormat.charAt(ich) == '.') { +++ich; +if ((ch = strFormat.charAt(ich)) == '-') { +isExponential = true; +++ich; +}if ((ch = strFormat.charAt(ich)) >= '0' && ch <= '9') { +precision = ch.charCodeAt(0) - 48; +++ich; +if ((ch = strFormat.charAt(ich)) >= '0' && ch <= '9') { +precision = 10 * precision + (ch.charCodeAt(0) - 48); +++ich; +}}if (isExponential) precision = -precision; +}var st = strFormat.substring(ich, ich + len); +if (!st.equals(key)) { +ich = ichPercent + 1; +strLabel += '%'; +continue; +}ich += len; +if (!Float.isNaN(floatT)) strLabel += JU.PT.formatF(floatT, width, precision, alignLeft, zeroPad); + else if (strT != null) strLabel += JU.PT.formatS(strT, width, precision < 0 ? precision - 1 : precision, alignLeft, zeroPad); + else if (!Double.isNaN(doubleT)) strLabel += JU.PT.formatD(doubleT, width, precision - 1, alignLeft, zeroPad); +if (doOne) break; +} catch (ioobe) { +if (Clazz_exceptionOf(ioobe,"IndexOutOfBoundsException")){ +ich = ichPercent; +break; +} else { +throw ioobe; +} +} +} +strLabel += strFormat.substring(ich); +return strLabel; +}, "~S,~S,~S,~N,~N,~B"); +c$.formatStringS = Clazz_defineMethod(c$, "formatStringS", +function(strFormat, key, strT){ +return JU.PT.formatString(strFormat, key, strT, NaN, NaN, false); +}, "~S,~S,~S"); +c$.formatStringF = Clazz_defineMethod(c$, "formatStringF", +function(strFormat, key, floatT){ +return JU.PT.formatString(strFormat, key, null, floatT, NaN, false); +}, "~S,~S,~N"); +c$.formatStringI = Clazz_defineMethod(c$, "formatStringI", +function(strFormat, key, intT){ +return JU.PT.formatString(strFormat, key, "" + intT, NaN, NaN, false); +}, "~S,~S,~N"); +c$.sprintf = Clazz_defineMethod(c$, "sprintf", +function(strFormat, list, values){ +if (values == null) return strFormat; +var n = list.length; +if (n == values.length) try { +for (var o = 0; o < n; o++) { +if (values[o] == null) continue; +switch ((list.charAt(o)).charCodeAt(0)) { +case 115: +strFormat = JU.PT.formatString(strFormat, "s", values[o], NaN, NaN, true); +break; +case 102: +strFormat = JU.PT.formatString(strFormat, "f", null, (values[o]).floatValue(), NaN, true); +break; +case 105: +strFormat = JU.PT.formatString(strFormat, "d", "" + values[o], NaN, NaN, true); +strFormat = JU.PT.formatString(strFormat, "i", "" + values[o], NaN, NaN, true); +break; +case 100: +strFormat = JU.PT.formatString(strFormat, "e", null, NaN, (values[o]).doubleValue(), true); +break; +case 112: +var pVal = values[o]; +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.x, NaN, true); +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.y, NaN, true); +strFormat = JU.PT.formatString(strFormat, "p", null, pVal.z, NaN, true); +break; +case 113: +var qVal = values[o]; +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.x, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.y, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.z, NaN, true); +strFormat = JU.PT.formatString(strFormat, "q", null, qVal.w, NaN, true); +break; +case 83: +var sVal = values[o]; +for (var i = 0; i < sVal.length; i++) strFormat = JU.PT.formatString(strFormat, "s", sVal[i], NaN, NaN, true); + +break; +case 70: +var fVal = values[o]; +for (var i = 0; i < fVal.length; i++) strFormat = JU.PT.formatString(strFormat, "f", null, fVal[i], NaN, true); + +break; +case 73: +var iVal = values[o]; +for (var i = 0; i < iVal.length; i++) strFormat = JU.PT.formatString(strFormat, "d", "" + iVal[i], NaN, NaN, true); + +for (var i = 0; i < iVal.length; i++) strFormat = JU.PT.formatString(strFormat, "i", "" + iVal[i], NaN, NaN, true); + +break; +case 68: +var dVal = values[o]; +for (var i = 0; i < dVal.length; i++) strFormat = JU.PT.formatString(strFormat, "e", null, NaN, dVal[i], true); + +} +} +return JU.PT.rep(strFormat, "%%", "%"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +System.out.println("TextFormat.sprintf error " + list + " " + strFormat); +return JU.PT.rep(strFormat, "%", "?"); +}, "~S,~S,~A"); +c$.formatCheck = Clazz_defineMethod(c$, "formatCheck", +function(strFormat){ +if (strFormat == null || strFormat.indexOf('p') < 0 && strFormat.indexOf('q') < 0) return strFormat; +strFormat = JU.PT.rep(strFormat, "%%", "\1"); +strFormat = JU.PT.rep(strFormat, "%p", "%6.2p"); +strFormat = JU.PT.rep(strFormat, "%q", "%6.2q"); +var format = JU.PT.split(strFormat, "%"); +var sb = new JU.SB(); +sb.append(format[0]); +for (var i = 1; i < format.length; i++) { +var f = "%" + format[i]; +var pt; +if (f.length >= 3) { +if ((pt = f.indexOf('p')) >= 0) f = JU.PT.fdup(f, pt, 3); +if ((pt = f.indexOf('q')) >= 0) f = JU.PT.fdup(f, pt, 4); +}sb.append(f); +} +return sb.toString().$replace('\1', '%'); +}, "~S"); +c$.leftJustify = Clazz_defineMethod(c$, "leftJustify", +function(s, s1, s2){ +s.append(s2); +var n = s1.length - s2.length; +if (n > 0) s.append(s1.substring(0, n)); +}, "JU.SB,~S,~S"); +c$.rightJustify = Clazz_defineMethod(c$, "rightJustify", +function(s, s1, s2){ +var n = s1.length - s2.length; +if (n > 0) s.append(s1.substring(0, n)); +s.append(s2); +}, "JU.SB,~S,~S"); +c$.safeTruncate = Clazz_defineMethod(c$, "safeTruncate", +function(f, n){ +if (f > -0.001 && f < 0.001) f = 0; +return (f + " ").substring(0, n); +}, "~N,~N"); +c$.isWild = Clazz_defineMethod(c$, "isWild", +function(s){ +return s != null && (s.indexOf("*") >= 0 || s.indexOf("?") >= 0); +}, "~S"); +c$.isMatch = Clazz_defineMethod(c$, "isMatch", +function(search, match, checkStar, allowInitialStar){ +if (search.equals(match)) return true; +var mLen = match.length; +if (mLen == 0) return false; +var isStar0 = (checkStar && allowInitialStar ? match.charAt(0) == '*' : false); +if (mLen == 1 && isStar0) return true; +var isStar1 = (checkStar && match.endsWith("*")); +var haveQ = (match.indexOf('?') >= 0); +if (!haveQ) { +if (isStar0) return (isStar1 ? (mLen < 3 || search.indexOf(match.substring(1, mLen - 1)) >= 0) : search.endsWith(match.substring(1))); + else if (isStar1) return search.startsWith(match.substring(0, mLen - 1)); +}var sLen = search.length; +var qqqq = "????"; +var nq = 4; +while (nq < sLen) { +qqqq += qqqq; +nq += 4; +} +if (checkStar) { +if (isStar0) { +match = qqqq + match.substring(1); +mLen += nq - 1; +}if (isStar1) { +match = match.substring(0, mLen - 1) + qqqq; +mLen += nq - 1; +}}if (mLen < sLen) return false; +var ich = 0; +while (mLen > sLen) { +if (allowInitialStar && match.charAt(ich) == '?') { +++ich; +} else if (match.charAt(ich + mLen - 1) != '?') { +return false; +}--mLen; +} +for (var i = sLen; --i >= 0; ) { +var chm = match.charAt(ich + i); +if (chm == '?') continue; +var chs = search.charAt(i); +if (chm != chs && (chm != '\1' || chs != '?')) return false; +} +return true; +}, "~S,~S,~B,~B"); +c$.replaceQuotedStrings = Clazz_defineMethod(c$, "replaceQuotedStrings", +function(s, list, newList){ +var n = list.size(); +for (var i = 0; i < n; i++) { +var name = list.get(i); +var newName = newList.get(i); +if (!newName.equals(name)) s = JU.PT.rep(s, "\"" + name + "\"", "\"" + newName + "\""); +} +return s; +}, "~S,JU.Lst,JU.Lst"); +c$.replaceStrings = Clazz_defineMethod(c$, "replaceStrings", +function(s, list, newList){ +var n = list.size(); +for (var i = 0; i < n; i++) { +var name = list.get(i); +var newName = newList.get(i); +if (!newName.equals(name)) s = JU.PT.rep(s, name, newName); +} +return s; +}, "~S,JU.Lst,JU.Lst"); +c$.isDigit = Clazz_defineMethod(c$, "isDigit", +function(ch){ +var c = (ch).charCodeAt(0); +return (48 <= c && c <= 57); +}, "~S"); +c$.isUpperCase = Clazz_defineMethod(c$, "isUpperCase", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90); +}, "~S"); +c$.isLowerCase = Clazz_defineMethod(c$, "isLowerCase", +function(ch){ +var c = (ch).charCodeAt(0); +return (97 <= c && c <= 122); +}, "~S"); +c$.isLetter = Clazz_defineMethod(c$, "isLetter", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122); +}, "~S"); +c$.isLetterOrDigit = Clazz_defineMethod(c$, "isLetterOrDigit", +function(ch){ +var c = (ch).charCodeAt(0); +return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57); +}, "~S"); +c$.isWhitespace = Clazz_defineMethod(c$, "isWhitespace", +function(ch){ +var c = (ch).charCodeAt(0); +return (c >= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd); +}, "~S"); +c$.fixPtFloats = Clazz_defineMethod(c$, "fixPtFloats", +function(pt, f){ +pt.x = Math.round(pt.x * f) / f; +pt.y = Math.round(pt.y * f) / f; +pt.z = Math.round(pt.z * f) / f; +}, "JU.T3,~N"); +c$.fixFloat = Clazz_defineMethod(c$, "fixFloat", +function(d, f){ +return (Math.round(d * f) / f); +}, "~N,~N"); +c$.fixDouble = Clazz_defineMethod(c$, "fixDouble", +function(d, f){ +return Math.round(d * f) / f; +}, "~N,~N"); +c$.parseFloatFraction = Clazz_defineMethod(c$, "parseFloatFraction", +function(s){ +var pt = s.indexOf("/"); +return (pt < 0 ? JU.PT.parseFloat(s) : JU.PT.parseFloat(s.substring(0, pt)) / JU.PT.parseFloat(s.substring(pt + 1))); +}, "~S"); +c$.tensScale = Clazz_newFloatArray(-1, [10, 100, 1000, 10000, 100000, 1000000]); +c$.decimalScale = Clazz_newFloatArray(-1, [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, 0.00000001, 0.000000001, 0.0000000001, 0.00000000001, 0.000000000001, 0.0000000000001, 0.00000000000001, 0.000000000000001]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sb = null; +this.s = null; +Clazz_instantialize(this, arguments);}, JU, "SB", null); +Clazz_makeConstructor(c$, +function(){ +{ +this.s = ""; +}}); +c$.newN = Clazz_defineMethod(c$, "newN", +function(n){ +{ +return new JU.SB(); +}}, "~N"); +c$.newS = Clazz_defineMethod(c$, "newS", +function(s){ +{ +var sb = new JU.SB(); +sb.s = s; +return sb; +}}, "~S"); +Clazz_defineMethod(c$, "append", +function(s){ +{ +this.s += s +}return this; +}, "~S"); +Clazz_defineMethod(c$, "appendC", +function(c){ +{ +this.s += c; +}return this; +}, "~S"); +Clazz_defineMethod(c$, "appendI", +function(i){ +{ +this.s += i +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendB", +function(b){ +{ +this.s += b +}return this; +}, "~B"); +Clazz_defineMethod(c$, "appendF", +function(f){ +{ +var sf = "" + f; +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0) +sf += ".0" ; +this.s += sf; +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendD", +function(d){ +{ +var sf = "" + d; +if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0) +sf += ".0" ; +this.s += sf; +}return this; +}, "~N"); +Clazz_defineMethod(c$, "appendSB", +function(buf){ +{ +this.s += buf.s; +}return this; +}, "JU.SB"); +Clazz_defineMethod(c$, "appendO", +function(data){ +if (data != null) { +{ +this.s += data.toString(); +}}return this; +}, "~O"); +Clazz_defineMethod(c$, "appendCB", +function(cb, off, len){ +{ +this.s += cb.slice(off,off+len).join(""); +}}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +{ +return this.s; +}}); +Clazz_defineMethod(c$, "length", +function(){ +{ +return this.s.length; +}}); +Clazz_defineMethod(c$, "indexOf", +function(s){ +{ +return this.s.indexOf(s); +}}, "~S"); +Clazz_defineMethod(c$, "charAt", +function(i){ +{ +return this.s.charAt(i); +}}, "~N"); +Clazz_defineMethod(c$, "charCodeAt", +function(i){ +{ +return this.s.charCodeAt(i); +}}, "~N"); +Clazz_defineMethod(c$, "setLength", +function(n){ +{ +this.s = this.s.substring(0, n); +}}, "~N"); +Clazz_defineMethod(c$, "lastIndexOf", +function(s){ +{ +return this.s.lastIndexOf(s); +}}, "~S"); +Clazz_defineMethod(c$, "indexOf2", +function(s, i){ +{ +return this.s.indexOf(s, i); +}}, "~S,~N"); +Clazz_defineMethod(c$, "substring", +function(i){ +{ +return this.s.substring(i); +}}, "~N"); +Clazz_defineMethod(c$, "substring2", +function(i, j){ +{ +return this.s.substring(i, j); +}}, "~N,~N"); +Clazz_defineMethod(c$, "toBytes", +function(off, len){ +if (len == 0) return Clazz_newByteArray (0, 0); +var cs; +{ +cs = "UTF-8"; +}return (len > 0 ? this.substring2(off, off + len) : off == 0 ? this.toString() : this.substring2(off, this.length() - off)).getBytes(cs); +}, "~N,~N"); +Clazz_defineMethod(c$, "replace", +function(start, end, str){ +{ +this.s = this.s.substring(0, start) + str + this.s.substring(end); +}}, "~N,~N,~S"); +Clazz_defineMethod(c$, "insert", +function(offset, str){ +this.replace(offset, offset, str); +}, "~N,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.JSONEncodable"], "JU.T3", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +Clazz_instantialize(this, arguments);}, JU, "T3", null, [javajs.api.JSONEncodable, java.io.Serializable]); +Clazz_defineMethod(c$, "set", +function(x, y, z){ +this.x = x; +this.y = y; +this.z = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setA", +function(t){ +this.x = t[0]; +this.y = t[1]; +this.z = t[2]; +}, "~A"); +Clazz_defineMethod(c$, "setT", +function(t1){ +this.x = t1.x; +this.y = t1.y; +this.z = t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "add2", +function(t1, t2){ +this.x = t1.x + t2.x; +this.y = t1.y + t2.y; +this.z = t1.z + t2.z; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "add", +function(t1){ +this.x += t1.x; +this.y += t1.y; +this.z += t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "distanceSquared", +function(p1){ +var dx = this.x - p1.x; +var dy = this.y - p1.y; +var dz = this.z - p1.z; +return (dx * dx + dy * dy + dz * dz); +}, "JU.T3"); +Clazz_defineMethod(c$, "distance", +function(p1){ +return Math.sqrt(this.distanceSquared(p1)); +}, "JU.T3"); +Clazz_defineMethod(c$, "sub2", +function(t1, t2){ +this.x = t1.x - t2.x; +this.y = t1.y - t2.y; +this.z = t1.z - t2.z; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "sub", +function(t1){ +this.x -= t1.x; +this.y -= t1.y; +this.z -= t1.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "scale", +function(s){ +this.x *= s; +this.y *= s; +this.z *= s; +}, "~N"); +Clazz_defineMethod(c$, "add3", +function(a, b, c){ +this.x += a; +this.y += b; +this.z += c; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "scaleT", +function(p){ +this.x *= p.x; +this.y *= p.y; +this.z *= p.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "scaleAdd2", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3,JU.T3"); +Clazz_defineMethod(c$, "ave", +function(a, b){ +this.x = (a.x + b.x) / 2; +this.y = (a.y + b.y) / 2; +this.z = (a.z + b.z) / 2; +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "dot", +function(v){ +return this.x * v.x + this.y * v.y + this.z * v.z; +}, "JU.T3"); +Clazz_defineMethod(c$, "lengthSquared", +function(){ +return this.x * this.x + this.y * this.y + this.z * this.z; +}); +Clazz_defineMethod(c$, "length", +function(){ +return Math.sqrt(this.lengthSquared()); +}); +Clazz_defineMethod(c$, "normalize", +function(){ +var d = this.length(); +this.x /= d; +this.y /= d; +this.z /= d; +}); +Clazz_defineMethod(c$, "cross", +function(v1, v2){ +this.set(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x); +}, "JU.T3,JU.T3"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +var bits = 1; +bits = 31 * bits + JU.T3.floatToIntBits(this.x); +bits = 31 * bits + JU.T3.floatToIntBits(this.y); +bits = 31 * bits + JU.T3.floatToIntBits(this.z); +return (bits ^ (bits >> 32)); +}); +c$.floatToIntBits = Clazz_defineMethod(c$, "floatToIntBits", +function(x){ +return (x == 0 ? 0 : Float.floatToIntBits(x)); +}, "~N"); +Clazz_overrideMethod(c$, "equals", +function(t1){ +if (!(Clazz_instanceOf(t1,"JU.T3"))) return false; +var t2 = t1; +return (this.x == t2.x && this.y == t2.y && this.z == t2.z); +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "{" + this.x + ", " + this.y + ", " + this.z + "}"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + "," + this.y + "," + this.z + "]"; +}); +Clazz_defineMethod(c$, "setP", +function(t){ +this.set(t.x, t.y, t.z); +return this; +}, "JU.T3"); +Clazz_defineMethod(c$, "putP", +function(t){ +t.set(this.x, this.y, this.z); +return t; +}, "JU.T3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.x = 0; +this.y = 0; +this.z = 0; +Clazz_instantialize(this, arguments);}, JU, "T3i", null, java.io.Serializable); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(x, y, z){ +this.x = x; +this.y = y; +this.z = z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setT", +function(t1){ +this.x = t1.x; +this.y = t1.y; +this.z = t1.z; +}, "JU.T3i"); +Clazz_defineMethod(c$, "add", +function(t){ +this.x += t.x; +this.y += t.y; +this.z += t.z; +}, "JU.T3i"); +Clazz_defineMethod(c$, "scaleAdd", +function(s, t1, t2){ +this.x = s * t1.x + t2.x; +this.y = s * t1.y + t2.y; +this.z = s * t1.z + t2.z; +}, "~N,JU.T3i,JU.T3i"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.x ^ this.y ^ this.z; +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.T3i"))) return false; +var t = o; +return (this.x == t.x && this.y == t.y && this.z == t.z); +}, "~O"); +Clazz_defineMethod(c$, "asString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ")"; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.asString(); +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.T4", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.w = 0; +Clazz_instantialize(this, arguments);}, JU, "T4", JU.T3); +Clazz_defineMethod(c$, "set4", +function(x, y, z, w){ +this.x = x; +this.y = y; +this.z = z; +this.w = w; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "scale4", +function(s){ +this.scale(s); +this.w *= s; +}, "~N"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return JU.T3.floatToIntBits(this.x) ^ JU.T3.floatToIntBits(this.y) ^ JU.T3.floatToIntBits(this.z) ^ JU.T3.floatToIntBits(this.w); +}); +Clazz_overrideMethod(c$, "equals", +function(o){ +if (!(Clazz_instanceOf(o,"JU.T4"))) return false; +var t = o; +return (this.x == t.x && this.y == t.y && this.z == t.z && this.w == t.w); +}, "~O"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + ")"; +}); +Clazz_overrideMethod(c$, "toJSON", +function(){ +return "[" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.T3"], "JU.V3", null, function(){ +var c$ = Clazz_declareType(JU, "V3", JU.T3); +/*LV!1824 unnec constructor*/c$.newV = Clazz_defineMethod(c$, "newV", +function(t){ +return JU.V3.new3(t.x, t.y, t.z); +}, "JU.T3"); +c$.newVsub = Clazz_defineMethod(c$, "newVsub", +function(t1, t2){ +return JU.V3.new3(t1.x - t2.x, t1.y - t2.y, t1.z - t2.z); +}, "JU.T3,JU.T3"); +c$.new3 = Clazz_defineMethod(c$, "new3", +function(x, y, z){ +var v = new JU.V3(); +v.x = x; +v.y = y; +v.z = z; +return v; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "angle", +function(v1){ +var xx = this.y * v1.z - this.z * v1.y; +var yy = this.z * v1.x - this.x * v1.z; +var zz = this.x * v1.y - this.y * v1.x; +var cross = Math.sqrt(xx * xx + yy * yy + zz * zz); +return Math.abs(Math.atan2(cross, this.dot(v1))); +}, "JU.V3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.LoggerInterface"], "JU.DefaultLogger", ["JU.Logger"], function(){ +var c$ = Clazz_declareType(JU, "DefaultLogger", null, JU.LoggerInterface); +Clazz_defineMethod(c$, "log", +function(out, level, txt, e){ +if (out === System.err) System.out.flush(); +if ((out != null) && ((txt != null) || (e != null))) { +txt = (txt != null ? txt : ""); +txt = (JU.Logger.logLevel() ? "[" + JU.Logger.getLevel(level) + "] " : "") + txt + (e != null ? ": " + e.toString() : ""); +out.println(txt); +if (e != null) { +var elements = e.getStackTrace(); +if (elements != null) { +for (var i = 0; i < elements.length; i++) { +out.println(elements[i].getClassName() + " - " + elements[i].getLineNumber() + " - " + elements[i].getMethodName()); +} +}}}if (out === System.err) System.err.flush(); +return txt; +}, "java.io.PrintStream,~N,~S,Throwable"); +Clazz_overrideMethod(c$, "debug", +function(txt){ +this.log(System.out, 5, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "info", +function(txt){ +this.log(System.out, 4, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "warn", +function(txt){ +this.log(System.out, 3, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "warnEx", +function(txt, e){ +this.log(System.out, 3, txt, e); +}, "~S,Throwable"); +Clazz_overrideMethod(c$, "error", +function(txt){ +this.log(System.err, 2, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "errorEx", +function(txt, e){ +this.log(System.err, 2, txt, e); +}, "~S,Throwable"); +Clazz_overrideMethod(c$, "fatal", +function(txt){ +this.log(System.err, 1, txt, null); +}, "~S"); +Clazz_overrideMethod(c$, "fatalEx", +function(txt, e){ +this.log(System.err, 1, txt, e); +}, "~S,Throwable"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.util.Hashtable", "JU.DefaultLogger"], "JU.Logger", null, function(){ +var c$ = Clazz_declareType(JU, "Logger", null); +c$.getProperty = Clazz_defineMethod(c$, "getProperty", +function(level, defaultValue){ +try { +var property = System.getProperty("jmol.logger." + level, null); +if (property != null) { +return (property.equalsIgnoreCase("true")); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return defaultValue; +}, "~S,~B"); +c$.setLogger = Clazz_defineMethod(c$, "setLogger", +function(logger){ +JU.Logger._logger = logger; +JU.Logger.debugging = JU.Logger.isActiveLevel(5) || JU.Logger.isActiveLevel(6); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}, "JU.LoggerInterface"); +c$.isActiveLevel = Clazz_defineMethod(c$, "isActiveLevel", +function(level){ +return JU.Logger._logger != null && level >= 0 && level < 7 && JU.Logger._activeLevels[level]; +}, "~N"); +c$.setActiveLevel = Clazz_defineMethod(c$, "setActiveLevel", +function(level, active){ +if (level < 0) level = 0; +if (level >= 7) level = 6; +JU.Logger._activeLevels[level] = active; +JU.Logger.debugging = JU.Logger.isActiveLevel(5) || JU.Logger.isActiveLevel(6); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}, "~N,~B"); +c$.setLogLevel = Clazz_defineMethod(c$, "setLogLevel", +function(level){ +for (var i = 7; --i >= 0; ) JU.Logger.setActiveLevel(i, i <= level); + +}, "~N"); +c$.getLevel = Clazz_defineMethod(c$, "getLevel", +function(level){ +switch (level) { +case 6: +return "DEBUGHIGH"; +case 5: +return "DEBUG"; +case 4: +return "INFO"; +case 3: +return "WARN"; +case 2: +return "ERROR"; +case 1: +return "FATAL"; +} +return "????"; +}, "~N"); +c$.logLevel = Clazz_defineMethod(c$, "logLevel", +function(){ +return JU.Logger._logLevel; +}); +c$.doLogLevel = Clazz_defineMethod(c$, "doLogLevel", +function(log){ +JU.Logger._logLevel = log; +}, "~B"); +c$.debug = Clazz_defineMethod(c$, "debug", +function(txt){ +if (!JU.Logger.debugging) return; +try { +JU.Logger._logger.debug(txt); +} catch (t) { +} +}, "~S"); +c$.info = Clazz_defineMethod(c$, "info", +function(txt){ +try { +if (JU.Logger.isActiveLevel(4)) { +JU.Logger._logger.info(txt); +}} catch (t) { +} +}, "~S"); +c$.warn = Clazz_defineMethod(c$, "warn", +function(txt){ +try { +if (JU.Logger.isActiveLevel(3)) { +JU.Logger._logger.warn(txt); +}} catch (t) { +} +}, "~S"); +c$.warnEx = Clazz_defineMethod(c$, "warnEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(3)) { +JU.Logger._logger.warnEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.error = Clazz_defineMethod(c$, "error", +function(txt){ +try { +if (JU.Logger.isActiveLevel(2)) { +JU.Logger._logger.error(txt); +}} catch (t) { +} +}, "~S"); +c$.errorEx = Clazz_defineMethod(c$, "errorEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(2)) { +JU.Logger._logger.errorEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.getLogLevel = Clazz_defineMethod(c$, "getLogLevel", +function(){ +for (var i = 7; --i >= 0; ) if (JU.Logger.isActiveLevel(i)) return i; + +return 0; +}); +c$.fatal = Clazz_defineMethod(c$, "fatal", +function(txt){ +try { +if (JU.Logger.isActiveLevel(1)) { +JU.Logger._logger.fatal(txt); +}} catch (t) { +} +}, "~S"); +c$.fatalEx = Clazz_defineMethod(c$, "fatalEx", +function(txt, e){ +try { +if (JU.Logger.isActiveLevel(1)) { +JU.Logger._logger.fatalEx(txt, e); +}} catch (t) { +} +}, "~S,Throwable"); +c$.startTimer = Clazz_defineMethod(c$, "startTimer", +function(msg){ +if (msg != null) JU.Logger.htTiming.put(msg, Long.$valueOf(System.currentTimeMillis())); +}, "~S"); +c$.getTimerMsg = Clazz_defineMethod(c$, "getTimerMsg", +function(msg, time){ +if (time == 0) time = JU.Logger.getTimeFrom(msg); +return "Time for " + msg + ": " + (time) + " ms"; +}, "~S,~N"); +c$.getTimeFrom = Clazz_defineMethod(c$, "getTimeFrom", +function(msg){ +var t; +return (msg == null || (t = JU.Logger.htTiming.get(msg)) == null ? -1 : System.currentTimeMillis() - t.longValue()); +}, "~S"); +c$.checkTimer = Clazz_defineMethod(c$, "checkTimer", +function(msg, andReset){ +var time = JU.Logger.getTimeFrom(msg); +if (time >= 0 && !msg.startsWith("(")) JU.Logger.info(JU.Logger.getTimerMsg(msg, time)); +if (andReset) JU.Logger.startTimer(msg); +return time; +}, "~S,~B"); +c$.checkMemory = Clazz_defineMethod(c$, "checkMemory", +function(){ +var bTotal = 0; +var bFree = 0; +var bMax = 0; +{ +}JU.Logger.info("Memory: Total-Free=" + (bTotal - bFree) + "; Total=" + bTotal + "; Free=" + bFree + "; Max=" + bMax); +}); +c$._logger = new JU.DefaultLogger(); +c$._activeLevels = Clazz_newBooleanArray(7, false); +c$._logLevel = false; +c$.debugging = false; +c$.debuggingHigh = false; +{ +JU.Logger._activeLevels[6] = JU.Logger.getProperty("debugHigh", false); +JU.Logger._activeLevels[5] = JU.Logger.getProperty("debug", false); +JU.Logger._activeLevels[4] = JU.Logger.getProperty("info", true); +JU.Logger._activeLevels[3] = JU.Logger.getProperty("warn", true); +JU.Logger._activeLevels[2] = JU.Logger.getProperty("error", true); +JU.Logger._activeLevels[1] = JU.Logger.getProperty("fatal", true); +JU.Logger._logLevel = JU.Logger.getProperty("logLevel", false); +JU.Logger.debugging = (JU.Logger._logger != null && (JU.Logger._activeLevels[5] || JU.Logger._activeLevels[6])); +JU.Logger.debuggingHigh = (JU.Logger.debugging && JU.Logger._activeLevels[6]); +}c$.htTiming = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "LoggerInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolJDXMOLParser"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolJDXMOLReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jsv"); +Clazz_load(["J.api.JmolJDXMOLParser"], "J.jsv.JDXMOLParser", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "$.SB", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.line = null; +this.lastModel = ""; +this.thisModelID = null; +this.baseModel = null; +this.vibScale = 0; +this.piUnitsX = null; +this.piUnitsY = null; +this.loader = null; +this.modelIdList = ""; +this.peakIndex = null; +this.peakFilePath = null; +Clazz_instantialize(this, arguments);}, J.jsv, "JDXMOLParser", null, J.api.JmolJDXMOLParser); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "set", +function(loader, filePath, htParams){ +this.loader = loader; +this.peakFilePath = filePath; +this.peakIndex = Clazz_newIntArray (1, 0); +if (htParams != null) { +htParams.remove("modelNumber"); +if (htParams.containsKey("zipSet")) { +this.peakIndex = htParams.get("peakIndex"); +if (this.peakIndex == null) { +this.peakIndex = Clazz_newIntArray (1, 0); +htParams.put("peakIndex", this.peakIndex); +}if (!htParams.containsKey("subFileName")) this.peakFilePath = JU.PT.split(filePath, "|")[0]; +}}return this; +}, "J.api.JmolJDXMOLReader,~S,java.util.Map"); +Clazz_overrideMethod(c$, "getAttribute", +function(line, tag){ +var attr = JU.PT.getQuotedAttribute(line, tag); +return (attr == null ? "" : attr); +}, "~S,~S"); +Clazz_overrideMethod(c$, "getRecord", +function(key){ +if (this.line == null || this.line.indexOf(key) < 0) return null; +var s = this.line; +while (s.indexOf(">") < 0) s += " " + this.readLine(); + +return this.line = s; +}, "~S"); +Clazz_overrideMethod(c$, "readModels", +function(){ +if (!this.findRecord("Models")) return false; +this.line = ""; +this.thisModelID = ""; +var isFirst = true; +while (true) { +this.line = this.loader.discardLinesUntilNonBlank(); +if (this.getRecord("") < 0) s += " " + this.readLine(); + +s = s.trim(); +}s = JU.PT.replaceAllCharacters(s, "()<>", " ").trim(); +if (s.length == 0) break; +var pt = s.indexOf("'"); +if (pt >= 0) { +var pt2 = s.indexOf("'", pt + 1); +s = s.substring(0, pt) + JU.PT.rep(s.substring(pt + 1, pt2), ",", ";") + s.substring(pt2 + 1); +}JU.Logger.info("Peak Assignment: " + s); +var tokens = JU.PT.split(s, ","); +list.addLast(tokens); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Error reading peak assignments at " + this.line + ": " + e); +} else { +throw e; +} +} +return list; +}, "~N,~B"); +Clazz_overrideMethod(c$, "setACDAssignments", +function(model, mytype, peakCount, acdlist, molFile){ +try { +if (peakCount >= 0) this.peakIndex = Clazz_newIntArray(-1, [peakCount]); +var isMS = (mytype.indexOf("MASS") == 0); +var file = " file=" + JU.PT.esc(this.peakFilePath.$replace('\\', '/')); +model = " model=" + JU.PT.esc(model + " (assigned)"); +this.piUnitsX = ""; +this.piUnitsY = ""; +var dx = this.getACDPeakWidth(mytype) / 2; +var htSets = new java.util.Hashtable(); +var list = new JU.Lst(); +var zzcMap = null; +var ptx; +var pta; +var nAtoms = 0; +if (isMS) { +zzcMap = new java.util.Hashtable(); +var tokens = JU.PT.split(molFile, "M ZZC"); +for (var i = tokens.length; --i >= 1; ) { +var ab = JU.PT.getTokens(tokens[i]); +nAtoms = Math.max(nAtoms, JU.PT.parseInt(ab[0])); +zzcMap.put(ab[1], ab[0]); +} +ptx = 4; +pta = 0; +} else if (mytype.indexOf("NMR") >= 0) { +ptx = 0; +pta = 3; +} else { +ptx = 0; +pta = 2; +}var nPeaks = acdlist.size(); +for (var i = 0; i < nPeaks; i++) { +var data = acdlist.get(i); +var x = JU.PT.parseFloat(data[ptx]); +var a = data[pta]; +if (isMS) a = this.fixACDAtomList(a, zzcMap, nAtoms); + else a = a.$replace(';', ','); +if (a.indexOf("select") >= 0) { +var pt = a.indexOf("select atomno="); +if (pt < 0) continue; +a = JU.PT.split(a.substring(pt + 14), " ")[0]; +}var title = (isMS ? "m/z=" + Math.round(x) + ": " + data[2] + " (" + data[1] + ")" : pta == 2 ? "" + (Math.round(x * 10) / 10) : null); +this.getStringInfo(file, title, mytype, model, a, htSets, "" + x, list, " atoms=\"%ATOMS%\" xMin=\"" + (x - dx) + "\" xMax=\"" + (x + dx) + "\">"); +} +return this.setPeakData(list, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return 0; +} else { +throw e; +} +} +}, "~S,~S,~N,JU.Lst,~S"); +Clazz_defineMethod(c$, "fixACDAtomList", +function(atoms, zzcMap, nAtoms){ +atoms = atoms.trim(); +var tokens = JU.PT.getTokens(atoms.$replace(';', ' ')); +var bs = new JU.BS(); +var isM = false; +for (var i = 0; i < tokens.length; i++) { +var a = tokens[i]; +isM = (a.indexOf("M") >= 0); +if (isM) a = "1-" + nAtoms; +var pt = a.indexOf('-'); +if (pt >= 0) { +var i1 = JU.PT.parseInt(a.substring(0, pt)); +var i2 = JU.PT.parseInt(a.substring(pt + 1)) + 1; +for (var k = i1; k < i2; k++) bs.set(isM ? k : JU.PT.parseInt(zzcMap.get("" + k))); + +} else { +bs.set(JU.PT.parseInt(zzcMap.get(a))); +}} +var s = bs.toJSON(); +return s.substring(1, s.length - 1); +}, "~S,java.util.Map,~N"); +Clazz_defineMethod(c$, "getACDPeakWidth", +function(type){ +return (type.indexOf("HNMR") >= 0 ? 0.05 : type.indexOf("CNMR") >= 0 ? 1 : type.indexOf("MASS") >= 0 ? 1 : 10); +}, "~S"); +Clazz_overrideMethod(c$, "readPeaks", +function(isSignals, peakCount){ +try { +if (peakCount >= 0) this.peakIndex = Clazz_newIntArray(-1, [peakCount]); +var offset = (isSignals ? 1 : 0); +var tag1 = (isSignals ? "Signals" : "Peaks"); +var tag2 = (isSignals ? "= 0; j = bs.nextSetBit(j + 1)) s += "," + (j + offset); + +var na = bs.cardinality(); +nH += na; +info = JU.PT.rep(info, "%ATOMS%", s.substring(1)); +info = JU.PT.rep(info, "%S%", (na == 1 ? "" : "s")); +info = JU.PT.rep(info, "%NATOMS%", "" + na); +}JU.Logger.info("adding PeakData " + info); +this.loader.addPeakData(info); +} +this.loader.setSpectrumPeaks(nH, this.piUnitsX, this.piUnitsY); +return n; +}, "JU.Lst,~N"); +Clazz_defineMethod(c$, "getStringInfo", +function(file, title, mytype, model, atoms, htSets, key, list, more){ +if ("HNMR".equals(mytype)) mytype = "1HNMR"; + else if ("CNMR".equals(mytype)) mytype = "13CNMR"; +var type = (mytype == null ? "" : " type=" + JU.PT.esc(mytype)); +if (title == null) title = ("1HNMR".equals(mytype) ? "atom%S%: %ATOMS%; integration: %NATOMS%" : ""); +title = " title=" + JU.PT.esc(title); +var stringInfo = "= 0) { +this.line = this.loader.discardLinesUntilContains(""); +return; +}this.modelIdList += key; +this.baseModel = this.getAttribute(this.line, "baseModel"); +while (this.line.indexOf(">") < 0 && this.line.indexOf("type") < 0) this.readLine(); + +var modelType = this.getAttribute(this.line, "type").toLowerCase(); +this.vibScale = JU.PT.parseFloat(this.getAttribute(this.line, "vibrationScale")); +if (modelType.equals("xyzvib")) modelType = "xyz"; + else if (modelType.length == 0) modelType = null; +var sb = new JU.SB(); +while (this.readLine() != null && !this.line.contains("")) sb.append(this.line).appendC('\n'); + +this.loader.processModelData(sb.toString(), this.thisModelID, modelType, this.baseModel, this.lastModel, NaN, this.vibScale, isFirst); +}, "~B"); +Clazz_defineMethod(c$, "findRecord", +function(tag){ +if (this.line == null) this.readLine(); +if (this.line != null && this.line.indexOf("<" + tag) < 0) this.line = this.loader.discardLinesUntilContains2("<" + tag, "##"); +return (this.line != null && this.line.indexOf("<" + tag) >= 0); +}, "~S"); +Clazz_defineMethod(c$, "readLine", +function(){ +return this.line = this.loader.rd(); +}); +Clazz_overrideMethod(c$, "setLine", +function(s){ +this.line = s; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "AnnotationData"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "AppletFrame"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVAppInterface", JSV.api.JSVAppletInterface); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVAppletInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVFileHelper"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVMainPanel", JSV.api.JSVViewPanel); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVPanel", JSV.api.JSVViewPanel); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVTree"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVTreeNode"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVTreePath"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVViewPanel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVZipReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "PanelListener"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "ScriptInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.app"); +Clazz_load(["JSV.api.JSVAppInterface", "$.PanelListener", "$.ScriptInterface"], "JSV.app.JSVApp", ["JU.Lst", "$.PT", "JSV.common.Coordinate", "$.JSVFileManager", "$.JSVersion", "$.JSViewer", "$.ScriptToken", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.appletFrame = null; +this.isNewWindow = false; +this.appletReadyCallbackFunctionName = null; +this.coordCallbackFunctionName = null; +this.loadFileCallbackFunctionName = null; +this.peakCallbackFunctionName = null; +this.syncCallbackFunctionName = null; +this.vwr = null; +this.prevPanel = null; +Clazz_instantialize(this, arguments);}, JSV.app, "JSVApp", null, [JSV.api.PanelListener, JSV.api.JSVAppInterface, JSV.api.ScriptInterface]); +Clazz_makeConstructor(c$, +function(appletFrame, isJS){ +this.appletFrame = appletFrame; +this.initViewer(isJS); +this.initParams(appletFrame.getParameter("script")); +}, "JSV.api.AppletFrame,~B"); +Clazz_defineMethod(c$, "initViewer", +function(isJS){ +this.vwr = new JSV.common.JSViewer(this, true, isJS); +this.appletFrame.setDropTargetListener(this.isSigned(), this.vwr); +var path = this.appletFrame.getDocumentBase(); +JSV.common.JSVFileManager.setDocumentBase(this.vwr, path); +}, "~B"); +Clazz_overrideMethod(c$, "isPro", +function(){ +return this.isSigned(); +}); +Clazz_overrideMethod(c$, "isSigned", +function(){ +{ +return true; +}}); +Clazz_defineMethod(c$, "getAppletFrame", +function(){ +return this.appletFrame; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +try { +this.vwr.dispose(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "getPropertyAsJavaObject", +function(key){ +return this.vwr.getPropertyAsJavaObject(key); +}, "~S"); +Clazz_overrideMethod(c$, "getPropertyAsJSON", +function(key){ +return JU.PT.toJSON(null, this.getPropertyAsJavaObject(key)); +}, "~S"); +Clazz_overrideMethod(c$, "getCoordinate", +function(){ +return this.vwr.getCoordinate(); +}); +Clazz_overrideMethod(c$, "loadInline", +function(data){ +this.siOpenDataOrFile(data, "[inline]", null, null, -1, -1, true, null, null); +this.appletFrame.validateContent(3); +}, "~S"); +Clazz_overrideMethod(c$, "exportSpectrum", +function(type, n){ +return this.vwr.$export(type, n); +}, "~S,~N"); +Clazz_overrideMethod(c$, "setFilePath", +function(tmpFilePath){ +this.runScript("load " + JU.PT.esc(tmpFilePath)); +}, "~S"); +Clazz_overrideMethod(c$, "setSpectrumNumber", +function(n){ +this.runScript(JSV.common.ScriptToken.SPECTRUMNUMBER + " " + n); +}, "~N"); +Clazz_overrideMethod(c$, "reversePlot", +function(){ +this.toggle(JSV.common.ScriptToken.REVERSEPLOT); +}); +Clazz_overrideMethod(c$, "toggleGrid", +function(){ +this.toggle(JSV.common.ScriptToken.GRIDON); +}); +Clazz_overrideMethod(c$, "toggleCoordinate", +function(){ +this.toggle(JSV.common.ScriptToken.COORDINATESON); +}); +Clazz_overrideMethod(c$, "togglePointsOnly", +function(){ +this.toggle(JSV.common.ScriptToken.POINTSONLY); +}); +Clazz_overrideMethod(c$, "toggleIntegration", +function(){ +this.toggle(JSV.common.ScriptToken.INTEGRATE); +}); +Clazz_defineMethod(c$, "toggle", +function(st){ +if (this.vwr.selectedPanel != null) this.runScript(st + " TOGGLE"); +}, "JSV.common.ScriptToken"); +Clazz_overrideMethod(c$, "addHighlight", +function(x1, x2, r, g, b, a){ +this.runScript("HIGHLIGHT " + x1 + " " + x2 + " " + r + " " + g + " " + b + " " + a); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "removeHighlight", +function(x1, x2){ +this.runScript("HIGHLIGHT " + x1 + " " + x2 + " OFF"); +}, "~N,~N"); +Clazz_overrideMethod(c$, "removeAllHighlights", +function(){ +this.runScript("HIGHLIGHT OFF"); +}); +Clazz_overrideMethod(c$, "syncScript", +function(peakScript){ +this.vwr.syncScript(peakScript); +}, "~S"); +Clazz_overrideMethod(c$, "writeStatus", +function(msg){ +JU.Logger.info(msg); +}, "~S"); +Clazz_defineMethod(c$, "initParams", +function(params){ +this.vwr.parseInitScript(params); +this.newAppletPanel(); +this.vwr.setPopupMenu(this.vwr.allowMenu, this.vwr.parameters.getBoolean(JSV.common.ScriptToken.ENABLEZOOM)); +if (this.vwr.allowMenu) { +this.vwr.closeSource(null); +}this.runScriptNow(params); +}, "~S"); +Clazz_defineMethod(c$, "newAppletPanel", +function(){ +JU.Logger.info("newAppletPanel"); +this.appletFrame.createMainPanel(this.vwr); +}); +Clazz_overrideMethod(c$, "repaint", +function(){ +var applet = (this.vwr == null ? null : this.vwr.html5Applet); +if (JSV.common.JSViewer.jmolObject == null) { +this.appletFrame.repaint(); +} else if (applet != null) { +JSV.common.JSViewer.jmolObject.repaint(applet, true); +}}); +Clazz_defineMethod(c$, "updateJS", +function(width, height){ +}, "~N,~N"); +Clazz_overrideMethod(c$, "runScriptNow", +function(params){ +return this.vwr.runScriptNow(params); +}, "~S"); +Clazz_defineMethod(c$, "checkCallbacks", +function(){ +if (this.coordCallbackFunctionName == null && this.peakCallbackFunctionName == null) return; +var coord = new JSV.common.Coordinate(); +var actualCoord = (this.peakCallbackFunctionName == null ? null : new JSV.common.Coordinate()); +if (!this.vwr.pd().getPickedCoordinates(coord, actualCoord)) return; +var iSpec = this.vwr.mainPanel.getCurrentPanelIndex(); +if (actualCoord == null) this.appletFrame.callToJavaScript(this.coordCallbackFunctionName, Clazz_newArray(-1, [Double.$valueOf(coord.getXVal()), Double.$valueOf(coord.getYVal()), Integer.$valueOf(iSpec + 1)])); + else this.appletFrame.callToJavaScript(this.peakCallbackFunctionName, Clazz_newArray(-1, [Double.$valueOf(coord.getXVal()), Double.$valueOf(coord.getYVal()), Double.$valueOf(actualCoord.getXVal()), Double.$valueOf(actualCoord.getYVal()), Integer.$valueOf(iSpec + 1)])); +}); +Clazz_defineMethod(c$, "doAdvanced", +function(filePath){ +}, "~S"); +Clazz_overrideMethod(c$, "panelEvent", +function(eventObj){ +if (Clazz_instanceOf(eventObj,"JSV.common.PeakPickEvent")) { +this.vwr.processPeakPickEvent(eventObj, false); +} else if (Clazz_instanceOf(eventObj,"JSV.common.ZoomEvent")) { +} else if (Clazz_instanceOf(eventObj,"JSV.common.SubSpecChangeEvent")) { +}}, "~O"); +Clazz_overrideMethod(c$, "getSolnColour", +function(){ +return this.vwr.getSolutionColorStr(true); +}); +Clazz_defineMethod(c$, "updateJSView", +function(msg){ +var applet = this.vwr.html5Applet; +var panel = (applet == null ? null : this.vwr.selectedPanel); +{ +applet && applet._viewSet != null && applet._updateView(panel, msg); +}applet._updateView(panel, msg); +}, "~S"); +Clazz_overrideMethod(c$, "syncToJmol", +function(msg){ +this.updateJSView(msg); +if (this.syncCallbackFunctionName == null) return; +JU.Logger.info("JSVApp.syncToJmol JSV>Jmol " + msg); +this.appletFrame.callToJavaScript(this.syncCallbackFunctionName, Clazz_newArray(-1, [this.vwr.fullName, msg])); +}, "~S"); +Clazz_overrideMethod(c$, "setVisible", +function(b){ +this.appletFrame.setPanelVisible(b); +}, "~B"); +Clazz_overrideMethod(c$, "setCursor", +function(id){ +this.vwr.apiPlatform.setCursor(id, this.appletFrame); +}, "~N"); +Clazz_overrideMethod(c$, "runScript", +function(script){ +this.vwr.runScript(script); +}, "~S"); +Clazz_overrideMethod(c$, "getScriptQueue", +function(){ +return this.vwr.scriptQueue; +}); +Clazz_overrideMethod(c$, "siSetCurrentSource", +function(source){ +this.vwr.currentSource = source; +}, "JSV.source.JDXSource"); +Clazz_overrideMethod(c$, "siSendPanelChange", +function(){ +if (this.vwr.selectedPanel === this.prevPanel) return; +this.prevPanel = this.vwr.selectedPanel; +this.vwr.sendPanelChange(); +}); +Clazz_overrideMethod(c$, "siNewWindow", +function(isSelected, fromFrame){ +this.isNewWindow = isSelected; +if (fromFrame) { +if (this.vwr.jsvpPopupMenu != null) this.vwr.jsvpPopupMenu.setSelected("Window", false); +} else { +this.appletFrame.newWindow(isSelected); +}}, "~B,~B"); +Clazz_overrideMethod(c$, "siValidateAndRepaint", +function(isAll){ +var pd = this.vwr.pd(); +if (pd != null) pd.setTaintedAll(); +this.appletFrame.validate(); +this.repaint(); +}, "~B"); +Clazz_overrideMethod(c$, "siSyncLoad", +function(filePath){ +this.newAppletPanel(); +JU.Logger.info("JSVP syncLoad reading " + filePath); +this.siOpenDataOrFile(null, null, null, filePath, -1, -1, false, null, null); +this.appletFrame.validateContent(3); +}, "~S"); +Clazz_overrideMethod(c$, "siOpenDataOrFile", +function(data, name, specs, url, firstSpec, lastSpec, isAppend, script, id){ +switch (this.vwr.openDataOrFile(data, name, specs, url, firstSpec, lastSpec, isAppend, id)) { +case 0: +if (script != null) this.runScript(script); +break; +case -1: +return; +default: +this.siSetSelectedPanel(null); +return; +} +JU.Logger.info(this.appletFrame.getAppletInfo() + " File " + this.vwr.currentSource.getFilePath() + " Loaded Successfully"); +}, "~O,~S,JU.Lst,~S,~N,~N,~B,~S,~S"); +Clazz_overrideMethod(c$, "siProcessCommand", +function(scriptItem){ +this.vwr.runScriptNow(scriptItem); +}, "~S"); +Clazz_overrideMethod(c$, "siSetSelectedPanel", +function(jsvp){ +this.vwr.mainPanel.setSelectedPanel(this.vwr, jsvp, this.vwr.panelNodes); +this.vwr.selectedPanel = jsvp; +this.vwr.spectraTree.setSelectedPanel(this, jsvp); +if (jsvp == null) { +this.vwr.selectedPanel = jsvp = this.appletFrame.getJSVPanel(this.vwr, null); +this.vwr.mainPanel.setSelectedPanel(this.vwr, jsvp, null); +}this.appletFrame.validate(); +if (jsvp != null) { +jsvp.setEnabled(true); +jsvp.setFocusable(true); +}}, "JSV.api.JSVPanel"); +Clazz_overrideMethod(c$, "siExecSetCallback", +function(st, value){ +switch (st) { +case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME: +this.appletReadyCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +this.loadFileCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +this.peakCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +this.syncCallbackFunctionName = value; +break; +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +this.coordCallbackFunctionName = value; +break; +} +}, "JSV.common.ScriptToken,~S"); +Clazz_overrideMethod(c$, "siLoaded", +function(value){ +if (this.loadFileCallbackFunctionName != null) this.appletFrame.callToJavaScript(this.loadFileCallbackFunctionName, Clazz_newArray(-1, [this.vwr.appletName, value])); +this.updateJSView(null); +return null; +}, "~S"); +Clazz_overrideMethod(c$, "siExecHidden", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "siExecScriptComplete", +function(msg, isOK){ +if (!isOK) this.vwr.showMessage(msg); +this.siValidateAndRepaint(false); +}, "~S,~B"); +Clazz_overrideMethod(c$, "siUpdateBoolean", +function(st, TF){ +}, "JSV.common.ScriptToken,~B"); +Clazz_overrideMethod(c$, "siCheckCallbacks", +function(title){ +this.checkCallbacks(); +}, "~S"); +Clazz_overrideMethod(c$, "siNodeSet", +function(panelNode){ +this.appletFrame.validateContent(2); +this.siValidateAndRepaint(false); +}, "JSV.common.PanelNode"); +Clazz_overrideMethod(c$, "siSourceClosed", +function(source){ +}, "JSV.source.JDXSource"); +Clazz_overrideMethod(c$, "siGetNewJSVPanel", +function(spec){ +if (spec == null) { +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +return null; +}var specs = new JU.Lst(); +specs.addLast(spec); +var jsvp = this.appletFrame.getJSVPanel(this.vwr, specs); +jsvp.getPanelData().addListener(this); +this.vwr.parameters.setFor(jsvp, null, true); +return jsvp; +}, "JSV.common.Spectrum"); +Clazz_overrideMethod(c$, "siGetNewJSVPanel2", +function(specs){ +if (specs == null) { +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +return this.appletFrame.getJSVPanel(this.vwr, null); +}var jsvp = this.appletFrame.getJSVPanel(this.vwr, specs); +this.vwr.initialEndIndex = this.vwr.initialStartIndex = -1; +jsvp.getPanelData().addListener(this); +this.vwr.parameters.setFor(jsvp, null, true); +return jsvp; +}, "JU.Lst"); +Clazz_overrideMethod(c$, "siSetPropertiesFromPreferences", +function(jsvp, includeMeasures){ +this.vwr.checkAutoIntegrate(); +}, "JSV.api.JSVPanel,~B"); +Clazz_overrideMethod(c$, "siSetLoaded", +function(fileName, filePath){ +}, "~S,~S"); +Clazz_overrideMethod(c$, "siSetMenuEnables", +function(node, isSplit){ +}, "JSV.common.PanelNode,~B"); +Clazz_overrideMethod(c$, "siUpdateRecentMenus", +function(filePath){ +}, "~S"); +Clazz_overrideMethod(c$, "siExecTest", +function(value){ +var data = ""; +this.loadInline(data); +}, "~S"); +Clazz_overrideMethod(c$, "print", +function(fileName){ +return this.vwr.print(fileName); +}, "~S"); +Clazz_overrideMethod(c$, "checkScript", +function(script){ +return this.vwr.checkScript(script); +}, "~S"); +c$.getAppletInfo = Clazz_defineMethod(c$, "getAppletInfo", +function(){ +return "JSpecView Applet " + JSV.common.JSVersion.VERSION + "\n\n" + "Authors:\nProf. Robert M. Hanson,\nD. Facey, K. Bryan, C. Walters, Prof. Robert J. Lancashire and\nvolunteer developers through sourceforge."; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.app"); +Clazz_load(["J.api.GenericMouseInterface"], "JSV.app.GenericMouse", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pd = null; +this.jsvp = null; +this.xWhenPressed = 0; +this.yWhenPressed = 0; +this.modifiersWhenPressed10 = 0; +this.isMouseDown = false; +this.disposed = false; +Clazz_instantialize(this, arguments);}, JSV.app, "GenericMouse", null, J.api.GenericMouseInterface); +Clazz_makeConstructor(c$, +function(jsvp){ +this.jsvp = jsvp; +this.pd = jsvp.getPanelData(); +}, "JSV.api.JSVPanel"); +Clazz_overrideMethod(c$, "clear", +function(){ +}); +Clazz_overrideMethod(c$, "processEvent", +function(id, x, y, modifiers, time){ +if (this.pd == null) { +if (!this.disposed && id == 501 && (modifiers & 4) != 0) this.jsvp.showMenu(x, y); +return true; +}if (id != 507) modifiers = JSV.app.GenericMouse.applyLeftMouse(modifiers); +switch (id) { +case 507: +this.wheeled(time, x, modifiers | 32); +break; +case 501: +this.xWhenPressed = x; +this.yWhenPressed = y; +this.modifiersWhenPressed10 = modifiers; +this.pressed(time, x, y, modifiers, false); +break; +case 506: +this.dragged(time, x, y, modifiers); +break; +case 504: +this.entered(time, x, y); +break; +case 505: +this.exited(time, x, y); +break; +case 503: +this.moved(time, x, y, modifiers); +break; +case 502: +this.released(time, x, y, modifiers); +if (x == this.xWhenPressed && y == this.yWhenPressed && modifiers == this.modifiersWhenPressed10) { +this.clicked(time, x, y, modifiers, 1); +}break; +default: +return false; +} +return true; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "mouseEntered", +function(e){ +this.entered(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseExited", +function(e){ +this.exited(e.getWhen(), e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseMoved", +function(e){ +this.moved(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mousePressed", +function(e){ +this.pressed(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.isPopupTrigger()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseDragged", +function(e){ +var modifiers = e.getModifiers(); +if ((modifiers & 28) == 0) modifiers |= 16; +this.dragged(e.getWhen(), e.getX(), e.getY(), modifiers); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseReleased", +function(e){ +this.released(e.getWhen(), e.getX(), e.getY(), e.getModifiers()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseClicked", +function(e){ +this.clicked(e.getWhen(), e.getX(), e.getY(), e.getModifiers(), e.getClickCount()); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseWheelMoved", +function(e){ +e.consume(); +this.wheeled(e.getWhen(), e.getWheelRotation(), e.getModifiers() | 32); +}, "java.awt.event.MouseWheelEvent"); +Clazz_defineMethod(c$, "keyTyped", +function(ke){ +if (this.pd == null) return; +var ch = ke.getKeyChar(); +var modifiers = ke.getModifiers(); +if (JU.Logger.debuggingHigh || true) JU.Logger.info("MouseManager keyTyped: " + ch + " " + (0 + ch.charCodeAt(0)) + " " + modifiers); +if (this.pd.keyTyped(ch.charCodeAt(0), modifiers)) ke.consume(); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "keyPressed", +function(ke){ +if (this.pd != null && this.pd.keyPressed(ke.getKeyCode(), ke.getModifiers())) ke.consume(); +}, "java.awt.event.KeyEvent"); +Clazz_defineMethod(c$, "keyReleased", +function(ke){ +if (this.pd != null) this.pd.keyReleased(ke.getKeyCode()); +}, "java.awt.event.KeyEvent"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +var e = event; +switch (e.getID()) { +case 401: +this.keyPressed(e); +break; +case 402: +this.keyReleased(e); +break; +case 400: +this.keyTyped(e); +break; +} +}, "~O"); +Clazz_defineMethod(c$, "entered", +function(time, x, y){ +if (this.pd != null) this.pd.mouseEnterExit(time, x, y, false); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "exited", +function(time, x, y){ +if (this.pd != null) this.pd.mouseEnterExit(time, x, y, true); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "clicked", +function(time, x, y, modifiers, clickCount){ +if (this.pd != null) this.pd.mouseAction(2, time, x, y, 1, modifiers); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "moved", +function(time, x, y, modifiers){ +if (this.pd == null) return; +if (this.isMouseDown) this.pd.mouseAction(1, time, x, y, 0, JSV.app.GenericMouse.applyLeftMouse(modifiers)); + else this.pd.mouseAction(0, time, x, y, 0, modifiers & -29); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "wheeled", +function(time, rotation, modifiers){ +if (this.pd != null) this.pd.mouseAction(3, time, 0, rotation, 0, modifiers); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "pressed", +function(time, x, y, modifiers, isPopupTrigger){ +if (this.pd == null) { +if (!this.disposed) this.jsvp.showMenu(x, y); +return; +}this.isMouseDown = true; +this.pd.mouseAction(4, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "released", +function(time, x, y, modifiers){ +if (this.pd == null) return; +this.isMouseDown = false; +this.pd.mouseAction(5, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "dragged", +function(time, x, y, modifiers){ +if (this.pd == null) return; +if ((modifiers & 20) == 20) modifiers = modifiers & -5 | 2; +this.pd.mouseAction(1, time, x, y, 0, modifiers); +}, "~N,~N,~N,~N"); +c$.applyLeftMouse = Clazz_defineMethod(c$, "applyLeftMouse", +function(modifiers){ +return ((modifiers & 28) == 0) ? (modifiers | 16) : modifiers; +}, "~N"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +}, "~A"); +Clazz_overrideMethod(c$, "dispose", +function(){ +this.pd = null; +this.jsvp = null; +this.disposed = true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.appletjs"); +Clazz_load(["javajs.api.JSInterface", "JSV.api.AppletFrame", "$.JSVAppletInterface"], "JSV.appletjs.JSVApplet", ["java.net.URL", "java.util.Hashtable", "JU.PT", "JSV.app.JSVApp", "JSV.js2d.JsMainPanel", "$.JsPanel", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.app = null; +this.viewer = null; +this.isStandalone = false; +this.viewerOptions = null; +this.htParams = null; +Clazz_instantialize(this, arguments);}, JSV.appletjs, "JSVApplet", null, [JSV.api.JSVAppletInterface, JSV.api.AppletFrame, javajs.api.JSInterface]); +Clazz_makeConstructor(c$, +function(viewerOptions){ +if (viewerOptions == null) viewerOptions = new java.util.Hashtable(); +this.viewerOptions = viewerOptions; +this.htParams = new java.util.Hashtable(); +for (var entry, $entry = viewerOptions.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.htParams.put(entry.getKey().toLowerCase(), entry.getValue()); + +this.init(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "init", +function(){ +this.app = new JSV.app.JSVApp(this, true); +this.initViewer(); +if (this.app.appletReadyCallbackFunctionName != null && this.viewer.fullName != null) this.callToJavaScript(this.app.appletReadyCallbackFunctionName, Clazz_newArray(-1, [this.viewer.appletName, this.viewer.fullName, Boolean.TRUE, this])); +}); +Clazz_defineMethod(c$, "initViewer", +function(){ +this.viewer = this.app.vwr; +this.setLogging(); +this.viewerOptions.remove("debug"); +var o = this.viewerOptions.get("display"); +{ +o = document.getElementById(o); +}this.viewer.setDisplay(o); +JU.Logger.info(this.getAppletInfo()); +}); +Clazz_defineMethod(c$, "setLogging", +function(){ +var iLevel = ((this.getValue("logLevel", (this.getBooleanValue("debug", false) ? "5" : "4"))).charAt(0)).charCodeAt(0) - 48; +if (iLevel != 4) System.out.println("setting logLevel=" + iLevel + " -- To change, use script \"set logLevel [0-5]\""); +JU.Logger.setLogLevel(iLevel); +}); +Clazz_defineMethod(c$, "getParameter", +function(paramName){ +var o = this.htParams.get(paramName.toLowerCase()); +return (o == null ? null : o.toString()); +}, "~S"); +Clazz_defineMethod(c$, "getBooleanValue", +function(propertyName, defaultValue){ +var value = this.getValue(propertyName, defaultValue ? "true" : ""); +return (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("on") || value.equalsIgnoreCase("yes")); +}, "~S,~B"); +Clazz_defineMethod(c$, "getValue", +function(propertyName, defaultValue){ +var stringValue = this.getParameter(propertyName); +System.out.println("getValue " + propertyName + " = " + stringValue); +if (stringValue != null) return stringValue; +return defaultValue; +}, "~S,~S"); +Clazz_overrideMethod(c$, "isPro", +function(){ +return this.app.isPro(); +}); +Clazz_overrideMethod(c$, "isSigned", +function(){ +return this.app.isSigned(); +}); +Clazz_overrideMethod(c$, "destroy", +function(){ +this.app.dispose(); +this.app = null; +}); +Clazz_defineMethod(c$, "getParameter", +function(key, def){ +return this.isStandalone ? System.getProperty(key, def) : (this.getParameter(key) != null ? this.getParameter(key) : def); +}, "~S,~S"); +Clazz_overrideMethod(c$, "getAppletInfo", +function(){ +return JSV.app.JSVApp.getAppletInfo(); +}); +Clazz_overrideMethod(c$, "getSolnColour", +function(){ +return this.app.getSolnColour(); +}); +Clazz_overrideMethod(c$, "getCoordinate", +function(){ +return this.app.getCoordinate(); +}); +Clazz_overrideMethod(c$, "loadInline", +function(data){ +this.app.loadInline(data); +}, "~S"); +Clazz_defineMethod(c$, "$export", +function(type, n){ +return this.app.exportSpectrum(type, n); +}, "~S,~N"); +Clazz_overrideMethod(c$, "exportSpectrum", +function(type, n){ +return this.app.exportSpectrum(type, n); +}, "~S,~N"); +Clazz_overrideMethod(c$, "setFilePath", +function(tmpFilePath){ +this.app.setFilePath(tmpFilePath); +}, "~S"); +Clazz_overrideMethod(c$, "setSpectrumNumber", +function(i){ +this.app.setSpectrumNumber(i); +}, "~N"); +Clazz_overrideMethod(c$, "toggleGrid", +function(){ +this.app.toggleGrid(); +}); +Clazz_overrideMethod(c$, "toggleCoordinate", +function(){ +this.app.toggleCoordinate(); +}); +Clazz_overrideMethod(c$, "togglePointsOnly", +function(){ +this.app.togglePointsOnly(); +}); +Clazz_overrideMethod(c$, "toggleIntegration", +function(){ +this.app.toggleIntegration(); +}); +Clazz_overrideMethod(c$, "addHighlight", +function(x1, x2, r, g, b, a){ +this.app.addHighlight(x1, x2, r, g, b, a); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "removeAllHighlights", +function(){ +this.app.removeAllHighlights(); +}); +Clazz_overrideMethod(c$, "removeHighlight", +function(x1, x2){ +this.app.removeHighlight(x1, x2); +}, "~N,~N"); +Clazz_overrideMethod(c$, "reversePlot", +function(){ +this.app.reversePlot(); +}); +Clazz_defineMethod(c$, "script", +function(script){ +this.app.initParams(script); +}, "~S"); +Clazz_overrideMethod(c$, "runScript", +function(script){ +this.app.runScript(script); +}, "~S"); +Clazz_overrideMethod(c$, "syncScript", +function(peakScript){ +this.app.syncScript(peakScript); +}, "~S"); +Clazz_overrideMethod(c$, "writeStatus", +function(msg){ +this.app.writeStatus(msg); +}, "~S"); +Clazz_overrideMethod(c$, "getPropertyAsJavaObject", +function(key){ +return this.app.getPropertyAsJavaObject(key); +}, "~S"); +Clazz_overrideMethod(c$, "getPropertyAsJSON", +function(key){ +return this.app.getPropertyAsJSON(key); +}, "~S"); +Clazz_overrideMethod(c$, "runScriptNow", +function(script){ +return this.app.runScriptNow(script); +}, "~S"); +Clazz_overrideMethod(c$, "print", +function(fileName){ +return this.app.print(fileName); +}, "~S"); +Clazz_overrideMethod(c$, "setDropTargetListener", +function(isSigned, viewer){ +}, "~B,JSV.common.JSViewer"); +Clazz_overrideMethod(c$, "validateContent", +function(mode){ +}, "~N"); +Clazz_overrideMethod(c$, "createMainPanel", +function(viewer){ +viewer.mainPanel = new JSV.js2d.JsMainPanel(); +}, "JSV.common.JSViewer"); +Clazz_overrideMethod(c$, "newWindow", +function(isSelected){ +}, "~B"); +Clazz_overrideMethod(c$, "callToJavaScript", +function(callback, data){ +var tokens = JU.PT.split(callback, "."); +{ +try{ +var o = window[tokens[0]] +for (var i = 1; i < tokens.length; i++){ +o = o[tokens[i]] +} +return o(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9]); +} catch (e) { +System.out.println(callback + " failed " + e); +} +}}, "~S,~A"); +Clazz_overrideMethod(c$, "setPanelVisible", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "getJSVPanel", +function(viewer, specs){ +return (specs == null ? JSV.js2d.JsPanel.getEmptyPanel(viewer) : JSV.js2d.JsPanel.getPanelMany(viewer, specs)); +}, "JSV.common.JSViewer,JU.Lst"); +Clazz_overrideMethod(c$, "setVisible", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "getDocumentBase", +function(){ +try { +return new java.net.URL(Clazz_castNullAs("java.net.URL"), this.viewerOptions.get("documentBase"), null); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +return null; +} else { +throw e; +} +} +}); +Clazz_overrideMethod(c$, "repaint", +function(){ +}); +Clazz_overrideMethod(c$, "validate", +function(){ +}); +Clazz_overrideMethod(c$, "doExitJmol", +function(){ +}); +Clazz_overrideMethod(c$, "getApp", +function(){ +return this.app; +}); +Clazz_overrideMethod(c$, "setStatusDragDropped", +function(mode, x, y, fileName, retType){ +return true; +}, "~N,~N,~N,~S,~A"); +Clazz_overrideMethod(c$, "cacheFileByName", +function(fileName, isAdd){ +return 0; +}, "~S,~B"); +Clazz_overrideMethod(c$, "cachePut", +function(key, data){ +}, "~S,~O"); +Clazz_overrideMethod(c$, "getFullName", +function(){ +return this.app.vwr.fullName; +}); +Clazz_overrideMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.app.vwr.processMouseEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "setDisplay", +function(canvas){ +this.app.vwr.setDisplay(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "startHoverWatcher", +function(enable){ +}, "~B"); +Clazz_overrideMethod(c$, "update", +function(){ +this.app.vwr.updateJS(); +}); +Clazz_defineMethod(c$, "openFile", +function(fileName){ +this.app.vwr.openFile(fileName, true); +return null; +}, "~S"); +Clazz_overrideMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +this.app.vwr.openFileAsyncSpecial(fileName, flags); +}, "~S,~N"); +Clazz_overrideMethod(c$, "openFileAsyncSpecialType", +function(fileName, flags, type){ +this.openFileAsyncSpecial(fileName, flags); +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +this.app.vwr.processTwoPointGesture(touches); +}, "~A"); +Clazz_overrideMethod(c$, "setScreenDimension", +function(width, height){ +this.app.vwr.setScreenDimension(width, height); +}, "~N,~N"); +Clazz_overrideMethod(c$, "checkScript", +function(script){ +var s = this.app.checkScript(script); +if (s != null) System.out.println(s); +return s; +}, "~S"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +}, "~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum", "JSV.common.Coordinate"], "JSV.common.Annotation", ["JU.CU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.text = ""; +this.$isPixels = false; +this.is2D = false; +this.offsetX = 0; +this.offsetY = 0; +this.spec = null; +Clazz_instantialize(this, arguments);}, JSV.common, "Annotation", JSV.common.Coordinate); +Clazz_defineMethod(c$, "setA", +function(x, y, spec, text, isPixels, is2D, offsetX, offsetY){ +this.set(x, y); +this.spec = spec; +this.text = text; +this.$isPixels = isPixels; +this.is2D = is2D; +this.offsetX = offsetX; +this.offsetY = offsetY; +return this; +}, "~N,~N,JSV.common.Spectrum,~S,~B,~B,~N,~N"); +Clazz_defineMethod(c$, "setSpec", +function(spec){ +this.spec = spec; +return this; +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "addSpecShift", +function(dx){ +this.setXVal(this.getXVal() + dx); +}, "~N"); +Clazz_defineMethod(c$, "isPixels", +function(){ +return this.$isPixels; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getXVal() + ", " + this.getYVal() + "," + this.text + "]"; +}); +c$.getColoredAnnotation = Clazz_defineMethod(c$, "getColoredAnnotation", +function(g2d, spec, args, lastAnnotation){ +var arg; +var xPt = 0; +var yPt = 1; +var colorPt = 2; +var textPt = 3; +var nArgs = args.size(); +try { +switch (nArgs) { +default: +return null; +case 1: +arg = args.get(0); +xPt = yPt = -1; +if (arg.charAt(0) == '\"') { +textPt = 0; +colorPt = -1; +} else { +colorPt = 0; +textPt = -1; +}break; +case 2: +xPt = yPt = -1; +arg = args.get(0); +if (arg.charAt(0) == '\"') { +textPt = 0; +colorPt = 1; +} else { +colorPt = 0; +textPt = 1; +}break; +case 3: +case 4: +arg = args.get(2); +if (arg.charAt(0) == '\"') { +textPt = 2; +colorPt = (nArgs == 4 ? 3 : -1); +} else { +colorPt = 2; +textPt = (nArgs == 4 ? 3 : -1); +}arg = args.get(2); +if (arg.charAt(0) == '\"') { +textPt = 2; +colorPt = -1; +} else { +colorPt = 2; +textPt = -1; +}} +if (lastAnnotation == null && (xPt < 0 || yPt < 0 || textPt < 0 || colorPt < 0)) return null; +var x = (xPt < 0 ? lastAnnotation.getXVal() : Double.$valueOf(args.get(xPt)).doubleValue()); +var y = (yPt < 0 ? lastAnnotation.getYVal() : Double.$valueOf(args.get(yPt)).doubleValue()); +var color = (colorPt < 0 ? (lastAnnotation).getColor() : g2d.getColor1(JU.CU.getArgbFromString(args.get(colorPt)))); +var text; +if (textPt < 0) { +text = lastAnnotation.text; +} else { +text = args.get(textPt); +if (text.charAt(0) == '\"') text = text.substring(1, text.length - 1); +}return new JSV.common.ColoredAnnotation().setCA(x, y, spec, text, color, false, false, 0, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "J.api.GenericGraphics,JSV.common.Spectrum,JU.Lst,JSV.common.Annotation"); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.Annotation, "AType", Enum); +Clazz_defineEnumConstant(c$, "Integration", 0, []); +Clazz_defineEnumConstant(c$, "PeakList", 1, []); +Clazz_defineEnumConstant(c$, "Measurements", 2, []); +Clazz_defineEnumConstant(c$, "OverlayLegend", 3, []); +Clazz_defineEnumConstant(c$, "Views", 4, []); +Clazz_defineEnumConstant(c$, "NONE", 5, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Annotation"], "JSV.common.ColoredAnnotation", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.color = null; +Clazz_instantialize(this, arguments);}, JSV.common, "ColoredAnnotation", JSV.common.Annotation); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.common.ColoredAnnotation, []); +}); +Clazz_defineMethod(c$, "getColor", +function(){ +return this.color; +}); +Clazz_defineMethod(c$, "setCA", +function(x, y, spec, text, color, isPixels, is2D, offsetX, offsetY){ +this.setA(x, y, spec, text, isPixels, is2D, offsetX, offsetY); +this.color = color; +return this; +}, "~N,~N,JSV.common.Spectrum,~S,javajs.api.GenericColor,~B,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Parameters"], "JSV.common.ColorParameters", ["java.util.Hashtable", "$.StringTokenizer", "JU.CU", "$.Lst", "JSV.common.ScriptToken"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.titleFontName = null; +this.displayFontName = null; +this.elementColors = null; +this.plotColors = null; +this.isDefault = false; +Clazz_instantialize(this, arguments);}, JSV.common, "ColorParameters", JSV.common.Parameters); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.common.ColorParameters, []); +JSV.common.ColorParameters.BLACK = this.getColor3(0, 0, 0); +JSV.common.ColorParameters.RED = this.getColor3(255, 0, 0); +JSV.common.ColorParameters.LIGHT_GRAY = this.getColor3(200, 200, 200); +JSV.common.ColorParameters.DARK_GRAY = this.getColor3(80, 80, 80); +JSV.common.ColorParameters.BLUE = this.getColor3(0, 0, 255); +JSV.common.ColorParameters.WHITE = this.getColor3(255, 255, 255); +this.elementColors = new java.util.Hashtable(); +this.setColor(JSV.common.ScriptToken.TITLECOLOR, JSV.common.ColorParameters.BLACK); +this.setColor(JSV.common.ScriptToken.UNITSCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.SCALECOLOR, JSV.common.ColorParameters.BLACK); +this.setColor(JSV.common.ScriptToken.COORDINATESCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.GRIDCOLOR, JSV.common.ColorParameters.LIGHT_GRAY); +this.setColor(JSV.common.ScriptToken.PLOTCOLOR, JSV.common.ColorParameters.BLUE); +this.setColor(JSV.common.ScriptToken.PLOTAREACOLOR, JSV.common.ColorParameters.WHITE); +this.setColor(JSV.common.ScriptToken.BACKGROUNDCOLOR, this.getColor3(192, 192, 192)); +this.setColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.PEAKTABCOLOR, JSV.common.ColorParameters.RED); +this.setColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR, JSV.common.ColorParameters.DARK_GRAY); +for (var i = 0; i < 8; i++) JSV.common.ColorParameters.defaultPlotColors[i] = this.getColorFromString(JSV.common.ColorParameters.defaultPlotColorNames[i]); + +this.plotColors = new Array(8); +System.arraycopy(JSV.common.ColorParameters.defaultPlotColors, 0, this.plotColors, 0, 8); +}); +Clazz_defineMethod(c$, "setFor", +function(jsvp, ds, includeMeasures){ +if (ds == null) ds = this; +if (includeMeasures) jsvp.getPanelData().setBooleans(ds, null); +var pd = jsvp.getPanelData(); +if (pd.getCurrentPlotColor(1) != null) pd.setPlotColors(this.plotColors); +pd.setColorOrFont(ds, null); +}, "JSV.api.JSVPanel,JSV.common.ColorParameters,~B"); +Clazz_defineMethod(c$, "set", +function(pd, st, value){ +var param = null; +switch (st) { +default: +this.setP(pd, st, value); +return; +case JSV.common.ScriptToken.PLOTCOLORS: +if (pd == null) this.getPlotColors(value); + else pd.setPlotColors(this.getPlotColors(value)); +return; +case JSV.common.ScriptToken.BACKGROUNDCOLOR: +case JSV.common.ScriptToken.COORDINATESCOLOR: +case JSV.common.ScriptToken.GRIDCOLOR: +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +case JSV.common.ScriptToken.PEAKTABCOLOR: +case JSV.common.ScriptToken.PLOTAREACOLOR: +case JSV.common.ScriptToken.PLOTCOLOR: +case JSV.common.ScriptToken.SCALECOLOR: +case JSV.common.ScriptToken.TITLECOLOR: +case JSV.common.ScriptToken.UNITSCOLOR: +param = this.setColorFromString(st, value); +break; +case JSV.common.ScriptToken.TITLEFONTNAME: +case JSV.common.ScriptToken.DISPLAYFONTNAME: +param = this.getFontName(st, value); +break; +} +if (pd == null) return; +if (param != null) pd.setColorOrFont(this, st); +}, "JSV.common.PanelData,JSV.common.ScriptToken,~S"); +Clazz_defineMethod(c$, "getElementColor", +function(st){ +return this.elementColors.get(st); +}, "JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setColor", +function(st, color){ +if (color != null) this.elementColors.put(st, color); +return color; +}, "JSV.common.ScriptToken,javajs.api.GenericColor"); +Clazz_defineMethod(c$, "copy", +function(){ +return this.copy(this.name); +}); +Clazz_defineMethod(c$, "setElementColors", +function(p){ +this.displayFontName = p.displayFontName; +for (var entry, $entry = p.elementColors.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setColor(entry.getKey(), entry.getValue()); + +return this; +}, "JSV.common.ColorParameters"); +Clazz_defineMethod(c$, "getColorFromString", +function(name){ +return this.getColor1(JU.CU.getArgbFromString(name)); +}, "~S"); +Clazz_defineMethod(c$, "getPlotColors", +function(plotColorsStr){ +if (plotColorsStr == null) { +this.plotColors[0] = this.getElementColor(JSV.common.ScriptToken.PLOTCOLOR); +return this.plotColors; +}var st = new java.util.StringTokenizer(plotColorsStr, ",;.- "); +var colors = new JU.Lst(); +try { +while (st.hasMoreTokens()) colors.addLast(this.getColorFromString(st.nextToken())); + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +return colors.toArray( new Array(colors.size())); +}, "~S"); +Clazz_defineMethod(c$, "setColorFromString", +function(st, value){ +return this.setColor(st, this.getColorFromString(value)); +}, "JSV.common.ScriptToken,~S"); +Clazz_defineMethod(c$, "getFontName", +function(st, value){ +var isValid = this.isValidFontName(value); +switch (st) { +case JSV.common.ScriptToken.TITLEFONTNAME: +return (isValid ? this.titleFontName = value : this.titleFontName); +case JSV.common.ScriptToken.DISPLAYFONTNAME: +return (isValid ? this.displayFontName = value : this.displayFontName); +} +return null; +}, "JSV.common.ScriptToken,~S"); +c$.BLACK = null; +c$.RED = null; +c$.LIGHT_GRAY = null; +c$.DARK_GRAY = null; +c$.BLUE = null; +c$.WHITE = null; +c$.defaultPlotColors = new Array(8); +c$.defaultPlotColorNames = Clazz_newArray(-1, ["black", "darkGreen", "darkred", "orange", "magenta", "cyan", "maroon", "darkGray"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_declareType(JSV.common, "CoordComparator", null, java.util.Comparator); +Clazz_overrideMethod(c$, "compare", +function(c1, c2){ +return (c1.getXVal() > c2.getXVal() ? 1 : c1.getXVal() < c2.getXVal() ? -1 : 0); +}, "JSV.common.Coordinate,JSV.common.Coordinate"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.CoordComparator"], "JSV.common.Coordinate", ["java.util.Arrays", "$.StringTokenizer", "JU.Lst"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xVal = 0; +this.yVal = 0; +Clazz_instantialize(this, arguments);}, JSV.common, "Coordinate", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(x, y){ +this.xVal = x; +this.yVal = y; +return this; +}, "~N,~N"); +Clazz_defineMethod(c$, "getXVal", +function(){ +return this.xVal; +}); +Clazz_defineMethod(c$, "getYVal", +function(){ +return this.yVal; +}); +Clazz_defineMethod(c$, "setXVal", +function(val){ +this.xVal = val; +}, "~N"); +Clazz_defineMethod(c$, "setYVal", +function(val){ +this.yVal = val; +}, "~N"); +Clazz_defineMethod(c$, "copy", +function(){ +return new JSV.common.Coordinate().set(this.xVal, this.yVal); +}); +Clazz_defineMethod(c$, "equals", +function(coord){ +return (coord.xVal == this.xVal && coord.yVal == this.yVal); +}, "JSV.common.Coordinate"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.xVal + ", " + this.yVal + "]"; +}); +c$.isYInRange = Clazz_defineMethod(c$, "isYInRange", +function(xyCoords, min, max){ +return (JSV.common.Coordinate.getMinY(xyCoords, 0, xyCoords.length - 1) >= min && JSV.common.Coordinate.getMaxY(xyCoords, 0, xyCoords.length - 1) >= max); +}, "~A,~N,~N"); +c$.normalise = Clazz_defineMethod(c$, "normalise", +function(xyCoords, min, max){ +var newXYCoords = new Array(xyCoords.length); +var minY = JSV.common.Coordinate.getMinY(xyCoords, 0, xyCoords.length - 1); +var maxY = JSV.common.Coordinate.getMaxY(xyCoords, 0, xyCoords.length - 1); +var factor = (maxY - minY) / (max - min); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), ((xyCoords[i].getYVal() - minY) / factor) - min); + +return newXYCoords; +}, "~A,~N,~N"); +c$.reverse = Clazz_defineMethod(c$, "reverse", +function(x){ +var n = x.length; +for (var i = 0; i < n; i++) { +var v = x[i]; +x[i] = x[--n]; +x[n] = v; +} +return x; +}, "~A"); +c$.parseDSV = Clazz_defineMethod(c$, "parseDSV", +function(dataPoints, xFactor, yFactor){ +var point; +var xval = 0; +var yval = 0; +var xyCoords = new JU.Lst(); +var delim = " \t\n\r\f,;"; +var st = new java.util.StringTokenizer(dataPoints, delim); +var tmp1; +var tmp2; +while (st.hasMoreTokens()) { +tmp1 = st.nextToken().trim(); +tmp2 = st.nextToken().trim(); +xval = Double.parseDouble(tmp1); +yval = Double.parseDouble(tmp2); +point = new JSV.common.Coordinate().set(xval * xFactor, yval * yFactor); +xyCoords.addLast(point); +} +var coord = new Array(xyCoords.size()); +return xyCoords.toArray(coord); +}, "~S,~N,~N"); +c$.deltaX = Clazz_defineMethod(c$, "deltaX", +function(last, first, numPoints){ +return (last - first) / (numPoints - 1); +}, "~N,~N,~N"); +c$.removeScale = Clazz_defineMethod(c$, "removeScale", +function(xyCoords, xScale, yScale){ +JSV.common.Coordinate.applyScale(xyCoords, (1 / xScale), (1 / yScale)); +}, "~A,~N,~N"); +c$.applyScale = Clazz_defineMethod(c$, "applyScale", +function(xyCoords, xScale, yScale){ +if (xScale != 1 || yScale != 1) { +for (var i = 0; i < xyCoords.length; i++) { +xyCoords[i].setXVal(xyCoords[i].getXVal() * xScale); +xyCoords[i].setYVal(xyCoords[i].getYVal() * yScale); +} +}}, "~A,~N,~N"); +c$.getMinX = Clazz_defineMethod(c$, "getMinX", +function(coords, start, end){ +var min = 1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getXVal(); +if (tmp < min) min = tmp; +} +return min; +}, "~A,~N,~N"); +c$.getMinX = Clazz_defineMethod(c$, "getMinX", +function(spectra, vd){ +var min = 1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = JSV.common.Coordinate.getMinX(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)); +if (tmp < min) min = tmp; +} +return min; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMaxX = Clazz_defineMethod(c$, "getMaxX", +function(coords, start, end){ +var max = -1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getXVal(); +if (tmp > max) max = tmp; +} +return max; +}, "~A,~N,~N"); +c$.getMaxX = Clazz_defineMethod(c$, "getMaxX", +function(spectra, vd){ +var max = -1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = JSV.common.Coordinate.getMaxX(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)); +if (tmp > max) max = tmp; +} +return max; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMinY = Clazz_defineMethod(c$, "getMinY", +function(coords, start, end){ +var min = 1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getYVal(); +if (tmp < min) min = tmp; +} +return min; +}, "~A,~N,~N"); +c$.getMinYUser = Clazz_defineMethod(c$, "getMinYUser", +function(spectra, vd){ +var min = 1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var u = spectra.get(i).getUserYFactor(); +var yref = spectra.get(i).getYRef(); +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = (JSV.common.Coordinate.getMinY(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)) - yref) * u + yref; +if (tmp < min) min = tmp; +} +return min; +}, "JU.Lst,JSV.common.ViewData"); +c$.getMaxY = Clazz_defineMethod(c$, "getMaxY", +function(coords, start, end){ +var max = -1.7976931348623157E308; +for (var index = start; index <= end; index++) { +var tmp = coords[index].getYVal(); +if (tmp > max) max = tmp; +} +return max; +}, "~A,~N,~N"); +c$.getMaxYUser = Clazz_defineMethod(c$, "getMaxYUser", +function(spectra, vd){ +var max = -1.7976931348623157E308; +for (var i = 0; i < spectra.size(); i++) { +var u = spectra.get(i).getUserYFactor(); +var yref = spectra.get(i).getYRef(); +var xyCoords = spectra.get(i).getXYCoords(); +var tmp = (JSV.common.Coordinate.getMaxY(xyCoords, vd.getStartingPointIndex(i), vd.getEndingPointIndex(i)) - yref) * u + yref; +if (tmp > max) max = tmp; +} +return max; +}, "JU.Lst,JSV.common.ViewData"); +c$.getYValueAt = Clazz_defineMethod(c$, "getYValueAt", +function(xyCoords, xPt){ +var i = JSV.common.Coordinate.getNearestIndexForX(xyCoords, xPt); +if (i == 0 || i == xyCoords.length) return NaN; +var x1 = xyCoords[i].getXVal(); +var x0 = xyCoords[i - 1].getXVal(); +var y1 = xyCoords[i].getYVal(); +var y0 = xyCoords[i - 1].getYVal(); +if (x1 == x0) return y1; +return y0 + (y1 - y0) / (x1 - x0) * (xPt - x0); +}, "~A,~N"); +c$.intoRange = Clazz_defineMethod(c$, "intoRange", +function(i, i0, i1){ +return Math.max(Math.min(i, i1), i0); +}, "~N,~N,~N"); +c$.getNearestIndexForX = Clazz_defineMethod(c$, "getNearestIndexForX", +function(xyCoords, xPt){ +var x = new JSV.common.Coordinate().set(xPt, 0); +var i = java.util.Arrays.binarySearch(xyCoords, x, JSV.common.Coordinate.c); +if (i < 0) i = -1 - i; +if (i < 0) return 0; +if (i > xyCoords.length - 1) return xyCoords.length - 1; +return i; +}, "~A,~N"); +c$.findXForPeakNearest = Clazz_defineMethod(c$, "findXForPeakNearest", +function(xyCoords, x, isMin){ +var pt = JSV.common.Coordinate.getNearestIndexForX(xyCoords, x); +var f = (isMin ? -1 : 1); +while (pt < xyCoords.length - 1 && f * (xyCoords[pt + 1].yVal - xyCoords[pt].yVal) > 0) pt++; + +while (pt >= 1 && f * (xyCoords[pt - 1].yVal - xyCoords[pt].yVal) > 0) pt--; + +if (pt == 0 || pt == xyCoords.length - 1) return xyCoords[pt].xVal; +return JSV.common.Coordinate.parabolicInterpolation(xyCoords, pt); +}, "~A,~N,~B"); +c$.parabolicInterpolation = Clazz_defineMethod(c$, "parabolicInterpolation", +function(xyCoords, pt){ +var alpha = xyCoords[pt - 1].yVal; +var beta = xyCoords[pt].yVal; +var gamma = xyCoords[pt + 1].yVal; +var p = (alpha - gamma) / 2 / (alpha - 2 * beta + gamma); +return xyCoords[pt].xVal + p * (xyCoords[pt + 1].xVal - xyCoords[pt].xVal); +}, "~A,~N"); +c$.getPickedCoordinates = Clazz_defineMethod(c$, "getPickedCoordinates", +function(coordsClicked, coordClicked, coord, actualCoord){ +if (coordClicked == null) return false; +var x = coordClicked.getXVal(); +coord.setXVal(x); +coord.setYVal(coordClicked.getYVal()); +if (actualCoord == null) return true; +var pt = JSV.common.Coordinate.getNearestIndexForX(coordsClicked, x); +actualCoord.setXVal(coordsClicked[pt].getXVal()); +actualCoord.setYVal(coordsClicked[pt].getYVal()); +return true; +}, "~A,JSV.common.Coordinate,JSV.common.Coordinate,JSV.common.Coordinate"); +c$.shiftX = Clazz_defineMethod(c$, "shiftX", +function(xyCoords, dx){ +for (var i = xyCoords.length; --i >= 0; ) xyCoords[i].xVal += dx; + +}, "~A,~N"); +c$.getNearestXWithYAbove = Clazz_defineMethod(c$, "getNearestXWithYAbove", +function(xyCoords, x, y, inverted, andGreaterThanX){ +var pt = JSV.common.Coordinate.getNearestIndexForX(xyCoords, x); +var f = (inverted ? -1 : 1); +if (andGreaterThanX) while (pt < xyCoords.length && f * (xyCoords[pt].yVal - y) < 0) pt++; + + else while (pt >= 0 && f * (xyCoords[pt].yVal - y) < 0) pt--; + +if (pt == -1 || pt == xyCoords.length) return NaN; +return JSV.common.Coordinate.findXForPeakNearest(xyCoords, xyCoords[pt].getXVal(), inverted); +}, "~A,~N,~N,~B,~B"); +c$.c = new JSV.common.CoordComparator(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum"], "JSV.common.ExportType", null, function(){ +var c$ = Clazz_declareType(JSV.common, "ExportType", Enum); +c$.getType = Clazz_defineMethod(c$, "getType", +function(type){ +type = type.toUpperCase(); +if (type.equalsIgnoreCase("Original...")) return JSV.common.ExportType.SOURCE; +if (type.startsWith("XML")) return JSV.common.ExportType.AML; +for (var mode, $mode = 0, $$mode = JSV.common.ExportType.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (mode.name().equals(type)) return mode; + +return JSV.common.ExportType.UNK; +}, "~S"); +c$.isExportMode = Clazz_defineMethod(c$, "isExportMode", +function(ext){ +return (JSV.common.ExportType.getType(ext) !== JSV.common.ExportType.UNK); +}, "~S"); +Clazz_defineEnumConstant(c$, "UNK", 0, []); +Clazz_defineEnumConstant(c$, "SOURCE", 1, []); +Clazz_defineEnumConstant(c$, "DIF", 2, []); +Clazz_defineEnumConstant(c$, "FIX", 3, []); +Clazz_defineEnumConstant(c$, "SQZ", 4, []); +Clazz_defineEnumConstant(c$, "PAC", 5, []); +Clazz_defineEnumConstant(c$, "XY", 6, []); +Clazz_defineEnumConstant(c$, "DIFDUP", 7, []); +Clazz_defineEnumConstant(c$, "PNG", 8, []); +Clazz_defineEnumConstant(c$, "JPG", 9, []); +Clazz_defineEnumConstant(c$, "SVG", 10, []); +Clazz_defineEnumConstant(c$, "SVGI", 11, []); +Clazz_defineEnumConstant(c$, "CML", 12, []); +Clazz_defineEnumConstant(c$, "AML", 13, []); +Clazz_defineEnumConstant(c$, "PDF", 14, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.XYScaleConverter", "java.util.Hashtable", "JU.BS", "$.Lst", "JSV.common.Coordinate"], "JSV.common.GraphSet", ["JU.DF", "$.PT", "JSV.common.Annotation", "$.ColorParameters", "$.ColoredAnnotation", "$.ImageView", "$.IntegralData", "$.Measurement", "$.MeasurementData", "$.PanelData", "$.Parameters", "$.PeakData", "$.PeakPickEvent", "$.PlotWidget", "$.ScaleData", "$.ScriptToken", "$.Spectrum", "$.ViewData", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.gs2dLinkedX = null; +this.gs2dLinkedY = null; +this.cur1D2Locked = false; +this.highlights = null; +this.spectra = null; +this.isSplittable = true; +this.allowStacking = true; +this.annotations = null; +this.selectedSpectrumMeasurements = null; +this.selectedSpectrumIntegrals = null; +this.lastAnnotation = null; +this.pendingMeasurement = null; +this.pendingIntegral = null; +this.graphsTemp = null; +this.widgets = null; +this.isLinked = false; +this.haveSingleYScale = false; +this.iSpectrumMovedTo = 0; +this.iSpectrumClicked = 0; +this.iSpectrumSelected = -1; +this.stackSelected = false; +this.bsSelected = null; +this.viewData = null; +this.reversePlot = false; +this.nSplit = 1; +this.yStackOffsetPercent = 0; +this.showAllStacked = true; +this.viewList = null; +this.imageView = null; +this.pd = null; +this.sticky2Dcursor = false; +this.nSpectra = 0; +this.fracX = 1; +this.fracY = 1; +this.fX0 = 0; +this.fY0 = 0; +this.zoomBox1D = null; +this.zoomBox2D = null; +this.pin1Dx0 = null; +this.pin1Dx1 = null; +this.pin1Dy0 = null; +this.pin1Dy1 = null; +this.pin1Dx01 = null; +this.pin1Dy01 = null; +this.pin2Dx0 = null; +this.pin2Dx1 = null; +this.pin2Dy0 = null; +this.pin2Dy1 = null; +this.pin2Dx01 = null; +this.pin2Dy01 = null; +this.cur2Dx0 = null; +this.cur2Dx1 = null; +this.cur1D2x1 = null; +this.cur1D2x2 = null; +this.cur2Dy = null; +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.xVArrows = 0; +this.xHArrows = 0; +this.yHArrows = 0; +this.xPixel00 = 0; +this.yPixel00 = 0; +this.xPixel11 = 0; +this.yPixel11 = 0; +this.yPixel000 = 0; +this.xPixels = 0; +this.yPixels = 0; +this.xPixel10 = 0; +this.xPixels0 = 0; +this.allowStackedYScale = true; +this.drawXAxisLeftToRight = false; +this.xAxisLeftToRight = true; +this.iPreviousSpectrumClicked = -1; +this.$haveSelectedSpectrum = false; +this.zoomEnabled = false; +this.currentZoomIndex = 0; +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +this.height = 0; +this.width = 0; +this.right = 0; +this.top = 0; +this.left = 0; +this.bottom = 0; +this.piMouseOver = null; +this.coordTemp = null; +this.FONT_PLAIN = 0; +this.FONT_BOLD = 1; +this.FONT_ITALIC = 2; +this.is2DSpectrum = false; +this.selectedMeasurement = null; +this.selectedIntegral = null; +this.lastXMax = NaN; +this.lastSpecClicked = -1; +this.inPlotMove = false; +this.xPixelMovedTo = -1; +this.xPixelMovedTo2 = -1; +this.yValueMovedTo = 0; +this.xValueMovedTo = 0; +this.haveLeftRightArrows = false; +this.xPixelPlot1 = 0; +this.xPixelPlot0 = 0; +this.yPixelPlot0 = 0; +this.yPixelPlot1 = 0; +this.nextClickForSetPeak = null; +this.closerX = 0; +this.closerY = 0; +this.splitterX = 0; +this.splitterY = 0; +this.mapX = null; +if (!Clazz_isClassDefined("JSV.common.GraphSet.Highlight")) { +JSV.common.GraphSet.$GraphSet$Highlight$ (); +} +this.widgetsAreSet = true; +this.lastIntDragX = 0; +this.nextClickMode = 0; +this.dialogs = null; +this.aIntegrationRatios = null; +this.jsvp = null; +this.image2D = null; +this.plotColors = null; +this.g2d = null; +this.gMain = null; +this.COLOR_GREY = -3; +this.COLOR_BLACK = -2; +this.COLOR_INTEGRAL = -1; +Clazz_instantialize(this, arguments);}, JSV.common, "GraphSet", null, JSV.common.XYScaleConverter); +Clazz_prepareFields (c$, function(){ +this.highlights = new JU.Lst(); +this.spectra = new JU.Lst(); +this.graphsTemp = new JU.Lst(); +this.bsSelected = new JU.BS(); +this.coordTemp = new JSV.common.Coordinate(); +this.mapX = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(pd){ +this.pd = pd; +this.jsvp = pd.jsvp; +this.g2d = pd.g2d; +}, "JSV.common.PanelData"); +Clazz_defineMethod(c$, "setSpectrumMovedTo", +function(i){ +return this.iSpectrumMovedTo = i; +}, "~N"); +Clazz_defineMethod(c$, "setSpectrumClicked", +function(i){ +this.stackSelected = this.showAllStacked; +if (i < 0 || this.iSpectrumClicked != i) { +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +}this.iSpectrumClicked = this.setSpectrumSelected(this.setSpectrumMovedTo(i)); +}, "~N"); +Clazz_defineMethod(c$, "setSpectrumSelected", +function(i){ +var isNew = (i != this.iSpectrumSelected); +this.iSpectrumSelected = i; +if (isNew) { +this.getCurrentView(); +}return this.iSpectrumSelected; +}, "~N"); +Clazz_defineMethod(c$, "closeDialogsExcept", +function(type){ +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (ad.isDialog() && (type === JSV.common.Annotation.AType.NONE || ad.getAType() !== type)) (ad).setVisible(false); +} +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "dispose", +function(){ +this.spectra = null; +this.viewData = null; +this.viewList = null; +this.annotations = null; +this.lastAnnotation = null; +this.pendingMeasurement = null; +this.imageView = null; +this.graphsTemp = null; +this.widgets = null; +this.disposeImage(); +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (ad.isDialog()) (ad).dispose(); +} +this.dialogs = null; +}); +Clazz_defineMethod(c$, "isDrawNoSpectra", +function(){ +return (this.iSpectrumSelected == -2147483648); +}); +Clazz_defineMethod(c$, "getFixedSelectedSpectrumIndex", +function(){ +return Math.max(this.iSpectrumSelected, 0); +}); +Clazz_defineMethod(c$, "getSpectrum", +function(){ +return this.getSpectrumAt(this.getFixedSelectedSpectrumIndex()).getCurrentSubSpectrum(); +}); +Clazz_defineMethod(c$, "getSpectrumAt", +function(index){ +return this.spectra.get(index); +}, "~N"); +Clazz_defineMethod(c$, "getSpectrumIndex", +function(spec){ +for (var i = this.spectra.size(); --i >= 0; ) if (this.spectra.get(i) === spec) return i; + +return -1; +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "addSpec", +function(spec){ +this.spectra.addLast(spec); +this.nSpectra++; +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "splitStack", +function(doSplit){ +if (doSplit && this.isSplittable) { +this.nSplit = this.nSpectra; +this.showAllStacked = false; +this.setSpectrumClicked(this.iSpectrumSelected); +this.pd.currentSplitPoint = this.iSpectrumSelected; +} else { +this.nSplit = 1; +this.showAllStacked = this.allowStacking && !doSplit; +this.setSpectrumClicked(this.iSpectrumSelected); +}this.stackSelected = false; +JSV.common.GraphSet.setFractionalPositions(this.pd, this.pd.graphSets, JSV.common.PanelData.LinkMode.NONE); +this.pd.setTaintedAll(); +}, "~B"); +Clazz_defineMethod(c$, "setPositionForFrame", +function(iSplit){ +if (iSplit < 0) iSplit = 0; +var marginalHeight = this.height - 50; +this.xPixel00 = Clazz_doubleToInt(this.width * this.fX0); +this.xPixel11 = Clazz_doubleToInt(this.xPixel00 + this.width * this.fracX - 1); +this.xHArrows = this.xPixel00 + 25; +this.xVArrows = this.xPixel11 - Clazz_doubleToInt(this.right / 2); +this.xPixel0 = this.xPixel00 + Clazz_doubleToInt(this.left * (1 - this.fX0)); +this.xPixel10 = this.xPixel1 = this.xPixel11 - this.right; +this.xPixels0 = this.xPixels = this.xPixel1 - this.xPixel0 + 1; +this.yPixel000 = (this.fY0 == 0 ? 25 : 0) + Clazz_doubleToInt(this.height * this.fY0); +this.yPixel00 = this.yPixel000 + Clazz_doubleToInt(marginalHeight * this.fracY * iSplit); +this.yPixel11 = this.yPixel00 + Clazz_doubleToInt(marginalHeight * this.fracY) - 1; +this.yHArrows = this.yPixel11 - 12; +this.yPixel0 = this.yPixel00 + Clazz_doubleToInt(this.top / 2); +this.yPixel1 = this.yPixel11 - Clazz_doubleToInt(this.bottom / 2); +this.yPixels = this.yPixel1 - this.yPixel0 + 1; +if (this.imageView != null && this.is2DSpectrum) { +this.setImageWindow(); +if (this.pd.display1D) { +var widthRatio = (this.pd.display1D ? 1.0 * (this.xPixels0 - this.imageView.xPixels) / this.xPixels0 : 1); +this.xPixels = Clazz_doubleToInt(Math.floor(widthRatio * this.xPixels0 * 0.8)); +this.xPixel1 = this.xPixel0 + this.xPixels - 1; +} else { +this.xPixels = 0; +this.xPixel1 = this.imageView.xPixel0 - 30; +}}}, "~N"); +Clazz_defineMethod(c$, "hasPoint", +function(xPixel, yPixel){ +return (xPixel >= this.xPixel00 && xPixel <= this.xPixel11 && yPixel >= this.yPixel000 && yPixel <= this.yPixel11 * this.nSplit); +}, "~N,~N"); +Clazz_defineMethod(c$, "isInPlotRegion", +function(xPixel, yPixel){ +return (xPixel >= this.xPixel0 && xPixel <= this.xPixel1 && yPixel >= this.yPixel0 && yPixel <= this.yPixel1); +}, "~N,~N"); +Clazz_defineMethod(c$, "getSplitPoint", +function(yPixel){ +return Math.max(0, Math.min((Clazz_doubleToInt((yPixel - this.yPixel000) / (this.yPixel11 - this.yPixel00))), this.nSplit - 1)); +}, "~N"); +Clazz_defineMethod(c$, "isSplitWidget", +function(xPixel, yPixel){ +return this.isFrameBox(xPixel, yPixel, this.splitterX, this.splitterY); +}, "~N,~N"); +Clazz_defineMethod(c$, "isCloserWidget", +function(xPixel, yPixel){ +return this.isFrameBox(xPixel, yPixel, this.closerX, this.closerY); +}, "~N,~N"); +Clazz_defineMethod(c$, "initGraphSet", +function(startIndex, endIndex){ +if (JSV.common.GraphSet.veryLightGrey == null) JSV.common.GraphSet.veryLightGrey = this.g2d.getColor3(200, 200, 200); +this.setPlotColors(JSV.common.ColorParameters.defaultPlotColors); +this.xAxisLeftToRight = this.getSpectrumAt(0).shouldDisplayXAxisIncreasing(); +this.setDrawXAxis(); +var startIndices = Clazz_newIntArray (this.nSpectra, 0); +var endIndices = Clazz_newIntArray (this.nSpectra, 0); +this.bsSelected.setBits(0, this.nSpectra); +this.allowStackedYScale = true; +if (endIndex <= 0) endIndex = 2147483647; +this.isSplittable = (this.nSpectra > 1); +this.allowStacking = (this.spectra.get(0).isStackable()); +this.showAllStacked = this.allowStacking && (this.nSpectra > 1); +for (var i = 0; i < this.nSpectra; i++) { +var iLast = this.spectra.get(i).getXYCoords().length - 1; +startIndices[i] = JSV.common.Coordinate.intoRange(startIndex, 0, iLast); +endIndices[i] = JSV.common.Coordinate.intoRange(endIndex, 0, iLast); +this.allowStackedYScale = new Boolean (this.allowStackedYScale & (this.spectra.get(i).getYUnits().equals(this.spectra.get(0).getYUnits()) && this.spectra.get(i).getUserYFactor() == this.spectra.get(0).getUserYFactor())).valueOf(); +} +this.getView(0, 0, 0, 0, startIndices, endIndices, null, null); +this.viewList = new JU.Lst(); +this.viewList.addLast(this.viewData); +}, "~N,~N"); +Clazz_defineMethod(c$, "getView", +function(x1, x2, y1, y2, startIndices, endIndices, viewScales, yScales){ +var graphs = (this.graphsTemp.size() == 0 ? this.spectra : this.graphsTemp); +var subspecs = this.getSpectrumAt(0).getSubSpectra(); +var dontUseSubspecs = (subspecs == null || subspecs.size() == 2 && subspecs.get(1).isImaginary()); +var is2D = !this.getSpectrumAt(0).is1D(); +var useFirstSubSpecOnly = false; +if (is2D && useFirstSubSpecOnly || dontUseSubspecs && y1 == y2) { +graphs = this.spectra; +} else if (y1 == y2) { +this.viewData = new JSV.common.ViewData(subspecs, y1, y2, this.getSpectrum().isContinuous()); +graphs = null; +}if (graphs != null) { +this.viewData = new JSV.common.ViewData(graphs, y1, y2, startIndices, endIndices, this.getSpectrumAt(0).isContinuous(), is2D); +if (x1 != x2) this.getScale().setXRange(x1, x2); +}if (viewScales != null) { +JSV.common.ScaleData.copyScaleFactors(viewScales, this.viewData.getScaleData()); +if (yScales != null) JSV.common.ScaleData.copyYScales(yScales, this.viewData.getScaleData()); +this.getCurrentView(); +}}, "~N,~N,~N,~N,~A,~A,~A,~A"); +Clazz_defineMethod(c$, "isNearby", +function(a1, a2, c, range){ +var x = a1.getXVal(); +var xp1 = c.toPixelX(x); +var yp1 = this.toPixelY(a1.getYVal()); +x = a2.getXVal(); +var xp2 = c.toPixelX(x); +var yp2 = this.toPixelY(a2.getYVal()); +return (Math.abs(xp1 - xp2) + Math.abs(yp1 - yp2) < range); +}, "JSV.common.Coordinate,JSV.common.Coordinate,JSV.common.XYScaleConverter,~N"); +Clazz_defineMethod(c$, "setReversePlot", +function(val){ +this.reversePlot = val; +if (this.reversePlot) this.closeDialogsExcept(JSV.common.Annotation.AType.NONE); +this.setDrawXAxis(); +}, "~B"); +Clazz_defineMethod(c$, "setDrawXAxis", +function(){ +this.drawXAxisLeftToRight = new Boolean (this.xAxisLeftToRight ^ this.reversePlot).valueOf(); +for (var i = 0; i < this.spectra.size(); i++) (this.spectra.get(i)).setExportXAxisDirection(this.drawXAxisLeftToRight); + +}); +Clazz_defineMethod(c$, "isInTopBar", +function(xPixel, yPixel){ +return (xPixel == this.fixX(xPixel) && yPixel > this.pin1Dx0.yPixel0 - 2 && yPixel < this.pin1Dx0.yPixel1); +}, "~N,~N"); +Clazz_defineMethod(c$, "isInTopBar2D", +function(xPixel, yPixel){ +return (this.imageView != null && xPixel == this.imageView.fixX(xPixel) && yPixel > this.pin2Dx0.yPixel0 - 2 && yPixel < this.pin2Dx0.yPixel1); +}, "~N,~N"); +Clazz_defineMethod(c$, "isInRightBar", +function(xPixel, yPixel){ +return (yPixel == this.fixY(yPixel) && xPixel > this.pin1Dy0.xPixel1 && xPixel < this.pin1Dy0.xPixel0 + 2); +}, "~N,~N"); +Clazz_defineMethod(c$, "isInRightBar2D", +function(xPixel, yPixel){ +return (this.imageView != null && yPixel == this.fixY(yPixel) && xPixel > this.pin2Dy0.xPixel1 && xPixel < this.pin2Dy0.xPixel0 + 2); +}, "~N,~N"); +Clazz_defineMethod(c$, "toX0", +function(xPixel){ +return this.viewList.get(0).getScale().toX0(this.fixX(xPixel), this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz_defineMethod(c$, "toY0", +function(yPixel){ +return this.viewList.get(0).getScale().toY0(this.fixY(yPixel), this.yPixel0, this.yPixel1); +}, "~N"); +Clazz_overrideMethod(c$, "toX", +function(xPixel){ +if (this.imageView != null && this.imageView.isXWithinRange(xPixel)) return this.imageView.toX(xPixel); +return this.getScale().toX(this.fixX(xPixel), this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz_overrideMethod(c$, "toY", +function(yPixel){ +return this.getScale().toY(yPixel, this.yPixel0); +}, "~N"); +Clazz_defineMethod(c$, "toPixelX", +function(dx){ +return this.getScale().toPixelX(dx, this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz_defineMethod(c$, "toPixelY", +function(yVal){ +return this.getScale().toPixelY(yVal, this.yPixel1); +}, "~N"); +Clazz_defineMethod(c$, "toPixelX0", +function(x){ +return this.viewList.get(0).getScale().toPixelX0(x, this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); +}, "~N"); +Clazz_defineMethod(c$, "toPixelY0", +function(y){ +return this.fixY(this.viewList.get(0).getScale().toPixelY0(y, this.yPixel0, this.yPixel1)); +}, "~N"); +Clazz_defineMethod(c$, "fixX", +function(xPixel){ +return JSV.common.Coordinate.intoRange(xPixel, this.xPixel0, this.xPixel1); +}, "~N"); +Clazz_defineMethod(c$, "fixY", +function(yPixel){ +return JSV.common.Coordinate.intoRange(yPixel, this.yPixel0, this.yPixel1); +}, "~N"); +Clazz_defineMethod(c$, "getXPixel0", +function(){ +return this.xPixel0; +}); +Clazz_defineMethod(c$, "getXPixels", +function(){ +return this.xPixels; +}); +Clazz_overrideMethod(c$, "getYPixels", +function(){ +return this.yPixels; +}); +Clazz_defineMethod(c$, "getScale", +function(){ +return this.viewData.getScale(); +}); +Clazz_defineMethod(c$, "toPixelYint", +function(yVal){ +return this.yPixel1 - Clazz_doubleToInt(Double.isNaN(yVal) ? -2147483648 : this.yPixels * yVal); +}, "~N"); +Clazz_defineMethod(c$, "findAnnotation2D", +function(xy){ +for (var i = this.annotations.size(); --i >= 0; ) { +var a = this.annotations.get(i); +if (this.isNearby(a, xy, this.imageView, 10)) return a; +} +return null; +}, "JSV.common.Coordinate"); +Clazz_defineMethod(c$, "addAnnotation", +function(annotation, isToggle){ +if (this.annotations == null) this.annotations = new JU.Lst(); +var removed = false; +for (var i = this.annotations.size(); --i >= 0; ) if (annotation.is2D ? this.isNearby(this.annotations.get(i), annotation, this.imageView, 10) : annotation.equals(this.annotations.get(i))) { +removed = true; +this.annotations.removeItemAt(i); +} +if (annotation.text.length > 0 && (!removed || !isToggle)) this.annotations.addLast(annotation); +}, "JSV.common.Annotation,~B"); +Clazz_defineMethod(c$, "setImageWindow", +function(){ +this.imageView.setPixelWidthHeight(Clazz_doubleToInt((this.pd.display1D ? 0.6 : 1) * this.xPixels0), this.yPixels); +this.imageView.setXY0(this.getSpectrumAt(0), Clazz_doubleToInt(Math.floor(this.xPixel10 - this.imageView.xPixels)), this.yPixel0); +}); +Clazz_defineMethod(c$, "findNearestMaxMin", +function(){ +if (this.nSpectra > 1 && this.iSpectrumClicked < 0) return false; +this.xValueMovedTo = this.getSpectrum().findXForPeakNearest(this.xValueMovedTo); +this.setXPixelMovedTo(this.xValueMovedTo, 1.7976931348623157E308, 0, 0); +return !Double.isNaN(this.xValueMovedTo); +}); +Clazz_defineMethod(c$, "setXPixelMovedTo", +function(x1, x2, xPixel1, xPixel2){ +if (x1 == 1.7976931348623157E308 && x2 == 1.7976931348623157E308) { +this.xPixelMovedTo = xPixel1; +this.xPixelMovedTo2 = xPixel2; +if (this.isLinked && this.sticky2Dcursor) { +this.pd.setlinkedXMove(this, this.toX(this.xPixelMovedTo), false); +}return; +}if (x1 != 1.7976931348623157E308) { +this.xPixelMovedTo = this.toPixelX(x1); +if (this.fixX(this.xPixelMovedTo) != this.xPixelMovedTo) this.xPixelMovedTo = -1; +this.xPixelMovedTo2 = -1; +if (x1 != 1e10) this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex()); +}if (x2 != 1.7976931348623157E308) { +this.xPixelMovedTo2 = this.toPixelX(x2); +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "processPendingMeasurement", +function(xPixel, yPixel, clickCount){ +if (!this.isInPlotRegion(xPixel, yPixel) || this.is2dClick(xPixel, yPixel)) { +this.pendingMeasurement = null; +return; +}var x = this.toX(xPixel); +var y = this.toY(yPixel); +var x0 = x; +var m; +switch (clickCount) { +case 0: +this.pendingMeasurement.setPt2(this.toX(xPixel), this.toY(yPixel)); +break; +case 3: +case 2: +if (this.iSpectrumClicked < 0) return; +var spec = this.spectra.get(this.iSpectrumClicked); +this.setScale(this.iSpectrumClicked); +if (clickCount == 3) { +} else { +m = this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 1); +if (m != null) { +x = m.getXVal(); +y = m.getYVal(); +} else if ((m = this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 2)) != null) { +x = m.getXVal2(); +y = m.getYVal2(); +} else { +x = this.getNearestPeak(spec, x, y); +}}this.pendingMeasurement = new JSV.common.Measurement().setM1(x, y, spec); +this.pendingMeasurement.setPt2(x0, y); +this.pd.setTaintedAll(); +this.pd.repaint(); +break; +case 1: +case -2: +case -3: +var isOK = (this.pendingMeasurement != null && this.isVisible(this.getDialog(JSV.common.Annotation.AType.Measurements, -1))); +while (isOK) { +this.setScale(this.getSpectrumIndex(this.pendingMeasurement.spec)); +if (clickCount != 3) { +if (!this.findNearestMaxMin()) { +isOK = false; +break; +}xPixel = this.xPixelMovedTo; +}x = this.toX(xPixel); +y = this.toY(yPixel); +this.pendingMeasurement.setPt2(x, y); +if (this.pendingMeasurement.text.length == 0) { +isOK = false; +break; +}this.setMeasurement(this.pendingMeasurement); +if (clickCount != 1) { +isOK = false; +break; +}this.setSpectrumClicked(this.getSpectrumIndex(this.pendingMeasurement.spec)); +this.pendingMeasurement = new JSV.common.Measurement().setM1(x, y, this.pendingMeasurement.spec); +break; +} +if (!isOK) this.pendingMeasurement = null; +this.pd.setTaintedAll(); +this.pd.repaint(); +break; +case 5: +if (this.findNearestMaxMin()) { +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (Double.isNaN(this.lastXMax) || this.lastSpecClicked != iSpec || this.pendingMeasurement == null) { +this.lastXMax = this.xValueMovedTo; +this.lastSpecClicked = iSpec; +this.pendingMeasurement = new JSV.common.Measurement().setM1(this.xValueMovedTo, this.yValueMovedTo, this.spectra.get(iSpec)); +} else { +this.pendingMeasurement.setPt2(this.xValueMovedTo, this.yValueMovedTo); +if (this.pendingMeasurement.text.length > 0) this.setMeasurement(this.pendingMeasurement); +this.pendingMeasurement = null; +this.lastXMax = NaN; +}} else { +this.lastXMax = NaN; +}break; +} +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "checkIntegralNormalizationClick", +function(xPixel, yPixel){ +if (this.selectedSpectrumIntegrals == null) return false; +var integral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, -5); +if (integral == null) return false; +this.selectedIntegral = integral; +this.pd.normalizeIntegral(); +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +this.setSpectrumClicked(this.getSpectrumIndex(integral.spec)); +return true; +}, "~N,~N"); +Clazz_defineMethod(c$, "getNearestPeak", +function(spec, x, y){ +var x0 = JSV.common.Coordinate.getNearestXWithYAbove(spec.getXYCoords(), x, y, spec.isInverted(), false); +var x1 = JSV.common.Coordinate.getNearestXWithYAbove(spec.getXYCoords(), x, y, spec.isInverted(), true); +return (Double.isNaN(x0) ? x1 : Double.isNaN(x1) ? x0 : Math.abs(x0 - x) < Math.abs(x1 - x) ? x0 : x1); +}, "JSV.common.Spectrum,~N,~N"); +Clazz_defineMethod(c$, "findMeasurement", +function(measurements, xPixel, yPixel, iPt){ +if (measurements == null || measurements.size() == 0) return null; +if (iPt == 0) { +var m = this.findMeasurement(measurements, xPixel, yPixel, -1); +if (m != null || Clazz_instanceOf(measurements.get(0),"JSV.common.Integral")) return m; +return this.findMeasurement(measurements, xPixel, yPixel, -2); +}for (var i = measurements.size(); --i >= 0; ) { +var m = measurements.get(i); +var x1; +var x2; +var y1; +var y2; +if (Clazz_instanceOf(m,"JSV.common.Integral")) { +x1 = x2 = this.toPixelX(m.getXVal2()); +y1 = this.toPixelYint(m.getYVal()); +y2 = this.toPixelYint(m.getYVal2()); +} else { +x1 = this.toPixelX(m.getXVal()); +x2 = this.toPixelX(m.getXVal2()); +y1 = y2 = (iPt == -2 ? this.yPixel1 - 2 : this.toPixelY(m.getYVal())); +}switch (iPt) { +case 1: +if (Math.abs(xPixel - x1) + Math.abs(yPixel - y1) < 4) return m; +break; +case 2: +if (Math.abs(xPixel - x2) + Math.abs(yPixel - y2) < 4) return m; +break; +case -5: +y1 = y2 = Clazz_doubleToInt((y1 + y2) / 2); +x2 = x1 + 20; +default: +case -1: +case -2: +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x2, y2)) return m; +break; +} +} +return null; +}, "JSV.common.MeasurementData,~N,~N,~N"); +Clazz_defineMethod(c$, "setMeasurement", +function(m){ +var iSpec = this.getSpectrumIndex(m.spec); +var ad = this.getDialog(JSV.common.Annotation.AType.Measurements, iSpec); +if (ad == null) this.addDialog(iSpec, JSV.common.Annotation.AType.Measurements, ad = new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements, m.spec)); +ad.getData().addLast(m.copyM()); +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}, "JSV.common.Measurement"); +Clazz_defineMethod(c$, "checkArrowUpDownClick", +function(xPixel, yPixel){ +var ok = false; +var f = (this.isArrowClick(xPixel, yPixel, 3) ? JSV.common.GraphSet.RT2 : this.isArrowClick(xPixel, yPixel, 4) ? 1 / JSV.common.GraphSet.RT2 : 0); +if (f != 0) { +if (this.nSplit > 1) this.setSpectrumSelected(this.iSpectrumMovedTo); +if ((this.nSpectra == 1 || this.iSpectrumSelected >= 0) && this.spectra.get(this.getFixedSelectedSpectrumIndex()).isTransmittance()) f = 1 / f; +this.viewData.scaleSpectrum(this.imageView == null ? this.iSpectrumSelected : -2, f); +ok = true; +} else if (this.isArrowClick(xPixel, yPixel, -1)) { +this.resetViewCompletely(); +ok = true; +}if (ok) { +if (this.imageView != null) { +this.update2dImage(false); +this.resetPinsFromView(); +}this.pd.setTaintedAll(); +}return ok; +}, "~N,~N"); +Clazz_defineMethod(c$, "resetViewCompletely", +function(){ +this.clearViews(); +if (this.showAllStacked && !this.stackSelected) this.closeDialogsExcept(JSV.common.Annotation.AType.NONE); +this.viewData.resetScaleFactors(); +this.updateDialogs(); +}); +Clazz_defineMethod(c$, "checkArrowLeftRightClick", +function(xPixel, yPixel){ +if (this.haveLeftRightArrows) { +var dx = (this.isArrowClick(xPixel, yPixel, 1) ? -1 : this.isArrowClick(xPixel, yPixel, 2) ? 1 : 0); +if (dx != 0) { +var i = this.iSpectrumSelected + dx; +if (i < 0) i = this.nSpectra - 1; +this.setSpectrumClicked(i % this.nSpectra); +return true; +}if (this.isArrowClick(xPixel, yPixel, 0)) { +if (this.showAllStacked) { +this.showAllStacked = false; +this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex()); +return true; +}this.showAllStacked = this.allowStacking; +this.setSpectrumSelected(-1); +this.stackSelected = false; +}}return false; +}, "~N,~N"); +Clazz_defineMethod(c$, "isArrowClick", +function(xPixel, yPixel, type){ +var pt; +switch (type) { +case 3: +case 4: +case -1: +pt = Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) + (type == 3 ? -1 : type == 4 ? 1 : 0) * 15; +return (Math.abs(this.xVArrows - xPixel) < 10 && Math.abs(pt - yPixel) < 10); +case 1: +case 2: +case 0: +pt = this.xHArrows + (type == 1 ? -1 : type == 2 ? 1 : 0) * 15; +return (Math.abs(pt - xPixel) < 10 && Math.abs(this.yHArrows - yPixel) < 10); +} +return false; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setWidgetValueByUser", +function(pw){ +var sval; +if (pw === this.cur2Dy) sval = "" + this.imageView.toSubspectrumIndex(pw.yPixel0); + else if (pw === this.pin1Dx01) sval = "" + Math.min(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()) + " - " + Math.max(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()); + else if (pw === this.pin1Dy01) sval = "" + Math.min(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()) + " - " + Math.max(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()); + else if (pw === this.pin2Dx01) sval = "" + Math.min(this.pin2Dx0.getXVal(), this.pin2Dx1.getXVal()) + " - " + Math.max(this.pin2Dx0.getXVal(), this.pin2Dx1.getXVal()); + else if (pw === this.pin2Dy01) sval = "" + Clazz_doubleToInt(Math.min(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())) + " - " + Clazz_doubleToInt(Math.max(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())); + else sval = "" + pw.getValue(); +sval = this.pd.getInput("New value?", "Set Slider", sval); +if (sval == null) return; +sval = sval.trim(); +try { +if (pw === this.pin1Dx01 || pw === this.pin1Dy01 || pw === this.pin2Dx01 || pw === this.pin2Dy01) { +var pt = sval.indexOf("-", 1); +if (pt < 0) return; +var val1 = Double.$valueOf(sval.substring(0, pt)).doubleValue(); +var val2 = Double.$valueOf(sval.substring(pt + 1)).doubleValue(); +if (pw === this.pin1Dx01) { +this.doZoom(val1, this.pin1Dy0.getYVal(), val2, this.pin1Dy1.getYVal(), true, false, false, true, true); +} else if (pw === this.pin1Dy01) { +this.doZoom(this.pin1Dx0.getXVal(), val1, this.pin1Dx1.getXVal(), val2, this.imageView == null, this.imageView == null, false, false, true); +} else if (pw === this.pin2Dx01) { +this.imageView.setView0(this.imageView.toPixelX0(val1), this.pin2Dy0.yPixel0, this.imageView.toPixelX0(val2), this.pin2Dy1.yPixel0); +this.doZoom(val1, this.pin1Dy0.getYVal(), val2, this.pin1Dy1.getYVal(), false, false, false, true, true); +} else if (pw === this.pin2Dy01) { +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.toPixelY0(val1), this.pin2Dx1.xPixel0, this.imageView.toPixelY0(val2)); +this.doZoom(this.imageView.toX(this.imageView.xPixel0), this.getScale().minY, this.imageView.toX(this.imageView.xPixel0 + this.imageView.xPixels - 1), this.getScale().maxY, false, false, false, false, true); +}} else { +var val = Double.$valueOf(sval).doubleValue(); +if (pw.isXtype) { +var val2 = (pw === this.pin1Dx0 || pw === this.cur2Dx0 || pw === this.pin2Dx0 ? this.pin1Dx1.getXVal() : this.pin1Dx0.getXVal()); +this.doZoom(val, 0, val2, 0, !pw.is2D, false, false, true, true); +} else if (pw === this.cur2Dy) { +this.setCurrentSubSpectrum(Clazz_doubleToInt(val)); +} else if (pw === this.pin2Dy0 || pw === this.pin2Dy1) { +var val2 = (pw === this.pin2Dy0 ? this.pin2Dy1.yPixel0 : this.pin2Dy0.yPixel0); +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.subIndexToPixelY(Clazz_doubleToInt(val)), this.pin2Dx1.xPixel0, val2); +} else { +var val2 = (pw === this.pin1Dy0 ? this.pin1Dy1.getYVal() : this.pin1Dy0.getYVal()); +this.doZoom(this.pin1Dx0.getXVal(), val, this.pin1Dx1.getXVal(), val2, this.imageView == null, this.imageView == null, false, false, true); +}}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JSV.common.PlotWidget"); +Clazz_defineMethod(c$, "removeAllHighlights", +function(spec){ +if (spec == null) this.highlights.clear(); + else for (var i = this.highlights.size(); --i >= 0; ) if (this.highlights.get(i).spectrum === spec) this.highlights.removeItemAt(i); + +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setCoordClicked", +function(xPixel, x, y){ +if (y == 0) this.nextClickForSetPeak = null; +if (Double.isNaN(x)) { +this.pd.coordClicked = null; +this.pd.coordsClicked = null; +return null; +}this.pd.coordClicked = new JSV.common.Coordinate().set(this.lastClickX = x, y); +this.pd.coordsClicked = this.getSpectrum().getXYCoords(); +this.pd.xPixelClicked = (this.lastPixelX = xPixel); +return this.pd.coordClicked; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setWidgets", +function(needNewPins, subIndex, doDraw1DObjects){ +if (needNewPins || this.pin1Dx0 == null) { +if (this.zoomBox1D == null) this.newPins(); + else this.resetPinPositions(); +}this.setDerivedPins(subIndex); +this.setPinSliderPositions(doDraw1DObjects); +}, "~B,~N,~B"); +Clazz_defineMethod(c$, "newPins", +function(){ +this.zoomBox1D = new JSV.common.PlotWidget("zoomBox1D"); +this.pin1Dx0 = new JSV.common.PlotWidget("pin1Dx0"); +this.pin1Dx1 = new JSV.common.PlotWidget("pin1Dx1"); +this.pin1Dy0 = new JSV.common.PlotWidget("pin1Dy0"); +this.pin1Dy1 = new JSV.common.PlotWidget("pin1Dy1"); +this.pin1Dx01 = new JSV.common.PlotWidget("pin1Dx01"); +this.pin1Dy01 = new JSV.common.PlotWidget("pin1Dy01"); +this.cur1D2x1 = new JSV.common.PlotWidget("cur1D2x1"); +this.cur1D2x1.color = JSV.common.ScriptToken.PEAKTABCOLOR; +this.cur1D2x2 = new JSV.common.PlotWidget("cur1D2x2"); +this.cur1D2x2.color = JSV.common.ScriptToken.PEAKTABCOLOR; +if (this.imageView != null) { +this.zoomBox2D = new JSV.common.PlotWidget("zoomBox2D"); +this.pin2Dx0 = new JSV.common.PlotWidget("pin2Dx0"); +this.pin2Dx1 = new JSV.common.PlotWidget("pin2Dx1"); +this.pin2Dy0 = new JSV.common.PlotWidget("pin2Dy0"); +this.pin2Dy1 = new JSV.common.PlotWidget("pin2Dy1"); +this.pin2Dx01 = new JSV.common.PlotWidget("pin2Dx01"); +this.pin2Dy01 = new JSV.common.PlotWidget("pin2Dy01"); +this.cur2Dx0 = new JSV.common.PlotWidget("cur2Dx0"); +this.cur2Dx1 = new JSV.common.PlotWidget("cur2Dx1"); +this.cur2Dy = new JSV.common.PlotWidget("cur2Dy"); +this.pin2Dy0.setY(0, this.imageView.toPixelY0(0)); +var n = this.getSpectrumAt(0).getSubSpectra().size(); +this.pin2Dy1.setY(n, this.imageView.toPixelY0(n)); +}this.setWidgetX(this.pin1Dx0, this.getScale().minX); +this.setWidgetX(this.pin1Dx1, this.getScale().maxX); +this.setWidgetY(this.pin1Dy0, this.getScale().minY); +this.setWidgetY(this.pin1Dy1, this.getScale().maxY); +this.widgets = Clazz_newArray(-1, [this.zoomBox1D, this.zoomBox2D, this.pin1Dx0, this.pin1Dx01, this.pin1Dx1, this.pin1Dy0, this.pin1Dy01, this.pin1Dy1, this.pin2Dx0, this.pin2Dx01, this.pin2Dx1, this.pin2Dy0, this.pin2Dy01, this.pin2Dy1, this.cur2Dx0, this.cur2Dx1, this.cur2Dy, this.cur1D2x1, this.cur1D2x2]); +}); +Clazz_defineMethod(c$, "setWidgetX", +function(pw, x){ +pw.setX(x, this.toPixelX0(x)); +}, "JSV.common.PlotWidget,~N"); +Clazz_defineMethod(c$, "setWidgetY", +function(pw, y){ +pw.setY(y, this.toPixelY0(y)); +}, "JSV.common.PlotWidget,~N"); +Clazz_defineMethod(c$, "resetPinsFromView", +function(){ +if (this.pin1Dx0 == null) return; +this.setWidgetX(this.pin1Dx0, this.getScale().minXOnScale); +this.setWidgetX(this.pin1Dx1, this.getScale().maxXOnScale); +this.setWidgetY(this.pin1Dy0, this.getScale().minYOnScale); +this.setWidgetY(this.pin1Dy1, this.getScale().maxYOnScale); +}); +Clazz_defineMethod(c$, "resetPinPositions", +function(){ +this.resetX(this.pin1Dx0); +this.resetY(this.pin1Dy0); +this.resetY(this.pin1Dy1); +if (this.imageView == null) { +if (this.gs2dLinkedX != null) this.resetX(this.cur1D2x1); +if (this.gs2dLinkedY != null) this.resetX(this.cur1D2x2); +} else { +this.pin2Dy0.setY(this.pin2Dy0.getYVal(), this.imageView.toPixelY0(this.pin2Dy0.getYVal())); +this.pin2Dy1.setY(this.pin2Dy1.getYVal(), this.imageView.toPixelY0(this.pin2Dy1.getYVal())); +}}); +Clazz_defineMethod(c$, "resetX", +function(p){ +this.setWidgetX(p, p.getXVal()); +}, "JSV.common.PlotWidget"); +Clazz_defineMethod(c$, "resetY", +function(p){ +this.setWidgetY(p, p.getYVal()); +}, "JSV.common.PlotWidget"); +Clazz_defineMethod(c$, "setPinSliderPositions", +function(doDraw1DObjects){ +this.pin1Dx0.yPixel0 = this.pin1Dx1.yPixel0 = this.pin1Dx01.yPixel0 = this.yPixel0 - 5; +this.pin1Dx0.yPixel1 = this.pin1Dx1.yPixel1 = this.pin1Dx01.yPixel1 = this.yPixel0; +this.cur1D2x1.yPixel1 = this.cur1D2x2.yPixel1 = this.yPixel0 - 5; +this.cur1D2x1.yPixel0 = this.cur1D2x2.yPixel0 = this.yPixel1 + 6; +if (this.imageView == null) { +this.pin1Dy0.xPixel0 = this.pin1Dy1.xPixel0 = this.pin1Dy01.xPixel0 = this.xPixel1 + 5; +this.pin1Dy0.xPixel1 = this.pin1Dy1.xPixel1 = this.pin1Dy01.xPixel1 = this.xPixel1; +} else { +this.pin1Dy0.xPixel0 = this.pin1Dy1.xPixel0 = this.pin1Dy01.xPixel0 = this.imageView.xPixel1 + 15; +this.pin1Dy0.xPixel1 = this.pin1Dy1.xPixel1 = this.pin1Dy01.xPixel1 = this.imageView.xPixel1 + 10; +this.pin2Dx0.yPixel0 = this.pin2Dx1.yPixel0 = this.pin2Dx01.yPixel0 = this.yPixel0 - 5; +this.pin2Dx0.yPixel1 = this.pin2Dx1.yPixel1 = this.pin2Dx01.yPixel1 = this.yPixel0; +this.pin2Dy0.xPixel0 = this.pin2Dy1.xPixel0 = this.pin2Dy01.xPixel0 = this.imageView.xPixel1 + 5; +this.pin2Dy0.xPixel1 = this.pin2Dy1.xPixel1 = this.pin2Dy01.xPixel1 = this.imageView.xPixel1; +this.cur2Dx0.yPixel0 = this.cur2Dx1.yPixel0 = this.yPixel1 + 6; +this.cur2Dx0.yPixel1 = this.cur2Dx1.yPixel1 = this.yPixel0 - 5; +this.cur2Dx0.yPixel0 = this.cur2Dx1.yPixel0 = this.yPixel1 + 6; +this.cur2Dx1.yPixel1 = this.cur2Dx1.yPixel1 = this.yPixel0 - 5; +this.cur2Dy.xPixel0 = (doDraw1DObjects ? Clazz_doubleToInt((this.xPixel1 + this.imageView.xPixel0) / 2) : this.imageView.xPixel0 - 6); +this.cur2Dy.xPixel1 = this.imageView.xPixel1 + 5; +}}, "~B"); +Clazz_defineMethod(c$, "setDerivedPins", +function(subIndex){ +this.widgetsAreSet = true; +if (this.gs2dLinkedX != null) this.cur1D2x1.setX(this.cur1D2x1.getXVal(), this.toPixelX(this.cur1D2x1.getXVal())); +if (this.gs2dLinkedY != null) this.cur1D2x2.setX(this.cur1D2x2.getXVal(), this.toPixelX(this.cur1D2x2.getXVal())); +this.pin1Dx01.setX(0, Clazz_doubleToInt((this.pin1Dx0.xPixel0 + this.pin1Dx1.xPixel0) / 2)); +this.pin1Dy01.setY(0, Clazz_doubleToInt((this.pin1Dy0.yPixel0 + this.pin1Dy1.yPixel0) / 2)); +this.pin1Dx01.setEnabled(Math.min(this.pin1Dx0.xPixel0, this.pin1Dx1.xPixel0) > this.xPixel0 || Math.max(this.pin1Dx0.xPixel0, this.pin1Dx1.xPixel0) < this.xPixel1); +this.pin1Dy01.setEnabled(Math.min(this.pin1Dy0.yPixel0, this.pin1Dy1.yPixel0) > Math.min(this.toPixelY(this.getScale().minY), this.toPixelY(this.getScale().maxY)) || Math.max(this.pin1Dy0.yPixel0, this.pin1Dy1.yPixel0) < Math.max(this.toPixelY(this.getScale().minY), this.toPixelY(this.getScale().maxY))); +if (this.imageView == null) return; +var x = this.pin1Dx0.getXVal(); +this.cur2Dx0.setX(x, this.imageView.toPixelX(x)); +x = this.pin1Dx1.getXVal(); +this.cur2Dx1.setX(x, this.imageView.toPixelX(x)); +x = this.imageView.toX(this.imageView.xPixel0); +this.pin2Dx0.setX(x, this.imageView.toPixelX0(x)); +x = this.imageView.toX(this.imageView.xPixel1); +this.pin2Dx1.setX(x, this.imageView.toPixelX0(x)); +this.pin2Dx01.setX(0, Clazz_doubleToInt((this.pin2Dx0.xPixel0 + this.pin2Dx1.xPixel0) / 2)); +var y = this.imageView.imageHeight - 1 - this.imageView.yView1; +this.pin2Dy0.setY(y, this.imageView.toPixelY0(y)); +y = this.imageView.imageHeight - 1 - this.imageView.yView2; +this.pin2Dy1.setY(y, this.imageView.toPixelY0(y)); +this.pin2Dy01.setY(0, Clazz_doubleToInt((this.pin2Dy0.yPixel0 + this.pin2Dy1.yPixel0) / 2)); +this.cur2Dy.yPixel0 = this.cur2Dy.yPixel1 = this.imageView.subIndexToPixelY(subIndex); +this.pin2Dx01.setEnabled(Math.min(this.pin2Dx0.xPixel0, this.pin2Dx1.xPixel0) != this.imageView.xPixel0 || Math.max(this.pin2Dx0.xPixel0, this.pin2Dx1.xPixel1) != this.imageView.xPixel1); +this.pin2Dy01.setEnabled(Math.min(this.pin2Dy0.yPixel0, this.pin2Dy1.yPixel0) != this.yPixel0 || Math.max(this.pin2Dy0.yPixel0, this.pin2Dy1.yPixel1) != this.yPixel1); +}, "~N"); +Clazz_defineMethod(c$, "doZoom", +function(initX, initY, finalX, finalY, is1D, is1DY, checkRange, checkLinked, addZoom){ +if (initX == finalX) { +initX = this.getScale().minXOnScale; +finalX = this.getScale().maxXOnScale; +} else if (this.isLinked && checkLinked) this.pd.doZoomLinked(this, initX, finalX, addZoom, checkRange, is1D); +if (initX > finalX) { +var tempX = initX; +initX = finalX; +finalX = tempX; +}if (initY > finalY) { +var tempY = initY; +initY = finalY; +finalY = tempY; +}var is2DGrayScaleChange = (!is1D && this.imageView != null && (this.imageView.minZ != initY || this.imageView.maxZ != finalY)); +if (!this.zoomEnabled && !is2DGrayScaleChange) return; +if (checkRange) { +if (!this.getScale().isInRangeX(initX) && !this.getScale().isInRangeX(finalX)) return; +if (!this.getScale().isInRangeX(initX)) { +initX = this.getScale().minX; +} else if (!this.getScale().isInRangeX(finalX)) { +finalX = this.getScale().maxX; +}} else { +}this.pd.setTaintedAll(); +var viewScales = this.viewData.getScaleData(); +var startIndices = Clazz_newIntArray (this.nSpectra, 0); +var endIndices = Clazz_newIntArray (this.nSpectra, 0); +this.graphsTemp.clear(); +var subspecs = this.getSpectrumAt(0).getSubSpectra(); +var dontUseSubspecs = (subspecs == null || subspecs.size() == 2); +var is2D = !this.getSpectrumAt(0).is1D(); +if (!is2D && !dontUseSubspecs) { +this.graphsTemp.addLast(this.getSpectrum()); +if (!JSV.common.ScaleData.setDataPointIndices(this.graphsTemp, initX, finalX, 3, startIndices, endIndices)) return; +} else { +if (!JSV.common.ScaleData.setDataPointIndices(this.spectra, initX, finalX, 3, startIndices, endIndices)) return; +}var y1 = initY; +var y2 = finalY; +var isXOnly = (y1 == y2); +if (isXOnly) { +var f = (!is2DGrayScaleChange && is1D ? f = this.getScale().spectrumScaleFactor : 1); +if (Math.abs(f - 1) < 0.0001) { +y1 = this.getScale().minYOnScale; +y2 = this.getScale().maxYOnScale; +}}var yScales = null; +if (isXOnly || is1DY) { +this.getCurrentView(); +yScales = this.viewData.getNewScales(this.iSpectrumSelected, isXOnly, y1, y2); +}this.getView(initX, finalX, y1, y2, startIndices, endIndices, viewScales, yScales); +this.setXPixelMovedTo(1E10, 1.7976931348623157E308, 0, 0); +this.setWidgetX(this.pin1Dx0, initX); +this.setWidgetX(this.pin1Dx1, finalX); +this.setWidgetY(this.pin1Dy0, y1); +this.setWidgetY(this.pin1Dy1, y2); +if (this.imageView == null) { +this.updateDialogs(); +} else { +var isub = this.getSpectrumAt(0).getSubIndex(); +var ifix = this.imageView.fixSubIndex(isub); +if (ifix != isub) this.setCurrentSubSpectrum(ifix); +if (is2DGrayScaleChange) this.update2dImage(false); +}if (addZoom) this.addCurrentZoom(); +}, "~N,~N,~N,~N,~B,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "updateDialogs", +function(){ +this.updateDialog(JSV.common.Annotation.AType.PeakList, -1); +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}); +Clazz_defineMethod(c$, "setCurrentSubSpectrum", +function(i){ +var spec0 = this.getSpectrumAt(0); +i = spec0.setCurrentSubSpectrum(i); +if (spec0.isForcedSubset()) this.viewData.setXRangeForSubSpectrum(this.getSpectrum().getXYCoords()); +this.pd.notifySubSpectrumChange(i, this.getSpectrum()); +}, "~N"); +Clazz_defineMethod(c$, "addCurrentZoom", +function(){ +if (this.viewList.size() > this.currentZoomIndex + 1) for (var i = this.viewList.size() - 1; i > this.currentZoomIndex; i--) this.viewList.removeItemAt(i); + +this.viewList.addLast(this.viewData); +this.currentZoomIndex++; +}); +Clazz_defineMethod(c$, "setZoomTo", +function(i){ +this.currentZoomIndex = i; +this.viewData = this.viewList.get(i); +this.resetPinsFromView(); +}, "~N"); +Clazz_defineMethod(c$, "clearViews", +function(){ +if (this.isLinked) { +this.pd.clearLinkViews(this); +}this.setZoom(0, 0, 0, 0); +for (var i = this.viewList.size(); --i >= 1; ) this.viewList.removeItemAt(i); + +}); +Clazz_defineMethod(c$, "drawAll", +function(gMain, gFront, gBack, iSplit, needNewPins, doAll, pointsOnly){ +this.g2d = this.pd.g2d; +this.gMain = gMain; +var spec0 = this.getSpectrumAt(0); +var subIndex = spec0.getSubIndex(); +this.is2DSpectrum = (!spec0.is1D() && (this.isLinked || this.pd.getBoolean(JSV.common.ScriptToken.DISPLAY2D)) && (this.imageView != null || this.get2DImage(spec0))); +if (this.imageView != null && doAll) { +if (this.pd.isPrinting && this.g2d !== this.pd.g2d0) this.g2d.newGrayScaleImage(gMain, this.image2D, this.imageView.imageWidth, this.imageView.imageHeight, this.imageView.getBuffer()); +if (this.is2DSpectrum) this.setPositionForFrame(iSplit); +this.draw2DImage(); +}var iSelected = (this.stackSelected || !this.showAllStacked ? this.iSpectrumSelected : -1); +var doYScale = (!this.showAllStacked || this.nSpectra == 1 || iSelected >= 0); +var doDraw1DObjects = (this.imageView == null || this.pd.display1D); +var n = (iSelected >= 0 ? 1 : 0); +var iSpectrumForScale = this.getFixedSelectedSpectrumIndex(); +if (doDraw1DObjects && doAll) { +this.fillBox(gMain, this.xPixel0, this.yPixel0, this.xPixel1, this.yPixel1, JSV.common.ScriptToken.PLOTAREACOLOR); +if (iSelected < 0) { +doYScale = true; +for (var i = 0; i < this.nSpectra; i++) if (this.doPlot(i, iSplit)) { +if (n++ == 0) continue; +doYScale = new Boolean (doYScale & this.viewData.areYScalesSame(i - 1, i)).valueOf(); +} +}}var iSpecForFrame = (this.nSpectra == 1 ? 0 : !this.showAllStacked ? this.iSpectrumMovedTo : this.iSpectrumSelected); +var g2 = (gBack === gMain ? gFront : gBack); +if (doAll) { +var addCurrentBox = (this.pd.getCurrentGraphSet() === this && !this.isLinked && (!this.isSplittable || (this.nSplit == 1 || this.pd.currentSplitPoint == iSplit))); +var drawUpDownArrows = (this.zoomEnabled && !this.isDrawNoSpectra() && this.pd.isCurrentGraphSet(this) && this.spectra.get(0).isScalable() && (addCurrentBox || this.nSpectra == 1) && (this.nSplit == 1 || this.pd.currentSplitPoint == this.iSpectrumMovedTo)); +var addSplitBox = this.isSplittable; +this.drawFrame(gMain, iSpecForFrame, addCurrentBox, addSplitBox, drawUpDownArrows); +}if (this.pd.isCurrentGraphSet(this) && iSplit == this.pd.currentSplitPoint && (n < 2 || this.iSpectrumSelected >= 0)) this.$haveSelectedSpectrum = true; +this.haveSingleYScale = (this.showAllStacked && this.nSpectra > 1 ? this.allowStackedYScale && doYScale : true); +if (doDraw1DObjects) { +var yOffsetPixels = Clazz_floatToInt(this.yPixels * (this.yStackOffsetPercent / 100)); +this.haveLeftRightArrows = false; +for (var i = 0, offset = 0; i < this.nSpectra; i++) { +if (!this.doPlot(i, iSplit)) continue; +var isGrey = (this.stackSelected && this.iSpectrumSelected >= 0 && this.iSpectrumSelected != i); +var ig = (!this.reversePlot && this.getShowAnnotation(JSV.common.Annotation.AType.Integration, i) && (!this.showAllStacked || this.iSpectrumSelected == i) ? this.getDialog(JSV.common.Annotation.AType.Integration, i).getData() : null); +this.setScale(i); +var spec = this.spectra.get(i); +if (this.nSplit > 1) { +iSpectrumForScale = i; +}var doDrawWidgets = !isGrey && (this.nSplit == 1 || this.showAllStacked || this.iSpectrumSelected == iSplit); +var doDraw1DY = (doDrawWidgets && this.$haveSelectedSpectrum && i == iSpectrumForScale); +if (doDrawWidgets) { +this.resetPinsFromView(); +this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, doDraw1DY, false); +}if (this.haveSingleYScale && i == iSpectrumForScale && doAll) { +this.drawGrid(gMain); +if (this.pd.isPrinting && this.nSplit > 1) this.drawSpectrumSource(gMain, i); +}if (doDrawWidgets) this.drawWidgets(gFront, g2, subIndex, false, doDraw1DObjects, doDraw1DY, true); +if (!this.isDrawNoSpectra() && (this.nSpectra == 1 || this.iSpectrumSelected >= 0) && (this.haveSingleYScale && i == iSpectrumForScale || this.showAllStacked && this.stackSelected && i == this.iSpectrumSelected)) this.drawHighlightsAndPeakTabs(gFront, g2, i); +if (doAll) { +if (n == 1 && this.iSpectrumSelected < 0 || this.iSpectrumSelected == i && this.pd.isCurrentGraphSet(this)) { +if (this.pd.titleOn && !this.pd.titleDrawn) { +this.pd.drawTitle(gMain, this.height, this.width, this.pd.getDrawTitle(this.pd.isPrinting)); +this.pd.titleDrawn = true; +}}if (this.haveSingleYScale && i == iSpectrumForScale) { +if (this.pd.getBoolean(JSV.common.ScriptToken.YSCALEON)) this.drawYScale(gMain, this); +if (this.pd.getBoolean(JSV.common.ScriptToken.YUNITSON)) this.drawYUnits(gMain); +}}var isContinuous = spec.isContinuous(); +var onSpectrum = ((this.nSplit > 1 ? i == this.iSpectrumMovedTo : this.isLinked || i == iSpectrumForScale) && !this.pd.isPrinting && isContinuous); +var hasPendingIntegral = (!isGrey && this.pendingIntegral != null && spec === this.pendingIntegral.spec); +if (doAll || hasPendingIntegral) { +this.drawPlot(hasPendingIntegral && !doAll ? gFront : gMain, i, spec, isContinuous, offset, isGrey, null, onSpectrum, hasPendingIntegral, pointsOnly); +}this.drawIntegration(gFront, i, offset, isGrey, ig, isContinuous, onSpectrum); +this.drawMeasurements(gFront, i); +if (this.pendingMeasurement != null && this.pendingMeasurement.spec === spec) this.drawMeasurement(gFront, this.pendingMeasurement); +if (onSpectrum && this.xPixelMovedTo >= 0) { +this.drawSpectrumPointer(gFront, spec, offset, ig); +}if (this.nSpectra > 1 && this.nSplit == 1 && this.pd.isCurrentGraphSet(this) && doAll) { +this.haveLeftRightArrows = true; +if (!this.pd.isPrinting) { +this.setScale(0); +iSpecForFrame = (this.iSpectrumSelected); +if (this.nSpectra != 2) { +this.setPlotColor(gMain, (iSpecForFrame + this.nSpectra - 1) % this.nSpectra); +this.fillArrow(gMain, 1, this.yHArrows, this.xHArrows - 9, true); +this.setCurrentBoxColor(gMain); +this.fillArrow(gMain, 1, this.yHArrows, this.xHArrows - 9, false); +}if (iSpecForFrame >= 0) { +this.setPlotColor(gMain, iSpecForFrame); +this.fillCircle(gMain, this.xHArrows, this.yHArrows, true); +}this.setCurrentBoxColor(gMain); +this.fillCircle(gMain, this.xHArrows, this.yHArrows, false); +this.setPlotColor(gMain, (iSpecForFrame + 1) % this.nSpectra); +this.fillArrow(gMain, 2, this.yHArrows, this.xHArrows + 9, true); +this.setCurrentBoxColor(gMain); +this.fillArrow(gMain, 2, this.yHArrows, this.xHArrows + 9, false); +}}offset -= yOffsetPixels; +} +if (doAll) { +if (this.pd.getBoolean(JSV.common.ScriptToken.XSCALEON)) this.drawXScale(gMain, this); +if (this.pd.getBoolean(JSV.common.ScriptToken.XUNITSON)) this.drawXUnits(gMain); +}} else { +if (doAll) { +if (this.pd.getBoolean(JSV.common.ScriptToken.XSCALEON)) this.drawXScale(gMain, this.imageView); +if (this.pd.getBoolean(JSV.common.ScriptToken.YSCALEON)) this.drawYScale(gMain, this.imageView); +if (subIndex >= 0) this.draw2DUnits(gMain); +}this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, true, false); +this.drawWidgets(gFront, g2, subIndex, needNewPins, doDraw1DObjects, true, true); +this.widgetsAreSet = true; +}if (this.annotations != null) this.drawAnnotations(gFront, this.annotations, null); +}, "~O,~O,~O,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "drawSpectrumSource", +function(g, i){ +this.pd.printFilePath(g, this.pd.thisWidth - this.pd.right, this.yPixel0, this.spectra.get(i).getFilePath()); +}, "~O,~N"); +Clazz_defineMethod(c$, "doPlot", +function(i, iSplit){ +var isGrey = (this.stackSelected && this.iSpectrumSelected >= 0 && this.iSpectrumSelected != i); +var ok = (this.showAllStacked || this.iSpectrumSelected == -1 || this.iSpectrumSelected == i); +return (this.nSplit > 1 ? i == iSplit : ok && (!this.pd.isPrinting || !isGrey)); +}, "~N,~N"); +Clazz_defineMethod(c$, "drawSpectrumPointer", +function(gFront, spec, yOffset, ig){ +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +var iHandle = this.pd.integralShiftMode; +if (ig != null) { +if ((!this.pd.ctrlPressed || this.pd.isIntegralDrag) && !this.isOnSpectrum(this.pd.mouseX, this.pd.mouseY, -1)) { +ig = null; +} else if (iHandle == 0) { +iHandle = this.getShiftMode(this.pd.mouseX, this.pd.mouseY); +if (iHandle == 0) iHandle = 2147483647; +}}var y0 = this.yValueMovedTo; +this.yValueMovedTo = (ig == null ? spec.getYValueAt(this.xValueMovedTo) : ig.getPercentYValueAt(this.xValueMovedTo)); +this.setCoordStr(this.xValueMovedTo, this.yValueMovedTo); +if (iHandle != 0) { +this.setPlotColor(gFront, iHandle == 2147483647 ? -1 : 0); +if (iHandle < 0 || iHandle == 2147483647) { +this.drawHandle(gFront, this.xPixelPlot1, this.yPixelPlot0, 3, false); +}if (iHandle > 0) { +this.drawHandle(gFront, this.xPixelPlot0, this.yPixelPlot1, 3, false); +}if (iHandle != 2147483647) return; +}if (ig != null) this.g2d.setStrokeBold(gFront, true); +if (Double.isNaN(y0) || this.pendingMeasurement != null) { +this.g2d.drawLine(gFront, this.xPixelMovedTo, this.yPixel0, this.xPixelMovedTo, this.yPixel1); +if (this.xPixelMovedTo2 >= 0) this.g2d.drawLine(gFront, this.xPixelMovedTo2, this.yPixel0, this.xPixelMovedTo2, this.yPixel1); +this.yValueMovedTo = NaN; +} else { +var y = (ig == null ? yOffset + this.toPixelY(this.yValueMovedTo) : this.toPixelYint(this.yValueMovedTo / 100)); +if (y == this.fixY(y)) this.g2d.drawLine(gFront, this.xPixelMovedTo, y - 10, this.xPixelMovedTo, y + 10); +}if (ig != null) this.g2d.setStrokeBold(gFront, false); +}, "~O,JSV.common.Spectrum,~N,JSV.common.IntegralData"); +Clazz_defineMethod(c$, "setScale", +function(i){ +this.viewData.setScale(i, this.xPixels, this.yPixels, this.spectra.get(i).isInverted()); +}, "~N"); +Clazz_defineMethod(c$, "draw2DUnits", +function(g){ +var nucleusX = this.getSpectrumAt(0).nucleusX; +var nucleusY = this.getSpectrumAt(0).nucleusY; +this.setColorFromToken(g, JSV.common.ScriptToken.PLOTCOLOR); +this.drawUnits(g, nucleusX, this.imageView.xPixel1 + 5 * this.pd.scalingFactor, this.yPixel1, 1, 1.0); +this.drawUnits(g, nucleusY, this.imageView.xPixel0 - 5 * this.pd.scalingFactor, this.yPixel0, 1, 0); +}, "~O"); +Clazz_defineMethod(c$, "drawPeakTabs", +function(gFront, g2, spec){ +var list = (this.nSpectra == 1 || this.iSpectrumSelected >= 0 ? spec.getPeakList() : null); +if (list != null && list.size() > 0) { +if (this.piMouseOver != null && this.piMouseOver.spectrum === spec && this.pd.isMouseUp()) { +this.g2d.setGraphicsColor(g2, this.g2d.getColor4(240, 240, 240, 140)); +this.drawPeak(g2, this.piMouseOver, 0); +spec.setHighlightedPeak(this.piMouseOver); +} else { +spec.setHighlightedPeak(null); +}this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +for (var i = list.size(); --i >= 0; ) { +var p = list.get(i); +this.drawPeak(gFront, p, p === spec.getSelectedPeak() ? 14 : 7); +} +}}, "~O,~O,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "drawPeak", +function(g, pi, tickSize){ +if (this.pd.isPrinting) return; +var xMin = pi.getXMin(); +var xMax = pi.getXMax(); +if (xMin == xMax) return; +this.drawBar(g, pi, xMin, xMax, null, tickSize); +}, "~O,JSV.common.PeakInfo,~N"); +Clazz_defineMethod(c$, "drawWidgets", +function(gFront, gBack, subIndex, needNewPins, doDraw1DObjects, doDraw1DY, postGrid){ +this.setWidgets(needNewPins, subIndex, doDraw1DObjects); +if (this.pd.isPrinting && (this.imageView == null ? !this.cur1D2Locked : this.sticky2Dcursor)) return; +if (!this.pd.isPrinting && !postGrid) { +if (doDraw1DObjects) { +this.fillBox(gFront, this.xPixel0, this.pin1Dx0.yPixel1, this.xPixel1, this.pin1Dx1.yPixel1 + 2, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin1Dx0.xPixel0, this.pin1Dx0.yPixel1, this.pin1Dx1.xPixel0, this.pin1Dx1.yPixel1 + 2, JSV.common.ScriptToken.PLOTCOLOR); +} else { +this.fillBox(gFront, this.imageView.xPixel0, this.pin2Dx0.yPixel1, this.imageView.xPixel1, this.pin2Dx0.yPixel1 + 2, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin2Dx0.xPixel0, this.pin2Dx0.yPixel1, this.pin2Dx1.xPixel0, this.pin2Dx1.yPixel1 + 2, JSV.common.ScriptToken.PLOTCOLOR); +this.fillBox(gFront, this.pin2Dy0.xPixel1, this.yPixel1, this.pin2Dy1.xPixel1 + 2, this.yPixel0, JSV.common.ScriptToken.GRIDCOLOR); +this.fillBox(gFront, this.pin2Dy0.xPixel1, this.pin2Dy0.yPixel1, this.pin2Dy1.xPixel1 + 2, this.pin2Dy1.yPixel0, JSV.common.ScriptToken.PLOTCOLOR); +}this.fillBox(gFront, this.pin1Dy0.xPixel1, this.yPixel1, this.pin1Dy1.xPixel1 + 2, this.yPixel0, JSV.common.ScriptToken.GRIDCOLOR); +if (doDraw1DY) this.fillBox(gFront, this.pin1Dy0.xPixel1, this.pin1Dy0.yPixel1, this.pin1Dy1.xPixel1 + 2, this.pin1Dy1.yPixel0, JSV.common.ScriptToken.PLOTCOLOR); +}for (var i = 0; i < this.widgets.length; i++) { +var pw = this.widgets[i]; +if (pw == null || !pw.isPinOrCursor && !this.zoomEnabled) continue; +var isLockedCursor = (pw === this.cur1D2x1 || pw === this.cur1D2x2 || pw === this.cur2Dx0 || pw === this.cur2Dx1 || pw === this.cur2Dy); +if ((pw.isPin || !pw.isPinOrCursor) == postGrid) continue; +if (pw.is2D) { +if (pw === this.cur2Dx0 && !doDraw1DObjects) continue; +} else { +var isPin1Dy = (pw === this.pin1Dy0 || pw === this.pin1Dy1 || pw === this.pin1Dy01); +if ((this.imageView != null && doDraw1DObjects == isPin1Dy) || isPin1Dy && !doDraw1DY || pw === this.cur1D2x1 && this.gs2dLinkedX == null || pw === this.cur1D2x2 && this.gs2dLinkedY == null || pw === this.zoomBox1D && (this.pd.isIntegralDrag || this.pd.integralShiftMode != 0)) { +if (!this.isLinked || this.imageView != null) continue; +}}if (this.pd.isPrinting && !isLockedCursor) continue; +if (pw.isPinOrCursor) { +this.setColorFromToken(gFront, pw.color); +this.g2d.drawLine(gFront, pw.xPixel0, pw.yPixel0, pw.xPixel1, pw.yPixel1); +pw.isVisible = true; +if (pw.isPin) this.drawHandle(gFront, pw.xPixel0, pw.yPixel0, 2, !pw.isEnabled); +} else if (pw.xPixel1 != pw.xPixel0) { +this.fillBox(gBack, pw.xPixel0, pw.yPixel0, pw.xPixel1, pw.yPixel1, pw === this.zoomBox1D && this.pd.shiftPressed ? JSV.common.ScriptToken.ZOOMBOXCOLOR2 : JSV.common.ScriptToken.ZOOMBOXCOLOR); +}} +}, "~O,~O,~N,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "drawBar", +function(g, pi, xMin, xMax, whatColor, tickSize){ +var r = xMax + xMin; +var d = Math.abs(xMax - xMin); +var range = Math.abs(this.toX(this.xPixel1) - this.toX(this.xPixel0)); +if (false && tickSize > 0 && d > range / 20) { +d = range / 20; +xMin = r / 2 - d / 2; +xMax = r / 2 + d / 2; +}var x1 = this.toPixelX(xMin); +var x2 = this.toPixelX(xMax); +if (x1 > x2) { +var tmp = x1; +x1 = x2; +x2 = tmp; +}x1 = this.fixX(x1); +x2 = this.fixX(x2); +if (x2 - x1 < 3) { +x1 -= 2; +x2 += 2; +}if (pi != null) pi.setPixelRange(x1, x2); +if (tickSize == 0) { +this.fillBox(g, x1, this.yPixel0, x2, this.yPixel0 + this.yPixels, whatColor); +} else { +this.fillBox(g, x1, this.yPixel0 + 2, x2, this.yPixel0 + 5, whatColor); +if (pi != null) { +x1 = Clazz_doubleToInt((x1 + x2) / 2); +this.fillBox(g, x1 - 1, this.yPixel0 + 2, x1 + 1, this.yPixel0 + 2 + tickSize, whatColor); +}}}, "~O,JSV.common.PeakInfo,~N,~N,JSV.common.ScriptToken,~N"); +Clazz_defineMethod(c$, "drawIntegration", +function(gFront, index, yOffset, isGrey, iData, isContinuous, isSelected){ +if (iData != null) { +if (this.haveIntegralDisplayed(index)) this.drawPlot(gFront, index, this.spectra.get(index), true, yOffset, false, iData, true, false, false); +this.drawIntegralValues(gFront, index, yOffset); +}var ratios = this.getIntegrationRatios(index); +if (ratios != null) this.drawAnnotations(gFront, ratios, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +}, "~O,~N,~N,~B,JSV.common.IntegralData,~B,~B"); +Clazz_defineMethod(c$, "getMeasurements", +function(type, iSpec){ +var ad = this.getDialog(type, iSpec); +return (ad == null || ad.getData().size() == 0 || !ad.getState() ? null : ad.getData()); +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "drawPlot", +function(g, index, spec, isContinuous, yOffset, isGrey, ig, isSelected, hasPendingIntegral, pointsOnly){ +var xyCoords = (ig == null ? spec.getXYCoords() : this.getIntegrationGraph(index).getXYCoords()); +var isIntegral = (ig != null); +var bsDraw = (isIntegral ? ig.getBitSet() : null); +var fillPeaks = (hasPendingIntegral || spec.fillColor != null && isSelected); +var iColor = (isGrey ? -2 : isIntegral ? -1 : !this.allowStacking ? 0 : index); +this.setPlotColor(g, iColor); +var plotOn = true; +var y0 = this.toPixelY(0); +if (isIntegral) fillPeaks = new Boolean (fillPeaks & (y0 == this.fixY(y0))).valueOf(); + else y0 = this.fixY(y0); +var cInt = (isIntegral || fillPeaks ? this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR) : null); +var cFill = (cInt == null || spec.fillColor == null ? cInt : spec.fillColor); +var iFirst = this.viewData.getStartingPointIndex(index); +var iLast = this.viewData.getEndingPointIndex(index); +if (isContinuous && !pointsOnly) { +iLast--; +var doLineTo = (isIntegral || this.pendingIntegral != null) && this.g2d.canDoLineTo(); +if (doLineTo) this.g2d.doStroke(g, true); +var isDown = false; +for (var i = iFirst; i <= iLast; i++) { +var point1 = xyCoords[i]; +var point2 = xyCoords[i + 1]; +var y1 = (isIntegral ? this.toPixelYint(point1.getYVal()) : this.toPixelY(point1.getYVal())); +if (y1 == -2147483648) continue; +var y2 = (isIntegral ? this.toPixelYint(point2.getYVal()) : this.toPixelY(point2.getYVal())); +if (y2 == -2147483648) continue; +var xv1 = point1.getXVal(); +var xv2 = point2.getXVal(); +var x1 = this.toPixelX(xv1); +var x2 = this.toPixelX(xv2); +y1 = this.fixY(yOffset + y1); +y2 = this.fixY(yOffset + y2); +if (isIntegral) { +if (i == iFirst) { +this.xPixelPlot1 = x1; +this.yPixelPlot0 = y1; +}this.xPixelPlot0 = x2; +this.yPixelPlot1 = y2; +}if (x2 == x1 && y1 == y2) continue; +if (fillPeaks && hasPendingIntegral && this.pendingIntegral.overlaps(xv1, xv2)) { +if (cFill != null) { +this.g2d.doStroke(g, false); +this.g2d.setGraphicsColor(g, cFill); +}this.g2d.fillRect(g, Math.min(x1, x2), Math.min(y0, y1), Math.max(1, Math.abs(x2 - x1)), Math.abs(y0 - y1)); +if (cFill != null) { +this.g2d.doStroke(g, false); +this.g2d.doStroke(g, true); +isDown = false; +this.setPlotColor(g, iColor); +}continue; +}if (y1 == y2 && (y1 == this.yPixel0)) { +continue; +}if (bsDraw != null && bsDraw.get(i) != plotOn) { +plotOn = bsDraw.get(i); +if (doLineTo && isDown) { +this.g2d.doStroke(g, false); +this.g2d.doStroke(g, true); +isDown = false; +}if (!this.pd.isPrinting && this.pd.integralShiftMode != 0) this.setPlotColor(g, 0); + else if (plotOn) this.setColorFromToken(g, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); + else this.setPlotColor(g, -3); +}if (this.pd.isPrinting && !plotOn) continue; +if (isDown) { +this.g2d.lineTo(g, x2, y2); +} else { +this.g2d.drawLine(g, x1, y1, x2, y2); +isDown = doLineTo; +}} +if (doLineTo) this.g2d.doStroke(g, false); +} else { +for (var i = iFirst; i <= iLast; i++) { +var point = xyCoords[i]; +var y2 = this.toPixelY(point.getYVal()); +if (y2 == -2147483648) continue; +var x1 = this.toPixelX(point.getXVal()); +var y1 = this.toPixelY(Math.max(this.getScale().minYOnScale, 0)); +y1 = this.fixY(yOffset + y1); +y2 = this.fixY(yOffset + y2); +if (y1 == y2 && (y1 == this.yPixel0 || y1 == this.yPixel1)) continue; +if (pointsOnly) this.g2d.fillRect(g, x1 - 1, y2 - 1, 3, 3); + else this.g2d.drawLine(g, x1, y1, x1, y2); +} +if (!pointsOnly && this.getScale().isYZeroOnScale()) { +var y = yOffset + this.toPixelY(this.getScale().spectrumYRef); +if (y == this.fixY(y)) this.g2d.drawLine(g, this.xPixel1, y, this.xPixel0, y); +}}}, "~O,~N,JSV.common.Spectrum,~B,~N,~B,JSV.common.IntegralData,~B,~B,~B"); +Clazz_defineMethod(c$, "drawFrame", +function(g, iSpec, addCurrentBox, addSplitBox, drawUpDownArrows){ +if (!this.pd.gridOn || this.pd.isPrinting) { +this.setColorFromToken(g, JSV.common.ScriptToken.GRIDCOLOR); +this.g2d.drawRect(g, this.xPixel0, this.yPixel0, this.xPixels, this.yPixels); +if (this.pd.isPrinting) return; +}this.setCurrentBoxColor(g); +if (drawUpDownArrows) { +if (iSpec >= 0) { +this.setPlotColor(g, iSpec); +this.fillArrow(g, 3, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) - 9, true); +this.fillArrow(g, 4, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) + 9, true); +this.setCurrentBoxColor(g); +}this.fillArrow(g, 3, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) - 9, false); +this.fillCircle(g, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2), false); +this.fillArrow(g, 4, this.xVArrows, Clazz_doubleToInt((this.yPixel00 + this.yPixel11) / 2) + 9, false); +}if (this.imageView != null) return; +if (addCurrentBox) { +var x1 = this.xPixel00 + 10; +var x2 = this.xPixel11 - 10; +var y1 = this.yPixel00 + 1; +var y2 = this.yPixel11 - 2; +this.g2d.drawLine(g, x1, y1, x2, y1); +this.g2d.drawLine(g, x2, y1, x2, y2); +this.g2d.drawLine(g, x1, y2, x2, y2); +this.splitterX = this.closerX = -2147483648; +this.drawBox(g, x2 - 10, y1, x2, y1 + 10, null); +this.g2d.drawLine(g, x2 - 10, y1 + 10, x2, y1); +this.g2d.drawLine(g, x2, y1 + 10, x2 - 10, y1); +this.closerX = x2 - 10; +this.closerY = y1; +if (addSplitBox) { +x2 -= 10; +this.fillBox(g, x2 - 10, y1, x2, y1 + 10, null); +this.splitterX = x2 - 10; +this.splitterY = y1; +}}}, "~O,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "drawGrid", +function(g){ +if (!this.pd.gridOn || this.imageView != null) return; +this.setColorFromToken(g, JSV.common.ScriptToken.GRIDCOLOR); +var lastX; +if (Double.isNaN(this.getScale().firstX)) { +lastX = this.getScale().maxXOnScale + this.getScale().steps[0] / 2; +for (var val = this.getScale().minXOnScale; val < lastX; val += this.getScale().steps[0]) { +var x = this.toPixelX(val); +this.g2d.drawLine(g, x, this.yPixel0, x, this.yPixel1); +} +} else { +lastX = this.getScale().maxXOnScale * 1.0001; +for (var val = this.getScale().firstX; val <= lastX; val += this.getScale().steps[0]) { +var x = this.toPixelX(val); +this.g2d.drawLine(g, x, this.yPixel0, x, this.yPixel1); +} +}for (var val = this.getScale().firstY; val < this.getScale().maxYOnScale + this.getScale().steps[1] / 2; val += this.getScale().steps[1]) { +var y = this.toPixelY(val); +if (y == this.fixY(y)) this.g2d.drawLine(g, this.xPixel0, y, this.xPixel1, y); +} +}, "~O"); +Clazz_defineMethod(c$, "drawXScale", +function(g, c){ +this.setColorFromToken(g, JSV.common.ScriptToken.SCALECOLOR); +if (this.pd.isPrinting) this.g2d.drawLine(g, c.getXPixel0(), this.yPixel1, c.getXPixel0() + c.getXPixels() - 1, this.yPixel1); +var precision = this.getScale().precision[0]; +var font = this.pd.setFont(g, c.getXPixels(), 0, this.pd.isPrinting ? 10 : 12, false); +var y1 = this.yPixel1; +var y2 = this.yPixel1 + 4 * this.pd.scalingFactor; +var y3 = this.yPixel1 + 2 * this.pd.scalingFactor; +var h = font.getHeight(); +var dx = c.toPixelX(this.getScale().steps[0]) - c.toPixelX(0); +var maxWidth = Math.abs(dx * 0.95); +var firstX = this.getScale().firstX - this.getScale().steps[0]; +var lastX = (this.getScale().maxXOnScale + this.getScale().steps[0]) * 1.0001; +for (var pass = 0; pass < 2; pass++) { +if (pass == 1) JSV.common.ScaleData.fixScale(this.mapX); +var prevX = 1e10; +for (var val = firstX; val <= lastX; val += this.getScale().steps[0]) { +var x = c.toPixelX(val); +var d = Double.$valueOf(val); +var s; +switch (pass) { +case 0: +s = JU.DF.formatDecimalDbl(val, precision); +this.mapX.put(d, s); +this.drawTick(g, x, y1, y2, c); +dx = Math.abs(prevX - val); +var ntick = this.getScale().minorTickCounts[0]; +if (ntick != 0) { +var step = dx / ntick; +for (var i = 1; i < ntick; i++) { +var x1 = val - i * step; +this.drawTick(g, c.toPixelX(x1), y1, y3, c); +} +}prevX = val; +continue; +case 1: +s = this.mapX.get(d); +if (s == null || x != c.fixX(x)) continue; +var w = this.pd.getStringWidth(s); +var n = (x + Clazz_doubleToInt(w / 2) == c.fixX(x + Clazz_doubleToInt(w / 2)) ? 2 : 0); +if (n > 0) this.g2d.drawString(g, s, x - Clazz_doubleToInt(w / n), y2 + h); +val += Math.floor(w / maxWidth) * this.getScale().steps[0]; +break; +} +} +} +this.mapX.clear(); +}, "~O,JSV.common.XYScaleConverter"); +Clazz_defineMethod(c$, "drawTick", +function(g, x, y1, y2, c){ +if (x == c.fixX(x)) this.g2d.drawLine(g, x, y1, x, y2); +}, "~O,~N,~N,~N,JSV.common.XYScaleConverter"); +Clazz_defineMethod(c$, "drawYScale", +function(g, c){ +var sd = c.getScale(); +var precision = sd.precision[1]; +var font = this.pd.setFont(g, c.getXPixels(), 0, this.pd.isPrinting ? 10 : 12, false); +var h = font.getHeight(); +var max = sd.maxYOnScale + sd.steps[1] / 2; +var yLast = -2147483648; +this.setColorFromToken(g, JSV.common.ScriptToken.SCALECOLOR); +for (var pass = 0; pass < 2; pass++) { +if (pass == 1) JSV.common.ScaleData.fixScale(this.mapX); +for (var val = sd.firstY; val < max; val += sd.steps[1]) { +var d = Double.$valueOf(val); +var x1 = c.getXPixel0(); +var y = c.toPixelY(val); +if (y != c.fixY(y)) continue; +var s; +if (pass == 0) this.g2d.drawLine(g, x1, y, x1 - 3 * this.pd.scalingFactor, y); +if (Math.abs(y - yLast) <= h) continue; +yLast = y; +switch (pass) { +case 0: +s = JU.DF.formatDecimalDbl(val, precision); +this.mapX.put(d, s); +break; +case 1: +s = this.mapX.get(d); +if (s == null) continue; +if (s.startsWith("0") && s.contains("E")) s = "0"; +this.g2d.drawString(g, s, (x1 - 4 * this.pd.scalingFactor - this.pd.getStringWidth(s)), y + Clazz_doubleToInt(h / 3)); +break; +} +} +} +this.mapX.clear(); +}, "~O,JSV.common.XYScaleConverter"); +Clazz_defineMethod(c$, "drawXUnits", +function(g){ +var units = this.spectra.get(0).getAxisLabel(true); +if (units != null) this.drawUnits(g, units, this.xPixel1 + 25 * this.pd.scalingFactor, this.yPixel1 + 5 * this.pd.scalingFactor, 1, 1); +}, "~O"); +Clazz_defineMethod(c$, "drawUnits", +function(g, s, x, y, hOff, vOff){ +this.setColorFromToken(g, JSV.common.ScriptToken.UNITSCOLOR); +this.pd.setFont(g, (this.imageView == null ? this : this.imageView).getXPixels(), 3, 10, false); +this.g2d.drawString(g, s, Clazz_doubleToInt(x - this.pd.getStringWidth(s) * hOff), Clazz_doubleToInt(y + this.pd.getFontHeight() * vOff)); +}, "~O,~S,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawYUnits", +function(g){ +var units = this.spectra.get(0).getAxisLabel(false); +if (units != null) this.drawUnits(g, units, (this.pd.isPrinting ? 30 : 5) * this.pd.scalingFactor, this.yPixel0 + (this.pd.isPrinting ? 0 : 5) * this.pd.scalingFactor, 0, -1); +}, "~O"); +Clazz_defineMethod(c$, "drawHighlightsAndPeakTabs", +function(gFront, gBack, iSpec){ +var md = this.getMeasurements(JSV.common.Annotation.AType.PeakList, iSpec); +var spec = this.spectra.get(iSpec); +if (this.pd.isPrinting) { +if (md != null) { +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +this.printPeakList(gFront, spec, md); +}return; +}if (md == null) { +for (var i = 0; i < this.highlights.size(); i++) { +var hl = this.highlights.get(i); +if (hl.spectrum === spec) { +this.pd.setHighlightColor(hl.color); +this.drawBar(gBack, null, hl.x1, hl.x2, JSV.common.ScriptToken.HIGHLIGHTCOLOR, 0); +}} +if (this.pd.peakTabsOn) this.drawPeakTabs(gFront, gBack, spec); +}var y; +if (md != null) { +y = (spec.isInverted() ? this.yPixel1 - 10 * this.pd.scalingFactor : this.yPixel0); +this.setColorFromToken(gFront, JSV.common.ScriptToken.PEAKTABCOLOR); +for (var i = md.size(); --i >= 0; ) { +var m = md.get(i); +var x = this.toPixelX(m.getXVal()); +this.g2d.drawLine(gFront, x, y, x, y + 10 * this.pd.scalingFactor); +} +if (this.isVisible(this.getDialog(JSV.common.Annotation.AType.PeakList, iSpec))) { +y = this.toPixelY((md).getThresh()); +if (y == this.fixY(y) && !this.pd.isPrinting) this.g2d.drawLine(gFront, this.xPixel0, y, this.xPixel1, y); +}}}, "~O,~O,~N"); +Clazz_defineMethod(c$, "printPeakList", +function(g, spec, data){ +var sdata = data.getMeasurementListArray(null); +if (sdata.length == 0) return; +this.pd.setFont(g, this.xPixels, 0, 8, false); +var h = this.pd.getFontHeight(); +var xs = Clazz_newIntArray (data.size(), 0); +var xs0 = Clazz_newIntArray (data.size(), 0); +var dx = 0; +var s5 = 5 * this.pd.scalingFactor; +var s10 = 10 * this.pd.scalingFactor; +var s15 = 15 * this.pd.scalingFactor; +var s25 = 25 * this.pd.scalingFactor; +for (var i = 0; i < sdata.length; i++) { +xs0[i] = this.toPixelX(Double.parseDouble(sdata[i][1])); +if (i == 0) { +xs[i] = xs0[i]; +continue; +}xs[i] = Math.max(xs[i - 1] + h, xs0[i] + h); +dx += (xs[i] - xs0[i]); +} +dx /= 2 * sdata.length; +if (xs[0] - dx < this.xPixel0 + s25) dx = xs[0] - (this.xPixel0 + s25); +for (var i = 0; i < sdata.length; i++) xs[i] -= dx; + +var inverted = spec.isInverted(); +var y4 = this.pd.getStringWidth("99.9999"); +var y2 = (sdata[0].length >= 6 ? this.pd.getStringWidth("99.99") : 0); +var f = (inverted ? -1 : 1); +var y = (inverted ? this.yPixel1 : this.yPixel0) + f * (y2 + y4 + s15); +for (var i = 0; i < sdata.length; i++) { +this.g2d.drawLine(g, xs[i], y, xs[i], y + s5 * f); +this.g2d.drawLine(g, xs[i], y + s5 * f, xs0[i], y + s10 * f); +this.g2d.drawLine(g, xs0[i], y + s10 * f, xs0[i], y + s15 * f); +if (y2 > 0 && sdata[i][4].length > 0) this.g2d.drawLine(g, Clazz_doubleToInt((xs[i] + xs[i - 1]) / 2), y - y4 + s5, Clazz_doubleToInt((xs[i] + xs[i - 1]) / 2), y - y4 - s5); +} +y -= f * 2 * this.pd.scalingFactor; +if (y2 > 0) { +this.drawStringRotated(g, -90, xs[0] - s15, y, " ppm"); +this.drawStringRotated(g, -90, xs[0] - s15, y - y4 - s5, " Hz"); +}for (var i = data.size(); --i >= 0; ) { +this.drawStringRotated(g, -90 * f, xs[i] + Clazz_doubleToInt(f * h / 3), y, sdata[i][1]); +if (y2 > 0 && sdata[i][4].length > 0) { +var x = Clazz_doubleToInt((xs[i] + xs[i - 1]) / 2) + Clazz_doubleToInt(h / 3); +this.drawStringRotated(g, -90, x, y - y4 - s5, sdata[i][4]); +}} +}, "~O,JSV.common.Spectrum,JSV.common.PeakData"); +Clazz_defineMethod(c$, "drawStringRotated", +function(g, angle, x, y, s){ +this.g2d.drawStringRotated(g, s, x, y, angle); +}, "~O,~N,~N,~N,~S"); +Clazz_defineMethod(c$, "drawAnnotations", +function(g, annotations, whatColor){ +this.pd.setFont(g, this.xPixels, 1, 18, false); +for (var i = annotations.size(); --i >= 0; ) { +var note = annotations.get(i); +this.setAnnotationColor(g, note, whatColor); +var c = (note.is2D ? this.imageView : this); +var x = c.toPixelX(note.getXVal()); +var y = (note.isPixels() ? Clazz_doubleToInt(this.yPixel0 + 10 + 10 * this.pd.scalingFactor - note.getYVal()) : note.is2D ? this.imageView.subIndexToPixelY(Clazz_doubleToInt(note.getYVal())) : this.toPixelY(note.getYVal())); +this.g2d.drawString(g, note.text, x + note.offsetX * this.pd.scalingFactor, y - note.offsetY * this.pd.scalingFactor); +} +}, "~O,JU.Lst,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "drawIntegralValues", +function(g, iSpec, yOffset){ +var integrals = this.getMeasurements(JSV.common.Annotation.AType.Integration, iSpec); +if (integrals != null) { +if (this.pd.isPrinting) this.pd.setFont(g, this.xPixels, 0, 8, false); + else this.pd.setFont(g, this.xPixels, 1, 12, false); +this.setColorFromToken(g, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +var h = this.pd.getFontHeight(); +this.g2d.setStrokeBold(g, true); +for (var i = integrals.size(); --i >= 0; ) { +var $in = integrals.get(i); +if ($in.getValue() == 0) continue; +var x = this.toPixelX($in.getXVal2()); +var y1 = yOffset * this.pd.scalingFactor + this.toPixelYint($in.getYVal()); +var y2 = yOffset * this.pd.scalingFactor + this.toPixelYint($in.getYVal2()); +if (x != this.fixX(x) || y1 != this.fixY(y1) || y2 != this.fixY(y2)) continue; +if (!this.pd.isPrinting) this.g2d.drawLine(g, x, y1, x, y2); +var s = " " + $in.text; +this.g2d.drawString(g, s, x, Clazz_doubleToInt((y1 + y2) / 2) + Clazz_doubleToInt(h / 3)); +} +this.g2d.setStrokeBold(g, false); +}if (iSpec == this.getFixedSelectedSpectrumIndex()) this.selectedSpectrumIntegrals = integrals; +}, "~O,~N,~N"); +Clazz_defineMethod(c$, "drawMeasurements", +function(g, iSpec){ +var md = this.getMeasurements(JSV.common.Annotation.AType.Measurements, iSpec); +if (md != null) for (var i = md.size(); --i >= 0; ) this.drawMeasurement(g, md.get(i)); + +if (iSpec == this.getFixedSelectedSpectrumIndex()) this.selectedSpectrumMeasurements = md; +}, "~O,~N"); +Clazz_defineMethod(c$, "drawMeasurement", +function(g, m){ +if (m.text.length == 0 && m !== this.pendingMeasurement) return; +this.pd.setFont(g, this.xPixels, 1, 12, false); +this.g2d.setGraphicsColor(g, (m === this.pendingMeasurement ? this.pd.getColor(JSV.common.ScriptToken.PEAKTABCOLOR) : this.pd.BLACK)); +var x1 = this.toPixelX(m.getXVal()); +var y1 = this.toPixelY(m.getYVal()); +var x2 = this.toPixelX(m.getXVal2()); +if (Double.isNaN(m.getXVal()) || x1 != this.fixX(x1) || x2 != this.fixX(x2)) return; +var drawString = (Math.abs(x1 - x2) >= 2); +var drawBaseLine = this.getScale().isYZeroOnScale() && m.spec.isHNMR(); +var x = Clazz_doubleToInt((x1 + x2) / 2); +this.g2d.setStrokeBold(g, true); +if (drawString) this.g2d.drawLine(g, x1, y1, x2, y1); +if (drawBaseLine) this.g2d.drawLine(g, x1 + 1, this.yPixel1 - 1, x2, this.yPixel1 - 1); +this.g2d.setStrokeBold(g, false); +if (drawString) this.g2d.drawString(g, m.text, x + m.offsetX, y1 - m.offsetY); +if (drawBaseLine) { +this.g2d.drawLine(g, x1, this.yPixel1, x1, this.yPixel1 - 6 * this.pd.scalingFactor); +this.g2d.drawLine(g, x2, this.yPixel1, x2, this.yPixel1 - 6 * this.pd.scalingFactor); +}}, "~O,JSV.common.Measurement"); +Clazz_defineMethod(c$, "getPinSelected", +function(xPixel, yPixel){ +if (this.widgets != null) for (var i = 0; i < this.widgets.length; i++) { +if (this.widgets[i] != null && this.widgets[i].isPinOrCursor && this.widgets[i].selected(xPixel, yPixel)) { +return this.widgets[i]; +}} +return null; +}, "~N,~N"); +Clazz_defineMethod(c$, "set2DCrossHairs", +function(xPixel, yPixel){ +var x; +if (xPixel == this.imageView.fixX(xPixel) && yPixel == this.fixY(yPixel)) { +this.pin1Dx1.setX(x = this.imageView.toX(xPixel), this.toPixelX(x)); +this.cur2Dx1.setX(x, xPixel); +this.setCurrentSubSpectrum(this.imageView.toSubspectrumIndex(yPixel)); +if (this.isLinked) { +var y = this.imageView.toY(yPixel); +this.pd.set2DCrossHairsLinked(this, x, y, !this.sticky2Dcursor); +}}}, "~N,~N"); +Clazz_defineMethod(c$, "reset2D", +function(isX){ +if (isX) { +this.imageView.setView0(this.imageView.xPixel0, this.pin2Dy0.yPixel0, this.imageView.xPixel1, this.pin2Dy1.yPixel0); +this.doZoom(0, this.getScale().minY, 0, this.getScale().maxY, true, false, false, false, true); +} else { +this.imageView.setView0(this.pin2Dx0.xPixel0, this.imageView.yPixel0, this.pin2Dx1.xPixel0, this.imageView.yPixel1); +}}, "~B"); +Clazz_defineMethod(c$, "setAnnotationText", +function(a){ +var sval = this.pd.getInput("New text?", "Set Label", a.text); +if (sval == null) return false; +if (sval.length == 0) this.annotations.removeObj(a); + else a.text = sval; +return true; +}, "JSV.common.Annotation"); +Clazz_defineMethod(c$, "checkIntegral", +function(x1, x2, isFinal){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (ad == null) return false; +var integral = (ad.getData()).addIntegralRegion(x1, x2); +if (isFinal && ad.isDialog()) (ad).update(null, 0, 0); +if (Double.isNaN(x2)) return false; +this.pendingIntegral = (isFinal ? null : integral); +this.pd.isIntegralDrag = !isFinal; +this.selectedSpectrumIntegrals = null; +return true; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setToolTipForPixels", +function(xPixel, yPixel){ +if (this.iSpectrumMovedTo != this.iSpectrumClicked || this.pd.getCurrentGraphSet() !== this) { +this.pd.setToolTipText("click spectrum to activate"); +return; +}if (this.isSplitWidget(xPixel, yPixel)) { +this.pd.setToolTipText("click to " + (this.nSplit > 1 ? "combine" : "split")); +return; +}if (this.isCloserWidget(xPixel, yPixel)) { +this.pd.setToolTipText("click to close"); +return; +}var pw = this.getPinSelected(xPixel, yPixel); +var precisionX = this.getScale().precision[0]; +var precisionY = this.getScale().precision[1]; +if (pw != null) { +if (this.setStartupPinTip()) return; +var s; +if (pw === this.pin1Dx01 || pw === this.pin2Dx01) { +s = JU.DF.formatDecimalDbl(Math.min(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()), precisionX) + " - " + JU.DF.formatDecimalDbl(Math.max(this.pin1Dx0.getXVal(), this.pin1Dx1.getXVal()), precisionX); +} else if (pw === this.pin1Dy01) { +s = JU.DF.formatDecimalDbl(Math.min(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()), precisionY) + " - " + JU.DF.formatDecimalDbl(Math.max(this.pin1Dy0.getYVal(), this.pin1Dy1.getYVal()), precisionY); +} else if (pw === this.cur2Dy) { +var isub = this.imageView.toSubspectrumIndex(pw.yPixel0); +s = this.get2DYLabel(isub, precisionX); +} else if (pw === this.pin2Dy01) { +s = "" + Clazz_doubleToInt(Math.min(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())) + " - " + Clazz_doubleToInt(Math.max(this.pin2Dy0.getYVal(), this.pin2Dy1.getYVal())); +} else if (pw.isXtype) { +s = JU.DF.formatDecimalDbl(pw.getXVal(), precisionX); +} else if (pw.is2D) { +s = "" + Clazz_doubleToInt(pw.getYVal()); +} else { +s = JU.DF.formatDecimalDbl(pw.getYVal(), precisionY); +}this.pd.setToolTipText(s); +return; +}var yPt; +if (this.imageView != null) { +if (this.imageView.fixX(xPixel) == xPixel && this.fixY(yPixel) == yPixel) { +var isub = this.imageView.toSubspectrumIndex(yPixel); +var s = "y=" + this.get2DYLabel(isub, precisionX) + " / x=" + JU.DF.formatDecimalDbl(this.imageView.toX(xPixel), precisionX) + " " + this.getSpectrum().getAxisLabel(true); +this.pd.setToolTipText(s); +this.pd.coordStr = s; +return; +}if (!this.pd.display1D) { +this.pd.setToolTipText(""); +this.pd.coordStr = ""; +return; +}}var xPt = this.toX(this.fixX(xPixel)); +yPt = (this.imageView != null && this.imageView.isXWithinRange(xPixel) ? this.imageView.toSubspectrumIndex(this.fixY(yPixel)) : this.toY(this.fixY(yPixel))); +var xx = this.setCoordStr(xPt, yPt); +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (!this.isInPlotRegion(xPixel, yPixel)) { +yPt = NaN; +} else if (this.nSpectra == 1) { +} else if (this.haveIntegralDisplayed(iSpec)) { +yPt = this.getIntegrationGraph(iSpec).getPercentYValueAt(xPt); +xx += ", " + JU.DF.formatDecimalDbl(yPt, 1); +}this.pd.setToolTipText((this.selectedIntegral != null ? "click to set value" : this.pendingMeasurement != null || this.selectedMeasurement != null ? (this.pd.hasFocus() ? "Press ESC to delete " + (this.selectedIntegral != null ? "integral, DEL to delete all visible, or N to normalize" : this.pendingMeasurement == null ? "\"" + this.selectedMeasurement.text + "\" or DEL to delete all visible" : "measurement") : "") : Double.isNaN(yPt) ? null : xx)); +}, "~N,~N"); +Clazz_defineMethod(c$, "isFrameBox", +function(xPixel, yPixel, boxX, boxY){ +return Math.abs(xPixel - (boxX + 5)) < 5 && Math.abs(yPixel - (boxY + 5)) < 5; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setCoordStr", +function(xPt, yPt){ +var xx = JU.DF.formatDecimalDbl(xPt, this.getScale().precision[0]); +this.pd.coordStr = "(" + xx + (this.haveSingleYScale || this.iSpectrumSelected >= 0 ? ", " + JU.DF.formatDecimalDbl(yPt, this.getScale().precision[1]) : "") + ")"; +return xx; +}, "~N,~N"); +Clazz_defineMethod(c$, "setStartupPinTip", +function(){ +if (this.pd.startupPinTip == null) return false; +this.pd.setToolTipText(this.pd.startupPinTip); +this.pd.startupPinTip = null; +return true; +}); +Clazz_defineMethod(c$, "get2DYLabel", +function(isub, precision){ +var spec = this.getSpectrumAt(0).getSubSpectra().get(isub); +return JU.DF.formatDecimalDbl(spec.getY2DPPM(), precision) + " PPM" + (spec.y2DUnits.equals("HZ") ? " (" + JU.DF.formatDecimalDbl(spec.getY2D(), precision) + " HZ) " : ""); +}, "~N,~N"); +Clazz_defineMethod(c$, "isOnSpectrum", +function(xPixel, yPixel, index){ +var xyCoords = null; +var isContinuous = true; +var isIntegral = (index < 0); +if (isIntegral) { +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (ad == null) return false; +xyCoords = (ad.getData()).getXYCoords(); +index = this.getFixedSelectedSpectrumIndex(); +} else { +this.setScale(index); +var spec = this.spectra.get(index); +xyCoords = spec.xyCoords; +isContinuous = spec.isContinuous(); +}var yOffset = index * Clazz_floatToInt(this.yPixels * (this.yStackOffsetPercent / 100)); +var ix0 = this.viewData.getStartingPointIndex(index); +var ix1 = this.viewData.getEndingPointIndex(index); +if (isContinuous) { +for (var i = ix0; i < ix1; i++) { +var point1 = xyCoords[i]; +var point2 = xyCoords[i + 1]; +var x1 = this.toPixelX(point1.getXVal()); +var x2 = this.toPixelX(point2.getXVal()); +var y1 = (isIntegral ? this.toPixelYint(point1.getYVal()) : this.toPixelY(point1.getYVal())); +var y2 = (isIntegral ? this.toPixelYint(point2.getYVal()) : this.toPixelY(point2.getYVal())); +if (y1 == -2147483648 || y2 == -2147483648) continue; +y1 = this.fixY(y1) - yOffset; +y2 = this.fixY(y2) - yOffset; +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x2, y2)) return true; +} +} else { +for (var i = ix0; i <= ix1; i++) { +var point = xyCoords[i]; +var y2 = this.toPixelY(point.getYVal()); +if (y2 == -2147483648) continue; +var x1 = this.toPixelX(point.getXVal()); +var y1 = this.toPixelY(Math.max(this.getScale().minYOnScale, 0)); +y1 = this.fixY(y1); +y2 = this.fixY(y2); +if (y1 == y2 && (y1 == this.yPixel0 || y1 == this.yPixel1)) continue; +if (JSV.common.GraphSet.isOnLine(xPixel, yPixel, x1, y1, x1, y2)) return true; +} +}return false; +}, "~N,~N,~N"); +c$.distance = Clazz_defineMethod(c$, "distance", +function(dx, dy){ +return Math.sqrt(dx * dx + dy * dy); +}, "~N,~N"); +c$.findCompatibleGraphSet = Clazz_defineMethod(c$, "findCompatibleGraphSet", +function(graphSets, spec){ +for (var i = 0; i < graphSets.size(); i++) if (JSV.common.Spectrum.areXScalesCompatible(spec, graphSets.get(i).getSpectrum(), false, false)) return graphSets.get(i); + +return null; +}, "JU.Lst,JSV.common.Spectrum"); +c$.isGoodEvent = Clazz_defineMethod(c$, "isGoodEvent", +function(zOrP, p, asX){ +return (p == null ? (Math.abs(zOrP.xPixel1 - zOrP.xPixel0) > 5 && Math.abs(zOrP.yPixel1 - zOrP.yPixel0) > 5) : asX ? Math.abs(zOrP.xPixel0 - p.xPixel0) > 5 : Math.abs(zOrP.yPixel0 - p.yPixel0) > 5); +}, "JSV.common.PlotWidget,JSV.common.PlotWidget,~B"); +c$.isOnLine = Clazz_defineMethod(c$, "isOnLine", +function(xPixel, yPixel, x1, y1, x2, y2){ +var dx1 = Math.abs(x1 - xPixel); +if (dx1 < 2 && Math.abs(y1 - yPixel) < 2) return true; +var dx2 = x2 - xPixel; +if (Math.abs(dx2) < 2 && Math.abs(y2 - yPixel) < 2) return true; +var dy12 = y1 - y2; +if (Math.abs(dy12) > 2 && (y1 < yPixel) == (y2 < yPixel)) return false; +var dx12 = x1 - x2; +if (Math.abs(dx12) > 2 && (x1 < xPixel) == (x2 < xPixel)) return false; +return (JSV.common.GraphSet.distance(dx1, y1 - yPixel) + JSV.common.GraphSet.distance(dx2, yPixel - y2) < JSV.common.GraphSet.distance(dx12, dy12) + 2); +}, "~N,~N,~N,~N,~N,~N"); +c$.setFractionalPositions = Clazz_defineMethod(c$, "setFractionalPositions", +function(pd, graphSets, linkMode){ +var n = graphSets.size(); +var f = 0; +var n2d = 1; +var gs; +var y = 0; +pd.isLinked = (linkMode !== JSV.common.PanelData.LinkMode.NONE); +if (linkMode === JSV.common.PanelData.LinkMode.NONE) { +for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +f += (gs.getSpectrumAt(0).is1D() ? 1 : n2d) * gs.nSplit; +} +f = 1 / f; +for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +gs.isLinked = false; +var g = (gs.getSpectrumAt(0).is1D() ? f : n2d * f); +gs.fX0 = 0; +gs.fY0 = y; +gs.fracX = 1; +gs.fracY = g; +y += g * gs.nSplit; +} +} else { +var gs2d = null; +var i2d = -1; +if (n == 2 || n == 3) for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +if (!gs.getSpectrum().is1D()) { +gs2d = gs; +if (i2d >= 0) i = -2; +i2d = i; +break; +}} +if (i2d == -2 || i2d == -1 && n != 2) { +JSV.common.GraphSet.setFractionalPositions(pd, graphSets, JSV.common.PanelData.LinkMode.NONE); +return; +}for (var i = 0; i < n; i++) { +gs = graphSets.get(i); +gs.isLinked = true; +var s1 = gs.getSpectrumAt(0); +var is1D = s1.is1D(); +if (is1D) { +if (gs2d != null) { +var s2 = gs2d.getSpectrumAt(0); +if (JSV.common.Spectrum.areLinkableX(s1, s2)) gs.gs2dLinkedX = gs2d; +if (JSV.common.Spectrum.areLinkableY(s1, s2)) gs.gs2dLinkedY = gs2d; +}gs.fX0 = 0; +gs.fY0 = y; +gs.fracX = (gs2d == null ? 1 : 0.5); +gs.fracY = (n == 3 || gs2d == null ? 0.5 : 1); +y += 0.5; +} else { +gs.fX0 = 0.5; +gs.fY0 = 0; +gs.fracX = 0.5; +gs.fracY = 1; +}} +}}, "JSV.common.PanelData,JU.Lst,JSV.common.PanelData.LinkMode"); +Clazz_defineMethod(c$, "addAnnotation", +function(args, title){ +if (args.size() == 0 || args.size() == 1 && args.get(0).equalsIgnoreCase("none")) { +this.annotations = null; +this.lastAnnotation = null; +return null; +}if (args.size() < 4 && this.lastAnnotation == null) this.lastAnnotation = this.getAnnotation((this.getScale().maxXOnScale + this.getScale().minXOnScale) / 2, (this.getScale().maxYOnScale + this.getScale().minYOnScale) / 2, title, false, false, 0, 0); +var annotation = this.getAnnotation(args, this.lastAnnotation); +if (annotation == null) return null; +if (this.annotations == null && args.size() == 1 && args.get(0).charAt(0) == '\"') { +var s = annotation.text; +this.getSpectrum().setTitle(s); +return s; +}this.lastAnnotation = annotation; +this.addAnnotation(annotation, false); +return null; +}, "JU.Lst,~S"); +Clazz_defineMethod(c$, "addHighlight", +function(x1, x2, spec, color){ +if (spec == null) spec = this.getSpectrumAt(0); +var hl = Clazz_innerTypeInstance(JSV.common.GraphSet.Highlight, this, null, x1, x2, spec, (color == null ? this.pd.getColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR) : color)); +if (!this.highlights.contains(hl)) this.highlights.addLast(hl); +}, "~N,~N,JSV.common.Spectrum,javajs.api.GenericColor"); +Clazz_defineMethod(c$, "addPeakHighlight", +function(peakInfo){ +for (var i = this.spectra.size(); --i >= 0; ) { +var spec = this.spectra.get(i); +this.removeAllHighlights(spec); +if (peakInfo == null || peakInfo.isClearAll() || spec !== peakInfo.spectrum) continue; +var peak = peakInfo.toString(); +if (peak == null) { +continue; +}var xMin = JU.PT.getQuotedAttribute(peak, "xMin"); +var xMax = JU.PT.getQuotedAttribute(peak, "xMax"); +if (xMin == null || xMax == null) return; +var x1 = JU.PT.parseFloat(xMin); +var x2 = JU.PT.parseFloat(xMax); +if (Float.isNaN(x1) || Float.isNaN(x2)) return; +this.pd.addHighlight(this, x1, x2, spec, 200, 140, 140, 100); +spec.setSelectedPeak(peakInfo); +if (this.getScale().isInRangeX(x1) || this.getScale().isInRangeX(x2) || x1 < this.getScale().minX && this.getScale().maxX < x2) { +} else { +this.setZoomTo(0); +}} +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "advanceSubSpectrum", +function(dir){ +var spec0 = this.getSpectrumAt(0); +var i = spec0.advanceSubSpectrum(dir); +if (spec0.isForcedSubset()) this.viewData.setXRangeForSubSpectrum(this.getSpectrum().getXYCoords()); +this.pd.notifySubSpectrumChange(i, this.getSpectrum()); +}, "~N"); +Clazz_defineMethod(c$, "checkSpectrumClickedEvent", +function(xPixel, yPixel, clickCount){ +if (this.nextClickForSetPeak != null) return false; +if (clickCount > 1 || this.pendingMeasurement != null || !this.isInPlotRegion(xPixel, yPixel)) return false; +if (clickCount == 0) { +var isOnIntegral = this.isOnSpectrum(xPixel, yPixel, -1); +this.pd.integralShiftMode = (isOnIntegral ? this.getShiftMode(xPixel, yPixel) : 0); +this.pd.isIntegralDrag = (this.pd.integralShiftMode == 0 && (isOnIntegral || this.haveIntegralDisplayed(-1) && this.findMeasurement(this.getIntegrationGraph(-1), xPixel, yPixel, 0) != null)); +if (this.pd.integralShiftMode != 0) return false; +}if (!this.showAllStacked) return false; +this.stackSelected = false; +for (var i = 0; i < this.nSpectra; i++) { +if (!this.isOnSpectrum(xPixel, yPixel, i)) continue; +this.setSpectrumClicked(this.iPreviousSpectrumClicked = i); +return false; +} +if (this.isDialogOpen()) return false; +this.setSpectrumClicked(-1); +return this.stackSelected = false; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getShiftMode", +function(xPixel, yPixel){ +return (this.isStartEndIntegral(xPixel, false) ? yPixel : this.isStartEndIntegral(xPixel, true) ? -yPixel : 0); +}, "~N,~N"); +Clazz_defineMethod(c$, "isDialogOpen", +function(){ +return (this.isVisible(this.getDialog(JSV.common.Annotation.AType.Integration, -1)) || this.isVisible(this.getDialog(JSV.common.Annotation.AType.Measurements, -1)) || this.isVisible(this.getDialog(JSV.common.Annotation.AType.PeakList, -1))); +}); +Clazz_defineMethod(c$, "isStartEndIntegral", +function(xPixel, isEnd){ +return (isEnd ? this.xPixelPlot1 - xPixel < 20 : xPixel - this.xPixelPlot0 < 20); +}, "~N,~B"); +Clazz_defineMethod(c$, "checkWidgetEvent", +function(xPixel, yPixel, isPress){ +if (!this.widgetsAreSet) return false; +this.widgetsAreSet = false; +var widget; +if (isPress) { +if (this.pd.clickCount == 2 && this.lastIntDragX != xPixel && !this.is2dClick(xPixel, yPixel)) { +if (this.pendingMeasurement == null) { +if (this.iSpectrumClicked == -1 && this.iPreviousSpectrumClicked >= 0) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +}this.processPendingMeasurement(xPixel, yPixel, 2); +return true; +}} else if (!this.is2dClick(xPixel, yPixel)) { +if (this.isOnSpectrum(xPixel, yPixel, -1)) { +this.checkIntegral(this.toX(xPixel), NaN, false); +}if (this.lastIntDragX == xPixel) { +this.pd.isIntegralDrag = true; +if (!this.checkIntegral(this.toX(xPixel), this.toX(xPixel), false)) return false; +}}if (this.pendingMeasurement != null) return true; +widget = this.getPinSelected(xPixel, yPixel); +if (widget == null) { +yPixel = this.fixY(yPixel); +if (xPixel < this.xPixel1) { +if (this.pd.shiftPressed) this.setSpectrumClicked(this.iPreviousSpectrumClicked); +xPixel = this.fixX(xPixel); +if (this.zoomBox1D == null) this.newPins(); +this.zoomBox1D.setX(this.toX(xPixel), xPixel); +this.zoomBox1D.yPixel0 = yPixel; +widget = this.zoomBox1D; +} else if (this.imageView != null && xPixel < this.imageView.xPixel1) { +this.zoomBox2D.setX(this.imageView.toX(xPixel), this.imageView.fixX(xPixel)); +this.zoomBox2D.yPixel0 = yPixel; +widget = this.zoomBox2D; +}}this.pd.thisWidget = widget; +return false; +}this.nextClickForSetPeak = null; +widget = this.pd.thisWidget; +if (widget == null) return false; +if (widget === this.zoomBox1D) { +this.zoomBox1D.xPixel1 = this.fixX(xPixel); +this.zoomBox1D.yPixel1 = this.fixY(yPixel); +if (this.pd.isIntegralDrag && this.zoomBox1D.xPixel0 != this.zoomBox1D.xPixel1) { +if ((this.lastIntDragX <= xPixel) != (this.zoomBox1D.xPixel0 <= xPixel)) { +this.zoomBox1D.xPixel0 = this.lastIntDragX; +this.zoomBox1D.xPixel1 = xPixel; +this.zoomBox1D.setXVal(this.toX(this.zoomBox1D.xPixel0)); +}this.lastIntDragX = xPixel; +this.checkIntegral(this.zoomBox1D.getXVal(), this.toX(this.zoomBox1D.xPixel1), false); +}return false; +}if (!this.zoomEnabled) return false; +if (widget === this.zoomBox2D) { +this.zoomBox2D.xPixel1 = this.imageView.fixX(xPixel); +this.zoomBox2D.yPixel1 = this.fixY(yPixel); +return true; +}if (widget === this.cur2Dy) { +yPixel = this.fixY(yPixel); +this.cur2Dy.yPixel0 = this.cur2Dy.yPixel1 = yPixel; +this.setCurrentSubSpectrum(this.imageView.toSubspectrumIndex(yPixel)); +return true; +}if (widget === this.cur2Dx0 || widget === this.cur2Dx1) { +return false; +}if (widget === this.pin1Dx0 || widget === this.pin1Dx1 || widget === this.pin1Dx01) { +xPixel = this.fixX(xPixel); +widget.setX(this.toX0(xPixel), xPixel); +if (widget === this.pin1Dx01) { +var dp = xPixel - (Clazz_doubleToInt((this.pin1Dx0.xPixel0 + this.pin1Dx1.xPixel0) / 2)); +var dp1 = (dp < 0 ? dp : dp); +var dp2 = (dp < 0 ? dp : dp); +xPixel = this.pin1Dx0.xPixel0 + dp2; +var xPixel1 = this.pin1Dx1.xPixel0 + dp1; +if (dp == 0 || this.fixX(xPixel) != xPixel || this.fixX(xPixel1) != xPixel1) return true; +this.pin1Dx0.setX(this.toX0(xPixel), xPixel); +this.pin1Dx1.setX(this.toX0(xPixel1), xPixel1); +}this.doZoom(this.pin1Dx0.getXVal(), 0, this.pin1Dx1.getXVal(), 0, true, false, false, true, false); +return true; +}if (widget === this.pin1Dy0 || widget === this.pin1Dy1 || widget === this.pin1Dy01) { +yPixel = this.fixY(yPixel); +widget.setY(this.toY0(yPixel), yPixel); +if (widget === this.pin1Dy01) { +var dp = yPixel - Clazz_doubleToInt((this.pin1Dy0.yPixel0 + this.pin1Dy1.yPixel0) / 2) + 1; +yPixel = this.pin1Dy0.yPixel0 + dp; +var yPixel1 = this.pin1Dy1.yPixel0 + dp; +var y0 = this.toY0(yPixel); +var y1 = this.toY0(yPixel1); +if (Math.min(y0, y1) == this.getScale().minY || Math.max(y0, y1) == this.getScale().maxY) return true; +this.pin1Dy0.setY(y0, yPixel); +this.pin1Dy1.setY(y1, yPixel1); +}this.doZoom(0, this.pin1Dy0.getYVal(), 0, this.pin1Dy1.getYVal(), this.imageView == null, this.imageView == null, false, false, false); +return true; +}if (widget === this.pin2Dx0 || widget === this.pin2Dx1 || widget === this.pin2Dx01) { +xPixel = this.imageView.fixX(xPixel); +widget.setX(this.imageView.toX0(xPixel), xPixel); +if (widget === this.pin2Dx01) { +var dp = xPixel - Clazz_doubleToInt((this.pin2Dx0.xPixel0 + this.pin2Dx1.xPixel0) / 2) + 1; +xPixel = this.pin2Dx0.xPixel0 + dp; +var xPixel1 = this.pin2Dx1.xPixel0 + dp; +if (this.imageView.fixX(xPixel) != xPixel || this.imageView.fixX(xPixel1) != xPixel1) return true; +this.pin2Dx0.setX(this.imageView.toX0(xPixel), xPixel); +this.pin2Dx1.setX(this.imageView.toX0(xPixel1), xPixel1); +}if (!JSV.common.GraphSet.isGoodEvent(this.pin2Dx0, this.pin2Dx1, true)) { +this.reset2D(true); +return true; +}this.imageView.setView0(this.pin2Dx0.xPixel0, this.pin2Dy0.yPixel0, this.pin2Dx1.xPixel0, this.pin2Dy1.yPixel0); +this.doZoom(this.pin2Dx0.getXVal(), this.getScale().minY, this.pin2Dx1.getXVal(), this.getScale().maxY, false, false, false, true, false); +return true; +}if (widget === this.pin2Dy0 || widget === this.pin2Dy1 || widget === this.pin2Dy01) { +yPixel = this.fixY(yPixel); +widget.setY(this.imageView.toSubspectrumIndex(yPixel), yPixel); +if (widget === this.pin2Dy01) { +var dp = yPixel - Clazz_doubleToInt((this.pin2Dy0.yPixel0 + this.pin2Dy1.yPixel0) / 2) + 1; +yPixel = this.pin2Dy0.yPixel0 + dp; +var yPixel1 = this.pin2Dy1.yPixel0 + dp; +if (yPixel != this.fixY(yPixel) || yPixel1 != this.fixY(yPixel1)) return true; +this.pin2Dy0.setY(this.imageView.toSubspectrumIndex(yPixel), yPixel); +this.pin2Dy1.setY(this.imageView.toSubspectrumIndex(yPixel1), yPixel1); +}if (!JSV.common.GraphSet.isGoodEvent(this.pin2Dy0, this.pin2Dy1, false)) { +this.reset2D(false); +return true; +}this.imageView.setView0(this.pin2Dx0.xPixel0, this.pin2Dy0.yPixel0, this.pin2Dx1.xPixel1, this.pin2Dy1.yPixel1); +return true; +}return false; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "clearIntegrals", +function(){ +this.checkIntegral(NaN, 0, false); +}); +Clazz_defineMethod(c$, "clearMeasurements", +function(){ +this.removeDialog(this.getFixedSelectedSpectrumIndex(), JSV.common.Annotation.AType.Measurements); +}); +c$.createGraphSetsAndSetLinkMode = Clazz_defineMethod(c$, "createGraphSetsAndSetLinkMode", +function(pd, jsvp, spectra, startIndex, endIndex, linkMode){ +var graphSets = new JU.Lst(); +for (var i = 0; i < spectra.size(); i++) { +var spec = spectra.get(i); +var graphSet = (linkMode === JSV.common.PanelData.LinkMode.NONE ? JSV.common.GraphSet.findCompatibleGraphSet(graphSets, spec) : null); +if (graphSet == null) graphSets.addLast(graphSet = new JSV.common.GraphSet(jsvp.getPanelData())); +graphSet.addSpec(spec); +} +JSV.common.GraphSet.setFractionalPositions(pd, graphSets, linkMode); +for (var i = graphSets.size(); --i >= 0; ) { +graphSets.get(i).initGraphSet(startIndex, endIndex); +JU.Logger.info("JSVGraphSet " + (i + 1) + " nSpectra = " + graphSets.get(i).nSpectra); +} +return graphSets; +}, "JSV.common.PanelData,JSV.api.JSVPanel,JU.Lst,~N,~N,JSV.common.PanelData.LinkMode"); +Clazz_defineMethod(c$, "drawGraphSet", +function(gMain, gFront, gBack, width, height, left, right, top, bottom, isResized, taintedAll, pointsOnly){ +this.zoomEnabled = this.pd.getBoolean(JSV.common.ScriptToken.ENABLEZOOM); +this.height = height * this.pd.scalingFactor; +this.width = width * this.pd.scalingFactor; +this.left = left * this.pd.scalingFactor; +this.right = right * this.pd.scalingFactor; +this.top = top * this.pd.scalingFactor; +this.bottom = bottom * this.pd.scalingFactor; +this.$haveSelectedSpectrum = false; +this.selectedSpectrumIntegrals = null; +this.selectedSpectrumMeasurements = null; +if (!this.pd.isPrinting && this.widgets != null) for (var j = 0; j < this.widgets.length; j++) if (this.widgets[j] != null) this.widgets[j].isVisible = false; + +for (var iSplit = 0; iSplit < this.nSplit; iSplit++) { +this.setPositionForFrame(iSplit); +this.drawAll(gMain, gFront, gBack, iSplit, isResized || this.nSplit > 1, taintedAll, pointsOnly); +} +this.setPositionForFrame(this.nSplit > 1 ? this.pd.currentSplitPoint : 0); +if (this.pd.isPrinting) return; +}, "~O,~O,~O,~N,~N,~N,~N,~N,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "escapeKeyPressed", +function(isDEL){ +if (this.zoomBox1D != null) this.zoomBox1D.xPixel0 = this.zoomBox1D.xPixel1 = 0; +if (this.zoomBox2D != null) this.zoomBox2D.xPixel0 = this.zoomBox2D.xPixel1 = 0; +if (!this.inPlotMove) return; +if (this.pendingMeasurement != null) { +this.pendingMeasurement = null; +return; +}this.pd.thisWidget = null; +this.pendingMeasurement = null; +if (this.selectedSpectrumMeasurements != null && this.selectedMeasurement != null) { +if (isDEL) this.selectedSpectrumMeasurements.clear(this.getScale().minXOnScale, this.getScale().maxXOnScale); + else this.selectedSpectrumMeasurements.removeObj(this.selectedMeasurement); +this.selectedMeasurement = null; +this.updateDialog(JSV.common.Annotation.AType.Measurements, -1); +}if (this.selectedSpectrumIntegrals != null && this.selectedIntegral != null) { +if (isDEL) this.selectedSpectrumIntegrals.clear(this.getScale().minXOnScale, this.getScale().maxXOnScale); + else this.selectedSpectrumIntegrals.removeObj(this.selectedIntegral); +this.selectedIntegral = null; +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +}}, "~B"); +c$.findGraphSet = Clazz_defineMethod(c$, "findGraphSet", +function(graphSets, xPixel, yPixel){ +for (var i = graphSets.size(); --i >= 0; ) if (graphSets.get(i).hasPoint(xPixel, yPixel)) return graphSets.get(i); + +return null; +}, "JU.Lst,~N,~N"); +Clazz_defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +var pi2 = null; +for (var i = 0; i < this.spectra.size(); i++) if ((pi2 = (this.spectra.get(i)).findMatchingPeakInfo(pi)) != null) break; + +return pi2; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getCurrentSpectrumIndex", +function(){ +return (this.nSpectra == 1 ? 0 : this.iSpectrumSelected); +}); +Clazz_defineMethod(c$, "getSelectedIntegral", +function(){ +return this.selectedIntegral; +}); +Clazz_defineMethod(c$, "getShowAnnotation", +function(type, i){ +var id = this.getDialog(type, i); +return (id != null && id.getState()); +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "hasFileLoaded", +function(filePath){ +for (var i = this.spectra.size(); --i >= 0; ) if (this.spectra.get(i).getFilePathForwardSlash().equals(filePath)) return true; + +return false; +}, "~S"); +Clazz_defineMethod(c$, "haveSelectedSpectrum", +function(){ +return this.$haveSelectedSpectrum; +}); +Clazz_defineMethod(c$, "mouseClickedEvent", +function(xPixel, yPixel, clickCount, isControlDown){ +this.selectedMeasurement = null; +this.selectedIntegral = null; +var isNextClick = this.nextClickForSetPeak; +this.nextClickForSetPeak = null; +if (this.checkArrowUpDownClick(xPixel, yPixel) || this.checkArrowLeftRightClick(xPixel, yPixel)) return; +this.lastClickX = NaN; +this.lastPixelX = 2147483647; +if (this.isSplitWidget(xPixel, yPixel)) { +this.splitStack(this.nSplit == 1); +return; +}if (this.isCloserWidget(xPixel, yPixel)) { +this.pd.closeSpectrum(); +return; +}var pw = this.getPinSelected(xPixel, yPixel); +if (pw != null) { +this.setWidgetValueByUser(pw); +return; +}var is2D = this.is2dClick(xPixel, yPixel); +if (clickCount == 2 && this.iSpectrumClicked == -1 && this.iPreviousSpectrumClicked >= 0) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +}if (!is2D && isControlDown) { +this.setSpectrumClicked(this.iPreviousSpectrumClicked); +if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, -3); +} else if (this.iSpectrumClicked >= 0) { +this.processPendingMeasurement(xPixel, yPixel, 3); +}return; +}this.lastXMax = NaN; +if (clickCount == 2) { +if (is2D) { +if (this.sticky2Dcursor) { +this.addAnnotation(this.getAnnotation(this.imageView.toX(xPixel), this.imageView.toSubspectrumIndex(yPixel), this.pd.coordStr, false, true, 5, 5), true); +}this.sticky2Dcursor = true; +this.set2DCrossHairs(xPixel, yPixel); +return; +}if (this.isInTopBar(xPixel, yPixel)) { +this.doZoom(this.toX0(this.xPixel0), 0, this.toX0(this.xPixel1), 0, true, false, false, true, true); +} else if (this.isInRightBar(xPixel, yPixel)) { +this.doZoom(this.getScale().minXOnScale, this.viewList.get(0).getScale().minYOnScale, this.getScale().maxXOnScale, this.viewList.get(0).getScale().maxYOnScale, true, true, false, false, false); +} else if (this.isInTopBar2D(xPixel, yPixel)) { +this.reset2D(true); +} else if (this.isInRightBar2D(xPixel, yPixel)) { +this.reset2D(false); +} else if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, -2); +} else if (this.iSpectrumClicked >= 0) { +this.processPendingMeasurement(xPixel, yPixel, 2); +}return; +}if (is2D) { +if (this.annotations != null) { +var xy = new JSV.common.Coordinate().set(this.imageView.toX(xPixel), this.imageView.toSubspectrumIndex(yPixel)); +var a = this.findAnnotation2D(xy); +if (a != null && this.setAnnotationText(a)) { +return; +}}if (clickCount == 1) this.sticky2Dcursor = false; +this.set2DCrossHairs(xPixel, yPixel); +return; +}if (this.isInPlotRegion(xPixel, yPixel)) { +if (this.selectedSpectrumIntegrals != null && this.checkIntegralNormalizationClick(xPixel, yPixel)) return; +if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, 1); +return; +}this.setCoordClicked(xPixel, this.toX(xPixel), this.toY(yPixel)); +this.updateDialog(JSV.common.Annotation.AType.PeakList, -1); +if (isNextClick != null) { +this.nextClickForSetPeak = isNextClick; +this.shiftSpectrum(4, NaN, NaN); +this.nextClickForSetPeak = null; +return; +}} else { +this.setCoordClicked(0, NaN, 0); +}this.pd.notifyPeakPickedListeners(null); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "is2dClick", +function(xPixel, yPixel){ +return (this.imageView != null && xPixel == this.imageView.fixX(xPixel) && yPixel == this.fixY(yPixel)); +}, "~N,~N"); +Clazz_defineMethod(c$, "updateDialog", +function(type, iSpec){ +var ad = this.getDialog(type, iSpec); +if (ad == null || !this.isVisible(ad)) return; +var xRange = this.toX(this.xPixel1) - this.toX(this.xPixel0); +var yOffset = (this.getSpectrum().isInverted() ? this.yPixel1 - this.pd.mouseY : this.pd.mouseY - this.yPixel0); +(ad).update(this.pd.coordClicked, xRange, yOffset); +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "isVisible", +function(ad){ +return ad != null && (ad.isDialog() && ad.isVisible()); +}, "JSV.api.AnnotationData"); +Clazz_defineMethod(c$, "mousePressedEvent", +function(xPixel, yPixel, clickCount){ +this.checkWidgetEvent(xPixel, yPixel, true); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "mouseReleasedEvent", +function(xPixel, yPixel){ +if (this.pendingMeasurement != null) { +if (Math.abs(this.toPixelX(this.pendingMeasurement.getXVal()) - xPixel) < 2) this.pendingMeasurement = null; +this.processPendingMeasurement(xPixel, yPixel, -2); +this.setToolTipForPixels(xPixel, yPixel); +return; +}if (this.pd.integralShiftMode != 0) { +this.pd.integralShiftMode = 0; +this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0; +return; +}if (this.iSpectrumMovedTo >= 0) this.setScale(this.iSpectrumMovedTo); +var thisWidget = this.pd.thisWidget; +if (this.pd.isIntegralDrag) { +if (JSV.common.GraphSet.isGoodEvent(this.zoomBox1D, null, true)) { +this.checkIntegral(this.toX(this.zoomBox1D.xPixel0), this.toX(this.zoomBox1D.xPixel1), true); +}this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0 = 0; +this.pendingIntegral = null; +this.pd.isIntegralDrag = false; +} else if (thisWidget === this.zoomBox2D) { +if (!JSV.common.GraphSet.isGoodEvent(this.zoomBox2D, null, true)) return; +this.imageView.setZoom(this.zoomBox2D.xPixel0, this.zoomBox2D.yPixel0, this.zoomBox2D.xPixel1, this.zoomBox2D.yPixel1); +this.zoomBox2D.xPixel1 = this.zoomBox2D.xPixel0; +this.doZoom(this.imageView.toX(this.imageView.xPixel0), this.getScale().minY, this.imageView.toX(this.imageView.xPixel0 + this.imageView.xPixels - 1), this.getScale().maxY, false, false, false, true, true); +} else if (thisWidget === this.zoomBox1D) { +if (!JSV.common.GraphSet.isGoodEvent(this.zoomBox1D, null, true)) return; +var x1 = this.zoomBox1D.xPixel1; +var doY = (this.pd.shiftPressed); +this.doZoom(this.toX(this.zoomBox1D.xPixel0), (doY ? this.toY(this.zoomBox1D.yPixel0) : 0), this.toX(x1), (doY ? this.toY(this.zoomBox1D.yPixel1) : 0), true, doY, true, true, true); +this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0; +} else if (thisWidget === this.pin1Dx0 || thisWidget === this.pin1Dx1 || thisWidget === this.cur2Dx0 || thisWidget === this.cur2Dx1) { +this.addCurrentZoom(); +}}, "~N,~N"); +Clazz_defineMethod(c$, "mouseMovedEvent", +function(xPixel, yPixel){ +if (this.nSpectra > 1) { +var iFrame = this.getSplitPoint(yPixel); +this.setPositionForFrame(iFrame); +this.setSpectrumMovedTo(this.nSplit > 1 ? iFrame : this.iSpectrumSelected); +if (this.iSpectrumMovedTo >= 0) this.setScale(this.iSpectrumMovedTo); +}this.inPlotMove = this.isInPlotRegion(xPixel, yPixel); +this.setXPixelMovedTo(1.7976931348623157E308, 1.7976931348623157E308, (this.inPlotMove ? xPixel : -1), -1); +if (this.inPlotMove) { +this.xValueMovedTo = this.toX(this.xPixelMovedTo); +this.yValueMovedTo = this.getSpectrum().getYValueAt(this.xValueMovedTo); +}if (this.pd.integralShiftMode != 0) { +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +var xy = (ad.getData()).getXYCoords(); +var y = xy[this.pd.integralShiftMode > 0 ? xy.length - 1 : 0].getYVal(); +(ad.getData()).shiftY(this.pd.integralShiftMode, this.toPixelYint(y) + yPixel - (this.pd.integralShiftMode > 0 ? this.yPixelPlot1 : this.yPixelPlot0), this.yPixel0, this.yPixels); +} else if (this.pd.isIntegralDrag) { +} else if (this.pendingMeasurement != null) { +this.processPendingMeasurement(xPixel, yPixel, 0); +this.setToolTipForPixels(xPixel, yPixel); +} else { +this.selectedMeasurement = (this.inPlotMove && this.selectedSpectrumMeasurements != null ? this.findMeasurement(this.selectedSpectrumMeasurements, xPixel, yPixel, 0) : null); +this.selectedIntegral = null; +if (this.inPlotMove && this.selectedSpectrumIntegrals != null && this.selectedMeasurement == null) { +this.selectedIntegral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, 0); +if (this.selectedIntegral == null) this.selectedIntegral = this.findMeasurement(this.selectedSpectrumIntegrals, xPixel, yPixel, -5); +}this.setToolTipForPixels(xPixel, yPixel); +if (this.imageView == null) { +this.piMouseOver = null; +var iSpec = (this.nSplit > 1 ? this.iSpectrumMovedTo : this.iSpectrumClicked); +if (!this.isDrawNoSpectra() && iSpec >= 0) { +var spec = this.spectra.get(iSpec); +if (spec.getPeakList() != null) { +this.coordTemp.setXVal(this.toX(xPixel)); +this.coordTemp.setYVal(this.toY(yPixel)); +this.piMouseOver = spec.findPeakByCoord(xPixel, this.coordTemp); +}}} else { +if (!this.pd.display1D && this.sticky2Dcursor) { +this.set2DCrossHairs(xPixel, yPixel); +}}}}, "~N,~N"); +Clazz_defineMethod(c$, "nextView", +function(){ +if (this.currentZoomIndex + 1 < this.viewList.size()) this.setZoomTo(this.currentZoomIndex + 1); +}); +Clazz_defineMethod(c$, "previousView", +function(){ +if (this.currentZoomIndex > 0) this.setZoomTo(this.currentZoomIndex - 1); +}); +Clazz_defineMethod(c$, "resetView", +function(){ +this.setZoomTo(0); +}); +Clazz_defineMethod(c$, "removeAllHighlights", +function(){ +this.removeAllHighlights(null); +}); +Clazz_defineMethod(c$, "removeHighlight", +function(index){ +this.highlights.removeItemAt(index); +}, "~N"); +Clazz_defineMethod(c$, "removeHighlight", +function(x1, x2){ +for (var i = this.highlights.size(); --i >= 0; ) { +var h = this.highlights.get(i); +if (h.x1 == x1 && h.x2 == x2) this.highlights.removeItemAt(i); +} +}, "~N,~N"); +Clazz_defineMethod(c$, "scaleYBy", +function(factor){ +if (this.imageView == null && !this.zoomEnabled) return; +this.viewData.scaleSpectrum(this.imageView == null ? this.iSpectrumSelected : -2, factor); +if (this.imageView != null) { +this.update2dImage(false); +this.resetPinsFromView(); +}this.pd.refresh(); +}, "~N"); +Clazz_defineMethod(c$, "selectSpectrum", +function(filePath, type, model){ +var haveFound = false; +for (var i = this.spectra.size(); --i >= 0; ) if ((filePath == null || this.getSpectrumAt(i).getFilePathForwardSlash().equals(filePath)) && (this.getSpectrumAt(i).matchesPeakTypeModel(type, model))) { +this.setSpectrumSelected(i); +if (this.nSplit > 1) this.splitStack(true); +haveFound = true; +} +if (this.nSpectra > 1 && !haveFound && this.iSpectrumSelected >= 0 && !this.pd.isCurrentGraphSet(this)) this.setSpectrumSelected(-2147483648); +return haveFound; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +var pi; +for (var i = this.spectra.size(); --i >= 0; ) if ((pi = this.getSpectrumAt(i).selectPeakByFileIndex(filePath, index, atomKey)) != null) return pi; + +return null; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "setSelected", +function(i){ +if (i < 0) { +this.bsSelected.clearAll(); +this.setSpectrumClicked(-1); +return; +}this.bsSelected.set(i); +this.setSpectrumClicked((this.bsSelected.cardinality() == 1 ? i : -1)); +if (this.nSplit > 1 && i >= 0) this.pd.currentSplitPoint = i; +}, "~N"); +Clazz_defineMethod(c$, "setSelectedIntegral", +function(val){ +var spec = this.selectedIntegral.getSpectrum(); +this.getIntegrationGraph(this.getSpectrumIndex(spec)).setSelectedIntegral(this.selectedIntegral, val); +}, "~N"); +Clazz_defineMethod(c$, "setShowAnnotation", +function(type, tfToggle){ +var id = this.getDialog(type, -1); +if (id == null) { +if (tfToggle != null && tfToggle !== Boolean.TRUE) return; +if (type === JSV.common.Annotation.AType.PeakList || type === JSV.common.Annotation.AType.Integration || type === JSV.common.Annotation.AType.Measurements) this.pd.showDialog(type); +return; +}if (tfToggle == null) { +if (id.isDialog()) (id).setVisible(!(id).isVisible()); + else this.pd.showDialog(type); +return; +}var isON = tfToggle.booleanValue(); +if (isON) id.setState(isON); +if (isON || id.isDialog()) this.pd.showDialog(type); +if (!isON && id.isDialog()) (id).setVisible(false); +}, "JSV.common.Annotation.AType,Boolean"); +Clazz_defineMethod(c$, "checkIntegralParams", +function(parameters, value){ +var spec = this.getSpectrum(); +if (!spec.canIntegrate() || this.reversePlot) return false; +var iSpec = this.getFixedSelectedSpectrumIndex(); +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (value == null) return true; +switch (JSV.common.IntegralData.IntMode.getMode(value.toUpperCase())) { +case JSV.common.IntegralData.IntMode.NA: +return false; +case JSV.common.IntegralData.IntMode.CLEAR: +this.integrate(iSpec, null); +this.integrate(iSpec, parameters); +break; +case JSV.common.IntegralData.IntMode.ON: +if (ad == null) this.integrate(iSpec, parameters); + else ad.setState(true); +break; +case JSV.common.IntegralData.IntMode.OFF: +if (ad != null) ad.setState(false); +break; +case JSV.common.IntegralData.IntMode.TOGGLE: +if (ad == null) this.integrate(iSpec, parameters); + else ad.setState(!ad.getState()); +break; +case JSV.common.IntegralData.IntMode.AUTO: +if (ad == null) { +this.checkIntegralParams(parameters, "ON"); +ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +}if (ad != null) (ad.getData()).autoIntegrate(); +break; +case JSV.common.IntegralData.IntMode.LIST: +this.pd.showDialog(JSV.common.Annotation.AType.Integration); +break; +case JSV.common.IntegralData.IntMode.MARK: +if (ad == null) { +this.checkIntegralParams(parameters, "ON"); +ad = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +}if (ad != null) (ad.getData()).addMarks(value.substring(4).trim()); +break; +case JSV.common.IntegralData.IntMode.MIN: +if (ad != null) { +try { +var val = Double.parseDouble(JSV.common.ScriptToken.getTokens(value).get(1)); +(ad.getData()).setMinimumIntegral(val); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}break; +case JSV.common.IntegralData.IntMode.UPDATE: +if (ad != null) (ad.getData()).update(parameters); +} +this.updateDialog(JSV.common.Annotation.AType.Integration, -1); +return true; +}, "JSV.common.Parameters,~S"); +Clazz_defineMethod(c$, "setSpectrum", +function(iSpec, fromSplit){ +if (fromSplit && this.nSplit > 1) { +if (this.nSplit > 1) this.setSpectrumClicked(iSpec); +} else { +this.setSpectrumClicked(iSpec); +this.stackSelected = false; +this.showAllStacked = false; +}if (iSpec >= 0) this.dialogsToFront(this.getSpectrum()); +}, "~N,~B"); +Clazz_defineMethod(c$, "setSpectrumJDX", +function(spec){ +var pt = this.getFixedSelectedSpectrumIndex(); +this.spectra.removeItemAt(pt); +this.spectra.add(pt, spec); +this.pendingMeasurement = null; +this.clearViews(); +this.viewData.newSpectrum(this.spectra); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setZoom", +function(x1, y1, x2, y2){ +this.setZoomTo(0); +if (x1 == 0 && x2 == 0 && y1 == 0 && y2 == 0) { +this.newPins(); +this.imageView = null; +x1 = this.getScale().minXOnScale; +x2 = this.getScale().maxXOnScale; +} else { +this.doZoom(x1, y1, x2, y2, true, (y1 != y2), false, true, true); +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "shiftSpectrum", +function(mode, xOld, xNew){ +var spec = this.getSpectrum(); +if (!spec.isNMR() || !spec.is1D()) return false; +var ok = null; +var dx = 0; +if (xNew == 1.7976931348623157E308) { +dx = -spec.addSpecShift(0); +} else { +switch (mode) { +case 3: +dx = xNew; +break; +case 1: +case 2: +this.nextClickMode = mode; +if (Double.isNaN(xOld)) { +ok = this.pd.getInput("Click on " + (mode == 1 ? "or beside a peak to set its chemical shift" : "the spectrum set the chemical shift at that point") + (xNew == -2147483648 ? "" : " to " + xNew) + ".", "Set Reference " + (mode == 1 ? "for Peak" : "at Point"), "OK"); +this.nextClickForSetPeak = ("OK".equals(ok) ? Double.$valueOf(xNew) : null); +return false; +}this.nextClickForSetPeak = null; +case 4: +if (this.nextClickForSetPeak != null) { +xNew = this.nextClickForSetPeak.doubleValue(); +this.nextClickForSetPeak = null; +}if (Double.isNaN(xOld)) xOld = this.lastClickX; +if (this.nextClickMode == 1) xOld = this.getNearestPeak(spec, xOld, this.toY(this.pd.mouseY)); +if (Double.isNaN(xNew)) try { +var s = this.pd.getInput("New chemical shift (set blank to reset)", "Set Reference", JU.DF.formatDecimalDbl(xOld, this.getScale().precision[0])).trim(); +if (s.length == 0) xNew = xOld - spec.addSpecShift(0); + else xNew = Double.parseDouble(s); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +dx = xNew - xOld; +break; +} +}if (dx == 0) return false; +spec.addSpecShift(dx); +if (this.annotations != null) for (var i = this.annotations.size(); --i >= 0; ) if (this.annotations.get(i).spec === spec) this.annotations.get(i).addSpecShift(dx); + +if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (e.getValue().getSpectrum() === spec) e.getValue().setSpecShift(dx); + +this.getScale().addSpecShift(dx); +if (!Double.isNaN(this.lastClickX)) this.lastClickX += dx; +this.updateDialogs(); +this.doZoom(0, this.getScale().minYOnScale, 0, this.getScale().maxYOnScale, true, true, false, true, false); +this.pd.setTaintedAll(); +this.pd.repaint(); +return true; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "toPeak", +function(istep){ +istep *= (this.drawXAxisLeftToRight ? 1 : -1); +if (Double.isNaN(this.lastClickX)) this.lastClickX = this.lastPixelX = 0; +var spec = this.getSpectrum(); +var coord = this.setCoordClicked(this.lastPixelX, this.lastClickX, 0); +var iPeak = spec.setNextPeak(coord, istep); +if (iPeak < 0) return; +var peak = spec.getPeakList().get(iPeak); +spec.setSelectedPeak(peak); +this.setCoordClicked(peak.getXPixel(), peak.getX(), 0); +this.pd.notifyPeakPickedListeners( new JSV.common.PeakPickEvent(this.jsvp, this.pd.coordClicked, peak)); +}, "~N"); +Clazz_defineMethod(c$, "scaleSelectedBy", +function(f){ +for (var i = this.bsSelected.nextSetBit(0); i >= 0; i = this.bsSelected.nextSetBit(i + 1)) this.viewData.scaleSpectrum(i, f); + +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "gs: " + this.nSpectra + " " + this.spectra + " " + this.spectra.get(0).getFilePath(); +}); +Clazz_defineMethod(c$, "setXPointer", +function(spec, x){ +if (spec != null) this.setSpectrumClicked(this.getSpectrumIndex(spec)); +this.xValueMovedTo = this.lastClickX = x; +this.lastPixelX = this.toPixelX(x); +this.setXPixelMovedTo(x, 1.7976931348623157E308, 0, 0); +this.yValueMovedTo = NaN; +}, "JSV.common.Spectrum,~N"); +Clazz_defineMethod(c$, "setXPointer2", +function(spec, x){ +if (spec != null) this.setSpectrumClicked(this.getSpectrumIndex(spec)); +this.setXPixelMovedTo(1.7976931348623157E308, x, 0, 0); +}, "JSV.common.Spectrum,~N"); +Clazz_defineMethod(c$, "hasCurrentMeasurement", +function(type){ +return ((type === JSV.common.Annotation.AType.Integration ? this.selectedSpectrumIntegrals : this.selectedSpectrumMeasurements) != null); +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "getDialog", +function(type, iSpec){ +if (iSpec == -1) iSpec = this.getCurrentSpectrumIndex(); +return (this.dialogs == null || iSpec < 0 ? null : this.dialogs.get(type + "_" + iSpec)); +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "removeDialog", +function(iSpec, type){ +if (this.dialogs != null && iSpec >= 0) this.dialogs.remove(type + "_" + iSpec); +}, "~N,JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "addDialog", +function(iSpec, type, dialog){ +if (this.dialogs == null) this.dialogs = new java.util.Hashtable(); +var key = type + "_" + iSpec; +dialog.setGraphSetKey(key); +this.dialogs.put(key, dialog); +return dialog; +}, "~N,JSV.common.Annotation.AType,JSV.api.AnnotationData"); +Clazz_defineMethod(c$, "removeDialog", +function(dialog){ +var key = dialog.getGraphSetKey(); +this.dialogs.remove(key); +var data = dialog.getData(); +if (data != null) this.dialogs.put(key, data); +}, "JSV.dialog.JSVDialog"); +Clazz_defineMethod(c$, "getPeakListing", +function(iSpec, p, forceNew){ +if (iSpec < 0) iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) return null; +var dialog = this.getDialog(JSV.common.Annotation.AType.PeakList, -1); +if (dialog == null) { +if (!forceNew) return null; +this.addDialog(iSpec, JSV.common.Annotation.AType.PeakList, dialog = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.getSpectrum())); +}(dialog.getData()).setPeakList(p, -2147483648, this.viewData.getScale()); +if (dialog.isDialog()) (dialog).setFields(); +return dialog.getData(); +}, "~N,JSV.common.Parameters,~B"); +Clazz_defineMethod(c$, "setPeakListing", +function(tfToggle){ +var dialog = this.getDialog(JSV.common.Annotation.AType.PeakList, -1); +var ad = (dialog != null && dialog.isDialog() ? dialog : null); +var isON = (tfToggle == null ? ad == null || !ad.isVisible() : tfToggle.booleanValue()); +if (isON) { +this.pd.showDialog(JSV.common.Annotation.AType.PeakList); +} else { +if (dialog.isDialog()) (dialog).setVisible(false); +}}, "Boolean"); +Clazz_defineMethod(c$, "haveIntegralDisplayed", +function(i){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, i); +return (ad != null && ad.getState()); +}, "~N"); +Clazz_defineMethod(c$, "getIntegrationGraph", +function(i){ +var ad = this.getDialog(JSV.common.Annotation.AType.Integration, i); +return (ad == null ? null : ad.getData()); +}, "~N"); +Clazz_defineMethod(c$, "setIntegrationRatios", +function(value){ +var iSpec = this.getFixedSelectedSpectrumIndex(); +if (this.aIntegrationRatios == null) this.aIntegrationRatios = new Array(this.nSpectra); +this.aIntegrationRatios[iSpec] = JSV.common.IntegralData.getIntegrationRatiosFromString(this.getSpectrum(), value); +}, "~S"); +Clazz_defineMethod(c$, "getIntegrationRatios", +function(i){ +return (this.aIntegrationRatios == null ? null : this.aIntegrationRatios[i]); +}, "~N"); +Clazz_defineMethod(c$, "integrate", +function(iSpec, parameters){ +var spec = this.getSpectrumAt(iSpec); +if (parameters == null || !spec.canIntegrate()) { +this.removeDialog(iSpec, JSV.common.Annotation.AType.Integration); +return false; +}this.addDialog(iSpec, JSV.common.Annotation.AType.Integration, new JSV.common.IntegralData(spec, parameters)); +return true; +}, "~N,JSV.common.Parameters"); +Clazz_defineMethod(c$, "getIntegration", +function(iSpec, p, forceNew){ +if (iSpec < 0) iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) return null; +var dialog = this.getDialog(JSV.common.Annotation.AType.Integration, -1); +if (dialog == null) { +if (!forceNew) return null; +dialog = this.addDialog(iSpec, JSV.common.Annotation.AType.Integration, new JSV.common.IntegralData(this.getSpectrum(), p)); +}return dialog.getData(); +}, "~N,JSV.common.Parameters,~B"); +Clazz_defineMethod(c$, "getMeasurementInfo", +function(type, iSpec){ +var md; +switch (type) { +case JSV.common.Annotation.AType.PeakList: +md = this.getPeakListing(iSpec, null, false); +break; +case JSV.common.Annotation.AType.Integration: +md = this.getIntegration(iSpec, null, false); +break; +default: +return null; +} +if (md == null) return null; +var info = new java.util.Hashtable(); +md.getInfo(info); +return info; +}, "JSV.common.Annotation.AType,~N"); +Clazz_defineMethod(c$, "getInfo", +function(key, iSpec){ +var spectraInfo = new java.util.Hashtable(); +if ("".equals(key)) { +spectraInfo.put("KEYS", "viewInfo spectra"); +} else if ("viewInfo".equalsIgnoreCase(key)) return this.getScale().getInfo(spectraInfo); +var specInfo = new JU.Lst(); +spectraInfo.put("spectra", specInfo); +for (var i = 0; i < this.nSpectra; i++) { +if (iSpec >= 0 && i != iSpec) continue; +var spec = this.spectra.get(i); +var info = spec.getInfo(key); +if (iSpec >= 0 && key != null && (info.size() == 2 || key.equalsIgnoreCase("id"))) { +if (info.size() == 2) info.remove("id"); +return info; +}JSV.common.Parameters.putInfo(key, info, "type", spec.getDataType()); +JSV.common.Parameters.putInfo(key, info, "titleLabel", spec.getTitleLabel()); +JSV.common.Parameters.putInfo(key, info, "filePath", spec.getFilePath().$replace('\\', '/')); +JSV.common.Parameters.putInfo(key, info, "PeakList", (JSV.common.Parameters.isMatch(key, "PeakList") ? this.getMeasurementInfo(JSV.common.Annotation.AType.PeakList, i) : null)); +JSV.common.Parameters.putInfo(key, info, "Integration", (JSV.common.Parameters.isMatch(key, "Integration") ? this.getMeasurementInfo(JSV.common.Annotation.AType.Integration, i) : null)); +if (iSpec >= 0) return info; +specInfo.addLast(info); +} +return spectraInfo; +}, "~S,~N"); +Clazz_defineMethod(c$, "getTitle", +function(forPrinting){ +return (this.nSpectra == 1 || this.iSpectrumSelected >= 0 && (!forPrinting || this.nSplit == 1) ? this.getSpectrum().getTitle() : null); +}, "~B"); +Clazz_defineMethod(c$, "getCurrentView", +function(){ +this.setScale(this.getFixedSelectedSpectrumIndex()); +return this.viewData.getScale(); +}); +Clazz_defineMethod(c$, "set2DXY", +function(x, y, isLocked){ +var p; +if (this.gs2dLinkedX != null) { +p = this.toPixelX(x); +if (p != this.fixX(p)) { +p = -2147483648; +x = 1.7976931348623157E308; +}this.cur1D2x1.setX(x, p); +}if (this.gs2dLinkedY != null) { +p = this.toPixelX(y); +if (p != this.fixX(p)) { +p = -2147483648; +y = 1.7976931348623157E308; +}this.cur1D2x2.setX(y, p); +}this.cur1D2Locked = isLocked; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "dialogsToFront", +function(spec){ +if (this.dialogs == null) return; +if (spec == null) spec = this.getSpectrum(); +for (var e, $e = this.dialogs.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var ad = e.getValue(); +if (this.isVisible(ad)) { +if (spec == null) (ad).setVisible(true); + else (ad).setFocus(ad.getSpectrum() === spec); +}} +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setPlotColors", +function(oColors){ +var colors = oColors; +if (colors.length > this.nSpectra) { +var tmpPlotColors = new Array(this.nSpectra); +System.arraycopy(colors, 0, tmpPlotColors, 0, this.nSpectra); +colors = tmpPlotColors; +} else if (this.nSpectra > colors.length) { +var tmpPlotColors = new Array(this.nSpectra); +var numAdditionColors = this.nSpectra - colors.length; +System.arraycopy(colors, 0, tmpPlotColors, 0, colors.length); +for (var i = 0, j = colors.length; i < numAdditionColors; i++, j++) tmpPlotColors[j] = this.generateRandomColor(); + +colors = tmpPlotColors; +}this.plotColors = colors; +}, "~O"); +Clazz_defineMethod(c$, "disposeImage", +function(){ +{ +if (this.image2D != null) +this.image2D.parentNode.removeChild(this.image2D); +}this.image2D = null; +this.jsvp = null; +this.pd = null; +this.highlights = null; +this.plotColors = null; +}); +Clazz_defineMethod(c$, "generateRandomColor", +function(){ +while (true) { +var red = Clazz_doubleToInt(Math.random() * 255); +var green = Clazz_doubleToInt(Math.random() * 255); +var blue = Clazz_doubleToInt(Math.random() * 255); +var randomColor = this.g2d.getColor3(red, green, blue); +if (randomColor.getRGB() != 0) return randomColor; +} +}); +Clazz_defineMethod(c$, "setPlotColor0", +function(oColor){ +this.plotColors[0] = oColor; +}, "~O"); +Clazz_defineMethod(c$, "getPlotColor", +function(index){ +if (index >= this.plotColors.length) return null; +return this.plotColors[index]; +}, "~N"); +Clazz_defineMethod(c$, "setColorFromToken", +function(og, whatColor){ +if (whatColor != null) this.g2d.setGraphicsColor(og, whatColor === JSV.common.ScriptToken.PLOTCOLOR ? this.plotColors[0] : this.pd.getColor(whatColor)); +}, "~O,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setPlotColor", +function(og, i){ +var c; +switch (i) { +case -3: +c = JSV.common.GraphSet.veryLightGrey; +break; +case -2: +c = this.pd.BLACK; +break; +case -1: +c = this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR); +break; +default: +c = this.plotColors[i]; +break; +} +this.g2d.setGraphicsColor(og, c); +}, "~O,~N"); +Clazz_defineMethod(c$, "draw2DImage", +function(){ +if (this.imageView != null) this.g2d.drawGrayScaleImage(this.gMain, this.image2D, this.imageView.xPixel0, this.imageView.yPixel0, this.imageView.xPixel0 + this.imageView.xPixels - 1, this.imageView.yPixel0 + this.imageView.yPixels - 1, this.imageView.xView1, this.imageView.yView1, this.imageView.xView2, this.imageView.yView2); +}); +Clazz_defineMethod(c$, "get2DImage", +function(spec0){ +this.imageView = new JSV.common.ImageView(); +this.imageView.set(this.viewList.get(0).getScale()); +if (!this.update2dImage(true)) return false; +this.imageView.resetZoom(); +this.sticky2Dcursor = true; +return true; +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "update2dImage", +function(isCreation){ +this.imageView.set(this.viewData.getScale()); +var spec = this.getSpectrumAt(0); +var buffer = this.imageView.get2dBuffer(spec, !isCreation); +if (buffer == null) { +this.image2D = null; +this.imageView = null; +return false; +}if (isCreation) { +buffer = this.imageView.adjustView(spec, this.viewData); +this.imageView.resetView(); +}this.image2D = this.g2d.newGrayScaleImage(this.gMain, this.image2D, this.imageView.imageWidth, this.imageView.imageHeight, buffer); +this.setImageWindow(); +return true; +}, "~B"); +Clazz_defineMethod(c$, "getAnnotation", +function(x, y, text, isPixels, is2d, offsetX, offsetY){ +return new JSV.common.ColoredAnnotation().setCA(x, y, this.getSpectrum(), text, this.pd.BLACK, isPixels, is2d, offsetX, offsetY); +}, "~N,~N,~S,~B,~B,~N,~N"); +Clazz_defineMethod(c$, "getAnnotation", +function(args, lastAnnotation){ +return JSV.common.Annotation.getColoredAnnotation(this.g2d, this.getSpectrum(), args, lastAnnotation); +}, "JU.Lst,JSV.common.Annotation"); +Clazz_defineMethod(c$, "fillBox", +function(g, x0, y0, x1, y1, whatColor){ +this.setColorFromToken(g, whatColor); +this.g2d.fillRect(g, Math.min(x0, x1), Math.min(y0, y1), Math.abs(x0 - x1), Math.abs(y0 - y1)); +}, "~O,~N,~N,~N,~N,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "drawBox", +function(g, x0, y0, x1, y1, whatColor){ +this.setColorFromToken(g, whatColor); +this.g2d.drawRect(g, Math.min(x0, x1), Math.min(y0, y1), Math.abs(x0 - x1) - 1, Math.abs(y0 - y1) - 1); +}, "~O,~N,~N,~N,~N,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "drawHandle", +function(g, x, y, size, outlineOnly){ +if (outlineOnly) this.g2d.drawRect(g, x - size, y - size, size * 2, size * 2); + else this.g2d.fillRect(g, x - size, y - size, size * 2 + 1, size * 2 + 1); +}, "~O,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setCurrentBoxColor", +function(g){ +this.g2d.setGraphicsColor(g, this.pd.BLACK); +}, "~O"); +Clazz_defineMethod(c$, "fillArrow", +function(g, type, x, y, doFill){ +var f = 1; +switch (type) { +case 1: +case 3: +f = -1; +break; +} +var axPoints = Clazz_newIntArray(-1, [x - 5, x - 5, x + 5, x + 5, x + 8, x, x - 8]); +var ayPoints = Clazz_newIntArray(-1, [y + 5 * f, y - f, y - f, y + 5 * f, y + 5 * f, y + 10 * f, y + 5 * f]); +switch (type) { +case 1: +case 2: +if (doFill) this.g2d.fillPolygon(g, ayPoints, axPoints, 7); + else this.g2d.drawPolygon(g, ayPoints, axPoints, 7); +break; +case 3: +case 4: +if (doFill) this.g2d.fillPolygon(g, axPoints, ayPoints, 7); + else this.g2d.drawPolygon(g, axPoints, ayPoints, 7); +} +}, "~O,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "fillCircle", +function(g, x, y, doFill){ +if (doFill) this.g2d.fillCircle(g, x - 4, y - 4, 8); + else this.g2d.drawCircle(g, x - 4, y - 4, 8); +}, "~O,~N,~N,~B"); +Clazz_defineMethod(c$, "setAnnotationColor", +function(g, note, whatColor){ +if (whatColor != null) { +this.setColorFromToken(g, whatColor); +return; +}var color = null; +if (Clazz_instanceOf(note,"JSV.common.ColoredAnnotation")) color = (note).getColor(); +if (color == null) color = this.pd.BLACK; +this.g2d.setGraphicsColor(g, color); +}, "~O,JSV.common.Annotation,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setSolutionColor", +function(vi, isNone, asFitted){ +for (var i = 0; i < this.nSpectra; i++) { +var spec = this.spectra.get(i); +var color = (isNone || !spec.canShowSolutionColor() ? -1 : vi.getColour(spec, asFitted)); +spec.setFillColor(color == -1 ? null : this.pd.vwr.parameters.getColor1(color)); +} +}, "JSV.api.VisibleInterface,~B,~B"); +Clazz_defineMethod(c$, "setIRMode", +function(mode, type){ +for (var i = 0; i < this.nSpectra; i++) { +var spec = this.spectra.get(i); +if (!spec.dataType.equals(type)) continue; +var spec2 = JSV.common.Spectrum.taConvert(spec, mode); +if (spec2 !== spec) this.pd.setSpecForIRMode(spec2); +} +}, "JSV.common.Spectrum.IRMode,~S"); +Clazz_defineMethod(c$, "getSpectrumCount", +function(){ +return 0; +}); +Clazz_defineMethod(c$, "invertYAxis", +function(){ +this.viewList.get(0).init(null, 0, 0, this.getSpectrum().invertYAxis().isContinuous()); +this.resetViewCompletely(); +}); +c$.$GraphSet$Highlight$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.x1 = 0; +this.x2 = 0; +this.color = null; +this.spectrum = null; +Clazz_instantialize(this, arguments);}, JSV.common.GraphSet, "Highlight", null); +Clazz_makeConstructor(c$, +function(x1, x2, spec, color){ +this.x1 = x1; +this.x2 = x2; +this.color = color; +this.spectrum = spec; +}, "~N,~N,JSV.common.Spectrum,javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "highlight " + this.x1 + " " + this.x2 + " " + this.spectrum; +}); +Clazz_overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz_instanceOf(obj,"JSV.common.GraphSet.Highlight"))) return false; +var hl = obj; +return ((hl.x1 == this.x1) && (hl.x2 == this.x2)); +}, "~O"); +/*eoif4*/})(); +}; +c$.RT2 = Math.sqrt(2.0); +c$.veryLightGrey = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.XYScaleConverter"], "JSV.common.ImageView", ["JSV.common.Coordinate", "$.ScaleData"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.buf2d = null; +this.grayFactorLast = 0; +this.averageGray = 0; +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.imageWidth = 0; +this.imageHeight = 0; +this.xPixels = 0; +this.yPixels = 0; +this.xPixelZoom1 = 0; +this.yPixelZoom1 = 0; +this.xPixelZoom2 = 0; +this.yPixelZoom2 = 0; +this.xView1 = 0; +this.yView1 = 0; +this.xView2 = 0; +this.yView2 = 0; +this.minX = NaN; +this.maxX = 0; +this.minY = 0; +this.maxY = 0; +this.minZ = 0; +this.maxZ = 0; +this.scaleData = null; +Clazz_instantialize(this, arguments);}, JSV.common, "ImageView", null, JSV.common.XYScaleConverter); +Clazz_defineMethod(c$, "set", +function(view){ +if (Double.isNaN(this.minX)) { +this.minX = view.minX; +this.maxX = view.maxX; +}this.minZ = view.minY; +this.maxZ = view.maxY; +this.scaleData = new JSV.common.ScaleData(); +}, "JSV.common.ScaleData"); +Clazz_defineMethod(c$, "setZoom", +function(xPixel1, yPixel1, xPixel2, yPixel2){ +this.xPixelZoom1 = Math.min(xPixel1, xPixel2); +this.yPixelZoom1 = Math.min(yPixel1, yPixel2); +this.xPixelZoom2 = Math.max(xPixel1, xPixel2); +this.yPixelZoom2 = Math.max(yPixel1, yPixel2); +this.setView(); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setXY0", +function(spec, xPixel, yPixel){ +this.xPixel0 = xPixel; +this.yPixel0 = yPixel; +this.xPixel1 = this.xPixel0 + this.xPixels - 1; +this.yPixel1 = this.yPixel0 + this.yPixels - 1; +this.setMinMaxY(spec); +}, "JSV.common.Spectrum,~N,~N"); +Clazz_defineMethod(c$, "setPixelWidthHeight", +function(xPixels, yPixels){ +this.xPixels = xPixels; +this.yPixels = yPixels; +}, "~N,~N"); +Clazz_defineMethod(c$, "resetView", +function(){ +this.xView1 = 0; +this.yView1 = 0; +this.xView2 = this.imageWidth - 1; +this.yView2 = this.imageHeight - 1; +}); +Clazz_defineMethod(c$, "setView", +function(){ +if (this.xPixelZoom1 == 0) this.resetZoom(); +var x1 = this.toImageX(this.xPixelZoom1); +var y1 = this.toImageY(this.yPixelZoom1); +var x2 = this.toImageX(this.xPixelZoom2); +var y2 = this.toImageY(this.yPixelZoom2); +this.xView1 = Math.min(x1, x2); +this.yView1 = Math.min(y1, y2); +this.xView2 = Math.max(x1, x2); +this.yView2 = Math.max(y1, y2); +this.setScaleData(); +this.resetZoom(); +}); +Clazz_defineMethod(c$, "resetZoom", +function(){ +this.xPixelZoom1 = this.xPixel0; +this.yPixelZoom1 = this.yPixel0; +this.xPixelZoom2 = this.xPixel1; +this.yPixelZoom2 = this.yPixel1; +}); +Clazz_defineMethod(c$, "toImageX", +function(xPixel){ +return this.xView1 + Clazz_doubleToInt(Math.floor((xPixel - this.xPixel0) / (this.xPixels - 1.0) * (this.xView2 - this.xView1))); +}, "~N"); +Clazz_defineMethod(c$, "toImageY", +function(yPixel){ +return this.yView1 + Clazz_doubleToInt(Math.floor((yPixel - this.yPixel0) / (this.yPixels - 1.0) * (this.yView2 - this.yView1))); +}, "~N"); +Clazz_defineMethod(c$, "toImageX0", +function(xPixel){ +return JSV.common.Coordinate.intoRange(Clazz_doubleToInt((1.0 * xPixel - this.xPixel0) / (this.xPixels - 1) * (this.imageWidth - 1)), 0, this.imageWidth - 1); +}, "~N"); +Clazz_defineMethod(c$, "toImageY0", +function(yPixel){ +return JSV.common.Coordinate.intoRange(Clazz_doubleToInt((1.0 * yPixel - this.yPixel0) / (this.yPixels - 1) * (this.imageHeight - 1)), 0, this.imageHeight - 1); +}, "~N"); +Clazz_defineMethod(c$, "isXWithinRange", +function(xPixel){ +return (xPixel >= this.xPixel0 - 5 && xPixel < this.xPixel0 + this.xPixels + 5); +}, "~N"); +Clazz_defineMethod(c$, "toSubspectrumIndex", +function(yPixel){ +return JSV.common.Coordinate.intoRange(this.imageHeight - 1 - this.toImageY(yPixel), 0, this.imageHeight - 1); +}, "~N"); +Clazz_defineMethod(c$, "toX0", +function(xPixel){ +return this.maxX + (this.minX - this.maxX) * (this.fixX(xPixel) - this.xPixel0) / (this.xPixels - 1); +}, "~N"); +Clazz_defineMethod(c$, "toPixelX0", +function(x){ +return this.xPixel1 - Clazz_doubleToInt((x - this.minX) / (this.maxX - this.minX) * (this.xPixels - 1)); +}, "~N"); +Clazz_defineMethod(c$, "toPixelY0", +function(ysub){ +return this.yPixel1 - Clazz_doubleToInt(ysub / (this.imageHeight - 1) * (this.yPixels - 1)); +}, "~N"); +Clazz_defineMethod(c$, "subIndexToPixelY", +function(subIndex){ +var f = 1.0 * (this.imageHeight - 1 - subIndex - this.yView1) / (this.yView2 - this.yView1); +var y = this.yPixel0 + Clazz_doubleToInt(f * (this.yPixels - 1)); +return y; +}, "~N"); +Clazz_defineMethod(c$, "fixSubIndex", +function(subIndex){ +return JSV.common.Coordinate.intoRange(subIndex, this.imageHeight - 1 - this.yView2, this.imageHeight - 1 - this.yView1); +}, "~N"); +Clazz_defineMethod(c$, "setView0", +function(xp1, yp1, xp2, yp2){ +var x1 = this.toImageX0(xp1); +var y1 = this.toImageY0(yp1); +var x2 = this.toImageX0(xp2); +var y2 = this.toImageY0(yp2); +this.xView1 = Math.min(x1, x2); +this.yView1 = Math.min(y1, y2); +this.xView2 = Math.max(x1, x2); +this.yView2 = Math.max(y1, y2); +this.resetZoom(); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "get2dBuffer", +function(spec, forceNew){ +var subSpectra = spec.getSubSpectra(); +if (subSpectra == null || !subSpectra.get(0).isContinuous()) return null; +var xyCoords = spec.getXYCoords(); +var nSpec = subSpectra.size(); +this.imageWidth = xyCoords.length; +this.imageHeight = nSpec; +var grayFactor = 255 / (this.maxZ - this.minZ); +if (!forceNew && this.buf2d != null && grayFactor == this.grayFactorLast) return this.buf2d; +this.grayFactorLast = grayFactor; +var pt = this.imageWidth * this.imageHeight; +var buf = (this.buf2d == null || this.buf2d.length != pt ? Clazz_newIntArray (pt, 0) : this.buf2d); +var totalGray = 0; +for (var i = 0; i < nSpec; i++) { +var points = subSpectra.get(i).xyCoords; +if (points.length != xyCoords.length) return null; +for (var j = 0; j < xyCoords.length; j++) { +var y = points[j].getYVal(); +var gray = 255 - JSV.common.Coordinate.intoRange(Clazz_doubleToInt((y - this.minZ) * grayFactor), 0, 255); +buf[--pt] = gray; +totalGray += gray; +} +} +this.averageGray = (1 - totalGray / (this.imageWidth * this.imageHeight) / 255); +System.out.println("Average gray = " + this.averageGray); +return (this.buf2d = buf); +}, "JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "adjustView", +function(spec, view){ +var i = 0; +var isLow = false; +while (((isLow = (this.averageGray < 0.05)) || this.averageGray > 0.3) && i++ < 10) { +view.scaleSpectrum(-2, isLow ? 2 : 0.5); +this.set(view.getScale()); +this.get2dBuffer(spec, false); +} +return this.buf2d; +}, "JSV.common.Spectrum,JSV.common.ViewData"); +Clazz_defineMethod(c$, "getBuffer", +function(){ +return this.buf2d; +}); +Clazz_defineMethod(c$, "setMinMaxY", +function(spec){ +var subSpectra = spec.getSubSpectra(); +var spec0 = subSpectra.get(0); +this.maxY = spec0.getY2D(); +this.minY = subSpectra.get(subSpectra.size() - 1).getY2D(); +if (spec0.y2DUnits.equalsIgnoreCase("Hz")) { +this.maxY /= spec0.freq2dY; +this.minY /= spec0.freq2dY; +}this.setScaleData(); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setScaleData", +function(){ +this.scaleData.minY = this.minY; +this.scaleData.maxY = this.maxY; +this.scaleData.setYScale(this.toY(this.yPixel0), this.toY(this.yPixel1), false, false); +}); +Clazz_overrideMethod(c$, "fixX", +function(xPixel){ +return (xPixel < this.xPixel0 ? this.xPixel0 : xPixel > this.xPixel1 ? this.xPixel1 : xPixel); +}, "~N"); +Clazz_overrideMethod(c$, "fixY", +function(yPixel){ +return JSV.common.Coordinate.intoRange(yPixel, this.yPixel0, this.yPixel1); +}, "~N"); +Clazz_overrideMethod(c$, "getScale", +function(){ +return this.scaleData; +}); +Clazz_overrideMethod(c$, "toX", +function(xPixel){ +return this.maxX + (this.minX - this.maxX) * this.toImageX(this.fixX(xPixel)) / (this.imageWidth - 1); +}, "~N"); +Clazz_overrideMethod(c$, "toY", +function(yPixel){ +var isub = this.toSubspectrumIndex(yPixel); +return this.maxY + (this.minY - this.maxY) * isub / (this.imageHeight - 1); +}, "~N"); +Clazz_overrideMethod(c$, "toPixelX", +function(x){ +var x0 = this.toX(this.xPixel0); +var x1 = this.toX(this.xPixel1); +return this.xPixel0 + Clazz_doubleToInt((x - x0) / (x1 - x0) * (this.xPixels - 1)); +}, "~N"); +Clazz_overrideMethod(c$, "toPixelY", +function(y){ +var f = (y - this.scaleData.minYOnScale) / (this.scaleData.maxYOnScale - this.scaleData.minYOnScale); +return Clazz_doubleToInt(this.yPixel0 + f * this.yPixels); +}, "~N"); +Clazz_overrideMethod(c$, "getXPixels", +function(){ +return this.xPixels; +}); +Clazz_overrideMethod(c$, "getYPixels", +function(){ +return this.yPixels; +}); +Clazz_overrideMethod(c$, "getXPixel0", +function(){ +return this.xPixel0; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Measurement"], "JSV.common.Integral", null, function(){ +var c$ = Clazz_declareType(JSV.common, "Integral", JSV.common.Measurement); +Clazz_defineMethod(c$, "setInt", +function(x1, y1, spec, value, x2, y2){ +this.setA(x1, y1, spec, "", false, false, 0, 6); +this.setPt2(x2, y2); +this.setValue(value); +return this; +}, "~N,~N,JSV.common.Spectrum,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_declareType(JSV.common, "IntegralComparator", null, java.util.Comparator); +Clazz_overrideMethod(c$, "compare", +function(m1, m2){ +return (m1.getXVal() < m2.getXVal() ? -1 : m1.getXVal() > m2.getXVal() ? 1 : 0); +}, "JSV.common.Measurement,JSV.common.Measurement"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum", "JSV.common.MeasurementData", "$.IntegralComparator"], "JSV.common.IntegralData", ["java.util.Collections", "$.StringTokenizer", "JU.AU", "$.BS", "$.DF", "$.Lst", "$.PT", "JSV.common.Annotation", "$.Coordinate", "$.Integral", "$.ScriptToken"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.percentMinY = 0; +this.percentOffset = 0; +this.intRange = 0; +this.normalizationFactor = 1; +this.percentRange = 0; +this.offset = 0; +this.integralTotal = 0; +this.haveRegions = false; +this.xyCoords = null; +Clazz_instantialize(this, arguments);}, JSV.common, "IntegralData", JSV.common.MeasurementData); +Clazz_makeConstructor(c$, +function(integralMinY, integralOffset, integralRange, spec){ +Clazz_superConstructor(this, JSV.common.IntegralData, [JSV.common.Annotation.AType.Integration, spec]); +this.percentMinY = integralMinY; +this.percentOffset = integralOffset; +this.percentRange = integralRange; +this.calculateIntegral(); +}, "~N,~N,~N,JSV.common.Spectrum"); +Clazz_makeConstructor(c$, +function(spec, p){ +Clazz_superConstructor(this, JSV.common.IntegralData, [JSV.common.Annotation.AType.Integration, spec]); +if (p == null) { +this.autoIntegrate(); +return; +}this.percentOffset = p.integralOffset; +this.percentRange = p.integralRange; +this.calculateIntegral(); +}, "JSV.common.Spectrum,JSV.common.Parameters"); +Clazz_defineMethod(c$, "getPercentMinimumY", +function(){ +return this.percentMinY; +}); +Clazz_defineMethod(c$, "getPercentOffset", +function(){ +return this.percentOffset; +}); +Clazz_defineMethod(c$, "getIntegralFactor", +function(){ +return this.intRange; +}); +Clazz_defineMethod(c$, "update", +function(parameters){ +this.update(parameters.integralMinY, parameters.integralOffset, parameters.integralRange); +}, "JSV.common.Parameters"); +Clazz_defineMethod(c$, "update", +function(integralMinY, integralOffset, integralRange){ +var percentRange0 = this.percentRange; +if (integralRange <= 0 || integralRange == this.percentRange && integralOffset == this.percentOffset) return; +this.percentOffset = integralOffset; +this.percentRange = integralRange; +this.checkRange(); +var intRangeNew = integralRange / 100 / this.integralTotal; +var offsetNew = integralOffset / 100; +for (var i = 0; i < this.xyCoords.length; i++) { +var y = this.xyCoords[i].getYVal(); +y = (y - this.offset) / this.intRange; +this.xyCoords[i].setYVal(y * intRangeNew + offsetNew); +} +if (this.normalizationFactor != 1) this.normalizationFactor *= percentRange0 / integralRange; +if (this.haveRegions) { +for (var i = this.size(); --i >= 0; ) { +var ir = this.get(i); +var y1 = this.getYValueAt(ir.getXVal()); +var y2 = this.getYValueAt(ir.getXVal2()); +ir.setYVal(y1); +ir.setYVal2(y2); +ir.setValue(Math.abs(y2 - y1) * 100 * this.normalizationFactor); +} +}this.intRange = intRangeNew; +this.offset = offsetNew; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getYValueAt", +function(x){ +return JSV.common.Coordinate.getYValueAt(this.xyCoords, x); +}, "~N"); +Clazz_defineMethod(c$, "addIntegralRegion", +function(x1, x2){ +if (Double.isNaN(x1)) { +this.haveRegions = false; +this.clear(); +return null; +}if (Double.isNaN(x2)) { +return this.splitIntegral(x1); +}if (x1 == x2) return null; +if (x1 < x2) { +this.clear(x1, x2); +return null; +}var y1 = this.getYValueAt(x1); +var y2 = this.getYValueAt(x2); +this.haveRegions = true; +var $in = new JSV.common.Integral().setInt(x1, y1, this.spec, Math.abs(y2 - y1) * 100 * this.normalizationFactor, x2, y2); +this.clear(x1, x2); +this.addLast($in); +java.util.Collections.sort(this, JSV.common.IntegralData.c); +return $in; +}, "~N,~N"); +Clazz_defineMethod(c$, "splitIntegral", +function(x){ +var i = this.find(x); +if (i < 0) return null; +var integral = this.removeItemAt(i); +var x0 = integral.getXVal(); +var x2 = integral.getXVal2(); +this.addIntegralRegion(x0, x); +return this.addIntegralRegion(x, x2); +}, "~N"); +Clazz_overrideMethod(c$, "setSpecShift", +function(dx){ +JSV.common.Coordinate.shiftX(this.xyCoords, dx); +for (var i = this.size(); --i >= 1; ) { +this.get(i).addSpecShift(dx); +} +}, "~N"); +Clazz_defineMethod(c$, "addMarks", +function(ppms){ +ppms = JU.PT.rep(" " + ppms, ",", " "); +ppms = JU.PT.rep(ppms, " -", " #"); +ppms = JU.PT.rep(ppms, "--", "-#"); +ppms = ppms.$replace('-', '^'); +ppms = ppms.$replace('#', '-'); +var tokens = JSV.common.ScriptToken.getTokens(ppms); +for (var i = 0; i < tokens.size(); i++) { +try { +var s = tokens.get(i); +var norm = 0; +var pt = s.indexOf('^'); +if (pt < 0) continue; +var pt2 = s.indexOf(':'); +if (pt2 > pt) { +norm = Double.$valueOf(s.substring(pt2 + 1).trim()).doubleValue(); +s = s.substring(0, pt2).trim(); +}var x2 = Double.$valueOf(s.substring(0, pt).trim()).doubleValue(); +var x1 = Double.$valueOf(s.substring(pt + 1).trim()).doubleValue(); +if (x1 == 0 && x2 == 0) this.clear(); +if (x1 == x2) continue; +var m = this.addIntegralRegion(Math.max(x1, x2), Math.min(x1, x2)); +if (m != null && norm > 0) this.setSelectedIntegral(m, norm); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +continue; +} else { +throw e; +} +} +} +}, "~S"); +Clazz_defineMethod(c$, "calculateIntegral", +function(){ +var specXyCoords = this.spec.getXYCoords(); +this.xyCoords = new Array(specXyCoords.length); +this.integralTotal = 0; +this.checkRange(); +var minY = 1E100; +for (var i = 0; i < specXyCoords.length; i++) { +var y = specXyCoords[i].getYVal(); +if (y < minY && y >= 0) minY = y; +} +var minI = 1E100; +var maxI = -1.0E100; +for (var i = 0; i < specXyCoords.length; i++) { +var y = specXyCoords[i].getYVal(); +this.integralTotal += (y - minY); +if (this.integralTotal < minI) minI = this.integralTotal; +if (this.integralTotal > maxI) maxI = this.integralTotal; +} +this.integralTotal = maxI - minI; +this.intRange = (this.percentRange / 100) / this.integralTotal; +this.offset = (this.percentOffset / 100); +var integral = 0; +for (var i = specXyCoords.length; --i >= 0; ) { +var y = specXyCoords[i].getYVal(); +integral += (y - minY); +this.xyCoords[i] = new JSV.common.Coordinate().set(specXyCoords[i].getXVal(), integral * this.intRange + this.offset); +} +return this.xyCoords; +}); +Clazz_defineMethod(c$, "checkRange", +function(){ +this.percentOffset = Math.max(5, this.percentOffset); +this.percentRange = Math.max(10, this.percentRange); +}); +c$.getIntegrationRatiosFromString = Clazz_defineMethod(c$, "getIntegrationRatiosFromString", +function(spec, key_values){ +var ratios = new JU.Lst(); +var allParamTokens = new java.util.StringTokenizer(key_values, ","); +while (allParamTokens.hasMoreTokens()) { +var token = allParamTokens.nextToken(); +var eachParam = new java.util.StringTokenizer(token, ":"); +var ratio = new JSV.common.Annotation().setA(Double.parseDouble(eachParam.nextToken()), 0.0, spec, eachParam.nextToken(), true, false, 0, 0); +ratios.addLast(ratio); +} +return ratios; +}, "JSV.common.Spectrum,~S"); +Clazz_defineMethod(c$, "getXYCoords", +function(){ +return this.xyCoords; +}); +Clazz_defineMethod(c$, "getPercentYValueAt", +function(x){ +return this.getYValueAt(x) * 100; +}, "~N"); +Clazz_defineMethod(c$, "dispose", +function(){ +this.spec = null; +this.xyCoords = null; +}); +Clazz_defineMethod(c$, "setSelectedIntegral", +function(integral, val){ +var val0 = integral.getValue(); +var factor = (val <= 0 ? 1 / this.normalizationFactor : val / val0); +this.factorAllIntegrals(factor, val <= 0); +}, "JSV.common.Measurement,~N"); +Clazz_defineMethod(c$, "factorAllIntegrals", +function(factor, isReset){ +for (var i = 0; i < this.size(); i++) { +var m = this.get(i); +m.setValue(factor * m.getValue()); +} +this.normalizationFactor = (isReset ? 1 : this.normalizationFactor * factor); +}, "~N,~B"); +Clazz_defineMethod(c$, "remove", +function(i){ +return this.removeItemAt(i); +}, "~N"); +Clazz_defineMethod(c$, "getBitSet", +function(){ +var bs = JU.BS.newN(this.xyCoords.length); +if (this.size() == 0) { +bs.setBits(0, this.xyCoords.length); +return bs; +}for (var i = this.size(); --i >= 0; ) { +var m = this.get(i); +var x1 = JSV.common.Coordinate.getNearestIndexForX(this.xyCoords, m.getXVal()); +var x2 = JSV.common.Coordinate.getNearestIndexForX(this.xyCoords, m.getXVal2()); +bs.setBits(Math.min(x1, x2), Math.max(x1, x2)); +} +return bs; +}); +Clazz_overrideMethod(c$, "getMeasurementListArray", +function(units){ +var data = new Array(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; ) data[pt++] = Clazz_newArray(-1, ["" + pt, JU.DF.formatDecimalDbl(this.get(i).getXVal(), 2), JU.DF.formatDecimalDbl(this.get(i).getXVal2(), 2), this.get(i).text]); + +return data; +}, "~S"); +Clazz_overrideMethod(c$, "getMeasurementListArrayReal", +function(units){ +var data = JU.AU.newDouble2(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; pt++) data[pt] = Clazz_newDoubleArray(-1, [this.get(i).getXVal(), this.get(i).getXVal2(), this.get(i).getValue()]); + +return data; +}, "~S"); +Clazz_overrideMethod(c$, "getDataHeader", +function(){ +return JSV.common.IntegralData.$HEADER; +}); +Clazz_defineMethod(c$, "shiftY", +function(yOld, yNew, yPixel0, yPixels){ +var pt = Clazz_doubleToInt(100.0 * (yPixel0 + yPixels - yNew) / yPixels); +if (yOld < 0) pt -= this.percentOffset; +if (yOld < 0) { +this.update(0, this.percentOffset, pt); +} else { +this.update(0, pt, this.percentRange); +}}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "autoIntegrate", +function(){ +if (this.xyCoords == null) this.calculateIntegral(); +if (this.xyCoords.length == 0) return; +this.clear(); +var iStart = -1; +var cutoff = 0.0001; +var nCount = 0; +var nMin = 20; +var y0 = this.xyCoords[this.xyCoords.length - 1].getYVal(); +for (var i = this.xyCoords.length - 1; --i >= 0; ) { +var y = this.xyCoords[i].getYVal(); +nCount++; +if ((y - y0) < cutoff && iStart < 0) { +if (y < y0) { +y0 = y; +nCount = 0; +}continue; +}if (iStart < 0) { +iStart = i + Math.min(nCount, nMin); +y0 = y; +nCount = 0; +continue; +}if ((y - y0) < cutoff) { +if (nCount == 1) y0 = y; +if (nCount >= nMin) { +this.addIntegralRegion(this.xyCoords[iStart].getXVal(), this.xyCoords[i].getXVal()); +iStart = -1; +y0 = y; +nCount = 0; +}} else { +nCount = 0; +y0 = y; +}} +var nH = this.spec.getHydrogenCount(); +if (nH > 0) this.factorAllIntegrals(nH / this.percentRange, false); +}); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("offset", Double.$valueOf(this.myParams.integralOffset)); +info.put("range", Double.$valueOf(this.myParams.integralRange)); +info.put("normalizationFactor", Double.$valueOf(this.normalizationFactor)); +info.put("integralTotal", Double.$valueOf(this.integralTotal)); +Clazz_superCall(this, JSV.common.IntegralData, "getInfo", [info]); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setMinimumIntegral", +function(val){ +for (var i = this.size(); --i >= 0; ) if (this.get(i).getValue() < val) this.removeItemAt(i); + +}, "~N"); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.IntegralData, "IntMode", Enum); +c$.getMode = Clazz_defineMethod(c$, "getMode", +function(value){ +for (var mode, $mode = 0, $$mode = JSV.common.IntegralData.IntMode.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (value.startsWith(mode.name())) return mode; + +return JSV.common.IntegralData.IntMode.NA; +}, "~S"); +Clazz_defineEnumConstant(c$, "OFF", 0, []); +Clazz_defineEnumConstant(c$, "ON", 1, []); +Clazz_defineEnumConstant(c$, "TOGGLE", 2, []); +Clazz_defineEnumConstant(c$, "AUTO", 3, []); +Clazz_defineEnumConstant(c$, "LIST", 4, []); +Clazz_defineEnumConstant(c$, "MARK", 5, []); +Clazz_defineEnumConstant(c$, "MIN", 6, []); +Clazz_defineEnumConstant(c$, "UPDATE", 7, []); +Clazz_defineEnumConstant(c$, "CLEAR", 8, []); +Clazz_defineEnumConstant(c$, "NA", 9, []); +/*eoif2*/})(); +c$.c = new JSV.common.IntegralComparator(); +c$.$HEADER = Clazz_newArray(-1, ["peak", "start/ppm", "end/ppm", "value"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum", "JSV.source.JDXDataObject", "JU.Lst"], "JSV.common.Spectrum", ["java.util.Hashtable", "JU.PT", "JSV.common.Coordinate", "$.Parameters", "$.PeakInfo", "JSV.source.JDXSourceStreamTokenizer", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.id = ""; +this.fillColor = null; +this.subSpectra = null; +this.peakList = null; +this.peakXLabel = null; +this.peakYLabel = null; +this.selectedPeak = null; +this.highlightedPeak = null; +this.convertedSpectrum = null; +this.specShift = 0; +this.userYFactor = 1; +this.currentSubSpectrumIndex = 0; +this.$isForcedSubset = false; +this.exportXAxisLeftToRight = false; +this.titleLabel = null; +Clazz_instantialize(this, arguments);}, JSV.common, "Spectrum", JSV.source.JDXDataObject); +Clazz_prepareFields (c$, function(){ +this.peakList = new JU.Lst(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.common.Spectrum, []); +this.headerTable = new JU.Lst(); +this.xyCoords = new Array(0); +this.parent = this; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +}); +Clazz_defineMethod(c$, "isForcedSubset", +function(){ +return this.$isForcedSubset; +}); +Clazz_defineMethod(c$, "setId", +function(id){ +this.id = id; +}, "~S"); +Clazz_defineMethod(c$, "copy", +function(){ +var newSpectrum = new JSV.common.Spectrum(); +this.copyTo(newSpectrum); +newSpectrum.setPeakList(this.peakList, this.peakXLabel, null); +newSpectrum.fillColor = this.fillColor; +return newSpectrum; +}); +Clazz_defineMethod(c$, "getXYCoords", +function(){ +return this.getCurrentSubSpectrum().xyCoords; +}); +Clazz_defineMethod(c$, "getPeakList", +function(){ +return this.peakList; +}); +Clazz_defineMethod(c$, "setPeakList", +function(list, peakXLabel, peakYLabel){ +this.peakList = list; +this.peakXLabel = peakXLabel; +this.peakYLabel = peakYLabel; +for (var i = list.size(); --i >= 0; ) this.peakList.get(i).spectrum = this; + +if (JU.Logger.debugging) JU.Logger.info("Spectrum " + this.getTitle() + " peaks: " + list.size()); +return list.size(); +}, "JU.Lst,~S,~S"); +Clazz_defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +if (this.peakList != null && this.peakList.size() > 0 && (atomKey == null || this.sourceID.equals(index))) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkFileIndex(filePath, index, atomKey)) { +System.out.println("selecting peak by FileIndex " + this + " " + this.peakList.get(i)); +return (this.selectedPeak = this.peakList.get(i)); +} +return null; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "selectPeakByFilePathTypeModel", +function(filePath, type, model){ +if (this.peakList != null && this.peakList.size() > 0) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkFileTypeModel(filePath, type, model)) { +System.out.println("selecting peak byFilePathTypeModel " + this + " " + this.peakList.get(i)); +return (this.selectedPeak = this.peakList.get(i)); +} +return null; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "matchesPeakTypeModel", +function(type, model){ +if (type.equals("ID")) return (this.sourceID.equalsIgnoreCase(model)); +if (this.peakList != null && this.peakList.size() > 0) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkTypeModel(type, model)) return true; + +return false; +}, "~S,~S"); +Clazz_defineMethod(c$, "setSelectedPeak", +function(peak){ +this.selectedPeak = peak; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "setHighlightedPeak", +function(peak){ +this.highlightedPeak = peak; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getSelectedPeak", +function(){ +return this.selectedPeak; +}); +Clazz_defineMethod(c$, "getModelPeakInfoForAutoSelectOnLoad", +function(){ +if (this.peakList != null) for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).autoSelectOnLoad()) return this.peakList.get(i); + +return null; +}); +Clazz_defineMethod(c$, "getAssociatedPeakInfo", +function(xPixel, coord){ +this.selectedPeak = this.findPeakByCoord(xPixel, coord); +return (this.selectedPeak == null ? this.getBasePeakInfo() : this.selectedPeak); +}, "~N,JSV.common.Coordinate"); +Clazz_defineMethod(c$, "findPeakByCoord", +function(xPixel, coord){ +if (coord != null && this.peakList != null && this.peakList.size() > 0) { +var xVal = coord.getXVal(); +var iBest = -1; +var dBest = 1e100; +for (var i = 0; i < this.peakList.size(); i++) { +var d = this.peakList.get(i).checkRange(xPixel, xVal); +if (d < dBest) { +dBest = d; +iBest = i; +}} +if (iBest >= 0) return this.peakList.get(iBest); +}return null; +}, "~N,JSV.common.Coordinate"); +Clazz_defineMethod(c$, "getPeakTitle", +function(){ +return (this.selectedPeak != null ? this.selectedPeak.getTitle() : this.highlightedPeak != null ? this.highlightedPeak.getTitle() : this.getTitleLabel()); +}); +Clazz_defineMethod(c$, "getTitleLabel", +function(){ +if (this.titleLabel != null) return this.titleLabel; +var type = (this.peakList == null || this.peakList.size() == 0 ? this.getQualifiedDataType() : this.peakList.get(0).getType()); +if (type != null && type.startsWith("NMR")) { +if (this.nucleusY != null && !this.nucleusY.equals("?")) { +type = "2D" + type; +} else { +type = JSV.source.JDXDataObject.getNominalSpecFreq(this.nucleusX, this.getObservedFreq()) + " MHz " + this.nucleusX + " " + type; +}}return this.titleLabel = (type != null && type.length > 0 ? type + " " : "") + this.getTitle(); +}); +Clazz_defineMethod(c$, "setNextPeak", +function(coord, istep){ +if (this.peakList == null || this.peakList.size() == 0) return -1; +var x0 = coord.getXVal() + istep * 0.000001; +var ipt1 = -1; +var ipt2 = -1; +var dmin1 = 1.7976931348623157E308 * istep; +var dmin2 = 0; +for (var i = this.peakList.size(); --i >= 0; ) { +var x = this.peakList.get(i).getX(); +if (istep > 0) { +if (x > x0 && x < dmin1) { +ipt1 = i; +dmin1 = x; +} else if (x < x0 && x - x0 < dmin2) { +ipt2 = i; +dmin2 = x - x0; +}} else { +if (x < x0 && x > dmin1) { +ipt1 = i; +dmin1 = x; +} else if (x > x0 && x - x0 > dmin2) { +ipt2 = i; +dmin2 = x - x0; +}}} +if (ipt1 < 0) { +if (ipt2 < 0) return -1; +ipt1 = ipt2; +}return ipt1; +}, "JSV.common.Coordinate,~N"); +Clazz_defineMethod(c$, "getPercentYValueAt", +function(x){ +if (!this.isContinuous()) return NaN; +return this.getYValueAt(x); +}, "~N"); +Clazz_defineMethod(c$, "getYValueAt", +function(x){ +return JSV.common.Coordinate.getYValueAt(this.xyCoords, x); +}, "~N"); +Clazz_defineMethod(c$, "setUserYFactor", +function(userYFactor){ +this.userYFactor = userYFactor; +}, "~N"); +Clazz_defineMethod(c$, "getUserYFactor", +function(){ +return this.userYFactor; +}); +Clazz_defineMethod(c$, "getConvertedSpectrum", +function(){ +return this.convertedSpectrum; +}); +Clazz_defineMethod(c$, "setConvertedSpectrum", +function(spectrum){ +this.convertedSpectrum = spectrum; +}, "JSV.common.Spectrum"); +c$.taConvert = Clazz_defineMethod(c$, "taConvert", +function(spectrum, mode){ +if (!spectrum.isContinuous()) return spectrum; +switch (mode) { +case JSV.common.Spectrum.IRMode.NO_CONVERT: +return spectrum; +case JSV.common.Spectrum.IRMode.TO_ABS: +if (!spectrum.isTransmittance()) return spectrum; +break; +case JSV.common.Spectrum.IRMode.TO_TRANS: +if (!spectrum.isAbsorbance()) return spectrum; +break; +case JSV.common.Spectrum.IRMode.TOGGLE: +break; +} +var spec = spectrum.getConvertedSpectrum(); +return (spec != null ? spec : spectrum.isAbsorbance() ? JSV.common.Spectrum.toT(spectrum) : JSV.common.Spectrum.toA(spectrum)); +}, "JSV.common.Spectrum,JSV.common.Spectrum.IRMode"); +c$.toT = Clazz_defineMethod(c$, "toT", +function(spectrum){ +if (!spectrum.isAbsorbance()) return null; +var xyCoords = spectrum.getXYCoords(); +var newXYCoords = new Array(xyCoords.length); +if (!JSV.common.Coordinate.isYInRange(xyCoords, 0, 4.0)) xyCoords = JSV.common.Coordinate.normalise(xyCoords, 0, 4.0); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), JSV.common.Spectrum.toTransmittance(xyCoords[i].getYVal())); + +return JSV.common.Spectrum.newSpectrum(spectrum, newXYCoords, "TRANSMITTANCE"); +}, "JSV.common.Spectrum"); +c$.toA = Clazz_defineMethod(c$, "toA", +function(spectrum){ +if (!spectrum.isTransmittance()) return null; +var xyCoords = spectrum.getXYCoords(); +var newXYCoords = new Array(xyCoords.length); +var isPercent = JSV.common.Coordinate.isYInRange(xyCoords, -2, 2); +for (var i = 0; i < xyCoords.length; i++) newXYCoords[i] = new JSV.common.Coordinate().set(xyCoords[i].getXVal(), JSV.common.Spectrum.toAbsorbance(xyCoords[i].getYVal(), isPercent)); + +return JSV.common.Spectrum.newSpectrum(spectrum, newXYCoords, "ABSORBANCE"); +}, "JSV.common.Spectrum"); +c$.newSpectrum = Clazz_defineMethod(c$, "newSpectrum", +function(spectrum, newXYCoords, units){ +var specNew = spectrum.copy(); +specNew.setOrigin("JSpecView Converted"); +specNew.setOwner("JSpecView Generated"); +specNew.setXYCoords(newXYCoords); +specNew.setYUnits(units); +spectrum.setConvertedSpectrum(specNew); +specNew.setConvertedSpectrum(spectrum); +return specNew; +}, "JSV.common.Spectrum,~A,~S"); +c$.toAbsorbance = Clazz_defineMethod(c$, "toAbsorbance", +function(x, isPercent){ +return (Math.min(4.0, isPercent ? 2 - JSV.common.Spectrum.log10(x) : -JSV.common.Spectrum.log10(x))); +}, "~N,~B"); +c$.toTransmittance = Clazz_defineMethod(c$, "toTransmittance", +function(x){ +return (x <= 0 ? 1 : Math.pow(10, -x)); +}, "~N"); +c$.log10 = Clazz_defineMethod(c$, "log10", +function(value){ +return Math.log(value) / Math.log(10); +}, "~N"); +c$.process = Clazz_defineMethod(c$, "process", +function(specs, irMode){ +if (irMode === JSV.common.Spectrum.IRMode.TO_ABS || irMode === JSV.common.Spectrum.IRMode.TO_TRANS) for (var i = 0; i < specs.size(); i++) specs.set(i, JSV.common.Spectrum.taConvert(specs.get(i), irMode)); + +return true; +}, "JU.Lst,JSV.common.Spectrum.IRMode"); +Clazz_defineMethod(c$, "getSubSpectra", +function(){ +return this.subSpectra; +}); +Clazz_defineMethod(c$, "getCurrentSubSpectrum", +function(){ +return (this.subSpectra == null ? this : this.subSpectra.get(this.currentSubSpectrumIndex)); +}); +Clazz_defineMethod(c$, "advanceSubSpectrum", +function(dir){ +return this.setCurrentSubSpectrum(this.currentSubSpectrumIndex + dir); +}, "~N"); +Clazz_defineMethod(c$, "setCurrentSubSpectrum", +function(n){ +return (this.currentSubSpectrumIndex = JSV.common.Coordinate.intoRange(n, 0, this.subSpectra.size() - 1)); +}, "~N"); +Clazz_defineMethod(c$, "addSubSpectrum", +function(spectrum, forceSub){ +if (!forceSub && (this.is1D() || this.blockID != spectrum.blockID) || !JSV.common.Spectrum.allowSubSpec(this, spectrum)) return false; +this.$isForcedSubset = forceSub; +if (this.subSpectra == null) { +this.subSpectra = new JU.Lst(); +this.addSubSpectrum(this, true); +}this.subSpectra.addLast(spectrum); +spectrum.parent = this; +return true; +}, "JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "getSubIndex", +function(){ +return (this.subSpectra == null ? -1 : this.currentSubSpectrumIndex); +}); +Clazz_defineMethod(c$, "setExportXAxisDirection", +function(leftToRight){ +this.exportXAxisLeftToRight = leftToRight; +}, "~B"); +Clazz_defineMethod(c$, "isExportXAxisLeftToRight", +function(){ +return this.exportXAxisLeftToRight; +}); +Clazz_defineMethod(c$, "getInfo", +function(key){ +var info = new java.util.Hashtable(); +if ("id".equalsIgnoreCase(key)) { +info.put(key, this.id); +return info; +}var keys = null; +if ("".equals(key)) { +keys = "id specShift header"; +}info.put("id", this.id); +JSV.common.Parameters.putInfo(key, info, "specShift", Double.$valueOf(this.specShift)); +var justHeader = ("header".equals(key)); +if (!justHeader && key != null && keys == null) { +for (var i = this.headerTable.size(); --i >= 0; ) { +var entry = this.headerTable.get(i); +if (entry[0].equalsIgnoreCase(key) || entry[2].equalsIgnoreCase(key)) { +info.put(key, entry[1]); +return info; +}} +}var head = new java.util.Hashtable(); +var list = this.getHeaderRowDataAsArray(); +for (var i = 0; i < list.length; i++) { +var label = JSV.source.JDXSourceStreamTokenizer.cleanLabel(list[i][0]); +if (keys != null) { +keys += " " + label; +continue; +}if (key != null && !justHeader && !label.equals(key)) continue; +var val = JSV.common.Spectrum.fixInfoValue(list[i][1]); +if (key == null) { +var data = new java.util.Hashtable(); +data.put("value", val); +data.put("index", Integer.$valueOf(i + 1)); +info.put(label, data); +} else { +info.put(label, val); +}} +if (head.size() > 0) info.put("header", head); +if (!justHeader) { +if (keys != null) { +keys += " titleLabel type isHZToPPM subSpectrumCount"; +} else { +JSV.common.Parameters.putInfo(key, info, "titleLabel", this.getTitleLabel()); +JSV.common.Parameters.putInfo(key, info, "type", this.getDataType()); +JSV.common.Parameters.putInfo(key, info, "isHZToPPM", Boolean.$valueOf(this.isHZtoPPM())); +JSV.common.Parameters.putInfo(key, info, "subSpectrumCount", Integer.$valueOf(this.subSpectra == null ? 0 : this.subSpectra.size())); +}}if (keys != null) info.put("KEYS", keys); +return info; +}, "~S"); +c$.fixInfoValue = Clazz_defineMethod(c$, "fixInfoValue", +function(info){ +try { +return (Integer.$valueOf(info)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +try { +return (Double.$valueOf(info)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return info; +}, "~S"); +Clazz_defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +for (var i = 0; i < this.peakList.size(); i++) if (this.peakList.get(i).checkTypeMatch(pi)) return this.peakList.get(i); + +return null; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getBasePeakInfo", +function(){ +return (this.peakList.size() == 0 ? new JSV.common.PeakInfo() : new JSV.common.PeakInfo(" baseModel=\"\" " + this.peakList.get(0))); +}); +Clazz_defineMethod(c$, "getAxisLabel", +function(isX){ +var label = (isX ? this.peakXLabel : this.peakYLabel); +if (label == null) label = (isX ? this.xLabel : this.yLabel); +if (label == null) label = (isX ? this.xUnits : this.yUnits); +return (label == null ? "" : label.equalsIgnoreCase("WAVENUMBERS") ? "1/cm" : label.equalsIgnoreCase("nanometers") ? "nm" : label); +}, "~B"); +Clazz_defineMethod(c$, "findXForPeakNearest", +function(x){ +return JSV.common.Coordinate.findXForPeakNearest(this.xyCoords, x, this.isInverted()); +}, "~N"); +Clazz_defineMethod(c$, "addSpecShift", +function(dx){ +if (dx != 0) { +this.specShift += dx; +JSV.common.Coordinate.shiftX(this.xyCoords, dx); +if (this.subSpectra != null) for (var i = this.subSpectra.size(); --i >= 0; ) { +var spec = this.subSpectra.get(i); +if (spec !== this && spec !== this.parent) spec.addSpecShift(dx); +} +}return this.specShift; +}, "~N"); +c$.allowSubSpec = Clazz_defineMethod(c$, "allowSubSpec", +function(s1, s2){ +return (s1.is1D() == s2.is1D() && s1.xUnits.equalsIgnoreCase(s2.xUnits) && s1.isHNMR() == s2.isHNMR()); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +c$.areXScalesCompatible = Clazz_defineMethod(c$, "areXScalesCompatible", +function(s1, s2, isSubspecCheck, isLinkCheck){ +var isNMR1 = s1.isNMR(); +if (isNMR1 != s2.isNMR() || s1.isContinuous() != s2.isContinuous() || !isLinkCheck && !JSV.common.Spectrum.areUnitsCompatible(s1.xUnits, s2.xUnits)) return false; +if (isSubspecCheck) { +if (s1.is1D() != s2.is1D()) return false; +} else if (isLinkCheck) { +if (!isNMR1) return true; +} else if (!s1.is1D() || !s2.is1D()) { +return false; +}return (!isNMR1 || s2.is1D() && s1.parent.nucleusX.equals(s2.parent.nucleusX)); +}, "JSV.common.Spectrum,JSV.common.Spectrum,~B,~B"); +c$.areUnitsCompatible = Clazz_defineMethod(c$, "areUnitsCompatible", +function(u1, u2){ +if (u1.equalsIgnoreCase(u2)) return true; +u1 = u1.toUpperCase(); +u2 = u2.toUpperCase(); +return (u1.equals("HZ") && u2.equals("PPM") || u1.equals("PPM") && u2.equals("HZ")); +}, "~S,~S"); +c$.areLinkableX = Clazz_defineMethod(c$, "areLinkableX", +function(s1, s2){ +return (s1.isNMR() && s2.isNMR() && s1.nucleusX.equals(s2.nucleusX)); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +c$.areLinkableY = Clazz_defineMethod(c$, "areLinkableY", +function(s1, s2){ +return (s1.isNMR() && s2.isNMR() && s1.nucleusX.equals(s2.nucleusY)); +}, "JSV.common.Spectrum,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "getPeakWidth", +function(){ +var w = this.getLastX() - this.getFirstX(); +return (w / 100); +}); +Clazz_defineMethod(c$, "setSimulated", +function(filePath){ +this.isSimulation = true; +var s = this.sourceID; +if (s.length == 0) s = JU.PT.rep(filePath, "http://SIMULATION/", ""); +if (s.indexOf("MOL=") >= 0) s = ""; +this.title = "SIMULATED " + JU.PT.rep(s, "$", ""); +}, "~S"); +Clazz_defineMethod(c$, "setFillColor", +function(color){ +this.fillColor = color; +if (this.convertedSpectrum != null) this.convertedSpectrum.fillColor = color; +}, "javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.getTitleLabel() + (this.xyCoords == null ? "" : " xyCoords.length=" + this.xyCoords.length); +}); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.Spectrum, "IRMode", Enum); +c$.getMode = Clazz_defineMethod(c$, "getMode", +function(value){ +switch ((value == null ? 'I' : value.toUpperCase().charAt(0)).charCodeAt(0)) { +case 65: +return JSV.common.Spectrum.IRMode.TO_ABS; +case 84: +return (value.equalsIgnoreCase("TOGGLE") ? JSV.common.Spectrum.IRMode.TOGGLE : JSV.common.Spectrum.IRMode.TO_TRANS); +case 78: +return JSV.common.Spectrum.IRMode.NO_CONVERT; +default: +return JSV.common.Spectrum.IRMode.TOGGLE; +} +}, "~S"); +Clazz_defineEnumConstant(c$, "NO_CONVERT", 0, []); +Clazz_defineEnumConstant(c$, "TO_TRANS", 1, []); +Clazz_defineEnumConstant(c$, "TO_ABS", 2, []); +Clazz_defineEnumConstant(c$, "TOGGLE", 3, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_declareType(JSV.common, "JSVersion", null); +{ +var tmpVersion = null; +var tmpDate = null; +{ +tmpVersion = Jmol.___JmolVersion; tmpDate = Jmol.___JmolDate; +}if (tmpDate != null) { +tmpDate = tmpDate.substring(7, 23); +}JSV.common.JSVersion.VERSION_SHORT = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +var mv = (tmpVersion != null ? tmpVersion : "(Unknown_version)"); +JSV.common.JSVersion.date = (tmpDate != null ? tmpDate : ""); +JSV.common.JSVersion.VERSION = JSV.common.JSVersion.VERSION_SHORT + (JSV.common.JSVersion.date == null ? "" : " " + JSV.common.JSVersion.date); +var v = -1; +if (tmpVersion != null) try { +var s = JSV.common.JSVersion.VERSION_SHORT; +var major = ""; +var i = s.indexOf("."); +if (i < 0) { +v = 100000 * Integer.parseInt(s); +s = null; +}if (s != null) { +v = 100000 * Integer.parseInt(major = s.substring(0, i)); +s = s.substring(i + 1); +i = s.indexOf("."); +if (i < 0) { +v += 1000 * Integer.parseInt(s); +s = null; +}if (s != null) { +var m = s.substring(0, i); +major += "." + m; +mv = major; +v += 1000 * Integer.parseInt(m); +s = s.substring(i + 1); +i = s.indexOf("_"); +if (i >= 0) s = s.substring(0, i); +i = s.indexOf(" "); +if (i >= 0) s = s.substring(0, i); +v += Integer.parseInt(s); +}}} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +JSV.common.JSVersion.majorVersion = mv; +JSV.common.JSVersion.versionInt = v; +}})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.util.Hashtable"], "JSV.common.JSVFileManager", ["java.io.BufferedInputStream", "$.BufferedReader", "$.InputStreamReader", "$.StringReader", "java.net.URL", "JU.AU", "$.BS", "$.Encoding", "$.JSJSONParser", "$.P3", "$.PT", "$.SB", "JSV.common.JSVersion", "$.JSViewer", "JSV.exception.JSVException", "JU.Logger"], function(){ +var c$ = Clazz_declareType(JSV.common, "JSVFileManager", null); +Clazz_defineMethod(c$, "isApplet", +function(){ +return (JSV.common.JSVFileManager.appletDocumentBase != null); +}); +c$.getFileAsString = Clazz_defineMethod(c$, "getFileAsString", +function(name){ +if (name == null) return null; +var br; +var sb = new JU.SB(); +try { +br = JSV.common.JSVFileManager.getBufferedReaderFromName(name, null); +var line; +while ((line = br.readLine()) != null) { +sb.append(line); +sb.appendC('\n'); +} +br.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +return sb.toString(); +}, "~S"); +c$.getBufferedReaderForInputStream = Clazz_defineMethod(c$, "getBufferedReaderForInputStream", +function($in){ +try { +return new java.io.BufferedReader( new java.io.InputStreamReader($in, "UTF-8")); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.getBufferedReaderForStringOrBytes = Clazz_defineMethod(c$, "getBufferedReaderForStringOrBytes", +function(stringOrBytes){ +return (stringOrBytes == null ? null : new java.io.BufferedReader( new java.io.StringReader((typeof(stringOrBytes)=='string') ? stringOrBytes : String.instantialize(stringOrBytes)))); +}, "~O"); +c$.getBufferedReaderFromName = Clazz_defineMethod(c$, "getBufferedReaderFromName", +function(name, startCode){ +if (name == null) throw new JSV.exception.JSVException("Cannot find " + name); +JU.Logger.info("JSVFileManager getBufferedReaderFromName " + name); +var path = JSV.common.JSVFileManager.getFullPathName(name); +if (!path.equals(name)) JU.Logger.info("JSVFileManager getBufferedReaderFromName " + path); +return JSV.common.JSVFileManager.getUnzippedBufferedReaderFromName(path, startCode); +}, "~S,~S"); +c$.getFullPathName = Clazz_defineMethod(c$, "getFullPathName", +function(name){ +try { +if (JSV.common.JSVFileManager.appletDocumentBase == null) { +if (JSV.common.JSVFileManager.isURL(name)) { +var url = new java.net.URL(Clazz_castNullAs("java.net.URL"), name, null); +return url.toString(); +}return JSV.common.JSVFileManager.viewer.apiPlatform.newFile(name).getFullPath(); +}if (name.indexOf(":\\") == 1 || name.indexOf(":/") == 1) name = "file:///" + name; + else if (name.startsWith("cache://")) return name; +var url = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, name, null); +return url.toString(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException("Cannot create path for " + name); +} else { +throw e; +} +} +}, "~S"); +c$.isURL = Clazz_defineMethod(c$, "isURL", +function(name){ +for (var i = JSV.common.JSVFileManager.urlPrefixes.length; --i >= 0; ) if (name.startsWith(JSV.common.JSVFileManager.urlPrefixes[i])) return true; + +return false; +}, "~S"); +c$.urlTypeIndex = Clazz_defineMethod(c$, "urlTypeIndex", +function(name){ +for (var i = 0; i < JSV.common.JSVFileManager.urlPrefixes.length; ++i) { +if (name.startsWith(JSV.common.JSVFileManager.urlPrefixes[i])) { +return i; +}} +return -1; +}, "~S"); +c$.isLocal = Clazz_defineMethod(c$, "isLocal", +function(fileName){ +if (fileName == null) return false; +var itype = JSV.common.JSVFileManager.urlTypeIndex(fileName); +return (itype < 0 || itype == 4); +}, "~S"); +c$.getUnzippedBufferedReaderFromName = Clazz_defineMethod(c$, "getUnzippedBufferedReaderFromName", +function(name, startCode){ +var subFileList = null; +if (name.indexOf("|") >= 0) { +subFileList = JU.PT.split(name, "|"); +if (subFileList != null && subFileList.length > 0) name = subFileList[0]; +}if (name.startsWith("http://SIMULATION/")) return JSV.common.JSVFileManager.getSimulationReader(name); +try { +var ret = JSV.common.JSVFileManager.getInputStream(name, true, null); +if (Clazz_instanceOf(ret,"JU.SB") || (typeof(ret)=='string')) return new java.io.BufferedReader( new java.io.StringReader(ret.toString())); +if (JSV.common.JSVFileManager.isAB(ret)) return new java.io.BufferedReader( new java.io.StringReader( String.instantialize(ret))); +var bis = new java.io.BufferedInputStream(ret); +var $in = bis; +if (JSV.common.JSVFileManager.isGzip(bis)) $in = (JSV.common.JSViewer.getInterface("JSV.common.JSVZipUtil")).newGZIPInputStream($in); +return new java.io.BufferedReader( new java.io.InputStreamReader($in, "UTF-8")); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw e; +} else { +throw e; +} +} +}, "~S,~S"); +c$.getAbbrSimulationFileName = Clazz_defineMethod(c$, "getAbbrSimulationFileName", +function(name){ +var type = JSV.common.JSVFileManager.getSimulationType(name); +var filename = JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, true); +return filename; +}, "~S"); +c$.getAbbreviatedSimulationName = Clazz_defineMethod(c$, "getAbbreviatedSimulationName", +function(name, type, addProtocol){ +return (name.indexOf("MOL=") >= 0 ? (addProtocol ? "http://SIMULATION/" : "") + "MOL=" + JSV.common.JSVFileManager.getSimulationHash(name, type) : name); +}, "~S,~S,~B"); +c$.getSimulationHash = Clazz_defineMethod(c$, "getSimulationHash", +function(name, type){ +var code = type + Math.abs(name.substring(name.indexOf("V2000") + 1).hashCode()); +if (JU.Logger.debugging) System.out.println("JSVFileManager hash for " + name + " = " + code); +return code; +}, "~S,~S"); +c$.getSimulationFileData = Clazz_defineMethod(c$, "getSimulationFileData", +function(name, type){ +return JSV.common.JSVFileManager.cacheGet(name.startsWith("MOL=") ? name.substring(4) : JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, false)); +}, "~S,~S"); +c$.cachePut = Clazz_defineMethod(c$, "cachePut", +function(name, data){ +if (JU.Logger.debugging) JU.Logger.debug("JSVFileManager cachePut " + data + " for " + name); +if (data != null) JSV.common.JSVFileManager.htCorrelationCache.put(name, data); +}, "~S,~S"); +c$.cacheGet = Clazz_defineMethod(c$, "cacheGet", +function(key){ +var data = JSV.common.JSVFileManager.htCorrelationCache.get(key); +if (JU.Logger.debugging) JU.Logger.info("JSVFileManager cacheGet " + data + " for " + key); +return data; +}, "~S"); +c$.getSimulationReader = Clazz_defineMethod(c$, "getSimulationReader", +function(name){ +var data = JSV.common.JSVFileManager.cacheGet(name); +if (data == null) JSV.common.JSVFileManager.cachePut(name, data = JSV.common.JSVFileManager.getNMRSimulationJCampDX(name.substring("http://SIMULATION/".length))); +return JSV.common.JSVFileManager.getBufferedReaderForStringOrBytes(data); +}, "~S"); +c$.isAB = Clazz_defineMethod(c$, "isAB", +function(x){ +return JU.AU.isAB(x); +}, "~O"); +c$.isZipFile = Clazz_defineMethod(c$, "isZipFile", +function(is){ +try { +var abMagic = Clazz_newByteArray (4, 0); +is.mark(5); +var countRead = is.read(abMagic, 0, 4); +is.reset(); +return (countRead == 4 && abMagic[0] == 0x50 && abMagic[1] == 0x4B && abMagic[2] == 0x03 && abMagic[3] == 0x04); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.isGzip = Clazz_defineMethod(c$, "isGzip", +function(is){ +try { +var abMagic = Clazz_newByteArray (4, 0); +is.mark(5); +var countRead = is.read(abMagic, 0, 4); +is.reset(); +return (countRead == 4 && abMagic[0] == 0x1F && abMagic[1] == 0x8B); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.InputStream"); +c$.getStreamAsBytes = Clazz_defineMethod(c$, "getStreamAsBytes", +function(bis, out){ +try { +var buf = Clazz_newByteArray (1024, 0); +var bytes = (out == null ? Clazz_newByteArray (4096, 0) : null); +var len = 0; +var totalLen = 0; +while ((len = bis.read(buf, 0, 1024)) > 0) { +totalLen += len; +if (out == null) { +if (totalLen >= bytes.length) bytes = JU.AU.ensureLengthByte(bytes, totalLen * 2); +System.arraycopy(buf, 0, bytes, totalLen - len, len); +} else { +out.write(buf, 0, len); +}} +bis.close(); +if (out == null) { +return JU.AU.arrayCopyByte(bytes, totalLen); +}return totalLen + " bytes"; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.toString()); +} else { +throw e; +} +} +}, "java.io.BufferedInputStream,JU.OC"); +c$.postByteArray = Clazz_defineMethod(c$, "postByteArray", +function(fileName, bytes){ +var ret = null; +try { +ret = JSV.common.JSVFileManager.getInputStream(fileName, false, bytes); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +ret = e.toString(); +} else { +throw e; +} +} +if ((typeof(ret)=='string')) return ret; +try { +ret = JSV.common.JSVFileManager.getStreamAsBytes(ret, null); +} catch (e) { +if (Clazz_exceptionOf(e,"JSV.exception.JSVException")){ +try { +(ret).close(); +} catch (e1) { +if (Clazz_exceptionOf(e1, Exception)){ +} else { +throw e1; +} +} +} else { +throw e; +} +} +return (ret == null ? "" : JSV.common.JSVFileManager.fixUTF(ret)); +}, "~S,~A"); +c$.getUTFEncoding = Clazz_defineMethod(c$, "getUTFEncoding", +function(bytes){ +if (bytes.length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) return JU.Encoding.UTF8; +if (bytes.length >= 4 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == 0xFE && bytes[3] == 0xFF) return JU.Encoding.UTF_32BE; +if (bytes.length >= 4 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0 && bytes[3] == 0) return JU.Encoding.UTF_32LE; +if (bytes.length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) return JU.Encoding.UTF_16LE; +if (bytes.length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) return JU.Encoding.UTF_16BE; +return JU.Encoding.NONE; +}, "~A"); +c$.fixUTF = Clazz_defineMethod(c$, "fixUTF", +function(bytes){ +var encoding = JSV.common.JSVFileManager.getUTFEncoding(bytes); +if (encoding !== JU.Encoding.NONE) try { +var s = String.instantialize(bytes, encoding.name().$replace('_', '-')); +switch (encoding) { +case JU.Encoding.UTF8: +case JU.Encoding.UTF_16BE: +case JU.Encoding.UTF_16LE: +s = s.substring(1); +break; +default: +break; +} +return s; +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +JU.Logger.error("fixUTF error " + e); +} else { +throw e; +} +} +return String.instantialize(bytes); +}, "~A"); +c$.getInputStream = Clazz_defineMethod(c$, "getInputStream", +function(name, showMsg, postBytes){ +var isURL = JSV.common.JSVFileManager.isURL(name); +var isApplet = (JSV.common.JSVFileManager.appletDocumentBase != null); +var $in = null; +var post = null; +var iurl; +if (isURL && (iurl = name.indexOf("?POST?")) >= 0) { +post = name.substring(iurl + 6); +name = name.substring(0, iurl); +}if (isApplet || isURL) { +var url; +try { +url = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, name, null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException("Cannot read " + name); +} else { +throw e; +} +} +JU.Logger.info("JSVFileManager opening URL " + url + (post == null ? "" : " with POST of " + post.length + " bytes")); +$in = JSV.common.JSVFileManager.viewer.apiPlatform.getURLContents(url, postBytes, post, false); +} else { +if (showMsg) JU.Logger.info("JSVFileManager opening file " + name); +$in = JSV.common.JSVFileManager.viewer.apiPlatform.getBufferedFileInputStream(name); +}if ((typeof($in)=='string')) throw new JSV.exception.JSVException($in); +return $in; +}, "~S,~B,~A"); +c$.getNMRSimulationJCampDX = Clazz_defineMethod(c$, "getNMRSimulationJCampDX", +function(name){ +var pt = 0; +var molFile = null; +var type = JSV.common.JSVFileManager.getSimulationType(name); +if (name.startsWith(type)) name = name.substring(type.length + 1); +var isInline = name.startsWith("MOL="); +if (isInline) { +name = name.substring(4); +pt = name.indexOf("/n__Jmol"); +if (pt > 0) name = name.substring(0, pt) + JU.PT.rep(name.substring(pt), "/n", "\n"); +molFile = name = JU.PT.rep(name, "\\n", "\n"); +}var key = "" + JSV.common.JSVFileManager.getSimulationHash(name, type); +if (JU.Logger.debugging) JU.Logger.info("JSVFileManager type=" + type + " key=" + key + " name=" + name); +var jcamp = JSV.common.JSVFileManager.cacheGet(key); +if (jcamp != null) return jcamp; +var src = (isInline ? null : JU.PT.rep(JSV.common.JSVFileManager.nciResolver, "%FILE", JU.PT.escapeUrl(name))); +if (!isInline && (molFile = JSV.common.JSVFileManager.getFileAsString(src)) == null || molFile.indexOf("= 0) { +JU.Logger.error("no MOL data returned by NCI"); +return null; +}var is13C = type.equals("C13"); +var url = (is13C ? JSV.common.JSVFileManager.nmrdbServerC13 : JSV.common.JSVFileManager.nmrdbServerH1); +var json = JSV.common.JSVFileManager.getFileAsString(url + molFile); +var map = ( new JU.JSJSONParser()).parseMap(json, true); +JSV.common.JSVFileManager.cachePut("json", json); +if (is13C) map = map.get("result"); +var jsonMolFile = map.get("molfile"); +if (jsonMolFile == null) { +System.out.println("JSVFileManager: no MOL file returned from EPFL"); +jsonMolFile = molFile; +} else { +System.out.println("JSVFileManager: MOL file hash=" + jsonMolFile.hashCode()); +}var atomMap = JSV.common.JSVFileManager.getAtomMap(jsonMolFile, molFile); +JSV.common.JSVFileManager.cachePut("mol", molFile); +{ +if (!isInline) Jmol.Cache.put("http://SIMULATION/" + type + +"/" + name + "#molfile", molFile.getBytes()); +}var xml = "\n"; +if (is13C) { +var spec = map.get("spectrum13C"); +jcamp = (spec.get("jcamp")).get("value"); +var lst = spec.get("predCSNuc"); +var sb = new JU.SB(); +for (var i = lst.size(); --i >= 0; ) { +map = lst.get(i); +sb.append("\n"); +} +sb.append(""); +xml += sb.toString(); +} else { +xml = JU.PT.rep(map.get("xml"), "", xml); +if (atomMap != null) { +var sb = new JU.SB(); +var signals = JU.PT.split(xml, " atoms=\""); +sb.append(signals[0]); +for (var i = 1; i < signals.length; i++) { +var s = signals[i]; +var a = JU.PT.parseInt(s); +sb.append(" atoms=\"").appendI(atomMap[a]).append(s.substring(s.indexOf("\""))); +} +xml = sb.toString(); +}xml = JU.PT.rep(xml, "<", ">\n<"); +xml = JU.PT.rep(xml, "\\\"", "\""); +jcamp = map.get("jcamp"); +}if (JU.Logger.debugging) JU.Logger.info(xml); +JSV.common.JSVFileManager.cachePut("xml", xml); +jcamp = "##TITLE=" + (isInline ? "JMOL SIMULATION/" + type : name) + "\n" + jcamp.substring(jcamp.indexOf("\n##") + 1); +pt = molFile.indexOf("\n"); +pt = molFile.indexOf("\n", pt + 1); +if (pt > 0 && pt == molFile.indexOf("\n \n")) molFile = molFile.substring(0, pt + 1) + "Created " + JSV.common.JSVFileManager.viewer.apiPlatform.getDateFormat("8824") + " by JSpecView " + JSV.common.JSVersion.VERSION + molFile.substring(pt + 1); +pt = 0; +pt = jcamp.indexOf("##."); +var id = JSV.common.JSVFileManager.getAbbreviatedSimulationName(name, type, false); +var pt1 = id.indexOf("id='"); +if (isInline && pt1 > 0) id = id.substring(pt1 + 4, (id + "'").indexOf("'", pt1 + 4)); +jcamp = jcamp.substring(0, pt) + "##$MODELS=\n\n" + "\n" + molFile + "\n\n" + "##$SIGNALS=\n" + xml + "\n" + jcamp.substring(pt); +JSV.common.JSVFileManager.cachePut("jcamp", jcamp); +JSV.common.JSVFileManager.cachePut(key, jcamp); +return jcamp; +}, "~S"); +c$.getAtomMap = Clazz_defineMethod(c$, "getAtomMap", +function(jsonMolFile, jmolMolFile){ +var acJson = JSV.common.JSVFileManager.getCoord(jsonMolFile); +var acJmol = JSV.common.JSVFileManager.getCoord(jmolMolFile); +var n = acJson.length; +if (n != acJmol.length) return null; +var map = Clazz_newIntArray (n, 0); +var bs = new JU.BS(); +bs.setBits(0, n); +var haveMap = false; +for (var i = 0; i < n; i++) { +var a = acJson[i]; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +if (a.distanceSquared(acJmol[j]) < 0.1) { +bs.clear(j); +map[i] = j; +if (i != j) haveMap = true; +break; +}} +} +return (haveMap ? map : null); +}, "~S,~S"); +c$.getCoord = Clazz_defineMethod(c$, "getCoord", +function(mol){ +var lines = JU.PT.split(mol, "\n"); +var data = Clazz_newFloatArray (3, 0); +var n = Integer.parseInt(lines[3].substring(0, 3).trim()); +var pts = new Array(n); +for (var i = 0; i < n; i++) { +var line = lines[4 + i]; +JU.PT.parseFloatArrayInfested(JU.PT.getTokens(line.substring(0, 31)), data); +pts[i] = JU.P3.new3(data[0], data[1], data[2]); +} +return pts; +}, "~S"); +c$.setAttr = Clazz_defineMethod(c$, "setAttr", +function(sb, mykey, lucsKey, map){ +sb.append(mykey + "=\"").appendO(map.get(lucsKey)).append("\" "); +}, "JU.SB,~S,~S,java.util.Map"); +c$.getResource = Clazz_defineMethod(c$, "getResource", +function(object, fileName, error){ +var url = null; +try { +if ((url = object.getClass().getResource(fileName)) == null) error[0] = "Couldn't find file: " + fileName; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +error[0] = "Exception " + e + " in getResource " + fileName; +} else { +throw e; +} +} +return url; +}, "~O,~S,~A"); +c$.getResourceString = Clazz_defineMethod(c$, "getResourceString", +function(object, name, error){ +var url = JSV.common.JSVFileManager.getResource(object, name, error); +if (url == null) { +error[0] = "Error loading resource " + name; +return null; +}if ((typeof(url)=='string')) { +return JSV.common.JSVFileManager.getFileAsString(url); +}var sb = new JU.SB(); +try { +var br = new java.io.BufferedReader( new java.io.InputStreamReader((url).getContent(), "UTF-8")); +var line; +while ((line = br.readLine()) != null) sb.append(line).append("\n"); + +br.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +error[0] = e.toString(); +} else { +throw e; +} +} +return sb.toString(); +}, "~O,~S,~A"); +c$.getJmolFilePath = Clazz_defineMethod(c$, "getJmolFilePath", +function(filePath){ +try { +filePath = JSV.common.JSVFileManager.getFullPathName(filePath); +} catch (e) { +if (Clazz_exceptionOf(e,"JSV.exception.JSVException")){ +return null; +} else { +throw e; +} +} +return (JSV.common.JSVFileManager.appletDocumentBase == null ? filePath.$replace('\\', '/') : filePath); +}, "~S"); +c$.getTagName = Clazz_defineMethod(c$, "getTagName", +function(fileName){ +if (fileName == null) return "String" + (++JSV.common.JSVFileManager.stringCount); +if (JSV.common.JSVFileManager.isURL(fileName)) { +try { +if (fileName.startsWith("http://SIMULATION/")) return JSV.common.JSVFileManager.getAbbrSimulationFileName(fileName); +var name = ( new java.net.URL(Clazz_castNullAs("java.net.URL"), fileName, null)).getFile(); +return name.substring(name.lastIndexOf('/') + 1); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +return null; +} else { +throw e; +} +} +}return JSV.common.JSVFileManager.viewer.apiPlatform.newFile(fileName).getName(); +}, "~S"); +c$.setDocumentBase = Clazz_defineMethod(c$, "setDocumentBase", +function(v, documentBase){ +JSV.common.JSVFileManager.viewer = v; +JSV.common.JSVFileManager.appletDocumentBase = documentBase; +}, "JSV.common.JSViewer,java.net.URL"); +c$.getSimulationType = Clazz_defineMethod(c$, "getSimulationType", +function(filePath){ +return (filePath.indexOf("C13/") >= 0 ? "C13" : "H1"); +}, "~S"); +c$.appletDocumentBase = null; +c$.viewer = null; +c$.jsDocumentBase = ""; +c$.urlPrefixes = Clazz_newArray(-1, ["http:", "https:", "ftp:", "http://SIMULATION/", "file:"]); +c$.htCorrelationCache = new java.util.Hashtable(); +c$.nciResolver = "https://cactus.nci.nih.gov/chemical/structure/%FILE/file?format=sdf&get3d=True"; +c$.nmrdbServerH1 = "https://www.nmrdb.org/tools/jmol/predict.php?POST?molfile="; +c$.nmrdbServerC13 = "https://www.nmrdb.org/service/jsmol13c?POST?molfile="; +c$.stringCount = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["javajs.api.BytePoster", "J.api.PlatformViewer", "JSV.common.Spectrum"], "JSV.common.JSViewer", ["java.io.File", "java.net.URL", "java.util.Arrays", "$.Hashtable", "JU.CU", "$.Lst", "$.OC", "$.PT", "$.SB", "JSV.common.Annotation", "$.ExportType", "$.JSVFileManager", "$.PanelData", "$.PanelNode", "$.Parameters", "$.PeakInfo", "$.PrintLayout", "$.RepaintManager", "$.ScriptToken", "$.ScriptTokenizer", "JSV.source.JDXReader", "$.JDXSource", "JSV.tree.SimpleTree", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.si = null; +this.g2d = null; +this.spectraTree = null; +this.currentSource = null; +this.panelNodes = null; +this.parameters = null; +this.repaintManager = null; +this.selectedPanel = null; +this.mainPanel = null; +this.properties = null; +this.scriptQueue = null; +this.fileHelper = null; +this.jsvpPopupMenu = null; +this.dialogManager = null; +this.viewDialog = null; +this.overlayLegendDialog = null; +this.irMode = null; +this.loadImaginary = false; +this.interfaceOverlaid = false; +this.autoIntegrate = false; +this.autoShowLegend = false; +this.obscureTitleFromUser = null; +this.allowMenu = true; +this.initialStartIndex = -1; +this.initialEndIndex = -1; +this.isSingleThreaded = false; +this.isApplet = false; +this.isSigned = false; +this.recentScript = ""; +this.appletName = null; +this.fullName = null; +this.syncID = null; +this.html5Applet = null; +this.display = null; +this.maximumSize = 2147483647; +this.screenHeight = 0; +this.screenWidth = 0; +this.fileCount = 0; +this.nViews = 0; +this.scriptLevelCount = 0; +this.returnFromJmolModel = null; +this.integrationRatios = null; +this.apiPlatform = null; +this.popupAllowMenu = true; +this.popupZoomEnabled = true; +this.defaultLoadScript = null; +this.nmrMaxY = NaN; +this.overlayLegendVisible = false; +this.recentStackPercent = 5; +this.lastPrintLayout = null; +this.offWindowFrame = null; +this.recentOpenURL = "http://"; +this.recentURL = null; +this.recentSimulation = "tylenol"; +Clazz_instantialize(this, arguments);}, JSV.common, "JSViewer", null, [J.api.PlatformViewer, javajs.api.BytePoster]); +Clazz_prepareFields (c$, function(){ +this.irMode = JSV.common.Spectrum.IRMode.NO_CONVERT; +}); +Clazz_makeConstructor(c$, +function(si, isApplet, isJSApplet){ +this.si = si; +this.isApplet = isApplet; +JSV.common.JSViewer.isJS = isApplet && isJSApplet; +var jmol = null; +{ +self.Jmol && (jmol = Jmol); +}JSV.common.JSViewer.jmolObject = jmol; +this.isSigned = si.isSigned(); +this.apiPlatform = this.getPlatformInterface("Platform"); +this.apiPlatform.setViewer(this, this.display); +this.g2d = this.getPlatformInterface("G2D"); +this.spectraTree = new JSV.tree.SimpleTree(this); +this.parameters = this.getPlatformInterface("Parameters"); +this.parameters.setName("applet"); +this.fileHelper = (this.getPlatformInterface("FileHelper")).set(this); +this.isSingleThreaded = this.apiPlatform.isSingleThreaded(); +this.panelNodes = new JU.Lst(); +this.repaintManager = new JSV.common.RepaintManager(this); +if (!isApplet) this.setPopupMenu(true, true); +}, "JSV.api.ScriptInterface,~B,~B"); +Clazz_defineMethod(c$, "setProperty", +function(key, value){ +if (this.properties != null) this.properties.setProperty(key, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "setNode", +function(node){ +if (node.jsvp !== this.selectedPanel) this.si.siSetSelectedPanel(node.jsvp); +this.si.siSendPanelChange(); +this.si.siNodeSet(node); +}, "JSV.common.PanelNode"); +Clazz_defineMethod(c$, "setPopupMenu", +function(allowMenu, zoomEnabled){ +this.popupAllowMenu = allowMenu; +this.popupZoomEnabled = zoomEnabled; +}, "~B,~B"); +Clazz_defineMethod(c$, "showMenu", +function(x, y){ +if (!this.popupAllowMenu) return; +if (this.jsvpPopupMenu == null) { +try { +this.jsvpPopupMenu = this.getPlatformInterface("Popup"); +this.jsvpPopupMenu.jpiInitialize(this, this.isApplet ? "appletMenu" : "appMenu"); +this.jsvpPopupMenu.setEnabled(this.popupAllowMenu, this.popupZoomEnabled); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e + " initializing popup menu"); +return; +} else { +throw e; +} +} +}this.jsvpPopupMenu.jpiShow(x, y); +}, "~N,~N"); +Clazz_defineMethod(c$, "runScriptNow", +function(script){ +System.out.println(this.checkScript(script)); +this.scriptLevelCount++; +if (script == null) script = ""; +script = script.trim(); +if (script.startsWith("!")) script = script.substring(1).trim(); + else if (script.startsWith(">")) { +JU.Logger.error(script); +return true; +}if (script.indexOf("= 0) { +this.syncScript(script); +return true; +}JU.Logger.info("RUNSCRIPT " + script); +var isOK = true; +var nErrorsLeft = 10; +var commandTokens = new JSV.common.ScriptTokenizer(script, true); +var msg = null; +while (commandTokens != null && commandTokens.hasMoreTokens() && nErrorsLeft > 0 && isOK) { +var token = commandTokens.nextToken(); +var eachParam = new JSV.common.ScriptTokenizer(token, false); +var key = JSV.common.ScriptToken.getKey(eachParam); +if (key == null) continue; +var st = JSV.common.ScriptToken.getScriptToken(key); +var value = JSV.common.ScriptToken.getValue(st, eachParam, token); +try { +switch (st) { +case JSV.common.ScriptToken.UNKNOWN: +JU.Logger.info("Unrecognized parameter: " + key); +--nErrorsLeft; +break; +default: +if (this.selectedPanel == null) break; +this.parameters.set(this.pd(), st, value); +this.si.siUpdateBoolean(st, JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +this.si.siExecSetCallback(st, value); +break; +case JSV.common.ScriptToken.DEFAULTLOADSCRIPT: +value = JU.PT.rep(value, "''", "\""); +this.defaultLoadScript = (value.length > 0 ? value : null); +break; +case JSV.common.ScriptToken.DEFAULTNMRNORMALIZATION: +this.nmrMaxY = JU.PT.parseFloat(value); +break; +case JSV.common.ScriptToken.AUTOINTEGRATE: +this.autoIntegrate = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.CLOSE: +this.execClose(value); +break; +case JSV.common.ScriptToken.DEBUG: +JU.Logger.setLogLevel(value.toLowerCase().equals("high") ? 6 : JSV.common.Parameters.isTrue(value) ? 5 : 4); +break; +case JSV.common.ScriptToken.GETPROPERTY: +var info = (this.selectedPanel == null ? null : this.getPropertyAsJavaObject(value)); +if (info != null) this.selectedPanel.showMessage(JU.PT.toJSON(null, info), value); +break; +case JSV.common.ScriptToken.HELP: +this.execHelp(value); +break; +case JSV.common.ScriptToken.HIDDEN: +this.si.siExecHidden(JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.INTEGRATIONRATIOS: +this.integrationRatios = value; +this.execIntegrate(null); +break; +case JSV.common.ScriptToken.INTERFACE: +this.interfaceOverlaid = this.checkOvelayInterface(value); +break; +case JSV.common.ScriptToken.INTEGRALOFFSET: +case JSV.common.ScriptToken.INTEGRALRANGE: +this.execSetIntegralParameter(st, Double.parseDouble(value)); +break; +case JSV.common.ScriptToken.INVERTY: +this.execZoom("invertY"); +break; +case JSV.common.ScriptToken.JMOL: +this.si.syncToJmol(value); +break; +case JSV.common.ScriptToken.JSV: +this.syncScript(JU.PT.trimQuotes(value)); +break; +case JSV.common.ScriptToken.LOAD: +if (value.length == 0) { +if (this.defaultLoadScript != null) this.runScriptNow(this.defaultLoadScript); +break; +}this.execLoad(value, (this.defaultLoadScript == null ? "" : this.defaultLoadScript + ";") + commandTokens.getRemainingScript()); +msg = (this.selectedPanel == null ? null : this.si.siLoaded(value)); +commandTokens = null; +break; +case JSV.common.ScriptToken.LOADIMAGINARY: +this.loadImaginary = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.PEAK: +this.execPeak(value); +break; +case JSV.common.ScriptToken.PEAKLIST: +this.execPeakList(value); +break; +case JSV.common.ScriptToken.SCALEBY: +this.scaleSelectedBy(this.panelNodes, value); +break; +case JSV.common.ScriptToken.SCRIPT: +if (value.equals("") || value.toLowerCase().startsWith("inline")) { +this.execScriptInline(value); +} else { +var s = JSV.common.JSVFileManager.getFileAsString(value); +if (s != null && this.scriptLevelCount < 100) this.runScriptNow(s); +}break; +case JSV.common.ScriptToken.SELECT: +this.execSelect(value); +break; +case JSV.common.ScriptToken.SPECTRUM: +case JSV.common.ScriptToken.SPECTRUMNUMBER: +if (!this.setSpectrum(value)) isOK = false; +break; +case JSV.common.ScriptToken.STACKOFFSETY: +this.execOverlayOffsetY(JU.PT.parseInt("" + JU.PT.parseFloat(value))); +break; +case JSV.common.ScriptToken.TEST: +this.si.siExecTest(value); +break; +case JSV.common.ScriptToken.OVERLAY: +case JSV.common.ScriptToken.VIEW: +this.execView(value, true); +break; +case JSV.common.ScriptToken.HIGHLIGHT: +isOK = this.highlight(token); +break; +case JSV.common.ScriptToken.FINDX: +case JSV.common.ScriptToken.GETSOLUTIONCOLOR: +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +case JSV.common.ScriptToken.IRMODE: +case JSV.common.ScriptToken.LABEL: +case JSV.common.ScriptToken.LINK: +case JSV.common.ScriptToken.OVERLAYSTACKED: +case JSV.common.ScriptToken.PRINT: +case JSV.common.ScriptToken.SETPEAK: +case JSV.common.ScriptToken.SETX: +case JSV.common.ScriptToken.SHIFTX: +case JSV.common.ScriptToken.SHOWERRORS: +case JSV.common.ScriptToken.SHOWMEASUREMENTS: +case JSV.common.ScriptToken.SHOWMENU: +case JSV.common.ScriptToken.SHOWKEY: +case JSV.common.ScriptToken.SHOWPEAKLIST: +case JSV.common.ScriptToken.SHOWINTEGRATION: +case JSV.common.ScriptToken.SHOWPROPERTIES: +case JSV.common.ScriptToken.SHOWSOURCE: +case JSV.common.ScriptToken.YSCALE: +case JSV.common.ScriptToken.WRITE: +case JSV.common.ScriptToken.ZOOM: +if (this.isClosed()) { +isOK = false; +break; +}switch (st) { +default: +break; +case JSV.common.ScriptToken.FINDX: +this.pd().findX(null, Double.parseDouble(value)); +break; +case JSV.common.ScriptToken.GETSOLUTIONCOLOR: +this.show("solutioncolor" + value.toLowerCase()); +break; +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +this.execIntegrate(value); +break; +case JSV.common.ScriptToken.IRMODE: +this.execIRMode(value); +break; +case JSV.common.ScriptToken.LABEL: +this.pd().addAnnotation(JSV.common.ScriptToken.getTokens(value)); +break; +case JSV.common.ScriptToken.LINK: +this.pd().linkSpectra(JSV.common.PanelData.LinkMode.getMode(value)); +break; +case JSV.common.ScriptToken.OVERLAYSTACKED: +this.pd().splitStack(!JSV.common.Parameters.isTrue(value)); +break; +case JSV.common.ScriptToken.PRINT: +msg = this.execWrite(null); +break; +case JSV.common.ScriptToken.SETPEAK: +case JSV.common.ScriptToken.SETX: +case JSV.common.ScriptToken.SHIFTX: +this.execShiftSpectrum(st, token); +break; +case JSV.common.ScriptToken.SHOWERRORS: +this.show("errors"); +break; +case JSV.common.ScriptToken.SHOWINTEGRATION: +this.pd().showAnnotation(JSV.common.Annotation.AType.Integration, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWKEY: +this.setOverlayLegendVisibility(JSV.common.Parameters.getTFToggle(value), true); +break; +case JSV.common.ScriptToken.SHOWMEASUREMENTS: +this.pd().showAnnotation(JSV.common.Annotation.AType.Measurements, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWMENU: +this.showMenu(-2147483648, 0); +break; +case JSV.common.ScriptToken.SHOWPEAKLIST: +this.pd().showAnnotation(JSV.common.Annotation.AType.PeakList, JSV.common.Parameters.getTFToggle(value)); +break; +case JSV.common.ScriptToken.SHOWPROPERTIES: +this.show("properties"); +break; +case JSV.common.ScriptToken.SHOWSOURCE: +this.show("source"); +break; +case JSV.common.ScriptToken.YSCALE: +this.setYScale(value); +break; +case JSV.common.ScriptToken.WINDOW: +this.si.siNewWindow(JSV.common.Parameters.isTrue(value), false); +break; +case JSV.common.ScriptToken.WRITE: +msg = this.execWrite(value); +break; +case JSV.common.ScriptToken.ZOOM: +isOK = this.execZoom(value); +break; +} +break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +msg = e.toString(); +JU.Logger.error(e.toString()); +isOK = false; +--nErrorsLeft; +} else { +throw e; +} +} +} +this.scriptLevelCount--; +this.si.siExecScriptComplete(msg, true); +return isOK; +}, "~S"); +Clazz_defineMethod(c$, "execShiftSpectrum", +function(st, script){ +var tokens = JSV.common.ScriptToken.getTokens(script); +var xOld = NaN; +var xNew = NaN; +switch (tokens.size()) { +case 2: +var value = tokens.get(1); +if (value.equals("")) value = "?"; +xNew = value.equalsIgnoreCase("NONE") ? 1.7976931348623157E308 : value.equalsIgnoreCase("?") ? NaN : Double.parseDouble(value); +break; +case 3: +xOld = Double.parseDouble(tokens.get(1)); +xNew = Double.parseDouble(tokens.get(2)); +break; +default: +Double.parseDouble(""); +} +var mode = 0; +switch (st) { +case JSV.common.ScriptToken.SETPEAK: +mode = 1; +break; +case JSV.common.ScriptToken.SETX: +mode = 2; +break; +case JSV.common.ScriptToken.SHIFTX: +mode = 3; +if (Double.isNaN(xNew)) Double.parseDouble(""); +break; +default: +return; +} +this.pd().shiftSpectrum(mode, xOld, xNew); +}, "JSV.common.ScriptToken,~S"); +Clazz_defineMethod(c$, "execClose", +function(value){ +var fromScript = (!value.startsWith("!")); +if (!fromScript) value = value.substring(1); +this.close(JU.PT.trimQuotes(value)); +if (!fromScript || this.panelNodes.size() == 0) this.si.siValidateAndRepaint(true); +}, "~S"); +Clazz_defineMethod(c$, "checkOvelayInterface", +function(value){ +return (value.equalsIgnoreCase("single") || value.equalsIgnoreCase("overlay")); +}, "~S"); +Clazz_defineMethod(c$, "execPeak", +function(value){ +try { +var tokens = JSV.common.ScriptToken.getTokens(JU.PT.rep(value, "#", "INDEX=")); +value = " type=\"" + tokens.get(0).toUpperCase() + "\" _match=\"" + JU.PT.trimQuotes(tokens.get(1).toUpperCase()) + "\""; +if (tokens.size() > 2 && tokens.get(2).equalsIgnoreCase("all")) value += " title=\"ALL\""; +this.processPeakPickEvent( new JSV.common.PeakInfo(value), false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "execPeakList", +function(value){ +var p = this.parameters; +var b = JSV.common.Parameters.getTFToggle(value); +if (value.indexOf("=") < 0) { +if (!this.isClosed()) this.pd().getPeakListing(null, b); +} else { +var tokens = JSV.common.ScriptToken.getTokens(value); +var threshold = p.peakListThreshold; +var interp = p.peakListInterpolation; +try { +for (var i = tokens.size(); --i >= 0; ) { +var token = tokens.get(i); +var pt = token.indexOf("="); +if (pt <= 0) continue; +var key = token.substring(0, pt); +value = token.substring(pt + 1); +if (key.startsWith("thr")) { +threshold = Double.$valueOf(value).doubleValue(); +} else if (key.startsWith("int")) { +interp = (value.equalsIgnoreCase("none") ? "NONE" : "parabolic"); +}} +p.peakListThreshold = threshold; +p.peakListInterpolation = interp; +if (!this.isClosed()) this.pd().getPeakListing(p, Boolean.TRUE); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}, "~S"); +Clazz_defineMethod(c$, "highlight", +function(value){ +var tokens = JSV.common.ScriptToken.getTokens(value); +var n = tokens.size(); +switch (n) { +case 3: +case 5: +case 6: +case 7: +break; +case 2: +case 4: +if (tokens.get(n - 1).equalsIgnoreCase("OFF")) break; +default: +return false; +} +if (!this.isClosed()) { +var x1 = JU.PT.parseFloat(n > 1 ? tokens.get(1) : ""); +var x2 = JU.PT.parseFloat(n > 2 ? tokens.get(2) : ""); +var r = this.getRGB(n > 3 ? tokens.get(3) : "100"); +var g = this.getRGB(n > 4 ? tokens.get(4) : "100"); +var b = this.getRGB(n > 5 ? tokens.get(5) : "100"); +var a = this.getRGB(n > 6 ? tokens.get(6) : "100"); +if (Float.isNaN(x1) || Float.isNaN(x2)) { +this.pd().removeAllHighlights(); +} else { +this.pd().removeHighlight(x1, x2); +if (a < 0) a = 150; +if (r >= 0 && g >= 0 && b >= 0) this.pd().addHighlight(null, x1, x2, null, r, g, b, a); +}this.repaint(true); +}return true; +}, "~S"); +Clazz_defineMethod(c$, "getRGB", +function(s){ +var f = JU.PT.parseFloat(s); +return Clazz_floatToInt(Float.isNaN(f) ? -1 : f > 1 ? f : f * 255); +}, "~S"); +Clazz_defineMethod(c$, "execZoom", +function(value){ +var x1 = 0; +var x2 = 0; +var y1 = 0; +var y2 = 0; +value = JU.PT.rep(value, " - ", " ").$replace(',', ' '); +var tokens = JSV.common.ScriptToken.getTokens(value); +switch (tokens.size()) { +default: +return false; +case 0: +var v = this.pd().getCurrentGraphSet().getCurrentView(); +value = Math.round(v.minXOnScale * 100) / 100 + "," + Math.round(v.maxXOnScale * 100) / 100; +value = this.selectedPanel.getInput("Enter zoom range x1 x2", "Zoom", value); +return (value == null || this.execZoom(value)); +case 1: +value = tokens.get(0); +if (value.equalsIgnoreCase("next")) { +this.pd().nextView(); +} else if (value.toLowerCase().startsWith("prev")) { +this.pd().previousView(); +} else if (value.equalsIgnoreCase("out")) { +this.pd().resetView(); +} else if (value.equalsIgnoreCase("clear")) { +this.pd().clearAllView(); +} else if (value.equalsIgnoreCase("invertY")) { +this.pd().getCurrentGraphSet().invertYAxis(); +}return true; +case 2: +x1 = Double.parseDouble(tokens.get(0)); +x2 = Double.parseDouble(tokens.get(1)); +break; +case 3: +var xy = tokens.get(0); +if (xy.equalsIgnoreCase("X")) { +x1 = Double.parseDouble(tokens.get(1)); +x2 = Double.parseDouble(tokens.get(2)); +} else if (xy.equalsIgnoreCase("Y")) { +y1 = Double.parseDouble(tokens.get(1)); +y2 = Double.parseDouble(tokens.get(2)); +}break; +case 4: +x1 = Double.parseDouble(tokens.get(0)); +y1 = Double.parseDouble(tokens.get(1)); +x2 = Double.parseDouble(tokens.get(2)); +y2 = Double.parseDouble(tokens.get(3)); +} +this.pd().setZoom(x1, y1, x2, y2); +return true; +}, "~S"); +Clazz_defineMethod(c$, "scaleSelectedBy", +function(nodes, value){ +try { +var f = Double.parseDouble(value); +for (var i = nodes.size(); --i >= 0; ) nodes.get(i).pd().scaleSelectedBy(f); + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JU.Lst,~S"); +Clazz_defineMethod(c$, "pd", +function(){ +return (this.selectedPanel == null ? null : this.selectedPanel.getPanelData()); +}); +Clazz_defineMethod(c$, "isClosed", +function(){ +return (this.pd() == null); +}); +Clazz_defineMethod(c$, "execSelect", +function(value){ +if (value.startsWith("ID ")) { +if (!this.isClosed()) try { +this.pd().selectSpectrum(null, "ID", JU.PT.trimQuotes(value.substring(3)), true); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return; +}var nodes = this.panelNodes; +for (var i = nodes.size(); --i >= 0; ) nodes.get(i).pd().selectFromEntireSet(-2147483648); + +var speclist = new JU.Lst(); +this.fillSpecList(value, speclist, false); +}, "~S"); +Clazz_defineMethod(c$, "execView", +function(value, fromScript){ +if (value.equals("")) { +this.checkOverlay(); +return; +}var speclist = new JU.Lst(); +var strlist = this.fillSpecList(value, speclist, true); +if (speclist.size() > 0) this.si.siOpenDataOrFile(null, strlist, speclist, strlist, -1, -1, false, null, null); +if (!fromScript) { +this.si.siValidateAndRepaint(false); +}}, "~S,~B"); +Clazz_defineMethod(c$, "execIRMode", +function(value){ +var mode = JSV.common.Spectrum.IRMode.getMode(value); +var type = this.pd().getSpectrum().dataType; +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().setIRMode(mode, type); + +this.setIRmode(value); +}, "~S"); +Clazz_defineMethod(c$, "execIntegrate", +function(value){ +if (this.isClosed()) return; +this.pd().checkIntegral(this.parameters, value); +if (this.integrationRatios != null) this.pd().setIntegrationRatios(this.integrationRatios); +this.integrationRatios = null; +this.repaint(true); +}, "~S"); +Clazz_defineMethod(c$, "repaint", +function(andTaintAll){ +this.selectedPanel.doRepaint(andTaintAll); +}, "~B"); +Clazz_defineMethod(c$, "execSetIntegralParameter", +function(st, value){ +var p = this.parameters; +switch (st) { +case JSV.common.ScriptToken.INTEGRALRANGE: +p.integralRange = value; +break; +case JSV.common.ScriptToken.INTEGRALOFFSET: +p.integralOffset = value; +break; +} +if (!this.isClosed()) this.pd().checkIntegral(this.parameters, "update"); +}, "JSV.common.ScriptToken,~N"); +Clazz_defineMethod(c$, "setYScale", +function(value){ +var tokens = JSV.common.ScriptToken.getTokens(value); +var pt = 0; +var isAll = false; +if (tokens.size() > 1 && tokens.get(0).equalsIgnoreCase("ALL")) { +isAll = true; +pt++; +}var y1 = Double.parseDouble(tokens.get(pt++)); +var y2 = Double.parseDouble(tokens.get(pt)); +if (isAll) { +var spec = this.pd().getSpectrum(); +for (var i = this.panelNodes.size(); --i >= 0; ) { +var node = this.panelNodes.get(i); +if (node.source !== this.currentSource) continue; +if (JSV.common.Spectrum.areXScalesCompatible(spec, node.getSpectrum(), false, false)) node.pd().setZoom(0, y1, 0, y2); +} +} else { +this.pd().setZoom(0, y1, 0, y2); +}}, "~S"); +Clazz_defineMethod(c$, "setOverlayLegendVisibility", +function(tftoggle, doSet){ +if (doSet) this.overlayLegendVisible = (tftoggle == null ? !this.overlayLegendVisible : tftoggle === Boolean.TRUE); +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +for (var i = this.panelNodes.size(); --i >= 0; ) this.showOverlayLegend(this.panelNodes.get(i), this.panelNodes.get(i) === node && this.overlayLegendVisible); + +}, "Boolean,~B"); +Clazz_defineMethod(c$, "showOverlayLegend", +function(node, visible){ +var legend = node.legend; +if (legend == null && visible) { +legend = node.setLegend(node.pd().getNumberOfSpectraInCurrentSet() > 1 && node.pd().getNumberOfGraphSets() == 1 ? this.getDialog(JSV.common.Annotation.AType.OverlayLegend, null) : null); +}if (legend != null) legend.setVisible(visible); +}, "JSV.common.PanelNode,~B"); +Clazz_defineMethod(c$, "syncScript", +function(peakScript){ +if (peakScript.equals("TEST")) peakScript = JSV.common.JSViewer.testScript; +JU.Logger.info("JSViewer.syncScript Jmol>JSV " + peakScript); +if (peakScript.indexOf("= 0) this.syncPeaksAfterSyncScript(); +return; +}JU.Logger.info(">>toJSV>> " + peakScript); +var sourceID = JU.PT.getQuotedAttribute(peakScript, "sourceID"); +var type; +var model; +var file; +var jmolSource; +var index; +var atomKey; +if (sourceID == null) { +file = JU.PT.getQuotedAttribute(peakScript, "file"); +index = JU.PT.getQuotedAttribute(peakScript, "index"); +if (file == null || index == null) return; +file = JU.PT.rep(file, "#molfile", ""); +model = JU.PT.getQuotedAttribute(peakScript, "model"); +jmolSource = JU.PT.getQuotedAttribute(peakScript, "src"); +var modelSent = (jmolSource != null && jmolSource.startsWith("Jmol") ? null : this.returnFromJmolModel); +if (model != null && modelSent != null && !model.equals(modelSent)) { +JU.Logger.info("JSV ignoring model " + model + "; should be " + modelSent); +return; +}this.returnFromJmolModel = null; +if (this.panelNodes.size() == 0 || !this.checkFileAlreadyLoaded(file)) { +JU.Logger.info("file " + file + " not found -- JSViewer closing all and reopening"); +this.si.siSyncLoad(file); +}type = JU.PT.getQuotedAttribute(peakScript, "type"); +atomKey = null; +} else { +file = null; +index = model = sourceID; +atomKey = "," + JU.PT.getQuotedAttribute(peakScript, "atom") + ","; +type = "ID"; +jmolSource = sourceID; +}var pi = this.selectPanelByPeak(file, index, atomKey); +var pd = this.pd(); +pd.selectSpectrum(file, type, model, true); +this.si.siSendPanelChange(); +pd.addPeakHighlight(pi); +this.repaint(true); +if (jmolSource == null || (pi != null && pi.getAtoms() != null)) this.si.syncToJmol(this.jmolSelect(pi)); +}, "~S"); +Clazz_defineMethod(c$, "syncPeaksAfterSyncScript", +function(){ +var source = this.currentSource; +if (source == null) return; +try { +var file = "file=" + JU.PT.esc(source.getFilePath()); +var peaks = source.getSpectra().get(0).getPeakList(); +var sb = new JU.SB(); +sb.append("["); +var n = peaks.size(); +for (var i = 0; i < n; i++) { +var s = peaks.get(i).toString(); +s = s + " " + file; +sb.append(JU.PT.esc(s)); +if (i > 0) sb.append(","); +} +sb.append("]"); +this.si.syncToJmol("Peaks: " + sb); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "checkFileAlreadyLoaded", +function(fileName){ +if (this.isClosed()) return false; +if (this.pd().hasFileLoaded(fileName)) return true; +for (var i = this.panelNodes.size(); --i >= 0; ) if (this.panelNodes.get(i).pd().hasFileLoaded(fileName)) { +this.si.siSetSelectedPanel(this.panelNodes.get(i).jsvp); +return true; +} +return false; +}, "~S"); +Clazz_defineMethod(c$, "selectPanelByPeak", +function(file, index, atomKey){ +if (this.panelNodes == null) return null; +var pi = null; +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().addPeakHighlight(null); + +pi = this.pd().selectPeakByFileIndex(file, index, atomKey); +if (pi != null) { +this.setNode(JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes)); +} else { +for (var i = this.panelNodes.size(); --i >= 0; ) { +var node = this.panelNodes.get(i); +if ((pi = node.pd().selectPeakByFileIndex(file, index, atomKey)) != null) { +this.setNode(node); +break; +}} +}return pi; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "processPeakPickEvent", +function(eventObj, isApp){ +var pi; +if (Clazz_instanceOf(eventObj,"JSV.common.PeakInfo")) { +pi = eventObj; +var pi2 = this.pd().findMatchingPeakInfo(pi); +if (pi2 == null) { +if (!"ALL".equals(pi.getTitle())) return; +var node = null; +for (var i = 0; i < this.panelNodes.size(); i++) if ((pi2 = this.panelNodes.get(i).pd().findMatchingPeakInfo(pi)) != null) { +node = this.panelNodes.get(i); +break; +} +if (node == null) return; +this.setNode(node); +}pi = pi2; +} else { +var e = (eventObj); +this.si.siSetSelectedPanel(e.getSource()); +pi = e.getPeakInfo(); +}this.pd().addPeakHighlight(pi); +this.syncToJmol(pi); +if (pi.isClearAll()) this.repaint(false); + else this.pd().selectSpectrum(pi.getFilePath(), pi.getType(), pi.getModel(), true); +this.si.siCheckCallbacks(pi.getTitle()); +}, "~O,~B"); +Clazz_defineMethod(c$, "newStructToJmol", +function(data){ +JU.Logger.info("sending new structure to Jmol:\n" + data); +this.si.syncToJmol("struct:" + data); +}, "~S"); +Clazz_defineMethod(c$, "syncToJmol", +function(pi){ +this.repaint(true); +this.returnFromJmolModel = pi.getModel(); +this.si.syncToJmol(this.jmolSelect(pi)); +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "sendPanelChange", +function(){ +var pd = this.pd(); +var spec = pd.getSpectrum(); +var pi = spec.getSelectedPeak(); +if (pi == null) pi = spec.getModelPeakInfoForAutoSelectOnLoad(); +if (pi == null) pi = spec.getBasePeakInfo(); +pd.addPeakHighlight(pi); +JU.Logger.info(Thread.currentThread() + "JSViewer sendFrameChange " + this.selectedPanel); +this.syncToJmol(pi); +}); +Clazz_defineMethod(c$, "jmolSelect", +function(pi){ +var script = ("IR".equals(pi.getType()) || "RAMAN".equals(pi.getType()) ? "vibration ON; selectionHalos OFF;" : "vibration OFF; selectionhalos " + (pi.getAtoms() == null ? "OFF" : "ON")); +return "Select: " + pi + " script=\"" + script + " \" sourceID=\"" + this.pd().getSpectrum().sourceID + "\""; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getPropertyAsJavaObject", +function(key){ +var map = new java.util.Hashtable(); +if ("SOURCEID".equalsIgnoreCase(key)) { +map.put(key, (this.pd() == null ? "" : this.pd().getSpectrum().sourceID)); +return map; +}if (key != null && key.startsWith("DATA_")) { +map.put(key, "" + JSV.common.JSVFileManager.cacheGet(key.substring(5))); +return map; +}var isAll = false; +if (key != null && key.toUpperCase().startsWith("ALL ") || "all".equalsIgnoreCase(key)) { +key = key.substring(3).trim(); +isAll = true; +}if ("".equals(key)) key = null; +if ("NAMES".equalsIgnoreCase(key) || "KEYS".equalsIgnoreCase(key)) key = ""; +var map0 = this.pd().getInfo(true, key); +if (!isAll && map0 != null) return map0; +if (map0 != null) map.put("current", map0); +var info = new JU.Lst(); +for (var i = 0; i < this.panelNodes.size(); i++) { +var jsvp = this.panelNodes.get(i).jsvp; +if (jsvp == null) continue; +info.addLast(this.panelNodes.get(i).getInfo(key)); +} +map.put("items", info); +return map; +}, "~S"); +Clazz_defineMethod(c$, "getCoordinate", +function(){ +if (!this.isClosed()) { +var coord = this.pd().getClickedCoordinate(); +if (coord != null) return coord.getXVal() + " " + coord.getYVal(); +}return ""; +}); +Clazz_defineMethod(c$, "fillSpecList", +function(value, speclist, isView){ +var prefix = "1."; +var list; +var list0 = null; +var isNone = (value.equalsIgnoreCase("NONE")); +if (isNone || value.equalsIgnoreCase("all")) value = "*"; +if (value.indexOf("*") < 0) { +var tokens = value.$plit(" "); +var sb = new JU.SB(); +for (var i = 0; i < tokens.length; i++) { +var pt = tokens[i].indexOf('.'); +if (pt != tokens[i].lastIndexOf('.')) tokens[i] = tokens[i].substring(0, pt + 1) + tokens[i].substring(pt + 1).$replace('.', '_'); +sb.append(tokens[i]).append(" "); +} +value = sb.toString().trim(); +}if (value.equals("*")) { +list = JSV.common.ScriptToken.getTokens(JSV.common.PanelNode.getSpectrumListAsString(this.panelNodes)); +} else if (value.startsWith("\"") || value.startsWith("'")) { +list = JSV.common.ScriptToken.getTokens(value); +} else { +value = JU.PT.rep(value, "_", " _ "); +value = JU.PT.rep(value, "-", " - "); +list = JSV.common.ScriptToken.getTokens(value); +list0 = JSV.common.ScriptToken.getTokens(JSV.common.PanelNode.getSpectrumListAsString(this.panelNodes)); +if (list0.size() == 0) return null; +}var id0 = (this.isClosed() ? prefix : JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes).id); +id0 = id0.substring(0, id0.indexOf(".") + 1); +var sb = new JU.SB(); +var n = list.size(); +var idLast = null; +for (var i = 0; i < n; i++) { +var id = list.get(i); +var userYFactor = NaN; +var isubspec = -1; +if (i + 1 < n && list.get(i + 1).equals("*")) { +i += 2; +userYFactor = Double.parseDouble(list.get(i)); +} else if (i + 1 < n && list.get(i + 1).equals("_")) { +i += 2; +isubspec = Integer.parseInt(list.get(i)); +}if (id.equals("-")) { +if (idLast == null) idLast = list0.get(0); +id = (i + 1 == n ? list0.get(list0.size() - 1) : list.get(++i)); +if (!id.contains(".")) id = id0 + id; +var pt = 0; +while (pt < list0.size() && !list0.get(pt).equals(idLast)) pt++; + +pt++; +while (pt < list0.size() && !idLast.equals(id)) { +var node = JSV.common.PanelNode.findNodeById((idLast = list0.get(pt++)), this.panelNodes); +speclist.addLast(node.pd().getSpectrumAt(0)); +sb.append(",").append(idLast); +} +continue; +}var node; +if (id.startsWith("'") && id.endsWith("'")) id = "\"" + JU.PT.trim(id, "'") + "\""; +if (id.startsWith("\"")) { +id = JU.PT.trim(id, "\""); +var pn = this.panelNodes.size(); +for (var j = 0; j < pn; j++) { +node = this.panelNodes.get(j); +if (node.fileName != null && node.fileName.startsWith(id) || node.frameTitle != null && node.frameTitle.startsWith(id)) { +this.addSpecToList(node.pd(), userYFactor, -1, speclist, isView); +sb.append(",").append(node.id); +}} +continue; +}if (!id.contains(".")) id = id0 + id; +node = JSV.common.PanelNode.findNodeById(id, this.panelNodes); +if (node == null) continue; +idLast = id; +this.addSpecToList(node.pd(), userYFactor, isubspec, speclist, isView); +sb.append(",").append(id); +if (isubspec > 0) sb.append(".").appendI(isubspec); +} +if (isView && speclist.size() > 0) { +var node = JSV.common.PanelNode.findNodeById(sb.substring(1), this.panelNodes); +if (node != null) { +this.setNode(node); +speclist.clear(); +}}return (isNone ? "NONE" : sb.length() > 0 ? sb.toString().substring(1) : null); +}, "~S,JU.Lst,~B"); +Clazz_defineMethod(c$, "addSpecToList", +function(pd, userYFactor, isubspec, list, isView){ +if (isView) { +var spec = pd.getSpectrumAt(0); +spec.setUserYFactor(Double.isNaN(userYFactor) ? 1 : userYFactor); +pd.addToList(isubspec - 1, list); +} else { +pd.selectFromEntireSet(isubspec - 1); +}}, "JSV.common.PanelData,~N,~N,JU.Lst,~B"); +Clazz_defineMethod(c$, "getSolutionColor", +function(asFitted){ +var spectrum = this.pd().getSpectrum(); +var vi = (spectrum.canShowSolutionColor() ? JSV.common.JSViewer.getInterface("JSV.common.Visible") : null); +return (vi == null ? -1 : vi.getColour(spectrum, asFitted)); +}, "~B"); +Clazz_defineMethod(c$, "openDataOrFile", +function(data, name, specs, strUrl, firstSpec, lastSpec, isAppend, id){ +if ("NONE".equals(name)) { +this.close("View*"); +return 0; +}this.si.writeStatus(""); +var filePath = null; +var newPath = null; +var fileName = null; +var isView = false; +if (strUrl != null && strUrl.startsWith("cache://")) { +{ +data = Jmol.Cache.get(name = strUrl); +}}var file = null; +if (data != null) { +try { +fileName = name; +newPath = filePath = JSV.common.JSVFileManager.getFullPathName(name); +} catch (e) { +if (Clazz_exceptionOf(e,"JSV.exception.JSVException")){ +} else { +throw e; +} +} +} else if (specs != null) { +isView = true; +newPath = fileName = filePath = "View" + (++this.nViews); +} else if (strUrl != null) { +try { +file = this.apiPlatform.newFile(strUrl); +var u = new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase, strUrl, null); +filePath = u.toString(); +this.recentURL = filePath; +fileName = JSV.common.JSVFileManager.getTagName(filePath); +} catch (e) { +if (Clazz_exceptionOf(e,"java.net.MalformedURLException")){ +fileName = file.getName(); +newPath = filePath = file.getFullPath(); +this.recentURL = null; +} else { +throw e; +} +} +}var pt = -1; +if ((pt = JSV.common.PanelNode.isOpen(this.panelNodes, filePath)) >= 0 || (pt = JSV.common.PanelNode.isOpen(this.panelNodes, strUrl)) >= 0) { +if (isView) { +--this.nViews; +this.setNode(this.panelNodes.get(pt)); +} else { +this.si.writeStatus(filePath + " is already open"); +}return -1; +}if (!isAppend && !isView) this.close("all"); +this.si.setCursor(3); +try { +this.si.siSetCurrentSource(isView ? JSV.source.JDXSource.createView(specs) : JSV.source.JDXReader.createJDXSource(file, data, filePath, this.obscureTitleFromUser === Boolean.TRUE, this.loadImaginary, firstSpec, lastSpec, this.nmrMaxY)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +{ +alert(e.toString()) +}this.si.setCursor(0); +if (this.isApplet) { +this.selectedPanel.showMessage(e.toString(), "Error Opening File"); +}return -3; +} else { +throw e; +} +} +this.si.setCursor(0); +System.gc(); +if (newPath == null) { +newPath = this.currentSource.getFilePath(); +if (newPath != null) fileName = newPath.substring(newPath.lastIndexOf("/") + 1); +} else { +this.currentSource.setFilePath(newPath); +}if (id == null && !isView) id = newPath; +if (id != null) this.currentSource.setID(id); +this.si.siSetLoaded(fileName, newPath); +var spec = this.currentSource.getJDXSpectrum(0); +if (spec == null) { +return -4; +}specs = this.currentSource.getSpectra(); +JSV.common.Spectrum.process(specs, this.irMode); +var autoOverlay = this.interfaceOverlaid || spec.isAutoOverlayFromJmolClick(); +var combine = isView || autoOverlay && this.currentSource.isCompoundSource; +if (combine) { +this.combineSpectra((isView ? strUrl : null)); +} else { +this.splitSpectra(); +}this.pd().setTaintedAll(); +if (!isView) this.si.siUpdateRecentMenus(filePath); +return 0; +}, "~O,~S,JU.Lst,~S,~N,~N,~B,~S"); +Clazz_defineMethod(c$, "close", +function(value){ +var n0 = 0; +var pt = (value == null ? -2 : value.indexOf(">")); +if (pt > 0) { +n0 = JU.PT.parseInt(value.substring(pt + 1).trim()); +value = value.substring(0, pt).trim(); +}if ("*".equals(value)) value = "all"; +var isAll = (value === "all"); +if (value == null || n0 == 0 && value.equalsIgnoreCase("all")) { +this.closeSource(null); +return; +}var isViews = value.equalsIgnoreCase("views"); +var list = new JU.Lst(); +var source; +value = value.$replace('\\', '/'); +var n = this.panelNodes.size(); +var nMax = n - n0; +if (value.endsWith("*")) { +value = value.substring(0, value.length - 1); +for (var i = n; --i >= 0; ) if (this.panelNodes.get(i).fileName.startsWith(value)) list.addLast(this.panelNodes.get(i).source); + +} else if (value.equalsIgnoreCase("selected")) { +var lastSource = null; +for (var i = n; --i >= 0; ) { +source = this.panelNodes.get(i).source; +if (this.panelNodes.get(i).isSelected && (lastSource == null || lastSource !== source)) list.addLast(source); +lastSource = source; +} +} else if (isAll || isViews || value.equalsIgnoreCase("simulations")) { +for (var n1 = 0, i = n; --i >= 0 && n1 < nMax; ) if (isAll ? true : isViews ? this.panelNodes.get(i).isView : this.panelNodes.get(i).isSimulation) { +list.addLast(this.panelNodes.get(i).source); +n1++; +} +} else { +source = (value.length == 0 ? this.currentSource : JSV.common.PanelNode.findSourceByNameOrId(value, this.panelNodes)); +if (source != null) list.addLast(source); +}for (var i = list.size(); --i >= 0; ) this.closeSource(list.get(i)); + +if (this.selectedPanel == null && this.panelNodes.size() > 0) this.si.siSetSelectedPanel(JSV.common.PanelNode.getLastFileFirstNode(this.panelNodes)); +}, "~S"); +Clazz_defineMethod(c$, "execLoad", +function(value, script){ +var applet = this.html5Applet; +var isID = false; +if (isID) { +applet._search(value); +return; +}var tokens = JSV.common.ScriptToken.getTokens(value); +var filename = tokens.get(0); +var id = null; +var pt = 0; +if (filename.equalsIgnoreCase("ID")) { +id = JU.PT.trimQuotes(tokens.get(1)); +filename = tokens.get(2); +pt = 2; +}var isAppend = filename.equalsIgnoreCase("APPEND"); +var isCheck = filename.equalsIgnoreCase("CHECK"); +if (isAppend || isCheck) pt++; +if (pt > 0) filename = tokens.get(pt); +if (script == null) script = this.defaultLoadScript; +if (filename.equals("?")) { +this.openFileFromDialog(isAppend, false, null, script); +return; +}if (filename.equals("http://?")) { +this.openFileFromDialog(isAppend, true, null, null); +return; +}if (filename.equals("$?") || filename.equals("$H1?")) { +this.openFileFromDialog(isAppend, true, "H1", null); +return; +}if (filename.equals("$C13?")) { +this.openFileFromDialog(isAppend, true, "C13", null); +return; +}var isH1 = filename.equalsIgnoreCase("MOL") || filename.equalsIgnoreCase("H1"); +var isC13 = filename.equalsIgnoreCase("C13"); +if (isH1 || isC13) filename = "http://SIMULATION/" + (isH1 ? "H1/" : "C13/") + "MOL=" + JU.PT.trimQuotes(tokens.get(++pt)); +if (!isCheck && !isAppend) { +if (filename.equals("\"\"") && this.currentSource != null) filename = this.currentSource.getFilePath(); +this.close("all"); +}filename = JU.PT.trimQuotes(filename); +var isSimulation = filename.startsWith("$"); +if (isSimulation) { +if (!filename.startsWith("$H1") && !filename.startsWith("$C13")) filename = "$H1/" + filename.substring(1); +filename = "http://SIMULATION/" + filename.substring(1); +}var firstSpec = (pt + 1 < tokens.size() ? Integer.$valueOf(tokens.get(++pt)).intValue() : -1); +var lastSpec = (pt + 1 < tokens.size() ? Integer.$valueOf(tokens.get(++pt)).intValue() : firstSpec); +this.si.siOpenDataOrFile(null, null, null, filename, firstSpec, lastSpec, isAppend, script, id); +if (isSimulation) { +this.close("views"); +this.execView("*", true); +}}, "~S,~S"); +Clazz_defineMethod(c$, "combineSpectra", +function(name){ +var source = this.currentSource; +var specs = source.getSpectra(); +var haveSimulation = false; +for (var i = specs.size(); --i >= 0; ) if (specs.get(i).isSimulation) { +haveSimulation = true; +break; +} +var jsvp = this.si.siGetNewJSVPanel2(specs); +jsvp.setTitle(source.getTitle()); +if (jsvp.getTitle().equals("")) { +jsvp.getPanelData().setViewTitle(source.getFilePath()); +jsvp.setTitle(name); +}this.si.siSetPropertiesFromPreferences(jsvp, true); +this.spectraTree.createTree(++this.fileCount, source, Clazz_newArray(-1, [jsvp])).getPanelNode().isView = true; +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +node.setFrameTitle(name); +node.isView = true; +if (this.autoShowLegend && this.pd().getNumberOfGraphSets() == 1) node.setLegend(this.getDialog(JSV.common.Annotation.AType.OverlayLegend, null)); +this.si.siSetMenuEnables(node, false); +if (haveSimulation) this.pd().splitStack(true); +}, "~S"); +Clazz_defineMethod(c$, "closeSource", +function(source){ +var rootNode = this.spectraTree.getRootNode(); +var fileName = (source == null ? null : source.getFilePath()); +var toDelete = new JU.Lst(); +var enume = rootNode.children(); +while (enume.hasMoreElements()) { +var node = enume.nextElement(); +if (fileName == null || node.getPanelNode().source.matchesFilePath(fileName)) { +JU.Logger.info("Closing " + node.getPanelNode().source.getFilePath()); +for (var e = node.children(); e.hasMoreElements(); ) { +var childNode = e.nextElement(); +toDelete.addLast(childNode); +this.panelNodes.removeObj(childNode.getPanelNode()); +} +toDelete.addLast(node); +if (fileName != null) break; +}} +this.spectraTree.deleteNodes(toDelete); +if (source == null) { +if (this.currentSource != null) this.currentSource.dispose(); +this.currentSource = null; +if (this.selectedPanel != null) this.selectedPanel.dispose(); +} else { +}if (this.currentSource === source) { +this.si.siSetSelectedPanel(null); +this.si.siSetCurrentSource(null); +}var max = 0; +for (var i = 0; i < this.panelNodes.size(); i++) { +var f = JU.PT.parseFloat(this.panelNodes.get(i).id); +if (f >= max + 1) max = Clazz_doubleToInt(Math.floor(f)); +} +this.fileCount = max; +System.gc(); +if (JU.Logger.debugging) JU.Logger.checkMemory(); +this.si.siSourceClosed(source); +}, "JSV.source.JDXSource"); +Clazz_defineMethod(c$, "setFrameAndTreeNode", +function(i){ +if (this.panelNodes == null || i < 0 || i >= this.panelNodes.size()) return; +this.setNode(this.panelNodes.get(i)); +}, "~N"); +Clazz_defineMethod(c$, "selectFrameNode", +function(jsvp){ +var node = JSV.common.PanelNode.findNode(jsvp, this.panelNodes); +if (node == null) return null; +this.spectraTree.setPath(this.spectraTree.newTreePath(node.treeNode.getPath())); +this.setOverlayLegendVisibility(null, false); +return node; +}, "JSV.api.JSVPanel"); +Clazz_defineMethod(c$, "setSpectrum", +function(value){ +if (value.indexOf('.') >= 0) { +var node = JSV.common.PanelNode.findNodeById(value, this.panelNodes); +if (node == null) return false; +this.setNode(node); +} else { +var n = JU.PT.parseInt(value); +if (n <= 0) { +this.checkOverlay(); +return false; +}this.setFrameAndTreeNode(n - 1); +}return true; +}, "~S"); +Clazz_defineMethod(c$, "splitSpectra", +function(){ +var source = this.currentSource; +var specs = source.getSpectra(); +var panels = new Array(specs.size()); +var jsvp = null; +for (var i = 0; i < specs.size(); i++) { +var spec = specs.get(i); +jsvp = this.si.siGetNewJSVPanel(spec); +this.si.siSetPropertiesFromPreferences(jsvp, true); +panels[i] = jsvp; +} +this.spectraTree.createTree(++this.fileCount, source, panels); +this.si.siGetNewJSVPanel(null); +var node = JSV.common.PanelNode.findNode(this.selectedPanel, this.panelNodes); +this.si.siSetMenuEnables(node, true); +}); +Clazz_defineMethod(c$, "selectedTreeNode", +function(node){ +if (node == null) { +return; +}if (node.isLeaf()) { +this.setNode(node.getPanelNode()); +} else { +System.out.println("not a leaf"); +}this.si.siSetCurrentSource(node.getPanelNode().source); +}, "JSV.api.JSVTreeNode"); +Clazz_defineMethod(c$, "dispose", +function(){ +this.fileHelper = null; +if (this.viewDialog != null) this.viewDialog.dispose(); +this.viewDialog = null; +if (this.overlayLegendDialog != null) this.overlayLegendDialog.dispose(); +this.overlayLegendDialog = null; +if (this.jsvpPopupMenu != null) { +this.jsvpPopupMenu.jpiDispose(); +this.jsvpPopupMenu = null; +}if (this.panelNodes != null) for (var i = this.panelNodes.size(); --i >= 0; ) { +this.panelNodes.get(i).dispose(); +this.panelNodes.removeItemAt(i); +} +}); +Clazz_defineMethod(c$, "runScript", +function(script){ +if (this.scriptQueue == null) this.si.siProcessCommand(script); + else this.scriptQueue.addLast(script); +}, "~S"); +Clazz_defineMethod(c$, "requestRepaint", +function(){ +if (this.selectedPanel != null) this.repaintManager.refresh(); +}); +Clazz_defineMethod(c$, "repaintDone", +function(){ +this.repaintManager.repaintDone(); +}); +Clazz_defineMethod(c$, "checkOverlay", +function(){ +if (this.mainPanel != null) this.markSelectedPanels(this.panelNodes, this.mainPanel.getCurrentPanelIndex()); +this.viewDialog = this.getDialog(JSV.common.Annotation.AType.Views, null); +}); +Clazz_defineMethod(c$, "markSelectedPanels", +function(panelNodes, ip){ +for (var i = panelNodes.size(); --i >= 0; ) panelNodes.get(i).isSelected = (ip == i); + +}, "JU.Lst,~N"); +Clazz_defineMethod(c$, "execOverlayOffsetY", +function(offset){ +if (offset == -2147483648) { +if (this.selectedPanel == null) return; +var soffset = this.selectedPanel.getInput("Enter a vertical offset in percent for stacked plots", "Overlay", "" + this.recentStackPercent); +var f = JU.PT.parseFloat(soffset); +if (Float.isNaN(f)) return; +offset = Clazz_floatToInt(f); +}this.recentStackPercent = offset; +this.parameters.viewOffset = offset; +if (this.isClosed()) this.pd().setYStackOffsetPercent(offset); +}, "~N"); +Clazz_defineMethod(c$, "execScriptInline", +function(script){ +if (script.length > 0) script = script.substring(6).trim(); +if (script.length == 0) script = this.selectedPanel.getInput("Enter a JSpecView script", "Script", this.recentScript); +if (script == null) return; +this.recentScript = script; +this.runScriptNow(script); +}, "~S"); +Clazz_defineMethod(c$, "setDisplay", +function(canvas){ +this.apiPlatform.setViewer(this, this.display = canvas); +var wh = Clazz_newIntArray (2, 0); +this.apiPlatform.getFullScreenDimensions(canvas, wh); +this.setScreenDimension(wh[0], wh[1]); +}, "~O"); +Clazz_defineMethod(c$, "setScreenDimension", +function(width, height){ +height = Math.min(height, this.maximumSize); +width = Math.min(width, this.maximumSize); +if (this.screenWidth == width && this.screenHeight == height) return; +this.resizeImage(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "resizeImage", +function(width, height){ +if (width > 0) { +this.screenWidth = width; +this.screenHeight = height; +} else { +width = (this.screenWidth == 0 ? this.screenWidth = 500 : this.screenWidth); +height = (this.screenHeight == 0 ? this.screenHeight = 500 : this.screenHeight); +}this.g2d.setWindowParameters(width, height); +}, "~N,~N"); +Clazz_defineMethod(c$, "updateJS", +function(){ +if (this.selectedPanel != null) this.selectedPanel.paintComponent(this.apiPlatform.getGraphics(null)); +}); +Clazz_defineMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return (this.selectedPanel != null && this.selectedPanel.processMouseEvent(id, x, y, modifiers, time)); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "processTwoPointGesture", +function(touches){ +if (!this.isClosed()) this.selectedPanel.processTwoPointGesture(touches); +}, "~A"); +Clazz_defineMethod(c$, "getApplet", +function(){ +return this.html5Applet; +}); +Clazz_defineMethod(c$, "openFileAsyncSpecial", +function(fileName, flags){ +var ans = (this.currentSource == null ? "NO" : this.getDialogManager().getDialogInput(this, "Do you want to append this file? (Answer NO to replace.)", "Drag/Drop Action", 3, null, null, "YES")); +if (ans == null) return; +var pre = (ans.toLowerCase().startsWith("y") ? "append" : ""); +var post = (pre === "" ? "" : "; view *"); +this.runScript("load " + pre + " \"" + fileName + "\"" + post); +}, "~S,~N"); +Clazz_defineMethod(c$, "getHeight", +function(){ +return this.screenHeight; +}); +Clazz_defineMethod(c$, "getWidth", +function(){ +return this.screenWidth; +}); +Clazz_defineMethod(c$, "getPlatformInterface", +function(type){ +return JSV.common.JSViewer.getInterface("JSV." + (JSV.common.JSViewer.isJS ? "js2d.Js" : "java.Awt") + type); +}, "~S"); +Clazz_defineMethod(c$, "getDialogManager", +function(){ +if (this.dialogManager != null) return this.dialogManager; +this.dialogManager = this.getPlatformInterface("DialogManager"); +return this.dialogManager.set(this); +}); +Clazz_defineMethod(c$, "getDialog", +function(type, spec){ +var root = "JSV.dialog."; +switch (type) { +case JSV.common.Annotation.AType.Integration: +return (JSV.common.JSViewer.getInterface(root + "IntegrationDialog")).setParams("Integration for " + spec, this, spec); +case JSV.common.Annotation.AType.Measurements: +return (JSV.common.JSViewer.getInterface(root + "MeasurementsDialog")).setParams("Measurements for " + spec, this, spec); +case JSV.common.Annotation.AType.PeakList: +return (JSV.common.JSViewer.getInterface(root + "PeakListDialog")).setParams("Peak List for " + spec, this, spec); +case JSV.common.Annotation.AType.OverlayLegend: +return this.overlayLegendDialog = (JSV.common.JSViewer.getInterface(root + "OverlayLegendDialog")).setParams(this.pd().getViewTitle(), this, null); +case JSV.common.Annotation.AType.Views: +return this.viewDialog = (JSV.common.JSViewer.getInterface(root + "ViewsDialog")).setParams("View/Combine/Close Spectra", this, null); +default: +return null; +} +}, "JSV.common.Annotation.AType,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "show", +function(what){ +this.getDialogManager(); +if (what.equals("properties")) { +this.dialogManager.showProperties(null, this.pd().getSpectrum()); +} else if (what.equals("errors")) { +this.dialogManager.showSourceErrors(null, this.currentSource); +} else if (what.equals("source")) { +if (this.currentSource == null) { +if (this.panelNodes.size() > 0) this.dialogManager.showMessageDialog(null, "Please Select a Spectrum", "Select Spectrum", 0); +return; +}this.dialogManager.showSource(this, this.pd().getSpectrum()); +} else if (what.startsWith("solutioncolorfill")) { +if (what.indexOf("all") >= 0) { +for (var i = this.panelNodes.size(); --i >= 0; ) this.panelNodes.get(i).pd().setSolutionColor(what); + +} else { +this.pd().setSolutionColor(what); +}} else if (what.startsWith("solutioncolor")) { +var msg = this.getSolutionColorStr(what.indexOf("false") < 0); +msg = "background-color:rgb(" + msg + ")'>
Predicted Solution Colour- RGB(" + msg + ")

"; +if (JSV.common.JSViewer.isJS) { +this.dialogManager.showMessage(this, "
", "Predicted Colour"); +}}}, "~S"); +Clazz_defineMethod(c$, "getDialogPrint", +function(isJob){ +if (!JSV.common.JSViewer.isJS) try { +var pl = (this.getPlatformInterface("PrintDialog")).set(this.offWindowFrame, this.lastPrintLayout, isJob).getPrintLayout(); +if (pl != null) this.lastPrintLayout = pl; +return pl; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return new JSV.common.PrintLayout(this.pd()); +}, "~B"); +Clazz_defineMethod(c$, "setIRmode", +function(mode){ +if (mode.equals("AtoT")) { +this.irMode = JSV.common.Spectrum.IRMode.TO_TRANS; +} else if (mode.equals("TtoA")) { +this.irMode = JSV.common.Spectrum.IRMode.TO_ABS; +} else { +this.irMode = JSV.common.Spectrum.IRMode.getMode(mode); +}}, "~S"); +Clazz_defineMethod(c$, "getOptionFromDialog", +function(items, title, label){ +return this.getDialogManager().getOptionFromDialog(null, items, this.selectedPanel, title, label); +}, "~A,~S,~S"); +Clazz_defineMethod(c$, "print", +function(fileName){ +return this.execWrite("PDF \"" + fileName + "\""); +}, "~S"); +Clazz_defineMethod(c$, "execWrite", +function(value){ +if (JSV.common.JSViewer.isJS && value == null) value = "PDF"; +var msg = (JSV.common.JSViewer.getInterface("JSV.export.Exporter")).write(this, value == null ? null : JSV.common.ScriptToken.getTokens(value), false); +this.si.writeStatus(msg); +return msg; +}, "~S"); +Clazz_defineMethod(c$, "$export", +function(type, n){ +if (type == null) type = "XY"; +var pd = this.pd(); +var nMax = pd.getNumberOfSpectraInCurrentSet(); +if (n < -1 || n >= nMax) return "Maximum spectrum index (0-based) is " + (nMax - 1) + "."; +var spec = (n < 0 ? pd.getSpectrum() : pd.getSpectrumAt(n)); +try { +return (JSV.common.JSViewer.getInterface("JSV.export.Exporter")).exportTheSpectrum(this, JSV.common.ExportType.getType(type), null, spec, 0, spec.getXYCoords().length - 1, null, type.equalsIgnoreCase("PDF")); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return null; +} else { +throw e; +} +} +}, "~S,~N"); +Clazz_overrideMethod(c$, "postByteArray", +function(fileName, bytes){ +return JSV.common.JSVFileManager.postByteArray(fileName, bytes); +}, "~S,~A"); +Clazz_defineMethod(c$, "getOutputChannel", +function(fileName, isBinary){ +var os = null; +{ +while (fileName.startsWith("/")) fileName = +fileName.substring(1); +}return new JU.OC().setParams(this, fileName, !isBinary, os); +}, "~S,~B"); +c$.getInterface = Clazz_defineMethod(c$, "getInterface", +function(name){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "showMessage", +function(msg){ +if (this.selectedPanel != null && msg != null) this.selectedPanel.showMessage(msg, null); +}, "~S"); +Clazz_defineMethod(c$, "openFileFromDialog", +function(isAppend, isURL, simulationType, script){ +var url = null; +if (simulationType != null) { +url = this.fileHelper.getUrlFromDialog("Enter the name or identifier of a compound", this.recentSimulation); +if (url == null) return; +this.recentSimulation = url; +url = "$" + simulationType + "/" + url; +} else if (isURL) { +url = this.fileHelper.getUrlFromDialog("Enter the URL of a JCAMP-DX File", this.recentURL == null ? this.recentOpenURL : this.recentURL); +if (url == null) return; +this.recentOpenURL = url; +} else { +var userData = Clazz_newArray(-1, [Boolean.$valueOf(isAppend), script]); +var file = this.fileHelper.showFileOpenDialog(this.mainPanel, userData); +if (file != null) url = file.getFullPath(); +}if (url != null) this.runScriptNow("load " + (isAppend ? "APPEND " : "") + "\"" + url + "\"" + (script == null ? "" : ";" + script)); +}, "~B,~B,~S,~S"); +Clazz_defineMethod(c$, "openFile", +function(fileName, closeFirst){ +if (closeFirst && this.panelNodes != null) { +var source = JSV.common.PanelNode.findSourceByNameOrId(( new java.io.File(fileName)).getAbsolutePath(), this.panelNodes); +if (source != null) this.closeSource(source); +}this.si.siOpenDataOrFile(null, null, null, fileName, -1, -1, true, this.defaultLoadScript, null); +}, "~S,~B"); +Clazz_defineMethod(c$, "selectPanel", +function(jsvp, panelNodes){ +var iPanel = -1; +if (panelNodes != null) { +for (var i = panelNodes.size(); --i >= 0; ) { +var j = panelNodes.get(i).jsvp; +if (j === jsvp) { +iPanel = i; +} else { +j.setEnabled(false); +j.setFocusable(false); +j.getPanelData().closeAllDialogsExcept(JSV.common.Annotation.AType.NONE); +}} +this.markSelectedPanels(panelNodes, iPanel); +}return iPanel; +}, "JSV.api.JSVPanel,JU.Lst"); +Clazz_defineMethod(c$, "checkAutoIntegrate", +function(){ +if (this.autoIntegrate) this.pd().integrateAll(this.parameters); +}); +Clazz_defineMethod(c$, "parseInitScript", +function(params){ +if (params == null) params = ""; +var allParamTokens = new JSV.common.ScriptTokenizer(params, true); +if (JU.Logger.debugging) { +JU.Logger.info("Running in DEBUG mode"); +}while (allParamTokens.hasMoreTokens()) { +var token = allParamTokens.nextToken(); +var eachParam = new JSV.common.ScriptTokenizer(token, false); +var key = eachParam.nextToken(); +if (key.equalsIgnoreCase("SET")) key = eachParam.nextToken(); +key = key.toUpperCase(); +var st = JSV.common.ScriptToken.getScriptToken(key); +var value = JSV.common.ScriptToken.getValue(st, eachParam, token); +JU.Logger.info("KEY-> " + key + " VALUE-> " + value + " : " + st); +try { +switch (st) { +default: +this.parameters.set(null, st, value); +break; +case JSV.common.ScriptToken.UNKNOWN: +break; +case JSV.common.ScriptToken.APPLETID: +this.fullName = this.appletName + "__" + (this.appletName = value) + "__"; +var applet = null; +{ +self.Jmol && (applet = Jmol._applets[value]); +}this.html5Applet = applet; +break; +case JSV.common.ScriptToken.AUTOINTEGRATE: +this.autoIntegrate = JSV.common.Parameters.isTrue(value); +break; +case JSV.common.ScriptToken.COMPOUNDMENUON: +break; +case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME: +case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME: +this.si.siExecSetCallback(st, value); +break; +case JSV.common.ScriptToken.ENDINDEX: +this.initialEndIndex = Integer.parseInt(value); +break; +case JSV.common.ScriptToken.INTERFACE: +this.checkOvelayInterface(value); +break; +case JSV.common.ScriptToken.IRMODE: +this.setIRmode(value); +break; +case JSV.common.ScriptToken.MENUON: +this.allowMenu = Boolean.parseBoolean(value); +break; +case JSV.common.ScriptToken.OBSCURE: +if (this.obscureTitleFromUser == null) this.obscureTitleFromUser = Boolean.$valueOf(value); +break; +case JSV.common.ScriptToken.STARTINDEX: +this.initialStartIndex = Integer.parseInt(value); +break; +case JSV.common.ScriptToken.SYNCID: +this.fullName = this.appletName + "__" + (this.syncID = value) + "__"; +break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +}, "~S"); +Clazz_defineMethod(c$, "getSolutionColorStr", +function(asFit){ +var pt = JU.CU.colorPtFromInt(this.getSolutionColor(asFit), null); +return Clazz_floatToInt(pt.x) + "," + Clazz_floatToInt(pt.y) + "," + Clazz_floatToInt(pt.z); +}, "~B"); +Clazz_defineMethod(c$, "checkCommandLineForTip", +function(c, cmd, oneLineOnly){ +var isHelp = (c == '\1'); +if (!isHelp && c != '\0') { +if (c != '\t' && (c == '\n' || c.charCodeAt(0) < 32 || c.charCodeAt(0) > 126)) return null; +cmd += (Character.isISOControl(c) ? "" : "" + c); +}var tip; +if (cmd.indexOf(";") >= 0) cmd = cmd.substring(cmd.lastIndexOf(";") + 1); +var ret = null; +while (cmd.startsWith(" ")) cmd = cmd.substring(1); + +if (cmd.length == 0 && !isHelp) { +tip = ""; +} else { +var tokens = JSV.common.ScriptToken.getTokens(cmd); +if (tokens.size() == 0 && !isHelp) return ""; +var isExact = (cmd.endsWith(" ") || tokens.size() > 1 && oneLineOnly); +var list = JSV.common.ScriptToken.getScriptTokenList(tokens.size() == 0 ? null : tokens.get(0), isExact); +switch (list.size()) { +case 0: +tip = "?"; +break; +case 1: +var st = list.get(0); +tip = st.getTip(); +try { +if (tip.indexOf("TRUE") >= 0) tip = " (" + this.parameters.getBoolean(st) + ")"; + else if (st.name().indexOf("COLOR") >= 0) tip = " (" + JU.CU.toRGBHexString(this.parameters.getElementColor(st)) + ")"; + else tip = ""; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +if (c == '\t' || isExact || !oneLineOnly) { +tip = st.name() + " " + st.getTip() + tip + " " + st.getDescription(); +if (c == '\t') ret = st.name() + " "; +break; +}tip = st.name() + " " + tip; +break; +default: +tip = JSV.common.ScriptToken.getNameList(list); +} +}if (oneLineOnly) { +this.si.writeStatus(tip); +} else { +ret = tip; +}return ret; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "checkScript", +function(script){ +return this.checkCommandLineForTip('\0', script, false); +}, "~S"); +Clazz_defineMethod(c$, "execHelp", +function(value){ +var s = this.checkCommandLineForTip('\1', value, false); +if (s.indexOf(" ") < 0 && s.indexOf(",") > 0) { +var tokens = JU.PT.split(s, ","); +java.util.Arrays.sort(tokens); +s = ""; +for (var i = 0; i < tokens.length; i++) { +var st = JSV.common.ScriptToken.getScriptToken(tokens[i]); +s += tokens[i] + " " + st.getTip() + "\n " + st.getDescription() + "\n\n"; +} +this.getDialogManager().showMessage(null, s, "HELP " + value); +} else { +this.selectedPanel.showMessage(s, "Help " + value); +}System.out.println(s); +}, "~S"); +c$.testScript = " src=\"JPECVIEW\" file=\"http://SIMULATION/$caffeine\""; +c$.isJS = false; +c$.isSwingJS = false; +c$.jmolObject = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Annotation", "$.Coordinate"], "JSV.common.Measurement", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pt2 = null; +this.value = 0; +Clazz_instantialize(this, arguments);}, JSV.common, "Measurement", JSV.common.Annotation); +Clazz_prepareFields (c$, function(){ +this.pt2 = new JSV.common.Coordinate(); +}); +Clazz_defineMethod(c$, "setM1", +function(x, y, spec){ +this.setA(x, y, spec, "", false, false, 0, 6); +this.setPt2(this.getXVal(), this.getYVal()); +return this; +}, "~N,~N,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "copyM", +function(){ +var m = new JSV.common.Measurement(); +m.setA(this.getXVal(), this.getYVal(), this.spec, this.text, false, false, this.offsetX, this.offsetY); +m.setPt2(this.pt2.getXVal(), this.pt2.getYVal()); +return m; +}); +Clazz_defineMethod(c$, "setPt2", +function(spec, doSetPt2){ +this.spec = spec; +if (doSetPt2) this.setPt2(this.getXVal(), this.getYVal()); +return this; +}, "JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "setPt2", +function(x, y){ +this.pt2.setXVal(x); +this.pt2.setYVal(y); +this.value = Math.abs(x - this.getXVal()); +this.text = this.spec.setMeasurementText(this); +}, "~N,~N"); +Clazz_defineMethod(c$, "getSpectrum", +function(){ +return this.spec; +}); +Clazz_defineMethod(c$, "setValue", +function(value){ +this.value = value; +this.text = this.spec.setMeasurementText(this); +}, "~N"); +Clazz_defineMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz_defineMethod(c$, "getXVal2", +function(){ +return this.pt2.getXVal(); +}); +Clazz_defineMethod(c$, "getYVal2", +function(){ +return this.pt2.getYVal(); +}); +Clazz_overrideMethod(c$, "addSpecShift", +function(dx){ +this.setXVal(this.getXVal() + dx); +this.pt2.setXVal(this.pt2.getXVal() + dx); +}, "~N"); +Clazz_defineMethod(c$, "setYVal2", +function(y2){ +this.pt2.setYVal(y2); +}, "~N"); +Clazz_defineMethod(c$, "overlaps", +function(x1, x2){ +return (Math.min(this.getXVal(), this.getXVal2()) < Math.max(x1, x2) && Math.max(this.getXVal(), this.getXVal2()) > Math.min(x1, x2)); +}, "~N,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[" + this.getXVal() + "," + this.pt2.getXVal() + "]"; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JU.Lst", "JSV.api.AnnotationData"], "JSV.common.MeasurementData", ["JU.AU", "$.DF", "JSV.common.Annotation", "$.Parameters"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.type = null; +this.spec = null; +this.units = null; +this.precision = 0; +this.myParams = null; +this.isON = true; +this.key = null; +Clazz_instantialize(this, arguments);}, JSV.common, "MeasurementData", JU.Lst, JSV.api.AnnotationData); +Clazz_makeConstructor(c$, +function(type, spec){ +Clazz_superConstructor (this, JSV.common.MeasurementData, []); +this.type = type; +this.spec = spec; +this.myParams = new JSV.common.Parameters().setName("MeasurementData"); +}, "JSV.common.Annotation.AType,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "getMeasurements", +function(){ +return this; +}); +Clazz_overrideMethod(c$, "getAType", +function(){ +return this.type; +}); +Clazz_overrideMethod(c$, "getState", +function(){ +return this.isON; +}); +Clazz_overrideMethod(c$, "setState", +function(b){ +this.isON = b; +}, "~B"); +Clazz_defineMethod(c$, "setMeasurements", +function(measurements){ +}, "JU.Lst"); +Clazz_overrideMethod(c$, "getParameters", +function(){ +return this.myParams; +}); +Clazz_defineMethod(c$, "getDataHeader", +function(){ +return JSV.common.MeasurementData.HEADER; +}); +Clazz_defineMethod(c$, "getMeasurementListArray", +function(units){ +this.units = units; +var ddata = this.getMeasurementListArrayReal(units); +var precisionX = (this.spec.isNMR() ? 4 : 2); +var precisionDX = (this.spec.isHNMR() && units.equals("ppm") ? 4 : 2); +var data = new Array(this.size()); +for (var i = this.size(); --i >= 0; ) data[i] = Clazz_newArray(-1, ["" + (i + 1), JU.DF.formatDecimalDbl(ddata[i][0], precisionX), JU.DF.formatDecimalDbl(ddata[i][1], precisionX), JU.DF.formatDecimalDbl(ddata[i][2], precisionDX)]); + +return data; +}, "~S"); +Clazz_defineMethod(c$, "getMeasurementListArrayReal", +function(units){ +var toHz = this.spec.isNMR() && units.equalsIgnoreCase("HZ"); +var data = JU.AU.newDouble2(this.size()); +for (var pt = 0, i = this.size(); --i >= 0; ) { +var y = this.get(i).getValue(); +if (toHz) y *= this.spec.getObservedFreq(); +data[pt++] = Clazz_newDoubleArray(-1, [this.get(i).getXVal(), this.get(i).getXVal2(), y]); +} +return data; +}, "~S"); +c$.checkParameters = Clazz_defineMethod(c$, "checkParameters", +function(md, p){ +if (md.size() == 0) return false; +var myParams = md.getParameters(); +switch (md.getAType()) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.PeakList: +return (p.peakListInterpolation.equals(myParams.peakListInterpolation) && p.peakListThreshold == myParams.peakListThreshold); +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +} +return false; +}, "JSV.common.MeasurementData,JSV.common.ColorParameters"); +Clazz_overrideMethod(c$, "getSpectrum", +function(){ +return this.spec; +}); +Clazz_overrideMethod(c$, "getData", +function(){ +return this; +}); +Clazz_defineMethod(c$, "clear", +function(x1, x2){ +for (var i = this.size(); --i >= 0; ) { +var $in = this.get(i); +if ($in.text.length == 0 || $in.overlaps(x1, x2)) { +this.removeItemAt(i); +}} +}, "~N,~N"); +Clazz_defineMethod(c$, "find", +function(x){ +for (var i = this.size(); --i >= 0; ) { +var $in = this.get(i); +if ($in.overlaps(x, x)) { +return i; +}} +return -1; +}, "~N"); +Clazz_overrideMethod(c$, "setSpecShift", +function(dx){ +for (var i = this.size(); --i >= 0; ) { +var m = this.get(i); +var x = m.getXVal() + dx; +m.setXVal(x); +m.setValue(x); +m.text = JU.DF.formatDecimalDbl(x, this.precision); +} +}, "~N"); +Clazz_overrideMethod(c$, "getGraphSetKey", +function(){ +return this.key; +}); +Clazz_overrideMethod(c$, "setGraphSetKey", +function(key){ +this.key = key; +}, "~S"); +Clazz_overrideMethod(c$, "isVisible", +function(){ +return true; +}); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("header", this.getDataHeader()); +info.put("table", this.getMeasurementListArrayReal("ppm")); +if (this.units != null) info.put("units", this.units); +}, "java.util.Map"); +Clazz_overrideMethod(c$, "isDialog", +function(){ +return false; +}); +c$.HEADER = Clazz_newArray(-1, ["", "start", "end", "value"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum", "J.api.EventManager", "java.util.Hashtable", "JU.Lst"], "JSV.common.PanelData", ["JU.CU", "JSV.common.Annotation", "$.Coordinate", "$.GraphSet", "$.JSVFileManager", "$.JSVersion", "$.JSViewer", "$.MeasurementData", "$.Parameters", "$.PeakPickEvent", "$.ScriptToken", "$.Spectrum", "$.SubSpecChangeEvent", "$.ZoomEvent", "JU.Font", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g2d = null; +this.g2d0 = null; +this.vwr = null; +this.listeners = null; +this.currentGraphSet = null; +this.options = null; +this.jsvp = null; +this.graphSets = null; +this.currentSplitPoint = 0; +this.thisWidget = null; +this.coordClicked = null; +this.coordsClicked = null; +this.ctrlPressed = false; +this.shiftPressed = false; +this.drawXAxisLeftToRight = false; +this.isIntegralDrag = false; +this.xAxisLeftToRight = true; +this.scalingFactor = 1; +this.integralShiftMode = 0; +this.left = 60; +this.right = 50; +this.coordStr = ""; +this.startupPinTip = "Click to set."; +this.title = null; +this.clickCount = 0; +this.nSpectra = 0; +this.thisWidth = 0; +this.thisHeight = 0; +this.startIndex = 0; +this.endIndex = 0; +this.commonFilePath = null; +this.viewTitle = null; +this.displayFontName = null; +this.titleFontName = null; +this.isPrinting = false; +this.doReset = true; +this.printingFontName = null; +this.printGraphPosition = "default"; +this.titleDrawn = false; +this.display1D = false; +this.isLinked = false; +this.printJobTitle = null; +this.spectra = null; +this.taintedAll = true; +this.testingJavaScript = false; +this.currentFont = null; +this.mouseState = null; +this.gridOn = false; +this.titleOn = false; +this.peakTabsOn = false; +this.mouseX = 0; +this.mouseY = 0; +this.linking = false; +this.xPixelClicked = 0; +this.coordinatesColor = null; +this.gridColor = null; +this.integralPlotColor = null; +this.peakTabColor = null; +this.plotAreaColor = null; +this.scaleColor = null; +this.titleColor = null; +this.unitsColor = null; +this.highlightColor = null; +this.zoomBoxColor = null; +this.zoomBoxColor2 = null; +this.BLACK = null; +this.bgcolor = null; +this.optionsSaved = null; +this.gMain = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PanelData", null, J.api.EventManager); +Clazz_prepareFields (c$, function(){ +this.listeners = new JU.Lst(); +this.options = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(panel, viewer){ +this.vwr = viewer; +this.jsvp = panel; +this.g2d = this.g2d0 = viewer.g2d; +this.BLACK = this.g2d.getColor1(0); +this.highlightColor = this.g2d.getColor4(255, 0, 0, 200); +this.zoomBoxColor = this.g2d.getColor4(150, 150, 100, 130); +this.zoomBoxColor2 = this.g2d.getColor4(150, 100, 100, 130); +}, "JSV.api.JSVPanel,JSV.common.JSViewer"); +Clazz_defineMethod(c$, "addListener", +function(listener){ +if (!this.listeners.contains(listener)) { +this.listeners.addLast(listener); +}}, "JSV.api.PanelListener"); +Clazz_defineMethod(c$, "getCurrentGraphSet", +function(){ +return this.currentGraphSet; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +this.jsvp = null; +for (var i = 0; i < this.graphSets.size(); i++) this.graphSets.get(i).dispose(); + +this.graphSets = null; +this.currentFont = null; +this.currentGraphSet = null; +this.coordClicked = null; +this.coordsClicked = null; +this.thisWidget = null; +this.options = null; +this.listeners = null; +}); +Clazz_defineMethod(c$, "setViewTitle", +function(title){ +this.viewTitle = title; +}, "~S"); +Clazz_defineMethod(c$, "getViewTitle", +function(){ +return (this.viewTitle == null ? this.getTitle() : this.viewTitle); +}); +Clazz_defineMethod(c$, "getInfo", +function(selectedOnly, key){ +var info = new java.util.Hashtable(); +var sets = null; +if (selectedOnly) return this.currentGraphSet.getInfo(key, this.getCurrentSpectrumIndex()); +var entries = this.options.entrySet(); +if ("".equals(key)) { +var val = "type title nSets "; +for (var entry, $entry = entries.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) val += entry.getKey().name() + " "; + +info.put("KEYS", val); +} else { +for (var entry, $entry = entries.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) JSV.common.Parameters.putInfo(key, info, entry.getKey().name(), entry.getValue()); + +JSV.common.Parameters.putInfo(key, info, "type", this.getSpectrumAt(0).getDataType()); +JSV.common.Parameters.putInfo(key, info, "title", this.title); +JSV.common.Parameters.putInfo(key, info, "nSets", Integer.$valueOf(this.graphSets.size())); +}sets = new JU.Lst(); +for (var i = this.graphSets.size(); --i >= 0; ) sets.addLast(this.graphSets.get(i).getInfo(key, -1)); + +info.put("sets", sets); +return info; +}, "~B,~S"); +Clazz_defineMethod(c$, "setBooleans", +function(parameters, st){ +if (st == null) { +var booleans = parameters.getBooleans(); +for (var entry, $entry = booleans.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setBooleans(parameters, entry.getKey()); + +return; +}this.setBoolean(st, parameters.getBoolean(st)); +}, "JSV.common.Parameters,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setBoolean", +function(st, isTrue){ +this.setTaintedAll(); +if (st === JSV.common.ScriptToken.REVERSEPLOT) { +this.currentGraphSet.setReversePlot(isTrue); +return; +}this.options.put(st, Boolean.$valueOf(isTrue)); +switch (st) { +case JSV.common.ScriptToken.DISPLAY1D: +case JSV.common.ScriptToken.DISPLAY2D: +this.doReset = true; +break; +} +}, "JSV.common.ScriptToken,~B"); +Clazz_defineMethod(c$, "getBoolean", +function(st){ +if (st === JSV.common.ScriptToken.REVERSEPLOT) return this.currentGraphSet.reversePlot; +if (this.options == null) return false; +var b = this.options.get(st); +return (b != null && (Clazz_instanceOf(b, Boolean)) && (b) === Boolean.TRUE); +}, "JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "setFontName", +function(st, fontName){ +switch (st) { +case JSV.common.ScriptToken.DISPLAYFONTNAME: +this.displayFontName = fontName; +break; +case JSV.common.ScriptToken.TITLEFONTNAME: +this.titleFontName = fontName; +break; +} +if (fontName != null) this.options.put(st, fontName); +}, "JSV.common.ScriptToken,~S"); +Clazz_defineMethod(c$, "getDisplay1D", +function(){ +return this.display1D; +}); +Clazz_defineMethod(c$, "setTaintedAll", +function(){ +this.taintedAll = true; +}); +Clazz_defineMethod(c$, "initOne", +function(spectrum){ +this.spectra = new JU.Lst(); +this.spectra.addLast(spectrum); +this.initMany(this.spectra, 0, 0); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "initMany", +function(spectra, startIndex, endIndex){ +this.startIndex = startIndex; +this.endIndex = endIndex; +this.nSpectra = spectra.size(); +this.spectra = spectra; +this.commonFilePath = spectra.get(0).getFilePath(); +for (var i = 0; i < this.nSpectra; i++) if (!this.commonFilePath.equalsIgnoreCase(spectra.get(i).getFilePath())) { +this.commonFilePath = null; +break; +} +this.setGraphSets(JSV.common.PanelData.LinkMode.NONE); +}, "JU.Lst,~N,~N"); +Clazz_defineMethod(c$, "setGraphSets", +function(linkMode){ +this.graphSets = JSV.common.GraphSet.createGraphSetsAndSetLinkMode(this, this.jsvp, this.spectra, this.startIndex, this.endIndex, linkMode); +this.currentGraphSet = this.graphSets.get(0); +this.title = this.getSpectrum().getTitleLabel(); +}, "JSV.common.PanelData.LinkMode"); +Clazz_defineMethod(c$, "findMatchingPeakInfo", +function(pi){ +var pi2 = null; +for (var i = 0; i < this.graphSets.size(); i++) if ((pi2 = this.graphSets.get(i).findMatchingPeakInfo(pi)) != null) break; + +return pi2; +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "integrateAll", +function(parameters){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).integrate(-1, parameters); + +}, "JSV.common.ColorParameters"); +Clazz_defineMethod(c$, "getNumberOfGraphSets", +function(){ +return this.graphSets.size(); +}); +Clazz_defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz_defineMethod(c$, "refresh", +function(){ +this.doReset = true; +}); +Clazz_defineMethod(c$, "addAnnotation", +function(tokens){ +var title = this.currentGraphSet.addAnnotation(tokens, this.getTitle()); +if (title != null) this.title = title; +}, "JU.Lst"); +Clazz_defineMethod(c$, "addPeakHighlight", +function(peakInfo){ +for (var i = 0; i < this.graphSets.size(); i++) this.graphSets.get(i).addPeakHighlight(peakInfo); + +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "selectPeakByFileIndex", +function(filePath, index, atomKey){ +var pi = this.currentGraphSet.selectPeakByFileIndex(filePath, index, atomKey); +if (pi == null) for (var i = this.graphSets.size(); --i >= 0; ) if (this.graphSets.get(i) !== this.currentGraphSet && (pi = this.graphSets.get(i).selectPeakByFileIndex(filePath, index, atomKey)) != null) break; + +return pi; +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "setPlotColors", +function(colors){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setPlotColors(colors); + +}, "~A"); +Clazz_defineMethod(c$, "selectSpectrum", +function(filePath, type, model, andCurrent){ +if (andCurrent) this.currentGraphSet.selectSpectrum(filePath, type, model); +if ("ID".equals(type)) { +this.jumpToSpectrumIndex(this.getCurrentSpectrumIndex(), true); +return; +}for (var i = 0; i < this.graphSets.size(); i++) if (this.graphSets.get(i) !== this.currentGraphSet) this.graphSets.get(i).selectSpectrum(filePath, type, model); + +}, "~S,~S,~S,~B"); +Clazz_defineMethod(c$, "hasFileLoaded", +function(filePath){ +for (var i = this.graphSets.size(); --i >= 0; ) if (this.graphSets.get(i).hasFileLoaded(filePath)) return true; + +return false; +}, "~S"); +Clazz_defineMethod(c$, "clearAllView", +function(){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).resetViewCompletely(); + +}); +Clazz_defineMethod(c$, "drawGraph", +function(gMain, gFront, gRear, width, height, addFilePath){ +var withCoords; +this.gMain = gMain; +this.display1D = !this.isLinked && this.getBoolean(JSV.common.ScriptToken.DISPLAY1D); +var top = 40; +var bottom = 50; +var isResized = (this.isPrinting || this.doReset || this.thisWidth != width || this.thisHeight != height); +if (isResized) this.setTaintedAll(); +if (this.taintedAll) this.g2d.fillBackground(gRear, this.bgcolor); +if (gFront !== gMain) { +this.g2d.fillBackground(gFront, null); +if (gMain !== gRear) this.g2d.fillBackground(gMain, null); +this.g2d.setStrokeBold(gMain, false); +}if (this.isPrinting) { +top *= 3; +bottom *= 3; +this.scalingFactor = 10; +withCoords = false; +} else { +this.scalingFactor = 1; +withCoords = this.getBoolean(JSV.common.ScriptToken.COORDINATESON); +this.titleOn = this.getBoolean(JSV.common.ScriptToken.TITLEON); +this.gridOn = this.getBoolean(JSV.common.ScriptToken.GRIDON); +this.peakTabsOn = this.getBoolean(JSV.common.ScriptToken.PEAKTABSON); +}var pointsOnly = this.getBoolean(JSV.common.ScriptToken.POINTSONLY); +this.doReset = false; +this.titleDrawn = false; +this.thisWidth = width; +this.thisHeight = height; +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).drawGraphSet(gMain, gFront, gRear, width, height, this.left, this.right, top, bottom, isResized, this.taintedAll, pointsOnly); + +if (this.titleOn && !this.titleDrawn && this.taintedAll) this.drawTitle(gMain, height * this.scalingFactor, width * this.scalingFactor, this.getDrawTitle(this.isPrinting)); +if (withCoords && this.coordStr != null) this.drawCoordinates(gFront, top, this.thisWidth - this.right, top - 20); +if (addFilePath && this.taintedAll) { +this.printFilePath(gMain, this.left, height, this.commonFilePath != null ? this.commonFilePath : this.graphSets.size() == 1 && this.currentGraphSet.getTitle(true) != null ? this.getSpectrum().getFilePath() : null); +}if (this.isPrinting) { +this.printVersion(gMain, height); +}if (!this.testingJavaScript && (this.isPrinting || gMain === gFront)) this.setTaintedAll(); + else this.taintedAll = false; +}, "~O,~O,~O,~N,~N,~B"); +Clazz_defineMethod(c$, "drawCoordinates", +function(g, top, x, y){ +this.g2d.setGraphicsColor(g, this.coordinatesColor); +var font = this.setFont(g, this.jsvp.getWidth(), 1, 14, true); +this.g2d.drawString(g, this.coordStr, x - font.stringWidth(this.coordStr), y); +}, "~O,~N,~N,~N"); +Clazz_defineMethod(c$, "setFont", +function(g, width, style, size, isLabel){ +return this.g2d.setFont(g, this.getFont(g, width, style, size, isLabel)); +}, "~O,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "printFilePath", +function(g, x, y, s){ +if (s == null) return; +x *= this.scalingFactor; +y *= this.scalingFactor; +if (s.indexOf("?") > 0) s = s.substring(s.indexOf("?") + 1); +s = s.substring(s.lastIndexOf("/") + 1); +s = s.substring(s.lastIndexOf("\\") + 1); +this.g2d.setGraphicsColor(g, this.BLACK); +var font = this.setFont(g, 1000, 0, 9, true); +if (x != this.left * this.scalingFactor) x -= font.stringWidth(s); +this.g2d.drawString(g, s, x, y - font.getHeight()); +}, "~O,~N,~N,~S"); +Clazz_defineMethod(c$, "printVersion", +function(g, pageHeight){ +this.g2d.setGraphicsColor(g, this.BLACK); +var font = this.setFont(g, 100, 0, 12, true); +var s = this.jsvp.getApiPlatform().getDateFormat(null) + " JSpecView " + JSV.common.JSVersion.VERSION_SHORT; +var w = font.stringWidth(s); +this.g2d.drawString(g, s, (this.thisWidth - this.right) * this.scalingFactor - w, pageHeight * this.scalingFactor - font.getHeight() * 3); +}, "~O,~N"); +Clazz_defineMethod(c$, "drawTitle", +function(g, pageHeight, pageWidth, title){ +title = title.$replace('\n', ' '); +var font = this.getFont(g, pageWidth, this.isPrinting || this.getBoolean(JSV.common.ScriptToken.TITLEBOLDON) ? 1 : 0, 14, true); +var nPixels = font.stringWidth(title); +if (nPixels > pageWidth) { +var size = Clazz_doubleToInt(14.0 * pageWidth / nPixels); +if (size < 10) size = 10; +font = this.getFont(g, pageWidth, this.isPrinting || this.getBoolean(JSV.common.ScriptToken.TITLEBOLDON) ? 1 : 0, size, true); +}this.g2d.setGraphicsColor(g, this.titleColor); +this.setCurrentFont(this.g2d.setFont(g, font)); +this.g2d.drawString(g, title, (this.isPrinting ? this.left * this.scalingFactor : 5), pageHeight - Clazz_doubleToInt(font.getHeight() * (this.isPrinting ? 2 : 0.5))); +}, "~O,~N,~N,~S"); +Clazz_defineMethod(c$, "setCurrentFont", +function(font){ +this.currentFont = font; +}, "JU.Font"); +Clazz_defineMethod(c$, "getFontHeight", +function(){ +return this.currentFont.getAscent(); +}); +Clazz_defineMethod(c$, "getStringWidth", +function(s){ +return this.currentFont.stringWidth(s); +}, "~S"); +Clazz_defineMethod(c$, "selectFromEntireSet", +function(iSpec){ +for (var i = 0, pt = 0; i < this.graphSets.size(); i++) { +if (iSpec == -2147483648) { +this.graphSets.get(i).setSelected(-1); +continue; +}var specs = this.graphSets.get(i).spectra; +for (var j = 0; j < specs.size(); j++, pt++) if (iSpec < 0 || iSpec == pt) this.graphSets.get(i).setSelected(j); + +} +}, "~N"); +Clazz_defineMethod(c$, "addToList", +function(iSpec, list){ +for (var i = 0; i < this.spectra.size(); i++) if (iSpec < 0 || i == iSpec) list.addLast(this.spectra.get(i)); + +}, "~N,JU.Lst"); +Clazz_defineMethod(c$, "scaleSelectedBy", +function(f){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).scaleSelectedBy(f); + +}, "~N"); +Clazz_defineMethod(c$, "setCurrentGraphSet", +function(gs, yPixel){ +var splitPoint = (gs.nSplit > 1 ? gs.getSplitPoint(yPixel) : gs.getCurrentSpectrumIndex()); +var isNewSet = (this.currentGraphSet !== gs); +var isNewSplitPoint = (isNewSet || this.currentSplitPoint != splitPoint); +this.currentGraphSet = gs; +this.currentSplitPoint = splitPoint; +if (isNewSet || gs.nSplit > 1 && isNewSplitPoint) this.setSpectrum(splitPoint, true); +if (!isNewSet) { +isNewSet = gs.checkSpectrumClickedEvent(this.mouseX, this.mouseY, this.clickCount); +if (!isNewSet) return false; +this.currentSplitPoint = splitPoint = gs.getCurrentSpectrumIndex(); +this.setSpectrum(splitPoint, true); +}this.jumpToSpectrumIndex(splitPoint, isNewSet || gs.nSplit > 1 && isNewSplitPoint); +return isNewSet; +}, "JSV.common.GraphSet,~N"); +Clazz_defineMethod(c$, "jumpToSpectrum", +function(spec){ +var index = this.currentGraphSet.getSpectrumIndex(spec); +this.jumpToSpectrumIndex(index, true); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "jumpToSpectrumIndex", +function(index, doSetSpec){ +if (index < 0 || index >= this.currentGraphSet.nSpectra) return; +this.currentSplitPoint = index; +if (doSetSpec) this.setSpectrum(this.currentSplitPoint, this.currentGraphSet.nSplit > 1); +var spec = this.getSpectrum(); +this.notifySubSpectrumChange(spec.getSubIndex(), spec); +}, "~N,~B"); +Clazz_defineMethod(c$, "splitStack", +function(doSplit){ +this.currentGraphSet.splitStack(doSplit); +}, "~B"); +Clazz_defineMethod(c$, "getNumberOfSpectraInCurrentSet", +function(){ +return this.currentGraphSet.nSpectra; +}); +Clazz_defineMethod(c$, "getSourceID", +function(){ +var id = this.getSpectrum().sourceID; +return (id == null ? this.getSpectrumAt(0).sourceID : id); +}); +Clazz_defineMethod(c$, "getStartingPointIndex", +function(index){ +return this.currentGraphSet.viewData.getStartingPointIndex(index); +}, "~N"); +Clazz_defineMethod(c$, "getEndingPointIndex", +function(index){ +return this.currentGraphSet.viewData.getEndingPointIndex(index); +}, "~N"); +Clazz_defineMethod(c$, "haveSelectedSpectrum", +function(){ +return this.currentGraphSet.haveSelectedSpectrum(); +}); +Clazz_defineMethod(c$, "getShowAnnotation", +function(type){ +return this.currentGraphSet.getShowAnnotation(type, -1); +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "showAnnotation", +function(type, tfToggle){ +this.currentGraphSet.setShowAnnotation(type, tfToggle); +}, "JSV.common.Annotation.AType,Boolean"); +Clazz_defineMethod(c$, "setYStackOffsetPercent", +function(offset){ +this.currentGraphSet.yStackOffsetPercent = offset; +}, "~N"); +Clazz_defineMethod(c$, "setSpectrum", +function(iSpec, isSplit){ +this.currentGraphSet.setSpectrum(iSpec, isSplit); +}, "~N,~B"); +Clazz_defineMethod(c$, "getSpectrum", +function(){ +return this.currentGraphSet.getSpectrum(); +}); +Clazz_defineMethod(c$, "setSpecForIRMode", +function(spec){ +this.setTaintedAll(); +var spec0 = this.currentGraphSet.getSpectrum(); +this.currentGraphSet.setSpectrumJDX(spec); +for (var i = 0; i < this.spectra.size(); i++) if (this.spectra.get(i) === spec0) this.spectra.set(i, spec); + +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "isShowAllStacked", +function(){ +return this.currentGraphSet.showAllStacked; +}); +Clazz_defineMethod(c$, "getCurrentSpectrumIndex", +function(){ +return this.currentGraphSet.getCurrentSpectrumIndex(); +}); +Clazz_defineMethod(c$, "getSpectrumAt", +function(index){ +if (this.currentGraphSet == null) return null; +return this.currentGraphSet.getSpectrumAt(index); +}, "~N"); +Clazz_defineMethod(c$, "addHighlight", +function(gs, x1, x2, spec, r, g, b, a){ +(gs == null ? this.currentGraphSet : gs).addHighlight(x1, x2, spec, this.g2d.getColor4(r, g, b, a)); +}, "JSV.common.GraphSet,~N,~N,JSV.common.Spectrum,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "removeHighlight", +function(x1, x2){ +this.currentGraphSet.removeHighlight(x1, x2); +}, "~N,~N"); +Clazz_defineMethod(c$, "removeAllHighlights", +function(){ +this.currentGraphSet.removeAllHighlights(); +}); +Clazz_defineMethod(c$, "setZoom", +function(x1, y1, x2, y2){ +this.currentGraphSet.setZoom(x1, y1, x2, y2); +this.doReset = true; +this.setTaintedAll(); +this.notifyListeners( new JSV.common.ZoomEvent()); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "resetView", +function(){ +this.currentGraphSet.resetView(); +}); +Clazz_defineMethod(c$, "previousView", +function(){ +this.currentGraphSet.previousView(); +}); +Clazz_defineMethod(c$, "nextView", +function(){ +this.currentGraphSet.nextView(); +}); +Clazz_defineMethod(c$, "getSelectedIntegral", +function(){ +return this.currentGraphSet.getSelectedIntegral(); +}); +Clazz_defineMethod(c$, "advanceSubSpectrum", +function(dir){ +this.currentGraphSet.advanceSubSpectrum(dir); +}, "~N"); +Clazz_defineMethod(c$, "setSelectedIntegral", +function(val){ +this.currentGraphSet.setSelectedIntegral(val); +}, "~N"); +Clazz_defineMethod(c$, "scaleYBy", +function(f){ +this.currentGraphSet.scaleYBy(f); +}, "~N"); +Clazz_defineMethod(c$, "toPeak", +function(i){ +this.currentGraphSet.toPeak(i); +}, "~N"); +Clazz_defineMethod(c$, "getClickedCoordinate", +function(){ +return this.coordClicked; +}); +Clazz_defineMethod(c$, "getPickedCoordinates", +function(coord, actualCoord){ +return JSV.common.Coordinate.getPickedCoordinates(this.coordsClicked, this.coordClicked, coord, actualCoord); +}, "JSV.common.Coordinate,JSV.common.Coordinate"); +Clazz_defineMethod(c$, "shiftSpectrum", +function(mode, xOld, xNew){ +return this.currentGraphSet.shiftSpectrum(mode, xOld, xNew); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "findX", +function(spec, d){ +this.currentGraphSet.setXPointer(spec, d); +}, "JSV.common.Spectrum,~N"); +Clazz_defineMethod(c$, "setXPointers", +function(spec, x1, spec2, x2){ +this.currentGraphSet.setXPointer(spec, x1); +this.currentGraphSet.setXPointer2(spec2, x2); +}, "JSV.common.Spectrum,~N,JSV.common.Spectrum,~N"); +Clazz_defineMethod(c$, "isCurrentGraphSet", +function(graphSet){ +return graphSet === this.currentGraphSet; +}, "JSV.common.GraphSet"); +Clazz_defineMethod(c$, "repaint", +function(){ +this.jsvp.doRepaint(false); +}); +Clazz_defineMethod(c$, "setToolTipText", +function(s){ +this.jsvp.setToolTipText(s); +}, "~S"); +Clazz_defineMethod(c$, "setHighlightColor", +function(color){ +this.setColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR, color); +}, "javajs.api.GenericColor"); +Clazz_defineMethod(c$, "getInput", +function(message, title, sval){ +return this.jsvp.getInput(message, title, sval); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "getFont", +function(g, width, style, size, isLabel){ +size *= this.scalingFactor; +if (isLabel) { +if (width < 400) size = ((width * size) / 400); +} else { +if (width < 250) size = ((width * size) / 250); +}var face = this.jsvp.getFontFaceID(this.isPrinting ? this.printingFontName : this.displayFontName); +return this.currentFont = JU.Font.createFont3D(face, style, size, size, this.jsvp.getApiPlatform(), g); +}, "~O,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "notifySubSpectrumChange", +function(isub, spec){ +this.notifyListeners( new JSV.common.SubSpecChangeEvent(isub, (spec == null ? null : spec.getTitleLabel()))); +}, "~N,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "notifyPeakPickedListeners", +function(p){ +if (p == null) { +p = new JSV.common.PeakPickEvent(this.jsvp, this.coordClicked, this.getSpectrum().getAssociatedPeakInfo(this.xPixelClicked, this.coordClicked)); +}this.notifyListeners(p); +}, "JSV.common.PeakPickEvent"); +Clazz_defineMethod(c$, "notifyListeners", +function(eventObj){ +for (var i = 0; i < this.listeners.size(); i++) if (this.listeners.get(i) != null) this.listeners.get(i).panelEvent(eventObj); + +}, "~O"); +Clazz_defineMethod(c$, "escapeKeyPressed", +function(isDEL){ +this.currentGraphSet.escapeKeyPressed(isDEL); +}, "~B"); +Clazz_defineMethod(c$, "hasFocus", +function(){ +return this.jsvp.hasFocus(); +}); +Clazz_defineMethod(c$, "isMouseUp", +function(){ +return (this.mouseState === JSV.common.PanelData.Mouse.UP); +}); +Clazz_defineMethod(c$, "doMouseMoved", +function(xPixel, yPixel){ +this.mouseX = xPixel; +this.mouseY = yPixel; +this.mouseState = JSV.common.PanelData.Mouse.UP; +this.clickCount = 0; +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +gs.mouseMovedEvent(xPixel, yPixel); +}, "~N,~N"); +Clazz_defineMethod(c$, "doMousePressed", +function(xPixel, yPixel){ +this.mouseState = JSV.common.PanelData.Mouse.DOWN; +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +this.setCurrentGraphSet(gs, yPixel); +this.clickCount = (++this.clickCount % 3); +this.currentGraphSet.mousePressedEvent(xPixel, yPixel, this.clickCount); +}, "~N,~N"); +Clazz_defineMethod(c$, "doMouseDragged", +function(xPixel, yPixel){ +this.isIntegralDrag = new Boolean (this.isIntegralDrag | this.ctrlPressed).valueOf(); +this.mouseState = JSV.common.PanelData.Mouse.DOWN; +if (JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel) !== this.currentGraphSet) return; +if (this.currentGraphSet.checkWidgetEvent(xPixel, yPixel, false)) this.setTaintedAll(); +this.currentGraphSet.mouseMovedEvent(xPixel, yPixel); +}, "~N,~N"); +Clazz_defineMethod(c$, "doMouseReleased", +function(xPixel, yPixel, isButton1){ +this.mouseState = JSV.common.PanelData.Mouse.UP; +if (this.thisWidget == null && this.currentGraphSet.pendingMeasurement == null || !isButton1) return; +this.currentGraphSet.mouseReleasedEvent(xPixel, yPixel); +this.thisWidget = null; +this.isIntegralDrag = false; +this.integralShiftMode = 0; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "doMouseClicked", +function(xPixel, yPixel, isControlDown){ +var gs = JSV.common.GraphSet.findGraphSet(this.graphSets, xPixel, yPixel); +if (gs == null) return; +this.setCurrentGraphSet(gs, yPixel); +gs.mouseClickedEvent(xPixel, yPixel, this.clickCount, isControlDown); +this.setTaintedAll(); +this.repaint(); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "hasCurrentMeasurements", +function(type){ +return this.currentGraphSet.hasCurrentMeasurement(type); +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "getDialog", +function(type){ +return this.currentGraphSet.getDialog(type, -1); +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "addDialog", +function(iSpec, type, dialog){ +this.currentGraphSet.addDialog(iSpec, type, dialog); +}, "~N,JSV.common.Annotation.AType,JSV.api.AnnotationData"); +Clazz_defineMethod(c$, "getPeakListing", +function(p, tfToggle){ +if (p != null) this.currentGraphSet.getPeakListing(-1, p, true); +this.currentGraphSet.setPeakListing(tfToggle); +}, "JSV.common.Parameters,Boolean"); +Clazz_defineMethod(c$, "checkIntegral", +function(parameters, value){ +this.currentGraphSet.checkIntegralParams(parameters, value); +}, "JSV.common.Parameters,~S"); +Clazz_defineMethod(c$, "setIntegrationRatios", +function(value){ +this.currentGraphSet.setIntegrationRatios(value); +}, "~S"); +Clazz_defineMethod(c$, "getView", +function(){ +return this.currentGraphSet.getCurrentView(); +}); +Clazz_defineMethod(c$, "closeAllDialogsExcept", +function(type){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).closeDialogsExcept(type); + +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "removeDialog", +function(dialog){ +this.currentGraphSet.removeDialog(dialog); +}, "JSV.dialog.JSVDialog"); +Clazz_defineMethod(c$, "normalizeIntegral", +function(){ +var integral = this.getSelectedIntegral(); +if (integral == null) return; +var sValue = integral.text; +if (sValue.length == 0) sValue = "" + integral.getValue(); +var newValue = this.getInput("Enter a new value for this integral", "Normalize Integral", sValue); +try { +this.setSelectedIntegral(Double.parseDouble(newValue)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "getDrawTitle", +function(isPrinting){ +var title = null; +if (isPrinting) title = this.printJobTitle; + else if (this.nSpectra == 1) { +title = this.getSpectrum().getPeakTitle(); +} else if (this.viewTitle != null) { +if (this.currentGraphSet.getTitle(false) != null) title = this.getSpectrum().getPeakTitle(); +if (title == null) title = this.viewTitle; +} else { +title = this.jsvp.getTitle().trim(); +}if (title.indexOf("\n") >= 0) title = title.substring(0, title.indexOf("\n")).trim(); +return title; +}, "~B"); +Clazz_defineMethod(c$, "getPrintJobTitle", +function(isPrinting){ +var title = null; +if (this.nSpectra == 1) { +title = this.getSpectrum().getTitle(); +} else if (this.viewTitle != null) { +if (this.graphSets.size() == 1) title = this.currentGraphSet.getTitle(isPrinting); +if (title == null) title = this.viewTitle; +} else { +title = this.jsvp.getTitle().trim(); +}if (title.indexOf("\n") >= 0) title = title.substring(0, title.indexOf("\n")).trim(); + else if (title.startsWith("$")) title = title.substring(1); +return title; +}, "~B"); +Clazz_defineMethod(c$, "linkSpectra", +function(mode){ +if (mode === JSV.common.PanelData.LinkMode.ALL) mode = (this.nSpectra == 2 ? JSV.common.PanelData.LinkMode.AB : this.nSpectra == 3 ? JSV.common.PanelData.LinkMode.ABC : JSV.common.PanelData.LinkMode.NONE); +if (mode !== JSV.common.PanelData.LinkMode.NONE && mode.toString().length != this.nSpectra) return; +this.setGraphSets(mode); +}, "JSV.common.PanelData.LinkMode"); +Clazz_defineMethod(c$, "doZoomLinked", +function(graphSet, initX, finalX, addZoom, checkRange, is1d){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrumAt(0); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrumAt(0), false, true)) gs.doZoom(initX, 0, finalX, 0, is1d, false, checkRange, false, addZoom); +} +this.linking = false; +}, "JSV.common.GraphSet,~N,~N,~B,~B,~B"); +Clazz_defineMethod(c$, "clearLinkViews", +function(graphSet){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrum(); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrum(), false, true)) gs.clearViews(); +} +this.linking = false; +}, "JSV.common.GraphSet"); +Clazz_defineMethod(c$, "setlinkedXMove", +function(graphSet, x, isX2){ +if (this.linking) return; +this.linking = true; +var spec = graphSet.getSpectrum(); +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet && JSV.common.Spectrum.areXScalesCompatible(spec, this.graphSets.get(i).getSpectrum(), false, true)) { +if (gs.imageView == null) if (isX2) { +gs.setXPixelMovedTo(1.7976931348623157E308, x, 0, 0); +} else { +gs.setXPixelMovedTo(x, 1.7976931348623157E308, 0, 0); +}}} +this.linking = false; +}, "JSV.common.GraphSet,~N,~B"); +Clazz_defineMethod(c$, "set2DCrossHairsLinked", +function(graphSet, x, y, isLocked){ +for (var i = this.graphSets.size(); --i >= 0; ) { +var gs = this.graphSets.get(i); +if (gs !== graphSet) gs.set2DXY(x, y, isLocked); +} +}, "JSV.common.GraphSet,~N,~N,~B"); +Clazz_defineMethod(c$, "dialogsToFront", +function(spec){ +this.currentGraphSet.dialogsToFront(spec); +}, "JSV.common.Spectrum"); +Clazz_defineMethod(c$, "setColor", +function(st, color){ +if (color != null) this.options.put(st, JU.CU.toRGBHexString(color)); +switch (st) { +case JSV.common.ScriptToken.COORDINATESCOLOR: +this.coordinatesColor = color; +return; +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +this.highlightColor = color; +if (this.highlightColor.getOpacity255() == 255) this.highlightColor.setOpacity255(150); +return; +case JSV.common.ScriptToken.ZOOMBOXCOLOR: +this.zoomBoxColor = color; +return; +case JSV.common.ScriptToken.ZOOMBOXCOLOR2: +this.zoomBoxColor2 = color; +return; +case JSV.common.ScriptToken.BACKGROUNDCOLOR: +this.jsvp.setBackgroundColor(this.bgcolor = color); +break; +case JSV.common.ScriptToken.GRIDCOLOR: +this.gridColor = color; +break; +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +this.integralPlotColor = color; +break; +case JSV.common.ScriptToken.PEAKTABCOLOR: +this.peakTabColor = color; +break; +case JSV.common.ScriptToken.PLOTCOLOR: +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setPlotColor0(color); + +break; +case JSV.common.ScriptToken.PLOTAREACOLOR: +this.plotAreaColor = color; +break; +case JSV.common.ScriptToken.SCALECOLOR: +this.scaleColor = color; +break; +case JSV.common.ScriptToken.TITLECOLOR: +this.titleColor = color; +break; +case JSV.common.ScriptToken.UNITSCOLOR: +this.unitsColor = color; +break; +default: +JU.Logger.warn("AwtPanel --- unrecognized color: " + st); +return; +} +this.taintedAll = true; +}, "JSV.common.ScriptToken,javajs.api.GenericColor"); +Clazz_defineMethod(c$, "getColor", +function(whatColor){ +switch (whatColor) { +default: +JU.Logger.error("awtgraphset missing color " + whatColor); +return this.BLACK; +case JSV.common.ScriptToken.ZOOMBOXCOLOR2: +return this.zoomBoxColor2; +case JSV.common.ScriptToken.ZOOMBOXCOLOR: +return this.zoomBoxColor; +case JSV.common.ScriptToken.HIGHLIGHTCOLOR: +return this.highlightColor; +case JSV.common.ScriptToken.INTEGRALPLOTCOLOR: +return this.integralPlotColor; +case JSV.common.ScriptToken.GRIDCOLOR: +return this.gridColor; +case JSV.common.ScriptToken.PEAKTABCOLOR: +return this.peakTabColor; +case JSV.common.ScriptToken.PLOTAREACOLOR: +return this.plotAreaColor; +case JSV.common.ScriptToken.SCALECOLOR: +return this.scaleColor; +case JSV.common.ScriptToken.TITLECOLOR: +return this.titleColor; +case JSV.common.ScriptToken.UNITSCOLOR: +return this.unitsColor; +} +}, "JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "getOverlayLegendData", +function(){ +var numSpectra = this.currentGraphSet.nSpectra; +var data = new Array(numSpectra); +var f1 = this.getSpectrumAt(0).getFilePath(); +var f2 = this.getSpectrumAt(numSpectra - 1).getFilePath(); +var useFileName = f1 != null && f2 != null && !f1.equals(f2); +for (var index = 0; index < numSpectra; index++) { +var cols = new Array(3); +var spectrum = this.getSpectrumAt(index); +this.title = spectrum.getTitle(); +if (useFileName) this.title = JSV.common.JSVFileManager.getTagName(spectrum.getFilePath()) + " - " + this.title; +var plotColor = this.getCurrentPlotColor(index); +cols[0] = new Integer(index + 1); +cols[1] = plotColor; +cols[2] = " " + this.title; +data[index] = cols; +} +return data; +}); +Clazz_defineMethod(c$, "setColorOrFont", +function(params, st){ +if (st == null) { +var colors = params.elementColors; +for (var entry, $entry = colors.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) this.setColorOrFont(params, entry.getKey()); + +this.setColorOrFont(params, JSV.common.ScriptToken.DISPLAYFONTNAME); +this.setColorOrFont(params, JSV.common.ScriptToken.TITLEFONTNAME); +return; +}switch (st) { +case JSV.common.ScriptToken.DISPLAYFONTNAME: +this.setFontName(st, params.displayFontName); +return; +case JSV.common.ScriptToken.TITLEFONTNAME: +this.setFontName(st, params.titleFontName); +return; +} +this.setColor(st, params.getElementColor(st)); +}, "JSV.common.ColorParameters,JSV.common.ScriptToken"); +Clazz_defineMethod(c$, "getCurrentPlotColor", +function(i){ +return this.currentGraphSet.getPlotColor(i); +}, "~N"); +Clazz_defineMethod(c$, "setPrint", +function(pl, fontName){ +if (pl == null) { +this.options.putAll(this.optionsSaved); +this.optionsSaved = null; +return; +}this.printJobTitle = pl.title; +this.printingFontName = fontName; +this.printGraphPosition = pl.position; +this.optionsSaved = new java.util.Hashtable(); +this.optionsSaved.putAll(this.options); +this.gridOn = pl.showGrid; +this.titleOn = pl.showTitle; +this.setBoolean(JSV.common.ScriptToken.XSCALEON, pl.showXScale); +this.setBoolean(JSV.common.ScriptToken.XUNITSON, pl.showXScale); +this.setBoolean(JSV.common.ScriptToken.YSCALEON, pl.showYScale); +this.setBoolean(JSV.common.ScriptToken.YUNITSON, pl.showYScale); +}, "JSV.common.PrintLayout,~S"); +Clazz_defineMethod(c$, "setDefaultPrintOptions", +function(pl){ +pl.showGrid = this.gridOn; +pl.showXScale = this.getBoolean(JSV.common.ScriptToken.XSCALEON); +pl.showYScale = this.getBoolean(JSV.common.ScriptToken.YSCALEON); +pl.showTitle = this.titleOn; +}, "JSV.common.PrintLayout"); +Clazz_defineMethod(c$, "showDialog", +function(type){ +var ad = this.getDialog(type); +this.closeAllDialogsExcept(type); +if (ad != null && Clazz_instanceOf(ad,"JSV.dialog.JSVDialog")) return (ad).reEnable(); +var iSpec = this.getCurrentSpectrumIndex(); +if (iSpec < 0) { +this.jsvp.showMessage("To enable " + type + " first select a spectrum by clicking on it.", "" + type); +return null; +}var spec = this.getSpectrum(); +var dialog = this.vwr.getDialog(type, spec); +if (ad == null && type === JSV.common.Annotation.AType.Measurements) ad = new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements, spec); +if (ad != null) dialog.setData(ad); +this.addDialog(iSpec, type, dialog); +dialog.reEnable(); +return dialog; +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "printPdf", +function(pdfCreator, pl){ +var isPortrait = !pl.layout.equals("landscape"); +this.print(pdfCreator, (isPortrait ? pl.imageableHeight : pl.imageableWidth), (isPortrait ? pl.imageableWidth : pl.imageableHeight), pl.imageableX, pl.imageableY, pl.paperHeight, pl.paperWidth, isPortrait, 0); +}, "J.api.GenericGraphics,JSV.common.PrintLayout"); +Clazz_defineMethod(c$, "print", +function(g, height, width, x, y, paperHeight, paperWidth, isPortrait, pi){ +this.g2d = this.g2d0; +if (pi == 0) { +this.isPrinting = true; +var addFilePath = false; +if (Clazz_instanceOf(g,"J.api.GenericGraphics")) { +this.g2d = g; +g = this.gMain; +}if (this.printGraphPosition.equals("default")) { +if (isPortrait) { +height = 450; +width = 280; +} else { +height = 280; +width = 450; +}} else if (this.printGraphPosition.equals("fit to page")) { +addFilePath = true; +} else { +if (isPortrait) { +height = 450; +width = 280; +x = Clazz_doubleToInt(Clazz_doubleToInt(paperWidth - width) / 2); +y = Clazz_doubleToInt(Clazz_doubleToInt(paperHeight - height) / 2); +} else { +height = 280; +width = 450; +y = Clazz_doubleToInt(Clazz_doubleToInt(paperWidth - 280) / 2); +x = Clazz_doubleToInt(Clazz_doubleToInt(paperHeight - 450) / 2); +}}this.g2d.translateScale(g, x, y, 0.1); +this.setTaintedAll(); +this.drawGraph(g, g, g, Clazz_doubleToInt(width), Clazz_doubleToInt(height), addFilePath); +this.isPrinting = false; +return 0; +}this.isPrinting = false; +return 1; +}, "~O,~N,~N,~N,~N,~N,~N,~B,~N"); +Clazz_overrideMethod(c$, "keyPressed", +function(code, modifiers){ +if (this.isPrinting) return false; +this.checkKeyControl(code, true); +switch (code) { +case 27: +case 127: +case 8: +this.escapeKeyPressed(code != 27); +this.isIntegralDrag = false; +this.setTaintedAll(); +this.repaint(); +return true; +} +var scaleFactor = 0; +var doConsume = false; +if (modifiers == 0) { +switch (code) { +case 37: +case 39: +this.doMouseMoved((code == 39 ? ++this.mouseX : --this.mouseX), this.mouseY); +this.repaint(); +doConsume = true; +break; +case 33: +case 34: +scaleFactor = (code == 33 ? JSV.common.GraphSet.RT2 : 1 / JSV.common.GraphSet.RT2); +doConsume = true; +break; +case 40: +case 38: +var dir = (code == 40 ? -1 : 1); +if (this.getSpectrumAt(0).getSubSpectra() == null) { +this.notifySubSpectrumChange(dir, null); +} else { +this.advanceSubSpectrum(dir); +this.setTaintedAll(); +this.repaint(); +}doConsume = true; +break; +} +} else if (this.checkMod(code, 2)) { +switch (code) { +case 40: +case 38: +case 45: +case 61: +scaleFactor = (code == 61 || code == 38 ? JSV.common.GraphSet.RT2 : 1 / JSV.common.GraphSet.RT2); +doConsume = true; +break; +case 37: +case 39: +this.toPeak(code == 39 ? 1 : -1); +doConsume = true; +break; +} +}if (scaleFactor != 0) { +this.scaleYBy(scaleFactor); +this.setTaintedAll(); +this.repaint(); +}return doConsume; +}, "~N,~N"); +Clazz_overrideMethod(c$, "keyReleased", +function(keyCode){ +if (this.isPrinting) return; +this.checkKeyControl(keyCode, false); +}, "~N"); +Clazz_overrideMethod(c$, "keyTyped", +function(ch, mods){ +if (this.isPrinting) return false; +switch (ch) { +case 110: +if (mods != 0) break; +this.normalizeIntegral(); +return true; +case 26: +if (mods != 2) break; +this.previousView(); +this.setTaintedAll(); +this.repaint(); +return true; +case 25: +if (mods != 2) break; +this.nextView(); +this.setTaintedAll(); +this.repaint(); +return true; +} +return false; +}, "~N,~N"); +Clazz_overrideMethod(c$, "mouseAction", +function(mode, time, x, y, countIgnored, buttonMods){ +if (this.isPrinting) return; +switch (mode) { +case 4: +if (!this.checkMod(buttonMods, 16)) return; +this.doMousePressed(x, y); +break; +case 5: +this.doMouseReleased(x, y, this.checkMod(buttonMods, 16)); +this.setTaintedAll(); +this.repaint(); +break; +case 1: +this.doMouseDragged(x, y); +this.repaint(); +break; +case 0: +this.jsvp.getFocusNow(false); +if ((buttonMods & 28) != 0) { +this.doMouseDragged(x, y); +this.repaint(); +return; +}this.doMouseMoved(x, y); +if (this.coordStr != null) this.repaint(); +break; +case 2: +if (this.checkMod(buttonMods, 4)) { +this.jsvp.showMenu(x, y); +return; +}this.ctrlPressed = false; +this.doMouseClicked(x, y, this.updateControlPressed(buttonMods)); +break; +} +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "checkMod", +function(buttonMods, mask){ +return ((buttonMods & mask) == mask); +}, "~N,~N"); +Clazz_defineMethod(c$, "checkKeyControl", +function(keyCode, isPressed){ +switch (keyCode) { +case 17: +case 157: +this.ctrlPressed = isPressed; +break; +case 16: +this.shiftPressed = isPressed; +break; +} +}, "~N,~B"); +Clazz_defineMethod(c$, "updateControlPressed", +function(mods){ +return (this.ctrlPressed = new Boolean (this.ctrlPressed |(this.checkMod(mods, 2) || this.checkMod(mods, 20))).valueOf()); +}, "~N"); +Clazz_overrideMethod(c$, "mouseEnterExit", +function(time, x, y, isExit){ +if (isExit) { +this.thisWidget = null; +this.isIntegralDrag = false; +this.integralShiftMode = 0; +} else { +try { +this.jsvp.getFocusNow(false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("pd " + this + " cannot focus"); +} else { +throw e; +} +} +}}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "setSolutionColor", +function(what){ +var isNone = (what.indexOf("none") >= 0); +var asFitted = (what.indexOf("false") < 0); +if (what.indexOf("all") < 0) { +var color = (isNone ? -1 : this.vwr.getSolutionColor(asFitted)); +this.getSpectrum().setFillColor(color == -1 ? null : this.vwr.parameters.getColor1(color)); +} else { +var vi = JSV.common.JSViewer.getInterface("JSV.common.Visible"); +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setSolutionColor(vi, isNone, asFitted); + +}}, "~S"); +Clazz_defineMethod(c$, "setIRMode", +function(mode, type){ +for (var i = this.graphSets.size(); --i >= 0; ) this.graphSets.get(i).setIRMode(mode, type); + +}, "JSV.common.Spectrum.IRMode,~S"); +Clazz_defineMethod(c$, "closeSpectrum", +function(){ +this.vwr.close("views"); +this.vwr.close(this.getSourceID()); +this.vwr.execView("*", true); +}); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.PanelData, "LinkMode", Enum); +c$.getMode = Clazz_defineMethod(c$, "getMode", +function(abc){ +if (abc.equals("*")) return JSV.common.PanelData.LinkMode.ALL; +for (var mode, $mode = 0, $$mode = JSV.common.PanelData.LinkMode.values(); $mode < $$mode.length && ((mode = $$mode[$mode]) || true); $mode++) if (mode.name().equalsIgnoreCase(abc)) return mode; + +return JSV.common.PanelData.LinkMode.NONE; +}, "~S"); +Clazz_defineEnumConstant(c$, "ALL", 0, []); +Clazz_defineEnumConstant(c$, "NONE", 1, []); +Clazz_defineEnumConstant(c$, "AB", 2, []); +Clazz_defineEnumConstant(c$, "ABC", 3, []); +/*eoif2*/})(); +/*if2*/;(function(){ +var c$ = Clazz_declareType(JSV.common.PanelData, "Mouse", Enum); +Clazz_defineEnumConstant(c$, "UP", 0, []); +Clazz_defineEnumConstant(c$, "DOWN", 1, []); +/*eoif2*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.PanelNode", ["JU.SB", "JSV.common.Parameters"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.treeNode = null; +this.source = null; +this.fileName = null; +this.jsvp = null; +this.id = null; +this.legend = null; +this.isSelected = false; +this.isView = false; +this.isSimulation = false; +this.frameTitle = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PanelNode", null); +Clazz_makeConstructor(c$, +function(id, fileName, source, jsvp){ +this.id = id; +this.source = source; +this.fileName = fileName; +this.isSimulation = (source.getFilePath().indexOf("http://SIMULATION/") >= 0); +this.jsvp = jsvp; +if (jsvp != null) { +this.pd().getSpectrumAt(0).setId(id); +this.frameTitle = jsvp.getTitle(); +}}, "~S,~S,JSV.source.JDXSource,JSV.api.JSVPanel"); +Clazz_defineMethod(c$, "setTreeNode", +function(node){ +this.treeNode = node; +}, "JSV.api.JSVTreeNode"); +Clazz_defineMethod(c$, "getTreeNode", +function(){ +return this.treeNode; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +this.source.dispose(); +if (this.jsvp != null) this.jsvp.dispose(); +this.source = null; +this.jsvp = null; +this.legend = null; +}); +Clazz_defineMethod(c$, "pd", +function(){ +return this.jsvp.getPanelData(); +}); +Clazz_defineMethod(c$, "getSpectrum", +function(){ +return this.pd().getSpectrum(); +}); +Clazz_defineMethod(c$, "setLegend", +function(legend){ +if (this.legend != null) this.legend.dispose(); +this.legend = legend; +return legend; +}, "JSV.dialog.JSVDialog"); +Clazz_overrideMethod(c$, "toString", +function(){ +return ((this.id == null ? "" : this.id + ": ") + (this.frameTitle == null ? this.fileName : this.frameTitle)); +}); +c$.findSourceByNameOrId = Clazz_defineMethod(c$, "findSourceByNameOrId", +function(id, panelNodes){ +for (var i = panelNodes.size(); --i >= 0; ) { +var node = panelNodes.get(i); +if (id.equals(node.id) || id.equals(node.source.getSpectra().get(0).sourceID) || node.source.matchesFilePath(id)) return node.source; +} +for (var i = panelNodes.size(); --i >= 0; ) { +var node = panelNodes.get(i); +if (id.equals(node.fileName)) return node.source; +} +return null; +}, "~S,JU.Lst"); +c$.findNodeById = Clazz_defineMethod(c$, "findNodeById", +function(id, panelNodes){ +if (id != null) for (var i = panelNodes.size(); --i >= 0; ) if (id.equals(panelNodes.get(i).id) || id.equals(panelNodes.get(i).frameTitle)) return panelNodes.get(i); + +return null; +}, "~S,JU.Lst"); +c$.findNode = Clazz_defineMethod(c$, "findNode", +function(jsvp, panelNodes){ +for (var i = panelNodes.size(); --i >= 0; ) if (panelNodes.get(i).jsvp === jsvp) return panelNodes.get(i); + +return null; +}, "JSV.api.JSVPanel,JU.Lst"); +c$.getSpectrumListAsString = Clazz_defineMethod(c$, "getSpectrumListAsString", +function(panelNodes){ +var sb = new JU.SB(); +for (var i = 0; i < panelNodes.size(); i++) { +var node = panelNodes.get(i); +if (!node.isView) sb.append(" ").append(node.id); +} +return sb.toString().trim(); +}, "JU.Lst"); +c$.isOpen = Clazz_defineMethod(c$, "isOpen", +function(panelNodes, filePath){ +var pt = -1; +if (filePath != null) for (var i = panelNodes.size(); --i >= 0; ) { +if (panelNodes.get(i).source.matchesFilePath(filePath) || filePath.equals(panelNodes.get(i).frameTitle)) return pt; +} +return -1; +}, "JU.Lst,~S"); +Clazz_defineMethod(c$, "setFrameTitle", +function(name){ +this.frameTitle = name; +}, "~S"); +c$.getLastFileFirstNode = Clazz_defineMethod(c$, "getLastFileFirstNode", +function(panelNodes){ +var n = panelNodes.size(); +var node = (n == 0 ? null : panelNodes.get(n - 1)); +for (var i = n - 1; --i >= 0; ) { +if (panelNodes.get(i).source !== node.source) break; +node = panelNodes.get(i); +} +return (node == null ? null : node.jsvp); +}, "JU.Lst"); +Clazz_defineMethod(c$, "getInfo", +function(key){ +var info = this.pd().getInfo(false, key); +JSV.common.Parameters.putInfo(key, info, "panelId", this.id); +JSV.common.Parameters.putInfo(key, info, "panelFileName", this.fileName); +JSV.common.Parameters.putInfo(key, info, "panelSource", this.source.getFilePath()); +return info; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.Parameters", ["java.util.Hashtable", "JSV.common.ScriptToken"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.integralMinY = 0.1; +this.integralRange = 50.0; +this.integralOffset = 30.0; +this.integralDrawAll = false; +this.viewOffset = 0; +this.peakListThreshold = NaN; +this.peakListInterpolation = "parabolic"; +this.precision = 2; +this.htBooleans = null; +Clazz_instantialize(this, arguments);}, JSV.common, "Parameters", null); +Clazz_makeConstructor(c$, +function(){ +this.htBooleans = new java.util.Hashtable(); +this.setBoolean(JSV.common.ScriptToken.TITLEON, true); +this.setBoolean(JSV.common.ScriptToken.ENABLEZOOM, true); +this.setBoolean(JSV.common.ScriptToken.DISPLAY2D, true); +this.setBoolean(JSV.common.ScriptToken.COORDINATESON, true); +this.setBoolean(JSV.common.ScriptToken.PEAKTABSON, true); +this.setBoolean(JSV.common.ScriptToken.POINTSONLY, false); +this.setBoolean(JSV.common.ScriptToken.GRIDON, true); +this.setBoolean(JSV.common.ScriptToken.XSCALEON, true); +this.setBoolean(JSV.common.ScriptToken.YSCALEON, true); +this.setBoolean(JSV.common.ScriptToken.XUNITSON, true); +this.setBoolean(JSV.common.ScriptToken.YUNITSON, true); +}); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = name; +return this; +}, "~S"); +Clazz_defineMethod(c$, "getBooleans", +function(){ +return this.htBooleans; +}); +Clazz_defineMethod(c$, "setBoolean", +function(st, val){ +this.htBooleans.put(st, Boolean.$valueOf(val)); +return val; +}, "JSV.common.ScriptToken,~B"); +Clazz_defineMethod(c$, "getBoolean", +function(t){ +return Boolean.TRUE === this.htBooleans.get(t); +}, "JSV.common.ScriptToken"); +c$.isTrue = Clazz_defineMethod(c$, "isTrue", +function(value){ +return (value.length == 0 || Boolean.parseBoolean(value)); +}, "~S"); +c$.getTFToggle = Clazz_defineMethod(c$, "getTFToggle", +function(value){ +return (value.equalsIgnoreCase("TOGGLE") ? null : JSV.common.Parameters.isTrue(value) ? Boolean.TRUE : Boolean.FALSE); +}, "~S"); +Clazz_defineMethod(c$, "setP", +function(pd, st, value){ +switch (st) { +default: +return; +case JSV.common.ScriptToken.COORDINATESON: +case JSV.common.ScriptToken.DISPLAY1D: +case JSV.common.ScriptToken.DISPLAY2D: +case JSV.common.ScriptToken.ENABLEZOOM: +case JSV.common.ScriptToken.GRIDON: +case JSV.common.ScriptToken.POINTSONLY: +case JSV.common.ScriptToken.PEAKTABSON: +case JSV.common.ScriptToken.REVERSEPLOT: +case JSV.common.ScriptToken.TITLEON: +case JSV.common.ScriptToken.TITLEBOLDON: +case JSV.common.ScriptToken.XSCALEON: +case JSV.common.ScriptToken.XUNITSON: +case JSV.common.ScriptToken.YSCALEON: +case JSV.common.ScriptToken.YUNITSON: +var tfToggle = JSV.common.Parameters.getTFToggle(value); +if (tfToggle != null) { +this.setBoolean(st, tfToggle.booleanValue()); +break; +}if (pd == null) return; +var b = !pd.getBoolean(st); +switch (st) { +default: +break; +case JSV.common.ScriptToken.XSCALEON: +this.setBoolean(JSV.common.ScriptToken.XUNITSON, b); +pd.setBoolean(JSV.common.ScriptToken.XUNITSON, b); +break; +case JSV.common.ScriptToken.YSCALEON: +this.setBoolean(JSV.common.ScriptToken.YUNITSON, b); +pd.setBoolean(JSV.common.ScriptToken.YUNITSON, b); +break; +} +this.setBoolean(st, b); +break; +} +if (pd == null) return; +pd.setBooleans(this, st); +}, "JSV.common.PanelData,JSV.common.ScriptToken,~S"); +c$.isMatch = Clazz_defineMethod(c$, "isMatch", +function(match, key){ +return match == null || key.equalsIgnoreCase(match); +}, "~S,~S"); +c$.putInfo = Clazz_defineMethod(c$, "putInfo", +function(match, info, key, value){ +if (value != null && JSV.common.Parameters.isMatch(match, key)) info.put(match == null ? key : match, value); +}, "~S,java.util.Map,~S,~O"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.MeasurementData"], "JSV.common.PeakData", ["JU.DF", "JSV.common.Coordinate", "$.PeakPick"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.thresh = 0; +this.minY = 0; +this.maxY = 0; +Clazz_instantialize(this, arguments);}, JSV.common, "PeakData", JSV.common.MeasurementData); +Clazz_defineMethod(c$, "getThresh", +function(){ +return this.thresh; +}); +Clazz_overrideMethod(c$, "getDataHeader", +function(){ +return (this.spec.isHNMR() ? JSV.common.PeakData.HNMR_HEADER : Clazz_newArray(-1, ["peak", this.spec.getXUnits(), this.spec.getYUnits()])); +}); +Clazz_overrideMethod(c$, "getMeasurementListArray", +function(units){ +var data = new Array(this.size()); +var last = Clazz_newDoubleArray(-1, [-1.0E100, 1e100, 1e100]); +var ddata; +for (var pt = 0, i = this.size(); --i >= 0; pt++) { +ddata = this.spec.getPeakListArray(this.get(i), last, this.maxY); +if (ddata.length == 2) data[pt] = Clazz_newArray(-1, ["" + (pt + 1), JU.DF.formatDecimalDbl(ddata[0], 2), JU.DF.formatDecimalDbl(ddata[1], 4)]); + else data[pt] = Clazz_newArray(-1, ["" + (pt + 1), JU.DF.formatDecimalDbl(ddata[0], 4), JU.DF.formatDecimalDbl(ddata[1], 4), JU.DF.formatDecimalDbl(ddata[2], 2), (ddata[3] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[3], 2)), (ddata[4] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[4], 2)), (ddata[5] == 0 ? "" : JU.DF.formatDecimalDbl(ddata[5], 2))]); +} +return data; +}, "~S"); +Clazz_overrideMethod(c$, "getMeasurementListArrayReal", +function(units){ +var data = Clazz_newDoubleArray (this.size(), 0); +var last = Clazz_newDoubleArray(-1, [-1.0E100, 1e100, 1e100]); +for (var pt = 0, i = this.size(); --i >= 0; pt++) data[pt] = this.spec.getPeakListArray(this.get(i), last, this.maxY); + +return data; +}, "~S"); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("interpolation", this.myParams.peakListInterpolation); +info.put("threshold", Double.$valueOf(this.myParams.peakListThreshold)); +Clazz_superCall(this, JSV.common.PeakData, "getInfo", [info]); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setPeakList", +function(p, precision, view){ +this.precision = (precision == -2147483648 ? this.spec.getDefaultUnitPrecision() : precision); +var xyCoords = this.spec.getXYCoords(); +if (xyCoords.length < 3) return; +this.clear(); +if (p != null) { +this.myParams.peakListInterpolation = p.peakListInterpolation; +this.myParams.peakListThreshold = p.peakListThreshold; +}var doInterpolate = (this.myParams.peakListInterpolation.equals("parabolic")); +var isInverted = this.spec.isInverted(); +this.minY = view.minYOnScale; +this.maxY = view.maxYOnScale; +var minX = view.minXOnScale; +var maxX = view.maxXOnScale; +this.thresh = this.myParams.peakListThreshold; +if (Double.isNaN(this.thresh)) this.thresh = this.myParams.peakListThreshold = (this.minY + this.maxY) / 2; +var yLast = 0; +var y3 = Clazz_newDoubleArray(-1, [xyCoords[0].getYVal(), yLast = xyCoords[1].getYVal(), 0]); +var n = 0; +if (isInverted) for (var i = 2; i < xyCoords.length; i++) { +var y = y3[i % 3] = xyCoords[i].getYVal(); +if (yLast < this.thresh && y3[(i - 2) % 3] > yLast && yLast < y) { +var x = (doInterpolate ? JSV.common.Coordinate.parabolicInterpolation(xyCoords, i - 1) : xyCoords[i - 1].getXVal()); +if (x >= minX || x <= maxX) { +var m = new JSV.common.PeakPick().setValue(x, y, this.spec, null, 0); +this.addLast(m); +if (++n == 100) break; +}}yLast = y; +} + else for (var i = 2; i < xyCoords.length; i++) { +var y = y3[i % 3] = xyCoords[i].getYVal(); +if (yLast > this.thresh && y3[(i - 2) % 3] < yLast && yLast > y) { +var x = (doInterpolate ? JSV.common.Coordinate.parabolicInterpolation(xyCoords, i - 1) : xyCoords[i - 1].getXVal()); +if (x >= minX && x <= maxX) { +var m = new JSV.common.PeakPick().setValue(x, y, this.spec, JU.DF.formatDecimalDbl(x, precision), x); +this.addLast(m); +if (++n == 100) break; +}}yLast = y; +} +}, "JSV.common.Parameters,~N,JSV.common.ScaleData"); +c$.HNMR_HEADER = Clazz_newArray(-1, ["peak", "shift/ppm", "intens", "shift/hz", "diff/hz", "2-diff", "3-diff"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.PeakInfo", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xMin = 0; +this.xMax = 0; +this.yMin = 0; +this.yMax = 0; +this.px0 = 0; +this.px1 = 0; +this.stringInfo = null; +this.type = null; +this.type2 = null; +this.index = null; +this.file = null; +this.filePathForwardSlash = null; +this.title = null; +this.model = null; +this.atoms = null; +this.id = null; +this.spectrum = null; +this._match = null; +this.atomKey = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PeakInfo", null); +/*LV!1824 unnec constructor*/Clazz_makeConstructor(c$, +function(s){ +this.stringInfo = s; +this.type = JU.PT.getQuotedAttribute(s, "type"); +if (this.type == null) this.type = ""; +this.type = this.type.toUpperCase(); +var pt = this.type.indexOf('/'); +this.type2 = (pt < 0 ? "" : JSV.common.PeakInfo.fixType(this.type.substring(this.type.indexOf('/') + 1))); +if (pt >= 0) this.type = JSV.common.PeakInfo.fixType(this.type.substring(0, pt)) + "/" + this.type2; + else this.type = JSV.common.PeakInfo.fixType(this.type); +this.id = JU.PT.getQuotedAttribute(s, "id"); +this.index = JU.PT.getQuotedAttribute(s, "index"); +this.file = JU.PT.getQuotedAttribute(s, "file"); +System.out.println("pi file=" + this.file); +this.filePathForwardSlash = (this.file == null ? null : this.file.$replace('\\', '/')); +this.model = JU.PT.getQuotedAttribute(s, "model"); +var isBaseModel = s.contains("baseModel=\"\""); +if (!isBaseModel) this.atoms = JU.PT.getQuotedAttribute(s, "atoms"); +this.atomKey = "," + this.atoms + ","; +this.title = JU.PT.getQuotedAttribute(s, "title"); +this._match = JU.PT.getQuotedAttribute(s, "_match"); +this.xMax = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "xMax")); +this.xMin = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "xMin")); +this.yMax = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "yMax")); +this.yMin = JU.PT.parseFloat(JU.PT.getQuotedAttribute(s, "yMin")); +}, "~S"); +Clazz_defineMethod(c$, "isClearAll", +function(){ +return (this.spectrum == null); +}); +Clazz_defineMethod(c$, "getType", +function(){ +return this.type; +}); +Clazz_defineMethod(c$, "getAtoms", +function(){ +return this.atoms; +}); +Clazz_defineMethod(c$, "getXMax", +function(){ +return this.xMax; +}); +Clazz_defineMethod(c$, "getXMin", +function(){ +return this.xMin; +}); +Clazz_defineMethod(c$, "getYMin", +function(){ +return this.yMin; +}); +Clazz_defineMethod(c$, "getYMax", +function(){ +return this.yMax; +}); +Clazz_defineMethod(c$, "getX", +function(){ +return (this.xMax + this.xMin) / 2; +}); +Clazz_defineMethod(c$, "getMatch", +function(){ +return this._match; +}); +c$.fixType = Clazz_defineMethod(c$, "fixType", +function(type){ +return (type.equals("HNMR") ? "1HNMR" : type.equals("CNMR") ? "13CNMR" : type); +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.stringInfo; +}); +Clazz_defineMethod(c$, "getIndex", +function(){ +return this.index; +}); +Clazz_defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz_defineMethod(c$, "checkFileIndex", +function(filePath, sIndex, sAtomKey){ +return (sAtomKey != null ? this.atomKey.indexOf(sAtomKey) >= 0 : sIndex.equals(this.index) && (filePath.equals(this.file) || filePath.equals(this.filePathForwardSlash))); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "checkFileTypeModel", +function(filePath, type, model){ +return filePath.equals(this.file) && this.checkModel(model) && this.type.endsWith(type); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "checkTypeModel", +function(type, model){ +return this.checkType(type) && this.checkModel(model); +}, "~S,~S"); +Clazz_defineMethod(c$, "checkModel", +function(model){ +return (model != null && model.equals(this.model)); +}, "~S"); +Clazz_defineMethod(c$, "checkType", +function(type){ +return (type.endsWith(this.type)); +}, "~S"); +Clazz_defineMethod(c$, "checkTypeMatch", +function(pi){ +return (this.checkType(pi.type) && (this.checkId(pi._match) || this.checkModel(pi._match) || this.title.toUpperCase().indexOf(pi._match) >= 0)); +}, "JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "checkId", +function(match){ +if (match == null) return false; +return (this.id != null && match.toUpperCase().startsWith("ID=") && match.substring(3).equals(this.id) || (match = match.toUpperCase()).startsWith("INDEX=") && match.equals("INDEX=" + this.index) || match.startsWith("#=") && match.equals("#=" + this.index)); +}, "~S"); +Clazz_defineMethod(c$, "getModel", +function(){ +return this.model; +}); +Clazz_defineMethod(c$, "getFilePath", +function(){ +return this.file; +}); +Clazz_defineMethod(c$, "autoSelectOnLoad", +function(){ +return (this.type.startsWith("GC")); +}); +Clazz_defineMethod(c$, "setPixelRange", +function(x0, x1){ +this.px0 = x0; +this.px1 = x1; +}, "~N,~N"); +Clazz_defineMethod(c$, "checkRange", +function(xPixel, xVal){ +if (xPixel != 2147483647 ? (this.px0 <= xPixel && this.px1 >= xPixel) : xVal >= this.xMin && xVal <= this.xMax) { +return Math.abs(xVal - this.getX()); +}return 1e100; +}, "~N,~N"); +Clazz_defineMethod(c$, "getXPixel", +function(){ +return Clazz_doubleToInt((this.px0 + this.px1) / 2); +}); +c$.nullPeakInfo = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Measurement"], "JSV.common.PeakPick", null, function(){ +var c$ = Clazz_declareType(JSV.common, "PeakPick", JSV.common.Measurement); +Clazz_defineMethod(c$, "setValue", +function(x, y, spec, text, value){ +if (text == null) { +this.set(x, y); +this.setPt2(spec, false); +} else { +this.setA(x, y, spec, text, false, false, 0, 6); +this.value = value; +this.setPt2(this.getXVal(), this.getYVal()); +}return this; +}, "~N,~N,JSV.common.Spectrum,~S,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.util.EventObject"], "JSV.common.PeakPickEvent", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.coord = null; +this.peakInfo = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PeakPickEvent", java.util.EventObject); +Clazz_makeConstructor(c$, +function(source, coord, peakInfo){ +Clazz_superConstructor(this, JSV.common.PeakPickEvent, [source]); +this.coord = coord; +this.peakInfo = (peakInfo == null ? null : peakInfo); +}, "~O,JSV.common.Coordinate,JSV.common.PeakInfo"); +Clazz_defineMethod(c$, "getCoord", +function(){ +return this.coord; +}); +Clazz_defineMethod(c$, "getPeakInfo", +function(){ +return this.peakInfo; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return (this.peakInfo == null ? null : this.peakInfo.toString()); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.common.Coordinate", "$.ScriptToken"], "JSV.common.PlotWidget", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xPixel0 = 0; +this.yPixel0 = 0; +this.xPixel1 = 0; +this.yPixel1 = 0; +this.isPin = false; +this.isPinOrCursor = false; +this.isXtype = false; +this.is2D = false; +this.is2Donly = false; +this.isEnabled = true; +this.isVisible = false; +this.name = null; +this.color = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PlotWidget", JSV.common.Coordinate); +Clazz_prepareFields (c$, function(){ +this.color = JSV.common.ScriptToken.PLOTCOLOR; +}); +Clazz_makeConstructor(c$, +function(name){ +Clazz_superConstructor (this, JSV.common.PlotWidget, []); +this.name = name; +this.isPin = (name.charAt(0) == 'p'); +this.isPinOrCursor = (name.charAt(0) != 'z'); +this.isXtype = (name.indexOf("x") >= 0); +this.is2D = (name.indexOf("2D") >= 0); +this.is2Donly = (this.is2D && name.charAt(0) == 'p'); +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.name + (!this.isPinOrCursor ? "" + this.xPixel0 + " " + this.yPixel0 + " / " + this.xPixel1 + " " + this.yPixel1 : " x=" + this.getXVal() + "/" + this.xPixel0 + " y=" + this.getYVal() + "/" + this.yPixel0); +}); +Clazz_defineMethod(c$, "selected", +function(xPixel, yPixel){ +return (this.isVisible && Math.abs(xPixel - this.xPixel0) < 5 && Math.abs(yPixel - this.yPixel0) < 5); +}, "~N,~N"); +Clazz_defineMethod(c$, "setX", +function(x, xPixel){ +this.setXVal(x); +this.xPixel0 = this.xPixel1 = xPixel; +}, "~N,~N"); +Clazz_defineMethod(c$, "setY", +function(y, yPixel){ +this.setYVal(y); +this.yPixel0 = this.yPixel1 = yPixel; +}, "~N,~N"); +Clazz_defineMethod(c$, "getValue", +function(){ +return (this.isXtype ? this.getXVal() : this.getYVal()); +}); +Clazz_defineMethod(c$, "setEnabled", +function(enabled){ +this.isEnabled = enabled; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.imageableX = 0; +this.imageableY = 0; +this.paperHeight = 0; +this.paperWidth = 0; +this.imageableHeight = 0; +this.imageableWidth = 0; +this.layout = "landscape"; +this.position = "fit to page"; +this.showGrid = true; +this.showXScale = true; +this.showYScale = true; +this.showTitle = true; +this.font = "Helvetica"; +this.paper = null; +this.asPDF = true; +this.title = null; +this.date = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PrintLayout", null); +Clazz_prepareFields (c$, function(){ +this.paperHeight = Clazz_floatToInt(Math.min(11, 11.69) * 72); +this.paperWidth = Clazz_floatToInt(Math.min(8.5, 8.27) * 72); +this.imageableHeight = this.paperHeight; +this.imageableWidth = this.paperWidth; +}); +Clazz_makeConstructor(c$, +function(pd){ +if (pd != null) { +this.asPDF = true; +pd.setDefaultPrintOptions(this); +}}, "JSV.common.PanelData"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.RepaintManager", ["JSV.common.JSViewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.repaintPending = false; +this.vwr = null; +Clazz_instantialize(this, arguments);}, JSV.common, "RepaintManager", null); +Clazz_makeConstructor(c$, +function(viewer){ +this.vwr = viewer; +}, "JSV.common.JSViewer"); +Clazz_defineMethod(c$, "refresh", +function(){ +if (this.repaintPending) { +return false; +}this.repaintPending = true; +var applet = this.vwr.html5Applet; +var jmol = (JSV.common.JSViewer.isJS && !JSV.common.JSViewer.isSwingJS ? JSV.common.JSViewer.jmolObject : null); +if (jmol == null) { +this.vwr.selectedPanel.repaint(); +} else { +jmol.repaint(applet, false); +this.repaintDone(); +}return true; +}); +Clazz_defineMethod(c$, "repaintDone", +function(){ +this.repaintPending = false; +this.notify(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.ScaleData", ["JSV.common.Coordinate"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.initMinYOnScale = 0; +this.initMaxYOnScale = 0; +this.initMinY = 0; +this.initMaxY = 0; +this.startDataPointIndex = 0; +this.endDataPointIndex = 0; +this.pointCount = 0; +this.minX = 0; +this.maxX = 0; +this.firstX = NaN; +this.minXOnScale = 0; +this.maxXOnScale = 0; +this.specShift = 0; +this.precision = null; +this.exportPrecision = null; +this.steps = null; +this.minorTickCounts = null; +this.minYOnScale = 0; +this.maxYOnScale = 0; +this.minY = 0; +this.maxY = 0; +this.isShiftZoomedY = false; +this.spectrumScaleFactor = 1; +this.spectrumYRef = 0; +this.userYFactor = 1; +this.firstY = 0; +this.minY2D = 0; +this.maxY2D = 0; +this.xFactorForScale = 0; +this.yFactorForScale = 0; +Clazz_instantialize(this, arguments);}, JSV.common, "ScaleData", null); +Clazz_prepareFields (c$, function(){ +this.precision = Clazz_newIntArray (2, 0); +this.exportPrecision = Clazz_newIntArray (2, 0); +this.steps = Clazz_newDoubleArray (2, 0); +this.minorTickCounts = Clazz_newIntArray (2, 0); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_makeConstructor(c$, +function(iStart, iEnd){ +this.startDataPointIndex = iStart; +this.endDataPointIndex = iEnd; +this.pointCount = this.endDataPointIndex - this.startDataPointIndex + 1; +}, "~N,~N"); +Clazz_makeConstructor(c$, +function(coords, start, end, isContinuous, isInverted){ +this.minX = JSV.common.Coordinate.getMinX(coords, start, end); +this.maxX = JSV.common.Coordinate.getMaxX(coords, start, end); +this.minY = JSV.common.Coordinate.getMinY(coords, start, end); +if (this.minY > 0 && !isContinuous) this.minY = 0; +this.maxY = JSV.common.Coordinate.getMaxY(coords, start, end); +this.setScale(isContinuous, isInverted); +}, "~A,~N,~N,~B,~B"); +Clazz_defineMethod(c$, "setScale", +function(isContinuous, isInverted){ +this.setXScale(); +if (!isContinuous) this.maxXOnScale += this.steps[0] / 2; +this.setYScale(this.minY, this.maxY, true, isInverted); +}, "~B,~B"); +Clazz_defineMethod(c$, "setXScale", +function(){ +var xStep = this.setScaleParams(this.minX, this.maxX, 0); +this.firstX = Math.floor(this.minX / xStep) * xStep; +if (Math.abs((this.minX - this.firstX) / xStep) > 0.0001) this.firstX += xStep; +this.minXOnScale = this.minX; +this.maxXOnScale = this.maxX; +}); +Clazz_defineMethod(c$, "isYZeroOnScale", +function(){ +return (this.minYOnScale < this.spectrumYRef && this.maxYOnScale > this.spectrumYRef); +}); +Clazz_defineMethod(c$, "setYScale", +function(minY, maxY, setScaleMinMax, isInverted){ +if (minY == 0 && maxY == 0) maxY = 1; +if (this.isShiftZoomedY) { +minY = this.minYOnScale; +maxY = this.maxYOnScale; +}var yStep = this.setScaleParams(minY, maxY, 1); +var dy = (isInverted ? yStep / 2 : yStep / 4); +var dy2 = (isInverted ? yStep / 4 : yStep / 2); +if (!this.isShiftZoomedY) { +this.minYOnScale = (minY == 0 ? 0 : setScaleMinMax ? dy * Math.floor(minY / dy) : minY); +this.maxYOnScale = (setScaleMinMax ? dy2 * Math.ceil(maxY * 1.05 / dy2) : maxY); +}this.firstY = (minY == 0 ? 0 : Math.floor(minY / dy) * dy); +if (this.minYOnScale < 0 && this.maxYOnScale > 0) { +this.firstY = 0; +while (this.firstY - yStep > this.minYOnScale) this.firstY -= yStep; + +} else if (this.minYOnScale != 0 && Math.abs((minY - this.firstY) / dy) > 0.0001) { +this.firstY += dy; +}if (setScaleMinMax) { +this.initMinYOnScale = this.minYOnScale; +this.initMaxYOnScale = this.maxYOnScale; +this.initMinY = minY; +this.initMaxY = maxY; +}}, "~N,~N,~B,~B"); +Clazz_defineMethod(c$, "scale2D", +function(f){ +var dy = this.maxY - this.minY; +if (f == 1) { +this.maxY = this.initMaxY; +this.minY = this.initMinY; +return; +}this.maxY = this.minY + dy / f; +}, "~N"); +Clazz_defineMethod(c$, "setXRange", +function(x1, x2){ +this.minX = x1; +this.maxX = x2; +this.setXScale(); +}, "~N,~N"); +c$.getXRange = Clazz_defineMethod(c$, "getXRange", +function(i, xyCoords, initX, finalX, iStart, iEnd, startIndices, endIndices){ +var index = 0; +var ptCount = 0; +for (index = iStart; index <= iEnd; index++) { +if (xyCoords[index].getXVal() >= initX) { +startIndices[i] = index; +ptCount = 1; +break; +}} +while (++index <= iEnd && xyCoords[index].getXVal() <= finalX) { +ptCount++; +} +endIndices[i] = startIndices[i] + ptCount - 1; +return ptCount; +}, "~N,~A,~N,~N,~N,~N,~A,~A"); +Clazz_defineMethod(c$, "setScaleParams", +function(min, max, i){ +var dx = (max == min ? 1 : Math.abs(max - min) / 14); +var log = Math.log10(Math.abs(dx)); +var exp = Clazz_doubleToInt(Math.floor(log)); +this.exportPrecision[i] = exp; +this.precision[i] = (exp <= 0 ? Math.min(8, 1 - exp) : exp > 3 ? -2 : 0); +var j = 0; +var dec = Math.pow(10, log - exp); +while (dec > JSV.common.ScaleData.NTICKS[j]) { +j++; +} +this.steps[i] = Math.pow(10, exp) * JSV.common.ScaleData.NTICKS[j]; +log = Math.log10(Math.abs(this.steps[i] * 1.0001e5)); +var mantissa = log - Math.floor(log); +var n = 0; +for (j = 0; j < JSV.common.ScaleData.NTICKS.length; j++) if (Math.abs(mantissa - JSV.common.ScaleData.LOGTICKS[j]) < 0.001) { +n = JSV.common.ScaleData.NTICKS[j]; +break; +} +this.minorTickCounts[i] = n; +return this.steps[i]; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isInRangeX", +function(x){ +return (x >= this.minX && x <= this.maxX); +}, "~N"); +Clazz_defineMethod(c$, "addSpecShift", +function(dx){ +this.specShift += dx; +this.minX += dx; +this.maxX += dx; +this.minXOnScale += dx; +this.maxXOnScale += dx; +this.firstX += dx; +}, "~N"); +Clazz_defineMethod(c$, "getInfo", +function(info){ +info.put("specShift", Double.$valueOf(this.specShift)); +info.put("minX", Double.$valueOf(this.minX)); +info.put("maxX", Double.$valueOf(this.maxX)); +info.put("minXOnScale", Double.$valueOf(this.minXOnScale)); +info.put("maxXOnScale", Double.$valueOf(this.maxXOnScale)); +info.put("minY", Double.$valueOf(this.minY)); +info.put("maxY", Double.$valueOf(this.maxY)); +info.put("minYOnScale", Double.$valueOf(this.minYOnScale)); +info.put("maxYOnScale", Double.$valueOf(this.maxYOnScale)); +info.put("minorTickCountX", Integer.$valueOf(this.minorTickCounts[0])); +info.put("xStep", Double.$valueOf(this.steps[0])); +return info; +}, "java.util.Map"); +Clazz_defineMethod(c$, "setMinMax", +function(minX, maxX, minY, maxY){ +this.minX = minX; +this.maxX = maxX; +this.minY = minY; +this.maxY = maxY; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "toX", +function(xPixel, xPixel1, drawXAxisLeftToRight){ +return this.toXScaled(xPixel, xPixel1, drawXAxisLeftToRight, this.xFactorForScale); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "toX0", +function(xPixel, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toXScaled(xPixel, xPixel1, drawXAxisLeftToRight, (this.maxXOnScale - this.minXOnScale) / (xPixel1 - xPixel0)); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "toXScaled", +function(xPixel, xPixel1, drawXAxisLeftToRight, factor){ +return (drawXAxisLeftToRight ? this.maxXOnScale - (xPixel1 - xPixel) * factor : this.minXOnScale + (xPixel1 - xPixel) * factor); +}, "~N,~N,~B,~N"); +Clazz_defineMethod(c$, "toPixelX", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toPixelXScaled(dx, xPixel0, xPixel1, drawXAxisLeftToRight, this.xFactorForScale); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "toPixelX0", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight){ +return this.toPixelXScaled(dx, xPixel0, xPixel1, drawXAxisLeftToRight, (this.maxXOnScale - this.minXOnScale) / (xPixel1 - xPixel0)); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "toPixelXScaled", +function(dx, xPixel0, xPixel1, drawXAxisLeftToRight, factor){ +var x = Clazz_doubleToInt((dx - this.minXOnScale) / factor); +return (drawXAxisLeftToRight ? xPixel0 + x : xPixel1 - x); +}, "~N,~N,~N,~B,~N"); +Clazz_defineMethod(c$, "toY", +function(yPixel, yPixel0){ +return this.maxYOnScale + (yPixel0 - yPixel) * this.yFactorForScale; +}, "~N,~N"); +Clazz_defineMethod(c$, "toY0", +function(yPixel, yPixel0, yPixel1){ +var factor = (this.maxYOnScale - this.minYOnScale) / (yPixel1 - yPixel0); +var y = this.maxYOnScale + (yPixel0 - yPixel) * factor; +return Math.max(this.minYOnScale, Math.min(y, this.maxYOnScale)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "toPixelY", +function(yVal, yPixel1){ +return (Double.isNaN(yVal) ? -2147483648 : yPixel1 - Clazz_doubleToInt(((yVal - this.spectrumYRef) * this.userYFactor + this.spectrumYRef - this.minYOnScale) / this.yFactorForScale)); +}, "~N,~N"); +Clazz_defineMethod(c$, "toPixelY0", +function(y, yPixel0, yPixel1){ +var factor = (this.maxYOnScale - this.minYOnScale) / (yPixel1 - yPixel0); +return Clazz_doubleToInt(yPixel0 + (this.maxYOnScale - y) / factor); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setXYScale", +function(xPixels, yPixels, isInverted){ +var yRef = this.spectrumYRef; +var f = this.spectrumScaleFactor; +var useInit = (f != 1 || this.isShiftZoomedY); +var minY = (useInit ? this.initMinYOnScale : this.minY); +var maxY = (useInit ? this.initMaxYOnScale : this.maxY); +if (useInit && yRef < minY) yRef = minY; +if (useInit && yRef > maxY) yRef = maxY; +this.setYScale((minY - yRef) / f + yRef, (maxY - yRef) / f + yRef, f == 1, isInverted); +this.xFactorForScale = (this.maxXOnScale - this.minXOnScale) / (xPixels - 1); +this.yFactorForScale = (this.maxYOnScale - this.minYOnScale) / (yPixels - 1); +}, "~N,~N,~B"); +c$.copyScaleFactors = Clazz_defineMethod(c$, "copyScaleFactors", +function(sdFrom, sdTo){ +for (var i = 0; i < sdFrom.length; i++) { +sdTo[i].spectrumScaleFactor = sdFrom[i].spectrumScaleFactor; +sdTo[i].spectrumYRef = sdFrom[i].spectrumYRef; +sdTo[i].userYFactor = sdFrom[i].userYFactor; +sdTo[i].specShift = sdFrom[i].specShift; +sdTo[i].isShiftZoomedY = sdFrom[i].isShiftZoomedY; +} +}, "~A,~A"); +c$.copyYScales = Clazz_defineMethod(c$, "copyYScales", +function(sdFrom, sdTo){ +for (var i = 0; i < sdFrom.length; i++) { +sdTo[i].initMinYOnScale = sdFrom[i].initMinYOnScale; +sdTo[i].initMaxYOnScale = sdFrom[i].initMaxYOnScale; +sdTo[i].minY = sdFrom[i].minY; +sdTo[i].maxY = sdFrom[i].maxY; +if (sdFrom[i].isShiftZoomedY) { +sdTo[i].isShiftZoomedY = true; +sdTo[i].minYOnScale = sdFrom[i].minYOnScale; +sdTo[i].maxYOnScale = sdFrom[i].maxYOnScale; +}} +}, "~A,~A"); +c$.setDataPointIndices = Clazz_defineMethod(c$, "setDataPointIndices", +function(graphsTemp, initX, finalX, minPoints, startIndices, endIndices){ +var nSpectraOK = 0; +var nSpectra = graphsTemp.size(); +for (var i = 0; i < nSpectra; i++) { +var xyCoords = graphsTemp.get(i).getXYCoords(); +if (JSV.common.ScaleData.getXRange(i, xyCoords, initX, finalX, 0, xyCoords.length - 1, startIndices, endIndices) >= minPoints) nSpectraOK++; +} +return (nSpectraOK == nSpectra); +}, "JU.Lst,~N,~N,~N,~A,~A"); +c$.fixScale = Clazz_defineMethod(c$, "fixScale", +function(map){ +if (map.isEmpty()) return; +while (true) { +for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var s = entry.getValue(); +var pt = s.indexOf("E"); +if (pt >= 0) s = s.substring(0, pt); +if (s.indexOf(".") < 0) return; +if (!s.endsWith("0") && !s.endsWith(".")) return; +} +for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var s = entry.getValue(); +var pt = s.indexOf("E"); +if (pt >= 0) entry.setValue(s.substring(0, pt - 1) + s.substring(pt)); + else entry.setValue(s.substring(0, s.length - 1)); +} +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "scaleBy", +function(f){ +if (this.isShiftZoomedY) { +var center = (this.isYZeroOnScale() ? this.spectrumYRef : (this.minYOnScale + this.maxYOnScale) / 2); +this.minYOnScale = center - (center - this.minYOnScale) / f; +this.maxYOnScale = center - (center - this.maxYOnScale) / f; +} else { +this.spectrumScaleFactor *= f; +}}, "~N"); +c$.NTICKS = Clazz_newIntArray(-1, [2, 5, 10, 10]); +c$.LOGTICKS = Clazz_newDoubleArray(-1, [Math.log10(2), Math.log10(5), 0, 1]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["java.lang.Enum"], "JSV.common.ScriptToken", ["java.util.Hashtable", "JU.Lst", "$.PT", "$.SB", "JSV.common.ScriptTokenizer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tip = null; +this.description = null; +Clazz_instantialize(this, arguments);}, JSV.common, "ScriptToken", Enum); +Clazz_defineMethod(c$, "getTip", +function(){ +return " " + (this.tip === "T" ? "TRUE/FALSE/TOGGLE" : this.tip === "TF" ? "TRUE or FALSE" : this.tip === "C" ? "COLOR" : this.tip); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_makeConstructor(c$, +function(tip){ +this.tip = tip; +this.description = ""; +}, "~S"); +Clazz_makeConstructor(c$, +function(tip, description){ +this.tip = tip; +this.description = "-- " + description; +}, "~S,~S"); +c$.getParams = Clazz_defineMethod(c$, "getParams", +function(){ +if (JSV.common.ScriptToken.htParams == null) { +JSV.common.ScriptToken.htParams = new java.util.Hashtable(); +for (var item, $item = 0, $$item = JSV.common.ScriptToken.values(); $item < $$item.length && ((item = $$item[$item]) || true); $item++) JSV.common.ScriptToken.htParams.put(item.name(), item); + +}return JSV.common.ScriptToken.htParams; +}); +c$.getScriptToken = Clazz_defineMethod(c$, "getScriptToken", +function(name){ +var st = JSV.common.ScriptToken.getParams().get(name.toUpperCase()); +return (st == null ? JSV.common.ScriptToken.UNKNOWN : st); +}, "~S"); +c$.getScriptTokenList = Clazz_defineMethod(c$, "getScriptTokenList", +function(name, isExact){ +if (name != null) name = name.toUpperCase(); +var list = new JU.Lst(); +if (isExact) { +var st = JSV.common.ScriptToken.getScriptToken(name); +if (st != null) list.addLast(st); +} else { +for (var entry, $entry = JSV.common.ScriptToken.getParams().entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) if ((name == null || entry.getKey().startsWith(name)) && entry.getValue().tip != null) list.addLast(entry.getValue()); + +}return list; +}, "~S,~B"); +c$.getValue = Clazz_defineMethod(c$, "getValue", +function(st, params, cmd){ +if (!params.hasMoreTokens()) return ""; +switch (st) { +default: +return JSV.common.ScriptTokenizer.nextStringToken(params, true); +case JSV.common.ScriptToken.CLOSE: +case JSV.common.ScriptToken.GETPROPERTY: +case JSV.common.ScriptToken.INTEGRATION: +case JSV.common.ScriptToken.INTEGRATE: +case JSV.common.ScriptToken.JMOL: +case JSV.common.ScriptToken.LABEL: +case JSV.common.ScriptToken.LOAD: +case JSV.common.ScriptToken.PEAK: +case JSV.common.ScriptToken.PLOTCOLORS: +case JSV.common.ScriptToken.YSCALE: +case JSV.common.ScriptToken.WRITE: +return JSV.common.ScriptToken.removeCommandName(cmd); +case JSV.common.ScriptToken.SELECT: +case JSV.common.ScriptToken.OVERLAY: +case JSV.common.ScriptToken.VIEW: +case JSV.common.ScriptToken.ZOOM: +return JSV.common.ScriptToken.removeCommandName(cmd).$replace(',', ' ').trim(); +} +}, "JSV.common.ScriptToken,JSV.common.ScriptTokenizer,~S"); +c$.removeCommandName = Clazz_defineMethod(c$, "removeCommandName", +function(cmd){ +var pt = cmd.indexOf(" "); +if (pt < 0) return ""; +return cmd.substring(pt).trim(); +}, "~S"); +c$.getKey = Clazz_defineMethod(c$, "getKey", +function(eachParam){ +var key = eachParam.nextToken(); +if (key.startsWith("#") || key.startsWith("//")) return null; +if (key.equalsIgnoreCase("SET")) key = eachParam.nextToken(); +return key.toUpperCase(); +}, "JSV.common.ScriptTokenizer"); +c$.getTokens = Clazz_defineMethod(c$, "getTokens", +function(value){ +if (value.startsWith("'") && value.endsWith("'")) value = "\"" + JU.PT.trim(value, "'") + "\""; +var tokens = new JU.Lst(); +var st = new JSV.common.ScriptTokenizer(value, false); +while (st.hasMoreTokens()) { +var s = JSV.common.ScriptTokenizer.nextStringToken(st, false); +if (s.startsWith("//") || s.startsWith("#")) break; +tokens.addLast(s); +} +return tokens; +}, "~S"); +c$.getNameList = Clazz_defineMethod(c$, "getNameList", +function(list){ +if (list.size() == 0) return ""; +var sb = new JU.SB(); +for (var i = 0; i < list.size(); i++) sb.append(",").append(list.get(i).toString()); + +return sb.toString().substring(1); +}, "JU.Lst"); +Clazz_defineMethod(c$, "getDescription", +function(){ +return this.description; +}); +c$.htParams = null; +Clazz_defineEnumConstant(c$, "UNKNOWN", 0, []); +Clazz_defineEnumConstant(c$, "APPLETID", 1, []); +Clazz_defineEnumConstant(c$, "APPLETREADYCALLBACKFUNCTIONNAME", 2, []); +Clazz_defineEnumConstant(c$, "AUTOINTEGRATE", 3, ["TF", "automatically integrate an NMR spectrum"]); +Clazz_defineEnumConstant(c$, "BACKGROUNDCOLOR", 4, ["C", "set the background color"]); +Clazz_defineEnumConstant(c$, "CLOSE", 5, ["spectrumId or fileName or ALL or VIEWS or SIMULATIONS", "close one or more views or simulations"]); +Clazz_defineEnumConstant(c$, "COMPOUNDMENUON", 6, []); +Clazz_defineEnumConstant(c$, "COORDCALLBACKFUNCTIONNAME", 7, []); +Clazz_defineEnumConstant(c$, "COORDINATESCOLOR", 8, ["C", "set the color of the coordinates shown in the upper right-hand corner"]); +Clazz_defineEnumConstant(c$, "COORDINATESON", 9, ["T", "turn on or off the coordinates shown in the upper right-hand corner"]); +Clazz_defineEnumConstant(c$, "DEBUG", 10, ["TF", "turn debugging on and off"]); +Clazz_defineEnumConstant(c$, "DEFAULTLOADSCRIPT", 11, ["\"script...\"", "set the script to be run after each file is loaded"]); +Clazz_defineEnumConstant(c$, "DEFAULTNMRNORMALIZATION", 12, ["maxYvalue", "set the value to be given the largest peak in an HMR spectrum"]); +Clazz_defineEnumConstant(c$, "DISPLAYFONTNAME", 13, []); +Clazz_defineEnumConstant(c$, "DISPLAY1D", 14, ["T", "turn on or off display of 1D spectra when 1D and 2D spectra are loaded"]); +Clazz_defineEnumConstant(c$, "DISPLAY2D", 15, ["T", "turn on or off display of the 2D spectrum when 1D and 2D spectra are loaded"]); +Clazz_defineEnumConstant(c$, "ENABLEZOOM", 16, ["T", "allow or disallow zooming"]); +Clazz_defineEnumConstant(c$, "ENDINDEX", 17, []); +Clazz_defineEnumConstant(c$, "FINDX", 18, ["value", "move the vertical-line cursor to a specific x-axis value"]); +Clazz_defineEnumConstant(c$, "GETPROPERTY", 19, ["[propertyName] or ALL or NAMES", "get a property value or all property values as key/value pairs, or a list of names"]); +Clazz_defineEnumConstant(c$, "GETSOLUTIONCOLOR", 20, [" FILL or FILLNONE or FILLALL or FILLALLNONE", "estimate the solution color for UV/VIS spectra"]); +Clazz_defineEnumConstant(c$, "GRIDCOLOR", 21, ["C", "color of the grid"]); +Clazz_defineEnumConstant(c$, "GRIDON", 22, ["T", "turn the grid lines on or off"]); +Clazz_defineEnumConstant(c$, "HELP", 23, ["[command]", "get this listing or help for a specific command"]); +Clazz_defineEnumConstant(c$, "HIDDEN", 24, []); +Clazz_defineEnumConstant(c$, "HIGHLIGHTCOLOR", 25, ["C", "set the highlight color"]); +Clazz_defineEnumConstant(c$, "HIGHLIGHT", 26, ["OFF or X1 X2 [OFF] or X1 X2 r g b [a]", "turns on or off a highlight color, possibily setting its color, where r g b a are 0-255 or 0.0-1.0"]); +Clazz_defineEnumConstant(c$, "INTEGRALOFFSET", 27, ["percent", "sets the integral offset from baseline"]); +Clazz_defineEnumConstant(c$, "INTEGRALRANGE", 28, ["percent", "sets the height of the total integration"]); +Clazz_defineEnumConstant(c$, "INTEGRATE", 29, ["", "see INTEGRATION"]); +Clazz_defineEnumConstant(c$, "INTEGRATION", 30, ["ON/OFF/TOGGLE/AUTO/CLEAR/MIN value/MARK ppm1-ppm2:norm,ppm3-ppm4,...", "show/hide integration or set integrals (1D 1H NMR only)"]); +Clazz_defineEnumConstant(c$, "INTEGRALPLOTCOLOR", 31, ["C", "color of the integration line"]); +Clazz_defineEnumConstant(c$, "INTEGRATIONRATIOS", 32, ["'x:value,x:value,..'", "annotate the spectrum with numbers or text at specific x values"]); +Clazz_defineEnumConstant(c$, "INTERFACE", 33, ["SINGLE or OVERLAY", "set how multiple spectra are displayed"]); +Clazz_defineEnumConstant(c$, "INVERTY", 34, ["", "invert the Y axis"]); +Clazz_defineEnumConstant(c$, "IRMODE", 35, ["A or T or TOGGLE", "set the IR mode to absorption or transmission"]); +Clazz_defineEnumConstant(c$, "JMOL", 36, ["...Jmol command...", "send a command to Jmol (if present)"]); +Clazz_defineEnumConstant(c$, "JSV", 37, []); +Clazz_defineEnumConstant(c$, "LABEL", 38, ["x y [color and/or \"text\"]", "add a text label"]); +Clazz_defineEnumConstant(c$, "LINK", 39, ["AB or ABC or NONE or ALL", "synchronize the crosshair of a 2D spectrum with 1D cursors"]); +Clazz_defineEnumConstant(c$, "LOAD", 40, ["[APPEND] \"fileName\" [first] [last]; use \"\" for current file; $H1/name or $C13/name for simulation", "load a specturm"]); +Clazz_defineEnumConstant(c$, "LOADFILECALLBACKFUNCTIONNAME", 41, []); +Clazz_defineEnumConstant(c$, "LOADIMAGINARY", 42, ["TF", "set TRUE to load imaginary NMR component"]); +Clazz_defineEnumConstant(c$, "MENUON", 43, []); +Clazz_defineEnumConstant(c$, "OBSCURE", 44, []); +Clazz_defineEnumConstant(c$, "OVERLAY", 45, []); +Clazz_defineEnumConstant(c$, "OVERLAYSTACKED", 46, ["TF", "whether viewed spectra are shown separately, in a stack"]); +Clazz_defineEnumConstant(c$, "PEAK", 47, ["[IR,CNMR,HNMR,MS] [#nnn or ID=xxx or text] [ALL], for example: PEAK HNMR #3", "highlights a peak based on its number or title text, optionally checking all loade spectra"]); +Clazz_defineEnumConstant(c$, "PEAKCALLBACKFUNCTIONNAME", 48, []); +Clazz_defineEnumConstant(c$, "PEAKLIST", 49, ["[THRESHOLD=n] [INTERPOLATE=PARABOLIC or NONE]", "creates a peak list based on a threshold value and parabolic or no interpolation"]); +Clazz_defineEnumConstant(c$, "PEAKTABCOLOR", 50, ["C", "sets the color of peak marks for a peak listing"]); +Clazz_defineEnumConstant(c$, "PEAKTABSON", 51, ["T", "show peak tabs for simulated spectra"]); +Clazz_defineEnumConstant(c$, "PLOTAREACOLOR", 52, ["C", "sets the color of the plot background"]); +Clazz_defineEnumConstant(c$, "PLOTCOLOR", 53, ["C", "sets the color of the graph line"]); +Clazz_defineEnumConstant(c$, "PLOTCOLORS", 54, ["color,color,color,...", "sets the colors of multiple plots"]); +Clazz_defineEnumConstant(c$, "POINTSONLY", 55, ["TF", "show points only for all data"]); +Clazz_defineEnumConstant(c$, "PRINT", 56, ["", "prints the current spectrum"]); +Clazz_defineEnumConstant(c$, "REVERSEPLOT", 57, ["T", "reverses the x-axis of a spectrum"]); +Clazz_defineEnumConstant(c$, "SCALEBY", 58, ["factor", "multiplies the y-scale of the spectrum by a factor"]); +Clazz_defineEnumConstant(c$, "SCALECOLOR", 59, ["C", "sets the color of the x-axis and y-axis scales"]); +Clazz_defineEnumConstant(c$, "SCRIPT", 60, ["filename.jsv", "runs a script from a file"]); +Clazz_defineEnumConstant(c$, "SELECT", 61, ["spectrumID, spectrumID,...", "selects one or more spectra based on IDs"]); +Clazz_defineEnumConstant(c$, "SETPEAK", 62, ["xNew, xOld xNew, ?, or NONE", "sets nearest peak to xOld ppm to a new value; NONE resets (1D NMR only)"]); +Clazz_defineEnumConstant(c$, "SETX", 63, ["xNew, xOld xNew, ?, or NONE", "sets an old ppm position in the spectrum to a new value; NONE resets (1D NMR only)"]); +Clazz_defineEnumConstant(c$, "SHIFTX", 64, ["dx or NONE", "shifts the x-axis of a 1D NMR spectrum by the given ppm; NONE resets (1D NMR only)"]); +Clazz_defineEnumConstant(c$, "SHOWERRORS", 65, ["shows recent errors"]); +Clazz_defineEnumConstant(c$, "SHOWINTEGRATION", 66, ["T", "shows an integration listing"]); +Clazz_defineEnumConstant(c$, "SHOWKEY", 67, ["T", "shows a color key when multiple spectra are displayed"]); +Clazz_defineEnumConstant(c$, "SHOWMEASUREMENTS", 68, ["T", "shows a listing of measurements"]); +Clazz_defineEnumConstant(c$, "SHOWMENU", 69, ["displays the popup menu"]); +Clazz_defineEnumConstant(c$, "SHOWPEAKLIST", 70, ["T", "shows a listing for peak picking"]); +Clazz_defineEnumConstant(c$, "SHOWPROPERTIES", 71, ["displays the header information of a JDX file"]); +Clazz_defineEnumConstant(c$, "SHOWSOURCE", 72, ["displays the source JDX file associated with the selected data"]); +Clazz_defineEnumConstant(c$, "SPECTRUM", 73, ["id", "displays a specific spectrum, where id is a number 1, 2, 3... or a file.spectrum number such as 2.1"]); +Clazz_defineEnumConstant(c$, "SPECTRUMNUMBER", 74, ["n", "displays the nth spectrum loaded"]); +Clazz_defineEnumConstant(c$, "STACKOFFSETY", 75, ["percent", "sets the y-axis offset of stacked spectra"]); +Clazz_defineEnumConstant(c$, "STARTINDEX", 76, []); +Clazz_defineEnumConstant(c$, "SYNCCALLBACKFUNCTIONNAME", 77, []); +Clazz_defineEnumConstant(c$, "SYNCID", 78, []); +Clazz_defineEnumConstant(c$, "TEST", 79, []); +Clazz_defineEnumConstant(c$, "TITLEON", 80, ["T", "turns the title in the bottom left corner on or off"]); +Clazz_defineEnumConstant(c$, "TITLEBOLDON", 81, ["T", "makes the title bold"]); +Clazz_defineEnumConstant(c$, "TITLECOLOR", 82, ["C", "sets the color of the title"]); +Clazz_defineEnumConstant(c$, "TITLEFONTNAME", 83, ["fontName", "sets the title font"]); +Clazz_defineEnumConstant(c$, "UNITSCOLOR", 84, ["C", "sets the color of the x-axis and y-axis units"]); +Clazz_defineEnumConstant(c$, "VERSION", 85, []); +Clazz_defineEnumConstant(c$, "VIEW", 86, ["spectrumID, spectrumID, ... Example: VIEW 3.1, 3.2 or VIEW \"acetophenone\"", "creates a view of one or more spectra"]); +Clazz_defineEnumConstant(c$, "XSCALEON", 87, ["T", "set FALSE to turn off the x-axis scale"]); +Clazz_defineEnumConstant(c$, "XUNITSON", 88, ["T", "set FALSE to turn off the x-axis units"]); +Clazz_defineEnumConstant(c$, "YSCALE", 89, ["[ALL] lowValue highValue"]); +Clazz_defineEnumConstant(c$, "YSCALEON", 90, ["T", "set FALSE to turn off the y-axis scale"]); +Clazz_defineEnumConstant(c$, "YUNITSON", 91, ["T", "set FALSE to turn off the y-axis units"]); +Clazz_defineEnumConstant(c$, "WINDOW", 92, []); +Clazz_defineEnumConstant(c$, "WRITE", 93, ["[XY,DIF,DIFDUP,PAC,FIX,SQZ,AML,CML,JPG,PDF,PNG,SVG] \"filename\"", "writes a file in the specified format"]); +Clazz_defineEnumConstant(c$, "ZOOM", 94, ["OUT or PREVIOUS or NEXT or x1,x2 or x1,y1 x2,y2", "sets the zoom"]); +Clazz_defineEnumConstant(c$, "ZOOMBOXCOLOR", 95, []); +Clazz_defineEnumConstant(c$, "ZOOMBOXCOLOR2", 96, []); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.ScriptTokenizer", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.str = null; +this.pt = -1; +this.len = 0; +this.isCmd = false; +this.doCheck = true; +Clazz_instantialize(this, arguments);}, JSV.common, "ScriptTokenizer", null); +Clazz_makeConstructor(c$, +function(str, isCmd){ +this.str = str; +this.len = str.length; +this.isCmd = isCmd; +}, "~S,~B"); +c$.nextStringToken = Clazz_defineMethod(c$, "nextStringToken", +function(eachParam, removeQuotes){ +var s = eachParam.nextToken(); +return (removeQuotes && s.charAt(0) == '"' && s.endsWith("\"") && s.length > 1 ? JU.PT.trimQuotes(s) : s); +}, "JSV.common.ScriptTokenizer,~B"); +Clazz_defineMethod(c$, "nextToken", +function(){ +if (this.doCheck) this.hasMoreTokens(); +var pt0 = this.pt; +var inQuote = (this.str.charAt(this.pt) == '"'); +while (++this.pt < this.len) { +switch ((this.str.charAt(this.pt)).charCodeAt(0)) { +case 34: +if (inQuote) { +if (this.isCmd) { +inQuote = false; +continue; +}this.pt++; +break; +}if (this.isCmd) inQuote = true; +continue; +case 32: +if (!this.isCmd && !inQuote) break; +continue; +case 59: +case 10: +if (this.isCmd && !inQuote) break; +continue; +default: +continue; +} +break; +} +this.doCheck = true; +return this.str.substring(pt0, this.pt); +}); +Clazz_defineMethod(c$, "hasMoreTokens", +function(){ +while (++this.pt < this.len) { +switch ((this.str.charAt(this.pt)).charCodeAt(0)) { +case 32: +case 59: +case 10: +continue; +} +break; +} +this.doCheck = false; +return (this.pt < this.len); +}); +Clazz_defineMethod(c$, "getRemainingScript", +function(){ +return this.str.substring(this.pt); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isub = 0; +this.title = null; +Clazz_instantialize(this, arguments);}, JSV.common, "SubSpecChangeEvent", null); +Clazz_makeConstructor(c$, +function(isub, title){ +this.isub = isub; +this.title = title; +}, "~N,~S"); +Clazz_defineMethod(c$, "isValid", +function(){ +return (this.title != null); +}); +Clazz_defineMethod(c$, "getSubIndex", +function(){ +return this.isub; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.title; +}); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(null, "JSV.common.ViewData", ["JSV.common.Coordinate", "$.ScaleData"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.scaleData = null; +this.thisScale = null; +this.nSpectra = 0; +this.iThisScale = 0; +this.spectra = null; +Clazz_instantialize(this, arguments);}, JSV.common, "ViewData", null); +Clazz_makeConstructor(c$, +function(spectra, yPt1, yPt2, startList, endList, isContinuous, is2D){ +this.nSpectra = (is2D ? 1 : spectra.size()); +this.scaleData = new Array(this.nSpectra); +for (var j = 0; j < this.nSpectra; j++) this.scaleData[j] = new JSV.common.ScaleData(startList[j], endList[j]); + +this.init(spectra, yPt1, yPt2, isContinuous); +}, "JU.Lst,~N,~N,~A,~A,~B,~B"); +Clazz_makeConstructor(c$, +function(spectra, yPt1, yPt2, isContinuous){ +this.nSpectra = spectra.size(); +var n = spectra.get(0).getXYCoords().length; +this.scaleData = new Array(1); +this.scaleData[0] = new JSV.common.ScaleData(0, n - 1); +this.init(spectra, yPt1, yPt2, isContinuous); +}, "JU.Lst,~N,~N,~B"); +Clazz_defineMethod(c$, "getScaleData", +function(){ +return this.scaleData; +}); +Clazz_defineMethod(c$, "getScale", +function(){ +return this.thisScale; +}); +Clazz_defineMethod(c$, "init", +function(spectra, yPt1, yPt2, isContinuous){ +if (spectra == null) spectra = this.spectra; + else this.spectra = spectra; +this.thisScale = this.scaleData[this.iThisScale = 0]; +for (var i = 0; i < this.scaleData.length; i++) { +this.scaleData[i].userYFactor = spectra.get(i).getUserYFactor(); +this.scaleData[i].spectrumYRef = spectra.get(i).getYRef(); +} +this.resetScaleFactors(); +var minX = JSV.common.Coordinate.getMinX(spectra, this); +var maxX = JSV.common.Coordinate.getMaxX(spectra, this); +var minY = JSV.common.Coordinate.getMinYUser(spectra, this); +var maxY = JSV.common.Coordinate.getMaxYUser(spectra, this); +if (yPt1 != yPt2) { +minY = yPt1; +maxY = yPt2; +if (minY > maxY) { +var t = minY; +minY = maxY; +maxY = t; +}}var isInverted = spectra.get(0).isInverted(); +for (var i = 0; i < this.scaleData.length; i++) { +this.scaleData[i].setMinMax(minX, maxX, minY, maxY); +this.scaleData[i].setScale(isContinuous, isInverted); +} +}, "JU.Lst,~N,~N,~B"); +Clazz_defineMethod(c$, "newSpectrum", +function(spectra){ +this.init(spectra, 0, 0, false); +}, "JU.Lst"); +Clazz_defineMethod(c$, "setXRangeForSubSpectrum", +function(xyCoords){ +this.setXRange(0, xyCoords, this.scaleData[0].minX, this.scaleData[0].maxX, 0, xyCoords.length - 1); +}, "~A"); +Clazz_defineMethod(c$, "setXRange", +function(i, xyCoords, initX, finalX, iStart, iEnd){ +var index = 0; +var ptCount = 0; +for (index = iStart; index <= iEnd; index++) { +var x = xyCoords[index].getXVal(); +if (x >= initX) { +this.scaleData[i % this.scaleData.length].startDataPointIndex = index; +break; +}} +for (; index <= iEnd; index++) { +var x = xyCoords[index].getXVal(); +ptCount++; +if (x >= finalX) { +break; +}} +this.scaleData[i % this.scaleData.length].endDataPointIndex = index; +return ptCount; +}, "~N,~A,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getStartingPointIndex", +function(i){ +return this.scaleData[i % this.scaleData.length].startDataPointIndex; +}, "~N"); +Clazz_defineMethod(c$, "getEndingPointIndex", +function(i){ +return this.scaleData[i % this.scaleData.length].endDataPointIndex; +}, "~N"); +Clazz_defineMethod(c$, "areYScalesSame", +function(i, j){ +i %= this.scaleData.length; +j %= this.scaleData.length; +return (this.scaleData[i].minYOnScale == this.scaleData[j].minYOnScale && this.scaleData[i].maxYOnScale == this.scaleData[j].maxYOnScale); +}, "~N,~N"); +Clazz_defineMethod(c$, "setScale", +function(i, xPixels, yPixels, isInverted){ +this.iThisScale = i % this.scaleData.length; +this.thisScale = this.scaleData[this.iThisScale]; +this.thisScale.setXYScale(xPixels, yPixels, isInverted); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "resetScaleFactors", +function(){ +for (var i = 0; i < this.scaleData.length; i++) this.scaleData[i].spectrumScaleFactor = 1; + +}); +Clazz_defineMethod(c$, "scaleSpectrum", +function(i, f){ +if (f <= 0 || i >= this.nSpectra) return; +if (i == -2) { +this.thisScale.scale2D(f); +return; +}if (i < 0) for (i = 0; i < this.scaleData.length; i++) this.scaleData[i].scaleBy(f); + + else this.scaleData[i % this.scaleData.length].scaleBy(f); +}, "~N,~N"); +Clazz_defineMethod(c$, "getNewScales", +function(iSelected, isXOnly, y1, y2){ +if (isXOnly) return this.scaleData; +iSelected %= this.scaleData.length; +var f1 = (y1 - this.thisScale.minYOnScale) / (this.thisScale.maxYOnScale - this.thisScale.minYOnScale); +var f2 = (y2 - this.thisScale.minYOnScale) / (this.thisScale.maxYOnScale - this.thisScale.minYOnScale); +var sd = new Array(this.scaleData.length); +for (var i = 0; i < this.scaleData.length; i++) sd[i] = (iSelected >= 0 && i != iSelected ? this.scaleData[i] : new JSV.common.ScaleData()); + +JSV.common.ScaleData.copyScaleFactors(this.scaleData, sd); +JSV.common.ScaleData.copyYScales(this.scaleData, sd); +for (var i = 0; i < this.scaleData.length; i++) { +if (iSelected >= 0 && i != iSelected) continue; +sd[i].isShiftZoomedY = true; +sd[i].minYOnScale = this.scaleData[i].minYOnScale * (1 - f1) + f1 * this.scaleData[i].maxYOnScale; +sd[i].maxYOnScale = this.scaleData[i].minYOnScale * (1 - f2) + f2 * this.scaleData[i].maxYOnScale; +} +return sd; +}, "~N,~B,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_declareInterface(JSV.common, "XYScaleConverter"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +(function(){ +var c$ = Clazz_declareType(JSV.common, "ZoomEvent", null); +/*LV!1824 unnec constructor*/})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.dialog"); +Clazz_load(["JSV.api.AnnotationData", "JSV.common.Annotation"], "JSV.dialog.JSVDialog", ["JU.DF", "$.PT", "JSV.common.IntegralData", "$.PeakData", "JSV.dialog.DialogManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.optionKey = null; +this.options = null; +this.type = null; +this.title = null; +this.vwr = null; +this.$spec = null; +this.manager = null; +this.dialog = null; +this.jsvp = null; +this.txt1 = null; +this.txt2 = null; +this.txt3 = null; +this.combo1 = null; +this.xyData = null; +this.myParams = null; +this.precision = 1; +this.loc = null; +this.showHideButton = null; +this.addClearBtn = false; +this.addCombo1 = false; +this.addApplyBtn = false; +this.isNumeric = false; +this.defaultVisible = false; +this.subType = null; +this.graphSetKey = null; +this.tableData = null; +this.addUnits = false; +this.unitOptions = null; +this.formatOptions = null; +this.unitPtr = null; +this.isON = true; +this.lastNorm = 1; +this.iRowColSelected = -1; +this.iSelected = -1; +this.skipCreate = false; +this.iRowSelected = -1; +this.iColSelected = -1; +Clazz_instantialize(this, arguments);}, JSV.dialog, "JSVDialog", JSV.common.Annotation, JSV.api.AnnotationData); +Clazz_overrideMethod(c$, "isDialog", +function(){ +return true; +}); +Clazz_defineMethod(c$, "setParams", +function(title, viewer, spec){ +title = JSV.dialog.DialogManager.fixTitle(title); +this.title = title; +this.vwr = viewer; +this.$spec = spec; +this.manager = viewer.getDialogManager(); +this.jsvp = viewer.selectedPanel; +this.myParams = (viewer.getPlatformInterface("Parameters")).setName("dialogParams"); +this.subType = (spec == null ? "!" : spec.getTypeLabel()); +this.optionKey = this.type + "_" + this.subType; +this.options = this.manager.getDialogOptions(); +if (spec != null) { +var specOptions = spec.getDefaultAnnotationInfo(this.type); +this.options.put(this.optionKey, specOptions); +this.unitOptions = specOptions[0]; +this.formatOptions = specOptions[1]; +this.unitPtr = this.options.get(this.optionKey + "_unitPtr"); +if (this.unitPtr == null) this.unitPtr = specOptions[2]; +}switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.isNumeric = true; +this.addClearBtn = true; +this.defaultVisible = true; +this.addApplyBtn = true; +break; +case JSV.common.Annotation.AType.Measurements: +this.isNumeric = true; +this.addClearBtn = true; +this.addCombo1 = true; +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.PeakList: +this.isNumeric = true; +this.addApplyBtn = true; +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.Views: +this.defaultVisible = true; +break; +case JSV.common.Annotation.AType.NONE: +break; +} +this.initDialog(); +return this; +}, "~S,JSV.common.JSViewer,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "initDialog", +function(){ +this.dialog = this.manager.getDialog(this); +this.restoreDialogPosition(this.jsvp, this.getPosXY()); +this.dialog.setTitle(this.title); +this.layoutDialog(); +}); +Clazz_defineMethod(c$, "layoutDialog", +function(){ +this.dialog.startLayout(); +this.addUniqueControls(); +if (this.isNumeric) { +this.getUnitOptions(); +if (this.addCombo1) this.combo1 = this.dialog.addSelectOption("cmbUnits", "Units", this.unitOptions, this.unitPtr.intValue(), this.addUnits); +if (this.addApplyBtn) this.dialog.addButton("btnApply", "Apply"); +this.showHideButton = this.dialog.addButton("btnShow", "Show"); +if (this.addClearBtn) this.dialog.addButton("btnClear", "Clear"); +}this.dialog.endLayout(); +this.checkEnables(); +this.dialog.setVisible(this.defaultVisible); +}); +Clazz_defineMethod(c$, "callbackAD", +function(id, msg){ +if (id.equals("FOCUS")) { +this.eventFocus(); +} else if (id.equals("tableSelect")) { +this.tableSelect(msg); +} else if (id.equals("btnClear")) { +this.clear(); +} else if (id.equals("btnApply")) { +this.eventApply(); +} else if (id.equals("btnShow")) { +var label = this.dialog.getText(this.showHideButton); +this.eventShowHide(label.equals("Show")); +} else if (id.equals("cmbUnits")) { +this.setPrecision(this.dialog.getSelectedIndex(this.combo1)); +} else if (id.startsWith("txt")) { +this.eventApply(); +} else if (id.equals("windowClosing")) { +this.done(); +return true; +}if (this.jsvp != null) this.jsvp.doRepaint(true); +return true; +}, "~S,~S"); +Clazz_defineMethod(c$, "addUniqueControls", +function(dialogHelper){ +}, "JSV.dialog.DialogManager"); +Clazz_overrideMethod(c$, "getAType", +function(){ +return this.type; +}); +Clazz_overrideMethod(c$, "getGraphSetKey", +function(){ +return this.graphSetKey; +}); +Clazz_overrideMethod(c$, "setGraphSetKey", +function(key){ +this.graphSetKey = key; +}, "~S"); +Clazz_overrideMethod(c$, "getSpectrum", +function(){ +return this.$spec; +}); +Clazz_overrideMethod(c$, "getState", +function(){ +return this.isON; +}); +Clazz_overrideMethod(c$, "setState", +function(b){ +this.isON = b; +}, "~B"); +Clazz_defineMethod(c$, "checkEnables", +function(){ +var isShow = this.checkVisible(); +this.dialog.setText(this.showHideButton, isShow ? "Hide" : "Show"); +}); +Clazz_defineMethod(c$, "createTable", +function(data, header, widths){ +this.tableData = data; +this.dialog.createTable(data, header, widths); +}, "~A,~A,~A"); +Clazz_defineMethod(c$, "setTableSelectionEnabled", +function(enabled){ +this.dialog.setCellSelectionEnabled(enabled); +}, "~B"); +Clazz_defineMethod(c$, "getParameters", +function(){ +return this.myParams; +}); +Clazz_defineMethod(c$, "showMessage", +function(msg, title, msgType){ +this.manager.showMessageDialog(this.dialog, msg, title, msgType); +}, "~S,~S,~N"); +Clazz_defineMethod(c$, "setThreshold", +function(y){ +this.dialog.setText(this.txt1, this.getThreasholdText(y)); +}, "~N"); +Clazz_defineMethod(c$, "setComboSelected", +function(i){ +this.dialog.setSelectedIndex(this.combo1, i); +}, "~N"); +Clazz_defineMethod(c$, "applyFromFields", +function(){ +this.apply(null); +}); +Clazz_defineMethod(c$, "reEnable", +function(){ +this.paramsReEnable(); +return this; +}); +Clazz_defineMethod(c$, "dispose", +function(){ +this.dialog.dispose(); +}); +Clazz_defineMethod(c$, "setVisible", +function(visible){ +this.dialog.setVisible(visible); +}, "~B"); +Clazz_overrideMethod(c$, "isVisible", +function(){ +return this.dialog.isVisible(); +}); +Clazz_defineMethod(c$, "selectTableRow", +function(i){ +this.dialog.selectTableRow(i); +}, "~N"); +Clazz_defineMethod(c$, "repaint", +function(){ +this.dialog.repaint(); +}); +Clazz_defineMethod(c$, "setFields", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.myParams = this.xyData.getParameters(); +this.setThreshold(this.myParams.peakListThreshold); +this.setComboSelected(this.myParams.peakListInterpolation.equals("none") ? 1 : 0); +this.createData(); +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz_defineMethod(c$, "setFocus", +function(tf){ +this.dialog.setFocus(tf); +}, "~B"); +Clazz_defineMethod(c$, "update", +function(clicked, xRange, yOffset){ +this.selectTableRow(-1); +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.loadData(); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.Measurements: +this.loadData(); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +if (yOffset > 20) this.applyFromFields(); +if (this.xyData == null || clicked == null || yOffset > 20) return; +var ipt = 0; +var dx0 = 1e100; +var xval = clicked.getXVal(); +var md = this.xyData; +var min = Math.abs(xRange / 20); +for (var i = md.size(); --i >= 0; ) { +var dx = Math.abs(xval - md.get(i).getXVal()); +if (dx < dx0) { +dx0 = dx; +ipt = i; +}} +if (dx0 < min) { +this.selectTableRow(md.size() - 2 - ipt); +this.repaint(); +}break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}, "JSV.common.Coordinate,~N,~N"); +Clazz_defineMethod(c$, "getPeakData", +function(){ +var md = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.$spec); +md.setPeakList(this.myParams, this.precision, this.jsvp.getPanelData().getView()); +this.xyData = md; +return null; +}); +Clazz_overrideMethod(c$, "getData", +function(){ +if (this.xyData == null) this.createData(); +return this.xyData; +}); +Clazz_defineMethod(c$, "setData", +function(data){ +this.myParams = data.getParameters(); +this.xyData = data; +}, "JSV.api.AnnotationData"); +Clazz_overrideMethod(c$, "setSpecShift", +function(dx){ +if (this.xyData != null) this.xyData.setSpecShift(dx); +}, "~N"); +Clazz_defineMethod(c$, "setType", +function(type){ +this.type = type; +switch (type) { +case JSV.common.Annotation.AType.Measurements: +this.addUnits = true; +break; +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.PeakList: +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +case JSV.common.Annotation.AType.NONE: +break; +} +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "apply", +function(objects){ +try { +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +var offset = Double.parseDouble(objects[0]); +var scale = Double.parseDouble(objects[1]); +this.myParams.integralOffset = offset; +this.myParams.integralRange = scale; +this.myParams.integralDrawAll = false; +(this.getData()).update(this.myParams); +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +return; +case JSV.common.Annotation.AType.PeakList: +if (!this.skipCreate) { +this.setThreshold(NaN); +this.createData(); +}this.skipCreate = false; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +this.vwr.parameters.viewOffset = Double.parseDouble(objects[0]); +break; +} +this.loadData(); +this.checkEnables(); +this.jsvp.doRepaint(true); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A"); +Clazz_defineMethod(c$, "done", +function(){ +if (this.jsvp != null && this.$spec != null) this.jsvp.getPanelData().removeDialog(this); +if (this.xyData != null) this.xyData.setState(this.isON); +this.saveDialogPosition(this.getPosXY()); +this.dispose(); +this.jsvp.doRepaint(true); +}); +Clazz_defineMethod(c$, "restoreDialogPosition", +function(panel, posXY){ +if (panel != null) { +if (posXY[0] == -2147483648) { +posXY[0] = 0; +posXY[1] = -20; +}var pt = this.manager.getLocationOnScreen(panel); +var height = panel.getHeight(); +this.loc = Clazz_newIntArray(-1, [Math.max(0, pt[0] + posXY[0]), Math.max(0, pt[1] + height + posXY[1])]); +this.dialog.setIntLocation(this.loc); +}}, "JSV.api.JSVPanel,~A"); +Clazz_defineMethod(c$, "saveDialogPosition", +function(posXY){ +try { +var pt = this.manager.getLocationOnScreen(this.dialog); +posXY[0] += pt[0] - this.loc[0]; +posXY[1] += pt[1] - this.loc[1]; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A"); +Clazz_defineMethod(c$, "getThreasholdText", +function(y){ +if (Double.isNaN(y)) { +var pd = this.jsvp.getPanelData(); +var f = (pd.getSpectrum().isInverted() ? 0.1 : 0.9); +var c = pd.getClickedCoordinate(); +y = (c == null ? (pd.getView().minYOnScale * f + pd.getView().maxYOnScale) * (1 - f) : c.getYVal()); +}var sy = JU.DF.formatDecimalDbl(y, y < 1000 ? 2 : -2); +return " " + sy; +}, "~N"); +Clazz_defineMethod(c$, "checkVisible", +function(){ +return this.vwr.pd().getShowAnnotation(this.type); +}); +Clazz_defineMethod(c$, "getUnitOptions", +function(){ +var key = this.optionKey + "_format"; +var format = this.options.get(key); +if (format == null) this.options.put(key, format = Integer.$valueOf(this.formatOptions[this.unitPtr == null ? 0 : this.unitPtr.intValue()])); +}); +Clazz_defineMethod(c$, "eventFocus", +function(){ +if (this.$spec != null) this.jsvp.getPanelData().jumpToSpectrum(this.$spec); +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +if (this.iRowSelected >= 0) { +this.iRowSelected++; +this.tableCellSelect(-1, -1); +}break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.createData(); +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz_defineMethod(c$, "eventApply", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.createData(); +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +this.applyFromFields(); +}); +Clazz_defineMethod(c$, "eventShowHide", +function(isShow){ +this.isON = isShow; +if (isShow) this.eventApply(); +this.jsvp.doRepaint(true); +this.checkEnables(); +}, "~B"); +Clazz_defineMethod(c$, "clear", +function(){ +this.setState(true); +if (this.xyData != null) { +this.xyData.clear(); +this.applyFromFields(); +}}); +Clazz_defineMethod(c$, "paramsReEnable", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +this.skipCreate = true; +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +this.setVisible(true); +this.isON = true; +this.applyFromFields(); +}); +Clazz_defineMethod(c$, "tableCellSelect", +function(iRow, iCol){ +System.out.println(iRow + " jSVDial " + iCol); +if (iRow < 0) { +iRow = Clazz_doubleToInt(this.iRowColSelected / 1000); +iCol = this.iRowColSelected % 1000; +this.iRowColSelected = -1; +}var value = this.tableData[iRow][1]; +var icolrow = iRow * 1000 + iCol; +if (icolrow == this.iRowColSelected) return; +this.iRowColSelected = icolrow; +System.out.println("Setting rc = " + this.iRowColSelected + " " + this.$spec); +this.selectTableRow(this.iRowSelected); +try { +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.callback("SHOWSELECTION", value.toString()); +this.checkEnables(); +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +try { +switch (iCol) { +case 6: +case 5: +case 4: +var x1 = Double.parseDouble(value); +var x2 = Double.parseDouble(this.tableData[iRow + 3 - iCol][1]); +this.jsvp.getPanelData().setXPointers(this.$spec, x1, this.$spec, x2); +break; +default: +this.jsvp.getPanelData().findX(this.$spec, Double.parseDouble(value)); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.jsvp.getPanelData().findX(this.$spec, 1E100); +} else { +throw e; +} +} +this.jsvp.doRepaint(false); +break; +case JSV.common.Annotation.AType.OverlayLegend: +this.jsvp.getPanelData().setSpectrum(iRow, false); +break; +case JSV.common.Annotation.AType.Views: +break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~N,~N"); +Clazz_defineMethod(c$, "loadData", +function(){ +var data; +var header; +var widths; +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +if (this.xyData == null) this.createData(); +this.iSelected = -1; +data = (this.xyData).getMeasurementListArray(null); +header = this.xyData.getDataHeader(); +widths = Clazz_newIntArray(-1, [40, 65, 65, 50]); +this.createTable(data, header, widths); +break; +case JSV.common.Annotation.AType.Measurements: +if (this.xyData == null) return; +data = this.xyData.getMeasurementListArray(this.dialog.getSelectedItem(this.combo1).toString()); +header = this.xyData.getDataHeader(); +widths = Clazz_newIntArray(-1, [40, 65, 65, 50]); +this.createTable(data, header, widths); +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +if (this.xyData == null) this.createData(); +data = (this.xyData).getMeasurementListArray(null); +header = (this.xyData).getDataHeader(); +widths = Clazz_newIntArray(-1, [40, 65, 50, 50, 50, 50, 50]); +this.createTable(data, header, widths); +this.setTableSelectionEnabled(true); +break; +case JSV.common.Annotation.AType.OverlayLegend: +header = Clazz_newArray(-1, ["No.", "Plot Color", "Title"]); +data = this.vwr.selectedPanel.getPanelData().getOverlayLegendData(); +widths = Clazz_newIntArray(-1, [30, 60, 250]); +this.createTable(data, header, widths); +this.setTableSelectionEnabled(true); +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz_defineMethod(c$, "createData", +function(){ +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +this.xyData = new JSV.common.IntegralData(this.$spec, this.myParams); +this.iSelected = -1; +break; +case JSV.common.Annotation.AType.Measurements: +break; +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.PeakList: +try { +var thresh = Double.parseDouble(this.dialog.getText(this.txt1)); +this.myParams.peakListThreshold = thresh; +this.myParams.peakListInterpolation = this.dialog.getSelectedItem(this.combo1).toString(); +this.myParams.precision = this.precision; +var md = new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, this.$spec); +md.setPeakList(this.myParams, this.precision, this.jsvp.getPanelData().getView()); +this.xyData = md; +this.loadData(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +break; +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +}); +Clazz_defineMethod(c$, "setPrecision", +function(i){ +this.precision = this.formatOptions[i]; +}, "~N"); +Clazz_defineMethod(c$, "tableSelect", +function(url){ +var isAdjusting = "true".equals(this.getField(url, "adjusting")); +if (isAdjusting) { +this.iColSelected = this.iRowSelected = -1; +System.out.println("adjusting" + url); +return; +}var index = JU.PT.parseInt(this.getField(url, "index")); +switch ("ROW COL ROWCOL".indexOf(this.getField(url, "selector"))) { +case 8: +this.iColSelected = JU.PT.parseInt(this.getField(url, "index2")); +case 0: +this.iRowSelected = index; +System.out.println("r set to " + index); +break; +case 4: +this.iColSelected = index; +System.out.println("c set to " + index); +break; +} +if (this.iColSelected >= 0 && this.iRowSelected >= 0) { +this.tableCellSelect(this.iRowSelected, this.iColSelected); +}}, "~S"); +Clazz_defineMethod(c$, "getField", +function(url, name){ +url += "&"; +var key = "&" + name + "="; +var pt = url.indexOf(key); +return (pt < 0 ? null : url.substring(pt + key.length, url.indexOf("&", pt + 1))); +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.exception"); +Clazz_load(["java.lang.Exception"], "JSV.exception.JSVException", null, function(){ +var c$ = Clazz_declareType(JSV.exception, "JSVException", Exception); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz_declareType(JSV.js2d, "Display", null); +c$.getFullScreenDimensions = Clazz_defineMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +{ +widthHeight[0] = canvas.width; +widthHeight[1] = canvas.height; +}}, "~O,~A"); +c$.hasFocus = Clazz_defineMethod(c$, "hasFocus", +function(canvas){ +return true; +}, "~O"); +c$.requestFocusInWindow = Clazz_defineMethod(c$, "requestFocusInWindow", +function(canvas){ +}, "~O"); +c$.repaint = Clazz_defineMethod(c$, "repaint", +function(canvas){ +}, "~O"); +c$.renderScreenImage = Clazz_defineMethod(c$, "renderScreenImage", +function(viewer, g, size){ +{ +}}, "J.api.PlatformViewer,~O,~O"); +c$.setTransparentCursor = Clazz_defineMethod(c$, "setTransparentCursor", +function(canvas){ +}, "~O"); +c$.setCursor = Clazz_defineMethod(c$, "setCursor", +function(c, canvas){ +}, "~N,~O"); +c$.prompt = Clazz_defineMethod(c$, "prompt", +function(label, data, list, asButtons){ +{ +var s = prompt(label, data); +if (s != null)return s; +}return "null"; +}, "~S,~S,~A,~B"); +c$.convertPointFromScreen = Clazz_defineMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +}, "~O,JU.P3"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz_declareType(JSV.js2d, "Image", null); +c$.getWidth = Clazz_defineMethod(c$, "getWidth", +function(canvas){ +{ +return (canvas.imageWidth ? canvas.imageWidth : canvas.width); +}}, "~O"); +c$.getHeight = Clazz_defineMethod(c$, "getHeight", +function(canvas){ +{ +return (canvas.imageHeight ? canvas.imageHeight : canvas.height); +}}, "~O"); +c$.grabPixels = Clazz_defineMethod(c$, "grabPixels", +function(context, width, height){ +var data = null; +{ +if (context._buf32) return context._buf32; // non-canvas internal buffer for image writing +data = context.getImageData(0, 0, width, height).data; +}return JSV.js2d.Image.toIntARGB(data); +}, "~O,~N,~N"); +c$.toIntARGB = Clazz_defineMethod(c$, "toIntARGB", +function(imgData){ +var n = Clazz_doubleToInt(imgData.length / 4); +var iData = Clazz_newIntArray (n, 0); +for (var i = 0, j = 0; i < n; j++) { +iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | 0xFF000000; +} +return iData; +}, "~A"); +c$.fromIntARGB = Clazz_defineMethod(c$, "fromIntARGB", +function(buf32, buf8){ +var n = buf8.length >> 2; +for (var i = 0, j = 0; i < n; i++) { +buf8[j++] = (buf32[i] >> 16) & 0xFF; +buf8[j++] = (buf32[i] >> 8) & 0xFF; +buf8[j++] = buf32[i] & 0xFF; +buf8[j++] = 0xFF; +} +}, "~A,~A"); +c$.getTextPixels = Clazz_defineMethod(c$, "getTextPixels", +function(text, font3d, context, width, height, ascent){ +{ +context.fillStyle = "#000000"; +context.fillRect(0, 0, width, height); +context.fillStyle = "#FFFFFF"; +context.font = font3d.font; +context.fillText(text, 0, ascent); +}return JSV.js2d.Image.grabPixels(context, width, height); +}, "~S,JU.Font,~O,~N,~N,~N"); +c$.allocateRgbImage = Clazz_defineMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, canvas){ +{ +if (canvas == null) +canvas = {width:windowWidth,height:windowHeight}; +canvas.buf32 = pBuffer; +}}, "~N,~N,~A,~N,~B,~O"); +c$.getStaticGraphics = Clazz_defineMethod(c$, "getStaticGraphics", +function(canvas, backgroundTransparent){ +return JSV.js2d.Image.getGraphics(canvas); +}, "~O,~B"); +c$.getGraphics = Clazz_defineMethod(c$, "getGraphics", +function(canvas){ +{ +return canvas.getContext("2d"); +}}, "~O"); +c$.drawImage = Clazz_defineMethod(c$, "drawImage", +function(context, canvas, x, y, width, height){ +{ +this.fromIntARGB(canvas.buf32, canvas.buf8); +context.putImageData(canvas.imgdata,x,y); +}}, "~O,~O,~N,~N,~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["J.api.GenericFileInterface"], "JSV.js2d.JsFile", ["JU.PT", "JSV.common.JSVFileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.fullName = null; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsFile", null, J.api.GenericFileInterface); +Clazz_makeConstructor(c$, +function(name){ +this.name = name.$replace('\\', '/'); +this.fullName = name; +if (!this.fullName.startsWith("/") && JSV.common.JSVFileManager.urlTypeIndex(name) < 0) this.fullName = JSV.common.JSVFileManager.jsDocumentBase + "/" + this.fullName; +this.fullName = JU.PT.rep(this.fullName, "/./", "/"); +name = name.substring(name.lastIndexOf("/") + 1); +}, "~S"); +c$.newFile = Clazz_defineMethod(c$, "newFile", +function(name){ +return new JSV.js2d.JsFile(name); +}, "~S"); +Clazz_overrideMethod(c$, "getParentAsFile", +function(){ +var pt = this.fullName.lastIndexOf("/"); +return (pt < 0 ? null : new JSV.js2d.JsFile(this.fullName.substring(0, pt))); +}); +Clazz_overrideMethod(c$, "getFullPath", +function(){ +return this.fullName; +}); +Clazz_overrideMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_overrideMethod(c$, "isDirectory", +function(){ +return this.fullName.endsWith("/"); +}); +Clazz_overrideMethod(c$, "length", +function(){ +return 0; +}); +c$.getURLContents = Clazz_defineMethod(c$, "getURLContents", +function(url, outputBytes, post){ +try { +var conn = url.openConnection(); +if (outputBytes != null) conn.outputBytes(outputBytes); + else if (post != null) conn.outputString(post); +return conn.getContents(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return e.toString(); +} else { +throw e; +} +} +}, "java.net.URL,~A,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.api.JSVFileHelper"], "JSV.js2d.JsFileHelper", ["JU.PT", "JSV.common.JSViewer", "JSV.js2d.JsFile"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsFileHelper", null, JSV.api.JSVFileHelper); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "set", +function(viewer){ +this.vwr = viewer; +return this; +}, "JSV.common.JSViewer"); +Clazz_overrideMethod(c$, "getFile", +function(fileName, panelOrFrame, isSave){ +var f = null; +fileName = JU.PT.rep(fileName, "=", "_"); +{ +f = prompt("Enter a file name:", fileName); +}return (f == null ? null : new JSV.js2d.JsFile(f)); +}, "~S,~O,~B"); +Clazz_overrideMethod(c$, "setDirLastExported", +function(name){ +return name; +}, "~S"); +Clazz_overrideMethod(c$, "setFileChooser", +function(pdf){ +}, "JSV.common.ExportType"); +Clazz_overrideMethod(c$, "showFileOpenDialog", +function(panelOrFrame, userData){ +JSV.common.JSViewer.jmolObject.loadFileAsynchronously(this, this.vwr.html5Applet, "?", userData); +return null; +}, "~O,~A"); +Clazz_defineMethod(c$, "setData", +function(fileName, data, userInfo){ +if (fileName == null) return; +if (data == null) { +this.vwr.selectedPanel.showMessage(fileName, "File Open Error"); +return; +}var script = (userInfo == null ? null : ""); +var isAppend = false; +{ +isAppend = userInfo[0]; +script = userInfo[1]; +}this.vwr.si.siOpenDataOrFile( String.instantialize(data), "cache://" + fileName, null, null, -1, -1, isAppend, null, null); +if (script != null) this.vwr.runScript(script); +}, "~S,~O,~A"); +Clazz_overrideMethod(c$, "getUrlFromDialog", +function(info, msg){ +{ +return prompt(info, msg); +}}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +(function(){ +var c$ = Clazz_declareType(JSV.js2d, "JsFont", null); +c$.newFont = Clazz_defineMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize, type){ +fontFace = (fontFace.equals("Monospaced") ? "Courier" : fontFace.startsWith("Sans") ? "Sans-Serif" : "Serif"); +return (isBold ? "bold " : "") + (isItalic ? "italic " : "") + fontSize + type + " " + fontFace; +}, "~S,~B,~B,~N,~S"); +c$.getFontMetrics = Clazz_defineMethod(c$, "getFontMetrics", +function(font, context){ +{ +if (context.font != font.font) { +context.font = font.font; +font.font = context.font; +context._fontAscent = Math.ceil(font.fontSize); //pt, not px +// the descent is actually (px - pt) +// but I know of no way of getting access to the drawn height +context._fontDescent = Math.ceil(font.fontSize * 0.25);//approx +} +}return context; +}, "JU.Font,~O"); +c$.getAscent = Clazz_defineMethod(c$, "getAscent", +function(context){ +{ +return Math.ceil(context._fontAscent); +}}, "~O"); +c$.getDescent = Clazz_defineMethod(c$, "getDescent", +function(context){ +{ +return Math.ceil(context._fontDescent); +}}, "~O"); +c$.stringWidth = Clazz_defineMethod(c$, "stringWidth", +function(font, text){ +{ +font.fontMetrics.font = font.font; +return Math.ceil(font.fontMetrics.measureText(text).width); +}}, "JU.Font,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["J.api.GenericGraphics"], "JSV.js2d.JsG2D", ["JU.CU", "JSV.common.JSViewer", "JS.Color"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.windowWidth = 0; +this.windowHeight = 0; +this.isShifted = false; +this.inPath = false; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsG2D", null, J.api.GenericGraphics); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "getColor4", +function(r, g, b, a){ +return JS.Color.get4(r, g, b, a); +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "getColor3", +function(r, g, b){ +return JS.Color.get3(r, g, b); +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "getColor1", +function(rgb){ +return JS.Color.get1(rgb); +}, "~N"); +Clazz_overrideMethod(c$, "newGrayScaleImage", +function(context, image, width, height, grayBuffer){ +return JSV.common.JSViewer.jmolObject.newGrayScaleImage(context, image, width, height, grayBuffer); +}, "~O,~O,~N,~N,~A"); +Clazz_overrideMethod(c$, "drawGrayScaleImage", +function(g, image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1){ +var iw; +var ih; +{ +iw = image.w; +ih = image.h; +}var dw = (destX1 - destX0 + 1); +var dh = (destY1 - destY0 + 1); +var sw = (srcX1 - srcX0 + 1); +var sh = (srcY1 - srcY0 + 1); +var x = -srcX0 * dw / sw; +var w = iw * dw / sw; +var y = -srcY0 * dh / sh; +var h = ih * dh / sh; +{ +image.width = w; +image.height = h; +var div = image.div; +var layer = image.layer; +layer.style.left = destX0 + "px"; +layer.style.top = destY0 + "px"; +layer.style.width = dw + "px"; +layer.style.height = dh+ "px"; +div.style.left= x + "px"; +div.style.top = y + "px"; +div.style.width = w + "px"; +div.style.height = h + "px"; +}}, "~O,~O,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawLine", +function(g, x0, y0, x1, y1){ +var inPath = this.inPath; +{ +if (!inPath) g.beginPath(); +g.moveTo(x0, y0); +g.lineTo(x1, y1); +if (!inPath) g.stroke(); +}}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawCircle", +function(g, x, y, diameter){ +{ +var r = diameter/2; +g.beginPath(); +g.arc(x + r, y + r, r, 0, 2 * Math.PI, false); +g.stroke(); +}}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.doPoly(g, ayPoints, axPoints, nPoints, false); +}, "~O,~A,~A,~N"); +Clazz_defineMethod(c$, "doPoly", +function(g, axPoints, ayPoints, nPoints, doFill){ +{ +g.beginPath(); +g.moveTo(axPoints[0], ayPoints[0]); +for (var i = 1; i < nPoints; i++) +g.lineTo(axPoints[i], ayPoints[i]); +if (doFill) +g.fill(); +else +g.stroke(); +}}, "~O,~A,~A,~N,~B"); +Clazz_overrideMethod(c$, "drawRect", +function(g, x, y, width, height){ +{ +g.beginPath(); +g.rect(x ,y, width, height); +g.stroke(); +}}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawString", +function(g, s, x, y){ +{ +g.fillText(s,x,y); +}}, "~O,~S,~N,~N"); +Clazz_overrideMethod(c$, "drawStringRotated", +function(g, s, x, y, angle){ +}, "~O,~S,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillBackground", +function(g, bgcolor){ +if (bgcolor == null) { +{ +if (!this.isShifted) { +g.translate(-0.5, -0.5); +this.isShifted = true; +} +g.clearRect(0,0, this.windowWidth, this.windowHeight); +return; +}}this.setGraphicsColor(g, bgcolor); +this.fillRect(g, 0, 0, this.windowWidth, this.windowHeight); +}, "~O,javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "fillCircle", +function(g, x, y, diameter){ +{ +var r = diameter/2; +g.beginPath(); +g.arc(x + r, y + r, r, 0, 2 * Math.PI, false); +g.fill(); +}}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.doPoly(g, ayPoints, axPoints, nPoints, true); +}, "~O,~A,~A,~N"); +Clazz_overrideMethod(c$, "fillRect", +function(g, x, y, width, height){ +{ +g.fillRect(x, y, width, height); +}}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "setGraphicsColor", +function(g, c){ +var s = JU.CU.toCSSString(c); +{ +g.fillStyle = g.strokeStyle = s; +}}, "~O,javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "setFont", +function(g, font){ +var s = font.getInfo(); +var pt = s.indexOf(" "); +s = s.substring(0, pt) + "px" + s.substring(pt); +{ +g.font = s; +}return font; +}, "~O,JU.Font"); +Clazz_overrideMethod(c$, "setStrokeBold", +function(g, tf){ +{ +g.lineWidth = (tf ? 2 : 1); +}}, "~O,~B"); +Clazz_overrideMethod(c$, "setWindowParameters", +function(width, height){ +this.windowWidth = width; +this.windowHeight = height; +}, "~N,~N"); +Clazz_overrideMethod(c$, "translateScale", +function(g, x, y, scale){ +}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "canDoLineTo", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "doStroke", +function(g, isBegin){ +this.inPath = isBegin; +{ +if (isBegin) { +g.beginPath(); +} else { +g.stroke(); +} +}}, "~O,~B"); +Clazz_overrideMethod(c$, "lineTo", +function(g, x2, y2){ +{ +g.lineTo(x2, y2); +}}, "~O,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.api.JSVPanel"], "JSV.js2d.JsPanel", ["JSV.common.JSViewer", "$.PanelData", "JU.Font", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.apiPlatform = null; +this.pd = null; +this.mouse = null; +this.vwr = null; +this.name = null; +this.bgcolor = null; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsPanel", null, JSV.api.JSVPanel); +Clazz_makeConstructor(c$, +function(viewer, withPd){ +this.vwr = viewer; +this.pd = (withPd ? new JSV.common.PanelData(this, viewer) : null); +this.apiPlatform = viewer.apiPlatform; +this.mouse = this.apiPlatform.getMouseManager(0, this); +}, "JSV.common.JSViewer,~B"); +Clazz_overrideMethod(c$, "getApiPlatform", +function(){ +return this.apiPlatform; +}); +Clazz_overrideMethod(c$, "getPanelData", +function(){ +return this.pd; +}); +c$.getEmptyPanel = Clazz_defineMethod(c$, "getEmptyPanel", +function(viewer){ +var p = new JSV.js2d.JsPanel(viewer, false); +p.pd = null; +return p; +}, "JSV.common.JSViewer"); +c$.getPanelMany = Clazz_defineMethod(c$, "getPanelMany", +function(viewer, spectra){ +var p = new JSV.js2d.JsPanel(viewer, true); +p.pd.initMany(spectra, viewer.initialStartIndex, viewer.initialEndIndex); +return p; +}, "JSV.common.JSViewer,JU.Lst"); +Clazz_overrideMethod(c$, "getTitle", +function(){ +return this.pd.getTitle(); +}); +Clazz_overrideMethod(c$, "dispose", +function(){ +if (this.pd != null) this.pd.dispose(); +this.pd = null; +this.mouse.dispose(); +this.mouse = null; +}); +Clazz_overrideMethod(c$, "setTitle", +function(title){ +this.pd.title = title; +this.name = title; +}, "~S"); +Clazz_defineMethod(c$, "setColorOrFont", +function(ds, st){ +this.pd.setColorOrFont(ds, st); +}, "JSV.common.ColorParameters,JSV.common.ScriptToken"); +Clazz_overrideMethod(c$, "setBackgroundColor", +function(color){ +this.bgcolor = color; +}, "javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "getInput", +function(message, title, sval){ +var ret = null; +{ +ret = prompt(message, sval); +}this.getFocusNow(true); +return ret; +}, "~S,~S,~S"); +Clazz_overrideMethod(c$, "showMessage", +function(msg, title){ +JU.Logger.info(msg); +var applet = this.vwr.html5Applet; +{ +applet._showStatus(msg, title); +}this.getFocusNow(true); +}, "~S,~S"); +Clazz_overrideMethod(c$, "getFocusNow", +function(asThread){ +if (this.pd != null) this.pd.dialogsToFront(null); +}, "~B"); +Clazz_overrideMethod(c$, "getFontFaceID", +function(name){ +return JU.Font.getFontFaceID("SansSerif"); +}, "~S"); +Clazz_overrideMethod(c$, "doRepaint", +function(andTaintAll){ +if (this.pd == null) return; +if (andTaintAll) this.pd.setTaintedAll(); +if (!this.pd.isPrinting) this.vwr.requestRepaint(); +}, "~B"); +Clazz_overrideMethod(c$, "paintComponent", +function(context){ +var contextFront = null; +var contextRear = null; +{ +contextFront = context.canvas.frontLayer.getContext("2d"); +contextRear = context; +}if (this.vwr == null) return; +if (this.pd == null) { +if (this.bgcolor == null) this.bgcolor = this.vwr.g2d.getColor1(-1); +this.vwr.g2d.fillBackground(context, this.bgcolor); +this.vwr.g2d.fillBackground(contextRear, this.bgcolor); +this.vwr.g2d.fillBackground(contextFront, this.bgcolor); +return; +}if (this.pd.graphSets == null || this.pd.isPrinting) return; +this.pd.g2d = this.pd.g2d0; +this.pd.drawGraph(context, contextFront, contextRear, this.getWidth(), this.getHeight(), false); +this.vwr.repaintDone(); +}, "~O"); +Clazz_overrideMethod(c$, "printPanel", +function(pl, os, title){ +pl.title = title; +pl.date = this.apiPlatform.getDateFormat("8824"); +this.pd.setPrint(pl, "Helvetica"); +try { +(JSV.common.JSViewer.getInterface("JSV.common.PDFWriter")).createPdfDocument(this, pl, os); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.showMessage(ex.toString(), "creating PDF"); +} else { +throw ex; +} +} finally { +this.pd.setPrint(null, null); +} +}, "JSV.common.PrintLayout,java.io.OutputStream,~S"); +Clazz_overrideMethod(c$, "saveImage", +function(type, file, out){ +var fname = file.getName(); +if (out != null) out.cancel(); +JSV.common.JSViewer.jmolObject.saveImage(this.vwr.html5Applet, "png", fname); +return "OK"; +}, "~S,J.api.GenericFileInterface,JU.OC"); +Clazz_overrideMethod(c$, "hasFocus", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "repaint", +function(){ +}); +Clazz_overrideMethod(c$, "setToolTipText", +function(s){ +var x = this.pd.mouseX; +var y = this.pd.mouseY; +var applet = this.vwr.html5Applet; +{ +applet._showTooltip && applet._showTooltip(s, x, y); +}}, "~S"); +Clazz_overrideMethod(c$, "getHeight", +function(){ +return this.vwr.getHeight(); +}); +Clazz_overrideMethod(c$, "getWidth", +function(){ +return this.vwr.getWidth(); +}); +Clazz_overrideMethod(c$, "isEnabled", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "isFocusable", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "isVisible", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "setEnabled", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "setFocusable", +function(b){ +}, "~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +return (this.pd == null ? "" : "" + this.pd.getSpectrumAt(0)); +}); +Clazz_overrideMethod(c$, "processMouseEvent", +function(id, x, y, modifiers, time){ +return this.mouse != null && this.mouse.processEvent(id, x, y, modifiers, time); +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "processTwoPointGesture", +function(touches){ +if (this.mouse != null) this.mouse.processTwoPointGesture(touches); +}, "~A"); +Clazz_overrideMethod(c$, "processKeyEvent", +function(event){ +if (this.mouse != null) this.mouse.processKeyEvent(event); +}, "~O"); +Clazz_overrideMethod(c$, "showMenu", +function(x, y){ +this.vwr.showMenu(x, y); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.common.ColorParameters"], "JSV.js2d.JsParameters", ["JS.Color"], function(){ +var c$ = Clazz_declareType(JSV.js2d, "JsParameters", JSV.common.ColorParameters); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.js2d.JsParameters, []); +}); +Clazz_overrideMethod(c$, "isValidFontName", +function(name){ +return true; +}, "~S"); +Clazz_overrideMethod(c$, "getColor1", +function(rgb){ +return JS.Color.get1(rgb); +}, "~N"); +Clazz_overrideMethod(c$, "getColor3", +function(r, g, b){ +return JS.Color.get3(r, g, b); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "copy", +function(newName){ +return ( new JSV.js2d.JsParameters().setName(newName)).setElementColors(this); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["J.api.GenericPlatform"], "JSV.js2d.JsPlatform", ["java.net.URL", "JU.AjaxURLStreamHandlerFactory", "$.Rdr", "JSV.app.GenericMouse", "JSV.js2d.Display", "$.Image", "$.JsFile", "$.JsFont"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.canvas = null; +this.viewer = null; +this.context = null; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsPlatform", null, J.api.GenericPlatform); +Clazz_overrideMethod(c$, "setViewer", +function(viewer, canvas){ +var context = ""; +this.viewer = viewer; +this.canvas = canvas; +{ +if (canvas != null) { +context = canvas.getContext("2d"); +canvas.imgdata = context.getImageData(0, 0, canvas.width, canvas.height); +canvas.buf8 = canvas.imgdata.data; +} +}if (context !== "") this.context = context; +try { +java.net.URL.setURLStreamHandlerFactory( new JU.AjaxURLStreamHandlerFactory()); +} catch (e) { +} +}, "J.api.PlatformViewer,~O"); +Clazz_overrideMethod(c$, "isSingleThreaded", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "getJsObjectInfo", +function(jsObject, method, args){ +{ +return (method == null ? null : method == "localName" ? jsObject[0]["nodeName"] : args == null ? jsObject[0][method] : jsObject[0][method](args[0])); +}}, "~A,~S,~A"); +Clazz_overrideMethod(c$, "isHeadless", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "getMouseManager", +function(privateKey, jsvp){ +return new JSV.app.GenericMouse(jsvp); +}, "~N,~O"); +Clazz_overrideMethod(c$, "convertPointFromScreen", +function(canvas, ptTemp){ +JSV.js2d.Display.convertPointFromScreen(canvas, ptTemp); +}, "~O,JU.P3"); +Clazz_overrideMethod(c$, "getFullScreenDimensions", +function(canvas, widthHeight){ +JSV.js2d.Display.getFullScreenDimensions(canvas, widthHeight); +}, "~O,~A"); +Clazz_overrideMethod(c$, "getMenuPopup", +function(menuStructure, type){ +return null; +}, "~S,~S"); +Clazz_overrideMethod(c$, "hasFocus", +function(canvas){ +return JSV.js2d.Display.hasFocus(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "prompt", +function(label, data, list, asButtons){ +return JSV.js2d.Display.prompt(label, data, list, asButtons); +}, "~S,~S,~A,~B"); +Clazz_overrideMethod(c$, "renderScreenImage", +function(context, size){ +JSV.js2d.Display.renderScreenImage(this.viewer, context, size); +}, "~O,~O"); +Clazz_overrideMethod(c$, "drawImage", +function(context, canvas, x, y, width, height, isDTI){ +JSV.js2d.Image.drawImage(context, canvas, x, y, width, height); +}, "~O,~O,~N,~N,~N,~N,~B"); +Clazz_overrideMethod(c$, "requestFocusInWindow", +function(canvas){ +JSV.js2d.Display.requestFocusInWindow(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "repaint", +function(canvas){ +JSV.js2d.Display.repaint(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "setTransparentCursor", +function(canvas){ +JSV.js2d.Display.setTransparentCursor(canvas); +}, "~O"); +Clazz_overrideMethod(c$, "setCursor", +function(c, canvas){ +JSV.js2d.Display.setCursor(c, canvas); +}, "~N,~O"); +Clazz_overrideMethod(c$, "allocateRgbImage", +function(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, isImageWrite){ +return JSV.js2d.Image.allocateRgbImage(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent, (isImageWrite ? null : this.canvas)); +}, "~N,~N,~A,~N,~B,~B"); +Clazz_overrideMethod(c$, "notifyEndOfRendering", +function(){ +}); +Clazz_overrideMethod(c$, "createImage", +function(data){ +return null; +}, "~O"); +Clazz_overrideMethod(c$, "disposeGraphics", +function(gOffscreen){ +}, "~O"); +Clazz_overrideMethod(c$, "grabPixels", +function(canvas, width, height, pixels){ +{ +if (canvas.image && (width != canvas.width || height != canvas.height)) +Jmol._setCanvasImage(canvas, width, height); +if (canvas.buf32) return canvas.buf32; +}var buf = JSV.js2d.Image.grabPixels(JSV.js2d.Image.getGraphics(canvas), width, height); +{ +canvas.buf32 = buf; +}return buf; +}, "~O,~N,~N,~A"); +Clazz_overrideMethod(c$, "drawImageToBuffer", +function(gOffscreen, imageOffscreen, canvas, width, height, bgcolor){ +return this.grabPixels(canvas, width, height, null); +}, "~O,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "getTextPixels", +function(text, font3d, context, image, width, height, ascent){ +return JSV.js2d.Image.getTextPixels(text, font3d, context, width, height, ascent); +}, "~S,JU.Font,~O,~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "flushImage", +function(imagePixelBuffer){ +}, "~O"); +Clazz_overrideMethod(c$, "getGraphics", +function(canvas){ +return (canvas == null ? this.context : (this.context = JSV.js2d.Image.getGraphics(this.canvas = canvas))); +}, "~O"); +Clazz_overrideMethod(c$, "getImageHeight", +function(canvas){ +return (canvas == null ? -1 : JSV.js2d.Image.getHeight(canvas)); +}, "~O"); +Clazz_overrideMethod(c$, "getImageWidth", +function(canvas){ +return (canvas == null ? -1 : JSV.js2d.Image.getWidth(canvas)); +}, "~O"); +Clazz_overrideMethod(c$, "getStaticGraphics", +function(image, backgroundTransparent){ +return JSV.js2d.Image.getStaticGraphics(image, backgroundTransparent); +}, "~O,~B"); +Clazz_overrideMethod(c$, "newBufferedImage", +function(image, w, h){ +{ +if (self.Jmol && Jmol._getHiddenCanvas) +return Jmol._getHiddenCanvas(this.vwr.html5Applet, "stereoImage", w, h); +}return null; +}, "~O,~N,~N"); +Clazz_overrideMethod(c$, "newOffScreenImage", +function(w, h){ +{ +if (self.Jmol && Jmol._getHiddenCanvas) +return Jmol._getHiddenCanvas(this.vwr.html5Applet, "textImage", w, h); +}return null; +}, "~N,~N"); +Clazz_overrideMethod(c$, "waitForDisplay", +function(echoNameAndPath, zipBytes){ +return false; +}, "~O,~O"); +Clazz_overrideMethod(c$, "fontStringWidth", +function(font, text){ +return JSV.js2d.JsFont.stringWidth(font, text); +}, "JU.Font,~S"); +Clazz_overrideMethod(c$, "getFontAscent", +function(context){ +return JSV.js2d.JsFont.getAscent(context); +}, "~O"); +Clazz_overrideMethod(c$, "getFontDescent", +function(context){ +return JSV.js2d.JsFont.getDescent(context); +}, "~O"); +Clazz_overrideMethod(c$, "getFontMetrics", +function(font, context){ +return JSV.js2d.JsFont.getFontMetrics(font, context); +}, "JU.Font,~O"); +Clazz_overrideMethod(c$, "newFont", +function(fontFace, isBold, isItalic, fontSize){ +return JSV.js2d.JsFont.newFont(fontFace, isBold, isItalic, fontSize, "px"); +}, "~S,~B,~B,~N"); +Clazz_overrideMethod(c$, "getDateFormat", +function(isoType){ +{ +if (isoType == null) { +} else if (isoType.indexOf("8824") >= 0) { +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + d.getMonth(); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} else if (isoType.indexOf("8601") >= 0){ +var d = new Date(); +var x = d.toString().split(" "); +var MM = "0" + d.getMonth(); MM = MM.substring(MM.length - 2); +var dd = "0" + d.getDate(); dd = dd.substring(dd.length - 2); +return x[3] + MM + dd + x[4].replace(/\:/g,"") + x[5].substring(3,6) + "'" + x[5].substring(6,8) + "'" +} +return ("" + (new Date())).split(" (")[0]; +}}, "~S"); +Clazz_overrideMethod(c$, "newFile", +function(name){ +return new JSV.js2d.JsFile(name); +}, "~S"); +Clazz_overrideMethod(c$, "getBufferedFileInputStream", +function(name){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "getURLContents", +function(url, outputBytes, post, asString){ +var ret = JSV.js2d.JsFile.getURLContents(url, outputBytes, post); +try { +return (!asString ? ret : (typeof(ret)=='string') ? ret : Clazz_instanceOf(ret,"JU.SB") ? (ret).toString() : Clazz_instanceOf(ret,Array) ? String.instantialize(ret) : String.instantialize(JU.Rdr.getStreamAsBytes(ret, null))); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return "" + e; +} else { +throw e; +} +} +}, "java.net.URL,~A,~S,~B"); +Clazz_overrideMethod(c$, "getLocalUrl", +function(fileName){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "getImageDialog", +function(title, imageMap){ +return null; +}, "~S,java.util.Map"); +Clazz_overrideMethod(c$, "forceAsyncLoad", +function(filename){ +return false; +}, "~S"); +Clazz_overrideMethod(c$, "getInChI", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "confirm", +function(msg, msgNo){ +var ok = false; +if (ok) return 0; +if (msgNo != null) ok = false; +return (ok ? 1 : 2); +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.api.JSVMainPanel"], "JSV.js2d.JsMainPanel", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.selectedPanel = null; +this.currentPanelIndex = 0; +this.title = null; +this.visible = false; +this.focusable = false; +this.enabled = false; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsMainPanel", null, JSV.api.JSVMainPanel); +Clazz_overrideMethod(c$, "getCurrentPanelIndex", +function(){ +return this.currentPanelIndex; +}); +Clazz_overrideMethod(c$, "dispose", +function(){ +}); +Clazz_overrideMethod(c$, "getTitle", +function(){ +return this.title; +}); +Clazz_overrideMethod(c$, "setTitle", +function(title){ +this.title = title; +}, "~S"); +Clazz_overrideMethod(c$, "setSelectedPanel", +function(viewer, jsvp, panelNodes){ +if (jsvp !== this.selectedPanel) this.selectedPanel = jsvp; +var i = viewer.selectPanel(jsvp, panelNodes); +if (i >= 0) this.currentPanelIndex = i; +this.visible = true; +}, "JSV.common.JSViewer,JSV.api.JSVPanel,JU.Lst"); +Clazz_defineMethod(c$, "getHeight", +function(){ +return (this.selectedPanel == null ? 0 : this.selectedPanel.getHeight()); +}); +Clazz_defineMethod(c$, "getWidth", +function(){ +return (this.selectedPanel == null ? 0 : this.selectedPanel.getWidth()); +}); +Clazz_overrideMethod(c$, "isEnabled", +function(){ +return this.enabled; +}); +Clazz_overrideMethod(c$, "isFocusable", +function(){ +return this.focusable; +}); +Clazz_overrideMethod(c$, "isVisible", +function(){ +return this.visible; +}); +Clazz_overrideMethod(c$, "setEnabled", +function(b){ +this.enabled = b; +}, "~B"); +Clazz_overrideMethod(c$, "setFocusable", +function(b){ +this.focusable = b; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["JSV.source.JDXHeader", "java.util.Hashtable"], "JSV.source.JDXDataObject", ["JU.DF", "$.PT", "JSV.common.Annotation", "$.Coordinate", "JSV.exception.JSVException", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sourceID = ""; +this.isSimulation = false; +this.blockID = 0; +this.filePath = null; +this.filePathForwardSlash = null; +this.inlineData = null; +this.fileShiftRef = 1.7976931348623157E308; +this.fileShiftRefType = -1; +this.fileShiftRefDataPt = -1; +this.minX = NaN; +this.minY = NaN; +this.maxX = NaN; +this.maxY = NaN; +this.deltaX = NaN; +this.xyCoords = null; +this.continuous = false; +this.$isHZtoPPM = false; +this.xIncreases = true; +this.fileFirstX = 1.7976931348623157E308; +this.fileLastX = 1.7976931348623157E308; +this.fileNPoints = -1; +this.xFactor = 1.7976931348623157E308; +this.yFactor = 1.7976931348623157E308; +this.nucleusX = null; +this.nucleusY = "?"; +this.freq2dX = NaN; +this.freq2dY = NaN; +this.y2DUnits = ""; +this.parent = null; +this.xUnits = ""; +this.yUnits = ""; +this.xLabel = null; +this.yLabel = null; +this.varName = ""; +this.observedNucl = ""; +this.observedFreq = 1.7976931348623157E308; +this.numDim = 1; +this.nH = 0; +this.y2D = NaN; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXDataObject", JSV.source.JDXHeader); +Clazz_defineMethod(c$, "setInlineData", +function(data){ +this.inlineData = data; +}, "~S"); +Clazz_defineMethod(c$, "getInlineData", +function(){ +return this.inlineData; +}); +Clazz_defineMethod(c$, "setFilePath", +function(filePath){ +if (filePath != null) this.filePathForwardSlash = (this.filePath = filePath.trim()).$replace('\\', '/'); +}, "~S"); +Clazz_defineMethod(c$, "getFilePath", +function(){ +return this.filePath; +}); +Clazz_defineMethod(c$, "getFilePathForwardSlash", +function(){ +return this.filePathForwardSlash; +}); +Clazz_defineMethod(c$, "setBlockID", +function(id){ +this.blockID = id; +}, "~N"); +Clazz_defineMethod(c$, "checkJDXRequiredTokens", +function(){ +var missingTag = (this.fileFirstX == 1.7976931348623157E308 ? "##FIRSTX" : this.fileLastX == 1.7976931348623157E308 ? "##LASTX" : this.fileNPoints == -1 ? "##NPOINTS" : this.xFactor == 1.7976931348623157E308 ? "##XFACTOR" : this.yFactor == 1.7976931348623157E308 ? "##YFACTOR" : null); +if (missingTag != null) throw new JSV.exception.JSVException("Error Reading Data Set: " + missingTag + " not found"); +}); +Clazz_defineMethod(c$, "setXFactor", +function(xFactor){ +this.xFactor = xFactor; +}, "~N"); +Clazz_defineMethod(c$, "getXFactor", +function(){ +return this.xFactor; +}); +Clazz_defineMethod(c$, "setYFactor", +function(yFactor){ +this.yFactor = yFactor; +}, "~N"); +Clazz_defineMethod(c$, "getYFactor", +function(){ +return this.yFactor; +}); +Clazz_defineMethod(c$, "setVarName", +function(name){ +this.varName = name; +}, "~S"); +Clazz_defineMethod(c$, "isImaginary", +function(){ +return this.varName.contains("IMAG"); +}); +Clazz_defineMethod(c$, "setXUnits", +function(xUnits){ +this.xUnits = xUnits; +}, "~S"); +Clazz_defineMethod(c$, "getXUnits", +function(){ +return this.xUnits; +}); +Clazz_defineMethod(c$, "setYUnits", +function(yUnits){ +if (yUnits.equals("PPM")) yUnits = "ARBITRARY UNITS"; +this.yUnits = yUnits; +}, "~S"); +Clazz_defineMethod(c$, "getYUnits", +function(){ +return this.yUnits; +}); +Clazz_defineMethod(c$, "setXLabel", +function(value){ +this.xLabel = value; +}, "~S"); +Clazz_defineMethod(c$, "setYLabel", +function(value){ +this.yLabel = value; +}, "~S"); +Clazz_defineMethod(c$, "setObservedNucleus", +function(value){ +this.observedNucl = value; +if (this.is1D()) this.parent.nucleusX = this.nucleusX = this.fixNucleus(value); +}, "~S"); +Clazz_defineMethod(c$, "getObservedNucleus", +function(){ +return this.observedNucl; +}); +Clazz_defineMethod(c$, "setObservedFreq", +function(observedFreq){ +this.observedFreq = observedFreq; +}, "~N"); +Clazz_defineMethod(c$, "getObservedFreq", +function(){ +return this.observedFreq; +}); +Clazz_defineMethod(c$, "setHydrogenCount", +function(nH){ +this.nH = nH; +}, "~N"); +Clazz_defineMethod(c$, "getHydrogenCount", +function(){ +return this.nH; +}); +Clazz_defineMethod(c$, "is1D", +function(){ +return this.numDim == 1; +}); +Clazz_defineMethod(c$, "getNumDim", +function(){ +return this.numDim; +}); +Clazz_defineMethod(c$, "setNumDim", +function(n){ +this.numDim = n; +}, "~N"); +Clazz_defineMethod(c$, "setY2D", +function(d){ +this.y2D = d; +}, "~N"); +Clazz_defineMethod(c$, "getY2D", +function(){ +return this.y2D; +}); +Clazz_defineMethod(c$, "setY2DUnits", +function(units){ +this.y2DUnits = units; +}, "~S"); +Clazz_defineMethod(c$, "getY2DPPM", +function(){ +var d = this.y2D; +if (this.y2DUnits.equals("HZ")) d /= this.freq2dY; +return d; +}); +Clazz_defineMethod(c$, "setNucleusAndFreq", +function(nuc, isX){ +nuc = this.fixNucleus(nuc); +if (isX) this.nucleusX = nuc; + else this.nucleusY = nuc; +var freq; +if (this.observedNucl.indexOf(nuc) >= 0) { +freq = this.observedFreq; +} else { +var g1 = JSV.source.JDXDataObject.getGyromagneticRatio(this.fixNucleus(this.observedNucl)); +var g2 = JSV.source.JDXDataObject.getGyromagneticRatio(nuc); +freq = this.observedFreq * g2 / g1; +}if (isX) this.freq2dX = freq; + else this.freq2dY = freq; +JU.Logger.info("Freq for " + nuc + " = " + freq); +}, "~S,~B"); +Clazz_defineMethod(c$, "fixNucleus", +function(nuc){ +return JU.PT.rep(JU.PT.trim(nuc, "[]^<>"), "NUC_", ""); +}, "~S"); +c$.getNominalSpecFreq = Clazz_defineMethod(c$, "getNominalSpecFreq", +function(nuc, freq){ +var d = freq * JSV.source.JDXDataObject.getGyromagneticRatio("1H") / JSV.source.JDXDataObject.getGyromagneticRatio(nuc); +var century = Math.round(d / 100) * 100; +return (Double.isNaN(d) ? -1 : Math.abs(d - century) < 2 ? century : Math.round(d)); +}, "~S,~N"); +c$.getGyromagneticRatio = Clazz_defineMethod(c$, "getGyromagneticRatio", +function(nuc){ +var v = null; +try { +v = JSV.source.JDXDataObject.gyroMap.get(nuc); +if (v != null) return v.doubleValue(); +var pt = 0; +while (pt < nuc.length && Character.isDigit(nuc.charAt(pt))) pt++; + +v = JSV.source.JDXDataObject.gyroMap.get(nuc.substring(0, pt)); +if (v != null) JSV.source.JDXDataObject.gyroMap.put(nuc, v); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return (v == null ? NaN : v.doubleValue()); +}, "~S"); +Clazz_defineMethod(c$, "isTransmittance", +function(){ +var s = this.yUnits.toLowerCase(); +return (s.equals("transmittance") || s.contains("trans") || s.equals("t")); +}); +Clazz_defineMethod(c$, "isAbsorbance", +function(){ +var s = this.yUnits.toLowerCase(); +return (s.equals("absorbance") || s.contains("abs") || s.equals("a")); +}); +Clazz_defineMethod(c$, "canSaveAsJDX", +function(){ +return this.getDataClass().equals("XYDATA"); +}); +Clazz_defineMethod(c$, "canIntegrate", +function(){ +return (this.continuous && (this.isHNMR() || this.isGC()) && this.is1D()); +}); +Clazz_defineMethod(c$, "isAutoOverlayFromJmolClick", +function(){ +return (this.isGC()); +}); +Clazz_defineMethod(c$, "isGC", +function(){ +return this.dataType.startsWith("GC") || this.dataType.startsWith("GAS"); +}); +Clazz_defineMethod(c$, "isMS", +function(){ +return this.dataType.startsWith("MASS") || this.dataType.startsWith("MS"); +}); +Clazz_defineMethod(c$, "isStackable", +function(){ +return !this.isMS(); +}); +Clazz_defineMethod(c$, "isScalable", +function(){ +return true; +}); +Clazz_defineMethod(c$, "getYRef", +function(){ +return (!this.isTransmittance() ? 0.0 : JSV.common.Coordinate.getMaxY(this.xyCoords, 0, this.xyCoords.length - 1) < 2 ? 1.0 : 100.0); +}); +Clazz_defineMethod(c$, "isInverted", +function(){ +return this.isTransmittance(); +}); +Clazz_defineMethod(c$, "canConvertTransAbs", +function(){ +return (this.continuous && (this.yUnits.toLowerCase().contains("abs")) || this.yUnits.toLowerCase().contains("trans")); +}); +Clazz_defineMethod(c$, "canShowSolutionColor", +function(){ +return (this.isContinuous() && this.canConvertTransAbs() && (this.xUnits.toLowerCase().contains("nanometer") || this.xUnits.equalsIgnoreCase("nm")) && this.getFirstX() < 401 && this.getLastX() > 699 && this.xyCoords.length >= 30); +}); +Clazz_defineMethod(c$, "isHZtoPPM", +function(){ +return this.$isHZtoPPM; +}); +Clazz_defineMethod(c$, "setHZtoPPM", +function(val){ +this.$isHZtoPPM = val; +}, "~B"); +Clazz_defineMethod(c$, "setIncreasing", +function(val){ +this.xIncreases = val; +}, "~B"); +Clazz_defineMethod(c$, "isXIncreasing", +function(){ +return this.xIncreases; +}); +Clazz_defineMethod(c$, "shouldDisplayXAxisIncreasing", +function(){ +var dt = this.dataType.toUpperCase(); +var xu = this.xUnits.toUpperCase(); +if (dt.contains("NMR") && !dt.contains("FID")) { +return false; +} else if (dt.contains("LINK") && xu.contains("CM")) { +return false; +} else if (dt.startsWith("IR") || dt.contains("INFRA") && xu.contains("CM")) { +return false; +} else if (dt.contains("RAMAN") && xu.contains("CM")) { +return false; +} else if (dt.contains("VIS") && xu.contains("NANOMETERS")) { +return true; +}return this.xIncreases; +}); +Clazz_defineMethod(c$, "setContinuous", +function(val){ +this.continuous = val; +}, "~B"); +Clazz_defineMethod(c$, "isContinuous", +function(){ +return this.continuous; +}); +Clazz_defineMethod(c$, "getHeaderRowDataAsArray", +function(){ +var n = 8; +if (this.observedFreq != 1.7976931348623157E308) n++; +if (this.observedNucl !== "") n++; +var rowData = this.getHeaderRowDataAsArray(true, n); +var i = rowData.length - n; +if (this.observedFreq != 1.7976931348623157E308) rowData[i++] = Clazz_newArray(-1, ["##.OBSERVE FREQUENCY", "" + this.observedFreq]); +if (this.observedNucl !== "") rowData[i++] = Clazz_newArray(-1, ["##.OBSERVE NUCLEUS", this.observedNucl]); +rowData[i++] = Clazz_newArray(-1, ["##XUNITS", this.$isHZtoPPM ? "HZ" : this.xUnits]); +rowData[i++] = Clazz_newArray(-1, ["##YUNITS", this.yUnits]); +var x = (this.xIncreases ? this.getFirstX() : this.getLastX()); +rowData[i++] = Clazz_newArray(-1, ["##FIRSTX", String.valueOf(this.isHZtoPPM() ? x * this.observedFreq : x)]); +x = (this.xIncreases ? this.getLastX() : this.getFirstX()); +rowData[i++] = Clazz_newArray(-1, ["##FIRSTY", String.valueOf(this.xIncreases ? this.getFirstY() : this.getLastY())]); +rowData[i++] = Clazz_newArray(-1, ["##LASTX", String.valueOf(this.isHZtoPPM() ? x * this.observedFreq : x)]); +rowData[i++] = Clazz_newArray(-1, ["##XFACTOR", String.valueOf(this.getXFactor())]); +rowData[i++] = Clazz_newArray(-1, ["##YFACTOR", String.valueOf(this.getYFactor())]); +rowData[i++] = Clazz_newArray(-1, ["##NPOINTS", String.valueOf(this.xyCoords.length)]); +return rowData; +}); +Clazz_defineMethod(c$, "getDefaultUnitPrecision", +function(){ +return 2; +}); +Clazz_defineMethod(c$, "setMeasurementText", +function(m){ +var dx = m.getValue(); +if (Double.isNaN(dx)) return ""; +var precision = 1; +var units = ""; +if (this.isNMR()) { +if (this.is1D()) { +var isIntegral = (Clazz_instanceOf(m,"JSV.common.Integral")); +if (this.isHNMR() || isIntegral) { +if (!isIntegral) { +dx *= this.observedFreq; +units = " Hz"; +}} else { +units = " ppm"; +precision = 2; +}} else { +return ""; +}}return (dx < 0.1 ? "" : JU.DF.formatDecimalDbl(dx, precision) + units); +}, "JSV.common.Measurement"); +Clazz_defineMethod(c$, "isNMR", +function(){ +return (this.dataType.toUpperCase().indexOf("NMR") >= 0); +}); +Clazz_defineMethod(c$, "isHNMR", +function(){ +return (this.isNMR() && this.observedNucl.toUpperCase().indexOf("H") >= 0); +}); +Clazz_defineMethod(c$, "setXYCoords", +function(coords){ +this.xyCoords = coords; +}, "~A"); +Clazz_defineMethod(c$, "invertYAxis", +function(){ +for (var i = this.xyCoords.length; --i >= 0; ) { +this.xyCoords[i].setYVal(-this.xyCoords[i].getYVal()); +} +var d = this.minY; +this.minY = -this.maxY; +this.maxY = -d; +return this; +}); +Clazz_defineMethod(c$, "getFirstX", +function(){ +return this.xyCoords[0].getXVal(); +}); +Clazz_defineMethod(c$, "getFirstY", +function(){ +return this.xyCoords[0].getYVal(); +}); +Clazz_defineMethod(c$, "getLastX", +function(){ +return this.xyCoords[this.xyCoords.length - 1].getXVal(); +}); +Clazz_defineMethod(c$, "getLastY", +function(){ +return this.xyCoords[this.xyCoords.length - 1].getYVal(); +}); +Clazz_defineMethod(c$, "getMinX", +function(){ +return (Double.isNaN(this.minX) ? (this.minX = JSV.common.Coordinate.getMinX(this.xyCoords, 0, this.xyCoords.length - 1)) : this.minX); +}); +Clazz_defineMethod(c$, "getMinY", +function(){ +return (Double.isNaN(this.minY) ? (this.minY = JSV.common.Coordinate.getMinY(this.xyCoords, 0, this.xyCoords.length - 1)) : this.minY); +}); +Clazz_defineMethod(c$, "getMaxX", +function(){ +return (Double.isNaN(this.maxX) ? (this.maxX = JSV.common.Coordinate.getMaxX(this.xyCoords, 0, this.xyCoords.length - 1)) : this.maxX); +}); +Clazz_defineMethod(c$, "getMaxY", +function(){ +return (Double.isNaN(this.maxY) ? (this.maxY = JSV.common.Coordinate.getMaxY(this.xyCoords, 0, this.xyCoords.length - 1)) : this.maxY); +}); +Clazz_defineMethod(c$, "normalizeSimulation", +function(max){ +if (!this.isNMR() || !this.is1D()) return; +var f = max / this.getMaxY(); +this.maxY = NaN; +JSV.common.Coordinate.applyScale(this.xyCoords, 1, f); +JU.Logger.info("Y values have been scaled by a factor of " + f); +}, "~N"); +Clazz_defineMethod(c$, "getDeltaX", +function(){ +return (Double.isNaN(this.deltaX) ? (this.deltaX = JSV.common.Coordinate.deltaX(this.getLastX(), this.getFirstX(), this.xyCoords.length)) : this.deltaX); +}); +Clazz_defineMethod(c$, "copyTo", +function(newObj){ +newObj.setTitle(this.title); +newObj.setJcampdx(this.jcampdx); +newObj.setOrigin(this.origin); +newObj.setOwner(this.owner); +newObj.setDataClass(this.dataClass); +newObj.setDataType(this.dataType); +newObj.setHeaderTable(this.headerTable); +newObj.setXFactor(this.xFactor); +newObj.setYFactor(this.yFactor); +newObj.setXUnits(this.xUnits); +newObj.setYUnits(this.yUnits); +newObj.setXLabel(this.xLabel); +newObj.setYLabel(this.yLabel); +newObj.setXYCoords(this.xyCoords); +newObj.setContinuous(this.continuous); +newObj.setIncreasing(this.xIncreases); +newObj.observedFreq = this.observedFreq; +newObj.observedNucl = this.observedNucl; +newObj.fileShiftRef = this.fileShiftRef; +newObj.fileShiftRefDataPt = this.fileShiftRefDataPt; +newObj.fileShiftRefType = this.fileShiftRefType; +newObj.$isHZtoPPM = this.$isHZtoPPM; +newObj.numDim = this.numDim; +newObj.nucleusX = this.nucleusX; +newObj.nucleusY = this.nucleusY; +newObj.freq2dX = this.freq2dX; +newObj.freq2dY = this.freq2dY; +newObj.setFilePath(this.filePath); +newObj.nH = this.nH; +}, "JSV.source.JDXDataObject"); +Clazz_defineMethod(c$, "getTypeLabel", +function(){ +return (this.isNMR() ? this.nucleusX + "NMR" : this.dataType); +}); +Clazz_defineMethod(c$, "getDefaultAnnotationInfo", +function(type){ +var s1; +var s2; +var isNMR = this.isNMR(); +switch (type) { +case JSV.common.Annotation.AType.Integration: +return Clazz_newArray(-1, [null, Clazz_newIntArray(-1, [1]), null]); +case JSV.common.Annotation.AType.Measurements: +s1 = (isNMR ? Clazz_newArray(-1, ["Hz", "ppm"]) : Clazz_newArray(-1, [""])); +s2 = (this.isHNMR() ? Clazz_newIntArray(-1, [1, 4]) : Clazz_newIntArray(-1, [1, 3])); +return Clazz_newArray(-1, [s1, s2, Integer.$valueOf(0)]); +case JSV.common.Annotation.AType.PeakList: +s1 = (isNMR ? Clazz_newArray(-1, ["Hz", "ppm"]) : Clazz_newArray(-1, [""])); +s2 = (this.isHNMR() ? Clazz_newIntArray(-1, [1, 2]) : Clazz_newIntArray(-1, [1, 1])); +return Clazz_newArray(-1, [s1, s2, Integer.$valueOf(isNMR ? 1 : 0)]); +case JSV.common.Annotation.AType.NONE: +case JSV.common.Annotation.AType.OverlayLegend: +break; +case JSV.common.Annotation.AType.Views: +break; +} +return null; +}, "JSV.common.Annotation.AType"); +Clazz_defineMethod(c$, "getPeakListArray", +function(m, last, maxY){ +var x = m.getXVal(); +var y = m.getYVal(); +if (this.isNMR()) y /= maxY; +var dx = Math.abs(x - last[0]); +last[0] = x; +var ddx = dx + last[1]; +last[1] = dx; +var dddx = ddx + last[2]; +last[2] = ddx; +if (this.isNMR()) { +return Clazz_newDoubleArray(-1, [x, y, x * this.observedFreq, (dx * this.observedFreq > 20 ? 0 : dx * this.observedFreq), (ddx * this.observedFreq > 20 ? 0 : ddx * this.observedFreq), (dddx * this.observedFreq > 20 ? 0 : dddx * this.observedFreq)]); +}return Clazz_newDoubleArray(-1, [x, y]); +}, "JSV.common.Measurement,~A,~N"); +Clazz_defineMethod(c$, "finalizeCoordinates", +function(){ +var freq = (Double.isNaN(this.freq2dX) ? this.observedFreq : this.freq2dX); +var isHz = (freq != 1.7976931348623157E308 && this.getXUnits().toUpperCase().equals("HZ")); +if (this.fileShiftRef != 1.7976931348623157E308 && freq != 1.7976931348623157E308 && this.dataType.toUpperCase().contains("SPECTRUM") && this.jcampdx.indexOf("JEOL") < 0) { +this.applyShiftReference(isHz ? freq : 1, this.fileShiftRef); +}if (this.fileFirstX > this.fileLastX) JSV.common.Coordinate.reverse(this.xyCoords); +if (isHz) { +JSV.common.Coordinate.applyScale(this.xyCoords, (1.0 / freq), 1); +this.setXUnits("PPM"); +this.setHZtoPPM(true); +}}); +Clazz_defineMethod(c$, "setShiftReference", +function(shift, pt, type){ +this.fileShiftRef = shift; +this.fileShiftRefDataPt = (pt > 0 ? pt : 1); +this.fileShiftRefType = type; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isShiftTypeSpecified", +function(){ +return (this.fileShiftRefType != -1); +}); +Clazz_defineMethod(c$, "applyShiftReference", +function(referenceFreq, shift){ +if (this.fileShiftRefDataPt > this.xyCoords.length || this.fileShiftRefDataPt < 0) return; +var coord; +switch (this.fileShiftRefType) { +case 0: +shift = this.xyCoords[this.fileShiftRefDataPt - 1].getXVal() - shift * referenceFreq; +break; +case 1: +shift = this.fileFirstX - shift * referenceFreq; +break; +case 2: +shift = this.fileLastX + shift; +break; +} +for (var index = 0; index < this.xyCoords.length; index++) { +coord = this.xyCoords[index]; +coord.setXVal(coord.getXVal() - shift); +this.xyCoords[index] = coord; +} +}, "~N,~N"); +c$.gyroData = Clazz_newDoubleArray(-1, [1, 42.5774806, 2, 6.53590131, 3, 45.4148, 3, 32.436, 6, 6.2661, 7, 16.5483, 9, 5.9842, 10, 4.5752, 11, 13.663, 13, 10.70839657, 14, 3.07770646, 15, 4.31726570, 17, 5.7742, 19, 40.07757016, 21, 3.3631, 23, 11.26952167, 25, 2.6083, 27, 11.1031, 29, 8.4655, 31, 17.25144090, 33, 3.2717, 35, 4.1765, 37, 3.4765, 37, 5.819, 39, 3.46, 39, 1.9893, 40, 2.4737, 41, 1.0919, 43, 2.8688, 45, 10.3591, 47, 2.4041, 49, 2.4048, 50, 4.2505, 51, 11.2133, 53, 2.4115, 55, 10.5763, 57, 1.3816, 59, 10.077, 61, 3.8114, 63, 11.2982, 65, 12.103, 67, 2.6694, 69, 10.2478, 71, 13.0208, 73, 1.4897, 75, 7.315, 77, 8.1571, 79, 10.7042, 81, 11.5384, 83, 1.6442, 85, 4.1254, 87, 13.9811, 87, 1.8525, 89, 2.0949, 91, 3.9748, 93, 10.4523, 95, 2.7874, 97, 2.8463, 99, 9.6294, 99, 1.9553, 101, 2.1916, 103, 1.3477, 105, 1.957, 107, 1.7331, 109, 1.9924, 111, 9.0692, 113, 9.4871, 113, 9.3655, 115, 9.3856, 115, 14.0077, 117, 15.261, 119, 15.966, 121, 10.2551, 123, 5.5532, 123, 11.2349, 125, 13.5454, 127, 8.5778, 129, 11.8604, 131, 3.5159, 133, 5.6234, 135, 4.2582, 137, 4.7634, 138, 5.6615, 139, 6.0612, 137, 4.88, 139, 5.39, 141, 2.37, 141, 13.0359, 143, 2.319, 145, 1.429, 143, 11.59, 147, 5.62, 147, 1.7748, 149, 14631, 151, 10.5856, 153, 4.6745, 155, 1.312, 157, 1.72, 159, 10.23, 161, 1.4654, 163, 2.0508, 165, 9.0883, 167, 1.2281, 169, 3.531, 171, 7.5261, 173, 2.073, 175, 4.8626, 176, 3.451, 177, 1.7282, 179, 1.0856, 180, 4.087, 181, 5.1627, 183, 1.7957, 185, 9.7176, 187, 9.817, 187, 0.9856, 189, 3.3536, 191, 0.7658, 191, 0.8319, 195, 9.2922, 197, 0.7406, 199, 7.7123, 201, 2.8469, 203, 24.7316, 205, 24.9749, 207, 9.034, 209, 6.963, 209, 11.7, 211, 9.16, 223, 5.95, 223, 1.3746, 225, 11.187, 227, 5.6, 229, 1.4, 231, 10.2, 235, 0.83, 237, 9.57, 239, 3.09, 243, 4.6, 1E100]); +c$.gyroMap = new java.util.Hashtable(); +{ +for (var i = 0, n = JSV.source.JDXDataObject.gyroData.length - 1; i < n; i += 2) JSV.source.JDXDataObject.gyroMap.put("" + Clazz_doubleToInt(JSV.source.JDXDataObject.gyroData[i]), Double.$valueOf(JSV.source.JDXDataObject.gyroData[i + 1])); + +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["java.util.Iterator"], "JSV.source.JDXDecompressor", ["JSV.common.Coordinate", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xFactor = 0; +this.yFactor = 0; +this.nPoints = 0; +this.ich = 0; +this.t = null; +this.firstX = 0; +this.lastX = 0; +this.maxY = 4.9E-324; +this.minY = 1.7976931348623157E308; +this.debugging = false; +this.xyCoords = null; +this.line = null; +this.lineLen = 0; +this.errorLog = null; +this.lastDif = -2147483648; +this.dupCount = 0; +this.nptsFound = 0; +this.lastY = 0; +this.isDIF = true; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXDecompressor", null, java.util.Iterator); +Clazz_makeConstructor(c$, +function(t, firstX, lastX, xFactor, yFactor, nPoints){ +this.t = t; +this.firstX = firstX; +this.lastX = lastX; +this.xFactor = xFactor; +this.yFactor = yFactor; +this.nPoints = nPoints; +this.debugging = JU.Logger.isActiveLevel(6); +}, "JSV.source.JDXSourceStreamTokenizer,~N,~N,~N,~N,~N"); +Clazz_makeConstructor(c$, +function(line, lastY){ +this.line = line.trim(); +this.lineLen = line.length; +this.lastY = lastY; +}, "~S,~N"); +Clazz_defineMethod(c$, "getMinY", +function(){ +return this.minY; +}); +Clazz_defineMethod(c$, "getMaxY", +function(){ +return this.maxY; +}); +Clazz_defineMethod(c$, "decompressData", +function(errorLog){ +this.errorLog = errorLog; +var deltaXcalc = JSV.common.Coordinate.deltaX(this.lastX, this.firstX, this.nPoints); +if (this.debugging) this.logError("firstX=" + this.firstX + " lastX=" + this.lastX + " xFactor=" + this.xFactor + " yFactor=" + this.yFactor + " deltaX=" + deltaXcalc + " nPoints=" + this.nPoints); +this.xyCoords = new Array(this.nPoints); +var difFracMax = 0.5; +var prevXcheck = 0; +var prevIpt = 0; +var lastXExpected = this.lastX; +var x = this.lastX = this.firstX; +var lastLine = null; +var ipt = 0; +var yval = 0; +var haveWarned = false; +var lineNumber = this.t.labelLineNo; +try { +while ((this.line = this.t.readLineTrimmed()) != null && this.line.indexOf("##") < 0) { +lineNumber++; +if ((this.lineLen = this.line.length) == 0) continue; +this.ich = 0; +var isCheckPoint = this.isDIF; +var xcheck = this.readSignedFloat() * this.xFactor; +yval = this.nextValue(yval); +if (!isCheckPoint && ipt > 0) x += deltaXcalc; +if (this.debugging) this.logError("Line: " + lineNumber + " isCP=" + isCheckPoint + "\t>>" + this.line + "<<\n x, xcheck " + x + " " + x / this.xFactor + " " + xcheck / this.xFactor + " " + deltaXcalc / this.xFactor); +var y = yval * this.yFactor; +var point = new JSV.common.Coordinate().set(x, y); +if (ipt == 0 || !isCheckPoint) { +this.addPoint(point, ipt++); +} else if (ipt < this.nPoints) { +var lastY = this.xyCoords[ipt - 1].getYVal(); +if (y != lastY) { +this.xyCoords[ipt - 1] = point; +this.logError(lastLine + "\n" + this.line + "\nY-value Checkpoint Error! Line " + lineNumber + " for y=" + y + " yLast=" + lastY); +}if (xcheck == prevXcheck || (xcheck < prevXcheck) != (deltaXcalc < 0)) { +this.logError(lastLine + "\n" + this.line + "\nX-sequence Checkpoint Error! Line " + lineNumber + " order for xCheck=" + xcheck + " after prevXCheck=" + prevXcheck); +}var xcheckDif = Math.abs(xcheck - prevXcheck); +var xiptDif = Math.abs((ipt - prevIpt) * deltaXcalc); +var fracDif = Math.abs((xcheckDif - xiptDif)) / xcheckDif; +if (this.debugging) System.err.println("JDXD fracDif = " + xcheck + "\t" + prevXcheck + "\txcheckDif=" + xcheckDif + "\txiptDif=" + xiptDif + "\tf=" + fracDif); +if (fracDif > difFracMax) { +this.logError(lastLine + "\n" + this.line + "\nX-value Checkpoint Error! Line " + lineNumber + " expected " + xiptDif + " but X-Sequence Check difference reads " + xcheckDif); +}}prevIpt = (ipt == 1 ? 0 : ipt); +prevXcheck = xcheck; +var nX = 0; +while (this.hasNext()) { +var ich0 = this.ich; +if (this.debugging) this.logError("line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(this.ich)); +if (Double.isNaN(yval = this.nextValue(yval))) { +this.logError("There was an error reading line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(ich0)); +} else { +x += deltaXcalc; +if (yval == 1.7976931348623157E308) { +yval = 0; +this.logError("Point marked invalid '?' for line " + lineNumber + " char " + ich0 + ":" + this.line.substring(0, ich0) + ">>>>" + this.line.substring(ich0)); +}this.addPoint( new JSV.common.Coordinate().set(x, yval * this.yFactor), ipt++); +if (this.debugging) this.logError("nx=" + ++nX + " " + x + " " + x / this.xFactor + " yval=" + yval); +}} +this.lastX = x; +if (!haveWarned && ipt > this.nPoints) { +this.logError("! points overflow nPoints!"); +haveWarned = true; +}lastLine = this.line; +} +} catch (ioe) { +if (Clazz_exceptionOf(ioe,"java.io.IOException")){ +ioe.printStackTrace(); +} else { +throw ioe; +} +} +this.checkZeroFill(ipt, lastXExpected); +return this.xyCoords; +}, "JU.SB"); +Clazz_defineMethod(c$, "checkZeroFill", +function(ipt, lastXExpected){ +this.nptsFound = ipt; +if (this.nPoints == this.nptsFound) { +if (Math.abs(lastXExpected - this.lastX) > 0.00001) this.logError("Something went wrong! The last X value was " + this.lastX + " but expected " + lastXExpected); +} else { +this.logError("Decompressor did not find " + this.nPoints + " points -- instead " + this.nptsFound + " xyCoords.length set to " + this.nPoints); +for (var i = this.nptsFound; i < this.nPoints; i++) this.addPoint( new JSV.common.Coordinate().set(0, NaN), i); + +}}, "~N,~N"); +Clazz_defineMethod(c$, "addPoint", +function(pt, ipt){ +if (ipt >= this.nPoints) return; +this.xyCoords[ipt] = pt; +var y = pt.getYVal(); +if (y > this.maxY) this.maxY = y; + else if (y < this.minY) this.minY = y; +if (this.debugging) this.logError("Coord: " + ipt + pt); +}, "JSV.common.Coordinate,~N"); +Clazz_defineMethod(c$, "logError", +function(s){ +if (this.debugging) JU.Logger.debug(s); +System.err.println(s); +this.errorLog.append(s).appendC('\n'); +}, "~S"); +Clazz_defineMethod(c$, "nextValue", +function(yval){ +if (this.dupCount > 0) return this.getDuplicate(yval); +var ch = this.skipUnknown(); +switch (JSV.source.JDXDecompressor.actions[ch.charCodeAt(0)]) { +case 1: +this.isDIF = true; +return yval + (this.lastDif = this.readNextInteger(ch == '%' ? 0 : ch <= 'R' ? ch.charCodeAt(0) - 73 : 105 - ch.charCodeAt(0))); +case 2: +this.dupCount = this.readNextInteger((ch == 's' ? 9 : ch.charCodeAt(0) - 82)) - 1; +return this.getDuplicate(yval); +case 3: +yval = this.readNextSqueezedNumber(ch); +break; +case 4: +this.ich--; +yval = this.readSignedFloat(); +break; +case -1: +yval = 1.7976931348623157E308; +break; +default: +yval = NaN; +break; +} +this.isDIF = false; +return yval; +}, "~N"); +Clazz_defineMethod(c$, "skipUnknown", +function(){ +var ch = '\u0000'; +while (this.ich < this.lineLen && JSV.source.JDXDecompressor.actions[(ch = this.line.charAt(this.ich++)).charCodeAt(0)] == 0) { +} +return ch; +}); +Clazz_defineMethod(c$, "readSignedFloat", +function(){ +var ich0 = this.ich; +var ch = '\u0000'; +while (this.ich < this.lineLen && " ,\t\n".indexOf(ch = this.line.charAt(this.ich)) >= 0) this.ich++; + +var factor = 1; +switch ((ch).charCodeAt(0)) { +case 45: +factor = -1; +case 43: +ich0 = ++this.ich; +break; +} +if (this.scanToNonnumeric() == 'E' && this.ich + 3 < this.lineLen) { +switch ((this.line.charAt(this.ich + 1)).charCodeAt(0)) { +case 45: +case 43: +this.ich += 4; +if (this.ich < this.lineLen && (ch = this.line.charAt(this.ich)) >= '0' && ch <= '9') this.ich++; +break; +} +}return factor * Double.parseDouble(this.line.substring(ich0, this.ich)); +}); +Clazz_defineMethod(c$, "getDuplicate", +function(yval){ +this.dupCount--; +return (this.isDIF ? yval + this.lastDif : yval); +}, "~N"); +Clazz_defineMethod(c$, "readNextInteger", +function(n){ +var c = String.fromCharCode(0); +while (this.ich < this.lineLen && (c = this.line.charAt(this.ich)) >= '0' && c <= '9') { +n = n * 10 + (n < 0 ? 48 - c.charCodeAt(0) : c.charCodeAt(0) - 48); +this.ich++; +} +return n; +}, "~N"); +Clazz_defineMethod(c$, "readNextSqueezedNumber", +function(ch){ +var ich0 = this.ich; +this.scanToNonnumeric(); +return Double.parseDouble((ch.charCodeAt(0) > 0x60 ? 0x60 - ch.charCodeAt(0) : ch.charCodeAt(0) - 0x40) + this.line.substring(ich0, this.ich)); +}, "~S"); +Clazz_defineMethod(c$, "scanToNonnumeric", +function(){ +var ch = String.fromCharCode(0); +while (this.ich < this.lineLen && ((ch = this.line.charAt(this.ich)) == '.' || ch >= '0' && ch <= '9')) this.ich++; + +return (this.ich < this.lineLen ? ch : '\0'); +}); +Clazz_defineMethod(c$, "getNPointsFound", +function(){ +return this.nptsFound; +}); +Clazz_overrideMethod(c$, "hasNext", +function(){ +return (this.ich < this.lineLen || this.dupCount > 0); +}); +Clazz_overrideMethod(c$, "next", +function(){ +return (this.hasNext() ? Double.$valueOf(this.lastY = this.nextValue(this.lastY)) : null); +}); +Clazz_overrideMethod(c$, "remove", +function(){ +}); +c$.actions = Clazz_newIntArray (255, 0); +{ +for (var i = 0x25; i <= 0x73; i++) { +var c = String.fromCharCode(i); +switch ((c).charCodeAt(0)) { +case 37: +case 74: +case 75: +case 76: +case 77: +case 78: +case 79: +case 80: +case 81: +case 82: +case 106: +case 107: +case 108: +case 109: +case 110: +case 111: +case 112: +case 113: +case 114: +JSV.source.JDXDecompressor.actions[i] = 1; +break; +case 43: +case 45: +case 46: +case 48: +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +case 55: +case 56: +case 57: +JSV.source.JDXDecompressor.actions[i] = 4; +break; +case 63: +JSV.source.JDXDecompressor.actions[i] = -1; +break; +case 64: +case 65: +case 66: +case 67: +case 68: +case 69: +case 70: +case 71: +case 72: +case 73: +case 97: +case 98: +case 99: +case 100: +case 101: +case 102: +case 103: +case 104: +case 105: +JSV.source.JDXDecompressor.actions[i] = 3; +break; +case 83: +case 84: +case 85: +case 86: +case 87: +case 88: +case 89: +case 90: +case 115: +JSV.source.JDXDecompressor.actions[i] = 2; +break; +} +} +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["JU.Lst"], "JSV.source.JDXHeader", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.title = ""; +this.jcampdx = "5.01"; +this.dataType = ""; +this.dataClass = ""; +this.origin = ""; +this.owner = "PUBLIC DOMAIN"; +this.longDate = ""; +this.date = ""; +this.time = ""; +this.qualifiedType = null; +this.headerTable = null; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXHeader", null); +Clazz_prepareFields (c$, function(){ +this.headerTable = new JU.Lst(); +}); +Clazz_defineMethod(c$, "setTitle", +function(title){ +this.title = title; +}, "~S"); +Clazz_defineMethod(c$, "setJcampdx", +function(versionNum){ +this.jcampdx = versionNum; +}, "~S"); +Clazz_defineMethod(c$, "setDataType", +function(dataType){ +this.dataType = dataType; +}, "~S"); +Clazz_defineMethod(c$, "setDataClass", +function(dataClass){ +this.dataClass = dataClass; +}, "~S"); +Clazz_defineMethod(c$, "setOrigin", +function(origin){ +this.origin = origin; +}, "~S"); +Clazz_defineMethod(c$, "setOwner", +function(owner){ +this.owner = owner; +}, "~S"); +Clazz_defineMethod(c$, "setLongDate", +function(longDate){ +this.longDate = longDate; +}, "~S"); +Clazz_defineMethod(c$, "setDate", +function(date){ +this.date = date; +}, "~S"); +Clazz_defineMethod(c$, "setTime", +function(time){ +this.time = time; +}, "~S"); +Clazz_defineMethod(c$, "getTitle", +function(){ +return this.title; +}); +c$.getTypeName = Clazz_defineMethod(c$, "getTypeName", +function(type){ +type = type.toUpperCase(); +for (var i = 0; i < JSV.source.JDXHeader.typeNames.length; i++) if (JSV.source.JDXHeader.typeNames[i].startsWith(type)) { +return JSV.source.JDXHeader.typeNames[i].substring(18); +} +return type; +}, "~S"); +Clazz_defineMethod(c$, "getQualifiedDataType", +function(){ +return (this.qualifiedType == null ? (this.qualifiedType = JSV.source.JDXHeader.getTypeName(this.dataType)) : this.qualifiedType); +}); +Clazz_defineMethod(c$, "getJcampdx", +function(){ +return this.jcampdx; +}); +Clazz_defineMethod(c$, "getDataType", +function(){ +return this.dataType; +}); +Clazz_defineMethod(c$, "getOrigin", +function(){ +return this.origin; +}); +Clazz_defineMethod(c$, "getOwner", +function(){ +return this.owner; +}); +Clazz_defineMethod(c$, "getLongDate", +function(){ +return this.longDate; +}); +Clazz_defineMethod(c$, "getDate", +function(){ +return this.date; +}); +Clazz_defineMethod(c$, "getTime", +function(){ +return this.time; +}); +Clazz_defineMethod(c$, "getDataClass", +function(){ +return this.dataClass; +}); +Clazz_defineMethod(c$, "setHeaderTable", +function(table){ +this.headerTable = table; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getHeaderTable", +function(){ +return this.headerTable; +}); +Clazz_defineMethod(c$, "getHeaderRowDataAsArray", +function(addDataClass, nMore){ +var rowData = new Array((addDataClass ? 6 : 5) + this.headerTable.size() + nMore); +var i = 0; +rowData[i++] = Clazz_newArray(-1, ["##TITLE", this.title]); +rowData[i++] = Clazz_newArray(-1, ["##JCAMP-DX", this.jcampdx]); +rowData[i++] = Clazz_newArray(-1, ["##DATA TYPE", this.dataType]); +if (addDataClass) rowData[i++] = Clazz_newArray(-1, ["##DATA CLASS", this.dataClass]); +rowData[i++] = Clazz_newArray(-1, ["##ORIGIN", this.origin]); +rowData[i++] = Clazz_newArray(-1, ["##OWNER", this.owner]); +for (var j = 0; j < this.headerTable.size(); j++) rowData[i++] = this.getRow(j); + +return rowData; +}, "~B,~N"); +Clazz_defineMethod(c$, "getRow", +function(j){ +var s = this.headerTable.get(j); +{ +return [s[0], JU.PT.rep(s[1], "<", "<")]; +}}, "~N"); +c$.typeNames = Clazz_newArray(-1, ["ND NMR SPECTRUM NMR", "NMR SPECTRUM NMR", "INFRARED SPECTRUM IR", "MASS SPECTRUM MS", "RAMAN SPECTRUM RAMAN", "GAS CHROMATOGRAM GC", "UV/VIS SPECTRUM UV/VIS"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["J.api.JmolJDXMOLReader"], "JSV.source.JDXReader", ["java.io.BufferedReader", "$.StringReader", "java.util.Hashtable", "$.LinkedHashMap", "$.StringTokenizer", "javajs.api.Interface", "JU.AU", "$.Lst", "$.PT", "$.Rdr", "$.SB", "JSV.common.Coordinate", "$.JSVFileManager", "$.JSViewer", "$.PeakInfo", "$.Spectrum", "JSV.exception.JSVException", "JSV.source.JDXDecompressor", "$.JDXSource", "$.JDXSourceStreamTokenizer", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.nmrMaxY = NaN; +this.source = null; +this.t = null; +this.errorLog = null; +this.obscure = false; +this.done = false; +this.isZipFile = false; +this.filePath = null; +this.loadImaginary = true; +this.isSimulation = false; +this.ignoreShiftReference = false; +this.ignorePeakTables = false; +this.lastErrPath = null; +this.isTabularData = false; +this.firstSpec = 0; +this.lastSpec = 0; +this.nSpec = 0; +this.blockID = 0; +this.mpr = null; +this.reader = null; +this.modelSpectrum = null; +this.acdAssignments = null; +this.acdMolFile = null; +this.peakData = null; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXReader", null, J.api.JmolJDXMOLReader); +Clazz_makeConstructor(c$, +function(filePath, obscure, loadImaginary, iSpecFirst, iSpecLast, nmrNormalization){ +filePath = JU.PT.trimQuotes(filePath); +this.isSimulation = (filePath != null && filePath.startsWith("http://SIMULATION/")); +if (this.isSimulation) { +this.nmrMaxY = (Float.isNaN(nmrNormalization) ? 10000 : nmrNormalization); +}this.filePath = filePath; +this.obscure = obscure; +this.firstSpec = iSpecFirst; +this.lastSpec = iSpecLast; +this.loadImaginary = loadImaginary; +}, "~S,~B,~B,~N,~N,~N"); +c$.getVarList = Clazz_defineMethod(c$, "getVarList", +function(dataClass){ +var index = JSV.source.JDXReader.VAR_LIST_TABLE[0].indexOf(dataClass); +return JSV.source.JDXReader.VAR_LIST_TABLE[1].substring(index + 1, index + 12).trim(); +}, "~S"); +c$.createJDXSourceFromStream = Clazz_defineMethod(c$, "createJDXSourceFromStream", +function($in, obscure, loadImaginary, nmrMaxY){ +return JSV.source.JDXReader.createJDXSource(null, $in, "stream", obscure, loadImaginary, -1, -1, nmrMaxY); +}, "java.io.InputStream,~B,~B,~N"); +c$.getHeaderMap = Clazz_defineMethod(c$, "getHeaderMap", +function($in, map){ +return JSV.source.JDXReader.getHeaderMapS($in, map, null); +}, "java.io.InputStream,java.util.Map"); +c$.getHeaderMapS = Clazz_defineMethod(c$, "getHeaderMapS", +function($in, map, suffix){ +if (map == null) map = new java.util.LinkedHashMap(); +var hlist = JSV.source.JDXReader.createJDXSource(null, $in, null, false, false, 0, -1, 0).getJDXSpectrum(0).headerTable; +for (var i = 0, n = hlist.size(); i < n; i++) { +var h = hlist.get(i); +map.put((suffix == null ? h[2] : h[2] + suffix), h[1]); +} +return map; +}, "java.io.InputStream,java.util.Map,~S"); +c$.createJDXSource = Clazz_defineMethod(c$, "createJDXSource", +function(file, $in, filePath, obscure, loadImaginary, iSpecFirst, iSpecLast, nmrMaxY){ +var isHeaderOnly = (iSpecLast < iSpecFirst); +var data = null; +var br; +var bytes = null; +if (JU.AU.isAB($in)) { +bytes = $in; +if (JU.Rdr.isZipB(bytes)) { +return JSV.source.JDXReader.readBrukerFileZip(bytes, file == null ? filePath : file.getFullPath()); +}}if ((typeof($in)=='string') || bytes != null) { +if ((typeof($in)=='string')) data = $in; +br = JSV.common.JSVFileManager.getBufferedReaderForStringOrBytes($in); +} else if (Clazz_instanceOf($in,"java.io.InputStream")) { +br = JSV.common.JSVFileManager.getBufferedReaderForInputStream($in); +} else { +br = $in; +}var header = null; +var source = null; +try { +if (br == null) { +if (file != null && file.isDirectory()) return JSV.source.JDXReader.readBrukerFileDir(file.getFullPath()); +br = JSV.common.JSVFileManager.getBufferedReaderFromName(filePath, "##TITLE"); +}if (!isHeaderOnly) { +br.mark(400); +var chs = Clazz_newCharArray (400, '\0'); +br.read(chs, 0, 400); +br.reset(); +header = String.instantialize(chs); +if (header.startsWith("PK")) { +br.close(); +return JSV.source.JDXReader.readBrukerFileZip(null, file.getFullPath()); +}if (header.indexOf('\0') >= 0 || header.indexOf("##TITLE= Parameter file") == 0 || header.indexOf("##TITLE= Audit trail") == 0) { +br.close(); +return JSV.source.JDXReader.readBrukerFileDir(file.getParentAsFile().getFullPath()); +}var pt1 = header.indexOf('#'); +var pt2 = header.indexOf('<'); +if (pt1 < 0 || pt2 >= 0 && pt2 < pt1) { +var xmlType = header.toLowerCase(); +xmlType = (xmlType.contains(""); +break; +}continue; +}if (!isHeaderOnly) { +if (label.equals("##DATATYPE") && value.toUpperCase().equals("LINK")) { +this.getBlockSpectra(dataLDRTable); +spectrum = null; +continue; +}if (label.equals("##NTUPLES") || label.equals("##VARNAME")) { +this.getNTupleSpectra(dataLDRTable, spectrum, label); +spectrum = null; +continue; +}}if (label.equals("##JCAMPDX")) { +this.setVenderSpecificValues(this.t.rawLine); +}if (spectrum == null) spectrum = new JSV.common.Spectrum(); +this.processLabel(spectrum, dataLDRTable, label, value, isHeaderOnly); +} +if (isHeaderOnly && spectrum != null) this.addSpectrum(spectrum, false); +} +if (!isOK) throw new JSV.exception.JSVException("##TITLE record not found"); +this.source.setErrorLog(this.errorLog.toString()); +return this.source; +}, "~O,~B"); +Clazz_defineMethod(c$, "processLabel", +function(spectrum, dataLDRTable, label, value, isHeaderOnly){ +if (!this.readDataLabel(spectrum, label, value, this.errorLog, this.obscure, isHeaderOnly) && !isHeaderOnly) return; +JSV.source.JDXReader.addHeader(dataLDRTable, this.t.rawLabel, value); +if (!isHeaderOnly) this.checkCustomTags(spectrum, label, value); +}, "JSV.common.Spectrum,JU.Lst,~S,~S,~B"); +Clazz_defineMethod(c$, "logError", +function(err){ +this.errorLog.append(this.filePath == null || this.filePath.equals(this.lastErrPath) ? "" : this.filePath).append("\n").append(err).append("\n"); +this.lastErrPath = this.filePath; +}, "~S"); +Clazz_defineMethod(c$, "setVenderSpecificValues", +function(rawLine){ +if (rawLine.indexOf("JEOL") >= 0) { +System.out.println("Skipping ##SHIFTREFERENCE for JEOL " + rawLine); +this.ignoreShiftReference = true; +}if (rawLine.indexOf("MestReNova") >= 0) { +this.ignorePeakTables = true; +}}, "~S"); +Clazz_defineMethod(c$, "getValue", +function(label){ +var value = (this.isTabularDataLabel(label) ? "" : this.t.getValue()); +return ("##END".equals(label) ? null : value); +}, "~S"); +Clazz_defineMethod(c$, "isTabularDataLabel", +function(label){ +return (this.isTabularData = ("##DATATABLE##PEAKTABLE##XYDATA##XYPOINTS#".indexOf(label + "#") >= 0)); +}, "~S"); +Clazz_defineMethod(c$, "addSpectrum", +function(spectrum, forceSub){ +if (!this.loadImaginary && spectrum.isImaginary()) { +JU.Logger.info("FileReader skipping imaginary spectrum -- use LOADIMAGINARY TRUE to load this spectrum."); +return true; +}if (this.acdAssignments != null) { +if (!spectrum.dataType.equals("MASS SPECTRUM") && !spectrum.isContinuous()) { +JU.Logger.info("Skipping ACD Labs line spectrum for " + spectrum); +return true; +}if (this.acdAssignments.size() > 0) { +try { +this.mpr.setACDAssignments(spectrum.title, spectrum.getTypeLabel(), this.source.peakCount, this.acdAssignments, this.acdMolFile); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.info("Failed to create peak data: " + e); +} else { +throw e; +} +} +}if (this.acdMolFile != null) JSV.common.JSVFileManager.cachePut("mol", this.acdMolFile); +}if (!Float.isNaN(this.nmrMaxY)) spectrum.normalizeSimulation(this.nmrMaxY); + else if (spectrum.getMaxY() >= 10000) spectrum.normalizeSimulation(1000); +if (this.isSimulation) spectrum.setSimulated(this.filePath); +this.nSpec++; +if (this.firstSpec > 0 && this.nSpec < this.firstSpec) return true; +if (this.lastSpec > 0 && this.nSpec > this.lastSpec) return !(this.done = true); +spectrum.setBlockID(this.blockID); +this.source.addJDXSpectrum(null, spectrum, forceSub); +return true; +}, "JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "getBlockSpectra", +function(sourceLDRTable){ +JU.Logger.debug("--JDX block start--"); +var label = ""; +var value = null; +var isNew = (this.source.type == 0); +var forceSub = false; +while ((label = this.t.getLabel()) != null && !label.equals("##TITLE")) { +value = this.getValue(label); +if (isNew && !JSV.source.JDXReader.readHeaderLabel(this.source, label, value, this.errorLog, this.obscure)) JSV.source.JDXReader.addHeader(sourceLDRTable, this.t.rawLabel, value); +if (label.equals("##BLOCKS")) { +var nBlocks = JU.PT.parseInt(value); +if (nBlocks > 100 && this.firstSpec <= 0) forceSub = true; +}} +value = this.getValue(label); +if (!"##TITLE".equals(label)) throw new JSV.exception.JSVException("Unable to read block source"); +if (isNew) this.source.setHeaderTable(sourceLDRTable); +this.source.type = 1; +this.source.isCompoundSource = true; +var dataLDRTable; +var spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +this.readDataLabel(spectrum, label, value, this.errorLog, this.obscure, false); +try { +var tmp; +while ((tmp = this.t.getLabel()) != null) { +if ((value = this.getValue(tmp)) == null && "##END".equals(label)) { +JU.Logger.debug("##END= " + this.t.getValue()); +break; +}label = tmp; +if (this.isTabularData) { +this.processTabularData(spectrum, dataLDRTable, label, false); +continue; +}if (label.equals("##DATATYPE")) { +if (value.toUpperCase().equals("LINK")) { +this.getBlockSpectra(dataLDRTable); +spectrum = null; +label = null; +} else if (value.toUpperCase().startsWith("NMR PEAK")) { +if (this.ignorePeakTables) { +this.done = true; +return this.source; +}}} else if (label.equals("##NTUPLES") || label.equals("##VARNAME")) { +this.getNTupleSpectra(dataLDRTable, spectrum, label); +spectrum = null; +label = ""; +}if (this.done) break; +if (spectrum == null) { +spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +if (label === "") continue; +if (label == null) { +label = "##END"; +continue; +}}if (value == null) { +if (spectrum.getXYCoords().length > 0 && !this.addSpectrum(spectrum, forceSub)) return this.source; +spectrum = new JSV.common.Spectrum(); +dataLDRTable = new JU.Lst(); +continue; +}this.processLabel(spectrum, dataLDRTable, label, value, false); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (!JSV.common.JSViewer.isJS) e.printStackTrace(); +throw new JSV.exception.JSVException(e.getMessage()); +} else { +throw e; +} +} +this.addErrorLogSeparator(); +this.source.setErrorLog(this.errorLog.toString()); +JU.Logger.debug("--JDX block end--"); +return this.source; +}, "JU.Lst"); +Clazz_defineMethod(c$, "addErrorLogSeparator", +function(){ +if (this.errorLog.length() > 0 && this.errorLog.lastIndexOf("=====================\n") != this.errorLog.length() - "=====================\n".length) this.logError("=====================\n"); +}); +Clazz_defineMethod(c$, "getNTupleSpectra", +function(sourceLDRTable, spectrum0, label){ +var minMaxY = Clazz_newDoubleArray(-1, [1.7976931348623157E308, 4.9E-324]); +this.blockID = Math.random(); +var isOK = true; +if (this.firstSpec > 0) spectrum0.setNumDim(1); +var isVARNAME = label.equals("##VARNAME"); +if (!isVARNAME) { +label = ""; +}var nTupleTable = new java.util.Hashtable(); +var plotSymbols = new Array(2); +var isNew = (this.source.type == 0); +if (isNew) { +this.source.type = 2; +this.source.isCompoundSource = true; +this.source.setHeaderTable(sourceLDRTable); +}while (!(label = (isVARNAME ? label : this.t.getLabel())).equals("##PAGE")) { +isVARNAME = false; +var st = new java.util.StringTokenizer(this.t.getValue(), ","); +var attrList = new JU.Lst(); +while (st.hasMoreTokens()) attrList.addLast(st.nextToken().trim()); + +nTupleTable.put(label, attrList); +} +var symbols = nTupleTable.get("##SYMBOL"); +if (!label.equals("##PAGE")) throw new JSV.exception.JSVException("Error Reading NTuple Source"); +var page = this.t.getValue(); +var spectrum = null; +var isFirst = true; +while (!this.done) { +if ((label = this.t.getLabel()).equals("##ENDNTUPLES")) { +this.t.getValue(); +break; +}if (label.equals("##PAGE")) { +page = this.t.getValue(); +continue; +}if (spectrum == null) { +spectrum = new JSV.common.Spectrum(); +spectrum0.copyTo(spectrum); +spectrum.setTitle(spectrum0.getTitle()); +if (!spectrum.is1D()) { +var pt = page.indexOf('='); +if (pt >= 0) try { +spectrum.setY2D(this.parseAFFN(page.substring(0, pt), page.substring(pt + 1).trim())); +var y2dUnits = page.substring(0, pt).trim(); +var i = symbols.indexOf(y2dUnits); +if (i >= 0) spectrum.setY2DUnits(nTupleTable.get("##UNITS").get(i)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}}var dataLDRTable = new JU.Lst(); +spectrum.setHeaderTable(dataLDRTable); +while (!label.equals("##DATATABLE")) { +JSV.source.JDXReader.addHeader(dataLDRTable, this.t.rawLabel, this.t.getValue()); +label = this.t.getLabel(); +} +var continuous = true; +var line = this.t.flushLine(); +if (line.trim().indexOf("PEAKS") > 0) continuous = false; +var index1 = line.indexOf('('); +var index2 = line.lastIndexOf(')'); +if (index1 == -1 || index2 == -1) throw new JSV.exception.JSVException("Variable List not Found"); +var varList = line.substring(index1, index2 + 1); +var countSyms = 0; +for (var i = 0; i < symbols.size(); i++) { +var sym = symbols.get(i).trim(); +if (varList.indexOf(sym) != -1) { +plotSymbols[countSyms++] = sym; +}if (countSyms == 2) break; +} +this.setTabularDataType(spectrum, "##" + (continuous ? "XYDATA" : "PEAKTABLE")); +if (!this.readNTUPLECoords(spectrum, nTupleTable, plotSymbols, minMaxY)) throw new JSV.exception.JSVException("Unable to read Ntuple Source"); +if (!spectrum.nucleusX.equals("?")) spectrum0.nucleusX = spectrum.nucleusX; +spectrum0.nucleusY = spectrum.nucleusY; +spectrum0.freq2dX = spectrum.freq2dX; +spectrum0.freq2dY = spectrum.freq2dY; +spectrum0.y2DUnits = spectrum.y2DUnits; +for (var i = 0; i < sourceLDRTable.size(); i++) { +var entry = sourceLDRTable.get(i); +var key = JSV.source.JDXSourceStreamTokenizer.cleanLabel(entry[0]); +if (!key.equals("##TITLE") && !key.equals("##DATACLASS") && !key.equals("##NTUPLES")) dataLDRTable.addLast(entry); +} +if (isOK) this.addSpectrum(spectrum, !isFirst); +isFirst = false; +spectrum = null; +} +this.addErrorLogSeparator(); +this.source.setErrorLog(this.errorLog.toString()); +JU.Logger.info("NTUPLE MIN/MAX Y = " + minMaxY[0] + " " + minMaxY[1]); +return this.source; +}, "JU.Lst,JSV.source.JDXDataObject,~S"); +Clazz_defineMethod(c$, "readDataLabel", +function(spectrum, label, value, errorLog, obscure, isHeaderOnly){ +if (!JSV.source.JDXReader.readHeaderLabel(spectrum, label, value, errorLog, obscure)) return false; +label += " "; +if (("##MINX ##MINY ##MAXX ##MAXY ##FIRSTY ##DELTAX ##DATACLASS ").indexOf(label) >= 0) return false; +switch (("##FIRSTX ##LASTX ##NPOINTS ##XFACTOR ##YFACTOR ##XUNITS ##YUNITS ##XLABEL ##YLABEL ##NUMDIM ##OFFSET ").indexOf(label)) { +case 0: +spectrum.fileFirstX = this.parseAFFN(label, value); +return false; +case 10: +spectrum.fileLastX = this.parseAFFN(label, value); +return false; +case 20: +spectrum.fileNPoints = Integer.parseInt(value); +return false; +case 30: +spectrum.setXFactor(this.parseAFFN(label, value)); +return false; +case 40: +spectrum.yFactor = this.parseAFFN(label, value); +return false; +case 50: +spectrum.setXUnits(value); +return false; +case 60: +spectrum.setYUnits(value); +return false; +case 70: +spectrum.setXLabel(value); +return true; +case 80: +spectrum.setYLabel(value); +return true; +case 90: +spectrum.setNumDim(Integer.parseInt(value)); +return false; +case 100: +if (!spectrum.isShiftTypeSpecified()) { +spectrum.setShiftReference(this.parseAFFN(label, value), 1, 1); +}return false; +default: +if (label.length < 17) return true; +if (label.equals("##.OBSERVEFREQUENCY ")) { +spectrum.setObservedFreq(this.parseAFFN(label, value)); +return false; +}if (label.equals("##.OBSERVENUCLEUS ")) { +spectrum.setObservedNucleus(value); +return false; +}if (label.equals("##$REFERENCEPOINT ") && !spectrum.isShiftTypeSpecified()) { +var pt = value.indexOf(" "); +if (pt > 0) value = value.substring(0, pt); +spectrum.setShiftReference(this.parseAFFN(label, value), 1, 2); +return false; +}if (label.equals("##.SHIFTREFERENCE ")) { +if (this.ignoreShiftReference || !(spectrum.dataType.toUpperCase().contains("SPECTRUM"))) return false; +value = JU.PT.replaceAllCharacters(value, ")(", ""); +var srt = new java.util.StringTokenizer(value, ","); +if (srt.countTokens() != 4) return false; +try { +srt.nextToken(); +srt.nextToken(); +var pt = Integer.parseInt(srt.nextToken().trim()); +var shift = this.parseAFFN(label, srt.nextToken().trim()); +spectrum.setShiftReference(shift, pt, 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return false; +}return true; +} +}, "JSV.source.JDXDataObject,~S,~S,JU.SB,~B,~B"); +c$.readHeaderLabel = Clazz_defineMethod(c$, "readHeaderLabel", +function(jdxHeader, label, value, errorLog, obscure){ +switch (("##TITLE#####JCAMPDX###ORIGIN####OWNER#####DATATYPE##LONGDATE##DATE######TIME####").indexOf(label + "#")) { +case 0: +jdxHeader.setTitle(obscure || value == null || value.equals("") ? "Unknown" : value); +return false; +case 10: +jdxHeader.jcampdx = value; +var version = JU.PT.parseFloat(value); +if (version >= 6.0 || Float.isNaN(version)) { +if (errorLog != null) errorLog.append("Warning: JCAMP-DX version may not be fully supported: " + value); +}return false; +case 20: +jdxHeader.origin = (value != null && !value.equals("") ? value : "Unknown"); +return false; +case 30: +jdxHeader.owner = (value != null && !value.equals("") ? value : "Unknown"); +return false; +case 40: +jdxHeader.dataType = value; +return false; +case 50: +jdxHeader.longDate = value; +return false; +case 60: +jdxHeader.date = value; +return false; +case 70: +jdxHeader.time = value; +return false; +} +return true; +}, "JSV.source.JDXHeader,~S,~S,JU.SB,~B"); +Clazz_defineMethod(c$, "setTabularDataType", +function(spectrum, label){ +if (label.equals("##PEAKASSIGNMENTS")) spectrum.setDataClass("PEAKASSIGNMENTS"); + else if (label.equals("##PEAKTABLE")) spectrum.setDataClass("PEAKTABLE"); + else if (label.equals("##XYDATA")) spectrum.setDataClass("XYDATA"); + else if (label.equals("##XYPOINTS")) spectrum.setDataClass("XYPOINTS"); +}, "JSV.source.JDXDataObject,~S"); +Clazz_defineMethod(c$, "processTabularData", +function(spec, table, label, isHeaderOnly){ +this.setTabularDataType(spec, label); +spec.setHeaderTable(table); +if (spec.dataClass.equals("XYDATA")) { +spec.checkJDXRequiredTokens(); +if (!isHeaderOnly) this.decompressData(spec, null); +return; +}if (spec.dataClass.equals("PEAKTABLE") || spec.dataClass.equals("XYPOINTS")) { +spec.setContinuous(spec.dataClass.equals("XYPOINTS")); +try { +this.t.readLineTrimmed(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +var xyCoords; +if (spec.xFactor != 1.7976931348623157E308 && spec.yFactor != 1.7976931348623157E308) { +var data = this.t.getValue(); +xyCoords = JSV.common.Coordinate.parseDSV(data, spec.xFactor, spec.yFactor); +} else { +xyCoords = JSV.common.Coordinate.parseDSV(this.t.getValue(), 1, 1); +}spec.setXYCoords(xyCoords); +var fileDeltaX = JSV.common.Coordinate.deltaX(xyCoords[xyCoords.length - 1].getXVal(), xyCoords[0].getXVal(), xyCoords.length); +spec.setIncreasing(fileDeltaX > 0); +return; +}throw new JSV.exception.JSVException("Unable to read JDX file tabular data for line " + this.t.labelLineNo); +}, "JSV.source.JDXDataObject,JU.Lst,~S,~B"); +Clazz_defineMethod(c$, "readNTUPLECoords", +function(spec, nTupleTable, plotSymbols, minMaxY){ +var list; +var label; +if (spec.dataClass.equals("XYDATA")) { +list = nTupleTable.get("##SYMBOL"); +var index1 = list.indexOf(plotSymbols[0]); +var index2 = list.indexOf(plotSymbols[1]); +list = nTupleTable.get("##VARNAME"); +spec.setVarName(list.get(index2).toUpperCase()); +list = nTupleTable.get(label = "##FACTOR"); +spec.setXFactor(this.parseAFFN(label, list.get(index1))); +spec.setYFactor(this.parseAFFN(label, list.get(index2))); +list = nTupleTable.get(label = "##LAST"); +spec.fileLastX = this.parseAFFN(label, list.get(index1)); +list = nTupleTable.get(label = "##FIRST"); +spec.fileFirstX = this.parseAFFN(label, list.get(index1)); +list = nTupleTable.get("##VARDIM"); +spec.fileNPoints = Integer.parseInt(list.get(index1)); +list = nTupleTable.get("##UNITS"); +spec.setXUnits(list.get(index1)); +spec.setYUnits(list.get(index2)); +if (spec.nucleusX == null && (list = nTupleTable.get("##.NUCLEUS")) != null) { +spec.setNucleusAndFreq(list.get(0), false); +spec.setNucleusAndFreq(list.get(index1), true); +} else { +if (spec.nucleusX == null) spec.nucleusX = "?"; +}this.decompressData(spec, minMaxY); +return true; +}if (spec.dataClass.equals("PEAKTABLE") || spec.dataClass.equals("XYPOINTS")) { +spec.setContinuous(spec.dataClass.equals("XYPOINTS")); +list = nTupleTable.get("##SYMBOL"); +var index1 = list.indexOf(plotSymbols[0]); +var index2 = list.indexOf(plotSymbols[1]); +list = nTupleTable.get("##UNITS"); +spec.setXUnits(list.get(index1)); +spec.setYUnits(list.get(index2)); +spec.setXYCoords(JSV.common.Coordinate.parseDSV(this.t.getValue(), spec.xFactor, spec.yFactor)); +return true; +}return false; +}, "JSV.source.JDXDataObject,java.util.Map,~A,~A"); +Clazz_defineMethod(c$, "parseAFFN", +function(label, val){ +var pt = val.indexOf("E"); +if (pt > 0) { +var len = val.length; +var ch; +switch (len - pt) { +case 2: +case 3: +this.logError("Warning - " + label + " value " + val + " is not of the format xxxE[+/-]nn or xxxE[+/-]nnn (spec. 4.5.3) -- warning only; accepted"); +break; +case 4: +case 5: +if ((ch = val.charAt(pt + 1)) == '+' || ch == '-') break; +default: +this.logError("Error - " + label + " value " + val + " is not of the format xxxE[+/-]nn or xxxE[+/-]nnn (spec. 4.5.3) -- " + val.substring(pt) + " ignored!"); +val = val.substring(0, pt); +} +}return Double.parseDouble(val); +}, "~S,~S"); +Clazz_defineMethod(c$, "decompressData", +function(spec, minMaxY){ +var errPt = this.errorLog.length(); +spec.setIncreasing(spec.fileLastX > spec.fileFirstX); +spec.setContinuous(true); +var decompressor = new JSV.source.JDXDecompressor(this.t, spec.fileFirstX, spec.fileLastX, spec.xFactor, spec.yFactor, spec.fileNPoints); +var t = System.currentTimeMillis(); +var xyCoords = decompressor.decompressData(this.errorLog); +if (JU.Logger.debugging) JU.Logger.debug("decompression time = " + (System.currentTimeMillis() - t) + " ms"); +spec.setXYCoords(xyCoords); +var d = decompressor.getMinY(); +if (minMaxY != null) { +if (d < minMaxY[0]) minMaxY[0] = d; +d = decompressor.getMaxY(); +if (d > minMaxY[1]) minMaxY[1] = d; +}spec.finalizeCoordinates(); +if (this.errorLog.length() != errPt) { +var fileDeltaX = JSV.common.Coordinate.deltaX(spec.fileLastX, spec.fileFirstX, spec.fileNPoints); +this.logError(spec.getTitle()); +this.logError("firstX from Header " + spec.fileFirstX); +this.logError("lastX from Header " + spec.fileLastX + " Found " + decompressor.lastX); +this.logError("deltaX from Header " + fileDeltaX); +this.logError("Number of points in Header " + spec.fileNPoints + " Found " + decompressor.getNPointsFound()); +} else { +}if (JU.Logger.debugging) { +System.err.println(this.errorLog.toString()); +}}, "JSV.source.JDXDataObject,~A"); +c$.addHeader = Clazz_defineMethod(c$, "addHeader", +function(table, label, value){ +var entry = null; +for (var i = 0; i < table.size(); i++) if ((entry = table.get(i))[0].equals(label)) { +entry[1] = value; +return; +} +table.addLast( Clazz_newArray(-1, [label, value, JSV.source.JDXSourceStreamTokenizer.cleanLabel(label)])); +}, "JU.Lst,~S,~S"); +Clazz_defineMethod(c$, "checkCustomTags", +function(spectrum, label, value){ +if (label.length > 10) label = label.substring(0, 10); +if (spectrum == null) System.out.println(label); + else this.modelSpectrum = spectrum; +var pt = "##$MODELS ##$PEAKS ##$SIGNALS##$MOLFILE##PEAKASSI##$UVIRASS##$MSFRAGM".indexOf(label); +if (pt < 0) return false; +this.getMpr().set(this, this.filePath, null); +try { +this.reader = new java.io.BufferedReader( new java.io.StringReader(value)); +switch (pt) { +case 0: +this.mpr.readModels(); +break; +case 10: +case 20: +this.peakData = new JU.Lst(); +this.source.peakCount += this.mpr.readPeaks(pt == 20, this.source.peakCount); +break; +case 30: +this.acdAssignments = new JU.Lst(); +this.acdMolFile = JU.PT.rep(value, "$$ Empty String", ""); +break; +case 40: +case 50: +case 60: +this.acdAssignments = this.mpr.readACDAssignments((spectrum).fileNPoints, pt == 40); +break; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JSV.exception.JSVException(e.getMessage()); +} else { +throw e; +} +} finally { +this.reader = null; +} +return true; +}, "JSV.common.Spectrum,~S,~S"); +Clazz_defineMethod(c$, "getMpr", +function(){ +return (this.mpr == null ? this.mpr = JSV.common.JSViewer.getInterface("J.jsv.JDXMOLParser") : this.mpr); +}); +Clazz_overrideMethod(c$, "rd", +function(){ +return this.reader.readLine(); +}); +Clazz_overrideMethod(c$, "setSpectrumPeaks", +function(nH, peakXLabel, peakYlabel){ +this.modelSpectrum.setPeakList(this.peakData, peakXLabel, peakYlabel); +if (this.modelSpectrum.isNMR()) this.modelSpectrum.setHydrogenCount(nH); +}, "~N,~S,~S"); +Clazz_overrideMethod(c$, "addPeakData", +function(info){ +if (this.peakData == null) this.peakData = new JU.Lst(); +this.peakData.addLast( new JSV.common.PeakInfo(info)); +}, "~S"); +Clazz_overrideMethod(c$, "processModelData", +function(id, data, type, base, last, modelScale, vibScale, isFirst){ +}, "~S,~S,~S,~S,~S,~N,~N,~B"); +Clazz_overrideMethod(c$, "discardLinesUntilContains", +function(containsMatch){ +var line; +while ((line = this.rd()) != null && line.indexOf(containsMatch) < 0) { +} +return line; +}, "~S"); +Clazz_overrideMethod(c$, "discardLinesUntilContains2", +function(s1, s2){ +var line; +while ((line = this.rd()) != null && line.indexOf(s1) < 0 && line.indexOf(s2) < 0) { +} +return line; +}, "~S,~S"); +Clazz_overrideMethod(c$, "discardLinesUntilNonBlank", +function(){ +var line; +while ((line = this.rd()) != null && line.trim().length == 0) { +} +return line; +}); +c$.VAR_LIST_TABLE = Clazz_newArray(-1, ["PEAKTABLE XYDATA XYPOINTS", " (XY..XY) (X++(Y..Y)) (XY..XY) "]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(["JSV.source.JDXHeader"], "JSV.source.JDXSource", ["JU.Lst"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.type = 0; +this.isCompoundSource = false; +this.jdxSpectra = null; +this.errors = ""; +this.filePath = null; +this.peakCount = 0; +this.isView = false; +this.inlineData = null; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXSource", JSV.source.JDXHeader); +Clazz_makeConstructor(c$, +function(type, filePath){ +Clazz_superConstructor (this, JSV.source.JDXSource, []); +this.type = type; +this.setFilePath(filePath); +this.headerTable = new JU.Lst(); +this.jdxSpectra = new JU.Lst(); +this.isCompoundSource = (type != 0); +}, "~N,~S"); +Clazz_defineMethod(c$, "dispose", +function(){ +this.headerTable = null; +this.jdxSpectra = null; +}); +Clazz_defineMethod(c$, "getJDXSpectrum", +function(index){ +return (this.jdxSpectra.size() <= index ? null : this.jdxSpectra.get(index)); +}, "~N"); +Clazz_defineMethod(c$, "addJDXSpectrum", +function(filePath, spectrum, forceSub){ +if (filePath == null) filePath = this.filePath; +spectrum.setFilePath(filePath); +if (this.inlineData != null) spectrum.setInlineData(this.inlineData); +var n = this.jdxSpectra.size(); +if (n == 0 || !this.jdxSpectra.get(n - 1).addSubSpectrum(spectrum, forceSub)) this.jdxSpectra.addLast(spectrum); +}, "~S,JSV.common.Spectrum,~B"); +Clazz_defineMethod(c$, "getNumberOfSpectra", +function(){ +return this.jdxSpectra.size(); +}); +Clazz_defineMethod(c$, "getSpectra", +function(){ +return this.jdxSpectra; +}); +Clazz_defineMethod(c$, "getSpectraAsArray", +function(){ +return (this.jdxSpectra == null ? null : this.jdxSpectra.toArray()); +}); +Clazz_defineMethod(c$, "getErrorLog", +function(){ +return this.errors; +}); +Clazz_defineMethod(c$, "setErrorLog", +function(errors){ +this.errors = errors; +}, "~S"); +Clazz_defineMethod(c$, "setFilePath", +function(filePath){ +this.filePath = filePath; +}, "~S"); +Clazz_defineMethod(c$, "getFilePath", +function(){ +return this.filePath; +}); +c$.createView = Clazz_defineMethod(c$, "createView", +function(specs){ +var source = new JSV.source.JDXSource(-2, "view"); +source.isView = true; +for (var i = 0; i < specs.size(); i++) source.addJDXSpectrum(specs.get(i).getFilePath(), specs.get(i), false); + +return source; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getHeaderRowDataAsArray", +function(addDataClass, rowData){ +if (rowData == null) rowData = Clazz_newArray(0, 0, null); +var data = this.getHeaderRowDataAsArray(addDataClass, rowData.length); +for (var i = rowData.length; --i >= 0; ) data[data.length - rowData.length + i] = rowData[i]; + +return data; +}, "~B,~A"); +Clazz_defineMethod(c$, "setID", +function(id){ +this.jdxSpectra.get(0).sourceID = id; +}, "~S"); +Clazz_defineMethod(c$, "matchesFilePath", +function(filePath){ +return this.filePath.equals(filePath) || this.filePath.$replace('\\', '/').equals(filePath); +}, "~S"); +Clazz_defineMethod(c$, "setInlineData", +function(data){ +this.inlineData = data; +if (this.jdxSpectra != null) for (var i = this.jdxSpectra.size(); --i >= 0; ) this.jdxSpectra.get(i).setInlineData(data); + +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.source"); +Clazz_load(null, "JSV.source.JDXSourceStreamTokenizer", ["JU.SB", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.br = null; +this.rawLabel = null; +this.value = null; +this.labelLineNo = 0; +this.line = null; +this.lineNo = 0; +this.rawLine = null; +Clazz_instantialize(this, arguments);}, JSV.source, "JDXSourceStreamTokenizer", null); +Clazz_makeConstructor(c$, +function(br){ +this.br = br; +}, "java.io.BufferedReader"); +Clazz_defineMethod(c$, "peakLabel", +function(){ +return this.nextLabel(false); +}); +Clazz_defineMethod(c$, "getLabel", +function(){ +return this.nextLabel(true); +}); +Clazz_defineMethod(c$, "nextLabel", +function(isGet){ +this.rawLabel = null; +this.value = null; +while (this.line == null || this.line.length == 0) { +try { +this.readLine(); +if (this.line == null) { +this.line = ""; +return null; +}this.line = this.line.trim(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +this.line = ""; +return null; +} else { +throw e; +} +} +if (this.line.startsWith("##")) break; +this.line = null; +} +this.rawLine = this.line; +var pt = this.line.indexOf("="); +if (pt < 0) { +if (isGet) JU.Logger.info("BAD JDX LINE -- no '=' (line " + this.lineNo + "): " + this.line); +this.rawLabel = this.line; +if (!isGet) this.line = ""; +} else { +this.rawLabel = this.line.substring(0, pt).trim(); +if (isGet) this.line = this.line.substring(pt + 1); +}this.labelLineNo = this.lineNo; +if (JU.Logger.debugging) JU.Logger.info(this.rawLabel); +return JSV.source.JDXSourceStreamTokenizer.cleanLabel(this.rawLabel); +}, "~B"); +c$.cleanLabel = Clazz_defineMethod(c$, "cleanLabel", +function(label){ +if (label == null) return null; +var i; +var str = new JU.SB(); +for (i = 0; i < label.length; i++) { +switch ((label.charAt(i)).charCodeAt(0)) { +case 47: +case 92: +case 32: +case 45: +case 95: +break; +default: +str.appendC(label.charAt(i)); +break; +} +} +return str.toString().toUpperCase(); +}, "~S"); +Clazz_defineMethod(c$, "getValue", +function(){ +if (this.value != null) return this.value; +var sb = new JU.SB().append(this.line); +if (sb.length() > 0) sb.appendC('\n'); +try { +while (this.readLine() != null) { +if (this.line.indexOf("##") >= 0 && this.line.trim().startsWith("##")) break; +sb.append(this.line).appendC('\n'); +} +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +JU.Logger.info(e.toString()); +} else { +throw e; +} +} +this.value = (this.rawLabel.startsWith("##$") ? sb.toString().trim() : JSV.source.JDXSourceStreamTokenizer.trimLines(sb)); +if (JU.Logger.debugging) JU.Logger.info(this.value); +return this.value; +}); +Clazz_defineMethod(c$, "readLineTrimmed", +function(){ +this.readLine(); +if (this.line == null) return null; +if (this.line.indexOf("$$") < 0) return this.line.trim(); +var sb = new JU.SB().append(this.line); +return JSV.source.JDXSourceStreamTokenizer.trimLines(sb); +}); +Clazz_defineMethod(c$, "flushLine", +function(){ +var sb = new JU.SB().append(this.line); +this.line = null; +return JSV.source.JDXSourceStreamTokenizer.trimLines(sb); +}); +Clazz_defineMethod(c$, "readLine", +function(){ +this.line = this.br.readLine(); +this.lineNo++; +return this.line; +}); +c$.trimLines = Clazz_defineMethod(c$, "trimLines", +function(v){ +var n = v.length(); +var ilast = n - 1; +var vpt = JSV.source.JDXSourceStreamTokenizer.ptNonWhite(v, 0, n); +if (vpt >= n) return ""; +var buffer = Clazz_newCharArray (n - vpt, '\0'); +var pt = 0; +for (; vpt < n; vpt++) { +var ch; +switch ((ch = v.charAt(vpt)).charCodeAt(0)) { +case 13: +if (vpt < ilast && v.charAt(vpt + 1) == '\n') continue; +ch = '\n'; +break; +case 10: +if (pt > 0 && buffer[pt - 1] != '\n') pt -= vpt - JSV.source.JDXSourceStreamTokenizer.ptNonSpaceRev(v, vpt) - 1; +vpt = JSV.source.JDXSourceStreamTokenizer.ptNonSpace(v, ++vpt, n) - 1; +break; +case 36: +if (vpt < ilast && v.charAt(vpt + 1) == '$') { +vpt++; +while (++vpt < n && "\n\r".indexOf(v.charAt(vpt)) < 0) { +} +continue; +}break; +} +if (ch == '\n' && pt > 0 && buffer[pt - 1] == '\n') continue; +buffer[pt++] = ch; +} +if (pt > 0 && buffer[pt - 1] == '\n') --pt; +return ( String.instantialize(buffer)).substring(0, pt).trim(); +}, "JU.SB"); +c$.ptNonWhite = Clazz_defineMethod(c$, "ptNonWhite", +function(v, pt, n){ +while (pt < n && Character.isWhitespace(v.charAt(pt))) pt++; + +return pt; +}, "JU.SB,~N,~N"); +c$.ptNonSpace = Clazz_defineMethod(c$, "ptNonSpace", +function(v, pt, n){ +while (pt < n && (v.charAt(pt) == ' ' || v.charAt(pt) == '\t')) pt++; + +return pt; +}, "JU.SB,~N,~N"); +c$.ptNonSpaceRev = Clazz_defineMethod(c$, "ptNonSpaceRev", +function(v, pt){ +while (--pt >= 0 && (v.charAt(pt) == ' ' || v.charAt(pt) == '\t')) { +} +return pt; +}, "JU.SB,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +Clazz_load(["JSV.api.JSVTree"], "JSV.tree.SimpleTree", ["JSV.common.JSVFileManager", "$.PanelNode", "JSV.tree.SimpleTreeModel", "$.SimpleTreeNode", "$.SimpleTreePath"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.si = null; +this.rootNode = null; +this.spectraTreeModel = null; +this.vwr = null; +this.selectedPath = null; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTree", null, JSV.api.JSVTree); +Clazz_makeConstructor(c$, +function(viewer){ +this.vwr = viewer; +this.rootNode = new JSV.tree.SimpleTreeNode("Spectra", null); +this.spectraTreeModel = new JSV.tree.SimpleTreeModel(this.rootNode); +}, "JSV.common.JSViewer"); +Clazz_overrideMethod(c$, "getRootNode", +function(){ +return this.rootNode; +}); +Clazz_defineMethod(c$, "valueChanged", +function(){ +this.vwr.selectedTreeNode(this.getLastSelectedPathComponent()); +}); +Clazz_defineMethod(c$, "getLastSelectedPathComponent", +function(){ +return (this.selectedPath == null ? null : this.selectedPath.getLastPathComponent()); +}); +Clazz_overrideMethod(c$, "setSelectedPanel", +function(si, jsvp){ +if (jsvp != null) { +var treeNode = JSV.common.PanelNode.findNode(jsvp, this.vwr.panelNodes).treeNode; +this.setSelectionPath(this.vwr.spectraTree.newTreePath(treeNode.getPath())); +}}, "JSV.api.ScriptInterface,JSV.api.JSVPanel"); +Clazz_defineMethod(c$, "setSelectionPath", +function(newTreePath){ +this.selectedPath = newTreePath; +this.valueChanged(); +}, "JSV.api.JSVTreePath"); +Clazz_overrideMethod(c$, "createTree", +function(fileCount, source, panels){ +var tree = this.vwr.spectraTree; +var rootNode = tree.getRootNode(); +var panelNodes = this.vwr.panelNodes; +var fileName = JSV.common.JSVFileManager.getTagName(source.getFilePath()); +var panelNode = new JSV.common.PanelNode(null, fileName, source, null); +var fileNode = new JSV.tree.SimpleTreeNode(fileName, panelNode); +panelNode.setTreeNode(fileNode); +tree.spectraTreeModel.insertNodeInto(fileNode, rootNode, rootNode.getChildCount()); +for (var i = 0; i < panels.length; i++) { +var jsvp = panels[i]; +var id = fileCount + "." + (i + 1); +panelNode = new JSV.common.PanelNode(id, fileName, source, jsvp); +var treeNode = new JSV.tree.SimpleTreeNode(panelNode.toString(), panelNode); +panelNode.setTreeNode(treeNode); +panelNodes.addLast(panelNode); +tree.spectraTreeModel.insertNodeInto(treeNode, fileNode, fileNode.getChildCount()); +} +this.vwr.selectFrameNode(panels[0]); +return fileNode; +}, "~N,JSV.source.JDXSource,~A"); +Clazz_overrideMethod(c$, "setPath", +function(path){ +this.setSelectionPath(path); +}, "JSV.api.JSVTreePath"); +Clazz_defineMethod(c$, "newTreePath", +function(path){ +return new JSV.tree.SimpleTreePath(path); +}, "~A"); +Clazz_overrideMethod(c$, "deleteNodes", +function(toDelete){ +for (var i = 0; i < toDelete.size(); i++) { +this.spectraTreeModel.removeNodeFromParent(toDelete.get(i)); +} +}, "JU.Lst"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +Clazz_load(["java.util.Enumeration"], "JSV.tree.SimpleTreeEnumeration", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.node = null; +this.pt = 0; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTreeEnumeration", null, java.util.Enumeration); +Clazz_makeConstructor(c$, +function(jsTreeNode){ +this.node = jsTreeNode; +}, "JSV.tree.SimpleTreeNode"); +Clazz_overrideMethod(c$, "hasMoreElements", +function(){ +return (this.pt < this.node.$children.size()); +}); +Clazz_overrideMethod(c$, "nextElement", +function(){ +return this.node.$children.get(this.pt++); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.rootNode = null; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTreeModel", null); +Clazz_makeConstructor(c$, +function(rootNode){ +this.rootNode = rootNode; +}, "JSV.api.JSVTreeNode"); +Clazz_defineMethod(c$, "insertNodeInto", +function(fileNode, rootNode, i){ +var node = rootNode; +node.$children.add(i, fileNode); +(fileNode).prevNode = node; +}, "JSV.api.JSVTreeNode,JSV.api.JSVTreeNode,~N"); +Clazz_defineMethod(c$, "removeNodeFromParent", +function(node){ +(node).prevNode.$children.removeObj(node); +}, "JSV.api.JSVTreeNode"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +Clazz_load(["JSV.api.JSVTreeNode"], "JSV.tree.SimpleTreeNode", ["JU.Lst", "JSV.tree.SimpleTreeEnumeration"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.panelNode = null; +this.index = 0; +this.prevNode = null; +this.$children = null; +this.text = null; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTreeNode", null, JSV.api.JSVTreeNode); +Clazz_makeConstructor(c$, +function(text, panelNode){ +this.text = text; +this.panelNode = panelNode; +this.$children = new JU.Lst(); +}, "~S,JSV.common.PanelNode"); +Clazz_overrideMethod(c$, "getPanelNode", +function(){ +return this.panelNode; +}); +Clazz_overrideMethod(c$, "getIndex", +function(){ +return this.index; +}); +Clazz_overrideMethod(c$, "setIndex", +function(index){ +this.index = index; +}, "~N"); +Clazz_overrideMethod(c$, "children", +function(){ +return new JSV.tree.SimpleTreeEnumeration(this); +}); +Clazz_overrideMethod(c$, "getChildCount", +function(){ +return this.$children.size(); +}); +Clazz_overrideMethod(c$, "getPath", +function(){ +var o = new JU.Lst(); +var node = this; +o.addLast(node); +while ((node = node.prevNode) != null) o.add(0, node); + +return o.toArray(); +}); +Clazz_overrideMethod(c$, "isLeaf", +function(){ +return (this.prevNode != null && this.prevNode.prevNode != null); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.text; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.tree"); +Clazz_load(["JSV.api.JSVTreePath"], "JSV.tree.SimpleTreePath", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.path = null; +Clazz_instantialize(this, arguments);}, JSV.tree, "SimpleTreePath", null, JSV.api.JSVTreePath); +Clazz_makeConstructor(c$, +function(path){ +this.path = path; +}, "~A"); +Clazz_overrideMethod(c$, "getLastPathComponent", +function(){ +return (this.path == null || this.path.length == 0 ? null : this.path[this.path.length - 1]); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 + +})(); + +Clazz._coreLoaded = true; + + + +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejsv.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corejsv.z.js new file mode 100755 index 000000000000..526a254ed110 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejsv.z.js @@ -0,0 +1,1224 @@ +(function($,s,Q,F,w,Ea,r,C,v,p,j,G,Fa,m,n,z,E,S,u,H,B,I,D,ra,K,L,R,A,X,Ga,T,U,fa,O,aa,M,V,ga,Ha,sa,ta,ha,ua,va,wa,xa,ya,za,Aa,ia,ja,Ba,ka,Ca,Ia,c,e,W,la){Jmol.___JmolDate="$Date: 2024-06-07 15:31:04 +0100 (Fri, 07 Jun 2024) $";Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties";Jmol.___JmolVersion="16.2.17";(function(b){b._Loader.registerPackages("java",["io","lang","lang.reflect","util"]);var a=java.util;b._Loader.ignore("net.sf.j2s.ajax.HttpRequest java.util.MapEntry.Type java.net.UnknownServiceException java.lang.Runtime java.security.AccessController java.security.PrivilegedExceptionAction java.io.File java.io.FileInputStream java.io.FileWriter java.io.OutputStreamWriter java.util.concurrent.Executors".split(" ")); +Math.rint=Math.round;Math.log10||(Math.log10=function(a){return Math.log(a)/2.302585092994046});Math.signum||(Math.signum=function(a){return 0==a||isNaN(a)?a:0>a?-1:1});if(b._supportsNativeObject)for(var d=0;dthis&&0this&&0d?1:0},"Number,Number");c(Integer,"bitCount",function(a){a-=a>>>1&1431655765;a=(a&858993459)+(a>>>2&858993459);a=a+(a>>>4)&252645135;a+=a>>>8;return a+(a>>>16)&63},"Number");Integer.bitCount=Integer.prototype.bitCount;c(Integer,"numberOfLeadingZeros",function(a){if(0==a)return 32;var d=1;0==a>>> +16&&(d+=16,a<<=16);0==a>>>24&&(d+=8,a<<=8);0==a>>>28&&(d+=4,a<<=4);0==a>>>30&&(d+=2,a<<=2);return d-(a>>>31)},"Number");Integer.numberOfLeadingZeros=Integer.prototype.numberOfLeadingZeros;c(Integer,"numberOfTrailingZeros",function(a){if(0==a)return 32;var d=31,b=a<<16;0!=b&&(d-=16,a=b);b=a<<8;0!=b&&(d-=8,a=b);b=a<<4;0!=b&&(d-=4,a=b);b=a<<2;0!=b&&(d-=2,a=b);return d-(a<<1>>>31)},"Number");Integer.numberOfTrailingZeros=Integer.prototype.numberOfTrailingZeros;c(Integer,"parseIntRadix",function(a,d){if(null== +a)throw new NumberFormatException("null");if(2>d)throw new NumberFormatException("radix "+d+" less than Character.MIN_RADIX");if(36=q)&&(0a){var d=a&16777215;return(a>>24&255)._numberToString(16)+(d="000000"+d._numberToString(16)).substring(d.length- +6)}return a._numberToString(16)};Integer.toOctalString=Integer.prototype.toOctalString=function(a){a.valueOf&&(a=a.valueOf());return a._numberToString(8)};Integer.toBinaryString=Integer.prototype.toBinaryString=function(a){a.valueOf&&(a=a.valueOf());return a._numberToString(2)};Integer.decodeRaw=c(Integer,"decodeRaw",function(a){0<=a.indexOf(".")&&(a="");var d=a.startsWith("-")?1:0;a=a.replace(/\#/,"0x").toLowerCase();d=a.startsWith("0x",d)?16:a.startsWith("0",d)?8:10;a=Number(a)&4294967295;return 8== +d?parseInt(a,8):a},"~S");Integer.decode=c(Integer,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a)||aInteger.MAX_VALUE)throw new NumberFormatException("Invalid Integer");return new Integer(a)},"~S");e(Integer,"hashCode",function(){return this.valueOf()});java.lang.Long=Long=function(){p(this,arguments)};U(Long,"Long",Number,Comparable,null,!0);Long.prototype.valueOf=function(){return 0};Long.toString=Long.prototype.toString=function(){return 0!=arguments.length?""+arguments[0]: +this===Long?"class java.lang.Long":""+this.valueOf()};V(Long,function(a){null==a&&(a=0);a="number"==typeof a?Math.round(a):Integer.parseIntRadix(a,10);this.valueOf=function(){return a}});Long.TYPE=Long.prototype.TYPE=Long;c(Long,"parseLong",function(a,d){return Integer.parseInt(a,d||10)});Long.parseLong=Long.prototype.parseLong;e(Long,"$valueOf",function(a){return new Long(a)});Long.$valueOf=Long.prototype.$valueOf;e(Long,"equals",function(a){return null==a||!C(a,Long)?!1:a.valueOf()==this.valueOf()}, +"Object");Long.toHexString=Long.prototype.toHexString=function(a){return a.toString(16)};Long.toOctalString=Long.prototype.toOctalString=function(a){return a.toString(8)};Long.toBinaryString=Long.prototype.toBinaryString=function(a){return a.toString(2)};Long.decode=c(Long,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a))throw new NumberFormatException("Invalid Long");return new Long(a)},"~S");java.lang.Short=Short=function(){p(this,arguments)};U(Short,"Short",Number,Comparable,null,!0);Short.prototype.valueOf= +function(){return 0};Short.toString=Short.prototype.toString=function(){return 0!=arguments.length?""+arguments[0]:this===Short?"class java.lang.Short":""+this.valueOf()};V(Short,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Integer.parseIntRadix(a,10));a=a.shortValue();this.valueOf=function(){return a}});Short.MIN_VALUE=Short.prototype.MIN_VALUE=-32768;Short.MAX_VALUE=Short.prototype.MAX_VALUE=32767;Short.TYPE=Short.prototype.TYPE=Short;c(Short,"parseShortRadix",function(a,d){return Integer.parseIntRadix(a, +d).shortValue()},"String, Number");Short.parseShortRadix=Short.prototype.parseShortRadix;c(Short,"parseShort",function(a){return Short.parseShortRadix(a,10)},"String");Short.parseShort=Short.prototype.parseShort;e(Short,"$valueOf",function(a){return new Short(a)});Short.$valueOf=Short.prototype.$valueOf;e(Short,"equals",function(a){return null==a||!C(a,Short)?!1:a.valueOf()==this.valueOf()},"Object");Short.toHexString=Short.prototype.toHexString=function(a){return a.toString(16)};Short.toOctalString= +Short.prototype.toOctalString=function(a){return a.toString(8)};Short.toBinaryString=Short.prototype.toBinaryString=function(a){return a.toString(2)};Short.decode=c(Short,"decode",function(a){a=Integer.decodeRaw(a);if(isNaN(a)||-32768>a||32767a||127a.indexOf(".")&&(0>a.indexOf("e")&&"NaN"!=a)&&(a+=".0");return a};java.lang.Float=Float=function(){p(this,arguments)};U(Float,"Float",Number,Comparable,null,!0);Float.prototype.valueOf= +function(){return 0};Float.toString=Float.prototype.toString=function(){return 0!=arguments.length?b._floatToString(arguments[0]):this===Float?"class java.lang.Float":b._floatToString(this.valueOf())};b._a32=null;Float.floatToIntBits=function(a){var d=b._a32||(b._a32=new Float32Array(1));d[0]=a;return(new Int32Array(d.buffer))[0]};V(Float,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Number(a));this.valueOf=function(){return a}});Float.serialVersionUID=Float.prototype.serialVersionUID=-0x2512365d24c31000; +Float.MIN_VALUE=Float.prototype.MIN_VALUE=1.4E-45;Float.MAX_VALUE=Float.prototype.MAX_VALUE=3.4028235E38;Float.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY;Float.POSITIVE_INFINITY=Number.POSITIVE_INFINITY;Float.NaN=Number.NaN;Float.TYPE=Float.prototype.TYPE=Float;c(Float,"parseFloat",function(a){if(null==a)throw new NumberFormatException("null");if("number"==typeof a)return a;var d=Number(a);if(isNaN(d))throw new NumberFormatException("Not a Number : "+a);return d},"String");Float.parseFloat=Float.prototype.parseFloat; +e(Float,"$valueOf",function(a){return new Float(a)});Float.$valueOf=Float.prototype.$valueOf;c(Float,"isNaN",function(a){return isNaN(1==arguments.length?a:this.valueOf())},"Number");Float.isNaN=Float.prototype.isNaN;c(Float,"isInfinite",function(a){return!isFinite(1==arguments.length?a:this.valueOf())},"Number");Float.isInfinite=Float.prototype.isInfinite;e(Float,"equals",function(a){return null==a||!C(a,Float)?!1:a.valueOf()==this.valueOf()},"Object");java.lang.Double=Double=function(){p(this,arguments)}; +U(Double,"Double",Number,Comparable,null,!0);Double.prototype.valueOf=function(){return 0};Double.toString=Double.prototype.toString=function(){return 0!=arguments.length?b._floatToString(arguments[0]):this===Double?"class java.lang.Double":b._floatToString(this.valueOf())};V(Double,function(a){null==a&&(a=0);"number"!=typeof a&&(a=Double.parseDouble(a));this.valueOf=function(){return a}});Double.serialVersionUID=Double.prototype.serialVersionUID=-0x7f4c3db5d6940400;Double.MIN_VALUE=Double.prototype.MIN_VALUE= +4.9E-324;Double.MAX_VALUE=Double.prototype.MAX_VALUE=1.7976931348623157E308;Double.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY;Double.POSITIVE_INFINITY=Number.POSITIVE_INFINITY;Double.NaN=Number.NaN;Double.TYPE=Double.prototype.TYPE=Double;c(Double,"isNaN",function(a){return isNaN(1==arguments.length?a:this.valueOf())},"Number");Double.isNaN=Double.prototype.isNaN;c(Double,"isInfinite",function(a){return!isFinite(1==arguments.length?a:this.valueOf())},"Number");Double.isInfinite=Double.prototype.isInfinite; +c(Double,"parseDouble",function(a){if(null==a)throw new NumberFormatException("null");if("number"==typeof a)return a;var d=Number(a);if(isNaN(d))throw new NumberFormatException("Not a Number : "+a);return d},"String");Double.parseDouble=Double.prototype.parseDouble;c(Double,"$valueOf",function(a){return new Double(a)},"Number");Double.$valueOf=Double.prototype.$valueOf;e(Double,"equals",function(a){return null==a||!C(a,Double)?!1:a.valueOf()==this.valueOf()},"Object");Boolean=java.lang.Boolean=Boolean|| +function(){p(this,arguments)};if(b._supportsNativeObject)for(d=0;dc)b[b.length]=d.charAt(q);else if(192c){c&=31;q++;var g=d.charCodeAt(q)&63,c=(c<<6)+g;b[b.length]=String.fromCharCode(c)}else if(224<=c){c&=15;q++;g=d.charCodeAt(q)&63;q++;var h=d.charCodeAt(q)&63,c=(c<<12)+(g<<6)+h;b[b.length]=String.fromCharCode(c)}}return b.join("")};a.readUTF8Array=function(d){var b=a.guessEncodingArray(d),q=0;b==a.UTF8? +q=3:b==a.UTF16&&(q=2);for(b=[];qc)b[b.length]=String.fromCharCode(c);else if(192c){var c=c&31,g=d[++q]&63,c=(c<<6)+g;b[b.length]=String.fromCharCode(c)}else if(224<=c){var c=c&15,g=d[++q]&63,h=d[++q]&63,c=(c<<12)+(g<<6)+h;b[b.length]=String.fromCharCode(c)}}return b.join("")};a.convert2UTF8=function(d){var b=this.guessEncoding(d),q=0;if(b==a.UTF8)return d;b==a.UTF16&&(q=2);for(var b=Array(0+d.length-q),c=q;cg)b[0+ +c-q]=d.charAt(c);else if(2047>=g){var h=192+((g&1984)>>6),e=128+(g&63);b[0+c-q]=String.fromCharCode(h)+String.fromCharCode(e)}else h=224+((g&61440)>>12),e=128+((g&4032)>>6),g=128+(g&63),b[0+c-q]=String.fromCharCode(h)+String.fromCharCode(e)+String.fromCharCode(g)}return b.join("")};a.base64Chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");a.encodeBase64=function(d){if(null==d||0==d.length)return d;for(var b=a.base64Chars,q=d.length,c=0,g=[],h,e;c>2],c>4],c>6],g[g.length]=b[h&63]):(g[g.length]=b[e<<2&60],g[g.length]="=")):(g[g.length]=b[h<<4&48],g[g.length]="=",g[g.length]="=");return g.join("")};a.decodeBase64=function(d){if(null==d||0==d.length)return d;var b=a.base64Chars,q=a.xBase64Chars;if(null==a.xBase64Chars){for(var q={},c=0;cp++;)h= +q[d.charAt(c++)],e=q[d.charAt(c++)],ba=q[d.charAt(c++)],m=q[d.charAt(c++)],g[g.length]=String.fromCharCode(h<<2&255|e>>4),null!=ba&&(g[g.length]=String.fromCharCode(e<<4&255|ba>>2),null!=m&&(g[g.length]=String.fromCharCode(ba<<6&255|m)));return g.join("")};if(null==String.prototype.$replace){java.lang.String=String;b._setDeclared("String",String);if(b._supportsNativeObject)for(var d=0;dthis.indexOf(a))return""+this;1==a.length?0<="\\$.*+|?^{}()[]".indexOf(a)&&(a="\\"+a):a=a.replace(/([\\\$\.\*\+\|\?\^\{\}\(\)\[\]])/g,function(a,d){return"\\"+d});return this.replace(RegExp(a,"gm"),d)};d.$generateExpFunction= +function(a){var d=[],b=[],q=0;d[0]="";for(var f=0;fq||0>d||d>this.length-f||q>b.length-f)return!1;d=this.substring(d,d+f);b=b.substring(q,q+f);a&&(d=d.toLowerCase(), +b=b.toLowerCase());return d==b};d.$plit=function(a,d){if(!d&&" "==a)return this.split(a);if(null!=d&&0d&&(b[d-1]=f.substring(f.indexOf("@@_@@")+5),b.length=d);return b}b=RegExp(a,"gm");return this.split(b)};d.trim||(d.trim=function(){return this.replace(/^\s+/g,"").replace(/\s+$/g,"")});if(!d.startsWith||!d.endsWith){var b=function(a,d,b){var q= +b,f=0,c=d.length;if(0>b||b>a.length-c)return!1;for(;0<=--c;)if(a.charAt(q++)!=d.charAt(f++))return!1;return!0};d.startsWith=function(a){return 1==arguments.length?b(this,arguments[0],0):2==arguments.length?b(this,arguments[0],arguments[1]):!1};d.endsWith=function(a){return b(this,a,this.length-a.length)}}d.equals=function(a){return this.valueOf()==a};d.equalsIgnoreCase=function(a){return null==a?!1:this==a||this.toLowerCase()==a.toLowerCase()};d.hash=0;d.hashCode=function(){var a=this.hash;if(0== +a){for(var d=0,b=this.length,q=0;q>8,c+=2):b[c]=q,c++;return I(b)};d.contains=function(a){return 0<=this.indexOf(a)};d.compareTo=function(a){return this>a?1:thisb?1:-1};d.contentEquals=function(a){if(this.length!=a.length())return!1;a=a.getValue();for(var d=0,b=0,q=this.length;0!= +q--;)if(this.charCodeAt(d++)!=a[b++])return!1;return!0};d.getChars=function(a,d,b,q){if(0>a)throw new StringIndexOutOfBoundsException(a);if(d>this.length)throw new StringIndexOutOfBoundsException(d);if(a>d)throw new StringIndexOutOfBoundsException(d-a);if(null==b)throw new NullPointerException;for(var f=0;f=d+this.length?-1:null!=d?this.$lastIndexOf(a,d):this.$lastIndexOf(a)};d.intern=function(){return this.valueOf()};String.copyValueOf=d.copyValueOf=function(){return 1==arguments.length?String.instantialize(arguments[0]):String.instantialize(arguments[0],arguments[1],arguments[2])};d.codePointAt||(d.codePointAt=d.charCodeAt)})(String.prototype);var c=new TextDecoder;String.instantialize=function(){switch(arguments.length){case 0:return new String;case 1:var a=arguments[0];return a.BYTES_PER_ELEMENT? +0==a.length?"":"number"==typeof a[0]?c.decode(a):a.join(""):a instanceof Array?0==a.length?"":"number"==typeof a[0]?c.decode(new Uint8Array(a)):a.join(""):"string"==typeof a||a instanceof String?new String(a):""+a;case 2:var a=arguments[0],d=arguments[1];return"string"==typeof d?String.instantialize(a,0,a.length,d):String.instantialize(a,d,0,a.length);case 3:var a=arguments[0],b=arguments[1],d=arguments[2];arguments[2]instanceof Array&&(a=arguments[2],b=arguments[0],d=arguments[1]);var q=Array(d); +if(0>b||d+b>a.length)throw new IndexOutOfBoundsException;if(0=a},"~N");d.isUpperCase=c(d,"isUpperCase",function(a){a= +a.charCodeAt(0);return 65<=a&&90>=a},"~N");d.isLowerCase=c(d,"isLowerCase",function(a){a=a.charCodeAt(0);return 97<=a&&122>=a},"~N");d.isWhitespace=c(d,"isWhitespace",function(a){a=a.charCodeAt(0);return 28<=a&&32>=a||9<=a&&13>=a||5760==a||8192<=a&&8199!=a&&(8203>=a||8232==a||8233==a||12288==a)},"~N");d.isLetter=c(d,"isLetter",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a},"~N");d.isLetterOrDigit=c(d,"isLetterOrDigit",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>= +a||48<=a&&57>=a},"~N");d.isSpaceChar=c(d,"isSpaceChar",function(a){a=a.charCodeAt(0);return 32==a||160==a||5760==a?!0:8192>a?!1:8203>=a||8232==a||8233==a||8239==a||12288==a},"~N");d.digit=c(d,"digit",function(a,d){var b=a.charCodeAt(0);if(2<=d&&36>=d&&128>b){var q=-1;48<=b&&57>=b?q=b-48:97<=b&&122>=b?q=b-87:65<=b&&90>=b&&(q=b-55);return qa.getTime()},"javautil.Date");c(a.Date,"equals",function(d){return C(d,a.Date)&&this.getTime()==d.getTime()},"Object");c(a.Date,"compareTo",function(a){if(null== +a)return 1;var d=this.getTime();a=a.getTime();return d>32)});d=j(function(){this.source=null;p(this,arguments)},a,"EventObject",null,java.io.Serializable);m(d,function(a){if(null!=a)this.source=a;else throw new IllegalArgumentException;},"~O");c(d,"getSource",function(){return this.source});e(d,"toString",function(){return this.getClass().getName()+"[source="+String.valueOf(this.source)+"]"}); +D(a,"EventListener");d=j(function(){this.listener=null;p(this,arguments)},a,"EventListenerProxy",null,a.EventListener);m(d,function(a){this.listener=a},"javautil.EventListener");c(d,"getListener",function(){return this.listener});D(a,"Iterator");D(a,"ListIterator",a.Iterator);D(a,"Enumeration");D(a,"Collection",Iterable);D(a,"Set",a.Collection);D(a,"Map");D(a.Map,"Entry");D(a,"List",a.Collection);D(a,"Queue",a.Collection);D(a,"RandomAccess");d=j(function(){this.stackTrace=this.cause=this.detailMessage= +null;p(this,arguments)},java.lang,"Throwable",null,java.io.Serializable);H(d,function(){this.cause=this});m(d,function(){this.fillInStackTrace()});m(d,function(a,d){this.fillInStackTrace();!d&&"object"==typeof a&&(d=a,a=d.toString());d&&(this.cause=d);this.detailMessage=a},"~S,Throwable");c(d,"getMessage",function(){return this.message||this.detailMessage||this.toString()});c(d,"getLocalizedMessage",function(){return this.getMessage()});c(d,"getCause",function(){return this.cause===this?null:this.cause}); +c(d,"initCause",function(a){if(this.cause!==this)throw new IllegalStateException("Can't overwrite cause");if(a===this)throw new IllegalArgumentException("Self-causation not permitted");this.cause=a;return this},"Throwable");e(d,"toString",function(){var a=this.getClass().getName(),d=this.message||this.detailMessage;return d?a+": "+d:a});c(d,"printStackTrace",function(){System.err.println(this.getStackTrace?this.getStackTrace():this.message+" "+ka())});c(d,"getStackTrace",function(){for(var a=""+this+ +"\n",d=0;dsa(b.nativeClazz,Throwable))a+=b+"\n"}return a});c(d,"printStackTrace",function(){this.printStackTrace()},"java.io.PrintStream");c(d,"printStackTrace",function(){this.printStackTrace()},"java.io.PrintWriter");c(d,"fillInStackTrace",function(){this.stackTrace=[];for(var a=arguments.callee.caller,d=null,q=[],c=b._callingStackTraces.length- +1,e=!0;-1c)break;e=!0;d=b._callingStackTraces[c].caller;l=b._callingStackTraces[c].owner;c--}else d=a,null!=d.claxxOwner?l=d.claxxOwner:null!=d.exClazz&&(l=d.exClazz);a=new StackTraceElement(null!=l&&0!=l.__CLASS_NAME__.length?l.__CLASS_NAME__:"anonymous",(null==d.exName?"anonymous":d.exName)+" ("+ta(d.arguments)+")",null,-1);a.nativeClazz=l;this.stackTrace[this.stackTrace.length]=a;for(l=0;l":this.declaringClass});c(d,"getFileName",function(){return this.fileName});c(d,"getLineNumber",function(){return this.lineNumber});c(d,"getMethodName",function(){return null==this.methodName?"":this.methodName});e(d,"hashCode",function(){return null==this.methodName?0:this.methodName.hashCode()^this.declaringClass.hashCode()});c(d,"isNativeMethod",function(){return-2==this.lineNumber}); +e(d,"toString",function(){var a=this.getClassName()+"."+this.getMethodName();if(this.isNativeMethod())a+="(Native Method)";else{var d=this.getFileName();if(null==d)a+="(Unknown Source)";else{var b=this.getLineNumber(),a=a+"("+d;0<=b&&(a+=":",a+=b);a+=")"}}return a});TypeError.prototype.getMessage||(TypeError.prototype.getMessage=function(){return(this.message||this.toString())+(this.getStackTrace?this.getStackTrace():ka())});Clazz_Error=Error;Clazz_declareTypeError=function(a,d,b,q,c){return j(function(){p(this, +arguments);return Clazz_Error()},a,d,b,q,c)};b._Error||(b._Error=Error);j(function(){p(this,arguments);return b._Error()},java.lang,"Error",Throwable);d=u(java.lang,"LinkageError",Error);d=u(java.lang,"IncompatibleClassChangeError",LinkageError);d=u(java.lang,"AbstractMethodError",IncompatibleClassChangeError);d=u(java.lang,"AssertionError",Error);m(d,function(a){B(this,AssertionError,[""+a,C(a,Throwable)?a:null])},"~O");d=u(java.lang,"ClassCircularityError",LinkageError);d=u(java.lang,"ClassFormatError", +LinkageError);d=j(function(){this.exception=null;p(this,arguments)},java.lang,"ExceptionInInitializerError",LinkageError);m(d,function(){B(this,ExceptionInInitializerError);this.initCause(null)});m(d,function(a){B(this,ExceptionInInitializerError,[a]);this.initCause(null)},"~S");m(d,function(a){B(this,ExceptionInInitializerError);this.exception=a;this.initCause(a)},"Throwable");c(d,"getException",function(){return this.exception});e(d,"getCause",function(){return this.exception});d=u(java.lang,"IllegalAccessError", +IncompatibleClassChangeError);d=u(java.lang,"InstantiationError",IncompatibleClassChangeError);d=u(java.lang,"VirtualMachineError",Error);d=u(java.lang,"InternalError",VirtualMachineError);d=u(java.lang,"NoClassDefFoundError",LinkageError);d=u(java.lang,"NoSuchFieldError",IncompatibleClassChangeError);d=u(java.lang,"NoSuchMethodError",IncompatibleClassChangeError);d=u(java.lang,"OutOfMemoryError",VirtualMachineError);d=u(java.lang,"StackOverflowError",VirtualMachineError);d=u(java.lang,"UnknownError", +VirtualMachineError);d=u(java.lang,"UnsatisfiedLinkError",LinkageError);d=u(java.lang,"UnsupportedClassVersionError",ClassFormatError);d=u(java.lang,"VerifyError",LinkageError);d=u(java.lang,"ThreadDeath",Error);m(d,function(){B(this,ThreadDeath,[])});d=u(java.lang,"Exception",Throwable);d=u(java.lang,"RuntimeException",Exception);d=u(java.lang,"ArithmeticException",RuntimeException);d=u(java.lang,"IndexOutOfBoundsException",RuntimeException);d=u(java.lang,"ArrayIndexOutOfBoundsException",IndexOutOfBoundsException); +m(d,function(a){B(this,ArrayIndexOutOfBoundsException,["Array index out of range: "+a])},"~N");d=u(java.lang,"ArrayStoreException",RuntimeException);d=u(java.lang,"ClassCastException",RuntimeException);d=j(function(){this.ex=null;p(this,arguments)},java.lang,"ClassNotFoundException",Exception);m(d,function(){B(this,ClassNotFoundException,[X("Throwable")])});m(d,function(a){B(this,ClassNotFoundException,[a,null])},"~S");m(d,function(a,d){B(this,ClassNotFoundException,[a]);this.ex=d},"~S,Throwable"); +c(d,"getException",function(){return this.ex});e(d,"getCause",function(){return this.ex});d=u(java.lang,"CloneNotSupportedException",Exception);d=u(java.lang,"IllegalAccessException",Exception);d=u(java.lang,"IllegalArgumentException",RuntimeException);m(d,function(a){B(this,IllegalArgumentException,[null==a?null:a.toString(),a])},"Throwable");d=u(java.lang,"IllegalMonitorStateException",RuntimeException);d=u(java.lang,"IllegalStateException",RuntimeException);m(d,function(a){B(this,IllegalStateException, +[null==a?null:a.toString(),a])},"Throwable");d=u(java.lang,"IllegalThreadStateException",IllegalArgumentException);d=u(java.lang,"InstantiationException",Exception);d=u(java.lang,"InterruptedException",Exception);d=u(java.lang,"NegativeArraySizeException",RuntimeException);d=u(java.lang,"NoSuchFieldException",Exception);d=u(java.lang,"NoSuchMethodException",Exception);d=u(java.lang,"NullPointerException",RuntimeException);d=u(java.lang,"NumberFormatException",IllegalArgumentException);d=u(java.lang, +"SecurityException",RuntimeException);m(d,function(a){B(this,SecurityException,[null==a?null:a.toString(),a])},"Throwable");d=u(java.lang,"StringIndexOutOfBoundsException",IndexOutOfBoundsException);m(d,function(a){B(this,StringIndexOutOfBoundsException,["String index out of range: "+a])},"~N");d=u(java.lang,"UnsupportedOperationException",RuntimeException);m(d,function(){B(this,UnsupportedOperationException,[])});m(d,function(a){B(this,UnsupportedOperationException,[null==a?null:a.toString(),a])}, +"Throwable");d=j(function(){this.target=null;p(this,arguments)},java.lang.reflect,"InvocationTargetException",Exception);m(d,function(){B(this,java.lang.reflect.InvocationTargetException,[X("Throwable")])});m(d,function(a){B(this,java.lang.reflect.InvocationTargetException,[null,a]);this.target=a},"Throwable");m(d,function(a,d){B(this,java.lang.reflect.InvocationTargetException,[d,a]);this.target=a},"Throwable,~S");c(d,"getTargetException",function(){return this.target});e(d,"getCause",function(){return this.target}); +d=j(function(){this.undeclaredThrowable=null;p(this,arguments)},java.lang.reflect,"UndeclaredThrowableException",RuntimeException);m(d,function(a){B(this,java.lang.reflect.UndeclaredThrowableException);this.undeclaredThrowable=a;this.initCause(a)},"Throwable");m(d,function(a,d){B(this,java.lang.reflect.UndeclaredThrowableException,[d]);this.undeclaredThrowable=a;this.initCause(a)},"Throwable,~S");c(d,"getUndeclaredThrowable",function(){return this.undeclaredThrowable});e(d,"getCause",function(){return this.undeclaredThrowable}); +d=u(java.io,"IOException",Exception);d=u(java.io,"CharConversionException",java.io.IOException);d=u(java.io,"EOFException",java.io.IOException);d=u(java.io,"FileNotFoundException",java.io.IOException);d=j(function(){this.bytesTransferred=0;p(this,arguments)},java.io,"InterruptedIOException",java.io.IOException);d=u(java.io,"SyncFailedException",java.io.IOException);d=u(java.io,"UnsupportedEncodingException",java.io.IOException);d=u(java.io,"UTFDataFormatException",java.io.IOException);c(d,"getMessage", +function(){var a=T(this,java.io.WriteAbortedException,"getMessage",[]);return this.detail?a+"; "+this.detail.toString():a});e(d,"getCause",function(){return this.detail});d=u(a,"ConcurrentModificationException",RuntimeException);m(d,function(){B(this,a.ConcurrentModificationException,[])});d=u(a,"EmptyStackException",RuntimeException);d=j(function(){this.key=this.className=null;p(this,arguments)},a,"MissingResourceException",RuntimeException);m(d,function(d,b,q){B(this,a.MissingResourceException, +[d]);this.className=b;this.key=q},"~S,~S,~S");c(d,"getClassName",function(){return this.className});c(d,"getKey",function(){return this.key});d=u(a,"NoSuchElementException",RuntimeException);d=u(a,"TooManyListenersException",Exception);d=u(java.lang,"Void");d.TYPE=d;D(java.lang.reflect,"GenericDeclaration");D(java.lang.reflect,"AnnotatedElement");d=u(java.lang.reflect,"AccessibleObject",null,java.lang.reflect.AnnotatedElement);m(d,function(){});c(d,"isAccessible",function(){return!1});d.setAccessible= +c(d,"setAccessible",function(){},"~A,~B");c(d,"setAccessible",function(){},"~B");e(d,"isAnnotationPresent",function(){return!1},"Class");e(d,"getDeclaredAnnotations",function(){return[]});e(d,"getAnnotations",function(){return[]});e(d,"getAnnotation",function(){return null},"Class");d.marshallArguments=c(d,"marshallArguments",function(){return null},"~A,~A");c(d,"invokeV",function(){},"~O,~A");c(d,"invokeL",function(){return null},"~O,~A");c(d,"invokeI",function(){return 0},"~O,~A");c(d,"invokeJ", +function(){return 0},"~O,~A");c(d,"invokeF",function(){return 0},"~O,~A");c(d,"invokeD",function(){return 0},"~O,~A");d.emptyArgs=d.prototype.emptyArgs=[];D(java.lang.reflect,"InvocationHandler");d=D(java.lang.reflect,"Member");d=u(java.lang.reflect,"Modifier");m(d,function(){});d.isAbstract=c(d,"isAbstract",function(a){return 0!=(a&1024)},"~N");d.isFinal=c(d,"isFinal",function(a){return 0!=(a&16)},"~N");d.isInterface=c(d,"isInterface",function(a){return 0!=(a&512)},"~N");d.isNative=c(d,"isNative", +function(a){return 0!=(a&256)},"~N");d.isPrivate=c(d,"isPrivate",function(a){return 0!=(a&2)},"~N");d.isProtected=c(d,"isProtected",function(a){return 0!=(a&4)},"~N");d.isPublic=c(d,"isPublic",function(a){return 0!=(a&1)},"~N");d.isStatic=c(d,"isStatic",function(a){return 0!=(a&8)},"~N");d.isStrict=c(d,"isStrict",function(a){return 0!=(a&2048)},"~N");d.isSynchronized=c(d,"isSynchronized",function(a){return 0!=(a&32)},"~N");d.isTransient=c(d,"isTransient",function(a){return 0!=(a&128)},"~N");d.isVolatile= +c(d,"isVolatile",function(a){return 0!=(a&64)},"~N");d.toString=c(d,"toString",function(a){var d=[];java.lang.reflect.Modifier.isPublic(a)&&(d[d.length]="public");java.lang.reflect.Modifier.isProtected(a)&&(d[d.length]="protected");java.lang.reflect.Modifier.isPrivate(a)&&(d[d.length]="private");java.lang.reflect.Modifier.isAbstract(a)&&(d[d.length]="abstract");java.lang.reflect.Modifier.isStatic(a)&&(d[d.length]="static");java.lang.reflect.Modifier.isFinal(a)&&(d[d.length]="final");java.lang.reflect.Modifier.isTransient(a)&& +(d[d.length]="transient");java.lang.reflect.Modifier.isVolatile(a)&&(d[d.length]="volatile");java.lang.reflect.Modifier.isSynchronized(a)&&(d[d.length]="synchronized");java.lang.reflect.Modifier.isNative(a)&&(d[d.length]="native");java.lang.reflect.Modifier.isStrict(a)&&(d[d.length]="strictfp");java.lang.reflect.Modifier.isInterface(a)&&(d[d.length]="interface");return 0a)throw new IllegalArgumentException;this.priority=a},"~N");c(b,"getPriority",function(){return this.priority});c(b,"setName", +function(a){this.name=a},"~S");c(b,"getName",function(){return String.valueOf(this.name)});c(b,"getThreadGroup",function(){return this.group});e(b,"toString",function(){var a=this.getThreadGroup();return null!=a?"Thread["+this.getName()+","+this.getPriority()+","+a.getName()+"]":"Thread["+this.getName()+","+this.getPriority()+",]"});b.J2S_THREAD=null});s=j(function(){this.name=this.parent=null;this.maxPriority=0;p(this,arguments)},java.lang,"ThreadGroup",null);m(s,function(){this.name="system";this.maxPriority= +10});m(s,function(b){this.construct(Thread.currentThread().getThreadGroup(),b)},"~S");m(s,function(b,a){if(null==b)throw new NullPointerException;this.name=a;this.parent=b;this.maxPriority=10},"ThreadGroup,~S");c(s,"getName",function(){return this.name});c(s,"getParent",function(){return this.parent});c(s,"getMaxPriority",function(){return this.maxPriority});v(["java.io.FilterInputStream"],"java.io.BufferedInputStream",null,function(){var b=j(function(){this.buf=null;this.pos=this.count=0;this.markpos= +-1;this.marklimit=0;p(this,arguments)},java.io,"BufferedInputStream",java.io.FilterInputStream);m(b,function(a){B(this,java.io.BufferedInputStream,[a]);this.buf=I(8192,0)},"java.io.InputStream");c(b,"getInIfOpen",function(){var a=this.$in;if(null==a)throw new java.io.IOException("Stream closed");return a});c(b,"getBufIfOpen",function(){var a=this.buf;if(null==a)throw new java.io.IOException("Stream closed");return a});e(b,"resetStream",function(){});c(b,"fill",function(){var a=this.getBufIfOpen(); +if(0>this.markpos)this.pos=0;else if(this.pos>=a.length)if(0=this.marklimit?(this.markpos=-1,this.pos=0):(d=2*this.pos,d>this.marklimit&&(d=this.marklimit),d=I(d,0),System.arraycopy(a,0,d,0,this.pos),a=this.buf=d);this.count=this.pos;a=this.isRead(a,this.pos,a.length-this.pos);0=this.count&&(this.fill(), +this.pos>=this.count)?-1:this.getBufIfOpen()[this.pos++]&255});c(b,"read1",function(a,d,b){var f=this.count-this.pos;if(0>=f){if(b>=this.getBufIfOpen().length&&0>this.markpos)return this.isRead(a,d,b);this.fill();f=this.count-this.pos;if(0>=f)return-1}b=f(d|b|d+b|a.length-(d+b)))throw new IndexOutOfBoundsException;if(0==b)return 0;for(var f=0;;){var c=this.read1(a,d+f,b-f);if(0>=c)return 0==f?c:f;f+=c;if(f>=b)return f;c=this.$in;if(null!=c&&0>=c.available())return f}},"~A,~N,~N");e(b,"skip",function(a){this.getBufIfOpen();if(0>=a)return 0;var d=this.count-this.pos;if(0>=d){if(0>this.markpos)return this.getInIfOpen().skip(a);this.fill();d=this.count-this.pos;if(0>=d)return 0}a= +d2147483647-d?2147483647:a+d});e(b,"mark",function(a){this.marklimit=a;this.markpos=this.pos},"~N");e(b,"reset",function(){this.getBufIfOpen();if(0>this.markpos)throw new java.io.IOException("Resetting to invalid mark");this.pos=this.markpos});e(b,"markSupported",function(){return!0});e(b,"close",function(){var a=this.$in;this.$in=null;null!=a&&a.close()})});v(["java.io.Reader"], +"java.io.BufferedReader",null,function(){var b=j(function(){this.cb=this.$in=null;this.nextChar=this.nChars=0;this.markedChar=-1;this.readAheadLimit=0;this.markedSkipLF=this.skipLF=!1;p(this,arguments)},java.io,"BufferedReader",java.io.Reader);m(b,function(a){B(this,java.io.BufferedReader,[a]);this.$in=a;this.setSize(8192)},"java.io.Reader");c(b,"setSize",function(a){if(0>=a)throw new IllegalArgumentException("Buffer size <= 0");this.cb=O(a,"\x00");this.nextChar=this.nChars=0},"~N");c(b,"ensureOpen", +function(){if(null==this.$in)throw new java.io.IOException("Stream closed");});c(b,"fill",function(){var a;if(-1>=this.markedChar)a=0;else{var d=this.nextChar-this.markedChar;d>=this.readAheadLimit?(this.markedChar=-2,a=this.readAheadLimit=0):(this.readAheadLimit<=this.cb.length?System.arraycopy(this.cb,this.markedChar,this.cb,0,d):(a=O(this.readAheadLimit,"\x00"),System.arraycopy(this.cb,this.markedChar,a,0,d),this.cb=a),this.markedChar=0,this.nextChar=this.nChars=a=d)}do d=this.$in.read(this.cb, +a,this.cb.length-a);while(0==d);0=this.nChars){if(b>=this.cb.length&&-1>=this.markedChar&&!this.skipLF)return this.$in.read(a,d,b);this.fill()}if(this.nextChar>=this.nChars||this.skipLF&&(this.skipLF=!1,"\n"==this.cb[this.nextChar]&&(this.nextChar++,this.nextChar>=this.nChars&&this.fill(),this.nextChar>=this.nChars)))return-1;b=Math.min(b,this.nChars-this.nextChar);System.arraycopy(this.cb,this.nextChar,a,d,b);this.nextChar+= +b;return b},"~A,~N,~N");c(b,"read",function(a,d,b){this.ensureOpen();if(0>d||d>a.length||0>b||d+b>a.length||0>d+b)throw new IndexOutOfBoundsException;if(0==b)return 0;var f=this.read1(a,d,b);if(0>=f)return f;for(;f=c)break;f+=c}return f},"~A,~N,~N");c(b,"readLine1",function(a){var d=null,b;this.ensureOpen();for(a=a||this.skipLF;;){this.nextChar>=this.nChars&&this.fill();if(this.nextChar>=this.nChars)return null!=d&&0a)throw new IllegalArgumentException("skip value is negative"); +this.ensureOpen();for(var d=a;0=this.nChars&&this.fill();if(this.nextChar>=this.nChars)break;this.skipLF&&(this.skipLF=!1,"\n"==this.cb[this.nextChar]&&this.nextChar++);var b=this.nChars-this.nextChar;if(d<=b){this.nextChar+=d;d=0;break}d-=b;this.nextChar=this.nChars}return a-d},"~N");c(b,"ready",function(){this.ensureOpen();this.skipLF&&(this.nextChar>=this.nChars&&this.$in.ready()&&this.fill(),this.nextChara)throw new IllegalArgumentException("Read-ahead limit < 0");this.ensureOpen();this.readAheadLimit=a;this.markedChar=this.nextChar;this.markedSkipLF=this.skipLF},"~N");e(b,"reset",function(){this.ensureOpen();if(0>this.markedChar)throw new java.io.IOException(-2==this.markedChar?"Mark invalid":"Stream not marked");this.nextChar=this.markedChar;this.skipLF=this.markedSkipLF}); +c(b,"close",function(){null!=this.$in&&(this.$in.close(),this.cb=this.$in=null)})});v(["java.io.Writer"],"java.io.BufferedWriter",null,function(){var b=j(function(){this.buf=this.out=null;this.pos=0;this.lineSeparator="\r\n";p(this,arguments)},java.io,"BufferedWriter",java.io.Writer);m(b,function(a){B(this,java.io.BufferedWriter,[a]);this.out=a;this.buf=O(8192,"\x00")},"java.io.Writer");m(b,function(a,d){B(this,java.io.BufferedWriter,[a]);if(0d||d>a.length-b||0>b)throw new IndexOutOfBoundsException; +if(0==this.pos&&b>=this.buf.length)this.out.write(a,d,b);else{var f=this.buf.length-this.pos;bf&&(d+=f,f=b-f,f>=this.buf.length?this.out.write(a,d,f):(System.arraycopy(a,d,this.buf,this.pos,f),this.pos+=f)))}},"~A,~N,~N");c(b,"write",function(a){if(this.isOpen())this.pos>=this.buf.length&&(this.out.write(this.buf,0,this.buf.length),this.pos=0), +this.buf[this.pos++]=String.fromCharCode(a);else throw new java.io.IOException("K005d");},"~N");c(b,"write",function(a,d,b){if(!this.isOpen())throw new java.io.IOException("K005d");if(!(0>=b)){if(d>a.length-b||0>d)throw new StringIndexOutOfBoundsException;if(0==this.pos&&b>=this.buf.length){var f=O(b,"\x00");a.getChars(d,d+b,f,0);this.out.write(f,0,b)}else{var c=this.buf.length-this.pos;bc&&(d+=c,c=b-c,c>=this.buf.length?(f=O(b,"\x00"),a.getChars(d,d+c,f,0),this.out.write(f,0,c)):(a.getChars(d,d+c,this.buf,this.pos),this.pos+=c)))}}},"~S,~N,~N")});v(["java.io.InputStream"],"java.io.ByteArrayInputStream",null,function(){var b=j(function(){this.buf=null;this.count=this.$mark=this.pos=0;p(this,arguments)},java.io,"ByteArrayInputStream",java.io.InputStream);m(b,function(a){B(this,java.io.ByteArrayInputStream,[]);this.buf=a;this.pos=0;this.count=a.length}, +"~A");e(b,"readByteAsInt",function(){return this.posd||0>b||b>a.length-d)throw new IndexOutOfBoundsException;if(this.pos>=this.count)return-1;var f=this.count-this.pos;b>f&&(b=f);if(0>=b)return 0;System.arraycopy(this.buf,this.pos,a,d,b);this.pos+=b;return b},"~A,~N,~N");e(b,"skip",function(a){var d=this.count-this.pos; +aa?0:a);this.pos+=d;return d},"~N");e(b,"available",function(){return this.count-this.pos});e(b,"markSupported",function(){return!0});e(b,"mark",function(){this.$mark=this.pos},"~N");e(b,"resetStream",function(){});e(b,"reset",function(){this.pos=this.$mark});e(b,"close",function(){})});v(["java.io.OutputStream"],"java.io.ByteArrayOutputStream",null,function(){var b=j(function(){this.buf=null;this.count=0;p(this,arguments)},java.io,"ByteArrayOutputStream",java.io.OutputStream);m(b,function(){this.construct(32)}); +m(b,function(a){B(this,java.io.ByteArrayOutputStream,[]);if(0>a)throw new IllegalArgumentException("Negative initial size: "+a);this.buf=I(a,0)},"~N");c(b,"ensureCapacity",function(a){0d-a&&(d=a);if(0>d){if(0>a)throw new OutOfMemoryError;d=a}this.buf=java.io.ByteArrayOutputStream.arrayCopyByte(this.buf,d)},"~N");b.arrayCopyByte=c(b,"arrayCopyByte",function(a,d){var b=I(d,0);System.arraycopy(a,0,b,0,a.length< +d?a.length:d);return b},"~A,~N");e(b,"writeByteAsInt",function(a){this.ensureCapacity(this.count+1);this.buf[this.count]=a;this.count+=1},"~N");c(b,"write",function(a,d,b){if(0>d||d>a.length||0>b||0d||0>b||b>a.length-d)throw new IndexOutOfBoundsException;if(0==b)return 0;var f=this.readByteAsInt();if(-1==f)return-1;a[d]=f;var c=1;try{for(;c=a)return 0;for(;0b)break;d-=b}return a-d},"~N");c(b,"available",function(){return 0});e(b,"close",function(){});c(b,"mark",function(){},"~N");c(b,"reset",function(){throw new java.io.IOException("mark/reset not supported");});c(b,"markSupported",function(){return!1});c(b,"resetStream",function(){});b.skipBuffer=null});v(["java.io.Reader"],"java.io.InputStreamReader",null,function(){var b=j(function(){this.$in= +null;this.isOpen=!0;this.charsetName=null;this.isUTF8=!1;this.bytearr=null;this.pos=0;p(this,arguments)},java.io,"InputStreamReader",java.io.Reader);m(b,function(a,d){B(this,java.io.InputStreamReader,[a]);this.$in=a;this.charsetName=d;if(!(this.isUTF8="UTF-8".equals(d))&&!"ISO-8859-1".equals(d))throw new NullPointerException("charsetName");},"java.io.InputStream,~S");c(b,"getEncoding",function(){return this.charsetName});e(b,"read",function(a,d,b){if(null==this.bytearr||this.bytearr.lengthk)return-1;for(var x=k;h>4){case 12:case 13:if(h+1>=k){if(1<=l){x=h;continue}}else if(128==((f=this.bytearr[h+1])&192)){a[e++]=String.fromCharCode((b&31)<<6|f&63);h+=2;continue}this.isUTF8=!1;break;case 14:if(h+2>=k){if(2<=l){x=h;continue}}else if(128==((f=this.bytearr[h+1])&192)&&128==((c=this.bytearr[h+2])&192)){a[e++]=String.fromCharCode((b&15)<< +12|(f&63)<<6|c&63);h+=3;continue}this.isUTF8=!1}h++;a[e++]=String.fromCharCode(b)}this.pos=k-h;for(a=0;ad||d>a.length||0>b||d+b>a.length||0>d+b)throw new IndexOutOfBoundsException;if(0!=b)for(var f=0;f +a)throw new IllegalArgumentException("skip value is negative");var d=Math.min(a,8192);if(null==this.skipBuffer||this.skipBuffer.lengthd||d>a.length||0>b||d+b>a.length||0>d+b)throw new IndexOutOfBoundsException; +if(0==b)return 0;if(this.next>=this.length)return-1;b=Math.min(this.length-this.next,b);this.str.getChars(this.next,this.next+b,a,d);this.next+=b;return b},"~A,~N,~N");e(b,"skip",function(a){this.ensureOpen();if(this.next>=this.length)return 0;a=Math.min(this.length-this.next,a);a=Math.max(-this.next,a);this.next+=a;return a},"~N");e(b,"ready",function(){this.ensureOpen();return!0});e(b,"markSupported",function(){return!0});e(b,"mark",function(a){if(0>a)throw new IllegalArgumentException("Read-ahead limit < 0"); +this.ensureOpen();this.$mark=this.next},"~N");e(b,"reset",function(){this.ensureOpen();this.next=this.$mark});e(b,"close",function(){this.str=null})});v(["java.io.Closeable","$.Flushable","java.lang.Appendable"],"java.io.Writer",null,function(){var b=j(function(){this.lock=null;p(this,arguments)},java.io,"Writer",null,[Appendable,java.io.Closeable,java.io.Flushable]);m(b,function(){this.lock=this});m(b,function(a){if(null!=a)this.lock=a;else throw new NullPointerException;},"~O");c(b,"write",function(a){this.write(a, +0,a.length)},"~A");c(b,"write",function(a){var d=O(1,"\x00");d[0]=String.fromCharCode(a);this.write(d)},"~N");c(b,"write",function(a){var d=O(a.length,"\x00");a.getChars(0,d.length,d,0);this.write(d)},"~S");c(b,"write",function(a,d,b){if(0<=b){var f=O(b,"\x00");a.getChars(d,d+b,f,0);this.write(f)}else throw new StringIndexOutOfBoundsException;},"~S,~N,~N");c(b,"append",function(a){this.write(a.charCodeAt(0));return this},"~S");c(b,"append",function(a){null==a?this.write("null"):this.write(a.toString()); +return this},"CharSequence");c(b,"append",function(a,d,b){null==a?this.write("null".substring(d,b)):this.write(a.subSequence(d,b).toString());return this},"CharSequence,~N,~N")});r("java.net");v(["java.io.IOException"],"java.net.MalformedURLException",null,function(){var b=u(java.net,"MalformedURLException",java.io.IOException);m(b,function(){B(this,java.net.MalformedURLException,[])})});r("java.net");v(["java.io.IOException"],"java.net.UnknownServiceException",null,function(){var b=u(java.net,"UnknownServiceException", +java.io.IOException);m(b,function(){B(this,java.net.UnknownServiceException,[])})});r("java.net");v(["java.util.Hashtable"],"java.net.URL",null,function(){var b=j(function(){this.host=this.protocol=null;this.port=-1;this.handler=this.ref=this.userInfo=this.path=this.authority=this.query=this.file=null;this.$hashCode=-1;p(this,arguments)},java.net,"URL",null);m(b,function(a,d,b){switch(arguments.length){case 1:d=a;a=b=null;break;case 2:b=null;break;case 3:if(null==a||C(a,java.net.URL))break;default:alert("java.net.URL constructor format not supported")}a&& +a.valueOf&&null==a.valueOf()&&(a=null);var f=d,c,h,e,k=0,l=null,x=!1,m=!1;try{for(h=d.length;0=d.charAt(h-1);)h--;for(;k=d.charAt(k);)k++;d.regionMatches(!0,k,"url:",0,4)&&(k+=4);kd)return!1;var b=a.charAt(0);if(!Character.isLetter(b))return!1;for(var f=1;fp&&(q=p),a=a.substring(0,p))}var j=0;if(!(d<=q-4&&"/"==a.charAt(d)&&"/"==a.charAt(d+ +1)&&"/"==a.charAt(d+2)&&"/"==a.charAt(d+3))&&d<=q-2&&"/"==a.charAt(d)&&"/"==a.charAt(d+1)){d+=2;j=a.indexOf("/",d);0>j&&(j=a.indexOf("?",d),0>j&&(j=q));e=c=a.substring(d,j);p=c.indexOf("@");-1!=p?(h=c.substring(0,p),e=c.substring(p+1)):h=null;if(null!=e){if(0p+1&&(k=Integer.parseInt(e.substring(p+1))),e=e.substring(0,p))}else e="";if(-1>k)throw new IllegalArgumentException("Invalid port number :"+ +k);d=j;0p&&(p=0),l=l.substring(0,p)+"/");null==l&&(l="");if(Y){for(;0<=(j=l.indexOf("/./"));)l=l.substring(0,j)+l.substring(j+2);for(j=0;0<=(j=l.indexOf("/../",j));)0>>48-b},"~N");c(s,"nextBoolean",function(){return 0.5>=8},"~A");c(s,"nextDouble",function(){return Math.random()});c(s,"nextFloat",function(){return Math.random()}); +c(s,"nextGaussian",function(){if(this.haveNextNextGaussian)return this.haveNextNextGaussian=!1,this.nextNextGaussian;var b,a,d;do b=2*this.nextDouble()-1,a=2*this.nextDouble()-1,d=b*b+a*a;while(1<=d);d=Math.sqrt(-2*Math.log(d)/d);this.nextNextGaussian=a*d;this.haveNextNextGaussian=!0;return b*d});c(s,"nextInt",function(b){if(0==arguments.length)return 4294967296*Math.random()|0;if(0>=b)throw new IllegalArgumentException;return Math.random()*b|0},"~N");c(s,"nextLong",function(){return(this.next(32)<< +32)+this.next(32)});c(s,"setSeed",function(b){Math.seedrandom(b)},"~N");var ca=[],Z=Math,da=52,ma=void 0,na=void 0,Da=function(b){var a,d,q=this,f=b.length,c=0,h=q.i=q.j=q.m=0;q.S=[];q.c=[];for(f||(b=[f++]);256>c;)q.S[c]=c++;for(c=0;256>c;c++)a=q.S[c],h=h+a+b[c%f]&255,d=q.S[h],q.S[c]=d,q.S[h]=a;q.g=function(a){var d=q.S,b=q.i+1&255,f=d[b],c=q.j+f&255,g=d[c];d[b]=g;d[c]=f;for(var h=d[f+g&255];--a;)b=b+1&255,f=d[b],c=c+f&255,g=d[c],d[b]=g,d[c]=f,h=256*h+d[f+g&255];q.i=b;q.j=c;return h};q.g(256)},oa= +function(b,a,d,q){d=[];if(a&&"object"==typeof b)for(q in b)if(5>q.indexOf("S"))try{d.push(oa(b[q],a-1))}catch(f){}return d.length?d:""+b},ea=function(b,a,d,q){b+="";for(q=d=0;q=ma;)a/=2,d/=2,b>>>=1;return(a+b)/d};return b};na=Z.pow(256,6);da=Z.pow(2,da);ma=2*da;ea(Z.random(),ca);v(["java.util.Collection"],"java.util.AbstractCollection",["java.lang.reflect.Array"],function(){var b=u(java.util,"AbstractCollection",null,java.util.Collection);e(b,"add",function(){throw new UnsupportedOperationException;},"~O");e(b,"addAll",function(a){var d=!1;for(a=a.iterator();a.hasNext();)this.add(a.next())&&(d=!0);return d},"java.util.Collection");e(b,"clear", +function(){for(var a=this.iterator();a.hasNext();)a.next(),a.remove()});e(b,"contains",function(a){var d=this.iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next()))return!0}else for(;d.hasNext();)if(null==d.next())return!0;return!1},"~O");e(b,"containsAll",function(a){for(a=a.iterator();a.hasNext();)if(!this.contains(a.next()))return!1;return!0},"java.util.Collection");e(b,"isEmpty",function(){return 0==this.size()});e(b,"remove",function(a){var d=this.iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next()))return d.remove(), +!0}else for(;d.hasNext();)if(null==d.next())return d.remove(),!0;return!1},"~O");e(b,"removeAll",function(a){for(var d=!1,b=this.iterator();b.hasNext();)a.contains(b.next())&&(b.remove(),d=!0);return d},"java.util.Collection");e(b,"retainAll",function(a){for(var d=!1,b=this.iterator();b.hasNext();)a.contains(b.next())||(b.remove(),d=!0);return d},"java.util.Collection");c(b,"toArray",function(){for(var a=this.size(),d=0,b=this.iterator(),f=Array(a);da.length&&(a=a.getClass().getComponentType(),a=java.lang.reflect.Array.newInstance(a,d));for(var f,d=this.iterator();d.hasNext()&&((f=d.next())||1);)a[b++]=f;b= +this.start});c(b,"next",function(){if(this.iterator.nextIndex()=this.start)return this.iterator.previous();throw new java.util.NoSuchElementException;});c(b,"previousIndex",function(){var a=this.iterator.previousIndex();return a>=this.start?a-this.start:-1});c(b,"remove",function(){this.iterator.remove(); +this.subList.sizeChanged(!1);this.end--});c(b,"set",function(a){this.iterator.set(a)},"~O")});v(["java.util.Map"],"java.util.AbstractMap",["java.util.AbstractCollection","$.AbstractSet","$.Iterator"],function(){var b=j(function(){this.$values=this.$keySet=null;p(this,arguments)},java.util,"AbstractMap",null,java.util.Map);e(b,"clear",function(){this.entrySet().clear()});e(b,"containsKey",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next().getKey()))return!0}else for(;d.hasNext();)if(null== +d.next().getKey())return!0;return!1},"~O");e(b,"containsValue",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){if(a.equals(d.next().getValue()))return!0}else for(;d.hasNext();)if(null==d.next().getValue())return!0;return!1},"~O");e(b,"equals",function(a){if(this===a)return!0;if(C(a,"java.util.Map")){if(this.size()!=a.size())return!1;a=a.entrySet();for(var d=this.entrySet().iterator();d.hasNext();)if(!a.contains(d.next()))return!1;return!0}return!1},"~O");e(b,"get",function(a){var d= +this.entrySet().iterator();if(null!=a)for(;d.hasNext();){var b=d.next();if(a.equals(b.getKey()))return b.getValue()}else for(;d.hasNext();)if(b=d.next(),null==b.getKey())return b.getValue();return null},"~O");e(b,"hashCode",function(){for(var a=0,d=this.entrySet().iterator();d.hasNext();)a+=d.next().hashCode();return a});e(b,"isEmpty",function(){return 0==this.size()});e(b,"keySet",function(){null==this.$keySet&&(this.$keySet=(L("java.util.AbstractMap$1")?0:java.util.AbstractMap.$AbstractMap$1$(), +K(java.util.AbstractMap$1,this,null)));return this.$keySet});e(b,"put",function(){throw new UnsupportedOperationException;},"~O,~O");e(b,"putAll",function(a){this.putAllAM(a)},"java.util.Map");c(b,"putAllAM",function(a){if(!a.isEmpty()){var d;for(a=a.entrySet().iterator();a.hasNext()&&((d=a.next())||1);)this.put(d.getKey(),d.getValue())}},"java.util.Map");e(b,"remove",function(a){var d=this.entrySet().iterator();if(null!=a)for(;d.hasNext();){var b=d.next();if(a.equals(b.getKey()))return d.remove(), +b.getValue()}else for(;d.hasNext();)if(b=d.next(),null==b.getKey())return d.remove(),b.getValue();return null},"~O");e(b,"size",function(){return this.entrySet().size()});e(b,"toString",function(){if(this.isEmpty())return"{}";for(var a="{",d=this.entrySet().iterator();d.hasNext();){var b=d.next(),f=b.getKey(),a=f!==this?a+f:a+"(this Map)",a=a+"=",b=b.getValue(),a=b!==this?a+b:a+"(this Map)";d.hasNext()&&(a+=", ")}return a+"}"});e(b,"values",function(){null==this.$values&&(this.$values=(L("java.util.AbstractMap$2")? +0:java.util.AbstractMap.$AbstractMap$2$(),K(java.util.AbstractMap$2,this,null)));return this.$values});c(b,"clone",function(){return this.cloneAM()});c(b,"cloneAM",function(){var a;a=ga(this);a.$keySet=null;a.$values=null;return a});b.$AbstractMap$1$=function(){var a=W(java.util,"AbstractMap$1",java.util.AbstractSet);e(a,"contains",function(a){return this.b$["java.util.AbstractMap"].containsKey(a)},"~O");e(a,"size",function(){return this.b$["java.util.AbstractMap"].size()});e(a,"iterator",function(){return L("java.util.AbstractMap$1$1")? +0:java.util.AbstractMap.$AbstractMap$1$1$(),K(java.util.AbstractMap$1$1,this,null)})};b.$AbstractMap$1$1$=function(){var a=j(function(){R(this,arguments);this.setIterator=null;p(this,arguments)},java.util,"AbstractMap$1$1",null,java.util.Iterator);H(a,function(){this.setIterator=this.b$["java.util.AbstractMap"].entrySet().iterator()});e(a,"hasNext",function(){return this.setIterator.hasNext()});e(a,"next",function(){return this.setIterator.next().getKey()});e(a,"remove",function(){this.setIterator.remove()})}; +b.$AbstractMap$2$=function(){var a=W(java.util,"AbstractMap$2",java.util.AbstractCollection);e(a,"size",function(){return this.b$["java.util.AbstractMap"].size()});e(a,"contains",function(a){return this.b$["java.util.AbstractMap"].containsValue(a)},"~O");e(a,"iterator",function(){return L("java.util.AbstractMap$2$1")?0:java.util.AbstractMap.$AbstractMap$2$1$(),K(java.util.AbstractMap$2$1,this,null)})};b.$AbstractMap$2$1$=function(){var a=j(function(){R(this,arguments);this.setIterator=null;p(this, +arguments)},java.util,"AbstractMap$2$1",null,java.util.Iterator);H(a,function(){this.setIterator=this.b$["java.util.AbstractMap"].entrySet().iterator()});e(a,"hasNext",function(){return this.setIterator.hasNext()});e(a,"next",function(){return this.setIterator.next().getValue()});e(a,"remove",function(){this.setIterator.remove()})}});v(["java.util.AbstractCollection","$.Set"],"java.util.AbstractSet",null,function(){var b=u(java.util,"AbstractSet",java.util.AbstractCollection,java.util.Set);e(b,"equals", +function(a){return this===a?!0:C(a,"java.util.Set")?this.size()==a.size()&&this.containsAll(a):!1},"~O");e(b,"hashCode",function(){for(var a=0,d=this.iterator();d.hasNext();)var b=d.next(),a=a+(null==b?0:b.hashCode());return a});e(b,"removeAll",function(a){var d=!1;if(this.size()<=a.size())for(var b=this.iterator();b.hasNext();)a.contains(b.next())&&(b.remove(),d=!0);else for(b=a.iterator();b.hasNext();)d=this.remove(b.next())||d;return d},"java.util.Collection")});v(["java.util.AbstractList","$.List", +"$.RandomAccess"],"java.util.ArrayList",["java.util.Arrays"],function(){var b=j(function(){this.lastIndex=this.firstIndex=0;this.array=null;p(this,arguments)},java.util,"ArrayList",java.util.AbstractList,[java.util.List,Cloneable,java.io.Serializable,java.util.RandomAccess]);m(b,function(){B(this,java.util.ArrayList,[]);this.setCapacity(0)});m(b,function(a){B(this,java.util.ArrayList,[]);this.setCapacity(a)},"~N");m(b,function(a){this.firstIndex=this.lastIndex=0;var d=-1;a?"number"==typeof a&&(d= +a):d=0;0<=d?this.setCapacity(d):(d=a.size(),this.array=this.newElementArray(d+w(d/10)),this.addAll(a))},"java.util.Collection");c(b,"setCapacity",function(a){try{this.array=this.newElementArray(a)}catch(d){if(z(d,"NegativeArraySizeException"))throw new IllegalArgumentException;throw d;}},"~N");c(b,"newElementArray",function(a){return Array(a)},"~N");c(b,"add",function(a,d){this.add2(a,d)},"~N,~O");c(b,"add2",function(a,d){var b=this.size();if(0a||a>b)throw new IndexOutOfBoundsException;var f=d.size();if(0this.array.length-f){var c=this.firstIndex-f;if(0>c){var h=a+this.firstIndex; +System.arraycopy(this.array,h,this.array,h-c,b-a);this.lastIndex-=c;c=0}System.arraycopy(this.array,this.firstIndex,this.array,c,a);this.firstIndex=c}else h=a+this.firstIndex,System.arraycopy(this.array,h,this.array,h+f,b-a),this.lastIndex+=f;else 0==a?(this.growAtFront(f),this.firstIndex-=f):a==b&&(this.lastIndex>this.array.length-f&&this.growAtEnd(f),this.lastIndex+=f);if(0this.array.length-d&&this.growAtEnd(d);a=a.iterator();for(d=this.lastIndex+d;this.lastIndex=a-(this.array.length-this.lastIndex))a=this.lastIndex-this.firstIndex,0b&&(b=a);12>b&&(b=12);a=this.newElementArray(d+b);0< +d&&System.arraycopy(this.array,this.firstIndex,a,this.firstIndex,d);this.array=a}},"~N");c(b,"growAtFront",function(a){var d=this.size();if(this.array.length-this.lastIndex>=a)a=this.array.length-d,0a?a:this.firstIndex+d,null)),this.firstIndex=a,this.lastIndex=this.array.length;else{var b=w(d/2);a>b&&(b=a);12>b&&(b=12);a=this.newElementArray(d+b);0f&&(f=d);12>f&&(f=12);var c=this.newElementArray(b+f);if(a=this.firstIndex;d--){if(a.equals(this.array[d]))return d-this.firstIndex}else for(d= +this.lastIndex-1;d>=this.firstIndex;d--)if(null==this.array[d])return d-this.firstIndex;return-1},"~O");c(b,"remove",function(a){return this._removeItemAt(a)},"~N");c(b,"_removeObject",function(a){a=this.indexOf(a);if(0>a)return!1;this._removeItemAt(a);return!0},"~O");c(b,"_removeItemAt",function(a){var d,b=this.size();if(0<=a&&aa.length)return this.array.slice(this.firstIndex,this.firstIndex+d);System.arraycopy(this.array,this.firstIndex,a,0,d);df)throw new IllegalArgumentException("fromIndex("+b+") > toIndex("+f+")");if(0>b)throw new ArrayIndexOutOfBoundsException(b); +if(f>a)throw new ArrayIndexOutOfBoundsException(f);},"~N,~N,~N");b.binarySearch=c(b,"binarySearch",function(a,b){for(var f=0,c=a.length-1;f<=c;){var h=f+c>>1,e=a[h];if(eb)c=h-1;else return h}return-(f+1)},"~A,~N");b.binarySearch=c(b,"binarySearch",function(a,b){for(var f=0,c=a.length-1;f<=c;){var h=f+c>>1,e=a[h].compareTo(b);if(0>e)f=h+1;else if(0>1,k=f.compare(a[e],b);if(0>k)c=e+1;else if(0a.length)){var h=0,e=null,h=arguments.count,e=b,k=a,l=null; +switch(h){case 1:e=null;case 2:b=0;f=a.length;break;case 3:case 4:e=c,0==b&&f==a.length?k=a:(k=a.slice(b,f),l=a)}java.util.Arrays.rangeCheck(a.length,b,f);null==e&&(e=java.util.Arrays.comp);k.sort(e.compare);null!=l&&System.arraycopy(k,0,l,b,f)}},"~A,~N,~N,java.util.Comparator");var a=j(function(){this.a=null;p(this,arguments)},java.util.Arrays,"ArrayList",java.util.AbstractList,[java.util.RandomAccess,java.io.Serializable]);m(a,function(a){B(this,java.util.Arrays.ArrayList,[]);if(null==a)throw new NullPointerException; +this.a=a},"~A");e(a,"size",function(){return this.a.length});c(a,"toArray",function(){return this.a.clone()});e(a,"get",function(a){return this.a[a]},"~N");e(a,"set",function(a,b){var f=this.a[a];this.a[a]=b;return f},"~N,~O");e(a,"indexOf",function(a){if(null==a)for(var b=0;b=(c=b.compareTo(f.next())))return 0==c?f.previousIndex():-f.previousIndex()-1}return-a.size()-1}var f=0,h=a.size(),e=h-1;for(c=-1;f<=e;)if(h=f+e>>1,0<(c=b.compareTo(a.get(h))))f=h+1;else{if(0==c)return h;e=h-1}return-h-(0>c?1:2)},"java.util.List,~O");b.binarySearch=c(b,"binarySearch",function(a,b,f){if(null==f)return java.util.Collections.binarySearch(a,b);if(!C(a,"java.util.RandomAccess")){for(var c=a.listIterator();c.hasNext();){var h;if(0>=(h=f.compare(b, +c.next())))return 0==h?c.previousIndex():-c.previousIndex()-1}return-a.size()-1}var c=0,e=a.size(),k=e-1;for(h=-1;c<=k;)if(e=c+k>>1,0<(h=f.compare(b,a.get(e))))c=e+1;else{if(0==h)return e;k=e-1}return-e-(0>h?1:2)},"java.util.List,~O,java.util.Comparator");b.copy=c(b,"copy",function(a,b){if(a.size()b.compareTo(f)&&(b=f)}return b},"java.util.Collection"); +b.max=c(b,"max",function(a,b){for(var f=a.iterator(),c=f.next();f.hasNext();){var h=f.next();0>b.compare(c,h)&&(c=h)}return c},"java.util.Collection,java.util.Comparator");b.min=c(b,"min",function(a){a=a.iterator();for(var b=a.next();a.hasNext();){var f=a.next();0h&&(h=-h),a.set(h,a.set(c,a.get(h)));else{for(var f=a.toArray(),c=f.length-1;0h&&(h=-h);var e=f[c];f[c]=f[h];f[h]=e}c=0;for(h=a.listIterator();h.hasNext();)h.next(),h.set(f[c++])}},"java.util.List,java.util.Random"); +b.singleton=c(b,"singleton",function(a){return new java.util.Collections.SingletonSet(a)},"~O");b.singletonList=c(b,"singletonList",function(a){return new java.util.Collections.SingletonList(a)},"~O");b.singletonMap=c(b,"singletonMap",function(a,b){return new java.util.Collections.SingletonMap(a,b)},"~O,~O");b.sort=c(b,"sort",function(a){var b=a.toArray();java.util.Arrays.sort(b);var f=0;for(a=a.listIterator();a.hasNext();)a.next(),a.set(b[f++])},"java.util.List");b.sort=c(b,"sort",function(a,b){var f= +a.toArray(Array(a.size()));java.util.Arrays.sort(f,b);for(var c=0,h=a.listIterator();h.hasNext();)h.next(),h.set(f[c++])},"java.util.List,java.util.Comparator");b.swap=c(b,"swap",function(a,b,f){if(null==a)throw new NullPointerException;b!=f&&a.set(f,a.set(b,a.get(f)))},"java.util.List,~N,~N");b.replaceAll=c(b,"replaceAll",function(a,b,f){for(var c,h=!1;-1<(c=a.indexOf(b));)h=!0,a.set(c,f);return h},"java.util.List,~O,~O");b.rotate=c(b,"rotate",function(a,b){var f=a.size();if(0!=f){var c;c=0f)return-1;if(0==c)return 0;var h=b.get(0),e=a.indexOf(h);if(-1==e)return-1;for(;e=c;){var k= +a.listIterator(e);if(null==h?null==k.next():h.equals(k.next())){for(var l=b.listIterator(1),x=!1;l.hasNext();){var p=l.next();if(!k.hasNext())return-1;if(null==p?null!=k.next():!p.equals(k.next())){x=!0;break}}if(!x)return e}e++}return-1},"java.util.List,java.util.List");b.lastIndexOfSubList=c(b,"lastIndexOfSubList",function(a,b){var f=b.size(),c=a.size();if(f>c)return-1;if(0==f)return c;for(var c=b.get(f-1),h=a.lastIndexOf(c);-1=f;){var e=a.listIterator(h+1);if(null==c?null==e.previous(): +c.equals(e.previous())){for(var k=b.listIterator(f-1),l=!1;k.hasPrevious();){var x=k.previous();if(!e.hasPrevious())return-1;if(null==x?null!=e.previous():!x.equals(e.previous())){l=!0;break}}if(!l)return e.nextIndex()}h--}return-1},"java.util.List,java.util.List");b.list=c(b,"list",function(a){for(var b=new java.util.ArrayList;a.hasMoreElements();)b.add(a.nextElement());return b},"java.util.Enumeration");b.synchronizedCollection=c(b,"synchronizedCollection",function(a){if(null==a)throw new NullPointerException; +return new java.util.Collections.SynchronizedCollection(a)},"java.util.Collection");b.synchronizedList=c(b,"synchronizedList",function(a){if(null==a)throw new NullPointerException;return C(a,"java.util.RandomAccess")?new java.util.Collections.SynchronizedRandomAccessList(a):new java.util.Collections.SynchronizedList(a)},"java.util.List");b.synchronizedMap=c(b,"synchronizedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedMap(a)},"java.util.Map"); +b.synchronizedSet=c(b,"synchronizedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSet(a)},"java.util.Set");b.synchronizedSortedMap=c(b,"synchronizedSortedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSortedMap(a)},"java.util.SortedMap");b.synchronizedSortedSet=c(b,"synchronizedSortedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.SynchronizedSortedSet(a)}, +"java.util.SortedSet");b.unmodifiableCollection=c(b,"unmodifiableCollection",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableCollection(a)},"java.util.Collection");b.unmodifiableList=c(b,"unmodifiableList",function(a){if(null==a)throw new NullPointerException;return C(a,"java.util.RandomAccess")?new java.util.Collections.UnmodifiableRandomAccessList(a):new java.util.Collections.UnmodifiableList(a)},"java.util.List");b.unmodifiableMap=c(b,"unmodifiableMap", +function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableMap(a)},"java.util.Map");b.unmodifiableSet=c(b,"unmodifiableSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSet(a)},"java.util.Set");b.unmodifiableSortedMap=c(b,"unmodifiableSortedMap",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSortedMap(a)},"java.util.SortedMap");b.unmodifiableSortedSet=c(b, +"unmodifiableSortedSet",function(a){if(null==a)throw new NullPointerException;return new java.util.Collections.UnmodifiableSortedSet(a)},"java.util.SortedSet");b.frequency=c(b,"frequency",function(a,b){if(null==a)throw new NullPointerException;if(a.isEmpty())return 0;for(var f=0,c=a.iterator();c.hasNext();){var h=c.next();(null==b?null==h:b.equals(h))&&f++}return f},"java.util.Collection,~O");b.emptyList=c(b,"emptyList",function(){return java.util.Collections.EMPTY_LIST});b.emptySet=c(b,"emptySet", +function(){return java.util.Collections.EMPTY_SET});b.emptyMap=c(b,"emptyMap",function(){return java.util.Collections.EMPTY_MAP});b.checkedCollection=c(b,"checkedCollection",function(a,b){return new java.util.Collections.CheckedCollection(a,b)},"java.util.Collection,Class");b.checkedMap=c(b,"checkedMap",function(a,b,f){return new java.util.Collections.CheckedMap(a,b,f)},"java.util.Map,Class,Class");b.checkedList=c(b,"checkedList",function(a,b){return C(a,"java.util.RandomAccess")?new java.util.Collections.CheckedRandomAccessList(a, +b):new java.util.Collections.CheckedList(a,b)},"java.util.List,Class");b.checkedSet=c(b,"checkedSet",function(a,b){return new java.util.Collections.CheckedSet(a,b)},"java.util.Set,Class");b.checkedSortedMap=c(b,"checkedSortedMap",function(a,b,f){return new java.util.Collections.CheckedSortedMap(a,b,f)},"java.util.SortedMap,Class,Class");b.checkedSortedSet=c(b,"checkedSortedSet",function(a,b){return new java.util.Collections.CheckedSortedSet(a,b)},"java.util.SortedSet,Class");b.addAll=c(b,"addAll", +function(a,b){for(var f=!1,c=0;ca.size()){var f=a;a=b;b=f}for(f=a.iterator();f.hasNext();)if(b.contains(f.next()))return!1;return!0},"java.util.Collection,java.util.Collection");b.checkType=c(b,"checkType",function(a,b){if(!b.isInstance(a))throw new ClassCastException("Attempt to insert "+a.getClass()+" element into collection with element type "+ +b);return a},"~O,Class");b.$Collections$1$=function(){var a=j(function(){R(this,arguments);this.it=null;p(this,arguments)},java.util,"Collections$1",null,java.util.Enumeration);H(a,function(){this.it=this.f$.c.iterator()});c(a,"hasMoreElements",function(){return this.it.hasNext()});c(a,"nextElement",function(){return this.it.next()})};var a=u(java.util.Collections,"EmptyEnumeration",null,java.util.Enumeration);e(a,"hasMoreElements",function(){return!1});e(a,"nextElement",function(){throw new java.util.NoSuchElementException; +});a=u(java.util.Collections,"EmptyIterator",null,java.util.Iterator);e(a,"hasNext",function(){return!1});e(a,"next",function(){throw new java.util.NoSuchElementException;});e(a,"remove",function(){throw new IllegalStateException;});a=j(function(){this.n=0;this.element=null;p(this,arguments)},java.util.Collections,"CopiesList",java.util.AbstractList,java.io.Serializable);m(a,function(a,b){B(this,java.util.Collections.CopiesList,[]);if(0>a)throw new IllegalArgumentException;this.n=a;this.element=b}, +"~N,~O");e(a,"contains",function(a){return null==this.element?null==a:this.element.equals(a)},"~O");e(a,"size",function(){return this.n});e(a,"get",function(a){if(0<=a&&aa.length&&(a=a.getClass().getComponentType(),a=java.lang.reflect.Array.newInstance(a,b));for(;fc)throw new IllegalArgumentException("Illegal Capacity: "+c);if(0>=h||Float.isNaN(h))throw new IllegalArgumentException("Illegal Load: "+h);0==c&&(c=1);this.loadFactor=h;this.table=Array(c);this.threshold=G(Math.min(c*h,2147483640));this.__setJS();null!=f&&this.putAll(f)});e(b,"size",function(){var a=this.count;return a=this.__m&&this.__m.size||a});e(b,"isEmpty",function(){return 0==this.size()});e(b,"keys",function(){return this.getEnumeration(0)});e(b,"elements",function(){return this.getEnumeration(1)}); +c(b,"contains",function(a){if(null==a)throw new NullPointerException;if(0==this.size())return!1;if(java.util.Hashtable.__isSimple(this))for(var b=this.__m.values(),f=b.next();!f.done;f=b.next()){if(f.value==a||f.value.equals(a))return!0}else{b=this.table;for(f=b.length;0=this.threshold&&(this.rehash(),h=this.table,a=b.hashCode(),c=(a&2147483647)% +h.length);h[c]=new java.util.Hashtable.Entry(a,b,f,h[c]);this.count++},"~N,~O,~O,~N");e(b,"put",function(a,b){if(null==b)throw new NullPointerException;switch(java.util.Hashtable.__hasKey(this,a)){case 1:java.util.Hashtable.__ensureJavaMap(this);break;case 2:return this.__m.set(a,b),++this.modCount,null;case 3:var f=null,f=this.__m.get(a);this.__m.set(a,b);++this.modCount;return f}for(var c=this.table,f=a.hashCode(),h=(f&2147483647)%c.length,c=c[h];null!=c;c=c.next_)if(c.hash==f&&c.key.equals(a))return f= +c.value,c.value=b,f;this.addEntry(f,a,b,h);return null},"~O,~O");e(b,"remove",function(a){if(null==a)throw new NullPointerException("Hashtable key may not be null");switch(java.util.Hashtable.__hasKey(this,a)){case 1:java.util.Hashtable.__ensureJavaMap(this);break;case 2:return null;case 3:var b=null,b=this.__m.get(a);this.__m["delete"](a);++this.modCount;return b}for(var f=this.table,c=a.hashCode(),h=(c&2147483647)%f.length,b=f[h],e=null;null!=b;e=b,b=b.next_)if(b.hash==c&&b.key.equals(a))return this.modCount++, +null!=e?e.next_=b.next_:f[h]=b.next_,this.count--,a=b.value,b.value=null,a;return null},"~O");e(b,"putAll",function(a){if(java.util.Hashtable.__isSimple(a)){var b=this;a.__m.forEach(function(a,d){b.put(d,a)})}else{var f;for(a=a.entrySet().iterator();a.hasNext()&&((f=a.next())||1);)this.put(f.getKey(),f.getValue())}},"java.util.Map");e(b,"clear",function(){var a=this.table;this.modCount++;java.util.Hashtable.__isSimple(this)&&this.__m.clear();this.__setJS();for(var b=a.length;0<=--b;)a[b]=null;this.count= +0});c(b,"clone",function(){try{var a=T(this,java.util.Hashtable,"clone",[]);a.table=Array(this.table.length);for(var b=this.table.length;0this.loadFactor)return a;this.loadFactor=-this.loadFactor;for(var b,f=0,c=this.table;fb)return a.value[b];f=a.value[0];c=a.value[1]}if(!h)return L("java.util.Hashtable$Enumerator$1")?0:java.util.Hashtable.Enumerator.$Hashtable$Enumerator$1$(),K(java.util.Hashtable$Enumerator$1,this,null,0,f,c,null)}}else{f=this.index;for(b=this.table;null==a&&0=c)){c=Integer.toHexString(c.charCodeAt(0));a+="\\u"; +for(var h=0;h<4-c.length;h++)a+="0"}a+=c}}return a},"~S,~S,~B");c(b,"getProperty",function(a){var d=this.get(a),d="string"==typeof d?d:null;null==d&&null!=this.defaults&&(d=this.defaults.getProperty(a));return d},"~S");c(b,"getProperty",function(a,d){var b=this.get(a),b="string"==typeof b?b:null;null==b&&null!=this.defaults&&(b=this.defaults.getProperty(a));return null==b?d:b},"~S,~S");c(b,"list",function(a){if(null==a)throw new NullPointerException;for(var d="",b=this.propertyNames();b.hasMoreElements();){for(var f= +b.nextElement(),d=d+f,d=d+"=",c=this.get(f),h=this.defaults;null==c;)c=h.get(f),h=h.defaults;40",">").replaceAll("'","'").replaceAll('"',""")},"~S");b.lineSeparator=null});D(java.util,"SortedMap",java.util.Map); +D(java.util,"SortedSet",java.util.Set);v(["java.util.Enumeration"],"java.util.StringTokenizer",null,function(){var b=j(function(){this.delimiters=this.string=null;this.returnDelimiters=!1;this.position=0;p(this,arguments)},java.util,"StringTokenizer",null,java.util.Enumeration);m(b,function(a,d,b){switch(arguments.length){case 1:d=" \t\n\r\f";case 2:b=!1}if(null==a)throw new NullPointerException;this.string=a;this.delimiters=d;this.returnDelimiters=b;this.position=0},"~S,~S,~B");c(b,"countTokens", +function(){for(var a=0,d=!1,b=this.position,f=this.string.length;b>24&255});e(b,"setOpacity255",function(a){this.argb=this.argb&16777215|(a&255)<<24},"~N");b.get1=c(b,"get1", +function(a){var d=new JS.Color;d.argb=a|4278190080;return d},"~N");b.get3=c(b,"get3",function(a,d,b){return(new JS.Color).set4(a,d,b,255)},"~N,~N,~N");b.get4=c(b,"get4",function(a,d,b,f){return(new JS.Color).set4(a,d,b,f)},"~N,~N,~N,~N");c(b,"set4",function(a,d,b,f){this.argb=(f<<24|a<<16|d<<8|b)&4294967295;return this},"~N,~N,~N,~N");e(b,"toString",function(){var a="00000000"+Integer.toHexString(this.argb);return"[0x"+a.substring(a.length-8,a.length)+"]"})});r("JS");s=j(function(){this.height=this.width= +0;p(this,arguments)},JS,"Dimension",null);m(s,function(b,a){this.set(b,a)},"~N,~N");c(s,"set",function(b,a){this.width=b;this.height=a;return this},"~N,~N");r("J.awtjs");u(J.awtjs,"Event",null);r("J.api");D(J.api,"GenericMenuInterface");r("JU");v(["JU.P3"],"JU.A4",["JU.T3"],function(){var b=j(function(){this.angle=0;p(this,arguments)},JU,"A4",JU.P3);m(b,function(){B(this,JU.A4,[]);this.z=1});b.new4=c(b,"new4",function(a,d,b,f){var c=new JU.A4;c.set4(a,d,b,f);return c},"~N,~N,~N,~N");b.newAA=c(b,"newAA", +function(a){var d=new JU.A4;d.set4(a.x,a.y,a.z,a.angle);return d},"JU.A4");b.newVA=c(b,"newVA",function(a,d){var b=new JU.A4;b.setVA(a,d);return b},"JU.V3,~N");c(b,"setVA",function(a,d){this.x=a.x;this.y=a.y;this.z=a.z;this.angle=d},"JU.V3,~N");c(b,"set4",function(a,d,b,f){this.x=a;this.y=d;this.z=b;this.angle=f},"~N,~N,~N,~N");c(b,"setAA",function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.angle=a.angle},"JU.A4");c(b,"setM",function(a){this.setFromMat(a.m00,a.m01,a.m02,a.m10,a.m11,a.m12,a.m20,a.m21, +a.m22)},"JU.M3");c(b,"setFromMat",function(a,d,b,f,c,h,e,k,l){a=0.5*(a+c+l-1);this.x=k-h;this.y=b-e;this.z=f-d;d=0.5*Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z);0==d&&1==a?(this.x=this.y=0,this.z=1,this.angle=0):this.angle=Math.atan2(d,a)},"~N,~N,~N,~N,~N,~N,~N,~N,~N");e(b,"hashCode",function(){return JU.T3.floatToIntBits(this.x)^JU.T3.floatToIntBits(this.y)^JU.T3.floatToIntBits(this.z)^JU.T3.floatToIntBits(this.angle)});e(b,"equals",function(a){return!C(a,"JU.A4")?!1:this.x==a.x&&this.y== +a.y&&this.z==a.z&&this.angle==a.angle},"~O");e(b,"toString",function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.angle+")"});e(b,"toJSON",function(){return"["+this.x+","+this.y+","+this.z+","+180*this.angle/3.141592653589793+"]"})});r("JU");v(["java.net.URLConnection"],"JU.AjaxURLConnection",["JU.AU","$.Rdr"],function(){var b=j(function(){this.bytesOut=null;this.postOut="";p(this,arguments)},JU,"AjaxURLConnection",java.net.URLConnection);c(b,"doAjax",function(){var a=null,a=Jmol;return a.doAjax(this.url, +this.postOut,this.bytesOut,!1)});e(b,"connect",function(){});c(b,"outputBytes",function(a){this.bytesOut=a},"~A");c(b,"outputString",function(a){this.postOut=a},"~S");e(b,"getInputStream",function(){var a=null,d=this.doAjax();JU.AU.isAB(d)?a=JU.Rdr.getBIS(d):C(d,"JU.SB")?a=JU.Rdr.getBIS(JU.Rdr.getBytesFromSB(d)):"string"==typeof d&&(a=JU.Rdr.getBIS(d.getBytes()));return a});c(b,"getContents",function(){return this.doAjax()})});r("JU");v(["java.net.URLStreamHandler"],"JU.AjaxURLStreamHandler",["JU.AjaxURLConnection", +"$.SB"],function(){var b=j(function(){this.protocol=null;p(this,arguments)},JU,"AjaxURLStreamHandler",java.net.URLStreamHandler);m(b,function(a){B(this,JU.AjaxURLStreamHandler,[]);this.protocol=a},"~S");c(b,"openConnection",function(a){return new JU.AjaxURLConnection(a)},"java.net.URL");e(b,"toExternalForm",function(a){var d=new JU.SB;d.append(a.getProtocol());d.append(":");null!=a.getAuthority()&&0=d?a:JU.AU.arrayCopyObject(a,d)},"~O,~N");b.ensureLengthS=c(b,"ensureLengthS",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyS(a,d)},"~A,~N");b.ensureLengthA= +c(b,"ensureLengthA",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyF(a,d)},"~A,~N");b.ensureLengthI=c(b,"ensureLengthI",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyI(a,d)},"~A,~N");b.ensureLengthShort=c(b,"ensureLengthShort",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyShort(a,d)},"~A,~N");b.ensureLengthByte=c(b,"ensureLengthByte",function(a,d){return null!=a&&a.length>=d?a:JU.AU.arrayCopyByte(a,d)},"~A,~N");b.doubleLength=c(b,"doubleLength",function(a){return JU.AU.arrayCopyObject(a, +null==a?16:2*JU.AU.getLength(a))},"~O");b.doubleLengthS=c(b,"doubleLengthS",function(a){return JU.AU.arrayCopyS(a,null==a?16:2*a.length)},"~A");b.doubleLengthF=c(b,"doubleLengthF",function(a){return JU.AU.arrayCopyF(a,null==a?16:2*a.length)},"~A");b.doubleLengthI=c(b,"doubleLengthI",function(a){return JU.AU.arrayCopyI(a,null==a?16:2*a.length)},"~A");b.doubleLengthShort=c(b,"doubleLengthShort",function(a){return JU.AU.arrayCopyShort(a,null==a?16:2*a.length)},"~A");b.doubleLengthByte=c(b,"doubleLengthByte", +function(a){return JU.AU.arrayCopyByte(a,null==a?16:2*a.length)},"~A");b.doubleLengthBool=c(b,"doubleLengthBool",function(a){return JU.AU.arrayCopyBool(a,null==a?16:2*a.length)},"~A");b.deleteElements=c(b,"deleteElements",function(a,d,b){if(0==b||null==a)return a;var f=JU.AU.getLength(a);if(d>=f)return a;f-=d+b;0>f&&(f=0);var c=JU.AU.newInstanceO(a,d+f);0d&&(d=b);if(d==b)return a;if(dd&&(d=b);if(dd&&(d=a.length);var b=Array(d);if(null!=a){var c=a.length;System.arraycopy(a,0,b,0,cd&&(d=b);if(dd&&(d=b);if(dd&&(d=b);if(dd&&(d=b);if(dd&&(d=b);if(d=g;h--){a+="\n*"+h+"*";for(e=b;e<=c;e++)a+="\t"+(e>18&63));b.appendC(JU.Base64.base64.charAt(h>>12&63));b.appendC(2==g?"=":JU.Base64.base64.charAt(h>>6&63));b.appendC(1<=g?"=":JU.Base64.base64.charAt(h&63))}return b},"~A");b.decodeBase64=c(b,"decodeBase64",function(a){var d=0,b,c=a.indexOf(";base64,")+1;0=c;)d+=65==(b=a[h].charCodeAt(0)&127)||0>2,e=I(d,0),k=18,h=c,l=c=0;hk&&(e[c++]=(l&16711680)>>16,c>8),c>5},"~N");c(b,"recalculateWordsInUse",function(){var a;for(a=this.wordsInUse-1;0<=a&&0==this.words[a];a--); +this.wordsInUse=a+1});b.newN=c(b,"newN",function(a){var d=new JU.BS;d.init(a);return d},"~N");c(b,"init",function(a){if(0>a)throw new NegativeArraySizeException("nbits < 0: "+a);this.initWords(a);this.sizeIsSticky=!0},"~N");c(b,"initWords",function(a){this.words=E(JU.BS.wordIndex(a-1)+1,0)},"~N");c(b,"ensureCapacity",function(a){this.words.lengtha)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);this.expandTo(d);this.words[d]|=1<>>-d;if(b==c)this.words[b]|=g&h;else{this.words[b]|=g;for(b+=1;b +a)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);d>=this.wordsInUse||(this.words[d]&=~(1<=this.wordsInUse)){var c=JU.BS.wordIndex(d-1);c>=this.wordsInUse&&(d=this.length(),c=this.wordsInUse-1);var g=-1<>>-d;if(b==c)this.words[b]&=~(g&h);else{this.words[b]&=~g;for(b+=1;ba)throw new IndexOutOfBoundsException("bitIndex < 0: "+a);var d=JU.BS.wordIndex(a);return da)throw new IndexOutOfBoundsException("fromIndex < 0: "+a);var d=JU.BS.wordIndex(a);if(d>=this.wordsInUse)return-1;for(a=this.words[d]&-1<a)throw new IndexOutOfBoundsException("fromIndex < 0: "+a);var d=JU.BS.wordIndex(a);if(d>=this.wordsInUse)return a;for(a=~this.words[d]&-1<a.wordsInUse;)this.words[--this.wordsInUse]=0;for(var d=0;d>32^a});c(b,"size",function(){return 32*this.words.length});e(b,"equals",function(a){if(!C(a,"JU.BS"))return!1;if(this===a)return!0;if(this.wordsInUse!=a.wordsInUse)return!1;for(var d= +0;d=a;)this.get(b)&&d--;return d},"~N");e(b,"toJSON",function(){var a=128g&&(c.append((-2==h?"":" ")+e),h=e),g=e)}c.append("}").appendC(b);return c.toString()},"JU.BS,~S,~S");b.unescape=c(b,"unescape",function(a){var d,b;if(null==a||4>(b=(a=a.trim()).length)||a.equalsIgnoreCase("({null})")|| +"("!=(d=a.charAt(0))&&"["!=d||a.charAt(b-1)!=("("==d?")":"]")||"{"!=a.charAt(1)||a.indexOf("}")!=b-2)return null;for(var c=b-=2;2<=--c;)if(!JU.PT.isDigit(d=a.charAt(c))&&" "!=d&&"\t"!=d&&":"!=d)return null;for(var g=b;JU.PT.isDigit(a.charAt(--g)););if(++g==b)g=0;else try{g=Integer.parseInt(a.substring(g,b))}catch(h){if(z(h,"NumberFormatException"))return null;throw h;}for(var e=JU.BS.newN(g),k=g=-1,l=-2,c=2;c<=b;c++)switch((d=a.charAt(c)).charCodeAt(0)){case 9:case 32:case 125:if(0>l)break;if(lk&&(k=l);e.setBits(k,l+1);k=-1;l=-2;break;case 58:k=g=l;l=-2;break;default:JU.PT.isDigit(d)&&(0>l&&(l=0),l=10*l+(d.charCodeAt(0)-48))}return 0<=k?null:e},"~S");b.emptyBitmap=E(0,0)});r("JU");v(["java.util.Hashtable"],"JU.CU",["JU.P3","$.PT"],function(){var b=u(JU,"CU",null);b.toRGBHexString=c(b,"toRGBHexString",function(a){var d=a.getRGB();if(0==d)return"000000";a="00"+Integer.toHexString(d>>16&255);a=a.substring(a.length-2);var b="00"+Integer.toHexString(d>>8&255),b=b.substring(b.length-2), +d="00"+Integer.toHexString(d&255),d=d.substring(d.length-2);return a+b+d},"javajs.api.GenericColor");b.toCSSString=c(b,"toCSSString",function(a){var d=a.getOpacity255();if(255==d)return"#"+JU.CU.toRGBHexString(a);a=a.getRGB();return"rgba("+(a>>16&255)+","+(a>>8&255)+","+(a&255)+","+d/255+")"},"javajs.api.GenericColor");b.getArgbFromString=c(b,"getArgbFromString",function(a){var d=0;if(null==a||0==(d=a.length))return 0;a=a.toLowerCase();if("["==a.charAt(0)&&"]"==a.charAt(d-1)){var b;if(0<=a.indexOf(",")){b= +JU.PT.split(a.substring(1,a.length-1),",");if(3!=b.length)return 0;a=JU.PT.parseFloat(b[0]);d=JU.PT.parseFloat(b[1]);b=JU.PT.parseFloat(b[2]);return JU.CU.colorTriadToFFRGB(a,d,b)}switch(d){case 9:b="x";break;case 10:b="0x";break;default:return 0}if(1!=a.indexOf(b))return 0;a="#"+a.substring(d-7,d-1);d=7}if(7==d&&"#"==a.charAt(0))try{return JU.PT.parseIntRadix(a.substring(1,7),16)|4278190080}catch(c){if(z(c,Exception))return 0;throw c;}a=JU.CU.mapJavaScriptColors.get(a);return null==a?0:a.intValue()}, +"~S");b.colorTriadToFFRGB=c(b,"colorTriadToFFRGB",function(a,d,b){1>=a&&(1>=d&&1>=b)&&(0>16&255,a>>8&255,a&255);return d}, +"~N,JU.P3");b.colorPtToFFRGB=c(b,"colorPtToFFRGB",function(a){return JU.CU.colorTriadToFFRGB(a.x,a.y,a.z)},"JU.T3");b.toRGB3f=c(b,"toRGB3f",function(a,d){d[0]=(a>>16&255)/255;d[1]=(a>>8&255)/255;d[2]=(a&255)/255},"~N,~A");b.toFFGGGfromRGB=c(b,"toFFGGGfromRGB",function(a){a=w((2989*(a>>16&255)+5870*(a>>8&255)+1140*(a&255)+5E3)/1E4)&16777215;return JU.CU.rgb(a,a,a)},"~N");b.rgbToHSL=c(b,"rgbToHSL",function(a,d){var b=a.x/255,c=a.y/255,g=a.z/255,h=Math.min(b,Math.min(c,g)),e=Math.max(b,Math.max(c,g)), +k=e+h,h=e-h,b=60*(0==h?0:e==b?(c-g)/h+6:e==c?(g-b)/h+2:(b-c)/h+4)%360,c=h/(0==h?1:1>=k?k:2-k);return d?JU.P3.new3(Math.round(10*b)/10,Math.round(1E3*c)/10,Math.round(500*k)/10):JU.P3.new3(b,100*c,50*k)},"JU.P3,~B");b.hslToRGB=c(b,"hslToRGB",function(a){var d=Math.max(0,Math.min(360,a.x))/60,b=Math.max(0,Math.min(100,a.y))/100;a=Math.max(0,Math.min(100,a.z))/100;var b=a-(0.5>a?a:1-a)*b,c=2*(a-b);a=JU.CU.toRGB(b,c,d+2);var g=JU.CU.toRGB(b,c,d),d=JU.CU.toRGB(b,c,d-2);return JU.P3.new3(Math.round(255* +a),Math.round(255*g),Math.round(255*d))},"JU.P3");b.toRGB=c(b,"toRGB",function(a,d,b){return 1>(b+=0>b?6:6b?a+d:4>b?a+d*(4-b):a},"~N,~N,~N");b.colorNames=A(-1,"contrast black pewhite pecyan pepurple pegreen peblue peviolet pebrown pepink peyellow pedarkgreen peorange pelightblue pedarkcyan pedarkgray aliceblue antiquewhite aqua aquamarine azure beige bisque blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkturquoise darkviolet deeppink deepskyblue dimgray dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgreen lightgrey lightgray lightpink lightsalmon lightseagreen lightskyblue lightslategray lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen bluetint greenblue greentint grey gray pinktint redorange yellowtint".split(" ")); +b.colorArgbs=E(-1,[4294892730,4278190080,4294967295,4278255615,4291830015,4278255360,4284506367,4294934720,4288946216,4294957272,4294967040,4278239232,4294946816,4289769727,4278231200,4284506208,4293982463,4294634455,4278255615,4286578644,4293984255,4294309340,4294960324,4294962125,4278190335,4287245282,4289014314,4292786311,4284456608,4286578432,4291979550,4294934352,4284782061,4294965468,4292613180,4278255615,4278190219,4278225803,4290283019,4289309097,4278215680,4290623339,4287299723,4283788079, +4294937600,4288230092,4287299584,4293498490,4287609999,4282924427,4281290575,4278243025,4287889619,4294907027,4278239231,4285098345,4280193279,4289864226,4294966E3,4280453922,4294902015,4292664540,4294506751,4294956800,4292519200,4286611584,4278222848,4289593135,4293984240,4294928820,4291648604,4283105410,4294967280,4293977740,4293322490,4294963445,4286381056,4294965965,4289583334,4293951616,4292935679,4294638290,4287688336,4292072403,4292072403,4294948545,4294942842,4280332970,4287090426,4286023833, +4289774814,4294967264,4278255360,4281519410,4294635750,4294902015,4286578688,4284927402,4278190285,4290401747,4287852763,4282168177,4286277870,4278254234,4282962380,4291237253,4279834992,4294311930,4294960353,4294960309,4294958765,4278190208,4294833638,4286611456,4285238819,4294944E3,4294919424,4292505814,4293847210,4288215960,4289720046,4292571283,4294963157,4294957753,4291659071,4294951115,4292714717,4289781990,4286578816,4294901760,4290547599,4282477025,4287317267,4294606962,4294222944,4281240407, +4294964718,4288696877,4290822336,4287090411,4285160141,4285563024,4294966010,4278255487,4282811060,4291998860,4278222976,4292394968,4294927175,4282441936,4293821166,4294303411,4294967295,4294309365,4294967040,4288335154,4289714175,4281240407,4288217011,4286611584,4286611584,4294945723,4294919424,4294375029]);b.mapJavaScriptColors=new java.util.Hashtable;for(b=JU.CU.colorNames.length;0<=--b;)JU.CU.mapJavaScriptColors.put(JU.CU.colorNames[b],Integer.$valueOf(JU.CU.colorArgbs[b]))});r("JU");v(null,"JU.DF", +["JU.PT","$.SB"],function(){var b=u(JU,"DF",null);b.setUseNumberLocalization=c(b,"setUseNumberLocalization",function(a){JU.DF.useNumberLocalization[0]=a?Boolean.TRUE:Boolean.FALSE},"~B");b.formatDecimalDbl=c(b,"formatDecimalDbl",function(a,d){return 2147483647==d||-Infinity==a||Infinity==a||Double.isNaN(a)?""+a:JU.DF.formatDecimal(a,d)},"~N,~N");b.formatDecimal=c(b,"formatDecimal",function(a,d){if(-Infinity==a||(Infinity==a||Double.isNaN(a))||2147483647==d)return""+a;var b=0>a;b&&(a=-a);var c;if(0> +d){d=-d;d>JU.DF.formattingStrings.length&&(d=JU.DF.formattingStrings.length);if(0==a)return JU.DF.formattingStrings[d-1]+"E+0";var g;1>Math.abs(a)?(c=100,g=1E-100*a):(c=-100,g=1E100*a);g=(""+g).toUpperCase();var h=g.indexOf("E");0>h?g=""+a:(c=JU.PT.parseInt(g.substring(h+(g.indexOf("E+")==h?2:1)))+c,g=JU.PT.parseFloat(g.substring(0,h)),g=JU.DF.formatDecimal(g,d-1),g.startsWith("10.")&&(g=JU.DF.formatDecimal(1,d-1),c++));return(b?"-":"")+g+"E"+(0<=c?"+":"")+c}d>=JU.DF.formattingStrings.length&&(d= +JU.DF.formattingStrings.length-1);g=(""+a).toUpperCase();c=g.indexOf(".");if(0>c)return(b?"-":"")+g+JU.DF.formattingStrings[d].substring(1);h=g.indexOf("E-");0g&&"0"==b.charAt(c);)c--;return b.substring(0,c+1)},"~N,~N");b.formattingStrings=A(-1,"0 0.0 0.00 0.000 0.0000 0.00000 0.000000 0.0000000 0.00000000 0.000000000 0.0000000000 0.00000000000 0.000000000000".split(" "));b.formatAdds=M(-1,[0.5,0.05,0.005, +5E-4,5E-5,5E-6,5E-7,5E-8,5E-9,5E-10,5E-11,5E-12,5E-13]);b.useNumberLocalization=A(-1,[Boolean.TRUE])});r("JU");v(["java.lang.Enum"],"JU.Encoding",null,function(){var b=u(JU,"Encoding",Enum);n(b,"NONE",0,[]);n(b,"UTF8",1,[]);n(b,"UTF_16BE",2,[]);n(b,"UTF_16LE",3,[]);n(b,"UTF_32BE",4,[]);n(b,"UTF_32LE",5,[])});r("JU");v(["java.util.ArrayList"],"JU.Lst",null,function(){var b=u(JU,"Lst",java.util.ArrayList);c(b,"addLast",function(a){return this.add1(a)},"~O");e(b,"add",function(a,d){return this.add2(a, +d)},"~N,~O");c(b,"removeItemAt",function(a){return this._removeItemAt(a)},"~N");c(b,"removeObj",function(a){return this._removeObject(a)},"~O")});r("JU");s=j(function(){this.m22=this.m21=this.m20=this.m12=this.m11=this.m10=this.m02=this.m01=this.m00=0;p(this,arguments)},JU,"M34",null);c(s,"setAA33",function(b){var a=b.x,d=b.y,q=b.z;b=b.angle;var c=Math.sqrt(a*a+d*d+q*q),c=1/c,a=a*c,d=d*c,q=q*c,g=Math.cos(b);b=Math.sin(b);c=1-g;this.m00=g+a*a*c;this.m11=g+d*d*c;this.m22=g+q*q*c;var g=a*d*c,h=q*b;this.m01= +g-h;this.m10=g+h;g=a*q*c;h=d*b;this.m02=g+h;this.m20=g-h;g=d*q*c;h=a*b;this.m12=g-h;this.m21=g+h},"JU.A4");c(s,"rotate",function(b){this.rotate2(b,b)},"JU.T3");c(s,"rotate2",function(b,a){a.set(this.m00*b.x+this.m01*b.y+this.m02*b.z,this.m10*b.x+this.m11*b.y+this.m12*b.z,this.m20*b.x+this.m21*b.y+this.m22*b.z)},"JU.T3,JU.T3");c(s,"setM33",function(b){this.m00=b.m00;this.m01=b.m01;this.m02=b.m02;this.m10=b.m10;this.m11=b.m11;this.m12=b.m12;this.m20=b.m20;this.m21=b.m21;this.m22=b.m22},"JU.M34");c(s, +"clear33",function(){this.m00=this.m01=this.m02=this.m10=this.m11=this.m12=this.m20=this.m21=this.m22=0});c(s,"set33",function(b,a,d){switch(b){case 0:switch(a){case 0:this.m00=d;return;case 1:this.m01=d;return;case 2:this.m02=d;return}break;case 1:switch(a){case 0:this.m10=d;return;case 1:this.m11=d;return;case 2:this.m12=d;return}break;case 2:switch(a){case 0:this.m20=d;return;case 1:this.m21=d;return;case 2:this.m22=d;return}}this.err()},"~N,~N,~N");c(s,"get33",function(b,a){switch(b){case 0:switch(a){case 0:return this.m00; +case 1:return this.m01;case 2:return this.m02}break;case 1:switch(a){case 0:return this.m10;case 1:return this.m11;case 2:return this.m12}break;case 2:switch(a){case 0:return this.m20;case 1:return this.m21;case 2:return this.m22}}this.err();return 0},"~N,~N");c(s,"setRow33",function(b,a){switch(b){case 0:this.m00=a[0];this.m01=a[1];this.m02=a[2];break;case 1:this.m10=a[0];this.m11=a[1];this.m12=a[2];break;case 2:this.m20=a[0];this.m21=a[1];this.m22=a[2];break;default:this.err()}},"~N,~A");c(s,"getRow33", +function(b,a){switch(b){case 0:a[0]=this.m00;a[1]=this.m01;a[2]=this.m02;return;case 1:a[0]=this.m10;a[1]=this.m11;a[2]=this.m12;return;case 2:a[0]=this.m20;a[1]=this.m21;a[2]=this.m22;return}this.err()},"~N,~A");c(s,"setColumn33",function(b,a){switch(b){case 0:this.m00=a[0];this.m10=a[1];this.m20=a[2];break;case 1:this.m01=a[0];this.m11=a[1];this.m21=a[2];break;case 2:this.m02=a[0];this.m12=a[1];this.m22=a[2];break;default:this.err()}},"~N,~A");c(s,"getColumn33",function(b,a){switch(b){case 0:a[0]= +this.m00;a[1]=this.m10;a[2]=this.m20;break;case 1:a[0]=this.m01;a[1]=this.m11;a[2]=this.m21;break;case 2:a[0]=this.m02;a[1]=this.m12;a[2]=this.m22;break;default:this.err()}},"~N,~A");c(s,"add33",function(b){this.m00+=b.m00;this.m01+=b.m01;this.m02+=b.m02;this.m10+=b.m10;this.m11+=b.m11;this.m12+=b.m12;this.m20+=b.m20;this.m21+=b.m21;this.m22+=b.m22},"JU.M34");c(s,"sub33",function(b){this.m00-=b.m00;this.m01-=b.m01;this.m02-=b.m02;this.m10-=b.m10;this.m11-=b.m11;this.m12-=b.m12;this.m20-=b.m20;this.m21-= +b.m21;this.m22-=b.m22},"JU.M34");c(s,"mul33",function(b){this.m00*=b;this.m01*=b;this.m02*=b;this.m10*=b;this.m11*=b;this.m12*=b;this.m20*=b;this.m21*=b;this.m22*=b},"~N");c(s,"transpose33",function(){var b=this.m01;this.m01=this.m10;this.m10=b;b=this.m02;this.m02=this.m20;this.m20=b;b=this.m12;this.m12=this.m21;this.m21=b});c(s,"setXRot",function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=1;this.m10=this.m02=this.m01=0;this.m11=a;this.m12=-b;this.m20=0;this.m21=b;this.m22=a},"~N");c(s,"setYRot", +function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=a;this.m01=0;this.m02=b;this.m10=0;this.m11=1;this.m12=0;this.m20=-b;this.m21=0;this.m22=a},"~N");c(s,"setZRot",function(b){var a=Math.cos(b);b=Math.sin(b);this.m00=a;this.m01=-b;this.m02=0;this.m10=b;this.m11=a;this.m21=this.m20=this.m12=0;this.m22=1},"~N");c(s,"determinant3",function(){return this.m00*(this.m11*this.m22-this.m21*this.m12)-this.m01*(this.m10*this.m22-this.m20*this.m12)+this.m02*(this.m10*this.m21-this.m20*this.m11)});c(s,"err", +function(){throw new ArrayIndexOutOfBoundsException("matrix column/row out of bounds");});r("JU");v(["JU.M34"],"JU.M3",["JU.T3"],function(){var b=u(JU,"M3",JU.M34,java.io.Serializable);b.newA9=c(b,"newA9",function(a){var d=new JU.M3;d.setA(a);return d},"~A");b.newM3=c(b,"newM3",function(a){var d=new JU.M3;if(null==a)return d.setScale(1),d;d.m00=a.m00;d.m01=a.m01;d.m02=a.m02;d.m10=a.m10;d.m11=a.m11;d.m12=a.m12;d.m20=a.m20;d.m21=a.m21;d.m22=a.m22;return d},"JU.M3");c(b,"setScale",function(a){this.clear33(); +this.m00=this.m11=this.m22=a},"~N");c(b,"setM3",function(a){this.setM33(a)},"JU.M34");c(b,"setA",function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m10=a[3];this.m11=a[4];this.m12=a[5];this.m20=a[6];this.m21=a[7];this.m22=a[8]},"~A");c(b,"setElement",function(a,d,b){this.set33(a,d,b)},"~N,~N,~N");c(b,"getElement",function(a,d){return this.get33(a,d)},"~N,~N");c(b,"setRow",function(a,d,b,c){switch(a){case 0:this.m00=d;this.m01=b;this.m02=c;break;case 1:this.m10=d;this.m11=b;this.m12=c;break; +case 2:this.m20=d;this.m21=b;this.m22=c;break;default:this.err()}},"~N,~N,~N,~N");c(b,"setRowV",function(a,d){switch(a){case 0:this.m00=d.x;this.m01=d.y;this.m02=d.z;break;case 1:this.m10=d.x;this.m11=d.y;this.m12=d.z;break;case 2:this.m20=d.x;this.m21=d.y;this.m22=d.z;break;default:this.err()}},"~N,JU.T3");c(b,"setRowA",function(a,d){this.setRow33(a,d)},"~N,~A");e(b,"getRow",function(a,d){this.getRow33(a,d)},"~N,~A");c(b,"setColumn3",function(a,d,b,c){switch(a){case 0:this.m00=d;this.m10=b;this.m20= +c;break;case 1:this.m01=d;this.m11=b;this.m21=c;break;case 2:this.m02=d;this.m12=b;this.m22=c;break;default:this.err()}},"~N,~N,~N,~N");c(b,"setColumnV",function(a,d){switch(a){case 0:this.m00=d.x;this.m10=d.y;this.m20=d.z;break;case 1:this.m01=d.x;this.m11=d.y;this.m21=d.z;break;case 2:this.m02=d.x;this.m12=d.y;this.m22=d.z;break;default:this.err()}},"~N,JU.T3");c(b,"getColumnV",function(a,d){switch(a){case 0:d.x=this.m00;d.y=this.m10;d.z=this.m20;break;case 1:d.x=this.m01;d.y=this.m11;d.z=this.m21; +break;case 2:d.x=this.m02;d.y=this.m12;d.z=this.m22;break;default:this.err()}},"~N,JU.T3");c(b,"setColumnA",function(a,d){this.setColumn33(a,d)},"~N,~A");c(b,"getColumn",function(a,d){this.getColumn33(a,d)},"~N,~A");c(b,"add",function(a){this.add33(a)},"JU.M3");c(b,"sub",function(a){this.sub33(a)},"JU.M3");c(b,"transpose",function(){this.transpose33()});c(b,"transposeM",function(a){this.setM33(a);this.transpose33()},"JU.M3");c(b,"invertM",function(a){this.setM33(a);this.invert()},"JU.M3");c(b,"invert", +function(){var a=this.determinant3();0!=a&&(a=1/a,this.set9(this.m11*this.m22-this.m12*this.m21,this.m02*this.m21-this.m01*this.m22,this.m01*this.m12-this.m02*this.m11,this.m12*this.m20-this.m10*this.m22,this.m00*this.m22-this.m02*this.m20,this.m02*this.m10-this.m00*this.m12,this.m10*this.m21-this.m11*this.m20,this.m01*this.m20-this.m00*this.m21,this.m00*this.m11-this.m01*this.m10),this.scale(a))});c(b,"setAsXRotation",function(a){this.setXRot(a);return this},"~N");c(b,"setAsYRotation",function(a){this.setYRot(a); +return this},"~N");c(b,"setAsZRotation",function(a){this.setZRot(a);return this},"~N");c(b,"scale",function(a){this.mul33(a)},"~N");c(b,"mul",function(a){this.mul2(this,a)},"JU.M3");c(b,"mul2",function(a,d){this.set9(a.m00*d.m00+a.m01*d.m10+a.m02*d.m20,a.m00*d.m01+a.m01*d.m11+a.m02*d.m21,a.m00*d.m02+a.m01*d.m12+a.m02*d.m22,a.m10*d.m00+a.m11*d.m10+a.m12*d.m20,a.m10*d.m01+a.m11*d.m11+a.m12*d.m21,a.m10*d.m02+a.m11*d.m12+a.m12*d.m22,a.m20*d.m00+a.m21*d.m10+a.m22*d.m20,a.m20*d.m01+a.m21*d.m11+a.m22*d.m21, +a.m20*d.m02+a.m21*d.m12+a.m22*d.m22)},"JU.M3,JU.M3");e(b,"equals",function(a){return!C(a,"JU.M3")?!1:this.m00==a.m00&&this.m01==a.m01&&this.m02==a.m02&&this.m10==a.m10&&this.m11==a.m11&&this.m12==a.m12&&this.m20==a.m20&&this.m21==a.m21&&this.m22==a.m22},"~O");e(b,"hashCode",function(){return JU.T3.floatToIntBits(this.m00)^JU.T3.floatToIntBits(this.m01)^JU.T3.floatToIntBits(this.m02)^JU.T3.floatToIntBits(this.m10)^JU.T3.floatToIntBits(this.m11)^JU.T3.floatToIntBits(this.m12)^JU.T3.floatToIntBits(this.m20)^ +JU.T3.floatToIntBits(this.m21)^JU.T3.floatToIntBits(this.m22)});c(b,"setZero",function(){this.clear33()});c(b,"set9",function(a,d,b,c,g,h,e,k,l){this.m00=a;this.m01=d;this.m02=b;this.m10=c;this.m11=g;this.m12=h;this.m20=e;this.m21=k;this.m22=l},"~N,~N,~N,~N,~N,~N,~N,~N,~N");e(b,"toString",function(){return"[\n ["+this.m00+"\t"+this.m01+"\t"+this.m02+"]\n ["+this.m10+"\t"+this.m11+"\t"+this.m12+"]\n ["+this.m20+"\t"+this.m21+"\t"+this.m22+"] ]"});c(b,"setAA",function(a){this.setAA33(a);return this}, +"JU.A4");c(b,"setAsBallRotation",function(a,d,b){var c=Math.sqrt(d*d+b*b),g=c*a;if(0==g)return this.setScale(1),!1;a=Math.cos(g);g=Math.sin(g);b=-b/c;d/=c;c=a-1;this.m00=1+c*b*b;this.m01=this.m10=c*b*d;this.m20=-(this.m02=g*b);this.m11=1+c*d*d;this.m21=-(this.m12=g*d);this.m22=a;return!0},"~N,~N,~N");c(b,"isRotation",function(){return 0.001>Math.abs(this.determinant3()-1)})});r("JU");v(["JU.M34"],"JU.M4",["JU.T3"],function(){var b=j(function(){this.m33=this.m32=this.m31=this.m30=this.m23=this.m13= +this.m03=0;p(this,arguments)},JU,"M4",JU.M34);b.newA16=c(b,"newA16",function(a){var d=new JU.M4;d.m00=a[0];d.m01=a[1];d.m02=a[2];d.m03=a[3];d.m10=a[4];d.m11=a[5];d.m12=a[6];d.m13=a[7];d.m20=a[8];d.m21=a[9];d.m22=a[10];d.m23=a[11];d.m30=a[12];d.m31=a[13];d.m32=a[14];d.m33=a[15];return d},"~A");b.newM4=c(b,"newM4",function(a){var d=new JU.M4;if(null==a)return d.setIdentity(),d;d.setToM3(a);d.m03=a.m03;d.m13=a.m13;d.m23=a.m23;d.m30=a.m30;d.m31=a.m31;d.m32=a.m32;d.m33=a.m33;return d},"JU.M4");b.newMV= +c(b,"newMV",function(a,d){var b=new JU.M4;b.setMV(a,d);return b},"JU.M3,JU.T3");c(b,"setZero",function(){this.clear33();this.m03=this.m13=this.m23=this.m30=this.m31=this.m32=this.m33=0});c(b,"setIdentity",function(){this.setZero();this.m00=this.m11=this.m22=this.m33=1});c(b,"setM4",function(a){this.setM33(a);this.m03=a.m03;this.m13=a.m13;this.m23=a.m23;this.m30=a.m30;this.m31=a.m31;this.m32=a.m32;this.m33=a.m33;return this},"JU.M4");c(b,"setMV",function(a,d){this.setM33(a);this.setTranslation(d); +this.m33=1},"JU.M3,JU.T3");c(b,"setToM3",function(a){this.setM33(a);this.m03=this.m13=this.m23=this.m30=this.m31=this.m32=0;this.m33=1},"JU.M34");c(b,"setToAA",function(a){this.setIdentity();this.setAA33(a)},"JU.A4");c(b,"setA",function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m03=a[3];this.m10=a[4];this.m11=a[5];this.m12=a[6];this.m13=a[7];this.m20=a[8];this.m21=a[9];this.m22=a[10];this.m23=a[11];this.m30=a[12];this.m31=a[13];this.m32=a[14];this.m33=a[15]},"~A");c(b,"setTranslation",function(a){this.m03= +a.x;this.m13=a.y;this.m23=a.z},"JU.T3");c(b,"setElement",function(a,d,b){if(3>a&&3>d)this.set33(a,d,b);else{(3a&&3>d)return this.get33(a,d);if(3a&&this.setRow33(a,d);switch(a){case 0:this.m03=d[3];return;case 1:this.m13=d[3];return;case 2:this.m23=d[3];return;case 3:this.m30=d[0];this.m31=d[1];this.m32=d[2];this.m33=d[3];return}this.err()},"~N,~A");e(b,"getRow",function(a,d){3>a&&this.getRow33(a,d);switch(a){case 0:d[3]=this.m03;return;case 1:d[3]=this.m13;return;case 2:d[3]=this.m23;return;case 3:d[0]=this.m30;d[1]=this.m31;d[2]=this.m32;d[3]=this.m33; +return}this.err()},"~N,~A");c(b,"setColumn4",function(a,d,b,c,g){0==a?(this.m00=d,this.m10=b,this.m20=c,this.m30=g):1==a?(this.m01=d,this.m11=b,this.m21=c,this.m31=g):2==a?(this.m02=d,this.m12=b,this.m22=c,this.m32=g):3==a?(this.m03=d,this.m13=b,this.m23=c,this.m33=g):this.err()},"~N,~N,~N,~N,~N");c(b,"setColumnA",function(a,d){3>a&&this.setColumn33(a,d);switch(a){case 0:this.m30=d[3];break;case 1:this.m31=d[3];break;case 2:this.m32=d[3];break;case 3:this.m03=d[0];this.m13=d[1];this.m23=d[2];this.m33= +d[3];break;default:this.err()}},"~N,~A");c(b,"getColumn",function(a,d){3>a&&this.getColumn33(a,d);switch(a){case 0:d[3]=this.m30;break;case 1:d[3]=this.m31;break;case 2:d[3]=this.m32;break;case 3:d[0]=this.m03;d[1]=this.m13;d[2]=this.m23;d[3]=this.m33;break;default:this.err()}},"~N,~A");c(b,"sub",function(a){this.sub33(a);this.m03-=a.m03;this.m13-=a.m13;this.m23-=a.m23;this.m30-=a.m30;this.m31-=a.m31;this.m32-=a.m32;this.m33-=a.m33},"JU.M4");c(b,"add",function(a){this.m03+=a.x;this.m13+=a.y;this.m23+= +a.z},"JU.T3");c(b,"transpose",function(){this.transpose33();var a=this.m03;this.m03=this.m30;this.m30=a;a=this.m13;this.m13=this.m31;this.m31=a;a=this.m23;this.m23=this.m32;this.m32=a});c(b,"invert",function(){var a=this.determinant4();if(0==a)return this;a=1/a;this.set(this.m11*(this.m22*this.m33-this.m23*this.m32)+this.m12*(this.m23*this.m31-this.m21*this.m33)+this.m13*(this.m21*this.m32-this.m22*this.m31),this.m21*(this.m02*this.m33-this.m03*this.m32)+this.m22*(this.m03*this.m31-this.m01*this.m33)+ +this.m23*(this.m01*this.m32-this.m02*this.m31),this.m31*(this.m02*this.m13-this.m03*this.m12)+this.m32*(this.m03*this.m11-this.m01*this.m13)+this.m33*(this.m01*this.m12-this.m02*this.m11),this.m01*(this.m13*this.m22-this.m12*this.m23)+this.m02*(this.m11*this.m23-this.m13*this.m21)+this.m03*(this.m12*this.m21-this.m11*this.m22),this.m12*(this.m20*this.m33-this.m23*this.m30)+this.m13*(this.m22*this.m30-this.m20*this.m32)+this.m10*(this.m23*this.m32-this.m22*this.m33),this.m22*(this.m00*this.m33-this.m03* +this.m30)+this.m23*(this.m02*this.m30-this.m00*this.m32)+this.m20*(this.m03*this.m32-this.m02*this.m33),this.m32*(this.m00*this.m13-this.m03*this.m10)+this.m33*(this.m02*this.m10-this.m00*this.m12)+this.m30*(this.m03*this.m12-this.m02*this.m13),this.m02*(this.m13*this.m20-this.m10*this.m23)+this.m03*(this.m10*this.m22-this.m12*this.m20)+this.m00*(this.m12*this.m23-this.m13*this.m22),this.m13*(this.m20*this.m31-this.m21*this.m30)+this.m10*(this.m21*this.m33-this.m23*this.m31)+this.m11*(this.m23*this.m30- +this.m20*this.m33),this.m23*(this.m00*this.m31-this.m01*this.m30)+this.m20*(this.m01*this.m33-this.m03*this.m31)+this.m21*(this.m03*this.m30-this.m00*this.m33),this.m33*(this.m00*this.m11-this.m01*this.m10)+this.m30*(this.m01*this.m13-this.m03*this.m11)+this.m31*(this.m03*this.m10-this.m00*this.m13),this.m03*(this.m11*this.m20-this.m10*this.m21)+this.m00*(this.m13*this.m21-this.m11*this.m23)+this.m01*(this.m10*this.m23-this.m13*this.m20),this.m10*(this.m22*this.m31-this.m21*this.m32)+this.m11*(this.m20* +this.m32-this.m22*this.m30)+this.m12*(this.m21*this.m30-this.m20*this.m31),this.m20*(this.m02*this.m31-this.m01*this.m32)+this.m21*(this.m00*this.m32-this.m02*this.m30)+this.m22*(this.m01*this.m30-this.m00*this.m31),this.m30*(this.m02*this.m11-this.m01*this.m12)+this.m31*(this.m00*this.m12-this.m02*this.m10)+this.m32*(this.m01*this.m10-this.m00*this.m11),this.m00*(this.m11*this.m22-this.m12*this.m21)+this.m01*(this.m12*this.m20-this.m10*this.m22)+this.m02*(this.m10*this.m21-this.m11*this.m20));this.scale(a); +return this});c(b,"set",function(a,d,b,c,g,h,e,k,l,x,p,m,j,n,r,s){this.m00=a;this.m01=d;this.m02=b;this.m03=c;this.m10=g;this.m11=h;this.m12=e;this.m13=k;this.m20=l;this.m21=x;this.m22=p;this.m23=m;this.m30=j;this.m31=n;this.m32=r;this.m33=s},"~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");c(b,"determinant4",function(){return(this.m00*this.m11-this.m01*this.m10)*(this.m22*this.m33-this.m23*this.m32)-(this.m00*this.m12-this.m02*this.m10)*(this.m21*this.m33-this.m23*this.m31)+(this.m00*this.m13- +this.m03*this.m10)*(this.m21*this.m32-this.m22*this.m31)+(this.m01*this.m12-this.m02*this.m11)*(this.m20*this.m33-this.m23*this.m30)-(this.m01*this.m13-this.m03*this.m11)*(this.m20*this.m32-this.m22*this.m30)+(this.m02*this.m13-this.m03*this.m12)*(this.m20*this.m31-this.m21*this.m30)});c(b,"scale",function(a){this.mul33(a);this.m03*=a;this.m13*=a;this.m23*=a;this.m30*=a;this.m31*=a;this.m32*=a;this.m33*=a},"~N");c(b,"mul",function(a){this.mul2(this,a)},"JU.M4");c(b,"mul2",function(a,d){this.set(a.m00* +d.m00+a.m01*d.m10+a.m02*d.m20+a.m03*d.m30,a.m00*d.m01+a.m01*d.m11+a.m02*d.m21+a.m03*d.m31,a.m00*d.m02+a.m01*d.m12+a.m02*d.m22+a.m03*d.m32,a.m00*d.m03+a.m01*d.m13+a.m02*d.m23+a.m03*d.m33,a.m10*d.m00+a.m11*d.m10+a.m12*d.m20+a.m13*d.m30,a.m10*d.m01+a.m11*d.m11+a.m12*d.m21+a.m13*d.m31,a.m10*d.m02+a.m11*d.m12+a.m12*d.m22+a.m13*d.m32,a.m10*d.m03+a.m11*d.m13+a.m12*d.m23+a.m13*d.m33,a.m20*d.m00+a.m21*d.m10+a.m22*d.m20+a.m23*d.m30,a.m20*d.m01+a.m21*d.m11+a.m22*d.m21+a.m23*d.m31,a.m20*d.m02+a.m21*d.m12+a.m22* +d.m22+a.m23*d.m32,a.m20*d.m03+a.m21*d.m13+a.m22*d.m23+a.m23*d.m33,a.m30*d.m00+a.m31*d.m10+a.m32*d.m20+a.m33*d.m30,a.m30*d.m01+a.m31*d.m11+a.m32*d.m21+a.m33*d.m31,a.m30*d.m02+a.m31*d.m12+a.m32*d.m22+a.m33*d.m32,a.m30*d.m03+a.m31*d.m13+a.m32*d.m23+a.m33*d.m33)},"JU.M4,JU.M4");c(b,"transform",function(a){this.transform2(a,a)},"JU.T4");c(b,"transform2",function(a,d){d.set4(this.m00*a.x+this.m01*a.y+this.m02*a.z+this.m03*a.w,this.m10*a.x+this.m11*a.y+this.m12*a.z+this.m13*a.w,this.m20*a.x+this.m21*a.y+ +this.m22*a.z+this.m23*a.w,this.m30*a.x+this.m31*a.y+this.m32*a.z+this.m33*a.w)},"JU.T4,JU.T4");c(b,"rotTrans",function(a){this.rotTrans2(a,a)},"JU.T3");c(b,"rotTrans2",function(a,d){d.set(this.m00*a.x+this.m01*a.y+this.m02*a.z+this.m03,this.m10*a.x+this.m11*a.y+this.m12*a.z+this.m13,this.m20*a.x+this.m21*a.y+this.m22*a.z+this.m23);return d},"JU.T3,JU.T3");c(b,"setAsXYRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m22=d;this.m23=-a;this.m32=a;this.m33=d;return this}, +"~N");c(b,"setAsYZRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m00=d;this.m03=-a;this.m30=a;this.m33=d;return this},"~N");c(b,"setAsXZRotation",function(a){this.setIdentity();var d=Math.cos(a);a=Math.sin(a);this.m11=d;this.m13=-a;this.m31=a;this.m33=d;return this},"~N");e(b,"equals",function(a){return!C(a,"JU.M4")?!1:this.m00==a.m00&&this.m01==a.m01&&this.m02==a.m02&&this.m03==a.m03&&this.m10==a.m10&&this.m11==a.m11&&this.m12==a.m12&&this.m13==a.m13&&this.m20==a.m20&& +this.m21==a.m21&&this.m22==a.m22&&this.m23==a.m23&&this.m30==a.m30&&this.m31==a.m31&&this.m32==a.m32&&this.m33==a.m33},"~O");e(b,"hashCode",function(){return JU.T3.floatToIntBits(this.m00)^JU.T3.floatToIntBits(this.m01)^JU.T3.floatToIntBits(this.m02)^JU.T3.floatToIntBits(this.m03)^JU.T3.floatToIntBits(this.m10)^JU.T3.floatToIntBits(this.m11)^JU.T3.floatToIntBits(this.m12)^JU.T3.floatToIntBits(this.m13)^JU.T3.floatToIntBits(this.m20)^JU.T3.floatToIntBits(this.m21)^JU.T3.floatToIntBits(this.m22)^JU.T3.floatToIntBits(this.m23)^ +JU.T3.floatToIntBits(this.m30)^JU.T3.floatToIntBits(this.m31)^JU.T3.floatToIntBits(this.m32)^JU.T3.floatToIntBits(this.m33)});e(b,"toString",function(){return"[\n ["+this.m00+"\t"+this.m01+"\t"+this.m02+"\t"+this.m03+"]\n ["+this.m10+"\t"+this.m11+"\t"+this.m12+"\t"+this.m13+"]\n ["+this.m20+"\t"+this.m21+"\t"+this.m22+"\t"+this.m23+"]\n ["+this.m30+"\t"+this.m31+"\t"+this.m32+"\t"+this.m33+"] ]"});c(b,"round",function(a){this.m00=this.rnd(this.m00,a);this.m01=this.rnd(this.m01,a);this.m02=this.rnd(this.m02, +a);this.m03=this.rnd(this.m03,a);this.m10=this.rnd(this.m10,a);this.m11=this.rnd(this.m11,a);this.m12=this.rnd(this.m12,a);this.m13=this.rnd(this.m13,a);this.m20=this.rnd(this.m20,a);this.m21=this.rnd(this.m21,a);this.m22=this.rnd(this.m22,a);this.m23=this.rnd(this.m23,a);this.m30=this.rnd(this.m30,a);this.m31=this.rnd(this.m31,a);this.m32=this.rnd(this.m32,a);this.m33=this.rnd(this.m33,a);return this},"~N");c(b,"rnd",function(a,d){return Math.abs(a)b&&(b=a.length-d);try{this.os.write(a,d,b)}catch(c){if(!z(c,"java.io.IOException"))throw c;}this.byteCount+=b},"~A,~N,~N");e(b,"writeShort",function(a){this.isBigEndian()?(this.writeByteAsInt(a>>8),this.writeByteAsInt(a)):(this.writeByteAsInt(a),this.writeByteAsInt(a>> +8))},"~N");e(b,"writeLong",function(a){this.isBigEndian()?(this.writeInt(a>>32&4294967295),this.writeInt(a&4294967295)):(this.writeByteAsInt(a>>56),this.writeByteAsInt(a>>48),this.writeByteAsInt(a>>40),this.writeByteAsInt(a>>32),this.writeByteAsInt(a>>24),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>8),this.writeByteAsInt(a))},"~N");c(b,"cancel",function(){this.isCanceled=!0;this.closeChannel()});e(b,"closeChannel",function(){if(this.closed)return null;try{null!=this.bw?(this.bw.flush(),this.bw.close()): +null!=this.os&&(this.os.flush(),this.os.close()),null!=this.os0&&this.isCanceled&&(this.os0.flush(),this.os0.close())}catch(a){if(!z(a,Exception))throw a;}if(this.isCanceled)return this.closed=!0,null;if(null==this.fileName){if(this.$isBase64){var d=this.getBase64();null!=this.os0&&(this.os=this.os0,this.append(d));this.sb=new JU.SB;this.sb.append(d);this.$isBase64=!1;return this.closeChannel()}return null==this.sb?null:this.sb.toString()}this.closed=!0;if(!this.isLocalFile){d=this.postByteArray(); +if(null==d||d.startsWith("java.net"))this.byteCount=-1;return d}var b=d=null,d=self.J2S||Jmol,b="function"==typeof this.fileName?this.fileName:null;if(null!=d){var c=null==this.sb?this.toByteArray():this.sb.toString();null==b?d.doAjax(this.fileName,null,c,null==this.sb):d.applyFunc(this.fileName,c)}return null});c(b,"isBase64",function(){return this.$isBase64});c(b,"getBase64",function(){return JU.Base64.getBase64(this.toByteArray()).toString()});c(b,"toByteArray",function(){return null!=this.bytes? +this.bytes:C(this.os,"java.io.ByteArrayOutputStream")?this.os.toByteArray():null});c(b,"close",function(){this.closeChannel()});e(b,"toString",function(){if(null!=this.bw)try{this.bw.flush()}catch(a){if(!z(a,"java.io.IOException"))throw a;}return null!=this.sb?this.closeChannel():this.byteCount+" bytes"});c(b,"postByteArray",function(){var a=null==this.sb?this.toByteArray():this.sb.toString().getBytes();return this.bytePoster.postByteArray(this.fileName,a)});b.isRemote=c(b,"isRemote",function(a){if(null== +a)return!1;a=JU.OC.urlTypeIndex(a);return 0<=a&&4>a},"~S");b.isLocal=c(b,"isLocal",function(a){return null!=a&&!JU.OC.isRemote(a)},"~S");b.urlTypeIndex=c(b,"urlTypeIndex",function(a){if(null==a)return-2;for(var d=0;d>24),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>8),this.writeByteAsInt(a)):(this.writeByteAsInt(a),this.writeByteAsInt(a>> +8),this.writeByteAsInt(a>>16),this.writeByteAsInt(a>>24))},"~N");c(b,"writeFloat",function(a){this.writeInt(0==a?0:Float.floatToIntBits(a))},"~N");b.urlPrefixes=A(-1,"http: https: sftp: ftp: file: cache:".split(" "))});r("JU");v(["JU.T3"],"JU.P3",null,function(){var b=u(JU,"P3",JU.T3);b.newP=c(b,"newP",function(a){var d=new JU.P3;d.x=a.x;d.y=a.y;d.z=a.z;return d},"JU.T3");b.getUnlikely=c(b,"getUnlikely",function(){return null==JU.P3.unlikely?JU.P3.unlikely=JU.P3.new3(3.141592653589793,2.718281828459045, +8.539734222673566):JU.P3.unlikely});b.new3=c(b,"new3",function(a,d,b){var c=new JU.P3;c.x=a;c.y=d;c.z=b;return c},"~N,~N,~N");b.newA=c(b,"newA",function(a){return JU.P3.new3(a[0],a[1],a[2])},"~A");b.unlikely=null});r("JU");v(["JU.T3i"],"JU.P3i",null,function(){var b=u(JU,"P3i",JU.T3i);b.new3=c(b,"new3",function(a,d,b){var c=new JU.P3i;c.x=a;c.y=d;c.z=b;return c},"~N,~N,~N")});r("JU");v(["JU.T4"],"JU.P4",null,function(){var b=u(JU,"P4",JU.T4);b.new4=c(b,"new4",function(a,d,b,c){var g=new JU.P4;g.set4(a, +d,b,c);return g},"~N,~N,~N,~N");b.newPt=c(b,"newPt",function(a){var d=new JU.P4;d.set4(a.x,a.y,a.z,a.w);return d},"JU.P4");c(b,"distance4",function(a){var d=this.x-a.x,b=this.y-a.y,c=this.z-a.z;a=this.w-a.w;return Math.sqrt(d*d+b*b+c*c+a*a)},"JU.P4")});r("JU");v(null,"JU.PT",["java.util.Arrays","JU.AU","$.DF","$.SB"],function(){var b=u(JU,"PT",null);b.parseInt=c(b,"parseInt",function(a){return JU.PT.parseIntNext(a,E(-1,[0]))},"~S");b.parseIntNext=c(b,"parseIntNext",function(a,d){var b=a.length;return 0> +d[0]||d[0]>=b?-2147483648:JU.PT.parseIntChecked(a,b,d)},"~S,~A");b.parseIntChecked=c(b,"parseIntChecked",function(a,d,b){var c=!1,g=0,h=b[0];if(0>h)return-2147483648;for(var e;h=e;)g=10*g+(e-48),c=!0,++h;c?k&&(g=-g):g=-2147483648;b[0]=h;return g},"~S,~N,~A");b.isWhiteSpace=c(b,"isWhiteSpace",function(a,d){var b;return 0<=d&&(" "==(b=a.charAt(d))||"\t"==b||"\n"== +b)},"~S,~N");b.parseFloatChecked=c(b,"parseFloatChecked",function(a,d,b,c){var g=!1,h=b[0];if(c&&a.indexOf("\n")!=a.lastIndexOf("\n"))return NaN;for(;h=k;)l=10*l+1*(k-48),++h,g=!0;var p=!1,m=0,j=0==l?-1:0;if(46==k)for(p=!0;++h=k;){g=!0;if(0>j){if(48==k){j--;continue}j=-j}m=d)return NaN;k=a.charAt(h).charCodeAt(0);if(43==k&&++h>=d)return NaN;b[0]=h;h=JU.PT.parseIntChecked(a,d,b);if(-2147483648==h)return NaN;0h&&-h<=JU.PT.decimalScale.length?g*=JU.PT.decimalScale[-h-1]:0!=h&&(g*=Math.pow(10,h))}else b[0]=h;e&&(g=-g);Infinity==g&&(g=3.4028235E38); +return!c||(!l||p)&&JU.PT.checkTrailingText(a,b[0],d)?g:NaN},"~S,~N,~A,~B");b.checkTrailingText=c(b,"checkTrailingText",function(a,d,b){for(var c;de?e=a.length:a=a.substring(0,e),d[0]+=e+1,a=JU.PT.getTokens(a),null==b&&(b=S(a.length,0)),h=JU.PT.parseFloatArrayInfested(a,b));if(null==b)return S(0,0);for(a=h;ac&&(d=c);return 0>b[0]||b[0]>=d?NaN:JU.PT.parseFloatChecked(a,d,b,!1)},"~S,~N,~A");b.parseFloatNext=c(b,"parseFloatNext",function(a,d){var b=null==a?-1:a.length;return 0>d[0]||d[0]>=b?NaN:JU.PT.parseFloatChecked(a,b,d,!1)},"~S,~A");b.parseFloatStrict=c(b,"parseFloatStrict",function(a){var d=a.length;return 0==d?NaN:JU.PT.parseFloatChecked(a,d,E(-1,[0]),!0)},"~S");b.parseFloat=c(b,"parseFloat",function(a){return JU.PT.parseFloatNext(a,E(-1,[0]))},"~S");b.parseIntRadix= +c(b,"parseIntRadix",function(a,d){return Integer.parseIntRadix(a,d)},"~S,~N");b.getTokens=c(b,"getTokens",function(a){return JU.PT.getTokensAt(a,0)},"~S");b.parseToken=c(b,"parseToken",function(a){return JU.PT.parseTokenNext(a,E(-1,[0]))},"~S");b.parseTrimmed=c(b,"parseTrimmed",function(a){return JU.PT.parseTrimmedRange(a,0,a.length)},"~S");b.parseTrimmedAt=c(b,"parseTrimmedAt",function(a,d){return JU.PT.parseTrimmedRange(a,d,a.length)},"~S,~N");b.parseTrimmedRange=c(b,"parseTrimmedRange",function(a, +d,b){var c=a.length;bd||d>b)return null;var c=JU.PT.countTokens(a,d),g=Array(c),h=E(1,0);h[0]=d;for(var e=0;ed[0]||d[0]>=b?null:JU.PT.parseTokenChecked(a,b,d)},"~S,~A");b.parseTokenRange=c(b,"parseTokenRange",function(a,d,b){var c=a.length;d>c&&(d=c);return 0>b[0]||b[0]>=d?null:JU.PT.parseTokenChecked(a,d,b)},"~S,~N,~A");b.parseTokenChecked=c(b,"parseTokenChecked",function(a,d, +b){for(var c=b[0];c=d&&JU.PT.isWhiteSpace(a,b);)--b;return bc&&(d=c);return 0>b[0]||b[0]>=d?-2147483648:JU.PT.parseIntChecked(a,d,b)},"~S,~N,~A");b.parseFloatArrayData=c(b,"parseFloatArrayData",function(a,d){JU.PT.parseFloatArrayDataN(a,d,d.length)},"~A,~A");b.parseFloatArrayDataN=c(b,"parseFloatArrayDataN",function(a,d,b){for(;0<=--b;)d[b]=b>=a.length?NaN:JU.PT.parseFloat(a[b])},"~A,~A,~N");b.split=c(b,"split",function(a, +d){if(0==a.length)return[];var b=1,c=a.indexOf(d),g,h=d.length;if(0>c||0==h)return g=Array(1),g[0]=a,g;for(var e=a.length-h;0<=c&&cb||0>(b=a.indexOf('"',b)))return"";for(var c=b+1,g=a.length;++bb||(b=b+d.length+1)>=a.length)return"";var c=a.charAt(b);switch(c.charCodeAt(0)){case 39:case 34:b++;break;default:c=" ",a+=" "}c=a.indexOf(c,b);return 0>c?null:a.substring(b, +c)},"~S,~S");b.getCSVString=c(b,"getCSVString",function(a,d){var b=d[1];if(0>b||0>(b=a.indexOf('"',b)))return null;for(var c=d[0]=b,g=a.length,h=!1,e=!1;++b=g)return d[1]=-1,null;d[1]=b+1;b=a.substring(c+1,b);return e?JU.PT.rep(JU.PT.rep(b,'""',"\x00"),"\x00",'"'):b},"~S,~A");b.isOneOf=c(b,"isOneOf",function(a,d){if(0==d.length)return!1;";"!=d.charAt(0)&&(d=";"+d+";");return 0>a.indexOf(";")&&0<=d.indexOf(";"+a+";")},"~S,~S"); +b.getQuotedAttribute=c(b,"getQuotedAttribute",function(a,d){var b=a.indexOf(d+"=");return 0>b?null:JU.PT.getQuotedStringAt(a,b)},"~S,~S");b.approx=c(b,"approx",function(a,d){return Math.round(a*d)/d},"~N,~N");b.rep=c(b,"rep",function(a,d,b){if(null==a||0==d.length||0>a.indexOf(d))return a;var c=0<=b.indexOf(d);do a=a.$replace(d,b);while(!c&&0<=a.indexOf(d));return a},"~S,~S,~S");b.formatF=c(b,"formatF",function(a,d,b,c,g){return JU.PT.formatS(JU.DF.formatDecimal(a,b),d,0,c,g)},"~N,~N,~N,~B,~B");b.formatD= +c(b,"formatD",function(a,d,b,c,g){return JU.PT.formatS(JU.DF.formatDecimal(a,-1-b),d,0,c,g)},"~N,~N,~N,~B,~B");b.formatS=c(b,"formatS",function(a,d,b,c,g){if(null==a)return"";var h=a.length;2147483647!=b&&0b&&0<=h+b&&(a=a.substring(h+b+1));b=d-a.length;if(0>=b)return a;d=g&&!c&&"-"==a.charAt(0);g=g?"0":" ";var e=d?"-":g,h=new JU.SB;c&&h.append(a);for(h.appendC(e);0<--b;)h.appendC(g);c||h.append(d?g+a.substring(1):a);return h.toString()},"~S,~N,~N,~B,~B");b.replaceWithCharacter= +c(b,"replaceWithCharacter",function(a,d,b){if(null==a)return null;for(var c=d.length;0<=--c;)a=a.$replace(d.charAt(c),b);return a},"~S,~S,~S");b.replaceAllCharacters=c(b,"replaceAllCharacters",function(a,d,b){for(var c=d.length;0<=--c;){var g=d.substring(c,c+1);a=JU.PT.rep(a,g,b)}return a},"~S,~S,~S");b.trim=c(b,"trim",function(a,d){if(null==a||0==a.length)return a;if(0==d.length)return a.trim();for(var b=a.length,c=0;cc&&0<=d.indexOf(a.charAt(b));)b--; +return a.substring(c,b+1)},"~S,~S");b.trimQuotes=c(b,"trimQuotes",function(a){return null!=a&&1b;b+=2)if(0<=a.indexOf('\\\\\tt\rr\nn""'.charAt(b))){d=!0;break}if(d)for(;10>b;){for(var d=-1,c='\\\\\tt\rr\nn""'.charAt(b++),g='\\\\\tt\rr\nn""'.charAt(b++),h=new JU.SB, +e=0;0<=(d=a.indexOf(c,d+1));)h.append(a.substring(e,d)).appendC("\\").appendC(g),e=d+1;h.append(a.substring(e,a.length));a=h.toString()}return'"'+JU.PT.escUnicode(a)+'"'},"~S");b.escUnicode=c(b,"escUnicode",function(a){for(var d=a.length;0<=--d;)if(127a.indexOf(".")&&(0>a.indexOf("e")&&0>a.indexOf("N")&& +0>a.indexOf("n"))&&(a+=".0");return a},"~N");b.join=c(b,"join",function(a,d,b){if(a.lengtha.indexOf("%")||0==e||0>a.indexOf(d))return a;var k="",l,x,p;for(l=0;0<=(x=a.indexOf("%",l))&&0<=(p=a.indexOf(d,x+1));)if(l!=x&&(k+=a.substring(l,x)),l=x+1,p>x+6)k+="%";else try{var m=!1;"-"==a.charAt(l)&& +(m=!0,++l);var j=!1;"0"==a.charAt(l)&&(j=!0,++l);for(var n,r=0;"0"<=(n=a.charAt(l))&&"9">=n;)r=10*r+(n.charCodeAt(0)-48),++l;var s=2147483647,u=!1;if("."==a.charAt(l)){++l;if("-"==(n=a.charAt(l)))u=!0,++l;if("0"<=(n=a.charAt(l))&&"9">=n)if(s=n.charCodeAt(0)-48,++l,"0"<=(n=a.charAt(l))&&"9">=n)s=10*s+(n.charCodeAt(0)-48),++l;u&&(s=-s)}if(a.substring(l,l+e).equals(d)){if(l+=e,Float.isNaN(c)?null!=b?k+=JU.PT.formatS(b,r,0>s?s-1:s,m,j):Double.isNaN(g)||(k+=JU.PT.formatD(g,r,s-1,m,j)):k+=JU.PT.formatF(c, +r,s,m,j),h)break}else l=x+1,k+="%"}catch(v){if(z(v,"IndexOutOfBoundsException")){l=x;break}else throw v;}return k+=a.substring(l)},"~S,~S,~S,~N,~N,~B");b.formatStringS=c(b,"formatStringS",function(a,d,b){return JU.PT.formatString(a,d,b,NaN,NaN,!1)},"~S,~S,~S");b.formatStringF=c(b,"formatStringF",function(a,d,b){return JU.PT.formatString(a,d,null,b,NaN,!1)},"~S,~S,~N");b.formatStringI=c(b,"formatStringI",function(a,d,b){return JU.PT.formatString(a,d,""+b,NaN,NaN,!1)},"~S,~S,~N");b.sprintf=c(b,"sprintf", +function(a,d,b){if(null==b)return a;var c=d.length;if(c==b.length)try{for(var g=0;ga.indexOf("p")&&0>a.indexOf("q"))return a;a=JU.PT.rep(a, +"%%","\u0001");a=JU.PT.rep(a,"%p","%6.2p");a=JU.PT.rep(a,"%q","%6.2q");a=JU.PT.split(a,"%");var d=new JU.SB;d.append(a[0]);for(var b=1;ba&&(a=0);return(a+" ").substring(0,d)},"~N,~N");b.isWild=c(b,"isWild",function(a){return null!=a&&(0<=a.indexOf("*")||0<=a.indexOf("?"))},"~S");b.isMatch=c(b,"isMatch",function(a,d,b,c){if(a.equals(d))return!0;var g=d.length;if(0==g)return!1;var h=b&&c?"*"==d.charAt(0):!1;if(1==g&&h)return!0;var e=b&&d.endsWith("*");if(!(0<=d.indexOf("?"))){if(h)return e? +3>g||0<=a.indexOf(d.substring(1,g-1)):a.endsWith(d.substring(1));if(e)return a.startsWith(d.substring(0,g-1))}for(var k=a.length,l="????",x=4;xk;){if(c&&"?"==d.charAt(b))++b;else if("?"!=d.charAt(b+g-1))return!1;--g}for(c=k;0<=--c;)if(g=d.charAt(b+c),"?"!=g&&(k=a.charAt(c),g!=k&&("\u0001"!=g||"?"!=k)))return!1;return!0},"~S,~S,~B,~B");b.replaceQuotedStrings=c(b,"replaceQuotedStrings",function(a, +d,b){for(var c=d.size(),g=0;g=a},"~S");b.isUpperCase=c(b,"isUpperCase",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a},"~S");b.isLowerCase= +c(b,"isLowerCase",function(a){a=a.charCodeAt(0);return 97<=a&&122>=a},"~S");b.isLetter=c(b,"isLetter",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a},"~S");b.isLetterOrDigit=c(b,"isLetterOrDigit",function(a){a=a.charCodeAt(0);return 65<=a&&90>=a||97<=a&&122>=a||48<=a&&57>=a},"~S");b.isWhitespace=c(b,"isWhitespace",function(a){a=a.charCodeAt(0);return 28<=a&&32>=a||9<=a&&13>=a},"~S");b.fixPtFloats=c(b,"fixPtFloats",function(a,d){a.x=Math.round(a.x*d)/d;a.y=Math.round(a.y*d)/d;a.z= +Math.round(a.z*d)/d},"JU.T3,~N");b.fixFloat=c(b,"fixFloat",function(a,d){return Math.round(a*d)/d},"~N,~N");b.fixDouble=c(b,"fixDouble",function(a,d){return Math.round(a*d)/d},"~N,~N");b.parseFloatFraction=c(b,"parseFloatFraction",function(a){var d=a.indexOf("/");return 0>d?JU.PT.parseFloat(a):JU.PT.parseFloat(a.substring(0,d))/JU.PT.parseFloat(a.substring(d+1))},"~S");b.tensScale=S(-1,[10,100,1E3,1E4,1E5,1E6]);b.decimalScale=S(-1,[0.1,0.01,0.001,1E-4,1E-5,1E-6,1E-7,1E-8,1E-9,1E-10,1E-11,1E-12,1E-13, +1E-14,1E-15])});r("JU");s=j(function(){this.s=this.sb=null;p(this,arguments)},JU,"SB",null);m(s,function(){this.s=""});s.newN=c(s,"newN",function(){return new JU.SB},"~N");s.newS=c(s,"newS",function(b){var a=new JU.SB;a.s=b;return a},"~S");c(s,"append",function(b){this.s+=b;return this},"~S");c(s,"appendC",function(b){this.s+=b;return this},"~S");c(s,"appendI",function(b){this.s+=b;return this},"~N");c(s,"appendB",function(b){this.s+=b;return this},"~B");c(s,"appendF",function(b){b=""+b;0>b.indexOf(".")&& +0>b.indexOf("e")&&(b+=".0");this.s+=b;return this},"~N");c(s,"appendD",function(b){b=""+b;0>b.indexOf(".")&&0>b.indexOf("e")&&(b+=".0");this.s+=b;return this},"~N");c(s,"appendSB",function(b){this.s+=b.s;return this},"JU.SB");c(s,"appendO",function(b){null!=b&&(this.s+=b.toString());return this},"~O");c(s,"appendCB",function(b,a,d){this.s+=b.slice(a,a+d).join("")},"~A,~N,~N");e(s,"toString",function(){return this.s});c(s,"length",function(){return this.s.length});c(s,"indexOf",function(b){return this.s.indexOf(b)}, +"~S");c(s,"charAt",function(b){return this.s.charAt(b)},"~N");c(s,"charCodeAt",function(b){return this.s.charCodeAt(b)},"~N");c(s,"setLength",function(b){this.s=this.s.substring(0,b)},"~N");c(s,"lastIndexOf",function(b){return this.s.lastIndexOf(b)},"~S");c(s,"indexOf2",function(b,a){return this.s.indexOf(b,a)},"~S,~N");c(s,"substring",function(b){return this.s.substring(b)},"~N");c(s,"substring2",function(b,a){return this.s.substring(b,a)},"~N,~N");c(s,"toBytes",function(b,a){return 0==a?I(0,0): +(0>32});b.floatToIntBits=c(b,"floatToIntBits",function(a){return 0==a?0:Float.floatToIntBits(a)},"~N");e(b,"equals",function(a){return!C(a,"JU.T3")?!1:this.x==a.x&&this.y==a.y&&this.z==a.z},"~O");e(b,"toString",function(){return"{"+this.x+", "+this.y+", "+this.z+"}"});e(b,"toJSON",function(){return"["+this.x+","+this.y+","+this.z+"]"});c(b,"setP",function(a){this.set(a.x,a.y,a.z);return this},"JU.T3");c(b,"putP",function(a){a.set(this.x,this.y,this.z); +return a},"JU.T3")});r("JU");s=j(function(){this.z=this.y=this.x=0;p(this,arguments)},JU,"T3i",null,java.io.Serializable);c(s,"set",function(b,a,d){this.x=b;this.y=a;this.z=d},"~N,~N,~N");c(s,"setT",function(b){this.x=b.x;this.y=b.y;this.z=b.z},"JU.T3i");c(s,"add",function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z},"JU.T3i");c(s,"scaleAdd",function(b,a,d){this.x=b*a.x+d.x;this.y=b*a.y+d.y;this.z=b*a.z+d.z},"~N,JU.T3i,JU.T3i");e(s,"hashCode",function(){return this.x^this.y^this.z});e(s,"equals",function(b){return!C(b, +"JU.T3i")?!1:this.x==b.x&&this.y==b.y&&this.z==b.z},"~O");c(s,"asString",function(){return"("+this.x+", "+this.y+", "+this.z+")"});e(s,"toString",function(){return this.asString()});r("JU");v(["JU.T3"],"JU.T4",null,function(){var b=j(function(){this.w=0;p(this,arguments)},JU,"T4",JU.T3);c(b,"set4",function(a,d,b,c){this.x=a;this.y=d;this.z=b;this.w=c},"~N,~N,~N,~N");c(b,"scale4",function(a){this.scale(a);this.w*=a},"~N");e(b,"hashCode",function(){return JU.T3.floatToIntBits(this.x)^JU.T3.floatToIntBits(this.y)^ +JU.T3.floatToIntBits(this.z)^JU.T3.floatToIntBits(this.w)});e(b,"equals",function(a){return!C(a,"JU.T4")?!1:this.x==a.x&&this.y==a.y&&this.z==a.z&&this.w==a.w},"~O");e(b,"toString",function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"});e(b,"toJSON",function(){return"["+this.x+", "+this.y+", "+this.z+", "+this.w+"]"})});r("JU");v(["JU.T3"],"JU.V3",null,function(){var b=u(JU,"V3",JU.T3);b.newV=c(b,"newV",function(a){return JU.V3.new3(a.x,a.y,a.z)},"JU.T3");b.newVsub=c(b,"newVsub",function(a, +d){return JU.V3.new3(a.x-d.x,a.y-d.y,a.z-d.z)},"JU.T3,JU.T3");b.new3=c(b,"new3",function(a,d,b){var c=new JU.V3;c.x=a;c.y=d;c.z=b;return c},"~N,~N,~N");c(b,"angle",function(a){var d=this.y*a.z-this.z*a.y,b=this.z*a.x-this.x*a.z,c=this.x*a.y-this.y*a.x,d=Math.sqrt(d*d+b*b+c*c);return Math.abs(Math.atan2(d,this.dot(a)))},"JU.V3")});r("JU");v(["JU.LoggerInterface"],"JU.DefaultLogger",["JU.Logger"],function(){var b=u(JU,"DefaultLogger",null,JU.LoggerInterface);c(b,"log",function(a,d,b,c){a===System.err&& +System.out.flush();if(null!=a&&(null!=b||null!=c))if(b=(JU.Logger.logLevel()?"["+JU.Logger.getLevel(d)+"] ":"")+(null!=b?b:"")+(null!=c?": "+c.toString():""),a.println(b),null!=c&&(d=c.getStackTrace(),null!=d))for(c=0;ca&&JU.Logger._activeLevels[a]},"~N");b.setActiveLevel=c(b,"setActiveLevel",function(a,d){0>a&&(a=0);7<=a&&(a=6);JU.Logger._activeLevels[a]=d;JU.Logger.debugging=JU.Logger.isActiveLevel(5)||JU.Logger.isActiveLevel(6);JU.Logger.debuggingHigh=JU.Logger.debugging&&JU.Logger._activeLevels[6]},"~N,~B");b.setLogLevel=c(b,"setLogLevel",function(a){for(var d=7;0<=--d;)JU.Logger.setActiveLevel(d,d<=a)},"~N");b.getLevel=c(b,"getLevel",function(a){switch(a){case 6:return"DEBUGHIGH"; +case 5:return"DEBUG";case 4:return"INFO";case 3:return"WARN";case 2:return"ERROR";case 1:return"FATAL"}return"????"},"~N");b.logLevel=c(b,"logLevel",function(){return JU.Logger._logLevel});b.doLogLevel=c(b,"doLogLevel",function(a){JU.Logger._logLevel=a},"~B");b.debug=c(b,"debug",function(a){if(JU.Logger.debugging)try{JU.Logger._logger.debug(a)}catch(d){}},"~S");b.info=c(b,"info",function(a){try{JU.Logger.isActiveLevel(4)&&JU.Logger._logger.info(a)}catch(d){}},"~S");b.warn=c(b,"warn",function(a){try{JU.Logger.isActiveLevel(3)&& +JU.Logger._logger.warn(a)}catch(d){}},"~S");b.warnEx=c(b,"warnEx",function(a,d){try{JU.Logger.isActiveLevel(3)&&JU.Logger._logger.warnEx(a,d)}catch(b){}},"~S,Throwable");b.error=c(b,"error",function(a){try{JU.Logger.isActiveLevel(2)&&JU.Logger._logger.error(a)}catch(d){}},"~S");b.errorEx=c(b,"errorEx",function(a,d){try{JU.Logger.isActiveLevel(2)&&JU.Logger._logger.errorEx(a,d)}catch(b){}},"~S,Throwable");b.getLogLevel=c(b,"getLogLevel",function(){for(var a=7;0<=--a;)if(JU.Logger.isActiveLevel(a))return a; +return 0});b.fatal=c(b,"fatal",function(a){try{JU.Logger.isActiveLevel(1)&&JU.Logger._logger.fatal(a)}catch(d){}},"~S");b.fatalEx=c(b,"fatalEx",function(a,d){try{JU.Logger.isActiveLevel(1)&&JU.Logger._logger.fatalEx(a,d)}catch(b){}},"~S,Throwable");b.startTimer=c(b,"startTimer",function(a){null!=a&&JU.Logger.htTiming.put(a,Long.$valueOf(System.currentTimeMillis()))},"~S");b.getTimerMsg=c(b,"getTimerMsg",function(a,d){0==d&&(d=JU.Logger.getTimeFrom(a));return"Time for "+a+": "+d+" ms"},"~S,~N");b.getTimeFrom= +c(b,"getTimeFrom",function(a){var d;return null==a||null==(d=JU.Logger.htTiming.get(a))?-1:System.currentTimeMillis()-d.longValue()},"~S");b.checkTimer=c(b,"checkTimer",function(a,d){var b=JU.Logger.getTimeFrom(a);0<=b&&!a.startsWith("(")&&JU.Logger.info(JU.Logger.getTimerMsg(a,b));d&&JU.Logger.startTimer(a);return b},"~S,~B");b.checkMemory=c(b,"checkMemory",function(){JU.Logger.info("Memory: Total-Free=0; Total=0; Free=0; Max=0")});b._logger=new JU.DefaultLogger;b._activeLevels=fa(7,!1);b._logLevel= +!1;b.debugging=!1;b.debuggingHigh=!1;JU.Logger._activeLevels[6]=JU.Logger.getProperty("debugHigh",!1);JU.Logger._activeLevels[5]=JU.Logger.getProperty("debug",!1);JU.Logger._activeLevels[4]=JU.Logger.getProperty("info",!0);JU.Logger._activeLevels[3]=JU.Logger.getProperty("warn",!0);JU.Logger._activeLevels[2]=JU.Logger.getProperty("error",!0);JU.Logger._activeLevels[1]=JU.Logger.getProperty("fatal",!0);JU.Logger._logLevel=JU.Logger.getProperty("logLevel",!1);JU.Logger.debugging=null!=JU.Logger._logger&& +(JU.Logger._activeLevels[5]||JU.Logger._activeLevels[6]);JU.Logger.debuggingHigh=JU.Logger.debugging&&JU.Logger._activeLevels[6];b.htTiming=new java.util.Hashtable});r("JU");D(JU,"LoggerInterface");r("J.api");D(J.api,"JmolJDXMOLParser");r("J.api");D(J.api,"JmolJDXMOLReader");r("J.jsv");v(["J.api.JmolJDXMOLParser"],"J.jsv.JDXMOLParser","java.util.Hashtable JU.BS $.Lst $.PT $.SB JU.Logger".split(" "),function(){var b=j(function(){this.line=null;this.lastModel="";this.baseModel=this.thisModelID=null; +this.vibScale=0;this.loader=this.piUnitsY=this.piUnitsX=null;this.modelIdList="";this.peakFilePath=this.peakIndex=null;p(this,arguments)},J.jsv,"JDXMOLParser",null,J.api.JmolJDXMOLParser);e(b,"set",function(a,d,b){this.loader=a;this.peakFilePath=d;this.peakIndex=E(1,0);null!=b&&(b.remove("modelNumber"),b.containsKey("zipSet")&&(this.peakIndex=b.get("peakIndex"),null==this.peakIndex&&(this.peakIndex=E(1,0),b.put("peakIndex",this.peakIndex)),b.containsKey("subFileName")||(this.peakFilePath=JU.PT.split(d, +"|")[0])));return this},"J.api.JmolJDXMOLReader,~S,java.util.Map");e(b,"getAttribute",function(a,d){var b=JU.PT.getQuotedAttribute(a,d);return null==b?"":b},"~S,~S");e(b,"getRecord",function(a){if(null==this.line||0>this.line.indexOf(a))return null;for(a=this.line;0>a.indexOf(">");)a+=" "+this.readLine();return this.line=a},"~S");e(b,"readModels",function(){if(!this.findRecord("Models"))return!1;this.thisModelID=this.line="";for(var a=!0;;){this.line=this.loader.discardLinesUntilNonBlank();if(null== +this.getRecord("a&&(a=2147483647);for(var c=0;cg.indexOf(">");)g+=" "+this.readLine();g=g.trim()}g=JU.PT.replaceAllCharacters(g,"()<>"," ").trim();if(0==g.length)break;var h=g.indexOf("'");if(0<=h)var e=g.indexOf("'",h+1),g=g.substring(0,h)+JU.PT.rep(g.substring(h+1,e),",",";")+g.substring(e+1);JU.Logger.info("Peak Assignment: "+g);var k=JU.PT.split(g,",");b.addLast(k)}}catch(l){if(z(l,Exception))JU.Logger.error("Error reading peak assignments at "+this.line+": "+l);else throw l;}return b},"~N,~B");e(b,"setACDAssignments",function(a, +d,b,c,g){try{0<=b&&(this.peakIndex=E(-1,[b]));var h=0==d.indexOf("MASS"),e=" file="+JU.PT.esc(this.peakFilePath.$replace("\\","/"));a=" model="+JU.PT.esc(a+" (assigned)");this.piUnitsY=this.piUnitsX="";var k=this.getACDPeakWidth(d)/2,l=new java.util.Hashtable,x=new JU.Lst;b=null;var p,m,j=0;if(h){b=new java.util.Hashtable;for(var n=JU.PT.split(g,"M ZZC"),r=n.length;1<=--r;){var s=JU.PT.getTokens(n[r]),j=Math.max(j,JU.PT.parseInt(s[0]));b.put(s[1],s[0])}p=4;m=0}else 0<=d.indexOf("NMR")?(p=0,m=3): +(p=0,m=2);for(var u=c.size(),r=0;r')}return this.setPeakData(x,0)}catch(C){if(z(C,Exception))return 0; +throw C;}},"~S,~S,~N,JU.Lst,~S");c(b,"fixACDAtomList",function(a,d,b){a=a.trim();a=JU.PT.getTokens(a.$replace(";"," "));for(var c=new JU.BS,g=!1,h=0;h"); +else{this.modelIdList+=d;for(this.baseModel=this.getAttribute(this.line,"baseModel");0>this.line.indexOf(">")&&0>this.line.indexOf("type");)this.readLine();d=this.getAttribute(this.line,"type").toLowerCase();this.vibScale=JU.PT.parseFloat(this.getAttribute(this.line,"vibrationScale"));d.equals("xyzvib")?d="xyz":0==d.length&&(d=null);for(var b=new JU.SB;null!=this.readLine()&&!this.line.contains("");)b.append(this.line).appendC("\n");this.loader.processModelData(b.toString(),this.thisModelID, +d,this.baseModel,this.lastModel,NaN,this.vibScale,a)}},"~B");c(b,"findRecord",function(a){null==this.line&&this.readLine();null!=this.line&&0>this.line.indexOf("<"+a)&&(this.line=this.loader.discardLinesUntilContains2("<"+a,"##"));return null!=this.line&&0<=this.line.indexOf("<"+a)},"~S");c(b,"readLine",function(){return this.line=this.loader.rd()});e(b,"setLine",function(a){this.line=a},"~S")});r("JSV.api");D(JSV.api,"AnnotationData");r("JSV.api");D(JSV.api,"AppletFrame");r("JSV.api");D(JSV.api, +"JSVAppInterface",JSV.api.JSVAppletInterface);r("JSV.api");D(JSV.api,"JSVAppletInterface");r("JSV.api");D(JSV.api,"JSVFileHelper");r("JSV.api");D(JSV.api,"JSVMainPanel",JSV.api.JSVViewPanel);r("JSV.api");D(JSV.api,"JSVPanel",JSV.api.JSVViewPanel);r("JSV.api");D(JSV.api,"JSVTree");r("JSV.api");D(JSV.api,"JSVTreeNode");r("JSV.api");D(JSV.api,"JSVTreePath");r("JSV.api");D(JSV.api,"JSVViewPanel");r("JSV.api");D(JSV.api,"JSVZipReader");r("JSV.api");D(JSV.api,"PanelListener");r("JSV.api");D(JSV.api,"ScriptInterface"); +r("JSV.app");v(["JSV.api.JSVAppInterface","$.PanelListener","$.ScriptInterface"],"JSV.app.JSVApp","JU.Lst $.PT JSV.common.Coordinate $.JSVFileManager $.JSVersion $.JSViewer $.ScriptToken JU.Logger".split(" "),function(){var b=j(function(){this.appletFrame=null;this.isNewWindow=!1;this.prevPanel=this.vwr=this.syncCallbackFunctionName=this.peakCallbackFunctionName=this.loadFileCallbackFunctionName=this.coordCallbackFunctionName=this.appletReadyCallbackFunctionName=null;p(this,arguments)},JSV.app,"JSVApp", +null,[JSV.api.PanelListener,JSV.api.JSVAppInterface,JSV.api.ScriptInterface]);m(b,function(a,d){this.appletFrame=a;this.initViewer(d);this.initParams(a.getParameter("script"))},"JSV.api.AppletFrame,~B");c(b,"initViewer",function(a){this.vwr=new JSV.common.JSViewer(this,!0,a);this.appletFrame.setDropTargetListener(this.isSigned(),this.vwr);a=this.appletFrame.getDocumentBase();JSV.common.JSVFileManager.setDocumentBase(this.vwr,a)},"~B");e(b,"isPro",function(){return this.isSigned()});e(b,"isSigned", +function(){return!0});c(b,"getAppletFrame",function(){return this.appletFrame});c(b,"dispose",function(){try{this.vwr.dispose()}catch(a){if(z(a,Exception))a.printStackTrace();else throw a;}});e(b,"getPropertyAsJavaObject",function(a){return this.vwr.getPropertyAsJavaObject(a)},"~S");e(b,"getPropertyAsJSON",function(a){return JU.PT.toJSON(null,this.getPropertyAsJavaObject(a))},"~S");e(b,"getCoordinate",function(){return this.vwr.getCoordinate()});e(b,"loadInline",function(a){this.siOpenDataOrFile(a, +"[inline]",null,null,-1,-1,!0,null,null);this.appletFrame.validateContent(3)},"~S");e(b,"exportSpectrum",function(a,d){return this.vwr.$export(a,d)},"~S,~N");e(b,"setFilePath",function(a){this.runScript("load "+JU.PT.esc(a))},"~S");e(b,"setSpectrumNumber",function(a){this.runScript(JSV.common.ScriptToken.SPECTRUMNUMBER+" "+a)},"~N");e(b,"reversePlot",function(){this.toggle(JSV.common.ScriptToken.REVERSEPLOT)});e(b,"toggleGrid",function(){this.toggle(JSV.common.ScriptToken.GRIDON)});e(b,"toggleCoordinate", +function(){this.toggle(JSV.common.ScriptToken.COORDINATESON)});e(b,"togglePointsOnly",function(){this.toggle(JSV.common.ScriptToken.POINTSONLY)});e(b,"toggleIntegration",function(){this.toggle(JSV.common.ScriptToken.INTEGRATE)});c(b,"toggle",function(a){null!=this.vwr.selectedPanel&&this.runScript(a+" TOGGLE")},"JSV.common.ScriptToken");e(b,"addHighlight",function(a,d,b,c,g,h){this.runScript("HIGHLIGHT "+a+" "+d+" "+b+" "+c+" "+g+" "+h)},"~N,~N,~N,~N,~N,~N");e(b,"removeHighlight",function(a,d){this.runScript("HIGHLIGHT "+ +a+" "+d+" OFF")},"~N,~N");e(b,"removeAllHighlights",function(){this.runScript("HIGHLIGHT OFF")});e(b,"syncScript",function(a){this.vwr.syncScript(a)},"~S");e(b,"writeStatus",function(a){JU.Logger.info(a)},"~S");c(b,"initParams",function(a){this.vwr.parseInitScript(a);this.newAppletPanel();this.vwr.setPopupMenu(this.vwr.allowMenu,this.vwr.parameters.getBoolean(JSV.common.ScriptToken.ENABLEZOOM));this.vwr.allowMenu&&this.vwr.closeSource(null);this.runScriptNow(a)},"~S");c(b,"newAppletPanel",function(){JU.Logger.info("newAppletPanel"); +this.appletFrame.createMainPanel(this.vwr)});e(b,"repaint",function(){var a=null==this.vwr?null:this.vwr.html5Applet;null==JSV.common.JSViewer.jmolObject?this.appletFrame.repaint():null!=a&&JSV.common.JSViewer.jmolObject.repaint(a,!0)});c(b,"updateJS",function(){},"~N,~N");e(b,"runScriptNow",function(a){return this.vwr.runScriptNow(a)},"~S");c(b,"checkCallbacks",function(){if(!(null==this.coordCallbackFunctionName&&null==this.peakCallbackFunctionName)){var a=new JSV.common.Coordinate,d=null==this.peakCallbackFunctionName? +null:new JSV.common.Coordinate;if(this.vwr.pd().getPickedCoordinates(a,d)){var b=this.vwr.mainPanel.getCurrentPanelIndex();null==d?this.appletFrame.callToJavaScript(this.coordCallbackFunctionName,A(-1,[Double.$valueOf(a.getXVal()),Double.$valueOf(a.getYVal()),Integer.$valueOf(b+1)])):this.appletFrame.callToJavaScript(this.peakCallbackFunctionName,A(-1,[Double.$valueOf(a.getXVal()),Double.$valueOf(a.getYVal()),Double.$valueOf(d.getXVal()),Double.$valueOf(d.getYVal()),Integer.$valueOf(b+1)]))}}});c(b, +"doAdvanced",function(){},"~S");e(b,"panelEvent",function(a){C(a,"JSV.common.PeakPickEvent")?this.vwr.processPeakPickEvent(a,!1):C(a,"JSV.common.ZoomEvent")||C(a,"JSV.common.SubSpecChangeEvent")},"~O");e(b,"getSolnColour",function(){return this.vwr.getSolutionColorStr(!0)});c(b,"updateJSView",function(a){var d=this.vwr.html5Applet,b=null==d?null:this.vwr.selectedPanel;d&&null!=d._viewSet&&d._updateView(b,a);d._updateView(b,a)},"~S");e(b,"syncToJmol",function(a){this.updateJSView(a);null!=this.syncCallbackFunctionName&& +(JU.Logger.info("JSVApp.syncToJmol JSV>Jmol "+a),this.appletFrame.callToJavaScript(this.syncCallbackFunctionName,A(-1,[this.vwr.fullName,a])))},"~S");e(b,"setVisible",function(a){this.appletFrame.setPanelVisible(a)},"~B");e(b,"setCursor",function(a){this.vwr.apiPlatform.setCursor(a,this.appletFrame)},"~N");e(b,"runScript",function(a){this.vwr.runScript(a)},"~S");e(b,"getScriptQueue",function(){return this.vwr.scriptQueue});e(b,"siSetCurrentSource",function(a){this.vwr.currentSource=a},"JSV.source.JDXSource"); +e(b,"siSendPanelChange",function(){this.vwr.selectedPanel!==this.prevPanel&&(this.prevPanel=this.vwr.selectedPanel,this.vwr.sendPanelChange())});e(b,"siNewWindow",function(a,d){this.isNewWindow=a;d?null!=this.vwr.jsvpPopupMenu&&this.vwr.jsvpPopupMenu.setSelected("Window",!1):this.appletFrame.newWindow(a)},"~B,~B");e(b,"siValidateAndRepaint",function(){var a=this.vwr.pd();null!=a&&a.setTaintedAll();this.appletFrame.validate();this.repaint()},"~B");e(b,"siSyncLoad",function(a){this.newAppletPanel(); +JU.Logger.info("JSVP syncLoad reading "+a);this.siOpenDataOrFile(null,null,null,a,-1,-1,!1,null,null);this.appletFrame.validateContent(3)},"~S");e(b,"siOpenDataOrFile",function(a,d,b,c,g,h,e,k,l){switch(this.vwr.openDataOrFile(a,d,b,c,g,h,e,l)){case 0:null!=k&&this.runScript(k);break;case -1:return;default:this.siSetSelectedPanel(null);return}JU.Logger.info(this.appletFrame.getAppletInfo()+" File "+this.vwr.currentSource.getFilePath()+" Loaded Successfully")},"~O,~S,JU.Lst,~S,~N,~N,~B,~S,~S");e(b, +"siProcessCommand",function(a){this.vwr.runScriptNow(a)},"~S");e(b,"siSetSelectedPanel",function(a){this.vwr.mainPanel.setSelectedPanel(this.vwr,a,this.vwr.panelNodes);this.vwr.selectedPanel=a;this.vwr.spectraTree.setSelectedPanel(this,a);null==a&&(this.vwr.selectedPanel=a=this.appletFrame.getJSVPanel(this.vwr,null),this.vwr.mainPanel.setSelectedPanel(this.vwr,a,null));this.appletFrame.validate();null!=a&&(a.setEnabled(!0),a.setFocusable(!0))},"JSV.api.JSVPanel");e(b,"siExecSetCallback",function(a, +d){switch(a){case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME:this.appletReadyCallbackFunctionName=d;break;case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME:this.loadFileCallbackFunctionName=d;break;case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME:this.peakCallbackFunctionName=d;break;case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME:this.syncCallbackFunctionName=d;break;case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME:this.coordCallbackFunctionName=d}},"JSV.common.ScriptToken,~S"); +e(b,"siLoaded",function(a){null!=this.loadFileCallbackFunctionName&&this.appletFrame.callToJavaScript(this.loadFileCallbackFunctionName,A(-1,[this.vwr.appletName,a]));this.updateJSView(null);return null},"~S");e(b,"siExecHidden",function(){},"~B");e(b,"siExecScriptComplete",function(a,d){d||this.vwr.showMessage(a);this.siValidateAndRepaint(!1)},"~S,~B");e(b,"siUpdateBoolean",function(){},"JSV.common.ScriptToken,~B");e(b,"siCheckCallbacks",function(){this.checkCallbacks()},"~S");e(b,"siNodeSet",function(){this.appletFrame.validateContent(2); +this.siValidateAndRepaint(!1)},"JSV.common.PanelNode");e(b,"siSourceClosed",function(){},"JSV.source.JDXSource");e(b,"siGetNewJSVPanel",function(a){if(null==a)return this.vwr.initialEndIndex=this.vwr.initialStartIndex=-1,null;var d=new JU.Lst;d.addLast(a);a=this.appletFrame.getJSVPanel(this.vwr,d);a.getPanelData().addListener(this);this.vwr.parameters.setFor(a,null,!0);return a},"JSV.common.Spectrum");e(b,"siGetNewJSVPanel2",function(a){if(null==a)return this.vwr.initialEndIndex=this.vwr.initialStartIndex= +-1,this.appletFrame.getJSVPanel(this.vwr,null);a=this.appletFrame.getJSVPanel(this.vwr,a);this.vwr.initialEndIndex=this.vwr.initialStartIndex=-1;a.getPanelData().addListener(this);this.vwr.parameters.setFor(a,null,!0);return a},"JU.Lst");e(b,"siSetPropertiesFromPreferences",function(){this.vwr.checkAutoIntegrate()},"JSV.api.JSVPanel,~B");e(b,"siSetLoaded",function(){},"~S,~S");e(b,"siSetMenuEnables",function(){},"JSV.common.PanelNode,~B");e(b,"siUpdateRecentMenus",function(){},"~S");e(b,"siExecTest", +function(){this.loadInline("")},"~S");e(b,"print",function(a){return this.vwr.print(a)},"~S");e(b,"checkScript",function(a){return this.vwr.checkScript(a)},"~S");b.getAppletInfo=c(b,"getAppletInfo",function(){return"JSpecView Applet "+JSV.common.JSVersion.VERSION+"\n\nAuthors:\nProf. Robert M. Hanson,\nD. Facey, K. Bryan, C. Walters, Prof. Robert J. Lancashire and\nvolunteer developers through sourceforge."})});r("JSV.app");v(["J.api.GenericMouseInterface"],"JSV.app.GenericMouse",["JU.Logger"],function(){var b= +j(function(){this.jsvp=this.pd=null;this.modifiersWhenPressed10=this.yWhenPressed=this.xWhenPressed=0;this.disposed=this.isMouseDown=!1;p(this,arguments)},JSV.app,"GenericMouse",null,J.api.GenericMouseInterface);m(b,function(a){this.jsvp=a;this.pd=a.getPanelData()},"JSV.api.JSVPanel");e(b,"clear",function(){});e(b,"processEvent",function(a,d,b,c,g){if(null==this.pd)return!this.disposed&&(501==a&&0!=(c&4))&&this.jsvp.showMenu(d,b),!0;507!=a&&(c=JSV.app.GenericMouse.applyLeftMouse(c));switch(a){case 507:this.wheeled(g, +d,c|32);break;case 501:this.xWhenPressed=d;this.yWhenPressed=b;this.modifiersWhenPressed10=c;this.pressed(g,d,b,c,!1);break;case 506:this.dragged(g,d,b,c);break;case 504:this.entered(g,d,b);break;case 505:this.exited(g,d,b);break;case 503:this.moved(g,d,b,c);break;case 502:this.released(g,d,b,c);d==this.xWhenPressed&&(b==this.yWhenPressed&&c==this.modifiersWhenPressed10)&&this.clicked(g,d,b,c,1);break;default:return!1}return!0},"~N,~N,~N,~N,~N");c(b,"mouseEntered",function(a){this.entered(a.getWhen(), +a.getX(),a.getY())},"java.awt.event.MouseEvent");c(b,"mouseExited",function(a){this.exited(a.getWhen(),a.getX(),a.getY())},"java.awt.event.MouseEvent");c(b,"mouseMoved",function(a){this.moved(a.getWhen(),a.getX(),a.getY(),a.getModifiers())},"java.awt.event.MouseEvent");c(b,"mousePressed",function(a){this.pressed(a.getWhen(),a.getX(),a.getY(),a.getModifiers(),a.isPopupTrigger())},"java.awt.event.MouseEvent");c(b,"mouseDragged",function(a){var d=a.getModifiers();0==(d&28)&&(d|=16);this.dragged(a.getWhen(), +a.getX(),a.getY(),d)},"java.awt.event.MouseEvent");c(b,"mouseReleased",function(a){this.released(a.getWhen(),a.getX(),a.getY(),a.getModifiers())},"java.awt.event.MouseEvent");c(b,"mouseClicked",function(a){this.clicked(a.getWhen(),a.getX(),a.getY(),a.getModifiers(),a.getClickCount())},"java.awt.event.MouseEvent");c(b,"mouseWheelMoved",function(a){a.consume();this.wheeled(a.getWhen(),a.getWheelRotation(),a.getModifiers()|32)},"java.awt.event.MouseWheelEvent");c(b,"keyTyped",function(a){if(null!=this.pd){var d= +a.getKeyChar(),b=a.getModifiers();JU.Logger.info("MouseManager keyTyped: "+d+" "+(0+d.charCodeAt(0))+" "+b);this.pd.keyTyped(d.charCodeAt(0),b)&&a.consume()}},"java.awt.event.KeyEvent");c(b,"keyPressed",function(a){null!=this.pd&&this.pd.keyPressed(a.getKeyCode(),a.getModifiers())&&a.consume()},"java.awt.event.KeyEvent");c(b,"keyReleased",function(a){null!=this.pd&&this.pd.keyReleased(a.getKeyCode())},"java.awt.event.KeyEvent");e(b,"processKeyEvent",function(a){switch(a.getID()){case 401:this.keyPressed(a); +break;case 402:this.keyReleased(a);break;case 400:this.keyTyped(a)}},"~O");c(b,"entered",function(a,d,b){null!=this.pd&&this.pd.mouseEnterExit(a,d,b,!1)},"~N,~N,~N");c(b,"exited",function(a,d,b){null!=this.pd&&this.pd.mouseEnterExit(a,d,b,!0)},"~N,~N,~N");c(b,"clicked",function(a,d,b,c){null!=this.pd&&this.pd.mouseAction(2,a,d,b,1,c)},"~N,~N,~N,~N,~N");c(b,"moved",function(a,d,b,c){null!=this.pd&&(this.isMouseDown?this.pd.mouseAction(1,a,d,b,0,JSV.app.GenericMouse.applyLeftMouse(c)):this.pd.mouseAction(0, +a,d,b,0,c&-29))},"~N,~N,~N,~N");c(b,"wheeled",function(a,d,b){null!=this.pd&&this.pd.mouseAction(3,a,0,d,0,b)},"~N,~N,~N");c(b,"pressed",function(a,d,b,c){null==this.pd?this.disposed||this.jsvp.showMenu(d,b):(this.isMouseDown=!0,this.pd.mouseAction(4,a,d,b,0,c))},"~N,~N,~N,~N,~B");c(b,"released",function(a,d,b,c){null!=this.pd&&(this.isMouseDown=!1,this.pd.mouseAction(5,a,d,b,0,c))},"~N,~N,~N,~N");c(b,"dragged",function(a,d,b,c){null!=this.pd&&(20==(c&20)&&(c=c&-5|2),this.pd.mouseAction(1,a,d,b,0, +c))},"~N,~N,~N,~N");b.applyLeftMouse=c(b,"applyLeftMouse",function(a){return 0==(a&28)?a|16:a},"~N");e(b,"processTwoPointGesture",function(){},"~A");e(b,"dispose",function(){this.jsvp=this.pd=null;this.disposed=!0})});r("JSV.appletjs");v(["javajs.api.JSInterface","JSV.api.AppletFrame","$.JSVAppletInterface"],"JSV.appletjs.JSVApplet","java.net.URL java.util.Hashtable JU.PT JSV.app.JSVApp JSV.js2d.JsMainPanel $.JsPanel JU.Logger".split(" "),function(){var b=j(function(){this.viewer=this.app=null;this.isStandalone= +!1;this.htParams=this.viewerOptions=null;p(this,arguments)},JSV.appletjs,"JSVApplet",null,[JSV.api.JSVAppletInterface,JSV.api.AppletFrame,javajs.api.JSInterface]);m(b,function(a){null==a&&(a=new java.util.Hashtable);this.viewerOptions=a;this.htParams=new java.util.Hashtable;var d;for(a=a.entrySet().iterator();a.hasNext()&&((d=a.next())||1);)this.htParams.put(d.getKey().toLowerCase(),d.getValue());this.init()},"java.util.Map");c(b,"init",function(){this.app=new JSV.app.JSVApp(this,!0);this.initViewer(); +null!=this.app.appletReadyCallbackFunctionName&&null!=this.viewer.fullName&&this.callToJavaScript(this.app.appletReadyCallbackFunctionName,A(-1,[this.viewer.appletName,this.viewer.fullName,Boolean.TRUE,this]))});c(b,"initViewer",function(){this.viewer=this.app.vwr;this.setLogging();this.viewerOptions.remove("debug");var a=this.viewerOptions.get("display"),a=document.getElementById(a);this.viewer.setDisplay(a);JU.Logger.info(this.getAppletInfo())});c(b,"setLogging",function(){var a=this.getValue("logLevel", +this.getBooleanValue("debug",!1)?"5":"4").charAt(0).charCodeAt(0)-48;4!=a&&System.out.println("setting logLevel="+a+' -- To change, use script "set logLevel [0-5]"');JU.Logger.setLogLevel(a)});c(b,"getParameter",function(a){a=this.htParams.get(a.toLowerCase());return null==a?null:a.toString()},"~S");c(b,"getBooleanValue",function(a,d){var b=this.getValue(a,d?"true":"");return b.equalsIgnoreCase("true")||b.equalsIgnoreCase("on")||b.equalsIgnoreCase("yes")},"~S,~B");c(b,"getValue",function(a,d){var b= +this.getParameter(a);System.out.println("getValue "+a+" = "+b);return null!=b?b:d},"~S,~S");e(b,"isPro",function(){return this.app.isPro()});e(b,"isSigned",function(){return this.app.isSigned()});e(b,"destroy",function(){this.app.dispose();this.app=null});c(b,"getParameter",function(a,d){return this.isStandalone?System.getProperty(a,d):null!=this.getParameter(a)?this.getParameter(a):d},"~S,~S");e(b,"getAppletInfo",function(){return JSV.app.JSVApp.getAppletInfo()});e(b,"getSolnColour",function(){return this.app.getSolnColour()}); +e(b,"getCoordinate",function(){return this.app.getCoordinate()});e(b,"loadInline",function(a){this.app.loadInline(a)},"~S");c(b,"$export",function(a,d){return this.app.exportSpectrum(a,d)},"~S,~N");e(b,"exportSpectrum",function(a,d){return this.app.exportSpectrum(a,d)},"~S,~N");e(b,"setFilePath",function(a){this.app.setFilePath(a)},"~S");e(b,"setSpectrumNumber",function(a){this.app.setSpectrumNumber(a)},"~N");e(b,"toggleGrid",function(){this.app.toggleGrid()});e(b,"toggleCoordinate",function(){this.app.toggleCoordinate()}); +e(b,"togglePointsOnly",function(){this.app.togglePointsOnly()});e(b,"toggleIntegration",function(){this.app.toggleIntegration()});e(b,"addHighlight",function(a,d,b,c,g,h){this.app.addHighlight(a,d,b,c,g,h)},"~N,~N,~N,~N,~N,~N");e(b,"removeAllHighlights",function(){this.app.removeAllHighlights()});e(b,"removeHighlight",function(a,d){this.app.removeHighlight(a,d)},"~N,~N");e(b,"reversePlot",function(){this.app.reversePlot()});c(b,"script",function(a){this.app.initParams(a)},"~S");e(b,"runScript",function(a){this.app.runScript(a)}, +"~S");e(b,"syncScript",function(a){this.app.syncScript(a)},"~S");e(b,"writeStatus",function(a){this.app.writeStatus(a)},"~S");e(b,"getPropertyAsJavaObject",function(a){return this.app.getPropertyAsJavaObject(a)},"~S");e(b,"getPropertyAsJSON",function(a){return this.app.getPropertyAsJSON(a)},"~S");e(b,"runScriptNow",function(a){return this.app.runScriptNow(a)},"~S");e(b,"print",function(a){return this.app.print(a)},"~S");e(b,"setDropTargetListener",function(){},"~B,JSV.common.JSViewer");e(b,"validateContent", +function(){},"~N");e(b,"createMainPanel",function(a){a.mainPanel=new JSV.js2d.JsMainPanel},"JSV.common.JSViewer");e(b,"newWindow",function(){},"~B");e(b,"callToJavaScript",function(a,d){var b=JU.PT.split(a,".");try{for(var c=window[b[0]],g=1;gh||0>e||0>l||0>k))return null;var p=0>h?c.getXVal():Double.$valueOf(b.get(h)).doubleValue(),m=0>e?c.getYVal():Double.$valueOf(b.get(e)).doubleValue(),j=0>k?c.getColor():a.getColor1(JU.CU.getArgbFromString(b.get(k))),n;0>l?n=c.text:(n=b.get(l),'"'==n.charAt(0)&&(n=n.substring(1,n.length-1)));return(new JSV.common.ColoredAnnotation).setCA(p,m,d,n,j,!1,!1,0,0)}catch(r){if(z(r,Exception))return null;throw r;}},"J.api.GenericGraphics,JSV.common.Spectrum,JU.Lst,JSV.common.Annotation"); +b=u(JSV.common.Annotation,"AType",Enum);n(b,"Integration",0,[]);n(b,"PeakList",1,[]);n(b,"Measurements",2,[]);n(b,"OverlayLegend",3,[]);n(b,"Views",4,[]);n(b,"NONE",5,[])});r("JSV.common");v(["JSV.common.Annotation"],"JSV.common.ColoredAnnotation",null,function(){var b=j(function(){this.color=null;p(this,arguments)},JSV.common,"ColoredAnnotation",JSV.common.Annotation);m(b,function(){B(this,JSV.common.ColoredAnnotation,[])});c(b,"getColor",function(){return this.color});c(b,"setCA",function(a,d,b, +c,g,h,e,k,l){this.setA(a,d,b,c,h,e,k,l);this.color=g;return this},"~N,~N,JSV.common.Spectrum,~S,javajs.api.GenericColor,~B,~B,~N,~N")});r("JSV.common");v(["JSV.common.Parameters"],"JSV.common.ColorParameters",["java.util.Hashtable","$.StringTokenizer","JU.CU","$.Lst","JSV.common.ScriptToken"],function(){var b=j(function(){this.plotColors=this.elementColors=this.displayFontName=this.titleFontName=null;this.isDefault=!1;p(this,arguments)},JSV.common,"ColorParameters",JSV.common.Parameters);m(b,function(){B(this, +JSV.common.ColorParameters,[]);JSV.common.ColorParameters.BLACK=this.getColor3(0,0,0);JSV.common.ColorParameters.RED=this.getColor3(255,0,0);JSV.common.ColorParameters.LIGHT_GRAY=this.getColor3(200,200,200);JSV.common.ColorParameters.DARK_GRAY=this.getColor3(80,80,80);JSV.common.ColorParameters.BLUE=this.getColor3(0,0,255);JSV.common.ColorParameters.WHITE=this.getColor3(255,255,255);this.elementColors=new java.util.Hashtable;this.setColor(JSV.common.ScriptToken.TITLECOLOR,JSV.common.ColorParameters.BLACK); +this.setColor(JSV.common.ScriptToken.UNITSCOLOR,JSV.common.ColorParameters.RED);this.setColor(JSV.common.ScriptToken.SCALECOLOR,JSV.common.ColorParameters.BLACK);this.setColor(JSV.common.ScriptToken.COORDINATESCOLOR,JSV.common.ColorParameters.RED);this.setColor(JSV.common.ScriptToken.GRIDCOLOR,JSV.common.ColorParameters.LIGHT_GRAY);this.setColor(JSV.common.ScriptToken.PLOTCOLOR,JSV.common.ColorParameters.BLUE);this.setColor(JSV.common.ScriptToken.PLOTAREACOLOR,JSV.common.ColorParameters.WHITE);this.setColor(JSV.common.ScriptToken.BACKGROUNDCOLOR, +this.getColor3(192,192,192));this.setColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR,JSV.common.ColorParameters.RED);this.setColor(JSV.common.ScriptToken.PEAKTABCOLOR,JSV.common.ColorParameters.RED);this.setColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR,JSV.common.ColorParameters.DARK_GRAY);for(var a=0;8>a;a++)JSV.common.ColorParameters.defaultPlotColors[a]=this.getColorFromString(JSV.common.ColorParameters.defaultPlotColorNames[a]);this.plotColors=Array(8);System.arraycopy(JSV.common.ColorParameters.defaultPlotColors, +0,this.plotColors,0,8)});c(b,"setFor",function(a,d,b){null==d&&(d=this);b&&a.getPanelData().setBooleans(d,null);a=a.getPanelData();null!=a.getCurrentPlotColor(1)&&a.setPlotColors(this.plotColors);a.setColorOrFont(d,null)},"JSV.api.JSVPanel,JSV.common.ColorParameters,~B");c(b,"set",function(a,d,b){var c=null;switch(d){default:this.setP(a,d,b);return;case JSV.common.ScriptToken.PLOTCOLORS:null==a?this.getPlotColors(b):a.setPlotColors(this.getPlotColors(b));return;case JSV.common.ScriptToken.BACKGROUNDCOLOR:case JSV.common.ScriptToken.COORDINATESCOLOR:case JSV.common.ScriptToken.GRIDCOLOR:case JSV.common.ScriptToken.HIGHLIGHTCOLOR:case JSV.common.ScriptToken.INTEGRALPLOTCOLOR:case JSV.common.ScriptToken.PEAKTABCOLOR:case JSV.common.ScriptToken.PLOTAREACOLOR:case JSV.common.ScriptToken.PLOTCOLOR:case JSV.common.ScriptToken.SCALECOLOR:case JSV.common.ScriptToken.TITLECOLOR:case JSV.common.ScriptToken.UNITSCOLOR:c= +this.setColorFromString(d,b);break;case JSV.common.ScriptToken.TITLEFONTNAME:case JSV.common.ScriptToken.DISPLAYFONTNAME:c=this.getFontName(d,b)}null!=a&&null!=c&&a.setColorOrFont(this,d)},"JSV.common.PanelData,JSV.common.ScriptToken,~S");c(b,"getElementColor",function(a){return this.elementColors.get(a)},"JSV.common.ScriptToken");c(b,"setColor",function(a,d){null!=d&&this.elementColors.put(a,d);return d},"JSV.common.ScriptToken,javajs.api.GenericColor");c(b,"copy",function(){return this.copy(this.name)}); +c(b,"setElementColors",function(a){this.displayFontName=a.displayFontName;var d;for(a=a.elementColors.entrySet().iterator();a.hasNext()&&((d=a.next())||1);)this.setColor(d.getKey(),d.getValue());return this},"JSV.common.ColorParameters");c(b,"getColorFromString",function(a){return this.getColor1(JU.CU.getArgbFromString(a))},"~S");c(b,"getPlotColors",function(a){if(null==a)return this.plotColors[0]=this.getElementColor(JSV.common.ScriptToken.PLOTCOLOR),this.plotColors;a=new java.util.StringTokenizer(a, +",;.- ");var d=new JU.Lst;try{for(;a.hasMoreTokens();)d.addLast(this.getColorFromString(a.nextToken()))}catch(b){if(z(b,Exception))return null;throw b;}return d.toArray(Array(d.size()))},"~S");c(b,"setColorFromString",function(a,d){return this.setColor(a,this.getColorFromString(d))},"JSV.common.ScriptToken,~S");c(b,"getFontName",function(a,d){var b=this.isValidFontName(d);switch(a){case JSV.common.ScriptToken.TITLEFONTNAME:return b?this.titleFontName=d:this.titleFontName;case JSV.common.ScriptToken.DISPLAYFONTNAME:return b? +this.displayFontName=d:this.displayFontName}return null},"JSV.common.ScriptToken,~S");b.BLACK=null;b.RED=null;b.LIGHT_GRAY=null;b.DARK_GRAY=null;b.BLUE=null;b.WHITE=null;b.defaultPlotColors=Array(8);b.defaultPlotColorNames=A(-1,"black darkGreen darkred orange magenta cyan maroon darkGray".split(" "))});r("JSV.common");s=u(JSV.common,"CoordComparator",null,java.util.Comparator);e(s,"compare",function(b,a){return b.getXVal()>a.getXVal()?1:b.getXVal()=d&&JSV.common.Coordinate.getMaxY(a,0,a.length-1)>=b},"~A,~N,~N");b.normalise=c(b,"normalise",function(a,d,b){var c=Array(a.length),g=JSV.common.Coordinate.getMinY(a,0,a.length-1);b=(JSV.common.Coordinate.getMaxY(a,0,a.length-1)- +g)/(b-d);for(var h=0;hc&&(c=g)}return c},"~A,~N,~N");b.getMaxX=c(b,"getMaxX",function(a,d){for(var b=-1.7976931348623157E308, +c=0;cb&&(b=g)}return b},"JU.Lst,JSV.common.ViewData");b.getMinY=c(b,"getMinY",function(a,d,b){for(var c=1.7976931348623157E308;d<=b;d++){var g=a[d].getYVal();gc&&(c=g)}return c},"~A,~N,~N");b.getMaxYUser=c(b,"getMaxYUser",function(a,d){for(var b=-1.7976931348623157E308,c=0;cb&&(b=g)}return b},"JU.Lst,JSV.common.ViewData");b.getYValueAt=c(b,"getYValueAt",function(a,d){var b=JSV.common.Coordinate.getNearestIndexForX(a,d);if(0==b||b==a.length)return NaN;var c=a[b].getXVal(),g=a[b-1].getXVal(),h=a[b].getYVal(),b=a[b-1].getYVal();return c==g?h:b+(h-b)/(c-g)*(d-g)},"~A,~N");b.intoRange=c(b,"intoRange",function(a,d,b){return Math.max(Math.min(a,b),d)},"~N,~N,~N");b.getNearestIndexForX=c(b,"getNearestIndexForX",function(a,d){var b=(new JSV.common.Coordinate).set(d, +0),b=java.util.Arrays.binarySearch(a,b,JSV.common.Coordinate.c);0>b&&(b=-1-b);return 0>b?0:b>a.length-1?a.length-1:b},"~A,~N");b.findXForPeakNearest=c(b,"findXForPeakNearest",function(a,d,b){d=JSV.common.Coordinate.getNearestIndexForX(a,d);for(b=b?-1:1;dh*(a[d].yVal-b);)d++;else for(;0<=d&&0>h*(a[d].yVal-b);)d--;return-1==d||d==a.length?NaN:JSV.common.Coordinate.findXForPeakNearest(a,a[d].getXVal(),c)},"~A,~N,~N,~B,~B");b.c=new JSV.common.CoordComparator});r("JSV.common");v(["java.lang.Enum"],"JSV.common.ExportType",null,function(){var b=u(JSV.common, +"ExportType",Enum);b.getType=c(b,"getType",function(a){a=a.toUpperCase();if(a.equalsIgnoreCase("Original..."))return JSV.common.ExportType.SOURCE;if(a.startsWith("XML"))return JSV.common.ExportType.AML;for(var d,b=0,c=JSV.common.ExportType.values();ba||this.iSpectrumClicked!=a)this.lastClickX=NaN,this.lastPixelX=2147483647;this.iSpectrumClicked=this.setSpectrumSelected(this.setSpectrumMovedTo(a))},"~N");c(b,"setSpectrumSelected",function(a){var d=a!=this.iSpectrumSelected; +this.iSpectrumSelected=a;d&&this.getCurrentView();return this.iSpectrumSelected},"~N");c(b,"closeDialogsExcept",function(a){if(null!=this.dialogs)for(var d,b=this.dialogs.entrySet().iterator();b.hasNext()&&((d=b.next())||1);){var c=d.getValue();c.isDialog()&&(a===JSV.common.Annotation.AType.NONE||c.getAType()!==a)&&c.setVisible(!1)}},"JSV.common.Annotation.AType");c(b,"dispose",function(){this.widgets=this.graphsTemp=this.imageView=this.pendingMeasurement=this.lastAnnotation=this.annotations=this.viewList= +this.viewData=this.spectra=null;this.disposeImage();if(null!=this.dialogs)for(var a,d=this.dialogs.entrySet().iterator();d.hasNext()&&((a=d.next())||1);){var b=a.getValue();b.isDialog()&&b.dispose()}this.dialogs=null});c(b,"isDrawNoSpectra",function(){return-2147483648==this.iSpectrumSelected});c(b,"getFixedSelectedSpectrumIndex",function(){return Math.max(this.iSpectrumSelected,0)});c(b,"getSpectrum",function(){return this.getSpectrumAt(this.getFixedSelectedSpectrumIndex()).getCurrentSubSpectrum()}); +c(b,"getSpectrumAt",function(a){return this.spectra.get(a)},"~N");c(b,"getSpectrumIndex",function(a){for(var d=this.spectra.size();0<=--d;)if(this.spectra.get(d)===a)return d;return-1},"JSV.common.Spectrum");c(b,"addSpec",function(a){this.spectra.addLast(a);this.nSpectra++},"JSV.common.Spectrum");c(b,"splitStack",function(a){a&&this.isSplittable?(this.nSplit=this.nSpectra,this.showAllStacked=!1,this.setSpectrumClicked(this.iSpectrumSelected),this.pd.currentSplitPoint=this.iSpectrumSelected):(this.nSplit= +1,this.showAllStacked=this.allowStacking&&!a,this.setSpectrumClicked(this.iSpectrumSelected));this.stackSelected=!1;JSV.common.GraphSet.setFractionalPositions(this.pd,this.pd.graphSets,JSV.common.PanelData.LinkMode.NONE);this.pd.setTaintedAll()},"~B");c(b,"setPositionForFrame",function(a){0>a&&(a=0);var d=this.height-50;this.xPixel00=w(this.width*this.fX0);this.xPixel11=w(this.xPixel00+this.width*this.fracX-1);this.xHArrows=this.xPixel00+25;this.xVArrows=this.xPixel11-w(this.right/2);this.xPixel0= +this.xPixel00+w(this.left*(1-this.fX0));this.xPixel10=this.xPixel1=this.xPixel11-this.right;this.xPixels0=this.xPixels=this.xPixel1-this.xPixel0+1;this.yPixel000=(0==this.fY0?25:0)+w(this.height*this.fY0);this.yPixel00=this.yPixel000+w(d*this.fracY*a);this.yPixel11=this.yPixel00+w(d*this.fracY)-1;this.yHArrows=this.yPixel11-12;this.yPixel0=this.yPixel00+w(this.top/2);this.yPixel1=this.yPixel11-w(this.bottom/2);this.yPixels=this.yPixel1-this.yPixel0+1;null!=this.imageView&&this.is2DSpectrum&&(this.setImageWindow(), +this.pd.display1D?(this.xPixels=w(Math.floor(0.8*(this.pd.display1D?1*(this.xPixels0-this.imageView.xPixels)/this.xPixels0:1)*this.xPixels0)),this.xPixel1=this.xPixel0+this.xPixels-1):(this.xPixels=0,this.xPixel1=this.imageView.xPixel0-30))},"~N");c(b,"hasPoint",function(a,d){return a>=this.xPixel00&&a<=this.xPixel11&&d>=this.yPixel000&&d<=this.yPixel11*this.nSplit},"~N,~N");c(b,"isInPlotRegion",function(a,d){return a>=this.xPixel0&&a<=this.xPixel1&&d>=this.yPixel0&&d<=this.yPixel1},"~N,~N");c(b, +"getSplitPoint",function(a){return Math.max(0,Math.min(w((a-this.yPixel000)/(this.yPixel11-this.yPixel00)),this.nSplit-1))},"~N");c(b,"isSplitWidget",function(a,d){return this.isFrameBox(a,d,this.splitterX,this.splitterY)},"~N,~N");c(b,"isCloserWidget",function(a,d){return this.isFrameBox(a,d,this.closerX,this.closerY)},"~N,~N");c(b,"initGraphSet",function(a,d){null==JSV.common.GraphSet.veryLightGrey&&(JSV.common.GraphSet.veryLightGrey=this.g2d.getColor3(200,200,200));this.setPlotColors(JSV.common.ColorParameters.defaultPlotColors); +this.xAxisLeftToRight=this.getSpectrumAt(0).shouldDisplayXAxisIncreasing();this.setDrawXAxis();var b=E(this.nSpectra,0),c=E(this.nSpectra,0);this.bsSelected.setBits(0,this.nSpectra);this.allowStackedYScale=!0;0>=d&&(d=2147483647);this.isSplittable=1this.pin1Dx0.yPixel0-2&&dthis.pin2Dx0.yPixel0-2&&dthis.pin1Dy0.xPixel1&&athis.pin2Dy0.xPixel1&&athis.iSpectrumClicked)return!1;this.xValueMovedTo=this.getSpectrum().findXForPeakNearest(this.xValueMovedTo); +this.setXPixelMovedTo(this.xValueMovedTo,1.7976931348623157E308,0,0);return!Double.isNaN(this.xValueMovedTo)});c(b,"setXPixelMovedTo",function(a,d,b,c){1.7976931348623157E308==a&&1.7976931348623157E308==d?(this.xPixelMovedTo=b,this.xPixelMovedTo2=c,this.isLinked&&this.sticky2Dcursor&&this.pd.setlinkedXMove(this,this.toX(this.xPixelMovedTo),!1)):(1.7976931348623157E308!=a&&(this.xPixelMovedTo=this.toPixelX(a),this.fixX(this.xPixelMovedTo)!=this.xPixelMovedTo&&(this.xPixelMovedTo=-1),this.xPixelMovedTo2= +-1,1E10!=a&&this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex())),1.7976931348623157E308!=d&&(this.xPixelMovedTo2=this.toPixelX(d)))},"~N,~N,~N,~N");c(b,"processPendingMeasurement",function(a,d,b){if(!this.isInPlotRegion(a,d)||this.is2dClick(a,d))this.pendingMeasurement=null;else{var c=this.toX(a),g=this.toY(d),h=c;switch(b){case 0:this.pendingMeasurement.setPt2(this.toX(a),this.toY(d));break;case 3:case 2:if(0>this.iSpectrumClicked)break;var e=this.spectra.get(this.iSpectrumClicked);this.setScale(this.iSpectrumClicked); +3!=b&&(b=this.findMeasurement(this.selectedSpectrumMeasurements,a,d,1),null!=b?(c=b.getXVal(),g=b.getYVal()):null!=(b=this.findMeasurement(this.selectedSpectrumMeasurements,a,d,2))?(c=b.getXVal2(),g=b.getYVal2()):c=this.getNearestPeak(e,c,g));this.pendingMeasurement=(new JSV.common.Measurement).setM1(c,g,e);this.pendingMeasurement.setPt2(h,g);this.pd.setTaintedAll();this.pd.repaint();break;case 1:case -2:case -3:for(h=null!=this.pendingMeasurement&&this.isVisible(this.getDialog(JSV.common.Annotation.AType.Measurements, +-1));h;){this.setScale(this.getSpectrumIndex(this.pendingMeasurement.spec));if(3!=b){if(!this.findNearestMaxMin()){h=!1;break}a=this.xPixelMovedTo}c=this.toX(a);g=this.toY(d);this.pendingMeasurement.setPt2(c,g);if(0==this.pendingMeasurement.text.length){h=!1;break}this.setMeasurement(this.pendingMeasurement);if(1!=b){h=!1;break}this.setSpectrumClicked(this.getSpectrumIndex(this.pendingMeasurement.spec));this.pendingMeasurement=(new JSV.common.Measurement).setM1(c,g,this.pendingMeasurement.spec);break}h|| +(this.pendingMeasurement=null);this.pd.setTaintedAll();this.pd.repaint();break;case 5:this.findNearestMaxMin()?(a=this.getFixedSelectedSpectrumIndex(),Double.isNaN(this.lastXMax)||this.lastSpecClicked!=a||null==this.pendingMeasurement?(this.lastXMax=this.xValueMovedTo,this.lastSpecClicked=a,this.pendingMeasurement=(new JSV.common.Measurement).setM1(this.xValueMovedTo,this.yValueMovedTo,this.spectra.get(a))):(this.pendingMeasurement.setPt2(this.xValueMovedTo,this.yValueMovedTo),0Math.abs(d-e)+Math.abs(b-l))return g;break;case 2:if(4>Math.abs(d-k)+Math.abs(b-x))return g;break;case -5:l=x=w((l+x)/2),k=e+20;default:case -1:case -2:if(JSV.common.GraphSet.isOnLine(d, +b,e,l,k,x))return g}}return null},"JSV.common.MeasurementData,~N,~N,~N");c(b,"setMeasurement",function(a){var d=this.getSpectrumIndex(a.spec),b=this.getDialog(JSV.common.Annotation.AType.Measurements,d);null==b&&this.addDialog(d,JSV.common.Annotation.AType.Measurements,b=new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements,a.spec));b.getData().addLast(a.copyM());this.updateDialog(JSV.common.Annotation.AType.Measurements,-1)},"JSV.common.Measurement");c(b,"checkArrowUpDownClick", +function(a,d){var b=!1,c=this.isArrowClick(a,d,3)?JSV.common.GraphSet.RT2:this.isArrowClick(a,d,4)?1/JSV.common.GraphSet.RT2:0;if(0!=c){1b&&(b=this.nSpectra- +1),this.setSpectrumClicked(b%this.nSpectra),!0;if(this.isArrowClick(a,d,0)){if(this.showAllStacked)return this.showAllStacked=!1,this.setSpectrumClicked(this.getFixedSelectedSpectrumIndex()),!0;this.showAllStacked=this.allowStacking;this.setSpectrumSelected(-1);this.stackSelected=!1}}return!1},"~N,~N");c(b,"isArrowClick",function(a,d,b){switch(b){case 3:case 4:case -1:return b=w((this.yPixel00+this.yPixel11)/2)+15*(3==b?-1:4==b?1:0),10>Math.abs(this.xVArrows-a)&&10>Math.abs(b-d);case 1:case 2:case 0:return b= +this.xHArrows+15*(1==b?-1:2==b?1:0),10>Math.abs(b-a)&&10>Math.abs(this.yHArrows-d)}return!1},"~N,~N,~N");c(b,"setWidgetValueByUser",function(a){var d;d=a===this.cur2Dy?""+this.imageView.toSubspectrumIndex(a.yPixel0):a===this.pin1Dx01?""+Math.min(this.pin1Dx0.getXVal(),this.pin1Dx1.getXVal())+" - "+Math.max(this.pin1Dx0.getXVal(),this.pin1Dx1.getXVal()):a===this.pin1Dy01?""+Math.min(this.pin1Dy0.getYVal(),this.pin1Dy1.getYVal())+" - "+Math.max(this.pin1Dy0.getYVal(),this.pin1Dy1.getYVal()):a===this.pin2Dx01? +""+Math.min(this.pin2Dx0.getXVal(),this.pin2Dx1.getXVal())+" - "+Math.max(this.pin2Dx0.getXVal(),this.pin2Dx1.getXVal()):a===this.pin2Dy01?""+w(Math.min(this.pin2Dy0.getYVal(),this.pin2Dy1.getYVal()))+" - "+w(Math.max(this.pin2Dy0.getYVal(),this.pin2Dy1.getYVal())):""+a.getValue();d=this.pd.getInput("New value?","Set Slider",d);if(null!=d){d=d.trim();try{if(a===this.pin1Dx01||a===this.pin1Dy01||a===this.pin2Dx01||a===this.pin2Dy01){var b=d.indexOf("-",1);if(!(0>b)){var c=Double.$valueOf(d.substring(0, +b)).doubleValue(),g=Double.$valueOf(d.substring(b+1)).doubleValue();a===this.pin1Dx01?this.doZoom(c,this.pin1Dy0.getYVal(),g,this.pin1Dy1.getYVal(),!0,!1,!1,!0,!0):a===this.pin1Dy01?this.doZoom(this.pin1Dx0.getXVal(),c,this.pin1Dx1.getXVal(),g,null==this.imageView,null==this.imageView,!1,!1,!0):a===this.pin2Dx01?(this.imageView.setView0(this.imageView.toPixelX0(c),this.pin2Dy0.yPixel0,this.imageView.toPixelX0(g),this.pin2Dy1.yPixel0),this.doZoom(c,this.pin1Dy0.getYVal(),g,this.pin1Dy1.getYVal(),!1, +!1,!1,!0,!0)):a===this.pin2Dy01&&(this.imageView.setView0(this.pin2Dx0.xPixel0,this.imageView.toPixelY0(c),this.pin2Dx1.xPixel0,this.imageView.toPixelY0(g)),this.doZoom(this.imageView.toX(this.imageView.xPixel0),this.getScale().minY,this.imageView.toX(this.imageView.xPixel0+this.imageView.xPixels-1),this.getScale().maxY,!1,!1,!1,!1,!0))}}else{var h=Double.$valueOf(d).doubleValue();a.isXtype?(g=a===this.pin1Dx0||a===this.cur2Dx0||a===this.pin2Dx0?this.pin1Dx1.getXVal():this.pin1Dx0.getXVal(),this.doZoom(h, +0,g,0,!a.is2D,!1,!1,!0,!0)):a===this.cur2Dy?this.setCurrentSubSpectrum(w(h)):a===this.pin2Dy0||a===this.pin2Dy1?(g=a===this.pin2Dy0?this.pin2Dy1.yPixel0:this.pin2Dy0.yPixel0,this.imageView.setView0(this.pin2Dx0.xPixel0,this.imageView.subIndexToPixelY(w(h)),this.pin2Dx1.xPixel0,g)):(g=a===this.pin1Dy0?this.pin1Dy1.getYVal():this.pin1Dy0.getYVal(),this.doZoom(this.pin1Dx0.getXVal(),h,this.pin1Dx1.getXVal(),g,null==this.imageView,null==this.imageView,!1,!1,!0))}}catch(e){if(!z(e,Exception))throw e;}}}, +"JSV.common.PlotWidget");c(b,"removeAllHighlights",function(a){if(null==a)this.highlights.clear();else for(var d=this.highlights.size();0<=--d;)this.highlights.get(d).spectrum===a&&this.highlights.removeItemAt(d)},"JSV.common.Spectrum");c(b,"setCoordClicked",function(a,d,b){0==b&&(this.nextClickForSetPeak=null);if(Double.isNaN(d))return this.pd.coordClicked=null,this.pd.coordsClicked=null;this.pd.coordClicked=(new JSV.common.Coordinate).set(this.lastClickX=d,b);this.pd.coordsClicked=this.getSpectrum().getXYCoords(); +this.pd.xPixelClicked=this.lastPixelX=a;return this.pd.coordClicked},"~N,~N,~N");c(b,"setWidgets",function(a,d,b){if(a||null==this.pin1Dx0)null==this.zoomBox1D?this.newPins():this.resetPinPositions();this.setDerivedPins(d);this.setPinSliderPositions(b)},"~B,~N,~B");c(b,"newPins",function(){this.zoomBox1D=new JSV.common.PlotWidget("zoomBox1D");this.pin1Dx0=new JSV.common.PlotWidget("pin1Dx0");this.pin1Dx1=new JSV.common.PlotWidget("pin1Dx1");this.pin1Dy0=new JSV.common.PlotWidget("pin1Dy0");this.pin1Dy1= +new JSV.common.PlotWidget("pin1Dy1");this.pin1Dx01=new JSV.common.PlotWidget("pin1Dx01");this.pin1Dy01=new JSV.common.PlotWidget("pin1Dy01");this.cur1D2x1=new JSV.common.PlotWidget("cur1D2x1");this.cur1D2x1.color=JSV.common.ScriptToken.PEAKTABCOLOR;this.cur1D2x2=new JSV.common.PlotWidget("cur1D2x2");this.cur1D2x2.color=JSV.common.ScriptToken.PEAKTABCOLOR;if(null!=this.imageView){this.zoomBox2D=new JSV.common.PlotWidget("zoomBox2D");this.pin2Dx0=new JSV.common.PlotWidget("pin2Dx0");this.pin2Dx1=new JSV.common.PlotWidget("pin2Dx1"); +this.pin2Dy0=new JSV.common.PlotWidget("pin2Dy0");this.pin2Dy1=new JSV.common.PlotWidget("pin2Dy1");this.pin2Dx01=new JSV.common.PlotWidget("pin2Dx01");this.pin2Dy01=new JSV.common.PlotWidget("pin2Dy01");this.cur2Dx0=new JSV.common.PlotWidget("cur2Dx0");this.cur2Dx1=new JSV.common.PlotWidget("cur2Dx1");this.cur2Dy=new JSV.common.PlotWidget("cur2Dy");this.pin2Dy0.setY(0,this.imageView.toPixelY0(0));var a=this.getSpectrumAt(0).getSubSpectra().size();this.pin2Dy1.setY(a,this.imageView.toPixelY0(a))}this.setWidgetX(this.pin1Dx0, +this.getScale().minX);this.setWidgetX(this.pin1Dx1,this.getScale().maxX);this.setWidgetY(this.pin1Dy0,this.getScale().minY);this.setWidgetY(this.pin1Dy1,this.getScale().maxY);this.widgets=A(-1,[this.zoomBox1D,this.zoomBox2D,this.pin1Dx0,this.pin1Dx01,this.pin1Dx1,this.pin1Dy0,this.pin1Dy01,this.pin1Dy1,this.pin2Dx0,this.pin2Dx01,this.pin2Dx1,this.pin2Dy0,this.pin2Dy01,this.pin2Dy1,this.cur2Dx0,this.cur2Dx1,this.cur2Dy,this.cur1D2x1,this.cur1D2x2])});c(b,"setWidgetX",function(a,d){a.setX(d,this.toPixelX0(d))}, +"JSV.common.PlotWidget,~N");c(b,"setWidgetY",function(a,d){a.setY(d,this.toPixelY0(d))},"JSV.common.PlotWidget,~N");c(b,"resetPinsFromView",function(){null!=this.pin1Dx0&&(this.setWidgetX(this.pin1Dx0,this.getScale().minXOnScale),this.setWidgetX(this.pin1Dx1,this.getScale().maxXOnScale),this.setWidgetY(this.pin1Dy0,this.getScale().minYOnScale),this.setWidgetY(this.pin1Dy1,this.getScale().maxYOnScale))});c(b,"resetPinPositions",function(){this.resetX(this.pin1Dx0);this.resetY(this.pin1Dy0);this.resetY(this.pin1Dy1); +null==this.imageView?(null!=this.gs2dLinkedX&&this.resetX(this.cur1D2x1),null!=this.gs2dLinkedY&&this.resetX(this.cur1D2x2)):(this.pin2Dy0.setY(this.pin2Dy0.getYVal(),this.imageView.toPixelY0(this.pin2Dy0.getYVal())),this.pin2Dy1.setY(this.pin2Dy1.getYVal(),this.imageView.toPixelY0(this.pin2Dy1.getYVal())))});c(b,"resetX",function(a){this.setWidgetX(a,a.getXVal())},"JSV.common.PlotWidget");c(b,"resetY",function(a){this.setWidgetY(a,a.getYVal())},"JSV.common.PlotWidget");c(b,"setPinSliderPositions", +function(a){this.pin1Dx0.yPixel0=this.pin1Dx1.yPixel0=this.pin1Dx01.yPixel0=this.yPixel0-5;this.pin1Dx0.yPixel1=this.pin1Dx1.yPixel1=this.pin1Dx01.yPixel1=this.yPixel0;this.cur1D2x1.yPixel1=this.cur1D2x2.yPixel1=this.yPixel0-5;this.cur1D2x1.yPixel0=this.cur1D2x2.yPixel0=this.yPixel1+6;null==this.imageView?(this.pin1Dy0.xPixel0=this.pin1Dy1.xPixel0=this.pin1Dy01.xPixel0=this.xPixel1+5,this.pin1Dy0.xPixel1=this.pin1Dy1.xPixel1=this.pin1Dy01.xPixel1=this.xPixel1):(this.pin1Dy0.xPixel0=this.pin1Dy1.xPixel0= +this.pin1Dy01.xPixel0=this.imageView.xPixel1+15,this.pin1Dy0.xPixel1=this.pin1Dy1.xPixel1=this.pin1Dy01.xPixel1=this.imageView.xPixel1+10,this.pin2Dx0.yPixel0=this.pin2Dx1.yPixel0=this.pin2Dx01.yPixel0=this.yPixel0-5,this.pin2Dx0.yPixel1=this.pin2Dx1.yPixel1=this.pin2Dx01.yPixel1=this.yPixel0,this.pin2Dy0.xPixel0=this.pin2Dy1.xPixel0=this.pin2Dy01.xPixel0=this.imageView.xPixel1+5,this.pin2Dy0.xPixel1=this.pin2Dy1.xPixel1=this.pin2Dy01.xPixel1=this.imageView.xPixel1,this.cur2Dx0.yPixel0=this.cur2Dx1.yPixel0= +this.yPixel1+6,this.cur2Dx0.yPixel1=this.cur2Dx1.yPixel1=this.yPixel0-5,this.cur2Dx0.yPixel0=this.cur2Dx1.yPixel0=this.yPixel1+6,this.cur2Dx1.yPixel1=this.cur2Dx1.yPixel1=this.yPixel0-5,this.cur2Dy.xPixel0=a?w((this.xPixel1+this.imageView.xPixel0)/2):this.imageView.xPixel0-6,this.cur2Dy.xPixel1=this.imageView.xPixel1+5)},"~B");c(b,"setDerivedPins",function(a){this.widgetsAreSet=!0;null!=this.gs2dLinkedX&&this.cur1D2x1.setX(this.cur1D2x1.getXVal(),this.toPixelX(this.cur1D2x1.getXVal()));null!=this.gs2dLinkedY&& +this.cur1D2x2.setX(this.cur1D2x2.getXVal(),this.toPixelX(this.cur1D2x2.getXVal()));this.pin1Dx01.setX(0,w((this.pin1Dx0.xPixel0+this.pin1Dx1.xPixel0)/2));this.pin1Dy01.setY(0,w((this.pin1Dy0.yPixel0+this.pin1Dy1.yPixel0)/2));this.pin1Dx01.setEnabled(Math.min(this.pin1Dx0.xPixel0,this.pin1Dx1.xPixel0)>this.xPixel0||Math.max(this.pin1Dx0.xPixel0,this.pin1Dx1.xPixel0)Math.min(this.toPixelY(this.getScale().minY), +this.toPixelY(this.getScale().maxY))||Math.max(this.pin1Dy0.yPixel0,this.pin1Dy1.yPixel0)b&&(k=a,a=b,b=k);d>c&&(k=d,d=c,c=k);k=!g&&null!= +this.imageView&&(this.imageView.minZ!=d||this.imageView.maxZ!=c);if(this.zoomEnabled||k){if(e){if(!this.getScale().isInRangeX(a)&&!this.getScale().isInRangeX(b))return;this.getScale().isInRangeX(a)?this.getScale().isInRangeX(b)||(b=this.getScale().maxX):a=this.getScale().minX}this.pd.setTaintedAll();e=this.viewData.getScaleData();var x=E(this.nSpectra,0),p=E(this.nSpectra,0);this.graphsTemp.clear();var m=this.getSpectrumAt(0).getSubSpectra(),m=null==m||2==m.size();if(this.getSpectrumAt(0).is1D()&& +!m){if(this.graphsTemp.addLast(this.getSpectrum()),!JSV.common.ScaleData.setDataPointIndices(this.graphsTemp,a,b,3,x,p))return}else if(!JSV.common.ScaleData.setDataPointIndices(this.spectra,a,b,3,x,p))return;if(m=d==c)g=!k&&g?g=this.getScale().spectrumScaleFactor:1,1E-4>Math.abs(g-1)&&(d=this.getScale().minYOnScale,c=this.getScale().maxYOnScale);g=null;if(m||h)this.getCurrentView(),g=this.viewData.getNewScales(this.iSpectrumSelected,m,d,c);this.getView(a,b,d,c,x,p,e,g);this.setXPixelMovedTo(1E10, +1.7976931348623157E308,0,0);this.setWidgetX(this.pin1Dx0,a);this.setWidgetX(this.pin1Dx1,b);this.setWidgetY(this.pin1Dy0,d);this.setWidgetY(this.pin1Dy1,c);null==this.imageView?this.updateDialogs():(a=this.getSpectrumAt(0).getSubIndex(),b=this.imageView.fixSubIndex(a),b!=a&&this.setCurrentSubSpectrum(b),k&&this.update2dImage(!1));l&&this.addCurrentZoom()}},"~N,~N,~N,~N,~B,~B,~B,~B,~B");c(b,"updateDialogs",function(){this.updateDialog(JSV.common.Annotation.AType.PeakList,-1);this.updateDialog(JSV.common.Annotation.AType.Measurements, +-1)});c(b,"setCurrentSubSpectrum",function(a){var d=this.getSpectrumAt(0);a=d.setCurrentSubSpectrum(a);d.isForcedSubset()&&this.viewData.setXRangeForSubSpectrum(this.getSpectrum().getXYCoords());this.pd.notifySubSpectrumChange(a,this.getSpectrum())},"~N");c(b,"addCurrentZoom",function(){if(this.viewList.size()>this.currentZoomIndex+1)for(var a=this.viewList.size()-1;a>this.currentZoomIndex;a--)this.viewList.removeItemAt(a);this.viewList.addLast(this.viewData);this.currentZoomIndex++});c(b,"setZoomTo", +function(a){this.currentZoomIndex=a;this.viewData=this.viewList.get(a);this.resetPinsFromView()},"~N");c(b,"clearViews",function(){this.isLinked&&this.pd.clearLinkViews(this);this.setZoom(0,0,0,0);for(var a=this.viewList.size();1<=--a;)this.viewList.removeItemAt(a)});c(b,"drawAll",function(a,d,b,c,g,h,e){this.g2d=this.pd.g2d;this.gMain=a;var k=this.getSpectrumAt(0),l=k.getSubIndex();this.is2DSpectrum=!k.is1D()&&(this.isLinked||this.pd.getBoolean(JSV.common.ScriptToken.DISPLAY2D))&&(null!=this.imageView|| +this.get2DImage(k));null!=this.imageView&&h&&(this.pd.isPrinting&&this.g2d!==this.pd.g2d0&&this.g2d.newGrayScaleImage(a,this.image2D,this.imageView.imageWidth,this.imageView.imageHeight,this.imageView.getBuffer()),this.is2DSpectrum&&this.setPositionForFrame(c),this.draw2DImage());var x=this.stackSelected||!this.showAllStacked?this.iSpectrumSelected:-1,p=!this.showAllStacked||1==this.nSpectra||0<=x,k=null==this.imageView||this.pd.display1D,m=0<=x?1:0,j=this.getFixedSelectedSpectrumIndex();if(k&&h&& +(this.fillBox(a,this.xPixel0,this.yPixel0,this.xPixel1,this.yPixel1,JSV.common.ScriptToken.PLOTAREACOLOR),0>x)){p=!0;for(x=0;xm||0<=this.iSpectrumSelected))this.$haveSelectedSpectrum=!0;this.haveSingleYScale=this.showAllStacked&&1this.iSpectrumSelected||this.iSpectrumSelected==x&& +this.pd.isCurrentGraphSet(this))&&this.pd.titleOn&&!this.pd.titleDrawn)this.pd.drawTitle(a,this.height,this.width,this.pd.getDrawTitle(this.pd.isPrinting)),this.pd.titleDrawn=!0;this.haveSingleYScale&&x==j&&(this.pd.getBoolean(JSV.common.ScriptToken.YSCALEON)&&this.drawYScale(a,this),this.pd.getBoolean(JSV.common.ScriptToken.YUNITSON)&&this.drawYUnits(a))}var v=u.isContinuous(),w=(1g||2147483647==g)&&this.drawHandle(a,this.xPixelPlot1,this.yPixelPlot0,3,!1),0c){var e=b;b=c;c=e}b=this.fixX(b);c=this.fixX(c);3>c-b&&(b-=2,c+=2);null!=d&&d.setPixelRange(b,c);0==h?this.fillBox(a,b,this.yPixel0,c,this.yPixel0+this.yPixels,g):(this.fillBox(a,b,this.yPixel0+2,c,this.yPixel0+5,g),null!=d&&(b=w((b+c)/2),this.fillBox(a,b-1,this.yPixel0+2,b+1,this.yPixel0+2+h,g)))},"~O,JSV.common.PeakInfo,~N,~N,JSV.common.ScriptToken,~N"); +c(b,"drawIntegration",function(a,d,b,c,g){null!=g&&(this.haveIntegralDisplayed(d)&&this.drawPlot(a,d,this.spectra.get(d),!0,b,!1,g,!0,!1,!1),this.drawIntegralValues(a,d,b));d=this.getIntegrationRatios(d);null!=d&&this.drawAnnotations(a,d,JSV.common.ScriptToken.INTEGRALPLOTCOLOR)},"~O,~N,~N,~B,JSV.common.IntegralData,~B,~B");c(b,"getMeasurements",function(a,d){var b=this.getDialog(a,d);return null==b||0==b.getData().size()||!b.getState()?null:b.getData()},"JSV.common.Annotation.AType,~N");c(b,"drawPlot", +function(a,d,b,c,g,h,e,k,l,x){var p=null==e?b.getXYCoords():this.getIntegrationGraph(d).getXYCoords(),m=null!=e;e=m?e.getBitSet():null;k=l||null!=b.fillColor&&k;h=h?-2:m?-1:!this.allowStacking?0:d;this.setPlotColor(a,h);var j=!0,n=this.toPixelY(0);m?k=(new Boolean(k&n==this.fixY(n))).valueOf():n=this.fixY(n);var r=m||k?this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR):null;b=null==r||null==b.fillColor?r:b.fillColor;r=this.viewData.getStartingPointIndex(d);d=this.viewData.getEndingPointIndex(d); +if(c&&!x){d--;(x=(m||null!=this.pendingIntegral)&&this.g2d.canDoLineTo())&&this.g2d.doStroke(a,!0);var s=!1;for(c=r;c<=d;c++){var u=p[c],v=p[c+1],w=m?this.toPixelYint(u.getYVal()):this.toPixelY(u.getYVal());if(-2147483648!=w){var y=m?this.toPixelYint(v.getYVal()):this.toPixelY(v.getYVal());if(-2147483648!=y){var u=u.getXVal(),z=v.getXVal(),v=this.toPixelX(u),A=this.toPixelX(z),w=this.fixY(g+w),y=this.fixY(g+y);m&&(c==r&&(this.xPixelPlot1=v,this.yPixelPlot0=w),this.xPixelPlot0=A,this.yPixelPlot1=y); +if(!(A==v&&w==y))if(k&&l&&this.pendingIntegral.overlaps(u,z))null!=b&&(this.g2d.doStroke(a,!1),this.g2d.setGraphicsColor(a,b)),this.g2d.fillRect(a,Math.min(v,A),Math.min(n,w),Math.max(1,Math.abs(A-v)),Math.abs(n-w)),null!=b&&(this.g2d.doStroke(a,!1),this.g2d.doStroke(a,!0),s=!1,this.setPlotColor(a,h));else if(!(w==y&&w==this.yPixel0)&&(null!=e&&e.get(c)!=j&&(j=e.get(c),x&&s&&(this.g2d.doStroke(a,!1),this.g2d.doStroke(a,!0),s=!1),!this.pd.isPrinting&&0!=this.pd.integralShiftMode?this.setPlotColor(a, +0):j?this.setColorFromToken(a,JSV.common.ScriptToken.INTEGRALPLOTCOLOR):this.setPlotColor(a,-3)),!this.pd.isPrinting||j))s?this.g2d.lineTo(a,A,y):(this.g2d.drawLine(a,v,w,A,y),s=x)}}}x&&this.g2d.doStroke(a,!1)}else{for(c=r;c<=d;c++)l=p[c],y=this.toPixelY(l.getYVal()),-2147483648!=y&&(v=this.toPixelX(l.getXVal()),w=this.toPixelY(Math.max(this.getScale().minYOnScale,0)),w=this.fixY(g+w),y=this.fixY(g+y),w==y&&(w==this.yPixel0||w==this.yPixel1)||(x?this.g2d.fillRect(a,v-1,y-1,3,3):this.g2d.drawLine(a, +v,w,v,y)));!x&&this.getScale().isYZeroOnScale()&&(g+=this.toPixelY(this.getScale().spectrumYRef),g==this.fixY(g)&&this.g2d.drawLine(a,this.xPixel1,g,this.xPixel0,g))}},"~O,~N,JSV.common.Spectrum,~B,~N,~B,JSV.common.IntegralData,~B,~B,~B");c(b,"drawFrame",function(a,d,b,c,g){if(!this.pd.gridOn||this.pd.isPrinting)if(this.setColorFromToken(a,JSV.common.ScriptToken.GRIDCOLOR),this.g2d.drawRect(a,this.xPixel0,this.yPixel0,this.xPixels,this.yPixels),this.pd.isPrinting)return;this.setCurrentBoxColor(a); +g&&(0<=d&&(this.setPlotColor(a,d),this.fillArrow(a,3,this.xVArrows,w((this.yPixel00+this.yPixel11)/2)-9,!0),this.fillArrow(a,4,this.xVArrows,w((this.yPixel00+this.yPixel11)/2)+9,!0),this.setCurrentBoxColor(a)),this.fillArrow(a,3,this.xVArrows,w((this.yPixel00+this.yPixel11)/2)-9,!1),this.fillCircle(a,this.xVArrows,w((this.yPixel00+this.yPixel11)/2),!1),this.fillArrow(a,4,this.xVArrows,w((this.yPixel00+this.yPixel11)/2)+9,!1));if(null==this.imageView&&b){d=this.xPixel00+10;b=this.xPixel11-10;g=this.yPixel00+ +1;var h=this.yPixel11-2;this.g2d.drawLine(a,d,g,b,g);this.g2d.drawLine(a,b,g,b,h);this.g2d.drawLine(a,d,h,b,h);this.splitterX=this.closerX=-2147483648;this.drawBox(a,b-10,g,b,g+10,null);this.g2d.drawLine(a,b-10,g+10,b,g);this.g2d.drawLine(a,b,g+10,b-10,g);this.closerX=b-10;this.closerY=g;c&&(b-=10,this.fillBox(a,b-10,g,b,g+10,null),this.splitterX=b-10,this.splitterY=g)}},"~O,~N,~B,~B,~B");c(b,"drawGrid",function(a){if(this.pd.gridOn&&null==this.imageView){this.setColorFromToken(a,JSV.common.ScriptToken.GRIDCOLOR); +var b;if(Double.isNaN(this.getScale().firstX)){b=this.getScale().maxXOnScale+this.getScale().steps[0]/2;for(var c=this.getScale().minXOnScale;cm;m++){1==m&&JSV.common.ScaleData.fixScale(this.mapX);for(var j=1E10,n=x;n<=p;n+=this.getScale().steps[0]){var k=b.toPixelX(n),r=Double.$valueOf(n),s;switch(m){case 0:s=JU.DF.formatDecimalDbl(n,c);this.mapX.put(r,s);this.drawTick(a,k,g,h,b);k=Math.abs(j-n);j=this.getScale().minorTickCounts[0]; +if(0!=j){k/=j;for(s=1;sk;k++){1==k&&JSV.common.ScaleData.fixScale(this.mapX);for(var l=c.firstY;lMath.abs(a- +(c+5))&&5>Math.abs(b-(f+5))},"~N,~N,~N,~N");c(b,"setCoordStr",function(a,b){var c=JU.DF.formatDecimalDbl(a,this.getScale().precision[0]);this.pd.coordStr="("+c+(this.haveSingleYScale||0<=this.iSpectrumSelected?", "+JU.DF.formatDecimalDbl(b,this.getScale().precision[1]):"")+")";return c},"~N,~N");c(b,"setStartupPinTip",function(){if(null==this.pd.startupPinTip)return!1;this.pd.setToolTipText(this.pd.startupPinTip);this.pd.startupPinTip=null;return!0});c(b,"get2DYLabel",function(a,b){var c=this.getSpectrumAt(0).getSubSpectra().get(a); +return JU.DF.formatDecimalDbl(c.getY2DPPM(),b)+" PPM"+(c.y2DUnits.equals("HZ")?" ("+JU.DF.formatDecimalDbl(c.getY2D(),b)+" HZ) ":"")},"~N,~N");c(b,"isOnSpectrum",function(a,b,c){var f=null,g=!0,h=0>c;if(h){f=this.getDialog(JSV.common.Annotation.AType.Integration,-1);if(null==f)return!1;f=f.getData().getXYCoords();c=this.getFixedSelectedSpectrumIndex()}else{this.setScale(c);var e=this.spectra.get(c),f=e.xyCoords,g=e.isContinuous()}var e=c*G(this.yPixels*(this.yStackOffsetPercent/100)),k=this.viewData.getStartingPointIndex(c); +c=this.viewData.getEndingPointIndex(c);if(g)for(g=k;ge&&2>Math.abs(f-b))return!0;var k=g-a;if(2>Math.abs(k)&&2>Math.abs(h-b))return!0;var l=f-h;if(2a.size()&&null==this.lastAnnotation&&(this.lastAnnotation=this.getAnnotation((this.getScale().maxXOnScale+this.getScale().minXOnScale)/2,(this.getScale().maxYOnScale+this.getScale().minYOnScale)/2,b,!1,!1,0,0));var c=this.getAnnotation(a,this.lastAnnotation);if(null==c)return null;if(null== +this.annotations&&1==a.size()&&'"'==a.get(0).charAt(0))return c=c.text,this.getSpectrum().setTitle(c),c;this.lastAnnotation=c;this.addAnnotation(c,!1);return null},"JU.Lst,~S");c(b,"addHighlight",function(a,b,c,f){null==c&&(c=this.getSpectrumAt(0));a=K(JSV.common.GraphSet.Highlight,this,null,a,b,c,null==f?this.pd.getColor(JSV.common.ScriptToken.HIGHLIGHTCOLOR):f);this.highlights.contains(a)||this.highlights.addLast(a)},"~N,~N,JSV.common.Spectrum,javajs.api.GenericColor");c(b,"addPeakHighlight",function(a){for(var b= +this.spectra.size();0<=--b;){var c=this.spectra.get(b);this.removeAllHighlights(c);if(!(null==a||a.isClearAll()||c!==a.spectrum)){var f=a.toString();if(null!=f){var g=JU.PT.getQuotedAttribute(f,"xMin"),f=JU.PT.getQuotedAttribute(f,"xMax");if(null==g||null==f)break;g=JU.PT.parseFloat(g);f=JU.PT.parseFloat(f);if(Float.isNaN(g)||Float.isNaN(f))break;this.pd.addHighlight(this,g,f,c,200,140,140,100);c.setSelectedPeak(a);!this.getScale().isInRangeX(g)&&!(this.getScale().isInRangeX(f)||gthis.xPixelPlot1-a:20>a-this.xPixelPlot0},"~N,~B");c(b,"checkWidgetEvent",function(a,b,c){if(!this.widgetsAreSet)return!1; +this.widgetsAreSet=!1;if(c){if(2==this.pd.clickCount&&this.lastIntDragX!=a&&!this.is2dClick(a,b)){if(null==this.pendingMeasurement)return-1==this.iSpectrumClicked&&0<=this.iPreviousSpectrumClicked&&this.setSpectrumClicked(this.iPreviousSpectrumClicked),this.processPendingMeasurement(a,b,2),!0}else if(!this.is2dClick(a,b)&&(this.isOnSpectrum(a,b,-1)&&this.checkIntegral(this.toX(a),NaN,!1),this.lastIntDragX==a&&(this.pd.isIntegralDrag=!0,!this.checkIntegral(this.toX(a),this.toX(a),!1))))return!1;if(null!= +this.pendingMeasurement)return!0;c=this.getPinSelected(a,b);null==c&&(b=this.fixY(b),aMath.abs(this.toPixelX(this.pendingMeasurement.getXVal())-a)&&(this.pendingMeasurement=null),this.processPendingMeasurement(a,b,-2),this.setToolTipForPixels(a,b);else if(0!=this.pd.integralShiftMode)this.pd.integralShiftMode=0,this.zoomBox1D.xPixel1= +this.zoomBox1D.xPixel0;else{0<=this.iSpectrumMovedTo&&this.setScale(this.iSpectrumMovedTo);var c=this.pd.thisWidget;if(this.pd.isIntegralDrag)JSV.common.GraphSet.isGoodEvent(this.zoomBox1D,null,!0)&&this.checkIntegral(this.toX(this.zoomBox1D.xPixel0),this.toX(this.zoomBox1D.xPixel1),!0),this.zoomBox1D.xPixel1=this.zoomBox1D.xPixel0=0,this.pendingIntegral=null,this.pd.isIntegralDrag=!1;else if(c===this.zoomBox2D)JSV.common.GraphSet.isGoodEvent(this.zoomBox2D,null,!0)&&(this.imageView.setZoom(this.zoomBox2D.xPixel0, +this.zoomBox2D.yPixel0,this.zoomBox2D.xPixel1,this.zoomBox2D.yPixel1),this.zoomBox2D.xPixel1=this.zoomBox2D.xPixel0,this.doZoom(this.imageView.toX(this.imageView.xPixel0),this.getScale().minY,this.imageView.toX(this.imageView.xPixel0+this.imageView.xPixels-1),this.getScale().maxY,!1,!1,!1,!0,!0));else if(c===this.zoomBox1D){if(JSV.common.GraphSet.isGoodEvent(this.zoomBox1D,null,!0)){var c=this.zoomBox1D.xPixel1,f=this.pd.shiftPressed;this.doZoom(this.toX(this.zoomBox1D.xPixel0),f?this.toY(this.zoomBox1D.yPixel0): +0,this.toX(c),f?this.toY(this.zoomBox1D.yPixel1):0,!0,f,!0,!0,!0);this.zoomBox1D.xPixel1=this.zoomBox1D.xPixel0}}else(c===this.pin1Dx0||c===this.pin1Dx1||c===this.cur2Dx0||c===this.cur2Dx1)&&this.addCurrentZoom()}},"~N,~N");c(b,"mouseMovedEvent",function(a,b){if(1a?(this.bsSelected.clearAll(),this.setSpectrumClicked(-1)):(this.bsSelected.set(a), +this.setSpectrumClicked(1==this.bsSelected.cardinality()?a:-1),1a||(a=b.getPeakList().get(a),b.setSelectedPeak(a),this.setCoordClicked(a.getXPixel(),a.getX(),0),this.pd.notifyPeakPickedListeners(new JSV.common.PeakPickEvent(this.jsvp,this.pd.coordClicked,a)))},"~N");c(b,"scaleSelectedBy",function(a){for(var b=this.bsSelected.nextSetBit(0);0<=b;b=this.bsSelected.nextSetBit(b+1))this.viewData.scaleSpectrum(b, +a)},"~N");e(b,"toString",function(){return"gs: "+this.nSpectra+" "+this.spectra+" "+this.spectra.get(0).getFilePath()});c(b,"setXPointer",function(a,b){null!=a&&this.setSpectrumClicked(this.getSpectrumIndex(a));this.xValueMovedTo=this.lastClickX=b;this.lastPixelX=this.toPixelX(b);this.setXPixelMovedTo(b,1.7976931348623157E308,0,0);this.yValueMovedTo=NaN},"JSV.common.Spectrum,~N");c(b,"setXPointer2",function(a,b){null!=a&&this.setSpectrumClicked(this.getSpectrumIndex(a));this.setXPixelMovedTo(1.7976931348623157E308, +b,0,0)},"JSV.common.Spectrum,~N");c(b,"hasCurrentMeasurement",function(a){return null!=(a===JSV.common.Annotation.AType.Integration?this.selectedSpectrumIntegrals:this.selectedSpectrumMeasurements)},"JSV.common.Annotation.AType");c(b,"getDialog",function(a,b){-1==b&&(b=this.getCurrentSpectrumIndex());return null==this.dialogs||0>b?null:this.dialogs.get(a+"_"+b)},"JSV.common.Annotation.AType,~N");c(b,"removeDialog",function(a,b){null!=this.dialogs&&0<=a&&this.dialogs.remove(b+"_"+a)},"~N,JSV.common.Annotation.AType"); +c(b,"addDialog",function(a,b,c){null==this.dialogs&&(this.dialogs=new java.util.Hashtable);a=b+"_"+a;c.setGraphSetKey(a);this.dialogs.put(a,c);return c},"~N,JSV.common.Annotation.AType,JSV.api.AnnotationData");c(b,"removeDialog",function(a){var b=a.getGraphSetKey();this.dialogs.remove(b);a=a.getData();null!=a&&this.dialogs.put(b,a)},"JSV.dialog.JSVDialog");c(b,"getPeakListing",function(a,b,c){0>a&&(a=this.getCurrentSpectrumIndex());if(0>a)return null;var f=this.getDialog(JSV.common.Annotation.AType.PeakList, +-1);if(null==f){if(!c)return null;this.addDialog(a,JSV.common.Annotation.AType.PeakList,f=new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList,this.getSpectrum()))}f.getData().setPeakList(b,-2147483648,this.viewData.getScale());f.isDialog()&&f.setFields();return f.getData()},"~N,JSV.common.Parameters,~B");c(b,"setPeakListing",function(a){var b=this.getDialog(JSV.common.Annotation.AType.PeakList,-1),c=null!=b&&b.isDialog()?b:null;(null==a?null==c||!c.isVisible():a.booleanValue())?this.pd.showDialog(JSV.common.Annotation.AType.PeakList): +b.isDialog()&&b.setVisible(!1)},"Boolean");c(b,"haveIntegralDisplayed",function(a){a=this.getDialog(JSV.common.Annotation.AType.Integration,a);return null!=a&&a.getState()},"~N");c(b,"getIntegrationGraph",function(a){a=this.getDialog(JSV.common.Annotation.AType.Integration,a);return null==a?null:a.getData()},"~N");c(b,"setIntegrationRatios",function(a){var b=this.getFixedSelectedSpectrumIndex();null==this.aIntegrationRatios&&(this.aIntegrationRatios=Array(this.nSpectra));this.aIntegrationRatios[b]= +JSV.common.IntegralData.getIntegrationRatiosFromString(this.getSpectrum(),a)},"~S");c(b,"getIntegrationRatios",function(a){return null==this.aIntegrationRatios?null:this.aIntegrationRatios[a]},"~N");c(b,"integrate",function(a,b){var c=this.getSpectrumAt(a);if(null==b||!c.canIntegrate())return this.removeDialog(a,JSV.common.Annotation.AType.Integration),!1;this.addDialog(a,JSV.common.Annotation.AType.Integration,new JSV.common.IntegralData(c,b));return!0},"~N,JSV.common.Parameters");c(b,"getIntegration", +function(a,b,c){0>a&&(a=this.getCurrentSpectrumIndex());if(0>a)return null;var f=this.getDialog(JSV.common.Annotation.AType.Integration,-1);if(null==f){if(!c)return null;f=this.addDialog(a,JSV.common.Annotation.AType.Integration,new JSV.common.IntegralData(this.getSpectrum(),b))}return f.getData()},"~N,JSV.common.Parameters,~B");c(b,"getMeasurementInfo",function(a,b){var c;switch(a){case JSV.common.Annotation.AType.PeakList:c=this.getPeakListing(b,null,!1);break;case JSV.common.Annotation.AType.Integration:c= +this.getIntegration(b,null,!1);break;default:return null}if(null==c)return null;var f=new java.util.Hashtable;c.getInfo(f);return f},"JSV.common.Annotation.AType,~N");c(b,"getInfo",function(a,b){var c=new java.util.Hashtable;if("".equals(a))c.put("KEYS","viewInfo spectra");else if("viewInfo".equalsIgnoreCase(a))return this.getScale().getInfo(c);var f=new JU.Lst;c.put("spectra",f);for(var g=0;gthis.nSpectra)a=Array(this.nSpectra),System.arraycopy(b,0,a,0,this.nSpectra),b=a;else if(this.nSpectra>b.length){a=Array(this.nSpectra);var c=this.nSpectra-b.length;System.arraycopy(b,0,a,0,b.length);for(var f=0,b=b.length;f=this.plotColors.length?null:this.plotColors[a]},"~N");c(b,"setColorFromToken",function(a,b){null!=b&&this.g2d.setGraphicsColor(a,b===JSV.common.ScriptToken.PLOTCOLOR?this.plotColors[0]:this.pd.getColor(b))},"~O,JSV.common.ScriptToken"); +c(b,"setPlotColor",function(a,b){var c;switch(b){case -3:c=JSV.common.GraphSet.veryLightGrey;break;case -2:c=this.pd.BLACK;break;case -1:c=this.pd.getColor(JSV.common.ScriptToken.INTEGRALPLOTCOLOR);break;default:c=this.plotColors[b]}this.g2d.setGraphicsColor(a,c)},"~O,~N");c(b,"draw2DImage",function(){null!=this.imageView&&this.g2d.drawGrayScaleImage(this.gMain,this.image2D,this.imageView.xPixel0,this.imageView.yPixel0,this.imageView.xPixel0+this.imageView.xPixels-1,this.imageView.yPixel0+this.imageView.yPixels- +1,this.imageView.xView1,this.imageView.yView1,this.imageView.xView2,this.imageView.yView2)});c(b,"get2DImage",function(){this.imageView=new JSV.common.ImageView;this.imageView.set(this.viewList.get(0).getScale());if(!this.update2dImage(!0))return!1;this.imageView.resetZoom();return this.sticky2Dcursor=!0},"JSV.common.Spectrum");c(b,"update2dImage",function(a){this.imageView.set(this.viewData.getScale());var b=this.getSpectrumAt(0),c=this.imageView.get2dBuffer(b,!a);if(null==c)return this.imageView= +this.image2D=null,!1;a&&(c=this.imageView.adjustView(b,this.viewData),this.imageView.resetView());this.image2D=this.g2d.newGrayScaleImage(this.gMain,this.image2D,this.imageView.imageWidth,this.imageView.imageHeight,c);this.setImageWindow();return!0},"~B");c(b,"getAnnotation",function(a,b,c,f,g,e,j){return(new JSV.common.ColoredAnnotation).setCA(a,b,this.getSpectrum(),c,this.pd.BLACK,f,g,e,j)},"~N,~N,~S,~B,~B,~N,~N");c(b,"getAnnotation",function(a,b){return JSV.common.Annotation.getColoredAnnotation(this.g2d, +this.getSpectrum(),a,b)},"JU.Lst,JSV.common.Annotation");c(b,"fillBox",function(a,b,c,f,g,e){this.setColorFromToken(a,e);this.g2d.fillRect(a,Math.min(b,f),Math.min(c,g),Math.abs(b-f),Math.abs(c-g))},"~O,~N,~N,~N,~N,JSV.common.ScriptToken");c(b,"drawBox",function(a,b,c,f,g,e){this.setColorFromToken(a,e);this.g2d.drawRect(a,Math.min(b,f),Math.min(c,g),Math.abs(b-f)-1,Math.abs(c-g)-1)},"~O,~N,~N,~N,~N,JSV.common.ScriptToken");c(b,"drawHandle",function(a,b,c,f,g){g?this.g2d.drawRect(a,b-f,c-f,2*f,2*f): +this.g2d.fillRect(a,b-f,c-f,2*f+1,2*f+1)},"~O,~N,~N,~N,~B");c(b,"setCurrentBoxColor",function(a){this.g2d.setGraphicsColor(a,this.pd.BLACK)},"~O");c(b,"fillArrow",function(a,b,c,f,g){var e=1;switch(b){case 1:case 3:e=-1}c=E(-1,[c-5,c-5,c+5,c+5,c+8,c,c-8]);f=E(-1,[f+5*e,f-e,f-e,f+5*e,f+5*e,f+10*e,f+5*e]);switch(b){case 1:case 2:g?this.g2d.fillPolygon(a,f,c,7):this.g2d.drawPolygon(a,f,c,7);break;case 3:case 4:g?this.g2d.fillPolygon(a,c,f,7):this.g2d.drawPolygon(a,c,f,7)}},"~O,~N,~N,~N,~B");c(b,"fillCircle", +function(a,b,c,f){f?this.g2d.fillCircle(a,b-4,c-4,8):this.g2d.drawCircle(a,b-4,c-4,8)},"~O,~N,~N,~B");c(b,"setAnnotationColor",function(a,b,c){null!=c?this.setColorFromToken(a,c):(c=null,C(b,"JSV.common.ColoredAnnotation")&&(c=b.getColor()),null==c&&(c=this.pd.BLACK),this.g2d.setGraphicsColor(a,c))},"~O,JSV.common.Annotation,JSV.common.ScriptToken");c(b,"setSolutionColor",function(a,b,c){for(var f=0;f=this.xPixel0-5&&athis.averageGray)||0.3c++;)b.scaleSpectrum(-2,f?2:0.5),this.set(b.getScale()),this.get2dBuffer(a,!1);return this.buf2d},"JSV.common.Spectrum,JSV.common.ViewData");c(b,"getBuffer",function(){return this.buf2d});c(b,"setMinMaxY",function(a){a=a.getSubSpectra();var b=a.get(0);this.maxY= +b.getY2D();this.minY=a.get(a.size()-1).getY2D();b.y2DUnits.equalsIgnoreCase("Hz")&&(this.maxY/=b.freq2dY,this.minY/=b.freq2dY);this.setScaleData()},"JSV.common.Spectrum");c(b,"setScaleData",function(){this.scaleData.minY=this.minY;this.scaleData.maxY=this.maxY;this.scaleData.setYScale(this.toY(this.yPixel0),this.toY(this.yPixel1),!1,!1)});e(b,"fixX",function(a){return athis.xPixel1?this.xPixel1:a},"~N");e(b,"fixY",function(a){return JSV.common.Coordinate.intoRange(a,this.yPixel0, +this.yPixel1)},"~N");e(b,"getScale",function(){return this.scaleData});e(b,"toX",function(a){return this.maxX+(this.minX-this.maxX)*this.toImageX(this.fixX(a))/(this.imageWidth-1)},"~N");e(b,"toY",function(a){a=this.toSubspectrumIndex(a);return this.maxY+(this.minY-this.maxY)*a/(this.imageHeight-1)},"~N");e(b,"toPixelX",function(a){var b=this.toX(this.xPixel0),c=this.toX(this.xPixel1);return this.xPixel0+w((a-b)/(c-b)*(this.xPixels-1))},"~N");e(b,"toPixelY",function(a){return w(this.yPixel0+(a-this.scaleData.minYOnScale)/ +(this.scaleData.maxYOnScale-this.scaleData.minYOnScale)*this.yPixels)},"~N");e(b,"getXPixels",function(){return this.xPixels});e(b,"getYPixels",function(){return this.yPixels});e(b,"getXPixel0",function(){return this.xPixel0})});r("JSV.common");v(["JSV.common.Measurement"],"JSV.common.Integral",null,function(){var b=u(JSV.common,"Integral",JSV.common.Measurement);c(b,"setInt",function(a,b,c,f,g,e){this.setA(a,b,c,"",!1,!1,0,6);this.setPt2(g,e);this.setValue(f);return this},"~N,~N,JSV.common.Spectrum,~N,~N,~N")}); +r("JSV.common");s=u(JSV.common,"IntegralComparator",null,java.util.Comparator);e(s,"compare",function(b,a){return b.getXVal()a.getXVal()?1:0},"JSV.common.Measurement,JSV.common.Measurement");r("JSV.common");v(["java.lang.Enum","JSV.common.MeasurementData","$.IntegralComparator"],"JSV.common.IntegralData","java.util.Collections $.StringTokenizer JU.AU $.BS $.DF $.Lst $.PT JSV.common.Annotation $.Coordinate $.Integral $.ScriptToken".split(" "),function(){var b=j(function(){this.intRange= +this.percentOffset=this.percentMinY=0;this.normalizationFactor=1;this.integralTotal=this.offset=this.percentRange=0;this.haveRegions=!1;this.xyCoords=null;p(this,arguments)},JSV.common,"IntegralData",JSV.common.MeasurementData);m(b,function(a,b,c,g){B(this,JSV.common.IntegralData,[JSV.common.Annotation.AType.Integration,g]);this.percentMinY=a;this.percentOffset=b;this.percentRange=c;this.calculateIntegral()},"~N,~N,~N,JSV.common.Spectrum");m(b,function(a,b){B(this,JSV.common.IntegralData,[JSV.common.Annotation.AType.Integration, +a]);null==b?this.autoIntegrate():(this.percentOffset=b.integralOffset,this.percentRange=b.integralRange,this.calculateIntegral())},"JSV.common.Spectrum,JSV.common.Parameters");c(b,"getPercentMinimumY",function(){return this.percentMinY});c(b,"getPercentOffset",function(){return this.percentOffset});c(b,"getIntegralFactor",function(){return this.intRange});c(b,"update",function(a){this.update(a.integralMinY,a.integralOffset,a.integralRange)},"JSV.common.Parameters");c(b,"update",function(a,b,c){var g= +this.percentRange;if(!(0>=c||c==this.percentRange&&b==this.percentOffset)){this.percentOffset=b;this.percentRange=c;this.checkRange();a=c/100/this.integralTotal;b/=100;for(var e=0;eb)return null;var c=this.removeItemAt(b),b=c.getXVal(),c=c.getXVal2();this.addIntegralRegion(b,a);return this.addIntegralRegion(a,c)},"~N");e(b,"setSpecShift",function(a){JSV.common.Coordinate.shiftX(this.xyCoords,a);for(var b=this.size();1<=--b;)this.get(b).addSpecShift(a)}, +"~N");c(b,"addMarks",function(a){a=JU.PT.rep(" "+a,","," ");a=JU.PT.rep(a," -"," #");a=JU.PT.rep(a,"--","-#");a=a.$replace("-","^");a=a.$replace("#","-");a=JSV.common.ScriptToken.getTokens(a);for(var b=0;be)){var j=c.indexOf(":");j>e&&(g=Double.$valueOf(c.substring(j+1).trim()).doubleValue(),c=c.substring(0,j).trim());var k=Double.$valueOf(c.substring(0,e).trim()).doubleValue(),l=Double.$valueOf(c.substring(e+1).trim()).doubleValue();0== +l&&0==k&&this.clear();if(l!=k){var m=this.addIntegralRegion(Math.max(l,k),Math.min(l,k));null!=m&&0j&&(j=this.integralTotal);this.integralTotal=j-e;this.intRange=this.percentRange/100/this.integralTotal;this.offset=this.percentOffset/100;e=0;for(c=a.length;0<=--c;)g=a[c].getYVal(),e+=g-b,this.xyCoords[c]=(new JSV.common.Coordinate).set(a[c].getXVal(),e*this.intRange+this.offset);return this.xyCoords});c(b,"checkRange",function(){this.percentOffset=Math.max(5,this.percentOffset);this.percentRange=Math.max(10,this.percentRange)});b.getIntegrationRatiosFromString=c(b,"getIntegrationRatiosFromString", +function(a,b){for(var c=new JU.Lst,g=new java.util.StringTokenizer(b,",");g.hasMoreTokens();){var e=g.nextToken(),e=new java.util.StringTokenizer(e,":"),e=(new JSV.common.Annotation).setA(Double.parseDouble(e.nextToken()),0,a,e.nextToken(),!0,!1,0,0);c.addLast(e)}return c},"JSV.common.Spectrum,~S");c(b,"getXYCoords",function(){return this.xyCoords});c(b,"getPercentYValueAt",function(a){return 100*this.getYValueAt(a)},"~N");c(b,"dispose",function(){this.xyCoords=this.spec=null});c(b,"setSelectedIntegral", +function(a,b){var c=a.getValue();this.factorAllIntegrals(0>=b?1/this.normalizationFactor:b/c,0>=b)},"JSV.common.Measurement,~N");c(b,"factorAllIntegrals",function(a,b){for(var c=0;ca&&(b-=this.percentOffset);0>a?this.update(0,this.percentOffset,b):this.update(0,b,this.percentRange)},"~N,~N,~N,~N");c(b,"autoIntegrate",function(){null==this.xyCoords&&this.calculateIntegral();if(0!= +this.xyCoords.length){this.clear();for(var a=-1,b=0,c=this.xyCoords[this.xyCoords.length-1].getYVal(),g=this.xyCoords.length-1;0<=--g;){var e=this.xyCoords[g].getYVal();b++;1E-4>e-c&&0>a?ea?(a=g+Math.min(b,20),c=e,b=0):1E-4>e-c?(1==b&&(c=e),20<=b&&(this.addIntegralRegion(this.xyCoords[a].getXVal(),this.xyCoords[g].getXVal()),a=-1,c=e,b=0)):(b=0,c=e)}a=this.spec.getHydrogenCount();0c&&le?(f=k,e=l):l>c&&l-c>j&&(g=k,j=l-c)}if(0>f){if(0>g)return-1;f=g}return f},"JSV.common.Coordinate,~N");c(b,"getPercentYValueAt", +function(a){return!this.isContinuous()?NaN:this.getYValueAt(a)},"~N");c(b,"getYValueAt",function(a){return JSV.common.Coordinate.getYValueAt(this.xyCoords,a)},"~N");c(b,"setUserYFactor",function(a){this.userYFactor=a},"~N");c(b,"getUserYFactor",function(){return this.userYFactor});c(b,"getConvertedSpectrum",function(){return this.convertedSpectrum});c(b,"setConvertedSpectrum",function(a){this.convertedSpectrum=a},"JSV.common.Spectrum");b.taConvert=c(b,"taConvert",function(a,b){if(!a.isContinuous())return a; +switch(b){case JSV.common.Spectrum.IRMode.NO_CONVERT:return a;case JSV.common.Spectrum.IRMode.TO_ABS:if(!a.isTransmittance())return a;break;case JSV.common.Spectrum.IRMode.TO_TRANS:if(!a.isAbsorbance())return a}var c=a.getConvertedSpectrum();return null!=c?c:a.isAbsorbance()?JSV.common.Spectrum.toT(a):JSV.common.Spectrum.toA(a)},"JSV.common.Spectrum,JSV.common.Spectrum.IRMode");b.toT=c(b,"toT",function(a){if(!a.isAbsorbance())return null;var b=a.getXYCoords(),c=Array(b.length);JSV.common.Coordinate.isYInRange(b, +0,4)||(b=JSV.common.Coordinate.normalise(b,0,4));for(var f=0;f=a?1:Math.pow(10,-a)},"~N");b.log10=c(b,"log10",function(a){return Math.log(a)/Math.log(10)},"~N");b.process=c(b,"process",function(a,b){if(b===JSV.common.Spectrum.IRMode.TO_ABS||b===JSV.common.Spectrum.IRMode.TO_TRANS)for(var c=0;cN&&(F=1E5*Integer.parseInt(y),y=null);if(null!=y&&(F=1E5*Integer.parseInt(Q=y.substring(0,N)),y=y.substring(N+1),N= +y.indexOf("."),0>N&&(F+=1E3*Integer.parseInt(y),y=null),null!=y)){var pa=y.substring(0,N);s=Q+("."+pa);F+=1E3*Integer.parseInt(pa);y=y.substring(N+1);N=y.indexOf("_");0<=N&&(y=y.substring(0,N));N=y.indexOf(" ");0<=N&&(y=y.substring(0,N));F+=Integer.parseInt(y)}}catch(qa){if(!z(qa,"NumberFormatException"))throw qa;}JSV.common.JSVersion.majorVersion=s;JSV.common.JSVersion.versionInt=F;r("JSV.common");v(["java.util.Hashtable"],"JSV.common.JSVFileManager","java.io.BufferedInputStream $.BufferedReader $.InputStreamReader $.StringReader java.net.URL JU.AU $.BS $.Encoding $.JSJSONParser $.P3 $.PT $.SB JSV.common.JSVersion $.JSViewer JSV.exception.JSVException JU.Logger".split(" "), +function(){var b=u(JSV.common,"JSVFileManager",null);c(b,"isApplet",function(){return null!=JSV.common.JSVFileManager.appletDocumentBase});b.getFileAsString=c(b,"getFileAsString",function(a){if(null==a)return null;var b,c=new JU.SB;try{b=JSV.common.JSVFileManager.getBufferedReaderFromName(a,null);for(var f;null!=(f=b.readLine());)c.append(f),c.appendC("\n");b.close()}catch(g){if(z(g,Exception))return null;throw g;}return c.toString()},"~S");b.getBufferedReaderForInputStream=c(b,"getBufferedReaderForInputStream", +function(a){try{return new java.io.BufferedReader(new java.io.InputStreamReader(a,"UTF-8"))}catch(b){if(z(b,Exception))return null;throw b;}},"java.io.InputStream");b.getBufferedReaderForStringOrBytes=c(b,"getBufferedReaderForStringOrBytes",function(a){return null==a?null:new java.io.BufferedReader(new java.io.StringReader("string"==typeof a?a:String.instantialize(a)))},"~O");b.getBufferedReaderFromName=c(b,"getBufferedReaderFromName",function(a,b){if(null==a)throw new JSV.exception.JSVException("Cannot find "+ +a);JU.Logger.info("JSVFileManager getBufferedReaderFromName "+a);var c=JSV.common.JSVFileManager.getFullPathName(a);c.equals(a)||JU.Logger.info("JSVFileManager getBufferedReaderFromName "+c);return JSV.common.JSVFileManager.getUnzippedBufferedReaderFromName(c,b)},"~S,~S");b.getFullPathName=c(b,"getFullPathName",function(a){try{if(null==JSV.common.JSVFileManager.appletDocumentBase){if(JSV.common.JSVFileManager.isURL(a)){var b=new java.net.URL(X("java.net.URL"),a,null);return b.toString()}return JSV.common.JSVFileManager.viewer.apiPlatform.newFile(a).getFullPath()}if(1== +a.indexOf(":\\")||1==a.indexOf(":/"))a="file:///"+a;else if(a.startsWith("cache://"))return a;b=new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase,a,null);return b.toString()}catch(c){if(z(c,Exception))throw new JSV.exception.JSVException("Cannot create path for "+a);throw c;}},"~S");b.isURL=c(b,"isURL",function(a){for(var b=JSV.common.JSVFileManager.urlPrefixes.length;0<=--b;)if(a.startsWith(JSV.common.JSVFileManager.urlPrefixes[b]))return!0;return!1},"~S");b.urlTypeIndex=c(b,"urlTypeIndex", +function(a){for(var b=0;ba||4==a},"~S");b.getUnzippedBufferedReaderFromName=c(b,"getUnzippedBufferedReaderFromName",function(a){var b=null;0<=a.indexOf("|")&&(b=JU.PT.split(a,"|"),null!=b&&0=f.length&&(f=JU.AU.ensureLengthByte(f,2*e)),System.arraycopy(c,0,f,e-g,g)):b.write(c,0,g);a.close();return null==b?JU.AU.arrayCopyByte(f,e):e+" bytes"}catch(j){if(z(j,Exception))throw new JSV.exception.JSVException(j.toString());throw j;}},"java.io.BufferedInputStream,JU.OC");b.postByteArray=c(b,"postByteArray", +function(a,b){var c=null;try{c=JSV.common.JSVFileManager.getInputStream(a,!1,b)}catch(f){if(z(f,Exception))c=f.toString();else throw f;}if("string"==typeof c)return c;try{c=JSV.common.JSVFileManager.getStreamAsBytes(c,null)}catch(g){if(z(g,"JSV.exception.JSVException"))try{c.close()}catch(e){if(!z(e,Exception))throw e;}else throw g;}return null==c?"":JSV.common.JSVFileManager.fixUTF(c)},"~S,~A");b.getUTFEncoding=c(b,"getUTFEncoding",function(a){return 3<=a.length&&239==a[0]&&187==a[1]&&191==a[2]? +JU.Encoding.UTF8:4<=a.length&&0==a[0]&&0==a[1]&&254==a[2]&&255==a[3]?JU.Encoding.UTF_32BE:4<=a.length&&255==a[0]&&254==a[1]&&0==a[2]&&0==a[3]?JU.Encoding.UTF_32LE:2<=a.length&&255==a[0]&&254==a[1]?JU.Encoding.UTF_16LE:2<=a.length&&254==a[0]&&255==a[1]?JU.Encoding.UTF_16BE:JU.Encoding.NONE},"~A");b.fixUTF=c(b,"fixUTF",function(a){var b=JSV.common.JSVFileManager.getUTFEncoding(a);if(b!==JU.Encoding.NONE)try{var c=String.instantialize(a,b.name().$replace("_","-"));switch(b){case JU.Encoding.UTF8:case JU.Encoding.UTF_16BE:case JU.Encoding.UTF_16LE:c= +c.substring(1)}return c}catch(f){if(z(f,"java.io.IOException"))JU.Logger.error("fixUTF error "+f);else throw f;}return String.instantialize(a)},"~A");b.getInputStream=c(b,"getInputStream",function(a,b,c){var f=JSV.common.JSVFileManager.isURL(a),g=null!=JSV.common.JSVFileManager.appletDocumentBase,e=null,e=null,j;if(f&&0<=(j=a.indexOf("?POST?")))e=a.substring(j+6),a=a.substring(0,j);if(g||f){var k;try{k=new java.net.URL(JSV.common.JSVFileManager.appletDocumentBase,a,null)}catch(l){if(z(l,Exception))throw new JSV.exception.JSVException("Cannot read "+ +a);throw l;}JU.Logger.info("JSVFileManager opening URL "+k+(null==e?"":" with POST of "+e.length+" bytes"));e=JSV.common.JSVFileManager.viewer.apiPlatform.getURLContents(k,c,e,!1)}else b&&JU.Logger.info("JSVFileManager opening file "+a),e=JSV.common.JSVFileManager.viewer.apiPlatform.getBufferedFileInputStream(a);if("string"==typeof e)throw new JSV.exception.JSVException(e);return e},"~S,~B,~A");b.getNMRSimulationJCampDX=c(b,"getNMRSimulationJCampDX",function(a){var b=0,c=null,f=JSV.common.JSVFileManager.getSimulationType(a); +a.startsWith(f)&&(a=a.substring(f.length+1));var g=a.startsWith("MOL=");g&&(a=a.substring(4),b=a.indexOf("/n__Jmol"),0\n";if(j){for(var b=b.get("spectrum13C"),j=b.get("jcamp").get("value"),p=b.get("predCSNuc"),n=new JU.SB,r=p.size();0<=--r;)b= +p.get(r),n.append("\n"); +n.append("");m+=n.toString()}else{m=JU.PT.rep(b.get("xml"),"",m);if(null!=l){n=new JU.SB;m=JU.PT.split(m,' atoms="');n.append(m[0]);for(r=1;r<",">\n<");m=JU.PT.rep(m,'\\"','"');j=b.get("jcamp")}JU.Logger.debugging&&JU.Logger.info(m);JSV.common.JSVFileManager.cachePut("xml",m);j="##TITLE="+(g?"JMOL SIMULATION/"+ +f:a)+"\n"+j.substring(j.indexOf("\n##")+1);b=c.indexOf("\n");b=c.indexOf("\n",b+1);0\n"))return JU.Logger.error(a),!0;if(0<=a.indexOf("this.scriptLevelCount&&this.runScriptNow(m)}break;case JSV.common.ScriptToken.SELECT:this.execSelect(e);break; +case JSV.common.ScriptToken.SPECTRUM:case JSV.common.ScriptToken.SPECTRUMNUMBER:this.setSpectrum(e)||(b=!1);break;case JSV.common.ScriptToken.STACKOFFSETY:this.execOverlayOffsetY(JU.PT.parseInt(""+JU.PT.parseFloat(e)));break;case JSV.common.ScriptToken.TEST:this.si.siExecTest(e);break;case JSV.common.ScriptToken.OVERLAY:case JSV.common.ScriptToken.VIEW:this.execView(e,!0);break;case JSV.common.ScriptToken.HIGHLIGHT:b=this.highlight(g);break;case JSV.common.ScriptToken.FINDX:case JSV.common.ScriptToken.GETSOLUTIONCOLOR:case JSV.common.ScriptToken.INTEGRATION:case JSV.common.ScriptToken.INTEGRATE:case JSV.common.ScriptToken.IRMODE:case JSV.common.ScriptToken.LABEL:case JSV.common.ScriptToken.LINK:case JSV.common.ScriptToken.OVERLAYSTACKED:case JSV.common.ScriptToken.PRINT:case JSV.common.ScriptToken.SETPEAK:case JSV.common.ScriptToken.SETX:case JSV.common.ScriptToken.SHIFTX:case JSV.common.ScriptToken.SHOWERRORS:case JSV.common.ScriptToken.SHOWMEASUREMENTS:case JSV.common.ScriptToken.SHOWMENU:case JSV.common.ScriptToken.SHOWKEY:case JSV.common.ScriptToken.SHOWPEAKLIST:case JSV.common.ScriptToken.SHOWINTEGRATION:case JSV.common.ScriptToken.SHOWPROPERTIES:case JSV.common.ScriptToken.SHOWSOURCE:case JSV.common.ScriptToken.YSCALE:case JSV.common.ScriptToken.WRITE:case JSV.common.ScriptToken.ZOOM:if(this.isClosed()){b= +!1;break}switch(k){case JSV.common.ScriptToken.FINDX:this.pd().findX(null,Double.parseDouble(e));break;case JSV.common.ScriptToken.GETSOLUTIONCOLOR:this.show("solutioncolor"+e.toLowerCase());break;case JSV.common.ScriptToken.INTEGRATION:case JSV.common.ScriptToken.INTEGRATE:this.execIntegrate(e);break;case JSV.common.ScriptToken.IRMODE:this.execIRMode(e);break;case JSV.common.ScriptToken.LABEL:this.pd().addAnnotation(JSV.common.ScriptToken.getTokens(e));break;case JSV.common.ScriptToken.LINK:this.pd().linkSpectra(JSV.common.PanelData.LinkMode.getMode(e)); +break;case JSV.common.ScriptToken.OVERLAYSTACKED:this.pd().splitStack(!JSV.common.Parameters.isTrue(e));break;case JSV.common.ScriptToken.PRINT:f=this.execWrite(null);break;case JSV.common.ScriptToken.SETPEAK:case JSV.common.ScriptToken.SETX:case JSV.common.ScriptToken.SHIFTX:this.execShiftSpectrum(k,g);break;case JSV.common.ScriptToken.SHOWERRORS:this.show("errors");break;case JSV.common.ScriptToken.SHOWINTEGRATION:this.pd().showAnnotation(JSV.common.Annotation.AType.Integration,JSV.common.Parameters.getTFToggle(e)); +break;case JSV.common.ScriptToken.SHOWKEY:this.setOverlayLegendVisibility(JSV.common.Parameters.getTFToggle(e),!0);break;case JSV.common.ScriptToken.SHOWMEASUREMENTS:this.pd().showAnnotation(JSV.common.Annotation.AType.Measurements,JSV.common.Parameters.getTFToggle(e));break;case JSV.common.ScriptToken.SHOWMENU:this.showMenu(-2147483648,0);break;case JSV.common.ScriptToken.SHOWPEAKLIST:this.pd().showAnnotation(JSV.common.Annotation.AType.PeakList,JSV.common.Parameters.getTFToggle(e));break;case JSV.common.ScriptToken.SHOWPROPERTIES:this.show("properties"); +break;case JSV.common.ScriptToken.SHOWSOURCE:this.show("source");break;case JSV.common.ScriptToken.YSCALE:this.setYScale(e);break;case JSV.common.ScriptToken.WINDOW:this.si.siNewWindow(JSV.common.Parameters.isTrue(e),!1);break;case JSV.common.ScriptToken.WRITE:f=this.execWrite(e);break;case JSV.common.ScriptToken.ZOOM:b=this.execZoom(e)}}}catch(p){if(z(p,Exception))f=p.toString(),JU.Logger.error(p.toString()),b=!1,--c;else throw p;}}}this.scriptLevelCount--;this.si.siExecScriptComplete(f,!0);return b}, +"~S");c(b,"execShiftSpectrum",function(a,b){var c=JSV.common.ScriptToken.getTokens(b),f=NaN,g=NaN;switch(c.size()){case 2:g=c.get(1);g.equals("")&&(g="?");g=g.equalsIgnoreCase("NONE")?1.7976931348623157E308:g.equalsIgnoreCase("?")?NaN:Double.parseDouble(g);break;case 3:f=Double.parseDouble(c.get(1));g=Double.parseDouble(c.get(2));break;default:Double.parseDouble("")}c=0;switch(a){case JSV.common.ScriptToken.SETPEAK:c=1;break;case JSV.common.ScriptToken.SETX:c=2;break;case JSV.common.ScriptToken.SHIFTX:c= +3;Double.isNaN(g)&&Double.parseDouble("");break;default:return}this.pd().shiftSpectrum(c,f,g)},"JSV.common.ScriptToken,~S");c(b,"execClose",function(a){var b=!a.startsWith("!");b||(a=a.substring(1));this.close(JU.PT.trimQuotes(a));(!b||0==this.panelNodes.size())&&this.si.siValidateAndRepaint(!0)},"~S");c(b,"checkOvelayInterface",function(a){return a.equalsIgnoreCase("single")||a.equalsIgnoreCase("overlay")},"~S");c(b,"execPeak",function(a){try{var b=JSV.common.ScriptToken.getTokens(JU.PT.rep(a,"#", +"INDEX="));a=' type="'+b.get(0).toUpperCase()+'" _match="'+JU.PT.trimQuotes(b.get(1).toUpperCase())+'"';2a.indexOf("="))this.isClosed()||this.pd().getPeakListing(null,c);else{var c=JSV.common.ScriptToken.getTokens(a),f=b.peakListThreshold, +g=b.peakListInterpolation;try{for(var e=c.size();0<=--e;){var j=c.get(e),k=j.indexOf("=");if(!(0>=k)){var l=j.substring(0,k);a=j.substring(k+1);l.startsWith("thr")?f=Double.$valueOf(a).doubleValue():l.startsWith("int")&&(g=a.equalsIgnoreCase("none")?"NONE":"parabolic")}}b.peakListThreshold=f;b.peakListInterpolation=g;this.isClosed()||this.pd().getPeakListing(b,Boolean.TRUE)}catch(m){if(!z(m,Exception))throw m;}}},"~S");c(b,"highlight",function(a){var b=JSV.common.ScriptToken.getTokens(a),c=b.size(); +switch(c){case 3:case 5:case 6:case 7:break;case 2:case 4:if(b.get(c-1).equalsIgnoreCase("OFF"))break;default:return!1}if(!this.isClosed()){a=JU.PT.parseFloat(1b&&(b=150),0<=g&&(0<=e&&0<=j)&&this.pd().addHighlight(null, +a,f,null,g,e,j,b));this.repaint(!0)}return!0},"~S");c(b,"getRGB",function(a){a=JU.PT.parseFloat(a);return G(Float.isNaN(a)?-1:1JSV "+a);if(0>a.indexOf(">toJSV>> "+a);var b=JU.PT.getQuotedAttribute(a,"sourceID"),c,f,g,e;if(null==b){f=JU.PT.getQuotedAttribute(a,"file");g=JU.PT.getQuotedAttribute(a, +"index");if(null==f||null==g)return;f=JU.PT.rep(f,"#molfile","");c=JU.PT.getQuotedAttribute(a,"model");b=JU.PT.getQuotedAttribute(a,"src");e=null!=b&&b.startsWith("Jmol")?null:this.returnFromJmolModel;if(null!=c&&null!=e&&!c.equals(e)){JU.Logger.info("JSV ignoring model "+c+"; should be "+e);return}this.returnFromJmolModel=null;if(0==this.panelNodes.size()||!this.checkFileAlreadyLoaded(f))JU.Logger.info("file "+f+" not found -- JSViewer closing all and reopening"),this.si.siSyncLoad(f);a=JU.PT.getQuotedAttribute(a, +"type");e=null}else f=null,g=c=b,e=","+JU.PT.getQuotedAttribute(a,"atom")+",",a="ID";g=this.selectPanelByPeak(f,g,e);e=this.pd();e.selectSpectrum(f,a,c,!0);this.si.siSendPanelChange();e.addPeakHighlight(g);this.repaint(!0);(null==b||null!=g&&null!=g.getAtoms())&&this.si.syncToJmol(this.jmolSelect(g))}},"~S");c(b,"syncPeaksAfterSyncScript",function(){var a=this.currentSource;if(null!=a)try{var b="file="+JU.PT.esc(a.getFilePath()),c=a.getSpectra().get(0).getPeakList(),f=new JU.SB;f.append("[");for(var g= +c.size(),a=0;aa.indexOf("*")){f=a.$plit(" ");a=new JU.SB;for(var j=0;j");0=c+1&&(c=w(Math.floor(b)));this.fileCount=c;System.gc();JU.Logger.debugging&& +JU.Logger.checkMemory();this.si.siSourceClosed(a)},"JSV.source.JDXSource");c(b,"setFrameAndTreeNode",function(a){null==this.panelNodes||(0>a||a>=this.panelNodes.size())||this.setNode(this.panelNodes.get(a))},"~N");c(b,"selectFrameNode",function(a){a=JSV.common.PanelNode.findNode(a,this.panelNodes);if(null==a)return null;this.spectraTree.setPath(this.spectraTree.newTreePath(a.treeNode.getPath()));this.setOverlayLegendVisibility(null,!1);return a},"JSV.api.JSVPanel");c(b,"setSpectrum",function(a){if(0<= +a.indexOf(".")){a=JSV.common.PanelNode.findNodeById(a,this.panelNodes);if(null==a)return!1;this.setNode(a)}else{a=JU.PT.parseInt(a);if(0>=a)return this.checkOverlay(),!1;this.setFrameAndTreeNode(a-1)}return!0},"~S");c(b,"splitSpectra",function(){for(var a=this.currentSource,b=a.getSpectra(),c=Array(b.size()),f=null,e=0;ea.indexOf("false")),a="background-color:rgb("+a+")'>
Predicted Solution Colour- RGB("+a+")

",JSV.common.JSViewer.isJS?this.dialogManager.showMessage(this,"
","Predicted Colour"))},"~S");c(b,"getDialogPrint",function(a){if(!JSV.common.JSViewer.isJS)try{var b=this.getPlatformInterface("PrintDialog").set(this.offWindowFrame, +this.lastPrintLayout,a).getPrintLayout();null!=b&&(this.lastPrintLayout=b);return b}catch(c){if(!z(c,Exception))throw c;}return new JSV.common.PrintLayout(this.pd())},"~B");c(b,"setIRmode",function(a){this.irMode=a.equals("AtoT")?JSV.common.Spectrum.IRMode.TO_TRANS:a.equals("TtoA")?JSV.common.Spectrum.IRMode.TO_ABS:JSV.common.Spectrum.IRMode.getMode(a)},"~S");c(b,"getOptionFromDialog",function(a,b,c){return this.getDialogManager().getOptionFromDialog(null,a,this.selectedPanel,b,c)},"~A,~S,~S");c(b, +"print",function(a){return this.execWrite('PDF "'+a+'"')},"~S");c(b,"execWrite",function(a){JSV.common.JSViewer.isJS&&null==a&&(a="PDF");a=JSV.common.JSViewer.getInterface("JSV.export.Exporter").write(this,null==a?null:JSV.common.ScriptToken.getTokens(a),!1);this.si.writeStatus(a);return a},"~S");c(b,"$export",function(a,b){null==a&&(a="XY");var c=this.pd(),f=c.getNumberOfSpectraInCurrentSet();if(-1>b||b>=f)return"Maximum spectrum index (0-based) is "+(f-1)+".";c=0>b?c.getSpectrum():c.getSpectrumAt(b); +try{return JSV.common.JSViewer.getInterface("JSV.export.Exporter").exportTheSpectrum(this,JSV.common.ExportType.getType(a),null,c,0,c.getXYCoords().length-1,null,a.equalsIgnoreCase("PDF"))}catch(e){if(z(e,Exception))return JU.Logger.error(e.toString()),null;throw e;}},"~S,~N");e(b,"postByteArray",function(a,b){return JSV.common.JSVFileManager.postByteArray(a,b)},"~S,~A");c(b,"getOutputChannel",function(a,b){for(;a.startsWith("/");)a=a.substring(1);return(new JU.OC).setParams(this,a,!b,null)},"~S,~B"); +b.getInterface=c(b,"getInterface",function(a){try{var b=$._4Name(a);return null==b?null:b.newInstance()}catch(c){if(z(c,Exception))return JU.Logger.error("Interface.java Error creating instance for "+a+": \n"+c),null;throw c;}},"~S");c(b,"showMessage",function(a){null!=this.selectedPanel&&null!=a&&this.selectedPanel.showMessage(a,null)},"~S");c(b,"openFileFromDialog",function(a,b,c,f){var e=null;if(null!=c){e=this.fileHelper.getUrlFromDialog("Enter the name or identifier of a compound",this.recentSimulation); +if(null==e)return;this.recentSimulation=e;e="$"+c+"/"+e}else if(b){e=this.fileHelper.getUrlFromDialog("Enter the URL of a JCAMP-DX File",null==this.recentURL?this.recentOpenURL:this.recentURL);if(null==e)return;this.recentOpenURL=e}else b=A(-1,[Boolean.$valueOf(a),f]),b=this.fileHelper.showFileOpenDialog(this.mainPanel,b),null!=b&&(e=b.getFullPath());null!=e&&this.runScriptNow("load "+(a?"APPEND ":"")+'"'+e+'"'+(null==f?"":";"+f))},"~B,~B,~S,~S");c(b,"openFile",function(a,b){if(b&&null!=this.panelNodes){var c= +JSV.common.PanelNode.findSourceByNameOrId((new java.io.File(a)).getAbsolutePath(),this.panelNodes);null!=c&&this.closeSource(c)}this.si.siOpenDataOrFile(null,null,null,a,-1,-1,!0,this.defaultLoadScript,null)},"~S,~B");c(b,"selectPanel",function(a,b){var c=-1;if(null!=b){for(var f=b.size();0<=--f;){var e=b.get(f).jsvp;e===a?c=f:(e.setEnabled(!1),e.setFocusable(!1),e.getPanelData().closeAllDialogsExcept(JSV.common.Annotation.AType.NONE))}this.markSelectedPanels(b,c)}return c},"JSV.api.JSVPanel,JU.Lst"); +c(b,"checkAutoIntegrate",function(){this.autoIntegrate&&this.pd().integrateAll(this.parameters)});c(b,"parseInitScript",function(a){null==a&&(a="");a=new JSV.common.ScriptTokenizer(a,!0);for(JU.Logger.debugging&&JU.Logger.info("Running in DEBUG mode");a.hasMoreTokens();){var b=a.nextToken(),c=new JSV.common.ScriptTokenizer(b,!1),f=c.nextToken();f.equalsIgnoreCase("SET")&&(f=c.nextToken());var f=f.toUpperCase(),e=JSV.common.ScriptToken.getScriptToken(f),b=JSV.common.ScriptToken.getValue(e,c,b);JU.Logger.info("KEY-> "+ +f+" VALUE-> "+b+" : "+e);try{switch(e){default:this.parameters.set(null,e,b);break;case JSV.common.ScriptToken.UNKNOWN:break;case JSV.common.ScriptToken.APPLETID:this.fullName=this.appletName+"__"+(this.appletName=b)+"__";f=null;self.Jmol&&(f=Jmol._applets[b]);this.html5Applet=f;break;case JSV.common.ScriptToken.AUTOINTEGRATE:this.autoIntegrate=JSV.common.Parameters.isTrue(b);break;case JSV.common.ScriptToken.COMPOUNDMENUON:break;case JSV.common.ScriptToken.APPLETREADYCALLBACKFUNCTIONNAME:case JSV.common.ScriptToken.COORDCALLBACKFUNCTIONNAME:case JSV.common.ScriptToken.LOADFILECALLBACKFUNCTIONNAME:case JSV.common.ScriptToken.PEAKCALLBACKFUNCTIONNAME:case JSV.common.ScriptToken.SYNCCALLBACKFUNCTIONNAME:this.si.siExecSetCallback(e, +b);break;case JSV.common.ScriptToken.ENDINDEX:this.initialEndIndex=Integer.parseInt(b);break;case JSV.common.ScriptToken.INTERFACE:this.checkOvelayInterface(b);break;case JSV.common.ScriptToken.IRMODE:this.setIRmode(b);break;case JSV.common.ScriptToken.MENUON:this.allowMenu=Boolean.parseBoolean(b);break;case JSV.common.ScriptToken.OBSCURE:null==this.obscureTitleFromUser&&(this.obscureTitleFromUser=Boolean.$valueOf(b));break;case JSV.common.ScriptToken.STARTINDEX:this.initialStartIndex=Integer.parseInt(b); +break;case JSV.common.ScriptToken.SYNCID:this.fullName=this.appletName+"__"+(this.syncID=b)+"__"}}catch(h){if(!z(h,Exception))throw h;}}},"~S");c(b,"getSolutionColorStr",function(a){a=JU.CU.colorPtFromInt(this.getSolutionColor(a),null);return G(a.x)+","+G(a.y)+","+G(a.z)},"~B");c(b,"checkCommandLineForTip",function(a,b,c){var f="\u0001"==a;if(!f&&"\x00"!=a){if("\t"!=a&&("\n"==a||32>a.charCodeAt(0)||126b.indexOf(" ")&&0Math.min(a, +b)},"~N,~N");e(b,"toString",function(){return"["+this.getXVal()+","+this.pt2.getXVal()+"]"})});r("JSV.common");v(["JU.Lst","JSV.api.AnnotationData"],"JSV.common.MeasurementData",["JU.AU","$.DF","JSV.common.Annotation","$.Parameters"],function(){var b=j(function(){this.units=this.spec=this.type=null;this.precision=0;this.myParams=null;this.isON=!0;this.key=null;p(this,arguments)},JSV.common,"MeasurementData",JU.Lst,JSV.api.AnnotationData);m(b,function(a,b){B(this,JSV.common.MeasurementData,[]);this.type= +a;this.spec=b;this.myParams=(new JSV.common.Parameters).setName("MeasurementData")},"JSV.common.Annotation.AType,JSV.common.Spectrum");c(b,"getMeasurements",function(){return this});e(b,"getAType",function(){return this.type});e(b,"getState",function(){return this.isON});e(b,"setState",function(a){this.isON=a},"~B");c(b,"setMeasurements",function(){},"JU.Lst");e(b,"getParameters",function(){return this.myParams});c(b,"getDataHeader",function(){return JSV.common.MeasurementData.HEADER});c(b,"getMeasurementListArray", +function(a){this.units=a;var b=this.getMeasurementListArrayReal(a),c=this.spec.isNMR()?4:2;a=this.spec.isHNMR()&&a.equals("ppm")?4:2;for(var f=Array(this.size()),e=this.size();0<=--e;)f[e]=A(-1,[""+(e+1),JU.DF.formatDecimalDbl(b[e][0],c),JU.DF.formatDecimalDbl(b[e][1],c),JU.DF.formatDecimalDbl(b[e][2],a)]);return f},"~S");c(b,"getMeasurementListArrayReal",function(a){a=this.spec.isNMR()&&a.equalsIgnoreCase("HZ");for(var b=JU.AU.newDouble2(this.size()),c=0,f=this.size();0<=--f;){var e=this.get(f).getValue(); +a&&(e*=this.spec.getObservedFreq());b[c++]=M(-1,[this.get(f).getXVal(),this.get(f).getXVal2(),e])}return b},"~S");b.checkParameters=c(b,"checkParameters",function(a,b){if(0==a.size())return!1;var c=a.getParameters();switch(a.getAType()){case JSV.common.Annotation.AType.PeakList:return b.peakListInterpolation.equals(c.peakListInterpolation)&&b.peakListThreshold==c.peakListThreshold}return!1},"JSV.common.MeasurementData,JSV.common.ColorParameters");e(b,"getSpectrum",function(){return this.spec});e(b, +"getData",function(){return this});c(b,"clear",function(a,b){for(var c=this.size();0<=--c;){var f=this.get(c);(0==f.text.length||f.overlaps(a,b))&&this.removeItemAt(c)}},"~N,~N");c(b,"find",function(a){for(var b=this.size();0<=--b;)if(this.get(b).overlaps(a,a))return b;return-1},"~N");e(b,"setSpecShift",function(a){for(var b=this.size();0<=--b;){var c=this.get(b),f=c.getXVal()+a;c.setXVal(f);c.setValue(f);c.text=JU.DF.formatDecimalDbl(f,this.precision)}},"~N");e(b,"getGraphSetKey",function(){return this.key}); +e(b,"setGraphSetKey",function(a){this.key=a},"~S");e(b,"isVisible",function(){return!0});c(b,"getInfo",function(a){a.put("header",this.getDataHeader());a.put("table",this.getMeasurementListArrayReal("ppm"));null!=this.units&&a.put("units",this.units)},"java.util.Map");e(b,"isDialog",function(){return!1});b.HEADER=A(-1,["","start","end","value"])});r("JSV.common");v(["java.lang.Enum","J.api.EventManager","java.util.Hashtable","JU.Lst"],"JSV.common.PanelData","JU.CU JSV.common.Annotation $.Coordinate $.GraphSet $.JSVFileManager $.JSVersion $.JSViewer $.MeasurementData $.Parameters $.PeakPickEvent $.ScriptToken $.Spectrum $.SubSpecChangeEvent $.ZoomEvent JU.Font $.Logger".split(" "), +function(){var b=j(function(){this.graphSets=this.jsvp=this.options=this.currentGraphSet=this.listeners=this.vwr=this.g2d0=this.g2d=null;this.currentSplitPoint=0;this.coordsClicked=this.coordClicked=this.thisWidget=null;this.isIntegralDrag=this.drawXAxisLeftToRight=this.shiftPressed=this.ctrlPressed=!1;this.xAxisLeftToRight=!0;this.scalingFactor=1;this.integralShiftMode=0;this.left=60;this.right=50;this.coordStr="";this.startupPinTip="Click to set.";this.title=null;this.endIndex=this.startIndex=this.thisHeight= +this.thisWidth=this.nSpectra=this.clickCount=0;this.titleFontName=this.displayFontName=this.viewTitle=this.commonFilePath=null;this.isPrinting=!1;this.doReset=!0;this.printingFontName=null;this.printGraphPosition="default";this.isLinked=this.display1D=this.titleDrawn=!1;this.spectra=this.printJobTitle=null;this.taintedAll=!0;this.testingJavaScript=!1;this.mouseState=this.currentFont=null;this.peakTabsOn=this.titleOn=this.gridOn=!1;this.mouseY=this.mouseX=0;this.linking=!1;this.xPixelClicked=0;this.gMain= +this.optionsSaved=this.bgcolor=this.BLACK=this.zoomBoxColor2=this.zoomBoxColor=this.highlightColor=this.unitsColor=this.titleColor=this.scaleColor=this.plotAreaColor=this.peakTabColor=this.integralPlotColor=this.gridColor=this.coordinatesColor=null;p(this,arguments)},JSV.common,"PanelData",null,J.api.EventManager);H(b,function(){this.listeners=new JU.Lst;this.options=new java.util.Hashtable});m(b,function(a,b){this.vwr=b;this.jsvp=a;this.g2d=this.g2d0=b.g2d;this.BLACK=this.g2d.getColor1(0);this.highlightColor= +this.g2d.getColor4(255,0,0,200);this.zoomBoxColor=this.g2d.getColor4(150,150,100,130);this.zoomBoxColor2=this.g2d.getColor4(150,100,100,130)},"JSV.api.JSVPanel,JSV.common.JSViewer");c(b,"addListener",function(a){this.listeners.contains(a)||this.listeners.addLast(a)},"JSV.api.PanelListener");c(b,"getCurrentGraphSet",function(){return this.currentGraphSet});c(b,"dispose",function(){this.jsvp=null;for(var a=0;ac&&(e=w(14*c/h),10>e&&(e=10),e=this.getFont(a,c,this.isPrinting||this.getBoolean(JSV.common.ScriptToken.TITLEBOLDON)?1:0,e,!0));this.g2d.setGraphicsColor(a,this.titleColor);this.setCurrentFont(this.g2d.setFont(a,e));this.g2d.drawString(a,f,this.isPrinting? +this.left*this.scalingFactor:5,b-w(e.getHeight()*(this.isPrinting?2:0.5)))},"~O,~N,~N,~S");c(b,"setCurrentFont",function(a){this.currentFont=a},"JU.Font");c(b,"getFontHeight",function(){return this.currentFont.getAscent()});c(b,"getStringWidth",function(a){return this.currentFont.stringWidth(a)},"~S");c(b,"selectFromEntireSet",function(a){for(var b=0,c=0;ba||a==c)&&this.graphSets.get(b).setSelected(e)},"~N");c(b,"addToList",function(a,b){for(var c=0;ca||c==a)&&b.addLast(this.spectra.get(c))},"~N,JU.Lst");c(b,"scaleSelectedBy",function(a){for(var b=this.graphSets.size();0<=--b;)this.graphSets.get(b).scaleSelectedBy(a)},"~N");c(b,"setCurrentGraphSet",function(a,b){var c=1a||a>=this.currentGraphSet.nSpectra)){this.currentSplitPoint= +a;b&&this.setSpectrum(this.currentSplitPoint,1b&&(f=b*f/400):250>b&&(f=b*f/250);b=this.jsvp.getFontFaceID(this.isPrinting?this.printingFontName:this.displayFontName);return this.currentFont=JU.Font.createFont3D(b,c,f,f,this.jsvp.getApiPlatform(),a)},"~O,~N,~N,~N,~B");c(b,"notifySubSpectrumChange", +function(a,b){this.notifyListeners(new JSV.common.SubSpecChangeEvent(a,null==b?null:b.getTitleLabel()))},"~N,JSV.common.Spectrum");c(b,"notifyPeakPickedListeners",function(a){null==a&&(a=new JSV.common.PeakPickEvent(this.jsvp,this.coordClicked,this.getSpectrum().getAssociatedPeakInfo(this.xPixelClicked,this.coordClicked)));this.notifyListeners(a)},"JSV.common.PeakPickEvent");c(b,"notifyListeners",function(a){for(var b=0;bc)return this.jsvp.showMessage("To enable "+a+" first select a spectrum by clicking on it.",""+a),null;var f=this.getSpectrum(),e=this.vwr.getDialog(a,f);null==b&&a===JSV.common.Annotation.AType.Measurements&&(b=new JSV.common.MeasurementData(JSV.common.Annotation.AType.Measurements,f));null!= +b&&e.setData(b);this.addDialog(c,a,e);e.reEnable();return e},"JSV.common.Annotation.AType");c(b,"printPdf",function(a,b){var c=!b.layout.equals("landscape");this.print(a,c?b.imageableHeight:b.imageableWidth,c?b.imageableWidth:b.imageableHeight,b.imageableX,b.imageableY,b.paperHeight,b.paperWidth,c,0)},"J.api.GenericGraphics,JSV.common.PrintLayout");c(b,"print",function(a,b,c,f,e,h,j,k,l){this.g2d=this.g2d0;if(0==l)return this.isPrinting=!0,l=!1,C(a,"J.api.GenericGraphics")&&(this.g2d=a,a=this.gMain), +this.printGraphPosition.equals("default")?k?(b=450,c=280):(b=280,c=450):this.printGraphPosition.equals("fit to page")?l=!0:k?(b=450,c=280,f=w(w(j-c)/2),e=w(w(h-b)/2)):(b=280,c=450,e=w(w(j-280)/2),f=w(w(h-450)/2)),this.g2d.translateScale(a,f,e,0.1),this.setTaintedAll(),this.drawGraph(a,a,a,w(c),w(b),l),this.isPrinting=!1,0;this.isPrinting=!1;return 1},"~O,~N,~N,~N,~N,~N,~N,~B,~N");e(b,"keyPressed",function(a,b){if(this.isPrinting)return!1;this.checkKeyControl(a,!0);switch(a){case 27:case 127:case 8:return this.escapeKeyPressed(27!= +a),this.isIntegralDrag=!1,this.setTaintedAll(),this.repaint(),!0}var c=0,f=!1;if(0==b)switch(a){case 37:case 39:this.doMouseMoved(39==a?++this.mouseX:--this.mouseX,this.mouseY);this.repaint();f=!0;break;case 33:case 34:c=33==a?JSV.common.GraphSet.RT2:1/JSV.common.GraphSet.RT2;f=!0;break;case 40:case 38:f=40==a?-1:1,null==this.getSpectrumAt(0).getSubSpectra()?this.notifySubSpectrumChange(f,null):(this.advanceSubSpectrum(f),this.setTaintedAll(),this.repaint()),f=!0}else if(this.checkMod(a,2))switch(a){case 40:case 38:case 45:case 61:c= +61==a||38==a?JSV.common.GraphSet.RT2:1/JSV.common.GraphSet.RT2;f=!0;break;case 37:case 39:this.toPeak(39==a?1:-1),f=!0}0!=c&&(this.scaleYBy(c),this.setTaintedAll(),this.repaint());return f},"~N,~N");e(b,"keyReleased",function(a){this.isPrinting||this.checkKeyControl(a,!1)},"~N");e(b,"keyTyped",function(a,b){if(this.isPrinting)return!1;switch(a){case 110:if(0!=b)break;this.normalizeIntegral();return!0;case 26:if(2!=b)break;this.previousView();this.setTaintedAll();this.repaint();return!0;case 25:if(2!= +b)break;this.nextView();this.setTaintedAll();this.repaint();return!0}return!1},"~N,~N");e(b,"mouseAction",function(a,b,c,f,e,h){if(!this.isPrinting)switch(a){case 4:if(!this.checkMod(h,16))break;this.doMousePressed(c,f);break;case 5:this.doMouseReleased(c,f,this.checkMod(h,16));this.setTaintedAll();this.repaint();break;case 1:this.doMouseDragged(c,f);this.repaint();break;case 0:this.jsvp.getFocusNow(!1);if(0!=(h&28)){this.doMouseDragged(c,f);this.repaint();break}this.doMouseMoved(c,f);null!=this.coordStr&& +this.repaint();break;case 2:if(this.checkMod(h,4)){this.jsvp.showMenu(c,f);break}this.ctrlPressed=!1;this.doMouseClicked(c,f,this.updateControlPressed(h))}},"~N,~N,~N,~N,~N,~N");c(b,"checkMod",function(a,b){return(a&b)==b},"~N,~N");c(b,"checkKeyControl",function(a,b){switch(a){case 17:case 157:this.ctrlPressed=b;break;case 16:this.shiftPressed=b}},"~N,~B");c(b,"updateControlPressed",function(a){return this.ctrlPressed=(new Boolean(this.ctrlPressed|(this.checkMod(a,2)||this.checkMod(a,20)))).valueOf()}, +"~N");e(b,"mouseEnterExit",function(a,b,c,f){if(f)this.thisWidget=null,this.isIntegralDrag=!1,this.integralShiftMode=0;else try{this.jsvp.getFocusNow(!1)}catch(e){if(z(e,Exception))System.out.println("pd "+this+" cannot focus");else throw e;}},"~N,~N,~N,~B");c(b,"setSolutionColor",function(a){var b=0<=a.indexOf("none"),c=0>a.indexOf("false");if(0>a.indexOf("all"))b=b?-1:this.vwr.getSolutionColor(c),this.getSpectrum().setFillColor(-1==b?null:this.vwr.parameters.getColor1(b));else{a=JSV.common.JSViewer.getInterface("JSV.common.Visible"); +for(var f=this.graphSets.size();0<=--f;)this.graphSets.get(f).setSolutionColor(a,b,c)}},"~S");c(b,"setIRMode",function(a,b){for(var c=this.graphSets.size();0<=--c;)this.graphSets.get(c).setIRMode(a,b)},"JSV.common.Spectrum.IRMode,~S");c(b,"closeSpectrum",function(){this.vwr.close("views");this.vwr.close(this.getSourceID());this.vwr.execView("*",!0)});b=u(JSV.common.PanelData,"LinkMode",Enum);b.getMode=c(b,"getMode",function(a){if(a.equals("*"))return JSV.common.PanelData.LinkMode.ALL;for(var b,c= +0,f=JSV.common.PanelData.LinkMode.values();cf.length)){this.clear();null!=a&&(this.myParams.peakListInterpolation=a.peakListInterpolation,this.myParams.peakListThreshold=a.peakListThreshold);a=this.myParams.peakListInterpolation.equals("parabolic");var e=this.spec.isInverted();this.minY=c.minYOnScale;this.maxY=c.maxYOnScale;var h=c.minXOnScale; +c=c.maxXOnScale;this.thresh=this.myParams.peakListThreshold;Double.isNaN(this.thresh)&&(this.thresh=this.myParams.peakListThreshold=(this.minY+this.maxY)/2);var j=0,k=M(-1,[f[0].getYVal(),j=f[1].getYVal(),0]),l=0;if(e)for(e=2;ej&&j=h||j<=c))if(j=(new JSV.common.PeakPick).setValue(j,m,this.spec,null,0),this.addLast(j),100==++l)break;j=m}else for(e= +2;ethis.thresh&&(k[(e-2)%3]m)&&(j=a?JSV.common.Coordinate.parabolicInterpolation(f,e-1):f[e-1].getXVal(),j>=h&&j<=c&&(j=(new JSV.common.PeakPick).setValue(j,m,this.spec,JU.DF.formatDecimalDbl(j,b),j),this.addLast(j),100==++l)))break;j=m}}},"JSV.common.Parameters,~N,JSV.common.ScaleData");b.HNMR_HEADER=A(-1,"peak shift/ppm intens shift/hz diff/hz 2-diff 3-diff".split(" "))});r("JSV.common");v(null,"JSV.common.PeakInfo",["JU.PT"],function(){var b=j(function(){this.px1= +this.px0=this.yMax=this.yMin=this.xMax=this.xMin=0;this.atomKey=this._match=this.spectrum=this.id=this.atoms=this.model=this.title=this.filePathForwardSlash=this.file=this.index=this.type2=this.type=this.stringInfo=null;p(this,arguments)},JSV.common,"PeakInfo",null);m(b,function(a){this.stringInfo=a;this.type=JU.PT.getQuotedAttribute(a,"type");null==this.type&&(this.type="");this.type=this.type.toUpperCase();var b=this.type.indexOf("/");this.type2=0>b?"":JSV.common.PeakInfo.fixType(this.type.substring(this.type.indexOf("/")+ +1));this.type=0<=b?JSV.common.PeakInfo.fixType(this.type.substring(0,b))+"/"+this.type2:JSV.common.PeakInfo.fixType(this.type);this.id=JU.PT.getQuotedAttribute(a,"id");this.index=JU.PT.getQuotedAttribute(a,"index");this.file=JU.PT.getQuotedAttribute(a,"file");System.out.println("pi file="+this.file);this.filePathForwardSlash=null==this.file?null:this.file.$replace("\\","/");this.model=JU.PT.getQuotedAttribute(a,"model");a.contains('baseModel=""')||(this.atoms=JU.PT.getQuotedAttribute(a,"atoms")); +this.atomKey=","+this.atoms+",";this.title=JU.PT.getQuotedAttribute(a,"title");this._match=JU.PT.getQuotedAttribute(a,"_match");this.xMax=JU.PT.parseFloat(JU.PT.getQuotedAttribute(a,"xMax"));this.xMin=JU.PT.parseFloat(JU.PT.getQuotedAttribute(a,"xMin"));this.yMax=JU.PT.parseFloat(JU.PT.getQuotedAttribute(a,"yMax"));this.yMin=JU.PT.parseFloat(JU.PT.getQuotedAttribute(a,"yMin"))},"~S");c(b,"isClearAll",function(){return null==this.spectrum});c(b,"getType",function(){return this.type});c(b,"getAtoms", +function(){return this.atoms});c(b,"getXMax",function(){return this.xMax});c(b,"getXMin",function(){return this.xMin});c(b,"getYMin",function(){return this.yMin});c(b,"getYMax",function(){return this.yMax});c(b,"getX",function(){return(this.xMax+this.xMin)/2});c(b,"getMatch",function(){return this._match});b.fixType=c(b,"fixType",function(a){return a.equals("HNMR")?"1HNMR":a.equals("CNMR")?"13CNMR":a},"~S");e(b,"toString",function(){return this.stringInfo});c(b,"getIndex",function(){return this.index}); +c(b,"getTitle",function(){return this.title});c(b,"checkFileIndex",function(a,b,c){return null!=c?0<=this.atomKey.indexOf(c):b.equals(this.index)&&(a.equals(this.file)||a.equals(this.filePathForwardSlash))},"~S,~S,~S");c(b,"checkFileTypeModel",function(a,b,c){return a.equals(this.file)&&this.checkModel(c)&&this.type.endsWith(b)},"~S,~S,~S");c(b,"checkTypeModel",function(a,b){return this.checkType(a)&&this.checkModel(b)},"~S,~S");c(b,"checkModel",function(a){return null!=a&&a.equals(this.model)},"~S"); +c(b,"checkType",function(a){return a.endsWith(this.type)},"~S");c(b,"checkTypeMatch",function(a){return this.checkType(a.type)&&(this.checkId(a._match)||this.checkModel(a._match)||0<=this.title.toUpperCase().indexOf(a._match))},"JSV.common.PeakInfo");c(b,"checkId",function(a){return null==a?!1:null!=this.id&&a.toUpperCase().startsWith("ID=")&&a.substring(3).equals(this.id)||(a=a.toUpperCase()).startsWith("INDEX=")&&a.equals("INDEX="+this.index)||a.startsWith("#=")&&a.equals("#="+this.index)},"~S"); +c(b,"getModel",function(){return this.model});c(b,"getFilePath",function(){return this.file});c(b,"autoSelectOnLoad",function(){return this.type.startsWith("GC")});c(b,"setPixelRange",function(a,b){this.px0=a;this.px1=b},"~N,~N");c(b,"checkRange",function(a,b){return(2147483647!=a?this.px0<=a&&this.px1>=a:b>=this.xMin&&b<=this.xMax)?Math.abs(b-this.getX()):1E100},"~N,~N");c(b,"getXPixel",function(){return w((this.px0+this.px1)/2)});b.nullPeakInfo=null});r("JSV.common");v(["JSV.common.Measurement"], +"JSV.common.PeakPick",null,function(){var b=u(JSV.common,"PeakPick",JSV.common.Measurement);c(b,"setValue",function(a,b,c,f,e){null==f?(this.set(a,b),this.setPt2(c,!1)):(this.setA(a,b,c,f,!1,!1,0,6),this.value=e,this.setPt2(this.getXVal(),this.getYVal()));return this},"~N,~N,JSV.common.Spectrum,~S,~N")});r("JSV.common");v(["java.util.EventObject"],"JSV.common.PeakPickEvent",null,function(){var b=j(function(){this.peakInfo=this.coord=null;p(this,arguments)},JSV.common,"PeakPickEvent",java.util.EventObject); +m(b,function(a,b,c){B(this,JSV.common.PeakPickEvent,[a]);this.coord=b;this.peakInfo=null==c?null:c},"~O,JSV.common.Coordinate,JSV.common.PeakInfo");c(b,"getCoord",function(){return this.coord});c(b,"getPeakInfo",function(){return this.peakInfo});e(b,"toString",function(){return null==this.peakInfo?null:this.peakInfo.toString()})});r("JSV.common");v(["JSV.common.Coordinate","$.ScriptToken"],"JSV.common.PlotWidget",null,function(){var b=j(function(){this.yPixel1=this.xPixel1=this.yPixel0=this.xPixel0= +0;this.is2Donly=this.is2D=this.isXtype=this.isPinOrCursor=this.isPin=!1;this.isEnabled=!0;this.isVisible=!1;this.color=this.name=null;p(this,arguments)},JSV.common,"PlotWidget",JSV.common.Coordinate);H(b,function(){this.color=JSV.common.ScriptToken.PLOTCOLOR});m(b,function(a){B(this,JSV.common.PlotWidget,[]);this.name=a;this.isPin="p"==a.charAt(0);this.isPinOrCursor="z"!=a.charAt(0);this.isXtype=0<=a.indexOf("x");this.is2Donly=(this.is2D=0<=a.indexOf("2D"))&&"p"==a.charAt(0)},"~S");e(b,"toString", +function(){return this.name+(!this.isPinOrCursor?""+this.xPixel0+" "+this.yPixel0+" / "+this.xPixel1+" "+this.yPixel1:" x="+this.getXVal()+"/"+this.xPixel0+" y="+this.getYVal()+"/"+this.yPixel0)});c(b,"selected",function(a,b){return this.isVisible&&5>Math.abs(a-this.xPixel0)&&5>Math.abs(b-this.yPixel0)},"~N,~N");c(b,"setX",function(a,b){this.setXVal(a);this.xPixel0=this.xPixel1=b},"~N,~N");c(b,"setY",function(a,b){this.setYVal(a);this.yPixel0=this.yPixel1=b},"~N,~N");c(b,"getValue",function(){return this.isXtype? +this.getXVal():this.getYVal()});c(b,"setEnabled",function(a){this.isEnabled=a},"~B")});r("JSV.common");y=j(function(){this.imageableWidth=this.imageableHeight=this.paperWidth=this.paperHeight=this.imageableY=this.imageableX=0;this.layout="landscape";this.position="fit to page";this.showTitle=this.showYScale=this.showXScale=this.showGrid=!0;this.font="Helvetica";this.paper=null;this.asPDF=!0;this.date=this.title=null;p(this,arguments)},JSV.common,"PrintLayout",null);H(y,function(){this.paperHeight= +G(72*Math.min(11,11.69));this.paperWidth=G(72*Math.min(8.5,8.27));this.imageableHeight=this.paperHeight;this.imageableWidth=this.paperWidth});m(y,function(b){null!=b&&(this.asPDF=!0,b.setDefaultPrintOptions(this))},"JSV.common.PanelData");r("JSV.common");v(null,"JSV.common.RepaintManager",["JSV.common.JSViewer"],function(){var b=j(function(){this.repaintPending=!1;this.vwr=null;p(this,arguments)},JSV.common,"RepaintManager",null);m(b,function(a){this.vwr=a},"JSV.common.JSViewer");c(b,"refresh",function(){if(this.repaintPending)return!1; +this.repaintPending=!0;var a=this.vwr.html5Applet,b=JSV.common.JSViewer.isJS&&!JSV.common.JSViewer.isSwingJS?JSV.common.JSViewer.jmolObject:null;null==b?this.vwr.selectedPanel.repaint():(b.repaint(a,!1),this.repaintDone());return!0});c(b,"repaintDone",function(){this.repaintPending=!1;this.notify()})});r("JSV.common");v(null,"JSV.common.ScaleData",["JSV.common.Coordinate"],function(){var b=j(function(){this.maxX=this.minX=this.pointCount=this.endDataPointIndex=this.startDataPointIndex=this.initMaxY= +this.initMinY=this.initMaxYOnScale=this.initMinYOnScale=0;this.firstX=NaN;this.specShift=this.maxXOnScale=this.minXOnScale=0;this.minorTickCounts=this.steps=this.exportPrecision=this.precision=null;this.maxY=this.minY=this.maxYOnScale=this.minYOnScale=0;this.isShiftZoomedY=!1;this.spectrumScaleFactor=1;this.spectrumYRef=0;this.userYFactor=1;this.yFactorForScale=this.xFactorForScale=this.maxY2D=this.minY2D=this.firstY=0;p(this,arguments)},JSV.common,"ScaleData",null);H(b,function(){this.precision= +E(2,0);this.exportPrecision=E(2,0);this.steps=M(2,0);this.minorTickCounts=E(2,0)});m(b,function(){});m(b,function(a,b){this.startDataPointIndex=a;this.endDataPointIndex=b;this.pointCount=this.endDataPointIndex-this.startDataPointIndex+1},"~N,~N");m(b,function(a,b,c,f,e){this.minX=JSV.common.Coordinate.getMinX(a,b,c);this.maxX=JSV.common.Coordinate.getMaxX(a,b,c);this.minY=JSV.common.Coordinate.getMinY(a,b,c);0this.spectrumYRef});c(b, +"setYScale",function(a,b,c,f){0==a&&0==b&&(b=1);this.isShiftZoomedY&&(a=this.minYOnScale,b=this.maxYOnScale);var e=this.setScaleParams(a,b,1),h=f?e/2:e/4;f=f?e/4:e/2;this.isShiftZoomedY||(this.minYOnScale=0==a?0:c?h*Math.floor(a/h):a,this.maxYOnScale=c?f*Math.ceil(1.05*b/f):b);this.firstY=0==a?0:Math.floor(a/h)*h;if(0>this.minYOnScale&&0this.minYOnScale;)this.firstY-=e;else 0!=this.minYOnScale&&1E-4=c){j[a]=l;m=1;break}for(;++l<=h&&b[l].getXVal()<=f;)m++; +k[a]=j[a]+m-1;return m},"~N,~A,~N,~N,~N,~N,~A,~A");c(b,"setScaleParams",function(a,b,c){a=b==a?1:Math.abs(b-a)/14;var f=Math.log10(Math.abs(a));b=w(Math.floor(f));this.exportPrecision[c]=b;this.precision[c]=0>=b?Math.min(8,1-b):3JSV.common.ScaleData.NTICKS[a];)a++;this.steps[c]=Math.pow(10,b)*JSV.common.ScaleData.NTICKS[a];f=Math.log10(Math.abs(100010*this.steps[c]));b=f-Math.floor(f);for(a=f=0;aMath.abs(b-JSV.common.ScaleData.LOGTICKS[a])){f= +JSV.common.ScaleData.NTICKS[a];break}this.minorTickCounts[c]=f;return this.steps[c]},"~N,~N,~N");c(b,"isInRangeX",function(a){return a>=this.minX&&a<=this.maxX},"~N");c(b,"addSpecShift",function(a){this.specShift+=a;this.minX+=a;this.maxX+=a;this.minXOnScale+=a;this.maxXOnScale+=a;this.firstX+=a},"~N");c(b,"getInfo",function(a){a.put("specShift",Double.$valueOf(this.specShift));a.put("minX",Double.$valueOf(this.minX));a.put("maxX",Double.$valueOf(this.maxX));a.put("minXOnScale",Double.$valueOf(this.minXOnScale)); +a.put("maxXOnScale",Double.$valueOf(this.maxXOnScale));a.put("minY",Double.$valueOf(this.minY));a.put("maxY",Double.$valueOf(this.maxY));a.put("minYOnScale",Double.$valueOf(this.minYOnScale));a.put("maxYOnScale",Double.$valueOf(this.maxYOnScale));a.put("minorTickCountX",Integer.$valueOf(this.minorTickCounts[0]));a.put("xStep",Double.$valueOf(this.steps[0]));return a},"java.util.Map");c(b,"setMinMax",function(a,b,c,f){this.minX=a;this.maxX=b;this.minY=c;this.maxY=f},"~N,~N,~N,~N");c(b,"toX",function(a, +b,c){return this.toXScaled(a,b,c,this.xFactorForScale)},"~N,~N,~B");c(b,"toX0",function(a,b,c,f){return this.toXScaled(a,c,f,(this.maxXOnScale-this.minXOnScale)/(c-b))},"~N,~N,~N,~B");c(b,"toXScaled",function(a,b,c,f){return c?this.maxXOnScale-(b-a)*f:this.minXOnScale+(b-a)*f},"~N,~N,~B,~N");c(b,"toPixelX",function(a,b,c,f){return this.toPixelXScaled(a,b,c,f,this.xFactorForScale)},"~N,~N,~N,~B");c(b,"toPixelX0",function(a,b,c,f){return this.toPixelXScaled(a,b,c,f,(this.maxXOnScale-this.minXOnScale)/ +(c-b))},"~N,~N,~N,~B");c(b,"toPixelXScaled",function(a,b,c,f,e){a=w((a-this.minXOnScale)/e);return f?b+a:c-a},"~N,~N,~N,~B,~N");c(b,"toY",function(a,b){return this.maxYOnScale+(b-a)*this.yFactorForScale},"~N,~N");c(b,"toY0",function(a,b,c){return Math.max(this.minYOnScale,Math.min(this.maxYOnScale+(b-a)*((this.maxYOnScale-this.minYOnScale)/(c-b)),this.maxYOnScale))},"~N,~N,~N");c(b,"toPixelY",function(a,b){return Double.isNaN(a)?-2147483648:b-w(((a-this.spectrumYRef)*this.userYFactor+this.spectrumYRef- +this.minYOnScale)/this.yFactorForScale)},"~N,~N");c(b,"toPixelY0",function(a,b,c){return w(b+(this.maxYOnScale-a)/((this.maxYOnScale-this.minYOnScale)/(c-b)))},"~N,~N,~N");c(b,"setXYScale",function(a,b,c){var f=this.spectrumYRef,e=this.spectrumScaleFactor,h=1!=e||this.isShiftZoomedY,j=h?this.initMinYOnScale:this.minY,k=h?this.initMaxYOnScale:this.maxY;h&&fk&&(f=k);this.setYScale((j-f)/e+f,(k-f)/e+f,1==e,c);this.xFactorForScale=(this.maxXOnScale-this.minXOnScale)/(a-1);this.yFactorForScale= +(this.maxYOnScale-this.minYOnScale)/(b-1)},"~N,~N,~B");b.copyScaleFactors=c(b,"copyScaleFactors",function(a,b){for(var c=0;c=f&&j++}return j==k},"JU.Lst,~N,~N,~N,~A,~A");b.fixScale=c(b,"fixScale",function(a){if(!a.isEmpty())for(;;){for(var b,c=a.entrySet().iterator();c.hasNext()&& +((b=c.next())||1);){var f=b.getValue(),e=f.indexOf("E");0<=e&&(f=f.substring(0,e));if(0>f.indexOf(".")||!f.endsWith("0")&&!f.endsWith("."))return}for(c=a.entrySet().iterator();c.hasNext()&&((b=c.next())||1);)f=b.getValue(),e=f.indexOf("E"),0<=e?b.setValue(f.substring(0,e-1)+f.substring(e)):b.setValue(f.substring(0,f.length-1))}},"java.util.Map");c(b,"scaleBy",function(a){if(this.isShiftZoomedY){var b=this.isYZeroOnScale()?this.spectrumYRef:(this.minYOnScale+this.maxYOnScale)/2;this.minYOnScale=b- +(b-this.minYOnScale)/a;this.maxYOnScale=b-(b-this.maxYOnScale)/a}else this.spectrumScaleFactor*=a},"~N");b.NTICKS=E(-1,[2,5,10,10]);b.LOGTICKS=M(-1,[Math.log10(2),Math.log10(5),0,1])});r("JSV.common");v(["java.lang.Enum"],"JSV.common.ScriptToken",["java.util.Hashtable","JU.Lst","$.PT","$.SB","JSV.common.ScriptTokenizer"],function(){var b=j(function(){this.description=this.tip=null;p(this,arguments)},JSV.common,"ScriptToken",Enum);c(b,"getTip",function(){return" "+("T"===this.tip?"TRUE/FALSE/TOGGLE": +"TF"===this.tip?"TRUE or FALSE":"C"===this.tip?"COLOR":this.tip)});m(b,function(){});m(b,function(a){this.tip=a;this.description=""},"~S");m(b,function(a,b){this.tip=a;this.description="-- "+b},"~S,~S");b.getParams=c(b,"getParams",function(){if(null==JSV.common.ScriptToken.htParams){JSV.common.ScriptToken.htParams=new java.util.Hashtable;for(var a,b=0,c=JSV.common.ScriptToken.values();bb?"":a.substring(b).trim()},"~S");b.getKey=c(b,"getKey",function(a){var b=a.nextToken();if(b.startsWith("#")||b.startsWith("//"))return null;b.equalsIgnoreCase("SET")&& +(b=a.nextToken());return b.toUpperCase()},"JSV.common.ScriptTokenizer");b.getTokens=c(b,"getTokens",function(a){a.startsWith("'")&&a.endsWith("'")&&(a='"'+JU.PT.trim(a,"'")+'"');var b=new JU.Lst;for(a=new JSV.common.ScriptTokenizer(a,!1);a.hasMoreTokens();){var c=JSV.common.ScriptTokenizer.nextStringToken(a,!1);if(c.startsWith("//")||c.startsWith("#"))break;b.addLast(c)}return b},"~S");b.getNameList=c(b,"getNameList",function(a){if(0==a.size())return"";for(var b=new JU.SB,c=0;cl&&(e=k,k=l,l=e));a=a.get(0).isInverted();for(e=0;e=c){this.scaleData[a%this.scaleData.length].startDataPointIndex=j;break}for(;j<=h&&!(e=b[j].getXVal(),k++,e>=f);j++);this.scaleData[a%this.scaleData.length].endDataPointIndex=j;return k},"~N,~A,~N,~N,~N,~N");c(b,"getStartingPointIndex", +function(a){return this.scaleData[a%this.scaleData.length].startDataPointIndex},"~N");c(b,"getEndingPointIndex",function(a){return this.scaleData[a%this.scaleData.length].endDataPointIndex},"~N");c(b,"areYScalesSame",function(a,b){a%=this.scaleData.length;b%=this.scaleData.length;return this.scaleData[a].minYOnScale==this.scaleData[b].minYOnScale&&this.scaleData[a].maxYOnScale==this.scaleData[b].maxYOnScale},"~N,~N");c(b,"setScale",function(a,b,c,f){this.iThisScale=a%this.scaleData.length;this.thisScale= +this.scaleData[this.iThisScale];this.thisScale.setXYScale(b,c,f)},"~N,~N,~N,~B");c(b,"resetScaleFactors",function(){for(var a=0;a=b||a>=this.nSpectra))if(-2==a)this.thisScale.scale2D(b);else if(0>a)for(a=0;aa?2:-2)},"~N");c(b,"checkVisible", +function(){return this.vwr.pd().getShowAnnotation(this.type)});c(b,"getUnitOptions",function(){var a=this.optionKey+"_format";null==this.options.get(a)&&this.options.put(a,Integer.$valueOf(this.formatOptions[null==this.unitPtr?0:this.unitPtr.intValue()]))});c(b,"eventFocus",function(){null!=this.$spec&&this.jsvp.getPanelData().jumpToSpectrum(this.$spec);switch(this.type){case JSV.common.Annotation.AType.Integration:0<=this.iRowSelected&&(this.iRowSelected++,this.tableCellSelect(-1,-1));break;case JSV.common.Annotation.AType.PeakList:this.createData(), +this.skipCreate=!0}});c(b,"eventApply",function(){switch(this.type){case JSV.common.Annotation.AType.PeakList:this.createData(),this.skipCreate=!0}this.applyFromFields()});c(b,"eventShowHide",function(a){(this.isON=a)&&this.eventApply();this.jsvp.doRepaint(!0);this.checkEnables()},"~B");c(b,"clear",function(){this.setState(!0);null!=this.xyData&&(this.xyData.clear(),this.applyFromFields())});c(b,"paramsReEnable",function(){switch(this.type){case JSV.common.Annotation.AType.PeakList:this.skipCreate= +!0}this.setVisible(!0);this.isON=!0;this.applyFromFields()});c(b,"tableCellSelect",function(a,b){System.out.println(a+" jSVDial "+b);0>a&&(a=w(this.iRowColSelected/1E3),b=this.iRowColSelected%1E3,this.iRowColSelected=-1);var c=this.tableData[a][1],f=1E3*a+b;if(f!=this.iRowColSelected){this.iRowColSelected=f;System.out.println("Setting rc = "+this.iRowColSelected+" "+this.$spec);this.selectTableRow(this.iRowSelected);try{switch(this.type){case JSV.common.Annotation.AType.Integration:this.callback("SHOWSELECTION", +c.toString());this.checkEnables();break;case JSV.common.Annotation.AType.PeakList:try{switch(b){case 6:case 5:case 4:var e=Double.parseDouble(c),h=Double.parseDouble(this.tableData[a+3-b][1]);this.jsvp.getPanelData().setXPointers(this.$spec,e,this.$spec,h);break;default:this.jsvp.getPanelData().findX(this.$spec,Double.parseDouble(c))}}catch(j){if(z(j,Exception))this.jsvp.getPanelData().findX(this.$spec,1E100);else throw j;}this.jsvp.doRepaint(!1);break;case JSV.common.Annotation.AType.OverlayLegend:this.jsvp.getPanelData().setSpectrum(a, +!1)}}catch(k){if(!z(k,Exception))throw k;}}},"~N,~N");c(b,"loadData",function(){var a,b,c;switch(this.type){case JSV.common.Annotation.AType.Integration:null==this.xyData&&this.createData();this.iSelected=-1;a=this.xyData.getMeasurementListArray(null);b=this.xyData.getDataHeader();c=E(-1,[40,65,65,50]);this.createTable(a,b,c);break;case JSV.common.Annotation.AType.Measurements:if(null==this.xyData)break;a=this.xyData.getMeasurementListArray(this.dialog.getSelectedItem(this.combo1).toString());b=this.xyData.getDataHeader(); +c=E(-1,[40,65,65,50]);this.createTable(a,b,c);break;case JSV.common.Annotation.AType.PeakList:null==this.xyData&&this.createData();a=this.xyData.getMeasurementListArray(null);b=this.xyData.getDataHeader();c=E(-1,[40,65,50,50,50,50,50]);this.createTable(a,b,c);this.setTableSelectionEnabled(!0);break;case JSV.common.Annotation.AType.OverlayLegend:b=A(-1,["No.","Plot Color","Title"]),a=this.vwr.selectedPanel.getPanelData().getOverlayLegendData(),c=E(-1,[30,60,250]),this.createTable(a,b,c),this.setTableSelectionEnabled(!0)}}); +c(b,"createData",function(){switch(this.type){case JSV.common.Annotation.AType.Integration:this.xyData=new JSV.common.IntegralData(this.$spec,this.myParams);this.iSelected=-1;break;case JSV.common.Annotation.AType.PeakList:try{var a=Double.parseDouble(this.dialog.getText(this.txt1));this.myParams.peakListThreshold=a;this.myParams.peakListInterpolation=this.dialog.getSelectedItem(this.combo1).toString();this.myParams.precision=this.precision;var b=new JSV.common.PeakData(JSV.common.Annotation.AType.PeakList, +this.$spec);b.setPeakList(this.myParams,this.precision,this.jsvp.getPanelData().getView());this.xyData=b;this.loadData()}catch(c){if(!z(c,Exception))throw c;}}});c(b,"setPrecision",function(a){this.precision=this.formatOptions[a]},"~N");c(b,"tableSelect",function(a){if("true".equals(this.getField(a,"adjusting")))this.iColSelected=this.iRowSelected=-1,System.out.println("adjusting"+a);else{var b=JU.PT.parseInt(this.getField(a,"index"));switch("ROW COL ROWCOL".indexOf(this.getField(a,"selector"))){case 8:this.iColSelected= +JU.PT.parseInt(this.getField(a,"index2"));case 0:this.iRowSelected=b;System.out.println("r set to "+b);break;case 4:this.iColSelected=b,System.out.println("c set to "+b)}0<=this.iColSelected&&0<=this.iRowSelected&&this.tableCellSelect(this.iRowSelected,this.iColSelected)}},"~S");c(b,"getField",function(a,b){a+="&";var c="&"+b+"=",f=a.indexOf(c);return 0>f?null:a.substring(f+c.length,a.indexOf("&",f+1))},"~S,~S")});r("JSV.exception");v(["java.lang.Exception"],"JSV.exception.JSVException",null,function(){u(JSV.exception, +"JSVException",Exception)});r("JSV.js2d");y=u(JSV.js2d,"Display",null);y.getFullScreenDimensions=c(y,"getFullScreenDimensions",function(b,a){a[0]=b.width;a[1]=b.height},"~O,~A");y.hasFocus=c(y,"hasFocus",function(){return!0},"~O");y.requestFocusInWindow=c(y,"requestFocusInWindow",function(){},"~O");y.repaint=c(y,"repaint",function(){},"~O");y.renderScreenImage=c(y,"renderScreenImage",function(){},"J.api.PlatformViewer,~O,~O");y.setTransparentCursor=c(y,"setTransparentCursor",function(){},"~O");y.setCursor= +c(y,"setCursor",function(){},"~N,~O");y.prompt=c(y,"prompt",function(b,a){var c=prompt(b,a);return null!=c?c:"null"},"~S,~S,~A,~B");y.convertPointFromScreen=c(y,"convertPointFromScreen",function(){},"~O,JU.P3");r("JSV.js2d");y=u(JSV.js2d,"Image",null);y.getWidth=c(y,"getWidth",function(b){return b.imageWidth?b.imageWidth:b.width},"~O");y.getHeight=c(y,"getHeight",function(b){return b.imageHeight?b.imageHeight:b.height},"~O");y.grabPixels=c(y,"grabPixels",function(b,a,c){var e=null;if(b._buf32)return b._buf32; +e=b.getImageData(0,0,a,c).data;return JSV.js2d.Image.toIntARGB(e)},"~O,~N,~N");y.toIntARGB=c(y,"toIntARGB",function(b){for(var a=w(b.length/4),c=E(a,0),e=0,f=0;e>2,e=0,f=0;e>16&255,a[f++]=b[e]>>8&255,a[f++]=b[e]&255,a[f++]=255},"~A,~A");y.getTextPixels=c(y,"getTextPixels",function(b,a,c,e,f,g){c.fillStyle="#000000";c.fillRect(0,0,e,f);c.fillStyle= +"#FFFFFF";c.font=a.font;c.fillText(b,0,g);return JSV.js2d.Image.grabPixels(c,e,f)},"~S,JU.Font,~O,~N,~N,~N");y.allocateRgbImage=c(y,"allocateRgbImage",function(b,a,c,e,f,g){null==g&&(g={width:b,height:a});g.buf32=c},"~N,~N,~A,~N,~B,~O");y.getStaticGraphics=c(y,"getStaticGraphics",function(b){return JSV.js2d.Image.getGraphics(b)},"~O,~B");y.getGraphics=c(y,"getGraphics",function(b){return b.getContext("2d")},"~O");y.drawImage=c(y,"drawImage",function(b,a,c,e){this.fromIntARGB(a.buf32,a.buf8);b.putImageData(a.imgdata, +c,e)},"~O,~O,~N,~N,~N,~N");r("JSV.js2d");v(["J.api.GenericFileInterface"],"JSV.js2d.JsFile",["JU.PT","JSV.common.JSVFileManager"],function(){var b=j(function(){this.fullName=this.name=null;p(this,arguments)},JSV.js2d,"JsFile",null,J.api.GenericFileInterface);m(b,function(a){this.name=a.$replace("\\","/");this.fullName=a;!this.fullName.startsWith("/")&&0>JSV.common.JSVFileManager.urlTypeIndex(a)&&(this.fullName=JSV.common.JSVFileManager.jsDocumentBase+"/"+this.fullName);this.fullName=JU.PT.rep(this.fullName, +"/./","/");a.substring(a.lastIndexOf("/")+1)},"~S");b.newFile=c(b,"newFile",function(a){return new JSV.js2d.JsFile(a)},"~S");e(b,"getParentAsFile",function(){var a=this.fullName.lastIndexOf("/");return 0>a?null:new JSV.js2d.JsFile(this.fullName.substring(0,a))});e(b,"getFullPath",function(){return this.fullName});e(b,"getName",function(){return this.name});e(b,"isDirectory",function(){return this.fullName.endsWith("/")});e(b,"length",function(){return 0});b.getURLContents=c(b,"getURLContents",function(a, +b,c){try{var f=a.openConnection();null!=b?f.outputBytes(b):null!=c&&f.outputString(c);return f.getContents()}catch(e){if(z(e,Exception))return e.toString();throw e;}},"java.net.URL,~A,~S")});r("JSV.js2d");v(["JSV.api.JSVFileHelper"],"JSV.js2d.JsFileHelper",["JU.PT","JSV.common.JSViewer","JSV.js2d.JsFile"],function(){var b=j(function(){this.vwr=null;p(this,arguments)},JSV.js2d,"JsFileHelper",null,JSV.api.JSVFileHelper);e(b,"set",function(a){this.vwr=a;return this},"JSV.common.JSViewer");e(b,"getFile", +function(a){var b=null;a=JU.PT.rep(a,"=","_");b=prompt("Enter a file name:",a);return null==b?null:new JSV.js2d.JsFile(b)},"~S,~O,~B");e(b,"setDirLastExported",function(a){return a},"~S");e(b,"setFileChooser",function(){},"JSV.common.ExportType");e(b,"showFileOpenDialog",function(a,b){JSV.common.JSViewer.jmolObject.loadFileAsynchronously(this,this.vwr.html5Applet,"?",b);return null},"~O,~A");c(b,"setData",function(a,b,c){if(null!=a)if(null==b)this.vwr.selectedPanel.showMessage(a,"File Open Error"); +else{var f=null==c?null:"",e=!1,e=c[0],f=c[1];this.vwr.si.siOpenDataOrFile(String.instantialize(b),"cache://"+a,null,null,-1,-1,e,null,null);null!=f&&this.vwr.runScript(f)}},"~S,~O,~A");e(b,"getUrlFromDialog",function(a,b){return prompt(a,b)},"~S,~S")});r("JSV.js2d");y=u(JSV.js2d,"JsFont",null);y.newFont=c(y,"newFont",function(b,a,c,e,f){b=b.equals("Monospaced")?"Courier":b.startsWith("Sans")?"Sans-Serif":"Serif";return(a?"bold ":"")+(c?"italic ":"")+e+f+" "+b},"~S,~B,~B,~N,~S");y.getFontMetrics= +c(y,"getFontMetrics",function(b,a){a.font!=b.font&&(a.font=b.font,b.font=a.font,a._fontAscent=Math.ceil(b.fontSize),a._fontDescent=Math.ceil(0.25*b.fontSize));return a},"JU.Font,~O");y.getAscent=c(y,"getAscent",function(b){return Math.ceil(b._fontAscent)},"~O");y.getDescent=c(y,"getDescent",function(b){return Math.ceil(b._fontDescent)},"~O");y.stringWidth=c(y,"stringWidth",function(b,a){b.fontMetrics.font=b.font;return Math.ceil(b.fontMetrics.measureText(a).width)},"JU.Font,~S");r("JSV.js2d");v(["J.api.GenericGraphics"], +"JSV.js2d.JsG2D",["JU.CU","JSV.common.JSViewer","JS.Color"],function(){var b=j(function(){this.windowHeight=this.windowWidth=0;this.inPath=this.isShifted=!1;p(this,arguments)},JSV.js2d,"JsG2D",null,J.api.GenericGraphics);e(b,"getColor4",function(a,b,c,f){return JS.Color.get4(a,b,c,f)},"~N,~N,~N,~N");e(b,"getColor3",function(a,b,c){return JS.Color.get3(a,b,c)},"~N,~N,~N");e(b,"getColor1",function(a){return JS.Color.get1(a)},"~N");e(b,"newGrayScaleImage",function(a,b,c,f,e){return JSV.common.JSViewer.jmolObject.newGrayScaleImage(a, +b,c,f,e)},"~O,~O,~N,~N,~A");e(b,"drawGrayScaleImage",function(a,b,c,f,e,h,j,k,l,m){a=e-c+1;h=h-f+1;l=l-j+1;m=m-k+1;e=b.w*a/l;var p=b.h*h/m;b.width=e;b.height=p;var n=b.div;b=b.layer;b.style.left=c+"px";b.style.top=f+"px";b.style.width=a+"px";b.style.height=h+"px";n.style.left=-j*a/l+"px";n.style.top=-k*h/m+"px";n.style.width=e+"px";n.style.height=p+"px"},"~O,~O,~N,~N,~N,~N,~N,~N,~N,~N");e(b,"drawLine",function(a,b,c,f,e){var h=this.inPath;h||a.beginPath();a.moveTo(b,c);a.lineTo(f,e);h||a.stroke()}, +"~O,~N,~N,~N,~N");e(b,"drawCircle",function(a,b,c,f){f/=2;a.beginPath();a.arc(b+f,c+f,f,0,2*Math.PI,!1);a.stroke()},"~O,~N,~N,~N");e(b,"drawPolygon",function(a,b,c,f){this.doPoly(a,b,c,f,!1)},"~O,~A,~A,~N");c(b,"doPoly",function(a,b,c,f,e){a.beginPath();a.moveTo(b[0],c[0]);for(var h=1;h":""+this.pd.getSpectrumAt(0)});e(b,"processMouseEvent",function(a,b,c,f,e){return null!=this.mouse&&this.mouse.processEvent(a,b,c,f,e)},"~N,~N,~N,~N,~N");e(b,"processTwoPointGesture",function(a){null!=this.mouse&&this.mouse.processTwoPointGesture(a)},"~A");e(b,"processKeyEvent",function(a){null!=this.mouse&&this.mouse.processKeyEvent(a)},"~O");e(b,"showMenu",function(a,b){this.vwr.showMenu(a,b)},"~N,~N")});r("JSV.js2d");v(["JSV.common.ColorParameters"], +"JSV.js2d.JsParameters",["JS.Color"],function(){var b=u(JSV.js2d,"JsParameters",JSV.common.ColorParameters);m(b,function(){B(this,JSV.js2d.JsParameters,[])});e(b,"isValidFontName",function(){return!0},"~S");e(b,"getColor1",function(a){return JS.Color.get1(a)},"~N");e(b,"getColor3",function(a,b,c){return JS.Color.get3(a,b,c)},"~N,~N,~N");c(b,"copy",function(a){return(new JSV.js2d.JsParameters).setName(a).setElementColors(this)},"~S")});r("JSV.js2d");v(["J.api.GenericPlatform"],"JSV.js2d.JsPlatform", +"java.net.URL JU.AjaxURLStreamHandlerFactory $.Rdr JSV.app.GenericMouse JSV.js2d.Display $.Image $.JsFile $.JsFont".split(" "),function(){var b=j(function(){this.context=this.viewer=this.canvas=null;p(this,arguments)},JSV.js2d,"JsPlatform",null,J.api.GenericPlatform);e(b,"setViewer",function(a,b){var c="";this.viewer=a;this.canvas=b;null!=b&&(c=b.getContext("2d"),b.imgdata=c.getImageData(0,0,b.width,b.height),b.buf8=b.imgdata.data);""!==c&&(this.context=c);try{java.net.URL.setURLStreamHandlerFactory(new JU.AjaxURLStreamHandlerFactory)}catch(f){}}, +"J.api.PlatformViewer,~O");e(b,"isSingleThreaded",function(){return!0});e(b,"getJsObjectInfo",function(a,b,c){return null==b?null:"localName"==b?a[0].nodeName:null==c?a[0][b]:a[0][b](c[0])},"~A,~S,~A");e(b,"isHeadless",function(){return!1});e(b,"getMouseManager",function(a,b){return new JSV.app.GenericMouse(b)},"~N,~O");e(b,"convertPointFromScreen",function(a,b){JSV.js2d.Display.convertPointFromScreen(a,b)},"~O,JU.P3");e(b,"getFullScreenDimensions",function(a,b){JSV.js2d.Display.getFullScreenDimensions(a, +b)},"~O,~A");e(b,"getMenuPopup",function(){return null},"~S,~S");e(b,"hasFocus",function(a){return JSV.js2d.Display.hasFocus(a)},"~O");e(b,"prompt",function(a,b,c,f){return JSV.js2d.Display.prompt(a,b,c,f)},"~S,~S,~A,~B");e(b,"renderScreenImage",function(a,b){JSV.js2d.Display.renderScreenImage(this.viewer,a,b)},"~O,~O");e(b,"drawImage",function(a,b,c,f,e,h){JSV.js2d.Image.drawImage(a,b,c,f,e,h)},"~O,~O,~N,~N,~N,~N,~B");e(b,"requestFocusInWindow",function(a){JSV.js2d.Display.requestFocusInWindow(a)}, +"~O");e(b,"repaint",function(a){JSV.js2d.Display.repaint(a)},"~O");e(b,"setTransparentCursor",function(a){JSV.js2d.Display.setTransparentCursor(a)},"~O");e(b,"setCursor",function(a,b){JSV.js2d.Display.setCursor(a,b)},"~N,~O");e(b,"allocateRgbImage",function(a,b,c,f,e,h){return JSV.js2d.Image.allocateRgbImage(a,b,c,f,e,h?null:this.canvas)},"~N,~N,~A,~N,~B,~B");e(b,"notifyEndOfRendering",function(){});e(b,"createImage",function(){return null},"~O");e(b,"disposeGraphics",function(){},"~O");e(b,"grabPixels", +function(a,b,c){a.image&&(b!=a.width||c!=a.height)&&Jmol._setCanvasImage(a,b,c);if(a.buf32)return a.buf32;b=JSV.js2d.Image.grabPixels(JSV.js2d.Image.getGraphics(a),b,c);return a.buf32=b},"~O,~N,~N,~A");e(b,"drawImageToBuffer",function(a,b,c,f,e){return this.grabPixels(c,f,e,null)},"~O,~O,~O,~N,~N,~N");e(b,"getTextPixels",function(a,b,c,f,e,h,j){return JSV.js2d.Image.getTextPixels(a,b,c,e,h,j)},"~S,JU.Font,~O,~O,~N,~N,~N");e(b,"flushImage",function(){},"~O");e(b,"getGraphics",function(a){return null== +a?this.context:this.context=JSV.js2d.Image.getGraphics(this.canvas=a)},"~O");e(b,"getImageHeight",function(a){return null==a?-1:JSV.js2d.Image.getHeight(a)},"~O");e(b,"getImageWidth",function(a){return null==a?-1:JSV.js2d.Image.getWidth(a)},"~O");e(b,"getStaticGraphics",function(a,b){return JSV.js2d.Image.getStaticGraphics(a,b)},"~O,~B");e(b,"newBufferedImage",function(a,b,c){return self.Jmol&&Jmol._getHiddenCanvas?Jmol._getHiddenCanvas(this.vwr.html5Applet,"stereoImage",b,c):null},"~O,~N,~N");e(b, +"newOffScreenImage",function(a,b){return self.Jmol&&Jmol._getHiddenCanvas?Jmol._getHiddenCanvas(this.vwr.html5Applet,"textImage",a,b):null},"~N,~N");e(b,"waitForDisplay",function(){return!1},"~O,~O");e(b,"fontStringWidth",function(a,b){return JSV.js2d.JsFont.stringWidth(a,b)},"JU.Font,~S");e(b,"getFontAscent",function(a){return JSV.js2d.JsFont.getAscent(a)},"~O");e(b,"getFontDescent",function(a){return JSV.js2d.JsFont.getDescent(a)},"~O");e(b,"getFontMetrics",function(a,b){return JSV.js2d.JsFont.getFontMetrics(a, +b)},"JU.Font,~O");e(b,"newFont",function(a,b,c,f){return JSV.js2d.JsFont.newFont(a,b,c,f,"px")},"~S,~B,~B,~N");e(b,"getDateFormat",function(a){if(null!=a){if(0<=a.indexOf("8824")){var b=new Date;a=b.toString().split(" ");var c="0"+b.getMonth(),c=c.substring(c.length-2),b="0"+b.getDate(),b=b.substring(b.length-2);return a[3]+c+b+a[4].replace(/\:/g,"")+a[5].substring(3,6)+"'"+a[5].substring(6,8)+"'"}if(0<=a.indexOf("8601"))return b=new Date,a=b.toString().split(" "),c="0"+b.getMonth(),c=c.substring(c.length- +2),b="0"+b.getDate(),b=b.substring(b.length-2),a[3]+c+b+a[4].replace(/\:/g,"")+a[5].substring(3,6)+"'"+a[5].substring(6,8)+"'"}return(""+new Date).split(" (")[0]},"~S");e(b,"newFile",function(a){return new JSV.js2d.JsFile(a)},"~S");e(b,"getBufferedFileInputStream",function(){return null},"~S");e(b,"getURLContents",function(a,b,c,f){a=JSV.js2d.JsFile.getURLContents(a,b,c);try{return!f?a:"string"==typeof a?a:C(a,"JU.SB")?a.toString():C(a,Array)?String.instantialize(a):String.instantialize(JU.Rdr.getStreamAsBytes(a, +null))}catch(e){if(z(e,Exception))return""+e;throw e;}},"java.net.URL,~A,~S,~B");e(b,"getLocalUrl",function(){return null},"~S");e(b,"getImageDialog",function(){return null},"~S,java.util.Map");e(b,"forceAsyncLoad",function(){return!1},"~S");e(b,"getInChI",function(){return null});e(b,"confirm",function(a,b){var c=!1;null!=b&&(c=!1);return c?1:2},"~S,~S")});r("JSV.js2d");v(["JSV.api.JSVMainPanel"],"JSV.js2d.JsMainPanel",null,function(){var b=j(function(){this.selectedPanel=null;this.currentPanelIndex= +0;this.title=null;this.enabled=this.focusable=this.visible=!1;p(this,arguments)},JSV.js2d,"JsMainPanel",null,JSV.api.JSVMainPanel);e(b,"getCurrentPanelIndex",function(){return this.currentPanelIndex});e(b,"dispose",function(){});e(b,"getTitle",function(){return this.title});e(b,"setTitle",function(a){this.title=a},"~S");e(b,"setSelectedPanel",function(a,b,c){b!==this.selectedPanel&&(this.selectedPanel=b);a=a.selectPanel(b,c);0<=a&&(this.currentPanelIndex=a);this.visible=!0},"JSV.common.JSViewer,JSV.api.JSVPanel,JU.Lst"); +c(b,"getHeight",function(){return null==this.selectedPanel?0:this.selectedPanel.getHeight()});c(b,"getWidth",function(){return null==this.selectedPanel?0:this.selectedPanel.getWidth()});e(b,"isEnabled",function(){return this.enabled});e(b,"isFocusable",function(){return this.focusable});e(b,"isVisible",function(){return this.visible});e(b,"setEnabled",function(a){this.enabled=a},"~B");e(b,"setFocusable",function(a){this.focusable=a},"~B")});r("JSV.source");v(["JSV.source.JDXHeader","java.util.Hashtable"], +"JSV.source.JDXDataObject","JU.DF $.PT JSV.common.Annotation $.Coordinate JSV.exception.JSVException JU.Logger".split(" "),function(){var b=j(function(){this.sourceID="";this.isSimulation=!1;this.blockID=0;this.inlineData=this.filePathForwardSlash=this.filePath=null;this.fileShiftRef=1.7976931348623157E308;this.fileShiftRefDataPt=this.fileShiftRefType=-1;this.deltaX=this.maxY=this.maxX=this.minY=this.minX=NaN;this.xyCoords=null;this.$isHZtoPPM=this.continuous=!1;this.xIncreases=!0;this.fileLastX= +this.fileFirstX=1.7976931348623157E308;this.fileNPoints=-1;this.yFactor=this.xFactor=1.7976931348623157E308;this.nucleusX=null;this.nucleusY="?";this.freq2dY=this.freq2dX=NaN;this.y2DUnits="";this.parent=null;this.yUnits=this.xUnits="";this.yLabel=this.xLabel=null;this.observedNucl=this.varName="";this.observedFreq=1.7976931348623157E308;this.numDim=1;this.nH=0;this.y2D=NaN;p(this,arguments)},JSV.source,"JDXDataObject",JSV.source.JDXHeader);c(b,"setInlineData",function(a){this.inlineData=a},"~S"); +c(b,"getInlineData",function(){return this.inlineData});c(b,"setFilePath",function(a){null!=a&&(this.filePathForwardSlash=(this.filePath=a.trim()).$replace("\\","/"))},"~S");c(b,"getFilePath",function(){return this.filePath});c(b,"getFilePathForwardSlash",function(){return this.filePathForwardSlash});c(b,"setBlockID",function(a){this.blockID=a},"~N");c(b,"checkJDXRequiredTokens",function(){var a=1.7976931348623157E308==this.fileFirstX?"##FIRSTX":1.7976931348623157E308==this.fileLastX?"##LASTX":-1== +this.fileNPoints?"##NPOINTS":1.7976931348623157E308==this.xFactor?"##XFACTOR":1.7976931348623157E308==this.yFactor?"##YFACTOR":null;if(null!=a)throw new JSV.exception.JSVException("Error Reading Data Set: "+a+" not found");});c(b,"setXFactor",function(a){this.xFactor=a},"~N");c(b,"getXFactor",function(){return this.xFactor});c(b,"setYFactor",function(a){this.yFactor=a},"~N");c(b,"getYFactor",function(){return this.yFactor});c(b,"setVarName",function(a){this.varName=a},"~S");c(b,"isImaginary",function(){return this.varName.contains("IMAG")}); +c(b,"setXUnits",function(a){this.xUnits=a},"~S");c(b,"getXUnits",function(){return this.xUnits});c(b,"setYUnits",function(a){a.equals("PPM")&&(a="ARBITRARY UNITS");this.yUnits=a},"~S");c(b,"getYUnits",function(){return this.yUnits});c(b,"setXLabel",function(a){this.xLabel=a},"~S");c(b,"setYLabel",function(a){this.yLabel=a},"~S");c(b,"setObservedNucleus",function(a){this.observedNucl=a;this.is1D()&&(this.parent.nucleusX=this.nucleusX=this.fixNucleus(a))},"~S");c(b,"getObservedNucleus",function(){return this.observedNucl}); +c(b,"setObservedFreq",function(a){this.observedFreq=a},"~N");c(b,"getObservedFreq",function(){return this.observedFreq});c(b,"setHydrogenCount",function(a){this.nH=a},"~N");c(b,"getHydrogenCount",function(){return this.nH});c(b,"is1D",function(){return 1==this.numDim});c(b,"getNumDim",function(){return this.numDim});c(b,"setNumDim",function(a){this.numDim=a},"~N");c(b,"setY2D",function(a){this.y2D=a},"~N");c(b,"getY2D",function(){return this.y2D});c(b,"setY2DUnits",function(a){this.y2DUnits=a},"~S"); +c(b,"getY2DPPM",function(){var a=this.y2D;this.y2DUnits.equals("HZ")&&(a/=this.freq2dY);return a});c(b,"setNucleusAndFreq",function(a,b){a=this.fixNucleus(a);b?this.nucleusX=a:this.nucleusY=a;var c;if(0<=this.observedNucl.indexOf(a))c=this.observedFreq;else{c=JSV.source.JDXDataObject.getGyromagneticRatio(this.fixNucleus(this.observedNucl));var e=JSV.source.JDXDataObject.getGyromagneticRatio(a);c=this.observedFreq*e/c}b?this.freq2dX=c:this.freq2dY=c;JU.Logger.info("Freq for "+a+" = "+c)},"~S,~B"); +c(b,"fixNucleus",function(a){return JU.PT.rep(JU.PT.trim(a,"[]^<>"),"NUC_","")},"~S");b.getNominalSpecFreq=c(b,"getNominalSpecFreq",function(a,b){var c=b*JSV.source.JDXDataObject.getGyromagneticRatio("1H")/JSV.source.JDXDataObject.getGyromagneticRatio(a),e=100*Math.round(c/100);return Double.isNaN(c)?-1:2>Math.abs(c-e)?e:Math.round(c)},"~S,~N");b.getGyromagneticRatio=c(b,"getGyromagneticRatio",function(a){var b=null;try{b=JSV.source.JDXDataObject.gyroMap.get(a);if(null!=b)return b.doubleValue();for(var c= +0;cJSV.common.Coordinate.getMaxY(this.xyCoords,0,this.xyCoords.length-1)?1:100});c(b,"isInverted",function(){return this.isTransmittance()});c(b,"canConvertTransAbs",function(){return this.continuous&&this.yUnits.toLowerCase().contains("abs")||this.yUnits.toLowerCase().contains("trans")});c(b,"canShowSolutionColor",function(){return this.isContinuous()&&this.canConvertTransAbs()&&(this.xUnits.toLowerCase().contains("nanometer")||this.xUnits.equalsIgnoreCase("nm"))&& +401>this.getFirstX()&&699b?"":JU.DF.formatDecimalDbl(b,c)+e},"JSV.common.Measurement");c(b,"isNMR",function(){return 0<=this.dataType.toUpperCase().indexOf("NMR")});c(b,"isHNMR",function(){return this.isNMR()&&0<=this.observedNucl.toUpperCase().indexOf("H")});c(b,"setXYCoords",function(a){this.xyCoords=a},"~A");c(b,"invertYAxis",function(){for(var a=this.xyCoords.length;0<=--a;)this.xyCoords[a].setYVal(-this.xyCoords[a].getYVal());a=this.minY;this.minY=-this.maxY;this.maxY= +-a;return this});c(b,"getFirstX",function(){return this.xyCoords[0].getXVal()});c(b,"getFirstY",function(){return this.xyCoords[0].getYVal()});c(b,"getLastX",function(){return this.xyCoords[this.xyCoords.length-1].getXVal()});c(b,"getLastY",function(){return this.xyCoords[this.xyCoords.length-1].getYVal()});c(b,"getMinX",function(){return Double.isNaN(this.minX)?this.minX=JSV.common.Coordinate.getMinX(this.xyCoords,0,this.xyCoords.length-1):this.minX});c(b,"getMinY",function(){return Double.isNaN(this.minY)? +this.minY=JSV.common.Coordinate.getMinY(this.xyCoords,0,this.xyCoords.length-1):this.minY});c(b,"getMaxX",function(){return Double.isNaN(this.maxX)?this.maxX=JSV.common.Coordinate.getMaxX(this.xyCoords,0,this.xyCoords.length-1):this.maxX});c(b,"getMaxY",function(){return Double.isNaN(this.maxY)?this.maxY=JSV.common.Coordinate.getMaxY(this.xyCoords,0,this.xyCoords.length-1):this.maxY});c(b,"normalizeSimulation",function(a){this.isNMR()&&this.is1D()&&(a/=this.getMaxY(),this.maxY=NaN,JSV.common.Coordinate.applyScale(this.xyCoords, +1,a),JU.Logger.info("Y values have been scaled by a factor of "+a))},"~N");c(b,"getDeltaX",function(){return Double.isNaN(this.deltaX)?this.deltaX=JSV.common.Coordinate.deltaX(this.getLastX(),this.getFirstX(),this.xyCoords.length):this.deltaX});c(b,"copyTo",function(a){a.setTitle(this.title);a.setJcampdx(this.jcampdx);a.setOrigin(this.origin);a.setOwner(this.owner);a.setDataClass(this.dataClass);a.setDataType(this.dataType);a.setHeaderTable(this.headerTable);a.setXFactor(this.xFactor);a.setYFactor(this.yFactor); +a.setXUnits(this.xUnits);a.setYUnits(this.yUnits);a.setXLabel(this.xLabel);a.setYLabel(this.yLabel);a.setXYCoords(this.xyCoords);a.setContinuous(this.continuous);a.setIncreasing(this.xIncreases);a.observedFreq=this.observedFreq;a.observedNucl=this.observedNucl;a.fileShiftRef=this.fileShiftRef;a.fileShiftRefDataPt=this.fileShiftRefDataPt;a.fileShiftRefType=this.fileShiftRefType;a.$isHZtoPPM=this.$isHZtoPPM;a.numDim=this.numDim;a.nucleusX=this.nucleusX;a.nucleusY=this.nucleusY;a.freq2dX=this.freq2dX; +a.freq2dY=this.freq2dY;a.setFilePath(this.filePath);a.nH=this.nH},"JSV.source.JDXDataObject");c(b,"getTypeLabel",function(){return this.isNMR()?this.nucleusX+"NMR":this.dataType});c(b,"getDefaultAnnotationInfo",function(a){var b,c=this.isNMR();switch(a){case JSV.common.Annotation.AType.Integration:return A(-1,[null,E(-1,[1]),null]);case JSV.common.Annotation.AType.Measurements:return a=c?A(-1,["Hz","ppm"]):A(-1,[""]),b=this.isHNMR()?E(-1,[1,4]):E(-1,[1,3]),A(-1,[a,b,Integer.$valueOf(0)]);case JSV.common.Annotation.AType.PeakList:return a= +c?A(-1,["Hz","ppm"]):A(-1,[""]),b=this.isHNMR()?E(-1,[1,2]):E(-1,[1,1]),A(-1,[a,b,Integer.$valueOf(c?1:0)])}return null},"JSV.common.Annotation.AType");c(b,"getPeakListArray",function(a,b,c){var e=a.getXVal();a=a.getYVal();this.isNMR()&&(a/=c);c=Math.abs(e-b[0]);b[0]=e;var h=c+b[1];b[1]=c;var j=h+b[2];b[2]=h;return this.isNMR()?M(-1,[e,a,e*this.observedFreq,20this.jcampdx.indexOf("JEOL"))&&this.applyShiftReference(b?a:1,this.fileShiftRef);this.fileFirstX>this.fileLastX&&JSV.common.Coordinate.reverse(this.xyCoords);b&&(JSV.common.Coordinate.applyScale(this.xyCoords, +1/a,1),this.setXUnits("PPM"),this.setHZtoPPM(!0))});c(b,"setShiftReference",function(a,b,c){this.fileShiftRef=a;this.fileShiftRefDataPt=0this.xyCoords.length||0>this.fileShiftRefDataPt)){var c;switch(this.fileShiftRefType){case 0:b=this.xyCoords[this.fileShiftRefDataPt-1].getXVal()-b*a;break;case 1:b=this.fileFirstX- +b*a;break;case 2:b=this.fileLastX+b}for(var e=0;e>"+this.line+"<<\n x, xcheck "+g+" "+g/this.xFactor+" "+n/this.xFactor+" "+a/this.xFactor);var r= +k*this.yFactor,s=(new JSV.common.Coordinate).set(g,r);if(0==j||!p)this.addPoint(s,j++);else if(j>>>"+this.line.substring(this.ich));Double.isNaN(k=this.nextValue(k))?this.logError("There was an error reading line "+m+" char "+B+":"+this.line.substring(0,B)+">>>>"+this.line.substring(B)): +(g+=a,1.7976931348623157E308==k&&(k=0,this.logError("Point marked invalid '?' for line "+m+" char "+B+":"+this.line.substring(0,B)+">>>>"+this.line.substring(B))),this.addPoint((new JSV.common.Coordinate).set(g,k*this.yFactor),j++),this.debugging&&this.logError("nx="+ ++A+" "+g+" "+g/this.xFactor+" yval="+k))}this.lastX=g;!l&&j>this.nPoints&&(this.logError("! points overflow nPoints!"),l=!0);h=this.line}}catch(C){if(z(C,"java.io.IOException"))C.printStackTrace();else throw C;}this.checkZeroFill(j, +e);return this.xyCoords},"JU.SB");c(b,"checkZeroFill",function(a,b){this.nptsFound=a;if(this.nPoints==this.nptsFound)1E-5=this.nPoints)){this.xyCoords[b]=a;var c=a.getYVal();c>this.maxY?this.maxY=c:c=b?b.charCodeAt(0)-73:105-b.charCodeAt(0)));case 2:return this.dupCount=this.readNextInteger("s"==b?9:b.charCodeAt(0)-82)-1,this.getDuplicate(a);case 3:a=this.readNextSqueezedNumber(b);break;case 4:this.ich--;a=this.readSignedFloat();break;case -1:a=1.7976931348623157E308;break;default:a=NaN}this.isDIF=!1;return a},"~N");c(b,"skipUnknown",function(){for(var a="\x00";this.ich=b)&&this.ich++}return c*Double.parseDouble(this.line.substring(a,this.ich))}); +c(b,"getDuplicate",function(a){this.dupCount--;return this.isDIF?a+this.lastDif:a},"~N");c(b,"readNextInteger",function(a){for(var b=String.fromCharCode(0);this.ich=b;)a=10*a+(0>a?48-b.charCodeAt(0):b.charCodeAt(0)-48),this.ich++;return a},"~N");c(b,"readNextSqueezedNumber",function(a){var b=this.ich;this.scanToNonnumeric();return Double.parseDouble((96=a);)this.ich++;return this.ich=b;b++)switch(String.fromCharCode(b).charCodeAt(0)){case 37:case 74:case 75:case 76:case 77:case 78:case 79:case 80:case 81:case 82:case 106:case 107:case 108:case 109:case 110:case 111:case 112:case 113:case 114:JSV.source.JDXDecompressor.actions[b]= +1;break;case 43:case 45:case 46:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:JSV.source.JDXDecompressor.actions[b]=4;break;case 63:JSV.source.JDXDecompressor.actions[b]=-1;break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:JSV.source.JDXDecompressor.actions[b]=3;break;case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 115:JSV.source.JDXDecompressor.actions[b]= +2}});r("JSV.source");v(["JU.Lst"],"JSV.source.JDXHeader",null,function(){var b=j(function(){this.title="";this.jcampdx="5.01";this.origin=this.dataClass=this.dataType="";this.owner="PUBLIC DOMAIN";this.time=this.date=this.longDate="";this.headerTable=this.qualifiedType=null;p(this,arguments)},JSV.source,"JDXHeader",null);H(b,function(){this.headerTable=new JU.Lst});c(b,"setTitle",function(a){this.title=a},"~S");c(b,"setJcampdx",function(a){this.jcampdx=a},"~S");c(b,"setDataType",function(a){this.dataType= +a},"~S");c(b,"setDataClass",function(a){this.dataClass=a},"~S");c(b,"setOrigin",function(a){this.origin=a},"~S");c(b,"setOwner",function(a){this.owner=a},"~S");c(b,"setLongDate",function(a){this.longDate=a},"~S");c(b,"setDate",function(a){this.date=a},"~S");c(b,"setTime",function(a){this.time=a},"~S");c(b,"getTitle",function(){return this.title});b.getTypeName=c(b,"getTypeName",function(a){a=a.toUpperCase();for(var b=0;bs||0<=u&&u");break}}else{if(!b){if(c.equals("##DATATYPE")&&e.toUpperCase().equals("LINK")){this.getBlockSpectra(j);h=null;continue}if(c.equals("##NTUPLES")||c.equals("##VARNAME")){this.getNTupleSpectra(j, +h,c);h=null;continue}}c.equals("##JCAMPDX")&&this.setVenderSpecificValues(this.t.rawLine);null==h&&(h=new JSV.common.Spectrum);this.processLabel(h,j,c,e,b)}b&&null!=h&&this.addSpectrum(h,!1)}if(!g)throw new JSV.exception.JSVException("##TITLE record not found");this.source.setErrorLog(this.errorLog.toString());return this.source},"~O,~B");c(b,"processLabel",function(a,b,c,e,g){if(this.readDataLabel(a,c,e,this.errorLog,this.obscure,g)||g)JSV.source.JDXReader.addHeader(b,this.t.rawLabel,e),g||this.checkCustomTags(a, +c,e)},"JSV.common.Spectrum,JU.Lst,~S,~S,~B");c(b,"logError",function(a){this.errorLog.append(null==this.filePath||this.filePath.equals(this.lastErrPath)?"":this.filePath).append("\n").append(a).append("\n");this.lastErrPath=this.filePath},"~S");c(b,"setVenderSpecificValues",function(a){0<=a.indexOf("JEOL")&&(System.out.println("Skipping ##SHIFTREFERENCE for JEOL "+a),this.ignoreShiftReference=!0);0<=a.indexOf("MestReNova")&&(this.ignorePeakTables=!0)},"~S");c(b,"getValue",function(a){var b=this.isTabularDataLabel(a)? +"":this.t.getValue();return"##END".equals(a)?null:b},"~S");c(b,"isTabularDataLabel",function(a){return this.isTabularData=0<="##DATATABLE##PEAKTABLE##XYDATA##XYPOINTS#".indexOf(a+"#")},"~S");c(b,"addSpectrum",function(a,b){if(!this.loadImaginary&&a.isImaginary())return JU.Logger.info("FileReader skipping imaginary spectrum -- use LOADIMAGINARY TRUE to load this spectrum."),!0;if(null!=this.acdAssignments){if(!a.dataType.equals("MASS SPECTRUM")&&!a.isContinuous())return JU.Logger.info("Skipping ACD Labs line spectrum for "+ +a),!0;if(0this.lastSpec)return!(this.done=!0);a.setBlockID(this.blockID);this.source.addJDXSpectrum(null,a,b);return!0},"JSV.common.Spectrum,~B");c(b,"getBlockSpectra",function(a){JU.Logger.debug("--JDX block start--");for(var b="",c=null,e=0==this.source.type,g=!1;null!=(b=this.t.getLabel())&&!b.equals("##TITLE");)c=this.getValue(b),e&&!JSV.source.JDXReader.readHeaderLabel(this.source,b,c,this.errorLog,this.obscure)&&JSV.source.JDXReader.addHeader(a, +this.t.rawLabel,c),b.equals("##BLOCKS")&&100=this.firstSpec&&(g=!0);c=this.getValue(b);if(!"##TITLE".equals(b))throw new JSV.exception.JSVException("Unable to read block source");e&&this.source.setHeaderTable(a);this.source.type=1;this.source.isCompoundSource=!0;e=new JSV.common.Spectrum;a=new JU.Lst;this.readDataLabel(e,b,c,this.errorLog,this.obscure,!1);try{for(var h;null!=(h=this.t.getLabel());){if(null==(c=this.getValue(h))&&"##END".equals(b)){JU.Logger.debug("##END= "+this.t.getValue()); +break}b=h;if(this.isTabularData)this.processTabularData(e,a,b,!1);else{if(b.equals("##DATATYPE"))if(c.toUpperCase().equals("LINK"))this.getBlockSpectra(a),b=e=null;else{if(c.toUpperCase().startsWith("NMR PEAK")&&this.ignorePeakTables)return this.done=!0,this.source}else if(b.equals("##NTUPLES")||b.equals("##VARNAME"))this.getNTupleSpectra(a,e,b),e=null,b="";if(this.done)break;if(null==e){e=new JSV.common.Spectrum;a=new JU.Lst;if(""===b)continue;if(null==b){b="##END";continue}}if(null==c){if(0 +b.length)return!0;if(b.equals("##.OBSERVEFREQUENCY "))return a.setObservedFreq(this.parseAFFN(b,c)),!1;if(b.equals("##.OBSERVENUCLEUS "))return a.setObservedNucleus(c),!1;if(b.equals("##$REFERENCEPOINT ")&&!a.isShiftTypeSpecified()){var h=c.indexOf(" ");0a.fileFirstX);a.setContinuous(!0);var e=new JSV.source.JDXDecompressor(this.t,a.fileFirstX,a.fileLastX,a.xFactor,a.yFactor,a.fileNPoints),g=System.currentTimeMillis(),h=e.decompressData(this.errorLog);JU.Logger.debugging&&JU.Logger.debug("decompression time = "+(System.currentTimeMillis()-g)+" ms");a.setXYCoords(h);g=e.getMinY();null!= +b&&(gb[1]&&(b[1]=g));a.finalizeCoordinates();this.errorLog.length()!=c&&(c=JSV.common.Coordinate.deltaX(a.fileLastX,a.fileFirstX,a.fileNPoints),this.logError(a.getTitle()),this.logError("firstX from Header "+a.fileFirstX),this.logError("lastX from Header "+a.fileLastX+" Found "+e.lastX),this.logError("deltaX from Header "+c),this.logError("Number of points in Header "+a.fileNPoints+" Found "+e.getNPointsFound()));JU.Logger.debugging&&System.err.println(this.errorLog.toString())}, +"JSV.source.JDXDataObject,~A");b.addHeader=c(b,"addHeader",function(a,b,c){for(var e=null,g=0;gb)return!1;this.getMpr().set(this,this.filePath, +null);try{switch(this.reader=new java.io.BufferedReader(new java.io.StringReader(c)),b){case 0:this.mpr.readModels();break;case 10:case 20:this.peakData=new JU.Lst;this.source.peakCount+=this.mpr.readPeaks(20==b,this.source.peakCount);break;case 30:this.acdAssignments=new JU.Lst;this.acdMolFile=JU.PT.rep(c,"$$ Empty String","");break;case 40:case 50:case 60:this.acdAssignments=this.mpr.readACDAssignments(a.fileNPoints,40==b);break}}catch(e){if(z(e,Exception))throw new JSV.exception.JSVException(e.getMessage()); +throw e;}finally{this.reader=null}return!0},"JSV.common.Spectrum,~S,~S");c(b,"getMpr",function(){return null==this.mpr?this.mpr=JSV.common.JSViewer.getInterface("J.jsv.JDXMOLParser"):this.mpr});e(b,"rd",function(){return this.reader.readLine()});e(b,"setSpectrumPeaks",function(a,b,c){this.modelSpectrum.setPeakList(this.peakData,b,c);this.modelSpectrum.isNMR()&&this.modelSpectrum.setHydrogenCount(a)},"~N,~S,~S");e(b,"addPeakData",function(a){null==this.peakData&&(this.peakData=new JU.Lst);this.peakData.addLast(new JSV.common.PeakInfo(a))}, +"~S");e(b,"processModelData",function(){},"~S,~S,~S,~S,~S,~N,~N,~B");e(b,"discardLinesUntilContains",function(a){for(var b;null!=(b=this.rd())&&0>b.indexOf(a););return b},"~S");e(b,"discardLinesUntilContains2",function(a,b){for(var c;null!=(c=this.rd())&&0>c.indexOf(a)&&0>c.indexOf(b););return c},"~S,~S");e(b,"discardLinesUntilNonBlank",function(){for(var a;null!=(a=this.rd())&&0==a.trim().length;);return a});b.VAR_LIST_TABLE=A(-1,["PEAKTABLE XYDATA XYPOINTS"," (XY..XY) (X++(Y..Y)) (XY..XY) "])}); +r("JSV.source");v(["JSV.source.JDXHeader"],"JSV.source.JDXSource",["JU.Lst"],function(){var b=j(function(){this.type=0;this.isCompoundSource=!1;this.jdxSpectra=null;this.errors="";this.filePath=null;this.peakCount=0;this.isView=!1;this.inlineData=null;p(this,arguments)},JSV.source,"JDXSource",JSV.source.JDXHeader);m(b,function(a,b){B(this,JSV.source.JDXSource,[]);this.type=a;this.setFilePath(b);this.headerTable=new JU.Lst;this.jdxSpectra=new JU.Lst;this.isCompoundSource=0!=a},"~N,~S");c(b,"dispose", +function(){this.jdxSpectra=this.headerTable=null});c(b,"getJDXSpectrum",function(a){return this.jdxSpectra.size()<=a?null:this.jdxSpectra.get(a)},"~N");c(b,"addJDXSpectrum",function(a,b,c){null==a&&(a=this.filePath);b.setFilePath(a);null!=this.inlineData&&b.setInlineData(this.inlineData);a=this.jdxSpectra.size();(0==a||!this.jdxSpectra.get(a-1).addSubSpectrum(b,c))&&this.jdxSpectra.addLast(b)},"~S,JSV.common.Spectrum,~B");c(b,"getNumberOfSpectra",function(){return this.jdxSpectra.size()});c(b,"getSpectra", +function(){return this.jdxSpectra});c(b,"getSpectraAsArray",function(){return null==this.jdxSpectra?null:this.jdxSpectra.toArray()});c(b,"getErrorLog",function(){return this.errors});c(b,"setErrorLog",function(a){this.errors=a},"~S");c(b,"setFilePath",function(a){this.filePath=a},"~S");c(b,"getFilePath",function(){return this.filePath});b.createView=c(b,"createView",function(a){var b=new JSV.source.JDXSource(-2,"view");b.isView=!0;for(var c=0;cc?(a&&JU.Logger.info("BAD JDX LINE -- no '=' (line "+this.lineNo+"): "+this.line),this.rawLabel=this.line,a||(this.line="")):(this.rawLabel=this.line.substring(0, +c).trim(),a&&(this.line=this.line.substring(c+1)));this.labelLineNo=this.lineNo;JU.Logger.debugging&&JU.Logger.info(this.rawLabel);return JSV.source.JDXSourceStreamTokenizer.cleanLabel(this.rawLabel)},"~B");b.cleanLabel=c(b,"cleanLabel",function(a){if(null==a)return null;var b,c=new JU.SB;for(b=0;bthis.line.indexOf("$$"))return this.line.trim();var a=(new JU.SB).append(this.line);return JSV.source.JDXSourceStreamTokenizer.trimLines(a)});c(b,"flushLine",function(){var a=(new JU.SB).append(this.line);this.line=null;return JSV.source.JDXSourceStreamTokenizer.trimLines(a)});c(b,"readLine",function(){this.line=this.br.readLine();this.lineNo++;return this.line});b.trimLines=c(b,"trimLines",function(a){var b=a.length(),c=b-1,e=JSV.source.JDXSourceStreamTokenizer.ptNonWhite(a, +0,b);if(e>=b)return"";for(var g=O(b-e,"\x00"),h=0;e"\n\r".indexOf(a.charAt(e)););continue}}"\n"==j&&0 0) (this.xyData).setSelectedIntegral(this.xyData.get(this.iSelected), this.lastNorm = val); +this.eventApply(); +} else { +return this.callbackAD(id, msg); +}} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +} else { +throw ex; +} +} +return true; +}, "~S,~S"); +Clazz_defineMethod(c$, "checkSelectedIntegral", +function(){ +if (this.iSelected < 0) { +this.showMessage("Select a line on the table first, then click this button.", "Integration", 1); +return false; +}return true; +}); +Clazz_defineMethod(c$, "deleteIntegral", +function(){ +if (!this.checkSelectedIntegral()) return; +this.xyData.removeItemAt(this.iSelected); +this.iSelected = -1; +this.iRowColSelected = -1; +this.applyFromFields(); +}); +c$.posXY = Clazz_newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.dialog"); +Clazz_load(["JSV.dialog.JSVDialog"], "JSV.dialog.PeakListDialog", ["JSV.common.Annotation"], function(){ +var c$ = Clazz_declareType(JSV.dialog, "PeakListDialog", JSV.dialog.JSVDialog); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.dialog.PeakListDialog, []); +this.type = JSV.common.Annotation.AType.PeakList; +}); +Clazz_overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.PeakListDialog.posXY; +}); +Clazz_defineMethod(c$, "addUniqueControls", +function(){ +this.txt1 = this.dialog.addTextField("txtThreshold", "Threshold", null, "", "", true); +this.dialog.setPreferredSize(780, 350); +this.setThreshold(NaN); +this.combo1 = this.dialog.addSelectOption("cmbInterpolation", "Interpolation", Clazz_newArray(-1, ["parabolic", "none"]), 0, true); +}); +Clazz_overrideMethod(c$, "callback", +function(id, msg){ +if (id.equals("cmbInterpolation") || id.equals("txtThreshold")) id = "btnApply"; +return this.callbackAD(id, msg); +}, "~S,~S"); +c$.posXY = Clazz_newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.dialog"); +Clazz_load(["JSV.dialog.JSVDialog"], "JSV.dialog.MeasurementsDialog", ["JSV.common.Annotation"], function(){ +var c$ = Clazz_declareType(JSV.dialog, "MeasurementsDialog", JSV.dialog.JSVDialog); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.dialog.MeasurementsDialog, []); +this.type = JSV.common.Annotation.AType.Measurements; +}); +Clazz_defineMethod(c$, "addUniqueControls", +function(){ +}); +Clazz_overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.MeasurementsDialog.posXY; +}); +Clazz_overrideMethod(c$, "callback", +function(id, msg){ +return this.callbackAD(id, msg); +}, "~S,~S"); +c$.posXY = Clazz_newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.dialog"); +Clazz_load(["JSV.dialog.JSVDialog"], "JSV.dialog.OverlayLegendDialog", ["JSV.common.Annotation"], function(){ +var c$ = Clazz_declareType(JSV.dialog, "OverlayLegendDialog", JSV.dialog.JSVDialog); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.dialog.OverlayLegendDialog, []); +this.type = JSV.common.Annotation.AType.OverlayLegend; +}); +Clazz_overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.OverlayLegendDialog.posXY; +}); +Clazz_defineMethod(c$, "addUniqueControls", +function(){ +}); +Clazz_overrideMethod(c$, "callback", +function(id, msg){ +return false; +}, "~S,~S"); +c$.posXY = Clazz_newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.dialog"); +Clazz_load(["JSV.dialog.JSVDialog"], "JSV.dialog.ViewsDialog", ["JU.Lst", "$.PT", "$.SB", "JSV.common.Annotation"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.treeNodes = null; +this.checkBoxes = null; +this.closeSelectedButton = null; +this.combineSelectedButton = null; +this.viewSelectedButton = null; +this.checking = false; +Clazz_instantialize(this, arguments);}, JSV.dialog, "ViewsDialog", JSV.dialog.JSVDialog); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.dialog.ViewsDialog, []); +this.type = JSV.common.Annotation.AType.Views; +}); +Clazz_overrideMethod(c$, "getPosXY", +function(){ +return JSV.dialog.ViewsDialog.posXY; +}); +Clazz_defineMethod(c$, "addUniqueControls", +function(){ +this.checkBoxes = new JU.Lst(); +this.treeNodes = new JU.Lst(); +this.dialog.addButton("btnSelectAll", "Select All"); +this.dialog.addButton("btnSelectNone", "Select None"); +this.txt2 = this.dialog.addTextField("txtOffset", "Offset", "" + this.vwr.parameters.viewOffset, "%", null, true); +this.viewSelectedButton = this.dialog.addButton("btnViewSelected", "View Selected"); +this.combineSelectedButton = this.dialog.addButton("btnCombineSelected", "Combine Selected"); +this.closeSelectedButton = this.dialog.addButton("btnCloseSelected", "Close Selected"); +this.dialog.addButton("btnDone", "Done"); +this.dialog.setPreferredSize(800, 350); +this.txt1 = this.dialog.addCheckBox(null, null, 0, false); +this.addCheckBoxes(this.vwr.spectraTree.getRootNode(), 0, true); +this.addCheckBoxes(this.vwr.spectraTree.getRootNode(), 0, false); +}); +Clazz_defineMethod(c$, "addCheckBoxes", +function(rootNode, level, isViews){ +var enume = rootNode.children(); +while (enume.hasMoreElements()) { +var treeNode = enume.nextElement(); +var node = treeNode.getPanelNode(); +if (node.isView != isViews) continue; +var title = node.toString(); +if (title.indexOf("\n") >= 0) title = title.substring(0, title.indexOf('\n')); +var name = "chkBox" + this.treeNodes.size(); +var cb = this.dialog.addCheckBox(name, title, level, node.isSelected); +treeNode.setIndex(this.treeNodes.size()); +this.treeNodes.addLast(treeNode); +this.checkBoxes.addLast(cb); +this.addCheckBoxes(treeNode, level + 1, isViews); +} +}, "JSV.api.JSVTreeNode,~N,~B"); +Clazz_overrideMethod(c$, "checkEnables", +function(){ +var n = 0; +for (var i = 0; i < this.checkBoxes.size(); i++) { +if (this.dialog.isSelected(this.checkBoxes.get(i)) && this.treeNodes.get(i).getPanelNode().jsvp != null) { +n++; +}} +System.out.println("viewsdialog n=" + n); +this.dialog.setEnabled(this.closeSelectedButton, n > 0); +this.dialog.setEnabled(this.combineSelectedButton, n > 1); +this.dialog.setEnabled(this.viewSelectedButton, n == 1); +}); +Clazz_defineMethod(c$, "check", +function(name){ +var i = JU.PT.parseInt(name.substring(name.indexOf("_") + 1)); +var node = this.treeNodes.get(i); +var cb = this.checkBoxes.get(i); +var isSelected = this.dialog.isSelected(cb); +if (node.getPanelNode().jsvp == null) { +if (!this.checking && isSelected && this.dialog.getText(cb).startsWith("Overlay")) { +this.checking = true; +this.selectAll(false); +this.dialog.setSelected(cb, true); +node.getPanelNode().isSelected = true; +this.checking = false; +}var enume = node.children(); +while (enume.hasMoreElements()) { +var treeNode = enume.nextElement(); +this.dialog.setSelected(this.checkBoxes.get(treeNode.getIndex()), isSelected); +treeNode.getPanelNode().isSelected = isSelected; +node.getPanelNode().isSelected = isSelected; +} +} else { +node.getPanelNode().isSelected = isSelected; +}if (isSelected) for (i = this.treeNodes.size(); --i >= 0; ) if (this.treeNodes.get(i).getPanelNode().isView != node.getPanelNode().isView) { +this.dialog.setSelected(this.checkBoxes.get(this.treeNodes.get(i).getIndex()), false); +this.treeNodes.get(i).getPanelNode().isSelected = false; +} +this.checkEnables(); +}, "~S"); +Clazz_defineMethod(c$, "selectAll", +function(mode){ +for (var i = this.checkBoxes.size(); --i >= 0; ) { +this.dialog.setSelected(this.checkBoxes.get(i), mode); +this.treeNodes.get(i).getPanelNode().isSelected = mode; +} +this.checkEnables(); +}, "~B"); +Clazz_defineMethod(c$, "combineSelected", +function(){ +}); +Clazz_defineMethod(c$, "viewSelected", +function(){ +var sb = new JU.SB(); +var thisNode = null; +var n = 0; +for (var i = 0; i < this.checkBoxes.size(); i++) { +var cb = this.checkBoxes.get(i); +var node = this.treeNodes.get(i).getPanelNode(); +if (this.dialog.isSelected(cb) && node.jsvp != null) { +if (node.isView) { +thisNode = node; +n = 2; +break; +}n++; +var label = this.dialog.getText(cb); +sb.append(" ").append(label.substring(0, label.indexOf(":"))); +}} +var script = null; +if (n > 1) { +this.eventApply(); +script = "STACKOFFSETY " + this.vwr.parameters.viewOffset; +}if (thisNode == null) { +this.vwr.execView(sb.toString().trim(), false); +this.layoutDialog(); +} else { +this.vwr.setNode(thisNode); +}if (script != null) this.vwr.runScript(script); +}); +Clazz_defineMethod(c$, "closeSelected", +function(){ +this.vwr.runScript("close !selected"); +this.layoutDialog(); +}); +Clazz_overrideMethod(c$, "callback", +function(id, msg){ +if (id.equals("btnSelectAll")) { +this.selectAll(true); +} else if (id.equals("btnSelectNone")) { +this.selectAll(false); +} else if (id.equals("btnViewSelected")) { +this.viewSelected(); +} else if (id.equals("btnCombineSelected")) { +this.viewSelected(); +} else if (id.equals("btnCloseSelected")) { +this.closeSelected(); +} else if (id.equals("btnDone")) { +this.viewSelected(); +this.dispose(); +this.done(); +} else if (id.equals("txtOffset")) { +this.eventApply(); +this.viewSelected(); +} else if (id.startsWith("chk")) { +this.checkEnables(); +} else { +return this.callbackAD(id, msg); +}return true; +}, "~S,~S"); +Clazz_overrideMethod(c$, "applyFromFields", +function(){ +this.apply( Clazz_newArray(-1, [this.dialog.getText(this.txt2)])); +}); +c$.posXY = Clazz_newIntArray(-1, [-2147483648, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.dialog.DialogManager"], "JSV.js2d.JsDialogManager", ["JU.PT", "JSV.js2d.DialogTableModel", "$.JsDialog", "JS.Dimension", "$.JDialog", "$.JEditorPane", "$.JLabel", "$.JScrollPane", "$.JTable"], function(){ +var c$ = Clazz_declareType(JSV.js2d, "JsDialogManager", JSV.dialog.DialogManager); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.js2d.JsDialogManager, []); +}); +Clazz_overrideMethod(c$, "getDialog", +function(jsvDialog){ +return new JSV.js2d.JsDialog(this, jsvDialog, this.registerDialog(jsvDialog)); +}, "JSV.dialog.JSVDialog"); +Clazz_overrideMethod(c$, "getDialogInput", +function(parentComponent, phrase, title, msgType, icon, objects, defaultStr){ +{ +return prompt(phrase, defaultStr); +}}, "~O,~S,~S,~N,~O,~A,~S"); +Clazz_overrideMethod(c$, "showMessageDialog", +function(parentComponent, msg, title, msgType){ +{ +alert(msg); +}}, "~O,~S,~S,~N"); +Clazz_overrideMethod(c$, "getLocationOnScreen", +function(component){ +return Clazz_newIntArray (2, 0); +}, "~O"); +Clazz_overrideMethod(c$, "getOptionFromDialog", +function(frame, items, jsvp, dialogName, labelName){ +return this.vwr.html5Applet.getOption(items, dialogName, labelName); +}, "~O,~A,JSV.api.JSVPanel,~S,~S"); +Clazz_overrideMethod(c$, "showProperties", +function(frame, spectrum){ +var dialog = new JS.JDialog(); +dialog.setTitle("Header Information"); +var rowData = spectrum.getHeaderRowDataAsArray(); +var columnNames = Clazz_newArray(-1, ["Label", "Description"]); +var tableModel = new JSV.js2d.DialogTableModel(columnNames, rowData, false, true); +var table = new JS.JTable(tableModel); +table.setPreferredScrollableViewportSize( new JS.Dimension(400, 195)); +var scrollPane = new JS.JScrollPane(table); +dialog.getContentPane().add(scrollPane); +dialog.pack(); +dialog.setVisible(true); +dialog.toFront(); +}, "~O,JSV.common.Spectrum"); +Clazz_overrideMethod(c$, "showMessage", +function(frame, text, title){ +var dialog = new JS.JDialog(); +{ +dialog.manager = this; +}dialog.setTitle(title); +var pane; +if (text.indexOf("
") >= 0) { +pane = new JS.JLabel(text); +} else { +pane = new JS.JEditorPane(); +pane.setText(text); +}dialog.getContentPane().add(pane); +dialog.pack(); +dialog.setVisible(true); +dialog.toFront(); +}, "~O,~S,~S"); +Clazz_defineMethod(c$, "actionPerformed", +function(eventId){ +var pt = eventId.indexOf("/JT"); +if (pt >= 0) { +var pt2 = eventId.lastIndexOf("_"); +var pt1 = eventId.lastIndexOf("_", pt2 - 1); +var irow = JU.PT.parseInt(eventId.substring(pt1 + 1, pt2)); +var icol = JU.PT.parseInt(eventId.substring(pt2 + 1)); +this.processTableEvent(eventId.substring(0, pt) + "/ROWCOL", irow, icol, false); +return; +}this.processClick(eventId); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.dialog"); +Clazz_load(null, "JSV.dialog.DialogManager", ["java.util.Hashtable", "JU.PT", "JSV.common.JSVFileManager", "$.JSViewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.htSelectors = null; +this.htDialogs = null; +this.options = null; +Clazz_instantialize(this, arguments);}, JSV.dialog, "DialogManager", null); +Clazz_defineMethod(c$, "set", +function(viewer){ +this.vwr = viewer; +this.htSelectors = new java.util.Hashtable(); +this.htDialogs = new java.util.Hashtable(); +return this; +}, "JSV.common.JSViewer"); +Clazz_defineMethod(c$, "registerDialog", +function(jsvDialog){ +var id = jsvDialog.optionKey; +if (!id.endsWith("!")) id += " " + ("" + Math.random()).substring(3); +if (this.htDialogs.containsKey(id)) this.htDialogs.get(id).dispose(); +this.htDialogs.put(id, jsvDialog); +return id; +}, "JSV.dialog.JSVDialog"); +Clazz_defineMethod(c$, "registerSelector", +function(selectorName, columnSelector){ +this.htSelectors.put(columnSelector, selectorName); +}, "~S,~O"); +Clazz_defineMethod(c$, "getSelectorName", +function(selector){ +return this.htSelectors.get(selector); +}, "~O"); +Clazz_defineMethod(c$, "showSourceErrors", +function(frame, currentSource){ +if (currentSource == null) { +this.showMessageDialog(frame, "Please Select a Spectrum.", "Select Spectrum", 2); +return; +}var errorLog = currentSource.getErrorLog(); +if (errorLog != null && errorLog.length > 0) this.showMessage(frame, errorLog, JSV.dialog.DialogManager.fixTitle(currentSource.getFilePath())); + else this.showMessageDialog(frame, "No errors found.", "Error Log", 1); +}, "~O,JSV.source.JDXSource"); +Clazz_defineMethod(c$, "showSource", +function(frame, spec){ +var filePath = spec.getFilePath(); +if (filePath == null) { +this.showMessageDialog(frame, "Please Select a Spectrum", "Select Spectrum", 2); +return; +}if (filePath === "[inline]") { +this.showMessage(null, spec.getInlineData(), "Inline data"); +return; +}try { +var s = JSV.common.JSVFileManager.getFileAsString(filePath); +if (JSV.common.JSViewer.isJS) s = JU.PT.rep(s, "<", "<"); +this.showMessage(null, s, JSV.dialog.DialogManager.fixTitle(filePath)); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.showMessageDialog(frame, "File Not Found", "SHOWSOURCE", 0); +} else { +throw ex; +} +} +}, "~O,JSV.common.Spectrum"); +Clazz_defineMethod(c$, "processClick", +function(eventId){ +var pt = eventId.lastIndexOf("/"); +var id = eventId.substring(pt + 1); +var dialog = eventId.substring(0, pt); +this.dialogCallback(dialog, id, null); +}, "~S"); +Clazz_defineMethod(c$, "processTableEvent", +function(eventId, index1, index2, adjusting){ +var pt = eventId.lastIndexOf("/"); +var dialog = eventId.substring(0, pt); +var selector = eventId.substring(pt + 1); +var msg = "&selector=" + selector + "&index=" + index1 + (index2 < 0 ? "&adjusting=" + adjusting : "&index2=" + index2); +this.dialogCallback(dialog, "tableSelect", msg); +}, "~S,~N,~N,~B"); +Clazz_defineMethod(c$, "processWindowClosing", +function(dialogId){ +this.dialogCallback(dialogId, "windowClosing", null); +this.htDialogs.remove(dialogId); +}, "~S"); +Clazz_defineMethod(c$, "dialogCallback", +function(dialogId, id, msg){ +var jsvDialog = this.htDialogs.get(dialogId); +if (jsvDialog != null) jsvDialog.callback(id, msg); +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "getDialogOptions", +function(){ +if (this.options == null) this.options = new java.util.Hashtable(); +return this.options; +}); +c$.fixTitle = Clazz_defineMethod(c$, "fixTitle", +function(title){ +return (title.length > 50 ? title.substring(0, 50) + "..." : title); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JS.AbstractTableModel"], "JSV.js2d.DialogTableModel", ["JU.CU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.columnNames = null; +this.data = null; +this.asString = false; +this.widths = null; +this.thisCol = 0; +this.tableCellAlignLeft = false; +Clazz_instantialize(this, arguments);}, JSV.js2d, "DialogTableModel", null, JS.AbstractTableModel); +Clazz_makeConstructor(c$, +function(columnNames, data, asString, tableCellAlignLeft){ +this.columnNames = columnNames; +this.data = data; +this.asString = asString; +this.widths = (data.length == 0 ? Clazz_newIntArray (0, 0) : Clazz_newIntArray (data[0].length, 0)); +this.tableCellAlignLeft = tableCellAlignLeft; +}, "~A,~A,~B,~B"); +Clazz_defineMethod(c$, "getColumnCount", +function(){ +return this.columnNames.length; +}); +Clazz_defineMethod(c$, "getRowCount", +function(){ +return this.data.length; +}); +Clazz_defineMethod(c$, "getColumnName", +function(col){ +return this.columnNames[col]; +}, "~N"); +Clazz_defineMethod(c$, "getValueAt", +function(row, col){ +var o = this.data[row][col]; +return (this.asString ? " " + o + " " : o); +}, "~N,~N"); +Clazz_overrideMethod(c$, "getColumn", +function(i){ +this.thisCol = i; +return this; +}, "~N"); +Clazz_overrideMethod(c$, "setPreferredWidth", +function(n){ +this.widths[this.thisCol] = n; +}, "~N"); +Clazz_overrideMethod(c$, "toHTML", +function(sb, id, selectedRows){ +if (this.data == null || this.data[0] == null || this.data[0].length == 0) return; +var nrows = this.data.length; +var ncols = this.columnNames.length; +for (var i = -1; i < nrows; i++) { +var rowid = id + "_" + i; +sb.append("\n"); +for (var j = 0; j < ncols; j++) { +if (i == -1) this.getCellHtml(sb, id + "_h" + j, i, j, this.columnNames[j], false); + else this.getCellHtml(sb, rowid + "_" + j, i, j, this.data[i][j], selectedRows.get(i)); +} +sb.append(""); +} +}, "JU.SB,~S,JU.BS"); +Clazz_defineMethod(c$, "getCellHtml", +function(sb, id, iRow, iCol, o, isSelected){ +var style = this.getCellStyle(id, iRow, iCol, o, isSelected); +sb.append("" + o + ""); +}, "JU.SB,~S,~N,~N,~O,~B"); +Clazz_defineMethod(c$, "getCellStyle", +function(id, iRow, iCol, o, isSelected){ +var style = "padding:1px 1px 1px 1px"; +if (iRow < 0) { +style += ";font-weight:bold"; +} else { +if (Clazz_instanceOf(o,"javajs.api.GenericColor")) { +style += ";background-color:" + JU.CU.toCSSString(o); +} else { +if (this.asString) o = " " + o + " "; +style += ";text-align:"; +if (this.tableCellAlignLeft) style += "left"; + else if (iCol == 0) style += "center"; + else style += "right"; +style += ";border:" + (isSelected ? 3 : 1) + "px solid #000"; +}}return " style='" + style + "'"; +}, "~S,~N,~N,~O,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.api.PlatformDialog", "JS.JDialog", "$.Insets"], "JSV.js2d.JsDialog", ["java.util.Hashtable", "JSV.common.Annotation", "JSV.js2d.DialogTableModel", "JS.Color", "$.Dimension", "$.FlowLayout", "$.GridBagConstraints", "$.GridBagLayout", "$.JButton", "$.JCheckBox", "$.JComboBox", "$.JLabel", "$.JPanel", "$.JScrollPane", "$.JSplitPane", "$.JTable", "$.JTextField"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.optionKey = null; +this.registryKey = null; +this.options = null; +this.manager = null; +this.type = null; +this.leftPanel = null; +this.mainSplitPane = null; +this.rightPanel = null; +this.thisPanel = null; +this.dataTable = null; +this.iRow = 0; +this.haveColors = false; +this.tableCellAlignLeft = false; +this.haveTwoPanels = true; +this.buttonInsets = null; +this.panelInsets = null; +this.selectedRow = -1; +Clazz_instantialize(this, arguments);}, JSV.js2d, "JsDialog", JS.JDialog, JSV.api.PlatformDialog); +Clazz_prepareFields (c$, function(){ +this.buttonInsets = new JS.Insets(5, 5, 5, 5); +this.panelInsets = new JS.Insets(0, 0, 2, 2); +}); +Clazz_makeConstructor(c$, +function(manager, jsvDialog, registryKey){ +Clazz_superConstructor(this, JSV.js2d.JsDialog); +this.defaultHeight = 350; +this.manager = manager; +this.registryKey = registryKey; +this.optionKey = jsvDialog.optionKey; +this.type = jsvDialog.getAType(); +this.options = jsvDialog.options; +if (this.options == null) this.options = new java.util.Hashtable(); +this.getContentPane().setBackground(JS.Color.get3(230, 230, 230)); +this.toFront(); +}, "JSV.dialog.DialogManager,JSV.dialog.JSVDialog,~S"); +Clazz_defineMethod(c$, "onFocus", +function(){ +this.toFront(); +}); +Clazz_overrideMethod(c$, "setFocus", +function(tf){ +if (tf) { +this.toFront(); +}}, "~B"); +Clazz_overrideMethod(c$, "addButton", +function(name, text){ +var btn = new JS.JButton(); +btn.setPreferredSize( new JS.Dimension(120, 25)); +btn.setText(text); +btn.setName(this.registryKey + "/" + name); +btn.addActionListener(this.manager); +this.thisPanel.add(btn, new JS.GridBagConstraints(0, this.iRow++, 3, 1, 0.0, 0.0, 10, 0, this.buttonInsets, 0, 0)); +return btn; +}, "~S,~S"); +Clazz_overrideMethod(c$, "addCheckBox", +function(name, title, level, isSelected){ +if (name == null) { +this.iRow = 0; +this.thisPanel = this.rightPanel; +return null; +}var cb = new JS.JCheckBox(); +cb.setSelected(isSelected); +cb.setText(title); +cb.setName(this.registryKey + "/" + name); +cb.addActionListener(this.manager); +var insets = new JS.Insets(0, 20 * level, 2, 2); +this.thisPanel.add(cb, new JS.GridBagConstraints(0, this.iRow++, 1, 1, 0.0, 0.0, 17, 0, insets, 0, 0)); +return cb; +}, "~S,~S,~N,~B"); +Clazz_defineMethod(c$, "addPanelLine", +function(name, label, obj, units){ +this.thisPanel.add( new JS.JLabel(label == null ? name : label), new JS.GridBagConstraints(0, this.iRow, 1, 1, 0.0, 0.0, 13, 0, this.panelInsets, 0, 0)); +if (units == null) { +this.thisPanel.add(obj, new JS.GridBagConstraints(1, this.iRow, 2, 1, 0.0, 0.0, 17, 0, this.panelInsets, 0, 0)); +} else { +this.thisPanel.add(obj, new JS.GridBagConstraints(1, this.iRow, 1, 1, 0.0, 0.0, 10, 0, this.panelInsets, 0, 0)); +this.thisPanel.add( new JS.JLabel(units), new JS.GridBagConstraints(2, this.iRow, 1, 1, 0.0, 0.0, 17, 0, this.panelInsets, 0, 0)); +}this.iRow++; +}, "~S,~S,JS.JComponent,~S"); +Clazz_overrideMethod(c$, "addSelectOption", +function(name, label, info, iPt, visible){ +var combo = new JS.JComboBox(info); +combo.setSelectedIndex(iPt); +combo.setName(this.registryKey + "/" + name); +if (visible) { +combo.addActionListener(this.manager); +this.addPanelLine(name, label, combo, null); +}return combo; +}, "~S,~S,~A,~N,~B"); +Clazz_overrideMethod(c$, "addTextField", +function(name, label, value, units, defaultValue, visible){ +var key = this.optionKey + "_" + name; +if (value == null) { +value = this.options.get(key); +if (value == null) this.options.put(key, (value = defaultValue)); +}var obj = new JS.JTextField(value); +obj.setName(this.registryKey + "/" + name); +if (visible) { +obj.setPreferredSize( new JS.Dimension(45, 15)); +obj.addActionListener(this.manager); +this.addPanelLine(name, label, obj, units); +}return obj; +}, "~S,~S,~S,~S,~S,~B"); +Clazz_overrideMethod(c$, "createTable", +function(data, header, widths){ +try { +var scrollPane = new JS.JScrollPane(this.dataTable = this.getDataTable(data, header, widths, (this.leftPanel == null ? this.defaultHeight : this.leftPanel.getHeight() - 50))); +if (this.mainSplitPane == null) { +this.getContentPane().add(scrollPane); +} else { +this.mainSplitPane.setRightComponent(scrollPane); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.validate(); +this.repaint(); +}, "~A,~A,~A"); +Clazz_overrideMethod(c$, "endLayout", +function(){ +this.getContentPane().removeAll(); +this.getContentPane().add(this.mainSplitPane); +this.pack(); +}); +Clazz_defineMethod(c$, "getDataTable", +function(data, columnNames, columnWidths, height){ +this.selectedRow = -1; +var tableModel = new JSV.js2d.DialogTableModel(columnNames, data, !this.haveColors, this.tableCellAlignLeft); +var table = new JS.JTable(tableModel); +var selector = table.getSelectionModel(); +selector.addListSelectionListener(this.manager); +this.manager.registerSelector(this.registryKey + "/ROW", selector); +selector = table.getColumnModel().getSelectionModel(); +selector.addListSelectionListener(this.manager); +this.manager.registerSelector(this.registryKey + "/COLUMN", selector); +var n = 0; +for (var i = 0; i < columnNames.length; i++) { +table.getColumnModel().getColumn(i).setPreferredWidth(columnWidths[i]); +n += columnWidths[i]; +} +return table; +}, "~A,~A,~A,~N"); +Clazz_overrideMethod(c$, "getSelectedIndex", +function(c){ +return (c).getSelectedIndex(); +}, "~O"); +Clazz_overrideMethod(c$, "getSelectedItem", +function(combo){ +return (combo).getSelectedItem(); +}, "~O"); +Clazz_defineMethod(c$, "getText", +function(o){ +return (o).getText(); +}, "~O"); +Clazz_overrideMethod(c$, "isSelected", +function(chkbox){ +return (chkbox).isSelected(); +}, "~O"); +Clazz_overrideMethod(c$, "selectTableRow", +function(i){ +this.selectedRow = i; +this.dataTable.clearSelection(); +if (this.selectedRow >= 0) { +this.dataTable.setRowSelectionAllowed(true); +this.dataTable.setRowSelectionInterval(this.selectedRow, this.selectedRow + 1); +this.repaint(); +}}, "~N"); +Clazz_overrideMethod(c$, "setCellSelectionEnabled", +function(enabled){ +this.dataTable.setCellSelectionEnabled(enabled); +}, "~B"); +Clazz_defineMethod(c$, "setEnabled", +function(btn, b){ +(btn).setEnabled(b); +}, "~O,~B"); +Clazz_overrideMethod(c$, "setIntLocation", +function(loc){ +var d = new JS.Dimension(0, 0); +{ +SwingController.getScreenDimensions(d); +}loc[0] = Math.min(d.width - 50, loc[0]); +loc[1] = Math.min(d.height - 50, loc[1]); +this.setLocation(loc); +}, "~A"); +Clazz_defineMethod(c$, "setPreferredSize", +function(width, height){ +this.setPreferredSize( new JS.Dimension(width, height)); +}, "~N,~N"); +Clazz_overrideMethod(c$, "setSelected", +function(chkbox, b){ +(chkbox).setSelected(b); +}, "~O,~B"); +Clazz_overrideMethod(c$, "setSelectedIndex", +function(combo, i){ +(combo).setSelectedIndex(i); +}, "~O,~N"); +Clazz_defineMethod(c$, "setText", +function(o, text){ +(o).setText(text); +}, "~O,~S"); +Clazz_overrideMethod(c$, "startLayout", +function(){ +this.setPreferredSize( new JS.Dimension(600, 370)); +this.getContentPane().removeAll(); +this.thisPanel = this.rightPanel = new JS.JPanel( new JS.FlowLayout()); +switch (this.type) { +case JSV.common.Annotation.AType.Integration: +case JSV.common.Annotation.AType.Measurements: +case JSV.common.Annotation.AType.PeakList: +case JSV.common.Annotation.AType.NONE: +break; +case JSV.common.Annotation.AType.OverlayLegend: +this.tableCellAlignLeft = true; +this.haveColors = true; +this.haveTwoPanels = false; +break; +case JSV.common.Annotation.AType.Views: +this.rightPanel = new JS.JPanel( new JS.GridBagLayout()); +} +if (this.haveTwoPanels) { +this.thisPanel = this.leftPanel = new JS.JPanel( new JS.GridBagLayout()); +this.leftPanel.setMinimumSize( new JS.Dimension(200, 300)); +this.mainSplitPane = new JS.JSplitPane(1); +this.mainSplitPane.setLeftComponent(this.leftPanel); +this.mainSplitPane.setRightComponent( new JS.JScrollPane(this.rightPanel)); +}}); +Clazz_defineMethod(c$, "getColumnCentering", +function(column){ +return this.tableCellAlignLeft ? 2 : column == 0 ? 0 : 4; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "PlatformDialog"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejsvdialog.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corejsvdialog.z.js new file mode 100755 index 000000000000..548791fdc85f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejsvdialog.z.js @@ -0,0 +1,42 @@ +(function(y,z,A,B,C,D,j,v,h,r,s,E,F,l,G,u,m,H,q,w,p,I,x,J,K,L,M,t,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,c,e){j("JSV.dialog");h(["JSV.dialog.JSVDialog"],"JSV.dialog.IntegrationDialog",["JU.DF","JSV.common.Annotation"],function(){var b=q(JSV.dialog,"IntegrationDialog",JSV.dialog.JSVDialog);l(b,function(){p(this,JSV.dialog.IntegrationDialog,[]);this.type=JSV.common.Annotation.AType.Integration});e(b,"getPosXY",function(){return JSV.dialog.IntegrationDialog.posXY});c(b,"addUniqueControls", +function(){this.txt1=this.dialog.addTextField("txtBaselineOffset","Baseline Offset",null,"%",""+this.vwr.parameters.integralOffset,!0);this.txt2=this.dialog.addTextField("txtScale","Scale",null,"%",""+this.vwr.parameters.integralRange,!0);this.dialog.addButton("btnApply","Apply");this.addApplyBtn=!1;this.dialog.addButton("btnAuto","Auto");this.dialog.addButton("btnDelete","Delete");this.dialog.addButton("btnNormalize","Normalize")});e(b,"applyFromFields",function(){this.apply(t(-1,[this.dialog.getText(this.txt1), +this.dialog.getText(this.txt2)]))});e(b,"callback",function(a,f){var d;try{if(a.equals("SHOWSELECTION")){for(d=0;dthis.iSelected?(this.showMessage("Select a line on the table first, then click this button.","Integration",1),!1):!0});c(b,"deleteIntegral",function(){this.checkSelectedIntegral()&&(this.xyData.removeItemAt(this.iSelected),this.iRowColSelected=this.iSelected=-1,this.applyFromFields())});b.posXY=m(-1,[-2147483648,0])});j("JSV.dialog");h(["JSV.dialog.JSVDialog"],"JSV.dialog.PeakListDialog",["JSV.common.Annotation"],function(){var b=q(JSV.dialog,"PeakListDialog", +JSV.dialog.JSVDialog);l(b,function(){p(this,JSV.dialog.PeakListDialog,[]);this.type=JSV.common.Annotation.AType.PeakList});e(b,"getPosXY",function(){return JSV.dialog.PeakListDialog.posXY});c(b,"addUniqueControls",function(){this.txt1=this.dialog.addTextField("txtThreshold","Threshold",null,"","",!0);this.dialog.setPreferredSize(780,350);this.setThreshold(NaN);this.combo1=this.dialog.addSelectOption("cmbInterpolation","Interpolation",t(-1,["parabolic","none"]),0,!0)});e(b,"callback",function(a,f){if(a.equals("cmbInterpolation")|| +a.equals("txtThreshold"))a="btnApply";return this.callbackAD(a,f)},"~S,~S");b.posXY=m(-1,[-2147483648,0])});j("JSV.dialog");h(["JSV.dialog.JSVDialog"],"JSV.dialog.MeasurementsDialog",["JSV.common.Annotation"],function(){var b=q(JSV.dialog,"MeasurementsDialog",JSV.dialog.JSVDialog);l(b,function(){p(this,JSV.dialog.MeasurementsDialog,[]);this.type=JSV.common.Annotation.AType.Measurements});c(b,"addUniqueControls",function(){});e(b,"getPosXY",function(){return JSV.dialog.MeasurementsDialog.posXY});e(b, +"callback",function(a,f){return this.callbackAD(a,f)},"~S,~S");b.posXY=m(-1,[-2147483648,0])});j("JSV.dialog");h(["JSV.dialog.JSVDialog"],"JSV.dialog.OverlayLegendDialog",["JSV.common.Annotation"],function(){var b=q(JSV.dialog,"OverlayLegendDialog",JSV.dialog.JSVDialog);l(b,function(){p(this,JSV.dialog.OverlayLegendDialog,[]);this.type=JSV.common.Annotation.AType.OverlayLegend});e(b,"getPosXY",function(){return JSV.dialog.OverlayLegendDialog.posXY});c(b,"addUniqueControls",function(){});e(b,"callback", +function(){return!1},"~S,~S");b.posXY=m(-1,[-2147483648,0])});j("JSV.dialog");h(["JSV.dialog.JSVDialog"],"JSV.dialog.ViewsDialog",["JU.Lst","$.PT","$.SB","JSV.common.Annotation"],function(){var b=s(function(){this.viewSelectedButton=this.combineSelectedButton=this.closeSelectedButton=this.checkBoxes=this.treeNodes=null;this.checking=!1;r(this,arguments)},JSV.dialog,"ViewsDialog",JSV.dialog.JSVDialog);l(b,function(){p(this,JSV.dialog.ViewsDialog,[]);this.type=JSV.common.Annotation.AType.Views});e(b, +"getPosXY",function(){return JSV.dialog.ViewsDialog.posXY});c(b,"addUniqueControls",function(){this.checkBoxes=new JU.Lst;this.treeNodes=new JU.Lst;this.dialog.addButton("btnSelectAll","Select All");this.dialog.addButton("btnSelectNone","Select None");this.txt2=this.dialog.addTextField("txtOffset","Offset",""+this.vwr.parameters.viewOffset,"%",null,!0);this.viewSelectedButton=this.dialog.addButton("btnViewSelected","View Selected");this.combineSelectedButton=this.dialog.addButton("btnCombineSelected", +"Combine Selected");this.closeSelectedButton=this.dialog.addButton("btnCloseSelected","Close Selected");this.dialog.addButton("btnDone","Done");this.dialog.setPreferredSize(800,350);this.txt1=this.dialog.addCheckBox(null,null,0,!1);this.addCheckBoxes(this.vwr.spectraTree.getRootNode(),0,!0);this.addCheckBoxes(this.vwr.spectraTree.getRootNode(),0,!1)});c(b,"addCheckBoxes",function(a,f,d){for(a=a.children();a.hasMoreElements();){var b=a.nextElement(),n=b.getPanelNode();if(n.isView==d){var c=n.toString(); +0<=c.indexOf("\n")&&(c=c.substring(0,c.indexOf("\n")));var e="chkBox"+this.treeNodes.size(),n=this.dialog.addCheckBox(e,c,f,n.isSelected);b.setIndex(this.treeNodes.size());this.treeNodes.addLast(b);this.checkBoxes.addLast(n);this.addCheckBoxes(b,f+1,d)}}},"JSV.api.JSVTreeNode,~N,~B");e(b,"checkEnables",function(){for(var a=0,f=0;f")?b=new JS.JLabel(f):(b=new JS.JEditorPane,b.setText(f));a.getContentPane().add(b);a.pack();a.setVisible(!0);a.toFront()},"~O,~S,~S");c(b,"actionPerformed",function(a){var b=a.indexOf("/JT");if(0<=b){var d=a.lastIndexOf("_"),g=a.lastIndexOf("_",d-1),g=JU.PT.parseInt(a.substring(g+1,d)),d=JU.PT.parseInt(a.substring(d+1));this.processTableEvent(a.substring(0,b)+"/ROWCOL",g,d,!1)}else this.processClick(a)},"~S")});j("JSV.dialog");h(null,"JSV.dialog.DialogManager",["java.util.Hashtable", +"JU.PT","JSV.common.JSVFileManager","$.JSViewer"],function(){var b=s(function(){this.options=this.htDialogs=this.htSelectors=this.vwr=null;r(this,arguments)},JSV.dialog,"DialogManager",null);c(b,"set",function(a){this.vwr=a;this.htSelectors=new java.util.Hashtable;this.htDialogs=new java.util.Hashtable;return this},"JSV.common.JSViewer");c(b,"registerDialog",function(a){var b=a.optionKey;b.endsWith("!")||(b+=" "+(""+Math.random()).substring(3));this.htDialogs.containsKey(b)&&this.htDialogs.get(b).dispose(); +this.htDialogs.put(b,a);return b},"JSV.dialog.JSVDialog");c(b,"registerSelector",function(a,b){this.htSelectors.put(b,a)},"~S,~O");c(b,"getSelectorName",function(a){return this.htSelectors.get(a)},"~O");c(b,"showSourceErrors",function(a,b){if(null==b)this.showMessageDialog(a,"Please Select a Spectrum.","Select Spectrum",2);else{var d=b.getErrorLog();null!=d&&0d?"&adjusting="+g:"&index2="+d);this.dialogCallback(e,"tableSelect",a)},"~S,~N,~N,~B");c(b,"processWindowClosing",function(a){this.dialogCallback(a,"windowClosing",null);this.htDialogs.remove(a)}, +"~S");c(b,"dialogCallback",function(a,b,d){a=this.htDialogs.get(a);null!=a&&a.callback(b,d)},"~S,~S,~S");c(b,"getDialogOptions",function(){null==this.options&&(this.options=new java.util.Hashtable);return this.options});b.fixTitle=c(b,"fixTitle",function(a){return 50");for(var h=0;h")}},"JU.SB,~S,JU.BS");c(b,"getCellHtml",function(a,b,d,c,e,h){d=this.getCellStyle(b,d,c,e,h);a.append(""+e+"")},"JU.SB,~S,~N,~N,~O,~B");c(b,"getCellStyle",function(a,b,d,c,e){a="padding:1px 1px 1px 1px";0>b?a+=";font-weight:bold":v(c,"javajs.api.GenericColor")?a+=";background-color:"+JU.CU.toCSSString(c):(a+=";text-align:",a=this.tableCellAlignLeft? +a+"left":0==d?a+"center":a+"right",a+=";border:"+(e?3:1)+"px solid #000");return" style='"+a+"'"},"~S,~N,~N,~O,~B")});j("JSV.js2d");h(["JSV.api.PlatformDialog","JS.JDialog","$.Insets"],"JSV.js2d.JsDialog","java.util.Hashtable JSV.common.Annotation JSV.js2d.DialogTableModel JS.Color $.Dimension $.FlowLayout $.GridBagConstraints $.GridBagLayout $.JButton $.JCheckBox $.JComboBox $.JLabel $.JPanel $.JScrollPane $.JSplitPane $.JTable $.JTextField".split(" "),function(){var b=s(function(){this.dataTable= +this.thisPanel=this.rightPanel=this.mainSplitPane=this.leftPanel=this.type=this.manager=this.options=this.registryKey=this.optionKey=null;this.iRow=0;this.tableCellAlignLeft=this.haveColors=!1;this.haveTwoPanels=!0;this.panelInsets=this.buttonInsets=null;this.selectedRow=-1;r(this,arguments)},JSV.js2d,"JsDialog",JS.JDialog,JSV.api.PlatformDialog);w(b,function(){this.buttonInsets=new JS.Insets(5,5,5,5);this.panelInsets=new JS.Insets(0,0,2,2)});l(b,function(a,b,d){p(this,JSV.js2d.JsDialog);this.defaultHeight= +350;this.manager=a;this.registryKey=d;this.optionKey=b.optionKey;this.type=b.getAType();this.options=b.options;null==this.options&&(this.options=new java.util.Hashtable);this.getContentPane().setBackground(JS.Color.get3(230,230,230));this.toFront()},"JSV.dialog.DialogManager,JSV.dialog.JSVDialog,~S");c(b,"onFocus",function(){this.toFront()});e(b,"setFocus",function(a){a&&this.toFront()},"~B");e(b,"addButton",function(a,b){var d=new JS.JButton;d.setPreferredSize(new JS.Dimension(120,25));d.setText(b); +d.setName(this.registryKey+"/"+a);d.addActionListener(this.manager);this.thisPanel.add(d,new JS.GridBagConstraints(0,this.iRow++,3,1,0,0,10,0,this.buttonInsets,0,0));return d},"~S,~S");e(b,"addCheckBox",function(a,b,d,c){if(null==a)return this.iRow=0,this.thisPanel=this.rightPanel,null;var e=new JS.JCheckBox;e.setSelected(c);e.setText(b);e.setName(this.registryKey+"/"+a);e.addActionListener(this.manager);a=new JS.Insets(0,20*d,2,2);this.thisPanel.add(e,new JS.GridBagConstraints(0,this.iRow++,1,1, +0,0,17,0,a,0,0));return e},"~S,~S,~N,~B");c(b,"addPanelLine",function(a,b,d,c){this.thisPanel.add(new JS.JLabel(null==b?a:b),new JS.GridBagConstraints(0,this.iRow,1,1,0,0,13,0,this.panelInsets,0,0));null==c?this.thisPanel.add(d,new JS.GridBagConstraints(1,this.iRow,2,1,0,0,17,0,this.panelInsets,0,0)):(this.thisPanel.add(d,new JS.GridBagConstraints(1,this.iRow,1,1,0,0,10,0,this.panelInsets,0,0)),this.thisPanel.add(new JS.JLabel(c),new JS.GridBagConstraints(2,this.iRow,1,1,0,0,17,0,this.panelInsets, +0,0)));this.iRow++},"~S,~S,JS.JComponent,~S");e(b,"addSelectOption",function(a,b,d,c,e){d=new JS.JComboBox(d);d.setSelectedIndex(c);d.setName(this.registryKey+"/"+a);e&&(d.addActionListener(this.manager),this.addPanelLine(a,b,d,null));return d},"~S,~S,~A,~N,~B");e(b,"addTextField",function(a,b,d,c,e,h){var j=this.optionKey+"_"+a;null==d&&(d=this.options.get(j),null==d&&this.options.put(j,d=e));d=new JS.JTextField(d);d.setName(this.registryKey+"/"+a);h&&(d.setPreferredSize(new JS.Dimension(45,15)), +d.addActionListener(this.manager),this.addPanelLine(a,b,d,c));return d},"~S,~S,~S,~S,~S,~B");e(b,"createTable",function(a,b,d){try{var c=new JS.JScrollPane(this.dataTable=this.getDataTable(a,b,d,null==this.leftPanel?this.defaultHeight:this.leftPanel.getHeight()-50));null==this.mainSplitPane?this.getContentPane().add(c):this.mainSplitPane.setRightComponent(c)}catch(e){if(!u(e,Exception))throw e;}this.validate();this.repaint()},"~A,~A,~A");e(b,"endLayout",function(){this.getContentPane().removeAll(); +this.getContentPane().add(this.mainSplitPane);this.pack()});c(b,"getDataTable",function(a,b,d){this.selectedRow=-1;a=new JSV.js2d.DialogTableModel(b,a,!this.haveColors,this.tableCellAlignLeft);a=new JS.JTable(a);var c=a.getSelectionModel();c.addListSelectionListener(this.manager);this.manager.registerSelector(this.registryKey+"/ROW",c);c=a.getColumnModel().getSelectionModel();c.addListSelectionListener(this.manager);this.manager.registerSelector(this.registryKey+"/COLUMN",c);for(c=0;c= 0) type = "XY"; +if (jsvp == null) return null; +eType = JSV.common.ExportType.getType(fileName); +switch (eType) { +case JSV.common.ExportType.PDF: +case JSV.common.ExportType.PNG: +case JSV.common.ExportType.JPG: +return this.exportTheSpectrum(viewer, eType, null, null, -1, -1, null, false); +default: +viewer.fileHelper.setFileChooser(eType); +var items = this.getExportableItems(viewer, eType.equals(JSV.common.ExportType.SOURCE)); +var index = (items == null ? -1 : viewer.getOptionFromDialog(items, "Export", "Choose a spectrum to export")); +if (index == -2147483648) return null; +var file = viewer.fileHelper.getFile(this.getSuggestedFileName(viewer, eType), jsvp, true); +if (file == null) return null; +out = viewer.getOutputChannel(file.getFullPath(), false); +var msg = this.exportSpectrumOrImage(viewer, eType, index, out); +var isOK = msg.startsWith("OK"); +if (isOK) viewer.si.siUpdateRecentMenus(file.getFullPath()); +out.closeChannel(); +return msg; +} +case 2: +type = tokens.get(0).toUpperCase(); +fileName = JU.PT.trimQuotes(tokens.get(1)); +break; +} +var ext = fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase(); +if (ext.equals("BASE64")) { +fileName = ";base64,"; +} else if (ext.equals("JDX")) { +if (type == null) type = "XY"; +} else if (JSV.common.ExportType.isExportMode(ext)) { +type = ext; +} else if (JSV.common.ExportType.isExportMode(type)) { +fileName += "." + type; +}eType = JSV.common.ExportType.getType(type); +if (forInkscape && eType === JSV.common.ExportType.SVG) eType = JSV.common.ExportType.SVGI; +out = viewer.getOutputChannel(fileName, false); +return this.exportSpectrumOrImage(viewer, eType, -1, out); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e); +return null; +} else { +throw e; +} +} +}, "JSV.common.JSViewer,JU.Lst,~B"); +Clazz_defineMethod(c$, "exportSpectrumOrImage", +function(viewer, eType, index, out){ +var spec; +var pd = viewer.pd(); +if (index < 0 && (index = pd.getCurrentSpectrumIndex()) < 0) return "Error exporting spectrum: No spectrum selected"; +spec = pd.getSpectrumAt(index); +var startIndex = pd.getStartingPointIndex(index); +var endIndex = pd.getEndingPointIndex(index); +var msg = null; +try { +var asBase64 = out.isBase64(); +msg = this.exportTheSpectrum(viewer, eType, out, spec, startIndex, endIndex, pd, asBase64); +if (asBase64) return msg; +if (msg.startsWith("OK")) return "OK - Exported " + eType.name() + ": " + out.getFileName() + msg.substring(2); +} catch (ioe) { +if (Clazz_exceptionOf(ioe, Exception)){ +msg = ioe.toString(); +} else { +throw ioe; +} +} +return "Error exporting " + out.getFileName() + ": " + msg; +}, "JSV.common.JSViewer,JSV.common.ExportType,~N,JU.OC"); +Clazz_defineMethod(c$, "exportTheSpectrum", +function(viewer, mode, out, spec, startIndex, endIndex, pd, asBase64){ +var jsvp = viewer.selectedPanel; +var type = mode.name(); +switch (mode) { +case JSV.common.ExportType.AML: +case JSV.common.ExportType.CML: +case JSV.common.ExportType.SVG: +case JSV.common.ExportType.SVGI: +break; +case JSV.common.ExportType.DIF: +case JSV.common.ExportType.DIFDUP: +case JSV.common.ExportType.FIX: +case JSV.common.ExportType.PAC: +case JSV.common.ExportType.SQZ: +case JSV.common.ExportType.XY: +type = "JDX"; +break; +case JSV.common.ExportType.JPG: +case JSV.common.ExportType.PNG: +if (jsvp == null) return null; +viewer.fileHelper.setFileChooser(mode); +var name = this.getSuggestedFileName(viewer, mode); +var file = viewer.fileHelper.getFile(name, jsvp, true); +if (file == null) return null; +return jsvp.saveImage(type.toLowerCase(), file, out); +case JSV.common.ExportType.PDF: +return this.printPDF(viewer, "PDF", asBase64); +case JSV.common.ExportType.SOURCE: +if (jsvp == null) return null; +var data = jsvp.getPanelData().getSpectrum().getInlineData(); +if (data != null) { +out.append(data); +out.closeChannel(); +return "OK " + out.getByteCount() + " bytes"; +}var path = jsvp.getPanelData().getSpectrum().getFilePath(); +return JSV["export"].Exporter.fileCopy(path, out); +case JSV.common.ExportType.UNK: +return null; +} +return (JSV.common.JSViewer.getInterface("JSV.export." + type.toUpperCase() + "Exporter")).exportTheSpectrum(viewer, mode, out, spec, startIndex, endIndex, null, false); +}, "JSV.common.JSViewer,JSV.common.ExportType,JU.OC,JSV.common.Spectrum,~N,~N,JSV.common.PanelData,~B"); +Clazz_defineMethod(c$, "printPDF", +function(viewer, pdfFileName, isBase64){ +var isJob = (pdfFileName == null || pdfFileName.length == 0); +if (!isBase64 && !viewer.si.isSigned()) return "Error: Applet must be signed for the PRINT command."; +var pd = viewer.pd(); +if (pd == null) return null; +var useDialog = false; +var pl; +{ +useDialog = false; +}pl = viewer.getDialogPrint(isJob); +if (pl == null) return null; +if (!useDialog) pl.asPDF = true; +if (isJob && pl.asPDF) { +isJob = false; +pdfFileName = "PDF"; +}var jsvp = viewer.selectedPanel; +if (!isBase64 && !isJob) { +var helper = viewer.fileHelper; +helper.setFileChooser(JSV.common.ExportType.PDF); +if (pdfFileName.equals("?") || pdfFileName.equalsIgnoreCase("PDF")) pdfFileName = this.getSuggestedFileName(viewer, JSV.common.ExportType.PDF); +var file = helper.getFile(pdfFileName, jsvp, true); +if (file == null) return null; +if (!JSV.common.JSViewer.isJS) viewer.setProperty("directoryLastExportedFile", helper.setDirLastExported(file.getParentAsFile().getFullPath())); +pdfFileName = file.getFullPath(); +}var s = null; +try { +var out = (isJob ? null : isBase64 ? new JU.OC().setParams(null, ";base64,", false, null) : viewer.getOutputChannel(pdfFileName, true)); +var printJobTitle = pd.getPrintJobTitle(true); +if (pl.showTitle) { +printJobTitle = jsvp.getInput("Title?", "Title for Printing", printJobTitle); +if (printJobTitle == null) return null; +}jsvp.printPanel(pl, out, printJobTitle); +s = out.toString(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +jsvp.showMessage(e.toString(), "File Error"); +} else { +throw e; +} +} +return s; +}, "JSV.common.JSViewer,~S,~B"); +Clazz_defineMethod(c$, "getExportableItems", +function(viewer, isSameType){ +var pd = viewer.pd(); +var isView = viewer.currentSource.isView; +var nSpectra = pd.getNumberOfSpectraInCurrentSet(); +if (nSpectra == 1 || !isView && isSameType || pd.getCurrentSpectrumIndex() >= 0) return null; +var items = new Array(nSpectra); +for (var i = 0; i < nSpectra; i++) items[i] = pd.getSpectrumAt(i).getTitle(); + +return items; +}, "JSV.common.JSViewer,~B"); +Clazz_defineMethod(c$, "getSuggestedFileName", +function(viewer, imode){ +var pd = viewer.pd(); +var sourcePath = pd.getSpectrum().getFilePath(); +var newName = JSV.common.JSVFileManager.getTagName(sourcePath); +if (newName.startsWith("$")) newName = newName.substring(1); +var pt = newName.lastIndexOf("."); +var name = (pt < 0 ? newName : newName.substring(0, pt)); +var ext = ".jdx"; +var isPrint = false; +switch (imode) { +case JSV.common.ExportType.XY: +case JSV.common.ExportType.FIX: +case JSV.common.ExportType.PAC: +case JSV.common.ExportType.SQZ: +case JSV.common.ExportType.DIF: +case JSV.common.ExportType.DIFDUP: +case JSV.common.ExportType.SOURCE: +if (!(name.endsWith("_" + imode))) name += "_" + imode; +ext = ".jdx"; +break; +case JSV.common.ExportType.AML: +ext = ".xml"; +break; +case JSV.common.ExportType.JPG: +case JSV.common.ExportType.PNG: +case JSV.common.ExportType.PDF: +isPrint = true; +default: +ext = "." + imode.toString().toLowerCase(); +} +if (viewer.currentSource.isView) name = pd.getPrintJobTitle(isPrint); +name += ext; +return name; +}, "JSV.common.JSViewer,JSV.common.ExportType"); +c$.fileCopy = Clazz_defineMethod(c$, "fileCopy", +function(name, out){ +try { +var br = JSV.common.JSVFileManager.getBufferedReaderFromName(name, null); +var line = null; +while ((line = br.readLine()) != null) { +out.append(line); +out.append(JSV["export"].Exporter.newLine); +} +out.closeChannel(); +return "OK " + out.getByteCount() + " bytes"; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return e.toString(); +} else { +throw e; +} +} +}, "~S,JU.OC"); +c$.newLine = System.getProperty("line.separator"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "ExportInterface", JSV.api.JSVExporter); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVExporter"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.api"); +Clazz_declareInterface(JSV.api, "JSVPdfWriter"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.common"); +Clazz_load(["JSV.api.JSVPdfWriter", "J.api.GenericGraphics"], "JSV.common.PDFWriter", ["java.util.Hashtable", "javajs.export.PDFCreator", "JU.CU", "JSV.common.JSVersion"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.g2d = null; +this.date = null; +this.pdf = null; +this.inPath = false; +this.rgb = null; +Clazz_instantialize(this, arguments);}, JSV.common, "PDFWriter", null, [J.api.GenericGraphics, JSV.api.JSVPdfWriter]); +Clazz_prepareFields (c$, function(){ +this.rgb = Clazz_newFloatArray (3, 0); +}); +Clazz_makeConstructor(c$, +function(){ +this.pdf = new javajs["export"].PDFCreator(); +}); +Clazz_overrideMethod(c$, "createPdfDocument", +function(panel, pl, os){ +var isLandscape = pl.layout.equals("landscape"); +this.date = pl.date; +this.pdf.setOutputStream(os); +this.g2d = panel.getPanelData().g2d; +try { +this.pdf.newDocument(pl.paperWidth, pl.paperHeight, isLandscape); +var ht = new java.util.Hashtable(); +ht.put("Producer", JSV.common.JSVersion.VERSION); +ht.put("Creator", "JSpecView " + JSV.common.JSVersion.VERSION); +ht.put("Author", "JSpecView"); +if (this.date != null) ht.put("CreationDate", this.date); +this.pdf.addInfo(ht); +panel.getPanelData().printPdf(this, pl); +this.pdf.closeDocument(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +panel.showMessage(e.toString(), "PDF Creation Error"); +} else { +throw e; +} +} +}, "JSV.api.JSVPanel,JSV.common.PrintLayout,java.io.OutputStream"); +Clazz_overrideMethod(c$, "canDoLineTo", +function(){ +return true; +}); +Clazz_overrideMethod(c$, "doStroke", +function(g, isBegin){ +this.inPath = isBegin; +if (!this.inPath) this.pdf.stroke(); +}, "~O,~B"); +Clazz_overrideMethod(c$, "drawCircle", +function(g, x, y, diameter){ +this.pdf.doCircle(x, y, Clazz_doubleToInt(diameter / 2.0), false); +}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawLine", +function(g, x0, y0, x1, y1){ +this.pdf.moveto(x0, y0); +this.pdf.lineto(x1, y1); +if (!this.inPath) this.pdf.stroke(); +}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawPolygon", +function(g, axPoints, ayPoints, nPoints){ +this.pdf.doPolygon(axPoints, ayPoints, nPoints, false); +}, "~O,~A,~A,~N"); +Clazz_overrideMethod(c$, "drawRect", +function(g, x, y, width, height){ +this.pdf.doRect(x, y, width, height, false); +}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "drawString", +function(g, s, x, y){ +this.pdf.drawStringRotated(s, x, y, 0); +}, "~O,~S,~N,~N"); +Clazz_overrideMethod(c$, "drawStringRotated", +function(g, s, x, y, angle){ +this.pdf.drawStringRotated(s, x, y, Clazz_doubleToInt(angle)); +}, "~O,~S,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillBackground", +function(g, bgcolor){ +}, "~O,javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "fillCircle", +function(g, x, y, diameter){ +this.pdf.doCircle(x, y, Clazz_doubleToInt(diameter / 2.0), true); +}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "fillPolygon", +function(g, ayPoints, axPoints, nPoints){ +this.pdf.doPolygon(axPoints, ayPoints, nPoints, true); +}, "~O,~A,~A,~N"); +Clazz_overrideMethod(c$, "fillRect", +function(g, x, y, width, height){ +this.pdf.doRect(x, y, width, height, true); +}, "~O,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "lineTo", +function(g, x, y){ +this.pdf.lineto(x, y); +}, "~O,~N,~N"); +Clazz_overrideMethod(c$, "setGraphicsColor", +function(g, c){ +JU.CU.toRGB3f(c.getRGB(), this.rgb); +this.pdf.setColor(this.rgb, true); +this.pdf.setColor(this.rgb, false); +}, "~O,javajs.api.GenericColor"); +Clazz_overrideMethod(c$, "setFont", +function(g, font){ +var fname = "/Helvetica"; +switch (font.idFontStyle) { +case 1: +fname += "-Bold"; +break; +case 3: +fname += "-BoldOblique"; +break; +case 2: +fname += "-Oblique"; +break; +} +this.pdf.setFont(fname, font.fontSizeNominal); +return font; +}, "~O,JU.Font"); +Clazz_overrideMethod(c$, "setStrokeBold", +function(g, tf){ +this.pdf.setLineWidth(tf ? 2 : 1); +}, "~O,~B"); +Clazz_overrideMethod(c$, "translateScale", +function(g, x, y, scale){ +this.pdf.translateScale(x, y, scale); +}, "~O,~N,~N,~N"); +Clazz_overrideMethod(c$, "newGrayScaleImage", +function(g, image, width, height, buffer){ +this.pdf.addImageResource(image, width, height, buffer, false); +return image; +}, "~O,~O,~N,~N,~A"); +Clazz_overrideMethod(c$, "drawGrayScaleImage", +function(g, image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1){ +this.pdf.drawImage(image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1); +}, "~O,~O,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "setWindowParameters", +function(width, height){ +}, "~N,~N"); +Clazz_defineMethod(c$, "getColor1", +function(argb){ +return this.g2d.getColor1(argb); +}, "~N"); +Clazz_defineMethod(c$, "getColor3", +function(red, green, blue){ +return this.g2d.getColor3(red, green, blue); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getColor4", +function(r, g, b, a){ +return this.g2d.getColor4(r, g, b, a); +}, "~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.export"); +Clazz_load(null, "javajs.export.PDFCreator", ["java.util.Hashtable", "javajs.export.PDFObject", "JU.Lst", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.os = null; +this.indirectObjects = null; +this.root = null; +this.graphics = null; +this.pt = 0; +this.xrefPt = 0; +this.count = 0; +this.height = 0; +this.width = 0; +this.fonts = null; +this.images = null; +Clazz_instantialize(this, arguments);}, javajs["export"], "PDFCreator", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "setOutputStream", +function(os){ +this.os = os; +}, "java.io.OutputStream"); +Clazz_defineMethod(c$, "newDocument", +function(paperWidth, paperHeight, isLandscape){ +this.width = (isLandscape ? paperHeight : paperWidth); +this.height = (isLandscape ? paperWidth : paperHeight); +System.out.println("Creating PDF with width=" + this.width + " and height=" + this.height); +this.fonts = new java.util.Hashtable(); +this.indirectObjects = new JU.Lst(); +this.root = this.newObject("Catalog"); +var pages = this.newObject("Pages"); +var page = this.newObject("Page"); +var pageContents = this.newObject(null); +this.graphics = this.newObject("XObject"); +this.root.addDef("Pages", pages.getRef()); +pages.addDef("Count", "1"); +pages.addDef("Kids", "[ " + page.getRef() + " ]"); +page.addDef("Parent", pages.getRef()); +page.addDef("MediaBox", "[ 0 0 " + paperWidth + " " + paperHeight + " ]"); +if (isLandscape) page.addDef("Rotate", "90"); +pageContents.addDef("Length", "?"); +pageContents.append((isLandscape ? "q 0 1 1 0 0 0 " : "q 1 0 0 -1 0 " + (paperHeight)) + " cm /" + this.graphics.getID() + " Do Q"); +page.addDef("Contents", pageContents.getRef()); +this.addProcSet(page); +this.addProcSet(this.graphics); +this.graphics.addDef("Subtype", "/Form"); +this.graphics.addDef("FormType", "1"); +this.graphics.addDef("BBox", "[0 0 " + this.width + " " + this.height + "]"); +this.graphics.addDef("Matrix", "[1 0 0 1 0 0]"); +this.graphics.addDef("Length", "?"); +page.addResource("XObject", this.graphics.getID(), this.graphics.getRef()); +this.g("q 1 w 1 J 1 j 10 M []0 d q "); +this.clip(0, 0, this.width, this.height); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "addProcSet", +function(o){ +o.addResource(null, "ProcSet", "[/PDF /Text /ImageB /ImageC /ImageI]"); +}, "javajs.export.PDFObject"); +Clazz_defineMethod(c$, "clip", +function(x1, y1, x2, y2){ +this.moveto(x1, y1); +this.lineto(x2, y1); +this.lineto(x2, y2); +this.lineto(x1, y2); +this.g("h W n"); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "moveto", +function(x, y){ +this.g(x + " " + y + " m"); +}, "~N,~N"); +Clazz_defineMethod(c$, "lineto", +function(x, y){ +this.g(x + " " + y + " l"); +}, "~N,~N"); +Clazz_defineMethod(c$, "newObject", +function(type){ +var o = new javajs["export"].PDFObject(++this.count); +if (type != null) o.addDef("Type", "/" + type); +this.indirectObjects.addLast(o); +return o; +}, "~S"); +Clazz_defineMethod(c$, "addInfo", +function(data){ +var info = new java.util.Hashtable(); +for (var e, $e = data.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var value = "(" + e.getValue().$replace(')', '_').$replace('(', '_') + ")"; +info.put(e.getKey(), value); +} +this.root.addDef("Info", info); +}, "java.util.Map"); +Clazz_defineMethod(c$, "addFontResource", +function(fname){ +var f = this.newObject("Font"); +this.fonts.put(fname, f); +f.addDef("BaseFont", fname); +f.addDef("Encoding", "/WinAnsiEncoding"); +f.addDef("Subtype", "/Type1"); +this.graphics.addResource("Font", f.getID(), f.getRef()); +return f; +}, "~S"); +Clazz_defineMethod(c$, "addImageResource", +function(newImage, width, height, buffer, isRGB){ +var imageObj = this.newObject("XObject"); +if (this.images == null) this.images = new java.util.Hashtable(); +this.images.put(newImage, imageObj); +imageObj.addDef("Subtype", "/Image"); +imageObj.addDef("Length", "?"); +imageObj.addDef("ColorSpace", isRGB ? "/DeviceRGB" : "/DeviceGray"); +imageObj.addDef("BitsPerComponent", "8"); +imageObj.addDef("Width", "" + width); +imageObj.addDef("Height", "" + height); +this.graphics.addResource("XObject", imageObj.getID(), imageObj.getRef()); +var n = buffer.length; +var stream = Clazz_newByteArray (n * (isRGB ? 3 : 1), 0); +if (isRGB) { +for (var i = 0, pt = 0; i < n; i++) { +stream[pt++] = ((buffer[i] >> 16) & 0xFF); +stream[pt++] = ((buffer[i] >> 8) & 0xFF); +stream[pt++] = (buffer[i] & 0xFF); +} +} else { +for (var i = 0; i < n; i++) stream[i] = buffer[i]; + +}imageObj.setStream(stream); +this.graphics.addResource("XObject", imageObj.getID(), imageObj.getRef()); +}, "~O,~N,~N,~A,~B"); +Clazz_defineMethod(c$, "g", +function(cmd){ +this.graphics.append(cmd).appendC('\n'); +}, "~S"); +Clazz_defineMethod(c$, "output", +function(s){ +var b = s.getBytes(); +this.os.write(b, 0, b.length); +this.pt += b.length; +}, "~S"); +Clazz_defineMethod(c$, "closeDocument", +function(){ +this.g("Q Q"); +this.outputHeader(); +this.writeObjects(); +this.writeXRefTable(); +this.writeTrailer(); +this.os.flush(); +this.os.close(); +}); +Clazz_defineMethod(c$, "outputHeader", +function(){ +this.output("%PDF-1.3\n%"); +var b = Clazz_newByteArray(-1, [-1, -1, -1, -1]); +this.os.write(b, 0, b.length); +this.pt += 4; +this.output("\n"); +}); +Clazz_defineMethod(c$, "writeTrailer", +function(){ +var trailer = new javajs["export"].PDFObject(-2); +this.output("trailer"); +trailer.addDef("Size", "" + this.indirectObjects.size()); +trailer.addDef("Root", this.root.getRef()); +trailer.output(this.os); +this.output("startxref\n"); +this.output("" + this.xrefPt + "\n"); +this.output("%%EOF\n"); +}); +Clazz_defineMethod(c$, "writeObjects", +function(){ +var nObj = this.indirectObjects.size(); +for (var i = 0; i < nObj; i++) { +var o = this.indirectObjects.get(i); +if (!o.isFont()) continue; +o.pt = this.pt; +this.pt += o.output(this.os); +} +for (var i = 0; i < nObj; i++) { +var o = this.indirectObjects.get(i); +if (o.isFont()) continue; +o.pt = this.pt; +this.pt += o.output(this.os); +} +}); +Clazz_defineMethod(c$, "writeXRefTable", +function(){ +this.xrefPt = this.pt; +var nObj = this.indirectObjects.size(); +var sb = new JU.SB(); +sb.append("xref\n0 " + (nObj + 1) + "\n0000000000 65535 f\r\n"); +for (var i = 0; i < nObj; i++) { +var o = this.indirectObjects.get(i); +var s = "0000000000" + o.pt; +sb.append(s.substring(s.length - 10)); +sb.append(" 00000 n\r\n"); +} +this.output(sb.toString()); +}); +Clazz_defineMethod(c$, "canDoLineTo", +function(){ +return true; +}); +Clazz_defineMethod(c$, "fill", +function(){ +this.g("f"); +}); +Clazz_defineMethod(c$, "stroke", +function(){ +this.g("S"); +}); +Clazz_defineMethod(c$, "doCircle", +function(x, y, r, doFill){ +var d = r * 4 * (Math.sqrt(2) - 1) / 3; +var dx = x; +var dy = y; +this.g((dx + r) + " " + dy + " m"); +this.g((dx + r) + " " + (dy + d) + " " + (dx + d) + " " + (dy + r) + " " + (dx) + " " + (dy + r) + " " + " c"); +this.g((dx - d) + " " + (dy + r) + " " + (dx - r) + " " + (dy + d) + " " + (dx - r) + " " + (dy) + " c"); +this.g((dx - r) + " " + (dy - d) + " " + (dx - d) + " " + (dy - r) + " " + (dx) + " " + (dy - r) + " c"); +this.g((dx + d) + " " + (dy - r) + " " + (dx + r) + " " + (dy - d) + " " + (dx + r) + " " + (dy) + " c"); +this.g(doFill ? "f" : "s"); +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "doPolygon", +function(axPoints, ayPoints, nPoints, doFill){ +this.moveto(axPoints[0], ayPoints[0]); +for (var i = 1; i < nPoints; i++) this.lineto(axPoints[i], ayPoints[i]); + +this.g(doFill ? "f" : "s"); +}, "~A,~A,~N,~B"); +Clazz_defineMethod(c$, "doRect", +function(x, y, width, height, doFill){ +this.g(x + " " + y + " " + width + " " + height + " re " + (doFill ? "f" : "s")); +}, "~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "drawImage", +function(image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1){ +var imageObj = this.images.get(image); +if (imageObj == null) return; +this.g("q"); +this.clip(destX0, destY0, destX1, destY1); +var iw = Double.parseDouble(imageObj.getDef("Width")); +var ih = Double.parseDouble(imageObj.getDef("Height")); +var dw = (destX1 - destX0 + 1); +var dh = (destY1 - destY0 + 1); +var sw = (srcX1 - srcX0 + 1); +var sh = (srcY1 - srcY0 + 1); +var scaleX = dw / sw; +var scaleY = dh / sh; +var transX = destX0 - srcX0 * scaleX; +var transY = destY0 + (ih - srcY0) * scaleY; +this.g(scaleX * iw + " 0 0 " + -scaleY * ih + " " + transX + " " + transY + " cm"); +this.g("/" + imageObj.getID() + " Do"); +this.g("Q"); +}, "~O,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "drawStringRotated", +function(s, x, y, angle){ +this.g("q " + this.getRotation(angle) + " " + x + " " + y + " cm BT(" + s + ")Tj ET Q"); +}, "~S,~N,~N,~N"); +Clazz_defineMethod(c$, "getRotation", +function(angle){ +var cos = 0; +var sin = 0; +switch (angle) { +case 0: +cos = 1; +break; +case 90: +sin = 1; +break; +case -90: +sin = -1; +break; +case 180: +cos = -1; +break; +default: +var a = (angle / 180.0 * 3.141592653589793); +cos = Math.cos(a); +sin = Math.sin(a); +if (Math.abs(cos) < 0.0001) cos = 0; +if (Math.abs(sin) < 0.0001) sin = 0; +} +return cos + " " + sin + " " + sin + " " + -cos; +}, "~N"); +Clazz_defineMethod(c$, "setColor", +function(rgb, isFill){ +this.g(rgb[0] + " " + rgb[1] + " " + rgb[2] + (isFill ? " rg" : " RG")); +}, "~A,~B"); +Clazz_defineMethod(c$, "setFont", +function(fname, size){ +var f = this.fonts.get(fname); +if (f == null) f = this.addFontResource(fname); +this.g("/" + f.getID() + " " + size + " Tf"); +}, "~S,~N"); +Clazz_defineMethod(c$, "setLineWidth", +function(width){ +this.g(width + " w"); +}, "~N"); +Clazz_defineMethod(c$, "translateScale", +function(x, y, scale){ +this.g(scale + " 0 0 " + scale + " " + x + " " + y + " cm"); +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("javajs.export"); +Clazz_load(["JU.SB"], "javajs.export.PDFObject", ["java.io.ByteArrayOutputStream", "java.util.Hashtable", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.dictionary = null; +this.stream = null; +this.index = 0; +this.type = null; +this.len = 0; +this.pt = 0; +Clazz_instantialize(this, arguments);}, javajs["export"], "PDFObject", JU.SB); +Clazz_makeConstructor(c$, +function(index){ +Clazz_superConstructor (this, javajs["export"].PDFObject, []); +this.index = index; +}, "~N"); +Clazz_defineMethod(c$, "getRef", +function(){ +return this.index + " 0 R"; +}); +Clazz_defineMethod(c$, "getID", +function(){ +return this.type.substring(0, 1) + this.index; +}); +Clazz_defineMethod(c$, "isFont", +function(){ +return "Font".equals(this.type); +}); +Clazz_defineMethod(c$, "setStream", +function(stream){ +this.stream = stream; +}, "~A"); +Clazz_defineMethod(c$, "getDef", +function(key){ +return this.dictionary.get(key); +}, "~S"); +Clazz_defineMethod(c$, "addDef", +function(key, value){ +if (this.dictionary == null) this.dictionary = new java.util.Hashtable(); +this.dictionary.put(key, value); +if (key.equals("Type")) this.type = (value).substring(1); +}, "~S,~O"); +Clazz_defineMethod(c$, "setAsStream", +function(){ +this.stream = this.toBytes(0, -1); +this.setLength(0); +}); +Clazz_defineMethod(c$, "output", +function(os){ +if (this.index > 0) { +var s = this.index + " 0 obj\n"; +this.write(os, s.getBytes(), 0); +}var streamLen = 0; +if (this.dictionary != null) { +if (this.dictionary.containsKey("Length")) { +if (this.stream == null) this.setAsStream(); +streamLen = this.stream.length; +var doDeflate = (streamLen > 1000); +if (doDeflate) { +var deflater = new java.util.zip.Deflater(9); +var outBytes = new java.io.ByteArrayOutputStream(1024); +var compBytes = new java.util.zip.DeflaterOutputStream(outBytes, deflater); +compBytes.write(this.stream, 0, streamLen); +compBytes.finish(); +this.stream = outBytes.toByteArray(); +this.dictionary.put("Filter", "/FlateDecode"); +streamLen = this.stream.length; +}this.dictionary.put("Length", "" + streamLen); +}this.write(os, this.getDictionaryText(this.dictionary, "\n").getBytes(), 0); +}if (this.length() > 0) this.write(os, this.toString().getBytes(), 0); +if (this.stream != null) { +this.write(os, "stream\r\n".getBytes(), 0); +this.write(os, this.stream, streamLen); +this.write(os, "\r\nendstream\r\n".getBytes(), 0); +}if (this.index > 0) this.write(os, "endobj\n".getBytes(), 0); +return this.len; +}, "java.io.OutputStream"); +Clazz_defineMethod(c$, "write", +function(os, bytes, nBytes){ +if (nBytes == 0) nBytes = bytes.length; +this.len += nBytes; +os.write(bytes, 0, nBytes); +}, "java.io.OutputStream,~A,~N"); +Clazz_defineMethod(c$, "getDictionaryText", +function(d, nl){ +var sb = new JU.SB(); +sb.append("<<"); +if (d.containsKey("Type")) sb.append("/Type").appendO(d.get("Type")); +for (var e, $e = d.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var s = e.getKey(); +if (s.equals("Type") || s.startsWith("!")) continue; +sb.append("/" + s); +var o = e.getValue(); +if (Clazz_instanceOf(o,"java.util.Map")) { +sb.append((this.getDictionaryText(o, ""))); +continue; +}s = e.getValue(); +if (!s.startsWith("/")) sb.append(" "); +sb.appendO(s); +} +return (sb.length() > 3 ? sb.append(">>").append(nl).toString() : ""); +}, "java.util.Map,~S"); +Clazz_defineMethod(c$, "createSubdict", +function(d0, dict){ +var d = d0.get(dict); +if (d == null) d0.put(dict, d = new java.util.Hashtable()); +return d; +}, "java.util.Map,~S"); +Clazz_defineMethod(c$, "addResource", +function(type, key, value){ +var r = this.createSubdict(this.dictionary, "Resources"); +if (type != null) r = this.createSubdict(r, type); +r.put(key, value); +}, "~S,~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["com.jcraft.jzlib.Deflater"], "java.util.zip.Deflater", null, function(){ +var c$ = Clazz_declareType(java.util.zip, "Deflater", com.jcraft.jzlib.Deflater); +Clazz_makeConstructor(c$, +function(compressionLevel){ +if (compressionLevel != 2147483647) this.init(compressionLevel, 0, false); +}, "~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["com.jcraft.jzlib.DeflaterOutputStream"], "java.util.zip.DeflaterOutputStream", null, function(){ +var c$ = Clazz_declareType(java.util.zip, "DeflaterOutputStream", com.jcraft.jzlib.DeflaterOutputStream); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, java.util.zip.DeflaterOutputStream, []); +}); +Clazz_makeConstructor(c$, +function(bos, deflater){ +Clazz_superConstructor (this, java.util.zip.DeflaterOutputStream, []); +this.setDOS(bos, deflater); +}, "java.io.ByteArrayOutputStream,java.util.zip.Deflater"); +Clazz_defineMethod(c$, "setDOS", +function(out, deflater){ +this.jzSetDOS(out, deflater, 0, true); +}, "java.io.OutputStream,java.util.zip.Deflater"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.ZStream"], "JU.Deflater", ["JU.Deflate"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$finished = false; +Clazz_instantialize(this, arguments);}, JU, "Deflater", JU.ZStream); +Clazz_defineMethod(c$, "init", +function(level, bits, nowrap){ +if (bits == 0) bits = 15; +this.$finished = false; +this.setAdler32(); +this.dstate = new JU.Deflate(this); +this.dstate.deflateInit2(level, nowrap ? -bits : bits); +return this; +}, "~N,~N,~B"); +Clazz_overrideMethod(c$, "deflate", +function(flush){ +if (this.dstate == null) { +return -2; +}var ret = this.dstate.deflate(flush); +if (ret == 1) this.$finished = true; +return ret; +}, "~N"); +Clazz_overrideMethod(c$, "end", +function(){ +this.$finished = true; +if (this.dstate == null) return -2; +var ret = this.dstate.deflateEnd(); +this.dstate = null; +this.free(); +return ret; +}); +Clazz_defineMethod(c$, "params", +function(level, strategy){ +if (this.dstate == null) return -2; +return this.dstate.deflateParams(level, strategy); +}, "~N,~N"); +Clazz_defineMethod(c$, "setDictionary", +function(dictionary, dictLength){ +if (this.dstate == null) return -2; +return this.dstate.deflateSetDictionary(dictionary, dictLength); +}, "~A,~N"); +Clazz_overrideMethod(c$, "finished", +function(){ +return this.$finished; +}); +Clazz_defineMethod(c$, "finish", +function(){ +}); +Clazz_defineMethod(c$, "getBytesRead", +function(){ +return this.dstate.getBytesRead(); +}); +Clazz_defineMethod(c$, "getBytesWritten", +function(){ +return this.dstate.getBytesWritten(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.io.FilterOutputStream"], "JU.DeflaterOutputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.deflater = null; +this.buffer = null; +this.closed = false; +this.syncFlush = false; +this.buf1 = null; +this.mydeflater = false; +this.close_out = true; +Clazz_instantialize(this, arguments);}, JU, "DeflaterOutputStream", java.io.FilterOutputStream); +Clazz_prepareFields (c$, function(){ +this.buf1 = Clazz_newByteArray (1, 0); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JU.DeflaterOutputStream, [null]); +}); +Clazz_defineMethod(c$, "jzSetDOS", +function(out, deflater, size, close_out){ +{ +this.jzSetFOS(out); +}if (size == 0) size = 512; +this.deflater = deflater; +this.buffer = Clazz_newByteArray (size, 0); +this.close_out = close_out; +}, "java.io.OutputStream,JU.Deflater,~N,~B"); +Clazz_defineMethod(c$, "writeByteAsInt", +function(b){ +this.buf1[0] = (b & 0xff); +this.write(this.buf1, 0, 1); +}, "~N"); +Clazz_defineMethod(c$, "write", +function(b, off, len){ +if (this.deflater.finished()) throw new java.io.IOException("finished"); +if ( new Boolean ( new Boolean (off < 0 | len < 0).valueOf() | off + len > b.length).valueOf()) throw new IndexOutOfBoundsException(); +if (len == 0) return; +var flush = this.syncFlush ? 2 : 0; +this.deflater.setInput(b, off, len, true); +while (this.deflater.avail_in > 0) { +var err = this.deflate(flush); +if (err == 1) break; +} +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "finish", +function(){ +while (!this.deflater.finished()) { +this.deflate(4); +} +}); +Clazz_overrideMethod(c$, "close", +function(){ +if (!this.closed) { +this.finish(); +if (this.mydeflater) { +this.deflater.end(); +}if (this.close_out) this.out.close(); +this.closed = true; +}}); +Clazz_defineMethod(c$, "deflate", +function(flush){ +this.deflater.setOutput(this.buffer, 0, this.buffer.length); +var err = this.deflater.deflate(flush); +switch (err) { +case 0: +case 1: +break; +case -5: +if (this.deflater.avail_in <= 0 && flush != 4) { +break; +}default: +throw new java.io.IOException("failed to deflate"); +} +var len = this.deflater.next_out_index; +if (len > 0) { +this.out.write(this.buffer, 0, len); +}return err; +}, "~N"); +Clazz_overrideMethod(c$, "flush", +function(){ +if (this.syncFlush && !this.deflater.finished()) { +while (true) { +var err = this.deflate(2); +if (this.deflater.next_out_index < this.buffer.length) break; +if (err == 1) break; +} +}this.out.flush(); +}); +Clazz_defineMethod(c$, "getTotalIn", +function(){ +return this.deflater.getTotalIn(); +}); +Clazz_defineMethod(c$, "getTotalOut", +function(){ +return this.deflater.getTotalOut(); +}); +Clazz_defineMethod(c$, "setSyncFlush", +function(syncFlush){ +this.syncFlush = syncFlush; +}, "~B"); +Clazz_defineMethod(c$, "getSyncFlush", +function(){ +return this.syncFlush; +}); +Clazz_defineMethod(c$, "getDeflater", +function(){ +return this.deflater; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.ZStream", ["JU.Adler32"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.next_in = null; +this.next_in_index = 0; +this.avail_in = 0; +this.total_in = 0; +this.next_out = null; +this.next_out_index = 0; +this.avail_out = 0; +this.total_out = 0; +this.msg = null; +this.dstate = null; +this.istate = null; +this.data_type = 0; +this.checksum = null; +Clazz_instantialize(this, arguments);}, JU, "ZStream", null); +Clazz_defineMethod(c$, "setAdler32", +function(){ +this.checksum = new JU.Adler32(); +}); +Clazz_defineMethod(c$, "inflate", +function(f){ +if (this.istate == null) return -2; +return this.istate.inflate(f); +}, "~N"); +Clazz_defineMethod(c$, "deflate", +function(flush){ +if (this.dstate == null) { +return -2; +}return this.dstate.deflate(flush); +}, "~N"); +Clazz_defineMethod(c$, "flush_pending", +function(){ +var len = this.dstate.pending; +if (len > this.avail_out) len = this.avail_out; +if (len == 0) return; +System.arraycopy(this.dstate.pending_buf, this.dstate.pending_out, this.next_out, this.next_out_index, len); +this.next_out_index += len; +this.dstate.pending_out += len; +this.total_out += len; +this.avail_out -= len; +this.dstate.pending -= len; +if (this.dstate.pending == 0) { +this.dstate.pending_out = 0; +}}); +Clazz_defineMethod(c$, "read_buf", +function(buf, start, size){ +var len = this.avail_in; +if (len > size) len = size; +if (len == 0) return 0; +this.avail_in -= len; +if (this.dstate.wrap != 0) { +this.checksum.update(this.next_in, this.next_in_index, len); +}System.arraycopy(this.next_in, this.next_in_index, buf, start, len); +this.next_in_index += len; +this.total_in += len; +return len; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "getAdler", +function(){ +return this.checksum.getValue(); +}); +Clazz_defineMethod(c$, "free", +function(){ +this.next_in = null; +this.next_out = null; +this.msg = null; +}); +Clazz_defineMethod(c$, "setOutput", +function(buf, off, len){ +this.next_out = buf; +this.next_out_index = off; +this.avail_out = len; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "setInput", +function(buf, off, len, append){ +if (len <= 0 && append && this.next_in != null) return; +if (this.avail_in > 0 && append) { +var tmp = Clazz_newByteArray (this.avail_in + len, 0); +System.arraycopy(this.next_in, this.next_in_index, tmp, 0, this.avail_in); +System.arraycopy(buf, off, tmp, this.avail_in, len); +this.next_in = tmp; +this.next_in_index = 0; +this.avail_in += len; +} else { +this.next_in = buf; +this.next_in_index = off; +this.avail_in = len; +}}, "~A,~N,~N,~B"); +Clazz_defineMethod(c$, "getAvailIn", +function(){ +return this.avail_in; +}); +Clazz_defineMethod(c$, "getTotalOut", +function(){ +return this.total_out; +}); +Clazz_defineMethod(c$, "getTotalIn", +function(){ +return this.total_in; +}); +c$.getBytes = Clazz_defineMethod(c$, "getBytes", +function(s){ +{ +var x = []; +for (var i = 0; i < s.length;i++) { +var pt = s.charCodeAt(i); +if (pt <= 0x7F) { +x.push(pt); +} else if (pt <= 0x7FF) { +x.push(0xC0|((pt>>6)&0x1F)); +x.push(0x80|(pt&0x3F)); +} else if (pt <= 0xFFFF) { +x.push(0xE0|((pt>>12)&0xF)); +x.push(0x80|((pt>>6)&0x3F)); +x.push(0x80|(pt&0x3F)); +} else { +x.push(0x3F); // '?' +} +} +return (Int32Array != Array ? new Int32Array(x) : x); +}}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Tree"], "JU.Deflate", ["JU.CRC32", "$.GZIPHeader", "$.StaticTree"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.strm = null; +this.status = 0; +this.pending_buf = null; +this.pending_buf_size = 0; +this.pending_out = 0; +this.pending = 0; +this.wrap = 1; +this.data_type = 0; +this.method = 0; +this.last_flush = 0; +this.w_size = 0; +this.w_bits = 0; +this.w_mask = 0; +this.window = null; +this.window_size = 0; +this.prev = null; +this.head = null; +this.ins_h = 0; +this.hash_size = 0; +this.hash_bits = 0; +this.hash_mask = 0; +this.hash_shift = 0; +this.block_start = 0; +this.match_length = 0; +this.prev_match = 0; +this.match_available = 0; +this.strstart = 0; +this.match_start = 0; +this.lookahead = 0; +this.prev_length = 0; +this.max_chain_length = 0; +this.max_lazy_match = 0; +this.level = 0; +this.strategy = 0; +this.good_match = 0; +this.nice_match = 0; +this.dyn_ltree = null; +this.dyn_dtree = null; +this.bl_tree = null; +this.l_desc = null; +this.d_desc = null; +this.bl_desc = null; +this.bl_count = null; +this.heap = null; +this.heap_len = 0; +this.heap_max = 0; +this.depth = null; +this.l_buf = 0; +this.lit_bufsize = 0; +this.last_lit = 0; +this.d_buf = 0; +this.opt_len = 0; +this.static_len = 0; +this.matches = 0; +this.last_eob_len = 0; +this.bi_buf = 0; +this.bi_valid = 0; +this.gheader = null; +Clazz_instantialize(this, arguments);}, JU, "Deflate", null); +Clazz_prepareFields (c$, function(){ +this.l_desc = new JU.Tree(); +this.d_desc = new JU.Tree(); +this.bl_desc = new JU.Tree(); +this.bl_count = Clazz_newShortArray (16, 0); +this.heap = Clazz_newIntArray (573, 0); +this.depth = Clazz_newByteArray (573, 0); +}); +Clazz_makeConstructor(c$, +function(strm){ +this.strm = strm; +this.dyn_ltree = Clazz_newShortArray (1146, 0); +this.dyn_dtree = Clazz_newShortArray (122, 0); +this.bl_tree = Clazz_newShortArray (78, 0); +}, "JU.ZStream"); +Clazz_defineMethod(c$, "deflateInit", +function(level){ +return this.deflateInit2(level, 15); +}, "~N"); +Clazz_defineMethod(c$, "deflateInit2", +function(level, bits){ +return this.deflateInit5(level, 8, bits, 8, 0); +}, "~N,~N"); +Clazz_defineMethod(c$, "deflateInit3", +function(level, bits, memlevel){ +return this.deflateInit5(level, 8, bits, memlevel, 0); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "lm_init", +function(){ +this.window_size = 2 * this.w_size; +this.head[this.hash_size - 1] = 0; +for (var i = 0; i < this.hash_size - 1; i++) { +this.head[i] = 0; +} +this.max_lazy_match = JU.Deflate.config_table[this.level].max_lazy; +this.good_match = JU.Deflate.config_table[this.level].good_length; +this.nice_match = JU.Deflate.config_table[this.level].nice_length; +this.max_chain_length = JU.Deflate.config_table[this.level].max_chain; +this.strstart = 0; +this.block_start = 0; +this.lookahead = 0; +this.match_length = this.prev_length = 2; +this.match_available = 0; +this.ins_h = 0; +}); +Clazz_defineMethod(c$, "tr_init", +function(){ +this.l_desc.dyn_tree = this.dyn_ltree; +this.l_desc.stat_desc = JU.StaticTree.static_l_desc; +this.d_desc.dyn_tree = this.dyn_dtree; +this.d_desc.stat_desc = JU.StaticTree.static_d_desc; +this.bl_desc.dyn_tree = this.bl_tree; +this.bl_desc.stat_desc = JU.StaticTree.static_bl_desc; +this.bi_buf = 0; +this.bi_valid = 0; +this.last_eob_len = 8; +this.init_block(); +}); +Clazz_defineMethod(c$, "init_block", +function(){ +for (var i = 0; i < 286; i++) this.dyn_ltree[i * 2] = 0; + +for (var i = 0; i < 30; i++) this.dyn_dtree[i * 2] = 0; + +for (var i = 0; i < 19; i++) this.bl_tree[i * 2] = 0; + +this.dyn_ltree[512] = 1; +this.opt_len = this.static_len = 0; +this.last_lit = this.matches = 0; +}); +Clazz_defineMethod(c$, "pqdownheap", +function(tree, k){ +var v = this.heap[k]; +var j = k << 1; +while (j <= this.heap_len) { +if (j < this.heap_len && JU.Deflate.smaller(tree, this.heap[j + 1], this.heap[j], this.depth)) { +j++; +}if (JU.Deflate.smaller(tree, v, this.heap[j], this.depth)) break; +this.heap[k] = this.heap[j]; +k = j; +j <<= 1; +} +this.heap[k] = v; +}, "~A,~N"); +c$.smaller = Clazz_defineMethod(c$, "smaller", +function(tree, n, m, depth){ +var tn2 = tree[n * 2]; +var tm2 = tree[m * 2]; +return (tn2 < tm2 || (tn2 == tm2 && depth[n] <= depth[m])); +}, "~A,~N,~N,~A"); +Clazz_defineMethod(c$, "scan_tree", +function(tree, max_code){ +var n; +var prevlen = -1; +var curlen; +var nextlen = tree[1]; +var count = 0; +var max_count = 7; +var min_count = 4; +if (nextlen == 0) { +max_count = 138; +min_count = 3; +}tree[(max_code + 1) * 2 + 1] = 0xffff; +for (n = 0; n <= max_code; n++) { +curlen = nextlen; +nextlen = tree[(n + 1) * 2 + 1]; +if (++count < max_count && curlen == nextlen) { +continue; +} else if (count < min_count) { +this.bl_tree[curlen * 2] += count; +} else if (curlen != 0) { +if (curlen != prevlen) this.bl_tree[curlen * 2]++; +this.bl_tree[32]++; +} else if (count <= 10) { +this.bl_tree[34]++; +} else { +this.bl_tree[36]++; +}count = 0; +prevlen = curlen; +if (nextlen == 0) { +max_count = 138; +min_count = 3; +} else if (curlen == nextlen) { +max_count = 6; +min_count = 3; +} else { +max_count = 7; +min_count = 4; +}} +}, "~A,~N"); +Clazz_defineMethod(c$, "build_bl_tree", +function(){ +var max_blindex; +this.scan_tree(this.dyn_ltree, this.l_desc.max_code); +this.scan_tree(this.dyn_dtree, this.d_desc.max_code); +this.bl_desc.build_tree(this); +for (max_blindex = 18; max_blindex >= 3; max_blindex--) { +if (this.bl_tree[JU.Tree.bl_order[max_blindex] * 2 + 1] != 0) break; +} +this.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; +return max_blindex; +}); +Clazz_defineMethod(c$, "send_all_trees", +function(lcodes, dcodes, blcodes){ +var rank; +this.send_bits(lcodes - 257, 5); +this.send_bits(dcodes - 1, 5); +this.send_bits(blcodes - 4, 4); +for (rank = 0; rank < blcodes; rank++) { +this.send_bits(this.bl_tree[JU.Tree.bl_order[rank] * 2 + 1], 3); +} +this.send_tree(this.dyn_ltree, lcodes - 1); +this.send_tree(this.dyn_dtree, dcodes - 1); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "send_tree", +function(tree, max_code){ +var n; +var prevlen = -1; +var curlen; +var nextlen = tree[1]; +var count = 0; +var max_count = 7; +var min_count = 4; +if (nextlen == 0) { +max_count = 138; +min_count = 3; +}for (n = 0; n <= max_code; n++) { +curlen = nextlen; +nextlen = tree[(n + 1) * 2 + 1]; +if (++count < max_count && curlen == nextlen) { +continue; +} else if (count < min_count) { +do { +this.send_code(curlen, this.bl_tree); +} while (--count != 0); +} else if (curlen != 0) { +if (curlen != prevlen) { +this.send_code(curlen, this.bl_tree); +count--; +}this.send_code(16, this.bl_tree); +this.send_bits(count - 3, 2); +} else if (count <= 10) { +this.send_code(17, this.bl_tree); +this.send_bits(count - 3, 3); +} else { +this.send_code(18, this.bl_tree); +this.send_bits(count - 11, 7); +}count = 0; +prevlen = curlen; +if (nextlen == 0) { +max_count = 138; +min_count = 3; +} else if (curlen == nextlen) { +max_count = 6; +min_count = 3; +} else { +max_count = 7; +min_count = 4; +}} +}, "~A,~N"); +Clazz_defineMethod(c$, "put_byte", +function(p, start, len){ +System.arraycopy(p, start, this.pending_buf, this.pending, len); +this.pending += len; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "put_byteB", +function(c){ +{ +this.pending_buf[this.pending++] = c&0xff; +}}, "~N"); +Clazz_defineMethod(c$, "put_short", +function(w){ +this.put_byteB((w)); +this.put_byteB((w >>> 8)); +}, "~N"); +Clazz_defineMethod(c$, "putShortMSB", +function(b){ +this.put_byteB((b >> 8)); +this.put_byteB((b)); +}, "~N"); +Clazz_defineMethod(c$, "send_code", +function(c, tree){ +var c2 = c * 2; +this.send_bits((tree[c2] & 0xffff), (tree[c2 + 1] & 0xffff)); +}, "~N,~A"); +Clazz_defineMethod(c$, "send_bits", +function(value, length){ +var len = length; +if (this.bi_valid > 16 - len) { +var val = value; +this.bi_buf |= ((val << this.bi_valid) & 0xffff); +this.put_short(this.bi_buf); +this.bi_buf = ((val >>> (16 - this.bi_valid)) & 0xffff); +this.bi_valid += len - 16; +} else { +this.bi_buf |= (((value) << this.bi_valid) & 0xffff); +this.bi_valid += len; +}}, "~N,~N"); +Clazz_defineMethod(c$, "_tr_align", +function(){ +this.send_bits(2, 3); +this.send_code(256, JU.StaticTree.static_ltree); +this.bi_flush(); +if (1 + this.last_eob_len + 10 - this.bi_valid < 9) { +this.send_bits(2, 3); +this.send_code(256, JU.StaticTree.static_ltree); +this.bi_flush(); +}this.last_eob_len = 7; +}); +Clazz_defineMethod(c$, "_tr_tally", +function(dist, lc){ +this.pending_buf[this.d_buf + this.last_lit * 2] = (dist >>> 8); +this.pending_buf[this.d_buf + this.last_lit * 2 + 1] = dist; +this.pending_buf[this.l_buf + this.last_lit] = lc; +this.last_lit++; +if (dist == 0) { +this.dyn_ltree[lc * 2]++; +} else { +this.matches++; +dist--; +this.dyn_ltree[(JU.Tree._length_code[lc] + 256 + 1) * 2]++; +this.dyn_dtree[JU.Tree.d_code(dist) * 2]++; +}if ((this.last_lit & 0x1fff) == 0 && this.level > 2) { +var out_length = this.last_lit * 8; +var in_length = this.strstart - this.block_start; +var dcode; +for (dcode = 0; dcode < 30; dcode++) { +out_length += this.dyn_dtree[dcode * 2] * (5 + JU.Tree.extra_dbits[dcode]); +} +out_length >>>= 3; +if ((this.matches < (Clazz_doubleToInt(this.last_lit / 2))) && out_length < Clazz_doubleToInt(in_length / 2)) return true; +}return (this.last_lit == this.lit_bufsize - 1); +}, "~N,~N"); +Clazz_defineMethod(c$, "compress_block", +function(ltree, dtree){ +var dist; +var lc; +var lx = 0; +var code; +var extra; +if (this.last_lit != 0) { +do { +dist = ((this.pending_buf[this.d_buf + lx * 2] << 8) & 0xff00) | (this.pending_buf[this.d_buf + lx * 2 + 1] & 0xff); +lc = (this.pending_buf[this.l_buf + lx]) & 0xff; +lx++; +if (dist == 0) { +this.send_code(lc, ltree); +} else { +code = JU.Tree._length_code[lc]; +this.send_code(code + 256 + 1, ltree); +extra = JU.Tree.extra_lbits[code]; +if (extra != 0) { +lc -= JU.Tree.base_length[code]; +this.send_bits(lc, extra); +}dist--; +code = JU.Tree.d_code(dist); +this.send_code(code, dtree); +extra = JU.Tree.extra_dbits[code]; +if (extra != 0) { +dist -= JU.Tree.base_dist[code]; +this.send_bits(dist, extra); +}}} while (lx < this.last_lit); +}this.send_code(256, ltree); +this.last_eob_len = ltree[513]; +}, "~A,~A"); +Clazz_defineMethod(c$, "set_data_type", +function(){ +var n = 0; +var ascii_freq = 0; +var bin_freq = 0; +while (n < 7) { +bin_freq += this.dyn_ltree[n * 2]; +n++; +} +while (n < 128) { +ascii_freq += this.dyn_ltree[n * 2]; +n++; +} +while (n < 256) { +bin_freq += this.dyn_ltree[n * 2]; +n++; +} +this.data_type = (bin_freq > (ascii_freq >>> 2) ? 0 : 1); +}); +Clazz_defineMethod(c$, "bi_flush", +function(){ +if (this.bi_valid == 16) { +this.put_short(this.bi_buf); +this.bi_buf = 0; +this.bi_valid = 0; +} else if (this.bi_valid >= 8) { +this.put_byteB(this.bi_buf); +this.bi_buf >>>= 8; +this.bi_valid -= 8; +}}); +Clazz_defineMethod(c$, "bi_windup", +function(){ +if (this.bi_valid > 8) { +this.put_short(this.bi_buf); +} else if (this.bi_valid > 0) { +this.put_byteB(this.bi_buf); +}this.bi_buf = 0; +this.bi_valid = 0; +}); +Clazz_defineMethod(c$, "copy_block", +function(buf, len, header){ +this.bi_windup(); +this.last_eob_len = 8; +if (header) { +this.put_short(len); +this.put_short(~len); +}this.put_byte(this.window, buf, len); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "flush_block_only", +function(eof){ +this._tr_flush_block(this.block_start >= 0 ? this.block_start : -1, this.strstart - this.block_start, eof); +this.block_start = this.strstart; +this.strm.flush_pending(); +}, "~B"); +Clazz_defineMethod(c$, "deflate_stored", +function(flush){ +var max_block_size = 0xffff; +var max_start; +if (max_block_size > this.pending_buf_size - 5) { +max_block_size = this.pending_buf_size - 5; +}while (true) { +if (this.lookahead <= 1) { +this.fill_window(); +if (this.lookahead == 0 && flush == 0) return 0; +if (this.lookahead == 0) break; +}this.strstart += this.lookahead; +this.lookahead = 0; +max_start = this.block_start + max_block_size; +if (this.strstart == 0 || this.strstart >= max_start) { +this.lookahead = (this.strstart - max_start); +this.strstart = max_start; +this.flush_block_only(false); +if (this.strm.avail_out == 0) return 0; +}if (this.strstart - this.block_start >= this.w_size - 262) { +this.flush_block_only(false); +if (this.strm.avail_out == 0) return 0; +}} +this.flush_block_only(flush == 4); +if (this.strm.avail_out == 0) return (flush == 4) ? 2 : 0; +return flush == 4 ? 3 : 1; +}, "~N"); +Clazz_defineMethod(c$, "_tr_stored_block", +function(buf, stored_len, eof){ +this.send_bits((0) + (eof ? 1 : 0), 3); +this.copy_block(buf, stored_len, true); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "_tr_flush_block", +function(buf, stored_len, eof){ +var opt_lenb; +var static_lenb; +var max_blindex = 0; +if (this.level > 0) { +if (this.data_type == 2) this.set_data_type(); +this.l_desc.build_tree(this); +this.d_desc.build_tree(this); +max_blindex = this.build_bl_tree(); +opt_lenb = (this.opt_len + 3 + 7) >>> 3; +static_lenb = (this.static_len + 3 + 7) >>> 3; +if (static_lenb <= opt_lenb) opt_lenb = static_lenb; +} else { +opt_lenb = static_lenb = stored_len + 5; +}if (stored_len + 4 <= opt_lenb && buf != -1) { +this._tr_stored_block(buf, stored_len, eof); +} else if (static_lenb == opt_lenb) { +this.send_bits((2) + (eof ? 1 : 0), 3); +this.compress_block(JU.StaticTree.static_ltree, JU.StaticTree.static_dtree); +} else { +this.send_bits((4) + (eof ? 1 : 0), 3); +this.send_all_trees(this.l_desc.max_code + 1, this.d_desc.max_code + 1, max_blindex + 1); +this.compress_block(this.dyn_ltree, this.dyn_dtree); +}this.init_block(); +if (eof) { +this.bi_windup(); +}}, "~N,~N,~B"); +Clazz_defineMethod(c$, "fill_window", +function(){ +var n; +var m; +var p; +var more; +do { +more = (this.window_size - this.lookahead - this.strstart); +if (more == 0 && this.strstart == 0 && this.lookahead == 0) { +more = this.w_size; +} else if (more == -1) { +more--; +} else if (this.strstart >= this.w_size + this.w_size - 262) { +System.arraycopy(this.window, this.w_size, this.window, 0, this.w_size); +this.match_start -= this.w_size; +this.strstart -= this.w_size; +this.block_start -= this.w_size; +n = this.hash_size; +p = n; +do { +m = (this.head[--p] & 0xffff); +this.head[p] = (m >= this.w_size ? (m - this.w_size) : 0); +} while (--n != 0); +n = this.w_size; +p = n; +do { +m = (this.prev[--p] & 0xffff); +this.prev[p] = (m >= this.w_size ? (m - this.w_size) : 0); +} while (--n != 0); +more += this.w_size; +}if (this.strm.avail_in == 0) return; +n = this.strm.read_buf(this.window, this.strstart + this.lookahead, more); +this.lookahead += n; +if (this.lookahead >= 3) { +this.ins_h = this.window[this.strstart] & 0xff; +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[this.strstart + 1] & 0xff)) & this.hash_mask; +}} while (this.lookahead < 262 && this.strm.avail_in != 0); +}); +Clazz_defineMethod(c$, "deflate_fast", +function(flush){ +var hash_head = 0; +var bflush; +while (true) { +if (this.lookahead < 262) { +this.fill_window(); +if (this.lookahead < 262 && flush == 0) { +return 0; +}if (this.lookahead == 0) break; +}if (this.lookahead >= 3) { +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[(this.strstart) + (2)] & 0xff)) & this.hash_mask; +hash_head = (this.head[this.ins_h] & 0xffff); +this.prev[this.strstart & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = this.strstart; +}if (hash_head != 0 && ((this.strstart - hash_head) & 0xffff) <= this.w_size - 262) { +if (this.strategy != 2) { +this.match_length = this.longest_match(hash_head); +}}if (this.match_length >= 3) { +bflush = this._tr_tally(this.strstart - this.match_start, this.match_length - 3); +this.lookahead -= this.match_length; +if (this.match_length <= this.max_lazy_match && this.lookahead >= 3) { +this.match_length--; +do { +this.strstart++; +this.ins_h = ((this.ins_h << this.hash_shift) ^ (this.window[(this.strstart) + (2)] & 0xff)) & this.hash_mask; +hash_head = (this.head[this.ins_h] & 0xffff); +this.prev[this.strstart & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = this.strstart; +} while (--this.match_length != 0); +this.strstart++; +} else { +this.strstart += this.match_length; +this.match_length = 0; +this.ins_h = this.window[this.strstart] & 0xff; +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[this.strstart + 1] & 0xff)) & this.hash_mask; +}} else { +bflush = this._tr_tally(0, this.window[this.strstart] & 0xff); +this.lookahead--; +this.strstart++; +}if (bflush) { +this.flush_block_only(false); +if (this.strm.avail_out == 0) return 0; +}} +this.flush_block_only(flush == 4); +if (this.strm.avail_out == 0) { +if (flush == 4) return 2; +return 0; +}return flush == 4 ? 3 : 1; +}, "~N"); +Clazz_defineMethod(c$, "deflate_slow", +function(flush){ +var hash_head = 0; +var bflush; +while (true) { +if (this.lookahead < 262) { +this.fill_window(); +if (this.lookahead < 262 && flush == 0) { +return 0; +}if (this.lookahead == 0) break; +}if (this.lookahead >= 3) { +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[(this.strstart) + (2)] & 0xff)) & this.hash_mask; +hash_head = (this.head[this.ins_h] & 0xffff); +this.prev[this.strstart & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = this.strstart; +}this.prev_length = this.match_length; +this.prev_match = this.match_start; +this.match_length = 2; +if (hash_head != 0 && this.prev_length < this.max_lazy_match && ((this.strstart - hash_head) & 0xffff) <= this.w_size - 262) { +if (this.strategy != 2) { +this.match_length = this.longest_match(hash_head); +}if (this.match_length <= 5 && (this.strategy == 1 || (this.match_length == 3 && this.strstart - this.match_start > 4096))) { +this.match_length = 2; +}}if (this.prev_length >= 3 && this.match_length <= this.prev_length) { +var max_insert = this.strstart + this.lookahead - 3; +bflush = this._tr_tally(this.strstart - 1 - this.prev_match, this.prev_length - 3); +this.lookahead -= this.prev_length - 1; +this.prev_length -= 2; +do { +if (++this.strstart <= max_insert) { +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[(this.strstart) + (2)] & 0xff)) & this.hash_mask; +hash_head = (this.head[this.ins_h] & 0xffff); +this.prev[this.strstart & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = this.strstart; +}} while (--this.prev_length != 0); +this.match_available = 0; +this.match_length = 2; +this.strstart++; +if (bflush) { +this.flush_block_only(false); +if (this.strm.avail_out == 0) return 0; +}} else if (this.match_available != 0) { +bflush = this._tr_tally(0, this.window[this.strstart - 1] & 0xff); +if (bflush) { +this.flush_block_only(false); +}this.strstart++; +this.lookahead--; +if (this.strm.avail_out == 0) return 0; +} else { +this.match_available = 1; +this.strstart++; +this.lookahead--; +}} +if (this.match_available != 0) { +bflush = this._tr_tally(0, this.window[this.strstart - 1] & 0xff); +this.match_available = 0; +}this.flush_block_only(flush == 4); +if (this.strm.avail_out == 0) { +if (flush == 4) return 2; +return 0; +}return flush == 4 ? 3 : 1; +}, "~N"); +Clazz_defineMethod(c$, "longest_match", +function(cur_match){ +var chain_length = this.max_chain_length; +var scan = this.strstart; +var match; +var len; +var best_len = this.prev_length; +var limit = this.strstart > (this.w_size - 262) ? this.strstart - (this.w_size - 262) : 0; +var nice_match = this.nice_match; +var wmask = this.w_mask; +var strend = this.strstart + 258; +var scan_end1 = this.window[scan + best_len - 1]; +var scan_end = this.window[scan + best_len]; +if (this.prev_length >= this.good_match) { +chain_length >>= 2; +}if (nice_match > this.lookahead) nice_match = this.lookahead; +do { +match = cur_match; +if (this.window[match + best_len] != scan_end || this.window[match + best_len - 1] != scan_end1 || this.window[match] != this.window[scan] || this.window[++match] != this.window[scan + 1]) continue; +scan += 2; +match++; +do { +} while (this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && this.window[++scan] == this.window[++match] && scan < strend); +len = 258 - (strend - scan); +scan = strend - 258; +if (len > best_len) { +this.match_start = cur_match; +best_len = len; +if (len >= nice_match) break; +scan_end1 = this.window[scan + best_len - 1]; +scan_end = this.window[scan + best_len]; +}} while ((cur_match = (this.prev[cur_match & wmask] & 0xffff)) > limit && --chain_length != 0); +if (best_len <= this.lookahead) return best_len; +return this.lookahead; +}, "~N"); +Clazz_defineMethod(c$, "deflateInit5", +function(level, method, windowBits, memLevel, strategy){ +var wrap = 1; +this.strm.msg = null; +if (level == -1) level = 6; +if (windowBits < 0) { +wrap = 0; +windowBits = -windowBits; +} else if (windowBits > 15) { +wrap = 2; +windowBits -= 16; +this.strm.checksum = new JU.CRC32(); +}if (memLevel < 1 || memLevel > 9 || method != 8 || windowBits < 9 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > 2) { +return -2; +}this.strm.dstate = this; +this.wrap = wrap; +this.w_bits = windowBits; +this.w_size = 1 << this.w_bits; +this.w_mask = this.w_size - 1; +this.hash_bits = memLevel + 7; +this.hash_size = 1 << this.hash_bits; +this.hash_mask = this.hash_size - 1; +this.hash_shift = (Clazz_doubleToInt((this.hash_bits + 3 - 1) / 3)); +this.window = Clazz_newByteArray (this.w_size * 2, 0); +this.prev = Clazz_newShortArray (this.w_size, 0); +this.head = Clazz_newShortArray (this.hash_size, 0); +this.lit_bufsize = 1 << (memLevel + 6); +this.pending_buf = Clazz_newByteArray (this.lit_bufsize * 4, 0); +this.pending_buf_size = this.lit_bufsize * 4; +this.d_buf = Clazz_doubleToInt(this.lit_bufsize / 2); +this.l_buf = (3) * this.lit_bufsize; +this.level = level; +this.strategy = strategy; +this.method = method; +return this.deflateReset(); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "deflateReset", +function(){ +this.strm.total_in = this.strm.total_out = 0; +this.strm.msg = null; +this.strm.data_type = 2; +this.pending = 0; +this.pending_out = 0; +if (this.wrap < 0) { +this.wrap = -this.wrap; +}this.status = (this.wrap == 0) ? 113 : 42; +this.strm.checksum.reset(); +this.last_flush = 0; +this.tr_init(); +this.lm_init(); +return 0; +}); +Clazz_defineMethod(c$, "deflateEnd", +function(){ +if (this.status != 42 && this.status != 113 && this.status != 666) { +return -2; +}this.pending_buf = null; +this.head = null; +this.prev = null; +this.window = null; +return this.status == 113 ? -3 : 0; +}); +Clazz_defineMethod(c$, "deflateParams", +function(_level, _strategy){ +var err = 0; +if (_level == -1) { +_level = 6; +}if (_level < 0 || _level > 9 || _strategy < 0 || _strategy > 2) { +return -2; +}if (JU.Deflate.config_table[this.level].func != JU.Deflate.config_table[_level].func && this.strm.total_in != 0) { +err = this.strm.deflate(1); +}if (this.level != _level) { +this.level = _level; +this.max_lazy_match = JU.Deflate.config_table[this.level].max_lazy; +this.good_match = JU.Deflate.config_table[this.level].good_length; +this.nice_match = JU.Deflate.config_table[this.level].nice_length; +this.max_chain_length = JU.Deflate.config_table[this.level].max_chain; +}this.strategy = _strategy; +return err; +}, "~N,~N"); +Clazz_defineMethod(c$, "deflateSetDictionary", +function(dictionary, dictLength){ +var length = dictLength; +var index = 0; +if (dictionary == null || this.status != 42) return -2; +this.strm.checksum.update(dictionary, 0, dictLength); +if (length < 3) return 0; +if (length > this.w_size - 262) { +length = this.w_size - 262; +index = dictLength - length; +}System.arraycopy(dictionary, index, this.window, 0, length); +this.strstart = length; +this.block_start = length; +this.ins_h = this.window[0] & 0xff; +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[1] & 0xff)) & this.hash_mask; +for (var n = 0; n <= length - 3; n++) { +this.ins_h = (((this.ins_h) << this.hash_shift) ^ (this.window[(n) + (2)] & 0xff)) & this.hash_mask; +this.prev[n & this.w_mask] = this.head[this.ins_h]; +this.head[this.ins_h] = n; +} +return 0; +}, "~A,~N"); +Clazz_defineMethod(c$, "deflate", +function(flush){ +var old_flush; +if (flush > 4 || flush < 0) { +return -2; +}if (this.strm.next_out == null || (this.strm.next_in == null && this.strm.avail_in != 0) || (this.status == 666 && flush != 4)) { +this.strm.msg = JU.Deflate.z_errmsg[4]; +return -2; +}if (this.strm.avail_out == 0) { +this.strm.msg = JU.Deflate.z_errmsg[7]; +return -5; +}old_flush = this.last_flush; +this.last_flush = flush; +if (this.status == 42) { +if (this.wrap == 2) { +this.getGZIPHeader().put(this); +this.status = 113; +this.strm.checksum.reset(); +} else { +var header = (8 + ((this.w_bits - 8) << 4)) << 8; +var level_flags = ((this.level - 1) & 0xff) >> 1; +if (level_flags > 3) level_flags = 3; +header |= (level_flags << 6); +if (this.strstart != 0) header |= 32; +header += 31 - (header % 31); +this.status = 113; +this.putShortMSB(header); +if (this.strstart != 0) { +var adler = this.strm.checksum.getValue(); +this.putShortMSB((adler >>> 16)); +this.putShortMSB((adler & 0xffff)); +}this.strm.checksum.reset(); +}}if (this.pending != 0) { +this.strm.flush_pending(); +if (this.strm.avail_out == 0) { +this.last_flush = -1; +return 0; +}} else if (this.strm.avail_in == 0 && flush <= old_flush && flush != 4) { +this.strm.msg = JU.Deflate.z_errmsg[7]; +return -5; +}if (this.status == 666 && this.strm.avail_in != 0) { +this.strm.msg = JU.Deflate.z_errmsg[7]; +return -5; +}if (this.strm.avail_in != 0 || this.lookahead != 0 || (flush != 0 && this.status != 666)) { +var bstate = -1; +switch (JU.Deflate.config_table[this.level].func) { +case 0: +bstate = this.deflate_stored(flush); +break; +case 1: +bstate = this.deflate_fast(flush); +break; +case 2: +bstate = this.deflate_slow(flush); +break; +default: +} +if (bstate == 2 || bstate == 3) { +this.status = 666; +}if (bstate == 0 || bstate == 2) { +if (this.strm.avail_out == 0) { +this.last_flush = -1; +}return 0; +}if (bstate == 1) { +if (flush == 1) { +this._tr_align(); +} else { +this._tr_stored_block(0, 0, false); +if (flush == 3) { +for (var i = 0; i < this.hash_size; i++) this.head[i] = 0; + +}}this.strm.flush_pending(); +if (this.strm.avail_out == 0) { +this.last_flush = -1; +return 0; +}}}if (flush != 4) return 0; +if (this.wrap <= 0) return 1; +if (this.wrap == 2) { +var adler = this.strm.checksum.getValue(); +this.put_byteB((adler & 0xff)); +this.put_byteB(((adler >> 8) & 0xff)); +this.put_byteB(((adler >> 16) & 0xff)); +this.put_byteB(((adler >> 24) & 0xff)); +this.put_byteB((this.strm.total_in & 0xff)); +this.put_byteB(((this.strm.total_in >> 8) & 0xff)); +this.put_byteB(((this.strm.total_in >> 16) & 0xff)); +this.put_byteB(((this.strm.total_in >> 24) & 0xff)); +this.getGZIPHeader().setCRC(adler); +} else { +var adler = this.strm.checksum.getValue(); +this.putShortMSB((adler >>> 16)); +this.putShortMSB((adler & 0xffff)); +}this.strm.flush_pending(); +if (this.wrap > 0) this.wrap = -this.wrap; +return this.pending != 0 ? 0 : 1; +}, "~N"); +Clazz_defineMethod(c$, "getGZIPHeader", +function(){ +if (this.gheader == null) { +this.gheader = new JU.GZIPHeader(); +}return this.gheader; +}); +Clazz_defineMethod(c$, "getBytesRead", +function(){ +return this.strm.total_in; +}); +Clazz_defineMethod(c$, "getBytesWritten", +function(){ +return this.strm.total_out; +}); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.good_length = 0; +this.max_lazy = 0; +this.nice_length = 0; +this.max_chain = 0; +this.func = 0; +Clazz_instantialize(this, arguments);}, JU.Deflate, "Config", null); +Clazz_makeConstructor(c$, +function(good_length, max_lazy, nice_length, max_chain, func){ +this.good_length = good_length; +this.max_lazy = max_lazy; +this.nice_length = nice_length; +this.max_chain = max_chain; +this.func = func; +}, "~N,~N,~N,~N,~N"); +/*eoif3*/})(); +c$.config_table = null; +{ +JU.Deflate.config_table = new Array(10); +JU.Deflate.config_table[0] = new JU.Deflate.Config(0, 0, 0, 0, 0); +JU.Deflate.config_table[1] = new JU.Deflate.Config(4, 4, 8, 4, 1); +JU.Deflate.config_table[2] = new JU.Deflate.Config(4, 5, 16, 8, 1); +JU.Deflate.config_table[3] = new JU.Deflate.Config(4, 6, 32, 32, 1); +JU.Deflate.config_table[4] = new JU.Deflate.Config(4, 4, 16, 16, 2); +JU.Deflate.config_table[5] = new JU.Deflate.Config(8, 16, 32, 32, 2); +JU.Deflate.config_table[6] = new JU.Deflate.Config(8, 16, 128, 128, 2); +JU.Deflate.config_table[7] = new JU.Deflate.Config(8, 32, 128, 256, 2); +JU.Deflate.config_table[8] = new JU.Deflate.Config(32, 128, 258, 1024, 2); +JU.Deflate.config_table[9] = new JU.Deflate.Config(32, 258, 258, 4096, 2); +}c$.z_errmsg = Clazz_newArray(-1, ["need dictionary", "stream end", "", "file error", "stream error", "data error", "insufficient memory", "buffer error", "incompatible version", ""]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_load(["java.io.OutputStream"], "java.io.FilterOutputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.out = null; +Clazz_instantialize(this, arguments);}, java.io, "FilterOutputStream", java.io.OutputStream); +Clazz_defineMethod(c$, "jzSetFOS", +function(out){ +this.out = out; +}, "java.io.OutputStream"); +Clazz_defineMethod(c$, "writeByteAsInt", +function(b){ +this.out.writeByteAsInt(b); +}, "~N"); +Clazz_defineMethod(c$, "write", +function(b, off, len){ +if ((off | len | (b.length - (len + off)) | (off + len)) < 0) throw new IndexOutOfBoundsException(); +for (var i = 0; i < len; i++) { +this.writeByteAsInt(b[off + i]); +} +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "flush", +function(){ +this.out.flush(); +}); +Clazz_defineMethod(c$, "close", +function(){ +try { +this.flush(); +} catch (ignored) { +if (Clazz_exceptionOf(ignored,"java.io.IOException")){ +} else { +throw ignored; +} +} +this.out.close(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Checksum"], "JU.Adler32", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.s1 = 1; +this.s2 = 0; +this.b1 = null; +Clazz_instantialize(this, arguments);}, JU, "Adler32", null, JU.Checksum); +Clazz_prepareFields (c$, function(){ +this.b1 = Clazz_newByteArray (1, 0); +}); +Clazz_overrideMethod(c$, "resetLong", +function(init){ +this.s1 = init & 0xffff; +this.s2 = (init >> 16) & 0xffff; +}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.s1 = 1; +this.s2 = 0; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return ((this.s2 << 16) | this.s1); +}); +Clazz_overrideMethod(c$, "update", +function(buf, index, len){ +if (len == 1) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +this.s1 %= 65521; +this.s2 %= 65521; +return; +}var len1 = Clazz_doubleToInt(len / 5552); +var len2 = len % 5552; +while (len1-- > 0) { +var k = 5552; +len -= k; +while (k-- > 0) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +} +this.s1 %= 65521; +this.s2 %= 65521; +} +var k = len2; +len -= k; +while (k-- > 0) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +} +this.s1 %= 65521; +this.s2 %= 65521; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "updateByteAsInt", +function(b){ +this.b1[0] = b; +this.update(this.b1, 0, 1); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.dyn_tree = null; +this.max_code = 0; +this.stat_desc = null; +Clazz_instantialize(this, arguments);}, JU, "Tree", null); +c$.d_code = Clazz_defineMethod(c$, "d_code", +function(dist){ +return ((dist) < 256 ? JU.Tree._dist_code[dist] : JU.Tree._dist_code[256 + ((dist) >>> 7)]); +}, "~N"); +Clazz_defineMethod(c$, "gen_bitlen", +function(s){ +var tree = this.dyn_tree; +var stree = this.stat_desc.static_tree; +var extra = this.stat_desc.extra_bits; +var base = this.stat_desc.extra_base; +var max_length = this.stat_desc.max_length; +var h; +var n; +var m; +var bits; +var xbits; +var f; +var overflow = 0; +for (bits = 0; bits <= 15; bits++) s.bl_count[bits] = 0; + +tree[s.heap[s.heap_max] * 2 + 1] = 0; +for (h = s.heap_max + 1; h < 573; h++) { +n = s.heap[h]; +bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; +if (bits > max_length) { +bits = max_length; +overflow++; +}tree[n * 2 + 1] = bits; +if (n > this.max_code) continue; +s.bl_count[bits]++; +xbits = 0; +if (n >= base) xbits = extra[n - base]; +f = tree[n * 2]; +s.opt_len += f * (bits + xbits); +if (stree != null) s.static_len += f * (stree[n * 2 + 1] + xbits); +} +if (overflow == 0) return; +do { +bits = max_length - 1; +while (s.bl_count[bits] == 0) bits--; + +s.bl_count[bits]--; +s.bl_count[bits + 1] += 2; +s.bl_count[max_length]--; +overflow -= 2; +} while (overflow > 0); +for (bits = max_length; bits != 0; bits--) { +n = s.bl_count[bits]; +while (n != 0) { +m = s.heap[--h]; +if (m > this.max_code) continue; +if (tree[m * 2 + 1] != bits) { +s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; +tree[m * 2 + 1] = bits; +}n--; +} +} +}, "JU.Deflate"); +Clazz_defineMethod(c$, "build_tree", +function(s){ +var tree = this.dyn_tree; +var stree = this.stat_desc.static_tree; +var elems = this.stat_desc.elems; +var n; +var m; +var max_code = -1; +var node; +s.heap_len = 0; +s.heap_max = 573; +for (n = 0; n < elems; n++) { +if (tree[n * 2] != 0) { +s.heap[++s.heap_len] = max_code = n; +s.depth[n] = 0; +} else { +tree[n * 2 + 1] = 0; +}} +while (s.heap_len < 2) { +node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); +tree[node * 2] = 1; +s.depth[node] = 0; +s.opt_len--; +if (stree != null) s.static_len -= stree[node * 2 + 1]; +} +this.max_code = max_code; +for (n = Clazz_doubleToInt(s.heap_len / 2); n >= 1; n--) s.pqdownheap(tree, n); + +node = elems; +do { +n = s.heap[1]; +s.heap[1] = s.heap[s.heap_len--]; +s.pqdownheap(tree, 1); +m = s.heap[1]; +s.heap[--s.heap_max] = n; +s.heap[--s.heap_max] = m; +tree[node * 2] = (tree[n * 2] + tree[m * 2]); +s.depth[node] = (Math.max(s.depth[n], s.depth[m]) + 1); +tree[n * 2 + 1] = tree[m * 2 + 1] = node; +s.heap[1] = node++; +s.pqdownheap(tree, 1); +} while (s.heap_len >= 2); +s.heap[--s.heap_max] = s.heap[1]; +this.gen_bitlen(s); +JU.Tree.gen_codes(tree, max_code, s.bl_count); +}, "JU.Deflate"); +c$.gen_codes = Clazz_defineMethod(c$, "gen_codes", +function(tree, max_code, bl_count){ +var code = 0; +var bits; +var n; +JU.Tree.next_code[0] = 0; +for (bits = 1; bits <= 15; bits++) { +JU.Tree.next_code[bits] = code = ((code + bl_count[bits - 1]) << 1); +} +for (n = 0; n <= max_code; n++) { +var len = tree[n * 2 + 1]; +if (len == 0) continue; +tree[n * 2] = (JU.Tree.bi_reverse(JU.Tree.next_code[len]++, len)); +} +}, "~A,~N,~A"); +c$.bi_reverse = Clazz_defineMethod(c$, "bi_reverse", +function(code, len){ +var res = 0; +do { +res |= code & 1; +code >>>= 1; +res <<= 1; +} while (--len > 0); +return res >>> 1; +}, "~N,~N"); +c$.extra_lbits = Clazz_newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]); +c$.extra_dbits = Clazz_newIntArray(-1, [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]); +c$.extra_blbits = Clazz_newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]); +c$.bl_order = Clazz_newByteArray(-1, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +c$._dist_code = Clazz_newByteArray(-1, [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29]); +c$._length_code = Clazz_newByteArray(-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28]); +c$.base_length = Clazz_newIntArray(-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0]); +c$.base_dist = Clazz_newIntArray(-1, [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576]); +c$.next_code = Clazz_newShortArray (16, 0); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Checksum"], "JU.CRC32", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.crc = 0; +this.b1 = null; +Clazz_instantialize(this, arguments);}, JU, "CRC32", null, JU.Checksum); +Clazz_prepareFields (c$, function(){ +this.b1 = Clazz_newByteArray (1, 0); +}); +Clazz_overrideMethod(c$, "update", +function(buf, index, len){ +var c = ~this.crc; +while (--len >= 0) c = JU.CRC32.crc_table[(c ^ buf[index++]) & 0xff] ^ (c >>> 8); + +this.crc = ~c; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.crc = 0; +}); +Clazz_overrideMethod(c$, "resetLong", +function(vv){ +this.crc = (vv & 0xffffffff); +}, "~N"); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.crc & 0xffffffff; +}); +Clazz_overrideMethod(c$, "updateByteAsInt", +function(b){ +this.b1[0] = b; +this.update(this.b1, 0, 1); +}, "~N"); +c$.crc_table = Clazz_newIntArray(-1, [0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274, 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548, 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990, 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096, 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722, 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980, 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974, 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192, 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290, 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444, 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902, 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960, 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506, 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948, 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054, 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912, -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366, -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716, -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770, -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408, -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446, -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492, -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754, -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376, -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662, -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284, -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362, -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400, -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478, -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188, -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682, -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.GZIPHeader", ["JU.ZStream"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.text = false; +this.fhcrc = false; +this.time = 0; +this.xflags = 0; +this.os = 255; +this.extra = null; +this.name = null; +this.comment = null; +this.hcrc = 0; +this.crc = 0; +this.done = false; +this.mtime = 0; +Clazz_instantialize(this, arguments);}, JU, "GZIPHeader", null, Cloneable); +Clazz_defineMethod(c$, "setModifiedTime", +function(mtime){ +this.mtime = mtime; +}, "~N"); +Clazz_defineMethod(c$, "getModifiedTime", +function(){ +return this.mtime; +}); +Clazz_defineMethod(c$, "setOS", +function(os){ +if ((0 <= os && os <= 13) || os == 255) this.os = os; + else throw new IllegalArgumentException("os: " + os); +}, "~N"); +Clazz_defineMethod(c$, "getOS", +function(){ +return this.os; +}); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = JU.ZStream.getBytes(name); +}, "~S"); +Clazz_defineMethod(c$, "getName", +function(){ +if (this.name == null) return ""; +try { +return String.instantialize(this.name, "ISO-8859-1"); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +throw new InternalError(e.toString()); +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "setComment", +function(comment){ +this.comment = JU.ZStream.getBytes(comment); +}, "~S"); +Clazz_defineMethod(c$, "getComment", +function(){ +if (this.comment == null) return ""; +try { +return String.instantialize(this.comment, "ISO-8859-1"); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +throw new InternalError(e.toString()); +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "setCRC", +function(crc){ +this.crc = crc; +}, "~N"); +Clazz_defineMethod(c$, "getCRC", +function(){ +return this.crc; +}); +Clazz_defineMethod(c$, "put", +function(d){ +var flag = 0; +if (this.text) { +flag |= 1; +}if (this.fhcrc) { +flag |= 2; +}if (this.extra != null) { +flag |= 4; +}if (this.name != null) { +flag |= 8; +}if (this.comment != null) { +flag |= 16; +}var xfl = 0; +if (d.level == 1) { +xfl |= 4; +} else if (d.level == 9) { +xfl |= 2; +}d.put_short(0x8b1f); +d.put_byteB(8); +d.put_byteB(flag); +d.put_byteB(this.mtime); +d.put_byteB((this.mtime >> 8)); +d.put_byteB((this.mtime >> 16)); +d.put_byteB((this.mtime >> 24)); +d.put_byteB(xfl); +d.put_byteB(this.os); +if (this.extra != null) { +d.put_byteB(this.extra.length); +d.put_byteB((this.extra.length >> 8)); +d.put_byte(this.extra, 0, this.extra.length); +}if (this.name != null) { +d.put_byte(this.name, 0, this.name.length); +d.put_byteB(0); +}if (this.comment != null) { +d.put_byte(this.comment, 0, this.comment.length); +d.put_byteB(0); +}}, "JU.Deflate"); +Clazz_defineMethod(c$, "clone", +function(){ +var gheader = Clazz_superCall(this, JU.GZIPHeader, "clone", []); +var tmp; +if (gheader.extra != null) { +tmp = Clazz_newByteArray (gheader.extra.length, 0); +System.arraycopy(gheader.extra, 0, tmp, 0, tmp.length); +gheader.extra = tmp; +}if (gheader.name != null) { +tmp = Clazz_newByteArray (gheader.name.length, 0); +System.arraycopy(gheader.name, 0, tmp, 0, tmp.length); +gheader.name = tmp; +}if (gheader.comment != null) { +tmp = Clazz_newByteArray (gheader.comment.length, 0); +System.arraycopy(gheader.comment, 0, tmp, 0, tmp.length); +gheader.comment = tmp; +}return gheader; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Tree"], "JU.StaticTree", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.static_tree = null; +this.extra_bits = null; +this.extra_base = 0; +this.elems = 0; +this.max_length = 0; +Clazz_instantialize(this, arguments);}, JU, "StaticTree", null); +Clazz_makeConstructor(c$, +function(static_tree, extra_bits, extra_base, elems, max_length){ +this.static_tree = static_tree; +this.extra_bits = extra_bits; +this.extra_base = extra_base; +this.elems = elems; +this.max_length = max_length; +}, "~A,~A,~N,~N,~N"); +c$.static_ltree = Clazz_newShortArray(-1, [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8]); +c$.static_dtree = Clazz_newShortArray(-1, [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5]); +c$.static_l_desc = new JU.StaticTree(JU.StaticTree.static_ltree, JU.Tree.extra_lbits, 257, 286, 15); +c$.static_d_desc = new JU.StaticTree(JU.StaticTree.static_dtree, JU.Tree.extra_dbits, 0, 30, 15); +c$.static_bl_desc = new JU.StaticTree(null, JU.Tree.extra_blbits, 0, 19, 7); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "Checksum"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejsvexport.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corejsvexport.z.js new file mode 100755 index 000000000000..643780b0e9c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejsvexport.z.js @@ -0,0 +1,116 @@ +(function(n,G,H,I,t,K,l,C,q,r,s,L,M,u,N,w,x,D,B,y,z,p,A,v,O,P,Q,E,R,S,F,T,U,V,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,b,g){l("JSV.export");q(["JSV.api.ExportInterface"],"JSV.export.Exporter",["JU.OC","$.PT","JSV.common.ExportType","$.JSVFileManager","$.JSViewer"],function(){var a=B(JSV["export"],"Exporter",null,JSV.api.ExportInterface);g(a,"write",function(f,d,e){if(null==d)return this.printPDF(f,null,!1);var c=null,a=null,h,b,j=f.selectedPanel;try{switch(d.size()){default:return"WRITE what?"; +case 1:a=JU.PT.trimQuotes(d.get(0));a.indexOf(".");if(null==j)return null;h=JSV.common.ExportType.getType(a);switch(h){case JSV.common.ExportType.PDF:case JSV.common.ExportType.PNG:case JSV.common.ExportType.JPG:return this.exportTheSpectrum(f,h,null,null,-1,-1,null,!1);default:f.fileHelper.setFileChooser(h);var g=this.getExportableItems(f,h.equals(JSV.common.ExportType.SOURCE)),m=null==g?-1:f.getOptionFromDialog(g,"Export","Choose a spectrum to export");if(-2147483648==m)return null;var l=f.fileHelper.getFile(this.getSuggestedFileName(f, +h),j,!0);if(null==l)return null;b=f.getOutputChannel(l.getFullPath(),!1);var n=this.exportSpectrumOrImage(f,h,m,b);n.startsWith("OK")&&f.si.siUpdateRecentMenus(l.getFullPath());b.closeChannel();return n}case 2:c=d.get(0).toUpperCase(),a=JU.PT.trimQuotes(d.get(1))}var p=a.substring(a.lastIndexOf(".")+1).toUpperCase();p.equals("BASE64")?a=";base64,":p.equals("JDX")?null==c&&(c="XY"):JSV.common.ExportType.isExportMode(p)?c=p:JSV.common.ExportType.isExportMode(c)&&(a+="."+c);h=JSV.common.ExportType.getType(c); +e&&h===JSV.common.ExportType.SVG&&(h=JSV.common.ExportType.SVGI);b=f.getOutputChannel(a,!1);return this.exportSpectrumOrImage(f,h,-1,b)}catch(q){if(w(q,Exception))return System.out.println(q),null;throw q;}},"JSV.common.JSViewer,JU.Lst,~B");b(a,"exportSpectrumOrImage",function(f,d,e,c){var a,b=f.pd();if(0>e&&0>(e=b.getCurrentSpectrumIndex()))return"Error exporting spectrum: No spectrum selected";a=b.getSpectrumAt(e);var k=b.getStartingPointIndex(e);e=b.getEndingPointIndex(e);var j=null;try{var g= +c.isBase64(),j=this.exportTheSpectrum(f,d,c,a,k,e,b,g);if(g)return j;if(j.startsWith("OK"))return"OK - Exported "+d.name()+": "+c.getFileName()+j.substring(2)}catch(m){if(w(m,Exception))j=m.toString();else throw m;}return"Error exporting "+c.getFileName()+": "+j},"JSV.common.JSViewer,JSV.common.ExportType,~N,JU.OC");b(a,"exportTheSpectrum",function(f,d,e,c,a,b,k,j){k=f.selectedPanel;var g=d.name();switch(d){case JSV.common.ExportType.DIF:case JSV.common.ExportType.DIFDUP:case JSV.common.ExportType.FIX:case JSV.common.ExportType.PAC:case JSV.common.ExportType.SQZ:case JSV.common.ExportType.XY:g= +"JDX";break;case JSV.common.ExportType.JPG:case JSV.common.ExportType.PNG:if(null==k)return null;f.fileHelper.setFileChooser(d);d=this.getSuggestedFileName(f,d);f=f.fileHelper.getFile(d,k,!0);return null==f?null:k.saveImage(g.toLowerCase(),f,e);case JSV.common.ExportType.PDF:return this.printPDF(f,"PDF",j);case JSV.common.ExportType.SOURCE:if(null==k)return null;f=k.getPanelData().getSpectrum().getInlineData();if(null!=f)return e.append(f),e.closeChannel(),"OK "+e.getByteCount()+" bytes";k=k.getPanelData().getSpectrum().getFilePath(); +return JSV["export"].Exporter.fileCopy(k,e);case JSV.common.ExportType.UNK:return null}return JSV.common.JSViewer.getInterface("JSV.export."+g.toUpperCase()+"Exporter").exportTheSpectrum(f,d,e,c,a,b,null,!1)},"JSV.common.JSViewer,JSV.common.ExportType,JU.OC,JSV.common.Spectrum,~N,~N,JSV.common.PanelData,~B");b(a,"printPDF",function(f,d,e){var c=null==d||0==d.length;if(!e&&!f.si.isSigned())return"Error: Applet must be signed for the PRINT command.";var a=f.pd();if(null==a)return null;var b=!1,k,b= +!1;k=f.getDialogPrint(c);if(null==k)return null;b||(k.asPDF=!0);c&&k.asPDF&&(c=!1,d="PDF");b=f.selectedPanel;if(!e&&!c){var j=f.fileHelper;j.setFileChooser(JSV.common.ExportType.PDF);if(d.equals("?")||d.equalsIgnoreCase("PDF"))d=this.getSuggestedFileName(f,JSV.common.ExportType.PDF);d=j.getFile(d,b,!0);if(null==d)return null;JSV.common.JSViewer.isJS||f.setProperty("directoryLastExportedFile",j.setDirLastExported(d.getParentAsFile().getFullPath()));d=d.getFullPath()}j=null;try{var g=c?null:e?(new JU.OC).setParams(null, +";base64,",!1,null):f.getOutputChannel(d,!0),m=a.getPrintJobTitle(!0);if(k.showTitle&&(m=b.getInput("Title?","Title for Printing",m),null==m))return null;b.printPanel(k,g,m);j=g.toString()}catch(l){if(w(l,Exception))b.showMessage(l.toString(),"File Error");else throw l;}return j},"JSV.common.JSViewer,~S,~B");b(a,"getExportableItems",function(f,d){var e=f.pd(),c=f.currentSource.isView,a=e.getNumberOfSpectraInCurrentSet();if(1==a||!c&&d||0<=e.getCurrentSpectrumIndex())return null;for(var c=Array(a), +b=0;ba?c:c.substring(0,a),a=".jdx",b=!1;switch(d){case JSV.common.ExportType.XY:case JSV.common.ExportType.FIX:case JSV.common.ExportType.PAC:case JSV.common.ExportType.SQZ:case JSV.common.ExportType.DIF:case JSV.common.ExportType.DIFDUP:case JSV.common.ExportType.SOURCE:c.endsWith("_"+ +d)||(c+="_"+d);a=".jdx";break;case JSV.common.ExportType.AML:a=".xml";break;case JSV.common.ExportType.JPG:case JSV.common.ExportType.PNG:case JSV.common.ExportType.PDF:b=!0;default:a="."+d.toString().toLowerCase()}f.currentSource.isView&&(c=e.getPrintJobTitle(b));return c+a},"JSV.common.JSViewer,JSV.common.ExportType");a.fileCopy=b(a,"fileCopy",function(f,d){try{for(var e=JSV.common.JSVFileManager.getBufferedReaderFromName(f,null),c=null;null!=(c=e.readLine());)d.append(c),d.append(JSV["export"].Exporter.newLine); +d.closeChannel();return"OK "+d.getByteCount()+" bytes"}catch(a){if(w(a,Exception))return a.toString();throw a;}},"~S,JU.OC");a.newLine=System.getProperty("line.separator")});l("JSV.api");A(JSV.api,"ExportInterface",JSV.api.JSVExporter);l("JSV.api");A(JSV.api,"JSVExporter");l("JSV.api");A(JSV.api,"JSVPdfWriter");l("JSV.common");q(["JSV.api.JSVPdfWriter","J.api.GenericGraphics"],"JSV.common.PDFWriter",["java.util.Hashtable","javajs.export.PDFCreator","JU.CU","JSV.common.JSVersion"],function(){var a= +s(function(){this.pdf=this.date=this.g2d=null;this.inPath=!1;this.rgb=null;r(this,arguments)},JSV.common,"PDFWriter",null,[J.api.GenericGraphics,JSV.api.JSVPdfWriter]);y(a,function(){this.rgb=D(3,0)});u(a,function(){this.pdf=new javajs["export"].PDFCreator});g(a,"createPdfDocument",function(f,d,e){var c=d.layout.equals("landscape");this.date=d.date;this.pdf.setOutputStream(e);this.g2d=f.getPanelData().g2d;try{this.pdf.newDocument(d.paperWidth,d.paperHeight,c);var a=new java.util.Hashtable;a.put("Producer", +JSV.common.JSVersion.VERSION);a.put("Creator","JSpecView "+JSV.common.JSVersion.VERSION);a.put("Author","JSpecView");null!=this.date&&a.put("CreationDate",this.date);this.pdf.addInfo(a);f.getPanelData().printPdf(this,d);this.pdf.closeDocument()}catch(b){if(w(b,Exception))f.showMessage(b.toString(),"PDF Creation Error");else throw b;}},"JSV.api.JSVPanel,JSV.common.PrintLayout,java.io.OutputStream");g(a,"canDoLineTo",function(){return!0});g(a,"doStroke",function(f,d){(this.inPath=d)||this.pdf.stroke()}, +"~O,~B");g(a,"drawCircle",function(f,d,e,a){this.pdf.doCircle(d,e,t(a/2),!1)},"~O,~N,~N,~N");g(a,"drawLine",function(f,d,e,a,b){this.pdf.moveto(d,e);this.pdf.lineto(a,b);this.inPath||this.pdf.stroke()},"~O,~N,~N,~N,~N");g(a,"drawPolygon",function(f,d,e,a){this.pdf.doPolygon(d,e,a,!1)},"~O,~A,~A,~N");g(a,"drawRect",function(f,d,a,c,b){this.pdf.doRect(d,a,c,b,!1)},"~O,~N,~N,~N,~N");g(a,"drawString",function(f,d,a,c){this.pdf.drawStringRotated(d,a,c,0)},"~O,~S,~N,~N");g(a,"drawStringRotated",function(f, +d,a,c,b){this.pdf.drawStringRotated(d,a,c,t(b))},"~O,~S,~N,~N,~N");g(a,"fillBackground",function(){},"~O,javajs.api.GenericColor");g(a,"fillCircle",function(f,d,a,c){this.pdf.doCircle(d,a,t(c/2),!0)},"~O,~N,~N,~N");g(a,"fillPolygon",function(f,d,a,c){this.pdf.doPolygon(a,d,c,!0)},"~O,~A,~A,~N");g(a,"fillRect",function(f,d,a,c,b){this.pdf.doRect(d,a,c,b,!0)},"~O,~N,~N,~N,~N");g(a,"lineTo",function(f,d,a){this.pdf.lineto(d,a)},"~O,~N,~N");g(a,"setGraphicsColor",function(f,d){JU.CU.toRGB3f(d.getRGB(), +this.rgb);this.pdf.setColor(this.rgb,!0);this.pdf.setColor(this.rgb,!1)},"~O,javajs.api.GenericColor");g(a,"setFont",function(f,d){var a="/Helvetica";switch(d.idFontStyle){case 1:a+="-Bold";break;case 3:a+="-BoldOblique";break;case 2:a+="-Oblique"}this.pdf.setFont(a,d.fontSizeNominal);return d},"~O,JU.Font");g(a,"setStrokeBold",function(f,d){this.pdf.setLineWidth(d?2:1)},"~O,~B");g(a,"translateScale",function(f,d,a,c){this.pdf.translateScale(d,a,c)},"~O,~N,~N,~N");g(a,"newGrayScaleImage",function(f, +d,a,c,b){this.pdf.addImageResource(d,a,c,b,!1);return d},"~O,~O,~N,~N,~A");g(a,"drawGrayScaleImage",function(f,d,a,c,b,h,k,j,g,m){this.pdf.drawImage(d,a,c,b,h,k,j,g,m)},"~O,~O,~N,~N,~N,~N,~N,~N,~N,~N");g(a,"setWindowParameters",function(){},"~N,~N");b(a,"getColor1",function(f){return this.g2d.getColor1(f)},"~N");b(a,"getColor3",function(f,d,a){return this.g2d.getColor3(f,d,a)},"~N,~N,~N");b(a,"getColor4",function(f,d,a,c){return this.g2d.getColor4(f,d,a,c)},"~N,~N,~N,~N")});l("javajs.export");q(null, +"javajs.export.PDFCreator",["java.util.Hashtable","javajs.export.PDFObject","JU.Lst","$.SB"],function(){var a=s(function(){this.graphics=this.root=this.indirectObjects=this.os=null;this.width=this.height=this.count=this.xrefPt=this.pt=0;this.images=this.fonts=null;r(this,arguments)},javajs["export"],"PDFCreator",null);b(a,"setOutputStream",function(f){this.os=f},"java.io.OutputStream");b(a,"newDocument",function(f,d,a){this.width=a?d:f;this.height=a?f:d;System.out.println("Creating PDF with width="+ +this.width+" and height="+this.height);this.fonts=new java.util.Hashtable;this.indirectObjects=new JU.Lst;this.root=this.newObject("Catalog");var c=this.newObject("Pages"),b=this.newObject("Page"),h=this.newObject(null);this.graphics=this.newObject("XObject");this.root.addDef("Pages",c.getRef());c.addDef("Count","1");c.addDef("Kids","[ "+b.getRef()+" ]");b.addDef("Parent",c.getRef());b.addDef("MediaBox","[ 0 0 "+f+" "+d+" ]");a&&b.addDef("Rotate","90");h.addDef("Length","?");h.append((a?"q 0 1 1 0 0 0 ": +"q 1 0 0 -1 0 "+d)+" cm /"+this.graphics.getID()+" Do Q");b.addDef("Contents",h.getRef());this.addProcSet(b);this.addProcSet(this.graphics);this.graphics.addDef("Subtype","/Form");this.graphics.addDef("FormType","1");this.graphics.addDef("BBox","[0 0 "+this.width+" "+this.height+"]");this.graphics.addDef("Matrix","[1 0 0 1 0 0]");this.graphics.addDef("Length","?");b.addResource("XObject",this.graphics.getID(),this.graphics.getRef());this.g("q 1 w 1 J 1 j 10 M []0 d q ");this.clip(0,0,this.width,this.height)}, +"~N,~N,~B");b(a,"addProcSet",function(f){f.addResource(null,"ProcSet","[/PDF /Text /ImageB /ImageC /ImageI]")},"javajs.export.PDFObject");b(a,"clip",function(f,d,a,c){this.moveto(f,d);this.lineto(a,d);this.lineto(a,c);this.lineto(f,c);this.g("h W n")},"~N,~N,~N,~N");b(a,"moveto",function(f,d){this.g(f+" "+d+" m")},"~N,~N");b(a,"lineto",function(f,d){this.g(f+" "+d+" l")},"~N,~N");b(a,"newObject",function(f){var d=new javajs["export"].PDFObject(++this.count);null!=f&&d.addDef("Type","/"+f);this.indirectObjects.addLast(d); +return d},"~S");b(a,"addInfo",function(f){var d=new java.util.Hashtable,a;for(f=f.entrySet().iterator();f.hasNext()&&((a=f.next())||1);){var c="("+a.getValue().$replace(")","_").$replace("(","_")+")";d.put(a.getKey(),c)}this.root.addDef("Info",d)},"java.util.Map");b(a,"addFontResource",function(a){var d=this.newObject("Font");this.fonts.put(a,d);d.addDef("BaseFont",a);d.addDef("Encoding","/WinAnsiEncoding");d.addDef("Subtype","/Type1");this.graphics.addResource("Font",d.getID(),d.getRef());return d}, +"~S");b(a,"addImageResource",function(a,d,e,c,b){var h=this.newObject("XObject");null==this.images&&(this.images=new java.util.Hashtable);this.images.put(a,h);h.addDef("Subtype","/Image");h.addDef("Length","?");h.addDef("ColorSpace",b?"/DeviceRGB":"/DeviceGray");h.addDef("BitsPerComponent","8");h.addDef("Width",""+d);h.addDef("Height",""+e);this.graphics.addResource("XObject",h.getID(),h.getRef());a=c.length;d=p(a*(b?3:1),0);if(b)for(e=b=0;b>16&255,d[e++]=c[b]>>8&255,d[e++]=c[b]& +255;else for(b=0;bMath.abs(d)&&(d=0),1E-4>Math.abs(e)&&(e=0)}return d+" "+e+" "+e+" "+-d},"~N");b(a,"setColor",function(a,d){this.g(a[0]+" "+a[1]+" "+a[2]+(d?" rg":" RG"))},"~A,~B");b(a,"setFont",function(a, +d){var e=this.fonts.get(a);null==e&&(e=this.addFontResource(a));this.g("/"+e.getID()+" "+d+" Tf")},"~S,~N");b(a,"setLineWidth",function(a){this.g(a+" w")},"~N");b(a,"translateScale",function(a,d,e){this.g(e+" 0 0 "+e+" "+a+" "+d+" cm")},"~N,~N,~N")});l("javajs.export");q(["JU.SB"],"javajs.export.PDFObject",["java.io.ByteArrayOutputStream","java.util.Hashtable","java.util.zip.Deflater","$.DeflaterOutputStream"],function(){var a=s(function(){this.stream=this.dictionary=null;this.index=0;this.type=null; +this.pt=this.len=0;r(this,arguments)},javajs["export"],"PDFObject",JU.SB);u(a,function(a){z(this,javajs["export"].PDFObject,[]);this.index=a},"~N");b(a,"getRef",function(){return this.index+" 0 R"});b(a,"getID",function(){return this.type.substring(0,1)+this.index});b(a,"isFont",function(){return"Font".equals(this.type)});b(a,"setStream",function(a){this.stream=a},"~A");b(a,"getDef",function(a){return this.dictionary.get(a)},"~S");b(a,"addDef",function(a,d){null==this.dictionary&&(this.dictionary= +new java.util.Hashtable);this.dictionary.put(a,d);a.equals("Type")&&(this.type=d.substring(1))},"~S,~O");b(a,"setAsStream",function(){this.stream=this.toBytes(0,-1);this.setLength(0)});b(a,"output",function(a){0>").append(d).toString():""},"java.util.Map,~S");b(a,"createSubdict",function(a,d){var e=a.get(d);null==e&&a.put(d,e=new java.util.Hashtable);return e},"java.util.Map,~S");b(a,"addResource",function(a,d,e){var c=this.createSubdict(this.dictionary,"Resources");null!=a&&(c=this.createSubdict(c,a));c.put(d,e)},"~S,~S,~S")});l("java.util.zip");q(["com.jcraft.jzlib.Deflater"],"java.util.zip.Deflater",null,function(){var a=B(java.util.zip,"Deflater", +com.jcraft.jzlib.Deflater);u(a,function(a){2147483647!=a&&this.init(a,0,!1)},"~N")});l("java.util.zip");q(["com.jcraft.jzlib.DeflaterOutputStream"],"java.util.zip.DeflaterOutputStream",null,function(){var a=B(java.util.zip,"DeflaterOutputStream",com.jcraft.jzlib.DeflaterOutputStream);u(a,function(){z(this,java.util.zip.DeflaterOutputStream,[])});u(a,function(a,d){z(this,java.util.zip.DeflaterOutputStream,[]);this.setDOS(a,d)},"java.io.ByteArrayOutputStream,java.util.zip.Deflater");b(a,"setDOS",function(a, +d){this.jzSetDOS(a,d,0,!0)},"java.io.OutputStream,java.util.zip.Deflater")});l("JU");q(["JU.ZStream"],"JU.Deflater",["JU.Deflate"],function(){var a=s(function(){this.$finished=!1;r(this,arguments)},JU,"Deflater",JU.ZStream);b(a,"init",function(a,d,e){0==d&&(d=15);this.$finished=!1;this.setAdler32();this.dstate=new JU.Deflate(this);this.dstate.deflateInit2(a,e?-d:d);return this},"~N,~N,~B");g(a,"deflate",function(a){if(null==this.dstate)return-2;a=this.dstate.deflate(a);1==a&&(this.$finished=!0);return a}, +"~N");g(a,"end",function(){this.$finished=!0;if(null==this.dstate)return-2;var a=this.dstate.deflateEnd();this.dstate=null;this.free();return a});b(a,"params",function(a,d){return null==this.dstate?-2:this.dstate.deflateParams(a,d)},"~N,~N");b(a,"setDictionary",function(a,d){return null==this.dstate?-2:this.dstate.deflateSetDictionary(a,d)},"~A,~N");g(a,"finished",function(){return this.$finished});b(a,"finish",function(){});b(a,"getBytesRead",function(){return this.dstate.getBytesRead()});b(a,"getBytesWritten", +function(){return this.dstate.getBytesWritten()})});l("JU");q(["java.io.FilterOutputStream"],"JU.DeflaterOutputStream",null,function(){var a=s(function(){this.buffer=this.deflater=null;this.syncFlush=this.closed=!1;this.buf1=null;this.mydeflater=!1;this.close_out=!0;r(this,arguments)},JU,"DeflaterOutputStream",java.io.FilterOutputStream);y(a,function(){this.buf1=p(1,0)});u(a,function(){z(this,JU.DeflaterOutputStream,[null])});b(a,"jzSetDOS",function(a,d,e,c){this.jzSetFOS(a);0==e&&(e=512);this.deflater= +d;this.buffer=p(e,0);this.close_out=c},"java.io.OutputStream,JU.Deflater,~N,~B");b(a,"writeByteAsInt",function(a){this.buf1[0]=a&255;this.write(this.buf1,0,1)},"~N");b(a,"write",function(a,d,e){if(this.deflater.finished())throw new java.io.IOException("finished");if((new Boolean((new Boolean(0>d|0>e)).valueOf()|d+e>a.length)).valueOf())throw new IndexOutOfBoundsException;if(0!=e){var c=this.syncFlush?2:0;for(this.deflater.setInput(a,d,e,!0);0=this.deflater.avail_in&&4!=a)break;default:throw new java.io.IOException("failed to deflate");}a=this.deflater.next_out_index;0this.avail_out&&(a=this.avail_out);0!=a&&(System.arraycopy(this.dstate.pending_buf,this.dstate.pending_out,this.next_out,this.next_out_index,a),this.next_out_index+=a,this.dstate.pending_out+=a,this.total_out+=a,this.avail_out-=a,this.dstate.pending-=a,0==this.dstate.pending&&(this.dstate.pending_out=0))});b(a,"read_buf",function(a,d,e){var c=this.avail_in;c>e&&(c=e);if(0==c)return 0;this.avail_in-= +c;0!=this.dstate.wrap&&this.checksum.update(this.next_in,this.next_in_index,c);System.arraycopy(this.next_in,this.next_in_index,a,d,c);this.next_in_index+=c;this.total_in+=c;return c},"~A,~N,~N");b(a,"getAdler",function(){return this.checksum.getValue()});b(a,"free",function(){this.msg=this.next_out=this.next_in=null});b(a,"setOutput",function(a,d,e){this.next_out=a;this.next_out_index=d;this.avail_out=e},"~A,~N,~N");b(a,"setInput",function(a,d,e,c){0>=e&&c&&null!=this.next_in||(0=c?d.push(c):2047>=c?(d.push(192|c>>6&31),d.push(128|c&63)):65535>=c?(d.push(224|c>>12&15),d.push(128|c>>6&63),d.push(128|c&63)):d.push(63)}return Int32Array!=Array?new Int32Array(d):d},"~S")});l("JU");q(["JU.Tree"],"JU.Deflate",["JU.CRC32","$.GZIPHeader","$.StaticTree"],function(){var a=s(function(){this.strm=null;this.status=0;this.pending_buf=null;this.pending=this.pending_out=this.pending_buf_size=0;this.wrap=1;this.w_mask=this.w_bits=this.w_size=this.last_flush=this.method=this.data_type= +0;this.window=null;this.window_size=0;this.head=this.prev=null;this.nice_match=this.good_match=this.strategy=this.level=this.max_lazy_match=this.max_chain_length=this.prev_length=this.lookahead=this.match_start=this.strstart=this.match_available=this.prev_match=this.match_length=this.block_start=this.hash_shift=this.hash_mask=this.hash_bits=this.hash_size=this.ins_h=0;this.heap=this.bl_count=this.bl_desc=this.d_desc=this.l_desc=this.bl_tree=this.dyn_dtree=this.dyn_ltree=null;this.heap_max=this.heap_len= +0;this.depth=null;this.bi_valid=this.bi_buf=this.last_eob_len=this.matches=this.static_len=this.opt_len=this.d_buf=this.last_lit=this.lit_bufsize=this.l_buf=0;this.gheader=null;r(this,arguments)},JU,"Deflate",null);y(a,function(){this.l_desc=new JU.Tree;this.d_desc=new JU.Tree;this.bl_desc=new JU.Tree;this.bl_count=v(16,0);this.heap=x(573,0);this.depth=p(573,0)});u(a,function(a){this.strm=a;this.dyn_ltree=v(1146,0);this.dyn_dtree=v(122,0);this.bl_tree=v(78,0)},"JU.ZStream");b(a,"deflateInit",function(a){return this.deflateInit2(a, +15)},"~N");b(a,"deflateInit2",function(a,e){return this.deflateInit5(a,8,e,8,0)},"~N,~N");b(a,"deflateInit3",function(a,e,c){return this.deflateInit5(a,8,e,c,0)},"~N,~N,~N");b(a,"lm_init",function(){this.window_size=2*this.w_size;for(var a=this.head[this.hash_size-1]=0;aa;a++)this.dyn_ltree[2*a]=0;for(a=0;30>a;a++)this.dyn_dtree[2*a]=0;for(a=0;19>a;a++)this.bl_tree[2*a]=0;this.dyn_ltree[512]=1;this.last_lit=this.matches=this.opt_len=this.static_len=0});b(a,"pqdownheap",function(a,e){for(var c=this.heap[e],b=e<<1;b<=this.heap_len;){b=j?this.bl_tree[34]++:this.bl_tree[36]++,j=0,b=f,0==k?(g=138,m=3):f==k?(g=6,m=3):(g=7,m=4))},"~A,~N");b(a,"build_bl_tree", +function(){var a;this.scan_tree(this.dyn_ltree,this.l_desc.max_code);this.scan_tree(this.dyn_dtree,this.d_desc.max_code);this.bl_desc.build_tree(this);for(a=18;3<=a&&0==this.bl_tree[2*JU.Tree.bl_order[a]+1];a--);this.opt_len+=3*(a+1)+14;return a});b(a,"send_all_trees",function(a,e,c){var b;this.send_bits(a-257,5);this.send_bits(e-1,5);this.send_bits(c-4,4);for(b=0;b=j?(this.send_code(17,this.bl_tree),this.send_bits(j-3,3)):(this.send_code(18,this.bl_tree),this.send_bits(j-11,7));j=0;b=f;0==k?(g=138,m=3):f==k?(g=6,m=3):(g=7,m=4)}},"~A,~N");b(a,"put_byte", +function(a,e,c){System.arraycopy(a,e,this.pending_buf,this.pending,c);this.pending+=c},"~A,~N,~N");b(a,"put_byteB",function(a){this.pending_buf[this.pending++]=a&255},"~N");b(a,"put_short",function(a){this.put_byteB(a);this.put_byteB(a>>>8)},"~N");b(a,"putShortMSB",function(a){this.put_byteB(a>>8);this.put_byteB(a)},"~N");b(a,"send_code",function(a,e){var c=2*a;this.send_bits(e[c]&65535,e[c+1]&65535)},"~N,~A");b(a,"send_bits",function(a,e){this.bi_valid>16-e?(this.bi_buf|=a<>>16-this.bi_valid&65535,this.bi_valid+=e-16):(this.bi_buf|=a<1+this.last_eob_len+10-this.bi_valid&&(this.send_bits(2,3),this.send_code(256,JU.StaticTree.static_ltree),this.bi_flush());this.last_eob_len=7});b(a,"_tr_tally",function(a,e){this.pending_buf[this.d_buf+2*this.last_lit]=a>>>8;this.pending_buf[this.d_buf+2*this.last_lit+ +1]=a;this.pending_buf[this.l_buf+this.last_lit]=e;this.last_lit++;0==a?this.dyn_ltree[2*e]++:(this.matches++,a--,this.dyn_ltree[2*(JU.Tree._length_code[e]+256+1)]++,this.dyn_dtree[2*JU.Tree.d_code(a)]++);if(0==(this.last_lit&8191)&&2f;f++)c+=this.dyn_dtree[2*f]*(5+JU.Tree.extra_dbits[f]);c>>>=3;if(this.matchesa;)c+=this.dyn_ltree[2*a],a++;for(;128>a;)e+=this.dyn_ltree[2*a],a++;for(;256>a;)c+=this.dyn_ltree[2*a],a++;this.data_type=c>e>>>2?0:1});b(a,"bi_flush",function(){16==this.bi_valid?(this.put_short(this.bi_buf),this.bi_valid=this.bi_buf=0):8<=this.bi_valid&&(this.put_byteB(this.bi_buf),this.bi_buf>>>=8,this.bi_valid-=8)});b(a,"bi_windup",function(){8this.pending_buf_size-5&&(e=this.pending_buf_size-5);;){if(1>=this.lookahead){this.fill_window(); +if(0==this.lookahead&&0==a)return 0;if(0==this.lookahead)break}this.strstart+=this.lookahead;this.lookahead=0;c=this.block_start+e;if(0==this.strstart||this.strstart>=c)if(this.lookahead=this.strstart-c,this.strstart=c,this.flush_block_only(!1),0==this.strm.avail_out)return 0;if(this.strstart-this.block_start>=this.w_size-262&&(this.flush_block_only(!1),0==this.strm.avail_out))return 0}this.flush_block_only(4==a);return 0==this.strm.avail_out?4==a?2:0:4==a?3:1},"~N");b(a,"_tr_stored_block",function(a, +e,c){this.send_bits(0+(c?1:0),3);this.copy_block(a,e,!0)},"~N,~N,~B");b(a,"_tr_flush_block",function(a,e,c){var b,f,k=0;0>>3,f=this.static_len+3+7>>>3,f<=b&&(b=f)):b=f=e+5;e+4<=b&&-1!=a?this._tr_stored_block(a,e,c):f==b?(this.send_bits(2+(c?1:0),3),this.compress_block(JU.StaticTree.static_ltree,JU.StaticTree.static_dtree)):(this.send_bits(4+(c?1: +0),3),this.send_all_trees(this.l_desc.max_code+1,this.d_desc.max_code+1,k+1),this.compress_block(this.dyn_ltree,this.dyn_dtree));this.init_block();c&&this.bi_windup()},"~N,~N,~B");b(a,"fill_window",function(){var a,e,c,b;do{b=this.window_size-this.lookahead-this.strstart;if(0==b&&0==this.strstart&&0==this.lookahead)b=this.w_size;else if(-1==b)b--;else if(this.strstart>=this.w_size+this.w_size-262){System.arraycopy(this.window,this.w_size,this.window,0,this.w_size);this.match_start-=this.w_size;this.strstart-= +this.w_size;this.block_start-=this.w_size;c=a=this.hash_size;do e=this.head[--c]&65535,this.head[c]=e>=this.w_size?e-this.w_size:0;while(0!=--a);c=a=this.w_size;do e=this.prev[--c]&65535,this.prev[c]=e>=this.w_size?e-this.w_size:0;while(0!=--a);b+=this.w_size}if(0==this.strm.avail_in)break;a=this.strm.read_buf(this.window,this.strstart+this.lookahead,b);this.lookahead+=a;3<=this.lookahead&&(this.ins_h=this.window[this.strstart]&255,this.ins_h=(this.ins_h<this.lookahead&&0!=this.strm.avail_in)});b(a,"deflate_fast",function(a){for(var b=0,c;;){if(262>this.lookahead){this.fill_window();if(262>this.lookahead&&0==a)return 0;if(0==this.lookahead)break}3<=this.lookahead&&(this.ins_h=(this.ins_h<this.lookahead){this.fill_window();if(262>this.lookahead&&0==a)return 0;if(0==this.lookahead)break}3<=this.lookahead&&(this.ins_h=(this.ins_h<=this.match_length&&(1==this.strategy||3==this.match_length&&4096this.w_size-262?this.strstart-(this.w_size-262):0,j=this.nice_match,g=this.w_mask,m=this.strstart+258,l=this.window[c+h-1],n=this.window[c+h];this.prev_length>=this.good_match&& +(b>>=2);j>this.lookahead&&(j=this.lookahead);do if(f=a,!(this.window[f+h]!=n||this.window[f+h-1]!=l||this.window[f]!=this.window[c]||this.window[++f]!=this.window[c+1])){c+=2;f++;do;while(this.window[++c]==this.window[++f]&&this.window[++c]==this.window[++f]&&this.window[++c]==this.window[++f]&&this.window[++c]==this.window[++f]&&this.window[++c]==this.window[++f]&&this.window[++c]==this.window[++f]&&this.window[++c]==this.window[++f]&&this.window[++c]==this.window[++f]&&ch){this.match_start=a;h=f;if(f>=j)break;l=this.window[c+h-1];n=this.window[c+h]}}while((a=this.prev[a&g]&65535)>k&&0!=--b);return h<=this.lookahead?h:this.lookahead},"~N");b(a,"deflateInit5",function(a,b,c,f,h){var g=1;this.strm.msg=null;-1==a&&(a=6);0>c?(g=0,c=-c):15f||9c||15a||9h||2this.wrap&&(this.wrap=-this.wrap);this.status=0==this.wrap?113:42;this.strm.checksum.reset();this.last_flush=0;this.tr_init();this.lm_init();return 0});b(a,"deflateEnd",function(){if(42!=this.status&&113!=this.status&&666!=this.status)return-2;this.window=this.prev=this.head=this.pending_buf=null;return 113==this.status?-3:0});b(a,"deflateParams",function(a,b){var c=0;-1==a&&(a=6);if(0>a||9b||2c)return 0;c>this.w_size-262&&(c=this.w_size-262,f=b-c);System.arraycopy(a,f,this.window,0,c);this.block_start=this.strstart=c;this.ins_h=this.window[0]&255;this.ins_h=(this.ins_h<a)return-2;if(null==this.strm.next_out|| +null==this.strm.next_in&&0!=this.strm.avail_in||666==this.status&&4!=a)return this.strm.msg=JU.Deflate.z_errmsg[4],-2;if(0==this.strm.avail_out)return this.strm.msg=JU.Deflate.z_errmsg[7],-5;b=this.last_flush;this.last_flush=a;if(42==this.status){if(2==this.wrap)this.getGZIPHeader().put(this),this.status=113;else{var c=8+(this.w_bits-8<<4)<<8,f=(this.level-1&255)>>1;3>>16),this.putShortMSB(c&65535))}this.strm.checksum.reset()}if(0!=this.pending){if(this.strm.flush_pending(),0==this.strm.avail_out)return this.last_flush=-1,0}else if(0==this.strm.avail_in&&a<=b&&4!=a)return this.strm.msg=JU.Deflate.z_errmsg[7],-5;if(666==this.status&&0!=this.strm.avail_in)return this.strm.msg=JU.Deflate.z_errmsg[7],-5;if(0!=this.strm.avail_in||0!=this.lookahead||0!=a&&666!=this.status){b=-1;switch(JU.Deflate.config_table[this.level].func){case 0:b=this.deflate_stored(a); +break;case 1:b=this.deflate_fast(a);break;case 2:b=this.deflate_slow(a)}if(2==b||3==b)this.status=666;if(0==b||2==b)return 0==this.strm.avail_out&&(this.last_flush=-1),0;if(1==b){if(1==a)this._tr_align();else if(this._tr_stored_block(0,0,!1),3==a)for(b=0;b=this.wrap)return 1;2==this.wrap?(c=this.strm.checksum.getValue(),this.put_byteB(c&255),this.put_byteB(c>>8& +255),this.put_byteB(c>>16&255),this.put_byteB(c>>24&255),this.put_byteB(this.strm.total_in&255),this.put_byteB(this.strm.total_in>>8&255),this.put_byteB(this.strm.total_in>>16&255),this.put_byteB(this.strm.total_in>>24&255),this.getGZIPHeader().setCRC(c)):(c=this.strm.checksum.getValue(),this.putShortMSB(c>>>16),this.putShortMSB(c&65535));this.strm.flush_pending();0(b|e|a.length-(e+b)|b+e))throw new IndexOutOfBoundsException;for(var c=0;c>16&65535},"~N");g(a,"reset",function(){this.s1=1;this.s2=0});g(a,"getValue",function(){return this.s2<<16|this.s1});g(a,"update",function(a,b,e){if(1==e)this.s1+=a[b++]&255,this.s2+=this.s1;else{for(var c=t(e/5552),g=e%5552;0a?JU.Tree._dist_code[a]:JU.Tree._dist_code[256+(a>>>7)]},"~N");b(n,"gen_bitlen",function(a){var b=this.dyn_tree,d=this.stat_desc.static_tree,e=this.stat_desc.extra_bits,c=this.stat_desc.extra_base,g=this.stat_desc.max_length,h,k,j,l,m,n=0;for(j=0;15>=j;j++)a.bl_count[j]=0;b[2*a.heap[a.heap_max]+1]=0;for(h= +a.heap_max+1;573>h;h++)k=a.heap[h],j=b[2*b[2*k+1]+1]+1,j>g&&(j=g,n++),b[2*k+1]=j,k>this.max_code||(a.bl_count[j]++,l=0,k>=c&&(l=e[k-c]),m=b[2*k],a.opt_len+=m*(j+l),null!=d&&(a.static_len+=m*(d[2*k+1]+l)));if(0!=n){do{for(j=g-1;0==a.bl_count[j];)j--;a.bl_count[j]--;a.bl_count[j+1]+=2;a.bl_count[g]--;n-=2}while(0this.max_code||(b[2*d+1]!=j&&(a.opt_len+=(j-b[2*d+1])*b[2*d],b[2*d+1]=j),k--)}},"JU.Deflate");b(n,"build_tree",function(a){var b= +this.dyn_tree,d=this.stat_desc.static_tree,e=this.stat_desc.elems,c,g=-1,h;a.heap_len=0;a.heap_max=573;for(c=0;ca.heap_len;)h=a.heap[++a.heap_len]=2>g?++g:0,b[2*h]=1,a.depth[h]=0,a.opt_len--,null!=d&&(a.static_len-=d[2*h+1]);this.max_code=g;for(c=t(a.heap_len/2);1<=c;c--)a.pqdownheap(b,c);h=e;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],a.pqdownheap(b,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,b[2*h]=b[2* +c]+b[2*d],a.depth[h]=Math.max(a.depth[c],a.depth[d])+1,b[2*c+1]=b[2*d+1]=h,a.heap[1]=h++,a.pqdownheap(b,1);while(2<=a.heap_len);a.heap[--a.heap_max]=a.heap[1];this.gen_bitlen(a);JU.Tree.gen_codes(b,g,a.bl_count)},"JU.Deflate");n.gen_codes=b(n,"gen_codes",function(a,b,d){var e=0,c;JU.Tree.next_code[0]=0;for(c=1;15>=c;c++)JU.Tree.next_code[c]=e=e+d[c-1]<<1;for(d=0;d<=b;d++)e=a[2*d+1],0!=e&&(a[2*d]=JU.Tree.bi_reverse(JU.Tree.next_code[e]++,e))},"~A,~N,~A");n.bi_reverse=b(n,"bi_reverse",function(a,b){var d= +0;do d|=a&1,a>>>=1,d<<=1;while(0<--b);return d>>>1},"~N,~N");n.extra_lbits=x(-1,[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);n.extra_dbits=x(-1,[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);n.extra_blbits=x(-1,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);n.bl_order=p(-1,[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);n._dist_code=p(-1,[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11, +11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, +15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28, +28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29]);n._length_code=p(-1,[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16, +16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26, +26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28]);n.base_length=x(-1,[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);n.base_dist=x(-1,[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]);n.next_code=v(16,0);l("JU");q(["JU.Checksum"],"JU.CRC32",null,function(){var a=s(function(){this.crc=0;this.b1=null; +r(this,arguments)},JU,"CRC32",null,JU.Checksum);y(a,function(){this.b1=p(1,0)});g(a,"update",function(a,b,e){for(var c=~this.crc;0<=--e;)c=JU.CRC32.crc_table[(c^a[b++])&255]^c>>>8;this.crc=~c},"~A,~N,~N");g(a,"reset",function(){this.crc=0});g(a,"resetLong",function(a){this.crc=a&4294967295},"~N");g(a,"getValue",function(){return this.crc&4294967295});g(a,"updateByteAsInt",function(a){this.b1[0]=a;this.update(this.b1,0,1)},"~N");a.crc_table=x(-1,[0,1996959894,-301047508,-1727442502,124634137,1886057615, +-379345611,-1637575261,249268274,2044508324,-522852066,-1747789432,162941995,2125561021,-407360249,-1866523247,498536548,1789927666,-205950648,-2067906082,450548861,1843258603,-187386543,-2083289657,325883990,1684777152,-43845254,-1973040660,335633487,1661365465,-99664541,-1928851979,997073096,1281953886,-715111964,-1570279054,1006888145,1258607687,-770865667,-1526024853,901097722,1119000684,-608450090,-1396901568,853044451,1172266101,-589951537,-1412350631,651767980,1373503546,-925412992,-1076862698, +565507253,1454621731,-809855591,-1195530993,671266974,1594198024,-972236366,-1324619484,795835527,1483230225,-1050600021,-1234817731,1994146192,31158534,-1731059524,-271249366,1907459465,112637215,-1614814043,-390540237,2013776290,251722036,-1777751922,-519137256,2137656763,141376813,-1855689577,-429695999,1802195444,476864866,-2056965928,-228458418,1812370925,453092731,-2113342271,-183516073,1706088902,314042704,-1950435094,-54949764,1658658271,366619977,-1932296973,-69972891,1303535960,984961486, +-1547960204,-725929758,1256170817,1037604311,-1529756563,-740887301,1131014506,879679996,-1385723834,-631195440,1141124467,855842277,-1442165665,-586318647,1342533948,654459306,-1106571248,-921952122,1466479909,544179635,-1184443383,-832445281,1591671054,702138776,-1328506846,-942167884,1504918807,783551873,-1212326853,-1061524307,-306674912,-1698712650,62317068,1957810842,-355121351,-1647151185,81470997,1943803523,-480048366,-1805370492,225274430,2053790376,-468791541,-1828061283,167816743,2097651377, +-267414716,-2029476910,503444072,1762050814,-144550051,-2140837941,426522225,1852507879,-19653770,-1982649376,282753626,1742555852,-105259153,-1900089351,397917763,1622183637,-690576408,-1580100738,953729732,1340076626,-776247311,-1497606297,1068828381,1219638859,-670225446,-1358292148,906185462,1090812512,-547295293,-1469587627,829329135,1181335161,-882789492,-1134132454,628085408,1382605366,-871598187,-1156888829,570562233,1426400815,-977650754,-1296233688,733239954,1555261956,-1026031705,-1244606671, +752459403,1541320221,-1687895376,-328994266,1969922972,40735498,-1677130071,-351390145,1913087877,83908371,-1782625662,-491226604,2075208622,213261112,-1831694693,-438977011,2094854071,198958881,-2032938284,-237706686,1759359992,534414190,-2118248755,-155638181,1873836001,414664567,-2012718362,-15766928,1711684554,285281116,-1889165569,-127750551,1634467795,376229701,-1609899400,-686959890,1308918612,956543938,-1486412191,-799009033,1231636301,1047427035,-1362007478,-640263460,1088359270,936918E3, +-1447252397,-558129467,1202900863,817233897,-1111625188,-893730166,1404277552,615818150,-1160759803,-841546093,1423857449,601450431,-1285129682,-1000256840,1567103746,711928724,-1274298825,-1022587231,1510334235,755167117])});l("JU");q(null,"JU.GZIPHeader",["JU.ZStream"],function(){var a=s(function(){this.fhcrc=this.text=!1;this.xflags=this.time=0;this.os=255;this.comment=this.name=this.extra=null;this.crc=this.hcrc=0;this.done=!1;this.mtime=0;r(this,arguments)},JU,"GZIPHeader",null,Cloneable);b(a, +"setModifiedTime",function(a){this.mtime=a},"~N");b(a,"getModifiedTime",function(){return this.mtime});b(a,"setOS",function(a){if(0<=a&&13>=a||255==a)this.os=a;else throw new IllegalArgumentException("os: "+a);},"~N");b(a,"getOS",function(){return this.os});b(a,"setName",function(a){this.name=JU.ZStream.getBytes(a)},"~S");b(a,"getName",function(){if(null==this.name)return"";try{return String.instantialize(this.name,"ISO-8859-1")}catch(a){if(w(a,"java.io.UnsupportedEncodingException"))throw new InternalError(a.toString()); +throw a;}});b(a,"setComment",function(a){this.comment=JU.ZStream.getBytes(a)},"~S");b(a,"getComment",function(){if(null==this.comment)return"";try{return String.instantialize(this.comment,"ISO-8859-1")}catch(a){if(w(a,"java.io.UnsupportedEncodingException"))throw new InternalError(a.toString());throw a;}});b(a,"setCRC",function(a){this.crc=a},"~N");b(a,"getCRC",function(){return this.crc});b(a,"put",function(a){var b=0;this.text&&(b|=1);this.fhcrc&&(b|=2);null!=this.extra&&(b|=4);null!=this.name&& +(b|=8);null!=this.comment&&(b|=16);var e=0;1==a.level?e|=4:9==a.level&&(e|=2);a.put_short(35615);a.put_byteB(8);a.put_byteB(b);a.put_byteB(this.mtime);a.put_byteB(this.mtime>>8);a.put_byteB(this.mtime>>16);a.put_byteB(this.mtime>>24);a.put_byteB(e);a.put_byteB(this.os);null!=this.extra&&(a.put_byteB(this.extra.length),a.put_byteB(this.extra.length>>8),a.put_byte(this.extra,0,this.extra.length));null!=this.name&&(a.put_byte(this.name,0,this.name.length),a.put_byteB(0));null!=this.comment&&(a.put_byte(this.comment, +0,this.comment.length),a.put_byteB(0))},"JU.Deflate");b(a,"clone",function(){var a=F(this,JU.GZIPHeader,"clone",[]),b;null!=a.extra&&(b=p(a.extra.length,0),System.arraycopy(a.extra,0,b,0,b.length),a.extra=b);null!=a.name&&(b=p(a.name.length,0),System.arraycopy(a.name,0,b,0,b.length),a.name=b);null!=a.comment&&(b=p(a.comment.length,0),System.arraycopy(a.comment,0,b,0,b.length),a.comment=b);return a})});l("JU");q(["JU.Tree"],"JU.StaticTree",null,function(){var a=s(function(){this.extra_bits=this.static_tree= +null;this.max_length=this.elems=this.extra_base=0;r(this,arguments)},JU,"StaticTree",null);u(a,function(a,b,e,c,g){this.static_tree=a;this.extra_bits=b;this.extra_base=e;this.elems=c;this.max_length=g},"~A,~A,~N,~N,~N");a.static_ltree=v(-1,[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122, +8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29, +8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503, +9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8]);a.static_dtree=v(-1,[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5, +27,5,7,5,23,5]);a.static_l_desc=new JU.StaticTree(JU.StaticTree.static_ltree,JU.Tree.extra_lbits,257,286,15);a.static_d_desc=new JU.StaticTree(JU.StaticTree.static_dtree,JU.Tree.extra_dbits,0,30,15);a.static_bl_desc=new JU.StaticTree(null,JU.Tree.extra_blbits,0,19,7)});l("JU");A(JU,"Checksum")})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt, +Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejsvmenu.js b/config/plugins/visualizations/jmol/static/j2s/core/corejsvmenu.js new file mode 100755 index 000000000000..74471697d458 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejsvmenu.js @@ -0,0 +1,392 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "GenericMenuInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.js2d"); +Clazz_load(["JSV.popup.JSVGenericPopup"], "JSV.js2d.JsPopup", ["JSV.popup.JSVPopupResourceBundle", "J.awtjs2d.JSPopupHelper"], function(){ +var c$ = Clazz_declareType(JSV.js2d, "JsPopup", JSV.popup.JSVGenericPopup); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.js2d.JsPopup, []); +this.helper = new J.awtjs2d.JSPopupHelper(this); +}); +Clazz_overrideMethod(c$, "jpiInitialize", +function(viewer, menu){ +var bundle = new JSV.popup.JSVPopupResourceBundle(); +this.initialize(viewer, bundle, menu); +}, "J.api.PlatformViewer,~S"); +Clazz_overrideMethod(c$, "menuShowPopup", +function(popup, x, y){ +try { +(popup).show(this.isTainted ? this.vwr.getApplet() : null, x, y); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "J.api.SC,~N,~N"); +Clazz_overrideMethod(c$, "getImageIcon", +function(fileName){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "menuFocusCallback", +function(name, actionCommand, b){ +}, "~S,~S,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.popup"); +Clazz_load(["J.popup.GenericPopup"], "JSV.popup.JSVGenericPopup", ["JU.PT", "JSV.common.JSVersion", "$.JSViewer", "JSV.popup.JSVPopupResourceBundle"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.updateMode = 0; +this.cnmrPeaks = null; +this.hnmrPeaks = null; +this.aboutComputedMenuBaseCount = 0; +this.allowMenu = false; +this.zoomEnabled = false; +this.pd = null; +this.thisJsvp = null; +Clazz_instantialize(this, arguments);}, JSV.popup, "JSVGenericPopup", J.popup.GenericPopup); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JSV.popup.JSVGenericPopup, []); +}); +Clazz_defineMethod(c$, "initialize", +function(viewer, bundle, title){ +this.vwr = viewer; +this.initSwing(title, bundle, viewer.getApplet(), JSV.common.JSViewer.isJS, viewer.isSigned, false); +}, "JSV.common.JSViewer,J.popup.PopupResource,~S"); +Clazz_defineMethod(c$, "jpiDispose", +function(){ +this.vwr = null; +Clazz_superCall(this, JSV.popup.JSVGenericPopup, "jpiDispose", []); +}); +Clazz_overrideMethod(c$, "jpiGetMenuAsObject", +function(){ +return this.popupMenu; +}); +Clazz_overrideMethod(c$, "jpiShow", +function(x, y){ +this.show(x, y, false); +this.appRestorePopupMenu(); +this.menuShowPopup(this.popupMenu, this.thisx, this.thisy); +}, "~N,~N"); +Clazz_overrideMethod(c$, "jpiUpdateComputedMenus", +function(){ +if (this.updateMode == -1) return; +this.updateMode = 0; +this.getViewerData(); +this.updateFileMenu(); +this.updateFileTypeDependentMenus(); +this.updateMode = 1; +this.updateAboutSubmenu(); +}); +Clazz_overrideMethod(c$, "appCheckItem", +function(item, newMenu){ +}, "~S,J.api.SC"); +Clazz_overrideMethod(c$, "appFixLabel", +function(label){ +if (label.startsWith("_")) label = label.substring(label.indexOf("_", 2) + 1); + else if (label.equals("VERSION")) label = JSV.common.JSVersion.VERSION; +label = JU.PT.rep(label, "JAVA", ""); +label = JU.PT.rep(label, "CB", ""); +label = JU.PT.rep(label, "Menu", ""); +label = JU.PT.rep(label, "_", " "); +return label; +}, "~S"); +Clazz_overrideMethod(c$, "getScriptForCallback", +function(source, id, script){ +return script; +}, "J.api.SC,~S,~S"); +Clazz_overrideMethod(c$, "appGetMenuAsString", +function(title){ +return ( new JSV.popup.JSVPopupResourceBundle()).getMenuAsText(title); +}, "~S"); +Clazz_overrideMethod(c$, "appGetBooleanProperty", +function(name){ +return false; +}, "~S"); +Clazz_overrideMethod(c$, "appRunSpecialCheckBox", +function(item, basename, what, TF){ +return false; +}, "J.api.SC,~S,~S,~B"); +Clazz_overrideMethod(c$, "appRestorePopupMenu", +function(){ +this.thisPopup = this.popupMenu; +}); +Clazz_overrideMethod(c$, "appRunScript", +function(script){ +this.vwr.runScript(script); +}, "~S"); +Clazz_overrideMethod(c$, "appUpdateForShow", +function(){ +this.thisJsvp = this.vwr.selectedPanel; +this.setEnables(this.thisJsvp); +if (this.updateMode == -1) return; +this.getViewerData(); +this.updateMode = 2; +this.updateSpectraMenu(); +this.updateAboutSubmenu(); +}); +Clazz_overrideMethod(c$, "appUpdateSpecialCheckBoxValue", +function(item, what, TF){ +}, "J.api.SC,~S,~B"); +Clazz_defineMethod(c$, "getViewerData", +function(){ +}); +Clazz_defineMethod(c$, "updateFileTypeDependentMenus", +function(){ +}); +Clazz_defineMethod(c$, "updateFileMenu", +function(){ +var menu = this.htMenus.get("fileMenu"); +if (menu == null) return; +}); +Clazz_defineMethod(c$, "updateSpectraMenu", +function(){ +var menuh = this.htMenus.get("hnmrMenu"); +var menuc = this.htMenus.get("cnmrMenu"); +if (menuh != null) this.menuRemoveAll(menuh, 0); +if (menuc != null) this.menuRemoveAll(menuc, 0); +var menu = this.htMenus.get("spectraMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +var isOK = new Boolean (this.setSpectraMenu(menuh, this.hnmrPeaks) | this.setSpectraMenu(menuc, this.cnmrPeaks)).valueOf(); +if (isOK) { +if (menuh != null) this.menuAddSubMenu(menu, menuh); +if (menuc != null) this.menuAddSubMenu(menu, menuc); +}this.menuEnable(menu, isOK); +}); +Clazz_defineMethod(c$, "setSpectraMenu", +function(menu, peaks){ +if (menu == null) return false; +this.menuEnable(menu, false); +var n = (peaks == null ? 0 : peaks.size()); +if (n == 0) return false; +for (var i = 0; i < n; i++) { +var peak = peaks.get(i); +var title = JU.PT.getQuotedAttribute(peak, "title"); +var atoms = JU.PT.getQuotedAttribute(peak, "atoms"); +if (atoms != null) this.menuCreateItem(menu, title, "select visible & (@" + JU.PT.rep(atoms, ",", " or @") + ")", "Focus" + i); +} +this.menuEnable(menu, true); +return true; +}, "J.api.SC,JU.Lst"); +Clazz_defineMethod(c$, "updateAboutSubmenu", +function(){ +var menu = this.htMenus.get("aboutComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, this.aboutComputedMenuBaseCount); +}); +Clazz_defineMethod(c$, "setEnabled", +function(allowMenu, zoomEnabled){ +this.allowMenu = allowMenu; +this.zoomEnabled = zoomEnabled; +this.enableMenus(); +}, "~B,~B"); +Clazz_defineMethod(c$, "enableMenus", +function(){ +this.setItemEnabled("_SIGNED_FileMenu", this.allowMenu); +this.setItemEnabled("ViewMenu", this.pd != null && this.allowMenu); +this.setItemEnabled("Open_File...", this.allowMenu); +this.setItemEnabled("Open_Simulation...", this.allowMenu); +this.setItemEnabled("Open_URL...", this.allowMenu); +this.setItemEnabled("Save_AsMenu", this.pd != null && this.allowMenu); +this.setItemEnabled("Export_AsMenu", this.pd != null && this.allowMenu); +this.setItemEnabled("Append_File...", this.pd != null && this.allowMenu); +this.setItemEnabled("Append_Simulation...", this.pd != null && this.allowMenu); +this.setItemEnabled("Append_URL...", this.pd != null && this.allowMenu); +this.setItemEnabled("Views...", this.pd != null && this.allowMenu); +this.setItemEnabled("Script", this.allowMenu); +this.setItemEnabled("Print...", this.pd != null && this.allowMenu); +this.setItemEnabled("ZoomMenu", this.pd != null && this.zoomEnabled); +}); +Clazz_defineMethod(c$, "setEnables", +function(jsvp){ +this.pd = (jsvp == null ? null : jsvp.getPanelData()); +var spec0 = (this.pd == null ? null : this.pd.getSpectrum()); +var isOverlaid = this.pd != null && this.pd.isShowAllStacked(); +var isSingle = this.pd != null && this.pd.haveSelectedSpectrum(); +this.setItemEnabled("Integration", this.pd != null && this.pd.getSpectrum().canIntegrate()); +this.setItemEnabled("Measurements", true); +this.setItemEnabled("Peaks", this.pd != null && this.pd.getSpectrum().is1D()); +this.setItemEnabled("Predicted_Solution_Colour_(fitted)", isSingle && spec0.canShowSolutionColor()); +this.setItemEnabled("Predicted_Solution_Colour_(interpolated)", isSingle && spec0.canShowSolutionColor()); +this.setItemEnabled("Toggle_Trans/Abs", isSingle && spec0.canConvertTransAbs()); +this.setItemEnabled("Show_Overlay_Key", isOverlaid && this.pd.getNumberOfGraphSets() == 1); +this.setItemEnabled("Overlay_Offset...", isOverlaid); +this.setItemEnabled("JDXMenu", this.pd != null && spec0.canSaveAsJDX()); +this.setItemEnabled("Export_AsMenu", this.pd != null); +this.enableMenus(); +}, "JSV.api.JSVPanel"); +Clazz_defineMethod(c$, "setItemEnabled", +function(key, TF){ +this.menuEnable(this.htMenus.get(key), TF); +}, "~S,~B"); +Clazz_defineMethod(c$, "setSelected", +function(key, TF){ +var item = this.htMenus.get(key); +if (item == null || item.isSelected() == TF) return; +this.menuEnable(item, false); +item.setSelected(TF); +this.menuEnable(item, true); +}, "~S,~B"); +Clazz_overrideMethod(c$, "getUnknownCheckBoxScriptToRun", +function(item, name, what, TF){ +return null; +}, "J.api.SC,~S,~S,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JSV.popup"); +Clazz_load(["J.popup.PopupResource"], "JSV.popup.JSVPopupResourceBundle", null, function(){ +var c$ = Clazz_declareType(JSV.popup, "JSVPopupResourceBundle", J.popup.PopupResource); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JSV.popup.JSVPopupResourceBundle, [null, null]); +}); +Clazz_overrideMethod(c$, "getMenuName", +function(){ +return "appMenu"; +}); +Clazz_overrideMethod(c$, "buildStructure", +function(menuStructure){ +this.addItems(JSV.popup.JSVPopupResourceBundle.menuContents); +this.addItems(JSV.popup.JSVPopupResourceBundle.structureContents); +if (menuStructure != null) this.setStructure(menuStructure, null); +}, "~S"); +Clazz_overrideMethod(c$, "getWordContents", +function(){ +return Clazz_newArray(-1, []); +}); +Clazz_overrideMethod(c$, "getMenuAsText", +function(title){ +return this.getStuctureAsText(title, JSV.popup.JSVPopupResourceBundle.menuContents, JSV.popup.JSVPopupResourceBundle.structureContents); +}, "~S"); +c$.menuContents = Clazz_newArray(-1, [ Clazz_newArray(-1, ["appMenu", "_SIGNED_FileMenu Spectra... ShowMenu OptionsMenu ZoomMenu - Integration Peaks Measurements - Script... Properties"]), Clazz_newArray(-1, ["appletMenu", "_SIGNED_FileMenu Spectra... - OptionsMenu ZoomMenu - Integration Peaks Measurements - Script... - Print... - AboutMenu"]), Clazz_newArray(-1, ["_SIGNED_FileMenu", "Open_File... Open_Simulation... Open_URL... - Add_File... Add_Simulation... Add_URL... - Save_AsMenu Export_AsMenu - Close_Views Close_Simulations Close_All"]), Clazz_newArray(-1, ["Save_AsMenu", "Original... JDXMenu CML XML(AnIML)"]), Clazz_newArray(-1, ["JDXMenu", "XY DIF DIFDUP FIX PAC SQZ"]), Clazz_newArray(-1, ["Export_AsMenu", "PDF - JPG PNG SVG"]), Clazz_newArray(-1, ["ShowMenu", "Show_Header Show_Source Show_Overlay_Key"]), Clazz_newArray(-1, ["OptionsMenu", "Toggle_Grid Toggle_X_Axis Toggle_Y_Axis Toggle_Coordinates Toggle_Trans/Abs Reverse_Plot - Predicted_Solution_Colour Fill_Solution_Colour_(all) Fill_Solution_Colour_(none)"]), Clazz_newArray(-1, ["ZoomMenu", "Next_Zoom Previous_Zoom Reset_Zoom - Set_X_Scale... Reset_X_Scale"]), Clazz_newArray(-1, ["AboutMenu", "VERSION"])]); +c$.structureContents = Clazz_newArray(-1, [ Clazz_newArray(-1, ["Open_File...", "load ?"]), Clazz_newArray(-1, ["Open_URL...", "load http://?"]), Clazz_newArray(-1, ["Open_Simulation...", "load $?"]), Clazz_newArray(-1, ["Add_File...", "load append ?"]), Clazz_newArray(-1, ["Add_URL...", "load append http://?"]), Clazz_newArray(-1, ["Add_Simulation...", "load append $?; view \"1HNMR\""]), Clazz_newArray(-1, ["Close_All", "close all"]), Clazz_newArray(-1, ["Close_Views", "close views"]), Clazz_newArray(-1, ["Close Simulations", "close simulations"]), Clazz_newArray(-1, ["Show_Header", "showProperties"]), Clazz_newArray(-1, ["Show_Source", "showSource"]), Clazz_newArray(-1, ["Show_Overlay_Key...", "showKey"]), Clazz_newArray(-1, ["Next_Zoom", "zoom next;showMenu"]), Clazz_newArray(-1, ["Previous_Zoom", "zoom prev;showMenu"]), Clazz_newArray(-1, ["Reset_Zoom", "zoom clear"]), Clazz_newArray(-1, ["Reset_X_Scale", "zoom out"]), Clazz_newArray(-1, ["Set_X_Scale...", "zoom"]), Clazz_newArray(-1, ["Spectra...", "view"]), Clazz_newArray(-1, ["Overlay_Offset...", "stackOffsetY"]), Clazz_newArray(-1, ["Script...", "script INLINE"]), Clazz_newArray(-1, ["Properties", "showProperties"]), Clazz_newArray(-1, ["Toggle_X_Axis", "XSCALEON toggle;showMenu"]), Clazz_newArray(-1, ["Toggle_Y_Axis", "YSCALEON toggle;showMenu"]), Clazz_newArray(-1, ["Toggle_Grid", "GRIDON toggle;showMenu"]), Clazz_newArray(-1, ["Toggle_Coordinates", "COORDINATESON toggle;showMenu"]), Clazz_newArray(-1, ["Reverse_Plot", "REVERSEPLOT toggle;showMenu"]), Clazz_newArray(-1, ["Measurements", "SHOWMEASUREMENTS"]), Clazz_newArray(-1, ["Peaks", "SHOWPEAKLIST"]), Clazz_newArray(-1, ["Integration", "SHOWINTEGRATION"]), Clazz_newArray(-1, ["Toggle_Trans/Abs", "IRMODE TOGGLE"]), Clazz_newArray(-1, ["Predicted_Solution_Colour", "GETSOLUTIONCOLOR"]), Clazz_newArray(-1, ["Fill_Solution_Colour_(all)", "GETSOLUTIONCOLOR fillall"]), Clazz_newArray(-1, ["Fill_Solution_Colour_(none)", "GETSOLUTIONCOLOR fillallnone"]), Clazz_newArray(-1, ["Print...", "print"]), Clazz_newArray(-1, ["Original...", "write SOURCE"]), Clazz_newArray(-1, ["CML", "write CML"]), Clazz_newArray(-1, ["XML(AnIML)", "write XML"]), Clazz_newArray(-1, ["XY", "write XY"]), Clazz_newArray(-1, ["DIF", "write DIF"]), Clazz_newArray(-1, ["DIFDUP", "write DIFDUP"]), Clazz_newArray(-1, ["FIX", "write FIX"]), Clazz_newArray(-1, ["PAC", "write PAC"]), Clazz_newArray(-1, ["SQZ", "write SQZ"]), Clazz_newArray(-1, ["JPG", "write JPG"]), Clazz_newArray(-1, ["SVG", "write SVG"]), Clazz_newArray(-1, ["PNG", "write PNG"]), Clazz_newArray(-1, ["PDF", "write PDF"])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corejsvmenu.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corejsvmenu.z.js new file mode 100755 index 000000000000..543d1b95ce1b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corejsvmenu.z.js @@ -0,0 +1,22 @@ +(function(r,s,t,u,v,w,f,x,g,l,m,y,z,h,A,n,B,C,k,D,j,E,p,F,G,H,I,a,K,L,q,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,c,b){f("J.api");p(J.api,"GenericMenuInterface");f("JSV.js2d");g(["JSV.popup.JSVGenericPopup"],"JSV.js2d.JsPopup",["JSV.popup.JSVPopupResourceBundle","J.awtjs2d.JSPopupHelper"],function(){var a=k(JSV.js2d,"JsPopup",JSV.popup.JSVGenericPopup);h(a,function(){j(this,JSV.js2d.JsPopup,[]);this.helper=new J.awtjs2d.JSPopupHelper(this)});b(a,"jpiInitialize",function(a,e){var d= +new JSV.popup.JSVPopupResourceBundle;this.initialize(a,d,e)},"J.api.PlatformViewer,~S");b(a,"menuShowPopup",function(a,e,d){try{a.show(this.isTainted?this.vwr.getApplet():null,e,d)}catch(b){if(!n(b,Exception))throw b;}},"J.api.SC,~N,~N");b(a,"getImageIcon",function(){return null},"~S");b(a,"menuFocusCallback",function(){},"~S,~S,~B")});f("JSV.popup");g(["J.popup.GenericPopup"],"JSV.popup.JSVGenericPopup",["JU.PT","JSV.common.JSVersion","$.JSViewer","JSV.popup.JSVPopupResourceBundle"],function(){var a= +m(function(){this.vwr=null;this.updateMode=0;this.hnmrPeaks=this.cnmrPeaks=null;this.aboutComputedMenuBaseCount=0;this.zoomEnabled=this.allowMenu=!1;this.thisJsvp=this.pd=null;l(this,arguments)},JSV.popup,"JSVGenericPopup",J.popup.GenericPopup);h(a,function(){j(this,JSV.popup.JSVGenericPopup,[])});c(a,"initialize",function(a,b,d){this.vwr=a;this.initSwing(d,b,a.getApplet(),JSV.common.JSViewer.isJS,a.isSigned,!1)},"JSV.common.JSViewer,J.popup.PopupResource,~S");c(a,"jpiDispose",function(){this.vwr= +null;q(this,JSV.popup.JSVGenericPopup,"jpiDispose",[])});b(a,"jpiGetMenuAsObject",function(){return this.popupMenu});b(a,"jpiShow",function(a,b){this.show(a,b,!1);this.appRestorePopupMenu();this.menuShowPopup(this.popupMenu,this.thisx,this.thisy)},"~N,~N");b(a,"jpiUpdateComputedMenus",function(){-1!=this.updateMode&&(this.updateMode=0,this.getViewerData(),this.updateFileMenu(),this.updateFileTypeDependentMenus(),this.updateMode=1,this.updateAboutSubmenu())});b(a,"appCheckItem",function(){},"~S,J.api.SC"); +b(a,"appFixLabel",function(a){a.startsWith("_")?a=a.substring(a.indexOf("_",2)+1):a.equals("VERSION")&&(a=JSV.common.JSVersion.VERSION);a=JU.PT.rep(a,"JAVA","");a=JU.PT.rep(a,"CB","");a=JU.PT.rep(a,"Menu","");return a=JU.PT.rep(a,"_"," ")},"~S");b(a,"getScriptForCallback",function(a,b,d){return d},"J.api.SC,~S,~S");b(a,"appGetMenuAsString",function(a){return(new JSV.popup.JSVPopupResourceBundle).getMenuAsText(a)},"~S");b(a,"appGetBooleanProperty",function(){return!1},"~S");b(a,"appRunSpecialCheckBox", +function(){return!1},"J.api.SC,~S,~S,~B");b(a,"appRestorePopupMenu",function(){this.thisPopup=this.popupMenu});b(a,"appRunScript",function(a){this.vwr.runScript(a)},"~S");b(a,"appUpdateForShow",function(){this.thisJsvp=this.vwr.selectedPanel;this.setEnables(this.thisJsvp);-1!=this.updateMode&&(this.getViewerData(),this.updateMode=2,this.updateSpectraMenu(),this.updateAboutSubmenu())});b(a,"appUpdateSpecialCheckBoxValue",function(){},"J.api.SC,~S,~B");c(a,"getViewerData",function(){});c(a,"updateFileTypeDependentMenus", +function(){});c(a,"updateFileMenu",function(){this.htMenus.get("fileMenu")});c(a,"updateSpectraMenu",function(){var a=this.htMenus.get("hnmrMenu"),b=this.htMenus.get("cnmrMenu");null!=a&&this.menuRemoveAll(a,0);null!=b&&this.menuRemoveAll(b,0);var d=this.htMenus.get("spectraMenu");if(null!=d){this.menuRemoveAll(d,0);var c=(new Boolean(this.setSpectraMenu(a,this.hnmrPeaks)|this.setSpectraMenu(b,this.cnmrPeaks))).valueOf();c&&(null!=a&&this.menuAddSubMenu(d,a),null!=b&&this.menuAddSubMenu(d,b));this.menuEnable(d, +c)}});c(a,"setSpectraMenu",function(a,b){if(null==a)return!1;this.menuEnable(a,!1);var d=null==b?0:b.size();if(0==d)return!1;for(var c=0;c= 0) { +var s = ""; +while (st.hasMoreTokens()) s += " " + ((item = st.nextToken()).startsWith("@") ? popupResourceBundle.getStructure(item) : item); + +value = s.substring(1); +st = new java.util.StringTokenizer(value); +} +while (st.hasMoreTokens()) { +item = st.nextToken(); +if (!this.checkKey(item)) continue; +if ("-".equals(item)) { +this.menuAddSeparator(menu); +this.helper.menuAddButtonGroup(null); +continue; +}if (",".equals(item)) { +this.menuAddSeparator(menu); +continue; +}var label = popupResourceBundle.getWord(item); +var newItem = null; +var script = ""; +var isCB = false; +label = this.appFixLabel(label == null ? item : label); +if (label.equals("null")) { +continue; +}if (item.indexOf("Menu") >= 0) { +if (item.indexOf("more") < 0) this.helper.menuAddButtonGroup(null); +var subMenu = this.menuNewSubMenu(label, id + "." + item); +this.menuAddSubMenu(menu, subMenu); +this.addMenu(id, item, subMenu, label, popupResourceBundle); +newItem = subMenu; +} else if (item.endsWith("Checkbox") || (isCB = (item.endsWith("CB") || item.endsWith("RD")))) { +script = popupResourceBundle.getStructure(item); +var basename = item.substring(0, item.length - (!isCB ? 8 : 2)); +var isRadio = (isCB && item.endsWith("RD")); +if (script == null || script.length == 0 && !isRadio) script = "set " + basename + " T/F"; +newItem = this.menuCreateCheckboxItem(menu, label, basename + ":" + script, id + "." + item, false, isRadio); +this.rememberCheckbox(basename, newItem); +if (isRadio) this.helper.menuAddButtonGroup(newItem); +} else { +script = popupResourceBundle.getStructure(item); +if (script == null) script = item; +newItem = this.menuCreateItem(menu, label, script, id + "." + item); +}this.htMenus.put(item, newItem); +if (item.startsWith("SIGNED")) { +this.SignedOnly.addLast(newItem); +if (!this.allowSignedFeatures) this.menuEnable(newItem, false); +}this.appCheckItem(item, newItem); +} +}, "~S,~S,J.api.SC,J.popup.PopupResource"); +Clazz_defineMethod(c$, "addMenu", +function(id, item, subMenu, label, popupResourceBundle){ +if (item.indexOf("Computed") < 0) this.addMenuItems(id, item, subMenu, popupResourceBundle); +this.appCheckSpecialMenu(item, subMenu, label); +}, "~S,~S,J.api.SC,~S,J.popup.PopupResource"); +Clazz_defineMethod(c$, "updateSignedAppletItems", +function(){ +for (var i = this.SignedOnly.size(); --i >= 0; ) this.menuEnable(this.SignedOnly.get(i), this.allowSignedFeatures); + +}); +Clazz_defineMethod(c$, "checkKey", +function(key){ +return (key.indexOf(this.isApplet ? "JAVA" : "APPLET") < 0 && (!this.isWebGL || key.indexOf("NOGL") < 0)); +}, "~S"); +Clazz_defineMethod(c$, "rememberCheckbox", +function(key, checkboxMenuItem){ +this.htCheckbox.put(key + "::" + this.htCheckbox.size(), checkboxMenuItem); +}, "~S,J.api.SC"); +Clazz_defineMethod(c$, "updateButton", +function(b, entry, script){ +var ret = Clazz_newArray(-1, [entry]); +var icon = this.getEntryIcon(ret); +entry = ret[0]; +b.init(entry, icon, script, this.thisPopup); +this.isTainted = true; +}, "J.api.SC,~S,~S"); +Clazz_defineMethod(c$, "getEntryIcon", +function(ret){ +var entry = ret[0]; +if (!entry.startsWith("<")) return null; +var pt = entry.indexOf(">"); +ret[0] = entry.substring(pt + 1); +var fileName = entry.substring(1, pt); +return this.getImageIcon(fileName); +}, "~A"); +Clazz_defineMethod(c$, "addMenuItem", +function(menuItem, entry){ +return this.menuCreateItem(menuItem, entry, "", null); +}, "J.api.SC,~S"); +Clazz_defineMethod(c$, "menuSetLabel", +function(m, entry){ +if (m == null) return; +m.setText(entry); +this.isTainted = true; +}, "J.api.SC,~S"); +Clazz_defineMethod(c$, "menuClickCallback", +function(source, script){ +this.doMenuClickCallback(source, script); +}, "J.api.SC,~S"); +Clazz_defineMethod(c$, "doMenuClickCallback", +function(source, script){ +this.appRestorePopupMenu(); +if (script == null || script.length == 0) return; +if (script.equals("MAIN")) { +this.show(this.thisx, this.thisy, true); +return; +}var id = this.menuGetId(source); +if (id != null) { +script = this.getScriptForCallback(source, id, script); +this.currentMenuItemId = id; +}if (script != null) this.appRunScript(script); +}, "J.api.SC,~S"); +Clazz_defineMethod(c$, "menuCheckBoxCallback", +function(source){ +this.doMenuCheckBoxCallback(source); +}, "J.api.SC"); +Clazz_defineMethod(c$, "doMenuCheckBoxCallback", +function(source){ +this.appRestorePopupMenu(); +var isSelected = source.isSelected(); +var what = source.getActionCommand(); +this.runCheckBoxScript(source, what, isSelected); +this.appUpdateSpecialCheckBoxValue(source, what, isSelected); +this.isTainted = true; +var id = this.menuGetId(source); +if (id != null) { +this.currentMenuItemId = id; +}}, "J.api.SC"); +Clazz_defineMethod(c$, "runCheckBoxScript", +function(item, what, TF){ +if (!item.isEnabled()) return; +if (what.indexOf("##") < 0) { +var pt = what.indexOf(":"); +if (pt < 0) { +JU.Logger.error("check box " + item + " IS " + what); +return; +}var basename = what.substring(0, pt); +if (this.appRunSpecialCheckBox(item, basename, what, TF)) return; +what = what.substring(pt + 1); +if ((pt = what.indexOf("|")) >= 0) what = (TF ? what.substring(0, pt) : what.substring(pt + 1)).trim(); +what = JU.PT.rep(what, "T/F", (TF ? " TRUE" : " FALSE")); +}this.appRunScript(what); +}, "J.api.SC,~S,~B"); +Clazz_defineMethod(c$, "menuCreateItem", +function(menu, entry, script, id){ +var item = this.helper.getMenuItem(entry); +item.addActionListener(this.helper); +return this.newMenuItem(item, menu, entry, script, id); +}, "J.api.SC,~S,~S,~S"); +Clazz_defineMethod(c$, "menuCreateCheckboxItem", +function(menu, entry, basename, id, state, isRadio){ +var jmi = (isRadio ? this.helper.getRadio(entry) : this.helper.getCheckBox(entry)); +jmi.setSelected(state); +jmi.addItemListener(this.helper); +return this.newMenuItem(jmi, menu, entry, basename, id); +}, "J.api.SC,~S,~S,~S,~B,~B"); +Clazz_defineMethod(c$, "menuAddSeparator", +function(menu){ +menu.add(this.helper.getMenuItem(null)); +this.isTainted = true; +}, "J.api.SC"); +Clazz_defineMethod(c$, "menuNewSubMenu", +function(entry, id){ +var jm = this.helper.getMenu(entry); +jm.addMouseListener(this.helper); +this.updateButton(jm, entry, null); +jm.setName(id); +jm.setAutoscrolls(true); +return jm; +}, "~S,~S"); +Clazz_defineMethod(c$, "menuRemoveAll", +function(menu, indexFrom){ +if (indexFrom <= 0) menu.removeAll(); + else for (var i = menu.getComponentCount(); --i >= indexFrom; ) menu.remove(i); + +this.isTainted = true; +}, "J.api.SC,~N"); +Clazz_defineMethod(c$, "newMenuItem", +function(item, menu, text, script, id){ +this.updateButton(item, text, script); +item.addMouseListener(this.helper); +item.setName(id == null ? menu.getName() + "." : id); +this.menuAddItem(menu, item); +return item; +}, "J.api.SC,J.api.SC,~S,~S,~S"); +Clazz_defineMethod(c$, "setText", +function(item, text){ +var m = this.htMenus.get(item); +if (m != null) m.setText(text); +return m; +}, "~S,~S"); +Clazz_defineMethod(c$, "menuAddItem", +function(menu, item){ +menu.add(item); +this.isTainted = true; +}, "J.api.SC,J.api.SC"); +Clazz_defineMethod(c$, "menuAddSubMenu", +function(menu, subMenu){ +subMenu.addMouseListener(this.helper); +this.menuAddItem(menu, subMenu); +}, "J.api.SC,J.api.SC"); +Clazz_defineMethod(c$, "menuEnable", +function(component, enable){ +if (component == null || component.isEnabled() == enable) return; +component.setEnabled(enable); +}, "J.api.SC,~B"); +Clazz_defineMethod(c$, "menuGetId", +function(menu){ +return menu.getName(); +}, "J.api.SC"); +Clazz_defineMethod(c$, "menuSetAutoscrolls", +function(menu){ +menu.setAutoscrolls(true); +this.isTainted = true; +}, "J.api.SC"); +Clazz_defineMethod(c$, "menuGetListPosition", +function(item){ +var p = item.getParent(); +var i; +for (i = p.getComponentCount(); --i >= 0; ) if (this.helper.getSwingComponent(p.getComponent(i)) === item) break; + +return i; +}, "J.api.SC"); +Clazz_defineMethod(c$, "show", +function(x, y, doPopup){ +this.appUpdateForShow(); +this.updateCheckBoxesForShow(); +if (doPopup) this.menuShowPopup(this.popupMenu, this.thisx, this.thisy); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "updateCheckBoxesForShow", +function(){ +for (var entry, $entry = this.htCheckbox.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var item = entry.getValue(); +var basename = key.substring(0, key.indexOf(":")); +var b = this.appGetBooleanProperty(basename); +var updateShow = this.updatingForShow; +this.updatingForShow = true; +if (item.isSelected() != b) { +item.setSelected(b); +this.isTainted = true; +}this.updatingForShow = updateShow; +} +}); +Clazz_overrideMethod(c$, "jpiGetMenuAsString", +function(title){ +this.appUpdateForShow(); +var pt = title.indexOf("|"); +if (pt >= 0) { +var type = title.substring(pt); +title = title.substring(0, pt); +if (type.indexOf("current") >= 0) { +var sb = new JU.SB(); +var menu = this.htMenus.get(this.menuName); +this.menuGetAsText(sb, 0, menu, "PopupMenu"); +return sb.toString(); +}}return this.appGetMenuAsString(title); +}, "~S"); +Clazz_defineMethod(c$, "appGetMenuAsString", +function(title){ +return null; +}, "~S"); +Clazz_defineMethod(c$, "menuGetAsText", +function(sb, level, menu, menuName){ +var name = menuName; +var subMenus = menu.getComponents(); +var flags = null; +var script = null; +var text = null; +var key = 'S'; +for (var i = 0; i < subMenus.length; i++) { +var source = this.helper.getSwingComponent(subMenus[i]); +var type = this.helper.getItemType(source); +switch (type) { +case 4: +key = 'M'; +name = source.getName(); +flags = "enabled:" + source.isEnabled(); +text = source.getText(); +script = null; +break; +case 0: +key = 'S'; +flags = script = text = null; +break; +default: +key = 'I'; +flags = "enabled:" + source.isEnabled(); +if (type == 2 || type == 3) flags += ";checked:" + source.isSelected(); +script = this.getScriptForCallback(source, source.getName(), source.getActionCommand()); +name = source.getName(); +text = source.getText(); +break; +} +J.popup.GenericPopup.addItemText(sb, key, level, name, text, script, flags); +if (type == 2) this.menuGetAsText(sb, level + 1, this.helper.getSwingComponent(source.getPopupMenu()), name); +} +}, "JU.SB,~N,J.api.SC,~S"); +c$.addItemText = Clazz_defineMethod(c$, "addItemText", +function(sb, type, level, name, label, script, flags){ +sb.appendC(type).appendI(level).appendC('\t').append(name); +if (label == null) { +sb.append(".\n"); +return; +}sb.append("\t").append(label).append("\t").append(script == null || script.length == 0 ? "-" : script).append("\t").append(flags).append("\n"); +}, "JU.SB,~S,~N,~S,~S,~S,~S"); +c$.convertToMegabytes = Clazz_defineMethod(c$, "convertToMegabytes", +function(num){ +if (num <= 9223372036854251519) num += 524288; +return (Clazz_doubleToInt(num / (1048576))); +}, "~N"); +Clazz_overrideMethod(c$, "jpiDispose", +function(){ +this.popupMenu = this.thisPopup = null; +this.helper.dispose(this.popupMenu); +this.helper = null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.popup"); +Clazz_load(["J.popup.GenericPopup", "java.util.Properties"], "J.popup.JmolGenericPopup", ["J.i18n.GT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.frankPopup = null; +this.nFrankList = 0; +this.vwr = null; +this.menuText = null; +Clazz_instantialize(this, arguments);}, J.popup, "JmolGenericPopup", J.popup.GenericPopup); +Clazz_prepareFields (c$, function(){ +this.menuText = new java.util.Properties(); +}); +Clazz_overrideMethod(c$, "jpiInitialize", +function(vwr, menu){ +var doTranslate = J.i18n.GT.setDoTranslate(true); +var bundle = this.getBundle(menu); +this.initialize(vwr, bundle, bundle.getMenuName()); +J.i18n.GT.setDoTranslate(doTranslate); +}, "J.api.PlatformViewer,~S"); +Clazz_defineMethod(c$, "initialize", +function(vwr, bundle, title){ +this.vwr = vwr; +this.initSwing(title, bundle, vwr.isJSNoAWT ? vwr.html5Applet : null, vwr.isJSNoAWT, vwr.getBooleanProperty("_signedApplet"), vwr.isWebGL); +}, "JV.Viewer,J.popup.PopupResource,~S"); +Clazz_overrideMethod(c$, "jpiShow", +function(x, y){ +if (!this.vwr.haveDisplay) return; +this.thisx = x; +this.thisy = y; +this.show(x, y, false); +if (x < 0 && this.showFrankMenu()) return; +this.appRestorePopupMenu(); +this.menuShowPopup(this.popupMenu, this.thisx, this.thisy); +}, "~N,~N"); +Clazz_defineMethod(c$, "showFrankMenu", +function(){ +return true; +}); +Clazz_defineMethod(c$, "jpiDispose", +function(){ +this.vwr = null; +Clazz_superCall(this, J.popup.JmolGenericPopup, "jpiDispose", []); +}); +Clazz_overrideMethod(c$, "jpiGetMenuAsObject", +function(){ +return this.popupMenu; +}); +Clazz_overrideMethod(c$, "appFixLabel", +function(label){ +return label; +}, "~S"); +Clazz_overrideMethod(c$, "appGetBooleanProperty", +function(name){ +return this.vwr.getBooleanProperty(name); +}, "~S"); +Clazz_overrideMethod(c$, "appRunSpecialCheckBox", +function(item, basename, script, TF){ +if (this.appGetBooleanProperty(basename) == TF) return true; +if (basename.indexOf("mk") < 0 && !basename.endsWith("P!")) return false; +if (basename.indexOf("mk") >= 0 || basename.indexOf("??") >= 0) { +script = this.getUnknownCheckBoxScriptToRun(item, basename, script, TF); +} else { +if (!TF) return true; +script = "set picking " + basename.substring(0, basename.length - 2); +}if (script != null) this.appRunScript(script); +return true; +}, "J.api.SC,~S,~S,~B"); +Clazz_overrideMethod(c$, "appRestorePopupMenu", +function(){ +this.thisPopup = this.popupMenu; +}); +Clazz_overrideMethod(c$, "appRunScript", +function(script){ +this.vwr.evalStringGUI(script); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.popup"); +Clazz_load(["J.popup.JmolGenericPopup", "JU.Lst"], "J.popup.JmolPopup", ["java.util.Arrays", "$.Hashtable", "JU.PT", "J.i18n.GT", "JM.Group", "J.popup.MainPopupResourceBundle", "JU.Elements", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.updateMode = 0; +this.titleWidthMax = 20; +this.nullModelSetName = null; +this.modelSetName = null; +this.modelSetFileName = null; +this.modelSetRoot = null; +this.currentFrankId = null; +this.configurationSelected = ""; +this.altlocs = null; +this.frankList = null; +this.modelSetInfo = null; +this.modelInfo = null; +this.NotPDB = null; +this.PDBOnly = null; +this.FileUnitOnly = null; +this.FileMolOnly = null; +this.UnitcellOnly = null; +this.SingleModelOnly = null; +this.FramesOnly = null; +this.VibrationOnly = null; +this.Special = null; +this.SymmetryOnly = null; +this.ChargesOnly = null; +this.TemperatureOnly = null; +this.fileHasUnitCell = false; +this.haveBFactors = false; +this.haveCharges = false; +this.isLastFrame = false; +this.isMultiConfiguration = false; +this.isMultiFrame = false; +this.isPDB = false; +this.hasSymmetry = false; +this.isUnitCell = false; +this.isVibration = false; +this.isZapped = false; +this.modelIndex = 0; +this.modelCount = 0; +this.ac = 0; +this.group3List = null; +this.group3Counts = null; +this.cnmrPeaks = null; +this.hnmrPeaks = null; +this.noZapped = null; +Clazz_instantialize(this, arguments);}, J.popup, "JmolPopup", J.popup.JmolGenericPopup); +Clazz_prepareFields (c$, function(){ +this.frankList = new Array(10); +this.NotPDB = new JU.Lst(); +this.PDBOnly = new JU.Lst(); +this.FileUnitOnly = new JU.Lst(); +this.FileMolOnly = new JU.Lst(); +this.UnitcellOnly = new JU.Lst(); +this.SingleModelOnly = new JU.Lst(); +this.FramesOnly = new JU.Lst(); +this.VibrationOnly = new JU.Lst(); +this.Special = new JU.Lst(); +this.SymmetryOnly = new JU.Lst(); +this.ChargesOnly = new JU.Lst(); +this.TemperatureOnly = new JU.Lst(); +this.noZapped = Clazz_newArray(-1, ["surfaceMenu", "measureMenu", "pickingMenu", "computationMenu", "SIGNEDJAVAcaptureMenuSPECIAL"]); +}); +Clazz_defineMethod(c$, "jpiDispose", +function(){ +this.helper.menuClearListeners(this.frankPopup); +this.frankPopup = null; +Clazz_superCall(this, J.popup.JmolPopup, "jpiDispose", []); +}); +Clazz_overrideMethod(c$, "getBundle", +function(menu){ +return new J.popup.MainPopupResourceBundle(this.strMenuStructure = menu, this.menuText); +}, "~S"); +Clazz_overrideMethod(c$, "showFrankMenu", +function(){ +this.getViewerData(); +this.setFrankMenu(this.currentMenuItemId); +this.thisx = -this.thisx - 50; +if (this.nFrankList > 1) { +this.thisy -= this.nFrankList * 20; +this.menuShowPopup(this.frankPopup, this.thisx, this.thisy); +return true; +}return false; +}); +Clazz_overrideMethod(c$, "jpiUpdateComputedMenus", +function(){ +if (this.updateMode == -1) return; +this.isTainted = true; +this.getViewerData(); +this.updateMode = 0; +this.updateMenus(); +}); +Clazz_defineMethod(c$, "updateMenus", +function(){ +this.updateSelectMenu(); +this.updateModelSetComputedMenu(); +this.updateAboutSubmenu(); +if (this.updateMode == 0) { +this.updateFileMenu(); +this.updateElementsComputedMenu(this.vwr.getElementsPresentBitSet(this.modelIndex)); +this.updateHeteroComputedMenu(this.vwr.ms.getHeteroList(this.modelIndex)); +this.updateSurfMoComputedMenu(this.modelInfo.get("moData")); +this.updateFileTypeDependentMenus(); +this.updatePDBResidueComputedMenus(); +this.updateMode = 1; +this.updateConfigurationComputedMenu(); +this.updateSYMMETRYComputedMenus(); +this.updateFRAMESbyModelComputedMenu(); +this.updateLanguageSubmenu(); +} else { +this.updateSpectraMenu(); +this.updateFRAMESbyModelComputedMenu(); +this.updateSceneComputedMenu(); +for (var i = this.Special.size(); --i >= 0; ) this.updateSpecialMenuItem(this.Special.get(i)); + +}}); +Clazz_overrideMethod(c$, "appCheckItem", +function(item, newMenu){ +if (item.indexOf("!PDB") >= 0) { +this.NotPDB.addLast(newMenu); +} else if (item.indexOf("PDB") >= 0) { +this.PDBOnly.addLast(newMenu); +}if (item.indexOf("CHARGE") >= 0) { +this.ChargesOnly.addLast(newMenu); +} else if (item.indexOf("BFACTORS") >= 0) { +this.TemperatureOnly.addLast(newMenu); +} else if (item.indexOf("UNITCELL") >= 0) { +this.UnitcellOnly.addLast(newMenu); +} else if (item.indexOf("FILEUNIT") >= 0) { +this.FileUnitOnly.addLast(newMenu); +} else if (item.indexOf("FILEMOL") >= 0) { +this.FileMolOnly.addLast(newMenu); +}if (item.indexOf("!FRAMES") >= 0) { +this.SingleModelOnly.addLast(newMenu); +} else if (item.indexOf("FRAMES") >= 0) { +this.FramesOnly.addLast(newMenu); +}if (item.indexOf("VIBRATION") >= 0) { +this.VibrationOnly.addLast(newMenu); +} else if (item.indexOf("SYMMETRY") >= 0) { +this.SymmetryOnly.addLast(newMenu); +}if (item.indexOf("SPECIAL") >= 0) this.Special.addLast(newMenu); +}, "~S,J.api.SC"); +Clazz_overrideMethod(c$, "appGetMenuAsString", +function(title){ +return ( new J.popup.MainPopupResourceBundle(this.strMenuStructure, null)).getMenuAsText(title); +}, "~S"); +Clazz_overrideMethod(c$, "getScriptForCallback", +function(source, id, script){ +var pt; +if (script === "" || id.endsWith("Checkbox")) return script; +if (script.indexOf("SELECT") == 0) { +return "select thisModel and (" + script.substring(6) + ")"; +}if ((pt = id.lastIndexOf("[")) >= 0) { +id = id.substring(pt + 1); +if ((pt = id.indexOf("]")) >= 0) id = id.substring(0, pt); +id = id.$replace('_', ' '); +if (script.indexOf("[]") < 0) script = "[] " + script; +script = script.$replace('_', ' '); +return JU.PT.rep(script, "[]", id); +} else if (script.indexOf("?FILEROOT?") >= 0) { +script = JU.PT.rep(script, "FILEROOT?", this.modelSetRoot); +} else if (script.indexOf("?FILE?") >= 0) { +script = JU.PT.rep(script, "FILE?", this.modelSetFileName); +} else if (script.indexOf("?PdbId?") >= 0) { +script = JU.PT.rep(script, "PdbId?", "=xxxx"); +}return script; +}, "J.api.SC,~S,~S"); +Clazz_overrideMethod(c$, "appRestorePopupMenu", +function(){ +this.thisPopup = this.popupMenu; +if (this.vwr.isJSNoAWT || this.nFrankList < 2) return; +for (var i = this.nFrankList; --i > 0; ) { +var f = this.frankList[i]; +this.helper.menuInsertSubMenu(f[0], f[1], (f[2]).intValue()); +} +this.nFrankList = 1; +}); +Clazz_overrideMethod(c$, "appUpdateSpecialCheckBoxValue", +function(item, what, TF){ +if (!this.updatingForShow && what.indexOf("#CONFIG") >= 0) { +this.configurationSelected = what; +this.updateConfigurationComputedMenu(); +this.updateModelSetComputedMenu(); +}}, "J.api.SC,~S,~B"); +Clazz_defineMethod(c$, "setFrankMenu", +function(id){ +if (this.currentFrankId != null && this.currentFrankId === id && this.nFrankList > 0) return; +if (this.frankPopup == null) this.frankPopup = this.helper.menuCreatePopup("Frank", this.vwr.html5Applet); +this.thisPopup = this.frankPopup; +this.menuRemoveAll(this.frankPopup, 0); +this.menuCreateItem(this.frankPopup, this.getMenuText("mainMenuText"), "MAIN", ""); +this.currentFrankId = id; +this.nFrankList = 0; +this.frankList[this.nFrankList++] = Clazz_newArray(-1, [null, null, null]); +if (id != null) for (var i = id.indexOf(".", 2) + 1; ; ) { +var iNew = id.indexOf(".", i); +if (iNew < 0) break; +var menu = this.htMenus.get(id.substring(i, iNew)); +this.frankList[this.nFrankList++] = Clazz_newArray(-1, [menu.getParent(), menu, Integer.$valueOf(this.vwr.isJSNoAWT ? 0 : this.menuGetListPosition(menu))]); +this.menuAddSubMenu(this.frankPopup, menu); +i = iNew + 1; +} +this.thisPopup = this.popupMenu; +}, "~S"); +Clazz_defineMethod(c$, "checkBoolean", +function(key){ +return (this.modelSetInfo != null && this.modelSetInfo.get(key) === Boolean.TRUE); +}, "~S"); +Clazz_defineMethod(c$, "getViewerData", +function(){ +this.modelSetName = this.vwr.ms.modelSetName; +this.modelSetFileName = this.vwr.getModelSetFileName(); +var i = this.modelSetFileName.lastIndexOf("."); +this.isZapped = ("zapped".equals(this.modelSetName)); +if (this.isZapped || "string".equals(this.modelSetFileName) || "String[]".equals(this.modelSetFileName)) this.modelSetFileName = ""; +this.modelSetRoot = this.modelSetFileName.substring(0, i < 0 ? this.modelSetFileName.length : i); +if (this.modelSetRoot.length == 0) this.modelSetRoot = "Jmol"; +this.modelIndex = this.vwr.am.cmi; +this.modelCount = this.vwr.ms.mc; +this.ac = this.vwr.ms.getAtomCountInModel(this.modelIndex); +this.modelSetInfo = this.vwr.getModelSetAuxiliaryInfo(); +this.modelInfo = this.vwr.ms.getModelAuxiliaryInfo(this.modelIndex); +if (this.modelInfo == null) this.modelInfo = new java.util.Hashtable(); +this.isPDB = this.checkBoolean(JV.JC.getBoolName(4)); +this.isMultiFrame = (this.modelCount > 1); +this.hasSymmetry = !this.isPDB && this.modelInfo.containsKey("hasSymmetry"); +this.isUnitCell = this.modelInfo.containsKey("unitCellParams"); +this.fileHasUnitCell = (this.isPDB && this.isUnitCell || this.checkBoolean("fileHasUnitCell")); +this.isLastFrame = (this.modelIndex == this.modelCount - 1); +this.altlocs = this.vwr.ms.getAltLocListInModel(this.modelIndex); +this.isMultiConfiguration = (this.altlocs.length > 0); +this.isVibration = (this.vwr.modelHasVibrationVectors(this.modelIndex)); +this.haveCharges = (this.vwr.ms.getPartialCharges() != null); +this.haveBFactors = (this.vwr.getBooleanProperty("haveBFactors")); +this.cnmrPeaks = this.modelInfo.get("jdxAtomSelect_13CNMR"); +this.hnmrPeaks = this.modelInfo.get("jdxAtomSelect_1HNMR"); +}); +Clazz_overrideMethod(c$, "appCheckSpecialMenu", +function(item, subMenu, word){ +if ("modelSetMenu".equals(item)) { +this.nullModelSetName = word; +this.menuEnable(subMenu, false); +}}, "~S,J.api.SC,~S"); +Clazz_overrideMethod(c$, "appUpdateForShow", +function(){ +if (this.updateMode == -1) return; +this.isTainted = true; +this.getViewerData(); +this.updateMode = 2; +this.updateMenus(); +}); +Clazz_defineMethod(c$, "updateFileMenu", +function(){ +var menu = this.htMenus.get("fileMenu"); +if (menu == null) return; +var text = this.getMenuText("writeFileTextVARIABLE"); +menu = this.htMenus.get("writeFileTextVARIABLE"); +if (menu == null) return; +var ignore = (this.modelSetFileName.equals("zapped") || this.modelSetFileName.equals("")); +if (ignore) { +this.menuSetLabel(menu, ""); +this.menuEnable(menu, false); +} else { +this.menuSetLabel(menu, J.i18n.GT.o(J.i18n.GT.$(text), this.modelSetFileName)); +this.menuEnable(menu, true); +}}); +Clazz_defineMethod(c$, "getMenuText", +function(key){ +var str = this.menuText.getProperty(key); +return (str == null ? key : str); +}, "~S"); +Clazz_defineMethod(c$, "updateSelectMenu", +function(){ +var menu = this.htMenus.get("selectMenuText"); +if (menu == null) return; +this.menuEnable(menu, this.ac != 0); +this.menuSetLabel(menu, this.gti("selectMenuText", this.vwr.slm.getSelectionCount())); +}); +Clazz_defineMethod(c$, "updateElementsComputedMenu", +function(elementsPresentBitSet){ +var menu = this.htMenus.get("elementsComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +if (elementsPresentBitSet == null) return; +for (var i = elementsPresentBitSet.nextSetBit(0); i >= 0; i = elementsPresentBitSet.nextSetBit(i + 1)) { +var elementName = JU.Elements.elementNameFromNumber(i); +var elementSymbol = JU.Elements.elementSymbolFromNumber(i); +var entryName = elementSymbol + " - " + elementName; +this.menuCreateItem(menu, entryName, "SELECT " + elementName, null); +} +for (var i = 4; i < JU.Elements.altElementMax; ++i) { +var n = JU.Elements.elementNumberMax + i; +if (elementsPresentBitSet.get(n)) { +n = JU.Elements.altElementNumberFromIndex(i); +var elementName = JU.Elements.elementNameFromNumber(n); +var elementSymbol = JU.Elements.elementSymbolFromNumber(n); +var entryName = elementSymbol + " - " + elementName; +this.menuCreateItem(menu, entryName, "SELECT " + elementName, null); +}} +this.menuEnable(menu, true); +}, "JU.BS"); +Clazz_defineMethod(c$, "updateSpectraMenu", +function(){ +var menu = this.htMenus.get("spectraMenu"); +if (menu == null) return; +var menuh = this.htMenus.get("hnmrMenu"); +if (menuh != null) this.menuRemoveAll(menuh, 0); +var menuc = this.htMenus.get("cnmrMenu"); +if (menuc != null) this.menuRemoveAll(menuc, 0); +this.menuRemoveAll(menu, 0); +var isOK = new Boolean (this.setSpectraMenu(menuh, this.hnmrPeaks) | this.setSpectraMenu(menuc, this.cnmrPeaks)).valueOf(); +if (isOK) { +if (menuh != null) this.menuAddSubMenu(menu, menuh); +if (menuc != null) this.menuAddSubMenu(menu, menuc); +}this.menuEnable(menu, isOK); +}); +Clazz_defineMethod(c$, "setSpectraMenu", +function(menu, peaks){ +var n = (peaks == null ? 0 : peaks.size()); +if (n == 0) return false; +if (menu == null) return false; +this.menuEnable(menu, false); +for (var i = 0; i < n; i++) { +var peak = peaks.get(i); +var title = JU.PT.getQuotedAttribute(peak, "title"); +var atoms = JU.PT.getQuotedAttribute(peak, "atoms"); +if (atoms != null) this.menuCreateItem(menu, title, "select visible & (@" + JU.PT.rep(atoms, ",", " or @") + ")", "Focus" + i); +} +this.menuEnable(menu, true); +return true; +}, "J.api.SC,JU.Lst"); +Clazz_defineMethod(c$, "updateHeteroComputedMenu", +function(htHetero){ +var menu = this.htMenus.get("PDBheteroComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +if (htHetero == null) return; +var n = 0; +for (var hetero, $hetero = htHetero.entrySet().iterator (); $hetero.hasNext()&& ((hetero = $hetero.next ()) || true);) { +var heteroCode = hetero.getKey(); +var heteroName = hetero.getValue(); +if (heteroName.length > 20) heteroName = heteroName.substring(0, 20) + "..."; +var entryName = heteroCode + " - " + heteroName; +this.menuCreateItem(menu, entryName, "SELECT [" + heteroCode + "]", null); +n++; +} +this.menuEnable(menu, (n > 0)); +}, "java.util.Map"); +Clazz_defineMethod(c$, "updateSurfMoComputedMenu", +function(moData){ +var menu = this.htMenus.get("surfMoComputedMenuText"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +var mos = (moData == null ? null : (moData.get("mos"))); +var nOrb = (mos == null ? 0 : mos.size()); +var text = this.getMenuText("surfMoComputedMenuText"); +if (nOrb == 0) { +this.menuSetLabel(menu, J.i18n.GT.o(J.i18n.GT.$(text), "")); +this.menuEnable(menu, false); +return; +}this.menuSetLabel(menu, J.i18n.GT.i(J.i18n.GT.$(text), nOrb)); +this.menuEnable(menu, true); +var subMenu = menu; +var nmod = (nOrb % 25); +if (nmod == 0) nmod = 25; +var pt = (nOrb > 25 ? 0 : -2147483648); +for (var i = nOrb; --i >= 0; ) { +if (pt >= 0 && (pt++ % nmod) == 0) { +if (pt == nmod + 1) nmod = 25; +var id = "mo" + pt + "Menu"; +subMenu = this.menuNewSubMenu(Math.max(i + 2 - nmod, 1) + "..." + (i + 1), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}var mo = mos.get(i); +var entryName = "#" + (i + 1) + " " + (mo.containsKey("type") ? mo.get("type") + " " : "") + (mo.containsKey("symmetry") ? mo.get("symmetry") + " " : "") + (mo.containsKey("occupancy") ? "(" + mo.get("occupancy") + ") " : "") + (mo.containsKey("energy") ? mo.get("energy") : ""); +var script = "mo " + (i + 1); +this.menuCreateItem(subMenu, entryName, script, null); +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "updateFileTypeDependentMenus", +function(){ +for (var i = this.NotPDB.size(); --i >= 0; ) this.menuEnable(this.NotPDB.get(i), !this.isPDB); + +for (var i = this.PDBOnly.size(); --i >= 0; ) this.menuEnable(this.PDBOnly.get(i), this.isPDB); + +for (var i = this.UnitcellOnly.size(); --i >= 0; ) this.menuEnable(this.UnitcellOnly.get(i), this.isUnitCell); + +for (var i = this.FileUnitOnly.size(); --i >= 0; ) this.menuEnable(this.FileUnitOnly.get(i), this.isUnitCell || this.fileHasUnitCell); + +for (var i = this.FileMolOnly.size(); --i >= 0; ) this.menuEnable(this.FileMolOnly.get(i), this.isUnitCell || this.fileHasUnitCell); + +for (var i = this.SingleModelOnly.size(); --i >= 0; ) this.menuEnable(this.SingleModelOnly.get(i), this.isLastFrame); + +for (var i = this.FramesOnly.size(); --i >= 0; ) this.menuEnable(this.FramesOnly.get(i), this.isMultiFrame); + +for (var i = this.VibrationOnly.size(); --i >= 0; ) this.menuEnable(this.VibrationOnly.get(i), this.isVibration); + +for (var i = this.SymmetryOnly.size(); --i >= 0; ) this.menuEnable(this.SymmetryOnly.get(i), this.hasSymmetry && this.isUnitCell); + +for (var i = this.ChargesOnly.size(); --i >= 0; ) this.menuEnable(this.ChargesOnly.get(i), this.haveCharges); + +for (var i = this.TemperatureOnly.size(); --i >= 0; ) this.menuEnable(this.TemperatureOnly.get(i), this.haveBFactors); + +this.updateSignedAppletItems(); +}); +Clazz_defineMethod(c$, "updateSceneComputedMenu", +function(){ +var menu = this.htMenus.get("sceneComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +var scenes = this.vwr.ms.getInfoM("scenes"); +if (scenes == null) return; +for (var i = 0; i < scenes.length; i++) this.menuCreateItem(menu, scenes[i], "restore scene " + JU.PT.esc(scenes[i]) + " 1.0", null); + +this.menuEnable(menu, true); +}); +Clazz_defineMethod(c$, "updatePDBResidueComputedMenus", +function(){ +var haveMenu = false; +var menu3 = this.htMenus.get("PDBaaResiduesComputedMenu"); +if (menu3 != null) { +this.menuRemoveAll(menu3, 0); +this.menuEnable(menu3, false); +haveMenu = true; +}var menu1 = this.htMenus.get("PDBnucleicResiduesComputedMenu"); +if (menu1 != null) { +this.menuRemoveAll(menu1, 0); +this.menuEnable(menu1, false); +haveMenu = true; +}var menu2 = this.htMenus.get("PDBcarboResiduesComputedMenu"); +if (menu2 != null) { +this.menuRemoveAll(menu2, 0); +this.menuEnable(menu2, false); +haveMenu = true; +}if (this.modelSetInfo == null || !haveMenu) return; +var n = (this.modelIndex < 0 ? 0 : this.modelIndex + 1); +var lists = (this.modelSetInfo.get("group3Lists")); +this.group3List = (lists == null ? null : lists[n]); +this.group3Counts = (lists == null ? null : (this.modelSetInfo.get("group3Counts"))[n]); +if (this.group3List == null) return; +var nItems = 0; +var groupList = JM.Group.standardGroupList; +if (menu3 != null) { +for (var i = 1; i < 24; ++i) nItems += this.updateGroup3List(menu3, groupList.substring(i * 6 - 4, i * 6 - 1).trim()); + +nItems += this.augmentGroup3List(menu3, "p>", true); +this.menuEnable(menu3, (nItems > 0)); +this.menuEnable(this.htMenus.get("PDBproteinMenu"), (nItems > 0)); +}if (menu1 != null) { +nItems = this.augmentGroup3List(menu1, "n>", false); +this.menuEnable(menu1, nItems > 0); +this.menuEnable(this.htMenus.get("PDBnucleicMenu"), (nItems > 0)); +var dssr = (nItems > 0 && this.modelIndex >= 0 ? this.vwr.ms.getInfo(this.modelIndex, "dssr") : null); +if (dssr != null) this.setSecStrucMenu(this.htMenus.get("aaStructureMenu"), dssr); +}if (menu2 != null) { +nItems = this.augmentGroup3List(menu2, "c>", false); +this.menuEnable(menu2, nItems > 0); +this.menuEnable(this.htMenus.get("PDBcarboMenu"), (nItems > 0)); +}}); +Clazz_defineMethod(c$, "setSecStrucMenu", +function(menu, dssr){ +var counts = dssr.get("counts"); +if (counts == null) return false; +var keys = new Array(counts.size()); +counts.keySet().toArray(keys); +java.util.Arrays.sort(keys); +if (keys.length == 0) return false; +menu.removeAll(); +for (var i = 0; i < keys.length; i++) this.menuCreateItem(menu, keys[i] + " (" + counts.get(keys[i]) + ")", "select modelIndex=" + this.modelIndex + " && within('dssr', '" + keys[i] + "');", null); + +return true; +}, "J.api.SC,java.util.Map"); +Clazz_defineMethod(c$, "updateGroup3List", +function(menu, name){ +var nItems = 0; +var n = this.group3Counts[Clazz_doubleToInt(this.group3List.indexOf(name) / 6)]; +name = name.trim(); +var script = null; +if (n > 0) { +script = "SELECT " + name; +name += " (" + n + ")"; +nItems++; +}var item = this.menuCreateItem(menu, name, script, this.menuGetId(menu) + "." + name); +if (n == 0) this.menuEnable(item, false); +return nItems; +}, "J.api.SC,~S"); +Clazz_defineMethod(c$, "augmentGroup3List", +function(menu, type, addSeparator){ +var pt = 138; +var nItems = 0; +while (true) { +pt = this.group3List.indexOf(type, pt); +if (pt < 0) break; +if (nItems++ == 0 && addSeparator) this.menuAddSeparator(menu); +var n = this.group3Counts[Clazz_doubleToInt(pt / 6)]; +var heteroCode = this.group3List.substring(pt + 2, pt + 5); +var name = heteroCode + " (" + n + ")"; +this.menuCreateItem(menu, name, "SELECT [" + heteroCode + "]", this.menuGetId(menu) + "." + name); +pt++; +} +return nItems; +}, "J.api.SC,~S,~B"); +Clazz_defineMethod(c$, "updateSYMMETRYComputedMenus", +function(){ +this.updateSYMMETRYSelectComputedMenu(); +this.updateSYMMETRYShowComputedMenu(); +}); +Clazz_defineMethod(c$, "updateSYMMETRYShowComputedMenu", +function(){ +var menu = this.htMenus.get("SYMMETRYShowComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +if (!this.hasSymmetry || this.modelIndex < 0) return; +var info = this.vwr.getProperty("DATA_API", "spaceGroupInfo", null); +if (info == null) return; +var infolist = info.get("operations"); +if (infolist == null) return; +var name = info.get("spaceGroupName"); +this.menuSetLabel(menu, name == null ? J.i18n.GT.$("Space Group") : name); +var subMenu = menu; +var pt = (infolist.length > 25 ? 0 : -2147483648); +for (var i = 0; i < infolist.length; i++) { +if (pt >= 0 && (pt++ % 25) == 0) { +var id = "drawsymop" + pt + "Menu"; +subMenu = this.menuNewSubMenu((i + 1) + "..." + Math.min(i + 25, infolist.length), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}if (i == 0) this.menuEnable(this.menuCreateItem(subMenu, J.i18n.GT.$("none"), "draw sym_* delete", null), true); +var sym = infolist[i][1]; +if (sym.indexOf("x1") < 0) sym = infolist[i][0]; +var entryName = (i + 1) + " " + infolist[i][2] + " (" + sym + ")"; +this.menuEnable(this.menuCreateItem(subMenu, entryName, "draw SYMOP " + (i + 1), null), true); +} +this.menuEnable(menu, true); +}); +Clazz_defineMethod(c$, "updateSYMMETRYSelectComputedMenu", +function(){ +var menu = this.htMenus.get("SYMMETRYSelectComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuEnable(menu, false); +if (!this.hasSymmetry || this.modelIndex < 0) return; +var list = this.modelInfo.get("symmetryOperations"); +if (list == null) return; +var enableSymop = (this.vwr.getOperativeSymmetry() != null); +var subMenu = menu; +var nmod = 25; +var pt = (list.length > 25 ? 0 : -2147483648); +for (var i = 0; i < list.length; i++) { +if (pt >= 0 && (pt++ % nmod) == 0) { +var id = "symop" + pt + "Menu"; +subMenu = this.menuNewSubMenu((i + 1) + "..." + Math.min(i + 25, list.length), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}var entryName = "symop=" + (i + 1) + " # " + list[i]; +this.menuEnable(this.menuCreateItem(subMenu, entryName, "SELECT symop=" + (i + 1), null), enableSymop); +} +this.menuEnable(menu, true); +}); +Clazz_defineMethod(c$, "updateFRAMESbyModelComputedMenu", +function(){ +var menu = this.htMenus.get("FRAMESbyModelComputedMenu"); +if (menu == null) return; +this.menuEnable(menu, (this.modelCount > 0)); +this.menuSetLabel(menu, (this.modelIndex < 0 ? this.gti("allModelsText", this.modelCount) : this.gto("modelMenuText", (this.modelIndex + 1) + "/" + this.modelCount))); +this.menuRemoveAll(menu, 0); +if (this.modelCount < 1) return; +if (this.modelCount > 1) this.menuCreateCheckboxItem(menu, J.i18n.GT.$("All"), "frame 0 ##", null, (this.modelIndex < 0), false); +var subMenu = menu; +var pt = (this.modelCount > 25 ? 0 : -2147483648); +for (var i = 0; i < this.modelCount; i++) { +if (pt >= 0 && (pt++ % 25) == 0) { +var id = "model" + pt + "Menu"; +subMenu = this.menuNewSubMenu((i + 1) + "..." + Math.min(i + 25, this.modelCount), this.menuGetId(menu) + "." + id); +this.menuAddSubMenu(menu, subMenu); +this.htMenus.put(id, subMenu); +pt = 1; +}var script = "" + this.vwr.getModelNumberDotted(i); +var entryName = this.vwr.getModelName(i); +var spectrumTypes = this.vwr.ms.getInfo(i, "spectrumTypes"); +if (spectrumTypes != null && entryName.startsWith(spectrumTypes)) spectrumTypes = null; +if (!entryName.equals(script)) { +var ipt = entryName.indexOf(";PATH"); +if (ipt >= 0) entryName = entryName.substring(0, ipt); +if (entryName.indexOf("Model[") == 0 && (ipt = entryName.indexOf("]:")) >= 0) entryName = entryName.substring(ipt + 2); +entryName = script + ": " + entryName; +}if (entryName.length > 60) entryName = entryName.substring(0, 55) + "..."; +if (spectrumTypes != null) entryName += " (" + spectrumTypes + ")"; +this.menuCreateCheckboxItem(subMenu, entryName, "model " + script + " ##", null, (this.modelIndex == i), false); +} +}); +Clazz_defineMethod(c$, "updateConfigurationComputedMenu", +function(){ +var menu = this.htMenus.get("configurationComputedMenu"); +if (menu == null) return; +this.menuEnable(menu, this.isMultiConfiguration); +if (!this.isMultiConfiguration) return; +var nAltLocs = this.altlocs.length; +this.menuSetLabel(menu, this.gti("configurationMenuText", nAltLocs)); +this.menuRemoveAll(menu, 0); +var script = "hide none ##CONFIG"; +this.menuCreateCheckboxItem(menu, J.i18n.GT.$("All"), script, null, (this.updateMode == 1 && this.configurationSelected.equals(script)), false); +for (var i = 0; i < nAltLocs; i++) { +script = "configuration " + (i + 1) + "; hide thisModel and not selected ##CONFIG"; +var entryName = "" + (i + 1) + " -- \"" + this.altlocs.charAt(i) + "\""; +this.menuCreateCheckboxItem(menu, entryName, script, null, (this.updateMode == 1 && this.configurationSelected.equals(script)), false); +} +}); +Clazz_defineMethod(c$, "updateModelSetComputedMenu", +function(){ +var menu = this.htMenus.get("modelSetMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +this.menuSetLabel(menu, this.nullModelSetName); +this.menuEnable(menu, false); +for (var i = this.noZapped.length; --i >= 0; ) this.menuEnable(this.htMenus.get(this.noZapped[i]), !this.isZapped); + +if (this.modelSetName == null || this.isZapped) return; +if (this.isMultiFrame) { +this.modelSetName = this.gti("modelSetCollectionText", this.modelCount); +if (this.modelSetName.length > this.titleWidthMax) this.modelSetName = this.modelSetName.substring(0, this.titleWidthMax) + "..."; +} else if (this.vwr.getBooleanProperty("hideNameInPopup")) { +this.modelSetName = this.getMenuText("hiddenModelSetText"); +} else if (this.modelSetName.length > this.titleWidthMax) { +this.modelSetName = this.modelSetName.substring(0, this.titleWidthMax) + "..."; +}this.menuSetLabel(menu, this.modelSetName); +this.menuEnable(menu, true); +this.menuEnable(this.htMenus.get("computationMenu"), this.ac <= 100); +this.addMenuItem(menu, this.gti("atomsText", this.ac)); +this.addMenuItem(menu, this.gti("bondsText", this.vwr.ms.getBondCountInModel(this.modelIndex))); +if (this.isPDB) { +this.menuAddSeparator(menu); +this.addMenuItem(menu, this.gti("groupsText", this.vwr.ms.getGroupCountInModel(this.modelIndex))); +this.addMenuItem(menu, this.gti("chainsText", this.vwr.ms.getChainCountInModelWater(this.modelIndex, false))); +this.addMenuItem(menu, this.gti("polymersText", this.vwr.ms.getBioPolymerCountInModel(this.modelIndex))); +var submenu = this.htMenus.get("BiomoleculesMenu"); +if (submenu == null) { +submenu = this.menuNewSubMenu(J.i18n.GT.$(this.getMenuText("biomoleculesMenuText")), this.menuGetId(menu) + ".biomolecules"); +this.menuAddSubMenu(menu, submenu); +}this.menuRemoveAll(submenu, 0); +this.menuEnable(submenu, false); +var biomolecules; +if (this.modelIndex >= 0 && (biomolecules = this.vwr.ms.getInfo(this.modelIndex, "biomolecules")) != null) { +this.menuEnable(submenu, true); +var nBiomolecules = biomolecules.size(); +for (var i = 0; i < nBiomolecules; i++) { +var script = (this.isMultiFrame ? "" : "save orientation;load \"\" FILTER \"biomolecule " + (i + 1) + "\";restore orientation;"); +var nAtoms = (biomolecules.get(i).get("atomCount")).intValue(); +var entryName = this.gto(this.isMultiFrame ? "biomoleculeText" : "loadBiomoleculeText", Clazz_newArray(-1, [Integer.$valueOf(i + 1), Integer.$valueOf(nAtoms)])); +this.menuCreateItem(submenu, entryName, script, null); +} +}}if (this.isApplet && !this.vwr.getBooleanProperty("hideNameInPopup")) { +this.menuAddSeparator(menu); +this.menuCreateItem(menu, this.gto("viewMenuText", this.modelSetFileName), "show url", null); +}}); +Clazz_defineMethod(c$, "gti", +function(s, n){ +return J.i18n.GT.i(J.i18n.GT.$(this.getMenuText(s)), n); +}, "~S,~N"); +Clazz_defineMethod(c$, "gto", +function(s, o){ +return J.i18n.GT.o(J.i18n.GT.$(this.getMenuText(s)), o); +}, "~S,~O"); +Clazz_defineMethod(c$, "updateAboutSubmenu", +function(){ +if (this.isApplet) this.setText("APPLETid", this.vwr.appletName); +{ +}}); +Clazz_defineMethod(c$, "updateLanguageSubmenu", +function(){ +var menu = this.htMenus.get("languageComputedMenu"); +if (menu == null) return; +this.menuRemoveAll(menu, 0); +var language = J.i18n.GT.getLanguage(); +var id = this.menuGetId(menu); +var languages = J.i18n.GT.getLanguageList(null); +for (var i = 0, p = 0; i < languages.length; i++) { +if (language.equals(languages[i].code)) languages[i].display = true; +if (languages[i].display) { +var code = languages[i].code; +var name = languages[i].language; +var nativeName = languages[i].nativeLanguage; +var menuLabel = code + " - " + J.i18n.GT.$(name); +if ((nativeName != null) && (!nativeName.equals(J.i18n.GT.$(name)))) { +menuLabel += " - " + nativeName; +}if (p++ > 0 && (p % 4 == 1)) this.menuAddSeparator(menu); +this.menuCreateCheckboxItem(menu, menuLabel, "language = \"" + code + "\" ##" + name, id + "." + code, language.equals(code), false); +}} +}); +Clazz_defineMethod(c$, "updateSpecialMenuItem", +function(m){ +m.setText(this.getSpecialLabel(m.getName(), m.getText())); +}, "J.api.SC"); +Clazz_defineMethod(c$, "getSpecialLabel", +function(name, text){ +var pt = text.indexOf(" ("); +if (pt < 0) pt = text.length; +var info = null; +if (name.indexOf("captureLooping") >= 0) info = (this.vwr.am.animationReplayMode == 1073742070 ? "ONCE" : "LOOP"); + else if (name.indexOf("captureFps") >= 0) info = "" + this.vwr.getInt(553648132); + else if (name.indexOf("captureMenu") >= 0) info = (this.vwr.captureParams == null ? J.i18n.GT.$("not capturing") : this.vwr.fm.getFilePath(this.vwr.captureParams.get("captureFileName"), false, true) + " " + this.vwr.captureParams.get("captureCount")); +return (info == null ? text : text.substring(0, pt) + " (" + info + ")"); +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.popup"); +Clazz_load(["J.popup.PopupResource", "JV.JC"], "J.popup.MainPopupResourceBundle", ["JU.PT", "J.i18n.GT", "JV.Viewer"], function(){ +var c$ = Clazz_declareType(J.popup, "MainPopupResourceBundle", J.popup.PopupResource); +Clazz_overrideMethod(c$, "getMenuName", +function(){ +return "popupMenu"; +}); +Clazz_overrideMethod(c$, "buildStructure", +function(menuStructure){ +this.addItems(J.popup.MainPopupResourceBundle.menuContents); +this.addItems(J.popup.MainPopupResourceBundle.structureContents); +if (menuStructure != null) this.setStructure(menuStructure, new J.i18n.GT()); +}, "~S"); +c$.Box = Clazz_defineMethod(c$, "Box", +function(cmd){ +return "if (showBoundBox or showUnitcell) {" + cmd + "} else {boundbox on;" + cmd + ";boundbox off}"; +}, "~S"); +Clazz_overrideMethod(c$, "getWordContents", +function(){ +var wasTranslating = J.i18n.GT.setDoTranslate(true); +var vdw = J.i18n.GT.$("{0}% van der Waals"); +var exm = J.i18n.GT.$("Export {0} 3D model"); +var exi = J.i18n.GT.$("Export {0} image"); +var rld = J.i18n.GT.$("Reload {0}"); +var scl = J.i18n.GT.$("Scale {0}"); +var ang = J.i18n.GT.$("{0} \u00C5"); +var pxl = J.i18n.GT.$("{0} px"); +var words = Clazz_newArray(-1, ["cnmrMenu", J.i18n.GT.$("13C-NMR"), "hnmrMenu", J.i18n.GT.$("1H-NMR"), "aboutMenu", J.i18n.GT.$("About..."), "negativeCharge", J.i18n.GT.$("Acidic Residues (-)"), "allModelsText", J.i18n.GT.$("All {0} models"), "allHetero", J.i18n.GT.$("All PDB \"HETATM\""), "Solvent", J.i18n.GT.$("All Solvent"), "Water", J.i18n.GT.$("All Water"), "selectAll", J.i18n.GT.$("All"), "allProtein", null, "allNucleic", null, "allCarbo", null, "altloc#PDB", J.i18n.GT.$("Alternative Location"), "amino#PDB", J.i18n.GT.$("Amino Acid"), "byAngstromMenu", J.i18n.GT.$("Angstrom Width"), "animModeMenu", J.i18n.GT.$("Animation Mode"), "FRAMESanimateMenu", J.i18n.GT.$("Animation"), "atPairs", J.i18n.GT.$("AT pairs"), "atomMenu", J.i18n.GT.$("Atoms"), "[color_atoms]Menu", null, "atomsText", J.i18n.GT.$("atoms: {0}"), "auPairs", J.i18n.GT.$("AU pairs"), "[color_axes]Menu", J.i18n.GT.$("Axes"), "showAxesCB", null, "[set_axes]Menu", null, "axisA", J.i18n.GT.$("Axis a"), "axisB", J.i18n.GT.$("Axis b"), "axisC", J.i18n.GT.$("Axis c"), "axisX", J.i18n.GT.$("Axis x"), "axisY", J.i18n.GT.$("Axis y"), "axisZ", J.i18n.GT.$("Axis z"), "back", J.i18n.GT.$("Back"), "proteinBackbone", J.i18n.GT.$("Backbone"), "nucleicBackbone", null, "backbone", null, "[color_backbone]Menu", null, "[color_background]Menu", J.i18n.GT.$("Background"), "renderBallAndStick", J.i18n.GT.$("Ball and Stick"), "nucleicBases", J.i18n.GT.$("Bases"), "positiveCharge", J.i18n.GT.$("Basic Residues (+)"), "best", J.i18n.GT.$("Best"), "biomoleculeText", J.i18n.GT.$("biomolecule {0} ({1} atoms)"), "biomoleculesMenuText", J.i18n.GT.$("Biomolecules"), "black", J.i18n.GT.$("Black"), "blue", J.i18n.GT.$("Blue"), "bondMenu", J.i18n.GT.$("Bonds"), "[color_bonds]Menu", null, "bondsText", J.i18n.GT.$("bonds: {0}"), "bottom", J.i18n.GT.$("Bottom"), "[color_boundbox]Menu", J.i18n.GT.$("Boundbox"), "[set_boundbox]Menu", null, "showBoundBoxCB", null, "PDBheteroComputedMenu", J.i18n.GT.$("By HETATM"), "PDBaaResiduesComputedMenu", J.i18n.GT.$("By Residue Name"), "PDBnucleicResiduesComputedMenu", null, "PDBcarboResiduesComputedMenu", null, "schemeMenu", J.i18n.GT.$("By Scheme"), "[color_]schemeMenu", null, "hbondCalc", J.i18n.GT.$("Calculate"), "SIGNEDJAVAcaptureRock", J.i18n.GT.$("Capture rock"), "SIGNEDJAVAcaptureSpin", J.i18n.GT.$("Capture spin"), "SIGNEDJAVAcaptureMenuSPECIAL", J.i18n.GT.$("Capture"), "PDBcarboMenu", J.i18n.GT.$("Carbohydrate"), "cartoonRockets", J.i18n.GT.$("Cartoon Rockets"), "PDBrenderCartoonsOnly", J.i18n.GT.$("Cartoon"), "cartoon", null, "[color_cartoon]sMenu", null, "pickCenter", J.i18n.GT.$("Center"), "labelCentered", J.i18n.GT.$("Centered"), "chain#PDB", J.i18n.GT.$("Chain"), "chainsText", J.i18n.GT.$("chains: {0}"), "colorChargeMenu", J.i18n.GT.$("Charge"), "measureAngle", J.i18n.GT.$("Click for angle measurement"), "measureDistance", J.i18n.GT.$("Click for distance measurement"), "measureTorsion", J.i18n.GT.$("Click for torsion (dihedral) measurement"), "PDBmeasureSequence", J.i18n.GT.$("Click two atoms to display a sequence in the console"), "modelSetCollectionText", J.i18n.GT.$("Collection of {0} models"), "colorMenu", J.i18n.GT.$("Color"), "computationMenu", J.i18n.GT.$("Computation"), "configurationMenuText", J.i18n.GT.$("Configurations ({0})"), "configurationComputedMenu", J.i18n.GT.$("Configurations"), "showConsole", J.i18n.GT.$("Console"), "renderCpkSpacefill", J.i18n.GT.$("CPK Spacefill"), "stereoCrossEyed", J.i18n.GT.$("Cross-eyed viewing"), "showState", J.i18n.GT.$("Current state"), "cyan", J.i18n.GT.$("Cyan"), "darkgray", J.i18n.GT.$("Dark Gray"), "measureDelete", J.i18n.GT.$("Delete measurements"), "SIGNEDJAVAcaptureOff", J.i18n.GT.$("Disable capturing"), "hideNotSelectedCB", J.i18n.GT.$("Display Selected Only"), "distanceAngstroms", J.i18n.GT.$("Distance units Angstroms"), "distanceNanometers", J.i18n.GT.$("Distance units nanometers"), "distancePicometers", J.i18n.GT.$("Distance units picometers"), "distanceHz", J.i18n.GT.$("Distance units hz (NMR J-coupling)"), "ssbondMenu", J.i18n.GT.$("Disulfide Bonds"), "[color_ssbonds]Menu", null, "DNA", J.i18n.GT.$("DNA"), "surfDots", J.i18n.GT.$("Dot Surface"), "dotted", J.i18n.GT.$("Dotted"), "measureOff", J.i18n.GT.$("Double-Click begins and ends all measurements"), "cpk", J.i18n.GT.$("Element (CPK)"), "elementsComputedMenu", J.i18n.GT.$("Element"), "SIGNEDJAVAcaptureEnd", J.i18n.GT.$("End capturing"), "exportMenu", J.i18n.GT.$("Export"), "extractMOL", J.i18n.GT.$("Extract MOL data"), "showFile", J.i18n.GT.$("File Contents"), "showFileHeader", J.i18n.GT.$("File Header"), "fileMenu", J.i18n.GT.$("File"), "formalcharge", J.i18n.GT.$("Formal Charge"), "front", J.i18n.GT.$("Front"), "gcPairs", J.i18n.GT.$("GC pairs"), "gold", J.i18n.GT.$("Gold"), "gray", J.i18n.GT.$("Gray"), "green", J.i18n.GT.$("Green"), "group#PDB", J.i18n.GT.$("Group"), "groupsText", J.i18n.GT.$("groups: {0}"), "PDBheteroMenu", J.i18n.GT.$("Hetero"), "off#axes", J.i18n.GT.$("Hide"), "showHistory", J.i18n.GT.$("History"), "hbondMenu", J.i18n.GT.$("Hydrogen Bonds"), "[color_hbonds]Menu", null, "pickIdent", J.i18n.GT.$("Identity"), "indigo", J.i18n.GT.$("Indigo"), "none", J.i18n.GT.$("Inherit"), "invertSelection", J.i18n.GT.$("Invert Selection"), "showIsosurface", J.i18n.GT.$("Isosurface JVXL data"), "help", J.i18n.GT.$("Jmol Script Commands"), "pickLabel", J.i18n.GT.$("Label"), "labelMenu", J.i18n.GT.$("Labels"), "[color_labels]Menu", null, "languageComputedMenu", J.i18n.GT.$("Language"), "left", J.i18n.GT.$("Left"), "Ligand", J.i18n.GT.$("Ligand"), "lightgray", J.i18n.GT.$("Light Gray"), "measureList", J.i18n.GT.$("List measurements"), "loadBiomoleculeText", J.i18n.GT.$("load biomolecule {0} ({1} atoms)"), "SIGNEDloadFileUnitCell", J.i18n.GT.$("Load full unit cell"), "loadMenu", J.i18n.GT.$("Load"), "loop", J.i18n.GT.$("Loop"), "labelLowerLeft", J.i18n.GT.$("Lower Left"), "labelLowerRight", J.i18n.GT.$("Lower Right"), "mainMenuText", J.i18n.GT.$("Main Menu"), "opaque", J.i18n.GT.$("Make Opaque"), "surfOpaque", null, "translucent", J.i18n.GT.$("Make Translucent"), "surfTranslucent", null, "maroon", J.i18n.GT.$("Maroon"), "measureMenu", J.i18n.GT.$("Measurements"), "showMeasure", null, "modelMenuText", J.i18n.GT.$("model {0}"), "hiddenModelSetText", J.i18n.GT.$("Model information"), "modelkit", J.i18n.GT.$("Model kit"), "showModel", J.i18n.GT.$("Model"), "FRAMESbyModelComputedMenu", J.i18n.GT.$("Model/Frame"), "modelKitMode", J.i18n.GT.$("modelKitMode"), "surf2MEP", J.i18n.GT.$("Molecular Electrostatic Potential (range -0.1 0.1)"), "surfMEP", J.i18n.GT.$("Molecular Electrostatic Potential (range ALL)"), "showMo", J.i18n.GT.$("Molecular orbital JVXL data"), "surfMoComputedMenuText", J.i18n.GT.$("Molecular Orbitals ({0})"), "surfMolecular", J.i18n.GT.$("Molecular Surface"), "molecule", J.i18n.GT.$("Molecule"), "monomer#PDB", J.i18n.GT.$("Monomer"), "mouse", J.i18n.GT.$("Mouse Manual"), "nextframe", J.i18n.GT.$("Next Frame"), "modelSetMenu", J.i18n.GT.$("No atoms loaded"), "exceptWater", J.i18n.GT.$("Nonaqueous HETATM") + " (hetero and not water)", "nonWaterSolvent", J.i18n.GT.$("Nonaqueous Solvent") + " (solvent and not water)", "PDBnoneOfTheAbove", J.i18n.GT.$("None of the above"), "selectNone", J.i18n.GT.$("None"), "stereoNone", null, "labelNone", null, "nonpolar", J.i18n.GT.$("Nonpolar Residues"), "PDBnucleicMenu", J.i18n.GT.$("Nucleic"), "atomNone", J.i18n.GT.$("Off"), "bondNone", null, "hbondNone", null, "ssbondNone", null, "structureNone", null, "vibrationOff", null, "vectorOff", null, "spinOff", null, "pickOff", null, "surfOff", null, "olive", J.i18n.GT.$("Olive"), "bondWireframe", J.i18n.GT.$("On"), "hbondWireframe", null, "ssbondWireframe", null, "vibrationOn", null, "vectorOn", null, "spinOn", null, "on", null, "SIGNEDloadPdb", J.i18n.GT.$("Get PDB file"), "SIGNEDloadMol", J.i18n.GT.$("Get MOL file"), "SIGNEDloadFile", J.i18n.GT.$("Open local file"), "SIGNEDloadScript", J.i18n.GT.$("Open script"), "SIGNEDloadUrl", J.i18n.GT.$("Open URL"), "minimize", J.i18n.GT.$("Optimize structure"), "orange", J.i18n.GT.$("Orange"), "orchid", J.i18n.GT.$("Orchid"), "showOrient", J.i18n.GT.$("Orientation"), "palindrome", J.i18n.GT.$("Palindrome"), "partialcharge", J.i18n.GT.$("Partial Charge"), "pause", J.i18n.GT.$("Pause"), "perspectiveDepthCB", J.i18n.GT.$("Perspective Depth"), "byPixelMenu", J.i18n.GT.$("Pixel Width"), "onceThrough", J.i18n.GT.$("Play Once"), "play", J.i18n.GT.$("Play"), "polar", J.i18n.GT.$("Polar Residues"), "polymersText", J.i18n.GT.$("polymers: {0}"), "labelPositionMenu", J.i18n.GT.$("Position Label on Atom"), "prevframe", J.i18n.GT.$("Previous Frame"), "PDBproteinMenu", J.i18n.GT.$("Protein"), "colorrasmolCB", J.i18n.GT.$("RasMol Colors"), "red", J.i18n.GT.$("Red"), "stereoRedBlue", J.i18n.GT.$("Red+Blue glasses"), "stereoRedCyan", J.i18n.GT.$("Red+Cyan glasses"), "stereoRedGreen", J.i18n.GT.$("Red+Green glasses"), "SIGNEDJAVAcaptureOn", J.i18n.GT.$("Re-enable capturing"), "FILEUNITninePoly", J.i18n.GT.$("Reload + Polyhedra"), "reload", J.i18n.GT.$("Reload"), "restart", J.i18n.GT.$("Restart"), "resume", J.i18n.GT.$("Resume"), "playrev", J.i18n.GT.$("Reverse"), "rewind", J.i18n.GT.$("Rewind"), "ribbons", J.i18n.GT.$("Ribbons"), "[color_ribbon]sMenu", null, "right", J.i18n.GT.$("Right"), "RNA", J.i18n.GT.$("RNA"), "rockets", J.i18n.GT.$("Rockets"), "[color_rockets]Menu", null, "salmon", J.i18n.GT.$("Salmon"), "writeFileTextVARIABLE", J.i18n.GT.$("Save a copy of {0}"), "SIGNEDwriteJmol", J.i18n.GT.$("Save as PNG/JMOL (image+zip)"), "SIGNEDwriteIsosurface", J.i18n.GT.$("Save JVXL isosurface"), "writeHistory", J.i18n.GT.$("Save script with history"), "writeState", J.i18n.GT.$("Save script with state"), "saveMenu", J.i18n.GT.$("Save"), "sceneComputedMenu", J.i18n.GT.$("Scenes"), "renderSchemeMenu", J.i18n.GT.$("Scheme"), "aaStructureMenu", J.i18n.GT.$("Secondary Structure"), "structure#PDB", null, "selectMenuText", J.i18n.GT.$("Select ({0})"), "pickAtom", J.i18n.GT.$("Select atom"), "dragAtom", J.i18n.GT.$("Drag atom"), "dragMolecule", J.i18n.GT.$("Drag molecule"), "PDBpickChain", J.i18n.GT.$("Select chain"), "pickElement", J.i18n.GT.$("Select element"), "PDBpickGroup", J.i18n.GT.$("Select group"), "pickMolecule", J.i18n.GT.$("Select molecule"), "SYMMETRYpickSite", J.i18n.GT.$("Select site"), "showSelectionsCB", J.i18n.GT.$("Selection Halos"), "SIGNEDJAVAcaptureFpsSPECIAL", J.i18n.GT.$("Set capture replay rate"), "[set_spin_FPS]Menu", J.i18n.GT.$("Set FPS"), "FRAMESanimFpsMenu", null, "PDBhbondBackbone", J.i18n.GT.$("Set H-Bonds Backbone"), "PDBhbondSidechain", J.i18n.GT.$("Set H-Bonds Side Chain"), "pickingMenu", J.i18n.GT.$("Set picking"), "PDBssbondBackbone", J.i18n.GT.$("Set SS-Bonds Backbone"), "PDBssbondSidechain", J.i18n.GT.$("Set SS-Bonds Side Chain"), "[set_spin_X]Menu", J.i18n.GT.$("Set X Rate"), "[set_spin_Y]Menu", J.i18n.GT.$("Set Y Rate"), "[set_spin_Z]Menu", J.i18n.GT.$("Set Z Rate"), "shapely#PDB", J.i18n.GT.$("Shapely"), "showHydrogensCB", J.i18n.GT.$("Show Hydrogens"), "showMeasurementsCB", J.i18n.GT.$("Show Measurements"), "SYMMETRYpickSymmetry", J.i18n.GT.$("Show symmetry operation"), "showMenu", J.i18n.GT.$("Show"), "proteinSideChains", J.i18n.GT.$("Side Chains"), "slateblue", J.i18n.GT.$("Slate Blue"), "SYMMETRYShowComputedMenu", J.i18n.GT.$("Space Group"), "showSpacegroup", null, "spectraMenu", J.i18n.GT.$("Spectra"), "spinMenu", J.i18n.GT.$("Spin"), "pickSpin", null, "SIGNEDJAVAcaptureBegin", J.i18n.GT.$("Start capturing"), "stereoMenu", J.i18n.GT.$("Stereographic"), "renderSticks", J.i18n.GT.$("Sticks"), "stop", J.i18n.GT.$("Stop"), "strands", J.i18n.GT.$("Strands"), "[color_strands]Menu", null, "PDBstructureMenu", J.i18n.GT.$("Structures"), "colorPDBStructuresMenu", null, "renderMenu", J.i18n.GT.$("Style"), "[color_isosurface]Menu", J.i18n.GT.$("Surfaces"), "surfaceMenu", null, "SYMMETRYSelectComputedMenu", J.i18n.GT.$("Symmetry"), "SYMMETRYshowSymmetry", null, "FILEUNITMenu", null, "systemMenu", J.i18n.GT.$("System"), "relativeTemperature#BFACTORS", J.i18n.GT.$("Temperature (Relative)"), "fixedTemperature#BFACTORS", J.i18n.GT.$("Temperature (Fixed)"), "SIGNEDJAVAcaptureLoopingSPECIAL", J.i18n.GT.$("Toggle capture looping"), "top", JU.PT.split(J.i18n.GT.$("Top[as in \"view from the top, from above\" - (translators: remove this bracketed part]"), "[")[0], "PDBrenderTraceOnly", J.i18n.GT.$("Trace"), "trace", null, "[color_trace]Menu", null, "translations", J.i18n.GT.$("Translations"), "noCharge", J.i18n.GT.$("Uncharged Residues"), "[color_UNITCELL]Menu", J.i18n.GT.$("Unit cell"), "UNITCELLshow", null, "[set_UNITCELL]Menu", null, "showUNITCELLCB", null, "labelUpperLeft", J.i18n.GT.$("Upper Left"), "labelUpperRight", J.i18n.GT.$("Upper Right"), "surfVDW", J.i18n.GT.$("van der Waals Surface"), "VIBRATIONvectorMenu", J.i18n.GT.$("Vectors"), "property_vxyz#VIBRATION", null, "[color_vectors]Menu", null, "VIBRATIONMenu", J.i18n.GT.$("Vibration"), "viewMenuText", J.i18n.GT.$("View {0}"), "viewMenu", J.i18n.GT.$("View"), "violet", J.i18n.GT.$("Violet"), "stereoWallEyed", J.i18n.GT.$("Wall-eyed viewing"), "white", J.i18n.GT.$("White"), "renderWireframe", J.i18n.GT.$("Wireframe"), "labelName", J.i18n.GT.$("With Atom Name"), "labelNumber", J.i18n.GT.$("With Atom Number"), "labelSymbol", J.i18n.GT.$("With Element Symbol"), "yellow", J.i18n.GT.$("Yellow"), "zoomIn", J.i18n.GT.$("Zoom In"), "zoomOut", J.i18n.GT.$("Zoom Out"), "zoomMenu", J.i18n.GT.$("Zoom"), "vector005", J.i18n.GT.o(ang, "0.05"), "bond100", J.i18n.GT.o(ang, "0.10"), "hbond100", null, "ssbond100", null, "vector01", null, "10a", null, "bond150", J.i18n.GT.o(ang, "0.15"), "hbond150", null, "ssbond150", null, "bond200", J.i18n.GT.o(ang, "0.20"), "hbond200", null, "ssbond200", null, "20a", null, "bond250", J.i18n.GT.o(ang, "0.25"), "hbond250", null, "ssbond250", null, "25a", null, "bond300", J.i18n.GT.o(ang, "0.30"), "hbond300", null, "ssbond300", null, "50a", J.i18n.GT.o(ang, "0.50"), "100a", J.i18n.GT.o(ang, "1.0"), "1p", J.i18n.GT.i(pxl, 1), "10p", J.i18n.GT.i(pxl, 10), "3p", J.i18n.GT.i(pxl, 3), "vector3", null, "5p", J.i18n.GT.i(pxl, 5), "atom100", J.i18n.GT.i(vdw, 100), "atom15", J.i18n.GT.i(vdw, 15), "atom20", J.i18n.GT.i(vdw, 20), "atom25", J.i18n.GT.i(vdw, 25), "atom50", J.i18n.GT.i(vdw, 50), "atom75", J.i18n.GT.i(vdw, 75), "SIGNEDNOGLwriteIdtf", J.i18n.GT.o(exm, "IDTF"), "SIGNEDNOGLwriteMaya", J.i18n.GT.o(exm, "Maya"), "SIGNEDNOGLwriteVrml", J.i18n.GT.o(exm, "VRML"), "SIGNEDNOGLwriteX3d", J.i18n.GT.o(exm, "X3D"), "SIGNEDNOGLwriteSTL", J.i18n.GT.o(exm, "STL"), "SIGNEDNOGLwriteGif", J.i18n.GT.o(exi, "GIF"), "SIGNEDNOGLwriteJpg", J.i18n.GT.o(exi, "JPG"), "SIGNEDNOGLwritePng", J.i18n.GT.o(exi, "PNG"), "SIGNEDNOGLwritePngJmol", J.i18n.GT.o(exi, "PNG+JMOL"), "SIGNEDNOGLwritePovray", J.i18n.GT.o(exi, "POV-Ray"), "FILEUNITnineRestricted", J.i18n.GT.o(J.i18n.GT.$("Reload {0} + Display {1}"), Clazz_newArray(-1, ["{444 666 1}", "555"])), "FILEMOLload", J.i18n.GT.o(rld, "(molecular)"), "FILEUNITone", J.i18n.GT.o(rld, "{1 1 1}"), "FILEUNITnine", J.i18n.GT.o(rld, "{444 666 1}"), "vectorScale02", J.i18n.GT.o(scl, "0.2"), "vectorScale05", J.i18n.GT.o(scl, "0.5"), "vectorScale1", J.i18n.GT.o(scl, "1"), "vectorScale2", J.i18n.GT.o(scl, "2"), "vectorScale5", J.i18n.GT.o(scl, "5"), "surfSolvent14", J.i18n.GT.o(J.i18n.GT.$("Solvent Surface ({0}-Angstrom probe)"), "1.4"), "surfSolventAccessible14", J.i18n.GT.o(J.i18n.GT.$("Solvent-Accessible Surface (VDW + {0} Angstrom)"), "1.4"), "vibration20", "*2", "vibration05", "/2", "JAVAmemTotal", "?", "JAVAmemMax", null, "JAVAprocessors", null, "s0", "0", "animfps10", "10", "s10", null, "zoom100", "100%", "zoom150", "150%", "animfps20", "20", "s20", null, "zoom200", "200%", "animfps30", "30", "s30", null, "s40", "40", "zoom400", "400%", "animfps5", "5", "s5", null, "animfps50", "50", "s50", null, "zoom50", "50%", "zoom800", "800%", "JSConsole", J.i18n.GT.$("JavaScript Console"), "jmolMenu", "Jmol", "date", JV.JC.date, "version", JV.JC.version, "javaVender", JV.Viewer.strJavaVendor, "javaVersion", JV.Viewer.strJavaVersion, "os", JV.Viewer.strOSName, "jmolorg", "http://www.jmol.org"]); +J.i18n.GT.setDoTranslate(wasTranslating); +for (var i = 1, n = words.length; i < n; i += 2) if (words[i] == null) words[i] = words[i - 2]; + +return words; +}); +Clazz_overrideMethod(c$, "getMenuAsText", +function(title){ +return this.getStuctureAsText(title, J.popup.MainPopupResourceBundle.menuContents, J.popup.MainPopupResourceBundle.structureContents); +}, "~S"); +c$.menuContents = Clazz_newArray(-1, [ Clazz_newArray(-1, ["@COLOR", "black darkgray lightgray white - red orange yellow green cyan blue indigo violet"]), Clazz_newArray(-1, ["@AXESCOLOR", "gray salmon maroon olive slateblue gold orchid"]), Clazz_newArray(-1, ["popupMenu", "fileMenu modelSetMenu FRAMESbyModelComputedMenu configurationComputedMenu - selectMenuText viewMenu renderMenu colorMenu - surfaceMenu FILEUNITMenu - sceneComputedMenu zoomMenu spinMenu VIBRATIONMenu spectraMenu FRAMESanimateMenu - measureMenu pickingMenu - showConsole JSConsole showMenu computationMenu - languageComputedMenu aboutMenu"]), Clazz_newArray(-1, ["fileMenu", "loadMenu saveMenu exportMenu SIGNEDJAVAcaptureMenuSPECIAL "]), Clazz_newArray(-1, ["loadMenu", "SIGNEDloadFile SIGNEDloadUrl SIGNEDloadPdb SIGNEDloadMol SIGNEDloadScript - reload SIGNEDloadFileUnitCell"]), Clazz_newArray(-1, ["saveMenu", "writeFileTextVARIABLE writeState writeHistory SIGNEDwriteJmol SIGNEDwriteIsosurface "]), Clazz_newArray(-1, ["exportMenu", "SIGNEDNOGLwriteGif SIGNEDNOGLwriteJpg SIGNEDNOGLwritePng SIGNEDNOGLwritePngJmol SIGNEDNOGLwritePovray - SIGNEDNOGLwriteVrml SIGNEDNOGLwriteX3d SIGNEDNOGLwriteSTL"]), Clazz_newArray(-1, ["selectMenuText", "hideNotSelectedCB showSelectionsCB - selectAll selectNone invertSelection - elementsComputedMenu SYMMETRYSelectComputedMenu - PDBproteinMenu PDBnucleicMenu PDBheteroMenu PDBcarboMenu PDBnoneOfTheAbove"]), Clazz_newArray(-1, ["PDBproteinMenu", "PDBaaResiduesComputedMenu - allProtein proteinBackbone proteinSideChains - polar nonpolar - positiveCharge negativeCharge noCharge"]), Clazz_newArray(-1, ["PDBcarboMenu", "PDBcarboResiduesComputedMenu - allCarbo"]), Clazz_newArray(-1, ["PDBnucleicMenu", "PDBnucleicResiduesComputedMenu - allNucleic nucleicBackbone nucleicBases - DNA RNA - atPairs auPairs gcPairs - aaStructureMenu"]), Clazz_newArray(-1, ["PDBheteroMenu", "PDBheteroComputedMenu - allHetero Solvent Water - Ligand exceptWater nonWaterSolvent"]), Clazz_newArray(-1, ["viewMenu", "best front left right top bottom back - axisX axisY axisZ - axisA axisB axisC"]), Clazz_newArray(-1, ["renderMenu", "renderSchemeMenu - atomMenu labelMenu bondMenu hbondMenu ssbondMenu - PDBstructureMenu - [set_axes]Menu [set_boundbox]Menu [set_UNITCELL]Menu - perspectiveDepthCB stereoMenu"]), Clazz_newArray(-1, ["renderSchemeMenu", "renderCpkSpacefill renderBallAndStick renderSticks renderWireframe PDBrenderCartoonsOnly PDBrenderTraceOnly"]), Clazz_newArray(-1, ["atomMenu", "showHydrogensCB - atomNone - atom15 atom20 atom25 atom50 atom75 atom100"]), Clazz_newArray(-1, ["bondMenu", "bondNone bondWireframe - bond100 bond150 bond200 bond250 bond300"]), Clazz_newArray(-1, ["hbondMenu", "hbondCalc hbondNone hbondWireframe - PDBhbondSidechain PDBhbondBackbone - hbond100 hbond150 hbond200 hbond250 hbond300"]), Clazz_newArray(-1, ["ssbondMenu", "ssbondNone ssbondWireframe - PDBssbondSidechain PDBssbondBackbone - ssbond100 ssbond150 ssbond200 ssbond250 ssbond300"]), Clazz_newArray(-1, ["PDBstructureMenu", "structureNone - backbone cartoon cartoonRockets ribbons rockets strands trace"]), Clazz_newArray(-1, ["VIBRATIONvectorMenu", "vectorOff vectorOn vibScale20 vibScale05 vector3 vector005 vector01 - vectorScale02 vectorScale05 vectorScale1 vectorScale2 vectorScale5"]), Clazz_newArray(-1, ["stereoMenu", "stereoNone stereoRedCyan stereoRedBlue stereoRedGreen stereoCrossEyed stereoWallEyed"]), Clazz_newArray(-1, ["labelMenu", "labelNone - labelSymbol labelName labelNumber - labelPositionMenu"]), Clazz_newArray(-1, ["labelPositionMenu", "labelCentered labelUpperRight labelLowerRight labelUpperLeft labelLowerLeft"]), Clazz_newArray(-1, ["colorMenu", "colorrasmolCB [color_]schemeMenu - [color_atoms]Menu [color_bonds]Menu [color_hbonds]Menu [color_ssbonds]Menu colorPDBStructuresMenu [color_isosurface]Menu - [color_labels]Menu [color_vectors]Menu - [color_axes]Menu [color_boundbox]Menu [color_UNITCELL]Menu [color_background]Menu"]), Clazz_newArray(-1, ["[color_atoms]Menu", "schemeMenu - @COLOR - opaque translucent"]), Clazz_newArray(-1, ["[color_bonds]Menu", "none - @COLOR - opaque translucent"]), Clazz_newArray(-1, ["[color_hbonds]Menu", null]), Clazz_newArray(-1, ["[color_ssbonds]Menu", null]), Clazz_newArray(-1, ["[color_labels]Menu", null]), Clazz_newArray(-1, ["[color_vectors]Menu", null]), Clazz_newArray(-1, ["[color_backbone]Menu", "none - schemeMenu - @COLOR - opaque translucent"]), Clazz_newArray(-1, ["[color_cartoon]sMenu", null]), Clazz_newArray(-1, ["[color_ribbon]sMenu", null]), Clazz_newArray(-1, ["[color_rockets]Menu", null]), Clazz_newArray(-1, ["[color_strands]Menu", null]), Clazz_newArray(-1, ["[color_trace]Menu", null]), Clazz_newArray(-1, ["[color_background]Menu", "@COLOR"]), Clazz_newArray(-1, ["[color_isosurface]Menu", "@COLOR - opaque translucent"]), Clazz_newArray(-1, ["[color_axes]Menu", "@AXESCOLOR"]), Clazz_newArray(-1, ["[color_boundbox]Menu", null]), Clazz_newArray(-1, ["[color_UNITCELL]Menu", null]), Clazz_newArray(-1, ["colorPDBStructuresMenu", "[color_backbone]Menu [color_cartoon]sMenu [color_ribbon]sMenu [color_rockets]Menu [color_strands]Menu [color_trace]Menu"]), Clazz_newArray(-1, ["schemeMenu", "cpk molecule formalcharge partialcharge - altloc#PDB amino#PDB chain#PDB group#PDB monomer#PDB shapely#PDB structure#PDB relativeTemperature#BFACTORS fixedTemperature#BFACTORS property_vxyz#VIBRATION"]), Clazz_newArray(-1, ["[color_]schemeMenu", null]), Clazz_newArray(-1, ["zoomMenu", "zoom50 zoom100 zoom150 zoom200 zoom400 zoom800 - zoomIn zoomOut"]), Clazz_newArray(-1, ["spinMenu", "spinOn spinOff - [set_spin_X]Menu [set_spin_Y]Menu [set_spin_Z]Menu - [set_spin_FPS]Menu"]), Clazz_newArray(-1, ["VIBRATIONMenu", "vibrationOff vibrationOn vibration20 vibration05 VIBRATIONvectorMenu"]), Clazz_newArray(-1, ["spectraMenu", "hnmrMenu cnmrMenu"]), Clazz_newArray(-1, ["FRAMESanimateMenu", "animModeMenu - play pause resume stop - nextframe prevframe rewind - playrev restart - FRAMESanimFpsMenu"]), Clazz_newArray(-1, ["FRAMESanimFpsMenu", "animfps5 animfps10 animfps20 animfps30 animfps50"]), Clazz_newArray(-1, ["measureMenu", "showMeasurementsCB - measureOff measureDistance measureAngle measureTorsion PDBmeasureSequence - measureDelete measureList - distanceNanometers distanceAngstroms distancePicometers distanceHz"]), Clazz_newArray(-1, ["pickingMenu", "pickOff pickCenter pickIdent pickLabel pickAtom pickMolecule pickElement - dragAtom dragMolecule - pickSpin - modelKitMode - PDBpickChain PDBpickGroup SYMMETRYpickSite"]), Clazz_newArray(-1, ["computationMenu", "minimize"]), Clazz_newArray(-1, ["showMenu", "showHistory showFile showFileHeader - showOrient showMeasure - showSpacegroup showState SYMMETRYshowSymmetry UNITCELLshow - showIsosurface showMo - modelkit extractMOL"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureMenuSPECIAL", "SIGNEDJAVAcaptureRock SIGNEDJAVAcaptureSpin - SIGNEDJAVAcaptureBegin SIGNEDJAVAcaptureEnd SIGNEDJAVAcaptureOff SIGNEDJAVAcaptureOn SIGNEDJAVAcaptureFpsSPECIAL SIGNEDJAVAcaptureLoopingSPECIAL"]), Clazz_newArray(-1, ["[set_spin_X]Menu", "s0 s5 s10 s20 s30 s40 s50"]), Clazz_newArray(-1, ["[set_spin_Y]Menu", null]), Clazz_newArray(-1, ["[set_spin_Z]Menu", null]), Clazz_newArray(-1, ["[set_spin_FPS]Menu", null]), Clazz_newArray(-1, ["animModeMenu", "onceThrough palindrome loop"]), Clazz_newArray(-1, ["surfaceMenu", "surfDots surfVDW surfSolventAccessible14 surfSolvent14 surfMolecular surf2MEP surfMEP surfMoComputedMenuText - surfOpaque surfTranslucent surfOff"]), Clazz_newArray(-1, ["FILEUNITMenu", "SYMMETRYShowComputedMenu FILEMOLload FILEUNITone FILEUNITnine FILEUNITnineRestricted FILEUNITninePoly"]), Clazz_newArray(-1, ["[set_axes]Menu", "on off#axes dotted - byPixelMenu byAngstromMenu"]), Clazz_newArray(-1, ["[set_boundbox]Menu", null]), Clazz_newArray(-1, ["[set_UNITCELL]Menu", null]), Clazz_newArray(-1, ["byPixelMenu", "1p 3p 5p 10p"]), Clazz_newArray(-1, ["byAngstromMenu", "10a 20a 25a 50a 100a"]), Clazz_newArray(-1, ["aboutMenu", "jmolMenu systemMenu"]), Clazz_newArray(-1, ["jmolMenu", "APPLETid version date - help - mouse translations jmolorg"]), Clazz_newArray(-1, ["systemMenu", "os javaVender javaVersion JAVAprocessors JAVAmemMax JAVAmemTotal"])]); +c$.structureContents = Clazz_newArray(-1, [ Clazz_newArray(-1, ["jmolorg", "show url \"http://www.jmol.org\""]), Clazz_newArray(-1, ["help", "help"]), Clazz_newArray(-1, ["mouse", "show url \"http://wiki.jmol.org/index.php/Mouse_Manual\""]), Clazz_newArray(-1, ["translations", "show url \"http://wiki.jmol.org/index.php/Internationalisation\""]), Clazz_newArray(-1, ["colorrasmolCB", ""]), Clazz_newArray(-1, ["hideNotSelectedCB", "set hideNotSelected true | set hideNotSelected false; hide(none)"]), Clazz_newArray(-1, ["perspectiveDepthCB", ""]), Clazz_newArray(-1, ["showAxesCB", "set showAxes true | set showAxes false;set axesMolecular"]), Clazz_newArray(-1, ["showBoundBoxCB", ""]), Clazz_newArray(-1, ["showHydrogensCB", ""]), Clazz_newArray(-1, ["showMeasurementsCB", ""]), Clazz_newArray(-1, ["showSelectionsCB", ""]), Clazz_newArray(-1, ["showUNITCELLCB", ""]), Clazz_newArray(-1, ["selectAll", "SELECT all"]), Clazz_newArray(-1, ["selectNone", "SELECT none"]), Clazz_newArray(-1, ["invertSelection", "SELECT not selected"]), Clazz_newArray(-1, ["allProtein", "SELECT protein"]), Clazz_newArray(-1, ["proteinBackbone", "SELECT protein and backbone"]), Clazz_newArray(-1, ["proteinSideChains", "SELECT protein and not backbone"]), Clazz_newArray(-1, ["polar", "SELECT protein and polar"]), Clazz_newArray(-1, ["nonpolar", "SELECT protein and not polar"]), Clazz_newArray(-1, ["positiveCharge", "SELECT protein and basic"]), Clazz_newArray(-1, ["negativeCharge", "SELECT protein and acidic"]), Clazz_newArray(-1, ["noCharge", "SELECT protein and not (acidic,basic)"]), Clazz_newArray(-1, ["allCarbo", "SELECT carbohydrate"]), Clazz_newArray(-1, ["allNucleic", "SELECT nucleic"]), Clazz_newArray(-1, ["DNA", "SELECT dna"]), Clazz_newArray(-1, ["RNA", "SELECT rna"]), Clazz_newArray(-1, ["nucleicBackbone", "SELECT nucleic and backbone"]), Clazz_newArray(-1, ["nucleicBases", "SELECT nucleic and not backbone"]), Clazz_newArray(-1, ["atPairs", "SELECT a,t"]), Clazz_newArray(-1, ["gcPairs", "SELECT g,c"]), Clazz_newArray(-1, ["auPairs", "SELECT a,u"]), Clazz_newArray(-1, ["A", "SELECT a"]), Clazz_newArray(-1, ["C", "SELECT c"]), Clazz_newArray(-1, ["G", "SELECT g"]), Clazz_newArray(-1, ["T", "SELECT t"]), Clazz_newArray(-1, ["U", "SELECT u"]), Clazz_newArray(-1, ["allHetero", "SELECT hetero"]), Clazz_newArray(-1, ["Solvent", "SELECT solvent"]), Clazz_newArray(-1, ["Water", "SELECT water"]), Clazz_newArray(-1, ["nonWaterSolvent", "SELECT solvent and not water"]), Clazz_newArray(-1, ["exceptWater", "SELECT hetero and not water"]), Clazz_newArray(-1, ["Ligand", "SELECT ligand"]), Clazz_newArray(-1, ["PDBnoneOfTheAbove", "SELECT not(hetero,protein,nucleic,carbohydrate)"]), Clazz_newArray(-1, ["best", "rotate best -1.0"]), Clazz_newArray(-1, ["front", J.popup.MainPopupResourceBundle.Box("moveto 2.0 front;delay 1")]), Clazz_newArray(-1, ["left", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 left;delay 1")]), Clazz_newArray(-1, ["right", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 right;delay 1")]), Clazz_newArray(-1, ["top", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 top;delay 1")]), Clazz_newArray(-1, ["bottom", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 bottom;delay 1")]), Clazz_newArray(-1, ["back", J.popup.MainPopupResourceBundle.Box("moveto 1.0 front;moveto 2.0 back;delay 1")]), Clazz_newArray(-1, ["axisA", "moveto axis a"]), Clazz_newArray(-1, ["axisB", "moveto axis b"]), Clazz_newArray(-1, ["axisC", "moveto axis c"]), Clazz_newArray(-1, ["axisX", "moveto axis x"]), Clazz_newArray(-1, ["axisY", "moveto axis y"]), Clazz_newArray(-1, ["axisZ", "moveto axis z"]), Clazz_newArray(-1, ["renderCpkSpacefill", "restrict bonds not selected;select not selected;spacefill 100%;color cpk"]), Clazz_newArray(-1, ["renderBallAndStick", "restrict bonds not selected;select not selected;spacefill 23%AUTO;wireframe 0.15;color cpk"]), Clazz_newArray(-1, ["renderSticks", "restrict bonds not selected;select not selected;wireframe 0.3;color cpk"]), Clazz_newArray(-1, ["renderWireframe", "restrict bonds not selected;select not selected;wireframe on;color cpk"]), Clazz_newArray(-1, ["PDBrenderCartoonsOnly", "restrict bonds not selected;select not selected;cartoons on;color structure"]), Clazz_newArray(-1, ["PDBrenderTraceOnly", "restrict bonds not selected;select not selected;trace on;color structure"]), Clazz_newArray(-1, ["atomNone", "cpk off"]), Clazz_newArray(-1, ["atom15", "cpk 15%"]), Clazz_newArray(-1, ["atom20", "cpk 20%"]), Clazz_newArray(-1, ["atom25", "cpk 25%"]), Clazz_newArray(-1, ["atom50", "cpk 50%"]), Clazz_newArray(-1, ["atom75", "cpk 75%"]), Clazz_newArray(-1, ["atom100", "cpk on"]), Clazz_newArray(-1, ["bondNone", "wireframe off"]), Clazz_newArray(-1, ["bondWireframe", "wireframe on"]), Clazz_newArray(-1, ["bond100", "wireframe .1"]), Clazz_newArray(-1, ["bond150", "wireframe .15"]), Clazz_newArray(-1, ["bond200", "wireframe .2"]), Clazz_newArray(-1, ["bond250", "wireframe .25"]), Clazz_newArray(-1, ["bond300", "wireframe .3"]), Clazz_newArray(-1, ["hbondCalc", "hbonds calculate"]), Clazz_newArray(-1, ["hbondNone", "hbonds off"]), Clazz_newArray(-1, ["hbondWireframe", "hbonds on"]), Clazz_newArray(-1, ["PDBhbondSidechain", "set hbonds sidechain"]), Clazz_newArray(-1, ["PDBhbondBackbone", "set hbonds backbone"]), Clazz_newArray(-1, ["hbond100", "hbonds .1"]), Clazz_newArray(-1, ["hbond150", "hbonds .15"]), Clazz_newArray(-1, ["hbond200", "hbonds .2"]), Clazz_newArray(-1, ["hbond250", "hbonds .25"]), Clazz_newArray(-1, ["hbond300", "hbonds .3"]), Clazz_newArray(-1, ["ssbondNone", "ssbonds off"]), Clazz_newArray(-1, ["ssbondWireframe", "ssbonds on"]), Clazz_newArray(-1, ["PDBssbondSidechain", "set ssbonds sidechain"]), Clazz_newArray(-1, ["PDBssbondBackbone", "set ssbonds backbone"]), Clazz_newArray(-1, ["ssbond100", "ssbonds .1"]), Clazz_newArray(-1, ["ssbond150", "ssbonds .15"]), Clazz_newArray(-1, ["ssbond200", "ssbonds .2"]), Clazz_newArray(-1, ["ssbond250", "ssbonds .25"]), Clazz_newArray(-1, ["ssbond300", "ssbonds .3"]), Clazz_newArray(-1, ["structureNone", "backbone off;cartoons off;ribbons off;rockets off;strands off;trace off;"]), Clazz_newArray(-1, ["backbone", "restrict not selected;select not selected;backbone 0.3"]), Clazz_newArray(-1, ["cartoon", "restrict not selected;select not selected;set cartoonRockets false;cartoons on"]), Clazz_newArray(-1, ["cartoonRockets", "restrict not selected;select not selected;set cartoonRockets;cartoons on"]), Clazz_newArray(-1, ["ribbons", "restrict not selected;select not selected;ribbons on"]), Clazz_newArray(-1, ["rockets", "restrict not selected;select not selected;rockets on"]), Clazz_newArray(-1, ["strands", "restrict not selected;select not selected;strands on"]), Clazz_newArray(-1, ["trace", "restrict not selected;select not selected;trace 0.3"]), Clazz_newArray(-1, ["vibrationOff", "vibration off"]), Clazz_newArray(-1, ["vibrationOn", "vibration on"]), Clazz_newArray(-1, ["vibration20", "vibrationScale *= 2"]), Clazz_newArray(-1, ["vibration05", "vibrationScale /= 2"]), Clazz_newArray(-1, ["vectorOff", "vectors off"]), Clazz_newArray(-1, ["vectorOn", "vectors on"]), Clazz_newArray(-1, ["vector3", "vectors 3"]), Clazz_newArray(-1, ["vector005", "vectors 0.05"]), Clazz_newArray(-1, ["vector01", "vectors 0.1"]), Clazz_newArray(-1, ["vectorScale02", "vector scale 0.2"]), Clazz_newArray(-1, ["vectorScale05", "vector scale 0.5"]), Clazz_newArray(-1, ["vectorScale1", "vector scale 1"]), Clazz_newArray(-1, ["vectorScale2", "vector scale 2"]), Clazz_newArray(-1, ["vectorScale5", "vector scale 5"]), Clazz_newArray(-1, ["stereoNone", "stereo off"]), Clazz_newArray(-1, ["stereoRedCyan", "stereo redcyan 3"]), Clazz_newArray(-1, ["stereoRedBlue", "stereo redblue 3"]), Clazz_newArray(-1, ["stereoRedGreen", "stereo redgreen 3"]), Clazz_newArray(-1, ["stereoCrossEyed", "stereo -5"]), Clazz_newArray(-1, ["stereoWallEyed", "stereo 5"]), Clazz_newArray(-1, ["labelNone", "label off"]), Clazz_newArray(-1, ["labelSymbol", "label %e"]), Clazz_newArray(-1, ["labelName", "label %a"]), Clazz_newArray(-1, ["labelNumber", "label %i"]), Clazz_newArray(-1, ["labelCentered", "set labeloffset 0 0"]), Clazz_newArray(-1, ["labelUpperRight", "set labeloffset 4 4"]), Clazz_newArray(-1, ["labelLowerRight", "set labeloffset 4 -4"]), Clazz_newArray(-1, ["labelUpperLeft", "set labeloffset -4 4"]), Clazz_newArray(-1, ["labelLowerLeft", "set labeloffset -4 -4"]), Clazz_newArray(-1, ["zoom50", "zoom 50"]), Clazz_newArray(-1, ["zoom100", "zoom 100"]), Clazz_newArray(-1, ["zoom150", "zoom 150"]), Clazz_newArray(-1, ["zoom200", "zoom 200"]), Clazz_newArray(-1, ["zoom400", "zoom 400"]), Clazz_newArray(-1, ["zoom800", "zoom 800"]), Clazz_newArray(-1, ["zoomIn", "move 0 0 0 40 0 0 0 0 1"]), Clazz_newArray(-1, ["zoomOut", "move 0 0 0 -40 0 0 0 0 1"]), Clazz_newArray(-1, ["spinOn", "spin on"]), Clazz_newArray(-1, ["spinOff", "spin off"]), Clazz_newArray(-1, ["s0", "0"]), Clazz_newArray(-1, ["s5", "5"]), Clazz_newArray(-1, ["s10", "10"]), Clazz_newArray(-1, ["s20", "20"]), Clazz_newArray(-1, ["s30", "30"]), Clazz_newArray(-1, ["s40", "40"]), Clazz_newArray(-1, ["s50", "50"]), Clazz_newArray(-1, ["onceThrough", "anim mode once#"]), Clazz_newArray(-1, ["palindrome", "anim mode palindrome#"]), Clazz_newArray(-1, ["loop", "anim mode loop#"]), Clazz_newArray(-1, ["play", "anim play#"]), Clazz_newArray(-1, ["pause", "anim pause#"]), Clazz_newArray(-1, ["resume", "anim resume#"]), Clazz_newArray(-1, ["stop", "anim off#"]), Clazz_newArray(-1, ["nextframe", "frame next#"]), Clazz_newArray(-1, ["prevframe", "frame prev#"]), Clazz_newArray(-1, ["playrev", "anim playrev#"]), Clazz_newArray(-1, ["rewind", "anim rewind#"]), Clazz_newArray(-1, ["restart", "anim on#"]), Clazz_newArray(-1, ["animfps5", "anim fps 5#"]), Clazz_newArray(-1, ["animfps10", "anim fps 10#"]), Clazz_newArray(-1, ["animfps20", "anim fps 20#"]), Clazz_newArray(-1, ["animfps30", "anim fps 30#"]), Clazz_newArray(-1, ["animfps50", "anim fps 50#"]), Clazz_newArray(-1, ["measureOff", "set pickingstyle MEASURE OFF; set picking OFF"]), Clazz_newArray(-1, ["measureDistance", "set pickingstyle MEASURE; set picking MEASURE DISTANCE"]), Clazz_newArray(-1, ["measureAngle", "set pickingstyle MEASURE; set picking MEASURE ANGLE"]), Clazz_newArray(-1, ["measureTorsion", "set pickingstyle MEASURE; set picking MEASURE TORSION"]), Clazz_newArray(-1, ["PDBmeasureSequence", "set pickingstyle MEASURE; set picking MEASURE SEQUENCE"]), Clazz_newArray(-1, ["measureDelete", "measure delete"]), Clazz_newArray(-1, ["measureList", "console on;show measurements"]), Clazz_newArray(-1, ["distanceNanometers", "select *; set measure nanometers"]), Clazz_newArray(-1, ["distanceAngstroms", "select *; set measure angstroms"]), Clazz_newArray(-1, ["distancePicometers", "select *; set measure picometers"]), Clazz_newArray(-1, ["distanceHz", "select *; set measure hz"]), Clazz_newArray(-1, ["pickOff", "set picking off"]), Clazz_newArray(-1, ["pickCenter", "set picking center"]), Clazz_newArray(-1, ["pickIdent", "set picking ident"]), Clazz_newArray(-1, ["pickLabel", "set picking label"]), Clazz_newArray(-1, ["pickAtom", "set picking atom"]), Clazz_newArray(-1, ["dragAtom", "set picking dragAtom"]), Clazz_newArray(-1, ["dragMolecule", "set picking dragMolecule"]), Clazz_newArray(-1, ["PDBpickChain", "set picking chain"]), Clazz_newArray(-1, ["pickElement", "set picking element"]), Clazz_newArray(-1, ["modelKitMode", "set modelKitMode"]), Clazz_newArray(-1, ["PDBpickGroup", "set picking group"]), Clazz_newArray(-1, ["pickMolecule", "set picking molecule"]), Clazz_newArray(-1, ["SYMMETRYpickSite", "set picking site"]), Clazz_newArray(-1, ["pickSpin", "set picking spin"]), Clazz_newArray(-1, ["SYMMETRYpickSymmetry", "set picking symmetry"]), Clazz_newArray(-1, ["showConsole", "console"]), Clazz_newArray(-1, ["JSConsole", "JSCONSOLE"]), Clazz_newArray(-1, ["showFile", "console on;show file"]), Clazz_newArray(-1, ["showFileHeader", "console on;getProperty FileHeader"]), Clazz_newArray(-1, ["showHistory", "console on;show history"]), Clazz_newArray(-1, ["showIsosurface", "console on;show isosurface"]), Clazz_newArray(-1, ["showMeasure", "console on;show measure"]), Clazz_newArray(-1, ["showMo", "console on;show mo"]), Clazz_newArray(-1, ["showModel", "console on;show model"]), Clazz_newArray(-1, ["showOrient", "console on;show orientation"]), Clazz_newArray(-1, ["showSpacegroup", "console on;show spacegroup"]), Clazz_newArray(-1, ["showState", "console on;show state"]), Clazz_newArray(-1, ["reload", "load \"\""]), Clazz_newArray(-1, ["SIGNEDloadPdb", JV.JC.getMenuScript("openPDB")]), Clazz_newArray(-1, ["SIGNEDloadMol", JV.JC.getMenuScript("openMOL")]), Clazz_newArray(-1, ["SIGNEDloadFile", "load ?"]), Clazz_newArray(-1, ["SIGNEDloadUrl", "load http://?"]), Clazz_newArray(-1, ["SIGNEDloadFileUnitCell", "load ? {1 1 1}"]), Clazz_newArray(-1, ["SIGNEDloadScript", "script ?.spt"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureRock", "animation mode loop;capture '?Jmol.gif' rock y 10"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureSpin", "animation mode loop;capture '?Jmol.gif' spin y"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureBegin", "capture '?Jmol.gif'"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureEnd", "capture ''"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureOff", "capture off"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureOn", "capture on"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureFpsSPECIAL", "animation fps @{0+prompt('Capture replay frames per second?', animationFPS)};prompt 'animation FPS ' + animationFPS"]), Clazz_newArray(-1, ["SIGNEDJAVAcaptureLoopingSPECIAL", "animation mode @{(animationMode=='ONCE' ? 'LOOP':'ONCE')};prompt 'animation MODE ' + animationMode"]), Clazz_newArray(-1, ["writeFileTextVARIABLE", "if (_applet && !_signedApplet) { console;show file } else { write file \"?FILE?\"}"]), Clazz_newArray(-1, ["writeState", "if (_applet && !_signedApplet) { console;show state } else { write state \"?FILEROOT?.spt\"}"]), Clazz_newArray(-1, ["writeHistory", "if (_applet && !_signedApplet) { console;show history } else { write history \"?FILEROOT?.his\"}"]), Clazz_newArray(-1, ["SIGNEDwriteJmol", "write PNGJ \"?FILEROOT?.png\""]), Clazz_newArray(-1, ["SIGNEDwriteIsosurface", "write isosurface \"?FILEROOT?.jvxl\""]), Clazz_newArray(-1, ["SIGNEDNOGLwriteGif", "write image \"?FILEROOT?.gif\""]), Clazz_newArray(-1, ["SIGNEDNOGLwriteJpg", "write image \"?FILEROOT?.jpg\""]), Clazz_newArray(-1, ["SIGNEDNOGLwritePng", "write image \"?FILEROOT?.png\""]), Clazz_newArray(-1, ["SIGNEDNOGLwritePngJmol", "write PNGJ \"?FILEROOT?.png\""]), Clazz_newArray(-1, ["SIGNEDNOGLwritePovray", "write POVRAY \"?FILEROOT?.pov\""]), Clazz_newArray(-1, ["SIGNEDNOGLwriteVrml", "write VRML \"?FILEROOT?.wrl\""]), Clazz_newArray(-1, ["SIGNEDNOGLwriteX3d", "write X3D \"?FILEROOT?.x3d\""]), Clazz_newArray(-1, ["SIGNEDNOGLwriteSTL", "write STL \"?FILEROOT?.stl\""]), Clazz_newArray(-1, ["SIGNEDNOGLwriteIdtf", "write IDTF \"?FILEROOT?.idtf\""]), Clazz_newArray(-1, ["SIGNEDNOGLwriteMaya", "write MAYA \"?FILEROOT?.ma\""]), Clazz_newArray(-1, ["SYMMETRYshowSymmetry", "console on;show symmetry"]), Clazz_newArray(-1, ["UNITCELLshow", "console on;show unitcell"]), Clazz_newArray(-1, ["extractMOL", "console on;getproperty extractModel \"visible\" "]), Clazz_newArray(-1, ["minimize", "minimize"]), Clazz_newArray(-1, ["modelkit", "set modelkitmode"]), Clazz_newArray(-1, ["surfDots", "dots on"]), Clazz_newArray(-1, ["surfVDW", "isosurface delete resolution 0 solvent 0 translucent"]), Clazz_newArray(-1, ["surfMolecular", "isosurface delete resolution 0 molecular translucent"]), Clazz_newArray(-1, ["surfSolvent14", "isosurface delete resolution 0 solvent 1.4 translucent"]), Clazz_newArray(-1, ["surfSolventAccessible14", "isosurface delete resolution 0 sasurface 1.4 translucent"]), Clazz_newArray(-1, ["surfMEP", "isosurface delete resolution 0 vdw color range all map MEP translucent"]), Clazz_newArray(-1, ["surf2MEP", "isosurface delete resolution 0 vdw color range -0.1 0.1 map MEP translucent"]), Clazz_newArray(-1, ["surfOpaque", "mo opaque;isosurface opaque"]), Clazz_newArray(-1, ["surfTranslucent", "mo translucent;isosurface translucent"]), Clazz_newArray(-1, ["surfOff", "mo delete;isosurface delete;var ~~sel = {selected};select *;dots off;select ~~sel"]), Clazz_newArray(-1, ["FILEMOLload", "save orientation;load \"\";restore orientation;center"]), Clazz_newArray(-1, ["FILEUNITone", "save orientation;load \"\" {1 1 1} ;restore orientation;center"]), Clazz_newArray(-1, ["FILEUNITnine", "save orientation;load \"\" {444 666 1} ;restore orientation;center"]), Clazz_newArray(-1, ["FILEUNITnineRestricted", "save orientation;load \"\" {444 666 1} ;restore orientation; unitcell on; display cell=555;center visible;zoom 200"]), Clazz_newArray(-1, ["FILEUNITninePoly", "save orientation;load \"\" {444 666 1} ;restore orientation; unitcell on; display cell=555; polyhedra 4,6 (displayed);center (visible);zoom 200"]), Clazz_newArray(-1, ["1p", "on"]), Clazz_newArray(-1, ["3p", "3"]), Clazz_newArray(-1, ["5p", "5"]), Clazz_newArray(-1, ["10p", "10"]), Clazz_newArray(-1, ["10a", "0.1"]), Clazz_newArray(-1, ["20a", "0.20"]), Clazz_newArray(-1, ["25a", "0.25"]), Clazz_newArray(-1, ["50a", "0.50"]), Clazz_newArray(-1, ["100a", "1.0"])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.popup"); +Clazz_declareInterface(J.popup, "PopupHelper"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.popup"); +Clazz_load(null, "J.popup.PopupResource", ["java.io.BufferedReader", "$.StringReader", "java.util.Properties", "JU.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.structure = null; +this.words = null; +Clazz_instantialize(this, arguments);}, J.popup, "PopupResource", null); +Clazz_makeConstructor(c$, +function(menuStructure, menuText){ +this.structure = new java.util.Properties(); +this.words = new java.util.Properties(); +this.buildStructure(menuStructure); +this.localize(menuStructure != null, menuText); +}, "~S,java.util.Properties"); +Clazz_defineMethod(c$, "getStructure", +function(key){ +return this.structure.getProperty(key); +}, "~S"); +Clazz_defineMethod(c$, "getWord", +function(key){ +var str = this.words.getProperty(key); +return (str == null ? key : str); +}, "~S"); +Clazz_defineMethod(c$, "setStructure", +function(slist, gt){ +var br = new java.io.BufferedReader( new java.io.StringReader(slist)); +var line; +var pt; +try { +while ((line = br.readLine()) != null) { +if (line.length == 0 || line.charAt(0) == '#') continue; +pt = line.indexOf("="); +if (pt < 0) { +pt = line.length; +line += "="; +}var name = line.substring(0, pt).trim(); +var value = line.substring(pt + 1).trim(); +var label = null; +if ((pt = name.indexOf("|")) >= 0) { +label = name.substring(pt + 1).trim(); +name = name.substring(0, pt).trim(); +}if (name.length == 0) continue; +if (value.length > 0) this.structure.setProperty(name, value); +if (label != null && label.length > 0) this.words.setProperty(name, (gt == null ? label : gt.translate(label))); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +try { +br.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~S,J.api.Translator"); +Clazz_defineMethod(c$, "addItems", +function(itemPairs){ +var previous = ""; +for (var i = 0; i < itemPairs.length; i++) { +var pair = itemPairs[i]; +var str = pair[1]; +if (str == null) str = previous; +previous = str; +this.structure.setProperty(pair[0], str); +} +}, "~A"); +Clazz_defineMethod(c$, "localize", +function(haveUserMenu, menuText){ +var wordContents = this.getWordContents(); +for (var i = 0; i < wordContents.length; i++) { +var item = wordContents[i++]; +var word = this.words.getProperty(item); +if (word == null) word = wordContents[i]; +this.words.setProperty(item, word); +if (menuText != null && item.indexOf("Text") >= 0) menuText.setProperty(item, word); +} +}, "~B,java.util.Properties"); +Clazz_defineMethod(c$, "getStuctureAsText", +function(title, menuContents, structureContents){ +return "# " + this.getMenuName() + ".mnu " + title + "\n\n" + "# Part I -- Menu Structure\n" + "# ------------------------\n\n" + this.dumpStructure(menuContents) + "\n\n" + "# Part II -- Key Definitions\n" + "# --------------------------\n\n" + this.dumpStructure(structureContents) + "\n\n" + "# Part III -- Word Translations\n" + "# -----------------------------\n\n" + this.dumpWords(); +}, "~S,~A,~A"); +Clazz_defineMethod(c$, "dumpWords", +function(){ +var wordContents = this.getWordContents(); +var s = new JU.SB(); +for (var i = 0; i < wordContents.length; i++) { +var key = wordContents[i++]; +if (this.structure.getProperty(key) == null) s.append(key).append(" | ").append(wordContents[i]).appendC('\n'); +} +return s.toString(); +}); +Clazz_defineMethod(c$, "dumpStructure", +function(items){ +var previous = ""; +var s = new JU.SB(); +for (var i = 0; i < items.length; i++) { +var key = items[i][0]; +var label = this.words.getProperty(key); +if (label != null) key += " | " + label; +s.append(key).append(" = ").append(items[i][1] == null ? previous : (previous = items[i][1])).appendC('\n'); +} +return s.toString(); +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(["J.popup.JmolPopup"], "J.awtjs2d.JSJmolPopup", ["J.awtjs2d.JSPopupHelper"], function(){ +var c$ = Clazz_declareType(J.awtjs2d, "JSJmolPopup", J.popup.JmolPopup); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.awtjs2d.JSJmolPopup, []); +this.helper = new J.awtjs2d.JSPopupHelper(this); +}); +Clazz_overrideMethod(c$, "menuShowPopup", +function(popup, x, y){ +try { +(popup).show(this.isTainted ? this.vwr.html5Applet : null, x, y); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.isTainted = false; +}, "J.api.SC,~N,~N"); +Clazz_overrideMethod(c$, "getUnknownCheckBoxScriptToRun", +function(item, name, what, TF){ +return null; +}, "J.api.SC,~S,~S,~B"); +Clazz_overrideMethod(c$, "getImageIcon", +function(fileName){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "menuFocusCallback", +function(name, actionCommand, b){ +}, "~S,~S,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.awtjs2d"); +Clazz_load(["J.popup.PopupHelper"], "J.awtjs2d.JSPopupHelper", ["JS.ButtonGroup", "$.JCheckBoxMenuItem", "$.JMenu", "$.JMenuItem", "$.JPopupMenu", "$.JRadioButtonMenuItem"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.popup = null; +this.buttonGroup = null; +Clazz_instantialize(this, arguments);}, J.awtjs2d, "JSPopupHelper", null, J.popup.PopupHelper); +Clazz_makeConstructor(c$, +function(popup){ +this.popup = popup; +}, "J.popup.GenericPopup"); +Clazz_overrideMethod(c$, "menuCreatePopup", +function(name, applet){ +var j = new JS.JPopupMenu(name); +j.setInvoker(applet); +return j; +}, "~S,~O"); +Clazz_overrideMethod(c$, "getMenu", +function(name){ +var jm = new JS.JMenu(); +jm.setName(name); +return jm; +}, "~S"); +Clazz_overrideMethod(c$, "getMenuItem", +function(text){ +return new JS.JMenuItem(text); +}, "~S"); +Clazz_overrideMethod(c$, "getRadio", +function(name){ +return new JS.JRadioButtonMenuItem(); +}, "~S"); +Clazz_overrideMethod(c$, "getCheckBox", +function(name){ +return new JS.JCheckBoxMenuItem(); +}, "~S"); +Clazz_overrideMethod(c$, "menuAddButtonGroup", +function(item){ +if (item == null) { +if (this.buttonGroup != null && this.buttonGroup.getButtonCount() > 0) this.buttonGroup = null; +return; +}if (this.buttonGroup == null) this.buttonGroup = new JS.ButtonGroup(); +this.buttonGroup.add(item); +}, "J.api.SC"); +Clazz_overrideMethod(c$, "getItemType", +function(m){ +return (m).btnType; +}, "J.api.SC"); +Clazz_overrideMethod(c$, "menuInsertSubMenu", +function(menu, subMenu, index){ +(subMenu).setParent(menu); +}, "J.api.SC,J.api.SC,~N"); +Clazz_overrideMethod(c$, "getSwingComponent", +function(component){ +return component; +}, "~O"); +Clazz_overrideMethod(c$, "menuClearListeners", +function(menu){ +if (menu != null) (menu).disposeMenu(); +}, "J.api.SC"); +Clazz_defineMethod(c$, "itemStateChanged", +function(e){ +if (this.popup != null) this.popup.menuCheckBoxCallback(e.getSource()); +}, "java.awt.event.ItemEvent"); +Clazz_defineMethod(c$, "actionPerformed", +function(e){ +if (this.popup != null) this.popup.menuClickCallback(e.getSource(), e.getActionCommand()); +}, "java.awt.event.ActionEvent"); +Clazz_overrideMethod(c$, "getButtonGroup", +function(){ +return this.buttonGroup; +}); +Clazz_defineMethod(c$, "handleEvent", +function(e){ +var type = "" + e.getID(); +if (type === "mouseenter") this.mouseEntered(e); + else if (type === "mouseleave") this.mouseExited(e); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseEntered", +function(e){ +var jmi = e.getSource(); +this.popup.menuFocusCallback(jmi.getName(), jmi.getActionCommand(), true); +}, "java.awt.event.MouseEvent"); +Clazz_defineMethod(c$, "mouseExited", +function(e){ +var jmi = e.getSource(); +this.popup.menuFocusCallback(jmi.getName(), jmi.getActionCommand(), false); +}, "java.awt.event.MouseEvent"); +Clazz_overrideMethod(c$, "dispose", +function(popupMenu){ +this.menuClearListeners(popupMenu); +this.popup = null; +}, "J.api.SC"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coremenu.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coremenu.z.js new file mode 100755 index 000000000000..7785b795e35a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coremenu.z.js @@ -0,0 +1,146 @@ +(function(C,D,E,F,u,G,p,H,q,r,s,I,K,v,L,w,M,N,y,x,A,O,B,P,Q,R,S,a,T,U,z,V,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,c,f){p("J.popup");q(["J.api.GenericMenuInterface","java.util.Hashtable","JU.Lst"],"J.popup.GenericPopup",["java.util.StringTokenizer","JU.PT","$.SB","JU.Logger"],function(){var b=s(function(){this.strMenuStructure=this.helper=null;this.isWebGL=this.isSigned=this.isApplet=this.isJS=this.allowSignedFeatures=!1;this.thisy=this.thisx=0;this.isTainted=!0;this.SignedOnly= +this.htMenus=this.currentMenuItemId=this.buttonGroup=this.htCheckbox=this.thisPopup=this.popupMenu=this.menuName=null;this.updatingForShow=!1;r(this,arguments)},J.popup,"GenericPopup",null,J.api.GenericMenuInterface);x(b,function(){this.htCheckbox=new java.util.Hashtable;this.htMenus=new java.util.Hashtable;this.SignedOnly=new JU.Lst});c(b,"appCheckItem",function(){},"~S,J.api.SC");c(b,"appCheckSpecialMenu",function(){},"~S,J.api.SC,~S");c(b,"initSwing",function(h,a,d,l,e,b){this.isJS=l;this.isApplet= +null!=d;this.isSigned=e;this.isWebGL=b;this.allowSignedFeatures=!this.isApplet||e;this.menuName=h;this.thisPopup=this.popupMenu=this.helper.menuCreatePopup(h,d);this.htMenus.put(h,this.popupMenu);this.addMenuItems("",h,this.popupMenu,a)},"~S,J.popup.PopupResource,~O,~B,~B,~B");c(b,"addMenuItems",function(h,a,d,l){h=h+"."+a;var e=l.getStructure(a);JU.Logger.debugging&&JU.Logger.debug(h+" --- "+e);if(null==e)this.menuCreateItem(d,"#"+a,"","");else{a=new java.util.StringTokenizer(e);for(var b;0<=e.indexOf("@");){for(e= +"";a.hasMoreTokens();)e+=" "+((b=a.nextToken()).startsWith("@")?l.getStructure(b):b);e=e.substring(1);a=new java.util.StringTokenizer(e)}for(;a.hasMoreTokens();)if(b=a.nextToken(),this.checkKey(b))if("-".equals(b))this.menuAddSeparator(d),this.helper.menuAddButtonGroup(null);else if(",".equals(b))this.menuAddSeparator(d);else{var e=l.getWord(b),c=null,c="",f=!1,e=this.appFixLabel(null==e?b:e);if(!e.equals("null")){if(0<=b.indexOf("Menu")){0>b.indexOf("more")&&this.helper.menuAddButtonGroup(null); +var n=this.menuNewSubMenu(e,h+"."+b);this.menuAddSubMenu(d,n);this.addMenu(h,b,n,e,l);c=n}else if(b.endsWith("Checkbox")||(f=b.endsWith("CB")||b.endsWith("RD"))){c=l.getStructure(b);n=b.substring(0,b.length-(!f?8:2));f=f&&b.endsWith("RD");if(null==c||0==c.length&&!f)c="set "+n+" T/F";c=this.menuCreateCheckboxItem(d,e,n+":"+c,h+"."+b,!1,f);this.rememberCheckbox(n,c);f&&this.helper.menuAddButtonGroup(c)}else c=l.getStructure(b),null==c&&(c=b),c=this.menuCreateItem(d,e,c,h+"."+b);this.htMenus.put(b, +c);b.startsWith("SIGNED")&&(this.SignedOnly.addLast(c),this.allowSignedFeatures||this.menuEnable(c,!1));this.appCheckItem(b,c)}}}},"~S,~S,J.api.SC,J.popup.PopupResource");c(b,"addMenu",function(h,a,d,l,b){0>a.indexOf("Computed")&&this.addMenuItems(h,a,d,b);this.appCheckSpecialMenu(a,d,l)},"~S,~S,J.api.SC,~S,J.popup.PopupResource");c(b,"updateSignedAppletItems",function(){for(var h=this.SignedOnly.size();0<=--h;)this.menuEnable(this.SignedOnly.get(h),this.allowSignedFeatures)});c(b,"checkKey",function(h){return 0> +h.indexOf(this.isApplet?"JAVA":"APPLET")&&(!this.isWebGL||0>h.indexOf("NOGL"))},"~S");c(b,"rememberCheckbox",function(h,a){this.htCheckbox.put(h+"::"+this.htCheckbox.size(),a)},"~S,J.api.SC");c(b,"updateButton",function(h,g,d){g=a(-1,[g]);var l=this.getEntryIcon(g);g=g[0];h.init(g,l,d,this.thisPopup);this.isTainted=!0},"J.api.SC,~S,~S");c(b,"getEntryIcon",function(h){var a=h[0];if(!a.startsWith("<"))return null;var d=a.indexOf(">");h[0]=a.substring(d+1);h=a.substring(1,d);return this.getImageIcon(h)}, +"~A");c(b,"addMenuItem",function(h,a){return this.menuCreateItem(h,a,"",null)},"J.api.SC,~S");c(b,"menuSetLabel",function(h,a){null!=h&&(h.setText(a),this.isTainted=!0)},"J.api.SC,~S");c(b,"menuClickCallback",function(h,a){this.doMenuClickCallback(h,a)},"J.api.SC,~S");c(b,"doMenuClickCallback",function(h,a){this.appRestorePopupMenu();if(!(null==a||0==a.length))if(a.equals("MAIN"))this.show(this.thisx,this.thisy,!0);else{var d=this.menuGetId(h);null!=d&&(a=this.getScriptForCallback(h,d,a),this.currentMenuItemId= +d);null!=a&&this.appRunScript(a)}},"J.api.SC,~S");c(b,"menuCheckBoxCallback",function(h){this.doMenuCheckBoxCallback(h)},"J.api.SC");c(b,"doMenuCheckBoxCallback",function(h){this.appRestorePopupMenu();var a=h.isSelected(),d=h.getActionCommand();this.runCheckBoxScript(h,d,a);this.appUpdateSpecialCheckBoxValue(h,d,a);this.isTainted=!0;h=this.menuGetId(h);null!=h&&(this.currentMenuItemId=h)},"J.api.SC");c(b,"runCheckBoxScript",function(h,a,d){if(h.isEnabled()){if(0>a.indexOf("##")){var l=a.indexOf(":"); +if(0>l){JU.Logger.error("check box "+h+" IS "+a);return}var b=a.substring(0,l);if(this.appRunSpecialCheckBox(h,b,a,d))return;a=a.substring(l+1);if(0<=(l=a.indexOf("|")))a=(d?a.substring(0,l):a.substring(l+1)).trim();a=JU.PT.rep(a,"T/F",d?" TRUE":" FALSE")}this.appRunScript(a)}},"J.api.SC,~S,~B");c(b,"menuCreateItem",function(h,a,d,l){var b=this.helper.getMenuItem(a);b.addActionListener(this.helper);return this.newMenuItem(b,h,a,d,l)},"J.api.SC,~S,~S,~S");c(b,"menuCreateCheckboxItem",function(h,a, +d,b,e,c){c=c?this.helper.getRadio(a):this.helper.getCheckBox(a);c.setSelected(e);c.addItemListener(this.helper);return this.newMenuItem(c,h,a,d,b)},"J.api.SC,~S,~S,~S,~B,~B");c(b,"menuAddSeparator",function(h){h.add(this.helper.getMenuItem(null));this.isTainted=!0},"J.api.SC");c(b,"menuNewSubMenu",function(h,a){var d=this.helper.getMenu(h);d.addMouseListener(this.helper);this.updateButton(d,h,null);d.setName(a);d.setAutoscrolls(!0);return d},"~S,~S");c(b,"menuRemoveAll",function(h,a){if(0>=a)h.removeAll(); +else for(var d=h.getComponentCount();--d>=a;)h.remove(d);this.isTainted=!0},"J.api.SC,~N");c(b,"newMenuItem",function(h,a,d,b,e){this.updateButton(h,d,b);h.addMouseListener(this.helper);h.setName(null==e?a.getName()+".":e);this.menuAddItem(a,h);return h},"J.api.SC,J.api.SC,~S,~S,~S");c(b,"setText",function(h,a){var d=this.htMenus.get(h);null!=d&&d.setText(a);return d},"~S,~S");c(b,"menuAddItem",function(h,a){h.add(a);this.isTainted=!0},"J.api.SC,J.api.SC");c(b,"menuAddSubMenu",function(h,a){a.addMouseListener(this.helper); +this.menuAddItem(h,a)},"J.api.SC,J.api.SC");c(b,"menuEnable",function(h,a){null==h||h.isEnabled()==a||h.setEnabled(a)},"J.api.SC,~B");c(b,"menuGetId",function(h){return h.getName()},"J.api.SC");c(b,"menuSetAutoscrolls",function(h){h.setAutoscrolls(!0);this.isTainted=!0},"J.api.SC");c(b,"menuGetListPosition",function(h){var a=h.getParent(),d;for(d=a.getComponentCount();0<=--d&&this.helper.getSwingComponent(a.getComponent(d))!==h;);return d},"J.api.SC");c(b,"show",function(h,a,d){this.appUpdateForShow(); +this.updateCheckBoxesForShow();d&&this.menuShowPopup(this.popupMenu,this.thisx,this.thisy)},"~N,~N,~B");c(b,"updateCheckBoxesForShow",function(){for(var h,a=this.htCheckbox.entrySet().iterator();a.hasNext()&&((h=a.next())||1);){var d=h.getKey(),b=h.getValue(),d=d.substring(0,d.indexOf(":")),d=this.appGetBooleanProperty(d),e=this.updatingForShow;this.updatingForShow=!0;b.isSelected()!=d&&(b.setSelected(d),this.isTainted=!0);this.updatingForShow=e}});f(b,"jpiGetMenuAsString",function(h){this.appUpdateForShow(); +var a=h.indexOf("|");if(0<=a){var d=h.substring(a);h=h.substring(0,a);if(0<=d.indexOf("current"))return h=new JU.SB,a=this.htMenus.get(this.menuName),this.menuGetAsText(h,0,a,"PopupMenu"),h.toString()}return this.appGetMenuAsString(h)},"~S");c(b,"appGetMenuAsString",function(){return null},"~S");c(b,"menuGetAsText",function(h,a,d,b){d=d.getComponents();for(var e=null,c=null,f=null,k="S",n=0;n=h&&(h+=524288);return u(h/1048576)},"~N");f(b,"jpiDispose",function(){this.popupMenu=this.thisPopup=null;this.helper.dispose(this.popupMenu);this.helper=null})});p("J.popup");q(["J.popup.GenericPopup","java.util.Properties"],"J.popup.JmolGenericPopup",["J.i18n.GT"], +function(){var a=s(function(){this.frankPopup=null;this.nFrankList=0;this.menuText=this.vwr=null;r(this,arguments)},J.popup,"JmolGenericPopup",J.popup.GenericPopup);x(a,function(){this.menuText=new java.util.Properties});f(a,"jpiInitialize",function(a,g){var d=J.i18n.GT.setDoTranslate(!0),b=this.getBundle(g);this.initialize(a,b,b.getMenuName());J.i18n.GT.setDoTranslate(d)},"J.api.PlatformViewer,~S");c(a,"initialize",function(a,g,d){this.vwr=a;this.initSwing(d,g,a.isJSNoAWT?a.html5Applet:null,a.isJSNoAWT, +a.getBooleanProperty("_signedApplet"),a.isWebGL)},"JV.Viewer,J.popup.PopupResource,~S");f(a,"jpiShow",function(a,g){this.vwr.haveDisplay&&(this.thisx=a,this.thisy=g,this.show(a,g,!1),0>a&&this.showFrankMenu()||(this.appRestorePopupMenu(),this.menuShowPopup(this.popupMenu,this.thisx,this.thisy)))},"~N,~N");c(a,"showFrankMenu",function(){return!0});c(a,"jpiDispose",function(){this.vwr=null;z(this,J.popup.JmolGenericPopup,"jpiDispose",[])});f(a,"jpiGetMenuAsObject",function(){return this.popupMenu}); +f(a,"appFixLabel",function(a){return a},"~S");f(a,"appGetBooleanProperty",function(a){return this.vwr.getBooleanProperty(a)},"~S");f(a,"appRunSpecialCheckBox",function(a,g,d,b){if(this.appGetBooleanProperty(g)==b)return!0;if(0>g.indexOf("mk")&&!g.endsWith("P!"))return!1;if(0<=g.indexOf("mk")||0<=g.indexOf("??"))d=this.getUnknownCheckBoxScriptToRun(a,g,d,b);else{if(!b)return!0;d="set picking "+g.substring(0,g.length-2)}null!=d&&this.appRunScript(d);return!0},"J.api.SC,~S,~S,~B");f(a,"appRestorePopupMenu", +function(){this.thisPopup=this.popupMenu});f(a,"appRunScript",function(a){this.vwr.evalStringGUI(a)},"~S")});p("J.popup");q(["J.popup.JmolGenericPopup","JU.Lst"],"J.popup.JmolPopup","java.util.Arrays $.Hashtable JU.PT J.i18n.GT JM.Group J.popup.MainPopupResourceBundle JU.Elements JV.JC".split(" "),function(){var b=s(function(){this.updateMode=0;this.titleWidthMax=20;this.currentFrankId=this.modelSetRoot=this.modelSetFileName=this.modelSetName=this.nullModelSetName=null;this.configurationSelected= +"";this.TemperatureOnly=this.ChargesOnly=this.SymmetryOnly=this.Special=this.VibrationOnly=this.FramesOnly=this.SingleModelOnly=this.UnitcellOnly=this.FileMolOnly=this.FileUnitOnly=this.PDBOnly=this.NotPDB=this.modelInfo=this.modelSetInfo=this.frankList=this.altlocs=null;this.isZapped=this.isVibration=this.isUnitCell=this.hasSymmetry=this.isPDB=this.isMultiFrame=this.isMultiConfiguration=this.isLastFrame=this.haveCharges=this.haveBFactors=this.fileHasUnitCell=!1;this.ac=this.modelCount=this.modelIndex= +0;this.noZapped=this.hnmrPeaks=this.cnmrPeaks=this.group3Counts=this.group3List=null;r(this,arguments)},J.popup,"JmolPopup",J.popup.JmolGenericPopup);x(b,function(){this.frankList=Array(10);this.NotPDB=new JU.Lst;this.PDBOnly=new JU.Lst;this.FileUnitOnly=new JU.Lst;this.FileMolOnly=new JU.Lst;this.UnitcellOnly=new JU.Lst;this.SingleModelOnly=new JU.Lst;this.FramesOnly=new JU.Lst;this.VibrationOnly=new JU.Lst;this.Special=new JU.Lst;this.SymmetryOnly=new JU.Lst;this.ChargesOnly=new JU.Lst;this.TemperatureOnly= +new JU.Lst;this.noZapped=a(-1,["surfaceMenu","measureMenu","pickingMenu","computationMenu","SIGNEDJAVAcaptureMenuSPECIAL"])});c(b,"jpiDispose",function(){this.helper.menuClearListeners(this.frankPopup);this.frankPopup=null;z(this,J.popup.JmolPopup,"jpiDispose",[])});f(b,"getBundle",function(a){return new J.popup.MainPopupResourceBundle(this.strMenuStructure=a,this.menuText)},"~S");f(b,"showFrankMenu",function(){this.getViewerData();this.setFrankMenu(this.currentMenuItemId);this.thisx=-this.thisx- +50;return 1d.indexOf("[]")&&(d="[] "+d);d=d.$replace("_"," ");return JU.PT.rep(d,"[]",g)}0<=d.indexOf("?FILEROOT?")?d=JU.PT.rep(d,"FILEROOT?",this.modelSetRoot):0<=d.indexOf("?FILE?")?d=JU.PT.rep(d,"FILE?",this.modelSetFileName):0<=d.indexOf("?PdbId?")&&(d=JU.PT.rep(d,"PdbId?","=xxxx"));return d},"J.api.SC,~S,~S");f(b,"appRestorePopupMenu",function(){this.thisPopup=this.popupMenu;if(!(this.vwr.isJSNoAWT||2>this.nFrankList)){for(var a=this.nFrankList;0< +--a;){var g=this.frankList[a];this.helper.menuInsertSubMenu(g[0],g[1],g[2].intValue())}this.nFrankList=1}});f(b,"appUpdateSpecialCheckBoxValue",function(a,g){!this.updatingForShow&&0<=g.indexOf("#CONFIG")&&(this.configurationSelected=g,this.updateConfigurationComputedMenu(),this.updateModelSetComputedMenu())},"J.api.SC,~S,~B");c(b,"setFrankMenu",function(h){if(!(null!=this.currentFrankId&&this.currentFrankId===h&&0d)break;g=this.htMenus.get(h.substring(g,d));this.frankList[this.nFrankList++]=a(-1,[g.getParent(),g,Integer.$valueOf(this.vwr.isJSNoAWT?0:this.menuGetListPosition(g))]); +this.menuAddSubMenu(this.frankPopup,g);g=d+1}this.thisPopup=this.popupMenu}},"~S");c(b,"checkBoolean",function(a){return null!=this.modelSetInfo&&this.modelSetInfo.get(a)===Boolean.TRUE},"~S");c(b,"getViewerData",function(){this.modelSetName=this.vwr.ms.modelSetName;this.modelSetFileName=this.vwr.getModelSetFileName();var a=this.modelSetFileName.lastIndexOf(".");if((this.isZapped="zapped".equals(this.modelSetName))||"string".equals(this.modelSetFileName)||"String[]".equals(this.modelSetFileName))this.modelSetFileName= +"";this.modelSetRoot=this.modelSetFileName.substring(0,0>a?this.modelSetFileName.length:a);0==this.modelSetRoot.length&&(this.modelSetRoot="Jmol");this.modelIndex=this.vwr.am.cmi;this.modelCount=this.vwr.ms.mc;this.ac=this.vwr.ms.getAtomCountInModel(this.modelIndex);this.modelSetInfo=this.vwr.getModelSetAuxiliaryInfo();this.modelInfo=this.vwr.ms.getModelAuxiliaryInfo(this.modelIndex);null==this.modelInfo&&(this.modelInfo=new java.util.Hashtable);this.isPDB=this.checkBoolean(JV.JC.getBoolName(4)); +this.isMultiFrame=1this.modelIndex?0:this.modelIndex+1,e=this.modelSetInfo.get("group3Lists");this.group3List=null==e?null:e[a];this.group3Counts=null==e?null:this.modelSetInfo.get("group3Counts")[a];if(null!=this.group3List){a= +0;e=JM.Group.standardGroupList;if(null!=g){for(var c=1;24>c;++c)a+=this.updateGroup3List(g,e.substring(6*c-4,6*c-1).trim());a+=this.augmentGroup3List(g,"p>",!0);this.menuEnable(g,0",!1),this.menuEnable(d,0",!1),this.menuEnable(b,0c)break;0==e++&&d&&this.menuAddSeparator(a);var f=this.group3Counts[u(c/6)],j=this.group3List.substring(c+2,c+5),f=j+" ("+f+")";this.menuCreateItem(a, +f,"SELECT ["+j+"]",this.menuGetId(a)+"."+f);c++}return e},"J.api.SC,~S,~B");c(b,"updateSYMMETRYComputedMenus",function(){this.updateSYMMETRYSelectComputedMenu();this.updateSYMMETRYShowComputedMenu()});c(b,"updateSYMMETRYShowComputedMenu",function(){var a=this.htMenus.get("SYMMETRYShowComputedMenu");if(null!=a&&(this.menuRemoveAll(a,0),this.menuEnable(a,!1),this.hasSymmetry&&!(0>this.modelIndex))){var b=this.vwr.getProperty("DATA_API","spaceGroupInfo",null);if(null!=b){var d=b.get("operations");if(null!= +d){b=b.get("spaceGroupName");this.menuSetLabel(a,null==b?J.i18n.GT.$("Space Group"):b);for(var b=a,c=25f.indexOf("x1")&&(f=d[e][0]);this.menuEnable(this.menuCreateItem(b,e+1+ +" "+d[e][2]+" ("+f+")","draw SYMOP "+(e+1),null),!0)}this.menuEnable(a,!0)}}}});c(b,"updateSYMMETRYSelectComputedMenu",function(){var a=this.htMenus.get("SYMMETRYSelectComputedMenu");if(null!=a&&(this.menuRemoveAll(a,0),this.menuEnable(a,!1),this.hasSymmetry&&!(0>this.modelIndex))){var b=this.modelInfo.get("symmetryOperations");if(null!=b){for(var d=null!=this.vwr.getOperativeSymmetry(),c=a,e=25this.modelIndex?this.gti("allModelsText",this.modelCount):this.gto("modelMenuText",this.modelIndex+ +1+"/"+this.modelCount)),this.menuRemoveAll(a,0),!(1>this.modelCount))){1this.modelIndex,!1);for(var b=a,d=25this.titleWidthMax&& +(this.modelSetName=this.modelSetName.substring(0,this.titleWidthMax)+"...")):this.vwr.getBooleanProperty("hideNameInPopup")?this.modelSetName=this.getMenuText("hiddenModelSetText"):this.modelSetName.length>this.titleWidthMax&&(this.modelSetName=this.modelSetName.substring(0,this.titleWidthMax)+"...");this.menuSetLabel(b,this.modelSetName);this.menuEnable(b,!0);this.menuEnable(this.htMenus.get("computationMenu"),100>=this.ac);this.addMenuItem(b,this.gti("atomsText",this.ac));this.addMenuItem(b,this.gti("bondsText", +this.vwr.ms.getBondCountInModel(this.modelIndex)));if(this.isPDB){this.menuAddSeparator(b);this.addMenuItem(b,this.gti("groupsText",this.vwr.ms.getGroupCountInModel(this.modelIndex)));this.addMenuItem(b,this.gti("chainsText",this.vwr.ms.getChainCountInModelWater(this.modelIndex,!1)));this.addMenuItem(b,this.gti("polymersText",this.vwr.ms.getBioPolymerCountInModel(this.modelIndex)));var d=this.htMenus.get("BiomoleculesMenu");null==d&&(d=this.menuNewSubMenu(J.i18n.GT.$(this.getMenuText("biomoleculesMenuText")), +this.menuGetId(b)+".biomolecules"),this.menuAddSubMenu(b,d));this.menuRemoveAll(d,0);this.menuEnable(d,!1);var c;if(0<=this.modelIndex&&null!=(c=this.vwr.ms.getInfo(this.modelIndex,"biomolecules"))){this.menuEnable(d,!0);for(var e=c.size(),g=0;gd&&(d=b.length);var c=null;0<=a.indexOf("captureLooping")?c=1073742070==this.vwr.am.animationReplayMode?"ONCE":"LOOP":0<=a.indexOf("captureFps")?c=""+this.vwr.getInt(553648132):0<=a.indexOf("captureMenu")&&(c=null==this.vwr.captureParams?J.i18n.GT.$("not capturing"):this.vwr.fm.getFilePath(this.vwr.captureParams.get("captureFileName"), +!1,!0)+" "+this.vwr.captureParams.get("captureCount"));return null==c?b:b.substring(0,d)+" ("+c+")"},"~S,~S")});p("J.popup");q(["J.popup.PopupResource","JV.JC"],"J.popup.MainPopupResourceBundle",["JU.PT","J.i18n.GT","JV.Viewer"],function(){var b=y(J.popup,"MainPopupResourceBundle",J.popup.PopupResource);f(b,"getMenuName",function(){return"popupMenu"});f(b,"buildStructure",function(a){this.addItems(J.popup.MainPopupResourceBundle.menuContents);this.addItems(J.popup.MainPopupResourceBundle.structureContents); +null!=a&&this.setStructure(a,new J.i18n.GT)},"~S");b.Box=c(b,"Box",function(a){return"if (showBoundBox or showUnitcell) {"+a+"} else {boundbox on;"+a+";boundbox off}"},"~S");f(b,"getWordContents",function(){var b=J.i18n.GT.setDoTranslate(!0),c=J.i18n.GT.$("{0}% van der Waals"),d=J.i18n.GT.$("Export {0} 3D model"),f=J.i18n.GT.$("Export {0} image"),e=J.i18n.GT.$("Reload {0}"),t=J.i18n.GT.$("Scale {0}"),j=J.i18n.GT.$("{0} \u00c5"),k=J.i18n.GT.$("{0} px"),c=a(-1,["cnmrMenu",J.i18n.GT.$("13C-NMR"),"hnmrMenu", +J.i18n.GT.$("1H-NMR"),"aboutMenu",J.i18n.GT.$("About..."),"negativeCharge",J.i18n.GT.$("Acidic Residues (-)"),"allModelsText",J.i18n.GT.$("All {0} models"),"allHetero",J.i18n.GT.$('All PDB "HETATM"'),"Solvent",J.i18n.GT.$("All Solvent"),"Water",J.i18n.GT.$("All Water"),"selectAll",J.i18n.GT.$("All"),"allProtein",null,"allNucleic",null,"allCarbo",null,"altloc#PDB",J.i18n.GT.$("Alternative Location"),"amino#PDB",J.i18n.GT.$("Amino Acid"),"byAngstromMenu",J.i18n.GT.$("Angstrom Width"),"animModeMenu", +J.i18n.GT.$("Animation Mode"),"FRAMESanimateMenu",J.i18n.GT.$("Animation"),"atPairs",J.i18n.GT.$("AT pairs"),"atomMenu",J.i18n.GT.$("Atoms"),"[color_atoms]Menu",null,"atomsText",J.i18n.GT.$("atoms: {0}"),"auPairs",J.i18n.GT.$("AU pairs"),"[color_axes]Menu",J.i18n.GT.$("Axes"),"showAxesCB",null,"[set_axes]Menu",null,"axisA",J.i18n.GT.$("Axis a"),"axisB",J.i18n.GT.$("Axis b"),"axisC",J.i18n.GT.$("Axis c"),"axisX",J.i18n.GT.$("Axis x"),"axisY",J.i18n.GT.$("Axis y"),"axisZ",J.i18n.GT.$("Axis z"),"back", +J.i18n.GT.$("Back"),"proteinBackbone",J.i18n.GT.$("Backbone"),"nucleicBackbone",null,"backbone",null,"[color_backbone]Menu",null,"[color_background]Menu",J.i18n.GT.$("Background"),"renderBallAndStick",J.i18n.GT.$("Ball and Stick"),"nucleicBases",J.i18n.GT.$("Bases"),"positiveCharge",J.i18n.GT.$("Basic Residues (+)"),"best",J.i18n.GT.$("Best"),"biomoleculeText",J.i18n.GT.$("biomolecule {0} ({1} atoms)"),"biomoleculesMenuText",J.i18n.GT.$("Biomolecules"),"black",J.i18n.GT.$("Black"),"blue",J.i18n.GT.$("Blue"), +"bondMenu",J.i18n.GT.$("Bonds"),"[color_bonds]Menu",null,"bondsText",J.i18n.GT.$("bonds: {0}"),"bottom",J.i18n.GT.$("Bottom"),"[color_boundbox]Menu",J.i18n.GT.$("Boundbox"),"[set_boundbox]Menu",null,"showBoundBoxCB",null,"PDBheteroComputedMenu",J.i18n.GT.$("By HETATM"),"PDBaaResiduesComputedMenu",J.i18n.GT.$("By Residue Name"),"PDBnucleicResiduesComputedMenu",null,"PDBcarboResiduesComputedMenu",null,"schemeMenu",J.i18n.GT.$("By Scheme"),"[color_]schemeMenu",null,"hbondCalc",J.i18n.GT.$("Calculate"), +"SIGNEDJAVAcaptureRock",J.i18n.GT.$("Capture rock"),"SIGNEDJAVAcaptureSpin",J.i18n.GT.$("Capture spin"),"SIGNEDJAVAcaptureMenuSPECIAL",J.i18n.GT.$("Capture"),"PDBcarboMenu",J.i18n.GT.$("Carbohydrate"),"cartoonRockets",J.i18n.GT.$("Cartoon Rockets"),"PDBrenderCartoonsOnly",J.i18n.GT.$("Cartoon"),"cartoon",null,"[color_cartoon]sMenu",null,"pickCenter",J.i18n.GT.$("Center"),"labelCentered",J.i18n.GT.$("Centered"),"chain#PDB",J.i18n.GT.$("Chain"),"chainsText",J.i18n.GT.$("chains: {0}"),"colorChargeMenu", +J.i18n.GT.$("Charge"),"measureAngle",J.i18n.GT.$("Click for angle measurement"),"measureDistance",J.i18n.GT.$("Click for distance measurement"),"measureTorsion",J.i18n.GT.$("Click for torsion (dihedral) measurement"),"PDBmeasureSequence",J.i18n.GT.$("Click two atoms to display a sequence in the console"),"modelSetCollectionText",J.i18n.GT.$("Collection of {0} models"),"colorMenu",J.i18n.GT.$("Color"),"computationMenu",J.i18n.GT.$("Computation"),"configurationMenuText",J.i18n.GT.$("Configurations ({0})"), +"configurationComputedMenu",J.i18n.GT.$("Configurations"),"showConsole",J.i18n.GT.$("Console"),"renderCpkSpacefill",J.i18n.GT.$("CPK Spacefill"),"stereoCrossEyed",J.i18n.GT.$("Cross-eyed viewing"),"showState",J.i18n.GT.$("Current state"),"cyan",J.i18n.GT.$("Cyan"),"darkgray",J.i18n.GT.$("Dark Gray"),"measureDelete",J.i18n.GT.$("Delete measurements"),"SIGNEDJAVAcaptureOff",J.i18n.GT.$("Disable capturing"),"hideNotSelectedCB",J.i18n.GT.$("Display Selected Only"),"distanceAngstroms",J.i18n.GT.$("Distance units Angstroms"), +"distanceNanometers",J.i18n.GT.$("Distance units nanometers"),"distancePicometers",J.i18n.GT.$("Distance units picometers"),"distanceHz",J.i18n.GT.$("Distance units hz (NMR J-coupling)"),"ssbondMenu",J.i18n.GT.$("Disulfide Bonds"),"[color_ssbonds]Menu",null,"DNA",J.i18n.GT.$("DNA"),"surfDots",J.i18n.GT.$("Dot Surface"),"dotted",J.i18n.GT.$("Dotted"),"measureOff",J.i18n.GT.$("Double-Click begins and ends all measurements"),"cpk",J.i18n.GT.$("Element (CPK)"),"elementsComputedMenu",J.i18n.GT.$("Element"), +"SIGNEDJAVAcaptureEnd",J.i18n.GT.$("End capturing"),"exportMenu",J.i18n.GT.$("Export"),"extractMOL",J.i18n.GT.$("Extract MOL data"),"showFile",J.i18n.GT.$("File Contents"),"showFileHeader",J.i18n.GT.$("File Header"),"fileMenu",J.i18n.GT.$("File"),"formalcharge",J.i18n.GT.$("Formal Charge"),"front",J.i18n.GT.$("Front"),"gcPairs",J.i18n.GT.$("GC pairs"),"gold",J.i18n.GT.$("Gold"),"gray",J.i18n.GT.$("Gray"),"green",J.i18n.GT.$("Green"),"group#PDB",J.i18n.GT.$("Group"),"groupsText",J.i18n.GT.$("groups: {0}"), +"PDBheteroMenu",J.i18n.GT.$("Hetero"),"off#axes",J.i18n.GT.$("Hide"),"showHistory",J.i18n.GT.$("History"),"hbondMenu",J.i18n.GT.$("Hydrogen Bonds"),"[color_hbonds]Menu",null,"pickIdent",J.i18n.GT.$("Identity"),"indigo",J.i18n.GT.$("Indigo"),"none",J.i18n.GT.$("Inherit"),"invertSelection",J.i18n.GT.$("Invert Selection"),"showIsosurface",J.i18n.GT.$("Isosurface JVXL data"),"help",J.i18n.GT.$("Jmol Script Commands"),"pickLabel",J.i18n.GT.$("Label"),"labelMenu",J.i18n.GT.$("Labels"),"[color_labels]Menu", +null,"languageComputedMenu",J.i18n.GT.$("Language"),"left",J.i18n.GT.$("Left"),"Ligand",J.i18n.GT.$("Ligand"),"lightgray",J.i18n.GT.$("Light Gray"),"measureList",J.i18n.GT.$("List measurements"),"loadBiomoleculeText",J.i18n.GT.$("load biomolecule {0} ({1} atoms)"),"SIGNEDloadFileUnitCell",J.i18n.GT.$("Load full unit cell"),"loadMenu",J.i18n.GT.$("Load"),"loop",J.i18n.GT.$("Loop"),"labelLowerLeft",J.i18n.GT.$("Lower Left"),"labelLowerRight",J.i18n.GT.$("Lower Right"),"mainMenuText",J.i18n.GT.$("Main Menu"), +"opaque",J.i18n.GT.$("Make Opaque"),"surfOpaque",null,"translucent",J.i18n.GT.$("Make Translucent"),"surfTranslucent",null,"maroon",J.i18n.GT.$("Maroon"),"measureMenu",J.i18n.GT.$("Measurements"),"showMeasure",null,"modelMenuText",J.i18n.GT.$("model {0}"),"hiddenModelSetText",J.i18n.GT.$("Model information"),"modelkit",J.i18n.GT.$("Model kit"),"showModel",J.i18n.GT.$("Model"),"FRAMESbyModelComputedMenu",J.i18n.GT.$("Model/Frame"),"modelKitMode",J.i18n.GT.$("modelKitMode"),"surf2MEP",J.i18n.GT.$("Molecular Electrostatic Potential (range -0.1 0.1)"), +"surfMEP",J.i18n.GT.$("Molecular Electrostatic Potential (range ALL)"),"showMo",J.i18n.GT.$("Molecular orbital JVXL data"),"surfMoComputedMenuText",J.i18n.GT.$("Molecular Orbitals ({0})"),"surfMolecular",J.i18n.GT.$("Molecular Surface"),"molecule",J.i18n.GT.$("Molecule"),"monomer#PDB",J.i18n.GT.$("Monomer"),"mouse",J.i18n.GT.$("Mouse Manual"),"nextframe",J.i18n.GT.$("Next Frame"),"modelSetMenu",J.i18n.GT.$("No atoms loaded"),"exceptWater",J.i18n.GT.$("Nonaqueous HETATM")+" (hetero and not water)", +"nonWaterSolvent",J.i18n.GT.$("Nonaqueous Solvent")+" (solvent and not water)","PDBnoneOfTheAbove",J.i18n.GT.$("None of the above"),"selectNone",J.i18n.GT.$("None"),"stereoNone",null,"labelNone",null,"nonpolar",J.i18n.GT.$("Nonpolar Residues"),"PDBnucleicMenu",J.i18n.GT.$("Nucleic"),"atomNone",J.i18n.GT.$("Off"),"bondNone",null,"hbondNone",null,"ssbondNone",null,"structureNone",null,"vibrationOff",null,"vectorOff",null,"spinOff",null,"pickOff",null,"surfOff",null,"olive",J.i18n.GT.$("Olive"),"bondWireframe", +J.i18n.GT.$("On"),"hbondWireframe",null,"ssbondWireframe",null,"vibrationOn",null,"vectorOn",null,"spinOn",null,"on",null,"SIGNEDloadPdb",J.i18n.GT.$("Get PDB file"),"SIGNEDloadMol",J.i18n.GT.$("Get MOL file"),"SIGNEDloadFile",J.i18n.GT.$("Open local file"),"SIGNEDloadScript",J.i18n.GT.$("Open script"),"SIGNEDloadUrl",J.i18n.GT.$("Open URL"),"minimize",J.i18n.GT.$("Optimize structure"),"orange",J.i18n.GT.$("Orange"),"orchid",J.i18n.GT.$("Orchid"),"showOrient",J.i18n.GT.$("Orientation"),"palindrome", +J.i18n.GT.$("Palindrome"),"partialcharge",J.i18n.GT.$("Partial Charge"),"pause",J.i18n.GT.$("Pause"),"perspectiveDepthCB",J.i18n.GT.$("Perspective Depth"),"byPixelMenu",J.i18n.GT.$("Pixel Width"),"onceThrough",J.i18n.GT.$("Play Once"),"play",J.i18n.GT.$("Play"),"polar",J.i18n.GT.$("Polar Residues"),"polymersText",J.i18n.GT.$("polymers: {0}"),"labelPositionMenu",J.i18n.GT.$("Position Label on Atom"),"prevframe",J.i18n.GT.$("Previous Frame"),"PDBproteinMenu",J.i18n.GT.$("Protein"),"colorrasmolCB",J.i18n.GT.$("RasMol Colors"), +"red",J.i18n.GT.$("Red"),"stereoRedBlue",J.i18n.GT.$("Red+Blue glasses"),"stereoRedCyan",J.i18n.GT.$("Red+Cyan glasses"),"stereoRedGreen",J.i18n.GT.$("Red+Green glasses"),"SIGNEDJAVAcaptureOn",J.i18n.GT.$("Re-enable capturing"),"FILEUNITninePoly",J.i18n.GT.$("Reload + Polyhedra"),"reload",J.i18n.GT.$("Reload"),"restart",J.i18n.GT.$("Restart"),"resume",J.i18n.GT.$("Resume"),"playrev",J.i18n.GT.$("Reverse"),"rewind",J.i18n.GT.$("Rewind"),"ribbons",J.i18n.GT.$("Ribbons"),"[color_ribbon]sMenu",null,"right", +J.i18n.GT.$("Right"),"RNA",J.i18n.GT.$("RNA"),"rockets",J.i18n.GT.$("Rockets"),"[color_rockets]Menu",null,"salmon",J.i18n.GT.$("Salmon"),"writeFileTextVARIABLE",J.i18n.GT.$("Save a copy of {0}"),"SIGNEDwriteJmol",J.i18n.GT.$("Save as PNG/JMOL (image+zip)"),"SIGNEDwriteIsosurface",J.i18n.GT.$("Save JVXL isosurface"),"writeHistory",J.i18n.GT.$("Save script with history"),"writeState",J.i18n.GT.$("Save script with state"),"saveMenu",J.i18n.GT.$("Save"),"sceneComputedMenu",J.i18n.GT.$("Scenes"),"renderSchemeMenu", +J.i18n.GT.$("Scheme"),"aaStructureMenu",J.i18n.GT.$("Secondary Structure"),"structure#PDB",null,"selectMenuText",J.i18n.GT.$("Select ({0})"),"pickAtom",J.i18n.GT.$("Select atom"),"dragAtom",J.i18n.GT.$("Drag atom"),"dragMolecule",J.i18n.GT.$("Drag molecule"),"PDBpickChain",J.i18n.GT.$("Select chain"),"pickElement",J.i18n.GT.$("Select element"),"PDBpickGroup",J.i18n.GT.$("Select group"),"pickMolecule",J.i18n.GT.$("Select molecule"),"SYMMETRYpickSite",J.i18n.GT.$("Select site"),"showSelectionsCB",J.i18n.GT.$("Selection Halos"), +"SIGNEDJAVAcaptureFpsSPECIAL",J.i18n.GT.$("Set capture replay rate"),"[set_spin_FPS]Menu",J.i18n.GT.$("Set FPS"),"FRAMESanimFpsMenu",null,"PDBhbondBackbone",J.i18n.GT.$("Set H-Bonds Backbone"),"PDBhbondSidechain",J.i18n.GT.$("Set H-Bonds Side Chain"),"pickingMenu",J.i18n.GT.$("Set picking"),"PDBssbondBackbone",J.i18n.GT.$("Set SS-Bonds Backbone"),"PDBssbondSidechain",J.i18n.GT.$("Set SS-Bonds Side Chain"),"[set_spin_X]Menu",J.i18n.GT.$("Set X Rate"),"[set_spin_Y]Menu",J.i18n.GT.$("Set Y Rate"),"[set_spin_Z]Menu", +J.i18n.GT.$("Set Z Rate"),"shapely#PDB",J.i18n.GT.$("Shapely"),"showHydrogensCB",J.i18n.GT.$("Show Hydrogens"),"showMeasurementsCB",J.i18n.GT.$("Show Measurements"),"SYMMETRYpickSymmetry",J.i18n.GT.$("Show symmetry operation"),"showMenu",J.i18n.GT.$("Show"),"proteinSideChains",J.i18n.GT.$("Side Chains"),"slateblue",J.i18n.GT.$("Slate Blue"),"SYMMETRYShowComputedMenu",J.i18n.GT.$("Space Group"),"showSpacegroup",null,"spectraMenu",J.i18n.GT.$("Spectra"),"spinMenu",J.i18n.GT.$("Spin"),"pickSpin",null, +"SIGNEDJAVAcaptureBegin",J.i18n.GT.$("Start capturing"),"stereoMenu",J.i18n.GT.$("Stereographic"),"renderSticks",J.i18n.GT.$("Sticks"),"stop",J.i18n.GT.$("Stop"),"strands",J.i18n.GT.$("Strands"),"[color_strands]Menu",null,"PDBstructureMenu",J.i18n.GT.$("Structures"),"colorPDBStructuresMenu",null,"renderMenu",J.i18n.GT.$("Style"),"[color_isosurface]Menu",J.i18n.GT.$("Surfaces"),"surfaceMenu",null,"SYMMETRYSelectComputedMenu",J.i18n.GT.$("Symmetry"),"SYMMETRYshowSymmetry",null,"FILEUNITMenu",null,"systemMenu", +J.i18n.GT.$("System"),"relativeTemperature#BFACTORS",J.i18n.GT.$("Temperature (Relative)"),"fixedTemperature#BFACTORS",J.i18n.GT.$("Temperature (Fixed)"),"SIGNEDJAVAcaptureLoopingSPECIAL",J.i18n.GT.$("Toggle capture looping"),"top",JU.PT.split(J.i18n.GT.$('Top[as in "view from the top, from above" - (translators: remove this bracketed part]'),"[")[0],"PDBrenderTraceOnly",J.i18n.GT.$("Trace"),"trace",null,"[color_trace]Menu",null,"translations",J.i18n.GT.$("Translations"),"noCharge",J.i18n.GT.$("Uncharged Residues"), +"[color_UNITCELL]Menu",J.i18n.GT.$("Unit cell"),"UNITCELLshow",null,"[set_UNITCELL]Menu",null,"showUNITCELLCB",null,"labelUpperLeft",J.i18n.GT.$("Upper Left"),"labelUpperRight",J.i18n.GT.$("Upper Right"),"surfVDW",J.i18n.GT.$("van der Waals Surface"),"VIBRATIONvectorMenu",J.i18n.GT.$("Vectors"),"property_vxyz#VIBRATION",null,"[color_vectors]Menu",null,"VIBRATIONMenu",J.i18n.GT.$("Vibration"),"viewMenuText",J.i18n.GT.$("View {0}"),"viewMenu",J.i18n.GT.$("View"),"violet",J.i18n.GT.$("Violet"),"stereoWallEyed", +J.i18n.GT.$("Wall-eyed viewing"),"white",J.i18n.GT.$("White"),"renderWireframe",J.i18n.GT.$("Wireframe"),"labelName",J.i18n.GT.$("With Atom Name"),"labelNumber",J.i18n.GT.$("With Atom Number"),"labelSymbol",J.i18n.GT.$("With Element Symbol"),"yellow",J.i18n.GT.$("Yellow"),"zoomIn",J.i18n.GT.$("Zoom In"),"zoomOut",J.i18n.GT.$("Zoom Out"),"zoomMenu",J.i18n.GT.$("Zoom"),"vector005",J.i18n.GT.o(j,"0.05"),"bond100",J.i18n.GT.o(j,"0.10"),"hbond100",null,"ssbond100",null,"vector01",null,"10a",null,"bond150", +J.i18n.GT.o(j,"0.15"),"hbond150",null,"ssbond150",null,"bond200",J.i18n.GT.o(j,"0.20"),"hbond200",null,"ssbond200",null,"20a",null,"bond250",J.i18n.GT.o(j,"0.25"),"hbond250",null,"ssbond250",null,"25a",null,"bond300",J.i18n.GT.o(j,"0.30"),"hbond300",null,"ssbond300",null,"50a",J.i18n.GT.o(j,"0.50"),"100a",J.i18n.GT.o(j,"1.0"),"1p",J.i18n.GT.i(k,1),"10p",J.i18n.GT.i(k,10),"3p",J.i18n.GT.i(k,3),"vector3",null,"5p",J.i18n.GT.i(k,5),"atom100",J.i18n.GT.i(c,100),"atom15",J.i18n.GT.i(c,15),"atom20",J.i18n.GT.i(c, +20),"atom25",J.i18n.GT.i(c,25),"atom50",J.i18n.GT.i(c,50),"atom75",J.i18n.GT.i(c,75),"SIGNEDNOGLwriteIdtf",J.i18n.GT.o(d,"IDTF"),"SIGNEDNOGLwriteMaya",J.i18n.GT.o(d,"Maya"),"SIGNEDNOGLwriteVrml",J.i18n.GT.o(d,"VRML"),"SIGNEDNOGLwriteX3d",J.i18n.GT.o(d,"X3D"),"SIGNEDNOGLwriteSTL",J.i18n.GT.o(d,"STL"),"SIGNEDNOGLwriteGif",J.i18n.GT.o(f,"GIF"),"SIGNEDNOGLwriteJpg",J.i18n.GT.o(f,"JPG"),"SIGNEDNOGLwritePng",J.i18n.GT.o(f,"PNG"),"SIGNEDNOGLwritePngJmol",J.i18n.GT.o(f,"PNG+JMOL"),"SIGNEDNOGLwritePovray", +J.i18n.GT.o(f,"POV-Ray"),"FILEUNITnineRestricted",J.i18n.GT.o(J.i18n.GT.$("Reload {0} + Display {1}"),a(-1,["{444 666 1}","555"])),"FILEMOLload",J.i18n.GT.o(e,"(molecular)"),"FILEUNITone",J.i18n.GT.o(e,"{1 1 1}"),"FILEUNITnine",J.i18n.GT.o(e,"{444 666 1}"),"vectorScale02",J.i18n.GT.o(t,"0.2"),"vectorScale05",J.i18n.GT.o(t,"0.5"),"vectorScale1",J.i18n.GT.o(t,"1"),"vectorScale2",J.i18n.GT.o(t,"2"),"vectorScale5",J.i18n.GT.o(t,"5"),"surfSolvent14",J.i18n.GT.o(J.i18n.GT.$("Solvent Surface ({0}-Angstrom probe)"), +"1.4"),"surfSolventAccessible14",J.i18n.GT.o(J.i18n.GT.$("Solvent-Accessible Surface (VDW + {0} Angstrom)"),"1.4"),"vibration20","*2","vibration05","/2","JAVAmemTotal","?","JAVAmemMax",null,"JAVAprocessors",null,"s0","0","animfps10","10","s10",null,"zoom100","100%","zoom150","150%","animfps20","20","s20",null,"zoom200","200%","animfps30","30","s30",null,"s40","40","zoom400","400%","animfps5","5","s5",null,"animfps50","50","s50",null,"zoom50","50%","zoom800","800%","JSConsole",J.i18n.GT.$("JavaScript Console"), +"jmolMenu","Jmol","date",JV.JC.date,"version",JV.JC.version,"javaVender",JV.Viewer.strJavaVendor,"javaVersion",JV.Viewer.strJavaVersion,"os",JV.Viewer.strOSName,"jmolorg","http://www.jmol.org"]);J.i18n.GT.setDoTranslate(b);b=1;for(d=c.length;be&&(e=c.length,c+="=");var f=c.substring(0,e).trim(),j=c.substring(e+1).trim(),k=null;if(0<=(e=f.indexOf("|")))k=f.substring(e+1).trim(),f=f.substring(0,e).trim();0!=f.length&&(0= 0 || (flags & 8) == 8); +this.modelkitMinimizing = (bsBasis != null && this.vwr.getModelkitPropertySafely("minimizing") === Boolean.TRUE); +if (bsBasis != null) { +if (bsFixed == null) bsFixed = new JU.BS(); +this.vwr.getMotionFixedAtoms(null, bsFixed); +bsBasis.andNot(bsFixed); +bsFixed.or(bsSelected); +bsFixed.andNot(bsBasis); +if (bsBasis.isEmpty()) { +this.report(" symmetry-based minimization failed -- all atoms are fully constrained", false); +return false; +}var n = bsBasis.cardinality(); +this.report(" symmetry-based minimization for " + n + " atom" + (n == 1 ? "" : "s"), false); +}this.bsBasis = bsBasis; +this.trustRadius = (bsBasis == null ? 0.3 : 0.01); +var haveFixed = ((flags & 4) == 4); +var bsXx = ((flags & 128) == 128 ? new JU.BS() : null); +var val; +if (crit <= 0) { +val = this.vwr.getP("minimizationCriterion"); +if (val != null && Clazz_instanceOf(val, Float)) crit = (val).floatValue(); +}this.crit = Math.max(crit, 0.0001); +if (steps == 2147483647) { +val = this.vwr.getP("minimizationSteps"); +if (val != null && Clazz_instanceOf(val, Integer)) steps = (val).intValue(); +}this.steps = steps; +try { +this.setEnergyUnits(); +if (!haveFixed && this.bsFixedDefault != null) bsFixed.and(this.bsFixedDefault); +if (this.minimizing) return false; +var pFF0 = this.pFF; +this.getForceField(ff); +if (this.pFF == null) { +JU.Logger.error(J.i18n.GT.o(J.i18n.GT.$("Could not get class for force field {0}"), ff)); +return false; +}JU.Logger.info("minimize: " + this.id + " initializing " + this.pFF.name + " (steps = " + steps + " criterion = " + crit + ")" + " silent=" + this.isSilent + " quick=" + this.isQuick + " fixed=" + haveFixed + " bsSelected=" + bsSelected + " bsFixed=" + bsFixed + " bsFixedDefault=" + this.bsFixedDefault + " Xx=" + (bsXx != null) + " ..."); +if (bsSelected.nextSetBit(0) < 0) { +JU.Logger.error(J.i18n.GT.$("No atoms selected -- nothing to do!")); +return false; +}this.atoms = this.vwr.ms.at; +this.bsAtoms = JU.BSUtil.copy(bsSelected); +for (var i = this.bsAtoms.nextSetBit(0); i >= 0; i = this.bsAtoms.nextSetBit(i + 1)) { +if (this.atoms[i].getElementNumber() == 0) { +if (bsXx == null) { +this.bsAtoms.clear(i); +JU.Logger.info("minimize: " + this.id + " Ignoring Xx for atomIndex=" + i); +} else { +bsXx.set(i); +JU.Logger.info("minimize: " + this.id + " Setting Xx to fluorine for atomIndex=" + i); +this.atoms[i].setAtomicAndIsotopeNumber(9); +}}} +if (bsFixed != null) this.bsAtoms.or(bsFixed); +this.ac = this.bsAtoms.cardinality(); +var sameAtoms = JU.BSUtil.areEqual(bsSelected, this.bsSelected); +this.bsSelected = bsSelected; +if (pFF0 != null && this.pFF !== pFF0) sameAtoms = false; +if (!sameAtoms) this.pFF.clear(); +var isSame = (sameAtoms && JU.BSUtil.areEqual(bsFixed, this.bsFixed)); +if (!this.setupMinimization(bsFixed, isSame)) { +this.clear(); +return false; +}if (steps > 0) { +this.bsTaint = JU.BSUtil.copy(this.bsAtoms); +JU.BSUtil.andNot(this.bsTaint, bsFixed); +this.vwr.ms.setTaintedAtoms(this.bsTaint, 2); +}if (this.constraints != null) for (var i = this.constraints.size(); --i >= 0; ) this.constraints.get(i).set(steps, this.bsAtoms, this.atomMap); + +this.pFF.setConstraints(this); +if (steps <= 0) this.getEnergyOnly(); + else if (this.isSilent || !this.vwr.useMinimizationThread()) this.minimizeWithoutThread(); + else this.setMinimizationOn(true); +} finally { +if (bsXx != null && !bsXx.isEmpty()) { +for (var i = bsXx.nextSetBit(0); i >= 0; i = bsXx.nextSetBit(i + 1)) { +this.atoms[i].setAtomicAndIsotopeNumber(0); +} +}} +return true; +}, "~N,~N,JU.BS,JU.BS,JU.BS,~N,~S"); +Clazz_defineMethod(c$, "getProperty", +function(propertyName, param){ +if (propertyName.equals("log")) { +return (this.pFF == null ? "" : this.pFF.getLogData()); +}if (propertyName.equals("fixed")) { +return this.bsFixedDefault; +}return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "addConstraint", +function(o){ +if (o == null) return; +var indexes = o[0]; +var nAtoms = indexes[0]; +if (nAtoms == 0) { +this.constraints = null; +return; +}var value = (o[1]).doubleValue(); +if (this.constraints == null) { +this.constraints = new JU.Lst(); +this.constraintMap = new java.util.Hashtable(); +}if (indexes[1] > indexes[nAtoms]) { +JU.AU.swapInt(indexes, 1, nAtoms); +if (nAtoms == 4) JU.AU.swapInt(indexes, 2, 3); +}var id = JU.Escape.eAI(indexes); +var c = this.constraintMap.get(id); +if (c == null) { +c = new JM.MMConstraint(indexes, value); +} else { +c.value = value; +return; +}this.constraintMap.put(id, c); +this.constraints.addLast(c); +}, "~A"); +Clazz_defineMethod(c$, "clear", +function(){ +this.setMinimizationOn(false); +this.ac = 0; +this.bondCount = 0; +this.atoms = null; +this.bonds = null; +this.rawBondCount = 0; +this.minAtoms = null; +this.minBonds = null; +this.minAngles = null; +this.minTorsions = null; +this.coordSaved = null; +this.atomMap = null; +this.bsTaint = null; +this.bsAtoms = null; +this.bsFixed = null; +this.bsFixedDefault = null; +this.bsMinFixed = null; +this.bsSelected = null; +this.constraints = null; +this.constraintMap = null; +this.pFF = null; +}); +Clazz_defineMethod(c$, "setEnergyUnits", +function(){ +var s = this.vwr.g.energyUnits; +this.units = (s.equalsIgnoreCase("kcal") ? "kcal" : "kJ"); +}); +Clazz_defineMethod(c$, "setupMinimization", +function(bsFixed, isSame){ +if (isSame) { +this.setAtomPositions(); +return true; +}this.coordSaved = null; +this.atomMap = Clazz_newIntArray (this.atoms.length, 0); +this.minAtoms = new Array(this.ac); +this.elemnoMax = 0; +var bsElements = new JU.BS(); +for (var i = this.bsAtoms.nextSetBit(0), pt = 0; i >= 0; i = this.bsAtoms.nextSetBit(i + 1), pt++) { +var atom = this.atoms[i]; +this.atomMap[i] = pt; +var atomicNo = this.atoms[i].getElementNumber(); +this.elemnoMax = Math.max(this.elemnoMax, atomicNo); +bsElements.set(atomicNo); +this.minAtoms[pt] = new JM.MinAtom(pt, atom, Clazz_newDoubleArray(-1, [atom.x, atom.y, atom.z]), this.ac); +this.minAtoms[pt].sType = atom.getAtomName(); +} +if (bsFixed != null) this.bsFixed = bsFixed; +JU.Logger.info(J.i18n.GT.i(J.i18n.GT.$("{0} atoms will be minimized."), this.ac)); +JU.Logger.info("minimize: " + this.id + " getting bonds..."); +this.bonds = this.vwr.ms.bo; +this.rawBondCount = this.vwr.ms.bondCount; +this.getBonds(); +JU.Logger.info("minimize: " + this.id + " getting angles..."); +this.getAngles(); +JU.Logger.info("minimize: " + this.id + " getting torsions..."); +this.getTorsions(this.ff.startsWith("MMFF")); +return this.setModel(bsElements); +}, "JU.BS,~B"); +Clazz_defineMethod(c$, "setModel", +function(bsElements){ +if (!this.pFF.setModel(bsElements, this.elemnoMax)) { +JU.Logger.error(J.i18n.GT.o(J.i18n.GT.$("could not setup force field {0}"), this.ff)); +if (this.ff.startsWith("MMFF")) { +this.report(" MMFF not applicable", false); +this.getForceField("UFF"); +return this.setModel(bsElements); +}return false; +}return true; +}, "JU.BS"); +Clazz_defineMethod(c$, "setAtomPositions", +function(){ +for (var i = 0; i < this.ac; i++) this.minAtoms[i].set(); + +if (this.bsFixed == null || this.bsFixed.cardinality() == 0) { +this.bsMinFixed = null; +} else { +this.bsMinFixed = new JU.BS(); +for (var i = 0; i < this.ac; i++) { +if (this.bsFixed.get(this.minAtoms[i].atom.i)) this.bsMinFixed.set(i); +} +}}); +Clazz_defineMethod(c$, "getBonds", +function(){ +var bondInfo = new JU.Lst(); +this.bondCount = 0; +var i1; +var i2; +for (var i = 0; i < this.rawBondCount; i++) { +var bond = this.bonds[i]; +if (!this.bsAtoms.get(i1 = bond.atom1.i) || !this.bsAtoms.get(i2 = bond.atom2.i)) continue; +if (i2 < i1) { +var ii = i1; +i1 = i2; +i2 = ii; +}var bondOrder = (bond.isPartial() ? 0 : bond.getCovalentOrder()); +switch (bondOrder) { +case 0: +continue; +case 1: +case 2: +case 3: +break; +case 515: +bondOrder = 5; +break; +default: +bondOrder = 1; +} +bondInfo.addLast( new JM.MinBond(i, this.bondCount++, this.atomMap[i1], this.atomMap[i2], bondOrder, 0, null)); +} +this.minBonds = new Array(this.bondCount); +for (var i = 0; i < this.bondCount; i++) { +var bond = this.minBonds[i] = bondInfo.get(i); +var atom1 = bond.data[0]; +var atom2 = bond.data[1]; +this.minAtoms[atom1].addBond(bond, atom2); +this.minAtoms[atom2].addBond(bond, atom1); +} +for (var i = 0; i < this.ac; i++) this.minAtoms[i].getBondedAtomIndexes(); + +}); +Clazz_defineMethod(c$, "getAngles", +function(){ +var vAngles = new JU.Lst(); +var atomList; +var ic; +for (var i = 0; i < this.bondCount; i++) { +var bond = this.minBonds[i]; +var ia = bond.data[0]; +var ib = bond.data[1]; +if (this.minAtoms[ib].nBonds > 1) { +atomList = this.minAtoms[ib].getBondedAtomIndexes(); +for (var j = atomList.length; --j >= 0; ) if ((ic = atomList[j]) > ia) { +vAngles.addLast( new JM.MinAngle( Clazz_newIntArray(-1, [ia, ib, ic, i, this.minAtoms[ib].getBondIndex(j)]))); +this.minAtoms[ia].bsVdw.clear(ic); +} +}if (this.minAtoms[ia].nBonds > 1) { +atomList = this.minAtoms[ia].getBondedAtomIndexes(); +for (var j = atomList.length; --j >= 0; ) if ((ic = atomList[j]) < ib && ic > ia) { +vAngles.addLast( new JM.MinAngle( Clazz_newIntArray(-1, [ic, ia, ib, this.minAtoms[ia].getBondIndex(j), i]))); +this.minAtoms[ic].bsVdw.clear(ib); +} +}} +this.minAngles = vAngles.toArray( new Array(vAngles.size())); +JU.Logger.info(this.minAngles.length + " angles"); +}); +Clazz_defineMethod(c$, "getTorsions", +function(isMMFF){ +var vTorsions = new JU.Lst(); +var id; +for (var i = this.minAngles.length; --i >= 0; ) { +var angle = this.minAngles[i].data; +var ia = angle[0]; +var ib = angle[1]; +var ic = angle[2]; +var atomList; +if (ic > ib && this.minAtoms[ic].nBonds > 1) { +atomList = this.minAtoms[ic].getBondedAtomIndexes(); +for (var j = 0; j < atomList.length; j++) { +id = atomList[j]; +if (id != ia && id != ib) { +vTorsions.addLast( new JM.MinTorsion( Clazz_newIntArray(-1, [ia, ib, ic, id, angle[3], angle[4], this.minAtoms[ic].getBondIndex(j)]))); +if (isMMFF) this.minAtoms[Math.min(ia, id)].bs14.set(Math.max(ia, id)); +}} +}if (ia > ib && this.minAtoms[ia].nBonds != 1) { +atomList = this.minAtoms[ia].getBondedAtomIndexes(); +for (var j = 0; j < atomList.length; j++) { +id = atomList[j]; +if (id != ic && id != ib) { +vTorsions.addLast( new JM.MinTorsion( Clazz_newIntArray(-1, [ic, ib, ia, id, angle[4], angle[3], this.minAtoms[ia].getBondIndex(j)]))); +if (isMMFF) this.minAtoms[Math.min(ic, id)].bs14.set(Math.max(ic, id)); +}} +}} +this.minTorsions = vTorsions.toArray( new Array(vTorsions.size())); +JU.Logger.info(this.minTorsions.length + " torsions"); +}, "~B"); +Clazz_defineMethod(c$, "getForceField", +function(ff){ +if (ff.startsWith("MMFF")) ff = "MMFF"; +if (this.pFF == null || !ff.equals(this.ff) || (this.pFF.name.indexOf("2D") >= 0) != this.isQuick) { +if (ff.equals("MMFF")) { +this.pFF = new JM.FF.ForceFieldMMFF(this, this.isQuick); +} else { +this.pFF = new JM.FF.ForceFieldUFF(this, this.isQuick); +ff = "UFF"; +}this.ff = ff; +if (!this.isQuick) this.vwr.setStringProperty("_minimizationForceField", ff); +}this.report(" forcefield is " + ff, false); +this.pFF.setNth(this.vwr.getInt(553648150)); +return this.pFF; +}, "~S"); +Clazz_defineMethod(c$, "minimizationOn", +function(){ +return this.minimizing; +}); +Clazz_defineMethod(c$, "getThread", +function(){ +return this.minimizationThread; +}); +Clazz_defineMethod(c$, "setMinimizationOn", +function(minimizationOn){ +this.minimizing = minimizationOn; +if (!minimizationOn) { +if (this.minimizationThread != null) { +this.minimizationThread = null; +}return; +}if (this.minimizationThread == null) { +this.minimizationThread = new JM.MinimizationThread(); +this.minimizationThread.setManager(this, this.vwr, null); +this.minimizationThread.start(); +}}, "~B"); +Clazz_defineMethod(c$, "getEnergyOnly", +function(){ +if (this.pFF == null || this.vwr == null) return; +this.pFF.steepestDescentInitialize(this.steps, this.crit, this.trustRadius); +this.vwr.setFloatProperty("_minimizationEnergyDiff", 0); +this.reportEnergy(); +this.vwr.setStringProperty("_minimizationStatus", "calculate"); +this.vwr.notifyMinimizationStatus(); +if (this.bsBasis != null) { +this.vwr.getModelkit(false).minimizeEnd(null, true); +}}); +Clazz_defineMethod(c$, "reportEnergy", +function(){ +this.vwr.setFloatProperty("_minimizationEnergy", this.pFF.toUserUnits(this.pFF.getEnergy())); +}); +Clazz_defineMethod(c$, "startMinimization", +function(){ +try { +JU.Logger.info("minimize: " + this.id + " startMinimization"); +this.vwr.setIntProperty("_minimizationStep", 0); +this.vwr.setStringProperty("_minimizationStatus", "starting"); +this.vwr.setFloatProperty("_minimizationEnergy", 0); +this.vwr.setFloatProperty("_minimizationEnergyDiff", 0); +this.vwr.notifyMinimizationStatus(); +this.vwr.stm.saveCoordinates("minimize", this.bsTaint); +this.pFF.steepestDescentInitialize(this.steps, this.crit, this.trustRadius); +this.reportEnergy(); +this.saveCoordinates(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("minimization error vwr=" + this.vwr + " pFF = " + this.pFF); +return false; +} else { +throw e; +} +} +this.minimizing = true; +return true; +}); +Clazz_defineMethod(c$, "stepMinimization", +function(){ +if (!this.minimizing) return false; +var doRefresh = (!this.isSilent && this.vwr.getBooleanProperty("minimizationRefresh")); +this.vwr.setStringProperty("_minimizationStatus", "running"); +var going = this.pFF.steepestDescentTakeNSteps(1, this.bsBasis != null); +var currentStep = this.pFF.getCurrentStep(); +this.vwr.setIntProperty("_minimizationStep", currentStep); +if (doRefresh) { +this.vwr.refresh(3, "minimization step " + currentStep); +}this.reportEnergy(); +this.vwr.setFloatProperty("_minimizationEnergyDiff", this.pFF.toUserUnits(this.pFF.getEnergyDiff())); +this.vwr.notifyMinimizationStatus(); +if (doRefresh) { +if (!this.modelkitMinimizing) this.updateAtomXYZ(false); +this.vwr.refresh(3, "minimization step " + currentStep); +}return going; +}); +Clazz_defineMethod(c$, "endMinimization", +function(normalFinish){ +System.out.println("minimization: " + this.id + " end minimizing=" + this.minimizing + " normal=" + normalFinish); +if (!this.minimizing) return; +this.setMinimizationOn(false); +if (this.pFF == null) { +System.out.println("pFF was null"); +} else { +var failed = this.pFF.detectExplosion(); +if (failed) this.restoreCoordinates(); + else this.updateAtomXYZ(true); +this.vwr.setIntProperty("_minimizationStep", this.pFF.getCurrentStep()); +this.reportEnergy(); +this.vwr.setStringProperty("_minimizationStatus", (failed ? "failed" : normalFinish ? "done" : "stopped")); +this.vwr.notifyMinimizationStatus(); +this.vwr.refresh(3, "minimize:done" + (failed ? " EXPLODED" : "OK")); +}JU.Logger.info("minimize: " + this.id + " endMinimization complete"); +}, "~B"); +Clazz_defineMethod(c$, "saveCoordinates", +function(){ +if (this.coordSaved == null) this.coordSaved = Clazz_newDoubleArray (this.ac, 3, 0); +for (var i = 0; i < this.ac; i++) for (var j = 0; j < 3; j++) this.coordSaved[i][j] = this.minAtoms[i].coord[j]; + + +}); +Clazz_defineMethod(c$, "restoreCoordinates", +function(){ +if (this.coordSaved == null) return; +for (var i = 0; i < this.ac; i++) for (var j = 0; j < 3; j++) this.minAtoms[i].coord[j] = this.coordSaved[i][j]; + + +this.updateAtomXYZ(true); +}); +Clazz_defineMethod(c$, "stopMinimization", +function(coordAreOK){ +if (!this.minimizing) return; +if (coordAreOK) this.endMinimization(false); + else this.restoreCoordinates(); +this.setMinimizationOn(false); +}, "~B"); +Clazz_defineMethod(c$, "updateAtomXYZ", +function(isEnd){ +if (this.steps <= 0 || this.pFF != null && this.pFF.getCurrentStep() == 0) return; +if (!this.modelkitMinimizing) { +for (var i = 0; i < this.ac; i++) { +var minAtom = this.minAtoms[i]; +if (this.bsFixed == null || !this.bsFixed.get(minAtom.atom.i)) minAtom.atom.set(minAtom.coord[0], minAtom.coord[1], minAtom.coord[2]); +} +isEnd = true; +} else { +var a; +var doUpdateMinAtoms = false; +var minAtom = this.minAtoms[0]; +for (var i = 0; i < this.ac; i++) { +minAtom = this.minAtoms[i]; +if (this.bsMinFixed != null && this.bsMinFixed.get(i)) continue; +a = minAtom.atom; +this.p.set(minAtom.coord[0], minAtom.coord[1], minAtom.coord[2]); +if (this.vwr.getModelkit(false).moveMinConstrained(a.i, this.p, this.bsAtoms) > 0) { +doUpdateMinAtoms = true; +}} +if (doUpdateMinAtoms) { +for (var i = 0; i < this.ac; i++) { +minAtom = this.minAtoms[i]; +minAtom.coord[0] = (a = minAtom.atom).x; +minAtom.coord[1] = a.y; +minAtom.coord[2] = a.z; +} +}this.vwr.getModelkit(false).minimizeEnd(this.bsBasis, isEnd); +}if (isEnd) { +this.vwr.refreshMeasures(false); +}}, "~B"); +Clazz_defineMethod(c$, "minimizeWithoutThread", +function(){ +if (!this.startMinimization()) return; +while (this.stepMinimization()) { +} +this.endMinimization(true); +}); +Clazz_defineMethod(c$, "report", +function(msg, isEcho){ +if (this.isSilent) JU.Logger.info(msg); + else if (isEcho) this.vwr.showString(msg, false); + else this.vwr.scriptEcho(msg); +}, "~S,~B"); +Clazz_defineMethod(c$, "calculatePartialCharges", +function(ms, bsAtoms, bsReport){ +var ff = new JM.FF.ForceFieldMMFF(this, false); +ff.setArrays(ms.at, bsAtoms, ms.bo, ms.bondCount, true, true); +this.vwr.setAtomProperty(bsAtoms, 1086326785, 0, 0, null, null, ff.getAtomTypeDescriptions()); +this.vwr.setAtomProperty(bsReport == null ? bsAtoms : bsReport, 1111492619, 0, 0, null, ff.getPartialCharges(), null); +}, "JM.ModelSet,JU.BS,JU.BS"); +Clazz_defineMethod(c$, "getForceFieldUsed", +function(){ +return (this.pFF == null ? null : this.pFF.name); +}); +Clazz_defineMethod(c$, "isLoggable", +function(iData, n){ +if (this.bsBasis == null) return Boolean.TRUE; +if (iData == null) return this.bsBasis.get(this.minAtoms[n].atom.i) ? Boolean.TRUE : Boolean.FALSE; +for (var i = 0; i < n; i++) { +if (this.bsBasis.get(this.minAtoms[iData[i]].atom.i)) return Boolean.TRUE; +} +return Boolean.FALSE; +}, "~A,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "[minimizer " + this.id + " step " + (this.pFF == null ? 0 : this.pFF.getCurrentStep()) + " atoms=" + this.ac + "]"; +}); +c$.staticID = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.data = null; +this.type = 0; +this.key = null; +this.ddata = null; +Clazz_instantialize(this, arguments);}, JM, "MinObject", null); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.type + " " + this.data[0] + "," + this.data[1] + (this.data.length > 2 ? "," + this.data[2] + "," + this.data[3] : "") + " " + JM.MinObject.decodeKey(this.key); +}); +c$.getKey = Clazz_defineMethod(c$, "getKey", +function(type, a1, a2, a3, a4){ +return Integer.$valueOf((((((((a4 << 7) + a3) << 7) + a2) << 7) + a1) << 4) + type); +}, "~N,~N,~N,~N,~N"); +c$.decodeKey = Clazz_defineMethod(c$, "decodeKey", +function(key){ +if (key == null) return null; +var i = key.intValue(); +var type = i & 0xF; +i >>= 4; +var a = i & 0x7F; +i >>= 7; +var b = i & 0x7F; +i >>= 7; +var c = i & 0x7F; +i >>= 7; +var d = i & 0x7F; +return (type < 0 ? type + ": " : "") + (a < 10 ? " " : " ") + a + (b < 10 ? " " : " ") + b + (c < 10 ? " " : " ") + c + (d > 120 ? "" : (d < 10 ? " " : " ") + d); +}, "Integer"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.MinObject"], "JM.MinAngle", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sbType = 0; +this.sbKey = null; +this.ka = 0; +this.theta0 = NaN; +Clazz_instantialize(this, arguments);}, JM, "MinAngle", JM.MinObject); +Clazz_makeConstructor(c$, +function(data){ +Clazz_superConstructor (this, JM.MinAngle, []); +this.data = data; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JU.BS", "$.Lst"], "JM.MinAtom", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atom = null; +this.index = 0; +this.sType = null; +this.coord = null; +this.force = null; +this.bonds = null; +this.nBonds = 0; +this.bondedAtoms = null; +this.bsVdw = null; +this.hCount = -1; +this.partialCharge = 0; +this.ffAtomType = null; +this.ffType = 0; +this.vdwKey = null; +this.bs14 = null; +Clazz_instantialize(this, arguments);}, JM, "MinAtom", null); +Clazz_prepareFields (c$, function(){ +this.coord = Clazz_newDoubleArray (3, 0); +this.force = Clazz_newDoubleArray (3, 0); +this.bonds = new JU.Lst(); +this.bsVdw = new JU.BS(); +this.bs14 = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(index, atom, coord, ac){ +this.index = index; +this.atom = atom; +this.coord = coord; +this.bsVdw.setBits(index + 1, ac); +this.bsVdw.clear(index); +}, "~N,JM.Atom,~A,~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return "#" + this.index + "@" + this.atom.i + " " + this.sType + " " + this.coord[0] + "," + this.coord[1] + "," + this.coord[2]; +}); +Clazz_defineMethod(c$, "set", +function(){ +this.coord[0] = this.atom.x; +this.coord[1] = this.atom.y; +this.coord[2] = this.atom.z; +}); +Clazz_defineMethod(c$, "getBondTo", +function(iAtom){ +this.getBondedAtomIndexes(); +for (var i = 0; i < this.nBonds; i++) if (this.bondedAtoms[i] == iAtom) return this.bonds.get(i); + +return null; +}, "~N"); +Clazz_defineMethod(c$, "getBondedAtomIndexes", +function(){ +if (this.bondedAtoms == null) { +this.bondedAtoms = Clazz_newIntArray (this.nBonds, 0); +for (var i = this.nBonds; --i >= 0; ) this.bondedAtoms[i] = this.bonds.get(i).getOtherAtom(this.index); + +}return this.bondedAtoms; +}); +Clazz_defineMethod(c$, "getIdentity", +function(){ +return this.atom.getInfo(); +}); +Clazz_defineMethod(c$, "addBond", +function(bond, i){ +this.bonds.addLast(bond); +this.nBonds++; +this.bsVdw.clear(i); +}, "JM.MinBond,~N"); +Clazz_defineMethod(c$, "getBondIndex", +function(j){ +return this.bonds.get(j).index; +}, "~N"); +Clazz_defineMethod(c$, "getHCount", +function(){ +if (this.hCount < 0) this.hCount = this.atom.getCovalentHydrogenCount(); +return this.hCount; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.MinObject"], "JM.MinBond", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.rawIndex = 0; +this.index = 0; +this.order = 0; +this.isAromatic = false; +this.isAmide = false; +Clazz_instantialize(this, arguments);}, JM, "MinBond", JM.MinObject); +Clazz_makeConstructor(c$, +function(rawIndex, index, atomIndex1, atomIndex2, order, type, key){ +Clazz_superConstructor (this, JM.MinBond, []); +this.rawIndex = rawIndex; +this.index = index; +this.type = type; +this.data = Clazz_newIntArray(-1, [atomIndex1, atomIndex2]); +this.order = order; +this.key = key; +}, "~N,~N,~N,~N,~N,~N,Integer"); +Clazz_defineMethod(c$, "getOtherAtom", +function(index){ +return this.data[this.data[0] == index ? 1 : 0]; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["JM.MinObject"], "JM.MinTorsion", null, function(){ +var c$ = Clazz_declareType(JM, "MinTorsion", JM.MinObject); +Clazz_makeConstructor(c$, +function(data){ +Clazz_superConstructor (this, JM.MinTorsion, []); +this.data = data; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.Util", ["java.util.Random"], function(){ +var c$ = Clazz_declareType(JM, "Util", null); +c$.sub = Clazz_defineMethod(c$, "sub", +function(a, b, result){ +result.set(a[0] - b[0], a[1] - b[1], a[2] - b[2]); +}, "~A,~A,JU.V3d"); +c$.putCoord = Clazz_defineMethod(c$, "putCoord", +function(v, c){ +c[0] = v.x; +c[1] = v.y; +c[2] = v.z; +}, "JU.V3d,~A"); +c$.distance2 = Clazz_defineMethod(c$, "distance2", +function(a, b){ +var dx = a[0] - b[0]; +var dy = a[1] - b[1]; +var dz = a[2] - b[2]; +return (dx * dx + dy * dy + dz * dz); +}, "~A,~A"); +c$.distance2V = Clazz_defineMethod(c$, "distance2V", +function(a, b){ +var dx = a.x - b.x; +var dy = a.y - b.y; +var dz = a.z - b.z; +return (dx * dx + dy * dy + dz * dz); +}, "JU.V3d,JU.V3d"); +c$.getAngleRadiansABC = Clazz_defineMethod(c$, "getAngleRadiansABC", +function(a, b, c){ +var ab2 = JM.Util.distance2(a, b); +var bc2 = JM.Util.distance2(b, c); +var ac2 = JM.Util.distance2(a, c); +return ((JM.Util.isNearZero2(ab2, 1e-3) || JM.Util.isNearZero2(bc2, 1e-3) ? 0 : Math.acos(Math.min(Math.max((ab2 + bc2 - ac2) / 2 / Math.sqrt(ab2 * bc2), -1), 1)))); +}, "~A,~A,~A"); +c$.isApprox = Clazz_defineMethod(c$, "isApprox", +function(a, b, precision){ +return (JM.Util.distance2V(a, b) <= precision * precision * Math.min(a.lengthSquared(), b.lengthSquared())); +}, "JU.V3d,JU.V3d,~N"); +c$.canBeSquared = Clazz_defineMethod(c$, "canBeSquared", +function(x){ +if (x == 0) return true; +return ((x = Math.abs(x)) < 1.0E150 && x > 1.0E-150); +}, "~N"); +c$.isNegligible = Clazz_defineMethod(c$, "isNegligible", +function(a, b){ +return JM.Util.isNegligible3(a, b, 1e-11); +}, "~N,~N"); +c$.isFinite = Clazz_defineMethod(c$, "isFinite", +function(a){ +return !Double.isInfinite(a) && !Double.isNaN(a); +}, "~N"); +c$.isNegligible3 = Clazz_defineMethod(c$, "isNegligible3", +function(a, b, precision){ +return (Math.abs(a) <= precision * Math.abs(b)); +}, "~N,~N,~N"); +c$.isNear = Clazz_defineMethod(c$, "isNear", +function(a, b){ +return JM.Util.isNear3(a, b, 2e-6); +}, "~N,~N"); +c$.isNear3 = Clazz_defineMethod(c$, "isNear3", +function(a, b, epsilon){ +return (Math.abs(a - b) < epsilon); +}, "~N,~N,~N"); +c$.isNearZero = Clazz_defineMethod(c$, "isNearZero", +function(a){ +return JM.Util.isNearZero2(a, 2e-6); +}, "~N"); +c$.isNearZero2 = Clazz_defineMethod(c$, "isNearZero2", +function(a, epsilon){ +return (Math.abs(a) < epsilon); +}, "~N,~N"); +c$.canBeNormalized = Clazz_defineMethod(c$, "canBeNormalized", +function(a){ +if (a.x == 0.0 && a.y == 0.0 && a.z == 0.0) return false; +return (JM.Util.canBeSquared(a.x) && JM.Util.canBeSquared(a.y) && JM.Util.canBeSquared(a.z)); +}, "JU.V3d"); +c$.pointPlaneAngleRadians = Clazz_defineMethod(c$, "pointPlaneAngleRadians", +function(a, b, c, d, v1, v2, norm, fixTheta){ +v1.sub2(b, c); +v2.sub2(b, d); +norm.cross(v1, v2); +v2.add(v1); +v1.sub2(b, a); +var angleA_CD = (fixTheta ? JM.Util.vectorAngleRadians(v2, v1) : 3.141592653589793); +var angleNorm = JM.Util.vectorAngleRadians(norm, v1); +if (angleNorm > 1.5707963267948966) angleNorm = 3.141592653589793 - angleNorm; +var val = 1.5707963267948966 + (angleA_CD > 1.5707963267948966 ? -angleNorm : angleNorm); +return val; +}, "JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,~B"); +c$.vectorAngleRadians = Clazz_defineMethod(c$, "vectorAngleRadians", +function(v1, v2){ +var l1 = v1.length(); +var l2 = v2.length(); +return (JM.Util.isNearZero(l1) || JM.Util.isNearZero(l2) ? 0 : Math.acos(v1.dot(v2) / (l1 * l2))); +}, "JU.V3d,JU.V3d"); +c$.getTorsionAngleRadians = Clazz_defineMethod(c$, "getTorsionAngleRadians", +function(a, b, c, d, r1, r2, r3){ +JM.Util.sub(b, a, r1); +JM.Util.sub(c, b, r2); +r2.normalize(); +r1.cross(r1, r2); +JM.Util.sub(d, c, r3); +r3.cross(r2, r3); +var p1dotp2 = r1.dot(r3); +r1.cross(r3, r1); +var theta = Math.atan2(-r2.dot(r1), p1dotp2); +return theta; +}, "~A,~A,~A,~A,JU.V3d,JU.V3d,JU.V3d"); +c$.restorativeForceAndDistance = Clazz_defineMethod(c$, "restorativeForceAndDistance", +function(a, b, vab){ +vab.sub2(a, b); +var rab = vab.length(); +if (rab < 0.1) { +JM.Util.randomizeUnitVector(vab); +rab = 0.1; +}vab.normalize(); +a.setT(vab); +a.scale(-1); +b.setT(vab); +return rab; +}, "JU.V3d,JU.V3d,JU.V3d"); +c$.randomizeUnitVector = Clazz_defineMethod(c$, "randomizeUnitVector", +function(v){ +var ptr = new java.util.Random(); +var l; +do { +v.set(ptr.nextFloat() - 0.5, ptr.nextFloat() - 0.5, ptr.nextFloat() - 0.5); +l = v.lengthSquared(); +} while ((l > 1.0) || (l < 1e-4)); +v.normalize(); +}, "JU.V3d"); +c$.restorativeForceAndAngleRadians = Clazz_defineMethod(c$, "restorativeForceAndAngleRadians", +function(i, j, k){ +i.sub(j); +k.sub(j); +var length1 = i.length(); +var length2 = k.length(); +if (JM.Util.isNearZero(length1) || JM.Util.isNearZero(length2)) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +return 0.0; +}var inverse_length_v1 = 1.0 / length1; +var inverse_length_v2 = 1.0 / length2; +i.scale(inverse_length_v1); +k.scale(inverse_length_v2); +j.cross(i, k); +var length = j.length(); +if (JM.Util.isNearZero(length)) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +return 0.0; +}j.scale(1 / length); +var costheta = i.dot(k); +var theta; +if (costheta > 1.0) { +theta = 0.0; +costheta = 1.0; +} else if (costheta < -1.0) { +theta = 3.141592653589793; +costheta = -1.0; +} else { +theta = Math.acos(costheta); +}i.cross(i, j); +i.normalize(); +j.cross(k, j); +j.normalize(); +i.scale(-inverse_length_v1); +j.scale(inverse_length_v2); +k.setT(j); +j.add(i); +j.scale(-1); +return theta; +}, "JU.V3d,JU.V3d,JU.V3d"); +c$.restorativeForceAndOutOfPlaneAngleRadians = Clazz_defineMethod(c$, "restorativeForceAndOutOfPlaneAngleRadians", +function(i, j, k, l, an, bn, cn){ +i.sub2(i, j); +k.sub2(k, j); +l.sub2(l, j); +var length_ji = i.length(); +var length_jk = k.length(); +var length_jl = l.length(); +if (JM.Util.isNearZero(length_ji) || JM.Util.isNearZero(length_jk) || JM.Util.isNearZero(length_jl)) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +l.set(0, 0, 0); +return 0.0; +}i.normalize(); +k.normalize(); +l.normalize(); +var cos_theta = i.dot(k); +var theta = Math.acos(cos_theta); +if (JM.Util.isNearZero(theta) || JM.Util.isNearZero(Math.abs(theta - 3.141592653589793))) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +l.set(0, 0, 0); +return 0.0; +}var csc_theta = 1 / Math.sin(theta); +an.cross(i, k); +bn.cross(k, l); +cn.cross(l, i); +var sin_dl = an.dot(l) * csc_theta; +var dl = Math.asin(sin_dl); +var cos_dl = Math.cos(dl); +if (cos_dl < 0.0001 || JM.Util.isNearZero(dl) || JM.Util.isNearZero(Math.abs(dl - 3.141592653589793))) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +l.set(0, 0, 0); +return dl; +}l.scaleAdd2(-sin_dl / csc_theta, l, an); +l.scale(csc_theta / length_jl); +j.setT(i); +i.scaleAdd2(-cos_theta, k, i); +i.scaleAdd2(-sin_dl * csc_theta, i, bn); +i.scale(csc_theta / length_ji); +k.scaleAdd2(-cos_theta, j, k); +k.scaleAdd2(-sin_dl * csc_theta, k, cn); +k.scale(csc_theta / length_jk); +j.setT(i); +j.add(k); +j.add(l); +j.scale(-1); +return dl; +}, "JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d"); +c$.restorativeForceAndTorsionAngleRadians = Clazz_defineMethod(c$, "restorativeForceAndTorsionAngleRadians", +function(i, j, k, l){ +i.sub2(j, i); +j.sub2(k, j); +k.sub2(l, k); +var len_ij = i.length(); +var len_jk = j.length(); +var len_kl = k.length(); +if (JM.Util.isNearZero(len_ij) || JM.Util.isNearZero(len_jk) || JM.Util.isNearZero(len_kl)) { +i.set(0, 0, 0); +j.set(0, 0, 0); +k.set(0, 0, 0); +l.set(0, 0, 0); +return 0.0; +}var ang = JM.Util.vectorAngleRadians(i, j); +var sin_j = Math.sin(ang); +var cos_j = Math.cos(ang); +ang = JM.Util.vectorAngleRadians(j, k); +var sin_k = Math.sin(ang); +var cos_k = Math.cos(ang); +i.normalize(); +j.normalize(); +k.normalize(); +i.cross(i, j); +l.cross(j, k); +k.cross(i, l); +var theta = -Math.atan2(k.dot(j), i.dot(l)); +i.scale(1. / len_ij / sin_j / sin_j); +l.scale(-1.0 / len_kl / sin_k / sin_k); +j.setT(i); +j.scale(-len_ij / len_jk * cos_j - 1.); +k.setT(l); +k.scale(-len_kl / len_jk * cos_k); +j.sub(k); +k.setT(i); +k.add(j); +k.add(l); +k.scale(-1); +return theta; +}, "JU.V3d,JU.V3d,JU.V3d,JU.V3d"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.elemNo = 0; +this.descr = null; +this.smartsCode = null; +this.mmType = 0; +this.hType = 0; +this.formalCharge = 0; +this.fcadj = 0; +this.sbmb = false; +this.arom = false; +this.pilp = false; +this.mltb = 0; +this.val = 0; +Clazz_instantialize(this, arguments);}, JM.FF, "AtomType", null); +Clazz_makeConstructor(c$, +function(elemNo, mmType, hType, formalCharge, val, descr, smartsCode){ +this.elemNo = elemNo; +this.mmType = mmType; +this.hType = hType; +this.formalCharge = formalCharge; +this.val = val; +this.descr = descr; +this.smartsCode = smartsCode; +}, "~N,~N,~N,~N,~N,~S,~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(null, "JM.FF.ForceField", ["JU.PT", "JM.Util", "JU.Logger", "JV.FileManager", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.calc = null; +this.criterion = 0; +this.e0 = 0; +this.dE = 0; +this.currentStep = 0; +this.stepMax = 0; +this.coordSaved = null; +this.minAtomCount = 0; +this.minBondCount = 0; +this.minAtoms = null; +this.minBonds = null; +this.minAngles = null; +this.minTorsions = null; +this.bsMinFixed = null; +this.trustRadius = 0.3; +this.minimizer = null; +this.nth = 10; +Clazz_instantialize(this, arguments);}, JM.FF, "ForceField", null); +Clazz_defineMethod(c$, "setModelFields", +function(){ +this.minAtoms = this.minimizer.minAtoms; +this.minBonds = this.minimizer.minBonds; +this.minAngles = this.minimizer.minAngles; +this.minTorsions = this.minimizer.minTorsions; +this.bsMinFixed = this.minimizer.bsMinFixed; +this.minAtomCount = this.minAtoms.length; +this.minBondCount = this.minBonds.length; +}); +Clazz_defineMethod(c$, "setConstraints", +function(m){ +this.bsMinFixed = m.bsMinFixed; +this.calc.setConstraints(m.constraints); +this.coordSaved = null; +}, "JM.Minimizer"); +Clazz_defineMethod(c$, "steepestDescentInitialize", +function(stepMax, criterion, trustRadius){ +this.stepMax = stepMax; +this.criterion = criterion / this.toUserUnits(1); +this.trustRadius = trustRadius; +this.currentStep = 0; +this.clearForces(); +this.calc.setLoggingEnabled(true); +this.calc.setLoggingEnabled(stepMax == 0 || JU.Logger.isActiveLevel(6)); +var s = this.name + " " + this.calc.getDebugHeader(-1) + "Jmol Minimization Version " + JV.Viewer.getJmolVersion() + "\n"; +this.calc.appendLogData(s); +JU.Logger.info(s); +this.calc.getConstraintList(); +if (this.calc.loggingEnabled) this.calc.appendLogData(this.calc.getAtomList("S T E E P E S T D E S C E N T")); +this.dE = 0; +this.calc.setPreliminary(stepMax > 0); +this.recalculateEnergy(); +s = JU.PT.sprintf(" Initial " + this.name + " E = %10.3f " + this.minimizer.units + "/mol criterion = %8.6f max steps = " + stepMax, "ff", Clazz_newArray(-1, [Float.$valueOf(this.toUserUnits(this.e0)), Float.$valueOf(this.toUserUnits(criterion))])); +this.minimizer.report(s, false); +this.calc.appendLogData(s); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "clearForces", +function(){ +for (var i = 0; i < this.minAtomCount; i++) this.minAtoms[i].force[0] = this.minAtoms[i].force[1] = this.minAtoms[i].force[2] = 0; + +}); +Clazz_defineMethod(c$, "steepestDescentTakeNSteps", +function(n, doUpdateAtoms){ +if (this.stepMax == 0) return false; +var isPreliminary = true; +for (var iStep = 1; iStep <= n; iStep++) { +this.currentStep++; +this.calc.setSilent(true); +for (var i = 0; i < this.minAtomCount; i++) if (this.bsMinFixed == null || !this.bsMinFixed.get(i)) this.setForcesUsingNumericalDerivative(this.minAtoms[i], 1); + +this.linearSearch(doUpdateAtoms); +this.calc.setSilent(false); +if (this.calc.loggingEnabled) this.calc.appendLogData(this.calc.getAtomList("S T E P " + this.currentStep)); +var e1 = this.energyFull(false, false); +this.dE = e1 - this.e0; +var done = JM.Util.isNear3(e1, this.e0, this.criterion); +if (done || this.currentStep % this.nth == 0 || this.stepMax <= this.currentStep) { +var s = JU.PT.sprintf(this.name + " Step %-4d E = %10.6f dE = %8.6f ", "Fi", Clazz_newArray(-1, [ Clazz_newFloatArray(-1, [this.toUserUnits(e1), this.toUserUnits(this.dE)]), Integer.$valueOf(this.currentStep)])); +this.minimizer.report(s, false); +this.calc.appendLogData(s); +}this.e0 = e1; +if (done || this.stepMax <= this.currentStep) { +if (this.calc.loggingEnabled) this.calc.appendLogData(this.calc.getAtomList("F I N A L G E O M E T R Y")); +if (done) { +var s = JU.PT.formatStringF("\n " + this.name + " STEEPEST DESCENT HAS CONVERGED: E = %8.5f " + this.minimizer.units + "/mol after " + this.currentStep + " steps", "f", this.toUserUnits(e1)); +this.calc.appendLogData(s); +this.minimizer.report(s, true); +JU.Logger.info(s); +}return false; +}if (isPreliminary && this.getNormalizedDE() >= 2) { +this.calc.setPreliminary(isPreliminary = false); +this.e0 = this.energyFull(false, false); +}} +return true; +}, "~N,~B"); +Clazz_defineMethod(c$, "getEnergies", +function(terms, gradients){ +if ((terms & 1) != 0) return this.energyFull(gradients, true); +var e = 0.0; +if ((terms & 2) != 0) e += this.energyBond(gradients); +if ((terms & 4) != 0) e += this.energyAngle(gradients); +if ((terms & 8) != 0) e += this.energyStretchBend(gradients); +if ((terms & 32) != 0) e += this.energyOOP(gradients); +if ((terms & 16) != 0) e += this.energyTorsion(gradients); +if ((terms & 64) != 0) e += this.energyVDW(gradients); +if ((terms & 128) != 0) e += this.energyES(gradients); +return e; +}, "~N,~B"); +Clazz_defineMethod(c$, "setForcesUsingNumericalDerivative", +function(atom, terms){ +var delta = 1.0e-5; +atom.force[0] = -this.getDE(atom, terms, 0, delta); +atom.force[1] = -this.getDE(atom, terms, 1, delta); +atom.force[2] = -this.getDE(atom, terms, 2, delta); +return; +}, "JM.MinAtom,~N"); +Clazz_defineMethod(c$, "getDE", +function(atom, terms, i, delta){ +atom.coord[i] += delta; +var e = this.getEnergies(terms, false); +atom.coord[i] -= delta; +return (e - this.e0) / delta; +}, "JM.MinAtom,~N,~N,~N"); +Clazz_defineMethod(c$, "energyFull", +function(gradients, isSilent){ +var energy; +if (gradients) this.clearForces(); +energy = this.energyBond(gradients) + this.energyAngle(gradients) + this.energyTorsion(gradients) + this.energyStretchBend(gradients) + this.energyOOP(gradients) + this.energyVDW(gradients) + this.energyES(gradients); +if (!isSilent && this.calc.loggingEnabled) this.calc.appendLogData(JU.PT.sprintf("\nTOTAL %s ENERGY = %8.3f %s/mol\n", "sfs", Clazz_newArray(-1, [this.name, Float.$valueOf(this.toUserUnits(energy)), this.minimizer.units]))); +return energy; +}, "~B,~B"); +Clazz_defineMethod(c$, "energyStretchBend", +function(gradients){ +return this.calc.energyStretchBend(gradients); +}, "~B"); +Clazz_defineMethod(c$, "energyBond", +function(gradients){ +return this.calc.energyBond(gradients); +}, "~B"); +Clazz_defineMethod(c$, "energyAngle", +function(gradients){ +return this.calc.energyAngle(gradients); +}, "~B"); +Clazz_defineMethod(c$, "energyTorsion", +function(gradients){ +return this.calc.energyTorsion(gradients); +}, "~B"); +Clazz_defineMethod(c$, "energyOOP", +function(gradients){ +return this.calc.energyOOP(gradients); +}, "~B"); +Clazz_defineMethod(c$, "energyVDW", +function(gradients){ +return this.calc.energyVDW(gradients); +}, "~B"); +Clazz_defineMethod(c$, "energyES", +function(gradients){ +return this.calc.energyES(gradients); +}, "~B"); +Clazz_defineMethod(c$, "linearSearch", +function(doUpdateAtoms){ +var step = 0.75 * this.trustRadius; +var trustRadius2 = this.trustRadius * this.trustRadius; +var e1 = this.energyFull(false, true); +var nSteps = 10; +var isDone = false; +for (var iStep = 0; iStep < nSteps && !isDone; iStep++) { +this.saveCoordinates(); +for (var i = 0; i < this.minAtomCount; ++i) { +if (this.bsMinFixed == null || !this.bsMinFixed.get(i)) { +var force = this.minAtoms[i].force; +var coord = this.minAtoms[i].coord; +var f2 = (force[0] * force[0] + force[1] * force[1] + force[2] * force[2]); +var f = trustRadius2 / step / step / f2; +if (1 > f) { +f2 = Math.sqrt(f); +force[0] *= f2; +force[1] *= f2; +force[2] *= f2; +}for (var j = 0; j < 3; ++j) { +if (JM.Util.isFinite(force[j])) { +var tempStep = force[j] * step; +if (tempStep > this.trustRadius) coord[j] += this.trustRadius; + else if (tempStep < -this.trustRadius) coord[j] -= this.trustRadius; + else coord[j] += tempStep; +}} +}} +if (doUpdateAtoms) { +this.minimizer.updateAtomXYZ(false); +}var e2 = this.energyFull(false, true); +isDone = JM.Util.isNear3(e2, e1, 1.0e-3); +if (e2 > e1) { +step *= 0.1; +this.restoreCoordinates(); +} else if (e2 < e1) { +e1 = e2; +step *= 2.15; +if (step > 1.0) step = 1.0; +}} +}, "~B"); +Clazz_defineMethod(c$, "saveCoordinates", +function(){ +if (this.coordSaved == null) this.coordSaved = Clazz_newDoubleArray (this.minAtomCount, 3, 0); +for (var i = 0; i < this.minAtomCount; i++) for (var j = 0; j < 3; j++) this.coordSaved[i][j] = this.minAtoms[i].coord[j]; + + +}); +Clazz_defineMethod(c$, "restoreCoordinates", +function(){ +for (var i = 0; i < this.minAtomCount; i++) for (var j = 0; j < 3; j++) this.minAtoms[i].coord[j] = this.coordSaved[i][j]; + + +}); +Clazz_defineMethod(c$, "detectExplosion", +function(){ +for (var i = 0; i < this.minAtomCount; i++) { +var atom = this.minAtoms[i]; +for (var j = 0; j < 3; j++) if (!JM.Util.isFinite(atom.coord[j])) return true; + +} +for (var i = 0; i < this.minBondCount; i++) { +var bond = this.minBonds[i]; +if (JM.Util.distance2(this.minAtoms[bond.data[0]].coord, this.minAtoms[bond.data[1]].coord) > 900.0) return true; +} +return false; +}); +Clazz_defineMethod(c$, "getCurrentStep", +function(){ +return this.currentStep; +}); +Clazz_defineMethod(c$, "getEnergy", +function(){ +return this.e0; +}); +Clazz_defineMethod(c$, "getAtomList", +function(title){ +return this.calc.getAtomList(title); +}, "~S"); +Clazz_defineMethod(c$, "getEnergyDiff", +function(){ +return this.dE; +}); +Clazz_defineMethod(c$, "getLogData", +function(){ +return this.calc.getLogData(); +}); +Clazz_defineMethod(c$, "getNormalizedDE", +function(){ +return Math.abs(this.dE / this.criterion); +}); +Clazz_defineMethod(c$, "toUserUnits", +function(energy){ +return this.toUnits(energy, this.calc.getUnits()); +}, "~N"); +Clazz_defineMethod(c$, "toUnits", +function(energy, units){ +return (units.equalsIgnoreCase(this.minimizer.units) ? energy : energy * (this.minimizer.units.equals("kJ") ? 4.1868 : 0.23884589662749595)); +}, "~N,~S"); +Clazz_defineMethod(c$, "log", +function(s){ +this.calc.appendLogData(s); +}, "~S"); +Clazz_defineMethod(c$, "getBufferedReader", +function(resourceName){ +return JV.FileManager.getBufferedReaderForResource(this.minimizer.vwr, this, "JM/FF/", "data/" + resourceName); +}, "~S"); +Clazz_defineMethod(c$, "recalculateEnergy", +function(){ +this.e0 = this.energyFull(false, false); +}); +Clazz_defineMethod(c$, "setNth", +function(n){ +this.nth = n; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.ForceField"], "JM.FF.ForceFieldMMFF", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Lst", "$.PT", "JM.MinObject", "JM.FF.AtomType", "$.CalculationsMMFF", "JU.BSUtil", "$.Elements", "$.Escape", "$.Logger", "JV.JmolAsyncException"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ffParams = null; +this.rawAtomTypes = null; +this.rawBondTypes = null; +this.rawMMFF94Charges = null; +this.vRings = null; +this.line = null; +this.typeData = null; +Clazz_instantialize(this, arguments);}, JM.FF, "ForceFieldMMFF", JM.FF.ForceField); +Clazz_prepareFields (c$, function(){ +this.typeData = Clazz_newIntArray (4, 0); +}); +Clazz_makeConstructor(c$, +function(m, isQuick){ +Clazz_superConstructor (this, JM.FF.ForceFieldMMFF, []); +this.minimizer = m; +if (isQuick) { +this.name = "MMFF2D"; +this.ffParams = JM.FF.ForceFieldMMFF.mmff2DParams; +if (this.ffParams == null) JM.FF.ForceFieldMMFF.mmff2DParams = this.ffParams = this.getParameters(true); +} else { +this.name = "MMFF"; +this.ffParams = JM.FF.ForceFieldMMFF.mmffParams; +if (this.ffParams == null) JM.FF.ForceFieldMMFF.mmffParams = this.ffParams = this.getParameters(false); +}}, "JM.Minimizer,~B"); +Clazz_defineMethod(c$, "getAtomTypeDescriptions", +function(){ +return JM.FF.ForceFieldMMFF.getAtomTypeDescs(this.rawAtomTypes); +}); +Clazz_defineMethod(c$, "getPartialCharges", +function(){ +return this.rawMMFF94Charges; +}); +Clazz_overrideMethod(c$, "clear", +function(){ +}); +Clazz_overrideMethod(c$, "setModel", +function(bsElements, elemnoMax){ +var m = this.minimizer; +if (!this.setArrays(m.atoms, m.bsAtoms, m.bonds, m.rawBondCount, false, false)) return false; +this.setModelFields(); +if (!this.fixTypes()) return false; +this.calc = new JM.FF.CalculationsMMFF(this, this.ffParams, this.minAtoms, this.minBonds, this.minAngles, this.minTorsions, this.minimizer.constraints); +this.calc.setLoggingEnabled(true); +return this.calc.setupCalculations(); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "setArrays", +function(atoms, bsAtoms, bonds, rawBondCount, doRound, allowUnknowns){ +var m = this.minimizer; +this.vRings = JU.AU.createArrayOfArrayList(4); +this.rawAtomTypes = JM.FF.ForceFieldMMFF.setAtomTypes(atoms, bsAtoms, m.vwr.getSmilesMatcher(), this.vRings, allowUnknowns); +if (this.rawAtomTypes == null) return false; +this.rawBondTypes = this.setBondTypes(bonds, rawBondCount, bsAtoms); +this.rawMMFF94Charges = this.calculatePartialCharges(bonds, this.rawBondTypes, atoms, this.rawAtomTypes, bsAtoms, doRound); +return true; +}, "~A,JU.BS,~A,~N,~B,~B"); +Clazz_defineMethod(c$, "getParameters", +function(isQuick){ +this.getAtomTypes(); +var resourceName = (isQuick ? "mmff94_2d.par.txt" : "mmff94.par.txt"); +var data = new java.util.Hashtable(); +if (JU.Logger.debugging) JU.Logger.debug("reading data from " + resourceName); +var br = null; +var line = null; +try { +br = this.getBufferedReader(resourceName); +var pt = 0; +var dataType = 0; +while (true) { +while ((pt = (line = br.readLine()).indexOf(".PAR")) < 0) { +} +if ((dataType = JM.FF.ForceFieldMMFF.types[Clazz_doubleToInt("END.BCI.CHG.ANG.NDK.OND.OOP.TBN.FSB.TOR.VDW.".indexOf(line.substring(pt - 3, pt + 1)) / 4)]) < 1) break; +this.readParams(br, dataType, data); +} +br.close(); +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +throw new JV.JmolAsyncException(e.getFileName()); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.err.println("Exception " + e.toString() + " in getResource " + resourceName + " line=" + line); +} +} else { +throw e$$; +} +} finally { +try { +br.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +} +return data; +}, "~B"); +Clazz_defineMethod(c$, "readParams", +function(br, dataType, data){ +var value = null; +var a1 = 0; +var a2 = 127; +var a3 = 127; +var a4 = 127; +var type = 0; +switch (dataType) { +case 3: +case 5: +case 9: +break; +case 34: +a4 = 124; +break; +case 21: +a4 = 125; +break; +case 546: +a4 = 123; +type = 0; +break; +case 13: +type = 6; +break; +case 1: +type = 0; +break; +case 37: +a4 = 126; +type = 0; +break; +case 17: +a4 = 122; +type = 0; +break; +} +while (!br.readLine().startsWith("*")) { +} +while ((this.line = br.readLine()).startsWith("*")) { +} +do { +switch (dataType) { +case 546: +case 13: +case 1: +case 37: +break; +case 17: +if (this.line.charAt(5) != ' ') continue; +break; +case 34: +if (this.line.charAt(0) == '4') continue; +case 5: +case 3: +case 21: +case 9: +type = (this.line.charAt(0)).charCodeAt(0) - 48; +break; +} +switch (dataType) { +case 13: +case 9: +a4 = this.ival(18, 20); +case 5: +case 21: +case 37: +a3 = this.ival(13, 15); +case 546: +case 3: +case 34: +a2 = this.ival(8, 10); +case 1: +case 17: +a1 = this.ival(3, 5); +break; +} +switch (dataType) { +case 546: +value = Clazz_newDoubleArray(-1, [this.dval(19, 25), this.dval(13, 18)]); +break; +case 3: +value = Clazz_newDoubleArray(-1, [this.dval(14, 20), this.dval(25, 31)]); +break; +case 5: +case 21: +value = Clazz_newDoubleArray(-1, [this.dval(19, 25), this.dval(28, 35)]); +break; +case 34: +value = Float.$valueOf(this.fval(10, 20)); +break; +case 13: +value = Clazz_newDoubleArray(-1, [this.dval(24, 30)]); +break; +case 1: +value = Float.$valueOf(this.fval(5, 15)); +break; +case 37: +var v1 = this.dval(19, 25); +var v2 = this.dval(28, 35); +value = Clazz_newDoubleArray(-1, [v1, v2]); +var key = JM.MinObject.getKey(type, a1, a2, a3, a4); +data.put(key, value); +value = Clazz_newDoubleArray(-1, [v2, v1]); +var a = a1; +a1 = a3; +a3 = a; +break; +case 9: +value = Clazz_newDoubleArray(-1, [this.dval(22, 28), this.dval(30, 36), this.dval(38, 44)]); +break; +case 17: +value = Clazz_newDoubleArray(-1, [this.dval(10, 15), this.dval(20, 25), this.dval(30, 35), this.dval(40, 45), this.line.charAt(46)]); +break; +} +var key = JM.MinObject.getKey(type, a1, a2, a3, a4); +data.put(key, value); +if (JU.Logger.debugging) JU.Logger.debug(JM.MinObject.decodeKey(key) + " " + (Clazz_instanceOf(value, Float) ? value : JU.Escape.eAD(value))); +} while (!(this.line = br.readLine()).startsWith("$")); +}, "java.io.BufferedReader,~N,java.util.Map"); +Clazz_defineMethod(c$, "ival", +function(i, j){ +return JU.PT.parseInt(this.line.substring(i, j).trim()); +}, "~N,~N"); +Clazz_defineMethod(c$, "fval", +function(i, j){ +return Float.$valueOf(this.line.substring(i, j).trim()).floatValue(); +}, "~N,~N"); +Clazz_defineMethod(c$, "dval", +function(i, j){ +return Double.$valueOf(this.line.substring(i, j).trim()).doubleValue(); +}, "~N,~N"); +Clazz_defineMethod(c$, "getAtomTypes", +function(){ +var resourceName = "MMFF94-smarts.txt"; +var types = new JU.Lst(); +try { +var br = this.getBufferedReader(resourceName); +var at; +types.addLast( new JM.FF.AtomType(0, 0, 0, 0, 1, "H or NOT FOUND", "")); +while ((this.line = br.readLine()) != null) { +if (this.line.length == 0 || this.line.startsWith("#")) continue; +var elemNo = this.ival(3, 5); +var mmType = this.ival(6, 8); +var hType = this.ival(9, 11); +var formalCharge = this.fval(12, 15) / 12; +var val = this.ival(16, 18); +var desc = this.line.substring(19, 44).trim(); +var smarts = this.line.substring(45).trim(); +types.addLast(at = new JM.FF.AtomType(elemNo, mmType, hType, formalCharge, val, desc, smarts)); +JM.FF.ForceFieldMMFF.setFlags(at); +} +br.close(); +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +throw new JV.JmolAsyncException(e.getFileName()); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.err.println("Exception " + e.toString() + " in getResource " + resourceName + " line=" + this.line); +} +} else { +throw e$$; +} +} +JU.Logger.info((types.size() - 1) + " SMARTS-based atom types read"); +JM.FF.ForceFieldMMFF.atomTypes = types; +}); +c$.setFlags = Clazz_defineMethod(c$, "setFlags", +function(at){ +switch (at.mmType) { +case 32: +case 35: +case 72: +at.fcadj = 0.5; +break; +case 62: +case 76: +at.fcadj = 0.25; +break; +} +switch (at.mmType) { +case 37: +case 38: +case 39: +case 44: +case 58: +case 59: +case 63: +case 64: +case 65: +case 66: +case 69: +case 78: +case 79: +case 81: +case 82: +at.arom = true; +} +switch (at.mmType) { +case 2: +case 3: +case 4: +case 9: +case 30: +case 37: +case 39: +case 54: +case 57: +case 58: +case 63: +case 64: +case 67: +case 75: +case 78: +case 80: +case 81: +at.sbmb = true; +} +switch (at.mmType) { +case 6: +case 8: +case 10: +case 11: +case 12: +case 13: +case 14: +case 15: +case 26: +case 32: +case 35: +case 39: +case 40: +case 43: +case 44: +case 59: +case 62: +case 70: +case 72: +case 76: +at.pilp = true; +} +switch (at.mmType) { +case 10: +case 32: +case 35: +case 39: +case 41: +case 44: +case 55: +case 56: +case 58: +case 59: +case 69: +case 72: +case 81: +case 82: +at.mltb = 1; +break; +case 2: +case 3: +case 7: +case 9: +case 16: +case 17: +case 30: +case 37: +case 38: +case 45: +case 46: +case 47: +case 51: +case 53: +case 54: +case 57: +case 63: +case 64: +case 65: +case 66: +case 67: +case 74: +case 75: +case 78: +case 79: +case 80: +at.mltb = 2; +break; +case 4: +case 42: +case 60: +case 61: +at.mltb = 3; +break; +} +}, "JM.FF.AtomType"); +Clazz_defineMethod(c$, "calculatePartialCharges", +function(bonds, bTypes, atoms, aTypes, bsAtoms, doRound){ +var partialCharges = Clazz_newFloatArray (atoms.length, 0); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) partialCharges[i] = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, aTypes[i])).formalCharge; + +var a1 = null; +for (var i = bTypes.length; --i >= 0; ) { +a1 = bonds[i].atom1; +var a2 = bonds[i].atom2; +var ok1 = bsAtoms.get(a1.i); +var ok2 = bsAtoms.get(a2.i); +if (!ok1 && !ok2) continue; +var it = aTypes[a1.i]; +var at1 = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +var type1 = (it < 0 ? -it : at1.mmType); +it = aTypes[a2.i]; +var at2 = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +var type2 = (it < 0 ? -it : at2.mmType); +var dq = NaN; +try { +var bondType = bTypes[i]; +var bFactor = (type1 < type2 ? -1 : 1); +var key = JM.MinObject.getKey(bondType, bFactor == 1 ? type2 : type1, bFactor == 1 ? type1 : type2, 127, 124); +var bciValue = this.ffParams.get(key); +var bci = NaN; +var msg = (JU.Logger.debugging ? a1 + "/" + a2 + " mmTypes=" + type1 + "/" + type2 + " formalCharges=" + at1.formalCharge + "/" + at2.formalCharge + " bci = " : null); +if (bciValue == null) { +var a; +var b; +if ((a = this.ffParams.get(JM.MinObject.getKey(0, type1, 127, 127, 127))) != null && (b = this.ffParams.get(JM.MinObject.getKey(0, type2, 127, 127, 127))) != null) { +var pa = a.floatValue(); +var pb = b.floatValue(); +bci = pa - pb; +if (JU.Logger.debugging) msg += pa + " - " + pb + " = "; +}} else { +bci = bFactor * bciValue.floatValue(); +}if (JU.Logger.debugging) { +msg += bci; +JU.Logger.debug(msg); +}dq = at2.fcadj * at2.formalCharge - at1.fcadj * at1.formalCharge + bci; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +dq = NaN; +} else { +throw e; +} +} +if (ok1) partialCharges[a1.i] += dq; +if (ok2) partialCharges[a2.i] -= dq; +} +if (doRound) { +var abscharge = 0; +for (var i = partialCharges.length; --i >= 0; ) { +partialCharges[i] = (Math.round(partialCharges[i] * 1000)) / 1000; +abscharge += Math.abs(partialCharges[i]); +} +if (abscharge == 0 && a1 != null) { +partialCharges[a1.i] = -0.0; +}}return partialCharges; +}, "~A,~A,~A,~A,JU.BS,~B"); +c$.isSpecialBondType = Clazz_defineMethod(c$, "isSpecialBondType", +function(at1, at2){ +return at1.sbmb && at2.sbmb || at1.arom && at2.arom; +}, "JM.FF.AtomType,JM.FF.AtomType"); +Clazz_defineMethod(c$, "getBondType", +function(bond, at1, at2, index1, index2){ +return (JM.FF.ForceFieldMMFF.isSpecialBondType(at1, at2) && bond.getCovalentOrder() == 1 && !this.isAromaticBond(index1, index2) ? 1 : 0); +}, "JM.Bond,JM.FF.AtomType,JM.FF.AtomType,~N,~N"); +Clazz_defineMethod(c$, "isAromaticBond", +function(a1, a2){ +if (this.vRings[3] != null) for (var i = this.vRings[3].size(); --i >= 0; ) { +var bsRing = this.vRings[3].get(i); +if (bsRing.get(a1) && bsRing.get(a2)) return true; +} +return false; +}, "~N,~N"); +c$.getAtomTypeDescs = Clazz_defineMethod(c$, "getAtomTypeDescs", +function(types){ +var stypes = new Array(types.length); +for (var i = types.length; --i >= 0; ) { +stypes[i] = String.valueOf(types[i] < 0 ? -types[i] : JM.FF.ForceFieldMMFF.atomTypes.get(types[i]).mmType); +} +return stypes; +}, "~A"); +c$.setAtomTypes = Clazz_defineMethod(c$, "setAtomTypes", +function(atoms, bsAtoms, smartsMatcher, vRings, allowUnknowns){ +var bitSets = new JU.Lst(); +var smarts = new Array(JM.FF.ForceFieldMMFF.atomTypes.size()); +var types = Clazz_newIntArray (atoms.length, 0); +var bsElements = new JU.BS(); +var bsHydrogen = new JU.BS(); +var bsConnected = JU.BSUtil.copy(bsAtoms); +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = atoms[i]; +var bonds = a.bonds; +if (bonds != null) for (var j = bonds.length; --j >= 0; ) if (bonds[j].isCovalentNotPartial0()) bsConnected.set(bonds[j].getOtherAtom(a).i); + +} +for (var i = bsConnected.nextSetBit(0); i >= 0; i = bsConnected.nextSetBit(i + 1)) { +var n = atoms[i].getElementNumber(); +switch (n) { +case 1: +bsHydrogen.set(i); +break; +default: +bsElements.set(n); +} +} +var nUsed = 0; +for (var i = 1; i < JM.FF.ForceFieldMMFF.atomTypes.size(); i++) { +var at = JM.FF.ForceFieldMMFF.atomTypes.get(i); +if (!bsElements.get(at.elemNo)) continue; +smarts[i] = at.smartsCode; +nUsed++; +} +JU.Logger.info(nUsed + " SMARTS matches used"); +try { +smartsMatcher.getMMFF94AtomTypes(smarts, atoms, atoms.length, bsConnected, bitSets, vRings); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +} else { +throw e; +} +} +var bsDone = new JU.BS(); +for (var j = 0; j < bitSets.size(); j++) { +var bs = bitSets.get(j); +if (bs == null) continue; +bs.andNot(bsDone); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) types[i] = j; + +bsDone.or(bs); +} +for (var i = bsHydrogen.nextSetBit(0); i >= 0; i = bsHydrogen.nextSetBit(i + 1)) { +var bonds = atoms[i].bonds; +if (bonds != null) { +var j = types[bonds[0].getOtherAtom(atoms[i]).i]; +if (j != 0) bsDone.set(i); +types[i] = -JM.FF.ForceFieldMMFF.atomTypes.get(j).hType; +}} +if (JU.Logger.debugging) for (var i = bsConnected.nextSetBit(0); i >= 0; i = bsConnected.nextSetBit(i + 1)) JU.Logger.debug("atom " + atoms[i] + "\ttype " + (types[i] < 0 ? "" + -types[i] : (JM.FF.ForceFieldMMFF.atomTypes.get(types[i]).mmType + "\t" + JM.FF.ForceFieldMMFF.atomTypes.get(types[i]).smartsCode + "\t" + JM.FF.ForceFieldMMFF.atomTypes.get(types[i]).descr))); + +if (!allowUnknowns && bsDone.cardinality() != bsConnected.cardinality()) return null; +return types; +}, "~A,JU.BS,J.api.SmilesMatcherInterface,~A,~B"); +Clazz_defineMethod(c$, "setBondTypes", +function(bonds, bondCount, bsAtoms){ +var bTypes = Clazz_newIntArray (bondCount, 0); +for (var i = bondCount; --i >= 0; ) { +var a1 = bonds[i].atom1; +var a2 = bonds[i].atom2; +var ok1 = bsAtoms.get(a1.i); +var ok2 = bsAtoms.get(a2.i); +if (!ok1 && !ok2) continue; +var it = this.rawAtomTypes[a1.i]; +var at1 = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +it = this.rawAtomTypes[a2.i]; +var at2 = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +bTypes[i] = this.getBondType(bonds[i], at1, at2, a1.i, a2.i); +} +return bTypes; +}, "~A,~N,JU.BS"); +Clazz_defineMethod(c$, "fixTypes", +function(){ +for (var i = this.minAtomCount; --i >= 0; ) { +var a = this.minAtoms[i]; +var rawIndex = a.atom.i; +var it = this.rawAtomTypes[rawIndex]; +a.ffAtomType = JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0, it)); +var type = (it < 0 ? -it : JM.FF.ForceFieldMMFF.atomTypes.get(it).mmType); +a.ffType = type; +a.vdwKey = JM.MinObject.getKey(0, type, 127, 127, 122); +a.partialCharge = this.rawMMFF94Charges[rawIndex]; +} +for (var i = this.minBonds.length; --i >= 0; ) { +var bond = this.minBonds[i]; +bond.type = this.rawBondTypes[bond.rawIndex]; +bond.key = this.getKey(bond, bond.type, 3); +if (bond.key == null) return false; +} +for (var i = this.minAngles.length; --i >= 0; ) { +var angle = this.minAngles[i]; +angle.key = this.getKey(angle, angle.type, 5); +angle.sbKey = this.getKey(angle, angle.sbType, 21); +} +for (var i = this.minTorsions.length; --i >= 0; ) { +var torsion = this.minTorsions[i]; +torsion.key = this.getKey(torsion, torsion.type, 9); +} +return true; +}); +Clazz_defineMethod(c$, "setAngleType", +function(angle){ +angle.type = this.minBonds[angle.data[3]].type + this.minBonds[angle.data[4]].type; +if (this.checkRings(this.vRings[0], angle.data, 3)) { +angle.type += (angle.type == 0 ? 3 : 4); +} else if (this.checkRings(this.vRings[1], angle.data, 3)) { +angle.type += (angle.type == 0 ? 4 : 6); +}angle.sbType = JM.FF.ForceFieldMMFF.sbMap[angle.type]; +switch (angle.type) { +case 1: +case 5: +case 7: +angle.sbType += this.minBonds[angle.data[4]].type; +break; +} +return angle.type; +}, "JM.MinAngle"); +Clazz_defineMethod(c$, "setTorsionType", +function(t){ +if (this.checkRings(this.vRings[1], t.data, 4)) return (t.type = 4); +t.type = (this.minBonds[t.data[5]].type == 1 ? 1 : this.minBonds[t.data[4]].type == 0 && this.minBonds[t.data[6]].type == 0 ? 0 : 2); +if (t.type == 0 && this.checkRings(this.vRings[2], t.data, 4)) { +t.type = 5; +}return t.type; +}, "JM.MinTorsion"); +Clazz_defineMethod(c$, "typeOf", +function(iAtom){ +return this.minAtoms[iAtom].ffType; +}, "~N"); +Clazz_defineMethod(c$, "checkRings", +function(v, minlist, n){ +if (v != null) for (var i = v.size(); --i >= 0; ) { +var bs = v.get(i); +if (bs.get(this.minAtoms[minlist[0]].atom.i) && bs.get(this.minAtoms[minlist[1]].atom.i) && (n < 3 || bs.get(this.minAtoms[minlist[2]].atom.i)) && (n < 4 || bs.get(this.minAtoms[minlist[3]].atom.i))) return true; +} +return false; +}, "JU.Lst,~A,~N"); +Clazz_defineMethod(c$, "getKey", +function(obj, type, ktype){ +var o = (Clazz_instanceOf(obj,"JM.MinObject") ? obj : null); +var data = (o == null ? obj : o.data); +var n = 4; +switch (ktype) { +case 3: +this.fixOrder(data, 0, 1); +n = 2; +break; +case 5: +if (this.fixOrder(data, 0, 2) == -1) JM.FF.ForceFieldMMFF.swap(data, 3, 4); +type = this.setAngleType(o); +n = 3; +break; +case 21: +n = 3; +break; +case 9: +switch (this.fixOrder(data, 1, 2)) { +case 1: +break; +case -1: +JM.FF.ForceFieldMMFF.swap(data, 0, 3); +JM.FF.ForceFieldMMFF.swap(data, 4, 6); +break; +case 0: +if (this.fixOrder(data, 0, 3) == -1) JM.FF.ForceFieldMMFF.swap(data, 4, 6); +break; +} +type = this.setTorsionType(o); +} +var key = null; +for (var i = 0; i < 4; i++) this.typeData[i] = (i < n ? this.typeOf(data[i]) : 127); + +switch (ktype) { +case 21: +this.typeData[3] = 125; +break; +case 13: +JM.FF.ForceFieldMMFF.sortOop(this.typeData); +break; +} +key = JM.MinObject.getKey(type, this.typeData[0], this.typeData[1], this.typeData[2], this.typeData[3]); +var ddata = this.ffParams.get(key); +switch (ktype) { +case 3: +return (ddata != null && ddata[0] > 0 ? key : this.applyEmpiricalRules(o, ddata, 3)); +case 5: +if (ddata != null && ddata[0] != 0) return key; +break; +case 9: +if (ddata == null) { +if (!this.ffParams.containsKey(key = this.getTorsionKey(type, 0, 2)) && !this.ffParams.containsKey(key = this.getTorsionKey(type, 2, 0)) && !this.ffParams.containsKey(key = this.getTorsionKey(type, 2, 2))) key = this.getTorsionKey(0, 2, 2); +ddata = this.ffParams.get(key); +}return (ddata != null ? key : this.applyEmpiricalRules(o, ddata, 9)); +case 21: +if (ddata != null) return key; +var r1 = this.getRowFor(data[0]); +var r2 = this.getRowFor(data[1]); +var r3 = this.getRowFor(data[2]); +return JM.MinObject.getKey(0, r1, r2, r3, 126); +case 13: +if (ddata != null) return key; +} +var isSwapped = false; +var haveKey = false; +for (var i = 0; i < 3 && !haveKey; i++) { +for (var j = 0, bit = 1; j < n; j++, bit <<= 1) if ((ktype & bit) == bit) this.typeData[j] = JM.FF.ForceFieldMMFF.getEquivalentType(this.typeOf(data[j]), i); + +switch (ktype) { +case 3: +isSwapped = (JM.FF.ForceFieldMMFF.fixTypeOrder(this.typeData, 0, 1)); +break; +case 5: +isSwapped = (JM.FF.ForceFieldMMFF.fixTypeOrder(this.typeData, 0, 2)); +break; +case 13: +JM.FF.ForceFieldMMFF.sortOop(this.typeData); +break; +} +key = JM.MinObject.getKey(type, this.typeData[0], this.typeData[1], this.typeData[2], this.typeData[3]); +haveKey = this.ffParams.containsKey(key); +} +if (haveKey) { +if (isSwapped) switch (ktype) { +case 5: +JM.FF.ForceFieldMMFF.swap(data, 0, 2); +JM.FF.ForceFieldMMFF.swap(data, 3, 4); +this.setAngleType(o); +break; +} +} else if (type != 0 && ktype == 5) { +key = Integer.$valueOf(key.intValue() ^ 0xFF); +}ddata = this.ffParams.get(key); +switch (ktype) { +case 5: +return (ddata != null && ddata[0] != 0 ? key : this.applyEmpiricalRules(o, ddata, 5)); +} +return key; +}, "~O,~N,~N"); +Clazz_defineMethod(c$, "getTorsionKey", +function(type, i, j){ +return JM.MinObject.getKey(type, JM.FF.ForceFieldMMFF.getEquivalentType(this.typeData[0], i), this.typeData[1], this.typeData[2], JM.FF.ForceFieldMMFF.getEquivalentType(this.typeData[3], j)); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "applyEmpiricalRules", +function(o, ddata, ktype){ +var rr; +var rr2; +var beta = 0; +var a; +var b; +var c; +switch (ktype) { +case 3: +a = this.minAtoms[o.data[0]]; +b = this.minAtoms[o.data[1]]; +var elemno1 = a.atom.getElementNumber(); +var elemno2 = b.atom.getElementNumber(); +var key = JM.MinObject.getKey(0, Math.min(elemno1, elemno2), Math.max(elemno1, elemno2), 127, 123); +ddata = this.ffParams.get(key); +if (ddata == null) return null; +var kbref = ddata[0]; +var r0ref = ddata[1]; +var r0 = JM.FF.ForceFieldMMFF.getRuleBondLength(a, b, (o).order, this.isAromaticBond(o.data[0], o.data[1])); +if (r0 == 0) return null; +rr = r0ref / r0; +rr2 = rr * rr; +var rr4 = rr2 * rr2; +var rr6 = rr4 * rr2; +var kb = kbref * rr6; +o.ddata = Clazz_newDoubleArray(-1, [kb, r0]); +return Integer.$valueOf(-1); +case 5: +var theta0; +if (ddata == null || (theta0 = ddata[1]) == 0) { +b = this.minAtoms[o.data[1]]; +var atom = b.atom; +var elemno = atom.getElementNumber(); +switch (o.type) { +case 3: +case 5: +case 6: +theta0 = 60; +beta *= 0.05; +break; +case 4: +case 7: +case 8: +theta0 = 90; +break; +default: +theta0 = 120; +var crd = atom.getCovalentBondCount(); +switch (crd) { +case 2: +if (this.isLinear(b)) theta0 = 180; + else if (elemno == 8) theta0 = 105; + else if (elemno > 10) theta0 = 95.0; +break; +case 3: +if (b.ffAtomType.mltb == 0 && b.ffAtomType.val == 3) theta0 = (elemno == 7 ? 107 : 92); +break; +case 4: +theta0 = 109.45; +break; +} +} +}beta = 1.75; +switch (o.type) { +case 3: +case 5: +case 6: +beta *= 0.05; +break; +case 4: +case 7: +case 8: +beta *= 0.85; +break; +} +var za = JM.FF.ForceFieldMMFF.getZParam(this.minAtoms[o.data[0]].atom.getElementNumber()); +var cb = JM.FF.ForceFieldMMFF.getCParam(this.minAtoms[o.data[1]].atom.getElementNumber()); +var zc = JM.FF.ForceFieldMMFF.getZParam(this.minAtoms[o.data[2]].atom.getElementNumber()); +var r0ab = this.getR0(this.minBonds[o.data[3]]); +var r0bc = this.getR0(this.minBonds[o.data[4]]); +rr = r0ab + r0bc; +rr2 = rr * rr; +var D = (r0ab - r0bc) / rr2; +var theta2 = theta0 * 0.017453292519943295; +theta2 *= theta2; +var ka = (beta * za * cb * zc * Math.exp(-2 * D)) / (rr * theta2); +o.ddata = Clazz_newDoubleArray(-1, [ka, theta0]); +return Integer.$valueOf(-1); +case 9: +var ib = o.data[1]; +var ic = o.data[2]; +b = this.minAtoms[ib]; +c = this.minAtoms[ic]; +if (this.isLinear(b) || this.isLinear(c)) return null; +var bondBC = this.minBonds[o.data[5]]; +var elemnoB = b.atom.getElementNumber(); +var elemnoC = c.atom.getElementNumber(); +var ub = JM.FF.ForceFieldMMFF.getUParam(elemnoB); +var uc = JM.FF.ForceFieldMMFF.getUParam(elemnoC); +var vb = JM.FF.ForceFieldMMFF.getVParam(elemnoB); +var vc = JM.FF.ForceFieldMMFF.getVParam(elemnoC); +var v1 = 0; +var v2 = 0; +var v3 = 0; +var pi_bc = -1; +var n_bc = -1; +var wb = -1; +var wc = 0; +var valB = b.ffAtomType.val; +var valC = c.ffAtomType.val; +var pilpB = b.ffAtomType.pilp; +var pilpC = c.ffAtomType.pilp; +var mltbB = b.ffAtomType.mltb; +var mltbC = c.ffAtomType.mltb; +out : while (true) { +if (this.isAromaticBond(ib, ic)) { +pi_bc = (pilpB || pilpC ? 0.3 : 0.5); +beta = (valB + valC == 7 ? 3 : 6); +break out; +}if (bondBC.order == 2) { +beta = 6; +pi_bc = (mltbB == 2 && mltbC == 2 ? 1.0 : 0.4); +break out; +}var crdB = b.atom.getCovalentBondCount(); +var crdC = c.atom.getCovalentBondCount(); +if (crdB == 4 && crdC == 4) { +vb = JM.FF.ForceFieldMMFF.getVParam(elemnoB); +vc = JM.FF.ForceFieldMMFF.getVParam(elemnoC); +n_bc = 9; +break out; +}if (crdB != 4 && (valB > crdB || mltbB > 0) || crdC != 4 && (valC > crdC || mltbC > 0)) return null; +var case2 = (pilpB && mltbC > 0); +var case3 = (pilpC && mltbB > 0); +if (bondBC.order == 1 && (mltbB > 0 && mltbC > 0 || case2 || case3)) { +if (pilpB && pilpC) return null; +beta = 6; +if (case2) { +pi_bc = (mltbC == 1 ? 0.5 : elemnoB <= 10 && elemnoC <= 10 ? 0.3 : 0.15); +break out; +}if (case3) { +pi_bc = (mltbB == 1 ? 0.5 : elemnoB <= 10 && elemnoC <= 10 ? 0.3 : 0.15); +break out; +}if ((mltbB == 1 || mltbC == 1) && (elemnoB == 6 || elemnoC == 6)) { +pi_bc = 0.4; +break out; +}pi_bc = 0.15; +break out; +}switch (elemnoB << 8 + elemnoC) { +case 0x808: +wb = wc = 2; +break out; +case 0x810: +wb = 2; +wc = 8; +break out; +case 0x1008: +wb = 8; +wc = 2; +break out; +case 0x1010: +wb = wc = 8; +break out; +} +n_bc = crdB * crdC; +break out; +} +if (pi_bc > 0) v2 = beta * pi_bc * Math.sqrt(ub * uc); + else if (n_bc > 0) v3 = Math.sqrt(vb * vc) / n_bc; + else if (wb != 0) v2 = -Math.sqrt(wb * wc); +o.ddata = Clazz_newDoubleArray(-1, [v1, v2, v3]); +return Integer.$valueOf(-1); +default: +return null; +} +}, "JM.MinObject,~A,~N"); +Clazz_defineMethod(c$, "isLinear", +function(a){ +switch (a.ffType) { +case 4: +case 53: +case 61: +return true; +} +return false; +}, "JM.MinAtom"); +Clazz_defineMethod(c$, "getR0", +function(b){ +return (b.ddata == null ? (this.ffParams.get(b.key)) : b.ddata)[1]; +}, "JM.MinBond"); +Clazz_defineMethod(c$, "getRowFor", +function(i){ +var elemno = this.minAtoms[i].atom.getElementNumber(); +return (elemno < 3 ? 0 : elemno < 11 ? 1 : elemno < 19 ? 2 : elemno < 37 ? 3 : 4); +}, "~N"); +Clazz_defineMethod(c$, "getOutOfPlaneParameter", +function(data){ +var ddata = this.ffParams.get(this.getKey(data, 6, 13)); +return (ddata == null ? 0 : ddata[0]); +}, "~A"); +c$.sortOop = Clazz_defineMethod(c$, "sortOop", +function(typeData){ +JM.FF.ForceFieldMMFF.fixTypeOrder(typeData, 0, 2); +JM.FF.ForceFieldMMFF.fixTypeOrder(typeData, 0, 3); +JM.FF.ForceFieldMMFF.fixTypeOrder(typeData, 2, 3); +}, "~A"); +c$.fixTypeOrder = Clazz_defineMethod(c$, "fixTypeOrder", +function(a, i, j){ +if (a[i] > a[j]) { +JM.FF.ForceFieldMMFF.swap(a, i, j); +return true; +}return false; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "fixOrder", +function(a, i, j){ +var test = this.typeOf(a[j]) - this.typeOf(a[i]); +if (test < 0) JM.FF.ForceFieldMMFF.swap(a, i, j); +return (test < 0 ? -1 : test > 0 ? 1 : 0); +}, "~A,~N,~N"); +c$.swap = Clazz_defineMethod(c$, "swap", +function(a, i, j){ +var t = a[i]; +a[i] = a[j]; +a[j] = t; +}, "~A,~N,~N"); +c$.getEquivalentType = Clazz_defineMethod(c$, "getEquivalentType", +function(type, level){ +return (type == 0 ? 0 : type == 70 || type > 82 ? type : level == 2 ? 0 : JM.FF.ForceFieldMMFF.equivalentTypes[((type - 1) << 1) + level]); +}, "~N,~N"); +c$.getZParam = Clazz_defineMethod(c$, "getZParam", +function(elemno){ +switch (elemno) { +case 1: +return 1.395; +case 6: +return 2.494; +case 7: +return 2.711; +case 8: +return 3.045; +case 9: +return 2.847; +case 14: +return 2.350; +case 15: +return 2.350; +case 16: +return 2.980; +case 17: +return 2.909; +case 35: +return 3.017; +case 53: +return 3.086; +} +return 0.0; +}, "~N"); +c$.getCParam = Clazz_defineMethod(c$, "getCParam", +function(elemno){ +switch (elemno) { +case 5: +return 0.704; +case 6: +return 1.016; +case 7: +return 1.113; +case 8: +return 1.337; +case 14: +return 0.811; +case 15: +return 1.068; +case 16: +return 1.249; +case 17: +return 1.078; +case 33: +return 0.825; +} +return 0.0; +}, "~N"); +c$.getUParam = Clazz_defineMethod(c$, "getUParam", +function(elemno){ +switch (elemno) { +case 6: +case 7: +case 8: +return 2.0; +case 14: +case 15: +case 16: +return 1.25; +} +return 0.0; +}, "~N"); +c$.getVParam = Clazz_defineMethod(c$, "getVParam", +function(elemno){ +switch (elemno) { +case 6: +return 2.12; +case 7: +return 1.5; +case 8: +return 0.2; +case 14: +return 1.22; +case 15: +return 2.4; +case 16: +return 0.49; +} +return 0.0; +}, "~N"); +c$.getCovalentRadius = Clazz_defineMethod(c$, "getCovalentRadius", +function(elemno){ +switch (elemno) { +case 1: +return 0.33; +case 5: +return 0.81; +case 6: +return 0.77; +case 7: +return 0.73; +case 8: +return 0.72; +case 9: +return 0.74; +case 13: +return 1.22; +case 14: +return 1.15; +case 15: +return 1.09; +case 16: +return 1.03; +case 17: +return 1.01; +case 31: +return 1.19; +case 32: +return 1.20; +case 33: +return 1.20; +case 34: +return 1.16; +case 35: +return 1.15; +case 44: +return 1.46; +case 50: +return 1.40; +case 51: +return 1.41; +case 52: +return 1.35; +case 53: +return 1.33; +case 81: +return 1.51; +case 82: +return 1.53; +case 83: +return 1.55; +default: +return JU.Elements.getBondingRadius(elemno, 0); +} +}, "~N"); +c$.getRuleBondLength = Clazz_defineMethod(c$, "getRuleBondLength", +function(a, b, boAB, isAromatic){ +switch (boAB) { +case 1: +case 2: +case 3: +break; +case 5: +break; +default: +return 0; +} +var elemnoA = a.atom.getElementNumber(); +var elemnoB = b.atom.getElementNumber(); +var r0a = JM.FF.ForceFieldMMFF.getCovalentRadius(elemnoA); +var r0b = JM.FF.ForceFieldMMFF.getCovalentRadius(elemnoB); +var Xa = JU.Elements.getAllredRochowElectroNeg(elemnoA); +var Xb = JU.Elements.getAllredRochowElectroNeg(elemnoB); +var c = (elemnoA == 1 || elemnoB == 1 ? 0.05 : 0.085); +var n = 1.4; +var r = r0a + r0b; +if (isAromatic) boAB = (a.ffAtomType.pilp || b.ffAtomType.pilp ? 5 : 4); + else switch (a.ffAtomType.mltb << 4 + b.ffAtomType.mltb) { +case 0x11: +boAB = 4; +break; +case 0x12: +case 0x21: +boAB = 5; +break; +} +switch (boAB) { +case 1: +switch (a.ffAtomType.mltb) { +case 0: +break; +case 1: +case 2: +break; +case 3: +break; +} +switch (b.ffAtomType.mltb) { +case 0: +break; +case 1: +case 2: +break; +case 3: +break; +} +break; +default: +break; +} +r -= c * Math.pow(Math.abs(Xa - Xb), n); +return r; +}, "JM.MinAtom,JM.MinAtom,~N,~B"); +c$.atomTypes = null; +c$.mmffParams = null; +c$.mmff2DParams = null; +c$.types = Clazz_newIntArray(-1, [0, 1, 34, 5, 546, 3, 13, 21, 37, 9, 17]); +c$.sbMap = Clazz_newIntArray(-1, [0, 1, 3, 5, 4, 6, 8, 9, 11]); +c$.equivalentTypes = Clazz_newIntArray(-1, [1, 1, 2, 1, 3, 1, 4, 1, 5, 5, 6, 6, 7, 6, 8, 8, 9, 8, 10, 8, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 15, 17, 15, 18, 15, 19, 19, 1, 1, 21, 5, 22, 1, 23, 5, 24, 5, 25, 25, 26, 25, 28, 5, 28, 5, 29, 5, 2, 1, 31, 31, 7, 6, 21, 5, 8, 8, 6, 6, 36, 5, 2, 1, 9, 8, 10, 8, 10, 8, 3, 1, 42, 8, 10, 8, 16, 15, 10, 8, 9, 8, 42, 8, 9, 8, 6, 6, 21, 5, 7, 6, 21, 5, 42, 8, 9, 8, 10, 8, 10, 8, 2, 1, 10, 8, 6, 6, 4, 1, 42, 8, 10, 8, 2, 1, 2, 1, 9, 8, 9, 8, 9, 8, 8, 8, 9, 8, 70, 70, 5, 5, 16, 15, 18, 15, 17, 15, 26, 25, 9, 8, 12, 12, 2, 1, 9, 8, 2, 1, 10, 8, 9, 8]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.ForceField", "JS.T"], "JM.FF.ForceFieldUFF", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.PT", "JM.FF.CalculationsUFF", "$.FFParam", "JU.Elements", "$.Logger", "JV.JmolAsyncException"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.ffParams = null; +this.bsAromatic = null; +this.is2D = false; +Clazz_instantialize(this, arguments);}, JM.FF, "ForceFieldUFF", JM.FF.ForceField); +Clazz_makeConstructor(c$, +function(minimizer, isQuick){ +Clazz_superConstructor (this, JM.FF.ForceFieldUFF, []); +this.minimizer = minimizer; +if (isQuick) { +this.name = "UFF2D"; +this.is2D = true; +this.ffParams = JM.FF.ForceFieldUFF.uff2DParams; +if (this.ffParams == null) JM.FF.ForceFieldUFF.uff2DParams = this.ffParams = this.getParameters(); +} else { +this.name = "UFF"; +this.ffParams = JM.FF.ForceFieldUFF.uffParams; +if (this.ffParams == null) JM.FF.ForceFieldUFF.uffParams = this.ffParams = this.getParameters(); +}}, "JM.Minimizer,~B"); +Clazz_overrideMethod(c$, "clear", +function(){ +this.bsAromatic = null; +}); +Clazz_overrideMethod(c$, "setModel", +function(bsElements, elemnoMax){ +this.setModelFields(); +JU.Logger.info("minimize: setting atom types..."); +if (this.ffParams == null || JM.FF.ForceFieldUFF.atomTypes == null && (JM.FF.ForceFieldUFF.atomTypes = this.getAtomTypes()) == null) return false; +this.setAtomTypes(bsElements, elemnoMax); +this.calc = new JM.FF.CalculationsUFF(this, this.ffParams, this.minAtoms, this.minBonds, this.minAngles, this.minTorsions, this.minimizer.constraints); +return this.calc.setupCalculations(); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "setAtomTypes", +function(bsElements, elemnoMax){ +var nTypes = JM.FF.ForceFieldUFF.atomTypes.size(); +bsElements.clear(0); +for (var i = 0; i < nTypes; i++) { +var data = JM.FF.ForceFieldUFF.atomTypes.get(i); +var smarts = data[0]; +if (smarts == null) continue; +var search = this.getSearch(smarts, elemnoMax, bsElements); +if (bsElements.get(0)) bsElements.clear(0); + else if (search == null) break; + else for (var j = this.minimizer.bsAtoms.nextSetBit(0), pt = 0; j < this.minimizer.atoms.length && j >= 0; j = this.minimizer.bsAtoms.nextSetBit(j + 1), pt++) if (search.get(j)) { +this.minAtoms[pt].sType = data[1].intern(); +} +} +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "getSearch", +function(smarts, elemnoMax, bsElements){ +var search = null; +var len = smarts.length; +search = JM.FF.ForceFieldUFF.tokenTypes[0]; +var n = (smarts.charAt(len - 2)).charCodeAt(0) - 48; +var elemNo = 0; +if (n >= 10) n = 0; +var isAromatic = false; +if (smarts.charAt(1) == '#') { +elemNo = JU.PT.parseInt(smarts.substring(2, len - 1)); +} else { +var s = smarts.substring(1, (n > 0 ? len - 3 : len - 1)); +if (s.equals(s.toLowerCase())) { +s = s.toUpperCase(); +isAromatic = true; +}elemNo = JU.Elements.elementNumberFromSymbol(s, false); +}if (elemNo > elemnoMax) return null; +if (!bsElements.get(elemNo)) { +bsElements.set(0); +return null; +}switch ((smarts.charAt(len - 3)).charCodeAt(0)) { +case 68: +search = JM.FF.ForceFieldUFF.tokenTypes[2]; +search[6].intValue = n; +break; +case 94: +search = JM.FF.ForceFieldUFF.tokenTypes[4 + (n - 1)]; +break; +case 43: +search = JM.FF.ForceFieldUFF.tokenTypes[1]; +search[5].intValue = n; +break; +case 45: +search = JM.FF.ForceFieldUFF.tokenTypes[1]; +search[5].intValue = -n; +break; +case 65: +search = JM.FF.ForceFieldUFF.tokenTypes[6]; +break; +} +search[2].intValue = elemNo; +var v = this.minimizer.vwr.evaluateExpression(search); +if (!(Clazz_instanceOf(v,"JU.BS"))) return null; +var bs = v; +if (isAromatic && bs.nextSetBit(0) >= 0) { +if (this.bsAromatic == null) this.bsAromatic = (bsElements.get(6) ? this.minimizer.vwr.evaluateExpression(JM.FF.ForceFieldUFF.tokenTypes[3]) : new JU.BS()); +bs.and(this.bsAromatic); +}if (JU.Logger.debugging && bs.nextSetBit(0) >= 0) JU.Logger.debug(smarts + " minimize atoms=" + bs); +return bs; +}, "~S,~N,JU.BS"); +Clazz_defineMethod(c$, "getParameters", +function(){ +var data = new java.util.Hashtable(); +var resourceName = (this.is2D ? "UFF_2d.txt" : "UFF.txt"); +var br = null; +try { +br = this.getBufferedReader(resourceName); +var line; +while ((line = br.readLine()) != null) { +var vs = JU.PT.getTokens(line); +if (vs.length < 13) continue; +if (JU.Logger.debugging) JU.Logger.debug(line); +if (line.substring(0, 5).equals("param")) { +var p = new JM.FF.FFParam(); +data.put(vs[1], p); +p.dVal = Clazz_newDoubleArray (11, 0); +p.sVal = new Array(1); +p.sVal[0] = vs[1]; +p.dVal[0] = JU.PT.parseFloat(vs[2]); +p.dVal[1] = JU.PT.parseFloat(vs[3]) * 0.017453292519943295; +p.dVal[2] = JU.PT.parseFloat(vs[4]); +p.dVal[3] = JU.PT.parseFloat(vs[5]); +p.dVal[4] = JU.PT.parseFloat(vs[6]); +p.dVal[5] = JU.PT.parseFloat(vs[7]); +p.dVal[6] = JU.PT.parseFloat(vs[8]); +p.dVal[7] = JU.PT.parseFloat(vs[9]); +p.dVal[8] = JU.PT.parseFloat(vs[10]); +p.dVal[9] = JU.PT.parseFloat(vs[11]); +p.dVal[10] = JU.PT.parseFloat(vs[12]); +p.iVal = Clazz_newIntArray (1, 0); +var coord = (vs[1].length > 2 ? vs[1].charAt(2) : '1'); +switch ((coord).charCodeAt(0)) { +case 82: +coord = '2'; +break; +default: +coord = '1'; +break; +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +break; +} +p.iVal[0] = coord.charCodeAt(0) - 48; +}} +br.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.err.println("Exception " + e.toString() + " in getResource " + resourceName); +try { +br.close(); +} catch (ee) { +if (Clazz_exceptionOf(ee, Exception)){ +} else { +throw ee; +} +} +return null; +} else { +throw e; +} +} +JU.Logger.info(data.size() + " atom types read from " + resourceName); +return data; +}); +Clazz_defineMethod(c$, "getAtomTypes", +function(){ +var types = new JU.Lst(); +var fileName = (this.is2D ? "UFF_2d.txt" : "UFF.txt"); +try { +var br = this.getBufferedReader(fileName); +var line; +while ((line = br.readLine()) != null) { +if (line.length > 4 && line.substring(0, 4).equals("atom")) { +var vs = JU.PT.getTokens(line); +var info = Clazz_newArray(-1, [vs[1], vs[2]]); +types.addLast(info); +}} +br.close(); +} catch (e$$) { +if (Clazz_exceptionOf(e$$,"JV.JmolAsyncException")){ +var e = e$$; +{ +throw new JV.JmolAsyncException(e.getFileName()); +} +} else if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +System.err.println("Exception " + e.toString() + " in getResource " + fileName); +} +} else { +throw e$$; +} +} +JU.Logger.info(types.size() + " UFF parameters read"); +return (types.size() > 0 ? types : null); +}); +c$.atomTypes = null; +c$.uff2DParams = null; +c$.uffParams = null; +c$.tokenTypes = Clazz_newArray(-1, [ Clazz_newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenExpressionEnd]), Clazz_newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.n(268440324, 1631586315), JS.T.i(0), JS.T.tokenExpressionEnd]), Clazz_newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.i(0), JS.T.tokenRightParen, JS.T.tokenExpressionEnd]), Clazz_newArray(-1, [JS.T.tokenExpressionBegin, JS.T.o(1073741824, "flatring"), JS.T.tokenExpressionEnd]), Clazz_newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.tokenLeftParen, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.i(1), JS.T.tokenComma, JS.T.o(4, "triple"), JS.T.tokenRightParen, JS.T.tokenOr, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.i(2), JS.T.tokenComma, JS.T.o(4, "double"), JS.T.tokenRightParen, JS.T.tokenRightParen, JS.T.tokenExpressionEnd]), Clazz_newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.o(134217736, "connected"), JS.T.tokenLeftParen, JS.T.i(1), JS.T.tokenComma, JS.T.o(4, "double"), JS.T.tokenRightParen, JS.T.tokenExpressionEnd]), Clazz_newArray(-1, [JS.T.tokenExpressionBegin, JS.T.n(268440324, 1094715402), JS.T.i(0), JS.T.tokenAnd, JS.T.tokenLeftParen, JS.T.n(268440325, 1094715402), JS.T.i(6), JS.T.tokenOr, JS.T.n(268440325, 1631586315), JS.T.i(0), JS.T.tokenRightParen, JS.T.tokenAnd, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.i(3), JS.T.tokenRightParen, JS.T.tokenAnd, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.tokenConnected, JS.T.tokenLeftParen, JS.T.o(4, "double"), JS.T.tokenRightParen, JS.T.tokenRightParen, JS.T.tokenExpressionEnd])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.key = null; +this.dE = 0; +this.a = null; +this.b = null; +this.c = null; +this.d = null; +this.ia = 0; +this.ib = 0; +this.ic = 0; +this.id = 0; +this.iData = null; +this.dData = null; +this.delta = 0; +this.rab = 0; +this.theta = 0; +this.energy = 0; +this.calcs = null; +Clazz_instantialize(this, arguments);}, JM.FF, "Calculation", null); +Clazz_defineMethod(c$, "set", +function(calcs){ +this.calcs = calcs; +return this; +}, "JM.FF.Calculations"); +Clazz_defineMethod(c$, "setData", +function(calc, ia, ib, d){ +}, "JU.Lst,~N,~N,~N"); +Clazz_defineMethod(c$, "getEnergy", +function(){ +return this.energy; +}); +Clazz_defineMethod(c$, "getPointers", +function(dataIn){ +this.dData = dataIn[1]; +this.iData = dataIn[0]; +switch (this.iData.length) { +default: +this.id = this.iData[3]; +case 3: +this.ic = this.iData[2]; +case 2: +this.ib = this.iData[1]; +case 1: +this.ia = this.iData[0]; +case 0: +break; +} +}, "~A"); +Clazz_defineMethod(c$, "isLoggable", +function(n){ +return this.calcs.ff.minimizer.isLoggable(this.iData, n); +}, "~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JU.AU", "$.SB", "$.V3d"], "JM.FF.Calculations", ["JU.Lst", "$.PT", "JM.Util"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.parA = null; +this.parB = null; +this.parC = null; +this.ff = null; +this.calculations = null; +this.ffParams = null; +this.ac = 0; +this.bondCount = 0; +this.angleCount = 0; +this.torsionCount = 0; +this.minAtoms = null; +this.minBonds = null; +this.minAngles = null; +this.minTorsions = null; +this.constraintsByType = null; +this.haveConstraints = false; +this.isPreliminary = false; +this.gradients = false; +this.silent = false; +this.logData = null; +this.logging = false; +this.loggingEnabled = false; +this.da = null; +this.db = null; +this.dc = null; +this.dd = null; +this.ia = 0; +this.ib = 0; +this.ic = 0; +this.id = 0; +this.v1 = null; +this.v2 = null; +this.v3 = null; +Clazz_instantialize(this, arguments);}, JM.FF, "Calculations", null); +Clazz_prepareFields (c$, function(){ +this.calculations = JU.AU.createArrayOfArrayList(7); +this.logData = new JU.SB(); +this.da = new JU.V3d(); +this.db = new JU.V3d(); +this.dc = new JU.V3d(); +this.dd = new JU.V3d(); +this.v1 = new JU.V3d(); +this.v2 = new JU.V3d(); +this.v3 = new JU.V3d(); +}); +Clazz_makeConstructor(c$, +function(ff, minAtoms, minBonds, minAngles, minTorsions, constraints){ +this.ff = ff; +this.minAtoms = minAtoms; +this.minBonds = minBonds; +this.minAngles = minAngles; +this.minTorsions = minTorsions; +this.ac = minAtoms.length; +this.bondCount = minBonds.length; +this.angleCount = minAngles.length; +this.torsionCount = minTorsions.length; +this.setConstraints(constraints); +}, "JM.FF.ForceField,~A,~A,~A,~A,JU.Lst"); +Clazz_defineMethod(c$, "getParameter", +function(o){ +return this.ffParams.get(o); +}, "~O"); +Clazz_defineMethod(c$, "setConstraints", +function(constraints){ +if (constraints == null || constraints.isEmpty()) return; +this.constraintsByType = Clazz_newArray(-1, [null, null, null]); +this.haveConstraints = true; +var lists = new Array(3); +for (var i = 0, n = constraints.size(); i < n; i++) { +var c = constraints.get(i); +if (lists[c.type] == null) lists[c.type] = new JU.Lst(); +lists[c.type].addLast(c); +} +for (var type = 0; type <= 2; type++) { +var list = lists[type]; +if (list != null) this.constraintsByType[type] = list.toArray( new Array(list.size())); +} +}, "JU.Lst"); +Clazz_defineMethod(c$, "addForce", +function(v, i, dE){ +this.minAtoms[i].force[0] += v.x * dE; +this.minAtoms[i].force[1] += v.y * dE; +this.minAtoms[i].force[2] += v.z * dE; +}, "JU.V3d,~N,~N"); +Clazz_defineMethod(c$, "setSilent", +function(TF){ +this.silent = TF; +}, "~B"); +Clazz_defineMethod(c$, "getLogData", +function(){ +return this.logData.toString(); +}); +Clazz_defineMethod(c$, "appendLogData", +function(s){ +this.logData.append(s).append("\n"); +}, "~S"); +Clazz_defineMethod(c$, "setLoggingEnabled", +function(TF){ +this.loggingEnabled = TF; +if (this.loggingEnabled) this.logData = new JU.SB(); +}, "~B"); +Clazz_defineMethod(c$, "setPreliminary", +function(TF){ +this.isPreliminary = TF; +}, "~B"); +Clazz_defineMethod(c$, "pairSearch", +function(calc1, pc1, calc2, pc2){ +for (var i = 0; i < this.ac - 1; i++) { +var bsVdw = this.minAtoms[i].bsVdw; +for (var j = bsVdw.nextSetBit(0); j >= 0; j = bsVdw.nextSetBit(j + 1)) { +pc1.setData(calc1, i, j, 0); +if (pc2 != null) pc2.setData(calc2, i, j, 0); +} +} +}, "JU.Lst,JM.FF.Calculation,JU.Lst,JM.FF.Calculation"); +Clazz_defineMethod(c$, "calc", +function(iType, gradients, canConstrain){ +this.logging = this.loggingEnabled && !this.silent; +this.gradients = gradients; +var calcs = this.calculations[iType]; +var nCalc; +var energy = 0; +if (calcs == null || (nCalc = calcs.size()) == 0) return 0; +if (this.logging) this.appendLogData(this.getDebugHeader(iType)); +for (var ii = 0; ii < nCalc; ii++) energy += this.compute(iType, this.calculations[iType].get(ii)); + +if (this.logging) this.appendLogData(this.getDebugFooter(iType, energy)); +if (canConstrain && this.haveConstraints && this.constraintsByType[iType] != null) energy += this.constraintEnergy(iType); +return energy; +}, "~N,~B,~B"); +Clazz_defineMethod(c$, "energyStrBnd", +function(gradients){ +return 0.0; +}, "~B"); +Clazz_defineMethod(c$, "energyBond", +function(gradients){ +return this.calc(0, gradients, true); +}, "~B"); +Clazz_defineMethod(c$, "energyAngle", +function(gradients){ +return this.calc(1, gradients, true); +}, "~B"); +Clazz_defineMethod(c$, "energyTorsion", +function(gradients){ +return this.calc(2, gradients, true); +}, "~B"); +Clazz_defineMethod(c$, "energyStretchBend", +function(gradients){ +return this.calc(3, gradients, false); +}, "~B"); +Clazz_defineMethod(c$, "energyOOP", +function(gradients){ +return this.calc(4, gradients, false); +}, "~B"); +Clazz_defineMethod(c$, "energyVDW", +function(gradients){ +return this.calc(5, gradients, false); +}, "~B"); +Clazz_defineMethod(c$, "energyES", +function(gradients){ +return this.calc(6, gradients, false); +}, "~B"); +Clazz_defineMethod(c$, "constraintEnergy", +function(iType){ +var constraints = this.constraintsByType[iType]; +var value = 0; +var k = 0; +var energy = 0; +for (var i = constraints.length; --i >= 0; ) { +var c = constraints[i]; +var minList = c.minList; +var targetValue = c.value; +switch (iType) { +case 2: +this.id = minList[3]; +if (this.gradients) this.dd.setA(this.minAtoms[this.id].coord); +case 1: +this.ic = minList[2]; +if (this.gradients) this.dc.setA(this.minAtoms[this.ic].coord); +case 0: +this.ib = minList[1]; +this.ia = minList[0]; +if (this.gradients) { +this.db.setA(this.minAtoms[this.ib].coord); +this.da.setA(this.minAtoms[this.ia].coord); +}break; +} +k = 10000.0; +switch (iType) { +case 2: +targetValue *= 0.017453292519943295; +value = (this.gradients ? JM.Util.restorativeForceAndTorsionAngleRadians(this.da, this.db, this.dc, this.dd) : JM.Util.getTorsionAngleRadians(this.minAtoms[this.ia].coord, this.minAtoms[this.ib].coord, this.minAtoms[this.ic].coord, this.minAtoms[this.id].coord, this.v1, this.v2, this.v3)); +if (value < 0 && targetValue >= 1.5707963267948966) value += 6.283185307179586; + else if (value > 0 && targetValue <= -1.5707963267948966) targetValue += 6.283185307179586; +break; +case 1: +targetValue *= 0.017453292519943295; +value = (this.gradients ? JM.Util.restorativeForceAndAngleRadians(this.da, this.db, this.dc) : JM.Util.getAngleRadiansABC(this.minAtoms[this.ia].coord, this.minAtoms[this.ib].coord, this.minAtoms[this.ic].coord)); +break; +case 0: +value = (this.gradients ? JM.Util.restorativeForceAndDistance(this.da, this.db, this.dc) : Math.sqrt(JM.Util.distance2(this.minAtoms[this.ia].coord, this.minAtoms[this.ib].coord))); +break; +} +energy += this.constrainQuadratic(value, targetValue, k, iType); +} +return energy; +}, "~N"); +Clazz_defineMethod(c$, "constrainQuadratic", +function(value, targetValue, k, iType){ +if (!JM.Util.isFinite(value)) return 0; +var delta = value - targetValue; +if (this.gradients) { +var dE = 2.0 * k * delta; +switch (iType) { +case 2: +this.addForce(this.dd, this.id, dE); +case 1: +this.addForce(this.dc, this.ic, dE); +case 0: +this.addForce(this.db, this.ib, dE); +this.addForce(this.da, this.ia, dE); +} +}return k * delta * delta; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getConstraintList", +function(){ +if (this.constraintsByType == null) return; +this.appendLogData("C O N S T R A I N T S\n---------------------"); +for (var type = 0; type <= 2; type++) { +var constraints = this.constraintsByType[type]; +if (constraints == null) continue; +for (var i = 0, n = constraints.length; i < n; i++) { +var c = constraints[i]; +var minList = c.minList; +var targetValue = c.value; +switch (c.type) { +case 2: +this.id = minList[3]; +case 1: +this.ic = minList[2]; +case 0: +this.ib = minList[1]; +this.ia = minList[0]; +} +switch (c.type) { +case 0: +this.appendLogData(JU.PT.sprintf("%3d %3d %-5s %-5s %12.6f", "ssFI", Clazz_newArray(-1, [this.minAtoms[this.ia].atom.getAtomName(), this.minAtoms[this.ib].atom.getAtomName(), Clazz_newFloatArray(-1, [targetValue]), Clazz_newIntArray(-1, [this.minAtoms[this.ia].atom.getAtomNumber(), this.minAtoms[this.ib].atom.getAtomNumber()])]))); +break; +case 1: +this.appendLogData(JU.PT.sprintf("%3d %3d %3d %-5s %-5s %-5s %12.6f", "sssFI", Clazz_newArray(-1, [this.minAtoms[this.ia].atom.getAtomName(), this.minAtoms[this.ib].atom.getAtomName(), this.minAtoms[this.ic].atom.getAtomName(), Clazz_newFloatArray(-1, [targetValue]), Clazz_newIntArray(-1, [this.minAtoms[this.ia].atom.getAtomNumber(), this.minAtoms[this.ib].atom.getAtomNumber(), this.minAtoms[this.ic].atom.getAtomNumber()])]))); +break; +case 2: +this.appendLogData(JU.PT.sprintf("%3d %3d %3d %3d %-5s %-5s %-5s %-5s %3d %8.3f %8.3f %8.3f %8.3f", "ssssFI", Clazz_newArray(-1, [this.minAtoms[this.ia].atom.getAtomName(), this.minAtoms[this.ib].atom.getAtomName(), this.minAtoms[this.ic].atom.getAtomName(), this.minAtoms[this.id].atom.getAtomName(), Clazz_newFloatArray(-1, [targetValue]), Clazz_newIntArray(-1, [this.minAtoms[this.ia].atom.getAtomNumber(), this.minAtoms[this.ib].atom.getAtomNumber(), this.minAtoms[this.ic].atom.getAtomNumber(), this.minAtoms[this.id].atom.getAtomNumber()])]))); +break; +} +} +} +this.appendLogData("---------------------\n"); +}); +Clazz_defineMethod(c$, "getAtomList", +function(title){ +var trailer = "--------------------------------------------------------------------------------------------------\n"; +var sb = new JU.SB(); +sb.append("\n" + title + "\n\n" + " ATOM X Y Z TYPE GRADX GRADY GRADZ " + "---------BONDED ATOMS--------\n" + trailer); +for (var i = 0; i < this.ac; i++) { +if (this.ff.minimizer.isLoggable(null, i) === Boolean.FALSE) continue; +var atom = this.minAtoms[i]; +var others = atom.getBondedAtomIndexes(); +var iVal = Clazz_newIntArray (others.length + 2, 0); +iVal[0] = atom.atom.getAtomNumber(); +iVal[1] = (atom.ffAtomType == null ? 0 : atom.ffAtomType.mmType); +var s = " "; +for (var j = 0; j < others.length; j++) { +s += " %3d"; +iVal[j + 2] = this.minAtoms[others[j]].atom.getAtomNumber(); +} +sb.append(JU.PT.sprintf("%3d %8.3f %8.3f %8.3f %-5s %2d %8.3f %8.3f %8.3f" + s + "\n", "sFI", Clazz_newArray(-1, [atom.sType, Clazz_newFloatArray(-1, [atom.coord[0], atom.coord[1], atom.coord[2], atom.force[0], atom.force[1], atom.force[2]]), iVal]))); +} +sb.append(trailer + "\n\n"); +return sb.toString(); +}, "~S"); +Clazz_defineMethod(c$, "getDebugHeader2", +function(iType){ +switch (iType) { +case -1: +break; +case 0: +return "\nB O N D S T R E T C H I N G (" + this.bondCount + " bonds)\n\n" + " ATOMS ATOM TYPES BOND BOND IDEAL FORCE\n" + " I J I J TYPE LENGTH LENGTH CONSTANT DELTA ENERGY\n" + "--------------------------------------------------------------------------------"; +case 1: +return "\nA N G L E B E N D I N G (" + this.minAngles.length + " angles)\n\n" + " ATOMS ATOM TYPES VALENCE IDEAL FORCE\n" + " I J K I J K ANGLE ANGLE CONSTANT ENERGY\n" + "--------------------------------------------------------------------------"; +case 3: +return "\nS T R E T C H B E N D I N G (" + (this.minAngles.length * 2) + " angles)\n\n" + " ATOMS ATOM TYPES VALENCE IDEAL FORCE\n" + " I J K I J K ANGLE ANGLE CONSTANT ENERGY\n" + "--------------------------------------------------------------------------"; +case 2: +return "\nT O R S I O N A L (" + this.minTorsions.length + " torsions)\n\n" + " ATOMS ATOM TYPES n COS FORCE TORSION\n" + " I J K L I J K L (n phi0) CONSTANT ANGLE ENERGY\n" + "---------------------------------------------------------------------------------------------"; +case 4: +return "\nO U T - O F - P L A N E B E N D I N G\n\n ATOMS ATOM TYPES OOP FORCE \n I J K L I J K L ANGLE CONSTANT ENERGY\n--------------------------------------------------------------------------"; +case 5: +return "\nV A N D E R W A A L S (partial list)\n\n ATOMS ATOM TYPES\n I J I J Rij kij ENERGY\n-----------------------------------------------"; +case 6: +return "\nE L E C T R O S T A T I C I N T E R A C T I O N S (partial list)\n\n ATOMS ATOM TYPES \n I J I J Rij f Qi Qj ENERGY\n-------------------------------------------------------------------"; +} +return ""; +}, "~N"); +Clazz_defineMethod(c$, "getDebugLine", +function(iType, c){ +return this.getDebugLineC(iType, c); +}, "~N,JM.FF.Calculation"); +Clazz_defineMethod(c$, "getDebugLineC", +function(iType, c){ +var energy = this.ff.toUserUnits(c.energy); +switch (iType) { +case 0: +return JU.PT.sprintf("%3d %3d %-5s %-5s %4.2f%8.3f %8.3f %8.3f %8.3f %8.3f", "ssFI", Clazz_newArray(-1, [this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, Clazz_newFloatArray(-1, [0, c.rab, c.dData[1], c.dData[0], c.delta, energy]), Clazz_newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber()])])); +case 1: +case 3: +return JU.PT.sprintf("%3d %3d %3d %-5s %-5s %-5s %8.3f %8.3f %8.3f %8.3f", "sssFI", Clazz_newArray(-1, [this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, Clazz_newFloatArray(-1, [(c.theta * 57.29577951308232), c.dData[1], c.dData[0], energy]), Clazz_newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber(), this.minAtoms[c.ic].atom.getAtomNumber()])])); +case 2: +return JU.PT.sprintf("%3d %3d %3d %3d %-5s %-5s %-5s %-5s %3d %8.3f %8.3f %8.3f %8.3f", "ssssFI", Clazz_newArray(-1, [this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, this.minAtoms[c.id].sType, Clazz_newFloatArray(-1, [c.dData[1], c.dData[0], (c.theta * 57.29577951308232), energy]), Clazz_newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber(), this.minAtoms[c.ic].atom.getAtomNumber(), this.minAtoms[c.id].atom.getAtomNumber(), c.iData[4]])])); +case 4: +return JU.PT.sprintf("%3d %3d %3d %3d %-5s %-5s %-5s %-5s %8.3f %8.3f %8.3f", "ssssFI", Clazz_newArray(-1, [this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, this.minAtoms[c.id].sType, Clazz_newFloatArray(-1, [(c.theta * 57.29577951308232), c.dData[0], energy]), Clazz_newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber(), this.minAtoms[c.ic].atom.getAtomNumber(), this.minAtoms[c.id].atom.getAtomNumber()])])); +case 5: +return JU.PT.sprintf("%3d %3d %-5s %-5s %6.3f %8.3f %8.3f", "ssFI", Clazz_newArray(-1, [this.minAtoms[c.iData[0]].sType, this.minAtoms[c.iData[1]].sType, Clazz_newFloatArray(-1, [c.rab, c.dData[0], energy]), Clazz_newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber()])])); +case 6: +return JU.PT.sprintf("%3d %3d %-5s %-5s %6.3f %8.3f %8.3f %8.3f %8.3f", "ssFI", Clazz_newArray(-1, [this.minAtoms[c.iData[0]].sType, this.minAtoms[c.iData[1]].sType, Clazz_newFloatArray(-1, [c.rab, c.dData[0], c.dData[1], c.dData[2], energy]), Clazz_newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber()])])); +} +return ""; +}, "~N,JM.FF.Calculation"); +Clazz_defineMethod(c$, "getDebugFooter", +function(iType, energy){ +var s = ""; +switch (iType) { +case 0: +s = "BOND STRETCHING"; +break; +case 1: +s = "ANGLE BENDING"; +break; +case 2: +s = "TORSIONAL"; +break; +case 4: +s = "OUT-OF-PLANE BENDING"; +break; +case 3: +s = "STRETCH BENDING"; +break; +case 5: +s = "VAN DER WAALS"; +break; +case 6: +s = "ELECTROSTATIC ENERGY"; +break; +} +return JU.PT.sprintf("\n TOTAL %s ENERGY = %8.3f %s/mol\n", "sfs", Clazz_newArray(-1, [s, Float.$valueOf(this.ff.toUserUnits(energy)), this.ff.minimizer.units])); +}, "~N,~N"); +Clazz_defineMethod(c$, "setPairVariables", +function(c){ +if (this.gradients) { +this.setCoords(c, 2); +c.rab = JM.Util.restorativeForceAndDistance(this.da, this.db, this.dc); +} else { +c.rab = Math.sqrt(JM.Util.distance2(this.minAtoms[c.ia].coord, this.minAtoms[c.ib].coord)); +}if (JM.Util.isNearZero2(c.rab, 1.0e-3)) c.rab = 1.0e-3; +}, "JM.FF.Calculation"); +Clazz_defineMethod(c$, "setAngleVariables", +function(c){ +if (this.gradients) { +this.setCoords(c, 3); +c.theta = JM.Util.restorativeForceAndAngleRadians(this.da, this.db, this.dc); +} else { +c.theta = JM.Util.getAngleRadiansABC(this.minAtoms[c.ia].coord, this.minAtoms[c.ib].coord, this.minAtoms[c.ic].coord); +}if (!JM.Util.isFinite(c.theta)) c.theta = 0.0; +}, "JM.FF.Calculation"); +Clazz_defineMethod(c$, "setOopVariables", +function(c, fixTheta){ +this.setCoords(c, 4); +if (this.gradients) { +c.theta = JM.Util.restorativeForceAndOutOfPlaneAngleRadians(this.da, this.db, this.dc, this.dd, this.v1, this.v2, this.v3); +} else { +c.theta = JM.Util.pointPlaneAngleRadians(this.da, this.db, this.dc, this.dd, this.v1, this.v2, this.v3, fixTheta); +}if (!JM.Util.isFinite(c.theta)) c.theta = 0.0; +}, "JM.FF.Calculation,~B"); +Clazz_defineMethod(c$, "setTorsionVariables", +function(c){ +if (this.gradients) { +this.setCoords(c, 4); +c.theta = JM.Util.restorativeForceAndTorsionAngleRadians(this.da, this.db, this.dc, this.dd); +if (!JM.Util.isFinite(c.theta)) c.theta = 1.7453292519943296E-5; +} else { +c.theta = JM.Util.getTorsionAngleRadians(this.minAtoms[c.ia].coord, this.minAtoms[c.ib].coord, this.minAtoms[c.ic].coord, this.minAtoms[c.id].coord, this.v1, this.v2, this.v3); +}}, "JM.FF.Calculation"); +Clazz_defineMethod(c$, "setCoords", +function(c, n){ +switch (n) { +case 4: +this.da.setA(this.minAtoms[c.ia].coord); +case 3: +this.db.setA(this.minAtoms[c.ib].coord); +case 2: +this.dc.setA(this.minAtoms[c.ic].coord); +case 1: +this.dd.setA(this.minAtoms[c.id].coord); +} +}, "JM.FF.Calculation,~N"); +Clazz_defineMethod(c$, "addForces", +function(c, n){ +switch (n) { +case 4: +this.addForce(this.dd, c.id, c.dE); +case 3: +this.addForce(this.dc, c.ic, c.dE); +case 2: +this.addForce(this.db, c.ib, c.dE); +case 1: +this.addForce(this.da, c.ia, c.dE); +} +}, "JM.FF.Calculation,~N"); +Clazz_defineMethod(c$, "isLinear", +function(i){ +return false; +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculations"], "JM.FF.CalculationsMMFF", ["JU.Lst", "$.PT", "JM.MinObject", "JM.FF.MMFFAngleCalc", "$.MMFFDistanceCalc", "$.MMFFESCalc", "$.MMFFOOPCalc", "$.MMFFSBCalc", "$.MMFFTorsionCalc", "$.MMFFVDWCalc"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bondCalc = null; +this.angleCalc = null; +this.torsionCalc = null; +this.oopCalc = null; +this.vdwCalc = null; +this.esCalc = null; +this.sbCalc = null; +this.mmff = null; +Clazz_instantialize(this, arguments);}, JM.FF, "CalculationsMMFF", JM.FF.Calculations); +Clazz_makeConstructor(c$, +function(ff, ffParams, minAtoms, minBonds, minAngles, minTorsions, constraints){ +Clazz_superConstructor(this, JM.FF.CalculationsMMFF, [ff, minAtoms, minBonds, minAngles, minTorsions, constraints]); +this.mmff = ff; +this.ffParams = ffParams; +this.bondCalc = new JM.FF.MMFFDistanceCalc().set(this); +this.angleCalc = new JM.FF.MMFFAngleCalc().set(this); +this.sbCalc = new JM.FF.MMFFSBCalc().set(this); +this.torsionCalc = new JM.FF.MMFFTorsionCalc().set(this); +this.oopCalc = new JM.FF.MMFFOOPCalc().set(this); +this.vdwCalc = new JM.FF.MMFFVDWCalc().set(this); +this.esCalc = new JM.FF.MMFFESCalc().set(this); +}, "JM.FF.ForceField,java.util.Map,~A,~A,~A,~A,JU.Lst"); +Clazz_overrideMethod(c$, "getUnits", +function(){ +return "kcal"; +}); +Clazz_overrideMethod(c$, "setupCalculations", +function(){ +var calc; +var distanceCalc = new JM.FF.MMFFDistanceCalc().set(this); +calc = this.calculations[0] = new JU.Lst(); +for (var i = 0; i < this.bondCount; i++) distanceCalc.setData(calc, this.minBonds[i]); + +calc = this.calculations[1] = new JU.Lst(); +var angleCalc = new JM.FF.MMFFAngleCalc().set(this); +for (var i = 0; i < this.angleCount; i++) angleCalc.setData(calc, this.minAngles[i]); + +calc = this.calculations[3] = new JU.Lst(); +var sbCalc = new JM.FF.MMFFSBCalc().set(this); +for (var i = 0; i < this.angleCount; i++) sbCalc.setData(calc, this.minAngles[i]); + +calc = this.calculations[2] = new JU.Lst(); +var torsionCalc = new JM.FF.MMFFTorsionCalc().set(this); +for (var i = 0; i < this.torsionCount; i++) torsionCalc.setData(calc, this.minTorsions[i]); + +calc = this.calculations[4] = new JU.Lst(); +var oopCalc = new JM.FF.MMFFOOPCalc().set(this); +for (var i = 0; i < this.ac; i++) if (JM.FF.CalculationsMMFF.isInvertible(this.minAtoms[i])) oopCalc.setData(calc, i); + +this.pairSearch(this.calculations[5] = new JU.Lst(), new JM.FF.MMFFVDWCalc().set(this), this.calculations[6] = new JU.Lst(), new JM.FF.MMFFESCalc().set(this)); +return true; +}); +Clazz_overrideMethod(c$, "isLinear", +function(i){ +return this.mmff.isLinear(this.minAtoms[i]); +}, "~N"); +c$.isInvertible = Clazz_defineMethod(c$, "isInvertible", +function(a){ +switch (a.ffType) { +default: +return false; +case 2: +case 3: +case 10: +case 30: +case 37: +case 39: +case 40: +case 41: +case 45: +case 49: +case 54: +case 55: +case 56: +case 57: +case 58: +case 63: +case 64: +case 67: +case 69: +case 78: +case 80: +case 81: +return true; +} +}, "JM.MinAtom"); +Clazz_overrideMethod(c$, "compute", +function(iType, dataIn){ +switch (iType) { +case 0: +return this.bondCalc.compute(dataIn); +case 1: +return this.angleCalc.compute(dataIn); +case 3: +return this.sbCalc.compute(dataIn); +case 2: +return this.torsionCalc.compute(dataIn); +case 4: +return this.oopCalc.compute(dataIn); +case 5: +return this.vdwCalc.compute(dataIn); +case 6: +return this.esCalc.compute(dataIn); +} +return 0.0; +}, "~N,~A"); +Clazz_overrideMethod(c$, "getParameterObj", +function(a){ +return (a.key == null || a.ddata != null ? a.ddata : this.ffParams.get(a.key)); +}, "JM.MinObject"); +Clazz_overrideMethod(c$, "getDebugHeader", +function(iType){ +switch (iType) { +case -1: +return "MMFF94 Force Field -- T. A. Halgren, J. Comp. Chem. 5 & 6 490-519ff (1996).\n"; +case 2: +return "\nT O R S I O N A L (" + this.minTorsions.length + " torsions)\n\n" + " ATOMS ATOM TYPES TORSION\n" + " I J K L I J K L ANGLE V1 V2 V3 ENERGY\n" + "--------------------------------------------------------------------------------------\n"; +default: +return this.getDebugHeader2(iType); +} +}, "~N"); +Clazz_overrideMethod(c$, "getDebugLine", +function(iType, c){ +var energy = this.ff.toUserUnits(c.energy); +switch (iType) { +case 1: +case 3: +return JU.PT.sprintf("%11s %-5s %-5s %-5s %8.3f %8.3f %8.3f %8.3f", "ssssFI", Clazz_newArray(-1, [JM.MinObject.decodeKey(c.key), this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, Clazz_newFloatArray(-1, [(c.theta * 57.29577951308232), c.dData[1], c.dData[0], energy]), Clazz_newIntArray(-1, [this.minAtoms[c.ia].atom.getAtomNumber(), this.minAtoms[c.ib].atom.getAtomNumber(), this.minAtoms[c.ic].atom.getAtomNumber()])])); +case 2: +return JU.PT.sprintf("%15s %-5s %-5s %-5s %-5s %8.3f %8.3f %8.3f %8.3f %8.3f", "sssssF", Clazz_newArray(-1, [JM.MinObject.decodeKey(c.key), this.minAtoms[c.ia].sType, this.minAtoms[c.ib].sType, this.minAtoms[c.ic].sType, this.minAtoms[c.id].sType, Clazz_newFloatArray(-1, [(c.theta * 57.29577951308232), c.dData[0], c.dData[1], c.dData[2], energy])])); +default: +return this.getDebugLineC(iType, c); +} +}, "~N,JM.FF.Calculation"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculations"], "JM.FF.CalculationsUFF", ["JU.Lst", "JM.FF.UFFAngleCalc", "$.UFFDistanceCalc", "$.UFFOOPCalc", "$.UFFTorsionCalc", "$.UFFVDWCalc"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bondCalc = null; +this.angleCalc = null; +this.torsionCalc = null; +this.oopCalc = null; +this.vdwCalc = null; +Clazz_instantialize(this, arguments);}, JM.FF, "CalculationsUFF", JM.FF.Calculations); +Clazz_makeConstructor(c$, +function(ff, ffParams, minAtoms, minBonds, minAngles, minTorsions, constraints){ +Clazz_superConstructor(this, JM.FF.CalculationsUFF, [ff, minAtoms, minBonds, minAngles, minTorsions, constraints]); +this.ffParams = ffParams; +this.bondCalc = new JM.FF.UFFDistanceCalc().set(this); +this.angleCalc = new JM.FF.UFFAngleCalc().set(this); +this.torsionCalc = new JM.FF.UFFTorsionCalc().set(this); +this.oopCalc = new JM.FF.UFFOOPCalc().set(this); +this.vdwCalc = new JM.FF.UFFVDWCalc().set(this); +}, "JM.FF.ForceField,java.util.Map,~A,~A,~A,~A,JU.Lst"); +Clazz_overrideMethod(c$, "getUnits", +function(){ +return "kJ"; +}); +Clazz_overrideMethod(c$, "setupCalculations", +function(){ +var calc; +var distanceCalc = new JM.FF.UFFDistanceCalc().set(this); +calc = this.calculations[0] = new JU.Lst(); +for (var i = 0; i < this.bondCount; i++) { +var bond = this.minBonds[i]; +var bondOrder = bond.order; +if (bond.isAromatic) bondOrder = 1.5; +if (bond.isAmide) bondOrder = 1.41; +distanceCalc.setData(calc, bond.data[0], bond.data[1], bondOrder); +} +calc = this.calculations[1] = new JU.Lst(); +var angleCalc = new JM.FF.UFFAngleCalc().set(this); +for (var i = this.minAngles.length; --i >= 0; ) angleCalc.setData(calc, this.minAngles[i].data); + +calc = this.calculations[2] = new JU.Lst(); +var torsionCalc = new JM.FF.UFFTorsionCalc().set(this); +for (var i = this.minTorsions.length; --i >= 0; ) torsionCalc.setData(calc, this.minTorsions[i].data); + +calc = this.calculations[4] = new JU.Lst(); +var oopCalc = new JM.FF.UFFOOPCalc().set(this); +var elemNo; +for (var i = 0; i < this.ac; i++) { +var a = this.minAtoms[i]; +if (a.nBonds == 3 && a.sType !== "C_3" && JM.FF.CalculationsUFF.isInvertible(elemNo = a.atom.getElementNumber())) oopCalc.setData(calc, i, elemNo, 0); +} +this.pairSearch(this.calculations[5] = new JU.Lst(), new JM.FF.UFFVDWCalc().set(this), null, null); +return true; +}); +c$.isInvertible = Clazz_defineMethod(c$, "isInvertible", +function(n){ +switch (n) { +case 6: +case 7: +case 8: +case 15: +case 33: +case 51: +case 83: +return true; +default: +return false; +} +}, "~N"); +c$.calculateR0 = Clazz_defineMethod(c$, "calculateR0", +function(ri, rj, chiI, chiJ, bondorder){ +var rbo = -0.1332 * (ri + rj) * Math.log(bondorder); +var dchi = Math.sqrt(chiI) - Math.sqrt(chiJ); +var ren = ri * rj * dchi * dchi / (chiI * ri + chiJ * rj); +return (ri + rj + rbo - ren); +}, "~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "compute", +function(iType, dataIn){ +switch (iType) { +case 0: +return this.bondCalc.compute(dataIn); +case 1: +return this.angleCalc.compute(dataIn); +case 2: +return this.torsionCalc.compute(dataIn); +case 4: +return this.oopCalc.compute(dataIn); +case 5: +return this.vdwCalc.compute(dataIn); +} +return 0.0; +}, "~N,~A"); +Clazz_overrideMethod(c$, "getDebugHeader", +function(iType){ +switch (iType) { +case -1: +return "Universal Force Field -- Rappe, A. K., et. al.; J. Am. Chem. Soc. (1992) 114(25) p. 10024-10035\n"; +default: +return this.getDebugHeader2(iType); +} +}, "~N"); +Clazz_overrideMethod(c$, "getParameterObj", +function(o){ +return null; +}, "JM.MinObject"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.MMFFAngleCalc", null, function(){ +var c$ = Clazz_declareType(JM.FF, "MMFFAngleCalc", JM.FF.Calculation); +Clazz_defineMethod(c$, "setData", +function(calc, angle){ +var data = this.calcs.getParameterObj(angle); +if (data == null) return; +calc.addLast( Clazz_newArray(-1, [angle.data, data, angle.key])); +}, "JU.Lst,JM.MinAngle"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.key = dataIn[2]; +this.getPointers(dataIn); +var ka = this.dData[0]; +var t0 = this.dData[1]; +this.calcs.setAngleVariables(this); +var dt = (this.theta * 57.29577951308232 - t0); +if (t0 == 180) { +this.energy = 143.9325 * ka * (1 + Math.cos(this.theta)); +if (this.calcs.gradients) this.dE = -143.9325 * ka * Math.sin(this.theta); +} else { +this.energy = 0.021922 * ka * Math.pow(dt, 2) * (1 + -0.006981317007977318 * dt); +if (this.calcs.gradients) this.dE = 0.021922 * ka * dt * (2 + 3 * -0.006981317007977318 * dt); +}if (this.calcs.gradients) this.calcs.addForces(this, 3); +if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(1, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.MMFFDistanceCalc", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.r0 = 0; +this.kb = 0; +this.delta2 = 0; +Clazz_instantialize(this, arguments);}, JM.FF, "MMFFDistanceCalc", JM.FF.Calculation); +Clazz_defineMethod(c$, "setData", +function(calc, bond){ +this.ia = bond.data[0]; +this.ib = bond.data[1]; +var data = this.calcs.getParameterObj(bond); +if (data == null) return; +calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [this.ia, this.ib]), data])); +}, "JU.Lst,JM.MinBond"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +this.kb = this.dData[0]; +this.r0 = this.dData[1]; +this.calcs.setPairVariables(this); +this.delta = this.rab - this.r0; +this.delta2 = this.delta * this.delta; +this.energy = 71.96625 * this.kb * this.delta2 * (1 + -2.0 * this.delta + 2.3333333333333335 * (this.delta2)); +if (this.calcs.gradients) { +this.dE = 71.96625 * this.kb * this.delta * (2 + 3 * -2.0 * this.delta + 4 * 2.3333333333333335 * this.delta2); +this.calcs.addForces(this, 2); +}if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(0, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.MMFFESCalc", null, function(){ +var c$ = Clazz_declareType(JM.FF, "MMFFESCalc", JM.FF.Calculation); +Clazz_overrideMethod(c$, "setData", +function(calc, ia, ib, d){ +if (this.calcs.minAtoms[ia].partialCharge == 0 || this.calcs.minAtoms[ib].partialCharge == 0) return; +calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [ia, ib]), Clazz_newDoubleArray(-1, [this.calcs.minAtoms[ia].partialCharge, this.calcs.minAtoms[ib].partialCharge, (this.calcs.minAtoms[ia].bs14.get(ib) ? 249.0537 : 332.0716)])])); +}, "JU.Lst,~N,~N,~N"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var f = this.dData[0] * this.dData[1] * this.dData[2]; +this.calcs.setPairVariables(this); +var d = this.rab + 0.05; +this.energy = f / d; +if (this.calcs.gradients) { +this.dE = -this.energy / d; +this.calcs.addForces(this, 2); +}if (this.calcs.logging && Math.abs(this.energy) > 20) this.calcs.appendLogData(this.calcs.getDebugLine(6, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.MMFFOOPCalc", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.list = null; +Clazz_instantialize(this, arguments);}, JM.FF, "MMFFOOPCalc", JM.FF.Calculation); +Clazz_prepareFields (c$, function(){ +this.list = Clazz_newIntArray (4, 0); +}); +Clazz_defineMethod(c$, "setData", +function(calc, i){ +if (this.calcs.minAtoms[i].nBonds != 3) return; +var indices = this.calcs.minAtoms[i].getBondedAtomIndexes(); +this.list[0] = indices[2]; +this.list[1] = i; +this.list[2] = indices[1]; +this.list[3] = indices[0]; +var koop = (this.calcs).mmff.getOutOfPlaneParameter(this.list); +if (koop == 0) return; +var dk = Clazz_newDoubleArray(-1, [koop]); +calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [indices[0], i, indices[1], indices[2]]), dk])); +calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [indices[1], i, indices[2], indices[0]]), dk])); +calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [indices[2], i, indices[0], indices[1]]), dk])); +}, "JU.Lst,~N"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +this.calcs.setOopVariables(this, false); +var koop = this.dData[0]; +this.energy = 71.96568080495746 * koop * this.theta * this.theta; +if (this.calcs.gradients) { +this.dE = 2.5120761569715815 * koop * this.theta; +this.calcs.addForces(this, 4); +}if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(4, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.MMFFSBCalc", null, function(){ +var c$ = Clazz_declareType(JM.FF, "MMFFSBCalc", JM.FF.Calculation); +Clazz_defineMethod(c$, "setData", +function(calc, angle){ +if (this.calcs.isLinear(angle.data[1])) return; +var data = this.calcs.getParameter(angle.sbKey); +var datakat0 = this.calcs.getParameterObj(angle); +var dataij = this.calcs.getParameter(this.calcs.minBonds[angle.data[3]]); +var datajk = this.calcs.getParameter(this.calcs.minBonds[angle.data[4]]); +if (data == null || datakat0 == null || dataij == null || datajk == null) return; +var theta0 = datakat0[1]; +var r0ij = dataij[1]; +var r0jk = datajk[1]; +calc.addLast( Clazz_newArray(-1, [angle.data, Clazz_newDoubleArray(-1, [data[0], theta0, r0ij]), angle.sbKey])); +calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [angle.data[2], angle.data[1], angle.data[0]]), Clazz_newDoubleArray(-1, [data[1], theta0, r0jk]), angle.sbKey])); +}, "JU.Lst,JM.MinAngle"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.key = dataIn[2]; +this.getPointers(dataIn); +var k = 2.51210 * this.dData[0]; +var t0 = this.dData[1]; +var r0_ab = this.dData[2]; +this.calcs.setPairVariables(this); +this.calcs.setAngleVariables(this); +var dr_ab = this.rab - r0_ab; +this.delta = this.theta * 57.29577951308232 - t0; +this.energy = k * dr_ab * this.delta; +if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(3, this)); +if (this.calcs.gradients) { +this.dE = k * dr_ab; +this.calcs.addForces(this, 3); +this.calcs.setPairVariables(this); +this.dE = k * this.delta; +this.calcs.addForces(this, 2); +}return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.MMFFTorsionCalc", null, function(){ +var c$ = Clazz_declareType(JM.FF, "MMFFTorsionCalc", JM.FF.Calculation); +Clazz_defineMethod(c$, "setData", +function(calc, t){ +if (this.calcs.isLinear(t.data[1]) || this.calcs.isLinear(t.data[2])) return; +var data = this.calcs.getParameterObj(t); +if (data == null) return; +calc.addLast( Clazz_newArray(-1, [t.data, data, t.key])); +}, "JU.Lst,JM.MinTorsion"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.key = dataIn[2]; +this.getPointers(dataIn); +var v1 = this.dData[0]; +var v2 = this.dData[1]; +var v3 = this.dData[2]; +this.calcs.setTorsionVariables(this); +var cosTheta = Math.cos(this.theta); +var cosTheta2 = cosTheta * cosTheta; +this.energy = 0.5 * (v1 * (1 + cosTheta) + v2 * (2 - 2 * cosTheta2) + v3 * (1 + cosTheta * (4 * cosTheta2 - 3))); +if (this.calcs.gradients) { +var sinTheta = Math.sin(this.theta); +this.dE = 0.5 * (-v1 * sinTheta + 4 * v2 * sinTheta * cosTheta + 3 * v3 * sinTheta * (1 - 4 * cosTheta2)); +this.calcs.addForces(this, 4); +}if (this.calcs.logging) this.calcs.appendLogData(this.calcs.getDebugLine(2, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.MMFFVDWCalc", null, function(){ +var c$ = Clazz_declareType(JM.FF, "MMFFVDWCalc", JM.FF.Calculation); +Clazz_overrideMethod(c$, "setData", +function(calc, ia, ib, dd){ +this.a = this.calcs.minAtoms[ia]; +this.b = this.calcs.minAtoms[ib]; +var dataA = this.calcs.getParameter(this.a.vdwKey); +var dataB = this.calcs.getParameter(this.b.vdwKey); +if (dataA == null || dataB == null) return; +var alpha_a = dataA[0]; +var N_a = dataA[1]; +var A_a = dataA[2]; +var G_a = dataA[3]; +var DA_a = Clazz_doubleToInt(dataA[4]); +var alpha_b = dataB[0]; +var N_b = dataB[1]; +var A_b = dataB[2]; +var G_b = dataB[3]; +var DA_b = Clazz_doubleToInt(dataB[4]); +var rs_aa = A_a * Math.pow(alpha_a, 0.25); +var rs_bb = A_b * Math.pow(alpha_b, 0.25); +var gamma = (rs_aa - rs_bb) / (rs_aa + rs_bb); +var rs = 0.5 * (rs_aa + rs_bb); +if (DA_a != 68 && DA_b != 68) rs *= (1.0 + 0.2 * (1.0 - Math.exp(-12.0 * gamma * gamma))); +var eps = ((181.16 * G_a * G_b * alpha_a * alpha_b) / (Math.sqrt(alpha_a / N_a) + Math.sqrt(alpha_b / N_b))) * Math.pow(rs, -6.0); +if (DA_a + DA_b == 133) { +rs *= 0.8; +eps *= 0.5; +}calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [ia, ib]), Clazz_newDoubleArray(-1, [rs, eps])])); +}, "JU.Lst,~N,~N,~N"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +this.calcs.setPairVariables(this); +var rs = this.dData[0]; +var eps = this.dData[1]; +var r_rs = this.rab / rs; +var f1 = 1.07 / (r_rs + 0.07); +var f2 = 1.12 / (Math.pow(r_rs, 7) + 0.12); +this.energy = eps * Math.pow(f1, 7) * (f2 - 2); +if (this.calcs.gradients) { +this.dE = -7 * eps * Math.pow(f1, 7) / rs * (f1 / 1.07 * (f2 - 2) + f2 * f2 * Math.pow(r_rs, 6)); +this.calcs.addForces(this, 2); +}if (this.calcs.logging && Math.abs(this.energy) > 0.1) this.calcs.appendLogData(this.calcs.getDebugLine(5, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.UFFAngleCalc", ["JM.FF.CalculationsUFF"], function(){ +var c$ = Clazz_declareType(JM.FF, "UFFAngleCalc", JM.FF.Calculation); +Clazz_defineMethod(c$, "setData", +function(calc, angle){ +this.a = this.calcs.minAtoms[this.ia = angle[0]]; +this.b = this.calcs.minAtoms[this.ib = angle[1]]; +this.c = this.calcs.minAtoms[this.ic = angle[2]]; +var preliminaryMagnification = (this.a.sType === "H_" && this.c.sType === "H_" ? 10 : 1); +this.calcs.parA = this.calcs.getParameter(this.a.sType); +this.calcs.parB = this.calcs.getParameter(this.b.sType); +this.calcs.parC = this.calcs.getParameter(this.c.sType); +var coordination = this.calcs.parB.iVal[0]; +var zi = this.calcs.parA.dVal[5]; +var zk = this.calcs.parC.dVal[5]; +var theta0 = this.calcs.parB.dVal[1]; +var cosT0 = Math.cos(theta0); +var sinT0 = Math.sin(theta0); +var c0; +var c1; +var c2; +switch (coordination) { +case 1: +case 2: +case 4: +case 6: +c0 = c1 = c2 = 0; +break; +default: +c2 = 1.0 / (4.0 * sinT0 * sinT0); +c1 = -4.0 * c2 * cosT0; +c0 = c2 * (2.0 * cosT0 * cosT0 + 1.0); +} +var bond = this.a.getBondTo(this.ib); +var bondorder = bond.order; +if (bond.isAromatic) bondorder = 1.5; +if (bond.isAmide) bondorder = 1.41; +this.rab = JM.FF.CalculationsUFF.calculateR0(this.calcs.parA.dVal[0], this.calcs.parB.dVal[0], this.calcs.parA.dVal[8], this.calcs.parB.dVal[8], bondorder); +bond = this.c.getBondTo(this.ib); +bondorder = bond.order; +if (bond.isAromatic) bondorder = 1.5; +if (bond.isAmide) bondorder = 1.41; +var rbc = JM.FF.CalculationsUFF.calculateR0(this.calcs.parB.dVal[0], this.calcs.parC.dVal[0], this.calcs.parB.dVal[8], this.calcs.parC.dVal[8], bondorder); +var rac = Math.sqrt(this.rab * this.rab + rbc * rbc - 2.0 * this.rab * rbc * cosT0); +var ka = (2696.8016159999997) * (zi * zk / (Math.pow(rac, 5.0))) * (3.0 * this.rab * rbc * (1.0 - cosT0 * cosT0) - rac * rac * cosT0); +calc.addLast( Clazz_newArray(-1, [this.iData = Clazz_newIntArray(-1, [this.ia, this.ib, this.ic, coordination]), Clazz_newDoubleArray(-1, [ka, theta0 * 57.29577951308232, c0 - c2, c1, 2 * c2, preliminaryMagnification * ka]), this.isLoggable(3)])); +}, "JU.Lst,~A"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var coordination = this.iData[3]; +var ka = (this.calcs.isPreliminary ? this.dData[5] : this.dData[0]); +var a0 = this.dData[2]; +var a1 = this.dData[3]; +var a2 = this.dData[4]; +this.calcs.setAngleVariables(this); +if ((coordination == 4 || coordination == 6) && (this.theta > 2.35619 || this.theta < 0.785398)) coordination = 1; +var cosT = Math.cos(this.theta); +var sinT = Math.sin(this.theta); +switch (coordination) { +case 0: +case 1: +this.energy = ka * (1.0 + cosT) * (1.0 + cosT) / 4.0; +break; +case 2: +this.energy = ka * (1.0 + (4.0 * cosT) * (1.0 + cosT)) / 9.0; +break; +case 4: +case 6: +this.energy = ka * cosT * cosT; +break; +default: +this.energy = ka * (a0 + a1 * cosT + a2 * cosT * cosT); +} +if (this.calcs.gradients) { +switch (coordination) { +case 0: +case 1: +this.dE = -0.5 * ka * sinT * (1 + cosT); +break; +case 2: +this.dE = -4.0 * sinT * ka * (1.0 - 2.0 * cosT) / 9.0; +break; +case 4: +case 6: +this.dE = -ka * sinT * cosT; +break; +default: +this.dE = -ka * (a1 * sinT - 2.0 * a2 * cosT * sinT); +} +this.calcs.addForces(this, 3); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(1, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.UFFDistanceCalc", ["JM.FF.CalculationsUFF"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.r0 = 0; +this.kb = 0; +Clazz_instantialize(this, arguments);}, JM.FF, "UFFDistanceCalc", JM.FF.Calculation); +Clazz_overrideMethod(c$, "setData", +function(calc, ia, ib, bondOrder){ +this.calcs.parA = this.calcs.getParameter(this.calcs.minAtoms[ia].sType); +this.calcs.parB = this.calcs.getParameter(this.calcs.minAtoms[ib].sType); +this.r0 = JM.FF.CalculationsUFF.calculateR0(this.calcs.parA.dVal[0], this.calcs.parB.dVal[0], this.calcs.parA.dVal[8], this.calcs.parB.dVal[8], bondOrder); +this.kb = 1390.2842991599998 * this.calcs.parA.dVal[5] * this.calcs.parB.dVal[5] / (this.r0 * this.r0 * this.r0); +calc.addLast( Clazz_newArray(-1, [this.iData = Clazz_newIntArray(-1, [ia, ib]), Clazz_newDoubleArray(-1, [this.kb, this.r0, bondOrder]), this.isLoggable(2)])); +}, "JU.Lst,~N,~N,~N"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +this.kb = this.dData[0]; +this.r0 = this.dData[1]; +this.calcs.setPairVariables(this); +this.delta = this.rab - this.r0; +this.energy = this.kb * this.delta * this.delta; +if (this.calcs.gradients) { +this.dE = 2.0 * this.kb * this.delta; +this.calcs.addForces(this, 2); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(0, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.UFFOOPCalc", null, function(){ +var c$ = Clazz_declareType(JM.FF, "UFFOOPCalc", JM.FF.Calculation); +Clazz_overrideMethod(c$, "setData", +function(calc, ib, elemNo, dd){ +this.b = this.calcs.minAtoms[ib]; +var atomList = this.b.getBondedAtomIndexes(); +this.a = this.calcs.minAtoms[this.ia = atomList[0]]; +this.c = this.calcs.minAtoms[this.ic = atomList[1]]; +this.d = this.calcs.minAtoms[this.id = atomList[2]]; +var a0 = 1.0; +var a1 = -1.0; +var a2 = 0.0; +var koop = 25.1208; +switch (elemNo) { +case 6: +if (this.b.sType === "C_2" && this.b.getHCount() > 1 || this.b.sType === "C_2+" || this.a.sType === "O_2" || this.c.sType === "O_2" || this.d.sType === "O_2") { +koop += 184.2192; +break; +}break; +case 7: +case 8: +break; +default: +koop = 92.1096; +var phi = 0.017453292519943295; +switch (elemNo) { +case 15: +phi *= 84.4339; +break; +case 33: +phi *= 86.9735; +break; +case 51: +phi *= 87.7047; +break; +case 83: +phi *= 90.0; +break; +} +var cosPhi = Math.cos(phi); +a0 = cosPhi * cosPhi; +a1 = -2.0 * cosPhi; +a2 = 1.0; +} +koop /= 3.0; +this.iData = Clazz_newIntArray(-1, [this.ia, ib, this.ic, this.id]); +var loggable = this.isLoggable(4); +calc.addLast( Clazz_newArray(-1, [this.iData, Clazz_newDoubleArray(-1, [koop, a0, a1, a2, koop * 10]), loggable])); +calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [this.ic, ib, this.id, this.ia]), Clazz_newDoubleArray(-1, [koop, a0, a1, a2, koop * 10]), loggable])); +calc.addLast( Clazz_newArray(-1, [ Clazz_newIntArray(-1, [this.id, ib, this.ia, this.ic]), Clazz_newDoubleArray(-1, [koop, a0, a1, a2, koop * 10]), loggable])); +}, "JU.Lst,~N,~N,~N"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var koop = (this.calcs.isPreliminary ? this.dData[4] : this.dData[0]); +var a0 = this.dData[1]; +var a1 = this.dData[2]; +var a2 = this.dData[3]; +this.calcs.setOopVariables(this, true); +var cosTheta = Math.cos(this.theta); +this.energy = koop * (a0 + a1 * cosTheta + a2 * cosTheta * cosTheta); +if (this.calcs.gradients) { +this.dE = koop * (a1 * Math.sin(this.theta) + a2 * 2.0 * Math.sin(this.theta) * cosTheta); +this.calcs.addForces(this, 4); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(4, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.UFFTorsionCalc", ["JM.Util"], function(){ +var c$ = Clazz_declareType(JM.FF, "UFFTorsionCalc", JM.FF.Calculation); +Clazz_defineMethod(c$, "setData", +function(calc, t){ +var cosNPhi0 = -1; +var n = 0; +var V = 0; +this.a = this.calcs.minAtoms[this.ia = t[0]]; +this.b = this.calcs.minAtoms[this.ib = t[1]]; +this.c = this.calcs.minAtoms[this.ic = t[2]]; +this.d = this.calcs.minAtoms[this.id = t[3]]; +var bc = this.c.getBondTo(this.ib); +var bondOrder = bc.order; +if (bc.isAromatic) bondOrder = 1.5; +if (bc.isAmide) bondOrder = 1.41; +this.calcs.parB = this.calcs.getParameter(this.b.sType); +this.calcs.parC = this.calcs.getParameter(this.c.sType); +switch (this.calcs.parB.iVal[0] * this.calcs.parC.iVal[0]) { +case 9: +n = 3; +var vi = this.calcs.parB.dVal[6]; +var vj = this.calcs.parC.dVal[6]; +var viNew = 0; +switch (this.b.atom.getElementNumber()) { +case 8: +viNew = 2.0; +break; +case 16: +case 34: +case 52: +case 84: +viNew = 6.8; +} +if (viNew != 0) switch (this.c.atom.getElementNumber()) { +case 8: +vi = viNew; +vj = 2.0; +n = 2; +break; +case 16: +case 34: +case 52: +case 84: +vi = viNew; +vj = 6.8; +n = 2; +} +V = 0.5 * 4.1868 * Math.sqrt(vi * vj); +break; +case 4: +cosNPhi0 = 1; +n = 2; +V = 0.5 * 4.1868 * 5.0 * Math.sqrt(this.calcs.parB.dVal[7] * this.calcs.parC.dVal[7]) * (1.0 + 4.18 * Math.log(bondOrder)); +break; +case 6: +cosNPhi0 = 1; +n = 6; +var sp3C = (this.calcs.parC.iVal[0] == 3); +switch ((sp3C ? this.c : this.b).atom.getElementNumber()) { +case 8: +case 16: +case 34: +case 52: +case 84: +switch ((sp3C ? this.b : this.c).atom.getElementNumber()) { +case 8: +case 16: +case 34: +case 52: +case 84: +break; +default: +n = 2; +cosNPhi0 = -1; +} +break; +} +V = 2.0934; +} +if (JM.Util.isNearZero(V)) return; +calc.addLast( Clazz_newArray(-1, [this.iData = Clazz_newIntArray(-1, [this.ia, this.ib, this.ic, this.id, n]), Clazz_newDoubleArray(-1, [V, cosNPhi0]), this.isLoggable(4)])); +}, "JU.Lst,~A"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var n = this.iData[4]; +var V = this.dData[0]; +var cosNPhi0 = this.dData[1]; +this.calcs.setTorsionVariables(this); +this.energy = V * (1.0 - cosNPhi0 * Math.cos(this.theta * n)); +if (this.calcs.gradients) { +this.dE = V * n * cosNPhi0 * Math.sin(n * this.theta); +this.calcs.addForces(this, 4); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(2, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +Clazz_load(["JM.FF.Calculation"], "JM.FF.UFFVDWCalc", null, function(){ +var c$ = Clazz_declareType(JM.FF, "UFFVDWCalc", JM.FF.Calculation); +Clazz_overrideMethod(c$, "setData", +function(calc, ia, ib, dd){ +this.a = this.calcs.minAtoms[ia]; +this.b = this.calcs.minAtoms[ib]; +if (this.a.atom.distanceSquared(this.b.atom) > 50.0) return; +var parA = this.calcs.getParameter(this.a.sType); +var parB = this.calcs.getParameter(this.b.sType); +var Xa; +var Da; +var Xb; +var Db; +if (parA == null || parA.dVal == null) { +System.out.println("OHOH"); +Xa = Da = 0; +} else { +Xa = parA.dVal[2]; +Da = parA.dVal[3]; +}if (parB == null || parB.dVal == null) { +System.out.println("OHOH"); +Xb = Db = 0; +} else { +Xb = parB.dVal[2]; +Db = parB.dVal[3]; +}var Dab = 4.1868 * Math.sqrt(Da * Db); +var Xab = Math.sqrt(Xa * Xb); +calc.addLast( Clazz_newArray(-1, [this.iData = Clazz_newIntArray(-1, [ia, ib]), Clazz_newDoubleArray(-1, [Xab, Dab]), this.isLoggable(2)])); +}, "JU.Lst,~N,~N,~N"); +Clazz_overrideMethod(c$, "compute", +function(dataIn){ +this.getPointers(dataIn); +var Xab = this.dData[0]; +var Dab = this.dData[1]; +this.calcs.setPairVariables(this); +var term = Xab / this.rab; +var term6 = term * term * term; +term6 *= term6; +this.energy = Dab * term6 * (term6 - 2.0); +if (this.calcs.gradients) { +this.dE = Dab * 12.0 * (1.0 - term6) * term6 * term / Xab; +this.calcs.addForces(this, 2); +}if (this.calcs.logging && dataIn[2] === Boolean.TRUE) this.calcs.appendLogData(this.calcs.getDebugLine(5, this)); +return this.energy; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM.FF"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.iVal = null; +this.dVal = null; +this.sVal = null; +Clazz_instantialize(this, arguments);}, JM.FF, "FFParam", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +Clazz_load(["J.thread.JmolThread"], "JM.MinimizationThread", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.minimizer = null; +Clazz_instantialize(this, arguments);}, JM, "MinimizationThread", J.thread.JmolThread); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JM.MinimizationThread, []); +}); +Clazz_overrideMethod(c$, "setManager", +function(manager, vwr, options){ +this.minimizer = manager; +this.setViewer(vwr, "MinimizationThread"); +return 0; +}, "~O,JV.Viewer,~O"); +Clazz_overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +this.lastRepaintTime = this.startTime; +this.haveReference = true; +if (!this.minimizer.startMinimization()) return; +this.vwr.startHoverWatcher(false); +mode = 0; +break; +case 0: +if (!this.minimizer.minimizationOn() || this.checkInterrupted(this.minimizer.getThread())) { +mode = -2; +break; +}this.currentTime = System.currentTimeMillis(); +var elapsed = (this.currentTime - this.lastRepaintTime); +var sleepTime = 33 - elapsed; +if (!this.runSleep(sleepTime, 1)) return; +mode = 1; +break; +case 1: +this.lastRepaintTime = this.currentTime = System.currentTimeMillis(); +mode = (this.minimizer.stepMinimization() ? 0 : -2); +break; +case -2: +this.minimizer.endMinimization(true); +this.vwr.startHoverWatcher(true); +return; +} + +}, "~N"); +Clazz_overrideMethod(c$, "oops", +function(e){ +if (this.minimizer.minimizationOn()) JU.Logger.error(e.toString()); +}, "Exception"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JM"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.indexes = null; +this.value = 0; +this.type = 0; +this.minList = null; +this.nAtoms = 0; +Clazz_instantialize(this, arguments);}, JM, "MMConstraint", null); +Clazz_prepareFields (c$, function(){ +this.minList = Clazz_newIntArray (4, 0); +}); +Clazz_makeConstructor(c$, +function(indexes, value){ +this.value = value; +this.indexes = indexes; +}, "~A,~N"); +Clazz_defineMethod(c$, "set", +function(steps, bsAtoms, atomMap){ +this.nAtoms = Math.abs(this.indexes[0]); +this.type = this.nAtoms - 2; +for (var j = 1; j <= this.nAtoms; j++) { +if (steps <= 0 || !bsAtoms.get(this.indexes[j])) { +this.indexes[0] = -this.nAtoms; +break; +}this.minList[j - 1] = atomMap[this.indexes[j]]; +} +}, "~N,JU.BS,~A"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coremin.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coremin.z.js new file mode 100755 index 000000000000..f507c8a8c581 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coremin.z.js @@ -0,0 +1,185 @@ +(function(v,I,K,L,G,M,q,F,t,w,u,N,O,x,P,B,r,y,z,C,D,Q,R,S,T,U,V,k,W,X,Y,Z,$,aa,ba,s,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,sa,ta,ua,d,n){q("JM");t(["JU.P3"],"JM.Minimizer","java.util.Hashtable JU.AU $.BS $.Lst J.i18n.GT JM.MMConstraint $.MinAngle $.MinAtom $.MinBond $.MinTorsion $.MinimizationThread JM.FF.ForceFieldMMFF $.ForceFieldUFF JU.BSUtil $.Escape $.Logger".split(" "),function(){var b=u(function(){this.id=0;this.bonds=this.atoms=this.vwr=null;this.rawBondCount=0;this.bsMinFixed=this.minTorsions= +this.minAngles=this.minBonds=this.minAtoms=this.constraints=this.bsAtoms=null;this.bondCount=this.ac=0;this.atomMap=null;this.steps=50;this.crit=0.001;this.units="kJ/mol";this.pFF=null;this.ff="UFF";this.bsFixed=this.bsFixedDefault=this.bsSelected=this.bsTaint=null;this.modelkitMinimizing=!1;this.bsBasis=null;this.isSilent=!1;this.constraintMap=null;this.elemnoMax=0;this.minimizing=this.isQuick=!1;this.minimizationThread=null;this.trustRadius=0.3;this.p=this.coordSaved=null;w(this,arguments)},JM, +"Minimizer",null);C(b,function(){this.p=new JU.P3});x(b,function(){this.id=100*++JM.Minimizer.staticID});d(b,"setProperty",function(a,c){switch("ff cancel clear constraintfixed stop vwr ".indexOf(a)){case 0:this.ff.equals(c)||(this.setProperty("clear",null),this.ff=c);break;case 10:this.stopMinimization(!1);break;case 20:null!=this.minAtoms&&(this.stopMinimization(!1),this.clear());break;case 30:this.addConstraint(c);break;case 40:this.bsFixedDefault=c;null!=this.bsFixedDefault&& +0==this.bsFixedDefault.cardinality()&&(this.bsFixedDefault=null);break;case 50:this.stopMinimization(!0);break;case 60:this.vwr=c}return this},"~S,~O");d(b,"minimize",function(a,c,e,j,f,b,g){this.id++;this.isSilent=1==(b&1);this.isQuick=0<=g.indexOf("2D")||8==(b&8);this.modelkitMinimizing=null!=f&&this.vwr.getModelkitPropertySafely("minimizing")===Boolean.TRUE;if(null!=f){null==j&&(j=new JU.BS);this.vwr.getMotionFixedAtoms(null,j);f.andNot(j);j.or(e);j.andNot(f);if(f.isEmpty())return this.report(" symmetry-based minimization failed -- all atoms are fully constrained", +!1),!1;var d=f.cardinality();this.report(" symmetry-based minimization for "+d+" atom"+(1==d?"":"s"),!1)}this.bsBasis=f;this.trustRadius=null==f?0.3:0.01;f=4==(b&4);b=128==(b&128)?new JU.BS:null;0>=c&&(d=this.vwr.getP("minimizationCriterion"),null!=d&&F(d,Float)&&(c=d.floatValue()));this.crit=Math.max(c,1E-4);2147483647==a&&(d=this.vwr.getP("minimizationSteps"),null!=d&&F(d,Integer)&&(a=d.intValue()));this.steps=a;try{this.setEnergyUnits();!f&&null!=this.bsFixedDefault&&j.and(this.bsFixedDefault); +if(this.minimizing)return!1;var m=this.pFF;this.getForceField(g);if(null==this.pFF)return JU.Logger.error(J.i18n.GT.o(J.i18n.GT.$("Could not get class for force field {0}"),g)),!1;JU.Logger.info("minimize: "+this.id+" initializing "+this.pFF.name+" (steps = "+a+" criterion = "+c+") silent="+this.isSilent+" quick="+this.isQuick+" fixed="+f+" bsSelected="+e+" bsFixed="+j+" bsFixedDefault="+this.bsFixedDefault+" Xx="+(null!=b)+" ...");if(0>e.nextSetBit(0))return JU.Logger.error(J.i18n.GT.$("No atoms selected -- nothing to do!")), +!1;this.atoms=this.vwr.ms.at;this.bsAtoms=JU.BSUtil.copy(e);for(var p=this.bsAtoms.nextSetBit(0);0<=p;p=this.bsAtoms.nextSetBit(p+1))0==this.atoms[p].getElementNumber()&&(null==b?(this.bsAtoms.clear(p),JU.Logger.info("minimize: "+this.id+" Ignoring Xx for atomIndex="+p)):(b.set(p),JU.Logger.info("minimize: "+this.id+" Setting Xx to fluorine for atomIndex="+p),this.atoms[p].setAtomicAndIsotopeNumber(9)));null!=j&&this.bsAtoms.or(j);this.ac=this.bsAtoms.cardinality();var k=JU.BSUtil.areEqual(e,this.bsSelected); +this.bsSelected=e;null!=m&&this.pFF!==m&&(k=!1);k||this.pFF.clear();var l=k&&JU.BSUtil.areEqual(j,this.bsFixed);if(!this.setupMinimization(j,l))return this.clear(),!1;0=a?this.getEnergyOnly():this.isSilent||!this.vwr.useMinimizationThread()? +this.minimizeWithoutThread():this.setMinimizationOn(!0)}finally{if(null!=b&&!b.isEmpty())for(p=b.nextSetBit(0);0<=p;p=b.nextSetBit(p+1))this.atoms[p].setAtomicAndIsotopeNumber(0)}return!0},"~N,~N,JU.BS,JU.BS,JU.BS,~N,~S");d(b,"getProperty",function(a){return a.equals("log")?null==this.pFF?"":this.pFF.getLogData():a.equals("fixed")?this.bsFixedDefault:null},"~S,~N");d(b,"addConstraint",function(a){if(null!=a){var c=a[0],e=c[0];if(0==e)this.constraints=null;else{a=a[1].doubleValue();null==this.constraints&& +(this.constraints=new JU.Lst,this.constraintMap=new java.util.Hashtable);c[1]>c[e]&&(JU.AU.swapInt(c,1,e),4==e&&JU.AU.swapInt(c,2,3));var e=JU.Escape.eAI(c),j=this.constraintMap.get(e);null==j?(j=new JM.MMConstraint(c,a),this.constraintMap.put(e,j),this.constraints.addLast(j)):j.value=a}}},"~A");d(b,"clear",function(){this.setMinimizationOn(!1);this.bondCount=this.ac=0;this.bonds=this.atoms=null;this.rawBondCount=0;this.pFF=this.constraintMap=this.constraints=this.bsSelected=this.bsMinFixed=this.bsFixedDefault= +this.bsFixed=this.bsAtoms=this.bsTaint=this.atomMap=this.coordSaved=this.minTorsions=this.minAngles=this.minBonds=this.minAtoms=null});d(b,"setEnergyUnits",function(){this.units=this.vwr.g.energyUnits.equalsIgnoreCase("kcal")?"kcal":"kJ"});d(b,"setupMinimization",function(a,c){if(c)return this.setAtomPositions(),!0;this.coordSaved=null;this.atomMap=r(this.atoms.length,0);this.minAtoms=Array(this.ac);this.elemnoMax=0;for(var e=new JU.BS,j=this.bsAtoms.nextSetBit(0),b=0;0<=j;j=this.bsAtoms.nextSetBit(j+ +1),b++){var h=this.atoms[j];this.atomMap[j]=b;var g=this.atoms[j].getElementNumber();this.elemnoMax=Math.max(this.elemnoMax,g);e.set(g);this.minAtoms[b]=new JM.MinAtom(b,h,s(-1,[h.x,h.y,h.z]),this.ac);this.minAtoms[b].sType=h.getAtomName()}null!=a&&(this.bsFixed=a);JU.Logger.info(J.i18n.GT.i(J.i18n.GT.$("{0} atoms will be minimized."),this.ac));JU.Logger.info("minimize: "+this.id+" getting bonds...");this.bonds=this.vwr.ms.bo;this.rawBondCount=this.vwr.ms.bondCount;this.getBonds();JU.Logger.info("minimize: "+ +this.id+" getting angles...");this.getAngles();JU.Logger.info("minimize: "+this.id+" getting torsions...");this.getTorsions(this.ff.startsWith("MMFF"));return this.setModel(e)},"JU.BS,~B");d(b,"setModel",function(a){return!this.pFF.setModel(a,this.elemnoMax)?(JU.Logger.error(J.i18n.GT.o(J.i18n.GT.$("could not setup force field {0}"),this.ff)),this.ff.startsWith("MMFF")?(this.report(" MMFF not applicable",!1),this.getForceField("UFF"),this.setModel(a)):!1):!0},"JU.BS");d(b,"setAtomPositions",function(){for(var a= +0;ab)a.addLast(new JM.MinAngle(r(-1,[b,h,e,j,this.minAtoms[h].getBondIndex(g)]))),this.minAtoms[b].bsVdw.clear(e)}if(1b)a.addLast(new JM.MinAngle(r(-1,[e,b,h,this.minAtoms[b].getBondIndex(g),j]))),this.minAtoms[e].bsVdw.clear(h)}}this.minAngles=a.toArray(Array(a.size()));JU.Logger.info(this.minAngles.length+ +" angles")});d(b,"getTorsions",function(a){for(var c=new JU.Lst,e,j=this.minAngles.length;0<=--j;){var b=this.minAngles[j].data,h=b[0],g=b[1],d=b[2],m;if(d>g&&1g&&1!=this.minAtoms[h].nBonds){m=this.minAtoms[h].getBondedAtomIndexes();for(p= +0;pc;c++)this.coordSaved[a][c]=this.minAtoms[a].coord[c]});d(b,"restoreCoordinates",function(){if(null!=this.coordSaved){for(var a=0;ac;c++)this.minAtoms[a].coord[c]=this.coordSaved[a][c];this.updateAtomXYZ(!0)}});d(b,"stopMinimization",function(a){this.minimizing&&(a?this.endMinimization(!1):this.restoreCoordinates(), +this.setMinimizationOn(!1))},"~B");d(b,"updateAtomXYZ",function(a){if(!(0>=this.steps||null!=this.pFF&&0==this.pFF.getCurrentStep())){if(this.modelkitMinimizing){for(var c,e=!1,j=0;j>4,c=a&127,a=a>>7,e=a&127,a=a>>7,j=a&127,a=a>>7&127;return(0>b?b+": ":"")+(10>c?" ":" ")+c+(10>e?" ":" ")+e+(10>j?" ":" ")+j+(120a?" ":" ")+a)},"Integer");q("JM");t(["JM.MinObject"],"JM.MinAngle",null,function(){var b=u(function(){this.sbType=0;this.sbKey=null;this.ka=0;this.theta0=NaN;w(this,arguments)},JM, +"MinAngle",JM.MinObject);x(b,function(a){D(this,JM.MinAngle,[]);this.data=a},"~A")});q("JM");t(["JU.BS","$.Lst"],"JM.MinAtom",null,function(){var b=u(function(){this.atom=null;this.index=0;this.bonds=this.force=this.coord=this.sType=null;this.nBonds=0;this.bsVdw=this.bondedAtoms=null;this.hCount=-1;this.partialCharge=0;this.ffAtomType=null;this.ffType=0;this.bs14=this.vdwKey=null;w(this,arguments)},JM,"MinAtom",null);C(b,function(){this.coord=s(3,0);this.force=s(3,0);this.bonds=new JU.Lst;this.bsVdw= +new JU.BS;this.bs14=new JU.BS});x(b,function(a,c,e,b){this.index=a;this.atom=c;this.coord=e;this.bsVdw.setBits(a+1,b);this.bsVdw.clear(a)},"~N,JM.Atom,~A,~N");n(b,"toString",function(){return"#"+this.index+"@"+this.atom.i+" "+this.sType+" "+this.coord[0]+","+this.coord[1]+","+this.coord[2]});d(b,"set",function(){this.coord[0]=this.atom.x;this.coord[1]=this.atom.y;this.coord[2]=this.atom.z});d(b,"getBondTo",function(a){this.getBondedAtomIndexes();for(var c=0;cthis.hCount&&(this.hCount=this.atom.getCovalentHydrogenCount());return this.hCount})});q("JM");t(["JM.MinObject"],"JM.MinBond",null,function(){var b=u(function(){this.order=this.index=this.rawIndex=0;this.isAmide=this.isAromatic=!1;w(this,arguments)},JM,"MinBond",JM.MinObject);x(b,function(a,c,e,b,f,h,g){D(this,JM.MinBond,[]);this.rawIndex=a;this.index=c;this.type=h;this.data=r(-1,[e,b]);this.order=f;this.key=g},"~N,~N,~N,~N,~N,~N,Integer");d(b,"getOtherAtom",function(a){return this.data[this.data[0]== +a?1:0]},"~N")});q("JM");t(["JM.MinObject"],"JM.MinTorsion",null,function(){var b=z(JM,"MinTorsion",JM.MinObject);x(b,function(a){D(this,JM.MinTorsion,[]);this.data=a},"~A")});q("JM");t(null,"JM.Util",["java.util.Random"],function(){var b=z(JM,"Util",null);b.sub=d(b,"sub",function(a,c,e){e.set(a[0]-c[0],a[1]-c[1],a[2]-c[2])},"~A,~A,JU.V3d");b.putCoord=d(b,"putCoord",function(a,c){c[0]=a.x;c[1]=a.y;c[2]=a.z},"JU.V3d,~A");b.distance2=d(b,"distance2",function(a,c){var e=a[0]-c[0],b=a[1]-c[1],f=a[2]-c[2]; +return e*e+b*b+f*f},"~A,~A");b.distance2V=d(b,"distance2V",function(a,c){var e=a.x-c.x,b=a.y-c.y,f=a.z-c.z;return e*e+b*b+f*f},"JU.V3d,JU.V3d");b.getAngleRadiansABC=d(b,"getAngleRadiansABC",function(a,c,e){var b=JM.Util.distance2(a,c);c=JM.Util.distance2(c,e);a=JM.Util.distance2(a,e);return JM.Util.isNearZero2(b,0.001)||JM.Util.isNearZero2(c,0.001)?0:Math.acos(Math.min(Math.max((b+c-a)/2/Math.sqrt(b*c),-1),1))},"~A,~A,~A");b.isApprox=d(b,"isApprox",function(a,c,e){return JM.Util.distance2V(a,c)<= +e*e*Math.min(a.lengthSquared(),c.lengthSquared())},"JU.V3d,JU.V3d,~N");b.canBeSquared=d(b,"canBeSquared",function(a){return 0==a?!0:1E150>(a=Math.abs(a))&&1E-150b&&(JM.Util.randomizeUnitVector(e),b=0.1);e.normalize();a.setT(e);a.scale(-1);c.setT(e);return b},"JU.V3d,JU.V3d,JU.V3d");b.randomizeUnitVector=d(b, +"randomizeUnitVector",function(a){var c=new java.util.Random,e;do a.set(c.nextFloat()-0.5,c.nextFloat()-0.5,c.nextFloat()-0.5),e=a.lengthSquared();while(1e);a.normalize()},"JU.V3d");b.restorativeForceAndAngleRadians=d(b,"restorativeForceAndAngleRadians",function(a,c,e){a.sub(c);e.sub(c);var b=a.length(),f=e.length();if(JM.Util.isNearZero(b)||JM.Util.isNearZero(f))return a.set(0,0,0),c.set(0,0,0),e.set(0,0,0),0;b=1/b;f=1/f;a.scale(b);e.scale(f);c.cross(a,e);var h=c.length();if(JM.Util.isNearZero(h))return a.set(0, +0,0),c.set(0,0,0),e.set(0,0,0),0;c.scale(1/h);h=a.dot(e);h=1h?3.141592653589793:Math.acos(h);a.cross(a,c);a.normalize();c.cross(e,c);c.normalize();a.scale(-b);c.scale(f);e.setT(c);c.add(a);c.scale(-1);return h},"JU.V3d,JU.V3d,JU.V3d");b.restorativeForceAndOutOfPlaneAngleRadians=d(b,"restorativeForceAndOutOfPlaneAngleRadians",function(a,c,e,b,f,h,g){a.sub2(a,c);e.sub2(e,c);b.sub2(b,c);var d=a.length(),m=e.length(),p=b.length();if(JM.Util.isNearZero(d)||JM.Util.isNearZero(m)||JM.Util.isNearZero(p))return a.set(0, +0,0),c.set(0,0,0),e.set(0,0,0),b.set(0,0,0),0;a.normalize();e.normalize();b.normalize();var k=a.dot(e),l=Math.acos(k);if(JM.Util.isNearZero(l)||JM.Util.isNearZero(Math.abs(l-3.141592653589793)))return a.set(0,0,0),c.set(0,0,0),e.set(0,0,0),b.set(0,0,0),0;l=1/Math.sin(l);f.cross(a,e);h.cross(e,b);g.cross(b,a);var r=f.dot(b)*l,n=Math.asin(r);if(1E-4>Math.cos(n)||JM.Util.isNearZero(n)||JM.Util.isNearZero(Math.abs(n-3.141592653589793)))return a.set(0,0,0),c.set(0,0,0),e.set(0,0,0),b.set(0,0,0),n;b.scaleAdd2(-r/ +l,b,f);b.scale(l/p);c.setT(a);a.scaleAdd2(-k,e,a);a.scaleAdd2(-r*l,a,h);a.scale(l/d);e.scaleAdd2(-k,c,e);e.scaleAdd2(-r*l,e,g);e.scale(l/m);c.setT(a);c.add(e);c.add(b);c.scale(-1);return n},"JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d,JU.V3d");b.restorativeForceAndTorsionAngleRadians=d(b,"restorativeForceAndTorsionAngleRadians",function(a,c,e,b){a.sub2(c,a);c.sub2(e,c);e.sub2(b,e);var f=a.length(),h=c.length(),g=e.length();if(JM.Util.isNearZero(f)||JM.Util.isNearZero(h)||JM.Util.isNearZero(g))return a.set(0, +0,0),c.set(0,0,0),e.set(0,0,0),b.set(0,0,0),0;var d=JM.Util.vectorAngleRadians(a,c),m=Math.sin(d),p=Math.cos(d),d=JM.Util.vectorAngleRadians(c,e),k=Math.sin(d),d=Math.cos(d);a.normalize();c.normalize();e.normalize();a.cross(a,c);b.cross(c,e);e.cross(a,b);var l=-Math.atan2(e.dot(c),a.dot(b));a.scale(1/f/m/m);b.scale(-1/g/k/k);c.setT(a);c.scale(-f/h*p-1);e.setT(b);e.scale(-g/h*d);c.sub(e);e.setT(a);e.add(c);e.add(b);e.scale(-1);return l},"JU.V3d,JU.V3d,JU.V3d,JU.V3d")});q("JM.FF");v=u(function(){this.elemNo= +0;this.smartsCode=this.descr=null;this.fcadj=this.formalCharge=this.hType=this.mmType=0;this.pilp=this.arom=this.sbmb=!1;this.val=this.mltb=0;w(this,arguments)},JM.FF,"AtomType",null);x(v,function(b,a,c,e,j,f,h){this.elemNo=b;this.mmType=a;this.hType=c;this.formalCharge=e;this.val=j;this.descr=f;this.smartsCode=h},"~N,~N,~N,~N,~N,~S,~S");q("JM.FF");t(null,"JM.FF.ForceField",["JU.PT","JM.Util","JU.Logger","JV.FileManager","$.Viewer"],function(){var b=u(function(){this.calc=this.name=null;this.stepMax= +this.currentStep=this.dE=this.e0=this.criterion=0;this.coordSaved=null;this.minBondCount=this.minAtomCount=0;this.bsMinFixed=this.minTorsions=this.minAngles=this.minBonds=this.minAtoms=null;this.trustRadius=0.3;this.minimizer=null;this.nth=10;w(this,arguments)},JM.FF,"ForceField",null);d(b,"setModelFields",function(){this.minAtoms=this.minimizer.minAtoms;this.minBonds=this.minimizer.minBonds;this.minAngles=this.minimizer.minAngles;this.minTorsions=this.minimizer.minTorsions;this.bsMinFixed=this.minimizer.bsMinFixed; +this.minAtomCount=this.minAtoms.length;this.minBondCount=this.minBonds.length});d(b,"setConstraints",function(a){this.bsMinFixed=a.bsMinFixed;this.calc.setConstraints(a.constraints);this.coordSaved=null},"JM.Minimizer");d(b,"steepestDescentInitialize",function(a,c,e){this.stepMax=a;this.criterion=c/this.toUserUnits(1);this.trustRadius=e;this.currentStep=0;this.clearForces();this.calc.setLoggingEnabled(!0);this.calc.setLoggingEnabled(0==a||JU.Logger.isActiveLevel(6));e=this.name+" "+this.calc.getDebugHeader(-1)+ +"Jmol Minimization Version "+JV.Viewer.getJmolVersion()+"\n";this.calc.appendLogData(e);JU.Logger.info(e);this.calc.getConstraintList();this.calc.loggingEnabled&&this.calc.appendLogData(this.calc.getAtomList("S T E E P E S T D E S C E N T"));this.dE=0;this.calc.setPreliminary(0h&&!f;h++){this.saveCoordinates();for(f=0;fm&&(m=Math.sqrt(m),g[0]*=m,g[1]*=m,g[2]*=m);for(m=0;3>m;++m)if(JM.Util.isFinite(g[m])){var p= +g[m]*c;d[m]=p>this.trustRadius?d[m]+this.trustRadius:p<-this.trustRadius?d[m]-this.trustRadius:d[m]+p}}a&&this.minimizer.updateAtomXYZ(!1);g=this.energyFull(!1,!0);f=JM.Util.isNear3(g,b,0.001);g>b?(c*=0.1,this.restoreCoordinates()):gc;c++)this.coordSaved[a][c]=this.minAtoms[a].coord[c]});d(b,"restoreCoordinates",function(){for(var a= +0;ac;c++)this.minAtoms[a].coord[c]=this.coordSaved[a][c]});d(b,"detectExplosion",function(){for(var a=0;ae;e++)if(!JM.Util.isFinite(c.coord[e]))return!0;for(a=0;a(f=(b=e.readLine()).indexOf(".PAR")););if(1>(h=JM.FF.ForceFieldMMFF.types[G("END.BCI.CHG.ANG.NDK.OND.OOP.TBN.FSB.TOR.VDW.".indexOf(b.substring(f-3,f+1))/4)]))break; +this.readParams(e,h,c)}e.close()}catch(g){if(B(g,"JV.JmolAsyncException"))throw new JV.JmolAsyncException(g.getFileName());if(B(g,Exception))System.err.println("Exception "+g.toString()+" in getResource "+a+" line="+b);else throw g;}finally{try{e.close()}catch(d){if(!B(d,Exception))throw d;}}return c},"~B");d(b,"readParams",function(a,c,e){var b=null,f=0,h=127,g=127,d=127,m=0;switch(c){case 34:d=124;break;case 21:d=125;break;case 546:d=123;m=0;break;case 13:m=6;break;case 1:m=0;break;case 37:d=126; +m=0;break;case 17:d=122,m=0}for(;!a.readLine().startsWith("*"););for(;(this.line=a.readLine()).startsWith("*"););do{switch(c){case 17:if(" "!=this.line.charAt(5))continue;break;case 34:if("4"==this.line.charAt(0))continue;case 5:case 3:case 21:case 9:m=this.line.charAt(0).charCodeAt(0)-48}switch(c){case 13:case 9:d=this.ival(18,20);case 5:case 21:case 37:g=this.ival(13,15);case 546:case 3:case 34:h=this.ival(8,10);case 1:case 17:f=this.ival(3,5)}switch(c){case 546:b=s(-1,[this.dval(19,25),this.dval(13, +18)]);break;case 3:b=s(-1,[this.dval(14,20),this.dval(25,31)]);break;case 5:case 21:b=s(-1,[this.dval(19,25),this.dval(28,35)]);break;case 34:b=Float.$valueOf(this.fval(10,20));break;case 13:b=s(-1,[this.dval(24,30)]);break;case 1:b=Float.$valueOf(this.fval(5,15));break;case 37:var p=this.dval(19,25),k=this.dval(28,35),b=s(-1,[p,k]),l=JM.MinObject.getKey(m,f,h,g,d);e.put(l,b);b=s(-1,[k,p]);p=f;f=g;g=p;break;case 9:b=s(-1,[this.dval(22,28),this.dval(30,36),this.dval(38,44)]);break;case 17:b=s(-1,[this.dval(10, +15),this.dval(20,25),this.dval(30,35),this.dval(40,45),this.line.charAt(46)])}l=JM.MinObject.getKey(m,f,h,g,d);e.put(l,b);JU.Logger.debugging&&JU.Logger.debug(JM.MinObject.decodeKey(l)+" "+(F(b,Float)?b:JU.Escape.eAD(b)))}while(!(this.line=a.readLine()).startsWith("$"))},"java.io.BufferedReader,~N,java.util.Map");d(b,"ival",function(a,c){return JU.PT.parseInt(this.line.substring(a,c).trim())},"~N,~N");d(b,"fval",function(a,c){return Float.$valueOf(this.line.substring(a,c).trim()).floatValue()},"~N,~N"); +d(b,"dval",function(a,c){return Double.$valueOf(this.line.substring(a,c).trim()).doubleValue()},"~N,~N");d(b,"getAtomTypes",function(){var a=new JU.Lst;try{var c=this.getBufferedReader("MMFF94-smarts.txt"),e;for(a.addLast(new JM.FF.AtomType(0,0,0,0,1,"H or NOT FOUND",""));null!=(this.line=c.readLine());)if(!(0==this.line.length||this.line.startsWith("#"))){var b=this.ival(3,5),f=this.ival(6,8),d=this.ival(9,11),g=this.fval(12,15)/12,A=this.ival(16,18),m=this.line.substring(19,44).trim(),p=this.line.substring(45).trim(); +a.addLast(e=new JM.FF.AtomType(b,f,d,g,A,m,p));JM.FF.ForceFieldMMFF.setFlags(e)}c.close()}catch(k){if(B(k,"JV.JmolAsyncException"))throw new JV.JmolAsyncException(k.getFileName());if(B(k,Exception))System.err.println("Exception "+k.toString()+" in getResource MMFF94-smarts.txt line="+this.line);else throw k;}JU.Logger.info(a.size()-1+" SMARTS-based atom types read");JM.FF.ForceFieldMMFF.atomTypes=a});b.setFlags=d(b,"setFlags",function(a){switch(a.mmType){case 32:case 35:case 72:a.fcadj=0.5;break; +case 62:case 76:a.fcadj=0.25}switch(a.mmType){case 37:case 38:case 39:case 44:case 58:case 59:case 63:case 64:case 65:case 66:case 69:case 78:case 79:case 81:case 82:a.arom=!0}switch(a.mmType){case 2:case 3:case 4:case 9:case 30:case 37:case 39:case 54:case 57:case 58:case 63:case 64:case 67:case 75:case 78:case 80:case 81:a.sbmb=!0}switch(a.mmType){case 6:case 8:case 10:case 11:case 12:case 13:case 14:case 15:case 26:case 32:case 35:case 39:case 40:case 43:case 44:case 59:case 62:case 70:case 72:case 76:a.pilp= +!0}switch(a.mmType){case 10:case 32:case 35:case 39:case 41:case 44:case 55:case 56:case 58:case 59:case 69:case 72:case 81:case 82:a.mltb=1;break;case 2:case 3:case 7:case 9:case 16:case 17:case 30:case 37:case 38:case 45:case 46:case 47:case 51:case 53:case 54:case 57:case 63:case 64:case 65:case 66:case 67:case 74:case 75:case 78:case 79:case 80:a.mltb=2;break;case 4:case 42:case 60:case 61:a.mltb=3}},"JM.FF.AtomType");d(b,"calculatePartialCharges",function(a,c,e,b,f,d){e=y(e.length,0);for(var g= +f.nextSetBit(0);0<=g;g=f.nextSetBit(g+1))e[g]=JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0,b[g])).formalCharge;for(var A=null,g=c.length;0<=--g;){var A=a[g].atom1,m=a[g].atom2,p=f.get(A.i),k=f.get(m.i);if(p||k){var l=b[A.i],r=JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0,l)),n=0>l?-l:r.mmType,l=b[m.i],q=JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0,l)),l=0>l?-l:q.mmType,s=NaN;try{var t=na[e]?-a[e]:JM.FF.ForceFieldMMFF.atomTypes.get(a[e]).mmType);return c},"~A");b.setAtomTypes=d(b,"setAtomTypes",function(a,c,e,b,f){for(var d=new JU.Lst,g=Array(JM.FF.ForceFieldMMFF.atomTypes.size()),A=r(a.length, +0),m=new JU.BS,p=new JU.BS,k=JU.BSUtil.copy(c),l=c.nextSetBit(0);0<=l;l=c.nextSetBit(l+1)){var n=a[l],q=n.bonds;if(null!=q)for(var s=q.length;0<=--s;)q[s].isCovalentNotPartial0()&&k.set(q[s].getOtherAtom(n).i)}for(l=k.nextSetBit(0);0<=l;l=k.nextSetBit(l+1))switch(s=a[l].getElementNumber(),s){case 1:p.set(l);break;default:m.set(s)}s=0;for(l=1;lA[l]?""+-A[l]:JM.FF.ForceFieldMMFF.atomTypes.get(A[l]).mmType+"\t"+JM.FF.ForceFieldMMFF.atomTypes.get(A[l]).smartsCode+"\t"+JM.FF.ForceFieldMMFF.atomTypes.get(A[l]).descr));return!f&&e.cardinality()!=k.cardinality()?null:A},"~A,JU.BS,J.api.SmilesMatcherInterface,~A,~B");d(b,"setBondTypes",function(a,c,e){for(var b=r(c,0);0<=--c;){var f=a[c].atom1,d=a[c].atom2,g=e.get(f.i),k=e.get(d.i);if(g||k)k=this.rawAtomTypes[f.i],g=JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0,k)),k=this.rawAtomTypes[d.i], +k=JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0,k)),b[c]=this.getBondType(a[c],g,k,f.i,d.i)}return b},"~A,~N,JU.BS");d(b,"fixTypes",function(){for(var a=this.minAtomCount;0<=--a;){var c=this.minAtoms[a],e=c.atom.i,b=this.rawAtomTypes[e];c.ffAtomType=JM.FF.ForceFieldMMFF.atomTypes.get(Math.max(0,b));b=0>b?-b:JM.FF.ForceFieldMMFF.atomTypes.get(b).mmType;c.ffType=b;c.vdwKey=JM.MinObject.getKey(0,b,127,127,122);c.partialCharge=this.rawMMFF94Charges[e]}for(a=this.minBonds.length;0<=--a;)if(c=this.minBonds[a], +c.type=this.rawBondTypes[c.rawIndex],c.key=this.getKey(c,c.type,3),null==c.key)return!1;for(a=this.minAngles.length;0<=--a;)c=this.minAngles[a],c.key=this.getKey(c,c.type,5),c.sbKey=this.getKey(c,c.sbType,21);for(a=this.minTorsions.length;0<=--a;)c=this.minTorsions[a],c.key=this.getKey(c,c.type,9);return!0});d(b,"setAngleType",function(a){a.type=this.minBonds[a.data[3]].type+this.minBonds[a.data[4]].type;this.checkRings(this.vRings[0],a.data,3)?a.type+=0==a.type?3:4:this.checkRings(this.vRings[1], +a.data,3)&&(a.type+=0==a.type?4:6);a.sbType=JM.FF.ForceFieldMMFF.sbMap[a.type];switch(a.type){case 1:case 5:case 7:a.sbType+=this.minBonds[a.data[4]].type}return a.type},"JM.MinAngle");d(b,"setTorsionType",function(a){if(this.checkRings(this.vRings[1],a.data,4))return a.type=4;a.type=1==this.minBonds[a.data[5]].type?1:0==this.minBonds[a.data[4]].type&&0==this.minBonds[a.data[6]].type?0:2;0==a.type&&this.checkRings(this.vRings[2],a.data,4)&&(a.type=5);return a.type},"JM.MinTorsion");d(b,"typeOf",function(a){return this.minAtoms[a].ffType}, +"~N");d(b,"checkRings",function(a,c,e){if(null!=a)for(var b=a.size();0<=--b;){var f=a.get(b);if(f.get(this.minAtoms[c[0]].atom.i)&&f.get(this.minAtoms[c[1]].atom.i)&&(3>e||f.get(this.minAtoms[c[2]].atom.i))&&(4>e||f.get(this.minAtoms[c[3]].atom.i)))return!0}return!1},"JU.Lst,~A,~N");d(b,"getKey",function(a,c,e){var b=F(a,"JM.MinObject")?a:null;a=null==b?a:b.data;var f=4;switch(e){case 3:this.fixOrder(a,0,1);f=2;break;case 5:-1==this.fixOrder(a,0,2)&&JM.FF.ForceFieldMMFF.swap(a,3,4);c=this.setAngleType(b); +f=3;break;case 21:f=3;break;case 9:switch(this.fixOrder(a,1,2)){case -1:JM.FF.ForceFieldMMFF.swap(a,0,3);JM.FF.ForceFieldMMFF.swap(a,4,6);break;case 0:-1==this.fixOrder(a,0,3)&&JM.FF.ForceFieldMMFF.swap(a,4,6)}c=this.setTorsionType(b)}for(var d=null,g=0;4>g;g++)this.typeData[g]=gg&&!m;g++){d=0;for(m=1;de||0f||0=c&&10>=g?0.3:0.15;break a}if(z){u=1==C?0.5:10>=c&&10>=g?0.3:0.15;break a}if((1==C||1==E)&&(6==c||6==g)){u=0.4;break a}u=0.15;break a}switch(c<<8+g){case 2056:v=x=2;break a;case 2064:v=2;x=8;break a;case 4104:v=8;x=2;break a; +case 4112:v=x=8;break a}w=e*f;break a}0a?0:11>a?1:19>a?2: +37>a?3:4},"~N");d(b,"getOutOfPlaneParameter",function(a){a=this.ffParams.get(this.getKey(a,6,13));return null==a?0:a[0]},"~A");b.sortOop=d(b,"sortOop",function(a){JM.FF.ForceFieldMMFF.fixTypeOrder(a,0,2);JM.FF.ForceFieldMMFF.fixTypeOrder(a,0,3);JM.FF.ForceFieldMMFF.fixTypeOrder(a,2,3)},"~A");b.fixTypeOrder=d(b,"fixTypeOrder",function(a,c,b){return a[c]>a[b]?(JM.FF.ForceFieldMMFF.swap(a,c,b),!0):!1},"~A,~N,~N");d(b,"fixOrder",function(a,c,b){var d=this.typeOf(a[b])-this.typeOf(a[c]);0>d&&JM.FF.ForceFieldMMFF.swap(a, +c,b);return 0>d?-1:0c)return null;if(!b.get(g))return b.set(0),null;switch(a.charAt(f-3).charCodeAt(0)){case 68:d=JM.FF.ForceFieldUFF.tokenTypes[2];d[6].intValue=h;break;case 94:d=JM.FF.ForceFieldUFF.tokenTypes[4+(h-1)];break;case 43:d=JM.FF.ForceFieldUFF.tokenTypes[1];d[5].intValue=h;break;case 45:d=JM.FF.ForceFieldUFF.tokenTypes[1];d[5].intValue=-h;break;case 65:d=JM.FF.ForceFieldUFF.tokenTypes[6]}d[2].intValue= +g;c=this.minimizer.vwr.evaluateExpression(d);if(!F(c,"JU.BS"))return null;k&&0<=c.nextSetBit(0)&&(null==this.bsAromatic&&(this.bsAromatic=b.get(6)?this.minimizer.vwr.evaluateExpression(JM.FF.ForceFieldUFF.tokenTypes[3]):new JU.BS),c.and(this.bsAromatic));JU.Logger.debugging&&0<=c.nextSetBit(0)&&JU.Logger.debug(a+" minimize atoms="+c);return c},"~S,~N,JU.BS");d(b,"getParameters",function(){var a=new java.util.Hashtable,c=this.is2D?"UFF_2d.txt":"UFF.txt",b=null;try{for(var b=this.getBufferedReader(c), +d;null!=(d=b.readLine());){var f=JU.PT.getTokens(d);if(!(13>f.length)&&(JU.Logger.debugging&&JU.Logger.debug(d),d.substring(0,5).equals("param"))){var h=new JM.FF.FFParam;a.put(f[1],h);h.dVal=s(11,0);h.sVal=Array(1);h.sVal[0]=f[1];h.dVal[0]=JU.PT.parseFloat(f[2]);h.dVal[1]=0.017453292519943295*JU.PT.parseFloat(f[3]);h.dVal[2]=JU.PT.parseFloat(f[4]);h.dVal[3]=JU.PT.parseFloat(f[5]);h.dVal[4]=JU.PT.parseFloat(f[6]);h.dVal[5]=JU.PT.parseFloat(f[7]);h.dVal[6]=JU.PT.parseFloat(f[8]);h.dVal[7]=JU.PT.parseFloat(f[9]); +h.dVal[8]=JU.PT.parseFloat(f[10]);h.dVal[9]=JU.PT.parseFloat(f[11]);h.dVal[10]=JU.PT.parseFloat(f[12]);h.iVal=r(1,0);var g=2=a;a++)b=c[a],null!=b&&(this.constraintsByType[a]=b.toArray(Array(b.size())))}},"JU.Lst");d(b,"addForce",function(a,c,b){this.minAtoms[c].force[0]+=a.x*b;this.minAtoms[c].force[1]+=a.y*b;this.minAtoms[c].force[2]+=a.z*b},"JU.V3d,~N,~N"); +d(b,"setSilent",function(a){this.silent=a},"~B");d(b,"getLogData",function(){return this.logData.toString()});d(b,"appendLogData",function(a){this.logData.append(a).append("\n")},"~S");d(b,"setLoggingEnabled",function(a){if(this.loggingEnabled=a)this.logData=new JU.SB},"~B");d(b,"setPreliminary",function(a){this.isPreliminary=a},"~B");d(b,"pairSearch",function(a,c,b,d){for(var f=0;fb&&1.5707963267948966<=g?b+=6.283185307179586:0=g&&(g+=6.283185307179586);break;case 1:g*=0.017453292519943295;b=this.gradients?JM.Util.restorativeForceAndAngleRadians(this.da,this.db,this.dc):JM.Util.getAngleRadiansABC(this.minAtoms[this.ia].coord, +this.minAtoms[this.ib].coord,this.minAtoms[this.ic].coord);break;case 0:b=this.gradients?JM.Util.restorativeForceAndDistance(this.da,this.db,this.dc):Math.sqrt(JM.Util.distance2(this.minAtoms[this.ia].coord,this.minAtoms[this.ib].coord))}f+=this.constrainQuadratic(b,g,d,a)}return f},"~N");d(b,"constrainQuadratic",function(a,c,b,d){if(!JM.Util.isFinite(a))return 0;a-=c;if(this.gradients)switch(c=2*b*a,d){case 2:this.addForce(this.dd,this.id,c);case 1:this.addForce(this.dc,this.ic,c);case 0:this.addForce(this.db, +this.ib,c),this.addForce(this.da,this.ia,c)}return b*a*a},"~N,~N,~N,~N");d(b,"getConstraintList",function(){if(null!=this.constraintsByType){this.appendLogData("C O N S T R A I N T S\n---------------------");for(var a=0;2>=a;a++){var c=this.constraintsByType[a];if(null!=c)for(var b=0,d=c.length;bthis.theta))b=1;var g=Math.cos(this.theta),k=Math.sin(this.theta);switch(b){case 0:case 1:this.energy=e*(1+g)*(1+g)/4;break;case 2:this.energy=e*(1+4*g*(1+g))/9;break;case 4:case 6:this.energy=e*g*g;break;default:this.energy=e*(d+f*g+h*g*g)}if(this.calcs.gradients){switch(b){case 0:case 1:this.dE=-0.5*e*k*(1+g);break;case 2:this.dE=-4*k*e*(1-2*g)/9;break; +case 4:case 6:this.dE=-e*k*g;break;default:this.dE=-e*(f*k-2*h*g*k)}this.calcs.addForces(this,3)}this.calcs.logging&&a[2]===Boolean.TRUE&&this.calcs.appendLogData(this.calcs.getDebugLine(1,this));return this.energy},"~A")});q("JM.FF");t(["JM.FF.Calculation"],"JM.FF.UFFDistanceCalc",["JM.FF.CalculationsUFF"],function(){var b=u(function(){this.kb=this.r0=0;w(this,arguments)},JM.FF,"UFFDistanceCalc",JM.FF.Calculation);n(b,"setData",function(a,b,e,d){this.calcs.parA=this.calcs.getParameter(this.calcs.minAtoms[b].sType); +this.calcs.parB=this.calcs.getParameter(this.calcs.minAtoms[e].sType);this.r0=JM.FF.CalculationsUFF.calculateR0(this.calcs.parA.dVal[0],this.calcs.parB.dVal[0],this.calcs.parA.dVal[8],this.calcs.parB.dVal[8],d);this.kb=1390.2842991599998*this.calcs.parA.dVal[5]*this.calcs.parB.dVal[5]/(this.r0*this.r0*this.r0);a.addLast(k(-1,[this.iData=r(-1,[b,e]),s(-1,[this.kb,this.r0,d]),this.isLoggable(2)]))},"JU.Lst,~N,~N,~N");n(b,"compute",function(a){this.getPointers(a);this.kb=this.dData[0];this.r0=this.dData[1]; +this.calcs.setPairVariables(this);this.delta=this.rab-this.r0;this.energy=this.kb*this.delta*this.delta;this.calcs.gradients&&(this.dE=2*this.kb*this.delta,this.calcs.addForces(this,2));this.calcs.logging&&a[2]===Boolean.TRUE&&this.calcs.appendLogData(this.calcs.getDebugLine(0,this));return this.energy},"~A")});q("JM.FF");t(["JM.FF.Calculation"],"JM.FF.UFFOOPCalc",null,function(){var b=z(JM.FF,"UFFOOPCalc",JM.FF.Calculation);n(b,"setData",function(a,b,d){this.b=this.calcs.minAtoms[b];var j=this.b.getBondedAtomIndexes(); +this.a=this.calcs.minAtoms[this.ia=j[0]];this.c=this.calcs.minAtoms[this.ic=j[1]];this.d=this.calcs.minAtoms[this.id=j[2]];var f=1,h=-1,g=0,j=25.1208;switch(d){case 6:if("C_2"===this.b.sType&&1= +b||!a.get(this.indexes[d])){this.indexes[0]=-this.nAtoms;break}this.minList[d-1]=c[this.indexes[d]]}},"~N,JU.BS,~A")})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor, +Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coreprop.js b/config/plugins/visualizations/jmol/static/j2s/core/coreprop.js new file mode 100755 index 000000000000..31b470381495 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coreprop.js @@ -0,0 +1,1540 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolPropertyManager"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["J.api.JmolPropertyManager", "java.util.Hashtable"], "JV.PropertyManager", ["java.util.Arrays", "JU.AU", "$.BArray", "$.BS", "$.Base64", "$.Lst", "$.M3", "$.P3", "$.PT", "$.SB", "$.V3", "J.api.Interface", "JM.LabelToken", "JS.SV", "$.T", "JU.BSUtil", "$.C", "$.Edge", "$.Escape", "$.JmolMolecule", "$.Logger", "JV.ActionManager", "$.FileManager", "$.JC", "$.Viewer", "JV.binding.Binding"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.map = null; +Clazz_instantialize(this, arguments);}, JV, "PropertyManager", null, J.api.JmolPropertyManager); +Clazz_prepareFields (c$, function(){ +this.map = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +for (var i = 0, p = 0; i < JV.PropertyManager.propertyTypes.length; i += 3, p++) if (JV.PropertyManager.propertyTypes[i].length > 0) this.map.put(JV.PropertyManager.propertyTypes[i].toLowerCase(), Integer.$valueOf(p)); + +}, "JV.Viewer"); +Clazz_overrideMethod(c$, "getPropertyNumber", +function(infoType){ +var n = this.map.get(infoType == null ? "" : infoType.toLowerCase()); +return (n == null ? -1 : n.intValue()); +}, "~S"); +Clazz_overrideMethod(c$, "getDefaultPropertyParam", +function(propID){ +return (propID < 0 ? "" : JV.PropertyManager.propertyTypes[propID * 3 + 2]); +}, "~N"); +Clazz_overrideMethod(c$, "checkPropertyParameter", +function(name){ +var propID = this.getPropertyNumber(name); +var type = JV.PropertyManager.getParamType(propID); +return (type.length > 0 && type !== ""); +}, "~S"); +Clazz_overrideMethod(c$, "getProperty", +function(returnType, infoType, paramInfo){ +if (JV.PropertyManager.propertyTypes.length != 144) JU.Logger.warn("propertyTypes is not the right length: " + JV.PropertyManager.propertyTypes.length + " != " + 144); +var info; +if (infoType.indexOf(".") >= 0 || infoType.indexOf("[") >= 0) { +var args = this.getArguments(infoType); +var h = this.getPropertyAsObject(args[0].asString(), paramInfo, null); +info = this.extractProperty(h, args, 1, null, false); +} else { +info = this.getPropertyAsObject(infoType, paramInfo, returnType); +}if (returnType == null) return info; +var requestedReadable = returnType.equalsIgnoreCase("readable"); +if (requestedReadable) returnType = (JV.PropertyManager.isReadableAsString(infoType) ? "String" : "JSON"); +if (returnType.equalsIgnoreCase("String")) return (info == null ? "" : info.toString()); +if (requestedReadable) return JU.Escape.toReadable(infoType, info); +if (returnType.equalsIgnoreCase("JSON")) return JS.SV.safeJSON(infoType, info); +return info; +}, "~S,~S,~O"); +Clazz_defineMethod(c$, "getArguments", +function(propertyName){ +var lc = propertyName.toLowerCase(); +var pt = -1; +if (propertyName.indexOf('"') >= 0 || propertyName.indexOf('\'') >= 0) propertyName = this.fixSelectQuotes(propertyName); +while ((pt = lc.indexOf("[select ", ++pt)) >= 0) { +var pt2 = lc.indexOf(" where ", pt); +var pt2b = lc.indexOf(" wherein ", pt); +if (pt2b > 0 && pt2b < pt2) pt2 = pt2b; +var pt3 = lc.indexOf("][select ", pt); +if (pt3 < 0) pt3 = lc.lastIndexOf("]"); +pt2b = lc.indexOf("[", pt); +if (pt2b >= 0 && pt2b < pt3) pt2 = pt2b; +if (pt2 < 0 || pt2 > pt3) continue; +propertyName = propertyName.substring(0, pt + 1) + propertyName.substring(pt + 1, pt3).$replace('.', '\1').$replace('[', '\2').$replace(']', '\3') + propertyName.substring(pt3); +} +propertyName = JU.PT.rep(JU.PT.rep(propertyName.$replace(']', '\0').$replace('[', '\0'), "..", "\4").$replace('.', '\0').$replace('\1', '.').$replace('\2', '[').$replace('\3', ']'), "\4", ".."); +propertyName = JU.PT.rep(propertyName, "\0\0", "\0"); +var names = JU.PT.split(JU.PT.trim(propertyName, "\0"), "\0"); +var args = new Array(names.length); +for (var i = 0, n; i < names.length; i++) args[i] = (names[i].startsWith("'") || names[i].startsWith("\"") ? JS.SV.newS(JU.PT.trim(names[i], "'\"")) : (n = JU.PT.parseInt(names[i])) == -2147483648 ? JS.SV.newS(names[i]) : JS.SV.newI(n)); + +return args; +}, "~S"); +Clazz_defineMethod(c$, "fixSelectQuotes", +function(propertyName){ +var a = propertyName.toCharArray(); +var inQuotes = false; +var inQuotes1 = false; +var inQuotes2 = false; +for (var i = a.length; --i >= 0; ) { +switch ((a[i]).charCodeAt(0)) { +case 39: +if (!inQuotes2) inQuotes = inQuotes1 = !inQuotes; +break; +case 34: +if (!inQuotes1) inQuotes = inQuotes2 = !inQuotes; +break; +case 46: +if (inQuotes) a[i] = '\1'; +break; +case 91: +if (inQuotes) a[i] = '\2'; +break; +case 93: +if (inQuotes) a[i] = '\3'; +break; +} +} +propertyName = String.instantialize(a); +return propertyName; +}, "~S"); +Clazz_overrideMethod(c$, "extractProperty", +function(prop, args, ptr, v2, isCompiled){ +if (ptr < 0) { +args = this.getArguments(args); +ptr = 0; +}if (ptr >= (args).length) return prop; +if (!isCompiled) { +args = this.compileSelect(args); +var svargs = args; +for (var i = ptr, n = svargs.length; i < n; i++) { +if (svargs[i].tok == 1275082241) { +var a = new Array(i + 1); +for (var p = 0; p <= i; p++) a[p] = svargs[p]; + +prop = this.extractProperty(prop, a, ptr, null, true); +for (; ++i < n; ) { +a[a.length - 1] = svargs[i]; +prop = this.extractProperty(prop, a, a.length - 1, null, true); +} +return prop; +}} +args = svargs; +}var pt; +var arg = (args)[ptr++]; +var property = JS.SV.oValue(prop); +switch (arg.tok) { +case 2: +pt = arg.intValue - 1; +if (Clazz_instanceOf(property,"JU.Lst")) { +var v = property; +if (pt < 0) pt += v.size(); +return (pt >= 0 && pt < v.size() ? this.extractProperty(v.get(pt), args, ptr, null, true) : ""); +}if (Clazz_instanceOf(property,"JU.M3")) { +var m = property; +var f = Clazz_newArray(-1, [ Clazz_newFloatArray(-1, [m.m00, m.m01, m.m02]), Clazz_newFloatArray(-1, [m.m10, m.m11, m.m12]), Clazz_newFloatArray(-1, [m.m20, m.m21, m.m22])]); +if (pt < 0) pt += 3; +return (pt >= 0 && pt < 3 ? this.extractProperty(f, args, --ptr, null, true) : ""); +}if (Clazz_instanceOf(property,"JU.M4")) { +var m = property; +var f = Clazz_newArray(-1, [ Clazz_newFloatArray(-1, [m.m00, m.m01, m.m02, m.m03]), Clazz_newFloatArray(-1, [m.m10, m.m11, m.m12, m.m13]), Clazz_newFloatArray(-1, [m.m20, m.m21, m.m22, m.m23]), Clazz_newFloatArray(-1, [m.m30, m.m31, m.m32, m.m33])]); +if (pt < 0) pt += 4; +return (pt >= 0 && pt < 4 ? this.extractProperty(f, args, --ptr, null, true) : ""); +}if (JU.AU.isAI(property)) { +var ilist = property; +if (pt < 0) pt += ilist.length; +return (pt >= 0 && pt < ilist.length ? Integer.$valueOf(ilist[pt]) : ""); +}if (JU.AU.isAD(property)) { +var dlist = property; +if (pt < 0) pt += dlist.length; +return (pt >= 0 && pt < dlist.length ? Double.$valueOf(dlist[pt]) : ""); +}if (JU.AU.isAF(property)) { +var flist = property; +if (pt < 0) pt += flist.length; +return (pt >= 0 && pt < flist.length ? Float.$valueOf(flist[pt]) : ""); +}if (JU.AU.isAII(property)) { +var iilist = property; +if (pt < 0) pt += iilist.length; +return (pt >= 0 && pt < iilist.length ? this.extractProperty(iilist[pt], args, ptr, null, true) : ""); +}if (JU.AU.isAFF(property)) { +var fflist = property; +if (pt < 0) pt += fflist.length; +return (pt >= 0 && pt < fflist.length ? this.extractProperty(fflist[pt], args, ptr, null, true) : ""); +}if (JU.AU.isAS(property)) { +var slist = property; +if (pt < 0) pt += slist.length; +return (pt >= 0 && pt < slist.length ? slist[pt] : ""); +}if (Clazz_instanceOf(property,Array)) { +var olist = property; +if (pt < 0) pt += olist.length; +return (pt >= 0 && pt < olist.length ? olist[pt] : ""); +}break; +case 1275082241: +case 4: +if (Clazz_instanceOf(property,"java.util.Map")) { +var h = property; +var key; +var asMap = false; +var asArray = false; +var isCaseSensitive = false; +var keys = (arg.tok == 1275082241 ? (arg.value)[0] : null); +var whereArgs = null; +if (arg.tok == 1275082241) { +isCaseSensitive = true; +whereArgs = (arg.value)[1]; +key = arg.myName; +asArray = (key.indexOf(";") >= 0); +if (key.contains("**")) { +var isAll = keys.size() == 0; +var newKey = ""; +for (var e, $e = h.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +for (var i = (isAll ? 1 : keys.size()); --i >= 0; ) { +if (!isAll && !JU.PT.isLike(k, keys.get(i))) continue; +var o = e.getValue(); +var isList = false; +switch (Clazz_instanceOf(o,"JS.SV") ? (o).tok : 0) { +case 7: +isList = true; +o = (o).getList(); +break; +case 6: +case 14: +o = (o).getMap(); +break; +default: +if (!(Clazz_instanceOf(o,"java.util.Map")) && !(isList = (Clazz_instanceOf(o,"JU.Lst")))) { +if (isList || whereArgs == null) continue; +var map = new java.util.Hashtable(); +map.put("key", JS.SV.newS(k)); +map.put("value", e.getValue()); +if (this.vwr.checkSelect(map, whereArgs)) { +newKey += "," + k; +}continue; +}} +if (isList) { +if (v2 == null) v2 = new JU.Lst(); +var olst = o; +for (var n = olst.size(), j = 0; j < n; j++) { +o = olst.get(j); +if (!(Clazz_instanceOf(o,"JS.SV")) || (o = (o).getMap()) == null) continue; +if (whereArgs == null || this.vwr.checkSelect(o, whereArgs)) v2.addLast(o); +} +return v2; +}if (whereArgs == null || this.vwr.checkSelect(o, whereArgs)) newKey += "," + k; +} +} +if (newKey.length == 0) return new JU.Lst(); +key = newKey.substring(1); +asMap = !asArray; +keys = null; +} else if (whereArgs != null && !this.vwr.checkSelect(property, whereArgs)) return ""; +} else { +key = arg.asString(); +if (key.equalsIgnoreCase("keys")) { +var lst = new JU.Lst(); +for (var k, $k = h.keySet().iterator (); $k.hasNext()&& ((k = $k.next ()) || true);) lst.addLast(k); + +return this.extractProperty(lst, args, ptr, null, true); +}}var havePunctuation = (asArray || key.indexOf(",") >= 0 || key.indexOf(";") >= 0); +if (isCaseSensitive && !havePunctuation) { +havePunctuation = true; +key += ","; +}var isWild = (asArray || key.startsWith("*") || key.endsWith("*") || havePunctuation); +var wasV2 = (v2 != null); +if (isWild) { +if (!wasV2) v2 = new JU.Lst(); +if (!asArray && (keys == null ? key.length == 1 : keys.size() == 0)) { +if (ptr == (args).length) { +if (!wasV2) return property; +v2.addLast(property); +return v2; +}return this.extractProperty(property, args, ptr, v2, true); +}}if (key.contains("**")) key = JU.PT.rep(key, "**", "*"); +if (isWild && !havePunctuation) key += ","; +if (asMap || asArray || key.contains(",")) { +var mapNew = new java.util.Hashtable(); +if (keys != null && keys.size() == 0) { +keys = null; +key = "*"; +}asArray = new Boolean (asArray | (arg.index == 1)).valueOf(); +if (keys == null) { +var tokens = JU.PT.split(key, ","); +for (var i = tokens.length; --i >= 0; ) JV.PropertyManager.getMapSubset(h, tokens[i], mapNew, asArray ? v2 : null); + +} else { +for (var i = 0; i < keys.size(); i++) { +key = keys.get(i); +var index = null; +var pta = key.indexOf('['); +if (pta > 0 && key.endsWith("]")) { +index = key.substring(pta + 1, key.length - 1); +key = key.substring(0, pta); +index = JU.PT.trim(index, "'\""); +} else if ((pta = key.indexOf(".")) >= 0) { +index = key.substring(pta + 1); +key = key.substring(0, pta); +}var v2len0 = v2.size(); +JV.PropertyManager.getMapSubset(h, key, mapNew, asArray ? v2 : null); +if (index != null) { +for (var j = v2.size(); --j >= v2len0; ) { +var v = v2.get(j); +if (Clazz_instanceOf(v,"JS.SV")) { +var sv = v; +var m = sv.getMap(); +if (m != null) { +v = m.get(index); +} else { +var p = JU.PT.parseInt(index); +var l = sv.getList(); +if (p >= 0 && p < l.size()) v = l.get(p); + else v = null; +}if (v == null) v2.removeItemAt(j); + else v2.set(j, v); +}} +}} +}if (asMap && !wasV2) return mapNew; +if (ptr == (args).length) { +if (!asArray) { +if (!wasV2) return mapNew; +v2.addLast(mapNew); +}return v2; +}return this.extractProperty(mapNew, args, ptr, (wasV2 ? v2 : null), true); +}key = this.checkMap(h, key, isWild, v2, args, ptr, isCaseSensitive); +return (key != null && !isWild ? this.extractProperty(h.get(key), args, ptr, null, true) : !isWild ? "" : wasV2 ? v2 : v2); +}if (Clazz_instanceOf(property,"JU.Lst")) { +var v = property; +if (v2 == null) v2 = new JU.Lst(); +ptr--; +var isList = false; +for (pt = 0; pt < v.size(); pt++) { +var o = v.get(pt); +if (Clazz_instanceOf(o,"java.util.Map") || (isList = (Clazz_instanceOf(o,"JU.Lst"))) || (Clazz_instanceOf(o,"JS.SV")) && ((o).getMap() != null || (isList = ((o).getList() != null)))) { +if (isList || (arg.index == 1)) { +var ret = this.extractProperty(o, args, ptr, null, true); +if (ret !== "") v2.addLast(ret); +} else { +this.extractProperty(o, args, ptr, v2, true); +}}} +return v2; +}break; +} +return prop; +}, "~O,~O,~N,JU.Lst,~B"); +c$.getMapSubset = Clazz_defineMethod(c$, "getMapSubset", +function(h, key, h2, v2){ +if (key.startsWith("\"") || key.startsWith("'")) key = JU.PT.trim(key, "\"'"); +var val = h.get(key); +if (val != null) { +if (v2 == null) h2.put(key, val); + else v2.addLast(val); +return; +}for (var e, $e = h.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var k = e.getKey(); +if (JU.PT.isLike(k, key)) { +if (v2 == null) h2.put(k, e.getValue()); + else v2.addLast(e.getValue()); +}} +}, "java.util.Map,~S,java.util.Map,JU.Lst"); +Clazz_defineMethod(c$, "compileSelect", +function(args){ +var argsNew = null; +for (var i = args.length; --i >= 0; ) { +if (args[i].tok == 4) { +var key = args[i].value; +var ucKey = key.toUpperCase(); +if (ucKey.startsWith("WHERE")) ucKey = (key = "SELECT * " + key).toUpperCase(); +if (ucKey.startsWith("SELECT ")) { +if (argsNew == null) argsNew = JU.AU.arrayCopyObject(args, args.length); +ucKey = (key = key.substring(6).trim()).toUpperCase(); +if (ucKey.startsWith("WHERE ") || ucKey.startsWith("WHEREIN ")) ucKey = (key = "* " + key).toUpperCase(); +var pt = ucKey.indexOf(" WHEREIN "); +var ext = (pt < 0 ? "" : key.indexOf(";") >= 0 ? ";**" : ",**"); +if (pt < 0) pt = ucKey.indexOf(" WHERE "); +var select = key.substring(0, pt < 0 ? key.length : pt).trim(); +var index = 0; +if (select.startsWith("(") && select.endsWith(")")) { +select = select.substring(1, select.length - 1) + ";"; +} else if (select.startsWith("[") && select.endsWith("]")) { +select = select.substring(1, select.length - 1); +index = 1; +}if (pt < 0) { +argsNew[i] = JS.SV.newV(1275082241, Clazz_newArray(-1, [this.getKeys(select), null])); +argsNew[i].myName = select; +argsNew[i].index = index; +} else { +select += ext; +var exp = key.substring(pt + 6 + ext.length).trim(); +var list = this.vwr.compileExpr(exp); +var o = Clazz_newArray(-1, [this.getKeys(select), list]); +argsNew[i] = JS.SV.newV(1275082241, o); +argsNew[i].index = index; +argsNew[i].myName = select; +}}}} +return (argsNew == null ? args : argsNew); +}, "~A"); +Clazz_defineMethod(c$, "getKeys", +function(select){ +var keys = new JU.Lst(); +select = JU.PT.rep(JU.PT.rep(select, "**", "*"), ";", ",") + ","; +var pt0 = 0; +var pt1 = -1; +while ((pt1 = select.indexOf(",", pt1 + 1)) >= 0) { +if (pt1 > pt0) { +var key = select.substring(pt0, pt1); +if (key.equals("*")) { +if (keys.size() == 0) return keys; +continue; +}keys.addLast(key); +pt0 = pt1 + 1; +}} +return keys; +}, "~S"); +Clazz_defineMethod(c$, "checkMap", +function(h, key, isWild, v2, args, ptr, isCaseSensitive){ +var isOK = (v2 == null && h.containsKey(key)); +if (!isOK) { +var hasSemi = key.contains(";"); +var keys = (hasSemi ? JU.PT.split(key, ";") : null); +var lckey = (isWild && !isCaseSensitive ? key.toLowerCase() : null); +for (var k, $k = h.keySet().iterator (); $k.hasNext()&& ((k = $k.next ()) || true);) { +if (hasSemi) { +for (var i = keys.length; --i >= 0; key = null) { +key = keys[i]; +if (key.length == 0) continue; +if (isCaseSensitive) { +if (!JU.PT.isLike(k, key)) continue; +break; +}lckey = (key.indexOf("*") >= 0 ? key.toLowerCase() : null); +if (this.checkKey(k, key, lckey)) break; +} +if (key == null) continue; +} else if (isCaseSensitive ? !JU.PT.isLike(k, key) : !this.checkKey(k, key, lckey)) continue; +if (v2 == null) return k; +v2.addLast(this.extractProperty(h.get(k), args, ptr, null, true)); +if (!isWild && !hasSemi) return null; +} +}return (isOK ? key : null); +}, "java.util.Map,~S,~B,JU.Lst,~O,~N,~B"); +Clazz_defineMethod(c$, "checkKey", +function(k, key, lckey){ +return k.equalsIgnoreCase(key) || lckey != null && JU.PT.isLike(k.toLowerCase(), lckey); +}, "~S,~S,~S"); +c$.getPropertyName = Clazz_defineMethod(c$, "getPropertyName", +function(propID){ +return (propID < 0 ? "" : JV.PropertyManager.propertyTypes[propID * 3]); +}, "~N"); +c$.getParamType = Clazz_defineMethod(c$, "getParamType", +function(propID){ +return (propID < 0 ? "" : JV.PropertyManager.propertyTypes[propID * 3 + 1]); +}, "~N"); +c$.isReadableAsString = Clazz_defineMethod(c$, "isReadableAsString", +function(infoType){ +for (var i = JV.PropertyManager.readableTypes.length; --i >= 0; ) if (infoType.equalsIgnoreCase(JV.PropertyManager.readableTypes[i])) return true; + +return false; +}, "~S"); +Clazz_defineMethod(c$, "getPropertyAsObject", +function(infoType, paramInfo, returnType){ +if (infoType.equals("tokenList")) { +return JS.T.getTokensLike(paramInfo); +}var myParam = null; +var pt = infoType.indexOf("#"); +if (pt > 0) { +myParam = Clazz_newArray(-1, [infoType.substring(pt + 1), paramInfo]); +infoType = infoType.substring(0, pt); +}var id = this.getPropertyNumber(infoType); +var iHaveParameter = (myParam != null || paramInfo != null && paramInfo !== ""); +if (myParam == null) myParam = (iHaveParameter ? paramInfo : this.getDefaultPropertyParam(id)); +switch (id) { +case 47: +return this.getUnitCellInfo(); +case 46: +return this.vwr.getModelkitPropertySafely(myParam.toString()); +case 0: +return this.getAppletInfo(); +case 5: +return this.getAnimationInfo(); +case 14: +return this.getAllAtomInfo(this.vwr.getAtomBitSet(myParam)); +case 24: +return this.vwr.getModelSetAuxiliaryInfoForAtoms(myParam); +case 15: +return this.getAllBondInfo(myParam); +case 25: +return this.getBoundBoxInfo(); +case 10: +return this.vwr.tm.fixedRotationCenter; +case 16: +return this.getAllChainInfo(this.vwr.getAtomBitSet(myParam)); +case 37: +return this.vwr.getProperty("DATA_API", "consoleText", null); +case 26: +return this.vwr.getDataObj(myParam.toString(), null, -1); +case 33: +return this.vwr.getErrorMessageUn(); +case 28: +return this.vwr.evaluateExpression(myParam.toString()); +case 20: +return this.vwr.getModelExtract(myParam, true, false, "MOL"); +case 32: +return JV.PropertyManager.getFileInfo(this.vwr.getFileData(), myParam.toString()); +case 45: +return this.vwr.readCifData(myParam.toString(), null); +case 1: +return this.vwr.fm.getFullPathName(false); +case 2: +return this.vwr.getFileHeader(); +case 4: +case 3: +return (iHaveParameter ? this.vwr.getFileAsString3(myParam.toString(), true, null) : this.vwr.getCurrentFileAsString("prop")); +case 27: +var params = myParam.toString().toLowerCase(); +return this.getImage(params, params.indexOf("g64") < 0 && params.indexOf("base64") < 0 && (returnType == null || returnType.equalsIgnoreCase("java"))); +case 35: +return this.vwr.getShapeProperty(24, "info"); +case 36: +return this.vwr.getShapeProperty(24, "data"); +case 40: +return this.vwr.getNMRCalculation().getInfo(myParam.toString()); +case 41: +return this.getVariables(myParam.toString()); +case 21: +return this.vwr.getStatusChanged(myParam.toString()); +case 22: +return this.vwr; +case 38: +return this.vwr.getJspecViewProperties(myParam); +case 7: +return this.getLigandInfo(this.vwr.getAtomBitSet(myParam)); +case 9: +return this.getMeasurementInfo(); +case 29: +return this.vwr.getMenu(myParam.toString()); +case 23: +return this.vwr.sm.messageQueue; +case 30: +return this.vwr.getMinimizationInfo(); +case 6: +return this.getModelInfo(this.vwr.getAtomBitSet(myParam)); +case 18: +return this.getMoleculeInfo(this.vwr.getAtomBitSet(myParam)); +case 34: +return this.getMouseInfo(); +case 11: +return this.vwr.tm.getOrientationInfo(); +case 31: +return this.vwr.ms.getPointGroupInfo(this.vwr.getAtomBitSet(myParam)); +case 17: +return this.getAllPolymerInfo(this.vwr.getAtomBitSet(myParam)); +case 39: +return this.vwr.getScriptQueueInfo(); +case 8: +return this.getShapeInfo(); +case 19: +return this.vwr.getStateInfo3(myParam.toString(), 0, 0); +case 12: +return JU.M3.newM3(this.vwr.tm.matrixRotate); +case 42: +return this.getAnnotationInfo(myParam, 1073741925); +case 43: +return this.getAnnotationInfo(myParam, 1073742189); +case 44: +myParam = JS.SV.oValue(myParam); +var info = (Clazz_instanceOf(myParam,"java.util.Map") ? myParam : null); +return (info == null ? null : this.vwr.sm.processService(info)); +} +var data = new Array(48); +for (var i = 0; i < 48; i++) { +var paramType = JV.PropertyManager.getParamType(i); +var paramDefault = this.getDefaultPropertyParam(i); +var name = JV.PropertyManager.getPropertyName(i); +data[i] = (name.length == 0 || name.charAt(0) == 'X' ? "" : name + (paramType !== "" ? " " + JV.PropertyManager.getParamType(i) + (paramDefault !== "" ? " #default: " + this.getDefaultPropertyParam(i) : "") : "")); +} +java.util.Arrays.sort(data); +var info = new JU.SB(); +info.append("getProperty ERROR\n").append(infoType).append("?\nOptions include:\n"); +for (var i = 0; i < 48; i++) if (data[i].length > 0) info.append("\n getProperty ").append(data[i]); + +return info.toString(); +}, "~S,~O,~S"); +Clazz_defineMethod(c$, "getUnitCellInfo", +function(){ +var uc = this.vwr.getCurrentUnitCell(); +return (uc == null ? "" : uc.getUnitCellInfoMap()); +}); +Clazz_defineMethod(c$, "getImage", +function(params, asBytes){ +var height = -1; +var width = -1; +var pt; +if ((pt = params.indexOf("height=")) >= 0) height = JU.PT.parseInt(params.substring(pt + 7)); +if ((pt = params.indexOf("width=")) >= 0) width = JU.PT.parseInt(params.substring(pt + 6)); +if (width < 0 && height < 0) height = width = -1; + else if (width < 0) width = height; + else height = width; +var type = "JPG"; +if (params.indexOf("type=") >= 0) type = JU.PT.getTokens(JU.PT.replaceWithCharacter(params.substring(params.indexOf("type=") + 5), ";,", ' '))[0]; +var errMsg = new Array(1); +var bytes = this.vwr.getImageAsBytes(type.toUpperCase(), width, height, -1, errMsg); +return (errMsg[0] != null ? errMsg[0] : asBytes ? new JU.BArray(bytes) : JU.Base64.getBase64(bytes).toString()); +}, "~S,~B"); +Clazz_defineMethod(c$, "getVariables", +function(name){ +return (name.toLowerCase().equals("all") ? this.vwr.g.getAllVariables() : this.vwr.evaluateExpressionAsVariable(name)); +}, "~S"); +c$.getFileInfo = Clazz_defineMethod(c$, "getFileInfo", +function(objHeader, type){ +var ht = new java.util.Hashtable(); +if (objHeader == null) return ht; +var haveType = (type != null && type.length > 0); +if (Clazz_instanceOf(objHeader,"java.util.Map")) { +return (haveType ? (objHeader).get(type) : objHeader); +}var lines = JU.PT.split(objHeader, "\n"); +if (lines.length == 0 || lines[0].length < 7 || lines[0].charAt(6) != ' ' || !lines[0].substring(0, 6).equals(lines[0].substring(0, 6).toUpperCase())) { +ht.put("fileHeader", objHeader); +return ht; +}var keyLast = ""; +var sb = new JU.SB(); +if (haveType) type = type.toUpperCase(); +var key = ""; +for (var i = 0; i < lines.length; i++) { +var line = lines[i]; +if (line.length < 12) continue; +key = line.substring(0, 6).trim(); +var cont = line.substring(7, 10).trim(); +if (key.equals("REMARK")) { +key += cont; +}if (!key.equals(keyLast)) { +if (haveType && keyLast.equals(type)) return sb.toString(); +if (!haveType) { +ht.put(keyLast, sb.toString()); +sb = new JU.SB(); +}keyLast = key; +}if (!haveType || key.equals(type)) sb.append(line).appendC('\n'); +} +if (!haveType) { +ht.put(keyLast, sb.toString()); +}if (haveType) return (key.equals(type) ? sb.toString() : ""); +return ht; +}, "~O,~S"); +Clazz_defineMethod(c$, "getMoleculeInfo", +function(atomExpression){ +var bsAtoms = this.vwr.getAtomBitSet(atomExpression); +var molecules = this.vwr.ms.getMolecules(); +var V = new JU.Lst(); +var bsTemp = new JU.BS(); +for (var i = 0; i < molecules.length; i++) { +bsTemp = JU.BSUtil.copy(bsAtoms); +var m = molecules[i]; +bsTemp.and(m.atomList); +if (bsTemp.length() > 0) { +var info = new java.util.Hashtable(); +info.put("mf", m.getMolecularFormula(true, null, false)); +info.put("number", Integer.$valueOf(m.moleculeIndex + 1)); +info.put("modelNumber", this.vwr.ms.getModelNumberDotted(m.modelIndex)); +info.put("numberInModel", Integer.$valueOf(m.indexInModel + 1)); +info.put("nAtoms", Integer.$valueOf(m.ac)); +info.put("nElements", Integer.$valueOf(m.nElements)); +V.addLast(info); +}} +return V; +}, "~O"); +Clazz_overrideMethod(c$, "getModelInfo", +function(atomExpression){ +var bsModels = this.vwr.ms.getModelBS(this.vwr.getAtomBitSet(atomExpression), false); +var m = this.vwr.ms; +var info = new java.util.Hashtable(); +info.put("modelSetName", m.modelSetName); +info.put("modelIndex", Integer.$valueOf(this.vwr.am.cmi)); +info.put("modelCount", Integer.$valueOf(m.mc)); +info.put("isTainted", Boolean.$valueOf(m.tainted != null)); +info.put("canSkipLoad", Boolean.$valueOf(m.canSkipLoad)); +info.put("modelSetHasVibrationVectors", Boolean.$valueOf(m.modelSetHasVibrationVectors())); +if (m.modelSetProperties != null) { +info.put("modelSetProperties", m.modelSetProperties); +}info.put("modelCountSelected", Integer.$valueOf(bsModels.cardinality())); +info.put("modelsSelected", bsModels); +var vModels = new JU.Lst(); +m.getMolecules(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +var model = new java.util.Hashtable(); +model.put("_ipt", Integer.$valueOf(i)); +model.put("num", Integer.$valueOf(m.getModelNumber(i))); +model.put("file_model", m.getModelNumberDotted(i)); +model.put("name", m.getModelName(i)); +var s = m.getModelTitle(i); +if (s != null) model.put("title", s); +s = m.getModelFileName(i); +if (s != null) model.put("file", s); +s = m.getInfo(i, "modelID"); +if (s != null) model.put("id", s); +model.put("vibrationVectors", Boolean.$valueOf(this.vwr.modelHasVibrationVectors(i))); +var mi = m.am[i]; +model.put("atomCount", Integer.$valueOf(mi.act)); +model.put("bondCount", Integer.$valueOf(mi.getBondCount())); +model.put("groupCount", Integer.$valueOf(mi.getGroupCount())); +model.put("moleculeCount", Integer.$valueOf(mi.moleculeCount)); +if (mi.isBioModel) model.put("polymerCount", Integer.$valueOf((mi).getBioPolymerCount())); +model.put("chainCount", Integer.$valueOf(m.getChainCountInModelWater(i, true))); +if (mi.properties != null) { +model.put("modelProperties", mi.properties); +}var energy = m.getInfo(i, "Energy"); +if (energy != null) { +model.put("energy", energy); +}model.put("atomCount", Integer.$valueOf(mi.act)); +vModels.addLast(model); +} +info.put("models", vModels); +return info; +}, "~O"); +Clazz_overrideMethod(c$, "getLigandInfo", +function(atomExpression){ +var bsAtoms = this.vwr.getAtomBitSet(atomExpression); +var bsSolvent = this.vwr.getAtomBitSet("solvent"); +var info = new java.util.Hashtable(); +var ligands = new JU.Lst(); +info.put("ligands", ligands); +var ms = this.vwr.ms; +var bsExclude = JU.BSUtil.copyInvert(bsAtoms, ms.ac); +bsExclude.or(bsSolvent); +var atoms = ms.at; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) if (atoms[i].group.isProtein() || atoms[i].group.isDna() || atoms[i].group.isRna()) atoms[i].group.setAtomBitsAndClear(bsExclude, bsAtoms); + +var bsModelAtoms = new Array(ms.mc); +for (var i = ms.mc; --i >= 0; ) { +bsModelAtoms[i] = this.vwr.getModelUndeletedAtomsBitSet(i); +bsModelAtoms[i].andNot(bsExclude); +} +var molList = JU.JmolMolecule.getMolecules(atoms, bsModelAtoms, null, bsExclude); +for (var i = 0; i < molList.length; i++) { +var bs = molList[i].atomList; +var ligand = new java.util.Hashtable(); +ligands.addLast(ligand); +ligand.put("atoms", JU.Escape.eBS(bs)); +var names = ""; +var sep = ""; +var lastGroup = null; +var iChainLast = 0; +var sChainLast = null; +var reslist = ""; +var model = ""; +var resnolast = 2147483647; +var resnofirst = 2147483647; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +var atom = atoms[j]; +if (lastGroup === atom.group) continue; +lastGroup = atom.group; +var resno = atom.getResno(); +var chain = atom.getChainID(); +if (resnolast != resno - 1) { +if (reslist.length != 0 && resnolast != resnofirst) reslist += "-" + resnolast; +chain = -1; +resnofirst = resno; +}model = "/" + ms.getModelNumberDotted(atom.mi); +if (iChainLast != 0 && chain != iChainLast) reslist += ":" + sChainLast + model; +if (chain == -1) reslist += " " + resno; +resnolast = resno; +iChainLast = atom.getChainID(); +sChainLast = atom.getChainIDStr(); +names += sep + atom.getGroup3(false); +sep = "-"; +} +reslist += (resnofirst == resnolast ? "" : "-" + resnolast) + (iChainLast == 0 ? "" : ":" + sChainLast) + model; +ligand.put("groupNames", names); +ligand.put("residueList", reslist.substring(1)); +} +return info; +}, "~O"); +Clazz_overrideMethod(c$, "getAtomData", +function(atomExpression, type, allTrajectories){ +if (!atomExpression.startsWith("{")) atomExpression = "{" + atomExpression + "}"; +var isUser = type.toLowerCase().startsWith("user:"); +var isProp = type.toLowerCase().startsWith("property_"); +if (allTrajectories && !isUser && !isProp) type = type.toUpperCase(); +var exp = (isProp ? "%{" + type + "}" : isUser ? type.substring(5) : type.equals("xyzrn") ? "%-2e %8.3x %8.3y %8.3z %4.2[vdw] 1 [%n]%r.%a#%i" : type.equals("xyzvib") ? "%-2e %10.5x %10.5y %10.5z %10.5vx %10.5vy %10.5vz" : type.equals("pdb") ? "{selected and not hetero}.label(\"ATOM %5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \").lines+{selected and hetero}.label(\"HETATM%5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \").lines" : type.equals("xyz") ? "%-2e %10.5x %10.5y %10.5z" : type.equals("cfi") ? "print '$CFI from Jmol" + JV.Viewer.getJmolVersion() + "\n'+{selected}.count + ' ' + {selected}.bonds.count + '\n' + {selected}.format('%10.0[atomno] %10.0[elemno] %10.4[xyz]') + {selected}.bonds.format('%i1 %i2') + '\n' + {selected}.bonds.format('%ORDER')" : null); +if (exp == null) return this.getModelExtract(this.vwr.getAtomBitSet(atomExpression), false, false, type.toUpperCase(), allTrajectories); +if (exp.startsWith("print")) { +if (!atomExpression.equals("selected")) exp = JU.PT.rep(exp, "selected", atomExpression.substring(1, atomExpression.length - 1)); +return this.vwr.runScriptCautiously(exp); +}if (exp.indexOf("label") < 0) exp = atomExpression + ".label(\"" + exp + "\").lines"; + else if (!atomExpression.equals("selected")) exp = JU.PT.rep(exp, "selected", atomExpression.substring(1, atomExpression.length - 1)); +return this.vwr.evaluateExpression(exp); +}, "~S,~S,~B"); +Clazz_overrideMethod(c$, "getModelExtract", +function(bs, doTransform, isModelKit, type, allTrajectories){ +if (bs.nextSetBit(0) < 0) return ""; +var uc = type.toUpperCase(); +if (JU.PT.isOneOf(uc, ";CIF;QCJSON;XSF;PWMAT;")) return this.getModel(uc, bs, null, null); +if (uc.equals("PWSLAB")) return this.getModel("PWMAT", bs, Clazz_newArray(-1, ["slab"]), null); +if (uc.equals("CIFP1")) return this.getModel("CIF", bs, Clazz_newArray(-1, ["P1"]), null); +if (uc.equals("CML")) return this.getModelCml(bs, 2147483647, true, doTransform, allTrajectories); +if (uc.equals("PDB") || uc.equals("PQR")) return this.getPdbAtomData(bs, null, uc.equals("PQR"), doTransform, allTrajectories); +var asV3000 = uc.equals("V3000"); +var asSDF = uc.equals("SDF"); +var noAromatic = uc.equals("MOL"); +var asXYZVIB = (!doTransform && uc.equals("XYZVIB")); +var asXYZRN = uc.equals("XYZRN"); +var isXYZ = uc.startsWith("XYZ"); +var asJSON = uc.equals("JSON") || uc.equals("CD"); +var mol = new JU.SB(); +var ms = this.vwr.ms; +var bsModels = this.vwr.ms.getModelBS(bs, true); +var modelIndex = bsModels.nextSetBit(0); +var is2D = "2D".equals(this.vwr.ms.am[modelIndex].auxiliaryInfo.get("dimension")); +var atoms = ms.at; +var bsAtoms = JU.BSUtil.copy(bs); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (doTransform && atoms[i].isDeleted()) bsAtoms.clear(i); + +if (!asXYZVIB && bsAtoms.isEmpty()) return ""; +var bsBonds = JV.PropertyManager.getCovalentBondsForAtoms(ms.bo, ms.bondCount, bsAtoms); +var isOK = true; +if (ms.trajectory != null && !allTrajectories) ms.trajectory.selectDisplayed(bsModels); +var q = (doTransform ? this.vwr.tm.getRotationQ() : null); +if (isXYZ) { +this.writeXYZ(mol, bsAtoms, bsModels, q, asXYZVIB, asXYZRN); +} else { +var title = this.vwr.ms.getFrameTitle(bsModels.nextSetBit(0)); +title = (title != null ? title.$replace('\n', ' ') : isModelKit ? "Jmol Model Kit" : JV.FileManager.fixDOSName(this.vwr.fm.getFullPathName(false))); +var mw = (J.api.Interface.getInterface("J.adapter.writers.MOLWriter", this.vwr, "write")).setViewer(this.vwr); +if (asSDF) { +mol = new JU.SB(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +var bsTemp = JU.BSUtil.copy(bsAtoms); +bsTemp.and(ms.getModelAtomBitSetIncludingDeleted(i, false)); +bsBonds = JV.PropertyManager.getCovalentBondsForAtoms(ms.bo, ms.bondCount, bsTemp); +if (!(isOK = mw.addMolFile(title, i, mol, bsTemp, bsBonds, false, false, noAromatic, q, is2D))) break; +} +} else { +isOK = mw.addMolFile(title, -1, mol, bsAtoms, bsBonds, asV3000, asJSON, noAromatic, q, is2D); +}}return (isOK ? mol.toString() : "ERROR: Too many atoms or bonds -- use V3000 format."); +}, "JU.BS,~B,~B,~S,~B"); +Clazz_defineMethod(c$, "writeXYZ", +function(mol, bsAtoms, bsModels, q, asXYZVIB, asXYZRN){ +var ms = this.vwr.ms; +var atoms = ms.at; +var tokensXYZ = JM.LabelToken.compile(this.vwr, (asXYZRN ? "%-2e _XYZ_ %4.2[vdw] 1 [%n]%r.%a#%i\n" : "%-2e _XYZ_\n"), '\0', null); +var tokensVib = (asXYZVIB ? JM.LabelToken.compile(this.vwr, "%-2e _XYZ_ %12.5vx %12.5vy %12.5vz\n", '\0', null) : null); +var ptTemp = new JU.P3(); +for (var i = bsModels.nextSetBit(0); i >= 0; i = bsModels.nextSetBit(i + 1)) { +var bsTemp = JU.BSUtil.copy(bsAtoms); +bsTemp.and(ms.getModelAtomBitSetIncludingDeleted(i, false)); +if (bsTemp.isEmpty()) continue; +mol.appendI(bsTemp.cardinality()).appendC('\n'); +var props = ms.am[i].properties; +mol.append("Model[" + (i + 1) + "]: "); +if (ms.frameTitles[i] != null && ms.frameTitles[i].length > 0) { +mol.append(ms.frameTitles[i].$replace('\n', ' ')); +} else if (props == null) { +mol.append("Jmol " + JV.Viewer.getJmolVersion()); +} else { +var sb = new JU.SB(); +var e = props.propertyNames(); +var path = null; +while (e.hasMoreElements()) { +var propertyName = e.nextElement(); +if (propertyName.equals(".PATH")) path = props.getProperty(propertyName); + else sb.append(";").append(propertyName).append("=").append(props.getProperty(propertyName)); +} +if (path != null) sb.append(";PATH=").append(path); +path = sb.substring(sb.length() > 0 ? 1 : 0); +mol.append(path.$replace('\n', ' ')); +}mol.appendC('\n'); +var o = Clazz_newArray(-1, [ptTemp]); +for (var j = bsTemp.nextSetBit(0); j >= 0; j = bsTemp.nextSetBit(j + 1)) { +var s = JM.LabelToken.formatLabelAtomArray(this.vwr, atoms[j], (asXYZVIB && ms.getVibration(j, false) != null ? tokensVib : tokensXYZ), '\0', null, ptTemp); +ms.getPointTransf(i, atoms[j], q, ptTemp); +s = JU.PT.rep(s, "_XYZ_", JU.PT.sprintf("%12.5p %12.5p %12.5p", "p", o)); +mol.append(s); +} +} +}, "JU.SB,JU.BS,JU.BS,JU.Quat,~B,~B"); +Clazz_defineMethod(c$, "getModel", +function(type, bs, data, out){ +var writer = J.api.Interface.getInterface("J.adapter.writers." + type + "Writer", this.vwr, "script"); +writer.set(this.vwr, out, data); +return writer.write(bs); +}, "~S,JU.BS,~A,JU.OC"); +c$.getCovalentBondsForAtoms = Clazz_defineMethod(c$, "getCovalentBondsForAtoms", +function(bonds, bondCount, bsAtoms){ +var bsBonds = new JU.BS(); +for (var i = 0; i < bondCount; i++) { +var bond = bonds[i]; +if (bsAtoms.get(bond.atom1.i) && bsAtoms.get(bond.atom2.i) && bond.isCovalent()) bsBonds.set(i); +} +return bsBonds; +}, "~A,~N,JU.BS"); +Clazz_overrideMethod(c$, "getChimeInfo", +function(tok, bs){ +switch (tok) { +case 1073741982: +var sb = new JU.SB(); +this.vwr.getChimeMessenger().getAllChimeInfo(sb); +return sb.appendC('\n').toString().substring(1); +case 1073741863: +return this.getBasePairInfo(bs); +default: +return this.getChimeInfoA(this.vwr.ms.at, tok, bs); +} +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getChimeInfoA", +function(atoms, tok, bs){ +var info = new JU.SB().append("\n"); +var s = ""; +var clast = null; +var glast = null; +var modelLast = -1; +var n = 0; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = atoms[i]; +switch (tok) { +default: +return ""; +case 1113589787: +s = a.getInfo(); +break; +case 1153433601: +s = "" + a.getAtomNumber(); +break; +case 1086324742: +s = a.getGroup3(false); +break; +case 1086326788: +case 1073742120: +case 1086324744: +case 1086324743: +var id = a.getChainID(); +s = (id == 0 ? " " : a.getChainIDStr()); +if (id >= 300) s = JU.PT.esc(s); +switch (tok) { +case 1073742120: +s = "[" + a.getGroup3(false) + "]" + a.group.getSeqcodeString() + ":" + s; +break; +case 1086324744: +case 1086324743: +if (a.mi != modelLast) { +info.appendC('\n'); +n = 0; +modelLast = a.mi; +info.append("Model " + a.getModelNumber()); +glast = null; +clast = null; +}if (a.group.chain !== clast) { +info.appendC('\n'); +n = 0; +clast = a.group.chain; +info.append("Chain " + s + ":\n"); +glast = null; +}var g = a.group; +if (g !== glast) { +glast = g; +if (tok == 1086324743) { +info.append(a.getGroup1('?')); +} else { +if ((n++) % 5 == 0 && n > 1) info.appendC('\n'); +JU.PT.leftJustify(info, " ", "[" + a.getGroup3(false) + "]" + a.getResno() + " "); +}}continue; +} +break; +} +if (info.indexOf("\n" + s + "\n") < 0) info.append(s).appendC('\n'); +} +if (tok == 1086324744) info.appendC('\n'); +return info.toString().substring(1); +}, "~A,~N,JU.BS"); +Clazz_overrideMethod(c$, "getModelFileInfo", +function(frames){ +var ms = this.vwr.ms; +var sb = new JU.SB(); +for (var i = 0; i < ms.mc; ++i) { +if (frames != null && !frames.get(i)) continue; +var s = "[\"" + ms.getModelNumberDotted(i) + "\"] = "; +sb.append("\n\nfile").append(s).append(JU.PT.esc(ms.getModelFileName(i))); +var id = ms.getInfo(i, "modelID"); +if (id != null) sb.append("\nid").append(s).append(JU.PT.esc(id)); +sb.append("\ntitle").append(s).append(JU.PT.esc(ms.getModelTitle(i))); +sb.append("\nname").append(s).append(JU.PT.esc(ms.getModelName(i))); +sb.append("\ntype").append(s).append(JU.PT.esc(ms.getModelFileType(i))); +} +return sb.toString(); +}, "JU.BS"); +Clazz_defineMethod(c$, "getAllAtomInfo", +function(bs){ +var V = new JU.Lst(); +var ptTemp = new JU.P3(); +var imodel = -1; +var ucell = null; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var mi = this.vwr.ms.at[i].getModelIndex(); +if (mi != imodel) { +ucell = this.vwr.ms.getUnitCell(mi); +imodel = mi; +}V.addLast(this.getAtomInfoLong(i, ptTemp, ucell)); +} +return V; +}, "JU.BS"); +Clazz_defineMethod(c$, "getAtomInfoLong", +function(i, ptTemp, ucell){ +var ms = this.vwr.ms; +var atom = ms.at[i]; +var info = new java.util.Hashtable(); +ms.getAtomIdentityInfo(i, info, ptTemp); +info.put("element", ms.getElementName(i)); +info.put("elemno", Integer.$valueOf(ms.at[i].getElementNumber())); +info.put("x", Float.$valueOf(atom.x)); +info.put("y", Float.$valueOf(atom.y)); +info.put("z", Float.$valueOf(atom.z)); +if (ucell != null) { +ptTemp.setT(atom); +ucell.toFractional(ptTemp, true); +info.put("fx", Float.$valueOf(ptTemp.x)); +info.put("fy", Float.$valueOf(ptTemp.y)); +info.put("fz", Float.$valueOf(ptTemp.z)); +}info.put("coord", JU.P3.newP(atom)); +if (ms.vibrations != null && ms.vibrations[i] != null) ms.vibrations[i].getInfo(info); +info.put("bondCount", Integer.$valueOf(atom.getCovalentBondCount())); +info.put("radius", Float.$valueOf((atom.getRasMolRadius() / 120.0))); +info.put("model", atom.getModelNumberForLabel()); +var shape = atom.atomPropertyString(this.vwr, 1086324748); +if (shape != null) info.put("shape", shape); +info.put("visible", Boolean.$valueOf(atom.checkVisible())); +info.put("clickabilityFlags", Integer.$valueOf(atom.clickabilityFlags)); +info.put("visibilityFlags", Integer.$valueOf(atom.shapeVisibilityFlags)); +info.put("spacefill", Float.$valueOf(atom.getRadius())); +var strColor = JU.Escape.escapeColor(this.vwr.gdata.getColorArgbOrGray(atom.colixAtom)); +if (strColor != null) info.put("color", strColor); +info.put("colix", Integer.$valueOf(atom.colixAtom)); +var isTranslucent = JU.C.isColixTranslucent(atom.colixAtom); +if (isTranslucent) info.put("translucent", Boolean.$valueOf(isTranslucent)); +info.put("formalCharge", Integer.$valueOf(atom.getFormalCharge())); +info.put("partialCharge", Float.$valueOf(atom.getPartialCharge())); +var d = atom.getSurfaceDistance100() / 100; +if (d >= 0) info.put("surfaceDistance", Float.$valueOf(d)); +if (ms.am[atom.mi].isBioModel) { +info.put("resname", atom.getGroup3(false)); +var insCode = atom.group.getInsertionCode(); +var seqNum = atom.getResno(); +if (seqNum > 0) info.put("resno", Integer.$valueOf(seqNum)); +if (insCode.charCodeAt(0) != 0) info.put("insertionCode", "" + insCode); +info.put("name", ms.at[i].getAtomName()); +info.put("chain", atom.getChainIDStr()); +info.put("atomID", Integer.$valueOf(atom.atomID)); +info.put("groupID", Integer.$valueOf(atom.group.groupID)); +if (atom.altloc != '\0') info.put("altLocation", "" + atom.altloc); +info.put("structure", Integer.$valueOf(atom.group.getProteinStructureType().getId())); +info.put("polymerLength", Integer.$valueOf(atom.group.getBioPolymerLength())); +info.put("occupancy", Integer.$valueOf(atom.getOccupancy100())); +var temp = atom.getBfactor100(); +info.put("temp", Integer.$valueOf(Clazz_doubleToInt(temp / 100))); +}return info; +}, "~N,JU.P3,J.api.SymmetryInterface"); +Clazz_defineMethod(c$, "getAllBondInfo", +function(bsOrArray){ +var v = new JU.Lst(); +var ms = this.vwr.ms; +var bondCount = ms.bondCount; +var bonds = ms.bo; +var bs1; +if ((typeof(bsOrArray)=='string')) { +bsOrArray = this.vwr.getAtomBitSet(bsOrArray); +}var ptTemp = new JU.P3(); +if (Clazz_instanceOf(bsOrArray,Array)) { +bs1 = (bsOrArray)[0]; +var bs2 = (bsOrArray)[1]; +for (var i = 0; i < bondCount; i++) { +var ia = bonds[i].atom1.i; +var ib = bonds[i].atom2.i; +if (bs1.get(ia) && bs2.get(ib) || bs2.get(ia) && bs1.get(ib)) v.addLast(this.getBondInfo(i, ptTemp)); +} +} else if (Clazz_instanceOf(bsOrArray,"JM.BondSet")) { +bs1 = bsOrArray; +for (var i = bs1.nextSetBit(0); i >= 0 && i < bondCount; i = bs1.nextSetBit(i + 1)) v.addLast(this.getBondInfo(i, ptTemp)); + +} else if (Clazz_instanceOf(bsOrArray,"JU.BS")) { +bs1 = bsOrArray; +var thisAtom = (bs1.cardinality() == 1 ? bs1.nextSetBit(0) : -1); +for (var i = 0; i < bondCount; i++) { +if (thisAtom >= 0 ? (bonds[i].atom1.i == thisAtom || bonds[i].atom2.i == thisAtom) : bs1.get(bonds[i].atom1.i) && bs1.get(bonds[i].atom2.i)) v.addLast(this.getBondInfo(i, ptTemp)); +} +}return v; +}, "~O"); +Clazz_defineMethod(c$, "getBondInfo", +function(i, ptTemp){ +var bond = this.vwr.ms.bo[i]; +var atom1 = bond.atom1; +var atom2 = bond.atom2; +var info = new java.util.Hashtable(); +info.put("_bpt", Integer.$valueOf(i)); +var infoA = new java.util.Hashtable(); +this.vwr.ms.getAtomIdentityInfo(atom1.i, infoA, ptTemp); +var infoB = new java.util.Hashtable(); +this.vwr.ms.getAtomIdentityInfo(atom2.i, infoB, ptTemp); +info.put("atom1", infoA); +info.put("atom2", infoB); +info.put("jmol_order", "0x" + Integer.toHexString(bond.getBondType())); +info.put("edge_type", Integer.$valueOf(bond.getBondType())); +info.put("order", Float.$valueOf(JU.Edge.getBondOrderNumberFromOrder(bond.getBondType()))); +info.put("type", JU.Edge.getBondOrderNameFromOrder(bond.getBondType())); +info.put("radius", Float.$valueOf((bond.mad / 2000.))); +info.put("length_Ang", Float.$valueOf(atom1.distance(atom2))); +info.put("visible", Boolean.$valueOf(bond.shapeVisibilityFlags != 0)); +var strColor = JU.Escape.escapeColor(this.vwr.gdata.getColorArgbOrGray(bond.colix)); +if (strColor != null) info.put("color", strColor); +info.put("colix", Integer.$valueOf(bond.colix)); +if (JU.C.isColixTranslucent(bond.colix)) info.put("translucent", Boolean.TRUE); +return info; +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "getAllChainInfo", +function(bs){ +var finalInfo = new java.util.Hashtable(); +var modelVector = new JU.Lst(); +var modelCount = this.vwr.ms.mc; +for (var i = 0; i < modelCount; ++i) { +var modelInfo = new java.util.Hashtable(); +var info = this.getChainInfo(i, bs); +if (info.size() > 0) { +modelInfo.put("modelIndex", Integer.$valueOf(i)); +modelInfo.put("chains", info); +modelVector.addLast(modelInfo); +}} +finalInfo.put("models", modelVector); +return finalInfo; +}, "JU.BS"); +Clazz_defineMethod(c$, "getChainInfo", +function(modelIndex, bs){ +var model = this.vwr.ms.am[modelIndex]; +var nChains = model.getChainCount(true); +var infoChains = new JU.Lst(); +var ptTemp = new JU.P3(); +for (var i = 0; i < nChains; i++) { +var chain = model.getChainAt(i); +var infoChain = new JU.Lst(); +var nGroups = chain.groupCount; +var arrayName = new java.util.Hashtable(); +for (var igroup = 0; igroup < nGroups; igroup++) { +var group = chain.groups[igroup]; +if (bs.get(group.firstAtomIndex)) infoChain.addLast(group.getGroupInfo(igroup, ptTemp)); +} +if (!infoChain.isEmpty()) { +arrayName.put("residues", infoChain); +infoChains.addLast(arrayName); +}} +return infoChains; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getAllPolymerInfo", +function(bs){ +var info = new java.util.Hashtable(); +if (this.vwr.ms.bioModelset != null) this.vwr.ms.bioModelset.getAllPolymerInfo(bs, info); +return info; +}, "JU.BS"); +Clazz_defineMethod(c$, "getBasePairInfo", +function(bs){ +var info = new JU.SB(); +var vHBonds = new JU.Lst(); +this.vwr.ms.calcRasmolHydrogenBonds(bs, bs, vHBonds, true, 1, false, null); +for (var i = vHBonds.size(); --i >= 0; ) { +var b = vHBonds.get(i); +JV.PropertyManager.getAtomResidueInfo(info, b.atom1); +info.append(" - "); +JV.PropertyManager.getAtomResidueInfo(info, b.atom2); +info.append("\n"); +} +return info.toString(); +}, "JU.BS"); +c$.getAtomResidueInfo = Clazz_defineMethod(c$, "getAtomResidueInfo", +function(info, atom){ +info.append("[").append(atom.getGroup3(false)).append("]").append(atom.group.getSeqcodeString()).append(":"); +var id = atom.getChainID(); +info.append(id == 0 ? " " : atom.getChainIDStr()); +}, "JU.SB,JM.Atom"); +Clazz_defineMethod(c$, "getAppletInfo", +function(){ +var info = new java.util.Hashtable(); +info.put("htmlName", this.vwr.htmlName); +info.put("syncId", this.vwr.syncId); +info.put("fullName", this.vwr.fullName); +info.put("codeBase", "" + JV.Viewer.appletCodeBase); +if (this.vwr.isApplet) { +info.put("documentBase", JV.Viewer.appletDocumentBase); +info.put("registry", this.vwr.sm.getRegistryInfo()); +}info.put("version", JV.JC.version); +info.put("date", JV.JC.date); +info.put("javaVendor", JV.Viewer.strJavaVendor); +info.put("javaVersion", JV.Viewer.strJavaVersion + (!JV.Viewer.isJS ? "" : this.vwr.isWebGL ? "(WebGL)" : "(HTML5)")); +info.put("operatingSystem", JV.Viewer.strOSName); +return info; +}); +Clazz_defineMethod(c$, "getAnimationInfo", +function(){ +var am = this.vwr.am; +var info = new java.util.Hashtable(); +info.put("firstModelIndex", Integer.$valueOf(am.firstFrameIndex)); +info.put("lastModelIndex", Integer.$valueOf(am.lastFrameIndex)); +info.put("animationDirection", Integer.$valueOf(am.animationDirection)); +info.put("currentDirection", Integer.$valueOf(am.currentDirection)); +info.put("displayModelIndex", Integer.$valueOf(am.cmi)); +if (am.animationFrames != null) { +info.put("isMovie", Boolean.TRUE); +info.put("frames", JU.Escape.eAI(am.animationFrames)); +info.put("currentAnimationFrame", Integer.$valueOf(am.caf)); +}info.put("displayModelNumber", this.vwr.getModelNumberDotted(am.cmi)); +info.put("displayModelName", (am.cmi >= 0 ? this.vwr.getModelName(am.cmi) : "")); +info.put("animationFps", Integer.$valueOf(am.animationFps)); +info.put("animationReplayMode", JS.T.nameOf(am.animationReplayMode)); +info.put("firstFrameDelay", Float.$valueOf(am.firstFrameDelay)); +info.put("lastFrameDelay", Float.$valueOf(am.lastFrameDelay)); +info.put("animationOn", Boolean.$valueOf(am.animationOn)); +info.put("animationPaused", Boolean.$valueOf(am.animationPaused)); +return info; +}); +Clazz_defineMethod(c$, "getBoundBoxInfo", +function(){ +var pts = this.vwr.ms.getBoxInfo(null, 1).getBoundBoxPoints(true); +var info = new java.util.Hashtable(); +info.put("center", JU.P3.newP(pts[0])); +info.put("vector", JU.V3.newV(pts[1])); +info.put("corner0", JU.P3.newP(pts[2])); +info.put("corner1", JU.P3.newP(pts[3])); +return info; +}); +Clazz_defineMethod(c$, "getShapeInfo", +function(){ +var info = new java.util.Hashtable(); +var commands = new JU.SB(); +var shapes = this.vwr.shm.shapes; +if (shapes != null) for (var i = 0; i < 37; ++i) { +var shape = shapes[i]; +if (shape != null) { +var shapeType = JV.JC.shapeClassBases[i]; +var shapeDetail = shape.getShapeDetail(); +if (shapeDetail != null) info.put(shapeType, shapeDetail); +}} +if (commands.length() > 0) info.put("shapeCommands", commands.toString()); +return info; +}); +Clazz_defineMethod(c$, "getAnnotationInfo", +function(atomExpression, type){ +var bsAtoms = this.vwr.getAtomBitSet(atomExpression); +var iModel = this.vwr.ms.getModelBS(bsAtoms, false).nextSetBit(0); +if (iModel < 0) return null; +var modelinfo = this.vwr.ms.getModelAuxiliaryInfo(iModel); +var objAnn = modelinfo.get(type == 1073741925 ? "domains" : "validation"); +if (objAnn == null || objAnn.tok != 6) return null; +this.vwr.getAnnotationParser(false).initializeAnnotation(objAnn, type, iModel); +return objAnn.mapGet("_list"); +}, "~O,~N"); +Clazz_defineMethod(c$, "getMeasurementInfo", +function(){ +return this.vwr.getShapeProperty(6, "info"); +}); +Clazz_defineMethod(c$, "getMouseInfo", +function(){ +if (!this.vwr.haveDisplay) return null; +var info = new java.util.Hashtable(); +var list = new JU.Lst(); +var am = this.vwr.acm; +for (var obj, $obj = am.b.getBindings().values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (Clazz_instanceOf(obj, Boolean)) continue; +if (JU.AU.isAI(obj)) { +var binding = obj; +obj = Clazz_newArray(-1, [JV.binding.Binding.getMouseActionName(binding[0], false), JV.ActionManager.getActionName(binding[1])]); +}list.addLast(obj); +} +info.put("bindings", list); +info.put("bindingName", am.b.name); +info.put("actionNames", JV.ActionManager.actionNames); +info.put("actionInfo", JV.ActionManager.actionInfo); +info.put("bindingInfo", JU.PT.split(am.getBindingInfo(null), "\n")); +return info; +}); +Clazz_overrideMethod(c$, "getPdbAtomData", +function(bs, out, isPQR, doTransform, allTrajectories){ +if (this.vwr.ms.ac == 0 || bs.nextSetBit(0) < 0) return ""; +return this.getModel("PDB", bs, Clazz_newArray(-1, [new Boolean(isPQR), new Boolean(doTransform), new Boolean(allTrajectories)]), out); +}, "JU.BS,JU.OC,~B,~B,~B"); +Clazz_overrideMethod(c$, "getPdbData", +function(modelIndex, type, bsSelected, parameters, out, addStructure){ +if (this.vwr.ms.isJmolDataFrameForModel(modelIndex)) modelIndex = this.vwr.ms.getJmolDataSourceFrame(modelIndex); +if (modelIndex < 0) return ""; +var model = this.vwr.ms.am[modelIndex]; +var isPDB = model.isBioModel; +if (parameters == null && !isPDB) return null; +if (out == null) out = this.vwr.getOutputChannel(null, null); +var pdbCONECT = new JU.SB(); +var isDraw = (type.indexOf("draw") >= 0); +var bsAtoms = null; +var bsWritten = new JU.BS(); +var ctype = '\u0000'; +this.vwr.ms.getLabeler(); +var tokens = JM.LabelToken.compile(this.vwr, "ATOM %-6i%4a%1A%3.-3n %1c%4R%1E ", '\0', null); +if (parameters == null) { +ctype = (type.length > 11 && type.indexOf("quaternion ") >= 0 ? type.charAt(11) : 'R'); +(model).getPdbData(type, ctype, isDraw, bsSelected, out, tokens, pdbCONECT, bsWritten); +bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +} else { +bsAtoms = parameters[0]; +var dataX = parameters[1]; +var dataY = parameters[2]; +var dataZ = parameters[3]; +var haveY = (dataY != null); +var haveZ = (dataZ != null); +var minXYZ = parameters[4]; +var maxXYZ = parameters[5]; +var factors = parameters[6]; +var center = parameters[7]; +var format = parameters[8]; +var properties = parameters[9]; +var isPDBFormat = (factors != null && format == null); +var atoms = this.vwr.ms.at; +if (isPDBFormat) { +out.append("REMARK 6 Jmol PDB-encoded data: ").append(type).append("; ").append(JV.Viewer.getJmolVersion()).append("; ").append(this.vwr.apiPlatform.getDateFormat(null)).append("\n"); +out.append("REMARK 6 Jmol data").append(" min = ").append(JU.Escape.eP(minXYZ)).append(" max = ").append(JU.Escape.eP(maxXYZ)).append(" unScaledXyz = xyz * ").append(JU.Escape.eP(factors)).append(" + ").append(JU.Escape.eP(center)).append(";\n"); +var atomNames = null; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var name = "" + atoms[i].getAtomName(); +if (atomNames != null || name.length > 4) { +if (atomNames == null) { +atomNames = ""; +i = -1; +continue; +}atomNames += " " + name; +}} +if (atomNames != null) out.append("REMARK 6 Jmol atom names").append(atomNames).append("\n"); +var resNames = null; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var name = "" + atoms[i].getGroup3(true); +if (resNames != null || name.length > 3) { +if (resNames == null) { +resNames = ""; +i = -1; +continue; +}resNames += " " + name; +}} +if (resNames != null) out.append("REMARK 6 Jmol residue names").append(resNames).append("\n"); +for (var i = 0; i < properties.length; i++) if (properties[i] != null) out.append("REMARK 6 Jmol property ").append(properties[i]).append(";\n"); + +}var strExtra = ""; +var atomLast = null; +var ptTemp = new JU.P3(); +if (!isPDBFormat) { +if (format == null) format = "%-5i %-10s %-13.5f " + (haveZ ? "%-13.5f %-13.5f" : haveY ? "%-13.5f" : ""); +format += "\n"; +}for (var i = bsAtoms.nextSetBit(0), n = 0; i >= 0; i = bsAtoms.nextSetBit(i + 1), n++) { +var x = dataX[n]; +var y = (haveY ? dataY[n] : 0); +var z = (haveZ ? dataZ[n] : 0); +if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) continue; +var a = atoms[i]; +if (isPDBFormat) { +out.append(JM.LabelToken.formatLabelAtomArray(this.vwr, a, tokens, '\0', null, ptTemp)); +if (isPDB) bsWritten.set(i); +out.append(JU.PT.sprintf("%-8.2f%-8.2f%-10.2f %6.3f %2s %s\n", "ssF", Clazz_newArray(-1, [a.getElementSymbolIso(false).toUpperCase(), strExtra, Clazz_newFloatArray(-1, [x, y, z, 0])]))); +if (atomLast != null && atomLast.group.getBioPolymerIndexInModel() == a.group.getBioPolymerIndexInModel()) pdbCONECT.append("CONECT").append(JU.PT.formatStringI("%5i", "i", atomLast.getAtomNumber())).append(JU.PT.formatStringI("%5i", "i", a.getAtomNumber())).appendC('\n'); +} else if (haveZ) { +out.append(JU.PT.sprintf(format, "isF", Clazz_newArray(-1, [Integer.$valueOf(a.getAtomNumber()), a.getAtomName(), Clazz_newFloatArray(-1, [x, y, z])]))); +} else if (haveY) { +out.append(JU.PT.sprintf(format, "isF", Clazz_newArray(-1, [Integer.$valueOf(a.getAtomNumber()), a.getAtomName(), Clazz_newFloatArray(-1, [x, y])]))); +} else { +out.append(JU.PT.sprintf(format, "isF", Clazz_newArray(-1, [Integer.$valueOf(a.getAtomNumber()), a.getAtomName(), Clazz_newFloatArray(-1, [x])]))); +}atomLast = a; +} +}out.append(pdbCONECT.toString()); +if (isDraw) return out.toString(); +bsSelected.and(bsAtoms); +if (isPDB && addStructure) out.append("\n\n" + this.vwr.ms.getProteinStructureState(bsWritten, ctype == 'R' ? 4138 : 1073742086)); +return out.toString(); +}, "~N,~S,JU.BS,~A,JU.OC,~B"); +Clazz_overrideMethod(c$, "getModelCml", +function(bs, atomsMax, addBonds, doTransform, allTrajectories){ +return this.getModel("CML", bs, Clazz_newArray(-1, [new Integer(atomsMax), new Boolean(addBonds), new Boolean(doTransform), new Boolean(allTrajectories)]), null); +}, "JU.BS,~N,~B,~B,~B"); +Clazz_overrideMethod(c$, "fixJMEFormalCharges", +function(bsAtoms, jme){ +var haveCharges = false; +if (bsAtoms == null) return jme; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.vwr.ms.at[i]; +if (a.getFormalCharge() != 0) { +haveCharges = true; +break; +}} +if (!haveCharges) return jme; +var map = this.vwr.getSmilesMatcher().getMapForJME(jme, this.vwr.ms.at, bsAtoms); +if (map == null) return jme; +var jmeMap = map[0]; +var jmolMap = map[1]; +var tokens = JU.PT.getTokens(jme); +var nAtoms = JU.PT.parseInt(tokens[0]); +var mapjj = Clazz_newIntArray (nAtoms, 0); +for (var i = jmeMap.length; --i >= 0; ) { +mapjj[jmeMap[i]] = jmolMap[i] + 1; +} +var ipt = 0; +for (var pt = 2; pt < tokens.length; pt += 3) { +var jmeAtom = tokens[pt]; +if (JU.PT.parseInt(jmeAtom) != -2147483648) break; +jmeAtom = JU.PT.replaceAllCharacters(jmeAtom, "+-", ""); +var a = this.vwr.ms.at[mapjj[ipt++] - 1]; +var elem = a.getElementSymbol(); +if (!elem.equals(jmeAtom)) { +return jme; +}var charge = a.getFormalCharge(); +if (charge != 0) tokens[pt] = jmeAtom + (charge > 0 ? "+" : "-") + (Math.abs(charge) > 1 ? "" + Math.abs(charge) : ""); +} +return JU.PT.join(tokens, ' ', 0); +}, "JU.BS,~S"); +c$.getSDFDateLine = Clazz_defineMethod(c$, "getSDFDateLine", +function(version, is2d){ +var mol = JU.SB.newS((version + " ").substring(0, 10)); +var cMM; +var cDD; +var cYYYY; +var cHH; +var cmm; +{ +var c = new Date(); cMM = c.getMonth(); cDD = c.getDate(); +cYYYY = c.getFullYear(); cHH = c.getHours(); cmm = +c.getMinutes(); +}JU.PT.rightJustify(mol, "00", "" + (1 + cMM)); +JU.PT.rightJustify(mol, "00", "" + cDD); +mol.append(("" + cYYYY).substring(2, 4)); +JU.PT.rightJustify(mol, "00", "" + cHH); +JU.PT.rightJustify(mol, "00", "" + cmm); +mol.append(is2d ? "2" : "3").append("D 1 1.00000 0.00000 0"); +mol.append("\n"); +return mol.toString(); +}, "~S,~B"); +c$.propertyTypes = Clazz_newArray(-1, ["appletInfo", "", "", "fileName", "", "", "fileHeader", "", "", "fileContents", "", "", "fileContents", "", "", "animationInfo", "", "", "modelInfo", "", "{*}", "ligandInfo", "", "{*}", "shapeInfo", "", "", "measurementInfo", "", "", "centerInfo", "", "", "orientationInfo", "", "", "transformInfo", "", "", "", "", "", "atomInfo", "", "(visible)", "bondInfo", "", "(visible)", "chainInfo", "", "(visible)", "polymerInfo", "", "(visible)", "moleculeInfo", "", "(visible)", "stateInfo", "", "all", "extractModel", "", "(visible)", "jmolStatus", "statusNameList", "", "jmolViewer", "", "", "messageQueue", "", "", "auxiliaryInfo", "", "{*}", "boundBoxInfo", "", "", "dataInfo", "", "types", "image", "", "", "evaluate", "", "", "menu", "", "current", "minimizationInfo", "", "", "pointGroupInfo", "", "(visible)", "fileInfo", "", "", "errorMessage", "", "", "mouseInfo", "", "", "isosurfaceInfo", "", "", "isosurfaceData", "", "", "consoleText", "", "", "JSpecView", "", "", "scriptQueueInfo", "", "", "nmrInfo", " or 'all' or 'shifts'", "all", "variableInfo", "", "all", "domainInfo", "", "{visible}", "validationInfo", "", "{visible}", "service", "", "", "CIFInfo", "", "", "modelkitInfo", "", "data", "unitcellInfo", "", ""]); +c$.readableTypes = Clazz_newArray(-1, ["", "stateinfo", "extractmodel", "filecontents", "fileheader", "image", "menu", "minimizationInfo"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coreprop.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coreprop.z.js new file mode 100755 index 000000000000..39ac43e0cdb9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coreprop.z.js @@ -0,0 +1,78 @@ +(function(Q,R,S,T,H,U,G,n,I,K,L,V,W,M,X,Y,N,z,Z,O,$,aa,P,ba,ca,da,ea,w,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,Ca,Da,Ea,Fa,k,v){G("J.api");P(J.api,"JmolPropertyManager");G("JV");I(["J.api.JmolPropertyManager","java.util.Hashtable"],"JV.PropertyManager","java.util.Arrays JU.AU $.BArray $.BS $.Base64 $.Lst $.M3 $.P3 $.PT $.SB $.V3 J.api.Interface JM.LabelToken JS.SV $.T JU.BSUtil $.C $.Edge $.Escape $.JmolMolecule $.Logger JV.ActionManager $.FileManager $.JC $.Viewer JV.binding.Binding".split(" "), +function(){var h=L(function(){this.map=this.vwr=null;K(this,arguments)},JV,"PropertyManager",null,J.api.JmolPropertyManager);O(h,function(){this.map=new java.util.Hashtable});M(h,function(){});v(h,"setViewer",function(a){this.vwr=a;for(var b=a=0;aa?"":JV.PropertyManager.propertyTypes[3*a+2]},"~N");v(h,"checkPropertyParameter",function(a){a=this.getPropertyNumber(a);a=JV.PropertyManager.getParamType(a);return 0"!==a},"~S");v(h,"getProperty",function(a,b,f){144!=JV.PropertyManager.propertyTypes.length&&JU.Logger.warn("propertyTypes is not the right length: "+JV.PropertyManager.propertyTypes.length+" != 144"); +var d;0<=b.indexOf(".")||0<=b.indexOf("[")?(d=this.getArguments(b),f=this.getPropertyAsObject(d[0].asString(),f,null),d=this.extractProperty(f,d,1,null,!1)):d=this.getPropertyAsObject(b,f,a);if(null==a)return d;(f=a.equalsIgnoreCase("readable"))&&(a=JV.PropertyManager.isReadableAsString(b)?"String":"JSON");return a.equalsIgnoreCase("String")?null==d?"":d.toString():f?JU.Escape.toReadable(b,d):a.equalsIgnoreCase("JSON")?JS.SV.safeJSON(b,d):d},"~S,~S,~O");k(h,"getArguments",function(a){var b=a.toLowerCase(), +f=-1;if(0<=a.indexOf('"')||0<=a.indexOf("'"))a=this.fixSelectQuotes(a);for(;0<=(f=b.indexOf("[select ",++f));){var d=b.indexOf(" where ",f),c=b.indexOf(" wherein ",f);0e&&(e=b.lastIndexOf("]"));c=b.indexOf("[",f);0<=c&&cd||d>e||(a=a.substring(0,f+1)+a.substring(f+1,e).$replace(".","\u0001").$replace("[","\u0002").$replace("]","\u0003")+a.substring(e))}a=JU.PT.rep(JU.PT.rep(a.$replace("]","\x00").$replace("[","\x00"),"..","\u0004").$replace(".", +"\x00").$replace("\u0001",".").$replace("\u0002","[").$replace("\u0003","]"),"\u0004","..");a=JU.PT.rep(a,"\x00\x00","\x00");a=JU.PT.split(JU.PT.trim(a,"\x00"),"\x00");for(var b=Array(a.length),f=0,g;ff&&(b=this.getArguments(b),f=0);if(f>=b.length)return a;if(!c){c=b=this.compileSelect(b);var e=f;for(b=c.length;ee&&(e+=g.size()),0<=e&&ee&&(e+=3),0<=e&&3>e?this.extractProperty(d,b,--f,null,!0):"";if(n(c,"JU.M4"))return g=c,d=w(-1,[z(-1,[g.m00,g.m01,g.m02,g.m03]),z(-1,[g.m10,g.m11,g.m12,g.m13]),z(-1,[g.m20,g.m21, +g.m22,g.m23]),z(-1,[g.m30,g.m31,g.m32,g.m33])]),0>e&&(e+=4),0<=e&&4>e?this.extractProperty(d,b,--f,null,!0):"";if(JU.AU.isAI(c))return 0>e&&(e+=c.length),0<=e&&ee&&(e+=c.length),0<=e&&ee&&(e+=c.length),0<=e&&ee&&(e+=c.length),0<=e&&ee&&(e+=c.length),0<=e&&e=k;)g=d.get(t),n(g,"JS.SV")&&(j=g,g=j.getMap(),null!=g?g=g.get(m):(g=JU.PT.parseInt(m),j=j.getList(),g=0<=g&&ge?"":0<=d.indexOf(";")?";**":",**";0>e&&(e=c.indexOf(" WHERE "));var c=d.substring(0,0>e?d.length:e).trim(),h=0;c.startsWith("(")&&c.endsWith(")")?c=c.substring(1,c.length-1)+";":c.startsWith("[")&&c.endsWith("]")&&(c=c.substring(1,c.length-1),h=1);0>e?(b[f]=JS.SV.newV(1275082241,w(-1,[this.getKeys(c),null])),b[f].myName=c,b[f].index=h):(c+=g,d=d.substring(e+6+g.length).trim(),d=this.vwr.compileExpr(d), +d=w(-1,[this.getKeys(c),d]),b[f]=JS.SV.newV(1275082241,d),b[f].index=h,b[f].myName=c)}}return null==b?a:b},"~A");k(h,"getKeys",function(a){var b=new JU.Lst;a=JU.PT.rep(JU.PT.rep(a,"**","*"),";",",")+",";for(var f=0,d=-1;0<=(d=a.indexOf(",",d+1));)if(d>f){var c=a.substring(f,d);if(c.equals("*")){if(0==b.size())break}else b.addLast(c),f=d+1}return b},"~S");k(h,"checkMap",function(a,b,f,d,c,e,g){var h=null==d&&a.containsKey(b);if(!h)for(var j=b.contains(";"),k=j?JU.PT.split(b,";"):null,l=f&&!g?b.toLowerCase(): +null,m,y=a.keySet().iterator();y.hasNext()&&((m=y.next())||1);){if(j){for(var p=k.length;0<=--p;b=null)if(b=k[p],0!=b.length){if(g){if(!JU.PT.isLike(m,b))continue;break}l=0<=b.indexOf("*")?b.toLowerCase():null;if(this.checkKey(m,b,l))break}if(null==b)continue}else if(g?!JU.PT.isLike(m,b):!this.checkKey(m,b,l))continue;if(null==d)return m;d.addLast(this.extractProperty(a.get(m),c,e,null,!0));if(!f&&!j)return null}return h?b:null},"java.util.Map,~S,~B,JU.Lst,~O,~N,~B");k(h,"checkKey",function(a,b,f){return a.equalsIgnoreCase(b)|| +null!=f&&JU.PT.isLike(a.toLowerCase(),f)},"~S,~S,~S");h.getPropertyName=k(h,"getPropertyName",function(a){return 0>a?"":JV.PropertyManager.propertyTypes[3*a]},"~N");h.getParamType=k(h,"getParamType",function(a){return 0>a?"":JV.PropertyManager.propertyTypes[3*a+1]},"~N");h.isReadableAsString=k(h,"isReadableAsString",function(a){for(var b=JV.PropertyManager.readableTypes.length;0<=--b;)if(a.equalsIgnoreCase(JV.PropertyManager.readableTypes[b]))return!0;return!1},"~S");k(h,"getPropertyAsObject",function(a, +b,f){if(a.equals("tokenList"))return JS.T.getTokensLike(b);var d=null,c=a.indexOf("#");0a.indexOf("g64")&&0>a.indexOf("base64")&&(null==f||f.equalsIgnoreCase("java")));case 35:return this.vwr.getShapeProperty(24,"info");case 36:return this.vwr.getShapeProperty(24, +"data");case 40:return this.vwr.getNMRCalculation().getInfo(d.toString());case 41:return this.getVariables(d.toString());case 21:return this.vwr.getStatusChanged(d.toString());case 22:return this.vwr;case 38:return this.vwr.getJspecViewProperties(d);case 7:return this.getLigandInfo(this.vwr.getAtomBitSet(d));case 9:return this.getMeasurementInfo();case 29:return this.vwr.getMenu(d.toString());case 23:return this.vwr.sm.messageQueue;case 30:return this.vwr.getMinimizationInfo();case 6:return this.getModelInfo(this.vwr.getAtomBitSet(d)); +case 18:return this.getMoleculeInfo(this.vwr.getAtomBitSet(d));case 34:return this.getMouseInfo();case 11:return this.vwr.tm.getOrientationInfo();case 31:return this.vwr.ms.getPointGroupInfo(this.vwr.getAtomBitSet(d));case 17:return this.getAllPolymerInfo(this.vwr.getAtomBitSet(d));case 39:return this.vwr.getScriptQueueInfo();case 8:return this.getShapeInfo();case 19:return this.vwr.getStateInfo3(d.toString(),0,0);case 12:return JU.M3.newM3(this.vwr.tm.matrixRotate);case 42:return this.getAnnotationInfo(d, +1073741925);case 43:return this.getAnnotationInfo(d,1073742189);case 44:return d=JS.SV.oValue(d),d=n(d,"java.util.Map")?d:null,null==d?null:this.vwr.sm.processService(d)}f=Array(48);for(b=0;48>b;b++)d=JV.PropertyManager.getParamType(b),c=this.getDefaultPropertyParam(b),e=JV.PropertyManager.getPropertyName(b),f[b]=0==e.length||"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;48>b;b++)0d&&0>f?f=d=-1:0>d?d=f:f=d;var e="JPG";0<=a.indexOf("type=")&&(e=JU.PT.getTokens(JU.PT.replaceWithCharacter(a.substring(a.indexOf("type=")+ +5),";,"," "))[0]);c=Array(1);f=this.vwr.getImageAsBytes(e.toUpperCase(),d,f,-1,c);return null!=c[0]?c[0]:b?new JU.BArray(f):JU.Base64.getBase64(f).toString()},"~S,~B");k(h,"getVariables",function(a){return a.toLowerCase().equals("all")?this.vwr.g.getAllVariables():this.vwr.evaluateExpressionAsVariable(a)},"~S");h.getFileInfo=k(h,"getFileInfo",function(a,b){var f=new java.util.Hashtable;if(null==a)return f;var d=null!=b&&0c[0].length||" "!=c[0].charAt(6)||!c[0].substring(0,6).equals(c[0].substring(0,6).toUpperCase()))return f.put("fileHeader",a),f;var e="",g=new JU.SB;d&&(b=b.toUpperCase());for(var h="",j=0;jk.length)){var h=k.substring(0,6).trim(),l=k.substring(7,10).trim();h.equals("REMARK")&&(h+=l);if(!h.equals(e)){if(d&&e.equals(b))return g.toString();d||(f.put(e,g.toString()),g=new JU.SB);e=h}(!d||h.equals(b))&&g.append(k).appendC("\n")}}d||f.put(e,g.toString()); +return d?h.equals(b)?g.toString():"":f},"~O,~S");k(h,"getMoleculeInfo",function(a){a=this.vwr.getAtomBitSet(a);for(var b=this.vwr.ms.getMolecules(),f=new JU.Lst,d=new JU.BS,c=0;cd.indexOf("label")? +d=a+'.label("'+d+'").lines':a.equals("selected")||(d=JU.PT.rep(d,"selected",a.substring(1,a.length-1)));return this.vwr.evaluateExpression(d)},"~S,~S,~B");v(h,"getModelExtract",function(a,b,f,d,c){if(0>a.nextSetBit(0))return"";var e=d.toUpperCase();if(JU.PT.isOneOf(e,";CIF;QCJSON;XSF;PWMAT;"))return this.getModel(e,a,null,null);if(e.equals("PWSLAB"))return this.getModel("PWMAT",a,w(-1,["slab"]),null);if(e.equals("CIFP1"))return this.getModel("CIF",a,w(-1,["P1"]),null);if(e.equals("CML"))return this.getModelCml(a, +2147483647,!0,b,c);if(e.equals("PDB")||e.equals("PQR"))return this.getPdbAtomData(a,null,e.equals("PQR"),b,c);var g=e.equals("V3000"),h=e.equals("SDF");d=e.equals("MOL");for(var j=!b&&e.equals("XYZVIB"),k=e.equals("XYZRN"),l=e.startsWith("XYZ"),m=e.equals("JSON")||e.equals("CD"),e=new JU.SB,y=this.vwr.ms,p=this.vwr.ms.getModelBS(a,!0),q=p.nextSetBit(0),q="2D".equals(this.vwr.ms.am[q].auxiliaryInfo.get("dimension")),n=y.at,r=JU.BSUtil.copy(a),u=a.nextSetBit(0);0<=u;u=a.nextSetBit(u+1))b&&n[u].isDeleted()&& +r.clear(u);if(!j&&r.isEmpty())return"";a=JV.PropertyManager.getCovalentBondsForAtoms(y.bo,y.bondCount,r);n=!0;null!=y.trajectory&&!c&&y.trajectory.selectDisplayed(p);b=b?this.vwr.tm.getRotationQ():null;if(l)this.writeXYZ(e,r,p,b,j,k);else if(c=this.vwr.ms.getFrameTitle(p.nextSetBit(0)),c=null!=c?c.$replace("\n"," "):f?"Jmol Model Kit":JV.FileManager.fixDOSName(this.vwr.fm.getFullPathName(!1)),f=J.api.Interface.getInterface("J.adapter.writers.MOLWriter",this.vwr,"write").setViewer(this.vwr),h){e=new JU.SB; +for(u=p.nextSetBit(0);0<=u&&!(g=JU.BSUtil.copy(r),g.and(y.getModelAtomBitSetIncludingDeleted(u,!1)),a=JV.PropertyManager.getCovalentBondsForAtoms(y.bo,y.bondCount,g),!(n=f.addMolFile(c,u,e,g,a,!1,!1,d,b,q)));u=p.nextSetBit(u+1));}else n=f.addMolFile(c,-1,e,r,a,g,m,d,b,q);return n?e.toString():"ERROR: Too many atoms or bonds -- use V3000 format."},"JU.BS,~B,~B,~S,~B");k(h,"writeXYZ",function(a,b,f,d,c,e){var g=this.vwr.ms,h=g.at;e=JM.LabelToken.compile(this.vwr,e?"%-2e _XYZ_ %4.2[vdw] 1 [%n]%r.%a#%i\n": +"%-2e _XYZ_\n","\x00",null);for(var j=c?JM.LabelToken.compile(this.vwr,"%-2e _XYZ_ %12.5vx %12.5vy %12.5vz\n","\x00",null):null,k=new JU.P3,l=f.nextSetBit(0);0<=l;l=f.nextSetBit(l+1)){var m=JU.BSUtil.copy(b);m.and(g.getModelAtomBitSetIncludingDeleted(l,!1));if(!m.isEmpty()){a.appendI(m.cardinality()).appendC("\n");var n=g.am[l].properties;a.append("Model["+(l+1)+"]: ");if(null!=g.frameTitles[l]&&0d.indexOf("\n"+c+"\n")&&d.append(c).appendC("\n")}1086324744==b&&d.appendC("\n");return d.toString().substring(1)},"~A,~N,JU.BS");v(h,"getModelFileInfo",function(a){for(var b=this.vwr.ms,f=new JU.SB,d=0;d;all;domainInfo;;{visible};validationInfo;;{visible};service;;;CIFInfo;;;modelkitInfo;;data;unitcellInfo;;".split(";")); +h.readableTypes=w(-1," stateinfo extractmodel filecontents fileheader image menu minimizationInfo".split(" "))})})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor, +Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corepymol.js b/config/plugins/visualizations/jmol/static/j2s/core/corepymol.js new file mode 100755 index 000000000000..fb32118b97e6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corepymol.js @@ -0,0 +1,3272 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "JmolSceneGenerator"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.pymol"); +Clazz_load(["java.util.Hashtable", "JU.Lst"], "J.adapter.readers.pymol.PickleReader", ["JU.AU", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.binaryDoc = null; +this.stack = null; +this.marks = null; +this.build = null; +this.memo = null; +this.logging = false; +this.id = 0; +this.markCount = 0; +this.filePt = 0; +this.emptyListPt = 0; +this.thisSection = null; +this.inMovie = false; +this.inNames = false; +this.thisName = null; +this.lastMark = 0; +this.retrieveCount = 0; +this.ipt = 0; +this.aTemp = null; +Clazz_instantialize(this, arguments);}, J.adapter.readers.pymol, "PickleReader", null); +Clazz_prepareFields (c$, function(){ +this.stack = new JU.Lst(); +this.marks = new JU.Lst(); +this.build = new JU.Lst(); +this.memo = new java.util.Hashtable(); +this.aTemp = Clazz_newByteArray (16, 0); +}); +Clazz_makeConstructor(c$, +function(doc, vwr){ +this.binaryDoc = doc; +this.vwr = vwr; +this.stack.ensureCapacity(1000); +}, "javajs.api.GenericBinaryDocument,JV.Viewer"); +Clazz_defineMethod(c$, "log", +function(s){ +this.vwr.log(s + "\0"); +}, "~S"); +Clazz_defineMethod(c$, "getMap", +function(logging){ +this.logging = logging; +var b; +var i; +var mark; +var d; +var o; +var a; +var map; +var l; +this.ipt = 0; +var going = true; +while (going) { +b = this.binaryDoc.readByte(); +this.ipt++; +switch (b) { +case 125: +this.push( new java.util.Hashtable()); +break; +case 97: +o = this.pop(); +(this.peek()).addLast(o); +break; +case 101: +l = this.getObjects(this.getMark()); +if (this.inNames && this.markCount == 2) { +var pt = this.binaryDoc.getPosition(); +var l2 = new JU.Lst(); +l2.addLast(Integer.$valueOf(this.filePt)); +l2.addLast(Integer.$valueOf(pt - this.filePt)); +l.addLast(l2); +}(this.peek()).addAll(l); +break; +case 71: +d = this.binaryDoc.readDouble(); +this.push(Double.$valueOf(d)); +break; +case 74: +i = this.binaryDoc.readIntLE(); +this.push(Integer.$valueOf(i)); +break; +case 75: +i = this.binaryDoc.readByte() & 0xff; +this.push(Integer.$valueOf(i)); +break; +case 77: +i = (this.binaryDoc.readByte() & 0xff | ((this.binaryDoc.readByte() & 0xff) << 8)) & 0xffff; +this.push(Integer.$valueOf(i)); +break; +case 113: +i = this.binaryDoc.readByte(); +this.putMemo(i, false); +break; +case 114: +i = this.binaryDoc.readIntLE(); +this.putMemo(i, true); +break; +case 104: +i = this.binaryDoc.readByte(); +o = this.getMemo(i); +this.push(o == null ? "BINGET" + (++this.id) : o); +break; +case 106: +i = this.binaryDoc.readIntLE(); +o = this.getMemo(i); +this.push(o == null ? "LONG_BINGET" + (++this.id) : o); +break; +case 85: +i = this.binaryDoc.readByte() & 0xff; +a = Clazz_newByteArray (i, 0); +this.binaryDoc.readByteArray(a, 0, i); +if (this.inNames && this.markCount == 3 && this.lastMark == this.stack.size()) { +this.thisName = this.bytesToString(a); +this.filePt = this.emptyListPt; +}this.push(a); +break; +case 84: +i = this.binaryDoc.readIntLE(); +a = Clazz_newByteArray (i, 0); +this.binaryDoc.readByteArray(a, 0, i); +this.push(a); +break; +case 88: +i = this.binaryDoc.readIntLE(); +a = Clazz_newByteArray (i, 0); +this.binaryDoc.readByteArray(a, 0, i); +this.push(a); +break; +case 93: +this.emptyListPt = this.binaryDoc.getPosition() - 1; +this.push( new JU.Lst()); +break; +case 99: +l = new JU.Lst(); +l.addLast("global"); +l.addLast(this.readStringAsBytes()); +l.addLast(this.readStringAsBytes()); +this.push(l); +break; +case 98: +o = this.pop(); +this.build.addLast(o); +break; +case 40: +this.putMark(this.stack.size()); +break; +case 78: +this.push(null); +break; +case 111: +this.push(this.getObjects(this.getMark())); +break; +case 115: +o = this.pop(); +var s = this.bytesToString(this.pop()); +(this.peek()).put(s, o); +break; +case 117: +mark = this.getMark(); +l = this.getObjects(mark); +o = this.peek(); +if (Clazz_instanceOf(o,"JU.Lst")) { +for (i = 0; i < l.size(); i++) { +var oo = l.get(i); +(o).addLast(oo); +} +} else { +map = o; +for (i = l.size(); --i >= 0; ) { +o = l.get(i); +var key = this.bytesToString(l.get(--i)); +map.put(key, o); +} +}break; +case 46: +going = false; +break; +case 116: +this.push(this.getObjects(this.getMark())); +break; +case 76: +var val = String.instantialize(this.readStringAsBytes()); +if (val.endsWith("L")) { +val = val.substring(0, val.length - 1); +}this.push(Long.$valueOf(val)); +break; +case 82: +this.pop(); +break; +case 73: +s = this.bytesToString(this.readStringAsBytes()); +try { +this.push(Integer.$valueOf(Integer.parseInt(s))); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +var ll = Long.parseLong(s); +this.push(Integer.$valueOf((ll & 0xFFFFFFFF))); +} else { +throw e; +} +} +break; +case 41: +this.push( new JU.Lst()); +break; +default: +JU.Logger.error("Pickle reader error: " + b + " " + this.binaryDoc.getPosition()); +} +} +if (logging) this.log(""); +JU.Logger.info("PyMOL Pickle reader cached " + this.memo.size() + " tokens; retrieved " + this.retrieveCount); +map = this.stack.removeItemAt(0); +if (map.size() == 0) for (i = this.stack.size(); --i >= 0; ) { +o = this.stack.get(i--); +a = this.stack.get(i); +map.put(this.bytesToString(a), o); +} +this.memo = null; +return map; +}, "~B"); +Clazz_defineMethod(c$, "bytesToString", +function(o){ +try { +return (JU.AU.isAB(o) ? String.instantialize(o, "UTF-8") : o.toString()); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +return ""; +} else { +throw e; +} +} +}, "~O"); +Clazz_defineMethod(c$, "putMemo", +function(i, doCheck){ +var o = this.peek(); +if (JU.AU.isAB(o)) o = this.bytesToString(o); +if ((typeof(o)=='string')) { +this.memo.put(Integer.$valueOf(i), o); +}}, "~N,~B"); +Clazz_defineMethod(c$, "getMemo", +function(i){ +var o = this.memo.get(Integer.$valueOf(i)); +if (o == null) return o; +this.retrieveCount++; +return o; +}, "~N"); +Clazz_defineMethod(c$, "getObjects", +function(mark){ +var n = this.stack.size() - mark; +var args = new JU.Lst(); +args.ensureCapacity(n); +for (var i = mark; i < this.stack.size(); ++i) { +var oo = this.stack.get(i); +args.addLast(oo); +} +for (var i = this.stack.size(); --i >= mark; ) this.stack.removeItemAt(i); + +return args; +}, "~N"); +Clazz_defineMethod(c$, "readStringAsBytes", +function(){ +var n = 0; +var a = this.aTemp; +while (true) { +var b = this.binaryDoc.readByte(); +if (b == 0xA) break; +if (n >= a.length) a = this.aTemp = JU.AU.arrayCopyByte(a, a.length * 2); +a[n++] = b; +} +return JU.AU.arrayCopyByte(a, n); +}); +Clazz_defineMethod(c$, "putMark", +function(i){ +if (this.logging) this.log("\n " + Integer.toHexString(this.binaryDoc.getPosition()) + " ["); +this.marks.addLast(Integer.$valueOf(this.lastMark = i)); +this.markCount++; +switch (this.markCount) { +case 2: +var o = this.stack.get(i - 2); +if (JU.AU.isAB(o)) { +this.thisSection = this.bytesToString(o); +this.inMovie = "movie".equals(this.thisSection); +this.inNames = "names".equals(this.thisSection); +}break; +default: +break; +} +}, "~N"); +Clazz_defineMethod(c$, "getMark", +function(){ +return this.marks.removeItemAt(--this.markCount).intValue(); +}); +Clazz_defineMethod(c$, "push", +function(o){ +if (this.logging && ((typeof(o)=='string') || Clazz_instanceOf(o, Double) || Clazz_instanceOf(o, Integer))) this.log(((typeof(o)=='string') ? "'" + o + "'" : o) + ", "); +this.stack.addLast(o); +}, "~O"); +Clazz_defineMethod(c$, "peek", +function(){ +return this.stack.get(this.stack.size() - 1); +}); +Clazz_defineMethod(c$, "pop", +function(){ +return this.stack.removeItemAt(this.stack.size() - 1); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "PymolAtomReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.pymol"); +Clazz_load(["java.util.Hashtable"], "J.adapter.readers.pymol.PyMOL", ["JU.Logger"], function(){ +var c$ = Clazz_declareType(J.adapter.readers.pymol, "PyMOL", null); +c$.getRGB = Clazz_defineMethod(c$, "getRGB", +function(color){ +if (J.adapter.readers.pymol.PyMOL.moreColors != null) { +var key = Integer.$valueOf(color); +var c = J.adapter.readers.pymol.PyMOL.moreColors.get(key); +if (c != null) return c.intValue(); +}if (color < J.adapter.readers.pymol.PyMOL.colors.length) return (J.adapter.readers.pymol.PyMOL.colors[color]); +return 0; +}, "~N"); +c$.addColor = Clazz_defineMethod(c$, "addColor", +function(id, value){ +J.adapter.readers.pymol.PyMOL.moreColors.put(id, Integer.$valueOf(value)); +}, "Integer,~N"); +c$.getDefaultSetting = Clazz_defineMethod(c$, "getDefaultSetting", +function(i, pymolVersion){ +switch (i) { +case 173: +case 236: +case 570: +case 235: +case 526: +case 210: +case 376: +case 144: +case 574: +case 146: +case 378: +case 530: +case 531: +case 532: +case 156: +return -1; +case 327: +case 569: +case 155: +case 90: +case 448: +case 214: +case 194: +case 193: +case 84: +case 88: +case 111: +case 529: +case 19: +return 1; +case 172: +case 571: +case 666: +case 524: +case 279: +case 198: +case 138: +case 6: +case 180: +case 143: +case 338: +case 49: +case 64: +case 441: +case 118: +case 581: +case 749: +case 23: +case 20: +case 237: +case 203: +case 344: +return 0; +case 92: +return 0.2; +case 96: +return 1.4; +case 65: +return 0.25; +case 192: +return 0.45; +case 453: +return 14; +case 66: +return -6; +case 328: +return 5; +case 213: +case 382: +case 431: +return 2; +case 361: +case 380: +return 4; +case 377: +return 0.4; +case 379: +return 0.6; +case 381: +return 1.5; +case 103: +return 0.5; +case 4: +return 1.4; +case 107: +return 2.5; +case 44: +return 1.49; +case 106: +return 3; +case 152: +return 20; +case 550: +return 30; +case 21: +return 0.25; +case 100: +return 1.2; +case 101: +return 0.25; +default: +JU.Logger.error("PyMOL " + pymolVersion + " default float setting not found: " + i); +return 0; +} +}, "~N,~N"); +c$.getDefaultSettingPt = Clazz_defineMethod(c$, "getDefaultSettingPt", +function(i, pymolVersion, pt){ +switch (i) { +case 471: +pt.set(0, 0, 0.75); +break; +default: +JU.Logger.error("PyMOL " + pymolVersion + " default point setting not found: " + i); +break; +} +return pt; +}, "~N,~N,JU.P3"); +c$.getDefaultSettingS = Clazz_defineMethod(c$, "getDefaultSettingS", +function(i, pymolVersion){ +switch (i) { +case 342: +break; +default: +JU.Logger.info("PyMOL " + pymolVersion + " does not have String setting " + i); +break; +} +return ""; +}, "~N,~N"); +c$.getVArray = Clazz_defineMethod(c$, "getVArray", +function(version){ +var va = null; +var varray = null; +switch (version) { +case 176: +va = J.adapter.readers.pymol.PyMOL.v176; +break; +case 177: +va = J.adapter.readers.pymol.PyMOL.v177; +break; +case 181: +va = J.adapter.readers.pymol.PyMOL.v181; +break; +} +if (va != null) { +varray = Clazz_newIntArray (60, 0); +for (var i = 0; i < va.length; ) varray[va[i++]] = va[i++]; + +}return varray; +}, "~N"); +c$.getVArrayB = Clazz_defineMethod(c$, "getVArrayB", +function(version){ +var va = null; +var varray = null; +switch (version) { +case 176: +va = J.adapter.readers.pymol.PyMOL.v176b; +break; +case 177: +va = J.adapter.readers.pymol.PyMOL.v177b; +break; +case 181: +va = J.adapter.readers.pymol.PyMOL.v181b; +break; +} +if (va != null) { +varray = Clazz_newIntArray (10, 0); +for (var i = 0; i < va.length; ) varray[va[i++]] = va[i++]; + +}return varray; +}, "~N"); +c$.REP_LIST = Clazz_newArray(-1, ["sticks", "spheres", "surface", "labels", "nb_spheres", "cartoon", "ribbon", "lines", "mesh", "dots", "dashes", "nonbonded", "cell", "cgo", "callback", "extent", "slice", "angles", "dihedrals", "ellipsoid", "volume"]); +c$.FLAG_exfoliate = 0x01000000; +c$.FLAG_ignore = 0x02000000; +c$.FLAG_no_smooth = 0x04000000; +c$.FLAG_polymer = 0x08000000; +c$.FLAG_solvent = 0x10000000; +c$.FLAG_organic = 0x20000000; +c$.FLAG_inorganic = 0x40000000; +c$.FLAG_NOSURFACE = J.adapter.readers.pymol.PyMOL.FLAG_ignore | J.adapter.readers.pymol.PyMOL.FLAG_exfoliate; +c$.colors = Clazz_newIntArray(-1, [0xFFFFFFFF, 0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFFFF0000, 0xFF00FFFF, 0xFFFFFF00, 0xFFFFFF00, 0xFFFF00FF, 0xFFFF9999, 0xFF7FFF7F, 0xFF7F7FFF, 0xFFFF007F, 0xFFFF7F00, 0xFF7FFF00, 0xFF00FF7F, 0xFF7F00FF, 0xFF007FFF, 0xFFC4B200, 0xFFBF00BF, 0xFF00BFBF, 0xFF993333, 0xFF339933, 0xFF3F3FA5, 0xFF7F7F7F, 0xFF7F7F7F, 0xFF33FF33, 0xFF3333FF, 0xFFFF4C4C, 0xFFE5E5E5, 0xFFFFB233, 0xFFE5C53F, 0xFFFF3333, 0xFF33FF33, 0xFF4C4CFF, 0xFFFFFF33, 0xFFFFDD5E, 0xFFFF8C26, 0xFF1919FF, 0xFF3319E5, 0xFF4C19CC, 0xFF6619B2, 0xFF7F1999, 0xFF99197F, 0xFFB21966, 0xFFCC194C, 0xFFE51933, 0xFFFF1919, 0xFFFFA5D8, 0xFFB12121, 0xFF8D381C, 0xFFA5512B, 0xFFFCD1A5, 0xFFFF7FFF, 0xFF000000, 0xFF020202, 0xFF050505, 0xFF070707, 0xFF0A0A0A, 0xFF0C0C0C, 0xFF0F0F0F, 0xFF121212, 0xFF141414, 0xFF171717, 0xFF191919, 0xFF1C1C1C, 0xFF1E1E1E, 0xFF212121, 0xFF242424, 0xFF262626, 0xFF292929, 0xFF2B2B2B, 0xFF2E2E2E, 0xFF303030, 0xFF333333, 0xFF363636, 0xFF383838, 0xFF3B3B3B, 0xFF3D3D3D, 0xFF404040, 0xFF424242, 0xFF454545, 0xFF484848, 0xFF4A4A4A, 0xFF4D4D4D, 0xFF4F4F4F, 0xFF525252, 0xFF555555, 0xFF575757, 0xFF5A5A5A, 0xFF5C5C5C, 0xFF5F5F5F, 0xFF616161, 0xFF646464, 0xFF676767, 0xFF696969, 0xFF6C6C6C, 0xFF6E6E6E, 0xFF717171, 0xFF737373, 0xFF767676, 0xFF797979, 0xFF7B7B7B, 0xFF7E7E7E, 0xFF808080, 0xFF838383, 0xFF858585, 0xFF888888, 0xFF8B8B8B, 0xFF8D8D8D, 0xFF909090, 0xFF929292, 0xFF959595, 0xFF979797, 0xFF9A9A9A, 0xFF9D9D9D, 0xFF9F9F9F, 0xFFA2A2A2, 0xFFA4A4A4, 0xFFA7A7A7, 0xFFAAAAAA, 0xFFACACAC, 0xFFAFAFAF, 0xFFB1B1B1, 0xFFB4B4B4, 0xFFB6B6B6, 0xFFB9B9B9, 0xFFBCBCBC, 0xFFBEBEBE, 0xFFC1C1C1, 0xFFC3C3C3, 0xFFC6C6C6, 0xFFC8C8C8, 0xFFCBCBCB, 0xFFCECECE, 0xFFD0D0D0, 0xFFD3D3D3, 0xFFD5D5D5, 0xFFD8D8D8, 0xFFDADADA, 0xFFDDDDDD, 0xFFE0E0E0, 0xFFE2E2E2, 0xFFE5E5E5, 0xFFE7E7E7, 0xFFEAEAEA, 0xFFECECEC, 0xFFEFEFEF, 0xFFF2F2F2, 0xFFF4F4F4, 0xFFF7F7F7, 0xFFF9F9F9, 0xFFFCFCFC, 0xFFFFFFFF, 0xFFFF33CC, 0xFFFF00FF, 0xFFFD00FF, 0xFFFB00FF, 0xFFFA00FF, 0xFFF800FF, 0xFFF700FF, 0xFFF500FF, 0xFFF400FF, 0xFFF200FF, 0xFFF100FF, 0xFFEF00FF, 0xFFEE00FF, 0xFFEC00FF, 0xFFEB00FF, 0xFFE900FF, 0xFFE800FF, 0xFFE600FF, 0xFFE400FF, 0xFFE300FF, 0xFFE100FF, 0xFFE000FF, 0xFFDE00FF, 0xFFDD00FF, 0xFFDB00FF, 0xFFDA00FF, 0xFFD800FF, 0xFFD700FF, 0xFFD500FF, 0xFFD400FF, 0xFFD200FF, 0xFFD100FF, 0xFFCF00FF, 0xFFCE00FF, 0xFFCC00FF, 0xFFCA00FF, 0xFFC900FF, 0xFFC700FF, 0xFFC600FF, 0xFFC400FF, 0xFFC300FF, 0xFFC100FF, 0xFFC000FF, 0xFFBE00FF, 0xFFBD00FF, 0xFFBB00FF, 0xFFBA00FF, 0xFFB800FF, 0xFFB700FF, 0xFFB500FF, 0xFFB400FF, 0xFFB200FF, 0xFFB000FF, 0xFFAF00FF, 0xFFAD00FF, 0xFFAC00FF, 0xFFAA00FF, 0xFFA900FF, 0xFFA700FF, 0xFFA600FF, 0xFFA400FF, 0xFFA300FF, 0xFFA100FF, 0xFFA000FF, 0xFF9E00FF, 0xFF9D00FF, 0xFF9B00FF, 0xFF9A00FF, 0xFF9800FF, 0xFF9600FF, 0xFF9500FF, 0xFF9300FF, 0xFF9200FF, 0xFF9000FF, 0xFF8F00FF, 0xFF8D00FF, 0xFF8C00FF, 0xFF8A00FF, 0xFF8900FF, 0xFF8700FF, 0xFF8600FF, 0xFF8400FF, 0xFF8300FF, 0xFF8100FF, 0xFF8000FF, 0xFF7E00FF, 0xFF7C00FF, 0xFF7B00FF, 0xFF7900FF, 0xFF7800FF, 0xFF7600FF, 0xFF7500FF, 0xFF7300FF, 0xFF7200FF, 0xFF7000FF, 0xFF6F00FF, 0xFF6D00FF, 0xFF6C00FF, 0xFF6A00FF, 0xFF6900FF, 0xFF6700FF, 0xFF6600FF, 0xFF6400FF, 0xFF6200FF, 0xFF6100FF, 0xFF5F00FF, 0xFF5E00FF, 0xFF5C00FF, 0xFF5B00FF, 0xFF5900FF, 0xFF5800FF, 0xFF5600FF, 0xFF5500FF, 0xFF5300FF, 0xFF5200FF, 0xFF5000FF, 0xFF4F00FF, 0xFF4D00FF, 0xFF4B00FF, 0xFF4A00FF, 0xFF4800FF, 0xFF4700FF, 0xFF4500FF, 0xFF4400FF, 0xFF4200FF, 0xFF4100FF, 0xFF3F00FF, 0xFF3E00FF, 0xFF3C00FF, 0xFF3B00FF, 0xFF3900FF, 0xFF3800FF, 0xFF3600FF, 0xFF3500FF, 0xFF3300FF, 0xFF3100FF, 0xFF3000FF, 0xFF2E00FF, 0xFF2D00FF, 0xFF2B00FF, 0xFF2A00FF, 0xFF2800FF, 0xFF2700FF, 0xFF2500FF, 0xFF2400FF, 0xFF2200FF, 0xFF2100FF, 0xFF1F00FF, 0xFF1E00FF, 0xFF1C00FF, 0xFF1B00FF, 0xFF1900FF, 0xFF1700FF, 0xFF1600FF, 0xFF1400FF, 0xFF1300FF, 0xFF1100FF, 0xFF1000FF, 0xFF0E00FF, 0xFF0D00FF, 0xFF0B00FF, 0xFF0A00FF, 0xFF0800FF, 0xFF0700FF, 0xFF0500FF, 0xFF0400FF, 0xFF0200FF, 0xFF0100FF, 0xFF0000FF, 0xFF0002FF, 0xFF0003FF, 0xFF0005FF, 0xFF0006FF, 0xFF0008FF, 0xFF0009FF, 0xFF000BFF, 0xFF000CFF, 0xFF000EFF, 0xFF000FFF, 0xFF0011FF, 0xFF0012FF, 0xFF0014FF, 0xFF0015FF, 0xFF0017FF, 0xFF0018FF, 0xFF001AFF, 0xFF001CFF, 0xFF001DFF, 0xFF001FFF, 0xFF0020FF, 0xFF0022FF, 0xFF0023FF, 0xFF0025FF, 0xFF0026FF, 0xFF0028FF, 0xFF0029FF, 0xFF002BFF, 0xFF002CFF, 0xFF002EFF, 0xFF002FFF, 0xFF0031FF, 0xFF0032FF, 0xFF0034FF, 0xFF0036FF, 0xFF0037FF, 0xFF0039FF, 0xFF003AFF, 0xFF003CFF, 0xFF003DFF, 0xFF003FFF, 0xFF0040FF, 0xFF0042FF, 0xFF0043FF, 0xFF0045FF, 0xFF0046FF, 0xFF0048FF, 0xFF0049FF, 0xFF004BFF, 0xFF004DFF, 0xFF004EFF, 0xFF0050FF, 0xFF0051FF, 0xFF0053FF, 0xFF0054FF, 0xFF0056FF, 0xFF0057FF, 0xFF0059FF, 0xFF005AFF, 0xFF005CFF, 0xFF005DFF, 0xFF005FFF, 0xFF0060FF, 0xFF0062FF, 0xFF0063FF, 0xFF0065FF, 0xFF0067FF, 0xFF0068FF, 0xFF006AFF, 0xFF006BFF, 0xFF006DFF, 0xFF006EFF, 0xFF0070FF, 0xFF0071FF, 0xFF0073FF, 0xFF0074FF, 0xFF0076FF, 0xFF0077FF, 0xFF0079FF, 0xFF007AFF, 0xFF007CFF, 0xFF007DFF, 0xFF007FFF, 0xFF0081FF, 0xFF0082FF, 0xFF0084FF, 0xFF0085FF, 0xFF0087FF, 0xFF0088FF, 0xFF008AFF, 0xFF008BFF, 0xFF008DFF, 0xFF008EFF, 0xFF0090FF, 0xFF0091FF, 0xFF0093FF, 0xFF0094FF, 0xFF0096FF, 0xFF0097FF, 0xFF0099FF, 0xFF009BFF, 0xFF009CFF, 0xFF009EFF, 0xFF009FFF, 0xFF00A1FF, 0xFF00A2FF, 0xFF00A4FF, 0xFF00A5FF, 0xFF00A7FF, 0xFF00A8FF, 0xFF00AAFF, 0xFF00ABFF, 0xFF00ADFF, 0xFF00AEFF, 0xFF00B0FF, 0xFF00B1FF, 0xFF00B3FF, 0xFF00B5FF, 0xFF00B6FF, 0xFF00B8FF, 0xFF00B9FF, 0xFF00BBFF, 0xFF00BCFF, 0xFF00BEFF, 0xFF00BFFF, 0xFF00C1FF, 0xFF00C2FF, 0xFF00C4FF, 0xFF00C5FF, 0xFF00C7FF, 0xFF00C8FF, 0xFF00CAFF, 0xFF00CBFF, 0xFF00CDFF, 0xFF00CFFF, 0xFF00D0FF, 0xFF00D2FF, 0xFF00D3FF, 0xFF00D5FF, 0xFF00D6FF, 0xFF00D8FF, 0xFF00D9FF, 0xFF00DBFF, 0xFF00DCFF, 0xFF00DEFF, 0xFF00DFFF, 0xFF00E1FF, 0xFF00E2FF, 0xFF00E4FF, 0xFF00E6FF, 0xFF00E7FF, 0xFF00E9FF, 0xFF00EAFF, 0xFF00ECFF, 0xFF00EDFF, 0xFF00EFFF, 0xFF00F0FF, 0xFF00F2FF, 0xFF00F3FF, 0xFF00F5FF, 0xFF00F6FF, 0xFF00F8FF, 0xFF00F9FF, 0xFF00FBFF, 0xFF00FCFF, 0xFF00FEFF, 0xFF00FFFD, 0xFF00FFFC, 0xFF00FFFA, 0xFF00FFF9, 0xFF00FFF7, 0xFF00FFF6, 0xFF00FFF4, 0xFF00FFF3, 0xFF00FFF1, 0xFF00FFF0, 0xFF00FFEE, 0xFF00FFED, 0xFF00FFEB, 0xFF00FFEA, 0xFF00FFE8, 0xFF00FFE7, 0xFF00FFE5, 0xFF00FFE3, 0xFF00FFE2, 0xFF00FFE0, 0xFF00FFDF, 0xFF00FFDD, 0xFF00FFDC, 0xFF00FFDA, 0xFF00FFD9, 0xFF00FFD7, 0xFF00FFD6, 0xFF00FFD4, 0xFF00FFD3, 0xFF00FFD1, 0xFF00FFD0, 0xFF00FFCE, 0xFF00FFCD, 0xFF00FFCB, 0xFF00FFC9, 0xFF00FFC8, 0xFF00FFC6, 0xFF00FFC5, 0xFF00FFC3, 0xFF00FFC2, 0xFF00FFC0, 0xFF00FFBF, 0xFF00FFBD, 0xFF00FFBC, 0xFF00FFBA, 0xFF00FFB9, 0xFF00FFB7, 0xFF00FFB6, 0xFF00FFB4, 0xFF00FFB3, 0xFF00FFB1, 0xFF00FFAF, 0xFF00FFAE, 0xFF00FFAC, 0xFF00FFAB, 0xFF00FFA9, 0xFF00FFA8, 0xFF00FFA6, 0xFF00FFA5, 0xFF00FFA3, 0xFF00FFA2, 0xFF00FFA0, 0xFF00FF9F, 0xFF00FF9D, 0xFF00FF9C, 0xFF00FF9A, 0xFF00FF99, 0xFF00FF97, 0xFF00FF95, 0xFF00FF94, 0xFF00FF92, 0xFF00FF91, 0xFF00FF8F, 0xFF00FF8E, 0xFF00FF8C, 0xFF00FF8B, 0xFF00FF89, 0xFF00FF88, 0xFF00FF86, 0xFF00FF85, 0xFF00FF83, 0xFF00FF82, 0xFF00FF80, 0xFF00FF7E, 0xFF00FF7D, 0xFF00FF7B, 0xFF00FF7A, 0xFF00FF78, 0xFF00FF77, 0xFF00FF75, 0xFF00FF74, 0xFF00FF72, 0xFF00FF71, 0xFF00FF6F, 0xFF00FF6E, 0xFF00FF6C, 0xFF00FF6B, 0xFF00FF69, 0xFF00FF68, 0xFF00FF66, 0xFF00FF64, 0xFF00FF63, 0xFF00FF61, 0xFF00FF60, 0xFF00FF5E, 0xFF00FF5D, 0xFF00FF5B, 0xFF00FF5A, 0xFF00FF58, 0xFF00FF57, 0xFF00FF55, 0xFF00FF54, 0xFF00FF52, 0xFF00FF51, 0xFF00FF4F, 0xFF00FF4E, 0xFF00FF4C, 0xFF00FF4A, 0xFF00FF49, 0xFF00FF47, 0xFF00FF46, 0xFF00FF44, 0xFF00FF43, 0xFF00FF41, 0xFF00FF40, 0xFF00FF3E, 0xFF00FF3D, 0xFF00FF3B, 0xFF00FF3A, 0xFF00FF38, 0xFF00FF37, 0xFF00FF35, 0xFF00FF34, 0xFF00FF32, 0xFF00FF30, 0xFF00FF2F, 0xFF00FF2D, 0xFF00FF2C, 0xFF00FF2A, 0xFF00FF29, 0xFF00FF27, 0xFF00FF26, 0xFF00FF24, 0xFF00FF23, 0xFF00FF21, 0xFF00FF20, 0xFF00FF1E, 0xFF00FF1D, 0xFF00FF1B, 0xFF00FF1A, 0xFF00FF18, 0xFF00FF16, 0xFF00FF15, 0xFF00FF13, 0xFF00FF12, 0xFF00FF10, 0xFF00FF0F, 0xFF00FF0D, 0xFF00FF0C, 0xFF00FF0A, 0xFF00FF09, 0xFF00FF07, 0xFF00FF06, 0xFF00FF04, 0xFF00FF03, 0xFF00FF01, 0xFF00FF00, 0xFF01FF00, 0xFF03FF00, 0xFF04FF00, 0xFF06FF00, 0xFF07FF00, 0xFF09FF00, 0xFF0AFF00, 0xFF0CFF00, 0xFF0DFF00, 0xFF0FFF00, 0xFF10FF00, 0xFF12FF00, 0xFF13FF00, 0xFF15FF00, 0xFF16FF00, 0xFF18FF00, 0xFF1AFF00, 0xFF1BFF00, 0xFF1DFF00, 0xFF1EFF00, 0xFF20FF00, 0xFF21FF00, 0xFF23FF00, 0xFF24FF00, 0xFF26FF00, 0xFF27FF00, 0xFF29FF00, 0xFF2AFF00, 0xFF2CFF00, 0xFF2DFF00, 0xFF2FFF00, 0xFF30FF00, 0xFF32FF00, 0xFF34FF00, 0xFF35FF00, 0xFF37FF00, 0xFF38FF00, 0xFF3AFF00, 0xFF3BFF00, 0xFF3DFF00, 0xFF3EFF00, 0xFF40FF00, 0xFF41FF00, 0xFF43FF00, 0xFF44FF00, 0xFF46FF00, 0xFF47FF00, 0xFF49FF00, 0xFF4AFF00, 0xFF4CFF00, 0xFF4EFF00, 0xFF4FFF00, 0xFF51FF00, 0xFF52FF00, 0xFF54FF00, 0xFF55FF00, 0xFF57FF00, 0xFF58FF00, 0xFF5AFF00, 0xFF5BFF00, 0xFF5DFF00, 0xFF5EFF00, 0xFF60FF00, 0xFF61FF00, 0xFF63FF00, 0xFF64FF00, 0xFF66FF00, 0xFF68FF00, 0xFF69FF00, 0xFF6BFF00, 0xFF6CFF00, 0xFF6EFF00, 0xFF6FFF00, 0xFF71FF00, 0xFF72FF00, 0xFF74FF00, 0xFF75FF00, 0xFF77FF00, 0xFF78FF00, 0xFF7AFF00, 0xFF7BFF00, 0xFF7DFF00, 0xFF7EFF00, 0xFF80FF00, 0xFF82FF00, 0xFF83FF00, 0xFF85FF00, 0xFF86FF00, 0xFF88FF00, 0xFF89FF00, 0xFF8BFF00, 0xFF8CFF00, 0xFF8EFF00, 0xFF8FFF00, 0xFF91FF00, 0xFF92FF00, 0xFF94FF00, 0xFF95FF00, 0xFF97FF00, 0xFF98FF00, 0xFF9AFF00, 0xFF9CFF00, 0xFF9DFF00, 0xFF9FFF00, 0xFFA0FF00, 0xFFA2FF00, 0xFFA3FF00, 0xFFA5FF00, 0xFFA6FF00, 0xFFA8FF00, 0xFFA9FF00, 0xFFABFF00, 0xFFACFF00, 0xFFAEFF00, 0xFFAFFF00, 0xFFB1FF00, 0xFFB3FF00, 0xFFB4FF00, 0xFFB6FF00, 0xFFB7FF00, 0xFFB9FF00, 0xFFBAFF00, 0xFFBCFF00, 0xFFBDFF00, 0xFFBFFF00, 0xFFC0FF00, 0xFFC2FF00, 0xFFC3FF00, 0xFFC5FF00, 0xFFC6FF00, 0xFFC8FF00, 0xFFC9FF00, 0xFFCBFF00, 0xFFCDFF00, 0xFFCEFF00, 0xFFD0FF00, 0xFFD1FF00, 0xFFD3FF00, 0xFFD4FF00, 0xFFD6FF00, 0xFFD7FF00, 0xFFD9FF00, 0xFFDAFF00, 0xFFDCFF00, 0xFFDDFF00, 0xFFDFFF00, 0xFFE0FF00, 0xFFE2FF00, 0xFFE3FF00, 0xFFE5FF00, 0xFFE7FF00, 0xFFE8FF00, 0xFFEAFF00, 0xFFEBFF00, 0xFFEDFF00, 0xFFEEFF00, 0xFFF0FF00, 0xFFF1FF00, 0xFFF3FF00, 0xFFF4FF00, 0xFFF6FF00, 0xFFF7FF00, 0xFFF9FF00, 0xFFFAFF00, 0xFFFCFF00, 0xFFFDFF00, 0xFFFFFE00, 0xFFFFFC00, 0xFFFFFB00, 0xFFFFF900, 0xFFFFF800, 0xFFFFF600, 0xFFFFF500, 0xFFFFF300, 0xFFFFF200, 0xFFFFF000, 0xFFFFEF00, 0xFFFFED00, 0xFFFFEC00, 0xFFFFEA00, 0xFFFFE900, 0xFFFFE700, 0xFFFFE600, 0xFFFFE400, 0xFFFFE200, 0xFFFFE100, 0xFFFFDF00, 0xFFFFDE00, 0xFFFFDC00, 0xFFFFDB00, 0xFFFFD900, 0xFFFFD800, 0xFFFFD600, 0xFFFFD500, 0xFFFFD300, 0xFFFFD200, 0xFFFFD000, 0xFFFFCF00, 0xFFFFCD00, 0xFFFFCC00, 0xFFFFCA00, 0xFFFFC800, 0xFFFFC700, 0xFFFFC500, 0xFFFFC400, 0xFFFFC200, 0xFFFFC100, 0xFFFFBF00, 0xFFFFBE00, 0xFFFFBC00, 0xFFFFBB00, 0xFFFFB900, 0xFFFFB800, 0xFFFFB600, 0xFFFFB500, 0xFFFFB300, 0xFFFFB100, 0xFFFFB000, 0xFFFFAE00, 0xFFFFAD00, 0xFFFFAB00, 0xFFFFAA00, 0xFFFFA800, 0xFFFFA700, 0xFFFFA500, 0xFFFFA400, 0xFFFFA200, 0xFFFFA100, 0xFFFF9F00, 0xFFFF9E00, 0xFFFF9C00, 0xFFFF9B00, 0xFFFF9900, 0xFFFF9700, 0xFFFF9600, 0xFFFF9400, 0xFFFF9300, 0xFFFF9100, 0xFFFF9000, 0xFFFF8E00, 0xFFFF8D00, 0xFFFF8B00, 0xFFFF8A00, 0xFFFF8800, 0xFFFF8700, 0xFFFF8500, 0xFFFF8400, 0xFFFF8200, 0xFFFF8100, 0xFFFF7F00, 0xFFFF7D00, 0xFFFF7C00, 0xFFFF7A00, 0xFFFF7900, 0xFFFF7700, 0xFFFF7600, 0xFFFF7400, 0xFFFF7300, 0xFFFF7100, 0xFFFF7000, 0xFFFF6E00, 0xFFFF6D00, 0xFFFF6B00, 0xFFFF6A00, 0xFFFF6800, 0xFFFF6700, 0xFFFF6500, 0xFFFF6300, 0xFFFF6200, 0xFFFF6000, 0xFFFF5F00, 0xFFFF5D00, 0xFFFF5C00, 0xFFFF5A00, 0xFFFF5900, 0xFFFF5700, 0xFFFF5600, 0xFFFF5400, 0xFFFF5300, 0xFFFF5100, 0xFFFF5000, 0xFFFF4E00, 0xFFFF4D00, 0xFFFF4B00, 0xFFFF4900, 0xFFFF4800, 0xFFFF4600, 0xFFFF4500, 0xFFFF4300, 0xFFFF4200, 0xFFFF4000, 0xFFFF3F00, 0xFFFF3D00, 0xFFFF3C00, 0xFFFF3A00, 0xFFFF3900, 0xFFFF3700, 0xFFFF3600, 0xFFFF3400, 0xFFFF3300, 0xFFFF3100, 0xFFFF2F00, 0xFFFF2E00, 0xFFFF2C00, 0xFFFF2B00, 0xFFFF2900, 0xFFFF2800, 0xFFFF2600, 0xFFFF2500, 0xFFFF2300, 0xFFFF2200, 0xFFFF2000, 0xFFFF1F00, 0xFFFF1D00, 0xFFFF1C00, 0xFFFF1A00, 0xFFFF1800, 0xFFFF1700, 0xFFFF1500, 0xFFFF1400, 0xFFFF1200, 0xFFFF1100, 0xFFFF0F00, 0xFFFF0E00, 0xFFFF0C00, 0xFFFF0B00, 0xFFFF0900, 0xFFFF0800, 0xFFFF0600, 0xFFFF0500, 0xFFFF0300, 0xFFFF0200, 0xFFFF0000, 0xFFFF0001, 0xFFFF0002, 0xFFFF0004, 0xFFFF0005, 0xFFFF0007, 0xFFFF0008, 0xFFFF000A, 0xFFFF000B, 0xFFFF000D, 0xFFFF000E, 0xFFFF0010, 0xFFFF0011, 0xFFFF0013, 0xFFFF0014, 0xFFFF0016, 0xFFFF0017, 0xFFFF0019, 0xFFFF001B, 0xFFFF001C, 0xFFFF001E, 0xFFFF001F, 0xFFFF0021, 0xFFFF0022, 0xFFFF0024, 0xFFFF0025, 0xFFFF0027, 0xFFFF0028, 0xFFFF002A, 0xFFFF002B, 0xFFFF002D, 0xFFFF002E, 0xFFFF0030, 0xFFFF0031, 0xFFFF0033, 0xFFFF0035, 0xFFFF0036, 0xFFFF0038, 0xFFFF0039, 0xFFFF003B, 0xFFFF003C, 0xFFFF003E, 0xFFFF003F, 0xFFFF0041, 0xFFFF0042, 0xFFFF0044, 0xFFFF0045, 0xFFFF0047, 0xFFFF0048, 0xFFFF004A, 0xFFFF004B, 0xFFFF004D, 0xFFFF004F, 0xFFFF0050, 0xFFFF0052, 0xFFFF0053, 0xFFFF0055, 0xFFFF0056, 0xFFFF0058, 0xFFFF0059, 0xFFFF005B, 0xFFFF005C, 0xFFFF005E, 0xFFFF005F, 0xFFFF0061, 0xFFFF0062, 0xFFFF0064, 0xFFFF0065, 0xFFFF0067, 0xFFFF0069, 0xFFFF006A, 0xFFFF006C, 0xFFFF006D, 0xFFFF006F, 0xFFFF0070, 0xFFFF0072, 0xFFFF0073, 0xFFFF0075, 0xFFFF0076, 0xFFFF0078, 0xFFFF0079, 0xFFFF007B, 0xFFFF007C, 0xFFFF007E, 0xFFFF0080, 0xFFFF0081, 0xFFFF0083, 0xFFFF0084, 0xFFFF0086, 0xFFFF0087, 0xFFFF0089, 0xFFFF008A, 0xFFFF008C, 0xFFFF008D, 0xFFFF008F, 0xFFFF0090, 0xFFFF0092, 0xFFFF0093, 0xFFFF0095, 0xFFFF0096, 0xFFFF0098, 0xFFFF009A, 0xFFFF009B, 0xFFFF009D, 0xFFFF009E, 0xFFFF00A0, 0xFFFF00A1, 0xFFFF00A3, 0xFFFF00A4, 0xFFFF00A6, 0xFFFF00A7, 0xFFFF00A9, 0xFFFF00AA, 0xFFFF00AC, 0xFFFF00AD, 0xFFFF00AF, 0xFFFF00B0, 0xFFFF00B2, 0xFFFF00B4, 0xFFFF00B5, 0xFFFF00B7, 0xFFFF00B8, 0xFFFF00BA, 0xFFFF00BB, 0xFFFF00BD, 0xFFFF00BE, 0xFFFF00C0, 0xFFFF00C1, 0xFFFF00C3, 0xFFFF00C4, 0xFFFF00C6, 0xFFFF00C7, 0xFFFF00C9, 0xFFFF00CA, 0xFFFF00CC, 0xFFFF00CE, 0xFFFF00CF, 0xFFFF00D1, 0xFFFF00D2, 0xFFFF00D4, 0xFFFF00D5, 0xFFFF00D7, 0xFFFF00D8, 0xFFFF00DA, 0xFFFF00DB, 0xFFFF00DD, 0xFFFF00DE, 0xFFFF00E0, 0xFFFF00E1, 0xFFFF00E3, 0xFFFF00E4, 0xFFFF00E6, 0xFFFF00E8, 0xFFFF00E9, 0xFFFF00EB, 0xFFFF00EC, 0xFFFF00EE, 0xFFFF00EF, 0xFFFF00F1, 0xFFFF00F2, 0xFFFF00F4, 0xFFFF00F5, 0xFFFF00F7, 0xFFFF00F8, 0xFFFF00FA, 0xFFFF00FB, 0xFFFF00FD, 0xFFFFFF00, 0xFFFDFF00, 0xFFFBFF00, 0xFFFAFF00, 0xFFF8FF00, 0xFFF7FF00, 0xFFF5FF00, 0xFFF4FF00, 0xFFF2FF00, 0xFFF1FF00, 0xFFEFFF00, 0xFFEEFF00, 0xFFECFF00, 0xFFEBFF00, 0xFFE9FF00, 0xFFE8FF00, 0xFFE6FF00, 0xFFE4FF00, 0xFFE3FF00, 0xFFE1FF00, 0xFFE0FF00, 0xFFDEFF00, 0xFFDDFF00, 0xFFDBFF00, 0xFFDAFF00, 0xFFD8FF00, 0xFFD7FF00, 0xFFD5FF00, 0xFFD4FF00, 0xFFD2FF00, 0xFFD1FF00, 0xFFCFFF00, 0xFFCEFF00, 0xFFCCFF00, 0xFFCAFF00, 0xFFC9FF00, 0xFFC7FF00, 0xFFC6FF00, 0xFFC4FF00, 0xFFC3FF00, 0xFFC1FF00, 0xFFC0FF00, 0xFFBEFF00, 0xFFBDFF00, 0xFFBBFF00, 0xFFBAFF00, 0xFFB8FF00, 0xFFB7FF00, 0xFFB5FF00, 0xFFB4FF00, 0xFFB2FF00, 0xFFB0FF00, 0xFFAFFF00, 0xFFADFF00, 0xFFACFF00, 0xFFAAFF00, 0xFFA9FF00, 0xFFA7FF00, 0xFFA6FF00, 0xFFA4FF00, 0xFFA3FF00, 0xFFA1FF00, 0xFFA0FF00, 0xFF9EFF00, 0xFF9DFF00, 0xFF9BFF00, 0xFF9AFF00, 0xFF98FF00, 0xFF96FF00, 0xFF95FF00, 0xFF93FF00, 0xFF92FF00, 0xFF90FF00, 0xFF8FFF00, 0xFF8DFF00, 0xFF8CFF00, 0xFF8AFF00, 0xFF89FF00, 0xFF87FF00, 0xFF86FF00, 0xFF84FF00, 0xFF83FF00, 0xFF81FF00, 0xFF80FF00, 0xFF7EFF00, 0xFF7CFF00, 0xFF7BFF00, 0xFF79FF00, 0xFF78FF00, 0xFF76FF00, 0xFF75FF00, 0xFF73FF00, 0xFF72FF00, 0xFF70FF00, 0xFF6FFF00, 0xFF6DFF00, 0xFF6CFF00, 0xFF6AFF00, 0xFF69FF00, 0xFF67FF00, 0xFF66FF00, 0xFF64FF00, 0xFF62FF00, 0xFF61FF00, 0xFF5FFF00, 0xFF5EFF00, 0xFF5CFF00, 0xFF5BFF00, 0xFF59FF00, 0xFF58FF00, 0xFF56FF00, 0xFF55FF00, 0xFF53FF00, 0xFF52FF00, 0xFF50FF00, 0xFF4FFF00, 0xFF4DFF00, 0xFF4BFF00, 0xFF4AFF00, 0xFF48FF00, 0xFF47FF00, 0xFF45FF00, 0xFF44FF00, 0xFF42FF00, 0xFF41FF00, 0xFF3FFF00, 0xFF3EFF00, 0xFF3CFF00, 0xFF3BFF00, 0xFF39FF00, 0xFF38FF00, 0xFF36FF00, 0xFF35FF00, 0xFF33FF00, 0xFF31FF00, 0xFF30FF00, 0xFF2EFF00, 0xFF2DFF00, 0xFF2BFF00, 0xFF2AFF00, 0xFF28FF00, 0xFF27FF00, 0xFF25FF00, 0xFF24FF00, 0xFF22FF00, 0xFF21FF00, 0xFF1FFF00, 0xFF1EFF00, 0xFF1CFF00, 0xFF1BFF00, 0xFF19FF00, 0xFF17FF00, 0xFF16FF00, 0xFF14FF00, 0xFF13FF00, 0xFF11FF00, 0xFF10FF00, 0xFF0EFF00, 0xFF0DFF00, 0xFF0BFF00, 0xFF0AFF00, 0xFF08FF00, 0xFF07FF00, 0xFF05FF00, 0xFF04FF00, 0xFF02FF00, 0xFF01FF00, 0xFF00FF00, 0xFF00FF02, 0xFF00FF03, 0xFF00FF05, 0xFF00FF06, 0xFF00FF08, 0xFF00FF09, 0xFF00FF0B, 0xFF00FF0C, 0xFF00FF0E, 0xFF00FF0F, 0xFF00FF11, 0xFF00FF12, 0xFF00FF14, 0xFF00FF15, 0xFF00FF17, 0xFF00FF18, 0xFF00FF1A, 0xFF00FF1C, 0xFF00FF1D, 0xFF00FF1F, 0xFF00FF20, 0xFF00FF22, 0xFF00FF23, 0xFF00FF25, 0xFF00FF26, 0xFF00FF28, 0xFF00FF29, 0xFF00FF2B, 0xFF00FF2C, 0xFF00FF2E, 0xFF00FF2F, 0xFF00FF31, 0xFF00FF32, 0xFF00FF34, 0xFF00FF36, 0xFF00FF37, 0xFF00FF39, 0xFF00FF3A, 0xFF00FF3C, 0xFF00FF3D, 0xFF00FF3F, 0xFF00FF40, 0xFF00FF42, 0xFF00FF43, 0xFF00FF45, 0xFF00FF46, 0xFF00FF48, 0xFF00FF49, 0xFF00FF4B, 0xFF00FF4D, 0xFF00FF4E, 0xFF00FF50, 0xFF00FF51, 0xFF00FF53, 0xFF00FF54, 0xFF00FF56, 0xFF00FF57, 0xFF00FF59, 0xFF00FF5A, 0xFF00FF5C, 0xFF00FF5D, 0xFF00FF5F, 0xFF00FF60, 0xFF00FF62, 0xFF00FF63, 0xFF00FF65, 0xFF00FF67, 0xFF00FF68, 0xFF00FF6A, 0xFF00FF6B, 0xFF00FF6D, 0xFF00FF6E, 0xFF00FF70, 0xFF00FF71, 0xFF00FF73, 0xFF00FF74, 0xFF00FF76, 0xFF00FF77, 0xFF00FF79, 0xFF00FF7A, 0xFF00FF7C, 0xFF00FF7D, 0xFF00FF7F, 0xFF00FF81, 0xFF00FF82, 0xFF00FF84, 0xFF00FF85, 0xFF00FF87, 0xFF00FF88, 0xFF00FF8A, 0xFF00FF8B, 0xFF00FF8D, 0xFF00FF8E, 0xFF00FF90, 0xFF00FF91, 0xFF00FF93, 0xFF00FF94, 0xFF00FF96, 0xFF00FF97, 0xFF00FF99, 0xFF00FF9B, 0xFF00FF9C, 0xFF00FF9E, 0xFF00FF9F, 0xFF00FFA1, 0xFF00FFA2, 0xFF00FFA4, 0xFF00FFA5, 0xFF00FFA7, 0xFF00FFA8, 0xFF00FFAA, 0xFF00FFAB, 0xFF00FFAD, 0xFF00FFAE, 0xFF00FFB0, 0xFF00FFB1, 0xFF00FFB3, 0xFF00FFB5, 0xFF00FFB6, 0xFF00FFB8, 0xFF00FFB9, 0xFF00FFBB, 0xFF00FFBC, 0xFF00FFBE, 0xFF00FFBF, 0xFF00FFC1, 0xFF00FFC2, 0xFF00FFC4, 0xFF00FFC5, 0xFF00FFC7, 0xFF00FFC8, 0xFF00FFCA, 0xFF00FFCB, 0xFF00FFCD, 0xFF00FFCF, 0xFF00FFD0, 0xFF00FFD2, 0xFF00FFD3, 0xFF00FFD5, 0xFF00FFD6, 0xFF00FFD8, 0xFF00FFD9, 0xFF00FFDB, 0xFF00FFDC, 0xFF00FFDE, 0xFF00FFDF, 0xFF00FFE1, 0xFF00FFE2, 0xFF00FFE4, 0xFF00FFE6, 0xFF00FFE7, 0xFF00FFE9, 0xFF00FFEA, 0xFF00FFEC, 0xFF00FFED, 0xFF00FFEF, 0xFF00FFF0, 0xFF00FFF2, 0xFF00FFF3, 0xFF00FFF5, 0xFF00FFF6, 0xFF00FFF8, 0xFF00FFF9, 0xFF00FFFB, 0xFF00FFFC, 0xFF00FFFE, 0xFF00FDFF, 0xFF00FCFF, 0xFF00FAFF, 0xFF00F9FF, 0xFF00F7FF, 0xFF00F6FF, 0xFF00F4FF, 0xFF00F3FF, 0xFF00F1FF, 0xFF00F0FF, 0xFF00EEFF, 0xFF00EDFF, 0xFF00EBFF, 0xFF00EAFF, 0xFF00E8FF, 0xFF00E7FF, 0xFF00E5FF, 0xFF00E3FF, 0xFF00E2FF, 0xFF00E0FF, 0xFF00DFFF, 0xFF00DDFF, 0xFF00DCFF, 0xFF00DAFF, 0xFF00D9FF, 0xFF00D7FF, 0xFF00D6FF, 0xFF00D4FF, 0xFF00D3FF, 0xFF00D1FF, 0xFF00D0FF, 0xFF00CEFF, 0xFF00CDFF, 0xFF00CBFF, 0xFF00C9FF, 0xFF00C8FF, 0xFF00C6FF, 0xFF00C5FF, 0xFF00C3FF, 0xFF00C2FF, 0xFF00C0FF, 0xFF00BFFF, 0xFF00BDFF, 0xFF00BCFF, 0xFF00BAFF, 0xFF00B9FF, 0xFF00B7FF, 0xFF00B6FF, 0xFF00B4FF, 0xFF00B3FF, 0xFF00B1FF, 0xFF00AFFF, 0xFF00AEFF, 0xFF00ACFF, 0xFF00ABFF, 0xFF00A9FF, 0xFF00A8FF, 0xFF00A6FF, 0xFF00A5FF, 0xFF00A3FF, 0xFF00A2FF, 0xFF00A0FF, 0xFF009FFF, 0xFF009DFF, 0xFF009CFF, 0xFF009AFF, 0xFF0099FF, 0xFF0097FF, 0xFF0095FF, 0xFF0094FF, 0xFF0092FF, 0xFF0091FF, 0xFF008FFF, 0xFF008EFF, 0xFF008CFF, 0xFF008BFF, 0xFF0089FF, 0xFF0088FF, 0xFF0086FF, 0xFF0085FF, 0xFF0083FF, 0xFF0082FF, 0xFF0080FF, 0xFF007EFF, 0xFF007DFF, 0xFF007BFF, 0xFF007AFF, 0xFF0078FF, 0xFF0077FF, 0xFF0075FF, 0xFF0074FF, 0xFF0072FF, 0xFF0071FF, 0xFF006FFF, 0xFF006EFF, 0xFF006CFF, 0xFF006BFF, 0xFF0069FF, 0xFF0068FF, 0xFF0066FF, 0xFF0064FF, 0xFF0063FF, 0xFF0061FF, 0xFF0060FF, 0xFF005EFF, 0xFF005DFF, 0xFF005BFF, 0xFF005AFF, 0xFF0058FF, 0xFF0057FF, 0xFF0055FF, 0xFF0054FF, 0xFF0052FF, 0xFF0051FF, 0xFF004FFF, 0xFF004EFF, 0xFF004CFF, 0xFF004AFF, 0xFF0049FF, 0xFF0047FF, 0xFF0046FF, 0xFF0044FF, 0xFF0043FF, 0xFF0041FF, 0xFF0040FF, 0xFF003EFF, 0xFF003DFF, 0xFF003BFF, 0xFF003AFF, 0xFF0038FF, 0xFF0037FF, 0xFF0035FF, 0xFF0034FF, 0xFF0032FF, 0xFF0030FF, 0xFF002FFF, 0xFF002DFF, 0xFF002CFF, 0xFF002AFF, 0xFF0029FF, 0xFF0027FF, 0xFF0026FF, 0xFF0024FF, 0xFF0023FF, 0xFF0021FF, 0xFF0020FF, 0xFF001EFF, 0xFF001DFF, 0xFF001BFF, 0xFF001AFF, 0xFF0018FF, 0xFF0016FF, 0xFF0015FF, 0xFF0013FF, 0xFF0012FF, 0xFF0010FF, 0xFF000FFF, 0xFF000DFF, 0xFF000CFF, 0xFF000AFF, 0xFF0009FF, 0xFF0007FF, 0xFF0006FF, 0xFF0004FF, 0xFF0003FF, 0xFF0001FF, 0xFF0000FF, 0xFF0100FF, 0xFF0300FF, 0xFF0400FF, 0xFF0600FF, 0xFF0700FF, 0xFF0900FF, 0xFF0A00FF, 0xFF0C00FF, 0xFF0D00FF, 0xFF0F00FF, 0xFF1000FF, 0xFF1200FF, 0xFF1300FF, 0xFF1500FF, 0xFF1600FF, 0xFF1800FF, 0xFF1A00FF, 0xFF1B00FF, 0xFF1D00FF, 0xFF1E00FF, 0xFF2000FF, 0xFF2100FF, 0xFF2300FF, 0xFF2400FF, 0xFF2600FF, 0xFF2700FF, 0xFF2900FF, 0xFF2A00FF, 0xFF2C00FF, 0xFF2D00FF, 0xFF2F00FF, 0xFF3000FF, 0xFF3200FF, 0xFF3400FF, 0xFF3500FF, 0xFF3700FF, 0xFF3800FF, 0xFF3A00FF, 0xFF3B00FF, 0xFF3D00FF, 0xFF3E00FF, 0xFF4000FF, 0xFF4100FF, 0xFF4300FF, 0xFF4400FF, 0xFF4600FF, 0xFF4700FF, 0xFF4900FF, 0xFF4A00FF, 0xFF4C00FF, 0xFF4E00FF, 0xFF4F00FF, 0xFF5100FF, 0xFF5200FF, 0xFF5400FF, 0xFF5500FF, 0xFF5700FF, 0xFF5800FF, 0xFF5A00FF, 0xFF5B00FF, 0xFF5D00FF, 0xFF5E00FF, 0xFF6000FF, 0xFF6100FF, 0xFF6300FF, 0xFF6400FF, 0xFF6600FF, 0xFF6800FF, 0xFF6900FF, 0xFF6B00FF, 0xFF6C00FF, 0xFF6E00FF, 0xFF6F00FF, 0xFF7100FF, 0xFF7200FF, 0xFF7400FF, 0xFF7500FF, 0xFF7700FF, 0xFF7800FF, 0xFF7A00FF, 0xFF7B00FF, 0xFF7D00FF, 0xFF7E00FF, 0xFF8000FF, 0xFF8200FF, 0xFF8300FF, 0xFF8500FF, 0xFF8600FF, 0xFF8800FF, 0xFF8900FF, 0xFF8B00FF, 0xFF8C00FF, 0xFF8E00FF, 0xFF8F00FF, 0xFF9100FF, 0xFF9200FF, 0xFF9400FF, 0xFF9500FF, 0xFF9700FF, 0xFF9800FF, 0xFF9A00FF, 0xFF9C00FF, 0xFF9D00FF, 0xFF9F00FF, 0xFFA000FF, 0xFFA200FF, 0xFFA300FF, 0xFFA500FF, 0xFFA600FF, 0xFFA800FF, 0xFFA900FF, 0xFFAB00FF, 0xFFAC00FF, 0xFFAE00FF, 0xFFAF00FF, 0xFFB100FF, 0xFFB300FF, 0xFFB400FF, 0xFFB600FF, 0xFFB700FF, 0xFFB900FF, 0xFFBA00FF, 0xFFBC00FF, 0xFFBD00FF, 0xFFBF00FF, 0xFFC000FF, 0xFFC200FF, 0xFFC300FF, 0xFFC500FF, 0xFFC600FF, 0xFFC800FF, 0xFFC900FF, 0xFFCB00FF, 0xFFCD00FF, 0xFFCE00FF, 0xFFD000FF, 0xFFD100FF, 0xFFD300FF, 0xFFD400FF, 0xFFD600FF, 0xFFD700FF, 0xFFD900FF, 0xFFDA00FF, 0xFFDC00FF, 0xFFDD00FF, 0xFFDF00FF, 0xFFE000FF, 0xFFE200FF, 0xFFE300FF, 0xFFE500FF, 0xFFE700FF, 0xFFE800FF, 0xFFEA00FF, 0xFFEB00FF, 0xFFED00FF, 0xFFEE00FF, 0xFFF000FF, 0xFFF100FF, 0xFFF300FF, 0xFFF400FF, 0xFFF600FF, 0xFFF700FF, 0xFFF900FF, 0xFFFA00FF, 0xFFFC00FF, 0xFFFD00FF, 0xFFFF00FE, 0xFFFF00FC, 0xFFFF00FB, 0xFFFF00F9, 0xFFFF00F8, 0xFFFF00F6, 0xFFFF00F5, 0xFFFF00F3, 0xFFFF00F2, 0xFFFF00F0, 0xFFFF00EF, 0xFFFF00ED, 0xFFFF00EC, 0xFFFF00EA, 0xFFFF00E9, 0xFFFF00E7, 0xFFFF00E6, 0xFFFF00E4, 0xFFFF00E2, 0xFFFF00E1, 0xFFFF00DF, 0xFFFF00DE, 0xFFFF00DC, 0xFFFF00DB, 0xFFFF00D9, 0xFFFF00D8, 0xFFFF00D6, 0xFFFF00D5, 0xFFFF00D3, 0xFFFF00D2, 0xFFFF00D0, 0xFFFF00CF, 0xFFFF00CD, 0xFFFF00CC, 0xFFFF00CA, 0xFFFF00C8, 0xFFFF00C7, 0xFFFF00C5, 0xFFFF00C4, 0xFFFF00C2, 0xFFFF00C1, 0xFFFF00BF, 0xFFFF00BE, 0xFFFF00BC, 0xFFFF00BB, 0xFFFF00B9, 0xFFFF00B8, 0xFFFF00B6, 0xFFFF00B5, 0xFFFF00B3, 0xFFFF00B1, 0xFFFF00B0, 0xFFFF00AE, 0xFFFF00AD, 0xFFFF00AB, 0xFFFF00AA, 0xFFFF00A8, 0xFFFF00A7, 0xFFFF00A5, 0xFFFF00A4, 0xFFFF00A2, 0xFFFF00A1, 0xFFFF009F, 0xFFFF009E, 0xFFFF009C, 0xFFFF009B, 0xFFFF0099, 0xFFFF0097, 0xFFFF0096, 0xFFFF0094, 0xFFFF0093, 0xFFFF0091, 0xFFFF0090, 0xFFFF008E, 0xFFFF008D, 0xFFFF008B, 0xFFFF008A, 0xFFFF0088, 0xFFFF0087, 0xFFFF0085, 0xFFFF0084, 0xFFFF0082, 0xFFFF0081, 0xFFFF007F, 0xFFFF007D, 0xFFFF007C, 0xFFFF007A, 0xFFFF0079, 0xFFFF0077, 0xFFFF0076, 0xFFFF0074, 0xFFFF0073, 0xFFFF0071, 0xFFFF0070, 0xFFFF006E, 0xFFFF006D, 0xFFFF006B, 0xFFFF006A, 0xFFFF0068, 0xFFFF0067, 0xFFFF0065, 0xFFFF0063, 0xFFFF0062, 0xFFFF0060, 0xFFFF005F, 0xFFFF005D, 0xFFFF005C, 0xFFFF005A, 0xFFFF0059, 0xFFFF0057, 0xFFFF0056, 0xFFFF0054, 0xFFFF0053, 0xFFFF0051, 0xFFFF0050, 0xFFFF004E, 0xFFFF004D, 0xFFFF004B, 0xFFFF0049, 0xFFFF0048, 0xFFFF0046, 0xFFFF0045, 0xFFFF0043, 0xFFFF0042, 0xFFFF0040, 0xFFFF003F, 0xFFFF003D, 0xFFFF003C, 0xFFFF003A, 0xFFFF0039, 0xFFFF0037, 0xFFFF0036, 0xFFFF0034, 0xFFFF0033, 0xFFFF0031, 0xFFFF002F, 0xFFFF002E, 0xFFFF002C, 0xFFFF002B, 0xFFFF0029, 0xFFFF0028, 0xFFFF0026, 0xFFFF0025, 0xFFFF0023, 0xFFFF0022, 0xFFFF0020, 0xFFFF001F, 0xFFFF001D, 0xFFFF001C, 0xFFFF001A, 0xFFFF0018, 0xFFFF0017, 0xFFFF0015, 0xFFFF0014, 0xFFFF0012, 0xFFFF0011, 0xFFFF000F, 0xFFFF000E, 0xFFFF000C, 0xFFFF000B, 0xFFFF0009, 0xFFFF0008, 0xFFFF0006, 0xFFFF0005, 0xFFFF0003, 0xFFFF0002, 0xFFFF0000, 0xFFFF0100, 0xFFFF0200, 0xFFFF0400, 0xFFFF0500, 0xFFFF0700, 0xFFFF0800, 0xFFFF0A00, 0xFFFF0B00, 0xFFFF0D00, 0xFFFF0E00, 0xFFFF1000, 0xFFFF1100, 0xFFFF1300, 0xFFFF1400, 0xFFFF1600, 0xFFFF1700, 0xFFFF1900, 0xFFFF1B00, 0xFFFF1C00, 0xFFFF1E00, 0xFFFF1F00, 0xFFFF2100, 0xFFFF2200, 0xFFFF2400, 0xFFFF2500, 0xFFFF2700, 0xFFFF2800, 0xFFFF2A00, 0xFFFF2B00, 0xFFFF2D00, 0xFFFF2E00, 0xFFFF3000, 0xFFFF3100, 0xFFFF3300, 0xFFFF3500, 0xFFFF3600, 0xFFFF3800, 0xFFFF3900, 0xFFFF3B00, 0xFFFF3C00, 0xFFFF3E00, 0xFFFF3F00, 0xFFFF4100, 0xFFFF4200, 0xFFFF4400, 0xFFFF4500, 0xFFFF4700, 0xFFFF4800, 0xFFFF4A00, 0xFFFF4B00, 0xFFFF4D00, 0xFFFF4F00, 0xFFFF5000, 0xFFFF5200, 0xFFFF5300, 0xFFFF5500, 0xFFFF5600, 0xFFFF5800, 0xFFFF5900, 0xFFFF5B00, 0xFFFF5C00, 0xFFFF5E00, 0xFFFF5F00, 0xFFFF6100, 0xFFFF6200, 0xFFFF6400, 0xFFFF6500, 0xFFFF6700, 0xFFFF6900, 0xFFFF6A00, 0xFFFF6C00, 0xFFFF6D00, 0xFFFF6F00, 0xFFFF7000, 0xFFFF7200, 0xFFFF7300, 0xFFFF7500, 0xFFFF7600, 0xFFFF7800, 0xFFFF7900, 0xFFFF7B00, 0xFFFF7C00, 0xFFFF7E00, 0xFFFF8000, 0xFFFF8100, 0xFFFF8300, 0xFFFF8400, 0xFFFF8600, 0xFFFF8700, 0xFFFF8900, 0xFFFF8A00, 0xFFFF8C00, 0xFFFF8D00, 0xFFFF8F00, 0xFFFF9000, 0xFFFF9200, 0xFFFF9300, 0xFFFF9500, 0xFFFF9600, 0xFFFF9800, 0xFFFF9A00, 0xFFFF9B00, 0xFFFF9D00, 0xFFFF9E00, 0xFFFFA000, 0xFFFFA100, 0xFFFFA300, 0xFFFFA400, 0xFFFFA600, 0xFFFFA700, 0xFFFFA900, 0xFFFFAA00, 0xFFFFAC00, 0xFFFFAD00, 0xFFFFAF00, 0xFFFFB000, 0xFFFFB200, 0xFFFFB400, 0xFFFFB500, 0xFFFFB700, 0xFFFFB800, 0xFFFFBA00, 0xFFFFBB00, 0xFFFFBD00, 0xFFFFBE00, 0xFFFFC000, 0xFFFFC100, 0xFFFFC300, 0xFFFFC400, 0xFFFFC600, 0xFFFFC700, 0xFFFFC900, 0xFFFFCA00, 0xFFFFCC00, 0xFFFFCE00, 0xFFFFCF00, 0xFFFFD100, 0xFFFFD200, 0xFFFFD400, 0xFFFFD500, 0xFFFFD700, 0xFFFFD800, 0xFFFFDA00, 0xFFFFDB00, 0xFFFFDD00, 0xFFFFDE00, 0xFFFFE000, 0xFFFFE100, 0xFFFFE300, 0xFFFFE400, 0xFFFFE600, 0xFFFFE800, 0xFFFFE900, 0xFFFFEB00, 0xFFFFEC00, 0xFFFFEE00, 0xFFFFEF00, 0xFFFFF100, 0xFFFFF200, 0xFFFFF400, 0xFFFFF500, 0xFFFFF700, 0xFFFFF800, 0xFFFFFA00, 0xFFFFFB00, 0xFFFFFD00, 0xFFFFFF00, 0xFFFBFB03, 0xFFF8F806, 0xFFF5F509, 0xFFF2F20C, 0xFFEFEF0F, 0xFFECEC12, 0xFFE9E915, 0xFFE6E618, 0xFFE3E31B, 0xFFE0E01E, 0xFFDDDD21, 0xFFDADA24, 0xFFD7D727, 0xFFD4D42A, 0xFFD1D12D, 0xFFCECE30, 0xFFCACA34, 0xFFC7C737, 0xFFC4C43A, 0xFFC1C13D, 0xFFBEBE40, 0xFFBBBB43, 0xFFB8B846, 0xFFB5B549, 0xFFB2B24C, 0xFFAFAF4F, 0xFFACAC52, 0xFFA9A955, 0xFFA6A658, 0xFFA3A35B, 0xFFA0A05E, 0xFF9D9D61, 0xFF9A9A64, 0xFF969668, 0xFF93936B, 0xFF90906E, 0xFF8D8D71, 0xFF8A8A74, 0xFF878777, 0xFF84847A, 0xFF81817D, 0xFF7E7E80, 0xFF7B7B83, 0xFF787886, 0xFF757589, 0xFF72728C, 0xFF6F6F8F, 0xFF6C6C92, 0xFF696995, 0xFF666698, 0xFF62629C, 0xFF5F5F9F, 0xFF5C5CA2, 0xFF5959A5, 0xFF5656A8, 0xFF5353AB, 0xFF5050AE, 0xFF4D4DB1, 0xFF4A4AB4, 0xFF4747B7, 0xFF4444BA, 0xFF4141BD, 0xFF3E3EC0, 0xFF3B3BC3, 0xFF3838C6, 0xFF3535C9, 0xFF3131CD, 0xFF2E2ED0, 0xFF2B2BD3, 0xFF2828D6, 0xFF2525D9, 0xFF2222DC, 0xFF1F1FDF, 0xFF1C1CE2, 0xFF1919E5, 0xFF1616E8, 0xFF1313EB, 0xFF1010EE, 0xFF0D0DF1, 0xFF0A0AF4, 0xFF0707F7, 0xFF0404FA, 0xFF0101FD, 0xFF0200FC, 0xFF0500F9, 0xFF0800F6, 0xFF0B00F3, 0xFF0E00F0, 0xFF1100ED, 0xFF1400EA, 0xFF1700E7, 0xFF1A00E4, 0xFF1D00E1, 0xFF2000DE, 0xFF2300DB, 0xFF2600D8, 0xFF2900D5, 0xFF2C00D2, 0xFF2F00CF, 0xFF3200CC, 0xFF3600C8, 0xFF3900C5, 0xFF3C00C2, 0xFF3F00BF, 0xFF4200BC, 0xFF4500B9, 0xFF4800B6, 0xFF4B00B3, 0xFF4E00B0, 0xFF5100AD, 0xFF5400AA, 0xFF5700A7, 0xFF5A00A4, 0xFF5D00A1, 0xFF60009E, 0xFF63009B, 0xFF670097, 0xFF6A0094, 0xFF6D0091, 0xFF70008E, 0xFF73008B, 0xFF760088, 0xFF790085, 0xFF7C0082, 0xFF7F007F, 0xFF82007C, 0xFF850079, 0xFF880076, 0xFF8B0073, 0xFF8E0070, 0xFF91006D, 0xFF94006A, 0xFF970067, 0xFF9B0063, 0xFF9E0060, 0xFFA1005D, 0xFFA4005A, 0xFFA70057, 0xFFAA0054, 0xFFAD0051, 0xFFB0004E, 0xFFB3004B, 0xFFB60048, 0xFFB90045, 0xFFBC0042, 0xFFBF003F, 0xFFC2003C, 0xFFC50039, 0xFFC80036, 0xFFCB0033, 0xFFCF002F, 0xFFD2002C, 0xFFD50029, 0xFFD80026, 0xFFDB0023, 0xFFDE0020, 0xFFE1001D, 0xFFE4001A, 0xFFE70017, 0xFFEA0014, 0xFFED0011, 0xFFF0000E, 0xFFF3000B, 0xFFF60008, 0xFFF90005, 0xFFFC0002, 0xFFFD0100, 0xFFFA0400, 0xFFF70700, 0xFFF40A00, 0xFFF10D00, 0xFFEE1000, 0xFFEB1300, 0xFFE81600, 0xFFE51900, 0xFFE21C00, 0xFFDF1F00, 0xFFDC2200, 0xFFD92500, 0xFFD62800, 0xFFD32B00, 0xFFD02E00, 0xFFCD3100, 0xFFC93500, 0xFFC63800, 0xFFC33B00, 0xFFC03E00, 0xFFBD4100, 0xFFBA4400, 0xFFB74700, 0xFFB44A00, 0xFFB14D00, 0xFFAE5000, 0xFFAB5300, 0xFFA85600, 0xFFA55900, 0xFFA25C00, 0xFF9F5F00, 0xFF9C6200, 0xFF996500, 0xFF956900, 0xFF926C00, 0xFF8F6F00, 0xFF8C7200, 0xFF897500, 0xFF867800, 0xFF837B00, 0xFF807E00, 0xFF7D8100, 0xFF7A8400, 0xFF778700, 0xFF748A00, 0xFF718D00, 0xFF6E9000, 0xFF6B9300, 0xFF689600, 0xFF649A00, 0xFF619D00, 0xFF5EA000, 0xFF5BA300, 0xFF58A600, 0xFF55A900, 0xFF52AC00, 0xFF4FAF00, 0xFF4CB200, 0xFF49B500, 0xFF46B800, 0xFF43BB00, 0xFF40BE00, 0xFF3DC100, 0xFF3AC400, 0xFF37C700, 0xFF34CA00, 0xFF30CE00, 0xFF2DD100, 0xFF2AD400, 0xFF27D700, 0xFF24DA00, 0xFF21DD00, 0xFF1EE000, 0xFF1BE300, 0xFF18E600, 0xFF15E900, 0xFF12EC00, 0xFF0FEF00, 0xFF0CF200, 0xFF09F500, 0xFF06F800, 0xFF03FB00, 0xFF00FE00, 0xFF03FB03, 0xFF06F806, 0xFF09F509, 0xFF0CF20C, 0xFF0FEF0F, 0xFF12EC12, 0xFF15E915, 0xFF18E618, 0xFF1BE31B, 0xFF1EE01E, 0xFF21DD21, 0xFF24DA24, 0xFF27D727, 0xFF2AD42A, 0xFF2DD12D, 0xFF30CE30, 0xFF34CA34, 0xFF37C737, 0xFF3AC43A, 0xFF3DC13D, 0xFF40BE40, 0xFF43BB43, 0xFF46B846, 0xFF49B549, 0xFF4CB24C, 0xFF4FAF4F, 0xFF52AC52, 0xFF55A955, 0xFF58A658, 0xFF5BA35B, 0xFF5EA05E, 0xFF619D61, 0xFF649A64, 0xFF689668, 0xFF6B936B, 0xFF6E906E, 0xFF718D71, 0xFF748A74, 0xFF778777, 0xFF7A847A, 0xFF7D817D, 0xFF807E80, 0xFF837B83, 0xFF867886, 0xFF897589, 0xFF8C728C, 0xFF8F6F8F, 0xFF926C92, 0xFF956995, 0xFF986698, 0xFF9C629C, 0xFF9F5F9F, 0xFFA25CA2, 0xFFA559A5, 0xFFA856A8, 0xFFAB53AB, 0xFFAE50AE, 0xFFB14DB1, 0xFFB44AB4, 0xFFB747B7, 0xFFBA44BA, 0xFFBD41BD, 0xFFC03EC0, 0xFFC33BC3, 0xFFC638C6, 0xFFC935C9, 0xFFCD31CD, 0xFFD02ED0, 0xFFD32BD3, 0xFFD628D6, 0xFFD925D9, 0xFFDC22DC, 0xFFDF1FDF, 0xFFE21CE2, 0xFFE519E5, 0xFFE816E8, 0xFFEB13EB, 0xFFEE10EE, 0xFFF10DF1, 0xFFF40AF4, 0xFFF707F7, 0xFFFA04FA, 0xFFFD01FD, 0xFFFC02FF, 0xFFF905FF, 0xFFF608FF, 0xFFF30BFF, 0xFFF00EFF, 0xFFED11FF, 0xFFEA14FF, 0xFFE717FF, 0xFFE41AFF, 0xFFE11DFF, 0xFFDE20FF, 0xFFDB23FF, 0xFFD826FF, 0xFFD529FF, 0xFFD22CFF, 0xFFCF2FFF, 0xFFCC32FF, 0xFFC836FF, 0xFFC539FF, 0xFFC23CFF, 0xFFBF3FFF, 0xFFBC42FF, 0xFFB945FF, 0xFFB648FF, 0xFFB34BFF, 0xFFB04EFF, 0xFFAD51FF, 0xFFAA54FF, 0xFFA757FF, 0xFFA45AFF, 0xFFA15DFF, 0xFF9E60FF, 0xFF9B63FF, 0xFF9767FF, 0xFF946AFF, 0xFF916DFF, 0xFF8E70FF, 0xFF8B73FF, 0xFF8876FF, 0xFF8579FF, 0xFF827CFF, 0xFF7F7FFF, 0xFF7C82FF, 0xFF7985FF, 0xFF7688FF, 0xFF738BFF, 0xFF708EFF, 0xFF6D91FF, 0xFF6A94FF, 0xFF6797FF, 0xFF639BFF, 0xFF609EFF, 0xFF5DA1FF, 0xFF5AA4FF, 0xFF57A7FF, 0xFF54AAFF, 0xFF51ADFF, 0xFF4EB0FF, 0xFF4BB3FF, 0xFF48B6FF, 0xFF45B9FF, 0xFF42BCFF, 0xFF3FBFFF, 0xFF3CC2FF, 0xFF39C5FF, 0xFF36C8FF, 0xFF33CBFF, 0xFF2FCFFF, 0xFF2CD2FF, 0xFF29D5FF, 0xFF26D8FF, 0xFF23DBFF, 0xFF20DEFF, 0xFF1DE1FF, 0xFF1AE4FF, 0xFF17E7FF, 0xFF14EAFF, 0xFF11EDFF, 0xFF0EF0FF, 0xFF0BF3FF, 0xFF08F6FF, 0xFF05F9FF, 0xFF02FCFF, 0xFF01FFFD, 0xFF04FFFA, 0xFF07FFF7, 0xFF0AFFF4, 0xFF0DFFF1, 0xFF10FFEE, 0xFF13FFEB, 0xFF16FFE8, 0xFF19FFE5, 0xFF1CFFE2, 0xFF1FFFDF, 0xFF22FFDC, 0xFF25FFD9, 0xFF28FFD6, 0xFF2BFFD3, 0xFF2EFFD0, 0xFF31FFCD, 0xFF35FFC9, 0xFF38FFC6, 0xFF3BFFC3, 0xFF3EFFC0, 0xFF41FFBD, 0xFF44FFBA, 0xFF47FFB7, 0xFF4AFFB4, 0xFF4DFFB1, 0xFF50FFAE, 0xFF53FFAB, 0xFF56FFA8, 0xFF59FFA5, 0xFF5CFFA2, 0xFF5FFF9F, 0xFF62FF9C, 0xFF65FF99, 0xFF69FF95, 0xFF6CFF92, 0xFF6FFF8F, 0xFF72FF8C, 0xFF75FF89, 0xFF78FF86, 0xFF7BFF83, 0xFF7EFF80, 0xFF81FF7D, 0xFF84FF7A, 0xFF87FF77, 0xFF8AFF74, 0xFF8DFF71, 0xFF90FF6E, 0xFF93FF6B, 0xFF96FF68, 0xFF9AFF64, 0xFF9DFF61, 0xFFA0FF5E, 0xFFA3FF5B, 0xFFA6FF58, 0xFFA9FF55, 0xFFACFF52, 0xFFAFFF4F, 0xFFB2FF4C, 0xFFB5FF49, 0xFFB8FF46, 0xFFBBFF43, 0xFFBEFF40, 0xFFC1FF3D, 0xFFC4FF3A, 0xFFC7FF37, 0xFFCAFF34, 0xFFCEFF30, 0xFFD1FF2D, 0xFFD4FF2A, 0xFFD7FF27, 0xFFDAFF24, 0xFFDDFF21, 0xFFE0FF1E, 0xFFE3FF1B, 0xFFE6FF18, 0xFFE9FF15, 0xFFECFF12, 0xFFEFFF0F, 0xFFF2FF0C, 0xFFF5FF09, 0xFFF8FF06, 0xFFFBFF03, 0xFFFEFF00, 0xFFFBFF00, 0xFFF8FF00, 0xFFF5FF00, 0xFFF2FF00, 0xFFEFFF00, 0xFFECFF00, 0xFFE9FF00, 0xFFE6FF00, 0xFFE3FF00, 0xFFE0FF00, 0xFFDDFF00, 0xFFDAFF00, 0xFFD7FF00, 0xFFD4FF00, 0xFFD1FF00, 0xFFCEFF00, 0xFFCAFF00, 0xFFC7FF00, 0xFFC4FF00, 0xFFC1FF00, 0xFFBEFF00, 0xFFBBFF00, 0xFFB8FF00, 0xFFB5FF00, 0xFFB2FF00, 0xFFAFFF00, 0xFFACFF00, 0xFFA9FF00, 0xFFA6FF00, 0xFFA3FF00, 0xFFA0FF00, 0xFF9DFF00, 0xFF9AFF00, 0xFF96FF00, 0xFF93FF00, 0xFF90FF00, 0xFF8DFF00, 0xFF8AFF00, 0xFF87FF00, 0xFF84FF00, 0xFF81FF00, 0xFF7EFF00, 0xFF7BFF00, 0xFF78FF00, 0xFF75FF00, 0xFF72FF00, 0xFF6FFF00, 0xFF6CFF00, 0xFF69FF00, 0xFF66FF00, 0xFF62FF00, 0xFF5FFF00, 0xFF5CFF00, 0xFF59FF00, 0xFF56FF00, 0xFF53FF00, 0xFF50FF00, 0xFF4DFF00, 0xFF4AFF00, 0xFF47FF00, 0xFF44FF00, 0xFF41FF00, 0xFF3EFF00, 0xFF3BFF00, 0xFF38FF00, 0xFF35FF00, 0xFF31FF00, 0xFF2EFF00, 0xFF2BFF00, 0xFF28FF00, 0xFF25FF00, 0xFF22FF00, 0xFF1FFF00, 0xFF1CFF00, 0xFF19FF00, 0xFF16FF00, 0xFF13FF00, 0xFF10FF00, 0xFF0DFF00, 0xFF0AFF00, 0xFF07FF00, 0xFF04FF00, 0xFF01FF00, 0xFF00FC02, 0xFF00F905, 0xFF00F608, 0xFF00F30B, 0xFF00F00E, 0xFF00ED11, 0xFF00EA14, 0xFF00E717, 0xFF00E41A, 0xFF00E11D, 0xFF00DE20, 0xFF00DB23, 0xFF00D826, 0xFF00D529, 0xFF00D22C, 0xFF00CF2F, 0xFF00CC32, 0xFF00C836, 0xFF00C539, 0xFF00C23C, 0xFF00BF3F, 0xFF00BC42, 0xFF00B945, 0xFF00B648, 0xFF00B34B, 0xFF00B04E, 0xFF00AD51, 0xFF00AA54, 0xFF00A757, 0xFF00A45A, 0xFF00A15D, 0xFF009E60, 0xFF009B63, 0xFF009767, 0xFF00946A, 0xFF00916D, 0xFF008E70, 0xFF008B73, 0xFF008876, 0xFF008579, 0xFF00827C, 0xFF007F7F, 0xFF007C82, 0xFF007985, 0xFF007688, 0xFF00738B, 0xFF00708E, 0xFF006D91, 0xFF006A94, 0xFF006797, 0xFF00639B, 0xFF00609E, 0xFF005DA1, 0xFF005AA4, 0xFF0057A7, 0xFF0054AA, 0xFF0051AD, 0xFF004EB0, 0xFF004BB3, 0xFF0048B6, 0xFF0045B9, 0xFF0042BC, 0xFF003FBF, 0xFF003CC2, 0xFF0039C5, 0xFF0036C8, 0xFF0033CB, 0xFF002FCF, 0xFF002CD2, 0xFF0029D5, 0xFF0026D8, 0xFF0023DB, 0xFF0020DE, 0xFF001DE1, 0xFF001AE4, 0xFF0017E7, 0xFF0014EA, 0xFF0011ED, 0xFF000EF0, 0xFF000BF3, 0xFF0008F6, 0xFF0005F9, 0xFF0002FC, 0xFF0100FF, 0xFF0400FF, 0xFF0700FF, 0xFF0A00FF, 0xFF0D00FF, 0xFF1000FF, 0xFF1300FF, 0xFF1600FF, 0xFF1900FF, 0xFF1C00FF, 0xFF1F00FF, 0xFF2200FF, 0xFF2500FF, 0xFF2800FF, 0xFF2B00FF, 0xFF2E00FF, 0xFF3100FF, 0xFF3500FF, 0xFF3800FF, 0xFF3B00FF, 0xFF3E00FF, 0xFF4100FF, 0xFF4400FF, 0xFF4700FF, 0xFF4A00FF, 0xFF4D00FF, 0xFF5000FF, 0xFF5300FF, 0xFF5600FF, 0xFF5900FF, 0xFF5C00FF, 0xFF5F00FF, 0xFF6200FF, 0xFF6500FF, 0xFF6900FF, 0xFF6C00FF, 0xFF6F00FF, 0xFF7200FF, 0xFF7500FF, 0xFF7800FF, 0xFF7B00FF, 0xFF7E00FF, 0xFF8100FF, 0xFF8400FF, 0xFF8700FF, 0xFF8A00FF, 0xFF8D00FF, 0xFF9000FF, 0xFF9300FF, 0xFF9600FF, 0xFF9A00FF, 0xFF9D00FF, 0xFFA000FF, 0xFFA300FF, 0xFFA600FF, 0xFFA900FF, 0xFFAC00FF, 0xFFAF00FF, 0xFFB200FF, 0xFFB500FF, 0xFFB800FF, 0xFFBB00FF, 0xFFBE00FF, 0xFFC100FF, 0xFFC400FF, 0xFFC700FF, 0xFFCA00FF, 0xFFCE00FF, 0xFFD100FF, 0xFFD400FF, 0xFFD700FF, 0xFFDA00FF, 0xFFDD00FF, 0xFFE000FF, 0xFFE300FF, 0xFFE600FF, 0xFFE900FF, 0xFFEC00FF, 0xFFEF00FF, 0xFFF200FF, 0xFFF500FF, 0xFFF800FF, 0xFFFB00FF, 0xFFFE00FF, 0xFFFF03FB, 0xFFFF06F8, 0xFFFF09F5, 0xFFFF0CF2, 0xFFFF0FEF, 0xFFFF12EC, 0xFFFF15E9, 0xFFFF18E6, 0xFFFF1BE3, 0xFFFF1EE0, 0xFFFF21DD, 0xFFFF24DA, 0xFFFF27D7, 0xFFFF2AD4, 0xFFFF2DD1, 0xFFFF30CE, 0xFFFF34CA, 0xFFFF37C7, 0xFFFF3AC4, 0xFFFF3DC1, 0xFFFF40BE, 0xFFFF43BB, 0xFFFF46B8, 0xFFFF49B5, 0xFFFF4CB2, 0xFFFF4FAF, 0xFFFF52AC, 0xFFFF55A9, 0xFFFF58A6, 0xFFFF5BA3, 0xFFFF5EA0, 0xFFFF619D, 0xFFFF649A, 0xFFFF6896, 0xFFFF6B93, 0xFFFF6E90, 0xFFFF718D, 0xFFFF748A, 0xFFFF7787, 0xFFFF7A84, 0xFFFF7D81, 0xFFFF807E, 0xFFFF837B, 0xFFFF8678, 0xFFFF8975, 0xFFFF8C72, 0xFFFF8F6F, 0xFFFF926C, 0xFFFF9569, 0xFFFF9866, 0xFFFF9C62, 0xFFFF9F5F, 0xFFFFA25C, 0xFFFFA559, 0xFFFFA856, 0xFFFFAB53, 0xFFFFAE50, 0xFFFFB14D, 0xFFFFB44A, 0xFFFFB747, 0xFFFFBA44, 0xFFFFBD41, 0xFFFFC03E, 0xFFFFC33B, 0xFFFFC638, 0xFFFFC935, 0xFFFFCD31, 0xFFFFD02E, 0xFFFFD32B, 0xFFFFD628, 0xFFFFD925, 0xFFFFDC22, 0xFFFFDF1F, 0xFFFFE21C, 0xFFFFE519, 0xFFFFE816, 0xFFFFEB13, 0xFFFFEE10, 0xFFFFF10D, 0xFFFFF40A, 0xFFFFF707, 0xFFFFFA04, 0xFFFFFD01, 0xFFFFFC00, 0xFFFFF900, 0xFFFFF600, 0xFFFFF300, 0xFFFFF000, 0xFFFFED00, 0xFFFFEA00, 0xFFFFE700, 0xFFFFE400, 0xFFFFE100, 0xFFFFDE00, 0xFFFFDB00, 0xFFFFD800, 0xFFFFD500, 0xFFFFD200, 0xFFFFCF00, 0xFFFFCC00, 0xFFFFC800, 0xFFFFC500, 0xFFFFC200, 0xFFFFBF00, 0xFFFFBC00, 0xFFFFB900, 0xFFFFB600, 0xFFFFB300, 0xFFFFB000, 0xFFFFAD00, 0xFFFFAA00, 0xFFFFA700, 0xFFFFA400, 0xFFFFA100, 0xFFFF9E00, 0xFFFF9B00, 0xFFFF9700, 0xFFFF9400, 0xFFFF9100, 0xFFFF8E00, 0xFFFF8B00, 0xFFFF8800, 0xFFFF8500, 0xFFFF8200, 0xFFFF7F00, 0xFFFF7C00, 0xFFFF7900, 0xFFFF7600, 0xFFFF7300, 0xFFFF7000, 0xFFFF6D00, 0xFFFF6A00, 0xFFFF6700, 0xFFFF6300, 0xFFFF6000, 0xFFFF5D00, 0xFFFF5A00, 0xFFFF5700, 0xFFFF5400, 0xFFFF5100, 0xFFFF4E00, 0xFFFF4B00, 0xFFFF4800, 0xFFFF4500, 0xFFFF4200, 0xFFFF3F00, 0xFFFF3C00, 0xFFFF3900, 0xFFFF3600, 0xFFFF3300, 0xFFFF2F00, 0xFFFF2C00, 0xFFFF2900, 0xFFFF2600, 0xFFFF2300, 0xFFFF2000, 0xFFFF1D00, 0xFFFF1A00, 0xFFFF1700, 0xFFFF1400, 0xFFFF1100, 0xFFFF0E00, 0xFFFF0B00, 0xFFFF0800, 0xFFFF0500, 0xFFFF0200, 0xFFFD0101, 0xFFFA0404, 0xFFF70707, 0xFFF40A0A, 0xFFF10D0D, 0xFFEE1010, 0xFFEB1313, 0xFFE81616, 0xFFE51919, 0xFFE21C1C, 0xFFDF1F1F, 0xFFDC2222, 0xFFD92525, 0xFFD62828, 0xFFD32B2B, 0xFFD02E2E, 0xFFCD3131, 0xFFC93535, 0xFFC63838, 0xFFC33B3B, 0xFFC03E3E, 0xFFBD4141, 0xFFBA4444, 0xFFB74747, 0xFFB44A4A, 0xFFB14D4D, 0xFFAE5050, 0xFFAB5353, 0xFFA85656, 0xFFA55959, 0xFFA25C5C, 0xFF9F5F5F, 0xFF9C6262, 0xFF996565, 0xFF956969, 0xFF926C6C, 0xFF8F6F6F, 0xFF8C7272, 0xFF897575, 0xFF867878, 0xFF837B7B, 0xFF807E7E, 0xFF7D8181, 0xFF7A8484, 0xFF778787, 0xFF748A8A, 0xFF718D8D, 0xFF6E9090, 0xFF6B9393, 0xFF689696, 0xFF649A9A, 0xFF619D9D, 0xFF5EA0A0, 0xFF5BA3A3, 0xFF58A6A6, 0xFF55A9A9, 0xFF52ACAC, 0xFF4FAFAF, 0xFF4CB2B2, 0xFF49B5B5, 0xFF46B8B8, 0xFF43BBBB, 0xFF40BEBE, 0xFF3DC1C1, 0xFF3AC4C4, 0xFF37C7C7, 0xFF34CACA, 0xFF30CECE, 0xFF2DD1D1, 0xFF2AD4D4, 0xFF27D7D7, 0xFF24DADA, 0xFF21DDDD, 0xFF1EE0E0, 0xFF1BE3E3, 0xFF18E6E6, 0xFF15E9E9, 0xFF12ECEC, 0xFF0FEFEF, 0xFF0CF2F2, 0xFF09F5F5, 0xFF06F8F8, 0xFF03FBFB, 0xFFFFFF00, 0xFFFFFF06, 0xFFFFFF0C, 0xFFFFFF12, 0xFFFFFF18, 0xFFFFFF1E, 0xFFFFFF24, 0xFFFFFF2A, 0xFFFFFF30, 0xFFFFFF37, 0xFFFFFF3D, 0xFFFFFF43, 0xFFFFFF49, 0xFFFFFF4F, 0xFFFFFF55, 0xFFFFFF5B, 0xFFFFFF61, 0xFFFFFF68, 0xFFFFFF6E, 0xFFFFFF74, 0xFFFFFF7A, 0xFFFFFF80, 0xFFFFFF86, 0xFFFFFF8C, 0xFFFFFF92, 0xFFFFFF98, 0xFFFFFF9F, 0xFFFFFFA5, 0xFFFFFFAB, 0xFFFFFFB1, 0xFFFFFFB7, 0xFFFFFFBD, 0xFFFFFFC3, 0xFFFFFFC9, 0xFFFFFFD0, 0xFFFFFFD6, 0xFFFFFFDC, 0xFFFFFFE2, 0xFFFFFFE8, 0xFFFFFFEE, 0xFFFFFFF4, 0xFFFFFFFA, 0xFFFCFCFF, 0xFFF6F6FF, 0xFFF0F0FF, 0xFFEAEAFF, 0xFFE4E4FF, 0xFFDEDEFF, 0xFFD8D8FF, 0xFFD2D2FF, 0xFFCCCCFF, 0xFFC5C5FF, 0xFFBFBFFF, 0xFFB9B9FF, 0xFFB3B3FF, 0xFFADADFF, 0xFFA7A7FF, 0xFFA1A1FF, 0xFF9B9BFF, 0xFF9494FF, 0xFF8E8EFF, 0xFF8888FF, 0xFF8282FF, 0xFF7C7CFF, 0xFF7676FF, 0xFF7070FF, 0xFF6A6AFF, 0xFF6363FF, 0xFF5D5DFF, 0xFF5757FF, 0xFF5151FF, 0xFF4B4BFF, 0xFF4545FF, 0xFF3F3FFF, 0xFF3939FF, 0xFF3333FF, 0xFF2C2CFF, 0xFF2626FF, 0xFF2020FF, 0xFF1A1AFF, 0xFF1414FF, 0xFF0E0EFF, 0xFF0808FF, 0xFF0202FF, 0xFF0404FF, 0xFF0A0AFF, 0xFF1010FF, 0xFF1616FF, 0xFF1C1CFF, 0xFF2222FF, 0xFF2828FF, 0xFF2E2EFF, 0xFF3535FF, 0xFF3B3BFF, 0xFF4141FF, 0xFF4747FF, 0xFF4D4DFF, 0xFF5353FF, 0xFF5959FF, 0xFF5F5FFF, 0xFF6565FF, 0xFF6C6CFF, 0xFF7272FF, 0xFF7878FF, 0xFF7E7EFF, 0xFF8484FF, 0xFF8A8AFF, 0xFF9090FF, 0xFF9696FF, 0xFF9D9DFF, 0xFFA3A3FF, 0xFFA9A9FF, 0xFFAFAFFF, 0xFFB5B5FF, 0xFFBBBBFF, 0xFFC1C1FF, 0xFFC7C7FF, 0xFFCECEFF, 0xFFD4D4FF, 0xFFDADAFF, 0xFFE0E0FF, 0xFFE6E6FF, 0xFFECECFF, 0xFFF2F2FF, 0xFFF8F8FF, 0xFFFEFEFF, 0xFFFFF8F8, 0xFFFFF2F2, 0xFFFFECEC, 0xFFFFE6E6, 0xFFFFE0E0, 0xFFFFDADA, 0xFFFFD4D4, 0xFFFFCECE, 0xFFFFC7C7, 0xFFFFC1C1, 0xFFFFBBBB, 0xFFFFB5B5, 0xFFFFAFAF, 0xFFFFA9A9, 0xFFFFA3A3, 0xFFFF9D9D, 0xFFFF9696, 0xFFFF9090, 0xFFFF8A8A, 0xFFFF8484, 0xFFFF7E7E, 0xFFFF7878, 0xFFFF7272, 0xFFFF6C6C, 0xFFFF6666, 0xFFFF5F5F, 0xFFFF5959, 0xFFFF5353, 0xFFFF4D4D, 0xFFFF4747, 0xFFFF4141, 0xFFFF3B3B, 0xFFFF3535, 0xFFFF2E2E, 0xFFFF2828, 0xFFFF2222, 0xFFFF1C1C, 0xFFFF1616, 0xFFFF1010, 0xFFFF0A0A, 0xFFFF0404, 0xFFFF0202, 0xFFFF0808, 0xFFFF0E0E, 0xFFFF1414, 0xFFFF1A1A, 0xFFFF2020, 0xFFFF2626, 0xFFFF2C2C, 0xFFFF3232, 0xFFFF3939, 0xFFFF3F3F, 0xFFFF4545, 0xFFFF4B4B, 0xFFFF5151, 0xFFFF5757, 0xFFFF5D5D, 0xFFFF6363, 0xFFFF6A6A, 0xFFFF7070, 0xFFFF7676, 0xFFFF7C7C, 0xFFFF8282, 0xFFFF8888, 0xFFFF8E8E, 0xFFFF9494, 0xFFFF9B9B, 0xFFFFA1A1, 0xFFFFA7A7, 0xFFFFADAD, 0xFFFFB3B3, 0xFFFFB9B9, 0xFFFFBFBF, 0xFFFFC5C5, 0xFFFFCBCB, 0xFFFFD2D2, 0xFFFFD8D8, 0xFFFFDEDE, 0xFFFFE4E4, 0xFFFFEAEA, 0xFFFFF0F0, 0xFFFFF6F6, 0xFFFFFCFC, 0xFFFAFFFA, 0xFFF4FFF4, 0xFFEEFFEE, 0xFFE8FFE8, 0xFFE2FFE2, 0xFFDCFFDC, 0xFFD6FFD6, 0xFFD0FFD0, 0xFFC9FFC9, 0xFFC3FFC3, 0xFFBDFFBD, 0xFFB7FFB7, 0xFFB1FFB1, 0xFFABFFAB, 0xFFA5FFA5, 0xFF9FFF9F, 0xFF99FF99, 0xFF92FF92, 0xFF8CFF8C, 0xFF86FF86, 0xFF80FF80, 0xFF7AFF7A, 0xFF74FF74, 0xFF6EFF6E, 0xFF68FF68, 0xFF61FF61, 0xFF5BFF5B, 0xFF55FF55, 0xFF4FFF4F, 0xFF49FF49, 0xFF43FF43, 0xFF3DFF3D, 0xFF37FF37, 0xFF30FF30, 0xFF2AFF2A, 0xFF24FF24, 0xFF1EFF1E, 0xFF18FF18, 0xFF12FF12, 0xFF0CFF0C, 0xFF06FF06, 0xFF00FF00, 0xFF06FF06, 0xFF0CFF0C, 0xFF12FF12, 0xFF18FF18, 0xFF1EFF1E, 0xFF24FF24, 0xFF2AFF2A, 0xFF30FF30, 0xFF37FF37, 0xFF3DFF3D, 0xFF43FF43, 0xFF49FF49, 0xFF4FFF4F, 0xFF55FF55, 0xFF5BFF5B, 0xFF61FF61, 0xFF68FF68, 0xFF6EFF6E, 0xFF74FF74, 0xFF7AFF7A, 0xFF80FF80, 0xFF86FF86, 0xFF8CFF8C, 0xFF92FF92, 0xFF98FF98, 0xFF9FFF9F, 0xFFA5FFA5, 0xFFABFFAB, 0xFFB1FFB1, 0xFFB7FFB7, 0xFFBDFFBD, 0xFFC3FFC3, 0xFFC9FFC9, 0xFFD0FFD0, 0xFFD6FFD6, 0xFFDCFFDC, 0xFFE2FFE2, 0xFFE8FFE8, 0xFFEEFFEE, 0xFFF4FFF4, 0xFFFAFFFA, 0xFFFFFCFF, 0xFFFFF6FF, 0xFFFFF0FF, 0xFFFFEAFF, 0xFFFFE4FF, 0xFFFFDEFF, 0xFFFFD8FF, 0xFFFFD2FF, 0xFFFFCCFF, 0xFFFFC5FF, 0xFFFFBFFF, 0xFFFFB9FF, 0xFFFFB3FF, 0xFFFFADFF, 0xFFFFA7FF, 0xFFFFA1FF, 0xFFFF9BFF, 0xFFFF94FF, 0xFFFF8EFF, 0xFFFF88FF, 0xFFFF82FF, 0xFFFF7CFF, 0xFFFF76FF, 0xFFFF70FF, 0xFFFF6AFF, 0xFFFF63FF, 0xFFFF5DFF, 0xFFFF57FF, 0xFFFF51FF, 0xFFFF4BFF, 0xFFFF45FF, 0xFFFF3FFF, 0xFFFF39FF, 0xFFFF33FF, 0xFFFF2CFF, 0xFFFF26FF, 0xFFFF20FF, 0xFFFF1AFF, 0xFFFF14FF, 0xFFFF0EFF, 0xFFFF08FF, 0xFFFF02FF, 0xFFFF04FF, 0xFFFF0AFF, 0xFFFF10FF, 0xFFFF16FF, 0xFFFF1CFF, 0xFFFF22FF, 0xFFFF28FF, 0xFFFF2EFF, 0xFFFF35FF, 0xFFFF3BFF, 0xFFFF41FF, 0xFFFF47FF, 0xFFFF4DFF, 0xFFFF53FF, 0xFFFF59FF, 0xFFFF5FFF, 0xFFFF65FF, 0xFFFF6CFF, 0xFFFF72FF, 0xFFFF78FF, 0xFFFF7EFF, 0xFFFF84FF, 0xFFFF8AFF, 0xFFFF90FF, 0xFFFF96FF, 0xFFFF9DFF, 0xFFFFA3FF, 0xFFFFA9FF, 0xFFFFAFFF, 0xFFFFB5FF, 0xFFFFBBFF, 0xFFFFC1FF, 0xFFFFC7FF, 0xFFFFCEFF, 0xFFFFD4FF, 0xFFFFDAFF, 0xFFFFE0FF, 0xFFFFE6FF, 0xFFFFECFF, 0xFFFFF2FF, 0xFFFFF8FF, 0xFFFFFEFF, 0xFFF8FFFF, 0xFFF2FFFF, 0xFFECFFFF, 0xFFE6FFFF, 0xFFE0FFFF, 0xFFDAFFFF, 0xFFD4FFFF, 0xFFCEFFFF, 0xFFC7FFFF, 0xFFC1FFFF, 0xFFBBFFFF, 0xFFB5FFFF, 0xFFAFFFFF, 0xFFA9FFFF, 0xFFA3FFFF, 0xFF9DFFFF, 0xFF96FFFF, 0xFF90FFFF, 0xFF8AFFFF, 0xFF84FFFF, 0xFF7EFFFF, 0xFF78FFFF, 0xFF72FFFF, 0xFF6CFFFF, 0xFF66FFFF, 0xFF5FFFFF, 0xFF59FFFF, 0xFF53FFFF, 0xFF4DFFFF, 0xFF47FFFF, 0xFF41FFFF, 0xFF3BFFFF, 0xFF35FFFF, 0xFF2EFFFF, 0xFF28FFFF, 0xFF22FFFF, 0xFF1CFFFF, 0xFF16FFFF, 0xFF10FFFF, 0xFF0AFFFF, 0xFF04FFFF, 0xFF02FFFF, 0xFF08FFFF, 0xFF0EFFFF, 0xFF14FFFF, 0xFF1AFFFF, 0xFF20FFFF, 0xFF26FFFF, 0xFF2CFFFF, 0xFF32FFFF, 0xFF39FFFF, 0xFF3FFFFF, 0xFF45FFFF, 0xFF4BFFFF, 0xFF51FFFF, 0xFF57FFFF, 0xFF5DFFFF, 0xFF63FFFF, 0xFF6AFFFF, 0xFF70FFFF, 0xFF76FFFF, 0xFF7CFFFF, 0xFF82FFFF, 0xFF88FFFF, 0xFF8EFFFF, 0xFF94FFFF, 0xFF9BFFFF, 0xFFA1FFFF, 0xFFA7FFFF, 0xFFADFFFF, 0xFFB3FFFF, 0xFFB9FFFF, 0xFFBFFFFF, 0xFFC5FFFF, 0xFFCBFFFF, 0xFFD2FFFF, 0xFFD8FFFF, 0xFFDEFFFF, 0xFFE4FFFF, 0xFFEAFFFF, 0xFFF0FFFF, 0xFFF6FFFF, 0xFFFCFFFF, 0xFFFFFFFA, 0xFFFFFFF4, 0xFFFFFFEE, 0xFFFFFFE8, 0xFFFFFFE2, 0xFFFFFFDC, 0xFFFFFFD6, 0xFFFFFFD0, 0xFFFFFFC9, 0xFFFFFFC3, 0xFFFFFFBD, 0xFFFFFFB7, 0xFFFFFFB1, 0xFFFFFFAB, 0xFFFFFFA5, 0xFFFFFF9F, 0xFFFFFF99, 0xFFFFFF92, 0xFFFFFF8C, 0xFFFFFF86, 0xFFFFFF80, 0xFFFFFF7A, 0xFFFFFF74, 0xFFFFFF6E, 0xFFFFFF68, 0xFFFFFF61, 0xFFFFFF5B, 0xFFFFFF55, 0xFFFFFF4F, 0xFFFFFF49, 0xFFFFFF43, 0xFFFFFF3D, 0xFFFFFF37, 0xFFFFFF30, 0xFFFFFF2A, 0xFFFFFF24, 0xFFFFFF1E, 0xFFFFFF18, 0xFFFFFF12, 0xFFFFFF0C, 0xFFFFFF06, 0xFFFFFF00, 0xFFFFFF06, 0xFFFFFF0C, 0xFFFFFF12, 0xFFFFFF18, 0xFFFFFF1E, 0xFFFFFF24, 0xFFFFFF2A, 0xFFFFFF30, 0xFFFFFF37, 0xFFFFFF3D, 0xFFFFFF43, 0xFFFFFF49, 0xFFFFFF4F, 0xFFFFFF55, 0xFFFFFF5B, 0xFFFFFF61, 0xFFFFFF68, 0xFFFFFF6E, 0xFFFFFF74, 0xFFFFFF7A, 0xFFFFFF80, 0xFFFFFF86, 0xFFFFFF8C, 0xFFFFFF92, 0xFFFFFF98, 0xFFFFFF9F, 0xFFFFFFA5, 0xFFFFFFAB, 0xFFFFFFB1, 0xFFFFFFB7, 0xFFFFFFBD, 0xFFFFFFC3, 0xFFFFFFC9, 0xFFFFFFD0, 0xFFFFFFD6, 0xFFFFFFDC, 0xFFFFFFE2, 0xFFFFFFE8, 0xFFFFFFEE, 0xFFFFFFF4, 0xFFFFFFFA, 0xFFFCFFFC, 0xFFF6FFF6, 0xFFF0FFF0, 0xFFEAFFEA, 0xFFE4FFE4, 0xFFDEFFDE, 0xFFD8FFD8, 0xFFD2FFD2, 0xFFCCFFCC, 0xFFC5FFC5, 0xFFBFFFBF, 0xFFB9FFB9, 0xFFB3FFB3, 0xFFADFFAD, 0xFFA7FFA7, 0xFFA1FFA1, 0xFF9BFF9B, 0xFF94FF94, 0xFF8EFF8E, 0xFF88FF88, 0xFF82FF82, 0xFF7CFF7C, 0xFF76FF76, 0xFF70FF70, 0xFF6AFF6A, 0xFF63FF63, 0xFF5DFF5D, 0xFF57FF57, 0xFF51FF51, 0xFF4BFF4B, 0xFF45FF45, 0xFF3FFF3F, 0xFF39FF39, 0xFF33FF33, 0xFF2CFF2C, 0xFF26FF26, 0xFF20FF20, 0xFF1AFF1A, 0xFF14FF14, 0xFF0EFF0E, 0xFF08FF08, 0xFF02FF02, 0xFF04FF04, 0xFF0AFF0A, 0xFF10FF10, 0xFF16FF16, 0xFF1CFF1C, 0xFF22FF22, 0xFF28FF28, 0xFF2EFF2E, 0xFF35FF35, 0xFF3BFF3B, 0xFF41FF41, 0xFF47FF47, 0xFF4DFF4D, 0xFF53FF53, 0xFF59FF59, 0xFF5FFF5F, 0xFF65FF65, 0xFF6CFF6C, 0xFF72FF72, 0xFF78FF78, 0xFF7EFF7E, 0xFF84FF84, 0xFF8AFF8A, 0xFF90FF90, 0xFF96FF96, 0xFF9DFF9D, 0xFFA3FFA3, 0xFFA9FFA9, 0xFFAFFFAF, 0xFFB5FFB5, 0xFFBBFFBB, 0xFFC1FFC1, 0xFFC7FFC7, 0xFFCEFFCE, 0xFFD4FFD4, 0xFFDAFFDA, 0xFFE0FFE0, 0xFFE6FFE6, 0xFFECFFEC, 0xFFF2FFF2, 0xFFF8FFF8, 0xFFFEFFFE, 0xFFF8F8FF, 0xFFF2F2FF, 0xFFECECFF, 0xFFE6E6FF, 0xFFE0E0FF, 0xFFDADAFF, 0xFFD4D4FF, 0xFFCECEFF, 0xFFC7C7FF, 0xFFC1C1FF, 0xFFBBBBFF, 0xFFB5B5FF, 0xFFAFAFFF, 0xFFA9A9FF, 0xFFA3A3FF, 0xFF9D9DFF, 0xFF9696FF, 0xFF9090FF, 0xFF8A8AFF, 0xFF8484FF, 0xFF7E7EFF, 0xFF7878FF, 0xFF7272FF, 0xFF6C6CFF, 0xFF6666FF, 0xFF5F5FFF, 0xFF5959FF, 0xFF5353FF, 0xFF4D4DFF, 0xFF4747FF, 0xFF4141FF, 0xFF3B3BFF, 0xFF3535FF, 0xFF2E2EFF, 0xFF2828FF, 0xFF2222FF, 0xFF1C1CFF, 0xFF1616FF, 0xFF1010FF, 0xFF0A0AFF, 0xFF0404FF, 0xFF0202FF, 0xFF0808FF, 0xFF0E0EFF, 0xFF1414FF, 0xFF1A1AFF, 0xFF2020FF, 0xFF2626FF, 0xFF2C2CFF, 0xFF3232FF, 0xFF3939FF, 0xFF3F3FFF, 0xFF4545FF, 0xFF4B4BFF, 0xFF5151FF, 0xFF5757FF, 0xFF5D5DFF, 0xFF6363FF, 0xFF6A6AFF, 0xFF7070FF, 0xFF7676FF, 0xFF7C7CFF, 0xFF8282FF, 0xFF8888FF, 0xFF8E8EFF, 0xFF9494FF, 0xFF9B9BFF, 0xFFA1A1FF, 0xFFA7A7FF, 0xFFADADFF, 0xFFB3B3FF, 0xFFB9B9FF, 0xFFBFBFFF, 0xFFC5C5FF, 0xFFCBCBFF, 0xFFD2D2FF, 0xFFD8D8FF, 0xFFDEDEFF, 0xFFE4E4FF, 0xFFEAEAFF, 0xFFF0F0FF, 0xFFF6F6FF, 0xFFFCFCFF, 0xFFFFFAFF, 0xFFFFF4FF, 0xFFFFEEFF, 0xFFFFE8FF, 0xFFFFE2FF, 0xFFFFDCFF, 0xFFFFD6FF, 0xFFFFD0FF, 0xFFFFC9FF, 0xFFFFC3FF, 0xFFFFBDFF, 0xFFFFB7FF, 0xFFFFB1FF, 0xFFFFABFF, 0xFFFFA5FF, 0xFFFF9FFF, 0xFFFF99FF, 0xFFFF92FF, 0xFFFF8CFF, 0xFFFF86FF, 0xFFFF80FF, 0xFFFF7AFF, 0xFFFF74FF, 0xFFFF6EFF, 0xFFFF68FF, 0xFFFF61FF, 0xFFFF5BFF, 0xFFFF55FF, 0xFFFF4FFF, 0xFFFF49FF, 0xFFFF43FF, 0xFFFF3DFF, 0xFFFF37FF, 0xFFFF30FF, 0xFFFF2AFF, 0xFFFF24FF, 0xFFFF1EFF, 0xFFFF18FF, 0xFFFF12FF, 0xFFFF0CFF, 0xFFFF06FF, 0xFFFF00FF, 0xFFFF06FF, 0xFFFF0CFF, 0xFFFF12FF, 0xFFFF18FF, 0xFFFF1EFF, 0xFFFF24FF, 0xFFFF2AFF, 0xFFFF30FF, 0xFFFF37FF, 0xFFFF3DFF, 0xFFFF43FF, 0xFFFF49FF, 0xFFFF4FFF, 0xFFFF55FF, 0xFFFF5BFF, 0xFFFF61FF, 0xFFFF68FF, 0xFFFF6EFF, 0xFFFF74FF, 0xFFFF7AFF, 0xFFFF80FF, 0xFFFF86FF, 0xFFFF8CFF, 0xFFFF92FF, 0xFFFF98FF, 0xFFFF9FFF, 0xFFFFA5FF, 0xFFFFABFF, 0xFFFFB1FF, 0xFFFFB7FF, 0xFFFFBDFF, 0xFFFFC3FF, 0xFFFFC9FF, 0xFFFFD0FF, 0xFFFFD6FF, 0xFFFFDCFF, 0xFFFFE2FF, 0xFFFFE8FF, 0xFFFFEEFF, 0xFFFFF4FF, 0xFFFFFAFF, 0xFFFFFFFC, 0xFFFFFFF6, 0xFFFFFFF0, 0xFFFFFFEA, 0xFFFFFFE4, 0xFFFFFFDE, 0xFFFFFFD8, 0xFFFFFFD2, 0xFFFFFFCC, 0xFFFFFFC5, 0xFFFFFFBF, 0xFFFFFFB9, 0xFFFFFFB3, 0xFFFFFFAD, 0xFFFFFFA7, 0xFFFFFFA1, 0xFFFFFF9B, 0xFFFFFF94, 0xFFFFFF8E, 0xFFFFFF88, 0xFFFFFF82, 0xFFFFFF7C, 0xFFFFFF76, 0xFFFFFF70, 0xFFFFFF6A, 0xFFFFFF63, 0xFFFFFF5D, 0xFFFFFF57, 0xFFFFFF51, 0xFFFFFF4B, 0xFFFFFF45, 0xFFFFFF3F, 0xFFFFFF39, 0xFFFFFF33, 0xFFFFFF2C, 0xFFFFFF26, 0xFFFFFF20, 0xFFFFFF1A, 0xFFFFFF14, 0xFFFFFF0E, 0xFFFFFF08, 0xFFFFFF02, 0xFFFFFF04, 0xFFFFFF0A, 0xFFFFFF10, 0xFFFFFF16, 0xFFFFFF1C, 0xFFFFFF22, 0xFFFFFF28, 0xFFFFFF2E, 0xFFFFFF35, 0xFFFFFF3B, 0xFFFFFF41, 0xFFFFFF47, 0xFFFFFF4D, 0xFFFFFF53, 0xFFFFFF59, 0xFFFFFF5F, 0xFFFFFF65, 0xFFFFFF6C, 0xFFFFFF72, 0xFFFFFF78, 0xFFFFFF7E, 0xFFFFFF84, 0xFFFFFF8A, 0xFFFFFF90, 0xFFFFFF96, 0xFFFFFF9D, 0xFFFFFFA3, 0xFFFFFFA9, 0xFFFFFFAF, 0xFFFFFFB5, 0xFFFFFFBB, 0xFFFFFFC1, 0xFFFFFFC7, 0xFFFFFFCE, 0xFFFFFFD4, 0xFFFFFFDA, 0xFFFFFFE0, 0xFFFFFFE6, 0xFFFFFFEC, 0xFFFFFFF2, 0xFFFFFFF8, 0xFFFFFFFE, 0xFFFFF8F8, 0xFFFFF2F2, 0xFFFFECEC, 0xFFFFE6E6, 0xFFFFE0E0, 0xFFFFDADA, 0xFFFFD4D4, 0xFFFFCECE, 0xFFFFC7C7, 0xFFFFC1C1, 0xFFFFBBBB, 0xFFFFB5B5, 0xFFFFAFAF, 0xFFFFA9A9, 0xFFFFA3A3, 0xFFFF9D9D, 0xFFFF9696, 0xFFFF9090, 0xFFFF8A8A, 0xFFFF8484, 0xFFFF7E7E, 0xFFFF7878, 0xFFFF7272, 0xFFFF6C6C, 0xFFFF6666, 0xFFFF5F5F, 0xFFFF5959, 0xFFFF5353, 0xFFFF4D4D, 0xFFFF4747, 0xFFFF4141, 0xFFFF3B3B, 0xFFFF3535, 0xFFFF2E2E, 0xFFFF2828, 0xFFFF2222, 0xFFFF1C1C, 0xFFFF1616, 0xFFFF1010, 0xFFFF0A0A, 0xFFFF0404, 0xFFFF0202, 0xFFFF0808, 0xFFFF0E0E, 0xFFFF1414, 0xFFFF1A1A, 0xFFFF2020, 0xFFFF2626, 0xFFFF2C2C, 0xFFFF3232, 0xFFFF3939, 0xFFFF3F3F, 0xFFFF4545, 0xFFFF4B4B, 0xFFFF5151, 0xFFFF5757, 0xFFFF5D5D, 0xFFFF6363, 0xFFFF6A6A, 0xFFFF7070, 0xFFFF7676, 0xFFFF7C7C, 0xFFFF8282, 0xFFFF8888, 0xFFFF8E8E, 0xFFFF9494, 0xFFFF9B9B, 0xFFFFA1A1, 0xFFFFA7A7, 0xFFFFADAD, 0xFFFFB3B3, 0xFFFFB9B9, 0xFFFFBFBF, 0xFFFFC5C5, 0xFFFFCBCB, 0xFFFFD2D2, 0xFFFFD8D8, 0xFFFFDEDE, 0xFFFFE4E4, 0xFFFFEAEA, 0xFFFFF0F0, 0xFFFFF6F6, 0xFFFFFCFC, 0xFFFAFFFF, 0xFFF4FFFF, 0xFFEEFFFF, 0xFFE8FFFF, 0xFFE2FFFF, 0xFFDCFFFF, 0xFFD6FFFF, 0xFFD0FFFF, 0xFFC9FFFF, 0xFFC3FFFF, 0xFFBDFFFF, 0xFFB7FFFF, 0xFFB1FFFF, 0xFFABFFFF, 0xFFA5FFFF, 0xFF9FFFFF, 0xFF99FFFF, 0xFF92FFFF, 0xFF8CFFFF, 0xFF86FFFF, 0xFF80FFFF, 0xFF7AFFFF, 0xFF74FFFF, 0xFF6EFFFF, 0xFF68FFFF, 0xFF61FFFF, 0xFF5BFFFF, 0xFF55FFFF, 0xFF4FFFFF, 0xFF49FFFF, 0xFF43FFFF, 0xFF3DFFFF, 0xFF37FFFF, 0xFF30FFFF, 0xFF2AFFFF, 0xFF24FFFF, 0xFF1EFFFF, 0xFF18FFFF, 0xFF12FFFF, 0xFF0CFFFF, 0xFF06FFFF, 0xFF191999, 0xFF000000, 0xFF020202, 0xFF050505, 0xFF070707, 0xFF0A0A0A, 0xFF0C0C0C, 0xFF0F0F0F, 0xFF121212, 0xFF141414, 0xFF171717, 0xFF191919, 0xFF1C1C1C, 0xFF1E1E1E, 0xFF212121, 0xFF242424, 0xFF262626, 0xFF292929, 0xFF2B2B2B, 0xFF2E2E2E, 0xFF303030, 0xFF333333, 0xFF363636, 0xFF383838, 0xFF3B3B3B, 0xFF3D3D3D, 0xFF404040, 0xFF424242, 0xFF454545, 0xFF484848, 0xFF4A4A4A, 0xFF4D4D4D, 0xFF4F4F4F, 0xFF525252, 0xFF555555, 0xFF575757, 0xFF5A5A5A, 0xFF5C5C5C, 0xFF5F5F5F, 0xFF616161, 0xFF646464, 0xFF676767, 0xFF696969, 0xFF6C6C6C, 0xFF6E6E6E, 0xFF717171, 0xFF737373, 0xFF767676, 0xFF797979, 0xFF7B7B7B, 0xFF7E7E7E, 0xFF808080, 0xFF838383, 0xFF858585, 0xFF888888, 0xFF8B8B8B, 0xFF8D8D8D, 0xFF909090, 0xFF929292, 0xFF959595, 0xFF979797, 0xFF9A9A9A, 0xFF9D9D9D, 0xFF9F9F9F, 0xFFA2A2A2, 0xFFA4A4A4, 0xFFA7A7A7, 0xFFAAAAAA, 0xFFACACAC, 0xFFAFAFAF, 0xFFB1B1B1, 0xFFB4B4B4, 0xFFB6B6B6, 0xFFB9B9B9, 0xFFBCBCBC, 0xFFBEBEBE, 0xFFC1C1C1, 0xFFC3C3C3, 0xFFC6C6C6, 0xFFC8C8C8, 0xFFCBCBCB, 0xFFCECECE, 0xFFD0D0D0, 0xFFD3D3D3, 0xFFD5D5D5, 0xFFD8D8D8, 0xFFDADADA, 0xFFDDDDDD, 0xFFE0E0E0, 0xFFE2E2E2, 0xFFE5E5E5, 0xFFE7E7E7, 0xFFEAEAEA, 0xFFECECEC, 0xFFEFEFEF, 0xFFF2F2F2, 0xFFF4F4F4, 0xFFF7F7F7, 0xFFF9F9F9, 0xFFFCFCFC, 0xFFFFFFFF, 0xFFFF00FF, 0xFFFD00FF, 0xFFFC00FF, 0xFFFA00FF, 0xFFF900FF, 0xFFF700FF, 0xFFF600FF, 0xFFF500FF, 0xFFF300FF, 0xFFF200FF, 0xFFF000FF, 0xFFEF00FF, 0xFFED00FF, 0xFFEC00FF, 0xFFEB00FF, 0xFFE900FF, 0xFFE800FF, 0xFFE600FF, 0xFFE500FF, 0xFFE300FF, 0xFFE200FF, 0xFFE100FF, 0xFFDF00FF, 0xFFDE00FF, 0xFFDC00FF, 0xFFDB00FF, 0xFFD900FF, 0xFFD800FF, 0xFFD700FF, 0xFFD500FF, 0xFFD400FF, 0xFFD200FF, 0xFFD100FF, 0xFFCF00FF, 0xFFCE00FF, 0xFFCD00FF, 0xFFCB00FF, 0xFFC900FF, 0xFFC700FF, 0xFFC400FF, 0xFFC200FF, 0xFFC000FF, 0xFFBE00FF, 0xFFBC00FF, 0xFFBA00FF, 0xFFB800FF, 0xFFB500FF, 0xFFB300FF, 0xFFB100FF, 0xFFAF00FF, 0xFFAD00FF, 0xFFAB00FF, 0xFFA900FF, 0xFFA600FF, 0xFFA400FF, 0xFFA200FF, 0xFFA000FF, 0xFF9E00FF, 0xFF9C00FF, 0xFF9A00FF, 0xFF9700FF, 0xFF9500FF, 0xFF9300FF, 0xFF9100FF, 0xFF8F00FF, 0xFF8D00FF, 0xFF8B00FF, 0xFF8800FF, 0xFF8600FF, 0xFF8400FF, 0xFF8200FF, 0xFF8000FF, 0xFF7D00FF, 0xFF7900FF, 0xFF7600FF, 0xFF7200FF, 0xFF6F00FF, 0xFF6B00FF, 0xFF6800FF, 0xFF6400FF, 0xFF6000FF, 0xFF5D00FF, 0xFF5900FF, 0xFF5600FF, 0xFF5200FF, 0xFF4F00FF, 0xFF4B00FF, 0xFF4700FF, 0xFF4400FF, 0xFF4000FF, 0xFF3D00FF, 0xFF3900FF, 0xFF3600FF, 0xFF3200FF, 0xFF2E00FF, 0xFF2B00FF, 0xFF2700FF, 0xFF2400FF, 0xFF2000FF, 0xFF1D00FF, 0xFF1900FF, 0xFF1500FF, 0xFF1200FF, 0xFF0E00FF, 0xFF0B00FF, 0xFF0700FF, 0xFF0400FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0000FF, 0xFF0001FF, 0xFF0003FF, 0xFF0004FF, 0xFF0005FF, 0xFF0007FF, 0xFF0008FF, 0xFF000AFF, 0xFF000BFF, 0xFF000DFF, 0xFF000EFF, 0xFF000FFF, 0xFF0011FF, 0xFF0012FF, 0xFF0014FF, 0xFF0015FF, 0xFF0017FF, 0xFF0018FF, 0xFF0019FF, 0xFF001BFF, 0xFF001CFF, 0xFF001EFF, 0xFF001FFF, 0xFF0021FF, 0xFF0022FF, 0xFF0023FF, 0xFF0025FF, 0xFF0026FF, 0xFF0028FF, 0xFF0029FF, 0xFF002BFF, 0xFF002CFF, 0xFF002DFF, 0xFF002FFF, 0xFF0030FF, 0xFF0032FF, 0xFF0033FF, 0xFF0036FF, 0xFF0038FF, 0xFF003AFF, 0xFF003CFF, 0xFF003EFF, 0xFF0040FF, 0xFF0042FF, 0xFF0045FF, 0xFF0047FF, 0xFF0049FF, 0xFF004BFF, 0xFF004DFF, 0xFF004FFF, 0xFF0051FF, 0xFF0054FF, 0xFF0056FF, 0xFF0058FF, 0xFF005AFF, 0xFF005CFF, 0xFF005EFF, 0xFF0060FF, 0xFF0063FF, 0xFF0065FF, 0xFF0067FF, 0xFF0069FF, 0xFF006BFF, 0xFF006DFF, 0xFF006FFF, 0xFF0072FF, 0xFF0074FF, 0xFF0076FF, 0xFF0078FF, 0xFF007AFF, 0xFF007CFF, 0xFF007EFF, 0xFF0081FF, 0xFF0083FF, 0xFF0085FF, 0xFF0087FF, 0xFF0089FF, 0xFF008BFF, 0xFF008DFF, 0xFF0090FF, 0xFF0092FF, 0xFF0094FF, 0xFF0096FF, 0xFF0098FF, 0xFF009AFF, 0xFF009CFF, 0xFF009FFF, 0xFF00A1FF, 0xFF00A3FF, 0xFF00A5FF, 0xFF00A7FF, 0xFF00A9FF, 0xFF00ABFF, 0xFF00AEFF, 0xFF00B0FF, 0xFF00B2FF, 0xFF00B4FF, 0xFF00B6FF, 0xFF00B8FF, 0xFF00BAFF, 0xFF00BDFF, 0xFF00BFFF, 0xFF00C1FF, 0xFF00C3FF, 0xFF00C5FF, 0xFF00C7FF, 0xFF00C9FF, 0xFF00CBFF, 0xFF00CDFF, 0xFF00CEFF, 0xFF00D0FF, 0xFF00D1FF, 0xFF00D3FF, 0xFF00D4FF, 0xFF00D5FF, 0xFF00D7FF, 0xFF00D8FF, 0xFF00DAFF, 0xFF00DBFF, 0xFF00DDFF, 0xFF00DEFF, 0xFF00DFFF, 0xFF00E1FF, 0xFF00E2FF, 0xFF00E4FF, 0xFF00E5FF, 0xFF00E7FF, 0xFF00E8FF, 0xFF00E9FF, 0xFF00EBFF, 0xFF00ECFF, 0xFF00EEFF, 0xFF00EFFF, 0xFF00F1FF, 0xFF00F2FF, 0xFF00F3FF, 0xFF00F5FF, 0xFF00F6FF, 0xFF00F8FF, 0xFF00F9FF, 0xFF00FBFF, 0xFF00FCFF, 0xFF00FDFF, 0xFF00FFFE, 0xFF00FFFD, 0xFF00FFFB, 0xFF00FFFA, 0xFF00FFF8, 0xFF00FFF7, 0xFF00FFF6, 0xFF00FFF4, 0xFF00FFF3, 0xFF00FFF1, 0xFF00FFF0, 0xFF00FFEE, 0xFF00FFED, 0xFF00FFEC, 0xFF00FFEA, 0xFF00FFE9, 0xFF00FFE7, 0xFF00FFE6, 0xFF00FFE4, 0xFF00FFE3, 0xFF00FFE2, 0xFF00FFE0, 0xFF00FFDF, 0xFF00FFDD, 0xFF00FFDC, 0xFF00FFDA, 0xFF00FFD9, 0xFF00FFD8, 0xFF00FFD6, 0xFF00FFD5, 0xFF00FFD3, 0xFF00FFD2, 0xFF00FFD0, 0xFF00FFCF, 0xFF00FFCE, 0xFF00FFCC, 0xFF00FFCA, 0xFF00FFC8, 0xFF00FFC6, 0xFF00FFC4, 0xFF00FFC2, 0xFF00FFC0, 0xFF00FFBD, 0xFF00FFBB, 0xFF00FFB9, 0xFF00FFB7, 0xFF00FFB5, 0xFF00FFB3, 0xFF00FFB1, 0xFF00FFAE, 0xFF00FFAC, 0xFF00FFAA, 0xFF00FFA8, 0xFF00FFA6, 0xFF00FFA4, 0xFF00FFA2, 0xFF00FF9F, 0xFF00FF9D, 0xFF00FF9B, 0xFF00FF99, 0xFF00FF97, 0xFF00FF95, 0xFF00FF93, 0xFF00FF90, 0xFF00FF8E, 0xFF00FF8C, 0xFF00FF8A, 0xFF00FF88, 0xFF00FF86, 0xFF00FF84, 0xFF00FF81, 0xFF00FF7F, 0xFF00FF7D, 0xFF00FF7B, 0xFF00FF79, 0xFF00FF77, 0xFF00FF75, 0xFF00FF72, 0xFF00FF70, 0xFF00FF6E, 0xFF00FF6C, 0xFF00FF6A, 0xFF00FF68, 0xFF00FF66, 0xFF00FF63, 0xFF00FF61, 0xFF00FF5F, 0xFF00FF5D, 0xFF00FF5B, 0xFF00FF59, 0xFF00FF57, 0xFF00FF54, 0xFF00FF52, 0xFF00FF50, 0xFF00FF4E, 0xFF00FF4C, 0xFF00FF4A, 0xFF00FF48, 0xFF00FF45, 0xFF00FF43, 0xFF00FF41, 0xFF00FF3F, 0xFF00FF3D, 0xFF00FF3B, 0xFF00FF39, 0xFF00FF36, 0xFF00FF34, 0xFF00FF32, 0xFF00FF31, 0xFF00FF2F, 0xFF00FF2E, 0xFF00FF2D, 0xFF00FF2B, 0xFF00FF2A, 0xFF00FF28, 0xFF00FF27, 0xFF00FF25, 0xFF00FF24, 0xFF00FF23, 0xFF00FF21, 0xFF00FF20, 0xFF00FF1E, 0xFF00FF1D, 0xFF00FF1B, 0xFF00FF1A, 0xFF00FF19, 0xFF00FF17, 0xFF00FF16, 0xFF00FF14, 0xFF00FF13, 0xFF00FF11, 0xFF00FF10, 0xFF00FF0F, 0xFF00FF0D, 0xFF00FF0C, 0xFF00FF0A, 0xFF00FF09, 0xFF00FF07, 0xFF00FF06, 0xFF00FF05, 0xFF00FF03, 0xFF00FF02, 0xFF00FF00, 0xFF00FF00, 0xFF02FF00, 0xFF03FF00, 0xFF04FF00, 0xFF06FF00, 0xFF07FF00, 0xFF09FF00, 0xFF0AFF00, 0xFF0CFF00, 0xFF0DFF00, 0xFF0EFF00, 0xFF10FF00, 0xFF11FF00, 0xFF13FF00, 0xFF14FF00, 0xFF16FF00, 0xFF17FF00, 0xFF18FF00, 0xFF1AFF00, 0xFF1BFF00, 0xFF1DFF00, 0xFF1EFF00, 0xFF20FF00, 0xFF21FF00, 0xFF22FF00, 0xFF24FF00, 0xFF25FF00, 0xFF27FF00, 0xFF28FF00, 0xFF2AFF00, 0xFF2BFF00, 0xFF2CFF00, 0xFF2EFF00, 0xFF2FFF00, 0xFF31FF00, 0xFF32FF00, 0xFF34FF00, 0xFF36FF00, 0xFF38FF00, 0xFF3AFF00, 0xFF3DFF00, 0xFF3FFF00, 0xFF41FF00, 0xFF43FF00, 0xFF45FF00, 0xFF47FF00, 0xFF49FF00, 0xFF4CFF00, 0xFF4EFF00, 0xFF50FF00, 0xFF52FF00, 0xFF54FF00, 0xFF56FF00, 0xFF58FF00, 0xFF5BFF00, 0xFF5DFF00, 0xFF5FFF00, 0xFF61FF00, 0xFF63FF00, 0xFF65FF00, 0xFF67FF00, 0xFF6AFF00, 0xFF6CFF00, 0xFF6EFF00, 0xFF70FF00, 0xFF72FF00, 0xFF74FF00, 0xFF76FF00, 0xFF79FF00, 0xFF7BFF00, 0xFF7DFF00, 0xFF7FFF00, 0xFF81FF00, 0xFF83FF00, 0xFF85FF00, 0xFF88FF00, 0xFF8AFF00, 0xFF8CFF00, 0xFF8EFF00, 0xFF90FF00, 0xFF92FF00, 0xFF94FF00, 0xFF97FF00, 0xFF99FF00, 0xFF9BFF00, 0xFF9DFF00, 0xFF9FFF00, 0xFFA1FF00, 0xFFA3FF00, 0xFFA6FF00, 0xFFA8FF00, 0xFFAAFF00, 0xFFACFF00, 0xFFAEFF00, 0xFFB0FF00, 0xFFB2FF00, 0xFFB5FF00, 0xFFB7FF00, 0xFFB9FF00, 0xFFBBFF00, 0xFFBDFF00, 0xFFBFFF00, 0xFFC1FF00, 0xFFC4FF00, 0xFFC6FF00, 0xFFC8FF00, 0xFFCAFF00, 0xFFCCFF00, 0xFFCDFF00, 0xFFCFFF00, 0xFFD0FF00, 0xFFD2FF00, 0xFFD3FF00, 0xFFD4FF00, 0xFFD6FF00, 0xFFD7FF00, 0xFFD9FF00, 0xFFDAFF00, 0xFFDCFF00, 0xFFDDFF00, 0xFFDEFF00, 0xFFE0FF00, 0xFFE1FF00, 0xFFE3FF00, 0xFFE4FF00, 0xFFE6FF00, 0xFFE7FF00, 0xFFE8FF00, 0xFFEAFF00, 0xFFEBFF00, 0xFFEDFF00, 0xFFEEFF00, 0xFFF0FF00, 0xFFF1FF00, 0xFFF2FF00, 0xFFF4FF00, 0xFFF5FF00, 0xFFF7FF00, 0xFFF8FF00, 0xFFFAFF00, 0xFFFBFF00, 0xFFFCFF00, 0xFFFEFF00, 0xFFFFFE00, 0xFFFFFD00, 0xFFFFFD00, 0xFFFFFC00, 0xFFFFFB00, 0xFFFFFB00, 0xFFFFFA00, 0xFFFFF900, 0xFFFFF800, 0xFFFFF800, 0xFFFFF700, 0xFFFFF600, 0xFFFFF600, 0xFFFFF500, 0xFFFFF400, 0xFFFFF300, 0xFFFFF300, 0xFFFFF200, 0xFFFFF100, 0xFFFFF100, 0xFFFFF000, 0xFFFFEF00, 0xFFFFEE00, 0xFFFFEE00, 0xFFFFED00, 0xFFFFEC00, 0xFFFFEC00, 0xFFFFEB00, 0xFFFFEA00, 0xFFFFE900, 0xFFFFE900, 0xFFFFE800, 0xFFFFE700, 0xFFFFE700, 0xFFFFE600, 0xFFFFE500, 0xFFFFE400, 0xFFFFE300, 0xFFFFE200, 0xFFFFE100, 0xFFFFE000, 0xFFFFDF00, 0xFFFFDE00, 0xFFFFDD00, 0xFFFFDC00, 0xFFFFDA00, 0xFFFFD900, 0xFFFFD800, 0xFFFFD700, 0xFFFFD600, 0xFFFFD500, 0xFFFFD400, 0xFFFFD300, 0xFFFFD200, 0xFFFFD100, 0xFFFFD000, 0xFFFFCF00, 0xFFFFCE00, 0xFFFFCD00, 0xFFFFCB00, 0xFFFFCA00, 0xFFFFC900, 0xFFFFC800, 0xFFFFC700, 0xFFFFC600, 0xFFFFC500, 0xFFFFC400, 0xFFFFC300, 0xFFFFC200, 0xFFFFC100, 0xFFFFC000, 0xFFFFBF00, 0xFFFFBE00, 0xFFFFBC00, 0xFFFFBB00, 0xFFFFBA00, 0xFFFFB900, 0xFFFFB800, 0xFFFFB700, 0xFFFFB600, 0xFFFFB500, 0xFFFFB400, 0xFFFFB300, 0xFFFFB200, 0xFFFFB100, 0xFFFFB000, 0xFFFFAF00, 0xFFFFAD00, 0xFFFFAC00, 0xFFFFAB00, 0xFFFFAA00, 0xFFFFA900, 0xFFFFA800, 0xFFFFA700, 0xFFFFA600, 0xFFFFA500, 0xFFFFA400, 0xFFFFA300, 0xFFFFA200, 0xFFFFA100, 0xFFFFA000, 0xFFFF9E00, 0xFFFF9D00, 0xFFFF9C00, 0xFFFF9B00, 0xFFFF9A00, 0xFFFF9900, 0xFFFF9800, 0xFFFF9700, 0xFFFF9700, 0xFFFF9600, 0xFFFF9500, 0xFFFF9500, 0xFFFF9400, 0xFFFF9300, 0xFFFF9200, 0xFFFF9200, 0xFFFF9100, 0xFFFF9000, 0xFFFF9000, 0xFFFF8F00, 0xFFFF8E00, 0xFFFF8D00, 0xFFFF8D00, 0xFFFF8C00, 0xFFFF8B00, 0xFFFF8B00, 0xFFFF8A00, 0xFFFF8900, 0xFFFF8800, 0xFFFF8800, 0xFFFF8700, 0xFFFF8600, 0xFFFF8600, 0xFFFF8500, 0xFFFF8400, 0xFFFF8300, 0xFFFF8300, 0xFFFF8200, 0xFFFF8100, 0xFFFF8100, 0xFFFF8000, 0xFFFF7F00, 0xFFFF7E00, 0xFFFF7E00, 0xFFFF7D00, 0xFFFF7C00, 0xFFFF7C00, 0xFFFF7B00, 0xFFFF7A00, 0xFFFF7900, 0xFFFF7900, 0xFFFF7800, 0xFFFF7700, 0xFFFF7700, 0xFFFF7600, 0xFFFF7500, 0xFFFF7400, 0xFFFF7400, 0xFFFF7300, 0xFFFF7200, 0xFFFF7200, 0xFFFF7100, 0xFFFF7000, 0xFFFF6F00, 0xFFFF6F00, 0xFFFF6E00, 0xFFFF6D00, 0xFFFF6D00, 0xFFFF6C00, 0xFFFF6B00, 0xFFFF6A00, 0xFFFF6A00, 0xFFFF6900, 0xFFFF6800, 0xFFFF6800, 0xFFFF6700, 0xFFFF6600, 0xFFFF6600, 0xFFFF6500, 0xFFFF6400, 0xFFFF6300, 0xFFFF6300, 0xFFFF6200, 0xFFFF6100, 0xFFFF6100, 0xFFFF6000, 0xFFFF5F00, 0xFFFF5E00, 0xFFFF5E00, 0xFFFF5D00, 0xFFFF5C00, 0xFFFF5C00, 0xFFFF5B00, 0xFFFF5A00, 0xFFFF5900, 0xFFFF5900, 0xFFFF5800, 0xFFFF5700, 0xFFFF5700, 0xFFFF5600, 0xFFFF5500, 0xFFFF5400, 0xFFFF5400, 0xFFFF5300, 0xFFFF5200, 0xFFFF5200, 0xFFFF5100, 0xFFFF5000, 0xFFFF4F00, 0xFFFF4F00, 0xFFFF4E00, 0xFFFF4D00, 0xFFFF4D00, 0xFFFF4C00, 0xFFFF4B00, 0xFFFF4A00, 0xFFFF4A00, 0xFFFF4900, 0xFFFF4800, 0xFFFF4800, 0xFFFF4700, 0xFFFF4600, 0xFFFF4500, 0xFFFF4500, 0xFFFF4400, 0xFFFF4300, 0xFFFF4300, 0xFFFF4200, 0xFFFF4100, 0xFFFF4000, 0xFFFF4000, 0xFFFF3F00, 0xFFFF3E00, 0xFFFF3E00, 0xFFFF3D00, 0xFFFF3C00, 0xFFFF3B00, 0xFFFF3B00, 0xFFFF3A00, 0xFFFF3900, 0xFFFF3900, 0xFFFF3800, 0xFFFF3700, 0xFFFF3600, 0xFFFF3600, 0xFFFF3500, 0xFFFF3400, 0xFFFF3400, 0xFFFF3300, 0xFFFF3200, 0xFFFF3000, 0xFFFF2F00, 0xFFFF2D00, 0xFFFF2C00, 0xFFFF2B00, 0xFFFF2900, 0xFFFF2800, 0xFFFF2600, 0xFFFF2500, 0xFFFF2300, 0xFFFF2200, 0xFFFF2100, 0xFFFF1F00, 0xFFFF1E00, 0xFFFF1C00, 0xFFFF1B00, 0xFFFF1900, 0xFFFF1800, 0xFFFF1700, 0xFFFF1500, 0xFFFF1400, 0xFFFF1200, 0xFFFF1100, 0xFFFF0F00, 0xFFFF0E00, 0xFFFF0D00, 0xFFFF0B00, 0xFFFF0A00, 0xFFFF0800, 0xFFFF0700, 0xFFFF0500, 0xFFFF0400, 0xFFFF0300, 0xFFFF0100, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0004, 0xFFFF0007, 0xFFFF000B, 0xFFFF000E, 0xFFFF0012, 0xFFFF0015, 0xFFFF0019, 0xFFFF001D, 0xFFFF0020, 0xFFFF0024, 0xFFFF0027, 0xFFFF002B, 0xFFFF002E, 0xFFFF0032, 0xFFFF0036, 0xFFFF0039, 0xFFFF003D, 0xFFFF0040, 0xFFFF0044, 0xFFFF0047, 0xFFFF004B, 0xFFFF004F, 0xFFFF0052, 0xFFFF0056, 0xFFFF0059, 0xFFFF005D, 0xFFFF0060, 0xFFFF0064, 0xFFFF0068, 0xFFFF006B, 0xFFFF006F, 0xFFFF0072, 0xFFFF0076, 0xFFFF0079, 0xFFFF007D, 0xFFFF0080, 0xFFFF0082, 0xFFFF0084, 0xFFFF0086, 0xFFFF0088, 0xFFFF008B, 0xFFFF008D, 0xFFFF008F, 0xFFFF0091, 0xFFFF0093, 0xFFFF0095, 0xFFFF0097, 0xFFFF009A, 0xFFFF009C, 0xFFFF009E, 0xFFFF00A0, 0xFFFF00A2, 0xFFFF00A4, 0xFFFF00A6, 0xFFFF00A9, 0xFFFF00AB, 0xFFFF00AD, 0xFFFF00AF, 0xFFFF00B1, 0xFFFF00B3, 0xFFFF00B5, 0xFFFF00B8, 0xFFFF00BA, 0xFFFF00BC, 0xFFFF00BE, 0xFFFF00C0, 0xFFFF00C2, 0xFFFF00C4, 0xFFFF00C7, 0xFFFF00C9, 0xFFFF00CB, 0xFFFF00CD, 0xFFFF00CE, 0xFFFF00CF, 0xFFFF00D1, 0xFFFF00D2, 0xFFFF00D4, 0xFFFF00D5, 0xFFFF00D7, 0xFFFF00D8, 0xFFFF00D9, 0xFFFF00DB, 0xFFFF00DC, 0xFFFF00DE, 0xFFFF00DF, 0xFFFF00E1, 0xFFFF00E2, 0xFFFF00E3, 0xFFFF00E5, 0xFFFF00E6, 0xFFFF00E8, 0xFFFF00E9, 0xFFFF00EB, 0xFFFF00EC, 0xFFFF00ED, 0xFFFF00EF, 0xFFFF00F0, 0xFFFF00F2, 0xFFFF00F3, 0xFFFF00F5, 0xFFFF00F6, 0xFFFF00F7, 0xFFFF00F9, 0xFFFF00FA, 0xFFFF00FC, 0xFFFF00FD, 0xFFFFFF7F, 0xFF7FFFFF, 0xFFFF7F7F, 0xFFA5E5A5, 0xFF999919, 0xFF991999, 0xFF199999, 0xFFBFBFFF, 0xFFFFCC7F, 0xFFCCFFFF, 0xFF66B2B2, 0xFF84BF00, 0xFFB24C66, 0xFFB78C4C, 0xFF8CB266, 0xFF8C3F99, 0xFFB27F7F, 0xFFFF7F7F, 0xFFFFBFDD, 0xFF3FFFBF, 0xFFBFFF3F, 0xFF337FCC, 0xFFD8D8FF, 0xFFD8337F, 0xFFBA8C84, 0xFFD9FFFF, 0xFFCC7FFF, 0xFFC2FF00, 0xFFFFB5B5, 0xFFB3FFFF, 0xFFB3E3F5, 0xFFAB5CF2, 0xFF8AFF00, 0xFFBFA6A6, 0xFFF0C8A0, 0xFFFF7F00, 0xFF1FF01F, 0xFF7FD1E3, 0xFF8F3FD4, 0xFF3DFF00, 0xFFE6E6E6, 0xFFBFC2C7, 0xFFA6A6AB, 0xFF8A99C7, 0xFF9C7AC7, 0xFFE06633, 0xFFF090A0, 0xFF50D050, 0xFFC87F33, 0xFF7D7FB0, 0xFFC28F8F, 0xFF668F8F, 0xFFBD7FE3, 0xFFFFA100, 0xFFA62929, 0xFF5CB8D1, 0xFF702EB0, 0xFF00FF00, 0xFF94FFFF, 0xFF94E0E0, 0xFF73C2C9, 0xFF54B5B5, 0xFF3B9E9E, 0xFF248F8F, 0xFF0A7D8C, 0xFF006985, 0xFFC0C0C0, 0xFFFFD98F, 0xFFA67573, 0xFF667F7F, 0xFF9E63B5, 0xFFD47A00, 0xFF940094, 0xFF429EB0, 0xFF57178F, 0xFF00C900, 0xFF70D4FF, 0xFFFFFFC7, 0xFFD9FFC7, 0xFFC7FFC7, 0xFFA3FFC7, 0xFF8FFFC7, 0xFF61FFC7, 0xFF45FFC7, 0xFF30FFC7, 0xFF1FFFC7, 0xFF00FF9C, 0xFF00E675, 0xFF00D452, 0xFF00BF38, 0xFF00AB24, 0xFF4DC2FF, 0xFF4DA6FF, 0xFF2194D6, 0xFF267DAB, 0xFF266696, 0xFF175487, 0xFFD0D0E0, 0xFFFFD123, 0xFFB8B8D0, 0xFFA6544D, 0xFF575961, 0xFF9E4FB5, 0xFFAB5C00, 0xFF754F45, 0xFF428296, 0xFF420066, 0xFF007D00, 0xFF70ABFA, 0xFF00BAFF, 0xFF00A1FF, 0xFF008FFF, 0xFF007FFF, 0xFF006BFF, 0xFF545CF2, 0xFF785CE3, 0xFF8A4FE3, 0xFFA136D4, 0xFFB31FD4, 0xFFB31FBA, 0xFFB30DA6, 0xFFBD0D87, 0xFFC70066, 0xFFCC0059, 0xFFD1004F, 0xFFD90045, 0xFFE00038, 0xFFE6002E, 0xFFEB0026, 0xFFE5E5E5]); +c$.moreColors = new java.util.Hashtable(); +c$.v176 = Clazz_newIntArray(-1, [0, 164, 1, 0, 2, 4, 3, 8, 4, 12, 5, 16, 6, 20, 7, 24, 9, 32, 10, 36, 11, 40, 13, 48, 14, 52, 15, 56, 16, 60, 17, -64, 18, -68, 19, -72, 20, 76, 28, 80, 29, 82, 30, 83, 21, 84, 22, 85, 43, 86, 31, 87, 32, 88, 24, 90, 44, 91, 33, 92, 25, 93, 26, 94, 27, 95, 46, 0x01, 47, 0x01, 48, 0x01, 49, 0x01, 50, 0x01, 51, 0x01, 34, 96, 35, 100, 36, 105, 37, 110, 38, 115, 39, 122, 40, 124, 41, 126, 45, 132]); +c$.v177 = Clazz_newIntArray(-1, [0, 144, 1, 8, 2, 12, 3, 16, 4, 20, 5, 24, 6, 28, 7, 32, 9, 40, 10, 44, 11, 48, 13, 56, 14, 60, 15, 64, 16, 68, 17, -72, 18, -76, 19, -80, 20, 84, 21, 96, 22, 96, 24, 96, 25, 97, 26, 97, 27, 97, 46, 0x01, 47, 0x02, 48, 0x08, 49, 0x01, 50, 0x02, 51, 0x04, 28, 98, 29, 99, 30, 100, 31, 101, 32, 102, 33, 103, 34, 104, 35, 108, 36, 113, 37, 118, 38, 123, 39, 129, 40, 131, 41, 133, 43, 140, 44, 141]); +c$.v181 = Clazz_newIntArray(-1, [0, 120, 45, 0, 35, -12, 34, -16, 41, -20, 36, -24, 17, -28, 18, -32, 19, -36, 1, 40, 2, 44, 3, 48, 4, 52, 5, 56, 6, 60, 7, 64, 9, 68, 10, 72, 11, 76, 13, 80, 14, 84, 15, 88, 16, 92, 20, 96, 21, 100, 22, 100, 24, 100, 25, 100, 26, 100, 27, 100, 46, 0x01, 47, 0x02, 48, 0x04, 49, 0x08, 50, 0x10, 51, 0x20, 28, 101, 30, 102, 31, 103, 32, 104, 33, 105, 42, 106, 37, 107, 39, 112, 40, 114, 29, 116, 43, 117, 44, 118]); +c$.v176b = Clazz_newIntArray(-1, [0, 32, 1, 0, 2, 4, 3, 8, 4, 12, 5, 16, 6, 26]); +c$.v177b = Clazz_newIntArray(-1, [0, 24, 1, 0, 2, 4, 4, 8, 5, 12, 3, 20, 6, 23]); +c$.v181b = Clazz_newIntArray(-1, [0, 20, 1, 0, 2, 4, 4, 8, 5, 12, 3, 16, 6, 18]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.pymol"); +Clazz_load(null, "J.adapter.readers.pymol.JmolObject", ["JU.P3", "$.PT", "$.SB", "J.adapter.readers.pymol.PyMOLReader", "JU.BSUtil", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.id = 0; +this.bsAtoms = null; +this.info = null; +this.size = -1; +this.colors = null; +this.modelIndex = -2147483648; +this.jmolName = null; +this.argb = 0; +this.translucency = 0; +this.visible = true; +this.rd = null; +this.cacheID = null; +Clazz_instantialize(this, arguments);}, J.adapter.readers.pymol, "JmolObject", null); +Clazz_makeConstructor(c$, +function(id, branchNameID, bsAtoms, info){ +this.id = id; +this.bsAtoms = bsAtoms; +this.info = info; +this.jmolName = branchNameID; +}, "~N,~S,JU.BS,~O"); +Clazz_defineMethod(c$, "offset", +function(modelOffset, atomOffset){ +if (modelOffset > 0) { +if (this.modelIndex != -2147483648) this.modelIndex += modelOffset; +switch (this.id) { +case 1610625028: +case 12294: +return; +case 4115: +var i = (this.info).intValue(); +if (i >= 0) this.info = Integer.$valueOf(modelOffset + i); +return; +case 1073742031: +var movie = this.info; +var frames = movie.get("frames"); +for (var j = frames.length; --j >= 0; ) frames[j] += modelOffset; + +return; +} +}if (atomOffset <= 0) return; +if (this.id == 12290) { +var map = (this.info).values(); +for (var o, $o = map.iterator (); $o.hasNext()&& ((o = $o.next ()) || true);) JU.BSUtil.offset(o, 0, atomOffset); + +return; +}if (this.bsAtoms != null) JU.BSUtil.offset(this.bsAtoms, 0, atomOffset); +if (this.colors != null) { +var colixes = this.colors[0]; +var c = Clazz_newShortArray (colixes.length + atomOffset, 0); +System.arraycopy(colixes, 0, c, atomOffset, colixes.length); +this.colors[0] = c; +}}, "~N,~N"); +Clazz_defineMethod(c$, "finalizeObject", +function(pymolScene, m, mepList, doCache){ +var sm = m.sm; +var color = "color"; +var sID; +var sb = null; +if (this.bsAtoms != null) this.modelIndex = this.getModelIndex(m); +switch (this.id) { +case 2097194: +sm.vwr.displayAtoms(this.bsAtoms, false, false, 1275069441, true); +return; +case 12295: +var bs = sm.vwr.getModelUndeletedAtomsBitSet(this.argb); +JU.BSUtil.invertInPlace(bs, sm.vwr.ms.ac); +sm.vwr.select(bs, false, 0, true); +sm.restrictSelected(false, true); +return; +case 1610625028: +case 12294: +if (this.bsAtoms == null) { +if (this.info == null) { +sm.vwr.displayAtoms(null, true, false, 0, true); +}sm.vwr.setObjectProp(this.info, this.id); +} else { +sm.vwr.displayAtoms(this.bsAtoms, this.id == 1610625028, false, 1275069441, true); +}return; +case 12290: +sm.vwr.defineAtomSets(this.info); +return; +case 1073742031: +sm.vwr.am.setMovie(this.info); +return; +case 4115: +var frame = (this.info).intValue(); +if (frame >= 0) { +sm.vwr.setCurrentModelIndex(frame); +} else { +sm.vwr.setAnimationRange(-1, -1); +sm.vwr.setCurrentModelIndex(-1); +}return; +case 1073742139: +sm.vwr.stm.saveScene(this.jmolName, this.info); +sm.vwr.stm.saveOrientation(this.jmolName, (this.info).get("pymolView")); +return; +case 5: +sm.loadShape(this.id); +sm.setShapePropertyBs(this.id, "pymolLabels", this.info, this.bsAtoms); +return; +case 1677721602: +break; +case 659488: +case 1: +if (this.size != -1) { +sm.setShapeSizeBs(1, this.size, null, this.bsAtoms); +var bsBonds = (sm.getShapePropertyIndex(1, "sets", 0))[1]; +pymolScene.setUniqueBonds(bsBonds, this.id == 1); +this.size = -1; +}this.id = 1; +break; +case 1153433601: +this.id = 0; +break; +case 0: +break; +case 10: +case 9: +sm.loadShape(this.id); +var bsCarb = m.getAtoms(2097188, null); +JU.BSUtil.andNot(this.bsAtoms, bsCarb); +break; +case 16: +sm.loadShape(this.id); +sm.setShapePropertyBs(this.id, "ignore", JU.BSUtil.copyInvert(this.bsAtoms, sm.vwr.ms.ac), null); +break; +default: +if (!this.visible) return; +break; +} +switch (this.id) { +case 23: +sm.vwr.setCGO(this.info); +break; +case 16: +case 0: +case 7: +case 20: +case 11: +case 9: +case 10: +case 24: +if (Clazz_instanceOf(this.info,Array)) { +sm.loadShape(this.id); +sm.setShapePropertyBs(this.id, "params", this.info, this.bsAtoms); +}break; +case 6: +if (this.modelIndex < 0) return; +sm.loadShape(this.id); +var md = this.info; +md.setModelSet(m); +var points = md.points; +for (var i = points.size(); --i >= 0; ) (points.get(i)).mi = this.modelIndex; + +sm.setShapePropertyBs(this.id, "measure", md, this.bsAtoms); +return; +case 135180: +sID = (this.bsAtoms == null ? this.info : this.jmolName); +if (sm.getShapeIdFromObjectName(sID) >= 0) { +sm.vwr.setObjectProp(sID, 1610625028); +return; +}sb = new JU.SB(); +sb.append("isosurface ID ").append(JU.PT.esc(sID)); +if (this.modelIndex < 0) this.modelIndex = sm.vwr.am.cmi; +if (this.bsAtoms == null) { +sb.append(" model ").append(m.getModelNumberDotted(this.modelIndex)).append(" color density sigma 1.0 ").append(JU.PT.esc(this.cacheID)).append(" ").append(JU.PT.esc(sID)); +if (doCache) sb.append(";isosurface cache"); +} else { +var lighting = (this.info)[0]; +var only = (this.info)[1]; +only = " only"; +var bsCarve = (this.info)[2]; +var carveDistance = ((this.info)[3]).floatValue(); +var resolution = ""; +if (lighting == null) { +lighting = "mesh nofill"; +resolution = " resolution 1.5"; +}var haveMep = JU.PT.isOneOf(sID, mepList); +var model = m.getModelNumberDotted(this.modelIndex); +var ignore = ""; +var type = (this.size < 0 ? " sasurface " : " solvent "); +sb.append(" model ").append(model).append(resolution).append(" select ").append(JU.Escape.eBS(this.bsAtoms)).append(only).append(ignore).append(type).appendF(Math.abs(this.size / 1000)); +if (!haveMep) { +if (this.argb == 0) sb.append(" map property color"); + else sb.append(";color isosurface ").append(JU.Escape.escapeColor(this.argb)); +}sb.append(";isosurface frontOnly ").append(lighting); +if (this.translucency > 0) sb.append(";color isosurface translucent " + this.translucency); +if (bsCarve != null && !bsCarve.isEmpty()) sb.append(";isosurface slab within " + carveDistance + " {" + model + " and " + JU.Escape.eBS(bsCarve) + "}"); +if (doCache && !haveMep) sb.append(";isosurface cache"); +}break; +case 1073742016: +var mep = this.info; +sID = mep.get(mep.size() - 2).toString(); +var mapID = mep.get(mep.size() - 1).toString(); +var min = J.adapter.readers.pymol.PyMOLReader.floatAt(J.adapter.readers.pymol.PyMOLReader.listAt(mep, 3), 0); +var max = J.adapter.readers.pymol.PyMOLReader.floatAt(J.adapter.readers.pymol.PyMOLReader.listAt(mep, 3), 2); +sb = new JU.SB(); +sb.append(";isosurface ID ").append(JU.PT.esc(sID)).append(" map ").append(JU.PT.esc(this.cacheID)).append(" ").append(JU.PT.esc(mapID)).append(";color isosurface range " + min + " " + max + ";isosurface colorscheme rwb;set isosurfacekey true"); +if (this.translucency > 0) sb.append(";color isosurface translucent " + this.translucency); +if (doCache) sb.append(";isosurface cache"); +break; +case 1073742018: +this.modelIndex = sm.vwr.am.cmi; +var mesh = this.info; +sID = mesh.get(mesh.size() - 2).toString(); +sb = new JU.SB(); +sb.append("isosurface ID ").append(JU.PT.esc(sID)).append(" model ").append(m.getModelNumberDotted(this.modelIndex)).append(" color ").append(JU.Escape.escapeColor(this.argb)).append(" ").append(JU.PT.esc(this.cacheID)).append(" ").append(JU.PT.esc(sID)).append(" mesh nofill frontonly"); +var list = J.adapter.readers.pymol.PyMOLReader.sublistAt(mesh, [2, 0]); +var within = J.adapter.readers.pymol.PyMOLReader.floatAt(list, 11); +list = J.adapter.readers.pymol.PyMOLReader.listAt(list, 12); +if (within > 0) { +var pt = new JU.P3(); +sb.append(";isosurface slab within ").appendF(within).append(" [ "); +for (var j = list.size() - 3; j >= 0; j -= 3) { +J.adapter.readers.pymol.PyMOLReader.pointAt(list, j, pt); +sb.append(JU.Escape.eP(pt)); +} +sb.append(" ]"); +}if (doCache && !JU.PT.isOneOf(sID, mepList)) sb.append(";isosurface cache"); +sb.append(";set meshScale ").appendI(Clazz_doubleToInt(this.size / 500)); +break; +case 134222850: +sb = this.info; +break; +case 1112152078: +sm.loadShape(this.id = 10); +sm.setShapePropertyBs(this.id, "putty", this.info, this.bsAtoms); +break; +} +if (sb != null) { +sm.vwr.runScriptCautiously(sb.toString()); +return; +}if (this.size != -1 || this.rd != null) sm.setShapeSizeBs(this.id, this.size, this.rd, this.bsAtoms); +if (this.argb != 0) sm.setShapePropertyBs(this.id, color, Integer.$valueOf(this.argb), this.bsAtoms); +if (this.translucency > 0) { +sm.setShapePropertyBs(this.id, "translucentLevel", Float.$valueOf(this.translucency), this.bsAtoms); +sm.setShapePropertyBs(this.id, "translucency", "translucent", this.bsAtoms); +} else if (this.colors != null) sm.setShapePropertyBs(this.id, "colors", this.colors, this.bsAtoms); +}, "J.adapter.readers.pymol.PyMOLScene,JM.ModelSet,~S,~B"); +Clazz_defineMethod(c$, "getModelIndex", +function(m){ +if (this.bsAtoms == null) return -1; +var iAtom = this.bsAtoms.nextSetBit(0); +if (iAtom >= m.at.length) System.out.println("PyMOL LOADING ERROR IN MERGE"); +return (iAtom < 0 ? -1 : m.at[iAtom].mi); +}, "JM.ModelSet"); +Clazz_defineMethod(c$, "setColors", +function(colixes, translucency){ +this.colors = Clazz_newArray(-1, [colixes, Float.$valueOf(translucency)]); +}, "~A,~N"); +Clazz_defineMethod(c$, "setSize", +function(size){ +this.size = Clazz_floatToInt(size * 1000); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.pymol"); +Clazz_load(["java.util.Hashtable", "JU.BS"], "J.adapter.readers.pymol.PyMOLGroup", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.name = null; +this.objectNameID = null; +this.list = null; +this.object = null; +this.visible = true; +this.occluded = false; +this.bsAtoms = null; +this.firstAtom = 0; +this.type = 0; +this.parent = null; +Clazz_instantialize(this, arguments);}, J.adapter.readers.pymol, "PyMOLGroup", null); +Clazz_prepareFields (c$, function(){ +this.list = new java.util.Hashtable(); +this.bsAtoms = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(name){ +this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "addList", +function(child){ +var group = this.list.get(child.name); +if (group != null) return; +this.list.put(child.name, child); +child.parent = this; +}, "J.adapter.readers.pymol.PyMOLGroup"); +Clazz_defineMethod(c$, "set", +function(){ +if (this.parent != null) return; +}); +Clazz_defineMethod(c$, "addGroupAtoms", +function(bs){ +this.bsAtoms.or(bs); +if (this.parent != null) this.parent.addGroupAtoms(this.bsAtoms); +}, "JU.BS"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.name; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.pymol"); +Clazz_load(["J.api.JmolSceneGenerator", "java.util.Hashtable", "JU.BS", "$.Lst", "$.P3"], "J.adapter.readers.pymol.PyMOLScene", ["JU.AU", "$.CU", "$.PT", "$.SB", "J.adapter.readers.pymol.JmolObject", "$.PyMOL", "$.PyMOLGroup", "$.PyMOLReader", "J.atomdata.RadiusData", "J.c.VDW", "JM.Text", "JU.BSUtil", "$.C", "$.Escape", "$.Logger", "$.Point3fi"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.pymolVersion = 0; +this.bsHidden = null; +this.bsNucleic = null; +this.bsNonbonded = null; +this.bsLabeled = null; +this.bsHydrogen = null; +this.bsNoSurface = null; +this.htSpacefill = null; +this.ssMapAtom = null; +this.atomColorList = null; +this.occludedObjects = null; +this.labels = null; +this.colixes = null; +this.frameObj = null; +this.groups = null; +this.objectSettings = null; +this.bsCartoon = null; +this.htCarveSets = null; +this.htDefinedAtoms = null; +this.htHiddenObjects = null; +this.moleculeNames = null; +this.jmolObjects = null; +this.htAtomMap = null; +this.htObjectAtoms = null; +this.htObjectGroups = null; +this.htMeasures = null; +this.htObjectSettings = null; +this.objectInfo = null; +this.settings = null; +this.htStateSettings = null; +this.stateSettings = null; +this.uniqueSettings = null; +this.uniqueList = null; +this.bsUniqueBonds = null; +this.bgRgb = 0; +this.dotColor = 0; +this.surfaceMode = 0; +this.surfaceColor = 0; +this.cartoonColor = 0; +this.ribbonColor = 0; +this.sphereColor = 0; +this.labelFontId = 0; +this.labelColor = 0; +this.cartoonTranslucency = 0; +this.ribbonTranslucency = 0; +this.labelSize = 0; +this.meshWidth = 0; +this.nonbondedSize = 0; +this.nonbondedTranslucency = 0; +this.sphereScale = 0; +this.sphereTranslucency = 0; +this.stickTranslucency = 0; +this.transparency = 0; +this.cartoonLadderMode = false; +this.cartoonRockets = false; +this.haveNucleicLadder = false; +this.labelPosition = null; +this.labelPosition0 = null; +this.objectName = null; +this.objectNameID = null; +this.objectJmolName = null; +this.objectType = 0; +this.bsAtoms = null; +this.objectHidden = false; +this.reader = null; +this.uniqueIDs = null; +this.cartoonTypes = null; +this.sequenceNumbers = null; +this.newChain = null; +this.radii = null; +this.baseModelIndex = 0; +this.baseAtomIndex = 0; +this.stateCount = 0; +this.mepList = ""; +this.doCache = false; +this.haveScenes = false; +this.bsCarve = null; +this.solventAccessible = false; +this.bsLineBonds = null; +this.bsStickBonds = null; +this.thisState = 0; +this.currentAtomSetIndex = 0; +this.surfaceInfoName = null; +this.ptTemp = null; +Clazz_instantialize(this, arguments);}, J.adapter.readers.pymol, "PyMOLScene", null, J.api.JmolSceneGenerator); +Clazz_prepareFields (c$, function(){ +this.bsHidden = new JU.BS(); +this.bsNucleic = new JU.BS(); +this.bsNonbonded = new JU.BS(); +this.bsLabeled = new JU.BS(); +this.bsHydrogen = new JU.BS(); +this.bsNoSurface = new JU.BS(); +this.htSpacefill = new java.util.Hashtable(); +this.ssMapAtom = new java.util.Hashtable(); +this.atomColorList = new JU.Lst(); +this.occludedObjects = new java.util.Hashtable(); +this.labels = new java.util.Hashtable(); +this.bsCartoon = new JU.BS(); +this.htCarveSets = new java.util.Hashtable(); +this.htDefinedAtoms = new java.util.Hashtable(); +this.htHiddenObjects = new java.util.Hashtable(); +this.moleculeNames = new JU.Lst(); +this.jmolObjects = new JU.Lst(); +this.htAtomMap = new java.util.Hashtable(); +this.htObjectAtoms = new java.util.Hashtable(); +this.htObjectGroups = new java.util.Hashtable(); +this.htMeasures = new java.util.Hashtable(); +this.htObjectSettings = new java.util.Hashtable(); +this.objectInfo = new java.util.Hashtable(); +this.htStateSettings = new java.util.Hashtable(); +this.labelPosition0 = new JU.P3(); +this.bsLineBonds = new JU.BS(); +this.bsStickBonds = new JU.BS(); +this.ptTemp = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(reader, vwr, settings, uniqueSettings, pymolVersion, haveScenes, baseAtomIndex, baseModelIndex, doCache, filePath){ +this.reader = reader; +this.vwr = vwr; +this.settings = settings; +this.uniqueSettings = uniqueSettings; +this.pymolVersion = pymolVersion; +this.haveScenes = haveScenes; +this.baseAtomIndex = baseAtomIndex; +this.baseModelIndex = baseModelIndex; +this.doCache = doCache; +this.surfaceInfoName = filePath + "##JmolSurfaceInfo##"; +this.setVersionSettings(); +settings.trimToSize(); +this.bgRgb = this.colorSetting(6); +this.labelPosition0 = this.pointSetting(471); +}, "J.api.PymolAtomReader,JV.Viewer,JU.Lst,java.util.Map,~N,~B,~N,~N,~B,~S"); +Clazz_defineMethod(c$, "clearReaderData", +function(){ +this.reader = null; +this.colixes = null; +this.atomColorList = null; +this.objectSettings = null; +this.stateSettings = null; +if (this.haveScenes) return; +this.settings = null; +this.groups = null; +this.labels = null; +this.ssMapAtom = null; +this.htSpacefill = null; +this.htAtomMap = null; +this.htMeasures = null; +this.htObjectGroups = null; +this.htObjectAtoms = null; +this.htObjectSettings = null; +this.htStateSettings = null; +this.htHiddenObjects = null; +this.objectInfo = null; +this.occludedObjects = null; +this.bsHidden = this.bsNucleic = this.bsNonbonded = this.bsLabeled = this.bsHydrogen = this.bsNoSurface = this.bsCartoon = null; +}); +Clazz_defineMethod(c$, "setUniqueBond", +function(index, uniqueID){ +if (uniqueID < 0) return; +if (this.uniqueList == null) { +this.uniqueList = new java.util.Hashtable(); +this.bsUniqueBonds = new JU.BS(); +}this.uniqueList.put(Integer.$valueOf(index), Integer.$valueOf(uniqueID)); +this.bsUniqueBonds.set(index); +}, "~N,~N"); +Clazz_defineMethod(c$, "setStateCount", +function(stateCount){ +this.stateCount = stateCount; +}, "~N"); +Clazz_defineMethod(c$, "colorSetting", +function(i){ +var pos = J.adapter.readers.pymol.PyMOLReader.listAt(this.settings, i); +var o = (pos == null || pos.size() != 3 ? null : pos.get(2)); +if (o == null) return Clazz_floatToInt(J.adapter.readers.pymol.PyMOL.getDefaultSetting(i, this.pymolVersion)); +return (Clazz_instanceOf(o, Integer) ? (o).intValue() : JU.CU.colorPtToFFRGB(J.adapter.readers.pymol.PyMOLReader.pointAt(o, 0, this.ptTemp))); +}, "~N"); +Clazz_defineMethod(c$, "pointSetting", +function(i){ +var pt = new JU.P3(); +var pos = J.adapter.readers.pymol.PyMOLReader.listAt(this.settings, i); +if (pos != null && pos.size() == 3) return J.adapter.readers.pymol.PyMOLReader.pointAt(pos.get(2), 0, pt); +return J.adapter.readers.pymol.PyMOL.getDefaultSettingPt(i, this.pymolVersion, pt); +}, "~N"); +Clazz_defineMethod(c$, "ensureCapacity", +function(n){ +this.atomColorList.ensureCapacity(this.atomColorList.size() + n); +}, "~N"); +Clazz_defineMethod(c$, "setReaderObjectInfo", +function(name, type, groupName, isHidden, listObjSettings, listStateSettings, ext){ +this.objectName = name; +this.objectHidden = isHidden; +this.objectNameID = (this.objectName == null ? null : this.fixName(this.objectName + ext)); +this.objectSettings = new java.util.Hashtable(); +this.stateSettings = new java.util.Hashtable(); +if (this.objectName != null) { +this.objectJmolName = this.getJmolName(name); +if (groupName != null) { +this.htObjectGroups.put(this.objectName, groupName); +this.htObjectGroups.put(this.objectNameID, groupName); +}this.objectInfo.put(this.objectName, Clazz_newArray(-1, [this.objectNameID, Integer.$valueOf(type)])); +if (this.htObjectSettings.get(this.objectName) == null) { +this.listToSettings(listObjSettings, this.objectSettings); +this.htObjectSettings.put(this.objectName, this.objectSettings); +}if (this.htStateSettings.get(this.objectNameID) == null) { +this.listToSettings(listStateSettings, this.stateSettings); +this.htStateSettings.put(this.objectNameID, this.stateSettings); +}}this.getObjectSettings(); +}, "~S,~N,~S,~B,JU.Lst,JU.Lst,~S"); +Clazz_defineMethod(c$, "listToSettings", +function(list, objectSettings){ +if (list != null && list.size() != 0) { +for (var i = list.size(); --i >= 0; ) { +var setting = list.get(i); +objectSettings.put(setting.get(0), setting); +} +}}, "JU.Lst,java.util.Map"); +Clazz_defineMethod(c$, "getObjectSettings", +function(){ +this.transparency = this.floatSetting(138); +this.dotColor = Clazz_floatToInt(this.floatSetting(210)); +this.nonbondedSize = this.floatSetting(65); +this.nonbondedTranslucency = this.floatSetting(524); +this.sphereScale = this.floatSetting(155); +this.cartoonColor = Clazz_floatToInt(this.floatSetting(236)); +this.ribbonColor = Clazz_floatToInt(this.floatSetting(235)); +this.sphereColor = Clazz_floatToInt(this.floatSetting(173)); +this.cartoonTranslucency = this.floatSetting(279); +this.ribbonTranslucency = this.floatSetting(666); +this.stickTranslucency = this.floatSetting(198); +this.sphereTranslucency = this.floatSetting(172); +this.cartoonLadderMode = this.booleanSetting(448); +this.cartoonRockets = this.booleanSetting(180); +this.surfaceMode = Clazz_floatToInt(this.floatSetting(143)); +this.surfaceColor = Clazz_floatToInt(this.floatSetting(144)); +this.solventAccessible = this.booleanSetting(338); +this.meshWidth = this.floatSetting(90); +var carveSet = this.stringSetting(342).trim(); +if (carveSet.length == 0) { +this.bsCarve = null; +} else { +this.bsCarve = this.htCarveSets.get(carveSet); +if (this.bsCarve == null) this.htCarveSets.put(carveSet, this.bsCarve = new JU.BS()); +}this.labelPosition = new JU.P3(); +try { +var setting = this.getObjectSetting(471); +J.adapter.readers.pymol.PyMOLReader.pointAt(J.adapter.readers.pymol.PyMOLReader.listAt(setting, 2), 0, this.labelPosition); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +this.labelPosition.add(this.labelPosition0); +this.labelColor = Clazz_floatToInt(this.floatSetting(66)); +this.labelSize = this.floatSetting(453); +this.labelFontId = Clazz_floatToInt(this.floatSetting(328)); +}); +Clazz_defineMethod(c$, "setAtomInfo", +function(uniqueIDs, cartoonTypes, sequenceNumbers, newChain, radii){ +this.uniqueIDs = uniqueIDs; +this.cartoonTypes = cartoonTypes; +this.sequenceNumbers = sequenceNumbers; +this.newChain = newChain; +this.radii = radii; +}, "~A,~A,~A,~A,~A"); +Clazz_defineMethod(c$, "setSceneObject", +function(name, istate){ +this.objectName = name; +this.objectType = this.getObjectType(name); +this.objectJmolName = this.getJmolName(name); +this.objectNameID = (istate == 0 && this.objectType != 0 ? this.getObjectID(name) : this.objectJmolName + "_" + istate); +this.bsAtoms = this.htObjectAtoms.get(name); +this.objectSettings = this.htObjectSettings.get(name); +this.stateSettings = this.htStateSettings.get(name + "_" + istate); +var groupName = this.htObjectGroups.get(name); +this.objectHidden = (this.htHiddenObjects.containsKey(name) || groupName != null && !this.groups.get(groupName).visible); +this.getObjectSettings(); +}, "~S,~N"); +Clazz_defineMethod(c$, "buildScene", +function(name, thisScene, htObjNames, htSecrets){ +var frame = thisScene.get(2); +var smap = new java.util.Hashtable(); +smap.put("pymolFrame", frame); +smap.put("generator", this); +smap.put("name", name); +var view = J.adapter.readers.pymol.PyMOLReader.listAt(thisScene, 0); +if (view != null) smap.put("pymolView", this.getPymolView(view, false)); +var visibilities = thisScene.get(1); +smap.put("visibilities", visibilities); +var sname = "_scene_" + name + "_"; +var reps = new Array(J.adapter.readers.pymol.PyMOL.REP_LIST.length); +for (var j = J.adapter.readers.pymol.PyMOL.REP_LIST.length; --j >= 0; ) { +var list = htObjNames.get(sname + J.adapter.readers.pymol.PyMOL.REP_LIST[j]); +var data = J.adapter.readers.pymol.PyMOLReader.listAt(list, 5); +if (data != null && data.size() > 0) reps[j] = J.adapter.readers.pymol.PyMOLReader.listToMap(data); +} +smap.put("moleculeReps", reps); +sname = "_!c_" + name + "_"; +var colorection = J.adapter.readers.pymol.PyMOLReader.listAt(thisScene, 3); +var n = colorection.size(); +n -= n % 2; +var colors = new Array(Clazz_doubleToInt(n / 2)); +for (var j = 0, i = 0; j < n; j += 2) { +var color = J.adapter.readers.pymol.PyMOLReader.intAt(colorection, j); +var c = htSecrets.get(sname + color); +if (c != null && c.size() > 1) colors[i++] = Clazz_newArray(-1, [Integer.$valueOf(color), c.get(1)]); +} +smap.put("colors", colors); +this.addJmolObject(1073742139, null, smap).jmolName = name; +}, "~S,JU.Lst,java.util.Map,java.util.Map"); +Clazz_overrideMethod(c$, "generateScene", +function(scene){ +JU.Logger.info("PyMOLScene - generateScene " + scene.get("name")); +this.jmolObjects.clear(); +this.bsHidden.clearAll(); +this.occludedObjects.clear(); +this.htHiddenObjects.clear(); +var frame = scene.get("pymolFrame"); +this.thisState = frame.intValue(); +this.addJmolObject(4115, null, Integer.$valueOf(this.thisState - 1)); +try { +this.generateVisibilities(scene.get("visibilities")); +this.generateColors(scene.get("colors")); +this.generateShapes(scene.get("moleculeReps")); +this.finalizeVisibility(); +this.offsetObjects(); +this.finalizeObjects(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.info("PyMOLScene exception " + e); +e.printStackTrace(); +} else { +throw e; +} +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "generateColors", +function(colors){ +if (colors == null) return; +for (var i = colors.length; --i >= 0; ) { +var item = colors[i]; +var color = (item[0]).intValue(); +var icolor = J.adapter.readers.pymol.PyMOL.getRGB(color); +var molecules = item[1]; +var bs = this.getSelectionAtoms(molecules, this.thisState, new JU.BS()); +this.addJmolObject(1153433601, bs, null).argb = icolor; +} +}, "~A"); +Clazz_defineMethod(c$, "processSelection", +function(selection){ +var id = J.adapter.readers.pymol.PyMOLReader.stringAt(selection, 0); +id = "_" + (id.equals("sele") ? id : "sele_" + id); +var g = this.getGroup(id); +this.getSelectionAtoms(J.adapter.readers.pymol.PyMOLReader.listAt(selection, 5), 0, g.bsAtoms); +}, "JU.Lst"); +Clazz_defineMethod(c$, "getSelectionAtoms", +function(molecules, istate, bs){ +if (molecules != null) for (var j = molecules.size(); --j >= 0; ) this.selectAllAtoms(J.adapter.readers.pymol.PyMOLReader.listAt(molecules, j), istate, bs); + +return bs; +}, "JU.Lst,~N,JU.BS"); +Clazz_defineMethod(c$, "selectAllAtoms", +function(obj, istate, bs){ +var name = J.adapter.readers.pymol.PyMOLReader.stringAt(obj, 0); +this.setSceneObject(name, istate); +var atomList = J.adapter.readers.pymol.PyMOLReader.listAt(obj, 1); +var k0 = (istate == 0 ? 1 : istate); +var k1 = (istate == 0 ? this.stateCount : istate); +for (var k = k0; k <= k1; k++) { +var atomMap = this.htAtomMap.get(this.fixName(name + "_" + k)); +if (atomMap == null) continue; +this.getBsAtoms(atomList, atomMap, bs); +} +}, "JU.Lst,~N,JU.BS"); +Clazz_defineMethod(c$, "generateVisibilities", +function(vis){ +if (vis == null) return; +var bs = new JU.BS(); +this.addJmolObject(12294, null, null); +for (var e, $e = this.groups.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) e.getValue().visible = true; + +for (var e, $e = vis.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (name.equals("all")) continue; +var list = e.getValue(); +var tok = (J.adapter.readers.pymol.PyMOLReader.intAt(list, 0) == 1 ? 1610625028 : 12294); +if (tok == 12294) this.htHiddenObjects.put(name, Boolean.TRUE); +switch (this.getObjectType(name)) { +case 12: +var g = this.groups.get(name); +if (g != null) g.visible = (tok == 1610625028); +break; +} +} +this.setGroupVisibilities(); +for (var e, $e = vis.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (name.equals("all")) continue; +this.setSceneObject(name, this.thisState); +if (this.objectHidden) continue; +var list = e.getValue(); +var tok = (this.objectHidden ? 12294 : 1610625028); +bs = null; +var info = this.objectJmolName; +switch (this.objectType) { +case 0: +case 12: +continue; +case 1: +bs = this.vwr.getDefinedAtomSet(info); +if (bs.nextSetBit(0) < 0) continue; +break; +case 4: +if (tok == 1610625028) { +var mdList = this.htMeasures.get(name); +if (mdList != null) this.addMeasurements(mdList, mdList[0].points.size(), null, this.getBS(J.adapter.readers.pymol.PyMOLReader.listAt(list, 2)), J.adapter.readers.pymol.PyMOLReader.intAt(list, 3), null, true); +}info += "_*"; +break; +case 6: +case 3: +case 2: +break; +} +this.addJmolObject(tok, bs, info); +} +}, "java.util.Map"); +Clazz_defineMethod(c$, "generateShapes", +function(reps){ +if (reps == null) return; +this.addJmolObject(12295, null, null).argb = this.thisState - 1; +for (var m = 0; m < this.moleculeNames.size(); m++) { +this.setSceneObject(this.moleculeNames.get(m), this.thisState); +if (this.objectHidden) continue; +var molReps = new Array(23); +for (var i = 0; i < 23; i++) molReps[i] = new JU.BS(); + +for (var i = reps.length; --i >= 0; ) { +var repMap = reps[i]; +var list = (repMap == null ? null : repMap.get(this.objectName)); +if (list != null) this.selectAllAtoms(list, this.thisState, molReps[i]); +} +this.createShapeObjects(molReps, true, -1, -1); +} +}, "~A"); +Clazz_defineMethod(c$, "getBS", +function(list){ +var bs = new JU.BS(); +for (var i = list.size(); --i >= 0; ) bs.set(J.adapter.readers.pymol.PyMOLReader.intAt(list, i)); + +return bs; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getBsAtoms", +function(list, atomMap, bs){ +for (var i = list.size(); --i >= 0; ) bs.set(atomMap[J.adapter.readers.pymol.PyMOLReader.intAt(list, i)]); + +}, "JU.Lst,~A,JU.BS"); +Clazz_defineMethod(c$, "setReaderObjects", +function(){ +this.clearReaderData(); +this.finalizeObjects(); +if (!this.haveScenes) { +this.uniqueSettings = null; +this.bsUniqueBonds = this.bsStickBonds = this.bsLineBonds = null; +}}); +Clazz_defineMethod(c$, "finalizeObjects", +function(){ +this.vwr.setStringProperty("defaults", "PyMOL"); +for (var i = 0; i < this.jmolObjects.size(); i++) { +try { +var obj = this.jmolObjects.get(i); +obj.finalizeObject(this, this.vwr.ms, this.mepList, this.doCache); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e); +e.printStackTrace(); +} else { +throw e; +} +} +} +this.finalizeUniqueBonds(); +this.jmolObjects.clear(); +}); +Clazz_defineMethod(c$, "offsetObjects", +function(){ +for (var i = 0, n = this.jmolObjects.size(); i < n; i++) this.jmolObjects.get(i).offset(this.baseModelIndex, this.baseAtomIndex); + +}); +Clazz_defineMethod(c$, "getJmolObject", +function(id, bsAtoms, info){ +if (this.baseAtomIndex > 0) bsAtoms = JU.BSUtil.copy(bsAtoms); +return new J.adapter.readers.pymol.JmolObject(id, this.objectNameID, bsAtoms, info); +}, "~N,JU.BS,~O"); +Clazz_defineMethod(c$, "addJmolObject", +function(id, bsAtoms, info){ +return this.addObject(this.getJmolObject(id, bsAtoms, info)); +}, "~N,JU.BS,~O"); +Clazz_defineMethod(c$, "getPymolView", +function(view, isViewObj){ +var pymolView = Clazz_newFloatArray (21, 0); +var depthCue = this.booleanSetting(84); +var fog = this.booleanSetting(88); +var fog_start = this.floatSetting(192); +var pt = 0; +var i = 0; +for (var j = 0; j < 3; j++) pymolView[pt++] = J.adapter.readers.pymol.PyMOLReader.floatAt(view, i++); + +if (isViewObj) i++; +for (var j = 0; j < 3; j++) pymolView[pt++] = J.adapter.readers.pymol.PyMOLReader.floatAt(view, i++); + +if (isViewObj) i++; +for (var j = 0; j < 3; j++) pymolView[pt++] = J.adapter.readers.pymol.PyMOLReader.floatAt(view, i++); + +if (isViewObj) i += 5; +for (var j = 0; j < 8; j++) pymolView[pt++] = J.adapter.readers.pymol.PyMOLReader.floatAt(view, i++); + +var isOrtho = this.booleanSetting(23); +var fov = this.floatSetting(152); +pymolView[pt++] = (isOrtho ? fov : -fov); +pymolView[pt++] = (depthCue ? 1 : 0); +pymolView[pt++] = (fog ? 1 : 0); +pymolView[pt++] = fog_start; +return pymolView; +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "globalSetting", +function(i){ +var setting = J.adapter.readers.pymol.PyMOLReader.listAt(this.settings, i); +if (setting != null && setting.size() == 3) return (setting.get(2)).floatValue(); +return J.adapter.readers.pymol.PyMOL.getDefaultSetting(i, this.pymolVersion); +}, "~N"); +Clazz_defineMethod(c$, "addGroup", +function(object, parent, type, bsAtoms){ +if (this.groups == null) this.groups = new java.util.Hashtable(); +var myGroup = this.getGroup(this.objectName); +myGroup.object = object; +myGroup.objectNameID = this.objectNameID; +myGroup.visible = !this.objectHidden; +myGroup.type = type; +if (!myGroup.visible) { +this.occludedObjects.put(this.objectNameID, Boolean.TRUE); +this.htHiddenObjects.put(this.objectName, Boolean.TRUE); +}if (parent != null && parent.length != 0) this.getGroup(parent).addList(myGroup); +if (bsAtoms != null) myGroup.addGroupAtoms(bsAtoms); +return myGroup; +}, "JU.Lst,~S,~N,JU.BS"); +Clazz_defineMethod(c$, "getGroup", +function(name){ +var g = this.groups.get(name); +if (g == null) { +this.groups.put(name, (g = new J.adapter.readers.pymol.PyMOLGroup(name))); +this.defineAtoms(name, g.bsAtoms); +}return g; +}, "~S"); +Clazz_defineMethod(c$, "finalizeVisibility", +function(){ +this.setGroupVisibilities(); +if (this.groups != null) for (var i = this.jmolObjects.size(); --i >= 0; ) { +var obj = this.jmolObjects.get(i); +if (obj.jmolName != null && this.occludedObjects.containsKey(obj.jmolName)) obj.visible = false; +} +if (!this.bsHidden.isEmpty()) this.addJmolObject(2097194, this.bsHidden, null); +}); +Clazz_defineMethod(c$, "setCarveSets", +function(htObjNames){ +if (this.htCarveSets.isEmpty()) return; +for (var e, $e = this.htCarveSets.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.getSelectionAtoms(J.adapter.readers.pymol.PyMOLReader.listAt(htObjNames.get(e.getKey()), 5), 0, e.getValue()); + +}, "java.util.Map"); +Clazz_defineMethod(c$, "setGroupVisibilities", +function(){ +if (this.groups == null) return; +var list = this.groups.values(); +var bsAll = new JU.BS(); +for (var g, $g = list.iterator (); $g.hasNext()&& ((g = $g.next ()) || true);) { +bsAll.or(g.bsAtoms); +if (g.parent == null) this.setGroupVisible(g, true); + else if (g.list.isEmpty()) g.addGroupAtoms( new JU.BS()); +} +this.defineAtoms("all", bsAll); +}); +Clazz_defineMethod(c$, "defineAtoms", +function(name, bs){ +this.htDefinedAtoms.put(this.getJmolName(name), bs); +}, "~S,JU.BS"); +Clazz_defineMethod(c$, "getJmolName", +function(name){ +return "__" + this.fixName(name); +}, "~S"); +Clazz_defineMethod(c$, "createShapeObjects", +function(reps, allowSurface, ac0, ac){ +if (ac >= 0) { +this.bsAtoms = JU.BSUtil.newBitSet2(ac0, ac); +var jo; +jo = this.addJmolObject(1153433601, this.bsAtoms, null); +this.colixes = JU.AU.ensureLengthShort(this.colixes, ac); +for (var i = ac; --i >= ac0; ) this.colixes[i] = this.atomColorList.get(i).intValue(); + +jo.setColors(this.colixes, 0); +jo.setSize(0); +jo = this.addJmolObject(1, this.bsAtoms, null); +jo.setSize(0); +}this.createShapeObject(7, reps[7]); +this.createShapeObject(0, reps[0]); +this.fixReps(reps); +this.createSpacefillObjects(); +for (var i = 0; i < 23; i++) switch (i) { +case 7: +case 0: +continue; +case 8: +case 2: +if (!allowSurface) continue; +switch (this.surfaceMode) { +case 0: +reps[i].andNot(this.bsNoSurface); +break; +case 1: +case 3: +break; +case 2: +case 4: +reps[i].andNot(this.bsHydrogen); +break; +} +default: +this.createShapeObject(i, reps[i]); +continue; +} + +this.bsAtoms = null; +}, "~A,~B,~N,~N"); +Clazz_defineMethod(c$, "addLabel", +function(atomIndex, uniqueID, atomColor, labelPos, label){ +var icolor = Clazz_floatToInt(this.getUniqueFloatDef(uniqueID, 66, this.labelColor)); +if (icolor == -7 || icolor == -6) { +} else if (icolor < 0) { +icolor = atomColor; +}if (labelPos == null) { +var offset = this.getUniquePoint(uniqueID, 471, null); +if (offset == null) offset = this.labelPosition; + else offset.add(this.labelPosition); +this.setLabelPosition(offset, labelPos); +}this.labels.put(Integer.$valueOf(atomIndex), this.newTextLabel(label, labelPos, icolor, this.labelFontId, this.labelSize)); +}, "~N,~N,~N,~A,~S"); +Clazz_defineMethod(c$, "getUniqueFloatDef", +function(id, key, defaultValue){ +var setting; +if (id <= 0 || (setting = this.uniqueSettings.get(Integer.$valueOf((id << 10) + key))) == null) return defaultValue; +var v = (setting.get(2)).floatValue(); +if (JU.Logger.debugging) JU.Logger.debug("Pymol unique setting for " + id + ": [" + key + "] = " + v); +return v; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getUniquePoint", +function(id, key, pt){ +var setting; +if (id <= 0 || (setting = this.uniqueSettings.get(Integer.$valueOf((id << 10) + key))) == null) return pt; +pt = new JU.P3(); +J.adapter.readers.pymol.PyMOLReader.pointAt(setting.get(2), 0, pt); +JU.Logger.info("Pymol unique setting for " + id + ": " + key + " = " + pt); +return pt; +}, "~N,~N,JU.P3"); +Clazz_defineMethod(c$, "getObjectSetting", +function(i){ +return this.objectSettings.get(Integer.$valueOf(i)); +}, "~N"); +Clazz_defineMethod(c$, "booleanSetting", +function(i){ +return (this.floatSetting(i) != 0); +}, "~N"); +Clazz_defineMethod(c$, "floatSetting", +function(i){ +var setting = this.getSetting(i); +if (setting != null && setting.size() == 3) return (setting.get(2)).floatValue(); +return J.adapter.readers.pymol.PyMOL.getDefaultSetting(i, this.pymolVersion); +}, "~N"); +Clazz_defineMethod(c$, "stringSetting", +function(i){ +var setting = this.getSetting(i); +if (setting != null && setting.size() == 3) return J.adapter.readers.pymol.PyMOLReader.stringAt(setting, 2); +return J.adapter.readers.pymol.PyMOL.getDefaultSettingS(i, this.pymolVersion); +}, "~N"); +Clazz_defineMethod(c$, "getSetting", +function(i){ +var setting = null; +if (this.stateSettings != null) setting = this.stateSettings.get(Integer.$valueOf(i)); +if (setting == null && this.objectSettings != null) setting = this.objectSettings.get(Integer.$valueOf(i)); +if (setting == null && i < this.settings.size()) setting = this.settings.get(i); +return setting; +}, "~N"); +Clazz_defineMethod(c$, "setLabelPosition", +function(offset, labelPos){ +labelPos[0] = 1; +labelPos[1] = offset.x; +labelPos[2] = offset.y; +labelPos[3] = offset.z; +return labelPos; +}, "JU.P3,~A"); +Clazz_defineMethod(c$, "addCGO", +function(data, color){ +data.addLast(this.objectName); +var jo = this.addJmolObject(23, null, data); +jo.argb = color; +jo.translucency = this.floatSetting(441); +return this.fixName(this.objectName); +}, "JU.Lst,~N"); +Clazz_defineMethod(c$, "addMeasurements", +function(mdList, nCoord, list, bsReps, color, offsets, haveLabels){ +var isNew = (mdList == null); +var n = (isNew ? Clazz_doubleToInt(Clazz_doubleToInt(list.size() / 3) / nCoord) : mdList.length); +if (n == 0) return false; +var drawLabel = haveLabels && bsReps.get(3); +var drawDashes = bsReps.get(10); +var rad = this.floatSetting(107) / 20; +if (rad == 0) rad = 0.05; +if (!drawDashes) rad = -5.0E-4; +if (color < 0) color = Clazz_floatToInt(this.floatSetting(574)); +var c = J.adapter.readers.pymol.PyMOL.getRGB(color); +var colix = JU.C.getColix(c); +var clabel = (this.labelColor < 0 ? color : this.labelColor); +if (isNew) { +mdList = new Array(n); +this.htMeasures.put(this.objectName, mdList); +}var bs = JU.BSUtil.newAndSetBit(0); +for (var index = 0, p = 0; index < n; index++) { +var md; +var offset; +if (isNew) { +var points = new JU.Lst(); +for (var i = 0; i < nCoord; i++, p += 3) points.addLast(J.adapter.readers.pymol.PyMOLReader.pointAt(list, p, new JU.Point3fi())); + +offset = J.adapter.readers.pymol.PyMOLReader.floatsAt(J.adapter.readers.pymol.PyMOLReader.listAt(offsets, index), 0, Clazz_newFloatArray (7, 0), 7); +if (offset == null) offset = this.setLabelPosition(this.labelPosition, Clazz_newFloatArray (7, 0)); +md = mdList[index] = this.vwr.newMeasurementData(this.objectNameID + "_" + (index + 1), points); +md.note = this.objectName; +} else { +md = mdList[index]; +offset = md.text.pymolOffset; +}var nDigits = Clazz_floatToInt(this.floatSetting(J.adapter.readers.pymol.PyMOLScene.MEAS_DIGITS[nCoord - 2])); +var strFormat = nCoord + ": " + (drawLabel ? "%0." + (nDigits < 0 ? 1 : nDigits) + "VALUE" : ""); +var text = this.newTextLabel(strFormat, offset, clabel, Clazz_floatToInt(this.floatSetting(328)), this.floatSetting(453)); +md.set(12290, null, null, null, strFormat, "angstroms", null, false, false, null, false, Clazz_floatToInt(rad * 2000), colix, text, NaN, null); +this.addJmolObject(6, bs, md); +} +return true; +}, "~A,~N,JU.Lst,JU.BS,~N,JU.Lst,~B"); +Clazz_defineMethod(c$, "getViewScript", +function(view){ +var sb = new JU.SB(); +var pymolView = this.getPymolView(view, true); +sb.append(";set translucent " + (this.globalSetting(213) != 2) + ";set zshadePower 1;set traceAlpha " + (this.globalSetting(111) != 0)); +var rockets = this.cartoonRockets; +sb.append(";set cartoonRockets " + rockets); +if (rockets) sb.append(";set rocketBarrels " + rockets); +sb.append(";set cartoonLadders " + this.haveNucleicLadder); +sb.append(";set ribbonBorder " + (this.globalSetting(118) != 0)); +sb.append(";set cartoonFancy " + (this.globalSetting(118) == 0)); +var s = "000000" + Integer.toHexString(this.bgRgb & 0xFFFFFF); +s = "[x" + s.substring(s.length - 6) + "]"; +sb.append(";background " + s); +sb.append(";moveto 0 PyMOL " + JU.Escape.eAF(pymolView)); +sb.append(";save orientation 'default';"); +return sb; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getColix", +function(colorIndex, translucency){ +var colix = (colorIndex == -7 ? (JU.C.getBgContrast(this.bgRgb) == 8 ? 4 : 8) : colorIndex == -6 ? JU.C.getBgContrast(this.bgRgb) : JU.C.getColixO(Integer.$valueOf(J.adapter.readers.pymol.PyMOL.getRGB(colorIndex)))); +return JU.C.getColixTranslucent3(colix, translucency > 0, translucency); +}, "~N,~N"); +Clazz_defineMethod(c$, "setAtomColor", +function(atomColor){ +this.atomColorList.addLast(Integer.$valueOf(this.getColix(atomColor, 0))); +}, "~N"); +Clazz_defineMethod(c$, "setFrameObject", +function(type, info){ +if (info != null) { +this.frameObj = this.getJmolObject(type, null, info); +return; +}if (this.frameObj == null) return; +this.frameObj.finalizeObject(this, this.vwr.ms, null, false); +this.frameObj = null; +}, "~N,~O"); +Clazz_defineMethod(c$, "fixName", +function(name){ +var chars = name.toLowerCase().toCharArray(); +for (var i = chars.length; --i >= 0; ) if (!JU.PT.isLetterOrDigit(chars[i])) chars[i] = '_'; + +return String.valueOf(chars); +}, "~S"); +Clazz_defineMethod(c$, "getObjectID", +function(name){ +return this.objectInfo.get(name)[0]; +}, "~S"); +Clazz_defineMethod(c$, "getObjectType", +function(name){ +var o = this.objectInfo.get(name); +return (o == null ? 0 : (o[1]).intValue()); +}, "~S"); +Clazz_defineMethod(c$, "setAtomMap", +function(atomMap, ac0){ +this.htAtomMap.put(this.objectNameID, atomMap); +var bsAtoms = this.htDefinedAtoms.get(this.objectJmolName); +if (bsAtoms == null) { +bsAtoms = JU.BS.newN(ac0 + atomMap.length); +JU.Logger.info("PyMOL molecule " + this.objectName); +this.htDefinedAtoms.put(this.objectJmolName, bsAtoms); +this.htObjectAtoms.put(this.objectName, bsAtoms); +this.moleculeNames.addLast(this.objectName); +}return bsAtoms; +}, "~A,~N"); +Clazz_defineMethod(c$, "newTextLabel", +function(label, labelOffset, colorIndex, fontID, fontSize){ +var face; +var factor = 1; +switch (fontID) { +default: +case 11: +case 12: +case 13: +case 14: +face = "SansSerif"; +break; +case 0: +case 1: +face = "Monospaced"; +break; +case 9: +case 10: +case 15: +case 16: +case 17: +case 18: +face = "Serif"; +break; +} +var style; +switch (fontID) { +default: +style = "Plain"; +break; +case 6: +case 12: +case 16: +case 17: +style = "Italic"; +break; +case 7: +case 10: +case 13: +style = "Bold"; +break; +case 8: +case 14: +case 18: +style = "BoldItalic"; +break; +} +var font = this.vwr.getFont3D(face, style, fontSize == 0 ? 12 : fontSize * factor); +var t = JM.Text.newLabel(this.vwr, font, label, this.getColix(colorIndex, 0), 0, 0, 0); +if (t != null) t.pymolOffset = labelOffset; +return t; +}, "~S,~A,~N,~N,~N"); +Clazz_defineMethod(c$, "setVersionSettings", +function(){ +if (this.pymolVersion < 100) { +this.addSetting(550, 2, Integer.$valueOf(0)); +this.addSetting(529, 2, Integer.$valueOf(2)); +this.addSetting(471, 4, Clazz_newDoubleArray(-1, [1, 1, 0])); +if (this.pymolVersion < 99) { +this.addSetting(448, 2, Integer.$valueOf(0)); +this.addSetting(431, 2, Integer.$valueOf(0)); +this.addSetting(361, 2, Integer.$valueOf(1)); +}}}); +Clazz_defineMethod(c$, "addSetting", +function(key, type, val){ +var settingCount = this.settings.size(); +if (settingCount <= key) for (var i = key + 1; --i >= settingCount; ) this.settings.addLast(null); + +if (type == 4) { +var d = val; +var list; +val = list = new JU.Lst(); +for (var i = 0; i < 3; i++) list.addLast(Double.$valueOf(d[i])); + +}var setting = new JU.Lst(); +setting.addLast(Integer.$valueOf(key)); +setting.addLast(Integer.$valueOf(type)); +setting.addLast(val); +this.settings.set(key, setting); +}, "~N,~N,~O"); +Clazz_defineMethod(c$, "fixReps", +function(reps){ +this.htSpacefill.clear(); +this.bsCartoon.clearAll(); +for (var iAtom = this.bsAtoms.nextSetBit(0); iAtom >= 0; iAtom = this.bsAtoms.nextSetBit(iAtom + 1)) { +var rad = 0; +var uniqueID = (this.reader == null ? this.uniqueIDs[iAtom] : this.reader.getUniqueID(iAtom)); +if (reps[1].get(iAtom)) { +rad = (this.reader == null ? this.radii[iAtom] : this.reader.getVDW(iAtom)) * this.getUniqueFloatDef(uniqueID, 155, this.sphereScale); +} else if (reps[4].get(iAtom)) { +rad = this.nonbondedSize; +}if (rad != 0) { +var r = Float.$valueOf(rad); +var bsr = this.htSpacefill.get(r); +if (bsr == null) this.htSpacefill.put(r, bsr = new JU.BS()); +bsr.set(iAtom); +}var cartoonType = (this.reader == null ? this.cartoonTypes[iAtom] : this.reader.getCartoonType(iAtom)); +if (reps[5].get(iAtom)) { +switch (cartoonType) { +case 1: +case 4: +reps[21].set(iAtom); +case -1: +reps[5].clear(iAtom); +this.bsCartoon.clear(iAtom); +break; +case 7: +reps[22].set(iAtom); +reps[5].clear(iAtom); +this.bsCartoon.clear(iAtom); +break; +default: +this.bsCartoon.set(iAtom); +} +}} +reps[5].and(this.bsCartoon); +this.cleanSingletons(reps[5]); +this.cleanSingletons(reps[6]); +this.cleanSingletons(reps[21]); +this.cleanSingletons(reps[22]); +this.bsCartoon.and(reps[5]); +}, "~A"); +Clazz_defineMethod(c$, "cleanSingletons", +function(bs){ +if (bs.isEmpty()) return; +bs.and(this.bsAtoms); +var bsr = new JU.BS(); +var n = bs.length(); +var pass = 0; +while (true) { +for (var i = 0, offset = 0, iPrev = -2147483648, iSeqLast = -2147483648, iSeq = -2147483648; i < n; i++) { +if (iPrev < 0 || (this.reader == null ? this.newChain[i] : this.reader.compareAtoms(iPrev, i))) offset++; +iSeq = (this.reader == null ? this.sequenceNumbers[i] : this.reader.getSequenceNumber(i)); +if (iSeq != iSeqLast) { +iSeqLast = iSeq; +offset++; +}if (pass == 0) { +if (bs.get(i)) bsr.set(offset); +} else if (!bsr.get(offset)) bs.clear(i); +iPrev = i; +} +if (++pass == 2) break; +var bsnot = new JU.BS(); +for (var i = bsr.nextSetBit(0); i >= 0; i = bsr.nextSetBit(i + 1)) if (!bsr.get(i - 1) && !bsr.get(i + 1)) bsnot.set(i); + +bsr.andNot(bsnot); +} +}, "JU.BS"); +Clazz_defineMethod(c$, "createShapeObject", +function(shapeID, bs){ +if (bs.isEmpty()) return; +var jo = null; +switch (shapeID) { +case 11: +bs.and(this.bsNonbonded); +if (bs.isEmpty()) return; +this.setUniqueObjects(7, bs, 0, 0, 524, this.nonbondedTranslucency, 0, this.nonbondedSize, 0.5); +break; +case 4: +case 1: +this.setUniqueObjects(0, bs, 173, this.sphereColor, 172, this.sphereTranslucency, 155, this.sphereScale, 1); +break; +case 19: +var ellipsoidTranslucency = this.floatSetting(571); +var ellipsoidColor = Clazz_floatToInt(this.floatSetting(570)); +var ellipsoidScale = this.floatSetting(569); +this.setUniqueObjects(20, bs, 570, ellipsoidColor, 571, ellipsoidTranslucency, 569, ellipsoidScale, 50); +break; +case 9: +this.setUniqueObjects(16, bs, 210, this.dotColor, 0, 0, 155, this.sphereScale, 1); +break; +case 2: +var withinDistance = this.floatSetting(344); +jo = this.addJmolObject(135180, bs, Clazz_newArray(-1, [this.booleanSetting(156) ? "FULLYLIT" : "FRONTLIT", (this.surfaceMode == 3 || this.surfaceMode == 4) ? " only" : "", this.bsCarve, Float.$valueOf(withinDistance)])); +jo.setSize(this.floatSetting(4) * (this.solventAccessible ? -1 : 1)); +jo.translucency = this.transparency; +if (this.surfaceColor >= 0) jo.argb = J.adapter.readers.pymol.PyMOL.getRGB(this.surfaceColor); +jo.modelIndex = this.currentAtomSetIndex; +jo.cacheID = this.surfaceInfoName; +this.setUniqueObjects(24, bs, 144, this.surfaceColor, 138, this.transparency, 0, 0, 0); +break; +case 8: +jo = this.addJmolObject(135180, bs, null); +jo.setSize(this.floatSetting(4)); +jo.translucency = this.transparency; +this.setUniqueObjects(24, bs, 144, this.surfaceColor, 138, this.transparency, 0, 0, 0); +break; +case 3: +bs.and(this.bsLabeled); +if (bs.isEmpty()) return; +jo = this.addJmolObject(5, bs, this.labels); +break; +case 10: +case 7: +jo = this.addJmolObject(659488, bs, null); +jo.setSize(this.floatSetting(44) / 15); +var color = Clazz_floatToInt(this.floatSetting(526)); +if (color >= 0) jo.argb = J.adapter.readers.pymol.PyMOL.getRGB(color); +break; +case 0: +jo = this.addJmolObject(1, bs, null); +jo.setSize(this.floatSetting(21) * 2); +jo.translucency = this.stickTranslucency; +var col = Clazz_floatToInt(this.floatSetting(376)); +if (col >= 0) jo.argb = J.adapter.readers.pymol.PyMOL.getRGB(col); +break; +case 5: +this.createCartoonObject("H", (this.cartoonRockets ? 181 : 100)); +this.createCartoonObject("S", 96); +this.createCartoonObject("L", 92); +this.createCartoonObject(" ", 92); +break; +case 22: +this.createPuttyObject(bs); +break; +case 21: +this.createTraceObject(bs); +break; +case 6: +this.createRibbonObject(bs); +break; +default: +JU.Logger.error("Unprocessed representation type " + shapeID); +} +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "setUniqueObjects", +function(shape, bs, setColor, color, setTrans, trans, setSize, size, f){ +var n = bs.cardinality(); +var colixes = (setColor == 0 ? null : Clazz_newShortArray (n, 0)); +var atrans = (setTrans == 0 ? null : Clazz_newFloatArray (n, 0)); +var sizes = Clazz_newFloatArray (n, 0); +for (var pt = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), pt++) { +var id = (this.reader == null ? this.uniqueIDs[i] : this.reader.getUniqueID(i)); +if (colixes != null) { +var c = Clazz_floatToInt(this.getUniqueFloatDef(id, setColor, color)); +if (c > 0) colixes[pt] = this.getColix(c, 0); +}if (atrans != null) { +atrans[pt] = this.getUniqueFloatDef(id, setTrans, trans); +}sizes[pt] = this.getUniqueFloatDef(id, setSize, size) * f; +} +return this.addJmolObject(shape, bs, Clazz_newArray(-1, [colixes, atrans, sizes])); +}, "~N,JU.BS,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "createSpacefillObjects", +function(){ +for (var e, $e = this.htSpacefill.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var r = e.getKey().floatValue(); +var bs = e.getValue(); +this.addJmolObject(1153433601, bs, null).rd = new J.atomdata.RadiusData(null, r, J.atomdata.RadiusData.EnumType.ABSOLUTE, J.c.VDW.AUTO); +} +this.htSpacefill.clear(); +}); +Clazz_defineMethod(c$, "createTraceObject", +function(bs){ +this.checkNucleicObject(bs, true); +if (bs.isEmpty()) return; +var r = this.floatSetting(103); +var jo = this.setUniqueObjects(10, bs, 236, this.cartoonColor, 0, 0, 0, 0, 0); +jo.setSize(r * 2); +jo.translucency = this.cartoonTranslucency; +}, "JU.BS"); +Clazz_defineMethod(c$, "checkNucleicObject", +function(bs, isTrace){ +var jo; +var bsNuc = JU.BSUtil.copy(this.bsNucleic); +bsNuc.and(bs); +if (!bsNuc.isEmpty()) { +if (isTrace && this.cartoonLadderMode) this.haveNucleicLadder = true; +jo = this.addJmolObject(11, bsNuc, null); +jo.translucency = this.cartoonTranslucency; +jo.setSize(this.floatSetting(103) * 2); +bs.andNot(bsNuc); +}}, "JU.BS,~B"); +Clazz_defineMethod(c$, "createPuttyObject", +function(bs){ +var info = Clazz_newFloatArray(-1, [this.floatSetting(378), this.floatSetting(377), this.floatSetting(382), this.floatSetting(379), this.floatSetting(380), this.floatSetting(381), this.floatSetting(581)]); +this.addJmolObject(1112152078, bs, info).translucency = this.cartoonTranslucency; +}, "JU.BS"); +Clazz_defineMethod(c$, "createRibbonObject", +function(bs){ +var isTrace = (this.floatSetting(19) > 1); +var r = this.floatSetting(20) * 2; +var rayScale = this.floatSetting(327); +if (r == 0) r = this.floatSetting(106) * (isTrace ? 1 : (rayScale <= 1 ? 0.5 : rayScale)) * 0.1; +var jo = this.setUniqueObjects((isTrace ? 10 : 9), bs, 235, this.ribbonColor, 0, 0, 0, 0, 0); +jo.setSize(r); +jo.translucency = this.ribbonTranslucency; +}, "JU.BS"); +Clazz_defineMethod(c$, "createCartoonObject", +function(key, sizeID){ +var bs = JU.BSUtil.copy(this.ssMapAtom.get(key)); +if (bs == null) return; +bs.and(this.bsCartoon); +if (bs.isEmpty()) return; +if (key.equals(" ")) { +this.checkNucleicObject(bs, false); +if (bs.isEmpty()) return; +}var jo = this.setUniqueObjects(11, bs, 236, this.cartoonColor, 0, 0, 0, 0, 0); +jo.setSize(this.floatSetting(sizeID) * 2); +jo.translucency = this.cartoonTranslucency; +}, "~S,~N"); +Clazz_defineMethod(c$, "addObject", +function(obj){ +this.jmolObjects.addLast(obj); +return obj; +}, "J.adapter.readers.pymol.JmolObject"); +Clazz_defineMethod(c$, "setGroupVisible", +function(g, parentVis){ +var vis = parentVis && g.visible; +if (vis) return; +g.visible = false; +this.occludedObjects.put(g.objectNameID, Boolean.TRUE); +this.htHiddenObjects.put(g.name, Boolean.TRUE); +switch (g.type) { +case 1: +this.bsHidden.or(g.bsAtoms); +break; +default: +g.occluded = true; +break; +} +for (var gg, $gg = g.list.values().iterator (); $gg.hasNext()&& ((gg = $gg.next ()) || true);) { +this.setGroupVisible(gg, vis); +} +}, "J.adapter.readers.pymol.PyMOLGroup,~B"); +Clazz_defineMethod(c$, "getSSMapAtom", +function(ssType){ +var bs = this.ssMapAtom.get(ssType); +if (bs == null) this.ssMapAtom.put(ssType, bs = new JU.BS()); +return bs; +}, "~S"); +Clazz_defineMethod(c$, "setAtomDefs", +function(){ +this.setGroupVisibilities(); +var defs = new java.util.Hashtable(); +for (var e, $e = this.htDefinedAtoms.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var bs = e.getValue(); +if (!bs.isEmpty()) defs.put(e.getKey(), bs); +} +this.addJmolObject(12290, null, defs); +return defs; +}); +Clazz_defineMethod(c$, "needSelections", +function(){ +return this.haveScenes || !this.htCarveSets.isEmpty(); +}); +Clazz_defineMethod(c$, "setUniqueBonds", +function(bsBonds, isSticks){ +if (isSticks) { +this.bsStickBonds.or(bsBonds); +this.bsStickBonds.andNot(this.bsLineBonds); +} else { +this.bsLineBonds.or(bsBonds); +this.bsLineBonds.andNot(this.bsStickBonds); +}}, "JU.BS,~B"); +Clazz_defineMethod(c$, "finalizeUniqueBonds", +function(){ +if (this.uniqueList == null) return; +var bondCount = this.vwr.ms.bondCount; +var bonds = this.vwr.ms.bo; +for (var i = this.bsUniqueBonds.nextSetBit(0); i >= 0; i = this.bsUniqueBonds.nextSetBit(i + 1)) { +var rad = NaN; +var id = this.uniqueList.get(Integer.$valueOf(i)).intValue(); +if (this.bsLineBonds.get(i)) { +rad = this.getUniqueFloatDef(id, 44, NaN) / 30; +} else if (this.bsStickBonds.get(i)) { +rad = this.getUniqueFloatDef(id, 21, NaN); +}var c = Clazz_floatToInt(this.getUniqueFloatDef(id, 376, 2147483647)); +if (c != 2147483647) c = J.adapter.readers.pymol.PyMOL.getRGB(c); +var valence = this.getUniqueFloatDef(id, 64, NaN); +var t = this.getUniqueFloatDef(id, 198, NaN); +if (i < 0 || i >= bondCount) return; +var b = bonds[i]; +this.setBondParameters(b, this.thisState - 1, rad, valence, c, t); +} +}); +Clazz_defineMethod(c$, "setBondParameters", +function(b, modelIndex, rad, pymolValence, argb, trans){ +if (modelIndex >= 0 && b.atom1.mi != modelIndex) return; +if (!Float.isNaN(rad)) b.mad = Clazz_floatToShort(rad * 2000); +var colix = b.colix; +if (argb != 2147483647) colix = JU.C.getColix(argb); +if (!Float.isNaN(trans)) b.colix = JU.C.getColixTranslucent3(colix, trans != 0, trans); + else if (b.colix != colix) b.colix = JU.C.copyColixTranslucency(b.colix, colix); +if (pymolValence == 1) b.order |= 98304; + else if (pymolValence == 0) b.order |= 65536; +}, "JM.Bond,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "addMesh", +function(tok, obj, objName, isMep){ +var jo = this.addJmolObject(tok, null, obj); +this.setSceneObject(objName, -1); +var meshColor = Clazz_floatToInt(this.floatSetting(146)); +if (meshColor < 0) meshColor = J.adapter.readers.pymol.PyMOLReader.intAt(J.adapter.readers.pymol.PyMOLReader.listAt(obj, 0), 2); +if (!isMep) { +jo.setSize(this.meshWidth); +jo.argb = J.adapter.readers.pymol.PyMOL.getRGB(meshColor); +}jo.translucency = this.transparency; +jo.cacheID = this.surfaceInfoName; +}, "~N,JU.Lst,~S,~B"); +Clazz_defineMethod(c$, "addIsosurface", +function(objectName){ +var jo = this.addJmolObject(135180, null, objectName); +jo.cacheID = this.surfaceInfoName; +return jo; +}, "~S"); +c$.MEAS_DIGITS = Clazz_newIntArray(-1, [530, 531, 532]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.adapter.readers.pymol"); +Clazz_load(["J.adapter.readers.pdb.PdbReader", "J.api.PymolAtomReader", "JU.BS", "$.P3"], "J.adapter.readers.pymol.PyMOLReader", ["java.util.Hashtable", "JU.AU", "$.BC", "$.CU", "$.Lst", "$.PT", "$.V3", "J.adapter.readers.pymol.PickleReader", "$.PyMOL", "$.PyMOLScene", "J.adapter.smarter.Atom", "$.Bond", "$.Structure", "J.c.STR", "JU.BSUtil", "$.BoxInfo", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.allowSurface = true; +this.doResize = false; +this.doCache = false; +this.isStateScript = false; +this.sourcePNGJ = false; +this.ac0 = 0; +this.$ac = 0; +this.stateCount = 0; +this.structureCount = 0; +this.isHidden = false; +this.bsStructureDefined = null; +this.bsBytesExcluded = null; +this.atomMap = null; +this.ssMapSeq = null; +this.pymolScene = null; +this.xyzMin = null; +this.xyzMax = null; +this.nModels = 0; +this.logging = false; +this.reps = null; +this.isMovie = false; +this.pymolFrame = 0; +this.allStates = false; +this.totalAtomCount = 0; +this.pymolVersion = 0; +this.trajectoryStep = null; +this.trajectoryPtr = 0; +this.objectName = null; +this.volumeData = null; +this.mapObjects = null; +this.haveMeasurements = false; +this.frames = null; +this.uniqueSettings = null; +this.atoms = null; +this.haveScenes = false; +this.baseModelIndex = 0; +this.sceneOrder = null; +this.bondCount = 0; +this.haveBinaryArrays = true; +this.ptTemp = null; +this.aTemp = null; +Clazz_instantialize(this, arguments);}, J.adapter.readers.pymol, "PyMOLReader", J.adapter.readers.pdb.PdbReader, J.api.PymolAtomReader); +Clazz_prepareFields (c$, function(){ +this.bsStructureDefined = new JU.BS(); +this.xyzMin = JU.P3.new3(1e6, 1e6, 1e6); +this.xyzMax = JU.P3.new3(-1000000.0, -1000000.0, -1000000.0); +this.reps = new Array(23); +this.ptTemp = new JU.P3(); +this.aTemp = Clazz_newByteArray (16, 0); +}); +Clazz_overrideMethod(c$, "setup", +function(fullPath, htParams, reader){ +this.isBinary = this.mustFinalizeModelSet = true; +this.setupASCR(fullPath, htParams, reader); +}, "~S,java.util.Map,~O"); +Clazz_defineMethod(c$, "initializeReader", +function(){ +this.baseAtomIndex = (this.htParams.get("baseAtomIndex")).intValue(); +this.baseModelIndex = (this.htParams.get("baseModelIndex")).intValue(); +this.asc.setInfo("noAutoBond", Boolean.TRUE); +this.asc.setCurrentModelInfo("pdbNoHydrogens", Boolean.TRUE); +this.asc.setInfo("isPyMOL", Boolean.TRUE); +if (this.isTrajectory) this.trajectorySteps = new JU.Lst(); +this.isStateScript = this.htParams.containsKey("isStateScript"); +this.sourcePNGJ = this.htParams.containsKey("sourcePNGJ"); +this.doResize = this.checkFilterKey("DORESIZE"); +this.allowSurface = !this.checkFilterKey("NOSURFACE"); +this.doCache = this.checkFilterKey("DOCACHE"); +if (this.doCache && this.sourcePNGJ) this.doCache = false; + else if (this.sourcePNGJ && !this.doCache) this.sourcePNGJ = false; +if (this.doCache) this.bsBytesExcluded = new JU.BS(); +Clazz_superCall(this, J.adapter.readers.pymol.PyMOLReader, "initializeReader", []); +}); +Clazz_overrideMethod(c$, "processBinaryDocument", +function(){ +var logFile = this.vwr.getLogFileName(); +this.logging = (logFile.length > 0); +JU.Logger.info(this.logging ? "PyMOL (1) file data streaming to " + logFile : "To view raw PyMOL file data, use 'set logFile \"some_filename\" "); +var reader = new J.adapter.readers.pymol.PickleReader(this.binaryDoc, this.vwr); +var map = reader.getMap(this.logging && JU.Logger.debuggingHigh); +reader = null; +this.process(map); +}); +Clazz_overrideMethod(c$, "setAdditionalAtomParameters", +function(atom){ +}, "J.adapter.smarter.Atom"); +Clazz_overrideMethod(c$, "finalizeSubclassReader", +function(){ +this.finalizeReaderPDB(); +this.asc.setTensors(); +}); +Clazz_overrideMethod(c$, "finalizeModelSet", +function(){ +this.pymolScene.setReaderObjects(); +if (this.haveMeasurements) { +this.appendLoadNote(this.vwr.getMeasurementInfoAsString()); +this.setLoadNote(); +}if (this.haveScenes) { +var scenes = new Array(this.sceneOrder.size()); +for (var i = scenes.length; --i >= 0; ) scenes[i] = J.adapter.readers.pymol.PyMOLReader.stringAt(this.sceneOrder, i); + +this.vwr.ms.msInfo.put("scenes", scenes); +}this.vwr.ms.setTrajectoryBs(JU.BSUtil.newBitSet2(this.baseModelIndex, this.vwr.ms.mc)); +if (!this.isStateScript) this.pymolScene.setFrameObject(0, null); +if (this.bsBytesExcluded != null) { +var nExcluded = this.bsBytesExcluded.cardinality(); +var bytes0 = this.vwr.fm.getFileAsBytes(this.filePath, null); +var bytes = Clazz_newByteArray (bytes0.length - nExcluded, 0); +for (var i = this.bsBytesExcluded.nextClearBit(0), n = bytes0.length, pt = 0; i < n; i = this.bsBytesExcluded.nextClearBit(i + 1)) bytes[pt++] = bytes0[i]; + +bytes0 = null; +var fileName = this.filePath; +this.vwr.cachePut(fileName, bytes); +}}); +Clazz_defineMethod(c$, "process", +function(map){ +this.pymolVersion = (map.get("version")).intValue(); +this.appendLoadNote("PyMOL version: " + this.pymolVersion); +var settings = this.fixSettings(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "settings")); +var lst = J.adapter.readers.pymol.PyMOLReader.listAt(settings, 749); +this.haveBinaryArrays = (lst != null && J.adapter.readers.pymol.PyMOLReader.floatAt(lst, 2) == 1); +this.sceneOrder = J.adapter.readers.pymol.PyMOLReader.getMapList(map, "scene_order"); +this.haveScenes = this.getFrameScenes(map); +var file = J.adapter.readers.pymol.PyMOLReader.listAt(settings, 440); +if (file != null && file.size() > 2) JU.Logger.info("PyMOL session file: " + file.get(2)); +this.setUniqueSettings(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "unique_settings")); +this.pymolScene = new J.adapter.readers.pymol.PyMOLScene(this, this.vwr, settings, this.uniqueSettings, this.pymolVersion, this.haveScenes, this.baseAtomIndex, this.baseModelIndex, this.doCache, this.filePath); +var logFile = this.vwr.getLogFileName(); +this.logging = (logFile.length > 0); +JU.Logger.info(this.logging ? "PyMOL file data streaming to " + logFile : "To view raw PyMOL file data, use 'set logFile \"some_filename\" "); +var names = J.adapter.readers.pymol.PyMOLReader.getMapList(map, "names"); +for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +JU.Logger.info(name); +if (name.equals("names")) { +for (var i = 1; i < names.size(); i++) { +var obj = J.adapter.readers.pymol.PyMOLReader.listAt(names, i); +JU.Logger.info(" " + J.adapter.readers.pymol.PyMOLReader.stringAt(obj, 0)); +} +}} +if (this.logging) { +if (this.logging) this.vwr.log("$CLEAR$"); +for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var name = e.getKey(); +if (!"names".equals(name)) { +this.vwr.log("\n===" + name + "==="); +this.vwr.log(JU.PT.rep(e.getValue().toString(), "[", "\n[")); +}} +this.vwr.log("\n===names==="); +for (var i = 1; i < names.size(); i++) { +this.vwr.log(""); +var list = names.get(i); +this.vwr.log(" =" + J.adapter.readers.pymol.PyMOLReader.bytesToString(list.get(0)) + "="); +try { +this.vwr.log(JU.PT.rep(list.toString(), "[", "\n[")); +} catch (e) { +} +} +}this.addColors(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "colors"), this.pymolScene.globalSetting(214) != 0); +this.allStates = (this.pymolScene.globalSetting(49) != 0); +this.pymolFrame = Clazz_floatToInt(this.pymolScene.globalSetting(194)); +this.getAtomAndStateCount(names); +this.pymolScene.setStateCount(this.stateCount); +var pymolState = Clazz_floatToInt(this.pymolScene.globalSetting(193)); +if (!this.isMovie) this.pymolScene.setFrameObject(4115, (this.allStates ? Integer.$valueOf(-1) : Integer.$valueOf(pymolState - 1))); +this.appendLoadNote("frame=" + this.pymolFrame + " state=" + pymolState + " all_states=" + this.allStates); +if (!this.isStateScript && this.doResize) { +var width = 0; +var height = 0; +var main = J.adapter.readers.pymol.PyMOLReader.getMapList(map, "main"); +if (main != null) { +width = J.adapter.readers.pymol.PyMOLReader.intAt(main, 0); +height = J.adapter.readers.pymol.PyMOLReader.intAt(main, 1); +}var note; +if (width > 0 && height > 0) { +note = "PyMOL dimensions width=" + width + " height=" + height; +this.asc.setInfo("preferredWidthHeight", Clazz_newIntArray(-1, [width, height])); +this.vwr.resizeInnerPanel(width, height); +} else { +note = "PyMOL dimensions?"; +}this.appendLoadNote(note); +}var mov; +if (!this.isStateScript && !this.allStates && (mov = J.adapter.readers.pymol.PyMOLReader.getMapList(map, "movie")) != null) { +var frameCount = J.adapter.readers.pymol.PyMOLReader.intAt(mov, 0); +if (frameCount > 0) this.processMovie(mov, frameCount); +}if (this.totalAtomCount == 0) this.asc.newAtomSet(); +if (this.allStates && this.desiredModelNumber == -2147483648) { +} else if (this.isMovie) { +switch (this.desiredModelNumber) { +case -2147483648: +break; +default: +this.desiredModelNumber = this.frames[(this.desiredModelNumber > 0 && this.desiredModelNumber <= this.frames.length ? this.desiredModelNumber : this.pymolFrame) - 1]; +this.pymolScene.setFrameObject(4115, Integer.$valueOf(this.desiredModelNumber - 1)); +break; +} +} else if (this.desiredModelNumber == 0) { +this.desiredModelNumber = pymolState; +} else { +}var n = names.size(); +for (var j = 0; j < this.stateCount; j++) { +if (!this.doGetModel(++this.nModels, null)) continue; +this.model(this.nModels, null); +this.pymolScene.currentAtomSetIndex = this.asc.iSet; +if (this.isTrajectory) { +this.trajectoryStep = new Array(this.totalAtomCount); +this.trajectorySteps.addLast(this.trajectoryStep); +this.trajectoryPtr = 0; +}for (var i = 1; i < n; i++) this.processObject(J.adapter.readers.pymol.PyMOLReader.listAt(names, i), true, j); + +} +for (var i = 1; i < n; i++) this.processObject(J.adapter.readers.pymol.PyMOLReader.listAt(names, i), false, 0); + +this.pymolScene.setReaderObjectInfo(null, 0, null, false, null, null, null); +if (this.mapObjects != null && this.allowSurface) this.processMeshes(); +if (this.isTrajectory) { +this.appendLoadNote("PyMOL trajectories read: " + this.trajectorySteps.size()); +this.asc.finalizeTrajectoryAs(this.trajectorySteps, null); +}this.processDefinitions(); +this.processSelectionsAndScenes(map); +this.pymolScene.finalizeVisibility(); +if (!this.isStateScript) { +this.vwr.initialize(false, true); +this.addJmolScript(this.pymolScene.getViewScript(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "view")).toString()); +}if (this.$ac == 0) this.asc.setInfo("dataOnly", Boolean.TRUE); +this.pymolScene.offsetObjects(); +}, "java.util.Map"); +Clazz_defineMethod(c$, "fixSettings", +function(settings){ +var n = settings.size(); +for (var i = 0; i < n; i++) { +var i2 = J.adapter.readers.pymol.PyMOLReader.intAt(settings.get(i), 0); +if (i2 == -1) { +JU.Logger.info("PyMOL reader adding null setting #" + i); +settings.set(i, new JU.Lst()); +} else { +while (i < i2) { +JU.Logger.info("PyMOL reader adding null setting #" + i); +settings.add(i++, new JU.Lst()); +n++; +} +}} +return settings; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getFrameScenes", +function(map){ +if (this.sceneOrder == null) return false; +var scenes = map.get("scene_dict"); +for (var i = 0; i < this.sceneOrder.size(); i++) { +var name = J.adapter.readers.pymol.PyMOLReader.stringAt(this.sceneOrder, i); +var thisScene = J.adapter.readers.pymol.PyMOLReader.getMapList(scenes, name); +if (thisScene == null || thisScene.get(2) == null) this.sceneOrder.removeItemAt(i--); +} +return (this.sceneOrder != null && this.sceneOrder.size() != 0); +}, "java.util.Map"); +Clazz_defineMethod(c$, "setUniqueSettings", +function(list){ +this.uniqueSettings = new java.util.Hashtable(); +var max = 0; +if (list != null && list.size() != 0) { +for (var i = list.size(); --i >= 0; ) { +var atomSettings = list.get(i); +var id = J.adapter.readers.pymol.PyMOLReader.intAt(atomSettings, 0); +if (id > max) max = id; +var mySettings = atomSettings.get(1); +for (var j = mySettings.size(); --j >= 0; ) { +var setting = mySettings.get(j); +var uid = (id << 10) + J.adapter.readers.pymol.PyMOLReader.intAt(setting, 0); +this.uniqueSettings.put(Integer.$valueOf(uid), setting); +} +} +}return max; +}, "JU.Lst"); +Clazz_defineMethod(c$, "addColors", +function(colors, isClamped){ +if (colors == null || colors.size() == 0) return; +for (var i = colors.size(); --i >= 0; ) { +var c = J.adapter.readers.pymol.PyMOLReader.listAt(colors, i); +J.adapter.readers.pymol.PyMOL.addColor(c.get(1), isClamped ? J.adapter.readers.pymol.PyMOLReader.colorSettingClamped(c, this.ptTemp) : J.adapter.readers.pymol.PyMOLReader.getColorPt(c.get(2), this.ptTemp)); +} +}, "JU.Lst,~B"); +Clazz_defineMethod(c$, "getAtomAndStateCount", +function(names){ +var n = 0; +for (var i = 1; i < names.size(); i++) { +var execObject = J.adapter.readers.pymol.PyMOLReader.listAt(names, i); +var type = J.adapter.readers.pymol.PyMOLReader.intAt(execObject, 4); +if (!this.checkObject(execObject)) continue; +if (type == 1) { +var pymolObject = J.adapter.readers.pymol.PyMOLReader.listAt(execObject, 5); +var states = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 4); +var ns = states.size(); +if (ns > this.stateCount) this.stateCount = ns; +var nAtoms; +var nBonds; +if (this.haveBinaryArrays) { +nBonds = Clazz_doubleToInt((J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 6).get(1)).length / 20); +nAtoms = Clazz_doubleToInt((J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 7).get(1)).length / 120); +n += nAtoms; +} else { +nBonds = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 6).size(); +nAtoms = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 7).size(); +}System.out.println("Object " + this.objectName + " nBonds=" + nBonds + ", nAtoms = " + nAtoms); +for (var j = 0; j < ns; j++) { +var state = J.adapter.readers.pymol.PyMOLReader.listAt(states, j); +var idxToAtm = J.adapter.readers.pymol.PyMOLReader.listAt(state, 3); +if (idxToAtm == null) { +this.isTrajectory = false; +} else { +var m = idxToAtm.size(); +n += m; +if (this.isTrajectory && m != nAtoms) this.isTrajectory = false; +}} +}} +this.totalAtomCount = n; +JU.Logger.info("PyMOL total atom count = " + this.totalAtomCount); +JU.Logger.info("PyMOL state count = " + this.stateCount); +}, "JU.Lst"); +Clazz_defineMethod(c$, "checkObject", +function(execObject){ +this.objectName = J.adapter.readers.pymol.PyMOLReader.stringAt(execObject, 0); +this.isHidden = (J.adapter.readers.pymol.PyMOLReader.intAt(execObject, 2) != 1); +return (this.objectName.indexOf("_") != 0); +}, "JU.Lst"); +Clazz_defineMethod(c$, "processMovie", +function(mov, frameCount){ +var movie = new java.util.Hashtable(); +movie.put("frameCount", Integer.$valueOf(frameCount)); +movie.put("currentFrame", Integer.$valueOf(this.pymolFrame - 1)); +var haveCommands = false; +var haveViews = false; +var haveFrames = false; +var list = J.adapter.readers.pymol.PyMOLReader.listAt(mov, 4); +for (var i = list.size(); --i >= 0; ) if (J.adapter.readers.pymol.PyMOLReader.intAt(list, i) != 0) { +this.frames = Clazz_newIntArray (list.size(), 0); +for (var j = this.frames.length; --j >= 0; ) this.frames[j] = J.adapter.readers.pymol.PyMOLReader.intAt(list, j) + 1; + +movie.put("frames", this.frames); +haveFrames = true; +break; +} +var cmds = J.adapter.readers.pymol.PyMOLReader.listAt(mov, 5); +var cmd; +for (var i = cmds.size(); --i >= 0; ) if ((cmd = J.adapter.readers.pymol.PyMOLReader.stringAt(cmds, i)) != null && cmd.length > 1) { +cmds = J.adapter.readers.pymol.PyMOLReader.fixMovieCommands(cmds); +if (cmds != null) { +movie.put("commands", cmds); +haveCommands = true; +break; +}} +var views = J.adapter.readers.pymol.PyMOLReader.listAt(mov, 6); +var view; +for (var i = views.size(); --i >= 0; ) if ((view = J.adapter.readers.pymol.PyMOLReader.listAt(views, i)) != null && view.size() >= 12 && view.get(1) != null) { +haveViews = true; +views = J.adapter.readers.pymol.PyMOLReader.fixMovieViews(views); +if (views != null) { +movie.put("views", views); +break; +}} +this.appendLoadNote("PyMOL movie frameCount = " + frameCount); +if (haveFrames && !haveCommands && !haveViews) { +this.isMovie = true; +this.pymolScene.setReaderObjectInfo(null, 0, null, false, null, null, null); +this.pymolScene.setFrameObject(1073742031, movie); +} else { +}}, "JU.Lst,~N"); +c$.fixMovieViews = Clazz_defineMethod(c$, "fixMovieViews", +function(views){ +return views; +}, "JU.Lst"); +c$.fixMovieCommands = Clazz_defineMethod(c$, "fixMovieCommands", +function(cmds){ +return cmds; +}, "JU.Lst"); +Clazz_defineMethod(c$, "processObject", +function(execObject, moleculeOnly, iState){ +if (execObject == null) return; +var type = J.adapter.readers.pymol.PyMOLReader.intAt(execObject, 4); +var startLen = execObject.get(execObject.size() - 1); +if ((type == 1) != moleculeOnly || !this.checkObject(execObject)) return; +var pymolObject = J.adapter.readers.pymol.PyMOLReader.listAt(execObject, 5); +var stateSettings = null; +if (type == 1) { +var states = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 4); +var state = J.adapter.readers.pymol.PyMOLReader.listAt(states, iState); +var idxToAtm = J.adapter.readers.pymol.PyMOLReader.listAt(state, 3); +if (iState > 0 && (idxToAtm == null || idxToAtm.size() == 0)) return; +stateSettings = J.adapter.readers.pymol.PyMOLReader.listAt(state, 7); +} else if (iState > 0) { +return; +}JU.Logger.info("PyMOL model " + (this.nModels) + " Object " + this.objectName + (this.isHidden ? " (hidden)" : " (visible)")); +if (!this.isHidden && !this.isMovie && !this.allStates) { +if (this.pymolFrame > 0 && this.pymolFrame != this.nModels) { +this.pymolFrame = this.nModels; +this.allStates = true; +this.pymolScene.setFrameObject(4115, Integer.$valueOf(-1)); +}}var objectHeader = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 0); +var parentGroupName = (execObject.size() < 8 ? null : J.adapter.readers.pymol.PyMOLReader.stringAt(execObject, 6)); +if (parentGroupName != null && "".equals(parentGroupName.trim())) parentGroupName = null; +this.pymolScene.setReaderObjectInfo(this.objectName, type, parentGroupName, this.isHidden, J.adapter.readers.pymol.PyMOLReader.listAt(objectHeader, 8), stateSettings, (moleculeOnly ? "_" + (iState + 1) : "")); +var bsAtoms = null; +var doExclude = (this.bsBytesExcluded != null); +var msg = null; +switch (type) { +default: +msg = "" + type; +break; +case -1: +this.pymolScene.processSelection(execObject); +break; +case 1: +doExclude = false; +bsAtoms = this.processMolecule(pymolObject, iState); +break; +case 4: +doExclude = false; +this.processMeasure(pymolObject); +break; +case 3: +case 2: +this.processMap(pymolObject, type == 3, false); +break; +case 8: +this.processGadget(pymolObject); +break; +case 12: +if (parentGroupName == null) parentGroupName = ""; +break; +case 6: +msg = "CGO"; +this.processCGO(pymolObject); +break; +case 11: +msg = "ALIGNEMENT"; +break; +case 9: +msg = "CALCULATOR"; +break; +case 5: +msg = "CALLBACK"; +break; +case 10: +msg = "SLICE"; +break; +case 7: +msg = "SURFACE"; +break; +} +if (parentGroupName != null || bsAtoms != null) this.pymolScene.addGroup(execObject, parentGroupName, type, bsAtoms); +if (doExclude) { +var i0 = J.adapter.readers.pymol.PyMOLReader.intAt(startLen, 0); +var len = J.adapter.readers.pymol.PyMOLReader.intAt(startLen, 1); +this.bsBytesExcluded.setBits(i0, i0 + len); +JU.Logger.info("cached PSE file excludes PyMOL object type " + type + " name=" + this.objectName + " len=" + len); +}if (msg != null) JU.Logger.error("Unprocessed object type " + msg + " " + this.objectName); +}, "JU.Lst,~B,~N"); +Clazz_defineMethod(c$, "processCGO", +function(pymolObject){ +if (this.isStateScript) return; +if (this.isHidden) return; +var data = J.adapter.readers.pymol.PyMOLReader.sublistAt(pymolObject, [2, 0]); +var color = J.adapter.readers.pymol.PyMOL.getRGB(J.adapter.readers.pymol.PyMOLReader.intAt(J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 0), 2)); +var name = this.pymolScene.addCGO(data, color); +if (name != null) this.appendLoadNote("CGO " + name); +}, "JU.Lst"); +Clazz_defineMethod(c$, "processGadget", +function(pymolObject){ +if (this.objectName.endsWith("_e_pot")) this.processMap(pymolObject, true, true); +}, "JU.Lst"); +Clazz_defineMethod(c$, "processMap", +function(pymolObject, isObject, isGadget){ +if (isObject) { +if (this.sourcePNGJ) return; +if (this.isHidden && !isGadget) return; +if (this.mapObjects == null) this.mapObjects = new JU.Lst(); +this.mapObjects.addLast(pymolObject); +} else { +if (this.volumeData == null) this.volumeData = new java.util.Hashtable(); +this.volumeData.put(this.objectName, pymolObject); +if (!this.isHidden && !this.isStateScript) this.pymolScene.addIsosurface(this.objectName); +}pymolObject.addLast(this.objectName); +}, "JU.Lst,~B,~B"); +Clazz_defineMethod(c$, "processMeasure", +function(pymolObject){ +if (this.isStateScript) return; +if (this.isHidden) return; +JU.Logger.info("PyMOL measure " + this.objectName); +var measure = J.adapter.readers.pymol.PyMOLReader.sublistAt(pymolObject, [2, 0]); +var pt; +var nCoord = (Clazz_instanceOf(measure.get(pt = 1),"JU.Lst") ? 2 : Clazz_instanceOf(measure.get(pt = 4),"JU.Lst") ? 3 : Clazz_instanceOf(measure.get(pt = 6),"JU.Lst") ? 4 : 0); +if (nCoord == 0) return; +var setting = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 0); +var bsReps = J.adapter.readers.pymol.PyMOLReader.getBsReps(J.adapter.readers.pymol.PyMOLReader.listAt(setting, 3)); +var list = J.adapter.readers.pymol.PyMOLReader.listAt(measure, pt); +var offsets = J.adapter.readers.pymol.PyMOLReader.listAt(measure, 8); +var haveLabels = (measure.size() > 8); +var color = J.adapter.readers.pymol.PyMOLReader.intAt(setting, 2); +if (this.pymolScene.addMeasurements(null, nCoord, list, bsReps, color, offsets, haveLabels)) this.haveMeasurements = true; +}, "JU.Lst"); +Clazz_defineMethod(c$, "processMolecule", +function(pymolObject, iState){ +var states = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 4); +var state = J.adapter.readers.pymol.PyMOLReader.listAt(states, iState); +var idxToAtm; +var coords; +var labelPositions; +var idxArray = null; +var coordsArray = null; +var labelArray = null; +var nBonds = J.adapter.readers.pymol.PyMOLReader.intAt(pymolObject, 2); +var nAtoms = J.adapter.readers.pymol.PyMOLReader.intAt(pymolObject, 3); +var n = nAtoms; +if (this.haveBinaryArrays && JU.AU.isAB(state.get(3))) { +idxToAtm = coords = labelPositions = null; +idxArray = Clazz_newIntArray (nAtoms, 0); +coordsArray = Clazz_newFloatArray (nAtoms * 3, 0); +this.fillFloatArrayFromBytes(state.get(2), coordsArray); +this.fillIntArrayFromBytes(state.get(3), idxArray); +var b = state.get(8); +if (b != null) { +labelArray = Clazz_newFloatArray (nAtoms * 7, 0); +this.fillFloatArrayFromBytes(b, labelArray); +}} else { +coords = J.adapter.readers.pymol.PyMOLReader.listAt(state, 2); +idxToAtm = J.adapter.readers.pymol.PyMOLReader.listAt(state, 3); +labelPositions = J.adapter.readers.pymol.PyMOLReader.listAt(state, 8); +if (idxToAtm != null) n = idxToAtm.size(); +}if (n == 0) return null; +this.$ac = this.ac0 = this.asc.ac; +if (nAtoms == 0) return null; +this.ssMapSeq = new java.util.Hashtable(); +if (iState == 0) this.processMolCryst(J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 10)); +var bonds = this.getBondList(J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 6)); +var pymolAtoms = J.adapter.readers.pymol.PyMOLReader.listAt(pymolObject, 7); +this.atomMap = Clazz_newIntArray (nAtoms, 0); +var bsAtoms = this.pymolScene.setAtomMap(this.atomMap, this.ac0); +for (var i = 0; i < 23; i++) this.reps[i] = JU.BS.newN(1000); + +if (iState == 0 || !this.isTrajectory) { +this.pymolScene.ensureCapacity(n); +var lexStr = null; +var atomArray = null; +var vArray = null; +if (this.haveBinaryArrays) { +var ver = J.adapter.readers.pymol.PyMOLReader.intAt(pymolAtoms, 0); +atomArray = pymolAtoms.get(1); +lexStr = this.getLexStr(pymolAtoms.get(2)); +System.out.println("PyMOL atom dump version " + ver); +vArray = (this.haveBinaryArrays ? J.adapter.readers.pymol.PyMOL.getVArray(ver) : null); +}for (var idx = 0; idx < n; idx++) { +var a = this.addAtom(pymolAtoms, (idxToAtm != null ? J.adapter.readers.pymol.PyMOLReader.intAt(idxToAtm, idx) : idxArray != null ? idxArray[idx] : idx), atomArray, vArray, lexStr, idx, coords, coordsArray, labelPositions, labelArray, bsAtoms, iState); +if (a != null) this.trajectoryStep[this.trajectoryPtr++] = a; +} +}this.addBonds(bonds); +this.addMolStructures(); +this.atoms = this.asc.atoms; +if (!this.isStateScript) this.createShapeObjects(); +this.ssMapSeq = null; +JU.Logger.info("reading " + (this.$ac - this.ac0) + " atoms and " + nBonds + " bonds"); +JU.Logger.info("----------"); +return bsAtoms; +}, "JU.Lst,~N"); +Clazz_defineMethod(c$, "getLexStr", +function(lex){ +var pt = 0; +var n = JU.BC.bytesToInt(lex, pt, false); +var index = Clazz_newIntArray (n, 0); +var imax = 0; +for (var i = 0; i < n; i++) { +pt += 4; +var ipt = index[i] = JU.BC.bytesToInt(lex, pt, false); +if (ipt > imax) imax = ipt; +} +var tokens = new Array(imax + 1); +tokens[0] = " "; +pt += 4; +for (var i = 0; i < n; i++) { +var s = tokens[index[i]] = this.getCStr(lex, pt); +pt += s.length + 1; +} +return tokens; +}, "~A"); +Clazz_defineMethod(c$, "getCStr", +function(lex, pt){ +try { +var a = this.aTemp; +var apt = 0; +var b = 0; +while ((b = lex[pt++]) != 0) { +if (apt >= a.length) a = this.aTemp = JU.AU.doubleLengthByte(a); +a[apt++] = b; +} +return String.instantialize(JU.AU.arrayCopyByte(a, apt), "UTF-8"); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +return null; +} else { +throw e; +} +} +}, "~A,~N"); +Clazz_defineMethod(c$, "processMolCryst", +function(cryst){ +if (cryst == null || cryst.size() == 0) return; +var l = J.adapter.readers.pymol.PyMOLReader.sublistAt(cryst, [0, 0]); +var a = J.adapter.readers.pymol.PyMOLReader.sublistAt(cryst, [0, 1]); +this.setUnitCell(J.adapter.readers.pymol.PyMOLReader.floatAt(l, 0), J.adapter.readers.pymol.PyMOLReader.floatAt(l, 1), J.adapter.readers.pymol.PyMOLReader.floatAt(l, 2), J.adapter.readers.pymol.PyMOLReader.floatAt(a, 0), J.adapter.readers.pymol.PyMOLReader.floatAt(a, 1), J.adapter.readers.pymol.PyMOLReader.floatAt(a, 2)); +this.setSpaceGroupName(J.adapter.readers.pymol.PyMOLReader.stringAt(cryst, 1)); +}, "JU.Lst"); +Clazz_defineMethod(c$, "getBondList", +function(bonds){ +var asSingle = !this.pymolScene.booleanSetting(64); +var b = null; +var vArray = null; +var n = bonds.size(); +var len = 0; +if (this.haveBinaryArrays && n == 2) { +var ver = J.adapter.readers.pymol.PyMOLReader.intAt(bonds, 0); +System.out.println("PyMOL bond dump version " + ver); +vArray = J.adapter.readers.pymol.PyMOL.getVArrayB(ver); +b = bonds.get(1); +len = vArray[0]; +n = Clazz_doubleToInt(b.length / len); +}var bondList = new JU.Lst(); +bondList.ensureCapacity(n); +var ia; +var ib; +var order; +var uid = -1; +for (var i = 0, apt = 0; i < n; i++) { +if (this.haveBinaryArrays) { +ia = JU.BC.bytesToInt(b, apt + vArray[1], false); +ib = JU.BC.bytesToInt(b, apt + vArray[2], false); +uid = (b[apt + vArray[6]] == 0 ? -1 : JU.BC.bytesToInt(b, apt + vArray[5], false)); +order = b[apt + vArray[3]]; +apt += len; +} else { +var lst = J.adapter.readers.pymol.PyMOLReader.listAt(bonds, i); +ia = J.adapter.readers.pymol.PyMOLReader.intAt(lst, 0); +ib = J.adapter.readers.pymol.PyMOLReader.intAt(lst, 1); +order = J.adapter.readers.pymol.PyMOLReader.intAt(lst, 2); +uid = (lst.size() > 6 && J.adapter.readers.pymol.PyMOLReader.intAt(lst, 6) != 0 ? J.adapter.readers.pymol.PyMOLReader.intAt(lst, 5) : -1); +}if (order < 1 || order > 3) order = 1; +order |= (asSingle || order == 1 ? 65536 : 98304); +var bond = new J.adapter.smarter.Bond(ia, ib, order); +bond.uniqueID = uid; +bondList.addLast(bond); +} +return bondList; +}, "JU.Lst"); +Clazz_defineMethod(c$, "fillIntArrayFromBytes", +function(b, array){ +for (var i = 0, pt = 0; i < b.length; i += 4) array[pt++] = JU.BC.bytesToInt(b, i, false); + +}, "~A,~A"); +Clazz_defineMethod(c$, "fillFloatArrayFromBytes", +function(b, array){ +try { +for (var i = 0, pt = 0; i < b.length; i += 4) array[pt++] = JU.BC.bytesToFloat(b, i, false); + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A,~A"); +Clazz_defineMethod(c$, "addAtom", +function(pymolAtoms, apt, atomArray, vArray, lexStr, icoord, coords, coordArray, labelPositions, labelArray, bsState, iState){ +this.atomMap[apt] = -1; +var chainID; +var altLoc; +var group3; +var name; +var sym; +var label; +var ssType; +var resi; +var insCode = null; +var bfactor; +var occupancy; +var radius; +var partialCharge; +var seqNo; +var intReps; +var formalCharge; +var atomColor; +var serNo; +var cartoonType; +var flags; +var uniqueID = -1; +var isHetero; +var bonded; +var anisou = null; +var bsReps = null; +if (this.haveBinaryArrays) { +var vpt; +var pt = apt * vArray[0]; +seqNo = this.atomInt(atomArray, pt, vArray[1]); +chainID = this.atomStr(atomArray, pt, vArray[34], lexStr); +resi = this.atomStr(atomArray, pt, vArray[38], lexStr); +group3 = this.atomStr(atomArray, pt, vArray[41], lexStr); +if (group3.length > 3) group3 = group3.substring(0, 3); +name = this.atomStr(atomArray, pt, vArray[36], lexStr); +sym = this.atomStr(atomArray, pt, vArray[37], lexStr); +label = this.atomStr(atomArray, pt, vArray[19], lexStr); +ssType = this.atomStr(atomArray, pt, vArray[39], null); +altLoc = this.atomStr(atomArray, pt, vArray[40], null); +if ((vpt = vArray[42]) == 0) { +resi = this.atomStr(atomArray, pt, vArray[38], null); +} else { +var b = atomArray[pt + vpt]; +insCode = (b == 0 ? " " : "" + String.fromCharCode(b)); +}bfactor = this.atomFloat(atomArray, pt, vArray[4]); +occupancy = this.atomFloat(atomArray, pt, vArray[5]); +radius = this.atomFloat(atomArray, pt, vArray[6]); +partialCharge = this.atomFloat(atomArray, pt, vArray[7]); +formalCharge = atomArray[pt + vArray[28]]; +if (formalCharge > 125) formalCharge -= 512; +intReps = this.atomInt(atomArray, pt, vArray[20]); +atomColor = this.atomInt(atomArray, pt, vArray[9]); +serNo = this.atomInt(atomArray, pt, vArray[10]); +cartoonType = this.atomInt(atomArray, pt, vArray[30]); +flags = this.atomInt(atomArray, pt, vArray[11]); +uniqueID = this.atomInt(atomArray, pt, vArray[13]); +if (uniqueID == 0) uniqueID = -1; +anisou = Clazz_newFloatArray (8, 0); +if ((vpt = vArray[45]) > 0) for (var i = 0; i < 6; i++) anisou[i] = JU.BC.bytesToShort(atomArray, pt + vpt + (i << 1), false); + +bonded = this.atomBool(atomArray, pt, vArray[22], vArray[47]); +isHetero = this.atomBool(atomArray, pt, vArray[21], vArray[46]); +} else { +var a = J.adapter.readers.pymol.PyMOLReader.listAt(pymolAtoms, apt); +seqNo = J.adapter.readers.pymol.PyMOLReader.intAt(a, 0); +chainID = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 1); +if (chainID.length == 0) chainID = " "; +altLoc = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 2); +resi = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 3); +group3 = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 5); +name = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 6); +sym = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 7); +label = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 9); +ssType = J.adapter.readers.pymol.PyMOLReader.stringAt(a, 10); +if (ssType.length == 0) ssType = " "; +ssType = ssType.substring(0, 1); +bfactor = J.adapter.readers.pymol.PyMOLReader.floatAt(a, 14); +occupancy = J.adapter.readers.pymol.PyMOLReader.floatAt(a, 15); +radius = J.adapter.readers.pymol.PyMOLReader.floatAt(a, 16); +partialCharge = J.adapter.readers.pymol.PyMOLReader.floatAt(a, 17); +formalCharge = J.adapter.readers.pymol.PyMOLReader.intAt(a, 18); +isHetero = (J.adapter.readers.pymol.PyMOLReader.intAt(a, 19) != 0); +bsReps = J.adapter.readers.pymol.PyMOLReader.getBsReps(J.adapter.readers.pymol.PyMOLReader.listAt(a, 20)); +intReps = (bsReps == null ? J.adapter.readers.pymol.PyMOLReader.intAt(a, 20) : 0); +atomColor = J.adapter.readers.pymol.PyMOLReader.intAt(a, 21); +serNo = J.adapter.readers.pymol.PyMOLReader.intAt(a, 22); +cartoonType = J.adapter.readers.pymol.PyMOLReader.intAt(a, 23); +flags = J.adapter.readers.pymol.PyMOLReader.intAt(a, 24); +bonded = (J.adapter.readers.pymol.PyMOLReader.intAt(a, 25) != 0); +uniqueID = (a.size() > 40 && J.adapter.readers.pymol.PyMOLReader.intAt(a, 40) == 1 ? J.adapter.readers.pymol.PyMOLReader.intAt(a, 32) : -1); +if (a.size() > 46) anisou = J.adapter.readers.pymol.PyMOLReader.floatsAt(a, 41, Clazz_newFloatArray (8, 0), 6); +}if (insCode == null) { +var len = resi.length; +var ch = (len > 0 ? resi.charAt(len - 1) : ' '); +insCode = (JU.PT.isDigit(ch) ? " " : "" + ch); +}if (group3.length > 3) group3 = group3.substring(0, 3); +if (group3.equals(" ")) group3 = "UNK"; +if (sym.equals("A")) sym = "C"; +var ichain = this.vwr.getChainID(chainID, true); +var atom = this.processAtom( new J.adapter.smarter.Atom(), name, (altLoc.length == 0 ? ' ' : altLoc.charAt(0)), group3, ichain, seqNo, insCode.charAt(0), isHetero, sym); +if (!this.filterPDBAtom(atom, this.fileAtomIndex++)) return null; +var x; +var y; +var z; +icoord *= 3; +if (this.haveBinaryArrays) { +x = coordArray[icoord]; +y = coordArray[++icoord]; +z = coordArray[++icoord]; +} else { +x = J.adapter.readers.pymol.PyMOLReader.floatAt(coords, icoord); +y = J.adapter.readers.pymol.PyMOLReader.floatAt(coords, ++icoord); +z = J.adapter.readers.pymol.PyMOLReader.floatAt(coords, ++icoord); +}JU.BoxInfo.addPointXYZ(x, y, z, this.xyzMin, this.xyzMax, 0); +if (this.isTrajectory && iState > 0) return null; +var isNucleic = (J.adapter.readers.pymol.PyMOLReader.nucleic.indexOf(group3) >= 0); +if (bsState != null) bsState.set(this.$ac); +if (seqNo >= -1000 && (!ssType.equals(" ") || name.equals("CA") || isNucleic)) { +var bs = this.ssMapSeq.get(ssType); +if (bs == null) this.ssMapSeq.put(ssType, bs = new JU.BS()); +bs.set(seqNo - -1000); +ssType += ichain; +bs = this.ssMapSeq.get(ssType); +if (bs == null) this.ssMapSeq.put(ssType, bs = new JU.BS()); +bs.set(seqNo - -1000); +}atom.bfactor = bfactor; +atom.foccupancy = occupancy; +atom.radius = radius; +if (atom.radius == 0) atom.radius = 1; +atom.partialCharge = partialCharge; +atom.vib = JU.V3.new3(uniqueID, cartoonType, NaN); +if (anisou != null && anisou[0] != 0) this.asc.setAnisoBorU(atom, anisou, 12); +this.pymolScene.setAtomColor(atomColor); +this.processAtom2(atom, serNo, x, y, z, formalCharge); +if (!bonded) this.pymolScene.bsNonbonded.set(this.$ac); +if (!label.equals(" ")) { +this.pymolScene.bsLabeled.set(this.$ac); +var labelPos = Clazz_newFloatArray (7, 0); +if (labelArray != null) { +for (var i = 0; i < 7; i++) labelPos[i] = labelArray[apt * 7 + i]; + +} else { +var labelOffset = J.adapter.readers.pymol.PyMOLReader.listAt(labelPositions, apt); +if (labelOffset != null) { +for (var i = 0; i < 7; i++) labelPos[i] = J.adapter.readers.pymol.PyMOLReader.floatAt(labelOffset, i); + +}}this.pymolScene.addLabel(this.$ac, uniqueID, atomColor, labelPos, label); +}if (this.isHidden) this.pymolScene.bsHidden.set(this.$ac); +if (isNucleic) this.pymolScene.bsNucleic.set(this.$ac); +for (var i = 0; i < 21; i++) if (bsReps == null ? ((intReps & (1 << i)) != 0) : bsReps.get(i)) this.reps[i].set(this.$ac); + +if (atom.elementSymbol.equals("H")) this.pymolScene.bsHydrogen.set(this.$ac); +if ((flags & J.adapter.readers.pymol.PyMOL.FLAG_NOSURFACE) != 0) this.pymolScene.bsNoSurface.set(this.$ac); +this.atomMap[apt] = this.$ac++; +return null; +}, "JU.Lst,~N,~A,~A,~A,~N,JU.Lst,~A,JU.Lst,~A,JU.BS,~N"); +Clazz_defineMethod(c$, "atomBool", +function(atomArray, pt, offset, mask){ +return ((atomArray[pt + offset] & mask) != 0); +}, "~A,~N,~N,~N"); +Clazz_defineMethod(c$, "atomFloat", +function(atomArray, pt, offset){ +try { +return JU.BC.bytesToFloat(atomArray, pt + offset, false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return 0; +} else { +throw e; +} +} +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "atomStr", +function(atomArray, pt, offset, lexStr){ +if (offset < 0) return lexStr[JU.BC.bytesToInt(atomArray, pt - offset, false)]; +var s = this.getCStr(atomArray, pt + offset); +return (s.length == 0 ? " " : s); +}, "~A,~N,~N,~A"); +Clazz_defineMethod(c$, "atomInt", +function(atomArray, pt, offset){ +return JU.BC.bytesToInt(atomArray, pt + offset, false); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "addBonds", +function(bonds){ +var n = bonds.size(); +for (var i = 0; i < n; i++) { +var bond = bonds.get(i); +bond.atomIndex1 = this.atomMap[bond.atomIndex1]; +bond.atomIndex2 = this.atomMap[bond.atomIndex2]; +if (bond.atomIndex1 < 0 || bond.atomIndex2 < 0) continue; +this.pymolScene.setUniqueBond(this.bondCount++, bond.uniqueID); +this.asc.addBond(bond); +} +}, "JU.Lst"); +Clazz_defineMethod(c$, "addMolStructures", +function(){ +this.addMolSS("H", J.c.STR.HELIX); +this.addMolSS("S", J.c.STR.SHEET); +this.addMolSS("L", J.c.STR.TURN); +this.addMolSS(" ", J.c.STR.NONE); +}); +Clazz_defineMethod(c$, "addMolSS", +function(ssType, type){ +if (this.ssMapSeq.get(ssType) == null) return; +var istart = -1; +var iend = -1; +var ichain = 0; +var atoms = this.asc.atoms; +var bsSeq = null; +var bsAtom = this.pymolScene.getSSMapAtom(ssType); +var n = this.$ac + 1; +var seqNo = -1; +var thischain = 0; +var imodel = -1; +var thisModel = -1; +for (var i = this.ac0; i < n; i++) { +if (i == this.$ac) { +thischain = 0; +} else { +seqNo = atoms[i].sequenceNumber; +thischain = atoms[i].chainID; +thisModel = atoms[i].atomSetIndex; +}if (thischain != ichain || thisModel != imodel) { +ichain = thischain; +imodel = thisModel; +bsSeq = this.ssMapSeq.get(ssType + thischain); +--i; +if (istart < 0) continue; +} else if (bsSeq != null && seqNo >= -1000 && bsSeq.get(seqNo - -1000)) { +iend = i; +if (istart < 0) istart = i; +continue; +} else if (istart < 0) { +continue; +}if (type !== J.c.STR.NONE) { +var pt = this.bsStructureDefined.nextSetBit(istart); +if (pt >= 0 && pt <= iend) continue; +this.bsStructureDefined.setBits(istart, iend + 1); +var structure = new J.adapter.smarter.Structure(imodel, type, type, type.toString(), "" + (++this.structureCount), type === J.c.STR.SHEET ? 1 : 0, null); +var a = atoms[istart]; +var b = atoms[iend]; +var i0 = this.asc.getAtomSetAtomIndex(thisModel); +structure.set(a.chainID, a.sequenceNumber, a.insertionCode, b.chainID, b.sequenceNumber, b.insertionCode, istart - i0, iend - i0); +this.asc.addStructure(structure); +}bsAtom.setBits(istart, iend + 1); +istart = -1; +} +}, "~S,J.c.STR"); +Clazz_defineMethod(c$, "createShapeObjects", +function(){ +this.pymolScene.createShapeObjects(this.reps, this.allowSurface && !this.isHidden, this.ac0, this.$ac); +}); +Clazz_defineMethod(c$, "processMeshes", +function(){ +var fileName = this.vwr.fm.getFilePath(this.pymolScene.surfaceInfoName, true, false); +this.vwr.cachePut(fileName, this.volumeData); +for (var i = this.mapObjects.size(); --i >= 0; ) { +var obj = this.mapObjects.get(i); +var objName = obj.get(obj.size() - 1).toString(); +var isMep = objName.endsWith("_e_pot"); +var mapName; +var tok; +if (isMep) { +tok = 1073742016; +var root = objName.substring(0, objName.length - 3); +mapName = root + "map"; +var isosurfaceName = this.pymolScene.getObjectID(root + "chg"); +if (isosurfaceName == null) continue; +obj.addLast(isosurfaceName); +this.pymolScene.mepList += ";" + isosurfaceName + ";"; +} else { +tok = 1073742018; +mapName = J.adapter.readers.pymol.PyMOLReader.stringAt(J.adapter.readers.pymol.PyMOLReader.sublistAt(obj, [2, 0]), 1); +}var surface = this.volumeData.get(mapName); +if (surface == null) continue; +obj.addLast(mapName); +this.volumeData.put(objName, obj); +this.volumeData.put("__pymolSurfaceData__", obj); +if (!this.isStateScript) this.pymolScene.addMesh(tok, obj, objName, isMep); +this.appendLoadNote("PyMOL object " + objName + " references map " + mapName); +} +}); +Clazz_defineMethod(c$, "processDefinitions", +function(){ +var s = this.vwr.getAtomDefs(this.pymolScene.setAtomDefs()); +if (s.length > 2) s = s.substring(0, s.length - 2); +this.appendLoadNote(s); +}); +Clazz_defineMethod(c$, "processSelectionsAndScenes", +function(map){ +if (!this.pymolScene.needSelections()) return; +var htObjNames = J.adapter.readers.pymol.PyMOLReader.listToMap(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "names")); +if (this.haveScenes) { +var scenes = map.get("scene_dict"); +this.finalizeSceneData(); +var htSecrets = J.adapter.readers.pymol.PyMOLReader.listToMap(J.adapter.readers.pymol.PyMOLReader.getMapList(map, "selector_secrets")); +for (var i = 0; i < this.sceneOrder.size(); i++) { +var name = J.adapter.readers.pymol.PyMOLReader.stringAt(this.sceneOrder, i); +var thisScene = J.adapter.readers.pymol.PyMOLReader.getMapList(scenes, name); +if (thisScene == null) continue; +this.pymolScene.buildScene(name, thisScene, htObjNames, htSecrets); +this.appendLoadNote("scene: " + name); +} +}this.pymolScene.setCarveSets(htObjNames); +}, "java.util.Map"); +Clazz_defineMethod(c$, "finalizeSceneData", +function(){ +var cartoonTypes = Clazz_newIntArray (this.$ac, 0); +var uniqueIDs = Clazz_newIntArray (this.$ac, 0); +var sequenceNumbers = Clazz_newIntArray (this.$ac, 0); +var newChain = Clazz_newBooleanArray(this.$ac, false); +var radii = Clazz_newFloatArray (this.$ac, 0); +var lastAtomChain = -2147483648; +var lastAtomSet = -2147483648; +for (var i = 0; i < this.$ac; i++) { +cartoonTypes[i] = this.getCartoonType(i); +uniqueIDs[i] = this.getUniqueID(i); +sequenceNumbers[i] = this.getSequenceNumber(i); +radii[i] = this.getVDW(i); +if (lastAtomChain != this.atoms[i].chainID || lastAtomSet != this.atoms[i].atomSetIndex) { +newChain[i] = true; +lastAtomChain = this.atoms[i].chainID; +lastAtomSet = this.atoms[i].atomSetIndex; +}} +this.pymolScene.setAtomInfo(uniqueIDs, cartoonTypes, sequenceNumbers, newChain, radii); +}); +c$.intAt = Clazz_defineMethod(c$, "intAt", +function(list, i){ +return (list == null ? -1 : (list.get(i)).intValue()); +}, "JU.Lst,~N"); +c$.pointAt = Clazz_defineMethod(c$, "pointAt", +function(list, i, pt){ +pt.set(J.adapter.readers.pymol.PyMOLReader.floatAt(list, i++), J.adapter.readers.pymol.PyMOLReader.floatAt(list, i++), J.adapter.readers.pymol.PyMOLReader.floatAt(list, i)); +return pt; +}, "JU.Lst,~N,JU.P3"); +c$.floatsAt = Clazz_defineMethod(c$, "floatsAt", +function(a, pt, data, len){ +if (a == null) return null; +for (var i = 0; i < len; i++) data[i] = J.adapter.readers.pymol.PyMOLReader.floatAt(a, pt++); + +return data; +}, "JU.Lst,~N,~A,~N"); +c$.floatAt = Clazz_defineMethod(c$, "floatAt", +function(list, i){ +return (list == null || i >= list.size() ? 0 : (list.get(i)).floatValue()); +}, "JU.Lst,~N"); +c$.listAt = Clazz_defineMethod(c$, "listAt", +function(list, i){ +if (list == null || i >= list.size()) return null; +var o = list.get(i); +return (Clazz_instanceOf(o,"JU.Lst") ? o : null); +}, "JU.Lst,~N"); +c$.sublistAt = Clazz_defineMethod(c$, "sublistAt", +function(mesh, pt){ +for (var i = 0; i < pt.length; i++) mesh = mesh.get(pt[i]); + +return mesh; +}, "JU.Lst,~A"); +c$.listToMap = Clazz_defineMethod(c$, "listToMap", +function(list){ +var map = new java.util.Hashtable(); +for (var i = list.size(); --i >= 0; ) { +var item = J.adapter.readers.pymol.PyMOLReader.listAt(list, i); +if (item != null && item.size() > 0) map.put(J.adapter.readers.pymol.PyMOLReader.stringAt(item, 0), item); +} +return map; +}, "JU.Lst"); +c$.stringAt = Clazz_defineMethod(c$, "stringAt", +function(list, i){ +var o = list.get(i); +if ((typeof(o)=='string')) return o; +var a = list.get(i); +return (a.length == 0 ? " " : J.adapter.readers.pymol.PyMOLReader.bytesToString(a)); +}, "JU.Lst,~N"); +c$.bytesToString = Clazz_defineMethod(c$, "bytesToString", +function(object){ +try { +return String.instantialize(object, "UTF-8"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return object.toString(); +} else { +throw e; +} +} +}, "~O"); +c$.colorSettingClamped = Clazz_defineMethod(c$, "colorSettingClamped", +function(c, ptTemp){ +return J.adapter.readers.pymol.PyMOLReader.getColorPt(c.get(c.size() < 6 || J.adapter.readers.pymol.PyMOLReader.intAt(c, 4) == 0 ? 2 : 5), ptTemp); +}, "JU.Lst,JU.P3"); +c$.getColorPt = Clazz_defineMethod(c$, "getColorPt", +function(o, ptTemp){ +return (o == null ? 0 : Clazz_instanceOf(o, Integer) ? (o).intValue() : JU.CU.colorPtToFFRGB(J.adapter.readers.pymol.PyMOLReader.pointAt(o, 0, ptTemp))); +}, "~O,JU.P3"); +c$.getMapList = Clazz_defineMethod(c$, "getMapList", +function(map, key){ +return map.get(key); +}, "java.util.Map,~S"); +c$.getBsReps = Clazz_defineMethod(c$, "getBsReps", +function(list){ +if (list == null) return null; +var bsReps = new JU.BS(); +var n = Math.min(list.size(), 21); +for (var i = 0; i < n; i++) { +if (J.adapter.readers.pymol.PyMOLReader.intAt(list, i) == 1) bsReps.set(i); +} +return bsReps; +}, "JU.Lst"); +Clazz_overrideMethod(c$, "getUniqueID", +function(iAtom){ +return Clazz_floatToInt(this.atoms[iAtom].vib.x); +}, "~N"); +Clazz_overrideMethod(c$, "getCartoonType", +function(iAtom){ +return Clazz_floatToInt(this.atoms[iAtom].vib.y); +}, "~N"); +Clazz_overrideMethod(c$, "getVDW", +function(iAtom){ +return this.atoms[iAtom].radius; +}, "~N"); +Clazz_overrideMethod(c$, "getSequenceNumber", +function(iAtom){ +return this.atoms[iAtom].sequenceNumber; +}, "~N"); +Clazz_overrideMethod(c$, "compareAtoms", +function(iPrev, i){ +return this.atoms[iPrev].chainID != this.atoms[i].chainID; +}, "~N,~N"); +c$.nucleic = " A C G T U ADE THY CYT GUA URI DA DC DG DT DU "; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corepymol.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corepymol.z.js new file mode 100755 index 000000000000..8a303b37677d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corepymol.z.js @@ -0,0 +1,275 @@ +(function(Z,$,aa,ba,F,ca,D,y,G,H,K,n,da,M,ea,B,x,E,U,N,fa,I,S,T,ga,ha,ia,C,ja,V,W,ka,X,la,ma,Y,na,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,Ca,Da,Ea,Fa,e,t){D("J.api");S(J.api,"JmolSceneGenerator");D("J.adapter.readers.pymol");G(["java.util.Hashtable","JU.Lst"],"J.adapter.readers.pymol.PickleReader",["JU.AU","JU.Logger"],function(){var c=K(function(){this.memo=this.build=this.marks=this.stack=this.binaryDoc=this.vwr=null;this.logging=!1;this.emptyListPt=this.filePt=this.markCount=this.id=0;this.thisSection= +null;this.inNames=this.inMovie=!1;this.thisName=null;this.ipt=this.retrieveCount=this.lastMark=0;this.aTemp=null;H(this,arguments)},J.adapter.readers.pymol,"PickleReader",null);N(c,function(){this.stack=new JU.Lst;this.marks=new JU.Lst;this.build=new JU.Lst;this.memo=new java.util.Hashtable;this.aTemp=I(16,0)});M(c,function(a,b){this.binaryDoc=a;this.vwr=b;this.stack.ensureCapacity(1E3)},"javajs.api.GenericBinaryDocument,JV.Viewer");e(c,"log",function(a){this.vwr.log(a+"\x00")},"~S");e(c,"getMap", +function(a){this.logging=a;var b,d,f,k;this.ipt=0;for(var c=!0;c;)switch(b=this.binaryDoc.readByte(),this.ipt++,b){case 125:this.push(new java.util.Hashtable);break;case 97:b=this.pop();this.peek().addLast(b);break;case 101:f=this.getObjects(this.getMark());this.inNames&&2==this.markCount&&(b=this.binaryDoc.getPosition(),d=new JU.Lst,d.addLast(Integer.$valueOf(this.filePt)),d.addLast(Integer.$valueOf(b-this.filePt)),f.addLast(d));this.peek().addAll(f);break;case 71:b=this.binaryDoc.readDouble();this.push(Double.$valueOf(b)); +break;case 74:d=this.binaryDoc.readIntLE();this.push(Integer.$valueOf(d));break;case 75:d=this.binaryDoc.readByte()&255;this.push(Integer.$valueOf(d));break;case 77:d=(this.binaryDoc.readByte()&255|(this.binaryDoc.readByte()&255)<<8)&65535;this.push(Integer.$valueOf(d));break;case 113:d=this.binaryDoc.readByte();this.putMemo(d,!1);break;case 114:d=this.binaryDoc.readIntLE();this.putMemo(d,!0);break;case 104:d=this.binaryDoc.readByte();b=this.getMemo(d);this.push(null==b?"BINGET"+ ++this.id:b);break; +case 106:d=this.binaryDoc.readIntLE();b=this.getMemo(d);this.push(null==b?"LONG_BINGET"+ ++this.id:b);break;case 85:d=this.binaryDoc.readByte()&255;f=I(d,0);this.binaryDoc.readByteArray(f,0,d);this.inNames&&(3==this.markCount&&this.lastMark==this.stack.size())&&(this.thisName=this.bytesToString(f),this.filePt=this.emptyListPt);this.push(f);break;case 84:d=this.binaryDoc.readIntLE();f=I(d,0);this.binaryDoc.readByteArray(f,0,d);this.push(f);break;case 88:d=this.binaryDoc.readIntLE();f=I(d,0);this.binaryDoc.readByteArray(f, +0,d);this.push(f);break;case 93:this.emptyListPt=this.binaryDoc.getPosition()-1;this.push(new JU.Lst);break;case 99:f=new JU.Lst;f.addLast("global");f.addLast(this.readStringAsBytes());f.addLast(this.readStringAsBytes());this.push(f);break;case 98:b=this.pop();this.build.addLast(b);break;case 40:this.putMark(this.stack.size());break;case 78:this.push(null);break;case 111:this.push(this.getObjects(this.getMark()));break;case 115:b=this.pop();f=this.bytesToString(this.pop());this.peek().put(f,b);break; +case 117:b=this.getMark();f=this.getObjects(b);b=this.peek();if(y(b,"JU.Lst"))for(d=0;d=a;)this.stack.removeItemAt(b);return d},"~N");e(c,"readStringAsBytes",function(){for(var a=0,b=this.aTemp;;){var d=this.binaryDoc.readByte();if(10==d)break;a>=b.length&&(b=this.aTemp=JU.AU.arrayCopyByte(b,2*b.length));b[a++]=d}return JU.AU.arrayCopyByte(b,a)});e(c,"putMark",function(a){this.logging&& +this.log("\n "+Integer.toHexString(this.binaryDoc.getPosition())+" [");this.marks.addLast(Integer.$valueOf(this.lastMark=a));this.markCount++;switch(this.markCount){case 2:a=this.stack.get(a-2),JU.AU.isAB(a)&&(this.thisSection=this.bytesToString(a),this.inMovie="movie".equals(this.thisSection),this.inNames="names".equals(this.thisSection))}},"~N");e(c,"getMark",function(){return this.marks.removeItemAt(--this.markCount).intValue()});e(c,"push",function(a){if(this.logging&&("string"==typeof a||y(a, +Double)||y(a,Integer)))this.log(("string"==typeof a?"'"+a+"'":a)+", ");this.stack.addLast(a)},"~O");e(c,"peek",function(){return this.stack.get(this.stack.size()-1)});e(c,"pop",function(){return this.stack.removeItemAt(this.stack.size()-1)})});D("J.api");S(J.api,"PymolAtomReader");D("J.adapter.readers.pymol");G(["java.util.Hashtable"],"J.adapter.readers.pymol.PyMOL",["JU.Logger"],function(){var c=U(J.adapter.readers.pymol,"PyMOL",null);c.getRGB=e(c,"getRGB",function(a){if(null!=J.adapter.readers.pymol.PyMOL.moreColors){var b= +Integer.$valueOf(a),b=J.adapter.readers.pymol.PyMOL.moreColors.get(b);if(null!=b)return b.intValue()}return a=b))if(12290==this.id)for(f=this.info.values().iterator();f.hasNext()&&((d=f.next())||1);)JU.BSUtil.offset(d,0,b);else null!=this.bsAtoms&&JU.BSUtil.offset(this.bsAtoms,0,b),null!=this.colors&&(d=this.colors[0],f=T(d.length+b,0),System.arraycopy(d,0,f,b,d.length),this.colors[0]=f)},"~N,~N");e(c,"finalizeObject",function(a,b, +d,f){var k=b.sm,c=null;null!=this.bsAtoms&&(this.modelIndex=this.getModelIndex(b));switch(this.id){case 2097194:k.vwr.displayAtoms(this.bsAtoms,!1,!1,1275069441,!0);return;case 12295:f=k.vwr.getModelUndeletedAtomsBitSet(this.argb);JU.BSUtil.invertInPlace(f,k.vwr.ms.ac);k.vwr.select(f,!1,0,!0);k.restrictSelected(!1,!0);return;case 1610625028:case 12294:null==this.bsAtoms?(null==this.info&&k.vwr.displayAtoms(null,!0,!1,0,!0),k.vwr.setObjectProp(this.info,this.id)):k.vwr.displayAtoms(this.bsAtoms,1610625028== +this.id,!1,1275069441,!0);return;case 12290:k.vwr.defineAtomSets(this.info);return;case 1073742031:k.vwr.am.setMovie(this.info);return;case 4115:f=this.info.intValue();0<=f?k.vwr.setCurrentModelIndex(f):(k.vwr.setAnimationRange(-1,-1),k.vwr.setCurrentModelIndex(-1));return;case 1073742139:k.vwr.stm.saveScene(this.jmolName,this.info);k.vwr.stm.saveOrientation(this.jmolName,this.info.get("pymolView"));return;case 5:k.loadShape(this.id);k.setShapePropertyBs(this.id,"pymolLabels",this.info,this.bsAtoms); +return;case 1677721602:break;case 659488:case 1:if(-1!=this.size){k.setShapeSizeBs(1,this.size,null,this.bsAtoms);var e=k.getShapePropertyIndex(1,"sets",0)[1];a.setUniqueBonds(e,1==this.id);this.size=-1}this.id=1;break;case 1153433601:this.id=0;break;case 0:break;case 10:case 9:k.loadShape(this.id);a=b.getAtoms(2097188,null);JU.BSUtil.andNot(this.bsAtoms,a);break;case 16:k.loadShape(this.id);k.setShapePropertyBs(this.id,"ignore",JU.BSUtil.copyInvert(this.bsAtoms,k.vwr.ms.ac),null);break;default:if(!this.visible)return}switch(this.id){case 23:k.vwr.setCGO(this.info); +break;case 16:case 0:case 7:case 20:case 11:case 9:case 10:case 24:y(this.info,Array)&&(k.loadShape(this.id),k.setShapePropertyBs(this.id,"params",this.info,this.bsAtoms));break;case 6:if(0>this.modelIndex)return;k.loadShape(this.id);f=this.info;f.setModelSet(b);c=f.points;for(a=c.size();0<=--a;)c.get(a).mi=this.modelIndex;k.setShapePropertyBs(this.id,"measure",f,this.bsAtoms);return;case 135180:a=null==this.bsAtoms?this.info:this.jmolName;if(0<=k.getShapeIdFromObjectName(a)){k.vwr.setObjectProp(a, +1610625028);return}c=new JU.SB;c.append("isosurface ID ").append(JU.PT.esc(a));0>this.modelIndex&&(this.modelIndex=k.vwr.am.cmi);if(null==this.bsAtoms)c.append(" model ").append(b.getModelNumberDotted(this.modelIndex)).append(" color density sigma 1.0 ").append(JU.PT.esc(this.cacheID)).append(" ").append(JU.PT.esc(a)),f&&c.append(";isosurface cache");else{var e=this.info[0],g=this.info[1],g=" only",l=this.info[2],p=this.info[3].floatValue(),m="";null==e&&(e="mesh nofill",m=" resolution 1.5");a=JU.PT.isOneOf(a, +d);d=b.getModelNumberDotted(this.modelIndex);b=0>this.size?" sasurface ":" solvent ";c.append(" model ").append(d).append(m).append(" select ").append(JU.Escape.eBS(this.bsAtoms)).append(g).append("").append(b).appendF(Math.abs(this.size/1E3));a||(0==this.argb?c.append(" map property color"):c.append(";color isosurface ").append(JU.Escape.escapeColor(this.argb)));c.append(";isosurface frontOnly ").append(e);0=a.at.length&&System.out.println("PyMOL LOADING ERROR IN MERGE");return 0>b?-1:a.at[b].mi},"JM.ModelSet");e(c,"setColors",function(a,b){this.colors=C(-1,[a,Float.$valueOf(b)])},"~A,~N");e(c,"setSize",function(a){this.size=n(1E3*a)},"~N")});D("J.adapter.readers.pymol"); +G(["java.util.Hashtable","JU.BS"],"J.adapter.readers.pymol.PyMOLGroup",null,function(){var c=K(function(){this.object=this.list=this.objectNameID=this.name=null;this.visible=!0;this.occluded=!1;this.bsAtoms=null;this.type=this.firstAtom=0;this.parent=null;H(this,arguments)},J.adapter.readers.pymol,"PyMOLGroup",null);N(c,function(){this.list=new java.util.Hashtable;this.bsAtoms=new JU.BS});M(c,function(a){this.name=a},"~S");e(c,"addList",function(a){null==this.list.get(a.name)&&(this.list.put(a.name, +a),a.parent=this)},"J.adapter.readers.pymol.PyMOLGroup");e(c,"set",function(){});e(c,"addGroupAtoms",function(a){this.bsAtoms.or(a);null!=this.parent&&this.parent.addGroupAtoms(this.bsAtoms)},"JU.BS");t(c,"toString",function(){return this.name})});D("J.adapter.readers.pymol");G(["J.api.JmolSceneGenerator","java.util.Hashtable","JU.BS","$.Lst","$.P3"],"J.adapter.readers.pymol.PyMOLScene","JU.AU $.CU $.PT $.SB J.adapter.readers.pymol.JmolObject $.PyMOL $.PyMOLGroup $.PyMOLReader J.atomdata.RadiusData J.c.VDW JM.Text JU.BSUtil $.C $.Escape $.Logger $.Point3fi".split(" "), +function(){var c=K(function(){this.vwr=null;this.pymolVersion=0;this.bsUniqueBonds=this.uniqueList=this.uniqueSettings=this.stateSettings=this.htStateSettings=this.settings=this.objectInfo=this.htObjectSettings=this.htMeasures=this.htObjectGroups=this.htObjectAtoms=this.htAtomMap=this.jmolObjects=this.moleculeNames=this.htHiddenObjects=this.htDefinedAtoms=this.htCarveSets=this.bsCartoon=this.objectSettings=this.groups=this.frameObj=this.colixes=this.labels=this.occludedObjects=this.atomColorList= +this.ssMapAtom=this.htSpacefill=this.bsNoSurface=this.bsHydrogen=this.bsLabeled=this.bsNonbonded=this.bsNucleic=this.bsHidden=null;this.transparency=this.stickTranslucency=this.sphereTranslucency=this.sphereScale=this.nonbondedTranslucency=this.nonbondedSize=this.meshWidth=this.labelSize=this.ribbonTranslucency=this.cartoonTranslucency=this.labelColor=this.labelFontId=this.sphereColor=this.ribbonColor=this.cartoonColor=this.surfaceColor=this.surfaceMode=this.dotColor=this.bgRgb=0;this.haveNucleicLadder= +this.cartoonRockets=this.cartoonLadderMode=!1;this.objectJmolName=this.objectNameID=this.objectName=this.labelPosition0=this.labelPosition=null;this.objectType=0;this.bsAtoms=null;this.objectHidden=!1;this.radii=this.newChain=this.sequenceNumbers=this.cartoonTypes=this.uniqueIDs=this.reader=null;this.stateCount=this.baseAtomIndex=this.baseModelIndex=0;this.mepList="";this.haveScenes=this.doCache=!1;this.bsCarve=null;this.solventAccessible=!1;this.bsStickBonds=this.bsLineBonds=null;this.currentAtomSetIndex= +this.thisState=0;this.ptTemp=this.surfaceInfoName=null;H(this,arguments)},J.adapter.readers.pymol,"PyMOLScene",null,J.api.JmolSceneGenerator);N(c,function(){this.bsHidden=new JU.BS;this.bsNucleic=new JU.BS;this.bsNonbonded=new JU.BS;this.bsLabeled=new JU.BS;this.bsHydrogen=new JU.BS;this.bsNoSurface=new JU.BS;this.htSpacefill=new java.util.Hashtable;this.ssMapAtom=new java.util.Hashtable;this.atomColorList=new JU.Lst;this.occludedObjects=new java.util.Hashtable;this.labels=new java.util.Hashtable; +this.bsCartoon=new JU.BS;this.htCarveSets=new java.util.Hashtable;this.htDefinedAtoms=new java.util.Hashtable;this.htHiddenObjects=new java.util.Hashtable;this.moleculeNames=new JU.Lst;this.jmolObjects=new JU.Lst;this.htAtomMap=new java.util.Hashtable;this.htObjectAtoms=new java.util.Hashtable;this.htObjectGroups=new java.util.Hashtable;this.htMeasures=new java.util.Hashtable;this.htObjectSettings=new java.util.Hashtable;this.objectInfo=new java.util.Hashtable;this.htStateSettings=new java.util.Hashtable; +this.labelPosition0=new JU.P3;this.bsLineBonds=new JU.BS;this.bsStickBonds=new JU.BS;this.ptTemp=new JU.P3});M(c,function(a,b,d,f,c,e,h,g,l,p){this.reader=a;this.vwr=b;this.settings=d;this.uniqueSettings=f;this.pymolVersion=c;this.haveScenes=e;this.baseAtomIndex=h;this.baseModelIndex=g;this.doCache=l;this.surfaceInfoName=p+"##JmolSurfaceInfo##";this.setVersionSettings();d.trimToSize();this.bgRgb=this.colorSetting(6);this.labelPosition0=this.pointSetting(471)},"J.api.PymolAtomReader,JV.Viewer,JU.Lst,java.util.Map,~N,~B,~N,~N,~B,~S"); +e(c,"clearReaderData",function(){this.stateSettings=this.objectSettings=this.atomColorList=this.colixes=this.reader=null;this.haveScenes||(this.bsHidden=this.bsNucleic=this.bsNonbonded=this.bsLabeled=this.bsHydrogen=this.bsNoSurface=this.bsCartoon=this.occludedObjects=this.objectInfo=this.htHiddenObjects=this.htStateSettings=this.htObjectSettings=this.htObjectAtoms=this.htObjectGroups=this.htMeasures=this.htAtomMap=this.htSpacefill=this.ssMapAtom=this.labels=this.groups=this.settings=null)});e(c, +"setUniqueBond",function(a,b){0>b||(null==this.uniqueList&&(this.uniqueList=new java.util.Hashtable,this.bsUniqueBonds=new JU.BS),this.uniqueList.put(Integer.$valueOf(a),Integer.$valueOf(b)),this.bsUniqueBonds.set(a))},"~N,~N");e(c,"setStateCount",function(a){this.stateCount=a},"~N");e(c,"colorSetting",function(a){var b=J.adapter.readers.pymol.PyMOLReader.listAt(this.settings,a),b=null==b||3!=b.size()?null:b.get(2);return null==b?n(J.adapter.readers.pymol.PyMOL.getDefaultSetting(a,this.pymolVersion)): +y(b,Integer)?b.intValue():JU.CU.colorPtToFFRGB(J.adapter.readers.pymol.PyMOLReader.pointAt(b,0,this.ptTemp))},"~N");e(c,"pointSetting",function(a){var b=new JU.P3,d=J.adapter.readers.pymol.PyMOLReader.listAt(this.settings,a);return null!=d&&3==d.size()?J.adapter.readers.pymol.PyMOLReader.pointAt(d.get(2),0,b):J.adapter.readers.pymol.PyMOL.getDefaultSettingPt(a,this.pymolVersion,b)},"~N");e(c,"ensureCapacity",function(a){this.atomColorList.ensureCapacity(this.atomColorList.size()+a)},"~N");e(c,"setReaderObjectInfo", +function(a,b,d,f,c,e,h){this.objectName=a;this.objectHidden=f;this.objectNameID=null==this.objectName?null:this.fixName(this.objectName+h);this.objectSettings=new java.util.Hashtable;this.stateSettings=new java.util.Hashtable;null!=this.objectName&&(this.objectJmolName=this.getJmolName(a),null!=d&&(this.htObjectGroups.put(this.objectName,d),this.htObjectGroups.put(this.objectNameID,d)),this.objectInfo.put(this.objectName,C(-1,[this.objectNameID,Integer.$valueOf(b)])),null==this.htObjectSettings.get(this.objectName)&& +(this.listToSettings(c,this.objectSettings),this.htObjectSettings.put(this.objectName,this.objectSettings)),null==this.htStateSettings.get(this.objectNameID)&&(this.listToSettings(e,this.stateSettings),this.htStateSettings.put(this.objectNameID,this.stateSettings)));this.getObjectSettings()},"~S,~N,~S,~B,JU.Lst,JU.Lst,~S");e(c,"listToSettings",function(a,b){if(null!=a&&0!=a.size())for(var d=a.size();0<=--d;){var f=a.get(d);b.put(f.get(0),f)}},"JU.Lst,java.util.Map");e(c,"getObjectSettings",function(){this.transparency= +this.floatSetting(138);this.dotColor=n(this.floatSetting(210));this.nonbondedSize=this.floatSetting(65);this.nonbondedTranslucency=this.floatSetting(524);this.sphereScale=this.floatSetting(155);this.cartoonColor=n(this.floatSetting(236));this.ribbonColor=n(this.floatSetting(235));this.sphereColor=n(this.floatSetting(173));this.cartoonTranslucency=this.floatSetting(279);this.ribbonTranslucency=this.floatSetting(666);this.stickTranslucency=this.floatSetting(198);this.sphereTranslucency=this.floatSetting(172); +this.cartoonLadderMode=this.booleanSetting(448);this.cartoonRockets=this.booleanSetting(180);this.surfaceMode=n(this.floatSetting(143));this.surfaceColor=n(this.floatSetting(144));this.solventAccessible=this.booleanSetting(338);this.meshWidth=this.floatSetting(90);var a=this.stringSetting(342).trim();0==a.length?this.bsCarve=null:(this.bsCarve=this.htCarveSets.get(a),null==this.bsCarve&&this.htCarveSets.put(a,this.bsCarve=new JU.BS));this.labelPosition=new JU.P3;try{var b=this.getObjectSetting(471); +J.adapter.readers.pymol.PyMOLReader.pointAt(J.adapter.readers.pymol.PyMOLReader.listAt(b,2),0,this.labelPosition)}catch(d){if(!B(d,Exception))throw d;}this.labelPosition.add(this.labelPosition0);this.labelColor=n(this.floatSetting(66));this.labelSize=this.floatSetting(453);this.labelFontId=n(this.floatSetting(328))});e(c,"setAtomInfo",function(a,b,d,f,c){this.uniqueIDs=a;this.cartoonTypes=b;this.sequenceNumbers=d;this.newChain=f;this.radii=c},"~A,~A,~A,~A,~A");e(c,"setSceneObject",function(a,b){this.objectName= +a;this.objectType=this.getObjectType(a);this.objectJmolName=this.getJmolName(a);this.objectNameID=0==b&&0!=this.objectType?this.getObjectID(a):this.objectJmolName+"_"+b;this.bsAtoms=this.htObjectAtoms.get(a);this.objectSettings=this.htObjectSettings.get(a);this.stateSettings=this.htStateSettings.get(a+"_"+b);var d=this.htObjectGroups.get(a);this.objectHidden=this.htHiddenObjects.containsKey(a)||null!=d&&!this.groups.get(d).visible;this.getObjectSettings()},"~S,~N");e(c,"buildScene",function(a,b,d, +f){var c=b.get(2),e=new java.util.Hashtable;e.put("pymolFrame",c);e.put("generator",this);e.put("name",a);c=J.adapter.readers.pymol.PyMOLReader.listAt(b,0);null!=c&&e.put("pymolView",this.getPymolView(c,!1));c=b.get(1);e.put("visibilities",c);for(var c="_scene_"+a+"_",h=Array(J.adapter.readers.pymol.PyMOL.REP_LIST.length),g=J.adapter.readers.pymol.PyMOL.REP_LIST.length;0<=--g;){var l=d.get(c+J.adapter.readers.pymol.PyMOL.REP_LIST[g]),l=J.adapter.readers.pymol.PyMOLReader.listAt(l,5);null!=l&&0b.nextSetBit(0))continue;break;case 4:1610625028==h&&(c=this.htMeasures.get(c),null!=c&& +this.addMeasurements(c,c[0].points.size(),null,this.getBS(J.adapter.readers.pymol.PyMOLReader.listAt(e,2)),J.adapter.readers.pymol.PyMOLReader.intAt(e,3),null,!0)),a+="_*"}this.addJmolObject(h,b,a)}}},"java.util.Map");e(c,"generateShapes",function(a){if(null!=a){this.addJmolObject(12295,null,null).argb=this.thisState-1;for(var b=0;bf;f++)d[f]=new JU.BS;for(f= +a.length;0<=--f;){var c=a[f],c=null==c?null:c.get(this.objectName);null!=c&&this.selectAllAtoms(c,this.thisState,d[f])}this.createShapeObjects(d,!0,-1,-1)}}},"~A");e(c,"getBS",function(a){for(var b=new JU.BS,d=a.size();0<=--d;)b.set(J.adapter.readers.pymol.PyMOLReader.intAt(a,d));return b},"JU.Lst");e(c,"getBsAtoms",function(a,b,d){for(var f=a.size();0<=--f;)d.set(b[J.adapter.readers.pymol.PyMOLReader.intAt(a,f)])},"JU.Lst,~A,JU.BS");e(c,"setReaderObjects",function(){this.clearReaderData();this.finalizeObjects(); +this.haveScenes||(this.bsUniqueBonds=this.bsStickBonds=this.bsLineBonds=this.uniqueSettings=null)});e(c,"finalizeObjects",function(){this.vwr.setStringProperty("defaults","PyMOL");for(var a=0;al;l++)d[h++]= +J.adapter.readers.pymol.PyMOLReader.floatAt(a,g++);b&&g++;for(l=0;3>l;l++)d[h++]=J.adapter.readers.pymol.PyMOLReader.floatAt(a,g++);b&&g++;for(l=0;3>l;l++)d[h++]=J.adapter.readers.pymol.PyMOLReader.floatAt(a,g++);b&&(g+=5);for(l=0;8>l;l++)d[h++]=J.adapter.readers.pymol.PyMOLReader.floatAt(a,g++);g=this.booleanSetting(23);l=this.floatSetting(152);d[h++]=g?l:-l;d[h++]=f?1:0;d[h++]=c?1:0;d[h++]=e;return d},"JU.Lst,~B");e(c,"globalSetting",function(a){var b=J.adapter.readers.pymol.PyMOLReader.listAt(this.settings, +a);return null!=b&&3==b.size()?b.get(2).floatValue():J.adapter.readers.pymol.PyMOL.getDefaultSetting(a,this.pymolVersion)},"~N");e(c,"addGroup",function(a,b,d,f){null==this.groups&&(this.groups=new java.util.Hashtable);var c=this.getGroup(this.objectName);c.object=a;c.objectNameID=this.objectNameID;c.visible=!this.objectHidden;c.type=d;c.visible||(this.occludedObjects.put(this.objectNameID,Boolean.TRUE),this.htHiddenObjects.put(this.objectName,Boolean.TRUE));null!=b&&0!=b.length&&this.getGroup(b).addList(c); +null!=f&&c.addGroupAtoms(f);return c},"JU.Lst,~S,~N,JU.BS");e(c,"getGroup",function(a){var b=this.groups.get(a);null==b&&(this.groups.put(a,b=new J.adapter.readers.pymol.PyMOLGroup(a)),this.defineAtoms(a,b.bsAtoms));return b},"~S");e(c,"finalizeVisibility",function(){this.setGroupVisibilities();if(null!=this.groups)for(var a=this.jmolObjects.size();0<=--a;){var b=this.jmolObjects.get(a);null!=b.jmolName&&this.occludedObjects.containsKey(b.jmolName)&&(b.visible=!1)}this.bsHidden.isEmpty()||this.addJmolObject(2097194, +this.bsHidden,null)});e(c,"setCarveSets",function(a){if(!this.htCarveSets.isEmpty())for(var b,d=this.htCarveSets.entrySet().iterator();d.hasNext()&&((b=d.next())||1);)this.getSelectionAtoms(J.adapter.readers.pymol.PyMOLReader.listAt(a.get(b.getKey()),5),0,b.getValue())},"java.util.Map");e(c,"setGroupVisibilities",function(){if(null!=this.groups){for(var a=this.groups.values(),b=new JU.BS,d,a=a.iterator();a.hasNext()&&((d=a.next())||1);)b.or(d.bsAtoms),null==d.parent?this.setGroupVisible(d,!0):d.list.isEmpty()&& +d.addGroupAtoms(new JU.BS);this.defineAtoms("all",b)}});e(c,"defineAtoms",function(a,b){this.htDefinedAtoms.put(this.getJmolName(a),b)},"~S,JU.BS");e(c,"getJmolName",function(a){return"__"+this.fixName(a)},"~S");e(c,"createShapeObjects",function(a,b,d,f){if(0<=f){this.bsAtoms=JU.BSUtil.newBitSet2(d,f);var c;c=this.addJmolObject(1153433601,this.bsAtoms,null);for(this.colixes=JU.AU.ensureLengthShort(this.colixes,f);--f>=d;)this.colixes[f]=this.atomColorList.get(f).intValue();c.setColors(this.colixes, +0);c.setSize(0);c=this.addJmolObject(1,this.bsAtoms,null);c.setSize(0)}this.createShapeObject(7,a[7]);this.createShapeObject(0,a[0]);this.fixReps(a);this.createSpacefillObjects();for(f=0;23>f;f++)switch(f){case 7:case 0:continue;case 8:case 2:if(!b)continue;switch(this.surfaceMode){case 0:a[f].andNot(this.bsNoSurface);break;case 2:case 4:a[f].andNot(this.bsHydrogen);break}default:this.createShapeObject(f,a[f])}this.bsAtoms=null},"~A,~B,~N,~N");e(c,"addLabel",function(a,b,d,f,c){var e=n(this.getUniqueFloatDef(b, +66,this.labelColor));-7==e||-6==e||0>e&&(e=d);null==f&&(b=this.getUniquePoint(b,471,null),null==b?b=this.labelPosition:b.add(this.labelPosition),this.setLabelPosition(b,f));this.labels.put(Integer.$valueOf(a),this.newTextLabel(c,f,e,this.labelFontId,this.labelSize))},"~N,~N,~N,~A,~S");e(c,"getUniqueFloatDef",function(a,b,d){var f;if(0>=a||null==(f=this.uniqueSettings.get(Integer.$valueOf((a<<10)+b))))return d;d=f.get(2).floatValue();JU.Logger.debugging&&JU.Logger.debug("Pymol unique setting for "+ +a+": ["+b+"] = "+d);return d},"~N,~N,~N");e(c,"getUniquePoint",function(a,b,d){var f;if(0>=a||null==(f=this.uniqueSettings.get(Integer.$valueOf((a<<10)+b))))return d;d=new JU.P3;J.adapter.readers.pymol.PyMOLReader.pointAt(f.get(2),0,d);JU.Logger.info("Pymol unique setting for "+a+": "+b+" = "+d);return d},"~N,~N,JU.P3");e(c,"getObjectSetting",function(a){return this.objectSettings.get(Integer.$valueOf(a))},"~N");e(c,"booleanSetting",function(a){return 0!=this.floatSetting(a)},"~N");e(c,"floatSetting", +function(a){var b=this.getSetting(a);return null!=b&&3==b.size()?b.get(2).floatValue():J.adapter.readers.pymol.PyMOL.getDefaultSetting(a,this.pymolVersion)},"~N");e(c,"stringSetting",function(a){var b=this.getSetting(a);return null!=b&&3==b.size()?J.adapter.readers.pymol.PyMOLReader.stringAt(b,2):J.adapter.readers.pymol.PyMOL.getDefaultSettingS(a,this.pymolVersion)},"~N");e(c,"getSetting",function(a){var b=null;null!=this.stateSettings&&(b=this.stateSettings.get(Integer.$valueOf(a)));null==b&&null!= +this.objectSettings&&(b=this.objectSettings.get(Integer.$valueOf(a)));null==b&&ac&&(c=n(this.floatSetting(574)));p=J.adapter.readers.pymol.PyMOL.getRGB(c);p=JU.C.getColix(p);c=0>this.labelColor?c:this.labelColor;g&&(a=Array(l),this.htMeasures.put(this.objectName,a));for(var m=JU.BSUtil.newAndSetBit(0),A=0,r=0;AO?1:O)+"VALUE":"");s=this.newTextLabel(O,s,c,n(this.floatSetting(328)),this.floatSetting(453));q.set(12290,null,null,null,O,"angstroms",null,!1,!1,null,!1,n(2E3*f),p,s,NaN,null);this.addJmolObject(6,m, +q)}return!0},"~A,~N,JU.Lst,JU.BS,~N,JU.Lst,~B");e(c,"getViewScript",function(a){var b=new JU.SB;a=this.getPymolView(a,!0);b.append(";set translucent "+(2!=this.globalSetting(213))+";set zshadePower 1;set traceAlpha "+(0!=this.globalSetting(111)));var d=this.cartoonRockets;b.append(";set cartoonRockets "+d);d&&b.append(";set rocketBarrels "+d);b.append(";set cartoonLadders "+this.haveNucleicLadder);b.append(";set ribbonBorder "+(0!=this.globalSetting(118)));b.append(";set cartoonFancy "+(0==this.globalSetting(118))); +d="000000"+Integer.toHexString(this.bgRgb&16777215);d="[x"+d.substring(d.length-6)+"]";b.append(";background "+d);b.append(";moveto 0 PyMOL "+JU.Escape.eAF(a));b.append(";save orientation 'default';");return b},"JU.Lst");e(c,"getColix",function(a,b){var d=-7==a?8==JU.C.getBgContrast(this.bgRgb)?4:8:-6==a?JU.C.getBgContrast(this.bgRgb):JU.C.getColixO(Integer.$valueOf(J.adapter.readers.pymol.PyMOL.getRGB(a)));return JU.C.getColixTranslucent3(d,0this.pymolVersion&&(this.addSetting(550,2,Integer.$valueOf(0)), +this.addSetting(529,2,Integer.$valueOf(2)),this.addSetting(471,4,Y(-1,[1,1,0])),99>this.pymolVersion&&(this.addSetting(448,2,Integer.$valueOf(0)),this.addSetting(431,2,Integer.$valueOf(0)),this.addSetting(361,2,Integer.$valueOf(1))))});e(c,"addSetting",function(a,b,d){var f=this.settings.size();if(f<=a)for(var c=a+1;--c>=f;)this.settings.addLast(null);if(4==b){var f=d,e;d=e=new JU.Lst;for(c=0;3>c;c++)e.addLast(Double.$valueOf(f[c]))}c=new JU.Lst;c.addLast(Integer.$valueOf(a));c.addLast(Integer.$valueOf(b)); +c.addLast(d);this.settings.set(a,c)},"~N,~N,~O");e(c,"fixReps",function(a){this.htSpacefill.clear();this.bsCartoon.clearAll();for(var b=this.bsAtoms.nextSetBit(0);0<=b;b=this.bsAtoms.nextSetBit(b+1)){var d=0,f=null==this.reader?this.uniqueIDs[b]:this.reader.getUniqueID(b);a[1].get(b)?d=(null==this.reader?this.radii[b]:this.reader.getVDW(b))*this.getUniqueFloatDef(f,155,this.sphereScale):a[4].get(b)&&(d=this.nonbondedSize);0!=d&&(d=Float.$valueOf(d),f=this.htSpacefill.get(d),null==f&&this.htSpacefill.put(d, +f=new JU.BS),f.set(b));d=null==this.reader?this.cartoonTypes[b]:this.reader.getCartoonType(b);if(a[5].get(b))switch(d){case 1:case 4:a[21].set(b);case -1:a[5].clear(b);this.bsCartoon.clear(b);break;case 7:a[22].set(b);a[5].clear(b);this.bsCartoon.clear(b);break;default:this.bsCartoon.set(b)}}a[5].and(this.bsCartoon);this.cleanSingletons(a[5]);this.cleanSingletons(a[6]);this.cleanSingletons(a[21]);this.cleanSingletons(a[22]);this.bsCartoon.and(a[5])},"~A");e(c,"cleanSingletons",function(a){if(!a.isEmpty()){a.and(this.bsAtoms); +for(var b=new JU.BS,d=a.length(),f=0;;){for(var c=0,e=0,h=-2147483648,g=-2147483648,l=-2147483648;ch||(null==this.reader?this.newChain[c]:this.reader.compareAtoms(h,c)))&&e++,l=null==this.reader?this.sequenceNumbers[c]:this.reader.getSequenceNumber(c),l!=g&&(g=l,e++),0==f?a.get(c)&&b.set(e):b.get(e)||a.clear(c),h=c;if(2==++f)break;e=new JU.BS;for(c=b.nextSetBit(0);0<=c;c=b.nextSetBit(c+1))!b.get(c-1)&&!b.get(c+1)&&e.set(c);b.andNot(e)}}},"JU.BS");e(c,"createShapeObject",function(a,b){if(!b.isEmpty()){var d= +null;switch(a){case 11:b.and(this.bsNonbonded);if(b.isEmpty())break;this.setUniqueObjects(7,b,0,0,524,this.nonbondedTranslucency,0,this.nonbondedSize,0.5);break;case 4:case 1:this.setUniqueObjects(0,b,173,this.sphereColor,172,this.sphereTranslucency,155,this.sphereScale,1);break;case 19:var d=this.floatSetting(571),f=n(this.floatSetting(570)),c=this.floatSetting(569);this.setUniqueObjects(20,b,570,f,571,d,569,c,50);break;case 9:this.setUniqueObjects(16,b,210,this.dotColor,0,0,155,this.sphereScale, +1);break;case 2:d=this.floatSetting(344);d=this.addJmolObject(135180,b,C(-1,[this.booleanSetting(156)?"FULLYLIT":"FRONTLIT",3==this.surfaceMode||4==this.surfaceMode?" only":"",this.bsCarve,Float.$valueOf(d)]));d.setSize(this.floatSetting(4)*(this.solventAccessible?-1:1));d.translucency=this.transparency;0<=this.surfaceColor&&(d.argb=J.adapter.readers.pymol.PyMOL.getRGB(this.surfaceColor));d.modelIndex=this.currentAtomSetIndex;d.cacheID=this.surfaceInfoName;this.setUniqueObjects(24,b,144,this.surfaceColor, +138,this.transparency,0,0,0);break;case 8:d=this.addJmolObject(135180,b,null);d.setSize(this.floatSetting(4));d.translucency=this.transparency;this.setUniqueObjects(24,b,144,this.surfaceColor,138,this.transparency,0,0,0);break;case 3:b.and(this.bsLabeled);if(b.isEmpty())break;this.addJmolObject(5,b,this.labels);break;case 10:case 7:d=this.addJmolObject(659488,b,null);d.setSize(this.floatSetting(44)/15);f=n(this.floatSetting(526));0<=f&&(d.argb=J.adapter.readers.pymol.PyMOL.getRGB(f));break;case 0:d= +this.addJmolObject(1,b,null);d.setSize(2*this.floatSetting(21));d.translucency=this.stickTranslucency;f=n(this.floatSetting(376));0<=f&&(d.argb=J.adapter.readers.pymol.PyMOL.getRGB(f));break;case 5:this.createCartoonObject("H",this.cartoonRockets?181:100);this.createCartoonObject("S",96);this.createCartoonObject("L",92);this.createCartoonObject(" ",92);break;case 22:this.createPuttyObject(b);break;case 21:this.createTraceObject(b);break;case 6:this.createRibbonObject(b);break;default:JU.Logger.error("Unprocessed representation type "+ +a)}}},"~N,JU.BS");e(c,"setUniqueObjects",function(a,b,d,f,c,e,h,g,l){for(var p=b.cardinality(),m=0==d?null:T(p,0),A=0==c?null:E(p,0),p=E(p,0),r=0,q=b.nextSetBit(0);0<=q;q=b.nextSetBit(q+1),r++){var s=null==this.reader?this.uniqueIDs[q]:this.reader.getUniqueID(q);if(null!=m){var O=n(this.getUniqueFloatDef(s,d,f));0=f?0.5:f));a=this.setUniqueObjects(b?10:9,a,235,this.ribbonColor,0,0,0,0,0);a.setSize(d);a.translucency=this.ribbonTranslucency},"JU.BS");e(c,"createCartoonObject",function(a,b){var d=JU.BSUtil.copy(this.ssMapAtom.get(a)); +if(null!=d&&(d.and(this.bsCartoon),!d.isEmpty())){if(a.equals(" ")&&(this.checkNucleicObject(d,!1),d.isEmpty()))return;d=this.setUniqueObjects(11,d,236,this.cartoonColor,0,0,0,0,0);d.setSize(2*this.floatSetting(b));d.translucency=this.cartoonTranslucency}},"~S,~N");e(c,"addObject",function(a){this.jmolObjects.addLast(a);return a},"J.adapter.readers.pymol.JmolObject");e(c,"setGroupVisible",function(a,b){var d=b&&a.visible;if(!d){a.visible=!1;this.occludedObjects.put(a.objectNameID,Boolean.TRUE);this.htHiddenObjects.put(a.name, +Boolean.TRUE);switch(a.type){case 1:this.bsHidden.or(a.bsAtoms);break;default:a.occluded=!0}for(var f,c=a.list.values().iterator();c.hasNext()&&((f=c.next())||1);)this.setGroupVisible(f,d)}},"J.adapter.readers.pymol.PyMOLGroup,~B");e(c,"getSSMapAtom",function(a){var b=this.ssMapAtom.get(a);null==b&&this.ssMapAtom.put(a,b=new JU.BS);return b},"~S");e(c,"setAtomDefs",function(){this.setGroupVisibilities();for(var a=new java.util.Hashtable,b,d=this.htDefinedAtoms.entrySet().iterator();d.hasNext()&&((b= +d.next())||1);){var f=b.getValue();f.isEmpty()||a.put(b.getKey(),f)}this.addJmolObject(12290,null,a);return a});e(c,"needSelections",function(){return this.haveScenes||!this.htCarveSets.isEmpty()});e(c,"setUniqueBonds",function(a,b){b?(this.bsStickBonds.or(a),this.bsStickBonds.andNot(this.bsLineBonds)):(this.bsLineBonds.or(a),this.bsLineBonds.andNot(this.bsStickBonds))},"JU.BS,~B");e(c,"finalizeUniqueBonds",function(){if(null!=this.uniqueList)for(var a=this.vwr.ms.bondCount,b=this.vwr.ms.bo,d=this.bsUniqueBonds.nextSetBit(0);0<= +d;d=this.bsUniqueBonds.nextSetBit(d+1)){var f=NaN,c=this.uniqueList.get(Integer.$valueOf(d)).intValue();this.bsLineBonds.get(d)?f=this.getUniqueFloatDef(c,44,NaN)/30:this.bsStickBonds.get(d)&&(f=this.getUniqueFloatDef(c,21,NaN));var e=n(this.getUniqueFloatDef(c,376,2147483647));2147483647!=e&&(e=J.adapter.readers.pymol.PyMOL.getRGB(e));var h=this.getUniqueFloatDef(c,64,NaN),c=this.getUniqueFloatDef(c,198,NaN);if(0>d||d>=a)break;this.setBondParameters(b[d],this.thisState-1,f,h,e,c)}});e(c,"setBondParameters", +function(a,b,d,f,c,e){0<=b&&a.atom1.mi!=b||(Float.isNaN(d)||(a.mad=V(2E3*d)),b=a.colix,2147483647!=c&&(b=JU.C.getColix(c)),Float.isNaN(e)?a.colix!=b&&(a.colix=JU.C.copyColixTranslucency(a.colix,b)):a.colix=JU.C.getColixTranslucent3(b,0!=e,e),1==f?a.order|=98304:0==f&&(a.order|=65536))},"JM.Bond,~N,~N,~N,~N,~N");e(c,"addMesh",function(a,b,d,f){a=this.addJmolObject(a,null,b);this.setSceneObject(d,-1);d=n(this.floatSetting(146));0>d&&(d=J.adapter.readers.pymol.PyMOLReader.intAt(J.adapter.readers.pymol.PyMOLReader.listAt(b, +0),2));f||(a.setSize(this.meshWidth),a.argb=J.adapter.readers.pymol.PyMOL.getRGB(d));a.translucency=this.transparency;a.cacheID=this.surfaceInfoName},"~N,JU.Lst,~S,~B");e(c,"addIsosurface",function(a){a=this.addJmolObject(135180,null,a);a.cacheID=this.surfaceInfoName;return a},"~S");c.MEAS_DIGITS=x(-1,[530,531,532])});D("J.adapter.readers.pymol");G(["J.adapter.readers.pdb.PdbReader","J.api.PymolAtomReader","JU.BS","$.P3"],"J.adapter.readers.pymol.PyMOLReader","java.util.Hashtable JU.AU $.BC $.CU $.Lst $.PT $.V3 J.adapter.readers.pymol.PickleReader $.PyMOL $.PyMOLScene J.adapter.smarter.Atom $.Bond $.Structure J.c.STR JU.BSUtil $.BoxInfo $.Logger".split(" "), +function(){var c=K(function(){this.allowSurface=!0;this.sourcePNGJ=this.isStateScript=this.doCache=this.doResize=!1;this.structureCount=this.stateCount=this.$ac=this.ac0=0;this.isHidden=!1;this.xyzMax=this.xyzMin=this.pymolScene=this.ssMapSeq=this.atomMap=this.bsBytesExcluded=this.bsStructureDefined=null;this.nModels=0;this.logging=!1;this.reps=null;this.isMovie=!1;this.pymolFrame=0;this.allStates=!1;this.pymolVersion=this.totalAtomCount=0;this.trajectoryStep=null;this.trajectoryPtr=0;this.mapObjects= +this.volumeData=this.objectName=null;this.haveMeasurements=!1;this.atoms=this.uniqueSettings=this.frames=null;this.haveScenes=!1;this.baseModelIndex=0;this.sceneOrder=null;this.bondCount=0;this.haveBinaryArrays=!0;this.aTemp=this.ptTemp=null;H(this,arguments)},J.adapter.readers.pymol,"PyMOLReader",J.adapter.readers.pdb.PdbReader,J.api.PymolAtomReader);N(c,function(){this.bsStructureDefined=new JU.BS;this.xyzMin=JU.P3.new3(1E6,1E6,1E6);this.xyzMax=JU.P3.new3(-1E6,-1E6,-1E6);this.reps=Array(23);this.ptTemp= +new JU.P3;this.aTemp=I(16,0)});t(c,"setup",function(a,b,d){this.isBinary=this.mustFinalizeModelSet=!0;this.setupASCR(a,b,d)},"~S,java.util.Map,~O");e(c,"initializeReader",function(){this.baseAtomIndex=this.htParams.get("baseAtomIndex").intValue();this.baseModelIndex=this.htParams.get("baseModelIndex").intValue();this.asc.setInfo("noAutoBond",Boolean.TRUE);this.asc.setCurrentModelInfo("pdbNoHydrogens",Boolean.TRUE);this.asc.setInfo("isPyMOL",Boolean.TRUE);this.isTrajectory&&(this.trajectorySteps=new JU.Lst); +this.isStateScript=this.htParams.containsKey("isStateScript");this.sourcePNGJ=this.htParams.containsKey("sourcePNGJ");this.doResize=this.checkFilterKey("DORESIZE");this.allowSurface=!this.checkFilterKey("NOSURFACE");(this.doCache=this.checkFilterKey("DOCACHE"))&&this.sourcePNGJ?this.doCache=!1:this.sourcePNGJ&&!this.doCache&&(this.sourcePNGJ=!1);this.doCache&&(this.bsBytesExcluded=new JU.BS);W(this,J.adapter.readers.pymol.PyMOLReader,"initializeReader",[])});t(c,"processBinaryDocument",function(){var a= +this.vwr.getLogFileName();this.logging=0b&&(b=e);for(var c=c.get(1),j=c.size();0<=--j;){var h=c.get(j),g=(e<<10)+J.adapter.readers.pymol.PyMOLReader.intAt(h,0);this.uniqueSettings.put(Integer.$valueOf(g),h)}}return b},"JU.Lst");e(c,"addColors",function(a,b){if(!(null==a||0==a.size()))for(var d=a.size();0<=--d;){var c=J.adapter.readers.pymol.PyMOLReader.listAt(a,d);J.adapter.readers.pymol.PyMOL.addColor(c.get(1),b?J.adapter.readers.pymol.PyMOLReader.colorSettingClamped(c,this.ptTemp):J.adapter.readers.pymol.PyMOLReader.getColorPt(c.get(2), +this.ptTemp))}},"JU.Lst,~B");e(c,"getAtomAndStateCount",function(a){for(var b=0,d=1;dthis.stateCount&&(this.stateCount=e);var h;this.haveBinaryArrays?(h=F(J.adapter.readers.pymol.PyMOLReader.listAt(j,6).get(1).length/20),j=F(J.adapter.readers.pymol.PyMOLReader.listAt(j, +7).get(1).length/120),b+=j):(h=J.adapter.readers.pymol.PyMOLReader.listAt(j,6).size(),j=J.adapter.readers.pymol.PyMOLReader.listAt(j,7).size());System.out.println("Object "+this.objectName+" nBonds="+h+", nAtoms = "+j);for(h=0;ha.size()?null:J.adapter.readers.pymol.PyMOLReader.stringAt(a,6);null!=g&&"".equals(g.trim())&&(g=null); +this.pymolScene.setReaderObjectInfo(this.objectName,c,g,this.isHidden,J.adapter.readers.pymol.PyMOLReader.listAt(l,8),h,b?"_"+(d+1):"");h=null;l=null!=this.bsBytesExcluded;b=null;switch(c){default:b=""+c;break;case -1:this.pymolScene.processSelection(a);break;case 1:l=!1;h=this.processMolecule(j,d);break;case 4:l=!1;this.processMeasure(j);break;case 3:case 2:this.processMap(j,3==c,!1);break;case 8:this.processGadget(j);break;case 12:null==g&&(g="");break;case 6:b="CGO";this.processCGO(j);break;case 11:b= +"ALIGNEMENT";break;case 9:b="CALCULATOR";break;case 5:b="CALLBACK";break;case 10:b="SLICE";break;case 7:b="SURFACE"}(null!=g||null!=h)&&this.pymolScene.addGroup(a,g,c,h);l&&(a=J.adapter.readers.pymol.PyMOLReader.intAt(e,0),e=J.adapter.readers.pymol.PyMOLReader.intAt(e,1),this.bsBytesExcluded.setBits(a,a+e),JU.Logger.info("cached PSE file excludes PyMOL object type "+c+" name="+this.objectName+" len="+e));null!=b&&JU.Logger.error("Unprocessed object type "+b+" "+this.objectName)}}},"JU.Lst,~B,~N"); +e(c,"processCGO",function(a){if(!this.isStateScript&&!this.isHidden){var b=J.adapter.readers.pymol.PyMOLReader.sublistAt(a,[2,0]);a=J.adapter.readers.pymol.PyMOL.getRGB(J.adapter.readers.pymol.PyMOLReader.intAt(J.adapter.readers.pymol.PyMOLReader.listAt(a,0),2));b=this.pymolScene.addCGO(b,a);null!=b&&this.appendLoadNote("CGO "+b)}},"JU.Lst");e(c,"processGadget",function(a){this.objectName.endsWith("_e_pot")&&this.processMap(a,!0,!0)},"JU.Lst");e(c,"processMap",function(a,b,d){if(b){if(this.sourcePNGJ|| +this.isHidden&&!d)return;null==this.mapObjects&&(this.mapObjects=new JU.Lst);this.mapObjects.addLast(a)}else null==this.volumeData&&(this.volumeData=new java.util.Hashtable),this.volumeData.put(this.objectName,a),!this.isHidden&&!this.isStateScript&&this.pymolScene.addIsosurface(this.objectName);a.addLast(this.objectName)},"JU.Lst,~B,~B");e(c,"processMeasure",function(a){if(!this.isStateScript&&!this.isHidden){JU.Logger.info("PyMOL measure "+this.objectName);var b=J.adapter.readers.pymol.PyMOLReader.sublistAt(a, +[2,0]),d,c=y(b.get(d=1),"JU.Lst")?2:y(b.get(d=4),"JU.Lst")?3:y(b.get(d=6),"JU.Lst")?4:0;if(0!=c){var e=J.adapter.readers.pymol.PyMOLReader.listAt(a,0);a=J.adapter.readers.pymol.PyMOLReader.getBsReps(J.adapter.readers.pymol.PyMOLReader.listAt(e,3));d=J.adapter.readers.pymol.PyMOLReader.listAt(b,d);var j=J.adapter.readers.pymol.PyMOLReader.listAt(b,8),b=8q;q++)this.reps[q]=JU.BS.newN(1E3);if(0==b||!this.isTrajectory){this.pymolScene.ensureCapacity(A);var s=q=null,n=null;this.haveBinaryArrays&&(n=J.adapter.readers.pymol.PyMOLReader.intAt(r,0),s=r.get(1),q=this.getLexStr(r.get(2)),System.out.println("PyMOL atom dump version "+n),n=this.haveBinaryArrays?J.adapter.readers.pymol.PyMOL.getVArray(n):null);for(var u=0;ue&&(e=h)}e=Array(e+1);e[0]=" ";b+=4;for(j=0;j=d.length&&(d=this.aTemp=JU.AU.doubleLengthByte(d)),d[c++]=e;return String.instantialize(JU.AU.arrayCopyByte(d,c),"UTF-8")}catch(j){if(B(j,"java.io.UnsupportedEncodingException"))return null;throw j;}},"~A,~N");e(c,"processMolCryst",function(a){if(!(null==a||0==a.size())){var b=J.adapter.readers.pymol.PyMOLReader.sublistAt(a,[0,0]),d=J.adapter.readers.pymol.PyMOLReader.sublistAt(a, +[0,1]);this.setUnitCell(J.adapter.readers.pymol.PyMOLReader.floatAt(b,0),J.adapter.readers.pymol.PyMOLReader.floatAt(b,1),J.adapter.readers.pymol.PyMOLReader.floatAt(b,2),J.adapter.readers.pymol.PyMOLReader.floatAt(d,0),J.adapter.readers.pymol.PyMOLReader.floatAt(d,1),J.adapter.readers.pymol.PyMOLReader.floatAt(d,2));this.setSpaceGroupName(J.adapter.readers.pymol.PyMOLReader.stringAt(a,1))}},"JU.Lst");e(c,"getBondList",function(a){var b=!this.pymolScene.booleanSetting(64),d=null,c=null,e=a.size(), +j=0;this.haveBinaryArrays&&2==e&&(d=J.adapter.readers.pymol.PyMOLReader.intAt(a,0),System.out.println("PyMOL bond dump version "+d),c=J.adapter.readers.pymol.PyMOL.getVArrayB(d),d=a.get(1),j=c[0],e=F(d.length/j));var h=new JU.Lst;h.ensureCapacity(e);for(var g,l,p,m=-1,n=0,r=0;np||3w;w++)P[w]= +JU.BC.bytesToShort(d,v+R+(w<<1),!1);w=this.atomBool(d,v,c[22],c[47]);d=this.atomBool(d,v,c[21],c[46])}else c=J.adapter.readers.pymol.PyMOLReader.listAt(a,b),a=J.adapter.readers.pymol.PyMOLReader.intAt(c,0),r=J.adapter.readers.pymol.PyMOLReader.stringAt(c,1),0==r.length&&(r=" "),q=J.adapter.readers.pymol.PyMOLReader.stringAt(c,2),t=J.adapter.readers.pymol.PyMOLReader.stringAt(c,3),s=J.adapter.readers.pymol.PyMOLReader.stringAt(c,5),x=J.adapter.readers.pymol.PyMOLReader.stringAt(c,6),u=J.adapter.readers.pymol.PyMOLReader.stringAt(c, +7),e=J.adapter.readers.pymol.PyMOLReader.stringAt(c,9),z=J.adapter.readers.pymol.PyMOLReader.stringAt(c,10),0==z.length&&(z=" "),z=z.substring(0,1),B=J.adapter.readers.pymol.PyMOLReader.floatAt(c,14),D=J.adapter.readers.pymol.PyMOLReader.floatAt(c,15),F=J.adapter.readers.pymol.PyMOLReader.floatAt(c,16),G=J.adapter.readers.pymol.PyMOLReader.floatAt(c,17),C=J.adapter.readers.pymol.PyMOLReader.intAt(c,18),d=0!=J.adapter.readers.pymol.PyMOLReader.intAt(c,19),Q=J.adapter.readers.pymol.PyMOLReader.getBsReps(J.adapter.readers.pymol.PyMOLReader.listAt(c, +20)),I=null==Q?J.adapter.readers.pymol.PyMOLReader.intAt(c,20):0,H=J.adapter.readers.pymol.PyMOLReader.intAt(c,21),K=J.adapter.readers.pymol.PyMOLReader.intAt(c,22),M=J.adapter.readers.pymol.PyMOLReader.intAt(c,23),N=J.adapter.readers.pymol.PyMOLReader.intAt(c,24),w=0!=J.adapter.readers.pymol.PyMOLReader.intAt(c,25),L=40w;w++)m[w]=p[7*b+w];else if(l=J.adapter.readers.pymol.PyMOLReader.listAt(l,b),null!=l)for(w=0;7>w;w++)m[w]=J.adapter.readers.pymol.PyMOLReader.floatAt(l,w);this.pymolScene.addLabel(this.$ac,L,H,m,e)}this.isHidden&& +this.pymolScene.bsHidden.set(this.$ac);n&&this.pymolScene.bsNucleic.set(this.$ac);for(w=0;21>w;w++)(null==Q?0!=(I&1<c)return e[JU.BC.bytesToInt(a,b-c,!1)];a=this.getCStr(a,b+c);return 0==a.length?" ":a},"~A,~N,~N,~A");e(c,"atomInt",function(a,b,c){return JU.BC.bytesToInt(a,b+c,!1)},"~A,~N,~N");e(c,"addBonds",function(a){for(var b=a.size(),c=0;ce.atomIndex1|| +0>e.atomIndex2||(this.pymolScene.setUniqueBond(this.bondCount++,e.uniqueID),this.asc.addBond(e))}},"JU.Lst");e(c,"addMolStructures",function(){this.addMolSS("H",J.c.STR.HELIX);this.addMolSS("S",J.c.STR.SHEET);this.addMolSS("L",J.c.STR.TURN);this.addMolSS(" ",J.c.STR.NONE)});e(c,"addMolSS",function(a,b){if(null!=this.ssMapSeq.get(a))for(var c=-1,e=-1,k=0,j=this.asc.atoms,h=null,g=this.pymolScene.getSSMapAtom(a),l=this.$ac+1,p=-1,m=0,n=-1,r=-1,q=this.ac0;qc)continue}else if(null!=h&&-1E3<=p&&h.get(p- -1E3)){e=q;0>c&&(c=q);continue}else if(0>c)continue;if(b!==J.c.STR.NONE){m=this.bsStructureDefined.nextSetBit(c);if(0<=m&&m<=e)continue;this.bsStructureDefined.setBits(c,e+1);var m=new J.adapter.smarter.Structure(n,b,b,b.toString(),""+ ++this.structureCount,b===J.c.STR.SHEET?1:0,null),s=j[c],t=j[e],u=this.asc.getAtomSetAtomIndex(r);m.set(s.chainID,s.sequenceNumber, +s.insertionCode,t.chainID,t.sequenceNumber,t.insertionCode,c-u,e-u);this.asc.addStructure(m)}g.setBits(c,e+1);c=-1}},"~S,J.c.STR");e(c,"createShapeObjects",function(){this.pymolScene.createShapeObjects(this.reps,this.allowSurface&&!this.isHidden,this.ac0,this.$ac)});e(c,"processMeshes",function(){var a=this.vwr.fm.getFilePath(this.pymolScene.surfaceInfoName,!0,!1);this.vwr.cachePut(a,this.volumeData);for(a=this.mapObjects.size();0<=--a;){var b=this.mapObjects.get(a),c=b.get(b.size()-1).toString(), +e=c.endsWith("_e_pot"),k,j;if(e){j=1073742016;var h=c.substring(0,c.length-3);k=h+"map";h=this.pymolScene.getObjectID(h+"chg");if(null==h)continue;b.addLast(h);this.pymolScene.mepList+=";"+h+";"}else j=1073742018,k=J.adapter.readers.pymol.PyMOLReader.stringAt(J.adapter.readers.pymol.PyMOLReader.sublistAt(b,[2,0]),1);null!=this.volumeData.get(k)&&(b.addLast(k),this.volumeData.put(c,b),this.volumeData.put("__pymolSurfaceData__",b),this.isStateScript||this.pymolScene.addMesh(j,b,c,e),this.appendLoadNote("PyMOL object "+ +c+" references map "+k))}});e(c,"processDefinitions",function(){var a=this.vwr.getAtomDefs(this.pymolScene.setAtomDefs());2=a.size()?0:a.get(b).floatValue()},"JU.Lst,~N");c.listAt=e(c,"listAt",function(a,b){if(null==a||b>=a.size())return null;var c=a.get(b);return y(c,"JU.Lst")?c:null},"JU.Lst,~N");c.sublistAt=e(c,"sublistAt",function(a,b){for(var c=0;ca.size()||0==J.adapter.readers.pymol.PyMOLReader.intAt(a,4)?2:5),b)},"JU.Lst,JU.P3");c.getColorPt=e(c,"getColorPt",function(a,b){return null==a?0:y(a,Integer)?a.intValue():JU.CU.colorPtToFFRGB(J.adapter.readers.pymol.PyMOLReader.pointAt(a,0,b))},"~O,JU.P3"); +c.getMapList=e(c,"getMapList",function(a,b){return a.get(b)},"java.util.Map,~S");c.getBsReps=e(c,"getBsReps",function(a){if(null==a)return null;for(var b=new JU.BS,c=Math.min(a.size(),21),e=0;e= 0); +sc.errorType = this.errorType; +if (this.errorType != null) { +sc.iCommandError = this.iCommand; +this.setAaTokenCompiled(); +}sc.saveTokens(this.aatokenCompiled); +sc.errorMessage = this.errorMessage; +sc.errorMessageUntranslated = (this.errorMessageUntranslated == null ? this.errorMessage : this.errorMessageUntranslated); +if (this.allowMissingEnd && sc.errorMessage != null && sc.errorMessageUntranslated.indexOf("missing END") >= 0) sc.errorMessage = sc.errorMessageUntranslated; +sc.lineIndices = this.lineIndices; +sc.lineNumbers = this.lineNumbers; +sc.vars = this.contextVariables; +return sc; +}, "~S,~S,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "newContextVariable", +function(ident){ +this.theToken = JS.T.o(1073741824, ident); +if (this.pushCount > 0) { +var ct = this.vPush.get(this.pushCount - 1); +ct.addName(ident); +if (ct.tok != 364558) return; +}if (this.thisFunction == null) { +if (this.contextVariables == null) this.contextVariables = new java.util.Hashtable(); +JS.ScriptCompiler.addContextVariable(this.contextVariables, ident); +} else { +this.thisFunction.addVariable(ident, false); +}}, "~S"); +c$.addContextVariable = Clazz_defineMethod(c$, "addContextVariable", +function(contextVariables, name){ +contextVariables.put(name, JS.SV.newS("").setName(name)); +}, "java.util.Map,~S"); +Clazz_defineMethod(c$, "isContextVariable", +function(ident){ +for (var i = this.vPush.size(); --i >= 0; ) { +var ct = this.vPush.get(i); +if (ct.contextVariables != null && ct.contextVariables.containsKey(ident)) return true; +} +return (this.thisFunction != null ? this.thisFunction.isVariable(ident) : this.contextVariables != null && this.contextVariables.containsKey(ident)); +}, "~S"); +Clazz_defineMethod(c$, "cleanScriptComments", +function(script){ +if (script.indexOf('\u00A0') >= 0) script = script.$replace('\u00A0', ' '); +if (script.indexOf('\u201C') >= 0) script = script.$replace('\u201C', '"'); +if (script.indexOf('\u201D') >= 0) script = script.$replace('\u201D', '"'); +if (script.indexOf('\uFEFF') >= 0) script = script.$replace('\uFEFF', ' '); +var pt = (script.indexOf("\u0001##")); +if (pt >= 0) { +this.allowMissingEnd = (script.indexOf("\u0001##NOENDCHECK", pt) >= 0); +this.scriptExtensions = script.substring(pt); +script = script.substring(0, pt); +}this.haveComments = (script.indexOf("#") >= 0); +return JV.FileManager.getEmbeddedScript(script); +}, "~S"); +Clazz_defineMethod(c$, "addTokenToPrefix", +function(token){ +if (this.logMessages) JU.Logger.info("addTokenToPrefix" + this.lineCurrent + " " + this.iCommand + " " + token); +this.ltoken.addLast(token); +if (token.tok != 0) this.lastToken = token; +}, "JS.T"); +Clazz_defineMethod(c$, "compile0", +function(isFull){ +this.haveENDIF = false; +this.script = this.cleanScriptComments(this.script); +this.ichToken = this.script.indexOf("# Jmol state version "); +this.isStateScript = (this.ichToken >= 0 && this.ichToken < 10); +if (this.isStateScript) { +this.ptSemi = this.script.indexOf(";", this.ichToken); +if (this.ptSemi >= this.ichToken) JS.ScriptManager.setStateScriptVersion(this.vwr, this.script.substring(this.ichToken + "# Jmol state version ".length, this.ptSemi).trim()); +} else { +this.haveENDIF = (this.script.indexOf("endif") >= 0); +}this.cchScript = this.script.length; +main : while (true) { +this.vFunctionStack = new JU.Lst(); +this.htUserFunctions = new java.util.Hashtable(); +this.contextVariables = null; +this.lineNumbers = null; +this.lineIndices = null; +this.aatokenCompiled = null; +this.thisFunction = null; +this.flowContext = null; +this.errorType = null; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorLine = null; +this.isPrivateScript = false; +this.isPrivateFunc = false; +this.nSemiSkip = 0; +this.ichToken = 0; +this.ichCurrentCommand = 0; +this.ichComment = 0; +this.ichBrace = 0; +this.lineCurrent = 1; +this.iCommand = 0; +this.tokLastMath = 0; +this.lastToken = JS.T.tokenOff; +this.vBraces = new JU.Lst(); +this.vPush = new JU.Lst(); +this.pushCount = 0; +this.iBrace = 0; +this.braceCount = 0; +this.parenCount = 0; +this.isDotDot = false; +this.ptSemi = -10; +this.cchToken = 0; +this.lnLength = 8; +this.lineNumbers = Clazz_newShortArray (this.lnLength, 0); +this.lineIndices = Clazz_newIntArray (this.lnLength, 2, 0); +this.isNewSet = this.isSetBrace = false; +this.ptNewSetModifier = 1; +this.isShowScriptOutput = false; +this.iHaveQuotedString = false; +this.checkImpliedScriptCmd = false; +this.lltoken = new JU.Lst(); +this.ltoken = new JU.Lst(); +this.tokCommand = 0; +this.lastFlowCommand = null; +this.tokenAndEquals = null; +this.tokInitialPlusPlus = 0; +this.setBraceCount = 0; +this.bracketCount = 0; +this.forPoint3 = -1; +this.setEqualPt = 2147483647; +this.endOfLine = false; +this.comment = null; +this.isEndOfCommand = false; +this.needRightParen = false; +this.lastFlowCommand = null; +this.forceFlowContext = null; +this.theTok = 0; +var iLine = 1; +for (; true; this.ichToken += this.cchToken) { +if ((this.nTokens = this.ltoken.size()) == 0) { +if (this.thisFunction != null && this.thisFunction.chpt0 == 0) this.thisFunction.chpt0 = this.ichToken; +this.ichCurrentCommand = this.ichToken; +iLine = this.lineCurrent; +}if (this.lookingAtLeadingWhitespace()) continue; +this.endOfLine = false; +if (!this.isEndOfCommand) { +this.endOfLine = this.lookingAtEndOfLine(); +switch (this.endOfLine ? 0 : this.lookingAtComment()) { +case 2: +continue; +case 3: +this.isEndOfCommand = true; +continue; +case 1: +this.isEndOfCommand = true; +this.comment = this.script.substring(this.ichToken, this.ichToken + this.cchToken).trim(); +break; +} +this.isEndOfCommand = this.isEndOfCommand || this.endOfLine || this.lookingAtTerminator(); +}if (this.isEndOfCommand) { +this.isEndOfCommand = false; +switch (this.processTokenList(iLine, isFull)) { +case 2: +continue; +case 4: +return false; +} +this.checkImpliedScriptCmd = false; +if (this.ichToken < this.cchScript) continue; +if (this.flowContext != null) { +this.ichCurrentCommand = this.ichToken = this.cchScript; +while (this.flowContext != null) { +this.fixFlowAddLine(this.flowContext); +if (!this.haveENDIF && this.flowContext.checkForceEndIf(0)) { +this.forceFlowEnd(this.flowContext.token); +this.processTokenList(iLine, isFull); +} else { +this.lineCurrent = this.flowContext.lineStart; +this.iCommand = this.flowContext.pt0; +this.ichCurrentCommand = this.lineIndices[this.iCommand][0]; +this.ichToken = this.ichEnd = this.lineIndices[this.iCommand][1]; +return this.errorStr(11, (this.flowContext.$function == null ? JS.T.nameOf(this.flowContext.token.tok) : this.flowContext.$function.getSignature())); +}} +this.lltoken.addLast( Clazz_newArray(-1, [JS.T.o(0, "// end of script")])); +}this.setAaTokenCompiled(); +return true; +}if (this.nTokens > 0 && !this.isDotDot) { +switch (this.checkSpecialParameterSyntax()) { +case 2: +continue; +case 4: +return false; +} +}if (this.lookingAtLookupToken(this.ichToken)) { +switch (this.parseKnownToken()) { +case 2: +continue; +case 4: +return false; +case 5: +this.haveENDIF = true; +continue main; +} +switch (this.parseCommandParameter(iLine, isFull)) { +case 2: +continue; +case 4: +return false; +case 5: +this.haveENDIF = true; +continue main; +} +this.addTokenToPrefix(this.theToken); +continue; +}if (this.nTokens == 0 || (this.isNewSet || this.isSetBrace) && this.nTokens == this.ptNewSetModifier) { +if (this.nTokens == 0) { +if (this.lookingAtString(true)) { +this.addTokenToPrefix(this.setCommand(JS.T.tokenScript)); +this.cchToken = 0; +continue; +}if (this.lookingAtImpliedString(true, true, true, false)) this.ichEnd = this.ichToken + this.cchToken; +}return this.commandExpected(); +}return this.errorStr(19, this.script.substring(this.ichToken, this.ichToken + 1)); +} +} +}, "~B"); +Clazz_defineMethod(c$, "setAaTokenCompiled", +function(){ +this.aatokenCompiled = this.lltoken.toArray( new Array(this.lltoken.size())); +}); +Clazz_defineMethod(c$, "lookingAtLeadingWhitespace", +function(){ +var ichT = this.ichToken; +while (JS.ScriptCompiler.isSpaceOrTab(this.charAt(ichT))) ++ichT; + +if (this.isLineContinuation(ichT, true)) ichT += 1 + this.nCharNewLine(ichT + 1); +this.cchToken = ichT - this.ichToken; +if (this.cchToken == 0) return false; +this.afterWhite = ichT; +return true; +}); +Clazz_defineMethod(c$, "isLineContinuation", +function(ichT, checkMathop){ +var isEscaped = (ichT + 2 < this.cchScript && this.script.charAt(ichT) == '\\' && this.nCharNewLine(ichT + 1) > 0 || !this.isShowScriptOutput && checkMathop && this.lookingAtMathContinuation(ichT)); +if (isEscaped) this.lineCurrent++; +return isEscaped; +}, "~N,~B"); +Clazz_defineMethod(c$, "lookingAtMathContinuation", +function(ichT){ +var n; +if ((n = this.nCharNewLine(ichT)) == 0 || this.lastToken.tok == 1073742332) return false; +if (this.parenCount > 0 || this.bracketCount > 0) return true; +switch (this.tokCommand) { +case 134320141: +case 102436: +this.flowContext.forceEndIf = false; +return false; +case 134320648: +case 102406: +case 134320649: +case 364547: +case 102402: +if (!this.haveENDIF) { +this.flowContext.addLine = 1; +this.flowContext.forceEndIf = true; +}return false; +case 36867: +if (this.nTokens > 1 && this.ltoken.get(1).tok == 537022465) return false; +case 36865: +case 36869: +break; +default: +return false; +} +if (this.lastToken.tok == this.tokLastMath) return true; +ichT += n; +while (JS.ScriptCompiler.isSpaceOrTab(this.charAt(ichT))) ++ichT; + +return (this.lookingAtLookupToken(ichT) && this.tokLastMath == 1); +}, "~N"); +Clazz_defineMethod(c$, "lookingAtEndOfLine", +function(){ +if (this.ichToken >= this.cchScript) { +this.ichEnd = this.cchScript; +return true; +}return ((this.cchToken = this.nCharNewLine(this.ichEnd = this.ichToken)) > 0); +}); +Clazz_defineMethod(c$, "nCharNewLine", +function(ichT){ +var ch; +return ((ch = this.charAt(ichT)) != '\r' ? (ch == '\n' ? 1 : 0) : this.charAt(++ichT) == '\n' ? 2 : 1); +}, "~N"); +Clazz_defineMethod(c$, "lookingAtTerminator", +function(){ +var isSemi = (this.script.charAt(this.ichToken) == ';'); +if (isSemi && this.nTokens > 0) this.ptSemi = this.nTokens; +if (!isSemi || this.nSemiSkip-- > 0) return false; +this.cchToken = 1; +return true; +}); +Clazz_defineMethod(c$, "lookingAtComment", +function(){ +var ch = this.script.charAt(this.ichToken); +var ichT = this.ichToken; +var ichFirstSharp = -1; +if (this.ichToken == this.ichCurrentCommand && ch == '$' && (this.isShowScriptOutput || this.ichToken == 0)) { +this.isShowScriptOutput = true; +this.isShowCommand = true; +if (this.charAt(++ichT) == '[') while (ch != ']' && !this.eol(ch = this.charAt(ichT))) ++ichT; + +this.cchToken = ichT - this.ichToken; +return 2; +} else if (this.isShowScriptOutput && !this.isShowCommand) { +ichFirstSharp = ichT; +}if (ch == '/' && ichT + 1 < this.cchScript) switch ((this.script.charAt(++ichT)).charCodeAt(0)) { +case 47: +ichFirstSharp = this.ichToken; +this.ichEnd = ichT - 1; +break; +case 42: +this.ichEnd = ichT - 1; +var terminator = ((ch = this.charAt(++ichT)) == '*' ? "**/" : "*/"); +ichT = this.script.indexOf(terminator, this.ichToken + 2); +if (ichT < 0) { +this.ichToken = this.cchScript; +return 3; +}this.incrementLineCount(this.script.substring(this.ichToken, ichT)); +this.cchToken = ichT + (ch == '*' ? 3 : 2) - this.ichToken; +return 2; +default: +return 0; +} +var isSharp = (ichFirstSharp < 0); +if (isSharp && !this.haveComments) return 0; +if (this.ichComment > ichT) ichT = this.ichComment; +for (; ichT < this.cchScript; ichT++) { +if (this.eol(ch = this.script.charAt(ichT))) { +this.ichEnd = ichT; +if (ichT > 0 && this.isLineContinuation(ichT - 1, false)) { +ichT += this.nCharNewLine(ichT); +continue; +}if (!isSharp && ch == ';') continue; +break; +}if (ichFirstSharp >= 0) continue; +if (ch == '#') ichFirstSharp = ichT; +} +if (ichFirstSharp < 0) return 0; +this.ichComment = ichFirstSharp; +if (isSharp && this.nTokens == 0 && this.cchScript - ichFirstSharp >= 3 && this.script.charAt(ichFirstSharp + 1) == 'j' && this.script.charAt(ichFirstSharp + 2) == 'c') { +this.cchToken = ichT - this.ichToken; +return 2; +}if (ichFirstSharp != this.ichToken) return 0; +if (isSharp && this.cchScript > this.ichToken + 3 && this.script.charAt(this.ichToken + 1) == 'j' && this.script.charAt(this.ichToken + 2) == 'x' && JS.ScriptCompiler.isSpaceOrTab(this.script.charAt(this.ichToken + 3))) { +this.cchToken = 4; +return 2; +}if (ichT == this.ichToken) return 0; +this.cchToken = ichT - this.ichToken; +if (!isSharp && this.cchToken == 10 && this.script.substring(this.ichToken, ichT).equals("//@private")) { +this.isPrivateScript = true; +}return (this.nTokens == 0 ? 1 : 2); +}); +Clazz_defineMethod(c$, "charAt", +function(i){ +return (i < this.cchScript ? this.script.charAt(i) : '\0'); +}, "~N"); +Clazz_defineMethod(c$, "processTokenList", +function(iLine, doCompile){ +var n = this.ltoken.size(); +if (n > 0 || this.comment != null) { +if (n == 0) { +this.ichCurrentCommand = this.ichToken; +if (this.comment != null) { +this.isComment = true; +this.addTokenToPrefix(JS.T.o(0, this.comment)); +}} else if (this.setBraceCount > 0 && this.endOfLine && this.ichToken < this.cchScript) { +return 2; +}if (this.wasImpliedScript()) return 2; +if (this.isNewSet && n > 2 && this.tokAt(2) == 1073742336 && (this.tokAt(3) == 1275068444 || this.tokAt(3) == 1140850693 || this.tokAt(3) == 1275335685 || this.tokAt(3) == 1275334681)) { +this.ltoken.set(0, JS.T.tokenSet); +this.ltoken.add(1, this.tokAt(3) == 1275334681 ? JS.T.tokenAll : this.ltoken.get(1)); +} else if (this.tokInitialPlusPlus != 0) { +if (!this.isNewSet) this.checkNewSetCommand(); +this.tokenizePlusPlus(this.tokInitialPlusPlus, true); +this.ichCurrentCommand -= 2; +}this.iCommand = this.lltoken.size(); +if (this.thisFunction != null && this.thisFunction.cmdpt0 < 0) { +this.thisFunction.cmdpt0 = this.iCommand; +}if (n == 1 && this.braceCount == 1) { +if (this.lastFlowCommand == null) { +this.parenCount = this.setBraceCount = this.braceCount = 0; +this.ltoken.removeItemAt(0); +var t = JS.ContextToken.newContext(true); +this.addTokenToPrefix(this.setCommand(t)); +this.pushContext(t); +this.addBrace(this.tokenCommand); +} else { +this.parenCount = this.setBraceCount = 0; +this.setCommand(this.lastFlowCommand); +if (this.lastFlowCommand.tok != 102439 && (this.tokAt(0) == 1073742332)) this.ltoken.removeItemAt(0); +this.lastFlowCommand = null; +this.forceFlowContext = this.flowContext; +}}if (this.bracketCount > 0 || this.setBraceCount > 0 || this.parenCount > 0 || this.braceCount == 1 && !this.checkFlowStartBrace(true)) { +this.error(n == 1 ? 2 : 4); +return 4; +}if (this.needRightParen) { +this.addTokenToPrefix(JS.T.tokenRightParen); +this.needRightParen = false; +}if (this.tokAt(1) == 1073741974 && JS.T.tokAttr(this.tokCommand, 135168)) { +switch (this.tokAt(2)) { +case 0: +case 4: +case 12290: +break; +default: +var t = this.ltoken.removeItemAt(2); +this.ltoken.add(2, JS.T.o(4, t.tok == 2 ? "" + t.intValue : t.value.toString())); +} +}if (this.ltoken.size() > 0) { +if (doCompile && !this.compileCommand()) return 4; +if (this.logMessages) { +JU.Logger.info("-------------------------------------"); +}var doEval = true; +switch (this.tokCommand) { +case 364558: +case 102436: +case 134320141: +case 102409: +doEval = (this.atokenInfix.length > 0 && this.atokenInfix[0].intValue != 2147483647); +break; +} +if (doEval) { +if (this.iCommand == this.lnLength) { +this.lineNumbers = JU.AU.doubleLengthShort(this.lineNumbers); +var lnI = Clazz_newIntArray (this.lnLength * 2, 2, 0); +System.arraycopy(this.lineIndices, 0, lnI, 0, this.lnLength); +this.lineIndices = lnI; +this.lnLength *= 2; +}this.lineNumbers[this.iCommand] = this.lineNumbers[this.lineNumbers.length - 1] = iLine; +this.lineIndices[this.iCommand][0] = this.ichCurrentCommand; +this.lineIndices[this.iCommand][1] = Math.max(this.ichCurrentCommand, Math.min(this.cchScript, this.ichEnd == this.ichCurrentCommand ? this.ichToken : this.ichEnd)); +this.lltoken.addLast(this.atokenInfix); +this.iCommand = this.lltoken.size(); +}if (this.tokCommand == 36867) this.lastFlowCommand = null; +}this.setCommand(null); +this.comment = null; +this.iHaveQuotedString = this.isNewSet = this.isSetBrace = this.needRightParen = false; +this.ptNewSetModifier = 1; +this.ltoken.clear(); +this.nTokens = this.nSemiSkip = 0; +this.tokInitialPlusPlus = 0; +this.tokenAndEquals = null; +this.ptSemi = -10; +this.forPoint3 = -1; +this.setEqualPt = 2147483647; +}var isOneLine = (this.flowContext != null && this.flowContext.addLine == 0); +var isEndFlow = ((this.endOfLine || !isOneLine) && !this.haveENDIF && this.flowContext != null && this.flowContext.checkForceEndIf(-1)); +if (this.endOfLine) { +if (isEndFlow) { +if (this.isComment) { +if (!isOneLine) { +this.flowContext.addLine++; +this.flowContext.forceEndIf = true; +}} else if (n > 0 && !this.haveENDIF || isOneLine) { +this.forceFlowEnd(this.flowContext.token); +if (!isOneLine) { +this.forceFlowContext.forceEndIf = true; +}}this.isEndOfCommand = true; +this.cchToken = 0; +this.ichCurrentCommand = this.ichToken; +return 2; +}this.isComment = false; +this.isShowCommand = false; +++this.lineCurrent; +} else if (isEndFlow) { +this.forceFlowEnd(this.flowContext.token); +this.forceFlowContext.forceEndIf = true; +}if (this.ichToken >= this.cchScript) { +this.setCommand(JS.T.tokenAll); +this.theTok = 0; +switch (this.checkFlowEndBrace()) { +case 4: +return 4; +case 2: +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +} +this.ichToken = this.cchScript; +return 0; +}return 0; +}, "~N,~B"); +Clazz_defineMethod(c$, "addBrace", +function(t){ +this.vBraces.addLast(t); +this.iBrace++; +}, "JS.T"); +Clazz_defineMethod(c$, "pushContext", +function(t){ +this.pushCount++; +this.vPush.addLast(t); +}, "JS.T"); +Clazz_defineMethod(c$, "wasImpliedScript", +function(){ +if (this.checkImpliedScriptCmd && this.nTokens >= 2 && (this.tokCommand == 134222850 || this.tokCommand == 4124)) { +var s = (this.nTokens == 2 ? this.lastToken.value.toString().toUpperCase() : null); +if (this.nTokens > 2 ? !(this.tokAt(2) == 268435968 && this.ltoken.get(1).value.toString().endsWith(".spt")) : s.endsWith(".SORT") || s.endsWith(".REVERSE") || s.endsWith(".POP") || s.indexOf(".SORT(") >= 0 || s.indexOf(".REVERSE(") >= 0 || s.indexOf(".POP(") >= 0 || s.indexOf(".PUSH(") >= 0 || s.endsWith("++") || s.endsWith("--") || s.endsWith("=") || this.tokInitialPlusPlus != 0) { +this.ichToken = this.ichCurrentCommand; +this.nTokens = 0; +this.ltoken.clear(); +this.cchToken = 0; +this.tokCommand = 0; +return true; +}}return false; +}); +Clazz_defineMethod(c$, "compileCommand", +function(){ +switch (this.ltoken.size()) { +case 0: +this.atokenInfix = new Array(0); +return true; +case 4: +if (this.isNewSet && this.tokenAt(2).value.equals(".") && this.tokenAt(3).value.equals("spt")) { +var fname = this.tokenAt(1).value + "." + this.tokenAt(3).value; +this.ltoken.clear(); +this.addTokenToPrefix(JS.T.tokenScript); +this.addTokenToPrefix(JS.T.o(4, fname)); +this.isNewSet = false; +}} +this.setCommand(this.tokenAt(0)); +var size = this.ltoken.size(); +if (size == 1 && JS.T.tokAttr(this.tokCommand, 524288)) this.addTokenToPrefix(JS.T.tokenOn); +if (this.tokenAndEquals != null) { +var j; +var i = 0; +for (i = 1; i < size; i++) { +if ((j = this.tokAt(i)) == 268442114) break; +} +size = i; +i++; +if (this.ltoken.size() < i) { +JU.Logger.error("COMPILER ERROR! - andEquals "); +} else { +for (j = 1; j < size; j++, i++) this.ltoken.add(i, this.tokenAt(j)); + +this.ltoken.set(size, JS.T.tokenEquals); +this.ltoken.add(i, this.tokenAndEquals); +this.ltoken.add(++i, JS.T.tokenLeftParen); +this.addTokenToPrefix(JS.T.tokenRightParen); +}}this.atokenInfix = this.ltoken.toArray( new Array(size = this.ltoken.size())); +return this.compileExpressions(); +}); +Clazz_defineMethod(c$, "tokenAt", +function(i){ +return this.ltoken.get(i); +}, "~N"); +Clazz_overrideMethod(c$, "tokAt", +function(i){ +return (i < this.ltoken.size() ? this.tokenAt(i).tok : 0); +}, "~N"); +Clazz_defineMethod(c$, "setCommand", +function(token){ +this.tokenCommand = token; +if (token == null) { +this.tokCommand = 0; +} else { +this.tokCommand = this.tokenCommand.tok; +this.isMathExpressionCommand = (this.tokCommand == 1073741824 || JS.T.tokAttr(this.tokCommand, 36864)); +this.isSetOrDefine = (this.tokCommand == 36867 || this.tokCommand == 12290); +this.isCommaAsOrAllowed = JS.T.tokAttr(this.tokCommand, 12288); +this.implicitString = JS.T.tokAttr(this.tokCommand, 20480); +}return token; +}, "JS.T"); +Clazz_defineMethod(c$, "replaceCommand", +function(token){ +this.ltoken.removeItemAt(0); +this.ltoken.add(0, this.setCommand(token)); +}, "JS.T"); +Clazz_defineMethod(c$, "getPrefixToken", +function(){ +this.ident = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +if (this.ident.equals("NaN")) { +this.addTokenToPrefix(JS.SV.vNaN); +return 3; +}this.identLC = this.ident.toLowerCase(); +var isUserVar = this.lastToken.tok != 1073742336 && !this.isDotDot && this.isContextVariable(this.identLC); +var myName = this.ident; +var preserveCase = null; +if (this.nTokens == 0) { +this.isUserToken = isUserVar; +}if (this.nTokens == 1 && (this.tokCommand == 134320141 || this.tokCommand == 102436 || this.tokCommand == 36868) || this.nTokens != 0 && isUserVar || !this.isDotDot && this.isUserFunction(this.identLC) && ((preserveCase = this.ident) != null) && (this.thisFunction == null || !this.thisFunction.name.equals(this.identLC))) { +this.ident = (preserveCase == null ? this.identLC : preserveCase); +this.theToken = null; +} else if (this.ident.length == 1 || this.lastToken.tok == 268436482) { +if ((this.theToken = JS.T.getTokenFromName(this.ident)) == null && (this.theToken = JS.T.getTokenFromName(this.identLC)) != null) this.theToken = JS.T.tv(this.theToken.tok, this.theToken.intValue, this.ident); +} else { +this.theToken = JS.T.getTokenFromName(this.identLC); +if (isUserVar && this.theToken != null && !this.theToken.value.toString().equalsIgnoreCase(this.identLC)) { +this.theToken = null; +}if (this.theToken != null) switch (this.lastToken.tok) { +default: +if (!this.isWhere) break; +case 1073742336: +case 268437504: +case 268436992: +this.theToken = JS.T.o(this.theToken.tok, this.ident); +} +}if (this.theToken == null) { +this.theToken = JS.SV.newSV((this.identLC.indexOf("property_") == 0 ? 1715472409 : 1073741824), 2147483647, this.ident).setName(myName); +}return this.theTok = this.theToken.tok; +}); +Clazz_defineMethod(c$, "checkSpecialParameterSyntax", +function(){ +if (this.lookingAtString(!this.implicitString)) { +if (this.cchToken < 0) return this.ERROR(4); +var str = this.getUnescapedStringLiteral(this.lastToken != null && !this.iHaveQuotedString && this.lastToken.tok != 1073741984 && (this.tokCommand == 36867 && this.nTokens == 2 && this.lastToken.tok == 545259546 || this.tokCommand == 134223363 || this.tokCommand == 1610616835 || this.tokCommand == 134222850 || this.tokCommand == 4124)); +this.iHaveQuotedString = true; +if ((this.tokCommand == 134223363 || this.tokCommand == 135174) && this.lastToken.tok == 134221834 || this.tokCommand == 134221834 && str.indexOf("@") < 0) { +if (!this.getData(str)) { +return this.ERROR(11, "data"); +}} else { +this.addTokenToPrefix(JS.T.o(4, str)); +if (this.implicitString) { +this.ichEnd = this.ichToken + this.cchToken; +this.isEndOfCommand = true; +}}return 2; +}var ch; +if (this.nTokens == this.ptNewSetModifier) { +ch = this.script.charAt(this.ichToken); +var isAndEquals = ("+-\\*/&|=".indexOf(ch) >= 0); +var isOperation = (isAndEquals || ch == '.' || ch == '['); +var ch2 = this.charAt(this.ichToken + 1); +if (!this.isNewSet && this.isUserToken && isOperation && (ch == '=' || ch2 == ch || ch2 == '=')) { +this.isNewSet = true; +}if (this.isNewSet || this.tokCommand == 36867 || JS.T.tokAttr(this.tokCommand, 536870912)) { +if (ch == '=') this.setEqualPt = this.ichToken; +if (JS.T.tokAttr(this.tokCommand, 536870912) && ch == '=' || (this.isNewSet || this.isSetBrace) && isOperation) { +this.setCommand(isAndEquals ? JS.T.tokenSet : ch == '[' && !this.isSetBrace || ch == '.' && ch2 == '.' ? JS.T.tokenSetArray : JS.T.tokenSetProperty); +this.ltoken.add(0, this.tokenCommand); +this.cchToken = 1; +switch ((ch).charCodeAt(0)) { +case 91: +this.tokLastMath = 1; +this.addTokenToPrefix(JS.T.tokenArrayOpen); +this.bracketCount++; +return 2; +case 46: +if (ch2 == '.') { +this.addTokenToPrefix(JS.T.tokenArrayOpen); +this.cchToken = 2; +this.isDotDot = true; +return 2; +}this.addTokenToPrefix(JS.T.o(1073742336, ".")); +return 2; +case 45: +case 43: +case 42: +case 47: +case 92: +case 38: +case 124: +if (ch2.charCodeAt(0) == 0) return this.ERROR(4); +if (ch2 != ch && ch2 != '=') return this.ERROR(1, "\"" + ch + "\""); +break; +default: +this.lastToken = JS.T.tokenMinus; +return 2; +} +}}}out : switch (this.tokCommand) { +case 134222350: +switch (this.lastToken.tok) { +case 4120: +case 1296041985: +case 1715472409: +case 1073877010: +if (this.nTokens == 2) this.iHaveQuotedString = true; +break; +case 1073741925: +case 1073742189: +break; +default: +if (!this.iHaveQuotedString && this.nTokens != 2) return 0; +break; +} +case 134223363: +case 134222850: +case 4124: +case 1275072526: +if (this.script.charAt(this.ichToken) == '@') { +this.iHaveQuotedString = true; +return 0; +}switch (this.tokCommand) { +case 4124: +this.haveMacro = true; +break out; +case 134223363: +var isAppend = (this.tokAt(1) == 1073741839); +if (this.nTokens == 1 || isAppend && (this.nTokens == 2 || this.nTokens == 3 && this.tokAt(2) == 2)) { +if (isAppend && this.nTokens == 2 && JU.PT.isDigit(this.charAt(this.ichToken))) break out; +var isDataBase = JV.Viewer.isDatabaseCode(this.charAt(this.ichToken)); +if (this.lookingAtLoadFormat(isDataBase)) { +var strFormat = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +var token = JS.T.getTokenFromName(strFormat.toLowerCase()); +switch (token == null ? 0 : token.tok) { +case 1073742015: +case 1073742077: +case 1073741839: +case 1610616855: +case 4130: +case 1073877011: +if (this.nTokens != 1) return 4; +case 36868: +case 134221834: +case 1228935687: +case 134217764: +case 1073741984: +case 1094717454: +case 134218757: +case 536870926: +case 1073741849: +case 1073741851: +this.addTokenToPrefix(token); +break; +default: +var tok = (isDataBase ? 4 : JU.PT.isOneOf(strFormat = strFormat.toLowerCase(), ";xyz;vxyz;vibration;temperature;occupancy;partialcharge;") ? 1073741824 : 0); +if (tok != 0) { +this.addTokenToPrefix(JS.T.o(tok, strFormat)); +this.iHaveQuotedString = (tok == 4); +}} +return 2; +}break; +}var bs; +if (this.script.charAt(this.ichToken) == '{' || this.parenCount > 0) break out; +if ((bs = this.lookingAtBitset()) != null) { +this.addTokenToPrefix(JS.T.o(10, bs)); +return 2; +}} +if (!this.iHaveQuotedString && this.lookingAtImpliedString(this.tokCommand == 134222350, this.tokCommand == 134223363, this.nTokens > 1 || this.tokCommand != 134222850 && this.tokCommand != 4124, false)) { +var str = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +if (this.tokCommand == 134222850) { +if (str.startsWith("javascript:")) { +this.lookingAtImpliedString(true, true, true, false); +str = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +} else if (str.toUpperCase().indexOf(".PUSH(") >= 0) { +this.cchToken = 0; +this.iHaveQuotedString = true; +return 2; +}}this.iHaveQuotedString = true; +this.addTokenToPrefix(JS.T.o(4, str)); +return 2; +}break; +case 4156: +if (this.nTokens == 1 && this.lookForSyncID()) { +var ident = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +var iident = JU.PT.parseInt(ident); +if (iident == -2147483648 || Math.abs(iident) < 1000) this.addTokenToPrefix(JS.T.o(1073741824, ident)); + else this.addTokenToPrefix(JS.T.i(iident)); +return 2; +}break; +case 603983903: +if (this.nTokens == 2 && this.lastToken.tok == 134217764) { +if (this.lookingAtImpliedString(false, false, false, true)) { +if (this.script.charAt(this.ichToken + this.cchToken - 1) == ';') --this.cchToken; +var s = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +this.addTokenToPrefix(JS.T.o(4, s)); +return 2; +}}break; +case 134221856: +if (this.nTokens == 2 && this.lastToken.tok == 4115) this.iHaveQuotedString = true; +if (!this.iHaveQuotedString) { +if (this.script.charAt(this.ichToken) == '@') { +this.iHaveQuotedString = true; +return 0; +}if (this.lookingAtImpliedString(true, true, true, false)) { +var str = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +var pt = str.indexOf(" as "); +if (pt > 0) str = str.substring(0, this.cchToken = pt); +if (str.indexOf(" ") < 0 && str.indexOf(".") >= 0) { +this.addTokenToPrefix(JS.T.o(4, str)); +this.iHaveQuotedString = true; +return 2; +}}}break; +} +this.implicitString = new Boolean (this.implicitString & (this.nTokens == 1)).valueOf(); +if (this.implicitString && !((this.tokCommand == 134222850 || this.tokCommand == 4124) && this.iHaveQuotedString) && this.lookingAtImpliedString(true, true, true, false)) { +var str = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +if (this.tokCommand == 1825200146 && JU.PT.isOneOf(str.toLowerCase(), ";on;off;hide;display;")) this.addTokenToPrefix(JS.T.getTokenFromName(str.toLowerCase())); + else this.addTokenToPrefix(JS.T.o(4, str)); +return 2; +}if (this.lookingAtObjectID()) { +this.addTokenToPrefix(JS.T.getTokenFromName("$")); +this.addTokenToPrefix(JS.T.o(1073741824, this.script.substring(this.ichToken, this.ichToken + this.cchToken))); +return 2; +}var value = this.lookingAtExponential(); +if (value != null) { +this.addNumber(3, 2147483647, value); +return 2; +}if (this.lookingAtDecimal()) { +value = Float.$valueOf(this.script.substring(this.ichToken, this.ichToken + this.cchToken)); +var intValue = (JU.Edge.getFloatEncodedInt(this.script.substring(this.ichToken, this.ichToken + this.cchToken))); +this.addNumber(3, intValue, value); +return 2; +}if (this.lookingAtSeqcode()) { +ch = this.script.charAt(this.ichToken); +try { +var seqNum = (ch == '*' || ch == '^' ? 2147483647 : Integer.parseInt(this.script.substring(this.ichToken, this.ichToken + this.cchToken - 2))); +var insertionCode = this.script.charAt(this.ichToken + this.cchToken - 1); +if (insertionCode == '^') insertionCode = ' '; +if (seqNum < 0) { +seqNum = -seqNum; +this.addTokenToPrefix(JS.T.tokenMinus); +}var seqcode = JM.Group.getSeqcodeFor(seqNum, insertionCode); +this.addTokenToPrefix(JS.T.tv(5, seqcode, "seqcode")); +} catch (nfe) { +if (Clazz_exceptionOf(nfe,"NumberFormatException")){ +return this.ERROR(9, "" + ch); +} else { +throw nfe; +} +} +return 2; +}var val = this.lookingAtInteger(); +if (val != 2147483647) { +var intString = this.script.substring(this.ichToken, this.ichToken + this.cchToken); +if (this.tokCommand == 102407 || this.tokCommand == 102408) { +if (this.nTokens != 1) return this.ERROR(0); +var f = (this.flowContext == null ? null : this.flowContext.getBreakableContext(val = Math.abs(val))); +if (f == null) return this.ERROR(1, this.tokenCommand.value); +this.tokenAt(0).intValue = f.pt0; +}this.addNumber(2, val, intString); +return 2; +}if (!this.isMathExpressionCommand && this.parenCount == 0 || this.lastToken.tok != 1073741824 && !JS.ScriptTokenParser.tokenAttr(this.lastToken, 134217728)) { +var isBondOrMatrix = (this.script.charAt(this.ichToken) == '['); +var bs = this.lookingAtBitset(); +if (bs != null) { +this.addTokenToPrefix(JS.T.o(10, isBondOrMatrix ? JM.BondSet.newBS(bs) : bs)); +return 2; +}if (isBondOrMatrix) { +var m = this.lookingAtMatrix(); +if (Clazz_instanceOf(m,"JU.M34")) { +this.addTokenToPrefix(JS.T.o((Clazz_instanceOf(m,"JU.M4") ? 12 : 11), m)); +return 2; +}}}return 0; +}); +Clazz_defineMethod(c$, "addNumber", +function(tok, i, v){ +this.addTokenToPrefix(this.afterWhite == this.ichToken ? JS.SV.newSV(tok, i, v) : JS.T.tv(tok, i, v)); +}, "~N,~N,~O"); +Clazz_defineMethod(c$, "lookingAtMatrix", +function(){ +var ipt; +var m; +if (this.ichToken + 4 >= this.cchScript || this.script.charAt(this.ichToken) != '[' || this.script.charAt(this.ichToken + 1) != '[' || (ipt = this.script.indexOf("]]", this.ichToken)) < 0 || (m = JU.Escape.unescapeMatrix(this.script.substring(this.ichToken, ipt + 2))) == null) return null; +this.cchToken = ipt + 2 - this.ichToken; +return m; +}); +Clazz_defineMethod(c$, "parseKnownToken", +function(){ +var tok = this.getPrefixToken(); +if (tok == 3) return 2; +var token; +if (this.isDotDot) { +if (tok == 268437504) { +this.bracketCount++; +} else { +this.addTokenToPrefix(JS.T.o(4, this.ident)); +this.addTokenToPrefix(JS.T.tokenArrayClose); +}this.isDotDot = false; +return 2; +}if (this.tokLastMath != 0) this.tokLastMath = tok; +if (this.flowContext != null && this.flowContext.token.tok == 102410 && this.flowContext.$var != null && tok != 102411 && tok != 102413 && this.lastToken.tok != 102410) return this.ERROR(1, this.ident); +if (this.lastToken.tok == 12290 && tok != 1073742332 && this.nTokens != 1) { +this.addTokenToPrefix(tok == 12290 ? this.lastToken : JS.T.o(4, this.ident)); +return 2; +}switch (tok) { +case 1073741824: +if (this.nTokens == 0 && !this.checkImpliedScriptCmd) { +if (this.ident.charAt(0) == '\'') { +this.addTokenToPrefix(this.setCommand(JS.T.tokenScript)); +this.cchToken = 0; +return 2; +}if (this.charAt(this.ichToken + this.cchToken) == '.') { +this.addTokenToPrefix(this.setCommand(JS.T.tokenScript)); +this.nTokens = 1; +this.cchToken = 0; +this.checkImpliedScriptCmd = true; +return 2; +}}break; +case 268442114: +if (this.nSemiSkip == this.forPoint3 && this.nTokens == this.ptSemi + 2) { +token = this.lastToken; +this.addTokenToPrefix(JS.T.tokenEquals); +this.addTokenToPrefix(token); +token = JS.T.getTokenFromName(this.ident.substring(0, 1)); +this.addTokenToPrefix(token); +this.addTokenToPrefix(JS.T.tokenLeftParen); +this.needRightParen = true; +return 2; +}this.checkNewSetCommand(); +if (this.tokCommand == 36867) { +this.tokenAndEquals = JS.T.getTokenFromName(this.ident.substring(0, 1)); +this.setEqualPt = this.ichToken; +return 0; +}if (this.tokCommand == 554176565 || this.tokCommand == 554176526) { +this.addTokenToPrefix(this.tokenCommand); +this.replaceCommand(JS.T.tokenSet); +this.tokenAndEquals = JS.T.getTokenFromName(this.ident.substring(0, 1)); +this.setEqualPt = this.ichToken; +return 0; +}return 2; +case 268441601: +case 268441602: +if (this.nTokens == 0) { +this.tokInitialPlusPlus = this.theToken.tok; +return 2; +}if (this.afterWhite == this.ichToken || this.afterMath == this.ichToken) this.theToken = JS.T.tv(this.theToken.tok, -1, this.theToken.value); +if (!this.isNewSet && this.nTokens == 1) this.checkNewSetCommand(); +if (this.isNewSet && this.parenCount == 0 && this.bracketCount == 0 && this.ichToken <= this.setEqualPt) { +this.tokenizePlusPlus(tok, false); +return 2; +} else if (this.nSemiSkip == this.forPoint3 && this.nTokens == this.ptSemi + 2) { +token = this.lastToken; +this.addTokenToPrefix(JS.T.tokenEquals); +this.addTokenToPrefix(token); +this.addTokenToPrefix(tok == 268441601 ? JS.T.tokenMinus : JS.T.tokenPlus); +this.addTokenToPrefix(JS.T.i(1)); +return 2; +}break; +case 268440324: +if (this.parenCount == 0 && this.bracketCount == 0) this.setEqualPt = this.ichToken; +break; +case 1073742336: +if (this.tokCommand == 36867 && this.parenCount == 0 && this.bracketCount == 0 && this.ichToken < this.setEqualPt && this.ltoken.size() > 1 && this.ltoken.get(1).tok == 1073742332) { +this.ltoken.set(0, JS.T.tokenSetProperty); +this.ltoken.add(1, JS.T.tokenExpressionBegin); +this.addTokenToPrefix(JS.T.tokenExpressionEnd); +this.setEqualPt = 0; +}break; +case 1073742332: +if (++this.braceCount == 1 && this.parenCount == 0 && this.checkFlowStartBrace(false)) { +this.isEndOfCommand = true; +var f = (this.flowContext != null && this.flowContext.addLine == 0 || this.forceFlowContext == null ? this.flowContext : this.forceFlowContext); +if (f != null) { +f.addLine = 0; +f.forceEndIf = false; +this.lastToken = JS.T.tokenLeftBrace; +this.forceFlowContext = f; +}return 2; +}this.parenCount++; +break; +case 268435968: +this.parenCount++; +if (this.nTokens > 1 && (this.lastToken.tok == 1275082241 || this.lastToken.tok == 134320648 || this.lastToken.tok == 134320649)) this.nSemiSkip += 2; +break; +case 1073742338: +if (this.iBrace > 0 && this.parenCount == 0 && this.braceCount == 0) { +this.ichBrace = this.ichToken; +if (this.nTokens == 0) { +this.braceCount = this.parenCount = 1; +} else { +if (!this.wasImpliedScript()) { +this.braceCount = this.parenCount = this.nSemiSkip = 0; +this.addBrace(this.theToken); +this.isEndOfCommand = true; +this.ichEnd = this.ichToken; +}return 2; +}}this.braceCount--; +case 268435969: +if (--this.parenCount < 0) return this.ERROR(16, this.ident); +if (this.parenCount == 0) this.nSemiSkip = 0; +if (this.needRightParen) { +this.addTokenToPrefix(JS.T.tokenRightParen); +this.needRightParen = false; +}break; +case 268437504: +if (this.ichToken > 0 && JU.PT.isWhitespace(this.script.charAt(this.ichToken - 1))) this.addTokenToPrefix(JS.T.tokenSpaceBeforeSquare); +this.bracketCount++; +break; +case 268437505: +this.bracketCount--; +if (this.bracketCount < 0) return this.ERROR(16, "]"); +break; +case 1073742337: +this.isDotDot = true; +this.addTokenToPrefix(JS.T.tokenArrayOpen); +return 2; +} +switch (this.lastToken.tok) { +case 1073742336: +case 1073742337: +case 268436992: +case 268437504: +return 0; +} +switch (tok) { +case 4134: +this.isPrivateFunc = true; +return 2; +case 102409: +if (this.tokCommand == 135174 || this.tokCommand == 4103 && this.nTokens == 1) return 0; +if (!this.haveENDIF) return 5; +case 364548: +if (this.flowContext != null) this.flowContext.forceEndIf = false; +case 364547: +if (this.nTokens > 0) { +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +}break; +case 134320648: +case 102411: +case 102413: +case 102402: +case 134320649: +case 102410: +case 102406: +case 102412: +if (this.nTokens > 1 && this.tokCommand != 36867 && this.nSemiSkip == 0) { +this.isEndOfCommand = true; +if (this.flowContext != null) this.flowContext.forceEndIf = true; +this.cchToken = 0; +return 2; +}break; +} +return 0; +}); +Clazz_defineMethod(c$, "tokenizePlusPlus", +function(tok, isPlusPlusX){ +if (isPlusPlusX) { +this.setCommand(JS.T.tokenSet); +if (this.nTokens == 1) this.ltoken.add(0, this.tokenCommand); +}this.nTokens = this.ltoken.size(); +this.addTokenToPrefix(JS.T.tokenEquals); +this.setEqualPt = 0; +for (var i = 1; i < this.nTokens; i++) this.addTokenToPrefix(this.ltoken.get(i)); + +this.addTokenToPrefix(tok == 268441601 ? JS.T.tokenMinus : JS.T.tokenPlus); +this.addTokenToPrefix(JS.T.i(1)); +}, "~N,~B"); +Clazz_defineMethod(c$, "checkNewSetCommand", +function(){ +var name = (this.nTokens == 0 ? "" : this.ltoken.get(0).value.toString()); +if (this.nTokens > 0 && !this.isContextVariable(name.toLowerCase())) return false; +var t = this.setNewSetCommand(false, name); +this.setCommand(JS.T.tokenSet); +this.ltoken.add(0, this.tokenCommand); +this.ltoken.set(1, t); +return true; +}); +Clazz_defineMethod(c$, "parseCommandParameter", +function(iLine, isFull){ +this.nTokens = this.ltoken.size(); +switch (this.tokCommand) { +case 0: +this.lastToken = JS.T.tokenOff; +this.ichCurrentCommand = this.ichEnd = this.ichToken; +this.setCommand(this.theToken); +if (this.logMessages) JU.Logger.info("compiling " + this.theToken); +var isFlowCmd = JS.T.tokAttr(this.tokCommand, 102400); +if (isFlowCmd) { +this.lastFlowCommand = this.tokenCommand; +}var ret = this.checkFlowEndBrace(); +if (ret == 4) return 4; + else if (ret == 2) { +this.isEndOfCommand = true; +this.cchToken = 0; +if (this.theTok == 268435968) this.parenCount--; +return 2; +}switch (this.theTok) { +case 1073742332: +break; +case 268436482: +this.braceCount++; +this.isEndOfCommand = true; +return 0; +case 102409: +return 0; +case 364547: +case 102402: +this.fixFlowAddLine(this.flowContext); +if (this.lltoken.get(this.iCommand - 1)[0].tok == 102409 && this.forceFlowContext != null && this.forceFlowContext.forceEndIf && this.forceFlowContext.addLine > 0 && this.isFlowIfContextOK(this.forceFlowContext)) { +this.flowContext = this.forceFlowContext; +this.flowContext.forceEndIf = true; +this.lltoken.removeItemAt(--this.iCommand); +} else if (this.flowContext != null && this.flowContext.addLine > 0) { +while (this.flowContext != null && !this.isFlowIfContextOK(this.flowContext)) { +if (this.flowContext.checkForceEndIf(0)) { +this.forceFlowEnd(this.flowContext.token); +this.processTokenList(iLine, isFull); +this.fixFlowAddLine(this.flowContext); +this.setCommand(this.theToken); +this.theTok = this.theToken.tok; +} else { +break; +}} +}default: +if (isFlowCmd) { +switch (this.checkFlowCommand(this.tokenCommand.value)) { +case 4: +return 4; +case 2: +return 2; +case 5: +return 5; +case 0: +this.theToken = this.tokenCommand; +if (this.theTok == 102411) { +this.addTokenToPrefix(this.tokenCommand); +this.theToken = JS.T.tokenLeftParen; +}return 0; +} +}if (this.flowContext != null && !this.haveENDIF && this.flowContext.addLine > 0) { +this.fixFlowAddLine(this.flowContext); +while (this.flowContext != null) { +if (this.flowContext.checkForceEndIf(0)) { +this.forceFlowEnd(this.flowContext.token); +this.processTokenList(iLine, isFull); +this.setCommand(this.theToken); +this.theTok = this.theToken.tok; +} else { +break; +}} +}if (this.theTok == 1073742338) { +this.forceFlowContext = null; +this.addBrace(this.tokenCommand); +this.tokCommand = 0; +return 2; +}this.lastFlowCommand = null; +} +if (this.theTok == 268438528) { +this.setCommand(this.theToken = JS.T.o(4143, "resume")); +this.addTokenToPrefix(this.theToken); +this.theToken = JS.T.o(14, "context"); +return 0; +}if (JS.T.tokAttr(this.tokCommand, 4096)) break; +this.isSetBrace = (this.theTok == 1073742332); +if (this.isSetBrace) { +if (!this.lookingAtSetBraceSyntax()) { +this.isEndOfCommand = true; +if (this.flowContext != null) this.flowContext.forceEndIf = false; +}} else { +switch (this.theTok) { +case 268441602: +case 268441601: +this.tokInitialPlusPlus = this.theTok; +this.tokCommand = 0; +return 2; +case 1073741824: +case 36868: +case 12290: +case 268435968: +break; +default: +if (!JS.T.tokAttr(this.theTok, 1073741824) && !JS.T.tokAttr(this.theTok, 536870912) && !this.isContextVariable(this.identLC)) { +this.commandExpected(); +return 4; +}} +}this.theToken = this.setNewSetCommand(this.isSetBrace, this.ident); +break; +case 102412: +switch (this.nTokens) { +case 1: +if (this.theTok != 268435968) return this.ERROR(15, "("); +break; +case 2: +if (this.theTok != 268435969) (this.tokenCommand).name0 = this.ident; +this.newContextVariable(this.ident); +break; +case 3: +if (this.theTok != 268435969) return this.ERROR(15, ")"); +this.isEndOfCommand = true; +this.ichEnd = this.ichToken + 1; +this.flowContext.setLine(); +break; +default: +return this.ERROR(0); +} +break; +case 102436: +case 134320141: +if (this.tokenCommand.intValue == 0) { +if (this.nTokens != 1) break; +this.tokenCommand.value = this.ident; +return 2; +}if (this.nTokens == 1) { +if (this.thisFunction != null) this.vFunctionStack.add(0, this.thisFunction); +this.thisFunction = (this.tokCommand == 102436 ? J.api.Interface.getInterface("JS.ScriptParallelProcessor", null, null) : new JS.ScriptFunction(this.ident, this.tokCommand)); +this.thisFunction.set(this.ident, this.tokCommand); +this.thisFunction.isPrivate = this.isStateScript || this.isPrivateScript || this.isPrivateFunc; +this.isPrivateFunc = false; +this.htUserFunctions.put(this.ident, Boolean.TRUE); +this.flowContext.setFunction(this.thisFunction); +break; +}if (this.nTokens == 2) { +if (this.theTok != 268435968) return this.ERROR(15, "("); +break; +}if (this.nTokens == 3 && this.theTok == 268435969) break; +if (this.nTokens % 2 == 0) { +if (this.theTok != 268436992 && this.theTok != 268435969) return this.ERROR(15, ")"); +break; +}this.thisFunction.addVariable(this.ident, true); +break; +case 102411: +if (this.nTokens > 1 && this.parenCount == 0 && this.braceCount == 0 && this.theTok == 268436482) { +this.addTokenToPrefix(JS.T.tokenRightParen); +this.braceCount = 1; +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +}break; +case 102413: +if (this.nTokens > 1) { +this.braceCount = 1; +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +}break; +case 364547: +if (this.nTokens == 1 && this.theTok != 134320649) { +this.isEndOfCommand = true; +this.cchToken = 0; +return 2; +}if (this.nTokens != 1 || this.theTok != 134320649 && this.theTok != 1073742332) return this.ERROR(0); +this.replaceCommand(this.flowContext.token = JS.ContextToken.newCmd(102402, "elseif")); +this.tokCommand = 102402; +return 2; +case 102409: +if (this.nTokens != 1) return this.ERROR(0); +if (!this.checkFlowEnd(this.theTok, this.ident, this.ichCurrentCommand, true)) return 4; +if (this.theTok == 134320141 || this.theTok == 102436) { +return 2; +}break; +case 134320648: +if (this.nTokens == 1) { +if (this.theTok != 268435968) return this.ERROR(19, this.ident); +this.forPoint3 = this.nSemiSkip = 0; +this.nSemiSkip += 2; +break; +}if (this.nTokens == 3 && this.tokAt(2) == 36868) { +this.newContextVariable(this.ident); +break; +}if ((this.nTokens == 3 || this.nTokens == 4) && this.theTok == 1275068432) { +this.nSemiSkip -= 2; +this.forPoint3 = 2; +this.addTokenToPrefix(this.theToken); +this.theToken = JS.T.tokenLeftParen; +break; +}case 102410: +case 102406: +case 102402: +case 134320649: +if (this.nTokens <= 2 || this.braceCount != 0 || this.parenCount != 0) break; +case 102439: +this.isEndOfCommand = true; +this.ichEnd = this.ichToken + 1; +this.flowContext.setLine(); +break; +case 36868: +if (this.nTokens == 1) { +this.replaceCommand(JS.T.tokenSetVar); +this.newContextVariable(this.ident); +break; +} else if (this.ident.equals(",")) { +return 2; +} else if (!JU.PT.isLetter(this.ident.charAt(0))) { +if (this.nTokens != 2 || this.ident.equals("[")) return this.ERROR(0); +this.replaceCommand(JS.T.tokenSet); +} else { +this.newContextVariable(this.ident); +break; +}case 36867: +if (this.theTok == 1073742332) this.setBraceCount++; + else if (this.theTok == 1073742338) { +this.setBraceCount--; +if (this.isSetBrace && this.setBraceCount == 0 && this.ptNewSetModifier == 2147483647) this.ptNewSetModifier = this.nTokens + 1; +}if (this.nTokens == this.ptNewSetModifier) { +var token = this.tokenAt(0); +if (this.theTok == 268435968 || this.isUserFunction(token.value.toString())) { +this.ltoken.set(0, this.setCommand(JS.T.tv(1073741824, 0, token.value))); +this.setBraceCount = 0; +break; +}if (this.theTok != 1073741824 && this.theTok != 268442114 && this.theTok != 12290 && (!JS.T.tokAttr(this.theTok, 536870912))) { +if (this.isNewSet) this.commandExpected(); + else this.errorIntStr2(18, "SET", ": " + this.ident); +return 4; +}if (this.nTokens == 1 && (this.lastToken.tok == 268441602 || this.lastToken.tok == 268441601)) { +this.replaceCommand(JS.T.tokenSet); +this.addTokenToPrefix(this.lastToken); +break; +}}break; +case 134223363: +if (this.theTok == 12290 && (this.nTokens == 1 || this.lastToken.tok == 1073741940 || this.lastToken.tok == 134217764)) { +this.addTokenToPrefix(JS.T.tokenDefineString); +return 2; +}if (this.theTok == 1073741848) this.iHaveQuotedString = false; +break; +case 12290: +if (this.nTokens == 1) { +if (this.theTok != 1073741824) { +if (this.preDefining) { +if (!JS.T.tokAttr(this.theTok, 2097152)) { +this.errorStr2("ERROR IN Token.java or JmolConstants.java -- the following term was used in JmolConstants.java but not listed as predefinedset in Token.java: " + this.ident, null); +return 4; +}} else if (JS.T.tokAttr(this.theTok, 2097152)) { +JU.Logger.warn("WARNING: predefined term '" + this.ident + "' has been redefined by the user until the next file load."); +} else if (!this.isCheckOnly && this.ident.length > 1) { +JU.Logger.warn("WARNING: redefining " + this.ident + "; was " + this.theToken + "not all commands may continue to be functional for the life of the applet!"); +this.theTok = this.theToken.tok = 1073741824; +JS.T.addToken(this.ident, this.theToken); +}}this.addTokenToPrefix(this.theToken); +this.lastToken = JS.T.tokenComma; +return 2; +}if (this.nTokens == 2) { +if (this.theTok == 268440324) { +this.ltoken.add(0, JS.T.tokenSet); +return 2; +}}break; +case 135190: +case 135188: +case 135180: +var ch = this.charAt(this.ichToken + this.cchToken); +if (this.parenCount == 0 && this.bracketCount == 0 && ".:/\\+-!?".indexOf(ch) >= 0 && !(ch == '-' && this.ident.equals("="))) this.checkUnquotedFileName(); +break; +} +return 0; +}, "~N,~B"); +Clazz_defineMethod(c$, "setNewSetCommand", +function(isSetBrace, ident){ +this.tokCommand = 36867; +this.isNewSet = (!isSetBrace && !this.isUserFunction(ident)); +this.setBraceCount = (isSetBrace ? 1 : 0); +this.bracketCount = 0; +this.setEqualPt = 2147483647; +this.ptNewSetModifier = (this.isNewSet ? (ident.equals("(") ? 2 : 1) : 2147483647); +return ((isSetBrace || this.theToken.tok == 268435968 || this.theToken.tok == 536870918 || this.theToken.tok == 268441602 || this.theToken.tok == 268441601) ? this.theToken : JS.T.o(1073741824, ident)); +}, "~B,~S"); +Clazz_defineMethod(c$, "checkUnquotedFileName", +function(){ +var ichT = this.ichToken; +var ch; +while (++ichT < this.cchScript && !JU.PT.isWhitespace(ch = this.script.charAt(ichT)) && ch != '#' && ch != ';' && ch != '}') { +} +var name = this.script.substring(this.ichToken, ichT).$replace('\\', '/'); +this.cchToken = ichT - this.ichToken; +this.theToken = JS.T.o(4, name); +}); +Clazz_defineMethod(c$, "checkFlowStartBrace", +function(atEnd){ +var tok = this.tokCommand; +switch (tok) { +default: +if (JS.T.tokAttr(tok, 102400)) { +if (atEnd) { +switch (tok) { +case 102411: +case 102413: +break; +default: +this.flowContext.addLine = 0; +this.addBrace(this.tokenCommand); +this.lastFlowCommand = null; +break; +} +this.parenCount = this.braceCount = 0; +}return true; +}case 102407: +case 102408: +return false; +} +}, "~B"); +Clazz_defineMethod(c$, "checkFlowEndBrace", +function(){ +if (this.iBrace <= 0 || this.vBraces.get(this.iBrace - 1).tok != 1073742338) return 0; +this.vBraces.removeItemAt(--this.iBrace); +var token = this.vBraces.removeItemAt(--this.iBrace); +if (this.theTok == 1073742332) { +this.braceCount--; +this.parenCount--; +}if (token.tok == 1275335685) { +this.vPush.removeItemAt(--this.pushCount); +this.addTokenToPrefix(this.setCommand(JS.ContextToken.newContext(false))); +this.isEndOfCommand = true; +return 2; +}switch (this.flowContext == null ? 0 : this.flowContext.token.tok) { +case 134320649: +case 102402: +case 364547: +if (this.tokCommand == 364547 || this.tokCommand == 102402) return 0; +break; +case 102410: +case 102411: +case 102413: +if (this.tokCommand == 102411 || this.tokCommand == 102413) return 0; +} +return this.forceFlowEnd(token); +}); +Clazz_defineMethod(c$, "forceFlowEnd", +function(token){ +var t0 = this.tokenCommand; +this.forceFlowContext = this.flowContext; +token = this.flowStart(token); +if (!this.checkFlowEnd(token.tok, token.value, this.ichBrace, false)) return 4; +switch (token.tok) { +case 134320141: +case 102436: +case 364558: +break; +default: +this.addTokenToPrefix(token); +} +this.setCommand(t0); +return 2; +}, "JS.T"); +Clazz_defineMethod(c$, "flowStart", +function(token){ +switch (token.tok) { +case 134320649: +case 364547: +case 102402: +return JS.T.tokenIf; +case 102413: +case 102411: +return JS.T.tokenSwitch; +default: +return JS.T.getTokenFromName(token.value); +} +}, "JS.T"); +c$.isBreakableContext = Clazz_defineMethod(c$, "isBreakableContext", +function(tok){ +return tok == 134320648 || tok == 102439 || tok == 102406 || tok == 102411 || tok == 102413; +}, "~N"); +Clazz_defineMethod(c$, "checkFlowCommand", +function(ident){ +var pt = this.lltoken.size(); +switch (this.tokCommand) { +case 364548: +if (!this.isFlowIfContextOK(this.flowContext)) { +if (!this.haveENDIF) return 5; +this.errorStr(1, ident); +return 4; +}this.flowContext.token.intValue = this.flowContext.setPt0(pt, false); +this.setFlowEnd(this.tokCommand, ident); +this.flowContext = this.flowContext.parent; +return 0; +case 102407: +case 102408: +var f = (this.flowContext == null ? null : this.flowContext.getBreakableContext(0)); +if (this.tokCommand == 102408) while (f != null && f.token.tok != 134320648 && f.token.tok != 102406) f = f.parent; + +if (f == null) { +this.errorStr(1, ident); +return 4; +}this.setCommand(JS.T.tv(this.tokCommand, f.pt0, ident)); +this.theToken = this.tokenCommand; +return 1; +case 134320141: +case 102436: +if (this.flowContext != null) { +this.errorStr(1, JS.T.nameOf(this.tokCommand)); +return 4; +}break; +case 134320649: +case 364558: +case 102412: +case 134320648: +case 102439: +case 102410: +case 102406: +break; +case 102402: +case 364547: +if (this.flowContext != null && !this.isFlowIfContextOK(this.flowContext)) { +this.flowContext = this.flowContext.parent; +}if (!this.isFlowIfContextOK(this.flowContext)) { +if (!this.haveENDIF) return 5; +this.errorStr(1, ident); +return 4; +}this.flowContext.token.intValue = this.flowContext.setPt0(pt, false); +break; +case 102411: +case 102413: +if (this.flowContext == null || this.flowContext.token.tok != 102410 && this.flowContext.token.tok != 102411 && (this.tokCommand == 102413 ? this.flowContext.ptDefault > 0 : this.flowContext.token.tok != 102413)) { +this.errorStr(1, ident); +return 4; +}this.flowContext.token.intValue = this.flowContext.setPt0(pt, this.tokCommand == 102413); +break; +} +var ct = JS.ContextToken.newCmd(this.tokCommand, this.tokenCommand.value); +if (this.tokCommand == 102410) ct.addName("_var"); +this.setCommand(ct); +switch (this.tokCommand) { +case 364558: +this.flowContext = new JS.ScriptFlowContext(this, ct, pt, this.flowContext, this.ichCurrentCommand, this.lineCurrent); +if (this.thisFunction != null) this.vFunctionStack.add(0, this.thisFunction); +this.thisFunction = new JS.ScriptFunction("", 364558); +this.flowContext.setFunction(this.thisFunction); +this.pushContext(ct); +break; +case 102411: +case 102413: +ct.contextVariables = this.flowContext.token.contextVariables; +case 364547: +case 102402: +this.flowContext.token = ct; +break; +case 102439: +case 134320648: +case 102406: +case 102412: +this.pushContext(ct); +case 134320649: +case 102410: +default: +this.flowContext = new JS.ScriptFlowContext(this, ct, pt, this.flowContext, this.ichCurrentCommand, this.lineCurrent); +} +return 0; +}, "~S"); +Clazz_defineMethod(c$, "setFlowEnd", +function(tokCommand, ident){ +this.setCommand(JS.T.tv(tokCommand, (this.flowContext.ptDefault > 0 ? this.flowContext.ptDefault : -this.flowContext.pt0), ident)); +}, "~N,~S"); +Clazz_defineMethod(c$, "isFlowIfContextOK", +function(f){ +switch (f == null ? 0 : f.token.tok) { +case 134320649: +case 102402: +return true; +case 364547: +return this.tokCommand != 364547; +} +return false; +}, "JS.ScriptFlowContext"); +Clazz_defineMethod(c$, "checkFlowEnd", +function(tok, ident, pt1, isExplicitEnd){ +if (isExplicitEnd) { +if (this.flowContext == null) return this.errorStr(1, "end " + ident); +this.flowContext.addLine = 0; +this.flowContext.forceEndIf = false; +switch (this.flowContext.token.tok) { +case 134320141: +case 102436: +case 364558: +break; +default: +this.setFlowEnd(102409, "end"); +this.ltoken.set(0, this.tokenCommand); +} +} else { +this.setFlowEnd(102409, "end"); +this.addTokenToPrefix(this.tokenCommand); +}if (this.flowContext == null || tok != this.flowContext.tok0) return this.errorStr(1, "end " + ident); +var pt = this.lltoken.size(); +this.flowContext.token.intValue = (this.tokCommand == 102412 ? -pt : pt); +switch (tok) { +case 134320649: +case 102410: +break; +case 102412: +case 134320648: +case 102439: +case 102406: +if (!isExplicitEnd) this.vPush.removeItemAt(--this.pushCount); +break; +case 102436: +case 134320141: +case 364558: +if (!this.isCheckOnly) { +this.addTokenToPrefix(JS.T.o(tok, this.thisFunction)); +JS.ScriptFunction.setFunction(this.thisFunction, this.script, pt1, this.lltoken.size(), this.lineNumbers, this.lineIndices, this.lltoken); +}this.thisFunction = (this.vFunctionStack.size() == 0 ? null : this.vFunctionStack.removeItemAt(0)); +this.tokenCommand.intValue = 0; +if (tok == 364558) this.vPush.removeItemAt(--this.pushCount); +break; +default: +return this.errorStr(19, "end " + ident); +} +this.flowContext = this.flowContext.parent; +this.fixFlowAddLine(this.flowContext); +return true; +}, "~N,~S,~N,~B"); +Clazz_defineMethod(c$, "fixFlowAddLine", +function(flowContext){ +while (flowContext != null) { +if (flowContext.addLine > 0 || flowContext.forceEndIf) { +flowContext.addLine = this.lineCurrent - flowContext.ptLine; +flowContext.forceEndIf = true; +}flowContext = flowContext.parent; +} +}, "JS.ScriptFlowContext"); +Clazz_defineMethod(c$, "getData", +function(key){ +this.addTokenToPrefix(JS.T.o(4, key)); +this.ichToken += key.length + 2; +if (this.charAt(this.ichToken) == '\r') { +this.lineCurrent++; +this.ichToken++; +}if (this.charAt(this.ichToken) == '\n') { +this.lineCurrent++; +this.ichToken++; +}var i = this.script.indexOf(this.chFirst + key + this.chFirst, this.ichToken) - 4; +if (i < 0 || !this.script.substring(i, i + 4).equalsIgnoreCase("END ")) return false; +var str = this.script.substring(this.ichToken, i); +this.incrementLineCount(str); +this.addTokenToPrefix(JS.T.o(134221834, str)); +this.addTokenToPrefix(JS.T.o(1073741824, "end")); +this.addTokenToPrefix(JS.T.o(4, key)); +this.cchToken = i - this.ichToken + key.length + 6; +return true; +}, "~S"); +Clazz_defineMethod(c$, "incrementLineCount", +function(str){ +var ch; +var pt = str.indexOf('\r'); +var pt2 = str.indexOf('\n'); +if (pt < 0 && pt2 < 0) return 0; +var n = this.lineCurrent; +if (pt < 0 || pt2 < pt) pt = pt2; +for (var i = str.length; --i >= pt; ) { +if ((ch = str.charAt(i)) == '\n' || ch == '\r') this.lineCurrent++; +} +return this.lineCurrent - n; +}, "~S"); +c$.isSpaceOrTab = Clazz_defineMethod(c$, "isSpaceOrTab", +function(ch){ +return ch == ' ' || ch == '\t'; +}, "~S"); +Clazz_defineMethod(c$, "eol", +function(ch){ +return (ch == '\0' || ch == '\r' || ch == '\n' || ch == ';' && this.nSemiSkip <= 0); +}, "~S"); +Clazz_defineMethod(c$, "lookingAtSetBraceSyntax", +function(){ +var ichT = this.ichToken; +var nParen = 1; +while (++ichT < this.cchScript && nParen > 0) { +switch ((this.script.charAt(ichT)).charCodeAt(0)) { +case 123: +nParen++; +break; +case 125: +nParen--; +break; +} +} +if (this.charAt(ichT) == '[' && ++nParen == 1) while (++ichT < this.cchScript && nParen > 0) { +switch ((this.script.charAt(ichT)).charCodeAt(0)) { +case 91: +nParen++; +break; +case 93: +if (this.charAt(ichT + 1) == '[') ichT++; + else nParen--; +break; +} +} +if (this.charAt(ichT) == '.' && nParen == 0) { +return true; +}return false; +}); +Clazz_defineMethod(c$, "lookingAtString", +function(allowPrime){ +if (this.ichToken + 2 > this.cchScript) return false; +this.chFirst = this.script.charAt(this.ichToken); +if (this.chFirst != '"' && (!allowPrime || this.chFirst != '\'')) return false; +var ichT = this.ichToken; +var ch; +var previousCharBackslash = false; +while (++ichT < this.cchScript) { +ch = this.script.charAt(ichT); +if (ch == this.chFirst && !previousCharBackslash) break; +previousCharBackslash = (ch == '\\' ? !previousCharBackslash : false); +} +if (ichT == this.cchScript) { +this.cchToken = -1; +this.ichEnd = this.cchScript; +} else { +this.cchToken = ++ichT - this.ichToken; +}return true; +}, "~B"); +Clazz_defineMethod(c$, "getUnescapedStringLiteral", +function(isFileName){ +if (isFileName) { +var s = this.script.substring(this.ichToken + 1, this.ichToken + this.cchToken - 1); +if (s.indexOf("\\u") >= 0) s = JU.Escape.unescapeUnicode(s); +if (s.indexOf(";base64,") != 0) return s; +}return JS.ScriptCompiler.unescapeString(this.script, this.ichToken + 1, this.cchToken - 2); +}, "~B"); +c$.unescapeString = Clazz_defineMethod(c$, "unescapeString", +function(script, ich, nChar){ +var sb = JU.SB.newN(nChar); +var ichMax = ich + nChar; +while (ich < ichMax) { +var ch = script.charAt(ich++); +if (ch == '\\' && ich < ichMax) { +ch = script.charAt(ich++); +switch ((ch).charCodeAt(0)) { +case 110: +ch = '\n'; +break; +case 116: +ch = '\t'; +break; +case 114: +ch = '\r'; +case 34: +case 92: +case 39: +break; +case 120: +case 117: +var digitCount = ch == 'x' ? 2 : 4; +if (ich < ichMax) { +var unicode = 0; +for (var k = digitCount; --k >= 0 && ich < ichMax; ) { +var chT = script.charAt(ich); +var hexit = JU.Escape.getHexitValue(chT); +if (hexit < 0) break; +unicode <<= 4; +unicode += hexit; +++ich; +} +ch = String.fromCharCode(unicode); +}} +}sb.appendC(ch); +} +return sb.toString(); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "lookingAtLoadFormat", +function(allchar){ +var ichT = this.ichToken; +var ch; +while ((JU.PT.isLetterOrDigit(ch = this.charAt(ichT)) && (allchar || JU.PT.isLetter(ch)) || allchar && (!this.eol(ch) && !JU.PT.isWhitespace(ch)))) ++ichT; + +if (!allchar && ichT == this.ichToken || !JS.ScriptCompiler.isSpaceOrTab(ch)) return false; +this.cchToken = ichT - this.ichToken; +return true; +}, "~B"); +Clazz_defineMethod(c$, "lookingAtImpliedString", +function(allowSpace, allowEquals, allowSptParen, allowSemicolon){ +var ichT = this.ichToken; +var ch = this.script.charAt(ichT); +var isID = (this.lastToken.tok == 1073741974); +var passVariableToString = (JS.T.tokAttr(this.tokCommand, 20480) && (this.tokCommand & 1) == 1); +var isVariable = (ch == '@'); +var isMath = (isVariable && ichT + 3 < this.cchScript && this.script.charAt(ichT + 1) == '{'); +if (isMath && (isID || !passVariableToString)) return false; +var ptSpace = -1; +var ptLastChar = -1; +var isOK = true; +var parenpt = 0; +while (isOK && (!this.eol(ch = this.charAt(ichT)) || allowSemicolon && ch == ';')) { +switch ((ch).charCodeAt(0)) { +case 59: +if (ichT + 5 > this.cchScript || ichT + 2 < this.cchScript && (".01234567890-".indexOf(this.script.charAt(ichT + 1)) < 0 || this.script.charAt(ichT + 2) == '-')) { +isOK = false; +continue; +}break; +case 40: +if (!allowSptParen) { +if (this.tokCommand == 4124 || ichT >= 5 && (this.script.substring(ichT - 4, ichT).equals(".spt") || this.script.substring(ichT - 4, ichT).equals(".png") || this.script.substring(ichT - 5, ichT).equals(".pngj"))) { +isOK = false; +continue; +}}break; +case 61: +if (!allowEquals) { +isOK = false; +continue; +}break; +case 123: +parenpt++; +break; +case 125: +parenpt--; +if (parenpt < 0 && (this.braceCount > 0 || this.iBrace > 0)) { +isOK = false; +continue; +}default: +if (JU.PT.isWhitespace(ch)) { +if (ptSpace < 0) ptSpace = ichT; +} else { +ptLastChar = ichT; +}break; +} +++ichT; +} +if (isVariable && (ptSpace < 0 || ptSpace > ptLastChar)) { +return false; +}if (allowSpace) ichT = ptLastChar + 1; + else if (ptSpace > 0) ichT = ptSpace; +if (isVariable && (!allowSpace || ptSpace < 0 && parenpt <= 0 && ichT - this.ichToken > 1)) { +return false; +}return (this.cchToken = ichT - this.ichToken) > 0; +}, "~B,~B,~B,~B"); +Clazz_defineMethod(c$, "lookingAtExponential", +function(){ +if (this.ichToken == this.cchScript) return null; +var ichT = this.ichToken; +var pt0 = ichT; +if (this.script.charAt(ichT) == '-') ++ichT; +var isOK = false; +var ch = 'X'; +while (JU.PT.isDigit(ch = this.charAt(ichT))) { +++ichT; +isOK = true; +} +if (ichT < this.cchScript && ch == '.') ++ichT; +while (JU.PT.isDigit(ch = this.charAt(ichT))) { +++ichT; +isOK = true; +} +if (ichT == this.cchScript || !isOK) return null; +isOK = (ch != 'E' && ch != 'e'); +if (isOK || ++ichT == this.cchScript) return null; +ch = this.script.charAt(ichT); +if (ch == '-' || ch == '+') ichT++; +while (JU.PT.isDigit(this.charAt(ichT))) { +ichT++; +isOK = true; +} +if (!isOK) return null; +this.cchToken = ichT - this.ichToken; +return Float.$valueOf(JU.PT.dVal(this.script.substring(pt0, ichT))); +}); +Clazz_defineMethod(c$, "lookingAtDecimal", +function(){ +if (this.ichToken == this.cchScript) return false; +var ichT = this.ichToken; +if (this.script.charAt(ichT) == '-') ++ichT; +var digitSeen = false; +var ch; +while (JU.PT.isDigit(ch = this.charAt(ichT++))) digitSeen = true; + +if (ch != '.') return false; +var ch1 = this.charAt(ichT); +if (!JS.ScriptCompiler.isSpaceOrTab(ch1) && !this.eol(ch1)) { +if (JU.PT.isLetter(ch1) || ch1 == '?' || ch1 == '*' || ch1 == '_') return false; +if (JU.PT.isLetter(ch1 = this.charAt(ichT + 1)) || ch1 == '?') return false; +}while (JU.PT.isDigit(this.charAt(ichT))) { +++ichT; +digitSeen = true; +} +this.cchToken = ichT - this.ichToken; +return digitSeen; +}); +Clazz_defineMethod(c$, "lookingAtSeqcode", +function(){ +var ichT = this.ichToken; +var ch; +if (this.charAt(ichT + 1) == '^' && this.script.charAt(ichT) == '*') { +ch = '^'; +++ichT; +} else { +if (this.script.charAt(ichT) == '-') ++ichT; +while (JU.PT.isDigit(ch = this.charAt(ichT))) ++ichT; + +}if (ch != '^') return false; +ichT++; +if (ichT == this.cchScript) ch = ' '; + else ch = this.script.charAt(ichT++); +if (ch != ' ' && ch != '*' && ch != '?' && !JU.PT.isLetter(ch)) return false; +this.cchToken = ichT - this.ichToken; +return true; +}); +Clazz_defineMethod(c$, "lookingAtInteger", +function(){ +if (this.ichToken == this.cchScript) return 2147483647; +var ichT = this.ichToken; +if (this.script.charAt(this.ichToken) == '-') ++ichT; +var ichBeginDigits = ichT; +while (JU.PT.isDigit(this.charAt(ichT))) ++ichT; + +if (ichBeginDigits == ichT) return 2147483647; +this.cchToken = ichT - this.ichToken; +try { +var val = Integer.parseInt(this.ident = this.script.substring(this.ichToken, ichT)); +return val; +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +return 2147483647; +}); +Clazz_defineMethod(c$, "lookingAtBitset", +function(){ +if (this.script.indexOf("({null})", this.ichToken) == this.ichToken) { +this.cchToken = 8; +return new JU.BS(); +}var ichT; +if (this.ichToken + 4 > this.cchScript || this.script.charAt(this.ichToken + 1) != '{' || (ichT = this.script.indexOf("}", this.ichToken)) < 0 || ichT + 1 == this.cchScript) return null; +var bs = JU.BS.unescape(this.script.substring(this.ichToken, ichT + 2)); +if (bs != null) this.cchToken = ichT + 2 - this.ichToken; +return bs; +}); +Clazz_defineMethod(c$, "lookingAtObjectID", +function(){ +var allowWildID = (this.nTokens == 1); +var ichT = this.ichToken; +if (this.charAt(ichT) != '$') return false; +if (this.charAt(++ichT) == '"') return false; +while (ichT < this.cchScript) { +var ch; +if (JU.PT.isWhitespace(ch = this.script.charAt(ichT))) { +if (ichT == this.ichToken + 1) return false; +break; +}if (!JU.PT.isLetterOrDigit(ch)) { +switch ((ch).charCodeAt(0)) { +default: +return false; +case 42: +if (!allowWildID) return false; +break; +case 126: +case 95: +break; +} +}ichT++; +} +this.cchToken = ichT - (++this.ichToken); +return true; +}); +Clazz_defineMethod(c$, "lookingAtLookupToken", +function(ichT){ +if (ichT == this.cchScript) return false; +var ichT0 = ichT; +this.afterMath = (this.tokLastMath != 0 ? ichT : 0); +this.tokLastMath = 0; +var ch; +switch ((ch = this.script.charAt(ichT++)).charCodeAt(0)) { +case 45: +case 43: +case 38: +case 124: +case 42: +if (ichT < this.cchScript) { +if (this.script.charAt(ichT) == ch) { +++ichT; +if (ch == '-' || ch == '+') break; +if (ch == '&' && this.charAt(ichT) == ch) ++ichT; +} else if (this.script.charAt(ichT) == '=') { +++ichT; +}}this.tokLastMath = 1; +break; +case 47: +if (this.charAt(ichT) == '/') break; +case 92: +case 33: +if (this.charAt(ichT) == '=') ++ichT; +this.tokLastMath = 1; +break; +case 41: +case 93: +case 125: +break; +case 46: +if (this.charAt(ichT) == '.') ++ichT; +this.tokLastMath = 1; +break; +case 64: +case 123: +this.tokLastMath = 2; +break; +case 58: +this.tokLastMath = 1; +break; +case 40: +case 44: +case 36: +case 59: +case 91: +case 37: +this.tokLastMath = 1; +break; +case 60: +case 61: +case 62: +if ((ch = this.charAt(ichT)) == '<' || ch == '=' || ch == '>') ++ichT; +this.tokLastMath = 1; +break; +default: +if (!JU.PT.isLetter(ch) && !this.isDotDot) return false; +case 126: +case 95: +case 39: +case 63: +if (ch == '?') this.tokLastMath = 1; +while (JU.PT.isLetterOrDigit(ch = this.charAt(ichT)) || ch == '_' || ch == '*' && this.charAt(ichT - 1) == '?' || ch == '?' || ch == '~' || ch == '\'' || ch == '\\' && this.charAt(ichT + 1) == '?' || ch == '^' && ichT > ichT0 && JU.PT.isDigit(this.charAt(ichT - 1))) ++ichT; + +break; +} +this.cchToken = ichT - ichT0; +return true; +}, "~N"); +Clazz_defineMethod(c$, "lookForSyncID", +function(){ +var ch; +if ((ch = this.charAt(this.ichToken)) == '"' || ch == '@' || ch == '\0') return false; +var ichT = this.ichToken; +while (!JS.ScriptCompiler.isSpaceOrTab(ch = this.charAt(ichT)) && ch != '#' && ch != '}' && !this.eol(ch)) ++ichT; + +this.cchToken = ichT - this.ichToken; +return true; +}); +Clazz_defineMethod(c$, "ERROR", +function(error){ +this.errorIntStr2(error, null, null); +return 4; +}, "~N"); +Clazz_defineMethod(c$, "ERROR", +function(error, value){ +this.errorStr(error, value); +return 4; +}, "~N,~S"); +Clazz_defineMethod(c$, "handleError", +function(){ +this.errorType = this.errorMessage; +var s = this.script; +var igui = s.indexOf("; ## GUI ##"); +if (igui < 0) igui = this.ichEnd; +this.errorLine = s.substring(this.ichCurrentCommand, Math.min(igui, this.ichEnd <= this.ichCurrentCommand ? this.ichToken + this.cchToken : this.ichEnd)); +var lineInfo = (this.ichToken < this.ichEnd ? this.errorLine.substring(0, this.ichToken - this.ichCurrentCommand) + " >>>> " + this.errorLine.substring(this.ichToken - this.ichCurrentCommand) : this.errorLine) + " <<<<"; +this.errorMessage = J.i18n.GT.$("script compiler ERROR: ") + this.errorMessage + JS.ScriptError.getErrorLineMessage(null, this.filename, this.lineCurrent, this.iCommand, lineInfo); +if (!this.isSilent) { +this.ichToken = Math.max(this.ichEnd, this.ichToken); +while (!this.lookingAtEndOfLine() && !this.lookingAtTerminator()) this.ichToken++; + +this.errorLine = this.script.substring(this.ichCurrentCommand, this.ichToken); +this.vwr.addCommand(this.errorLine + "#??"); +JU.Logger.error(this.errorMessage); +}return false; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["J.thread.JmolThread"], "JS.ScriptDelayThread", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.millis = 0; +this.seconds = 0; +this.doPopPush = false; +this.isPauseDelay = false; +Clazz_instantialize(this, arguments);}, JS, "ScriptDelayThread", J.thread.JmolThread); +Clazz_makeConstructor(c$, +function(eval, vwr, millis){ +Clazz_superConstructor (this, JS.ScriptDelayThread, []); +this.setViewer(vwr, "ScriptDelayThread"); +this.millis = millis; +this.setEval(eval); +}, "J.api.JmolScriptEvaluator,JV.Viewer,~N"); +Clazz_overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +var delayMax; +this.doPopPush = (this.millis > 0); +this.isPauseDelay = (this.millis == -100); +if (!this.doPopPush) this.millis = -this.millis; + else if ((delayMax = this.vwr.getDelayMaximumMs()) > 0 && this.millis > delayMax) this.millis = delayMax; +this.millis -= System.currentTimeMillis() - this.startTime; +if (this.isJS) { +this.seconds = 0; +} else { +this.seconds = Clazz_doubleToInt(this.millis / 1000); +this.millis -= this.seconds * 1000; +if (this.millis <= 0) this.millis = 1; +}if (this.doPopPush) this.vwr.popHoldRepaint("scriptDelayThread INIT"); +mode = 0; +break; +case 0: +if (this.stopped || this.eval.isStopped()) { +mode = -2; +break; +}if (!this.runSleep(this.seconds-- > 0 ? 1000 : this.millis, -2)) return; +if (this.seconds < 0) this.millis = 0; +mode = (this.seconds > 0 || this.millis > 0 ? 0 : -2); +break; +case -2: +if (this.doPopPush) this.vwr.pushHoldRepaintWhy("delay FINISH"); +if (this.isPauseDelay) this.eval.notifyResumeStatus(); +this.resumeEval(); +return; +} + +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["J.api.JmolScriptEvaluator"], "JS.ScriptError", ["JU.PT", "J.i18n.GT", "JS.ScriptException"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.chk = false; +this.ignoreError = false; +this.$error = false; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorType = null; +this.iCommandError = 0; +Clazz_instantialize(this, arguments);}, JS, "ScriptError", null, J.api.JmolScriptEvaluator); +Clazz_overrideMethod(c$, "getErrorMessage", +function(){ +return this.errorMessage; +}); +Clazz_overrideMethod(c$, "getErrorMessageUntranslated", +function(){ +return this.errorMessageUntranslated == null ? this.errorMessage : this.errorMessageUntranslated; +}); +Clazz_defineMethod(c$, "invArg", +function(){ +this.error(22); +}); +Clazz_defineMethod(c$, "invArgStr", +function(msg){ +this.errorOrWarn(22, msg, null, null, false); +}, "~S"); +Clazz_defineMethod(c$, "bad", +function(){ +this.error(2); +}); +Clazz_defineMethod(c$, "integerOutOfRange", +function(min, max){ +this.errorOrWarn(21, "" + min, "" + max, null, true); +}, "~N,~N"); +Clazz_defineMethod(c$, "numberOutOfRange", +function(min, max){ +this.errorOrWarn(36, "" + min, "" + max, null, true); +}, "~N,~N"); +Clazz_defineMethod(c$, "error", +function(iError){ +this.errorOrWarn(iError, null, null, null, false); +}, "~N"); +Clazz_defineMethod(c$, "errorStr", +function(iError, value){ +this.errorOrWarn(iError, value, null, null, false); +}, "~N,~S"); +Clazz_defineMethod(c$, "errorStr2", +function(iError, value, more){ +this.errorOrWarn(iError, value, more, null, false); +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "errorMore", +function(iError, value, more, more2){ +this.errorOrWarn(iError, value, more, more2, false); +}, "~N,~S,~S,~S"); +Clazz_defineMethod(c$, "warning", +function(iError, value, more){ +this.errorOrWarn(iError, value, more, null, true); +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "errorOrWarn", +function(iError, value, more, more2, warningOnly){ +var strError = (this.ignoreError ? null : JS.ScriptError.errorString(iError, value, more, more2, true)); +var strUntranslated = (this.ignoreError || !J.i18n.GT.getDoTranslate() ? null : JS.ScriptError.errorString(iError, value, more, more2, false)); +if (!warningOnly) this.evalError(strError, strUntranslated); +this.showStringPrint(strError, true); +}, "~N,~S,~S,~S,~B"); +Clazz_defineMethod(c$, "evalError", +function(message, strUntranslated){ +if (this.ignoreError) throw new NullPointerException(); +if (strUntranslated == null) strUntranslated = message; +if (!this.chk) { +this.setCursorWait(false); +this.vwr.setBooleanProperty("refreshing", true); +this.vwr.setStringProperty("_errormessage", strUntranslated); +}throw new JS.ScriptException(this, message, strUntranslated, true); +}, "~S,~S"); +Clazz_defineMethod(c$, "setCursorWait", +function(TF){ +if (!this.chk) this.vwr.setCursor(TF ? 3 : 0); +}, "~B"); +c$.errorString = Clazz_defineMethod(c$, "errorString", +function(iError, value, more, more2, translated){ +var doTranslate = false; +if (!translated && (doTranslate = J.i18n.GT.getDoTranslate()) == true) J.i18n.GT.setDoTranslate(false); +var msg; +switch (iError) { +default: +msg = "Unknown error message number: " + iError; +break; +case 0: +msg = J.i18n.GT.$("x y z axis expected"); +break; +case 1: +msg = J.i18n.GT.$("{0} not allowed with background model displayed"); +break; +case 2: +msg = J.i18n.GT.$("bad argument count"); +break; +case 3: +msg = J.i18n.GT.$("Miller indices cannot all be zero."); +break; +case 4: +msg = J.i18n.GT.$("bad [R,G,B] color"); +break; +case 5: +msg = J.i18n.GT.$("boolean expected"); +break; +case 6: +msg = J.i18n.GT.$("boolean or number expected"); +break; +case 7: +msg = J.i18n.GT.$("boolean, number, or {0} expected"); +break; +case 56: +msg = J.i18n.GT.$("cannot set value"); +break; +case 8: +msg = J.i18n.GT.$("color expected"); +break; +case 9: +msg = J.i18n.GT.$("a color or palette name (Jmol, Rasmol) is required"); +break; +case 10: +msg = J.i18n.GT.$("command expected"); +break; +case 11: +msg = J.i18n.GT.$("{x y z} or $name or (atom expression) required"); +break; +case 12: +msg = J.i18n.GT.$("draw object not defined"); +break; +case 13: +msg = J.i18n.GT.$("unexpected end of script command"); +break; +case 14: +msg = J.i18n.GT.$("valid (atom expression) expected"); +break; +case 15: +msg = J.i18n.GT.$("(atom expression) or integer expected"); +break; +case 16: +msg = J.i18n.GT.$("filename expected"); +break; +case 17: +msg = J.i18n.GT.$("file not found"); +break; +case 18: +msg = J.i18n.GT.$("incompatible arguments"); +break; +case 19: +msg = J.i18n.GT.$("insufficient arguments"); +break; +case 20: +msg = J.i18n.GT.$("integer expected"); +break; +case 21: +msg = J.i18n.GT.$("integer out of range ({0} - {1})"); +break; +case 22: +msg = J.i18n.GT.$("invalid argument"); +break; +case 23: +msg = J.i18n.GT.$("invalid parameter order"); +break; +case 24: +msg = J.i18n.GT.$("keyword expected"); +break; +case 25: +msg = J.i18n.GT.$("no MO coefficient data available"); +break; +case 26: +msg = J.i18n.GT.$("An MO index from 1 to {0} is required"); +break; +case 27: +msg = J.i18n.GT.$("no MO basis/coefficient data available for this frame"); +break; +case 28: +msg = J.i18n.GT.$("no MO occupancy data available"); +break; +case 29: +msg = J.i18n.GT.$("Only one molecular orbital is available in this file"); +break; +case 30: +msg = J.i18n.GT.$("{0} requires that only one model be displayed"); +break; +case 55: +msg = J.i18n.GT.$("{0} requires that only one model be loaded"); +break; +case 31: +msg = J.i18n.GT.$("No data available"); +break; +case 32: +msg = J.i18n.GT.$("No partial charges were read from the file; Jmol needs these to render the MEP data."); +break; +case 33: +msg = J.i18n.GT.$("No unit cell"); +break; +case 34: +msg = J.i18n.GT.$("number expected"); +break; +case 35: +msg = J.i18n.GT.$("number must be ({0} or {1})"); +break; +case 36: +msg = J.i18n.GT.$("decimal number out of range ({0} - {1})"); +break; +case 57: +msg = J.i18n.GT.$("operation canceled"); +break; +case 37: +msg = J.i18n.GT.$("object name expected after '$'"); +break; +case 38: +msg = J.i18n.GT.$("plane expected -- either three points or atom expressions or {0} or {1} or {2}"); +break; +case 39: +msg = J.i18n.GT.$("property name expected"); +break; +case 40: +msg = J.i18n.GT.$("space group {0} was not found."); +break; +case 41: +msg = J.i18n.GT.$("quoted string expected"); +break; +case 42: +msg = J.i18n.GT.$("quoted string or identifier expected"); +break; +case 43: +msg = J.i18n.GT.$("too many rotation points were specified"); +break; +case 44: +msg = J.i18n.GT.$("too many script levels"); +break; +case 45: +msg = J.i18n.GT.$("unrecognized atom property"); +break; +case 46: +msg = J.i18n.GT.$("unrecognized bond property"); +break; +case 47: +msg = J.i18n.GT.$("unrecognized command"); +break; +case 48: +msg = J.i18n.GT.$("runtime unrecognized expression"); +break; +case 49: +msg = J.i18n.GT.$("unrecognized object"); +break; +case 50: +msg = J.i18n.GT.$("unrecognized {0} parameter"); +break; +case 51: +msg = J.i18n.GT.$("unrecognized {0} parameter in Jmol state script (set anyway)"); +break; +case 52: +msg = J.i18n.GT.$("unrecognized SHOW parameter -- use {0}"); +break; +case 53: +msg = "{0}"; +break; +case 54: +msg = J.i18n.GT.$("write what? {0} or {1} \"filename\""); +break; +} +if (msg.indexOf("{0}") < 0) { +if (value != null) msg += ": " + value; +} else { +msg = JU.PT.rep(msg, "{0}", value); +if (msg.indexOf("{1}") >= 0) msg = JU.PT.rep(msg, "{1}", more); + else if (more != null) msg += ": " + more; +if (msg.indexOf("{2}") >= 0) msg = JU.PT.rep(msg, "{2}", more); +}if (doTranslate) J.i18n.GT.setDoTranslate(true); +return msg; +}, "~N,~S,~S,~S,~B"); +c$.getErrorLineMessage = Clazz_defineMethod(c$, "getErrorLineMessage", +function(functionName, filename, lineCurrent, pcCurrent, lineInfo){ +var err = "\n----"; +if (filename != null || functionName != null) err += "line " + lineCurrent + " command " + (pcCurrent + 1) + " of " + (functionName == null ? filename : functionName.equals("try") ? "try" : "function " + functionName) + ":"; +err += "\n " + lineInfo; +return err; +}, "~S,~S,~N,~N,~S"); +Clazz_defineMethod(c$, "setErrorMessage", +function(err){ +this.errorMessageUntranslated = null; +if (err == null) { +this.$error = false; +this.errorType = null; +this.errorMessage = null; +this.iCommandError = -1; +return; +}this.$error = true; +if (this.errorMessage == null) this.errorMessage = J.i18n.GT.$("script ERROR: "); +this.errorMessage += err; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.ScriptExpr"], "JS.ScriptEval", ["java.util.Arrays", "$.Hashtable", "JU.AU", "$.BArray", "$.BS", "$.Base64", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.c.PAL", "$.STR", "$.VDW", "J.i18n.GT", "JM.BondSet", "$.Group", "$.Measurement", "JS.FileLoadThread", "$.SV", "$.ScriptCompiler", "$.ScriptContext", "$.ScriptDelayThread", "$.ScriptInterruption", "$.ScriptManager", "$.ScriptMathProcessor", "$.T", "JU.BSUtil", "$.ColorEncoder", "$.Edge", "$.Elements", "$.Escape", "$.Font", "$.Logger", "$.Parser", "$.SimpleUnitCell", "JV.ActionManager", "$.FileManager", "$.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sm = null; +this.isJS = false; +this.scriptDelayThread = null; +this.fileLoadThread = null; +this.allowJSThreads = true; +this.isFuncReturn = false; +this.historyDisabled = false; +this.debugScript = false; +this.isCmdLine_C_Option = false; +this.isCmdLine_c_or_C_Option = false; +this.listCommands = false; +this.tQuiet = false; +this.executionStopped = false; +this.executionPaused = false; +this.executionStepping = false; +this.executing = false; +this.isEditor = false; +this.timeBeginExecution = 0; +this.timeEndExecution = 0; +this.mustResumeEval = false; +this.currentThread = null; +this.compiler = null; +this.outputBuffer = null; +this.contextPath = ""; +this.scriptFileName = null; +this.functionName = null; +this.$isStateScript = false; +this.scriptLevel = 0; +this.aatoken = null; +this.lineNumbers = null; +this.lineIndices = null; +this.script = null; +this.scriptExtensions = null; +this.pc = 0; +this.thisCommand = null; +this.fullCommand = null; +this.lineEnd = 0; +this.pcEnd = 0; +this.forceNoAddHydrogens = false; +this.isEmbedded = false; +this.isGUI = false; +this.parallelProcessor = null; +this.pcResume = -1; +Clazz_instantialize(this, arguments);}, JS, "ScriptEval", JS.ScriptExpr); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JS.ScriptEval, []); +this.currentThread = Thread.currentThread(); +}); +Clazz_overrideMethod(c$, "getAllowJSThreads", +function(){ +return this.allowJSThreads; +}); +Clazz_defineMethod(c$, "setAllowJSThreads", +function(b){ +this.allowJSThreads = b; +}, "~B"); +Clazz_defineMethod(c$, "doReport", +function(){ +return (!this.tQuiet && this.scriptLevel <= JS.ScriptEval.scriptReportingLevel); +}); +Clazz_overrideMethod(c$, "isStateScript", +function(){ +return this.$isStateScript; +}); +Clazz_overrideMethod(c$, "setStatic", +function(tok, ival){ +switch (tok) { +case 553648167: +if (ival >= 10) JS.ScriptEval.contextDepthMax = ival; +return JS.ScriptEval.contextDepthMax; +case 553648144: +if (ival >= 0) JS.ScriptEval.commandHistoryLevelMax = ival; +return JS.ScriptEval.commandHistoryLevelMax; +case 553648168: +if (ival >= 0) JS.ScriptEval.scriptReportingLevel = ival; +return JS.ScriptEval.scriptReportingLevel; +} +return 0; +}, "~N,~N"); +Clazz_overrideMethod(c$, "getScript", +function(){ +return this.script; +}); +Clazz_overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +this.compiler = (this.compiler == null ? vwr.compiler : this.compiler); +this.isJS = vwr.isSingleThreaded; +return this; +}, "JV.Viewer"); +Clazz_overrideMethod(c$, "setCompiler", +function(){ +this.vwr.compiler = this.compiler = new JS.ScriptCompiler(this.vwr); +}); +Clazz_overrideMethod(c$, "compileScriptString", +function(script, tQuiet){ +this.clearState(tQuiet); +this.contextPath = "[script]"; +return this.compileScript(null, script, this.debugScript); +}, "~S,~B"); +Clazz_overrideMethod(c$, "compileScriptFile", +function(filename, tQuiet){ +this.clearState(tQuiet); +this.contextPath = filename; +var script = this.getScriptFileInternal(filename, null, null, null); +return (script != null && this.compileScript(filename, script, this.debugScript)); +}, "~S,~B"); +Clazz_overrideMethod(c$, "evaluateCompiledScript", +function(params, isCmdLine_c_or_C_Option, isCmdLine_C_Option, historyDisabled, listCommands, outputBuffer, allowThreads){ +var tempOpen = this.isCmdLine_C_Option; +this.isCmdLine_C_Option = isCmdLine_C_Option; +this.chk = this.isCmdLine_c_or_C_Option = isCmdLine_c_or_C_Option; +this.historyDisabled = historyDisabled; +this.outputBuffer = outputBuffer; +this.privateFuncs = null; +this.currentThread = Thread.currentThread(); +this.setAllowJSThreads( new Boolean (allowThreads & !this.vwr.getBoolean(603979892)).valueOf()); +this.listCommands = listCommands; +this.timeBeginExecution = System.currentTimeMillis(); +this.executionStopped = this.executionPaused = false; +this.executionStepping = false; +this.executing = true; +this.vwr.pushHoldRepaintWhy("runEval" + (params == null ? "" : "+params")); +this.setScriptExtensions(); +this.vwr.hasSelected = false; +this.executeCommands(params, false, true); +this.isCmdLine_C_Option = tempOpen; +if (this.$isStateScript) JS.ScriptManager.setStateScriptVersion(this.vwr, null); +if (this.vwr.hasSelected && this.isGUI) this.vwr.setStatusSelect(null); +this.vwr.hasSelected = false; +}, "~A,~B,~B,~B,~B,JU.SB,~B"); +Clazz_defineMethod(c$, "useThreads", +function(){ +return (!this.chk && !this.vwr.headless && !this.vwr.autoExit && this.vwr.haveDisplay && this.outputBuffer == null && this.allowJSThreads); +}); +Clazz_defineMethod(c$, "executeCommands", +function(params, isTry, reportCompletion){ +var haveError = false; +try { +if (params != null) { +this.pushContext(null, "runCallback"); +this.contextPath += " >> " + params[0] + "callback "; +this.setScriptArguments(params, true); +}if (!this.dispatchCommands(false, false, isTry)) return -1; +if (params != null) { +this.popContext(false, false); +}} catch (e$$) { +if (Clazz_exceptionOf(e$$,"JS.ScriptException")){ +var e = e$$; +{ +if (Clazz_instanceOf(e,"JS.ScriptInterruption") && (!isTry || !e.isError)) { +return -1; +}if (isTry) { +this.vwr.setStringProperty("_errormessage", "" + e); +return 1; +}this.setErrorMessage(e.toString()); +this.errorMessageUntranslated = e.getErrorMessageUntranslated(); +this.report(this.errorMessage, true); +this.vwr.notifyError((this.errorMessage != null && this.errorMessage.indexOf("java.lang.OutOfMemoryError") >= 0 ? "Error" : "ScriptException"), this.errorMessage, this.errorMessageUntranslated); +haveError = true; +} +} else { +var er = e$$; +{ +this.vwr.handleError(er, false); +this.setErrorMessage("" + er + " " + this.vwr.getShapeErrorState()); +this.errorMessageUntranslated = "" + er; +this.report(this.errorMessage, true); +haveError = true; +} +} +} +if (haveError || !this.isJS || !this.allowJSThreads || params != null) { +this.vwr.setTainted(true); +this.vwr.popHoldRepaint("CLEAR HOLD - executeCommands" + " " + (this.scriptLevel > 0 ? "\u0001## REPAINT_IGNORE ##" : "")); +if (haveError) this.resumeViewer("exception", true); +}this.timeEndExecution = System.currentTimeMillis(); +if (this.errorMessage == null && this.executionStopped) this.setErrorMessage("execution interrupted"); + else if (!this.tQuiet && reportCompletion) this.vwr.scriptStatus("Script completed"); +this.executing = this.chk = this.isCmdLine_c_or_C_Option = this.historyDisabled = false; +var msg = this.getErrorMessageUntranslated(); +this.vwr.setErrorMessage(this.errorMessage, msg); +if (!this.tQuiet && reportCompletion) this.vwr.setScriptStatus("Jmol script terminated", this.errorMessage, 1 + (this.timeEndExecution - this.timeBeginExecution), msg); +return (haveError ? 1 : 0); +}, "~A,~B,~B"); +Clazz_overrideMethod(c$, "resumeEval", +function(sco){ +var sc = sco; +this.setErrorMessage(null); +if (this.executionStopped || sc == null || !sc.mustResumeEval) { +this.resumeViewer("resumeEval", this.executionStopped); +return; +}this.thisContext = sc; +if (sc.scriptLevel > 0 && sc.why !== "getEvalContextAndHoldQueue") this.scriptLevel = sc.scriptLevel - 1; +if (sc.isTryCatch) { +this.postProcessTry(null); +this.pcResume = -1; +} else { +if (!this.executionPaused) sc.pc++; +this.restoreScriptContext(sc, true, false, false); +this.pcResume = sc.pc; +}switch (this.executeCommands(null, this.thisContext != null && this.thisContext.isTryCatch, this.scriptLevel <= 0)) { +case -1: +break; +case 1: +case 0: +this.postProcessTry(null); +if (this.executing) this.executeCommands(null, true, false); +break; +} +this.pcResume = -1; +}, "~O"); +Clazz_defineMethod(c$, "resumeViewer", +function(why, andStopQueue){ +this.vwr.setTainted(true); +this.vwr.popHoldRepaint(why + (this.chk ? "\u0001## REPAINT_IGNORE ##" : "")); +this.vwr.queueOnHold = false; +if (andStopQueue) { +this.vwr.clearScriptQueue(); +this.vwr.scm.queueThreadFinished(-1); +}}, "~S,~B"); +Clazz_overrideMethod(c$, "runScript", +function(script){ +if (!this.vwr.isPreviewOnly) this.runScriptBuffer(script, this.outputBuffer, false); +}, "~S"); +Clazz_overrideMethod(c$, "runScriptBuffer", +function(script, outputBuffer, isFuncReturn){ +this.pushContext(null, "runScriptBuffer"); +this.contextPath += " >> script() "; +this.outputBuffer = outputBuffer; +this.setAllowJSThreads(false); +var fret = this.isFuncReturn; +this.isFuncReturn = new Boolean (this.isFuncReturn | isFuncReturn).valueOf(); +if (this.compileScript(null, script + "\u0001## EDITOR_IGNORE ##" + "\u0001## REPAINT_IGNORE ##", false)) this.dispatchCommands(false, false, false); +this.popContext(false, false); +this.isFuncReturn = fret; +}, "~S,JU.SB,~B"); +Clazz_overrideMethod(c$, "checkScriptSilent", +function(script){ +var sc = this.compiler.compile(null, script, false, true, false, true); +if (sc.errorType != null) return sc; +this.restoreScriptContext(sc, false, false, false); +this.chk = true; +this.isCmdLine_c_or_C_Option = this.isCmdLine_C_Option = false; +this.pc = 0; +try { +this.dispatchCommands(false, false, false); +} catch (e) { +if (Clazz_exceptionOf(e,"JS.ScriptException")){ +this.setErrorMessage(e.toString()); +sc = this.getScriptContext("checkScriptSilent"); +} else { +throw e; +} +} +this.chk = false; +return sc; +}, "~S"); +c$.getContextTrace = Clazz_defineMethod(c$, "getContextTrace", +function(vwr, sc, sb, isTop){ +if (sb == null) sb = new JU.SB(); +if (sc.lineNumbers == null) System.out.println(sc); +var pc = Math.min(sc.pc, (sc.lineNumbers == null ? sc.pc : sc.lineNumbers[sc.lineNumbers.length - 1])); +sb.append(JS.ScriptError.getErrorLineMessage(sc.functionName, sc.scriptFileName, sc.lineNumbers[pc], pc, JS.ScriptEval.statementAsString(vwr, sc.statement, (isTop ? sc.iToken : 9999), false))); +if (sc.parentContext != null) JS.ScriptEval.getContextTrace(vwr, sc.parentContext, sb, false); +return sb; +}, "JV.Viewer,JS.ScriptContext,JU.SB,~B"); +Clazz_overrideMethod(c$, "setDebugging", +function(){ +this.debugScript = this.vwr.getBoolean(603979825); +this.debugHigh = (this.debugScript && JU.Logger.debugging); +}); +Clazz_overrideMethod(c$, "haltExecution", +function(){ +if (this.isEmbedded) { +this.vwr.setBooleanProperty("allowEmbeddedScripts", true); +this.isEmbedded = false; +}this.resumePausedExecution(); +this.executionStopped = true; +}); +Clazz_overrideMethod(c$, "pauseExecution", +function(withDelay){ +if (this.chk || this.vwr.headless) return; +if (withDelay && !this.isJS) this.delayScript(-100); +this.vwr.popHoldRepaint("pauseExecution " + withDelay); +this.executionStepping = false; +this.executionPaused = true; +}, "~B"); +Clazz_overrideMethod(c$, "stepPausedExecution", +function(){ +this.executionStepping = true; +this.executionPaused = false; +}); +Clazz_overrideMethod(c$, "resumePausedExecution", +function(){ +this.executionPaused = false; +this.executionStepping = false; +if (!this.tQuiet) this.vwr.setScriptStatus("Jmol script resumed", this.errorMessage, 1 + (this.timeEndExecution - this.timeBeginExecution), "resumed"); +}); +Clazz_overrideMethod(c$, "isExecuting", +function(){ +return this.executing && !this.executionStopped; +}); +Clazz_overrideMethod(c$, "isPaused", +function(){ +return this.executionPaused; +}); +Clazz_overrideMethod(c$, "isStepping", +function(){ +return this.executionStepping; +}); +Clazz_overrideMethod(c$, "isStopped", +function(){ +return this.executionStopped || !this.isJS && this.currentThread !== Thread.currentThread(); +}); +Clazz_overrideMethod(c$, "getNextStatement", +function(){ +return (this.pc < this.aatoken.length ? JS.ScriptError.getErrorLineMessage(this.functionName, this.scriptFileName, this.getLinenumber(null), this.pc, JS.ScriptEval.statementAsString(this.vwr, this.aatoken[this.pc], -9999, this.debugHigh)) : ""); +}); +Clazz_defineMethod(c$, "getCommand", +function(pc, allThisLine, addSemi){ +if (pc >= this.lineIndices.length) return ""; +if (allThisLine) { +var pt0 = -1; +var s = this.script; +var pt1 = s.length; +for (var i = 0; i < this.lineNumbers.length; i++) { +if (this.lineNumbers[i] == this.lineNumbers[pc]) { +if (pt0 < 0) pt0 = this.lineIndices[i][0]; +pt1 = this.lineIndices[i][1]; +} else if (this.lineNumbers[i] == 0 || this.lineNumbers[i] > this.lineNumbers[pc]) { +break; +}} +if (s.indexOf('\1') >= 0) s = s.substring(0, s.indexOf('\1')); +var len = s.length; +if (pt1 == len - 1 && s.endsWith("}")) pt1++; +return (pt0 >= len || pt1 < pt0 || pt1 < 0 ? "" : s.substring(Math.max(pt0, 0), Math.min(len, pt1))); +}var ichBegin = this.lineIndices[pc][0]; +var ichEnd = this.lineIndices[pc][1]; +var s = ""; +if (ichBegin < 0 || ichEnd <= ichBegin || ichEnd > this.script.length) return ""; +try { +s = this.script.substring(ichBegin, ichEnd); +if (s.indexOf("\\\n") >= 0) s = JU.PT.rep(s, "\\\n", " "); +if (s.indexOf("\\\r") >= 0) s = JU.PT.rep(s, "\\\r", " "); +if (s.length > 0 && !s.endsWith(";")) s += ";"; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("darn problem in Eval getCommand: ichBegin=" + ichBegin + " ichEnd=" + ichEnd + " len = " + this.script.length + "\n" + e); +} else { +throw e; +} +} +return s; +}, "~N,~B,~B"); +Clazz_defineMethod(c$, "logDebugScript", +function(st, ifLevel){ +var itok = this.iToken; +this.iToken = -9999; +if (this.debugHigh) { +if (st.length > 0) JU.Logger.debug(st[0].toString()); +for (var i = 1; i < st.length; ++i) if (st[i] != null) JU.Logger.debug(st[i].toString()); + +var strbufLog = new JU.SB(); +var s = (ifLevel > 0 ? " ".substring(0, ifLevel * 2) : ""); +strbufLog.append(s).append(JS.ScriptEval.statementAsString(this.vwr, st, this.iToken, this.debugHigh)); +this.vwr.scriptStatus(strbufLog.toString()); +} else { +var cmd = this.getCommand(this.pc, false, false); +if (cmd !== "") this.vwr.scriptStatus(cmd); +}this.iToken = itok; +}, "~A,~N"); +Clazz_overrideMethod(c$, "evaluateExpression", +function(expr, asVariable, compileOnly){ +var e = ( new JS.ScriptEval()).setViewer(this.vwr); +try { +e.thisContext = this.thisContext; +e.contextVariables = this.contextVariables; +e.pushContext(null, "evalExp"); +e.setAllowJSThreads(false); +} catch (e1) { +if (Clazz_exceptionOf(e1,"JS.ScriptException")){ +} else { +throw e1; +} +} +var exec0 = this.executing; +var o = (e.evaluate(expr, asVariable, compileOnly)); +this.executing = exec0; +return o; +}, "~O,~B,~B"); +Clazz_defineMethod(c$, "runBufferedSafely", +function(script, outputBuffer){ +if (outputBuffer == null) outputBuffer = this.outputBuffer; +var e = ( new JS.ScriptEval()).setViewer(this.vwr); +var exec0 = this.executing; +try { +e.runScriptBuffer(script, outputBuffer, false); +} catch (e1) { +if (Clazz_exceptionOf(e1,"JS.ScriptException")){ +e1.printStackTrace(); +} else { +throw e1; +} +} +this.executing = exec0; +}, "~S,JU.SB"); +c$.runUserAction = Clazz_defineMethod(c$, "runUserAction", +function(functionName, params, vwr){ +var ev = ( new JS.ScriptEval()).setViewer(vwr); +var func = vwr.getFunction(functionName.toLowerCase()); +if (func == null) return null; +try { +var svparams = JS.SV.getVariableAO(params).getList(); +ev.restoreFunction(func, svparams, null); +ev.dispatchCommands(false, true, false); +} catch (e) { +if (Clazz_exceptionOf(e,"JS.ScriptException")){ +return null; +} else { +throw e; +} +} +var ret = ev.getContextVariableAsVariable("_retval", false); +return (ret == null ? JS.SV.vT : ret); +}, "~S,~A,JV.Viewer"); +Clazz_defineMethod(c$, "evaluate", +function(expr, asVariable, compileOnly){ +try { +if ((typeof(expr)=='string')) { +if (this.compileScript(null, (compileOnly ? "w_h_e_r_e" : "e_x_p_r_e_s_s_i_o_n") + " = " + expr, false)) { +if (compileOnly) return this.aatoken[0]; +this.setStatement(this.aatoken[0], 1); +return (asVariable ? this.parameterExpressionList(2, -1, false).get(0) : this.parameterExpressionString(2, 0)); +}} else if (Clazz_instanceOf(expr,Array) && Clazz_instanceOf((expr)[0],Array)) { +this.setStatement((expr)[0], 1); +return (asVariable ? this.parameterExpressionList(0, -1, false).get(0) : this.parameterExpressionString(0, -1)); +} else if (Clazz_instanceOf(expr,Array)) { +var bs = this.atomExpression(expr, 0, 0, true, false, null, false); +return (asVariable ? JS.SV.newV(10, bs) : bs); +}} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +JU.Logger.error("Error evaluating: " + expr + "\n" + ex); +} else { +throw ex; +} +} +return (asVariable ? JS.SV.getVariable("ERROR") : "ERROR"); +}, "~O,~B,~B"); +Clazz_overrideMethod(c$, "checkSelect", +function(h, where){ +var ok = false; +try { +this.pushContext(null, "checkSelect"); +ok = this.parameterExpressionSelect(h, where); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +JU.Logger.error("checkSelect " + ex); +} else { +throw ex; +} +} +this.popContext(false, false); +return ok; +}, "java.util.Map,~A"); +Clazz_overrideMethod(c$, "getAtomBitSet", +function(atomExpression){ +if (Clazz_instanceOf(atomExpression,"JU.BS")) return atomExpression; +var bs = new JU.BS(); +var executing = this.executing; +try { +this.pushContext(null, "getAtomBitSet"); +var scr = "select (" + atomExpression + ")"; +scr = JU.PT.replaceAllCharacters(scr, "\n\r", "),("); +scr = JU.PT.rep(scr, "()", "(none)"); +if (this.compileScript(null, scr, false)) { +this.st = this.aatoken[0]; +this.setStatement(this.st, 0); +bs = this.atomExpression(this.st, 1, 0, false, false, null, true); +}this.popContext(false, false); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +JU.Logger.error("getAtomBitSet " + atomExpression + "\n" + ex); +} else { +throw ex; +} +} +this.executing = executing; +return bs; +}, "~O"); +Clazz_defineMethod(c$, "compileScript", +function(filename, strScript, debugCompiler){ +this.scriptFileName = filename; +strScript = this.fixScriptPath(strScript, filename); +var sc = this.compiler.compile(filename, strScript, false, false, debugCompiler && JU.Logger.debugging, false); +this.addFunction(null); +var pf = this.privateFuncs; +this.restoreScriptContext(sc, false, false, false); +this.privateFuncs = null; +if (this.thisContext != null) this.thisContext.privateFuncs = pf; +this.$isStateScript = this.compiler.isStateScript; +this.forceNoAddHydrogens = (this.$isStateScript && this.script.indexOf("pdbAddHydrogens") < 0); +var s = this.script; +this.isGUI = (s.indexOf("; ## GUI ##") >= 0); +if (this.isGUI) { +s = JU.PT.rep(s, "; ## GUI ##", ""); +}this.pc = this.setScriptExtensions(); +if (!this.chk && this.vwr.scriptEditorVisible && strScript.indexOf("\u0001## EDITOR_IGNORE ##") < 0) this.vwr.scriptStatus(""); +this.script = s; +return !this.$error; +}, "~S,~S,~B"); +Clazz_defineMethod(c$, "fixScriptPath", +function(strScript, filename){ +if (filename != null && strScript.indexOf("$SCRIPT_PATH$") >= 0) { +var path = filename; +var pt = Math.max(filename.lastIndexOf("|"), filename.lastIndexOf("/")); +path = path.substring(0, pt + 1); +strScript = JU.PT.rep(strScript, "$SCRIPT_PATH$/", path); +strScript = JU.PT.rep(strScript, "$SCRIPT_PATH$", path); +}return strScript; +}, "~S,~S"); +Clazz_defineMethod(c$, "setScriptExtensions", +function(){ +var extensions = this.scriptExtensions; +if (extensions == null) return 0; +var pt = extensions.indexOf("\u0001##SCRIPT_STEP"); +if (pt >= 0) { +this.executionStepping = true; +}pt = extensions.indexOf("\u0001##SCRIPT_START"); +if (pt < 0) return 0; +pt = JU.PT.parseInt(extensions.substring(pt + "\u0001##SCRIPT_START".length)); +if (pt == -2147483648) return 0; +for (this.pc = 0; this.pc < this.lineIndices.length; this.pc++) { +if (this.lineIndices[this.pc][0] > pt || this.lineIndices[this.pc][1] >= pt) break; +} +if (this.pc > 0 && this.pc < this.lineIndices.length && this.lineIndices[this.pc][0] > pt) --this.pc; +return this.pc; +}); +Clazz_defineMethod(c$, "getScriptFileInternal", +function(filename, localPath, remotePath, scriptPath){ +if (filename.toLowerCase().indexOf("javascript:") == 0) { +return this.vwr.jsEval(filename.substring(11)); +}var data = new Array(2); +data[0] = filename; +if (!this.vwr.fm.getFileDataAsString(data, -1, false, true, false)) { +this.setErrorMessage("io error reading " + data[0] + ": " + data[1]); +return null; +}var movieScript = ""; +if (("\n" + data[1]).indexOf("\nJmolManifest.txt\n") >= 0) { +var path; +if (filename.endsWith(".all.pngj") || filename.endsWith(".all.png")) { +path = "|state.spt"; +filename += "|"; +} else { +if (data[1].indexOf("movie.spt") >= 0) { +data[0] = filename + "|movie.spt"; +if (this.vwr.fm.getFileDataAsString(data, -1, false, true, false)) { +movieScript = data[1]; +}}filename += "|JmolManifest.txt"; +data[0] = filename; +if (!this.vwr.fm.getFileDataAsString(data, -1, false, true, false)) { +this.setErrorMessage("io error reading " + data[0] + ": " + data[1]); +return null; +}path = JV.FileManager.getManifestScriptPath(data[1]); +}if (path != null && path.length > 0) { +data[0] = filename = filename.substring(0, filename.lastIndexOf("|")) + path; +if (!this.vwr.fm.getFileDataAsString(data, -1, false, true, false)) { +this.setErrorMessage("io error reading " + data[0] + ": " + data[1]); +return null; +}}if (filename.endsWith("|state.spt")) { +this.vwr.g.setO("_pngjFile", filename.substring(0, filename.length - 10) + "?"); +}}this.scriptFileName = filename; +data[1] = JV.FileManager.getEmbeddedScript(data[1]); +var script = this.fixScriptPath(data[1], data[0]); +if (scriptPath == null) { +scriptPath = this.vwr.fm.getFilePath(filename, false, false); +scriptPath = scriptPath.substring(0, Math.max(scriptPath.lastIndexOf("|"), scriptPath.lastIndexOf("/"))); +}return JV.FileManager.setScriptFileReferences(script, localPath, remotePath, scriptPath) + movieScript; +}, "~S,~S,~S,~S"); +Clazz_overrideMethod(c$, "evalFunctionFloat", +function(func, params, values){ +try { +var p = params; +for (var i = 0; i < values.length; i++) p.get(i).value = Float.$valueOf(values[i]); + +var f = func; +return JS.SV.fValue(this.runFunctionAndRet(f, f.name, p, null, true, false, false)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return NaN; +} else { +throw e; +} +} +}, "~O,~O,~A"); +Clazz_defineMethod(c$, "getUserFunctionResult", +function(name, params, tokenAtom){ +return this.runFunctionAndRet(null, name, params, tokenAtom, true, true, false); +}, "~S,JU.Lst,JS.SV"); +Clazz_defineMethod(c$, "runFunctionAndRet", +function($function, name, params, tokenAtom, getReturn, setContextPath, allowThreads){ +if ($function == null) { +name = name.toLowerCase(); +$function = this.getFunction(name); +if ($function == null) return null; +if (setContextPath) this.contextPath += " >> function " + name; +} else if (setContextPath) { +this.contextPath += " >> " + name; +}this.pushContext(null, "runFunctionAndRet "); +if (this.allowJSThreads) this.setAllowJSThreads(allowThreads); +var isTry = ($function.getTok() == 364558); +this.thisContext.isTryCatch = isTry; +this.thisContext.isFunction = !isTry; +this.functionName = name; +if (isTry) { +this.resetError(); +this.thisContext.displayLoadErrorsSave = this.vwr.displayLoadErrors; +this.thisContext.tryPt = ++this.vwr.tryPt; +this.vwr.displayLoadErrors = false; +this.restoreFunction($function, params, tokenAtom); +this.contextVariables.put("_breakval", JS.SV.newI(2147483647)); +this.contextVariables.put("_errorval", JS.SV.newS("")); +var cv = this.contextVariables; +switch (this.executeCommands(null, true, false)) { +case -1: +break; +case 1: +case 0: +this.postProcessTry(cv); +} +return null; +} else if (Clazz_instanceOf($function,"J.api.JmolParallelProcessor")) { +{ +this.parallelProcessor = $function; +this.restoreFunction($function, params, tokenAtom); +this.dispatchCommands(false, true, false); +($function).runAllProcesses(this.vwr); +}} else { +this.restoreFunction($function, params, tokenAtom); +this.dispatchCommands(false, true, false); +}var v = (getReturn ? this.getContextVariableAsVariable("_retval", false) : null); +this.popContext(false, false); +return v; +}, "J.api.JmolScriptFunction,~S,JU.Lst,JS.SV,~B,~B,~B"); +Clazz_defineMethod(c$, "postProcessTry", +function(cv){ +if (this.thisContext == null) return; +while (this.thisContext.tryPt > this.vwr.tryPt) this.popContext(false, false); + +var isJSReturn = (cv == null); +if (isJSReturn) { +cv = this.contextVariables; +}this.vwr.displayLoadErrors = this.thisContext.displayLoadErrorsSave; +this.popContext(false, false); +var err = this.vwr.getP("_errormessage"); +if (err.length > 0) { +cv.put("_errorval", JS.SV.newS(err)); +this.resetError(); +}cv.put("_tryret", cv.get("_retval")); +var ret = cv.get("_tryret"); +if (ret.value != null || ret.intValue != 2147483647) { +try { +this.cmdReturn(ret); +} catch (e) { +if (Clazz_exceptionOf(e,"JS.ScriptException")){ +e.printStackTrace(); +} else { +throw e; +} +} +return; +}var errMsg = (cv.get("_errorval")).value; +if (errMsg.length == 0) { +var iBreak = (cv.get("_breakval")).intValue; +if (iBreak != 2147483647) { +this.breakAt(this.pc - iBreak); +return; +}}if (this.pc + 1 < this.aatoken.length && this.aatoken[this.pc + 1][0].tok == 102412) { +var ct = this.aatoken[this.pc + 1][0]; +if (ct.contextVariables != null && ct.name0 != null) ct.contextVariables.put(ct.name0, JS.SV.newS(errMsg)); +ct.intValue = (errMsg.length > 0 ? 1 : -1) * Math.abs(ct.intValue); +}if (isJSReturn) this.pc++; +}, "java.util.Map"); +Clazz_defineMethod(c$, "breakAt", +function(pt){ +if (pt < 0) { +this.getContextVariableAsVariable("_breakval", false).intValue = -pt; +this.pcEnd = this.pc; +return; +}var ptEnd = Math.abs(this.aatoken[pt][0].intValue); +var tok = this.aatoken[pt][0].tok; +if (tok == 102411 || tok == 102413) { +this.theToken = this.aatoken[ptEnd--][0]; +var ptNext = Math.abs(this.theToken.intValue); +if (this.theToken.tok != 102409) this.theToken.intValue = -ptNext; +} else { +this.pc = -1; +while (this.pc != pt && this.thisContext != null) { +while (this.thisContext != null && !JS.ScriptCompiler.isBreakableContext(this.thisContext.token.tok)) this.popContext(true, false); + +this.pc = this.thisContext.pc; +this.popContext(true, false); +} +}this.pc = ptEnd; +}, "~N"); +Clazz_defineMethod(c$, "restoreFunction", +function(f, params, tokenAtom){ +var $function = f; +this.aatoken = $function.aatoken; +this.lineNumbers = $function.lineNumbers; +this.lineIndices = $function.lineIndices; +this.script = $function.script; +this.pc = 0; +if ($function.names != null) { +this.contextVariables = new java.util.Hashtable(); +$function.setVariables(this.contextVariables, params); +}if (tokenAtom != null) this.contextVariables.put("_x", tokenAtom); +}, "J.api.JmolScriptFunction,JU.Lst,JS.SV"); +Clazz_defineMethod(c$, "clearDefinedVariableAtomSets", +function(){ +this.vwr.definedAtomSets.remove("# variable"); +}); +Clazz_defineMethod(c$, "defineSets", +function(){ +if (!this.vwr.definedAtomSets.containsKey("# static")) { +for (var i = 0; i < JV.JC.predefinedStatic.length; i++) this.defineAtomSet(JV.JC.predefinedStatic[i]); + +this.defineAtomSet("# static"); +}if (this.vwr.definedAtomSets.containsKey("# variable")) return; +for (var i = 0; i < JV.JC.predefinedVariable.length; i++) this.defineAtomSet(JV.JC.predefinedVariable[i]); + +for (var i = JU.Elements.elementNumberMax; --i >= 0; ) { +var definition = " elemno=" + i; +this.defineAtomSet("@" + JU.Elements.elementNameFromNumber(i) + definition); +this.defineAtomSet("@_" + JU.Elements.elementSymbolFromNumber(i) + definition); +} +for (var i = 4; --i >= 0; ) { +var definition = "@" + JU.Elements.altElementNameFromIndex(i) + " _e=" + JU.Elements.altElementNumberFromIndex(i); +this.defineAtomSet(definition); +} +for (var i = JU.Elements.altElementMax; --i >= 4; ) { +var ei = JU.Elements.altElementNumberFromIndex(i); +var def = " _e=" + ei; +var definition = "@_" + JU.Elements.altElementSymbolFromIndex(i); +this.defineAtomSet(definition + def); +definition = "@_" + JU.Elements.altIsotopeSymbolFromIndex(i); +this.defineAtomSet(definition + def); +definition = "@_" + JU.Elements.altIsotopeSymbolFromIndex2(i); +this.defineAtomSet(definition + def); +definition = "@" + JU.Elements.altElementNameFromIndex(i); +if (definition.length > 1) this.defineAtomSet(definition + def); +var e = JU.Elements.getElementNumber(ei); +ei = JU.Elements.getNaturalIsotope(e); +if (ei > 0) { +def = JU.Elements.elementSymbolFromNumber(e); +this.defineAtomSet("@_" + def + ei + " _e=" + e); +this.defineAtomSet("@_" + ei + def + " _e=" + e); +}} +this.defineAtomSet("# variable"); +}); +Clazz_defineMethod(c$, "defineAtomSet", +function(script){ +if (script.indexOf("#") == 0) { +this.vwr.definedAtomSets.put(script, Boolean.TRUE); +return; +}var sc = this.compiler.compile("#predefine", script, true, false, false, false); +if (sc.errorType != null) { +this.vwr.scriptStatus("JmolConstants.java ERROR: predefined set compile error:" + script + "\ncompile error:" + sc.errorMessageUntranslated); +return; +}if (sc.getTokenCount() != 1) { +this.vwr.scriptStatus("JmolConstants.java ERROR: predefinition does not have exactly 1 command:" + script); +return; +}var statement = sc.getToken(0); +if (statement.length <= 2) { +this.vwr.scriptStatus("JmolConstants.java ERROR: bad predefinition length:" + script); +return; +}var tok = statement[1].tok; +if (!JS.T.tokAttr(tok, 1073741824) && !JS.T.tokAttr(tok, 2097152)) { +this.vwr.scriptStatus("JmolConstants.java ERROR: invalid variable name:" + script); +return; +}var name = (statement[1].value).toLowerCase(); +if (name.startsWith("dynamic_")) name = "!" + name.substring(8); +this.vwr.definedAtomSets.put(name, statement); +}, "~S"); +Clazz_defineMethod(c$, "lookupIdentifierValue", +function(identifier){ +var bs = this.lookupValue(identifier, false); +if (bs != null) return JU.BSUtil.copy(bs); +bs = this.getAtomBits(1073741824, identifier); +return (bs == null ? new JU.BS() : bs); +}, "~S"); +Clazz_defineMethod(c$, "lookupValue", +function(setName, plurals){ +if (this.chk) { +return new JU.BS(); +}this.defineSets(); +setName = setName.toLowerCase(); +var value = this.vwr.definedAtomSets.get(setName); +var isDynamic = false; +if (value == null) { +value = this.vwr.definedAtomSets.get("!" + setName); +isDynamic = (value != null); +}if (Clazz_instanceOf(value,"JU.BS")) return value; +if (Clazz_instanceOf(value,Array)) { +this.pushContext(null, "lookupValue"); +var bs = this.atomExpression(value, -2, 0, true, false, null, true); +this.popContext(false, false); +if (!isDynamic) this.vwr.definedAtomSets.put(setName, bs); +return bs; +}if (setName.equals("water")) { +var bs = this.vwr.ms.getAtoms(1612709912, null); +if (!isDynamic) this.vwr.definedAtomSets.put(setName, bs); +return bs; +}if (plurals) return null; +var len = setName.length; +if (len < 5) return null; +if (setName.charAt(len - 1) != 's') return null; +if (setName.endsWith("ies")) setName = setName.substring(0, len - 3) + 'y'; + else setName = setName.substring(0, len - 1); +return this.lookupValue(setName, true); +}, "~S,~B"); +Clazz_overrideMethod(c$, "deleteAtomsInVariables", +function(bsDeleted){ +for (var entry, $entry = this.vwr.definedAtomSets.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var value = entry.getValue(); +if (Clazz_instanceOf(value,"JU.BS")) { +JU.BSUtil.deleteBits(value, bsDeleted); +if (!entry.getKey().startsWith("!")) this.vwr.g.setUserVariable("@" + entry.getKey(), JS.SV.newV(10, value)); +}} +}, "JU.BS"); +Clazz_overrideMethod(c$, "getThisContext", +function(){ +return this.thisContext; +}); +Clazz_defineMethod(c$, "clearState", +function(tQuiet){ +this.thisContext = null; +this.scriptLevel = 0; +this.setErrorMessage(null); +this.contextPath = ""; +this.tQuiet = tQuiet; +}, "~B"); +Clazz_overrideMethod(c$, "pushContextDown", +function(why){ +this.scriptLevel--; +this.pushContext2(null, why); +}, "~S"); +Clazz_defineMethod(c$, "pushContext", +function(token, why){ +if (this.scriptLevel == JS.ScriptEval.contextDepthMax) this.error(44); +this.pushContext2(token, why); +}, "JS.ContextToken,~S"); +Clazz_defineMethod(c$, "pushContext2", +function(token, why){ +this.thisContext = this.getScriptContext(why); +this.thisContext.token = token; +if (token == null) { +this.scriptLevel = ++this.thisContext.scriptLevel; +} else { +this.thisContext.scriptLevel = -1; +this.contextVariables = new java.util.Hashtable(); +if (token.contextVariables != null) for (var key, $key = token.contextVariables.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) JS.ScriptCompiler.addContextVariable(this.contextVariables, key); + +}if (this.debugHigh || this.isCmdLine_c_or_C_Option) JU.Logger.info("-->>----------------------".substring(0, Math.min(15, this.scriptLevel + 5)) + this.scriptLevel + " " + this.scriptFileName + " " + token + " " + this.thisContext.id + " " + why + " path=" + this.thisContext.contextPath); +}, "JS.ContextToken,~S"); +Clazz_overrideMethod(c$, "getScriptContext", +function(why){ +var context = new JS.ScriptContext(); +if (this.debugHigh) JU.Logger.info("creating context " + context.id + " for " + why + " path=" + this.contextPath); +context.why = why; +context.scriptLevel = this.scriptLevel; +context.parentContext = this.thisContext; +context.contextPath = this.contextPath; +context.scriptFileName = this.scriptFileName; +context.parallelProcessor = this.parallelProcessor; +context.functionName = this.functionName; +context.script = this.script; +context.lineNumbers = this.lineNumbers; +context.lineIndices = this.lineIndices; +context.saveTokens(this.aatoken); +context.statement = this.st; +context.statementLength = this.slen; +context.pc = context.pc0 = this.pc; +context.lineEnd = this.lineEnd; +context.pcEnd = this.pcEnd; +context.iToken = this.iToken; +context.theToken = this.theToken; +context.theTok = this.theTok; +context.outputBuffer = this.outputBuffer; +context.vars = this.contextVariables; +context.isStateScript = this.$isStateScript; +context.errorMessage = this.errorMessage; +context.errorType = this.errorType; +context.iCommandError = this.iCommandError; +context.chk = this.chk; +context.executionStepping = this.executionStepping; +context.executionPaused = this.executionPaused; +context.scriptExtensions = this.scriptExtensions; +context.isEditor = this.isEditor; +context.mustResumeEval = this.mustResumeEval; +context.allowJSThreads = this.allowJSThreads; +return context; +}, "~S"); +Clazz_defineMethod(c$, "popContext", +function(isFlowCommand, statementOnly){ +if (this.thisContext == null) return; +if (this.thisContext.scriptLevel > 0) this.scriptLevel = this.thisContext.scriptLevel - 1; +var scTemp = (isFlowCommand ? this.getScriptContext("popFlow") : null); +this.restoreScriptContext(this.thisContext, true, isFlowCommand, statementOnly); +if (scTemp != null) this.restoreScriptContext(scTemp, true, false, true); +if (this.debugHigh || this.isCmdLine_c_or_C_Option) JU.Logger.info("--<<------------".substring(0, Math.min(15, this.scriptLevel + 5)) + (this.scriptLevel + 1) + " " + this.scriptFileName + " isFlow " + isFlowCommand + " thisContext=" + (this.thisContext == null ? "" : "" + this.thisContext.id) + " pc=" + this.pc + "-->" + this.pc + " path=" + (this.thisContext == null ? "" : this.thisContext.contextPath)); +}, "~B,~B"); +Clazz_defineMethod(c$, "restoreScriptContext", +function(context, isPopContext, isFlowCommand, statementOnly){ +this.executing = !this.chk; +if (context == null) return; +if (!isFlowCommand) { +this.st = context.statement; +this.slen = context.statementLength; +this.pc = context.pc; +this.lineEnd = context.lineEnd; +this.pcEnd = context.pcEnd; +if (statementOnly) return; +}if (context.privateFuncs != null) this.privateFuncs = context.privateFuncs; +this.mustResumeEval = context.mustResumeEval; +this.script = context.script; +this.lineNumbers = context.lineNumbers; +this.lineIndices = context.lineIndices; +this.aatoken = context.restoreTokens(); +this.contextVariables = context.vars; +this.scriptExtensions = context.scriptExtensions; +this.isEditor = context.isEditor; +if (isPopContext) { +this.contextPath = context.contextPath; +var pt = (this.contextPath == null ? -1 : this.contextPath.indexOf(" >> ")); +if (pt >= 0) this.contextPath = this.contextPath.substring(0, pt); +this.scriptFileName = context.scriptFileName; +this.parallelProcessor = context.parallelProcessor; +this.functionName = context.functionName; +this.iToken = context.iToken; +this.theToken = context.theToken; +this.theTok = context.theTok; +this.outputBuffer = context.outputBuffer; +this.$isStateScript = context.isStateScript; +this.thisContext = context.parentContext; +this.allowJSThreads = context.allowJSThreads; +if (this.debugHigh || this.isCmdLine_c_or_C_Option) JU.Logger.info("--r------------".substring(0, Math.min(15, this.scriptLevel + 5)) + this.scriptLevel + " " + this.scriptFileName + " isPop " + isPopContext + " isFlow " + isFlowCommand + " context.id=" + context.id + " pc=" + this.pc + "-->" + context.pc + " " + this.contextPath); +} else { +this.$error = (context.errorType != null); +this.errorMessage = context.errorMessage; +this.errorMessageUntranslated = context.errorMessageUntranslated; +this.iCommandError = context.iCommandError; +this.errorType = context.errorType; +}}, "JS.ScriptContext,~B,~B,~B"); +Clazz_defineMethod(c$, "setException", +function(sx, msg, untranslated){ +sx.untranslated = (untranslated == null ? msg : untranslated); +var isThrown = "!".equals(untranslated); +this.errorType = msg; +this.iCommandError = this.pc; +if (sx.message == null) { +sx.message = ""; +return; +}var s = JS.ScriptEval.getContextTrace(this.vwr, this.getScriptContext("setException"), null, true).toString(); +while (this.thisContext != null && !this.thisContext.isTryCatch) this.popContext(false, false); + +if (sx.message.indexOf(s) < 0) { +sx.message += s; +sx.untranslated += s; +}var done = (isThrown || this.thisContext != null || this.chk || msg.indexOf("NOTE: file recognized as a script file: ") >= 0); +this.resumeViewer(isThrown ? "throw context" : "scriptException", isThrown); +if (done) return; +this.isFuncReturn = false; +JU.Logger.error("eval ERROR: " + s + "\n" + this.toString()); +if (this.vwr.autoExit) this.vwr.exitJmol(); +}, "JS.ScriptException,~S,~S"); +c$.statementAsString = Clazz_defineMethod(c$, "statementAsString", +function(vwr, statement, iTok, doLogMessages){ +if (statement == null || statement.length == 0) return ""; +var sb = new JU.SB(); +var tok = statement[0].tok; +switch (tok) { +case 0: +return statement[0].value; +case 102409: +if (statement.length == 2 && (statement[1].tok == 134320141 || statement[1].tok == 102436)) return ((statement[1].value)).toString(); +} +var useBraces = true; +var inBrace = false; +var inClauseDefine = false; +var setEquals = (statement.length > 1 && tok == 36867 && statement[0].value.equals("") && (statement[0].intValue == 61 || statement[0].intValue == 35) && statement[1].tok != 1073742325); +var len = statement.length; +for (var i = 0; i < len; ++i) { +var token = statement[i]; +if (token == null) { +len = i; +break; +}if (iTok == i - 1) sb.append(" <<"); +if (i != 0) sb.appendC(' '); +if (i == 2 && setEquals) { +if ((setEquals = (token.tok != 268440324)) || statement[0].intValue == 35) { +sb.append(setEquals ? "= " : "== "); +if (!setEquals) continue; +}}var tval = token.value; +switch (token.tok) { +case 1073742325: +if (useBraces) sb.append("{"); +continue; +case 1073742326: +if (inClauseDefine && i == statement.length - 1) useBraces = false; +if (useBraces) sb.append("}"); +continue; +case 268437504: +case 268437505: +break; +case 1073742332: +case 1073742338: +inBrace = (token.tok == 1073742332); +break; +case 12290: +if (i > 0 && (token.value).equals("define")) { +sb.append("@"); +if (i + 1 < statement.length && statement[i + 1].tok == 1073742325) { +if (!useBraces) inClauseDefine = true; +useBraces = true; +}continue; +}break; +case 1073742335: +sb.append("true"); +tval = null; +break; +case 1073742334: +sb.append("false"); +tval = null; +break; +case 1275082241: +break; +case 2: +sb.appendI(token.intValue); +tval = null; +break; +case 8: +case 9: +case 10: +sb.append(JS.SV.sValue(token)); +tval = null; +break; +case 6: +if (Boolean.TRUE === (token.value).get("$_BINARY_$")) { +sb.append(""); +tval = null; +break; +}case 7: +sb.append((token).escape()); +tval = null; +break; +case 5: +sb.appendC('^'); +tval = null; +break; +case 1073742363: +if (token.intValue != 2147483647) sb.appendI(token.intValue); + else sb.append(JM.Group.getSeqcodeStringFor(JS.ScriptExpr.getSeqCode(token))); +token = statement[++i]; +sb.appendC(' '); +sb.append(inBrace ? "-" : "- "); +case 1073742362: +if (token.intValue != 2147483647) sb.appendI(token.intValue); + else sb.append(JM.Group.getSeqcodeStringFor(JS.ScriptExpr.getSeqCode(token))); +tval = null; +break; +case 1073742357: +sb.append("*:"); +sb.append(vwr.getChainIDStr(token.intValue)); +tval = null; +break; +case 1073742355: +sb.append("*%"); +if (token.value != null) sb.append(token.value.toString()); +tval = null; +break; +case 1073742358: +sb.append("*/"); +case 1073742359: +case 3: +if (token.intValue < 2147483647) { +sb.append(JU.Escape.escapeModelFileNumber(token.intValue)); +} else { +sb.append("" + token.value); +}tval = null; +break; +case 1073742361: +sb.appendC('['); +var ptr = token.intValue * 6 + 1; +sb.append(JM.Group.standardGroupList.substring(ptr, ptr + 3).trim()); +sb.appendC(']'); +tval = null; +break; +case 1073742360: +sb.appendC('['); +sb.appendO(token.value); +sb.appendC(']'); +tval = null; +break; +case 1073742356: +sb.append("*."); +break; +case 1094713349: +if (Clazz_instanceOf(token.value,"JU.P3")) { +var pt = token.value; +sb.append("cell=").append(JU.Escape.eP(pt)); +tval = null; +break; +}break; +case 4: +sb.append("\"").appendO(token.value).append("\""); +tval = null; +break; +case 268440324: +case 268440322: +case 268440321: +case 268440320: +case 268440323: +case 268440325: +if (token.intValue == 1715472409) { +sb.append(statement[++i].value).append(" "); +} else if (token.intValue != 2147483647) sb.append(JS.T.nameOf(token.intValue)).append(" "); +break; +case 364558: +tval = null; +break; +case 102409: +sb.append("end"); +tval = null; +break; +default: +if (JS.T.tokAttr(token.tok, 1073741824) || !doLogMessages) break; +sb.appendC('\n').append(token.toString()).appendC('\n'); +tval = null; +break; +} +if (tval != null) sb.append(token.value.toString()); +if (iTok == i) sb.append("<<<<"); +} +return sb.toString(); +}, "JV.Viewer,~A,~N,~B"); +Clazz_overrideMethod(c$, "setObjectPropSafe", +function(id, tokCommand){ +try { +return this.setObjectProp(id, tokCommand, -1); +} catch (e) { +if (Clazz_exceptionOf(e,"JS.ScriptException")){ +return null; +} else { +throw e; +} +} +}, "~S,~N"); +Clazz_defineMethod(c$, "setAtomProp", +function(prop, value, bs){ +this.setShapePropertyBs(0, prop, value, bs); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "restrictSelected", +function(isBond, doInvert){ +if (!this.chk) this.sm.restrictSelected(isBond, doInvert); +}, "~B,~B"); +Clazz_defineMethod(c$, "showString", +function(str){ +this.showStringPrint(str, false); +}, "~S"); +Clazz_overrideMethod(c$, "showStringPrint", +function(s, mustDo){ +if (this.chk || s == null) return; +if (this.outputBuffer == null) this.vwr.showString(s, mustDo); + else this.appendBuffer(s, mustDo); +}, "~S,~B"); +Clazz_defineMethod(c$, "report", +function(s, isError){ +if (this.chk || isError && s.indexOf(" of try:") >= 0) return; +if (this.outputBuffer == null) this.vwr.scriptStatus(s); + else this.appendBuffer(s, isError); +}, "~S,~B"); +Clazz_defineMethod(c$, "appendBuffer", +function(str, mustDo){ +if (mustDo || this.isFuncReturn || JU.Logger.isActiveLevel(4)) this.outputBuffer.append(str).appendC('\n'); +}, "~S,~B"); +Clazz_defineMethod(c$, "addProcess", +function(vProcess, pc, pt){ +if (this.parallelProcessor == null) return; +var statements = new Array(pt); +for (var i = 0; i < vProcess.size(); i++) statements[i + 1 - pc] = vProcess.get(i); + +var context = this.getScriptContext("addProcess"); +context.saveTokens(statements); +context.pc = 1 - pc; +context.pcEnd = pt; +this.parallelProcessor.addProcess("p" + (++JS.ScriptEval.iProcess), context); +}, "JU.Lst,~N,~N"); +Clazz_defineMethod(c$, "checkContinue", +function(){ +if (this.executionStopped) return false; +if (this.executionStepping && this.isCommandDisplayable(this.pc)) { +this.vwr.scriptStatusMsg("Next: " + this.getNextStatement(), "stepping -- type RESUME to continue"); +this.executionPaused = true; +} else if (!this.executionPaused) { +return true; +}if (JU.Logger.debugging) { +JU.Logger.debug("script execution paused at command " + (this.pc + 1) + " level " + this.scriptLevel + ": " + this.thisCommand); +}this.refresh(false); +var doShowPC = true; +while (this.executionPaused) { +if (!this.isJS) { +Thread.yield(); +}if (this.isEditor && doShowPC) this.notifyScriptEditor(this.pc); +doShowPC = false; +this.vwr.popHoldRepaint("pause \u0001## REPAINT_IGNORE ##"); +var script = this.vwr.getInsertedCommand(); +if (script.length > 0) { +this.resumePausedExecution(); +this.setErrorMessage(null); +var scSave = this.getScriptContext("script insertion"); +this.pc--; +try { +this.runScript(script); +} catch (e$$) { +if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +this.setErrorMessage("" + e); +} +} else if (Clazz_exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.setErrorMessage("" + er); +} +} else { +throw e$$; +} +} +if (this.$error) { +this.report(this.errorMessage, true); +this.setErrorMessage(null); +}this.restoreScriptContext(scSave, true, false, false); +if (!script.startsWith("resume\1") && !script.startsWith("step\1")) this.pauseExecution(false); +}this.doDelay(-100); +this.vwr.pushHoldRepaintWhy("pause"); +} +this.notifyResumeStatus(); +return !this.$error && !this.executionStopped; +}); +Clazz_defineMethod(c$, "delayScript", +function(millis){ +if (this.vwr.autoExit) return; +this.stopScriptThreads(); +if (this.vwr.captureParams != null && millis > 0) { +this.vwr.captureParams.put("captureDelayMS", Integer.$valueOf(millis)); +}this.scriptDelayThread = new JS.ScriptDelayThread(this, this.vwr, millis); +if (this.isJS && this.allowJSThreads) { +this.pc = this.aatoken.length; +}this.scriptDelayThread.run(); +}, "~N"); +Clazz_defineMethod(c$, "doDelay", +function(millis){ +if (!this.useThreads()) return; +if (this.isJS) throw new JS.ScriptInterruption(this, "delay", millis); +this.delayScript(millis); +}, "~N"); +Clazz_overrideMethod(c$, "evalParallel", +function(context, shapeManager){ +return this.getCmdExt().evalParallel(context, shapeManager); +}, "JS.ScriptContext,JV.ShapeManager"); +Clazz_defineMethod(c$, "isCommandDisplayable", +function(i){ +if (i >= this.aatoken.length || i >= this.pcEnd || this.aatoken[i] == null) return false; +return (this.lineIndices[i][1] > this.lineIndices[i][0]); +}, "~N"); +Clazz_overrideMethod(c$, "loadFileResourceAsync", +function(fileName){ +this.loadFileAsync(null, fileName, -Math.abs(fileName.hashCode()), false); +}, "~S"); +Clazz_defineMethod(c$, "loadFileAsync", +function(prefix, filename, i, doClear){ +if (!filename.startsWith("?")) { +var fullPathNameOrError = this.vwr.getFullPathNameOrError(filename); +filename = fullPathNameOrError[0]; +if (fullPathNameOrError[1] != null) this.errorStr(17, filename + ":" + fullPathNameOrError[1]); +if (this.vwr.fm.cacheGet(filename, false) != null) { +this.cancelFileThread(); +return filename; +}}if (prefix != null) prefix = "cache://local" + prefix; +var key = this.pc + "_" + i + "_" + filename; +var cacheName; +if (this.thisContext == null) { +this.pushContext(null, "loadFileAsync"); +}if (this.thisContext.htFileCache == null) { +this.thisContext.htFileCache = new java.util.Hashtable(); +}cacheName = this.thisContext.htFileCache.get(key); +if (cacheName != null && cacheName.length > 0) { +this.cancelFileThread(); +this.vwr.queueOnHold = false; +if ("#CANCELED#".equals(cacheName) || "#CANCELED#".equals(this.vwr.fm.cacheGet(cacheName, false))) this.evalError("#CANCELED#", null); +return cacheName; +}this.thisContext.htFileCache.put(key, cacheName = prefix + System.currentTimeMillis()); +if (doClear) this.vwr.cacheFileByName(prefix + "*", false); +this.fileLoadThread = new JS.FileLoadThread(this, this.vwr, filename, key, cacheName); +if (this.vwr.testAsync) this.fileLoadThread.start(); + else this.fileLoadThread.run(); +if (i < 0) this.fileLoadThread = null; +throw new JS.ScriptInterruption(this, "load", 1); +}, "~S,~S,~N,~B"); +Clazz_defineMethod(c$, "cancelFileThread", +function(){ +this.fileLoadThread = null; +if (this.thisContext != null && this.thisContext.why === "loadFileAsync") { +this.popContext(false, false); +}}); +Clazz_defineMethod(c$, "logLoadInfo", +function(msg, isData){ +if (msg.length > 0) JU.Logger.info(msg); +var sb = new JU.SB(); +var modelCount = this.vwr.ms.mc; +if (modelCount > 1 && !isData) sb.append((this.vwr.am.isMovie ? this.vwr.am.getFrameCount() + " frames" : modelCount + " models") + "\n"); +for (var i = 0; i < modelCount; i++) { +var moData = this.vwr.ms.getInfo(i, "moData"); +if (moData == null || !moData.containsKey("mos")) continue; +sb.appendI((moData.get("mos")).size()).append(" molecular orbitals in model ").append(this.vwr.getModelNumberDotted(i)).append("\n"); +} +if (sb.length() > 0) this.showString(sb.toString()); +}, "~S,~B"); +Clazz_overrideMethod(c$, "notifyResumeStatus", +function(){ +if (!this.chk && !this.executionStopped && !this.executionStepping && !this.executionPaused) { +var isInterrupt = (this.$error || this.executionStopped); +this.vwr.scriptStatus("script execution " + (isInterrupt ? "interrupted" : "resumed")); +}}); +Clazz_defineMethod(c$, "refresh", +function(doDelay){ +if (this.chk) return; +this.vwr.setTainted(true); +this.vwr.requestRepaintAndWait("refresh cmd"); +if (this.isJS && doDelay) this.doDelay(10); +}, "~B"); +Clazz_overrideMethod(c$, "stopScriptThreads", +function(){ +if (this.scriptDelayThread != null) { +this.scriptDelayThread.interrupt(); +this.scriptDelayThread = null; +}if (this.fileLoadThread != null) { +this.fileLoadThread.interrupt(); +this.fileLoadThread.resumeEval(); +this.cancelFileThread(); +}}); +Clazz_defineMethod(c$, "getErrorLineMessage2", +function(){ +return JS.ScriptError.getErrorLineMessage(this.functionName, this.scriptFileName, this.getLinenumber(null), this.pc, JS.ScriptEval.statementAsString(this.vwr, this.st, -9999, this.debugHigh)); +}); +Clazz_defineMethod(c$, "getLinenumber", +function(c){ +return (c == null ? this.lineNumbers[this.pc] : c.lineNumbers[c.pc]); +}, "JS.ScriptContext"); +Clazz_defineMethod(c$, "dispatchCommands", +function(isSpt, fromFunc, isTry){ +if (this.sm == null) this.sm = this.vwr.shm; +this.debugScript = this.debugHigh = false; +if (!this.chk) this.setDebugging(); +if (this.pcEnd == 0) this.pcEnd = 2147483647; +if (this.lineEnd == 0) this.lineEnd = 2147483647; +if (this.aatoken == null) return true; +if (!this.tQuiet) { +this.tQuiet = (this.vwr.getInt(536870922) < 0); +}var allowJSInterrupt = (this.isJS && !fromFunc && this.useThreads() && this.vwr.getInt(536870922) >= 0); +this.commandLoop(allowJSInterrupt); +if (this.chk) return true; +var script = this.vwr.getInsertedCommand(); +if (!"".equals(script)) this.runScriptBuffer(script, null, false); + else if (isSpt && this.debugScript && this.vwr.getBoolean(603979879)) this.vwr.getChimeMessenger().update(null); +if (!this.mustResumeEval && !allowJSInterrupt || fromFunc) return true; +if (!isTry && this.mustResumeEval || this.thisContext == null) { +var done = (this.thisContext == null); +this.resumeEval(this.thisContext); +this.mustResumeEval = false; +return done; +}return true; +}, "~B,~B,~B"); +Clazz_defineMethod(c$, "commandLoop", +function(allowJSInterrupt){ +var lastCommand = ""; +var isForCheck = false; +var vProcess = null; +var lastTime = System.currentTimeMillis(); +if (this.debugScript && this.debugHigh && !this.chk) { +for (var i = this.pc; i < this.aatoken.length && i < this.pcEnd; i++) { +JU.Logger.info("Command " + i); +if (this.debugScript) this.logDebugScript(this.aatoken[i], 0); +} +JU.Logger.info("-----"); +}var isFirst = true; +for (; this.pc < this.aatoken.length && this.pc < this.pcEnd; this.pc++) { +if (allowJSInterrupt) { +if (!this.executionPaused && System.currentTimeMillis() - lastTime > 1000000) { +this.pc--; +this.doDelay(-1); +}lastTime = System.currentTimeMillis(); +}if (!this.chk && (!this.executionStepping || !isFirst) && !this.checkContinue()) break; +isFirst = false; +if (this.pc >= this.lineNumbers.length || this.lineNumbers[this.pc] > this.lineEnd) break; +if (this.debugHigh) { +var timeBegin = 0; +timeBegin = System.currentTimeMillis(); +this.vwr.scriptStatus("Eval.dispatchCommands():" + timeBegin); +this.vwr.scriptStatus(this.script); +}if (this.debugScript && !this.chk) JU.Logger.info("Command " + this.pc + (this.thisContext == null ? "" : " path=" + this.thisContext.contextPath)); +this.theToken = (this.aatoken[this.pc].length == 0 ? null : this.aatoken[this.pc][0]); +if (!this.historyDisabled && !this.chk && this.scriptLevel <= JS.ScriptEval.commandHistoryLevelMax && !this.tQuiet) { +var cmdLine = this.getCommand(this.pc, true, true); +if (this.theToken != null && cmdLine.length > 0 && !cmdLine.equals(lastCommand) && (this.theToken.tok == 134320141 || this.theToken.tok == 102436 || !JS.T.tokAttr(this.theToken.tok, 102400))) this.vwr.addCommand(lastCommand = cmdLine); +}if (!this.chk && allowJSInterrupt) { +var script = this.vwr.getInsertedCommand(); +if (!"".equals(script)) this.runScript(script); +}if (!this.setStatement(this.aatoken[this.pc], 1)) { +continue; +}this.thisCommand = this.getCommand(this.pc, false, true); +if (this.debugHigh || this.debugScript) JU.Logger.info(this.thisCommand); +var nextCommand = this.getCommand(this.pc + 1, false, true); +this.fullCommand = this.thisCommand + (nextCommand.startsWith("#") ? nextCommand : ""); +this.getToken(0); +this.iToken = 0; +if ((this.listCommands || !this.chk && this.scriptLevel > 0) && !this.isJS) { +var milliSecDelay = this.vwr.getInt(536870922); +if (this.listCommands || milliSecDelay > 0) { +if (milliSecDelay > 0) this.delayScript(-milliSecDelay); +this.vwr.scriptEcho("$[" + this.scriptLevel + "." + this.lineNumbers[this.pc] + "." + (this.pc + 1) + "] " + this.thisCommand); +}}if (vProcess != null && (this.theTok != 102409 || this.slen < 2 || this.st[1].tok != 102439)) { +vProcess.addLast(this.st); +continue; +}if (this.chk) { +if (this.isCmdLine_c_or_C_Option) JU.Logger.info(this.thisCommand); +if (this.slen == 1 && this.st[0].tok != 134320141 && this.st[0].tok != 102436) continue; +} else { +if (this.debugScript) this.logDebugScript(this.st, 0); +if (this.scriptLevel == 0 && this.vwr.g.logCommands) this.vwr.log(this.thisCommand); +if (this.debugHigh && this.theToken != null) JU.Logger.debug(this.theToken.toString()); +if (!this.isJS && this.isEditor && this.scriptLevel == 0) { +this.notifyScriptEditor(this.pc); +try { +Thread.sleep(100); +} catch (e) { +if (Clazz_exceptionOf(e,"InterruptedException")){ +} else { +throw e; +} +} +}}if (this.theToken == null) continue; +var tok = this.theToken.tok; +switch (tok) { +case 36867: +this.cmdSet(); +continue; +case 134320648: +isForCheck = this.cmdFor(tok, isForCheck); +continue; +case 102439: +this.pushContext(this.theToken, "PROCESS"); +if (this.parallelProcessor != null) vProcess = new JU.Lst(); +continue; +default: +if (JS.T.tokAttr(tok, 102400)) { +isForCheck = this.cmdFlow(tok, isForCheck, vProcess); +if (this.theTok == 102439) vProcess = null; +continue; +}this.processCommand(tok); +this.setCursorWait(false); +if (tok != 266298 && this.executionStepping) { +this.executionPaused = (this.isCommandDisplayable(this.pc + 1)); +}} +} +}, "~B"); +Clazz_defineMethod(c$, "notifyScriptEditor", +function(pc){ +this.vwr.notifyScriptEditor((this.lineIndices[pc][0] << 16) | this.lineIndices[pc][1], null); +}, "~N"); +Clazz_defineMethod(c$, "processCommand", +function(tok){ +if (JS.T.tokAttr(this.theToken.tok, 135168)) { +this.processShapeCommand(tok); +return; +}switch (tok) { +case 0: +if (!this.chk && this.vwr.getBoolean(603979879)) this.vwr.getChimeMessenger().showHash(this.outputBuffer, this.theToken.value); +break; +case 1275335685: +this.pushContext(this.theToken, "PUSH"); +break; +case 1275334681: +this.popContext(true, false); +break; +case 268436482: +break; +case 4097: +this.cmdAnimation(); +break; +case 1610616835: +this.cmdBackground(1); +break; +case 4100: +this.cmdBind(); +break; +case 4101: +this.cmdBondorder(); +break; +case 20488: +this.cmdCD(); +break; +case 12289: +this.cmdCenter(1); +break; +case 1765808134: +this.cmdColor(); +break; +case 12290: +this.cmdDefine(); +break; +case 528397: +this.cmdDelay(); +break; +case 12291: +this.cmdDelete(); +break; +case 554176526: +this.cmdSlab(true); +break; +case 1610625028: +this.cmdDisplay(true); +break; +case 266255: +case 266281: +if (this.chk) break; +if (this.pc > 0 && this.theToken.tok == 266255 && !this.vwr.autoExit) { +this.vwr.clearScriptQueue(); +}this.executionStopped = (this.pc > 0 || !this.vwr.g.useScriptQueue); +break; +case 266256: +if (this.chk) return; +if (this.outputBuffer != null) JU.Logger.warn(this.outputBuffer.toString()); +this.vwr.exitJmol(); +break; +case 1228935687: +this.cmdFile(); +break; +case 12293: +this.cmdFixed(); +break; +case 4114: +this.cmdFont(-1, 0); +break; +case 4115: +case 1094717454: +this.cmdModel(1); +break; +case 1073741824: +this.cmdFunc(); +break; +case 1275072526: +this.cmdGetProperty(); +break; +case 20500: +if (this.vwr.headless) break; +this.cmdGoto(true); +break; +case 20482: +this.cmdHelp(); +break; +case 12294: +this.cmdDisplay(false); +break; +case 1613238294: +this.cmdHbond(); +break; +case 1610616855: +this.cmdHistory(1); +break; +case 544771: +this.cmdHover(); +break; +case 4121: +switch (this.slen) { +case 1: +if (!this.chk) this.vwr.initialize(!this.$isStateScript, false); +break; +case 2: +if (this.tokAt(1) == 1275068433) { +this.vwr.getInchi(null, null, null); +if (this.chk) { +} else { +if (JV.Viewer.isJS) { +this.vwr.showString("InChI module initialized", false); +this.doDelay(1); +}}break; +}default: +this.bad(); +} +break; +case 134238732: +this.cmdScript(134238732, null, null, null); +break; +case 134223363: +this.cmdLoad(); +break; +case 36869: +this.cmdLog(); +break; +case 528411: +this.cmdLoop(); +break; +case 20485: +this.cmdMessage(); +break; +case 4128: +this.cmdMove(); +break; +case 4129: +this.cmdMoveto(); +break; +case 20487: +this.cmdPause(); +break; +case 36865: +this.cmdPrint(); +break; +case 134256129: +this.cmdPrompt(); +break; +case 536875059: +this.cmdScale(1); +break; +case 603984065: +case 4139: +case 4140: +case 4165: +this.cmdUndoRedo(tok); +break; +case 266284: +this.refresh(true); +break; +case 4141: +this.cmdReset(); +break; +case 12295: +this.cmdRestrict(); +break; +case 4143: +if (this.slen == 1) { +if (!this.chk) this.resumePausedExecution(); +break; +}case 4142: +this.cmdRestore(); +break; +case 36866: +this.cmdReturn(null); +break; +case 528432: +this.cmdRotate(false, false); +break; +case 4145: +this.cmdRotate(false, true); +break; +case 4146: +this.cmdSave(); +break; +case 134222850: +this.cmdScript(134222850, null, null, null); +break; +case 1275082241: +this.cmdSelect(1); +break; +case 1611141172: +this.cmdSelectionHalos(1); +break; +case 554176565: +this.cmdSlab(false); +break; +case 1611141175: +this.cmdRotate(true, false); +break; +case 1611141176: +this.cmdSsbond(); +break; +case 266298: +if (this.cmdPause()) this.stepPausedExecution(); +break; +case 1639976963: +this.cmdStructure(); +break; +case 2109448: +this.cmdSubset(); +break; +case 4156: +this.cmdSync(); +break; +case 36870: +this.cmdThrow(); +break; +case 536875070: +this.cmdTimeout(1); +break; +case 4160: +this.cmdTranslate(false); +break; +case 4162: +this.cmdTranslate(true); +break; +case 4163: +this.cmdUnbind(); +break; +case 36868: +break; +case 4166: +this.cmdVibration(); +break; +case 12297: +this.cmdZap(true); +break; +case 4168: +this.cmdZoom(false); +break; +case 4170: +this.cmdZoom(true); +break; +default: +this.checkExtension(this.theToken.tok); +} +}, "~N"); +Clazz_defineMethod(c$, "checkExtension", +function(tok){ +switch (tok) { +case 4098: +case 134221829: +case 4102: +case 4103: +case 4105: +case 134221831: +case 1094717448: +case 4106: +case 528395: +case 1613238294: +case 4120: +case 4122: +case 528443: +case 4124: +case 4125: +case 4126: +case 603983903: +case 1275072532: +case 4130: +case 134221834: +case 4131: +case 4133: +case 134221850: +case 4138: +case 134222350: +case 134221856: +this.getCmdExt().dispatch(tok, false, this.st); +break; +default: +System.out.println(JS.T.nameOf(tok) + " is not a command"); +this.error(47); +} +}, "~N"); +Clazz_defineMethod(c$, "processShapeCommand", +function(tok){ +var iShape = 0; +switch (tok) { +case 1611272194: +iShape = 34; +break; +case 1114249217: +iShape = 9; +break; +case 1812599299: +iShape = 32; +break; +case 1112152066: +iShape = 11; +break; +case 135174: +iShape = 23; +break; +case 134353926: +iShape = 25; +break; +case 135175: +iShape = 17; +break; +case 1112150019: +iShape = 16; +break; +case 135176: +iShape = 22; +break; +case 537022465: +iShape = 31; +break; +case 1112150020: +iShape = 20; +break; +case 1611272202: +iShape = 36; +break; +case 1112150021: +iShape = 19; +break; +case 1112152070: +iShape = 8; +break; +case 135180: +iShape = 24; +break; +case 1825200146: +iShape = 5; +break; +case 135182: +iShape = 26; +break; +case 537006096: +case 1745489939: +iShape = 6; +break; +case 1112152071: +iShape = 13; +break; +case 1073877010: +iShape = 27; +break; +case 1073877011: +iShape = 28; +break; +case 135190: +iShape = 30; +break; +case 135188: +iShape = 29; +break; +case 1275203608: +iShape = 21; +break; +case 1112152073: +iShape = 14; +break; +case 1112152074: +iShape = 15; +break; +case 1112152075: +iShape = 0; +break; +case 1112152076: +iShape = 7; +break; +case 1649022989: +iShape = 12; +break; +case 659482: +iShape = 4; +break; +case 1112152078: +iShape = 10; +break; +case 1814695966: +iShape = 33; +break; +case 135198: +iShape = 18; +break; +case 659488: +iShape = 1; +break; +default: +this.error(47); +} +if (this.sm.getShape(iShape) == null && this.slen == 2) { +switch (this.st[1].tok) { +case 1073742334: +case 12291: +case 1073742333: +return; +} +}switch (tok) { +case 1114249217: +case 1112152066: +case 1112152071: +case 1112152073: +case 1112152074: +case 1649022989: +case 1112152078: +this.setSizeBio(iShape); +return; +case 1112150019: +case 1112150021: +this.cmdDots(iShape); +return; +case 1112152070: +case 1112152075: +case 1112152076: +this.setSize(iShape, (tok == 1112152070 ? -1000.0 : 1)); +return; +case 1825200146: +this.cmdLabel(1, null); +return; +case 135198: +this.cmdVector(); +return; +case 659488: +this.cmdWireframe(); +return; +} +switch (tok) { +case 1611272194: +this.cmdAxes(1); +return; +case 1812599299: +this.cmdBoundbox(1); +return; +case 537022465: +this.cmdEcho(1); +return; +case 1611272202: +this.cmdFrank(1); +return; +case 1814695966: +this.cmdUnitcell(1); +return; +case 1112150020: +case 537006096: +case 1745489939: +case 1275203608: +case 659482: +this.getCmdExt().dispatch(iShape, false, this.st); +return; +case 135174: +case 134353926: +case 135175: +case 135176: +case 135180: +case 135182: +case 1073877010: +case 1073877011: +case 135190: +case 135188: +this.getIsoExt().dispatch(iShape, false, this.st); +return; +} +}, "~N"); +Clazz_defineMethod(c$, "cmdAnimation", +function(){ +var animate = false; +switch (this.getToken(1).tok) { +case 1073742335: +animate = true; +case 1073742334: +if (!this.chk) this.vwr.setAnimationOn(animate); +break; +case 1073742029: +var morphCount = Clazz_floatToInt(this.floatParameter(2)); +if (!this.chk) this.vwr.am.setMorphCount(Math.abs(morphCount)); +break; +case 1610625028: +this.iToken = 2; +var bs = (this.tokAt(2) == 1073742327 ? null : this.atomExpressionAt(2)); +this.checkLength(this.iToken + 1); +if (!this.chk) this.vwr.setAnimDisplay(bs); +return; +case 4115: +if (this.isArrayParameter(2)) this.setFrameSet(2); + else this.cmdModel(2); +break; +case 1073742024: +var startDelay = 1; +var endDelay = 1; +if (this.slen > 5) this.bad(); +var animationMode = JS.T.getTokFromName(this.paramAsStr(2)); +switch (animationMode) { +case 1073742070: +startDelay = endDelay = 0; +break; +case 528411: +case 1073742082: +break; +default: +this.invArg(); +} +if (this.slen >= 4) { +startDelay = endDelay = this.floatParameter(3); +if (this.slen == 5) endDelay = this.floatParameter(4); +}if (!this.chk) this.vwr.am.setAnimationReplayMode(animationMode, startDelay, endDelay); +break; +case 1073741918: +var i = 2; +var direction = 0; +switch (this.tokAt(i)) { +case 268440576: +direction = -this.intParameter(++i); +break; +case 268440577: +direction = this.intParameter(++i); +break; +case 2: +direction = this.intParameter(i); +break; +default: +this.invArg(); +} +this.checkLength(++i); +if (direction != 1 && direction != -1) this.errorStr2(35, "-1", "1"); +if (!this.chk) this.vwr.am.setAnimationDirection(direction); +break; +case 1073741950: +this.setIntProperty("animationFps", this.intParameter(this.checkLast(2))); +break; +default: +this.frameControl(1); +} +}); +Clazz_defineMethod(c$, "setFrameSet", +function(i){ +var frames = this.expandFloatArray(this.floatParameterSet(i, 0, 2147483647), 1, false); +this.checkLength(this.iToken + 1); +if (this.chk) return; +var movie = new java.util.Hashtable(); +if (frames.length > 0) movie.put("frames", frames); +movie.put("currentFrame", Integer.$valueOf(0)); +this.vwr.am.setMovie(movie); +}, "~N"); +Clazz_defineMethod(c$, "cmdAxes", +function(index){ +var tickInfo = this.tickParamAsStr(index, true, true, false); +index = this.iToken + 1; +var tok = this.tokAt(index); +var type = this.optParameterAsString(index).toLowerCase(); +if (this.slen == index + 1 && JU.PT.isOneOf(type, ";window;unitcell;molecular;")) { +this.setBooleanProperty("axes" + type, true); +return; +}switch (tok) { +case 1073742066: +this.setFloatProperty("axisOffset", this.floatParameter(++index)); +this.checkLast(this.iToken); +return; +case 12289: +this.setShapeProperty(34, "origin", this.centerParameter(index + 1, null)); +this.checkLast(this.iToken); +return; +case 1140850696: +var s = this.stringParameter(index + 1); +if (!JU.PT.isOneOf(s, ";a;b;c;ab;ac;bc;abc;")) s = null; +this.setShapeProperty(34, "type", s); +this.checkLast(this.iToken); +return; +case 536875059: +this.setFloatProperty("axesScale", this.floatParameter(this.checkLast(++index))); +return; +case 1825200146: +switch (tok = this.tokAt(index + 1)) { +case 1073742334: +case 1073742335: +this.checkLength(index + 2); +this.setShapeProperty(34, "labels" + (tok == 1073742335 ? "On" : "Off"), null); +return; +} +var sOrigin = null; +switch (this.slen - index) { +case 7: +this.setShapeProperty(34, "labels", Clazz_newArray(-1, [this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index)])); +break; +case 5: +sOrigin = this.paramAsStr(index + 4); +case 4: +this.setShapeProperty(34, "labels", Clazz_newArray(-1, [this.paramAsStr(++index), this.paramAsStr(++index), this.paramAsStr(++index), sOrigin])); +break; +default: +this.bad(); +} +return; +} +if (type.equals("position")) { +var xyp; +if (this.tokAt(++index) == 1073742334) { +xyp = new JU.P3(); +} else { +xyp = this.xypParameter(index); +if (xyp == null) this.invArg(); +index = this.iToken; +this.setShapeProperty(34, "axes2", (this.tokAt(index + 1) == 4 ? this.stringParameter(++index) : null)); +}this.setShapeProperty(34, "position", xyp); +return; +}var mad10 = this.getSetAxesTypeMad10(index); +if (this.chk || mad10 == 2147483647) return; +this.setObjectMad10(34, "axes", mad10); +if (tickInfo != null) this.setShapeProperty(34, "tickInfo", tickInfo); +}, "~N"); +Clazz_defineMethod(c$, "cmdBackground", +function(i){ +this.getToken(i); +var argb; +if (this.theTok == 4120) { +var o = null; +switch (this.tokAt(++i)) { +case 15: +case 6: +o = this.getToken(i).value; +break; +default: +var file = this.paramAsStr(this.checkLast(i)); +if (this.chk) return; +if (file.equalsIgnoreCase("none") || file.length == 0) { +this.vwr.setBackgroundImage(null, null); +return; +}o = (file.startsWith(";base64,") ? new JU.BArray(JU.Base64.decodeBase64(file)) : file); +} +if (this.vwr.fm.loadImage(o, null, !this.useThreads())) throw new JS.ScriptInterruption(this, "backgroundImage", 1); +return; +}if (this.theTok == 1073742333 || this.isColorParam(i)) { +argb = this.getArgbParamLast(i, true); +if (this.chk) return; +this.setObjectArgb("background", argb); +this.vwr.setBackgroundImage(null, null); +return; +}this.colorShape(-this.theTok, i + 1, true); +}, "~N"); +Clazz_defineMethod(c$, "cmdBind", +function(){ +var mouseAction = this.stringParameter(1); +var name = this.paramAsStr(2); +this.checkLength(3); +if (!this.chk) this.vwr.bindAction(mouseAction, name); +}); +Clazz_defineMethod(c$, "cmdBondorder", +function(){ +this.checkLength(-3); +var order = 0; +switch (this.getToken(1).tok) { +case 2: +case 3: +if ((order = JU.Edge.getBondOrderFromFloat(this.floatParameter(1))) == 131071) this.invArg(); +break; +default: +if ((order = JU.Edge.getBondOrderFromString(this.paramAsStr(1))) == 131071) this.invArg(); +if (order == 33 && this.tokAt(2) == 3) { +order = JU.Edge.getPartialBondOrderFromFloatEncodedInt(this.st[2].intValue); +}} +this.setShapeProperty(1, "bondOrder", Integer.$valueOf(order)); +}); +Clazz_defineMethod(c$, "cmdBoundbox", +function(index){ +var tickInfo = this.tickParamAsStr(index, false, true, false); +index = this.iToken + 1; +var scale = 1; +if (this.tokAt(index) == 536875059) { +scale = this.floatParameter(++index); +index++; +if (index == this.slen) { +if (!this.chk) this.vwr.ms.setBoundBox(null, null, true, scale); +return; +}} else if (this.tokAt(index) == 4141) { +if (!this.chk) this.vwr.ms.setBoundBox(null, null, true, 0); +return; +}var byCorner = (this.tokAt(index) == 1073741902); +if (byCorner) index++; +if (this.isCenterParameter(index)) { +var ret = new Array(1); +var index0 = index; +var pt1 = this.centerParameter(index, ret); +index = this.iToken + 1; +if (byCorner || this.isCenterParameter(index)) { +var pt2 = (byCorner ? this.centerParameter(index, ret) : this.getPoint3f(index, true, true)); +index = this.iToken + 1; +if (!this.chk) this.vwr.ms.setBoundBox(pt1, pt2, byCorner, scale); +} else if (ret[0] != null && Clazz_instanceOf(ret[0],"JU.BS")) { +if (!this.chk) this.vwr.calcBoundBoxDimensions(ret[0], scale); +} else if (ret[0] == null && this.tokAt(index0) == 1073742330) { +if (this.chk) return; +var bbox = this.getObjectBoundingBox(this.objectNameParameter(++index0)); +if (bbox == null) this.invArg(); +this.vwr.ms.setBoundBox(bbox[0], bbox[1], true, scale); +index = this.iToken + 1; +} else { +this.invArg(); +}if (index == this.slen) return; +}var mad10 = this.getSetAxesTypeMad10(index); +if (this.chk || mad10 == 2147483647) return; +if (tickInfo != null) this.setShapeProperty(32, "tickInfo", tickInfo); +this.setObjectMad10(32, "boundbox", mad10); +}, "~N"); +Clazz_defineMethod(c$, "cmdCD", +function(){ +if (this.chk) return; +var dir = (this.slen == 1 ? null : this.paramAsStr(1)); +this.showString(this.vwr.cd(dir)); +}); +Clazz_defineMethod(c$, "cmdCenter", +function(i){ +if (this.slen == 1) { +this.vwr.setNewRotationCenter(null); +return; +}if (this.slen == 4 && this.tokAt(2) == 1814695966) i = 2; +var center = this.centerParameter(i, null); +if (center == null) this.invArg(); +if (!this.chk) this.vwr.setNewRotationCenter(center); +}, "~N"); +Clazz_defineMethod(c$, "cmdColor", +function(){ +var i = 1; +var strColor = (this.tokAt(1) == 4 ? this.stringParameter(1) : null); +if (this.isColorParam(1)) { +this.theTok = 1153433601; +} else { +var argb = 0; +i = 2; +var tok = this.getToken(1).tok; +if (tok == 4) { +tok = JS.T.getTokFromName(strColor); +if (tok == 0 || tok == 1073742186) tok = 4; +}switch (tok) { +case 1073742330: +this.setObjectProperty(); +return; +case 1086324739: +case 2097154: +case 2097166: +case 1086326788: +case 1073741946: +case 1631586315: +case 1086324742: +case 1113589786: +case 1086324746: +case 1073741991: +case 1094713360: +case 1094713361: +case 1073742333: +case 1073742074: +case 1111492619: +case 1094713362: +case 1715472409: +case 1073742116: +case 1073742110: +case 1112152075: +case 1073742144: +case 1111490574: +case 1639976963: +case 1111490575: +case 1111492620: +case 603979967: +case 1648363544: +this.theTok = 1153433601; +i = 1; +break; +case 4: +i = 2; +if (this.isArrayParameter(i)) { +strColor = strColor += "=" + JS.SV.sValue(JS.SV.getVariableAS(this.stringParameterSet(i))).$replace('\n', ' '); +i = this.iToken + 1; +}var isTranslucent = (this.tokAt(i) == 603979967); +if (!this.chk) this.vwr.setPropertyColorScheme(strColor, isTranslucent, true); +if (isTranslucent) ++i; +if (this.tokAt(i) == 1073742114 || this.tokAt(i) == 1073741826) { +var min = this.floatParameter(++i); +var max = this.floatParameter(++i); +if (!this.chk) this.vwr.cm.setPropertyColorRange(min, max); +}return; +case 1073742114: +case 1073741826: +var min = this.floatParameter(2); +var max = this.floatParameter(this.checkLast(3)); +if (!this.chk) this.vwr.cm.setPropertyColorRange(min, max); +return; +case 1610616835: +argb = this.getArgbParamLast(2, true); +if (!this.chk) this.setObjectArgb("background", argb); +return; +case 12290: +case 10: +case 1073742325: +i = -1; +this.theTok = 1153433601; +break; +case 1073742134: +argb = this.getArgbParamLast(2, false); +if (!this.chk) this.vwr.cm.setRubberbandArgb(argb); +return; +case 536870920: +case 1611141172: +i = 2; +if (this.tokAt(2) == 1073742074) i++; +argb = this.getArgbParamLast(i, true); +if (this.chk) return; +this.sm.loadShape(8); +this.setShapeProperty(8, (tok == 1611141172 ? "argbSelection" : "argbHighlight"), Integer.$valueOf(argb)); +return; +case 1611272194: +case 1812599299: +case 1814695966: +case 1073741824: +case 1612709900: +var str = this.paramAsStr(1); +if (this.checkToken(2)) { +argb = this.getToken(2).tok; +switch (argb) { +case 1073742333: +argb = 1073741991; +break; +case 1073741991: +case 1073742116: +case 1073742110: +break; +default: +argb = this.getArgbParam(2); +} +}if (argb == 0) this.error(9); +this.checkLast(this.iToken); +if (str.equalsIgnoreCase("axes") || JV.StateManager.getObjectIdFromName(str) >= 0) { +this.setObjectArgb(str, argb); +return; +}if (this.setElementColor(str, argb)) return; +this.invArg(); +break; +case 135180: +case 134353926: +this.setShapeProperty(JV.JC.shapeTokenIndex(tok), "thisID", "+PREVIOUS_MESH+"); +break; +} +}this.colorShape(-this.theTok, i, false); +}); +Clazz_defineMethod(c$, "cmdDefine", +function(){ +if (this.slen < 3 || !((typeof(this.getToken(1).value)=='string'))) this.invArg(); +var setName = (this.getToken(1).value).toLowerCase(); +if (JU.PT.parseInt(setName) != -2147483648) this.invArg(); +if (this.chk) return; +var isSite = setName.startsWith("site_"); +var isDynamic = (setName.indexOf("dynamic_") == 0); +if (isDynamic || isSite) { +var code = new Array(this.slen); +for (var i = this.slen; --i >= 0; ) code[i] = this.st[i]; + +this.vwr.definedAtomSets.put("!" + (isSite ? setName : setName.substring(8)), code); +} else { +var bs = this.atomExpressionAt(2); +this.vwr.definedAtomSets.put(setName, bs); +if (!this.chk) this.vwr.g.setUserVariable("@" + setName, JS.SV.newV(10, bs)); +}}); +Clazz_defineMethod(c$, "cmdDelay", +function(){ +var millis = 0; +switch (this.getToken(1).tok) { +case 1073742335: +millis = 1; +break; +case 2: +millis = this.intParameter(1) * 1000; +break; +case 3: +millis = Clazz_floatToInt(this.floatParameter(1) * 1000); +break; +default: +this.error(34); +} +this.refresh(false); +this.doDelay(Math.abs(millis)); +}); +Clazz_defineMethod(c$, "cmdDelete", +function(){ +if (this.tokAt(1) == 1073742330) { +if (this.slen == 4 && this.optParameterAsString(2).equals("saved") && this.slen == 4) { +this.vwr.stm.deleteSaved(this.optParameterAsString(3)); +if (this.doReport()) this.report(J.i18n.GT.o(J.i18n.GT.$("show saved: {0}"), this.vwr.stm.listSavedStates()), false); +return; +}this.setObjectProperty(); +return; +}var bs = (this.slen == 1 ? null : this.atomExpression(this.st, 1, 0, true, false, null, false)); +if (this.chk) return; +if (bs == null) bs = this.vwr.getAllAtoms(); +var nDeleted = this.vwr.deleteAtoms(bs, false); +if (this.doReport()) this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms deleted"), nDeleted), false); +}); +Clazz_defineMethod(c$, "cmdDisplay", +function(isDisplay){ +var bs = null; +var addRemove = 0; +var i = 1; +var tok; +switch (tok = this.tokAt(1)) { +case 1275069441: +case 1073742119: +addRemove = tok; +tok = this.tokAt(++i); +break; +} +var isGroup = (tok == 1086324742); +if (isGroup) tok = this.tokAt(++i); +switch (tok) { +case 1073742330: +this.setObjectProperty(); +return; +case 0: +break; +default: +if (this.slen == 4 && this.tokAt(2) == 1677721602) bs = JM.BondSet.newBS(JU.BSUtil.newBitSet2(0, this.vwr.ms.bondCount)); + else bs = this.atomExpressionAt(i); +} +if (this.chk) return; +if (Clazz_instanceOf(bs,"JM.BondSet")) { +this.vwr.ms.displayBonds(bs, isDisplay); +return; +}this.vwr.displayAtoms(bs, isDisplay, isGroup, addRemove, this.tQuiet); +}, "~B"); +Clazz_defineMethod(c$, "cmdDots", +function(iShape){ +if (!this.chk) this.sm.loadShape(iShape); +this.setShapeProperty(iShape, "init", null); +var value = NaN; +var type = J.atomdata.RadiusData.EnumType.ABSOLUTE; +var ipt = 1; +var isOnly = false; +while (true) { +switch (this.getToken(ipt).tok) { +case 1073742072: +isOnly = true; +case 1073742335: +value = 1; +type = J.atomdata.RadiusData.EnumType.FACTOR; +break; +case 1073742334: +value = 0; +break; +case 1073741976: +this.setShapeProperty(iShape, "ignore", this.atomExpressionAt(ipt + 1)); +ipt = this.iToken + 1; +continue; +case 3: +isOnly = (this.tokAt(ipt + 1) == 1073742072 || this.floatParameter(ipt) < 0); +break; +case 2: +var dotsParam = this.intParameter(ipt); +if (this.tokAt(ipt + 1) == 1665140738) { +ipt++; +this.setShapeProperty(iShape, "atom", Integer.$valueOf(dotsParam)); +this.setShapeProperty(iShape, "radius", Float.$valueOf(this.floatParameter(++ipt))); +if (this.tokAt(++ipt) == 1765808134) { +this.setShapeProperty(iShape, "colorRGB", Integer.$valueOf(this.getArgbParam(++ipt))); +ipt++; +}if (this.getToken(ipt).tok != 10) this.invArg(); +this.setShapeProperty(iShape, "dots", this.st[ipt].value); +return; +}break; +} +break; +} +var rd = (Float.isNaN(value) ? this.encodeRadiusParameter(ipt, isOnly, true) : new J.atomdata.RadiusData(null, value, type, J.c.VDW.AUTO)); +if (rd == null) return; +if (Float.isNaN(rd.value)) this.invArg(); +if (isOnly) { +this.restrictSelected(false, false); +}this.setShapeSize(iShape, rd); +}, "~N"); +Clazz_defineMethod(c$, "cmdEcho", +function(index){ +if (this.chk) return; +var text = this.optParameterAsString(index); +var doRefresh = true; +if (this.vwr.ms.getEchoStateActive()) { +if (text.startsWith("\1")) { +text = text.substring(1); +doRefresh = false; +}if (text != null) this.setShapeProperty(31, "text", text); +}if (doRefresh && this.vwr.getRefreshing() && text != null && !text.startsWith("%SCALE")) this.showString(this.vwr.formatText(text)); +}, "~N"); +Clazz_defineMethod(c$, "cmdFile", +function(){ +var file = this.intParameter(this.checkLast(1)); +if (this.chk) return; +var modelIndex = this.vwr.ms.getModelNumberIndex(file * 1000000 + 1, false, false); +var modelIndex2 = -1; +if (modelIndex >= 0) { +modelIndex2 = this.vwr.ms.getModelNumberIndex((file + 1) * 1000000 + 1, false, false); +if (modelIndex2 < 0) modelIndex2 = this.vwr.ms.mc; +modelIndex2--; +}this.vwr.setAnimationOn(false); +this.vwr.am.setAnimationDirection(1); +this.vwr.setAnimationRange(modelIndex, modelIndex2); +this.vwr.setCurrentModelIndex(-1); +}); +Clazz_defineMethod(c$, "cmdFixed", +function(){ +var bs = (this.slen == 1 ? null : this.atomExpressionAt(1)); +if (this.chk) return; +this.vwr.setMotionFixedAtoms(bs); +}); +Clazz_defineMethod(c$, "cmdFor", +function(tok, isForCheck){ +var cmdToken = this.theToken; +var pt = this.st[0].intValue; +var forVars = cmdToken.forVars; +var pts = Clazz_newIntArray (2, 0); +var bsOrList = null; +var forVal = null; +var forVar = null; +var inTok = 0; +var isOK = true; +var isMinusMinus = false; +var j = 0; +var key = null; +if (isForCheck && forVars != null) { +tok = 1275068432; +forVar = forVars[0]; +forVal = forVars[1]; +bsOrList = forVars[1].value; +j = ++forVal.intValue; +if (forVal.tok == 2) { +isMinusMinus = (j < 0); +var i1 = (bsOrList)[0]; +var i2 = (bsOrList)[1]; +isOK = (i1 != i2 && (i2 < i1) == isMinusMinus); +if (isOK) forVar.intValue = (bsOrList)[0] = i1 + (isMinusMinus ? -1 : 1); +j = -1; +} else if (forVal.tok == 7) { +isOK = (j <= (bsOrList).size()); +if (isOK) forVar.setv(JS.SV.selectItemVar(forVal)); +j = -1; +} else { +this.isBondSet = Clazz_instanceOf(bsOrList,"JM.BondSet"); +j = (bsOrList).nextSetBit(j); +isOK = (j >= 0); +}} else { +var isLocal = false; +for (var i = 1, nSkip = 0; i < this.slen && j < 2; i++) { +switch (tok = this.tokAt(i)) { +case 36868: +isLocal = true; +break; +case 1073742339: +if (nSkip > 0) nSkip--; + else pts[j++] = i; +break; +case 1275068432: +case 1073741952: +key = this.paramAsStr(i - 1); +nSkip -= 2; +if (this.isAtomExpression(++i)) { +inTok = 10; +bsOrList = this.atomExpressionAt(i); +if (this.isBondSet) bsOrList = JM.BondSet.newBS(bsOrList); +isOK = ((bsOrList).nextSetBit(0) >= 0); +} else { +var what = this.parameterExpressionList(-i, 1, false); +if (what == null || what.size() < 1) this.invArg(); +var vl = what.get(0); +switch (inTok = vl.tok) { +case 10: +bsOrList = vl.value; +isOK = !(bsOrList).isEmpty(); +break; +case 7: +var v = vl.getList(); +j = v.size(); +isOK = (j > 0); +if (isOK && tok == 1073741952) { +var i12 = Clazz_newIntArray(-1, [JS.SV.iValue(v.get(0)), JS.SV.iValue(v.get(j - 1))]); +isMinusMinus = (i12[1] < i12[0]); +bsOrList = i12; +tok = 1275068432; +inTok = 2; +} else { +bsOrList = v; +}break; +case 6: +var m = vl.getMap(); +var n = m.keySet().size(); +isOK = (n > 0); +if (isOK) { +var keys = new Array(n); +m.keySet().toArray(keys); +java.util.Arrays.sort(keys); +bsOrList = keys; +}break; +default: +this.invArg(); +} +}i = this.iToken; +break; +case 1275082241: +nSkip += 2; +break; +} +} +if (!isForCheck) { +this.pushContext(cmdToken, "FOR"); +this.thisContext.forVars = forVars; +forVars = null; +}if (key == null) { +if (isForCheck) { +j = (bsOrList == null ? pts[1] + 1 : 2); +} else { +j = 2; +}if (this.tokAt(j) == 36868) j++; +key = this.paramAsStr(j); +isMinusMinus = key.equals("--") || key.equals("++"); +if (isMinusMinus) key = this.paramAsStr(++j); +}if (isOK) if (tok == 1275068432) { +forVar = this.getContextVariableAsVariable(key, isLocal); +if (forVar == null && !isLocal) forVar = this.vwr.g.getAndSetNewVariable(key, false); +if (forVar == null || forVar.myName == null) { +if (key.startsWith("_")) this.invArg(); +if (isLocal) this.contextVariables.put(key.toLowerCase(), forVar = JS.SV.newI(0)); + else forVar = this.vwr.g.getAndSetNewVariable(key, true); +}if (inTok == 2) { +forVar.tok = 2; +forVar.intValue = (bsOrList)[0]; +forVal = JS.SV.newV(2, bsOrList); +forVal.intValue = (isMinusMinus ? -2147483648 : 0); +j = -1; +} else { +forVal = JS.SV.getVariable(bsOrList); +if (inTok == 10) { +j = (bsOrList).nextSetBit(0); +forVal.intValue = 0; +} else { +forVal.intValue = 1; +forVar.setv(JS.SV.selectItemVar(forVal)); +j = -1; +}}if (forVars == null) forVars = cmdToken.forVars = new Array(2); +forVars[0] = forVar; +forVars[1] = forVal; +} else { +var vtok = this.tokAt(j); +if (vtok != 1073742339 && (JS.T.tokAttr(vtok, 1073741824) || (forVal = this.getContextVariableAsVariable(key, false)) != null)) { +if (!isMinusMinus && this.getToken(++j).tok != 268440324) this.invArg(); +if (isMinusMinus) j -= 2; +this.setVariable(++j, this.slen - 1, key, false); +}isOK = (pts[0] + 1 == pts[1] || this.parameterExpressionBoolean(pts[0] + 1, pts[1])); +}}if (isOK && tok == 1275068432 && j >= 0) { +forVal.intValue = j; +forVar.tok = 10; +if (this.isBondSet) { +forVar.value = new JM.BondSet(); +(forVar.value).set(j); +} else { +forVar.value = JU.BSUtil.newAndSetBit(j); +}}pt++; +if (!isOK) { +cmdToken.forVars = this.thisContext.forVars; +this.popContext(true, false); +}isForCheck = false; +if (!isOK && !this.chk) this.pc = Math.abs(pt) - 1; +return isForCheck; +}, "~N,~B"); +Clazz_defineMethod(c$, "cmdFlow", +function(tok, isForCheck, vProcess){ +var ct; +var pt = this.st[0].intValue; +var isDone = (pt < 0 && !this.chk); +var continuing = true; +var ptNext = 0; +switch (tok) { +case 134320141: +case 102436: +this.cmdFunc(); +return isForCheck; +case 364558: +return isForCheck; +case 102412: +ct = this.theToken; +this.pushContext(ct, "CATCH"); +if (!isDone && ct.name0 != null) this.contextVariables.put(ct.name0, ct.contextVariables.get(ct.name0)); +continuing = !isDone; +this.st[0].intValue = -Math.abs(pt); +break; +case 102410: +case 102413: +case 102411: +ptNext = Math.abs(this.aatoken[Math.abs(pt)][0].intValue); +switch (isDone ? 0 : this.cmdFlowSwitch(this.theToken, tok)) { +case 0: +ptNext = -ptNext; +continuing = false; +break; +case -1: +continuing = false; +break; +case 1: +} +this.aatoken[this.pc][0].intValue = Math.abs(pt); +this.theToken = this.aatoken[Math.abs(pt)][0]; +if (this.theToken.tok != 102409) this.theToken.intValue = ptNext; +break; +case 134320649: +case 102402: +continuing = (!isDone && this.parameterExpressionBoolean(1, 0)); +if (this.chk) break; +ptNext = Math.abs(this.aatoken[Math.abs(pt)][0].intValue); +ptNext = (isDone || continuing ? -ptNext : ptNext); +this.aatoken[Math.abs(pt)][0].intValue = ptNext; +if (tok == 102412) this.aatoken[this.pc][0].intValue = -pt; +break; +case 364547: +this.checkLength(1); +if (pt < 0 && !this.chk) this.pc = -pt - 1; +break; +case 364548: +this.checkLength(1); +break; +case 102406: +if (!isForCheck) this.pushContext(this.theToken, "WHILE"); +isForCheck = false; +if (!this.parameterExpressionBoolean(1, 0) && !this.chk) { +this.pc = pt; +this.popContext(true, false); +}break; +case 102407: +if (!this.chk) { +this.breakAt(pt); +break; +}if (this.slen == 1) break; +var n = this.intParameter(this.checkLast(1)); +if (this.chk) break; +for (var i = 0; i < n; i++) this.popContext(true, false); + +break; +case 102408: +isForCheck = true; +if (!this.chk) this.pc = pt - 1; +if (this.slen > 1) this.intParameter(this.checkLast(1)); +break; +case 102409: +switch (this.getToken(this.checkLast(1)).tok) { +case 364558: +var trycmd = this.getToken(1).value; +if (this.chk) return false; +this.runFunctionAndRet(trycmd, "try", null, null, true, true, true); +return false; +case 134320141: +case 102436: +this.addFunction(this.theToken.value); +return isForCheck; +case 102412: +this.popContext(true, false); +break; +case 102439: +this.addProcess(vProcess, pt, this.pc); +this.popContext(true, false); +break; +case 102410: +if (pt > 0 && this.cmdFlowSwitch(this.aatoken[pt][0], 0) == -1) { +for (; pt < this.pc; pt++) if ((tok = this.aatoken[pt][0].tok) != 102413 && tok != 102411) break; + +continuing = (this.pc == pt); +}break; +case 134320649: +break; +case 134320648: +case 102406: +continuing = false; +isForCheck = true; +break; +} +break; +} +if (!continuing && !this.chk) this.pc = Math.abs(pt) - 1; +return isForCheck; +}, "~N,~B,JU.Lst"); +Clazz_defineMethod(c$, "cmdFlowSwitch", +function(c, tok){ +if (tok == 102410) c.addName("_var"); +var $var = c.contextVariables.get("_var"); +if ($var == null) return 1; +if (tok == 0) { +c.contextVariables.remove("_var"); +return -1; +}if (tok == 102413) return -1; +var v = this.parameterExpressionToken(1); +if (tok == 102411) { +var isOK = JS.SV.areEqual($var, v); +if (isOK) c.contextVariables.remove("_var"); +return isOK ? 1 : -1; +}c.contextVariables.put("_var", v); +return 1; +}, "JS.ContextToken,~N"); +Clazz_defineMethod(c$, "cmdFont", +function(shapeType, fontsize){ +var fontface = "SansSerif"; +var fontstyle = "Plain"; +var name = "font"; +var sizeAdjust = 0; +var scaleAngstromsPerPixel = -1; +switch (this.iToken = this.slen) { +case 6: +scaleAngstromsPerPixel = this.floatParameter(5); +if (scaleAngstromsPerPixel >= 5) scaleAngstromsPerPixel = this.vwr.tm.getZoomSetting() / scaleAngstromsPerPixel / this.vwr.getScalePixelsPerAngstrom(false); +case 5: +if (this.getToken(4).tok != 1073741824) this.invArg(); +fontstyle = this.paramAsStr(4); +case 4: +if (this.getToken(3).tok != 1073741824) this.invArg(); +fontface = this.paramAsStr(3); +if (!this.isFloatParameter(2)) this.error(34); +fontsize = this.floatParameter(2); +shapeType = -1; +break; +case 3: +if (!this.isFloatParameter(2)) this.error(34); +if (shapeType == -1) { +fontsize = this.floatParameter(2); +} else { +if (fontsize >= 1) fontsize += (sizeAdjust = 5); +fontface = null; +}break; +case 2: +default: +if (shapeType == 5) { +fontsize = 13; +name = "fontsize"; +break; +}this.bad(); +} +var isScale = (this.tokAt(1) == 536875059); +if (shapeType == -1) shapeType = (isScale ? 31 : this.getShapeType(this.getToken(1).tok)); +if (shapeType == 5) { +if (fontsize < 0 || fontsize >= 1 && (fontsize < 6 || fontsize > 63)) { +this.integerOutOfRange(6 - sizeAdjust, 63 - sizeAdjust); +return; +}if (!this.chk) this.setShapeProperty(5, "setDefaults", fontsize == 0 ? this.vwr.slm.noneSelected : Boolean.FALSE); +}if (this.chk) return; +var value; +if (name === "font") { +if (JU.Font.getFontStyleID(fontface) >= 0) { +fontstyle = fontface; +fontface = "SansSerif"; +}value = this.vwr.getFont3D(fontface, fontstyle, fontsize); +} else { +value = Float.$valueOf(fontsize); +}this.sm.loadShape(shapeType); +if (isScale) this.setShapeProperty(31, "target", "%SCALE"); +this.setShapeProperty(shapeType, name, value); +if (scaleAngstromsPerPixel >= 0) this.setShapeProperty(shapeType, "scalereference", Float.$valueOf(scaleAngstromsPerPixel)); +if (isScale) this.setShapeProperty(31, "thisID", null); +}, "~N,~N"); +Clazz_defineMethod(c$, "cmdFrank", +function(i){ +var b = true; +if (this.slen > i) switch (this.getToken(this.checkLast(i)).tok) { +case 1073742335: +break; +case 1073742334: +b = false; +break; +default: +this.error(5); +} +this.setBooleanProperty("frank", b); +}, "~N"); +Clazz_defineMethod(c$, "cmdFunc", +function(){ +if (this.chk && !this.isCmdLine_c_or_C_Option) return; +var name = (this.getToken(0).value).toLowerCase(); +if (this.tokAt(1) == 268440324 && this.tokAt(2) == 1073742333) { +this.vwr.removeFunction(name); +return; +}if (!this.isFunction(name)) this.error(10); +var params = (this.slen == 1 || this.slen == 3 && this.tokAt(1) == 268435968 && this.tokAt(2) == 268435969 ? null : this.parameterExpressionList(1, -1, false)); +if (this.chk) return; +this.runFunctionAndRet(null, name, params, null, false, true, true); +}); +Clazz_defineMethod(c$, "cmdGetProperty", +function(){ +if (this.chk) return; +var retValue = ""; +var property = this.optParameterAsString(1); +var name = property; +if (name.indexOf(".") >= 0) name = name.substring(0, name.indexOf(".")); +if (name.indexOf("[") >= 0) name = name.substring(0, name.indexOf("[")); +var propertyID = this.vwr.getPropertyNumber(name); +var param = ""; +switch (this.tokAt(2)) { +default: +param = this.optParameterAsString(2); +break; +case 12290: +case 1073742325: +case 10: +param = this.atomExpressionAt(2); +if (property.equalsIgnoreCase("bondInfo") && this.isAtomExpression(++this.iToken)) param = Clazz_newArray(-1, [param, this.atomExpressionAt(this.iToken)]); +break; +} +if (property.length > 0 && propertyID < 0) { +property = ""; +param = ""; +} else if (propertyID >= 0 && this.slen < 3) { +if ((param = this.vwr.getDefaultPropertyParam(propertyID)).equals("(visible)")) param = this.vwr.ms.getVisibleSet(true); +} else if (propertyID == this.vwr.getPropertyNumber("fileContents")) { +var s = param.toString(); +for (var i = 3; i < this.slen; i++) s += this.paramAsStr(i); + +param = s; +}retValue = this.vwr.getProperty("readable", property, param); +this.showString(retValue); +}); +Clazz_defineMethod(c$, "cmdGoto", +function(isCmd){ +var strTo = (isCmd ? this.paramAsStr(this.checkLast(1)) : null); +var pcTo = (strTo == null ? this.aatoken.length - 1 : -1); +var s = null; +for (var i = pcTo + 1; i < this.aatoken.length; i++) { +var tokens = this.aatoken[i]; +var tok = tokens[0].tok; +switch (tok) { +case 20485: +case 0: +s = tokens[tokens.length - 1].value; +if (tok == 0) s = s.substring(s.startsWith("#") ? 1 : 2); +break; +default: +continue; +} +if (s.equalsIgnoreCase(strTo)) { +pcTo = i; +break; +}} +if (pcTo < 0) this.invArg(); +if (strTo == null) pcTo = 0; +var di = (pcTo < this.pc ? 1 : -1); +var nPush = 0; +for (var i = pcTo; i != this.pc; i += di) { +switch (this.aatoken[i][0].tok) { +case 1275335685: +case 102439: +case 134320648: +case 102412: +case 102406: +nPush++; +break; +case 1275334681: +nPush--; +break; +case 102409: +switch (this.aatoken[i][1].tok) { +case 102439: +case 134320648: +case 102412: +case 102406: +nPush--; +} +break; +} +} +if (strTo == null) { +pcTo = 2147483647; +for (; nPush > 0; --nPush) this.popContext(false, false); + +}if (nPush != 0) this.invArg(); +if (!this.chk) this.pc = pcTo - 1; +}, "~B"); +Clazz_defineMethod(c$, "cmdHbond", +function(){ +if (this.slen == 2 && this.getToken(1).tok == 4102) { +if (this.chk) return; +var n = this.vwr.autoHbond(null, null, false); +this.report(J.i18n.GT.i(J.i18n.GT.$("{0} hydrogen bonds"), Math.abs(n)), false); +return; +}if (this.slen == 2 && this.getToken(1).tok == 12291) { +if (this.chk) return; +this.checkExtension(1613238294); +return; +}var mad = this.getMadParameter(); +if (mad == 2147483647) return; +this.setShapeProperty(1, "type", Integer.$valueOf(30720)); +this.setShapeSizeBs(1, mad, null); +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +}); +Clazz_defineMethod(c$, "cmdHelp", +function(){ +if (this.chk) return; +var what = this.optParameterAsString(1).toLowerCase(); +var pt = 0; +if (what.startsWith("mouse") && (pt = what.indexOf(" ")) >= 0 && pt == what.lastIndexOf(" ")) { +this.showString(this.vwr.getBindingInfo(what.substring(pt + 1))); +return; +}if (JS.T.tokAttr(JS.T.getTokFromName(what), 4096)) what = "?command=" + what; +this.vwr.getHelp(what); +}); +Clazz_defineMethod(c$, "cmdHistory", +function(pt){ +if (this.slen == 1) { +this.showString(this.vwr.getSetHistory(2147483647)); +return; +}if (pt == 2) { +var n = this.intParameter(this.checkLast(2)); +if (n < 0) this.invArg(); +if (!this.chk) this.vwr.getSetHistory(n == 0 ? 0 : -2 - n); +return; +}switch (this.getToken(this.checkLast(1)).tok) { +case 1073742335: +case 1073741882: +if (!this.chk) this.vwr.getSetHistory(-2147483648); +return; +case 1073742334: +if (!this.chk) this.vwr.getSetHistory(0); +break; +default: +this.errorStr(24, "ON, OFF, CLEAR"); +} +}, "~N"); +Clazz_defineMethod(c$, "cmdHover", +function(){ +if (this.chk) return; +var strLabel = (this.slen == 1 ? "on" : this.paramAsStr(1)); +if (strLabel.equalsIgnoreCase("on")) strLabel = "%U"; + else if (strLabel.equalsIgnoreCase("off")) strLabel = null; +this.vwr.setHoverLabel(strLabel); +}); +Clazz_defineMethod(c$, "cmdLabel", +function(index, bs){ +if (this.chk) return; +this.sm.loadShape(5); +var strLabel = null; +switch (this.getToken(index).tok) { +case 1073742335: +strLabel = this.vwr.getStandardLabelFormat(0); +break; +case 1073742334: +break; +case 12294: +case 1610625028: +this.setShapeProperty(5, "display", this.theTok == 1610625028 ? Boolean.TRUE : Boolean.FALSE); +return; +case 7: +strLabel = this.theToken.value; +break; +default: +strLabel = this.paramAsStr(index); +} +this.sm.setLabel(strLabel, bs == null ? this.vwr.bsA() : bs); +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "cmdLoad", +function(){ +var doLoadFiles = (!this.chk || this.isCmdLine_C_Option); +var isAppend = false; +var isInline = false; +var isSmiles = false; +var isMutate = false; +var isData = false; +var isAsync = this.vwr.async; +var isConcat = false; +var doOrient = false; +var appendNew = this.vwr.getBoolean(603979792); +var isAudio = false; +var filename = null; +var bsModels; +var i = (this.tokAt(0) == 134221834 ? 0 : 1); +var filter = null; +var modelCount0 = this.vwr.ms.mc - (this.vwr.fm.getFileName().equals("zapped") ? 1 : 0); +var ac0 = this.vwr.ms.ac; +var loadScript = new JU.SB().append("load"); +var nFiles = 1; +var htParams = new java.util.Hashtable(); +if (this.$isStateScript) { +htParams.put("isStateScript", Boolean.TRUE); +if (this.forceNoAddHydrogens) htParams.put("doNotAddHydrogens", Boolean.TRUE); +}var modelName = null; +var filenames = null; +var tempFileInfo = null; +var errMsg = null; +var sOptions = new JU.SB(); +var tokType = 0; +var tok; +if (this.slen == 1) { +i = 0; +} else { +modelName = this.paramAsStr(i); +if (this.slen == 2 && !this.chk) { +if (modelName.endsWith(".spt") || modelName.endsWith(".png") || modelName.endsWith(".pngj")) { +this.cmdScript(0, modelName, null, null); +return; +}}tok = this.tokAt(i); +switch (tok) { +case 1073742077: +doOrient = true; +loadScript.append(" orientation"); +this.vwr.stm.saveOrientation("preload", null); +modelName = this.paramAsStr(++i); +tok = JS.T.getTokFromName(modelName); +break; +} +switch (tok) { +case 1073741839: +modelName = this.optParameterAsString(++i); +var ami = JU.PT.parseInt(modelName); +isAppend = (!this.$isStateScript || this.vwr.ms.mc > 0); +if (isAppend) loadScript.append(" append"); +if (ami >= 0) { +modelName = this.optParameterAsString(++i); +if (isAppend) { +loadScript.append(" " + ami); +appendNew = false; +htParams.put("appendToModelIndex", Integer.$valueOf(ami)); +}}tok = JS.T.getTokFromName(modelName); +break; +case 1073877011: +case 1610616855: +case 1073742015: +var m = this.paramAsStr(this.checkLast(2)); +if (!this.chk) { +switch (tok) { +case 1073877011: +htParams.put("service", "nbo"); +htParams.put("mode", Integer.$valueOf(1)); +htParams.put("action", "load"); +htParams.put("value", m); +htParams.put("sync", Boolean.TRUE); +this.vwr.sm.processService(htParams); +this.runScript(htParams.get("ret")); +break; +case 1610616855: +this.vwr.setHistory(m); +break; +case 1073742015: +this.vwr.setMenu(m, true); +break; +} +}return; +case 4130: +isMutate = isAppend = true; +appendNew = false; +loadScript.append(" mutate"); +modelName = this.optParameterAsString(++i); +tok = JS.T.getTokFromName(modelName); +htParams.put("appendToModelIndex", Integer.$valueOf(this.vwr.am.cmi)); +break; +case 1073741851: +isAudio = true; +i++; +break; +case 1073741824: +i++; +loadScript.append(" " + modelName); +tokType = (tok == 1073741824 && JU.PT.isOneOf(modelName.toLowerCase(), ";xyz;vxyz;vibration;temperature;occupancy;partialcharge;") ? JS.T.getTokFromName(modelName) : 0); +if (tokType != 0) { +htParams.put("atomDataOnly", Boolean.TRUE); +htParams.put("modelNumber", Integer.$valueOf(1)); +if (tokType == 4166) tokType = 1145047055; +tempFileInfo = this.vwr.fm.getFileInfo(); +isAppend = true; +}} +switch (tok) { +case 1228935687: +i++; +loadScript.append(" " + modelName); +if (this.optParameterAsString(i).equals("+")) { +isConcat = true; +i++; +loadScript.append(" +"); +}if (this.optParameterAsString(i).equals("-")) { +isConcat = true; +i++; +loadScript.append(" -"); +}if (this.tokAt(i) == 7) { +filenames = this.stringParameterSet(i); +i = this.iToken; +if (i + 1 != this.slen) this.invArg(); +if (filenames != null) nFiles = filenames.length; +}break; +case 134217764: +if (this.slen < i + 4) this.invArg(); +i -= 2; +filename = "0"; +htParams.put("isEmptyLoad", Boolean.TRUE); +case 1073741984: +isInline = true; +i++; +loadScript.append(" inline"); +break; +case 134218757: +isSmiles = true; +i++; +break; +case 1073741849: +isAsync = true; +htParams.put("async", Boolean.TRUE); +i++; +break; +case 536870926: +case 1094717454: +i++; +loadScript.append(" " + modelName); +if (tok == 536870926) htParams.put("isTrajectory", Boolean.TRUE); +if (this.isPoint3f(i)) { +var pt = this.getPoint3f(i, false, true); +i = this.iToken + 1; +htParams.put("firstLastStep", Clazz_newIntArray(-1, [Clazz_floatToInt(pt.x), Clazz_floatToInt(pt.y), Clazz_floatToInt(pt.z)])); +loadScript.append(" " + JU.Escape.eP(pt)); +} else { +switch (this.tokAt(i)) { +case 10: +bsModels = this.getToken(i++).value; +htParams.put("bsModels", bsModels); +loadScript.append(" " + JU.Escape.eBS(bsModels)); +break; +default: +htParams.put("firstLastStep", Clazz_newIntArray(-1, [0, -1, 1])); +} +}break; +case 1073741824: +break; +case 134221834: +var key = this.stringParameter(++i).toLowerCase(); +modelName = this.optParameterAsString(i + 1); +isAppend = key.startsWith("append"); +if (isAppend && key.startsWith("append modelindex=")) { +var ami = JU.PT.parseInt(key.substring(18)); +if (ami >= 0) { +appendNew = false; +htParams.put("appendToModelIndex", Integer.$valueOf(ami)); +}}doOrient = (key.indexOf("orientation") >= 0); +i = this.addLoadData(loadScript, key, htParams, i); +isData = true; +break; +default: +modelName = "fileset"; +} +if (filename == null && filenames == null && this.getToken(i).tok != 4) this.error(16); +}var filePt = i; +var ptAs = i + 1; +var localName = null; +if (this.tokAt(ptAs) == 1073741848) { +localName = this.stringParameter(i = ptAs + 1); +if (this.vwr.fm.getPathForAllFiles() !== "") { +localName = null; +filePt = i; +}}var appendedData = null; +var appendedKey = null; +if (isSmiles && this.tokAt(i + 1) == 1073741940) { +++i; +filter = this.stringParameter(++i); +}if (this.slen == i + 1) { +if (filename == null && (i == 0 || filenames == null && (filename = this.paramAsStr(filePt)).length == 0)) filename = this.getFullPathName(true); +if (filename == null && filenames == null) { +this.cmdZap(false); +return; +}if (filenames == null && !isInline) { +if (isSmiles) { +filename = "$" + filename; +} else { +if (filename.equals("String[]")) return; +if (filename.indexOf("[") == 0) { +filenames = JU.Escape.unescapeStringArray(filename); +if (filenames != null) { +if (i == 1) loadScript.append(" files"); +nFiles = filenames.length; +}}}}if (filenames != null) for (var j = 0; j < nFiles; j++) loadScript.append(" /*file*/").append(JU.PT.esc(filenames[j])); + +} else if (this.isLoadOption(this.getToken(i + 1).tok)) { +if (filename == null && (filename = this.paramAsStr(filePt)).length == 0 && (filename = this.getFullPathName(true)) == null) { +this.cmdZap(false); +return; +}if (filePt == i || localName != null) i++; +if (filename.equals("String[]")) return; +if ((tok = this.tokAt(i)) == 1073742010) { +var manifest = this.stringParameter(++i); +htParams.put("manifest", manifest); +sOptions.append(" MANIFEST " + JU.PT.esc(manifest)); +tok = this.tokAt(++i); +}switch (tok) { +case 2: +case 7: +case 268437504: +case 1073742195: +i = this.getLoadModelIndex(i, sOptions, htParams); +break; +} +i = this.getCmdExt().getLoadSymmetryParams(i, sOptions, htParams); +if (this.tokAt(i) == 1073741839) { +if (this.tokAt(++i) == 134221834) { +i += 2; +appendedData = this.getToken(i++).value; +appendedKey = this.stringParameter(++i); +++i; +} else { +appendedKey = this.stringParameter(i++); +appendedData = this.stringParameter(i++); +}htParams.put(appendedKey, appendedData); +}if (this.tokAt(i) == 1073741940) filter = this.stringParameter(++i); +} else { +var fNames = new JU.Lst(); +if (i == 1) { +if (this.tokAt(i + 1) == 268440577 || this.tokAt(i + 1) == 268440576) { +modelName = "files"; +} else { +i++; +}loadScript.append(" " + modelName); +}if (this.tokAt(i + 1) == 268440576) isConcat = true; +filter = this.getLoadFilesList(i, loadScript, sOptions, htParams, fNames); +filenames = fNames.toArray( new Array(nFiles = fNames.size())); +if (!isConcat && loadScript.indexOf("/*concat*/") >= 0) isConcat = true; +}if (!doLoadFiles) return; +if (filenames != null) filename = "fileSet"; +if (appendedData != null) { +sOptions.append(" APPEND data \"" + appendedKey + "\"\n" + appendedData + (appendedData.endsWith("\n") ? "" : "\n") + "end \"" + appendedKey + "\""); +}if (filter == null) filter = this.vwr.g.defaultLoadFilter; +if (filter.length > 0) { +if (filter.toUpperCase().indexOf("DOCACHE") >= 0) { +if (!this.$isStateScript && !isAppend) this.vwr.cacheClear(); +}htParams.put("filter", filter); +if (filter.equalsIgnoreCase("2d")) filter = "2D-noMin"; +sOptions.append(" FILTER " + JU.PT.esc(filter)); +}var isVariable = false; +if (filenames == null) { +if (this.vwr.am.cmi >= 0 && ("::" + filename).endsWith("::string")) { +filename = this.getCurrentModelFileAsString("null"); +loadScript = new JU.SB().append("load inline "); +isInline = true; +}if (isInline) { +htParams.put("fileData", filename); +} else if (filename.startsWith("@") && filename.length > 1) { +var o = this.getVarParameter(filename.substring(1), false); +if (Clazz_instanceOf(o,"java.util.Map")) { +this.checkLength(i + 1); +this.loadPNGJVar(filename, o, htParams); +return; +}isVariable = true; +o = "" + o; +loadScript = new JU.SB().append("{\n var ").append(filename.substring(1)).append(" = ").append(JU.PT.esc(o)).append(";\n ").appendSB(loadScript); +htParams.put("fileData", o); +} else if (!isData && !((filename.startsWith("=") || filename.startsWith("*")) && filename.indexOf("/") > 0)) { +var type = ""; +var pt = filename.indexOf("::"); +if (pt > 0 && pt < 20) { +type = filename.substring(0, pt + 2); +filename = filename.substring(pt + 2); +}if (filename.startsWith("cache://")) { +localName = null; +} else if (!isMutate) { +filename = this.checkFileExists("LOAD" + (isAppend ? "_APPEND_" : "_"), isAsync, filename, filePt, !isAppend && this.pc != this.pcResume); +if (filename == null) this.error(57); +filename = type + filename; +}}}var out = null; +var filecat = null; +if (localName != null) { +if (localName.equals(".")) localName = this.vwr.fm.getFilePath(filename, false, true); +if (localName.length == 0 || this.vwr.fm.getFilePath(localName, false, false).equalsIgnoreCase(this.vwr.fm.getFilePath(filename, false, false))) this.invArg(); +var fullPath = Clazz_newArray(-1, [localName]); +out = this.vwr.getOutputChannel(localName, fullPath); +if (out == null) JU.Logger.error("Could not create output stream for " + fullPath[0]); + else htParams.put("outputChannel", out); +}if (filenames == null && tokType == 0) { +loadScript.append(" "); +if (isVariable || isInline) { +loadScript.append(filename.indexOf('\n') >= 0 || isVariable ? JU.PT.esc(filename) : filename); +} else if (!isData) { +if (localName != null) localName = this.vwr.fm.getFilePath(localName, false, false); +if (!filename.equals("String[]")) loadScript.append("/*file*/").append((localName != null ? JU.PT.esc(localName) : "$FILENAME$")); +}if (!isConcat && (filename.startsWith("=") || filename.startsWith("*")) && filename.indexOf("/") > 0) { +isConcat = true; +var pt = filename.indexOf("/"); +var id; +if (pt == 1 && (id = this.vwr.getPdbID()) != null) { +filename = filename.substring(0, 1) + id + filename.substring(1); +pt = filename.indexOf("/"); +} else { +id = filename.substring(1, pt); +}var ext = filename.substring(pt + 1); +filename = filename.substring(0, pt); +if ((pt = filename.indexOf(".")) >= 0) filename = filename.substring(0, pt); +if (";dssr;rna3d;dom;val;".indexOf(";" + ext + ";") >= 0 || ext.startsWith("dssr--")) { +if (filename.startsWith("=")) filename += ".cif"; +filenames = (ext.equals("all") ? Clazz_newArray(-1, [filename, "*dom/" + id, "*val/" + id]) : Clazz_newArray(-1, [filename, "*" + ext + "/" + id])); +filename = "fileSet"; +loadScript = null; +isVariable = false; +filecat = "-"; +} else { +filename += "/" + ext; +}}if (loadScript != null) { +if (sOptions.length() > 0) loadScript.append(" /*options*/ ").append(sOptions.toString()); +if (isVariable) loadScript.append("\n }"); +htParams.put("loadScript", loadScript); +}}if (isAudio) { +if (filename != null) htParams.put("audioFile", filename); +this.addFilterAttribute(htParams, filter, "id"); +this.addFilterAttribute(htParams, filter, "pause"); +this.addFilterAttribute(htParams, filter, "play"); +this.addFilterAttribute(htParams, filter, "ended"); +this.addFilterAttribute(htParams, filter, "action"); +this.vwr.sm.playAudio(htParams); +return; +}this.setCursorWait(true); +var timeMsg = this.vwr.getBoolean(603979934); +if (timeMsg) JU.Logger.startTimer("load"); +if (!this.$isStateScript && !isAppend && !this.vwr.getBoolean(603979831)) this.vwr.setBooleanProperty("legacyJavaFloat", false); +if (isMutate) htParams.put("isMutate", Boolean.TRUE); +htParams.put("eval", this); +errMsg = this.vwr.loadModelFromFile(null, filename, filenames, null, isAppend, htParams, loadScript, sOptions, tokType, filecat != null ? filecat : isConcat ? "+" : " "); +if (timeMsg) this.showString(JU.Logger.getTimerMsg("load", 0)); +if (out != null) { +this.vwr.fm.setFileInfo( Clazz_newArray(-1, [localName])); +JU.Logger.info(J.i18n.GT.o(J.i18n.GT.$("file {0} created"), localName)); +this.showString(this.vwr.fm.getFilePath(localName, false, false) + " created"); +out.closeChannel(); +}if (tokType > 0) { +this.vwr.fm.setFileInfo(tempFileInfo); +if (errMsg != null && !this.isCmdLine_c_or_C_Option) this.evalError(errMsg, null); +return; +}if (errMsg != null && !this.isCmdLine_c_or_C_Option) { +if (errMsg.indexOf("NOTE: file recognized as a script file: ") == 0) { +filename = errMsg.substring("NOTE: file recognized as a script file: ".length).trim(); +if (filename.indexOf("png|") >= 0 && filename.endsWith("pdb|state.spt")) { +filename = filename.substring(0, filename.lastIndexOf("|")); +filename += filename.substring(filename.lastIndexOf("|")); +this.runScript("load \"" + filename + "\""); +return; +}this.cmdScript(0, filename, null, null); +return; +}if (this.vwr.async && errMsg.startsWith(JV.JC.READER_NOT_FOUND)) { +throw new JS.ScriptInterruption(this, "async", 1); +}this.evalError(errMsg, null); +}if (this.debugHigh) this.report("Successfully loaded:" + (filenames == null ? htParams.get("fullPathName") : modelName), false); +this.finalizeLoad(isAppend, appendNew, isConcat, doOrient, nFiles, ac0, modelCount0, isData); +}); +Clazz_defineMethod(c$, "checkFileExists", +function(prefix, isAsync, filename, i, doClear){ +if (this.chk || filename.startsWith("cache://")) return filename; +if ((this.vwr.testAsync || JV.Viewer.isJS) && (isAsync || filename.startsWith("?")) || this.vwr.apiPlatform.forceAsyncLoad(filename)) { +filename = this.loadFileAsync(prefix, filename, i, doClear); +}var fullPathNameOrError = this.vwr.getFullPathNameOrError(filename); +if (filename == null) return null; +filename = fullPathNameOrError[0]; +if (fullPathNameOrError[1] != null) this.errorStr(17, filename + ":" + fullPathNameOrError[1]); +return filename; +}, "~S,~B,~S,~N,~B"); +Clazz_defineMethod(c$, "addFilterAttribute", +function(htParams, filter, key){ +var val = JU.PT.getQuotedOrUnquotedAttribute(filter, key); +if (val != null && val.length > 0) htParams.put(key, val); +}, "java.util.Map,~S,~S"); +Clazz_defineMethod(c$, "addLoadData", +function(loadScript, key, htParams, i){ +loadScript.append(" /*data*/ data"); +var ptVar = key.indexOf("@"); +if (ptVar >= 0) key = key.$replace('@', '_'); +loadScript.append(" ").append(JU.PT.esc(key)); +var strModel = (ptVar >= 0 ? "" + this.getParameter(key.substring(ptVar + 1), 4, true) : this.paramAsStr(++i)); +strModel = JV.Viewer.fixInlineString(strModel, this.vwr.getInlineChar()); +htParams.put("fileData", strModel); +htParams.put("isData", Boolean.TRUE); +loadScript.appendC('\n').append(strModel).append(" end ").append(JU.PT.esc(key)); +if (ptVar < 0) i += 2; +return i; +}, "JU.SB,~S,java.util.Map,~N"); +Clazz_defineMethod(c$, "loadPNGJVar", +function(varName, o, htParams){ +var av = Clazz_newArray(-1, [JS.SV.newV(6, o)]); +this.getCmdExt().dispatch(1073741866, false, av); +htParams.put("imageData", av[0].value); +var out = this.vwr.getOutputChannel(null, null); +htParams.put("outputChannel", out); +this.vwr.createZip("", "BINARY", htParams); +var modelName = "cache://VAR_" + varName; +this.vwr.cacheFileByName("cache://VAR_*", false); +this.vwr.cachePut(modelName, out.toByteArray()); +this.cmdScript(0, modelName, null, null); +}, "~S,~O,java.util.Map"); +Clazz_defineMethod(c$, "getLoadFilesList", +function(i, loadScript, sOptions, htParams, fNames){ +var firstLastSteps = null; +var filter = null; +var pt = null; +var bs = null; +while (i < this.slen) { +switch (this.tokAt(i)) { +case 268440577: +loadScript.append("/*concat*/ +"); +++i; +continue; +case 268440576: +loadScript.append(" -"); +++i; +continue; +case 2: +case 7: +case 268437504: +case 1073742195: +i = this.getLoadModelIndex(i, sOptions, htParams); +continue; +case 1073741940: +filter = this.stringParameter(++i); +++i; +continue; +case 1073742329: +htParams.remove("isTrajectory"); +if (firstLastSteps == null) { +firstLastSteps = new JU.Lst(); +pt = JU.P3.new3(0, -1, 1); +}if (this.isPoint3f(++i)) { +pt = this.getPoint3f(i, false, true); +i = this.iToken + 1; +} else if (this.tokAt(i) == 10) { +bs = this.getToken(i).value; +pt = null; +i = this.iToken + 1; +}break; +case 1073741824: +this.invArg(); +} +fNames.addLast(this.paramAsStr(i++)); +if (pt != null) { +firstLastSteps.addLast( Clazz_newIntArray(-1, [Clazz_floatToInt(pt.x), Clazz_floatToInt(pt.y), Clazz_floatToInt(pt.z)])); +loadScript.append(" COORD " + JU.Escape.eP(pt)); +} else if (bs != null) { +firstLastSteps.addLast(bs); +loadScript.append(" COORD " + JU.Escape.eBS(bs)); +}loadScript.append(" /*file*/$FILENAME" + fNames.size() + "$"); +} +if (firstLastSteps != null) htParams.put("firstLastSteps", firstLastSteps); +return filter; +}, "~N,JU.SB,JU.SB,java.util.Map,JU.Lst"); +Clazz_defineMethod(c$, "isLoadOption", +function(tok){ +switch (tok) { +case 1073742010: +case 2: +case 7: +case 268437504: +case 1073742195: +case 1073742332: +case 8: +case 1073742080: +case 1094713350: +case 1073742163: +case 1073741938: +case 1073742114: +case 134217764: +case 1814695966: +case 1073742066: +case 134221834: +case 1073741839: +return true; +case 1073741940: +case 1073741824: +return (this.tokAt(this.iToken + 2) != 1073742329); +} +return false; +}, "~N"); +Clazz_defineMethod(c$, "getLoadModelIndex", +function(i, sOptions, htParams){ +var n; +switch (this.tokAt(i)) { +case 2: +htParams.remove("firstLastStep"); +htParams.remove("bsModel"); +htParams.put("useFileModelNumbers", Boolean.TRUE); +n = this.intParameter(i); +sOptions.append(" ").appendI(n); +if (n < 0) htParams.put("vibrationNumber", Integer.$valueOf(-n)); + else htParams.put("modelNumber", Integer.$valueOf(n)); +break; +case 7: +case 268437504: +case 1073742195: +htParams.remove("firstLastStep"); +var data = this.floatParameterSet(i, 1, 2147483647); +var bs = new JU.BS(); +var iArray = Clazz_newIntArray (data.length, 0); +for (var j = 0; j < data.length; j++) { +n = Clazz_floatToInt(data[j]); +if (data[j] >= 1 && data[j] == n) bs.set(n - 1); + else this.invArg(); +iArray[j] = n; +} +sOptions.append(" " + JU.Escape.eAI(iArray)); +htParams.put("bsModels", bs); +htParams.put("useFileModelNumbers", Boolean.TRUE); +break; +} +return this.iToken + 1; +}, "~N,JU.SB,java.util.Map"); +Clazz_defineMethod(c$, "finalizeLoad", +function(isAppend, appendNew, isConcat, doOrient, nFiles, ac0, modelCount0, isData){ +var bs = JU.BSUtil.newBitSet2(isAppend ? ac0 : 0, this.vwr.ms.ac); +if (isAppend && (appendNew || nFiles > 1)) { +this.vwr.setAnimationRange(-1, -1); +this.vwr.setCurrentModelIndex(modelCount0); +}this.vwr.setModelkitPropertySafely("updateatomkeys", bs); +var msg; +if (this.scriptLevel == 0 && !isAppend && (isConcat || nFiles < 2) && (msg = this.vwr.ms.getInfoM("modelLoadNote")) != null) { +this.showString(msg); +}var centroid = this.vwr.ms.getInfoM("centroidMinMax"); +if (JU.AU.isAI(centroid) && this.vwr.ms.ac > 0) { +this.vwr.ms.setCentroid(bs, centroid); +}var script = this.vwr.g.defaultLoadScript; +msg = ""; +if (script.length > 0) msg += "\nUsing defaultLoadScript: " + script; +var embeddedScript; +var info = this.vwr.ms.msInfo; +if (info != null && this.vwr.allowEmbeddedScripts() && (embeddedScript = info.remove("jmolscript")) != null && embeddedScript.length > 0) { +msg += "\nAdding embedded #jmolscript: " + embeddedScript; +script += ";" + embeddedScript; +this.setStringProperty("_loadScript", script); +script = "allowEmbeddedScripts = false;try{" + script + "} allowEmbeddedScripts = true;"; +this.isEmbedded = !this.isCmdLine_c_or_C_Option; +} else { +this.setStringProperty("_loadScript", ""); +}this.logLoadInfo(msg, isData); +var siteScript = (info == null ? null : info.remove("sitescript")); +if (siteScript != null) script = siteScript + ";" + script; +if (doOrient) script += ";restore orientation preload"; +if (script.length > 0 && !this.isCmdLine_c_or_C_Option) this.runScript(script); +this.isEmbedded = false; +}, "~B,~B,~B,~B,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "cmdLog", +function(){ +if (this.slen == 1) this.bad(); +if (this.chk) return; +var s = this.parameterExpressionString(1, 0); +if (this.tokAt(1) == 1073742334) this.setStringProperty("logFile", ""); + else this.vwr.log(s); +}); +Clazz_defineMethod(c$, "cmdLoop", +function(){ +if (this.vwr.headless) return; +if (!this.chk) this.pc = -1; +this.cmdDelay(); +}); +Clazz_defineMethod(c$, "cmdMessage", +function(){ +var text = this.paramAsStr(this.checkLast(1)); +if (this.chk) return; +var s = this.vwr.formatText(text); +if (this.outputBuffer == null && !this.vwr.isPrintOnly) JU.Logger.warn(s); +if (!s.startsWith("_")) this.report(s, false); +}); +Clazz_defineMethod(c$, "cmdModel", +function(offset){ +var isFrame = (this.theTok == 4115 || this.vwr.ms.mc > 1); +var frameList = Clazz_newIntArray(-1, [-1, -1]); +var nFrames = 0; +var useModelNumber = true; +var modelIndex = -1; +if (this.slen == 1 && offset == 1) { +modelIndex = this.vwr.am.cmi; +var m; +if (!this.chk && modelIndex >= 0 && (m = this.vwr.ms.getJmolDataSourceFrame(modelIndex)) >= 0) this.vwr.setCurrentModelIndex(m == modelIndex ? -2147483648 : m); +return; +}switch (this.tokAt(1)) { +case 1073877010: +if (!this.chk && isFrame && this.slen == 2) { +while (++modelIndex < this.vwr.ms.mc) { +if (!this.vwr.ms.am[modelIndex].auxiliaryInfo.containsKey("moData")) continue; +this.vwr.am.setFrame(modelIndex); +this.showString("Frame set to " + (modelIndex + 1)); +return; +} +this.showString("No molecular orbitals"); +}return; +case 2: +if (isFrame && this.slen == 2) { +if (!this.chk) this.vwr.am.setFrame(this.intParameter(1) - 1); +return; +}break; +case 1073742325: +case 10: +modelIndex = this.atomExpressionAt(1).nextSetBit(0); +if (this.chk || modelIndex < 0 || modelIndex >= this.vwr.ms.ac) return; +modelIndex = this.vwr.ms.at[modelIndex].mi; +if (this.iToken + 1 == this.slen) { +this.vwr.setCurrentModelIndex(modelIndex); +return; +}frameList[nFrames++] = modelIndex; +offset = this.iToken + 1; +useModelNumber = false; +break; +case 1073741904: +this.iToken = 1; +var n = (this.tokAt(2) == 2 ? this.intParameter(++this.iToken) : 1); +this.checkLength(this.iToken + 1); +if (!this.chk && n > 0) this.vwr.ms.createModels(n); +return; +case 1073741974: +this.checkLength(3); +var id = this.stringParameter(2); +if (!this.chk) this.vwr.setCurrentModelID(id); +return; +case 528397: +var millis = 0; +this.checkLength(3); +switch (this.getToken(2).tok) { +case 2: +case 3: +millis = Clazz_floatToLong(this.floatParameter(2) * 1000); +break; +default: +this.error(20); +} +if (!this.chk) this.vwr.setFrameDelayMs(millis); +return; +case 1073742166: +if (this.checkLength23() > 0) if (!this.chk) this.vwr.setFrameTitleObj(this.slen == 2 ? "@{_modelName}" : (this.tokAt(2) == 7 ? JS.SV.strListValue(this.st[2]) : this.paramAsStr(2))); +return; +case 1073742077: +if (this.tokAt(2) == 3 && this.tokAt(3) == 12) { +modelIndex = this.vwr.ms.getModelNumberIndex(this.getToken(2).intValue, false, false); +var mat4 = this.getToken(3).value; +if (modelIndex >= 0) this.vwr.ms.am[modelIndex].mat4 = mat4; +return; +}break; +case 1073741832: +var isNone = (this.tokAt(2) == 1073742333); +var bs = (this.slen == 2 || isNone ? null : this.atomExpressionAt(2)); +if (isNone) this.iToken = 2; +var isFixed = (this.tokAt(this.iToken + 1) == 12293); +this.checkLength(this.iToken + (isFixed ? 2 : 1)); +if (!this.chk) this.vwr.setFrameOffsets(bs, isFixed); +return; +} +if (this.getToken(offset).tok == 268440576) { +++offset; +if (this.getToken(this.checkLast(offset)).tok != 2 || this.intParameter(offset) != 1) this.invArg(); +if (!this.chk) this.vwr.setAnimation(1073742108); +return; +}var isPlay = false; +var isRange = false; +var propName = null; +var prop = null; +var isAll = false; +var isHyphen = false; +var fFrame = 0; +var frameAlign = null; +var haveFileSet = this.vwr.haveFileSet(); +if (this.isArrayParameter(1)) { +this.setFrameSet(1); +isAll = true; +} else { +for (var i = offset; i < this.slen; i++) { +switch (this.getToken(i).tok) { +case 1073741832: +if (i != 2) this.invArg(); +frameAlign = this.centerParameter(3, null); +this.checkLength(i = this.iToken + 1); +break; +case 1073742327: +case 268441089: +this.checkLength(offset + (isRange ? 2 : 1)); +isAll = true; +break; +case 268440576: +if (nFrames != 1) this.invArg(); +isHyphen = true; +break; +case 1073742333: +this.checkLength(offset + 1); +break; +case 3: +useModelNumber = false; +if ((fFrame = this.floatParameter(i)) < 0) { +this.checkLength(i + 1); +if (!this.chk) this.vwr.am.morph(-fFrame); +return; +}case 2: +case 4: +if (nFrames == 2) this.invArg(); +var iFrame = (this.theTok == 4 ? JU.Edge.getFloatEncodedInt(this.theToken.value) : this.theToken.intValue); +if (iFrame < 0 && nFrames == 1) { +isHyphen = true; +iFrame = -iFrame; +if (haveFileSet && iFrame < 1000000) iFrame *= 1000000; +}if (this.theTok == 3 && haveFileSet && fFrame == Clazz_floatToInt(fFrame)) iFrame = Clazz_floatToInt(fFrame) * 1000000; +if (iFrame == 2147483647) { +useModelNumber = false; +frameList[nFrames++] = (this.chk || i != 1 ? 0 : this.vwr.getModelIndexFromId(this.theToken.value.toString())); +break; +}if (iFrame == -1) { +this.checkLength(offset + 1); +if (!this.chk) this.vwr.setAnimation(1073742108); +return; +}if (iFrame >= 1000 && iFrame < 1000000 && haveFileSet) iFrame = (Clazz_doubleToInt(iFrame / 1000)) * 1000000 + (iFrame % 1000); +if (!useModelNumber && iFrame == 0 && nFrames == 0) isAll = true; +if (iFrame >= 1000000) useModelNumber = false; +frameList[nFrames++] = iFrame; +break; +case 1073742096: +isPlay = true; +break; +case 1073742114: +isRange = true; +break; +case 1715472409: +if (modelIndex < 0 && (modelIndex = this.vwr.am.cmi) < 0) return; +propName = this.paramAsStr(++i); +var sv = this.setVariable(++i, -1, "", false); +if (sv != null && !this.chk) { +if (propName.equalsIgnoreCase("DSSR")) { +this.loadDssr(modelIndex, sv.value); +return; +}prop = JS.SV.oValue(sv); +}if (!this.chk) this.vwr.ms.setInfo(modelIndex, propName, prop); +return; +default: +this.frameControl(offset); +return; +} +} +}if (this.chk) return; +if (isRange && nFrames == 0) isAll = true; +if (isAll) { +this.vwr.setAnimationOn(false); +this.vwr.setAnimationRange(-1, -1); +if (!isRange) this.vwr.setCurrentModelIndex(-1); +return; +}if (nFrames == 2 && !isRange) isHyphen = true; +if (haveFileSet) useModelNumber = false; + else if (useModelNumber) for (var i = 0; i < nFrames; i++) if (frameList[i] >= 0) frameList[i] %= 1000000; + +modelIndex = this.vwr.ms.getModelNumberIndex(frameList[0], useModelNumber, false); +if (frameAlign != null) { +if (modelIndex >= 0) { +this.vwr.ms.translateModel(modelIndex, null); +this.vwr.ms.translateModel(modelIndex, frameAlign); +}return; +}var modelIndex2 = -1; +if (haveFileSet && modelIndex < 0 && frameList[0] != 0) { +if (frameList[0] < 1000000) frameList[0] *= 1000000; +if (nFrames == 2 && frameList[1] < 1000000) frameList[1] *= 1000000; +if (frameList[0] % 1000000 == 0) { +frameList[0]++; +modelIndex = this.vwr.ms.getModelNumberIndex(frameList[0], false, false); +if (modelIndex >= 0) { +var i2 = (nFrames == 1 ? frameList[0] + 1000000 : frameList[1] == 0 ? -1 : frameList[1] % 1000000 == 0 ? frameList[1] + 1000001 : frameList[1] + 1); +modelIndex2 = this.vwr.ms.getModelNumberIndex(i2, false, false); +if (modelIndex2 < 0) modelIndex2 = this.vwr.ms.mc; +modelIndex2--; +if (isRange) nFrames = 2; + else if (!isHyphen && modelIndex2 != modelIndex) isHyphen = true; +isRange = isRange || modelIndex == modelIndex2; +}} else { +return; +}}if (!isPlay && !isRange || modelIndex >= 0) this.vwr.setCurrentModelIndexClear(modelIndex, false); +if (isPlay && nFrames == 2 || isRange || isHyphen) { +if (modelIndex2 < 0) modelIndex2 = this.vwr.ms.getModelNumberIndex(frameList[1], useModelNumber, false); +this.vwr.setAnimationOn(false); +this.vwr.am.setAnimationDirection(1); +this.vwr.setAnimationRange(modelIndex, modelIndex2); +this.vwr.setCurrentModelIndexClear(isHyphen && !isRange ? -1 : modelIndex >= 0 ? modelIndex : 0, false); +}if (isPlay) this.vwr.setAnimation(4143); +}, "~N"); +Clazz_defineMethod(c$, "loadDssr", +function(modelIndex, data){ +if (modelIndex < 0 && (modelIndex = this.vwr.am.cmi) < 0) this.errorStr(30, "load "); +if (!data.startsWith("{")) data = this.vwr.getFileAsString3(data, true, "script"); +this.clearDefinedVariableAtomSets(); +var map = this.vwr.parseJSONMap(data); +this.showString(this.vwr.getAnnotationParser(true).fixDSSRJSONMap(map)); +this.vwr.ms.setInfo(modelIndex, "dssr", map); +}, "~N,~S"); +Clazz_defineMethod(c$, "cmdMove", +function(){ +this.checkLength(-11); +var dRot = JU.V3.new3(this.floatParameter(1), this.floatParameter(2), this.floatParameter(3)); +var dZoom = this.floatParameter(4); +var dTrans = JU.V3.new3(this.intParameter(5), this.intParameter(6), this.intParameter(7)); +var dSlab = this.floatParameter(8); +var floatSecondsTotal = this.floatParameter(9); +var fps = (this.slen == 11 ? this.intParameter(10) : 30); +if (this.chk) return; +this.refresh(false); +if (!this.useThreads()) floatSecondsTotal = 0; +this.vwr.move(this, dRot, dZoom, dTrans, dSlab, floatSecondsTotal, fps); +if (floatSecondsTotal > 0 && this.isJS) throw new JS.ScriptInterruption(this, "move", 1); +}); +Clazz_defineMethod(c$, "cmdMoveto", +function(){ +if (this.slen == 2 && this.tokAt(1) == 1073742162) { +if (!this.chk) this.vwr.tm.stopMotion(); +return; +}var floatSecondsTotal; +if (this.slen == 2 && this.isFloatParameter(1)) { +floatSecondsTotal = this.floatParameter(1); +if (this.chk) return; +if (!this.useThreads()) floatSecondsTotal = 0; +if (floatSecondsTotal > 0) this.refresh(false); +this.vwr.moveTo(this, floatSecondsTotal, null, JV.JC.axisZ, 0, null, 100, 0, 0, 0, null, NaN, NaN, NaN, NaN, NaN, NaN); +if (this.isJS && floatSecondsTotal > 0 && this.vwr.g.waitForMoveTo) throw new JS.ScriptInterruption(this, "moveTo", 1); +return; +}var axis = JU.V3.new3(NaN, 0, 0); +var center = null; +var i = 1; +floatSecondsTotal = (this.isFloatParameter(i) ? this.floatParameter(i++) : 2.0); +var degrees = 90; +var bsCenter = null; +var isChange = true; +var isMolecular = false; +var xTrans = 0; +var yTrans = 0; +var zoom = NaN; +var rotationRadius = NaN; +var zoom0 = this.vwr.tm.getZoomSetting(); +var navCenter = null; +var xNav = NaN; +var yNav = NaN; +var navDepth = NaN; +var cameraDepth = NaN; +var cameraX = NaN; +var cameraY = NaN; +var pymolView = null; +var q = null; +var tok = this.getToken(i).tok; +switch (tok) { +case 1073742110: +pymolView = this.floatParameterSet(++i, 18, 21); +i = this.iToken + 1; +if (this.chk && this.checkLength(i) > 0) return; +break; +case 134221850: +if (this.tokAt(++i) == 1073742028) { +isMolecular = true; +i++; +}if (this.isAtomExpression(i)) { +isMolecular = true; +var ret = new Array(1); +center = this.centerParameter(i, ret); +if (!(Clazz_instanceOf(ret[0],"JU.BS"))) this.invArg(); +bsCenter = ret[0]; +q = (this.chk ? new JU.Quat() : this.vwr.ms.getQuaternion(bsCenter.nextSetBit(0), this.vwr.getQuaternionFrame())); +} else { +q = this.getQuaternionParameter(i, null, false); +}i = this.iToken + 1; +if (q == null) this.invArg(); +break; +case 9: +case 8: +case 1073742332: +if (this.isPoint3f(i)) { +axis.setT(this.getPoint3f(i, true, true)); +i = this.iToken + 1; +degrees = this.floatParameter(i++); +} else { +var pt4 = this.getPoint4f(i); +i = this.iToken + 1; +axis.set(pt4.x, pt4.y, pt4.z); +degrees = (pt4.x == 0 && pt4.y == 0 && pt4.z == 0 ? NaN : pt4.w); +}break; +case 1073741954: +axis.set(1, 0, 0); +degrees = 0; +this.checkLength(++i); +break; +case 1073741858: +axis.set(0, 1, 0); +degrees = 180; +this.checkLength(++i); +break; +case 1073741996: +axis.set(0, 1, 0); +this.checkLength(++i); +break; +case 1073742126: +axis.set(0, -1, 0); +this.checkLength(++i); +break; +case 1073742172: +axis.set(1, 0, 0); +this.checkLength(++i); +break; +case 1073741871: +axis.set(-1, 0, 0); +this.checkLength(++i); +break; +case 1073741854: +var abc = this.paramAsStr(++i); +if (abc.equals("-")) abc += this.paramAsStr(++i); +this.checkLength(++i); +switch ("xyz".indexOf(abc)) { +case 0: +q = JU.Quat.new4(0.5, 0.5, 0.5, -0.5); +break; +case 1: +q = JU.Quat.new4(0.5, 0.5, 0.5, 0.5); +break; +case 2: +q = JU.Quat.new4(0, 0, 0, 1); +break; +default: +var uc; +uc = this.vwr.getCurrentUnitCell(); +if (uc == null) { +uc = this.vwr.getSymTemp().setUnitCellFromParams(null, false, NaN); +}q = uc.getQuaternionRotation(abc); +if (q == null) this.invArg(); +} +break; +default: +axis = JU.V3.new3(this.floatParameter(i++), this.floatParameter(i++), this.floatParameter(i++)); +degrees = this.floatParameter(i++); +} +if (q != null) { +var aa; +aa = q.toAxisAngle4f(); +axis.set(aa.x, aa.y, aa.z); +degrees = (isMolecular ? -1 : 1) * (aa.angle * 180.0 / 3.141592653589793); +}if (Float.isNaN(axis.x) || Float.isNaN(axis.y) || Float.isNaN(axis.z)) axis.set(0, 0, 0); + else if (axis.length() == 0 && degrees == 0) degrees = NaN; +isChange = (tok == 134221850 || !this.vwr.tm.isInPosition(axis, degrees)); +if (this.isFloatParameter(i)) zoom = this.floatParameter(i++); +if (this.isFloatParameter(i) && !this.isCenterParameter(i)) { +xTrans = this.floatParameter(i++); +yTrans = this.floatParameter(i++); +if (!isChange && Math.abs(xTrans - this.vwr.tm.getTranslationXPercent()) >= 1) isChange = true; +if (!isChange && Math.abs(yTrans - this.vwr.tm.getTranslationYPercent()) >= 1) isChange = true; +}if (bsCenter == null && i != this.slen) { +var ret = new Array(1); +center = this.centerParameter(i, ret); +if (Clazz_instanceOf(ret[0],"JU.BS")) bsCenter = ret[0]; +i = this.iToken + 1; +}if (center != null) { +if (!isChange && center.distance(this.vwr.tm.fixedRotationCenter) >= 0.1) isChange = true; +if (this.isFloatParameter(i)) rotationRadius = this.floatParameter(i++); +if (!this.isCenterParameter(i)) { +if ((rotationRadius == 0 || Float.isNaN(rotationRadius)) && (zoom == 0 || Float.isNaN(zoom))) { +var newZoom = Math.abs(this.getZoom(0, i, bsCenter, (zoom == 0 ? 0 : zoom0))); +i = this.iToken + 1; +zoom = newZoom; +} else { +if (!isChange && Math.abs(rotationRadius - this.vwr.getFloat(570425388)) >= 0.1) isChange = true; +}}if (zoom == 0 || Float.isNaN(zoom)) zoom = 100; +if (Float.isNaN(rotationRadius)) rotationRadius = 0; +if (!isChange && Math.abs(zoom - zoom0) >= 1) isChange = true; +if (i != this.slen) { +navCenter = this.centerParameter(i, null); +i = this.iToken + 1; +if (i != this.slen) { +xNav = this.floatParameter(i++); +yNav = this.floatParameter(i++); +}if (i != this.slen) navDepth = this.floatParameter(i++); +if (i != this.slen) { +cameraDepth = this.floatParameter(i++); +if (!isChange && Math.abs(cameraDepth - this.vwr.tm.getCameraDepth()) >= 0.01) isChange = true; +}if (i + 1 < this.slen) { +cameraX = this.floatParameter(i++); +cameraY = this.floatParameter(i++); +if (!isChange && Math.abs(cameraX - this.vwr.tm.camera.x) >= 0.01) isChange = true; +if (!isChange && Math.abs(cameraY - this.vwr.tm.camera.y) >= 0.01) isChange = true; +}}}this.checkLength(i); +if (this.chk) return; +if (!isChange) floatSecondsTotal = 0; +if (floatSecondsTotal > 0) this.refresh(false); +if (!this.useThreads()) floatSecondsTotal = 0; +if (cameraDepth == 0) { +cameraDepth = cameraX = cameraY = NaN; +}if (pymolView != null) this.vwr.tm.moveToPyMOL(this, floatSecondsTotal, pymolView); + else this.vwr.moveTo(this, floatSecondsTotal, center, axis, degrees, null, zoom, xTrans, yTrans, rotationRadius, navCenter, xNav, yNav, navDepth, cameraDepth, cameraX, cameraY); +if (this.isJS && floatSecondsTotal > 0 && this.vwr.g.waitForMoveTo) throw new JS.ScriptInterruption(this, "moveTo", 1); +}); +Clazz_defineMethod(c$, "isAtomExpression", +function(i){ +switch (this.tokAt(i)) { +case 12290: +case 10: +case 1073742325: +return true; +default: +return false; +} +}, "~N"); +Clazz_defineMethod(c$, "cmdPause", +function(){ +if (this.chk || this.isJS && !this.allowJSThreads) return false; +var msg = this.optParameterAsString(1); +if (!this.vwr.getBooleanProperty("_useCommandThread")) { +}if (this.vwr.autoExit || !this.vwr.haveDisplay && !this.vwr.isWebGL) return false; +if (this.scriptLevel == 0 && this.pc == this.aatoken.length - 1) { +this.vwr.scriptStatus("nothing to pause: " + msg); +return false; +}msg = (msg.length == 0 ? ": RESUME to continue." : ": " + this.vwr.formatText(msg)); +this.pauseExecution(true); +this.vwr.scriptStatusMsg("script execution paused" + msg, "script paused for RESUME"); +return true; +}); +Clazz_defineMethod(c$, "cmdPrint", +function(){ +if (this.slen == 1) { +if (!this.chk) this.showStringPrint("\0", true); +return; +}this.showStringPrint(this.parameterExpressionString(1, 0), true); +}); +Clazz_defineMethod(c$, "cmdPrompt", +function(){ +var msg = null; +if (this.slen == 1) { +if (!this.chk) msg = JS.ScriptEval.getContextTrace(this.vwr, this.getScriptContext("prompt"), null, true).toString(); +} else { +msg = this.parameterExpressionString(1, 0); +}if (!this.chk) this.vwr.prompt(msg, null, null, true); +}); +Clazz_defineMethod(c$, "cmdReset", +function(){ +if (this.slen == 3 && this.tokAt(1) == 134320141) { +if (!this.chk) this.vwr.removeFunction(this.stringParameter(2)); +return; +}this.checkLength(-2); +if (this.chk) return; +if (this.slen == 1) { +this.vwr.reset(false); +return; +}switch (this.tokAt(1)) { +case 36865: +if (!this.chk && this.outputBuffer != null) this.outputBuffer.setLength(0); +return; +case 134221829: +this.vwr.cacheClear(); +return; +case 1073741936: +this.resetError(); +return; +case 1073741995: +this.vwr.stm.resetLighting(); +return; +case 1086324748: +this.vwr.resetShapes(true); +return; +case 134320141: +this.vwr.clearFunctions(); +return; +case 1812599299: +this.vwr.ms.setBoundBox(null, null, true, 0); +return; +case 1639976963: +var bsModified = new JU.BS(); +this.runScript(this.vwr.ms.getDefaultStructure(this.vwr.bsA(), bsModified)); +this.vwr.shm.resetBioshapes(bsModified); +return; +case 1648363544: +this.vwr.setData("element_vdw", Clazz_newArray(-1, [null, ""]), 0, 0, 0, 0, 0); +return; +case 1075838996: +this.vwr.ms.resetAromatic(); +return; +case 1611141175: +this.vwr.reset(true); +return; +} +var $var = this.paramAsStr(1); +if ($var.charAt(0) == '_') this.invArg(); +this.vwr.unsetProperty($var); +}); +Clazz_defineMethod(c$, "resetError", +function(){ +this.vwr.g.removeParam("_errormessage"); +}); +Clazz_defineMethod(c$, "cmdRestrict", +function(){ +var isBond = (this.tokAt(1) == 1677721602); +this.cmdSelect(isBond ? 2 : 1); +this.restrictSelected(isBond, true); +}); +Clazz_defineMethod(c$, "cmdReturn", +function(tv){ +if (this.chk) return; +var t = this.getContextVariableAsVariable("_retval", false); +if (t != null) { +var v = (tv != null || this.slen == 1 ? null : this.parameterExpressionToken(1)); +if (tv == null) tv = (v == null ? JS.SV.newI(0) : v); +t.value = tv.value; +t.intValue = tv.intValue; +t.tok = tv.tok; +}this.cmdGoto(false); +}, "JS.SV"); +Clazz_defineMethod(c$, "cmdRotate", +function(isSpin, isSelected){ +if (this.slen == 2) switch (this.getToken(1).tok) { +case 1073742335: +if (!this.chk) this.vwr.tm.setSpinOn(); +return; +case 1073742334: +if (!this.chk) this.vwr.tm.setSpinOff(); +return; +} +var bsAtoms = null; +var bsBest = null; +var degreesPerSecond = 1.4E-45; +var nPoints = 0; +var endDegrees = 3.4028235E38; +var isMolecular = false; +var haveRotation = false; +var dihedralList = null; +var ptsA = null; +var points = new Array(2); +var rotAxis = JU.V3.new3(0, 1, 0); +var translation = null; +var m4 = null; +var m3 = null; +var is4x4 = false; +var direction = 1; +var tok; +var q = null; +var helicalPath = false; +var isDegreesPerSecond = false; +var isSeconds = false; +var ptsB = null; +var bsCompare = null; +var invPoint = null; +var invPlane = null; +var axesOrientationRasmol = this.vwr.getBoolean(603979806); +var checkModelKit = false; +for (var i = 1; i < this.slen; ++i) { +switch (tok = this.getToken(i).tok) { +case 528432: +case 4145: +checkModelKit = (this.vwr.getOperativeSymmetry() != null); +continue; +case 12290: +case 10: +case 1073742325: +bsBest = this.atomExpressionAt(i); +if (translation != null || q != null || nPoints == 2) { +bsAtoms = bsBest; +ptsB = null; +isSelected = true; +break; +}case 1073742332: +case 8: +case 1073742330: +haveRotation = true; +if (nPoints == 2) nPoints = 0; +var pt1 = this.centerParameterForModel(i, this.vwr.am.cmi, null); +if (!this.chk && tok == 1073742330 && this.tokAt(i + 2) != 268437504) { +isMolecular = true; +var data = Clazz_newArray(-1, [this.objectNameParameter(++i), Integer.$valueOf(this.vwr.am.cmi), null]); +rotAxis = (this.getShapePropertyData(22, "getSpinAxis", data) ? data[2] : null); +}points[nPoints++] = pt1; +break; +case 1611141175: +isSpin = true; +continue; +case 1073741988: +case 1073742028: +isMolecular = true; +continue; +case 1113589787: +isSelected = true; +break; +case 268436992: +continue; +case 2: +case 3: +if (isSpin) { +if (degreesPerSecond == 1.4E-45) { +degreesPerSecond = this.floatParameter(i); +} else if (endDegrees == 3.4028235E38) { +endDegrees = degreesPerSecond; +degreesPerSecond = this.floatParameter(i); +} else { +this.invArg(); +}} else { +if (endDegrees == 3.4028235E38) { +endDegrees = this.floatParameter(i); +} else if (degreesPerSecond == 1.4E-45) { +degreesPerSecond = this.floatParameter(i); +isSpin = true; +} else { +this.invArg(); +}}if (i == this.slen - 2 && (this.tokAt(i + 1) == 1073741824 || this.tokAt(i + 1) == 4)) { +var s = this.paramAsStr(++i).toLowerCase(); +if (s.equals("dps")) { +isDegreesPerSecond = true; +} else if (s.equals("sec")) { +isSeconds = true; +}}break; +case 268440576: +direction = -1; +continue; +case 1111492629: +haveRotation = true; +rotAxis.set(direction, 0, 0); +continue; +case 1111492630: +haveRotation = true; +rotAxis.set(0, direction, 0); +continue; +case 1111492631: +haveRotation = true; +rotAxis.set(0, 0, (axesOrientationRasmol && !isMolecular ? -direction : direction)); +continue; +case 9: +case 134221850: +case 1073741864: +if (tok == 134221850) i++; +haveRotation = true; +if ((q = this.getQuaternionParameter(i, bsBest, tok == 1073741864)) != null) { +if (q.q0 == 0) q.q0 = 1e-10; +rotAxis.setT(q.getNormal()); +endDegrees = q.getTheta(); +}break; +case 134217750: +var pts; +var n; +if (this.paramAsStr(i + 1).equalsIgnoreCase("picked")) { +i++; +var lst = this.vwr.getPOrNull("pickedList"); +n = lst.size(); +if (n < 3) return; +pts = new Array(3); +for (var j = 0; j < 3; j++) pts[j] = this.vwr.ms.getAtomSetCenter(JS.SV.getBitSet(lst.get(n - 3 + j), false)); + +} else if (this.isArrayParameter(i + 1)) { +pts = this.getPointArray(++i, -1, false); +i = this.iToken; +} else { +pts = new Array(3); +for (var j = 0; j < 3; j++) { +pts[j] = this.centerParameter(++i, null); +i = this.iToken; +} +}n = pts.length; +if (n < 3) return; +q = JU.Quat.getQuaternionFrame(pts[n - 3], pts[n - 2], pts[n - 1]); +q = JU.Quat.new4(1, 0, 0, 0).mulQ(q.inv().div(this.vwr.tm.getRotationQ())); +rotAxis.setT(q.getNormal()); +endDegrees = q.getTheta(); +break; +case 134217731: +haveRotation = true; +if (this.isPoint3f(++i)) { +rotAxis.setT(this.centerParameter(i, null)); +break; +}var p4 = this.getPoint4f(i); +rotAxis.set(p4.x, p4.y, p4.z); +endDegrees = p4.w; +q = JU.Quat.newVA(rotAxis, endDegrees); +break; +case 1073742328: +isSelected = true; +isMolecular = true; +haveRotation = true; +if (this.isArrayParameter(++i)) { +dihedralList = this.floatParameterSet(i, 6, 2147483647); +i = this.iToken; +} else { +var iAtom1 = this.atomExpressionAt(i).nextSetBit(0); +var iAtom2 = this.atomExpressionAt(++this.iToken).nextSetBit(0); +if (iAtom1 < 0 || iAtom2 < 0) return; +bsAtoms = this.vwr.getBranchBitSet(iAtom2, iAtom1, true); +points[0] = this.vwr.ms.at[iAtom1]; +points[1] = this.vwr.ms.at[iAtom2]; +nPoints = 2; +}break; +case 4160: +translation = JU.V3.newV(this.centerParameter(++i, null)); +isMolecular = isSelected = true; +break; +case 136314895: +helicalPath = true; +continue; +case 1296041985: +var symop = this.intParameter(++i); +if (this.chk) continue; +var info = this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, null, -1, false, null); +var op = (info == null ? null : info.get("operations")); +if (symop == 0 || op == null || op.length < Math.abs(symop)) this.invArg(); +op = op[Math.abs(symop) - 1]; +translation = op[5]; +invPoint = op[6]; +points[0] = op[7]; +if (op[8] != null) rotAxis = op[8]; +endDegrees = (op[9]).intValue(); +if (symop < 0) { +endDegrees = -endDegrees; +if (translation != null) translation.scale(-1); +}if (endDegrees == 0 && points[0] != null) { +rotAxis.normalize(); +JU.Measure.getPlaneThroughPoint(points[0], rotAxis, invPlane = new JU.P4()); +}q = JU.Quat.newVA(rotAxis, endDegrees); +nPoints = (points[0] == null ? 0 : 1); +isMolecular = true; +haveRotation = true; +isSelected = true; +continue; +case 134221831: +bsCompare = this.atomExpressionAt(++i); +ptsA = this.vwr.ms.getAtomPointVector(bsCompare); +if (ptsA == null) { +this.iToken = i; +this.invArg(); +}i = this.iToken; +ptsB = this.getPointVector(this.getToken(++i), i); +if (ptsB == null || ptsA.size() != ptsB.size()) { +this.iToken = i; +this.invArg(); +}m4 = new JU.M4(); +points[0] = new JU.P3(); +nPoints = 1; +J.api.Interface.getInterface("JU.Eigen", this.vwr, "script"); +var stddev = (this.chk ? 0 : JU.Measure.getTransformMatrix4(ptsA, ptsB, m4, points[0])); +if (stddev > 0.001) ptsB = null; +case 12: +case 11: +haveRotation = true; +m3 = new JU.M3(); +if (tok == 12) { +is4x4 = true; +m4 = this.theToken.value; +}if (m4 != null) { +points[0] = null; +bsAtoms = bsBest; +ptsB = null; +nPoints = 0; +translation = new JU.V3(); +m4.getTranslation(translation); +m4.getRotationScale(m3); +} else { +m3 = this.theToken.value; +}q = (this.chk ? new JU.Quat() : JU.Quat.newM(m3)); +rotAxis.setT(q.getNormal()); +endDegrees = q.getTheta(); +isMolecular = true; +break; +default: +this.invArg(); +} +i = this.iToken; +} +if (this.chk) return; +if (dihedralList != null) { +if (endDegrees != 3.4028235E38) { +isSpin = true; +degreesPerSecond = endDegrees; +}}if (isSelected && bsAtoms == null) bsAtoms = this.vwr.bsA(); +if (bsCompare != null) { +isSelected = true; +if (bsAtoms == null) bsAtoms = bsCompare; +}if (q != null && !isSeconds && !isDegreesPerSecond) { +isDegreesPerSecond = (degreesPerSecond > 0); +isSeconds = !isDegreesPerSecond; +}var rate = (degreesPerSecond == 1.4E-45 ? 10 : endDegrees == 3.4028235E38 ? degreesPerSecond : isDegreesPerSecond ? degreesPerSecond : isSeconds ? (endDegrees < 0 ? -1 : 1) * Math.abs(endDegrees / degreesPerSecond) : (degreesPerSecond < 0) == (q == null ? endDegrees > 0 : true) ? -endDegrees / degreesPerSecond : degreesPerSecond); +if (q == null && endDegrees < 0 && rate > 0) rate = -rate; +if (dihedralList != null) { +if (!isSpin) { +this.vwr.setDihedrals(dihedralList, null, 1); +return; +}translation = null; +}if (q != null) { +if (nPoints == 0 && translation != null && !is4x4) points[0] = this.vwr.ms.getAtomSetCenter(bsAtoms != null ? bsAtoms : isSelected ? this.vwr.bsA() : this.vwr.getAllAtoms()); +if (helicalPath && translation != null) { +points[1] = JU.P3.newP(points[0]); +points[1].add(translation); +var ret = JU.Measure.computeHelicalAxis(points[0], points[1], q); +points[0] = ret[0]; +var theta = (ret[3]).x; +if (theta != 0) { +translation = ret[1]; +rotAxis = JU.V3.newV(translation); +if (theta < 0) rotAxis.scale(-1); +}m4 = null; +}if (isSpin && m4 == null) m4 = JS.ScriptMathProcessor.getMatrix4f(q.getMatrix(), translation); +if (points[0] != null) nPoints = 1; +}if (invPoint != null || invPlane != null) { +this.vwr.invertAtomCoord(invPoint, null, bsAtoms, -1, false); +if (rotAxis == null) return; +}var requiresThread = (isSpin && (!this.vwr.headless || endDegrees == 3.4028235E38)); +if (isSpin && !requiresThread) isSpin = false; +if (!checkModelKit && nPoints < 2 && dihedralList == null) { +if (!isMolecular) { +if (requiresThread && bsAtoms == null && !this.useThreads()) { +isSpin = false; +if (endDegrees == 3.4028235E38) return; +}if (this.vwr.rotateAxisAngleAtCenter(this, points[0], rotAxis, rate, endDegrees, isSpin, bsAtoms)) { +if (this.isJS && isSpin && bsAtoms == null && this.vwr.g.waitForMoveTo && endDegrees != 3.4028235E38) throw new JS.ScriptInterruption(this, "rotate", 1); +}return; +}if (nPoints == 0) points[0] = new JU.P3(); +points[1] = JU.P3.newP(points[0]); +points[1].add(rotAxis); +nPoints = 2; +}if (nPoints == 0) points[0] = new JU.P3(); +if (nPoints < 2 || points[0].distance(points[1]) == 0) { +points[1] = JU.P3.newP(points[0]); +points[1].y += 1.0; +}if (endDegrees == 3.4028235E38) endDegrees = 0; +if (checkModelKit) { +if (endDegrees == 0) return; +if (bsAtoms == null || nPoints != 2 || isSpin || translation != null || dihedralList != null || ptsB != null || is4x4) this.invArg(); +var na = this.vwr.getModelkit(false).cmdRotateAtoms(bsAtoms, points, endDegrees); +if (this.doReport()) this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms rotated"), na), false); +return; +}if (endDegrees != 0 && translation != null && !haveRotation) translation.scale(endDegrees / translation.length()); +if (isSpin && translation != null && (endDegrees == 0 || degreesPerSecond == 0)) { +endDegrees = 0.01; +rate = (degreesPerSecond == 1.4E-45 ? 0.01 : degreesPerSecond < 0 ? -endDegrees / degreesPerSecond : degreesPerSecond * 0.01 / translation.length()); +degreesPerSecond = 0.01; +}if (bsAtoms != null && isSpin && ptsB == null && m4 != null) { +ptsA = this.vwr.ms.getAtomPointVector(bsAtoms); +ptsB = JU.Measure.transformPoints(ptsA, m4, points[0]); +}if (bsAtoms != null && !isSpin && ptsB != null) { +this.vwr.setAtomCoords(bsAtoms, 1145047049, ptsB); +} else { +if (requiresThread && !this.useThreads()) return; +if (this.vwr.rotateAboutPointsInternal(this, points[0], points[1], rate, endDegrees, isSpin, bsAtoms, translation, ptsB, dihedralList, is4x4 ? m4 : null, false) && this.isJS && isSpin) throw new JS.ScriptInterruption(this, "rotate", 1); +}}, "~B,~B"); +Clazz_defineMethod(c$, "cmdRestore", +function(){ +if (this.slen > 1) { +var saveName = this.optParameterAsString(2); +var tok = this.tokAt(1); +switch (tok) { +case 1073742077: +case 1073742132: +case 1073742139: +var floatSecondsTotal = (this.slen > 3 ? this.floatParameter(3) : 0); +if (floatSecondsTotal < 0) this.invArg(); +if (this.chk) return; +var type = ""; +switch (tok) { +case 1073742077: +type = "Orientation"; +this.vwr.stm.restoreOrientation(saveName, floatSecondsTotal, true); +break; +case 1073742132: +type = "Rotation"; +this.vwr.stm.restoreOrientation(saveName, floatSecondsTotal, false); +break; +case 1073742139: +type = "Scene"; +this.vwr.stm.restoreScene(saveName, floatSecondsTotal); +break; +} +if (this.isJS && floatSecondsTotal > 0 && this.vwr.g.waitForMoveTo) throw new JS.ScriptInterruption(this, "restore" + type, 1); +return; +} +this.checkLength23(); +switch (tok) { +case 1677721602: +if (!this.chk) this.vwr.stm.restoreBonds(saveName); +return; +case 14: +if (this.chk) return; +var sc = this.vwr.stm.getContext(saveName); +if (sc != null) { +this.restoreScriptContext(sc, true, false, false); +if (this.thisContext != null) { +this.thisContext.setMustResume(); +this.mustResumeEval = true; +this.tQuiet = true; +}}return; +case 1073742329: +if (this.chk) return; +var script = this.vwr.stm.getSavedCoordinates(saveName); +if (script == null) this.invArg(); +this.runScript(script); +this.vwr.checkCoordinatesChanged(null); +return; +case 1073742140: +if (!this.chk) this.vwr.stm.restoreSelection(saveName); +return; +case 1073742158: +if (this.chk) return; +var state; +state = this.vwr.stm.getSavedState(saveName); +if (state == null) { +if (saveName.equalsIgnoreCase("UNDO")) return; +this.invArg(); +}this.runScript(state); +return; +case 1639976963: +if (this.chk) return; +var shape = this.vwr.stm.getSavedStructure(saveName); +if (shape == null) this.invArg(); +this.runScript(shape); +return; +case 1814695966: +if (!this.chk) this.vwr.stm.restoreUnitCell(saveName); +return; +} +}this.errorStr2(53, "RESTORE", "bonds? context? coordinates? orientation? rotation? selection? state? structure?"); +}); +Clazz_defineMethod(c$, "cmdSave", +function(){ +if (this.slen > 1) { +var saveName = this.optParameterAsString(2); +switch (this.tokAt(1)) { +case 1677721602: +if (!this.chk) this.vwr.stm.saveBonds(saveName); +return; +case 14: +if (!this.chk) this.saveContext(saveName); +return; +case 1073742329: +if (!this.chk) this.vwr.stm.saveCoordinates(saveName, this.vwr.bsA()); +return; +case 1073742077: +case 1073742132: +if (!this.chk) this.vwr.stm.saveOrientation(saveName, null); +return; +case 1073742140: +if (!this.chk) { +this.vwr.stm.saveSelection(saveName, this.vwr.bsA()); +this.vwr.stm.restoreSelection(saveName); +}return; +case 1073742158: +if (!this.chk && this.vwr.getBoolean(603979898)) { +this.vwr.stm.saveState(saveName); +if (saveName.length == 0) { +this.showString(this.vwr.stm.getUndoInfo()); +}}return; +case 1639976963: +if (!this.chk) this.vwr.stm.saveStructure(saveName); +return; +case 1814695966: +if (!this.chk) this.vwr.stm.saveUnitCell(saveName); +return; +} +}this.errorStr2(53, "SAVE", "bonds? context? coordinates? orientation? rotation? selection? state? structure?"); +}); +Clazz_defineMethod(c$, "cmdScript", +function(tok, filename, theScript, params){ +if (tok == 134238732) { +this.checkLength(2); +if (!this.chk) this.vwr.jsEval(this.paramAsStr(1)); +return; +}var loadCheck = true; +var isCheck = false; +var doStep = false; +var isAsync = this.vwr.async; +var lineNumber = 0; +var pc = 0; +var lineEnd = 0; +var pcEnd = 0; +var i = 1; +var localPath = null; +var remotePath = null; +var scriptPath = null; +if (tok == 4124) { +i = -2; +}if (filename == null && theScript == null) { +tok = this.tokAt(i); +if (tok != 4) this.error(16); +filename = this.paramAsStr(i); +if (filename.equalsIgnoreCase("async")) { +isAsync = true; +filename = this.paramAsStr(++i); +}if (filename.equalsIgnoreCase("applet")) { +filename = null; +var appID = this.paramAsStr(++i); +theScript = this.parameterExpressionString(++i, 0); +this.checkLast(this.iToken); +if (this.chk) return; +if (appID.length == 0 || appID.equals("all")) appID = "*"; +if (!appID.equals(".")) { +this.vwr.jsEval(appID + "\1" + theScript); +if (!appID.equals("*")) return; +}} else { +tok = this.tokAt(this.slen - 1); +doStep = (tok == 266298); +if (filename.equalsIgnoreCase("inline")) { +filename = null; +theScript = this.parameterExpressionString(++i, (doStep ? this.slen - 1 : 0)); +i = this.iToken; +} else { +while (filename.equalsIgnoreCase("localPath") || filename.equalsIgnoreCase("remotePath") || filename.equalsIgnoreCase("scriptPath")) { +if (filename.equalsIgnoreCase("localPath")) localPath = this.paramAsStr(++i); + else if (filename.equalsIgnoreCase("scriptPath")) scriptPath = this.paramAsStr(++i); + else remotePath = this.paramAsStr(++i); +filename = this.paramAsStr(++i); +} +if (filename.startsWith("spt::")) filename = filename.substring(5); +filename = this.checkFileExists("SCRIPT_", isAsync, filename, i, true); +}if ((tok = this.tokAt(++i)) == 1073741877) { +isCheck = true; +tok = this.tokAt(++i); +}if (tok == 1073742050) { +loadCheck = false; +tok = this.tokAt(++i); +}if (tok == 1073741998 || tok == 1140850692) { +i++; +lineEnd = lineNumber = Math.max(this.intParameter(i++), 0); +if (this.checkToken(i)) { +if (this.getToken(i).tok == 268440576) lineEnd = (this.checkToken(++i) ? this.intParameter(i++) : 0); + else lineEnd = -this.intParameter(i++); +if (lineEnd <= 0) this.invArg(); +}} else if (tok == 1073741890 || tok == 1073741892) { +i++; +pc = Math.max(this.intParameter(i++) - 1, 0); +pcEnd = pc + 1; +if (this.checkToken(i)) { +if (this.getToken(i).tok == 268440576) pcEnd = (this.checkToken(++i) ? this.intParameter(i++) : 0); + else pcEnd = -this.intParameter(i++); +if (pcEnd <= 0) this.invArg(); +}}i = -i; +}} else if (filename != null && isAsync) { +filename = this.checkFileExists("SCRIPT_", isAsync, filename, i, true); +}if (i < 0) { +if (this.tokAt(i = -i) == 268435968) { +params = this.parameterExpressionList(i, -1, false); +i = this.iToken + 1; +}this.checkLength(doStep ? i + 1 : i); +}if (this.chk && !this.isCmdLine_c_or_C_Option) return; +if (this.isCmdLine_c_or_C_Option) isCheck = true; +if (theScript == null) { +theScript = this.getScriptFileInternal(filename, localPath, remotePath, scriptPath); +if (theScript == null) this.invArg(); +}if (this.isMenu(theScript)) { +this.vwr.setMenu(theScript, false); +return; +}var wasSyntaxCheck = this.chk; +var wasScriptCheck = this.isCmdLine_c_or_C_Option; +if (isCheck) this.chk = this.isCmdLine_c_or_C_Option = true; +this.pushContext(null, "SCRIPT"); +this.contextPath += " >> " + filename; +if (this.compileScript(filename, theScript, filename != null && this.debugScript)) { +this.pcEnd = pcEnd; +this.lineEnd = lineEnd; +while (pc < this.lineNumbers.length && this.lineNumbers[pc] < lineNumber) pc++; + +this.pc = pc; +var saveLoadCheck = this.isCmdLine_C_Option; +this.isCmdLine_C_Option = new Boolean (this.isCmdLine_C_Option & loadCheck).valueOf(); +this.executionStepping = new Boolean (this.executionStepping | doStep).valueOf(); +this.setScriptArguments(params, false); +if (isCheck) this.listCommands = true; +var timeMsg = this.vwr.getBoolean(603979934); +if (timeMsg) JU.Logger.startTimer("script"); +this.privateFuncs = null; +this.dispatchCommands(false, false, false); +if (this.$isStateScript) JS.ScriptManager.setStateScriptVersion(this.vwr, null); +if (timeMsg) this.showString(JU.Logger.getTimerMsg("script", 0)); +this.isCmdLine_C_Option = saveLoadCheck; +this.popContext(false, false); +} else { +JU.Logger.error(J.i18n.GT.$("script ERROR: ") + this.errorMessage); +this.popContext(false, false); +if (wasScriptCheck) { +this.setErrorMessage(null); +} else { +this.evalError(null, null); +}}this.chk = wasSyntaxCheck; +this.isCmdLine_c_or_C_Option = wasScriptCheck; +}, "~N,~S,~S,JU.Lst"); +Clazz_defineMethod(c$, "isMenu", +function(s){ +var pt = (s == null ? -1 : s.indexOf("Menu Structure")); +return (pt > 0 && s.startsWith("#") && pt < s.indexOf("\n")); +}, "~S"); +Clazz_defineMethod(c$, "cmdSelect", +function(i){ +if (this.slen == 1) { +this.vwr.selectStatus(null, false, 0, !this.doReport(), false); +return; +}if (this.slen == 2 && this.tokAt(1) == 1073742072) return; +var tok = this.tokAt(2); +var bs = null; +switch (tok) { +case 10: +if (Clazz_instanceOf(this.getToken(2).value,"JM.BondSet") || tok == 1677721602 && this.getToken(3).tok == 10) { +if (this.slen != this.iToken + 2) this.invArg(); +if (!this.chk) this.vwr.selectBonds(this.theToken.value); +return; +}break; +case 1745489939: +case 1677721602: +if (this.slen == 5 && this.tokAt(3) == 10) { +bs = this.getToken(3).value; +this.iToken++; +} else if (this.isArrayParameter(4)) { +bs = new JU.BS(); +var a = this.expandFloatArray(this.floatParameterSet(4, 0, 2147483647), 0, false); +for (var ii = a.length; --ii >= 0; ) if (a[ii] >= 0) bs.set(a[ii]); + +}this.checkLast(this.iToken); +if (this.chk) return; +if (bs == null) this.invArg(); +if (tok == 1745489939) this.setShapeProperty(6, "select", bs); + else this.vwr.selectBonds(bs); +return; +} +var addRemove = 0; +var isGroup = false; +var reportStatus = (this.tokAt(i) == 268436992); +if (reportStatus) i++; +if (this.getToken(1).intValue == 0 && this.theTok != 1073742334) { +var v = this.parameterExpressionToken(0).value; +if (!(Clazz_instanceOf(v,"JU.BS"))) this.invArg(); +this.checkLast(this.iToken); +bs = v; +} else { +tok = this.tokAt(i); +switch (tok) { +case 1073742335: +case 1073742334: +if (!this.chk) this.vwr.setSelectionHalosEnabled(tok == 1073742335); +tok = this.tokAt(++i); +if (tok == 0) return; +break; +} +switch (tok) { +case 1275069441: +case 1073742119: +addRemove = tok; +tok = this.tokAt(++i); +} +isGroup = (tok == 1086324742); +if (isGroup) tok = this.tokAt(++i); +bs = this.atomExpressionAt(i); +}if (this.chk) return; +if (this.isBondSet) { +this.vwr.selectBonds(bs); +} else { +if (bs.length() > this.vwr.ms.ac) { +var bs1 = this.vwr.getAllAtoms(); +bs1.and(bs); +bs = bs1; +}this.vwr.selectStatus(bs, isGroup, addRemove, !this.doReport(), reportStatus); +this.vwr.slm.noneSelected = Boolean.$valueOf(this.slen == 4 && this.tokAt(2) == 1073742333); +}}, "~N"); +Clazz_defineMethod(c$, "cmdSelectionHalos", +function(pt){ +var showHalo = false; +switch (pt == this.slen ? 1073742335 : this.getToken(pt).tok) { +case 1073742335: +case 1113589787: +showHalo = true; +case 1073742334: +case 1073742333: +case 1073742056: +this.setBooleanProperty("selectionHalos", showHalo); +break; +default: +this.invArg(); +} +}, "~N"); +Clazz_defineMethod(c$, "cmdSet", +function(){ +if (this.slen == 1) { +this.showString(this.vwr.getAllSettings(null)); +return; +}var isJmolSet = (this.paramAsStr(0).equals("set")); +var key = this.optParameterAsString(1); +if (isJmolSet && this.slen == 2 && key.indexOf("?") >= 0) { +this.showString(this.vwr.getAllSettings(key.substring(0, key.indexOf("?")))); +return; +}var tok = this.getToken(1).tok; +var newTok = 0; +var sval; +var ival = 2147483647; +var b; +var pt; +var showing = (!this.chk && this.doReport() && !(this.st[0].value).equals("var")); +switch (tok) { +case 553648144: +case 603979866: +case 603979903: +case 603979924: +case 603979960: +case 603979962: +case 603979964: +case 603979965: +case 603979970: +if (this.$isStateScript) return; +break; +case 1611272194: +this.cmdAxes(2); +return; +case 1610616835: +this.cmdBackground(2); +return; +case 1812599299: +this.cmdBoundbox(2); +return; +case 1611272202: +this.cmdFrank(2); +return; +case 1610616855: +this.cmdHistory(2); +return; +case 1825200146: +this.cmdLabel(2, null); +return; +case 1814695966: +this.cmdUnitcell(2); +return; +case 536870920: +this.sm.loadShape(8); +this.setShapeProperty(8, "highlight", (this.tokAt(2) == 1073742334 ? null : this.atomExpressionAt(2))); +return; +case 1610625028: +case 1611141172: +this.cmdSelectionHalos(2); +return; +case 536875070: +this.cmdTimeout(2); +return; +case 536870932: +var o = (this.isArrayParameter(2) ? this.floatParameterSet(2, 2, 2) : this.tokAt(2) == 2 ? Clazz_newFloatArray(-1, [this.intParameter(2), this.intParameter(3)]) : this.stringParameter(2)); +this.checkLast(this.iToken); +if (this.chk) return; +if ((typeof(o)=='string')) { +if (this.vwr.fm.loadImage(o, "\0windowImage", !this.useThreads())) throw new JS.ScriptInterruption(this, "windowImage", 1); +} else { +this.vwr.setWindowDimensions(o); +}return; +case 1639976963: +var type = J.c.STR.getProteinStructureType(this.paramAsStr(2)); +if (type === J.c.STR.NOT) this.invArg(); +var data = this.floatParameterSet(3, 0, 2147483647); +if (data.length % 4 != 0) this.invArg(); +this.vwr.setStructureList(data, type); +this.checkLast(this.iToken); +return; +case 545259526: +ival = this.getArgbParam(2); +if (!this.chk) this.setObjectArgb("axes", ival); +return; +case 1610612737: +b = false; +switch (this.getToken(this.checkLast(2)).tok) { +case 268438528: +break; +case 268438016: +b = true; +break; +default: +this.invArg(); +} +this.setBooleanProperty("bondModeOr", b); +return; +case 536870916: +case 536870917: +if (this.chk) return; +var iLevel = (this.tokAt(2) == 1073742334 || this.tokAt(2) == 2 && this.intParameter(2) == 0 ? 4 : (tok == 536870917 ? 6 : 5)); +JU.Logger.setLogLevel(iLevel); +this.setIntProperty("logLevel", iLevel); +if (iLevel == 4) { +this.vwr.setDebugScript(false); +if (showing) this.vwr.showParameter("debugScript", true, 80); +}this.setDebugging(); +if (showing) this.vwr.showParameter("logLevel", true, 80); +return; +case 537022465: +this.cmdSetEcho(0); +return; +case 536875059: +this.cmdScale(2); +return; +case 1610612738: +this.cmdFont(5, this.checkLength23() == 2 ? 0 : this.floatParameter(2)); +return; +case 1613238294: +var bool = false; +switch (this.tokAt(this.checkLast(2))) { +case 1114249217: +bool = true; +case 2097178: +this.setBooleanProperty("hbondsBackbone", bool); +break; +case 1073742150: +bool = true; +case 1073741926: +this.setBooleanProperty("hbondsSolid", bool); +break; +default: +this.invArg(); +} +return; +case 1745489939: +case 537006096: +switch (tok = this.tokAt(this.checkLast(2))) { +case 1073742335: +case 1073742334: +this.setBooleanProperty("measurementlabels", tok == 1073742335); +return; +case 1073741926: +case 2: +case 3: +this.vwr.shm.loadShape(6); +var mad10 = this.getSetAxesTypeMad10(2); +if (mad10 != 2147483647) this.setShapeSizeBs(6, tok == 3 ? Clazz_doubleToInt(mad10 / 10) : mad10, null); +return; +} +this.setUnits(this.paramAsStr(2), 545259568); +return; +case 1611141176: +b = false; +switch (this.tokAt(this.checkLast(2))) { +case 1114249217: +b = true; +break; +case 2097178: +break; +default: +this.invArg(); +} +this.setBooleanProperty("ssbondsBackbone", b); +return; +case 1610612741: +this.cmdSetLabel("toggle"); +return; +case 536870930: +var v = new JU.Lst(); +for (var i = 2; i < this.slen; i++) { +var argb = this.getArgbParam(i); +v.addLast(Integer.$valueOf(argb)); +i = this.iToken; +} +if (this.chk) return; +var n = v.size(); +var scale = Clazz_newIntArray (n, 0); +for (var i = n; --i >= 0; ) scale[i] = v.get(i).intValue(); + +this.vwr.cm.ce.setUserScale(scale); +return; +case 553648188: +if (this.isFloatParameter(2)) { +this.checkLength(3); +this.setIntProperty("zSlab", Clazz_floatToInt(this.floatParameter(2))); +pt = null; +} else { +if (!this.isCenterParameter(2)) this.invArg(); +pt = this.centerParameter(2, null); +this.checkLength(this.iToken + 1); +}if (!this.chk) this.vwr.tm.zSlabPoint = (pt == null ? null : JU.P3.newP(pt)); +return; +} +var justShow = true; +switch (tok) { +case 536870914: +if (this.slen > 2) { +var modelDotted = this.getSettingStr(2, false); +var modelNumber; +var useModelNumber = false; +if (modelDotted.indexOf(".") < 0) { +modelNumber = JU.PT.parseInt(modelDotted); +useModelNumber = true; +} else { +modelNumber = JU.Edge.getFloatEncodedInt(modelDotted); +}if (this.chk) return; +var modelIndex = this.vwr.ms.getModelNumberIndex(modelNumber, useModelNumber, true); +this.vwr.setBackgroundModelIndex(modelIndex); +return; +}break; +case 1648363544: +if (this.chk) return; +this.vwr.setAtomProperty(this.vwr.getAllAtoms(), 1648363544, -1, NaN, null, null, null); +if (this.slen > 2 && "probe".equalsIgnoreCase(this.getSettingStr(2, false))) { +this.runScript("#VDW radii for PROBE;{_H}.vdw = 1.0;{_H and connected(_C) and not connected(within(smiles,\'[a]\'))}.vdw = 1.17;{_C}.vdw = 1.75;{_C and connected(3) and connected(_O)}.vdw = 1.65;{_N}.vdw = 1.55;{_O}.vdw = 1.4;{_P}.vdw = 1.8;{_S}.vdw = 1.8;message VDW radii for H, C, N, O, P, and S set according to Word, et al., J. Mol. Biol. (1999) 285, 1711-1733"); +return; +}newTok = 545259555; +case 545259555: +if (this.slen > 2) { +sval = this.paramAsStr(2); +if (this.slen == 3 && J.c.VDW.getVdwType(sval) == null && J.c.VDW.getVdwType(sval = this.getSettingStr(2, false)) == null) this.invArg(); +this.setStringProperty(key, sval); +}break; +case 536870918: +if (this.slen > 2) { +var $var = this.parameterExpressionToken(2); +if ($var.tok == 8) pt = $var.value; + else { +pt = new JU.P3(); +var ijk = $var.asInt(); +if (ijk >= 100) JU.SimpleUnitCell.ijkToPoint3f(ijk, pt, -1, 0); +}if (!this.chk) this.vwr.setDefaultLattice(pt); +}break; +case 545259552: +case 545259545: +if (this.slen > 2) { +if ((this.theTok = this.tokAt(2)) == 1073741991 || this.theTok == 1073742116) { +sval = this.paramAsStr(this.checkLast(2)); +} else { +sval = this.getSettingStr(2, false); +}this.setStringProperty(key, sval); +}break; +case 1631586315: +ival = this.getSettingInt(2); +if (ival == -2147483648) this.invArg(); +if (!this.chk) this.vwr.ms.setFormalCharges(this.vwr.bsA(), ival); +return; +case 545259563: +if (this.slen > 2) this.setStringProperty(key, this.getSettingStr(2, isJmolSet)); +break; +case 545259568: +case 545259558: +if (this.slen > 2) this.setUnits(this.getSettingStr(2, isJmolSet), tok); +break; +case 545259573: +if (!this.chk) this.vwr.setPicked(-1, false); +if (this.slen > 2) { +this.cmdSetPicking(); +return; +}break; +case 545259574: +if (this.slen > 2) { +this.cmdSetPickingStyle(); +return; +}break; +case 1715472409: +break; +case 536870924: +ival = this.getSettingInt(2); +if (ival == -2147483648 || ival == 0 || ival == 1) { +justShow = false; +break; +}tok = 553648174; +key = "specularPercent"; +this.setIntProperty(key, ival); +break; +case 1649022989: +tok = 553648178; +key = "strandCount"; +this.setIntProperty(key, this.getSettingInt(2)); +break; +default: +justShow = false; +} +if (justShow && !showing) return; +var isContextVariable = (!justShow && !isJmolSet && this.getContextVariableAsVariable(key, false) != null); +if (!justShow && !isContextVariable) { +switch (tok) { +case 1677721602: +newTok = 603979928; +break; +case 1612709894: +newTok = 603979908; +break; +case 1612709900: +newTok = 603979910; +break; +case 1610612739: +newTok = 603979878; +break; +case 1665140738: +newTok = 570425394; +this.setFloatProperty("solventProbeRadius", this.getSettingFloat(2)); +justShow = true; +break; +case 1610612740: +newTok = 570425390; +break; +case 1612709912: +newTok = 603979948; +break; +case 1765808134: +newTok = 545259545; +break; +case 1611141175: +sval = this.paramAsStr(2).toLowerCase(); +switch ("x;y;z;fps;".indexOf(sval + ";")) { +case 0: +newTok = 570425398; +break; +case 2: +newTok = 570425400; +break; +case 4: +newTok = 570425402; +break; +case 6: +newTok = 570425396; +break; +default: +this.errorStr2(50, "set SPIN ", sval); +} +if (!this.chk) this.vwr.setSpin(sval, Clazz_floatToInt(this.floatParameter(this.checkLast(3)))); +justShow = true; +break; +} +}if (newTok != 0) { +key = JS.T.nameOf(tok = newTok); +} else if (!justShow && !isContextVariable) { +if (key.length == 0 || key.charAt(0) == '_' && this.tokAt(2) != 268437504) this.error(56); +var lckey = key.toLowerCase(); +if (lckey.indexOf("label") == 0 && JU.PT.isOneOf(lckey.substring(5), ";front;group;atom;offset;offsetexact;offsetabsolute;pointer;alignment;toggle;scalereference;for;")) { +if (this.cmdSetLabel(lckey.substring(5))) return; +}if (isJmolSet && lckey.indexOf("shift_") == 0) { +var f = this.floatParameter(2); +this.checkLength(3); +if (!this.chk) this.vwr.getNMRCalculation().setChemicalShiftReference(lckey.substring(6), f); +return; +}if (lckey.endsWith("callback")) tok = 536870912; +}if (isJmolSet && !JS.T.tokAttr(tok, 536870912)) { +this.iToken = 1; +if (!this.$isStateScript) this.errorStr2(50, "SET", key); +this.warning(51, "SET", key); +}if (!justShow && isJmolSet) { +switch (this.slen) { +case 2: +this.setBooleanProperty(key, true); +justShow = true; +break; +case 3: +if (ival != 2147483647) { +this.setIntProperty(key, ival); +justShow = true; +}break; +} +}if (!justShow && !isJmolSet && this.tokAt(2) == 1073742333) { +if (!this.chk) this.vwr.removeUserVariable(key.toLowerCase()); +justShow = true; +}if (!justShow) { +this.setVariable(1, 0, key, true); +if (!isJmolSet) return; +}if (showing) this.vwr.showParameter(key, true, 80); +}); +Clazz_defineMethod(c$, "cmdScale", +function(pt){ +if (this.chk) return; +var text = "%SCALE"; +switch (this.tokAt(pt)) { +case 1073742334: +this.setShapeProperty(31, "%SCALE", null); +this.checkLast(pt); +return; +case 1073742335: +pt++; +break; +default: +var units = JM.Measurement.fixUnits(this.optParameterAsString(pt)); +if (JM.Measurement.fromUnits(1, units) != 0) { +text += " " + units; +pt++; +} else { +text = null; +}break; +} +this.setShapeProperty(31, "thisID", "%SCALE"); +if (this.tokAt(pt) == 0) { +this.vwr.ms.setEchoStateActive(true); +this.vwr.shm.loadShape(31); +this.setShapeProperty(31, "target", "bottom"); +} else { +this.setShapeProperty(31, "target", "%SCALE"); +this.cmdSetEcho(pt); +}if (text != null) this.setShapeProperty(31, "text", text); +this.setShapeProperty(31, "thisID", null); +this.refresh(false); +}, "~N"); +Clazz_defineMethod(c$, "cmdSetEcho", +function(i){ +var propertyName = null; +var propertyValue = null; +var id = null; +var echoShapeActive = true; +var isScale = (i > 0); +var pt = (i == 0 ? 2 : i); +switch (isScale ? 0 : this.getToken(pt).tok) { +case 1073742334: +id = propertyName = "allOff"; +this.checkLength(++pt); +break; +case 1073742333: +echoShapeActive = false; +case 1073742327: +id = this.paramAsStr(2); +this.checkLength(++pt); +break; +} +switch (isScale ? this.tokAt(2) : this.getToken(2).tok) { +case 1073741974: +pt++; +case 1073741996: +case 12289: +case 1073742126: +case 1073742172: +case 1073742019: +case 1073741871: +case 1073741824: +case 4: +id = this.paramAsStr(pt++); +break; +} +if (!this.chk) { +this.vwr.ms.setEchoStateActive(echoShapeActive); +this.sm.loadShape(31); +if (id != null) { +if (propertyName == null && !isScale) this.setShapeProperty(31, "thisID", null); +this.setShapeProperty(31, propertyName == null ? "target" : propertyName, id); +}}if (pt < this.slen) { +if (isScale) { +switch (this.tokAt(pt)) { +case 536875059: +case 4120: +case 4: +this.invArg(); +} +}switch (this.getToken(pt++).tok) { +case 1073741832: +propertyName = "align"; +switch (this.getToken(pt).tok) { +case 1073741996: +case 1073742126: +case 12289: +propertyValue = this.paramAsStr(pt++); +break; +default: +this.invArg(); +} +break; +case 12289: +case 1073741996: +case 1073742126: +propertyName = "align"; +propertyValue = this.paramAsStr(pt - 1); +break; +case 554176526: +propertyName = "%zpos"; +propertyValue = Integer.$valueOf(Clazz_floatToInt(this.floatParameter(pt++))); +break; +case 1610625028: +case 2097192: +case 1073742335: +propertyName = "hidden"; +propertyValue = Boolean.FALSE; +break; +case 12294: +case 2097194: +propertyName = "hidden"; +propertyValue = Boolean.TRUE; +break; +case 1094717454: +var modelIndex = (this.chk ? 0 : this.modelNumberParameter(pt++)); +if (modelIndex >= this.vwr.ms.mc) this.invArg(); +propertyName = "model"; +propertyValue = Integer.$valueOf(modelIndex); +break; +case 268437504: +case 1073742195: +propertyName = "xypos"; +propertyValue = this.xypParameter(--pt); +if (propertyValue == null) this.invArg(); +pt = this.iToken + 1; +break; +case 2: +var posx = this.intParameter(pt - 1); +var namex = "xpos"; +if (this.tokAt(pt) == 268441090) { +namex = "%xpos"; +pt++; +}propertyName = "ypos"; +propertyValue = Integer.$valueOf(this.intParameter(pt++)); +if (this.tokAt(pt) == 268441090) { +propertyName = "%ypos"; +pt++; +}this.checkLength(pt); +this.setShapeProperty(31, namex, Integer.$valueOf(posx)); +break; +case 1073742066: +propertyName = "offset"; +if (this.isPoint3f(pt)) { +var pt3 = this.getPoint3f(pt, false, true); +propertyValue = Clazz_newFloatArray(-1, [-1, pt3.x, pt3.y, pt3.z, 0, 0, 0]); +pt = this.iToken + 1; +} else if (this.isArrayParameter(pt)) { +propertyValue = this.floatParameterSet(pt, 7, 7); +pt = this.iToken + 1; +} else if (this.tokAt(pt) == 1073742333) { +pt++; +}break; +case 1073742334: +propertyName = "off"; +break; +case 536875059: +propertyName = "scale"; +propertyValue = Float.$valueOf(this.floatParameter(pt++)); +break; +case 134222850: +propertyName = "script"; +propertyValue = this.paramAsStr(pt++); +break; +case 4120: +pt++; +case 4: +var isImage = (this.theTok != 4); +this.checkLength(pt--); +if (isImage) { +if (id == null) { +var data = new Array(1); +this.getShapePropertyData(31, "currentTarget", data); +id = data[0]; +}if (!this.chk && this.vwr.ms.getEchoStateActive() && this.vwr.fm.loadImage(this.getToken(pt).value, id, !this.useThreads())) throw new JS.ScriptInterruption(this, "setEchoImage", 1); +return; +}this.cmdEcho(pt); +return; +case 134217751: +propertyName = "point"; +propertyValue = (this.isCenterParameter(pt) ? this.centerParameter(pt, null) : null); +pt = this.iToken + 1; +break; +default: +if (this.isCenterParameter(pt - 1)) { +propertyName = "xyz"; +propertyValue = this.centerParameter(pt - 1, null); +pt = this.iToken + 1; +break; +}this.invArg(); +} +}this.checkLength(pt); +if (!this.chk && propertyName != null) this.setShapeProperty(31, propertyName, propertyValue); +}, "~N"); +Clazz_defineMethod(c$, "cmdSetLabel", +function(str){ +this.sm.loadShape(5); +var propertyValue = null; +this.setShapeProperty(5, "setDefaults", this.vwr.slm.noneSelected); +while (true) { +if (str.equals("for")) { +var bs = this.atomExpressionAt(2); +this.cmdLabel(this.iToken + 1, bs); +return true; +}if (str.equals("scalereference")) { +var scaleAngstromsPerPixel = this.floatParameter(2); +if (scaleAngstromsPerPixel >= 5) scaleAngstromsPerPixel = this.vwr.tm.getZoomSetting() / scaleAngstromsPerPixel / this.vwr.getScalePixelsPerAngstrom(false); +propertyValue = Float.$valueOf(scaleAngstromsPerPixel); +break; +}var isAbsolute = false; +if (str.equals("offset") || (isAbsolute = (str.equals("offsetabsolute") || str.equals("offsetexact")))) { +str = "offset"; +if (this.isPoint3f(2)) { +var pt = this.getPoint3f(2, false, true); +propertyValue = Clazz_newFloatArray(-1, [-1, pt.x, pt.y, pt.z, 0, 0, 0]); +} else if (this.isArrayParameter(2)) { +propertyValue = this.floatParameterSet(2, 7, 7); +} else { +var xOffset = this.intParameterRange(2, -500, 500); +var yOffset = this.intParameterRange(3, -500, 500); +if (xOffset == 2147483647 || yOffset == 2147483647) return true; +propertyValue = Integer.$valueOf(JV.JC.getOffset(xOffset, yOffset, isAbsolute)); +}break; +}if (str.equals("alignment")) { +switch (this.getToken(2).tok) { +case 1073741996: +case 1073742126: +case 12289: +str = "align"; +propertyValue = this.theToken.value; +break; +default: +this.invArg(); +} +break; +}if (str.equals("pointer")) { +var flags = 0; +switch (this.getToken(2).tok) { +case 1073742334: +case 1073742333: +break; +case 1610616835: +flags |= 2; +case 1073742335: +flags |= 1; +break; +default: +this.invArg(); +} +propertyValue = Integer.$valueOf(flags); +break; +}if (str.equals("toggle")) { +this.iToken = 1; +var bs = (this.slen == 2 ? this.vwr.bsA() : this.atomExpressionAt(2)); +this.checkLast(this.iToken); +if (this.chk) return true; +this.vwr.shm.loadShape(5); +this.vwr.shm.setShapePropertyBs(5, "toggleLabel", null, bs); +return true; +}this.iToken = 1; +var TF = (this.slen == 2 || this.getToken(2).tok == 1073742335); +if (str.equals("front") || str.equals("group")) { +if (!TF && this.tokAt(2) != 1073742334) this.invArg(); +if (!TF) str = "front"; +propertyValue = (TF ? Boolean.TRUE : Boolean.FALSE); +break; +}if (str.equals("atom")) { +if (!TF && this.tokAt(2) != 1073742334) this.invArg(); +str = "front"; +propertyValue = (TF ? Boolean.FALSE : Boolean.TRUE); +break; +}return false; +} +var bs = (this.iToken + 1 < this.slen ? this.atomExpressionAt(++this.iToken) : null); +this.checkLast(this.iToken); +if (this.chk) return true; +if (bs == null) this.setShapeProperty(5, str, propertyValue); + else this.setShapePropertyBs(5, str, propertyValue, bs); +return true; +}, "~S"); +Clazz_defineMethod(c$, "cmdSetPicking", +function(){ +if (this.slen == 2) { +this.setStringProperty("picking", "identify"); +return; +}if (this.slen > 4 || this.tokAt(2) == 4) { +this.setStringProperty("picking", this.getSettingStr(2, false)); +return; +}var i = 2; +var type = "SELECT"; +switch (this.getToken(2).tok) { +case 1275082241: +case 1745489939: +case 1611141175: +if (this.checkLength34() == 4) { +type = this.paramAsStr(2).toUpperCase(); +if (type.equals("SPIN")) this.setIntProperty("pickingSpinRate", this.intParameter(3)); + else i = 3; +}break; +case 12291: +break; +default: +this.checkLength(3); +} +var str = this.paramAsStr(i); +switch (this.getToken(i).tok) { +case 1073742335: +case 1073742056: +str = "identify"; +break; +case 1073742334: +case 1073742333: +str = "off"; +break; +case 1275082241: +str = "atom"; +break; +case 1825200146: +str = "label"; +break; +case 1677721602: +str = "bond"; +break; +case 12291: +this.checkLength(4); +if (this.tokAt(3) != 1677721602) this.invArg(); +str = "deleteBond"; +break; +} +var mode = ((mode = str.indexOf("_")) >= 0 ? mode : str.length); +mode = JV.ActionManager.getPickingMode(str.substring(0, mode)); +if (mode < 0) this.errorStr2(50, "SET PICKING " + type, str); +this.setStringProperty("picking", str); +}); +Clazz_defineMethod(c$, "cmdSetPickingStyle", +function(){ +if (this.slen > 4 || this.tokAt(2) == 4) { +this.setStringProperty("pickingStyle", this.getSettingStr(2, false)); +return; +}var i = 2; +var isMeasure = false; +var type = "SELECT"; +switch (this.getToken(2).tok) { +case 1745489939: +isMeasure = true; +type = "MEASURE"; +case 1275082241: +if (this.checkLength34() == 4) i = 3; +break; +default: +this.checkLength(3); +} +var str = this.paramAsStr(i); +switch (this.getToken(i).tok) { +case 1073742333: +case 1073742334: +str = (isMeasure ? "measureoff" : "toggle"); +break; +case 1073742335: +if (isMeasure) str = "measure"; +break; +} +if (JV.ActionManager.getPickingStyleIndex(str) < 0) this.errorStr2(50, "SET PICKINGSTYLE " + type, str); +this.setStringProperty("pickingStyle", str); +}); +Clazz_defineMethod(c$, "cmdSlab", +function(isDepth){ +var TF = false; +var plane = null; +var str; +if (this.isCenterParameter(1) || this.tokAt(1) == 9) plane = this.planeParameter(1, false); + else switch (this.getToken(1).tok) { +case 2: +var percent = this.intParameter(this.checkLast(1)); +if (!this.chk) if (isDepth) this.vwr.tm.depthToPercent(percent); + else this.vwr.tm.slabToPercent(percent); +return; +case 1073742335: +TF = true; +case 1073742334: +this.checkLength(2); +this.setBooleanProperty("slabEnabled", TF); +return; +case 4141: +this.checkLength(2); +if (this.chk) return; +this.vwr.tm.slabReset(); +this.setBooleanProperty("slabEnabled", true); +return; +case 36867: +this.checkLength(2); +if (!this.chk) this.vwr.tm.setSlabDepthInternal(isDepth); +return; +case 268440576: +str = this.paramAsStr(2); +if (str.equalsIgnoreCase("hkl")) plane = this.hklParameter(3, null, true); + else if (str.equalsIgnoreCase("plane")) plane = this.planeParameter(2, false); +if (plane == null) this.invArg(); +plane.scale4(-1); +break; +case 134217750: +switch (this.getToken(2).tok) { +case 1073742333: +break; +default: +plane = this.planeParameter(1, false); +} +break; +case 134219777: +plane = (this.getToken(2).tok == 1073742333 ? null : this.hklParameter(2, null, true)); +break; +case 1073742118: +return; +default: +this.invArg(); +} +if (!this.chk) this.vwr.tm.slabInternal(plane, isDepth); +}, "~B"); +Clazz_defineMethod(c$, "cmdSsbond", +function(){ +var mad = this.getMadParameter(); +if (mad == 2147483647) return; +this.setShapeProperty(1, "type", Integer.$valueOf(256)); +this.setShapeSizeBs(1, mad, null); +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +}); +Clazz_defineMethod(c$, "cmdStructure", +function(){ +var type = J.c.STR.getProteinStructureType(this.paramAsStr(1)); +if (type === J.c.STR.NOT) this.invArg(); +var bs = null; +switch (this.tokAt(2)) { +case 12290: +case 10: +case 1073742325: +bs = this.atomExpressionAt(2); +this.checkLast(this.iToken); +break; +default: +this.checkLength(2); +} +if (this.chk) return; +this.clearDefinedVariableAtomSets(); +this.vwr.setProteinType(type, bs); +}); +Clazz_defineMethod(c$, "cmdSubset", +function(){ +var bs = null; +if (!this.chk) this.vwr.slm.setSelectionSubset(null); +if (this.slen != 1 && (this.slen != 4 || !this.getToken(2).value.equals("off"))) bs = this.atomExpressionAt(1); +if (!this.chk) this.vwr.slm.setSelectionSubset(bs); +}); +Clazz_defineMethod(c$, "cmdSync", +function(){ +var text = ""; +var applet = ""; +var port = JU.PT.parseInt(this.optParameterAsString(1)); +if (port == -2147483648) { +this.checkLength(-3); +port = 0; +switch (this.slen) { +case 1: +applet = "*"; +text = "ON"; +break; +case 2: +applet = this.paramAsStr(1); +if (applet.indexOf("jmolApplet") == 0 || JU.PT.isOneOf(applet, ";*;.;^;")) { +text = "ON"; +if (!this.chk) this.vwr.syncScript(text, applet, 0); +applet = "."; +break; +}text = applet; +applet = "*"; +break; +case 3: +applet = this.paramAsStr(1); +text = (this.tokAt(2) == 528443 ? "GET_GRAPHICS" : this.paramAsStr(2)); +break; +} +} else { +var v = null; +if (this.slen > 2 && (v = this.setVariable(2, -1, "", false)) == null) return; +text = (this.slen == 2 ? null : v.tok == 6 ? v.toJSON() : v.asString()); +applet = null; +}if (this.chk) return; +this.vwr.syncScript(text, applet, port); +}); +Clazz_defineMethod(c$, "cmdThrow", +function(){ +if (this.chk) return; +var pt = (this.tokAt(1) == 14 ? 2 : 1); +var v = (pt == 1 ? this.setVariable(1, this.slen, "thrown_value", false) : this.vwr.g.setUserVariable("thrown_value", JS.SV.newS(this.optParameterAsString(2)))); +var info = v.asString(); +if (info.length == 0 && (info = this.optParameterAsString(1)).length == 0) info = "context"; +if (pt == 2) { +this.saveContext(info); +if (this.doReport()) this.report(J.i18n.GT.o(J.i18n.GT.$("to resume, enter: &{0}"), info), false); +throw new JS.ScriptInterruption(this, info, -2147483648); +}this.evalError(info, null); +}); +Clazz_defineMethod(c$, "saveContext", +function(saveName){ +var sc = this.getScriptContext("Context_" + saveName); +this.vwr.stm.saveContext(saveName, sc); +this.vwr.g.setUserVariable(saveName, JS.SV.newV(14, sc)); +return sc; +}, "~S"); +Clazz_defineMethod(c$, "cmdTimeout", +function(index){ +var name = null; +var script = null; +var mSec = 0; +if (this.slen == index) { +this.showString(this.vwr.showTimeout(null)); +return; +}for (var i = index; i < this.slen; i++) switch (this.getToken(i).tok) { +case 1073741974: +name = this.paramAsStr(++i); +if (this.slen == 3) { +if (!this.chk) this.vwr.triggerTimeout(name); +return; +}break; +case 1073742334: +break; +case 2: +mSec = this.intParameter(i); +break; +case 3: +mSec = Math.round(this.floatParameter(i) * 1000); +break; +default: +if (name == null) name = this.paramAsStr(i); + else if (script == null) script = this.paramAsStr(i); + else this.invArg(); +break; +} + +if (!this.chk) this.vwr.setTimeout(name, mSec, script); +}, "~N"); +Clazz_defineMethod(c$, "cmdTranslate", +function(isSelected){ +var bs = null; +var i = 1; +var i0 = 0; +if (this.tokAt(1) == 1113589787) { +isSelected = true; +i0 = 1; +i = 2; +}if (this.isPoint3f(i)) { +var pt = this.getPoint3f(i, true, true); +bs = (this.iToken + 1 < this.slen ? this.atomExpressionAt(++this.iToken) : null); +this.checkLast(this.iToken); +if (!this.chk) this.vwr.setAtomCoordsRelative(pt, bs); +return; +}var xyz = (this.paramAsStr(i).toLowerCase() + " ").charAt(0); +if ("xyz".indexOf(xyz) < 0) this.error(0); +var amount = this.floatParameter(++i); +var type; +switch (this.tokAt(++i)) { +case 0: +case 12290: +case 10: +case 1073742325: +type = '\0'; +break; +default: +type = (this.optParameterAsString(i).toLowerCase() + '\0').charAt(0); +} +if (amount == 0 && type != '\0') return; +this.iToken = i0 + (type == '\0' ? 2 : 3); +bs = (isSelected ? this.vwr.bsA() : this.iToken + 1 < this.slen ? this.atomExpressionAt(++this.iToken) : null); +this.checkLast(this.iToken); +if (!this.chk) { +this.vwr.translate(xyz, amount, type, bs); +this.refresh(false); +}}, "~B"); +Clazz_defineMethod(c$, "cmdUnbind", +function(){ +if (this.slen != 1) this.checkLength23(); +var mouseAction = this.optParameterAsString(1); +var name = this.optParameterAsString(2); +if (mouseAction.length == 0 || this.tokAt(1) == 1073742327) mouseAction = null; +if (name.length == 0 || this.tokAt(2) == 1073742327) name = null; +if (name == null && mouseAction != null && JV.ActionManager.getActionFromName(mouseAction) >= 0) { +name = mouseAction; +mouseAction = null; +}if (!this.chk) this.vwr.unBindAction(mouseAction, name); +}); +Clazz_defineMethod(c$, "cmdUndoRedo", +function(tok){ +var n = 1; +var len = 2; +switch (tok) { +case 603984065: +case 4139: +var state = this.vwr.stm.getUndoRedoState(tok); +if (state != null) this.runScript(state); +return; +case 4165: +case 4140: +break; +} +switch (this.tokAt(1)) { +case 0: +len = 1; +break; +case 1073742327: +n = 0; +break; +case 2: +n = this.intParameter(1); +break; +default: +this.invArg(); +} +this.checkLength(len); +if (!this.chk) this.vwr.undoMoveAction(tok, n); +}, "~N"); +Clazz_defineMethod(c$, "cmdUnitcell", +function(i){ +this.getCmdExt().dispatch(1814695966, i == 2, null); +}, "~N"); +Clazz_defineMethod(c$, "cmdVector", +function(){ +var type = J.atomdata.RadiusData.EnumType.SCREEN; +var value = 1; +this.checkLength(-3); +switch (this.iToken = this.slen) { +case 1: +break; +case 2: +switch (this.getToken(1).tok) { +case 1073742335: +break; +case 1073742334: +value = 0; +break; +case 2: +var d = this.intParameterRange(1, 0, 19); +if (d == 2147483647) return; +value = d; +break; +case 3: +type = J.atomdata.RadiusData.EnumType.ABSOLUTE; +if (Float.isNaN(value = this.floatParameterRange(1, 0, 3))) return; +break; +default: +this.error(6); +} +break; +case 3: +switch (this.tokAt(1)) { +case 1112152078: +this.setIntProperty("vectorTrace", this.intParameterRange(2, 0, 20)); +return; +case 536875059: +if (!Float.isNaN(value = this.floatParameterRange(2, -100, 100))) this.setFloatProperty("vectorScale", value); +return; +case 64: +var max = this.floatParameter(2); +if (!this.chk) this.vwr.ms.scaleVectorsToMax(max); +return; +} +break; +} +this.setShapeSize(18, new J.atomdata.RadiusData(null, value, type, null)); +}); +Clazz_defineMethod(c$, "cmdVibration", +function(){ +this.checkLength(-3); +var period = 0; +switch (this.getToken(1).tok) { +case 1073742335: +this.checkLength(2); +period = this.vwr.getFloat(570425412); +break; +case 1073742334: +this.checkLength(2); +period = 0; +break; +case 2: +case 3: +this.checkLength(2); +period = this.floatParameter(1); +break; +case 536875059: +if (!Float.isNaN(period = this.floatParameterRange(2, -100, 100))) this.setFloatProperty("vibrationScale", period); +return; +case 64: +var max = this.floatParameter(2); +if (!this.chk) this.vwr.ms.scaleVectorsToMax(max); +break; +case 1073742090: +this.setFloatProperty("vibrationPeriod", this.floatParameter(2)); +return; +case 1073741824: +this.invArg(); +break; +default: +period = -1; +} +if (period < 0) this.invArg(); +if (this.chk) return; +if (period == 0) { +this.vwr.tm.setVibrationPeriod(0); +return; +}this.vwr.setVibrationPeriod(-period); +}); +Clazz_defineMethod(c$, "cmdWireframe", +function(){ +var mad = -2147483648; +if (this.tokAt(1) == 4141) this.checkLast(1); + else mad = this.getMadParameter(); +if (this.chk || mad == 2147483647) return; +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +this.setShapeSizeBs(1, mad == -2147483648 ? 300 : mad, null); +}); +Clazz_defineMethod(c$, "cmdZap", +function(isZapCommand){ +if (this.slen == 1 || !isZapCommand) { +var doAll = (isZapCommand && !this.$isStateScript); +if (doAll) this.vwr.cacheFileByName(null, false); +this.vwr.zap(true, doAll, true); +this.refresh(false); +return; +}var bs = this.atomExpressionAt(1); +if (this.chk) return; +if (bs.nextSetBit(0) < 0 && this.slen == 4 && this.tokAt(2) == 1073742359) { +var iModel = this.vwr.ms.getModelNumberIndex(this.getToken(2).intValue, false, true); +if (iModel >= 0) this.vwr.deleteModels(iModel, null); +return; +}var nDeleted = this.vwr.deleteAtoms(bs, true); +var isQuiet = !this.doReport(); +if (!isQuiet) this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms deleted"), nDeleted), false); +this.vwr.selectStatus(null, false, 0, isQuiet, false); +}, "~B"); +Clazz_defineMethod(c$, "cmdZoom", +function(isZoomTo){ +if (!isZoomTo) { +var tok = (this.slen > 1 ? this.getToken(1).tok : 1073742335); +switch (tok) { +case 1275068432: +case 1073742079: +break; +case 1073742335: +case 1073742334: +if (this.slen > 2) this.bad(); +if (!this.chk) this.setBooleanProperty("zoomEnabled", tok == 1073742335); +return; +} +}var center = null; +var i = 1; +var floatSecondsTotal = (isZoomTo ? (this.isFloatParameter(i) ? this.floatParameter(i++) : 1) : 0); +if (floatSecondsTotal < 0) { +i--; +floatSecondsTotal = 0; +}var ptCenter = 0; +var bsCenter = null; +if (this.tokAt(i) == 1814695966 || this.isCenterParameter(i)) { +ptCenter = i; +var ret = new Array(1); +center = this.centerParameter(i, ret); +if (Clazz_instanceOf(ret[0],"JU.BS")) bsCenter = ret[0]; +i = this.iToken + 1; +} else if (this.tokAt(i) == 2 && this.getToken(i).intValue == 0) { +bsCenter = this.vwr.getAtomBitSet("visible"); +center = this.vwr.ms.getAtomSetCenter(bsCenter); +}var zoom = this.vwr.tm.getZoomSetting(); +var newZoom = this.getZoom(ptCenter, i, bsCenter, zoom); +i = this.iToken + 1; +var xTrans = NaN; +var yTrans = NaN; +if (i != this.slen) { +xTrans = this.floatParameter(i++); +yTrans = this.floatParameter(i++); +}if (i != this.slen) this.invArg(); +if (newZoom < 0) { +newZoom = -newZoom; +if (isZoomTo) { +if (this.slen == 1) newZoom *= 2; + else if (center == null) newZoom /= 2; +}}var max = 200000; +if (newZoom < 5 || newZoom > max) this.numberOutOfRange(5, max); +if (!this.vwr.tm.isWindowCentered()) { +if (center != null) { +var bs = this.atomExpressionAt(ptCenter); +if (!this.chk) this.vwr.setCenterBitSet(bs, false); +}center = this.vwr.tm.fixedRotationCenter; +if (Float.isNaN(xTrans)) xTrans = this.vwr.tm.getTranslationXPercent(); +if (Float.isNaN(yTrans)) yTrans = this.vwr.tm.getTranslationYPercent(); +}if (this.chk) return; +if (Float.isNaN(xTrans)) xTrans = 0; +if (Float.isNaN(yTrans)) yTrans = 0; +if (!this.useThreads()) floatSecondsTotal = 0; +this.vwr.moveTo(this, floatSecondsTotal, center, JV.JC.center, NaN, null, newZoom, xTrans, yTrans, NaN, null, NaN, NaN, NaN, NaN, NaN, NaN); +if (this.isJS && floatSecondsTotal > 0 && this.vwr.g.waitForMoveTo) throw new JS.ScriptInterruption(this, "zoomTo", 1); +}, "~B"); +Clazz_defineMethod(c$, "colorShape", +function(shapeType, index, isBackground){ +var isScale = (Math.abs(shapeType) == 536875059); +if (isScale) { +shapeType = 31; +} else if (shapeType < 0) { +shapeType = this.getShapeType(-shapeType); +}var translucency = null; +var colorvalue = null; +var colorvalue1 = null; +var bs = null; +var prefix = (index == 2 && this.tokAt(1) == 1073741859 ? "ball" : ""); +var isIsosurface = (shapeType == 24 || shapeType == 25); +var doClearBondSet = false; +var translucentLevel = 3.4028235E38; +if (index < 0) { +bs = this.atomExpressionAt(-index); +index = this.iToken + 1; +if (this.isBondSet) { +doClearBondSet = true; +shapeType = 1; +}}var tok = this.getToken(index).tok; +if (isBackground) this.getToken(index); + else if ((isBackground = (tok == 1610616835)) == true) this.getToken(++index); +if (isBackground) prefix = "bg"; + else if (isIsosurface) { +switch (this.theTok) { +case 1073742018: +this.getToken(++index); +prefix = "mesh"; +break; +case 1073742094: +var argb = this.getArgbParamOrNone(++index, false); +colorvalue1 = (argb == 0 ? null : Integer.$valueOf(argb)); +this.getToken(index = this.iToken + 1); +break; +case 12290: +case 10: +case 1073742325: +if (Clazz_instanceOf(this.theToken.value,"JM.BondSet")) { +bs = this.theToken.value; +prefix = "vertex"; +} else { +bs = this.atomExpressionAt(index); +prefix = "atom"; +}this.getToken(index = this.iToken + 1); +break; +} +}if (!this.chk && (shapeType == 27 || shapeType == 28) && this.getIsoExt().dispatch(shapeType, true, this.st) != null) return; +var isTranslucent = (this.theTok == 603979967); +if (isTranslucent || this.theTok == 1073742074) { +if (translucentLevel == 1.4E-45) this.invArg(); +translucency = this.paramAsStr(index++); +if (isTranslucent && this.isFloatParameter(index)) translucentLevel = this.getTranslucentLevel(index++); +}tok = 0; +var isColor = (index < this.slen && this.tokAt(index) != 1073742335 && this.tokAt(index) != 1073742334); +if (isColor) { +tok = this.getToken(index).tok; +if ((!isIsosurface || this.tokAt(index + 1) != 1073742170) && this.isColorParam(index)) { +var argb = this.getArgbParamOrNone(index, false); +colorvalue = (argb == 0 ? null : Integer.$valueOf(argb)); +if (this.tokAt(index = this.iToken + 1) != 0 && translucency == null) { +this.getToken(index); +isTranslucent = (this.theTok == 603979967); +if (isTranslucent || this.theTok == 1073742074) { +translucency = this.paramAsStr(index++); +if (isTranslucent && this.isFloatParameter(index)) translucentLevel = this.getTranslucentLevel(index++); +}}if (this.isColorParam(index)) { +argb = this.getArgbParamOrNone(index, false); +colorvalue1 = (argb == 0 ? null : Integer.$valueOf(argb)); +index = this.iToken + 1; +}this.checkLength(index); +} else if (shapeType == 26) { +this.iToken--; +} else { +var name = this.paramAsStr(index).toLowerCase(); +var isByElement = (name.indexOf("byelement") == 0); +var isColorIndex = (isByElement || name.indexOf("byresidue") == 0); +var pal = (isColorIndex || isIsosurface ? J.c.PAL.PROPERTY : tok == 1112152075 ? J.c.PAL.CPK : J.c.PAL.getPalette(name)); +if (pal === J.c.PAL.UNKNOWN || (pal === J.c.PAL.TYPE || pal === J.c.PAL.ENERGY) && shapeType != 2) this.invArg(); +var data = null; +var bsSelected = (pal !== J.c.PAL.PROPERTY && pal !== J.c.PAL.VARIABLE || !this.vwr.g.rangeSelected ? null : this.vwr.bsA()); +if (pal === J.c.PAL.PROPERTY) { +if (isColorIndex) { +if (!this.chk) { +data = this.getCmdExt().getBitsetPropertyFloat(bsSelected, (isByElement ? 1094715402 : 1094713356) | 256, null, NaN, NaN); +}} else { +var isPropertyExplicit = name.equals("property"); +if (isPropertyExplicit && JS.T.tokAttr((tok = this.getToken(++index).tok), 1077936128) && (tok == 1086324754 || !JS.T.tokAttr(tok, 1086324736))) { +tok = this.getToken(index).tok; +var type = (tok == 1111490587 ? this.getToken(++index).value.toString() : tok == 1086324754 ? "color" : null); +if (!this.chk) { +data = this.getCmdExt().getBitsetPropertyFloat(bsSelected, tok | 256, type, NaN, NaN); +}index++; +} else if (!isPropertyExplicit && !isIsosurface) { +index++; +}}} else if (pal === J.c.PAL.VARIABLE) { +index++; +name = this.paramAsStr(index++); +data = Clazz_newFloatArray (this.vwr.ms.ac, 0); +JU.Parser.parseStringInfestedFloatArray("" + this.getParameter(name, 4, true), null, data); +pal = J.c.PAL.PROPERTY; +}if (pal === J.c.PAL.PROPERTY) { +var scheme = null; +if (this.tokAt(index) == 4) { +scheme = this.paramAsStr(index++); +if (scheme.indexOf("/") < 0) scheme = scheme.toLowerCase(); +if (this.isArrayParameter(index)) { +scheme += "=" + JS.SV.sValue(JS.SV.getVariableAS(this.stringParameterSet(index))).$replace('\n', ' '); +index = this.iToken + 1; +}} else if (isIsosurface && this.isColorParam(index)) { +scheme = this.getColorRange(index); +index = this.iToken + 1; +}if (scheme != null && !isIsosurface) { +this.setStringProperty("propertyColorScheme", (isTranslucent && translucentLevel == 3.4028235E38 ? "translucent " : "") + scheme); +isColorIndex = (scheme.indexOf("byelement") == 0 || scheme.indexOf("byresidue") == 0); +}var min = 0; +var max = 3.4028235E38; +if (!isColorIndex && (this.tokAt(index) == 1073741826 || this.tokAt(index) == 1073742114)) { +min = this.floatParameter(index + 1); +max = this.floatParameter(index + 2); +index += 3; +if (min == max && isIsosurface) { +var range = this.getShapeProperty(shapeType, "dataRange"); +if (range != null) { +min = range[0]; +max = range[1]; +}} else if (min == max) { +max = 3.4028235E38; +}}if (isIsosurface) { +} else if (data == null) { +if (!this.chk) this.vwr.setCurrentColorRange(name); +} else { +if (!this.chk) this.vwr.cm.setPropertyColorRangeData(data, bsSelected); +}if (isIsosurface) { +this.checkLength(index); +if (this.chk) return; +isColor = false; +var ce = (scheme == null ? this.getShapeProperty(shapeType, "colorEncoder") : null); +if (ce == null && (ce = this.vwr.cm.getColorEncoder(scheme)) == null) return; +ce.isTranslucent = (isTranslucent && translucentLevel == 3.4028235E38); +ce.setRange(min, max, min > max); +if (max == 3.4028235E38) ce.hi = max; +this.setShapeProperty(shapeType, "remapColor", ce); +this.showString((this.getShapeProperty(shapeType, "dataRangeStr")).$replace('\n', ' ')); +if (translucentLevel == 3.4028235E38) return; +} else if (max != 3.4028235E38) { +this.vwr.cm.setPropertyColorRange(min, max); +}} else { +index++; +}this.checkLength(index); +colorvalue = pal; +}}if (this.chk || shapeType < 0) return; +if (isScale) this.setShapeProperty(31, "target", "%SCALE"); +var typeMask; +switch (shapeType) { +case 4: +typeMask = 32768; +break; +case 2: +typeMask = 30720; +break; +case 3: +typeMask = 256; +break; +case 1: +typeMask = 1023; +break; +default: +typeMask = 0; +} +if (typeMask == 0) { +this.sm.loadShape(shapeType); +if (shapeType == 5) this.setShapeProperty(5, "setDefaults", this.vwr.slm.noneSelected); +} else { +if (bs != null) { +this.vwr.selectBonds(bs); +bs = null; +}shapeType = 1; +this.setShapeProperty(shapeType, "type", Integer.$valueOf(typeMask)); +}if (isColor) { +switch (tok) { +case 1111492619: +this.getPartialCharges(bs); +break; +case 1111490575: +case 1111490574: +this.vwr.autoCalculate(tok, null); +break; +case 1111492620: +if (this.vwr.g.rangeSelected) this.vwr.ms.clearBfactorRange(); +break; +case 1086324742: +this.vwr.ms.calcSelectedGroupsCount(); +break; +case 1094713362: +case 1094713361: +this.vwr.ms.calcSelectedMonomersCount(); +break; +case 1094713360: +this.vwr.ms.calcSelectedMoleculesCount(); +break; +} +if (colorvalue1 != null && (isIsosurface || shapeType == 11 || shapeType == 14 || shapeType == 21)) this.setShapeProperty(shapeType, "colorPhase", Clazz_newArray(-1, [colorvalue1, colorvalue])); + else if (bs == null) this.setShapeProperty(shapeType, prefix + "color", colorvalue); + else this.setShapePropertyBs(shapeType, prefix + "color", colorvalue, bs); +}if (translucency != null) this.setShapeTranslucency(shapeType, prefix, translucency, translucentLevel, bs); +if (isScale) this.setShapeProperty(31, "thisID", null); +if (typeMask != 0) this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +if (doClearBondSet) this.vwr.selectBonds(null); +if (shapeType == 0) this.vwr.shm.checkInheritedShapes(); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "getPartialCharges", +function(bs){ +try { +this.vwr.getOrCalcPartialCharges(bs, null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JS.ScriptInterruption(this, "partialcharge", 1); +} else { +throw e; +} +} +}, "JU.BS"); +Clazz_defineMethod(c$, "encodeRadiusParameter", +function(index, isOnly, allowAbsolute){ +var value = NaN; +var factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +var vdwType = null; +var tok = (index == -1 ? 1648363544 : this.getToken(index).tok); +switch (tok) { +case 1111490561: +case 1111490562: +case 1111492618: +case 1113589786: +case 1111492620: +case 1648363544: +value = 1; +factorType = J.atomdata.RadiusData.EnumType.FACTOR; +vdwType = (tok == 1648363544 ? null : J.c.VDW.getVdwType2(JS.T.nameOf(tok))); +tok = this.tokAt(++index); +break; +} +switch (tok) { +case 4141: +return this.vwr.rd; +case 1073741852: +case 1073742116: +case 1073741856: +case 1073741857: +case 1073741991: +value = 1; +factorType = J.atomdata.RadiusData.EnumType.FACTOR; +this.iToken = index - 1; +break; +case 268440577: +case 2: +case 3: +if (tok == 268440577) { +index++; +} else if (this.tokAt(index + 1) == 268441090) { +value = Math.round(this.floatParameter(index)); +this.iToken = ++index; +factorType = J.atomdata.RadiusData.EnumType.FACTOR; +if (Math.abs(value) > 200) { +this.integerOutOfRange(0, 200); +return null; +}if (isOnly) value = -value; +value /= 100; +break; +} else if (tok == 2) { +value = this.intParameter(index); +if (value > 749 || value < -200) { +this.integerOutOfRange(-200, 749); +return null; +}if (value > 0) { +value /= 250; +factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +} else { +value /= -100; +factorType = J.atomdata.RadiusData.EnumType.FACTOR; +}break; +}var max; +if (tok == 268440577 || !allowAbsolute) { +factorType = J.atomdata.RadiusData.EnumType.OFFSET; +max = 16; +} else { +factorType = J.atomdata.RadiusData.EnumType.ABSOLUTE; +vdwType = J.c.VDW.NADA; +max = 100; +}value = this.floatParameterRange(index, (isOnly || !allowAbsolute ? -max : 0), max); +if (Float.isNaN(value)) return null; +if (isOnly) value = -value; +if (value > 16) value = 16.1; +break; +default: +if (value == 1) index--; +} +if (vdwType == null) { +vdwType = J.c.VDW.getVdwType(this.optParameterAsString(++this.iToken)); +if (vdwType == null) { +this.iToken = index; +vdwType = J.c.VDW.AUTO; +}}return new J.atomdata.RadiusData(null, value, factorType, vdwType); +}, "~N,~B,~B"); +Clazz_defineMethod(c$, "expandFloatArray", +function(a, min, asBS){ +var n = a.length; +var haveNeg = false; +var bs = (asBS ? new JU.BS() : null); +try { +for (var i = 0; i < a.length; i++) if (a[i] < 0) { +n += Math.abs(a[i - 1] + a[i]) - 1; +haveNeg = true; +} +if (haveNeg) { +var b = (asBS ? null : Clazz_newFloatArray (n, 0)); +for (var pt = 0, i = 0; i < a.length; i++) { +n = Clazz_floatToInt(a[i]); +if (n >= 0) { +if (n < min) this.invArg(); +if (asBS) bs.set(n - 1); + else b[pt++] = n; +} else { +var j = Clazz_floatToInt(a[i - 1]); +var dir = (j <= -n ? 1 : -1); +for (var j2 = -n; j != j2; j += dir, pt++) if (!asBS) b[pt] = j + dir; + else bs.set(j); + +}} +a = b; +if (!asBS) n = a.length; +}if (asBS) { +for (var i = n; --i >= 0; ) bs.set(Clazz_floatToInt(a[i]) - 1); + +return bs; +}var ia = Clazz_newIntArray (n, 0); +for (var i = n; --i >= 0; ) ia[i] = Clazz_floatToInt(a[i]); + +return ia; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.invArg(); +return null; +} else { +throw e; +} +} +}, "~A,~N,~B"); +Clazz_defineMethod(c$, "frameControl", +function(i){ +switch (this.getToken(this.checkLast(i)).tok) { +case 1073742098: +case 1073742096: +case 4143: +case 20487: +case 1073742037: +case 1073742108: +case 1073742125: +case 1073741942: +case 1073741993: +if (!this.chk) this.vwr.setAnimation(this.theTok); +return; +} +this.invArg(); +}, "~N"); +Clazz_defineMethod(c$, "getColorRange", +function(i){ +var color1 = this.getArgbParam(i); +if (this.tokAt(++this.iToken) != 1073742170) this.invArg(); +var color2 = this.getArgbParam(++this.iToken); +var nColors = (this.tokAt(this.iToken + 1) == 2 ? this.intParameter(++this.iToken) : 0); +return JU.ColorEncoder.getColorSchemeList(JU.ColorEncoder.getPaletteAtoB(color1, color2, nColors)); +}, "~N"); +Clazz_defineMethod(c$, "getFullPathName", +function(withType){ +var filename = (!this.chk || this.isCmdLine_C_Option ? this.vwr.fm.getFullPathName(true) : "test.xyz"); +if (filename == null) this.invArg(); +if (withType && !"string".equals(filename) && !"zapped".equals(filename)) { +var ft = this.vwr.fm.getFileType(); +if (ft != null && ft.length > 0) filename = ft + "::" + filename; +}return filename; +}, "~B"); +Clazz_defineMethod(c$, "getObjectBoundingBox", +function(id){ +var data = Clazz_newArray(-1, [id, null, null]); +return (this.getShapePropertyData(24, "getBoundingBox", data) || this.getShapePropertyData(29, "getBoundingBox", data) || this.getShapePropertyData(25, "getBoundingBox", data) || this.getShapePropertyData(28, "getBoundingBox", data) || this.getShapePropertyData(27, "getBoundingBox", data) ? data[2] : null); +}, "~S"); +Clazz_defineMethod(c$, "getObjectCenter", +function(axisID, index, modelIndex){ +var data = Clazz_newArray(-1, [axisID, Integer.$valueOf(index), Integer.$valueOf(modelIndex)]); +return (this.getShapePropertyData(22, "getCenter", data) || this.getShapePropertyData(24, "getCenter", data) || this.getShapePropertyData(29, "getCenter", data) || this.getShapePropertyData(25, "getCenter", data) || this.getShapePropertyData(28, "getCenter", data) || this.getShapePropertyData(27, "getCenter", data) ? data[2] : null); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "getPlaneForObject", +function(id, vAB){ +var shapeType = this.sm.getShapeIdFromObjectName(id); +switch (shapeType) { +case 22: +this.setShapeProperty(22, "thisID", id); +var points = this.getShapeProperty(22, "vertices"); +if (points == null || points.length < 3 || points[0] == null || points[1] == null || points[2] == null) break; +return JU.Measure.getPlaneThroughPoints(points[0], points[1], points[2], new JU.V3(), vAB, new JU.P4()); +case 24: +this.setShapeProperty(24, "thisID", id); +return this.getShapeProperty(24, "plane"); +} +return null; +}, "~S,JU.V3"); +Clazz_defineMethod(c$, "getQuaternionArray", +function(quaternionOrSVData, itype){ +var data; +switch (itype) { +case 134221850: +data = quaternionOrSVData; +break; +case 9: +var pts = quaternionOrSVData; +data = new Array(pts.length); +for (var i = 0; i < pts.length; i++) data[i] = JU.Quat.newP4(pts[i]); + +break; +case 1073742001: +var sv = quaternionOrSVData; +data = new Array(sv.size()); +for (var i = 0; i < sv.size(); i++) { +var pt = JS.SV.pt4Value(sv.get(i)); +if (pt == null) return null; +data[i] = JU.Quat.newP4(pt); +} +break; +default: +return null; +} +return data; +}, "~O,~N"); +Clazz_defineMethod(c$, "getSetAxesTypeMad10", +function(index){ +if (index == this.slen) return 1; +switch (this.getToken(this.checkLast(index)).tok) { +case 1073742335: +return 1; +case 1073742334: +return 0; +case 1073741926: +return -1; +case 2: +return this.intParameterRange(index, -1, 19); +case 3: +var angstroms = this.floatParameterRange(index, 0, 2); +return (Float.isNaN(angstroms) ? 2147483647 : Clazz_doubleToInt(Math.floor(angstroms * 10000 * 2))); +} +if (!this.chk) this.errorStr(7, "\"DOTTED\""); +return 0; +}, "~N"); +Clazz_defineMethod(c$, "getSettingFloat", +function(pt){ +return (pt >= this.slen ? NaN : JS.SV.fValue(this.parameterExpressionToken(pt))); +}, "~N"); +Clazz_defineMethod(c$, "getSettingInt", +function(pt){ +return (pt >= this.slen ? -2147483648 : this.parameterExpressionToken(pt).asInt()); +}, "~N"); +Clazz_defineMethod(c$, "getSettingStr", +function(pt, isJmolSet){ +return (isJmolSet && this.slen == pt + 1 ? this.paramAsStr(pt) : this.parameterExpressionToken(pt).asString()); +}, "~N,~B"); +Clazz_defineMethod(c$, "getShapeProperty", +function(shapeType, propertyName){ +return this.sm.getShapePropertyIndex(shapeType, propertyName, -2147483648); +}, "~N,~S"); +Clazz_defineMethod(c$, "getShapePropertyData", +function(shapeType, propertyName, data){ +return this.sm.getShapePropertyData(shapeType, propertyName, data); +}, "~N,~S,~A"); +Clazz_defineMethod(c$, "getShapeType", +function(tok){ +var iShape = JV.JC.shapeTokenIndex(tok); +if (iShape < 0) this.error(49); +return iShape; +}, "~N"); +Clazz_defineMethod(c$, "getTranslucentLevel", +function(i){ +var f = this.floatParameter(i); +return (this.theTok == 2 && f > 0 && f < 9 ? f + 1 : f); +}, "~N"); +Clazz_defineMethod(c$, "getZoom", +function(ptCenter, i, bs, currentZoom){ +var zoom = (this.isFloatParameter(i) ? this.floatParameter(i++) : NaN); +if (zoom == 0 || currentZoom == 0) { +var r = NaN; +if (bs == null) { +switch (this.tokAt(ptCenter)) { +case 1814695966: +var uc = this.vwr.getCurrentUnitCell(); +if (uc == null) this.invArg(); +var pts = uc.getUnitCellVerticesNoOffset(); +var center = new JU.P3(); +for (var j = 0; j < 8; j++) { +center.add(pts[j]); +} +center.scale(0.125); +r = 0; +for (var j = 0; j < 8; j++) { +var d = pts[j].distanceSquared(center); +if (d > r) r = d; +} +if (r == 0) this.invArg(); +r = Math.sqrt(r); +break; +case 1073742330: +var bbox = this.getObjectBoundingBox(this.objectNameParameter(ptCenter + 1)); +if (bbox == null || (r = bbox[0].distance(bbox[1]) / 2) == 0) this.invArg(); +break; +} +} else { +r = this.vwr.ms.calcRotationRadiusBs(bs); +}if (Float.isNaN(r)) this.invArg(); +currentZoom = this.vwr.getFloat(570425388) / r * 100; +zoom = NaN; +}if (zoom < 0) { +zoom += currentZoom; +} else if (Float.isNaN(zoom)) { +var tok = this.tokAt(i); +switch (tok) { +case 1073742079: +case 1275068432: +zoom = currentZoom * (tok == 1073742079 ? 0.5 : 2); +i++; +break; +case 268441088: +case 268441089: +case 268440577: +var value = this.floatParameter(++i); +i++; +switch (tok) { +case 268441088: +zoom = currentZoom / value; +break; +case 268441089: +zoom = currentZoom * value; +break; +case 268440577: +zoom = currentZoom + value; +break; +} +break; +default: +zoom = (bs == null ? -currentZoom : currentZoom); +} +}this.iToken = i - 1; +return zoom; +}, "~N,~N,JU.BS,~N"); +Clazz_defineMethod(c$, "setElementColor", +function(str, argb){ +var n = -1; +var isSym = (str.charAt(0) == '_'); +out : while (true) { +if (isSym) { +str = str.substring(1); +for (var i = JU.Elements.elementNumberMax; --i >= 0; ) { +if (str.equalsIgnoreCase(JU.Elements.elementSymbolFromNumber(i))) { +n = i; +break out; +}} +for (var i = JU.Elements.altElementMax; --i >= 4; ) { +if (str.equalsIgnoreCase(JU.Elements.altElementSymbolFromIndex(i)) || str.equalsIgnoreCase(JU.Elements.altIsotopeSymbolFromIndex(i))) { +n = JU.Elements.altElementNumberFromIndex(i); +break out; +}} +} else { +for (var i = JU.Elements.elementNumberMax; --i >= 0; ) { +if (str.equalsIgnoreCase(JU.Elements.elementNameFromNumber(i))) { +n = i; +break out; +}} +for (var i = JU.Elements.altElementMax; --i >= 0; ) { +if (str.equalsIgnoreCase(JU.Elements.altElementNameFromIndex(i))) { +n = JU.Elements.altElementNumberFromIndex(i); +break out; +}} +}break; +} +if (this.chk || n < 0) { +return false; +}this.vwr.setElementArgb(n, argb); +return true; +}, "~S,~N"); +Clazz_defineMethod(c$, "setMeshDisplayProperty", +function(shape, i, tok){ +var propertyName = null; +var propertyValue = null; +var allowCOLOR = (shape == 25); +var checkOnly = (i == 0); +if (!checkOnly) tok = this.getToken(i).tok; +switch (tok) { +case 1765808134: +if (allowCOLOR) this.iToken++; + else break; +case 1073742074: +case 603979967: +if (!checkOnly) this.colorShape(shape, this.iToken, false); +return true; +case 0: +case 12291: +case 1073742335: +case 1073742072: +case 1073742334: +case 12294: +case 2097194: +case 1610625028: +case 2097192: +if (this.iToken == 1 && shape >= 0 && this.tokAt(2) == 0) this.setShapeProperty(shape, "thisID", null); +if (tok == 0) return (this.iToken == 1); +if (checkOnly) return true; +switch (tok) { +case 12291: +this.setShapeProperty(shape, "delete", null); +return true; +case 2097194: +case 12294: +tok = 1073742334; +break; +case 2097192: +tok = 1073742335; +break; +case 1610625028: +if (i + 1 == this.slen) tok = 1073742335; +break; +} +case 1073741958: +case 1073741861: +case 1073741964: +case 1073741898: +case 1073742039: +case 1112150019: +case 1073742042: +case 1073742018: +case 1073742052: +case 1073741938: +case 1073742046: +case 1073741862: +case 1073742057: +case 1073742182: +case 1073742060: +case 1073741960: +case 1073742058: +propertyName = "token"; +propertyValue = Integer.$valueOf(tok); +break; +} +if (propertyName == null) return false; +if (checkOnly) return true; +this.setShapeProperty(shape, propertyName, propertyValue); +if ((this.tokAt(this.iToken + 1)) != 0) { +if (!this.setMeshDisplayProperty(shape, ++this.iToken, 0)) --this.iToken; +}return true; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setObjectArgb", +function(str, argb){ +if (this.chk) return; +this.vwr.setObjectArgb(str, argb); +}, "~S,~N"); +Clazz_defineMethod(c$, "setObjectMad10", +function(iShape, name, mad10){ +if (!this.chk) this.vwr.setObjectMad10(iShape, name, mad10); +}, "~N,~S,~N"); +Clazz_defineMethod(c$, "setObjectProp", +function(id, tokCommand, ptColor){ +var data = Clazz_newArray(-1, [id, null]); +var s = ""; +var isWild = JU.PT.isWild(id); +for (var iShape = 17; ; ) { +if (this.getShapePropertyData(iShape, "checkID", data)) { +this.setShapeProperty(iShape, "thisID", id); +switch (tokCommand) { +case 12291: +this.setShapeProperty(iShape, "delete", null); +break; +case 12294: +case 1610625028: +this.setShapeProperty(iShape, "hidden", tokCommand == 1610625028 ? Boolean.FALSE : Boolean.TRUE); +break; +case 134222350: +s += this.getShapeProperty(iShape, "command") + "\n"; +break; +case 1765808134: +if (ptColor >= 0) this.colorShape(iShape, ptColor + 1, false); +break; +} +if (!isWild) break; +}switch (iShape) { +case 17: +iShape = 20; +continue; +case 20: +iShape = 32; +} +switch (--iShape) { +case 27: +iShape--; +break; +case 28: +iShape -= 2; +break; +} +if (iShape < 21) break; +} +return s; +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "setObjectProperty", +function(){ +var id = this.setShapeNameParameter(2); +return (this.chk ? "" : this.setObjectProp(id, this.tokAt(0), this.iToken)); +}); +Clazz_defineMethod(c$, "setShapeNameParameter", +function(i){ +var id = this.paramAsStr(i); +var isWild = id.equals("*"); +if (id.length == 0) this.invArg(); +if (isWild) { +switch (this.tokAt(i + 1)) { +case 0: +case 1073742335: +case 1073742072: +case 1073742334: +case 2097192: +case 2097194: +case 1765808134: +case 12291: +break; +default: +if (this.setMeshDisplayProperty(-1, 0, this.tokAt(i + 1))) break; +id += this.optParameterAsString(++i); +} +}if (this.tokAt(i + 1) == 268441089) id += this.paramAsStr(++i); +this.iToken = i; +return id; +}, "~N"); +Clazz_defineMethod(c$, "setShapeProperty", +function(shapeType, propertyName, propertyValue){ +if (!this.chk) this.sm.setShapePropertyBs(shapeType, propertyName, propertyValue, null); +}, "~N,~S,~O"); +Clazz_defineMethod(c$, "setShapePropertyBs", +function(iShape, propertyName, propertyValue, bs){ +if (!this.chk) this.sm.setShapePropertyBs(iShape, propertyName, propertyValue, bs); +}, "~N,~S,~O,JU.BS"); +Clazz_defineMethod(c$, "setShapeSize", +function(shapeType, rd){ +if (!this.chk) this.sm.setShapeSizeBs(shapeType, 0, rd, null); +}, "~N,J.atomdata.RadiusData"); +Clazz_defineMethod(c$, "setShapeSizeBs", +function(shapeType, size, bs){ +if (!this.chk) this.sm.setShapeSizeBs(shapeType, size, null, bs); +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "setShapeTranslucency", +function(shapeType, prefix, translucency, translucentLevel, bs){ +if (translucentLevel == 3.4028235E38) translucentLevel = this.vwr.getFloat(570425353); +this.setShapeProperty(shapeType, "translucentLevel", Float.$valueOf(translucentLevel)); +if (prefix == null) return; +if (bs == null) this.setShapeProperty(shapeType, prefix + "translucency", translucency); + else if (!this.chk) this.setShapePropertyBs(shapeType, prefix + "translucency", translucency, bs); +}, "~N,~S,~S,~N,JU.BS"); +Clazz_defineMethod(c$, "setSize", +function(shape, scale){ +var rd = null; +var tok = this.tokAt(1); +var isOnly = false; +switch (tok) { +case 1073742072: +this.restrictSelected(false, false); +case 1073742335: +break; +case 1073742334: +scale = 0; +break; +case 3: +case 2: +isOnly = (this.floatParameter(1) < 0 && (tok == 3 || this.tokAt(2) == 268441090)); +default: +rd = this.encodeRadiusParameter(1, isOnly, true); +if (rd == null) return; +if (Float.isNaN(rd.value)) this.invArg(); +} +if (rd == null) rd = new J.atomdata.RadiusData(null, scale, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO); +if (isOnly) this.restrictSelected(false, false); +this.setShapeSize(shape, rd); +}, "~N,~N"); +Clazz_defineMethod(c$, "setSizeBio", +function(iShape){ +var mad = 0; +switch (this.getToken(1).tok) { +case 1073742072: +this.restrictSelected(false, false); +case 1073742335: +mad = -1; +break; +case 1073742334: +break; +case 1639976963: +mad = -2; +break; +case 1111492620: +case 1073741922: +mad = -4; +break; +case 2: +if ((mad = (this.intParameterRange(1, 0, 1000) * 8)) == 2147483647) return; +break; +case 3: +mad = Math.round(this.floatParameterRange(1, -4.0, 4.0) * 2000); +if (mad == 2147483647) return; +if (mad < 0) { +this.restrictSelected(false, false); +mad = -mad; +}break; +case 10: +if (!this.chk) this.sm.loadShape(iShape); +this.setShapeProperty(iShape, "bitset", this.theToken.value); +return; +default: +this.error(6); +} +this.setShapeSizeBs(iShape, mad, null); +}, "~N"); +Clazz_defineMethod(c$, "setUnits", +function(units, tok){ +if (tok == 545259568 && (units.toLowerCase().endsWith("hz") || JU.PT.isOneOf(units.toLowerCase(), ";default;angstroms;au;bohr;nanometers;nm;picometers;pm;vanderwaals;vdw;"))) { +if (!this.chk) this.vwr.setUnits(units, true); +} else if (tok == 545259558 && JU.PT.isOneOf(units.toLowerCase(), ";kcal;kj;")) { +if (!this.chk) this.vwr.setUnits(units, false); +} else { +this.errorStr2(50, "set " + JS.T.nameOf(tok), units); +}return true; +}, "~S,~N"); +Clazz_defineMethod(c$, "toString", +function(){ +var str = new JU.SB(); +str.append("Eval\n pc:"); +str.appendI(this.pc); +str.append("\n"); +str.appendI(this.aatoken.length); +str.append(" statements\n"); +for (var i = 0; i < this.aatoken.length; ++i) { +str.append("----\n"); +var atoken = this.aatoken[i]; +for (var j = 0; j < atoken.length; ++j) { +str.appendO(atoken[j]); +str.appendC('\n'); +} +str.appendC('\n'); +} +str.append("END\n"); +return str.toString(); +}); +Clazz_defineMethod(c$, "getCurrentModelFileAsString", +function(fname){ +if (fname == null) fname = this.vwr.getParameter("_modelFile"); +return (("" + fname).equals("null") ? this.vwr.ms.getInlineData(this.vwr.am.cmi) : this.vwr.getFileAsString(fname)); +}, "~S"); +c$.iProcess = 0; +c$.commandHistoryLevelMax = 0; +c$.contextDepthMax = 100; +c$.scriptReportingLevel = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.ScriptParam"], "JS.ScriptExpr", ["java.util.Hashtable", "JU.BS", "$.CU", "$.Lst", "$.Measure", "$.P3", "$.PT", "$.SB", "J.api.Interface", "JM.AtomCollection", "$.BondSet", "$.Group", "$.ModelSet", "JS.SV", "$.ScriptMathProcessor", "$.T", "JU.BSUtil", "$.Edge", "$.Elements", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.debugHigh = false; +this.privateFuncs = null; +this.cmdExt = null; +this.isoExt = null; +this.mathExt = null; +this.smilesExt = null; +this.tempStatement = null; +this.ptTemp = null; +Clazz_instantialize(this, arguments);}, JS, "ScriptExpr", JS.ScriptParam); +Clazz_defineMethod(c$, "getCmdExt", +function(){ +return (this.cmdExt == null ? this.cmdExt = (this.getExt("Cmd")).init(this) : this.cmdExt); +}); +Clazz_defineMethod(c$, "getIsoExt", +function(){ +return (this.isoExt == null ? this.isoExt = (this.getExt("Iso")).init(this) : this.isoExt); +}); +Clazz_defineMethod(c$, "getMathExt", +function(){ +return (this.mathExt == null ? (this.mathExt = this.getExt("Math")).init(this) : this.mathExt); +}); +Clazz_defineMethod(c$, "getSmilesExt", +function(){ +return (this.smilesExt == null ? (this.smilesExt = this.getExt("Smiles")).init(this) : this.smilesExt); +}); +Clazz_defineMethod(c$, "getExt", +function(type){ +return J.api.Interface.getInterface("JS." + type + "Ext", this.vwr, "script"); +}, "~S"); +Clazz_defineMethod(c$, "parameterExpressionList", +function(pt, ptAtom, isArrayItem){ +return this.parameterExpression(pt, -1, null, true, true, ptAtom, isArrayItem, null, null, false); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "parameterExpressionString", +function(pt, ptMax){ +return this.parameterExpression(pt, ptMax, "", true, false, -1, false, null, null, false); +}, "~N,~N"); +Clazz_defineMethod(c$, "parameterExpressionBoolean", +function(pt, ptMax){ +return (this.parameterExpression(pt, ptMax, null, true, false, -1, false, null, null, false)).booleanValue(); +}, "~N,~N"); +Clazz_defineMethod(c$, "parameterExpressionToken", +function(pt){ +var result = this.parameterExpressionList(pt, -1, false); +return (result.size() > 0 ? result.get(0) : JS.SV.newS("")); +}, "~N"); +Clazz_defineMethod(c$, "parameterExpressionSelect", +function(h, where){ +this.st = where; +this.slen = this.st.length; +return (this.parameterExpression(2, -2147483648, null, true, false, -1, false, h, null, false)).booleanValue(); +}, "java.util.Map,~A"); +Clazz_defineMethod(c$, "parameterExpression", +function(pt, ptMax, key, ignoreComma, asVector, ptAtom, isArrayItem, localVars, localVar, isSpecialAssignment){ +var isImplicitAtomProperty = (localVar != null); +var isWhere = (localVar == null && localVars != null); +var isOneExpressionOnly = (pt < 0); +var returnBoolean = (!asVector && key == null); +var returnString = (!asVector && key != null && key.length == 0); +if (isOneExpressionOnly) pt = -pt; +var allContext = (localVars == null || ptMax != -2147483648); +if (ptMax < pt) ptMax = this.slen; +var ptEq = (isSpecialAssignment ? 0 : 1); +var ptWithin = -1; +var rpn = new JS.ScriptMathProcessor(this, isSpecialAssignment, isArrayItem, asVector, false, false, key); +var v; +var res; +var nSquare = 0; +var nParen = 0; +var topLevel = true; +out : for (var i = pt; i < ptMax; i++) { +v = null; +var tok = this.getToken(i).tok; +if (isImplicitAtomProperty && this.tokAt(i + 1) != 1073742336) { +var token = (localVars != null && localVars.containsKey(this.theToken.value) ? null : this.getBitsetPropertySelector(i, 10)); +if (token != null) { +rpn.addX(localVars.get(localVar)); +if (!rpn.addOpAllowMath(token, (this.tokAt(i + 1) == 268435968), 0)) this.invArg(); +if ((token.intValue == 134320141 || token.intValue == 102436) && this.tokAt(this.iToken + 1) != 268435968) { +rpn.addOp(JS.T.tokenLeftParen); +rpn.addOp(JS.T.tokenRightParen); +}i = this.iToken; +continue; +}}switch (tok) { +case 268437505: +case 1073742338: +if (!ignoreComma && topLevel) break out; +if (tok == 1073742338) this.invArg(); +if (isSpecialAssignment && nSquare == 1 && this.tokAt(i + 1) == 268440324) isSpecialAssignment = rpn.endAssignment(); +} +switch (tok) { +case 12290: +if ((tok = this.tokAt(++i)) == 1073742325) { +v = this.parameterExpressionToken(++i); +i = this.iToken; +} else if (tok == 2) { +v = this.vwr.ms.getAtoms(1094715393, Integer.$valueOf(this.st[i].intValue)); +break; +} else if (tok == 12290 && this.tokAt(i + 1) == 2) { +v = this.vwr.ms.getAtomsFromAtomNumberInFrame(this.st[++i].intValue); +break; +} else { +v = this.getParameter(JS.SV.sValue(this.st[i]), 1073742190, true); +}v = this.getParameter((v).asString(), 1073742190, true); +break; +case 134320649: +if (this.getToken(++i).tok != 268435968) this.invArg(); +if (localVars == null) localVars = new java.util.Hashtable(); +res = this.parameterExpression(++i, -1, null, ignoreComma, false, -1, false, localVars, localVar, false); +var TF = (res).booleanValue(); +var iT = this.iToken; +if (this.getToken(iT++).tok != 1073742339) this.invArg(); +this.parameterExpressionBoolean(iT, -1); +var iF = this.iToken; +if (this.tokAt(iF++) != 1073742339) this.invArg(); +this.parameterExpression(-iF, -1, null, ignoreComma, false, 1, false, localVars, localVar, false); +var iEnd = this.iToken; +if (this.tokAt(iEnd) != 268435969) this.invArg(); +v = this.parameterExpression(TF ? iT : iF, TF ? iF : iEnd, "XXX", ignoreComma, false, 1, false, localVars, localVar, false); +i = this.iToken = iEnd; +break; +case 134320648: +case 1275082241: +var isFunctionOfX = (pt > 0); +var isFor = (isFunctionOfX && tok == 134320648); +var dummy; +if (isFunctionOfX) { +if (this.getToken(++i).tok != 268435968 || !JS.T.tokAttr(this.getToken(++i).tok, 1073741824)) this.invArg(); +dummy = this.paramAsStr(i); +if (this.getToken(++i).tok != 1073742339) this.invArg(); +} else { +dummy = "_x"; +}v = this.parameterExpressionToken(-(++i)).value; +if (!(Clazz_instanceOf(v,"JU.BS"))) this.invArg(); +var bsAtoms = v; +i = this.iToken; +if (isFunctionOfX && this.getToken(i++).tok != 1073742339) this.invArg(); +var bsSelect = new JU.BS(); +var bsX = new JU.BS(); +var sout = (isFor ? new Array(bsAtoms.cardinality()) : null); +if (localVars == null) localVars = new java.util.Hashtable(); +bsX.set(0); +var t = JS.SV.newV(10, bsX); +t.index = 0; +localVars.put(dummy, t.setName(dummy)); +var pt2 = -1; +if (isFunctionOfX) { +pt2 = i - 1; +var np = 0; +var tok2; +while (np >= 0 && ++pt2 < ptMax) { +if ((tok2 = this.tokAt(pt2)) == 268435969) np--; + else if (tok2 == 268435968) np++; +} +}var p = 0; +var jlast = 0; +var j = bsAtoms.nextSetBit(0); +if (j < 0 || this.chk) { +this.iToken = pt2 - 1; +} else { +for (; j >= 0; j = bsAtoms.nextSetBit(j + 1)) { +if (jlast >= 0) bsX.clear(jlast); +jlast = j; +bsX.set(j); +t.index = j; +res = this.parameterExpression(i, pt2, (isFor ? "XXX" : null), ignoreComma, isFor, j, false, localVars, isFunctionOfX ? null : dummy, false); +if (isFor) { +if (res == null || (res).size() == 0) this.invArg(); +sout[p++] = ((res).get(0)).asString(); +} else if ((res).booleanValue()) { +bsSelect.set(j); +}} +}if (isFor) { +v = sout; +} else if (isFunctionOfX) { +v = bsSelect; +} else { +return this.listBS(bsSelect); +}i = this.iToken + 1; +break; +case 1073742339: +break out; +case 2: +if (this.tokAt(this.iToken + 1) == 1073742336 && ((tok = this.tokAt(this.iToken + 2)) == 805307393 || tok == 268441089)) { +this.theToken.value = Float.$valueOf(this.theToken.intValue); +this.theToken.tok = 3; +this.theToken.intValue = 2147483647; +i++; +}case 3: +case 1073742362: +rpn.addXNum(this.theToken); +break; +case 134217750: +if (this.tokAt(this.iToken + 1) == 268435968) { +if (!rpn.addOpAllowMath(this.theToken, true, 0)) this.invArg(); +break; +}case 1073742335: +case 1073742334: +case 4: +case 8: +case 9: +case 11: +case 12: +case 7: +case 10: +case 6: +case 14: +rpn.addX(JS.SV.newT(this.theToken)); +break; +case 1073742330: +if (this.tokAt(i + 2) == 1073742336 && this.tokAt(i + 3) == 1275072526) { +rpn.addXStr("$" + this.paramAsStr(++i)); +} else { +this.ignoreError = true; +var ptc; +try { +ptc = this.centerParameter(i, null); +rpn.addX(JS.SV.newV(8, ptc)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +rpn.addXStr(""); +} else { +throw e; +} +} +this.ignoreError = false; +i = this.iToken; +}break; +case 1073742332: +if (this.tokAt(i + 1) == 4) { +if (this.tokAt(i + 2) == 1073742338) { +v = (this.chk ? new JU.BS() : this.getAtomBitSet(this.stringParameter(i + 1))); +i += 2; +break; +}v = this.getAssocArray(i); +} else { +v = this.getPointOrPlane(i, 55); +}i = this.iToken; +break; +case 1073742325: +if (this.tokAt(i + 1) == 1073742326) { +v = new java.util.Hashtable(); +i++; +break; +} else if (this.tokAt(i + 1) == 1073742327 && this.tokAt(i + 2) == 1073742326) { +tok = 1073742327; +this.iToken += 2; +}case 1073742327: +if (tok == 1073742327) v = this.vwr.getAllAtoms(); + else v = this.atomExpression(this.st, i, 0, true, true, null, true); +i = this.iToken; +if (nParen == 0 && isOneExpressionOnly) { +this.iToken++; +return this.listBS(v); +}break; +case 1073742195: +rpn.addOp(this.theToken); +continue; +case 1073742326: +i++; +break out; +case 268436992: +if (!ignoreComma && topLevel) break out; +if (!rpn.addOp(this.theToken)) this.invArg(); +break; +case 1073742337: +case 1073742336: +if (isSpecialAssignment && topLevel && this.tokAt(i + 2) == 268440324) isSpecialAssignment = rpn.endAssignment(); +if (ptEq == 0 && topLevel) { +switch (this.tokAt(i + 1)) { +case 0: +break; +case 1275335685: +case 1275334681: +case 1140850694: +case 1140850706: +case 1140850696: +case 1275068418: +if (tok == 1073742336) break; +default: +rpn.addOp(JS.T.tokenArrayOpen); +rpn.addXStr(this.optParameterAsString(++i)); +rpn.addOp(JS.T.tokenArrayClose); +continue; +} +}var $var = this.getBitsetPropertySelector(i + 1, rpn.getXTok()); +var isUserFunction = ($var.intValue == 134320141); +var allowMathFunc = true; +var tok2 = this.tokAt(this.iToken + 2); +if (this.tokAt(this.iToken + 1) == 1073742336) { +switch (tok2) { +case 1073742327: +tok2 = 480; +if (this.tokAt(this.iToken + 3) == 1073742336 && this.tokAt(this.iToken + 4) == 1275068420) tok2 = 224; +case 1275068725: +case 32: +case 64: +case 192: +case 128: +case 160: +case 96: +allowMathFunc = (isUserFunction || $var.intValue == 1275069443 || tok2 == 480 || tok2 == 224 || tok2 == 1275068725); +$var.intValue |= tok2 & 480; +this.getToken(this.iToken + 2); +} +}var tokNext = this.tokAt(this.iToken + 1); +allowMathFunc = new Boolean (allowMathFunc & (tokNext == 268435968 || isUserFunction)).valueOf(); +if (!rpn.addOpAllowMath($var, allowMathFunc, isUserFunction ? tokNext : 0)) this.invArg(); +i = this.iToken; +if ($var.intValue == 134320141 && tokNext != 268435968) { +rpn.addOp(JS.T.tokenLeftParen); +rpn.addOp(JS.T.tokenRightParen); +}break; +case 1153433601: +case 1086326786: +case 1086326785: +case 1073742328: +case 1812599299: +case 1086326788: +case 1073742329: +case 1111490587: +case 1086326789: +case 1086324742: +case 1094717454: +case 1094713360: +case 1073742128: +case 134218756: +case 1086324744: +case 1094713366: +case 134218757: +case 1237320707: +case 1639976963: +if (!isWhere && i == ptWithin && this.tokAt(i + 1) == 268436992) { +rpn.addX(JS.SV.newT(this.theToken)); +break; +}default: +if (this.theTok == 268437504 && this.tokAt(i + 2) == 268436482) { +v = this.getAssocArray(i); +i = this.iToken; +break; +}if (JS.T.tokAttr(this.theTok, 268435456) || JS.T.tokAttr(this.theTok, 134217728) && this.tokAt(this.iToken + 1) == 268435968) { +if (!rpn.addOp(this.theToken)) { +if (ptAtom >= 0) { +break out; +}this.invArg(); +}switch (this.theTok) { +case 134217759: +ptWithin = i + 2; +break; +case 268440324: +if (topLevel) ptEq = i; +break; +case 268435968: +nParen++; +topLevel = false; +break; +case 268435969: +if (--nParen <= 0 && nSquare == 0) { +if (isOneExpressionOnly) { +this.iToken++; +break out; +}topLevel = true; +}break; +case 268437504: +nSquare++; +topLevel = false; +break; +case 268437505: +if (--nSquare == 0 && nParen == 0) { +if (isOneExpressionOnly) { +this.iToken++; +break out; +}topLevel = true; +}break; +} +} else { +var name = this.paramAsStr(i).toLowerCase(); +var haveParens = (this.tokAt(i + 1) == 268435968); +if (!haveParens) if (this.chk) { +v = name; +} else if (localVars == null || (v = JU.PT.getMapValueNoCase(localVars, name)) == null && allContext) { +if (name.startsWith("_")) { +v = (name.equals("_") ? this.vwr.getModelSetAuxiliaryInfo() : name.equals("_m") ? this.vwr.getCurrentModelAuxInfo() : null); +}if (v == null) v = this.getContextVariableAsVariable(name, false); + else if (ptEq == 0) this.invArg(); +}if (v == null) { +if (JS.T.tokAttr(this.theTok, 1073741824) && this.isFunction(name)) { +if (!rpn.addOp(JS.SV.newV(134320141, this.theToken.value))) this.invArg(); +if (!haveParens) { +rpn.addOp(JS.T.tokenLeftParen); +rpn.addOp(JS.T.tokenRightParen); +}} else { +$var = this.vwr.g.getAndSetNewVariable(name, false); +switch ($var.tok) { +case 2: +case 3: +if (this.noCopy(i, -1) || this.noCopy(i, 1)) break; +rpn.addXCopy($var); +continue; +default: +} +rpn.addX($var); +}}}} +if (v != null) { +if (Clazz_instanceOf(v,"JU.BS")) rpn.addXBs(v); + else rpn.addXObj(v); +}} +var result = rpn.getResult(); +if (result == null) { +if (!this.chk) rpn.dumpStacks("null result"); +this.error(13); +}if (result.tok == 135198) { +if (isSpecialAssignment && ptEq == 0) { +var rv = new JU.Lst(); +rv.addLast( new JS.SV()); +return rv; +}return result.value; +}if (this.chk) { +if (returnBoolean) return Boolean.TRUE; +if (returnString) return ""; +} else { +if (returnBoolean) return Boolean.$valueOf(result.asBoolean()); +if (returnString) { +if (result.tok == 4) result.intValue = 2147483647; +return result.asString(); +}}switch (result.tok) { +case 1073742335: +case 1073742334: +return Boolean.$valueOf(result.intValue == 1); +case 2: +return Integer.$valueOf(result.intValue); +case 10: +case 3: +case 4: +case 8: +default: +return result.value; +} +}, "~N,~N,~S,~B,~B,~N,~B,java.util.Map,~S,~B"); +Clazz_defineMethod(c$, "atomExpressionAt", +function(index){ +if (!this.checkToken(index)) { +this.iToken = index; +this.bad(); +}return this.atomExpression(this.st, index, 0, true, false, null, true); +}, "~N"); +Clazz_defineMethod(c$, "atomExpression", +function(code, pcStart, pcStop, allowRefresh, allowUnderflow, ret, andNotDeleted){ +this.isBondSet = false; +if (code !== this.st) { +this.tempStatement = this.st; +this.st = code; +}var rpn = new JS.ScriptMathProcessor(this, false, false, false, ret == null, allowUnderflow, null); +var val; +var refreshed = false; +this.iToken = 1000; +var ignoreSubset = (pcStart < 0); +var isInMath = false; +var bs; +var nExpress = 0; +var ac = this.vwr.ms.ac; +var ptWithin = -10; +if (ignoreSubset) pcStart = -pcStart; +ignoreSubset = new Boolean (ignoreSubset | this.chk).valueOf(); +if (pcStop == 0 && code.length > pcStart) pcStop = pcStart + 1; +expression_loop : for (var pc = pcStart; pc < pcStop; ++pc) { +this.iToken = pc; +var instruction = code[pc]; +if (instruction == null) break; +var value = instruction.value; +switch (instruction.tok) { +case 1073742325: +pcStart = pc; +pcStop = code.length; +nExpress++; +break; +case 1073742326: +nExpress--; +if (nExpress > 0) continue; +break expression_loop; +case 1073742332: +if (this.isPoint3f(pc)) { +var pt = this.getPoint3f(pc, true, true); +if (pt != null) { +rpn.addXPt(pt); +pc = this.iToken; +break; +}}break; +case 1073742338: +if (pc > 0 && code[pc - 1].tok == 1073742332) rpn.addXBs( new JU.BS()); +break; +case 268437504: +isInMath = true; +rpn.addOp(instruction); +break; +case 268437505: +isInMath = false; +rpn.addOp(instruction); +break; +case 12290: +rpn.addXBs(this.getAtomBitSet(value)); +break; +case 7: +bs = JS.SV.getBitSet(instruction, false); +if (bs != null) { +rpn.addXBs(bs); +break; +}case 6: +rpn.addXBs(this.vwr.ms.getAtoms(1086324744, (instruction).asString())); +break; +case 134219777: +rpn.addX(JS.SV.newT(instruction)); +rpn.addX(JS.SV.newV(9, this.hklParameter(pc + 2, null, true))); +pc = this.iToken; +break; +case 134217750: +rpn.addX(JS.SV.newT(instruction)); +rpn.addX(JS.SV.newV(9, this.planeParameter(pc + 2, false))); +pc = this.iToken; +break; +case 1073742329: +rpn.addX(JS.SV.newT(instruction)); +rpn.addXPt(this.getPoint3f(pc + 2, true, true)); +pc = this.iToken; +break; +case 4: +var s = value; +if (s.indexOf("({") == 0) { +bs = JU.BS.unescape(s); +if (bs != null) { +rpn.addXBs(bs); +break; +}} else if (s.indexOf("|") >= 0 && ptWithin != pc - 4) { +rpn.addXBs(this.vwr.ms.getAtoms(1086324744, s)); +break; +}rpn.addX(JS.SV.newT(instruction)); +if (s.equals("hkl")) { +rpn.addX(JS.SV.newV(9, this.hklParameter(pc + 2, null, true))); +pc = this.iToken; +}break; +case 134217759: +ptWithin = pc; +case 134218757: +case 134218756: +case 1237320707: +case 134353926: +case 134217736: +case 268436992: +case 1275203608: +rpn.addOp(instruction); +break; +case 1073742327: +rpn.addXBs(this.vwr.getAllAtoms()); +break; +case 1073742333: +rpn.addXBs( new JU.BS()); +break; +case 1073742335: +case 1073742334: +rpn.addX(JS.SV.newT(instruction)); +break; +case 1113589787: +rpn.addXBs(JU.BSUtil.copy(this.vwr.bsA())); +break; +case 2097194: +rpn.addXBs(JU.BSUtil.copy(this.vwr.slm.getHiddenSet())); +break; +case 12293: +rpn.addXBs(this.vwr.getMotionFixedAtoms(null, null)); +break; +case 2097192: +rpn.addXBs(JU.BSUtil.copyInvert(this.vwr.slm.getHiddenSet(), ac)); +break; +case 2097200: +rpn.addXBs(this.vwr.getBaseModelBitSet()); +break; +case 2097198: +rpn.addXBs(this.chk ? new JU.BS() : JU.BSUtil.copy(this.vwr.ms.getVisibleSet(!refreshed))); +refreshed = true; +break; +case 2097190: +if (!this.chk && allowRefresh) (this).refresh(false); +rpn.addXBs(this.chk ? new JU.BS() : this.vwr.ms.getClickableSet(!allowRefresh)); +allowRefresh = false; +break; +case 1073742356: +if (this.vwr.ms.mc != 1 || this.vwr.ms.haveBioModels) { +var atomID = instruction.intValue; +if (atomID > 0) { +bs = this.compareInt(1094713346, 268440324, atomID); +if (atomID == 2) bs.or(this.compareInt(1086326789, 268440324, 20)); +rpn.addXBs(bs); +} else { +rpn.addXBs(this.getAtomBits(instruction.tok, value)); +}} else { +rpn.addXBs((this).lookupIdentifierValue("_" + value)); +}break; +case 2097155: +case 2097188: +case 2097156: +case 1612709894: +case 1073742331: +case 2097166: +case 2097165: +case 2097168: +case 2097170: +case 2097172: +case 2097174: +case 1073742360: +case 1073742355: +case 2097196: +case 1088421903: +case 1814695966: +rpn.addXBs(this.getAtomBits(instruction.tok, value)); +break; +case 1073742358: +case 1073742359: +var iModel = instruction.intValue; +if (iModel == 2147483647 && Clazz_instanceOf(value, Integer)) { +iModel = (value).intValue(); +if (!this.vwr.haveFileSet()) { +rpn.addXBs(this.getAtomBits(1073742358, Integer.$valueOf(iModel))); +break; +}if (iModel <= 2147) iModel = iModel * 1000000; +}rpn.addXBs(this.bitSetForModelFileNumber(iModel)); +break; +case 1073742361: +case 1073742357: +rpn.addXBs(this.getAtomBits(instruction.tok, Integer.$valueOf(instruction.intValue))); +break; +case 1073742362: +if (isInMath) rpn.addXNum(instruction); + else rpn.addXBs(this.getAtomBits(1073742362, Integer.$valueOf(JS.ScriptExpr.getSeqCode(instruction)))); +break; +case 1073742363: +if (isInMath) { +rpn.addXNum(instruction); +rpn.addOp(JS.T.tokenMinus); +rpn.addXNum(code[++pc]); +break; +}var chainID = (pc + 3 < code.length && code[pc + 2].tok == 268439552 && code[pc + 3].tok == 1073742357 ? code[pc + 3].intValue : -1); +rpn.addXBs(this.getAtomBits(1073742363, Clazz_newIntArray(-1, [JS.ScriptExpr.getSeqCode(instruction), JS.ScriptExpr.getSeqCode(code[++pc]), chainID]))); +if (chainID != -1) pc += 2; +break; +case 1094713350: +case 1094713349: +rpn.addXBs(this.getAtomBits(instruction.tok, value)); +break; +case 2097182: +rpn.addXBs(this.vwr.am.cmi < 0 ? this.vwr.getFrameAtoms() : this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi)); +break; +case 1612709900: +case 2097154: +case 1114249217: +case 1612709912: +case 136314895: +case 2097159: +case 2097160: +case 2097162: +case 2097178: +case 2097180: +rpn.addXBs((this).lookupIdentifierValue(value)); +break; +case 268440323: +case 268440322: +case 268440321: +case 268440320: +case 268440324: +case 268440325: +case 268440326: +var tok = instruction.tok; +var tokWhat = instruction.intValue; +if ((tokWhat == 1094717448) && tok != 268440324) this.invArg(); +var data = null; +if (tokWhat == 1715472409) { +if (pc + 2 == code.length) this.invArg(); +if (!this.chk) data = this.vwr.getDataObj(code[++pc].value, null, 1); +}if (++pc == code.length) this.invArg(); +rpn.addXBs(this.chk ? new JU.BS() : this.getComparison(code[pc], tokWhat, tok, value, data)); +break; +case 3: +case 2: +rpn.addXNum(instruction); +break; +case 10: +var bs1 = (Clazz_instanceOf(value,"JM.BondSet") ? value : JU.BSUtil.copy(value)); +rpn.addXBs(bs1); +break; +case 8: +rpn.addXPt(value); +break; +default: +if (JS.T.tokAttr(instruction.tok, 268435456)) { +if (!rpn.addOp(instruction)) this.invArg(); +break; +}if (!((typeof(value)=='string'))) { +rpn.addXObj(value); +break; +}val = this.getParameter(value, 0, true); +if (isInMath) { +rpn.addXObj(val); +break; +}if ((typeof(val)=='string') || Clazz_instanceOf(val,"JU.Lst")) val = this.getStringObjectAsVariable(val); +if ((typeof(val)=='string')) val = (this).lookupIdentifierValue(value); +rpn.addXObj(val); +break; +} +} +var expressionResult = rpn.getResult(); +if (expressionResult == null) { +if (allowUnderflow) return null; +if (!this.chk) rpn.dumpStacks("after getResult"); +this.error(13); +}var exp = expressionResult.value; +if ((typeof(exp)=='string') && (ret == null || (exp).startsWith("({"))) { +exp = (this.chk ? new JU.BS() : this.getAtomBitSet(exp)); +}if (ret != null && !(Clazz_instanceOf(exp,"JU.BS"))) { +ret[0] = exp; +return null; +}bs = (Clazz_instanceOf(exp,"JU.BS") ? exp : new JU.BS()); +this.isBondSet = (Clazz_instanceOf(exp,"JM.BondSet")); +if (!this.isBondSet && (bs = this.vwr.slm.excludeAtoms(bs, ignoreSubset)).length() > this.vwr.ms.ac) bs.clearAll(); +if (this.tempStatement != null) { +this.st = this.tempStatement; +this.tempStatement = null; +}return bs; +}, "~A,~N,~N,~B,~B,~A,~B"); +Clazz_defineMethod(c$, "getComparison", +function(t, tokWhat, tokOp, strOp, data){ +var tokValue = t.tok; +if (tokValue == 7) { +var bs = new JU.BS(); +if (tokOp != 268440324) bs.setBits(0, this.vwr.ms.ac); +var lst = (t).getList(); +for (var i = lst.size(); --i >= 0; ) { +var res = this.getComparison(lst.get(i), tokWhat, tokOp, strOp, data); +if (tokOp == 268440324) bs.or(res); + else bs.and(res); +} +return bs; +}var comparisonInt = t.intValue; +var comparisonFloat = NaN; +var isModel = (tokWhat == 1094717454); +var isIntProperty = JS.T.tokAttr(tokWhat, 1094713344); +var isFloatProperty = (JS.T.tokAttr(tokWhat, 1111490560) || (tokWhat & 1136656384) == 1077936128); +var isIntOrFloat = isIntProperty && isFloatProperty; +var isStringProperty = !isIntProperty && JS.T.tokAttr(tokWhat, 1086324736); +if (tokWhat == 1086326789) isIntProperty = !(isStringProperty = false); +var val = t.value; +if (JS.T.tokAttr(tokValue, 1073741824)) { +if ("_modelNumber".equalsIgnoreCase(val)) { +var modelIndex = this.vwr.am.cmi; +val = Integer.$valueOf(comparisonInt = (modelIndex < 0 ? 0 : this.vwr.getModelFileNumber(modelIndex))); +} else { +var v = this.getParameter(val, 1073742190, false); +if (v != null) { +if (v.tok == 7) return this.getComparison(v, tokWhat, tokOp, strOp, data); +comparisonInt = v.intValue; +val = (isStringProperty || tokWhat == 1094717448 && v.tok != 2 ? JS.SV.sValue(v) : JS.SV.nValue(v)); +t = v; +}}}if (Clazz_instanceOf(val,"JU.P3")) { +if (tokWhat == 1765808134) { +comparisonInt = JU.CU.colorPtToFFRGB(val); +tokValue = 2; +isIntProperty = true; +}} else if ((typeof(val)=='string')) { +if (tokWhat == 1765808134) { +comparisonInt = JU.CU.getArgbFromString(val); +if (comparisonInt == 0 && JS.T.tokAttr(tokValue, 1073741824)) { +val = this.getVarParameter(val, true); +if ((val).startsWith("{")) { +val = JU.Escape.uP(val); +if (Clazz_instanceOf(val,"JU.P3")) comparisonInt = JU.CU.colorPtToFFRGB(val); + else comparisonInt = 0; +} else { +comparisonInt = JU.CU.getArgbFromString(val); +}}tokValue = 2; +isIntProperty = true; +} else if (!isStringProperty) { +if (tokWhat == 1094717448) { +val = Integer.$valueOf(t.tok == 2 ? t.intValue : -1000 - (val + " ").codePointAt(0)); +} else if (tokWhat == 1639976963 || tokWhat == 1237320707 || tokWhat == 1086326789) isStringProperty = !(isIntProperty = (comparisonInt != 2147483647)); + else val = JS.SV.nValue(t); +if (Clazz_instanceOf(val, Integer)) comparisonFloat = comparisonInt = (val).intValue(); + else if (Clazz_instanceOf(val, Float) && isModel) comparisonInt = JM.ModelSet.modelFileNumberFromFloat((val).floatValue()); +}}if (isStringProperty && !((typeof(val)=='string'))) { +val = "" + val; +}if (Clazz_instanceOf(val, Integer) || tokValue == 2) { +if (isModel) { +if (comparisonInt >= 1000000) tokWhat = -1094717454; +} else if (isIntOrFloat) { +isFloatProperty = false; +} else if (isFloatProperty) { +comparisonFloat = comparisonInt; +}} else if (Clazz_instanceOf(val, Float)) { +if (isModel) { +tokWhat = -1094717454; +} else { +comparisonFloat = (val).floatValue(); +if (isIntOrFloat) { +isIntProperty = false; +} else if (isIntProperty) { +comparisonInt = Clazz_floatToInt(comparisonFloat); +}}} else if (!isStringProperty) { +this.iToken++; +this.invArg(); +}if (isModel && comparisonInt >= 1000000 && comparisonInt % 1000000 == 0) { +comparisonInt /= 1000000; +tokWhat = 1228935687; +isModel = false; +}if (tokWhat == -1094717454 && tokOp == 268440324) { +return this.bitSetForModelFileNumber(comparisonInt); +}if (strOp != null && strOp.indexOf("-") >= 0) { +if (isIntProperty) comparisonInt = -comparisonInt; + else if (!Float.isNaN(comparisonFloat)) comparisonFloat = -comparisonFloat; +}return (isIntProperty ? this.compareInt(tokWhat, tokOp, comparisonInt) : isStringProperty ? this.compareString(tokWhat, tokOp, val) : this.compareFloatData(tokWhat, data, tokOp, comparisonFloat)); +}, "JS.T,~N,~N,~S,~A"); +Clazz_defineMethod(c$, "noCopy", +function(i, dir){ +switch (this.tokAt(i + dir)) { +case 268441602: +case 268441601: +return ((this.st[i + dir].intValue == -1) == (dir == -1)); +default: +return false; +} +}, "~N,~N"); +Clazz_defineMethod(c$, "getAssocArray", +function(i){ +var ht = new java.util.Hashtable(); +var closer = (this.tokAt(i) == 1073742332 ? 1073742338 : 268437505); +for (i = i + 1; i < this.slen; i++) { +var tok = this.tokAt(i); +if (tok == closer) break; +var key = null; +if (Clazz_instanceOf(this.st[i],"JS.SV")) key = (this.st[i]).myName; +if (key == null) key = JS.SV.sValue(this.st[i]); +i++; +if (this.tokAt(i++) != 268436482) this.invArg(); +var v = this.parameterExpression(i, 0, null, false, true, -1, false, null, null, false); +if (v.size() == 0) this.invArg(); +ht.put(key, JS.SV.copySafely(v.get(0))); +i = this.iToken; +if (this.tokAt(i) != 268436992) break; +} +this.iToken = i; +if (this.tokAt(i) != closer) this.invArg(); +return ht; +}, "~N"); +Clazz_defineMethod(c$, "listBS", +function(bs){ +var l = new JU.Lst(); +l.addLast(JS.SV.newV(10, bs)); +return l; +}, "JU.BS"); +Clazz_defineMethod(c$, "compareFloatData", +function(tokWhat, data, tokOperator, comparisonFloat){ +var bs = new JU.BS(); +var ac = this.vwr.ms.ac; +var modelSet = this.vwr.ms; +var atoms = modelSet.at; +var propertyFloat = 0; +this.vwr.autoCalculate(tokWhat, null); +var isProp = (tokWhat == 1715472409); +if (!isProp && this.ptTemp == null) this.ptTemp = new JU.P3(); +for (var i = ac; --i >= 0; ) { +var match = false; +var atom = atoms[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +if (isProp) { +if (data == null || data.length <= i) continue; +propertyFloat = data[i]; +} else { +propertyFloat = atom.atomPropertyFloat(this.vwr, tokWhat, this.ptTemp); +}match = this.compareFloat(tokOperator, propertyFloat, comparisonFloat); +if (match) bs.set(i); +} +return bs; +}, "~N,~A,~N,~N"); +Clazz_defineMethod(c$, "compareFloat", +function(tokOperator, a, b){ +if ((a == a) != (b == b)) return (tokOperator == 268440325); +switch (tokOperator) { +case 268440323: +return a < b; +case 268440322: +return a <= b || a != a; +case 268440321: +return a >= b || a != a; +case 268440320: +return a > b; +case 268440324: +return a == b || a != a; +case 268440325: +return a != b && a == a; +} +return false; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "compareString", +function(tokWhat, tokOperator, comparisonString){ +var bs = new JU.BS(); +var atoms = this.vwr.ms.at; +var ac = this.vwr.ms.ac; +var isCaseSensitive = (tokOperator == 268440326 || tokWhat == 1086326788 && this.vwr.getBoolean(603979822)); +if (!isCaseSensitive) comparisonString = comparisonString.toLowerCase(); +for (var i = ac; --i >= 0; ) { +if (atoms[i] == null) continue; +var propertyString = atoms[i].atomPropertyString(this.vwr, tokWhat); +if (!isCaseSensitive) propertyString = propertyString.toLowerCase(); +if (this.compareStringValues(tokOperator, propertyString, comparisonString)) bs.set(i); +} +return bs; +}, "~N,~N,~S"); +Clazz_defineMethod(c$, "compareStringValues", +function(tokOperator, propertyValue, comparisonValue){ +switch (tokOperator) { +case 268440324: +case 268440325: +return (JU.PT.isMatch(propertyValue, comparisonValue, true, true) == (tokOperator == 268440324)); +case 268440326: +return JU.PT.isLike(propertyValue, comparisonValue); +default: +this.invArg(); +} +return false; +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "compareInt", +function(tokWhat, tokOperator, ival){ +var ia = 2147483647; +var propertyBitSet = null; +var bitsetComparator = tokOperator; +var bitsetBaseValue = ival; +var modelSet = this.vwr.ms; +var atoms = modelSet.at; +var ac = modelSet.ac; +var imax = -1; +var imin = 0; +var iModel = -1; +var cellRange = null; +var nOps = 0; +var bs; +switch (tokWhat) { +case 1296041985: +switch (bitsetComparator) { +case 268440321: +case 268440320: +imax = 2147483647; +break; +} +break; +case 1094713347: +try { +switch (tokOperator) { +case 268440323: +return JU.BSUtil.newBitSet2(0, ival); +case 268440322: +return JU.BSUtil.newBitSet2(0, ival + 1); +case 268440321: +return JU.BSUtil.newBitSet2(ival, ac); +case 268440320: +return JU.BSUtil.newBitSet2(ival + 1, ac); +case 268440324: +return (ival < ac ? JU.BSUtil.newBitSet2(ival, ival + 1) : new JU.BS()); +case 268440325: +default: +bs = JU.BSUtil.setAll(ac); +if (ival >= 0) bs.clear(ival); +return bs; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return new JU.BS(); +} else { +throw e; +} +} +} +bs = JU.BS.newN(ac); +for (var i = 0; i < ac; ++i) { +var match = false; +var atom = atoms[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +switch (tokWhat) { +default: +ia = atom.atomPropertyInt(tokWhat); +break; +case 1094713368: +case 1094717448: +return JU.BSUtil.copy(this.vwr.ms.getConformation(-1, ival, false, null)); +case 1296041985: +propertyBitSet = atom.atomSymmetry; +if (propertyBitSet == null) continue; +if (atom.mi != iModel) { +iModel = atom.mi; +cellRange = modelSet.getModelCellRange(iModel); +nOps = modelSet.getModelSymmetryCount(iModel); +}if (bitsetBaseValue >= 200) { +if (cellRange == null) continue; +ival = bitsetBaseValue % 1000; +var symop = Clazz_doubleToInt(bitsetBaseValue / 1000) - 1; +if (symop < 0) { +match = true; +} else if (nOps == 0 || symop >= 0 && !(match = propertyBitSet.get(symop))) { +continue; +}bitsetComparator = 1073742333; +if (symop < 0) ia = atom.getCellTranslation(ival, cellRange, nOps); + else ia = atom.getSymmetryTranslation(symop, cellRange, nOps); +} else if (nOps > 0) { +if (ival > nOps) { +if (bitsetComparator != 268440323 && bitsetComparator != 268440322) continue; +}if (bitsetComparator == 268440325) { +if (ival > 0 && ival <= nOps && !propertyBitSet.get(ival)) { +bs.set(i); +}continue; +}var bs1 = JU.BSUtil.copy(propertyBitSet); +bs1.clearBits(nOps, bs1.length()); +propertyBitSet = bs1; +}switch (bitsetComparator) { +case 268440323: +imax = ival - 1; +break; +case 268440322: +imax = ival; +break; +case 268440321: +imin = ival - 1; +break; +case 268440320: +imin = ival; +break; +case 268440324: +imax = ival; +imin = ival - 1; +break; +case 268440325: +match = !propertyBitSet.get(ival); +break; +} +if (imin < 0) imin = 0; +if (imin < imax) { +var pt = propertyBitSet.nextSetBit(imin); +if (pt >= 0 && pt < imax) match = true; +}if (!match || ia == 2147483647) tokOperator = 1073742333; +} +switch (tokOperator) { +case 1073742333: +break; +case 268440323: +match = (ia < ival); +break; +case 268440322: +match = (ia <= ival); +break; +case 268440321: +match = (ia >= ival); +break; +case 268440320: +match = (ia > ival); +break; +case 268440324: +match = (ia == ival); +break; +case 268440325: +match = (ia != ival); +break; +} +if (match) bs.set(i); +} +return bs; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getBitsetPropertySelector", +function(i, xTok){ +var tok = this.getToken(i).tok; +switch (tok) { +case 1275068725: +case 32: +case 64: +case 96: +case 192: +case 128: +case 160: +case 1715472409: +break; +default: +if (JS.T.tokAttrOr(tok, 1077936128, 1140850688) || xTok == 6) break; +if (tok != 805307393 && !JS.T.tokAttr(tok, 1073741824)) break; +var name = this.paramAsStr(i); +if (this.isFunction(name.toLowerCase())) { +tok = 134320141; +break; +}} +return JS.SV.newSV(268442113, tok, this.paramAsStr(i)); +}, "~N,~N"); +Clazz_defineMethod(c$, "getBitsetProperty", +function(bs, pts, tok, ptRef, planeRef, tokenValue, opValue, useAtomMap, index, asVectorIfAll){ +var haveIndex = (index != 2147483647); +var isAtoms = haveIndex || !(Clazz_instanceOf(tokenValue,"JM.BondSet")) && !(Clazz_instanceOf(bs,"JM.BondSet")); +var minmaxtype = tok & 480; +var selectedFloat = (minmaxtype == 224); +var isPivot = (minmaxtype == 288); +if (isPivot) minmaxtype = 480; +var ac = this.vwr.ms.ac; +var fout = (minmaxtype == 256 ? Clazz_newFloatArray (ac, 0) : null); +var isExplicitlyAll = (minmaxtype == 480 || selectedFloat); +tok &= -481; +var info = null; +if (tok == 0) tok = (isAtoms ? 1153433601 : 1677721602); +var isPt = false; +var isHash = false; +var isInt = false; +var isString = false; +switch (tok) { +case 1275068446: +return (this.vwr.getModelSetAuxiliaryInfoForAtoms(bs)).get("models"); +case 1145047049: +case 1145047055: +case 1145047050: +case 1145047053: +case 1145045008: +case 1145045006: +case 1765808134: +case 1145047052: +isPt = true; +break; +case 1275203608: +isHash = true; +info = Clazz_newArray(-1, [null, null]); +break; +case 134320141: +case 1275069443: +break; +case 1086324754: +isInt = (tokenValue === "color"); +isString = !isInt; +break; +case 1145045003: +isString = true; +break; +default: +isInt = JS.T.tokAttr(tok, 1094713344) && !JS.T.tokAttr(tok, 1111490560); +isString = !isInt && JS.T.tokAttr(tok, 1086324736); +} +var pt = (isPt || !isAtoms ? new JU.P3() : null); +if (isExplicitlyAll || isString && !haveIndex && minmaxtype != 256 && minmaxtype != 32) minmaxtype = 1073742327; +var vout = (minmaxtype == 1073742327 ? new JU.Lst() : null); +var bsNew = null; +var userFunction = null; +var params = null; +var bsAtom = null; +var tokenAtom = null; +var ptT = null; +var data = null; +var ffdata = null; +switch (tok) { +case 1153433601: +if (isAtoms) break; +case 1677721602: +if (this.chk) return bs; +bsNew = (tok == 1153433601 ? this.vwr.ms.getAtoms(1677721602, bs) : (isAtoms ? JM.BondSet.newBS(this.vwr.getBondsForSelectedAtoms(bs)) : bs)); +var i; +switch (minmaxtype) { +case 32: +i = bsNew.nextSetBit(0); +break; +case 64: +i = bsNew.length() - 1; +break; +case 192: +case 128: +case 160: +return Float.$valueOf(NaN); +default: +return bsNew; +} +bsNew.clearAll(); +if (i >= 0) bsNew.set(i); +return bsNew; +case 1086324745: +switch (minmaxtype) { +case 0: +case 32: +case 1073742327: +return this.getCmdExt().getBitsetIdent(bs, null, tokenValue, useAtomMap, index, isExplicitlyAll); +} +return ""; +case 134320141: +userFunction = (opValue)[0]; +params = (opValue)[1]; +bsAtom = JU.BS.newN(ac); +tokenAtom = JS.SV.newV(10, bsAtom); +break; +case 1111490587: +for (var j = fout.length; --j >= 0; ) fout[j] = NaN; + +case 1111490574: +case 1111490575: +this.vwr.autoCalculate(tok, tokenValue); +break; +case 1275069443: +if (ptRef == null && planeRef == null) return new JU.P3(); +break; +case 1765808134: +ptT = new JU.P3(); +break; +case 1715472409: +data = this.vwr.getDataObj(opValue, null, 1); +if (data == null) ffdata = this.vwr.getDataObj(opValue, null, 2); +if (ffdata != null) { +minmaxtype = 1073742327; +vout = new JU.Lst(); +}break; +} +var n = 0; +var ivMinMax = 0; +var fvMinMax = 0; +var sum = 0; +var sum2 = 0; +switch (minmaxtype) { +case 32: +ivMinMax = 2147483647; +fvMinMax = 3.4028235E38; +break; +case 64: +ivMinMax = -2147483648; +fvMinMax = -3.4028235E38; +break; +} +var modelSet = this.vwr.ms; +var mode = (ffdata != null ? 5 : isHash ? 4 : isPt ? 3 : isString ? 2 : isInt ? 1 : 0); +if (isAtoms) { +var haveBitSet = (bs != null); +var i0; +var i1; +if (pts != null) { +i0 = 0; +i1 = pts.size(); +} else if (haveIndex) { +i0 = index; +i1 = index + 1; +} else if (haveBitSet) { +i0 = bs.nextSetBit(0); +i1 = Math.min(ac, bs.length()); +} else { +i0 = 0; +i1 = ac; +}if (this.chk) i1 = 0; +for (var i = i0; i >= 0 && i < i1; i = (haveBitSet ? bs.nextSetBit(i + 1) : i + 1)) { +n++; +var atom; +if (pts == null) { +atom = modelSet.at[i]; +if (JM.AtomCollection.isDeleted(atom)) continue; +} else { +atom = null; +}switch (mode) { +case 0: +var fv = 3.4028235E38; +switch (tok) { +case 134320141: +bsAtom.set(i); +fv = JS.SV.fValue((this).getUserFunctionResult(userFunction, params, tokenAtom)); +bsAtom.clear(i); +break; +case 1715472409: +fv = (data == null || i >= data.length ? 0 : data[i]); +break; +case 1275069443: +if (planeRef != null) fv = JU.Measure.distanceToPlane(planeRef, atom); + else fv = (pts != null ? JS.SV.ptValue(pts.get(i)).distance(ptRef) : atom !== ptRef || minmaxtype != 32 ? atom.distance(ptRef) : NaN); +break; +default: +fv = atom.atomPropertyFloat(this.vwr, tok, this.ptTemp); +} +if (fv == 3.4028235E38 || Float.isNaN(fv) && minmaxtype != 1073742327) { +n--; +continue; +}switch (minmaxtype) { +case 32: +if (fv < fvMinMax) fvMinMax = fv; +break; +case 64: +if (fv > fvMinMax) fvMinMax = fv; +break; +case 256: +fout[i] = fv; +break; +case 1073742327: +vout.addLast(Float.$valueOf(fv)); +break; +case 160: +case 192: +sum2 += (fv) * fv; +case 128: +default: +sum += fv; +} +break; +case 1: +var iv = 0; +switch (tok) { +case 1094717448: +case 1094713349: +this.errorStr(45, JS.T.nameOf(tok)); +break; +case 1086324754: +iv = (atom.getWyckoffPosition(false).charAt(0)).charCodeAt(0); +switch (iv) { +case 63: +iv = 0; +break; +case 65: +iv = 27; +break; +default: +iv = iv & 0x1F; +break; +} +break; +default: +iv = atom.atomPropertyInt(tok); +break; +} +switch (minmaxtype) { +case 32: +if (iv < ivMinMax) ivMinMax = iv; +break; +case 64: +if (iv > ivMinMax) ivMinMax = iv; +break; +case 256: +fout[i] = iv; +break; +case 1073742327: +vout.addLast(Integer.$valueOf(iv)); +break; +case 160: +case 192: +sum2 += (iv) * iv; +case 128: +default: +sum += iv; +} +break; +case 2: +var s = atom.atomPropertyString(this.vwr, tok); +switch (minmaxtype) { +case 256: +fout[i] = JU.PT.parseFloat(s); +break; +default: +if (vout == null) return s; +vout.addLast(s); +} +break; +case 3: +var t = atom.atomPropertyTuple(this.vwr, tok, this.ptTemp); +switch (minmaxtype) { +case 256: +fout[i] = (pt == null ? -1 : t == null ? 0 : t.length()); +break; +case 1073742327: +vout.addLast(t == null ? Integer.$valueOf(-1) : JU.P3.newP(t)); +break; +default: +if (t == null) n--; + else pt.add(t); +} +break; +case 4: +switch (tok) { +case 1275203608: +info[0] = Integer.$valueOf(i); +info[1] = ""; +this.vwr.shm.getShapePropertyData(21, "info", info); +if (info[1] != null) { +if (vout == null) return info[1]; +vout.addLast(info[1]); +}break; +} +break; +case 5: +vout.addLast(ffdata[i]); +break; +} +if (haveIndex) break; +} +} else { +var isAll = (bs == null); +var i0 = (isAll ? 0 : bs.nextSetBit(0)); +var i1 = this.vwr.ms.bondCount; +for (var i = i0; i >= 0 && i < i1; i = (isAll ? i + 1 : bs.nextSetBit(i + 1))) { +n++; +var bond = modelSet.bo[i]; +switch (tok) { +case 1140850691: +var fv = bond.atom1.distance(bond.atom2); +switch (minmaxtype) { +case 32: +if (fv < fvMinMax) fvMinMax = fv; +break; +case 64: +if (fv > fvMinMax) fvMinMax = fv; +break; +case 1073742327: +vout.addLast(Float.$valueOf(fv)); +break; +case 160: +case 192: +sum2 += fv * fv; +case 128: +default: +sum += fv; +} +break; +case 1145047049: +switch (minmaxtype) { +case 1073742327: +pt.ave(bond.atom1, bond.atom2); +vout.addLast(JU.P3.newP(pt)); +break; +default: +pt.add(bond.atom1); +pt.add(bond.atom2); +n++; +} +break; +case 1765808134: +JU.CU.colorPtFromInt(this.vwr.gdata.getColorArgbOrGray(bond.colix), ptT); +switch (minmaxtype) { +case 1073742327: +vout.addLast(JU.P3.newP(ptT)); +break; +default: +pt.add(ptT); +} +break; +default: +this.errorStr(46, JS.T.nameOf(tok)); +} +} +}if (minmaxtype == 256) return fout; +if (minmaxtype == 1073742327) { +if (asVectorIfAll) { +if (isPivot) { +return this.getMathExt().getMinMax(vout, 1275068725, false); +}return vout; +}var len = vout.size(); +if ((isString || isHash) && !isExplicitlyAll && len == 1) return vout.get(0); +if (selectedFloat) { +fout = Clazz_newFloatArray (len, 0); +for (var i = len; --i >= 0; ) { +var v = vout.get(i); +switch (mode) { +case 0: +fout[i] = (v).floatValue(); +break; +case 1: +fout[i] = (v).floatValue(); +break; +case 2: +fout[i] = JU.PT.parseFloat(v); +break; +case 3: +fout[i] = (v == null ? -1 : (v).length()); +break; +} +} +return fout; +}if (tok == 1086324744) { +var sb = new JU.SB(); +for (var i = 0; i < len; i++) sb.append(vout.get(i)); + +return sb.toString(); +}var sout = new Array(len); +for (var i = len; --i >= 0; ) { +var v = vout.get(i); +if (Clazz_instanceOf(v,"JU.P3")) sout[i] = JU.Escape.eP(v); + else sout[i] = "" + vout.get(i); +} +return sout; +}if (isPt) return (n == 0 ? Integer.$valueOf(-1) : JU.P3.new3(pt.x / n, pt.y / n, pt.z / n)); +if (isHash) return new java.util.Hashtable(); +if (n == 0 || n == 1 && minmaxtype == 192) return Float.$valueOf(NaN); +if (isInt) { +switch (minmaxtype) { +case 32: +case 64: +return Integer.$valueOf(ivMinMax); +case 160: +case 192: +break; +case 128: +return Integer.$valueOf(Clazz_doubleToInt(sum)); +default: +if (sum / n == Clazz_doubleToInt(sum / n)) return Integer.$valueOf(Clazz_doubleToInt(sum / n)); +return Float.$valueOf((sum / n)); +} +}switch (minmaxtype) { +case 32: +case 64: +sum = fvMinMax; +break; +case 128: +break; +case 160: +sum = sum2; +break; +case 192: +sum = Math.sqrt((sum2 - sum * sum / n) / (n - 1)); +break; +default: +sum /= n; +break; +} +return Float.$valueOf(sum); +}, "JU.BS,JU.Lst,~N,JU.P3,JU.P4,~O,~O,~B,~N,~B"); +Clazz_defineMethod(c$, "bitSetForModelFileNumber", +function(m){ +var bs = JU.BS.newN(this.vwr.ms.ac); +if (this.chk) return bs; +var modelCount = this.vwr.ms.mc; +var haveFileSet = this.vwr.haveFileSet(); +if (m < 1000000 && haveFileSet) m *= 1000000; +var pt = m % 1000000; +if (pt == 0) { +var model1 = this.vwr.ms.getModelNumberIndex(m + 1, false, false); +if (model1 < 0) return bs; +var model2 = (m == 0 ? modelCount : this.vwr.ms.getModelNumberIndex(m + 1000001, false, false)); +if (model1 < 0) model1 = 0; +if (model2 < 0) model2 = modelCount; +if (this.vwr.ms.isTrajectory(model1)) model2 = model1 + 1; +for (var j = model1; j < model2; j++) bs.or(this.vwr.getModelUndeletedAtomsBitSet(j)); + +} else { +var modelIndex = this.vwr.ms.getModelNumberIndex(m, false, true); +if (modelIndex >= 0) bs.or(this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +}return bs; +}, "~N"); +Clazz_defineMethod(c$, "getStringObjectAsVariable", +function(obj){ +if (obj == null) return obj; +if ((typeof(obj)=='string')) { +var s = obj; +if (s.length == 0) return s; +return JS.SV.unescapePointOrBitsetAsVariable(s); +}var lst = obj; +if (lst.size() == 0) return ""; +var v0 = lst.get(0); +if (JS.SV.ptValue(v0) != null) return obj; +if (lst.get(0).asString().contains("|")) return this.vwr.ms.getAtoms(1086324744, JS.SV.newV(7, lst).asString()); +var bs = JS.SV.unEscapeBitSetArray(lst, true); +return (bs == null ? "" : bs); +}, "~O"); +Clazz_defineMethod(c$, "getAtomBits", +function(tokType, specInfo){ +return (this.chk ? new JU.BS() : this.vwr.ms.getAtoms(tokType, specInfo)); +}, "~N,~O"); +c$.getSeqCode = Clazz_defineMethod(c$, "getSeqCode", +function(instruction){ +return (instruction.intValue == 2147483647 ? (instruction.value).intValue() : JM.Group.getSeqcodeFor(instruction.intValue, ' ')); +}, "JS.T"); +Clazz_defineMethod(c$, "setVariable", +function(pt, ptMax, key, isSet){ +var bs = null; +var propertyName = ""; +var settingData = key.startsWith("property_"); +var isThrown = key.equals("thrown_value"); +var isExpression = (this.tokAt(1) == 1073742325 || this.tokAt(1) == 268435968); +var t = (settingData ? null : key.length == 0 ? new JS.SV() : this.getContextVariableAsVariable(key, false)); +if (isSet && !isExpression) { +switch (this.tokAt(2)) { +default: +pt = 2; +break; +case 268440324: +pt = 3; +break; +case 1073742195: +case 268437504: +if (this.st[0].intValue == 61) { +pt = 2; +break; +}case 1073742336: +case 1073742337: +key = null; +break; +} +}var nv = 0; +var v = this.parameterExpression(pt, ptMax, key, true, true, -1, false, null, null, isSet && pt == 1); +nv = v.size(); +if (nv == 0) this.invArg(); +if (this.chk || v.get(0).tok == 0) return null; +var tv = JS.SV.selectItemVar(JS.SV.copySafely(v.get(nv - 1))); +if (nv > 1) { +var sel = (nv > 2 ? v.get(1) : null); +t = v.get(0); +var selectOne = false; +switch (t.tok) { +case 6: +case 14: +if (nv > 3) this.invArg(); +t.mapPut(sel.asString(), tv); +break; +case 7: +if (nv > 2 + (sel == null ? 0 : 1)) this.invArg(); +if (sel == null) { +sel = t; +} else { +t = JS.SV.selectItemVar(t); +}selectOne = true; +break; +case 4: +if (sel.tok != 2) { +t.value = JU.PT.rep(t.asString(), sel.asString(), tv.asString()); +t.intValue = 2147483647; +break; +}case 11: +case 12: +if (t.intValue == 2147483647) selectOne = true; + else t.setSelectedValue(t.intValue, sel.asInt(), tv); +break; +case 8: +var p = (t.value = JU.P3.newP(t.value)); +var f = tv.asFloat(); +switch (JS.T.getTokFromName(sel.asString())) { +case 1111492629: +p.x = f; +break; +case 1111492630: +p.y = f; +break; +case 1111492631: +p.z = f; +break; +} +break; +case 10: +bs = JS.SV.getBitSet(t, true); +var nAtoms = this.vwr.ms.ac; +var nbs = bs.cardinality(); +propertyName = sel.asString(); +var tok = JS.T.getTokFromName(propertyName); +switch (tok) { +case 0: +if (propertyName.startsWith("property_")) { +var obj; +if (tv.tok == 7) { +var nmin = (tv.getList().size() == nbs ? nbs : nAtoms); +obj = (JS.SV.getArrayDepth(tv) > 1 ? JS.SV.fflistValue(tv, nmin) : JS.SV.flistValue(tv, nmin)); +} else { +obj = tv.asString(); +}this.vwr.setData(propertyName, Clazz_newArray(-1, [propertyName, obj, JU.BSUtil.copy(bs), Integer.$valueOf(-1)]), nAtoms, 0, 0, tv.tok == 7 ? 2147483647 : -2147483648, 0); +break; +}this.iToken = pt; +this.error(56); +break; +case 1825200146: +case 1287653388: +this.vwr.shm.loadShape(5); +default: +this.setBitsetProperty(bs, tok, tv.asInt(), tv.asFloat(), tv); +break; +} +break; +} +if (selectOne) t.setSelectedValue(sel.intValue, 2147483647, tv); +return null; +}var needVariable = (!settingData && t == null && (isThrown || !((typeof(tv.value)=='string') || tv.tok == 2 || Clazz_instanceOf(tv.value, Integer) || Clazz_instanceOf(tv.value, Float) || Clazz_instanceOf(tv.value, Boolean)))); +if (needVariable && key != null) { +if (key.startsWith("_") || (t = this.vwr.g.getAndSetNewVariable(key, true)) == null) this.errorStr(22, key); +}if (t != null) return t.setv(tv); +var vv = JS.SV.oValue(tv); +if (settingData) { +if (tv.tok == 7) vv = tv.asString(); +this.vwr.setData(key, Clazz_newArray(-1, [key, "" + vv, JU.BSUtil.copy(this.vwr.bsA()), Integer.$valueOf(0)]), this.vwr.ms.ac, 0, 0, -2147483648, 0); +return null; +}if (Clazz_instanceOf(vv, Boolean)) { +this.setBooleanProperty(key, (vv).booleanValue()); +} else if (Clazz_instanceOf(vv, Integer)) { +this.setIntProperty(key, (vv).intValue()); +} else if (Clazz_instanceOf(vv, Float)) { +this.setFloatProperty(key, (vv).floatValue()); +} else if ((typeof(vv)=='string')) { +this.setStringProperty(key, vv); +} else { +}return tv; +}, "~N,~N,~S,~B"); +Clazz_defineMethod(c$, "setBitsetProperty", +function(bs, tok, iValue, fValue, tokenValue){ +if (this.chk || bs.isEmpty()) return; +var list = null; +var sValue = null; +var fvalues = null; +var pt; +var sv = null; +var nValues = 0; +var isStrProperty = JS.T.tokAttr(tok, 1086324736); +if (tokenValue.tok == 7) { +sv = (tokenValue).getList(); +if ((nValues = sv.size()) == 0) return; +}switch (tok) { +case 1145047049: +case 1145047050: +case 1145047053: +case 1145047055: +switch (tokenValue.tok) { +case 8: +this.vwr.setAtomCoords(bs, tok, tokenValue.value); +break; +case 7: +this.theToken = tokenValue; +this.vwr.setAtomCoords(bs, tok, this.getPointArray(-1, nValues, true)); +break; +} +return; +case 1765808134: +var value = null; +var prop = "color"; +switch (tokenValue.tok) { +case 7: +var values = Clazz_newIntArray (nValues, 0); +for (var i = nValues; --i >= 0; ) { +var svi = sv.get(i); +pt = JS.SV.ptValue(svi); +if (pt != null) { +values[i] = JU.CU.colorPtToFFRGB(pt); +} else if (svi.tok == 2) { +values[i] = svi.intValue; +} else { +values[i] = JU.CU.getArgbFromString(svi.asString()); +if (values[i] == 0) values[i] = svi.asInt(); +}if (values[i] == 0) this.errorStr2(50, "ARRAY", svi.asString()); +} +value = values; +prop = "colorValues"; +break; +case 8: +value = Integer.$valueOf(JU.CU.colorPtToFFRGB(tokenValue.value)); +break; +case 4: +value = tokenValue.value; +break; +default: +value = Integer.$valueOf(JS.SV.iValue(tokenValue)); +break; +} +(this).setAtomProp(prop, value, bs); +return; +case 1825200146: +case 1287653388: +if (tokenValue.tok != 7) sValue = JS.SV.sValue(tokenValue); +break; +case 1086326789: +case 1094715402: +(this).clearDefinedVariableAtomSets(); +isStrProperty = false; +break; +} +switch (tokenValue.tok) { +case 7: +if (isStrProperty) list = JS.SV.strListValue(tokenValue); + else fvalues = JS.SV.flistValue(tokenValue, nValues); +break; +case 4: +if (sValue == null) list = JU.PT.getTokens(JS.SV.sValue(tokenValue)); +break; +} +if (list != null) { +nValues = list.length; +if (!isStrProperty) { +fvalues = Clazz_newFloatArray (nValues, 0); +for (var i = nValues; --i >= 0; ) fvalues[i] = (tok == 1086326789 ? JU.Elements.elementNumberFromSymbol(list[i], false) : JU.PT.parseFloat(list[i])); + +}if (tokenValue.tok != 7 && nValues == 1) { +if (isStrProperty) sValue = list[0]; + else fValue = fvalues[0]; +iValue = Clazz_floatToInt(fValue); +list = null; +fvalues = null; +}}if (!JS.T.tokAttr(tok, 2048)) this.error(56); +this.vwr.setAtomProperty(bs, tok, iValue, fValue, sValue, fvalues, list); +}, "JU.BS,~N,~N,~N,JS.T"); +Clazz_defineMethod(c$, "setStatement", +function(st0, pt0){ +this.st = st0; +this.slen = this.st.length; +if (this.slen == 0) return true; +var fixed; +var i; +var tok; +for (i = pt0; i < this.slen; i++) { +if (this.st[i] == null) { +this.slen = i; +return true; +}if (this.st[i].tok == 12290) break; +} +if (i == this.slen || this.chk) return i == this.slen; +switch (this.st[0].tok) { +case 102436: +case 134320141: +case 1073741824: +if (this.tokAt(1) == 268435968) return true; +} +fixed = new Array(this.slen); +fixed[0] = this.st[0]; +var isExpression = false; +var j = pt0; +for (i = pt0; i < this.slen; i++) { +if (this.st[i] == null) continue; +switch (tok = this.getToken(i).tok) { +default: +fixed[j] = this.st[i]; +break; +case 1073742325: +case 1073742326: +isExpression = (tok == 1073742325); +fixed[j] = this.st[i]; +break; +case 12290: +if (++i == this.slen) this.invArg(); +var v; +var forceString = (this.theToken.intValue == 4); +var s; +var $var = this.paramAsStr(i); +var isClauseDefine = (this.tokAt(i) == 1073742325); +var isSetAt = (pt0 == 1 && j == 1 && this.st[0] === JS.T.tokenSetCmd); +if (isClauseDefine) { +var vt = this.parameterExpressionToken(++i); +if (this.chk) { +v = null; +} else if (vt.tok != 7) { +v = JS.SV.oValue(vt); +} else if (!isExpression) { +v = vt; +} else { +var bs = JS.SV.getBitSet(vt, true); +if (bs == null) { +var sv = JS.SV.sValue(vt); +v = (sv.indexOf("|") < 0 ? this.getAtomBitSet(sv) : sv); +} else { +v = bs; +}}i = this.iToken; +} else if (this.chk) { +v = new JU.BS(); +} else { +if (this.tokAt(i) == 2) { +v = this.vwr.ms.getAtoms(1094715393, Integer.$valueOf(this.st[i].intValue)); +} else if (this.tokAt(i) == 12290 && this.tokAt(i + 1) == 2) { +v = this.vwr.ms.getAtomsFromAtomNumberInFrame(this.st[++i].intValue); +} else { +v = this.getParameter($var, 0, true); +}if (!isExpression && !isSetAt) isClauseDefine = true; +}tok = this.tokAt(0); +forceString = new Boolean (forceString | (JS.T.tokAttr(tok, 20480) || tok == 134222850)).valueOf(); +if (v == null) { +fixed[j] = JS.T.tokenAll; +} else if (Clazz_instanceOf(v,"JS.SV")) { +fixed[j] = v; +} else if (Clazz_instanceOf(v, Boolean)) { +fixed[j] = ((v).booleanValue() ? JS.T.tokenOn : JS.T.tokenOff); +} else if (Clazz_instanceOf(v, Integer)) { +fixed[j] = JS.T.tv(2, (v).intValue(), v); +} else if (Clazz_instanceOf(v, Float)) { +fixed[j] = JS.T.tv(3, JU.Edge.getFloatEncodedInt("" + v), v); +} else if ((typeof(v)=='string')) { +if (!forceString && !isExpression) { +if ((tok != 36867 || j > 1 && this.st[1].tok != 537022465 && !"labelfor".equalsIgnoreCase(this.st[1].value.toString())) && JS.T.tokAttr(tok, 36864)) { +v = this.getParameter(v, 1073742190, true); +}if ((typeof(v)=='string')) { +v = this.getStringObjectAsVariable(v); +}}if (Clazz_instanceOf(v,"JS.SV")) { +fixed[j] = v; +} else { +s = v; +if (isExpression && !forceString) { +fixed[j] = (s.indexOf("|") >= 0 || JS.T.tokAttr(fixed[j - 1].tok, 268435712) ? JS.T.o(4, s) : JS.T.o(10, this.getAtomBitSet(s))); +} else { +tok = (isSetAt ? JS.T.getTokFromName(s) : isClauseDefine || forceString || s.length == 0 || s.indexOf(".") >= 0 || s.indexOf(" ") >= 0 || s.indexOf("=") >= 0 || s.indexOf(";") >= 0 || s.indexOf("[") >= 0 || s.indexOf("{") >= 0 ? 4 : 1073741824); +fixed[j] = JS.T.o(tok, v); +}}} else if (Clazz_instanceOf(v,"JU.BArray")) { +fixed[j] = JS.SV.newV(15, v); +} else if (Clazz_instanceOf(v,"JU.BS")) { +fixed[j] = JS.SV.newV(10, v); +} else if (Clazz_instanceOf(v,"JU.P3")) { +fixed[j] = JS.SV.newV(8, v); +} else if (Clazz_instanceOf(v,"JU.P4")) { +fixed[j] = JS.SV.newV(9, v); +} else if (Clazz_instanceOf(v,"JU.M34")) { +fixed[j] = JS.SV.newV(Clazz_instanceOf(v,"JU.M4") ? 12 : 11, v); +} else if (Clazz_instanceOf(v,"java.util.Map") || Clazz_instanceOf(v,"JS.ScriptContext") && (v = (v).getFullMap()) != null) { +fixed[j] = JS.SV.newV(6, (isExpression ? v : JS.SV.deepCopy(v, true, true))); +} else if (Clazz_instanceOf(v,"JU.Lst")) { +if (!isExpression) { +fixed[j] = JS.SV.newV(7, JS.SV.deepCopy(v, false, true)); +break; +}var sv = v; +var bs = null; +for (var k = 0; k < sv.size(); k++) { +var svk = sv.get(k); +if (svk.tok != 10) { +bs = null; +break; +}if (bs == null) bs = new JU.BS(); +bs.or(svk.value); +} +fixed[j] = (bs == null ? JS.SV.getVariable(v) : JS.T.o(10, bs)); +} else { +var center = (this).getObjectCenter($var, -2147483648, -2147483648); +if (center == null) this.invArg(); +fixed[j] = JS.T.o(8, center); +}if (isSetAt && !JS.T.tokAttr(fixed[j].tok, 536870912)) this.invArg(); +break; +} +j++; +} +this.st = fixed; +for (i = j; i < this.st.length; i++) this.st[i] = null; + +this.slen = j; +return true; +}, "~A,~N"); +Clazz_defineMethod(c$, "isFunction", +function(sf){ +return (this.getFunction(sf) != null); +}, "~S"); +Clazz_defineMethod(c$, "addFunction", +function(f){ +if (f == null || f.isPrivate) { +if (this.privateFuncs == null) this.privateFuncs = new java.util.Hashtable(); +if (f != null) this.privateFuncs.put(f.name, f); +} else { +this.vwr.addFunction(f); +}}, "JS.ScriptFunction"); +Clazz_defineMethod(c$, "getFunction", +function(sf){ +var f = (this.privateFuncs == null ? null : this.privateFuncs.get(sf)); +return (f == null ? this.vwr.getFunction(sf) : f); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ScriptFlowContext", ["JS.ScriptCompiler"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.compiler = null; +this.token = null; +this.pt0 = 0; +this.ptDefault = 0; +this.$function = null; +this.$var = null; +this.parent = null; +this.lineStart = 0; +this.commandStart = 0; +this.ptLine = 0; +this.ptCommand = 0; +this.forceEndIf = true; +this.ident = null; +this.addLine = 0; +this.tok0 = 0; +this.ichCommand = 0; +this.line0 = 0; +Clazz_instantialize(this, arguments);}, JS, "ScriptFlowContext", null); +Clazz_makeConstructor(c$, +function(compiler, token, pt0, parent, ich, line0){ +this.compiler = compiler; +this.token = token; +this.tok0 = token.tok; +this.ident = token.value; +this.pt0 = pt0; +this.line0 = line0; +this.parent = parent; +this.ichCommand = ich; +this.lineStart = this.ptLine = this.compiler.lineCurrent; +this.commandStart = this.ptCommand = this.compiler.iCommand; +}, "JS.ScriptCompiler,JS.ContextToken,~N,JS.ScriptFlowContext,~N,~N"); +Clazz_defineMethod(c$, "getBreakableContext", +function(nLevelsUp){ +var f = this; +while (f != null && (!JS.ScriptCompiler.isBreakableContext(f.token.tok) || nLevelsUp-- > 0)) f = f.parent; + +return f; +}, "~N"); +Clazz_defineMethod(c$, "checkForceEndIf", +function(offset){ +if (this.ptCommand == this.compiler.iCommand && this.addLine > 0) this.addLine++; +var test = this.forceEndIf && this.ptCommand < this.compiler.iCommand && this.ptLine + (this.addLine == 0 ? 0 : this.addLine + offset) == this.compiler.lineCurrent; +if (test) this.forceEndIf = false; +return test; +}, "~N"); +Clazz_defineMethod(c$, "setPt0", +function(pt0, isDefault){ +this.pt0 = pt0; +if (isDefault) this.ptDefault = pt0; +this.setLine(); +return pt0; +}, "~N,~B"); +Clazz_defineMethod(c$, "setLine", +function(){ +this.ptLine = this.compiler.lineCurrent; +this.ptCommand = this.compiler.iCommand + 1; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return "ident " + this.ident + " line " + this.lineStart + " command " + this.commandStart; +}); +Clazz_defineMethod(c$, "path", +function(){ +var s = ""; +var f = this; +while (f != null) { +s = f.ident + "-" + s; +f = f.parent; +} +return "[" + s + "]"; +}); +Clazz_defineMethod(c$, "setFunction", +function($function){ +this.$function = $function; +}, "JS.ScriptFunction"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["J.api.JmolScriptFunction", "java.util.Hashtable", "JU.Lst"], "JS.ScriptFunction", ["JU.AU", "$.SB", "JS.SV", "$.T"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.pt0 = 0; +this.chpt0 = 0; +this.cmdpt0 = -1; +this.typeName = null; +this.name = null; +this.nParameters = 0; +this.names = null; +this.tok = 0; +this.variables = null; +this.returnValue = null; +this.aatoken = null; +this.lineIndices = null; +this.lineNumbers = null; +this.script = null; +this.isPrivate = false; +Clazz_instantialize(this, arguments);}, JS, "ScriptFunction", null, J.api.JmolScriptFunction); +Clazz_prepareFields (c$, function(){ +this.names = new JU.Lst(); +this.variables = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_makeConstructor(c$, +function(name, tok){ +this.set(name, tok); +this.typeName = JS.T.nameOf(tok); +}, "~S,~N"); +Clazz_defineMethod(c$, "isVariable", +function(ident){ +return this.variables.containsKey(ident); +}, "~S"); +Clazz_defineMethod(c$, "set", +function(name, tok){ +this.name = name; +this.tok = tok; +}, "~S,~N"); +Clazz_defineMethod(c$, "setVariables", +function(contextVariables, params){ +var nParams = (params == null ? 0 : params.size()); +for (var i = this.names.size(); --i >= 0; ) { +var name = this.names.get(i).toLowerCase(); +var $var = (i < this.nParameters && i < nParams ? params.get(i) : null); +if ($var != null && $var.tok != 7) $var = JS.SV.newT($var); +contextVariables.put(name, ($var == null ? JS.SV.newS("").setName(name) : $var)); +} +if (this.tok != 364558) { +contextVariables.put("_argcount", JS.SV.newI(params == null ? 0 : params.size())); +contextVariables.put("_arguments", (params == null ? JS.SV.getVariableAI( Clazz_newIntArray(-1, [])) : JS.SV.getVariableList(params))); +}contextVariables.put("_retval", JS.SV.newI(this.tok == 364558 ? 2147483647 : 0)); +}, "java.util.Map,JU.Lst"); +Clazz_defineMethod(c$, "unsetVariables", +function(contextVariables, params){ +var nParams = (params == null ? 0 : params.size()); +var nNames = this.names.size(); +if (nParams == 0 || nNames == 0) return; +for (var i = 0; i < nNames && i < nParams; i++) { +var global = params.get(i); +if (global.tok != 7) continue; +var local = contextVariables.get(this.names.get(i).toLowerCase()); +if (local.tok != 7) continue; +global.value = local.value; +} +}, "java.util.Map,JU.Lst"); +Clazz_defineMethod(c$, "addVariable", +function(name, isParameter){ +this.variables.put(name, name); +this.names.addLast(name); +if (isParameter) this.nParameters++; +}, "~S,~B"); +c$.setFunction = Clazz_defineMethod(c$, "setFunction", +function($function, script, ichCurrentCommand, pt, lineNumbers, lineIndices, lltoken){ +var cmdpt0 = $function.cmdpt0; +var chpt0 = $function.chpt0; +var nCommands = pt - cmdpt0; +$function.setScript(script.substring(chpt0, ichCurrentCommand)); +var aatoken = $function.aatoken = new Array(nCommands); +$function.lineIndices = JU.AU.newInt2(nCommands); +$function.lineNumbers = Clazz_newShortArray (nCommands, 0); +var line0 = (lineNumbers[cmdpt0] - 1); +for (var i = 0; i < nCommands; i++) { +$function.lineNumbers[i] = (lineNumbers[cmdpt0 + i] - line0); +$function.lineIndices[i] = Clazz_newIntArray(-1, [lineIndices[cmdpt0 + i][0] - chpt0, lineIndices[cmdpt0 + i][1] - chpt0]); +aatoken[i] = lltoken.get(cmdpt0 + i); +if (aatoken[i].length > 0) { +var tokenCommand = aatoken[i][0]; +if (JS.T.tokAttr(tokenCommand.tok, 102400)) tokenCommand.intValue -= (tokenCommand.intValue < 0 ? -cmdpt0 : cmdpt0); +}} +for (var i = pt; --i >= cmdpt0; ) { +lltoken.removeItemAt(i); +lineIndices[i][0] = lineIndices[i][1] = 0; +} +}, "JS.ScriptFunction,~S,~N,~N,~A,~A,JU.Lst"); +Clazz_defineMethod(c$, "setScript", +function(s){ +this.script = s; +if (this.script != null && this.script !== "" && !this.script.endsWith("\n")) this.script += "\n"; +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +var s = new JU.SB().append("/*\n * ").append(this.name).append("\n */\n").append(this.getSignature()).append(" {\n"); +if (this.script != null) s.append(this.script); +s.append("}\n"); +return s.toString(); +}); +Clazz_overrideMethod(c$, "getSignature", +function(){ +if (this.typeName == null) return JS.T.nameOf(this.tok); +var s = new JU.SB().append(this.typeName).append(" ").append(this.name).append("("); +for (var i = 0; i < this.nParameters; i++) { +if (i > 0) s.append(", "); +s.append(this.names.get(i)); +} +s.append(")"); +return s.toString(); +}); +Clazz_overrideMethod(c$, "geTokens", +function(){ +return this.aatoken; +}); +Clazz_overrideMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_overrideMethod(c$, "getTok", +function(){ +return this.tok; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.ScriptException"], "JS.ScriptInterruption", null, function(){ +var c$ = Clazz_declareType(JS, "ScriptInterruption", JS.ScriptException); +Clazz_makeConstructor(c$, +function(eval, why, millis){ +Clazz_superConstructor(this, JS.ScriptInterruption, [eval, why, "!", millis == -2147483648 || eval.vwr.autoExit]); +if (why.equals("delay")) eval.delayScript(millis); +}, "JS.ScriptEval,~S,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["J.api.JmolScriptManager", "JU.Lst"], "JS.ScriptManager", ["java.util.Hashtable", "JU.AU", "$.PT", "$.Rdr", "$.SB", "J.api.Interface", "J.i18n.GT", "JS.ScriptQueueThread", "JU.Elements", "$.Logger", "JV.FileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.eval = null; +this.evalTemp = null; +this.queueThreads = null; +this.scriptQueueRunning = null; +this.commandWatcherThread = null; +this.scriptQueue = null; +this.useCommandWatcherThread = false; +this.scriptIndex = 0; +this.$isScriptQueued = true; +Clazz_instantialize(this, arguments);}, JS, "ScriptManager", null, J.api.JmolScriptManager); +Clazz_prepareFields (c$, function(){ +this.queueThreads = new Array(2); +this.scriptQueueRunning = Clazz_newBooleanArray(2, false); +this.scriptQueue = new JU.Lst(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_overrideMethod(c$, "getScriptQueue", +function(){ +return this.scriptQueue; +}); +Clazz_overrideMethod(c$, "isScriptQueued", +function(){ +return this.$isScriptQueued; +}); +Clazz_overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +this.eval = this.newScriptEvaluator(); +this.eval.setCompiler(); +return this.eval; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "newScriptEvaluator", +function(){ +return (J.api.Interface.getInterface("JS.ScriptEval", this.vwr, "setOptions")).setViewer(this.vwr); +}); +Clazz_overrideMethod(c$, "clear", +function(isAll){ +if (!isAll) { +this.evalTemp = null; +return; +}this.startCommandWatcher(false); +this.interruptQueueThreads(); +}, "~B"); +Clazz_defineMethod(c$, "addScript", +function(strScript, params, isQuiet){ +return this.addScr("String", strScript, params, "", isQuiet); +}, "~S,~A,~B"); +Clazz_defineMethod(c$, "addScr", +function(returnType, strScript, params, statusList, isQuiet){ +{ +this.useCommandWatcherThread = false; +}if (!this.vwr.g.useScriptQueue) { +this.clearQueue(); +this.vwr.haltScriptExecution(); +}if (this.commandWatcherThread == null && this.useCommandWatcherThread) this.startCommandWatcher(true); +if (this.commandWatcherThread != null && strScript.indexOf("/*SPLIT*/") >= 0) { +var scripts = JU.PT.split(strScript, "/*SPLIT*/"); +for (var i = 0; i < scripts.length; i++) this.addScr(returnType, scripts[i], params, statusList, isQuiet); + +return "split into " + scripts.length + " sections for processing"; +}var useCommandThread = (this.commandWatcherThread != null && (strScript.indexOf("javascript") < 0 || strScript.indexOf("#javascript ") >= 0)); +var scriptItem = new JU.Lst(); +scriptItem.addLast(strScript); +scriptItem.addLast(statusList); +scriptItem.addLast(returnType); +scriptItem.addLast(isQuiet ? Boolean.TRUE : Boolean.FALSE); +scriptItem.addLast(Integer.$valueOf(useCommandThread ? -1 : 1)); +scriptItem.addLast(params); +this.scriptQueue.addLast(scriptItem); +this.startScriptQueue(false); +return "pending"; +}, "~S,~S,~A,~S,~B"); +Clazz_overrideMethod(c$, "clearQueue", +function(){ +this.scriptQueue.clear(); +}); +Clazz_overrideMethod(c$, "waitForQueue", +function(){ +if (this.vwr.isSingleThreaded) return; +var n = 0; +while (this.isQueueProcessing()) { +try { +Thread.sleep(100); +if (((n++) % 10) == 0) if (JU.Logger.debugging) { +JU.Logger.debug("...scriptManager waiting for queue: " + this.scriptQueue.size() + " thread=" + Thread.currentThread().getName()); +}} catch (e) { +if (Clazz_exceptionOf(e,"InterruptedException")){ +} else { +throw e; +} +} +} +}); +Clazz_overrideMethod(c$, "isQueueProcessing", +function(){ +return this.queueThreads[0] != null || this.queueThreads[1] != null; +}); +Clazz_defineMethod(c$, "flushQueue", +function(command){ +for (var i = this.scriptQueue.size(); --i >= 0; ) { +var strScript = (this.scriptQueue.get(i).get(0)); +if (strScript.indexOf(command) == 0) { +this.scriptQueue.removeItemAt(i); +if (JU.Logger.debugging) JU.Logger.debug(this.scriptQueue.size() + " scripts; removed: " + strScript); +}} +}, "~S"); +Clazz_defineMethod(c$, "startScriptQueue", +function(startedByCommandWatcher){ +var pt = (startedByCommandWatcher ? 1 : 0); +if (this.scriptQueueRunning[pt]) return; +this.scriptQueueRunning[pt] = true; +this.queueThreads[pt] = new JS.ScriptQueueThread(this, this.vwr, startedByCommandWatcher, pt); +this.queueThreads[pt].start(); +}, "~B"); +Clazz_overrideMethod(c$, "getScriptItem", +function(watching, isByCommandWatcher){ +if (this.vwr.isSingleThreaded && this.vwr.queueOnHold) return null; +var scriptItem = this.scriptQueue.get(0); +var flag = ((scriptItem.get(4)).intValue()); +var isOK = (watching ? flag < 0 : isByCommandWatcher ? flag == 0 : flag == 1); +return (isOK ? scriptItem : null); +}, "~B,~B"); +Clazz_overrideMethod(c$, "startCommandWatcher", +function(isStart){ +this.useCommandWatcherThread = isStart; +if (isStart) { +if (this.commandWatcherThread != null) return; +this.commandWatcherThread = J.api.Interface.getInterface("JS.CommandWatcherThread", this.vwr, "setOptions"); +this.commandWatcherThread.setManager(this, this.vwr, null); +this.commandWatcherThread.start(); +} else { +if (this.commandWatcherThread == null) return; +this.clearCommandWatcherThread(); +}if (JU.Logger.debugging) { +JU.Logger.debug("command watcher " + (isStart ? "started" : "stopped") + this.commandWatcherThread); +}}, "~B"); +Clazz_defineMethod(c$, "interruptQueueThreads", +function(){ +for (var i = 0; i < this.queueThreads.length; i++) { +if (this.queueThreads[i] != null) this.queueThreads[i].interrupt(); +} +}); +Clazz_defineMethod(c$, "clearCommandWatcherThread", +function(){ +if (this.commandWatcherThread == null) return; +this.commandWatcherThread.interrupt(); +this.commandWatcherThread = null; +}); +Clazz_overrideMethod(c$, "queueThreadFinished", +function(pt){ +if (pt < 0) { +this.queueThreadFinished(0); +this.queueThreadFinished(1); +return; +}if (this.queueThreads[pt] == null) return; +this.queueThreads[pt].interrupt(); +this.scriptQueueRunning[pt] = false; +this.queueThreads[pt] = null; +this.vwr.setSyncDriver(4); +this.vwr.queueOnHold = false; +}, "~N"); +Clazz_defineMethod(c$, "runScriptNow", +function(){ +if (this.scriptQueue.size() > 0) { +var scriptItem = this.getScriptItem(true, true); +if (scriptItem != null) { +scriptItem.set(4, Integer.$valueOf(0)); +this.startScriptQueue(true); +}}}); +Clazz_overrideMethod(c$, "evalFile", +function(strFilename){ +return this.evalFileArgs(strFilename, null); +}, "~S"); +Clazz_overrideMethod(c$, "evalFileArgs", +function(strFilename, args){ +var ptWait = strFilename.indexOf(" -noqueue"); +if (ptWait >= 0) { +return this.evalStringWaitStatusQueued("String", "script " + JU.PT.esc(strFilename.substring(0, ptWait)), "", false, false); +}return this.addScript("script " + JU.PT.esc(strFilename) + (args == null ? "" : "(" + args + ")"), null, false); +}, "~S,~S"); +Clazz_overrideMethod(c$, "evalStringWaitStatusQueued", +function(returnType, strScript, statusList, isQuiet, isQueued){ +return this.evalStringWaitParamsStatusQueued(returnType, strScript, null, statusList, isQuiet, isQueued); +}, "~S,~S,~S,~B,~B"); +Clazz_defineMethod(c$, "evalStringWaitParamsStatusQueued", +function(returnType, strScript, params, statusList, isQuiet, isQueued){ +if (strScript == null) return null; +var str = this.checkScriptExecution(strScript, false); +if (str != null) return str; +if (this.vwr.checkConsoleScript(strScript)) return null; +var outputBuffer = (statusList == null || statusList.equals("output") ? new JU.SB() : null); +var oldStatusList = this.vwr.sm.statusList; +this.vwr.getStatusChanged(statusList); +if (this.vwr.isSyntaxCheck) JU.Logger.info("--checking script:\n" + this.eval.getScript() + "\n----\n"); +var historyDisabled = (strScript.indexOf(")") == 0); +if (historyDisabled) strScript = strScript.substring(1); +historyDisabled = historyDisabled || !isQueued; +this.vwr.setErrorMessage(null, null); +var eval = (isQueued && params == null ? this.eval : this.newScriptEvaluator()); +var isOK = eval.compileScriptString(strScript, isQuiet); +var strErrorMessage = eval.getErrorMessage(); +var strErrorMessageUntranslated = eval.getErrorMessageUntranslated(); +this.vwr.setErrorMessage(strErrorMessage, strErrorMessageUntranslated); +this.vwr.refresh(7, "script complete"); +if (isOK) { +this.$isScriptQueued = isQueued; +if (!isQuiet) this.vwr.setScriptStatus(null, strScript, -2 - (++this.scriptIndex), null); +eval.evaluateCompiledScript(params, this.vwr.isSyntaxCheck, this.vwr.isSyntaxAndFileCheck, historyDisabled, this.vwr.listCommands, outputBuffer, isQueued); +} else { +this.vwr.scriptStatus(strErrorMessage); +this.vwr.setScriptStatus("Jmol script terminated", strErrorMessage, 1, strErrorMessageUntranslated); +if (eval.isStateScript()) JS.ScriptManager.setStateScriptVersion(this.vwr, null); +}if (strErrorMessage != null && this.vwr.autoExit) this.vwr.exitJmol(); +if (this.vwr.isSyntaxCheck) { +if (strErrorMessage == null) JU.Logger.info("--script check ok"); + else JU.Logger.error("--script check error\n" + strErrorMessageUntranslated); +JU.Logger.info("(use 'exit' to stop checking)"); +}this.$isScriptQueued = true; +if (returnType.equalsIgnoreCase("String")) return strErrorMessageUntranslated; +if (outputBuffer != null) return (strErrorMessageUntranslated == null ? outputBuffer.toString() : strErrorMessageUntranslated); +var info = this.vwr.getProperty(returnType, "jmolStatus", statusList); +this.vwr.getStatusChanged(oldStatusList); +return info; +}, "~S,~S,~A,~S,~B,~B"); +Clazz_defineMethod(c$, "checkScriptExecution", +function(strScript, isInsert){ +var str = strScript; +var pt = str.indexOf("; ## GUI ##"); +if (pt >= 0) str = str.substring(0, pt); +if ((pt = str.indexOf("\u0001##")) >= 0) str = str.substring(0, pt); +if (this.checkResume(str)) return "script processing resumed"; +if (this.checkStepping(str)) return "script processing stepped"; +if (this.checkHalt(str, isInsert)) return "script execution halted"; +this.vwr.wasmInchiHack(strScript); +return null; +}, "~S,~B"); +Clazz_defineMethod(c$, "checkResume", +function(str){ +if (str.equalsIgnoreCase("resume")) { +this.vwr.scriptStatusMsg("", "execution resumed"); +this.eval.resumePausedExecution(); +return true; +}return false; +}, "~S"); +Clazz_defineMethod(c$, "checkStepping", +function(str){ +if (str.equalsIgnoreCase("step")) { +this.eval.stepPausedExecution(); +return true; +}if (str.equalsIgnoreCase("?")) { +this.vwr.scriptStatus(this.eval.getNextStatement()); +return true; +}return false; +}, "~S"); +Clazz_overrideMethod(c$, "evalStringQuietSync", +function(strScript, isQuiet, allowSyncScript){ +return this.evalStringParamsQuietSync(strScript, null, isQuiet, allowSyncScript); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "evalStringParamsQuietSync", +function(strScript, params, isQuiet, allowSyncScript){ +if (allowSyncScript && this.vwr.sm.syncingScripts && strScript.indexOf("#NOSYNC;") < 0) this.vwr.syncScript(strScript + " #NOSYNC;", null, 0); +if (this.eval.isPaused() && strScript.charAt(0) != '!') strScript = '!' + JU.PT.trim(strScript, "\n\r\t "); +var isInsert = (params == null && strScript.length > 0 && strScript.charAt(0) == '!'); +if (isInsert) strScript = strScript.substring(1); +var msg = this.checkScriptExecution(strScript, isInsert); +if (msg != null) return msg; +if (this.vwr.isScriptExecuting() && (isInsert || this.eval.isPaused())) { +this.vwr.setInsertedCommand(strScript); +if (strScript.indexOf("moveto ") == 0) this.flushQueue("moveto "); +return "!" + strScript; +}this.vwr.setInsertedCommand(""); +if (isQuiet && params == null) strScript += "\u0001## EDITOR_IGNORE ##"; +return this.addScript(strScript, params, isQuiet && !this.vwr.getBoolean(603979879)); +}, "~S,~A,~B,~B"); +Clazz_overrideMethod(c$, "checkHalt", +function(str, isInsert){ +if (str.equalsIgnoreCase("pause") || str.equalsIgnoreCase("pause\u0001##")) { +this.vwr.pauseScriptExecution(); +if (this.vwr.scriptEditorVisible) this.vwr.setScriptStatus("", "paused -- type RESUME to continue", 0, null); +return true; +}if (str.equalsIgnoreCase("menu")) { +this.vwr.getProperty("DATA_API", "getPopupMenu", "\0"); +return true; +}str = str.toLowerCase(); +var exitScript = false; +var haltType = null; +if (str.startsWith("exit")) { +this.vwr.haltScriptExecution(); +this.vwr.clearScriptQueue(); +this.vwr.clearTimeouts(); +exitScript = str.equals(haltType = "exit"); +} else if (str.startsWith("quit")) { +this.vwr.haltScriptExecution(); +exitScript = str.equals(haltType = "quit"); +}if (haltType == null) return false; +if (isInsert) { +this.vwr.clearThreads(); +this.vwr.queueOnHold = false; +}if (isInsert || this.vwr.g.waitForMoveTo) { +this.vwr.tm.stopMotion(); +}JU.Logger.info(this.vwr.isSyntaxCheck ? haltType + " -- stops script checking" : (isInsert ? "!" : "") + haltType + " received"); +this.vwr.isSyntaxCheck = false; +return exitScript; +}, "~S,~B"); +Clazz_overrideMethod(c$, "getAtomBitSetEval", +function(eval, atomExpression){ +if (eval == null) { +eval = this.evalTemp; +if (eval == null) eval = this.evalTemp = this.newScriptEvaluator(); +}return this.vwr.slm.excludeAtoms(eval.getAtomBitSet(atomExpression), false); +}, "J.api.JmolScriptEvaluator,~O"); +Clazz_overrideMethod(c$, "scriptCheckRet", +function(strScript, returnContext){ +if (strScript.indexOf(")") == 0 || strScript.indexOf("!") == 0) strScript = strScript.substring(1); +strScript = this.vwr.wasmInchiHack(strScript); +var sc = this.newScriptEvaluator().checkScriptSilent(strScript); +return (returnContext || sc.errorMessage == null ? sc : sc.errorMessage); +}, "~S,~B"); +Clazz_overrideMethod(c$, "openFileAsync", +function(fname, flags, type){ +var scriptOnly = ((flags & 32) != 0); +if (!scriptOnly && (flags & 64) != 0 && JV.FileManager.isEmbeddable(fname)) this.checkResize(fname); +var noScript = ((flags & 2) != 0); +var noAutoPlay = ((flags & 8) != 0); +var cmd = null; +fname = fname.trim().$replace('\\', '/'); +var isCached = fname.startsWith("cache://"); +if (this.vwr.isApplet && fname.indexOf("://") < 0) fname = "file://" + (fname.startsWith("/") ? "" : "/") + fname; +try { +if (scriptOnly) { +cmd = "script " + JU.PT.esc(fname); +return; +}if (fname.endsWith(".pse")) { +cmd = (isCached ? "" : "zap;") + "load SYNC " + JU.PT.esc(fname) + (this.vwr.isApplet ? "" : " filter 'DORESIZE'"); +return; +}if (fname.endsWith("jvxl")) { +cmd = "isosurface "; +} else if (!fname.toLowerCase().endsWith(".spt")) { +if (type == null) type = this.getDragDropFileTypeName(fname); + else if (!type.endsWith("::")) type += "::"; +if (type == null) { +try { +var bis = this.vwr.getBufferedInputStream(fname); +type = JV.FileManager.determineSurfaceFileType(JU.Rdr.getBufferedReader(bis, "ISO-8859-1")); +if (type == null) { +cmd = "script " + JU.PT.esc(fname); +return; +}} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +return; +} else { +throw e; +} +} +if (type === "MENU") { +cmd = "load MENU " + JU.PT.esc(fname); +} else { +cmd = "if (_filetype == 'Pdb') { isosurface sigma 1.0 within 2.0 {*} " + JU.PT.esc(fname) + " mesh nofill }; else; { isosurface " + JU.PT.esc(fname) + "}"; +}return; +}if (type.equals("spt::")) { +cmd = "script " + JU.PT.esc((fname.startsWith("spt::") ? fname.substring(5) : fname)); +return; +}if (type.equals("dssr")) { +cmd = "model {visible} property dssr "; +} else if (type.equals("Jmol")) { +cmd = "script "; +} else if (type.equals("Cube")) { +cmd = "isosurface sign red blue "; +} else if (!type.equals("spt")) { +if (flags == 16) { +flags = 1; +switch (this.vwr.ms.ac == 0 ? 0 : this.vwr.confirm(J.i18n.GT.$("Would you like to replace the current model with the selected model?"), J.i18n.GT.$("Would you like to append?"))) { +case 2: +return; +case 0: +break; +default: +flags |= 4; +break; +} +}var isAppend = ((flags & 4) != 0); +var pdbCartoons = ((flags & 1) != 0 && !isAppend); +if (type.endsWith("::")) { +var pt = type.indexOf("|"); +if (pt >= 0) { +fname += type.substring(pt, type.length - 2); +type = ""; +}fname = type + fname; +}cmd = this.vwr.g.defaultDropScript; +cmd = JU.PT.rep(cmd, "%FILE", fname); +cmd = JU.PT.rep(cmd, "%ALLOWCARTOONS", "" + pdbCartoons); +if (cmd.toLowerCase().startsWith("zap") && (isCached || isAppend)) cmd = cmd.substring(3); +if (isAppend) { +cmd = JU.PT.rep(cmd, "load SYNC", "load append"); +}return; +}}if (cmd == null && !noScript && this.vwr.scriptEditorVisible) this.vwr.showEditor( Clazz_newArray(-1, [fname, this.vwr.getFileAsString3(fname, true, null)])); + else cmd = (cmd == null ? "script " : cmd) + JU.PT.esc(fname); +} finally { +if (cmd != null) this.vwr.evalString(cmd + (noAutoPlay ? "#!NOAUTOPLAY" : "")); +} +}, "~S,~N,~S"); +Clazz_defineMethod(c$, "checkResize", +function(fname){ +try { +var data = this.vwr.fm.getEmbeddedFileState(fname, false, "state.spt"); +if (data.indexOf("preferredWidthHeight") >= 0) this.vwr.sm.resizeInnerPanelString(data); +} catch (e) { +} +}, "~S"); +Clazz_defineMethod(c$, "getDragDropFileTypeName", +function(fileName){ +var pt = fileName.indexOf("::"); +if (pt >= 0) return fileName.substring(0, pt + 2); +if (fileName.startsWith("=")) return "pdb"; +if (fileName.endsWith(".dssr")) return "dssr"; +var br = this.vwr.fm.getUnzippedReaderOrStreamFromName(fileName, null, true, false, true, true, null); +var modelType = null; +if (this.vwr.fm.isZipStream(br)) { +var zipDirectory = this.vwr.getZipDirectoryAsString(fileName); +if (zipDirectory.indexOf("JmolManifest") >= 0) return "Jmol"; +modelType = this.vwr.getModelAdapter().getFileTypeName(JU.Rdr.getBR(zipDirectory)); +} else if (Clazz_instanceOf(br,"java.io.BufferedReader") || Clazz_instanceOf(br,"java.io.BufferedInputStream")) { +modelType = this.vwr.getModelAdapter().getFileTypeName(br); +}if (modelType != null) return modelType + "::"; +if (JU.AU.isAS(br)) { +return (br)[0]; +}return null; +}, "~S"); +c$.setStateScriptVersion = Clazz_defineMethod(c$, "setStateScriptVersion", +function(vwr, version){ +if (version != null) { +JS.ScriptManager.prevCovalentVersion = JU.Elements.bondingVersion; +var tokens = JU.PT.getTokens(version.$replace('.', ' ').$replace('_', ' ')); +try { +var main = JU.PT.parseInt(tokens[0]); +var sub = JU.PT.parseInt(tokens[1]); +var minor = JU.PT.parseInt(tokens[2]); +if (minor == -2147483648) minor = 0; +if (main != -2147483648 && sub != -2147483648) { +var ver = vwr.stateScriptVersionInt = main * 10000 + sub * 100 + minor; +vwr.setBooleanProperty("legacyautobonding", (ver < 110924)); +vwr.setBooleanProperty("legacyHAddition", (ver < 130117)); +if (!vwr.getBoolean(603979831)) vwr.setBooleanProperty("legacyjavafloat", (ver < 140206 || ver >= 140300 && ver < 140306)); +vwr.setIntProperty("bondingVersion", ver < 140111 ? 0 : 1); +return; +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}vwr.setIntProperty("bondingVersion", JS.ScriptManager.prevCovalentVersion); +vwr.setBooleanProperty("legacyautobonding", false); +vwr.setBooleanProperty("legacyHAddition", false); +vwr.stateScriptVersionInt = 2147483647; +}, "JV.Viewer,~S"); +Clazz_overrideMethod(c$, "addHydrogensInline", +function(bsAtoms, vConnections, pts, htParams){ +var iatom = (bsAtoms == null ? -1 : bsAtoms.nextSetBit(0)); +if (htParams == null) htParams = new java.util.Hashtable(); +var modelIndex = (iatom < 0 ? this.vwr.am.cmi : this.vwr.ms.at[iatom].mi); +if (modelIndex < 0) modelIndex = this.vwr.ms.mc - 1; +htParams.put("appendToModelIndex", Integer.$valueOf(modelIndex)); +var siteFixed = (htParams.containsKey("fixedSite")); +var bsA = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +var wasAppendNew = this.vwr.g.appendNew; +this.vwr.g.appendNew = false; +var atomno = 0; +for (var i = bsA.nextSetBit(0); i >= 0; i = bsA.nextSetBit(i + 1)) { +var an = this.vwr.ms.at[i].getAtomNumber(); +if (an > atomno) atomno = an; +} +var sbConnect = new JU.SB(); +for (var i = 0, atomIndex = this.vwr.ms.ac; i < vConnections.size(); i++, atomIndex++) { +var a = vConnections.get(i); +if (a != null) sbConnect.append("; connect 0 100 ").append("({" + (atomIndex) + "}) ").append("({" + a.i + "}) group;"); +} +var sb = new JU.SB(); +sb.appendI(pts.length).append("\n").append("Viewer.AddHydrogens").append("#noautobond").append("\n"); +var sym = htParams.get("element"); +sym = (sym == null ? "H" : sym) + " "; +for (var i = 0; i < pts.length; i++) sb.append(sym).appendF(pts[i].x).append(" ").appendF(pts[i].y).append(" ").appendF(pts[i].z).append(" - - - - ").appendI(++atomno).appendC('\n'); + +var wasRefreshing = this.vwr.getBoolean(603979900); +this.vwr.setBooleanProperty("refreshing", false); +this.vwr.openStringInlineParamsAppend(sb.toString(), htParams, true); +if (sbConnect.length() > 0) this.vwr.runScript(sbConnect.toString()); +this.vwr.setBooleanProperty("refreshing", wasRefreshing); +var bsB = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +bsB.andNot(bsA); +this.vwr.g.appendNew = wasAppendNew; +if (!siteFixed) { +bsA = this.vwr.ms.am[modelIndex].bsAsymmetricUnit; +if (bsA != null) bsA.or(bsB); +}return bsB; +}, "JU.BS,JU.Lst,~A,java.util.Map"); +Clazz_overrideMethod(c$, "evalCallback", +function(strScript, params, doWait){ +if (doWait) { +this.evalStringWaitParamsStatusQueued("String", strScript, params, "", true, true); +} else { +this.evalStringParamsQuietSync(strScript, params, true, true); +}}, "~S,~A,~B"); +Clazz_defineMethod(c$, "runScriptFromThread", +function(scriptItem){ +var script = scriptItem.get(0); +var statusList = scriptItem.get(1); +var returnType = scriptItem.get(2); +var isQuiet = (scriptItem.get(3)).booleanValue(); +var params = scriptItem.get(5); +this.evalStringWaitParamsStatusQueued(returnType, script, params, statusList, isQuiet, true); +}, "JU.Lst"); +c$.prevCovalentVersion = 0; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ScriptMathProcessor", ["java.util.Hashtable", "JU.A4", "$.AU", "$.BS", "$.CU", "$.DF", "$.Lst", "$.M3", "$.M4", "$.P3", "$.P4", "$.PT", "$.Quat", "$.V3", "JM.BondSet", "JS.SV", "$.T", "JU.BSUtil", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.wasX = false; +this.asBitSet = false; +this.oPt = -1; +this.chk = false; +this.wasSyntaxCheck = false; +this.debugHigh = false; +this.eval = null; +this.vwr = null; +this.oStack = null; +this.xStack = null; +this.ifStack = null; +this.ifPt = -1; +this.xPt = -1; +this.parenCount = 0; +this.squareCount = 0; +this.braceCount = 0; +this.isArrayItem = false; +this.asVector = false; +this.haveSpaceBeforeSquare = false; +this.equalCount = 0; +this.ptid = 0; +this.ptx = 2147483647; +this.pto = 2147483647; +this.isSpecialAssignment = false; +this.doSelections = true; +this.assignLeft = false; +this.allowUnderflow = false; +this.isAssignment = false; +this.skipping = false; +this.lastAssignedString = null; +Clazz_instantialize(this, arguments);}, JS, "ScriptMathProcessor", null); +Clazz_prepareFields (c$, function(){ +this.oStack = new Array(8); +this.xStack = new Array(8); +this.ifStack = Clazz_newCharArray (8, '\0'); +}); +Clazz_makeConstructor(c$, +function(eval, isSpecialAssignment, isArrayItem, asVector, asBitSet, allowUnderflow, key){ +this.eval = eval; +this.isSpecialAssignment = this.assignLeft = isSpecialAssignment; +this.isAssignment = (isSpecialAssignment || key != null); +this.vwr = eval.vwr; +this.debugHigh = eval.debugHigh; +this.chk = this.wasSyntaxCheck = eval.chk; +this.isArrayItem = isArrayItem; +this.asVector = asVector || isArrayItem; +this.asBitSet = asBitSet; +this.allowUnderflow = allowUnderflow; +this.wasX = isArrayItem; +if (this.debugHigh) JU.Logger.debug("initialize RPN"); +}, "JS.ScriptExpr,~B,~B,~B,~B,~B,~S"); +Clazz_defineMethod(c$, "endAssignment", +function(){ +this.assignLeft = false; +return (this.doSelections = false); +}); +Clazz_defineMethod(c$, "getResult", +function(){ +var isOK = true; +while (isOK && this.oPt >= 0 && this.oStack[this.oPt] != null) isOK = this.operate(); + +if (isOK) { +if (this.asVector) { +if (this.isAssignment && (this.xPt > 0 && this.oPt < 0 || this.oPt >= 0 && (this.oStack[this.oPt] != null))) this.eval.invArg(); +var result = new JU.Lst(); +for (var i = 0; i <= this.xPt; i++) result.addLast(this.isSpecialAssignment ? this.xStack[i] : JS.SV.selectItemVar(this.xStack[i])); + +if (this.lastAssignedString != null) { +result.removeItemAt(0); +result.add(0, this.lastAssignedString); +this.lastAssignedString.intValue = this.xStack[0].intValue; +}return JS.SV.newV(135198, result); +}if (this.xPt == 0) { +var x = this.xStack[0]; +if (this.chk) { +if (this.asBitSet) return JS.SV.newV(10, new JU.BS()); +return x; +}if (x.tok == 10 || x.tok == 7 || x.tok == 15 || x.tok == 4 || x.tok == 11 || x.tok == 12) x = JS.SV.selectItemVar(x); +if (this.asBitSet && x.tok == 7) x = JS.SV.newV(10, JS.SV.unEscapeBitSetArray(x.value, false)); +return x; +}}if (!this.allowUnderflow && (this.xPt >= 0 || this.oPt >= 0)) this.eval.invArg(); +return null; +}); +Clazz_defineMethod(c$, "putX", +function(x){ +if (this.skipping) return; +if (this.wasX) { +try { +this.addOp(JS.T.tokenComma); +} catch (e) { +if (Clazz_exceptionOf(e,"JS.ScriptException")){ +} else { +throw e; +} +} +}if (++this.xPt == this.xStack.length) this.xStack = JU.AU.doubleLength(this.xStack); +if (this.xPt < 0) System.out.println("testing scriptemaafe"); +this.xStack[this.xPt] = x; +this.ptx = ++this.ptid; +if (this.debugHigh) { +JU.Logger.debug("\nputx= " + x + " ptx=" + this.ptid); +}}, "JS.SV"); +Clazz_defineMethod(c$, "putOp", +function(op){ +if (++this.oPt >= this.oStack.length) this.oStack = JU.AU.doubleLength(this.oStack); +this.oStack[this.oPt] = op; +this.pto = ++this.ptid; +if (this.debugHigh) { +JU.Logger.debug("\nputop=" + op + " pto=" + this.ptid); +}}, "JS.T"); +Clazz_defineMethod(c$, "putIf", +function(c){ +if (++this.ifPt >= this.ifStack.length) this.ifStack = JU.AU.doubleLength(this.ifStack); +this.ifStack[this.ifPt] = c; +}, "~S"); +Clazz_defineMethod(c$, "addXCopy", +function(x){ +switch (x.tok) { +case 2: +x = JS.SV.newI(x.intValue); +break; +case 3: +x = JS.SV.newV(3, x.value); +break; +} +return this.addX(x); +}, "JS.SV"); +Clazz_defineMethod(c$, "addX", +function(x){ +this.putX(x); +return this.wasX = true; +}, "JS.SV"); +Clazz_defineMethod(c$, "addXObj", +function(x){ +var v = JS.SV.getVariable(x); +if (v == null) return false; +this.putX(v); +return this.wasX = true; +}, "~O"); +Clazz_defineMethod(c$, "addXStr", +function(x){ +this.putX(JS.SV.newS(x)); +return this.wasX = true; +}, "~S"); +Clazz_defineMethod(c$, "addXBool", +function(x){ +this.putX(JS.SV.getBoolean(x)); +return this.wasX = true; +}, "~B"); +Clazz_defineMethod(c$, "addXInt", +function(x){ +this.putX(JS.SV.newI(x)); +return this.wasX = true; +}, "~N"); +Clazz_defineMethod(c$, "addXList", +function(x){ +this.putX(JS.SV.getVariableList(x)); +return this.wasX = true; +}, "JU.Lst"); +Clazz_defineMethod(c$, "addXMap", +function(x){ +this.putX(JS.SV.getVariableMap(x)); +return this.wasX = true; +}, "java.util.Map"); +Clazz_defineMethod(c$, "addXM3", +function(x){ +this.putX(JS.SV.newV(11, x)); +return this.wasX = true; +}, "JU.M3"); +Clazz_defineMethod(c$, "addXM4", +function(x){ +this.putX(JS.SV.newV(12, x)); +return this.wasX = true; +}, "JU.M4"); +Clazz_defineMethod(c$, "addXFloat", +function(x){ +this.putX(JS.SV.newF(x)); +return this.wasX = true; +}, "~N"); +Clazz_defineMethod(c$, "addXBs", +function(bs){ +this.putX(JS.SV.newV(10, bs)); +return this.wasX = true; +}, "JU.BS"); +Clazz_defineMethod(c$, "addXPt", +function(pt){ +this.putX(JS.SV.newV(8, pt)); +return this.wasX = true; +}, "JU.P3"); +Clazz_defineMethod(c$, "addXPt4", +function(pt){ +this.putX(JS.SV.newV(9, pt)); +return this.wasX = true; +}, "JU.P4"); +Clazz_defineMethod(c$, "addXNum", +function(x){ +var v; +if (Clazz_instanceOf(x,"JS.SV")) { +v = x; +} else { +switch (x.tok) { +case 3: +if (this.wasX) { +var f = (x.value).floatValue(); +if (f < 0 || f == 0 && 1 / f == -Infinity) { +this.addOp(JS.T.tokenMinus); +v = JS.SV.newF(-f); +break; +}}v = JS.SV.newV(3, x.value); +break; +default: +var iv = x.intValue; +if (this.wasX && iv < 0) { +this.addOp(JS.T.tokenMinus); +iv = -iv; +}v = JS.SV.newI(iv); +break; +} +}this.putX(v); +return this.wasX = true; +}, "JS.T"); +Clazz_defineMethod(c$, "addXAV", +function(x){ +this.putX(JS.SV.getVariableAV(x)); +return this.wasX = true; +}, "~A"); +Clazz_defineMethod(c$, "addXAD", +function(x){ +this.putX(JS.SV.getVariableAD(x)); +return this.wasX = true; +}, "~A"); +Clazz_defineMethod(c$, "addXAS", +function(x){ +this.putX(JS.SV.getVariableAS(x)); +return this.wasX = true; +}, "~A"); +Clazz_defineMethod(c$, "addXAI", +function(x){ +this.putX(JS.SV.getVariableAI(x)); +return this.wasX = true; +}, "~A"); +Clazz_defineMethod(c$, "addXAII", +function(x){ +this.putX(JS.SV.getVariableAII(x)); +return this.wasX = true; +}, "~A"); +Clazz_defineMethod(c$, "addXAF", +function(x){ +this.putX(JS.SV.getVariableAF(x)); +return this.wasX = true; +}, "~A"); +Clazz_defineMethod(c$, "addXAFF", +function(x){ +this.putX(JS.SV.getVariableAFF(x)); +return this.wasX = true; +}, "~A"); +c$.isOpFunc = Clazz_defineMethod(c$, "isOpFunc", +function(op){ +return (op != null && (JS.T.tokAttr(op.tok, 134217728) && op !== JS.T.tokenArraySquare || op.tok == 268442113 && JS.T.tokAttr(op.intValue, 134217728))); +}, "JS.T"); +Clazz_defineMethod(c$, "addOp", +function(op){ +return this.addOpAllowMath(op, true, 0); +}, "JS.T"); +Clazz_defineMethod(c$, "addOpAllowMath", +function(op, allowMathFunc, tokNext){ +if (this.debugHigh) { +this.dumpStacks("adding " + op + " wasx=" + this.wasX); +}var tok0 = (this.oPt >= 0 && this.oStack[this.oPt] != null ? this.oStack[this.oPt].tok : 0); +this.skipping = (this.ifPt >= 0 && (this.ifStack[this.ifPt] == 'F' || this.ifStack[this.ifPt] == 'X')); +if (this.skipping) return this.checkSkip(op, tok0); +var tok; +var isDotSelector = (op.tok == 268442113); +if (isDotSelector && !this.wasX) return false; +var isMathFunc = (allowMathFunc && JS.ScriptMathProcessor.isOpFunc(op)); +if (this.oPt >= 1 && op.tok != 268435968 && tok0 == 134217750) tok0 = this.oStack[--this.oPt].tok; +var newOp = null; +var isLeftOp = false; +switch (op.tok) { +case 1073742195: +this.haveSpaceBeforeSquare = true; +return true; +case 268436992: +if (!this.wasX) return false; +break; +case 268441601: +case 268441602: +if (this.wasX && op.intValue == -1 && this.addOp(JS.T.tokenComma)) return this.addOp(op); +break; +case 268437505: +break; +case 268435969: +if (!this.wasX && this.oPt >= 1 && tok0 == 268435968 && !JS.ScriptMathProcessor.isOpFunc(this.oStack[this.oPt - 1])) return false; +break; +case 268440576: +if (!this.wasX) op = JS.SV.newV(268441600, "-"); +break; +case 1275068725: +case 32: +case 64: +case 96: +case 128: +case 160: +case 192: +case 480: +tok = (this.oPt < 0 ? 0 : tok0); +if (!this.wasX || !(tok == 268442113 || tok == 1677721602 || tok == 1153433601)) return false; +this.oStack[this.oPt].intValue |= op.tok; +return true; +case 268437504: +isLeftOp = true; +if (!this.wasX || this.haveSpaceBeforeSquare) { +this.squareCount++; +op = newOp = JS.T.tokenArraySquare; +this.haveSpaceBeforeSquare = false; +}break; +case 268439040: +case 268435968: +isLeftOp = true; +default: +if (isMathFunc) { +var isArgument = (this.oPt >= 1 && tok0 == 268435968); +if (isDotSelector) { +if (tokNext == 268435968) { +if (this.xStack[this.xPt].tok == 6) return false; +}} else if (this.wasX && !isArgument) { +return false; +}newOp = op; +isLeftOp = true; +break; +}if (this.wasX == isLeftOp && tok0 != 268442113) { +if (!this.wasX || !allowMathFunc) return false; +if (this.addOp(JS.T.tokenComma)) return this.addOp(op); +}break; +} +while (this.oPt >= 0 && tok0 != 268436482 && (op.tok != 268441601 && op.tok != 268441602 || this.wasX) && (!isLeftOp || tok0 == 268442113 && (op.tok == 268442113 || op.tok == 268437504)) && JS.T.getPrecedence(tok0) >= JS.T.getPrecedence(op.tok) && (tok0 != 268441600 || op.tok != 268441600)) { +if (op.tok == 268435969 && tok0 == 268435968) { +if (this.xPt >= 0) this.xStack[this.xPt] = JS.SV.selectItemVar(this.xStack[this.xPt]); +this.wasX = true; +break; +}if (op.tok == 268437505 && tok0 == 1275068418) { +break; +}if (op.tok == 268437505 && tok0 == 268437504) { +if (this.isArrayItem && this.squareCount == 1 && this.equalCount == 0) { +this.wasX = false; +this.addX(JS.SV.newT(JS.T.tokenArrayOpen)); +break; +}if (!this.doSelection()) return false; +this.wasX = true; +break; +}if (!this.operate()) return false; +tok0 = (this.oPt >= 0 && this.oStack[this.oPt] != null ? this.oStack[this.oPt].tok : 0); +} +if (newOp != null) { +this.wasX = false; +this.addX(JS.SV.newV(268440324, newOp)); +}switch (op.tok) { +case 268435968: +this.parenCount++; +this.wasX = false; +break; +case 805307393: +var isFirst = this.getX().asBoolean(); +if (tok0 == 268436482) this.ifPt--; + else this.putOp(JS.T.tokenColon); +this.putIf(isFirst ? 'T' : 'F'); +this.skipping = !isFirst; +this.wasX = false; +return true; +case 268436482: +if (tok0 != 268436482) return false; +if (this.ifPt < 0) return false; +this.ifStack[this.ifPt] = 'X'; +this.wasX = false; +this.skipping = true; +return true; +case 268435969: +this.wasX = true; +if (this.parenCount-- <= 0) return false; +if (tok0 == 268436482) { +this.ifPt--; +this.oPt--; +}this.oPt--; +if (this.oPt < 0) return true; +if (JS.ScriptMathProcessor.isOpFunc(this.oStack[this.oPt])) { +this.wasX = false; +if (!this.evaluateFunction(0)) return false; +}this.skipping = (this.ifPt >= 0 && this.ifStack[this.ifPt] == 'X'); +return true; +case 268436992: +this.wasX = false; +return true; +case 268437504: +this.squareCount++; +this.wasX = false; +break; +case 268437505: +this.wasX = true; +if (this.squareCount-- <= 0 || this.oPt < 0 || !this.doSelections) return !this.doSelections; +if (this.oStack[this.oPt].tok == 1275068418) return this.evaluateFunction(268437504); +this.oPt--; +return true; +case 268442113: +this.wasX = (!allowMathFunc || !JS.T.tokAttr(op.intValue, 134217728)); +break; +case 1073742332: +this.braceCount++; +this.wasX = false; +break; +case 1073742338: +if (this.braceCount-- <= 0) return false; +this.wasX = false; +break; +case 268438528: +case 268438016: +if (!this.wasSyntaxCheck && this.xPt < 0) return false; +if (!this.wasSyntaxCheck) { +switch (this.xStack[this.xPt].tok) { +case 10: +case 7: +break; +case 11: +if (op.tok == 268438016) break; +default: +var tf = this.getX().asBoolean(); +this.addX(JS.SV.getBoolean(tf)); +if (tf == (op.tok == 268438016)) { +this.chk = true; +op = (op.tok == 268438016 ? JS.T.tokenOrTRUE : JS.T.tokenAndFALSE); +}break; +} +}this.wasX = false; +break; +case 268441602: +case 268441601: +break; +case 268440324: +if (this.squareCount == 0) { +this.doSelections = true; +this.assignLeft = false; +this.equalCount++; +}this.wasX = false; +break; +default: +this.wasX = false; +} +this.putOp(op); +switch (op.tok) { +case 268442113: +return (((op.intValue & -481) == 134320141 && op.intValue != 134320141) ? this.evaluateFunction(0) : true); +case 268441602: +case 268441601: +return (this.wasX ? this.operate() : true); +} +return true; +}, "JS.T,~B,~N"); +Clazz_defineMethod(c$, "checkSkip", +function(op, tok0){ +switch (op.tok) { +case 268435968: +this.putOp(op); +break; +case 268436482: +if (tok0 != 268436482 || this.ifStack[this.ifPt] == 'X') break; +this.ifStack[this.ifPt] = 'T'; +this.wasX = false; +this.skipping = false; +break; +case 268435969: +if (tok0 == 268435968) { +this.oPt--; +break; +}if (tok0 != 268436482) { +this.putOp(op); +break; +}this.wasX = true; +this.ifPt--; +this.oPt -= 2; +this.skipping = false; +break; +} +return true; +}, "JS.T,~N"); +Clazz_defineMethod(c$, "doSelection", +function(){ +if (this.xPt < 0 || this.xPt == 0 && !this.isArrayItem) { +return false; +}var var1 = this.xStack[this.xPt--]; +var $var = this.xStack[this.xPt]; +if (($var.tok == 7 || $var.tok == 15) && $var.intValue != 2147483647) if (var1.tok == 4 || this.assignLeft && this.squareCount == 1) { +this.xStack[this.xPt] = $var = JS.SV.selectItemTok($var, -2147483648); +}if (this.assignLeft && $var.tok != 4) this.lastAssignedString = null; +switch ($var.tok) { +case 6: +case 14: +if (this.doSelections) { +var v = $var.mapValue(JS.SV.sValue(var1)); +this.xStack[this.xPt] = (v == null ? JS.SV.newS("") : v); +} else { +this.xPt++; +this.putOp(null); +}return true; +default: +$var = JS.SV.newS(JS.SV.sValue($var)); +case 10: +case 15: +case 7: +case 4: +case 11: +case 12: +if (this.doSelections || $var.tok == 7 && $var.intValue == 2147483647) { +this.xStack[this.xPt] = JS.SV.selectItemTok($var, var1.asInt()); +if (this.assignLeft && $var.tok == 4 && this.squareCount == 1) this.lastAssignedString = $var; +} else { +this.xPt++; +}if (!this.doSelections) this.putOp(null); +break; +} +return true; +}); +Clazz_defineMethod(c$, "dumpStacks", +function(message){ +JU.Logger.debug("\n\n------------------\nRPN stacks: " + message + "\n"); +for (var i = 0; i <= this.xPt; i++) JU.Logger.debug("x[" + i + "]: " + this.xStack[i]); + +JU.Logger.debug("\n"); +for (var i = 0; i <= this.oPt; i++) JU.Logger.debug("o[" + i + "]: " + this.oStack[i] + " prec=" + (this.oStack[i] == null ? "--" : "" + JS.T.getPrecedence(this.oStack[i].tok))); + +JU.Logger.debug(" ifStack = " + ( String.instantialize(this.ifStack)).substring(0, this.ifPt + 1)); +}, "~S"); +Clazz_defineMethod(c$, "getX", +function(){ +if (this.xPt < 0) this.eval.error(13); +var v = JS.SV.selectItemVar(this.xStack[this.xPt]); +this.xStack[this.xPt--] = null; +this.wasX = false; +return v; +}); +Clazz_defineMethod(c$, "getXTok", +function(){ +return (this.xPt < 0 ? 0 : this.xStack[this.xPt].tok); +}); +Clazz_defineMethod(c$, "evaluateFunction", +function(tok){ +var op = this.oStack[this.oPt--]; +if (tok == 0) tok = (op.tok == 268442113 ? op.intValue & -481 : op.tok); +var nParamMax = JS.T.getMaxMathParams(tok); +var nParam = 0; +var pt = this.xPt; +while (pt >= 0 && this.xStack[pt--].value !== op) nParam++; + +if (nParamMax > 0 && nParam > nParamMax) return false; +var args = new Array(nParam); +for (var i = nParam; --i >= 0; ) args[i] = this.getX(); + +this.xPt--; +if (!this.chk) return this.eval.getMathExt().evaluate(this, op, args, tok); +if (op.tok == 268442113) this.xPt--; +if (this.xPt < 0) this.xPt = 0; +switch (tok) { +case 134217736: +case 1275203608: +case 134218756: +case 134218757: +case 134217759: +case 134353926: +return this.addXBs( new JU.BS()); +} +return this.addXBool(true); +}, "~N"); +Clazz_defineMethod(c$, "operate", +function(){ +var op = this.oStack[this.oPt--]; +var pt; +var m; +var m4; +var s; +var x1; +if (this.debugHigh) { +this.dumpStacks("operate: " + op); +}if (op.tok == 268440324 && (this.isArrayItem && this.squareCount == 0 && this.equalCount == 1 && this.oPt < 0 || this.oPt >= 0 && this.oStack[this.oPt] == null)) return true; +var x2; +switch (op.tok) { +case 268441601: +case 268441602: +if (this.xPt >= 0 && this.xStack[this.xPt].canIncrement()) { +x2 = this.xStack[this.xPt--]; +this.wasX = false; +break; +}default: +x2 = this.getX(); +break; +} +if (x2 === JS.T.tokenArrayOpen) return false; +switch (op.tok) { +case 268441601: +case 268441602: +x1 = x2; +if (!this.chk) { +if (this.ptx < this.pto) { +x1 = JS.SV.copySafely(x2); +}if (!x2.increment(op.tok == 268441602 ? 1 : -1)) return false; +if (this.ptx > this.pto) { +x1 = JS.SV.copySafely(x2); +}}this.wasX = false; +this.putX(x1); +this.wasX = true; +return true; +case 268441600: +switch (x2.tok) { +case 2: +return this.addXInt(-x2.asInt()); +case 8: +pt = JU.P3.newP(x2.value); +pt.scale(-1.0); +return this.addXPt(pt); +case 9: +var pt4 = JU.P4.newPt(x2.value); +pt4.scale4(-1.0); +return this.addXPt4(pt4); +case 11: +m = JU.M3.newM3(x2.value); +m.transpose(); +return this.addXM3(m); +case 12: +m4 = JU.M4.newM4(x2.value); +m4.transpose(); +return this.addXM4(m4); +case 10: +return this.addXBs(JU.BSUtil.copyInvert(x2.value, (Clazz_instanceOf(x2.value,"JM.BondSet") ? this.vwr.ms.bondCount : this.vwr.ms.ac))); +} +return this.addXFloat(-x2.asFloat()); +case 268439040: +if (this.chk) return this.addXBool(true); +switch (x2.tok) { +case 9: +return this.addXPt4((JU.Quat.newP4(x2.value)).inv().toPoint4f()); +case 11: +m = JU.M3.newM3(x2.value); +m.invert(); +return this.addXM3(m); +case 12: +return this.addXM4(JU.M4.newM4(x2.value).invert()); +case 10: +var isBond = Clazz_instanceOf(x2.value,"JM.BondSet"); +var bs = JU.BSUtil.copyInvert(x2.value, (isBond ? this.vwr.ms.bondCount : this.vwr.ms.ac)); +return this.addXBs(isBond ? JM.BondSet.newBS(bs) : bs); +default: +return this.addXBool(!x2.asBoolean()); +} +case 268442113: +var iv = (op.intValue == 805307393 ? 805307393 : op.intValue & -481); +if (this.chk) return this.addXObj(JS.SV.newS("")); +if (this.vwr.allowArrayDotNotation) switch (x2.tok) { +case 6: +case 14: +switch (iv) { +case 1275068418: +case 1140850706: +case 1140850694: +case 1140850696: +break; +default: +var ret = x2.mapValue(op.value); +return this.addXObj(ret == null ? JS.SV.newS("") : ret); +} +break; +} +switch (iv) { +case 1275068418: +return this.addX(x2.toArray()); +case 805307393: +case 1073741824: +return (x2.tok == 10 && (this.chk ? this.addXStr("") : this.getAllProperties(x2, op.value))); +case 1140850696: +return this.addXStr(JS.ScriptMathProcessor.typeOf(x2)); +case 1140850706: +var keys = x2.getKeys((op.intValue & 480) == 480); +return (keys == null ? this.addXStr("") : this.addXAS(keys)); +case 1140850691: +if (x2.tok == 8) { +return this.addXFloat((x2.value).distance(JS.SV.pt0)); +}case 1275068425: +case 1140850694: +if (iv == 1140850691 && Clazz_instanceOf(x2.value,"JM.BondSet")) break; +return this.addXInt(JS.SV.sizeOf(x2)); +case 1140850692: +switch (x2.tok) { +case 11: +case 12: +s = JS.SV.sValue(x2); +s = JU.PT.rep(s.substring(1, s.length - 1), "],[", "]\n["); +break; +case 4: +s = x2.value; +break; +default: +s = JS.SV.sValue(x2); +} +s = JU.PT.rep(s, "\n\r", "\n").$replace('\r', '\n'); +return this.addXAS(JU.PT.split(s, "\n")); +case 1765808134: +switch (x2.tok) { +case 4: +case 7: +return this.addXPt(JU.CU.colorPtFromString(JS.SV.sValue(x2))); +case 2: +case 3: +return this.addXPt(this.vwr.getColorPointForPropertyValue(JS.SV.fValue(x2))); +case 8: +return this.addXStr(JU.Escape.escapeColor(JU.CU.colorPtToFFRGB(x2.value))); +default: +} +break; +case 1812599299: +return (this.chk ? this.addXStr("x") : this.getBoundBox(x2)); +} +if (this.chk) return this.addXStr(JS.SV.sValue(x2)); +if (x2.tok == 4) { +var v = JS.SV.unescapePointOrBitsetAsVariable(JS.SV.sValue(x2)); +if (!(Clazz_instanceOf(v,"JS.SV"))) return false; +x2 = v; +}if (op.tok == x2.tok) x2 = this.getX(); +return this.getPointOrBitsetOperation(op, x2); +} +x1 = this.getX(); +if (this.chk) { +if (op === JS.T.tokenAndFALSE || op === JS.T.tokenOrTRUE) this.chk = false; +return this.addX(JS.SV.newT(x1)); +}return this.binaryOp(op, x1, x2); +}); +Clazz_defineMethod(c$, "binaryOp", +function(op, x1, x2){ +var pt; +var pt4; +var m; +var s; +var f; +switch (op.tok) { +case 268439552: +case 268438528: +switch (x1.tok) { +case 10: +var bs = x1.value; +switch (x2.tok) { +case 2: +var x = x2.asInt(); +return (this.addXBool(x < 0 ? false : bs.get(x))); +case 10: +bs = JU.BSUtil.copy(bs); +bs.and(x2.value); +return this.addXBs(Clazz_instanceOf(x1.value,"JM.BondSet") ? JM.BondSet.newBS(bs) : bs); +} +break; +} +return this.addXBool(x1.asBoolean() && x2.asBoolean()); +case 268438016: +switch (x1.tok) { +case 10: +var bs = null; +switch (x2.tok) { +case 10: +bs = JU.BSUtil.copy(x1.value); +bs.or(x2.value); +break; +case 2: +bs = JU.BSUtil.copy(x1.value); +var x = x2.asInt(); +if (x >= 0) { +bs.set(x); +}break; +case 7: +bs = JU.BSUtil.copy(x1.value); +var sv = x2.value; +for (var i = sv.size(); --i >= 0; ) { +var b = sv.get(i).asInt(); +if (b >= 0) bs.set(b); +} +break; +} +if (bs == null) break; +return this.addXBs(Clazz_instanceOf(x1.value,"JM.BondSet") ? JM.BondSet.newBS(bs) : bs); +case 7: +return this.addX(JS.SV.concatList(x1, x2, false)); +case 11: +if (x2.tok == 8) { +return this.addXM4(JU.M4.newMV(x1.value, x2.value)); +}} +return this.addXBool(x1.asBoolean() || x2.asBoolean()); +case 268438017: +if (x1.tok == 10 && x2.tok == 10) { +var bs = JU.BSUtil.copy(x1.value); +bs.xor(x2.value); +return this.addXBs(Clazz_instanceOf(x1.value,"JM.BondSet") ? JM.BondSet.newBS(bs) : bs); +}var a = x1.asBoolean(); +var b = x2.asBoolean(); +return this.addXBool(a && !b || b && !a); +case 268438018: +if (x1.tok != 10 || x2.tok != 10) return false; +return this.addXBs(JU.BSUtil.toggleInPlace(JU.BSUtil.copy(x1.value), x2.value)); +case 268440322: +return this.addXBool(x1.tok == 2 && x2.tok == 2 ? x1.intValue <= x2.intValue : x1.isNaN() && x2.isNaN() || x1.asFloat() <= x2.asFloat()); +case 268440321: +return this.addXBool(x1.tok == 2 && x2.tok == 2 ? x1.intValue >= x2.intValue : x1.isNaN() && x2.isNaN() || x1.asFloat() >= x2.asFloat()); +case 268440320: +return this.addXBool(x1.tok == 2 && x2.tok == 2 ? x1.intValue > x2.intValue : x1.asFloat() > x2.asFloat()); +case 268440323: +return this.addXBool(x1.tok == 2 && x2.tok == 2 ? x1.intValue < x2.intValue : x1.asFloat() < x2.asFloat()); +case 268440324: +return this.addXBool(JS.SV.areEqual(x1, x2)); +case 268440325: +return this.addXBool(!JS.SV.areEqual(x1, x2)); +case 268440326: +return this.addXBool(JS.SV.isLike(x1, x2)); +case 268440577: +switch (x1.tok) { +case 6: +var ht = new java.util.Hashtable(x1.value); +var map = x2.getMap(); +if (map != null) ht.putAll(map); +return this.addX(JS.SV.getVariableMap(ht)); +case 2: +if (!this.isDecimal(x2)) return this.addXInt(x1.intValue + x2.asInt()); +break; +case 4: +return this.addX(JS.SV.newS(JS.SV.sValue(x1) + JS.SV.sValue(x2))); +case 8: +pt = JU.P3.newP(x1.value); +switch (x2.tok) { +case 8: +pt.add(x2.value); +return this.addXPt(pt); +case 9: +pt4 = x2.value; +pt.add(JU.P3.new3(pt4.x, pt4.y, pt4.z)); +return this.addXPt(pt); +default: +f = x2.asFloat(); +return this.addXPt(JU.P3.new3(pt.x + f, pt.y + f, pt.z + f)); +} +case 11: +switch (x2.tok) { +case 11: +m = JU.M3.newM3(x1.value); +m.add(x2.value); +return this.addXM3(m); +case 8: +return this.addXM4(JS.ScriptMathProcessor.getMatrix4f(x1.value, x2.value)); +} +break; +case 12: +switch (x2.tok) { +case 8: +var m4b = JU.M4.newM4(x1.value); +m4b.add(x2.value); +return this.addXM4(m4b); +} +break; +case 9: +var q1 = JU.Quat.newP4(x1.value); +switch (x2.tok) { +default: +return this.addXPt4(q1.add(x2.asFloat()).toPoint4f()); +case 9: +return this.addXPt4(q1.mulQ(JU.Quat.newP4(x2.value)).toPoint4f()); +} +case 7: +return this.addX(JS.SV.concatList(x1, x2, true)); +} +return this.addXFloat(x1.asFloat() + x2.asFloat()); +case 268440576: +switch (x1.tok) { +case 2: +if (!this.isDecimal(x2)) return this.addXInt(x1.intValue - x2.asInt()); +break; +case 4: +if (!this.isDecimal(x2) && !this.isDecimal(x1)) return this.addXInt(x1.asInt() - x2.asInt()); +break; +case 6: +var ht = new java.util.Hashtable(x1.value); +ht.remove(JS.SV.sValue(x2)); +return this.addX(JS.SV.getVariableMap(ht)); +case 11: +if (x2.tok != 11) break; +m = JU.M3.newM3(x1.value); +m.sub(x2.value); +return this.addXM3(m); +case 12: +if (x2.tok != 12) break; +var m4 = JU.M4.newM4(x1.value); +m4.sub(x2.value); +return this.addXM4(m4); +case 8: +pt = JU.P3.newP(x1.value); +switch (x2.tok) { +case 8: +pt.sub(x2.value); +return this.addXPt(pt); +case 9: +pt4 = x2.value; +pt.sub(JU.P3.new3(pt4.x, pt4.y, pt4.z)); +return this.addXPt(pt); +} +f = x2.asFloat(); +return this.addXPt(JU.P3.new3(pt.x - f, pt.y - f, pt.z - f)); +case 9: +var q1 = JU.Quat.newP4(x1.value); +if (x2.tok == 9) { +var q2 = JU.Quat.newP4(x2.value); +return this.addXPt4(q2.mulQ(q1.inv()).toPoint4f()); +}return this.addXPt4(q1.add(-x2.asFloat()).toPoint4f()); +} +return this.addXFloat(x1.asFloat() - x2.asFloat()); +case 1275068930: +if (x1.tok == 8 && x2.tok == 8) { +pt = x1.value; +var pt2 = x2.value; +return this.addXPt(JU.P3.new3(pt.x * pt2.x, pt.y * pt2.y, pt.z * pt2.z)); +}case 268441089: +switch (x1.tok) { +case 2: +return (this.isDecimal(x2) ? this.addXFloat(x1.intValue * x2.asFloat()) : this.addXInt(x1.intValue * x2.asInt())); +case 4: +return (this.isDecimal(x2) || this.isDecimal(x1) ? this.addXFloat(x1.asFloat() * x2.asFloat()) : this.addXInt(x1.asInt() * x2.asInt())); +} +pt = (x1.tok == 11 || x1.tok == 12 ? this.ptValue(x2, null) : x2.tok == 11 ? this.ptValue(x1, null) : null); +pt4 = (x1.tok == 12 ? this.eval.planeValue(x2) : x2.tok == 12 ? this.eval.planeValue(x1) : null); +switch (x2.tok) { +case 11: +if (pt != null) { +var m3b = JU.M3.newM3(x2.value); +m3b.transpose(); +var pt1 = JU.P3.newP(pt); +m3b.rotate(pt1); +return (x1.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz_newFloatArray(-1, [pt1.x, pt1.y, pt1.z]))) : this.addXPt(pt1)); +}if (pt4 != null) return this.addXPt4((JU.Quat.newP4(pt4).mulQ(JU.Quat.newM(x2.value))).toPoint4f()); +break; +case 12: +if (pt4 != null) { +var m4b = JU.M4.newM4(x2.value); +m4b.transpose(); +var pt41 = JU.P4.newPt(pt4); +m4b.transform(pt41); +return (x1.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz_newFloatArray(-1, [pt41.x, pt41.y, pt41.z, pt41.w]))) : this.addXPt4(pt41)); +}break; +} +switch (x1.tok) { +case 11: +var m3 = x1.value; +if (pt != null) { +var pt1 = JU.P3.newP(pt); +m3.rotate(pt1); +return (x2.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz_newFloatArray(-1, [pt1.x, pt1.y, pt1.z]))) : this.addXPt(pt1)); +}switch (x2.tok) { +case 11: +m = JU.M3.newM3(x2.value); +m.mul2(m3, m); +return this.addXM3(m); +case 9: +return this.addXM3(JU.Quat.newM(m3).mulQ(JU.Quat.newP4(x2.value)).getMatrix()); +case 7: +var l = x2.getList(); +var lnew = new JU.Lst(); +for (var i = l.size(); --i >= 0; ) { +var pt1 = JS.SV.ptValue(l.get(i)); +if (pt1 == null) return false; +pt1 = JU.P3.newP(pt1); +m3.rotate(pt1); +lnew.addLast(pt1); +} +return this.addXList(lnew); +} +f = x2.asFloat(); +var aa = new JU.A4(); +aa.setM(m3); +aa.angle *= f; +return this.addXM3( new JU.M3().setAA(aa)); +case 12: +var m4 = x1.value; +if (pt != null) { +var pt1 = JU.P3.newP(pt); +m4.rotTrans(pt1); +return (x2.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz_newFloatArray(-1, [pt1.x, pt1.y, pt1.z]))) : this.addXPt(pt1)); +}if (pt4 != null) { +m4.transform(pt4); +return (x2.tok == 7 ? this.addX(JS.SV.getVariableAF( Clazz_newFloatArray(-1, [pt4.x, pt4.y, pt4.z, pt4.w]))) : this.addXPt4(pt4)); +}switch (x2.tok) { +case 12: +var m4b = JU.M4.newM4(x2.value); +m4b.mul2(m4, m4b); +return this.addXM4(m4b); +case 7: +var l = x2.getList(); +var lnew = new JU.Lst(); +for (var i = l.size(); --i >= 0; ) { +var pt1 = JU.P3.newP(JS.SV.ptValue(l.get(i))); +m4.rotTrans(pt1); +lnew.addLast(pt1); +} +return this.addXList(lnew); +} +return this.addXFloat(NaN); +case 8: +pt = JU.P3.newP(x1.value); +switch (x2.tok) { +case 8: +var pt2 = (x2.value); +return this.addXFloat(pt.x * pt2.x + pt.y * pt2.y + pt.z * pt2.z); +} +f = x2.asFloat(); +return this.addXPt(JU.P3.new3(pt.x * f, pt.y * f, pt.z * f)); +case 9: +if (x2.tok == 9) return this.addXPt4(JU.Quat.newP4(x1.value).mulQ(JU.Quat.newP4(x2.value)).toPoint4f()); +return this.addXPt4(JU.Quat.newP4(x1.value).mul(x2.asFloat()).toPoint4f()); +} +return this.addXFloat(x1.asFloat() * x2.asFloat()); +case 268441088: +var f2; +switch (x1.tok) { +case 2: +if (x2.tok == 2 && x2.intValue != 0) return this.addXInt(Clazz_doubleToInt(x1.intValue / x2.intValue)); +var n = (this.isDecimal(x2) ? 0 : x2.asInt()); +if (n != 0) return this.addXInt(Clazz_doubleToInt(x1.intValue / n)); +break; +case 4: +var i2; +if (!this.isDecimal(x1) && !this.isDecimal(x2) && (i2 = x2.asInt()) != 0) return this.addXInt(Clazz_doubleToInt(x1.asInt() / i2)); +break; +case 8: +pt = JU.P3.newP(x1.value); +return this.addXPt((f2 = x2.asFloat()) == 0 ? JU.P3.new3(NaN, NaN, NaN) : JU.P3.new3(pt.x / f2, pt.y / f2, pt.z / f2)); +case 9: +return this.addXPt4(x2.tok == 9 ? JU.Quat.newP4(x1.value).div(JU.Quat.newP4(x2.value)).toPoint4f() : (f2 = x2.asFloat()) == 0 ? JU.P4.new4(NaN, NaN, NaN, NaN) : JU.Quat.newP4(x1.value).mul(1 / f2).toPoint4f()); +} +return this.addXFloat(x1.asFloat() / x2.asFloat()); +case 268441091: +f = x2.asFloat(); +if (x1.tok == 9) { +return (f == 0 ? this.addXPt4(JU.P4.new4(NaN, NaN, NaN, NaN)) : x2.tok == 9 ? this.addXPt4(JU.Quat.newP4(x1.value).divLeft(JU.Quat.newP4(x2.value)).toPoint4f()) : this.addXPt4(JU.Quat.newP4(x1.value).mul(1 / f).toPoint4f())); +}return this.addXInt(f == 0 ? 0 : Clazz_doubleToInt(Math.floor(x1.asFloat() / x2.asFloat()))); +case 268441603: +f = Math.pow(x1.asFloat(), x2.asFloat()); +return (x1.tok == 2 && x2.tok == 2 ? this.addXInt(Clazz_floatToInt(f)) : this.addXFloat(f)); +case 268441090: +s = null; +var n = x2.asInt(); +switch (x1.tok) { +case 1073742335: +case 1073742334: +case 2: +default: +break; +case 3: +f = x1.asFloat(); +if (n == 0) return this.addXInt(Math.round(f)); +s = JU.DF.formatDecimal(f, n); +return this.addXStr(s); +case 4: +s = x1.value; +return this.addXStr(n == 0 ? JU.PT.trim(s, "\n\t ") : n == 9999 ? s.toUpperCase() : n == -9999 ? s.toLowerCase() : n > 0 ? JU.PT.formatS(s, n, n, false, false) : JU.PT.formatS(s, n, n - 1, true, false)); +case 7: +var list = JS.SV.strListValue(x1); +for (var i = 0; i < list.length; i++) { +if (n == 0) list[i] = list[i].trim(); + else if (n > 0) list[i] = JU.PT.formatS(list[i], n, n, true, false); + else list[i] = JU.PT.formatS(s, -n, n, false, false); +} +return this.addXAS(list); +case 8: +pt = JU.P3.newP(x1.value); +this.vwr.toUnitCell(pt, JU.P3.new3(n, n, n)); +return this.addXPt(pt); +case 9: +pt4 = x1.value; +if (x2.tok == 8) return this.addXPt((JU.Quat.newP4(pt4)).transform2(x2.value, new JU.P3())); +if (x2.tok == 9) { +var v4 = JU.P4.newPt(x2.value); +(JU.Quat.newP4(pt4)).getThetaDirected(v4); +return this.addXPt4(v4); +}if (n == 0 && x2.tok == 4) { +s = " " + x2.value.toString().trim().toLowerCase() + ":"; +var i = " w:0 x:1 y:2 z:3 normal:4 eulerzxz:5 eulerzyz:6 vector:-1 theta:-2 axisx:-3 axisy:-4 axisz:-5 axisangle:-6 matrix:-9".indexOf(s); +n = (i >= 0 ? JU.PT.parseInt(" w:0 x:1 y:2 z:3 normal:4 eulerzxz:5 eulerzyz:6 vector:-1 theta:-2 axisx:-3 axisy:-4 axisz:-5 axisangle:-6 matrix:-9".substring(i + s.length)) : -99); +}switch (n) { +case 0: +return this.addXFloat(pt4.w); +case 1: +return this.addXFloat(pt4.x); +case 2: +return this.addXFloat(pt4.y); +case 3: +return this.addXFloat(pt4.z); +} +var q = JU.Quat.newP4(pt4); +switch (n) { +case 4: +return this.addXPt(JU.P3.newP(q.getNormal())); +case 5: +return this.addXAF(q.getEulerZXZ()); +case 6: +return this.addXAF(q.getEulerZYZ()); +case -1: +return this.addXPt(JU.P3.newP(q.getVector(-1))); +case -2: +return this.addXFloat(q.getTheta()); +case -3: +return this.addXPt(JU.P3.newP(q.getVector(0))); +case -4: +return this.addXPt(JU.P3.newP(q.getVector(1))); +case -5: +return this.addXPt(JU.P3.newP(q.getVector(2))); +case -6: +var ax = q.toAxisAngle4f(); +return this.addXPt4(JU.P4.new4(ax.x, ax.y, ax.z, (ax.angle * 180 / 3.141592653589793))); +case -9: +return this.addXM3(q.getMatrix()); +default: +return this.addXStr("NaN"); +} +case 11: +var mm = x1.value; +switch (n) { +case 1: +return this.addXFloat(mm.m00 + mm.m11 + mm.m22); +case 2: +return this.addXFloat(mm.determinant3()); +default: +return false; +} +case 12: +var m4 = x1.value; +switch (n) { +case 1: +var m3 = new JU.M3(); +m4.getRotationScale(m3); +return this.addXM3(m3); +case 2: +var v3 = new JU.V3(); +m4.getTranslation(v3); +return this.addXPt(JU.P3.newP(v3)); +default: +return false; +} +case 10: +return this.addXBs(JS.SV.bsSelectRange(x1, n)); +} +return this.addXInt(n == 0 ? x1.asInt() : x1.asInt() % n); +} +return true; +}, "JS.T,JS.SV,JS.SV"); +Clazz_defineMethod(c$, "isDecimal", +function(x){ +var s; +return (x.tok == 3 || x.tok == 4 && ((s = JS.SV.sValue(x).trim()).indexOf(".") >= 0 || s.indexOf("+") > 0 || s.lastIndexOf("-") > 0)); +}, "JS.SV"); +Clazz_defineMethod(c$, "ptValue", +function(x, bsRestrict){ +var pt; +switch (x.tok) { +case 8: +return x.value; +case 10: +var bs = x.value; +if (bs.isEmpty() || Clazz_instanceOf(bs,"JM.BondSet")) break; +if (bsRestrict != null) { +bs = JU.BSUtil.copy(bs); +bs.and(bsRestrict); +}var o = (bs.isEmpty() ? null : this.eval.getBitsetProperty(bs, null, 1145047049, null, null, x.value, null, false, 2147483647, false)); +return o; +case 4: +pt = JU.Escape.uP(JS.SV.sValue(x)); +if (Clazz_instanceOf(pt,"JU.P3")) return pt; +break; +case 7: +pt = JU.Escape.uP("{" + JS.SV.sValue(x).$replace(']', ' ').$replace('[', ' ') + "}"); +if (Clazz_instanceOf(pt,"JU.P3")) return pt; +break; +} +return null; +}, "JS.SV,JU.BS"); +c$.typeOf = Clazz_defineMethod(c$, "typeOf", +function(x){ +var tok = (x == null ? 0 : x.tok); +switch (tok) { +case 1073742335: +case 1073742334: +return "boolean"; +case 10: +return (Clazz_instanceOf(x.value,"JM.BondSet") ? "bondset" : "bitset"); +case 2: +case 3: +case 8: +case 9: +case 4: +case 7: +case 6: +case 15: +case 11: +case 12: +case 14: +return JS.T.astrType[tok]; +} +return "?"; +}, "JS.SV"); +Clazz_defineMethod(c$, "getAllProperties", +function(x2, abbr){ +var bs = x2.value; +var tokens; +var n = bs.cardinality(); +if (n == 0 || !abbr.endsWith("?") || (tokens = JS.T.getAtomPropertiesLike(abbr.substring(0, abbr.length - 1))) == null) return this.addXStr(""); +var ht = new java.util.Hashtable(); +var index = (n == 1 ? bs.nextSetBit(0) : 2147483647); +for (var i = tokens.size(); --i >= 0; ) { +var t = tokens.get(i); +var tok = t.tok; +switch (tok) { +case 1094717448: +case 1094713349: +continue; +default: +if (index == 2147483647) tok |= 480; +ht.put(t.value, JS.SV.getVariable(this.eval.getBitsetProperty(bs, null, tok, null, null, null, null, false, index, true))); +} +} +return this.addXMap(ht); +}, "JS.SV,~S"); +c$.getMatrix4f = Clazz_defineMethod(c$, "getMatrix4f", +function(matRotate, vTranslate){ +return JU.M4.newMV(matRotate, vTranslate == null ? new JU.V3() : JU.V3.newV(vTranslate)); +}, "JU.M3,JU.T3"); +Clazz_defineMethod(c$, "getBoundBox", +function(x2){ +if (x2.tok != 10 || Clazz_instanceOf(x2.value,"JM.BondSet")) return false; +var b = this.vwr.ms.getBoxInfo(x2.value, 1); +var pts = b.getBoundBoxPoints(true); +var list = new JU.Lst(); +for (var i = 0; i < 4; i++) list.addLast(pts[i]); + +return this.addXList(list); +}, "JS.SV"); +Clazz_defineMethod(c$, "getPointOrBitsetOperation", +function(op, x2){ +switch (x2.tok) { +case 7: +switch (op.intValue) { +case 32: +case 64: +case 96: +case 192: +case 128: +case 160: +case 1275068725: +return this.addXObj(this.eval.getMathExt().getMinMax(x2.getList(), op.intValue, true)); +case 1275334681: +return this.addX(x2.pushPop(null, null)); +case 1275068444: +case 1140850693: +return this.addX(x2.sortOrReverse(op.intValue == 1140850693 ? -2147483648 : 1)); +} +var list2 = new Array(x2.getList().size()); +for (var i = 0; i < list2.length; i++) { +var v = JS.SV.unescapePointOrBitsetAsVariable(x2.getList().get(i)); +if (!(Clazz_instanceOf(v,"JS.SV")) || !this.getPointOrBitsetOperation(op, v)) return false; +list2[i] = this.xStack[this.xPt--]; +} +return this.addXAV(list2); +case 8: +switch (op.intValue) { +case 1111492609: +case 1111492629: +return this.addXFloat((x2.value).x); +case 1111492610: +case 1111492630: +return this.addXFloat((x2.value).y); +case 1111492611: +case 1111492631: +return this.addXFloat((x2.value).z); +case 1145047049: +var pt = JU.P3.newP(x2.value); +this.vwr.toCartesian(pt, false); +return this.addXPt(pt); +case 1111492612: +case 1111492613: +case 1111492614: +case 1145047050: +var ptf = JU.P3.newP(x2.value); +this.vwr.toFractional(ptf, false); +return (op.intValue == 1145047050 ? this.addXPt(ptf) : this.addXFloat(op.intValue == 1111492612 ? ptf.x : op.intValue == 1111492613 ? ptf.y : ptf.z)); +case 1145045003: +return this.addXStr(this.vwr.getSymStatic().staticToRationalXYZ(JU.P3.newP(x2.value), " ")); +case 1111492615: +case 1111492616: +case 1111492617: +case 1145047053: +var ptfu = JU.P3.newP(x2.value); +this.vwr.toFractional(ptfu, true); +return (op.intValue == 1145047053 ? this.addXPt(ptfu) : this.addXFloat(op.intValue == 1111492615 ? ptfu.x : op.intValue == 1111492616 ? ptfu.y : ptfu.z)); +case 1111490577: +case 1111490578: +case 1111490579: +case 1145045006: +var ptu = JU.P3.newP(x2.value); +this.vwr.toUnitCell(ptu, null); +this.vwr.toFractional(ptu, false); +return (op.intValue == 1145045006 ? this.addXPt(ptu) : this.addXFloat(op.intValue == 1111490577 ? ptu.x : op.intValue == 1111490578 ? ptu.y : ptu.z)); +} +break; +case 9: +switch (op.intValue) { +case 1111492609: +case 1111492629: +return this.addXFloat((x2.value).x); +case 1111492610: +case 1111492630: +return this.addXFloat((x2.value).y); +case 1111492611: +case 1111492631: +return this.addXFloat((x2.value).z); +case 1140850705: +return this.addXFloat((x2.value).w); +} +break; +case 10: +var isAtoms = (op.intValue != 1677721602); +if (!isAtoms && Clazz_instanceOf(x2.value,"JM.BondSet")) return this.addX(x2); +var bs = x2.value; +if (isAtoms && bs.cardinality() == 1 && (op.intValue & 480) == 0) op.intValue |= 32; +var val = this.eval.getBitsetProperty(bs, null, op.intValue, null, null, null, op.value, false, x2.index, true); +return (isAtoms ? this.addXObj(val) : this.addXBs(JM.BondSet.newBS(val))); +} +return false; +}, "JS.T,JS.SV"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.ScriptError"], "JS.ScriptParam", ["java.util.Hashtable", "JU.BS", "$.CU", "$.Lst", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "JM.TickInfo", "JS.SV", "$.T", "JU.BSUtil", "$.Edge", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.contextVariables = null; +this.contextFunctions = null; +this.thisContext = null; +this.iToken = 0; +this.theTok = 0; +this.theToken = null; +this.st = null; +this.slen = 0; +this.fractionalPoint = null; +this.coordinatesAreFractional = false; +this.isBondSet = false; +Clazz_instantialize(this, arguments);}, JS, "ScriptParam", JS.ScriptError); +Clazz_defineMethod(c$, "getToken", +function(i){ +if (!this.checkToken(i)) this.error(13); +this.theToken = this.st[i]; +this.theTok = this.theToken.tok; +return this.theToken; +}, "~N"); +Clazz_defineMethod(c$, "tokAt", +function(i){ +return (i < this.slen && this.st[i] != null ? this.st[i].tok : 0); +}, "~N"); +Clazz_defineMethod(c$, "checkToken", +function(i){ +return (this.iToken = i) < this.slen; +}, "~N"); +Clazz_defineMethod(c$, "getParameter", +function(key, tokType, nullAsString){ +var v = this.getContextVariableAsVariable(key, false); +if (v == null) { +if (nullAsString) v = this.vwr.getP(key); + else if ((v = this.vwr.getPOrNull(key)) == null) return null; +}switch (tokType) { +case 1073742190: +return JS.SV.getVariable(v); +case 4: +if (!(Clazz_instanceOf(v,"JU.Lst"))) break; +var sv = v; +var sb = new JU.SB(); +for (var i = 0; i < sv.size(); i++) sb.append(sv.get(i).asString()).appendC('\n'); + +return sb.toString(); +} +return JS.SV.oValue(v); +}, "~S,~N,~B"); +Clazz_defineMethod(c$, "getVarParameter", +function($var, orReturnName){ +var v = this.getContextVariableAsVariable($var, false); +if (v != null) return (orReturnName ? v.asString() : JS.SV.oValue(v)); +var val = this.vwr.getP($var); +return (orReturnName && ("" + val).length == 0 ? $var : val); +}, "~S,~B"); +Clazz_defineMethod(c$, "getContextVariableAsVariable", +function($var, isLocal){ +if ($var.length == 0 || $var.equals("expressionBegin")) return null; +if ($var.charAt(0) == '_') { +var isCallers = $var.equalsIgnoreCase("_callers"); +if (isCallers || $var.equalsIgnoreCase("_caller")) { +var sc = this.thisContext; +var h0 = new java.util.Hashtable(); +var h = null; +var h1; +while (sc != null) { +if (sc.isFunction) { +if (h == null) { +h = h0; +} else { +h1 = new java.util.Hashtable(); +h.put("_caller", JS.SV.newV(6, h1)); +h = h1; +}h.putAll(sc.vars); +h.put("_name", JS.SV.newS(sc.functionName)); +if (!isCallers) break; +}sc = sc.parentContext; +} +return JS.SV.newV(6, h0); +}if ($var.equalsIgnoreCase("_name")) { +var sc = this.thisContext; +while (sc != null) { +if (sc.isFunction) { +return JS.SV.newS(JS.SV.sValue(sc.statement[0])); +}sc = sc.parentContext; +} +return JS.SV.newS(""); +}}$var = $var.toLowerCase(); +var v = (this.contextVariables == null ? null : this.contextVariables.get($var)); +if (v == null && !isLocal && this.thisContext != null) v = this.thisContext.getVariable($var); +return (v != null && v.tok == 1275068418 ? v.arrayToList(v) : v); +}, "~S,~B"); +Clazz_defineMethod(c$, "paramAsStr", +function(i){ +this.getToken(i); +if (this.theToken == null) this.error(13); +return JS.SV.sValue(this.theToken); +}, "~N"); +Clazz_defineMethod(c$, "stringParameter", +function(index){ +if (!this.checkToken(index) || this.getToken(index).tok != 4) this.error(41); +return this.theToken.value; +}, "~N"); +Clazz_defineMethod(c$, "stringParameterSet", +function(i){ +switch (this.tokAt(i)) { +case 4: +var s = this.stringParameter(i); +if (s.startsWith("[\"")) { +var o = this.vwr.evaluateExpression(s); +if ((typeof(o)=='string')) return JU.PT.split(o, "\n"); +}return Clazz_newArray(-1, [s]); +case 1073742195: +i += 2; +break; +case 268437504: +++i; +break; +case 7: +return JS.SV.strListValue(this.getToken(i)); +default: +this.invArg(); +} +var tok; +var v = new JU.Lst(); +while ((tok = this.tokAt(i)) != 268437505) { +switch (tok) { +case 268436992: +break; +case 4: +v.addLast(this.stringParameter(i)); +break; +default: +case 0: +this.invArg(); +} +i++; +} +this.iToken = i; +var n = v.size(); +var sParams = new Array(n); +for (var j = 0; j < n; j++) { +sParams[j] = v.get(j); +} +return sParams; +}, "~N"); +Clazz_defineMethod(c$, "objectNameParameter", +function(index){ +if (!this.checkToken(index)) this.error(37); +return this.paramAsStr(index); +}, "~N"); +Clazz_defineMethod(c$, "atomCenterOrCoordinateParameter", +function(i, ret){ +switch (this.getToken(i).tok) { +case 10: +case 1073742325: +var bs = (this).atomExpression(this.st, i, 0, true, false, ret, true); +if (bs == null) { +if (ret == null || !(Clazz_instanceOf(ret[0],"JU.P3"))) this.invArg(); +return ret[0]; +}if (ret != null) { +if (ret.length == 2 && Clazz_instanceOf(ret[1],"JU.BS")) { +bs = JU.BSUtil.copy(bs); +bs.and(ret[1]); +}ret[0] = bs; +}return (bs.cardinality() == 1 ? this.vwr.ms.at[bs.nextSetBit(0)] : this.vwr.ms.getAtomSetCenter(bs)); +case 1073742332: +case 8: +return this.getPoint3f(i, true, true); +} +this.invArg(); +return null; +}, "~N,~A"); +Clazz_defineMethod(c$, "isCenterParameter", +function(i){ +var tok = this.tokAt(i); +return (tok == 1073742330 || tok == 1073742332 || tok == 1073742325 || tok == 8 || tok == 10); +}, "~N"); +Clazz_defineMethod(c$, "centerParameter", +function(i, ret){ +return this.centerParameterForModel(i, -2147483648, ret); +}, "~N,~A"); +Clazz_defineMethod(c$, "centerParameterForModel", +function(i, modelIndex, ret){ +var center = null; +if (this.checkToken(i)) { +switch (this.getToken(i).tok) { +case 1814695966: +return this.getUnitCellCenter(); +case 1073742330: +var id = this.objectNameParameter(++i); +var index = -2147483648; +if (this.tokAt(i + 1) == 268437504) { +index = (this).parameterExpressionList(-i - 1, -1, true).get(0).asInt(); +if (this.getToken(--this.iToken).tok != 268437505) this.invArg(); +}if (this.chk) return new JU.P3(); +if (this.tokAt(i + 1) == 1073742336 && (this.tokAt(i + 2) == 1140850691 || this.tokAt(i + 2) == 1140850694)) { +index = 2147483647; +this.iToken = i + 2; +}if ((center = (this).getObjectCenter(id, index, modelIndex)) == null) this.errorStr(12, id); +break; +case 10: +case 1073742325: +case 1073742332: +case 8: +if (ret == null) ret = new Array(1); +center = this.atomCenterOrCoordinateParameter(i, ret); +break; +} +}if (center == null) this.error(11); +return center; +}, "~N,~N,~A"); +Clazz_defineMethod(c$, "getUnitCellCenter", +function(){ +var center = new JU.P3(); +var uc = this.vwr.getCurrentUnitCell(); +if (uc != null) { +var pts = uc.getUnitCellVerticesNoOffset(); +var off = uc.getCartesianOffset(); +for (var j = 0; j < 8; j++) { +center.add(pts[j]); +center.add(off); +} +}center.scale(0.125); +return center; +}); +Clazz_defineMethod(c$, "planeParameter", +function(i, isBest){ +var vTemp = new JU.V3(); +var vTemp2 = new JU.V3(); +var plane = null; +var pt1 = null; +var pt2 = null; +var pt3 = null; +var have3 = false; +if (this.tokAt(i) == 134217750) i++; +var bestPoints = null; +var isNegated = (this.tokAt(i) == 268440576); +if (isNegated) i++; +try { +if (i < this.slen) { +switch (this.getToken(i).tok) { +case 1073742330: +var id = this.objectNameParameter(++i); +if (this.chk) return new JU.P4(); +plane = (this).getPlaneForObject(id, vTemp); +break; +case 1111492629: +if (!this.checkToken(++i) || this.getToken(i++).tok != 268440324) this.evalError("x=?", null); +plane = JU.P4.new4(1, 0, 0, -this.floatParameter(i)); +break; +case 1111492630: +if (!this.checkToken(++i) || this.getToken(i++).tok != 268440324) this.evalError("y=?", null); +plane = JU.P4.new4(0, 1, 0, -this.floatParameter(i)); +break; +case 1111492631: +if (!this.checkToken(++i) || this.getToken(i++).tok != 268440324) this.evalError("z=?", null); +plane = JU.P4.new4(0, 0, 1, -this.floatParameter(i)); +break; +case 1073741824: +case 4: +case 9: +plane = this.planeValue(this.theToken); +break; +case 1073742332: +case 8: +if (!this.isPoint3f(i)) { +plane = this.getPoint4f(i); +break; +}case 10: +case 1073742325: +if (isBest) { +var bs = this.getAtomsStartingAt(i); +bestPoints = new Array(bs.cardinality()); +for (var p = 0, j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +bestPoints[p++] = this.vwr.ms.at[j]; +} +} else { +pt1 = this.atomCenterOrCoordinateParameter(i, null); +if (this.getToken(++this.iToken).tok == 268436992) ++this.iToken; +pt2 = this.atomCenterOrCoordinateParameter(this.iToken, null); +if (this.getToken(++this.iToken).tok == 268436992) ++this.iToken; +if (this.isFloatParameter(this.iToken)) { +var frac = this.floatParameter(this.iToken); +plane = new JU.P4(); +vTemp.sub2(pt2, pt1); +vTemp.scale(frac * 2); +JU.Measure.getBisectingPlane(pt1, vTemp, vTemp2, vTemp, plane); +} else { +pt3 = this.atomCenterOrCoordinateParameter(this.iToken, null); +i = this.iToken; +have3 = true; +}}break; +default: +if (this.isArrayParameter(i)) { +if (isBest) { +bestPoints = this.getPointArray(i, -1, false); +} else { +var list = this.getPointOrCenterVector(this.getToken(i)); +var n = list.size(); +if (n != 3) this.invArg(); +pt1 = list.get(0); +pt2 = list.get(1); +pt3 = list.get(2); +have3 = true; +}}} +if (isBest) { +plane = new JU.P4(); +JU.Measure.calcBestPlaneThroughPoints(bestPoints, -1, plane); +} else if (have3) { +plane = new JU.P4(); +var norm = new JU.P3(); +var w = JU.Measure.getNormalThroughPoints(pt1, pt2, pt3, norm, vTemp); +plane.set4(norm.x, norm.y, norm.z, w); +}if (!this.chk && JU.Logger.debugging) JU.Logger.debug(" defined plane: " + plane); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +plane = null; +} else { +throw e; +} +} +if (plane == null) this.errorMore(38, "{a b c d}", "\"xy\" \"xz\" \"yz\" \"x=...\" \"y=...\" \"z=...\" \"ab\" \"bc\" \"ac\" \"ab1\" \"bc1\" \"ac1\"", "$xxxxx"); +if (isNegated) { +plane.scale4(-1); +}return plane; +}, "~N,~B"); +Clazz_defineMethod(c$, "getAtomsStartingAt", +function(i){ +var bs = new JU.BS(); +i--; +while (this.tokAt(++i) == 10 || this.tokAt(i) == 1073742325) { +bs.or((this).atomExpressionAt(i)); +i = this.iToken; +} +return bs; +}, "~N"); +Clazz_defineMethod(c$, "getPointOrCenterVector", +function(t){ +var data = new JU.Lst(); +var pt; +var bs; +var pts = (t).getList(); +if (pts == null) this.invArg(); +for (var j = 0; j < pts.size(); j++) { +if ((pt = JS.SV.ptValue(pts.get(j))) != null) { +data.addLast(pt); +} else if ((bs = JS.SV.getBitSet(pts.get(j), true)) != null) { +data.addLast(bs.cardinality() == 1 ? JU.P3.newP(this.vwr.ms.at[bs.nextSetBit(0)]) : this.vwr.ms.getAtomSetCenter(bs)); +} else { +this.invArg(); +}} +return data; +}, "JS.T"); +Clazz_defineMethod(c$, "hklParameter", +function(i, pts, allowOffset){ +if (!this.chk && this.vwr.getCurrentUnitCell() == null) this.error(33); +var pt = this.getPointOrPlane(i, 71); +var offset = NaN; +if (allowOffset) { +offset = (Clazz_instanceOf(pt,"JU.P4") ? (pt).w : NaN); +if (this.tokAt(this.iToken + 1) == 1073742066) { +this.iToken++; +offset = this.floatParameter(++this.iToken); +}}var p = this.getHklPlane(pt, offset, pts); +if (p == null) this.error(3); +if (!this.chk && JU.Logger.debugging) JU.Logger.debug("defined plane: " + p); +return p; +}, "~N,JU.Lst,~B"); +Clazz_defineMethod(c$, "getHklPlane", +function(pt, offset, pts){ +var pt1 = JU.P3.new3(pt.x == 0 ? 1 : 1 / pt.x, 0, 0); +var pt2 = JU.P3.new3(0, pt.y == 0 ? 1 : 1 / pt.y, 0); +var pt3 = JU.P3.new3(0, 0, pt.z == 0 ? 1 : 1 / pt.z); +if (pt.x == 0 && pt.y == 0 && pt.z == 0) { +return null; +} else if (pt.x == 0 && pt.y == 0) { +pt1.set(1, 0, pt3.z); +pt2.set(0, 1, pt3.z); +} else if (pt.y == 0 && pt.z == 0) { +pt2.set(pt1.x, 0, 1); +pt3.set(pt1.x, 1, 0); +} else if (pt.z == 0 && pt.x == 0) { +pt3.set(0, pt2.y, 1); +pt1.set(1, pt2.y, 0); +} else if (pt.x == 0) { +pt1.set(1, pt2.y, 0); +} else if (pt.y == 0) { +pt2.set(0, 1, pt3.z); +} else if (pt.z == 0) { +pt3.set(pt1.x, 0, 1); +}this.vwr.toCartesian(pt1, false); +this.vwr.toCartesian(pt2, false); +this.vwr.toCartesian(pt3, false); +var v3 = new JU.V3(); +var plane = JU.Measure.getPlaneThroughPoints(pt1, pt2, pt3, new JU.V3(), v3, new JU.P4()); +if (!Float.isNaN(offset)) { +plane.w = -offset; +if (pts != null) { +JU.Measure.getPlaneProjection(pt1, plane, pt1, v3); +JU.Measure.getPlaneProjection(pt2, plane, pt2, v3); +JU.Measure.getPlaneProjection(pt3, plane, pt3, v3); +}}if (pts != null) { +pts.addLast(pt1); +pts.addLast(pt2); +pts.addLast(pt3); +}return plane; +}, "JU.T3,~N,JU.Lst"); +Clazz_defineMethod(c$, "getPointOrPlane", +function(index, mode){ +var coord = Clazz_newFloatArray (6, 0); +var code555 = Clazz_newIntArray (6, 0); +var useCell555P4 = false; +var n = 0; +var minDim = ((mode & 7) == 4 ? 4 : 3); +var maxDim = ((mode & 7) == 3 ? 3 : 4); +var implicitFractional = ((mode & 64) != 0); +var integerOnly = ((mode & 8) != 0); +var isOK = true; +try { +this.coordinatesAreFractional = implicitFractional; +if (this.tokAt(index) == 8) { +if (minDim <= 3 && maxDim >= 3) return this.getToken(index).value; +isOK = false; +return null; +}if (this.tokAt(index) == 9) { +if (minDim <= 4 && maxDim >= 4) return this.getToken(index).value; +isOK = false; +return null; +}var multiplier = 1; +out : for (var i = index; i < this.slen; i++) { +switch (this.getToken(i).tok) { +case 1073742332: +case 268436992: +case 268438528: +case 268439552: +break; +case 1073742338: +break out; +case 268440576: +multiplier = -1; +break; +case 1073742363: +if (n == 6) { +isOK = false; +return null; +}coord[n++] = this.theToken.intValue; +multiplier = -1; +break; +case 2: +case 1073742362: +if (n == 6 || this.theToken.intValue == 2147483647) this.invArg(); +if (implicitFractional && this.theToken.intValue > 999999999) useCell555P4 = true; +code555[n] = this.theToken.intValue; +coord[n++] = this.theToken.intValue * multiplier; +multiplier = 1; +break; +case 268441088: +case 1073742358: +if (!implicitFractional && (mode & 16) == 0) { +isOK = false; +return null; +}if (this.theTok == 268441088) this.getToken(++i); +n--; +if (n < 0 || integerOnly) { +isOK = false; +return null; +}if (Clazz_instanceOf(this.theToken.value, Integer) || this.theTok == 2) { +coord[n++] /= (this.theToken.intValue == 2147483647 ? (this.theToken.value).intValue() : this.theToken.intValue); +} else if (Clazz_instanceOf(this.theToken.value, Float)) { +coord[n++] /= (this.theToken.value).floatValue(); +}this.coordinatesAreFractional = true; +break; +case 1073742357: +case 1073741824: +coord[n++] = NaN; +break; +case 3: +case 1073742359: +if (integerOnly) { +isOK = false; +return null; +}if (n == 6) { +isOK = false; +return null; +}coord[n++] = (this.theToken.value).floatValue(); +break; +default: +this.iToken--; +break out; +} +} +if (n < minDim || n > maxDim) { +isOK = false; +return null; +}if (n == 3) { +if (useCell555P4) { +return JU.P4.new4(coord[0], coord[1], coord[2], (code555[0] % 1000) * 1000 + (code555[1] % 1000) + 1000000); +}var pt = JU.P3.new3(coord[0], coord[1], coord[2]); +if (this.coordinatesAreFractional && (mode & 32) != 0) { +this.fractionalPoint = JU.P3.newP(pt); +if (!this.chk) this.vwr.toCartesian(pt, false); +}return pt; +}if (n == 4) { +if (implicitFractional || !this.coordinatesAreFractional) { +var plane = JU.P4.new4(coord[0], coord[1], coord[2], coord[3]); +return plane; +}}isOK = false; +return null; +} finally { +if (!isOK && (mode & 128) == 0) this.invArg(); +} +}, "~N,~N"); +Clazz_defineMethod(c$, "isPoint3f", +function(i){ +var itok = this.tokAt(i); +if (itok == 0) return false; +var isOK; +if ((isOK = (itok == 8)) || itok == 9 || this.isFloatParameter(i + 1) && this.isFloatParameter(i + 2) && this.isFloatParameter(i + 3) && this.isFloatParameter(i + 4)) return isOK; +this.ignoreError = true; +var t = this.iToken; +isOK = true; +try { +if (this.getPoint3f(i, true, false) == null) isOK = false; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +isOK = false; +} else { +throw e; +} +} +this.ignoreError = false; +this.iToken = t; +return isOK; +}, "~N"); +Clazz_defineMethod(c$, "getPoint3f", +function(i, allowFractional, throwE){ +return this.getPointOrPlane(i, 3 | 32 | (allowFractional ? 16 : 0) | (throwE ? 0 : 128)); +}, "~N,~B,~B"); +Clazz_defineMethod(c$, "getFractionalPoint", +function(i){ +return this.getPointOrPlane(i, 71); +}, "~N"); +Clazz_defineMethod(c$, "getPoint4f", +function(i){ +return this.getPointOrPlane(i, 4); +}, "~N"); +Clazz_defineMethod(c$, "xypParameter", +function(index){ +var tok = this.tokAt(index); +if (tok == 1073742195) tok = this.tokAt(++index); +if (tok != 268437504 || !this.isFloatParameter(++index)) return null; +var pt = new JU.P3(); +pt.x = this.floatParameter(index); +if (this.tokAt(++index) == 268436992) index++; +if (!this.isFloatParameter(index)) return null; +pt.y = this.floatParameter(index); +var isPercent = (this.tokAt(++index) == 268441090); +if (isPercent) ++index; +if (this.tokAt(index) != 268437505) return null; +this.iToken = index; +pt.z = (isPercent ? -1 : 1) * 3.4028235E38; +return pt; +}, "~N"); +Clazz_defineMethod(c$, "xyzpParameter", +function(index){ +var tok = this.tokAt(index); +if (tok == 1073742195) tok = this.tokAt(++index); +if (tok != 268437504 || !this.isFloatParameter(++index)) return null; +var pt = new JU.P4(); +pt.x = this.floatParameter(index); +if (this.tokAt(++index) == 268436992) index++; +if (!this.isFloatParameter(index)) return null; +pt.y = this.floatParameter(index); +if (this.tokAt(++index) == 268436992) index++; +if (!this.isFloatParameter(index)) return null; +pt.z = this.floatParameter(index); +var isPercent = (this.tokAt(++index) == 268441090); +if (isPercent) ++index; +if (this.tokAt(index) != 268437505) return null; +this.iToken = index; +pt.w = (isPercent ? -1 : 1) * 3.4028235E38; +return pt; +}, "~N"); +Clazz_defineMethod(c$, "optParameterAsString", +function(i){ +return (i >= this.slen ? "" : this.paramAsStr(i)); +}, "~N"); +Clazz_defineMethod(c$, "intParameter", +function(index){ +if (this.checkToken(index)) if (this.getToken(index).tok == 2) return this.theToken.intValue; +this.error(20); +return 0; +}, "~N"); +Clazz_defineMethod(c$, "isFloatParameter", +function(index){ +switch (this.tokAt(index)) { +case 2: +case 3: +return true; +} +return false; +}, "~N"); +Clazz_defineMethod(c$, "floatParameter", +function(index){ +if (this.checkToken(index)) { +this.getToken(index); +switch (this.theTok) { +case 1073742363: +return -this.theToken.intValue; +case 1073742362: +case 2: +return this.theToken.intValue; +case 1073742359: +case 3: +return (this.theToken.value).floatValue(); +} +}this.error(34); +return 0; +}, "~N"); +Clazz_defineMethod(c$, "getPointArray", +function(i, nPoints, allowNull){ +if (nPoints == 2147483647) nPoints = -1; +var points = (nPoints < 0 ? null : new Array(nPoints)); +var vp = (nPoints < 0 ? new JU.Lst() : null); +var tok = (i < 0 ? 7 : this.getToken(i++).tok); +switch (tok) { +case 7: +var v = (this.theToken).getList(); +if (nPoints >= 0 && v.size() != nPoints) this.invArg(); +nPoints = v.size(); +if (points == null) points = new Array(nPoints); +for (var j = 0; j < nPoints; j++) if ((points[j] = JS.SV.ptValue(v.get(j))) == null && !allowNull) this.invArg(); + +return points; +case 1073742195: +tok = this.tokAt(i++); +break; +} +if (tok != 268437504) this.invArg(); +var n = 0; +while (tok != 268437505 && tok != 0) { +tok = this.getToken(i).tok; +switch (tok) { +case 0: +case 268437505: +break; +case 268436992: +i++; +break; +default: +if (nPoints >= 0 && n == nPoints) { +tok = 0; +break; +}var pt = this.centerParameter(i, null); +if (points == null) vp.addLast(pt); + else points[n] = pt; +n++; +i = this.iToken + 1; +} +} +if (tok != 268437505) this.invArg(); +if (points == null) points = vp.toArray( new Array(vp.size())); +if (nPoints > 0 && points[nPoints - 1] == null) this.invArg(); +return points; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "listParameter", +function(i, nMin, nMax){ +return this.listParameter4(i, nMin, nMax, false); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "listParameter4", +function(i, nMin, nMax, allowString){ +var v = new JU.Lst(); +var tok = this.tokAt(i); +if (tok == 1073742195) tok = this.tokAt(++i); +var haveBrace = (tok == 1073742332); +var haveSquare = (tok == 268437504); +if (haveBrace || haveSquare) i++; +var n = 0; +while (n < nMax) { +tok = this.tokAt(i); +if (haveBrace && tok == 1073742338 || haveSquare && tok == 268437505) break; +switch (tok) { +case 268436992: +case 268440576: +case 1073742332: +case 1073742338: +break; +case 4: +if (allowString) v.addLast(this.stringParameter(i)); +break; +case 9: +var pt4 = this.getPoint4f(i); +v.addLast(Float.$valueOf(pt4.x)); +v.addLast(Float.$valueOf(pt4.y)); +v.addLast(Float.$valueOf(pt4.z)); +v.addLast(Float.$valueOf(pt4.w)); +n += 4; +break; +default: +if (this.isCenterParameter(i)) { +var pt = this.centerParameter(i, null); +i = this.iToken; +v.addLast(Float.$valueOf(pt.x)); +v.addLast(Float.$valueOf(pt.y)); +v.addLast(Float.$valueOf(pt.z)); +n += 3; +break; +}v.addLast(Float.$valueOf(this.floatParameter(i))); +n++; +} +i += (n == nMax && haveSquare && this.tokAt(i + 1) == 1073742338 ? 2 : 1); +} +if (haveBrace && this.tokAt(i++) != 1073742338 || haveSquare && this.tokAt(i++) != 268437505 || n < nMin || n > nMax) this.invArg(); +this.iToken = i - 1; +return v; +}, "~N,~N,~N,~B"); +Clazz_defineMethod(c$, "floatParameterSet", +function(i, nMin, nMax){ +var v = null; +var fparams = null; +var n = 0; +var s = null; +this.iToken = i; +switch (this.tokAt(i)) { +case 4: +s = JS.SV.sValue(this.st[i]); +s = JU.PT.replaceWithCharacter(s, "{},[]\"'", ' '); +fparams = JU.PT.parseFloatArray(s); +n = fparams.length; +break; +case 7: +fparams = JS.SV.flistValue(this.st[i], 0); +n = fparams.length; +break; +default: +v = this.listParameter(i, nMin, nMax); +n = v.size(); +} +if (n < nMin || n > nMax) this.invArg(); +if (fparams == null) { +fparams = Clazz_newFloatArray (n, 0); +for (var j = 0; j < n; j++) fparams[j] = (v.get(j)).floatValue(); + +}return fparams; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "isArrayParameter", +function(i){ +switch (this.tokAt(i)) { +case 7: +case 11: +case 12: +case 1073742195: +case 268437504: +return true; +} +return false; +}, "~N"); +Clazz_defineMethod(c$, "getQuaternionParameter", +function(i, bsAtoms, divideByCurrent){ +switch (this.tokAt(i)) { +case 7: +var sv = (this.getToken(i)).getList(); +var p4 = null; +if (sv.size() == 0 || (p4 = JS.SV.pt4Value(sv.get(0))) == null) this.invArg(); +return JU.Quat.newP4(p4); +case 1073741864: +return (this.chk ? null : this.vwr.getOrientation(1073741864, (divideByCurrent ? "best" : ""), bsAtoms, null)); +default: +return JU.Quat.newP4(this.getPoint4f(i)); +} +}, "~N,JU.BS,~B"); +Clazz_defineMethod(c$, "checkLast", +function(i){ +return this.checkLength(i + 1) - 1; +}, "~N"); +Clazz_defineMethod(c$, "checkLength", +function(length){ +if (length >= 0) return this.checkLengthErrorPt(length, 0); +if (this.slen > -length) { +this.iToken = -length; +this.bad(); +}return this.slen; +}, "~N"); +Clazz_defineMethod(c$, "checkLengthErrorPt", +function(length, errorPt){ +if (this.slen != length) { +this.iToken = errorPt > 0 ? errorPt : this.slen; +if (errorPt > 0) this.invArg(); + else this.bad(); +}return this.slen; +}, "~N,~N"); +Clazz_defineMethod(c$, "checkLength23", +function(){ +this.iToken = this.slen; +if (this.slen != 2 && this.slen != 3) this.bad(); +return this.slen; +}); +Clazz_defineMethod(c$, "checkLength34", +function(){ +this.iToken = this.slen; +if (this.slen != 3 && this.slen != 4) this.bad(); +return this.slen; +}); +Clazz_defineMethod(c$, "modelNumberParameter", +function(index){ +var iFrame = 0; +var useModelNumber = false; +switch (this.tokAt(index)) { +case 2: +useModelNumber = true; +case 3: +iFrame = this.getToken(index).intValue; +break; +case 4: +iFrame = JU.Edge.getFloatEncodedInt(this.stringParameter(index)); +break; +default: +this.invArg(); +} +return this.vwr.ms.getModelNumberIndex(iFrame, useModelNumber, true); +}, "~N"); +Clazz_defineMethod(c$, "getMadParameter", +function(){ +var mad = 1; +var itok = this.getToken(1).tok; +switch (itok) { +case 1073742072: +(this).restrictSelected(false, false); +case 1073742335: +break; +case 1073742334: +mad = 0; +break; +case 2: +var radiusRasMol = this.intParameterRange(1, 0, 750); +mad = radiusRasMol * 4 * 2; +break; +case 3: +var f = this.floatParameterRange(1, -3, 3); +mad = (Float.isNaN(f) ? 2147483647 : Clazz_doubleToInt(Math.floor(f * 1000 * 2))); +if (mad < 0) { +(this).restrictSelected(false, false); +mad = -mad; +}break; +default: +this.error(6); +} +return mad; +}); +Clazz_defineMethod(c$, "intParameterRange", +function(i, min, max){ +var val = this.intParameter(i); +if (val < min || val > max) { +this.integerOutOfRange(min, max); +return 2147483647; +}return val; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "floatParameterRange", +function(i, min, max){ +var val = this.floatParameter(i); +if (val < min || val > max) { +this.numberOutOfRange(min, max); +return NaN; +}return val; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getPointVector", +function(t, i){ +switch (t.tok) { +case 10: +return this.vwr.ms.getAtomPointVector(t.value); +case 7: +var data = new JU.Lst(); +var pt; +var pts = (t).getList(); +for (var j = 0; j < pts.size(); j++) { +var v = pts.get(j); +if ((pt = (v.tok == 10 ? this.vwr.ms.getAtomSetCenter(JS.SV.getBitSet(v, false)) : JS.SV.ptValue(v))) == null) return null; +data.addLast(pt); +} +return data; +} +if (i > 0) return this.vwr.ms.getAtomPointVector((this).atomExpressionAt(i)); +return null; +}, "JS.T,~N"); +Clazz_defineMethod(c$, "isColorParam", +function(i){ +var tok = this.tokAt(i); +return tok != 0 && (tok == 570425378 || tok == 1073742195 || tok == 268437504 || tok == 7 || tok == 8 || this.isPoint3f(i) || (tok == 4 || JS.T.tokAttr(tok, 1073741824)) && JU.CU.getArgbFromString(this.st[i].value) != 0); +}, "~N"); +Clazz_defineMethod(c$, "getArgbParam", +function(index){ +return this.getArgbParamOrNone(index, false); +}, "~N"); +Clazz_defineMethod(c$, "getArgbParamLast", +function(index, allowNone){ +var icolor = this.getArgbParamOrNone(index, allowNone); +this.checkLast(this.iToken); +return icolor; +}, "~N,~B"); +Clazz_defineMethod(c$, "getArgbParamOrNone", +function(index, allowNone){ +var pt = null; +if (this.checkToken(index)) { +switch (this.getToken(index).tok) { +default: +if (!JS.T.tokAttr(this.theTok, 1073741824)) break; +case 570425378: +case 4: +return JU.CU.getArgbFromString(this.paramAsStr(index)); +case 1073742195: +return this.getColorTriad(index + 2); +case 268437504: +return this.getColorTriad(++index); +case 7: +var rgb = JS.SV.flistValue(this.theToken, 3); +if (rgb != null && rgb.length != 3) pt = JU.P3.new3(rgb[0], rgb[1], rgb[2]); +break; +case 8: +pt = this.theToken.value; +break; +case 1073742332: +pt = this.getPoint3f(index, false, true); +break; +case 1073742333: +if (allowNone) return 0; +} +}if (pt == null) this.error(8); +return JU.CU.colorPtToFFRGB(pt); +}, "~N,~B"); +Clazz_defineMethod(c$, "getColorTriad", +function(i){ +var colors = Clazz_newFloatArray (3, 0); +var n = 0; +var hex = ""; +this.getToken(i); +var pt = null; +var val = 0; +out : switch (this.theTok) { +case 2: +case 1073742362: +case 3: +for (; i < this.slen; i++) { +switch (this.getToken(i).tok) { +case 268436992: +continue; +case 1073741824: +if (n != 1 || colors[0] != 0) this.error(4); +hex = "0" + this.paramAsStr(i); +break out; +case 3: +if (n > 2) this.error(4); +val = this.floatParameter(i); +break; +case 2: +if (n > 2) this.error(4); +val = this.theToken.intValue; +break; +case 1073742362: +if (n > 2) this.error(4); +val = (this.theToken.value).intValue() % 256; +break; +case 268437505: +if (n != 3) this.error(4); +--i; +pt = JU.P3.new3(colors[0], colors[1], colors[2]); +break out; +default: +this.error(4); +} +colors[n++] = val; +} +this.error(4); +break; +case 8: +pt = this.theToken.value; +break; +case 1073741824: +hex = this.paramAsStr(i); +break; +default: +this.error(4); +} +if (this.getToken(++i).tok != 268437505) this.error(4); +if (pt != null) return JU.CU.colorPtToFFRGB(pt); +if ((n = JU.CU.getArgbFromString("[" + hex + "]")) == 0) this.error(4); +return n; +}, "~N"); +Clazz_defineMethod(c$, "tickParamAsStr", +function(index, allowUnitCell, allowScale, allowFirst){ +this.iToken = index - 1; +if (this.tokAt(index) != 1073742164) return null; +var tickInfo; +var str = " "; +switch (this.tokAt(index + 1)) { +case 1111492629: +case 1111492630: +case 1111492631: +str = this.paramAsStr(++index).toLowerCase(); +break; +case 1073741824: +this.invArg(); +} +if (this.tokAt(++index) == 1073742333) { +tickInfo = new JM.TickInfo(null); +tickInfo.type = str.charAt(0); +this.iToken = index; +return tickInfo; +}tickInfo = new JM.TickInfo(this.getPointOrPlane(index, 19)); +if (this.coordinatesAreFractional || this.tokAt(this.iToken + 1) == 1814695966) { +tickInfo.scale = JU.P3.new3(NaN, NaN, NaN); +allowScale = false; +}if (this.tokAt(this.iToken + 1) == 1814695966) this.iToken++; +tickInfo.type = str.charAt(0); +if (this.tokAt(this.iToken + 1) == 1287653388) tickInfo.tickLabelFormats = this.stringParameterSet(this.iToken + 2); +if (!allowScale) return tickInfo; +if (this.tokAt(this.iToken + 1) == 536875059) { +if (this.isFloatParameter(this.iToken + 2)) { +var f = this.floatParameter(this.iToken + 2); +tickInfo.scale = JU.P3.new3(f, f, f); +} else { +tickInfo.scale = this.getPoint3f(this.iToken + 2, true, true); +}}if (allowFirst) if (this.tokAt(this.iToken + 1) == 1073741942) tickInfo.first = this.floatParameter(this.iToken + 2); +return tickInfo; +}, "~N,~B,~B,~B"); +Clazz_defineMethod(c$, "setBooleanProperty", +function(key, value){ +if (!this.chk) this.vwr.setBooleanProperty(key, value); +}, "~S,~B"); +Clazz_defineMethod(c$, "setIntProperty", +function(key, value){ +if (!this.chk) this.vwr.setIntProperty(key, value); +return true; +}, "~S,~N"); +Clazz_defineMethod(c$, "setFloatProperty", +function(key, value){ +if (!this.chk) this.vwr.setFloatProperty(key, value); +return true; +}, "~S,~N"); +Clazz_defineMethod(c$, "setStringProperty", +function(key, value){ +if (!this.chk) this.vwr.setStringProperty(key, value); +}, "~S,~S"); +Clazz_defineMethod(c$, "checkHKL", +function(pt){ +if (Math.abs(pt.x) < 1 || Math.abs(pt.y) < 1 || Math.abs(pt.z) < 1 || pt.x != Clazz_floatToInt(pt.x) || pt.y != Clazz_floatToInt(pt.y) || pt.z != Clazz_floatToInt(pt.z)) this.invArg(); +return pt; +}, "JU.T3"); +Clazz_defineMethod(c$, "planeValue", +function(x){ +var pt; +var sym = null; +var offset = NaN; +var vc = null; +switch (x.tok) { +case 9: +return x.value; +case 7: +break; +case 4: +case 1073741824: +var s = x.value; +var isMinus = s.startsWith("-"); +var f = (isMinus ? -1 : 1); +if (isMinus) s = s.substring(1); +var p4 = null; +var len = s.length; +var mode = (len < 2 ? -1 : "xy yz xz x= y= z= ab bc ac a= b= c=".indexOf(s.substring(0, 2).toLowerCase())); +if (mode >= 18 && (sym = this.vwr.getCurrentUnitCell()) == null) { +mode -= 18; +}var isab = (s.indexOf("=") < 0); +if (len > 2) { +if (!isab) offset = -f * JU.PT.parseFloat(s.substring(2)); + else if (Float.isNaN(offset) && mode >= 18 && s.charAt(2) == '1') offset = -1; +}switch (mode) { +case 0: +return JU.P4.new4(1, 1, 0, f); +case 3: +return JU.P4.new4(0, 1, 1, f); +case 6: +return JU.P4.new4(1, 0, 1, f); +case 9: +p4 = JU.P4.new4(1, 0, 0, -f * JU.PT.parseFloat(s.substring(2))); +break; +case 12: +p4 = JU.P4.new4(0, 1, 0, -f * JU.PT.parseFloat(s.substring(2))); +break; +case 15: +p4 = JU.P4.new4(0, 0, 1, -f * JU.PT.parseFloat(s.substring(2))); +break; +case 18: +if (Float.isNaN(offset)) offset = 0; +case 33: +p4 = this.getHklPlane(vc = JU.P3.new3(0, 0, 1), 0, null); +p4.scale4(f = -f); +break; +case 21: +if (Float.isNaN(offset)) offset = 0; +case 27: +p4 = this.getHklPlane(vc = JU.P3.new3(1, 0, 0), 0, null); +p4.scale4(-(f = -f)); +break; +case 24: +if (Float.isNaN(offset)) offset = 0; +case 30: +p4 = this.getHklPlane(vc = JU.P3.new3(0, 1, 0), 0, null); +p4.scale4(-f); +break; +} +if (p4 == null || Float.isNaN(p4.w)) break; +if (sym != null && !Float.isNaN(offset)) { +sym.toCartesian(vc, true); +if (isab || !isMinus) { +offset = -offset; +}p4.w = vc.dot(p4) * offset; +if (!isab || offset != 0) p4.scale(-1); +}return p4; +default: +return null; +} +pt = JU.Escape.uP(JS.SV.sValue(x)); +return (Clazz_instanceOf(pt,"JU.P4") ? pt : null); +}, "JS.T"); +Clazz_defineMethod(c$, "setScriptArguments", +function(params, isCallback){ +if (this.contextVariables == null) this.contextVariables = new java.util.Hashtable(); +this.contextVariables.put("_arguments", (params == null ? JS.SV.getVariableAI( Clazz_newIntArray(-1, [])) : isCallback ? JS.SV.newV(1275068418, params) : JS.SV.getVariableList(params))); +this.contextVariables.put("_argcount", JS.SV.newI(params == null ? 0 : isCallback ? (params).length : (params).size())); +}, "~O,~B"); +Clazz_defineMethod(c$, "getCallbackParameter", +function(n){ +var v = (this.contextVariables == null ? null : this.contextVariables.get("_arguments")); +if (v == null && (this.thisContext == null || (v = this.thisContext.getVariable("_arguments")) == null)) return null; +if (v.tok == 1275068418) { +if (n == -2147483648) { +return v.arrayToList(v); +}var params = v.value; +return (--n < 0 || n >= params.length ? null : (params[n] = JS.SV.getVariable(params[n]))); +}var list = v.getList(); +return (n == -2147483648 ? v : --n < 0 || n >= list.size() ? JS.SV.newV(7, new JU.Lst()) : list.get(n)); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.processName = null; +this.context = null; +Clazz_instantialize(this, arguments);}, JS, "ScriptProcess", null); +Clazz_makeConstructor(c$, +function(name, context){ +this.processName = name; +this.context = context; +}, "~S,JS.ScriptContext"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ScriptProcessRunnable", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.parallelProcessor = null; +this.process = null; +this.processLock = null; +this.shapeManager = null; +Clazz_instantialize(this, arguments);}, JS, "ScriptProcessRunnable", null, Runnable); +Clazz_makeConstructor(c$, +function(parallelProcessor, process, lock, shapeManager){ +this.parallelProcessor = parallelProcessor; +this.process = process; +this.processLock = lock; +this.shapeManager = shapeManager; +}, "JS.ScriptParallelProcessor,JS.ScriptProcess,~O,JV.ShapeManager"); +Clazz_overrideMethod(c$, "run", +function(){ +try { +if (this.parallelProcessor.error == null) { +if (JU.Logger.debugging) JU.Logger.debug("Running process " + this.process.processName + " " + this.process.context.pc + " - " + (this.process.context.pcEnd - 1)); +this.parallelProcessor.eval(this.process.context, this.shapeManager); +if (JU.Logger.debugging) JU.Logger.debug("Process " + this.process.processName + " complete"); +}} catch (e$$) { +if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +e.printStackTrace(); +} +} else if (Clazz_exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.parallelProcessor.clearShapeManager(er); +} +} else { +throw e$$; +} +} finally { +{ +--this.parallelProcessor.counter; +this.processLock.notifyAll(); +}} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["J.thread.JmolThread"], "JS.ScriptQueueThread", ["JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.scriptManager = null; +this.startedByCommandThread = false; +this.pt = 0; +Clazz_instantialize(this, arguments);}, JS, "ScriptQueueThread", J.thread.JmolThread); +Clazz_makeConstructor(c$, +function(scriptManager, vwr, startedByCommandThread, pt){ +this.setViewer(vwr, "QueueThread" + pt); +this.scriptManager = scriptManager; +this.vwr = vwr; +this.startedByCommandThread = startedByCommandThread; +this.pt = pt; +}, "JS.ScriptManager,JV.Viewer,~B,~N"); +Clazz_overrideMethod(c$, "run1", +function(mode){ +while (true) switch (mode) { +case -1: +mode = 0; +break; +case 0: +if (this.stopped || this.scriptManager.getScriptQueue().size() == 0) { +mode = -2; +break; +}if (!this.runNextScript() && !this.runSleep(100, 0)) return; +break; +case -2: +this.scriptManager.queueThreadFinished(this.pt); +return; +} + +}, "~N"); +Clazz_defineMethod(c$, "runNextScript", +function(){ +var queue = this.scriptManager.getScriptQueue(); +if (queue.size() == 0) return false; +var scriptItem = this.scriptManager.getScriptItem(false, this.startedByCommandThread); +if (scriptItem == null) return false; +if (JU.Logger.debugging) { +JU.Logger.debug("Queue[" + this.pt + "][" + queue.size() + "] scripts; running: " + scriptItem.get(0)); +}queue.removeItemAt(0); +this.scriptManager.runScriptFromThread(scriptItem); +if (queue.size() == 0) { +return false; +}return true; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ScriptTokenParser", ["JU.Lst", "$.P3", "$.PT", "J.i18n.GT", "JS.T", "JU.Edge", "$.Logger", "$.SimpleUnitCell"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.htUserFunctions = null; +this.script = null; +this.isStateScript = false; +this.lineCurrent = 0; +this.iCommand = 0; +this.ichCurrentCommand = 0; +this.ichComment = 0; +this.ichEnd = 0; +this.ichToken = 0; +this.theToken = null; +this.lastFlowCommand = null; +this.tokenCommand = null; +this.lastToken = null; +this.tokenAndEquals = null; +this.theTok = 0; +this.nTokens = 0; +this.tokCommand = 0; +this.ptNewSetModifier = 0; +this.isNewSet = false; +this.haveMacro = false; +this.logMessages = true; +this.atokenInfix = null; +this.itokenInfix = 0; +this.isSetBrace = false; +this.isMathExpressionCommand = false; +this.isSetOrDefine = false; +this.ltokenPostfix = null; +this.isEmbeddedExpression = false; +this.isCommaAsOrAllowed = false; +this.theValue = null; +this.haveString = false; +this.residueSpecCodeGenerated = false; +this.errorMessage = null; +this.errorMessageUntranslated = null; +this.errorLine = null; +this.errorType = null; +Clazz_instantialize(this, arguments);}, JS, "ScriptTokenParser", null); +Clazz_defineMethod(c$, "compileExpressions", +function(){ +var isScriptExpression = ((this.tokCommand == 134222850 || this.tokCommand == 4124) && this.tokAt(2) == 268435968); +this.isEmbeddedExpression = (isScriptExpression || (this.tokCommand != 0 && (this.tokCommand != 134320141 && this.tokCommand != 102436 && this.tokCommand != 364558 && this.tokCommand != 102412 || this.tokenCommand.intValue != 2147483647) && this.tokCommand != 102409 && !JS.T.tokAttr(this.tokCommand, 12288) && (this.nTokens > 2 || !JS.T.tokAttr(this.tokCommand, 20480)))); +this.isMathExpressionCommand = (this.tokCommand == 1073741824 || isScriptExpression || JS.T.tokAttr(this.tokCommand, 36864)); +var checkExpression = this.isEmbeddedExpression || (JS.T.tokAttr(this.tokCommand, 12288)); +if (this.tokAt(1) == 1073742330 && JS.T.tokAttr(this.tokCommand, 12288)) checkExpression = false; +if (checkExpression && !this.compileExpression()) return false; +var size = this.atokenInfix.length; +var nDefined = 0; +for (var i = 1; i < size; i++) { +if (this.tokAt(i) == 12290) nDefined++; +} +size -= nDefined; +if (this.isNewSet) { +if (size == 1) { +this.atokenInfix[0] = JS.T.tv(134320141, 0, this.atokenInfix[0].value); +this.isNewSet = false; +}}if ((this.isNewSet || this.isSetBrace) && this.ptNewSetModifier != 2147483647 && size < this.ptNewSetModifier + 2) { +if (!this.isNewSet || !this.haveMacro) return this.commandExpected(); +this.htUserFunctions.put(this.atokenInfix[0].value, Boolean.TRUE); +}return (size == 1 || !JS.T.tokAttr(this.tokCommand, 262144) ? true : this.error(0)); +}); +Clazz_defineMethod(c$, "compileExpression", +function(){ +var firstToken = (this.isSetOrDefine && !this.isSetBrace ? 2 : 1); +this.ltokenPostfix = new JU.Lst(); +this.itokenInfix = 0; +var tokenBegin = null; +var tok = this.tokAt(1); +switch (this.tokCommand) { +case 12290: +var i = (this.tokAt(1) == 12290 ? 2 : 1); +if (this.tokAt(i) == 2 && this.tokAt(i + 1) == 1073742336 && this.tokAt(i + 3) == 268440324) { +this.tokCommand = 36867; +this.isSetBrace = true; +this.ptNewSetModifier = i + 3; +this.isMathExpressionCommand = true; +this.isEmbeddedExpression = true; +this.addTokenToPostfixToken(JS.T.tokenSetProperty); +this.addTokenToPostfixToken(JS.T.tokenExpressionBegin); +for (var j = 0; j++ <= i; ) this.addNextToken(); + +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +firstToken = 0; +}break; +case 12295: +if (tok == 1677721602) firstToken = 2; +break; +case 1275082241: +switch (tok) { +case 1073742335: +case 1073742334: +case 268436992: +tok = this.tokAt(++firstToken); +break; +} +case 12294: +case 1610625028: +switch (tok) { +case 1275069441: +case 1073742119: +tok = this.tokAt(++firstToken); +break; +} +if (tok == 1086324742 && !JS.T.tokAttr(this.tokAt(firstToken + 1), 268435456)) firstToken++; +} +for (var i = 0; i < firstToken && this.addNextToken(); i++) { +} +while (this.moreTokens()) { +if (this.isEmbeddedExpression) { +while (!this.isExpressionNext()) { +if (this.tokPeekIs(1073741824) && !(this.tokCommand == 134223363 && this.itokenInfix == 1)) { +var name = this.atokenInfix[this.itokenInfix].value; +var t = JS.T.getTokenFromName(name); +if (t != null) if (!this.isMathExpressionCommand && this.lastToken.tok != 12290 || (this.lastToken.tok == 1073742336 || this.tokAt(this.itokenInfix + 1) == 268435968) && !this.isUserFunction(name)) { +this.atokenInfix[this.itokenInfix] = t; +}}if (!this.addNextToken()) break; +} +if (!this.moreTokens()) break; +}if (this.lastToken.tok == 12290) { +if (!this.clauseDefine(true, false)) return false; +continue; +}if (!this.isMathExpressionCommand) this.addTokenToPostfixToken(tokenBegin = JS.T.o(1073742325, "implicitExpressionBegin")); +if (!this.clauseOr(this.isCommaAsOrAllowed || !this.isMathExpressionCommand && this.tokPeekIs(268435968))) return false; +if (!this.isMathExpressionCommand && !(this.isEmbeddedExpression && this.lastToken === JS.T.tokenCoordinateEnd)) { +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +}if (this.moreTokens()) { +if (this.tokCommand != 1275082241 && this.tokCommand != 12291 && !this.isEmbeddedExpression) return this.error(5); +if (this.tokCommand == 1275082241) { +tokenBegin.intValue = 0; +this.tokCommand = 0; +this.isEmbeddedExpression = true; +this.isMathExpressionCommand = true; +this.isCommaAsOrAllowed = false; +}}} +this.atokenInfix = this.ltokenPostfix.toArray( new Array(this.ltokenPostfix.size())); +return true; +}); +Clazz_defineMethod(c$, "isUserFunction", +function(name){ +name = name.toLowerCase(); +return (!this.isStateScript && (this.vwr.isFunction(name) || this.htUserFunctions.containsKey(name))); +}, "~S"); +Clazz_defineMethod(c$, "isExpressionNext", +function(){ +return this.tokPeekIs(1073742332) && !(this.tokAt(this.itokenInfix + 1) == 4 && this.tokAt(this.itokenInfix + 2) == 268436482) || !this.isMathExpressionCommand && this.tokPeekIs(268435968); +}); +c$.tokenAttr = Clazz_defineMethod(c$, "tokenAttr", +function(token, tok){ +return token != null && JS.T.tokAttr(token.tok, tok); +}, "JS.T,~N"); +Clazz_defineMethod(c$, "moreTokens", +function(){ +return (this.itokenInfix < this.atokenInfix.length); +}); +Clazz_defineMethod(c$, "tokAt", +function(i){ +return (i < this.atokenInfix.length ? this.atokenInfix[i].tok : 0); +}, "~N"); +Clazz_defineMethod(c$, "tokPeek", +function(){ +return (this.itokenInfix >= this.atokenInfix.length ? 0 : this.atokenInfix[this.itokenInfix].tok); +}); +Clazz_defineMethod(c$, "tokPeekIs", +function(tok){ +return (this.tokAt(this.itokenInfix) == tok); +}, "~N"); +Clazz_defineMethod(c$, "intPeek", +function(){ +return (this.itokenInfix >= this.atokenInfix.length ? 2147483647 : this.atokenInfix[this.itokenInfix].intValue); +}); +Clazz_defineMethod(c$, "valuePeek", +function(){ +return (this.moreTokens() ? this.atokenInfix[this.itokenInfix].value : ""); +}); +Clazz_defineMethod(c$, "tokenNext", +function(){ +return (this.itokenInfix >= this.atokenInfix.length ? null : this.atokenInfix[this.itokenInfix++]); +}); +Clazz_defineMethod(c$, "tokenNextTok", +function(tok){ +var token = this.tokenNext(); +return (token != null && token.tok == tok); +}, "~N"); +Clazz_defineMethod(c$, "returnToken", +function(){ +this.itokenInfix--; +return false; +}); +Clazz_defineMethod(c$, "getToken", +function(){ +this.theValue = ((this.theToken = this.tokenNext()) == null ? null : this.theToken.value); +return this.theToken; +}); +Clazz_defineMethod(c$, "getNumericalToken", +function(){ +return (this.getToken() != null && (this.theToken.tok == 2 || this.theToken.tok == 3)); +}); +Clazz_defineMethod(c$, "floatValue", +function(){ +switch (this.theToken.tok) { +case 2: +return this.theToken.intValue; +case 3: +return (this.theValue).floatValue(); +} +return 0; +}); +Clazz_defineMethod(c$, "addTokenToPostfix", +function(tok, value){ +return this.addTokenToPostfixToken(JS.T.o(tok, value)); +}, "~N,~O"); +Clazz_defineMethod(c$, "addTokenToPostfixInt", +function(tok, intValue, value){ +return this.addTokenToPostfixToken(JS.T.tv(tok, intValue, value)); +}, "~N,~N,~O"); +Clazz_defineMethod(c$, "addTokenToPostfixToken", +function(token){ +if (token == null) return false; +if (this.logMessages) JU.Logger.debug("addTokenToPostfix" + token); +if (token.tok == 268437504 && (this.lastToken.tok == 1073742336 || this.lastToken.tok == 1073742337)) { +var ipt = this.ltokenPostfix.size() - 1; +this.ltokenPostfix.removeItemAt(ipt); +this.ltokenPostfix.addLast(JS.T.tokenRightParen); +var pcount = 0; +var tok; +for (var i = this.ltokenPostfix.size(); --i >= 0 && pcount >= 0; ) { +switch (tok = this.ltokenPostfix.get(i).tok) { +case 268435969: +case 268437505: +pcount++; +break; +case 268435968: +case 268437504: +pcount--; +var tok2; +if (pcount == 1 && (tok2 = this.ltokenPostfix.get(i - 1).tok) != 268435969 && tok2 != 268437505) { +ipt = (tok == 268437504 ? i - 1 : i); +pcount = -10; +}break; +default: +tok2 = (i == 0 ? 0 : this.ltokenPostfix.get(i - 1).tok); +if (tok2 == 1073742336 || tok2 == 1073742337) { +ipt = i - 1; +break; +}if (i == ipt - 1) { +ipt = i; +pcount = -10; +}break; +} +} +if (pcount == -10) { +this.ltokenPostfix.add(ipt, JS.T.tokenLeftParen); +}}this.ltokenPostfix.addLast(token); +this.lastToken = token; +return true; +}, "JS.T"); +Clazz_defineMethod(c$, "addNextToken", +function(){ +return this.addTokenToPostfixToken(this.tokenNext()); +}); +Clazz_defineMethod(c$, "addNextTokenIf", +function(tok){ +return (this.tokPeekIs(tok) && this.addNextToken()); +}, "~N"); +Clazz_defineMethod(c$, "addSubstituteTokenIf", +function(tok, token){ +if (!this.tokPeekIs(tok)) return false; +this.itokenInfix++; +return this.addTokenToPostfixToken(token); +}, "~N,JS.T"); +Clazz_defineMethod(c$, "clauseOr", +function(allowCommaAsOr){ +this.haveString = false; +if (!this.clauseAnd()) return false; +if (this.isEmbeddedExpression && this.lastToken.tok == 1073742326) return true; +var tok; +while ((tok = this.tokPeek()) == 268438016 || tok == 268438017 || tok == 268438018 || allowCommaAsOr && tok == 268436992) { +if (tok == 268436992 && !this.haveString) this.addSubstituteTokenIf(268436992, JS.T.tokenOr); + else this.addNextToken(); +if (!this.clauseAnd()) return false; +if (allowCommaAsOr && (this.lastToken.tok == 1073742338 || this.lastToken.tok == 10)) this.haveString = true; +} +return true; +}, "~B"); +Clazz_defineMethod(c$, "clauseAnd", +function(){ +if (!this.clauseNot()) return false; +if (this.isEmbeddedExpression && this.lastToken.tok == 1073742326) return true; +while (this.tokPeekIs(268438528)) { +this.addNextToken(); +if (!this.clauseNot()) return false; +} +return true; +}); +Clazz_defineMethod(c$, "clauseNot", +function(){ +if (this.tokPeekIs(268439040)) { +this.addNextToken(); +return this.clauseNot(); +}return (this.clausePrimitive()); +}); +Clazz_defineMethod(c$, "clausePrimitive", +function(){ +var tok = this.tokPeek(); +switch (tok) { +case 1073742195: +this.itokenInfix++; +return this.clausePrimitive(); +case 0: +return this.error(4); +case 1073742327: +case 10: +case 268441088: +case 136314895: +case 2097160: +case 2097159: +case 2097162: +case 1073742331: +case 1073742333: +case 2097184: +return this.addNextToken(); +case 4: +this.haveString = true; +return this.addNextToken(); +case 3: +return this.addTokenToPostfixInt(1073742359, this.fixModelSpec(this.getToken()), this.theValue); +case 1094713349: +case 1094713350: +return this.clauseCell(tok); +case 134217736: +case 1275203608: +return this.clauseConnected(tok == 1275203608); +case 134218756: +case 134218757: +return this.clauseSubstructure(); +case 134217759: +case 134353926: +return this.clauseWithin(tok == 134217759); +case 12290: +return this.clauseDefine(false, false); +case 1677721602: +case 1745489939: +this.addNextToken(); +if (this.tokPeekIs(10)) this.addNextToken(); + else if (this.tokPeekIs(12290)) return this.clauseDefine(false, false); +return true; +case 268435968: +this.addNextToken(); +if (!this.clauseOr(true)) return false; +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ")"); +return this.checkForItemSelector(true); +case 1073742332: +return this.checkForCoordinate(this.isMathExpressionCommand); +default: +if (this.clauseResidueSpec()) return true; +if (this.isError()) return false; +if (JS.T.tokAttr(tok, 1077936128)) { +var itemp = this.itokenInfix; +var isOK = this.clauseComparator(true); +if (isOK || this.itokenInfix != itemp) return isOK; +if (tok == 1237320707) { +return this.clauseSubstructure(); +}}return this.addNextToken(); +} +}); +Clazz_defineMethod(c$, "checkForCoordinate", +function(isImplicitExpression){ +var isCoordinate = false; +var pt = this.ltokenPostfix.size(); +if (isImplicitExpression) { +this.addTokenToPostfixToken(JS.T.tokenExpressionBegin); +this.tokenNext(); +} else if (this.isEmbeddedExpression) { +this.tokenNext(); +pt--; +} else { +this.addNextToken(); +}var isHash = this.tokPeekIs(4); +if (isHash) { +isImplicitExpression = false; +this.returnToken(); +this.ltokenPostfix.removeItemAt(this.ltokenPostfix.size() - 1); +this.addNextToken(); +var nBrace = 1; +while (nBrace != 0) { +if (this.tokPeekIs(1073742332)) { +if (this.isExpressionNext()) { +this.addTokenToPostfixToken(JS.T.o(1073742325, "implicitExpressionBegin")); +if (!this.clauseOr(false)) return false; +if (this.lastToken !== JS.T.tokenCoordinateEnd) { +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +}} else { +nBrace++; +}}if (this.tokPeekIs(1073742338)) nBrace--; +this.addNextToken(); +} +} else { +if (!this.tokPeekIs(1073742338) && !this.clauseOr(false)) return false; +var n = 1; +while (!this.tokPeekIs(1073742338)) { +var haveComma = this.addNextTokenIf(268436992); +if (!this.clauseOr(false)) return (haveComma || n < 3 ? false : this.errorStr(15, "}")); +n++; +} +isCoordinate = (n >= 2); +}if (isCoordinate && (isImplicitExpression || this.isEmbeddedExpression)) { +this.ltokenPostfix.set(pt, JS.T.tokenCoordinateBegin); +this.addTokenToPostfixToken(JS.T.tokenCoordinateEnd); +this.tokenNext(); +} else if (isImplicitExpression) { +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +this.tokenNext(); +} else if (this.isEmbeddedExpression) { +if (!isHash) this.tokenNext(); +} else { +this.addNextToken(); +}return this.checkForItemSelector(!isHash); +}, "~B"); +Clazz_defineMethod(c$, "checkForItemSelector", +function(allowNumeric){ +var tok; +if ((tok = this.tokAt(this.itokenInfix + 1)) == 268437504 || allowNumeric && tok == 1073742332) return true; +while (true) { +if (!this.addNextTokenIf(268437504)) break; +if (!this.clauseItemSelector()) return false; +if (!this.addNextTokenIf(268437505)) return this.errorStr(15, "]"); +} +return true; +}, "~B"); +Clazz_defineMethod(c$, "clauseWithin", +function(isWithin){ +this.addNextToken(); +if (!this.addNextTokenIf(268435968)) return false; +if (this.getToken() == null) return false; +var distance = 3.4028235E38; +var key = null; +var allowComma = isWithin; +var tok; +var tok0 = this.theToken.tok; +if (!isWithin) { +tok = -1; +for (var i = this.itokenInfix; tok != 0; i++) { +switch (tok = this.tokAt(i)) { +case 268436992: +tok = 0; +break; +case 1073742332: +case 268435968: +case 268435969: +distance = 100; +this.returnToken(); +tok0 = tok = 0; +break; +} +} +}switch (tok0) { +case 268440576: +if (this.getToken() == null) return false; +if (this.theToken.tok != 2) return this.error(12); +distance = -this.theToken.intValue; +break; +case 2: +case 3: +distance = this.floatValue(); +break; +case 12290: +this.addTokenToPostfixToken(this.theToken); +if (!this.clauseDefine(true, false)) return false; +key = ""; +allowComma = false; +break; +} +if (isWithin && distance == 3.4028235E38) switch (tok0) { +case 12290: +break; +case 1094713350: +case 1094713349: +this.addTokenToPostfix(4, this.theValue); +this.clauseCell(8); +key = ""; +break; +case 1111490587: +case 1073742128: +case 134218756: +case 134218757: +case 1237320707: +case 1073741925: +case 1073742189: +this.addTokenToPostfix(4, this.theValue); +if (!this.addNextTokenIf(268436992)) return false; +allowComma = false; +tok = this.tokPeek(); +switch (tok) { +case 0: +return false; +case 4: +this.addNextToken(); +key = ""; +break; +case 12290: +if (!this.clauseDefine(false, true)) return false; +key = ""; +break; +default: +return false; +} +break; +case 1073742328: +allowComma = false; +case 1086326785: +case 1086326786: +case 1073741863: +case 1812599299: +case 1086326788: +case 1073742329: +case 1086326789: +case 1086324742: +case 1814695966: +case 136314895: +case 1094717454: +case 1094713360: +case 134217750: +case 134219777: +case 1094713362: +case 1086324744: +case 2097184: +case 1094713366: +case 1639976963: +case 4: +case 1648363544: +key = this.theValue; +break; +default: +key = (this.theValue).toLowerCase(); +break; +} +if (key == null) this.addTokenToPostfix(3, Float.$valueOf(distance)); + else if (key.length > 0) this.addTokenToPostfix(4, key); +var done = false; +while (!done) { +if (tok0 != 0 && !this.addNextTokenIf(268436992)) break; +if (tok0 == 0) tok0 = 134353926; +var isCoordOrPlane = false; +tok = this.tokPeek(); +if (isWithin) { +switch (tok0) { +case 2: +case 3: +if (tok == 1073742335 || tok == 1073742334) { +this.addTokenToPostfixToken(this.getToken()); +if (!this.addNextTokenIf(268436992)) break; +tok = this.tokPeek(); +}break; +} +if (key == null) { +switch (tok) { +case 134219777: +case 1073742329: +case 134217750: +isCoordOrPlane = true; +this.addNextToken(); +break; +case 1073742330: +this.getToken(); +this.getToken(); +this.addTokenToPostfix(4, "$" + this.theValue); +done = true; +break; +case 1086324742: +case 1648363544: +case 1814695966: +this.getToken(); +this.addTokenToPostfix(4, JS.T.nameOf(tok)); +break; +case 1073742332: +this.returnToken(); +isCoordOrPlane = true; +this.addTokenToPostfixToken(JS.T.getTokenFromName(distance == 3.4028235E38 ? "plane" : "coord")); +} +if (!done) this.addNextTokenIf(268436992); +}}tok = this.tokPeek(); +if (done) break; +if (isCoordOrPlane) { +while (!this.tokPeekIs(268435969)) { +switch (this.tokPeek()) { +case 0: +return this.error(4); +case 268435968: +this.addTokenToPostfixToken(JS.T.tokenExpressionBegin); +this.addNextToken(); +if (!this.clauseOr(false)) return this.errorIntStr2(18, "WITHIN", ": ?"); +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ", / )"); +this.addTokenToPostfixToken(JS.T.tokenExpressionEnd); +break; +case 12290: +if (!this.clauseDefine(false, false)) return false; +break; +default: +this.addTokenToPostfixToken(this.getToken()); +} +} +} else if (!this.clauseOr(allowComma)) { +}} +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ")"); +return true; +}, "~B"); +Clazz_defineMethod(c$, "clauseConnected", +function(isPolyhedra){ +this.addNextToken(); +if (!this.addNextTokenIf(268435968)) { +this.addTokenToPostfixToken(JS.T.tokenLeftParen); +this.addTokenToPostfixToken(JS.T.tokenRightParen); +return true; +}while (true) { +if (this.addNextTokenIf(2)) { +if (!this.addNextTokenIf(268436992)) { +break; +}if (isPolyhedra) { +this.returnToken(); +break; +}} else if (isPolyhedra && (this.addNextTokenIf(4) || this.addNextTokenIf(1073741824))) { +break; +}if (this.addNextTokenIf(2)) if (!this.addNextTokenIf(268436992)) break; +if (this.addNextTokenIf(3)) if (!this.addNextTokenIf(268436992)) break; +if (this.addNextTokenIf(3)) if (!this.addNextTokenIf(268436992)) break; +var o = this.getToken().value; +var strOrder = ((typeof(o)=='string') ? o : " "); +var intType = JU.Edge.getBondOrderFromString(strOrder); +if (intType == 131071) { +this.returnToken(); +} else { +this.addTokenToPostfix(4, strOrder); +if (!this.addNextTokenIf(268436992)) break; +}if (this.addNextTokenIf(268435969)) return true; +if (!this.clauseOr(this.tokPeekIs(268435968))) return false; +if (this.addNextTokenIf(268435969)) return true; +if (!this.addNextTokenIf(268436992)) return false; +if (!this.clauseOr(this.tokPeekIs(268435968))) return false; +break; +} +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ")"); +return true; +}, "~B"); +Clazz_defineMethod(c$, "clauseSubstructure", +function(){ +this.addNextToken(); +if (!this.addNextTokenIf(268435968)) return false; +if (this.tokPeekIs(12290)) { +if (!this.clauseDefine(false, true)) return false; +} else if (!this.addNextTokenIf(4)) { +return this.errorStr(15, "\"...\""); +}if (this.addNextTokenIf(268436992)) if (!this.clauseOr(this.tokPeekIs(268435968))) return false; +if (!this.addNextTokenIf(268435969)) return this.errorStr(15, ")"); +return true; +}); +Clazz_defineMethod(c$, "clauseItemSelector", +function(){ +var tok; +var nparen = 0; +while ((tok = this.tokPeek()) != 0 && tok != 268437505) { +this.addNextToken(); +if (tok == 268437504) nparen++; +if (this.tokPeek() == 268437505 && nparen-- > 0) this.addNextToken(); +} +return true; +}); +Clazz_defineMethod(c$, "clauseComparator", +function(isOptional){ +var tokenAtomProperty = this.tokenNext(); +var tokenComparator = this.tokenNext(); +if (!JS.ScriptTokenParser.tokenAttr(tokenComparator, 268435712)) { +if (!isOptional) return this.errorStr(15, "== != < > <= >="); +if (tokenComparator != null) this.returnToken(); +this.returnToken(); +return false; +}if (JS.ScriptTokenParser.tokenAttr(tokenAtomProperty, 1086324736) && tokenComparator.tok != 268440324 && tokenComparator.tok != 268440326 && tokenComparator.tok != 268440325) return this.errorStr(15, "== !="); +if (this.tokPeek() == 268437504) { +this.getToken(); +this.addTokenToPostfixToken(JS.T.tokenLeftParen); +while (true) { +if (!this.addCompare(tokenAtomProperty, tokenComparator)) return false; +if (this.tokPeek() == 268436992) this.getToken(); + else if (this.tokPeek() == 268437505) break; +this.addTokenToPostfixToken(tokenComparator.tok == 268440325 ? JS.T.tokenAnd : JS.T.tokenOr); +} +this.getToken(); +this.addTokenToPostfixToken(JS.T.tokenRightParen); +return true; +}return this.addCompare(tokenAtomProperty, tokenComparator); +}, "~B"); +Clazz_defineMethod(c$, "addCompare", +function(tokenAtomProperty, tokenComparator){ +if (this.getToken() == null) return this.errorStr(17, "" + this.valuePeek()); +var isNegative = (this.theToken.tok == 268440576); +if (isNegative && this.getToken() == null) return this.error(12); +switch (this.theToken.tok) { +case 2: +case 3: +case 1073741824: +case 4: +case 1073742332: +case 12290: +break; +default: +if (!JS.T.tokAttr(this.theToken.tok, 1073741824)) return this.error(13); +} +this.addTokenToPostfixInt(tokenComparator.tok, tokenAtomProperty.tok, tokenComparator.value + (isNegative ? " -" : "")); +if (tokenAtomProperty.tok == 1715472409) this.addTokenToPostfixToken(tokenAtomProperty); +if (this.theToken.tok == 1073742332) { +this.returnToken(); +return this.clausePrimitive(); +}this.addTokenToPostfixToken(this.theToken); +if (this.theToken.tok == 12290) return this.clauseDefine(true, false); +return true; +}, "JS.T,JS.T"); +Clazz_defineMethod(c$, "clauseCell", +function(tok){ +var cell = new JU.P3(); +this.tokenNext(); +if (tok != 8) { +if (!this.tokenNextTok(268440324)) return this.errorStr(15, "="); +}if (this.getToken() == null) return this.error(3); +if (this.theToken.tok == 2) { +JU.SimpleUnitCell.ijkToPoint3f(this.theToken.intValue, cell, 1, 0); +} else { +if (this.theToken.tok != 1073742332 || !this.getNumericalToken()) return this.error(3); +cell.x = this.floatValue(); +if (this.tokPeekIs(268436992)) this.tokenNext(); +if (!this.getNumericalToken()) return this.error(3); +cell.y = this.floatValue(); +if (this.tokPeekIs(268436992)) this.tokenNext(); +if (!this.getNumericalToken() || !this.tokenNextTok(1073742338)) return this.error(3); +cell.z = this.floatValue(); +}return this.addTokenToPostfix(tok, cell); +}, "~N"); +Clazz_defineMethod(c$, "clauseDefine", +function(haveToken, forceString){ +if (!haveToken) { +var token = this.tokenNext(); +if (forceString) token = JS.T.tokenDefineString; +this.addTokenToPostfixToken(token); +}if (this.tokPeekIs(0)) return this.error(4); +if (!this.addSubstituteTokenIf(1073742332, JS.T.tokenExpressionBegin)) { +if (this.tokPeek() == 12290) this.addNextToken(); +return this.addNextToken() && this.checkForItemSelector(true); +}while (this.moreTokens() && !this.tokPeekIs(1073742338)) { +if (this.tokPeekIs(1073742332)) { +if (!this.checkForCoordinate(true)) return false; +} else { +this.addNextToken(); +}} +return this.addSubstituteTokenIf(1073742338, JS.T.tokenExpressionEnd) && this.checkForItemSelector(true); +}, "~B,~B"); +Clazz_defineMethod(c$, "generateResidueSpecCode", +function(token){ +if (this.residueSpecCodeGenerated) this.addTokenToPostfixToken(JS.T.tokenAndSpec); +this.addTokenToPostfixToken(token); +this.residueSpecCodeGenerated = true; +return true; +}, "JS.T"); +Clazz_defineMethod(c$, "clauseResidueSpec", +function(){ +var tok = this.tokPeek(); +this.residueSpecCodeGenerated = false; +var checkResNameSpec = false; +switch (tok) { +case 0: +case 2097156: +case 2097174: +return false; +case 2: +case 268436482: +case 268441090: +case 5: +break; +case 268441089: +case 268437504: +case 1073741824: +checkResNameSpec = true; +break; +default: +if (JS.T.tokAttr(tok, 268435712)) return false; +var str = "" + this.valuePeek(); +checkResNameSpec = (str.length == 2 || str.length == 3); +if (!checkResNameSpec) return false; +} +var specSeen = false; +if (checkResNameSpec) { +if (!this.clauseResNameSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 2 || tok == 268441089 || tok == 5) { +if (!this.clauseSequenceSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 268436482) { +if (!this.clauseChainSpec(tok)) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 1073742336) { +if (!this.clauseAtomSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 268441090) { +if (!this.clauseAlternateSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (tok == 268441088) { +if (!this.clauseModelSpec()) return false; +specSeen = true; +tok = this.tokPeek(); +}if (!specSeen) return this.error(14); +if (!this.residueSpecCodeGenerated) { +this.addTokenToPostfixToken(JS.T.tokenAll); +}return true; +}); +Clazz_defineMethod(c$, "clauseResNameSpec", +function(){ +this.getToken(); +var tok = this.tokPeek(); +switch (this.theToken.tok) { +case 268441089: +return true; +case 268437504: +var strSpec = ""; +while (this.getToken() != null && this.theToken.tok != 268437505) strSpec += this.theValue; + +if (this.theToken == null) return false; +if (strSpec === "") return true; +var pt; +return (strSpec.length > 0 && (pt = strSpec.indexOf("*")) >= 0 && pt != strSpec.length - 1 ? this.error(14) : this.generateResidueSpecCode(JS.T.o(1073742360, strSpec.toUpperCase()))); +default: +if (JS.T.tokAttr(tok, 268435712)) { +this.returnToken(); +return false; +}var res = this.theValue; +if (tok == 268441089) { +res = this.theValue + "*"; +this.getToken(); +}return this.generateResidueSpecCode(JS.T.o(1073741824, res)); +} +}); +Clazz_defineMethod(c$, "clauseSequenceSpec", +function(){ +if (this.tokPeek() == 268441089) return (this.getToken() != null); +var seqToken = this.getSequenceCode(false); +if (seqToken == null) return false; +var tok = this.tokPeek(); +if (tok == 268440576 || tok == 2 && this.intPeek() < 0) { +if (tok == 268440576) { +this.tokenNext(); +} else { +var i = -this.intPeek(); +this.tokenNext().intValue = i; +this.returnToken(); +}seqToken.tok = 1073742363; +this.generateResidueSpecCode(seqToken); +return this.addTokenToPostfixToken(this.getSequenceCode(true)); +}return this.generateResidueSpecCode(seqToken); +}); +Clazz_defineMethod(c$, "getSequenceCode", +function(isSecond){ +var seqcode = 2147483647; +var seqvalue = 2147483647; +switch (this.tokPeek()) { +case 5: +seqcode = this.tokenNext().intValue; +break; +case 2: +seqvalue = this.tokenNext().intValue; +break; +default: +if (!isSecond) return null; +} +return JS.T.tv(1073742362, seqvalue, Integer.$valueOf(seqcode)); +}, "~B"); +Clazz_defineMethod(c$, "clauseChainSpec", +function(tok){ +this.tokenNext(); +tok = this.tokPeek(); +var strChain; +if (this.isTerminator(tok)) { +strChain = " "; +} else { +switch (tok) { +case 268441089: +return (this.getToken() != null); +case 2: +this.getToken(); +var val = this.theToken.intValue; +if (val < 0 || val > 9999) return this.error(8); +strChain = "" + val; +break; +case 4: +this.vwr.getChainID("a", true); +default: +strChain = "" + this.getToken().value; +break; +} +if (strChain.length == 0) strChain = " "; + else if (strChain.equals("?")) return true; +}var chain = this.vwr.getChainID(strChain, false); +return this.generateResidueSpecCode(JS.T.tv(1073742357, chain, "spec_chain")); +}, "~N"); +Clazz_defineMethod(c$, "clauseAlternateSpec", +function(){ +this.tokenNext(); +if (this.isTerminator(this.tokPeek())) return this.generateResidueSpecCode(JS.T.o(1073742355, null)); +switch (this.getToken().tok) { +case 268441089: +case 4: +case 2: +case 1073741824: +case 805307393: +case 1111492629: +case 1111492630: +case 1111492631: +case 1140850705: +break; +default: +return this.error(10); +} +return this.generateResidueSpecCode(JS.T.o(1073742355, this.theToken.value)); +}); +Clazz_defineMethod(c$, "isTerminator", +function(tok){ +switch (tok) { +case 0: +case 268441088: +case 268438528: +case 268438016: +case 268439040: +case 268436992: +case 268435969: +case 1073742338: +return true; +default: +return false; +} +}, "~N"); +Clazz_defineMethod(c$, "clauseModelSpec", +function(){ +this.getToken(); +switch (this.tokPeek()) { +case 268441089: +this.getToken(); +return true; +case 2: +return this.generateResidueSpecCode(JS.T.o(1073742358, Integer.$valueOf(this.getToken().intValue))); +case 3: +return this.generateResidueSpecCode(JS.T.tv(1073742358, this.fixModelSpec(this.getToken()), this.theValue)); +case 268436992: +case 1073742338: +case 0: +return this.generateResidueSpecCode(JS.T.o(1073742358, Integer.$valueOf(1))); +} +return this.error(10); +}); +Clazz_defineMethod(c$, "fixModelSpec", +function(token){ +var ival = token.intValue; +if (ival == 2147483647) { +var f = (this.theValue).floatValue(); +if (f == Clazz_floatToInt(f)) ival = (Clazz_floatToInt(f)) * 1000000; +if (ival < 0) ival = 2147483647; +}return ival; +}, "JS.T"); +Clazz_defineMethod(c$, "clauseAtomSpec", +function(){ +if (!this.tokenNextTok(1073742336)) return this.error(7); +if (this.getToken() == null) return true; +var atomSpec = ""; +if (this.theToken.tok == 2) { +atomSpec += "" + this.theToken.intValue; +if (this.getToken() == null) return this.error(7); +}if (this.theToken.tok == 268441089) return true; +atomSpec += "" + this.theToken.value; +if (this.tokPeekIs(268441089)) { +this.tokenNext(); +atomSpec += "'"; +}return this.generateResidueSpecCode(JS.T.tv(1073742356, this.vwr.getJBR().lookupSpecialAtomID(atomSpec.toUpperCase()), atomSpec)); +}); +c$.errorString = Clazz_defineMethod(c$, "errorString", +function(iError, value, more, translated){ +var doTranslate = false; +if (!translated && (doTranslate = J.i18n.GT.getDoTranslate()) == true) J.i18n.GT.setDoTranslate(false); +var msg; +switch (iError) { +default: +msg = "Unknown compiler error message number: " + iError; +break; +case 0: +msg = J.i18n.GT.$("bad argument count"); +break; +case 1: +msg = J.i18n.GT.$("invalid context for {0}"); +break; +case 2: +msg = J.i18n.GT.$("command expected"); +break; +case 3: +msg = J.i18n.GT.$("{ number number number } expected"); +break; +case 4: +msg = J.i18n.GT.$("unexpected end of script command"); +break; +case 5: +msg = J.i18n.GT.$("end of expression expected"); +break; +case 6: +msg = J.i18n.GT.$("identifier or residue specification expected"); +break; +case 7: +msg = J.i18n.GT.$("invalid atom specification"); +break; +case 8: +msg = J.i18n.GT.$("invalid chain specification"); +break; +case 9: +msg = J.i18n.GT.$("invalid expression token: {0}"); +break; +case 10: +msg = J.i18n.GT.$("invalid model specification"); +break; +case 11: +msg = J.i18n.GT.$("missing END for {0}"); +break; +case 12: +msg = J.i18n.GT.$("number expected"); +break; +case 13: +msg = J.i18n.GT.$("number or variable name expected"); +break; +case 14: +msg = J.i18n.GT.$("residue specification (ALA, AL?, A*) expected"); +break; +case 15: +msg = J.i18n.GT.$("{0} expected"); +break; +case 16: +msg = J.i18n.GT.$("{0} unexpected"); +break; +case 17: +msg = J.i18n.GT.$("unrecognized expression token: {0}"); +break; +case 18: +msg = J.i18n.GT.$("unrecognized {0} parameter"); +break; +case 19: +msg = J.i18n.GT.$("unrecognized token: {0}"); +break; +} +if (msg.indexOf("{0}") < 0) { +if (value != null) msg += ": " + value; +} else { +msg = JU.PT.rep(msg, "{0}", value); +if (msg.indexOf("{1}") >= 0) msg = JU.PT.rep(msg, "{1}", more); + else if (more != null) msg += ": " + more; +}if (!translated) J.i18n.GT.setDoTranslate(doTranslate); +return msg; +}, "~N,~S,~S,~B"); +Clazz_defineMethod(c$, "commandExpected", +function(){ +this.ichToken = this.ichCurrentCommand; +return this.error(2); +}); +Clazz_defineMethod(c$, "error", +function(error){ +return this.errorIntStr2(error, null, null); +}, "~N"); +Clazz_defineMethod(c$, "errorStr", +function(error, value){ +return this.errorIntStr2(error, value, null); +}, "~N,~S"); +Clazz_defineMethod(c$, "errorIntStr2", +function(iError, value, more){ +var strError = JS.ScriptTokenParser.errorString(iError, value, more, true); +var strUntranslated = (J.i18n.GT.getDoTranslate() ? JS.ScriptTokenParser.errorString(iError, value, more, false) : null); +return this.errorStr2(strError, strUntranslated); +}, "~N,~S,~S"); +Clazz_defineMethod(c$, "isError", +function(){ +return this.errorMessage != null; +}); +Clazz_defineMethod(c$, "errorStr2", +function(errorMessage, strUntranslated){ +this.errorMessage = errorMessage; +this.errorMessageUntranslated = strUntranslated; +return false; +}, "~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +Clazz_load(["JV.JmolStateCreator", "java.util.Hashtable"], "JV.StateCreator", ["java.util.Arrays", "$.Date", "JU.BS", "$.Lst", "$.P3", "$.PT", "$.SB", "J.c.PAL", "$.STR", "$.VDW", "JM.AtomCollection", "$.Bond", "$.BondSet", "JS.T", "J.shape.Shape", "JU.BSUtil", "$.C", "$.ColorEncoder", "$.Edge", "$.Escape", "$.Font", "$.Logger", "JV.GlobalSettings", "$.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.undoWorking = false; +this.actionStates = null; +this.actionStatesRedo = null; +this.vwr = null; +this.temp = null; +this.temp2 = null; +this.temp3 = null; +Clazz_instantialize(this, arguments);}, JV, "StateCreator", JV.JmolStateCreator); +Clazz_prepareFields (c$, function(){ +this.temp = new java.util.Hashtable(); +this.temp2 = new java.util.Hashtable(); +this.temp3 = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JV.StateCreator, []); +this.actionStates = new JU.Lst(); +this.actionStatesRedo = new JU.Lst(); +}); +Clazz_overrideMethod(c$, "setViewer", +function(vwr){ +this.vwr = vwr; +}, "JV.Viewer"); +Clazz_overrideMethod(c$, "getStateScript", +function(type, width, height){ +var isAll = (type == null || type.equalsIgnoreCase("all")); +var s = new JU.SB(); +var sfunc = (isAll ? new JU.SB().append("function _setState() {\n") : null); +if (isAll) { +s.append("# Jmol state version " + JV.Viewer.getJmolVersion() + ";\n"); +if (this.vwr.isApplet) { +this.app(s, "# fullName = " + JU.PT.esc(this.vwr.fullName)); +this.app(s, "# documentBase = " + JU.PT.esc(JV.Viewer.appletDocumentBase)); +this.app(s, "# codeBase = " + JU.PT.esc(JV.Viewer.appletCodeBase)); +s.append("\n"); +}}var global = this.vwr.g; +if (isAll || type.equalsIgnoreCase("windowState")) s.append(this.getWindowState(sfunc, width, height)); +if (isAll || type.equalsIgnoreCase("fileState")) s.append(this.getFileState(sfunc)); +if (isAll || type.equalsIgnoreCase("definedState")) s.append(this.getDefinedState(sfunc, true)); +if (isAll || type.equalsIgnoreCase("variableState")) s.append(this.getParameterState(global, sfunc)); +if (isAll || type.equalsIgnoreCase("dataState")) s.append(this.getDataState(sfunc)); +if (isAll || type.equalsIgnoreCase("modelState")) s.append(this.getModelState(sfunc, true, this.vwr.getBooleanProperty("saveProteinStructureState"))); +if (isAll || type.equalsIgnoreCase("colorState")) s.append(this.getColorState(this.vwr.cm, sfunc)); +if (isAll || type.equalsIgnoreCase("frameState")) s.append(this.getAnimState(this.vwr.am, sfunc)); +if (isAll || type.equalsIgnoreCase("perspectiveState")) s.append(this.getViewState(this.vwr.tm, sfunc)); +if (isAll || type.equalsIgnoreCase("selectionState")) s.append(this.getSelectionState(this.vwr.slm, sfunc)); +if (sfunc != null) { +this.app(sfunc, "set refreshing true"); +this.app(sfunc, "set antialiasDisplay " + global.antialiasDisplay); +this.app(sfunc, "set antialiasTranslucent " + global.antialiasTranslucent); +this.app(sfunc, "set antialiasImages " + global.antialiasImages); +if (this.vwr.tm.spinOn) this.app(sfunc, "spin on"); +sfunc.append("}\n\n_setState;\n"); +}if (isAll) s.appendSB(sfunc); +return s.toString(); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "getDataState", +function(sfunc){ +var commands = new JU.SB(); +var haveData = false; +var atomProps = this.getAtomicPropertyState(-1, null); +if (atomProps.length > 0) { +haveData = true; +commands.append(atomProps); +}if (this.vwr.userVdws != null) { +var info = this.vwr.getDefaultVdwNameOrData(0, J.c.VDW.USER, this.vwr.bsUserVdws); +if (info.length > 0) { +haveData = true; +commands.append(info); +}}if (this.vwr.nmrCalculation != null) haveData = new Boolean (haveData | this.vwr.nmrCalculation.getState(commands)).valueOf(); +if (this.vwr.dm != null) haveData = new Boolean (haveData | this.vwr.dm.getDataState(this, commands)).valueOf(); +if (!haveData) return ""; +var cmd = ""; +if (sfunc != null) { +sfunc.append(" _setDataState;\n"); +cmd = "function _setDataState() {\n"; +commands.append("}\n\n"); +}return cmd + commands.toString(); +}, "JU.SB"); +Clazz_defineMethod(c$, "getDefinedState", +function(sfunc, isAll){ +var ms = this.vwr.ms; +var len = ms.stateScripts.size(); +if (len == 0) return ""; +var haveDefs = false; +var commands = new JU.SB(); +var cmd; +for (var i = 0; i < len; i++) { +var ss = ms.stateScripts.get(i); +if (ss.inDefinedStateBlock && (cmd = ss.toString()).length > 0) { +this.app(commands, cmd); +haveDefs = true; +}} +if (!haveDefs) return ""; +cmd = ""; +if (isAll && sfunc != null) { +sfunc.append(" _setDefinedState;\n"); +cmd = "function _setDefinedState() {\n\n"; +}if (sfunc != null) commands.append("\n}\n\n"); +return cmd + commands.toString(); +}, "JU.SB,~B"); +Clazz_overrideMethod(c$, "getModelState", +function(sfunc, isAll, withProteinStructure){ +var commands = new JU.SB(); +if (isAll && sfunc != null) { +sfunc.append(" _setModelState;\n"); +commands.append("function _setModelState() {\n"); +}var cmd; +var ms = this.vwr.ms; +var bonds = ms.bo; +var models = ms.am; +var modelCount = ms.mc; +if (isAll) { +var len = ms.stateScripts.size(); +for (var i = 0; i < len; i++) { +var ss = ms.stateScripts.get(i); +if (!ss.inDefinedStateBlock && (cmd = ss.toString()).length > 0) { +this.app(commands, cmd); +}} +var sb = new JU.SB(); +var loadUC = false; +if (ms.unitCells != null) { +var haveModulation = false; +for (var i = 0; i < modelCount; i++) { +var symmetry = ms.getUnitCell(i); +if (symmetry == null) continue; +sb.setLength(0); +if (symmetry.getState(ms, i, sb)) { +loadUC = true; +commands.append(" frame ").append(ms.getModelNumberDotted(i)).appendSB(sb).append(";\n"); +}haveModulation = new Boolean (haveModulation | (this.vwr.ms.getLastVibrationVector(i, 1275072532) >= 0)).valueOf(); +} +if (loadUC) this.vwr.shm.loadShape(33); +this.getShapeStatePriv(commands, isAll, 33); +if (haveModulation) { +var temp = new java.util.Hashtable(); +var ivib; +for (var i = modelCount; --i >= 0; ) { +if ((ivib = this.vwr.ms.getLastVibrationVector(i, 1275072532)) >= 0) for (var j = models[i].firstAtomIndex; j <= ivib; j++) { +var mset = ms.getModulation(j); +if (mset != null) JU.BSUtil.setMapBitSet(temp, j, j, mset.getState()); +} +} +commands.append(this.getCommands(temp, null, "select")); +}}sb.setLength(0); +for (var i = 0; i < ms.bondCount; i++) if (!models[bonds[i].atom1.mi].isModelKit) if (bonds[i].isHydrogen() || (bonds[i].order & 131072) != 0) { +var bond = bonds[i]; +var index = bond.atom1.i; +if (bond.atom1.group.isAdded(index)) index = -1 - index; +sb.appendI(index).appendC('\t').appendI(bond.atom2.i).appendC('\t').appendI(bond.order & 131071).appendC('\t').appendF(bond.mad / 1000).appendC('\t').appendF(bond.getEnergy()).appendC('\t').append(JU.Edge.getBondOrderNameFromOrder(bond.order)).append(";\n"); +} +if (sb.length() > 0) commands.append("data \"connect_atoms\"\n").appendSB(sb).append("end \"connect_atoms\";\n"); +commands.append("\n"); +}if (ms.haveHiddenBonds) { +var bs = new JM.BondSet(); +for (var i = ms.bondCount; --i >= 0; ) if (bonds[i].mad != 0 && (bonds[i].shapeVisibilityFlags & JM.Bond.myVisibilityFlag) == 0) bs.set(i); + +if (bs.isEmpty()) ms.haveHiddenBonds = false; + else commands.append(" hide ").append(JU.Escape.eBond(bs)).append(";\n"); +}this.vwr.setModelVisibility(); +if (withProteinStructure) commands.append(ms.getProteinStructureState(null, isAll ? 1073742327 : 1073742158)); +for (var i = 0; i < modelCount; i++) if (models[i].mat4 != null) commands.append(" frame orientation " + ms.getModelNumberDotted(i) + JU.Escape.matrixToScript(models[i].mat4) + ";\n"); + +this.getShapeStatePriv(commands, isAll, 2147483647); +if (isAll) { +var needOrientations = false; +for (var i = 0; i < modelCount; i++) if (models[i].isJmolDataFrame) { +needOrientations = true; +break; +} +var sb = new JU.SB(); +for (var i = 0; i < modelCount; i++) { +var m = models[i]; +sb.setLength(0); +var s = ms.getInfo(i, "modelID"); +if (s != null && !s.equals(ms.getInfo(i, "modelID0"))) sb.append(" frame ID ").append(JU.PT.esc(s)).append(";\n"); +var t = ms.frameTitles[i]; +if (t != null && t.length > 0) sb.append(" frame title ").append(JU.PT.esc(t)).append(";\n"); +if (needOrientations && m.orientation != null && !ms.isTrajectorySubFrame(i)) sb.append(" ").append(m.orientation.getMoveToText(false)).append(";\n"); +if (m.frameDelay != 0 && !ms.isTrajectorySubFrame(i)) sb.append(" frame delay ").appendF(m.frameDelay / 1000).append(";\n"); +if (m.simpleCage != null) { +sb.append(" unitcell ").append(JU.Escape.eAP(m.simpleCage.getUnitCellVectors())).append(";\n"); +this.getShapeStatePriv(sb, isAll, 33); +}if (sb.length() > 0) commands.append(" frame " + ms.getModelNumberDotted(i) + ";\n").appendSB(sb); +} +commands.append(" set fontScaling " + this.vwr.getBoolean(603979847) + ";\n"); +}if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JU.SB,~B,~B"); +Clazz_defineMethod(c$, "getWindowState", +function(sfunc, width, height){ +var global = this.vwr.g; +var str = new JU.SB(); +if (sfunc != null) { +sfunc.append(" initialize;\n set refreshing false;\n _setWindowState;\n"); +str.append("\nfunction _setWindowState() {\n"); +}if (width != 0) str.append("# preferredWidthHeight ").appendI(width).append(" ").appendI(height).append(";\n"); +str.append("# width ").appendI(width == 0 ? this.vwr.getScreenWidth() : width).append(";\n# height ").appendI(height == 0 ? this.vwr.getScreenHeight() : height).append(";\n"); +this.app(str, "stateVersion = " + JV.JC.versionInt); +this.app(str, "background " + JU.Escape.escapeColor(global.objColors[0])); +for (var i = 1; i < 7; i++) if (global.objColors[i] != 0) this.app(str, JV.StateManager.getObjectNameFromId(i) + "Color = \"" + JU.Escape.escapeColor(global.objColors[i]) + '"'); + +if (global.backgroundImageFileName != null) { +this.app(str, "background IMAGE " + (global.backgroundImageFileName.startsWith(";base64,") ? "" : "/*file*/") + JU.PT.esc(global.backgroundImageFileName)); +}str.append(this.getLightingState(false)); +if (sfunc != null) str.append("}\n\n"); +return str.toString(); +}, "JU.SB,~N,~N"); +Clazz_overrideMethod(c$, "getLightingState", +function(isAll){ +var str = new JU.SB(); +var g = this.vwr.gdata; +this.app(str, "set ambientPercent " + g.getAmbientPercent()); +this.app(str, "set diffusePercent " + g.getDiffusePercent()); +this.app(str, "set specular " + g.getSpecular()); +this.app(str, "set specularPercent " + g.getSpecularPercent()); +this.app(str, "set specularPower " + g.getSpecularPower()); +var se = g.getSpecularExponent(); +var pe = g.getPhongExponent(); +this.app(str, (Math.pow(2, se) == pe ? "set specularExponent " + se : "set phongExponent " + pe)); +this.app(str, "set celShading " + g.getCel()); +this.app(str, "set celShadingPower " + g.getCelPower()); +this.app(str, "set zShadePower " + this.vwr.g.zShadePower); +if (isAll) this.getZshadeState(str, this.vwr.tm, true); +return str.toString(); +}, "~B"); +Clazz_defineMethod(c$, "getFileState", +function(sfunc){ +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setFileState;\n"); +commands.append("function _setFileState() {\n\n"); +}if (commands.indexOf("append") < 0 && this.vwr.getModelSetFileName().equals("zapped")) commands.append(" zap;\n"); +this.appendLoadStates(commands); +if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JU.SB"); +Clazz_defineMethod(c$, "appendLoadStates", +function(cmds){ +var ligandModelSet = this.vwr.ligandModelSet; +if (ligandModelSet != null) { +for (var key, $key = ligandModelSet.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var data = this.vwr.ligandModels.get(key + "_data"); +if (data != null) cmds.append(" ").append(JU.Escape.encapsulateData("ligand_" + key, data.trim() + "\n", 0)); +data = this.vwr.ligandModels.get(key + "_file"); +if (data != null) cmds.append(" ").append(JU.Escape.encapsulateData("file_" + key, data.trim() + "\n", 0)); +} +}var commands = new JU.SB(); +var ms = this.vwr.ms; +var models = ms.am; +var modelCount = ms.mc; +for (var i = 0; i < modelCount; i++) { +if (ms.isJmolDataFrameForModel(i) || ms.isTrajectorySubFrame(i)) continue; +var m = models[i]; +var pt = commands.indexOf(m.loadState); +if (pt < 0 || pt != commands.lastIndexOf(m.loadState)) commands.append(models[i].loadState); +if (models[i].isModelKit) { +var bs = ms.getModelAtomBitSetIncludingDeleted(i, false); +if (ms.tainted != null) { +if (ms.tainted[2] != null) ms.tainted[2].andNot(bs); +if (ms.tainted[3] != null) ms.tainted[3].andNot(bs); +}m.loadScript = new JU.SB(); +this.getInlineData(commands, this.vwr.getModelExtract(bs, false, true, "MOL"), i > 0, null, null); +} else { +commands.appendSB(m.loadScript); +var auxFiles = m.auxiliaryInfo.get("auxFiles"); +if (auxFiles != null) { +for (var j = 0; j < auxFiles.size(); j++) commands.append(";#FILE1=" + JU.PT.esc(auxFiles.get(j)) + ";"); + +}}} +var s = commands.toString(); +if (s.indexOf("data \"append ") < 0) { +var i = s.indexOf("load /*data*/"); +var j = s.indexOf("load /*file*/"); +if (j >= 0 && j < i) i = j; +if ((j = s.indexOf("load \"@")) >= 0 && j < i) i = j; +if (i >= 0) s = s.substring(0, i) + "zap;" + s.substring(i); +}cmds.append(s); +}, "JU.SB"); +Clazz_overrideMethod(c$, "getInlineData", +function(loadScript, strModel, isAppend, appendToModelIndex, loadFilter){ +var tag = (isAppend ? "append" + (appendToModelIndex != null && appendToModelIndex.intValue() != this.vwr.ms.mc - 1 ? " modelindex=" + appendToModelIndex : "") : "model") + " inline"; +loadScript.append("load /*data*/ data \"").append(tag).append("\"\n").append(strModel).append("end \"").append(tag).append(loadFilter == null || loadFilter.length == 0 ? "" : " filter" + JU.PT.esc(loadFilter)).append("\";"); +}, "JU.SB,~S,~B,Integer,~S"); +Clazz_defineMethod(c$, "getColorState", +function(cm, sfunc){ +var s = new JU.SB(); +var n = this.getCEState(cm.ce, s); +if (n > 0 && sfunc != null) sfunc.append("\n _setColorState\n"); +return (n > 0 && sfunc != null ? "function _setColorState() {\n" + s.append("}\n\n").toString() : s.toString()); +}, "JV.ColorManager,JU.SB"); +Clazz_defineMethod(c$, "getCEState", +function(p, s){ +var n = 0; +for (var entry, $entry = p.schemes.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.length > 0 && !name.startsWith("=") && n++ >= 0) s.append("color \"" + name + "=" + JU.ColorEncoder.getColorSchemeList(entry.getValue()) + "\";\n"); +} +return n; +}, "JU.ColorEncoder,JU.SB"); +Clazz_defineMethod(c$, "getAnimState", +function(am, sfunc){ +var modelCount = this.vwr.ms.mc; +if (modelCount < 2) return ""; +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setFrameState;\n"); +commands.append("function _setFrameState() {\n"); +}commands.append("# frame state;\n"); +commands.append("# modelCount ").appendI(modelCount).append(";\n# first ").append(this.vwr.getModelNumberDotted(0)).append(";\n# last ").append(this.vwr.getModelNumberDotted(modelCount - 1)).append(";\n"); +if (am.backgroundModelIndex >= 0) this.app(commands, "set backgroundModel " + this.vwr.getModelNumberDotted(am.backgroundModelIndex)); +if (this.vwr.tm.bsFrameOffsets != null) { +this.app(commands, "frame align " + JU.Escape.eBS(this.vwr.tm.bsFrameOffsets)); +} else if (this.vwr.ms.translations != null) { +for (var i = modelCount; --i >= 0; ) { +var t = (this.vwr.ms.getTranslation(i)); +if (t != null) this.app(commands, "frame " + this.vwr.ms.getModelNumberDotted(i) + " align " + t); +} +}this.app(commands, "frame RANGE " + am.getModelSpecial(-1) + " " + am.getModelSpecial(1)); +this.app(commands, "animation DIRECTION " + (am.animationDirection == 1 ? "+1" : "-1")); +this.app(commands, "animation FPS " + am.animationFps); +this.app(commands, "animation MODE " + JS.T.nameOf(am.animationReplayMode) + " " + am.firstFrameDelay + " " + am.lastFrameDelay); +if (am.morphCount > 0) this.app(commands, "animation MORPH " + am.morphCount); +var showModel = true; +if (am.animationFrames != null) { +this.app(commands, "anim frames " + JU.Escape.eAI(am.animationFrames)); +var i = am.caf; +this.app(commands, "frame " + (i + 1)); +showModel = (am.cmi != am.modelIndexForFrame(i)); +}if (showModel) { +var s = am.getModelSpecial(0); +this.app(commands, s.equals("0") ? "frame *" : "model " + s); +}this.app(commands, "animation " + (!am.animationOn ? "OFF" : am.currentDirection == 1 ? "PLAY" : "PLAYREV")); +if (am.animationOn && am.animationPaused) this.app(commands, "animation PAUSE"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.AnimationManager,JU.SB"); +Clazz_defineMethod(c$, "getParameterState", +function(global, sfunc){ +var list = new Array(global.htBooleanParameterFlags.size() + global.htNonbooleanParameterValues.size()); +var commands = new JU.SB(); +var isState = (sfunc != null); +if (isState) { +sfunc.append(" _setParameterState;\n"); +commands.append("function _setParameterState() {\n\n"); +}var n = 0; +for (var key, $key = global.htBooleanParameterFlags.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (JV.GlobalSettings.doReportProperty(key)) list[n++] = "set " + key + " " + global.htBooleanParameterFlags.get(key); + +for (var key, $key = global.htNonbooleanParameterValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (JV.GlobalSettings.doReportProperty(key)) { +var value = global.htNonbooleanParameterValues.get(key); +if (key.charAt(0) == '=') { +key = key.substring(1); +} else { +key = (key.indexOf("default") == 0 ? " " : "") + "set " + key; +value = JU.Escape.e(value); +}list[n++] = key + " " + value; +} +switch (global.axesMode) { +case 603979808: +list[n++] = "set axes unitcell"; +break; +case 603979804: +list[n++] = "set axes molecular"; +break; +default: +list[n++] = "set axes window"; +} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) this.app(commands, list[i]); + +var s = JV.StateManager.getVariableList(global.htUserVariables, 0, false, true); +if (s.length > 0) { +commands.append("\n#user-defined atom sets; \n"); +commands.append(s); +}if (this.vwr.shm.getShape(5) != null) commands.append(this.getDefaultLabelState(this.vwr.shm.shapes[5])); +if (global.haveSetStructureList) { +var slist = global.structureList; +commands.append("struture HELIX set " + JU.Escape.eAF(slist.get(J.c.STR.HELIX))); +commands.append("struture SHEET set " + JU.Escape.eAF(slist.get(J.c.STR.SHEET))); +commands.append("struture TURN set " + JU.Escape.eAF(slist.get(J.c.STR.TURN))); +}if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JV.GlobalSettings,JU.SB"); +Clazz_defineMethod(c$, "getDefaultLabelState", +function(l){ +var s = new JU.SB().append("\n# label defaults;\n"); +this.app(s, "select none"); +this.app(s, J.shape.Shape.getColorCommand("label", l.defaultPaletteID, l.defaultColix, l.translucentAllowed)); +this.app(s, "background label " + J.shape.Shape.encodeColor(l.defaultBgcolix)); +this.app(s, "set labelOffset " + JV.JC.getXOffset(l.defaultOffset) + " " + (JV.JC.getYOffset(l.defaultOffset))); +var align = JV.JC.getHorizAlignmentName(l.defaultAlignment); +this.app(s, "set labelAlignment " + (align.length < 5 ? "left" : align)); +var pointer = JV.JC.getPointerName(l.defaultPointer); +this.app(s, "set labelPointer " + (pointer.length == 0 ? "off" : pointer)); +if ((l.defaultZPos & 32) != 0) this.app(s, "set labelFront"); + else if ((l.defaultZPos & 16) != 0) this.app(s, "set labelGroup"); +this.app(s, J.shape.Shape.getFontCommand("label", JU.Font.getFont3D(l.defaultFontId))); +return s.toString(); +}, "J.shape.Labels"); +Clazz_defineMethod(c$, "getSelectionState", +function(sm, sfunc){ +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setSelectionState;\n"); +commands.append("function _setSelectionState() {\n"); +}if (this.vwr.ms.trajectory != null) this.app(commands, this.vwr.ms.trajectory.getState()); +var temp = new java.util.Hashtable(); +var cmd = null; +this.addBs(commands, "hide ", sm.bsHidden); +this.addBs(commands, "subset ", sm.bsSubset); +this.addBs(commands, "delete ", sm.bsDeleted); +this.addBs(commands, "fix ", sm.bsFixed); +temp.put("-", this.vwr.slm.getSelectedAtomsNoSubset()); +cmd = this.getCommands(temp, null, "select"); +if (cmd == null) this.app(commands, "select none"); + else commands.append(cmd); +this.app(commands, "set hideNotSelected " + sm.hideNotSelected); +commands.append(this.vwr.getShapeProperty(1, "selectionState")); +if (this.vwr.getSelectionHalosEnabled()) this.app(commands, "SelectionHalos ON"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.SelectionManager,JU.SB"); +Clazz_defineMethod(c$, "getViewState", +function(tm, sfunc){ +var commands = new JU.SB(); +var moveToText = tm.getMoveToText(0, false); +if (sfunc != null) { +sfunc.append(" _setPerspectiveState;\n"); +commands.append("function _setPerspectiveState() {\n"); +}this.app(commands, "set perspectiveModel " + tm.perspectiveModel); +this.app(commands, "set scaleAngstromsPerInch " + tm.scale3DAngstromsPerInch); +this.app(commands, "set perspectiveDepth " + tm.perspectiveDepth); +this.app(commands, "set visualRange " + tm.visualRangeAngstroms); +if (!tm.isWindowCentered()) this.app(commands, "set windowCentered false"); +this.app(commands, "set cameraDepth " + tm.cameraDepth); +var navigating = (tm.mode == 1); +if (navigating) this.app(commands, "set navigationMode true"); +this.app(commands, this.vwr.ms.getBoundBoxCommand(false)); +this.app(commands, "center " + JU.Escape.eP(tm.fixedRotationCenter)); +commands.append(this.vwr.getOrientation(1073742034, null, null, null).toString()); +this.app(commands, moveToText); +if (!navigating && !tm.zoomEnabled) this.app(commands, "zoom off"); +commands.append(" slab ").appendI(tm.slabPercentSetting).append(";depth ").appendI(tm.depthPercentSetting).append(tm.slabEnabled && !navigating ? ";slab on" : "").append(";\n"); +commands.append(" set slabRange ").appendF(tm.slabRange).append(";\n"); +if (tm.slabPlane != null) commands.append(" slab plane ").append(JU.Escape.eP4(tm.slabPlane)).append(";\n"); +if (tm.depthPlane != null) commands.append(" depth plane ").append(JU.Escape.eP4(tm.depthPlane)).append(";\n"); +this.getZshadeState(commands, tm, false); +commands.append(this.getSpinState(true)).append("\n"); +if (this.vwr.ms.modelSetHasVibrationVectors() && tm.vibrationOn) this.app(commands, "set vibrationPeriod " + tm.vibrationPeriod + ";vibration on"); +var slabInternal = (tm.depthPlane != null || tm.slabPlane != null); +if (navigating) { +commands.append(tm.getNavigationState()); +}if (!tm.slabEnabled && slabInternal) commands.append(" slab off;\n"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.TransformManager,JU.SB"); +Clazz_defineMethod(c$, "getZshadeState", +function(s, tm, isAll){ +if (isAll) { +this.app(s, "set zDepth " + tm.zDepthPercentSetting); +this.app(s, "set zSlab " + tm.zSlabPercentSetting); +if (!tm.zShadeEnabled) this.app(s, "set zShade false"); +}if (tm.zShadeEnabled) this.app(s, "set zShade true"); +try { +if (tm.zSlabPoint != null) this.app(s, "set zSlab " + JU.Escape.eP(tm.zSlabPoint)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JU.SB,JV.TransformManager,~B"); +Clazz_overrideMethod(c$, "getSpinState", +function(isAll){ +var tm = this.vwr.tm; +var s = " set spinX " + Clazz_floatToInt(tm.spinX) + "; set spinY " + Clazz_floatToInt(tm.spinY) + "; set spinZ " + Clazz_floatToInt(tm.spinZ) + "; set spinFps " + Clazz_floatToInt(tm.spinFps) + ";"; +if (!Float.isNaN(tm.navFps)) s += " set navX " + Clazz_floatToInt(tm.navX) + "; set navY " + Clazz_floatToInt(tm.navY) + "; set navZ " + Clazz_floatToInt(tm.navZ) + "; set navFps " + Clazz_floatToInt(tm.navFps) + ";"; +if (tm.navOn) s += " navigation on;"; +if (!tm.spinOn) return s; +var prefix = (tm.isSpinSelected ? "\n select " + JU.Escape.eBS(this.vwr.bsA()) + ";\n rotateSelected" : "\n "); +if (tm.isSpinInternal) { +var pt = JU.P3.newP(tm.internalRotationCenter); +pt.sub(tm.rotationAxis); +s += prefix + " spin " + tm.rotationRate + " " + JU.Escape.eP(tm.internalRotationCenter) + " " + JU.Escape.eP(pt); +} else if (tm.isSpinFixed) { +s += prefix + " spin axisangle " + JU.Escape.eP(tm.rotationAxis) + " " + tm.rotationRate; +} else { +s += " spin on"; +}return s + ";"; +}, "~B"); +Clazz_overrideMethod(c$, "getCommands", +function(htDefine, htMore, selectCmd){ +var s = new JU.SB(); +var setPrev = this.getCommands2(htDefine, s, null, selectCmd); +if (htMore != null) this.getCommands2(htMore, s, setPrev, "select"); +return s.toString(); +}, "java.util.Map,java.util.Map,~S"); +Clazz_defineMethod(c$, "getCommands2", +function(ht, s, setPrev, selectCmd){ +if (ht == null) return ""; +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var set = JU.Escape.eBS(entry.getValue()); +if (set.length < 5) continue; +set = selectCmd + " " + set; +if (!set.equals(setPrev)) this.app(s, set); +setPrev = set; +if (key.indexOf("-") != 0) this.app(s, key); +} +return setPrev; +}, "java.util.Map,JU.SB,~S,~S"); +Clazz_defineMethod(c$, "app", +function(s, cmd){ +if (cmd.length != 0) s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz_defineMethod(c$, "addBs", +function(sb, key, bs){ +if (bs == null || bs.length() == 0) return; +this.app(sb, key + JU.Escape.eBS(bs)); +}, "JU.SB,~S,JU.BS"); +Clazz_defineMethod(c$, "getFontState", +function(myType, font3d){ +var objId = JV.StateManager.getObjectIdFromName(myType.equalsIgnoreCase("axes") ? "axis" : myType); +if (objId < 0) return ""; +var mad = this.vwr.getObjectMad10(objId); +var s = new JU.SB().append("\n"); +this.app(s, myType + (mad == 0 ? " off" : mad == 1 ? " on" : mad == -1 ? " dotted" : mad < 20 ? " " + mad : " " + (mad / 20000))); +if (s.length() < 3) return ""; +var fcmd = J.shape.Shape.getFontCommand(myType, font3d); +if (fcmd.length > 0) fcmd = " " + fcmd + ";\n"; +return (s + fcmd); +}, "~S,JU.Font"); +Clazz_defineMethod(c$, "appendTickInfo", +function(myType, sb, t){ +sb.append(" "); +sb.append(myType); +JV.StateCreator.addTickInfo(sb, t, false); +sb.append(";\n"); +}, "~S,JU.SB,JM.TickInfo"); +c$.addTickInfo = Clazz_defineMethod(c$, "addTickInfo", +function(sb, tickInfo, addFirst){ +sb.append(" ticks ").appendC(tickInfo.type).append(" ").append(JU.Escape.eP(tickInfo.ticks)); +var isUnitCell = (tickInfo.scale != null && Float.isNaN(tickInfo.scale.x)); +if (isUnitCell) sb.append(" UNITCELL"); +if (tickInfo.tickLabelFormats != null) sb.append(" format ").append(JU.Escape.eAS(tickInfo.tickLabelFormats, false)); +if (!isUnitCell && tickInfo.scale != null) sb.append(" scale ").append(JU.Escape.eP(tickInfo.scale)); +if (addFirst && !Float.isNaN(tickInfo.first) && tickInfo.first != 0) sb.append(" first ").appendF(tickInfo.first); +if (tickInfo.reference != null) sb.append(" point ").append(JU.Escape.eP(tickInfo.reference)); +}, "JU.SB,JM.TickInfo,~B"); +Clazz_defineMethod(c$, "getMeasurementState", +function(shape){ +var mList = shape.measurements; +var measurementCount = shape.measurementCount; +var font3d = shape.font3d; +var ti = shape.defaultTickInfo; +var commands = new JU.SB(); +this.app(commands, "measures delete"); +for (var i = 0; i < measurementCount; i++) { +var m = mList.get(i); +var isProperty = (m.property != null); +if (isProperty && Float.isNaN(m.value)) continue; +var count = m.count; +var sb = new JU.SB().append("measure"); +if (m.thisID != null) sb.append(" ID ").append(JU.PT.esc(m.thisID)); +if (m.mad != 0) sb.append(" radius ").appendF(m.thisID == null || m.mad > 0 ? m.mad / 2000 : 0); +if (m.colix != 0) sb.append(" color ").append(JU.Escape.escapeColor(JU.C.getArgb(m.colix))); +if (m.text != null) { +if (m.text.font != null) sb.append(" font ").append(m.text.font.getInfo()); +if (m.text.align != 0) sb.append(" align ").append(JV.JC.getHorizAlignmentName(m.text.align)); +if (m.text.pymolOffset != null) sb.append(" offset ").append(JU.Escape.eAF(m.text.pymolOffset)); +}var tickInfo = m.tickInfo; +if (tickInfo != null) JV.StateCreator.addTickInfo(sb, tickInfo, true); +for (var j = 1; j <= count; j++) sb.append(" ").append(m.getLabel(j, true, true)); + +if (isProperty) { +sb.append(" " + m.property + " value " + (Double.isNaN(m.value) ? 0 : m.value)).append(" " + JU.PT.esc(m.getString())); +} else if (count == 2) { +var s = m.getDistanceFormatForState(); +if (s != null) sb.append(" ").append(JU.PT.esc(s)); +}if (!isProperty) { +sb.append("; # " + shape.getInfoAsString(i)); +}this.app(commands, sb.toString()); +} +this.app(commands, J.shape.Shape.getFontCommand("measures", font3d)); +var nHidden = 0; +var temp = new java.util.Hashtable(); +var bs = JU.BS.newN(measurementCount); +for (var i = 0; i < measurementCount; i++) { +var m = mList.get(i); +if (m.isHidden) { +nHidden++; +bs.set(i); +}if (shape.bsColixSet != null && shape.bsColixSet.get(i)) JU.BSUtil.setMapBitSet(temp, i, i, J.shape.Shape.getColorCommandUnk("measure", m.colix, shape.translucentAllowed)); +} +if (nHidden > 0) if (nHidden == measurementCount) this.app(commands, "measures off; # lines and numbers off"); + else for (var i = 0; i < measurementCount; i++) if (bs.get(i)) JU.BSUtil.setMapBitSet(temp, i, i, "measure off"); + +if (ti != null) { +commands.append(" measure "); +JV.StateCreator.addTickInfo(commands, ti, true); +commands.append(";\n"); +}if (shape.mad >= 0) commands.append(" set measurements ").appendF(shape.mad / 2000).append(";\n"); +var s = this.getCommands(temp, null, "select measures"); +if (s != null && s.length != 0) { +commands.append(s); +this.app(commands, "select measures ({null})"); +}return commands.toString(); +}, "J.shape.Measures"); +Clazz_defineMethod(c$, "getShapeStatePriv", +function(commands, isAll, iShape){ +var shapes = this.vwr.shm.shapes; +if (shapes == null) return; +var i; +var imax; +if (iShape == 2147483647) { +i = 0; +imax = 37; +} else { +imax = (i = iShape) + 1; +}for (; i < imax; ++i) { +var shape = shapes[i]; +if (shape != null && (isAll || i >= 9 && i < 16)) { +var cmd = this.getShapeState(shape); +if (cmd != null && cmd.length > 1) commands.append(cmd); +}} +commands.append(" select *;\n"); +}, "JU.SB,~B,~N"); +Clazz_defineMethod(c$, "getBondState", +function(shape){ +var bsOrderSet = shape.bsOrderSet; +var reportAll = shape.reportAll; +this.clearTemp(); +var modelSet = this.vwr.ms; +var haveTainted = false; +var bonds = modelSet.bo; +var bondCount = modelSet.bondCount; +var r; +if (reportAll || shape.bsSizeSet != null) { +var i0 = (reportAll ? bondCount - 1 : shape.bsSizeSet.nextSetBit(0)); +for (var i = i0; i >= 0; i = (reportAll ? i - 1 : shape.bsSizeSet.nextSetBit(i + 1))) JU.BSUtil.setMapBitSet(this.temp, i, i, "wireframe " + ((r = bonds[i].mad) == 1 ? "on" : "" + JU.PT.escF(r / 2000))); + +}if (reportAll || bsOrderSet != null) { +var i0 = (reportAll ? bondCount - 1 : bsOrderSet.nextSetBit(0)); +for (var i = i0; i >= 0; i = (reportAll ? i - 1 : bsOrderSet.nextSetBit(i + 1))) { +var bond = bonds[i]; +if (reportAll || (bond.order & 131072) == 0) JU.BSUtil.setMapBitSet(this.temp, i, i, "bondOrder " + JU.Edge.getBondOrderNameFromOrder(bond.order)); +} +}if (shape.bsColixSet != null) for (var i = shape.bsColixSet.nextSetBit(0); i >= 0; i = shape.bsColixSet.nextSetBit(i + 1)) { +var colix = bonds[i].colix; +if ((colix & -30721) == 2) JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommand("bonds", J.c.PAL.CPK.id, colix, shape.translucentAllowed)); + else JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommandUnk("bonds", colix, shape.translucentAllowed)); +} +var s = this.getCommands(this.temp, null, "select BONDS") + "\n" + (haveTainted ? this.getCommands(this.temp2, null, "select BONDS") + "\n" : ""); +this.clearTemp(); +return s; +}, "J.shape.Sticks"); +Clazz_defineMethod(c$, "clearTemp", +function(){ +this.temp.clear(); +this.temp2.clear(); +}); +Clazz_defineMethod(c$, "getShapeState", +function(shape){ +var s; +switch (shape.shapeID) { +case 34: +s = this.getAxesState(shape); +break; +case 33: +if (!this.vwr.ms.haveUnitCells) return ""; +var st = s = this.getFontLineShapeState(shape); +var iAtom = this.vwr.am.getUnitCellAtomIndex(); +if (iAtom >= 0) s += " unitcell ({" + iAtom + "});\n"; +var uc = this.vwr.getCurrentUnitCell(); +if (uc != null) { +s += uc.getUnitCellState(); +s += st; +}break; +case 32: +s = this.getFontLineShapeState(shape); +break; +case 36: +s = this.getFontState(shape.myType, (shape).baseFont3d); +break; +case 6: +s = this.getMeasurementState(shape); +break; +case 7: +case 18: +s = this.getAtomShapeState(shape); +break; +case 1: +s = this.getBondState(shape); +break; +case 31: +var es = shape; +var sb = new JU.SB(); +sb.append("\n set echo off;set echo \"%SCALE\" off;\n"); +this.getEchoState(sb, es.scaleObject); +var haveElementKey = false; +for (var t, $t = es.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) { +haveElementKey = new Boolean (haveElementKey | this.getEchoState(sb, t)).valueOf(); +} +if (haveElementKey) sb.append(" modelkit OFF;//to check for element keys\n"); +s = sb.toString(); +break; +case 8: +var hs = shape; +s = this.getAtomShapeState(hs) + (hs.colixSelection == 2 ? "" : hs.colixSelection == 0 ? " color SelectionHalos NONE;\n" : J.shape.Shape.getColorCommandUnk("selectionHalos", hs.colixSelection, hs.translucentAllowed) + ";\n"); +if (hs.bsHighlight != null) s += " set highlight " + JU.Escape.eBS(hs.bsHighlight) + "; " + J.shape.Shape.getColorCommandUnk("highlight", hs.colixHighlight, hs.translucentAllowed) + ";\n"; +break; +case 35: +this.clearTemp(); +var h = shape; +if (h.atomFormats != null) { +var at = this.vwr.ms.at; +for (var i = this.vwr.ms.ac; --i >= 0; ) { +if (at[i] == null) h.atomFormats[i] = null; +if (h.atomFormats[i] != null) { +JU.BSUtil.setMapBitSet(this.temp, i, i, "set hoverLabel " + JU.PT.esc(h.atomFormats[i])); +}} +}s = "\n hover " + JU.PT.esc((h.labelFormat == null ? "" : h.labelFormat)) + ";\n" + this.getCommands(this.temp, null, "select"); +this.clearTemp(); +break; +case 5: +var l = shape; +if (!l.isActive || l.bsSizeSet == null) return ""; +this.clearTemp(); +for (var i = l.bsSizeSet.nextSetBit(0); i >= 0; i = l.bsSizeSet.nextSetBit(i + 1)) { +var t = l.getLabel(i); +var cmd = "label "; +if (t == null) { +cmd += JU.PT.esc(l.formats[i]); +} else { +cmd += JU.PT.esc(t.textUnformatted); +if (t.pymolOffset != null) cmd += ";set labelOffset " + JU.Escape.eAF(t.pymolOffset); +}JU.BSUtil.setMapBitSet(this.temp, i, i, cmd); +if (l.bsColixSet != null && l.bsColixSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand("label", l.paletteIDs[i], l.colixes[i], l.translucentAllowed)); +if (l.bsBgColixSet != null && l.bsBgColixSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, "background label " + J.shape.Shape.encodeColor(l.bgcolixes[i])); +var text = l.getLabel(i); +var sppm = (text != null ? text.scalePixelsPerMicron : 0); +if (sppm > 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelScaleReference " + (10000 / sppm)); +if (l.offsets != null && l.offsets.length > i) { +var offsetFull = l.offsets[i]; +JU.BSUtil.setMapBitSet(this.temp2, i, i, "set " + (JV.JC.isOffsetAbsolute(offsetFull) ? "labelOffsetAbsolute " : "labelOffset ") + JV.JC.getXOffset(offsetFull) + " " + JV.JC.getYOffset(offsetFull)); +var align = JV.JC.getHorizAlignmentName(offsetFull >> 2); +var pointer = JV.JC.getPointerName(offsetFull); +if (pointer.length > 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelPointer " + pointer); +if ((offsetFull & 32) != 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelFront"); + else if ((offsetFull & 16) != 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelGroup"); +if (align.length > 0) JU.BSUtil.setMapBitSet(this.temp3, i, i, "set labelAlignment " + align); +}if (l.mads != null && l.mads[i] < 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set toggleLabel"); +if (l.bsFontSet != null && l.bsFontSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getFontCommand("label", JU.Font.getFont3D(l.fids[i]))); +} +s = this.getCommands(this.temp, this.temp2, "select") + this.getCommands(null, this.temp3, "select"); +this.temp3.clear(); +this.clearTemp(); +break; +case 0: +this.clearTemp(); +var ac = this.vwr.ms.ac; +var atoms = this.vwr.ms.at; +var balls = shape; +var colixes = balls.colixes; +var pids = balls.paletteIDs; +var r = 0; +for (var i = 0; i < ac; i++) { +if (atoms[i] == null) continue; +if (shape.bsSizeSet != null && shape.bsSizeSet.get(i)) { +if ((r = atoms[i].madAtom) < 0) JU.BSUtil.setMapBitSet(this.temp, i, i, "Spacefill on"); + else JU.BSUtil.setMapBitSet(this.temp, i, i, "Spacefill " + JU.PT.escF(r / 2000)); +}if (shape.bsColixSet != null && shape.bsColixSet.get(i)) { +var pid = atoms[i].paletteID; +if (pid != J.c.PAL.CPK.id || JU.C.isColixTranslucent(atoms[i].colixAtom)) JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommand("atoms", pid, atoms[i].colixAtom, shape.translucentAllowed)); +if (colixes != null && i < colixes.length) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand("balls", pids[i], colixes[i], shape.translucentAllowed)); +}} +s = this.getCommands(this.temp, this.temp2, "select"); +this.clearTemp(); +break; +default: +s = shape.getShapeState(); +break; +} +return s; +}, "J.shape.Shape"); +Clazz_defineMethod(c$, "getFontLineShapeState", +function(shape){ +var s = this.getFontState(shape.myType, shape.font3d); +if (shape.tickInfos == null) return s; +var isOff = (s.indexOf(" off") >= 0); +var sb = new JU.SB(); +sb.append(s); +for (var i = 0; i < 4; i++) if (shape.tickInfos[i] != null) this.appendTickInfo(shape.myType, sb, shape.tickInfos[i]); + +if (isOff) sb.append(" " + shape.myType + " off;\n"); +return sb.toString(); +}, "J.shape.FontLineShape"); +Clazz_defineMethod(c$, "getAxesState", +function(axes){ +var sb = new JU.SB(); +sb.append(this.getFontLineShapeState(axes)); +return axes.getAxesState(sb); +}, "J.shape.Axes"); +Clazz_overrideMethod(c$, "getAtomShapeState", +function(shape){ +if (!shape.isActive) return ""; +this.clearTemp(); +var type = JV.JC.shapeClassBases[shape.shapeID]; +var isVector = (shape.shapeID == 18); +var mad; +if (shape.bsSizeSet != null) for (var i = shape.bsSizeSet.nextSetBit(0); i >= 0; i = shape.bsSizeSet.nextSetBit(i + 1)) JU.BSUtil.setMapBitSet(this.temp, i, i, type + " " + ((mad = shape.mads[i]) < 0 ? (isVector && mad < -1 ? "" + -mad : "on") : JU.PT.escF(mad / 2000))); + +if (shape.bsColixSet != null) for (var i = shape.bsColixSet.nextSetBit(0); i >= 0; i = shape.bsColixSet.nextSetBit(i + 1)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand(type, shape.paletteIDs[i], shape.colixes[i], shape.translucentAllowed)); + +var s = this.getCommands(this.temp, this.temp2, "select"); +this.clearTemp(); +return s; +}, "J.shape.AtomShape"); +Clazz_defineMethod(c$, "getEchoState", +function(sb, t){ +var isScale = (t != null && t.barPixels > 0); +var text = (t == null ? null : isScale ? t.textUnformatted : t.getStateText()); +if (text == null || !t.isEcho || t.target.equals("error")) return false; +var isImage = (t.image != null); +var strOff = null; +var echoCmd = "set echo ID " + JU.PT.esc(t.target); +switch (t.valign) { +case 3: +if (t.movableXPercent == 2147483647 || t.movableYPercent == 2147483647) { +strOff = (t.movableXPercent == 2147483647 ? t.movableX + " " : t.movableXPercent + "% ") + (t.movableYPercent == 2147483647 ? t.movableY + "" : t.movableYPercent + "%"); +} else { +strOff = "[" + t.movableXPercent + " " + t.movableYPercent + "%]"; +}case 4: +if (strOff == null) strOff = JU.Escape.eP(t.xyz); +sb.append(" ").append(echoCmd).append(" ").append(strOff); +if (t.align != 4) sb.append("; ").append(echoCmd).append(" ").append(JV.JC.getHorizAlignmentName(t.align)); +break; +default: +sb.append(" set echo ").append(JV.JC.getEchoName(t.valign)).append(" ").append(JV.JC.getHorizAlignmentName(t.align)); +} +if (t.movableZPercent != 2147483647) sb.append("; ").append(echoCmd).append(" depth ").appendI(t.movableZPercent); +if (isImage) { +sb.append("; ").append(echoCmd).append(" IMAGE /*file*/"); +} else { +sb.append("; echo "); +}sb.append(JU.PT.esc(text)); +sb.append(";\n"); +if (isImage && t.imageScale != 1) sb.append(" ").append(echoCmd).append(" scale ").appendF(t.imageScale).append(";\n"); +if (t.script != null) sb.append(" ").append(echoCmd).append(" script ").append(JU.PT.esc(t.script)).append(";\n"); +if (t.modelIndex >= 0) sb.append(" ").append(echoCmd).append(" model ").append(this.vwr.getModelNumberDotted(t.modelIndex)).append(";\n"); +if (t.pointerPt != null) { +sb.append(" ").append(echoCmd).append(" point ").append(Clazz_instanceOf(t.pointerPt,"JM.Atom") ? "({" + (t.pointerPt).i + "})" : JU.Escape.eP(t.pointerPt)).append(";\n"); +}if (t.pymolOffset != null) { +sb.append(" ").append(echoCmd).append(" offset ").append(JU.Escape.escapeFloatA(t.pymolOffset, true)).append(";\n"); +}t.appendFontCmd(sb); +sb.append("; color echo"); +if (JU.C.isColixTranslucent(t.colix)) sb.append(" ").append(JU.C.getColixTranslucencyLabel(t.colix)); +sb.append(" ").append(JU.C.getHexCode(t.colix)); +if (t.bgcolix != 0) { +sb.append("; color echo background "); +if (JU.C.isColixTranslucent(t.bgcolix)) sb.append(JU.C.getColixTranslucencyLabel(t.bgcolix)).append(" "); +sb.append(JU.C.getHexCode(t.bgcolix)); +}sb.append(";\n"); +if (t.hidden) { +if (isScale) sb.append(" set echo \"%SCALE\" hidden;\n"); + else sb.append(" set echo ID ").append(JU.PT.esc(t.target)).append(" hidden;\n"); +}return (t.target.startsWith("_!_elkey_")); +}, "JU.SB,JM.Text"); +Clazz_overrideMethod(c$, "getAllSettings", +function(prefix){ +var g = this.vwr.g; +var commands = new JU.SB(); +var list = new Array(g.htBooleanParameterFlags.size() + g.htNonbooleanParameterValues.size() + g.htUserVariables.size()); +var n = 0; +var _prefix = "_" + prefix; +for (var key, $key = g.htBooleanParameterFlags.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (prefix == null || key.indexOf(prefix) == 0 || key.indexOf(_prefix) == 0) list[n++] = (key.indexOf("_") == 0 ? key + " = " : "set " + key + " ") + g.htBooleanParameterFlags.get(key); +} +for (var key, $key = g.htNonbooleanParameterValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (key.charAt(0) != '@' && (prefix == null || key.indexOf(prefix) == 0 || key.indexOf(_prefix) == 0)) { +var value = g.htNonbooleanParameterValues.get(key); +if ((typeof(value)=='string')) value = JV.StateCreator.chop(JU.PT.esc(value)); +list[n++] = (key.indexOf("_") == 0 ? key + " = " : "set " + key + " ") + value; +}} +for (var key, $key = g.htUserVariables.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (prefix == null || key.indexOf(prefix) == 0) { +var value = g.htUserVariables.get(key); +var s = value.escape(); +list[n++] = key + " " + (key.startsWith("@") ? "" : "= ") + (value.tok == 4 ? JV.StateCreator.chop(JU.PT.esc(s)) : s); +}} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) this.app(commands, list[i]); + +commands.append("\n"); +return commands.toString(); +}, "~S"); +c$.chop = Clazz_defineMethod(c$, "chop", +function(s){ +var len = s.length; +if (len < 512) return s; +var sb = new JU.SB(); +var sep = "\"\\\n + \""; +var pt = 0; +for (var i = 72; i < len; pt = i, i += 72) { +while (s.charAt(i - 1) == '\\') i++; + +sb.append((pt == 0 ? "" : sep)).append(s.substring(pt, i)); +} +sb.append(sep).append(s.substring(pt, len)); +return sb.toString(); +}, "~S"); +Clazz_overrideMethod(c$, "getFunctionCalls", +function(f){ +if (f == null) f = ""; +var s = new JU.SB(); +var pt = f.indexOf("*"); +var isGeneric = (pt >= 0); +var isStatic = JV.Viewer.isStaticFunction(f); +var namesOnly = (f.equalsIgnoreCase("names") || f.equalsIgnoreCase("static_names")); +if (namesOnly) f = ""; +if (isGeneric) f = f.substring(0, pt); +f = f.toLowerCase(); +if (isStatic || f.length == 0) this.addFunctions(s, JV.Viewer.staticFunctions, f, isGeneric, namesOnly); +if (!isStatic || f.length == 0) this.addFunctions(s, this.vwr.localFunctions, f, isGeneric, namesOnly); +return s.toString(); +}, "~S"); +Clazz_defineMethod(c$, "addFunctions", +function(s, ht, selectedFunction, isGeneric, namesOnly){ +var names = new Array(ht.size()); +var n = 0; +for (var name, $name = ht.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) if (selectedFunction.length == 0 && !name.startsWith("_") || name.equalsIgnoreCase(selectedFunction) || isGeneric && name.toLowerCase().indexOf(selectedFunction) == 0) names[n++] = name; + +java.util.Arrays.sort(names, 0, n); +for (var i = 0; i < n; i++) { +var f = ht.get(names[i]); +s.append(namesOnly ? f.getSignature() : f.toString()); +s.appendC('\n'); +} +}, "JU.SB,java.util.Map,~S,~B,~B"); +c$.isTainted = Clazz_defineMethod(c$, "isTainted", +function(tainted, atomIndex, type){ +return (tainted != null && tainted[type] != null && tainted[type].get(atomIndex)); +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "getAtomicPropertyState", +function(taintWhat, bsSelected){ +var bs; +var commands = new JU.SB(); +for (var type = 0; type < 18; type++) if (taintWhat < 0 || type == taintWhat) if ((bs = (bsSelected != null ? bsSelected : this.vwr.ms.getTaintedAtoms(type))) != null) this.getAtomicPropertyStateBuffer(commands, type, bs, null, null); + +return commands.toString(); +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "getAtomicPropertyStateBuffer", +function(commands, type, bs, label, fData){ +if (!this.vwr.g.preserveState) return; +var s = new JU.SB(); +var dataLabel = (label == null ? JM.AtomCollection.userSettableValues[type] : label) + " set"; +var n = 0; +var isDefault = (type == 2); +var atoms = this.vwr.ms.at; +var tainted = this.vwr.ms.tainted; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(atoms[i])) continue; +s.appendI(i + 1).append(" ").append(atoms[i].getElementSymbol()).append(" ").append(atoms[i].getInfo().$replace(' ', '_')).append(" "); +switch (type) { +case 18: +if (i < fData.length) s.appendF(fData[i]); +break; +case 13: +s.appendI(atoms[i].getAtomNumber()); +break; +case 16: +s.append(atoms[i].getChainIDStr()); +break; +case 15: +s.appendI(atoms[i].group.getResno()); +break; +case 14: +s.appendI(atoms[i].getSeqID()); +break; +case 0: +s.append(atoms[i].getAtomName()); +break; +case 1: +s.append(atoms[i].getAtomType()); +break; +case 2: +if (JV.StateCreator.isTainted(tainted, i, 2)) isDefault = false; +s.appendF(atoms[i].x).append(" ").appendF(atoms[i].y).append(" ").appendF(atoms[i].z); +break; +case 12: +var v = atoms[i].getVibrationVector(); +if (v == null) s.append("0 0 0"); + else if (Float.isNaN(v.modScale)) s.appendF(v.x).append(" ").appendF(v.y).append(" ").appendF(v.z); + else s.appendF(1.4E-45).append(" ").appendF(1.4E-45).append(" ").appendF(v.modScale); +break; +case 17: +s.appendI(atoms[i].getAtomSite()); +break; +case 3: +s.appendI(atoms[i].getAtomicAndIsotopeNumber()); +break; +case 4: +s.appendI(atoms[i].getFormalCharge()); +break; +case 6: +s.appendF(atoms[i].getBondingRadius()); +break; +case 7: +s.appendI(atoms[i].getOccupancy100()); +break; +case 8: +s.appendF(atoms[i].getPartialCharge()); +break; +case 9: +s.appendF(atoms[i].getBfactor100() / 100); +break; +case 10: +s.appendI(atoms[i].getValence()); +break; +case 11: +s.appendF(atoms[i].getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)); +break; +} +s.append(" ;\n"); +++n; +} +if (n == 0) return; +if (isDefault) dataLabel += "(default)"; +commands.append("\n DATA \"" + dataLabel + "\"\n").appendI(n).append(" ;\nJmol Property Data Format 1 -- Jmol ").append(JV.Viewer.getJmolVersion()).append(";\n"); +commands.appendSB(s); +commands.append(" end \"" + dataLabel + "\";\n"); +}, "JU.SB,~N,JU.BS,~S,~A"); +Clazz_overrideMethod(c$, "undoMoveAction", +function(action, n){ +switch (action) { +case 4165: +case 4140: +switch (n) { +case 1275068425: +return (action == 4165 ? this.actionStates : this.actionStatesRedo).size(); +case -2: +this.actionStates.clear(); +this.actionStatesRedo.clear(); +break; +case -1: +(action == 4165 ? this.actionStates : this.actionStatesRedo).clear(); +break; +case 0: +n = 2147483647; +default: +if (n > 100) n = (action == 4165 ? this.actionStates : this.actionStatesRedo).size(); +for (var i = 0; i < n; i++) this.undoMoveActionClear(0, action, true); + +} +break; +} +return 0; +}, "~N,~N"); +Clazz_overrideMethod(c$, "undoMoveActionClear", +function(taintedAtom, type, clearRedo){ +if (!this.vwr.g.preserveState) return; +var modelIndex = (taintedAtom >= 0 && this.vwr.ms.at[taintedAtom] != null ? this.vwr.ms.at[taintedAtom].mi : this.vwr.ms.mc - 1); +switch (type) { +case 4140: +case 4165: +this.vwr.stopMinimization(); +var s = ""; +var list1; +var list2; +switch (type) { +default: +case 4165: +list1 = this.actionStates; +list2 = this.actionStatesRedo; +break; +case 4140: +list1 = this.actionStatesRedo; +list2 = this.actionStates; +if (this.actionStatesRedo.size() == 1) return; +break; +} +if (list1.size() == 0 || this.undoWorking) return; +this.undoWorking = true; +list2.add(0, list1.removeItemAt(0)); +s = this.actionStatesRedo.get(0); +if (type == 4165 && list2.size() == 1) { +var pt = Clazz_newIntArray(-1, [1]); +type = JU.PT.parseIntNext(s, pt); +taintedAtom = JU.PT.parseIntNext(s, pt); +this.undoMoveActionClear(taintedAtom, type, false); +}if (this.vwr.ms.am[modelIndex].isModelKit || s.indexOf("zap ") < 0) { +if (JU.Logger.debugging) this.vwr.log(s); +this.vwr.evalStringQuiet(s); +} else { +this.actionStates.clear(); +}break; +default: +if (this.undoWorking && clearRedo) return; +this.undoWorking = true; +var bs; +var sb = new JU.SB(); +sb.append("#" + type + " " + taintedAtom + " " + ( new java.util.Date()) + "\n"); +if (taintedAtom >= 0) { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +this.vwr.ms.taintAtoms(bs, type); +sb.append(this.getAtomicPropertyState(-1, null)); +} else { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +sb.append("zap "); +sb.append(JU.Escape.eBS(bs)).append(";"); +this.getInlineData(sb, this.vwr.getModelExtract(bs, false, true, "MOL"), true, null, null); +sb.append("set refreshing false;").append(this.vwr.acm.getPickingState()).append(this.vwr.tm.getMoveToText(0, false)).append("set refreshing true;"); +}if (clearRedo) { +this.actionStates.add(0, sb.toString()); +this.actionStatesRedo.clear(); +} else { +this.actionStatesRedo.add(1, sb.toString()); +}if (this.actionStates.size() == 100) { +this.actionStates.removeItemAt(99); +}} +this.undoWorking = !clearRedo; +}, "~N,~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JV"); +(function(){ +var c$ = Clazz_declareType(JV, "JmolStateCreator", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corescript.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corescript.z.js new file mode 100755 index 000000000000..3bace909d47e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corescript.z.js @@ -0,0 +1,749 @@ +(function(Z,ea,fa,ga,T,ha,K,u,M,O,Q,H,ba,R,ia,D,I,S,$,X,V,ja,Y,aa,ka,la,ma,P,na,oa,pa,qa,ca,da,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,Ca,Da,Ea,Fa,Ga,Ha,Ia,Ja,Ka,La,f,s){K("J.api");Y(J.api,"JmolParallelProcessor");K("J.api");Y(J.api,"JmolScriptEvaluator");K("J.api");Y(J.api,"JmolScriptFunction");K("J.api");Y(J.api,"JmolScriptManager");K("JS");M(["J.thread.JmolThread"],"JS.CommandWatcherThread",["JU.Logger"],function(){var e=Q(function(){this.scriptManager=null;O(this,arguments)},JS,"CommandWatcherThread", +J.thread.JmolThread);R(e,function(){V(this,JS.CommandWatcherThread,[])});s(e,"setManager",function(a,b){this.scriptManager=a;this.setViewer(b,"CommmandWatcherThread");return 0},"~O,JV.Viewer,~O");s(e,"run",function(){for(Thread.currentThread().setPriority(1);!this.stopped;)try{Thread.sleep(50),this.stopped||this.scriptManager.runScriptNow()}catch(a){if(D(a,"InterruptedException")){var b=a;JU.Logger.warn("CommandWatcher InterruptedException! "+this);break}else if(D(a,Exception)){b=a;JU.Logger.warn("CommandWatcher Exception! script processing ERROR:\n\n"+ +b.toString());break}else throw a;}});s(e,"run1",function(){},"~N")});K("JS");M(["J.thread.JmolThread"],"JS.FileLoadThread",["JV.Viewer"],function(){var e=Q(function(){this.key=this.cacheName=this.fileName=null;O(this,arguments)},JS,"FileLoadThread",J.thread.JmolThread);R(e,function(a,b,c,d,g){this.setViewer(b,"FileLoadThread");this.fileName=c;this.key=d;this.cacheName=g;this.setEval(a);this.sc.pc--},"J.api.JmolScriptEvaluator,JV.Viewer,~S,~S,~S");s(e,"run1",function(a){for(;;)switch(a){case -1:a= +0;break;case 0:if(this.stopped||!this.vwr.testAsync&&this.eval.isStopped()){a=-2;break}null!=JV.Viewer.jmolObject&&JV.Viewer.jmolObject.loadFileAsynchronously(this,this.vwr.html5Applet,this.fileName,null);return;case 1:a=this.vwr.fm.getFileAsBytes(this.fileName,null);this.setData(this.fileName,this.fileName,a,null);return;case -2:this.resumeEval();return}},"~N");f(e,"setData",function(a,b,c){var d=a.equals("#CANCELED#");this.sc.parentContext.htFileCache.put(this.key,d?a:this.cacheName=this.cacheName.substring(0, +this.cacheName.lastIndexOf("_")+1)+a);this.vwr.cachePut(this.cacheName,c);null!=b&&this.vwr.cachePut(this.vwr.fm.getFilePath(a,!0,!1),c);this.run1(-2)},"~S,~S,~O,~O")});K("JS");M(["JS.ScriptTokenParser","JU.Lst"],"JS.ScriptCompiler","java.util.Hashtable JU.AU $.BS $.PT $.SB J.api.Interface J.i18n.GT JM.BondSet $.Group JS.ContextToken $.SV $.ScriptContext $.ScriptError $.ScriptFlowContext $.ScriptFunction $.ScriptManager $.T JU.Edge $.Escape $.Logger JV.FileManager $.Viewer".split(" "),function(){var e= +Q(function(){this.filename=null;this.isSilent=!1;this.lineIndices=this.lineNumbers=this.aatokenCompiled=this.contextVariables=null;this.lnLength=8;this.isPrivateScript=this.isPrivateFunc=this.haveComments=this.isCheckOnly=this.isShowScriptOutput=this.preDefining=!1;this.vBraces=this.lltoken=this.ltoken=this.flowContext=this.thisFunction=this.scriptExtensions=null;this.iBrace=this.setEqualPt=this.forPoint3=this.ptSemi=this.bracketCount=this.setBraceCount=this.braceCount=this.parenCount=this.nSemiSkip= +this.cchScript=this.cchToken=this.ichBrace=0;this.endOfLine=this.needRightParen=this.isEndOfCommand=this.iHaveQuotedString=!1;this.comment=null;this.tokLastMath=0;this.checkImpliedScriptCmd=!1;this.vFunctionStack=null;this.implicitString=this.isUserToken=this.isComment=this.isShowCommand=this.allowMissingEnd=!1;this.afterWhite=this.tokInitialPlusPlus=0;this.isDotDot=!1;this.vPush=this.identLC=this.ident=null;this.pushCount=0;this.forceFlowContext=null;this.haveENDIF=this.isWhere=!1;this.chFirst="\x00"; +this.afterMath=0;O(this,arguments)},JS,"ScriptCompiler",JS.ScriptTokenParser);X(e,function(){this.vPush=new JU.Lst});R(e,function(a){V(this,JS.ScriptCompiler,[]);this.vwr=a},"JV.Viewer");f(e,"compile",function(a,b,c,d,g,p){this.isCheckOnly=p;this.filename=a;this.isSilent=d;this.script=b;this.isWhere=b.startsWith("w_h_e_r_e = ");this.logMessages=!d&&!c&&g;this.preDefining="#predefine"===a;a=this.compile0(!0);this.atokenInfix=null;a||this.handleError();c=new JS.ScriptContext;a=0==this.iBrace&&0==this.parenCount&& +0==this.braceCount&&0==this.bracketCount;c.isComplete=a;c.script=b;c.scriptExtensions=this.scriptExtensions;c.isEditor=null!=this.scriptExtensions&&0<=this.scriptExtensions.indexOf("\u0001## ISEDITOR");c.errorType=this.errorType;null!=this.errorType&&(c.iCommandError=this.iCommand,this.setAaTokenCompiled());c.saveTokens(this.aatokenCompiled);c.errorMessage=this.errorMessage;c.errorMessageUntranslated=null==this.errorMessageUntranslated?this.errorMessage:this.errorMessageUntranslated;this.allowMissingEnd&& +(null!=c.errorMessage&&0<=c.errorMessageUntranslated.indexOf("missing END"))&&(c.errorMessage=c.errorMessageUntranslated);c.lineIndices=this.lineIndices;c.lineNumbers=this.lineNumbers;c.vars=this.contextVariables;return c},"~S,~S,~B,~B,~B,~B");f(e,"newContextVariable",function(a){this.theToken=JS.T.o(1073741824,a);if(0this.ichToken)?(this.ptSemi=this.script.indexOf(";",this.ichToken),this.ptSemi>=this.ichToken&&JS.ScriptManager.setStateScriptVersion(this.vwr, +this.script.substring(this.ichToken+21,this.ptSemi).trim())):this.haveENDIF=0<=this.script.indexOf("endif");this.cchScript=this.script.length;a:for(;;){this.vFunctionStack=new JU.Lst;this.htUserFunctions=new java.util.Hashtable;this.errorLine=this.errorMessageUntranslated=this.errorMessage=this.errorType=this.flowContext=this.thisFunction=this.aatokenCompiled=this.lineIndices=this.lineNumbers=this.contextVariables=null;this.isPrivateFunc=this.isPrivateScript=!1;this.ichBrace=this.ichComment=this.ichCurrentCommand= +this.ichToken=this.nSemiSkip=0;this.lineCurrent=1;this.tokLastMath=this.iCommand=0;this.lastToken=JS.T.tokenOff;this.vBraces=new JU.Lst;this.vPush=new JU.Lst;this.parenCount=this.braceCount=this.iBrace=this.pushCount=0;this.isDotDot=!1;this.ptSemi=-10;this.cchToken=0;this.lnLength=8;this.lineNumbers=aa(this.lnLength,0);this.lineIndices=I(this.lnLength,2,0);this.isNewSet=this.isSetBrace=!1;this.ptNewSetModifier=1;this.checkImpliedScriptCmd=this.iHaveQuotedString=this.isShowScriptOutput=!1;this.lltoken= +new JU.Lst;this.ltoken=new JU.Lst;this.tokCommand=0;this.tokenAndEquals=this.lastFlowCommand=null;this.bracketCount=this.setBraceCount=this.tokInitialPlusPlus=0;this.forPoint3=-1;this.setEqualPt=2147483647;this.endOfLine=!1;this.comment=null;this.needRightParen=this.isEndOfCommand=!1;this.forceFlowContext=this.lastFlowCommand=null;this.theTok=0;for(var b=1;;this.ichToken+=this.cchToken){if(0==(this.nTokens=this.ltoken.size()))null!=this.thisFunction&&0==this.thisFunction.chpt0&&(this.thisFunction.chpt0= +this.ichToken),this.ichCurrentCommand=this.ichToken,b=this.lineCurrent;if(!this.lookingAtLeadingWhitespace()){this.endOfLine=!1;if(!this.isEndOfCommand){this.endOfLine=this.lookingAtEndOfLine();switch(this.endOfLine?0:this.lookingAtComment()){case 2:continue;case 3:this.isEndOfCommand=!0;continue;case 1:this.isEndOfCommand=!0,this.comment=this.script.substring(this.ichToken,this.ichToken+this.cchToken).trim()}this.isEndOfCommand=this.isEndOfCommand||this.endOfLine||this.lookingAtTerminator()}if(this.isEndOfCommand){this.isEndOfCommand= +!1;switch(this.processTokenList(b,a)){case 2:continue;case 4:return!1}this.checkImpliedScriptCmd=!1;if(this.ichToken=this.cchScript?(this.ichEnd=this.cchScript,!0):0<(this.cchToken=this.nCharNewLine(this.ichEnd= +this.ichToken))});f(e,"nCharNewLine",function(a){var b;return"\r"!=(b=this.charAt(a))?"\n"==b?1:0:"\n"==this.charAt(++a)?2:1},"~N");f(e,"lookingAtTerminator",function(){var a=";"==this.script.charAt(this.ichToken);a&&0b)return this.ichToken=this.cchScript,3;this.incrementLineCount(this.script.substring(this.ichToken, +b));this.cchToken=b+("*"==a?3:2)-this.ichToken;return 2;default:return 0}var d=0>c;if(d&&!this.haveComments)return 0;this.ichComment>b&&(b=this.ichComment);for(;bc)return 0;this.ichComment=c;if(d&&0==this.nTokens&&3<=this.cchScript-c&&"j"==this.script.charAt(c+1)&&"c"==this.script.charAt(c+2))return this.cchToken= +b-this.ichToken,2;if(c!=this.ichToken)return 0;if(d&&this.cchScript>this.ichToken+3&&"j"==this.script.charAt(this.ichToken+1)&&"x"==this.script.charAt(this.ichToken+2)&&JS.ScriptCompiler.isSpaceOrTab(this.script.charAt(this.ichToken+3)))return this.cchToken=4,2;if(b==this.ichToken)return 0;this.cchToken=b-this.ichToken;!d&&(10==this.cchToken&&this.script.substring(this.ichToken,b).equals("//@private"))&&(this.isPrivateScript=!0);return 0==this.nTokens?1:2});f(e,"charAt",function(a){return athis.thisFunction.cmdpt0&&(this.thisFunction.cmdpt0=this.iCommand);if(1==c&&1==this.braceCount)if(null==this.lastFlowCommand){this.parenCount=this.setBraceCount= +this.braceCount=0;this.ltoken.removeItemAt(0);var d=JS.ContextToken.newContext(!0);this.addTokenToPrefix(this.setCommand(d));this.pushContext(d);this.addBrace(this.tokenCommand)}else this.parenCount=this.setBraceCount=0,this.setCommand(this.lastFlowCommand),102439!=this.lastFlowCommand.tok&&1073742332==this.tokAt(0)&&this.ltoken.removeItemAt(0),this.lastFlowCommand=null,this.forceFlowContext=this.flowContext;if(0=this.cchScript){this.setCommand(JS.T.tokenAll);this.theTok=0;switch(this.checkFlowEndBrace()){case 4:return 4;case 2:return this.isEndOfCommand=!0,this.cchToken=0,2}this.ichToken=this.cchScript}return 0},"~N,~B");f(e,"addBrace",function(a){this.vBraces.addLast(a);this.iBrace++},"JS.T");f(e,"pushContext",function(a){this.pushCount++;this.vPush.addLast(a)},"JS.T");f(e,"wasImpliedScript",function(){if(this.checkImpliedScriptCmd&& +2<=this.nTokens&&(134222850==this.tokCommand||4124==this.tokCommand)){var a=2==this.nTokens?this.lastToken.value.toString().toUpperCase():null;if(2this.cchToken)return this.ERROR(4);var a=this.getUnescapedStringLiteral(null!=this.lastToken&&!this.iHaveQuotedString&&1073741984!=this.lastToken.tok&&(36867==this.tokCommand&&2==this.nTokens&&545259546==this.lastToken.tok||134223363==this.tokCommand||1610616835==this.tokCommand|| +134222850==this.tokCommand||4124==this.tokCommand));this.iHaveQuotedString=!0;if((134223363==this.tokCommand||135174==this.tokCommand)&&134221834==this.lastToken.tok||134221834==this.tokCommand&&0>a.indexOf("@")){if(!this.getData(a))return this.ERROR(11,"data")}else this.addTokenToPrefix(JS.T.o(4,a)),this.implicitString&&(this.ichEnd=this.ichToken+this.cchToken,this.isEndOfCommand=!0);return 2}if(this.nTokens==this.ptNewSetModifier){var a=this.script.charAt(this.ichToken),b=0<="+-\\*/&|=".indexOf(a), +c=b||"."==a||"["==a,d=this.charAt(this.ichToken+1);if(!this.isNewSet&&this.isUserToken&&c&&("="==a||d==a||"="==d))this.isNewSet=!0;if(this.isNewSet||36867==this.tokCommand||JS.T.tokAttr(this.tokCommand,536870912))if("="==a&&(this.setEqualPt=this.ichToken),JS.T.tokAttr(this.tokCommand,536870912)&&"="==a||(this.isNewSet||this.isSetBrace)&&c)switch(this.setCommand(b?JS.T.tokenSet:"["==a&&!this.isSetBrace||"."==a&&"."==d?JS.T.tokenSetArray:JS.T.tokenSetProperty),this.ltoken.add(0,this.tokenCommand),this.cchToken= +1,a.charCodeAt(0)){case 91:return this.tokLastMath=1,this.addTokenToPrefix(JS.T.tokenArrayOpen),this.bracketCount++,2;case 46:if("."==d)return this.addTokenToPrefix(JS.T.tokenArrayOpen),this.cchToken=2,this.isDotDot=!0,2;this.addTokenToPrefix(JS.T.o(1073742336,"."));return 2;case 45:case 43:case 42:case 47:case 92:case 38:case 124:if(0==d.charCodeAt(0))return this.ERROR(4);if(d!=a&&"="!=d)return this.ERROR(1,'"'+a+'"');break;default:return this.lastToken=JS.T.tokenMinus,2}}a:switch(this.tokCommand){case 134222350:switch(this.lastToken.tok){case 4120:case 1296041985:case 1715472409:case 1073877010:2== +this.nTokens&&(this.iHaveQuotedString=!0);break;case 1073741925:case 1073742189:break;default:if(!this.iHaveQuotedString&&2!=this.nTokens)return 0;break}case 134223363:case 134222850:case 4124:case 1275072526:if("@"==this.script.charAt(this.ichToken))return this.iHaveQuotedString=!0,0;switch(this.tokCommand){case 4124:this.haveMacro=!0;break a;case 134223363:a=1073741839==this.tokAt(1);if(1==this.nTokens||a&&(2==this.nTokens||3==this.nTokens&&2==this.tokAt(2))){if(a&&2==this.nTokens&&JU.PT.isDigit(this.charAt(this.ichToken)))break a; +a=JV.Viewer.isDatabaseCode(this.charAt(this.ichToken));if(this.lookingAtLoadFormat(a)){var g=this.script.substring(this.ichToken,this.ichToken+this.cchToken),p=JS.T.getTokenFromName(g.toLowerCase());switch(null==p?0:p.tok){case 1073742015:case 1073742077:case 1073741839:case 1610616855:case 4130:case 1073877011:if(1!=this.nTokens)return 4;case 36868:case 134221834:case 1228935687:case 134217764:case 1073741984:case 1094717454:case 134218757:case 536870926:case 1073741849:case 1073741851:this.addTokenToPrefix(p); +break;default:p=a?4:JU.PT.isOneOf(g=g.toLowerCase(),";xyz;vxyz;vibration;temperature;occupancy;partialcharge;")?1073741824:0,0!=p&&(this.addTokenToPrefix(JS.T.o(p,g)),this.iHaveQuotedString=4==p)}return 2}break}if("{"==this.script.charAt(this.ichToken)||0Math.abs(p)?this.addTokenToPrefix(JS.T.o(1073741824,g)):this.addTokenToPrefix(JS.T.i(p)),2;break;case 603983903:if(2==this.nTokens&&134217764==this.lastToken.tok&&this.lookingAtImpliedString(!1,!1,!1,!0))return";"==this.script.charAt(this.ichToken+this.cchToken-1)&&--this.cchToken,g=this.script.substring(this.ichToken,this.ichToken+this.cchToken),this.addTokenToPrefix(JS.T.o(4,g)),2;break;case 134221856:if(2==this.nTokens&&4115== +this.lastToken.tok&&(this.iHaveQuotedString=!0),!this.iHaveQuotedString){if("@"==this.script.charAt(this.ichToken))return this.iHaveQuotedString=!0,0;if(this.lookingAtImpliedString(!0,!0,!0,!1)&&(a=this.script.substring(this.ichToken,this.ichToken+this.cchToken),b=a.indexOf(" as "),0a.indexOf(" ")&&0<=a.indexOf(".")))return this.addTokenToPrefix(JS.T.o(4,a)),this.iHaveQuotedString=!0,2}}if((this.implicitString=(new Boolean(this.implicitString&1==this.nTokens)).valueOf())&& +(!(134222850==this.tokCommand||4124==this.tokCommand)||!this.iHaveQuotedString)&&this.lookingAtImpliedString(!0,!0,!0,!1))return a=this.script.substring(this.ichToken,this.ichToken+this.cchToken),1825200146==this.tokCommand&&JU.PT.isOneOf(a.toLowerCase(),";on;off;hide;display;")?this.addTokenToPrefix(JS.T.getTokenFromName(a.toLowerCase())):this.addTokenToPrefix(JS.T.o(4,a)),2;if(this.lookingAtObjectID())return this.addTokenToPrefix(JS.T.getTokenFromName("$")),this.addTokenToPrefix(JS.T.o(1073741824, +this.script.substring(this.ichToken,this.ichToken+this.cchToken))),2;a=this.lookingAtExponential();if(null!=a)return this.addNumber(3,2147483647,a),2;if(this.lookingAtDecimal())return a=Float.$valueOf(this.script.substring(this.ichToken,this.ichToken+this.cchToken)),g=JU.Edge.getFloatEncodedInt(this.script.substring(this.ichToken,this.ichToken+this.cchToken)),this.addNumber(3,g,a),2;if(this.lookingAtSeqcode()){a=this.script.charAt(this.ichToken);try{g="*"==a||"^"==a?2147483647:Integer.parseInt(this.script.substring(this.ichToken, +this.ichToken+this.cchToken-2));p=this.script.charAt(this.ichToken+this.cchToken-1);"^"==p&&(p=" ");0>g&&(g=-g,this.addTokenToPrefix(JS.T.tokenMinus));var h=JM.Group.getSeqcodeFor(g,p);this.addTokenToPrefix(JS.T.tv(5,h,"seqcode"))}catch(e){if(D(e,"NumberFormatException"))return this.ERROR(9,""+a);throw e;}return 2}g=this.lookingAtInteger();if(2147483647!=g){p=this.script.substring(this.ichToken,this.ichToken+this.cchToken);if(102407==this.tokCommand||102408==this.tokCommand){if(1!=this.nTokens)return this.ERROR(0); +h=null==this.flowContext?null:this.flowContext.getBreakableContext(g=Math.abs(g));if(null==h)return this.ERROR(1,this.tokenCommand.value);this.tokenAt(0).intValue=h.pt0}this.addNumber(2,g,p);return 2}if(!this.isMathExpressionCommand&&0==this.parenCount||1073741824!=this.lastToken.tok&&!JS.ScriptTokenParser.tokenAttr(this.lastToken,134217728)){g="["==this.script.charAt(this.ichToken);a=this.lookingAtBitset();if(null!=a)return this.addTokenToPrefix(JS.T.o(10,g?JM.BondSet.newBS(a):a)),2;if(g&&(g=this.lookingAtMatrix(), +u(g,"JU.M34")))return this.addTokenToPrefix(JS.T.o(u(g,"JU.M4")?12:11,g)),2}return 0});f(e,"addNumber",function(a,b,c){this.addTokenToPrefix(this.afterWhite==this.ichToken?JS.SV.newSV(a,b,c):JS.T.tv(a,b,c))},"~N,~N,~O");f(e,"lookingAtMatrix",function(){var a,b;if(this.ichToken+4>=this.cchScript||"["!=this.script.charAt(this.ichToken)||"["!=this.script.charAt(this.ichToken+1)||0>(a=this.script.indexOf("]]",this.ichToken))||null==(b=JU.Escape.unescapeMatrix(this.script.substring(this.ichToken,a+2))))return null; +this.cchToken=a+2-this.ichToken;return b});f(e,"parseKnownToken",function(){var a=this.getPrefixToken();if(3==a)return 2;var b;if(this.isDotDot)return 268437504==a?this.bracketCount++:(this.addTokenToPrefix(JS.T.o(4,this.ident)),this.addTokenToPrefix(JS.T.tokenArrayClose)),this.isDotDot=!1,2;0!=this.tokLastMath&&(this.tokLastMath=a);if(null!=this.flowContext&&102410==this.flowContext.token.tok&&null!=this.flowContext.$var&&102411!=a&&102413!=a&&102410!=this.lastToken.tok)return this.ERROR(1,this.ident); +if(12290==this.lastToken.tok&&1073742332!=a&&1!=this.nTokens)return this.addTokenToPrefix(12290==a?this.lastToken:JS.T.o(4,this.ident)),2;switch(a){case 1073741824:if(0==this.nTokens&&!this.checkImpliedScriptCmd){if("'"==this.ident.charAt(0))return this.addTokenToPrefix(this.setCommand(JS.T.tokenScript)),this.cchToken=0,2;if("."==this.charAt(this.ichToken+this.cchToken))return this.addTokenToPrefix(this.setCommand(JS.T.tokenScript)),this.nTokens=1,this.cchToken=0,this.checkImpliedScriptCmd=!0,2}break; +case 268442114:if(this.nSemiSkip==this.forPoint3&&this.nTokens==this.ptSemi+2)return b=this.lastToken,this.addTokenToPrefix(JS.T.tokenEquals),this.addTokenToPrefix(b),b=JS.T.getTokenFromName(this.ident.substring(0,1)),this.addTokenToPrefix(b),this.addTokenToPrefix(JS.T.tokenLeftParen),this.needRightParen=!0,2;this.checkNewSetCommand();return 36867==this.tokCommand?(this.tokenAndEquals=JS.T.getTokenFromName(this.ident.substring(0,1)),this.setEqualPt=this.ichToken,0):554176565==this.tokCommand||554176526== +this.tokCommand?(this.addTokenToPrefix(this.tokenCommand),this.replaceCommand(JS.T.tokenSet),this.tokenAndEquals=JS.T.getTokenFromName(this.ident.substring(0,1)),this.setEqualPt=this.ichToken,0):2;case 268441601:case 268441602:if(0==this.nTokens)return this.tokInitialPlusPlus=this.theToken.tok,2;if(this.afterWhite==this.ichToken||this.afterMath==this.ichToken)this.theToken=JS.T.tv(this.theToken.tok,-1,this.theToken.value);!this.isNewSet&&1==this.nTokens&&this.checkNewSetCommand();if(this.isNewSet&& +0==this.parenCount&&0==this.bracketCount&&this.ichToken<=this.setEqualPt)return this.tokenizePlusPlus(a,!1),2;if(this.nSemiSkip==this.forPoint3&&this.nTokens==this.ptSemi+2)return b=this.lastToken,this.addTokenToPrefix(JS.T.tokenEquals),this.addTokenToPrefix(b),this.addTokenToPrefix(268441601==a?JS.T.tokenMinus:JS.T.tokenPlus),this.addTokenToPrefix(JS.T.i(1)),2;break;case 268440324:0==this.parenCount&&0==this.bracketCount&&(this.setEqualPt=this.ichToken);break;case 1073742336:36867==this.tokCommand&& +(0==this.parenCount&&0==this.bracketCount&&this.ichToken--this.parenCount)return this.ERROR(16,this.ident);0==this.parenCount&&(this.nSemiSkip=0);this.needRightParen&&(this.addTokenToPrefix(JS.T.tokenRightParen),this.needRightParen=!1);break;case 268437504:0this.bracketCount)return this.ERROR(16,"]");break;case 1073742337:return this.isDotDot=!0,this.addTokenToPrefix(JS.T.tokenArrayOpen),2}switch(this.lastToken.tok){case 1073742336:case 1073742337:case 268436992:case 268437504:return 0}switch(a){case 4134:return this.isPrivateFunc=!0,2;case 102409:if(135174==this.tokCommand||4103==this.tokCommand&&1==this.nTokens)break;if(!this.haveENDIF)return 5;case 364548:null!=this.flowContext&&(this.flowContext.forceEndIf= +!1);case 364547:if(0=this.nTokens||0!=this.braceCount||0!=this.parenCount)break;case 102439:this.isEndOfCommand=!0;this.ichEnd=this.ichToken+1;this.flowContext.setLine(); +break;case 36868:if(1==this.nTokens){this.replaceCommand(JS.T.tokenSetVar);this.newContextVariable(this.ident);break}else{if(this.ident.equals(","))return 2;if(JU.PT.isLetter(this.ident.charAt(0))){this.newContextVariable(this.ident);break}else{if(2!=this.nTokens||this.ident.equals("["))return this.ERROR(0);this.replaceCommand(JS.T.tokenSet)}}case 36867:1073742332==this.theTok?this.setBraceCount++:1073742338==this.theTok&&(this.setBraceCount--,this.isSetBrace&&(0==this.setBraceCount&&2147483647== +this.ptNewSetModifier)&&(this.ptNewSetModifier=this.nTokens+1));if(this.nTokens==this.ptNewSetModifier){c=this.tokenAt(0);if(268435968==this.theTok||this.isUserFunction(c.value.toString())){this.ltoken.set(0,this.setCommand(JS.T.tv(1073741824,0,c.value)));this.setBraceCount=0;break}if(1073741824!=this.theTok&&268442114!=this.theTok&&12290!=this.theTok&&!JS.T.tokAttr(this.theTok,536870912))return this.isNewSet?this.commandExpected():this.errorIntStr2(18,"SET",": "+this.ident),4;if(1==this.nTokens&& +(268441602==this.lastToken.tok||268441601==this.lastToken.tok)){this.replaceCommand(JS.T.tokenSet);this.addTokenToPrefix(this.lastToken);break}}break;case 134223363:if(12290==this.theTok&&(1==this.nTokens||1073741940==this.lastToken.tok||134217764==this.lastToken.tok))return this.addTokenToPrefix(JS.T.tokenDefineString),2;1073741848==this.theTok&&(this.iHaveQuotedString=!1);break;case 12290:if(1==this.nTokens){if(1073741824!=this.theTok)if(this.preDefining){if(!JS.T.tokAttr(this.theTok,2097152))return this.errorStr2("ERROR IN Token.java or JmolConstants.java -- the following term was used in JmolConstants.java but not listed as predefinedset in Token.java: "+ +this.ident,null),4}else JS.T.tokAttr(this.theTok,2097152)?JU.Logger.warn("WARNING: predefined term '"+this.ident+"' has been redefined by the user until the next file load."):!this.isCheckOnly&&1=this.iBrace||1073742338!=this.vBraces.get(this.iBrace-1).tok)return 0;this.vBraces.removeItemAt(--this.iBrace);var a=this.vBraces.removeItemAt(--this.iBrace); +1073742332==this.theTok&&(this.braceCount--,this.parenCount--);if(1275335685==a.tok)return this.vPush.removeItemAt(--this.pushCount),this.addTokenToPrefix(this.setCommand(JS.ContextToken.newContext(!1))),this.isEndOfCommand=!0,2;switch(null==this.flowContext?0:this.flowContext.token.tok){case 134320649:case 102402:case 364547:if(364547==this.tokCommand||102402==this.tokCommand)return 0;break;case 102410:case 102411:case 102413:if(102411==this.tokCommand||102413==this.tokCommand)return 0}return this.forceFlowEnd(a)}); +f(e,"forceFlowEnd",function(a){var b=this.tokenCommand;this.forceFlowContext=this.flowContext;a=this.flowStart(a);if(!this.checkFlowEnd(a.tok,a.value,this.ichBrace,!1))return 4;switch(a.tok){case 134320141:case 102436:case 364558:break;default:this.addTokenToPrefix(a)}this.setCommand(b);return 2},"JS.T");f(e,"flowStart",function(a){switch(a.tok){case 134320649:case 364547:case 102402:return JS.T.tokenIf;case 102413:case 102411:return JS.T.tokenSwitch;default:return JS.T.getTokenFromName(a.value)}}, +"JS.T");e.isBreakableContext=f(e,"isBreakableContext",function(a){return 134320648==a||102439==a||102406==a||102411==a||102413==a},"~N");f(e,"checkFlowCommand",function(a){var b=this.lltoken.size();switch(this.tokCommand){case 364548:if(!this.isFlowIfContextOK(this.flowContext)){if(!this.haveENDIF)return 5;this.errorStr(1,a);return 4}this.flowContext.token.intValue=this.flowContext.setPt0(b,!1);this.setFlowEnd(this.tokCommand,a);this.flowContext=this.flowContext.parent;return 0;case 102407:case 102408:b= +null==this.flowContext?null:this.flowContext.getBreakableContext(0);if(102408==this.tokCommand)for(;null!=b&&134320648!=b.token.tok&&102406!=b.token.tok;)b=b.parent;if(null==b)return this.errorStr(1,a),4;this.setCommand(JS.T.tv(this.tokCommand,b.pt0,a));this.theToken=this.tokenCommand;return 1;case 134320141:case 102436:if(null!=this.flowContext)return this.errorStr(1,JS.T.nameOf(this.tokCommand)),4;break;case 102402:case 364547:null!=this.flowContext&&!this.isFlowIfContextOK(this.flowContext)&&(this.flowContext= +this.flowContext.parent);if(!this.isFlowIfContextOK(this.flowContext)){if(!this.haveENDIF)return 5;this.errorStr(1,a);return 4}this.flowContext.token.intValue=this.flowContext.setPt0(b,!1);break;case 102411:case 102413:if(null==this.flowContext||102410!=this.flowContext.token.tok&&102411!=this.flowContext.token.tok&&(102413==this.tokCommand?0b||!this.script.substring(b,b+4).equalsIgnoreCase("END "))return!1;var c=this.script.substring(this.ichToken,b);this.incrementLineCount(c);this.addTokenToPrefix(JS.T.o(134221834, +c));this.addTokenToPrefix(JS.T.o(1073741824,"end"));this.addTokenToPrefix(JS.T.o(4,a));this.cchToken=b-this.ichToken+a.length+6;return!0},"~S");f(e,"incrementLineCount",function(a){var b,c=a.indexOf("\r"),d=a.indexOf("\n");if(0>c&&0>d)return 0;var g=this.lineCurrent;if(0>c||d=c;)("\n"==(b=a.charAt(d))||"\r"==b)&&this.lineCurrent++;return this.lineCurrent-g},"~S");e.isSpaceOrTab=f(e,"isSpaceOrTab",function(a){return" "==a||"\t"==a},"~S");f(e,"eol",function(a){return"\x00"== +a||"\r"==a||"\n"==a||";"==a&&0>=this.nSemiSkip},"~S");f(e,"lookingAtSetBraceSyntax",function(){for(var a=this.ichToken,b=1;++athis.cchScript)return!1; +this.chFirst=this.script.charAt(this.ichToken);if('"'!=this.chFirst&&(!a||"'"!=this.chFirst))return!1;a=this.ichToken;for(var b,c=!1;++ah)break;g<<=4;g+= +h;++b}g=String.fromCharCode(g)}}d.appendC(g)}return d.toString()},"~S,~N,~N");f(e,"lookingAtLoadFormat",function(a){for(var b=this.ichToken,c;JU.PT.isLetterOrDigit(c=this.charAt(b))&&(a||JU.PT.isLetter(c))||a&&!this.eol(c)&&!JU.PT.isWhitespace(c);)++b;if(!a&&b==this.ichToken||!JS.ScriptCompiler.isSpaceOrTab(c))return!1;this.cchToken=b-this.ichToken;return!0},"~B");f(e,"lookingAtImpliedString",function(a,b,c,d){var g=this.ichToken,p=this.script.charAt(g),h=1073741974==this.lastToken.tok,e=JS.T.tokAttr(this.tokCommand, +20480)&&1==(this.tokCommand&1),f="@"==p;if(f&&(g+3this.cchScript||g+2".01234567890-".indexOf(this.script.charAt(g+1))||"-"==this.script.charAt(g+2))){r=!1;continue}break;case 40:if(!c&&(4124==this.tokCommand||5<=g&&(this.script.substring(g-4,g).equals(".spt")||this.script.substring(g-4,g).equals(".png")||this.script.substring(g- +5,g).equals(".pngj")))){r=!1;continue}break;case 61:if(!b){r=!1;continue}break;case 123:m++;break;case 125:if(m--,0>m&&(0h&&(h=g):e=g}++g}if(f&&(0>h||h>e))return!1;a?g=e+1:0h&&0>=m&&1this.cchScript||"{"!=this.script.charAt(this.ichToken+1)||0>(a=this.script.indexOf("}",this.ichToken))||a+1==this.cchScript)return null;var b=JU.BS.unescape(this.script.substring(this.ichToken,a+2));null!=b&&(this.cchToken=a+2-this.ichToken);return b});f(e,"lookingAtObjectID", +function(){var a=1==this.nTokens,b=this.ichToken;if("$"!=this.charAt(b)||'"'==this.charAt(++b))return!1;for(;b"==c)&&++a;this.tokLastMath=1;break;default:if(!JU.PT.isLetter(c)&&!this.isDotDot)return!1;case 126:case 95:case 39:case 63:"?"==c&&(this.tokLastMath=1);for(;JU.PT.isLetterOrDigit(c=this.charAt(a))||"_"==c||"*"==c&&"?"==this.charAt(a-1)||"?"==c||"~"==c||"'"==c||"\\"==c&&"?"==this.charAt(a+1)||"^"==c&&a>b&&JU.PT.isDigit(this.charAt(a- +1));)++a}this.cchToken=a-b;return!0},"~N");f(e,"lookForSyncID",function(){var a;if('"'==(a=this.charAt(this.ichToken))||"@"==a||"\x00"==a)return!1;for(var b=this.ichToken;!JS.ScriptCompiler.isSpaceOrTab(a=this.charAt(b))&&"#"!=a&&"}"!=a&&!this.eol(a);)++b;this.cchToken=b-this.ichToken;return!0});f(e,"ERROR",function(a){this.errorIntStr2(a,null,null);return 4},"~N");f(e,"ERROR",function(a,b){this.errorStr(a,b);return 4},"~N,~S");f(e,"handleError",function(){this.errorType=this.errorMessage;var a=this.script, +b=a.indexOf("; ## GUI ##");0>b&&(b=this.ichEnd);this.errorLine=a.substring(this.ichCurrentCommand,Math.min(b,this.ichEnd<=this.ichCurrentCommand?this.ichToken+this.cchToken:this.ichEnd));a=(this.ichToken>>> "+this.errorLine.substring(this.ichToken-this.ichCurrentCommand):this.errorLine)+" <<<<";this.errorMessage=J.i18n.GT.$("script compiler ERROR: ")+this.errorMessage+JS.ScriptError.getErrorLineMessage(null,this.filename, +this.lineCurrent,this.iCommand,a);if(!this.isSilent){for(this.ichToken=Math.max(this.ichEnd,this.ichToken);!this.lookingAtEndOfLine()&&!this.lookingAtTerminator();)this.ichToken++;this.errorLine=this.script.substring(this.ichCurrentCommand,this.ichToken);this.vwr.addCommand(this.errorLine+"#??");JU.Logger.error(this.errorMessage)}return!1})});K("JS");M(["J.thread.JmolThread"],"JS.ScriptDelayThread",null,function(){var e=Q(function(){this.seconds=this.millis=0;this.isPauseDelay=this.doPopPush=!1;O(this, +arguments)},JS,"ScriptDelayThread",J.thread.JmolThread);R(e,function(a,b,c){V(this,JS.ScriptDelayThread,[]);this.setViewer(b,"ScriptDelayThread");this.millis=c;this.setEval(a)},"J.api.JmolScriptEvaluator,JV.Viewer,~N");s(e,"run1",function(a){for(;;)switch(a){case -1:var b;this.doPopPush=0b)this.millis=b}else this.millis=-this.millis;this.millis-=System.currentTimeMillis()-this.startTime; +this.isJS?this.seconds=0:(this.seconds=T(this.millis/1E3),this.millis-=1E3*this.seconds,0>=this.millis&&(this.millis=1));this.doPopPush&&this.vwr.popHoldRepaint("scriptDelayThread INIT");a=0;break;case 0:if(this.stopped||this.eval.isStopped()){a=-2;break}if(!this.runSleep(0this.seconds&&(this.millis=0);a=0a.indexOf("{0}")?null!=b&&(a+=": "+b):(a=JU.PT.rep(a,"{0}",b),0<=a.indexOf("{1}")? +a=JU.PT.rep(a,"{1}",c):null!=c&&(a+=": "+c),0<=a.indexOf("{2}")&&(a=JU.PT.rep(a,"{2}",c)));d&&J.i18n.GT.setDoTranslate(!0);return a},"~N,~S,~S,~S,~B");e.getErrorLineMessage=f(e,"getErrorLineMessage",function(a,b,c,d,g){var p="\n----";if(null!=b||null!=a)p+="line "+c+" command "+(d+1)+" of "+(null==a?b:a.equals("try")?"try":"function "+a)+":";return p+("\n "+g)},"~S,~S,~N,~N,~S");f(e,"setErrorMessage",function(a){this.errorMessageUntranslated=null;null==a?(this.$error=!1,this.errorMessage= +this.errorType=null,this.iCommandError=-1):(this.$error=!0,null==this.errorMessage&&(this.errorMessage=J.i18n.GT.$("script ERROR: ")),this.errorMessage+=a)},"~S")});K("JS");M(["JS.ScriptExpr"],"JS.ScriptEval","java.util.Arrays $.Hashtable JU.AU $.BArray $.BS $.Base64 $.Lst $.M3 $.M4 $.Measure $.P3 $.P4 $.PT $.Quat $.SB $.V3 J.api.Interface J.atomdata.RadiusData J.c.PAL $.STR $.VDW J.i18n.GT JM.BondSet $.Group $.Measurement JS.FileLoadThread $.SV $.ScriptCompiler $.ScriptContext $.ScriptDelayThread $.ScriptInterruption $.ScriptManager $.ScriptMathProcessor $.T JU.BSUtil $.ColorEncoder $.Edge $.Elements $.Escape $.Font $.Logger $.Parser $.SimpleUnitCell JV.ActionManager $.FileManager $.JC $.StateManager $.Viewer".split(" "), +function(){var e=Q(function(){this.sm=null;this.isJS=!1;this.fileLoadThread=this.scriptDelayThread=null;this.allowJSThreads=!0;this.isEditor=this.executing=this.executionStepping=this.executionPaused=this.executionStopped=this.tQuiet=this.listCommands=this.isCmdLine_c_or_C_Option=this.isCmdLine_C_Option=this.debugScript=this.historyDisabled=this.isFuncReturn=!1;this.timeEndExecution=this.timeBeginExecution=0;this.mustResumeEval=!1;this.outputBuffer=this.compiler=this.currentThread=null;this.contextPath= +"";this.functionName=this.scriptFileName=null;this.$isStateScript=!1;this.scriptLevel=0;this.scriptExtensions=this.script=this.lineIndices=this.lineNumbers=this.aatoken=null;this.pc=0;this.fullCommand=this.thisCommand=null;this.pcEnd=this.lineEnd=0;this.isGUI=this.isEmbedded=this.forceNoAddHydrogens=!1;this.parallelProcessor=null;this.pcResume=-1;O(this,arguments)},JS,"ScriptEval",JS.ScriptExpr);R(e,function(){V(this,JS.ScriptEval,[]);this.currentThread=Thread.currentThread()});s(e,"getAllowJSThreads", +function(){return this.allowJSThreads});f(e,"setAllowJSThreads",function(a){this.allowJSThreads=a},"~B");f(e,"doReport",function(){return!this.tQuiet&&this.scriptLevel<=JS.ScriptEval.scriptReportingLevel});s(e,"isStateScript",function(){return this.$isStateScript});s(e,"setStatic",function(a,b){switch(a){case 553648167:return 10<=b&&(JS.ScriptEval.contextDepthMax=b),JS.ScriptEval.contextDepthMax;case 553648144:return 0<=b&&(JS.ScriptEval.commandHistoryLevelMax=b),JS.ScriptEval.commandHistoryLevelMax; +case 553648168:return 0<=b&&(JS.ScriptEval.scriptReportingLevel=b),JS.ScriptEval.scriptReportingLevel}return 0},"~N,~N");s(e,"getScript",function(){return this.script});s(e,"setViewer",function(a){this.vwr=a;this.compiler=null==this.compiler?a.compiler:this.compiler;this.isJS=a.isSingleThreaded;return this},"JV.Viewer");s(e,"setCompiler",function(){this.vwr.compiler=this.compiler=new JS.ScriptCompiler(this.vwr)});s(e,"compileScriptString",function(a,b){this.clearState(b);this.contextPath="[script]"; +return this.compileScript(null,a,this.debugScript)},"~S,~B");s(e,"compileScriptFile",function(a,b){this.clearState(b);this.contextPath=a;var c=this.getScriptFileInternal(a,null,null,null);return null!=c&&this.compileScript(a,c,this.debugScript)},"~S,~B");s(e,"evaluateCompiledScript",function(a,b,c,d,g,p,h){var e=this.isCmdLine_C_Option;this.isCmdLine_C_Option=c;this.chk=this.isCmdLine_c_or_C_Option=b;this.historyDisabled=d;this.outputBuffer=p;this.privateFuncs=null;this.currentThread=Thread.currentThread(); +this.setAllowJSThreads((new Boolean(h&!this.vwr.getBoolean(603979892))).valueOf());this.listCommands=g;this.timeBeginExecution=System.currentTimeMillis();this.executionStepping=this.executionStopped=this.executionPaused=!1;this.executing=!0;this.vwr.pushHoldRepaintWhy("runEval"+(null==a?"":"+params"));this.setScriptExtensions();this.vwr.hasSelected=!1;this.executeCommands(a,!1,!0);this.isCmdLine_C_Option=e;this.$isStateScript&&JS.ScriptManager.setStateScriptVersion(this.vwr,null);this.vwr.hasSelected&& +this.isGUI&&this.vwr.setStatusSelect(null);this.vwr.hasSelected=!1},"~A,~B,~B,~B,~B,JU.SB,~B");f(e,"useThreads",function(){return!this.chk&&!this.vwr.headless&&!this.vwr.autoExit&&this.vwr.haveDisplay&&null==this.outputBuffer&&this.allowJSThreads});f(e,"executeCommands",function(a,b,c){var d=!1;try{null!=a&&(this.pushContext(null,"runCallback"),this.contextPath+=" >> "+a[0]+"callback ",this.setScriptArguments(a,!0));if(!this.dispatchCommands(!1,!1,b))return-1;null!=a&&this.popContext(!1,!1)}catch(g){if(D(g, +"JS.ScriptException")){if(u(g,"JS.ScriptInterruption")&&(!b||!g.isError))return-1;if(b)return this.vwr.setStringProperty("_errormessage",""+g),1;this.setErrorMessage(g.toString());this.errorMessageUntranslated=g.getErrorMessageUntranslated();this.report(this.errorMessage,!0);this.vwr.notifyError(null!=this.errorMessage&&0<=this.errorMessage.indexOf("java.lang.OutOfMemoryError")?"Error":"ScriptException",this.errorMessage,this.errorMessageUntranslated)}else this.vwr.handleError(g,!1),this.setErrorMessage(""+ +g+" "+this.vwr.getShapeErrorState()),this.errorMessageUntranslated=""+g,this.report(this.errorMessage,!0);d=!0}if(d||!this.isJS||!this.allowJSThreads||null!=a)this.vwr.setTainted(!0),this.vwr.popHoldRepaint("CLEAR HOLD - executeCommands "+(0=this.scriptLevel)){case 1:case 0:this.postProcessTry(null),this.executing&&this.executeCommands(null,!0,!1)}this.pcResume=-1}},"~O");f(e,"resumeViewer",function(a,b){this.vwr.setTainted(!0); +this.vwr.popHoldRepaint(a+(this.chk?"\u0001## REPAINT_IGNORE ##":""));this.vwr.queueOnHold=!1;b&&(this.vwr.clearScriptQueue(),this.vwr.scm.queueThreadFinished(-1))},"~S,~B");s(e,"runScript",function(a){this.vwr.isPreviewOnly||this.runScriptBuffer(a,this.outputBuffer,!1)},"~S");s(e,"runScriptBuffer",function(a,b,c){this.pushContext(null,"runScriptBuffer");this.contextPath+=" >> script() ";this.outputBuffer=b;this.setAllowJSThreads(!1);b=this.isFuncReturn;this.isFuncReturn=(new Boolean(this.isFuncReturn| +c)).valueOf();this.compileScript(null,a+"\u0001## EDITOR_IGNORE ##\u0001## REPAINT_IGNORE ##",!1)&&this.dispatchCommands(!1,!1,!1);this.popContext(!1,!1);this.isFuncReturn=b},"~S,JU.SB,~B");s(e,"checkScriptSilent",function(a){a=this.compiler.compile(null,a,!1,!0,!1,!0);if(null!=a.errorType)return a;this.restoreScriptContext(a,!1,!1,!1);this.chk=!0;this.isCmdLine_c_or_C_Option=this.isCmdLine_C_Option=!1;this.pc=0;try{this.dispatchCommands(!1,!1,!1)}catch(b){if(D(b,"JS.ScriptException"))this.setErrorMessage(b.toString()), +a=this.getScriptContext("checkScriptSilent");else throw b;}this.chk=!1;return a},"~S");e.getContextTrace=f(e,"getContextTrace",function(a,b,c,d){null==c&&(c=new JU.SB);null==b.lineNumbers&&System.out.println(b);var g=Math.min(b.pc,null==b.lineNumbers?b.pc:b.lineNumbers[b.lineNumbers.length-1]);c.append(JS.ScriptError.getErrorLineMessage(b.functionName,b.scriptFileName,b.lineNumbers[g],g,JS.ScriptEval.statementAsString(a,b.statement,d?b.iToken:9999,!1)));null!=b.parentContext&&JS.ScriptEval.getContextTrace(a, +b.parentContext,c,!1);return c},"JV.Viewer,JS.ScriptContext,JU.SB,~B");s(e,"setDebugging",function(){this.debugHigh=(this.debugScript=this.vwr.getBoolean(603979825))&&JU.Logger.debugging});s(e,"haltExecution",function(){this.isEmbedded&&(this.vwr.setBooleanProperty("allowEmbeddedScripts",!0),this.isEmbedded=!1);this.resumePausedExecution();this.executionStopped=!0});s(e,"pauseExecution",function(a){!this.chk&&!this.vwr.headless&&(a&&!this.isJS&&this.delayScript(-100),this.vwr.popHoldRepaint("pauseExecution "+ +a),this.executionStepping=!1,this.executionPaused=!0)},"~B");s(e,"stepPausedExecution",function(){this.executionStepping=!0;this.executionPaused=!1});s(e,"resumePausedExecution",function(){this.executionStepping=this.executionPaused=!1;this.tQuiet||this.vwr.setScriptStatus("Jmol script resumed",this.errorMessage,1+(this.timeEndExecution-this.timeBeginExecution),"resumed")});s(e,"isExecuting",function(){return this.executing&&!this.executionStopped});s(e,"isPaused",function(){return this.executionPaused}); +s(e,"isStepping",function(){return this.executionStepping});s(e,"isStopped",function(){return this.executionStopped||!this.isJS&&this.currentThread!==Thread.currentThread()});s(e,"getNextStatement",function(){return this.pc=this.lineIndices.length)return""; +if(b){for(var c=-1,d=this.script,g=d.length,p=0;pc&&(c=this.lineIndices[p][0]),g=this.lineIndices[p][1];else if(0==this.lineNumbers[p]||this.lineNumbers[p]>this.lineNumbers[a])break;0<=d.indexOf("\u0001")&&(d=d.substring(0,d.indexOf("\u0001")));p=d.length;g==p-1&&d.endsWith("}")&&g++;return c>=p||gg?"":d.substring(Math.max(c,0),Math.min(p,g))}c=this.lineIndices[a][0];g=this.lineIndices[a][1];d="";if(0>c||g<=c||g>this.script.length)return""; +try{d=this.script.substring(c,g),0<=d.indexOf("\\\n")&&(d=JU.PT.rep(d,"\\\n"," ")),0<=d.indexOf("\\\r")&&(d=JU.PT.rep(d,"\\\r"," ")),0this.script.indexOf("pdbAddHydrogens");a=this.script;(this.isGUI=0<=a.indexOf("; ## GUI ##"))&&(a=JU.PT.rep(a,"; ## GUI ##",""));this.pc=this.setScriptExtensions();!this.chk&&(this.vwr.scriptEditorVisible&&0>b.indexOf("\u0001## EDITOR_IGNORE ##"))&&this.vwr.scriptStatus("");this.script=a;return!this.$error},"~S,~S,~B");f(e,"fixScriptPath",function(a,b){if(null!=b&&0<=a.indexOf("$SCRIPT_PATH$")){var c=b,d=Math.max(b.lastIndexOf("|"), +b.lastIndexOf("/")),c=c.substring(0,d+1);a=JU.PT.rep(a,"$SCRIPT_PATH$/",c);a=JU.PT.rep(a,"$SCRIPT_PATH$",c)}return a},"~S,~S");f(e,"setScriptExtensions",function(){var a=this.scriptExtensions;if(null==a)return 0;var b=a.indexOf("\u0001##SCRIPT_STEP");0<=b&&(this.executionStepping=!0);b=a.indexOf("\u0001##SCRIPT_START");if(0>b)return 0;b=JU.PT.parseInt(a.substring(b+15));if(-2147483648==b)return 0;for(this.pc=0;this.pcb||this.lineIndices[this.pc][1]>= +b);this.pc++);0b)&&--this.pc;return this.pc});f(e,"getScriptFileInternal",function(a,b,c,d){if(0==a.toLowerCase().indexOf("javascript:"))return this.vwr.jsEval(a.substring(11));var g=Array(2);g[0]=a;if(!this.vwr.fm.getFileDataAsString(g,-1,!1,!0,!1))return this.setErrorMessage("io error reading "+g[0]+": "+g[1]),null;var p="";if(0<=("\n"+g[1]).indexOf("\nJmolManifest.txt\n")){var h;if(a.endsWith(".all.pngj")||a.endsWith(".all.png"))h= +"|state.spt",a+="|";else{0<=g[1].indexOf("movie.spt")&&(g[0]=a+"|movie.spt",this.vwr.fm.getFileDataAsString(g,-1,!1,!0,!1)&&(p=g[1]));a+="|JmolManifest.txt";g[0]=a;if(!this.vwr.fm.getFileDataAsString(g,-1,!1,!0,!1))return this.setErrorMessage("io error reading "+g[0]+": "+g[1]),null;h=JV.FileManager.getManifestScriptPath(g[1])}if(null!=h&&0this.vwr.tryPt;)this.popContext(!1,!1);var b=null==a;b&&(a=this.contextVariables); +this.vwr.displayLoadErrors=this.thisContext.displayLoadErrorsSave;this.popContext(!1,!1);var c=this.vwr.getP("_errormessage");0a)this.getContextVariableAsVariable("_breakval",!1).intValue=-a,this.pcEnd=this.pc;else{var b=Math.abs(this.aatoken[a][0].intValue),c=this.aatoken[a][0].tok;if(102411==c||102413==c)this.theToken=this.aatoken[b--][0], +a=Math.abs(this.theToken.intValue),102409!=this.theToken.tok&&(this.theToken.intValue=-a);else for(this.pc=-1;this.pc!=a&&null!=this.thisContext;){for(;null!=this.thisContext&&!JS.ScriptCompiler.isBreakableContext(this.thisContext.token.tok);)this.popContext(!0,!1);this.pc=this.thisContext.pc;this.popContext(!0,!1)}this.pc=b}},"~N");f(e,"restoreFunction",function(a,b,c){this.aatoken=a.aatoken;this.lineNumbers=a.lineNumbers;this.lineIndices=a.lineIndices;this.script=a.script;this.pc=0;null!=a.names&& +(this.contextVariables=new java.util.Hashtable,a.setVariables(this.contextVariables,b));null!=c&&this.contextVariables.put("_x",c)},"J.api.JmolScriptFunction,JU.Lst,JS.SV");f(e,"clearDefinedVariableAtomSets",function(){this.vwr.definedAtomSets.remove("# variable")});f(e,"defineSets",function(){if(!this.vwr.definedAtomSets.containsKey("# static")){for(var a=0;a=b.length)this.vwr.scriptStatus("JmolConstants.java ERROR: bad predefinition length:"+ +a);else{var c=b[1].tok;!JS.T.tokAttr(c,1073741824)&&!JS.T.tokAttr(c,2097152)?this.vwr.scriptStatus("JmolConstants.java ERROR: invalid variable name:"+a):(a=b[1].value.toLowerCase(),a.startsWith("dynamic_")&&(a="!"+a.substring(8)),this.vwr.definedAtomSets.put(a,b))}}},"~S");f(e,"lookupIdentifierValue",function(a){var b=this.lookupValue(a,!1);if(null!=b)return JU.BSUtil.copy(b);b=this.getAtomBits(1073741824,a);return null==b?new JU.BS:b},"~S");f(e,"lookupValue",function(a,b){if(this.chk)return new JU.BS; +this.defineSets();a=a.toLowerCase();var c=this.vwr.definedAtomSets.get(a),d=!1;null==c&&(c=this.vwr.definedAtomSets.get("!"+a),d=null!=c);if(u(c,"JU.BS"))return c;if(u(c,Array))return this.pushContext(null,"lookupValue"),c=this.atomExpression(c,-2,0,!0,!1,null,!0),this.popContext(!1,!1),d||this.vwr.definedAtomSets.put(a,c),c;if(a.equals("water"))return c=this.vwr.ms.getAtoms(1612709912,null),d||this.vwr.definedAtomSets.put(a,c),c;if(b)return null;d=a.length;if(5>d||"s"!=a.charAt(d-1))return null; +a=a.endsWith("ies")?a.substring(0,d-3)+"y":a.substring(0,d-1);return this.lookupValue(a,!0)},"~S,~B");s(e,"deleteAtomsInVariables",function(a){for(var b,c=this.vwr.definedAtomSets.entrySet().iterator();c.hasNext()&&((b=c.next())||1);){var d=b.getValue();u(d,"JU.BS")&&(JU.BSUtil.deleteBits(d,a),b.getKey().startsWith("!")||this.vwr.g.setUserVariable("@"+b.getKey(),JS.SV.newV(10,d)))}},"JU.BS");s(e,"getThisContext",function(){return this.thisContext});f(e,"clearState",function(a){this.thisContext=null; +this.scriptLevel=0;this.setErrorMessage(null);this.contextPath="";this.tQuiet=a},"~B");s(e,"pushContextDown",function(a){this.scriptLevel--;this.pushContext2(null,a)},"~S");f(e,"pushContext",function(a,b){this.scriptLevel==JS.ScriptEval.contextDepthMax&&this.error(44);this.pushContext2(a,b)},"JS.ContextToken,~S");f(e,"pushContext2",function(a,b){this.thisContext=this.getScriptContext(b);this.thisContext.token=a;if(null==a)this.scriptLevel=++this.thisContext.scriptLevel;else if(this.thisContext.scriptLevel= +-1,this.contextVariables=new java.util.Hashtable,null!=a.contextVariables)for(var c,d=a.contextVariables.keySet().iterator();d.hasNext()&&((c=d.next())||1);)JS.ScriptCompiler.addContextVariable(this.contextVariables,c);(this.debugHigh||this.isCmdLine_c_or_C_Option)&&JU.Logger.info("--\x3e>----------------------".substring(0,Math.min(15,this.scriptLevel+5))+this.scriptLevel+" "+this.scriptFileName+" "+a+" "+this.thisContext.id+" "+b+" path="+this.thisContext.contextPath)},"JS.ContextToken,~S");s(e, +"getScriptContext",function(a){var b=new JS.ScriptContext;this.debugHigh&&JU.Logger.info("creating context "+b.id+" for "+a+" path="+this.contextPath);b.why=a;b.scriptLevel=this.scriptLevel;b.parentContext=this.thisContext;b.contextPath=this.contextPath;b.scriptFileName=this.scriptFileName;b.parallelProcessor=this.parallelProcessor;b.functionName=this.functionName;b.script=this.script;b.lineNumbers=this.lineNumbers;b.lineIndices=this.lineIndices;b.saveTokens(this.aatoken);b.statement=this.st;b.statementLength= +this.slen;b.pc=b.pc0=this.pc;b.lineEnd=this.lineEnd;b.pcEnd=this.pcEnd;b.iToken=this.iToken;b.theToken=this.theToken;b.theTok=this.theTok;b.outputBuffer=this.outputBuffer;b.vars=this.contextVariables;b.isStateScript=this.$isStateScript;b.errorMessage=this.errorMessage;b.errorType=this.errorType;b.iCommandError=this.iCommandError;b.chk=this.chk;b.executionStepping=this.executionStepping;b.executionPaused=this.executionPaused;b.scriptExtensions=this.scriptExtensions;b.isEditor=this.isEditor;b.mustResumeEval= +this.mustResumeEval;b.allowJSThreads=this.allowJSThreads;return b},"~S");f(e,"popContext",function(a,b){if(null!=this.thisContext){0> "),0<=d&&(this.contextPath=this.contextPath.substring(0,d)),this.scriptFileName=a.scriptFileName,this.parallelProcessor=a.parallelProcessor,this.functionName=a.functionName,this.iToken=a.iToken,this.theToken= +a.theToken,this.theTok=a.theTok,this.outputBuffer=a.outputBuffer,this.$isStateScript=a.isStateScript,this.thisContext=a.parentContext,this.allowJSThreads=a.allowJSThreads,(this.debugHigh||this.isCmdLine_c_or_C_Option)&&JU.Logger.info("--r------------".substring(0,Math.min(15,this.scriptLevel+5))+this.scriptLevel+" "+this.scriptFileName+" isPop "+b+" isFlow "+c+" context.id="+a.id+" pc="+this.pc+"--\x3e"+a.pc+" "+this.contextPath)):(this.$error=null!=a.errorType,this.errorMessage=a.errorMessage,this.errorMessageUntranslated= +a.errorMessageUntranslated,this.iCommandError=a.iCommandError,this.errorType=a.errorType)}},"JS.ScriptContext,~B,~B,~B");f(e,"setException",function(a,b,c){a.untranslated=null==c?b:c;c="!".equals(c);this.errorType=b;this.iCommandError=this.pc;if(null==a.message)a.message="";else{for(var d=JS.ScriptEval.getContextTrace(this.vwr,this.getScriptContext("setException"),null,!0).toString();null!=this.thisContext&&!this.thisContext.isTryCatch;)this.popContext(!1,!1);0>a.message.indexOf(d)&&(a.message+=d, +a.untranslated+=d);a=c||null!=this.thisContext||this.chk||0<=b.indexOf("NOTE: file recognized as a script file: ");this.resumeViewer(c?"throw context":"scriptException",c);a||(this.isFuncReturn=!1,JU.Logger.error("eval ERROR: "+d+"\n"+this.toString()),this.vwr.autoExit&&this.vwr.exitJmol())}},"JS.ScriptException,~S,~S");e.statementAsString=f(e,"statementAsString",function(a,b,c,d){if(null==b||0==b.length)return"";var g=new JU.SB,p=b[0].tok;switch(p){case 0:return b[0].value;case 102409:if(2==b.length&& +(134320141==b[1].tok||102436==b[1].tok))return b[1].value.toString()}for(var h=!0,e=!1,f=!1,p=1"); +n=null;break}case 7:g.append(j.escape());n=null;break;case 5:g.appendC("^");n=null;break;case 1073742363:2147483647!=j.intValue?g.appendI(j.intValue):g.append(JM.Group.getSeqcodeStringFor(JS.ScriptExpr.getSeqCode(j))),j=b[++m],g.appendC(" "),g.append(e?"-":"- ");case 1073742362:2147483647!=j.intValue?g.appendI(j.intValue):g.append(JM.Group.getSeqcodeStringFor(JS.ScriptExpr.getSeqCode(j)));n=null;break;case 1073742357:g.append("*:");g.append(a.getChainIDStr(j.intValue));n=null;break;case 1073742355:g.append("*%"); +null!=j.value&&g.append(j.value.toString());n=null;break;case 1073742358:g.append("*/");case 1073742359:case 3:2147483647>j.intValue?g.append(JU.Escape.escapeModelFileNumber(j.intValue)):g.append(""+j.value);n=null;break;case 1073742361:g.appendC("[");n=6*j.intValue+1;g.append(JM.Group.standardGroupList.substring(n,n+3).trim());g.appendC("]");n=null;break;case 1073742360:g.appendC("[");g.appendO(j.value);g.appendC("]");n=null;break;case 1073742356:g.append("*.");break;case 1094713349:if(u(j.value, +"JU.P3")){n=j.value;g.append("cell=").append(JU.Escape.eP(n));n=null;break}break;case 4:g.append('"').appendO(j.value).append('"');n=null;break;case 268440324:case 268440322:case 268440321:case 268440320:case 268440323:case 268440325:1715472409==j.intValue?g.append(b[++m].value).append(" "):2147483647!=j.intValue&&g.append(JS.T.nameOf(j.intValue)).append(" ");break;case 364558:n=null;break;case 102409:g.append("end");n=null;break;default:if(JS.T.tokAttr(j.tok,1073741824)||!d)break;g.appendC("\n").append(j.toString()).appendC("\n"); +n=null}null!=n&&g.append(j.value.toString());c==m&&g.append("<<<<")}return g.toString()},"JV.Viewer,~A,~N,~B");s(e,"setObjectPropSafe",function(a,b){try{return this.setObjectProp(a,b,-1)}catch(c){if(D(c,"JS.ScriptException"))return null;throw c;}},"~S,~N");f(e,"setAtomProp",function(a,b,c){this.setShapePropertyBs(0,a,b,c)},"~S,~O,JU.BS");f(e,"restrictSelected",function(a,b){this.chk||this.sm.restrictSelected(a,b)},"~B,~B");f(e,"showString",function(a){this.showStringPrint(a,!1)},"~S");s(e,"showStringPrint", +function(a,b){this.chk||null==a||(null==this.outputBuffer?this.vwr.showString(a,b):this.appendBuffer(a,b))},"~S,~B");f(e,"report",function(a,b){this.chk||b&&0<=a.indexOf(" of try:")||(null==this.outputBuffer?this.vwr.scriptStatus(a):this.appendBuffer(a,b))},"~S,~B");f(e,"appendBuffer",function(a,b){(b||this.isFuncReturn||JU.Logger.isActiveLevel(4))&&this.outputBuffer.append(a).appendC("\n")},"~S,~B");f(e,"addProcess",function(a,b,c){if(null!=this.parallelProcessor){for(var d=Array(c),g=0;g=this.aatoken.length|| +a>=this.pcEnd||null==this.aatoken[a]?!1:this.lineIndices[a][1]>this.lineIndices[a][0]},"~N");s(e,"loadFileResourceAsync",function(a){this.loadFileAsync(null,a,-Math.abs(a.hashCode()),!1)},"~S");f(e,"loadFileAsync",function(a,b,c,d){if(!b.startsWith("?")){var g=this.vwr.getFullPathNameOrError(b);b=g[0];null!=g[1]&&this.errorStr(17,b+":"+g[1]);if(null!=this.vwr.fm.cacheGet(b,!1))return this.cancelFileThread(),b}null!=a&&(a="cache://local"+a);var g=this.pc+"_"+c+"_"+b,p;null==this.thisContext&&this.pushContext(null, +"loadFileAsync");null==this.thisContext.htFileCache&&(this.thisContext.htFileCache=new java.util.Hashtable);p=this.thisContext.htFileCache.get(g);if(null!=p&&0c&&(this.fileLoadThread=null);throw new JS.ScriptInterruption(this,"load",1);},"~S,~S,~N,~B");f(e,"cancelFileThread",function(){this.fileLoadThread=null;null!=this.thisContext&&"loadFileAsync"===this.thisContext.why&&this.popContext(!1,!1)});f(e,"logLoadInfo",function(a,b){0this.vwr.getInt(536870922));var d=this.isJS&&!b&&this.useThreads()&&0<=this.vwr.getInt(536870922);this.commandLoop(d);if(this.chk)return!0;var g=this.vwr.getInsertedCommand();"".equals(g)?a&&(this.debugScript&&this.vwr.getBoolean(603979879))&&this.vwr.getChimeMessenger().update(null):this.runScriptBuffer(g,null,!1);return!this.mustResumeEval&&!d||b?!0:!c&&this.mustResumeEval||null==this.thisContext?(a=null==this.thisContext,this.resumeEval(this.thisContext),this.mustResumeEval=!1,a):!0},"~B,~B,~B"); +f(e,"commandLoop",function(a){var b="",c=!1,d=null,g=System.currentTimeMillis();if(this.debugScript&&this.debugHigh&&!this.chk){for(var p=this.pc;p=this.lineNumbers.length||this.lineNumbers[this.pc]>this.lineEnd)break;if(this.debugHigh){var h=0,h=System.currentTimeMillis();this.vwr.scriptStatus("Eval.dispatchCommands():"+h);this.vwr.scriptStatus(this.script)}this.debugScript&&!this.chk&&JU.Logger.info("Command "+this.pc+(null==this.thisContext?"":" path="+this.thisContext.contextPath));this.theToken=0==this.aatoken[this.pc].length?null:this.aatoken[this.pc][0];if(!this.historyDisabled&&(!this.chk&& +this.scriptLevel<=JS.ScriptEval.commandHistoryLevelMax&&!this.tQuiet)&&(h=this.getCommand(this.pc,!0,!0),null!=this.theToken&&0this.slen||102439!=this.st[1].tok))d.addLast(this.st);else{if(this.chk){if(this.isCmdLine_c_or_C_Option&& +JU.Logger.info(this.thisCommand),1==this.slen&&134320141!=this.st[0].tok&&102436!=this.st[0].tok)continue}else if(this.debugScript&&this.logDebugScript(this.st,0),0==this.scriptLevel&&this.vwr.g.logCommands&&this.vwr.log(this.thisCommand),this.debugHigh&&null!=this.theToken&&JU.Logger.debug(this.theToken.toString()),!this.isJS&&this.isEditor&&0==this.scriptLevel){this.notifyScriptEditor(this.pc);try{Thread.sleep(100)}catch(e){if(!D(e,"InterruptedException"))throw e;}}if(null!=this.theToken)switch(h= +this.theToken.tok,h){case 36867:this.cmdSet();continue;case 134320648:c=this.cmdFor(h,c);continue;case 102439:this.pushContext(this.theToken,"PROCESS");null!=this.parallelProcessor&&(d=new JU.Lst);continue;default:if(JS.T.tokAttr(h,102400)){c=this.cmdFlow(h,c,d);102439==this.theTok&&(d=null);continue}this.processCommand(h);this.setCursorWait(!1);266298!=h&&this.executionStepping&&(this.executionPaused=this.isCommandDisplayable(this.pc+1))}}}}},"~B");f(e,"notifyScriptEditor",function(a){this.vwr.notifyScriptEditor(this.lineIndices[a][0]<< +16|this.lineIndices[a][1],null)},"~N");f(e,"processCommand",function(a){if(JS.T.tokAttr(this.theToken.tok,135168))this.processShapeCommand(a);else switch(a){case 0:!this.chk&&this.vwr.getBoolean(603979879)&&this.vwr.getChimeMessenger().showHash(this.outputBuffer,this.theToken.value);break;case 1275335685:this.pushContext(this.theToken,"PUSH");break;case 1275334681:this.popContext(!0,!1);break;case 268436482:break;case 4097:this.cmdAnimation();break;case 1610616835:this.cmdBackground(1);break;case 4100:this.cmdBind(); +break;case 4101:this.cmdBondorder();break;case 20488:this.cmdCD();break;case 12289:this.cmdCenter(1);break;case 1765808134:this.cmdColor();break;case 12290:this.cmdDefine();break;case 528397:this.cmdDelay();break;case 12291:this.cmdDelete();break;case 554176526:this.cmdSlab(!0);break;case 1610625028:this.cmdDisplay(!0);break;case 266255:case 266281:if(this.chk)break;0this.slen||"string"!=typeof this.getToken(1).value)&&this.invArg();var a=this.getToken(1).value.toLowerCase();-2147483648!=JU.PT.parseInt(a)&&this.invArg();if(!this.chk){var b=a.startsWith("site_");if(0==a.indexOf("dynamic_")||b){for(var c=Array(this.slen),d=this.slen;0<=--d;)c[d]=this.st[d];this.vwr.definedAtomSets.put("!"+ +(b?a:a.substring(8)),c)}else b=this.atomExpressionAt(2),this.vwr.definedAtomSets.put(a,b),this.chk||this.vwr.g.setUserVariable("@"+a,JS.SV.newV(10,b))}});f(e,"cmdDelay",function(){var a=0;switch(this.getToken(1).tok){case 1073742335:a=1;break;case 2:a=1E3*this.intParameter(1);break;case 3:a=H(1E3*this.floatParameter(1));break;default:this.error(34)}this.refresh(!1);this.doDelay(Math.abs(a))});f(e,"cmdDelete",function(){if(1073742330==this.tokAt(1))4==this.slen&&this.optParameterAsString(2).equals("saved")&& +4==this.slen?(this.vwr.stm.deleteSaved(this.optParameterAsString(3)),this.doReport()&&this.report(J.i18n.GT.o(J.i18n.GT.$("show saved: {0}"),this.vwr.stm.listSavedStates()),!1)):this.setObjectProperty();else{var a=1==this.slen?null:this.atomExpression(this.st,1,0,!0,!1,null,!1);this.chk||(null==a&&(a=this.vwr.getAllAtoms()),a=this.vwr.deleteAtoms(a,!1),this.doReport()&&this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms deleted"),a),!1))}});f(e,"cmdDisplay",function(a){var b=null,c=0,d=1,g;switch(g=this.tokAt(1)){case 1275069441:case 1073742119:c= +g,g=this.tokAt(++d)}var p=1086324742==g;p&&(g=this.tokAt(++d));switch(g){case 1073742330:this.setObjectProperty();return;case 0:break;default:b=4==this.slen&&1677721602==this.tokAt(2)?JM.BondSet.newBS(JU.BSUtil.newBitSet2(0,this.vwr.ms.bondCount)):this.atomExpressionAt(d)}this.chk||(u(b,"JM.BondSet")?this.vwr.ms.displayBonds(b,a):this.vwr.displayAtoms(b,a,p,c,this.tQuiet))},"~B");f(e,"cmdDots",function(a){this.chk||this.sm.loadShape(a);this.setShapeProperty(a,"init",null);for(var b=NaN,c=J.atomdata.RadiusData.EnumType.ABSOLUTE, +d=1,g=!1;;){switch(this.getToken(d).tok){case 1073742072:g=!0;case 1073742335:b=1;c=J.atomdata.RadiusData.EnumType.FACTOR;break;case 1073742334:b=0;break;case 1073741976:this.setShapeProperty(a,"ignore",this.atomExpressionAt(d+1));d=this.iToken+1;continue;case 3:g=1073742072==this.tokAt(d+1)||0>this.floatParameter(d);break;case 2:var p=this.intParameter(d);if(1665140738==this.tokAt(d+1)){d++;this.setShapeProperty(a,"atom",Integer.$valueOf(p));this.setShapeProperty(a,"radius",Float.$valueOf(this.floatParameter(++d))); +1765808134==this.tokAt(++d)&&(this.setShapeProperty(a,"colorRGB",Integer.$valueOf(this.getArgbParam(++d))),d++);10!=this.getToken(d).tok&&this.invArg();this.setShapeProperty(a,"dots",this.st[d].value);return}}break}b=Float.isNaN(b)?this.encodeRadiusParameter(d,g,!0):new J.atomdata.RadiusData(null,b,c,J.c.VDW.AUTO);null!=b&&(Float.isNaN(b.value)&&this.invArg(),g&&this.restrictSelected(!1,!1),this.setShapeSize(a,b))},"~N");f(e,"cmdEcho",function(a){if(!this.chk){a=this.optParameterAsString(a);var b= +!0;this.vwr.ms.getEchoStateActive()&&(a.startsWith("\u0001")&&(a=a.substring(1),b=!1),null!=a&&this.setShapeProperty(31,"text",a));b&&(this.vwr.getRefreshing()&&null!=a&&!a.startsWith("%SCALE"))&&this.showString(this.vwr.formatText(a))}},"~N");f(e,"cmdFile",function(){var a=this.intParameter(this.checkLast(1));if(!this.chk){var b=this.vwr.ms.getModelNumberIndex(1E6*a+1,!1,!1),c=-1;0<=b&&(c=this.vwr.ms.getModelNumberIndex(1E6*(a+1)+1,!1,!1),0>c&&(c=this.vwr.ms.mc),c--);this.vwr.setAnimationOn(!1); +this.vwr.am.setAnimationDirection(1);this.vwr.setAnimationRange(b,c);this.vwr.setCurrentModelIndex(-1)}});f(e,"cmdFixed",function(){var a=1==this.slen?null:this.atomExpressionAt(1);this.chk||this.vwr.setMotionFixedAtoms(a)});f(e,"cmdFor",function(a,b){var c=this.theToken,d=this.st[0].intValue,g=c.forVars,p=I(2,0),h=null,e=null,f=null,r=0,m=!0,j=!1,n=0,q=null;if(b&&null!=g)if(a=1275068432,f=g[0],e=g[1],h=g[1].value,n=++e.intValue,2==e.tok){j=0>n;p=h[0];m=h[1];if(m=p!=m&&mn;B++)switch(a=this.tokAt(B)){case 36868:C=!0;break;case 1073742339:0r.size())&&this.invArg(),B=r.get(0),r=B.tok){case 10:h=B.value;m=!h.isEmpty();break;case 7:h=B.getList();n=h.size();if((m=0g&&!this.chk;d=!0;var h=0;switch(a){case 134320141:case 102436:return this.cmdFunc(),b;case 364558:return b;case 102412:d=this.theToken;this.pushContext(d,"CATCH");!p&&null!=d.name0&&this.contextVariables.put(d.name0,d.contextVariables.get(d.name0));d=!p;this.st[0].intValue= +-Math.abs(g);break;case 102410:case 102413:case 102411:h=Math.abs(this.aatoken[Math.abs(g)][0].intValue);switch(p?0:this.cmdFlowSwitch(this.theToken,a)){case 0:h=-h;d=!1;break;case -1:d=!1}this.aatoken[this.pc][0].intValue=Math.abs(g);this.theToken=this.aatoken[Math.abs(g)][0];102409!=this.theToken.tok&&(this.theToken.intValue=h);break;case 134320649:case 102402:d=!p&&this.parameterExpressionBoolean(1,0);if(this.chk)break;h=Math.abs(this.aatoken[Math.abs(g)][0].intValue);this.aatoken[Math.abs(g)][0].intValue= +p||d?-h:h;102412==a&&(this.aatoken[this.pc][0].intValue=-g);break;case 364547:this.checkLength(1);0>g&&!this.chk&&(this.pc=-g-1);break;case 364548:this.checkLength(1);break;case 102406:b||this.pushContext(this.theToken,"WHILE");b=!1;!this.parameterExpressionBoolean(1,0)&&!this.chk&&(this.pc=g,this.popContext(!0,!1));break;case 102407:if(!this.chk){this.breakAt(g);break}if(1==this.slen)break;p=this.intParameter(this.checkLast(1));if(this.chk)break;for(a=0;ab||1<=b&&(6>b||63a)switch(this.getToken(this.checkLast(a)).tok){case 1073742335:break;case 1073742334:b=!1;break;default:this.error(5)}this.setBooleanProperty("frank",b)},"~N");f(e,"cmdFunc",function(){if(!this.chk|| +this.isCmdLine_c_or_C_Option){var a=this.getToken(0).value.toLowerCase();if(268440324==this.tokAt(1)&&1073742333==this.tokAt(2))this.vwr.removeFunction(a);else{this.isFunction(a)||this.error(10);var b=1==this.slen||3==this.slen&&268435968==this.tokAt(1)&&268435969==this.tokAt(2)?null:this.parameterExpressionList(1,-1,!1);this.chk||this.runFunctionAndRet(null,a,b,null,!1,!0,!0)}}});f(e,"cmdGetProperty",function(){if(!this.chk){var a="",b=a=this.optParameterAsString(1);0<=b.indexOf(".")&&(b=b.substring(0, +b.indexOf(".")));0<=b.indexOf("[")&&(b=b.substring(0,b.indexOf("[")));var b=this.vwr.getPropertyNumber(b),c="";switch(this.tokAt(2)){default:c=this.optParameterAsString(2);break;case 12290:case 1073742325:case 10:c=this.atomExpressionAt(2),a.equalsIgnoreCase("bondInfo")&&this.isAtomExpression(++this.iToken)&&(c=P(-1,[c,this.atomExpressionAt(this.iToken)]))}if(0b)c=a="";else if(0<=b&&3>this.slen){if((c=this.vwr.getDefaultPropertyParam(b)).equals("(visible)"))c=this.vwr.ms.getVisibleSet(!0)}else if(b== +this.vwr.getPropertyNumber("fileContents")){b=c.toString();for(c=3;cb&&this.invArg();null==a&&(b=0);g=ba&&this.invArg(),this.chk||this.vwr.getSetHistory(0==a?0:-2-a);else switch(this.getToken(this.checkLast(1)).tok){case 1073742335:case 1073741882:this.chk||this.vwr.getSetHistory(-2147483648); +break;case 1073742334:this.chk||this.vwr.getSetHistory(0);break;default:this.errorStr(24,"ON, OFF, CLEAR")}},"~N");f(e,"cmdHover",function(){if(!this.chk){var a=1==this.slen?"on":this.paramAsStr(1);a.equalsIgnoreCase("on")?a="%U":a.equalsIgnoreCase("off")&&(a=null);this.vwr.setHoverLabel(a)}});f(e,"cmdLabel",function(a,b){if(!this.chk){this.sm.loadShape(5);var c=null;switch(this.getToken(a).tok){case 1073742335:c=this.vwr.getStandardLabelFormat(0);break;case 1073742334:break;case 12294:case 1610625028:this.setShapeProperty(5, +"display",1610625028==this.theTok?Boolean.TRUE:Boolean.FALSE);return;case 7:c=this.theToken.value;break;default:c=this.paramAsStr(a)}this.sm.setLabel(c,null==b?this.vwr.bsA():b)}},"~N,JU.BS");f(e,"cmdLoad",function(){var a=!this.chk||this.isCmdLine_C_Option,b=!1,c=!1,d=!1,g=!1,p=!1,e=this.vwr.async,f=!1,l=!1,r=this.vwr.getBoolean(603979792),m=!1,j=null,n,q=134221834==this.tokAt(0)?0:1,C=null,s=this.vwr.ms.mc-(this.vwr.fm.getFileName().equals("zapped")?1:0),E=this.vwr.ms.ac,y=(new JU.SB).append("load"), +x=1,v=new java.util.Hashtable;this.$isStateScript&&(v.put("isStateScript",Boolean.TRUE),this.forceNoAddHydrogens&&v.put("doNotAddHydrogens",Boolean.TRUE));var w=null,t=null,G=null,A=null,A=new JU.SB,F=0,D;if(1==this.slen)q=0;else{w=this.paramAsStr(q);if(2==this.slen&&!this.chk&&(w.endsWith(".spt")||w.endsWith(".png")||w.endsWith(".pngj"))){this.cmdScript(0,w,null,null);return}D=this.tokAt(q);switch(D){case 1073742077:l=!0,y.append(" orientation"),this.vwr.stm.saveOrientation("preload",null),w=this.paramAsStr(++q), +D=JS.T.getTokFromName(w)}switch(D){case 1073741839:w=this.optParameterAsString(++q);n=JU.PT.parseInt(w);(b=!this.$isStateScript||0L&&(q=j.substring(0, +L+2),j=j.substring(L+2)),j.startsWith("cache://")?n=null:g||(j=this.checkFileExists("LOAD"+(b?"_APPEND_":"_"),e,j,z,!b&&this.pc!=this.pcResume),null==j&&this.error(57),j=q+j);q=e=null;null!=n&&(n.equals(".")&&(n=this.vwr.fm.getFilePath(j,!1,!0)),(0==n.length||this.vwr.fm.getFilePath(n,!1,!1).equalsIgnoreCase(this.vwr.fm.getFilePath(j,!1,!1)))&&this.invArg(),z=P(-1,[n]),e=this.vwr.getOutputChannel(n,z),null==e?JU.Logger.error("Could not create output stream for "+z[0]):v.put("outputChannel",e));if(null== +t&&0==F){y.append(" ");a||c?y.append(0<=j.indexOf("\n")||a?JU.PT.esc(j):j):p||(null!=n&&(n=this.vwr.fm.getFilePath(n,!1,!1)),j.equals("String[]")||y.append("/*file*/").append(null!=n?JU.PT.esc(n):"$FILENAME$"));if(!f&&(j.startsWith("=")||j.startsWith("*"))&&0g&&(d+=2);return d},"JU.SB,~S,java.util.Map,~N");f(e,"loadPNGJVar",function(a,b,c){b=P(-1,[JS.SV.newV(6,b)]);this.getCmdExt().dispatch(1073741866,!1,b);c.put("imageData",b[0].value);b=this.vwr.getOutputChannel(null,null);c.put("outputChannel",b);this.vwr.createZip("","BINARY",c);a="cache://VAR_"+a;this.vwr.cacheFileByName("cache://VAR_*",!1);this.vwr.cachePut(a,b.toByteArray());this.cmdScript(0, +a,null,null)},"~S,~O,java.util.Map");f(e,"getLoadFilesList",function(a,b,c,d,g){for(var p=null,e=null,f=null,l=null;aa?c.put("vibrationNumber",Integer.$valueOf(-a)):c.put("modelNumber",Integer.$valueOf(a));break;case 7:case 268437504:case 1073742195:c.remove("firstLastStep");for(var d=this.floatParameterSet(a,1,2147483647), +g=new JU.BS,p=I(d.length,0),e=0;eg)&&null!=(l=this.vwr.ms.getInfoM("modelLoadNote")))&&this.showString(l);l=this.vwr.ms.getInfoM("centroidMinMax");JU.AU.isAI(l)&&0p||p>=this.vwr.ms.ac)return;p=this.vwr.ms.at[p].mi; +if(this.iToken+1==this.slen){this.vwr.setCurrentModelIndex(p);return}c[d++]=p;a=this.iToken+1;g=!1;break;case 1073741904:this.iToken=1;p=2==this.tokAt(2)?this.intParameter(++this.iToken):1;this.checkLength(this.iToken+1);!this.chk&&0(m=this.floatParameter(q))){this.checkLength(q+1);this.chk||this.vwr.am.morph(-m);return}case 2:case 4:2==d&&this.invArg();var C=4==this.theTok?JU.Edge.getFloatEncodedInt(this.theToken.value):this.theToken.intValue;0>C&&1==d&&(f=!0,C=-C, +n&&1E6>C&&(C*=1E6));3==this.theTok&&(n&&m==H(m))&&(C=1E6*H(m));if(2147483647==C){g=!1;c[d++]=this.chk||1!=q?0:this.vwr.getModelIndexFromId(this.theToken.value.toString());break}if(-1==C){this.checkLength(a+1);this.chk||this.vwr.setAnimation(1073742108);return}1E3<=C&&(1E6>C&&n)&&(C=1E6*T(C/1E3)+C%1E3);!g&&(0==C&&0==d)&&(r=!0);1E6<=C&&(g=!1);c[d++]=C;break;case 1073742096:b=!0;break;case 1073742114:e=!0;break;case 1715472409:if(0>p&&0>(p=this.vwr.am.cmi))return;f=this.paramAsStr(++q);c=this.setVariable(++q, +-1,"",!1);if(null!=c&&!this.chk){if(f.equalsIgnoreCase("DSSR")){this.loadDssr(p,c.value);return}l=JS.SV.oValue(c)}this.chk||this.vwr.ms.setInfo(p,f,l);return;default:this.frameControl(a);return}if(!this.chk)if(e&&0==d&&(r=!0),r)this.vwr.setAnimationOn(!1),this.vwr.setAnimationRange(-1,-1),e||this.vwr.setCurrentModelIndex(-1);else{2==d&&!e&&(f=!0);if(n)g=!1;else if(g)for(q=0;qp&&0!=c[0])if(1E6>c[0]&&(c[0]*=1E6),2==d&&1E6>c[1]&&(c[1]*=1E6),0==c[0]%1E6)c[0]++,p=this.vwr.ms.getModelNumberIndex(c[0],!1,!1),0<=p&&(a=this.vwr.ms.getModelNumberIndex(1==d?c[0]+1E6:0==c[1]?-1:0==c[1]%1E6?c[1]+1000001:c[1]+1,!1,!1),0>a&&(a=this.vwr.ms.mc),a--,e?d=2:!f&&a!=p&&(f=!0),e=e||p==a);else return;(!b&&!e||0<=p)&&this.vwr.setCurrentModelIndexClear(p,!1);if(b&&2==d||e||f)0>a&&(a=this.vwr.ms.getModelNumberIndex(c[1],g,!1)),this.vwr.setAnimationOn(!1), +this.vwr.am.setAnimationDirection(1),this.vwr.setAnimationRange(p,a),this.vwr.setCurrentModelIndexClear(f&&!e?-1:0<=p?p:0,!1);b&&this.vwr.setAnimation(4143)}}}}},"~N");f(e,"loadDssr",function(a,b){0>a&&0>(a=this.vwr.am.cmi)&&this.errorStr(30,"load ");b.startsWith("{")||(b=this.vwr.getFileAsString3(b,!0,"script"));this.clearDefinedVariableAtomSets();var c=this.vwr.parseJSONMap(b);this.showString(this.vwr.getAnnotationParser(!0).fixDSSRJSONMap(c));this.vwr.ms.setInfo(a,"dssr",c)},"~N,~S"); +f(e,"cmdMove",function(){this.checkLength(-11);var a=JU.V3.new3(this.floatParameter(1),this.floatParameter(2),this.floatParameter(3)),b=this.floatParameter(4),c=JU.V3.new3(this.intParameter(5),this.intParameter(6),this.intParameter(7)),d=this.floatParameter(8),g=this.floatParameter(9),p=11==this.slen?this.intParameter(10):30;if(!this.chk&&(this.refresh(!1),this.useThreads()||(g=0),this.vwr.move(this,a,b,c,d,g,p),0z)return;h=Array(3);for(m=0;3>m;m++)h[m]=this.vwr.ms.getAtomSetCenter(JS.SV.getBitSet(y.get(z-3+m),!1))}else if(this.isArrayParameter(z+1))h=this.getPointArray(++z,-1,!1);else{h=Array(3);for(m=0;3>m;m++)h[m]=this.centerParameter(++z,null),z=this.iToken}z=h.length;if(3> +z)return;m=JU.Quat.getQuaternionFrame(h[z-3],h[z-2],h[z-1]);m=JU.Quat.new4(1,0,0,0).mulQ(m.inv().div(this.vwr.tm.getRotationQ()));n.setT(m.getNormal());h=m.getTheta();break;case 134217731:l=!0;if(this.isPoint3f(++z)){n.setT(this.centerParameter(z,null));break}h=this.getPoint4f(z);n.set(h.x,h.y,h.z);h=h.w;m=JU.Quat.newVA(n,h);break;case 1073742328:l=f=b=!0;if(this.isArrayParameter(++z))r=this.floatParameterSet(z,6,2147483647);else{e=this.atomExpressionAt(z).nextSetBit(0);z=this.atomExpressionAt(++this.iToken).nextSetBit(0); +if(0>e||0>z)return;c=this.vwr.getBranchBitSet(z,e,!0);j[0]=this.vwr.ms.at[e];j[1]=this.vwr.ms.at[z];e=2}break;case 4160:q=JU.V3.newV(this.centerParameter(++z,null));f=b=!0;break;case 136314895:x=!0;continue;case 1296041985:y=this.intParameter(++z);if(this.chk)continue;q=this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms,null,-1,!1,null);f=null==q?null:q.get("operations");(0==y||null==f||f.lengthy&&(h=-h,null!=q&&q.scale(-1));0==h&&null!=j[0]&&(n.normalize(),JU.Measure.getPlaneThroughPoint(j[0],n,F=new JU.P4));m=JU.Quat.newVA(n,h);e=null==j[0]?0:1;b=l=f=!0;continue;case 134221831:G=this.atomExpressionAt(++z);m=this.vwr.ms.getAtomPointVector(G);null==m&&(this.iToken=z,this.invArg());z=this.iToken;t=this.getPointVector(this.getToken(++z),z);if(null==t||m.size()!=t.size())this.iToken=z,this.invArg();C=new JU.M4;j[0]=new JU.P3;e=1;J.api.Interface.getInterface("JU.Eigen",this.vwr,"script"); +if(0.001<(this.chk?0:JU.Measure.getTransformMatrix4(m,t,C,j[0])))t=null;case 12:case 11:l=!0;m=new JU.M3;12==y&&(s=!0,C=this.theToken.value);null!=C?(j[0]=null,c=d,t=null,e=0,q=new JU.V3,C.getTranslation(q),C.getRotationScale(m)):m=this.theToken.value;m=this.chk?new JU.Quat:JU.Quat.newM(m);n.setT(m.getNormal());h=m.getTheta();f=!0;break;default:this.invArg()}z=this.iToken}if(!this.chk){null!=r&&3.4028235E38!=h&&(a=!0,g=h);b&&null==c&&(c=this.vwr.bsA());null!=G&&(b=!0,null==c&&(c=G));null!=m&&(!w&& +!v)&&(v=0h?-1:1)*Math.abs(h/g):0>g==(null==m?0h&&0x&&n.scale(-1)),C=null),a&&null==C&& +(C=JS.ScriptMathProcessor.getMatrix4f(m.getMatrix(),q)),null!=j[0]&&(e=1));if(null!=A||null!=F)if(this.vwr.invertAtomCoord(A,null,c,-1,!1),null==n)return;F=a&&(!this.vwr.headless||3.4028235E38==h);a&&!F&&(a=!1);if(!L&&2>e&&null==r){if(!f){if(F&&(null==c&&!this.useThreads())&&(a=!1,3.4028235E38==h))return;if(this.vwr.rotateAxisAngleAtCenter(this,j[0],n,d,h,a,c)&&this.isJS&&a&&null==c&&this.vwr.g.waitForMoveTo&&3.4028235E38!=h)throw new JS.ScriptInterruption(this,"rotate",1);return}0==e&&(j[0]=new JU.P3); +j[1]=JU.P3.newP(j[0]);j[1].add(n);e=2}0==e&&(j[0]=new JU.P3);if(2>e||0==j[0].distance(j[1]))j[1]=JU.P3.newP(j[0]),j[1].y+=1;3.4028235E38==h&&(h=0);if(L)0!=h&&((null==c||2!=e||a||null!=q||null!=r||null!=t||s)&&this.invArg(),c=this.vwr.getModelkit(!1).cmdRotateAtoms(c,j,h),this.doReport()&&this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms rotated"),c),!1));else{0!=h&&(null!=q&&!l)&&q.scale(h/q.length());if(a&&null!=q&&(0==h||0==g))h=0.01,d=1.4E-45==g?0.01:0>g?-h/g:0.01*g/q.length();null!=c&&(a&&null== +t&&null!=C)&&(m=this.vwr.ms.getAtomPointVector(c),t=JU.Measure.transformPoints(m,C,j[0]));if(null!=c&&!a&&null!=t)this.vwr.setAtomCoords(c,1145047049,t);else if(!F||this.useThreads())if(this.vwr.rotateAboutPointsInternal(this,j[0],j[1],d,h,a,c,q,t,r,s?C:null,!1)&&this.isJS&&a)throw new JS.ScriptInterruption(this,"rotate",1);}}},"~B,~B");f(e,"cmdRestore",function(){if(1c&&this.invArg();if(this.chk)return;var d="";switch(b){case 1073742077:d="Orientation";this.vwr.stm.restoreOrientation(a,c,!0);break;case 1073742132:d="Rotation";this.vwr.stm.restoreOrientation(a,c,!1);break;case 1073742139:d="Scene",this.vwr.stm.restoreScene(a,c)}if(this.isJS&&0=m&&this.invArg());else if(1073741890==a||1073741892==a)n++,r=Math.max(this.intParameter(n++)-1,0),j=r+1,this.checkToken(n)&&(j=268440576==this.getToken(n).tok?this.checkToken(++n)?this.intParameter(n++):0:-this.intParameter(n++),0>=j&&this.invArg());n=-n}else null!=b&&f&&(b=this.checkFileExists("SCRIPT_",f,b,n,!0));if(0>n){if(268435968==this.tokAt(n=-n))d=this.parameterExpressionList(n,-1,!1),n=this.iToken+1;this.checkLength(h? +n+1:n)}if(!this.chk||this.isCmdLine_c_or_C_Option)if(this.isCmdLine_c_or_C_Option&&(e=!0),null==c&&(c=this.getScriptFileInternal(b,q,C,s),null==c&&this.invArg()),this.isMenu(c))this.vwr.setMenu(c,!1);else{n=this.chk;q=this.isCmdLine_c_or_C_Option;e&&(this.chk=this.isCmdLine_c_or_C_Option=!0);this.pushContext(null,"SCRIPT");this.contextPath+=" >> "+b;if(this.compileScript(b,c,null!=b&&this.debugScript)){this.pcEnd=j;for(this.lineEnd=m;rthis.vwr.ms.ac&&(a=this.vwr.getAllAtoms(),a.and(c),c=a),this.vwr.selectStatus(c,b,d,!this.doReport(),g),this.vwr.slm.noneSelected=Boolean.$valueOf(4==this.slen&&1073742333==this.tokAt(2))))}},"~N");f(e,"cmdSelectionHalos",function(a){var b=!1;switch(a==this.slen?1073742335:this.getToken(a).tok){case 1073742335:case 1113589787:b=!0;case 1073742334:case 1073742333:case 1073742056:this.setBooleanProperty("selectionHalos", +b);break;default:this.invArg()}},"~N");f(e,"cmdSet",function(){if(1==this.slen)this.showString(this.vwr.getAllSettings(null));else{var a=this.paramAsStr(0).equals("set"),b=this.optParameterAsString(1);if(a&&2==this.slen&&0<=b.indexOf("?"))this.showString(this.vwr.getAllSettings(b.substring(0,b.indexOf("?"))));else{var c=this.getToken(1).tok,d=0,g,e=2147483647,h=!this.chk&&this.doReport()&&!this.st[0].value.equals("var");switch(c){case 553648144:case 603979866:case 603979903:case 603979924:case 603979960:case 603979962:case 603979964:case 603979965:case 603979970:if(this.$isStateScript)return; +break;case 1611272194:this.cmdAxes(2);return;case 1610616835:this.cmdBackground(2);return;case 1812599299:this.cmdBoundbox(2);return;case 1611272202:this.cmdFrank(2);return;case 1610616855:this.cmdHistory(2);return;case 1825200146:this.cmdLabel(2,null);return;case 1814695966:this.cmdUnitcell(2);return;case 536870920:this.sm.loadShape(8);this.setShapeProperty(8,"highlight",1073742334==this.tokAt(2)?null:this.atomExpressionAt(2));return;case 1610625028:case 1611141172:this.cmdSelectionHalos(2);return; +case 536875070:this.cmdTimeout(2);return;case 536870932:c=this.isArrayParameter(2)?this.floatParameterSet(2,2,2):2==this.tokAt(2)?S(-1,[this.intParameter(2),this.intParameter(3)]):this.stringParameter(2);this.checkLast(this.iToken);if(this.chk)return;if("string"==typeof c){if(this.vwr.fm.loadImage(c,"\x00windowImage",!this.useThreads()))throw new JS.ScriptInterruption(this,"windowImage",1);}else this.vwr.setWindowDimensions(c);return;case 1639976963:c=J.c.STR.getProteinStructureType(this.paramAsStr(2)); +c===J.c.STR.NOT&&this.invArg();h=this.floatParameterSet(3,0,2147483647);0!=h.length%4&&this.invArg();this.vwr.setStructureList(h,c);this.checkLast(this.iToken);return;case 545259526:e=this.getArgbParam(2);this.chk||this.setObjectArgb("axes",e);return;case 1610612737:c=!1;switch(this.getToken(this.checkLast(2)).tok){case 268438528:break;case 268438016:c=!0;break;default:this.invArg()}this.setBooleanProperty("bondModeOr",c);return;case 536870916:case 536870917:if(this.chk)return;c=1073742334==this.tokAt(2)|| +2==this.tokAt(2)&&0==this.intParameter(2)?4:536870917==c?6:5;JU.Logger.setLogLevel(c);this.setIntProperty("logLevel",c);4==c&&(this.vwr.setDebugScript(!1),h&&this.vwr.showParameter("debugScript",!0,80));this.setDebugging();h&&this.vwr.showParameter("logLevel",!0,80);return;case 537022465:this.cmdSetEcho(0);return;case 536875059:this.cmdScale(2);return;case 1610612738:this.cmdFont(5,2==this.checkLength23()?0:this.floatParameter(2));return;case 1613238294:c=!1;switch(this.tokAt(this.checkLast(2))){case 1114249217:c= +!0;case 2097178:this.setBooleanProperty("hbondsBackbone",c);break;case 1073742150:c=!0;case 1073741926:this.setBooleanProperty("hbondsSolid",c);break;default:this.invArg()}return;case 1745489939:case 537006096:switch(c=this.tokAt(this.checkLast(2))){case 1073742335:case 1073742334:this.setBooleanProperty("measurementlabels",1073742335==c);return;case 1073741926:case 2:case 3:this.vwr.shm.loadShape(6);h=this.getSetAxesTypeMad10(2);2147483647!=h&&this.setShapeSizeBs(6,3==c?T(h/10):h,null);return}this.setUnits(this.paramAsStr(2), +545259568);return;case 1611141176:c=!1;switch(this.tokAt(this.checkLast(2))){case 1114249217:c=!0;break;case 2097178:break;default:this.invArg()}this.setBooleanProperty("ssbondsBackbone",c);return;case 1610612741:this.cmdSetLabel("toggle");return;case 536870930:c=new JU.Lst;for(a=2;ah.indexOf(".")?(h=JU.PT.parseInt(h),c=!0):h=JU.Edge.getFloatEncodedInt(h);if(this.chk)return;c=this.vwr.ms.getModelNumberIndex(h,c,!0);this.vwr.setBackgroundModelIndex(c); +return}break;case 1648363544:if(this.chk)return;this.vwr.setAtomProperty(this.vwr.getAllAtoms(),1648363544,-1,NaN,null,null,null);if(2=this.vwr.ms.mc&&this.invArg();b="model";c=Integer.$valueOf(c);break;case 268437504:case 1073742195:b="xypos";c=this.xypParameter(--a);null==c&&this.invArg();a=this.iToken+1;break;case 2:d= +this.intParameter(a-1);g="xpos";268441090==this.tokAt(a)&&(g="%xpos",a++);b="ypos";c=Integer.$valueOf(this.intParameter(a++));268441090==this.tokAt(a)&&(b="%ypos",a++);this.checkLength(a);this.setShapeProperty(31,g,Integer.$valueOf(d));break;case 1073742066:b="offset";this.isPoint3f(a)?(a=this.getPoint3f(a,!1,!0),c=S(-1,[-1,a.x,a.y,a.z,0,0,0]),a=this.iToken+1):this.isArrayParameter(a)?(c=this.floatParameterSet(a,7,7),a=this.iToken+1):1073742333==this.tokAt(a)&&a++;break;case 1073742334:b="off";break; +case 536875059:b="scale";c=Float.$valueOf(this.floatParameter(a++));break;case 134222850:b="script";c=this.paramAsStr(a++);break;case 4120:a++;case 4:b=4!=this.theTok;this.checkLength(a--);if(b){null==d&&(b=Array(1),this.getShapePropertyData(31,"currentTarget",b),d=b[0]);if(!this.chk&&this.vwr.ms.getEchoStateActive()&&this.vwr.fm.loadImage(this.getToken(a).value,d,!this.useThreads()))throw new JS.ScriptInterruption(this,"setEchoImage",1);return}this.cmdEcho(a);return;case 134217751:b="point";c=this.isCenterParameter(a)? +this.centerParameter(a,null):null;a=this.iToken+1;break;default:if(this.isCenterParameter(a-1)){b="xyz";c=this.centerParameter(a-1,null);a=this.iToken+1;break}this.invArg()}}this.checkLength(a);!this.chk&&null!=b&&this.setShapeProperty(31,b,c)},"~N");f(e,"cmdSetLabel",function(a){this.sm.loadShape(5);var b=null;for(this.setShapeProperty(5,"setDefaults",this.vwr.slm.noneSelected);;){if(a.equals("for")){var c=this.atomExpressionAt(2);this.cmdLabel(this.iToken+1,c);return!0}if(a.equals("scalereference")){c= +this.floatParameter(2);5<=c&&(c=this.vwr.tm.getZoomSetting()/c/this.vwr.getScalePixelsPerAngstrom(!1));b=Float.$valueOf(c);break}c=!1;if(a.equals("offset")||(c=a.equals("offsetabsolute")||a.equals("offsetexact"))){a="offset";if(this.isPoint3f(2))c=this.getPoint3f(2,!1,!0),b=S(-1,[-1,c.x,c.y,c.z,0,0,0]);else if(this.isArrayParameter(2))b=this.floatParameterSet(2,7,7);else{var b=this.intParameterRange(2,-500,500),d=this.intParameterRange(3,-500,500);if(2147483647==b||2147483647==d)return!0;b=Integer.$valueOf(JV.JC.getOffset(b, +d,c))}break}if(a.equals("alignment")){switch(this.getToken(2).tok){case 1073741996:case 1073742126:case 12289:a="align";b=this.theToken.value;break;default:this.invArg()}break}if(a.equals("pointer")){c=0;switch(this.getToken(2).tok){case 1073742334:case 1073742333:break;case 1610616835:c|=2;case 1073742335:c|=1;break;default:this.invArg()}b=Integer.$valueOf(c);break}if(a.equals("toggle")){this.iToken=1;c=2==this.slen?this.vwr.bsA():this.atomExpressionAt(2);this.checkLast(this.iToken);if(this.chk)return!0; +this.vwr.shm.loadShape(5);this.vwr.shm.setShapePropertyBs(5,"toggleLabel",null,c);return!0}this.iToken=1;c=2==this.slen||1073742335==this.getToken(2).tok;if(a.equals("front")||a.equals("group")){!c&&1073742334!=this.tokAt(2)&&this.invArg();c||(a="front");b=c?Boolean.TRUE:Boolean.FALSE;break}if(a.equals("atom")){!c&&1073742334!=this.tokAt(2)&&this.invArg();a="front";b=c?Boolean.FALSE:Boolean.TRUE;break}return!1}c=this.iToken+1d&&this.errorStr2(50,"SET PICKING "+b,c);this.setStringProperty("picking",c)}});f(e,"cmdSetPickingStyle",function(){if(4JV.ActionManager.getPickingStyleIndex(d)&&this.errorStr2(50,"SET PICKINGSTYLE "+c,d);this.setStringProperty("pickingStyle",d)}});f(e,"cmdSlab",function(a){var b=!1,c=null;if(this.isCenterParameter(1)||9==this.tokAt(1))c=this.planeParameter(1,!1);else switch(this.getToken(1).tok){case 2:c=this.intParameter(this.checkLast(1));this.chk||(a?this.vwr.tm.depthToPercent(c):this.vwr.tm.slabToPercent(c));return;case 1073742335:b=!0;case 1073742334:this.checkLength(2);this.setBooleanProperty("slabEnabled", +b);return;case 4141:this.checkLength(2);if(this.chk)return;this.vwr.tm.slabReset();this.setBooleanProperty("slabEnabled",!0);return;case 36867:this.checkLength(2);this.chk||this.vwr.tm.setSlabDepthInternal(a);return;case 268440576:b=this.paramAsStr(2);b.equalsIgnoreCase("hkl")?c=this.hklParameter(3,null,!0):b.equalsIgnoreCase("plane")&&(c=this.planeParameter(2,!1));null==c&&this.invArg();c.scale4(-1);break;case 134217750:switch(this.getToken(2).tok){case 1073742333:break;default:c=this.planeParameter(1, +!1)}break;case 134219777:c=1073742333==this.getToken(2).tok?null:this.hklParameter(2,null,!0);break;case 1073742118:return;default:this.invArg()}this.chk||this.vwr.tm.slabInternal(c,a)},"~B");f(e,"cmdSsbond",function(){var a=this.getMadParameter();2147483647!=a&&(this.setShapeProperty(1,"type",Integer.$valueOf(256)),this.setShapeSizeBs(1,a,null),this.setShapeProperty(1,"type",Integer.$valueOf(1023)))});f(e,"cmdStructure",function(){var a=J.c.STR.getProteinStructureType(this.paramAsStr(1));a===J.c.STR.NOT&& +this.invArg();var b=null;switch(this.tokAt(2)){case 12290:case 10:case 1073742325:b=this.atomExpressionAt(2);this.checkLast(this.iToken);break;default:this.checkLength(2)}this.chk||(this.clearDefinedVariableAtomSets(),this.vwr.setProteinType(a,b))});f(e,"cmdSubset",function(){var a=null;this.chk||this.vwr.slm.setSelectionSubset(null);if(1!=this.slen&&(4!=this.slen||!this.getToken(2).value.equals("off")))a=this.atomExpressionAt(1);this.chk||this.vwr.slm.setSelectionSubset(a)});f(e,"cmdSync",function(){var a= +"",b="",c=JU.PT.parseInt(this.optParameterAsString(1));if(-2147483648==c)switch(this.checkLength(-3),c=0,this.slen){case 1:b="*";a="ON";break;case 2:b=this.paramAsStr(1);if(0==b.indexOf("jmolApplet")||JU.PT.isOneOf(b,";*;.;^;")){a="ON";this.chk||this.vwr.syncScript(a,b,0);b=".";break}a=b;b="*";break;case 3:b=this.paramAsStr(1),a=528443==this.tokAt(2)?"GET_GRAPHICS":this.paramAsStr(2)}else{a=null;if(2"xyz".indexOf(d)&&this.error(0);var g=this.floatParameter(++c);switch(this.tokAt(++c)){case 0:case 12290:case 10:case 1073742325:c="\x00";break;default:c=(this.optParameterAsString(c).toLowerCase()+"\x00").charAt(0)}0==g&&"\x00"!=c||(this.iToken=b+("\x00"==c?2:3),b=a?this.vwr.bsA():this.iToken+1a&&this.invArg();this.chk||(0==a?this.vwr.tm.setVibrationPeriod(0):this.vwr.setVibrationPeriod(-a))});f(e,"cmdWireframe",function(){var a=-2147483648;4141==this.tokAt(1)?this.checkLast(1):a=this.getMadParameter();this.chk||2147483647==a||(this.setShapeProperty(1,"type",Integer.$valueOf(1023)),this.setShapeSizeBs(1,-2147483648==a?300:a,null))});f(e,"cmdZap",function(a){if(1==this.slen||!a)(a=a&&!this.$isStateScript)&& +this.vwr.cacheFileByName(null,!1),this.vwr.zap(!0,a,!0),this.refresh(!1);else if(a=this.atomExpressionAt(1),!this.chk)if(0>a.nextSetBit(0)&&4==this.slen&&1073742359==this.tokAt(2))a=this.vwr.ms.getModelNumberIndex(this.getToken(2).intValue,!1,!0),0<=a&&this.vwr.deleteModels(a,null);else{a=this.vwr.deleteAtoms(a,!0);var b=!this.doReport();b||this.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms deleted"),a),!1);this.vwr.selectStatus(null,!1,0,b,!1)}},"~B");f(e,"cmdZoom",function(a){if(!a){var b=1b&&(d--,b=0);var g=0,e=null;if(1814695966==this.tokAt(d)||this.isCenterParameter(d)){var g=d,h=Array(1),c=this.centerParameter(d,h);u(h[0],"JU.BS")&&(e=h[0]);d=this.iToken+1}else 2==this.tokAt(d)&&0==this.getToken(d).intValue&&(e=this.vwr.getAtomBitSet("visible"), +c=this.vwr.ms.getAtomSetCenter(e));var h=this.vwr.tm.getZoomSetting(),e=this.getZoom(g,d,e,h),d=this.iToken+1,f=h=NaN;d!=this.slen&&(h=this.floatParameter(d++),f=this.floatParameter(d++));d!=this.slen&&this.invArg();0>e&&(e=-e,a&&(1==this.slen?e*=2:null==c&&(e/=2)));(5>e||2E5a&&(a=this.getShapeType(-a));var g=null,e=null,h=null,f=null,l=2==b&&1073741859==this.tokAt(1)?"ball": +"",r=24==a||25==a,m=!1,j=3.4028235E38;0>b&&(f=this.atomExpressionAt(-b),b=this.iToken+1,this.isBondSet&&(m=!0,a=1));var n=this.getToken(b).tok;c?this.getToken(b):!0==(c=1610616835==n)&&this.getToken(++b);if(c)l="bg";else if(r)switch(this.theTok){case 1073742018:this.getToken(++b);l="mesh";break;case 1073742094:b=this.getArgbParamOrNone(++b,!1);h=0==b?null:Integer.$valueOf(b);this.getToken(b=this.iToken+1);break;case 12290:case 10:case 1073742325:u(this.theToken.value,"JM.BondSet")?(f=this.theToken.value, +l="vertex"):(f=this.atomExpressionAt(b),l="atom"),this.getToken(b=this.iToken+1)}if(this.chk||!((27==a||28==a)&&null!=this.getIsoExt().dispatch(a,!0,this.st))){var q=603979967==this.theTok;if(q||1073742074==this.theTok)1.4E-45==j&&this.invArg(),g=this.paramAsStr(b++),q&&this.isFloatParameter(b)&&(j=this.getTranslucentLevel(b++));n=0;if(c=bB.indexOf("/")&&(B=B.toLowerCase()),this.isArrayParameter(b)&&(B+="="+JS.SV.sValue(JS.SV.getVariableAS(this.stringParameterSet(b))).$replace("\n", +" "),b=this.iToken+1)):r&&this.isColorParam(b)&&(B=this.getColorRange(b),b=this.iToken+1);null!=B&&!r&&(this.setStringProperty("propertyColorScheme",(q&&3.4028235E38==j?"translucent ":"")+B),E=0==B.indexOf("byelement")||0==B.indexOf("byresidue"));var v=0,w=3.4028235E38;if(!E&&(1073741826==this.tokAt(b)||1073742114==this.tokAt(b)))v=this.floatParameter(b+1),w=this.floatParameter(b+2),b+=3,v==w&&r?(E=this.getShapeProperty(a,"dataRange"),null!=E&&(v=E[0],w=E[1])):v==w&&(w=3.4028235E38);r||(null==y?this.chk|| +this.vwr.setCurrentColorRange(s):this.chk||this.vwr.cm.setPropertyColorRangeData(y,x));if(r){this.checkLength(b);if(this.chk)return;c=!1;s=null==B?this.getShapeProperty(a,"colorEncoder"):null;if(null==s&&null==(s=this.vwr.cm.getColorEncoder(B)))return;s.isTranslucent=q&&3.4028235E38==j;s.setRange(v,w,v>w);3.4028235E38==w&&(s.hi=w);this.setShapeProperty(a,"remapColor",s);this.showString(this.getShapeProperty(a,"dataRangeStr").$replace("\n"," "));if(3.4028235E38==j)return}else 3.4028235E38!=w&&this.vwr.cm.setPropertyColorRange(v, +w)}else b++;this.checkLength(b)}if(!(this.chk||0>a)){d&&this.setShapeProperty(31,"target","%SCALE");switch(a){case 4:b=32768;break;case 2:b=30720;break;case 3:b=256;break;case 1:b=1023;break;default:b=0}0==b?(this.sm.loadShape(a),5==a&&this.setShapeProperty(5,"setDefaults",this.vwr.slm.noneSelected)):(null!=f&&(this.vwr.selectBonds(f),f=null),a=1,this.setShapeProperty(a,"type",Integer.$valueOf(b)));if(c){switch(n){case 1111492619:this.getPartialCharges(f);break;case 1111490575:case 1111490574:this.vwr.autoCalculate(n, +null);break;case 1111492620:this.vwr.g.rangeSelected&&this.vwr.ms.clearBfactorRange();break;case 1086324742:this.vwr.ms.calcSelectedGroupsCount();break;case 1094713362:case 1094713361:this.vwr.ms.calcSelectedMonomersCount();break;case 1094713360:this.vwr.ms.calcSelectedMoleculesCount()}null!=h&&(r||11==a||14==a||21==a)?this.setShapeProperty(a,"colorPhase",P(-1,[h,e])):null==f?this.setShapeProperty(a,l+"color",e):this.setShapePropertyBs(a,l+"color",e,f)}null!=g&&this.setShapeTranslucency(a,l,g,j,f); +d&&this.setShapeProperty(31,"thisID",null);0!=b&&this.setShapeProperty(1,"type",Integer.$valueOf(1023));m&&this.vwr.selectBonds(null);0==a&&this.vwr.shm.checkInheritedShapes()}}},"~N,~N,~B");f(e,"getPartialCharges",function(a){try{this.vwr.getOrCalcPartialCharges(a,null)}catch(b){if(D(b,Exception))throw new JS.ScriptInterruption(this,"partialcharge",1);throw b;}},"JU.BS");f(e,"encodeRadiusParameter",function(a,b,c){var d=NaN,g=J.atomdata.RadiusData.EnumType.ABSOLUTE,e=null,f=-1==a?1648363544:this.getToken(a).tok; +switch(f){case 1111490561:case 1111490562:case 1111492618:case 1113589786:case 1111492620:case 1648363544:d=1,g=J.atomdata.RadiusData.EnumType.FACTOR,e=1648363544==f?null:J.c.VDW.getVdwType2(JS.T.nameOf(f)),f=this.tokAt(++a)}switch(f){case 4141:return this.vwr.rd;case 1073741852:case 1073742116:case 1073741856:case 1073741857:case 1073741991:d=1;g=J.atomdata.RadiusData.EnumType.FACTOR;this.iToken=a-1;break;case 268440577:case 2:case 3:if(268440577==f)a++;else if(268441090==this.tokAt(a+1)){d=Math.round(this.floatParameter(a)); +this.iToken=++a;g=J.atomdata.RadiusData.EnumType.FACTOR;if(200d)return this.integerOutOfRange(-200,749),null;0a[f]&&(d+=Math.abs(a[f-1]+a[f])-1,g=!0);if(g){for(var k=c?null:S(d,0),f=g=0;fc.length||null==c[0]||null==c[1]||null==c[2])break;return JU.Measure.getPlaneThroughPoints(c[0],c[1],c[2],new JU.V3,b,new JU.P4);case 24:return this.setShapeProperty(24,"thisID",a),this.getShapeProperty(24,"plane")}return null},"~S,JU.V3");f(e,"getQuaternionArray",function(a,b){var c;switch(b){case 134221850:c=a;break;case 9:c=Array(a.length);for(var d=0;d= +this.slen?NaN:JS.SV.fValue(this.parameterExpressionToken(a))},"~N");f(e,"getSettingInt",function(a){return a>=this.slen?-2147483648:this.parameterExpressionToken(a).asInt()},"~N");f(e,"getSettingStr",function(a,b){return b&&this.slen==a+1?this.paramAsStr(a):this.parameterExpressionToken(a).asString()},"~N,~B");f(e,"getShapeProperty",function(a,b){return this.sm.getShapePropertyIndex(a,b,-2147483648)},"~N,~S");f(e,"getShapePropertyData",function(a,b,c){return this.sm.getShapePropertyData(a,b,c)},"~N,~S,~A"); +f(e,"getShapeType",function(a){a=JV.JC.shapeTokenIndex(a);0>a&&this.error(49);return a},"~N");f(e,"getTranslucentLevel",function(a){a=this.floatParameter(a);return 2==this.theTok&&0a?a+1:a},"~N");f(e,"getZoom",function(a,b,c,d){var g=this.isFloatParameter(b)?this.floatParameter(b++):NaN;if(0==g||0==d){d=NaN;if(null==c)switch(this.tokAt(a)){case 1814695966:d=this.vwr.getCurrentUnitCell();null==d&&this.invArg();g=d.getUnitCellVerticesNoOffset();a=new JU.P3;for(var e=0;8>e;e++)a.add(g[e]);a.scale(0.125); +for(e=d=0;8>e;e++){var f=g[e].distanceSquared(a);f>d&&(d=f)}0==d&&this.invArg();d=Math.sqrt(d);break;case 1073742330:g=this.getObjectBoundingBox(this.objectNameParameter(a+1)),(null==g||0==(d=g[0].distance(g[1])/2))&&this.invArg()}else d=this.vwr.ms.calcRotationRadiusBs(c);Float.isNaN(d)&&this.invArg();d=100*(this.vwr.getFloat(570425388)/d);g=NaN}if(0>g)g+=d;else if(Float.isNaN(g))switch(a=this.tokAt(b),a){case 1073742079:case 1275068432:g=d*(1073742079==a?0.5:2);b++;break;case 268441088:case 268441089:case 268440577:c= +this.floatParameter(++b);b++;switch(a){case 268441088:g=d/c;break;case 268441089:g=d*c;break;case 268440577:g=d+c}break;default:g=null==c?-d:d}this.iToken=b-1;return g},"~N,~N,JU.BS,~N");f(e,"setElementColor",function(a,b){var c=-1,d="_"==a.charAt(0);a:for(;;){if(d){a=a.substring(1);for(d=JU.Elements.elementNumberMax;0<=--d;)if(a.equalsIgnoreCase(JU.Elements.elementSymbolFromNumber(d))){c=d;break a}for(d=JU.Elements.altElementMax;4<=--d;)if(a.equalsIgnoreCase(JU.Elements.altElementSymbolFromIndex(d))|| +a.equalsIgnoreCase(JU.Elements.altIsotopeSymbolFromIndex(d))){c=JU.Elements.altElementNumberFromIndex(d);break a}}else{for(d=JU.Elements.elementNumberMax;0<=--d;)if(a.equalsIgnoreCase(JU.Elements.elementNameFromNumber(d))){c=d;break a}for(d=JU.Elements.altElementMax;0<=--d;)if(a.equalsIgnoreCase(JU.Elements.altElementNameFromIndex(d))){c=JU.Elements.altElementNumberFromIndex(d);break a}}break}if(this.chk||0>c)return!1;this.vwr.setElementArgb(c,b);return!0},"~S,~N");f(e,"setMeshDisplayProperty",function(a, +b,c){var d=null,g=null,e=25==a,f=0==b;f||(c=this.getToken(b).tok);switch(c){case 1765808134:if(e)this.iToken++;else break;case 1073742074:case 603979967:return f||this.colorShape(a,this.iToken,!1),!0;case 0:case 12291:case 1073742335:case 1073742072:case 1073742334:case 12294:case 2097194:case 1610625028:case 2097192:1==this.iToken&&(0<=a&&0==this.tokAt(2))&&this.setShapeProperty(a,"thisID",null);if(0==c)return 1==this.iToken;if(f)return!0;switch(c){case 12291:return this.setShapeProperty(a,"delete", +null),!0;case 2097194:case 12294:c=1073742334;break;case 2097192:c=1073742335;break;case 1610625028:b+1==this.slen&&(c=1073742335);break}case 1073741958:case 1073741861:case 1073741964:case 1073741898:case 1073742039:case 1112150019:case 1073742042:case 1073742018:case 1073742052:case 1073741938:case 1073742046:case 1073741862:case 1073742057:case 1073742182:case 1073742060:case 1073741960:case 1073742058:d="token",g=Integer.$valueOf(c)}if(null==d)return!1;if(f)return!0;this.setShapeProperty(a,d, +g);0!=this.tokAt(this.iToken+1)&&(this.setMeshDisplayProperty(a,++this.iToken,0)||--this.iToken);return!0},"~N,~N,~N");f(e,"setObjectArgb",function(a,b){this.chk||this.vwr.setObjectArgb(a,b)},"~S,~N");f(e,"setObjectMad10",function(a,b,c){this.chk||this.vwr.setObjectMad10(a,b,c)},"~N,~S,~N");f(e,"setObjectProp",function(a,b,c){for(var d=P(-1,[a,null]),g="",e=JU.PT.isWild(a),f=17;;){if(this.getShapePropertyData(f,"checkID",d)){this.setShapeProperty(f,"thisID",a);switch(b){case 12291:this.setShapeProperty(f, +"delete",null);break;case 12294:case 1610625028:this.setShapeProperty(f,"hidden",1610625028==b?Boolean.FALSE:Boolean.TRUE);break;case 134222350:g+=this.getShapeProperty(f,"command")+"\n";break;case 1765808134:0<=c&&this.colorShape(f,c+1,!1)}if(!e)break}switch(f){case 17:f=20;continue;case 20:f=32}switch(--f){case 27:f--;break;case 28:f-=2}if(21>f)break}return g},"~S,~N,~N");f(e,"setObjectProperty",function(){var a=this.setShapeNameParameter(2);return this.chk?"":this.setObjectProp(a,this.tokAt(0), +this.iToken)});f(e,"setShapeNameParameter",function(a){var b=this.paramAsStr(a),c=b.equals("*");0==b.length&&this.invArg();if(c)switch(this.tokAt(a+1)){case 0:case 1073742335:case 1073742072:case 1073742334:case 2097192:case 2097194:case 1765808134:case 12291:break;default:if(this.setMeshDisplayProperty(-1,0,this.tokAt(a+1)))break;b+=this.optParameterAsString(++a)}268441089==this.tokAt(a+1)&&(b+=this.paramAsStr(++a));this.iToken=a;return b},"~N");f(e,"setShapeProperty",function(a,b,c){this.chk||this.sm.setShapePropertyBs(a, +b,c,null)},"~N,~S,~O");f(e,"setShapePropertyBs",function(a,b,c,d){this.chk||this.sm.setShapePropertyBs(a,b,c,d)},"~N,~S,~O,JU.BS");f(e,"setShapeSize",function(a,b){this.chk||this.sm.setShapeSizeBs(a,0,b,null)},"~N,J.atomdata.RadiusData");f(e,"setShapeSizeBs",function(a,b,c){this.chk||this.sm.setShapeSizeBs(a,b,null,c)},"~N,~N,JU.BS");f(e,"setShapeTranslucency",function(a,b,c,d,g){3.4028235E38==d&&(d=this.vwr.getFloat(570425353));this.setShapeProperty(a,"translucentLevel",Float.$valueOf(d));null!= +b&&(null==g?this.setShapeProperty(a,b+"translucency",c):this.chk||this.setShapePropertyBs(a,b+"translucency",c,g))},"~N,~S,~S,~N,JU.BS");f(e,"setSize",function(a,b){var c=null,d=this.tokAt(1),g=!1;switch(d){case 1073742072:this.restrictSelected(!1,!1);case 1073742335:break;case 1073742334:b=0;break;case 3:case 2:g=0>this.floatParameter(1)&&(3==d||268441090==this.tokAt(2));default:c=this.encodeRadiusParameter(1,g,!0);if(null==c)return;Float.isNaN(c.value)&&this.invArg()}null==c&&(c=new J.atomdata.RadiusData(null, +b,J.atomdata.RadiusData.EnumType.FACTOR,J.c.VDW.AUTO));g&&this.restrictSelected(!1,!1);this.setShapeSize(a,c)},"~N,~N");f(e,"setSizeBio",function(a){var b=0;switch(this.getToken(1).tok){case 1073742072:this.restrictSelected(!1,!1);case 1073742335:b=-1;break;case 1073742334:break;case 1639976963:b=-2;break;case 1111492620:case 1073741922:b=-4;break;case 2:if(2147483647==(b=8*this.intParameterRange(1,0,1E3)))return;break;case 3:b=Math.round(2E3*this.floatParameterRange(1,-4,4));if(2147483647==b)return; +0>b&&(this.restrictSelected(!1,!1),b=-b);break;case 10:this.chk||this.sm.loadShape(a);this.setShapeProperty(a,"bitset",this.theToken.value);return;default:this.error(6)}this.setShapeSizeBs(a,b,null)},"~N");f(e,"setUnits",function(a,b){545259568==b&&(a.toLowerCase().endsWith("hz")||JU.PT.isOneOf(a.toLowerCase(),";default;angstroms;au;bohr;nanometers;nm;picometers;pm;vanderwaals;vdw;"))?this.chk||this.vwr.setUnits(a,!0):545259558==b&&JU.PT.isOneOf(a.toLowerCase(),";kcal;kj;")?this.chk||this.vwr.setUnits(a, +!1):this.errorStr2(50,"set "+JS.T.nameOf(b),a);return!0},"~S,~N");f(e,"toString",function(){var a=new JU.SB;a.append("Eval\n pc:");a.appendI(this.pc);a.append("\n");a.appendI(this.aatoken.length);a.append(" statements\n");for(var b=0;ba,q=!g&&null==c,s=!g&&null!= +c&&0==c.length;n&&(a=-a);var B=null==k||-2147483648!=b;bN||this.chk)this.iToken=P-1;else for(;0<=N;N=x.nextSetBit(N+1))0<=O&&L.clear(O),O=N,L.set(N),K.index=N,v=this.parameterExpression(t,P,G?"XXX":null,d,G,N,!1,k,A?null:F,!1),G?((null==v||0==v.size())&& +this.invArg(),z[M++]=v.get(0).asString()):v.booleanValue()&&H.set(N);if(G)x=z;else if(A)x=H;else return this.listBS(H);t=this.iToken+1;break;case 1073742339:break a;case 2:if(1073742336==this.tokAt(this.iToken+1)&&(805307393==(G=this.tokAt(this.iToken+2))||268441089==G))this.theToken.value=Float.$valueOf(this.theToken.intValue),this.theToken.tok=3,this.theToken.intValue=2147483647,t++;case 3:case 1073742362:c.addXNum(this.theToken);break;case 134217750:if(268435968==this.tokAt(this.iToken+1)){c.addOpAllowMath(this.theToken, +!0,0)||this.invArg();break}case 1073742335:case 1073742334:case 4:case 8:case 9:case 11:case 12:case 7:case 10:case 6:case 14:c.addX(JS.SV.newT(this.theToken));break;case 1073742330:if(1073742336==this.tokAt(t+2)&&1275072526==this.tokAt(t+3))c.addXStr("$"+this.paramAsStr(++t));else{this.ignoreError=!0;var Q;try{Q=this.centerParameter(t,null),c.addX(JS.SV.newV(8,Q))}catch(S){if(D(S,Exception))c.addXStr("");else throw S;}this.ignoreError=!1;t=this.iToken}break;case 1073742332:if(4==this.tokAt(t+1)){if(1073742338== +this.tokAt(t+2)){x=this.chk?new JU.BS:this.getAtomBitSet(this.stringParameter(t+1));t+=2;break}x=this.getAssocArray(t)}else x=this.getPointOrPlane(t,55);t=this.iToken;break;case 1073742325:if(1073742326==this.tokAt(t+1)){x=new java.util.Hashtable;t++;break}else 1073742327==this.tokAt(t+1)&&1073742326==this.tokAt(t+2)&&(G=1073742327,this.iToken+=2);case 1073742327:x=1073742327==G?this.vwr.getAllAtoms():this.atomExpression(this.st,t,0,!0,!0,null,!0);t=this.iToken;if(0==f&&n)return this.iToken++,this.listBS(x); +break;case 1073742195:c.addOp(this.theToken);continue;case 1073742326:break a;case 268436992:if(!d&&w)break a;c.addOp(this.theToken)||this.invArg();break;case 1073742337:case 1073742336:r&&(w&&268440324==this.tokAt(t+2))&&(r=c.endAssignment());if(0==E&&w)switch(this.tokAt(t+1)){case 0:break;case 1275335685:case 1275334681:case 1140850694:case 1140850706:case 1140850696:case 1275068418:if(1073742336==G)break;default:c.addOp(JS.T.tokenArrayOpen);c.addXStr(this.optParameterAsString(++t));c.addOp(JS.T.tokenArrayClose); +continue}A=this.getBitsetPropertySelector(t+1,c.getXTok());t=134320141==A.intValue;F=!0;I=this.tokAt(this.iToken+2);if(1073742336==this.tokAt(this.iToken+1))switch(I){case 1073742327:I=480,1073742336==this.tokAt(this.iToken+3)&&1275068420==this.tokAt(this.iToken+4)&&(I=224);case 1275068725:case 32:case 64:case 192:case 128:case 160:case 96:F=t||1275069443==A.intValue||480==I||224==I||1275068725==I,A.intValue|=I&480,this.getToken(this.iToken+2)}G=this.tokAt(this.iToken+1);F=(new Boolean(F&(268435968== +G||t))).valueOf();c.addOpAllowMath(A,F,t?G:0)||this.invArg();t=this.iToken;134320141==A.intValue&&268435968!=G&&(c.addOp(JS.T.tokenLeftParen),c.addOp(JS.T.tokenRightParen));break;case 1153433601:case 1086326786:case 1086326785:case 1073742328:case 1812599299:case 1086326788:case 1073742329:case 1111490587:case 1086326789:case 1086324742:case 1094717454:case 1094713360:case 1073742128:case 134218756:case 1086324744:case 1094713366:case 134218757:case 1237320707:case 1639976963:if(!j&&t==y&&268436992== +this.tokAt(t+1)){c.addX(JS.SV.newT(this.theToken));break}default:if(268437504==this.theTok&&268436482==this.tokAt(t+2)){x=this.getAssocArray(t);t=this.iToken;break}if(JS.T.tokAttr(this.theTok,268435456)||JS.T.tokAttr(this.theTok,134217728)&&268435968==this.tokAt(this.iToken+1)){if(!c.addOp(this.theToken)){if(0<=e)break a;this.invArg()}switch(this.theTok){case 134217759:y=t+2;break;case 268440324:w&&(E=t);break;case 268435968:f++;w=!1;break;case 268435969:if(0>=--f&&0==g){if(n){this.iToken++;break a}w= +!0}break;case 268437504:g++;w=!1;break;case 268437505:if(0==--g&&0==f){if(n){this.iToken++;break a}w=!0}}}else{A=this.paramAsStr(t).toLowerCase();G=268435968==this.tokAt(t+1);if(!G)if(this.chk)x=A;else if(null==k||null==(x=JU.PT.getMapValueNoCase(k,A))&&B)A.startsWith("_")&&(x=A.equals("_")?this.vwr.getModelSetAuxiliaryInfo():A.equals("_m")?this.vwr.getCurrentModelAuxInfo():null),null==x?x=this.getContextVariableAsVariable(A,!1):0==E&&this.invArg();if(null==x)if(JS.T.tokAttr(this.theTok,1073741824)&& +this.isFunction(A))c.addOp(JS.SV.newV(134320141,this.theToken.value))||this.invArg(),G||(c.addOp(JS.T.tokenLeftParen),c.addOp(JS.T.tokenRightParen));else{A=this.vwr.g.getAndSetNewVariable(A,!1);switch(A.tok){case 2:case 3:if(this.noCopy(t,-1)||this.noCopy(t,1))break;c.addXCopy(A);continue}c.addX(A)}}}null!=x&&(u(x,"JU.BS")?c.addXBs(x):c.addXObj(x))}a=c.getResult();null==a&&(this.chk||c.dumpStacks("null result"),this.error(13));if(135198==a.tok)return r&&0==E?(r=new JU.Lst,r.addLast(new JS.SV),r): +a.value;if(this.chk){if(q)return Boolean.TRUE;if(s)return""}else{if(q)return Boolean.$valueOf(a.asBoolean());if(s)return 4==a.tok&&(a.intValue=2147483647),a.asString()}switch(a.tok){case 1073742335:case 1073742334:return Boolean.$valueOf(1==a.intValue);case 2:return Integer.$valueOf(a.intValue);default:return a.value}},"~N,~N,~S,~B,~B,~N,~B,java.util.Map,~S,~B");f(e,"atomExpressionAt",function(a){this.checkToken(a)||(this.iToken=a,this.bad());return this.atomExpression(this.st,a,0,!0,!1,null,!0)}, +"~N");f(e,"atomExpression",function(a,b,c,d,g,e){this.isBondSet=!1;a!==this.st&&(this.tempStatement=this.st,this.st=a);var f=new JS.ScriptMathProcessor(this,!1,!1,!1,null==e,g,null),k,l=!1;this.iToken=1E3;var r=0>b,m=!1,j,n=0,q=this.vwr.ms.ac,s=-10;r&&(b=-b);r=(new Boolean(r|this.chk)).valueOf();0==c&&a.length>b&&(c=b+1);a:for(;b=k&&(k*=1E6)}f.addXBs(this.bitSetForModelFileNumber(k));break;case 1073742361:case 1073742357:f.addXBs(this.getAtomBits(k.tok,Integer.$valueOf(k.intValue)));break;case 1073742362:m?f.addXNum(k):f.addXBs(this.getAtomBits(1073742362,Integer.$valueOf(JS.ScriptExpr.getSeqCode(k))));break;case 1073742363:if(m){f.addXNum(k);f.addOp(JS.T.tokenMinus);f.addXNum(a[++b]);break}j=b+3this.vwr.am.cmi?this.vwr.getFrameAtoms():this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi));break;case 1612709900:case 2097154:case 1114249217:case 1612709912:case 136314895:case 2097159:case 2097160:case 2097162:case 2097178:case 2097180:f.addXBs(this.lookupIdentifierValue(j));break;case 268440323:case 268440322:case 268440321:case 268440320:case 268440324:case 268440325:case 268440326:B= +k.tok;k=k.intValue;1094717448==k&&268440324!=B&&this.invArg();var E=null;1715472409==k&&(b+2==a.length&&this.invArg(),this.chk||(E=this.vwr.getDataObj(a[++b].value,null,1)));++b==a.length&&this.invArg();f.addXBs(this.chk?new JU.BS:this.getComparison(a[b],k,B,j,E));break;case 3:case 2:f.addXNum(k);break;case 10:j=u(j,"JM.BondSet")?j:JU.BSUtil.copy(j);f.addXBs(j);break;case 8:f.addXPt(j);break;default:if(JS.T.tokAttr(k.tok,268435456)){f.addOp(k)||this.invArg();break}if("string"!=typeof j){f.addXObj(j); +break}k=this.getParameter(j,0,!0);if(m){f.addXObj(k);break}if("string"==typeof k||u(k,"JU.Lst"))k=this.getStringObjectAsVariable(k);"string"==typeof k&&(k=this.lookupIdentifierValue(j));f.addXObj(k)}}a=f.getResult();if(null==a){if(g)return null;this.chk||f.dumpStacks("after getResult");this.error(13)}g=a.value;if("string"==typeof g&&(null==e||g.startsWith("({")))g=this.chk?new JU.BS:this.getAtomBitSet(g);if(null!=e&&!u(g,"JU.BS"))return e[0]=g,null;j=u(g,"JU.BS")?g:new JU.BS;this.isBondSet=u(g,"JM.BondSet"); +!this.isBondSet&&(j=this.vwr.slm.excludeAtoms(j,r)).length()>this.vwr.ms.ac&&j.clearAll();null!=this.tempStatement&&(this.st=this.tempStatement,this.tempStatement=null);return j},"~A,~N,~N,~B,~B,~A,~B");f(e,"getComparison",function(a,b,c,d,g){var e=a.tok;if(7==e){e=new JU.BS;268440324!=c&&e.setBits(0,this.vwr.ms.ac);a=a.getList();for(var f=a.size();0<=--f;){var k=this.getComparison(a.get(f),b,c,d,g);268440324==c?e.or(k):e.and(k)}return e}var l=a.intValue,f=NaN,k=1094717454==b,r=JS.T.tokAttr(b,1094713344), +m=JS.T.tokAttr(b,1111490560)||1077936128==(b&1136656384),j=r&&m,n=!r&&JS.T.tokAttr(b,1086324736);1086326789==b&&(r=!(n=!1));var q=a.value;if(JS.T.tokAttr(e,1073741824))if("_modelNumber".equalsIgnoreCase(q))l=this.vwr.am.cmi,q=Integer.$valueOf(l=0>l?0:this.vwr.getModelFileNumber(l));else{var s=this.getParameter(q,1073742190,!1);if(null!=s){if(7==s.tok)return this.getComparison(s,b,c,d,g);l=s.intValue;q=n||1094717448==b&&2!=s.tok?JS.SV.sValue(s):JS.SV.nValue(s);a=s}}u(q,"JU.P3")?1765808134==b&&(l=JU.CU.colorPtToFFRGB(q), +e=2,r=!0):"string"==typeof q&&(1765808134==b?(l=JU.CU.getArgbFromString(q),0==l&&JS.T.tokAttr(e,1073741824)&&(q=this.getVarParameter(q,!0),q.startsWith("{")?(q=JU.Escape.uP(q),l=u(q,"JU.P3")?JU.CU.colorPtToFFRGB(q):0):l=JU.CU.getArgbFromString(q)),e=2,r=!0):n||(1094717448==b?q=Integer.$valueOf(2==a.tok?a.intValue:-1E3-(q+" ").codePointAt(0)):1639976963==b||1237320707==b||1086326789==b?n=!(r=2147483647!=l):q=JS.SV.nValue(a),u(q,Integer)?f=l=q.intValue():u(q,Float)&&k&&(l=JM.ModelSet.modelFileNumberFromFloat(q.floatValue())))); +n&&"string"!=typeof q&&(q=""+q);u(q,Integer)||2==e?k?1E6<=l&&(b=-1094717454):j||m&&(f=l):u(q,Float)?k?b=-1094717454:(f=q.floatValue(),j?r=!1:r&&(l=H(f))):n||(this.iToken++,this.invArg());k&&(1E6<=l&&0==l%1E6)&&(l/=1E6,b=1228935687);if(-1094717454==b&&268440324==c)return this.bitSetForModelFileNumber(l);null!=d&&0<=d.indexOf("-")&&(r?l=-l:Float.isNaN(f)||(f=-f));return r?this.compareInt(b,c,l):n?this.compareString(b,c,q):this.compareFloatData(b,g,c,f)},"JS.T,~N,~N,~S,~A");f(e,"noCopy",function(a,b){switch(this.tokAt(a+ +b)){case 268441602:case 268441601:return-1==this.st[a+b].intValue==(-1==b);default:return!1}},"~N,~N");f(e,"getAssocArray",function(a){var b=new java.util.Hashtable,c=1073742332==this.tokAt(a)?1073742338:268437505;for(a+=1;a=c||b!=b;case 268440320:return b>c;case 268440324:return b==c||b!=b;case 268440325:return b!=c&&b==b}return!1},"~N,~N,~N");f(e,"compareString",function(a,b,c){var d=new JU.BS,g=this.vwr.ms.at,e=this.vwr.ms.ac,f=268440326==b||1086326788== +a&&this.vwr.getBoolean(603979822);for(f||(c=c.toLowerCase());0<=--e;)if(null!=g[e]){var k=g[e].atomPropertyString(this.vwr,a);f||(k=k.toLowerCase());this.compareStringValues(b,k,c)&&d.set(e)}return d},"~N,~N,~S");f(e,"compareStringValues",function(a,b,c){switch(a){case 268440324:case 268440325:return JU.PT.isMatch(b,c,!0,!0)==(268440324==a);case 268440326:return JU.PT.isLike(b,c);default:this.invArg()}return!1},"~N,~S,~S");f(e,"compareInt",function(a,b,c){var d=2147483647,g=null,e=b,f=c,k=this.vwr.ms, +l=k.at,r=k.ac,m=-1,j=0,n=-1,q=null,s=0,u;switch(a){case 1296041985:switch(e){case 268440321:case 268440320:m=2147483647}break;case 1094713347:try{switch(b){case 268440323:return JU.BSUtil.newBitSet2(0,c);case 268440322:return JU.BSUtil.newBitSet2(0,c+1);case 268440321:return JU.BSUtil.newBitSet2(c,r);case 268440320:return JU.BSUtil.newBitSet2(c+1,r);case 268440324:return cw)x=!0;else if(0==s||0<=w&&!(x=g.get(w)))continue;e=1073742333;d=0>w?v.getCellTranslation(c, +q,s):v.getSymmetryTranslation(w,q,s)}else if(0s&&268440323!=e&&268440322!=e)continue;if(268440325==e){0j&&(j=0);j=c;break;case 268440320:x=d>c;break;case 268440324:x=d==c;break;case 268440325:x=d!=c}x&&u.set(y)}}return u},"~N,~N,~N");f(e,"getBitsetPropertySelector",function(a,b){var c=this.getToken(a).tok;switch(c){case 1275068725:case 32:case 64:case 96:case 192:case 128:case 160:case 1715472409:break;default:if(JS.T.tokAttrOr(c,1077936128,1140850688)||6==b)break;if(805307393!=c&&!JS.T.tokAttr(c,1073741824))break;var d=this.paramAsStr(a);this.isFunction(d.toLowerCase())&&(c=134320141)}return JS.SV.newSV(268442113, +c,this.paramAsStr(a))},"~N,~N");f(e,"getBitsetProperty",function(a,b,c,d,g,e,f,k,l,r){var m=2147483647!=l,j=m||!u(e,"JM.BondSet")&&!u(a,"JM.BondSet"),n=c&480,q=224==n,s=288==n;s&&(n=480);var B=this.vwr.ms.ac,E=256==n?S(B,0):null,y=480==n||q;c&=-481;var x=null;0==c&&(c=j?1153433601:1677721602);var v=!1,w=!1,t=!1,G=!1;switch(c){case 1275068446:return this.vwr.getModelSetAuxiliaryInfoForAtoms(a).get("models");case 1145047049:case 1145047055:case 1145047050:case 1145047053:case 1145045008:case 1145045006:case 1765808134:case 1145047052:v= +!0;break;case 1275203608:w=!0;x=P(-1,[null,null]);break;case 134320141:case 1275069443:break;case 1086324754:t="color"===e;G=!t;break;case 1145045003:G=!0;break;default:t=JS.T.tokAttr(c,1094713344)&&!JS.T.tokAttr(c,1111490560),G=!t&&JS.T.tokAttr(c,1086324736)}var A=v||!j?new JU.P3:null;if(y||G&&!m&&256!=n&&32!=n)n=1073742327;var F=1073742327==n?new JU.Lst:null,D=null,H=D=null,z=null,K=null,I=null,O=null,Q=null;switch(c){case 1153433601:if(j)break;case 1677721602:if(this.chk)return a;D=1153433601== +c?this.vwr.ms.getAtoms(1677721602,a):j?JM.BondSet.newBS(this.vwr.getBondsForSelectedAtoms(a)):a;switch(n){case 32:l=D.nextSetBit(0);break;case 64:l=D.length()-1;break;case 192:case 128:case 160:return Float.$valueOf(NaN);default:return D}D.clearAll();0<=l&&D.set(l);return D;case 1086324745:switch(n){case 0:case 32:case 1073742327:return this.getCmdExt().getBitsetIdent(a,null,e,k,l,y)}return"";case 134320141:D=f[0];H=f[1];z=JU.BS.newN(B);K=JS.SV.newV(10,z);break;case 1111490587:for(f=E.length;0<=--f;)E[f]= +NaN;case 1111490574:case 1111490575:this.vwr.autoCalculate(c,e);break;case 1275069443:if(null==d&&null==g)return new JU.P3;break;case 1765808134:I=new JU.P3;break;case 1715472409:O=this.vwr.getDataObj(f,null,1),null==O&&(Q=this.vwr.getDataObj(f,null,2)),null!=Q&&(n=1073742327,F=new JU.Lst)}var M=k=f=0,N=0,R=0;switch(n){case 32:k=2147483647;M=3.4028235E38;break;case 64:k=-2147483648,M=-3.4028235E38}var V=this.vwr.ms;e=null!=Q?5:w?4:v?3:G?2:t?1:0;if(j){I=null!=a;null!=b?(j=0,B=b.size()):m?(j=l,B=l+ +1):I?(j=a.nextSetBit(0),B=Math.min(B,a.length())):j=0;this.chk&&(B=0);for(l=j;0<=l&&l=O.length?0:O[l];break;case 1275069443:j=null!=g?JU.Measure.distanceToPlane(g,U):null!=b?JS.SV.ptValue(b.get(l)).distance(d):U!==d||32!=n? +U.distance(d):NaN;break;default:j=U.atomPropertyFloat(this.vwr,c,this.ptTemp)}if(3.4028235E38==j||Float.isNaN(j)&&1073742327!=n){f--;continue}switch(n){case 32:jM&&(M=j);break;case 256:E[l]=j;break;case 1073742327:F.addLast(Float.$valueOf(j));break;case 160:case 192:R+=j*j;default:N+=j}break;case 1:j=0;switch(c){case 1094717448:case 1094713349:this.errorStr(45,JS.T.nameOf(c));break;case 1086324754:j=U.getWyckoffPosition(!1).charAt(0).charCodeAt(0);switch(j){case 63:j=0;break; +case 65:j=27;break;default:j&=31}break;default:j=U.atomPropertyInt(c)}switch(n){case 32:jk&&(k=j);break;case 256:E[l]=j;break;case 1073742327:F.addLast(Integer.$valueOf(j));break;case 160:case 192:R+=j*j;default:N+=j}break;case 2:j=U.atomPropertyString(this.vwr,c);switch(n){case 256:E[l]=JU.PT.parseFloat(j);break;default:if(null==F)return j;F.addLast(j)}break;case 3:j=U.atomPropertyTuple(this.vwr,c,this.ptTemp);switch(n){case 256:E[l]=null==A?-1:null==j?0:j.length();break; +case 1073742327:F.addLast(null==j?Integer.$valueOf(-1):JU.P3.newP(j));break;default:null==j?f--:A.add(j)}break;case 4:switch(c){case 1275203608:if(x[0]=Integer.$valueOf(l),x[1]="",this.vwr.shm.getShapePropertyData(21,"info",x),null!=x[1]){if(null==F)return x[1];F.addLast(x[1])}}break;case 5:F.addLast(Q[l])}if(m)break}}else{j=(b=null==a)?0:a.nextSetBit(0);B=this.vwr.ms.bondCount;for(l=j;0<=l&&lM&&(M=j);break;case 1073742327:F.addLast(Float.$valueOf(j));break;case 160:case 192:R+=j*j;default:N+=j}break;case 1145047049:switch(n){case 1073742327:A.ave(d.atom1,d.atom2);F.addLast(JU.P3.newP(A));break;default:A.add(d.atom1),A.add(d.atom2),f++}break;case 1765808134:JU.CU.colorPtFromInt(this.vwr.gdata.getColorArgbOrGray(d.colix),I);switch(n){case 1073742327:F.addLast(JU.P3.newP(I));break;default:A.add(I)}break;default:this.errorStr(46,JS.T.nameOf(c))}}if(256==n)return E; +if(1073742327==n){if(r)return s?this.getMathExt().getMinMax(F,1275068725,!1):F;a=F.size();if((G||w)&&!y&&1==a)return F.get(0);if(q){E=S(a,0);for(l=a;0<=--l;)switch(c=F.get(l),e){case 0:E[l]=c.floatValue();break;case 1:E[l]=c.floatValue();break;case 2:E[l]=JU.PT.parseFloat(c);break;case 3:E[l]=null==c?-1:c.length()}return E}if(1086324744==c){E=new JU.SB;for(l=0;la&&d&&(a*=1E6);if(0==a%1E6){d=this.vwr.ms.getModelNumberIndex(a+1,!1,!1);if(0>d)return b;a=0==a?c:this.vwr.ms.getModelNumberIndex(a+1000001,!1,!1);0>d&&(d=0);0>a&&(a=c);this.vwr.ms.isTrajectory(d)&&(a=d+1);for(c=d;c2+(null==c?0:1)&&this.invArg();null==c?c=k:k=JS.SV.selectItemVar(k);d=!0;break;case 4:if(2!=c.tok){k.value=JU.PT.rep(k.asString(),c.asString(),b.asString());k.intValue=2147483647; +break}case 11:case 12:2147483647==k.intValue?d=!0:k.setSelectedValue(k.intValue,c.asInt(),b);break;case 8:a=k.value=JU.P3.newP(k.value);g=b.asFloat();switch(JS.T.getTokFromName(c.asString())){case 1111492629:a.x=g;break;case 1111492630:a.y=g;break;case 1111492631:a.z=g}break;case 10:var g=JS.SV.getBitSet(k,!0),f=this.vwr.ms.ac,l=g.cardinality(),e=c.asString(),r=JS.T.getTokFromName(e);switch(r){case 0:if(e.startsWith("property_")){7==b.tok?(a=b.getList().size()==l?l:f,a=1n.indexOf("|")?this.getAtomBitSet(n):n}else k=g;else k=d;d=this.iToken}else this.chk?k=new JU.BS:(k=2==this.tokAt(d)?this.vwr.ms.getAtoms(1094715393,Integer.$valueOf(this.st[d].intValue)): +12290==this.tokAt(d)&&2==this.tokAt(d+1)?this.vwr.ms.getAtomsFromAtomNumberInFrame(this.st[++d].intValue):this.getParameter(r,0,!0),!e&&!j&&(m=!0));g=this.tokAt(0);l=(new Boolean(l|(JS.T.tokAttr(g,20480)||134222850==g))).valueOf();if(null==k)c[f]=JS.T.tokenAll;else if(u(k,"JS.SV"))c[f]=k;else if(u(k,Boolean))c[f]=k.booleanValue()?JS.T.tokenOn:JS.T.tokenOff;else if(u(k,Integer))c[f]=JS.T.tv(2,k.intValue(),k);else if(u(k,Float))c[f]=JS.T.tv(3,JU.Edge.getFloatEncodedInt(""+k),k);else if("string"==typeof k){if(!l&& +!e){if((36867!=g||1j.intValue?-k:k)}for(m=d;--m>=k;)f.removeItemAt(m),e[m][0]=e[m][1]=0},"JS.ScriptFunction,~S,~N,~N,~A,~A,JU.Lst");f(e,"setScript",function(a){this.script= +a;null!=this.script&&(""!==this.script&&!this.script.endsWith("\n"))&&(this.script+="\n")},"~S");s(e,"toString",function(){var a=(new JU.SB).append("/*\n * ").append(this.name).append("\n */\n").append(this.getSignature()).append(" {\n");null!=this.script&&a.append(this.script);a.append("}\n");return a.toString()});s(e,"getSignature",function(){if(null==this.typeName)return JS.T.nameOf(this.tok);for(var a=(new JU.SB).append(this.typeName).append(" ").append(this.name).append("("),b=0;bb.indexOf("javascript")||0<=b.indexOf("#javascript ")),f=new JU.Lst;f.addLast(b);f.addLast(d);f.addLast(a);f.addLast(g?Boolean.TRUE:Boolean.FALSE);f.addLast(Integer.$valueOf(e?-1:1));f.addLast(c);this.scriptQueue.addLast(f);this.startScriptQueue(!1);return"pending"},"~S,~S,~A,~S,~B");s(e,"clearQueue",function(){this.scriptQueue.clear()});s(e,"waitForQueue",function(){if(!this.vwr.isSingleThreaded)for(var a= +0;this.isQueueProcessing();)try{Thread.sleep(100),0==a++%10&&JU.Logger.debugging&&JU.Logger.debug("...scriptManager waiting for queue: "+this.scriptQueue.size()+" thread="+Thread.currentThread().getName())}catch(b){if(!D(b,"InterruptedException"))throw b;}});s(e,"isQueueProcessing",function(){return null!=this.queueThreads[0]||null!=this.queueThreads[1]});f(e,"flushQueue",function(a){for(var b=this.scriptQueue.size();0<=--b;){var c=this.scriptQueue.get(b).get(0);0==c.indexOf(a)&&(this.scriptQueue.removeItemAt(b), +JU.Logger.debugging&&JU.Logger.debug(this.scriptQueue.size()+" scripts; removed: "+c))}},"~S");f(e,"startScriptQueue",function(a){var b=a?1:0;this.scriptQueueRunning[b]||(this.scriptQueueRunning[b]=!0,this.queueThreads[b]=new JS.ScriptQueueThread(this,this.vwr,a,b),this.queueThreads[b].start())},"~B");s(e,"getScriptItem",function(a,b){if(this.vwr.isSingleThreaded&&this.vwr.queueOnHold)return null;var c=this.scriptQueue.get(0),d=c.get(4).intValue();return(a?0>d:b?0==d:1==d)?c:null},"~B,~B");s(e,"startCommandWatcher", +function(a){if(this.useCommandWatcherThread=a){if(null!=this.commandWatcherThread)return;this.commandWatcherThread=J.api.Interface.getInterface("JS.CommandWatcherThread",this.vwr,"setOptions");this.commandWatcherThread.setManager(this,this.vwr,null);this.commandWatcherThread.start()}else{if(null==this.commandWatcherThread)return;this.clearCommandWatcherThread()}JU.Logger.debugging&&JU.Logger.debug("command watcher "+(a?"started":"stopped")+this.commandWatcherThread)},"~B");f(e,"interruptQueueThreads", +function(){for(var a=0;aa?(this.queueThreadFinished(0),this.queueThreadFinished(1)):null!=this.queueThreads[a]&&(this.queueThreads[a].interrupt(),this.scriptQueueRunning[a]=!1,this.queueThreads[a]=null,this.vwr.setSyncDriver(4), +this.vwr.queueOnHold=!1)},"~N");f(e,"runScriptNow",function(){if(0a.indexOf("#NOSYNC;"))&& +this.vwr.syncScript(a+" #NOSYNC;",null,0);this.eval.isPaused()&&"!"!=a.charAt(0)&&(a="!"+JU.PT.trim(a,"\n\r\t "));(d=null==b&&0a.indexOf("://")&&(a="file://"+(a.startsWith("/")?"":"/")+a);try{if(d)h="script "+JU.PT.esc(a);else if(a.endsWith(".pse"))h=(k?"":"zap;")+"load SYNC "+JU.PT.esc(a)+(this.vwr.isApplet?"":" filter 'DORESIZE'");else{if(a.endsWith("jvxl"))h="isosurface ";else if(!a.toLowerCase().endsWith(".spt")){null==c?c=this.getDragDropFileTypeName(a):c.endsWith("::")||(c+="::");if(null==c){try{var l=this.vwr.getBufferedInputStream(a);c=JV.FileManager.determineSurfaceFileType(JU.Rdr.getBufferedReader(l,"ISO-8859-1")); +if(null==c){h="script "+JU.PT.esc(a);return}}catch(r){if(D(r,"java.io.IOException"))return;throw r;}h="MENU"===c?"load MENU "+JU.PT.esc(a):"if (_filetype == 'Pdb') { isosurface sigma 1.0 within 2.0 {*} "+JU.PT.esc(a)+" mesh nofill }; else; { isosurface "+JU.PT.esc(a)+"}";return}if(c.equals("spt::")){h="script "+JU.PT.esc(a.startsWith("spt::")?a.substring(5):a);return}if(c.equals("dssr"))h="model {visible} property dssr ";else if(c.equals("Jmol"))h="script ";else if(c.equals("Cube"))h="isosurface sign red blue "; +else if(!c.equals("spt")){if(16==b)switch(b=1,0==this.vwr.ms.ac?0:this.vwr.confirm(J.i18n.GT.$("Would you like to replace the current model with the selected model?"),J.i18n.GT.$("Would you like to append?"))){case 2:return;case 0:break;default:b|=4}d=0!=(b&4);b=0!=(b&1)&&!d;if(c.endsWith("::")){var m=c.indexOf("|");0<=m&&(a+=c.substring(m,c.length-2),c="");a=c+a}h=this.vwr.g.defaultDropScript;h=JU.PT.rep(h,"%FILE",a);h=JU.PT.rep(h,"%ALLOWCARTOONS",""+b);if(h.toLowerCase().startsWith("zap")&&(k|| +d))h=h.substring(3);d&&(h=JU.PT.rep(h,"load SYNC","load append"));return}}null==h&&!e&&this.vwr.scriptEditorVisible?this.vwr.showEditor(P(-1,[a,this.vwr.getFileAsString3(a,!0,null)])):h=(null==h?"script ":h)+JU.PT.esc(a)}}finally{null!=h&&this.vwr.evalString(h+(f?"#!NOAUTOPLAY":""))}},"~S,~N,~S");f(e,"checkResize",function(a){try{var b=this.vwr.fm.getEmbeddedFileState(a,!1,"state.spt");0<=b.indexOf("preferredWidthHeight")&&this.vwr.sm.resizeInnerPanelString(b)}catch(c){}},"~S");f(e,"getDragDropFileTypeName", +function(a){var b=a.indexOf("::");if(0<=b)return a.substring(0,b+2);if(a.startsWith("="))return"pdb";if(a.endsWith(".dssr"))return"dssr";var b=this.vwr.fm.getUnzippedReaderOrStreamFromName(a,null,!0,!1,!0,!0,null),c=null;if(this.vwr.fm.isZipStream(b)){a=this.vwr.getZipDirectoryAsString(a);if(0<=a.indexOf("JmolManifest"))return"Jmol";c=this.vwr.getModelAdapter().getFileTypeName(JU.Rdr.getBR(a))}else if(u(b,"java.io.BufferedReader")||u(b,"java.io.BufferedInputStream"))c=this.vwr.getModelAdapter().getFileTypeName(b); +return null!=c?c+"::":JU.AU.isAS(b)?b[0]:null},"~S");e.setStateScriptVersion=f(e,"setStateScriptVersion",function(a,b){if(null!=b){JS.ScriptManager.prevCovalentVersion=JU.Elements.bondingVersion;var c=JU.PT.getTokens(b.$replace("."," ").$replace("_"," "));try{var d=JU.PT.parseInt(c[0]),e=JU.PT.parseInt(c[1]),f=JU.PT.parseInt(c[2]);-2147483648==f&&(f=0);if(-2147483648!=d&&-2147483648!=e){var h=a.stateScriptVersionInt=1E4*d+100*e+f;a.setBooleanProperty("legacyautobonding",110924>h);a.setBooleanProperty("legacyHAddition", +130117>h);a.getBoolean(603979831)||a.setBooleanProperty("legacyjavafloat",140206>h||140300<=h&&140306>h);a.setIntProperty("bondingVersion",140111>h?0:1);return}}catch(k){if(!D(k,Exception))throw k;}}a.setIntProperty("bondingVersion",JS.ScriptManager.prevCovalentVersion);a.setBooleanProperty("legacyautobonding",!1);a.setBooleanProperty("legacyHAddition",!1);a.stateScriptVersionInt=2147483647},"JV.Viewer,~S");s(e,"addHydrogensInline",function(a,b,c,d){a=null==a?-1:a.nextSetBit(0);null==d&&(d=new java.util.Hashtable); +a=0>a?this.vwr.am.cmi:this.vwr.ms.at[a].mi;0>a&&(a=this.vwr.ms.mc-1);d.put("appendToModelIndex",Integer.$valueOf(a));var e=d.containsKey("fixedSite"),f=this.vwr.getModelUndeletedAtomsBitSet(a),h=this.vwr.g.appendNew;this.vwr.g.appendNew=!1;for(var k=0,l=f.nextSetBit(0);0<=l;l=f.nextSetBit(l+1)){var r=this.vwr.ms.at[l].getAtomNumber();r>k&&(k=r)}for(var r=new JU.SB,l=0,m=this.vwr.ms.ac;lthis.oPt||0<=this.oPt&&null!= +this.oStack[this.oPt])&&this.eval.invArg();for(var a=new JU.Lst,b=0;b<=this.xPt;b++)a.addLast(this.isSpecialAssignment?this.xStack[b]:JS.SV.selectItemVar(this.xStack[b]));null!=this.lastAssignedString&&(a.removeItemAt(0),a.add(0,this.lastAssignedString),this.lastAssignedString.intValue=this.xStack[0].intValue);return JS.SV.newV(135198,a)}if(0==this.xPt){a=this.xStack[0];if(this.chk)return this.asBitSet?JS.SV.newV(10,new JU.BS):a;if(10==a.tok||7==a.tok||15==a.tok||4==a.tok||11==a.tok||12==a.tok)a= +JS.SV.selectItemVar(a);this.asBitSet&&7==a.tok&&(a=JS.SV.newV(10,JS.SV.unEscapeBitSetArray(a.value,!1)));return a}}!this.allowUnderflow&&(0<=this.xPt||0<=this.oPt)&&this.eval.invArg();return null});f(e,"putX",function(a){if(!this.skipping){if(this.wasX)try{this.addOp(JS.T.tokenComma)}catch(b){if(!D(b,"JS.ScriptException"))throw b;}++this.xPt==this.xStack.length&&(this.xStack=JU.AU.doubleLength(this.xStack));0>this.xPt&&System.out.println("testing scriptemaafe");this.xStack[this.xPt]=a;this.ptx=++this.ptid; +this.debugHigh&&JU.Logger.debug("\nputx= "+a+" ptx="+this.ptid)}},"JS.SV");f(e,"putOp",function(a){++this.oPt>=this.oStack.length&&(this.oStack=JU.AU.doubleLength(this.oStack));this.oStack[this.oPt]=a;this.pto=++this.ptid;this.debugHigh&&JU.Logger.debug("\nputop="+a+" pto="+this.ptid)},"JS.T");f(e,"putIf",function(a){++this.ifPt>=this.ifStack.length&&(this.ifStack=JU.AU.doubleLength(this.ifStack));this.ifStack[this.ifPt]=a},"~S");f(e,"addXCopy",function(a){switch(a.tok){case 2:a=JS.SV.newI(a.intValue); +break;case 3:a=JS.SV.newV(3,a.value)}return this.addX(a)},"JS.SV");f(e,"addX",function(a){this.putX(a);return this.wasX=!0},"JS.SV");f(e,"addXObj",function(a){a=JS.SV.getVariable(a);if(null==a)return!1;this.putX(a);return this.wasX=!0},"~O");f(e,"addXStr",function(a){this.putX(JS.SV.newS(a));return this.wasX=!0},"~S");f(e,"addXBool",function(a){this.putX(JS.SV.getBoolean(a));return this.wasX=!0},"~B");f(e,"addXInt",function(a){this.putX(JS.SV.newI(a));return this.wasX=!0},"~N");f(e,"addXList",function(a){this.putX(JS.SV.getVariableList(a)); +return this.wasX=!0},"JU.Lst");f(e,"addXMap",function(a){this.putX(JS.SV.getVariableMap(a));return this.wasX=!0},"java.util.Map");f(e,"addXM3",function(a){this.putX(JS.SV.newV(11,a));return this.wasX=!0},"JU.M3");f(e,"addXM4",function(a){this.putX(JS.SV.newV(12,a));return this.wasX=!0},"JU.M4");f(e,"addXFloat",function(a){this.putX(JS.SV.newF(a));return this.wasX=!0},"~N");f(e,"addXBs",function(a){this.putX(JS.SV.newV(10,a));return this.wasX=!0},"JU.BS");f(e,"addXPt",function(a){this.putX(JS.SV.newV(8, +a));return this.wasX=!0},"JU.P3");f(e,"addXPt4",function(a){this.putX(JS.SV.newV(9,a));return this.wasX=!0},"JU.P4");f(e,"addXNum",function(a){if(!u(a,"JS.SV"))switch(a.tok){case 3:if(this.wasX){var b=a.value.floatValue();if(0>b||0==b&&-Infinity==1/b){this.addOp(JS.T.tokenMinus);a=JS.SV.newF(-b);break}}a=JS.SV.newV(3,a.value);break;default:a=a.intValue,this.wasX&&0>a&&(this.addOp(JS.T.tokenMinus),a=-a),a=JS.SV.newI(a)}this.putX(a);return this.wasX=!0},"JS.T");f(e,"addXAV",function(a){this.putX(JS.SV.getVariableAV(a)); +return this.wasX=!0},"~A");f(e,"addXAD",function(a){this.putX(JS.SV.getVariableAD(a));return this.wasX=!0},"~A");f(e,"addXAS",function(a){this.putX(JS.SV.getVariableAS(a));return this.wasX=!0},"~A");f(e,"addXAI",function(a){this.putX(JS.SV.getVariableAI(a));return this.wasX=!0},"~A");f(e,"addXAII",function(a){this.putX(JS.SV.getVariableAII(a));return this.wasX=!0},"~A");f(e,"addXAF",function(a){this.putX(JS.SV.getVariableAF(a));return this.wasX=!0},"~A");f(e,"addXAFF",function(a){this.putX(JS.SV.getVariableAFF(a)); +return this.wasX=!0},"~A");e.isOpFunc=f(e,"isOpFunc",function(a){return null!=a&&(JS.T.tokAttr(a.tok,134217728)&&a!==JS.T.tokenArraySquare||268442113==a.tok&&JS.T.tokAttr(a.intValue,134217728))},"JS.T");f(e,"addOp",function(a){return this.addOpAllowMath(a,!0,0)},"JS.T");f(e,"addOpAllowMath",function(a,b,c){this.debugHigh&&this.dumpStacks("adding "+a+" wasx="+this.wasX);var d=0<=this.oPt&&null!=this.oStack[this.oPt]?this.oStack[this.oPt].tok:0;if(this.skipping=0<=this.ifPt&&("F"==this.ifStack[this.ifPt]|| +"X"==this.ifStack[this.ifPt]))return this.checkSkip(a,d);var e=268442113==a.tok;if(e&&!this.wasX)return!1;var f=b&&JS.ScriptMathProcessor.isOpFunc(a);1<=this.oPt&&(268435968!=a.tok&&134217750==d)&&(d=this.oStack[--this.oPt].tok);var h=null,k=!1;switch(a.tok){case 1073742195:return this.haveSpaceBeforeSquare=!0;case 268436992:if(!this.wasX)return!1;break;case 268441601:case 268441602:if(this.wasX&&-1==a.intValue&&this.addOp(JS.T.tokenComma))return this.addOp(a);break;case 268437505:break;case 268435969:if(!this.wasX&& +1<=this.oPt&&268435968==d&&!JS.ScriptMathProcessor.isOpFunc(this.oStack[this.oPt-1]))return!1;break;case 268440576:this.wasX||(a=JS.SV.newV(268441600,"-"));break;case 1275068725:case 32:case 64:case 96:case 128:case 160:case 192:case 480:d=0>this.oPt?0:d;if(!this.wasX||!(268442113==d||1677721602==d||1153433601==d))return!1;this.oStack[this.oPt].intValue|=a.tok;return!0;case 268437504:k=!0;if(!this.wasX||this.haveSpaceBeforeSquare)this.squareCount++,a=h=JS.T.tokenArraySquare,this.haveSpaceBeforeSquare= +!1;break;case 268439040:case 268435968:k=!0;default:if(f){f=1<=this.oPt&&268435968==d;if(e){if(268435968==c&&6==this.xStack[this.xPt].tok)return!1}else if(this.wasX&&!f)return!1;h=a;k=!0;break}if(this.wasX==k&&268442113!=d){if(!this.wasX||!b)return!1;if(this.addOp(JS.T.tokenComma))return this.addOp(a)}}for(;0<=this.oPt&&268436482!=d&&(268441601!=a.tok&&268441602!=a.tok||this.wasX)&&(!k||268442113==d&&(268442113==a.tok||268437504==a.tok))&&JS.T.getPrecedence(d)>=JS.T.getPrecedence(a.tok)&&(268441600!= +d||268441600!=a.tok);){if(268435969==a.tok&&268435968==d){0<=this.xPt&&(this.xStack[this.xPt]=JS.SV.selectItemVar(this.xStack[this.xPt]));this.wasX=!0;break}if(268437505==a.tok&&1275068418==d)break;if(268437505==a.tok&&268437504==d){if(this.isArrayItem&&1==this.squareCount&&0==this.equalCount){this.wasX=!1;this.addX(JS.SV.newT(JS.T.tokenArrayOpen));break}if(!this.doSelection())return!1;this.wasX=!0;break}if(!this.operate())return!1;d=0<=this.oPt&&null!=this.oStack[this.oPt]?this.oStack[this.oPt].tok: +0}null!=h&&(this.wasX=!1,this.addX(JS.SV.newV(268440324,h)));switch(a.tok){case 268435968:this.parenCount++;this.wasX=!1;break;case 805307393:return a=this.getX().asBoolean(),268436482==d?this.ifPt--:this.putOp(JS.T.tokenColon),this.putIf(a?"T":"F"),this.skipping=!a,this.wasX=!1,!0;case 268436482:if(268436482!=d||0>this.ifPt)return!1;this.ifStack[this.ifPt]="X";this.wasX=!1;return this.skipping=!0;case 268435969:this.wasX=!0;if(0>=this.parenCount--)return!1;268436482==d&&(this.ifPt--,this.oPt--); +this.oPt--;if(0>this.oPt)return!0;if(JS.ScriptMathProcessor.isOpFunc(this.oStack[this.oPt])&&(this.wasX=!1,!this.evaluateFunction(0)))return!1;this.skipping=0<=this.ifPt&&"X"==this.ifStack[this.ifPt];return!0;case 268436992:return this.wasX=!1,!0;case 268437504:this.squareCount++;this.wasX=!1;break;case 268437505:this.wasX=!0;if(0>=this.squareCount--||0>this.oPt||!this.doSelections)return!this.doSelections;if(1275068418==this.oStack[this.oPt].tok)return this.evaluateFunction(268437504);this.oPt--; +return!0;case 268442113:this.wasX=!b||!JS.T.tokAttr(a.intValue,134217728);break;case 1073742332:this.braceCount++;this.wasX=!1;break;case 1073742338:if(0>=this.braceCount--)return!1;this.wasX=!1;break;case 268438528:case 268438016:if(!this.wasSyntaxCheck&&0>this.xPt)return!1;if(!this.wasSyntaxCheck)switch(this.xStack[this.xPt].tok){case 10:case 7:break;case 11:if(268438016==a.tok)break;default:d=this.getX().asBoolean(),this.addX(JS.SV.getBoolean(d)),d==(268438016==a.tok)&&(this.chk=!0,a=268438016== +a.tok?JS.T.tokenOrTRUE:JS.T.tokenAndFALSE)}this.wasX=!1;break;case 268441602:case 268441601:break;case 268440324:0==this.squareCount&&(this.doSelections=!0,this.assignLeft=!1,this.equalCount++);this.wasX=!1;break;default:this.wasX=!1}this.putOp(a);switch(a.tok){case 268442113:return 134320141==(a.intValue&-481)&&134320141!=a.intValue?this.evaluateFunction(0):!0;case 268441602:case 268441601:return this.wasX?this.operate():!0}return!0},"JS.T,~B,~N");f(e,"checkSkip",function(a,b){switch(a.tok){case 268435968:this.putOp(a); +break;case 268436482:if(268436482!=b||"X"==this.ifStack[this.ifPt])break;this.ifStack[this.ifPt]="T";this.skipping=this.wasX=!1;break;case 268435969:if(268435968==b){this.oPt--;break}if(268436482!=b){this.putOp(a);break}this.wasX=!0;this.ifPt--;this.oPt-=2;this.skipping=!1}return!0},"JS.T,~N");f(e,"doSelection",function(){if(0>this.xPt||0==this.xPt&&!this.isArrayItem)return!1;var a=this.xStack[this.xPt--],b=this.xStack[this.xPt];if((7==b.tok||15==b.tok)&&2147483647!=b.intValue)if(4==a.tok||this.assignLeft&& +1==this.squareCount)this.xStack[this.xPt]=b=JS.SV.selectItemTok(b,-2147483648);this.assignLeft&&4!=b.tok&&(this.lastAssignedString=null);switch(b.tok){case 6:case 14:this.doSelections?(a=b.mapValue(JS.SV.sValue(a)),this.xStack[this.xPt]=null==a?JS.SV.newS(""):a):(this.xPt++,this.putOp(null));break;default:b=JS.SV.newS(JS.SV.sValue(b));case 10:case 15:case 7:case 4:case 11:case 12:this.doSelections||7==b.tok&&2147483647==b.intValue?(this.xStack[this.xPt]=JS.SV.selectItemTok(b,a.asInt()),this.assignLeft&& +(4==b.tok&&1==this.squareCount)&&(this.lastAssignedString=b)):this.xPt++,this.doSelections||this.putOp(null)}return!0});f(e,"dumpStacks",function(a){JU.Logger.debug("\n\n------------------\nRPN stacks: "+a+"\n");for(a=0;a<=this.xPt;a++)JU.Logger.debug("x["+a+"]: "+this.xStack[a]);JU.Logger.debug("\n");for(a=0;a<=this.oPt;a++)JU.Logger.debug("o["+a+"]: "+this.oStack[a]+" prec="+(null==this.oStack[a]?"--":""+JS.T.getPrecedence(this.oStack[a].tok)));JU.Logger.debug(" ifStack = "+String.instantialize(this.ifStack).substring(0, +this.ifPt+1))},"~S");f(e,"getX",function(){0>this.xPt&&this.eval.error(13);var a=JS.SV.selectItemVar(this.xStack[this.xPt]);this.xStack[this.xPt--]=null;this.wasX=!1;return a});f(e,"getXTok",function(){return 0>this.xPt?0:this.xStack[this.xPt].tok});f(e,"evaluateFunction",function(a){var b=this.oStack[this.oPt--];0==a&&(a=268442113==b.tok?b.intValue&-481:b.tok);for(var c=JS.T.getMaxMathParams(a),d=0,e=this.xPt;0<=e&&this.xStack[e--].value!==b;)d++;if(0c)return!1;for(c=Array(d);0<=--d;)c[d]= +this.getX();this.xPt--;if(!this.chk)return this.eval.getMathExt().evaluate(this,b,c,a);268442113==b.tok&&this.xPt--;0>this.xPt&&(this.xPt=0);switch(a){case 134217736:case 1275203608:case 134218756:case 134218757:case 134217759:case 134353926:return this.addXBs(new JU.BS)}return this.addXBool(!0)},"~N");f(e,"operate",function(){var a=this.oStack[this.oPt--],b;this.debugHigh&&this.dumpStacks("operate: "+a);if(268440324==a.tok&&(this.isArrayItem&&0==this.squareCount&&1==this.equalCount&&0>this.oPt|| +0<=this.oPt&&null==this.oStack[this.oPt]))return!0;var c;switch(a.tok){case 268441601:case 268441602:if(0<=this.xPt&&this.xStack[this.xPt].canIncrement()){c=this.xStack[this.xPt--];this.wasX=!1;break}default:c=this.getX()}if(c===JS.T.tokenArrayOpen)return!1;switch(a.tok){case 268441601:case 268441602:b=c;if(!this.chk){this.ptxthis.pto&&(b=JS.SV.copySafely(c))}this.wasX=!1;this.putX(b);return this.wasX=!0;case 268441600:switch(c.tok){case 2:return this.addXInt(-c.asInt()); +case 8:return a=JU.P3.newP(c.value),a.scale(-1),this.addXPt(a);case 9:return a=JU.P4.newPt(c.value),a.scale4(-1),this.addXPt4(a);case 11:return a=JU.M3.newM3(c.value),a.transpose(),this.addXM3(a);case 12:return a=JU.M4.newM4(c.value),a.transpose(),this.addXM4(a);case 10:return this.addXBs(JU.BSUtil.copyInvert(c.value,u(c.value,"JM.BondSet")?this.vwr.ms.bondCount:this.vwr.ms.ac))}return this.addXFloat(-c.asFloat());case 268439040:if(this.chk)return this.addXBool(!0);switch(c.tok){case 9:return this.addXPt4(JU.Quat.newP4(c.value).inv().toPoint4f()); +case 11:return a=JU.M3.newM3(c.value),a.invert(),this.addXM3(a);case 12:return this.addXM4(JU.M4.newM4(c.value).invert());case 10:return a=u(c.value,"JM.BondSet"),c=JU.BSUtil.copyInvert(c.value,a?this.vwr.ms.bondCount:this.vwr.ms.ac),this.addXBs(a?JM.BondSet.newBS(c):c);default:return this.addXBool(!c.asBoolean())}case 268442113:b=805307393==a.intValue?805307393:a.intValue&-481;if(this.chk)return this.addXObj(JS.SV.newS(""));if(this.vwr.allowArrayDotNotation)switch(c.tok){case 6:case 14:switch(b){case 1275068418:case 1140850706:case 1140850694:case 1140850696:break; +default:return a=c.mapValue(a.value),this.addXObj(null==a?JS.SV.newS(""):a)}}switch(b){case 1275068418:return this.addX(c.toArray());case 805307393:case 1073741824:return 10==c.tok&&(this.chk?this.addXStr(""):this.getAllProperties(c,a.value));case 1140850696:return this.addXStr(JS.ScriptMathProcessor.typeOf(c));case 1140850706:return a=c.getKeys(480==(a.intValue&480)),null==a?this.addXStr(""):this.addXAS(a);case 1140850691:if(8==c.tok)return this.addXFloat(c.value.distance(JS.SV.pt0));case 1275068425:case 1140850694:if(1140850691== +b&&u(c.value,"JM.BondSet"))break;return this.addXInt(JS.SV.sizeOf(c));case 1140850692:switch(c.tok){case 11:case 12:a=JS.SV.sValue(c);a=JU.PT.rep(a.substring(1,a.length-1),"],[","]\n[");break;case 4:a=c.value;break;default:a=JS.SV.sValue(c)}a=JU.PT.rep(a,"\n\r","\n").$replace("\r","\n");return this.addXAS(JU.PT.split(a,"\n"));case 1765808134:switch(c.tok){case 4:case 7:return this.addXPt(JU.CU.colorPtFromString(JS.SV.sValue(c)));case 2:case 3:return this.addXPt(this.vwr.getColorPointForPropertyValue(JS.SV.fValue(c))); +case 8:return this.addXStr(JU.Escape.escapeColor(JU.CU.colorPtToFFRGB(c.value)))}break;case 1812599299:return this.chk?this.addXStr("x"):this.getBoundBox(c)}if(this.chk)return this.addXStr(JS.SV.sValue(c));if(4==c.tok&&(c=JS.SV.unescapePointOrBitsetAsVariable(JS.SV.sValue(c)),!u(c,"JS.SV")))return!1;a.tok==c.tok&&(c=this.getX());return this.getPointOrBitsetOperation(a,c)}b=this.getX();if(this.chk){if(a===JS.T.tokenAndFALSE||a===JS.T.tokenOrTRUE)this.chk=!1;return this.addX(JS.SV.newT(b))}return this.binaryOp(a, +b,c)});f(e,"binaryOp",function(a,b,c){var d,e;switch(a.tok){case 268439552:case 268438528:switch(b.tok){case 10:var f=b.value;switch(c.tok){case 2:return a=c.asInt(),this.addXBool(0>a?!1:f.get(a));case 10:return f=JU.BSUtil.copy(f),f.and(c.value),this.addXBs(u(b.value,"JM.BondSet")?JM.BondSet.newBS(f):f)}}return this.addXBool(b.asBoolean()&&c.asBoolean());case 268438016:switch(b.tok){case 10:f=null;switch(c.tok){case 10:f=JU.BSUtil.copy(b.value);f.or(c.value);break;case 2:f=JU.BSUtil.copy(b.value); +a=c.asInt();0<=a&&f.set(a);break;case 7:f=JU.BSUtil.copy(b.value);e=c.value;for(a=e.size();0<=--a;)d=e.get(a).asInt(),0<=d&&f.set(d)}if(null==f)break;return this.addXBs(u(b.value,"JM.BondSet")?JM.BondSet.newBS(f):f);case 7:return this.addX(JS.SV.concatList(b,c,!1));case 11:if(8==c.tok)return this.addXM4(JU.M4.newMV(b.value,c.value))}return this.addXBool(b.asBoolean()||c.asBoolean());case 268438017:if(10==b.tok&&10==c.tok)return f=JU.BSUtil.copy(b.value),f.xor(c.value),this.addXBs(u(b.value,"JM.BondSet")? +JM.BondSet.newBS(f):f);b=b.asBoolean();d=c.asBoolean();return this.addXBool(b&&!d||d&&!b);case 268438018:return 10!=b.tok||10!=c.tok?!1:this.addXBs(JU.BSUtil.toggleInPlace(JU.BSUtil.copy(b.value),c.value));case 268440322:return this.addXBool(2==b.tok&&2==c.tok?b.intValue<=c.intValue:b.isNaN()&&c.isNaN()||b.asFloat()<=c.asFloat());case 268440321:return this.addXBool(2==b.tok&&2==c.tok?b.intValue>=c.intValue:b.isNaN()&&c.isNaN()||b.asFloat()>=c.asFloat());case 268440320:return this.addXBool(2==b.tok&& +2==c.tok?b.intValue>c.intValue:b.asFloat()>c.asFloat());case 268440323:return this.addXBool(2==b.tok&&2==c.tok?b.intValuec;c++)b.addLast(a[c]);return this.addXList(b)},"JS.SV");f(e,"getPointOrBitsetOperation",function(a,b){switch(b.tok){case 7:switch(a.intValue){case 32:case 64:case 96:case 192:case 128:case 160:case 1275068725:return this.addXObj(this.eval.getMathExt().getMinMax(b.getList(),a.intValue,!0));case 1275334681:return this.addX(b.pushPop(null,null));case 1275068444:case 1140850693:return this.addX(b.sortOrReverse(1140850693== +a.intValue?-2147483648:1))}for(var c=Array(b.getList().size()),d=0;dd;d++)a.add(c[d]),a.add(b);a.scale(0.125);return a});f(e,"planeParameter",function(a,b){var c=new JU.V3,d=new JU.V3,e=null,f=null,h=null,k=null,l=!1;134217750==this.tokAt(a)&&a++;var r=null,m=268440576==this.tokAt(a);m&&a++;try{if(a=h&&3<=k)return this.getToken(a).value;m=!1;return null}if(9==this.tokAt(a)){if(4>=h&&4<=k)return this.getToken(a).value;m=!1;return null}var j=1,n=a;a:for(;nf||r)return m=!1,null;u(this.theToken.value,Integer)||2==this.theTok?c[f++]/=2147483647==this.theToken.intValue?this.theToken.value.intValue():this.theToken.intValue:u(this.theToken.value,Float)&&(c[f++]/=this.theToken.value.floatValue()); +this.coordinatesAreFractional=!0;break;case 1073742357:case 1073741824:c[f++]=NaN;break;case 3:case 1073742359:if(r||6==f)return m=!1,null;c[f++]=this.theToken.value.floatValue();break;default:this.iToken--;break a}if(fk)return m=!1,null;if(3==f){if(e)return JU.P4.new4(c[0],c[1],c[2],1E3*(d[0]%1E3)+d[1]%1E3+1E6);var q=JU.P3.new3(c[0],c[1],c[2]);this.coordinatesAreFractional&&0!=(b&32)&&(this.fractionalPoint=JU.P3.newP(q),this.chk||this.vwr.toCartesian(q,!1));return q}if(4==f&&(l||!this.coordinatesAreFractional))return JU.P4.new4(c[0], +c[1],c[2],c[3]);m=!1;return null}finally{!m&&0==(b&128)&&this.invArg()}},"~N,~N");f(e,"isPoint3f",function(a){var b=this.tokAt(a);if(0==b)return!1;var c;if((c=8==b)||9==b||this.isFloatParameter(a+1)&&this.isFloatParameter(a+2)&&this.isFloatParameter(a+3)&&this.isFloatParameter(a+4))return c;this.ignoreError=!0;b=this.iToken;c=!0;try{null==this.getPoint3f(a,!0,!1)&&(c=!1)}catch(d){if(D(d,Exception))c=!1;else throw d;}this.ignoreError=!1;this.iToken=b;return c},"~N");f(e,"getPoint3f",function(a,b,c){return this.getPointOrPlane(a, +35|(b?16:0)|(c?0:128))},"~N,~B,~B");f(e,"getFractionalPoint",function(a){return this.getPointOrPlane(a,71)},"~N");f(e,"getPoint4f",function(a){return this.getPointOrPlane(a,4)},"~N");f(e,"xypParameter",function(a){var b=this.tokAt(a);1073742195==b&&(b=this.tokAt(++a));if(268437504!=b||!this.isFloatParameter(++a))return null;b=new JU.P3;b.x=this.floatParameter(a);268436992==this.tokAt(++a)&&a++;if(!this.isFloatParameter(a))return null;b.y=this.floatParameter(a);var c=268441090==this.tokAt(++a);c&& +++a;if(268437505!=this.tokAt(a))return null;this.iToken=a;b.z=3.4028235E38*(c?-1:1);return b},"~N");f(e,"xyzpParameter",function(a){var b=this.tokAt(a);1073742195==b&&(b=this.tokAt(++a));if(268437504!=b||!this.isFloatParameter(++a))return null;b=new JU.P4;b.x=this.floatParameter(a);268436992==this.tokAt(++a)&&a++;if(!this.isFloatParameter(a))return null;b.y=this.floatParameter(a);268436992==this.tokAt(++a)&&a++;if(!this.isFloatParameter(a))return null;b.z=this.floatParameter(a);var c=268441090==this.tokAt(++a); +c&&++a;if(268437505!=this.tokAt(a))return null;this.iToken=a;b.w=3.4028235E38*(c?-1:1);return b},"~N");f(e,"optParameterAsString",function(a){return a>=this.slen?"":this.paramAsStr(a)},"~N");f(e,"intParameter",function(a){if(this.checkToken(a)&&2==this.getToken(a).tok)return this.theToken.intValue;this.error(20);return 0},"~N");f(e,"isFloatParameter",function(a){switch(this.tokAt(a)){case 2:case 3:return!0}return!1},"~N");f(e,"floatParameter",function(a){if(this.checkToken(a))switch(this.getToken(a), +this.theTok){case 1073742363:return-this.theToken.intValue;case 1073742362:case 2:return this.theToken.intValue;case 1073742359:case 3:return this.theToken.value.floatValue()}this.error(34);return 0},"~N");f(e,"getPointArray",function(a,b,c){2147483647==b&&(b=-1);var d=0>b?null:Array(b),e=0>b?new JU.Lst:null,f=0>a?7:this.getToken(a++).tok;switch(f){case 7:e=this.theToken.getList();0<=b&&e.size()!=b&&this.invArg();b=e.size();null==d&&(d=Array(b));for(f=0;fc)&&this.invArg();this.iToken=a-1;return e},"~N,~N,~N,~B");f(e,"floatParameterSet",function(a,b,c){var d= +null,e=null,f=0,f=null;this.iToken=a;switch(this.tokAt(a)){case 4:f=JS.SV.sValue(this.st[a]);f=JU.PT.replaceWithCharacter(f,"{},[]\"'"," ");e=JU.PT.parseFloatArray(f);f=e.length;break;case 7:e=JS.SV.flistValue(this.st[a],0);f=e.length;break;default:d=this.listParameter(a,b,c),f=d.size()}(fc)&&this.invArg();if(null==e){e=S(f,0);for(a=0;a-a&&(this.iToken=-a,this.bad());return this.slen},"~N");f(e,"checkLengthErrorPt",function(a,b){this.slen!=a&&(this.iToken=0a&&(this.restrictSelected(!1, +!1),a=-a);break;default:this.error(6)}return a});f(e,"intParameterRange",function(a,b,c){a=this.intParameter(a);return ac?(this.integerOutOfRange(b,c),2147483647):a},"~N,~N,~N");f(e,"floatParameterRange",function(a,b,c){a=this.floatParameter(a);return ac?(this.numberOutOfRange(b,c),NaN):a},"~N,~N,~N");f(e,"getPointVector",function(a,b){switch(a.tok){case 10:return this.vwr.ms.getAtomPointVector(a.value);case 7:for(var c=new JU.Lst,d,e=a.getList(),f=0;fMath.abs(a.x)||1>Math.abs(a.y)||1>Math.abs(a.z)||a.x!=H(a.x)||a.y!=H(a.y)|| +a.z!=H(a.z))&&this.invArg();return a},"JU.T3");f(e,"planeValue",function(a){var b=null,c=NaN,d=null;switch(a.tok){case 9:return a.value;case 7:break;case 4:case 1073741824:var e=a.value,f=e.startsWith("-"),h=f?-1:1;f&&(e=e.substring(1));var k=null,l=e.length,r=2>l?-1:"xy yz xz x= y= z= ab bc ac a= b= c=".indexOf(e.substring(0,2).toLowerCase());if(18<=r&&null==(b=this.vwr.getCurrentUnitCell()))r-=18;var m=0>e.indexOf("=");2--a||a>=b.length? +null:b[a]=JS.SV.getVariable(b[a])}var c=b.getList();return-2147483648==a?b:0>--a||a>=c.size()?JS.SV.newV(7,new JU.Lst):c.get(a)},"~N")});K("JS");Z=Q(function(){this.context=this.processName=null;O(this,arguments)},JS,"ScriptProcess",null);R(Z,function(e,a){this.processName=e;this.context=a},"~S,JS.ScriptContext");K("JS");M(null,"JS.ScriptProcessRunnable",["JU.Logger"],function(){var e=Q(function(){this.shapeManager=this.processLock=this.process=this.parallelProcessor=null;O(this,arguments)},JS,"ScriptProcessRunnable", +null,Runnable);R(e,function(a,b,c,d){this.parallelProcessor=a;this.process=b;this.processLock=c;this.shapeManager=d},"JS.ScriptParallelProcessor,JS.ScriptProcess,~O,JV.ShapeManager");s(e,"run",function(){try{null==this.parallelProcessor.error&&(JU.Logger.debugging&&JU.Logger.debug("Running process "+this.process.processName+" "+this.process.context.pc+" - "+(this.process.context.pcEnd-1)),this.parallelProcessor.eval(this.process.context,this.shapeManager),JU.Logger.debugging&&JU.Logger.debug("Process "+ +this.process.processName+" complete"))}catch(a){if(D(a,Exception))a.printStackTrace();else if(D(a,Error))this.parallelProcessor.clearShapeManager(a);else throw a;}finally{--this.parallelProcessor.counter,this.processLock.notifyAll()}})});K("JS");M(["J.thread.JmolThread"],"JS.ScriptQueueThread",["JU.Logger"],function(){var e=Q(function(){this.scriptManager=null;this.startedByCommandThread=!1;this.pt=0;O(this,arguments)},JS,"ScriptQueueThread",J.thread.JmolThread);R(e,function(a,b,c,d){this.setViewer(b, +"QueueThread"+d);this.scriptManager=a;this.vwr=b;this.startedByCommandThread=c;this.pt=d},"JS.ScriptManager,JV.Viewer,~B,~N");s(e,"run1",function(a){for(;;)switch(a){case -1:a=0;break;case 0:if(this.stopped||0==this.scriptManager.getScriptQueue().size()){a=-2;break}if(!this.runNextScript()&&!this.runSleep(100,0))return;break;case -2:this.scriptManager.queueThreadFinished(this.pt);return}},"~N");f(e,"runNextScript",function(){var a=this.scriptManager.getScriptQueue();if(0==a.size())return!1;var b= +this.scriptManager.getScriptItem(!1,this.startedByCommandThread);if(null==b)return!1;JU.Logger.debugging&&JU.Logger.debug("Queue["+this.pt+"]["+a.size()+"] scripts; running: "+b.get(0));a.removeItemAt(0);this.scriptManager.runScriptFromThread(b);return 0==a.size()?!1:!0})});K("JS");M(null,"JS.ScriptTokenParser","JU.Lst $.P3 $.PT J.i18n.GT JS.T JU.Edge $.Logger $.SimpleUnitCell".split(" "),function(){var e=Q(function(){this.script=this.htUserFunctions=this.vwr=null;this.isStateScript=!1;this.ichToken= +this.ichEnd=this.ichComment=this.ichCurrentCommand=this.iCommand=this.lineCurrent=0;this.tokenAndEquals=this.lastToken=this.tokenCommand=this.lastFlowCommand=this.theToken=null;this.ptNewSetModifier=this.tokCommand=this.nTokens=this.theTok=0;this.haveMacro=this.isNewSet=!1;this.logMessages=!0;this.atokenInfix=null;this.itokenInfix=0;this.isSetOrDefine=this.isMathExpressionCommand=this.isSetBrace=!1;this.ltokenPostfix=null;this.isCommaAsOrAllowed=this.isEmbeddedExpression=!1;this.theValue=null;this.residueSpecCodeGenerated= +this.haveString=!1;this.errorType=this.errorLine=this.errorMessageUntranslated=this.errorMessage=null;O(this,arguments)},JS,"ScriptTokenParser",null);f(e,"compileExpressions",function(){var a=(134222850==this.tokCommand||4124==this.tokCommand)&&268435968==this.tokAt(2);this.isEmbeddedExpression=a||0!=this.tokCommand&&(134320141!=this.tokCommand&&102436!=this.tokCommand&&364558!=this.tokCommand&&102412!=this.tokCommand||2147483647!=this.tokenCommand.intValue)&&102409!=this.tokCommand&&!JS.T.tokAttr(this.tokCommand, +12288)&&(2=this.atokenInfix.length?0:this.atokenInfix[this.itokenInfix].tok});f(e,"tokPeekIs",function(a){return this.tokAt(this.itokenInfix)==a},"~N");f(e,"intPeek",function(){return this.itokenInfix>=this.atokenInfix.length?2147483647:this.atokenInfix[this.itokenInfix].intValue});f(e,"valuePeek",function(){return this.moreTokens()?this.atokenInfix[this.itokenInfix].value: +""});f(e,"tokenNext",function(){return this.itokenInfix>=this.atokenInfix.length?null:this.atokenInfix[this.itokenInfix++]});f(e,"tokenNextTok",function(a){var b=this.tokenNext();return null!=b&&b.tok==a},"~N");f(e,"returnToken",function(){this.itokenInfix--;return!1});f(e,"getToken",function(){this.theValue=null==(this.theToken=this.tokenNext())?null:this.theToken.value;return this.theToken});f(e,"getNumericalToken",function(){return null!=this.getToken()&&(2==this.theToken.tok||3==this.theToken.tok)}); +f(e,"floatValue",function(){switch(this.theToken.tok){case 2:return this.theToken.intValue;case 3:return this.theValue.floatValue()}return 0});f(e,"addTokenToPostfix",function(a,b){return this.addTokenToPostfixToken(JS.T.o(a,b))},"~N,~O");f(e,"addTokenToPostfixInt",function(a,b,c){return this.addTokenToPostfixToken(JS.T.tv(a,b,c))},"~N,~N,~O");f(e,"addTokenToPostfixToken",function(a){if(null==a)return!1;this.logMessages&&JU.Logger.debug("addTokenToPostfix"+a);if(268437504==a.tok&&(1073742336==this.lastToken.tok|| +1073742337==this.lastToken.tok)){var b=this.ltokenPostfix.size()-1;this.ltokenPostfix.removeItemAt(b);this.ltokenPostfix.addLast(JS.T.tokenRightParen);for(var c=0,d,e=this.ltokenPostfix.size();0<=--e&&0<=c;)switch(d=this.ltokenPostfix.get(e).tok){case 268435969:case 268437505:c++;break;case 268435968:case 268437504:c--;var f;if(1==c&&268435969!=(f=this.ltokenPostfix.get(e-1).tok)&&268437505!=f)b=268437504==d?e-1:e,c=-10;break;default:f=0==e?0:this.ltokenPostfix.get(e-1).tok;if(1073742336==f||1073742337== +f){b=e-1;break}e==b-1&&(b=e,c=-10)}-10==c&&this.ltokenPostfix.add(b,JS.T.tokenLeftParen)}this.ltokenPostfix.addLast(a);this.lastToken=a;return!0},"JS.T");f(e,"addNextToken",function(){return this.addTokenToPostfixToken(this.tokenNext())});f(e,"addNextTokenIf",function(a){return this.tokPeekIs(a)&&this.addNextToken()},"~N");f(e,"addSubstituteTokenIf",function(a,b){if(!this.tokPeekIs(a))return!1;this.itokenInfix++;return this.addTokenToPostfixToken(b)},"~N,JS.T");f(e,"clauseOr",function(a){this.haveString= +!1;if(!this.clauseAnd())return!1;if(this.isEmbeddedExpression&&1073742326==this.lastToken.tok)return!0;for(var b;268438016==(b=this.tokPeek())||268438017==b||268438018==b||a&&268436992==b;){268436992==b&&!this.haveString?this.addSubstituteTokenIf(268436992,JS.T.tokenOr):this.addNextToken();if(!this.clauseAnd())return!1;if(a&&(1073742338==this.lastToken.tok||10==this.lastToken.tok))this.haveString=!0}return!0},"~B");f(e,"clauseAnd",function(){if(!this.clauseNot())return!1;if(this.isEmbeddedExpression&& +1073742326==this.lastToken.tok)return!0;for(;this.tokPeekIs(268438528);)if(this.addNextToken(),!this.clauseNot())return!1;return!0});f(e,"clauseNot",function(){return this.tokPeekIs(268439040)?(this.addNextToken(),this.clauseNot()):this.clausePrimitive()});f(e,"clausePrimitive",function(){var a=this.tokPeek();switch(a){case 1073742195:return this.itokenInfix++,this.clausePrimitive();case 0:return this.error(4);case 1073742327:case 10:case 268441088:case 136314895:case 2097160:case 2097159:case 2097162:case 1073742331:case 1073742333:case 2097184:return this.addNextToken(); +case 4:return this.haveString=!0,this.addNextToken();case 3:return this.addTokenToPostfixInt(1073742359,this.fixModelSpec(this.getToken()),this.theValue);case 1094713349:case 1094713350:return this.clauseCell(a);case 134217736:case 1275203608:return this.clauseConnected(1275203608==a);case 134218756:case 134218757:return this.clauseSubstructure();case 134217759:case 134353926:return this.clauseWithin(134217759==a);case 12290:return this.clauseDefine(!1,!1);case 1677721602:case 1745489939:this.addNextToken(); +if(this.tokPeekIs(10))this.addNextToken();else if(this.tokPeekIs(12290))return this.clauseDefine(!1,!1);return!0;case 268435968:return this.addNextToken(),!this.clauseOr(!0)?!1:!this.addNextTokenIf(268435969)?this.errorStr(15,")"):this.checkForItemSelector(!0);case 1073742332:return this.checkForCoordinate(this.isMathExpressionCommand);default:if(this.clauseResidueSpec())return!0;if(this.isError())return!1;if(JS.T.tokAttr(a,1077936128)){var b=this.itokenInfix,c=this.clauseComparator(!0);if(c||this.itokenInfix!= +b)return c;if(1237320707==a)return this.clauseSubstructure()}return this.addNextToken()}});f(e,"checkForCoordinate",function(a){var b=!1,c=this.ltokenPostfix.size();a?(this.addTokenToPostfixToken(JS.T.tokenExpressionBegin),this.tokenNext()):this.isEmbeddedExpression?(this.tokenNext(),c--):this.addNextToken();var d=this.tokPeekIs(4);if(d){a=!1;this.returnToken();this.ltokenPostfix.removeItemAt(this.ltokenPostfix.size()-1);this.addNextToken();for(var e=1;0!=e;){if(this.tokPeekIs(1073742332))if(this.isExpressionNext()){this.addTokenToPostfixToken(JS.T.o(1073742325, +"implicitExpressionBegin"));if(!this.clauseOr(!1))return!1;this.lastToken!==JS.T.tokenCoordinateEnd&&this.addTokenToPostfixToken(JS.T.tokenExpressionEnd)}else e++;this.tokPeekIs(1073742338)&&e--;this.addNextToken()}}else{if(!this.tokPeekIs(1073742338)&&!this.clauseOr(!1))return!1;for(b=1;!this.tokPeekIs(1073742338);){e=this.addNextTokenIf(268436992);if(!this.clauseOr(!1))return e||3>b?!1:this.errorStr(15,"}");b++}b=2<=b}b&&(a||this.isEmbeddedExpression)?(this.ltokenPostfix.set(c,JS.T.tokenCoordinateBegin), +this.addTokenToPostfixToken(JS.T.tokenCoordinateEnd),this.tokenNext()):a?(this.addTokenToPostfixToken(JS.T.tokenExpressionEnd),this.tokenNext()):this.isEmbeddedExpression?d||this.tokenNext():this.addNextToken();return this.checkForItemSelector(!d)},"~B");f(e,"checkForItemSelector",function(a){var b;if(268437504==(b=this.tokAt(this.itokenInfix+1))||a&&1073742332==b)return!0;for(;this.addNextTokenIf(268437504);){if(!this.clauseItemSelector())return!1;if(!this.addNextTokenIf(268437505))return this.errorStr(15, +"]")}return!0},"~B");f(e,"clauseWithin",function(a){this.addNextToken();if(!this.addNextTokenIf(268435968)||null==this.getToken())return!1;var b=3.4028235E38,c=null,d=a,e,f=this.theToken.tok;if(!a){e=-1;for(var h=this.itokenInfix;0!=e;h++)switch(e=this.tokAt(h)){case 268436992:e=0;break;case 1073742332:case 268435968:case 268435969:b=100,this.returnToken(),f=e=0}}switch(f){case 268440576:if(null==this.getToken())return!1;if(2!=this.theToken.tok)return this.error(12);b=-this.theToken.intValue;break; +case 2:case 3:b=this.floatValue();break;case 12290:this.addTokenToPostfixToken(this.theToken);if(!this.clauseDefine(!0,!1))return!1;c="";d=!1}if(a&&3.4028235E38==b)switch(f){case 12290:break;case 1094713350:case 1094713349:this.addTokenToPostfix(4,this.theValue);this.clauseCell(8);c="";break;case 1111490587:case 1073742128:case 134218756:case 134218757:case 1237320707:case 1073741925:case 1073742189:this.addTokenToPostfix(4,this.theValue);if(!this.addNextTokenIf(268436992))return!1;d=!1;e=this.tokPeek(); +switch(e){case 0:return!1;case 4:this.addNextToken();c="";break;case 12290:if(!this.clauseDefine(!1,!0))return!1;c="";break;default:return!1}break;case 1073742328:d=!1;case 1086326785:case 1086326786:case 1073741863:case 1812599299:case 1086326788:case 1073742329:case 1086326789:case 1086324742:case 1814695966:case 136314895:case 1094717454:case 1094713360:case 134217750:case 134219777:case 1094713362:case 1086324744:case 2097184:case 1094713366:case 1639976963:case 4:case 1648363544:c=this.theValue; +break;default:c=this.theValue.toLowerCase()}null==c?this.addTokenToPostfix(3,Float.$valueOf(b)):0 <= >=");null!=c&&this.returnToken();this.returnToken();return!1}if(JS.ScriptTokenParser.tokenAttr(b,1086324736)&&268440324!=c.tok&&268440326!=c.tok&&268440325!=c.tok)return this.errorStr(15,"== !=");if(268437504==this.tokPeek()){this.getToken();for(this.addTokenToPostfixToken(JS.T.tokenLeftParen);;){if(!this.addCompare(b,c))return!1;if(268436992==this.tokPeek())this.getToken();else if(268437505==this.tokPeek())break;this.addTokenToPostfixToken(268440325== +c.tok?JS.T.tokenAnd:JS.T.tokenOr)}this.getToken();this.addTokenToPostfixToken(JS.T.tokenRightParen);return!0}return this.addCompare(b,c)},"~B");f(e,"addCompare",function(a,b){if(null==this.getToken())return this.errorStr(17,""+this.valuePeek());var c=268440576==this.theToken.tok;if(c&&null==this.getToken())return this.error(12);switch(this.theToken.tok){case 2:case 3:case 1073741824:case 4:case 1073742332:case 12290:break;default:if(!JS.T.tokAttr(this.theToken.tok,1073741824))return this.error(13)}this.addTokenToPostfixInt(b.tok, +a.tok,b.value+(c?" -":""));1715472409==a.tok&&this.addTokenToPostfixToken(a);if(1073742332==this.theToken.tok)return this.returnToken(),this.clausePrimitive();this.addTokenToPostfixToken(this.theToken);return 12290==this.theToken.tok?this.clauseDefine(!0,!1):!0},"JS.T,JS.T");f(e,"clauseCell",function(a){var b=new JU.P3;this.tokenNext();if(8!=a&&!this.tokenNextTok(268440324))return this.errorStr(15,"=");if(null==this.getToken())return this.error(3);if(2==this.theToken.tok)JU.SimpleUnitCell.ijkToPoint3f(this.theToken.intValue, +b,1,0);else{if(1073742332!=this.theToken.tok||!this.getNumericalToken())return this.error(3);b.x=this.floatValue();this.tokPeekIs(268436992)&&this.tokenNext();if(!this.getNumericalToken())return this.error(3);b.y=this.floatValue();this.tokPeekIs(268436992)&&this.tokenNext();if(!this.getNumericalToken()||!this.tokenNextTok(1073742338))return this.error(3);b.z=this.floatValue()}return this.addTokenToPostfix(a,b)},"~N");f(e,"clauseDefine",function(a,b){if(!a){var c=this.tokenNext();b&&(c=JS.T.tokenDefineString); +this.addTokenToPostfixToken(c)}if(this.tokPeekIs(0))return this.error(4);if(!this.addSubstituteTokenIf(1073742332,JS.T.tokenExpressionBegin))return 12290==this.tokPeek()&&this.addNextToken(),this.addNextToken()&&this.checkForItemSelector(!0);for(;this.moreTokens()&&!this.tokPeekIs(1073742338);)if(this.tokPeekIs(1073742332)){if(!this.checkForCoordinate(!0))return!1}else this.addNextToken();return this.addSubstituteTokenIf(1073742338,JS.T.tokenExpressionEnd)&&this.checkForItemSelector(!0)},"~B,~B"); +f(e,"generateResidueSpecCode",function(a){this.residueSpecCodeGenerated&&this.addTokenToPostfixToken(JS.T.tokenAndSpec);this.addTokenToPostfixToken(a);return this.residueSpecCodeGenerated=!0},"JS.T");f(e,"clauseResidueSpec",function(){var a=this.tokPeek(),b=this.residueSpecCodeGenerated=!1;switch(a){case 0:case 2097156:case 2097174:return!1;case 2:case 268436482:case 268441090:case 5:break;case 268441089:case 268437504:case 1073741824:b=!0;break;default:if(JS.T.tokAttr(a,268435712))return!1;b=""+ +this.valuePeek();b=2==b.length||3==b.length;if(!b)return!1}var c=!1;if(b){if(!this.clauseResNameSpec())return!1;c=!0;a=this.tokPeek()}if(2==a||268441089==a||5==a){if(!this.clauseSequenceSpec())return!1;c=!0;a=this.tokPeek()}if(268436482==a){if(!this.clauseChainSpec(a))return!1;c=!0;a=this.tokPeek()}if(1073742336==a){if(!this.clauseAtomSpec())return!1;c=!0;a=this.tokPeek()}if(268441090==a){if(!this.clauseAlternateSpec())return!1;c=!0;a=this.tokPeek()}if(268441088==a){if(!this.clauseModelSpec())return!1; +c=!0;this.tokPeek()}if(!c)return this.error(14);this.residueSpecCodeGenerated||this.addTokenToPostfixToken(JS.T.tokenAll);return!0});f(e,"clauseResNameSpec",function(){this.getToken();var a=this.tokPeek();switch(this.theToken.tok){case 268441089:return!0;case 268437504:for(a="";null!=this.getToken()&&268437505!=this.theToken.tok;)a+=this.theValue;if(null==this.theToken)return!1;if(""===a)return!0;var b;return 0this.intPeek()?(268440576==b?this.tokenNext():(b=-this.intPeek(),this.tokenNext().intValue=b, +this.returnToken()),a.tok=1073742363,this.generateResidueSpecCode(a),this.addTokenToPostfixToken(this.getSequenceCode(!0))):this.generateResidueSpecCode(a)});f(e,"getSequenceCode",function(a){var b=2147483647,c=2147483647;switch(this.tokPeek()){case 5:b=this.tokenNext().intValue;break;case 2:c=this.tokenNext().intValue;break;default:if(!a)return null}return JS.T.tv(1073742362,c,Integer.$valueOf(b))},"~B");f(e,"clauseChainSpec",function(a){this.tokenNext();a=this.tokPeek();if(this.isTerminator(a))a= +" ";else{switch(a){case 268441089:return null!=this.getToken();case 2:this.getToken();a=this.theToken.intValue;if(0>a||9999a&&(a=2147483647)}return a},"JS.T");f(e,"clauseAtomSpec",function(){if(!this.tokenNextTok(1073742336))return this.error(7);if(null==this.getToken())return!0;var a="";if(2==this.theToken.tok&&(a+=""+this.theToken.intValue,null==this.getToken()))return this.error(7);if(268441089==this.theToken.tok)return!0;a+=""+this.theToken.value;this.tokPeekIs(268441089)&&(this.tokenNext(),a+="'");return this.generateResidueSpecCode(JS.T.tv(1073742356,this.vwr.getJBR().lookupSpecialAtomID(a.toUpperCase()), +a))});e.errorString=f(e,"errorString",function(a,b,c,d){var e=!1;!d&&!0==(e=J.i18n.GT.getDoTranslate())&&J.i18n.GT.setDoTranslate(!1);switch(a){default:a="Unknown compiler error message number: "+a;break;case 0:a=J.i18n.GT.$("bad argument count");break;case 1:a=J.i18n.GT.$("invalid context for {0}");break;case 2:a=J.i18n.GT.$("command expected");break;case 3:a=J.i18n.GT.$("{ number number number } expected");break;case 4:a=J.i18n.GT.$("unexpected end of script command");break;case 5:a=J.i18n.GT.$("end of expression expected"); +break;case 6:a=J.i18n.GT.$("identifier or residue specification expected");break;case 7:a=J.i18n.GT.$("invalid atom specification");break;case 8:a=J.i18n.GT.$("invalid chain specification");break;case 9:a=J.i18n.GT.$("invalid expression token: {0}");break;case 10:a=J.i18n.GT.$("invalid model specification");break;case 11:a=J.i18n.GT.$("missing END for {0}");break;case 12:a=J.i18n.GT.$("number expected");break;case 13:a=J.i18n.GT.$("number or variable name expected");break;case 14:a=J.i18n.GT.$("residue specification (ALA, AL?, A*) expected"); +break;case 15:a=J.i18n.GT.$("{0} expected");break;case 16:a=J.i18n.GT.$("{0} unexpected");break;case 17:a=J.i18n.GT.$("unrecognized expression token: {0}");break;case 18:a=J.i18n.GT.$("unrecognized {0} parameter");break;case 19:a=J.i18n.GT.$("unrecognized token: {0}")}0>a.indexOf("{0}")?null!=b&&(a+=": "+b):(a=JU.PT.rep(a,"{0}",b),0<=a.indexOf("{1}")?a=JU.PT.rep(a,"{1}",c):null!=c&&(a+=": "+c));d||J.i18n.GT.setDoTranslate(e);return a},"~N,~S,~S,~B");f(e,"commandExpected",function(){this.ichToken= +this.ichCurrentCommand;return this.error(2)});f(e,"error",function(a){return this.errorIntStr2(a,null,null)},"~N");f(e,"errorStr",function(a,b){return this.errorIntStr2(a,b,null)},"~N,~S");f(e,"errorIntStr2",function(a,b,c){var d=JS.ScriptTokenParser.errorString(a,b,c,!0);a=J.i18n.GT.getDoTranslate()?JS.ScriptTokenParser.errorString(a,b,c,!1):null;return this.errorStr2(d,a)},"~N,~S,~S");f(e,"isError",function(){return null!=this.errorMessage});f(e,"errorStr2",function(a,b){this.errorMessage=a;this.errorMessageUntranslated= +b;return!1},"~S,~S")});K("JV");M(["JV.JmolStateCreator","java.util.Hashtable"],"JV.StateCreator","java.util.Arrays $.Date JU.BS $.Lst $.P3 $.PT $.SB J.c.PAL $.STR $.VDW JM.AtomCollection $.Bond $.BondSet JS.T J.shape.Shape JU.BSUtil $.C $.ColorEncoder $.Edge $.Escape $.Font $.Logger JV.GlobalSettings $.JC $.StateManager $.Viewer".split(" "),function(){var e=Q(function(){this.undoWorking=!1;this.temp3=this.temp2=this.temp=this.vwr=this.actionStatesRedo=this.actionStates=null;O(this,arguments)},JV, +"StateCreator",JV.JmolStateCreator);X(e,function(){this.temp=new java.util.Hashtable;this.temp2=new java.util.Hashtable;this.temp3=new java.util.Hashtable});R(e,function(){V(this,JV.StateCreator,[]);this.actionStates=new JU.Lst;this.actionStatesRedo=new JU.Lst});s(e,"setViewer",function(a){this.vwr=a},"JV.Viewer");s(e,"getStateScript",function(a,b,c){var d=null==a||a.equalsIgnoreCase("all"),e=new JU.SB,f=d?(new JU.SB).append("function _setState() {\n"):null;d&&(e.append("# Jmol state version "+JV.Viewer.getJmolVersion()+ +";\n"),this.vwr.isApplet&&(this.app(e,"# fullName = "+JU.PT.esc(this.vwr.fullName)),this.app(e,"# documentBase = "+JU.PT.esc(JV.Viewer.appletDocumentBase)),this.app(e,"# codeBase = "+JU.PT.esc(JV.Viewer.appletCodeBase)),e.append("\n")));var h=this.vwr.g;(d||a.equalsIgnoreCase("windowState"))&&e.append(this.getWindowState(f,b,c));(d||a.equalsIgnoreCase("fileState"))&&e.append(this.getFileState(f));(d||a.equalsIgnoreCase("definedState"))&&e.append(this.getDefinedState(f,!0));(d||a.equalsIgnoreCase("variableState"))&& +e.append(this.getParameterState(h,f));(d||a.equalsIgnoreCase("dataState"))&&e.append(this.getDataState(f));(d||a.equalsIgnoreCase("modelState"))&&e.append(this.getModelState(f,!0,this.vwr.getBooleanProperty("saveProteinStructureState")));(d||a.equalsIgnoreCase("colorState"))&&e.append(this.getColorState(this.vwr.cm,f));(d||a.equalsIgnoreCase("frameState"))&&e.append(this.getAnimState(this.vwr.am,f));(d||a.equalsIgnoreCase("perspectiveState"))&&e.append(this.getViewState(this.vwr.tm,f));(d||a.equalsIgnoreCase("selectionState"))&& +e.append(this.getSelectionState(this.vwr.slm,f));null!=f&&(this.app(f,"set refreshing true"),this.app(f,"set antialiasDisplay "+h.antialiasDisplay),this.app(f,"set antialiasTranslucent "+h.antialiasTranslucent),this.app(f,"set antialiasImages "+h.antialiasImages),this.vwr.tm.spinOn&&this.app(f,"spin on"),f.append("}\n\n_setState;\n"));d&&e.appendSB(f);return e.toString()},"~S,~N,~N");f(e,"getDataState",function(a){var b=new JU.SB,c=!1,d=this.getAtomicPropertyState(-1,null);0b;b++)0!=d.objColors[b]&&this.app(e,JV.StateManager.getObjectNameFromId(b)+'Color = "'+JU.Escape.escapeColor(d.objColors[b])+'"');null!=d.backgroundImageFileName&&this.app(e,"background IMAGE "+(d.backgroundImageFileName.startsWith(";base64,")?"":"/*file*/")+JU.PT.esc(d.backgroundImageFileName));e.append(this.getLightingState(!1));null!= +a&&e.append("}\n\n");return e.toString()},"JU.SB,~N,~N");s(e,"getLightingState",function(a){var b=new JU.SB,c=this.vwr.gdata;this.app(b,"set ambientPercent "+c.getAmbientPercent());this.app(b,"set diffusePercent "+c.getDiffusePercent());this.app(b,"set specular "+c.getSpecular());this.app(b,"set specularPercent "+c.getSpecularPercent());this.app(b,"set specularPower "+c.getSpecularPower());var d=c.getSpecularExponent(),e=c.getPhongExponent();this.app(b,Math.pow(2,d)==e?"set specularExponent "+d:"set phongExponent "+ +e);this.app(b,"set celShading "+c.getCel());this.app(b,"set celShadingPower "+c.getCelPower());this.app(b,"set zShadePower "+this.vwr.g.zShadePower);a&&this.getZshadeState(b,this.vwr.tm,!0);return b.toString()},"~B");f(e,"getFileState",function(a){var b=new JU.SB;null!=a&&(a.append(" _setFileState;\n"),b.append("function _setFileState() {\n\n"));0>b.indexOf("append")&&this.vwr.getModelSetFileName().equals("zapped")&&b.append(" zap;\n");this.appendLoadStates(b);null!=a&&b.append("\n}\n\n");return b.toString()}, +"JU.SB");f(e,"appendLoadStates",function(a){var b=this.vwr.ligandModelSet;if(null!=b)for(var c,b=b.keySet().iterator();b.hasNext()&&((c=b.next())||1);){var d=this.vwr.ligandModels.get(c+"_data");null!=d&&a.append(" ").append(JU.Escape.encapsulateData("ligand_"+c,d.trim()+"\n",0));d=this.vwr.ligandModels.get(c+"_file");null!=d&&a.append(" ").append(JU.Escape.encapsulateData("file_"+c,d.trim()+"\n",0))}var b=new JU.SB,d=this.vwr.ms,e=d.am,f=d.mc;for(c=0;ck||k!=b.lastIndexOf(h.loadState))&&b.append(e[c].loadState);if(e[c].isModelKit)k=d.getModelAtomBitSetIncludingDeleted(c,!1),null!=d.tainted&&(null!=d.tainted[2]&&d.tainted[2].andNot(k),null!=d.tainted[3]&&d.tainted[3].andNot(k)),h.loadScript=new JU.SB,this.getInlineData(b,this.vwr.getModelExtract(k,!1,!0,"MOL"),0b.indexOf('data "append ')){c=b.indexOf("load /*data*/");h=b.indexOf("load /*file*/");0<=h&&hc)return"";var d=new JU.SB;null!=b&&(b.append(" _setFrameState;\n"),d.append("function _setFrameState() {\n"));d.append("# frame state;\n");d.append("# modelCount ").appendI(c).append(";\n# first ").append(this.vwr.getModelNumberDotted(0)).append(";\n# last ").append(this.vwr.getModelNumberDotted(c-1)).append(";\n");0<=a.backgroundModelIndex&&this.app(d,"set backgroundModel "+this.vwr.getModelNumberDotted(a.backgroundModelIndex)); +if(null!=this.vwr.tm.bsFrameOffsets)this.app(d,"frame align "+JU.Escape.eBS(this.vwr.tm.bsFrameOffsets));else if(null!=this.vwr.ms.translations)for(;0<=--c;){var e=this.vwr.ms.getTranslation(c);null!=e&&this.app(d,"frame "+this.vwr.ms.getModelNumberDotted(c)+" align "+e)}this.app(d,"frame RANGE "+a.getModelSpecial(-1)+" "+a.getModelSpecial(1));this.app(d,"animation DIRECTION "+(1==a.animationDirection?"+1":"-1"));this.app(d,"animation FPS "+a.animationFps);this.app(d,"animation MODE "+JS.T.nameOf(a.animationReplayMode)+ +" "+a.firstFrameDelay+" "+a.lastFrameDelay);0c.length?"left":c));c=JV.JC.getPointerName(a.defaultPointer); +this.app(b,"set labelPointer "+(0==c.length?"off":c));0!=(a.defaultZPos&32)?this.app(b,"set labelFront"):0!=(a.defaultZPos&16)&&this.app(b,"set labelGroup");this.app(b,J.shape.Shape.getFontCommand("label",JU.Font.getFont3D(a.defaultFontId)));return b.toString()},"J.shape.Labels");f(e,"getSelectionState",function(a,b){var c=new JU.SB;null!=b&&(b.append(" _setSelectionState;\n"),c.append("function _setSelectionState() {\n"));null!=this.vwr.ms.trajectory&&this.app(c,this.vwr.ms.trajectory.getState()); +var d=new java.util.Hashtable,e=null;this.addBs(c,"hide ",a.bsHidden);this.addBs(c,"subset ",a.bsSubset);this.addBs(c,"delete ",a.bsDeleted);this.addBs(c,"fix ",a.bsFixed);d.put("-",this.vwr.slm.getSelectedAtomsNoSubset());e=this.getCommands(d,null,"select");null==e?this.app(c,"select none"):c.append(e);this.app(c,"set hideNotSelected "+a.hideNotSelected);c.append(this.vwr.getShapeProperty(1,"selectionState"));this.vwr.getSelectionHalosEnabled()&&this.app(c,"SelectionHalos ON");null!=b&&c.append("}\n\n"); +return c.toString()},"JV.SelectionManager,JU.SB");f(e,"getViewState",function(a,b){var c=new JU.SB,d=a.getMoveToText(0,!1);null!=b&&(b.append(" _setPerspectiveState;\n"),c.append("function _setPerspectiveState() {\n"));this.app(c,"set perspectiveModel "+a.perspectiveModel);this.app(c,"set scaleAngstromsPerInch "+a.scale3DAngstromsPerInch);this.app(c,"set perspectiveDepth "+a.perspectiveDepth);this.app(c,"set visualRange "+a.visualRangeAngstroms);a.isWindowCentered()||this.app(c,"set windowCentered false"); +this.app(c,"set cameraDepth "+a.cameraDepth);var e=1==a.mode;e&&this.app(c,"set navigationMode true");this.app(c,this.vwr.ms.getBoundBoxCommand(!1));this.app(c,"center "+JU.Escape.eP(a.fixedRotationCenter));c.append(this.vwr.getOrientation(1073742034,null,null,null).toString());this.app(c,d);!e&&!a.zoomEnabled&&this.app(c,"zoom off");c.append(" slab ").appendI(a.slabPercentSetting).append(";depth ").appendI(a.depthPercentSetting).append(a.slabEnabled&&!e?";slab on":"").append(";\n");c.append(" set slabRange ").appendF(a.slabRange).append(";\n"); +null!=a.slabPlane&&c.append(" slab plane ").append(JU.Escape.eP4(a.slabPlane)).append(";\n");null!=a.depthPlane&&c.append(" depth plane ").append(JU.Escape.eP4(a.depthPlane)).append(";\n");this.getZshadeState(c,a,!1);c.append(this.getSpinState(!0)).append("\n");this.vwr.ms.modelSetHasVibrationVectors()&&a.vibrationOn&&this.app(c,"set vibrationPeriod "+a.vibrationPeriod+";vibration on");d=null!=a.depthPlane||null!=a.slabPlane;e&&c.append(a.getNavigationState());!a.slabEnabled&&d&&c.append(" slab off;\n"); +null!=b&&c.append("}\n\n");return c.toString()},"JV.TransformManager,JU.SB");f(e,"getZshadeState",function(a,b,c){c&&(this.app(a,"set zDepth "+b.zDepthPercentSetting),this.app(a,"set zSlab "+b.zSlabPercentSetting),b.zShadeEnabled||this.app(a,"set zShade false"));b.zShadeEnabled&&this.app(a,"set zShade true");try{null!=b.zSlabPoint&&this.app(a,"set zSlab "+JU.Escape.eP(b.zSlabPoint))}catch(d){if(!D(d,Exception))throw d;}},"JU.SB,JV.TransformManager,~B");s(e,"getSpinState",function(){var a=this.vwr.tm, +b=" set spinX "+H(a.spinX)+"; set spinY "+H(a.spinY)+"; set spinZ "+H(a.spinZ)+"; set spinFps "+H(a.spinFps)+";";Float.isNaN(a.navFps)||(b+=" set navX "+H(a.navX)+"; set navY "+H(a.navY)+"; set navZ "+H(a.navZ)+"; set navFps "+H(a.navFps)+";");a.navOn&&(b+=" navigation on;");if(!a.spinOn)return b;var c=a.isSpinSelected?"\n select "+JU.Escape.eBS(this.vwr.bsA())+";\n rotateSelected":"\n ";if(a.isSpinInternal){var d=JU.P3.newP(a.internalRotationCenter);d.sub(a.rotationAxis);b+=c+" spin "+a.rotationRate+ +" "+JU.Escape.eP(a.internalRotationCenter)+" "+JU.Escape.eP(d)}else b=a.isSpinFixed?b+(c+" spin axisangle "+JU.Escape.eP(a.rotationAxis)+" "+a.rotationRate):b+" spin on";return b+";"},"~B");s(e,"getCommands",function(a,b,c){var d=new JU.SB;a=this.getCommands2(a,d,null,c);null!=b&&this.getCommands2(b,d,a,"select");return d.toString()},"java.util.Map,java.util.Map,~S");f(e,"getCommands2",function(a,b,c,d){if(null==a)return"";var e;for(a=a.entrySet().iterator();a.hasNext()&&((e=a.next())||1);){var f= +e.getKey(),h=JU.Escape.eBS(e.getValue());5>h.length||(h=d+" "+h,h.equals(c)||this.app(b,h),c=h,0!=f.indexOf("-")&&this.app(b,f))}return c},"java.util.Map,JU.SB,~S,~S");f(e,"app",function(a,b){0!=b.length&&a.append(" ").append(b).append(";\n")},"JU.SB,~S");f(e,"addBs",function(a,b,c){null==c||0==c.length()||this.app(a,b+JU.Escape.eBS(c))},"JU.SB,~S,JU.BS");f(e,"getFontState",function(a,b){var c=JV.StateManager.getObjectIdFromName(a.equalsIgnoreCase("axes")?"axis":a);if(0>c)return"";var d=this.vwr.getObjectMad10(c), +c=(new JU.SB).append("\n");this.app(c,a+(0==d?" off":1==d?" on":-1==d?" dotted":20>d?" "+d:" "+d/2E4));if(3>c.length())return"";d=J.shape.Shape.getFontCommand(a,b);0c))f=this.getShapeState(f),null!=f&&1b){c=a.offsets[b];JU.BSUtil.setMapBitSet(this.temp2,b,b,"set "+(JV.JC.isOffsetAbsolute(c)?"labelOffsetAbsolute ":"labelOffset ")+JV.JC.getXOffset(c)+ +" "+JV.JC.getYOffset(c));var d=JV.JC.getHorizAlignmentName(c>>2),e=JV.JC.getPointerName(c);0a.mads[b]&&JU.BSUtil.setMapBitSet(this.temp2,b,b,"set toggleLabel");null!=a.bsFontSet&&a.bsFontSet.get(b)&&JU.BSUtil.setMapBitSet(this.temp2, +b,b,J.shape.Shape.getFontCommand("label",JU.Font.getFont3D(a.fids[b])))}b=this.getCommands(this.temp,this.temp2,"select")+this.getCommands(null,this.temp3,"select");this.temp3.clear();this.clearTemp();break;case 0:this.clearTemp();var c=this.vwr.ms.ac,d=this.vwr.ms.at,e=a.colixes,f=a.paletteIDs,h=0;for(b=0;b(h=d[b].madAtom)?JU.BSUtil.setMapBitSet(this.temp,b,b,"Spacefill on"):JU.BSUtil.setMapBitSet(this.temp,b,b,"Spacefill "+JU.PT.escF(h/ +2E3))),null!=a.bsColixSet&&a.bsColixSet.get(b))){var k=d[b].paletteID;(k!=J.c.PAL.CPK.id||JU.C.isColixTranslucent(d[b].colixAtom))&&JU.BSUtil.setMapBitSet(this.temp,b,b,J.shape.Shape.getColorCommand("atoms",k,d[b].colixAtom,a.translucentAllowed));null!=e&&bb;b++)null!=a.tickInfos[b]&&this.appendTickInfo(a.myType,d,a.tickInfos[b]);c&&d.append(" "+a.myType+" off;\n");return d.toString()},"J.shape.FontLineShape");f(e,"getAxesState",function(a){var b=new JU.SB;b.append(this.getFontLineShapeState(a));return a.getAxesState(b)},"J.shape.Axes");s(e,"getAtomShapeState",function(a){if(!a.isActive)return""; +this.clearTemp();var b=JV.JC.shapeClassBases[a.shapeID],c=18==a.shapeID,d;if(null!=a.bsSizeSet)for(var e=a.bsSizeSet.nextSetBit(0);0<=e;e=a.bsSizeSet.nextSetBit(e+1))JU.BSUtil.setMapBitSet(this.temp,e,e,b+" "+(0>(d=a.mads[e])?c&&-1>d?""+-d:"on":JU.PT.escF(d/2E3)));if(null!=a.bsColixSet)for(e=a.bsColixSet.nextSetBit(0);0<=e;e=a.bsColixSet.nextSetBit(e+1))JU.BSUtil.setMapBitSet(this.temp2,e,e,J.shape.Shape.getColorCommand(b,a.paletteIDs[e],a.colixes[e],a.translucentAllowed));a=this.getCommands(this.temp, +this.temp2,"select");this.clearTemp();return a},"J.shape.AtomShape");f(e,"getEchoState",function(a,b){var c=null!=b&&0b)return a;for(var c=new JU.SB,d=0,e=72;ee;e++)if(0>a||e==a)null!= +(c=null!=b?b:this.vwr.ms.getTaintedAtoms(e))&&this.getAtomicPropertyStateBuffer(d,e,c,null,null);return d.toString()},"~N,JU.BS");s(e,"getAtomicPropertyStateBuffer",function(a,b,c,d,e){if(this.vwr.g.preserveState){var f=new JU.SB;d=(null==d?JM.AtomCollection.userSettableValues[b]:d)+" set";var h=0,k=2==b,l=this.vwr.ms.at,r=this.vwr.ms.tainted;if(null!=c)for(var m=c.nextSetBit(0);0<=m;m=c.nextSetBit(m+1))if(!JM.AtomCollection.isDeleted(l[m])){f.appendI(m+1).append(" ").append(l[m].getElementSymbol()).append(" ").append(l[m].getInfo().$replace(" ", +"_")).append(" ");switch(b){case 18:me.indexOf("zap ")?(JU.Logger.debugging&&this.vwr.log(e), +this.vwr.evalStringQuiet(e)):this.actionStates.clear();break;default:if(this.undoWorking&&c)return;this.undoWorking=!0;e=new JU.SB;e.append("#"+b+" "+a+" "+new java.util.Date+"\n");0<=a?(d=this.vwr.getModelUndeletedAtomsBitSet(d),this.vwr.ms.taintAtoms(d,b),e.append(this.getAtomicPropertyState(-1,null))):(d=this.vwr.getModelUndeletedAtomsBitSet(d),e.append("zap "),e.append(JU.Escape.eBS(d)).append(";"),this.getInlineData(e,this.vwr.getModelExtract(d,!1,!0,"MOL"),!0,null,null),e.append("set refreshing false;").append(this.vwr.acm.getPickingState()).append(this.vwr.tm.getMoveToText(0, +!1)).append("set refreshing true;"));c?(this.actionStates.add(0,e.toString()),this.actionStatesRedo.clear()):this.actionStatesRedo.add(1,e.toString());100==this.actionStates.size()&&this.actionStates.removeItemAt(99)}this.undoWorking=!c}},"~N,~N,~B")});K("JV");$(JV,"JmolStateCreator",null)})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt, +Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corescriptcmd.js b/config/plugins/visualizations/jmol/static/j2s/core/corescriptcmd.js new file mode 100755 index 000000000000..1c08b5a70c15 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corescriptcmd.js @@ -0,0 +1,5264 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ScriptExt", ["JU.AU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.e = null; +this.chk = false; +this.st = null; +this.slen = 0; +Clazz_instantialize(this, arguments);}, JS, "ScriptExt", null); +Clazz_defineMethod(c$, "init", +function(eval){ +this.e = eval; +this.vwr = this.e.vwr; +return this; +}, "~O"); +Clazz_defineMethod(c$, "atomExpressionAt", +function(i){ +return this.e.atomExpressionAt(i); +}, "~N"); +Clazz_defineMethod(c$, "checkLength", +function(i){ +this.e.checkLength(i); +}, "~N"); +Clazz_defineMethod(c$, "error", +function(err){ +this.e.error(err); +}, "~N"); +Clazz_defineMethod(c$, "invArg", +function(){ +this.e.invArg(); +}); +Clazz_defineMethod(c$, "invPO", +function(){ +this.error(23); +}); +Clazz_defineMethod(c$, "getShapeProperty", +function(shapeType, propertyName){ +return this.e.getShapeProperty(shapeType, propertyName); +}, "~N,~S"); +Clazz_defineMethod(c$, "paramAsStr", +function(i){ +return this.e.paramAsStr(i); +}, "~N"); +Clazz_defineMethod(c$, "centerParameter", +function(i){ +return this.e.centerParameter(i, null); +}, "~N"); +Clazz_defineMethod(c$, "floatParameter", +function(i){ +return this.e.floatParameter(i); +}, "~N"); +Clazz_defineMethod(c$, "getPoint3f", +function(i, allowFractional){ +return this.e.getPoint3f(i, allowFractional, true); +}, "~N,~B"); +Clazz_defineMethod(c$, "intParameter", +function(index){ +return this.e.intParameter(index); +}, "~N"); +Clazz_defineMethod(c$, "isFloatParameter", +function(index){ +switch (this.e.tokAt(index)) { +case 2: +case 3: +return true; +} +return false; +}, "~N"); +Clazz_defineMethod(c$, "setShapeProperty", +function(shapeType, propertyName, propertyValue){ +this.e.setShapeProperty(shapeType, propertyName, propertyValue); +}, "~N,~S,~O"); +Clazz_defineMethod(c$, "showString", +function(s){ +this.e.showString(s); +}, "~S"); +Clazz_defineMethod(c$, "stringParameter", +function(index){ +return this.e.stringParameter(index); +}, "~N"); +Clazz_defineMethod(c$, "getToken", +function(i){ +return this.e.getToken(i); +}, "~N"); +Clazz_defineMethod(c$, "tokAt", +function(i){ +return this.e.tokAt(i); +}, "~N"); +Clazz_defineMethod(c$, "setShapeId", +function(iShape, i, idSeen){ +if (idSeen) this.invArg(); +var name = this.e.setShapeNameParameter(i).toLowerCase(); +this.setShapeProperty(iShape, "thisID", name); +return name; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "getColorTrans", +function(eval, i, allowNone, ret){ +var translucentLevel = 3.4028235E38; +if (eval.theTok != 1765808134) --i; +switch (this.tokAt(i + 1)) { +case 603979967: +i++; +translucentLevel = (this.isFloatParameter(i + 1) ? eval.getTranslucentLevel(++i) : this.vwr.getFloat(570425353)); +break; +case 1073742074: +i++; +translucentLevel = 0; +break; +} +if (eval.isColorParam(i + 1)) { +ret[0] = eval.getArgbParam(++i); +} else if (this.tokAt(i + 1) == 1073742333) { +ret[0] = 0; +eval.iToken = i + 1; +} else if (translucentLevel == 3.4028235E38) { +this.invArg(); +} else { +ret[0] = -2147483648; +}i = eval.iToken; +return translucentLevel; +}, "JS.ScriptEval,~N,~B,~A"); +Clazz_defineMethod(c$, "finalizeObject", +function(shapeID, colorArgb, translucentLevel, intScale, doSet, data, iptDisplayProperty, bs){ +if (doSet) { +this.setShapeProperty(shapeID, "set", data); +}if (colorArgb != -2147483648) this.e.setShapePropertyBs(shapeID, "color", Integer.$valueOf(colorArgb), bs); +if (translucentLevel != 3.4028235E38) this.e.setShapeTranslucency(shapeID, "", "translucent", translucentLevel, bs); +if (intScale != 0) { +this.setShapeProperty(shapeID, "scale", Integer.$valueOf(intScale)); +}if (iptDisplayProperty < 0) { +iptDisplayProperty = -1 - iptDisplayProperty; +this.setShapeProperty(shapeID, "token", Integer.$valueOf(1073742018)); +this.setShapeProperty(shapeID, "token", Integer.$valueOf(1073742046)); +}if (iptDisplayProperty > 0) { +if (!this.e.setMeshDisplayProperty(shapeID, iptDisplayProperty, 0)) this.invArg(); +}}, "~N,~N,~N,~N,~B,~O,~N,JU.BS"); +Clazz_defineMethod(c$, "getIntArray2", +function(i){ +var list = (this.e.getToken(i)).getList(); +var faces = JU.AU.newInt2(list.size()); +for (var vi = faces.length; --vi >= 0; ) { +var face = list.get(vi).getList(); +if (face == null) this.invArg(); +faces[vi] = Clazz_newIntArray (face.size(), 0); +for (var vii = faces[vi].length; --vii >= 0; ) faces[vi][vii] = face.get(vii).intValue; + +} +return faces; +}, "~N"); +Clazz_defineMethod(c$, "getAllPoints", +function(index, nmin){ +var points = null; +var bs = null; +try { +switch (this.e.tokAt(index)) { +case 7: +points = this.e.getPointArray(index, -1, false); +break; +case 12290: +case 10: +case 1073742325: +bs = this.atomExpressionAt(index); +break; +} +if (points == null) { +if (bs == null) bs = this.vwr.getAllAtoms(); +points = this.bsToArray(bs); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (points == null || points.length < nmin) this.invArg(); +return points; +}, "~N,~N"); +Clazz_defineMethod(c$, "bsToArray", +function(bs){ +var p = new Array(bs.cardinality()); +for (var i = bs.nextSetBit(0), pt = 0; i >= 0; i = bs.nextSetBit(i + 1)) p[pt++] = this.vwr.ms.at[i]; + +return p; +}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.ScriptExt"], "JS.CmdExt", ["java.util.Hashtable", "JU.AU", "$.BS", "$.Base64", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P3", "$.P4", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.c.STER", "$.VDW", "J.i18n.GT", "JM.AtomCollection", "$.LabelToken", "$.Measurement", "$.Text", "JS.SV", "$.ScriptCompiler", "$.ScriptError", "$.ScriptEval", "$.ScriptInterruption", "$.ScriptMathProcessor", "$.T", "JU.BSUtil", "$.BoxInfo", "$.C", "$.Edge", "$.Elements", "$.Escape", "$.Logger", "$.Parser", "$.Point3fi", "$.SimpleUnitCell", "JV.FileManager", "$.JC", "$.StateManager", "$.Viewer"], function(){ +var c$ = Clazz_declareType(JS, "CmdExt", JS.ScriptExt); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JS.CmdExt, []); +}); +Clazz_overrideMethod(c$, "dispatch", +function(iTok, flag, st){ +this.chk = this.e.chk; +this.slen = this.e.slen; +this.st = st; +switch (iTok) { +case 1073741866: +st[0].value = this.prepareBinaryOutput(st[0]); +return null; +case 4098: +this.assign(false); +break; +case 134221829: +this.cache(); +break; +case 4102: +this.calculate(); +break; +case 4103: +this.capture(); +break; +case 4105: +this.centerAt(); +break; +case 134221831: +this.compare(); +break; +case 528395: +this.console(); +break; +case 4106: +this.connect(1); +break; +case 1094717448: +this.configuration(); +break; +case 134221834: +this.data(); +break; +case 1613238294: +this.connect(0); +break; +case 4120: +this.image(); +break; +case 4122: +this.invertSelected(); +break; +case 4124: +this.macro(); +break; +case 4125: +this.mapProperty(); +break; +case 4126: +this.minimize(false); +break; +case 603983903: +this.modelkit(); +break; +case 1275072532: +this.modulation(); +break; +case 4130: +this.mutate(); +break; +case 4131: +this.navigate(); +break; +case 4133: +case 134221850: +case 4138: +this.plot(st); +break; +case 134222350: +this.show(); +break; +case 528443: +this.stereo(); +break; +case 1814695966: +this.unitcell(flag ? 2 : 1, false); +break; +case 134221856: +return this.write(flag ? st : null); +case 6: +this.measure(); +break; +case 21: +this.polyhedra(); +break; +case 20: +this.ellipsoid(); +break; +case 4: +this.struts(); +break; +} +return null; +}, "~N,~B,~A"); +Clazz_defineMethod(c$, "macro", +function(){ +if (this.chk) return; +var key = this.e.optParameterAsString(1); +if (key.length == 0) { +this.showString(this.vwr.getMacro(null)); +return; +}var macro = this.vwr.getMacro(key); +if (macro == null) { +this.showString("macro " + key + " could not be found. Current macros include:\n" + this.vwr.getMacro(null)); +return; +}this.showString("running " + macro); +this.e.cmdScript(4124, macro, null, null); +}); +Clazz_defineMethod(c$, "evalParallel", +function(context, shapeManager){ +this.chk = this.e.chk; +this.slen = this.e.slen; +var se = new JS.ScriptEval().setViewer(this.vwr); +se.historyDisabled = true; +se.compiler = new JS.ScriptCompiler(this.vwr); +se.sm = shapeManager; +try { +se.restoreScriptContext(context, true, false, false); +se.setAllowJSThreads(false); +se.dispatchCommands(false, false, false); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.vwr.setStringProperty("_errormessage", "" + ex); +if (se.thisContext == null) { +JU.Logger.error("Error evaluating context " + ex); +ex.printStackTrace(); +}return false; +} else { +throw ex; +} +} +return true; +}, "JS.ScriptContext,JV.ShapeManager"); +Clazz_defineMethod(c$, "getBitsetIdent", +function(bs, label, tokenValue, useAtomMap, index, isExplicitlyAll){ +return this.getBitsetIdentFull(bs, label, useAtomMap, index, isExplicitlyAll, null); +}, "JU.BS,~S,~O,~B,~N,~B"); +Clazz_defineMethod(c$, "getBitsetIdentFull", +function(bs, label, useAtomMap, index, isExplicitlyAll, sout){ +var isAtoms = !(Clazz_instanceOf(bs,"JM.BondSet")); +if (isAtoms) { +if (label == null) label = this.vwr.getStandardLabelFormat(0); + else if (label.length == 0) label = "%[label]"; +} else { +if (label != null && label.length == 0) { +label = "[%a1 #%i1] %4.3LENGTH [%a2 #%i2] #%#"; +} else if ("%U".equals(label)) { +label = ""; +}}var pt = (label == null ? -1 : label.indexOf("%")); +var haveIndex = (index != 2147483647); +if (bs == null || this.chk || isAtoms && pt < 0) { +if (label == null) label = ""; +return isExplicitlyAll ? Clazz_newArray(-1, [label]) : label; +}var modelSet = this.vwr.ms; +var n = 0; +if (JS.CmdExt.labeler == null) JS.CmdExt.labeler = modelSet.getLabeler(); +var indices = (isAtoms || !useAtomMap ? null : (bs).getAssociatedAtoms(modelSet)); +var asIdentity = (label == null || label.length == 0); +var htValues = (isAtoms || asIdentity ? null : JS.CmdExt.labeler.getBondLabelValues()); +var tokens = (asIdentity ? null : isAtoms ? JS.CmdExt.labeler.compile(this.vwr, label, '\0', null) : JS.CmdExt.labeler.compile(this.vwr, label, '\1', htValues)); +var nmax = (haveIndex ? 1 : bs.cardinality()); +var haveSout = (sout != null); +if (!haveSout) sout = new Array(nmax); +var ptTemp = new JU.P3(); +for (var j = (haveIndex ? index : bs.nextSetBit(0)); j >= 0; j = bs.nextSetBit(j + 1)) { +var str; +if (isAtoms) { +str = (asIdentity ? modelSet.at[j].getInfo() : JS.CmdExt.labeler.formatLabelAtomArray(this.vwr, modelSet.at[j], tokens, '\0', indices, ptTemp)); +} else { +var bond = modelSet.bo[j]; +str = (asIdentity ? bond.getIdentity() : JS.CmdExt.labeler.formatLabelBond(this.vwr, bond, tokens, htValues, indices, ptTemp)); +}str = JU.PT.formatStringI(str, "#", (n + 1)); +sout[haveSout ? j : n] = str; +n++; +if (haveIndex) break; +} +return nmax == 1 && !isExplicitlyAll ? sout[0] : sout; +}, "JU.BS,~S,~B,~N,~B,~A"); +Clazz_defineMethod(c$, "getLoadSymmetryParams", +function(i, sOptions, htParams){ +var eval = this.e; +this.chk = eval.chk; +this.slen = eval.slen; +var isEmptyLoad = false; +var lattice = null; +var tok = this.tokAt(i); +if (tok == 1073742332 || tok == 8) { +lattice = eval.getFractionalPoint(i); +tok = this.tokAt(i = eval.iToken + 1); +}switch (tok) { +case 134217764: +isEmptyLoad = (htParams.get("isEmptyLoad") === Boolean.TRUE); +case 1073741938: +case 1073742080: +case 1094713350: +case 1073742163: +case 1073742114: +case 1814695966: +if (lattice == null) lattice = JU.P3.new3(555, 555, -1); +eval.iToken = i - 1; +break; +} +var offset = null; +if (lattice != null) { +htParams.put("lattice", lattice); +i = eval.iToken + 1; +sOptions.append(" " + JU.SimpleUnitCell.escapeMultiplier(lattice)); +i = this.checkPacked(i, 0, htParams, sOptions); +if (this.tokAt(i) == 1094713350) { +htParams.put("centroid", Boolean.TRUE); +sOptions.append(" CENTROID"); +var ptok = 0; +if (this.isFloatParameter(i + 1)) { +--i; +ptok = 1073742080; +}i = this.checkPacked(++i, ptok, htParams, sOptions); +}if (this.tokAt(i) == 1073742163) { +var supercell; +sOptions.append(" SUPERCELL "); +if (eval.isPoint3f(++i)) { +var pt = this.getPoint3f(i, false); +if (pt.x != Clazz_floatToInt(pt.x) || pt.y != Clazz_floatToInt(pt.y) || pt.z != Clazz_floatToInt(pt.z) || pt.x < 1 || pt.y < 1 || pt.z < 1) { +eval.iToken = i; +this.invArg(); +}supercell = pt; +i = eval.iToken; +} else { +supercell = this.stringParameter(i); +}sOptions.append(JU.Escape.e(supercell)); +htParams.put("supercell", supercell); +i = this.checkPacked(++i, 0, htParams, sOptions); +}var distance = 0; +if (this.tokAt(i) == 1073742114) { +i++; +distance = this.floatParameter(i++); +sOptions.append(" range " + distance); +}htParams.put("symmetryRange", Float.$valueOf(distance)); +var spacegroup = null; +var sg; +var iGroup = -2147483648; +if (this.tokAt(i) == 134217764) { +++i; +spacegroup = JU.PT.rep(this.paramAsStr(i++), "''", "\""); +sOptions.append(" spacegroup " + JU.PT.esc(spacegroup)); +if (spacegroup.equalsIgnoreCase("ignoreOperators")) { +iGroup = -999; +} else { +if (spacegroup.length == 0) { +sg = this.vwr.getCurrentUnitCell(); +if (sg != null) spacegroup = sg.getSpaceGroupName(); +} else { +if (spacegroup.indexOf(",") >= 0) if ((lattice.x < 9 && lattice.y < 9 && lattice.z == 0)) spacegroup += "#doNormalize=0"; +}htParams.put("spaceGroupName", spacegroup); +iGroup = -2; +}}var fparams = null; +if (this.tokAt(i) == 1814695966) { +++i; +var s = eval.optParameterAsString(i); +if (s.length == 0) { +sg = this.vwr.getCurrentUnitCell(); +if (sg != null) { +fparams = sg.getUnitCellAsArray(true); +offset = sg.getCartesianOffset(); +}} else { +if (this.tokAt(i) == 4) { +fparams = Clazz_newFloatArray (6, 0); +JU.SimpleUnitCell.setAbc(s, fparams, null); +} else { +fparams = eval.floatParameterSet(i, 6, 9); +}}if (fparams == null || fparams.length != 6 && fparams.length != 9) this.invArg(); +sOptions.append(" unitcell ["); +for (var j = 0; j < fparams.length; j++) sOptions.append((j == 0 ? "" : " ") + fparams[j]); + +sOptions.append("]"); +htParams.put("unitcell", fparams); +if (iGroup == -2147483648) iGroup = -1; +i = eval.iToken + 1; +}if (iGroup != -2147483648) htParams.put("spaceGroupIndex", Integer.$valueOf(iGroup)); +if (isEmptyLoad && fparams == null && spacegroup != null && (iGroup = JU.PT.parseInt(spacegroup)) != -2147483648) { +}}var areFractional = false; +if (offset == null && this.tokAt(i) == 1073742066) { +offset = this.getPoint3f(++i, true); +areFractional = eval.coordinatesAreFractional; +}if (offset != null) { +if (areFractional) { +offset.setT(eval.fractionalPoint); +htParams.put("unitCellOffsetFractional", (areFractional ? Boolean.TRUE : Boolean.FALSE)); +sOptions.append(" offset {" + offset.x + " " + offset.y + " " + offset.z + "/1}"); +} else { +sOptions.append(" offset " + JU.Escape.eP(offset)); +}htParams.put("unitCellOffset", offset); +i = eval.iToken + 1; +}return i; +}, "~N,JU.SB,java.util.Map"); +Clazz_defineMethod(c$, "checkPacked", +function(i, tok, htParams, sOptions){ +if (tok == 0) tok = this.tokAt(i); +switch (tok) { +case 1073741938: +htParams.put("packed", Boolean.TRUE); +var oabc = null; +tok = this.tokAt(++i); +switch (tok) { +case 1812599299: +case 1814695966: +case 4: +break; +default: +if (this.e.isArrayParameter(i)) { +oabc = this.e.getPointArray(i, -1, false); +i = this.e.iToken; +} else if (this.isFloatParameter(i)) { +var d = this.floatParameter(i); +oabc = Clazz_newArray(-1, [ new JU.P3(), JU.P3.new3(d, d, d)]); +} else { +oabc = new Array(0); +--i; +}} +i++; +if (this.e.chk) return i; +switch (tok) { +case 4: +i--; +case 1814695966: +var type = this.e.optParameterAsString(i++).toLowerCase(); +if (JU.PT.isOneOf(type, ";conventional;primitive;rhombohedral;trigonal;") || type.indexOf(",") >= 0 && (type.indexOf("a") >= 0 && type.indexOf("b") >= 0 && type.indexOf("c") >= 0)) { +htParams.put("fillRange", type); +sOptions.append(" FILL UNITCELL \"" + type + "\""); +return i; +}var unitCell = this.vwr.getCurrentUnitCell(); +if (unitCell != null) { +oabc = JU.BoxInfo.toOABC(unitCell.getUnitCellVerticesNoOffset(), unitCell.getCartesianOffset()); +break; +}case 1812599299: +oabc = JU.BoxInfo.toOABC(this.vwr.ms.getBBoxVertices(), null); +break; +} +switch (oabc.length) { +case 2: +var a = oabc[1]; +oabc = Clazz_newArray(-1, [oabc[0], JU.P3.newP(oabc[0]), new JU.P3(), new JU.P3()]); +oabc[1].x = a.x; +oabc[2].y = a.y; +oabc[3].z = a.z; +break; +case 3: +oabc = Clazz_newArray(-1, [ new JU.P3(), oabc[0], oabc[1], oabc[2]]); +break; +case 4: +break; +default: +oabc = Clazz_newArray(-1, [ new JU.P3(), JU.P3.new3(10, 0, 0), JU.P3.new3(0, 10, 0), JU.P3.new3(0, 0, 10)]); +} +htParams.put("fillRange", oabc); +sOptions.append(" FILL [" + oabc[0] + oabc[1] + oabc[2] + oabc[3] + "]"); +break; +case 1073742080: +var f = NaN; +if (this.isFloatParameter(++i)) f = this.floatParameter(i++); +if (!this.e.chk) { +htParams.put("packed", Boolean.TRUE); +sOptions.append(" PACKED"); +if (!Float.isNaN(f)) { +htParams.put("packingRange", Float.$valueOf(f)); +sOptions.append(" " + f); +}}break; +} +return i; +}, "~N,~N,java.util.Map,JU.SB"); +Clazz_defineMethod(c$, "cache", +function(){ +var tok = this.tokAt(1); +var fileName = null; +var n = 2; +switch (tok) { +case 1275069441: +case 1073742119: +fileName = this.e.optParameterAsString(n++); +case 1073741882: +this.checkLength(n); +if (!this.chk) { +if ("all".equals(fileName)) fileName = null; +var nBytes = this.vwr.cacheFileByName(fileName, tok == 1275069441); +this.showString(nBytes < 0 ? "cache cleared" : nBytes + " bytes " + (tok == 1275069441 ? " cached" : " removed")); +}break; +default: +this.invArg(); +} +}); +Clazz_defineMethod(c$, "calculate", +function(){ +var isSurface = false; +var asDSSP = false; +var bs1 = null; +var bs2 = null; +var e = this.e; +var n = -2147483648; +var version = -1; +if ((e.iToken = e.slen) >= 2) { +e.clearDefinedVariableAtomSets(); +switch (this.getToken(1).tok) { +case 2: +if (this.intParameter(1) != 3 || !this.paramAsStr(2).equalsIgnoreCase("D")) { +break; +}if (this.vwr.am.cmi < 0) e.errorStr(30, "calculate 3D"); +var cmd = "load append $ filter '2D';select visible;center selected"; +if (e.optParameterAsString(3).equalsIgnoreCase("ZAP")) { +cmd += ";zap modelIndex=" + Math.max(this.vwr.am.cmi, 0); +}if (!this.chk) e.runScript(cmd); +return; +case 1073741824: +this.checkLength(2); +break; +case 134217764: +e.iToken = 1; +bs1 = (this.slen == 2 ? null : this.atomExpressionAt(2)); +e.checkLast(e.iToken); +if (!this.chk) e.showString("" + this.vwr.findSpaceGroup(null, bs1, null, null, null, null, 1)); +return; +case 1086324752: +e.iToken = 1; +bs1 = (this.slen == 2 ? null : this.atomExpressionAt(2)); +e.checkLast(e.iToken); +if (!this.chk) e.showString(this.vwr.calculateChirality(bs1)); +return; +case 1631586315: +this.checkLength(2); +if (this.chk) return; +n = this.vwr.calculateFormalCharges(null); +this.showString(J.i18n.GT.i(J.i18n.GT.$("{0} charges modified"), n)); +return; +case 1075838996: +this.checkLength(2); +if (!this.chk) this.vwr.ms.assignAromaticBondsBs(true, null); +return; +case 1613238294: +if (e.slen != 2) { +asDSSP = (this.tokAt(++e.iToken) == 1639976963); +if (asDSSP) bs1 = this.vwr.bsA(); + else bs1 = this.atomExpressionAt(e.iToken); +if (!asDSSP && !(asDSSP = (this.tokAt(++e.iToken) == 1639976963))) bs2 = this.atomExpressionAt(e.iToken); +}if (this.chk) return; +n = this.vwr.autoHbond(bs1, bs2, false); +if (n != -2147483648) e.report(J.i18n.GT.i(J.i18n.GT.$("{0} hydrogen bonds"), Math.abs(n)), false); +return; +case 1612709900: +var itok = this.tokAt(2); +var andBond = (itok == 1073742335); +if (andBond) { +e.iToken++; +} else if (itok == 528443) { +e.iToken++; +}bs1 = (this.slen == e.iToken + 1 ? null : this.atomExpressionAt(e.iToken + 1)); +if (bs1 == null && itok == 528443) { +bs1 = this.vwr.getAtomBitSet("_C & connected(3) & !connected(double)"); +}e.checkLast(e.iToken); +if (!this.chk) { +this.vwr.addHydrogens(bs1, 0); +if (andBond) { +if (bs1 == null) bs1 = this.vwr.bsA(); +this.vwr.makeConnections(0.1, 1e8, 515, 1073742025, bs1, bs1, null, false, false, 0); +this.vwr.ms.assignAromaticBondsBs(true, null); +}}return; +case 1111492619: +e.iToken = 1; +bs1 = (this.slen == 2 ? null : this.atomExpressionAt(2)); +e.checkLast(e.iToken); +if (!this.chk) e.getPartialCharges(bs1); +return; +case 1088421903: +case 1275068447: +if (!this.chk) { +if (this.tokAt(2) == 1275203608) { +var id = (this.tokAt(3) == 4 ? this.stringParameter(3) : null); +bs1 = (id != null || this.slen == 3 ? null : this.atomExpressionAt(3)); +var data = Clazz_newArray(-1, [id, null, bs1]); +this.showString(e.getShapePropertyData(21, "symmetry", data) ? data[1] : ""); +} else { +bs1 = (this.slen == 2 ? this.vwr.bsA() : this.atomExpressionAt(2)); +this.showString(this.vwr.ms.calculatePointGroup(bs1)); +}}return; +case 1111490574: +this.checkLength(2); +if (!this.chk) { +this.vwr.calculateStraightness(); +this.vwr.addStateScript("set quaternionFrame '" + this.vwr.getQuaternionFrame() + "'; calculate straightness", false, true); +}return; +case 1639976963: +bs1 = (this.slen < 4 || this.isFloatParameter(3) ? null : this.atomExpressionAt(2)); +switch (this.tokAt(++e.iToken)) { +case 4138: +break; +case 1111490587: +if (this.chk) return; +e.showString(this.vwr.getAnnotationParser(true).calculateDSSRStructure(this.vwr, bs1)); +return; +case 1073741915: +asDSSP = true; +version = (this.slen == e.iToken + 1 ? -1 : Clazz_floatToInt(this.floatParameter(++e.iToken))); +break; +case 0: +asDSSP = this.vwr.getBoolean(603979826); +break; +default: +this.invArg(); +} +if (!this.chk) this.showString(this.vwr.calculateStructures(bs1, asDSSP, true, version)); +return; +case 659482: +bs1 = (e.iToken + 1 < this.slen ? this.atomExpressionAt(++e.iToken) : null); +bs2 = (e.iToken + 1 < this.slen ? this.atomExpressionAt(++e.iToken) : null); +this.checkLength(++e.iToken); +if (!this.chk) { +n = this.vwr.calculateStruts(bs1, bs2); +if (n > 0) { +this.setShapeProperty(1, "type", Integer.$valueOf(32768)); +e.setShapePropertyBs(1, "color", Integer.$valueOf(0x0FFFFFF), null); +e.setShapeTranslucency(1, "", "translucent", 0.5, null); +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +}this.showString(J.i18n.GT.i(J.i18n.GT.$("{0} struts added"), n)); +}return; +case 2097180: +isSurface = true; +case 1111490575: +var isFrom = false; +switch (this.tokAt(2)) { +case 134217759: +e.iToken++; +break; +case 0: +isFrom = !isSurface; +break; +case 1073741952: +isFrom = true; +e.iToken++; +break; +default: +isFrom = true; +} +bs1 = (e.iToken + 1 < this.slen ? this.atomExpressionAt(++e.iToken) : this.vwr.bsA()); +this.checkLength(++e.iToken); +if (!this.chk) this.vwr.calculateSurface(bs1, (isFrom ? 3.4028235E38 : -1)); +return; +} +}e.errorStr2(53, "CALCULATE", "3D? aromatic? hbonds? hydrogen? formalCharge? partialCharge? pointgroup? straightness? structure? struts? surfaceDistance FROM? surfaceDistance WITHIN?"); +}); +Clazz_defineMethod(c$, "capture", +function(){ +if (!this.chk && !this.vwr.allowCapture()) { +this.showString("Cannot capture on this platform"); +return; +}var params = this.vwr.captureParams; +var type = (params == null ? "GIF" : params.get("type")); +var endTime = 0; +var mode = 0; +var slen = this.e.slen; +var fileName = ""; +var looping = (this.vwr.am.animationReplayMode != 1073742070); +var i = 1; +var tok = this.tokAt(i); +var isTransparent = (tok == 603979967); +if (isTransparent) tok = this.tokAt(++i); +var s = null; +switch (tok == 0 ? (tok = 102409) : tok) { +case 4: +fileName = this.e.optParameterAsString(i++); +if (fileName.length == 0) { +mode = 102409; +break; +}var lc = fileName.toLowerCase(); +if (lc.endsWith(".gift") || lc.endsWith(".pngt")) { +isTransparent = true; +fileName = fileName.substring(0, fileName.length - 1); +lc = fileName.toLowerCase(); +} else if (!lc.endsWith(".gif") && !lc.contains(".png")) { +fileName += ".gif"; +}if (lc.endsWith(".png")) { +if (!lc.endsWith("0.png")) fileName = fileName.substring(0, fileName.length - 4) + "0000.png"; +type = "PNG"; +} else { +type = "GIF"; +}if (isTransparent) type += "T"; +var pt = fileName.indexOf("0000."); +var streaming = (pt < 0 || pt != fileName.lastIndexOf(".") - 4); +var isRock = false; +if (this.tokAt(i) == 528411) { +looping = true; +tok = this.tokAt(++i); +}switch (this.tokAt(i)) { +case 134222850: +s = this.stringParameter(++i); +break; +case 1073742129: +isRock = true; +case 1611141175: +var axis = "y"; +looping = true; +i++; +if (isRock) { +if (i < slen && this.tokAt(i) != 2) axis = this.e.optParameterAsString(i++).toLowerCase(); +s = "rotate Y 10 10;rotate Y -10 -10;rotate Y -10 -10;rotate Y 10 10"; +var n = (i < slen ? this.intParameter(i++) : 5); +if (n < 0) { +s = JU.PT.rep(s, "10;", "" + (-n) + ";"); +} else { +s = JU.PT.rep(s, "10", "" + n); +}} else { +if (i < slen) axis = this.e.optParameterAsString(i++).toLowerCase(); +s = "rotate Y 360 30;"; +}if (this.chk) return; +this.vwr.setNavigationMode(false); +if (axis === "" || "xyz".indexOf(axis) < 0) axis = "y"; +s = JU.PT.rep(s, "Y", axis); +break; +case 3: +case 2: +endTime = this.floatParameter(i++); +break; +} +if (this.chk) return; +if (s != null) { +var wf = this.vwr.g.waitForMoveTo; +s = "set waitformoveto true;" + s + ";set waitformoveto " + wf; +s = "capture " + (isTransparent ? "transparent " : "") + JU.PT.esc(fileName) + (looping ? " LOOP;" : ";") + s + ";capture end;"; +this.e.cmdScript(0, null, s, null); +return; +}mode = 1073742031; +params = new java.util.Hashtable(); +var fps = this.vwr.getInt(553648132); +if (streaming) { +params.put("streaming", Boolean.TRUE); +if (!looping) this.showString(J.i18n.GT.o(J.i18n.GT.$("Note: Enable looping using the LOOP keyword just after the file name or {0}"), Clazz_newArray(-1, ["ANIMATION MODE LOOP"]))); +this.showString(J.i18n.GT.o(J.i18n.GT.$("Animation delay based on: {0}"), Clazz_newArray(-1, ["ANIMATION FPS " + fps]))); +}params.put("captureFps", Integer.$valueOf(fps)); +break; +case 102409: +case 1073741874: +if (params != null) params.put("captureSilent", Boolean.TRUE); +case 1073742335: +case 1073742334: +this.checkLength(-2); +mode = tok; +break; +default: +this.invArg(); +} +if (this.chk || params == null) return; +params.put("type", type); +var c = Integer.$valueOf(this.vwr.getBackgroundArgb()); +params.put("backgroundColor", c); +params.put("fileName", fileName); +params.put("quality", Integer.$valueOf(-1)); +params.put("endTime", Long.$valueOf(endTime <= 0 ? -1 : System.currentTimeMillis() + Clazz_floatToLong(endTime * 1000))); +params.put("captureMode", JS.T.nameOf(mode).toLowerCase()); +params.put("captureLooping", looping ? Boolean.TRUE : Boolean.FALSE); +var msg = this.vwr.processWriteOrCapture(params); +if (msg == null) msg = "canceled"; +JU.Logger.info(msg); +}); +Clazz_defineMethod(c$, "centerAt", +function(){ +var tok = this.getToken(1).tok; +switch (tok) { +case 1073741826: +case 96: +case 1812599299: +break; +default: +this.invArg(); +} +var pt = JU.P3.new3(0, 0, 0); +if (this.slen == 5) { +pt.x = this.floatParameter(2); +pt.y = this.floatParameter(3); +pt.z = this.floatParameter(4); +} else if (this.e.isCenterParameter(2)) { +pt = this.centerParameter(2); +this.e.checkLast(this.e.iToken); +} else { +this.checkLength(2); +}if (!this.chk && !this.vwr.isJmolDataFrame()) this.vwr.tm.setCenterAt(tok, pt); +}); +Clazz_defineMethod(c$, "compare", +function(){ +var eval = this.e; +var isQuaternion = false; +var doRotate = false; +var doTranslate = false; +var doAnimate = false; +var isFlexFit = false; +var data1 = null; +var data2 = null; +var bsAtoms1 = null; +var bsAtoms2 = null; +var vAtomSets = null; +var vQuatSets = null; +eval.iToken = 0; +var nSeconds = (this.isFloatParameter(1) ? this.floatParameter(++eval.iToken) : NaN); +var coordTo = null; +var bsFrom = null; +var bsTo = null; +var tok = 0; +if (this.tokAt(1) == 4115) { +bsFrom = this.vwr.bsA(); +} else { +bsFrom = this.atomExpressionAt(1); +if (eval.isArrayParameter(++eval.iToken)) { +coordTo = eval.getPointArray(eval.iToken, -1, false); +} else if ((tok = this.tokAt(eval.iToken)) != 1153433601 && tok != 4115) { +bsTo = this.atomExpressionAt(eval.iToken); +}}var bsSubset = null; +var isSmiles = false; +var isPolyhedral = false; +var strSmiles = null; +var bs = JU.BSUtil.copy(bsFrom); +if (bsTo != null) bs.or(bsTo); +var isToSubsetOfFrom = (coordTo == null && bsTo != null && bs.equals(bsFrom)); +var isFrames = isToSubsetOfFrom; +var isAtoms = (tok == 1153433601); +var isCoords = false; +for (var i = eval.iToken + 1; i < this.slen; ++i) { +switch (this.getToken(i).tok) { +case 4115: +isFrames = true; +if (bsTo == null) bsTo = JU.BSUtil.copy(bsFrom); +break; +case 134218757: +isSmiles = true; +tok = this.tokAt(i + 1); +if (tok != 4 && tok != 1275203608) { +strSmiles = "*"; +break; +}case 134218756: +isPolyhedral = (this.tokAt(++i) == 1275203608); +strSmiles = (isPolyhedral ? "polyhedra" : this.stringParameter(i)); +if (strSmiles.equalsIgnoreCase("polyhedra") || strSmiles.equalsIgnoreCase("polyhedron")) isPolyhedral = true; +break; +case 1677721602: +isFlexFit = true; +doRotate = true; +strSmiles = this.paramAsStr(++i); +if (strSmiles.equalsIgnoreCase("SMILES")) { +isSmiles = true; +if (this.e.tokAt(i + 1) == 1612709900) { +strSmiles = "H"; +i++; +} else { +strSmiles = "*"; +}}break; +case 3: +case 2: +nSeconds = Math.abs(this.floatParameter(i)); +if (nSeconds > 0) doAnimate = true; +break; +case 268436992: +break; +case 2109448: +bsSubset = this.atomExpressionAt(++i); +i = eval.iToken; +break; +case 10: +case 1073742325: +if (vQuatSets != null) this.invArg(); +bsAtoms1 = this.atomExpressionAt(eval.iToken); +tok = (isToSubsetOfFrom ? 0 : this.tokAt(eval.iToken + 1)); +bsAtoms2 = (coordTo == null && eval.isArrayParameter(eval.iToken + 1) ? null : (tok == 10 || tok == 1073742325 ? this.atomExpressionAt(++eval.iToken) : JU.BSUtil.copy(bsAtoms1))); +if (bsSubset != null) { +bsAtoms1.and(bsSubset); +if (bsAtoms2 != null) bsAtoms2.and(bsSubset); +}if (bsAtoms2 == null) { +var ipt = eval.iToken; +coordTo = eval.getPointArray(eval.iToken + 1, -1, false); +if (coordTo == null) eval.iToken = ipt; + else isCoords = true; +} else if (bsTo != null) { +bsAtoms2.and(bsTo); +}if (vAtomSets == null) vAtomSets = new JU.Lst(); +vAtomSets.addLast( Clazz_newArray(-1, [bsAtoms1, (bsAtoms2 == null ? coordTo : bsAtoms2)])); +if (isAtoms) coordTo = null; +i = eval.iToken; +break; +case 1275203608: +isSmiles = isPolyhedral = true; +break; +case 4125: +break; +case 7: +if (vAtomSets != null) this.invArg(); +isQuaternion = true; +data1 = eval.getQuaternionArray((eval.theToken).getList(), 1073742001); +this.getToken(++i); +data2 = eval.getQuaternionArray((eval.theToken).getList(), 1073742001); +if (vQuatSets == null) vQuatSets = new JU.Lst(); +vQuatSets.addLast( Clazz_newArray(-1, [data1, data2])); +break; +case 1073742077: +isQuaternion = true; +break; +case 1153433601: +isAtoms = true; +isQuaternion = false; +break; +case 134217751: +isQuaternion = false; +break; +case 528432: +doRotate = true; +break; +case 4160: +doTranslate = true; +break; +default: +this.invArg(); +} +} +if (this.chk) return; +if (isFrames) nSeconds = 0; +if (Float.isNaN(nSeconds) || nSeconds < 0) nSeconds = 1; + else if (!doRotate && !doTranslate) doRotate = doTranslate = true; +doAnimate = (nSeconds != 0); +isAtoms = (!isQuaternion && strSmiles == null && !isPolyhedral || coordTo != null); +if (isAtoms) J.api.Interface.getInterface("JU.Eigen", this.vwr, "script"); +if (vAtomSets == null && vQuatSets == null) { +if (isPolyhedral && bsSubset == null) { +bsSubset = this.vwr.getAtomBitSet("polyhedra"); +}if (bsSubset == null) { +bsAtoms1 = (isAtoms ? this.vwr.getAtomBitSet("spine") : new JU.BS()); +if (bsAtoms1.nextSetBit(0) < 0) { +bsAtoms1 = bsFrom; +bsAtoms2 = bsTo; +} else { +bsAtoms2 = JU.BSUtil.copy(bsAtoms1); +bsAtoms1.and(bsFrom); +bsAtoms2.and(bsTo); +}} else { +bsAtoms1 = JU.BSUtil.copy(bsFrom); +bsAtoms2 = JU.BSUtil.copy(bsTo); +bsAtoms1.and(bsSubset); +bsAtoms1.and(bsFrom); +if (bsAtoms2 != null) { +bsAtoms2.and(bsSubset); +bsAtoms2.and(bsTo); +}}vAtomSets = new JU.Lst(); +vAtomSets.addLast( Clazz_newArray(-1, [bsAtoms1, bsAtoms2])); +}var bsFrames; +var bsModels = null; +if (isFrames) { +bsModels = this.vwr.ms.getModelBS(bsFrom, false); +bsFrames = new Array(bsModels.cardinality()); +for (var i = 0, iModel = bsModels.nextSetBit(0); iModel >= 0; iModel = bsModels.nextSetBit(iModel + 1), i++) bsFrames[i] = this.vwr.getModelUndeletedAtomsBitSet(iModel); + +} else { +bsModels = JU.BSUtil.newAndSetBit(0); +bsFrames = Clazz_newArray(-1, [bsFrom]); +}for (var iFrame = 0, iModel = bsModels.nextSetBit(0); iFrame < bsFrames.length; iFrame++, iModel = bsModels.nextSetBit(iModel + 1)) { +bsFrom = bsFrames[iFrame]; +var retStddev = Clazz_newFloatArray (2, 0); +if (isFrames && isPolyhedral && iFrame == 0) { +bsTo = bsFrom; +continue; +}var q = null; +var vQ = new JU.Lst(); +var centerAndPoints = null; +var vAtomSets2 = (isFrames ? new JU.Lst() : vAtomSets); +if (!isCoords) { +for (var i = 0; i < vAtomSets.size(); ++i) { +var bss = vAtomSets.get(i); +if (isFrames) vAtomSets2.addLast(bss = Clazz_newArray(-1, [JU.BSUtil.copy(bss[0]), bss[1]])); +(bss[0]).and(bsFrom); +} +}var center = null; +var translation = null; +if (isAtoms) { +if (coordTo != null) { +vAtomSets2.clear(); +vAtomSets2.addLast( Clazz_newArray(-1, [bsAtoms1, coordTo])); +}try { +centerAndPoints = this.vwr.getCenterAndPoints(vAtomSets2, true); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.invArg(); +} else { +throw ex; +} +} +var n = centerAndPoints[0].length - 1; +for (var i = 1; i <= n; i++) { +var aij = centerAndPoints[0][i]; +var bij = centerAndPoints[1][i]; +if (!(Clazz_instanceOf(aij,"JM.Atom")) || !(Clazz_instanceOf(bij,"JM.Atom"))) break; +if (!isFrames) JU.Logger.info(" atom 1 " + (aij).getInfo() + "\tatom 2 " + (bij).getInfo()); +} +q = JU.Measure.calculateQuaternionRotation(centerAndPoints, retStddev); +var r0 = (Float.isNaN(retStddev[1]) ? NaN : Math.round(retStddev[0] * 100) / 100); +var r1 = (Float.isNaN(retStddev[1]) ? NaN : Math.round(retStddev[1] * 100) / 100); +this.showString("RMSD " + r0 + " --> " + r1 + " Angstroms"); +} else if (isQuaternion) { +if (vQuatSets == null) { +for (var i = 0; i < vAtomSets2.size(); i++) { +var bss = vAtomSets2.get(i); +data1 = this.vwr.getAtomGroupQuaternions(bss[0], 2147483647); +data2 = this.vwr.getAtomGroupQuaternions(bss[1], 2147483647); +for (var j = 0; j < data1.length && j < data2.length; j++) { +vQ.addLast(data2[j].div(data1[j])); +} +} +} else { +for (var j = 0; j < data1.length && j < data2.length; j++) { +vQ.addLast(data2[j].div(data1[j])); +} +}retStddev[0] = 0; +data1 = vQ.toArray( new Array(vQ.size())); +q = JU.Quat.sphereMean(data1, retStddev, 0.0001); +this.showString("RMSD = " + retStddev[0] + " degrees"); +} else { +var m4 = new JU.M4(); +center = new JU.P3(); +if (bsFrom != null && strSmiles != null && ("H".equals(strSmiles) || "*".equals(strSmiles) || "".equals(strSmiles))) try { +strSmiles = this.vwr.getSmilesOpt(bsAtoms1 == null ? bsFrom : bsAtoms1, -1, -1, 32768 | ("H".equals(strSmiles) ? 4096 : 0), null); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +eval.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +if (isFlexFit) { +var list; +if (bsFrom == null || bsTo == null || (list = eval.getSmilesExt().getFlexFitList(bsFrom, bsTo, strSmiles, !isSmiles)) == null) return; +this.vwr.setDihedrals(list, null, 1); +}var stddev; +if (isPolyhedral) { +var bs1 = JU.BS.copy(bsAtoms1); +bs1.and(bsFrom); +var bs2 = JU.BS.copy(bsAtoms2); +bs2.and(bsTo); +stddev = eval.getSmilesExt().mapPolyhedra(bs1.nextSetBit(0), bs2.nextSetBit(0), isSmiles, m4); +} else { +this.showString("COMPARE using " + (isSmiles ? "SMILES " : "SMARTS ") + strSmiles); +var ptsA = new JU.Lst(); +var ptsB = new JU.Lst(); +stddev = eval.getSmilesExt().getSmilesCorrelation(bsAtoms1 == null ? bsFrom : bsAtoms1, bsAtoms2 == null ? bsTo : bsAtoms2, strSmiles, ptsA, ptsB, m4, null, false, null, center, false, 32 | (isSmiles ? 1 : 2)); +}if (Float.isNaN(stddev)) { +this.showString("structures do not match from " + bsFrom + " to " + bsTo); +return; +}if (doTranslate) { +translation = new JU.V3(); +m4.getTranslation(translation); +}if (doRotate) { +var m3 = new JU.M3(); +m4.getRotationScale(m3); +q = JU.Quat.newM(m3); +}this.showString("RMSD = " + stddev + " Angstroms"); +if (isFrames) { +var oabc = this.vwr.getV0abc(iModel, Clazz_newArray(-1, [m4])); +if (oabc != null) this.vwr.ms.setModelCagePts(iModel, oabc, null); +}}if (centerAndPoints != null) center = centerAndPoints[0][0]; +if (center == null) { +centerAndPoints = this.vwr.getCenterAndPoints(vAtomSets2, true); +center = centerAndPoints[0][0]; +}var pt1 = new JU.P3(); +var endDegrees = NaN; +if (doTranslate) { +if (translation == null) translation = JU.V3.newVsub(centerAndPoints[1][0], center); +endDegrees = 1e10; +}if (doRotate) { +if (q == null) eval.evalError("option not implemented", null); +pt1.add2(center, q.getNormal()); +endDegrees = q.getTheta(); +if (endDegrees == 0 && doTranslate) { +if (translation.length() > 0.01) endDegrees = 1e10; + else if (isFrames) continue; + else doRotate = doTranslate = doAnimate = false; +}}if (Float.isNaN(endDegrees) || Float.isNaN(pt1.x)) continue; +var ptsB = null; +if (doRotate && doTranslate && nSeconds != 0) { +var ptsA = this.vwr.ms.getAtomPointVector(bsFrom); +var m4 = JS.ScriptMathProcessor.getMatrix4f(q.getMatrix(), translation); +ptsB = JU.Measure.transformPoints(ptsA, m4, center); +}if (!eval.useThreads()) doAnimate = false; +if (this.vwr.rotateAboutPointsInternal(eval, center, pt1, endDegrees / nSeconds, endDegrees, doAnimate, bsFrom, translation, ptsB, null, null, false) && doAnimate && eval.isJS) throw new JS.ScriptInterruption(eval, "compare", 1); +} +}); +Clazz_defineMethod(c$, "configuration", +function(){ +var bsAtoms = null; +var bsSelected = (this.chk ? null : this.vwr.bsA()); +if (this.slen == 1) { +if (this.chk) return; +bsAtoms = this.vwr.ms.setConformation(bsSelected); +this.vwr.ms.addStateScript("select", null, bsSelected, null, ";configuration", true, false); +} else { +var n = -2147483648; +var bs = null; +if (this.tokAt(1) == 4) { +n = -1000 - (this.stringParameter(this.e.checkLast(1)) + " ").codePointAt(0); +} else if (this.tokAt(1) == 2) { +n = this.intParameter(this.e.checkLast(1)); +} else { +bs = bsAtoms = this.atomExpressionAt(1); +if (this.tokAt(this.e.iToken) == 4) { +n = -1000 - (this.stringParameter(this.e.checkLast(this.e.iToken + 1)) + " ").codePointAt(0); +} else { +n = this.intParameter(this.e.checkLast(this.e.iToken + 1)); +}}if (this.chk) return; +this.vwr.addStateScript("configuration " + (bs == null ? "" : JU.Escape.eBS(bsAtoms) + " ") + n + ";", true, false); +bsAtoms = this.vwr.ms.getConformation(this.vwr.am.cmi, n, true, bs); +}this.setShapeProperty(1, "type", Integer.$valueOf(30720)); +this.e.setShapeSizeBs(1, 0, bsAtoms); +this.vwr.autoHbond(bsAtoms, bsAtoms, true); +this.vwr.selectStatus(bsAtoms, false, 0, !this.e.doReport(), false); +}); +Clazz_defineMethod(c$, "measure", +function(){ +var eval = this.e; +var id = null; +var pt = 1; +var colix = 0; +var offset = null; +if (this.slen == 2) switch (this.tokAt(1)) { +case 1073742334: +this.setShapeProperty(6, "hideAll", Boolean.TRUE); +return; +case 12291: +if (!this.chk) this.vwr.clearAllMeasurements(); +return; +case 1113589787: +if (!this.chk) this.showMeasureCount(true); +return; +} +this.vwr.shm.loadShape(6); +switch (this.tokAt(1)) { +case 134218756: +var smarts = this.stringParameter(this.slen == 3 ? 2 : 4); +if (this.chk) return; +var atoms = this.vwr.ms.at; +var ac = this.vwr.ms.ac; +var maps = null; +try { +maps = this.vwr.getSmilesMatcher().getCorrelationMaps(smarts, atoms, ac, this.vwr.bsA(), 2); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +eval.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +if (maps == null) return; +this.setShapeProperty(6, "maps", maps); +return; +} +switch (this.slen) { +case 2: +switch (this.getToken(pt).tok) { +case 0: +case 1073742335: +this.vwr.shm.loadShape(6); +this.setShapeProperty(6, "hideAll", Boolean.FALSE); +return; +case 1073742001: +if (!this.chk) eval.showStringPrint(this.vwr.getMeasurementInfoAsString(), false); +return; +case 4: +this.setShapeProperty(6, "setFormats", this.stringParameter(1)); +return; +} +eval.errorStr(24, "ON, OFF, DELETE"); +break; +case 3: +switch (this.getToken(1).tok) { +case 12291: +if (this.getToken(2).tok == 1073742327) { +if (!this.chk) this.vwr.clearAllMeasurements(); +} else { +var i = this.intParameter(2) - 1; +if (!this.chk) this.vwr.deleteMeasurement(i); +}return; +} +} +var nAtoms = 0; +var expressionCount = 0; +var modelIndex = -1; +var atomIndex = -1; +var ptFloat = -1; +var countPlusIndexes = Clazz_newIntArray (5, 0); +var rangeMinMax = Clazz_newFloatArray(-1, [3.4028235E38, 3.4028235E38]); +var isAll = false; +var isAllConnected = false; +var isNotConnected = false; +var isRange = true; +var isRefreshID = false; +var rd = null; +var intramolecular = null; +var tokAction = 268438018; +var strFormat = null; +var property = null; +var units = null; +var font = null; +var points = new JU.Lst(); +var bs = new JU.BS(); +var bsSelected = null; +var target = null; +var tickInfo = null; +var nBitSets = 0; +var mad = 0; +var value = NaN; +var alignment = null; +for (var i = 1; i < this.slen; ++i) { +switch (this.getToken(i).tok) { +default: +this.error(15); +break; +case 1073741974: +if (i != 1) this.invArg(); +id = eval.optParameterAsString(++i); +continue; +case 1073741824: +eval.errorStr(24, "ALL, ALLCONNECTED, DELETE"); +break; +case 1275082241: +tokAction = 1275082241; +if (this.tokAt(i + 1) == 1073742327 && this.slen == i + 2) { +if (!this.chk) { +this.vwr.setShapeProperty(6, "selectall", null); +this.showMeasureCount(true); +}return; +}break; +case 1113589787: +if (points.size() > 0 || nBitSets > 0 || id != null) this.invArg(); +tokAction = 1275082241; +if (this.chk) { +bsSelected = new JU.BS(); +} else { +bsSelected = this.vwr.getShapeProperty(6, "selected"); +if (bsSelected.cardinality() == 0) return; +}isAll = true; +break; +case 268439040: +if (this.tokAt(i + 1) != 134217736) this.invArg(); +i++; +isNotConnected = true; +break; +case 1073741832: +alignment = this.paramAsStr(++i).toLowerCase(); +break; +case 134217736: +case 1073741834: +case 1073742327: +isAllConnected = (eval.theTok == 1073741834); +atomIndex = -1; +isAll = true; +if (isAllConnected && isNotConnected) this.invArg(); +break; +case 1765808134: +colix = JU.C.getColix(eval.getArgbParam(++i)); +i = eval.iToken; +break; +case 1073742066: +if (eval.isPoint3f(++i)) { +var p = this.getPoint3f(i, false); +offset = Clazz_newFloatArray(-1, [1, p.x, p.y, p.z, 0, 0, 0]); +} else { +offset = eval.floatParameterSet(i, 7, 7); +}i = eval.iToken; +break; +case 1665140738: +case 1073741917: +mad = Clazz_floatToInt((eval.theTok == 1665140738 ? 2000 : 1000) * this.floatParameter(++i)); +if (id != null && mad <= 0) mad = -1; +break; +case 3: +if (rd != null) this.invArg(); +isAll = true; +isRange = true; +ptFloat = (ptFloat + 1) % 2; +rangeMinMax[ptFloat] = this.floatParameter(i); +break; +case 12291: +if (tokAction != 268438018 && tokAction != 1275082241) this.invArg(); +tokAction = 12291; +break; +case 4114: +var fontsize = this.floatParameter(++i); +var fontface = this.paramAsStr(++i); +var fontstyle = this.paramAsStr(++i); +if (!this.chk) font = this.vwr.getFont3D(fontface, fontstyle, fontsize); +break; +case 2: +var iParam = this.intParameter(i); +if (isAll) { +isRange = true; +ptFloat = (ptFloat + 1) % 2; +rangeMinMax[ptFloat] = iParam; +} else { +atomIndex = this.vwr.ms.getFirstAtomIndexFromAtomNumber(iParam, this.vwr.getVisibleFramesBitSet()); +if (!this.chk && atomIndex < 0) return; +if (target != null) this.invArg(); +if ((countPlusIndexes[0] = ++nAtoms) > 4) eval.bad(); +countPlusIndexes[nAtoms] = atomIndex; +}break; +case 1094713359: +modelIndex = this.intParameter(++i); +break; +case 1073742334: +if (tokAction != 268438018) this.invArg(); +tokAction = 1073742334; +break; +case 1073742335: +if (tokAction != 268438018) this.invArg(); +tokAction = 1073742335; +break; +case 1073742114: +isAll = true; +isRange = true; +atomIndex = -1; +break; +case 1073741989: +case 1073741990: +intramolecular = Boolean.$valueOf(eval.theTok == 1073741989); +isAll = true; +isNotConnected = (eval.theTok == 1073741990); +break; +case 1648363544: +if (ptFloat >= 0) this.invArg(); +rd = eval.encodeRadiusParameter(i, false, true); +if (rd == null) return; +rd.values = rangeMinMax; +i = eval.iToken; +isNotConnected = true; +isAll = true; +intramolecular = Boolean.$valueOf(false); +if (nBitSets == 1) { +nBitSets++; +nAtoms++; +var bs2 = JU.BSUtil.copy(bs); +JU.BSUtil.invertInPlace(bs2, this.vwr.ms.ac); +bs2.and(this.vwr.ms.getAtomsWithinRadius(5, bs, false, null, null)); +points.addLast(bs2); +}break; +case 12290: +case 10: +case 1073742325: +nBitSets++; +case 1073742332: +case 8: +case 1073742330: +if (atomIndex >= 0 || bsSelected != null) this.invArg(); +var ret = new Array(1); +target = eval.centerParameter(i, ret); +if (Clazz_instanceOf(ret[0],"JU.BS")) { +target = bs = ret[0]; +if (!this.chk && bs.length() == 0) return; +}if (Clazz_instanceOf(target,"JU.P3")) { +var v = new JU.Point3fi(); +v.setT(target); +v.mi = modelIndex; +target = v; +}if ((nAtoms = ++expressionCount) > 4) eval.bad(); +i = eval.iToken; +points.addLast(target); +break; +case 1715472409: +property = this.paramAsStr(i); +break; +case 1073742188: +value = this.floatParameter(++i); +break; +case 4: +var s = this.stringParameter(i); +if (JM.Measurement.isUnits(s) || s.equals("default")) { +units = s; +} else { +strFormat = s; +}break; +case 1073742164: +tickInfo = eval.tickParamAsStr(i, false, true, true); +i = eval.iToken; +tokAction = 12290; +break; +} +} +if (rd != null && (ptFloat >= 0 || nAtoms != 2) || tokAction != 1275082241 && bsSelected == null && nAtoms < 2 && id == null && (tickInfo == null || nAtoms == 1)) eval.bad(); +if (strFormat != null && strFormat.indexOf(nAtoms + ":") != 0) strFormat = nAtoms + ":" + strFormat; +if (isRange) { +if (rangeMinMax[1] < rangeMinMax[0]) { +rangeMinMax[1] = rangeMinMax[0]; +rangeMinMax[0] = (rangeMinMax[1] == 3.4028235E38 ? 3.4028235E38 : -200); +}}if (this.chk) return; +isRefreshID = (id != null && target == null && tokAction == 268438018); +if (target != null || bsSelected != null || tickInfo != null || isRefreshID) { +if (rd == null) rd = new J.atomdata.RadiusData(rangeMinMax, 0, null, null); +if (tickInfo != null) tickInfo.id = "default"; +if (isRefreshID) { +tokAction = 266284; +} else if (target != null && (property != null || strFormat != null) && tokAction == 268438018) { +tokAction = 12290; +}var text = null; +if (font != null || alignment != null || colix != 0 || strFormat != null && (isRefreshID || strFormat.indexOf('\n') >= 0)) text = JM.Text.newMeasure(this.vwr, font, colix); +if (text != null) { +text.pymolOffset = offset; +text.setAlignmentLCR(alignment); +}this.setShapeProperty(6, "measure", this.vwr.newMeasurementData(id, points).set(tokAction, null, rd, property, strFormat, units, tickInfo, isAllConnected, isNotConnected, intramolecular, isAll, mad, colix, text, value, bsSelected)); +if (tokAction == 1275082241) { +this.showMeasureCount(false); +}return; +}var propertyValue = (id == null ? countPlusIndexes : id); +switch (tokAction) { +case 12291: +this.setShapeProperty(6, "delete", propertyValue); +break; +case 1073742335: +this.setShapeProperty(6, "show", propertyValue); +break; +case 1073742334: +this.setShapeProperty(6, "hide", propertyValue); +break; +default: +this.setShapeProperty(6, (strFormat == null && units == null ? "toggle" : "toggleOn"), propertyValue); +if (strFormat != null) this.setShapeProperty(6, "setFormats", strFormat); +} +}); +Clazz_defineMethod(c$, "showMeasureCount", +function(isFull){ +var bs = this.vwr.getShapeProperty(6, "selected"); +var n = bs.cardinality(); +if (isFull) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.showString((this.vwr.shm.getShape(6)).getInfoAsString(i)); +} +}this.showString(n + (n == 1 ? " measure" : " measures") + " selected"); +}, "~B"); +Clazz_defineMethod(c$, "connect", +function(index){ +var eval = this.e; +var distances = Clazz_newFloatArray (2, 0); +var atomSets = new Array(2); +atomSets[0] = atomSets[1] = this.vwr.bsA(); +var radius = NaN; +var colorArgb = Clazz_newIntArray(-1, [-2147483648]); +var distanceCount = 0; +var bondOrder = 131071; +var bo; +var operation = 1073742026; +var isDelete = false; +var haveType = false; +var haveOperation = false; +var translucentLevel = 3.4028235E38; +var isColorOrRadius = false; +var nAtomSets = 0; +var nDistances = 0; +var bsBonds = new JU.BS(); +var isBonds = false; +var expression2 = 0; +var ptColor = 0; +var energy = 0; +var addGroup = false; +if (this.slen == 1) { +if (!this.chk) this.vwr.rebondState(eval.$isStateScript); +return; +}if (this.tokAt(1) == 1073877011) { +if (!this.chk) this.vwr.connectNBO(this.e.optParameterAsString(2)); +return; +}for (var i = index; i < this.slen; ++i) { +switch (this.getToken(i).tok) { +case 1073742335: +case 1073742334: +this.checkLength(2); +if (!this.chk) this.vwr.rebondState(eval.$isStateScript); +return; +case 2: +case 3: +if (nAtomSets > 0) { +if (haveType || isColorOrRadius) eval.error(23); +bo = JU.Edge.getBondOrderFromFloat(this.floatParameter(i)); +if (bo == 131071) this.invArg(); +bondOrder = bo; +haveType = true; +break; +}if (++nDistances > 2) eval.bad(); +var dist = this.floatParameter(i); +if (this.tokAt(i + 1) == 268441090) { +dist = -dist / 100; +i++; +}distances[distanceCount++] = dist; +break; +case 12290: +case 10: +case 1073742325: +if (nAtomSets > 2 || isBonds && nAtomSets > 0) eval.bad(); +if (haveType || isColorOrRadius) this.invArg(); +atomSets[nAtomSets++] = this.atomExpressionAt(i); +isBonds = eval.isBondSet; +if (nAtomSets == 2) { +var pt = eval.iToken; +for (var j = i; j < pt; j++) if (this.tokAt(j) == 1073741824 && this.paramAsStr(j).equals("_1")) { +expression2 = i; +break; +} +eval.iToken = pt; +}i = eval.iToken; +break; +case 1086324742: +addGroup = true; +break; +case 1765808134: +case 603979967: +case 1073742074: +isColorOrRadius = true; +translucentLevel = this.getColorTrans(eval, i, false, colorArgb); +i = eval.iToken; +break; +case 1073742086: +var isAuto = (this.tokAt(2) == 1073741852); +this.checkLength(isAuto ? 3 : 2); +if (this.chk) return; +this.vwr.clearModelDependentObjects(); +this.vwr.ms.deleteAllBonds(); +var bsExclude = new JU.BS(); +this.vwr.ms.setPdbConectBonding(0, 0, bsExclude); +if (isAuto) { +var isLegacy = eval.$isStateScript && this.vwr.getBoolean(603979872); +this.vwr.ms.autoBondBs4(null, null, bsExclude, null, this.vwr.getMadBond(), isLegacy, null); +this.vwr.addStateScript((isLegacy ? "set legacyAutoBonding TRUE;connect PDB AUTO;set legacyAutoBonding FALSE;" : "connect PDB auto;"), false, true); +return; +}this.vwr.addStateScript("connect PDB;", false, true); +return; +case 1073741852: +case 1073741904: +case 1073742025: +case 1073742026: +haveOperation = true; +if (++i != this.slen) this.invArg(); +operation = eval.theTok; +if (operation == 1073741852 && !(bondOrder == 131071 || bondOrder == 2048 || bondOrder == 515)) this.invArg(); +break; +case 659482: +if (!isColorOrRadius) { +colorArgb[0] = 0xFFFFFF; +translucentLevel = 0.5; +radius = this.vwr.getFloat(570425406); +isColorOrRadius = true; +}if (!haveOperation) { +operation = 1073742026; +haveOperation = true; +}case 1073741824: +if (eval.isColorParam(i)) { +ptColor = -i; +break; +}case 1075838996: +case 1613238294: +var cmd = this.paramAsStr(i); +if ((bo = JU.Edge.getBondOrderFromString(cmd)) == 131071) this.invArg(); +if (haveType) eval.error(18); +haveType = true; +switch (bo) { +case 33: +switch (this.tokAt(i + 1)) { +case 3: +bo = JU.Edge.getPartialBondOrderFromFloatEncodedInt(this.st[++i].intValue); +break; +case 2: +bo = this.intParameter(++i); +break; +} +break; +case 2048: +if (this.tokAt(i + 1) == 2) { +bo = (this.intParameter(++i) << 11); +energy = this.floatParameter(++i); +}break; +case 65537: +if (!haveOperation) { +operation = 1073742025; +haveOperation = true; +}break; +} +bondOrder = bo; +break; +case 1665140738: +radius = this.floatParameter(++i); +isColorOrRadius = true; +break; +case 1073742333: +if (++i != this.slen) this.invArg(); +case 12291: +operation = 12291; +isDelete = true; +isColorOrRadius = false; +break; +default: +ptColor = i; +break; +} +if (i > 0) { +if (ptColor == -i || ptColor == i && eval.isColorParam(i)) { +isColorOrRadius = true; +colorArgb[0] = eval.getArgbParam(i); +i = eval.iToken; +} else if (ptColor == i) { +this.invArg(); +}}} +if (this.chk) return; +if (distanceCount < 2) { +if (distanceCount == 0) distances[0] = 1.0E8; +distances[1] = distances[0]; +distances[0] = 0.1; +}if (isColorOrRadius) { +if (!haveType) bondOrder = 65535; +if (!haveOperation) operation = 1073742025; +}var nNew = 0; +var nModified = 0; +var result; +if (expression2 > 0) { +var bs = new JU.BS(); +this.vwr.definedAtomSets.put("_1", bs); +var bs0 = atomSets[0]; +for (var atom1 = bs0.nextSetBit(0); atom1 >= 0; atom1 = bs0.nextSetBit(atom1 + 1)) { +bs.set(atom1); +result = this.vwr.makeConnections(distances[0], distances[1], bondOrder, operation, bs, this.atomExpressionAt(expression2), bsBonds, isBonds, false, 0); +nNew += Math.abs(result[0]); +nModified += result[1]; +bs.clear(atom1); +} +} else { +result = this.vwr.makeConnections(distances[0], distances[1], bondOrder, operation, atomSets[0], atomSets[1], bsBonds, isBonds, addGroup, energy); +nNew += Math.abs(result[0]); +nModified += result[1]; +}var report = eval.doReport(); +if (isDelete) { +if (report) eval.report(J.i18n.GT.i(J.i18n.GT.$("{0} connections deleted"), nModified), false); +return; +}if (isColorOrRadius) { +this.vwr.selectBonds(bsBonds); +if (!Float.isNaN(radius)) eval.setShapeSizeBs(1, Math.round(radius * 2000), null); +this.finalizeObject(1, colorArgb[0], translucentLevel, 0, false, null, 0, bsBonds); +this.vwr.selectBonds(null); +}if (report) eval.report(J.i18n.GT.o(J.i18n.GT.$("{0} new bonds; {1} modified"), Clazz_newArray(-1, [Integer.$valueOf(nNew), Integer.$valueOf(nModified)])), false); +}, "~N"); +Clazz_defineMethod(c$, "console", +function(){ +switch (this.getToken(1).tok) { +case 1073742334: +if (!this.chk) this.vwr.showConsole(false); +break; +case 1073742335: +if (!this.chk) this.vwr.showConsole(true); +break; +case 1073741882: +if (!this.chk) this.vwr.sm.clearConsole(); +break; +case 134221856: +this.showString(this.stringParameter(2)); +break; +default: +this.invArg(); +} +}); +Clazz_defineMethod(c$, "data", +function(){ +var eval = this.e; +var dataString = null; +var dataLabel = null; +var isOneValue = false; +var i; +switch (eval.iToken = this.slen) { +case 5: +dataString = this.paramAsStr(2); +case 4: +case 2: +dataLabel = this.paramAsStr(1); +if (dataLabel.equalsIgnoreCase("clear")) { +if (!this.chk) this.vwr.setData(null, null, 0, 0, 0, 0, 0); +return; +}if ((i = dataLabel.indexOf("@")) >= 0) { +dataString = "" + eval.getParameter(dataLabel.substring(i + 1), 4, true); +dataLabel = dataLabel.substring(0, i).trim(); +} else if (dataString == null && (i = dataLabel.indexOf(" ")) >= 0) { +dataString = dataLabel.substring(i + 1).trim(); +dataLabel = dataLabel.substring(0, i).trim(); +isOneValue = true; +}break; +default: +eval.bad(); +} +var dataType = dataLabel.substring(0, (dataLabel + " ").indexOf(" ")).toLowerCase(); +if (dataType.equals("model") || dataType.equals("append")) { +eval.cmdLoad(); +return; +}if (this.chk) return; +var isDefault = (dataLabel.toLowerCase().indexOf("(default)") >= 0); +if (dataType.equals("connect_atoms")) { +this.vwr.ms.connect(this.parseDataArray(dataString, false)); +return; +}if (dataType.indexOf("ligand_") == 0) { +this.vwr.setLigandModel(dataLabel.substring(7).toUpperCase() + "_data", dataString.trim()); +return; +}if (dataType.indexOf("file_") == 0) { +this.vwr.setLigandModel(dataLabel.substring(5) + "_file", dataString.trim()); +return; +}var d = new Array(4); +if (dataType.equals("element_vdw")) { +d[0] = dataType; +d[1] = dataString.$replace(';', '\n'); +var n = JU.Elements.elementNumberMax; +var eArray = Clazz_newIntArray (n + 1, 0); +for (var ie = 1; ie <= n; ie++) eArray[ie] = ie; + +d[2] = eArray; +d[3] = Integer.$valueOf(0); +this.vwr.setData("element_vdw", d, n, 0, 0, 0, 0); +return; +}if (dataType.indexOf("data2d_") == 0) { +d[0] = dataLabel; +d[1] = this.parseDataArray(dataString, false); +d[3] = Integer.$valueOf(2); +this.vwr.setData(dataLabel, d, 0, 0, 0, 0, 0); +return; +}if (dataType.indexOf("data3d_") == 0) { +d[0] = dataLabel; +d[1] = this.parseDataArray(dataString, true); +d[3] = Integer.$valueOf(3); +this.vwr.setData(dataLabel, d, 0, 0, 0, 0, 0); +return; +}var tokens = JU.PT.getTokens(dataLabel); +if (dataType.indexOf("property_") == 0 && !(tokens.length == 2 && tokens[1].equals("set"))) { +var bs = this.vwr.bsA(); +d[0] = dataType; +var atomNumberField = (isOneValue ? 0 : (this.vwr.getP("propertyAtomNumberField")).intValue()); +var atomNumberFieldColumnCount = (isOneValue ? 0 : (this.vwr.getP("propertyAtomNumberColumnCount")).intValue()); +var propertyField = (isOneValue ? -2147483648 : (this.vwr.getP("propertyDataField")).intValue()); +var propertyFieldColumnCount = (isOneValue ? 0 : (this.vwr.getP("propertyDataColumnCount")).intValue()); +if (!isOneValue && dataLabel.indexOf(" ") >= 0) { +if (tokens.length == 3) { +dataLabel = tokens[0]; +atomNumberField = JU.PT.parseInt(tokens[1]); +propertyField = JU.PT.parseInt(tokens[2]); +}if (tokens.length == 5) { +dataLabel = tokens[0]; +atomNumberField = JU.PT.parseInt(tokens[1]); +atomNumberFieldColumnCount = JU.PT.parseInt(tokens[2]); +propertyField = JU.PT.parseInt(tokens[3]); +propertyFieldColumnCount = JU.PT.parseInt(tokens[4]); +}}if (atomNumberField < 0) atomNumberField = 0; +if (propertyField < 0) propertyField = 0; +var ac = this.vwr.ms.ac; +var atomMap = null; +var bsTemp = JU.BS.newN(ac); +if (atomNumberField > 0) { +atomMap = Clazz_newIntArray (ac + 2, 0); +for (var j = 0; j <= ac; j++) atomMap[j] = -1; + +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +var atomNo = this.vwr.ms.at[j].getAtomNumber(); +if (atomNo > ac + 1 || atomNo < 0 || bsTemp.get(atomNo)) continue; +bsTemp.set(atomNo); +atomMap[atomNo] = j; +} +d[2] = atomMap; +} else { +d[2] = JU.BSUtil.copy(bs); +}d[1] = dataString; +d[3] = Integer.$valueOf(0); +this.vwr.setData(dataType, d, ac, atomNumberField, atomNumberFieldColumnCount, propertyField, propertyFieldColumnCount); +return; +}if ("occupany".equals(dataType)) dataType = "occupancy"; +var userType = JM.AtomCollection.getUserSettableType(dataType); +if (userType > -1) { +this.vwr.setAtomData(userType, dataType, dataString, isDefault); +return; +}d[0] = dataLabel; +d[1] = dataString; +d[3] = Integer.$valueOf(0); +this.vwr.setData(dataType, d, 0, 0, 0, 0, 0); +}); +Clazz_defineMethod(c$, "ellipsoid", +function(){ +var eval = this.e; +var mad = 0; +var i = 1; +var translucentLevel = 3.4028235E38; +var checkMore = false; +var isSet = false; +this.setShapeProperty(20, "thisID", null); +switch (this.getToken(1).tok) { +case 1073742335: +mad = 2147483647; +break; +case 1073742334: +break; +case 2: +mad = this.intParameter(1); +break; +case 36867: +this.e.sm.loadShape(20); +this.setShapeProperty(20, "select", this.paramAsStr(2)); +i = eval.iToken; +checkMore = true; +isSet = true; +break; +case 1073741974: +case 268441089: +case 1073741824: +this.e.sm.loadShape(20); +if (eval.theTok == 1073741974) i++; +this.setShapeId(20, i, false); +i = eval.iToken; +checkMore = true; +break; +default: +this.invArg(); +} +if (!checkMore) { +eval.setShapeSizeBs(20, mad, null); +return; +}var colorArgb = Clazz_newIntArray(-1, [-2147483648]); +while (++i < this.slen) { +var key = this.paramAsStr(i); +var value = null; +this.getToken(i); +if (!isSet) switch (eval.theTok) { +case 1073742330: +key = "points"; +var data = new Array(3); +data[0] = eval.objectNameParameter(++i); +if (this.chk) continue; +eval.getShapePropertyData(24, "getVertices", data); +value = data; +break; +case 1825200146: +value = this.e.optParameterAsString(++i); +if ((value).length == 0) continue; +break; +case 1611272194: +var axes = new Array(3); +var l = null; +switch (this.getToken(i + 1).tok) { +case 11: +i++; +var m = eval.theToken.value; +for (var im = 3; --im >= 0; ) m.getColumnV(im, axes[im] = new JU.V3()); + +break; +case 1073742195: +i += 2; +case 268437504: +l = new JU.Lst(); +for (var i1 = 3; --i1 >= 0; ) { +switch (this.tokAt(++i)) { +case 268437504: +break; +default: +if (eval.isCenterParameter(i)) { +l.addLast(JS.SV.newV(8, this.centerParameter(i))); +} else if (this.tokAt(i) == 268437504) { +} else { +l.addLast(this.getToken(i)); +}} +i = eval.iToken; +} +if (this.getToken(++i).tok != 268437505) this.invArg(); +break; +case 7: +l = (eval.theToken).getList(); +switch (l.size()) { +case 1: +var l1 = new JU.Lst(); +for (var il = 3; --il >= 0; ) l1.addLast(this.getToken(++i)); + +l = l1; +break; +case 3: +break; +default: +this.invArg(); +break; +} +break; +default: +for (var j = 0; j < 3; j++) { +axes[j] = new JU.V3(); +axes[j].setT(this.centerParameter(++i)); +i = eval.iToken; +} +break; +} +if (l != null) { +for (var k = 3; --k >= 0; ) { +var v = l.get(k); +switch (v.tok) { +case 7: +axes[k] = JU.V3.new3(JS.SV.fValue(v.getList().get(0)), JS.SV.fValue(v.getList().get(1)), JS.SV.fValue(v.getList().get(2))); +break; +case 8: +axes[k] = JU.V3.newV(v.value); +break; +} +} +}i = eval.iToken; +value = axes; +break; +case 12289: +value = this.centerParameter(++i); +i = eval.iToken; +break; +case 1094713359: +value = Integer.$valueOf(this.intParameter(++i)); +break; +case 12291: +value = Boolean.TRUE; +this.checkLength(i + 1); +break; +} +if (value == null) switch (eval.theTok) { +case 1073742335: +key = "on"; +value = Boolean.TRUE; +break; +case 1073742334: +key = "on"; +value = Boolean.FALSE; +break; +case 536875059: +if (this.isFloatParameter(i + 1)) { +value = Float.$valueOf(this.floatParameter(++i)); +} else if (eval.isCenterParameter(i)) { +var p = this.centerParameter(i); +value = Clazz_newFloatArray(-1, [p.x, p.y, p.z]); +} else { +value = eval.floatParameterSet(++i, 3, 3); +}i = eval.iToken; +break; +case 12290: +case 10: +case 1073742325: +key = "atoms"; +value = this.atomExpressionAt(i); +i = eval.iToken; +break; +case 1765808134: +case 603979967: +case 1073742074: +translucentLevel = this.getColorTrans(eval, i, true, colorArgb); +i = eval.iToken; +continue; +case 1073742075: +value = this.paramAsStr(++i); +break; +} +if (value == null) this.invArg(); +this.setShapeProperty(20, key.toLowerCase(), value); +} +this.finalizeObject(20, colorArgb[0], translucentLevel, 0, false, null, 0, null); +this.setShapeProperty(20, "thisID", null); +}); +Clazz_defineMethod(c$, "image", +function(){ +if (!this.chk) this.vwr.getConsole(); +var pt = 1; +var id = null; +if (this.tokAt(1) == 1073741974) { +id = this.e.optParameterAsString(++pt); +pt++; +}var fileName = this.e.optParameterAsString(pt); +var isClose = this.e.optParameterAsString(this.slen - 1).equalsIgnoreCase("close"); +if (!isClose && (this.slen == pt || this.slen == pt + 2)) { +var width = (this.slen == pt + 2 ? this.intParameter(pt++) : -1); +var height = (width < 0 ? -1 : this.intParameter(pt)); +var params = new java.util.Hashtable(); +params.put("fileName", "\1\1" + id); +params.put("backgroundColor", Integer.$valueOf(this.vwr.getBackgroundArgb())); +params.put("type", "png"); +params.put("quality", Integer.$valueOf(-1)); +params.put("width", Integer.$valueOf(width)); +params.put("height", Integer.$valueOf(height)); +if (!this.chk) this.vwr.processWriteOrCapture(params); +return; +}pt++; +if (isClose) { +switch (this.slen) { +case 2: +fileName = "closeall"; +break; +case 3: +case 4: +break; +default: +this.checkLength(0); +} +}if (!this.chk) this.vwr.fm.loadImage(isClose ? "\1close" : fileName, "\1" + fileName + "\1" + ("".equals(id) || id == null ? null : id), false); +}); +Clazz_defineMethod(c$, "invertSelected", +function(){ +var e = this.e; +var pt = null; +var plane = null; +var bs = null; +var iAtom = -2147483648; +var ipt = 1; +switch (this.tokAt(1)) { +case 0: +if (this.chk) return; +bs = this.vwr.bsA(); +pt = this.vwr.ms.getAtomSetCenter(bs); +this.vwr.invertAtomCoord(pt, null, bs, -1, false); +return; +case 528443: +case 1153433601: +ipt++; +case 10: +case 1073742325: +case 12290: +bs = this.atomExpressionAt(ipt); +if (!e.isAtomExpression(e.iToken + 1)) { +e.checkLengthErrorPt(e.iToken + 1, e.iToken + 1); +if (!this.chk) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +this.vwr.invertAtomCoord(null, null, bs, i, false); +} +}return; +}iAtom = bs.nextSetBit(0); +bs = this.atomExpressionAt(e.iToken + 1); +break; +case 134217751: +pt = e.centerParameter(2, null); +break; +case 134217750: +plane = e.planeParameter(1, false); +break; +case 134219777: +plane = e.hklParameter(2, null, true); +break; +} +e.checkLengthErrorPt(e.iToken + 1, 1); +if (plane == null && pt == null && iAtom == -2147483648) this.invArg(); +if (this.chk) return; +if (iAtom == -1) return; +this.vwr.invertSelected(pt, plane, iAtom, bs); +}); +Clazz_defineMethod(c$, "mapProperty", +function(){ +var bsFrom; +var bsTo; +var property1; +var property2; +var mapKey; +var tokProp1 = 0; +var tokProp2 = 0; +var tokKey = 0; +var e = this.e; +while (true) { +if (this.tokAt(1) == 1113589787) { +bsFrom = this.vwr.bsA(); +bsTo = this.atomExpressionAt(2); +property1 = property2 = "selected"; +} else { +bsFrom = this.atomExpressionAt(1); +if (this.tokAt(++e.iToken) != 1073742336 || !JS.T.tokAttr(tokProp1 = this.tokAt(++e.iToken), 1077936128)) break; +property1 = this.paramAsStr(e.iToken); +bsTo = this.atomExpressionAt(++e.iToken); +if (this.tokAt(++e.iToken) != 1073742336 || !JS.T.tokAttr(tokProp2 = this.tokAt(++e.iToken), 2048)) break; +property2 = this.paramAsStr(e.iToken); +}if (JS.T.tokAttr(tokKey = this.tokAt(e.iToken + 1), 1077936128)) mapKey = this.paramAsStr(++e.iToken); + else mapKey = JS.T.nameOf(tokKey = 1094715393); +e.checkLast(e.iToken); +if (this.chk) return; +var bsOut = null; +this.showString("mapping " + property1.toUpperCase() + " for " + bsFrom.cardinality() + " atoms to " + property2.toUpperCase() + " for " + bsTo.cardinality() + " atoms using " + mapKey.toUpperCase()); +if (JS.T.tokAttrOr(tokProp1, 1094713344, 1111490560) && JS.T.tokAttrOr(tokProp2, 1094713344, 1111490560) && JS.T.tokAttrOr(tokKey, 1094713344, 1111490560)) { +var data1 = this.getBitsetPropertyFloat(bsFrom, tokProp1 | 224, null, NaN, NaN); +var data2 = this.getBitsetPropertyFloat(bsFrom, tokKey | 224, null, NaN, NaN); +var data3 = this.getBitsetPropertyFloat(bsTo, tokKey | 224, null, NaN, NaN); +var isProperty = (tokProp2 == 1715472409); +var dataOut = Clazz_newFloatArray (isProperty ? this.vwr.ms.ac : data3.length, 0); +bsOut = new JU.BS(); +if (data1.length == data2.length) { +var ht = new java.util.Hashtable(); +for (var i = 0; i < data1.length; i++) { +ht.put(Float.$valueOf(data2[i]), Float.$valueOf(data1[i])); +} +var pt = -1; +var nOut = 0; +for (var i = 0; i < data3.length; i++) { +pt = bsTo.nextSetBit(pt + 1); +var F = ht.get(Float.$valueOf(data3[i])); +if (F == null) continue; +bsOut.set(pt); +dataOut[(isProperty ? pt : nOut)] = F.floatValue(); +nOut++; +} +if (isProperty) this.vwr.setData(property2, Clazz_newArray(-1, [property2, dataOut, bsOut, Integer.$valueOf(1), Boolean.TRUE]), this.vwr.ms.ac, 0, 0, 2147483647, 0); + else if (!JS.T.tokAttr(tokProp2, 2048)) this.error(56); + else this.vwr.setAtomProperty(bsOut, tokProp2, 0, 0, null, dataOut, null); +}}if (bsOut == null) { +var format = "{" + mapKey + "=%[" + mapKey + "]}." + property2 + " = %[" + property1 + "]"; +var data = this.getBitsetIdent(bsFrom, format, null, false, 2147483647, false); +var sb = new JU.SB(); +for (var i = 0; i < data.length; i++) if (data[i].indexOf("null") < 0) sb.append(data[i]).appendC('\n'); + +if (JU.Logger.debugging) JU.Logger.debug(sb.toString()); +var bsSubset = JU.BSUtil.copy(this.vwr.slm.bsSubset); +this.vwr.slm.setSelectionSubset(bsTo); +try { +e.runScript(sb.toString()); +} catch (e$$) { +if (Clazz_exceptionOf(e$$, Exception)){ +var ex = e$$; +{ +this.vwr.slm.setSelectionSubset(bsSubset); +e.errorStr(-1, "Error: " + ex.getMessage()); +} +} else if (Clazz_exceptionOf(e$$, Error)){ +var er = e$$; +{ +this.vwr.slm.setSelectionSubset(bsSubset); +e.errorStr(-1, "Error: " + er.toString()); +} +} else { +throw e$$; +} +} +this.vwr.slm.setSelectionSubset(bsSubset); +}this.showString("DONE"); +return; +} +this.invArg(); +}); +Clazz_defineMethod(c$, "minimize", +function(isModelkit){ +var bsSelected = null; +var steps = 2147483647; +var crit = 0; +var addHydrogen = false; +var isSilent = false; +var bsFixed = null; +var selectedOnly = false; +var groupOnly = false; +var minimizer = this.vwr.getMinimizer(false); +var range = 0; +for (var i = (isModelkit ? 2 : 1); i < this.slen; i++) { +switch (this.getToken(i).tok) { +case 1073741905: +crit = this.floatParameter(++i); +continue; +case 1073742114: +range = this.floatParameter(++i); +continue; +case 1073741935: +steps = 0; +continue; +case 1073741874: +case 1073742162: +this.checkLength(2); +if (this.chk || minimizer == null) return; +minimizer.setProperty(this.paramAsStr(i), null); +return; +case 1073741882: +this.checkLength(2); +if (this.chk || minimizer == null) return; +minimizer.setProperty("clear", null); +return; +case 1073741894: +if (i != 1) this.invArg(); +var n = 0; +var targetValue = 0; +var aList = Clazz_newIntArray (5, 0); +if (this.tokAt(++i) == 1073741882) { +this.checkLength(3); +} else { +while (n < 4 && !this.isFloatParameter(i)) { +aList[++n] = this.atomExpressionAt(i).nextSetBit(0); +i = this.e.iToken + 1; +} +aList[0] = n; +if (n == 1) this.invArg(); +targetValue = this.floatParameter(this.e.checkLast(i)); +}if (!this.chk) this.vwr.getMinimizer(true).setProperty("constraint", Clazz_newArray(-1, [aList, Float.$valueOf(targetValue)])); +return; +case 12293: +if (i != 1) this.invArg(); +if (this.slen == ++i) { +if (!this.chk) { +var bs = this.vwr.getMinimizer(true).getProperty("fixed", 0); +if (bs == null) { +this.e.showString("no atoms are fixed for minimization"); +} else { +n = bs.cardinality(); +this.e.showString(n + (n == 1 ? " atom is" : " atoms are") + " fixed for minimization: " + bs + "\nunfix them with MINIMIZE FIX NONE"); +}}return; +}bsFixed = this.atomExpressionAt(i); +if (bsFixed.nextSetBit(0) < 0) bsFixed = null; +i = this.e.iToken; +if (!this.chk) this.vwr.getMinimizer(true).setProperty("fixed", bsFixed); +if (i + 1 == this.slen) return; +continue; +case 1073741828: +addHydrogen = true; +continue; +case 1073742072: +case 1113589787: +selectedOnly = true; +break; +case 1086324742: +groupOnly = true; +break; +case 1073742148: +isSilent = true; +break; +case 266298: +steps = this.intParameter(++i); +continue; +case 10: +case 1073742325: +selectedOnly = true; +case 1275082241: +if (this.e.theTok == 1275082241) i++; +bsSelected = this.atomExpressionAt(i); +i = this.e.iToken; +if (this.tokAt(i + 1) == 1073742072) { +i++; +selectedOnly = true; +}continue; +default: +this.invArg(); +break; +} +} +if (isModelkit && (addHydrogen || selectedOnly || groupOnly)) this.invArg(); +if (!this.chk) try { +this.vwr.minimize(this.e, steps, crit, bsSelected, bsFixed, null, range, (addHydrogen ? 16 : 0) | (isModelkit ? 256 : 0) | (selectedOnly ? 32 : 0) | (groupOnly ? 64 : 0) | (isSilent ? 1 : 0)); +} catch (e1) { +if (Clazz_exceptionOf(e1, Exception)){ +throw new JS.ScriptInterruption(this.e, "minimize", 1); +} else { +throw e1; +} +} +}, "~B"); +Clazz_defineMethod(c$, "modulation", +function(){ +var qtOffset = null; +var eval = this.e; +var mod = true; +var isQ = false; +var bs = null; +var i = 1; +switch (this.getToken(i).tok) { +case 1073742334: +mod = false; +case 0: +case 1073742335: +break; +case 12290: +case 10: +case 1073742325: +bs = this.atomExpressionAt(1); +switch (this.tokAt(eval.iToken + 1)) { +case 0: +break; +case 1073742334: +mod = false; +case 1073742335: +eval.iToken++; +break; +} +eval.checkLast(eval.iToken); +break; +case 1073742332: +case 8: +qtOffset = eval.getPoint3f(1, false, true); +isQ = (this.tokAt(eval.iToken + 1) == 1073742335); +break; +default: +var s = eval.theToken.value.toString(); +i++; +if (s.equalsIgnoreCase("t")) { +eval.theTok = 3; +} else if (s.equalsIgnoreCase("m") || s.equalsIgnoreCase("q")) { +eval.theTok = 2; +} else { +this.invArg(); +}case 3: +case 2: +switch (eval.theTok) { +case 3: +if (this.isFloatParameter(i)) { +var t1 = this.floatParameter(i); +qtOffset = JU.P3.new3(t1, t1, t1); +} else { +qtOffset = eval.getPoint3f(i, false, true); +}break; +case 2: +if (this.tokAt(i) == 2) { +var t = this.intParameter(i); +qtOffset = JU.P3.new3(t, t, t); +} else { +qtOffset = eval.getPoint3f(i, false, true); +}isQ = true; +break; +} +break; +case 536875059: +var scale = this.floatParameter(2); +if (!this.chk) this.vwr.setFloatProperty("modulationScale", scale); +return; +} +if (!this.chk) { +this.vwr.tm.setVibrationPeriod(0); +this.vwr.setModulation(bs, mod, qtOffset, isQ); +}}); +Clazz_defineMethod(c$, "mutate", +function(){ +var i = this.e.iToken; +var bs; +var alphaType = null; +var sequence = null; +var phipsi = null; +var isCreate = false; +switch (this.tokAt(++i)) { +case 1073741904: +alphaType = "alpha"; +isCreate = true; +bs = null; +switch (this.tokAt(++i)) { +case 0: +this.invArg(); +break; +default: +sequence = this.e.paramAsStr(i); +i = this.e.iToken; +switch (this.tokAt(i + 1)) { +case 0: +break; +case 268437504: +case 1073742195: +case 7: +alphaType = null; +phipsi = this.e.floatParameterSet(++i, 2, 2147483647); +if (phipsi.length % 2 == 1) this.invArg(); +i = this.e.iToken; +break; +default: +alphaType = this.e.paramAsStr(++i); +i = this.e.iToken; +break; +} +break; +} +break; +case 2: +this.st[1] = JS.T.o(4, "" + this.st[1].value); +default: +bs = this.atomExpressionAt(i); +i = ++this.e.iToken; +break; +case 268441089: +bs = this.vwr.getFrameAtoms(); +i = ++this.e.iToken; +break; +} +if (!this.chk && bs != null) { +bs.and(this.vwr.getFrameAtoms()); +var iatom = bs.nextSetBit(0); +if (iatom < 0) this.invArg(); +var imodel = this.vwr.ms.at[iatom].mi; +if (this.vwr.ms.isTrajectory(imodel) || !this.vwr.ms.am[imodel].isBioModel) return; +}if (sequence == null) sequence = this.e.optParameterAsString(i); +this.e.checkLast(i); +if (this.chk) return; +var isOneLetter = sequence.startsWith("~"); +var isFile = (!isOneLetter && !isCreate && (sequence.indexOf(".") >= 0 || sequence.indexOf("-") < 0 && sequence.length > 3 && sequence.startsWith("=="))); +var list; +if (isFile) { +list = Clazz_newArray(-1, [sequence]); +sequence = null; +} else { +sequence = JU.PT.replaceAllCharacters(sequence, ",; \t\n", " ").trim().toUpperCase(); +if (!isOneLetter && sequence.indexOf("-") >= 0) { +list = JU.PT.split(sequence, "-"); +} else { +if (isOneLetter || sequence.length != 3 || !this.vwr.getJBR().isKnownPDBGroup(sequence, 20)) sequence = this.vwr.getJBR().toStdAmino3(isOneLetter ? sequence.substring(1) : sequence); +list = JU.PT.getTokens(sequence); +}}this.e.iToken = this.e.slen; +if (list.length > 0 && !this.vwr.getJBR().getBioModelSet(this.vwr.ms).mutate(bs, sequence, list, alphaType, phipsi)) this.invArg(); +}); +Clazz_defineMethod(c$, "navigate", +function(){ +var eval = this.e; +if (this.slen == 1) { +eval.setBooleanProperty("navigationMode", true); +return; +}var rotAxis = JU.V3.new3(0, 1, 0); +var list = new JU.Lst(); +var pt; +if (this.slen == 2) { +switch (this.getToken(1).tok) { +case 1073742335: +case 1073742334: +if (this.chk) return; +eval.setObjectMad10(34, "axes", 10); +this.setShapeProperty(34, "position", JU.P3.new3(50, 50, 3.4028235E38)); +eval.setBooleanProperty("navigationMode", true); +this.vwr.tm.setNavOn(eval.theTok == 1073742335); +return; +case 1073742162: +if (!this.chk) this.vwr.tm.setNavXYZ(0, 0, 0); +return; +case 8: +case 1112152078: +break; +default: +this.invArg(); +} +}if (!this.chk && !this.vwr.getBoolean(603979889)) eval.setBooleanProperty("navigationMode", true); +for (var i = 1; i < this.slen; i++) { +var timeSec = (this.isFloatParameter(i) ? this.floatParameter(i++) : 2); +if (timeSec < 0) this.invArg(); +if (!this.chk && timeSec > 0) eval.refresh(false); +switch (this.getToken(i).tok) { +case 8: +case 1073742332: +pt = this.getPoint3f(i, true); +eval.iToken++; +if (eval.iToken != this.slen) this.invArg(); +if (!this.chk) this.vwr.tm.setNavXYZ(pt.x, pt.y, pt.z); +return; +case 554176526: +var depth = this.floatParameter(++i); +if (!this.chk) list.addLast( Clazz_newArray(-1, [Integer.$valueOf(554176526), Float.$valueOf(timeSec), Float.$valueOf(depth)])); +continue; +case 12289: +pt = this.centerParameter(++i); +i = eval.iToken; +if (!this.chk) list.addLast( Clazz_newArray(-1, [Integer.$valueOf(134217751), Float.$valueOf(timeSec), pt])); +continue; +case 528432: +switch (this.getToken(++i).tok) { +case 1111492629: +rotAxis.set(1, 0, 0); +i++; +break; +case 1111492630: +rotAxis.set(0, 1, 0); +i++; +break; +case 1111492631: +rotAxis.set(0, 0, 1); +i++; +break; +case 8: +case 1073742332: +rotAxis.setT(this.getPoint3f(i, true)); +i = eval.iToken + 1; +break; +case 1073741824: +this.invArg(); +break; +} +var degrees = this.floatParameter(i); +if (!this.chk) list.addLast( Clazz_newArray(-1, [Integer.$valueOf(528432), Float.$valueOf(timeSec), rotAxis, Float.$valueOf(degrees)])); +continue; +case 4160: +var x = NaN; +var y = NaN; +if (this.isFloatParameter(++i)) { +x = this.floatParameter(i); +y = this.floatParameter(++i); +} else { +switch (this.tokAt(i)) { +case 1111492629: +x = this.floatParameter(++i); +break; +case 1111492630: +y = this.floatParameter(++i); +break; +default: +pt = this.centerParameter(i); +i = eval.iToken; +if (!this.chk) list.addLast( Clazz_newArray(-1, [Integer.$valueOf(4160), Float.$valueOf(timeSec), pt])); +continue; +} +}if (!this.chk) list.addLast( Clazz_newArray(-1, [Integer.$valueOf(268441090), Float.$valueOf(timeSec), Float.$valueOf(x), Float.$valueOf(y)])); +continue; +case 268441088: +continue; +case 1112152078: +var pathGuide; +var vp = new JU.Lst(); +var bs; +if (eval.isAtomExpression(i + 1)) { +bs = this.atomExpressionAt(++i); +i = eval.iToken; +} else { +bs = this.vwr.bsA(); +}if (this.chk) return; +this.vwr.getPolymerPointsAndVectors(bs, vp); +var n; +if ((n = vp.size()) > 0) { +pathGuide = new Array(n); +for (var j = 0; j < n; j++) { +pathGuide[j] = vp.get(j); +} +list.addLast( Clazz_newArray(-1, [Integer.$valueOf(1112152078), Float.$valueOf(timeSec), pathGuide])); +continue; +}break; +case 1073742084: +var path; +var theta = null; +if (this.getToken(i + 1).tok == 1073742330) { +i++; +var pathID = eval.objectNameParameter(++i); +if (this.chk) return; +this.setShapeProperty(22, "thisID", pathID); +path = this.getShapeProperty(22, "vertices"); +eval.refresh(false); +if (path == null) this.invArg(); +var indexStart = Clazz_floatToInt(this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 0); +var indexEnd = Clazz_floatToInt(this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 2147483647); +list.addLast( Clazz_newArray(-1, [Integer.$valueOf(1073742084), Float.$valueOf(timeSec), path, theta, Clazz_newIntArray(-1, [indexStart, indexEnd])])); +continue; +}var v = new JU.Lst(); +while (eval.isCenterParameter(i + 1)) { +v.addLast(this.centerParameter(++i)); +i = eval.iToken; +} +if (v.size() > 0) { +path = v.toArray( new Array(v.size())); +if (!this.chk) list.addLast( Clazz_newArray(-1, [Integer.$valueOf(1073742084), Float.$valueOf(timeSec), path, theta, Clazz_newIntArray(-1, [0, 2147483647])])); +continue; +}default: +this.invArg(); +} +} +if (!this.chk && !this.vwr.isJmolDataFrame()) this.vwr.tm.navigateList(eval, list); +}); +Clazz_defineMethod(c$, "plot", +function(args){ +var e = this.e; +var modelIndex = this.vwr.am.cmi; +if (modelIndex < 0) e.errorStr(30, "plot"); +modelIndex = this.vwr.ms.getJmolDataSourceFrame(modelIndex); +var pt = args.length - 1; +var isReturnOnly = (args !== this.st); +var pdbFormat = true; +var statementSave = this.st; +if (isReturnOnly) e.st = this.st = args; +var tokCmd = (isReturnOnly ? 134222350 : args[0].tok); +var pt0 = (isReturnOnly || tokCmd == 134221850 || tokCmd == 4138 ? 0 : 1); +var filename = null; +var makeNewFrame = true; +var isDraw = false; +switch (tokCmd) { +case 4133: +case 134221850: +case 4138: +break; +case 135176: +makeNewFrame = false; +isDraw = true; +break; +case 134222350: +makeNewFrame = false; +pdbFormat = false; +break; +case 134221856: +makeNewFrame = false; +if (JS.CmdExt.tokAtArray(pt, args) == 4) { +filename = this.stringParameter(pt--); +} else if (JS.CmdExt.tokAtArray(pt - 1, args) == 1073742336) { +filename = this.paramAsStr(pt - 2) + "." + this.paramAsStr(pt); +pt -= 3; +} else { +e.st = this.st = statementSave; +e.iToken = this.st.length; +this.error(13); +}e.slen = this.slen = pt + 1; +break; +} +var qFrame = ""; +var parameters = null; +var stateScript = ""; +var isQuaternion = false; +var isDerivative = false; +var isSecondDerivative = false; +var isRamachandranRelative = false; +var props = new Array(3); +var propToks = Clazz_newIntArray (3, 0); +var bs = JU.BSUtil.copy(this.vwr.bsA()); +var preSelected = "; select " + JU.Escape.eBS(bs) + ";\n "; +var type = e.optParameterAsString(pt).toLowerCase(); +var minXYZ = null; +var maxXYZ = null; +var format = null; +var tok = JS.CmdExt.tokAtArray(pt0, args); +if (tok == 4) tok = JS.T.getTokFromName(args[pt0].value); +switch (tok) { +default: +e.iToken = 1; +this.invArg(); +break; +case 134221834: +e.iToken = 1; +type = "data"; +preSelected = ""; +break; +case 1715472409: +e.iToken = pt0 + 1; +for (var i = 0; i < 3; i++) { +switch (this.tokAt(e.iToken)) { +case 4: +propToks[i] = JS.T.getTokFromName(e.getToken(e.iToken).value); +break; +default: +propToks[i] = this.tokAt(e.iToken); +break; +case 0: +if (i == 0) this.invArg(); +case 1287653388: +case 32: +case 64: +i = 2; +continue; +} +if (propToks[i] != 1715472409 && !JS.T.tokAttr(propToks[i], 1077936128)) this.invArg(); +props[i] = this.getToken(e.iToken).value.toString(); +e.iToken++; +} +if (this.tokAt(e.iToken) == 1287653388) { +format = this.stringParameter(++e.iToken); +pdbFormat = false; +e.iToken++; +}if (this.tokAt(e.iToken) == 32) { +minXYZ = this.getPoint3f(++e.iToken, false); +e.iToken++; +}if (this.tokAt(e.iToken) == 64) { +maxXYZ = this.getPoint3f(++e.iToken, false); +e.iToken++; +}type = "property " + props[0] + (props[1] == null ? "" : " " + props[1]) + (props[2] == null ? "" : " " + props[2]); +if (bs.nextSetBit(0) < 0) bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +stateScript = "select " + JU.Escape.eBS(bs) + ";\n "; +break; +case 4138: +if (type.equalsIgnoreCase("draw")) { +isDraw = true; +type = e.optParameterAsString(--pt).toLowerCase(); +}isRamachandranRelative = (pt > pt0 && type.startsWith("r")); +type = "ramachandran" + (isRamachandranRelative ? " r" : "") + (tokCmd == 135176 ? " draw" : ""); +break; +case 134221850: +case 136314895: +qFrame = " \"" + this.vwr.getQuaternionFrame() + "\""; +stateScript = "set quaternionFrame" + qFrame + ";\n "; +isQuaternion = true; +if (type.equalsIgnoreCase("draw")) { +isDraw = true; +type = e.optParameterAsString(--pt).toLowerCase(); +}isDerivative = (type.startsWith("deriv") || type.startsWith("diff")); +isSecondDerivative = (isDerivative && type.indexOf("2") > 0); +if (isDerivative) pt--; +if (type.equalsIgnoreCase("helix") || type.equalsIgnoreCase("axis")) { +isDraw = true; +isDerivative = true; +pt = -1; +}type = ((pt <= pt0 ? "" : e.optParameterAsString(pt)) + "w").substring(0, 1); +if (type.equals("a") || type.equals("r")) isDerivative = true; +if (!JU.PT.isOneOf(type, ";w;x;y;z;r;a;")) e.evalError("QUATERNION [w,x,y,z,a,r] [difference][2]", null); +type = "quaternion " + type + (isDerivative ? " difference" : "") + (isSecondDerivative ? "2" : "") + (isDraw ? " draw" : ""); +break; +} +this.st = statementSave; +if (this.chk) return ""; +if (makeNewFrame) { +stateScript += "plot " + type; +var ptDataFrame = this.vwr.ms.getJmolDataFrameIndex(modelIndex, stateScript); +if (ptDataFrame > 0 && tokCmd != 134221856 && tokCmd != 134222350) { +this.vwr.setCurrentModelIndexClear(ptDataFrame, true); +return ""; +}}var dataX = null; +var dataY = null; +var dataZ = null; +var propData = new Array(3); +if (tok == 1715472409) { +dataX = this.getBitsetPropertyFloat(bs, propToks[0] | 224, propToks[0] == 1715472409 ? props[0] : null, (minXYZ == null ? NaN : minXYZ.x), (maxXYZ == null ? NaN : maxXYZ.x)); +propData[0] = props[0] + " " + JU.Escape.eAF(dataX); +if (props[1] != null) { +dataY = this.getBitsetPropertyFloat(bs, propToks[1] | 224, propToks[1] == 1715472409 ? props[1] : null, (minXYZ == null ? NaN : minXYZ.y), (maxXYZ == null ? NaN : maxXYZ.y)); +propData[1] = props[1] + " " + JU.Escape.eAF(dataY); +}if (props[2] != null) { +dataZ = this.getBitsetPropertyFloat(bs, propToks[2] | 224, propToks[2] == 1715472409 ? props[2] : null, (minXYZ == null ? NaN : minXYZ.z), (maxXYZ == null ? NaN : maxXYZ.z)); +propData[2] = props[2] + " " + JU.Escape.eAF(dataZ); +}if (minXYZ == null) minXYZ = JU.P3.new3(this.getPlotMinMax(dataX, false, propToks[0]), this.getPlotMinMax(dataY, false, propToks[1]), this.getPlotMinMax(dataZ, false, propToks[2])); +if (maxXYZ == null) maxXYZ = JU.P3.new3(this.getPlotMinMax(dataX, true, propToks[0]), this.getPlotMinMax(dataY, true, propToks[1]), this.getPlotMinMax(dataZ, true, propToks[2])); +JU.Logger.info("plot min/max: " + minXYZ + " " + maxXYZ); +var center = null; +var factors = null; +if (pdbFormat) { +factors = JU.P3.new3(1, 1, 1); +center = new JU.P3(); +center.ave(maxXYZ, minXYZ); +factors.sub2(maxXYZ, minXYZ); +factors.set(factors.x / 200, factors.y / 200, factors.z / 200); +if (JS.T.tokAttr(propToks[0], 1094713344)) { +factors.x = 1; +center.x = 0; +} else if (factors.x > 0.1 && factors.x <= 10) { +factors.x = 1; +}if (JS.T.tokAttr(propToks[1], 1094713344)) { +factors.y = 1; +center.y = 0; +} else if (factors.y > 0.1 && factors.y <= 10) { +factors.y = 1; +}if (JS.T.tokAttr(propToks[2], 1094713344)) { +factors.z = 1; +center.z = 0; +} else if (factors.z > 0.1 && factors.z <= 10) { +factors.z = 1; +}if (props[2] == null || props[1] == null) center.z = minXYZ.z = maxXYZ.z = factors.z = 0; +for (var i = 0; i < dataX.length; i++) dataX[i] = (dataX[i] - center.x) / factors.x; + +if (props[1] != null) for (var i = 0; i < dataY.length; i++) dataY[i] = (dataY[i] - center.y) / factors.y; + +if (props[2] != null) for (var i = 0; i < dataZ.length; i++) dataZ[i] = (dataZ[i] - center.z) / factors.z; + +}parameters = Clazz_newArray(-1, [bs, dataX, dataY, dataZ, minXYZ, maxXYZ, factors, center, format, propData]); +}if (tokCmd == 134221856) return this.vwr.writeFileData(filename, "PLOT_" + type, modelIndex, parameters); +var data = (type.equals("data") ? "1 0 H 0 0 0 # Jmol PDB-encoded data" : this.vwr.getPdbData(modelIndex, type, null, parameters, null, true)); +if (tokCmd == 134222350) return data; +if (JU.Logger.debugging) JU.Logger.debug(data); +if (tokCmd == 135176) { +e.runScript(data); +return ""; +}var savedFileInfo = this.vwr.fm.getFileInfo(); +var oldAppendNew = this.vwr.getBoolean(603979792); +this.vwr.g.appendNew = true; +var isOK = (data != null && this.vwr.openStringInlineParamsAppend(data, null, true) == null); +this.vwr.g.appendNew = oldAppendNew; +this.vwr.fm.setFileInfo(savedFileInfo); +if (!isOK) return ""; +var modelCount = this.vwr.ms.mc; +this.vwr.ms.setJmolDataFrame(stateScript, modelIndex, modelCount - 1); +if (tok != 1715472409) stateScript += ";\n" + preSelected; +var ss = this.vwr.addStateScript(stateScript, true, false); +var radius = 150; +var script; +switch (tok) { +default: +script = "frame 0.0; frame last; reset;select visible;wireframe only;"; +radius = 10; +break; +case 1715472409: +this.vwr.setFrameTitle(modelCount - 1, type + " plot for model " + this.vwr.getModelNumberDotted(modelIndex)); +script = "frame 0.0; frame last; reset;select visible; spacefill 3.0; wireframe 0;draw plotAxisX" + modelCount + " {100 -100 -100} {-100 -100 -100} \"" + props[0] + "\";" + "draw plotAxisY" + modelCount + " {-100 100 -100} {-100 -100 -100} \"" + props[1] + "\";"; +if (props[2] != null) script += "draw plotAxisZ" + modelCount + " {-100 -100 100} {-100 -100 -100} \"" + props[2] + "\";"; +break; +case 4138: +this.vwr.setFrameTitle(modelCount - 1, "ramachandran plot for model " + this.vwr.getModelNumberDotted(modelIndex)); +script = "frame 0.0; frame last; reset;select visible; color structure; spacefill 3.0; wireframe 0;draw ramaAxisX" + modelCount + " {100 0 0} {-100 0 0} \"phi\";" + "draw ramaAxisY" + modelCount + " {0 100 0} {0 -100 0} \"psi\";"; +break; +case 134221850: +case 136314895: +this.vwr.setFrameTitle(modelCount - 1, type.$replace('w', ' ') + qFrame + " for model " + this.vwr.getModelNumberDotted(modelIndex)); +var color = (JU.C.getHexCode(this.vwr.cm.colixBackgroundContrast)); +script = "frame 0.0; frame last; reset;select visible; wireframe 0; spacefill 3.0; isosurface quatSphere" + modelCount + " color " + color + " sphere 100.0 mesh nofill frontonly translucent 0.8;" + "draw quatAxis" + modelCount + "X {100 0 0} {-100 0 0} color red \"x\";" + "draw quatAxis" + modelCount + "Y {0 100 0} {0 -100 0} color green \"y\";" + "draw quatAxis" + modelCount + "Z {0 0 100} {0 0 -100} color blue \"z\";" + "color structure;" + "draw quatCenter" + modelCount + "{0 0 0} scale 0.02;"; +break; +} +e.runScript(script + preSelected); +ss.setModelIndex(this.vwr.am.cmi); +this.vwr.setRotationRadius(radius, true); +e.sm.loadShape(31); +this.showString("frame " + this.vwr.getModelNumberDotted(modelCount - 1) + (type.length > 0 ? " created: " + type + (isQuaternion ? qFrame : "") : "")); +return ""; +}, "~A"); +Clazz_defineMethod(c$, "polyhedra", +function(){ +var eval = this.e; +var haveBonds = (this.slen == 1); +var haveCenter = false; +var needsGenerating = haveBonds; +var onOffDelete = false; +var typeSeen = false; +var edgeParameterSeen = false; +var scale = NaN; +var nAtomSets = 0; +eval.sm.loadShape(21); +this.setShapeProperty(21, "init", Boolean.TRUE); +var translucentLevel = 3.4028235E38; +var radius = -1; +var colorArgb = Clazz_newIntArray(-1, [-2147483648]); +var noToParam = -1; +var atomPt = -1; +var offset = null; +var foffset = 0; +var id = null; +var ok = false; +var modifyOnly = false; +var faces = null; +var points = null; +if (this.slen == 2 && this.tokAt(1) == 1073742001) { +if (!this.chk) eval.showStringPrint(this.getShapeProperty(21, "list"), false); +return; +}for (var i = 1; i < this.slen; ++i) { +var propertyName = null; +var propertyValue = null; +switch (this.getToken(i).tok) { +case 1073742197: +scale = NaN; +case 1073741872: +var index = (this.e.theTok == 1073742197 ? -1 : (this.tokAt(i + 1) == 2 ? this.intParameter(++i) : 1)); +if (!this.chk) (J.api.Interface.getInterface("JU.BZone", this.vwr, "script")).createBZ(this.vwr, index, null, false, id, scale, foffset, offset); +return; +case 6: +propertyName = "info"; +propertyValue = (this.e.theToken).getMap(); +needsGenerating = true; +break; +case 134217751: +propertyName = "points"; +propertyValue = Float.$valueOf(this.tokAt(++i) == 1073742334 ? 0 : this.e.floatParameter(i)); +ok = true; +break; +case 536875059: +scale = this.floatParameter(++i); +ok = true; +continue; +case 1814695966: +if (id != null) this.invArg(); +propertyName = "unitCell"; +propertyValue = Boolean.TRUE; +needsGenerating = true; +break; +case 1073742072: +this.e.restrictSelected(false, false); +eval.theTok = 1073742335; +case 1073742335: +case 12291: +case 1073742334: +if (i + 1 != this.slen || needsGenerating || nAtomSets > 1) this.error(18); +propertyName = (eval.theTok == 1073742334 ? "off" : eval.theTok == 1073742335 ? "on" : "delete"); +onOffDelete = true; +break; +case 7: +if (id == null || needsGenerating) this.invArg(); +needsGenerating = true; +faces = this.getIntArray2(i); +points = this.getAllPoints(eval.iToken + 1, 3); +i = eval.iToken; +if (Clazz_instanceOf(points[0],"JM.Atom")) this.setShapeProperty(21, "model", Integer.$valueOf((points[0]).getModelIndex())); +propertyName = "definedFaces"; +propertyValue = Clazz_newArray(-1, [faces, points]); +break; +case 1073741961: +propertyName = "full"; +break; +case 2: +if (id != null) this.invArg(); +propertyName = "nVertices"; +propertyValue = Integer.$valueOf(this.intParameter(i)); +needsGenerating = true; +if (this.tokAt(i + 1) == 268436992) i++; +break; +case 1677721602: +if (id != null) this.invArg(); +if (nAtomSets > 0) this.invPO(); +needsGenerating = true; +propertyName = "bonds"; +haveBonds = true; +break; +case 1073741852: +if (radius != -1) this.invArg(); +radius = 0; +i--; +case 1665140738: +i++; +case 3: +if (id != null) this.invArg(); +if (nAtomSets > 0) this.invPO(); +propertyName = (radius <= 0 ? "radius" : "radius1"); +propertyValue = Float.$valueOf(radius = (radius == 0 ? 0 : this.floatParameter(i))); +needsGenerating = true; +break; +case 1073742066: +if (this.isFloatParameter(i + 1)) { +foffset = this.floatParameter(++i); +} else { +offset = this.e.centerParameter(++i, null); +i = eval.iToken; +}ok = true; +continue; +case 1073741937: +this.setShapeProperty(21, "collapsed", null); +case 1073742099: +case 1073741924: +propertyName = JS.T.nameOf(eval.theTok); +switch (this.tokAt(i + 1)) { +case 268440324: +case 268436992: +i++; +break; +} +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1094717454: +if (id == null) this.invArg(); +propertyName = "model"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +break; +case 1073742170: +if (nAtomSets > 1 || id != null && !haveCenter || noToParam == i) this.invPO(); +nAtomSets = 3; +if (eval.isAtomExpression(++i)) { +propertyName = (needsGenerating || haveCenter ? "to" : "toBitSet"); +propertyValue = this.atomExpressionAt(i); +} else if (eval.isArrayParameter(i)) { +propertyName = "toVertices"; +propertyValue = eval.getPointArray(i, -1, false); +} else { +this.error(19); +}i = eval.iToken; +needsGenerating = true; +break; +case 12290: +case 10: +case 1073742325: +if (typeSeen) this.invPO(); +switch (++nAtomSets) { +case 1: +if (id != null) this.invArg(); +propertyName = "centers"; +break; +case 2: +propertyName = "to"; +needsGenerating = true; +break; +default: +eval.bad(); +} +propertyValue = this.atomExpressionAt(i); +atomPt = i = eval.iToken; +needsGenerating = new Boolean (needsGenerating | (i + 1 == this.slen)).valueOf(); +break; +case 1073741948: +case 1073741886: +needsGenerating = true; +modifyOnly = (i == 1); +if (typeSeen) this.error(18); +typeSeen = true; +propertyName = (this.e.theTok == 1073741886 ? "collapsed" : null); +if (this.isFloatParameter(i + 1)) this.setShapeProperty(21, "faceCenterOffset", Float.$valueOf(this.floatParameter(++i))); +break; +case 1765808134: +case 603979967: +case 1073742074: +if (atomPt == i - 1) needsGenerating = true; +translucentLevel = this.getColorTrans(eval, i, true, colorArgb); +ok = true; +i = eval.iToken; +continue; +case 1073742044: +case 1073741933: +case 1073741956: +case 1073741934: +if (atomPt == i - 1) needsGenerating = true; +if (edgeParameterSeen) this.error(18); +edgeParameterSeen = true; +ok = true; +propertyName = JS.T.nameOf(eval.theTok); +break; +case 1073742182: +case 1073742060: +case 1073741861: +case 1073741958: +case 1073741964: +continue; +case 1073741974: +case 268441089: +case 1073741824: +case 4: +if (!eval.isColorParam(i)) { +if (i != 1) this.invPO(); +id = (eval.theTok == 1073741974 ? this.stringParameter(++i) : eval.optParameterAsString(i)); +if (this.tokAt(i + 1) == 268441089) id += this.paramAsStr(++i); +this.setShapeProperty(21, "thisID", id); +this.setShapeProperty(21, "model", Integer.$valueOf(this.vwr.am.cmi)); +if (!eval.isCenterParameter(i + 1)) continue; +propertyName = "center"; +propertyValue = this.centerParameter(++i); +i = eval.iToken; +haveCenter = true; +break; +}default: +if (eval.isColorParam(i)) { +if (atomPt == i - 1) needsGenerating = true; +colorArgb[0] = eval.getArgbParam(i); +if (eval.isCenterParameter(i)) noToParam = eval.iToken + 1; +i = eval.iToken; +continue; +}this.invArg(); +} +if (propertyName != null) this.setShapeProperty(21, propertyName, propertyValue); +if (onOffDelete) return; +} +if (needsGenerating) { +if (!typeSeen && haveBonds) this.setShapeProperty(21, "bonds", null); +this.setShapeProperty(21, "generate", Boolean.$valueOf(modifyOnly)); +} else if (!ok) { +this.error(19); +}if (offset != null) this.setShapeProperty(21, "offset", offset); +if (!Float.isNaN(scale)) this.setShapeProperty(21, "scale", Float.$valueOf(scale)); +if (colorArgb[0] != -2147483648) this.setShapeProperty(21, "colorThis", Integer.$valueOf(colorArgb[0])); +if (translucentLevel != 3.4028235E38) eval.setShapeTranslucency(21, "", "translucentThis", translucentLevel, null); +this.setShapeProperty(21, "init", Boolean.FALSE); +}); +Clazz_defineMethod(c$, "write", +function(args){ +var eval = this.e; +var pt = 1; +var pt0 = 1; +var scripts = null; +var msg = null; +var localPath = null; +var remotePath = null; +var type = "SPT"; +var isCommand = true; +var showOnly = false; +var isContact = false; +if (args == null) { +args = this.st; +showOnly = (this.vwr.isApplet && !this.vwr.isSignedApplet || !this.vwr.haveAccess(JV.Viewer.ACCESS.ALL) || this.vwr.fm.getPathForAllFiles().length > 0); +} else { +pt = pt0 = 0; +isCommand = false; +showOnly = !isCommand; +}var tok = JS.CmdExt.tokAtArray(pt, args); +if (tok == 4 && !isCommand) { +var t0 = JS.T.getTokenFromName(JS.SV.sValue(args[0]).toLowerCase()); +if (t0 != null) tok = t0.tok; +}switch (tok) { +case 0: +break; +case 134221850: +case 4138: +case 1715472409: +msg = this.plot(args); +return (showOnly ? msg : this.writeMsg(msg)); +case 134222850: +if (eval.isArrayParameter(pt + 1)) { +scripts = eval.stringParameterSet(++pt); +localPath = "."; +remotePath = "."; +pt0 = pt = eval.iToken + 1; +tok = this.tokAt(pt); +}break; +default: +type = JS.SV.sValue(this.tokenAt(pt, args)).toUpperCase(); +} +var driverList = this.vwr.getExportDriverList(); +var data = null; +var argCount = (isCommand ? this.slen : args.length); +var type2 = ""; +var val = null; +var is2D = false; +var tVar = null; +var nVibes = 0; +var sceneType = null; +var isCoord = false; +var bsFrames = null; +var width = -1; +var height = -1; +var isExport = false; +var fileName = null; +var quality = -2147483648; +if (tok != 0 && isCommand && this.slen > 1 && this.tokAt(this.slen - 2) == 1073741848) { +type = this.paramAsStr(this.slen - 1).toUpperCase(); +pt0 = argCount; +argCount -= 2; +tok = 0; +}switch (tok) { +case 0: +break; +case 15: +case 6: +type = "VAR"; +tVar = this.tokenAt(pt++, args); +break; +case 1073741984: +type = "INLINE"; +data = JS.SV.sValue(this.tokenAt(++pt, args)); +pt++; +break; +case 1275068447: +type = "PGRP"; +pt++; +type2 = JS.SV.sValue(this.tokenAt(pt, args)).toLowerCase(); +if (type2.equals("draw")) pt++; +break; +case 1073742329: +pt++; +isCoord = true; +break; +case 1073742158: +case 134222850: +val = JS.SV.sValue(this.tokenAt(++pt, args)).toLowerCase(); +while (val.equals("localpath") || val.equals("remotepath")) { +if (val.equals("localpath")) localPath = JS.SV.sValue(this.tokenAt(++pt, args)); + else remotePath = JS.SV.sValue(this.tokenAt(++pt, args)); +val = JS.SV.sValue(this.tokenAt(++pt, args)).toLowerCase(); +} +type = "SPT"; +break; +case 1228935687: +case 134320141: +case 1610616855: +case 135180: +case 1073742015: +case 1073742018: +case 1073877011: +case 1073877010: +case 135188: +pt++; +break; +case 1073741991: +type = "ZIPALL"; +pt++; +break; +case 36868: +type = "VAR"; +pt += 2; +break; +case 1073741929: +case 4115: +case 4120: +case 1073742062: +case 1073742139: +case 4166: +case 1073741824: +case 4: +switch (tok) { +case 4115: +var bsAtoms; +if (pt + 1 < argCount && args[++pt].tok == 1073742325 || args[pt].tok == 10) { +bsAtoms = eval.atomExpression(args, pt, 0, true, false, null, true); +pt = eval.iToken + 1; +} else { +bsAtoms = this.vwr.getAllAtoms(); +}if (!this.chk) bsFrames = this.vwr.ms.getModelBS(bsAtoms, true); +break; +case 1073741929: +tok = 4120; +is2D = true; +case 4120: +type = "IMAGE"; +pt++; +break; +case 1073742139: +val = JS.SV.sValue(this.tokenAt(++pt, args)).toUpperCase(); +if (JU.PT.isOneOf(val, ";PNG;PNGJ;")) { +sceneType = val; +pt++; +} else { +sceneType = "PNG"; +}break; +case 4166: +nVibes = eval.intParameterRange(++pt, 1, 10); +if (nVibes == 2147483647) return ""; +if (!this.chk) { +this.vwr.tm.setVibrationPeriod(0); +if (!eval.isJS) eval.delayScript(100); +}pt++; +break; +default: +tok = 4120; +break; +} +if (tok == 4120 && pt < args.length) { +var t = JS.T.getTokenFromName(JS.SV.sValue(args[pt]).toLowerCase()); +if (t != null) type = JS.SV.sValue(t).toUpperCase(); +if (JU.PT.isOneOf(type, driverList.toUpperCase())) { +pt++; +type = type.substring(0, 1).toUpperCase() + type.substring(1).toLowerCase(); +isExport = true; +if (isCommand) fileName = "Jmol." + type.toLowerCase(); +break; +} else if (JU.PT.isOneOf(type, ";ZIP;ZIPALL;SPT;STATE;")) { +pt++; +break; +} else { +type = "IMAGE"; +}}if (JS.CmdExt.tokAtArray(pt, args) == 2) { +width = JS.SV.iValue(this.tokenAt(pt++, args)); +if (width <= 0) this.invArg(); +height = JS.SV.iValue(this.tokenAt(pt++, args)); +if (height <= 0) this.invArg(); +}break; +} +if (pt0 < argCount) { +val = JS.SV.sValue(this.tokenAt(pt, args)); +if (val.equalsIgnoreCase("clipboard")) { +if (this.chk) return ""; +} else if (JU.PT.isOneOf(val.toLowerCase(), ";jpg;jpeg;jpg64;jpeg64;gif;gift;pdf;ppm;png;pngj;pngt;")) { +if (JS.CmdExt.tokAtArray(pt + 1, args) == 2 && JS.CmdExt.tokAtArray(pt + 2, args) == 2) { +width = JS.SV.iValue(this.tokenAt(++pt, args)); +if (width <= 0) this.invArg(); +height = JS.SV.iValue(this.tokenAt(++pt, args)); +if (height <= 0) this.invArg(); +}if (JS.CmdExt.tokAtArray(pt + 1, args) == 2) quality = JS.SV.iValue(this.tokenAt(++pt, args)); +} else if (JU.PT.isOneOf(val.toLowerCase(), ";xyz;xyzrn;xyzvib;mol;mol67;sdf;v2000;v3000;json;pdb;pqr;cml;cif;cifp1;pwmat;pwslab;qcjson;xsf;")) { +type = val.toUpperCase(); +if (pt + 1 == argCount) pt++; +}if (type.equals("IMAGE") && JU.PT.isOneOf(val.toLowerCase(), ";jpg;jpeg;jpg64;jpeg64;gif;gift;pdf;ppm;png;pngj;pngt;scene;")) { +type = val.toUpperCase(); +quality = -2147483648; +pt++; +}}if (pt + 2 == argCount) { +JS.SV.sValue(this.tokenAt(++pt, args)); +}switch (JS.CmdExt.tokAtArray(pt, args)) { +case 0: +showOnly = true; +break; +case 1073741884: +break; +case 805307393: +fileName = (type.equals("IMAGE") ? "?jmol.png" : "?jmol." + type.toLowerCase()); +break; +case 1073741824: +case 4: +fileName = JS.SV.sValue(this.tokenAt(pt, args)); +if (fileName.equalsIgnoreCase("clipboard") || !this.vwr.haveAccess(JV.Viewer.ACCESS.ALL)) fileName = null; +break; +default: +this.invArg(); +} +if (type.equals("IMAGE") || type.equals("FRAME") || type.equals("VIBRATION")) { +type = (fileName != null && fileName.indexOf(".") >= 0 ? fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase() : "JPG"); +}if (type.equals("ISOSURFACE") || type.equals("CONTACT")) { +isContact = type.equals("CONTACT"); +type = (fileName != null && fileName.indexOf(".") >= 0 ? fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase() : "JVXL"); +if (type.equals("PMESH")) type = "ISOMESH"; + else if (type.equals("PMB")) type = "ISOMESHBIN"; +}var isImage = JU.PT.isOneOf(type.toLowerCase(), ";jpg;jpeg;jpg64;jpeg64;gif;gift;pdf;ppm;png;pngj;pngt;scene;"); +if (!isImage) { +if (type.equals("MNU")) { +type = "MENU"; +} else if (type.equals("WRL") || type.equals("VRML")) { +type = "Vrml"; +isExport = true; +} else if (type.equals("X3D")) { +type = "X3d"; +isExport = true; +} else if (type.equals("STL")) { +type = "Stl"; +isExport = true; +} else if (type.equals("IDTF")) { +type = "Idtf"; +isExport = true; +} else if (type.equals("MA")) { +type = "Maya"; +isExport = true; +} else if (type.equals("JS")) { +type = "Js"; +isExport = true; +} else if (type.equals("OBJ")) { +type = "Obj"; +isExport = true; +} else if (type.equals("JVXL")) { +type = "ISOSURFACE"; +} else if (type.equals("XJVXL")) { +type = "ISOSURFACE"; +} else if (type.equals("JMOL")) { +type = "ZIPALL"; +} else if (type.equals("HIS")) { +type = "HISTORY"; +}if (type.equals("COORD") || type.equals("COORDS")) type = (fileName != null && fileName.indexOf(".") >= 0 ? fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase() : "XYZ"); +}if (scripts != null) { +if (!JV.FileManager.isJmolType(type)) this.invArg(); +if (type.equals("PNG")) type = "PNGJ"; +}if (!isImage && !isExport && !JU.PT.isOneOf(type, ";SCENE;JMOL;ZIP;ZIPALL;SPT;HISTORY;MO;NBO;ISOSURFACE;MESH;PMESH;PMB;ISOMESHBIN;ISOMESH;VAR;FILE;FUNCTION;CFI;CIF;CIFP1;CML;JSON;XYZ;XYZRN;XYZVIB;MENU;MOL;MOL67;PDB;PGRP;PQR;PWMAT;PWSLAB;QUAT;RAMA;SDF;V2000;V3000;QCJSON;XSF;INLINE;")) eval.errorStr2(54, "COORDS|FILE|FUNCTIONS|HISTORY|IMAGE|INLINE|ISOSURFACE|JMOL|MENU|MO|NBO|POINTGROUP|QUATERNION [w,x,y,z] [derivative]|RAMACHANDRAN|SPT|STATE|VAR x|ZIP|ZIPALL|CLIPBOARD", "CIF|CIFP1|CML|CFI|GIF|GIFT|JPG|JPG64|JMOL|JVXL|MESH|MOL|PDB|PMESH|PNG|PNGJ|PNGT|PPM|PQR|PWMAT|PWSLAB|SDF|CD|JSON|QCJSON|V2000|V3000|SPT|XJVXL|XSF|XYZ|XYZRN|XYZVIB|ZIP" + driverList.toUpperCase().$replace(';', '|')); +if (this.chk) return ""; +var fullPath = new Array(1); +var params; +var timeMsg = this.vwr.getBoolean(603979934); +if (isExport) { +if (timeMsg) JU.Logger.startTimer("export"); +var eparams = new java.util.Hashtable(); +eparams.put("type", type); +if (fileName != null) eparams.put("fileName", fileName); +if (isCommand || fileName != null) eparams.put("fullPath", fullPath); +eparams.put("width", Integer.$valueOf(width)); +eparams.put("height", Integer.$valueOf(height)); +try { +data = this.vwr.generateOutputForExport(eparams); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +data = e.toString(); +return data; +} else { +throw e; +} +} +if (data == null || data.length == 0) return ""; +if (showOnly) return data; +if (!type.equals("Povray") && !type.equals("Idtf") || fullPath[0] == null) return this.writeMsg(data); +var ext = (type.equals("Idtf") ? ".tex" : ".ini"); +fileName = fullPath[0] + ext; +params = new java.util.Hashtable(); +params.put("fileName", fileName); +params.put("type", ext); +params.put("text", data); +params.put("fullPath", fullPath); +msg = this.vwr.processWriteOrCapture(params); +if (type.equals("Idtf")) data = data.substring(0, data.indexOf("\\begin{comment}")); +data = "Created " + fullPath[0] + ":\n\n" + data; +if (timeMsg) this.showString(JU.Logger.getTimerMsg("export", 0)); +if (msg != null) { +var isError = !msg.startsWith("OK"); +if (isError) eval.evalError(msg, null); +eval.report(data, isError); +}return ""; +}var bytes = null; +var writeFileData = false; +if (data == null) { +var len = 0; +data = type.intern(); +if (data === "MENU") { +data = this.vwr.getMenu(""); +} else if (data === "PGRP") { +data = this.vwr.ms.getPointGroupAsString(this.vwr.bsA(), null, 0, 1.0, null, null, type2.equals("draw") ? "" : null); +} else if (data === "PDB" || data === "PQR") { +if (showOnly) { +data = this.vwr.getPdbAtomData(null, null, (data === "PQR"), isCoord); +} else { +writeFileData = true; +type = "PDB_" + data + "-coord " + isCoord; +}} else if (data === "FILE") { +if ("?".equals(fileName)) fileName = "?Jmol." + this.vwr.getP("_fileType"); +if (showOnly) data = this.e.getCurrentModelFileAsString(null); + else writeFileData = true; +} else if (JU.PT.isOneOf(data, ";CIF;CIFP1;SDF;MOL;MOL67;V2000;V3000;CD;JSON;XYZ;XYZRN;XYZVIB;CML;QCJSON;PWMAT;PWSLAB;XSF;")) { +var selected = this.vwr.bsA(); +var bsModel; +this.vwr.setErrorMessage(null, " (" + selected.cardinality() + " atoms)"); +data = this.vwr.getModelExtract(selected, isCoord, false, data); +msg = this.vwr.getErrorMessageUn(); +this.vwr.setErrorMessage(null, null); +if (this.vwr.am.cmi >= 0 && !selected.equals(bsModel = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi))) msg += "\nNote! Selected atom set " + selected + " is not the same as the current model " + bsModel; +if (data.startsWith("ERROR:")) bytes = data; +} else if (data === "CFI") { +data = this.vwr.getModelFileData("selected", "cfi", false); +} else if (data === "FUNCTION") { +data = this.vwr.getFunctionCalls(null); +type = "TXT"; +} else if (data === "VAR") { +if (tVar == null) { +tVar = eval.getParameter(JS.SV.sValue(this.tokenAt(isCommand ? 2 : 1, args)), 1073742190, true); +}var v = null; +if (tVar.tok == 15) { +v = new JU.Lst(); +v.addLast((tVar.value).data); +} else if (tVar.tok == 6) { +v = (fileName == null ? new JU.Lst() : this.prepareBinaryOutput(tVar)); +}if (v == null) { +data = tVar.asString(); +type = "TXT"; +} else { +if (fileName != null) { +params = new java.util.Hashtable(); +params.put("data", v); +if ((bytes = data = this.vwr.createZip(fileName, v.size() == 1 || fileName.endsWith(".png") || fileName.endsWith(".pngj") ? "BINARY" : "ZIPDATA", params)) == null) eval.evalError("#CANCELED#", null); +}}} else if (data === "SPT") { +if (isCoord) { +var tainted = this.vwr.ms.getTaintedAtoms(2); +this.vwr.setAtomCoordsRelative(JU.P3.new3(0, 0, 0), null); +data = this.vwr.getStateInfo(); +this.vwr.ms.setTaintedAtoms(tainted, 2); +} else { +data = this.vwr.getStateInfo(); +if (localPath != null || remotePath != null) data = JV.FileManager.setScriptFileReferences(data, localPath, remotePath, null); +}} else if (data === "ZIP" || data === "ZIPALL") { +if (fileName != null) { +params = new java.util.Hashtable(); +if (scripts != null) params.put("data", scripts); +if ((bytes = data = this.vwr.createZip(fileName, type, params)) == null) eval.evalError("#CANCELED#", null); +}} else if (data === "HISTORY") { +data = this.vwr.getSetHistory(2147483647); +type = "SPT"; +} else if (data === "MO" || data === "NBO") { +data = this.getMoJvxl(2147483647, data === "NBO"); +type = "XJVXL"; +} else if (data === "PMESH" || data === "PMB") { +if ((data = this.getIsosurfaceJvxl(29, data)) == null) this.error(31); +type = "XJVXL"; +} else if (data === "ISOMESH") { +if ((data = this.getIsosurfaceJvxl(24, data)) == null) this.error(31); +type = "PMESH"; +} else if (data === "ISOMESHBIN") { +if ((bytes = this.getIsosurfaceJvxl(24, "ISOMESHBIN")) == null) this.error(31); +type = "PMB"; +} else if (data === "ISOSURFACE" || data === "MESH") { +if ((data = this.getIsosurfaceJvxl(isContact ? 25 : 24, data)) == null) this.error(31); +type = (data.indexOf("= 0 ? "XJVXL" : "JVXL"); +if (!showOnly) this.showString(this.getShapeProperty(isContact ? 25 : 24, "jvxlFileInfo")); +} else { +if (isCommand && showOnly && fileName == null) { +showOnly = false; +fileName = "\1"; +}len = -1; +if (sceneType == null && quality < 0) quality = -1; +}if (data == null) data = ""; +if (len == 0) len = (bytes == null ? data.length : (typeof(bytes)=='string') ? (bytes).length : (bytes).length); +}if (!isCommand) return data; +if (showOnly) { +eval.showStringPrint(data, true); +return ""; +}if (bytes != null && (typeof(bytes)=='string')) return this.writeMsg(bytes); +if (writeFileData) return this.writeMsg(this.vwr.writeFileData(fileName, type, 0, null)); +if (type.equals("SCENE")) bytes = sceneType; + else if (bytes == null && (!isImage || fileName != null)) bytes = data; +if (timeMsg) JU.Logger.startTimer("write"); +if (isImage) { +eval.refresh(false); +if (width < 0) width = (is2D ? 250 : this.vwr.getScreenWidth()); +if (height < 0) height = (is2D ? 250 : this.vwr.getScreenHeight()); +}params = new java.util.Hashtable(); +if (fileName != null) params.put("fileName", fileName); +params.put("backgroundColor", Integer.$valueOf(this.vwr.getBackgroundArgb())); +params.put("type", type); +if (is2D) { +params.put("is2D", Boolean.TRUE); +var smiles; +var ret = "smiles could not be generated"; +try { +smiles = this.vwr.getOpenSmiles(null); +if (smiles.length > 0) { +var fname = this.vwr.setLoadFormat(true, "_" + smiles, '2', false); +fname += "?width=" + width + "&height=" + height + "&format=" + type.toLowerCase(); +this.showString(fname); +ret = this.vwr.fm.getFileAsBytes(fname, null); +}} catch (e1) { +if (Clazz_exceptionOf(e1, Exception)){ +} else { +throw e1; +} +} +if ((typeof(ret)=='string')) { +this.showString(ret); +return null; +}bytes = ret; +}if ((typeof(bytes)=='string') && quality == -2147483648) params.put("text", bytes); + else if (Clazz_instanceOf(bytes,Array)) params.put("bytes", bytes); +if (scripts != null) params.put("scripts", scripts); +if (bsFrames != null) params.put("bsFrames", bsFrames); +params.put("fullPath", fullPath); +params.put("quality", Integer.$valueOf(quality)); +params.put("width", Integer.$valueOf(width)); +params.put("height", Integer.$valueOf(height)); +params.put("nVibes", Integer.$valueOf(nVibes)); +var ret = this.vwr.processWriteOrCapture(params); +if (ret == null) ret = "canceled"; +if (isImage && ret.startsWith("OK")) ret += "; width=" + width + "; height=" + height; +if (timeMsg) this.showString(JU.Logger.getTimerMsg("write", 0)); +return this.writeMsg(ret + (msg == null ? "" : msg)); +}, "~A"); +Clazz_defineMethod(c$, "prepareBinaryOutput", +function(tvar){ +var m = tvar.getMap(); +if (m == null || !m.containsKey("$_BINARY_$")) return null; +var v = new JU.Lst(); +for (var e, $e = m.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +if (key.equals("$_BINARY_$")) continue; +var o = e.getValue(); +var bytes = (o.tok == 15 ? (o.value).data : null); +if (bytes == null) { +var s = o.asString(); +bytes = (s.startsWith(";base64,") ? JU.Base64.decodeBase64(s) : s.getBytes()); +}if (key.equals("_DATA_")) { +v = new JU.Lst(); +v.addLast(bytes); +return v; +} else if (key.equals("_IMAGE_")) { +v.add(0, key); +v.add(1, null); +v.add(2, bytes); +} else { +v.addLast(key); +v.addLast(null); +v.addLast(bytes); +}} +return v; +}, "JS.SV"); +Clazz_defineMethod(c$, "writeMsg", +function(msg){ +if (this.chk || msg == null) return ""; +var isError = !msg.startsWith("OK"); +if (isError) { +this.e.evalError(msg, null); +{ +alert(msg); +}}this.e.report(msg, isError); +return msg; +}, "~S"); +Clazz_defineMethod(c$, "show", +function(){ +var eval = this.e; +var value = null; +var str = this.paramAsStr(1); +var filter = null; +var filterLen = 0; +if (this.slen > 3 && this.tokAt(this.slen - 3) == 268441088 && this.tokAt(this.slen - 2) == 268439040) { +filter = "!/" + this.paramAsStr(this.slen - 1); +this.slen -= 3; +filterLen = 3; +} else if (this.slen > 2 && this.tokAt(this.slen - 2) == 268441088) { +filter = "/" + this.paramAsStr(this.slen - 1); +this.slen -= 2; +filterLen = 2; +} else if ((filter = this.paramAsStr(this.slen - 1)).lastIndexOf("/") == 0) { +this.slen--; +filterLen = 1; +} else { +filter = null; +}var msg = null; +var name = null; +var len = 2; +var token = this.getToken(1); +var tok = (Clazz_instanceOf(token,"JS.SV") && token.tok != 1073741824 ? 0 : token.tok); +if (tok == 4) { +token = JS.T.getTokenFromName(str.toLowerCase()); +if (token != null) tok = token.tok; +}if (tok != 1296041985 && tok != 1073742158 && tok != 1715472409 && tok != 1228935687) this.checkLength(-3); +if (this.slen == 2 && str.indexOf("?") >= 0) { +msg = this.vwr.getAllSettings(str.substring(0, str.indexOf("?"))); +tok = -1; +}switch (tok) { +case -1: +break; +case 0: +if (!this.chk) msg = (eval.theToken).escape(); +break; +case 603984065: +if (!this.chk) msg = this.vwr.stm.getUndoInfo(); +break; +case 1073741925: +eval.checkLength23(); +len = this.st.length; +if (!this.chk) { +var d = this.vwr.getModelInfo("domains"); +if (Clazz_instanceOf(d,"JS.SV")) msg = this.vwr.getAnnotationInfo(d, eval.optParameterAsString(2), 1073741925); + else msg = "domain information has not been loaded"; +}break; +case 1715472409: +msg = this.plot(this.st); +len = this.st.length; +break; +case 1073742189: +eval.checkLength23(); +len = this.st.length; +if (!this.chk) { +var d = this.vwr.getModelInfo("validation"); +if (Clazz_instanceOf(d,"JS.SV")) msg = this.vwr.getAnnotationInfo(d, eval.optParameterAsString(2), 1073742189); + else msg = "validation information has not been loaded"; +}break; +case 134221829: +if (!this.chk) msg = JU.Escape.e(this.vwr.fm.cacheList()); +break; +case 1111490587: +eval.checkLength23(); +len = this.st.length; +if (!this.chk) { +var d = this.vwr.getModelInfo("dssr"); +msg = (d == null ? "no DSSR information has been read" : len > 2 ? JS.SV.getVariable(this.vwr.extractProperty(d, this.stringParameter(2), -1)).asString() : "" + JS.SV.getVariable(d).asString()); +}break; +case 1073741915: +var version = 2; +if (this.slen == 3) version = (Clazz_floatToInt(this.floatParameter((len = 3) - 1))); + else this.checkLength(2 + filterLen); +if (!this.chk) msg = this.vwr.calculateStructures(null, true, false, version); +break; +case 545259572: +this.checkLength(2 + filterLen); +if (!this.chk) msg = this.vwr.fm.getPathForAllFiles(); +break; +case 1275203608: +if (!this.chk) { +var info = new Array(2); +this.vwr.shm.getShapePropertyData(21, "allInfo", info); +msg = JS.SV.getVariable(info[1]).asString(); +}break; +case 1073742038: +if (!this.chk) this.vwr.getNMRPredict(eval.optParameterAsString(2)); +return; +case 603983903: +if (!this.chk && this.slen == 3) { +msg = "" + this.vwr.getModelkitPropertySafely(eval.stringParameter(2)); +len = 3; +}break; +case 1275068433: +case 1073741978: +case 1073741929: +case 1073741879: +case 134218757: +this.checkLength((tok == 1073741879 || tok == 134218757 && this.tokAt(2) == 1073742335 ? len = 3 : 2) + filterLen); +if (this.chk) return; +var param2 = eval.optParameterAsString(2); +if (tok == 1073741879) { +if ("mf".equals(param2)) param2 = "formula"; +if ("formula".equals(param2)) { +msg = this.vwr.getModelInfo("formula"); +if (msg != null) msg = JU.PT.rep(msg, " ", ""); +}}if (msg == null) { +try { +switch (tok) { +case 1275068433: +msg = this.vwr.getInchi(this.vwr.bsA(), null, null); +if (msg == null) msg = "?"; +break; +case 1073741978: +msg = this.vwr.getInchi(this.vwr.bsA(), null, "key"); +break; +case 134218757: +if (param2.equalsIgnoreCase("true")) { +msg = this.vwr.getBioSmiles(null); +filter = null; +} else if (filter != null) { +msg = this.vwr.getSmilesOpt(null, -1, -1, 1, filter + "///"); +filter = null; +}break; +default: +msg = this.vwr.ms.getModelDataBaseName(this.vwr.bsA()); +if (msg != null && (msg.startsWith("$") || msg.startsWith(":"))) { +msg = msg.substring(1); +} else { +msg = null; +}break; +} +if (msg == null) { +var level = JU.Logger.getLogLevel(); +JU.Logger.setLogLevel(4); +msg = (tok == 134218757 ? this.vwr.getSmiles(null) : this.vwr.getOpenSmiles(null)); +JU.Logger.setLogLevel(level); +}} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +msg = ex.getMessage(); +if (msg == null) { +msg = ""; +}ex.printStackTrace(); +} else { +throw ex; +} +} +switch (tok) { +case 134218757: +break; +case 1073741929: +if (msg.length > 0) { +this.vwr.fm.loadImage(this.vwr.setLoadFormat(false, "_" + msg, '2', false), "\1" + msg, false); +return; +}msg = "Could not show drawing -- Either insufficient atoms are selected or the model is a PDB file."; +break; +case 1073741879: +len = 3; +if (msg.length > 0) { +msg = this.vwr.getChemicalInfo(msg, param2, this.vwr.bsA()); +if (msg.indexOf("FileNotFound") >= 0) msg = "?"; +} else { +msg = "Could not show name -- Either insufficient atoms are selected or the model is a PDB file."; +}} +}break; +case 134217764: +var sdiag = eval.optParameterAsString(2); +var sym = this.vwr.getOperativeSymmetry(); +var isDiagram = sdiag.toLowerCase().startsWith("diagram"); +if (isDiagram || sdiag.toLowerCase().startsWith("table")) { +if (this.chk) break; +sdiag = JU.PT.trim(sdiag.substring(isDiagram ? 7 : 5).trim(), "\""); +if (sdiag.length == 0) { +if (sym == null) { +msg = "Include a space group name or number to view its diagram"; +break; +}sdiag = sym.getIntTableNumber(); +if (sdiag == null || sdiag.equals("0")) { +msg = "Can't display a table; don't have an ITA number."; +break; +}}var ita = JU.PT.parseInt(sdiag); +if (ita == -2147483648) { +if (sym == null) { +sym = this.vwr.getSymStatic(); +}var info = this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, JU.PT.rep(sdiag, "''", "\""), -1, true, null); +if (info == null) { +msg = "Could not find space group " + sdiag; +break; +}ita = ((info.get("spaceGroupInfo")).get("ita")).intValue(); +}var href = JV.JC.resolveDataBase(isDiagram ? "itadiagram" : "itatable", JU.PT.formatS("" + ita, 3, 0, false, true), null); +msg = href; +this.vwr.showUrl(href); +len = this.slen; +break; +}case 1296041985: +msg = ""; +var info = null; +if ((len = this.slen) == 2) { +if (this.chk) break; +info = this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, null, -1, false, null); +} else if (tok == 134217764) { +var sg = this.paramAsStr(2); +len = 3; +if (this.chk) break; +if (sg.startsWith("list/")) { +filter = sg.substring(4); +sg = "list"; +}info = this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, JU.PT.rep(sg, "''", "\""), -1, false, null); +}if (info != null) { +msg = (tok == 134217764 ? "" + info.get("spaceGroupInfo") + info.get("spaceGroupNote") : "") + (info.containsKey("symmetryInfo") ? info.get("symmetryInfo") : ""); +break; +}var iop = (this.tokAt(2) == 2 ? this.intParameter(2) : 0); +var xyz = (this.tokAt(2) == 4 || this.tokAt(2) == 12 ? this.paramAsStr(2) : null); +var pt1 = null; +var pt2 = null; +var nth = -1; +if (this.slen > 3 && this.tokAt(3) != 4) { +var ret = Clazz_newArray(-1, [null, this.vwr.getFrameAtoms()]); +pt1 = eval.centerParameter(2 + (iop == 0 ? 0 : 1), ret); +if (ret[0] != null && (ret[0]).isEmpty()) { +len = this.slen; +break; +}ret[0] = null; +pt2 = eval.centerParameter(++eval.iToken, ret); +if (ret[0] != null && (ret[0]).isEmpty()) { +len = this.slen; +break; +}if (iop == 0 && this.tokAt(eval.iToken + 1) == 2) nth = eval.getToken(++eval.iToken).intValue; +}var type = (eval.iToken > 1 && this.tokAt(eval.iToken + 1) == 4 ? this.stringParameter(++eval.iToken) : null); +this.checkLength((len = ++eval.iToken) + filterLen); +if (!this.chk) { +var o = this.vwr.getSymmetryInfo(this.vwr.getAllAtoms().nextSetBit(0), xyz, iop, null, pt1, pt2, 0, type, 0, nth, 0, null); +msg = (o == null ? "" : Clazz_instanceOf(o,"java.util.Map") ? JS.SV.getVariable(o).asString() : o.toString()); +}break; +case 1648363544: +var vdwType = null; +if (this.slen > 2) { +len = this.slen; +vdwType = J.c.VDW.getVdwType(this.paramAsStr(2)); +if (vdwType == null) this.invArg(); +}if (!this.chk) msg = this.vwr.getDefaultVdwNameOrData(0, vdwType, null); +break; +case 134320141: +eval.checkLength23(); +len = this.slen; +var s = eval.optParameterAsString(2); +var pt; +if (filter == null && (pt = s.indexOf('/')) >= 0) { +filter = s.substring(pt + 1); +s = s.substring(0, pt); +}if (!this.chk) msg = this.vwr.getFunctionCalls(s); +break; +case 36867: +this.checkLength(2 + filterLen); +if (!this.chk) msg = this.vwr.getAllSettings(null); +break; +case 1073742166: +msg = this.vwr.getFrameTitle(); +break; +case 1073742184: +if ((len = this.slen) == 2) { +if (!this.chk) this.vwr.showUrl(eval.getFullPathName(false)); +} else { +name = this.paramAsStr(2); +if (!this.chk) this.vwr.showUrl(name); +}return; +case 1765808134: +str = "defaultColorScheme"; +break; +case 1610612740: +str = "scaleAngstromsPerInch"; +break; +case 134221850: +case 4138: +if (this.chk) return; +var modelIndex = this.vwr.am.cmi; +if (modelIndex < 0) eval.errorStr(30, "show " + eval.theToken.value); +msg = this.plot(this.st); +len = this.slen; +break; +case 14: +case 1112152078: +if (!this.chk) msg = this.getContext(false); +break; +case 1073741888: +name = eval.optParameterAsString(2); +if (name.length > 0) len = 3; +if (!this.chk) value = this.vwr.cm.getColorSchemeList(name); +break; +case 1073742192: +if (!this.chk) msg = this.vwr.getAtomDefs(this.vwr.definedAtomSets) + this.vwr.g.getVariableList() + this.getContext(true); +break; +case 536870926: +if (!this.chk) msg = this.vwr.getTrajectoryState(); +break; +case 553648144: +value = "" + JS.ScriptEval.commandHistoryLevelMax; +break; +case 553648148: +value = "" + JU.Logger.getLogLevel(); +break; +case 603979825: +value = "" + this.vwr.getBoolean(603979825); +break; +case 553648178: +msg = "set strandCountForStrands " + this.vwr.getStrandCount(12) + "; set strandCountForMeshRibbon " + this.vwr.getStrandCount(13); +break; +case 536875070: +msg = this.vwr.showTimeout((len = this.slen) == 2 ? null : this.paramAsStr(2)); +break; +case 536870918: +value = JU.Escape.eP(this.vwr.getDefaultLattice()); +break; +case 4126: +if (!this.chk) msg = this.vwr.getMinimizationInfo(); +break; +case 1611272194: +switch (this.vwr.g.axesMode) { +case 603979808: +msg = "set axesUnitcell"; +break; +case 603979804: +msg = "set axesMolecular"; +break; +default: +msg = "set axesWindow"; +} +break; +case 1610612737: +msg = "set bondMode " + (this.vwr.getBoolean(603979812) ? "OR" : "AND"); +break; +case 1649022989: +if (!this.chk) msg = "set strandCountForStrands " + this.vwr.getStrandCount(12) + "; set strandCountForMeshRibbon " + this.vwr.getStrandCount(13); +break; +case 1613238294: +msg = "set hbondsBackbone " + this.vwr.getBoolean(603979852) + ";set hbondsSolid " + this.vwr.getBoolean(603979854); +break; +case 1611141175: +if (!this.chk) msg = this.vwr.getSpinState(); +break; +case 1611141176: +msg = "set ssbondsBackbone " + this.vwr.getBoolean(603979952); +break; +case 1610625028: +case 1611141172: +msg = "selectionHalos " + (this.vwr.getSelectionHalosEnabled() ? "ON" : "OFF"); +break; +case 1612709894: +msg = "set selectHetero " + this.vwr.getBoolean(1612709894); +break; +case 1073741828: +msg = JU.Escape.eAP(this.vwr.getAdditionalHydrogens(null, null, 768)); +break; +case 1612709900: +msg = "set selectHydrogens " + this.vwr.getBoolean(1612709900); +break; +case 553648130: +case 553648138: +case 536870924: +case 553648176: +case 553648172: +case 1073741995: +if (!this.chk) msg = this.vwr.getLightingState(); +break; +case 1073742136: +case 4146: +if (!this.chk) msg = this.vwr.stm.listSavedStates(); +break; +case 1814695966: +if (!this.chk) { +if ((len = this.slen) == 3) { +msg = this.vwr.stm.getSavedUnitCell(this.paramAsStr(2)); +} else { +msg = this.vwr.getUnitCellInfoText(); +}}break; +case 1073742329: +if ((len = this.slen) == 2) { +if (!this.chk) msg = this.vwr.getCoordinateState(this.vwr.bsA()); +break; +}var nameC = this.paramAsStr(2); +if (!this.chk) msg = this.vwr.stm.getSavedCoordinates(nameC); +break; +case 1073742158: +if (!this.chk && eval.outputBuffer == null && filter == null) this.vwr.sm.clearConsole(); +if ((len = this.slen) == 2) { +if (!this.chk) msg = this.vwr.getStateInfo(); +break; +}if (filter != null && this.slen == 3) { +if (!this.chk) msg = this.vwr.getStateInfo(); +break; +} else if (this.tokAt(2) == 1228935687 && (len = this.slen) == 4) { +if (!this.chk) msg = this.vwr.fm.getEmbeddedFileState(this.paramAsStr(3), true, "state.spt"); +break; +}len = 3; +name = this.paramAsStr(2); +if (!this.chk) msg = this.vwr.stm.getSavedState(name); +break; +case 1639976963: +if ((len = this.slen) == 2) { +if (!this.chk) msg = this.vwr.ms.getProteinStructureState(this.vwr.bsA(), 134222350); +break; +}var shape = this.paramAsStr(2); +if (!this.chk) msg = this.vwr.stm.getSavedStructure(shape); +break; +case 134221834: +var dtype = ((len = this.slen) == 3 ? this.paramAsStr(2) : null); +if (!this.chk) { +var data = this.vwr.getDataObj(dtype, null, -2); +var isType = (dtype != null && "types".equals(dtype.toLowerCase())); +var isAll = (isType || "*".equals(dtype)); +if (data == null) { +msg = "no data"; +} else if (Clazz_instanceOf(data,"JU.Lst")) { +var list = data; +data = list.toArray( new Array(list.size())); +} else if (!isAll) { +var odata = data; +msg = JU.Escape.encapsulateData(odata[0], odata[1], (odata[3]).intValue()); +}if (msg == null) { +var sdata = data; +if (isType) { +sdata[1] = sdata[1].$replace('\n', ','); +}msg = JU.Escape.e(sdata); +}}break; +case 1073742330: +len = 3; +msg = eval.setObjectProperty(); +break; +case 1812599299: +if (!this.chk) { +msg = this.vwr.ms.getBoundBoxCommand(true); +}break; +case 12289: +if (!this.chk) msg = "center " + JU.Escape.eP(this.vwr.tm.fixedRotationCenter); +break; +case 135176: +if (!this.chk) msg = this.getShapeProperty(22, "command"); +break; +case 1228935687: +if (this.slen == 2) { +if (!this.chk) { +if (filter == null) this.vwr.sm.clearConsole(); +msg = this.e.getCurrentModelFileAsString(null); +}if (msg == null) msg = ""; +break; +}len = 3; +value = this.paramAsStr(2); +if (!this.chk) { +if (filter == null) this.vwr.sm.clearConsole(); +msg = this.vwr.getFileAsString3(value, true, null); +}break; +case 4115: +if (this.tokAt(2) == 1073742327 && (len = 3) > 0) msg = this.vwr.getModelFileInfoAll(); + else msg = this.vwr.getModelFileInfo(); +break; +case 1610616855: +var n = ((len = this.slen) == 2 ? 2147483647 : this.intParameter(2)); +if (n < 1) this.invArg(); +if (!this.chk) { +this.vwr.sm.clearConsole(); +if (eval.scriptLevel == 0) this.vwr.removeCommand(); +msg = this.vwr.getSetHistory(n); +}break; +case 135180: +if (!this.chk) msg = this.getShapeProperty(24, "jvxlDataXml"); +break; +case 1073877011: +case 1073877010: +if (eval.optParameterAsString(2).equalsIgnoreCase("list")) { +this.e.sm.loadShape(27); +msg = (this.chk ? "" : this.getShapeProperty(27, "list -1")); +len = 3; +} else { +var ptMO = ((len = this.slen) == 2 ? -2147483648 : this.intParameter(2)); +if (!this.chk) msg = this.getMoJvxl(ptMO, tok == 1073877011); +}break; +case 1094717454: +if (!this.chk) msg = this.vwr.ms.getModelInfoAsString(); +break; +case 537006096: +if (!this.chk) msg = this.vwr.getMeasurementInfoAsString(); +break; +case 1073741864: +len = 3; +if (!this.chk && this.slen == len) { +msg = this.paramAsStr(2); +msg = this.vwr.getOrientation(JS.T.getTokFromName(msg.equals("box") ? "volume" : msg.equals("rotation") ? "best" : msg), "best", null, null).toString(); +}break; +case 1073742132: +tok = this.tokAt(2); +if (tok == 0) tok = 1073742132; + else len = 3; +case 1073742178: +case 4129: +if (!this.chk) msg = this.vwr.getOrientation(tok, null, null, null).toString(); +break; +case 1073742077: +len = 2; +if (this.slen > 3) break; +switch (tok = this.tokAt(2)) { +case 1073742178: +case 1073742132: +case 4129: +case 0: +if (!this.chk) msg = this.vwr.getOrientation(tok, null, null, null).toString(); +break; +default: +name = eval.optParameterAsString(2); +msg = this.vwr.getOrientation(1073742034, name, null, null).toString(); +} +len = this.slen; +break; +case 1073742088: +if (!this.chk) msg = this.vwr.ms.getPDBHeader(this.vwr.am.cmi); +break; +case 1275068447: +var typ = eval.optParameterAsString(2); +if (typ.length == 0) typ = null; +len = this.slen; +if (!this.chk) msg = this.vwr.ms.getPointGroupAsString(this.vwr.bsA(), "show:" + typ, 0, 0, null, null, null); +break; +case 1088421903: +if (!this.chk) msg = this.vwr.ms.getSymmetryInfoAsString(); +break; +case 1073742176: +if (!this.chk) msg = "transform:\n" + this.vwr.tm.matrixRotate.toString(); +break; +case 4168: +msg = "zoom " + (this.vwr.tm.zoomEnabled ? ("" + this.vwr.tm.getZoomSetting()) : "off"); +break; +case 1611272202: +msg = (this.vwr.getShowFrank() ? "frank ON" : "frank OFF"); +break; +case 1665140738: +str = "solventProbeRadius"; +break; +case 1086324744: +if ((len = this.slen) == 3 && this.tokAt(2) == 1073742334) tok = 1086324743; +case 1073741863: +case 1086326788: +case 1073742120: +case 1113589787: +case 1086324742: +case 1153433601: +case 1073741982: +if (!this.chk) msg = this.vwr.getChimeInfo(tok); +break; +case 537022465: +case 1610612738: +case 20482: +case 1612709912: +value = "?"; +break; +case 1073742030: +var qualifiers = ((len = this.slen) == 2 ? null : this.paramAsStr(2)); +if (!this.chk) msg = this.vwr.getBindingInfo(qualifiers); +break; +case 1073742015: +if (!this.chk) value = this.vwr.getMenu(""); +break; +case 1073741824: +if (str.equalsIgnoreCase("fileHeader")) { +if (!this.chk) msg = this.vwr.ms.getPDBHeader(this.vwr.am.cmi); +}break; +case 1073741992: +case 36868: +str = this.paramAsStr(len++); +var v = eval.getParameter(str, 1073742190, true); +if (!this.chk) if (tok == 1073741992) { +msg = v.toJSON(); +} else { +msg = v.escape(); +}break; +} +this.checkLength(len + filterLen); +if (this.chk) return; +if (msg != null) this.showString(this.filterShow(msg, filter)); + else if (value != null) this.showString(str + " = " + value); + else if (str != null) { +if (str.indexOf(" ") >= 0) this.showString(str); + else this.showString(str + " = " + (eval.getParameter(str, 1073742190, true)).escape()); +}}); +Clazz_defineMethod(c$, "filterShow", +function(msg, name){ +if (name == null) return msg; +var isNot = name.startsWith("!/"); +name = name.substring(isNot ? 2 : 1).toLowerCase(); +var info = JU.PT.split(msg, "\n"); +var sb = new JU.SB(); +for (var i = 0; i < info.length; i++) if ((info[i].toLowerCase().indexOf(name) < 0) == isNot) sb.append(info[i]).appendC('\n'); + +return sb.toString(); +}, "~S,~S"); +Clazz_defineMethod(c$, "stereo", +function(){ +var stereoMode = J.c.STER.DOUBLE; +var degrees = -5; +var degreesSeen = false; +var colors = null; +var colorpt = 0; +for (var i = 1; i < this.slen; ++i) { +if (this.e.isColorParam(i)) { +if (colorpt > 1) this.e.bad(); +if (colorpt == 0) colors = Clazz_newIntArray (2, 0); +if (!degreesSeen) degrees = 3; +colors[colorpt] = this.e.getArgbParam(i); +if (colorpt++ == 0) colors[1] = ~colors[0]; +i = this.e.iToken; +continue; +}switch (this.getToken(i).tok) { +case 1073742335: +this.e.checkLast(this.e.iToken = 1); +this.e.iToken = 1; +break; +case 1073742334: +this.e.checkLast(this.e.iToken = 1); +stereoMode = J.c.STER.NONE; +break; +case 2: +case 3: +degrees = this.floatParameter(i); +degreesSeen = true; +break; +case 1073741824: +if (!degreesSeen) degrees = 3; +stereoMode = J.c.STER.getStereoMode(this.paramAsStr(i)); +if (stereoMode != null) break; +default: +this.invArg(); +} +} +if (this.chk) return; +this.vwr.setStereoMode(colors, stereoMode, degrees); +}); +Clazz_defineMethod(c$, "struts", +function(){ +var eval = this.e; +var defOn = (this.tokAt(1) == 1073742072 || this.tokAt(1) == 1073742335 || this.slen == 1); +var mad = eval.getMadParameter(); +if (mad == 2147483647) return false; +if (defOn) mad = Math.round(this.vwr.getFloat(570425406) * 2000); +this.setShapeProperty(1, "type", Integer.$valueOf(32768)); +eval.setShapeSizeBs(1, mad, null); +this.setShapeProperty(1, "type", Integer.$valueOf(1023)); +return true; +}); +Clazz_defineMethod(c$, "unitcell", +function(i, isModelkit){ +var eval = this.e; +var icell = 2147483647; +var mad10 = 2147483647; +var pt = null; +var tickInfo = eval.tickParamAsStr(i, true, false, false); +i = eval.iToken; +var id = null; +var oabc = null; +var newUC = null; +var ucname = null; +var isOffset = false; +var isReset = false; +var sym = (this.chk ? null : this.vwr.getCurrentUnitCell()); +var tok = this.tokAt(++i); +switch (tok) { +case 1073742333: +if (!this.chk) this.vwr.ms.clearUnitCell(this.vwr.am.cmi); +return; +case 4142: +case 4141: +isReset = true; +pt = JU.P4.new4(0, 0, 0, -1); +eval.iToken++; +break; +case 2097180: +var plane = eval.hklParameter(i + 1, null, false); +var hkl = eval.getPointOrPlane(i + 1, 7); +i = eval.iToken; +var zscale = NaN; +if (this.isFloatParameter(i + 1)) { +zscale = this.floatParameter(++i); +if (this.tokAt(i + 1) == 268441090) { +zscale = -zscale / 100; +i++; +}}var zoffset = NaN; +var zoffPercent = false; +if (this.isFloatParameter(i + 1)) { +zoffset = this.floatParameter(++i); +if (this.tokAt(i + 1) == 268441090) { +zoffPercent = true; +i++; +}}var refTop = (this.tokAt(i + 1) == 1073742172); +if (refTop) i++; +eval.iToken = i; +if (this.chk) break; +if (Clazz_instanceOf(hkl,"JU.P3")) { +hkl = JU.P4.new4(hkl.x, hkl.y, hkl.z, 0); +} else if (Float.isNaN(zoffset)) { +zoffset = (hkl).w; +}oabc = this.getUVBoxFromHKL(sym, hkl, plane); +var p = new JU.P3(); +var vt = new JU.V3(); +JU.Measure.getPlaneProjection( new JU.P3(), plane, p, vt); +if (zscale > 0) { +oabc[3].normalize(); +oabc[3].scale(zscale); +} else if (zscale < 0) { +oabc[3].scale(-zscale); +}if (!Float.isNaN(zoffset) && zoffset != 0) { +if (zoffPercent) { +zoffset = zoffset / 100 * oabc[3].length(); +}oabc[0].scaleAdd2(zoffset, vt, oabc[0]); +}if (refTop) oabc[0].scaleAdd2(-oabc[3].length(), vt, oabc[0]); +ucname = "surface" + (Clazz_floatToInt(hkl.x)) + (Clazz_floatToInt(hkl.y)) + (Clazz_floatToInt(hkl.z)); +break; +case 536875059: +case 1073742163: +pt = (tok == 536875059 ? eval.getPointOrPlane(++i, 19) : eval.checkHKL(eval.getFractionalPoint(++i))); +i = eval.iToken; +if (this.chk) break; +oabc = sym.getUnitCellVectors(); +oabc[1].scale(Math.abs(pt.x)); +oabc[2].scale(Math.abs(pt.y)); +oabc[3].scale(Math.abs(pt.z)); +pt = null; +ucname = "supercell"; +break; +case 1073741938: +pt = eval.getFractionalPoint(++i); +i = eval.iToken; +if (this.chk) break; +pt = JU.SimpleUnitCell.ptToIJK(eval.checkHKL(pt), 1); +break; +case 135180: +case 1073742330: +id = eval.objectNameParameter(++i); +break; +case 1812599299: +eval.iToken = i; +if (this.chk) break; +var o = JU.P3.newP(this.vwr.getBoundBoxCenter()); +pt = this.vwr.getBoundBoxCornerVector(); +o.sub(pt); +oabc = Clazz_newArray(-1, [o, JU.P3.new3(pt.x * 2, 0, 0), JU.P3.new3(0, pt.y * 2, 0), JU.P3.new3(0, 0, pt.z * 2)]); +pt = null; +break; +case 1073742176: +if (this.tokAt(++i) != 12) this.invArg(); +if (this.chk) break; +newUC = Clazz_newArray(-1, [this.getToken(i).value]); +break; +case 11: +case 12: +newUC = this.getToken(i).value; +break; +case 12289: +switch (this.tokAt(++i)) { +case 12290: +case 10: +case 1073742325: +pt = this.vwr.ms.getAtomSetCenter(this.atomExpressionAt(i)); +i = eval.iToken; +if (this.chk) break; +this.vwr.toFractional(pt, true); +break; +default: +if (eval.isCenterParameter(i)) { +pt = this.centerParameter(i); +i = eval.iToken; +break; +}this.invArg(); +} +pt.x -= 0.5; +pt.y -= 0.5; +pt.z -= 0.5; +break; +case 12290: +case 10: +case 1073742325: +var iAtom = this.atomExpressionAt(i).nextSetBit(0); +i = eval.iToken; +if (!this.chk) this.vwr.am.setUnitCellAtomIndex(iAtom); +if (iAtom < 0) return; +break; +case 1073742066: +isOffset = true; +if (eval.isAtomExpression(i + 1)) { +pt = eval.centerParameter(++i, null); +i = eval.iToken; +if (this.chk) break; +this.vwr.toFractional(pt, false); +break; +}case 1073742114: +pt = eval.getFractionalPoint(++i); +if (Clazz_instanceOf(pt,"JU.P4")) { +if (isOffset) this.invArg(); +} else { +i = eval.iToken; +if (this.chk) break; +if (!isOffset && pt.x < 555) { +pt = JU.SimpleUnitCell.ptToIJK(eval.checkHKL(pt), 1); +} else { +pt = JU.P4.new4(pt.x, pt.y, pt.z, (isOffset ? 1 : 0)); +}}break; +case 3: +case 2: +var f = this.floatParameter(i); +if (f < 111) { +i--; +break; +}icell = this.intParameter(i); +break; +case 4: +case 1073741824: +var s = this.paramAsStr(i).toLowerCase(); +if (s.equals("rhombohedral") || s.equals("r")) { +if (sym != null && sym.getUnitCellInfoType(7) == 0) return; +s = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"; +} else if (s.equals("trigonal") || s.equals("hexagonal")) { +if (sym != null && sym.getUnitCellInfoType(8) == 0) return; +s = "a-b,b-c,a+b+c"; +}ucname = s; +if (s.indexOf(",") >= 0 || this.chk) { +newUC = s; +break; +}var stype = null; +this.vwr.ms.setModelCagePts(-1, null, null); +newUC = this.vwr.getModelInfo("unitcell_conventional"); +var modelIsPrimitive = this.vwr.getModelInfo("isprimitive") != null; +if (JU.PT.isOneOf(ucname, ";parent;standard;primitive;")) { +if (newUC == null && modelIsPrimitive) { +this.showString("Cannot convert unit cell when file data is primitive and have no lattice information"); +return; +}if (ucname.equals("primitive") && this.tokAt(i + 1) == 4) stype = this.paramAsStr(++i).toUpperCase(); +}if (Clazz_instanceOf(newUC,Array)) { +oabc = newUC; +}if (stype == null) stype = this.vwr.getModelInfo("latticeType"); +if (newUC != null) { +this.vwr.ms.setModelCagePts(-1, this.vwr.getV0abc(-1, newUC), "" + newUC); +newUC = null; +}if (!ucname.equals("conventional")) { +this.setShapeProperty(34, "labels", null); +s = this.vwr.getModelInfo("unitcell_" + ucname); +if (s == null) { +var isPrimitive = ucname.equals("primitive"); +if (isPrimitive || ucname.equals("reciprocal")) { +var scale = (this.slen == i + 1 ? 1 : this.tokAt(i + 1) == 2 ? this.intParameter(++i) * 3.141592653589793 : this.floatParameter(++i)); +ucname = (sym == null ? "" : sym.getSpaceGroupName() + " ") + ucname; +oabc = (sym == null ? Clazz_newArray(-1, [JU.P3.new3(0, 0, 0), JU.P3.new3(1, 0, 0), JU.P3.new3(0, 1, 0), JU.P3.new3(0, 0, 1)]) : sym.getUnitCellVectors()); +if (stype == null) stype = this.vwr.getSymmetryInfo(this.vwr.getFrameAtoms().nextSetBit(0), null, 0, null, null, null, 1073741994, null, 0, -1, 0, null); +if (sym == null) sym = this.vwr.getSymTemp(); +if (!modelIsPrimitive) sym.toFromPrimitive(true, stype.length == 0 ? 'P' : stype.charAt(0), oabc, this.vwr.getCurrentModelAuxInfo().get("primitiveToCrystal")); +if (!isPrimitive) { +JU.SimpleUnitCell.getReciprocal(oabc, oabc, scale); +}break; +}} else { +ucname = s; +if (s.indexOf(",") >= 0) newUC = s; +}}break; +default: +var ret = new Array(1); +if (this.getUnitCellParameter(i, ret)) { +oabc = ret[0]; +} else { +newUC = ret[0]; +}if (newUC == null && oabc == null) { +if (this.slen > i + 1) { +pt = eval.getFractionalPoint(i); +i = eval.iToken; +} else { +i--; +}} else if (newUC != null) { +if (!this.chk && isModelkit) { +if (sym == null) { +this.vwr.getModelkit(false).cmdAssignSpaceGroup(null, "P1", newUC, false, false, "unitcell"); +} else if (sym.fixUnitCell(newUC)) { +eval.invArgStr("Unit cell is incompatible with current space group"); +}}i = eval.iToken; +} else if (oabc != null) { +i = eval.iToken; +}break; +} +mad10 = eval.getSetAxesTypeMad10(++i); +eval.checkLast(eval.iToken); +if (this.chk || mad10 == 2147483647) return; +if (mad10 == 2147483647) this.vwr.am.setUnitCellAtomIndex(-1); +if (oabc == null && newUC != null) oabc = this.vwr.getV0abc(-1, newUC); +if (icell != 2147483647) { +if (sym != null) sym.setOffset(icell); +} else if (id != null) { +this.vwr.setCurrentCage(id); +} else if (isReset || oabc != null) { +isReset = (isModelkit || sym == null ? this.vwr.getModelkit(false).transformAtomsToUnitCell(sym, oabc, ucname) : true); +if (isReset) { +if (isModelkit && sym != null) { +this.vwr.ms.setSpaceGroup(this.vwr.am.cmi, sym.getUnitCell(oabc, false, null), null); +return; +}this.vwr.ms.setModelCagePts(-1, oabc, ucname); +if (sym == null) { +this.vwr.setNewRotationCenter(this.e.getUnitCellCenter()); +}}}eval.setObjectMad10(33, "unitCell", mad10); +if (pt != null) { +sym = this.vwr.ms.getUnitCell(-2147483648); +if (sym != null) sym.setOffsetPt(pt); +}if (tickInfo != null) this.setShapeProperty(33, "tickInfo", tickInfo); +if (ucname != null) this.showString(ucname + (oabc == null ? "" : " " + JU.Escape.e(oabc))); +}, "~N,~B"); +Clazz_defineMethod(c$, "getUVBoxFromHKL", +function(uc, hkl, plane){ +var h = Clazz_floatToInt(hkl.x); +var k = Clazz_floatToInt(hkl.y); +var l = Clazz_floatToInt(hkl.z); +if (h == 0 && k == 0 && l == 0 || h != hkl.x || k != hkl.y || l != hkl.z) this.invArg(); +while ((h % 2) == 0 && (k % 2) == 0 && (l % 2) == 0) { +h /= 2; +k /= 2; +l /= 2; +} +var oabc = uc.getUnitCellVectors(); +var dist0 = plane.w; +var p0 = JU.P4.new4(plane.x, plane.y, plane.z, 0); +var max = Math.max(Math.max(h, k), l); +var cpts = JU.Measure.getLatticePoints(uc.getLatticeCentering(), max, max, max); +for (var j = cpts.size(); --j >= 0; ) { +uc.toCartesian(cpts.get(j), true); +} +cpts = JU.Measure.getPointsOnPlane(cpts.toArray( new Array(cpts.size())), p0); +var zero = new JU.P3(); +var amin = -179; +var dmin = 3.4028235E38; +var dmin2 = 3.4028235E38; +var v = null; +var v1 = null; +var da = amin; +var damin = 3.4028235E38; +var d; +var okAng; +var isNew; +var isLinear; +for (var i = cpts.size(); --i >= 0; ) { +var pt = cpts.get(i); +d = pt.length(); +isNew = isLinear = false; +if (d < 0.01 || v != null && ((da = Math.abs(JU.Measure.computeTorsion(v, zero, plane, pt, true))) > -amin)) continue; +isLinear = (da < 1); +if (v == null) { +v = pt; +dmin = d; +continue; +}if (d < dmin - 0.01) { +isNew = true; +damin = 3.4028235E38; +da = 3.4028235E38; +} else if (d < dmin2 - 0.01) { +damin = 3.4028235E38; +} else if (d >= dmin2 + 0.01) { +} else { +continue; +}if (isNew || (okAng = (da > 89)) && d < dmin + 0.1 && (pt.x >= -0.01 && pt.y <= 0.01) && (damin == 3.4028235E38 || damin < 89)) { +if (isLinear) { +v1 = null; +dmin2 = 3.4028235E38; +} else { +v1 = v; +dmin2 = dmin; +}v = pt; +dmin = d; +if (!isNew && da < damin) damin = da; +} else if (okAng && d < dmin2 + 0.1) { +v1 = pt; +dmin2 = d; +if (da < damin) damin = da; +}} +if (v == null) this.invArg(); +var u = null; +if (v1 == null) { +for (var i = cpts.size(); --i >= 0; ) { +var pt = cpts.get(i); +da = JU.Measure.computeTorsion(v, zero, plane, pt, true); +if (da < -89.9 && da > amin + 0.01) { +amin = da; +u = pt; +}} +} else { +da = JU.Measure.computeTorsion(v, zero, plane, v1, true); +if (da > 1) { +u = v; +v = v1; +} else { +u = v1; +}}if (u == null) this.invArg(); +oabc[1] = u; +oabc[2] = v; +var doReverse = ((((h < 0 ? 1 : 0) + (k < 0 ? 1 : 0) + (l < 0 ? 1 : 0)) % 2) == 1); +var w = oabc[3]; +var a = JU.P3.newP(u); +var b = JU.P3.newP(v); +if (h == 0 && k == 0) { +b.scale(-1); +a.scale(-1); +oabc[1] = a; +oabc[2] = b; +} else if (h == 0 && l == 0) { +} else if (k == 0 && l == 0) { +a.scale(-1); +b.scale(-1); +oabc[1] = b; +oabc[2] = a; +}if (doReverse) { +a = oabc[1]; +oabc[1] = oabc[2]; +oabc[2] = a; +}w.cross(v, u); +w.normalize(); +w.scale(dist0); +return oabc; +}, "J.api.SymmetryInterface,JU.P4,JU.P4"); +Clazz_defineMethod(c$, "modelkit", +function(){ +var i = 0; +var tok = this.tokAt(1); +switch (tok) { +case 603984065: +case 4139: +if (this.chk) this.e.cmdUndoRedo(tok == 603984065 ? 4165 : 4140); +return; +case 1073742334: +if (this.e.$isStateScript) this.vwr.getModelkit(false).setProperty("updatekeysfromstate", null); +if (this.slen == 2 && this.vwr.getModelkitPropertySafely("exists") == null) return; +case 0: +case 1073742335: +if (!this.chk) this.vwr.setBooleanProperty("modelkitmode", tok != 1073742334); +if (this.tokAt(i + 1) == 0) return; +i = ++this.e.iToken; +break; +case 4126: +if (this.vwr.am.cmi < 0) this.e.errorStr(30, "MODELKIT MINIMIZE"); +this.minimize(true); +return; +case 528432: +case 4145: +this.e.cmdRotate(false, true); +return; +case 4098: +++this.e.iToken; +case 134217764: +case 4106: +case 12291: +case 1275069441: +case 4129: +case 1073742080: +case 12297: +case 135176: +this.assign(true); +return; +case 4130: +++this.e.iToken; +this.mutate(); +return; +} +var kit = this.vwr.getModelkit(false); +while ((tok = this.tokAt(++i)) != 0) { +var key = this.paramAsStr(i).toLowerCase(); +var value = null; +switch (tok) { +case 1073742335: +case 1073742334: +if (!this.chk) { +this.vwr.setBooleanProperty("modelkitmode", tok == 1073742335); +if (tok == 1073742334) this.vwr.setStringProperty("picking", "identify"); +}continue; +case 1610625028: +case 12294: +key = "hidden"; +value = Boolean.$valueOf(tok != 1610625028); +break; +case 12293: +key = "constraint"; +value = ""; +var type = this.tokAt(++i); +var v1 = null; +var v2 = null; +var plane = null; +switch (type) { +case 1073742334: +case 1073742333: +if (!this.chk) this.vwr.setBooleanProperty("dragPicking", false); +break; +case 135198: +v1 = this.e.getPoint3f(++i, true, true); +i = this.e.iToken; +v2 = this.e.getPoint3f(++i, true, true); +value = null; +break; +case 134219777: +plane = this.e.hklParameter(++i, null, true); +value = null; +break; +case 134217750: +plane = this.e.planeParameter(++i, false); +value = null; +break; +default: +this.invArg(); +} +if (value == null) { +if ((v1 == null || v2 == null) == (plane == null)) this.invArg(); +value = Clazz_newArray(-1, [v1, v2, plane]); +} else { +value = null; +}i = this.e.iToken; +break; +case 36867: +key = this.paramAsStr(++i); +value = (this.tokAt(++i) == 0 ? "true" : this.paramAsStr(i)); +break; +case 4166: +key = "vibration"; +switch (this.tokAt(++i)) { +case 1073742334: +value = "off"; +break; +case 1086324754: +value = "wyckoff"; +break; +default: +this.invArg(); +break; +} +break; +case 1296041985: +switch (this.tokAt(++i)) { +case 4: +case 1073742333: +value = this.paramAsStr(i); +break; +case 12: +value = this.getToken(i).value; +break; +case 2: +value = Integer.$valueOf(this.getToken(i).intValue); +break; +default: +if (this.e.isCenterParameter(i)) { +key = "center"; +value = this.e.centerParameter(i, null); +i = this.e.iToken; +} else { +this.invArg(); +}break; +} +break; +case 1073742066: +value = this.paramAsStr(i + 1); +if (value.equals("none")) { +++i; +break; +}case 134217751: +case 12289: +value = this.e.atomCenterOrCoordinateParameter(++i, null); +i = this.e.iToken; +break; +case 1073742024: +value = this.paramAsStr(++i).toLowerCase(); +if (!this.vwr.isModelKitOption('M', value)) this.invArg(); +break; +case 1814695966: +if (this.e.isArrayParameter(i + 1)) { +this.unitcell(2, true); +return; +}value = this.paramAsStr(++i).toLowerCase(); +if (!this.vwr.isModelKitOption('U', value)) { +this.unitcell(2, true); +return; +}break; +case 1088421903: +value = this.paramAsStr(++i).toLowerCase(); +if (!this.vwr.isModelKitOption('S', value)) this.invArg(); +break; +default: +if (this.vwr.isModelKitOption('B', key)) { +value = Boolean.$valueOf((tok = this.tokAt(++i)) == 0 || tok == 1073742335); +break; +}if (this.vwr.isModelKitOption('M', key)) { +value = key; +key = "mode"; +break; +}if (this.vwr.isModelKitOption('U', key)) { +value = key; +key = "unitcell"; +break; +}this.invArg(); +} +if (!this.chk && value != null && (value = kit.setProperty(key, value)) != null && key !== "hidden" && !kit.isHidden()) this.vwr.showString("modelkit SET " + key + " " + value.toString(), false); +} +}); +Clazz_defineMethod(c$, "assign", +function(isModelkit){ +if (this.vwr.am.cmi < 0) this.invArg(); +var bsModelAtoms = this.vwr.getThisModelAtoms(); +var i = ++this.e.iToken; +var doDraw = false; +var mode = this.tokAt(i); +if (mode == 135176) { +if (this.tokAt(2) != 134217764) this.invArg(); +doDraw = true; +mode = 12297; +}if (mode == 12297) { +if (!isModelkit) this.invArg(); +if (!this.e.chk) this.vwr.zap(false, false, false); +mode = this.tokAt(++i); +if (mode == 0) return; +}var isAtom = (mode == 1153433601); +var isBond = (mode == 1677721602); +var isAdd = (mode == 1275069441); +var isConnect = (mode == 4106); +var isDelete = (mode == 12291); +var isMove = (mode == 4129); +var isSpacegroup = (mode == 134217764); +var isPacked = (mode == 1073742080); +if ((isPacked || isSpacegroup) && !isModelkit) { +this.invArg(); +}if (isAtom || isBond || isConnect || isSpacegroup || isDelete || isMove || isAdd || isPacked) { +i++; +} else { +isAtom = true; +mode = 1153433601; +}var index = -1; +var index2 = -1; +var bs = null; +if (isBond) { +if (this.tokAt(i) == 2) { +index = this.e.intParameter(i); +} else if (Clazz_instanceOf(this.getToken(i).value,"JM.BondSet")) { +index = (this.getToken(i).value).nextSetBit(0); +} else { +bs = this.expFor(i, bsModelAtoms); +index = bs.nextSetBit(0); +switch (bs.cardinality()) { +case 1: +bs = this.expFor(i = ++this.e.iToken, bsModelAtoms); +index2 = bs.nextSetBit(0); +if (index2 < 0) this.invArg(); +bs.set(index); +case 2: +bs = this.vwr.ms.getBondsForSelectedAtoms(bs, false); +if (!bs.isEmpty()) { +index = bs.nextSetBit(0); +} else { +isConnect = true; +mode = 4106; +}break; +case 0: +default: +this.invArg(); +} +}i = ++this.e.iToken; +} else if (isPacked) { +bs = bsModelAtoms; +} else if (isAtom && this.tokAt(i) == 4 || mode == 1275069441) { +} else if (!isSpacegroup || this.e.isAtomExpression(i)) { +bs = this.expFor(i, bsModelAtoms); +index = bs.nextSetBit(0); +if (index < 0) { +return; +}i = ++this.e.iToken; +}var type = null; +var pt = null; +var wyckoff = null; +var paramsOrUC = null; +var pts = null; +if (isAdd) { +if (this.e.isAtomExpression(i)) { +bs = this.expFor(++this.e.iToken, bsModelAtoms); +i = this.e.iToken; +type = this.e.optParameterAsString(i + 1); +i = this.e.iToken; +if (type.toLowerCase().equals("packed")) { +isPacked = true; +type = ""; +}} else { +type = this.e.optParameterAsString(i); +}if (this.e.isPoint3f(this.e.iToken + 1)) { +pt = this.getPoint3f(++this.e.iToken, true); +} else if (this.e.isArrayParameter(this.e.iToken + 1)) { +pts = this.e.getPointArray(this.e.iToken + 1, -1, false); +}if (type.length == 0) type = null; +switch (this.tokAt(this.e.iToken + 1)) { +case 1073742080: +isPacked = true; +++this.e.iToken; +break; +case 1086324754: +++this.e.iToken; +wyckoff = this.paramAsStr(++this.e.iToken); +var w = (wyckoff.equalsIgnoreCase("general") ? 'G' : (wyckoff.length > 1 || wyckoff.length == 0 ? '\0' : wyckoff.charAt(0))); +if (w < 'a' && w != 'A' && w != 'G' || w > 'z') this.invArg(); +if ("packed".equals(this.e.optParameterAsString(this.e.iToken + 1))) { +isPacked = true; +++this.e.iToken; +}break; +} +} else if (isMove) { +if (this.e.isArrayParameter(i)) { +pts = this.e.getPointArray(i, -1, false); +} else { +pt = this.getPoint3f(i, true); +}i = this.e.iToken; +} else if (isSpacegroup) { +type = this.e.optParameterAsString(i); +var sym = this.vwr.getOperativeSymmetry(); +if (type.equalsIgnoreCase("packed")) { +if (sym == null) this.invArg(); +type = sym.getClegId(); +isPacked = true; +} else if (type.indexOf(":") < 0 && type.indexOf(">") < 0 && (type.indexOf(",") > 0 || "rh".indexOf(type) >= 0)) { +if (sym == null) this.invArg(); +var cleg = sym.getClegId(); +type = cleg.substring(0, cleg.indexOf(":") + 1) + type; +}if (this.tokAt(this.e.iToken + 1) == 1814695966) { +var ret = new Array(1); +this.getUnitCellParameter(this.e.iToken + 2, ret); +paramsOrUC = ret[0]; +if (paramsOrUC == null) this.invArg(); +}if (this.tokAt(this.e.iToken + 1) == 1073742080) { +isPacked = true; +++this.e.iToken; +}} else if (isConnect) { +if (index2 < 0) { +bs = this.expFor(i, bsModelAtoms); +index2 = bs.nextSetBit(0); +type = this.e.optParameterAsString(++this.e.iToken); +}} else { +type = this.e.optParameterAsString(i); +if (isAtom) pt = (++this.e.iToken < this.slen ? this.centerParameter(this.e.iToken) : null); +}if (this.chk) return; +this.vwr.pushState(); +switch (mode) { +case 1153433601: +this.e.clearDefinedVariableAtomSets(); +this.vwr.getModelkit(false).cmdAssignAtom(bs, pt, type, this.e.fullCommand); +break; +case 1677721602: +this.vwr.getModelkit(false).cmdAssignBond(index, (type + "-").charAt(0), this.e.fullCommand); +break; +case 4106: +this.vwr.getModelkit(false).cmdAssignConnect(index, index2, (type + "1").charAt(0), this.e.fullCommand); +break; +case 1073742080: +type = null; +case 1275069441: +case 1086324754: +if (pts == null) { +if (pt != null) { +pts = Clazz_newArray(-1, [pt]); +} else if (bs == null && wyckoff == null) { +if (type == null) this.invArg(); + else wyckoff = "G"; +}}var na = this.vwr.getModelkit(false).cmdAssignAddAtoms(type + (wyckoff != null ? ":" + wyckoff : ""), pts, bs, (isPacked ? "packed" : ""), this.e.fullCommand); +if (this.e.doReport()) this.e.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms added"), na), false); +break; +case 12291: +var nd = this.vwr.getModelkit(false).cmdAssignDeleteAtoms(bs); +if (this.e.doReport()) this.e.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms deleted"), nd), false); +break; +case 4129: +var nm = this.vwr.getModelkit(false).cmdAssignMoveAtoms(bs, index, JU.P3.newP(pt), pts, true, false); +if (nm > 0) this.vwr.checkCoordinatesChanged(bs); +if (this.e.doReport()) this.e.report(J.i18n.GT.i(J.i18n.GT.$("{0} atoms moved"), nm), false); +break; +case 134217764: +var s = this.vwr.getModelkit(false).cmdAssignSpaceGroup(bs, type, paramsOrUC, isPacked, doDraw, this.e.fullCommand); +var isError = s.endsWith("!"); +if (isError) this.e.invArgStr(s); +if (this.e.doReport()) this.e.showString(s); +break; +} +}, "~B"); +Clazz_defineMethod(c$, "getUnitCellParameter", +function(i, ret){ +ret[0] = null; +if (this.tokAt(i) == 8) return false; +var ei = this.e.iToken; +if (this.tokAt(i) == 4) { +var tr = this.paramAsStr(i); +var uc = this.vwr.getCurrentUnitCell(); +if (uc == null) this.invArg(); +if (!this.chk) ret[0] = uc.getV0abc(tr, null); +return true; +}if (this.e.isArrayParameter(i)) { +this.e.ignoreError = true; +if (this.tokAt(i + 2) != 1073742332) { +try { +ret[0] = this.e.floatParameterSet(i, 6, 6); +this.e.ignoreError = false; +return false; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}try { +ret[0] = this.e.getPointArray(i, 4, false); +} catch (ee) { +if (Clazz_exceptionOf(ee, Exception)){ +this.e.iToken = ei; +} else { +throw ee; +} +} +this.e.ignoreError = false; +}return true; +}, "~N,~A"); +Clazz_defineMethod(c$, "expFor", +function(i, bsAtoms){ +var bs = JU.BS.copy(this.atomExpressionAt(i)); +bs.and(bsAtoms); +return bs; +}, "~N,JU.BS"); +Clazz_defineMethod(c$, "getContext", +function(withVariables){ +var sb = new JU.SB(); +var context = this.e.thisContext; +while (context != null) { +if (withVariables) { +if (context.vars != null) { +sb.append(this.getScriptID(context)); +sb.append(JV.StateManager.getVariableList(context.vars, 80, true, false)); +}} else { +sb.append(JS.ScriptError.getErrorLineMessage(context.functionName, context.scriptFileName, this.e.getLinenumber(context), context.pc, JS.ScriptEval.statementAsString(this.vwr, context.statement, -9999, this.e.debugHigh))); +}context = context.parentContext; +} +if (withVariables) { +if (this.e.contextVariables != null) { +sb.append(this.getScriptID(null)); +sb.append(JV.StateManager.getVariableList(this.e.contextVariables, 80, true, false)); +}} else { +sb.append(this.e.getErrorLineMessage2()); +}return sb.toString(); +}, "~B"); +Clazz_defineMethod(c$, "getIsosurfaceJvxl", +function(iShape, type){ +type = (type === "PMESH" || type === "MESH" ? "jvxlMeshX" : type === "ISOMESH" ? "pmesh" : type === "ISOMESHBIN" || type === "PMB" ? "pmeshbin" : "jvxlDataXml"); +return (this.chk ? "" : this.getShapeProperty(iShape, type)); +}, "~N,~S"); +Clazz_defineMethod(c$, "getMoJvxl", +function(ptMO, isNBO){ +var iShape = (isNBO ? 28 : 27); +this.e.sm.loadShape(iShape); +var modelIndex = this.vwr.am.cmi; +if (modelIndex < 0) this.e.errorStr(30, "show/write MO/NBO"); +var moData = this.vwr.ms.getInfo(modelIndex, "moData"); +if (moData == null) this.error(27); +var n = this.getShapeProperty(iShape, "moNumber"); +if (n == null || n.intValue() == 0) this.setShapeProperty(iShape, "init", Integer.$valueOf(modelIndex)); +this.setShapeProperty(iShape, "moData", moData); +return this.e.sm.getShapePropertyIndex(iShape, "showMO", ptMO); +}, "~N,~B"); +Clazz_defineMethod(c$, "getScriptID", +function(context){ +var fuName = (context == null ? this.e.functionName : "function " + context.functionName); +var fiName = (context == null ? this.e.scriptFileName : context.scriptFileName); +return "\n# " + fuName + " (file " + fiName + (context == null ? "" : " context " + context.id) + ")\n"; +}, "JS.ScriptContext"); +Clazz_defineMethod(c$, "tokenAt", +function(i, args){ +return (i < args.length ? args[i] : null); +}, "~N,~A"); +c$.tokAtArray = Clazz_defineMethod(c$, "tokAtArray", +function(i, args){ +return (i < args.length && args[i] != null ? args[i].tok : 0); +}, "~N,~A"); +Clazz_defineMethod(c$, "getPlotMinMax", +function(data, isMax, tok){ +if (data == null) return 0; +switch (tok) { +case 1111490568: +case 1111490569: +case 1111490570: +return (isMax ? 180 : -180); +case 1111490565: +case 1111490576: +return (isMax ? 360 : 0); +case 1111490574: +return (isMax ? 1 : -1); +} +var fmax = (isMax ? -1.0E10 : 1E10); +for (var i = data.length; --i >= 0; ) { +var f = data[i]; +if (Float.isNaN(f)) continue; +if (isMax == (f > fmax)) fmax = f; +} +return fmax; +}, "~A,~B,~N"); +Clazz_defineMethod(c$, "parseDataArray", +function(str, is3D){ +str = JU.Parser.fixDataString(str); +var lines = JU.Parser.markLines(str, '\n'); +var nLines = lines.length; +if (!is3D) { +var data = JU.AU.newFloat2(nLines); +for (var iLine = 0, pt = 0; iLine < nLines; pt = lines[iLine++]) { +var tokens = JU.PT.getTokens(str.substring(pt, lines[iLine])); +JU.PT.parseFloatArrayData(tokens, data[iLine] = Clazz_newFloatArray (tokens.length, 0)); +} +return data; +}var tokens = JU.PT.getTokens(str.substring(0, lines[0])); +if (tokens.length != 3) return Clazz_newFloatArray (0, 0, 0, 0); +var nX = JU.PT.parseInt(tokens[0]); +var nY = JU.PT.parseInt(tokens[1]); +var nZ = JU.PT.parseInt(tokens[2]); +if (nX < 1 || nY < 1 || nZ < 1) return Clazz_newFloatArray (1, 1, 1, 0); +var data = JU.AU.newFloat3(nX, nY); +var iX = 0; +var iY = 0; +for (var iLine = 1, pt = lines[0]; iLine < nLines && iX < nX; pt = lines[iLine++]) { +tokens = JU.PT.getTokens(str.substring(pt, lines[iLine])); +if (tokens.length < nZ) continue; +JU.PT.parseFloatArrayData(tokens, data[iX][iY] = Clazz_newFloatArray (tokens.length, 0)); +if (++iY == nY) { +iX++; +iY = 0; +}} +if (iX != nX) { +System.out.println("Error reading 3D data -- nX = " + nX + ", but only " + iX + " blocks read"); +return Clazz_newFloatArray (1, 1, 1, 0); +}return data; +}, "~S,~B"); +Clazz_defineMethod(c$, "getBitsetPropertyFloat", +function(bs, tok, property, min, max){ +var odata = (property == null || tok == (1086325010) || tok == (1111490843) ? this.e.getBitsetProperty(bs, null, tok, null, null, property, null, false, 2147483647, false) : this.vwr.getDataObj(property, bs, 1)); +if (odata == null || !JU.AU.isAF(odata)) return (bs == null ? null : Clazz_newFloatArray (bs.cardinality(), 0)); +var data = odata; +if (!Float.isNaN(min)) for (var i = 0; i < data.length; i++) if (data[i] < min) data[i] = NaN; + +if (!Float.isNaN(max)) for (var i = 0; i < data.length; i++) if (data[i] > max) data[i] = NaN; + +return data; +}, "JU.BS,~N,~S,~N,~N"); +c$.labeler = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corescriptcmd.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corescriptcmd.z.js new file mode 100755 index 000000000000..963b4752761f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corescriptcmd.z.js @@ -0,0 +1,209 @@ +(function(ca,da,ea,fa,ga,ha,T,O,U,W,X,K,Y,Z,ia,R,P,S,$,ja,aa,ka,la,ma,na,oa,pa,E,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,Ca,Da,Ea,Fa,Ga,Ha,Ia,Ja,Ka,La,Ma,Na,Oa,Pa,Qa,p,ba){T("JS");U(null,"JS.ScriptExt",["JU.AU"],function(){var k=X(function(){this.e=this.vwr=null;this.chk=!1;this.st=null;this.slen=0;W(this,arguments)},JS,"ScriptExt",null);p(k,"init",function(a){this.e=a;this.vwr=this.e.vwr;return this},"~O");p(k,"atomExpressionAt",function(a){return this.e.atomExpressionAt(a)},"~N");p(k,"checkLength", +function(a){this.e.checkLength(a)},"~N");p(k,"error",function(a){this.e.error(a)},"~N");p(k,"invArg",function(){this.e.invArg()});p(k,"invPO",function(){this.error(23)});p(k,"getShapeProperty",function(a,c){return this.e.getShapeProperty(a,c)},"~N,~S");p(k,"paramAsStr",function(a){return this.e.paramAsStr(a)},"~N");p(k,"centerParameter",function(a){return this.e.centerParameter(a,null)},"~N");p(k,"floatParameter",function(a){return this.e.floatParameter(a)},"~N");p(k,"getPoint3f",function(a,c){return this.e.getPoint3f(a, +c,!0)},"~N,~B");p(k,"intParameter",function(a){return this.e.intParameter(a)},"~N");p(k,"isFloatParameter",function(a){switch(this.e.tokAt(a)){case 2:case 3:return!0}return!1},"~N");p(k,"setShapeProperty",function(a,c,b){this.e.setShapeProperty(a,c,b)},"~N,~S,~O");p(k,"showString",function(a){this.e.showString(a)},"~S");p(k,"stringParameter",function(a){return this.e.stringParameter(a)},"~N");p(k,"getToken",function(a){return this.e.getToken(a)},"~N");p(k,"tokAt",function(a){return this.e.tokAt(a)}, +"~N");p(k,"setShapeId",function(a,c,b){b&&this.invArg();c=this.e.setShapeNameParameter(c).toLowerCase();this.setShapeProperty(a,"thisID",c);return c},"~N,~N,~B");p(k,"getColorTrans",function(a,c,b,f){b=3.4028235E38;1765808134!=a.theTok&&--c;switch(this.tokAt(c+1)){case 603979967:c++;b=this.isFloatParameter(c+1)?a.getTranslucentLevel(++c):this.vwr.getFloat(570425353);break;case 1073742074:c++,b=0}a.isColorParam(c+1)?f[0]=a.getArgbParam(++c):1073742333==this.tokAt(c+1)?(f[0]=0,a.iToken=c+1):3.4028235E38== +b?this.invArg():f[0]=-2147483648;return b},"JS.ScriptEval,~N,~B,~A");p(k,"finalizeObject",function(a,c,b,f,e,d,h,j){e&&this.setShapeProperty(a,"set",d);-2147483648!=c&&this.e.setShapePropertyBs(a,"color",Integer.$valueOf(c),j);3.4028235E38!=b&&this.e.setShapeTranslucency(a,"","translucent",b,j);0!=f&&this.setShapeProperty(a,"scale",Integer.$valueOf(f));0>h&&(h=-1-h,this.setShapeProperty(a,"token",Integer.$valueOf(1073742018)),this.setShapeProperty(a,"token",Integer.$valueOf(1073742046)));0j)return null==c&&(c=""),e?E(-1,[c]):c;var j=this.vwr.ms,m=0;null==JS.CmdExt.labeler&&(JS.CmdExt.labeler=j.getLabeler());b=h||!b?null:a.getAssociatedAtoms(j);var n=null==c||0==c.length,q=h||n?null:JS.CmdExt.labeler.getBondLabelValues();c=n?null:h?JS.CmdExt.labeler.compile(this.vwr,c,"\x00",null):JS.CmdExt.labeler.compile(this.vwr,c,"\u0001",q);var t=g?1:a.cardinality(),l=null!=d;l||(d=Array(t));var C=new JU.P3;for(f=g?f:a.nextSetBit(0);0<=f;f=a.nextSetBit(f+1)){var x;h?x=n?j.at[f].getInfo():JS.CmdExt.labeler.formatLabelAtomArray(this.vwr, +j.at[f],c,"\x00",b,C):(x=j.bo[f],x=n?x.getIdentity():JS.CmdExt.labeler.formatLabelBond(this.vwr,x,c,q,b,C));x=JU.PT.formatStringI(x,"#",m+1);d[l?f:m]=x;m++;if(g)break}return 1==t&&!e?d[0]:d},"JU.BS,~S,~B,~N,~B,~A");p(k,"getLoadSymmetryParams",function(a,c,b){var f=this.e;this.chk=f.chk;this.slen=f.slen;var e=!1,d=null,h=this.tokAt(a);if(1073742332==h||8==h)d=f.getFractionalPoint(a),h=this.tokAt(a=f.iToken+1);switch(h){case 134217764:e=b.get("isEmptyLoad")===Boolean.TRUE;case 1073741938:case 1073742080:case 1094713350:case 1073742163:case 1073742114:case 1814695966:null== +d&&(d=JU.P3.new3(555,555,-1)),f.iToken=a-1}h=null;if(null!=d){b.put("lattice",d);a=f.iToken+1;c.append(" "+JU.SimpleUnitCell.escapeMultiplier(d));a=this.checkPacked(a,0,b,c);if(1094713350==this.tokAt(a)){b.put("centroid",Boolean.TRUE);c.append(" CENTROID");var j=0;this.isFloatParameter(a+1)&&(--a,j=1073742080);a=this.checkPacked(++a,j,b,c)}if(1073742163==this.tokAt(a)){c.append(" SUPERCELL ");if(f.isPoint3f(++a)){j=this.getPoint3f(a,!1);if(j.x!=K(j.x)||j.y!=K(j.y)||j.z!=K(j.z)||1>j.x||1>j.y||1>j.z)f.iToken= +a,this.invArg();a=f.iToken}else j=this.stringParameter(a);c.append(JU.Escape.e(j));b.put("supercell",j);a=this.checkPacked(++a,0,b,c)}j=0;1073742114==this.tokAt(a)&&(a++,j=this.floatParameter(a++),c.append(" range "+j));b.put("symmetryRange",Float.$valueOf(j));var j=null,g,m=-2147483648;134217764==this.tokAt(a)&&(++a,j=JU.PT.rep(this.paramAsStr(a++),"''",'"'),c.append(" spacegroup "+JU.PT.esc(j)),j.equalsIgnoreCase("ignoreOperators")?m=-999:(0==j.length?(g=this.vwr.getCurrentUnitCell(),null!=g&&(j= +g.getSpaceGroupName())):0<=j.indexOf(",")&&9>d.x&&(9>d.y&&0==d.z)&&(j+="#doNormalize=0"),b.put("spaceGroupName",j),m=-2));d=null;if(1814695966==this.tokAt(a)){++a;g=f.optParameterAsString(a);0==g.length?(g=this.vwr.getCurrentUnitCell(),null!=g&&(d=g.getUnitCellAsArray(!0),h=g.getCartesianOffset())):4==this.tokAt(a)?(d=S(6,0),JU.SimpleUnitCell.setAbc(g,d,null)):d=f.floatParameterSet(a,6,9);(null==d||6!=d.length&&9!=d.length)&&this.invArg();c.append(" unitcell [");for(a=0;ac?"cache cleared":c+" bytes "+(1275069441==a?" cached":" removed")));break;default:this.invArg()}});p(k,"calculate",function(){var a=!1,c=!1,b=null,f=null,e=this.e,d=-2147483648,d=-1;if(2<=(e.iToken=e.slen))switch(e.clearDefinedVariableAtomSets(), +this.getToken(1).tok){case 2:if(3!=this.intParameter(1)||!this.paramAsStr(2).equalsIgnoreCase("D"))break;0>this.vwr.am.cmi&&e.errorStr(30,"calculate 3D");b="load append $ filter '2D';select visible;center selected";e.optParameterAsString(3).equalsIgnoreCase("ZAP")&&(b+=";zap modelIndex="+Math.max(this.vwr.am.cmi,0));this.chk||e.runScript(b);return;case 1073741824:this.checkLength(2);break;case 134217764:e.iToken=1;b=2==this.slen?null:this.atomExpressionAt(2);e.checkLast(e.iToken);this.chk||e.showString(""+ +this.vwr.findSpaceGroup(null,b,null,null,null,null,1));return;case 1086324752:e.iToken=1;b=2==this.slen?null:this.atomExpressionAt(2);e.checkLast(e.iToken);this.chk||e.showString(this.vwr.calculateChirality(b));return;case 1631586315:this.checkLength(2);if(this.chk)return;d=this.vwr.calculateFormalCharges(null);this.showString(J.i18n.GT.i(J.i18n.GT.$("{0} charges modified"),d));return;case 1075838996:this.checkLength(2);this.chk||this.vwr.ms.assignAromaticBondsBs(!0,null);return;case 1613238294:2!= +e.slen&&(b=(c=1639976963==this.tokAt(++e.iToken))?this.vwr.bsA():this.atomExpressionAt(e.iToken),!c&&1639976963!=this.tokAt(++e.iToken)&&(f=this.atomExpressionAt(e.iToken)));if(this.chk)return;d=this.vwr.autoHbond(b,f,!1);-2147483648!=d&&e.report(J.i18n.GT.i(J.i18n.GT.$("{0} hydrogen bonds"),Math.abs(d)),!1);return;case 1612709900:a=this.tokAt(2);(c=1073742335==a)?e.iToken++:528443==a&&e.iToken++;b=this.slen==e.iToken+1?null:this.atomExpressionAt(e.iToken+1);null==b&&528443==a&&(b=this.vwr.getAtomBitSet("_C & connected(3) & !connected(double)")); +e.checkLast(e.iToken);this.chk||(this.vwr.addHydrogens(b,0),c&&(null==b&&(b=this.vwr.bsA()),this.vwr.makeConnections(0.1,1E8,515,1073742025,b,b,null,!1,!1,0),this.vwr.ms.assignAromaticBondsBs(!0,null)));return;case 1111492619:e.iToken=1;b=2==this.slen?null:this.atomExpressionAt(2);e.checkLast(e.iToken);this.chk||e.getPartialCharges(b);return;case 1088421903:case 1275068447:this.chk||(1275203608==this.tokAt(2)?(a=4==this.tokAt(3)?this.stringParameter(3):null,b=null!=a||3==this.slen?null:this.atomExpressionAt(3), +b=E(-1,[a,null,b]),this.showString(e.getShapePropertyData(21,"symmetry",b)?b[1]:"")):(b=2==this.slen?this.vwr.bsA():this.atomExpressionAt(2),this.showString(this.vwr.ms.calculatePointGroup(b))));return;case 1111490574:this.checkLength(2);this.chk||(this.vwr.calculateStraightness(),this.vwr.addStateScript("set quaternionFrame '"+this.vwr.getQuaternionFrame()+"'; calculate straightness",!1,!0));return;case 1639976963:b=4>this.slen||this.isFloatParameter(3)?null:this.atomExpressionAt(2);switch(this.tokAt(++e.iToken)){case 4138:break; +case 1111490587:if(this.chk)return;e.showString(this.vwr.getAnnotationParser(!0).calculateDSSRStructure(this.vwr,b));return;case 1073741915:c=!0;d=this.slen==e.iToken+1?-1:K(this.floatParameter(++e.iToken));break;case 0:c=this.vwr.getBoolean(603979826);break;default:this.invArg()}this.chk||this.showString(this.vwr.calculateStructures(b,c,!0,d));return;case 659482:b=e.iToken+1g||g!=d.lastIndexOf(".")-4;f=!1;528411==this.tokAt(j)&&(h=!0,this.tokAt(++j));switch(this.tokAt(j)){case 134222850:n=this.stringParameter(++j);break;case 1073742129:f=!0;case 1611141175:a="y";h=!0;j++;f?(je?JU.PT.rep(n,"10;",""+-e+";"):JU.PT.rep(n,"10",""+ +e)):(j"xyz".indexOf(a))a="y";n=JU.PT.rep(n,"Y",a);break;case 3:case 2:b=this.floatParameter(j++)}if(this.chk)return;if(null!=n){n="set waitformoveto true;"+n+";set waitformoveto "+this.vwr.g.waitForMoveTo;n="capture "+(m?"transparent ":"")+JU.PT.esc(d)+(h?" LOOP;":";")+n+";capture end;";this.e.cmdScript(0,null,n,null);return}f=1073742031;a=new java.util.Hashtable; +m=this.vwr.getInt(553648132);g&&(a.put("streaming",Boolean.TRUE),h||this.showString(J.i18n.GT.o(J.i18n.GT.$("Note: Enable looping using the LOOP keyword just after the file name or {0}"),E(-1,["ANIMATION MODE LOOP"]))),this.showString(J.i18n.GT.o(J.i18n.GT.$("Animation delay based on: {0}"),E(-1,["ANIMATION FPS "+m]))));a.put("captureFps",Integer.$valueOf(m));break;case 102409:case 1073741874:null!=a&&a.put("captureSilent",Boolean.TRUE);case 1073742335:case 1073742334:this.checkLength(-2);f=g;break; +default:this.invArg()}this.chk||null==a||(a.put("type",c),c=Integer.$valueOf(this.vwr.getBackgroundArgb()),a.put("backgroundColor",c),a.put("fileName",d),a.put("quality",Integer.$valueOf(-1)),a.put("endTime",Long.$valueOf(0>=b?-1:System.currentTimeMillis()+Y(1E3*b))),a.put("captureMode",JS.T.nameOf(f).toLowerCase()),a.put("captureLooping",h?Boolean.TRUE:Boolean.FALSE),b=this.vwr.processWriteOrCapture(a),null==b&&(b="canceled"),JU.Logger.info(b))}});p(k,"centerAt",function(){var a=this.getToken(1).tok; +switch(a){case 1073741826:case 96:case 1812599299:break;default:this.invArg()}var c=JU.P3.new3(0,0,0);5==this.slen?(c.x=this.floatParameter(2),c.y=this.floatParameter(3),c.z=this.floatParameter(4)):this.e.isCenterParameter(2)?(c=this.centerParameter(2),this.e.checkLast(this.e.iToken)):this.checkLength(2);!this.chk&&!this.vwr.isJmolDataFrame()&&this.vwr.tm.setCenterAt(a,c)});p(k,"compare",function(){var a=this.e,c=!1,b=!1,f=!1,e=!1,d=!1,h=null,j=null,g=null,m=null,n=null,q=null;a.iToken=0;var t=this.isFloatParameter(1)? +this.floatParameter(++a.iToken):NaN,l=null,C=null,x=null,e=0;if(4115==this.tokAt(1))C=this.vwr.bsA();else if(C=this.atomExpressionAt(1),a.isArrayParameter(++a.iToken))l=a.getPointArray(a.iToken,-1,!1);else if(1153433601!=(e=this.tokAt(a.iToken))&&4115!=e)x=this.atomExpressionAt(a.iToken);var k=null,s=!1,p=!1,u=null,y=JU.BSUtil.copy(C);null!=x&&y.or(x);for(var r=null==l&&null!=x&&y.equals(C),y=r,z=1153433601==e,M=!1,w=a.iToken+1;wt?t=1:!b&&!f&&(b=f=!0);e=0!=t;(z=!c&&null==u&&!p||null!=l)&&J.api.Interface.getInterface("JU.Eigen", +this.vwr,"script");null==n&&null==q&&(p&&null==k&&(k=this.vwr.getAtomBitSet("polyhedra")),null==k?(g=z?this.vwr.getAtomBitSet("spine"):new JU.BS,0>g.nextSetBit(0)?(g=C,m=x):(m=JU.BSUtil.copy(g),g.and(C),m.and(x))):(g=JU.BSUtil.copy(C),m=JU.BSUtil.copy(x),g.and(k),g.and(C),null!=m&&(m.and(k),m.and(x))),n=new JU.Lst,n.addLast(E(-1,[g,m])));r=null;if(y)for(var r=this.vwr.ms.getModelBS(C,!1),k=Array(r.cardinality()),w=0,H=r.nextSetBit(0);0<=H;H=r.nextSetBit(H+1),w++)k[w]=this.vwr.getModelUndeletedAtomsBitSet(H); +else r=JU.BSUtil.newAndSetBit(0),k=E(-1,[C]);for(var F=0,H=r.nextSetBit(0);F=Q&&(Q=-1);break;case 3:null!=r&&this.invArg();u=p=!0;l=(l+1)%2;k[l]=this.floatParameter(g);break;case 12291:268438018!=e&&1275082241!=e&&this.invArg();e=12291;break;case 4114:var L=this.floatParameter(++g),T=this.paramAsStr(++g),U=this.paramAsStr(++g); +this.chk||(w=this.vwr.getFont3D(T,U,L));break;case 2:L=this.intParameter(g);if(p)u=!0,l=(l+1)%2,k[l]=L;else{t=this.vwr.ms.getFirstAtomIndexFromAtomNumber(L,this.vwr.getVisibleFramesBitSet());if(!this.chk&&0>t)return;null!=v&&this.invArg();4<(C[0]=++m)&&a.bad();C[m]=t}break;case 1094713359:q=this.intParameter(++g);break;case 1073742334:268438018!=e&&this.invArg();e=1073742334;break;case 1073742335:268438018!=e&&this.invArg();e=1073742335;break;case 1073742114:u=p=!0;t=-1;break;case 1073741989:case 1073741990:z= +Boolean.$valueOf(1073741989==a.theTok);p=!0;D=1073741990==a.theTok;break;case 1648363544:0<=l&&this.invArg();r=a.encodeRadiusParameter(g,!1,!0);if(null==r)return;r.values=k;g=a.iToken;p=D=!0;z=Boolean.$valueOf(!1);1==A&&(A++,m++,L=JU.BSUtil.copy(y),JU.BSUtil.invertInPlace(L,this.vwr.ms.ac),L.and(this.vwr.ms.getAtomsWithinRadius(5,y,!1,null,null)),H.addLast(L));break;case 12290:case 10:case 1073742325:A++;case 1073742332:case 8:case 1073742330:(0<=t||null!=F)&&this.invArg();m=Array(1);v=a.centerParameter(g, +m);if(O(m[0],"JU.BS")&&(v=y=m[0],!this.chk&&0==y.length()))return;O(v,"JU.P3")&&(m=new JU.Point3fi,m.setT(v),m.mi=q,v=m);4<(m=++n)&&a.bad();g=a.iToken;H.addLast(v);break;case 1715472409:E=this.paramAsStr(g);break;case 1073742188:N=this.floatParameter(++g);break;case 4:L=this.stringParameter(g);JM.Measurement.isUnits(L)||L.equals("default")?h=L:d=L;break;case 1073742164:G=a.tickParamAsStr(g,!1,!0,!0),g=a.iToken,e=12290}(null!=r&&(0<=l||2!=m)||1275082241!=e&&null==F&&2>m&&null==c&&(null==G||1==m))&& +a.bad();null!=d&&0!=d.indexOf(m+":")&&(d=m+":"+d);u&&k[1]h&&(0==h&&(b[0]=1E8),b[1]=b[0],b[0]=0.1);l&&(n||(j=65535),q||(g=1073742025));n=h=0;if(0j&&(j=0);0>m&&(m=0);b=this.vwr.ms.ac;f=null;h=JU.BS.newN(b);if(0b+1||(0>t||h.get(t))||(h.set(t),f[t]=q)}a[2]=f}else a[2]=JU.BSUtil.copy(d);a[1]=c;a[3]=Integer.$valueOf(0);this.vwr.setData(e,a,b,j,g,m,n)}else"occupany".equals(e)&&(e="occupancy"),j=JM.AtomCollection.getUserSettableType(e),-1g;g++)h[g]=new JU.V3,h[g].setT(this.centerParameter(++b)),b=a.iToken}if(null!=j)for(b=3;0<=--b;)switch(g=j.get(b),g.tok){case 7:h[b]=JU.V3.new3(JS.SV.fValue(g.getList().get(0)), +JS.SV.fValue(g.getList().get(1)),JS.SV.fValue(g.getList().get(2)));break;case 8:h[b]=JU.V3.newV(g.value)}b=a.iToken;break;case 12289:h=this.centerParameter(++b);b=a.iToken;break;case 1094713359:h=Integer.$valueOf(this.intParameter(++b));break;case 12291:h=Boolean.TRUE,this.checkLength(b+1)}if(null==h)switch(a.theTok){case 1073742335:e="on";h=Boolean.TRUE;break;case 1073742334:e="on";h=Boolean.FALSE;break;case 536875059:this.isFloatParameter(b+1)?h=Float.$valueOf(this.floatParameter(++b)):a.isCenterParameter(b)? +(b=this.centerParameter(b),h=S(-1,[b.x,b.y,b.z])):h=a.floatParameterSet(++b,3,3);b=a.iToken;break;case 12290:case 10:case 1073742325:e="atoms";h=this.atomExpressionAt(b);b=a.iToken;break;case 1765808134:case 603979967:case 1073742074:f=this.getColorTrans(a,b,!0,c);b=a.iToken;continue;case 1073742075:h=this.paramAsStr(++b)}null==h&&this.invArg();this.setShapeProperty(20,e.toLowerCase(),h)}this.finalizeObject(20,c[0],f,0,!1,null,0,null);this.setShapeProperty(20,"thisID",null)}else a.setShapeSizeBs(20, +c,null)});p(k,"image",function(){this.chk||this.vwr.getConsole();var a=1,c=null;1073741974==this.tokAt(1)&&(c=this.e.optParameterAsString(++a),a++);var b=this.e.optParameterAsString(a),f=this.e.optParameterAsString(this.slen-1).equalsIgnoreCase("close");if(!f&&(this.slen==a||this.slen==a+2))b=this.slen==a+2?this.intParameter(a++):-1,a=0>b?-1:this.intParameter(a),f=new java.util.Hashtable,f.put("fileName","\u0001\u0001"+c),f.put("backgroundColor",Integer.$valueOf(this.vwr.getBackgroundArgb())),f.put("type", +"png"),f.put("quality",Integer.$valueOf(-1)),f.put("width",Integer.$valueOf(b)),f.put("height",Integer.$valueOf(a)),this.chk||this.vwr.processWriteOrCapture(f);else{if(f)switch(this.slen){case 2:b="closeall";break;case 3:case 4:break;default:this.checkLength(0)}this.chk||this.vwr.fm.loadImage(f?"\u0001close":b,"\u0001"+b+"\u0001"+("".equals(c)||null==c?null:c),!1)}});p(k,"invertSelected",function(){var a=this.e,c=null,b=null,f=null,e=-2147483648,d=1;switch(this.tokAt(1)){case 0:if(this.chk)return; +f=this.vwr.bsA();c=this.vwr.ms.getAtomSetCenter(f);this.vwr.invertAtomCoord(c,null,f,-1,!1);return;case 528443:case 1153433601:d++;case 10:case 1073742325:case 12290:f=this.atomExpressionAt(d);if(!a.isAtomExpression(a.iToken+1)){a.checkLengthErrorPt(a.iToken+1,a.iToken+1);if(!this.chk)for(a=f.nextSetBit(0);0<=a;a=f.nextSetBit(a+1))this.vwr.invertAtomCoord(null,null,f,a,!1);return}e=f.nextSetBit(0);f=this.atomExpressionAt(a.iToken+1);break;case 134217751:c=a.centerParameter(2,null);break;case 134217750:b= +a.planeParameter(1,!1);break;case 134219777:b=a.hklParameter(2,null,!0)}a.checkLengthErrorPt(a.iToken+1,1);null==b&&(null==c&&-2147483648==e)&&this.invArg();this.chk||-1!=e&&this.vwr.invertSelected(c,b,e,f)});p(k,"mapProperty",function(){for(var a,c,b,f,e,d=0,h=0,j=0,g=this.e;;){if(1113589787==this.tokAt(1))a=this.vwr.bsA(),c=this.atomExpressionAt(2),b=f="selected";else{a=this.atomExpressionAt(1);if(1073742336!=this.tokAt(++g.iToken)||!JS.T.tokAttr(d=this.tokAt(++g.iToken),1077936128))break;b=this.paramAsStr(g.iToken); +c=this.atomExpressionAt(++g.iToken);if(1073742336!=this.tokAt(++g.iToken)||!JS.T.tokAttr(h=this.tokAt(++g.iToken),2048))break;f=this.paramAsStr(g.iToken)}e=JS.T.tokAttr(j=this.tokAt(g.iToken+1),1077936128)?this.paramAsStr(++g.iToken):JS.T.nameOf(j=1094715393);g.checkLast(g.iToken);if(this.chk)return;var m=null;this.showString("mapping "+b.toUpperCase()+" for "+a.cardinality()+" atoms to "+f.toUpperCase()+" for "+c.cardinality()+" atoms using "+e.toUpperCase());if(JS.T.tokAttrOr(d,1094713344,1111490560)&& +JS.T.tokAttrOr(h,1094713344,1111490560)&&JS.T.tokAttrOr(j,1094713344,1111490560)){var n=this.getBitsetPropertyFloat(a,d|224,null,NaN,NaN),q=this.getBitsetPropertyFloat(a,j|224,null,NaN,NaN),d=this.getBitsetPropertyFloat(c,j|224,null,NaN,NaN),t=1715472409==h,l=S(t?this.vwr.ms.ac:d.length,0),m=new JU.BS;if(n.length==q.length){for(var k=new java.util.Hashtable,j=0;jb[j].indexOf("null")&&a.append(b[j]).appendC("\n");JU.Logger.debugging&&JU.Logger.debug(a.toString());b=JU.BSUtil.copy(this.vwr.slm.bsSubset); +this.vwr.slm.setSelectionSubset(c);try{g.runScript(a.toString())}catch(B){if(R(B,Exception))c=B,this.vwr.slm.setSelectionSubset(b),g.errorStr(-1,"Error: "+c.getMessage());else if(R(B,Error))c=B,this.vwr.slm.setSelectionSubset(b),g.errorStr(-1,"Error: "+c.toString());else throw B;}this.vwr.slm.setSelectionSubset(b)}this.showString("DONE");return}this.invArg()});p(k,"minimize",function(a){for(var c=null,b=2147483647,f=0,e=!1,d=!1,h=null,j=!1,g=!1,m=this.vwr.getMinimizer(!1),n=0,q=a?2:1;qa&&!this.isFloatParameter(q);)b[++a]=this.atomExpressionAt(q).nextSetBit(0), +q=this.e.iToken+1;b[0]=a;1==a&&this.invArg();c=this.floatParameter(this.e.checkLast(q))}this.chk||this.vwr.getMinimizer(!0).setProperty("constraint",E(-1,[b,Float.$valueOf(c)]));return;case 12293:1!=q&&this.invArg();if(this.slen==++q){this.chk||(q=this.vwr.getMinimizer(!0).getProperty("fixed",0),null==q?this.e.showString("no atoms are fixed for minimization"):(a=q.cardinality(),this.e.showString(a+(1==a?" atom is":" atoms are")+" fixed for minimization: "+q+"\nunfix them with MINIMIZE FIX NONE"))); +return}h=this.atomExpressionAt(q);0>h.nextSetBit(0)&&(h=null);q=this.e.iToken;this.chk||this.vwr.getMinimizer(!0).setProperty("fixed",h);if(q+1==this.slen)return;continue;case 1073741828:e=!0;continue;case 1073742072:case 1113589787:j=!0;break;case 1086324742:g=!0;break;case 1073742148:d=!0;break;case 266298:b=this.intParameter(++q);continue;case 10:case 1073742325:j=!0;case 1275082241:1275082241==this.e.theTok&&q++;c=this.atomExpressionAt(q);q=this.e.iToken;1073742072==this.tokAt(q+1)&&(q++,j=!0); +continue;default:this.invArg()}a&&(e||j||g)&&this.invArg();if(!this.chk)try{this.vwr.minimize(this.e,b,f,c,h,null,n,(e?16:0)|(a?256:0)|(j?32:0)|(g?64:0)|(d?1:0))}catch(t){if(R(t,Exception))throw new JS.ScriptInterruption(this.e,"minimize",1);throw t;}},"~B");p(k,"modulation",function(){var a=null,c=this.e,b=!0,f=!1,e=null,d=1;switch(this.getToken(d).tok){case 1073742334:b=!1;case 0:case 1073742335:break;case 12290:case 10:case 1073742325:e=this.atomExpressionAt(1);switch(this.tokAt(c.iToken+1)){case 1073742334:b= +!1;case 1073742335:c.iToken++}c.checkLast(c.iToken);break;case 1073742332:case 8:a=c.getPoint3f(1,!1,!0);f=1073742335==this.tokAt(c.iToken+1);break;default:var h=c.theToken.value.toString();d++;h.equalsIgnoreCase("t")?c.theTok=3:h.equalsIgnoreCase("m")||h.equalsIgnoreCase("q")?c.theTok=2:this.invArg();case 3:case 2:switch(c.theTok){case 3:this.isFloatParameter(d)?(a=this.floatParameter(d),a=JU.P3.new3(a,a,a)):a=c.getPoint3f(d,!1,!0);break;case 2:2==this.tokAt(d)?(f=this.intParameter(d),a=JU.P3.new3(f, +f,f)):a=c.getPoint3f(d,!1,!0),f=!0}break;case 536875059:b=this.floatParameter(2);this.chk||this.vwr.setFloatProperty("modulationScale",b);return}this.chk||(this.vwr.tm.setVibrationPeriod(0),this.vwr.setModulation(e,b,a,f))});p(k,"mutate",function(){var a=this.e.iToken,c,b=null,f=null,e=null,d=!1;switch(this.tokAt(++a)){case 1073741904:b="alpha";d=!0;c=null;switch(this.tokAt(++a)){case 0:this.invArg();break;default:switch(f=this.e.paramAsStr(a),a=this.e.iToken,this.tokAt(a+1)){case 0:break;case 268437504:case 1073742195:case 7:b= +null;e=this.e.floatParameterSet(++a,2,2147483647);1==e.length%2&&this.invArg();a=this.e.iToken;break;default:b=this.e.paramAsStr(++a),a=this.e.iToken}}break;case 2:this.st[1]=JS.T.o(4,""+this.st[1].value);default:c=this.atomExpressionAt(a);a=++this.e.iToken;break;case 268441089:c=this.vwr.getFrameAtoms(),a=++this.e.iToken}if(!this.chk&&null!=c){c.and(this.vwr.getFrameAtoms());var h=c.nextSetBit(0);0>h&&this.invArg();h=this.vwr.ms.at[h].mi;if(this.vwr.ms.isTrajectory(h)||!this.vwr.ms.am[h].isBioModel)return}null== +f&&(f=this.e.optParameterAsString(a));this.e.checkLast(a);if(!this.chk){a=f.startsWith("~");if(!a&&!d&&(0<=f.indexOf(".")||0>f.indexOf("-")&&3d&&this.invArg();!this.chk&&0b&&c.errorStr(30,"plot");var b=this.vwr.ms.getJmolDataSourceFrame(b),f=a.length-1,e=a!==this.st,d=!0,h=this.st;e&&(c.st=this.st=a);var j=e?134222350:a[0].tok,g=e||134221850==j||4138==j?0:1,m=null,n=!0,q=!1;switch(j){case 135176:n=!1;q=!0; +break;case 134222350:d=n=!1;break;case 134221856:n=!1,4==JS.CmdExt.tokAtArray(f,a)?m=this.stringParameter(f--):1073742336==JS.CmdExt.tokAtArray(f-1,a)?(m=this.paramAsStr(f-2)+"."+this.paramAsStr(f),f-=3):(c.st=this.st=h,c.iToken=this.st.length,this.error(13)),c.slen=this.slen=f+1}var e="",t=null,l="",k=!1,p=!1,B=!1,s=!1,D=Array(3),u=P(3,0),y=JU.BSUtil.copy(this.vwr.bsA()),r="; select "+JU.Escape.eBS(y)+";\n ",s=c.optParameterAsString(f).toLowerCase(),z=null,M=null,w=null,H=JS.CmdExt.tokAtArray(g, +a);4==H&&(H=JS.T.getTokFromName(a[g].value));switch(H){default:c.iToken=1;this.invArg();break;case 134221834:c.iToken=1;s="data";r="";break;case 1715472409:c.iToken=g+1;for(a=0;3>a;a++){switch(this.tokAt(c.iToken)){case 4:u[a]=JS.T.getTokFromName(c.getToken(c.iToken).value);break;default:u[a]=this.tokAt(c.iToken);break;case 0:0==a&&this.invArg();case 1287653388:case 32:case 64:a=2;continue}1715472409!=u[a]&&!JS.T.tokAttr(u[a],1077936128)&&this.invArg();D[a]=this.getToken(c.iToken).value.toString(); +c.iToken++}1287653388==this.tokAt(c.iToken)&&(w=this.stringParameter(++c.iToken),d=!1,c.iToken++);32==this.tokAt(c.iToken)&&(z=this.getPoint3f(++c.iToken,!1),c.iToken++);64==this.tokAt(c.iToken)&&(M=this.getPoint3f(++c.iToken,!1),c.iToken++);s="property "+D[0]+(null==D[1]?"":" "+D[1])+(null==D[2]?"":" "+D[2]);0>y.nextSetBit(0)&&(y=this.vwr.getModelUndeletedAtomsBitSet(b));l="select "+JU.Escape.eBS(y)+";\n ";break;case 4138:s.equalsIgnoreCase("draw")&&(s=c.optParameterAsString(--f).toLowerCase()); +s=f>g&&s.startsWith("r");s="ramachandran"+(s?" r":"")+(135176==j?" draw":"");break;case 134221850:case 136314895:e=' "'+this.vwr.getQuaternionFrame()+'"';l="set quaternionFrame"+e+";\n ";k=!0;s.equalsIgnoreCase("draw")&&(q=!0,s=c.optParameterAsString(--f).toLowerCase());B=(p=s.startsWith("deriv")||s.startsWith("diff"))&&0=q.x&&(q.x=1);JS.T.tokAttr(u[1],1094713344)?(q.y=1,t.y=0):0.1=q.y&&(q.y=1);JS.T.tokAttr(u[2],1094713344)?(q.z=1,t.z=0):0.1=q.z&&(q.z=1);if(null==D[2]||null==D[1])t.z=z.z=M.z=q.z=0;for(a=0;a=n?"radius":"radius1";u=Float.$valueOf(n=0==n?0:this.floatParameter(r)); +f=!0;break;case 1073742066:this.isFloatParameter(r+1)?p=this.floatParameter(++r):(k=this.e.centerParameter(++r,null),r=a.iToken);s=!0;continue;case 1073741937:this.setShapeProperty(21,"collapsed",null);case 1073742099:case 1073741924:z=JS.T.nameOf(a.theTok);switch(this.tokAt(r+1)){case 268440324:case 268436992:r++}u=Float.$valueOf(this.floatParameter(++r));break;case 1094717454:null==B&&this.invArg();z="model";u=Integer.$valueOf(this.intParameter(++r));break;case 1073742170:(1=w&&this.invArg(),H=JS.SV.iValue(this.tokenAt(b++,a)),0>=H&&this.invArg())}if(f=w&&this.invArg(),H=JS.SV.iValue(this.tokenAt(++b,a)),0>=H&&this.invArg()),2==JS.CmdExt.tokAtArray(b+1,a)&&(G=JS.SV.iValue(this.tokenAt(++b,a)))):JU.PT.isOneOf(s.toLowerCase(),";xyz;xyzrn;xyzvib;mol;mol67;sdf;v2000;v3000;json;pdb;pqr;cml;cif;cifp1;pwmat;pwslab;qcjson;xsf;")&&(g=s.toUpperCase(),b+1==p&&b++);g.equals("IMAGE")&&JU.PT.isOneOf(s.toLowerCase(),";jpg;jpeg;jpg64;jpeg64;gif;gift;pdf;ppm;png;pngj;pngt;scene;")&& +(g=s.toUpperCase(),G=-2147483648,b++)}b+2==p&&JS.SV.sValue(this.tokenAt(++b,a));switch(JS.CmdExt.tokAtArray(b,a)){case 0:n=!0;break;case 1073741884:break;case 805307393:v=g.equals("IMAGE")?"?jmol.png":"?jmol."+g.toLowerCase();break;case 1073741824:case 4:v=JS.SV.sValue(this.tokenAt(b,a));if(v.equalsIgnoreCase("clipboard")||!this.vwr.haveAccess(JV.Viewer.ACCESS.ALL))v=null;break;default:this.invArg()}if(g.equals("IMAGE")||g.equals("FRAME")||g.equals("VIBRATION"))g=null!=v&&0<=v.indexOf(".")?v.substring(v.lastIndexOf(".")+ +1).toUpperCase():"JPG";if(g.equals("ISOSURFACE")||g.equals("CONTACT"))q=g.equals("CONTACT"),g=null!=v&&0<=v.indexOf(".")?v.substring(v.lastIndexOf(".")+1).toUpperCase():"JVXL",g.equals("PMESH")?g="ISOMESH":g.equals("PMB")&&(g="ISOMESHBIN");t=JU.PT.isOneOf(g.toLowerCase(),";jpg;jpeg;jpg64;jpeg64;gif;gift;pdf;ppm;png;pngj;pngt;scene;");if(!t&&(g.equals("MNU")?g="MENU":g.equals("WRL")||g.equals("VRML")?(g="Vrml",F=!0):g.equals("X3D")?(g="X3d",F=!0):g.equals("STL")?(g="Stl",F=!0):g.equals("IDTF")?(g= +"Idtf",F=!0):g.equals("MA")?(g="Maya",F=!0):g.equals("JS")?(g="Js",F=!0):g.equals("OBJ")?(g="Obj",F=!0):g.equals("JVXL")?g="ISOSURFACE":g.equals("XJVXL")?g="ISOSURFACE":g.equals("JMOL")?g="ZIPALL":g.equals("HIS")&&(g="HISTORY"),g.equals("COORD")||g.equals("COORDS")))g=null!=v&&0<=v.indexOf(".")?v.substring(v.lastIndexOf(".")+1).toUpperCase():"XYZ";null!=e&&(JV.FileManager.isJmolType(g)||this.invArg(),g.equals("PNG")&&(g="PNGJ"));!t&&(!F&&!JU.PT.isOneOf(g,";SCENE;JMOL;ZIP;ZIPALL;SPT;HISTORY;MO;NBO;ISOSURFACE;MESH;PMESH;PMB;ISOMESHBIN;ISOMESH;VAR;FILE;FUNCTION;CFI;CIF;CIFP1;CML;JSON;XYZ;XYZRN;XYZVIB;MENU;MOL;MOL67;PDB;PGRP;PQR;PWMAT;PWSLAB;QUAT;RAMA;SDF;V2000;V3000;QCJSON;XSF;INLINE;"))&& +c.errorStr2(54,"COORDS|FILE|FUNCTIONS|HISTORY|IMAGE|INLINE|ISOSURFACE|JMOL|MENU|MO|NBO|POINTGROUP|QUATERNION [w,x,y,z] [derivative]|RAMACHANDRAN|SPT|STATE|VAR x|ZIP|ZIPALL|CLIPBOARD","CIF|CIFP1|CML|CFI|GIF|GIFT|JPG|JPG64|JMOL|JVXL|MESH|MOL|PDB|PMESH|PNG|PNGJ|PNGT|PPM|PQR|PWMAT|PWSLAB|SDF|CD|JSON|QCJSON|V2000|V3000|SPT|XJVXL|XSF|XYZ|XYZRN|XYZVIB|ZIP"+k.toUpperCase().$replace(";","|"));if(this.chk)return"";var b=Array(1),A,f=this.vwr.getBoolean(603979934);if(F){f&&JU.Logger.startTimer("export");d=new java.util.Hashtable; +d.put("type",g);null!=v&&d.put("fileName",v);(m||null!=v)&&d.put("fullPath",b);d.put("width",Integer.$valueOf(w));d.put("height",Integer.$valueOf(H));try{l=this.vwr.generateOutputForExport(d)}catch(K){if(R(K,Exception))return l=K.toString();throw K;}if(null==l||0==l.length)return"";if(n)return l;if(!g.equals("Povray")&&!g.equals("Idtf")||null==b[0])return this.writeMsg(l);d=g.equals("Idtf")?".tex":".ini";v=b[0]+d;A=new java.util.Hashtable;A.put("fileName",v);A.put("type",d);A.put("text",l);A.put("fullPath", +b);d=this.vwr.processWriteOrCapture(A);g.equals("Idtf")&&(l=l.substring(0,l.indexOf("\\begin{comment}")));l="Created "+b[0]+":\n\n"+l;f&&this.showString(JU.Logger.getTimerMsg("export",0));null!=d&&((g=!d.startsWith("OK"))&&c.evalError(d,null),c.report(l,g));return""}F=null;k=!1;if(null==l){l=g.intern();if("MENU"===l)l=this.vwr.getMenu("");else if("PGRP"===l)l=this.vwr.ms.getPointGroupAsString(this.vwr.bsA(),null,0,1,null,null,B.equals("draw")?"":null);else if("PDB"===l||"PQR"===l)n?l=this.vwr.getPdbAtomData(null, +null,"PQR"===l,z):(k=!0,g="PDB_"+l+"-coord "+z);else if("FILE"===l)"?".equals(v)&&(v="?Jmol."+this.vwr.getP("_fileType")),n?l=this.e.getCurrentModelFileAsString(null):k=!0;else if(JU.PT.isOneOf(l,";CIF;CIFP1;SDF;MOL;MOL67;V2000;V3000;CD;JSON;XYZ;XYZRN;XYZVIB;CML;QCJSON;PWMAT;PWSLAB;XSF;")){a=this.vwr.bsA();this.vwr.setErrorMessage(null," ("+a.cardinality()+" atoms)");l=this.vwr.getModelExtract(a,z,!1,l);d=this.vwr.getErrorMessageUn();this.vwr.setErrorMessage(null,null);if(0<=this.vwr.am.cmi&&!a.equals(A= +this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi)))d+="\nNote! Selected atom set "+a+" is not the same as the current model "+A;l.startsWith("ERROR:")&&(F=l)}else if("CFI"===l)l=this.vwr.getModelFileData("selected","cfi",!1);else if("FUNCTION"===l)l=this.vwr.getFunctionCalls(null),g="TXT";else if("VAR"===l)null==u&&(u=c.getParameter(JS.SV.sValue(this.tokenAt(m?2:1,a)),1073742190,!0)),a=null,15==u.tok?(a=new JU.Lst,a.addLast(u.value.data)):6==u.tok&&(a=null==v?new JU.Lst:this.prepareBinaryOutput(u)), +null==a?(l=u.asString(),g="TXT"):null!=v&&(A=new java.util.Hashtable,A.put("data",a),null==(F=l=this.vwr.createZip(v,1==a.size()||v.endsWith(".png")||v.endsWith(".pngj")?"BINARY":"ZIPDATA",A))&&c.evalError("#CANCELED#",null));else if("SPT"===l)if(z)A=this.vwr.ms.getTaintedAtoms(2),this.vwr.setAtomCoordsRelative(JU.P3.new3(0,0,0),null),l=this.vwr.getStateInfo(),this.vwr.ms.setTaintedAtoms(A,2);else{if(l=this.vwr.getStateInfo(),null!=h||null!=j)l=JV.FileManager.setScriptFileReferences(l,h,j,null)}else"ZIP"=== +l||"ZIPALL"===l?null!=v&&(A=new java.util.Hashtable,null!=e&&A.put("data",e),null==(F=l=this.vwr.createZip(v,g,A))&&c.evalError("#CANCELED#",null)):"HISTORY"===l?(l=this.vwr.getSetHistory(2147483647),g="SPT"):"MO"===l||"NBO"===l?(l=this.getMoJvxl(2147483647,"NBO"===l),g="XJVXL"):"PMESH"===l||"PMB"===l?(null==(l=this.getIsosurfaceJvxl(29,l))&&this.error(31),g="XJVXL"):"ISOMESH"===l?(null==(l=this.getIsosurfaceJvxl(24,l))&&this.error(31),g="PMESH"):"ISOMESHBIN"===l?(null==(F=this.getIsosurfaceJvxl(24, +"ISOMESHBIN"))&&this.error(31),g="PMB"):"ISOSURFACE"===l||"MESH"===l?(null==(l=this.getIsosurfaceJvxl(q?25:24,l))&&this.error(31),g=0<=l.indexOf("G&&(G=-1));null==l&&(l="")}if(!m)return l;if(n)return c.showStringPrint(l,!0),"";if(null!=F&&"string"==typeof F)return this.writeMsg(F);if(k)return this.writeMsg(this.vwr.writeFileData(v,g,0,null));if(g.equals("SCENE"))F= +r;else if(null==F&&(!t||null!=v))F=l;f&&JU.Logger.startTimer("write");t&&(c.refresh(!1),0>w&&(w=D?250:this.vwr.getScreenWidth()),0>H&&(H=D?250:this.vwr.getScreenHeight()));A=new java.util.Hashtable;null!=v&&A.put("fileName",v);A.put("backgroundColor",Integer.$valueOf(this.vwr.getBackgroundArgb()));A.put("type",g);if(D){A.put("is2D",Boolean.TRUE);var N,c="smiles could not be generated";try{if(N=this.vwr.getOpenSmiles(null),0this.vwr.am.cmi&&a.errorStr(30,"show "+a.theToken.value);d=this.plot(this.st);j=this.slen;break;case 14:case 1112152078:this.chk||(d=this.getContext(!1));break;case 1073741888:h=a.optParameterAsString(2);0");break}j=3;c=this.paramAsStr(2);this.chk||(null==f&&this.vwr.sm.clearConsole(),d=this.vwr.getFileAsString3(c,!0,null));break;case 4115:d=1073742327==this.tokAt(2)&&0<(j=3)?this.vwr.getModelFileInfoAll():this.vwr.getModelFileInfo();break;case 1610616855:h=2==(j=this.slen)?2147483647:this.intParameter(2);1>h&&this.invArg();this.chk|| +(this.vwr.sm.clearConsole(),0==a.scriptLevel&&this.vwr.removeCommand(),d=this.vwr.getSetHistory(h));break;case 135180:this.chk||(d=this.getShapeProperty(24,"jvxlDataXml"));break;case 1073877011:case 1073877010:a.optParameterAsString(2).equalsIgnoreCase("list")?(this.e.sm.loadShape(27),d=this.chk?"":this.getShapeProperty(27,"list -1"),j=3):(n=2==(j=this.slen)?-2147483648:this.intParameter(2),this.chk||(d=this.getMoJvxl(n,1073877011==h)));break;case 1094717454:this.chk||(d=this.vwr.ms.getModelInfoAsString()); +break;case 537006096:this.chk||(d=this.vwr.getMeasurementInfoAsString());break;case 1073741864:j=3;!this.chk&&this.slen==j&&(d=this.paramAsStr(2),d=this.vwr.getOrientation(JS.T.getTokFromName(d.equals("box")?"volume":d.equals("rotation")?"best":d),"best",null,null).toString());break;case 1073742132:h=this.tokAt(2),0==h?h=1073742132:j=3;case 1073742178:case 4129:this.chk||(d=this.vwr.getOrientation(h,null,null,null).toString());break;case 1073742077:j=2;if(3f[d].toLowerCase().indexOf(c)==b&&e.append(f[d]).appendC("\n");return e.toString()},"~S,~S");p(k,"stereo",function(){for(var a= +J.c.STER.DOUBLE,c=-5,b=!1,f=null,e=0,d=1;dp&&g[3].scale(-p);!Float.isNaN(x)&&0!=x&&(B&&(x=x/100*g[3].length()),g[0].scaleAdd2(x,D,g[0]));s&&g[0].scaleAdd2(-g[3].length(),D,g[0]);n="surface"+K(l.x)+ +K(l.y)+K(l.z);break;case 536875059:case 1073742163:d=536875059==l?b.getPointOrPlane(++a,19):b.checkHKL(b.getFractionalPoint(++a));a=b.iToken;if(this.chk)break;g=k.getUnitCellVectors();g[1].scale(Math.abs(d.x));g[2].scale(Math.abs(d.y));g[3].scale(Math.abs(d.z));d=null;n="supercell";break;case 1073741938:d=b.getFractionalPoint(++a);a=b.iToken;if(this.chk)break;d=JU.SimpleUnitCell.ptToIJK(b.checkHKL(d),1);break;case 135180:case 1073742330:j=b.objectNameParameter(++a);break;case 1812599299:b.iToken= +a;if(this.chk)break;g=JU.P3.newP(this.vwr.getBoundBoxCenter());d=this.vwr.getBoundBoxCornerVector();g.sub(d);g=E(-1,[g,JU.P3.new3(2*d.x,0,0),JU.P3.new3(0,2*d.y,0),JU.P3.new3(0,0,2*d.z)]);d=null;break;case 1073742176:12!=this.tokAt(++a)&&this.invArg();if(this.chk)break;m=E(-1,[this.getToken(a).value]);break;case 11:case 12:m=this.getToken(a).value;break;case 12289:switch(this.tokAt(++a)){case 12290:case 10:case 1073742325:d=this.vwr.ms.getAtomSetCenter(this.atomExpressionAt(a));a=b.iToken;if(this.chk)break; +this.vwr.toFractional(d,!0);break;default:if(b.isCenterParameter(a)){d=this.centerParameter(a);a=b.iToken;break}this.invArg()}d.x-=0.5;d.y-=0.5;d.z-=0.5;break;case 12290:case 10:case 1073742325:e=this.atomExpressionAt(a).nextSetBit(0);a=b.iToken;this.chk||this.vwr.am.setUnitCellAtomIndex(e);if(0>e)return;break;case 1073742066:if(e=!0,b.isAtomExpression(a+1)){d=b.centerParameter(++a,null);a=b.iToken;if(this.chk)break;this.vwr.toFractional(d,!1);break}case 1073742114:d=b.getFractionalPoint(++a);if(O(d, +"JU.P4"))e&&this.invArg();else{a=b.iToken;if(this.chk)break;d=!e&&555>d.x?JU.SimpleUnitCell.ptToIJK(b.checkHKL(d),1):JU.P4.new4(d.x,d.y,d.z,e?1:0)}break;case 3:case 2:if(111>this.floatParameter(a)){a--;break}f=this.intParameter(a);break;case 4:case 1073741824:p=this.paramAsStr(a).toLowerCase();if(p.equals("rhombohedral")||p.equals("r")){if(null!=k&&0==k.getUnitCellInfoType(7))return;p="2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"}else if(p.equals("trigonal")||p.equals("hexagonal")){if(null!=k&& +0==k.getUnitCellInfoType(8))return;p="a-b,b-c,a+b+c"}n=p;if(0<=p.indexOf(",")||this.chk){m=p;break}e=null;this.vwr.ms.setModelCagePts(-1,null,null);m=this.vwr.getModelInfo("unitcell_conventional");l=null!=this.vwr.getModelInfo("isprimitive");if(JU.PT.isOneOf(n,";parent;standard;primitive;")){if(null==m&&l){this.showString("Cannot convert unit cell when file data is primitive and have no lattice information");return}n.equals("primitive")&&4==this.tokAt(a+1)&&(e=this.paramAsStr(++a).toUpperCase())}O(m, +Array)&&(g=m);null==e&&(e=this.vwr.getModelInfo("latticeType"));null!=m&&(this.vwr.ms.setModelCagePts(-1,this.vwr.getV0abc(-1,m),""+m),m=null);if(!n.equals("conventional"))if(this.setShapeProperty(34,"labels",null),p=this.vwr.getModelInfo("unitcell_"+n),null==p){if((p=n.equals("primitive"))||n.equals("reciprocal")){x=this.slen==a+1?1:2==this.tokAt(a+1)?3.141592653589793*this.intParameter(++a):this.floatParameter(++a);n=(null==k?"":k.getSpaceGroupName()+" ")+n;g=null==k?E(-1,[JU.P3.new3(0,0,0),JU.P3.new3(1, +0,0),JU.P3.new3(0,1,0),JU.P3.new3(0,0,1)]):k.getUnitCellVectors();null==e&&(e=this.vwr.getSymmetryInfo(this.vwr.getFrameAtoms().nextSetBit(0),null,0,null,null,null,1073741994,null,0,-1,0,null));null==k&&(k=this.vwr.getSymTemp());l||k.toFromPrimitive(!0,0==e.length?"P":e.charAt(0),g,this.vwr.getCurrentModelAuxInfo().get("primitiveToCrystal"));p||JU.SimpleUnitCell.getReciprocal(g,g,x);break}}else n=p,0<=p.indexOf(",")&&(m=p);break;default:e=Array(1),this.getUnitCellParameter(a,e)?g=e[0]:m=e[0],null== +m&&null==g?this.slen>a+1?(d=b.getFractionalPoint(a),a=b.iToken):a--:null!=m?(!this.chk&&c&&(null==k?this.vwr.getModelkit(!1).cmdAssignSpaceGroup(null,"P1",m,!1,!1,"unitcell"):k.fixUnitCell(m)&&b.invArgStr("Unit cell is incompatible with current space group")),a=b.iToken):null!=g&&(a=b.iToken)}e=b.getSetAxesTypeMad10(++a);b.checkLast(b.iToken);if(!(this.chk||2147483647==e)){2147483647==e&&this.vwr.am.setUnitCellAtomIndex(-1);null==g&&null!=m&&(g=this.vwr.getV0abc(-1,m));if(2147483647!=f)null!=k&&k.setOffset(f); +else if(null!=j)this.vwr.setCurrentCage(j);else if(q||null!=g)if(q=c||null==k?this.vwr.getModelkit(!1).transformAtomsToUnitCell(k,g,n):!0){if(c&&null!=k){this.vwr.ms.setSpaceGroup(this.vwr.am.cmi,k.getUnitCell(g,!1,null),null);return}this.vwr.ms.setModelCagePts(-1,g,n);null==k&&this.vwr.setNewRotationCenter(this.e.getUnitCellCenter())}b.setObjectMad10(33,"unitCell",e);null!=d&&(k=this.vwr.ms.getUnitCell(-2147483648),null!=k&&k.setOffsetPt(d));null!=h&&this.setShapeProperty(33,"tickInfo",h);null!= +n&&this.showString(n+(null==g?"":" "+JU.Escape.e(g)))}},"~N,~B");p(k,"getUVBoxFromHKL",function(a,c,b){var f=K(c.x),e=K(c.y),d=K(c.z);for((0==f&&0==e&&0==d||f!=c.x||e!=c.y||d!=c.z)&&this.invArg();0==f%2&&0==e%2&&0==d%2;)f/=2,e/=2,d/=2;c=a.getUnitCellVectors();for(var h=b.w,j=JU.P4.new4(b.x,b.y,b.z,0),g=Math.max(Math.max(f,e),d),g=JU.Measure.getLatticePoints(a.getLatticeCentering(),g,g,g),m=g.size();0<=--m;)a.toCartesian(g.get(m),!0);for(var g=JU.Measure.getPointsOnPlane(g.toArray(Array(g.size())), +j),j=new JU.P3,m=-179,n=3.4028235E38,k=3.4028235E38,p=a=null,l=m,C=3.4028235E38,x,B,s,D,u=g.size();0<=--u;){var y=g.get(u);x=y.length();s=!1;if(!(0.01>x||null!=a&&(l=Math.abs(JU.Measure.computeTorsion(a,j,b,y,!0)))>-m))if(D=1>l,null==a)a=y,n=x;else{if(x=k+0.01))continue;s||(B=89=y.y&&(3.4028235E38==C||89>C)?(D?(p=null,k=3.4028235E38):(p=a,k=n),a=y,n=x,!s&&ll&&l>m+0.01&&(m=l,B=y);else l=JU.Measure.computeTorsion(a,j,b,p,!0),1f?1:0)+(0>e?1:0)+(0>d?1:0))%2;g=c[3];j=JU.P3.newP(B);m=JU.P3.newP(a);0==f&&0==e?(m.scale(-1),j.scale(-1),c[1]=j,c[2]=m):!(0==f&&0==d)&&(0==e&&0==d)&&(j.scale(-1),m.scale(-1),c[1]=m,c[2]=j);b&&(j=c[1],c[1]=c[2],c[2]=j);g.cross(a,B);g.normalize(); +g.scale(h);return c},"J.api.SymmetryInterface,JU.P4,JU.P4");p(k,"modelkit",function(){var a=0,c=this.tokAt(1);switch(c){case 603984065:case 4139:this.chk&&this.e.cmdUndoRedo(603984065==c?4165:4140);return;case 1073742334:if(this.e.$isStateScript&&this.vwr.getModelkit(!1).setProperty("updatekeysfromstate",null),2==this.slen&&null==this.vwr.getModelkitPropertySafely("exists"))return;case 0:case 1073742335:this.chk||this.vwr.setBooleanProperty("modelkitmode",1073742334!=c);if(0==this.tokAt(a+1))return; +a=++this.e.iToken;break;case 4126:0>this.vwr.am.cmi&&this.e.errorStr(30,"MODELKIT MINIMIZE");this.minimize(!0);return;case 528432:case 4145:this.e.cmdRotate(!1,!0);return;case 4098:++this.e.iToken;case 134217764:case 4106:case 12291:case 1275069441:case 4129:case 1073742080:case 12297:case 135176:this.assign(!0);return;case 4130:++this.e.iToken;this.mutate();return}for(var b=this.vwr.getModelkit(!1);0!=(c=this.tokAt(++a));){var f=this.paramAsStr(a).toLowerCase(),e=null;switch(c){case 1073742335:case 1073742334:this.chk|| +(this.vwr.setBooleanProperty("modelkitmode",1073742335==c),1073742334==c&&this.vwr.setStringProperty("picking","identify"));continue;case 1610625028:case 12294:f="hidden";e=Boolean.$valueOf(1610625028!=c);break;case 12293:var f="constraint",e="",d=c=null,h=null;switch(this.tokAt(++a)){case 1073742334:case 1073742333:this.chk||this.vwr.setBooleanProperty("dragPicking",!1);break;case 135198:c=this.e.getPoint3f(++a,!0,!0);a=this.e.iToken;d=this.e.getPoint3f(++a,!0,!0);e=null;break;case 134219777:h=this.e.hklParameter(++a, +null,!0);e=null;break;case 134217750:h=this.e.planeParameter(++a,!1);e=null;break;default:this.invArg()}null==e?((null==c||null==d)==(null==h)&&this.invArg(),e=E(-1,[c,d,h])):e=null;a=this.e.iToken;break;case 36867:f=this.paramAsStr(++a);e=0==this.tokAt(++a)?"true":this.paramAsStr(a);break;case 4166:f="vibration";switch(this.tokAt(++a)){case 1073742334:e="off";break;case 1086324754:e="wyckoff";break;default:this.invArg()}break;case 1296041985:switch(this.tokAt(++a)){case 4:case 1073742333:e=this.paramAsStr(a); +break;case 12:e=this.getToken(a).value;break;case 2:e=Integer.$valueOf(this.getToken(a).intValue);break;default:this.e.isCenterParameter(a)?(f="center",e=this.e.centerParameter(a,null),a=this.e.iToken):this.invArg()}break;case 1073742066:if(e=this.paramAsStr(a+1),e.equals("none")){++a;break}case 134217751:case 12289:e=this.e.atomCenterOrCoordinateParameter(++a,null);a=this.e.iToken;break;case 1073742024:e=this.paramAsStr(++a).toLowerCase();this.vwr.isModelKitOption("M",e)||this.invArg();break;case 1814695966:if(this.e.isArrayParameter(a+ +1)){this.unitcell(2,!0);return}e=this.paramAsStr(++a).toLowerCase();if(!this.vwr.isModelKitOption("U",e)){this.unitcell(2,!0);return}break;case 1088421903:e=this.paramAsStr(++a).toLowerCase();this.vwr.isModelKitOption("S",e)||this.invArg();break;default:if(this.vwr.isModelKitOption("B",f)){e=Boolean.$valueOf(0==(c=this.tokAt(++a))||1073742335==c);break}if(this.vwr.isModelKitOption("M",f)){e=f;f="mode";break}if(this.vwr.isModelKitOption("U",f)){e=f;f="unitcell";break}this.invArg()}!this.chk&&(null!= +e&&null!=(e=b.setProperty(f,e))&&"hidden"!==f&&!b.isHidden())&&this.vwr.showString("modelkit SET "+f+" "+e.toString(),!1)}});p(k,"assign",function(a){0>this.vwr.am.cmi&&this.invArg();var c=this.vwr.getThisModelAtoms(),b=++this.e.iToken,f=!1,e=this.tokAt(b);135176==e&&(134217764!=this.tokAt(2)&&this.invArg(),f=!0,e=12297);if(12297==e&&(a||this.invArg(),this.e.chk||this.vwr.zap(!1,!1,!1),e=this.tokAt(++b),0==e))return;var d=1153433601==e,h=1677721602==e,j=1275069441==e,g=4106==e,m=12291==e,k=4129== +e,p=134217764==e,t=1073742080==e;(t||p)&&!a&&this.invArg();d||h||g||p||m||k||j||t?b++:(d=!0,e=1153433601);var l=m=-1;a=null;if(h){if(2==this.tokAt(b))m=this.e.intParameter(b);else if(O(this.getToken(b).value,"JM.BondSet"))m=this.getToken(b).value.nextSetBit(0);else switch(a=this.expFor(b,c),m=a.nextSetBit(0),a.cardinality()){case 1:a=this.expFor(++this.e.iToken,c),l=a.nextSetBit(0),0>l&&this.invArg(),a.set(m);case 2:a=this.vwr.ms.getBondsForSelectedAtoms(a,!1);a.isEmpty()?(g=!0,e=4106):m=a.nextSetBit(0); +break;default:this.invArg()}b=++this.e.iToken}else if(t)a=c;else if(!(d&&4==this.tokAt(b)||1275069441==e))if(!p||this.e.isAtomExpression(b)){a=this.expFor(b,c);m=a.nextSetBit(0);if(0>m)return;b=++this.e.iToken}var C=h=null,x=null,B=null,s=null;if(j)switch(this.e.isAtomExpression(b)?(a=this.expFor(++this.e.iToken,c),b=this.e.iToken,h=this.e.optParameterAsString(b+1),h.toLowerCase().equals("packed")&&(t=!0,h="")):h=this.e.optParameterAsString(b),this.e.isPoint3f(this.e.iToken+1)?C=this.getPoint3f(++this.e.iToken, +!0):this.e.isArrayParameter(this.e.iToken+1)&&(s=this.e.getPointArray(this.e.iToken+1,-1,!1)),0==h.length&&(h=null),this.tokAt(this.e.iToken+1)){case 1073742080:t=!0;++this.e.iToken;break;case 1086324754:++this.e.iToken,x=this.paramAsStr(++this.e.iToken),c=x.equalsIgnoreCase("general")?"G":1c&&"A"!=c&&"G"!=c||"z"h.indexOf(":")&&0>h.indexOf(">")&&(0l&&(a=this.expFor(b,c),l=a.nextSetBit(0),h=this.e.optParameterAsString(++this.e.iToken)):(h=this.e.optParameterAsString(b),d&&(C=++this.e.iTokenf&&this.e.errorStr(30,"show/write MO/NBO");var e=this.vwr.ms.getInfo(f,"moData");null==e&&this.error(27);var d=this.getShapeProperty(b,"moNumber");(null==d||0==d.intValue())&&this.setShapeProperty(b,"init",Integer.$valueOf(f));this.setShapeProperty(b,"moData",e);return this.e.sm.getShapePropertyIndex(b,"showMO",a)},"~N,~B");p(k,"getScriptID",function(a){return"\n# "+(null==a?this.e.functionName:"function "+a.functionName)+" (file "+(null==a?this.e.scriptFileName:a.scriptFileName)+ +(null==a?"":" context "+a.id)+")\n"},"JS.ScriptContext");p(k,"tokenAt",function(a,c){return a +b&&(b=e)}return b},"~A,~B,~N");p(k,"parseDataArray",function(a,c){a=JU.Parser.fixDataString(a);var b=JU.Parser.markLines(a,"\n"),f=b.length;if(!c){for(var e=JU.AU.newFloat2(f),d=0,h=0;dj||1>g||1>k)return S(1,1,1,0);for(var e=JU.AU.newFloat3(j, +g),n=0,p=0,d=1,h=b[0];de&&(c[a]=NaN);return c},"JU.BS,~N,~S,~N,~N");k.labeler=null})})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray, +Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,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.isAB, +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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corescriptmath.js b/config/plugins/visualizations/jmol/static/j2s/core/corescriptmath.js new file mode 100755 index 000000000000..fffef6663eab --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corescriptmath.js @@ -0,0 +1,3552 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.MathExt", ["java.util.Date", "$.Hashtable", "$.Random", "JU.AU", "$.BArray", "$.BS", "$.CU", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.OC", "$.P3", "$.P4", "$.PT", "$.Quat", "$.Rdr", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.bspt.PointIterator", "J.c.VDW", "J.i18n.GT", "JM.BondSet", "$.Measurement", "JS.SV", "$.T", "JU.BSUtil", "$.BoxInfo", "$.Edge", "$.Escape", "$.JmolMolecule", "$.Logger", "$.Parser", "$.Point3fi", "$.SimpleUnitCell", "JV.FileManager", "$.JC", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.e = null; +this.rand = null; +this.pm = null; +Clazz_instantialize(this, arguments);}, JS, "MathExt", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "init", +function(se){ +this.e = se; +this.vwr = this.e.vwr; +return this; +}, "~O"); +Clazz_defineMethod(c$, "evaluate", +function(mp, op, args, tok){ +switch (tok) { +case 134218760: +return (args.length >= 1 && args[0].tok == 4 ? mp.addXStr((args.length == 1 ? new java.util.Date().toString() : this.vwr.apiPlatform.getDateFormat(JS.SV.sValue(args[1]))) + "\t" + JS.SV.sValue(args[0]).trim()) : mp.addXInt(((System.currentTimeMillis() - JS.MathExt.t0)) - (args.length == 0 ? 0 : args[0].asInt()))); +case 134218250: +return (args.length == 1 && args[0].tok == 2 ? mp.addXInt(args[0].intValue) : mp.addXFloat(Math.abs(args[0].asFloat()))); +case 134218241: +case 134218245: +case 134218244: +case 134218246: +return (args.length == 1 && this.evaluateMath(mp, args, tok)); +case 1275069441: +case 1275068928: +case 1275068929: +case 1275068930: +case 1275068931: +case 1275335685: +case 1275334681: +return this.evaluateList(mp, op.intValue, args); +case 268437504: +if (args.length == 0) mp.wasX = false; +case 1275068418: +return this.evaluateArray(mp, args, tok == 1275068418 && op.tok == 268442113); +case 134217766: +return this.evaluateMatrix(mp, args); +case 134217765: +return this.evaluateCallbackParam(mp, args); +case 134217731: +case 134221850: +return this.evaluateQuaternion(mp, args, tok); +case 1275068420: +return this.evaluateBin(mp, args); +case 134221829: +return this.evaluateCache(mp, args); +case 1275068934: +case 1275068935: +return this.evaluateRowCol(mp, args, tok); +case 1765808134: +return this.evaluateColor(mp, args); +case 134221831: +return this.evaluateCompare(mp, args); +case 1228931586: +case 134217736: +case 1275203608: +return this.evaluateConnected(mp, args, tok, op.intValue); +case 1812599299: +case 1814695966: +return this.evaluateUnitCell(mp, args, op.tok == 268442113, op.tok == 268442113 ? op.intValue : op.tok); +case 134353926: +return this.evaluateContact(mp, args); +case 134221834: +return this.evaluateData(mp, args); +case 1275069444: +case 1275069442: +return this.evaluateDotDist(mp, args, tok, op.intValue); +case 1275069443: +if (op.tok == 268442113) return this.evaluateDotDist(mp, args, tok, op.intValue); +case 134217729: +case 1745489939: +return this.evaluateMeasure(mp, args, op.tok); +case 1228935687: +case 134223363: +return this.evaluateLoad(mp, args, tok == 1228935687); +case 1275068427: +return this.evaluateFind(mp, args); +case 1275068433: +return this.evaluateInChI(mp, args); +case 1287653388: +case 1825200146: +return this.evaluateFormat(mp, op.intValue, args, tok == 1825200146); +case 134320141: +return this.evaluateUserFunction(mp, op.value, args, op.intValue, op.tok == 268442113); +case 1275068437: +tok = 1275068725; +case 1275068446: +case 1275068725: +case 1275082241: +case 1275072526: +return this.evaluateGetProperty(mp, args, tok, op.tok == 268442113); +case 136314895: +return this.evaluateHelix(mp, args); +case 134219777: +case 134217750: +case 134217763: +return this.evaluatePlane(mp, args, tok); +case 134218759: +case 134238732: +case 134222850: +case 134222350: +return this.evaluateScript(mp, args, tok); +case 1275069446: +case 1275069447: +case 1275068932: +return this.evaluateString(mp, op.intValue, args); +case 134217751: +return this.evaluatePoint(mp, args); +case 1275068447: +return this.evaluatePointGroup(mp, args, op.tok == 268442113); +case 134256129: +return this.evaluatePrompt(mp, args); +case 134219266: +return this.evaluateRandom(mp, args); +case 1275068432: +return this.evaluateIn(mp, args); +case 1275072532: +return this.evaluateModulation(mp, args); +case 1275068443: +return this.evaluateReplace(mp, args); +case 134218753: +case 134218756: +case 134218757: +case 1237320707: +return this.evaluateSubstructure(mp, args, tok, op.tok == 268442113); +case 1275068444: +case 1275068425: +return this.evaluateSort(mp, args, tok); +case 134217764: +return this.evaluateSpacegroup(mp, args); +case 1296041985: +return this.evaluateSymop(mp, args, op.tok == 268442113); +case 1275068445: +return this.evaluateTensor(mp, args); +case 134217759: +return this.evaluateWithin(mp, args, op.tok == 268442113); +case 134221856: +return this.evaluateWrite(mp, args); +} +return false; +}, "JS.ScriptMathProcessor,JS.T,~A,~N"); +Clazz_defineMethod(c$, "evaluateMatrix", +function(mp, args){ +var n = args.length; +var m4 = null; +var retType = (n > 0 && args[n - 1].tok == 4 ? args[n - 1].value : null); +var asABC = "abc".equalsIgnoreCase(retType); +var asXYZ = "xyz".equalsIgnoreCase(retType); +var a = null; +if (asABC || asXYZ) n--; +switch (n) { +case 0: +m4 = new JU.M4(); +m4.setIdentity(); +break; +case 1: +switch (args[0].tok) { +case 12: +m4 = args[0].value; +break; +case 4: +m4 = this.vwr.getSymTemp().convertTransform(args[0].value, null); +break; +case 7: +a = JS.SV.flistValue(args[0], 0); +break; +} +break; +case 3: +case 4: +if (args[0].tok == 7) { +a = Clazz_newFloatArray (n == 3 ? 9 : 16, 0); +for (var p = 0, i = 0; i < n; i++) { +var row = JS.SV.flistValue(args[i], 0); +for (var j = 0; j < n; j++) a[p++] = row[j]; + +} +break; +}} +if (a != null) { +switch (a.length) { +case 9: +return mp.addXObj(JU.M3.newA9(a)); +case 16: +m4 = JU.M4.newA16(a); +break; +default: +return false; +} +}if (m4 != null) { +if (asABC) { +return mp.addXStr(this.vwr.getSymStatic().staticGetTransformABC(m4, false)); +}if (asXYZ) { +return mp.addXStr(this.vwr.getSymStatic().staticConvertOperation("", m4)); +}return mp.addXM4(m4); +}return false; +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateCallbackParam", +function(mp, args){ +return mp.addX(this.e.getCallbackParameter(args.length == 0 ? -2147483648 : args[0].asInt())); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateSpacegroup", +function(mp, args){ +var unitCellParams = null; +var n = args.length; +if (n == 0) return mp.addXObj(this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, null, this.vwr.am.cmi, true, null)); +var isSubgroups = (n > 1); +for (var i = n; isSubgroups && --i >= 0; ) { +if (args[i].tok != 2) { +isSubgroups = false; +}} +var xyzList = args[0].asString(); +var mode = (args[args.length - 1].tok == 4 ? args[args.length - 1].value : null); +if (isSubgroups || "subgroups".equals(mode)) { +var sym; +var itaFrom = -2147483648; +var itaTo = -2147483648; +var index1 = -2147483648; +var index2 = -2147483648; +switch (isSubgroups ? n + 1 : n) { +case 5: +index2 = args[3].intValue; +if (index2 < 0) return false; +case 4: +index1 = args[2].intValue; +if (index1 < 0) return false; +case 3: +itaTo = args[1].intValue; +if (itaTo < 0) return false; +case 2: +itaFrom = args[0].intValue; +if (itaFrom < 0) return false; +case 1: +default: +if (itaFrom == -2147483648) { +sym = this.vwr.getCurrentUnitCell(); +itaFrom = JU.PT.parseInt(sym.getIntTableNumber()); +if (itaFrom < 1) return false; +} else { +sym = this.vwr.getSymTemp(); +}break; +} +return mp.addXObj(sym.getSubgroupJSON(this.vwr, itaFrom, itaTo, index1, index2)); +}switch (n) { +default: +return false; +case 2: +if (args[1].tok == 4) { +mode = args[1].value; +} else { +unitCellParams = JS.SV.flistValue(args[1], 0); +if (unitCellParams == null || unitCellParams.length != 6) return false; +unitCellParams = JU.SimpleUnitCell.newParams(unitCellParams, NaN); +}case 1: +var itaNo = (args[0].tok == 2 ? args[0].intValue : n == 1 ? -2147483648 : 0); +if ("settings".equalsIgnoreCase(mode)) { +if (itaNo == 0) return false; +return mp.addXObj((itaNo == -2147483648 ? this.vwr.getCurrentUnitCell() : this.vwr.getSymTemp()).getSpaceGroupJSON(this.vwr, mode.toLowerCase(), null, itaNo)); +}if (itaNo > 0 || args[0].tok == 4) { +if (xyzList.toUpperCase().startsWith("AFLOW/")) { +return mp.addXObj(this.vwr.getSymTemp().getSpaceGroupJSON(this.vwr, "AFLOW", xyzList.substring(6), 0)); +}if (xyzList.startsWith("Hall:") || xyzList.indexOf("x") >= 0 || unitCellParams != null) { +return mp.addXObj(this.vwr.findSpaceGroup(null, null, xyzList, unitCellParams, null, null, 1)); +}if (itaNo > 0 || !xyzList.endsWith(":") && !Double.isNaN(JU.PT.parseFloat(xyzList))) xyzList = "ITA/" + xyzList; +if ("setting".equalsIgnoreCase(xyzList)) { +var sym = this.vwr.getOperativeSymmetry(); +return mp.addXObj(sym == null ? null : sym.getSpaceGroupJSON(this.vwr, "settings", null, -2147483648)); +}if (xyzList.toUpperCase().startsWith("ITA/")) { +return mp.addXObj(this.vwr.getSymTemp().getSpaceGroupJSON(this.vwr, "ITA", xyzList.substring(4), 0)); +}} else { +var atoms = JS.SV.getBitSet(args[0], true); +if (atoms != null) { +return mp.addXObj(this.vwr.findSpaceGroup(null, atoms, null, unitCellParams, null, null, 1)); +}}break; +} +return mp.addXObj(this.vwr.getSymTemp().getSpaceGroupInfoObj(xyzList, unitCellParams, true, false)); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluatePointGroup", +function(mp, args, isAtomProperty){ +var pts = null; +var center = null; +var distanceTolerance = -1; +var linearTolerance = -1; +var bsAtoms = null; +var isSpaceGroup = false; +switch (args.length) { +case 4: +linearTolerance = args[3].asFloat(); +case 3: +distanceTolerance = args[2].asFloat(); +case 2: +switch (args[1].tok) { +case 8: +center = JS.SV.ptValue(args[1]); +break; +case 10: +bsAtoms = JS.SV.getBitSet(args[1], false); +if (args[0].asString().equalsIgnoreCase("spaceGroup")) { +isSpaceGroup = true; +if (args.length == 2) distanceTolerance = 0; +}break; +} +if (isSpaceGroup) break; +case 1: +switch (args[0].tok) { +case 7: +var points = args[0].getList(); +pts = new Array(points.size()); +for (var i = pts.length; --i >= 0; ) pts[i] = JS.SV.ptValue(points.get(i)); + +break; +case 10: +bsAtoms = JS.SV.getBitSet(args[0], false); +pts = this.vwr.ms.at; +break; +case 4: +if (isAtomProperty) { +bsAtoms = JS.SV.getBitSet(mp.getX(), true); +if (bsAtoms == null || bsAtoms.isEmpty()) return false; +var s = args[0].asString(); +if ("spacegroup".equals(s)) { +isSpaceGroup = true; +break; +}}default: +return false; +} +break; +case 0: +if (!isAtomProperty) { +return mp.addXObj(this.vwr.ms.getPointGroupInfo(null)); +}bsAtoms = JS.SV.getBitSet(mp.getX(), false); +break; +default: +return false; +} +if (bsAtoms != null) { +var iatom = bsAtoms.nextSetBit(0); +if (iatom < 0 || iatom >= this.vwr.ms.ac || isSpaceGroup && bsAtoms.cardinality() != 1) return false; +if (isSpaceGroup) { +var lst = this.vwr.ms.generateCrystalClass(iatom, JU.P3.new3(NaN, NaN, NaN)); +pts = new Array(lst.size()); +for (var i = pts.length; --i >= 0; ) pts[i] = lst.get(i); + +center = new JU.P3(); +}}var pointGroup = this.vwr.getSymTemp().setPointGroup(this.vwr, null, center, (pts == null ? this.vwr.ms.at : pts), bsAtoms, false, distanceTolerance < 0 ? this.vwr.getFloat(570425382) : distanceTolerance, linearTolerance < 0 ? this.vwr.getFloat(570425384) : linearTolerance, (bsAtoms == null ? pts.length : bsAtoms.cardinality()), true); +return mp.addXMap(pointGroup.getPointGroupInfo(-1, null, true, null, 0, 1)); +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz_defineMethod(c$, "evaluateUnitCell", +function(mp, args, isSelector, tok){ +var x1 = (isSelector ? JS.SV.getBitSet(mp.getX(), true) : tok == 1812599299 ? this.vwr.getAllAtoms() : null); +var iatom = ((x1 == null ? this.vwr.getAllAtoms() : x1).nextSetBit(0)); +var lastParam = args.length - 1; +var scale = 1; +switch (lastParam < 0 ? 0 : args[lastParam].tok) { +case 2: +case 3: +scale = args[lastParam].asFloat(); +lastParam--; +break; +} +var normalize = false; +var tok0 = (lastParam < 0 ? 0 : args[0].tok); +var ucnew = null; +var uc = null; +var arg0 = null; +switch (tok0) { +case 7: +uc = args[0].getList(); +break; +case 12: +switch (lastParam > 1 ? 1073741936 : lastParam < 1 ? 0 : args[1].tok) { +default: +case 1073741936: +return false; +case 0: +case 1073742334: +break; +case 1073742335: +normalize = true; +break; +} +return mp.addXStr(this.vwr.getSymStatic().staticGetTransformABC(args[0].value, normalize)); +case 4: +arg0 = args[0].asString(); +if (tok == 1814695966) { +if (arg0.indexOf("a=") == 0) { +ucnew = new Array(4); +for (var i = 0; i < 4; i++) ucnew[i] = new JU.P3(); + +JU.SimpleUnitCell.setAbc(arg0, null, ucnew); +} else if (arg0.indexOf(",") >= 0 || arg0.equals("r")) { +var asMatrix = (args.length == 2 && JS.SV.bValue(args[1])); +var ret; +if (asMatrix) { +ret = this.vwr.getSymTemp().convertTransform(arg0, null); +} else { +ret = this.vwr.getV0abc(-1, arg0); +}return mp.addXObj(ret); +}}break; +} +if (tok == 1812599299) { +var b = this.vwr.ms.getBoxInfo(x1, 1); +return mp.addXObj(b.getInfo(arg0)); +}var u = null; +var haveUC = (uc != null); +if (ucnew == null && haveUC && uc.size() < 4) return false; +var ptParam = (haveUC ? 1 : 0); +if (ucnew == null && !haveUC && tok0 != 8) { +u = (iatom < 0 ? this.vwr.getCurrentUnitCell() : this.vwr.ms.getUnitCell(this.vwr.ms.at[iatom].mi)); +ucnew = (u == null ? Clazz_newArray(-1, [JU.P3.new3(0, 0, 0), JU.P3.new3(1, 0, 0), JU.P3.new3(0, 1, 0), JU.P3.new3(0, 0, 1)]) : u.getUnitCellVectors()); +}if (ucnew == null) { +ucnew = new Array(4); +if (haveUC) { +switch (uc.size()) { +case 3: +ucnew[0] = new JU.P3(); +for (var i = 0; i < 3; i++) ucnew[i + 1] = JU.P3.newP(JS.SV.ptValue(uc.get(i))); + +break; +case 4: +for (var i = 0; i < 4; i++) ucnew[i] = JU.P3.newP(JS.SV.ptValue(uc.get(i))); + +break; +case 6: +var params = Clazz_newFloatArray (6, 0); +for (var i = 0; i < 6; i++) params[i] = uc.get(i).asFloat(); + +JU.SimpleUnitCell.setAbc(null, params, ucnew); +break; +default: +return false; +} +} else { +ucnew[0] = JU.P3.newP(JS.SV.ptValue(args[0])); +switch (lastParam) { +case 3: +for (var i = 1; i < 4; i++) (ucnew[i] = JU.P3.newP(JS.SV.ptValue(args[i]))).sub(ucnew[0]); + +break; +case 1: +var l = args[1].getList(); +if (l != null && l.size() == 3) { +for (var i = 0; i < 3; i++) ucnew[i + 1] = JU.P3.newP(JS.SV.ptValue(l.get(i))); + +break; +}default: +return false; +} +}}var op = (ptParam <= lastParam ? args[ptParam].asString() : null); +var toPrimitive = "primitive".equalsIgnoreCase(op); +if (toPrimitive || "conventional".equalsIgnoreCase(op)) { +var stype = (++ptParam > lastParam ? "" : args[ptParam].asString().toUpperCase()); +if (stype.equals("BCC")) stype = "I"; + else if (stype.length == 0) stype = this.vwr.getSymmetryInfo(iatom, null, 0, null, null, null, 1073741994, null, 0, -1, 0, null); +if (stype == null || stype.length == 0) return false; +if (u == null) u = this.vwr.getSymTemp(); +var m3 = this.vwr.getModelForAtomIndex(iatom).auxiliaryInfo.get("primitiveToCrystal"); +if (!u.toFromPrimitive(toPrimitive, stype.charAt(0), ucnew, m3)) return false; +} else if ("reciprocal".equalsIgnoreCase(op)) { +ucnew = JU.SimpleUnitCell.getReciprocal(ucnew, null, scale); +scale = 1; +} else if ("vertices".equalsIgnoreCase(op)) { +return mp.addXObj(JU.BoxInfo.getVerticesFromOABC(ucnew)); +}if (scale != 1) for (var i = 1; i < 4; i++) ucnew[i].scale(scale); + +return mp.addXObj(ucnew); +}, "JS.ScriptMathProcessor,~A,~B,~N"); +Clazz_defineMethod(c$, "evaluateArray", +function(mp, args, isSelector){ +if (isSelector) { +var x1 = mp.getX(); +switch (args.length == 1 ? x1.tok : 0) { +case 6: +var lst = new JU.Lst(); +var id = args[0].asString(); +var map = x1.getMap(); +var keys = x1.getKeys(false); +for (var i = 0, n = keys.length; i < n; i++) if (map.get(keys[i]).getMap() == null) return false; + +for (var i = 0, n = keys.length; i < n; i++) { +var m = map.get(keys[i]); +var m1 = m.getMap(); +var m2 = JS.SV.deepCopy(m1, true, false); +m2.put(id, JS.SV.newS(keys[i])); +lst.addLast(JS.SV.newV(6, m2)); +} +return mp.addXList(lst); +case 7: +var map1 = new java.util.Hashtable(); +var lst1 = x1.getList(); +var id1 = args[0].asString(); +for (var i = 0, n = lst1.size(); i < n; i++) { +var m0 = lst1.get(i).getMap(); +if (m0 == null || m0.get(id1) == null) return false; +} +for (var i = 0, n = lst1.size(); i < n; i++) { +var m = lst1.get(i); +var m1 = JS.SV.deepCopy(m.getMap(), true, false); +var mid = m1.remove(id1); +map1.put(mid.asString(), JS.SV.newV(6, m1)); +} +return mp.addXObj(map1); +} +return false; +}var a = new Array(args.length); +for (var i = a.length; --i >= 0; ) a[i] = JS.SV.newT(args[i]); + +return mp.addXAV(a); +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz_defineMethod(c$, "evaluateBin", +function(mp, args){ +var n = args.length; +if (n < 3 || n > 5) return false; +var x1 = mp.getX(); +var isListf = (x1.tok == 13); +if (!isListf && x1.tok != 7) return mp.addX(x1); +var f0 = JS.SV.fValue(args[0]); +var f1 = JS.SV.fValue(args[1]); +var df = JS.SV.fValue(args[2]); +var addBins = (n >= 4 && args[n - 1].tok == 1073742335); +var key = ((n == 5 || n == 4 && !addBins) && args[3].tok != 1073742334 ? JS.SV.sValue(args[3]) : null); +var data; +var maps = null; +if (isListf) { +data = x1.value; +} else { +var list = x1.getList(); +data = Clazz_newFloatArray (list.size(), 0); +if (key != null) maps = JU.AU.createArrayOfHashtable(list.size()); +try { +for (var i = list.size(); --i >= 0; ) data[i] = JS.SV.fValue(key == null ? list.get(i) : (maps[i] = list.get(i).getMap()).get(key)); + +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}var nbins = Math.max(Clazz_doubleToInt(Math.floor((f1 - f0) / df + 0.01)), 1); +var array = Clazz_newIntArray (nbins, 0); +var nPoints = data.length; +for (var i = 0; i < nPoints; i++) { +var v = data[i]; +var bin = Clazz_doubleToInt(Math.floor((v - f0) / df)); +if (bin < 0 || bin >= nbins) continue; +array[bin]++; +if (key != null) { +var map = maps[i]; +if (map == null) continue; +map.put("_bin", JS.SV.newI(bin)); +var v1 = f0 + df * bin; +var v2 = v1 + df; +map.put("_binMin", JS.SV.newF(bin == 0 ? -3.4028235E38 : v1)); +map.put("_binMax", JS.SV.newF(bin == nbins - 1 ? 3.4028235E38 : v2)); +}} +if (addBins) { +var lst = new JU.Lst(); +for (var i = 0; i < nbins; i++) lst.addLast( Clazz_newFloatArray(-1, [f0 + df * i, array[i]])); + +return mp.addXList(lst); +}return mp.addXAI(array); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateCache", +function(mp, args){ +if (args.length > 0) return false; +return mp.addXMap(this.vwr.fm.cacheList()); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateColor", +function(mp, args){ +var colorScheme = (args.length > 0 ? JS.SV.sValue(args[0]) : ""); +var isIsosurface = colorScheme.startsWith("$"); +if (args.length == 2 && colorScheme.equalsIgnoreCase("TOHSL")) return mp.addXPt(JU.CU.rgbToHSL(JU.P3.newP(args[1].tok == 8 ? JS.SV.ptValue(args[1]) : JU.CU.colorPtFromString(args[1].asString())), true)); +if (args.length == 2 && colorScheme.equalsIgnoreCase("TORGB")) { +var pt = JU.P3.newP(args[1].tok == 8 ? JS.SV.ptValue(args[1]) : JU.CU.colorPtFromString(args[1].asString())); +return mp.addXPt(args[1].tok == 8 ? JU.CU.hslToRGB(pt) : pt); +}if (args.length == 4 && (args[3].tok == 1073742335 || args[3].tok == 1073742334)) { +var pt1 = JU.P3.newP(args[0].tok == 8 ? JS.SV.ptValue(args[0]) : JU.CU.colorPtFromString(args[0].asString())); +var pt2 = JU.P3.newP(args[1].tok == 8 ? JS.SV.ptValue(args[1]) : JU.CU.colorPtFromString(args[1].asString())); +var usingHSL = (args[3].tok == 1073742335); +if (usingHSL) { +pt1 = JU.CU.rgbToHSL(pt1, false); +pt2 = JU.CU.rgbToHSL(pt2, false); +}var sb = new JU.SB(); +var vd = JU.V3.newVsub(pt2, pt1); +var n = args[2].asInt(); +if (n < 2) n = 20; +vd.scale(1 / (n - 1)); +for (var i = 0; i < n; i++) { +sb.append(JU.Escape.escapeColor(JU.CU.colorPtToFFRGB(usingHSL ? JU.CU.hslToRGB(pt1) : pt1))); +pt1.add(vd); +} +return mp.addXStr(sb.toString()); +}var ce = (isIsosurface ? null : this.vwr.cm.getColorEncoder(colorScheme)); +if (!isIsosurface && ce == null) return mp.addXStr(""); +var lo = (args.length > 1 ? JS.SV.fValue(args[1]) : 3.4028235E38); +var hi = (args.length > 2 ? JS.SV.fValue(args[2]) : 3.4028235E38); +var value = (args.length > 3 ? JS.SV.fValue(args[3]) : 3.4028235E38); +var getValue = (value != 3.4028235E38 || lo != 3.4028235E38 && hi == 3.4028235E38); +var haveRange = (hi != 3.4028235E38); +if (!haveRange && colorScheme.length == 0) { +value = lo; +var range = this.vwr.getCurrentColorRange(); +lo = range[0]; +hi = range[1]; +}if (isIsosurface) { +var id = colorScheme.substring(1); +var data = Clazz_newArray(-1, [id, null]); +if (!this.vwr.shm.getShapePropertyData(24, "colorEncoder", data)) return mp.addXStr(""); +ce = data[1]; +} else { +ce.setRange(lo, hi, lo > hi); +}var key = ce.getColorKey(); +if (getValue) return mp.addXPt(JU.CU.colorPtFromInt(ce.getArgb(hi == 3.4028235E38 ? lo : value), null)); +return mp.addX(JS.SV.getVariableMap(key)); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateCompare", +function(mp, args){ +var narg = args.length; +if (narg < 2 || narg > 5) return false; +var stddev; +var isTrue = (args[narg - 1].tok == 1073742335); +if (isTrue || args[narg - 1].tok == 1073742334) narg--; +var sOpt = JS.SV.sValue(args[narg - 1]); +var isStdDev = sOpt.equalsIgnoreCase("stddev"); +var isIsomer = sOpt.equalsIgnoreCase("ISOMER"); +var isTautomer = isIsomer && isTrue; +var isBonds = sOpt.equalsIgnoreCase("BONDS"); +var isPoints = (args[0].tok == 7 && args[1].tok == 7); +var abmap = (narg >= 3 ? args[2].getList() : null); +var isSmiles = (abmap == null && !isPoints && !isIsomer && narg > (isStdDev ? 3 : 2)); +var bs1 = (args[0].tok == 10 ? args[0].value : null); +var bs2 = (args[1].tok == 10 ? args[1].value : null); +var smiles1 = (bs1 == null ? JS.SV.sValue(args[0]) : ""); +var smiles2 = (bs2 == null ? JS.SV.sValue(args[1]) : ""); +stddev = NaN; +try { +if (isBonds) { +if (narg != 4) return false; +smiles1 = JS.SV.sValue(args[2]); +isSmiles = smiles1.equalsIgnoreCase("SMILES"); +try { +if (isSmiles) smiles1 = this.vwr.getSmiles(bs1); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +var data = this.e.getSmilesExt().getFlexFitList(bs1, bs2, smiles1, !isSmiles); +return (data == null ? mp.addXStr("") : mp.addXAF(data)); +}if (isIsomer) { +if (narg != 3) return false; +if (bs1 == null && bs2 == null) { +var ret = this.vwr.getSmilesMatcher().getRelationship(smiles1, smiles2).toUpperCase(); +return mp.addXStr(ret); +}var mf1 = (bs1 == null ? this.vwr.getSmilesMatcher().getMolecularFormula(smiles1, false, false) : JU.JmolMolecule.getMolecularFormulaAtoms(this.vwr.ms.at, bs1, null, false)); +var mf2 = (bs2 == null ? this.vwr.getSmilesMatcher().getMolecularFormula(smiles2, false, false) : JU.JmolMolecule.getMolecularFormulaAtoms(this.vwr.ms.at, bs2, null, false)); +if (!mf1.equals(mf2)) return mp.addXStr("NONE"); +if (bs1 != null) smiles1 = this.e.getSmilesExt().getSmilesMatches("/strict///", null, bs1, null, 1, true, false); +var check; +if (bs2 == null) { +check = (this.vwr.getSmilesMatcher().areEqual(smiles2, smiles1) > 0); +} else { +smiles2 = this.e.getSmilesExt().getSmilesMatches("/strict///", null, bs2, null, 1, true, false); +check = ((this.e.getSmilesExt().getSmilesMatches("/strict///" + smiles1, null, bs2, null, 1, true, false)).nextSetBit(0) >= 0); +}if (!check) { +var s = smiles1 + smiles2; +if (s.indexOf("/") >= 0 || s.indexOf("\\") >= 0 || s.indexOf("@") >= 0) { +if (smiles1.indexOf("@") >= 0 && (bs2 != null || smiles2.indexOf("@") >= 0) && smiles1.indexOf("@SP") < 0) { +var pt = smiles1.toLowerCase().indexOf("invertstereo"); +smiles1 = (pt >= 0 ? "/strict/" + smiles1.substring(0, pt) + smiles1.substring(pt + 12) : "/invertstereo strict/" + smiles1); +if (bs2 == null) { +check = (this.vwr.getSmilesMatcher().areEqual(smiles1, smiles2) > 0); +} else { +check = ((this.e.getSmilesExt().getSmilesMatches(smiles1, null, bs2, null, 1, true, false)).nextSetBit(0) >= 0); +}if (check) return mp.addXStr("ENANTIOMERS"); +}if (bs2 == null) { +check = (this.vwr.getSmilesMatcher().areEqual("/nostereo/" + smiles2, smiles1) > 0); +} else { +var ret = this.e.getSmilesExt().getSmilesMatches("/nostereo/" + smiles1, null, bs2, null, 1, true, false); +check = ((ret).nextSetBit(0) >= 0); +}if (check) return mp.addXStr("DIASTEREOMERS"); +}var ret = "CONSTITUTIONAL ISOMERS"; +if (isTautomer) { +var inchi = this.vwr.getInchi(bs1, null, null); +if (inchi != null && inchi.equals(this.vwr.getInchi(bs2, null, null))) ret = "TAUTOMERS"; +}return mp.addXStr(ret); +}if (bs1 == null || bs2 == null) return mp.addXStr("IDENTICAL"); +stddev = this.e.getSmilesExt().getSmilesCorrelation(bs1, bs2, smiles1, null, null, null, null, false, null, null, false, 1); +return mp.addXStr(stddev < 0.2 ? "IDENTICAL" : "IDENTICAL or CONFORMATIONAL ISOMERS (RMSD=" + stddev + ")"); +}var m = new JU.M4(); +var ptsA = null; +var ptsB = null; +if (isSmiles) { +if (bs1 == null || bs2 == null) return false; +sOpt = JS.SV.sValue(args[2]); +var isMap = sOpt.equalsIgnoreCase("MAP"); +isSmiles = sOpt.equalsIgnoreCase("SMILES"); +var isSearch = (isMap || sOpt.equalsIgnoreCase("SMARTS")); +if (isSmiles || isSearch) sOpt = (narg > (isStdDev ? 4 : 3) ? JS.SV.sValue(args[3]) : null); +var hMaps = (("H".equalsIgnoreCase(sOpt) || "allH".equalsIgnoreCase(sOpt) || "bestH".equalsIgnoreCase(sOpt))); +var isPolyhedron = !hMaps && ("polyhedra".equalsIgnoreCase(sOpt) || "polyhedron".equalsIgnoreCase(sOpt)); +if (isPolyhedron) { +stddev = this.e.getSmilesExt().mapPolyhedra(bs1.nextSetBit(0), bs2.nextSetBit(0), isSmiles, m); +} else { +ptsA = new JU.Lst(); +ptsB = new JU.Lst(); +var allMaps = (("all".equalsIgnoreCase(sOpt) || "allH".equalsIgnoreCase(sOpt))); +var bestMap = (("best".equalsIgnoreCase(sOpt) || "bestH".equalsIgnoreCase(sOpt))); +if ("stddev".equals(sOpt)) sOpt = null; +var pattern = sOpt; +if (sOpt == null || hMaps || allMaps || bestMap) { +if (!isMap && !isSmiles || hMaps && isPolyhedron) return false; +pattern = "/noaromatic" + (allMaps || bestMap ? "/" : " nostereo/") + this.e.getSmilesExt().getSmilesMatches((hMaps ? "H" : ""), null, bs1, null, 32769, true, false); +} else { +allMaps = true; +}stddev = this.e.getSmilesExt().getSmilesCorrelation(bs1, bs2, pattern, ptsA, ptsB, m, null, isMap, null, null, bestMap, (isSmiles ? 1 : 2) | (!allMaps && !bestMap ? 8 : 0)); +if (isMap) { +var nAtoms = ptsA.size(); +if (nAtoms == 0) return mp.addXStr(""); +var nMatch = Clazz_doubleToInt(ptsB.size() / nAtoms); +var ret = new JU.Lst(); +for (var i = 0, pt = 0; i < nMatch; i++) { +var a = JU.AU.newInt2(nAtoms); +ret.addLast(a); +for (var j = 0; j < nAtoms; j++, pt++) a[j] = Clazz_newIntArray(-1, [(ptsA.get(j)).i, (ptsB.get(pt)).i]); + +} +return (allMaps ? mp.addXList(ret) : ret.size() > 0 ? mp.addXAII(ret.get(0)) : mp.addXStr("")); +}}} else { +ptsA = this.e.getPointVector(args[0], 0); +ptsB = this.e.getPointVector(args[1], 0); +if (ptsA == null || ptsB == null) return false; +if (abmap != null) { +narg--; +var n = abmap.size(); +if (n > ptsA.size() || n != ptsB.size()) return false; +var list = new JU.Lst(); +for (var i = 0; i < n; i++) list.addLast(ptsA.get(abmap.get(i).intValue - 1)); + +ptsA = list; +}switch (narg) { +case 2: +break; +case 3: +if (isStdDev) break; +default: +return false; +} +if (ptsA.size() == ptsB.size()) { +J.api.Interface.getInterface("JU.Eigen", this.vwr, "script"); +stddev = JU.Measure.getTransformMatrix4(ptsA, ptsB, m, null); +}}return (isStdDev || Float.isNaN(stddev) ? mp.addXFloat(stddev) : mp.addXM4(m.round(1e-7))); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage() == null ? ex.toString() : ex.getMessage(), null); +return false; +} else { +throw ex; +} +} +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateConnected", +function(mp, args, tok, intValue){ +if (args.length > 5) return false; +var min = -2147483648; +var max = 2147483647; +var fmin = 0; +var fmax = 3.4028235E38; +var order = 65535; +var atoms1 = null; +var atoms2 = null; +var haveDecimal = false; +var isBonds = false; +switch (tok) { +case 1275203608: +var nv = -2147483648; +var smiles = null; +if (args.length > 0) { +switch (args[0].tok) { +case 2: +nv = args[0].intValue; +break; +case 4: +smiles = JS.SV.sValue(args[0]); +break; +} +}if (intValue == 1275203608) atoms1 = JS.SV.getBitSet(mp.getX(), true); +var data = Clazz_newArray(-1, [Integer.$valueOf(nv), smiles, atoms1]); +if (!this.vwr.shm.getShapePropertyData(21, "getCenters", data)) data[1] = null; +return mp.addXBs(data[1] == null ? new JU.BS() : data[1]); +case 1228931586: +var x1 = mp.getX(); +if (x1.tok != 10 || args.length != 1 || args[0].tok != 10) return false; +atoms1 = x1.value; +atoms2 = args[0].value; +var list = new JU.Lst(); +var atoms = this.vwr.ms.at; +for (var i = atoms1.nextSetBit(0); i >= 0; i = atoms1.nextSetBit(i + 1)) { +var n = 0; +var b = atoms[i].bonds; +for (var j = b.length; --j >= 0; ) if (atoms2.get(b[j].getOtherAtom(atoms[i]).i)) n++; + +list.addLast(Integer.$valueOf(n)); +} +return mp.addXList(list); +} +for (var i = 0; i < args.length; i++) { +var $var = args[i]; +switch ($var.tok) { +case 10: +isBonds = (Clazz_instanceOf($var.value,"JM.BondSet")); +if (isBonds && atoms1 != null) return false; +if (atoms1 == null) atoms1 = $var.value; + else if (atoms2 == null) atoms2 = $var.value; + else return false; +break; +case 4: +var type = JS.SV.sValue($var); +if (type.equalsIgnoreCase("hbond")) order = 30720; + else order = JU.Edge.getBondOrderFromString(type); +if (order == 131071) return false; +break; +case 3: +haveDecimal = true; +default: +var n = $var.asInt(); +var f = $var.asFloat(); +if (max != 2147483647) return false; +if (min == -2147483648) { +min = Math.max(n, 0); +fmin = f; +} else { +max = n; +fmax = f; +}} +} +if (min == -2147483648) { +min = 1; +max = 100; +fmin = 0.1; +fmax = 1.0E8; +} else if (max == 2147483647) { +max = min; +fmax = fmin; +fmin = 0.1; +}if (atoms1 == null) atoms1 = this.vwr.getAllAtoms(); +if (haveDecimal && atoms2 == null) atoms2 = atoms1; +if (atoms2 != null) { +var bsBonds = new JU.BS(); +this.vwr.makeConnections(fmin, fmax, order, 1086324745, atoms1, atoms2, bsBonds, isBonds, false, 0); +return mp.addX(JS.SV.newV(10, JM.BondSet.newBS(bsBonds))); +}return mp.addXBs(this.vwr.ms.getAtomsConnected(min, max, order, atoms1)); +}, "JS.ScriptMathProcessor,~A,~N,~N"); +Clazz_defineMethod(c$, "evaluateContact", +function(mp, args){ +if (args.length < 1 || args.length > 3) return false; +var i = 0; +var distance = 100; +var tok = args[0].tok; +switch (tok) { +case 3: +case 2: +distance = JS.SV.fValue(args[i++]); +break; +case 10: +break; +default: +return false; +} +if (i == args.length || !(Clazz_instanceOf(args[i].value,"JU.BS"))) return false; +var bsA = JU.BSUtil.copy(args[i++].value); +var bsB = (i < args.length ? JU.BSUtil.copy(args[i].value) : null); +var rd = new J.atomdata.RadiusData(null, (distance > 10 ? distance / 100 : distance), (distance > 10 ? J.atomdata.RadiusData.EnumType.FACTOR : J.atomdata.RadiusData.EnumType.OFFSET), J.c.VDW.AUTO); +bsB = this.setContactBitSets(bsA, bsB, true, NaN, rd, false); +bsB.or(bsA); +return mp.addXBs(bsB); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateData", +function(mp, args){ +var selected = (args.length == 0 ? "" : JS.SV.sValue(args[0])); +switch (args.length) { +case 0: +case 1: +break; +case 2: +case 3: +if (args[0].tok == 10) return mp.addXStr(this.vwr.getModelFileData(selected, JS.SV.sValue(args[1]), args.length == 3 && JS.SV.bValue(args[2]))); +break; +case 4: +var iField = args[1].asInt(); +var nBytes = args[2].asInt(); +var firstLine = args[3].asInt(); +var f = JU.Parser.parseFloatArrayFromMatchAndField(JS.SV.sValue(args[0]), null, 0, 0, null, iField, nBytes, null, firstLine); +return mp.addXStr(JU.Escape.escapeFloatA(f, false)); +default: +return false; +} +if (selected.indexOf("data2d_") == 0) { +var f1 = this.vwr.getDataObj(selected, null, 2); +if (f1 == null) return mp.addXStr(""); +if (args.length == 2 && args[1].tok == 2) { +var pt = args[1].intValue; +if (pt < 0) pt += f1.length; +if (pt >= 0 && pt < f1.length) return mp.addXStr(JU.Escape.escapeFloatA(f1[pt], false)); +return mp.addXStr(""); +}return mp.addXStr(JU.Escape.escapeFloatAA(f1, false)); +}if (selected.endsWith("*")) return mp.addXList(this.vwr.getDataObj(selected, null, 0)); +if (selected.indexOf("property_") == 0) { +var f1 = this.vwr.getDataObj(selected, null, 1); +return (f1 == null ? mp.addXStr("") : mp.addXStr(JU.Escape.escapeFloatA(f1, false))); +}var data = this.vwr.getDataObj(selected, null, -1); +return mp.addXStr(data == null || data.length < 2 ? "" : "" + data[1]); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateDotDist", +function(mp, args, tok, op){ +var isDist = (tok == 1275069443); +var x1; +var x2; +var x3 = null; +switch (args.length) { +case 2: +if (op == 2147483647) { +x1 = args[0]; +x2 = args[1]; +break; +}x3 = args[1]; +case 1: +x1 = mp.getX(); +x2 = args[0]; +break; +case 0: +if (isDist) { +x1 = mp.getX(); +x2 = JS.SV.getVariable( new JU.P3()); +break; +}default: +return false; +} +var f = NaN; +try { +if (tok == 1275069442) { +var a = JU.P3.newP(mp.ptValue(x1, null)); +a.cross(a, mp.ptValue(x2, null)); +return mp.addXPt(a); +}var pt2 = (x2.tok == 7 ? null : mp.ptValue(x2, null)); +var plane2 = this.e.planeValue(x2); +if (isDist) { +var minMax = (op == -2147483648 ? 0 : op & 480); +var isMinMax = (minMax == 32 || minMax == 64); +var isAll = minMax == 480; +switch (x1.tok) { +case 7: +case 10: +var isAtomSet1 = (x1.tok == 10); +var isAtomSet2 = (x2.tok == 10); +var isPoint2 = (x2.tok == 8); +var bs1 = (isAtomSet1 ? x1.value : null); +var bs2 = (isAtomSet2 ? x2.value : null); +var list1 = (isAtomSet1 ? null : x1.getList()); +var list2 = (isAtomSet2 ? null : x2.getList()); +var returnAtom = (isMinMax && x3 != null && x3.asBoolean()); +switch (x2.tok) { +case 10: +case 7: +case 8: +var atoms = this.vwr.ms.at; +if (returnAtom) { +var dMinMax = NaN; +var iMinMax = 2147483647; +if (isAtomSet1) { +for (var i = bs1.nextSetBit(0); i >= 0; i = bs1.nextSetBit(i + 1)) { +var d = (isPoint2 ? atoms[i].distanceSquared(pt2) : (this.e.getBitsetProperty(bs2, list2, op, atoms[i], plane2, x1.value, null, false, x1.index, false)).floatValue()); +if (minMax == 32 ? d >= dMinMax : d <= dMinMax) continue; +dMinMax = d; +iMinMax = i; +} +return mp.addXBs(iMinMax == 2147483647 ? new JU.BS() : JU.BSUtil.newAndSetBit(iMinMax)); +}for (var i = list1.size(); --i >= 0; ) { +var pt = JS.SV.ptValue(list1.get(i)); +var d = (isPoint2 ? pt.distanceSquared(pt2) : (this.e.getBitsetProperty(bs2, list2, op, pt, plane2, x1.value, null, false, 2147483647, false)).floatValue()); +if (minMax == 32 ? d >= dMinMax : d <= dMinMax) continue; +dMinMax = d; +iMinMax = i; +} +return mp.addXInt(iMinMax); +}if (isAll) { +if (bs2 == null) { +var data = Clazz_newFloatArray (bs1.cardinality(), 0); +for (var p = 0, i = bs1.nextSetBit(0); i >= 0; i = bs1.nextSetBit(i + 1), p++) data[p] = atoms[i].distance(pt2); + +return mp.addXAF(data); +}var data2 = Clazz_newFloatArray (bs1.cardinality(), bs2.cardinality(), 0); +for (var p = 0, i = bs1.nextSetBit(0); i >= 0; i = bs1.nextSetBit(i + 1), p++) for (var q = 0, j = bs2.nextSetBit(0); j >= 0; j = bs2.nextSetBit(j + 1), q++) data2[p][q] = atoms[i].distance(atoms[j]); + + +return mp.addXAFF(data2); +}if (isMinMax) { +var data = Clazz_newFloatArray (isAtomSet1 ? bs1.cardinality() : list1.size(), 0); +if (isAtomSet1) { +for (var i = bs1.nextSetBit(0), p = 0; i >= 0; i = bs1.nextSetBit(i + 1)) data[p++] = (this.e.getBitsetProperty(bs2, list2, op, atoms[i], plane2, x1.value, null, false, x1.index, false)).floatValue(); + +return mp.addXAF(data); +}for (var i = data.length; --i >= 0; ) data[i] = (this.e.getBitsetProperty(bs2, list2, op, JS.SV.ptValue(list1.get(i)), plane2, null, null, false, 2147483647, false)).floatValue(); + +return mp.addXAF(data); +}return mp.addXObj(this.e.getBitsetProperty(bs1, list1, op, pt2, plane2, x1.value, null, false, x1.index, false)); +} +} +}var pt1 = mp.ptValue(x1, null); +var plane1 = this.e.planeValue(x1); +if (isDist) { +if (plane2 != null && x3 != null) f = JU.Measure.directedDistanceToPlane(pt1, plane2, JS.SV.ptValue(x3)); + else f = (plane1 == null ? (plane2 == null ? pt2.distance(pt1) : JU.Measure.distanceToPlane(plane2, pt1)) : JU.Measure.distanceToPlane(plane1, pt2)); +} else { +if (plane1 != null && plane2 != null) { +f = plane1.x * plane2.x + plane1.y * plane2.y + plane1.z * plane2.z + plane1.w * plane2.w; +} else { +if (plane1 != null) pt1 = JU.P3.new3(plane1.x, plane1.y, plane1.z); + else if (plane2 != null) pt2 = JU.P3.new3(plane2.x, plane2.y, plane2.z); +f = pt1.dot(pt2); +}}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return mp.addXFloat(f); +}, "JS.ScriptMathProcessor,~A,~N,~N"); +Clazz_defineMethod(c$, "evaluateHelix", +function(mp, args){ +if (args.length < 1 || args.length > 5) return false; +var pt = (args.length > 2 ? 3 : 1); +var type = (pt >= args.length ? "array" : JS.SV.sValue(args[pt])); +var tok = JS.T.getTokFromName(type); +if (args.length > 2) { +var pta = mp.ptValue(args[0], null); +var ptb = mp.ptValue(args[1], null); +if (tok == 0 || args[2].tok != 9 || pta == null || ptb == null) return false; +var dq = JU.Quat.newP4(args[2].value); +var data = JU.Measure.computeHelicalAxis(pta, ptb, dq); +return (data == null ? false : mp.addXObj(JU.Escape.escapeHelical(type, tok, pta, ptb, data))); +}var bs = (Clazz_instanceOf(args[0].value,"JU.BS") ? args[0].value : this.vwr.ms.getAtoms(1094715412, Integer.$valueOf(args[0].asInt()))); +switch (tok) { +case 134217751: +case 1073741854: +case 1665140738: +return mp.addXObj(this.getHelixData(bs, tok)); +case 134217729: +return mp.addXFloat((this.getHelixData(bs, 134217729)).floatValue()); +case 135176: +case 1745489939: +return mp.addXObj(this.getHelixData(bs, tok)); +case 1275068418: +var data = this.getHelixData(bs, 1073742001); +if (data == null) return false; +return mp.addXAS(data); +} +return false; +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "getHelixData", +function(bs, tokType){ +var iAtom = bs.nextSetBit(0); +return (iAtom < 0 ? "null" : this.vwr.ms.at[iAtom].group.getHelixData(tokType, this.vwr.getQuaternionFrame(), this.vwr.getInt(553648142))); +}, "JU.BS,~N"); +Clazz_defineMethod(c$, "evaluateInChI", +function(mp, args){ +var x1 = mp.getX(); +var flags = (args.length > 0 ? JS.SV.sValue(args[0]) : "fixedh?"); +if (flags.toLowerCase().equals("standard")) flags = ""; +var atoms = JS.SV.getBitSet(x1, true); +var molData = (atoms == null ? JS.SV.sValue(x1) : null); +return mp.addXStr(this.vwr.getInchi(atoms, molData, flags)); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateFind", +function(mp, args){ +var x1 = mp.getX(); +var isList = (x1.tok == 7); +var isAtoms = (x1.tok == 10); +var isEmpty = (args.length == 0); +var tok0 = (args.length == 0 ? 0 : args[0].tok); +var sFind = (isEmpty || tok0 != 4 ? "" : JS.SV.sValue(args[0])); +var isOff = (args.length > 1 && args[1].tok == 1073742334); +var tokLast = (tok0 == 0 ? 0 : args[args.length - 1].tok); +var argLast = (tokLast == 0 ? JS.SV.vF : args[args.length - 1]); +var isON = !isList && (tokLast == 1073742335); +var flags = (args.length > 1 && args[1].tok != 1073742335 && args[1].tok != 1073742334 && args[1].tok != 10 ? JS.SV.sValue(args[1]) : ""); +var isSequence = !isList && !isOff && sFind.equalsIgnoreCase("SEQUENCE"); +var isSeq = !isList && !isOff && sFind.equalsIgnoreCase("SEQ"); +if (sFind.toUpperCase().startsWith("SMILES/")) { +if (!sFind.endsWith("/")) sFind += "/"; +var s = sFind.substring(6) + "//"; +if (JV.JC.isSmilesCanonical(s)) { +flags = "SMILES"; +sFind = "CHEMICAL"; +} else { +sFind = "SMILES"; +flags = s + flags; +}} else if (sFind.toUpperCase().startsWith("SMARTS/")) { +if (!sFind.endsWith("/")) sFind += "/"; +flags = sFind.substring(6) + (flags.length == 0 ? "//" : flags); +sFind = "SMARTS"; +}var smiles = null; +var isStr = false; +if (x1.tok == 4) { +switch (args.length) { +case 1: +if ((x1.value).startsWith("InChI=")) { +if (sFind.equalsIgnoreCase("SMILES")) { +return mp.addXStr(this.vwr.getInchi(null, x1.value, "SMILES" + flags)); +}}isStr = true; +break; +case 2: +if (isOff || isON) { +isStr = true; +} else if ((x1.value).startsWith("InChI=")) { +if (sFind.equals("SMARTS")) { +smiles = this.vwr.getInchi(null, x1.value, "SMILES"); +} else { +isStr = true; +}} else if (flags.length <= 3) { +if (flags.$replace('m', ' ').$replace('i', ' ').$replace('v', ' ').trim().length == 0) isStr = true; +}break; +} +}var isSmiles = !isStr && sFind.equalsIgnoreCase("SMILES"); +var isSMARTS = !isStr && sFind.equalsIgnoreCase("SMARTS"); +var isChemical = !isList && !isStr && sFind.equalsIgnoreCase("CHEMICAL"); +var isMF = !isList && !isStr && sFind.equalsIgnoreCase("MF"); +var isCF = !isList && !isStr && sFind.equalsIgnoreCase("CELLFORMULA"); +var isInchi = isAtoms && !isList && sFind.equalsIgnoreCase("INCHI"); +var isInchiKey = isAtoms && !isList && sFind.equalsIgnoreCase("INCHIKEY"); +var isStructureMap = (!isSmiles && !isSMARTS && tok0 == 10 && flags.toLowerCase().indexOf("map") >= 0); +var isEquivalent = !isSmiles && !isSMARTS && ((x1.tok == 10 || x1.tok == 8 || x1.tok == 7) && sFind.toLowerCase().startsWith("equivalent")); +try { +if (isEquivalent) { +switch (x1.tok) { +case 10: +return mp.addXBs(this.vwr.ms.getSymmetryEquivAtoms(x1.value, null, null)); +case 8: +return mp.addXList(this.vwr.getSymmetryEquivPoints(x1.value, sFind + flags)); +case 7: +var lst = new JU.Lst(); +var l0 = x1.getList(); +for (var i = 0, n = l0.size(); i < n; i++) { +var p = JS.SV.ptValue(l0.get(i)); +if (p == null) return false; +lst.addLast(p); +} +return mp.addXList(this.vwr.getSymmetryEquivPointList(lst, sFind + flags)); +} +} else if (isInchi || isInchiKey) { +if (isInchiKey) flags += " key"; +return mp.addXStr(this.vwr.getInchi(JS.SV.getBitSet(x1, true), null, flags)); +}if (isChemical) { +var bsAtoms = (isAtoms ? x1.value : null); +var data = (bsAtoms == null ? JS.SV.sValue(x1) : this.vwr.getOpenSmiles(bsAtoms)); +data = (data.length == 0 ? "" : this.vwr.getChemicalInfo(data, flags.toLowerCase(), bsAtoms)).trim(); +if (data.startsWith("InChI")) data = JU.PT.rep(JU.PT.rep(data, "InChI=", ""), "InChIKey=", ""); +return mp.addXStr(data); +}if (isSmiles || isSMARTS || isAtoms) { +var iPt = (isStructureMap ? 0 : isSmiles || isSMARTS ? 2 : 1); +var bs2 = (iPt < args.length && args[iPt].tok == 10 ? args[iPt++].value : null); +var asBonds = ("bonds".equalsIgnoreCase(JS.SV.sValue(argLast))); +var isAll = (asBonds || isON); +var ret = null; +switch (x1.tok) { +case 7: +case 4: +if (smiles == null && !isList) { +smiles = JS.SV.sValue(x1); +}if ((isSmiles || isSMARTS) && args.length == 1) { +return false; +}if (bs2 != null) return false; +if (flags.equalsIgnoreCase("mf")) { +ret = this.vwr.getSmilesMatcher().getMolecularFormula(smiles, isSMARTS, isON); +} else { +var pattern = flags; +var allMappings = true; +var asMap = false; +switch (args.length) { +case 4: +allMappings = JS.SV.bValue(args[3]); +case 3: +asMap = JS.SV.bValue(args[2]); +break; +} +var isChirality = pattern.equals("chirality"); +var justOne = (!asMap && (!allMappings || !isSMARTS && !isChirality)); +try { +ret = this.e.getSmilesExt().getSmilesMatches(pattern, (isList ? JS.SV.strListValue(x1) : smiles), null, null, isSMARTS ? 2 : 1, !asMap, !allMappings); +if (isList) return mp.addXObj(ret); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +System.out.println(ex.getMessage()); +return mp.addXInt(-1); +} else { +throw ex; +} +} +var len = (isChirality ? 1 : JU.AU.isAI(ret) ? (ret).length : (ret).length); +if (len == 0 && this.vwr.getSmilesMatcher().getLastException() !== "MF_FAILED" && smiles.toLowerCase().indexOf("noaromatic") < 0 && smiles.toLowerCase().indexOf("strict") < 0) { +ret = this.e.getSmilesExt().getSmilesMatches(pattern, smiles, null, null, 16 | (isSMARTS ? 2 : 1), !asMap, !allMappings); +}if (justOne) { +return mp.addXInt(!allMappings && len > 0 ? 1 : len); +}}break; +case 10: +var bs = x1.value; +if (sFind.equalsIgnoreCase("spacegroup")) { +return mp.addXObj(this.vwr.findSpaceGroup(null, bs, null, null, null, null, ("parent".equals(flags.toLowerCase()) ? 8 : 0))); +}if (sFind.equalsIgnoreCase("crystalClass")) { +var n = bs.nextSetBit(0); +var bsNew = null; +if (args.length != 2) { +bsNew = new JU.BS(); +bsNew.set(n); +}return mp.addXList(this.vwr.ms.generateCrystalClass(n, (bsNew != null ? this.vwr.ms.getAtomSetCenter(bsNew) : argLast.tok == 10 ? this.vwr.ms.getAtomSetCenter(argLast.value) : JS.SV.ptValue(argLast)))); +}if (isMF && flags.length != 0) { +return mp.addXBs(JU.JmolMolecule.getBitSetForMF(this.vwr.ms.at, bs, flags)); +}if (isMF || isCF) { +var isEmpirical = isON; +return mp.addXStr(this.vwr.getFormulaForAtoms(bs, (isMF ? "MF" : "CELLFORMULA"), isEmpirical)); +}if (isSequence || isSeq) { +var isHH = (argLast.asString().equalsIgnoreCase("H")); +isAll = new Boolean (isAll | isHH).valueOf(); +return mp.addXStr(this.vwr.getSmilesOpt(bs, -1, -1, (isAll ? 3145728 | 5242880 | (isHH ? 9437184 : 0) : 0) | (isSeq ? 34603008 : 1048576), null)); +}if (isStructureMap) { +var map = null; +var map1 = null; +var map2 = null; +var mapNames = null; +var key = (args.length == 3 ? JS.SV.sValue(argLast) : null); +var itype = (key == null || key.equals("%i") || key.equals("number") ? 'i' : key.equals("%a") || key.equals("name") ? 'a' : key.equals("%D") || key.equals("index") ? 'D' : '?'); +if (key == null) key = "number"; +var err = null; +flags = flags.$replace("map", "").trim(); +sFind = this.vwr.getSmilesOpt(bs, 0, 0, 0, flags); +if (bs.cardinality() != bs2.cardinality()) { +err = "atom sets are not the same size"; +} else { +try { +var iflags = (137); +if (flags.length > 0) sFind = "/" + flags + "/" + sFind; +map1 = this.vwr.getSmilesMatcher().getCorrelationMaps(sFind, this.vwr.ms.at, this.vwr.ms.ac, bs, iflags)[0]; +var m2 = this.vwr.getSmilesMatcher().getCorrelationMaps(sFind, this.vwr.ms.at, this.vwr.ms.ac, bs2, iflags); +if (m2.length > 0) { +map = Clazz_newIntArray (bs.length(), 0); +for (var i = map.length; --i >= 0; ) map[i] = -1; + +map2 = m2[0]; +for (var i = map1.length; --i >= 0; ) map[map1[i]] = map2[i]; + +mapNames = Clazz_newArray(map1.length, 2, null); +var bsAll = JU.BS.copy(bs); +bsAll.or(bs2); +var names = (itype == '?' ? new Array(bsAll.length()) : null); +if (names != null) names = this.e.getCmdExt().getBitsetIdentFull(bsAll, key, false, 2147483647, false, names); +var at = this.vwr.ms.at; +for (var pt = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var j = map[i]; +if (j == -1) continue; +var a; +switch ((itype).charCodeAt(0)) { +case 97: +a = Clazz_newArray(-1, [at[i].getAtomName(), at[j].getAtomName()]); +break; +case 105: +a = Clazz_newArray(-1, [Integer.$valueOf(at[i].getAtomNumber()), Integer.$valueOf(at[j].getAtomNumber())]); +break; +case 68: +a = Clazz_newArray(-1, [Integer.$valueOf(i), Integer.$valueOf(j)]); +break; +default: +a = Clazz_newArray(-1, [names[i], names[j]]); +break; +} +mapNames[pt++] = a; +} +}} catch (ee) { +if (Clazz_exceptionOf(ee, Exception)){ +err = ee.getMessage(); +} else { +throw ee; +} +} +}var m = new java.util.Hashtable(); +m.put("BS1", bs); +m.put("BS2", bs2); +m.put("SMILES", sFind); +if (err == null) { +m.put("SMILEStoBS1", map1); +m.put("SMILEStoBS2", map2); +m.put("BS1toBS2", map); +m.put("MAP1to2", mapNames); +m.put("key", key); +} else { +m.put("error", err); +}return mp.addXMap(m); +}if (isSmiles || isSMARTS) { +sFind = (args.length > 1 && args[1].tok == 10 ? this.vwr.getSmilesOpt(args[1].value, 0, 0, 0, flags) : flags); +}flags = flags.toUpperCase(); +var bsMatch3D = bs2; +if (flags.indexOf("INCHI") >= 0) { +return mp.addXStr(this.vwr.getInchi(bs, null, "SMILES/" + flags)); +}if (flags.equals("MF")) { +smiles = this.e.getSmilesExt().getSmilesMatches("", null, bs, bsMatch3D, 1, true, false); +ret = this.vwr.getSmilesMatcher().getMolecularFormula(smiles, false, isON); +} else if (asBonds) { +var map = this.vwr.getSmilesMatcher().getCorrelationMaps(sFind, this.vwr.ms.at, this.vwr.ms.ac, bs, (isSmiles ? 1 : 2) | 8); +ret = (map.length > 0 ? this.vwr.ms.getDihedralMap(map[0]) : Clazz_newIntArray (0, 0)); +} else if (flags.equals("MAP")) { +var map = this.vwr.getSmilesMatcher().getCorrelationMaps(sFind, this.vwr.ms.at, this.vwr.ms.ac, bs, (isSmiles ? 1 : 2) | 128 | 16); +ret = map; +} else { +var smilesFlags = (isSmiles ? (flags.indexOf("OPEN") >= 0 ? 5 : 1) : 2) | (isON && sFind.length == 0 ? 22020096 : 0); +if (flags.indexOf("/MOLECULE/") >= 0) { +var mols = this.vwr.ms.getMolecules(); +var molList = new JU.Lst(); +for (var i = 0; i < mols.length; i++) { +if (mols[i].atomList.intersects(bs)) { +var bsRet = this.e.getSmilesExt().getSmilesMatches(sFind, null, mols[i].atomList, bsMatch3D, smilesFlags, !isON, false); +if (!bsRet.isEmpty()) molList.addLast(bsRet); +}} +ret = molList; +} else { +ret = this.e.getSmilesExt().getSmilesMatches(sFind, null, bs, bsMatch3D, smilesFlags, !isON, false); +}}break; +} +if (ret == null) this.e.invArg(); +return mp.addXObj(ret); +}} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +var bs = new JU.BS(); +var svlist = (isList ? x1.getList() : null); +if (isList && tok0 != 4 && tok0 != 0) { +var v = args[0]; +for (var i = 0, n = svlist.size(); i < n; i++) { +if (JS.SV.areEqual(svlist.get(i), v)) bs.set(i); +} +var ret = Clazz_newIntArray (bs.cardinality(), 0); +for (var pt = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) ret[pt++] = i + 1; + +return mp.addXAI(ret); +}var isReverse = (flags.indexOf("v") >= 0); +var isCaseInsensitive = (flags.indexOf("i") >= 0) || isOff; +var asMatch = (flags.indexOf("m") >= 0); +var checkEmpty = (sFind.length == 0); +var isPattern = (!checkEmpty && !isEquivalent && args.length == 2); +if (isList || isPattern) { +var pm = (isPattern ? this.getPatternMatcher() : null); +var pattern = null; +if (isPattern) { +try { +pattern = pm.compile(sFind, isCaseInsensitive); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.evalError(ex.toString(), null); +} else { +throw ex; +} +} +}var list = (checkEmpty ? null : JS.SV.strListValue(x1)); +var nlist = (checkEmpty ? svlist.size() : list.length); +if (JU.Logger.debugging) JU.Logger.debug("finding " + sFind); +var n = 0; +var matcher = null; +var v = (asMatch ? new JU.Lst() : null); +var what = ""; +for (var i = 0; i < nlist; i++) { +var isMatch; +if (checkEmpty) { +var o = svlist.get(i); +switch (o.tok) { +case 6: +isMatch = (o.getMap().isEmpty() != isEmpty); +break; +case 7: +isMatch = ((o.getList().size() == 0) != isEmpty); +break; +case 4: +isMatch = ((o.asString().length == 0) != isEmpty); +break; +default: +isMatch = true; +} +} else if (isPattern) { +what = list[i]; +matcher = pattern.matcher(what); +isMatch = matcher.find(); +} else { +isMatch = (JS.SV.sValue(svlist.get(i)).indexOf(sFind) >= 0); +}if (asMatch && isMatch || !asMatch && isMatch == !isReverse) { +n++; +bs.set(i); +if (asMatch) v.addLast(isReverse ? what.substring(0, matcher.start()) + what.substring(matcher.end()) : matcher.group()); +}} +if (!isList) { +return (asMatch ? mp.addXStr(v.size() == 1 ? v.get(0) : "") : isReverse ? mp.addXBool(n == 1) : asMatch ? mp.addXStr(n == 0 ? "" : matcher.group()) : mp.addXInt(n == 0 ? 0 : matcher.start() + 1)); +}if (asMatch) { +var listNew = new Array(n); +if (n > 0) for (var i = list.length; --i >= 0; ) if (bs.get(i)) { +--n; +listNew[n] = (asMatch ? v.get(n) : list[i]); +} +return mp.addXAS(listNew); +}var l = new JU.Lst(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) l.addLast(svlist.get(i)); + +return mp.addXList(l); +}if (isSequence) { +return mp.addXStr(this.vwr.getJBR().toStdAmino3(JS.SV.sValue(x1))); +}return mp.addXInt(JS.SV.sValue(x1).indexOf(sFind) + 1); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateGetProperty", +function(mp, args, tok0, isAtomProperty){ +var nargs = args.length; +var isSelect = (isAtomProperty && tok0 == 1275082241); +var isPivot = (isAtomProperty && tok0 == 1275068725); +var isAuxiliary = (tok0 == 1275068446); +var pt = 0; +var tok = (nargs == 0 ? 0 : args[0].tok); +if (nargs == 2 && (tok == 7 || tok == 6 || tok == 14)) { +return mp.addXObj(this.vwr.extractProperty(args[0].value, args[1].value.toString(), -1)); +}var bsSelect = (isAtomProperty && nargs == 1 && args[0].tok == 10 ? args[0].value : null); +var pname = (bsSelect == null && nargs > 0 ? JS.SV.sValue(args[pt++]) : ""); +var propertyName = pname; +var lc = propertyName.toLowerCase(); +if (!isSelect && lc.indexOf("[select ") < 0) propertyName = lc; +var isJSON = false; +if (propertyName.equals("json") && nargs > pt) { +isJSON = true; +propertyName = JS.SV.sValue(args[pt++]); +}var x = null; +if (isAtomProperty) { +x = mp.getX(); +switch (x.tok) { +case 10: +break; +case 4: +var name = x.value; +var data = new Array(3); +var shapeID; +if (name.startsWith("$")) { +name = name.substring(1); +shapeID = this.vwr.shm.getShapeIdFromObjectName(name); +if (shapeID >= 0) { +data[0] = name; +this.vwr.shm.getShapePropertyData(shapeID, "index", data); +if (data[1] != null && !pname.equals("index")) { +var index = (data[1]).intValue(); +data[1] = this.vwr.shm.getShapePropertyIndex(shapeID, pname.intern(), index); +}}} else { +shapeID = JV.JC.shapeTokenIndex(JS.T.getTokFromName(name)); +if (shapeID >= 0) { +data[0] = pname; +data[1] = Integer.$valueOf(-1); +this.vwr.shm.getShapePropertyData(shapeID, pname.intern(), data); +}}return (data[1] == null ? mp.addXStr("") : mp.addXObj(data[1])); +case 7: +if (isPivot) { +var lstx = x.getList(); +if (nargs == 0) return mp.addXObj(this.getMinMax(lstx, 1275068725, true)); +var map = new java.util.Hashtable(); +var sep = (nargs > 1 ? JS.SV.sValue(args[nargs - 1]) : null); +if (sep != null) nargs--; +var keys = new Array(nargs); +for (var i = 0; i < nargs; i++) keys[i] = JS.SV.sValue(args[i]); + +for (var i = 0, n = lstx.size(); i < n; i++) { +var sv = lstx.get(i); +if (sv.tok != 6) continue; +var mapi = sv.getMap(); +var key = ""; +for (var j = 0; j < nargs; j++) { +var obj = mapi.get(keys[j]); +key += (j == 0 ? "" : sep) + JS.SV.sValue(obj); +} +var vlist = map.get(key); +if (vlist == null) map.put(key, vlist = JS.SV.newV(7, new JU.Lst())); +vlist.getList().addLast(sv); +} +return mp.addXMap(map); +}if (bsSelect != null) { +var l0 = x.getList(); +var lst = new JU.Lst(); +for (var i = bsSelect.nextSetBit(0); i >= 0; i = bsSelect.nextSetBit(i + 1)) lst.addLast(l0.get(i)); + +return mp.addXList(lst); +}default: +if (tok0 == 1275068725 && x.tok == 6) { +var map = new java.util.Hashtable(); +var map0 = x.getMap(); +for (var e, $e = map0.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var key = e.getKey(); +var s = e.getValue().asString(); +var l = map.get(s); +if (l == null) map.put(s, l = new JU.Lst()); +l.addLast(key); +} +if ("count".equals(lc)) { +for (var e, $e = map.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +e.setValue(Integer.$valueOf((e.getValue()).size())); +} +}return mp.addXMap(map); +}if (isSelect) propertyName = "[SELECT " + propertyName + "]"; +return mp.addXObj(this.vwr.extractProperty(x, propertyName, -1)); +} +if (!lc.startsWith("bondinfo") && !lc.startsWith("atominfo") && !lc.startsWith("modelkitinfo")) propertyName = "atomInfo." + propertyName; +}var propertyValue = ""; +if (propertyName.equalsIgnoreCase("fileContents") && nargs >= 2) { +var s = JS.SV.sValue(args[1]); +for (var i = 2; i < nargs; i++) s += "|" + JS.SV.sValue(args[i]); + +propertyValue = s; +pt = nargs; +} else if (nargs > pt) { +switch (args[pt].tok) { +case 10: +propertyValue = args[pt++].value; +if (propertyName.equalsIgnoreCase("bondInfo") && nargs > pt && args[pt].tok == 10) propertyValue = Clazz_newArray(-1, [propertyValue, args[pt].value]); +break; +case 6: +case 4: +if (this.vwr.checkPropertyParameter(propertyName)) propertyValue = args[pt++].value; +break; +} +}if (isAtomProperty) { +var bs = x.value; +var iAtom = bs.nextSetBit(0); +if (iAtom < 0) return mp.addXStr(""); +propertyValue = bs; +}if (isAuxiliary && !isAtomProperty) propertyName = "auxiliaryInfo.models." + propertyName; +propertyName = JU.PT.rep(propertyName, ".[", "["); +var property = this.vwr.getProperty(null, propertyName, propertyValue); +if (pt < nargs) property = this.vwr.extractProperty(property, args, pt); +return mp.addXObj(isJSON ? JS.SV.safeJSON("value", property) : JS.SV.isVariableType(property) ? property : JU.Escape.toReadable(propertyName, property)); +}, "JS.ScriptMathProcessor,~A,~N,~B"); +Clazz_defineMethod(c$, "evaluateFormat", +function(mp, intValue, args, isLabel){ +var x1 = (args.length < 2 || intValue == 1287653388 ? mp.getX() : null); +var format = (args.length == 0 ? "%U" : args[0].tok == 7 ? null : JS.SV.sValue(args[0])); +if (!isLabel && args.length > 0 && x1 != null && x1.tok != 10 && format != null) { +if (args.length == 2) { +var listIn = x1.getList(); +var formatList = args[1].getList(); +if (listIn == null || formatList == null) return false; +x1 = JS.SV.getVariableList(this.getSublist(listIn, formatList)); +}args = Clazz_newArray(-1, [args[0], x1]); +x1 = null; +}if (x1 == null) { +if (format == null) return false; +var pt = (isLabel ? -1 : JS.SV.getFormatType(format)); +if (pt >= 0 && args.length != 2) return false; +if (pt >= 0 || args.length < 2 || args[1].tok != 7) { +var o = JS.SV.format(args, pt); +return (format.equalsIgnoreCase("json") ? mp.addXStr(o) : mp.addXObj(o)); +}var a = args[1].getList(); +var args2 = Clazz_newArray(-1, [args[0], null]); +var sa = new Array(a.size()); +for (var i = sa.length; --i >= 0; ) { +args2[1] = a.get(i); +sa[i] = JS.SV.format(args2, pt).toString(); +} +return mp.addXAS(sa); +}if (x1.tok == 7 && format == null) { +var listIn = x1.getList(); +var formatList = args[0].getList(); +var listOut = this.getSublist(listIn, formatList); +return mp.addXList(listOut); +}var bs = (x1.tok == 10 ? x1.value : null); +var asArray = JS.T.tokAttr(intValue, 480); +return mp.addXObj(format == null ? "" : bs == null ? JS.SV.sprintf(JU.PT.formatCheck(format), x1) : this.e.getCmdExt().getBitsetIdent(bs, format, x1.value, true, x1.index, asArray)); +}, "JS.ScriptMathProcessor,~N,~A,~B"); +Clazz_defineMethod(c$, "getSublist", +function(listIn, formatList){ +var listOut = new JU.Lst(); +var map; +var v; +var list; +for (var i = 0, n = listIn.size(); i < n; i++) { +var element = listIn.get(i); +switch (element.tok) { +case 6: +map = element.getMap(); +list = new JU.Lst(); +for (var j = 0, n1 = formatList.size(); j < n1; j++) { +v = map.get(JS.SV.sValue(formatList.get(j))); +list.addLast(v == null ? JS.SV.newS("") : v); +} +listOut.addLast(JS.SV.getVariableList(list)); +break; +case 7: +map = new java.util.Hashtable(); +list = element.getList(); +for (var j = 0, n1 = Math.min(list.size(), formatList.size()); j < n1; j++) { +map.put(JS.SV.sValue(formatList.get(j)), list.get(j)); +} +listOut.addLast(JS.SV.getVariable(map)); +} +} +return listOut; +}, "JU.Lst,JU.Lst"); +Clazz_defineMethod(c$, "evaluateList", +function(mp, tok, args){ +var len = args.length; +var x1 = mp.getX(); +var isArray1 = (x1.tok == 7); +var x2; +switch (tok) { +case 1275335685: +return (len == 2 && mp.addX(x1.pushPop(args[0], args[1])) || len == 1 && mp.addX(x1.pushPop(null, args[0]))); +case 1275334681: +return (len == 1 && mp.addX(x1.pushPop(args[0], null)) || len == 0 && mp.addX(x1.pushPop(null, null))); +case 1275069441: +if (len != 1 && len != 2) return false; +break; +case 1275069447: +case 1275069446: +break; +default: +if (len != 1) return false; +} +var sList1 = null; +var sList2 = null; +var sList3 = null; +if (len == 2) { +var tab = JS.SV.sValue(args[0]); +x2 = args[1]; +if (tok == 1275069441) { +sList1 = (isArray1 ? JS.SV.strListValue(x1) : JU.PT.split(JS.SV.sValue(x1), "\n")); +sList2 = (x2.tok == 7 ? JS.SV.strListValue(x2) : JU.PT.split(JS.SV.sValue(x2), "\n")); +sList3 = new Array(len = Math.max(sList1.length, sList2.length)); +for (var i = 0; i < len; i++) sList3[i] = (i >= sList1.length ? "" : sList1[i]) + tab + (i >= sList2.length ? "" : sList2[i]); + +return mp.addXAS(sList3); +}if (x2.tok != 1073742335) return false; +var l = x1.getList(); +var isCSV = (tab.length == 0); +if (isCSV) tab = ","; +if (tok == 1275069446) { +var s2 = new Array(l.size()); +for (var i = l.size(); --i >= 0; ) { +var a = l.get(i).getList(); +if (a == null) s2[i] = l.get(i); + else { +var sb = new JU.SB(); +for (var j = 0, n = a.size(); j < n; j++) { +if (j > 0) sb.append(tab); +var sv = a.get(j); +sb.append(isCSV && sv.tok == 4 ? "\"" + JU.PT.rep(sv.value, "\"", "\"\"") + "\"" : "" + sv.asString()); +} +s2[i] = JS.SV.newS(sb.toString()); +}} +return mp.addXAV(s2); +}var sa = new JU.Lst(); +if (isCSV) tab = "\0"; +var next = Clazz_newIntArray (2, 0); +for (var i = 0, nl = l.size(); i < nl; i++) { +var line = l.get(i).asString(); +if (isCSV) { +next[1] = 0; +next[0] = 0; +var last = 0; +while (true) { +var s = JU.PT.getCSVString(line, next); +if (s == null) { +if (next[1] == -1) { +line += (++i < nl ? "\n" + l.get(i).asString() : "\""); +next[1] = last; +continue; +}line = line.substring(0, last) + line.substring(last).$replace(',', '\0'); +break; +}line = line.substring(0, last) + line.substring(last, next[0]).$replace(',', '\0') + s + line.substring(next[1]); +next[1] = last = next[0] + s.length; +} +}var linaa = line.$plit(tab); +var la = new JU.Lst(); +for (var j = 0, n = linaa.length; j < n; j++) { +var s = linaa[j]; +if (s.indexOf(".") < 0) try { +la.addLast(JS.SV.newI(Integer.parseInt(s))); +continue; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} + else try { +la.addLast(JS.SV.getVariable(Float.$valueOf(Float.parseFloat(s)))); +continue; +} catch (ee) { +if (Clazz_exceptionOf(ee, Exception)){ +} else { +throw ee; +} +} +la.addLast(JS.SV.newS(s)); +} +sa.addLast(JS.SV.getVariableList(la)); +} +return mp.addXObj(JS.SV.getVariableList(sa)); +}x2 = (len == 0 ? JS.SV.newV(1073742327, "all") : args[0]); +var isAll = (x2.tok == 1073742327); +if (!isArray1 && x1.tok != 4) return mp.binaryOp(this.opTokenFor(tok), x1, x2); +var isScalar1 = JS.SV.isScalar(x1); +var isScalar2 = JS.SV.isScalar(x2); +var list1 = null; +var list2 = null; +var alist1 = x1.getList(); +var alist2 = x2.getList(); +if (isArray1) { +len = alist1.size(); +} else if (isScalar1) { +len = 2147483647; +} else { +sList1 = (JU.PT.split(JS.SV.sValue(x1), "\n")); +list1 = Clazz_newFloatArray (len = sList1.length, 0); +JU.PT.parseFloatArrayData(sList1, list1); +}if (isAll && tok != 1275069446) { +var sum = 0; +if (isArray1) { +for (var i = len; --i >= 0; ) sum += JS.SV.fValue(alist1.get(i)); + +} else if (!isScalar1) { +for (var i = len; --i >= 0; ) sum += list1[i]; + +}return mp.addXFloat(sum); +}if (tok == 1275069446 && x2.tok == 4) { +var sb = new JU.SB(); +if (isScalar1) { +sb.append(JS.SV.sValue(x1)); +} else { +var s = (isAll ? "" : x2.value.toString()); +for (var i = 0; i < len; i++) sb.append(i > 0 ? s : "").append(JS.SV.sValue(alist1.get(i))); + +}return mp.addXStr(sb.toString()); +}var scalar = null; +if (isScalar2) { +scalar = x2; +} else if (x2.tok == 7) { +len = Math.min(len, alist2.size()); +} else { +sList2 = JU.PT.split(JS.SV.sValue(x2), "\n"); +list2 = Clazz_newFloatArray (sList2.length, 0); +JU.PT.parseFloatArrayData(sList2, list2); +len = Math.min(len, list2.length); +}var token = this.opTokenFor(tok); +if (isArray1 && isAll) { +var llist = new JU.Lst(); +return mp.addXList(this.addAllLists(x1.getList(), llist)); +}var a = (isScalar1 ? x1 : null); +var b; +var justVal = (len == 2147483647); +if (justVal) len = 1; +var olist = new Array(len); +for (var i = 0; i < len; i++) { +if (isScalar2) b = scalar; + else if (x2.tok == 7) b = alist2.get(i); + else if (Float.isNaN(list2[i])) b = JS.SV.getVariable(JS.SV.unescapePointOrBitsetAsVariable(sList2[i])); + else b = JS.SV.newF(list2[i]); +if (!isScalar1) { +if (isArray1) a = alist1.get(i); + else if (Float.isNaN(list1[i])) a = JS.SV.getVariable(JS.SV.unescapePointOrBitsetAsVariable(sList1[i])); + else a = JS.SV.newF(list1[i]); +}if (tok == 1275069446) { +if (a.tok != 7) { +var l = new JU.Lst(); +l.addLast(a); +a = JS.SV.getVariableList(l); +}}if (!mp.binaryOp(token, a, b)) return false; +olist[i] = mp.getX(); +} +return (justVal ? mp.addXObj(olist[0]) : mp.addXAV(olist)); +}, "JS.ScriptMathProcessor,~N,~A"); +Clazz_defineMethod(c$, "addAllLists", +function(list, l){ +var n = list.size(); +for (var i = 0; i < n; i++) { +var v = list.get(i); +if (v.tok == 7) this.addAllLists(v.getList(), l); + else l.addLast(v); +} +return l; +}, "JU.Lst,JU.Lst"); +Clazz_defineMethod(c$, "evaluateLoad", +function(mp, args, isFile){ +if (args.length < 1 || args.length > 3) return false; +var file = JV.FileManager.fixDOSName(JS.SV.sValue(args[0])); +var asMap = (args.length > 1 && args[1].tok == 1073742335); +var async = (this.vwr.async || args.length > 2 && args[args.length - 1].tok == 1073742335); +var nBytesMax = (args.length > 1 && args[1].tok == 2 ? args[1].asInt() : -1); +var asJSON = (args.length > 1 && args[1].asString().equalsIgnoreCase("JSON")); +if (asMap) return mp.addXMap(this.vwr.fm.getFileAsMap(file, null, false)); +var isQues = file.startsWith("?"); +if (JV.Viewer.isJS && (isQues || async)) { +if (isFile && isQues) return mp.addXStr(""); +file = this.e.loadFileAsync("load()_", file, mp.oPt, true); +}var str = isFile ? this.vwr.fm.getFilePath(file, false, false) : this.vwr.getFileAsString4(file, nBytesMax, false, false, true, "script"); +try { +return (asJSON ? mp.addXObj(this.vwr.parseJSON(str)) : mp.addXStr(str)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz_defineMethod(c$, "evaluateMath", +function(mp, args, tok){ +var x = JS.SV.fValue(args[0]); +switch (tok) { +case 134218246: +x = Math.sqrt(x); +break; +case 134218244: +x = Math.sin(x * 3.141592653589793 / 180); +break; +case 134218245: +x = Math.cos(x * 3.141592653589793 / 180); +break; +case 134218241: +x = Math.acos(x) * 180 / 3.141592653589793; +break; +} +return mp.addXFloat(x); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz_defineMethod(c$, "evaluateMeasure", +function(mp, args, tok){ +var nPoints = 0; +switch (tok) { +case 1745489939: +var property = null; +var points = new JU.Lst(); +var rangeMinMax = Clazz_newFloatArray(-1, [3.4028235E38, 3.4028235E38]); +var strFormat = null; +var units = null; +var isAllConnected = false; +var isNotConnected = false; +var rPt = 0; +var isNull = false; +var rd = null; +var nBitSets = 0; +var vdw = 3.4028235E38; +var asMinArray = false; +var asFloatArray = false; +for (var i = 0; i < args.length; i++) { +switch (args[i].tok) { +case 10: +var bs = args[i].value; +if (bs.length() == 0) isNull = true; +points.addLast(bs); +nPoints++; +nBitSets++; +break; +case 8: +var v = new JU.Point3fi(); +v.setT(args[i].value); +points.addLast(v); +nPoints++; +break; +case 2: +case 3: +rangeMinMax[rPt++ % 2] = JS.SV.fValue(args[i]); +break; +case 4: +var s = JS.SV.sValue(args[i]); +if (s.startsWith("property_")) { +property = s; +break; +}if (s.equalsIgnoreCase("vdw") || s.equalsIgnoreCase("vanderwaals")) vdw = (i + 1 < args.length && args[i + 1].tok == 2 ? args[++i].asInt() : 100) / 100; + else if (s.equalsIgnoreCase("notConnected")) isNotConnected = true; + else if (s.equalsIgnoreCase("connected")) isAllConnected = true; + else if (s.equalsIgnoreCase("minArray")) asMinArray = (nBitSets >= 1); + else if (s.equalsIgnoreCase("asArray") || s.length == 0) asFloatArray = (nBitSets >= 1); + else if (JM.Measurement.isUnits(s)) units = s.toLowerCase(); + else strFormat = nPoints + ":" + s; +break; +default: +return false; +} +} +if (nPoints < 2 || nPoints > 4 || rPt > 2 || isNotConnected && isAllConnected) return false; +if (isNull) return mp.addXStr(""); +if (vdw != 3.4028235E38 && (nBitSets != 2 || nPoints != 2)) return mp.addXStr(""); +rd = (vdw == 3.4028235E38 ? new J.atomdata.RadiusData(rangeMinMax, 0, null, null) : new J.atomdata.RadiusData(null, vdw, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO)); +var obj = (this.vwr.newMeasurementData(null, points)).set(0, null, rd, property, strFormat, units, null, isAllConnected, isNotConnected, null, true, 0, 0, null, NaN, null).getMeasurements(asFloatArray, asMinArray); +return mp.addXObj(obj); +case 134217729: +if ((nPoints = args.length) != 3 && nPoints != 4) return false; +break; +default: +if ((nPoints = args.length) != 2) return false; +} +var pts = new Array(nPoints); +for (var i = 0; i < nPoints; i++) { +if ((pts[i] = mp.ptValue(args[i], null)) == null) return false; +} +switch (nPoints) { +case 2: +return mp.addXFloat(pts[0].distance(pts[1])); +case 3: +return mp.addXFloat(JU.Measure.computeAngleABC(pts[0], pts[1], pts[2], true)); +case 4: +return mp.addXFloat(JU.Measure.computeTorsion(pts[0], pts[1], pts[2], pts[3], true)); +} +return false; +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz_defineMethod(c$, "evaluateModulation", +function(mp, args){ +var type = ""; +var t = NaN; +var t456 = null; +switch (args.length) { +case 0: +break; +case 1: +switch (args[0].tok) { +case 8: +t456 = args[0].value; +break; +case 4: +type = args[0].asString(); +break; +default: +t = JS.SV.fValue(args[0]); +} +break; +case 2: +type = JS.SV.sValue(args[0]); +t = JS.SV.fValue(args[1]); +break; +default: +return false; +} +if (t456 == null && t < 1e6) t456 = JU.P3.new3(t, t, t); +var x = mp.getX(); +var bs = (x.tok == 10 ? x.value : new JU.BS()); +return mp.addXList(this.vwr.ms.getModulationList(bs, (type + "D").toUpperCase().charAt(0), t456)); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluatePlane", +function(mp, args, tok){ +if (tok == 134219777 && args.length != 3 && args.length != 4 || tok == 134217763 && args.length != 2 && args.length != 3 && args.length != 4 || args.length == 0 || args.length > 4) return false; +var pt1; +var pt2; +var pt3; +var plane = this.e.planeValue(args[0]); +var norm; +var vTemp; +switch (args.length) { +case 1: +if (args[0].tok == 10) { +var bs = args[0].value; +if (bs.cardinality() == 3) { +var pts = this.vwr.ms.getAtomPointVector(bs); +return mp.addXPt4(JU.Measure.getPlaneThroughPoints(pts.get(0), pts.get(1), pts.get(2), new JU.V3(), new JU.V3(), new JU.P4())); +}}return (plane != null && mp.addXPt4(plane)); +case 2: +if (tok == 134217763) { +var plane1 = this.e.planeValue(args[1]); +if (plane1 == null) return false; +pt3 = new JU.P3(); +norm = new JU.V3(); +vTemp = new JU.V3(); +if (plane != null) { +var list = JU.Measure.getIntersectionPP(plane, plane1); +if (list == null) return mp.addXStr(""); +return mp.addXList(list); +}pt2 = mp.ptValue(args[0], null); +if (pt2 == null) return mp.addXStr(""); +return mp.addXPt(JU.Measure.getIntersection(pt2, null, plane1, pt3, norm, vTemp)); +}case 3: +case 4: +switch (tok) { +case 134219777: +var offset = (args.length == 4 ? JS.SV.fValue(args[3]) : NaN); +plane = this.e.getHklPlane(JU.P3.new3(JS.SV.fValue(args[0]), JS.SV.fValue(args[1]), JS.SV.fValue(args[2])), offset, null); +return plane != null && mp.addXPt4(plane); +case 134217763: +pt1 = mp.ptValue(args[0], null); +pt2 = mp.ptValue(args[1], null); +if (pt1 == null || pt2 == null) return mp.addXStr(""); +var vLine = JU.V3.newV(pt2); +vLine.normalize(); +var plane2 = this.e.planeValue(args[2]); +if (plane2 != null) { +pt3 = new JU.P3(); +norm = new JU.V3(); +vTemp = new JU.V3(); +pt1 = JU.Measure.getIntersection(pt1, vLine, plane2, pt3, norm, vTemp); +if (pt1 == null) return mp.addXStr(""); +return mp.addXPt(pt1); +}pt3 = mp.ptValue(args[2], null); +if (pt3 == null) return mp.addXStr(""); +var v = new JU.V3(); +pt3 = JU.P3.newP(pt3); +if (args.length == 3) { +JU.Measure.projectOntoAxis(pt3, pt1, vLine, v); +return mp.addXPt(pt3); +}var r = JS.SV.fValue(args[3]); +var ptCenter = JU.P3.newP(pt3); +JU.Measure.projectOntoAxis(pt3, pt1, vLine, v); +var d = ptCenter.distance(pt3); +var l = new JU.Lst(); +if (d == r) { +l.addLast(pt3); +} else if (d < r) { +d = Math.sqrt(r * r - d * d); +v.scaleAdd2(d, vLine, pt3); +l.addLast(JU.P3.newP(v)); +v.scaleAdd2(-d, vLine, pt3); +l.addLast(JU.P3.newP(v)); +}return mp.addXList(l); +} +switch (args[0].tok) { +case 2: +case 3: +if (args.length == 3) { +var r = JS.SV.fValue(args[0]); +var theta = JS.SV.fValue(args[1]); +var phi = JS.SV.fValue(args[2]); +norm = JU.V3.new3(0, 0, 1); +pt2 = JU.P3.new3(0, 1, 0); +var q = JU.Quat.newVA(pt2, phi); +q.getMatrix().rotate(norm); +pt2.set(0, 0, 1); +q = JU.Quat.newVA(pt2, theta); +q.getMatrix().rotate(norm); +pt2.setT(norm); +pt2.scale(r); +plane = new JU.P4(); +JU.Measure.getPlaneThroughPoint(pt2, norm, plane); +return mp.addXPt4(plane); +}break; +case 10: +case 8: +pt1 = mp.ptValue(args[0], null); +pt2 = mp.ptValue(args[1], null); +if (pt2 == null) return false; +pt3 = (args.length > 2 && (args[2].tok == 10 || args[2].tok == 8) ? mp.ptValue(args[2], null) : null); +norm = JU.V3.newV(pt2); +if (pt3 == null) { +plane = new JU.P4(); +if (args.length == 2 || args[2].tok != 2 && args[2].tok != 3 && !args[2].asBoolean()) { +pt3 = JU.P3.newP(pt1); +pt3.add(pt2); +pt3.scale(0.5); +norm.sub(pt1); +norm.normalize(); +} else if (args[2].tok == 1073742335) { +pt3 = pt1; +} else { +norm.sub(pt1); +pt3 = new JU.P3(); +pt3.scaleAdd2(args[2].asFloat(), norm, pt1); +}JU.Measure.getPlaneThroughPoint(pt3, norm, plane); +return mp.addXPt4(plane); +}var vAB = new JU.V3(); +var ptref = (args.length == 4 ? mp.ptValue(args[3], null) : null); +var nd = JU.Measure.getDirectedNormalThroughPoints(pt1, pt2, pt3, ptref, norm, vAB); +return mp.addXPt4(JU.P4.new4(norm.x, norm.y, norm.z, nd)); +} +} +if (args.length != 4) return false; +var x = JS.SV.fValue(args[0]); +var y = JS.SV.fValue(args[1]); +var z = JS.SV.fValue(args[2]); +var w = JS.SV.fValue(args[3]); +return mp.addXPt4(JU.P4.new4(x, y, z, w)); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz_defineMethod(c$, "evaluatePoint", +function(mp, args){ +switch (args.length) { +default: +return false; +case 1: +if (args[0].tok == 3 || args[0].tok == 2) return mp.addXInt(args[0].asInt()); +var s = null; +if (args[0].tok == 7) { +var list = args[0].getList(); +var len = list.size(); +if (len == 0) { +return false; +}switch (list.get(0).tok) { +case 2: +case 3: +break; +case 4: +s = list.get(0).value; +if (!s.startsWith("{") || (typeof(JU.Escape.uP(s))=='string')) { +s = null; +break; +}var a = new JU.Lst(); +for (var i = 0; i < len; i++) { +a.addLast(JS.SV.getVariable(JU.Escape.uP(JS.SV.sValue(list.get(i))))); +} +return mp.addXList(a); +} +s = "{" + JS.SV.sValue(args[0]) + "}"; +}if (s == null) s = JS.SV.sValue(args[0]); +var pt = JU.Escape.uP(s); +return (Clazz_instanceOf(pt,"JU.P3") ? mp.addXPt(pt) : mp.addXStr("" + pt)); +case 2: +var pt3; +switch (args[1].tok) { +case 1073742334: +case 1073742335: +switch (args[0].tok) { +case 8: +pt3 = JU.P3.newP(args[0].value); +break; +case 10: +pt3 = this.vwr.ms.getAtomSetCenter(args[0].value); +break; +default: +return false; +} +if (args[1].tok == 1073742335) { +this.vwr.tm.transformPt3f(pt3, pt3); +pt3.y = this.vwr.tm.height - pt3.y; +if (this.vwr.antialiased) pt3.scale(0.5); +} else { +if (this.vwr.antialiased) pt3.scale(2); +pt3.y = this.vwr.tm.height - pt3.y; +this.vwr.tm.unTransformPoint(pt3, pt3); +}break; +case 8: +var sv = args[0].getList(); +if (sv == null || sv.size() != 4) return false; +var pt1 = JS.SV.ptValue(args[1]); +pt3 = JU.P3.newP(JS.SV.ptValue(sv.get(0))); +pt3.scaleAdd2(pt1.x, JS.SV.ptValue(sv.get(1)), pt3); +pt3.scaleAdd2(pt1.y, JS.SV.ptValue(sv.get(2)), pt3); +pt3.scaleAdd2(pt1.z, JS.SV.ptValue(sv.get(3)), pt3); +break; +default: +return false; +} +return mp.addXPt(pt3); +case 3: +return mp.addXPt(JU.P3.new3(args[0].asFloat(), args[1].asFloat(), args[2].asFloat())); +case 4: +return mp.addXPt4(JU.P4.new4(args[0].asFloat(), args[1].asFloat(), args[2].asFloat(), args[3].asFloat())); +} +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluatePrompt", +function(mp, args){ +if (args.length != 1 && args.length != 2 && args.length != 3) return false; +var label = JS.SV.sValue(args[0]); +var buttonArray = (args.length > 1 && args[1].tok == 7 ? JS.SV.strListValue(args[1]) : null); +var asButtons = (buttonArray != null || args.length == 1 || args.length == 3 && args[2].asBoolean()); +var input = (buttonArray != null ? null : args.length >= 2 ? JS.SV.sValue(args[1]) : "OK"); +var s = "" + this.vwr.prompt(label, input, buttonArray, asButtons); +return (asButtons && buttonArray != null ? mp.addXInt(Integer.parseInt(s) + 1) : mp.addXStr(s)); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateQuaternion", +function(mp, args, tok){ +var pt0 = null; +var nArgs = args.length; +var nMax = 2147483647; +var isRelative = false; +if (tok == 134221850) { +if (nArgs > 1 && args[nArgs - 1].tok == 4 && (args[nArgs - 1].value).equalsIgnoreCase("relative")) { +nArgs--; +isRelative = true; +}if (nArgs > 1 && args[nArgs - 1].tok == 2 && args[0].tok == 10) { +nMax = args[nArgs - 1].asInt(); +if (nMax <= 0) nMax = 2147483646; +nArgs--; +}}switch (nArgs) { +case 0: +case 1: +case 4: +break; +case 2: +if (tok == 134221850) { +if (args[0].tok == 7 && (args[1].tok == 7 || args[1].tok == 1073742335)) break; +if (args[0].tok == 10 && (args[1].tok == 2 || args[1].tok == 10)) break; +}if ((pt0 = mp.ptValue(args[0], null)) == null || tok != 134221850 && args[1].tok == 8) return false; +break; +case 3: +if (tok != 134221850) return false; +if (args[0].tok == 9) { +if (args[2].tok != 8 && args[2].tok != 10) return false; +break; +}for (var i = 0; i < 3; i++) if (args[i].tok != 8 && args[i].tok != 10) return false; + +break; +default: +return false; +} +var q = null; +var qs = null; +var p4 = null; +switch (nArgs) { +case 0: +return mp.addXPt4(this.vwr.tm.getRotationQ().toPoint4f()); +case 1: +default: +if (tok == 134221850 && args[0].tok == 7) { +var data1 = this.e.getQuaternionArray(args[0].getList(), 1073742001); +var mean = JU.Quat.sphereMean(data1, null, 0.0001); +q = (Clazz_instanceOf(mean,"JU.Quat") ? mean : null); +break; +} else if (tok == 134221850 && args[0].tok == 10) { +qs = this.vwr.getAtomGroupQuaternions(args[0].value, nMax); +} else if (args[0].tok == 11) { +q = JU.Quat.newM(args[0].value); +} else if (args[0].tok == 9) { +p4 = args[0].value; +} else { +var s = JS.SV.sValue(args[0]); +var v = JU.Escape.uP(s.equalsIgnoreCase("best") ? this.vwr.getOrientation(1073741864, "best", null, null).toString() : s); +if (!(Clazz_instanceOf(v,"JU.P4"))) return false; +p4 = v; +}if (tok == 134217731) q = JU.Quat.newVA(JU.P3.new3(p4.x, p4.y, p4.z), p4.w); +break; +case 2: +if (tok == 134221850) { +if (args[0].tok == 7 && args[1].tok == 7) { +var data1 = this.e.getQuaternionArray(args[0].getList(), 1073742001); +var data2 = this.e.getQuaternionArray(args[1].getList(), 1073742001); +qs = JU.Quat.arrayDiv(data2, data1, nMax, isRelative); +break; +}if (args[0].tok == 7 && args[1].tok == 1073742335) { +var data1 = this.e.getQuaternionArray(args[0].getList(), 1073742001); +var stddev = Clazz_newFloatArray (1, 0); +JU.Quat.sphereMean(data1, stddev, 0.0001); +return mp.addXFloat(stddev[0]); +}if (args[0].tok == 10 && args[1].tok == 10) { +var data1 = this.vwr.getAtomGroupQuaternions(args[0].value, 2147483647); +var data2 = this.vwr.getAtomGroupQuaternions(args[1].value, 2147483647); +qs = JU.Quat.arrayDiv(data2, data1, nMax, isRelative); +break; +}}var pt1 = mp.ptValue(args[1], null); +p4 = this.e.planeValue(args[0]); +if (pt1 != null) q = JU.Quat.getQuaternionFrame(JU.P3.new3(0, 0, 0), pt0, pt1); + else q = JU.Quat.newVA(pt0, JS.SV.fValue(args[1])); +break; +case 3: +if (args[0].tok == 9) { +var pt = (args[2].tok == 8 ? args[2].value : this.vwr.ms.getAtomSetCenter(args[2].value)); +return mp.addXStr(JU.Escape.drawQuat(JU.Quat.newP4(args[0].value), "q", JS.SV.sValue(args[1]), pt, 1)); +}var pts = new Array(3); +for (var i = 0; i < 3; i++) pts[i] = (args[i].tok == 8 ? args[i].value : this.vwr.ms.getAtomSetCenter(args[i].value)); + +q = JU.Quat.getQuaternionFrame(pts[0], pts[1], pts[2]); +break; +case 4: +if (tok == 134221850) p4 = JU.P4.new4(JS.SV.fValue(args[1]), JS.SV.fValue(args[2]), JS.SV.fValue(args[3]), JS.SV.fValue(args[0])); + else q = JU.Quat.newVA(JU.P3.new3(JS.SV.fValue(args[0]), JS.SV.fValue(args[1]), JS.SV.fValue(args[2])), JS.SV.fValue(args[3])); +break; +} +if (qs != null) { +if (nMax != 2147483647) { +var list = new JU.Lst(); +for (var i = 0; i < qs.length; i++) list.addLast(qs[i].toPoint4f()); + +return mp.addXList(list); +}q = (qs.length > 0 ? qs[0] : null); +}return mp.addXPt4((q == null ? JU.Quat.newP4(p4) : q).toPoint4f()); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz_defineMethod(c$, "evaluateRandom", +function(mp, args){ +if (args.length > 3) return false; +if (this.rand == null) this.rand = new java.util.Random(); +var lower = 0; +var upper = 1; +switch (args.length) { +case 3: +this.rand.setSeed(Clazz_floatToInt(JS.SV.fValue(args[2]))); +case 2: +upper = JS.SV.fValue(args[1]); +case 1: +lower = JS.SV.fValue(args[0]); +case 0: +break; +default: +return false; +} +return mp.addXFloat((this.rand.nextFloat() * (upper - lower)) + lower); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateRowCol", +function(mp, args, tok){ +if (args.length != 1) return false; +var n = args[0].asInt() - 1; +var x1 = mp.getX(); +var f; +switch (x1.tok) { +case 11: +if (n < 0 || n > 2) return false; +var m = x1.value; +switch (tok) { +case 1275068935: +f = Clazz_newFloatArray (3, 0); +m.getRow(n, f); +return mp.addXAF(f); +case 1275068934: +default: +f = Clazz_newFloatArray (3, 0); +m.getColumn(n, f); +return mp.addXAF(f); +} +case 12: +if (n < 0 || n > 2) return false; +var m4 = x1.value; +switch (tok) { +case 1275068935: +f = Clazz_newFloatArray (4, 0); +m4.getRow(n, f); +return mp.addXAF(f); +case 1275068934: +default: +f = Clazz_newFloatArray (4, 0); +m4.getColumn(n, f); +return mp.addXAF(f); +} +case 7: +var l1 = x1.getList(); +var l2 = new JU.Lst(); +for (var i = 0, len = l1.size(); i < len; i++) { +var l3 = l1.get(i).getList(); +if (l3 == null) return mp.addXStr(""); +l2.addLast(n < l3.size() ? l3.get(n) : JS.SV.newS("")); +} +return mp.addXList(l2); +} +return false; +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz_defineMethod(c$, "evaluateIn", +function(mp, args){ +var x1 = mp.getX(); +switch (args.length) { +case 1: +var lst = args[0].getList(); +if (lst != null) for (var i = 0, n = lst.size(); i < n; i++) if (JS.SV.areEqual(x1, lst.get(i))) return mp.addXInt(i + 1); + +break; +default: +for (var i = 0; i < args.length; i++) if (JS.SV.areEqual(x1, args[i])) return mp.addXInt(i + 1); + +break; +} +return mp.addXInt(0); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateReplace", +function(mp, args){ +var isAll = false; +var sFind; +var sReplace; +switch (args.length) { +case 0: +isAll = true; +sFind = sReplace = null; +break; +case 3: +isAll = JS.SV.bValue(args[2]); +case 2: +sFind = JS.SV.sValue(args[0]); +sReplace = JS.SV.sValue(args[1]); +break; +default: +return false; +} +var x = mp.getX(); +if (x.tok == 7) { +var list = JS.SV.strListValue(x); +var l = new Array(list.length); +for (var i = list.length; --i >= 0; ) l[i] = (sFind == null ? JU.PT.clean(list[i]) : isAll ? JU.PT.replaceAllCharacters(list[i], sFind, sReplace) : JU.PT.rep(list[i], sFind, sReplace)); + +return mp.addXAS(l); +}var s = JS.SV.sValue(x); +return mp.addXStr(sFind == null ? JU.PT.clean(s) : isAll ? JU.PT.replaceAllCharacters(s, sFind, sReplace) : JU.PT.rep(s, sFind, sReplace)); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateScript", +function(mp, args, tok){ +if ((tok == 134222350 || tok == 134238732) && args.length != 1 || args.length == 0) return false; +var s = JS.SV.sValue(args[0]); +var sb = new JU.SB(); +switch (tok) { +case 134218759: +return (args.length == 2 ? s.equalsIgnoreCase("JSON") && mp.addXObj(this.vwr.parseJSON(JS.SV.sValue(args[1]))) : mp.addXObj(this.vwr.evaluateExpressionAsVariable(s))); +case 134222850: +var appID = (args.length == 2 ? JS.SV.sValue(args[1]) : "."); +if (!appID.equals(".")) sb.append(this.vwr.jsEval(appID + "\1" + s)); +if (appID.equals(".") || appID.equals("*")) this.e.runScriptBuffer(s, sb, true); +break; +case 134222350: +this.e.runScriptBuffer("show " + s, sb, true); +break; +case 134238732: +return mp.addX(this.vwr.jsEvalSV(s)); +} +s = sb.toString(); +var f; +return (Float.isNaN(f = JU.PT.parseFloatStrict(s)) ? mp.addXStr(s) : s.indexOf(".") >= 0 ? mp.addXFloat(f) : mp.addXInt(JU.PT.parseInt(s))); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz_defineMethod(c$, "evaluateSort", +function(mp, args, tok){ +if (args.length > 1) return false; +if (tok == 1275068444) { +if (args.length == 1 && args[0].tok == 4) { +return mp.addX(mp.getX().sortMapArray(args[0].asString())); +}var n = (args.length == 0 ? 0 : args[0].asInt()); +return mp.addX(mp.getX().sortOrReverse(n)); +}var x = mp.getX(); +var match = (args.length == 0 ? null : args[0]); +if (x.tok == 4) { +var n = 0; +var s = JS.SV.sValue(x); +if (match == null) return mp.addXInt(0); +var m = JS.SV.sValue(match); +for (var i = 0; i < s.length; i++) { +var pt = s.indexOf(m, i); +if (pt < 0) break; +n++; +i = pt; +} +return mp.addXInt(n); +}var counts = new JU.Lst(); +var last = null; +var count = null; +var xList = JS.SV.getVariable(x.value).sortOrReverse(0).getList(); +if (xList == null) return (match == null ? mp.addXStr("") : mp.addXInt(0)); +for (var i = 0, nLast = xList.size(); i <= nLast; i++) { +var a = (i == nLast ? null : xList.get(i)); +if (match != null && a != null && !JS.SV.areEqual(a, match)) continue; +if (JS.SV.areEqual(a, last)) { +count.intValue++; +continue; +} else if (last != null) { +var y = new JU.Lst(); +y.addLast(last); +y.addLast(count); +counts.addLast(JS.SV.getVariableList(y)); +}count = JS.SV.newI(1); +last = a; +} +if (match == null) return mp.addX(JS.SV.getVariableList(counts)); +if (counts.isEmpty()) return mp.addXInt(0); +return mp.addX(counts.get(0).getList().get(1)); +}, "JS.ScriptMathProcessor,~A,~N"); +Clazz_defineMethod(c$, "evaluateString", +function(mp, tok, args){ +var x = mp.getX(); +var sArg = (args.length > 0 ? JS.SV.sValue(args[0]) : tok == 1275068932 ? "" : "\n"); +switch (args.length) { +case 0: +break; +case 1: +if (args[0].tok == 1073742335) { +return mp.addX(JS.SV.getVariable(JU.PT.getTokens(x.asString()))); +}break; +case 2: +if (x.tok == 7) break; +if (tok == 1275069447) { +x = JS.SV.getVariable(JU.PT.split(JU.PT.rep(x.value, "\n\r", "\n").$replace('\r', '\n'), "\n")); +break; +}default: +return false; +} +if (x.tok == 7 && tok != 1275068932 && (tok != 1275069447 || args.length == 2)) { +mp.addX(x); +return this.evaluateList(mp, tok, args); +}var s = (tok == 1275069447 && x.tok == 10 || tok == 1275068932 && x.tok == 7 ? null : JS.SV.sValue(x)); +switch (tok) { +case 1275069447: +if (x.tok == 10) { +var bsSelected = x.value; +var modelCount = this.vwr.ms.mc; +var lst = new JU.Lst(); +for (var i = 0; i < modelCount; i++) { +var bs = this.vwr.getModelUndeletedAtomsBitSet(i); +bs.and(bsSelected); +lst.addLast(JS.SV.getVariable(bs)); +} +return mp.addXList(lst); +}return mp.addXAS(JU.PT.split(s, sArg)); +case 1275069446: +if (s.length > 0 && s.charAt(s.length - 1) == '\n') s = s.substring(0, s.length - 1); +return mp.addXStr(JU.PT.rep(s, "\n", sArg)); +case 1275068932: +if (s != null) return mp.addXStr(JU.PT.trim(s, sArg)); +var list = JS.SV.strListValue(x); +for (var i = list.length; --i >= 0; ) list[i] = JU.PT.trim(list[i], sArg); + +return mp.addXAS(list); +} +return mp.addXStr(""); +}, "JS.ScriptMathProcessor,~N,~A"); +Clazz_defineMethod(c$, "evaluateSubstructure", +function(mp, args, tok, isSelector){ +if (args.length == 0 || isSelector && (tok == 134218753 || args.length > 1)) return false; +var objTarget = (tok == 134218756 && !isSelector && args[0].tok == 134218756 ? args[0].value : null); +if (objTarget != null && args.length < 2) return false; +var compileSearch = (tok == 134218756 && !isSelector && args[0].tok == 10); +var objPattern = (args[0].tok == 134218753 ? args[0].value : objTarget != null && args[1].tok == 134218753 ? args[1].value : null); +if (objTarget != null && objPattern == null) return false; +var pattern = (compileSearch ? null : JS.SV.sValue(args[0])); +var bs = new JU.BS(); +if (compileSearch || pattern.length > 0) try { +if (compileSearch) { +return mp.addX(JS.SV.newV(134218756, this.vwr.getSmilesMatcher().compileSearchTarget(this.vwr.ms.at, this.vwr.ms.ac, JS.SV.getBitSet(args[0], false)))); +}if (objTarget != null) return mp.addXBs(this.vwr.getSmilesMatcher().getSubstructureSet(objPattern, objTarget, 0, null, 2)); +if (tok == 134218753) { +return mp.addX(JS.SV.newV(134218753, this.vwr.getSmilesMatcher().compileSmartsPattern(pattern))); +}var bsSelected = (isSelector ? mp.getX().value : args.length == 2 && args[1].tok == 10 ? args[1].value : this.vwr.getModelUndeletedAtomsBitSet(-1)); +bs = this.vwr.getSmilesMatcher().getSubstructureSet((objPattern == null ? pattern : objPattern), this.vwr.ms.at, this.vwr.ms.ac, bsSelected, (tok == 134218757 ? 1 : 2)); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +return (tok != 134218753 && mp.addXBs(bs)); +}, "JS.ScriptMathProcessor,~A,~N,~B"); +Clazz_defineMethod(c$, "evaluateSymop", +function(mp, args, isProperty){ +var narg = args.length; +var o = null; +if (args.length == 2 && args[0].tok == 4 && args[1].tok == 4 && (args[1].value).equalsIgnoreCase("matrix")) { +o = this.vwr.getSymStatic().staticConvertOperation(args[0].value, null); +return (o != null && mp.addXObj(o)); +}if (args.length == 2 && args[0].tok == 12 && args[1].tok == 4 && (args[1].value).equalsIgnoreCase("xyz")) { +o = this.vwr.getSymStatic().staticConvertOperation("", args[0].value); +return (o != null && mp.addXObj(o)); +}var x1 = (isProperty ? mp.getX() : null); +var isPoint = false; +if (x1 != null && x1.tok != 10 && !(isPoint = (x1.tok == 8))) return false; +var bsAtoms = (x1 == null || isPoint ? null : x1.value); +var pt1 = (isPoint ? JS.SV.ptValue(x1) : null); +if (!isPoint && bsAtoms == null) bsAtoms = this.vwr.getThisModelAtoms(); +if (narg == 0) { +var ops = JU.PT.split(JU.PT.trim(this.vwr.getSymTemp().getSpaceGroupInfo(this.vwr.ms, null, (bsAtoms == null || bsAtoms.isEmpty() ? Math.max(0, this.vwr.am.cmi) : this.vwr.ms.at[bsAtoms.nextSetBit(0)].mi), false, null).get("symmetryInfo"), "\n"), "\n"); +var lst = new JU.Lst(); +for (var i = 0, n = ops.length; i < n; i++) lst.addLast(JU.PT.split(ops[i], "\t")); + +return mp.addXList(lst); +}var xyz = null; +var tok = 0; +var iOp = -2147483648; +var apt = 0; +var pt2 = null; +var bs1 = null; +var isWyckoff = false; +switch (args[0].tok) { +case 4: +xyz = JS.SV.sValue(args[0]); +switch (xyz == null ? "" : xyz.toLowerCase()) { +case "count": +var sym = this.vwr.getOperativeSymmetry(); +return (narg != 1 ? false : mp.addXInt(sym == null ? 0 : sym.getSpaceGroupOperationCount())); +case "": +tok = 0; +break; +case "invariant": +tok = 36868; +break; +case "wyckoff": +tok = 1086324754; +isWyckoff = true; +break; +case "wyckoffm": +tok = 1086324755; +isWyckoff = true; +break; +} +apt++; +break; +case 12: +xyz = args[0].escape(); +apt++; +break; +case 2: +iOp = args[0].asInt(); +apt++; +break; +case 10: +if (!isPoint) { +bs1 = (args.length == 1 || args[1].tok != 10 ? bsAtoms : null); +bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.getModelIndexForAtom(bsAtoms.nextSetBit(0))); +}break; +} +if (bsAtoms == null) { +if (apt < narg && args[apt].tok == 10) (bsAtoms = new JU.BS()).or(args[apt].value); +if (apt + 1 < narg && args[apt + 1].tok == 10) (bsAtoms == null ? (bsAtoms = new JU.BS()) : bsAtoms).or(args[apt + 1].value); +}var trans = null; +if (narg > apt && args[apt].tok == 7) { +var a = args[apt++].getList(); +if (a.size() != 3) return false; +trans = JU.P3.new3(JS.SV.fValue(a.get(0)), JS.SV.fValue(a.get(1)), JS.SV.fValue(a.get(2))); +} else if (narg > apt && args[apt].tok == 2) { +JU.SimpleUnitCell.ijkToPoint3f(JS.SV.iValue(args[apt++]), trans = new JU.P3(), 0, 0); +}if (pt1 == null && (pt1 = (narg > apt ? mp.ptValue(args[apt], bsAtoms) : null)) != null) apt++; +if ((pt2 = (narg > apt ? mp.ptValue(args[apt], bsAtoms) : null)) != null) apt++; +if (pt1 != null && pt2 == null && bs1 != null && !bs1.isEmpty()) { +pt2 = pt1; +pt1 = JU.P3.newP(this.vwr.ms.at[bs1.nextSetBit(0)]); +}var nth = (pt2 != null && args.length > apt && iOp == -2147483648 && args[apt].tok == 2 ? args[apt].intValue : -1); +if (nth >= 0) apt++; +if (iOp == -2147483648 && tok != 36868) iOp = 0; +var map = null; +if (tok == 0 && xyz != null && xyz.indexOf(",") < 0) { +if (apt == narg) { +map = this.vwr.ms.getPointGroupInfo(null); +} else if (args[apt].tok == 6) { +map = args[apt].getMap(); +}}if (map != null) { +var m; +var pt = xyz.indexOf('.'); +var p1 = xyz.indexOf('^'); +if (p1 > 0) { +nth = JU.PT.parseInt(xyz.substring(p1 + 1)); +} else { +p1 = xyz.length; +nth = 1; +}if (pt > 0 && p1 > pt + 1) { +iOp = JU.PT.parseInt(xyz.substring(pt + 1, p1)); +if (iOp < 1) iOp = 1; +p1 = pt; +} else { +iOp = 1; +}xyz = xyz.substring(0, p1); +o = map.get(xyz + "_m"); +if (o == null) { +o = map.get(xyz); +return (o == null ? mp.addXStr("") : mp.addXObj(o)); +}var centerPt; +try { +if (Clazz_instanceOf(o,"JS.SV")) { +centerPt = (map.get("center")).value; +var obj = o; +if (obj.tok == 11) { +m = obj.value; +} else if (obj.tok == 7) { +m = obj.getList().get(iOp - 1).value; +} else { +return false; +}} else { +centerPt = map.get("center"); +if (Clazz_instanceOf(o,"JU.M3")) { +m = o; +} else { +m = (o).get(iOp - 1); +}}var m0 = m; +m = JU.M3.newM3(m); +if (nth > 1) { +for (var i = 1; i < nth; i++) { +m.mul(m0); +} +}if (pt1 == null) return mp.addXObj(m); +pt1 = JU.P3.newP(pt1); +pt1.sub(centerPt); +m.rotate(pt1); +pt1.add(centerPt); +return mp.addXPt(pt1); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return false; +}var desc = (narg == apt ? (isWyckoff ? "" : tok == 36868 ? "id" : pt2 != null ? "all" : pt1 != null ? "point" : "matrix") : JS.SV.sValue(args[apt++])); +var haveAtom = ((!isWyckoff || isProperty) && bsAtoms != null && !bsAtoms.isEmpty()); +var iatom = (haveAtom ? bsAtoms.nextSetBit(0) : -1); +if (isWyckoff) { +while (desc.length > 0 && JU.PT.isDigit(desc.charAt(0))) desc = desc.substring(1); + +var pt = (haveAtom ? this.vwr.ms.getAtom(iatom) : pt1); +if (pt == null) { +switch (desc) { +case "": +case "*": +desc = "*"; +break; +default: +if (desc.length == 1) desc += "*"; + else return false; +} +}if (desc.length == 0 || desc.equalsIgnoreCase("label")) desc = null; +var letter = (desc == null ? (tok == 1086324755 ? "" : null) : desc.endsWith("*") || desc.equalsIgnoreCase("coord") || desc.equalsIgnoreCase("coords") ? desc : desc.substring(0, 1)); +var sym = this.vwr.getOperativeSymmetry(); +return mp.addXObj(sym == null ? null : sym.getWyckoffPosition(this.vwr, pt, (letter == null ? (tok == 1086324755 ? "M" : null) : (tok == 1086324755 ? "M" : "") + letter))); +}desc = desc.toLowerCase(); +if (tok == 36868 || desc.equals("invariant") && isProperty) { +if (haveAtom && pt1 == null) pt1 = this.vwr.ms.at[iatom]; +haveAtom = (pt1 != null); +if (iatom < 0) iatom = this.vwr.getThisModelAtoms().nextSetBit(0); +}if (tok == 36868 && iOp == -2147483648) { +var ret = null; +var sym = this.vwr.getCurrentUnitCell(); +if (pt1 != null) { +ret = (sym == null ? Clazz_newIntArray (0, 0) : sym.getInvariantSymops(pt1, null)); +} else if (bsAtoms != null && !bsAtoms.isEmpty()) { +var ia = bsAtoms.nextSetBit(0); +pt1 = this.vwr.ms.at[ia]; +ret = this.vwr.ms.getSymmetryInvariant(ia); +}if (ret != null && ret.length > 0) { +var m = new Array(ret.length); +for (var i = 0; i < m.length; i++) { +iOp = ret[i]; +m[i] = this.vwr.getSymmetryInfo(iatom, null, iOp, null, pt1, pt1, 1275068418, desc, 0, -1, 0, null); +} +return mp.addXObj(m); +}return (ret != null && mp.addXAI(ret)); +}return (apt == args.length && mp.addXObj(this.vwr.getSymmetryInfo(iatom, xyz, iOp, trans, pt1, pt2, 1275068418, desc, 0, nth, 0, null))); +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz_defineMethod(c$, "evaluateTensor", +function(mp, args){ +var isTensor = (args.length == 2 && args[1].tok == 1275068445); +var x = (isTensor ? null : mp.getX()); +if (args.length > 2 || !isTensor && x.tok != 10) return false; +var bs = x.value; +var tensorType = (isTensor || args.length == 0 ? null : JS.SV.sValue(args[0]).toLowerCase()); +var calc = this.vwr.getNMRCalculation(); +if ("unique".equals(tensorType)) return mp.addXBs(calc.getUniqueTensorSet(bs)); +var infoType = (args.length < 2 ? null : JS.SV.sValue(args[1]).toLowerCase()); +if (isTensor) { +return mp.addXObj((args[0].value).getInfo(infoType)); +}return mp.addXList(calc.getTensorInfo(tensorType, infoType, bs)); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "evaluateUserFunction", +function(mp, name, args, tok, isSelector){ +var x1 = null; +if (isSelector) { +x1 = mp.getX(); +switch (x1.tok) { +case 10: +break; +case 6: +if (args.length > 0) return false; +x1 = x1.getMap().get(name); +return (x1 == null ? mp.addXStr("") : mp.addX(x1)); +default: +return false; +} +}name = name.toLowerCase(); +mp.wasX = false; +var params = new JU.Lst(); +for (var i = 0; i < args.length; i++) { +params.addLast(args[i]); +} +if (isSelector) { +return mp.addXObj(this.e.getBitsetProperty(x1.value, null, tok, null, null, x1.value, Clazz_newArray(-1, [name, params]), false, x1.index, false)); +}var $var = this.e.getUserFunctionResult(name, params, null); +return ($var == null ? false : mp.addX($var)); +}, "JS.ScriptMathProcessor,~S,~A,~N,~B"); +Clazz_defineMethod(c$, "evaluateWithin", +function(mp, args, isAtomProperty){ +var len = args.length; +if (len < 1 || len > 5) return false; +if (len == 1 && args[0].tok == 10) return mp.addX(args[0]); +var bs = (isAtomProperty ? JS.SV.getBitSet(mp.getX(), false) : null); +var distance = 0; +var withinSpec = args[0].value; +var withinStr = "" + withinSpec; +var ms = this.vwr.ms; +var isVdw = false; +var isWithinModelSet = false; +var isWithinGroup = false; +var isDistance = false; +var rd = null; +var tok = args[0].tok; +switch (tok == 4 ? tok = JS.T.getTokFromName(withinStr) : tok) { +case 1648363544: +isVdw = true; +withinSpec = null; +case 3: +case 2: +isDistance = true; +if (len < 2 || len == 3 && args[1].tok == 7 && args[2].tok != 7) return false; +distance = (isVdw ? 100 : JS.SV.fValue(args[0])); +switch (tok = args[1].tok) { +case 1073742335: +case 1073742334: +isWithinModelSet = args[1].asBoolean(); +if (len > 2 && JS.SV.sValue(args[2]).equalsIgnoreCase("unitcell")) tok = 1814695966; + else if (len > 2 && args[2].tok != 10) return false; +len = 0; +break; +case 4: +var s = JS.SV.sValue(args[1]); +if (s.startsWith("$")) return mp.addXBs(this.getAtomsNearSurface(distance, s.substring(1))); +if (s.equalsIgnoreCase("group")) { +isWithinGroup = true; +tok = 1086324742; +} else if (s.equalsIgnoreCase("vanderwaals") || s.equalsIgnoreCase("vdw")) { +withinSpec = null; +isVdw = true; +tok = 1648363544; +} else { +tok = JS.T.getTokFromName(s); +if (tok == 0) return false; +}break; +} +break; +case 7: +if (len == 1) { +withinSpec = args[0].asString(); +tok = 0; +}break; +case 1073742328: +return (len == 3 && Clazz_instanceOf(args[1].value,"JU.BS") && Clazz_instanceOf(args[2].value,"JU.BS") && mp.addXBs(this.vwr.getBranchBitSet((args[2].value).nextSetBit(0), (args[1].value).nextSetBit(0), true))); +case 134218757: +case 1237320707: +case 134218756: +var bsSelected = null; +var isOK = true; +switch (len) { +case 2: +bsSelected = bs; +break; +case 3: +isOK = (args[2].tok == 10); +if (isOK) bsSelected = args[2].value; +break; +default: +isOK = false; +} +return isOK && mp.addXObj(this.e.getSmilesExt().getSmilesMatches(JS.SV.sValue(args[1]), null, bsSelected, null, tok == 134218756 ? 2 : 1, mp.asBitSet, false)); +} +if ((typeof(withinSpec)=='string')) { +if (tok == 0) { +tok = 1073742362; +if (len > 2) return false; +len = 2; +}} else if (!isDistance) { +return false; +}switch (len) { +case 1: +switch (tok) { +case 136314895: +case 2097184: +case 1812599299: +case 1814695966: +return mp.addXBs(ms.getAtoms(tok, null)); +case 1073741863: +return mp.addXBs(ms.getAtoms(tok, "")); +case 1073742362: +return mp.addXBs(ms.getAtoms(1086324744, withinStr)); +} +return false; +case 2: +switch (tok) { +case 1073742362: +tok = 1086324744; +break; +case 1073741824: +case 1086326786: +case 1086326785: +case 1073741863: +case 1086324744: +case 1111490587: +case 1073742128: +case 1073741925: +case 1073742189: +return mp.addXBs(this.vwr.ms.getAtoms(tok, JS.SV.sValue(args[1]))); +case 1094713349: +case 1094713350: +return mp.addXBs(this.vwr.ms.getAtoms(tok, JS.SV.ptValue(args[1]))); +case 1814695966: +var l = args[1].getList(); +if (l == null) return false; +var oabc = null; +var uc = null; +if (l.size() != 4) return false; +oabc = new Array(4); +for (var i = 0; i < 4; i++) { +if ((oabc[i] = JS.SV.ptValue(l.get(i))) == null) return false; +} +uc = this.vwr.getSymTemp().getUnitCell(oabc, false, null); +return mp.addXBs(this.vwr.ms.getAtoms(tok, uc)); +case 7: +break; +} +break; +case 3: +switch (tok) { +case 1073742335: +case 1073742334: +case 1086324742: +case 1648363544: +case 1814695966: +case 134217750: +case 134219777: +case 1073742329: +case 8: +case 7: +break; +case 1086324744: +withinStr = JS.SV.sValue(args[2]); +break; +default: +return false; +} +break; +} +var plane = null; +var pt = null; +var pts1 = null; +var last = args.length - 1; +switch (args[last].tok) { +case 9: +plane = args[last].value; +break; +case 8: +pt = args[last].value; +if (JS.SV.sValue(args[1]).equalsIgnoreCase("hkl")) plane = this.e.getHklPlane(pt, NaN, null); +break; +case 7: +pts1 = (last == 2 && args[1].tok == 7 ? args[1].getList() : null); +pt = (last == 2 ? JS.SV.ptValue(args[1]) : last == 1 ? JU.P3.new3(NaN, 0, 0) : null); +break; +} +if (plane != null) return mp.addXBs(ms.getAtomsNearPlane(distance, plane)); +var bsLast = (args[last].tok == 10 ? args[last].value : null); +if (bs == null) bs = bsLast; +if (last > 0 && pt == null && pts1 == null && bs == null) return false; +if (tok == 1814695966) { +var asMap = isWithinModelSet; +return ((bs != null || pt != null) && mp.addXObj(this.vwr.ms.getUnitCellPointsWithin(distance, bs, pt, asMap))); +}if (pt != null || pts1 != null) { +if (args[last].tok == 7) { +var sv = args[last].getList(); +var ap3 = new Array(sv.size()); +for (var i = ap3.length; --i >= 0; ) ap3[i] = JS.SV.ptValue(sv.get(i)); + +var ap31 = null; +if (pts1 != null) { +ap31 = new Array(pts1.size()); +for (var i = ap31.length; --i >= 0; ) ap31[i] = JS.SV.ptValue(pts1.get(i)); + +}var ret = new Array(1); +if (bs != null) { +bs.and(this.vwr.getAllAtoms()); +ap31 = this.vwr.ms.at; +}switch (J.bspt.PointIterator.withinDistPoints(distance, pt, ap3, ap31, bs, ret)) { +case 10: +return mp.addXBs(ret[0]); +case 134217751: +return mp.addXPt(ret[0]); +case 1073742001: +return mp.addXList(ret[0]); +case 1275068418: +return mp.addXAI(ret[0]); +case 4: +return mp.addXStr(ret[0]); +default: +return false; +} +}return mp.addXBs(this.vwr.getAtomsNearPt(distance, pt, null)); +}if (tok == 1086324744) return mp.addXBs(this.vwr.ms.getSequenceBits(withinStr, bs, new JU.BS())); +if (bs == null) bs = new JU.BS(); +if (!isDistance) { +try { +return mp.addXBs(this.vwr.ms.getAtoms(tok, bs)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +}if (isWithinGroup) return mp.addXBs(this.vwr.getGroupsWithin(Clazz_floatToInt(distance), bs)); +if (isVdw) { +rd = new J.atomdata.RadiusData(null, (distance > 10 ? distance / 100 : distance), (distance > 10 ? J.atomdata.RadiusData.EnumType.FACTOR : J.atomdata.RadiusData.EnumType.OFFSET), J.c.VDW.AUTO); +if (distance < 0) distance = 0; +}var bsret = this.vwr.ms.getAtomsWithinRadius(distance, (isAtomProperty ? bsLast : bs), isWithinModelSet, rd, isAtomProperty ? bs : null); +if (isAtomProperty) { +bsret.andNot(bsLast); +}return mp.addXBs(bsret); +}, "JS.ScriptMathProcessor,~A,~B"); +Clazz_defineMethod(c$, "evaluateWrite", +function(mp, args){ +var n = args.length; +var asBytes = false; +if (n == 2 && args[1].tok == 1073742335) { +n = 1; +asBytes = true; +}switch (n) { +case 0: +return false; +case 1: +var type = args[0].asString().toUpperCase(); +if (type.equals("PNGJ")) { +var o = this.vwr.fm.getFileAsMap(null, "PNGJ", asBytes); +return (asBytes ? mp.addX(JS.SV.newV(15, new JU.BArray(o))) : mp.addXMap(o)); +}if (JU.PT.isOneOf(type, ";ZIP;ZIPALL;JMOL;")) { +var params = new java.util.Hashtable(); +var oc = new JU.OC(); +params.put("outputChannel", oc); +this.vwr.createZip(null, type, params); +var bytes = oc.toByteArray(); +if (asBytes) return mp.addX(JS.SV.newV(15, new JU.BArray(bytes))); +params = new java.util.Hashtable(); +this.vwr.readFileAsMap(JU.Rdr.getBIS(bytes), params, null); +return mp.addXMap(params); +}break; +} +return mp.addXStr(this.e.getCmdExt().dispatch(134221856, true, args)); +}, "JS.ScriptMathProcessor,~A"); +Clazz_defineMethod(c$, "getAtomsNearSurface", +function(distance, surfaceId){ +var data = Clazz_newArray(-1, [surfaceId, null, null]); +if (this.e.getShapePropertyData(24, "getVertices", data)) return this.getAtomsNearPts(distance, data[1], data[2]); +data[1] = Integer.$valueOf(0); +data[2] = Integer.$valueOf(-1); +if (this.e.getShapePropertyData(22, "getCenter", data)) return this.vwr.getAtomsNearPt(distance, data[2], null); +data[1] = Float.$valueOf(distance); +if (this.e.getShapePropertyData(21, "getAtomsWithin", data)) return data[2]; +return new JU.BS(); +}, "~N,~S"); +Clazz_defineMethod(c$, "getAtomsNearPts", +function(distance, points, bsInclude){ +var bsResult = new JU.BS(); +if (points.length == 0 || bsInclude != null && bsInclude.isEmpty()) return bsResult; +if (bsInclude == null) bsInclude = JU.BSUtil.setAll(points.length); +var at = this.vwr.ms.at; +for (var i = this.vwr.ms.ac; --i >= 0; ) { +var atom = at[i]; +if (atom == null) continue; +for (var j = bsInclude.nextSetBit(0); j >= 0; j = bsInclude.nextSetBit(j + 1)) if (atom.distance(points[j]) < distance) { +bsResult.set(i); +break; +} +} +return bsResult; +}, "~N,~A,JU.BS"); +Clazz_defineMethod(c$, "getMinMax", +function(floatOrSVArray, tok, isSV){ +var data = null; +var sv = null; +var ndata = 0; +var htPivot = null; +while (true) { +if (JU.AU.isAF(floatOrSVArray)) { +if (tok == 1275068725) return Float.$valueOf(NaN); +data = floatOrSVArray; +ndata = data.length; +if (ndata == 0) break; +} else if (Clazz_instanceOf(floatOrSVArray,"JU.Lst")) { +sv = floatOrSVArray; +ndata = sv.size(); +if (ndata == 0) { +if (tok != 1275068725) break; +} else { +if (tok != 1275068725) { +var sv0 = sv.get(0); +if (sv0.tok == 8) return this.getMinMaxPoint(sv, tok); +if (sv0.tok == 4 && (sv0.value).startsWith("{")) { +var pt = JS.SV.ptValue(sv0); +if (Clazz_instanceOf(pt,"JU.P3")) return this.getMinMaxPoint(sv, tok); +if (Clazz_instanceOf(pt,"JU.P4")) return this.getMinMaxQuaternion(sv, tok); +break; +}}}} else { +break; +}var sum; +var minMax; +var isMin = false; +switch (tok) { +case 1275068725: +htPivot = new java.util.Hashtable(); +sum = minMax = 0; +break; +case 32: +isMin = true; +sum = 3.4028235E38; +minMax = 2147483647; +break; +case 64: +sum = -3.4028235E38; +minMax = -2147483647; +break; +default: +sum = minMax = 0; +} +var sum2 = 0; +var n = 0; +var isInt = true; +var isPivot = (tok == 1275068725); +for (var i = ndata; --i >= 0; ) { +var o = (sv == null ? null : sv.get(i)); +var svi = (!isSV ? null : o == null ? JS.SV.vF : o); +var v = (isPivot ? 1 : data == null ? JS.SV.fValue(svi) : data[i]); +if (Float.isNaN(v)) continue; +n++; +switch (tok) { +case 160: +case 192: +sum2 += (v) * v; +case 128: +case 96: +sum += v; +break; +case 1275068725: +var key = (svi == null ? o.toString() : svi.asString()); +var ii = htPivot.get(key); +htPivot.put(key, (ii == null ? Integer.$valueOf(1) : Integer.$valueOf(ii.intValue() + 1))); +break; +case 32: +case 64: +isInt = new Boolean (isInt & (svi.tok == 2)).valueOf(); +if (isMin == (v < sum)) { +sum = v; +if (isInt) minMax = svi.intValue; +}break; +} +} +if (tok == 1275068725) { +return htPivot; +}if (n == 0) break; +switch (tok) { +case 96: +sum /= n; +break; +case 192: +if (n == 1) break; +sum = Math.sqrt((sum2 - sum * sum / n) / (n - 1)); +break; +case 32: +case 64: +if (isInt) return Integer.$valueOf(minMax); +break; +case 128: +break; +case 160: +sum = sum2; +break; +} +return Float.$valueOf(sum); +} +return JS.MathExt.nan; +}, "~O,~N,~B"); +Clazz_defineMethod(c$, "getMinMaxPoint", +function(pointOrSVArray, tok){ +var data = null; +var sv = null; +var ndata = 0; +if (Clazz_instanceOf(pointOrSVArray,Array)) { +data = pointOrSVArray; +ndata = data.length; +} else if (Clazz_instanceOf(pointOrSVArray,"JU.Lst")) { +sv = pointOrSVArray; +ndata = sv.size(); +}if (sv == null && data == null) return JS.MathExt.nan; +var result = new JU.P3(); +var fdata = Clazz_newFloatArray (ndata, 0); +for (var xyz = 0; xyz < 3; xyz++) { +for (var i = 0; i < ndata; i++) { +var pt = (data == null ? JS.SV.ptValue(sv.get(i)) : data[i]); +if (pt == null) return JS.MathExt.nan; +switch (xyz) { +case 0: +fdata[i] = pt.x; +break; +case 1: +fdata[i] = pt.y; +break; +case 2: +fdata[i] = pt.z; +break; +} +} +var f = this.getMinMax(fdata, tok, true); +if (!(Clazz_instanceOf(f, Number))) return JS.MathExt.nan; +var value = (f).floatValue(); +switch (xyz) { +case 0: +result.x = value; +break; +case 1: +result.y = value; +break; +case 2: +result.z = value; +break; +} +} +return result; +}, "~O,~N"); +Clazz_defineMethod(c$, "getMinMaxQuaternion", +function(svData, tok){ +var data; +switch (tok) { +case 32: +case 64: +case 128: +case 160: +return JS.MathExt.nan; +} +while (true) { +data = this.e.getQuaternionArray(svData, 1073742001); +if (data == null) break; +var retStddev = Clazz_newFloatArray (1, 0); +var result = JU.Quat.sphereMean(data, retStddev, 0.0001); +switch (tok) { +case 96: +return result; +case 192: +return Float.$valueOf(retStddev[0]); +} +break; +} +return JS.MathExt.nan; +}, "JU.Lst,~N"); +Clazz_defineMethod(c$, "getPatternMatcher", +function(){ +return (this.pm == null ? this.pm = J.api.Interface.getUtil("PatternMatcher", this.e.vwr, "script") : this.pm); +}); +Clazz_defineMethod(c$, "opTokenFor", +function(tok){ +switch (tok) { +case 1275069441: +case 1275069446: +return JS.T.tokenPlus; +case 1275068931: +return JS.T.tokenMinus; +case 1275068929: +return JS.T.tokenTimes; +case 1275068930: +return JS.T.tokenMul3; +case 1275068928: +return JS.T.tokenDivide; +} +return null; +}, "~N"); +Clazz_defineMethod(c$, "setContactBitSets", +function(bsA, bsB, localOnly, distance, rd, warnMultiModel){ +var withinAllModels; +var bs; +if (bsB == null) { +bsB = JU.BSUtil.setAll(this.vwr.ms.ac); +JU.BSUtil.andNot(bsB, this.vwr.slm.bsDeleted); +bsB.andNot(bsA); +withinAllModels = false; +} else { +bs = JU.BSUtil.copy(bsA); +bs.or(bsB); +var nModels = this.vwr.ms.getModelBS(bs, false).cardinality(); +withinAllModels = (nModels > 1); +if (warnMultiModel && nModels > 1 && !this.e.tQuiet) this.e.showString(J.i18n.GT.$("Note: More than one model is involved in this contact!")); +}if (!bsA.equals(bsB)) { +var setBfirst = (!localOnly || bsA.cardinality() < bsB.cardinality()); +if (setBfirst) { +bs = this.vwr.ms.getAtomsWithinRadius(distance, bsA, withinAllModels, (Float.isNaN(distance) ? rd : null), null); +bsB.and(bs); +}if (localOnly) { +bs = this.vwr.ms.getAtomsWithinRadius(distance, bsB, withinAllModels, (Float.isNaN(distance) ? rd : null), null); +bsA.and(bs); +if (!setBfirst) { +bs = this.vwr.ms.getAtomsWithinRadius(distance, bsA, withinAllModels, (Float.isNaN(distance) ? rd : null), null); +bsB.and(bs); +}bs = JU.BSUtil.copy(bsB); +bs.and(bsA); +if (bs.equals(bsA)) bsB.andNot(bsA); + else if (bs.equals(bsB)) bsA.andNot(bsB); +}}return bsB; +}, "JU.BS,JU.BS,~B,~N,J.atomdata.RadiusData,~B"); +c$.nan = Float.$valueOf(NaN); +c$.t0 = System.currentTimeMillis(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.bspt"); +Clazz_load(null, "J.bspt.PointIterator", ["JU.BS", "$.Lst", "$.P3", "J.bspt.Bspt", "JU.BSUtil", "$.Point3fi"], function(){ +var c$ = Clazz_declareType(J.bspt, "PointIterator", null); +c$.withinDistPoints = Clazz_defineMethod(c$, "withinDistPoints", +function(distance, pt, ap3, ap31, bsSelected, ret){ +var pts = new JU.Lst(); +var bspt = new J.bspt.Bspt(3, 0); +var iter; +if (pt != null && Float.isNaN(pt.x)) { +var pt3 = new Array(ap3.length); +var p; +for (var i = pt3.length; --i >= 0; ) { +var p3 = ap3[i]; +if (p3 == null) return 0; +if (bsSelected == null) { +p = new JU.Point3fi(); +p.setT(p3); +p.i = i; +pt3[i] = p; +bspt.addTuple(p); +} else { +bspt.addTuple(p3); +}} +iter = bspt.allocateCubeIterator(); +var bsp; +if (bsSelected != null) { +bsp = JU.BS.newN(ap31.length); +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) { +iter.initialize(ap31[i], distance, false); +var d2 = distance * distance; +while (iter.hasMoreElements()) { +if (iter.nextElement().distanceSquared(ap31[i]) <= d2) { +bsp.set(i); +break; +}} +} +ret[0] = bsp; +return 10; +}bsp = JU.BSUtil.newBitSet2(0, ap3.length); +for (var i = pt3.length; --i >= 0; ) { +iter.initialize(p = pt3[i], distance, false); +var d2 = distance * distance; +var n = 0; +while (iter.hasMoreElements()) { +var pt2 = iter.nextElement(); +if (bsp.get(pt2.i) && pt2.distanceSquared(p) <= d2 && (++n > 1)) bsp.clear(pt2.i); +} +} +for (var i = bsp.nextSetBit(0); i >= 0; i = bsp.nextSetBit(i + 1)) pts.addLast(JU.P3.newP(pt3[i])); + +ret[0] = pts; +return 1073742001; +}if (distance == 0) { +if (ap31 == null) { +var d2 = 3.4028235E38; +var pt3 = null; +for (var i = ap3.length; --i >= 0; ) { +var pta = ap3[i]; +distance = pta.distanceSquared(pt); +if (distance < d2) { +pt3 = pta; +d2 = distance; +}} +ret[0] = (pt3 == null ? "" : pt3); +return (pt3 == null ? 4 : 134217751); +}var ptsOut = Clazz_newIntArray (ap31.length, 0); +for (var i = ptsOut.length; --i >= 0; ) { +var d2 = 3.4028235E38; +var imin = -1; +pt = ap31[i]; +for (var j = ap3.length; --j >= 0; ) { +var pta = ap3[j]; +distance = pta.distanceSquared(pt); +if (distance < d2) { +imin = j; +d2 = distance; +}} +ptsOut[i] = imin; +} +ret[0] = ptsOut; +return 1275068418; +}for (var i = ap3.length; --i >= 0; ) bspt.addTuple(ap3[i]); + +iter = bspt.allocateCubeIterator(); +iter.initialize(pt, distance, false); +var d2 = distance * distance; +while (iter.hasMoreElements()) { +var pt2 = iter.nextElement(); +if (pt2.distanceSquared(pt) <= d2) pts.addLast(pt2); +} +iter.release(); +ret[0] = pts; +return 1073742001; +}, "~N,JU.P3,~A,~A,JU.BS,~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.PatternMatcher", ["JV.Viewer"], function(){ +var c$ = Clazz_declareType(JU, "PatternMatcher", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "compile", +function(regex, isCaseInsensitive){ +if (JV.Viewer.isJS && !JV.Viewer.isSwingJS) { +return new JU.PatternMatcher.JSPattern(regex, isCaseInsensitive); +}{ +}}, "~S,~B"); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.regexp = null; +this.strString = null; +this.leftBound = -1; +this.rightBound = -1; +this.results = null; +Clazz_instantialize(this, arguments);}, JU.PatternMatcher, "JSPattern", null); +Clazz_makeConstructor(c$, +function(regex, isCaseInsensitive){ +var flagStr = (isCaseInsensitive ? "gi" : "g"); +{ +this.regexp = new RegExp(regex, flagStr); +}}, "~S,~B"); +Clazz_defineMethod(c$, "find", +function(){ +var s = (this.rightBound == this.strString.length ? this.strString : this.strString.substring(0, this.rightBound)); +{ +this.regexp.lastIndex = this.leftBound; +this.results = this.regexp.exec(s); +this.leftBound = this.regexp.lastIndex; +}return (this.results != null); +}); +Clazz_defineMethod(c$, "start", +function(){ +{ +return this.regexp.lastIndex - this.results[0].length; +}}); +Clazz_defineMethod(c$, "end", +function(){ +{ +return this.regexp.lastIndex; +}}); +Clazz_defineMethod(c$, "group", +function(){ +if (this.results == null || this.results.length == 0) { +return null; +}return this.results[0]; +}); +Clazz_defineMethod(c$, "matcher", +function(s){ +this.strString = s; +this.leftBound = 0; +this.rightBound = s.length; +return this; +}, "~S"); +/*eoif3*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corescriptmath.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corescriptmath.z.js new file mode 100755 index 000000000000..2cd4667c324e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corescriptmath.z.js @@ -0,0 +1,147 @@ +(function(la,ma,na,oa,U,pa,V,A,W,Z,$,aa,qa,ka,ra,M,N,x,ja,sa,ta,ua,va,wa,xa,ya,za,D,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,$a,q){V("JS");W(null,"JS.MathExt","java.util.Date $.Hashtable $.Random JU.AU $.BArray $.BS $.CU $.Lst $.M3 $.M4 $.Measure $.OC $.P3 $.P4 $.PT $.Quat $.Rdr $.SB $.V3 J.api.Interface J.atomdata.RadiusData J.bspt.PointIterator J.c.VDW J.i18n.GT JM.BondSet $.Measurement JS.SV $.T JU.BSUtil $.BoxInfo $.Edge $.Escape $.JmolMolecule $.Logger $.Parser $.Point3fi $.SimpleUnitCell JV.FileManager $.JC $.Viewer".split(" "), +function(){var n=$(function(){this.pm=this.rand=this.e=this.vwr=null;Z(this,arguments)},JS,"MathExt",null);q(n,"init",function(e){this.e=e;this.vwr=this.e.vwr;return this},"~O");q(n,"evaluate",function(e,a,b,c){switch(c){case 134218760:return 1<=b.length&&4==b[0].tok?e.addXStr((1==b.length?(new java.util.Date).toString():this.vwr.apiPlatform.getDateFormat(JS.SV.sValue(b[1])))+"\t"+JS.SV.sValue(b[0]).trim()):e.addXInt(System.currentTimeMillis()-JS.MathExt.t0-(0==b.length?0:b[0].asInt()));case 134218250:return 1== +b.length&&2==b[0].tok?e.addXInt(b[0].intValue):e.addXFloat(Math.abs(b[0].asFloat()));case 134218241:case 134218245:case 134218244:case 134218246:return 1==b.length&&this.evaluateMath(e,b,c);case 1275069441:case 1275068928:case 1275068929:case 1275068930:case 1275068931:case 1275335685:case 1275334681:return this.evaluateList(e,a.intValue,b);case 268437504:0==b.length&&(e.wasX=!1);case 1275068418:return this.evaluateArray(e,b,1275068418==c&&268442113==a.tok);case 134217766:return this.evaluateMatrix(e, +b);case 134217765:return this.evaluateCallbackParam(e,b);case 134217731:case 134221850:return this.evaluateQuaternion(e,b,c);case 1275068420:return this.evaluateBin(e,b);case 134221829:return this.evaluateCache(e,b);case 1275068934:case 1275068935:return this.evaluateRowCol(e,b,c);case 1765808134:return this.evaluateColor(e,b);case 134221831:return this.evaluateCompare(e,b);case 1228931586:case 134217736:case 1275203608:return this.evaluateConnected(e,b,c,a.intValue);case 1812599299:case 1814695966:return this.evaluateUnitCell(e, +b,268442113==a.tok,268442113==a.tok?a.intValue:a.tok);case 134353926:return this.evaluateContact(e,b);case 134221834:return this.evaluateData(e,b);case 1275069444:case 1275069442:return this.evaluateDotDist(e,b,c,a.intValue);case 1275069443:if(268442113==a.tok)return this.evaluateDotDist(e,b,c,a.intValue);case 134217729:case 1745489939:return this.evaluateMeasure(e,b,a.tok);case 1228935687:case 134223363:return this.evaluateLoad(e,b,1228935687==c);case 1275068427:return this.evaluateFind(e,b);case 1275068433:return this.evaluateInChI(e, +b);case 1287653388:case 1825200146:return this.evaluateFormat(e,a.intValue,b,1825200146==c);case 134320141:return this.evaluateUserFunction(e,a.value,b,a.intValue,268442113==a.tok);case 1275068437:c=1275068725;case 1275068446:case 1275068725:case 1275082241:case 1275072526:return this.evaluateGetProperty(e,b,c,268442113==a.tok);case 136314895:return this.evaluateHelix(e,b);case 134219777:case 134217750:case 134217763:return this.evaluatePlane(e,b,c);case 134218759:case 134238732:case 134222850:case 134222350:return this.evaluateScript(e, +b,c);case 1275069446:case 1275069447:case 1275068932:return this.evaluateString(e,a.intValue,b);case 134217751:return this.evaluatePoint(e,b);case 1275068447:return this.evaluatePointGroup(e,b,268442113==a.tok);case 134256129:return this.evaluatePrompt(e,b);case 134219266:return this.evaluateRandom(e,b);case 1275068432:return this.evaluateIn(e,b);case 1275072532:return this.evaluateModulation(e,b);case 1275068443:return this.evaluateReplace(e,b);case 134218753:case 134218756:case 134218757:case 1237320707:return this.evaluateSubstructure(e, +b,c,268442113==a.tok);case 1275068444:case 1275068425:return this.evaluateSort(e,b,c);case 134217764:return this.evaluateSpacegroup(e,b);case 1296041985:return this.evaluateSymop(e,b,268442113==a.tok);case 1275068445:return this.evaluateTensor(e,b);case 134217759:return this.evaluateWithin(e,b,268442113==a.tok);case 134221856:return this.evaluateWrite(e,b)}return!1},"JS.ScriptMathProcessor,JS.T,~A,~N");q(n,"evaluateMatrix",function(e,a){var b=a.length,c=null,d=0g)return!1;case 4:if(h=a[2].intValue,0>h)return!1;case 3:if(f=a[1].intValue,0>f)return!1;case 2:if(b=a[0].intValue,0>b)return!1;default:if(-2147483648==b){if(c=this.vwr.getCurrentUnitCell(),b=JU.PT.parseInt(c.getIntTableNumber()),1>b)return!1}else c=this.vwr.getSymTemp()}return e.addXObj(c.getSubgroupJSON(this.vwr, +b,f,h,g))}switch(c){default:return!1;case 2:if(4==a[1].tok)h=a[1].value;else{b=JS.SV.flistValue(a[1],0);if(null==b||6!=b.length)return!1;b=JU.SimpleUnitCell.newParams(b,NaN)}case 1:c=2==a[0].tok?a[0].intValue:1==c?-2147483648:0;if("settings".equalsIgnoreCase(h))return 0==c?!1:e.addXObj((-2147483648==c?this.vwr.getCurrentUnitCell():this.vwr.getSymTemp()).getSpaceGroupJSON(this.vwr,h.toLowerCase(),null,c));if(0a||a>=this.vwr.ms.ac||j&&1!=g.cardinality())return!1;if(j){d=this.vwr.ms.generateCrystalClass(a,JU.P3.new3(NaN,NaN,NaN));c=Array(d.size());for(a=c.length;0<=--a;)c[a]=d.get(a);d=new JU.P3}}c=this.vwr.getSymTemp().setPointGroup(this.vwr,null,d,null==c?this.vwr.ms.at:c,g,!1,0>f?this.vwr.getFloat(570425382):f,0>h?this.vwr.getFloat(570425384):h,null==g?c.length:g.cardinality(),!0);return e.addXMap(c.getPointGroupInfo(-1,null,!0,null,0,1))},"JS.ScriptMathProcessor,~A,~B");q(n, +"evaluateUnitCell",function(e,a,b,c){var d=b?JS.SV.getBitSet(e.getX(),!0):1812599299==c?this.vwr.getAllAtoms():null,f=(null==d?this.vwr.getAllAtoms():d).nextSetBit(0),h=a.length-1;b=1;switch(0>h?0:a[h].tok){case 2:case 3:b=a[h].asFloat(),h--}var g=!1,j=0>h?0:a[0].tok,k=null,l=null,u=null;switch(j){case 7:l=a[0].getList();break;case 12:switch(1h?0:a[1].tok){default:case 1073741936:return!1;case 0:case 1073742334:break;case 1073742335:g=!0}return e.addXStr(this.vwr.getSymStatic().staticGetTransformABC(a[0].value, +g));case 4:if(u=a[0].asString(),1814695966==c)if(0==u.indexOf("a=")){k=Array(4);for(g=0;4>g;g++)k[g]=new JU.P3;JU.SimpleUnitCell.setAbc(u,null,k)}else if(0<=u.indexOf(",")||u.equals("r"))return b=2==a.length&&JS.SV.bValue(a[1])?this.vwr.getSymTemp().convertTransform(u,null):this.vwr.getV0abc(-1,u),e.addXObj(b)}if(1812599299==c)return b=this.vwr.ms.getBoxInfo(d,1),e.addXObj(b.getInfo(u));c=null;g=null!=l;if(null==k&&g&&4>l.size())return!1;u=g?1:0;null==k&&(!g&&8!=j)&&(c=0>f?this.vwr.getCurrentUnitCell(): +this.vwr.ms.getUnitCell(this.vwr.ms.at[f].mi),k=null==c?D(-1,[JU.P3.new3(0,0,0),JU.P3.new3(1,0,0),JU.P3.new3(0,1,0),JU.P3.new3(0,0,1)]):c.getUnitCellVectors());if(null==k)if(k=Array(4),g)switch(l.size()){case 3:k[0]=new JU.P3;for(g=0;3>g;g++)k[g+1]=JU.P3.newP(JS.SV.ptValue(l.get(g)));break;case 4:for(g=0;4>g;g++)k[g]=JU.P3.newP(JS.SV.ptValue(l.get(g)));break;case 6:j=x(6,0);for(g=0;6>g;g++)j[g]=l.get(g).asFloat();JU.SimpleUnitCell.setAbc(null,j,k);break;default:return!1}else switch(k[0]=JU.P3.newP(JS.SV.ptValue(a[0])), +h){case 3:for(g=1;4>g;g++)(k[g]=JU.P3.newP(JS.SV.ptValue(a[g]))).sub(k[0]);break;case 1:if(l=a[1].getList(),null!=l&&3==l.size()){for(g=0;3>g;g++)k[g+1]=JU.P3.newP(JS.SV.ptValue(l.get(g)));break}default:return!1}j=u<=h?a[u].asString():null;if((l="primitive".equalsIgnoreCase(j))||"conventional".equalsIgnoreCase(j)){a=++u>h?"":a[u].asString().toUpperCase();a.equals("BCC")?a="I":0==a.length&&(a=this.vwr.getSymmetryInfo(f,null,0,null,null,null,1073741994,null,0,-1,0,null));if(null==a||0==a.length)return!1; +null==c&&(c=this.vwr.getSymTemp());f=this.vwr.getModelForAtomIndex(f).auxiliaryInfo.get("primitiveToCrystal");if(!c.toFromPrimitive(l,a.charAt(0),k,f))return!1}else if("reciprocal".equalsIgnoreCase(j))k=JU.SimpleUnitCell.getReciprocal(k,null,b),b=1;else if("vertices".equalsIgnoreCase(j))return e.addXObj(JU.BoxInfo.getVerticesFromOABC(k));if(1!=b)for(g=1;4>g;g++)k[g].scale(b);return e.addXObj(k)},"JS.ScriptMathProcessor,~A,~B,~N");q(n,"evaluateArray",function(e,a,b){if(b){b=e.getX();switch(1==a.length? +b.tok:0){case 6:var c=new JU.Lst,d=a[0].asString(),f=b.getMap(),h=b.getKeys(!1);b=0;for(a=h.length;bb||5w||w>=h))if(d[w]++,null!=b){var p=k[l];if(null!=p){p.put("_bin",JS.SV.newI(w));var r=f+g*w,n=r+g;p.put("_binMin",JS.SV.newF(0==w?-3.4028235E38: +r));p.put("_binMax",JS.SV.newF(w==h-1?3.4028235E38:n))}}}if(j){j=new JU.Lst;for(l=0;lj&&(j=20);f.scale(1/(j-1));for(b=0;bf);b=j.getColorKey();return g?e.addXPt(JU.CU.colorPtFromInt(j.getArgb(3.4028235E38==f?d:h),null)):e.addX(JS.SV.getVariableMap(b))},"JS.ScriptMathProcessor,~A");q(n,"evaluateCompare",function(e,a){var b=a.length;if(2>b||5(h?3:2),d=10==a[0].tok?a[0].value:null,m=10==a[1].tok?a[1].value:null,w=null==d?JS.SV.sValue(a[0]):"",p=null==m?JS.SV.sValue(a[1]):"";c=NaN;try{if(k){if(4!=b)return!1;w=JS.SV.sValue(a[2]);u=w.equalsIgnoreCase("SMILES");try{u&&(w=this.vwr.getSmiles(d))}catch(r){if(M(r, +Exception))this.e.evalError(r.getMessage(),null);else throw r;}var n=this.e.getSmilesExt().getFlexFitList(d,m,w,!u);return null==n?e.addXStr(""):e.addXAF(n)}if(g){if(3!=b)return!1;if(null==d&&null==m){var s=this.vwr.getSmilesMatcher().getRelationship(w,p).toUpperCase();return e.addXStr(s)}var q=null==d?this.vwr.getSmilesMatcher().getMolecularFormula(w,!1,!1):JU.JmolMolecule.getMolecularFormulaAtoms(this.vwr.ms.at,d,null,!1),x=null==m?this.vwr.getSmilesMatcher().getMolecularFormula(p,!1,!1):JU.JmolMolecule.getMolecularFormulaAtoms(this.vwr.ms.at, +m,null,!1);if(!q.equals(x))return e.addXStr("NONE");null!=d&&(w=this.e.getSmilesExt().getSmilesMatches("/strict///",null,d,null,1,!0,!1));var B;null==m?B=0 +w.indexOf("@SP")){var E=w.toLowerCase().indexOf("invertstereo"),w=0<=E?"/strict/"+w.substring(0,E)+w.substring(E+12):"/invertstereo strict/"+w;if(B=null==m?0c?"IDENTICAL":"IDENTICAL or CONFORMATIONAL ISOMERS (RMSD="+c+")")}var I=new JU.M4,v=B=null;if(u){if(null==d||null==m)return!1;var f=JS.SV.sValue(a[2]),A=f.equalsIgnoreCase("MAP"),u=f.equalsIgnoreCase("SMILES"), +t=A||f.equalsIgnoreCase("SMARTS");if(u||t)f=b>(h?4:3)?JS.SV.sValue(a[3]):null;var z="H".equalsIgnoreCase(f)||"allH".equalsIgnoreCase(f)||"bestH".equalsIgnoreCase(f),D=!z&&("polyhedra".equalsIgnoreCase(f)||"polyhedron".equalsIgnoreCase(f));if(D)c=this.e.getSmilesExt().mapPolyhedra(d.nextSetBit(0),m.nextSetBit(0),u,I);else{B=new JU.Lst;var v=new JU.Lst,C="all".equalsIgnoreCase(f)||"allH".equalsIgnoreCase(f),F="best".equalsIgnoreCase(f)||"bestH".equalsIgnoreCase(f);"stddev".equals(f)&&(f=null);var G= +f;if(null==f||z||C||F){if(!A&&!u||z&&D)return!1;G="/noaromatic"+(C||F?"/":" nostereo/")+this.e.getSmilesExt().getSmilesMatches(z?"H":"",null,d,null,32769,!0,!1)}else C=!0;c=this.e.getSmilesExt().getSmilesCorrelation(d,m,G,B,v,I,null,A,null,null,F,(u?1:2)|(!C&&!F?8:0));if(A){var H=B.size();if(0==H)return e.addXStr("");for(var da=U(v.size()/H),s=new JU.Lst,E=G=0;GB.size()||Q!=v.size())return!1;for(var X=new JU.Lst,G=0;Ga.length||3c&&(c+=b.length),0<=c&&cb.length?"":""+b[1])},"JS.ScriptMathProcessor,~A");q(n,"evaluateDotDist",function(e,a,b,c){var d=1275069443==b,f,h,g=null;switch(a.length){case 2:if(2147483647==c){f=a[0];h=a[1];break}g=a[1];case 1:f=e.getX();h=a[0];break;case 0:if(d){f=e.getX();h=JS.SV.getVariable(new JU.P3);break}default:return!1}a=NaN;try{if(1275069442==b){var j=JU.P3.newP(e.ptValue(f,null));j.cross(j,e.ptValue(h,null));return e.addXPt(j)}var k= +7==h.tok?null:e.ptValue(h,null),l=this.e.planeValue(h);if(d){b=-2147483648==c?0:c&480;var j=32==b||64==b,u=480==b;switch(f.tok){case 7:case 10:var m=10==f.tok,w=10==h.tok,p=8==h.tok,r=m?f.value:null,n=w?h.value:null,s=m?null:f.getList(),q=w?null:h.getList(),A=j&&null!=g&&g.asBoolean();switch(h.tok){case 10:case 7:case 8:var B=this.vwr.ms.at;if(A){var C=NaN,E=2147483647;if(m){for(var v=r.nextSetBit(0);0<=v;v=r.nextSetBit(v+1)){var I=p?B[v].distanceSquared(k):this.e.getBitsetProperty(n,q,c,B[v],l,f.value, +null,!1,f.index,!1).floatValue();if(!(32==b?I>=C:I<=C))C=I,E=v}return e.addXBs(2147483647==E?new JU.BS:JU.BSUtil.newAndSetBit(E))}for(v=s.size();0<=--v;){var D=JS.SV.ptValue(s.get(v)),I=p?D.distanceSquared(k):this.e.getBitsetProperty(n,q,c,D,l,f.value,null,!1,2147483647,!1).floatValue();if(!(32==b?I>=C:I<=C))C=I,E=v}return e.addXInt(E)}if(u){if(null==n){for(var t=x(r.cardinality(),0),C=0,v=r.nextSetBit(0);0<=v;v=r.nextSetBit(v+1),C++)t[C]=B[v].distance(k);return e.addXAF(t)}E=x(r.cardinality(),n.cardinality(), +0);C=0;for(v=r.nextSetBit(0);0<=v;v=r.nextSetBit(v+1),C++){c=0;for(var z=n.nextSetBit(0);0<=z;z=n.nextSetBit(z+1),c++)E[C][c]=B[v].distance(B[z])}return e.addXAFF(E)}if(j){t=x(m?r.cardinality():s.size(),0);if(m){v=r.nextSetBit(0);for(C=0;0<=v;v=r.nextSetBit(v+1))t[C++]=this.e.getBitsetProperty(n,q,c,B[v],l,f.value,null,!1,f.index,!1).floatValue();return e.addXAF(t)}for(v=t.length;0<=--v;)t[v]=this.e.getBitsetProperty(n,q,c,JS.SV.ptValue(s.get(v)),l,null,null,!1,2147483647,!1).floatValue();return e.addXAF(t)}return e.addXObj(this.e.getBitsetProperty(r, +s,c,k,l,f.value,null,!1,f.index,!1))}}}var N=e.ptValue(f,null),F=this.e.planeValue(f);d?a=null!=l&&null!=g?JU.Measure.directedDistanceToPlane(N,l,JS.SV.ptValue(g)):null==F?null==l?k.distance(N):JU.Measure.distanceToPlane(l,N):JU.Measure.distanceToPlane(F,k):null!=F&&null!=l?a=F.x*l.x+F.y*l.y+F.z*l.z+F.w*l.w:(null!=F?N=JU.P3.new3(F.x,F.y,F.z):null!=l&&(k=JU.P3.new3(l.x,l.y,l.z)),a=N.dot(k))}catch(G){if(!M(G,Exception))throw G;}return e.addXFloat(a)},"JS.ScriptMathProcessor,~A,~N,~N");q(n,"evaluateHelix", +function(e,a){if(1>a.length||5=a.length?"array":JS.SV.sValue(a[b]),b=JS.T.getTokFromName(c);if(2b?"null":this.vwr.ms.at[b].group.getHelixData(a,this.vwr.getQuaternionFrame(),this.vwr.getInt(553648142))},"JU.BS,~N");q(n,"evaluateInChI",function(e,a){var b=e.getX(), +c=0=m.length&&0==m.$replace("m"," ").$replace("i"," ").$replace("v"," ").trim().length&&(p=!0)}var q=!p&&g.equalsIgnoreCase("SMILES"),s=!p&&g.equalsIgnoreCase("SMARTS"),A=!c&&!p&&g.equalsIgnoreCase("CHEMICAL"),x=!c&&!p&&g.equalsIgnoreCase("MF"),B=!c&&!p&&g.equalsIgnoreCase("CELLFORMULA"), +C=d&&!c&&g.equalsIgnoreCase("INCHI"),E=d&&!c&&g.equalsIgnoreCase("INCHIKEY"),v=!q&&!s&&10==h&&0<=m.toLowerCase().indexOf("map"),p=!q&&!s&&(10==b.tok||8==b.tok||7==b.tok)&&g.toLowerCase().startsWith("equivalent");try{if(p)switch(b.tok){case 10:return e.addXBs(this.vwr.ms.getSymmetryEquivAtoms(b.value,null,null));case 8:return e.addXList(this.vwr.getSymmetryEquivPoints(b.value,g+m));case 7:for(var I=new JU.Lst,U=b.getList(),t=0,z=U.size();tr.toLowerCase().indexOf("noaromatic")&&0>r.toLowerCase().indexOf("strict"))&&(d=this.e.getSmilesExt().getSmilesMatches(H,r,null,null,16|(s?2:1),!t,!y));if(z)return e.addXInt(!y&&0m.indexOf("[select ")&&(k=m);var n=!1;k.equals("json")&&d>j&&(n=!0,k=JS.SV.sValue(a[j++])); +var p=null;if(c){p=e.getX();switch(p.tok){case 10:break;case 4:var r=p.value,d=Array(3);r.startsWith("$")?(r=r.substring(1),a=this.vwr.shm.getShapeIdFromObjectName(r),0<=a&&(d[0]=r,this.vwr.shm.getShapePropertyData(a,"index",d),null!=d[1]&&!u.equals("index")&&(r=d[1].intValue(),d[1]=this.vwr.shm.getShapePropertyIndex(a,u.intern(),r)))):(a=JV.JC.shapeTokenIndex(JS.T.getTokFromName(r)),0<=a&&(d[0]=u,d[1]=Integer.$valueOf(-1),this.vwr.shm.getShapePropertyData(a,u.intern(),d)));return null==d[1]?e.addXStr(""): +e.addXObj(d[1]);case 7:if(h){g=p.getList();if(0==d)return e.addXObj(this.getMinMax(g,1275068725,!0));c=new java.util.Hashtable;k=1j)switch(a[j].tok){case 10:r=a[j++].value;k.equalsIgnoreCase("bondInfo")&&(d>j&&10==a[j].tok)&&(r=D(-1,[r,a[j].value]));break;case 6:case 4:this.vwr.checkPropertyParameter(k)&&(r=a[j++].value)}if(c&&(r=p.value,0>r.nextSetBit(0)))return e.addXStr("");g&&!c&&(k= +"auxiliaryInfo.models."+k);k=JU.PT.rep(k,".[","[");r=this.vwr.getProperty(null,k,r);jb.length||1287653388==a?e.getX():null,f=0==b.length?"%U":7==b[0].tok?null:JS.SV.sValue(b[0]);if(!c&&0b.length||7!=b[1].tok)return b=JS.SV.format(b,a),f.equalsIgnoreCase("json")?e.addXStr(b):e.addXObj(b);f=b[1].getList();b=D(-1,[b[0],null]);c=Array(f.size());for(d=c.length;0<=--d;)b[1]=f.get(d),c[d]=JS.SV.format(b,a).toString();return e.addXAS(c)}if(7==d.tok&&null==f)return d=d.getList(),h=b[0].getList(),f= +this.getSublist(d,h),e.addXList(f);b=10==d.tok?d.value:null;a=JS.T.tokAttr(a,480);return e.addXObj(null==f?"":null==b?JS.SV.sprintf(JU.PT.formatCheck(f),d):this.e.getCmdExt().getBitsetIdent(b,f,d.value,!0,d.index,a))},"JS.ScriptMathProcessor,~N,~A,~B");q(n,"getSublist",function(e,a){for(var b=new JU.Lst,c,d,f,h=0,g=e.size();h=g.length?"":g[d])+l+(d>=j.length?"":j[d]);return e.addXAS(k)}if(1073742335!=h.tok)return!1;k=d.getList();(c=0==l.length)&&(l=",");if(1275069446==a){j=Array(k.size()); +for(d=k.size();0<=--d;)if(b=k.get(d).getList(),null==b)j[d]=k.get(d);else{a=new JU.SB;f=0;for(g=b.size();fb.indexOf("."))try{m.addLast(JS.SV.newI(Integer.parseInt(b)));continue}catch(n){if(!M(n,Exception))throw n;}else try{m.addLast(JS.SV.getVariable(Float.$valueOf(Float.parseFloat(b))));continue}catch(p){if(!M(p,Exception))throw p;}m.addLast(JS.SV.newS(b))}a.addLast(JS.SV.getVariableList(m))}return e.addXObj(JS.SV.getVariableList(a))}h= +0==c?JS.SV.newV(1073742327,"all"):b[0];k=1073742327==h.tok;if(!f&&4!=d.tok)return e.binaryOp(this.opTokenFor(a),d,h);var u=JS.SV.isScalar(d),r=JS.SV.isScalar(h),q=m=null,l=d.getList(),s=h.getList();f?c=l.size():u?c=2147483647:(g=JU.PT.split(JS.SV.sValue(d),"\n"),m=x(c=g.length,0),JU.PT.parseFloatArrayData(g,m));if(k&&1275069446!=a){k=0;if(f)for(d=c;0<=--d;)k+=JS.SV.fValue(l.get(d));else if(!u)for(d=c;0<=--d;)k+=m[d];return e.addXFloat(k)}if(1275069446==a&&4==h.tok){a=new JU.SB;if(u)a.append(JS.SV.sValue(d)); +else{b=k?"":h.value.toString();for(d=0;da.length||3c||4c&&(d=JU.P3.new3(c,c,c));c=e.getX();c=10==c.tok?c.value:new JU.BS;return e.addXList(this.vwr.ms.getModulationList(c,(b+"D").toUpperCase().charAt(0), +d))},"JS.ScriptMathProcessor,~A");q(n,"evaluatePlane",function(e,a,b){if(134219777==b&&3!=a.length&&4!=a.length||134217763==b&&2!=a.length&&3!=a.length&&4!=a.length||0==a.length||4=f&&(f=2147483646),d--));switch(d){case 0:case 1:case 4:break;case 2:if(134221850==b){if(7==a[0].tok&&(7==a[1].tok||1073742335==a[1].tok))break;if(10==a[0].tok&&(2==a[1].tok||10==a[1].tok))break}if(null==(c=e.ptValue(a[0],null))|| +134221850!=b&&8==a[1].tok)return!1;break;case 3:if(134221850!=b)return!1;if(9==a[0].tok){if(8!=a[2].tok&&10!=a[2].tok)return!1;break}for(var g=0;3>g;g++)if(8!=a[g].tok&&10!=a[g].tok)return!1;break;default:return!1}var j=g=null,k=null;switch(d){case 0:return e.addXPt4(this.vwr.tm.getRotationQ().toPoint4f());default:if(134221850==b&&7==a[0].tok){b=this.e.getQuaternionArray(a[0].getList(),1073742001);a=JU.Quat.sphereMean(b,null,1E-4);g=A(a,"JU.Quat")?a:null;break}else if(134221850==b&&10==a[0].tok)j= +this.vwr.getAtomGroupQuaternions(a[0].value,f);else if(11==a[0].tok)g=JU.Quat.newM(a[0].value);else if(9==a[0].tok)k=a[0].value;else if(k=JS.SV.sValue(a[0]),k=JU.Escape.uP(k.equalsIgnoreCase("best")?this.vwr.getOrientation(1073741864,"best",null,null).toString():k),!A(k,"JU.P4"))return!1;134217731==b&&(g=JU.Quat.newVA(JU.P3.new3(k.x,k.y,k.z),k.w));break;case 2:if(134221850==b){if(7==a[0].tok&&7==a[1].tok){b=this.e.getQuaternionArray(a[0].getList(),1073742001);j=this.e.getQuaternionArray(a[1].getList(), +1073742001);j=JU.Quat.arrayDiv(j,b,f,h);break}if(7==a[0].tok&&1073742335==a[1].tok)return b=this.e.getQuaternionArray(a[0].getList(),1073742001),f=x(1,0),JU.Quat.sphereMean(b,f,1E-4),e.addXFloat(f[0]);if(10==a[0].tok&&10==a[1].tok){b=this.vwr.getAtomGroupQuaternions(a[0].value,2147483647);j=this.vwr.getAtomGroupQuaternions(a[1].value,2147483647);j=JU.Quat.arrayDiv(j,b,f,h);break}}g=e.ptValue(a[1],null);k=this.e.planeValue(a[0]);g=null!=g?JU.Quat.getQuaternionFrame(JU.P3.new3(0,0,0),c,g):JU.Quat.newVA(c, +JS.SV.fValue(a[1]));break;case 3:if(9==a[0].tok)return f=8==a[2].tok?a[2].value:this.vwr.ms.getAtomSetCenter(a[2].value),e.addXStr(JU.Escape.drawQuat(JU.Quat.newP4(a[0].value),"q",JS.SV.sValue(a[1]),f,1));b=Array(3);for(g=0;3>g;g++)b[g]=8==a[g].tok?a[g].value:this.vwr.ms.getAtomSetCenter(a[g].value);g=JU.Quat.getQuaternionFrame(b[0],b[1],b[2]);break;case 4:134221850==b?k=JU.P4.new4(JS.SV.fValue(a[1]),JS.SV.fValue(a[2]),JS.SV.fValue(a[3]),JS.SV.fValue(a[0])):g=JU.Quat.newVA(JU.P3.new3(JS.SV.fValue(a[0]), +JS.SV.fValue(a[1]),JS.SV.fValue(a[2])),JS.SV.fValue(a[3]))}if(null!=j){if(2147483647!=f){f=new JU.Lst;for(g=0;ga||2a||2b)break;c++}return e.addXInt(c)}var c=new JU.Lst,f=d=null,h=JS.SV.getVariable(b.value).sortOrReverse(0).getList();if(null==h)return null==a?e.addXStr(""):e.addXInt(0);b=0;for(var g=h.size();b<=g;b++){var j=b==g?null:h.get(b);if(!(null!=a&&null!=j&&!JS.SV.areEqual(j, +a)))if(JS.SV.areEqual(j,d))f.intValue++;else{if(null!=d){var k=new JU.Lst;k.addLast(d);k.addLast(f);c.addLast(JS.SV.getVariableList(k))}f=JS.SV.newI(1);d=j}}return null==a?e.addX(JS.SV.getVariableList(c)):c.isEmpty()?e.addXInt(0):e.addX(c.get(0).getList().get(1))},"JS.ScriptMathProcessor,~A,~N");q(n,"evaluateString",function(e,a,b){var c=e.getX(),d=0a.length)return!1;var f=134218756==b&&!c&&10==a[0].tok,h=134218753==a[0].tok?a[0].value:null!=d&&134218753==a[1].tok?a[1].value:null;if(null!=d&&null==h)return!1;var g=f?null:JS.SV.sValue(a[0]),j=new JU.BS;if(f||0m&&7==a[m].tok){q=a[m++].getList();if(3!=q.size())return!1;h=JU.P3.new3(JS.SV.fValue(q.get(0)),JS.SV.fValue(q.get(1)),JS.SV.fValue(q.get(2)))}else c>m&&2==a[m].tok&&JU.SimpleUnitCell.ijkToPoint3f(JS.SV.iValue(a[m++]),h=new JU.P3,0,0);null==f&&null!=(f=c>m?e.ptValue(a[m],d):null)&&m++;null!=(q=c>m?e.ptValue(a[m],d):null)&&m++;null!=f&&(null==q&&null!=p&&!p.isEmpty())&&(q=f,f=JU.P3.newP(this.vwr.ms.at[p.nextSetBit(0)]));p=null!=q&&a.length>m&&-2147483648==k&&2==a[m].tok?a[m].intValue:-1;0<=p&& +m++;-2147483648==k&&36868!=n&&(k=0);var x=null;0==n&&(null!=l&&0>l.indexOf(","))&&(m==c?x=this.vwr.ms.getPointGroupInfo(null):6==a[m].tok&&(x=a[m].getMap()));if(null!=x){d=l.indexOf(".");n=l.indexOf("^");0d+1?(k=JU.PT.parseInt(l.substring(d+1,n)),1>k&&(k=1),n=d):k=1;l=l.substring(0,n);d=x.get(l+"_m");if(null==d)return d=x.get(l),null==d?e.addXStr(""):e.addXObj(d);var s;try{if(A(d,"JS.SV"))if(s=x.get("center").value,11==d.tok)g=d.value; +else if(7==d.tok)g=d.getList().get(k-1).value;else return!1;else s=x.get("center"),g=A(d,"JU.M3")?d:d.get(k-1);k=g;g=JU.M3.newM3(g);if(1c&&(c=this.vwr.getThisModelAtoms().nextSetBit(0));if(36868==n&&-2147483648==k){l=null;j=this.vwr.getCurrentUnitCell();null!=f?l=null==j?N(0,0):j.getInvariantSymops(f,null):null!=d&&!d.isEmpty()&&(j=d.nextSetBit(0),f=this.vwr.ms.at[j],l=this.vwr.ms.getSymmetryInvariant(j));if(null!=l&&0a.length?null:JS.SV.sValue(a[1]).toLowerCase();return b?e.addXObj(a[0].value.getInfo(h)): +e.addXList(f.getTensorInfo(d,h,c))},"JS.ScriptMathProcessor,~A");q(n,"evaluateUserFunction",function(e,a,b,c,d){var f=null;if(d)switch(f=e.getX(),f.tok){case 10:break;case 6:if(0c||5c||3==c&&7==a[1].tok&&7!=a[2].tok)return!1;f=k?100:JS.SV.fValue(a[0]);switch(p=a[1].tok){case 1073742335:case 1073742334:l= +a[1].asBoolean();if(2a;a++)if(null==(f[a]=JS.SV.ptValue(d.get(a))))return!1;f=this.vwr.getSymTemp().getUnitCell(f,!1,null);return e.addXBs(this.vwr.ms.getAtoms(p,f))}break;case 3:switch(p){case 1073742335:case 1073742334:case 1086324742:case 1648363544:case 1814695966:case 134217750:case 134219777:case 1073742329:case 8:case 7:break;case 1086324744:g=JS.SV.sValue(a[2]);break;default:return!1}}var r=null,h=c=null,x=a.length-1;switch(a[x].tok){case 9:r= +a[x].value;break;case 8:c=a[x].value;JS.SV.sValue(a[1]).equalsIgnoreCase("hkl")&&(r=this.e.getHklPlane(c,NaN,null));break;case 7:h=2==x&&7==a[1].tok?a[1].getList():null,c=2==x?JS.SV.ptValue(a[1]):1==x?JU.P3.new3(NaN,0,0):null}if(null!=r)return e.addXBs(j.getAtomsNearPlane(f,r));j=10==a[x].tok?a[x].value:null;null==d&&(d=j);if(0f&&(f=0));d=this.vwr.ms.getAtomsWithinRadius(f,b?j:d,l,q,b?d:null);b&&d.andNot(j);return e.addXBs(d)}, +"JS.ScriptMathProcessor,~A,~B");q(n,"evaluateWrite",function(e,a){var b=a.length,c=!1;2==b&&1073742335==a[1].tok&&(b=1,c=!0);switch(b){case 0:return!1;case 1:var d=a[0].asString().toUpperCase();if(d.equals("PNGJ"))return b=this.vwr.fm.getFileAsMap(null,"PNGJ",c),c?e.addX(JS.SV.newV(15,new JU.BArray(b))):e.addXMap(b);if(JU.PT.isOneOf(d,";ZIP;ZIPALL;JMOL;")){var b=new java.util.Hashtable,f=new JU.OC;b.put("outputChannel",f);this.vwr.createZip(null,d,b);d=f.toByteArray();if(c)return e.addX(JS.SV.newV(15, +new JU.BArray(d)));b=new java.util.Hashtable;this.vwr.readFileAsMap(JU.Rdr.getBIS(d),b,null);return e.addXMap(b)}}return e.addXStr(this.e.getCmdExt().dispatch(134221856,!0,a))},"JS.ScriptMathProcessor,~A");q(n,"getAtomsNearSurface",function(e,a){var b=D(-1,[a,null,null]);if(this.e.getShapePropertyData(24,"getVertices",b))return this.getAtomsNearPts(e,b[1],b[2]);b[1]=Integer.$valueOf(0);b[2]=Integer.$valueOf(-1);if(this.e.getShapePropertyData(22,"getCenter",b))return this.vwr.getAtomsNearPt(e,b[2], +null);b[1]=Float.$valueOf(e);return this.e.getShapePropertyData(21,"getAtomsWithin",b)?b[2]:new JU.BS},"~N,~S");q(n,"getAtomsNearPts",function(e,a,b){var c=new JU.BS;if(0==a.length||null!=b&&b.isEmpty())return c;null==b&&(b=JU.BSUtil.setAll(a.length));for(var d=this.vwr.ms.at,f=this.vwr.ms.ac;0<=--f;){var h=d[f];if(null!=h)for(var g=b.nextSetBit(0);0<=g;g=b.nextSetBit(g+1))if(h.distance(a[g])g;g++){for(var j=0;j= 0); +if (!isWild && smiles1.equals(smiles2)) return 1; +var flags = (isWild ? 2 : 1) | 8; +var result = this.matchPriv(smiles1, null, 0, null, null, false, flags, 2, JS.SmilesParser.newSearch(smiles2, false, true)); +return (result == null ? -1 : result.length); +}, "~S,~S"); +Clazz_defineMethod(c$, "areEqualTest", +function(smiles, search){ +search.set(); +var ret = this.matchPriv(smiles, null, 0, null, null, false, 9, 2, search); +return (ret != null && ret.length == 1); +}, "~S,JS.SmilesSearch"); +Clazz_overrideMethod(c$, "find", +function(pattern, target, flags){ +this.clearExceptions(); +target = JS.SmilesParser.cleanPattern(target); +pattern = JS.SmilesParser.cleanPattern(pattern); +var search = JS.SmilesParser.newSearch(target, false, true); +var array = this.matchPriv(pattern, null, 0, null, null, false, flags, 3, search); +for (var i = array.length; --i >= 0; ) { +var a = array[i]; +for (var j = a.length; --j >= 0; ) a[j] = (search.target.nodes[a[j]]).mapIndex; + +} +return array; +}, "~S,~S,~N"); +Clazz_overrideMethod(c$, "getAtoms", +function(target){ +this.clearExceptions(); +target = JS.SmilesParser.cleanPattern(target); +var search = JS.SmilesParser.newSearch(target, false, true); +search.createTopoMap( new JU.BS()); +return search.target.nodes; +}, "~S"); +Clazz_overrideMethod(c$, "getRelationship", +function(smiles1, smiles2){ +if (smiles1 == null || smiles2 == null || smiles1.length == 0 || smiles2.length == 0) return ""; +var mf1 = this.getMolecularFormula(smiles1, false, false); +var mf2 = this.getMolecularFormula(smiles2, false, false); +if (!mf1.equals(mf2)) return "none"; +var check; +var n1 = JU.PT.countChar(JU.PT.rep(smiles1, "@@", "@"), '@'); +var n2 = JU.PT.countChar(JU.PT.rep(smiles2, "@@", "@"), '@'); +check = (n1 == n2 && this.areEqual(smiles2, smiles1) > 0); +if (!check) { +var s = smiles1 + smiles2; +if (s.indexOf("/") >= 0 || s.indexOf("\\") >= 0 || s.indexOf("@") >= 0) { +if (n1 == n2 && n1 > 0 && s.indexOf("@SP") < 0) { +check = (this.areEqual("/invertstereo/" + smiles2, smiles1) > 0); +if (check) return "enantiomers"; +}check = (this.areEqual("/nostereo/" + smiles2, smiles1) > 0); +if (check) return (n1 == n2 ? "diastereomers" : "ambiguous stereochemistry!"); +}return "constitutional isomers"; +}return "identical"; +}, "~S,~S"); +Clazz_overrideMethod(c$, "reverseChirality", +function(smiles){ +smiles = JU.PT.rep(smiles, "@@", "!@"); +smiles = JU.PT.rep(smiles, "@", "@@"); +smiles = JU.PT.rep(smiles, "!@@", "@"); +return smiles; +}, "~S"); +Clazz_overrideMethod(c$, "getSubstructureSet", +function(pattern, target, ac, bsSelected, flags){ +var atoms = (Clazz_instanceOf(target,"JS.SmilesSearch") ? null : target); +return this.matchPriv(pattern, atoms, ac, bsSelected, null, true, flags | JS.SmilesParser.getFlags(pattern.toString()), 1, (atoms == null ? target : null)); +}, "~O,~O,~N,JU.BS,~N"); +Clazz_overrideMethod(c$, "getMMFF94AtomTypes", +function(smarts, atoms, ac, bsSelected, ret, vRings){ +this.clearExceptions(); +var sp = new JS.SmilesParser(true, true); +var search = null; +var flags = (770); +search = sp.parse(""); +search.exitFirstMatch = false; +search.target.setAtoms(atoms, Math.abs(ac), bsSelected); +search.flags = flags; +search.getRingData(vRings, true, true); +search.asVector = false; +search.subSearches = new Array(1); +search.getSelections(); +var bsDone = new JU.BS(); +for (var i = 0; i < smarts.length; i++) { +if (smarts[i] == null || smarts[i].length == 0 || smarts[i].startsWith("#")) { +ret.addLast(null); +continue; +}search.clear(); +search.subSearches[0] = sp.getSubsearch(search, JS.SmilesParser.cleanPattern(smarts[i]), flags); +var bs = JU.BSUtil.copy(search.search()); +ret.addLast(bs); +bsDone.or(bs); +if (bsDone.cardinality() == ac) return; +} +}, "~A,~A,~N,JU.BS,JU.Lst,~A"); +Clazz_overrideMethod(c$, "getSubstructureSetArray", +function(pattern, atoms, ac, bsSelected, bsAromatic, flags){ +return this.matchPriv(pattern, atoms, ac, bsSelected, bsAromatic, true, flags, 2, null); +}, "~S,~A,~N,JU.BS,JU.BS,~N"); +Clazz_defineMethod(c$, "getAtropisomerKeys", +function(pattern, atoms, ac, bsSelected, bsAromatic, flags){ +return this.matchPriv(pattern, atoms, ac, bsSelected, bsAromatic, false, flags, 4, null); +}, "~S,~A,~N,JU.BS,JU.BS,~N"); +Clazz_overrideMethod(c$, "polyhedronToSmiles", +function(center, faces, atomCount, points, flags, details){ +var atoms = new Array(atomCount); +for (var i = 0; i < atomCount; i++) { +atoms[i] = new JS.SmilesAtom(); +var pt = (points == null ? null : points[i]); +if (Clazz_instanceOf(pt,"JU.Node")) { +atoms[i].elementNumber = (pt).getElementNumber(); +atoms[i].bioAtomName = (pt).getAtomName(); +atoms[i].atomNumber = (pt).getAtomNumber(); +atoms[i].setT(pt); +} else { +atoms[i].elementNumber = (Clazz_instanceOf(pt,"JU.Point3fi") ? (pt).sD : -2); +if (pt != null) atoms[i].setT(pt); +}atoms[i].index = i; +} +var nBonds = 0; +for (var i = faces.length; --i >= 0; ) { +var face = faces[i]; +var n = face.length; +var iatom; +var iatom2; +for (var j = n; --j >= 0; ) { +if ((iatom = face[j]) >= atomCount || (iatom2 = face[(j + 1) % n]) >= atomCount) continue; +if (atoms[iatom].getBondTo(atoms[iatom2]) == null) { +var b = new JS.SmilesBond(atoms[iatom], atoms[iatom2], 1, false); +b.index = nBonds++; +}} +} +for (var i = 0; i < atomCount; i++) { +var n = atoms[i].bondCount; +if (n == 0 || n != atoms[i].bonds.length) atoms[i].bonds = JU.AU.arrayCopyObject(atoms[i].bonds, n); +} +var s = null; +var g = new JS.SmilesGenerator(); +if (points != null) g.polySmilesCenter = center; +this.clearExceptions(); +s = g.getSmiles(this, atoms, atomCount, JU.BSUtil.newBitSet2(0, atomCount), null, flags | 4096 | 16 | 32); +if ((flags & 65536) == 65536) { +s = ((flags & 131072) == 0 ? "" : "//* " + center + " *//\t") + "[" + JU.Elements.elementSymbolFromNumber(center.getElementNumber()) + "@PH" + atomCount + (details == null ? "" : "/" + details + "/") + "]." + s; +}return s; +}, "JU.Node,~A,~N,~A,~N,~S"); +Clazz_overrideMethod(c$, "getCorrelationMaps", +function(pattern, atoms, atomCount, bsSelected, flags){ +return this.matchPriv(pattern, atoms, atomCount, bsSelected, null, true, flags, 3, null); +}, "~S,~A,~N,JU.BS,~N"); +Clazz_defineMethod(c$, "matchPriv", +function(pattern, atoms, ac, bsSelected, bsAromatic, doTestAromatic, flags, mode, searchTarget){ +this.clearExceptions(); +try { +var isCompiled = (Clazz_instanceOf(pattern,"JS.SmilesSearch")); +if (isCompiled) flags |= 2; +var isSmarts = ((flags & 2) == 2); +var search = (isCompiled ? pattern : JS.SmilesParser.newSearch(pattern == null ? null : pattern.toString(), isSmarts, false)); +if (searchTarget != null) searchTarget.setFlags(searchTarget.flags | JS.SmilesParser.getFlags(pattern.toString())); +return this.matchPattern(search, atoms, ac, bsSelected, bsAromatic, doTestAromatic, flags, mode, searchTarget); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (JU.Logger.debugging) e.printStackTrace(); +if (JS.InvalidSmilesException.getLastError() == null) this.clearExceptions(); +throw new JS.InvalidSmilesException(JS.InvalidSmilesException.getLastError()); +} else { +throw e; +} +} +}, "~O,~A,~N,JU.BS,JU.BS,~B,~N,~N,JS.SmilesSearch"); +Clazz_defineMethod(c$, "matchPattern", +function(search, atoms, ac, bsSelected, bsAromatic, doTestAromatic, flags, mode, searchTarget){ +var isSmarts = ((flags & 2) == 2); +this.okMF = true; +if (searchTarget != null) { +if (searchTarget.targetSet) { +search.setTarget(searchTarget); +} else { +search.haveSmilesTarget = true; +bsAromatic = new JU.BS(); +searchTarget.createTopoMap(bsAromatic); +atoms = searchTarget.target.nodes; +ac = searchTarget.target.nodes.length; +if (isSmarts) { +var a1 = searchTarget.elementCounts; +var a2 = search.elementCounts; +var n = search.elementNumberMax; +if (n <= searchTarget.elementNumberMax) { +for (var i = 1; i <= n; i++) { +if (a1[i] < a2[i]) { +this.okMF = false; +break; +}} +} else { +this.okMF = false; +}} else { +var mf = search.getMFArray(true, null, false); +var mft = searchTarget.getMFArray(true, null, false); +var n = searchTarget.elementNumberMax; +if (n == search.elementNumberMax) { +for (var i = 2; i <= n; i++) { +if (mf[i] != mft[i]) { +this.okMF = false; +break; +}} +} else { +this.okMF = false; +}}}}if (this.okMF) { +if (!isSmarts && !search.patternAromatic) { +if (bsAromatic == null) bsAromatic = new JU.BS(); +search.normalizeAromaticity(bsAromatic); +search.isNormalized = true; +}if (!search.targetSet) search.target.setAtoms(atoms, ac, bsSelected); +if (search.targetSet || ac != 0 && (bsSelected == null || !bsSelected.isEmpty())) { +var is3D = search.targetSet || !(Clazz_instanceOf(atoms[0],"JS.SmilesAtom")); +search.getSelections(); +if (!doTestAromatic) search.target.bsAromatic = bsAromatic; +if (!search.target.hasRingData(flags)) search.setRingData(null, null, is3D || doTestAromatic || search.patternAromatic); +search.exitFirstMatch = ((flags & 8) == 8); +search.mapUnique = ((flags & 128) == 128); +}}switch (mode) { +case 1: +search.asVector = false; +return (this.okMF ? search.search() : new JU.BS()); +case 2: +if (!this.okMF) return new Array(0); +search.asVector = true; +var vb = search.search(); +return vb.toArray( new Array(vb.size())); +case 4: +if (!this.okMF) return ""; +search.exitFirstMatch = true; +search.setAtropicity = true; +search.search(); +return search.atropKeys; +case 3: +if (!this.okMF) return Clazz_newIntArray (0, 0, 0); +search.getMaps = true; +search.setFlags(flags | search.flags); +var vl = search.search(); +return vl.toArray(JU.AU.newInt2(vl.size())); +case 5: +if (!this.okMF) return Boolean.FALSE; +search.retBoolean = true; +search.setFlags(flags | search.flags); +return search.search(); +} +return null; +}, "JS.SmilesSearch,~A,~N,JU.BS,JU.BS,~B,~N,~N,JS.SmilesSearch"); +Clazz_overrideMethod(c$, "cleanSmiles", +function(smiles){ +return JS.SmilesParser.cleanPattern(smiles); +}, "~S"); +Clazz_overrideMethod(c$, "getMapForJME", +function(jme, at, bsAtoms){ +try { +var molecule = JS.SmilesMatcher.jmeToMolecule(jme); +var bs = JU.BSUtil.newBitSet2(0, molecule.ac); +var s = this.getSmiles(molecule.patternAtoms, molecule.ac, bs, null, 34); +var map = this.getCorrelationMaps(s, molecule.patternAtoms, molecule.ac, bs, 42); +var map2 = this.getCorrelationMaps(s, at, bsAtoms.cardinality(), bsAtoms, 42); +return Clazz_newArray(-1, [map[0], map2[0]]); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +} else { +throw e; +} +} +return null; +}, "~S,~A,JU.BS"); +c$.jmeToMolecule = Clazz_defineMethod(c$, "jmeToMolecule", +function(jme){ +var molecule = new JS.SmilesSearch(); +var tokens = JU.PT.getTokens(jme); +var nAtoms = JU.PT.parseInt(tokens[0]); +var nBonds = JU.PT.parseInt(tokens[1]); +var pt = 2; +for (var i = 0; i < nAtoms; i++, pt += 3) { +var sa = tokens[pt]; +var a = molecule.addAtom(); +var ic = sa.indexOf("+"); +var charge = 0; +if (ic >= 0) { +charge = (ic == sa.length - 1 ? 1 : JU.PT.parseInt(sa.substring(ic + 1))); +} else if ((ic = sa.indexOf("-")) >= 0) { +charge = JU.PT.parseInt(sa.substring(ic)); +}a.setCharge(charge); +a.setSymbol(ic < 0 ? sa : sa.substring(0, ic)); +} +for (var i = 0; i < nBonds; i++) { +var ia = JU.PT.parseInt(tokens[pt++]) - 1; +var ib = JU.PT.parseInt(tokens[pt++]) - 1; +var iorder = JU.PT.parseInt(tokens[pt++]); +var a1 = molecule.patternAtoms[ia]; +var a2 = molecule.patternAtoms[ib]; +var order = 1; +switch (iorder) { +default: +case 1: +break; +case 2: +order = 2; +break; +case 3: +order = 3; +break; +} + new JS.SmilesBond(a1, a2, order, false).index = i; +} +molecule.isSmarts = true; +molecule.set(); +return molecule; +}, "~S"); +Clazz_overrideMethod(c$, "getSmilesFromJME", +function(jme){ +try { +var molecule = JS.SmilesMatcher.jmeToMolecule(jme); +var bs = JU.BSUtil.newBitSet2(0, molecule.ac); +return this.getSmiles(molecule.patternAtoms, molecule.ac, bs, null, 1); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz_overrideMethod(c$, "compileSmartsPattern", +function(pattern){ +pattern = JS.SmilesParser.cleanPattern(pattern); +return JS.SmilesParser.newSearch(pattern, true, false); +}, "~S"); +Clazz_overrideMethod(c$, "compileSearchTarget", +function(atoms, atomCount, bsSelected){ +var ss = new JS.SmilesSearch(); +ss.target.setAtoms(atoms, atomCount, bsSelected); +ss.targetSet = true; +return ss; +}, "~A,~N,JU.BS"); +Clazz_overrideMethod(c$, "hasStructure", +function(pattern, smilesSet, flags){ +var ret = Clazz_newIntArray (smilesSet.length, 0); +if ((flags & 1) != 1) { +flags = flags | 2; +}this.clearExceptions(); +pattern = JS.SmilesParser.cleanPattern(pattern); +try { +var search = JS.SmilesParser.newSearch(pattern, true, false); +for (var i = 0; i < smilesSet.length; i++) { +var smiles = JS.SmilesParser.cleanPattern(smilesSet[i]); +var searchTarget = JS.SmilesParser.newSearch(smiles, false, true); +searchTarget.setFlags(searchTarget.flags | JS.SmilesParser.getFlags(pattern)); +try { +this.clearExceptions(); +ret[i] = (this.matchPattern(search, null, 0, null, null, false, flags | 8, 5, searchTarget) === Boolean.TRUE ? 1 : 0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +ret[i] = -1; +e.printStackTrace(); +} else { +throw e; +} +} +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (JU.Logger.debugging) e.printStackTrace(); +if (JS.InvalidSmilesException.getLastError() == null) this.clearExceptions(); +throw new JS.InvalidSmilesException(JS.InvalidSmilesException.getLastError()); +} else { +throw e; +} +} +return ret; +}, "~S,~A,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["java.lang.Exception"], "JS.InvalidSmilesException", null, function(){ +var c$ = Clazz_declareType(JS, "InvalidSmilesException", Exception); +Clazz_makeConstructor(c$, +function(message){ +Clazz_superConstructor(this, JS.InvalidSmilesException, [message]); +JS.InvalidSmilesException.lastError = (message.startsWith("Jmol SMILES") ? message : "Jmol SMILES Exception: " + message); +}, "~S"); +c$.getLastError = Clazz_defineMethod(c$, "getLastError", +function(){ +return JS.InvalidSmilesException.lastError; +}); +c$.clear = Clazz_defineMethod(c$, "clear", +function(){ +JS.InvalidSmilesException.lastError = null; +}); +Clazz_overrideMethod(c$, "getMessage", +function(){ +return JS.InvalidSmilesException.lastError; +}); +c$.lastError = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.JmolMolecule", "JU.BS", "$.Lst"], "JS.SmilesSearch", ["java.util.Hashtable", "JU.AU", "$.SB", "JS.InvalidSmilesException", "$.SmilesAromatic", "$.SmilesAtom", "$.SmilesBond", "$.SmilesMeasure", "$.SmilesParser", "$.SmilesStereo", "$.VTemp", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isSmarts = false; +this.top = null; +this.target = null; +this.pattern = null; +this.patternAtoms = null; +this.v = null; +this.targetSet = false; +this.aromaticOpen = false; +this.aromaticStrict = false; +this.aromaticPlanar = false; +this.aromaticDouble = false; +this.aromaticMMFF94 = false; +this.aromaticDefined = false; +this.aromaticUnknown = false; +this.noAromatic = false; +this.ignoreAtomClass = false; +this.ignoreElement = false; +this.ignoreStereochemistry = false; +this.invertStereochemistry = false; +this.exitFirstMatch = false; +this.groupByModel = false; +this.setAtropicity = false; +this.patternAromatic = false; +this.haveSmilesTarget = false; +this.isTopology = false; +this.patternBioSequence = false; +this.subSearches = null; +this.haveSelected = false; +this.haveBondStereochemistry = false; +this.stereo = null; +this.needRingData = false; +this.needAromatic = true; +this.needRingMemberships = false; +this.nDouble = 0; +this.ringDataMax = -2147483648; +this.measures = null; +this.flags = 0; +this.atropKeys = null; +this.lastChainAtom = null; +this.asVector = false; +this.getMaps = false; +this.retBoolean = false; +this.isNormalized = false; +this.haveComponents = false; +this.isSilent = false; +this.isRingCheck = false; +this.bsFound = null; +this.htNested = null; +this.nNested = 0; +this.nestedBond = null; +this.vReturn = null; +this.uniqueList = null; +this.bsReturn = null; +this.bsCheck = null; +this.mapUnique = false; +this.polyhedronStereo = null; +this.polyAtom = null; +this.autoAddImplicitH = true; +this.pattern0 = null; +Clazz_instantialize(this, arguments);}, JS, "SmilesSearch", JU.JmolMolecule); +Clazz_prepareFields (c$, function(){ +this.patternAtoms = new Array(16); +this.measures = new JU.Lst(); +this.bsFound = new JU.BS(); +this.bsReturn = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JS.SmilesSearch, []); +this.top = this; +this.target = new JS.SmilesSearch.SmilesTarget(); +this.v = new JS.VTemp(); +}); +c$.isRingBond = Clazz_defineMethod(c$, "isRingBond", +function(ringSets, bsAromaticRings, a1, a2){ +if (ringSets != null) { +for (var i = ringSets.size(); --i >= 0; ) { +var bsRing = ringSets.get(i); +if (bsRing.get(a1) && bsRing.get(a2)) { +if (bsAromaticRings == null || bsAromaticRings.get(i)) return true; +}} +}return false; +}, "JU.Lst,JU.BS,~N,~N"); +Clazz_defineMethod(c$, "setTarget", +function(s){ +this.target = s.target; +this.targetSet = true; +}, "JS.SmilesSearch"); +Clazz_defineMethod(c$, "setTop", +function(parent){ +while (parent.top !== parent) parent = parent.top; + +this.top = parent; +}, "JS.SmilesSearch"); +c$.addFlags = Clazz_defineMethod(c$, "addFlags", +function(flags, strFlags){ +if (strFlags.indexOf("OPEN") >= 0) flags |= 5; +if (strFlags.indexOf("BIO") >= 0) flags |= 1048576; +if (strFlags.indexOf("HYDROGEN2") >= 0) flags |= 8192; + else if (strFlags.indexOf("HYDROGEN") >= 0) flags |= 4096; +if (strFlags.indexOf("FIRSTMATCHONLY") >= 0) flags |= 8; +if (strFlags.indexOf("STRICT") >= 0) flags |= 256; +if (strFlags.indexOf("PLANAR") >= 0) flags |= 1024; +if (strFlags.indexOf("NOAROMATIC") >= 0 || strFlags.indexOf("NONAROMATIC") >= 0) flags |= 16; +if (strFlags.indexOf("AROMATICDOUBLE") >= 0) flags |= 512; +if (strFlags.indexOf("AROMATICDEFINED") >= 0) flags |= 128; +if (strFlags.indexOf("MMFF94") >= 0) flags |= 768; +if (strFlags.indexOf("ALLCOMPONENTS") >= 0) flags |= 32768; +if (strFlags.indexOf("TOPOLOGY") >= 0) flags |= 16384; +if (strFlags.indexOf("NOATOMCLASS") >= 0) flags |= 2048; +if (strFlags.indexOf("NOSTEREO") >= 0) { +flags |= 32; +} else if (strFlags.indexOf("INVERTSTEREO") >= 0) { +if ((flags & 64) != 0) flags &= -65; + else flags |= 64; +}if (strFlags.indexOf("ATOMCOMMENT") >= 0) flags |= 131072; +if (strFlags.indexOf("GROUPBYMODEL") >= 0) flags |= 67108864; +if ((flags & 1048576) == 1048576) { +if (strFlags.indexOf("NOCOMMENT") >= 0) flags |= 34603008; +if (strFlags.indexOf("UNMATCHED") >= 0) flags |= 3145728; +if (strFlags.indexOf("COVALENT") >= 0) flags |= 5242880; +if (strFlags.indexOf("HBOND") >= 0) flags |= 9437184; +}return flags; +}, "~N,~S"); +Clazz_defineMethod(c$, "setFlags", +function(flags){ +this.flags = flags; +this.exitFirstMatch = new Boolean (this.exitFirstMatch | ((flags & 8) == 8)).valueOf(); +this.aromaticOpen = ((flags & 5) == 5); +this.aromaticStrict = ((flags & 256) == 256); +this.aromaticPlanar = ((flags & 1024) == 1024); +this.aromaticMMFF94 = ((flags & 768) == 768); +this.aromaticDouble = ((flags & 512) == 512); +this.aromaticDefined = ((flags & 128) == 128); +this.noAromatic = new Boolean (this.noAromatic | ((flags & 16) == 16)).valueOf(); +this.aromaticUnknown = !this.noAromatic && !this.aromaticOpen && !this.aromaticDouble && !this.aromaticStrict && !this.aromaticPlanar && !this.aromaticMMFF94 && !this.aromaticDefined; +this.groupByModel = ((flags & 67108864) == 67108864); +this.ignoreAtomClass = ((flags & 2048) == 2048); +this.ignoreStereochemistry = ((flags & 32) == 32); +this.invertStereochemistry = !this.ignoreStereochemistry && ((flags & 64) == 64); +this.ignoreElement = ((flags & 16384) == 16384); +}, "~N"); +Clazz_defineMethod(c$, "set", +function(){ +if (this.patternAtoms.length > this.ac) this.patternAtoms = JU.AU.arrayCopyObject(this.patternAtoms, this.ac); +this.nodes = this.patternAtoms; +this.isTopology = true; +this.patternAromatic = false; +this.patternBioSequence = true; +for (var i = this.ac; --i >= 0; ) { +var atom = this.patternAtoms[i]; +if (this.isTopology && atom.isDefined()) this.isTopology = false; +if (!atom.isBioResidue) this.patternBioSequence = false; +if (atom.isAromatic) this.patternAromatic = true; +atom.setBondArray(); +if (this.autoAddImplicitH && !this.isSmarts && atom.bioType == '\0' && !atom.setHydrogenCount()) throw new JS.InvalidSmilesException("unbracketed atoms must be one of: B, C, N, O, P, S, F, Cl, Br, I, *,"); +} +if (this.haveComponents) { +for (var i = this.ac; --i >= 0; ) { +var a = this.patternAtoms[i]; +var bonds = a.bonds; +var ia = a.component; +for (var j = a.bondCount; --j >= 0; ) { +var b = bonds[j]; +var ib; +if (b.isConnection && b.atom2 === a && (ib = b.atom1.component) != ia) { +for (var k = this.ac; --k >= 0; ) if (this.patternAtoms[k].component == ia) this.patternAtoms[k].component = ib; + +}} +} +}}); +Clazz_defineMethod(c$, "addAtom", +function(){ +return this.appendAtom( new JS.SmilesAtom()); +}); +Clazz_defineMethod(c$, "appendAtom", +function(sAtom){ +if (this.ac >= this.patternAtoms.length) this.patternAtoms = JU.AU.doubleLength(this.patternAtoms); +return this.patternAtoms[this.ac] = sAtom.setIndex(this.ac++); +}, "JS.SmilesAtom"); +Clazz_defineMethod(c$, "addNested", +function(pattern){ +if (this.htNested == null) this.htNested = new java.util.Hashtable(); +this.setNested(++this.nNested, pattern); +return this.nNested; +}, "~S"); +Clazz_defineMethod(c$, "clear", +function(){ +this.bsReturn.clearAll(); +this.nNested = 0; +this.htNested = null; +this.nestedBond = null; +this.clearBsFound(-1); +}); +Clazz_defineMethod(c$, "clearBsFound", +function(iAtom){ +if (iAtom < 0) { +if (this.bsCheck == null) { +this.bsFound.clearAll(); +}} else this.bsFound.clear(iAtom); +}, "~N"); +Clazz_defineMethod(c$, "setNested", +function(iNested, o){ +this.top.htNested.put("_" + iNested, o); +}, "~N,~O"); +Clazz_defineMethod(c$, "getNested", +function(iNested){ +return this.top.htNested.get("_" + iNested); +}, "~N"); +Clazz_defineMethod(c$, "getMissingHydrogenCount", +function(){ +var n = 0; +var nH; +for (var i = 0; i < this.ac; i++) if ((nH = this.patternAtoms[i].explicitHydrogenCount) >= 0) n += nH; + +return n; +}); +Clazz_defineMethod(c$, "setRingData", +function(bsA, vRings, doProcessAromatic){ +if (this.isTopology || this.patternBioSequence) this.needAromatic = false; +this.needAromatic = new Boolean (this.needAromatic &( new Boolean ((bsA == null) & !this.noAromatic).valueOf())).valueOf(); +if (this.needAromatic) this.needRingData = true; +if (!this.needAromatic) { +this.target.bsAromatic.clearAll(); +if (bsA != null) this.target.bsAromatic.or(bsA); +if (!this.needRingMemberships && !this.needRingData) return; +}this.getRingData(vRings, this.needRingData, doProcessAromatic); +}, "JU.BS,~A,~B"); +Clazz_defineMethod(c$, "getRingData", +function(vRings, needRingData, doTestAromatic){ +var isStrict = (this.needAromatic && (this.aromaticStrict || !this.aromaticOpen && !this.aromaticPlanar)); +if (isStrict && this.aromaticUnknown) { +if (this.target.ac > 0 && this.target.nodes[this.target.bsSelected.nextSetBit(0)].modelIsRawPDB()) isStrict = false; +}var isOpenNotStrict = (this.needAromatic && this.aromaticOpen && !this.aromaticStrict); +var checkExplicit = (this.needAromatic && !isStrict); +var doFinalize = (this.needAromatic && doTestAromatic && (isStrict || isOpenNotStrict)); +var setAromatic = (this.needAromatic && !this.aromaticDefined); +var aromaticMax = 7; +var lstAromatic = (vRings == null ? new JU.Lst() : (vRings[3] = new JU.Lst())); +var lstSP2 = (doFinalize ? new JU.Lst() : null); +var strictness = (!isStrict ? 0 : this.aromaticMMFF94 ? 2 : 1); +if (this.needAromatic && this.aromaticDefined) { +this.target.checkAromaticDefined(); +strictness = 0; +}this.ringDataMax = this.target.setRingData(strictness, needRingData, this.ringDataMax); +if (this.target.selectedAtomCount < 3) return; +var s = "****"; +var max = this.ringDataMax; +while (s.length < max) s += s; + +var eCounts = (doFinalize && setAromatic ? Clazz_newIntArray (this.target.ac, 0) : null); +var justCheckBonding = (setAromatic && Clazz_instanceOf(this.target.nodes[0],"JS.SmilesAtom")); +for (var i = 3; i <= max; i++) { +if (i > this.target.ac) break; +var smarts = "*1" + s.substring(0, i - 2) + "*1"; +var search = JS.SmilesParser.newSearch(smarts, true, true); +var vR = this.subsearch(search, 2); +if (vRings != null && i <= 5) { +var v = new JU.Lst(); +for (var j = vR.size(); --j >= 0; ) v.addLast(vR.get(j)); + +vRings[i - 3] = v; +}if (vR.size() == 0) continue; +if (setAromatic && i >= 4 && i <= aromaticMax) { +JS.SmilesAromatic.setAromatic(i, this.target.nodes, this.target.bsSelected, vR, this.target.bsAromatic, strictness, isOpenNotStrict, justCheckBonding, checkExplicit, this.v, lstAromatic, lstSP2, eCounts, doTestAromatic); +}if (needRingData) { +this.target.ringData[i] = new JU.BS(); +for (var k = vR.size(); --k >= 0; ) { +var r = vR.get(k); +this.target.ringData[i].or(r); +for (var j = r.nextSetBit(0); j >= 0; j = r.nextSetBit(j + 1)) this.target.ringCounts[j]++; + +} +}} +if (this.needAromatic) { +if (doFinalize) JS.SmilesAromatic.finalizeAromatic(this.target.nodes, this.target.bsAromatic, lstAromatic, lstSP2, eCounts, isOpenNotStrict, isStrict); +this.target.finalizeAromatic(lstAromatic); +}if (needRingData) { +this.target.finalizeRingData(); +}}, "~A,~B,~B"); +Clazz_defineMethod(c$, "subsearch", +function(search, submode){ +search.mapUnique = this.mapUnique; +search.target = this.target; +search.htNested = this.htNested; +search.haveSmilesTarget = this.haveSmilesTarget; +search.bsCheck = this.bsCheck; +search.isSmarts = true; +switch (submode) { +case 1: +search.exitFirstMatch = false; +break; +case 2: +search.isRingCheck = true; +search.isSilent = true; +search.asVector = true; +break; +case 3: +search.ignoreAtomClass = this.ignoreAtomClass; +search.aromaticDouble = this.aromaticDouble; +search.haveSelected = this.haveSelected; +search.exitFirstMatch = this.exitFirstMatch; +search.getMaps = this.getMaps; +search.retBoolean = this.retBoolean; +search.asVector = this.asVector; +search.vReturn = this.vReturn; +search.bsReturn = this.bsReturn; +search.haveBondStereochemistry = this.haveBondStereochemistry; +break; +} +return search.search2(submode == 1); +}, "JS.SmilesSearch,~N"); +Clazz_defineMethod(c$, "search", +function(){ +this.bsReturn.clearAll(); +return this.search2(false); +}); +Clazz_defineMethod(c$, "search2", +function(firstAtomOnly){ +this.setFlags(this.flags); +if (!this.isRingCheck && JU.Logger.debuggingHigh && !this.isSilent) JU.Logger.debug("SmilesSearch processing " + this.pattern); +if (this.vReturn == null && (this.asVector || this.getMaps)) this.vReturn = new JU.Lst(); +if (this.subSearches != null) { +for (var i = 0; i < this.subSearches.length; i++) { +if (this.subSearches[i] == null) continue; +this.subsearch(this.subSearches[i], 3); +if (this.exitFirstMatch) { +if (this.vReturn == null ? this.bsReturn.nextSetBit(0) >= 0 : this.vReturn.size() > 0) break; +}} +} else if (this.ac > 0 && this.ac <= this.target.selectedAtomCount) { +if (this.nestedBond == null) { +this.clearBsFound(-1); +} else { +this.bsReturn.clearAll(); +}this.nextPatternAtom(-1, -1, firstAtomOnly, -1); +}return (this.asVector || this.getMaps ? this.vReturn : !this.retBoolean ? this.bsReturn : Boolean.$valueOf(!this.bsReturn.isEmpty())); +}, "~B"); +Clazz_defineMethod(c$, "nextPatternAtom", +function(atomNum, iAtom, firstAtomOnly, c){ +var jmolAtom; +var jmolBonds; +if (++atomNum < this.ac) { +var newPatternAtom = this.patternAtoms[atomNum]; +var newPatternBond = (iAtom >= 0 ? newPatternAtom.getBondTo(null) : atomNum == 0 ? this.nestedBond : null); +if (newPatternBond == null) { +var bs = JU.BSUtil.copy(this.bsFound); +var bs0 = JU.BSUtil.copy(this.bsFound); +if (newPatternAtom.notBondedIndex >= 0) { +var pa = this.patternAtoms[newPatternAtom.notBondedIndex]; +var a = pa.getMatchingAtom(); +if (pa.isBioAtom) { +var ii = a.getOffsetResidueAtom("\0", 1); +if (ii >= 0) bs.set(ii); +ii = a.getOffsetResidueAtom("\0", -1); +if (ii >= 0) bs.set(ii); +} else if (pa === this.polyAtom) { +bs.set(pa.getMatchingAtomIndex()); +} else { +jmolBonds = a.getEdges(); +for (var k = 0; k < jmolBonds.length; k++) bs.set(jmolBonds[k].getOtherNode(a).getIndex()); + +}}var skipGroup = ((newPatternAtom.isBioAtomWild)); +var j1 = this.target.bsSelected.nextSetBit(0); +j1 = (skipGroup && j1 >= 0 ? this.target.nodes[j1].getOffsetResidueAtom("\0", j1) : j1); +var oldJmolComponent; +var oldPatternComponent = (atomNum > 0 ? this.patternAtoms[atomNum - 1] : newPatternAtom).component; +var thisPatternComponent = newPatternAtom.component; +var checkComponents = this.haveComponents && thisPatternComponent != -2147483648; +for (var j = j1; j >= 0; j = this.target.bsSelected.nextSetBit(j + 1)) { +if (!bs.get(j) && !this.bsFound.get(j)) { +jmolAtom = this.target.nodes[j]; +if (checkComponents && !this.isRingCheck) { +c = (this.groupByModel ? jmolAtom.getModelIndex() : jmolAtom.getMoleculeNumber(false)); +oldJmolComponent = (atomNum > 0 ? this.patternAtoms[atomNum - 1].matchingComponent : c); +if ((oldPatternComponent == thisPatternComponent) != (oldJmolComponent == c)) continue; +}if (!this.nextTargetAtom(newPatternAtom, jmolAtom, atomNum, j, firstAtomOnly, c)) return false; +}if (skipGroup) { +j1 = this.target.nodes[j].getOffsetResidueAtom(newPatternAtom.bioAtomName, 1); +if (j1 >= 0) j = j1 - 1; +}} +this.bsFound = bs0; +return true; +}jmolAtom = newPatternBond.atom1.getMatchingAtom(); +switch (newPatternBond.order) { +case 96: +var nextGroupAtom = jmolAtom.getOffsetResidueAtom(newPatternAtom.bioAtomName, 1); +if (nextGroupAtom >= 0) { +var bs = JU.BSUtil.copy(this.bsFound); +jmolAtom.getGroupBits(this.bsFound); +if (this.doCheckAtom(nextGroupAtom) && !this.nextTargetAtom(newPatternAtom, this.target.nodes[nextGroupAtom], atomNum, nextGroupAtom, firstAtomOnly, c)) return false; +this.bsFound = bs; +}return true; +case 112: +var vLinks = new JU.Lst(); +jmolAtom.getCrossLinkVector(vLinks, true, true); +var bs = JU.BSUtil.copy(this.bsFound); +jmolAtom.getGroupBits(this.bsFound); +for (var j = 2; j < vLinks.size(); j += 3) { +var ia = vLinks.get(j).intValue(); +if (this.doCheckAtom(ia) && !this.nextTargetAtom(newPatternAtom, this.target.nodes[ia], atomNum, ia, firstAtomOnly, c)) return false; +} +this.bsFound = bs; +return true; +} +jmolBonds = jmolAtom.getEdges(); +if (jmolBonds != null) for (var j = 0; j < jmolBonds.length; j++) { +var ia = jmolAtom.getBondedAtomIndex(j); +if (this.doCheckAtom(ia) && !this.nextTargetAtom(newPatternAtom, this.target.nodes[ia], atomNum, ia, firstAtomOnly, c)) return false; +} +this.clearBsFound(iAtom); +return true; +}if (!this.ignoreStereochemistry && !this.isRingCheck) { +if (JU.Logger.debuggingHigh) { +for (var i = 0; i < atomNum; i++) JU.Logger.debug("pattern atoms " + this.patternAtoms[i] + " " + this.patternAtoms[i].matchingComponent); + +JU.Logger.debug("--ss-- " + this.bsFound.cardinality()); +}if (!this.checkStereochemistry()) return true; +}var bs = new JU.BS(); +var nMatch = 0; +for (var j = 0; j < this.ac; j++) { +var i = this.patternAtoms[j].getMatchingAtomIndex(); +if (!firstAtomOnly && this.top.haveSelected && !this.patternAtoms[j].selected) continue; +nMatch++; +bs.set(i); +if (this.patternAtoms[j].isBioAtomWild) this.target.nodes[i].getGroupBits(bs); +if (firstAtomOnly) break; +if (!this.isSmarts) if (!this.setAtropicity && this.patternAtoms[j].explicitHydrogenCount > 0) { +var atom = this.target.nodes[i]; +for (var k = 0, n = atom.getEdges().length; k < n; k++) { +var ia = atom.getBondedAtomIndex(k); +if (this.target.nodes[ia].getElementNumber() == 1) bs.set(ia); +} +}} +if (!this.isSmarts && bs.cardinality() != this.target.selectedAtomCount) return true; +if (this.bsCheck != null) { +if (firstAtomOnly) { +this.bsCheck.clearAll(); +for (var j = 0; j < this.ac; j++) { +this.bsCheck.set(this.patternAtoms[j].getMatchingAtomIndex()); +} +if (this.bsCheck.cardinality() != this.ac) return true; +} else { +if (bs.cardinality() != this.ac) return true; +}}this.bsReturn.or(bs); +if (this.getMaps) { +if (this.mapUnique) { +if (this.uniqueList == null) this.uniqueList = new JU.Lst(); +for (var j = this.uniqueList.size(); --j >= 0; ) if (this.uniqueList.get(j).equals(bs)) return true; + +this.uniqueList.addLast(bs); +}var map = Clazz_newIntArray (nMatch, 0); +for (var j = 0, nn = 0; j < this.ac; j++) { +if (!firstAtomOnly && this.top.haveSelected && !this.patternAtoms[j].selected) continue; +map[nn++] = this.patternAtoms[j].getMatchingAtomIndex(); +} +this.vReturn.addLast(map); +return !this.exitFirstMatch; +}if (this.asVector) { +var isOK = true; +for (var j = this.vReturn.size(); --j >= 0 && isOK; ) isOK = !((this.vReturn.get(j)).equals(bs)); + +if (!isOK) return true; +this.vReturn.addLast(bs); +}if (this.isRingCheck) { +var bsRing = new JU.BS(); +for (var k = atomNum * 3 + 2; --k > atomNum; ) bsRing.set(this.patternAtoms[(k <= atomNum * 2 ? atomNum * 2 - k + 1 : k - 1) % atomNum].getMatchingAtomIndex()); + +this.target.ringSets.addLast(bsRing); +return true; +}if (this.exitFirstMatch) return false; +return (bs.cardinality() != this.target.selectedAtomCount); +}, "~N,~N,~B,~N"); +Clazz_defineMethod(c$, "doCheckAtom", +function(j){ +return this.target.bsSelected.get(j) && !this.bsFound.get(j); +}, "~N"); +Clazz_defineMethod(c$, "nextTargetAtom", +function(patternAtom, jmolAtom, atomNum, iAtom, firstAtomOnly, c){ +var jmolBonds; +if (!this.isRingCheck && !this.isTopology) { +if (patternAtom.subAtoms == null) { +if (!this.checkPrimitiveAtom(patternAtom, iAtom)) return true; +} else if (patternAtom.isAND) { +for (var i = 0; i < patternAtom.nSubAtoms; i++) if (!this.checkPrimitiveAtom(patternAtom.subAtoms[i], iAtom)) return true; + +} else { +for (var i = 0; i < patternAtom.nSubAtoms; i++) if (!this.nextTargetAtom(patternAtom.subAtoms[i], jmolAtom, atomNum, iAtom, firstAtomOnly, c)) return false; + +return true; +}}jmolBonds = jmolAtom.getEdges(); +for (var i = patternAtom.getBondCount(); --i >= 0; ) { +var patternBond = patternAtom.getBond(i); +if (patternBond.getAtomIndex2() != patternAtom.index) continue; +var atom1 = patternBond.atom1; +var matchingAtom = atom1.getMatchingAtomIndex(); +switch (patternBond.order) { +case 96: +case 112: +if (!this.checkMatchBond(patternAtom, atom1, patternBond, iAtom, matchingAtom, null)) return true; +break; +default: +var k = 0; +var jmolBond = null; +for (; k < jmolBonds.length; k++) if ((jmolBond = jmolBonds[k]).isCovalent() && (jmolBond.getAtomIndex1() == matchingAtom || jmolBond.getAtomIndex2() == matchingAtom)) break; + +if (k == jmolBonds.length) return true; +if (!this.checkMatchBond(patternAtom, atom1, patternBond, iAtom, matchingAtom, jmolBond)) return true; +} +} +patternAtom = this.patternAtoms[patternAtom.index]; +patternAtom.setMatchingAtom(this.target.nodes[iAtom], iAtom); +patternAtom.matchingComponent = c; +this.bsFound.set(iAtom); +if (!this.nextPatternAtom(atomNum, iAtom, firstAtomOnly, c)) return false; +if (iAtom >= 0) this.clearBsFound(iAtom); +return true; +}, "JS.SmilesAtom,JU.Node,~N,~N,~B,~N"); +Clazz_defineMethod(c$, "checkPrimitiveAtom", +function(patternAtom, iTarget){ +if (patternAtom.nSubAtoms > 0) { +for (var i = 0; i < patternAtom.nSubAtoms; i++) if (this.checkPrimitiveAtom(patternAtom.subAtoms[i], iTarget)) return true; + +return false; +}var targetAtom = this.target.nodes[iTarget]; +var foundAtom = patternAtom.not; +while (true) { +if (patternAtom.iNested > 0) { +var o = this.getNested(patternAtom.iNested); +if (Clazz_instanceOf(o,"JS.SmilesSearch")) { +var search = o; +if (patternAtom.isBioAtom) search.nestedBond = patternAtom.getBondTo(null); +o = this.subsearch(search, 1); +if (o == null) o = new JU.BS(); +if (!patternAtom.isBioAtom) this.setNested(patternAtom.iNested, o); +}foundAtom = (patternAtom.not != ((o).get(iTarget))); +break; +}var na = targetAtom.getElementNumber(); +var n = patternAtom.elementNumber; +if (na >= 0 && n >= 0 && n != na && !this.ignoreElement) break; +if (patternAtom.isBioResidue) { +var a = targetAtom; +if (patternAtom.bioAtomName != null && (patternAtom.isLeadAtom() ? !a.isLeadAtom() : !patternAtom.bioAtomName.equals(a.getAtomName().toUpperCase()))) break; +if (patternAtom.residueName != null && !patternAtom.residueName.equals(a.getGroup3(false).toUpperCase())) break; +if (patternAtom.residueNumber != -2147483648 && patternAtom.residueNumber != a.getResno()) break; +if (patternAtom.insCode != '\0' && patternAtom.insCode != a.getInsertionCode()) break; +if (patternAtom.residueChar != null || patternAtom.elementNumber == -2) { +var atype = a.getBioSmilesType(); +var ptype = patternAtom.getBioSmilesType(); +var ok = true; +var isNucleic = false; +switch ((ptype).charCodeAt(0)) { +case 0: +case 42: +ok = true; +break; +case 110: +ok = (atype == 'r' || atype == 'c'); +isNucleic = true; +break; +case 114: +case 99: +isNucleic = true; +default: +ok = (atype == ptype); +break; +} +if (!ok) break; +var s = a.getGroup1('\0').toUpperCase(); +var resChar = (patternAtom.residueChar == null ? '*' : patternAtom.residueChar.charAt(0)); +var isOK = (resChar == s.charAt(0)); +switch ((resChar).charCodeAt(0)) { +case 42: +isOK = true; +break; +case 78: +isOK = isNucleic ? (atype == 'r' || atype == 'c') : isOK; +break; +case 82: +isOK = isNucleic ? a.isPurine() : isOK; +break; +case 89: +isOK = isNucleic ? a.isPyrimidine() : isOK; +break; +} +if (!isOK) break; +}if (patternAtom.isBioAtom) { +if (patternAtom.notCrossLinked && a.getCrossLinkVector(null, true, true)) break; +}} else { +if (patternAtom.atomNumber != -2147483648 && patternAtom.atomNumber != targetAtom.getAtomNumber()) break; +if (patternAtom.jmolIndex >= 0 && targetAtom.getIndex() != patternAtom.jmolIndex) break; +if (patternAtom.atomType != null && !patternAtom.atomType.equals(targetAtom.getAtomType())) break; +if ((n = patternAtom.getAtomicMass()) != -2147483648 && (n >= 0 && n != (na = targetAtom.getIsotopeNumber()) || n < 0 && na != 0 && -n != na)) break; +if (!this.noAromatic && !patternAtom.aromaticAmbiguous && patternAtom.isAromatic != this.target.bsAromatic.get(iTarget)) break; +if ((n = patternAtom.getCharge()) != -2147483648 && n != targetAtom.getFormalCharge()) break; +n = patternAtom.getCovalentHydrogenCount() + patternAtom.explicitHydrogenCount; +if (n >= 0 && n != targetAtom.getTotalHydrogenCount()) break; +if ((n = patternAtom.implicitHydrogenCount) != -2147483648) { +na = targetAtom.getImplicitHydrogenCount(); +if (n == -1 ? na == 0 : n != na) break; +}if (patternAtom.degree > 0 && patternAtom.degree != targetAtom.getCovalentBondCount()) break; +if (patternAtom.nonhydrogenDegree > 0 && patternAtom.nonhydrogenDegree != targetAtom.getCovalentBondCount() - targetAtom.getCovalentHydrogenCount()) break; +if (this.isSmarts && patternAtom.valence > 0 && patternAtom.valence != targetAtom.getTotalValence()) break; +if (patternAtom.connectivity > 0 && patternAtom.connectivity != targetAtom.getCovalentBondCountPlusMissingH()) break; +if (patternAtom.atomNumber != -2147483648 && patternAtom.atomNumber != targetAtom.getAtomNumber()) break; +if (patternAtom.jmolIndex >= 0 && targetAtom.getIndex() != patternAtom.jmolIndex) break; +if (patternAtom.atomType != null && !patternAtom.atomType.equals(targetAtom.getAtomType())) break; +if (!this.ignoreAtomClass || this.isSmarts) { +if (!Float.isNaN(patternAtom.atomClass) && patternAtom.atomClass != targetAtom.getFloatProperty("property_atomclass")) break; +}if (this.target.ringData != null) { +if (patternAtom.ringSize >= -1) { +if (patternAtom.ringSize <= 0) { +if ((this.target.ringCounts[iTarget] == 0) != (patternAtom.ringSize == 0)) break; +} else { +var rd = this.target.ringData[patternAtom.ringSize == 500 ? 5 : patternAtom.ringSize == 600 ? 6 : patternAtom.ringSize]; +if (rd == null || !rd.get(iTarget)) break; +if (!this.noAromatic) if (patternAtom.ringSize == 500) { +if (!this.target.bsAromatic5.get(iTarget)) break; +} else if (patternAtom.ringSize == 600) { +if (!this.target.bsAromatic6.get(iTarget)) break; +}}}if (patternAtom.ringMembership >= -1) { +if (patternAtom.ringMembership == -1 ? this.target.ringCounts[iTarget] == 0 : this.target.ringCounts[iTarget] != patternAtom.ringMembership) break; +}if (patternAtom.ringConnectivity >= 0) { +n = this.target.ringConnections[iTarget]; +if (patternAtom.ringConnectivity == -1 && n == 0 || patternAtom.ringConnectivity != -1 && n != patternAtom.ringConnectivity) break; +}}}foundAtom = !foundAtom; +break; +} +return foundAtom; +}, "JS.SmilesAtom,~N"); +Clazz_defineMethod(c$, "checkMatchBond", +function(patternAtom, atom1, patternBond, iAtom, matchingAtom, bond){ +if (patternBond.bondsOr != null) { +for (var ii = 0; ii < patternBond.nBondsOr; ii++) if (this.checkMatchBond(patternAtom, atom1, patternBond.bondsOr[ii], iAtom, matchingAtom, bond)) return true; + +return false; +}if (!this.isRingCheck && !this.isTopology) if (patternBond.nPrimitives == 0) { +if (!this.checkPrimitiveBond(patternBond, iAtom, matchingAtom, bond)) return false; +} else { +for (var i = 0; i < patternBond.nPrimitives; i++) { +var prim = patternBond.setPrimitive(i); +if (!this.checkPrimitiveBond(prim, iAtom, matchingAtom, bond)) return false; +} +}patternBond.matchingBond = bond; +return true; +}, "JS.SmilesAtom,JS.SmilesAtom,JS.SmilesBond,~N,~N,JU.Edge"); +Clazz_defineMethod(c$, "checkPrimitiveBond", +function(patternBond, iAtom1, iAtom2, bond){ +var bondFound = false; +switch (patternBond.order) { +case 96: +return (patternBond.isNot != (this.target.nodes[iAtom2].getOffsetResidueAtom("\0", 1) == this.target.nodes[iAtom1].getOffsetResidueAtom("\0", 0))); +case 112: +return (patternBond.isNot != this.target.nodes[iAtom1].isCrossLinked(this.target.nodes[iAtom2])); +} +var isAromatic1 = (!this.noAromatic && this.target.bsAromatic.get(iAtom1)); +var isAromatic2 = (!this.noAromatic && this.target.bsAromatic.get(iAtom2)); +var order = bond.getCovalentOrder(); +var patternOrder = patternBond.order; +if (isAromatic1 && isAromatic2) { +switch (patternOrder) { +case 17: +case 65: +bondFound = JS.SmilesSearch.isRingBond(this.target.ringSets, null, iAtom1, iAtom2); +break; +case 1: +bondFound = !this.isSmarts || !JS.SmilesSearch.isRingBond(this.target.ringSets, this.target.getBSAromaticRings(), iAtom1, iAtom2); +break; +case 2: +bondFound = this.isNormalized || order == 81 || this.aromaticDouble && (order == 2 || order == 514); +break; +case 65537: +case 65538: +bondFound = !patternBond.isNot; +break; +case 81: +case -1: +bondFound = true; +break; +} +} else { +switch (patternOrder) { +case 17: +if (!this.noAromatic) break; +case 81: +case -1: +bondFound = true; +break; +case 1: +case 1025: +case 1041: +switch (order) { +case 1: +case 1025: +case 1041: +bondFound = true; +break; +} +break; +case 65537: +case 65538: +switch (order) { +case 1: +case 65537: +case 65538: +bondFound = !patternBond.isNot; +break; +} +break; +case 2: +case 3: +case 4: +bondFound = (order == patternOrder); +break; +case 65: +bondFound = JS.SmilesSearch.isRingBond(this.target.ringSets, null, iAtom1, iAtom2); +break; +} +}return bondFound != patternBond.isNot; +}, "JS.SmilesBond,~N,~N,JU.Edge"); +Clazz_defineMethod(c$, "checkStereochemistry", +function(){ +for (var i = 0; i < this.measures.size(); i++) if (!this.measures.get(i).check()) return false; + +if (this.stereo != null && !this.stereo.checkStereoChemistry(this, this.v)) return false; +if (!this.haveBondStereochemistry) return true; +var lstAtrop = null; +var b = null; +for (var k = 0; k < this.ac; k++) { +var sAtom1 = this.patternAtoms[k]; +var sAtom2 = null; +var sAtomDirected1 = null; +var sAtomDirected2 = null; +var dir1 = 0; +var dir2 = 0; +var bondType = 0; +var nBonds = sAtom1.getBondCount(); +var isAtropisomer = false; +var indexOrder = true; +for (var j = 0; j < nBonds; j++) { +b = sAtom1.getBond(j); +var isAtom2 = (b.atom2 === sAtom1); +indexOrder = (b.atom1.index < b.atom2.index); +var type = b.getBondType(); +switch (type) { +case 65537: +case 65538: +if (!indexOrder) continue; +case 2: +if (isAtom2) continue; +sAtom2 = b.atom2; +bondType = type; +isAtropisomer = (type != 2); +if (isAtropisomer) dir1 = (b.isNot ? -1 : 1); +break; +case 1025: +case 1041: +sAtomDirected1 = (isAtom2 ? b.atom1 : b.atom2); +dir1 = (isAtom2 != (type == 1025) ? 1 : -1); +break; +} +} +if (isAtropisomer) { +if (this.setAtropicity) { +if (lstAtrop == null) lstAtrop = new JU.Lst(); +lstAtrop.addLast(b); +continue; +}var b1 = sAtom1.getBond(b.atropType[0]); +if (b1 == null) return false; +sAtomDirected1 = b1.getOtherAtom(sAtom1); +b1 = sAtom2.getBond(b.atropType[1]); +if (b1 == null) return false; +sAtomDirected2 = b1.getOtherAtom(sAtom2); +if (JU.Logger.debugging) JU.Logger.info("atropisomer check for atoms " + sAtomDirected1 + sAtom1 + " " + sAtom2 + sAtomDirected2); +} else { +if (sAtom2 == null || dir1 == 0) continue; +var a10 = sAtom1; +var nCumulene = 0; +while (sAtom2.getBondCount() == 2 && sAtom2.getValence() == 4) { +nCumulene++; +var e2 = sAtom2.getEdges(); +var e = e2[e2[0].getOtherNode(sAtom2) === a10 ? 1 : 0]; +a10 = sAtom2; +sAtom2 = e.getOtherNode(sAtom2); +} +if (nCumulene % 2 == 1) continue; +nBonds = sAtom2.getBondCount(); +for (var j = 0; j < nBonds && dir2 == 0; j++) { +b = sAtom2.getBond(j); +var type = b.getBondType(); +switch (type) { +case 1025: +case 1041: +var isAtom2 = (b.atom2 === sAtom2); +sAtomDirected2 = (isAtom2 ? b.atom1 : b.atom2); +dir2 = (isAtom2 != (type == 1025) ? 1 : -1); +break; +} +} +if (dir2 == 0) continue; +}var dbAtom1 = sAtom1.getMatchingAtom(); +var dbAtom2 = sAtom2.getMatchingAtom(); +var dbAtom1a = sAtomDirected1.getMatchingAtom(); +var dbAtom2a = sAtomDirected2.getMatchingAtom(); +if (dbAtom1a == null || dbAtom2a == null) return false; +if (this.haveSmilesTarget) JS.SmilesSearch.setTopoCoordinates(dbAtom1, dbAtom2, dbAtom1a, dbAtom2a, bondType); +var d = JS.SmilesMeasure.setTorsionData(dbAtom1a, dbAtom1, dbAtom2, dbAtom2a, this.v, isAtropisomer); +if (isAtropisomer) { +d *= dir1 * (bondType == 65537 ? 1 : -1) * (indexOrder ? 1 : -1) * 1 * -1; +if (JU.Logger.debugging) JU.Logger.info("atrop dihedral " + d + " " + sAtom1 + " " + sAtom2 + " " + b); +if (d < 1) return false; +} else { +if (this.v.vTemp1.dot(this.v.vTemp2) * dir1 * dir2 < 0) return false; +}} +if (this.setAtropicity) { +this.atropKeys = ""; +for (var i = 0; i < lstAtrop.size(); i++) this.atropKeys += "," + this.getAtropIndex(lstAtrop.get(i)); + +}return true; +}); +Clazz_defineMethod(c$, "getAtropIndex", +function(b){ +var nodes = new Array(4); +var s = ""; +nodes[1] = b.atom1.getMatchingAtom(); +nodes[2] = b.atom2.getMatchingAtom(); +var b1 = b.atom1.bonds; +var a; +for (var i = b.atom1.getBondCount(); --i >= 0; ) { +if ((a = b1[i].getOtherNode(b.atom1)) !== b.atom2) { +s += (i + 1); +nodes[0] = a.getMatchingAtom(); +break; +}} +b1 = b.atom2.bonds; +for (var i = 0; i <= b.atom2.getBondCount(); i++) { +if ((a = b1[i].getOtherNode(b.atom2)) !== b.atom1) { +s += (i + 1); +nodes[3] = a.getMatchingAtom(); +break; +}} +if (s.equals("22")) s = ""; +s = (JS.SmilesStereo.getAtropicStereoFlag(nodes) == 1 ? "" : "^") + s; +return (s + " ").substring(0, 3); +}, "JS.SmilesBond"); +c$.setTopoCoordinates = Clazz_defineMethod(c$, "setTopoCoordinates", +function(dbAtom1, dbAtom2, dbAtom1a, dbAtom2a, bondType){ +dbAtom1.set(-1, 0, 0); +dbAtom2.set(1, 0, 0); +if (bondType != 2) { +var bond = dbAtom1.getBondTo(dbAtom2); +var ok1 = dbAtom1.getBondedAtomIndex(bond.atropType[0]) == dbAtom1a.index; +var ok2 = dbAtom2.getBondedAtomIndex(bond.atropType[1]) == dbAtom2a.index; +var dir = (bond.order == 65537 ? 1 : -1) * (ok1 == ok2 ? 1 : -1); +dbAtom1a.set(-1, 1, 0); +dbAtom2a.set(1, 1, dir / 2.0 * 1 * -1); +return; +}var nBonds = 0; +var dir1 = 0; +var bonds = dbAtom1.getEdges(); +for (var k = bonds.length; --k >= 0; ) { +var bond = bonds[k]; +if (bond.order == 2) continue; +var atom = bond.getOtherNode(dbAtom1); +(atom).set(-1, (nBonds++ == 0) ? -1 : 1, 0); +var mode = (bond.getAtomIndex2() == dbAtom1.getIndex() ? nBonds : -nBonds); +switch (bond.order) { +case 1025: +dir1 = mode; +break; +case 1041: +dir1 = -mode; +} +} +var dir2 = 0; +nBonds = 0; +var atoms = new Array(2); +bonds = dbAtom2.getEdges(); +for (var k = bonds.length; --k >= 0; ) { +var bond = bonds[k]; +if (bond.order == 2) continue; +var atom = bond.getOtherNode(dbAtom2); +atoms[nBonds] = atom; +(atom).set(1, (nBonds++ == 0) ? 1 : -1, 0); +var mode = (bond.getAtomIndex2() == dbAtom2.getIndex() ? nBonds : -nBonds); +switch (bond.order) { +case 1025: +dir2 = mode; +break; +case 1041: +dir2 = -mode; +} +} +if ((dir1 * dir2 > 0) == (Math.abs(dir1) % 2 == Math.abs(dir2) % 2)) { +var y = (atoms[0]).y; +(atoms[0]).y = (atoms[1]).y; +(atoms[1]).y = y; +}}, "JS.SmilesAtom,JS.SmilesAtom,JS.SmilesAtom,JS.SmilesAtom,~N"); +Clazz_defineMethod(c$, "createTopoMap", +function(bsAro){ +var isForMF = (bsAro == null); +var nAtomsMissing = (this.autoAddImplicitH ? this.getMissingHydrogenCount() : 0); +var totalAtoms = this.ac + nAtomsMissing; +var atoms = new Array(totalAtoms); +this.target.nodes = atoms; +for (var i = 0, ptAtom = 0; i < this.ac; i++, ptAtom++) { +var sAtom = this.patternAtoms[i]; +var n = sAtom.explicitHydrogenCount; +if (n < 0 || !this.autoAddImplicitH) n = 0; +var atom = atoms[ptAtom] = new JS.SmilesAtom().setTopoAtom(sAtom.component, ptAtom, sAtom.symbol, sAtom.getCharge(), i); +atom.implicitHydrogenCount = n; +if (isForMF) continue; +atom.mapIndex = i; +atom.stereo = sAtom.stereo; +atom.setAtomicMass(sAtom.getAtomicMass()); +atom.bioAtomName = sAtom.bioAtomName; +atom.residueName = sAtom.residueName; +atom.residueChar = sAtom.residueChar; +atom.residueNumber = sAtom.residueNumber; +atom.atomNumber = sAtom.residueNumber; +atom.insCode = sAtom.insCode; +atom.hasDoubleBond = sAtom.hasDoubleBond; +atom.isAromatic = sAtom.isAromatic; +atom.atomClass = sAtom.atomClass; +atom.explicitHydrogenCount = 0; +atom.isBioAtom = sAtom.isBioAtom; +atom.bioType = sAtom.bioType; +atom.$isLeadAtom = sAtom.$isLeadAtom; +if (!isForMF && sAtom.isAromatic) bsAro.set(ptAtom); +sAtom.setMatchingAtom(null, ptAtom); +var bonds = new Array(sAtom.getBondCount() + n); +atom.setBonds(bonds); +while (--n >= 0) { +var atomH = atoms[++ptAtom] = new JS.SmilesAtom().setTopoAtom(atom.component, ptAtom, "H", 0, -1); +atomH.mapIndex = -i - 1; +atomH.setBonds( new Array(1)); +var b = new JS.SmilesBond(atom, atomH, 1, false); +if (JU.Logger.debugging) JU.Logger.info("" + b); +} +} +if (isForMF) return; +for (var i = 0; i < this.ac; i++) { +var sAtom = this.patternAtoms[i]; +var i1 = sAtom.getMatchingAtomIndex(); +var atom1 = atoms[i1]; +var n = sAtom.getBondCount(); +for (var j = 0; j < n; j++) { +var sBond = sAtom.getBond(j); +var firstAtom = (sBond.atom1 === sAtom); +if (firstAtom) { +var order = 1; +switch (sBond.order) { +case 1: +case 2: +case 3: +case 4: +case 1025: +case 1041: +case 65537: +case 65538: +case 112: +case 96: +order = sBond.order; +break; +case 17: +order = 514; +break; +} +var atom2 = atoms[sBond.atom2.getMatchingAtomIndex()]; +var b = new JS.SmilesBond(atom1, atom2, order, false); +b.isConnection = sBond.isConnection; +b.atropType = sBond.atropType; +b.isNot = sBond.isNot; +atom2.bondCount--; +if (JU.Logger.debugging) JU.Logger.info("" + b); +} else { +var atom2 = atoms[sBond.atom1.getMatchingAtomIndex()]; +var b = atom2.getBondTo(atom1); +atom1.addBond(b); +}} +} +for (var i = 0; i < totalAtoms; i++) { +var a = atoms[i]; +var bonds = a.bonds; +if (bonds.length < 2 || bonds[0].isFromPreviousTo(a)) continue; +for (var k = bonds.length; --k >= 1; ) if (bonds[k].isFromPreviousTo(a)) { +var b = bonds[k]; +bonds[k] = bonds[0]; +bonds[0] = b; +break; +} +} +if (!this.ignoreStereochemistry) for (var i = this.ac; --i >= 0; ) { +var sAtom = this.patternAtoms[i]; +if (sAtom.stereo != null) sAtom.stereo.fixStereo(sAtom); +} +}, "JU.BS"); +Clazz_defineMethod(c$, "normalizeAromaticity", +function(bsAromatic){ +var atoms = this.patternAtoms; +var ss = new JS.SmilesSearch(); +ss.noAromatic = this.noAromatic; +ss.setFlags(this.flags); +ss.target.nodes = atoms; +ss.target.ac = atoms.length; +ss.target.bsSelected = JU.BSUtil.newBitSet2(0, atoms.length); +var vRings = JU.AU.createArrayOfArrayList(4); +ss.setRingData(null, vRings, true); +bsAromatic.or(ss.target.bsAromatic); +if (!bsAromatic.isEmpty()) { +var lst = vRings[3]; +if (lst != null) for (var i = lst.size(); --i >= 0; ) { +var bs = lst.get(i); +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +var a = atoms[j]; +if (a.isAromatic || a.elementNumber == -2 || a.elementNumber == 0) continue; +a.setSymbol(a.symbol.toLowerCase()); +} +} +}}, "JU.BS"); +Clazz_defineMethod(c$, "getSelections", +function(){ +var ht = this.top.htNested; +if (ht == null || this.target.nodes.length == 0) return; +var htNew = new java.util.Hashtable(); +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getValue().toString(); +if (key.startsWith("select")) { +var bs = (htNew.containsKey(key) ? htNew.get(key) : this.target.nodes[0].findAtomsLike(key.substring(6))); +if (bs == null) bs = new JU.BS(); +htNew.put(key, bs); +entry.setValue(bs); +}} +}); +Clazz_defineMethod(c$, "findImplicitHydrogen", +function(atom){ +var edges = atom.getEdges(); +for (var i = edges.length; --i >= 0; ) { +var k = atom.getBondedAtomIndex(i); +if (this.target.nodes[k].getElementNumber() == 1 && !this.bsFound.get(k)) return this.target.nodes[k]; +} +return null; +}, "JU.Node"); +Clazz_defineMethod(c$, "toString", +function(){ +if (this.pattern0 != null) return this.pattern0; +if (this.targetSet) { +return "molecular formula: " + this.target.getMolecularFormula(true, null, false); +}var sb = new JU.SB().append(this.pattern); +sb.append("\nmolecular formula: " + this.getMolecularFormula(true, null, false)); +return sb.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bsSelected = null; +this.selectedAtomCount = 0; +this.ringSets = null; +this.ringCount = 0; +this.ringData = null; +this.ringDataMax = 0; +this.ringCounts = null; +this.ringConnections = null; +this.bsAromatic = null; +this.bsAromatic5 = null; +this.bsAromatic6 = null; +this.bsAromaticRings = null; +this.$hasRingData = false; +this.flags = -1; +Clazz_instantialize(this, arguments);}, JS.SmilesSearch, "SmilesTarget", JU.JmolMolecule); +Clazz_prepareFields (c$, function(){ +this.bsAromatic = new JU.BS(); +this.bsAromatic5 = new JU.BS(); +this.bsAromatic6 = new JU.BS(); +}); +Clazz_defineMethod(c$, "hasRingData", +function(flags){ +if (flags != this.flags) { +this.flags = flags; +this.$hasRingData = false; +}var ret = this.$hasRingData; +this.$hasRingData = true; +return ret; +}, "~N"); +Clazz_defineMethod(c$, "setAtoms", +function(atoms, ac, bs){ +this.$hasRingData = false; +this.nodes = atoms; +this.ac = ac; +this.selectedAtomCount = (bs == null ? ac : bs.cardinality()); +if (bs == null) { +bs = JU.BS.newN(ac); +bs.setBits(0, ac); +}this.bsSelected = bs; +}, "~A,~N,JU.BS"); +Clazz_defineMethod(c$, "checkAromaticDefined", +function(){ +JS.SmilesAromatic.checkAromaticDefined(this.nodes, this.bsSelected, this.bsAromatic); +}); +Clazz_defineMethod(c$, "getBSAromaticRings", +function(){ +if (this.bsAromaticRings == null) { +this.bsAromaticRings = new JU.BS(); +if (this.ringSets != null && this.bsAromatic != null) { +for (var i = this.ringSets.size(); --i >= 0; ) { +var bsRing = this.ringSets.get(i).clone(); +bsRing.andNot(this.bsAromatic); +if (bsRing.isEmpty()) this.bsAromaticRings.set(i); +} +}}return this.bsAromaticRings; +}); +Clazz_defineMethod(c$, "setRingData", +function(strictness, needRingData, ringDataMax){ +if (ringDataMax < 0) ringDataMax = 8; +if (strictness > 0 && ringDataMax < 6) ringDataMax = 6; +if (needRingData) { +this.ringCounts = Clazz_newIntArray (this.ac, 0); +this.ringConnections = Clazz_newIntArray (this.ac, 0); +this.ringData = new Array(ringDataMax + 1); +}this.ringSets = new JU.Lst(); +return this.ringDataMax = ringDataMax; +}, "~N,~B,~N"); +Clazz_defineMethod(c$, "finalizeAromatic", +function(lstAromatic){ +this.bsAromatic5.clearAll(); +this.bsAromatic6.clearAll(); +for (var i = lstAromatic.size(); --i >= 0; ) { +var bs = lstAromatic.get(i); +bs.and(this.bsAromatic); +switch (bs.cardinality()) { +case 5: +this.bsAromatic5.or(bs); +break; +case 6: +this.bsAromatic6.or(bs); +break; +} +} +}, "JU.Lst"); +Clazz_defineMethod(c$, "finalizeRingData", +function(){ +for (var i = this.bsSelected.nextSetBit(0); i >= 0; i = this.bsSelected.nextSetBit(i + 1)) { +var atom = this.nodes[i]; +var nb = atom.getBondCount(); +for (var k = nb; --k >= 0; ) { +if (this.ringCounts[atom.getBondedAtomIndex(k)] > 0) this.ringConnections[i]++; +} +} +}); +Clazz_defineMethod(c$, "hasDoubleBonds", +function(){ +for (var i = 0; i < this.nodes.length; i++) if (this.bsSelected == null || this.bsSelected.get(i)) { +var n = this.nodes[i]; +if (n.getElementNumber() == 1) { +continue; +}var nb = n.getBondCount(); +var edges = n.getEdges(); +for (var j = 0; j < nb; j++) { +if (edges[j].isCovalent() && edges[j].getBondType() != 1) return true; +} +} +return false; +}); +/*eoif3*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["java.util.Hashtable", "JU.BS", "JS.VTemp"], "JS.SmilesGenerator", ["JU.AU", "$.Lst", "$.SB", "JS.InvalidSmilesException", "$.SmilesAtom", "$.SmilesBond", "$.SmilesParser", "$.SmilesSearch", "$.SmilesStereo", "JU.BSUtil", "$.Elements", "$.JmolMolecule", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atoms = null; +this.ac = 0; +this.bsSelected = null; +this.bsAromatic = null; +this.flags = 0; +this.explicitHydrogen = 0; +this.ringSets = null; +this.vTemp = null; +this.nPairs = 0; +this.nPairsMax = 0; +this.bsBondsUp = null; +this.bsBondsDn = null; +this.bsToDo = null; +this.bsIgnoreHydrogen = new JU.BS(); +this.prevAtom = null; +this.prevSp2Atoms = null; +this.alleneStereo = null; +this.htRingsSequence = null; +this.htRings = null; +this.bsRingKeys = null; +this.bsIncludingH = null; +this.topologyOnly = false; +this.getAromatic = true; +this.addAtomComment = false; +this.noBioComment = false; +this.aromaticDouble = false; +this.noStereo = false; +this.openSMILES = false; +this.polySmilesCenter = null; +this.smilesStereo = null; +this.isPolyhedral = false; +this.aromaticRings = null; +this.sm = null; +this.iHypervalent = 0; +this.is2D = false; +this.haveSmilesAtoms = false; +this.noBranches = false; +this.allComponents = false; +this.ptAtom = 0; +this.ptSp2Atom0 = 0; +this.atemp = null; +this.chainCheck = 0; +Clazz_instantialize(this, arguments);}, JS, "SmilesGenerator", null); +Clazz_prepareFields (c$, function(){ +this.vTemp = new JS.VTemp(); +this.bsBondsUp = new JU.BS(); +this.bsBondsDn = new JU.BS(); +this.htRingsSequence = new java.util.Hashtable(); +this.htRings = new java.util.Hashtable(); +this.bsRingKeys = new JU.BS(); +}); +Clazz_defineMethod(c$, "getSmiles", +function(sm, atoms, ac, bsSelected, comment, flags){ +var ipt = bsSelected.nextSetBit(0); +if (ipt < 0) return ""; +this.haveSmilesAtoms = (Clazz_instanceOf(atoms[ipt],"JS.SmilesAtom") && (atoms[ipt]).definesStereo()); +this.sm = sm; +this.flags = flags; +this.atoms = atoms; +this.ac = ac; +bsSelected = JU.BSUtil.copy(bsSelected); +this.bsSelected = JU.BS.copy(bsSelected); +this.flags = flags = JS.SmilesSearch.addFlags(flags, comment == null ? "" : comment.toUpperCase()); +if ((flags & 1048576) == 1048576) return this.getBioSmiles(bsSelected, comment, flags); +this.openSMILES = ((flags & 5) == 5); +this.addAtomComment = ((flags & 131072) == 131072); +this.aromaticDouble = ((flags & 512) == 512); +this.explicitHydrogen = ((flags & 8192) == 8192 ? 8192 : (flags & 4096) == 4096 ? 4096 : 0); +if (this.explicitHydrogen == 8192) { +var bsHa = new JU.BS(); +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) { +var a = atoms[i]; +if (a.getCovalentHydrogenCount() == 3 && (a.getCovalentBondCount() == 4)) { +var doIgnore = true; +bsHa.clearAll(); +for (var j = a.getBondCount(); --j >= 0; ) { +var aj = a.getBondedAtomIndex(j); +if (atoms[aj].getElementNumber() == 1) { +doIgnore = (atoms[aj].getElementNumber() == 1); +if (doIgnore) bsHa.set(aj); + else break; +}if (doIgnore) { +this.bsIgnoreHydrogen.set(i); +bsSelected.andNot(bsHa); +}} +}} +}this.topologyOnly = ((flags & 16384) == 16384); +this.getAromatic = !((flags & 16) == 16); +this.noStereo = ((flags & 32) == 32); +this.isPolyhedral = ((flags & 65536) == 65536); +this.is2D = ((flags & 134217728) == 134217728); +this.noBranches = false; +this.allComponents = ((flags & 32768) == 32768); +return this.getSmilesComponent(atoms[ipt], bsSelected, true, false, false); +}, "JS.SmilesMatcher,~A,~N,JU.BS,~S,~N"); +Clazz_defineMethod(c$, "getBioSmiles", +function(bsSelected, comment, flags){ +this.addAtomComment = ((flags & 131072) == 131072); +var allowUnmatchedRings = ((flags & 3145728) == 3145728); +var noBioComments = ((flags & 34603008) == 34603008); +var crosslinkCovalent = ((flags & 5242880) == 5242880); +var crosslinkHBonds = ((flags & 9437184) == 9437184); +var addCrosslinks = (crosslinkCovalent || crosslinkHBonds); +var sb = new JU.SB(); +var bs = bsSelected; +if (comment != null && !this.noBioComment) sb.append("//* Jmol bioSMILES ").append(comment.$replace('*', '_')).append(" *//"); +var end = (this.noBioComment ? "" : "\n"); +var bsIgnore = new JU.BS(); +var lastComponent = null; +var groupString = ""; +var s; +var vLinks = new JU.Lst(); +try { +var len = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = this.atoms[i]; +var ch = a.getGroup1('?'); +var bioStructureName = a.getBioStructureTypeName(); +var unknown = (ch === ch.toLowerCase()); +if (end != null) { +if (sb.length() > 0) sb.append(end); +end = null; +len = 0; +if (bioStructureName.length > 0) { +var id = a.getChainID(); +if (id != 0 && !noBioComments) { +s = "//* chain " + a.getChainIDStr() + " " + bioStructureName + " " + a.getResno() + " *// "; +len = s.length; +sb.append(s); +}len++; +sb.append("~").appendC(bioStructureName.toLowerCase().charAt(0)).append("~"); +} else { +s = this.getSmilesComponent(a, bs, false, true, true); +if (s.equals(lastComponent)) { +end = ""; +continue; +}lastComponent = s; +var groupName = a.getGroup3(true); +var key; +if (noBioComments) { +key = "/" + s + "/"; +} else { +if (groupName != null) { +s = "//* " + groupName + " *//" + s; +}key = s + "//"; +}if (groupString.indexOf(key) >= 0) { +end = ""; +continue; +}groupString += key; +sb.append(s); +end = (noBioComments ? "." : ".\n"); +continue; +}}if (len >= 75 && !noBioComments) { +sb.append("\n "); +len = 2; +}if (this.addAtomComment) sb.append("\n//* [" + a.getGroup3(false) + "#" + a.getResno() + "] *//\t"); +if (unknown) { +this.addBracketedBioName(sb, a, bioStructureName.length > 0 ? ".0" : null, false); +} else { +sb.append(ch); +}len++; +if (addCrosslinks) { +a.getCrossLinkVector(vLinks, crosslinkCovalent, crosslinkHBonds); +for (var j = 0; j < vLinks.size(); j += 3) { +sb.append(":"); +s = this.getRingCache(vLinks.get(j).intValue(), vLinks.get(j + 1).intValue(), this.htRingsSequence); +sb.append(s); +len += 1 + s.length; +} +vLinks.clear(); +}a.getGroupBits(bsIgnore); +bs.andNot(bsIgnore); +var i2 = a.getOffsetResidueAtom("\0", 1); +if (i2 < 0 || !bs.get(i2)) { +if (!noBioComments) sb.append(" //* ").appendI(a.getResno()).append(" *//"); +if (i2 < 0 && (i2 = bs.nextSetBit(i + 1)) < 0) break; +if (len > 0) end = (noBioComments ? "." : ".\n"); +}i = i2 - 1; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +throw new JS.InvalidSmilesException("//* error: " + e.getMessage() + " *//"); +} else { +throw e; +} +} +if (!allowUnmatchedRings && !this.htRingsSequence.isEmpty()) { +this.dumpRingKeys(sb, this.htRingsSequence); +throw new JS.InvalidSmilesException("//* ?ring error? *//"); +}s = sb.toString(); +if (s.endsWith(".\n")) s = s.substring(0, s.length - 2); + else if (noBioComments && s.endsWith(".")) s = s.substring(0, s.length - 1); +return s; +}, "JU.BS,~S,~N"); +Clazz_defineMethod(c$, "addBracketedBioName", +function(sb, atom, atomName, addComment){ +sb.append("["); +if (atomName != null) { +var chain = atom.getChainIDStr(); +sb.append(atom.getGroup3(false)); +if (!atomName.equals(".0")) sb.append(atomName).append("#").appendI(atom.getElementNumber()); +if (addComment) { +sb.append("//* ").appendI(atom.getResno()); +if (chain.length > 0) sb.append(":").append(chain); +sb.append(" *//"); +}} else { +sb.append(JU.Elements.elementNameFromNumber(atom.getElementNumber())); +}sb.append("]"); +}, "JU.SB,JU.Node,~S,~B"); +Clazz_defineMethod(c$, "getSmilesComponent", +function(atom, bs, allowBioResidues, allowConnectionsToOutsideWorld, forceBrackets){ +var ret = ""; +while (true) { +if (atom == null) atom = this.atoms[bs.nextSetBit(0)]; +atom = this.checkFirstAtom(atom); +this.bsSelected = JU.JmolMolecule.getBranchBitSet(this.atoms, atom.getIndex(), JU.BSUtil.copy(bs), null, -1, true, allowBioResidues); +bs.andNot(this.bsSelected); +this.iHypervalent = -1; +for (var i = this.bsSelected.nextSetBit(0); i >= 0 && this.iHypervalent < 0; i = this.bsSelected.nextSetBit(i + 1)) { +if (this.atoms[i].getCovalentBondCount() > 4 || this.isPolyhedral) { +this.iHypervalent = i; +}} +this.bsIncludingH = JU.BSUtil.copy(this.bsSelected); +if (this.explicitHydrogen == 0) { +for (var j = this.bsSelected.nextSetBit(0); j >= 0; j = this.bsSelected.nextSetBit(j + 1)) { +var a = this.atoms[j]; +if (a.getAtomicAndIsotopeNumber() == 1 && a.getBondCount() > 0 && a.getBondedAtomIndex(0) != this.iHypervalent && !this.isExplicitOnly(this.atoms[a.getBondedAtomIndex(0)])) this.bsSelected.clear(j); +} +}this.bsAromatic = new JU.BS(); +if (!this.topologyOnly && this.bsSelected.cardinality() > 2) { +this.generateRingData(); +this.setBondDirections(); +}this.bsToDo = JU.BSUtil.copy(this.bsSelected); +var sb = new JU.SB(); +for (var i = this.bsToDo.nextSetBit(0); i >= 0; i = this.bsToDo.nextSetBit(i + 1)) { +if (this.atoms[i].getCovalentBondCount() > 4 || this.isPolyhedral || this.noBranches) { +if (atom == null) sb.append("."); +this.getSmilesAt(sb, this.atoms[i], allowConnectionsToOutsideWorld, false, forceBrackets, false); +atom = null; +}} +if (atom != null) while ((atom = this.getSmilesAt(sb, atom, allowConnectionsToOutsideWorld, true, forceBrackets, false)) != null) { +} +while (!this.bsToDo.isEmpty() || !this.htRings.isEmpty()) { +var e = this.htRings.values().iterator(); +if (e.hasNext()) { +atom = this.atoms[(e.next()[1]).intValue()]; +if (!this.bsToDo.get(atom.getIndex())) break; +} else { +atom = this.atoms[this.bsToDo.nextSetBit(0)]; +}sb.append("."); +this.prevSp2Atoms = this.alleneStereo = null; +this.prevAtom = null; +while ((atom = this.getSmilesAt(sb, atom, allowConnectionsToOutsideWorld, true, forceBrackets, false)) != null) { +} +} +if (!this.htRings.isEmpty()) { +this.dumpRingKeys(sb, this.htRings); +throw new JS.InvalidSmilesException("//* ?ring error? *//\n" + sb); +}var s = sb.toString(); +if (s.indexOf("^-") >= 0) { +var s0 = s; +try { +var keys = this.sm.getAtropisomerKeys(s, this.atoms, this.ac, this.bsSelected, this.bsAromatic, this.flags); +for (var i = 1; i < keys.length; ) { +var pt = s.indexOf("^-"); +if (pt < 0) break; +s = s.substring(0, pt + 1) + keys.substring(i, i + 3).trim() + s.substring(pt + 1); +i += 3; +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +s = s0; +} else { +throw e; +} +} +}ret += s; +var ipt = bs.nextSetBit(0); +if (ipt < 0 || !this.allComponents) break; +ret += "."; +atom = null; +} +return ret; +}, "JU.Node,JU.BS,~B,~B,~B"); +Clazz_defineMethod(c$, "checkFirstAtom", +function(atom){ +if (this.explicitHydrogen == 0 && atom.getAtomicAndIsotopeNumber() == 1 && atom.getEdges().length > 0) atom = this.atoms[atom.getBondedAtomIndex(0)]; +var a = atom; +var aprev = null; +while (true) { +if (a.getCovalentBondCount() != 2) break; +var bonds = a.getEdges(); +if (bonds[0].getBondType() != 2 || bonds[1].getBondType() != 2) break; +var anext = bonds[0].getOtherNode(a); +if (anext === aprev) anext = bonds[1].getOtherNode(a); +aprev = a; +a = anext; +} +return (a == null ? atom : a); +}, "JU.Node"); +Clazz_defineMethod(c$, "generateRingData", +function(){ +var search = JS.SmilesParser.newSearch("[r500]", true, true); +search.target.setAtoms(this.atoms, this.ac, this.bsSelected); +search.setFlags(this.flags); +if (!search.needRingData && search.target.hasDoubleBonds()) search.needRingData = true; +search.ringDataMax = 7; +search.flags = this.flags; +var vRings = JU.AU.createArrayOfArrayList(4); +search.setRingData(null, vRings, true); +this.bsAromatic = search.target.bsAromatic; +this.ringSets = search.target.ringSets; +this.aromaticRings = vRings[3]; +}); +Clazz_defineMethod(c$, "getBondStereochemistry", +function(bond, atomFrom){ +if (bond == null) return '\0'; +var i = bond.index; +var isFirst = (atomFrom == null || bond.getAtomIndex1() == atomFrom.getIndex()); +return (this.bsBondsUp.get(i) ? (isFirst ? '/' : '\\') : this.bsBondsDn.get(i) ? (isFirst ? '\\' : '/') : '\0'); +}, "JU.Edge,JU.SimpleNode"); +Clazz_defineMethod(c$, "setBondDirections", +function(){ +var bsDone = new JU.BS(); +var edges = Clazz_newArray(2, 3, null); +for (var i = this.bsSelected.nextSetBit(0); i >= 0; i = this.bsSelected.nextSetBit(i + 1)) { +var atom1 = this.atoms[i]; +var bonds = atom1.getEdges(); +for (var k = 0; k < bonds.length; k++) { +var bond = bonds[k]; +var index = bond.index; +var atom2; +if (bsDone.get(index) || bond.getCovalentOrder() != 2 || JS.SmilesSearch.isRingBond(this.ringSets, null, i, (atom2 = bond.getOtherNode(atom1)).getIndex())) continue; +bsDone.set(index); +var nCumulene = 0; +var a10 = atom1; +while (atom2.getCovalentBondCount() == 2 && atom2.getValence() == 4) { +var e2 = atom2.getEdges(); +var e = e2[e2[0].getOtherNode(atom2) === a10 ? 1 : 0]; +bsDone.set(e.index); +a10 = atom2; +atom2 = e.getOtherNode(atom2); +nCumulene++; +} +if (nCumulene % 2 == 1) continue; +var b0 = null; +var a0 = null; +var i0 = 0; +var atom12 = Clazz_newArray(-1, [atom1, atom2]); +var edgeCount = 1; +for (var j = 0; j < 2 && edgeCount > 0 && edgeCount < 3; j++) { +edgeCount = 0; +var atomA = atom12[j]; +var bb = (atomA).getEdges(); +var explicitH = this.explicitHydrogen > 0 || this.isExplicitOnly(atomA); +for (var b = 0; b < bb.length; b++) { +var other; +if (bb[b].getCovalentOrder() != 1 || !explicitH && (other = bb[b].getOtherNode(atomA)).getElementNumber() == 1 && other.getIsotopeNumber() == 0) continue; +edges[j][edgeCount++] = bb[b]; +if (this.getBondStereochemistry(bb[b], atomA) != '\0') { +b0 = bb[b]; +i0 = j; +}} +} +if (edgeCount == 3 || edgeCount == 0) continue; +if (b0 == null) { +i0 = 0; +b0 = edges[i0][0]; +this.bsBondsUp.set(b0.index); +}var aA = atom12[i0]; +var c0 = this.getBondStereochemistry(b0, aA); +a0 = b0.getOtherNode(aA); +if (a0 == null) continue; +for (var j = 0; j < 2; j++) { +var aB = atom12[j]; +for (var jj = 0; jj < 2; jj++) { +var b1 = edges[j][jj]; +if (b1 == null || b1 === b0) continue; +var bi = b1.index; +var a1 = b1.getOtherNode(aB); +if (a1 == null) continue; +var c1 = this.getBondStereochemistry(b1, aB); +var isOpposite; +if (this.haveSmilesAtoms) { +var isop = (a0).isStereoOpposite(a1.getIndex(), aA.getIndex(), aB.getIndex()); +if (isop == null) { +if (JU.Logger.debugging) JU.Logger.debug("SmilesGenerator could not find stereo for " + a0 + "/" + a1); +continue; +}isOpposite = isop.booleanValue(); +} else { +isOpposite = JS.SmilesStereo.isDiaxial(aA, aB, a0, a1, this.vTemp, 0); +}if (c1 == '\0' || (c1 != c0) == isOpposite) { +var isUp = (c0 == '\\' && isOpposite || c0 == '/' && !isOpposite); +if (isUp == (b1.getAtomIndex1() != a1.getIndex())) { +this.bsBondsUp.set(bi); +} else { +this.bsBondsDn.set(bi); +}} else { +this.bsBondsUp.clear(bi); +this.bsBondsDn.clear(bi); +JU.Logger.error("BOND STEREOCHEMISTRY PARITY ERROR-stereochemistry for bond " + bi + ""); +}if (JU.Logger.debugging) JU.Logger.debug(this.getBondStereochemistry(b0, aA) + " " + a0.getIndex() + " " + a1.getIndex() + " " + this.getBondStereochemistry(b1, aB)); +} +} +} +} +}); +Clazz_defineMethod(c$, "getSmilesAt", +function(sb, atom, allowConnectionsToOutsideWorld, allowBranches, forceBrackets, isBranch){ +var atomIndex = atom.getIndex(); +if (!this.bsToDo.get(atomIndex)) return null; +this.ptAtom++; +this.bsToDo.clear(atomIndex); +var includeHs = (atomIndex == this.iHypervalent || this.explicitHydrogen != 0 && !this.bsIgnoreHydrogen.get(atomIndex)); +var explicitHs = this.isExplicitOnly(atom); +var isAromatic = this.bsAromatic.get(atomIndex); +var isExtension = (!this.bsSelected.get(atomIndex)); +var prevIndex = (this.prevAtom == null ? -1 : this.prevAtom.getIndex()); +var sp2Atoms = this.prevSp2Atoms; +var havePreviousSp2Atoms = (sp2Atoms != null); +var atomicNumber = atom.getElementNumber(); +var nH = 0; +var prevStereo = this.alleneStereo; +this.alleneStereo = null; +var v = new JU.Lst(); +var bondNext = null; +var bondPrev = null; +var bonds = atom.getEdges(); +if (!isBranch && this.polySmilesCenter != null) { +allowBranches = false; +this.sortPolyBonds(atom, this.prevAtom, this.polySmilesCenter); +}var aH = null; +var stereoFlag = (isAromatic ? 10 : 0); +if (JU.Logger.debugging) JU.Logger.debug(sb.toString()); +if (bonds != null) { +for (var i = 0, nb = bonds.length; i < nb; i++) { +var bond = bonds[i]; +if (!bond.isCovalent()) continue; +var atom1 = bonds[i].getOtherNode(atom); +var index1 = atom1.getIndex(); +if (index1 == prevIndex) { +bondPrev = bonds[i]; +continue; +}var isH = !includeHs && !explicitHs && (atom1.getElementNumber() == 1 && atom1.getIsotopeNumber() <= 0); +if (!this.bsIncludingH.get(index1)) { +if (isH || !allowConnectionsToOutsideWorld || !this.bsSelected.get(atomIndex)) continue; +this.bsToDo.set(index1); +}if (isH) { +aH = atom1; +nH++; +if (nH > 1) stereoFlag = 10; +} else { +v.addLast(bonds[i]); +}} +}if (nH > 1) sp2Atoms = null; +var nSp2Atoms = (sp2Atoms != null ? 2 : 0); +if (sp2Atoms == null && !isAromatic && nH <= 1) sp2Atoms = new Array(5); +var strPrev = null; +if (bondPrev != null) { +strPrev = this.getBondOrder(bondPrev, atomIndex, prevIndex, isAromatic); +if (sp2Atoms != null && !havePreviousSp2Atoms) { +sp2Atoms[nSp2Atoms++] = this.prevAtom; +}}if (sp2Atoms != null && !havePreviousSp2Atoms) { +this.ptSp2Atom0 = this.ptAtom; +}if (sp2Atoms != null && nH == 1) sp2Atoms[nSp2Atoms++] = aH; +var nMax = 0; +var bsBranches = new JU.BS(); +var nBonds = v.size(); +if (allowBranches) { +for (var i = 0; i < nBonds; i++) { +var bond = v.get(i); +var a = bond.getOtherNode(atom); +var n = a.getCovalentBondCount() - (includeHs || this.isExplicitOnly(a) ? 0 : (a).getCovalentHydrogenCount()); +var order = bond.getCovalentOrder(); +var isEndPoint = this.htRings.containsKey(JS.SmilesGenerator.getRingKey(a.getIndex(), atomIndex)); +if (isEndPoint) continue; +var check = (bondNext != null || i < nBonds - 1); +if (n == 1 && check) { +bsBranches.set(bond.index); +} else if ((order > 1 || n > nMax)) { +nMax = (order > 1 ? 1000 + order : n); +bondNext = bond; +}} +}var atomNext = (bondNext == null ? null : bondNext.getOtherNode(atom)); +var orderNext = (bondNext == null ? 0 : bondNext.getCovalentOrder()); +var stereo = new Array(7); +if (stereoFlag < 7 && bondPrev != null) { +if (havePreviousSp2Atoms && bondPrev.getCovalentOrder() == 2 && orderNext == 2 && sp2Atoms[1] != null) { +stereo[stereoFlag++] = sp2Atoms[0]; +stereo[stereoFlag++] = sp2Atoms[1]; +} else { +stereo[stereoFlag++] = this.prevAtom; +}}if (stereoFlag < 7 && nH == 1) stereo[stereoFlag++] = aH; +var deferStereo = false; +var chBond = this.getBondStereochemistry(bondPrev, this.prevAtom); +if (strPrev != null || chBond != '\0') { +if (chBond != '\0') strPrev = "" + chBond; +sb.append(strPrev); +}var stereoFlag0 = stereoFlag; +var nSp2Atoms0 = nSp2Atoms; +var sbBranches = new JU.SB(); +var vBranches = new JU.Lst(); +for (var i = 0; i < v.size(); i++) { +var bond = v.get(i); +if (!bsBranches.get(bond.index)) continue; +var a = bond.getOtherNode(atom); +var s2 = new JU.SB(); +this.prevAtom = atom; +this.prevSp2Atoms = this.alleneStereo = null; +var bond0t = bondNext; +var ptSp2Atom0t = this.ptSp2Atom0; +var ptAtomt = this.ptAtom; +this.getSmilesAt(s2, a, allowConnectionsToOutsideWorld, allowBranches, forceBrackets, true); +bondNext = bond0t; +this.ptAtom = ptAtomt; +this.ptSp2Atom0 = ptSp2Atom0t; +var branch = s2.toString(); +v.removeItemAt(i--); +if (bondNext == null) vBranches.addLast(branch); + else sbBranches.append("(").append(branch).append(")"); +if (stereoFlag < 7) stereo[stereoFlag++] = a; +if (sp2Atoms != null && nSp2Atoms < 5) sp2Atoms[nSp2Atoms++] = a; +} +var sbRings = new JU.SB(); +var stereoFlag1 = stereoFlag; +var nSp2Atoms1 = nSp2Atoms; +var atat = null; +if (!allowBranches && !this.noStereo && this.polySmilesCenter == null && (v.size() == 5 || v.size() == 6)) { +atat = this.sortInorganic(atom, v, this.vTemp); +}for (var i = 0; i < v.size(); i++) { +var bond = v.get(i); +if (bond === bondNext) continue; +var a = bond.getOtherNode(atom); +var ia = a.getIndex(); +strPrev = this.getBondOrder(bond, atomIndex, ia, isAromatic); +chBond = this.getBondStereochemistry(bond, atom); +if (!deferStereo && chBond != '\0') { +strPrev = "" + chBond; +}sbRings.append(strPrev); +sbRings.append(this.getRingCache(atomIndex, ia, this.htRings)); +if (stereoFlag < 7) stereo[stereoFlag++] = a; +if (sp2Atoms != null && nSp2Atoms < 5) sp2Atoms[nSp2Atoms++] = a; +} +if (stereoFlag0 != stereoFlag1 && stereoFlag1 != stereoFlag) this.swapArray(stereo, stereoFlag0, stereoFlag1, stereoFlag); +if (nSp2Atoms0 != nSp2Atoms1 && nSp2Atoms1 != nSp2Atoms) this.swapArray(sp2Atoms, nSp2Atoms0, nSp2Atoms1, nSp2Atoms); +if (havePreviousSp2Atoms && stereoFlag == 2 && orderNext == 2) { +var nc = (this.ptAtom - this.ptSp2Atom0); +var nb = atomNext.getCovalentBondCount(); +var lastIsN = (atomNext.getElementNumber() == 7); +if (nc % 2 == 0) { +stereoFlag = 8; +} else { +if (nb == 3 || nb == 2 && lastIsN) { +bonds = atomNext.getEdges(); +for (var k = 0; k < bonds.length; k++) { +var index = atomNext.getBondedAtomIndex(k); +if (bonds[k].isCovalent() && index != atomIndex) stereo[stereoFlag++] = this.atoms[index]; +} +if (nb == 2) stereo[stereoFlag++] = atomNext; +if (stereoFlag == 4) { +this.alleneStereo = stereo; +if ((stereo[3]).getAtomicAndIsotopeNumber() == 1) { +var n = stereo[3]; +stereo[3] = stereo[2]; +stereo[2] = n; +}}}}nSp2Atoms = 0; +} else if (atomNext != null && stereoFlag < 7) { +stereo[stereoFlag++] = atomNext; +}if (prevStereo != null) { +if (prevStereo[3] !== stereo[2]) { +var ptat = sb.lastIndexOf("@]="); +if (ptat > 0) { +var trail = sb.substring(ptat); +sb.setLength(sb.charAt(ptat - 1) == '@' ? ptat - 1 : ptat + 1); +sb.append(trail); +}}prevStereo = null; +}if (this.haveSmilesAtoms && atat == null && (stereoFlag == 4)) { +atat = (atom).getStereoAtAt(stereo); +}var charge = atom.getFormalCharge(); +var isotope = atom.getIsotopeNumber(); +var valence = atom.getValence(); +var osclass = (this.openSMILES ? (atom).getFloatProperty("property_atomclass") : NaN); +var atomName = atom.getAtomName(); +var groupType = (atom).getBioStructureTypeName(); +if (this.addAtomComment) sb.append("\n//* " + atom.toString() + " *//\t"); +if (this.topologyOnly) { +sb.append("*"); +} else if (isExtension && groupType.length != 0 && atomName.length != 0) { +this.addBracketedBioName(sb, atom, "." + atomName, false); +} else { +sb.append(JS.SmilesAtom.getAtomLabel(atomicNumber, isotope, (forceBrackets ? -1 : valence), charge, osclass, nH, isAromatic, atat != null ? atat : this.noStereo ? null : this.checkStereoPairs(atom, this.alleneStereo == null ? atomIndex : -1, stereo, stereoFlag, prevIndex == -1), this.is2D)); +}sb.appendSB(sbRings); +if (bondNext != null) { +sb.appendSB(sbBranches); +} else { +var n = vBranches.size() - 1; +if (n >= 0) { +for (var i = 0; i < n; i++) sb.append("(").append(vBranches.get(i)).append(")"); + +sb.append(vBranches.get(n)); +}return null; +}if (sp2Atoms != null && orderNext == 2 && (nSp2Atoms == 1 || nSp2Atoms == 2)) { +if (sp2Atoms[0] == null) sp2Atoms[0] = atom; +if (sp2Atoms[1] == null) sp2Atoms[1] = atom; +} else { +sp2Atoms = null; +nSp2Atoms = 0; +}this.prevSp2Atoms = sp2Atoms; +this.prevAtom = atom; +return atomNext; +}, "JU.SB,JU.SimpleNode,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "isExplicitOnly", +function(atom){ +return (atom.getElementNumber() == 7 && atom.getCovalentBondCount() == 2 || atom.getElementNumber() == 6 && atom.getIsotopeNumber() == 17); +}, "JU.SimpleNode"); +Clazz_defineMethod(c$, "swapArray", +function(a, i0, i1, i2){ +var n = i1 - i0; +if (this.atemp == null || this.atemp.length < n) this.atemp = new Array(n); +for (var p = n, i = i1; p > 0; ) this.atemp[--p] = a[--i]; + +for (var i = i1; i < i2; i++) a[i - n] = a[i]; + +for (var p = n, i = i2; p > 0; ) a[--i] = this.atemp[--p]; + +}, "~A,~N,~N,~N"); +Clazz_defineMethod(c$, "getBondOrder", +function(bondPrev, atomIndex, prevIndex, isAromatic){ +if (this.topologyOnly) return ""; +if ((bondPrev.order & 65537) == 65537) { +return "^-"; +}var border = Math.max(bondPrev.isPartial() ? 1 : 0, bondPrev.getCovalentOrder()); +return (!isAromatic || !this.bsAromatic.get(prevIndex) ? JS.SmilesBond.getBondOrderString(border) : border == 1 && !this.isSameAromaticRing(atomIndex, prevIndex) ? "-" : this.aromaticDouble && (border == 2 || border == 514) ? "=" : ""); +}, "JU.Edge,~N,~N,~B"); +Clazz_defineMethod(c$, "isSameAromaticRing", +function(a1, a2){ +var bs; +for (var i = this.aromaticRings.size(); --i >= 0; ) if ((bs = this.aromaticRings.get(i)).get(a1) && bs.get(a2)) return true; + +return false; +}, "~N,~N"); +Clazz_defineMethod(c$, "sortPolyBonds", +function(atom, refAtom, center){ +if (this.smilesStereo == null) try { +this.smilesStereo = JS.SmilesStereo.newStereo(null); +} catch (e) { +if (Clazz_exceptionOf(e,"JS.InvalidSmilesException")){ +} else { +throw e; +} +} +this.smilesStereo.sortPolyBondsByStereo(atom, refAtom, center, atom.getEdges(), this.vTemp.vA); +}, "JU.SimpleNode,JU.SimpleNode,JU.P3"); +Clazz_defineMethod(c$, "sortInorganic", +function(atom, v, vTemp){ +var atomIndex = atom.getIndex(); +var n = v.size(); +var axialPairs = new JU.Lst(); +var bonds = new JU.Lst(); +var a1; +var a2; +var a01 = null; +var a02 = null; +var bond1; +var bond2; +var bsDone = new JU.BS(); +var pair0 = null; +var stereo = new Array(6); +var isOK = true; +var s = ""; +var naxial = 0; +for (var i = 0; i < n; i++) { +bond1 = v.get(i); +stereo[0] = a1 = bond1.getOtherNode(atom); +if (i == 0) s = this.addStereoCheck(0, atomIndex, a1, "", null); + else if (isOK && this.addStereoCheck(0, atomIndex, a1, s, null) != null) isOK = false; +if (bsDone.get(i)) continue; +bsDone.set(i); +var isAxial = false; +for (var j = i + 1; j < n; j++) { +if (bsDone.get(j)) continue; +bond2 = v.get(j); +a2 = bond2.getOtherNode(atom); +if (JS.SmilesStereo.isDiaxial(atom, atom, a1, a2, vTemp, -0.95)) { +switch (++naxial) { +case 1: +a01 = a1; +break; +case 2: +a02 = a1; +break; +case 3: +if (JS.SmilesStereo.getHandedness(a02, a01, a1, atom, vTemp) == 2) { +var b = bond1; +bond1 = bond2; +bond2 = b; +}break; +} +axialPairs.addLast( Clazz_newArray(-1, [bond1, bond2])); +isAxial = true; +bsDone.set(j); +break; +}} +if (!isAxial) bonds.addLast(bond1); +} +var npAxial = axialPairs.size(); +if (isOK || n == 6 && npAxial != 3 || n == 5 && npAxial == 0) return ""; +pair0 = axialPairs.get(0); +bond1 = pair0[0]; +stereo[0] = bond1.getOtherNode(atom); +v.clear(); +v.addLast(bond1); +if (npAxial > 1) bonds.addLast(axialPairs.get(1)[0]); +if (npAxial == 3) bonds.addLast(axialPairs.get(2)[0]); +if (npAxial > 1) bonds.addLast(axialPairs.get(1)[1]); +if (npAxial == 3) bonds.addLast(axialPairs.get(2)[1]); +for (var i = 0; i < bonds.size(); i++) { +bond1 = bonds.get(i); +v.addLast(bond1); +stereo[i + 1] = bond1.getOtherNode(atom); +} +v.addLast(pair0[1]); +stereo[n - 1] = pair0[1].getOtherNode(atom); +return JS.SmilesStereo.getStereoFlag(atom, stereo, n, vTemp, this.is2D); +}, "JU.SimpleNode,JU.Lst,JS.VTemp"); +Clazz_defineMethod(c$, "checkStereoPairs", +function(atom, atomIndex, stereo, stereoFlag, isFirst){ +if (stereoFlag == 10 || stereoFlag < (this.is2D ? 3 : 4)) return ""; +if (this.explicitHydrogen == 0 && atomIndex >= 0 && stereoFlag == 4) { +if (atom.getElementNumber() <= 17) { +var s = ""; +for (var i = 0; i < 4; i++) { +if ((s = this.addStereoCheck(0, atomIndex, stereo[i], s, JU.BSUtil.newAndSetBit(atomIndex))) == null) { +return ""; +}} +}}if (this.is2D) { +var dir = (stereoFlag == 4 || !isFirst ? 1 : -1); +var bonds = atom.getEdges(); +var c = null; +for (var i = atom.getBondCount(); --i >= 0; ) { +var b = bonds[i]; +if (atom === b.getAtom(0)) { +switch (b.getBondType()) { +case 1025: +c = JS.SmilesGenerator.setStereoTemp(null, stereo, b.getAtom(1), dir); +break; +case 1041: +c = JS.SmilesGenerator.setStereoTemp(null, stereo, b.getAtom(1), -dir); +break; +} +}} +if (c == null) return ""; +if (stereoFlag == 3) { +stereo[stereoFlag++] = JS.SmilesGenerator.setStereoTemp(atom, stereo, c, 0); +}}return JS.SmilesStereo.getStereoFlag(atom, stereo, stereoFlag, this.vTemp, this.is2D); +}, "JU.SimpleNode,~N,~A,~N,~B"); +c$.setStereoTemp = Clazz_defineMethod(c$, "setStereoTemp", +function(atom, stereo, a, z){ +var b = new JS.SmilesAtom(); +for (var i = 0; i < 4; i++) { +var isA = (stereo[i] === a); +if (atom == null) { +if (isA) { +var c = a.getXYZ(); +b.set(c.x, c.y, z); +return stereo[i] = b; +}} else if (i < 3) { +b.add(stereo[i]); +}} +if (atom == null) return null; +b.scale(-0.33333334); +b.scaleAdd2(2, atom, b); +return b; +}, "JU.SimpleNode,~A,JU.SimpleNode,~N"); +Clazz_defineMethod(c$, "addStereoCheck", +function(level, atomIndex, atom, s, bsDone){ +if (bsDone != null) bsDone.set(atomIndex); +var n = (atom).getAtomicAndIsotopeNumber(); +if (n == 1 && this.explicitHydrogen == 0) return "H"; +var nx = atom.getCovalentBondCount(); +var nhcov = (atom).getCovalentHydrogenCount(); +var nh = (n == 6 && this.explicitHydrogen != 0 ? nhcov : 0); +if (n == 6 || n == 16 ? nx != 4 : n == 1 || nx > 1) return s + (++this.chainCheck); +var sa = ";" + level + "/" + n + "/" + nh + "/" + nx + (level == 0 ? "," : "_"); +if (n == 6 || n == 16) { +switch (nh) { +case 1: +return s + sa + (++this.chainCheck); +case 0: +case 2: +if (bsDone == null) return s; +var edges = (atom).getEdges(); +var s2 = ""; +var sa2 = ""; +var nunique = (nh == 2 ? 0 : 3); +for (var j = atom.getBondCount(); --j >= 0; ) { +var a2 = edges[j].getOtherNode(atom); +var i2 = a2.getIndex(); +if (bsDone.get(i2) || !edges[j].isCovalent()) continue; +bsDone.set(i2); +sa2 = this.addStereoCheck(level + 1, atom.getIndex(), a2, "", bsDone.clone()); +if (s2.indexOf(sa2) >= 0) nunique--; +s2 += sa2; +} +if (nunique == 3) { +return s + sa + (++this.chainCheck); +}sa = (sa + s2).$replace(',', '_'); +if (level > 0) return s + sa; +break; +case 3: +break; +} +}if (s.indexOf(sa) >= 0) { +if (nhcov == 3) { +var ndt = 0; +for (var j = 0; j < nx && ndt < 3; j++) { +var ia = (atom).getBondedAtomIndex(j); +if (ia == atomIndex) continue; +ndt += this.atoms[ia].getAtomicAndIsotopeNumber(); +} +if (ndt > 3) return s; +}return null; +}return s + sa; +}, "~N,~N,JU.SimpleNode,~S,JU.BS"); +Clazz_defineMethod(c$, "getRingCache", +function(i0, i1, ht){ +var key = JS.SmilesGenerator.getRingKey(i0, i1); +var o = ht.get(key); +var s = (o == null ? null : o[0]); +if (s == null) { +this.bsRingKeys.set(++this.nPairs); +this.nPairsMax = Math.max(this.nPairs, this.nPairsMax); +ht.put(key, Clazz_newArray(-1, [s = this.getRingPointer(this.nPairs), Integer.$valueOf(i1), Integer.$valueOf(this.nPairs)])); +if (JU.Logger.debugging) JU.Logger.debug("adding for " + i0 + " ring key " + this.nPairs + ": " + key); +} else { +ht.remove(key); +var nPair = (o[2]).intValue(); +this.bsRingKeys.clear(nPair); +if (this.bsRingKeys.nextSetBit(0) < 0 && (this.nPairsMax == 2 || this.nPairsMax == 99)) { +this.nPairsMax = this.nPairs = (this.nPairsMax == 99 ? 10 : 0); +}if (JU.Logger.debugging) JU.Logger.debug("using ring key " + key); +}return s; +}, "~N,~N,java.util.Map"); +Clazz_defineMethod(c$, "getRingPointer", +function(i){ +return (i < 10 ? "" + i : i < 100 ? "%" + i : "%(" + i + ")"); +}, "~N"); +Clazz_defineMethod(c$, "dumpRingKeys", +function(sb, ht){ +JU.Logger.info(sb.toString() + "\n\n"); +for (var key, $key = ht.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) JU.Logger.info("unmatched connection: " + key); + +}, "JU.SB,java.util.Map"); +c$.getRingKey = Clazz_defineMethod(c$, "getRingKey", +function(i0, i1){ +return Math.min(i0, i1) + "_" + Math.max(i0, i1); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.SmilesAromatic", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.Measure", "$.V3", "JS.SmilesRing", "$.SmilesRingSet", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz_declareType(JS, "SmilesAromatic", null); +c$.setAromatic = Clazz_defineMethod(c$, "setAromatic", +function(n, jmolAtoms, bsSelected, vR, bsAromatic, strictness, isOpenSMILES, justCheckBonding, checkExplicit, v, vOK, lstSP2, eCounts, doTestAromatic){ +var doCheck = (isOpenSMILES || strictness > 0); +if (!doTestAromatic) { +for (var r = vR.size(); --r >= 0; ) { +var bs = JU.BSUtil.copy(vR.get(r)); +bs.and(bsAromatic); +if (bs.cardinality() == n) vOK.addLast(bs); +} +return; +}for (var r = vR.size(); --r >= 0; ) { +var bs = vR.get(r); +var isOK = JS.SmilesAromatic.isSp2Ring(n, jmolAtoms, bsSelected, bs, (justCheckBonding ? 3.4028235E38 : strictness > 0 ? 0.1 : 0.01), checkExplicit, strictness == 0); +if (!isOK) continue; +bsAromatic.or(bs); +if (doCheck) { +var edges = new JU.Lst(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = jmolAtoms[i]; +var aedges = a.getEdges(); +var ai = a.getIndex(); +for (var j = aedges.length; --j >= 0; ) { +var a2 = aedges[j].getOtherNode(a); +var a2i = a2.getIndex(); +if (a2i > ai && bs.get(a2i)) edges.addLast(aedges[j]); +} +} +switch (JS.SmilesAromatic.checkHueckelAromatic(n, jmolAtoms, bsAromatic, bs, strictness, eCounts)) { +case -1: +continue; +case 0: +isOK = false; +case 1: +if (lstSP2 != null) lstSP2.addLast( new JS.SmilesRing(n, bs, edges, isOK)); +if (!isOK) continue; +} +}vOK.addLast(bs); +} +}, "~N,~A,JU.BS,JU.Lst,JU.BS,~N,~B,~B,~B,JS.VTemp,JU.Lst,JU.Lst,~A,~B"); +c$.checkAromaticDefined = Clazz_defineMethod(c$, "checkAromaticDefined", +function(jmolAtoms, bsSelected, bsAromatic){ +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) { +var bonds = jmolAtoms[i].getEdges(); +for (var j = 0; j < bonds.length; j++) { +switch (bonds[j].getBondType()) { +case 515: +case 514: +case 513: +bsAromatic.set(bonds[j].getAtomIndex1()); +bsAromatic.set(bonds[j].getAtomIndex2()); +} +} +} +}, "~A,JU.BS,JU.BS"); +c$.isSp2Ring = Clazz_defineMethod(c$, "isSp2Ring", +function(n, atoms, bsSelected, bs, cutoff, checkExplicit, allowSOxide){ +if (checkExplicit) { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (atoms[i].getCovalentBondCount() > 3) return false; + +} else { +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) if (atoms[i].getCovalentBondCountPlusMissingH() > 3) return false; + +}if (cutoff == 3.4028235E38) return true; +if (cutoff <= 0) cutoff = 0.01; +var vNorm = null; +var vTemp = null; +var vMean = null; +var nPoints = bs.cardinality(); +var vNorms = new Array(nPoints * 2); +var nNorms = 0; +var maxDev = (1 - cutoff * 5); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var ringAtom = atoms[i]; +var bonds = ringAtom.getEdges(); +var iSub = -1; +var r1 = -1; +var r2 = -1; +for (var k = bonds.length; --k >= 0; ) { +var iAtom = ringAtom.getBondedAtomIndex(k); +if (!bsSelected.get(iAtom)) continue; +if (!bs.get(iAtom)) { +if (ringAtom.getElementNumber() == 16) { +if (!allowSOxide) return false; +iAtom = -1; +}iSub = iAtom; +} else if (r1 < 0) { +r1 = iAtom; +} else { +r2 = iAtom; +}} +if (vMean == null) { +vMean = new JU.V3(); +vNorm = new JU.V3(); +vTemp = new JU.V3(); +}for (var k = 0, j = i; k < 2; k++) { +JU.Measure.getNormalThroughPoints(atoms[r1], atoms[j], atoms[r2], vNorm, vTemp); +if (!JS.SmilesAromatic.addNormal(vNorm, vMean, maxDev)) return false; +vNorms[nNorms++] = JU.V3.newV(vNorm); +if ((j = iSub) < 0) break; +} +} +return JS.SmilesAromatic.checkStandardDeviation(vNorms, vMean, nNorms, cutoff); +}, "~N,~A,JU.BS,JU.BS,~N,~B,~B"); +c$.addNormal = Clazz_defineMethod(c$, "addNormal", +function(vTemp, vMean, maxDev){ +var similarity = vMean.dot(vTemp); +if (similarity != 0 && Math.abs(similarity) < maxDev) return false; +if (similarity < 0) vTemp.scale(-1); +vMean.add(vTemp); +vMean.normalize(); +return true; +}, "JU.V3,JU.V3,~N"); +c$.checkStandardDeviation = Clazz_defineMethod(c$, "checkStandardDeviation", +function(vNorms, vMean, n, cutoff){ +var sum = 0; +var sum2 = 0; +for (var i = 0; i < n; i++) { +var v = vNorms[i].dot(vMean); +sum += v; +sum2 += (v) * v; +} +sum = Math.sqrt((sum2 - sum * sum / n) / (n - 1)); +return (sum < cutoff); +}, "~A,JU.V3,~N,~N"); +c$.checkHueckelAromatic = Clazz_defineMethod(c$, "checkHueckelAromatic", +function(nAtoms, jmolAtoms, bsAromatic, bsRing, strictness, eCounts){ +var npi = 0; +var n1 = 0; +for (var i = bsRing.nextSetBit(0); i >= 0 && npi >= 0; i = bsRing.nextSetBit(i + 1)) { +var atom = jmolAtoms[i]; +var z = atom.getElementNumber(); +var n = atom.getCovalentBondCountPlusMissingH(); +n += atom.getValence(); +n -= 4; +if (z == 6) { +var fc = atom.getFormalCharge(); +if (fc != -2147483648) n += fc; +}var pt = (z >= 5 && z <= 8 ? z - 5 : z == 15 ? 2 : z == 34 ? 3 : z == 33 ? 4 : z == 16 ? 5 : -1); +if (pt >= 0) { +var a = JS.SmilesAromatic.OS_PI_COUNTS[pt]; +if (n < 0 || n >= a.length) return -1; +switch (n = a[n]) { +case -2: +return -1; +case -1: +var bonds = atom.getEdges(); +n = 0; +for (var j = bonds.length; --j >= 0; ) { +var b = bonds[j]; +if (b.getCovalentOrder() != 2) continue; +var het = b.getOtherNode(atom); +n = (het.getElementNumber() == 6 || bsAromatic.get(het.getIndex()) ? 1 : strictness > 0 ? -100 : 0); +break; +} +default: +if (n < 0) return -1; +if (eCounts != null) eCounts[i] = n; +npi += n; +if (n == 1) n1++; +if (JU.Logger.debuggingHigh) JU.Logger.info("atom " + atom + " pi=" + n + " npi=" + npi); +continue; +} +}} +return ((npi - 2) % 4 == 0 && (strictness < 2 || nAtoms == 5 || n1 == 6) ? 1 : 0); +}, "~N,~A,JU.BS,JU.BS,~N,~A"); +c$.finalizeAromatic = Clazz_defineMethod(c$, "finalizeAromatic", +function(jmolAtoms, bsAromatic, lstAromatic, lstSP2, eCounts, isOpenNotStrict, isStrict){ +if (isStrict) JS.SmilesAromatic.removeBridgingRings(lstAromatic, lstSP2); +JS.SmilesAromatic.checkFusedRings(lstSP2, eCounts, lstAromatic); +bsAromatic.clearAll(); +for (var i = lstAromatic.size(); --i >= 0; ) bsAromatic.or(lstAromatic.get(i)); + +if (isStrict || isOpenNotStrict) { +for (var i = bsAromatic.nextSetBit(0); i >= 0; i = bsAromatic.nextSetBit(i + 1)) { +var bonds = jmolAtoms[i].getEdges(); +var naro = 0; +for (var j = bonds.length; --j >= 0; ) { +var otherAtom = bonds[j].getOtherNode(jmolAtoms[i]); +var order = bonds[j].getCovalentOrder(); +var ai2 = otherAtom.getIndex(); +var isJAro = bsAromatic.get(ai2); +if (isJAro) { +if (order == 2) { +var isOK = false; +for (var k = lstSP2.size(); --k >= 0; ) { +var r = lstSP2.get(k); +if (r.get(i) && r.get(ai2)) { +isOK = true; +break; +}} +if (!isOK) { +naro = -1; +break; +}}naro++; +} else if (isStrict && otherAtom.getElementNumber() == 6 && order == 2) { +naro = -1; +break; +}} +if (naro < 2) { +bsAromatic.clear(i); +i = -1; +}} +}}, "~A,JU.BS,JU.Lst,JU.Lst,~A,~B,~B"); +c$.removeBridgingRings = Clazz_defineMethod(c$, "removeBridgingRings", +function(lstAromatic, lstSP2){ +var bs = new JU.BS(); +var bsBad = new JU.BS(); +var bsBad2 = new JU.BS(); +JS.SmilesAromatic.checkBridges(lstAromatic, bsBad, lstAromatic, bsBad, bs); +JS.SmilesAromatic.checkBridges(lstSP2, bsBad2, lstSP2, bsBad2, bs); +JS.SmilesAromatic.checkBridges(lstAromatic, bsBad, lstSP2, bsBad2, bs); +for (var i = lstAromatic.size(); --i >= 0; ) if (bsBad.get(i)) lstAromatic.removeItemAt(i); + +for (var i = lstSP2.size(); --i >= 0; ) if (bsBad2.get(i)) lstSP2.removeItemAt(i); + +}, "JU.Lst,JU.Lst"); +c$.checkBridges = Clazz_defineMethod(c$, "checkBridges", +function(lst, bsBad, lst2, bsBad2, bs){ +var isSameList = (lst === lst2); +for (var i = lst.size(); --i >= 0; ) { +var bs1 = lst.get(i); +for (var j0 = (isSameList ? i + 1 : 0), j = lst2.size(); --j >= j0; ) { +var bs2 = lst2.get(j); +if (bs2.equals(bs1)) continue; +bs.clearAll(); +bs.or(bs1); +bs.and(bs2); +var n = bs.cardinality(); +if (n > 2) { +bsBad.set(i); +bsBad2.set(j); +}} +} +}, "JU.Lst,JU.BS,JU.Lst,JU.BS,JU.BS"); +c$.checkFusedRings = Clazz_defineMethod(c$, "checkFusedRings", +function(rings, eCounts, lstAromatic){ +var htEdgeMap = new java.util.Hashtable(); +for (var i = rings.size(); --i >= 0; ) { +var r = rings.get(i); +var edges = r.edges; +for (var j = edges.size(); --j >= 0; ) { +var set = JS.SmilesRing.getSetByEdge(edges.get(j), htEdgeMap); +if (set == null || set === r.$set) continue; +if (r.$set != null) set.addSet(r.$set, htEdgeMap); + else set.addRing(r); +} +(r.$set == null ? r.$set = new JS.SmilesRingSet() : r.$set).addRing(r); +r.addEdges(htEdgeMap); +} +var set; +var r; +for (var i = rings.size(); --i >= 0; ) { +if ((r = rings.get(i)).isOK || (set = r.$set) == null || set.isEmpty()) continue; +if ((set.getElectronCount(eCounts) % 4) == 2) for (var j = set.size(); --j >= 0; ) if (!(r = set.get(j)).isOK) lstAromatic.addLast(r); + +set.clear(); +} +}, "JU.Lst,~A,JU.Lst"); +c$.OS_PI_COUNTS = Clazz_newArray(-1, [ Clazz_newIntArray(-1, [-2, 1, 0]), Clazz_newIntArray(-1, [1, 2, 1, -1]), Clazz_newIntArray(-1, [2, 1, 2, 1, 1]), Clazz_newIntArray(-1, [2, 1]), Clazz_newIntArray(-1, [-2, 1, 2, 1, -2]), Clazz_newIntArray(-1, [2, 1, 2, 2])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.BS"], "JS.SmilesRing", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.$set = null; +this.edges = null; +this.bsEdgesToCheck = null; +this.isOK = false; +this.n = 0; +Clazz_instantialize(this, arguments);}, JS, "SmilesRing", JU.BS); +Clazz_makeConstructor(c$, +function(n, atoms, edges, isOK){ +Clazz_superConstructor (this, JS.SmilesRing, []); +this.or(atoms); +this.edges = edges; +this.isOK = isOK; +this.n = n; +}, "~N,JU.BS,JU.Lst,~B"); +Clazz_defineMethod(c$, "addEdges", +function(htEdgeMap){ +for (var i = this.edges.size(); --i >= 0; ) htEdgeMap.put(JS.SmilesRing.getKey(this.edges.get(i)), this.$set); + +}, "java.util.Hashtable"); +c$.getSetByEdge = Clazz_defineMethod(c$, "getSetByEdge", +function(edge, htEdgeMap){ +return htEdgeMap.get(JS.SmilesRing.getKey(edge)); +}, "JU.Edge,java.util.Hashtable"); +c$.getKey = Clazz_defineMethod(c$, "getKey", +function(e){ +var i = e.getAtomIndex1(); +var j = e.getAtomIndex2(); +return (i < j ? i + "_" + j : j + "_" + i); +}, "JU.Edge"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.Lst", "$.BS"], "JS.SmilesRingSet", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bs = null; +Clazz_instantialize(this, arguments);}, JS, "SmilesRingSet", JU.Lst); +Clazz_prepareFields (c$, function(){ +this.bs = new JU.BS(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JS.SmilesRingSet, []); +}); +Clazz_defineMethod(c$, "addSet", +function(set, htEdgeMap){ +for (var i = set.size(); --i >= 0; ) { +var r = set.get(i); +this.addRing(r); +r.addEdges(htEdgeMap); +} +}, "JS.SmilesRingSet,java.util.Hashtable"); +Clazz_defineMethod(c$, "addRing", +function(ring){ +this.addLast(ring); +ring.$set = this; +this.bs.or(ring); +}, "JS.SmilesRing"); +Clazz_defineMethod(c$, "getElectronCount", +function(eCounts){ +var eCount = 0; +for (var j = this.bs.nextSetBit(0); j >= 0; j = this.bs.nextSetBit(j + 1)) eCount += eCounts[j]; + +return eCount; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.P3", "JU.Node"], "JS.SmilesAtom", ["JU.AU", "JU.Elements", "$.Logger", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.patternIndex = -1; +this.pattern = null; +this.primitiveType = 0; +this.isAND = false; +this.subAtoms = null; +this.nSubAtoms = 0; +this.index = 0; +this.referance = null; +this.residueName = null; +this.residueChar = null; +this.insCode = '\0'; +this.isBioAtom = false; +this.isBioResidue = false; +this.isBioAtomWild = false; +this.bioType = '\0'; +this.$isLeadAtom = false; +this.notBondedIndex = -1; +this.notCrossLinked = false; +this.aromaticAmbiguous = true; +this.covalentHydrogenCount = -1; +this.not = false; +this.selected = false; +this.hasSymbol = false; +this.elementDefined = false; +this.atomType = null; +this.bioAtomName = null; +this.isFirst = true; +this.jmolIndex = -1; +this.elementNumber = -2; +this.atomNumber = -2147483648; +this.residueNumber = -2147483648; +this.explicitHydrogenCount = -2147483648; +this.implicitHydrogenCount = -2147483648; +this.parent = null; +this.bonds = null; +this.bondCount = 0; +this.iNested = 0; +this.isAromatic = false; +this.atomicMass = -2147483648; +this.charge = -2147483648; +this.matchingIndex = -1; +this.stereo = null; +this.component = -2147483648; +this.matchingComponent = 0; +this.atomSite = 0; +this.degree = -1; +this.nonhydrogenDegree = -1; +this.valence = 0; +this.connectivity = -1; +this.ringMembership = -2147483648; +this.ringSize = -2147483648; +this.ringConnectivity = -1; +this.matchingNode = null; +this.hasSubpattern = false; +this.mapIndex = -1; +this.atomClass = NaN; +this.symbol = null; +this.isTopoAtom = false; +this.missingHydrogenCount = 0; +this.cipChirality = 0; +this.hasDoubleBond = false; +Clazz_instantialize(this, arguments);}, JS, "SmilesAtom", JU.P3, JU.Node); +Clazz_prepareFields (c$, function(){ +this.bonds = new Array(4); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JS.SmilesAtom, []); +}); +c$.allowSmilesUnbracketed = Clazz_defineMethod(c$, "allowSmilesUnbracketed", +function(xx){ +return ("B, C, N, O, P, S, F, Cl, Br, I, *,".indexOf(xx + ",") >= 0); +}, "~S"); +Clazz_overrideMethod(c$, "getAtomType", +function(){ +return (this.atomType == null ? this.bioAtomName : this.atomType); +}); +Clazz_defineMethod(c$, "getChiralClass", +function(){ +return (this.stereo == null ? -2147483648 : this.stereo.getChiralClass(this)); +}); +Clazz_defineMethod(c$, "isDefined", +function(){ +return (this.hasSubpattern || this.iNested != 0 || this.isBioAtom || this.component != -2147483648 || this.elementNumber != -2 || this.nSubAtoms > 0); +}); +Clazz_defineMethod(c$, "setBioAtom", +function(bioType){ +this.isBioAtom = (bioType != '\0'); +this.bioType = bioType; +if (this.parent != null) { +this.parent.bioType = bioType; +this.parent.isBioAtom = this.isBioAtom; +this.parent.isBioAtomWild = this.isBioAtomWild; +}}, "~S"); +Clazz_defineMethod(c$, "setAtomName", +function(name){ +if (name == null) return; +if (name.length > 0) this.bioAtomName = name; +if (name.equals("\0")) this.$isLeadAtom = true; +if (this.parent != null) { +this.parent.bioAtomName = name; +}}, "~S"); +Clazz_defineMethod(c$, "setBonds", +function(bonds){ +this.bonds = bonds; +}, "~A"); +Clazz_defineMethod(c$, "addSubAtom", +function(sAtom, isAND){ +this.isAND = isAND; +if (this.subAtoms == null) this.subAtoms = new Array(2); +if (this.nSubAtoms >= this.subAtoms.length) this.subAtoms = JU.AU.doubleLength(this.subAtoms); +sAtom.setIndex(this.index); +sAtom.parent = this; +this.subAtoms[this.nSubAtoms++] = sAtom; +this.setSymbol("*"); +this.hasSymbol = false; +return sAtom; +}, "JS.SmilesAtom,~B"); +Clazz_defineMethod(c$, "setIndex", +function(index){ +this.index = index; +return this; +}, "~N"); +Clazz_defineMethod(c$, "setTopoAtom", +function(iComponent, ptAtom, symbol, charge, patternIndex){ +this.component = iComponent; +this.index = ptAtom; +this.patternIndex = patternIndex; +this.setSymbol(symbol); +this.charge = charge; +this.isTopoAtom = true; +return this; +}, "~N,~N,~S,~N,~N"); +Clazz_defineMethod(c$, "setHydrogenCount", +function(){ +this.missingHydrogenCount = this.explicitHydrogenCount; +if (this.explicitHydrogenCount != -2147483648) return true; +var charge = this.getFormalCharge(); +var count = JS.SmilesAtom.getDefaultHCount(this.elementNumber, this.isAromatic, charge == -2147483648 ? 0 : charge); +if (count < 0) { +this.missingHydrogenCount = 0; +return (count == -1); +}if (this.elementNumber == 7 && this.isAromatic && this.bondCount == 2) { +if (this.bonds[0].getBondType() == 1 && this.bonds[1].getBondType() == 1) count++; +}for (var i = 0; i < this.bondCount; i++) { +var bond = this.bonds[i]; +switch (bond.getBondType()) { +case 81: +if (this.elementNumber == 7) { +JU.Logger.info("Ambiguous bonding to aromatic N found -- MF may be in error"); +}count -= 1; +break; +case 1025: +case 1041: +case 65537: +case 65538: +count -= 1; +break; +case 2: +count -= (this.isAromatic && this.elementNumber == 6 ? 1 : 2); +break; +case 1: +case 3: +case 4: +count -= bond.getBondType(); +break; +} +} +if (count >= 0) this.missingHydrogenCount = this.explicitHydrogenCount = count; +return true; +}); +c$.getDefaultHCount = Clazz_defineMethod(c$, "getDefaultHCount", +function(elementNumber, isAromatic, charge){ +switch (elementNumber) { +case 0: +case -1: +case -2: +return -1; +case 1: +return 1; +case 6: +return (isAromatic ? 3 : 4) + (charge == 0 ? 0 : 1); +case 8: +case 16: +return 2 + charge; +case 7: +return (isAromatic ? 2 : 3) + charge; +case 5: +case 15: +return 3; +case 9: +case 17: +case 35: +case 53: +return 1 + charge; +default: +return 0; +} +}, "~N,~B,~N"); +Clazz_overrideMethod(c$, "getIndex", +function(){ +return this.index; +}); +Clazz_defineMethod(c$, "setSymbol", +function(symbol){ +this.symbol = symbol; +this.isAromatic = symbol.equals(symbol.toLowerCase()); +this.hasSymbol = true; +this.elementDefined = true; +if (symbol.equals("*")) { +this.isAromatic = false; +this.elementNumber = -2; +return true; +}if (symbol.equals("Xx")) { +this.elementNumber = 0; +return true; +}this.aromaticAmbiguous = false; +if (symbol.equals("a") || symbol.equals("A")) { +if (this.elementNumber < 0) this.elementNumber = -1; +return true; +}if (this.isAromatic) symbol = symbol.substring(0, 1).toUpperCase() + (symbol.length == 1 ? "" : symbol.substring(1)); +this.elementNumber = JU.Elements.elementNumberFromSymbol(symbol, true); +return (this.elementNumber != 0); +}, "~S"); +Clazz_overrideMethod(c$, "getElementNumber", +function(){ +return this.elementNumber; +}); +Clazz_defineMethod(c$, "getAtomicMass", +function(){ +return this.atomicMass; +}); +Clazz_overrideMethod(c$, "getAtomNumber", +function(){ +return this.atomNumber; +}); +Clazz_defineMethod(c$, "setAtomicMass", +function(mass){ +this.atomicMass = mass; +}, "~N"); +Clazz_defineMethod(c$, "getCharge", +function(){ +return this.charge; +}); +Clazz_defineMethod(c$, "setCharge", +function(charge){ +this.charge = charge; +}, "~N"); +Clazz_defineMethod(c$, "getMatchingAtomIndex", +function(){ +return this.matchingIndex; +}); +Clazz_defineMethod(c$, "getMatchingAtom", +function(){ +return this.matchingNode == null ? this : this.matchingNode; +}); +Clazz_defineMethod(c$, "setMatchingAtom", +function(jmolAtom, index){ +this.matchingNode = jmolAtom; +this.matchingIndex = index; +}, "JU.Node,~N"); +Clazz_defineMethod(c$, "setExplicitHydrogenCount", +function(count){ +this.explicitHydrogenCount = count; +}, "~N"); +Clazz_defineMethod(c$, "setImplicitHydrogenCount", +function(count){ +this.implicitHydrogenCount = count; +}, "~N"); +Clazz_defineMethod(c$, "setDegree", +function(degree){ +this.degree = degree; +}, "~N"); +Clazz_defineMethod(c$, "setNonhydrogenDegree", +function(degree){ +this.nonhydrogenDegree = degree; +}, "~N"); +Clazz_defineMethod(c$, "setValence", +function(valence){ +this.valence = valence; +}, "~N"); +Clazz_defineMethod(c$, "setConnectivity", +function(connectivity){ +this.connectivity = connectivity; +}, "~N"); +Clazz_defineMethod(c$, "setRingMembership", +function(rm){ +this.ringMembership = rm; +}, "~N"); +Clazz_defineMethod(c$, "setRingSize", +function(rs){ +this.ringSize = rs; +if (this.ringSize == 500 || this.ringSize == 600) this.isAromatic = true; +}, "~N"); +Clazz_defineMethod(c$, "setRingConnectivity", +function(rc){ +this.ringConnectivity = rc; +}, "~N"); +Clazz_overrideMethod(c$, "getModelIndex", +function(){ +return this.component; +}); +Clazz_overrideMethod(c$, "getMoleculeNumber", +function(inModel){ +return this.component; +}, "~B"); +Clazz_overrideMethod(c$, "getAtomSite", +function(){ +return this.atomSite; +}); +Clazz_overrideMethod(c$, "getFormalCharge", +function(){ +return this.charge; +}); +Clazz_overrideMethod(c$, "getIsotopeNumber", +function(){ +return this.atomicMass; +}); +Clazz_overrideMethod(c$, "getAtomicAndIsotopeNumber", +function(){ +return JU.Elements.getAtomicAndIsotopeNumber(this.elementNumber, this.atomicMass); +}); +Clazz_overrideMethod(c$, "getAtomName", +function(){ +return this.bioAtomName == null ? "" : this.bioAtomName; +}); +Clazz_overrideMethod(c$, "getGroup3", +function(allowNull){ +return this.residueName == null ? "" : this.residueName; +}, "~B"); +Clazz_overrideMethod(c$, "getGroup1", +function(c0){ +return this.residueChar == null ? "" : this.residueChar; +}, "~S"); +Clazz_defineMethod(c$, "addBond", +function(bond){ +if (this.bondCount >= this.bonds.length) this.bonds = JU.AU.doubleLength(this.bonds); +this.bonds[this.bondCount] = bond; +if (bond.order == 2) { +this.hasDoubleBond = true; +}this.bondCount++; +}, "JS.SmilesBond"); +Clazz_defineMethod(c$, "setBondArray", +function(){ +if (this.bonds.length > this.bondCount) this.bonds = JU.AU.arrayCopyObject(this.bonds, this.bondCount); +if (this.subAtoms != null && this.subAtoms.length > this.nSubAtoms) this.subAtoms = JU.AU.arrayCopyObject(this.subAtoms, this.subAtoms.length); +for (var i = 0; i < this.bonds.length; i++) { +var b = this.bonds[i]; +if (this.isBioAtom && b.getBondType() == 17) { +b.order = 112; +} else if (b.order == 2) { +b.atom1.hasDoubleBond = b.atom2.hasDoubleBond = true; +}if (b.atom1.index > b.atom2.index) { +b.switchAtoms(); +}} +}); +Clazz_overrideMethod(c$, "getEdges", +function(){ +return (this.parent != null ? this.parent.getEdges() : this.bonds); +}); +Clazz_defineMethod(c$, "getBond", +function(number){ +return (this.parent != null ? this.parent.getBond(number) : number >= 0 && number < this.bondCount ? this.bonds[number] : null); +}, "~N"); +Clazz_overrideMethod(c$, "getCovalentBondCount", +function(){ +return this.getBondCount(); +}); +Clazz_overrideMethod(c$, "getBondCount", +function(){ +return (this.parent != null ? this.parent.getBondCount() : this.bondCount); +}); +Clazz_overrideMethod(c$, "getCovalentBondCountPlusMissingH", +function(){ +return this.getBondCount() + (this.isTopoAtom ? 0 : this.missingHydrogenCount); +}); +Clazz_overrideMethod(c$, "getTotalHydrogenCount", +function(){ +return this.getCovalentHydrogenCount() + (this.isTopoAtom ? 0 : this.missingHydrogenCount); +}); +Clazz_overrideMethod(c$, "getImplicitHydrogenCount", +function(){ +return this.implicitHydrogenCount; +}); +Clazz_overrideMethod(c$, "getExplicitHydrogenCount", +function(){ +return this.explicitHydrogenCount; +}); +Clazz_defineMethod(c$, "getMatchingBondedAtom", +function(i){ +if (this.parent != null) return this.parent.getMatchingBondedAtom(i); +if (i >= this.bondCount) return -1; +var b = this.bonds[i]; +return (b.atom1 === this ? b.atom2 : b.atom1).matchingIndex; +}, "~N"); +Clazz_overrideMethod(c$, "getBondedAtomIndex", +function(j){ +return (this.parent != null ? this.parent.getBondedAtomIndex(j) : this.bonds[j].getOtherAtom(this).index); +}, "~N"); +Clazz_overrideMethod(c$, "getCovalentHydrogenCount", +function(){ +if (this.covalentHydrogenCount >= 0) return this.covalentHydrogenCount; +if (this.parent != null) return (this.covalentHydrogenCount = this.parent.getCovalentHydrogenCount()); +this.covalentHydrogenCount = 0; +for (var k = 0; k < this.bonds.length; k++) if (this.bonds[k].getOtherAtom(this).elementNumber == 1) this.covalentHydrogenCount++; + +return this.covalentHydrogenCount; +}); +Clazz_overrideMethod(c$, "getValence", +function(){ +if (this.parent != null) return this.parent.getValence(); +var n = this.valence; +if (n <= 0 && this.bonds != null) for (var i = this.bondCount; --i >= 0; ) n += this.bonds[i].getValence(); + +this.valence = n; +return n; +}); +Clazz_overrideMethod(c$, "getTotalValence", +function(){ +return this.getValence() + (this.isTopoAtom ? 0 : this.missingHydrogenCount); +}); +Clazz_defineMethod(c$, "getBondTo", +function(atom){ +if (this.parent != null) return this.parent.getBondTo(atom); +var bond; +for (var k = 0; k < this.bonds.length; k++) { +if ((bond = this.bonds[k]) == null) continue; +if (atom == null ? bond.atom2 === this : bond.getOtherAtom(this) === atom) return bond; +} +return null; +}, "JS.SmilesAtom"); +Clazz_defineMethod(c$, "getBondNotTo", +function(atom, allowH){ +var bond; +for (var k = 0; k < this.bonds.length; k++) { +if ((bond = this.bonds[k]) == null) continue; +var atom2 = bond.getOtherAtom(this); +if (atom !== atom2 && (allowH || atom2.elementNumber != 1)) return bond; +} +return null; +}, "JS.SmilesAtom,~B"); +Clazz_overrideMethod(c$, "isLeadAtom", +function(){ +return this.$isLeadAtom; +}); +Clazz_overrideMethod(c$, "getOffsetResidueAtom", +function(name, offset){ +if (this.isBioAtom) { +if (offset == 0) return this.index; +for (var k = 0; k < this.bonds.length; k++) if (this.bonds[k].getAtomIndex1() == this.index && this.bonds[k].getBondType() == 96) return this.bonds[k].getOtherAtom(this).index; + +}return -1; +}, "~S,~N"); +Clazz_overrideMethod(c$, "getGroupBits", +function(bs){ +bs.set(this.index); +return; +}, "JU.BS"); +Clazz_overrideMethod(c$, "isCrossLinked", +function(node){ +var bond = this.getBondTo(node); +return bond.isHydrogen(); +}, "JU.Node"); +Clazz_overrideMethod(c$, "getCrossLinkVector", +function(vLinks, crosslinkCovalent, crosslinkHBond){ +var haveCrossLinks = false; +for (var k = 0; k < this.bonds.length; k++) if (this.bonds[k].order == 112) { +if (vLinks == null) return true; +vLinks.addLast(Integer.$valueOf(this.index)); +vLinks.addLast(Integer.$valueOf(this.bonds[k].getOtherAtom(this).index)); +vLinks.addLast(Integer.$valueOf(this.bonds[k].getOtherAtom(this).index)); +haveCrossLinks = true; +} +return haveCrossLinks; +}, "JU.Lst,~B,~B"); +Clazz_overrideMethod(c$, "getBioStructureTypeName", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "getInsertionCode", +function(){ +return this.insCode; +}); +Clazz_overrideMethod(c$, "getResno", +function(){ +return this.residueNumber; +}); +Clazz_overrideMethod(c$, "getChainID", +function(){ +return 0; +}); +Clazz_overrideMethod(c$, "getChainIDStr", +function(){ +return ""; +}); +c$.getAtomLabel = Clazz_defineMethod(c$, "getAtomLabel", +function(atomicNumber, isotopeNumber, valence, charge, osclass, nH, isAromatic, stereo, is2D){ +var sym = JU.Elements.elementSymbolFromNumber(atomicNumber); +if (atomicNumber == 1 || isAromatic && !(sym = sym.toLowerCase()).equals("c") && !sym.equals("o") && !sym.equals("s")) { +valence = 2147483647; +}var simple = (valence != 2147483647 && isotopeNumber <= 0 && charge == 0 && Float.isNaN(osclass) && (stereo == null || stereo.length == 0)); +var norm = JS.SmilesAtom.getDefaultHCount(atomicNumber, false, charge == -2147483648 ? 0 : charge); +if (is2D && nH == 0) { +if (simple && atomicNumber == 6) return sym; +nH = norm - valence; +}return (simple && norm == valence ? sym : "[" + (isotopeNumber <= 0 ? "" : "" + isotopeNumber) + sym + (stereo == null ? "" : stereo) + (nH > 1 ? "H" + nH : nH == 1 ? "H" : "") + (charge == -2147483648 || charge == 0 ? "" : charge < 0 ? "" + charge : "+" + charge) + (Float.isNaN(osclass) ? "" : ":" + Clazz_floatToInt(osclass)) + "]"); +}, "~N,~N,~N,~N,~N,~N,~B,~S,~B"); +Clazz_overrideMethod(c$, "getBioSmilesType", +function(){ +return this.bioType; +}); +Clazz_defineMethod(c$, "isNucleic", +function(){ +return this.bioType == 'n' || this.bioType == 'r' || this.bioType == 'd'; +}); +Clazz_overrideMethod(c$, "isPurine", +function(){ +return this.residueChar != null && this.isNucleic() && "AG".indexOf(this.residueChar) >= 0; +}); +Clazz_overrideMethod(c$, "isPyrimidine", +function(){ +return this.residueChar != null && this.isNucleic() && "CTUI".indexOf(this.residueChar) >= 0; +}); +Clazz_overrideMethod(c$, "isDeleted", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "findAtomsLike", +function(substring){ +return null; +}, "~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +var s = (this.residueChar != null || this.residueName != null ? (this.residueChar == null ? this.residueName : this.residueChar) + "." + this.bioAtomName : (this.bioAtomName != null && this.atomNumber != -2147483648 ? null : this.elementNumber == -1 ? "A" : this.elementNumber == -2 ? "*" : JU.Elements.elementSymbolFromNumber(this.elementNumber))); +if (s == null) return this.bioAtomName + " #" + this.atomNumber; +if (this.isAromatic) s = s.toLowerCase(); +var s2 = ""; +for (var i = 0; i < this.bondCount; i++) s2 += this.bonds[i].getOtherAtom(this).index + ", "; + +return "[" + s + '.' + this.index + (this.matchingIndex >= 0 ? "(" + this.matchingNode + ")" : "") + "]->" + s2 + "(" + this.x + "," + this.y + "," + this.z + ")"; +}); +Clazz_overrideMethod(c$, "getFloatProperty", +function(property){ +if (property === "property_atomclass") return this.atomClass; +return NaN; +}, "~S"); +Clazz_overrideMethod(c$, "getMass", +function(){ +return this.atomicMass; +}); +Clazz_overrideMethod(c$, "getCIPChirality", +function(doCalculate){ +return JV.JC.getCIPChiralityName(this.cipChirality & -225); +}, "~B"); +Clazz_overrideMethod(c$, "setCIPChirality", +function(c){ +this.cipChirality = c; +}, "~N"); +Clazz_overrideMethod(c$, "getCIPChiralityCode", +function(){ +return this.cipChirality; +}); +Clazz_overrideMethod(c$, "getXYZ", +function(){ +return this; +}); +Clazz_defineMethod(c$, "getStereo", +function(){ +return this.stereo; +}); +Clazz_defineMethod(c$, "getPatternIndex", +function(){ +return this.patternIndex; +}); +Clazz_overrideMethod(c$, "modelIsRawPDB", +function(){ +return false; +}); +Clazz_defineMethod(c$, "definesStereo", +function(){ +return false; +}); +Clazz_defineMethod(c$, "getStereoAtAt", +function(nodes){ +return null; +}, "~A"); +Clazz_defineMethod(c$, "isStereoOpposite", +function(i2, iA, iB){ +return null; +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.Edge"], "JS.SmilesBond", ["JS.InvalidSmilesException"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.atom1 = null; +this.atom2 = null; +this.isNot = false; +this.matchingBond = null; +this.primitives = null; +this.nPrimitives = 0; +this.bondsOr = null; +this.nBondsOr = 0; +this.isConnection = false; +this.atropType = null; +this.isChain = false; +Clazz_instantialize(this, arguments);}, JS, "SmilesBond", JU.Edge); +Clazz_makeConstructor(c$, +function(atom1, atom2, bondType, isNot){ +Clazz_superConstructor (this, JS.SmilesBond, []); +this.set2(bondType, isNot); +this.set2a(atom1, atom2); +}, "JS.SmilesAtom,JS.SmilesAtom,~N,~B"); +c$.getBondOrderString = Clazz_defineMethod(c$, "getBondOrderString", +function(order){ +switch (order) { +case 2: +return "="; +case 3: +return "#"; +case 4: +return "$"; +default: +return ""; +} +}, "~N"); +c$.getBondTypeFromCode = Clazz_defineMethod(c$, "getBondTypeFromCode", +function(code){ +switch ((code).charCodeAt(0)) { +case 46: +return 0; +case 45: +return 1; +case 61: +return 2; +case 35: +return 3; +case 36: +return 4; +case 58: +return 17; +case 47: +return 1025; +case 92: +return 1041; +case 94: +return 65537; +case 96: +return 65538; +case 64: +return 65; +case 126: +return 81; +case 43: +return 96; +} +return -1; +}, "~S"); +Clazz_defineMethod(c$, "getAtom1", +function(){ +return this.atom1; +}); +Clazz_defineMethod(c$, "set", +function(bond){ +this.order = bond.order; +this.isNot = bond.isNot; +this.primitives = bond.primitives; +this.nPrimitives = bond.nPrimitives; +this.bondsOr = bond.bondsOr; +this.nBondsOr = bond.nBondsOr; +this.atropType = bond.atropType; +}, "JS.SmilesBond"); +Clazz_defineMethod(c$, "setAtropType", +function(nn){ +this.atropType = Clazz_newIntArray(-1, [Clazz_doubleToInt(nn / 10) - 1, nn % 10 - 1]); +}, "~N"); +Clazz_defineMethod(c$, "setPrimitive", +function(i){ +var p = this.primitives[i]; +this.order = p.order; +this.isNot = p.isNot; +this.atropType = p.atropType; +return p; +}, "~N"); +Clazz_defineMethod(c$, "addBondOr", +function(){ +if (this.bondsOr == null) this.bondsOr = new Array(2); +if (this.nBondsOr >= this.bondsOr.length) { +var tmp = new Array(this.bondsOr.length * 2); +System.arraycopy(this.bondsOr, 0, tmp, 0, this.bondsOr.length); +this.bondsOr = tmp; +}var sBond = new JS.SmilesBond(null, null, -1, false); +this.bondsOr[this.nBondsOr] = sBond; +this.nBondsOr++; +return sBond; +}); +Clazz_defineMethod(c$, "addPrimitive", +function(){ +if (this.primitives == null) this.primitives = new Array(2); +if (this.nPrimitives >= this.primitives.length) { +var tmp = new Array(this.primitives.length * 2); +System.arraycopy(this.primitives, 0, tmp, 0, this.primitives.length); +this.primitives = tmp; +}var sBond = new JS.SmilesBond(null, null, -1, false); +this.primitives[this.nPrimitives] = sBond; +this.nPrimitives++; +return sBond; +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.atom1 + " -" + (this.isNot ? "!" : "") + this.order + "- " + this.atom2; +}); +Clazz_defineMethod(c$, "set2", +function(bondType, isNot){ +this.order = bondType; +this.isNot = isNot; +}, "~N,~B"); +Clazz_defineMethod(c$, "set2a", +function(a1, a2){ +if (a1 != null) { +this.atom1 = a1; +a1.addBond(this); +}if (a2 != null) { +this.atom2 = a2; +if (a2.isBioAtomWild && this.atom1.isBioAtomWild) this.order = 96; +a2.isFirst = false; +a2.addBond(this); +}}, "JS.SmilesAtom,JS.SmilesAtom"); +Clazz_defineMethod(c$, "setAtom2", +function(atom, molecule){ +this.atom2 = atom; +if (this.atom2 != null) { +atom.addBond(this); +this.isConnection = true; +}}, "JS.SmilesAtom,JS.SmilesSearch"); +Clazz_defineMethod(c$, "isFromPreviousTo", +function(atom){ +return (!this.isConnection && this.atom2 === atom); +}, "JS.SmilesAtom"); +c$.isBondType = Clazz_defineMethod(c$, "isBondType", +function(ch, isSearch, isBioSequence){ +if (ch == '>') return 1; +if ("-=#$:/\\.~^`+!,&;@".indexOf(ch) < 0) return 0; +if (!isSearch && "-=#$:/\\.~^`".indexOf(ch) < 0) throw new JS.InvalidSmilesException("SMARTS bond type " + ch + " not allowed in SMILES"); +switch ((ch).charCodeAt(0)) { +case 126: +return (isBioSequence ? 0 : 1); +case 94: +case 96: +return -1; +default: +return 1; +} +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "getValence", +function(){ +return (this.order & 7); +}); +Clazz_defineMethod(c$, "getOtherAtom", +function(a){ +return (this.atom1 === a ? this.atom2 : this.atom1); +}, "JS.SmilesAtom"); +Clazz_overrideMethod(c$, "getAtomIndex1", +function(){ +return this.atom1.index; +}); +Clazz_overrideMethod(c$, "getAtomIndex2", +function(){ +return this.atom2.index; +}); +Clazz_overrideMethod(c$, "getCovalentOrder", +function(){ +return this.order & 131071; +}); +Clazz_overrideMethod(c$, "getOtherNode", +function(atom){ +return (atom === this.atom1 ? this.atom2 : atom === this.atom2 || atom == null ? this.atom1 : null); +}, "JU.SimpleNode"); +Clazz_overrideMethod(c$, "isCovalent", +function(){ +return this.order != 112; +}); +Clazz_overrideMethod(c$, "isPartial", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "isHydrogen", +function(){ +return this.order == 112; +}); +Clazz_defineMethod(c$, "switchAtoms", +function(){ +var a = this.atom1; +this.atom1 = this.atom2; +this.atom2 = a; +switch (this.order & 131071) { +case 65537: +this.order = 65538; +break; +case 65538: +this.order = 65537; +break; +case 1025: +this.order = 1041; +break; +case 1041: +this.order = 1025; +break; +} +}); +Clazz_defineMethod(c$, "getRealCovalentOrder", +function(){ +switch (this.order & 131071) { +case 65537: +case 65538: +case 1025: +case 1041: +return 1; +} +return this.order & 131071; +}); +Clazz_defineMethod(c$, "getMatchingBond", +function(){ +return this.matchingBond == null ? this : this.matchingBond; +}); +Clazz_overrideMethod(c$, "getAtom", +function(i){ +return (i == 1 ? this.atom2 : this.atom1); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.SmilesMeasure", ["JU.PT"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.search = null; +this.nPoints = 0; +this.type = 0; +this.index = 0; +this.isNot = false; +this.indices = null; +this.minmax = null; +this.points = null; +Clazz_instantialize(this, arguments);}, JS, "SmilesMeasure", null); +Clazz_prepareFields (c$, function(){ +this.indices = Clazz_newIntArray (4, 0); +this.points = new Array(4); +}); +Clazz_makeConstructor(c$, +function(search, index, type, isNot, minmax){ +this.search = search; +this.type = Math.min(4, Math.max(type, 2)); +this.index = index; +this.isNot = isNot; +this.minmax = minmax; +for (var i = minmax.length - 2; i >= 0; i -= 2) if (minmax[i] > minmax[i + 1]) { +var min = minmax[i + 1]; +minmax[i + 1] = minmax[i]; +minmax[i] = min; +} +}, "JS.SmilesSearch,~N,~N,~B,~A"); +Clazz_defineMethod(c$, "addPoint", +function(index){ +if (this.nPoints == this.type) return false; +if (this.nPoints == 0) for (var i = 1; i < this.type; i++) this.indices[i] = index + i; + +this.indices[this.nPoints++] = index; +return true; +}, "~N"); +Clazz_defineMethod(c$, "check", +function(){ +for (var i = 0; i < this.type; i++) { +var iAtom = this.search.patternAtoms[this.indices[i]].getMatchingAtomIndex(); +this.points[i] = this.search.target.nodes[iAtom]; +} +var d = 0; +switch (this.type) { +case 2: +d = this.points[0].distance(this.points[1]); +break; +case 3: +this.search.v.vA.sub2(this.points[0], this.points[1]); +this.search.v.vB.sub2(this.points[2], this.points[1]); +d = this.search.v.vA.angle(this.search.v.vB) / 0.017453292; +break; +case 4: +d = JS.SmilesMeasure.setTorsionData(this.points[0], this.points[1], this.points[2], this.points[3], this.search.v, true); +break; +} +for (var i = this.minmax.length - 2; i >= 0; i -= 2) if (d >= this.minmax[i] && d <= this.minmax[i + 1]) return !this.isNot; + +return this.isNot; +}); +c$.setTorsionData = Clazz_defineMethod(c$, "setTorsionData", +function(pt1a, pt1, pt2, pt2a, v, withDihedral){ +v.vTemp1.sub2(pt1a, pt1); +v.vTemp2.sub2(pt2a, pt2); +if (!withDihedral) return 0; +v.vNorm2.sub2(pt1, pt2); +v.vNorm2.normalize(); +v.vTemp1.cross(v.vTemp1, v.vNorm2); +v.vTemp1.normalize(); +v.vTemp2.cross(v.vTemp2, v.vNorm2); +v.vTemp2.normalize(); +v.vNorm3.cross(v.vTemp1, v.vTemp2); +return v.vTemp1.angle(v.vTemp2) / 0.017453292 * (v.vNorm2.dot(v.vNorm3) < 0 ? 1 : -1); +}, "JU.T3,JU.T3,JU.T3,JU.T3,JS.VTemp,~B"); +Clazz_overrideMethod(c$, "toString", +function(){ +var s = "(." + "__dat".charAt(this.type) + this.index + ":" + JU.PT.toJSON(null, this.minmax) + ") for"; +for (var i = 0; i < this.type; i++) s += " " + (i >= this.nPoints ? "?" : "" + this.indices[i]); + +return s; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["java.util.Hashtable"], "JS.SmilesParser", ["JU.Lst", "$.PT", "$.SB", "JS.InvalidSmilesException", "$.SmilesAtom", "$.SmilesBond", "$.SmilesMeasure", "$.SmilesSearch", "$.SmilesStereo", "JU.Elements", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.connections = null; +this.htMeasures = null; +this.flags = 0; +this.isSmarts = false; +this.isBioSequence = false; +this.bioType = '\0'; +this.braceCount = 0; +this.branchLevel = 0; +this.componentCount = 0; +this.componentParenCount = 0; +this.ignoreStereochemistry = false; +this.bondDirectionPaired = true; +this.isTarget = false; +Clazz_instantialize(this, arguments);}, JS, "SmilesParser", null); +Clazz_prepareFields (c$, function(){ +this.connections = new java.util.Hashtable(); +this.htMeasures = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(isSmarts, isTarget){ +this.isSmarts = isSmarts; +this.isTarget = isTarget; +}, "~B,~B"); +c$.newSearch = Clazz_defineMethod(c$, "newSearch", +function(pattern, isSmarts, isTarget){ +return ( new JS.SmilesParser(isSmarts, isTarget)).parse(pattern); +}, "~S,~B,~B"); +Clazz_defineMethod(c$, "parse", +function(pattern){ +if (pattern == null) throw new JS.InvalidSmilesException("expression must not be null"); +var search = new JS.SmilesSearch(); +if (this.isSmarts && !this.isTarget) search.pattern0 = pattern; +if (pattern.indexOf("$(select") >= 0) pattern = this.parseNested(search, pattern, "select"); +var ret = Clazz_newIntArray (1, 0); +pattern = JS.SmilesParser.extractFlags(pattern, ret); +this.flags = ret[0]; +search.setFlags(this.flags); +if (pattern.indexOf("$") >= 0) pattern = this.parseVariables(pattern); +if (this.isSmarts && pattern.indexOf("[$") >= 0) pattern = this.parseVariableLength(pattern); +if (pattern.indexOf("||") < 0) return this.getSubsearch(search, pattern, this.flags); +var patterns = JU.PT.split(pattern, "||"); +var toDo = ""; +search.subSearches = new Array(patterns.length); +for (var i = 0; i < patterns.length; i++) { +var key = "|" + patterns[i] + "|"; +if (toDo.indexOf(key) < 0) { +search.subSearches[i] = this.getSubsearch(search, patterns[i], this.flags); +toDo += key; +}} +return search; +}, "~S"); +Clazz_defineMethod(c$, "parseVariableLength", +function(pattern){ +var sout = new JU.SB(); +var len = pattern.length - 1; +var nParen = 0; +var haveInternalOr = false; +for (var i = 0; i < len; i++) { +switch ((pattern.charAt(i)).charCodeAt(0)) { +case 40: +nParen++; +break; +case 41: +nParen--; +break; +case 124: +if (nParen > 0) { +haveInternalOr = true; +if (pattern.charAt(i + 1) == '|') { +pattern = pattern.substring(0, i) + pattern.substring(i + 1); +len--; +}}break; +} +} +if (pattern.indexOf("||") >= 0) { +var patterns = JU.PT.split(pattern, "||"); +for (var i = 0; i < patterns.length; i++) sout.append("||").append(this.parseVariableLength(patterns[i])); + +} else { +var pt = -1; +var ret = Clazz_newIntArray (1, 0); +var isOK = true; +var bracketed = null; +while ((pt = pattern.indexOf("[$", pt + 1)) >= 0) { +var pt0 = pt; +var min = -2147483648; +var max = -2147483648; +pt = JS.SmilesParser.getDigits(pattern, pt + 2, ret); +min = ret[0]; +if (min != -2147483648) { +if (JS.SmilesParser.getChar(pattern, pt) == '-') { +pt = JS.SmilesParser.getDigits(pattern, pt + 1, ret); +max = ret[0]; +}}if (JS.SmilesParser.getChar(pattern, pt) != '(') continue; +bracketed = JS.SmilesParser.getSubPattern(pattern, pt0, '['); +if (!bracketed.endsWith(")")) continue; +var pt1 = pt0 + bracketed.length + 2; +var repeat = JS.SmilesParser.getSubPattern(pattern, pt, '('); +var pt2 = pt; +bracketed = JS.SmilesParser.getSubPattern(pattern, pt, '['); +pt += 1 + repeat.length; +if (repeat.indexOf(':') >= 0 && repeat.indexOf('|') < 0) { +var parenCount = 0; +var n = repeat.length; +var ptColon = -1; +for (var i = 0; i < n; i++) { +switch ((repeat.charAt(i)).charCodeAt(0)) { +case 91: +case 40: +parenCount++; +break; +case 41: +case 93: +parenCount--; +break; +case 46: +if (ptColon >= 0 && parenCount == 0) n = i; +break; +case 58: +if (ptColon < 0 && parenCount == 0) ptColon = i; +break; +} +} +if (ptColon > 0) repeat = repeat.substring(0, ptColon) + "(" + repeat.substring(ptColon, n) + ")" + repeat.substring(n); +}if (min == -2147483648) { +var ptOr = repeat.indexOf("|"); +if (ptOr >= 0) return this.parseVariableLength(pattern.substring(0, pt0) + "[$1" + pattern.substring(pt2, pt2 + ptOr + 1) + ")]" + pattern.substring(pt1) + "||" + pattern.substring(0, pt0) + "[$1(" + pattern.substring(pt2 + ptOr + 2) + pattern.substring(pt1)); +continue; +}if (max == -2147483648) max = min; +if (repeat.indexOf("|") >= 0) repeat = "[$(" + repeat + ")]"; +for (var i = min; i <= max; i++) { +var sb = new JU.SB(); +sb.append("||").append(pattern.substring(0, pt0)); +for (var j = 0; j < i; j++) sb.append(repeat); + +sb.append(pattern.substring(pt1)); +sout.appendSB(sb); +} +} +if (!isOK) throw new JS.InvalidSmilesException("bad variable expression: " + bracketed); +}return (haveInternalOr ? this.parseVariableLength(sout.substring(2)) : sout.length() < 2 ? pattern : sout.substring(2)); +}, "~S"); +Clazz_defineMethod(c$, "getSubsearch", +function(parent, pattern, flags){ +this.htMeasures = new java.util.Hashtable(); +var search = new JS.SmilesSearch(); +search.setTop(parent); +search.isSmarts = this.isSmarts; +search.pattern = pattern; +search.pattern0 = parent.pattern0; +search.setFlags(flags); +if (pattern.indexOf("$(") >= 0) pattern = this.parseNested(search, pattern, ""); +this.parseSmiles(search, pattern, null, false); +if (this.braceCount != 0) throw new JS.InvalidSmilesException("unmatched '{'"); +if (!this.connections.isEmpty()) throw new JS.InvalidSmilesException("Open connection"); +search.set(); +if (this.isSmarts) for (var i = search.ac; --i >= 0; ) this.checkNested(search, search.patternAtoms[i], flags); + + else if (!this.isBioSequence) search.elementCounts[1] = search.getMissingHydrogenCount(); +if (!this.ignoreStereochemistry && !this.isTarget) this.fixChirality(search); +return search; +}, "JS.SmilesSearch,~S,~N"); +Clazz_defineMethod(c$, "checkNested", +function(search, atom, flags){ +if (atom.iNested > 0) { +var o = search.getNested(atom.iNested); +if ((typeof(o)=='string')) { +var s = o; +if (s.startsWith("select")) return; +if (s.charAt(0) != '~' && atom.bioType != '\0') s = "~" + atom.bioType + "~" + s; +var nested = this.getSubsearch(search, s, flags); +if (nested.ac > 0 && nested.patternAtoms[0].selected) atom.selected = true; +search.setNested(atom.iNested, nested); +}}for (var i = 0; i < atom.nSubAtoms; i++) this.checkNested(search, atom.subAtoms[i], flags); + +}, "JS.SmilesSearch,JS.SmilesAtom,~N"); +Clazz_defineMethod(c$, "fixChirality", +function(search){ +for (var i = search.ac; --i >= 0; ) { +var sAtom = search.patternAtoms[i]; +if (sAtom.stereo != null) sAtom.stereo.fixStereo(sAtom); +} +}, "JS.SmilesSearch"); +Clazz_defineMethod(c$, "parseSmiles", +function(search, pattern, currentAtom, isBranchAtom){ +var ret = Clazz_newIntArray (1, 0); +var pt = 0; +var ch; +var bond = null; +var wasMeasure = false; +var wasBranch = false; +loop : while (pattern != null && pattern.length != 0) { +var index = 0; +if (currentAtom == null) { +index = this.checkBioType(pattern, 0); +if (index == pattern.length) pattern += "*"; +if (this.isBioSequence) search.needAromatic = search.top.needAromatic = false; +}ch = JS.SmilesParser.getChar(pattern, index); +var haveOpen = this.checkBrace(search, ch, '{'); +if (haveOpen) ch = JS.SmilesParser.getChar(pattern, ++index); +if (ch == '(') { +var subString = JS.SmilesParser.getSubPattern(pattern, index, '('); +var isMeasure = (JS.SmilesParser.getChar(pattern, index + 1) == '.'); +if (currentAtom == null) { +if (isMeasure || !this.isSmarts) throw new JS.InvalidSmilesException("No previous atom for measure"); +search.haveComponents = true; +do { +this.componentCount++; +this.componentParenCount++; +ch = JS.SmilesParser.getChar(pattern = pattern.substring(1), 0); +} while (ch == '('); +if (!haveOpen && (haveOpen = this.checkBrace(search, ch, '{')) == true) ch = JS.SmilesParser.getChar(pattern = pattern.substring(1), 0); +} else { +wasMeasure = wasBranch = false; +if (subString.startsWith(".")) { +this.parseMeasure(search, subString.substring(1), currentAtom); +wasMeasure = true; +} else if (subString.length == 0 && this.isBioSequence) { +currentAtom.notCrossLinked = true; +} else { +this.branchLevel++; +this.parseSmiles(search, subString, currentAtom, true); +wasBranch = true; +this.branchLevel--; +}index = subString.length + 2; +ch = JS.SmilesParser.getChar(pattern, index); +if (ch == '}' && this.checkBrace(search, ch, '}')) index++; +ch = '\0'; +}}if (ch != '\0') { +pt = index; +out : while (ch != '\0') { +switch (JS.SmilesBond.isBondType(ch, this.isSmarts, this.isBioSequence)) { +case 1: +break; +case 0: +break out; +case -1: +if (!((JU.PT.isDigit(JS.SmilesParser.getChar(pattern, ++index)) && index++ > 0 ? JU.PT.isDigit(JS.SmilesParser.getChar(pattern, index++)) : true) && (ch = JS.SmilesParser.getChar(pattern, index)) == '-')) throw new JS.InvalidSmilesException("malformed atropisomerism bond ^nn- or ^^nn-"); +continue; +} +ch = JS.SmilesParser.getChar(pattern, ++index); +} +ch = JS.SmilesParser.getChar(pattern, index); +if (ch == ')') { +switch ((ch = JS.SmilesParser.getChar(pattern, ++index)).charCodeAt(0)) { +case 0: +case 41: +case 46: +pattern = pattern.substring(index); +this.componentParenCount--; +if (this.componentParenCount >= 0) continue loop; +} +throw new JS.InvalidSmilesException("invalid continuation after component grouping (SMARTS).(SMARTS)"); +}bond = this.parseBond(search, null, pattern.substring(pt, index), null, currentAtom, false, isBranchAtom, index - pt, ret); +if (haveOpen && bond.order != -1) ch = JS.SmilesParser.getChar(pattern, index = pt); +if (this.checkBrace(search, ch, '{')) ch = JS.SmilesParser.getChar(pattern, ++index); +switch ((ch).charCodeAt(0)) { +case 126: +if (bond.order == 0) { +index = this.checkBioType(pattern, index); +if (index == pattern.length) pattern += "*"; +}break; +case 40: +do { +this.componentCount++; +this.componentParenCount++; +ch = JS.SmilesParser.getChar(pattern, ++index); +} while (ch == '('); +break; +case 0: +if (bond.order == 0) return; +} +var isConnect = (JU.PT.isDigit(ch) || ch == '%'); +var isAtom = (!isConnect && (ch == '_' || ch == '[' || ch == '*' || JU.PT.isLetter(ch))); +if (isConnect) { +if (wasMeasure) throw new JS.InvalidSmilesException("connection number must immediately follow its connecting atom"); +index = JS.SmilesParser.getRingNumber(pattern, index, ch, ret); +var ringNumber = ret[0]; +this.parseConnection(search, ringNumber, currentAtom, bond); +bond = null; +} else if (isAtom) { +wasMeasure = wasBranch = false; +switch ((ch).charCodeAt(0)) { +case 91: +case 95: +var subPattern = JS.SmilesParser.getSubPattern(pattern, index, ch); +index += subPattern.length + (ch == '[' ? 2 : 0); +if (this.isBioSequence && ch == '[' && subPattern.indexOf(".") < 0 && subPattern.indexOf("_") < 0) subPattern += ".0"; +currentAtom = this.parseAtom(search, null, subPattern, currentAtom, bond, ch == '[', false, isBranchAtom); +currentAtom.hasSubpattern = true; +if (bond.order != -1 && bond.order != 0) this.setBondAtom(bond, null, currentAtom, search); +bond = null; +break; +default: +var ch2 = (!this.isBioSequence && JU.PT.isUpperCase(ch) ? JS.SmilesParser.getChar(pattern, index + 1) : '\0'); +if (ch != 'X' || ch2 != 'x') if (!JU.PT.isLowerCase(ch2) || JU.Elements.elementNumberFromSymbol(pattern.substring(index, index + 2), true) == 0) ch2 = '\0'; +if (ch2 != '\0' && "NA CA BA PA SC AC Na Ca Ba Pa Sc Ac".indexOf(pattern.substring(index, index + 2)) >= 0) { +ch2 = '\0'; +}var size = (JU.PT.isUpperCase(ch) && JU.PT.isLowerCase(ch2) ? 2 : 1); +currentAtom = this.parseAtom(search, null, pattern.substring(index, index + size), currentAtom, bond, false, false, isBranchAtom); +bond = null; +index += size; +} +} else { +throw new JS.InvalidSmilesException("Unexpected character: " + JS.SmilesParser.getChar(pattern, index)); +}ch = JS.SmilesParser.getChar(pattern, index); +if (ch == '}' && this.checkBrace(search, ch, '}')) index++; +}pattern = pattern.substring(index); +isBranchAtom = false; +} +}, "JS.SmilesSearch,~S,JS.SmilesAtom,~B"); +Clazz_defineMethod(c$, "parseConnection", +function(search, ringNum, currentAtom, bond){ +var r = Integer.$valueOf(ringNum); +var bond0 = this.connections.get(r); +if (bond0 == null) { +this.connections.put(r, bond); +search.target.ringCount++; +return; +}this.connections.remove(r); +switch (bond.order) { +case -1: +bond.order = (bond0.order != -1 ? bond0.order : this.isSmarts || currentAtom.isAromatic && bond0.atom1.isAromatic ? 81 : 1); +break; +case 1025: +bond.order = 1041; +break; +case 1041: +bond.order = 1025; +break; +} +if (bond0.order != -1 && bond0.order != bond.order || currentAtom === bond0.atom1 || bond0.atom1.getBondTo(currentAtom) != null) throw new JS.InvalidSmilesException("Bad connection type or atom"); +bond0.set(bond); +currentAtom.bondCount--; +bond0.setAtom2(currentAtom, search); +}, "JS.SmilesSearch,~N,JS.SmilesAtom,JS.SmilesBond"); +Clazz_defineMethod(c$, "setBondAtom", +function(bond, a1, a2, search){ +bond.set2a(a1, a2); +if (search != null && bond.order == 2 && bond.atom1 != null && bond.atom2 != null && bond.atom1.isAromatic && bond.atom2.isAromatic && ((this.flags & 512) == 0)) search.setFlags(this.flags = (this.flags | 512)); +}, "JS.SmilesBond,JS.SmilesAtom,JS.SmilesAtom,JS.SmilesSearch"); +c$.getRingNumber = Clazz_defineMethod(c$, "getRingNumber", +function(pattern, index, ch, ret){ +var ringNumber; +switch ((ch).charCodeAt(0)) { +case 37: +if (JS.SmilesParser.getChar(pattern, index + 1) == '(') { +var subPattern = JS.SmilesParser.getSubPattern(pattern, index + 1, '('); +JS.SmilesParser.getDigits(subPattern, 0, ret); +index += subPattern.length + 3; +if (ret[0] < 0) throw new JS.InvalidSmilesException("Invalid number designation: " + subPattern); +} else { +if (index + 3 <= pattern.length) index = JS.SmilesParser.getDigits(pattern.substring(0, index + 3), index + 1, ret); +if (ret[0] < 10) throw new JS.InvalidSmilesException("Two digits must follow the % sign"); +}ringNumber = ret[0]; +break; +default: +ringNumber = ch.charCodeAt(0) - 48; +index++; +} +ret[0] = ringNumber; +return index; +}, "~S,~N,~S,~A"); +Clazz_defineMethod(c$, "checkBioType", +function(pattern, index){ +this.isBioSequence = (pattern.charAt(index) == '~'); +if (this.isBioSequence) { +index++; +this.bioType = '*'; +var ch = JS.SmilesParser.getChar(pattern, 2); +if (ch == '~' && ((ch = pattern.charAt(1)) == '*' || JU.PT.isLowerCase(ch))) { +this.bioType = ch; +index = 3; +}}return index; +}, "~S,~N"); +Clazz_defineMethod(c$, "parseMeasure", +function(search, strMeasure, currentAtom){ +var pt = strMeasure.indexOf(":"); +var id = (pt < 0 ? strMeasure : strMeasure.substring(0, pt)); +while (pt != 0) { +var len = id.length; +if (len == 1) id += "0"; +var m = this.htMeasures.get(id); +if ((m == null) == (pt < 0) || len == 0) break; +try { +if (pt > 0) { +var type = ("__dat".indexOf(id.charAt(0))); +if (type < 2) break; +var ret = Clazz_newIntArray (1, 0); +JS.SmilesParser.getDigits(id, 1, ret); +var index = ret[0]; +strMeasure = strMeasure.substring(pt + 1); +var isNot = strMeasure.startsWith("!"); +if (isNot) strMeasure = strMeasure.substring(1); +var isNegative = (strMeasure.startsWith("-")); +if (isNegative) strMeasure = strMeasure.substring(1); +strMeasure = JU.PT.rep(strMeasure, "-", ","); +strMeasure = JU.PT.rep(strMeasure, ",,", ",-"); +if (isNegative) strMeasure = "-" + strMeasure; +var tokens = JU.PT.split(strMeasure, ","); +if (tokens.length % 2 == 1 || isNot && tokens.length != 2) break; +var vals = Clazz_newFloatArray (tokens.length, 0); +var i = tokens.length; +for (; --i >= 0; ) if (Float.isNaN(vals[i] = Float.parseFloat(tokens[i]))) break; + +if (i >= 0) break; +m = new JS.SmilesMeasure(search, index, type, isNot, vals); +search.measures.addLast(m); +if (index > 0) this.htMeasures.put(id, m); + else if (index == 0 && JU.Logger.debugging) JU.Logger.debug("measure created: " + m); +} else { +if (!m.addPoint(currentAtom.index)) break; +if (m.nPoints == m.type) { +this.htMeasures.remove(id); +if (JU.Logger.debugging) JU.Logger.debug("measure created: " + m); +}return; +}if (!m.addPoint(currentAtom.index)) break; +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +break; +} else { +throw e; +} +} +return; +} +throw new JS.InvalidSmilesException("invalid measure: " + strMeasure); +}, "JS.SmilesSearch,~S,JS.SmilesAtom"); +Clazz_defineMethod(c$, "checkBrace", +function(search, ch, type){ +switch ((ch).charCodeAt(0)) { +case 123: +if (ch != type) break; +this.braceCount++; +search.top.haveSelected = true; +return true; +case 125: +if (ch != type) break; +if (this.braceCount > 0) { +this.braceCount--; +return true; +}break; +default: +return false; +} +throw new JS.InvalidSmilesException("Unmatched '}'"); +}, "JS.SmilesSearch,~S,~S"); +Clazz_defineMethod(c$, "parseNested", +function(search, pattern, prefix){ +var index; +prefix = "$(" + prefix; +while ((index = pattern.lastIndexOf(prefix)) >= 0) { +var s = JS.SmilesParser.getSubPattern(pattern, index + 1, '('); +var pt = index + s.length + 3; +var ext = pattern.substring(pt); +pattern = pattern.substring(0, index); +var op = ""; +if (pattern.endsWith("]")) throw new JS.InvalidSmilesException("$(...) must be enclosed in brackets: " + pattern + "$(" + s + ")"); +if (index > 1 && prefix.length == 2 && ((pt = pattern.length) > 1 && ",;&![".indexOf(pattern.substring(pt - 1)) < 0)) op = "&"; +if (ext.length > 1 && ",;&!)]".indexOf(ext.charAt(0)) < 0) ext = "&" + ext; +pattern = pattern + op + "_" + search.top.addNested(s) + "_" + ext; +} +return pattern; +}, "JS.SmilesSearch,~S,~S"); +Clazz_defineMethod(c$, "parseVariables", +function(pattern){ +var keys = new JU.Lst(); +var values = new JU.Lst(); +var index; +var ipt = 0; +var iptLast = -1; +if (JU.Logger.debugging) JU.Logger.info(pattern); +while ((index = pattern.indexOf("$", ipt)) >= 0) { +if (JS.SmilesParser.getChar(pattern, index + 1) == '(') break; +ipt = JS.SmilesParser.skipTo(pattern, index, '='); +if (ipt <= index + 1 || JS.SmilesParser.getChar(pattern, ipt + 1) != '\"') break; +var key = pattern.substring(index, ipt); +if (key.lastIndexOf('$') > 0 || key.indexOf(']') > 0) throw new JS.InvalidSmilesException("Invalid variable name: " + key); +var s = JS.SmilesParser.getSubPattern(pattern, ipt + 1, '\"'); +keys.addLast("[" + key + "]"); +values.addLast(s); +ipt += s.length + 2; +ipt = JS.SmilesParser.skipTo(pattern, ipt, ';'); +iptLast = ++ipt; +} +if (iptLast < 0) return pattern; +pattern = pattern.substring(iptLast); +for (var i = keys.size(); --i >= 0; ) { +var k = keys.get(i); +var v = values.get(i); +if (!v.equals(k)) pattern = JU.PT.rep(pattern, k, v); +} +if (JU.Logger.debugging) JU.Logger.info(pattern); +return pattern; +}, "~S"); +Clazz_defineMethod(c$, "parseAtom", +function(search, atomSet, pattern, atom, bond, isBracketed, isAND, isBranchAtom){ +if (pattern == null || pattern.length == 0) throw new JS.InvalidSmilesException("Empty atom definition"); +var newAtom = new JS.SmilesAtom(); +if (this.componentParenCount > 0) newAtom.component = this.componentCount; +if (atomSet == null) search.appendAtom(newAtom); +var isNewAtom = true; +if (!this.checkLogic(search, pattern, newAtom, null, atom, isAND, isBranchAtom, null)) { +var ret = Clazz_newIntArray (1, 0); +if (this.isBioSequence && pattern.length == 1) pattern += ".0"; +var ch = pattern.charAt(0); +var index = 0; +var isNot = false; +if (this.isSmarts && ch == '!') { +ch = JS.SmilesParser.getChar(pattern, ++index); +if (ch == '\0') throw new JS.InvalidSmilesException("invalid '!'"); +newAtom.not = isNot = true; +}var biopt = (pattern.indexOf("@PH") >= 0 ? -1 : pattern.indexOf('.')); +if (biopt >= 0) { +newAtom.isBioResidue = true; +var resOrName = pattern.substring(index, biopt); +pattern = pattern.substring(biopt + 1).toUpperCase(); +var len = resOrName.length; +if ((biopt = resOrName.indexOf("^")) >= 0) { +if (biopt == len - 2) { +ch = resOrName.charAt(len - 1); +if (ch != '*') newAtom.insCode = ch; +}resOrName = resOrName.substring(0, biopt); +}if ((biopt = resOrName.indexOf("#")) >= 0) { +JS.SmilesParser.getDigits(resOrName, biopt + 1, ret); +newAtom.residueNumber = ret[0]; +resOrName = resOrName.substring(0, biopt); +}if (resOrName.length == 0) resOrName = "*"; +if (resOrName.length > 1) newAtom.residueName = resOrName.toUpperCase(); + else if (!resOrName.equals("*")) newAtom.residueChar = resOrName; +resOrName = pattern; +if ((biopt = resOrName.indexOf("#")) >= 0) { +JS.SmilesParser.getDigits(resOrName, biopt + 1, ret); +newAtom.elementNumber = ret[0]; +resOrName = resOrName.substring(0, biopt); +}if (resOrName.length == 0) resOrName = "*"; + else if (resOrName.equals("0")) resOrName = "\0"; +if (resOrName.equals("*")) newAtom.isBioAtomWild = true; + else newAtom.setAtomName(resOrName); +ch = '\0'; +}newAtom.setBioAtom(this.bioType); +var hydrogenCount = -2147483648; +while (ch != '\0' && isNewAtom) { +newAtom.setAtomName(this.isBioSequence ? "\0" : ""); +if (JU.PT.isDigit(ch)) { +index = JS.SmilesParser.getDigits(pattern, index, ret); +var mass = ret[0]; +if (mass == -2147483648) throw new JS.InvalidSmilesException("Non numeric atomic mass"); +if (JS.SmilesParser.getChar(pattern, index) == '?') { +index++; +mass = -mass; +}if (newAtom.elementDefined) throw new JS.InvalidSmilesException("atom mass must precede atom symbol or be separated from it with \";\""); +newAtom.setAtomicMass(mass); +} else { +switch ((ch).charCodeAt(0)) { +case 34: +var type = JU.PT.getQuotedStringAt(pattern, index); +index += type.length + 2; +newAtom.atomType = type; +break; +case 95: +index = JS.SmilesParser.getDigits(pattern, index + 1, ret) + 1; +if (ret[0] == -2147483648) throw new JS.InvalidSmilesException("Invalid SEARCH primitive: " + pattern.substring(index)); +newAtom.iNested = ret[0]; +if (!isBracketed) throw new JS.InvalidSmilesException("nesting must appear in [...]: $(" + search.getNested(ret[0]) + ")"); +if (this.isBioSequence && index != pattern.length) throw new JS.InvalidSmilesException("invalid characters: " + pattern.substring(index)); +break; +case 61: +index = JS.SmilesParser.getDigits(pattern, index + 1, ret); +newAtom.jmolIndex = ret[0]; +break; +case 35: +var isAtomNo = (pattern.charAt(index + 1) == '-'); +index = JS.SmilesParser.getDigits(pattern, index + (isAtomNo ? 2 : 1), ret); +if (isAtomNo) newAtom.atomNumber = ret[0]; + else newAtom.elementNumber = ret[0]; +break; +case 45: +case 43: +index = this.checkCharge(pattern, index, newAtom); +break; +case 64: +if (search.stereo == null) search.stereo = JS.SmilesStereo.newStereo(search); +index = JS.SmilesStereo.checkChirality(search, pattern, index, search.patternAtoms[newAtom.index]); +break; +case 58: +index = JS.SmilesParser.getDigits(pattern, ++index, ret); +if (ret[0] == -2147483648) throw new JS.InvalidSmilesException("Invalid atom class"); +newAtom.atomClass = ret[0]; +break; +default: +var nextChar = JS.SmilesParser.getChar(pattern, index + 1); +var len = index + (JU.PT.isLowerCase(nextChar) && (!isBracketed || !JU.PT.isDigit(JS.SmilesParser.getChar(pattern, index + 2))) ? 2 : 1); +var sym2 = pattern.substring(index + 1, len); +var symbol = Character.toUpperCase(ch) + sym2; +var mustBeSymbol = true; +var checkForPrimitive = (isBracketed && JU.PT.isLetter(ch)); +if (checkForPrimitive) { +if (!isNot && (isAND ? atomSet : newAtom).hasSymbol) { +mustBeSymbol = false; +} else if (ch == 'H') { +mustBeSymbol = (pattern.length == 1 || !JU.PT.isDigit(nextChar)); +} else if (JU.PT.isDigit(nextChar)) { +mustBeSymbol = false; +} else if (!symbol.equals("A") && !symbol.equals("Xx")) { +mustBeSymbol = ((ch == 'h' ? len == 2 : true) && JU.Elements.elementNumberFromSymbol(symbol, true) > 0); +if (!mustBeSymbol && len == 2) { +sym2 = ""; +symbol = symbol.substring(0, 1); +mustBeSymbol = (JU.Elements.elementNumberFromSymbol(symbol, true) > 0); +}}}if (mustBeSymbol) { +if (!isBracketed && !this.isSmarts && !this.isBioSequence && !JS.SmilesAtom.allowSmilesUnbracketed(symbol) || !newAtom.setSymbol(symbol = ch + sym2)) throw new JS.InvalidSmilesException("Invalid atom symbol: " + symbol); +if (isAND) atomSet.hasSymbol = true; +index += symbol.length; +} else { +index = JS.SmilesParser.getDigits(pattern, index + 1, ret); +var val = ret[0]; +switch ((ch).charCodeAt(0)) { +default: +throw new JS.InvalidSmilesException("Invalid SEARCH primitive: " + pattern.substring(index)); +case 68: +newAtom.setDegree(val == -2147483648 ? 1 : val); +break; +case 100: +newAtom.setNonhydrogenDegree(val == -2147483648 ? 1 : val); +break; +case 72: +hydrogenCount = (val == -2147483648 ? 1 : val); +break; +case 104: +newAtom.setImplicitHydrogenCount(val == -2147483648 ? -1 : val); +break; +case 82: +if (val == -2147483648) val = -1; +newAtom.setRingMembership(val); +search.top.needRingData = true; +break; +case 114: +if (val == -2147483648) { +val = -1; +newAtom.setRingMembership(val); +} else { +newAtom.setRingSize(val); +switch (val) { +case 500: +val = 5; +break; +case 600: +val = 6; +break; +} +if (val > search.ringDataMax) search.ringDataMax = val; +}search.top.needRingData = true; +break; +case 118: +newAtom.setValence(val == -2147483648 ? 1 : val); +break; +case 88: +newAtom.setConnectivity(val == -2147483648 ? 1 : val); +break; +case 120: +newAtom.setRingConnectivity(val == -2147483648 ? -1 : val); +search.top.needRingData = true; +break; +} +}} +}ch = JS.SmilesParser.getChar(pattern, index); +if (isNot && ch != '\0') throw new JS.InvalidSmilesException("'!' may only involve one primitive."); +} +if (hydrogenCount == -2147483648 && isBracketed) hydrogenCount = -2147483647; +newAtom.setExplicitHydrogenCount(hydrogenCount); +search.patternAtoms[newAtom.index].setExplicitHydrogenCount(hydrogenCount); +}if (this.braceCount > 0) newAtom.selected = true; +if (isNewAtom && atomSet != null) atomSet.addSubAtom(newAtom, isAND); +if (atom != null && bond.order == 0) { +newAtom.notBondedIndex = atom.index; +}if (atom != null && bond.order != 0) { +if (bond.order == -1) bond.order = (this.isBioSequence && isBranchAtom ? 112 : this.isSmarts || atom.isAromatic && newAtom.isAromatic ? 81 : 1); +if (!isBracketed) this.setBondAtom(bond, null, newAtom, search); +if (this.branchLevel == 0 && (bond.getBondType() == 17 || bond.order == 112)) this.branchLevel++; +}if (this.branchLevel == 0) search.lastChainAtom = newAtom; +return newAtom; +}, "JS.SmilesSearch,JS.SmilesAtom,~S,JS.SmilesAtom,JS.SmilesBond,~B,~B,~B"); +Clazz_defineMethod(c$, "checkCharge", +function(pattern, index, newAtom){ +var len = pattern.length; +var ch = pattern.charAt(index); +var count = 1; +++index; +if (index < len) { +var nextChar = pattern.charAt(index); +if (JU.PT.isDigit(nextChar)) { +var ret = Clazz_newIntArray (1, 0); +index = JS.SmilesParser.getDigits(pattern, index, ret); +count = ret[0]; +if (count == -2147483648) throw new JS.InvalidSmilesException("Non numeric charge"); +} else { +while (index < len && pattern.charAt(index) == ch) { +index++; +count++; +} +}}newAtom.setCharge(ch == '+' ? count : -count); +return index; +}, "~S,~N,JS.SmilesAtom"); +Clazz_defineMethod(c$, "parseBond", +function(search, bondSet, pattern, bond, currentAtom, isAND, isBranchAtom, len, ret){ +var ch; +if (len > 0) { +switch ((ch = pattern.charAt(0)).charCodeAt(0)) { +case 62: +if (!pattern.equals(">>")) { +len = -1; +break; +}case 46: +if (bond == null && bondSet == null) { +this.isBioSequence = (JS.SmilesParser.getChar(pattern, 1) == '~'); +return new JS.SmilesBond(null, null, 0, false); +}len = -1; +break; +case 43: +if (bondSet != null) len = -1; +break; +} +} else { +ch = '\0'; +}var newBond = (bondSet == null ? (bond == null ? new JS.SmilesBond(currentAtom, null, (this.isBioSequence && currentAtom != null ? (isBranchAtom ? 112 : 96) : -1), false) : bond) : isAND ? bondSet.addPrimitive() : bondSet.addBondOr()); +if (len > 0 && !this.checkLogic(search, pattern, null, newBond, currentAtom, isAND, false, ret)) { +var isBondNot = (ch == '!'); +if (isBondNot) { +ch = JS.SmilesParser.getChar(pattern, 1); +if (ch == '\0' || ch == '!') throw new JS.InvalidSmilesException("invalid '!'"); +}var bondType = JS.SmilesBond.getBondTypeFromCode(ch); +if (bondType == 65) search.top.needRingMemberships = true; +if (currentAtom == null && bondType != 0) throw new JS.InvalidSmilesException("Bond without a previous atom"); +switch (bondType) { +case 65537: +case 65538: +if ((len = pattern.length) < (isBondNot ? 3 : 2) || pattern.charAt(len - 1) != '-') { +len = 0; +} else { +if (len == (isBondNot ? 3 : 2)) { +newBond.setAtropType(22); +} else { +JS.SmilesParser.getDigits(pattern, (isBondNot ? 2 : 1), ret); +newBond.setAtropType(ret[0]); +}}search.haveBondStereochemistry = true; +break; +case 1025: +case 1041: +this.bondDirectionPaired = !this.bondDirectionPaired; +search.haveBondStereochemistry = true; +break; +case 17: +break; +case 2: +search.top.nDouble++; +case 1: +if (currentAtom.isAromatic) search.top.needRingData = true; +break; +} +newBond.set2(bondType, isBondNot); +if (this.isBioSequence && bondSet != null) bondSet.set2(bondType, isBondNot); +}if (len == -1) throw new JS.InvalidSmilesException("invalid bond:" + ch); +return newBond; +}, "JS.SmilesSearch,JS.SmilesBond,~S,JS.SmilesBond,JS.SmilesAtom,~B,~B,~N,~A"); +Clazz_defineMethod(c$, "checkLogic", +function(search, pattern, atom, bond, currentAtom, isAND, isBranchAtom, ret){ +var pt = pattern.lastIndexOf("!"); +if (atom != null) atom.pattern = pattern; +while (pt > 0) { +if (",;&!(".indexOf(pattern.charAt(pt - 1)) < 0) pattern = pattern.substring(0, pt) + "&" + pattern.substring(pt); +pt = pattern.lastIndexOf("!", pt - 1); +} +pt = pattern.indexOf(','); +var len = pattern.length; +var and = "&"; +out : while (true) { +var haveOr = (pt > 0); +if (haveOr && !this.isSmarts || pt == 0) break; +pt = pattern.indexOf(';'); +if (pt >= 0) { +if (!this.isSmarts || pt == 0) break; +if (haveOr) { +and = ";"; +haveOr = false; +} else { +pattern = pattern.$replace(';', '&'); +}}var index = 0; +if (haveOr) { +pattern += ","; +while ((pt = pattern.indexOf(',', index)) > 0 && pt <= len) { +var s = pattern.substring(index, pt); +if (s.length == 0) throw new JS.InvalidSmilesException("missing " + (bond == null ? "atom" : "bond") + " token"); +if (bond == null) this.parseAtom(search, atom, s, null, null, true, false, isBranchAtom); + else this.parseBond(search, bond, s, null, currentAtom, false, false, s.length, ret); +index = pt + 1; +} +} else if ((pt = pattern.indexOf(and)) >= 0 || bond != null && len > 1 && !isAND) { +if (pt == 0 || bond == null && !this.isSmarts) break; +if (bond != null && pt < 0) { +if (len > 1) { +var sNew = new JU.SB(); +for (var i = 0; i < len; ) { +var ch = pattern.charAt(i++); +sNew.appendC(ch); +switch ((ch).charCodeAt(0)) { +case 33: +if (!this.isSmarts) break out; +continue; +case 94: +case 96: +while ((ch = pattern.charAt(i++)) != '-' && ch != '\0') { +sNew.appendC(ch); +} +sNew.appendC('-'); +break; +} +if (i < len) { +if (!this.isSmarts) break out; +sNew.append(and); +}} +pattern = sNew.toString(); +len = pattern.length; +}}pattern += and; +while ((pt = pattern.indexOf(and, index)) > 0 && pt <= len) { +var s = pattern.substring(index, pt); +if (bond == null) this.parseAtom(search, atom, s, null, null, true, true, isBranchAtom); + else this.parseBond(search, this.isSmarts ? bond : null, s, this.isSmarts ? null : bond, currentAtom, true, false, s.length, ret); +index = pt + 1; +} +} else { +return false; +}return true; +} +var ch = pattern.charAt(pt); +throw new JS.InvalidSmilesException((this.isSmarts ? "invalid placement for '" + ch + "'" : "[" + ch + "] notation only valid with SMARTS, not SMILES,") + " in " + pattern); +}, "JS.SmilesSearch,~S,JS.SmilesAtom,JS.SmilesBond,JS.SmilesAtom,~B,~B,~A"); +c$.getSubPattern = Clazz_defineMethod(c$, "getSubPattern", +function(pattern, index, ch){ +var ch2; +var margin = 1; +switch ((ch).charCodeAt(0)) { +case 91: +ch2 = ']'; +break; +case 34: +case 37: +case 47: +ch2 = ch; +break; +case 40: +ch2 = ')'; +break; +default: +ch2 = ch; +margin = 0; +} +var len = pattern.length; +var pCount = 1; +for (var pt = index + 1; pt < len; pt++) { +var ch1 = pattern.charAt(pt); +if (ch1 == ch2) { +pCount--; +if (pCount == 0) return pattern.substring(index + margin, pt + 1 - margin); +} else if (ch1 == ch) { +pCount++; +}} +throw new JS.InvalidSmilesException("Unmatched " + ch); +}, "~S,~N,~S"); +c$.getChar = Clazz_defineMethod(c$, "getChar", +function(pattern, i){ +return (i < pattern.length ? pattern.charAt(i) : '\0'); +}, "~S,~N"); +c$.getDigits = Clazz_defineMethod(c$, "getDigits", +function(pattern, index, ret){ +var pt = index; +var len = pattern.length; +while (pt < len && JU.PT.isDigit(pattern.charAt(pt))) pt++; + +if (pt > index) try { +ret[0] = Integer.parseInt(pattern.substring(index, pt)); +return pt; +} catch (e) { +if (Clazz_exceptionOf(e,"NumberFormatException")){ +} else { +throw e; +} +} +ret[0] = -2147483648; +return pt; +}, "~S,~N,~A"); +c$.skipTo = Clazz_defineMethod(c$, "skipTo", +function(pattern, index, ch0){ +var pt = index; +var ch; +while ((ch = JS.SmilesParser.getChar(pattern, ++pt)) != ch0 && ch != '\0') { +} +return (ch == '\0' ? -1 : pt); +}, "~S,~N,~S"); +c$.cleanPattern = Clazz_defineMethod(c$, "cleanPattern", +function(pattern){ +pattern = JU.PT.replaceAllCharacters(pattern, " \t\n\r", ""); +pattern = JU.PT.rep(pattern, "^^", "`"); +var i = 0; +var i2 = 0; +while ((i = pattern.indexOf("//*")) >= 0 && (i2 = pattern.indexOf("*//")) >= i) pattern = pattern.substring(0, i) + pattern.substring(i2 + 3); + +pattern = JU.PT.rep(pattern, "//", ""); +return pattern; +}, "~S"); +c$.extractFlags = Clazz_defineMethod(c$, "extractFlags", +function(pattern, ret){ +pattern = JS.SmilesParser.cleanPattern(pattern); +var flags = 0; +while (pattern.startsWith("/")) { +var strFlags = JS.SmilesParser.getSubPattern(pattern, 0, '/').toUpperCase(); +pattern = pattern.substring(strFlags.length + 2); +flags = JS.SmilesSearch.addFlags(flags, strFlags); +} +ret[0] = flags; +return pattern; +}, "~S,~A"); +c$.getFlags = Clazz_defineMethod(c$, "getFlags", +function(pattern){ +var ret = Clazz_newIntArray (1, 0); +JS.SmilesParser.extractFlags(pattern, ret); +return ret[0]; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.SmilesExt", ["JU.AU", "$.BS", "$.Lst", "$.M4", "$.Measure", "$.P3", "J.api.Interface", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.e = null; +Clazz_instantialize(this, arguments);}, JS, "SmilesExt", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "init", +function(se){ +this.e = se; +return this; +}, "~O"); +Clazz_defineMethod(c$, "getSmilesCorrelation", +function(bsA, bsB, smiles, ptsA, ptsB, m4, vReturn, asMap, mapSet, center, bestMap, flags){ +var tolerance = (mapSet == null ? 0.1 : 3.4028235E38); +try { +if (ptsA == null) { +ptsA = new JU.Lst(); +ptsB = new JU.Lst(); +}var m = new JU.M4(); +var c = new JU.P3(); +var atoms = this.e.vwr.ms.at; +var ac = this.e.vwr.ms.ac; +var sm = this.e.vwr.getSmilesMatcher(); +var maps = sm.getCorrelationMaps(smiles, atoms, ac, bsA, flags | 8); +if (maps == null) this.e.evalError(sm.getLastException(), null); +if (maps.length == 0) return NaN; +var mapFirst = maps[0]; +for (var i = 0; i < mapFirst.length; i++) ptsA.addLast(atoms[mapFirst[i]]); + +maps = sm.getCorrelationMaps(smiles, atoms, ac, bsB, flags); +if (maps == null) this.e.evalError(sm.getLastException(), null); +if (maps.length == 0) return NaN; +JU.Logger.info(maps.length + " mappings found"); +if (bestMap || !asMap) { +var lowestStdDev = 3.4028235E38; +var mapBest = null; +for (var i = 0; i < maps.length; i++) { +ptsB.clear(); +for (var j = 0; j < maps[i].length; j++) ptsB.addLast(atoms[maps[i][j]]); + +J.api.Interface.getInterface("JU.Eigen", this.e.vwr, "script"); +var stddev = (ptsB.size() == 1 ? 0 : JU.Measure.getTransformMatrix4(ptsA, ptsB, m, null)); +JU.Logger.info("getSmilesCorrelation stddev=" + stddev); +if (vReturn != null) { +if (stddev < tolerance) { +var bs = new JU.BS(); +for (var j = 0; j < maps[i].length; j++) bs.set(maps[i][j]); + +vReturn.addLast(bs); +}}if (stddev < lowestStdDev) { +mapBest = maps[i]; +if (m4 != null) m4.setM4(m); +if (center != null) center.setT(c); +lowestStdDev = stddev; +}} +if (mapSet != null) { +mapSet[0] = mapFirst; +mapSet[1] = mapBest; +}ptsB.clear(); +for (var i = 0; i < mapBest.length; i++) ptsB.addLast(atoms[mapBest[i]]); + +return lowestStdDev; +}for (var i = 0; i < maps.length; i++) for (var j = 0; j < maps[i].length; j++) ptsB.addLast(atoms[maps[i][j]]); + + +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +return 0; +}, "JU.BS,JU.BS,~S,JU.Lst,JU.Lst,JU.M4,JU.Lst,~B,~A,JU.P3,~B,~N"); +Clazz_defineMethod(c$, "getSmilesMatches", +function(pattern, smiles, bsSelected, bsMatch3D, flags, asOneBitset, firstMatchOnly){ +if (pattern.length == 0 || pattern.endsWith("///") || pattern.equals("H") || pattern.equals("H2") || pattern.equals("top") || pattern.equalsIgnoreCase("NOAROMATIC")) { +try { +return this.e.vwr.getSmilesOpt(bsSelected, 0, 0, flags | (pattern.equals("H2") ? 8192 : 0) | (pattern.equals("H") ? 4096 : 0) | (pattern.equals("top") ? 16384 : 0) | (pattern.equalsIgnoreCase("NOAROMATIC") ? 16 : 0), (pattern.endsWith("///") ? pattern : null)); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +} else { +throw ex; +} +} +}var b; +if (bsMatch3D == null) { +try { +if (smiles == null) { +b = this.e.vwr.getSubstructureSetArray(pattern, bsSelected, flags); +} else if (pattern.equals("chirality")) { +return this.e.vwr.calculateChiralityForSmiles(smiles); +} else { +var isSmarts = ((flags & 2) == 2); +var ignoreElements = ((flags & 16384) == 16384); +flags = (isSmarts ? 2 : 1) | (firstMatchOnly ? 8 : 0) | (ignoreElements ? 16384 : 0); +if (!((typeof(smiles)=='string'))) { +return this.e.vwr.getSmilesMatcher().hasStructure(pattern, smiles, flags); +}var map = this.e.vwr.getSmilesMatcher().find(pattern, smiles, flags); +if (!asOneBitset) return (!firstMatchOnly ? map : map.length == 0 ? Clazz_newIntArray (0, 0) : map[0]); +var bs = new JU.BS(); +for (var j = 0; j < map.length; j++) { +var a = map[j]; +for (var k = a.length; --k >= 0; ) if (a[k] >= 0) bs.set(a[k]); + +} +if (!isSmarts) return Clazz_newIntArray (bs.cardinality(), 0); +var iarray = Clazz_newIntArray (bs.cardinality(), 0); +var pt = 0; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) iarray[pt++] = i; + +return iarray; +}} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +this.e.evalError(ex.getMessage(), null); +return null; +} else { +throw ex; +} +} +} else { +var vReturn = new JU.Lst(); +var stddev = this.getSmilesCorrelation(bsMatch3D, bsSelected, pattern, null, null, null, vReturn, false, null, null, false, flags); +if (Float.isNaN(stddev)) return (asOneBitset ? new JU.BS() : Clazz_newArray(-1, [])); +this.e.showString("RMSD " + stddev + " Angstroms"); +b = vReturn.toArray( new Array(vReturn.size())); +}if (asOneBitset) { +var bs = new JU.BS(); +for (var j = 0; j < b.length; j++) bs.or(b[j]); + +return bs; +}var list = new JU.Lst(); +for (var j = 0; j < b.length; j++) list.addLast(b[j]); + +return list; +}, "~S,~O,JU.BS,JU.BS,~N,~B,~B"); +Clazz_defineMethod(c$, "getFlexFitList", +function(bs1, bs2, smiles1, isSmarts){ +var mapSet = JU.AU.newInt2(2); +this.getSmilesCorrelation(bs1, bs2, smiles1, null, null, null, null, false, mapSet, null, false, isSmarts ? 2 : 1); +if (mapSet[0] == null) return null; +var bondMap1 = this.e.vwr.ms.getDihedralMap(mapSet[0]); +var bondMap2 = (bondMap1 == null ? null : this.e.vwr.ms.getDihedralMap(mapSet[1])); +if (bondMap2 == null || bondMap2.length != bondMap1.length) return null; +var angles = Clazz_newFloatArray (bondMap1.length, 3, 0); +var atoms = this.e.vwr.ms.at; +JS.SmilesExt.getTorsions(atoms, bondMap2, angles, 0); +JS.SmilesExt.getTorsions(atoms, bondMap1, angles, 1); +var data = Clazz_newFloatArray (bondMap1.length * 6, 0); +for (var i = 0, pt = 0; i < bondMap1.length; i++) { +var map = bondMap1[i]; +data[pt++] = map[0]; +data[pt++] = map[1]; +data[pt++] = map[2]; +data[pt++] = map[3]; +data[pt++] = angles[i][0]; +data[pt++] = angles[i][1]; +} +return data; +}, "JU.BS,JU.BS,~S,~B"); +c$.getTorsions = Clazz_defineMethod(c$, "getTorsions", +function(atoms, bondMap, diff, pt){ +for (var i = bondMap.length; --i >= 0; ) { +var map = bondMap[i]; +var v = JU.Measure.computeTorsion(atoms[map[0]], atoms[map[1]], atoms[map[2]], atoms[map[3]], true); +if (pt == 1) { +if (v - diff[i][0] > 180) v -= 360; + else if (v - diff[i][0] <= -180) v += 360; +}diff[i][pt] = v; +} +}, "~A,~A,~A,~N"); +Clazz_defineMethod(c$, "mapPolyhedra", +function(i1, i2, isSmiles, m){ +var ptsA = new JU.Lst(); +var ptsB = new JU.Lst(); +var data; +data = Clazz_newArray(-1, [Integer.$valueOf(i1), null]); +this.e.getShapePropertyData(21, "syminfo", data); +var p1 = data[1]; +data[0] = Integer.$valueOf(i2); +data[1] = null; +this.e.getShapePropertyData(21, "syminfo", data); +var p2 = data[1]; +if (p1 == null || p2 == null) return NaN; +var smiles1 = p1.get("polySmiles"); +var smiles2 = p2.get("polySmiles"); +var map = this.getSmilesMatches(smiles2, smiles1, null, null, isSmiles ? 1 : 16385, false, true); +if (map.length == 0) return NaN; +ptsA.addLast(p1.get("center")); +var a = p1.get("vertices"); +for (var i = 0, n = a.length; i < n; i++) ptsA.addLast(a[map[i + 1] - 1]); + +ptsB.addLast(p2.get("center")); +a = p2.get("vertices"); +for (var i = 0, n = a.length; i < n; i++) ptsB.addLast(a[i]); + +J.api.Interface.getInterface("JU.Eigen", this.e.vwr, "script"); +return JU.Measure.getTransformMatrix4(ptsA, ptsB, m, null); +}, "~N,~N,~B,JU.M4"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coresmiles.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coresmiles.z.js new file mode 100755 index 000000000000..35c41b4b90a5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coresmiles.z.js @@ -0,0 +1,214 @@ +(function(W,X,Y,Z,T,$,G,M,A,I,K,U,aa,N,ba,H,y,R,S,O,Q,ca,V,da,ea,fa,ga,P,ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,Ca,Da,Ea,Fa,Ga,Ha,j,p){G("JS");A(["JU.BS","$.V3"],"JS.VTemp",null,function(){var b=K(function(){this.bsTemp=this.vNorm4=this.vNorm3=this.vNorm2=this.vTemp2=this.vTemp1=this.vB=this.vA=this.vTemp=null;I(this,arguments)},JS,"VTemp",null);O(b,function(){this.vTemp=new JU.V3;this.vA=new JU.V3;this.vB=new JU.V3;this.vTemp1=new JU.V3;this.vTemp2=new JU.V3;this.vNorm2=new JU.V3; +this.vNorm3=new JU.V3;this.vNorm4=new JU.V3;this.bsTemp=new JU.BS})});G("J.api");V(J.api,"SmilesMatcherInterface");G("JS");A(["J.api.SmilesMatcherInterface"],"JS.SmilesMatcher","JU.AU $.BS $.PT JS.InvalidSmilesException $.SmilesAtom $.SmilesBond $.SmilesGenerator $.SmilesParser $.SmilesSearch JU.BSUtil $.Elements $.Logger".split(" "),function(){var b=K(function(){this.okMF=!0;I(this,arguments)},JS,"SmilesMatcher",null,J.api.SmilesMatcherInterface);p(b,"getLastException",function(){return!0==this.okMF? +JS.InvalidSmilesException.getLastError():"MF_FAILED"});p(b,"getMolecularFormula",function(a,c,h){this.clearExceptions();a=JS.SmilesParser.newSearch("/nostereo/"+a,c,!0);a.createTopoMap(null);a.nodes=a.target.nodes;return a.getMolecularFormula(!c,null,h)},"~S,~B,~B");j(b,"clearExceptions",function(){JS.InvalidSmilesException.clear()});p(b,"getSmiles",function(a,c,h,e,d){this.clearExceptions();return(new JS.SmilesGenerator).getSmiles(this,a,c,h,e,d)},"~A,~N,JU.BS,~S,~N");p(b,"areEqual",function(a,c){this.clearExceptions(); +var h=0<=a.indexOf("*");if(!h&&a.equals(c))return 1;h=this.matchPriv(a,null,0,null,null,!1,(h?2:1)|8,2,JS.SmilesParser.newSearch(c,!1,!0));return null==h?-1:h.length},"~S,~S");j(b,"areEqualTest",function(a,c){c.set();var h=this.matchPriv(a,null,0,null,null,!1,9,2,c);return null!=h&&1==h.length},"~S,JS.SmilesSearch");p(b,"find",function(a,c,h){this.clearExceptions();c=JS.SmilesParser.cleanPattern(c);a=JS.SmilesParser.cleanPattern(a);c=JS.SmilesParser.newSearch(c,!1,!0);a=this.matchPriv(a,null,0,null, +null,!1,h,3,c);for(h=a.length;0<=--h;)for(var e=a[h],d=e.length;0<=--d;)e[d]=c.target.nodes[e[d]].mapIndex;return a},"~S,~S,~N");p(b,"getAtoms",function(a){this.clearExceptions();a=JS.SmilesParser.cleanPattern(a);a=JS.SmilesParser.newSearch(a,!1,!0);a.createTopoMap(new JU.BS);return a.target.nodes},"~S");p(b,"getRelationship",function(a,c){if(null==a||null==c||0==a.length||0==c.length)return"";var h=this.getMolecularFormula(a,!1,!1),e=this.getMolecularFormula(c,!1,!1);if(!h.equals(e))return"none"; +var d,h=JU.PT.countChar(JU.PT.rep(a,"@@","@"),"@"),e=JU.PT.countChar(JU.PT.rep(c,"@@","@"),"@");d=h==e&&0d.indexOf("@SP"))&&(d=0=h||(j=m[(r+1)%q])>=h)&&null==g[n].getBondTo(g[j]))(new JS.SmilesBond(g[n],g[j],1,!1)).index=b++;for(l=0;lk?g:g.substring(0,k))}for(f=0;fthis.ac&&(this.patternAtoms=JU.AU.arrayCopyObject(this.patternAtoms,this.ac));this.nodes=this.patternAtoms;this.isTopology=!0;this.patternAromatic=!1;this.patternBioSequence=!0;for(var a=this.ac;0<=--a;){var c=this.patternAtoms[a];this.isTopology&& +c.isDefined()&&(this.isTopology=!1);c.isBioResidue||(this.patternBioSequence=!1);c.isAromatic&&(this.patternAromatic=!0);c.setBondArray();if(this.autoAddImplicitH&&!this.isSmarts&&"\x00"==c.bioType&&!c.setHydrogenCount())throw new JS.InvalidSmilesException("unbracketed atoms must be one of: B, C, N, O, P, S, F, Cl, Br, I, *,");}if(this.haveComponents)for(a=this.ac;0<=--a;)for(var c=this.patternAtoms[a],h=c.bonds,e=c.component,d=c.bondCount;0<=--d;){var f=h[d],g;if(f.isConnection&&f.atom2===c&&(g= +f.atom1.component)!=e)for(f=this.ac;0<=--f;)this.patternAtoms[f].component==e&&(this.patternAtoms[f].component=g)}});j(b,"addAtom",function(){return this.appendAtom(new JS.SmilesAtom)});j(b,"appendAtom",function(a){this.ac>=this.patternAtoms.length&&(this.patternAtoms=JU.AU.doubleLength(this.patternAtoms));return this.patternAtoms[this.ac]=a.setIndex(this.ac++)},"JS.SmilesAtom");j(b,"addNested",function(a){null==this.htNested&&(this.htNested=new java.util.Hashtable);this.setNested(++this.nNested, +a);return this.nNested},"~S");j(b,"clear",function(){this.bsReturn.clearAll();this.nNested=0;this.nestedBond=this.htNested=null;this.clearBsFound(-1)});j(b,"clearBsFound",function(a){0>a?null==this.bsCheck&&this.bsFound.clearAll():this.bsFound.clear(a)},"~N");j(b,"setNested",function(a,c){this.top.htNested.put("_"+a,c)},"~N,~O");j(b,"getNested",function(a){return this.top.htNested.get("_"+a)},"~N");j(b,"getMissingHydrogenCount",function(){for(var a=0,c,h=0;hthis.target.selectedAtomCount)){for(var n="****",t=this.ringDataMax;n.lengththis.target.ac);s++){var p="*1"+n.substring(0,s-2)+"*1",p=JS.SmilesParser.newSearch(p,!0,!0),p=this.subsearch(p,2);if(null!=a&&5>=s){for(var x=new JU.Lst,v=p.size();0<=--v;)x.addLast(p.get(v));a[s-3]=x}if(0!=p.size()&&(b&&(4<=s&&7>=s)&&JS.SmilesAromatic.setAromatic(s, +this.target.nodes,this.target.bsSelected,p,this.target.bsAromatic,j,d,u,f,this.v,k,m,r,h),c)){this.target.ringData[s]=new JU.BS;for(x=p.size();0<=--x;){var F=p.get(x);this.target.ringData[s].or(F);for(v=F.nextSetBit(0);0<=v;v=F.nextSetBit(v+1))this.target.ringCounts[v]++}}}this.needAromatic&&(g&&JS.SmilesAromatic.finalizeAromatic(this.target.nodes,this.target.bsAromatic,k,m,r,d,e),this.target.finalizeAromatic(k));c&&this.target.finalizeRingData()}},"~A,~B,~B");j(b,"subsearch",function(a,c){a.mapUnique= +this.mapUnique;a.target=this.target;a.htNested=this.htNested;a.haveSmilesTarget=this.haveSmilesTarget;a.bsCheck=this.bsCheck;a.isSmarts=!0;switch(c){case 1:a.exitFirstMatch=!1;break;case 2:a.isRingCheck=!0;a.isSilent=!0;a.asVector=!0;break;case 3:a.ignoreAtomClass=this.ignoreAtomClass,a.aromaticDouble=this.aromaticDouble,a.haveSelected=this.haveSelected,a.exitFirstMatch=this.exitFirstMatch,a.getMaps=this.getMaps,a.retBoolean=this.retBoolean,a.asVector=this.asVector,a.vReturn=this.vReturn,a.bsReturn= +this.bsReturn,a.haveBondStereochemistry=this.haveBondStereochemistry}return a.search2(1==c)},"JS.SmilesSearch,~N");j(b,"search",function(){this.bsReturn.clearAll();return this.search2(!1)});j(b,"search2",function(a){this.setFlags(this.flags);!this.isRingCheck&&(JU.Logger.debuggingHigh&&!this.isSilent)&&JU.Logger.debug("SmilesSearch processing "+this.pattern);if(null==this.vReturn&&(this.asVector||this.getMaps))this.vReturn=new JU.Lst;if(null!=this.subSearches)for(a=0;aa;)h.set(this.patternAtoms[(d<=2*a?2*a-d+1:d-1)%a].getMatchingAtomIndex());this.target.ringSets.addLast(h); +return!0}return this.exitFirstMatch?!1:c.cardinality()!=this.target.selectedAtomCount},"~N,~N,~B,~N");j(b,"doCheckAtom",function(a){return this.target.bsSelected.get(a)&&!this.bsFound.get(a)},"~N");j(b,"nextTargetAtom",function(a,c,h,e,d,f){if(!this.isRingCheck&&!this.isTopology)if(null==a.subAtoms){if(!this.checkPrimitiveAtom(a,e))return!0}else if(a.isAND)for(var b=0;bb&&0!=d&&-b!=d))break;if(!this.noAromatic&&!a.aromaticAmbiguous&&a.isAromatic!=this.target.bsAromatic.get(c))break;if(-2147483648!=(b=a.getCharge())&&b!=e.getFormalCharge())break;b= +a.getCovalentHydrogenCount()+a.explicitHydrogenCount;if(0<=b&&b!=e.getTotalHydrogenCount())break;if(-2147483648!=(b=a.implicitHydrogenCount))if(d=e.getImplicitHydrogenCount(),-1==b?0==d:b!=d)break;if(0=a.ringSize){if(0==this.target.ringCounts[c]!=(0==a.ringSize))break}else{e=this.target.ringData[500==a.ringSize?5:600==a.ringSize?6:a.ringSize]; +if(null==e||!e.get(c))break;if(!this.noAromatic)if(500==a.ringSize){if(!this.target.bsAromatic5.get(c))break}else if(600==a.ringSize&&!this.target.bsAromatic6.get(c))break}if(-1<=a.ringMembership&&(-1==a.ringMembership?0==this.target.ringCounts[c]:this.target.ringCounts[c]!=a.ringMembership))break;if(0<=a.ringConnectivity&&(b=this.target.ringConnections[c],-1==a.ringConnectivity&&0==b||-1!=a.ringConnectivity&&b!=a.ringConnectivity))break}}h=!h;break}return h},"JS.SmilesAtom,~N");j(b,"checkMatchBond", +function(a,c,h,e,d,b){if(null!=h.bondsOr){for(var g=0;gb)return!1}else if(0>this.v.vTemp1.dot(this.v.vTemp2)*l*k)return!1}if(this.setAtropicity){this.atropKeys="";for(a=0;al||!this.autoAddImplicitH)l= +0;var k=b[f]=(new JS.SmilesAtom).setTopoAtom(g.component,f,g.symbol,g.getCharge(),d);k.implicitHydrogenCount=l;if(!c){k.mapIndex=d;k.stereo=g.stereo;k.setAtomicMass(g.getAtomicMass());k.bioAtomName=g.bioAtomName;k.residueName=g.residueName;k.residueChar=g.residueChar;k.residueNumber=g.residueNumber;k.atomNumber=g.residueNumber;k.insCode=g.insCode;k.hasDoubleBond=g.hasDoubleBond;k.isAromatic=g.isAromatic;k.atomClass=g.atomClass;k.explicitHydrogenCount=0;k.isBioAtom=g.isBioAtom;k.bioType=g.bioType; +k.$isLeadAtom=g.$isLeadAtom;!c&&g.isAromatic&&a.set(f);g.setMatchingAtom(null,f);g=Array(g.getBondCount()+l);for(k.setBonds(g);0<=--l;){g=b[++f]=(new JS.SmilesAtom).setTopoAtom(k.component,f,"H",0,-1);g.mapIndex=-d-1;g.setBonds(Array(1));var m=new JS.SmilesBond(k,g,1,!1);JU.Logger.debugging&&JU.Logger.info(""+m)}}}if(!c){for(d=0;dg.length||g[0].isFromPreviousTo(m)))for(l=g.length;1<=--l;)if(g[l].isFromPreviousTo(m)){m=g[l];g[l]=g[0];g[0]=m;break}if(!this.ignoreStereochemistry)for(d=this.ac;0<=--d;)g= +this.patternAtoms[d],null!=g.stereo&&g.stereo.fixStereo(g)}},"JU.BS");j(b,"normalizeAromaticity",function(a){var c=this.patternAtoms,h=new JS.SmilesSearch;h.noAromatic=this.noAromatic;h.setFlags(this.flags);h.target.nodes=c;h.target.ac=c.length;h.target.bsSelected=JU.BSUtil.newBitSet2(0,c.length);var b=JU.AU.createArrayOfArrayList(4);h.setRingData(null,b,!0);a.or(h.target.bsAromatic);if(!a.isEmpty()&&(a=b[3],null!=a))for(h=a.size();0<=--h;)for(var b=a.get(h),d=b.nextSetBit(0);0<=d;d=b.nextSetBit(d+ +1)){var f=c[d];!f.isAromatic&&!(-2==f.elementNumber||0==f.elementNumber)&&f.setSymbol(f.symbol.toLowerCase())}},"JU.BS");j(b,"getSelections",function(){var a=this.top.htNested;if(!(null==a||0==this.target.nodes.length))for(var c=new java.util.Hashtable,h,a=a.entrySet().iterator();a.hasNext()&&((h=a.next())||1);){var b=h.getValue().toString();if(b.startsWith("select")){var d=c.containsKey(b)?c.get(b):this.target.nodes[0].findAtomsLike(b.substring(6));null==d&&(d=new JU.BS);c.put(b,d);h.setValue(d)}}}); +j(b,"findImplicitHydrogen",function(a){for(var c=a.getEdges().length;0<=--c;){var h=a.getBondedAtomIndex(c);if(1==this.target.nodes[h].getElementNumber()&&!this.bsFound.get(h))return this.target.nodes[h]}return null},"JU.Node");j(b,"toString",function(){if(null!=this.pattern0)return this.pattern0;if(this.targetSet)return"molecular formula: "+this.target.getMolecularFormula(!0,null,!1);var a=(new JU.SB).append(this.pattern);a.append("\nmolecular formula: "+this.getMolecularFormula(!0,null,!1));return a.toString()}); +b=K(function(){this.bsSelected=null;this.selectedAtomCount=0;this.ringSets=null;this.ringCount=0;this.ringData=null;this.ringDataMax=0;this.bsAromaticRings=this.bsAromatic6=this.bsAromatic5=this.bsAromatic=this.ringConnections=this.ringCounts=null;this.$hasRingData=!1;this.flags=-1;I(this,arguments)},JS.SmilesSearch,"SmilesTarget",JU.JmolMolecule);O(b,function(){this.bsAromatic=new JU.BS;this.bsAromatic5=new JU.BS;this.bsAromatic6=new JU.BS});j(b,"hasRingData",function(a){a!=this.flags&&(this.flags= +a,this.$hasRingData=!1);a=this.$hasRingData;this.$hasRingData=!0;return a},"~N");j(b,"setAtoms",function(a,c,h){this.$hasRingData=!1;this.nodes=a;this.ac=c;this.selectedAtomCount=null==h?c:h.cardinality();null==h&&(h=JU.BS.newN(c),h.setBits(0,c));this.bsSelected=h},"~A,~N,JU.BS");j(b,"checkAromaticDefined",function(){JS.SmilesAromatic.checkAromaticDefined(this.nodes,this.bsSelected,this.bsAromatic)});j(b,"getBSAromaticRings",function(){if(null==this.bsAromaticRings&&(this.bsAromaticRings=new JU.BS, +null!=this.ringSets&&null!=this.bsAromatic))for(var a=this.ringSets.size();0<=--a;){var c=this.ringSets.get(a).clone();c.andNot(this.bsAromatic);c.isEmpty()&&this.bsAromaticRings.set(a)}return this.bsAromaticRings});j(b,"setRingData",function(a,c,h){0>h&&(h=8);0h&&(h=6);c&&(this.ringCounts=y(this.ac,0),this.ringConnections=y(this.ac,0),this.ringData=Array(h+1));this.ringSets=new JU.Lst;return this.ringDataMax=h},"~N,~B,~N");j(b,"finalizeAromatic",function(a){this.bsAromatic5.clearAll();this.bsAromatic6.clearAll(); +for(var c=a.size();0<=--c;){var h=a.get(c);h.and(this.bsAromatic);switch(h.cardinality()){case 5:this.bsAromatic5.or(h);break;case 6:this.bsAromatic6.or(h)}}},"JU.Lst");j(b,"finalizeRingData",function(){for(var a=this.bsSelected.nextSetBit(0);0<=a;a=this.bsSelected.nextSetBit(a+1))for(var c=this.nodes[a],h=c.getBondCount();0<=--h;)0g)return"";this.haveSmilesAtoms=M(c[g], +"JS.SmilesAtom")&&c[g].definesStereo();this.sm=a;this.flags=f;this.atoms=c;this.ac=h;b=JU.BSUtil.copy(b);this.bsSelected=JU.BS.copy(b);this.flags=f=JS.SmilesSearch.addFlags(f,null==d?"":d.toUpperCase());if(1048576==(f&1048576))return this.getBioSmiles(b,d,f);this.openSMILES=5==(f&5);this.addAtomComment=131072==(f&131072);this.aromaticDouble=512==(f&512);this.explicitHydrogen=8192==(f&8192)?8192:4096==(f&4096)?4096:0;if(8192==this.explicitHydrogen){a=new JU.BS;for(h=b.nextSetBit(0);0<=h;h=b.nextSetBit(h+ +1))if(d=c[h],3==d.getCovalentHydrogenCount()&&4==d.getCovalentBondCount()){var l=!0;a.clearAll();for(var k=d.getBondCount();0<=--k;){var m=d.getBondedAtomIndex(k);if(1==c[m].getElementNumber())if(l=1==c[m].getElementNumber())a.set(m);else break;l&&(this.bsIgnoreHydrogen.set(h),b.andNot(a))}}}this.topologyOnly=16384==(f&16384);this.getAromatic=16!=(f&16);this.noStereo=32==(f&32);this.isPolyhedral=65536==(f&65536);this.is2D=134217728==(f&134217728);this.noBranches=!1;this.allComponents=32768==(f&32768); +return this.getSmilesComponent(c[g],b,!0,!1,!1)},"JS.SmilesMatcher,~A,~N,JU.BS,~S,~N");j(b,"getBioSmiles",function(a,c,h){this.addAtomComment=131072==(h&131072);var b=3145728==(h&3145728),d=34603008==(h&34603008),f=5242880==(h&5242880);h=9437184==(h&9437184);var g=f||h,l=new JU.SB;null!=c&&!this.noBioComment&&l.append("//* Jmol bioSMILES ").append(c.$replace("*","_")).append(" *//");c=this.noBioComment?"":"\n";var k=new JU.BS,m=null,j="",n,t=new JU.Lst;try{for(var r=0,u=a.nextSetBit(0);0<=u;u=a.nextSetBit(u+ +1)){var s=this.atoms[u],p=s.getGroup1("?"),x=s.getBioStructureTypeName(),v=p===p.toLowerCase();if(null!=c)if(0z||!a.get(z)){d||l.append(" //* ").appendI(s.getResno()).append(" *//");if(0>z&&0>(z=a.nextSetBit(u+1)))break;0this.iHypervalent;g=this.bsSelected.nextSetBit(g+1))if(4m)break;a=a.substring(0,m+1)+k.substring(g,g+3).trim()+a.substring(m+1);g+=3}}catch(j){if(H(j,Exception))j.printStackTrace(),a=l;else throw j;}}f+=a;if(0>c.nextSetBit(0)|| +!this.allComponents)break;f+=".";a=null}return f},"JU.Node,JU.BS,~B,~B,~B");j(b,"checkFirstAtom",function(a){0==this.explicitHydrogen&&(1==a.getAtomicAndIsotopeNumber()&&0m&&0n;m++)for(var n=0,t=l[m],r=t.getEdges(),u=0m;m++){r=l[m];for(u=0;2>u;u++)if(s=c[m][u],!(null==s||s===g)){var x=s.index,v=s.getOtherNode(r);if(null!=v){var F=this.getBondStereochemistry(s,r),w;if(this.haveSmilesAtoms){w=j.isStereoOpposite(v.getIndex(),n.getIndex(),r.getIndex());if(null==w){JU.Logger.debugging&&JU.Logger.debug("SmilesGenerator could not find stereo for "+j+"/"+v);continue}w=w.booleanValue()}else w=JS.SmilesStereo.isDiaxial(n,r,j,v,this.vTemp,0); +"\x00"==F||F!=t==w?("\\"==t&&w||"/"==t&&!w)==(s.getAtomIndex1()!=v.getIndex())?this.bsBondsUp.set(x):this.bsBondsDn.set(x):(this.bsBondsUp.clear(x),this.bsBondsDn.clear(x),JU.Logger.error("BOND STEREOCHEMISTRY PARITY ERROR-stereochemistry for bond "+x+""));JU.Logger.debugging&&JU.Logger.debug(this.getBondStereochemistry(g,n)+" "+j.getIndex()+" "+v.getIndex()+" "+this.getBondStereochemistry(s,r))}}}}}}});j(b,"getSmilesAt",function(a,c,h,b,d,f){var g=c.getIndex();if(!this.bsToDo.get(g))return null; +this.ptAtom++;this.bsToDo.clear(g);var l=g==this.iHypervalent||0!=this.explicitHydrogen&&!this.bsIgnoreHydrogen.get(g),k=this.isExplicitOnly(c),j=this.bsAromatic.get(g),q=!this.bsSelected.get(g),n=null==this.prevAtom?-1:this.prevAtom.getIndex(),t=this.prevSp2Atoms,r=null!=t,p=c.getElementNumber(),s=0,L=this.alleneStereo;this.alleneStereo=null;var x=new JU.Lst,v=null,F=null,w=c.getEdges();!f&&null!=this.polySmilesCenter&&(b=!1,this.sortPolyBonds(c,this.prevAtom,this.polySmilesCenter));var B=null;f= +j?10:0;JU.Logger.debugging&&JU.Logger.debug(a.toString());if(null!=w)for(var z=0,D=w.length;z=E.getIsotopeNumber();if(!this.bsIncludingH.get(y)){if(C||!h||!this.bsSelected.get(g))continue;this.bsToDo.set(y)}C?(B=E,s++,1=s)&&(t=Array(5));var G=null;null!=F&&(G=this.getBondOrder(F,g,n,j),null!= +t&&!r&&(t[D++]=this.prevAtom));null!=t&&!r&&(this.ptSp2Atom0=this.ptAtom);null!=t&&1==s&&(t[D++]=B);k=0;y=new JU.BS;E=x.size();if(b)for(z=0;zk)k=1f&&null!=F&&(r&&2==F.getCovalentOrder()&&2==k&&null!=t[1]?(E[f++]=t[0],E[f++]=t[1]):E[f++]=this.prevAtom);7>f&&1==s&&(E[f++]=B);C=this.getBondStereochemistry(F,this.prevAtom);if(null!=G||"\x00"!=C)"\x00"!=C&&(G=""+C),a.append(G);A=f;H=D;F=new JU.SB;B=new JU.Lst;for(z=0;zf&&(E[f++]=w);null!=t&&5>D&&(t[D++]=w)}h=new JU.SB;var I=f,K=D,y=null;if(!b&&!this.noStereo&&null==this.polySmilesCenter&&(5==x.size()||6==x.size()))y=this.sortInorganic(c,x,this.vTemp);for(z=0;zf&&(E[f++]=w),null!=t&&5>D&&(t[D++]=w));A!=I&&I!=f&&this.swapArray(E,A,I,f);H!=K&&K!=D&&this.swapArray(t,H,K,D);if(r&&2==f&&2==k){r=this.ptAtom-this.ptSp2Atom0;D=l.getCovalentBondCount();x=7==l.getElementNumber();if(0==r%2)f=8;else if(3==D||2==D&&x){w=l.getEdges();for(r=0;rf&&(E[f++]= +l);null!=L&&L[3]!==E[2]&&(L=a.lastIndexOf("@]="),0=a.getElementNumber())for(var f="",g=0;4>g;g++)if(null==(f=this.addStereoCheck(0,c,b[g],f,JU.BSUtil.newAndSetBit(c))))return"";if(this.is2D){c=4==e||!d?1:-1;d=a.getEdges();f=null;for(g=a.getBondCount();0<=--g;){var l=d[g];if(a===l.getAtom(0))switch(l.getBondType()){case 1025:f= +JS.SmilesGenerator.setStereoTemp(null,b,l.getAtom(1),c);break;case 1041:f=JS.SmilesGenerator.setStereoTemp(null,b,l.getAtom(1),-c)}}if(null==f)return"";3==e&&(b[e++]=JS.SmilesGenerator.setStereoTemp(a,b,f,0))}return JS.SmilesStereo.getStereoFlag(a,b,e,this.vTemp,this.is2D)},"JU.SimpleNode,~N,~A,~N,~B");b.setStereoTemp=j(b,"setStereoTemp",function(a,c,b,e){for(var d=new JS.SmilesAtom,f=0;4>f;f++){var g=c[f]===b;if(null==a){if(g)return a=b.getXYZ(),d.set(a.x,a.y,e),c[f]=d}else 3>f&&d.add(c[f])}if(null== +a)return null;d.scale(-0.33333334);d.scaleAdd2(2,a,d);return d},"JU.SimpleNode,~A,JU.SimpleNode,~N");j(b,"addStereoCheck",function(a,c,b,e,d){null!=d&&d.set(c);var f=b.getAtomicAndIsotopeNumber();if(1==f&&0==this.explicitHydrogen)return"H";var g=b.getCovalentBondCount(),l=b.getCovalentHydrogenCount(),k=6==f&&0!=this.explicitHydrogen?l:0;if(6==f||16==f?4!=g:1==f||1a;k++)d=b.getBondedAtomIndex(k),d!=c&&(a+=this.atoms[d].getAtomicAndIsotopeNumber());if(3this.bsRingKeys.nextSetBit(0)&& +(2==this.nPairsMax||99==this.nPairsMax))this.nPairsMax=this.nPairs=99==this.nPairsMax?10:0;JU.Logger.debugging&&JU.Logger.debug("using ring key "+e)}return f},"~N,~N,java.util.Map");j(b,"getRingPointer",function(a){return 10>a?""+a:100>a?"%"+a:"%("+a+")"},"~N");j(b,"dumpRingKeys",function(a,c){JU.Logger.info(a.toString()+"\n\n");for(var b,e=c.keySet().iterator();e.hasNext()&&((b=e.next())||1);)JU.Logger.info("unmatched connection: "+b)},"JU.SB,java.util.Map");b.getRingKey=j(b,"getRingKey",function(a, +c){return Math.min(a,c)+"_"+Math.max(a,c)},"~N,~N")});G("JS");A(null,"JS.SmilesAromatic","java.util.Hashtable JU.BS $.Lst $.Measure $.V3 JS.SmilesRing $.SmilesRingSet JU.BSUtil $.Logger".split(" "),function(){var b=S(JS,"SmilesAromatic",null);b.setAromatic=j(b,"setAromatic",function(a,c,b,e,d,f,g,l,k,j,q,n,t,r){g=g||0x&&B.get(F)&&j.addLast(y[v])}switch(JS.SmilesAromatic.checkHueckelAromatic(a,c,d,B,f,t)){case -1:continue;case 0:r=!1;case 1:if(null!=n&&n.addLast(new JS.SmilesRing(a,B,j,r)),!r)continue}}q.addLast(B)}}else for(var w=e.size();0<=--w;){var B=JU.BSUtil.copy(e.get(w));B.and(d);B.cardinality()==a&&q.addLast(B)}},"~N,~A,JU.BS,JU.Lst,JU.BS,~N,~B,~B,~B,JS.VTemp,JU.Lst,JU.Lst,~A,~B");b.checkAromaticDefined= +j(b,"checkAromaticDefined",function(a,c,b){for(var e=c.nextSetBit(0);0<=e;e=c.nextSetBit(e+1))for(var d=a[e].getEdges(),f=0;f=d&&(d=0.01);for(var k=f=a=null,l=e.cardinality(),j=Array(2*l),q=0,n=1-5*d,l=e.nextSetBit(0);0<=l;l=e.nextSetBit(l+1)){for(var t=c[l],r=-1,p=-1,s=-1,y=t.getEdges().length;0<=--y;){var x=t.getBondedAtomIndex(y);if(b.get(x))if(e.get(x))0>p?p=x:s=x;else{if(16==t.getElementNumber()){if(!g)return!1;x=-1}r=x}}null==k&&(k=new JU.V3,a=new JU.V3,f=new JU.V3);y=0;for(t=l;2>y;y++){JU.Measure.getNormalThroughPoints(c[p],c[t],c[s],a,f);if(!JS.SmilesAromatic.addNormal(a,k,n))return!1; +j[q++]=JU.V3.newV(a);if(0>(t=r))break}}return JS.SmilesAromatic.checkStandardDeviation(j,k,q,d)},"~N,~A,JU.BS,JU.BS,~N,~B,~B");b.addNormal=j(b,"addNormal",function(a,c,b){var e=c.dot(a);if(0!=e&&Math.abs(e)e&&a.scale(-1);c.add(a);c.normalize();return!0},"JU.V3,JU.V3,~N");b.checkStandardDeviation=j(b,"checkStandardDeviation",function(a,c,b,e){for(var d=0,f=0,g=0;g=q?q-5:15==q?2:34==q?3:33==q?4:16==q?5:-1;if(0<=q){q=JS.SmilesAromatic.OS_PI_COUNTS[q];if(0>n||n>=q.length)return-1;switch(n=q[n]){case -2:return-1;case -1:q=m.getEdges();n=0;for(t=q.length;0<=--t;){var r=q[t];if(2==r.getCovalentOrder()){n= +r.getOtherNode(m);n=6==n.getElementNumber()||b.get(n.getIndex())?1:0n)return-1;null!=f&&(f[j]=n);g+=n;1==n&&l++;JU.Logger.debuggingHigh&&JU.Logger.info("atom "+m+" pi="+n+" npi="+g)}}}return 0==(g-2)%4&&(2>d||5==a||6==l)?1:0},"~N,~A,JU.BS,JU.BS,~N,~A");b.finalizeAromatic=j(b,"finalizeAromatic",function(a,c,b,e,d,f,g){g&&JS.SmilesAromatic.removeBridgingRings(b,e);JS.SmilesAromatic.checkFusedRings(e,d,b);c.clearAll();for(d=b.size();0<=--d;)c.or(b.get(d));if(g||f)for(d= +c.nextSetBit(0);0<=d;d=c.nextSetBit(d+1)){b=a[d].getEdges();f=0;for(var l=b.length;0<=--l;){var j=b[l].getOtherNode(a[d]),m=b[l].getCovalentOrder(),q=j.getIndex();if(c.get(q)){if(2==m){j=!1;for(m=e.size();0<=--m;){var n=e.get(m);if(n.get(d)&&n.get(q)){j=!0;break}}if(!j){f=-1;break}}f++}else if(g&&6==j.getElementNumber()&&2==m){f=-1;break}}2>f&&(c.clear(d),d=-1)}},"~A,JU.BS,JU.Lst,JU.Lst,~A,~B,~B");b.removeBridgingRings=j(b,"removeBridgingRings",function(a,c){var b=new JU.BS,e=new JU.BS,d=new JU.BS; +JS.SmilesAromatic.checkBridges(a,e,a,e,b);JS.SmilesAromatic.checkBridges(c,d,c,d,b);JS.SmilesAromatic.checkBridges(a,e,c,d,b);for(b=a.size();0<=--b;)e.get(b)&&a.removeItemAt(b);for(b=c.size();0<=--b;)d.get(b)&&c.removeItemAt(b)},"JU.Lst,JU.Lst");b.checkBridges=j(b,"checkBridges",function(a,c,b,e,d){for(var f=a===b,g=a.size();0<=--g;)for(var l=a.get(g),j=f?g+1:0,m=b.size();--m>=j;){var q=b.get(m);q.equals(l)||(d.clearAll(),d.or(l),d.and(q),2=this.subAtoms.length&&(this.subAtoms=JU.AU.doubleLength(this.subAtoms));a.setIndex(this.index);a.parent=this;this.subAtoms[this.nSubAtoms++]=a;this.setSymbol("*");this.hasSymbol=!1;return a}, +"JS.SmilesAtom,~B");j(b,"setIndex",function(a){this.index=a;return this},"~N");j(b,"setTopoAtom",function(a,c,b,e,d){this.component=a;this.index=c;this.patternIndex=d;this.setSymbol(b);this.charge=e;this.isTopoAtom=!0;return this},"~N,~N,~S,~N,~N");j(b,"setHydrogenCount",function(){this.missingHydrogenCount=this.explicitHydrogenCount;if(-2147483648!=this.explicitHydrogenCount)return!0;var a=this.getFormalCharge(),a=JS.SmilesAtom.getDefaultHCount(this.elementNumber,this.isAromatic,-2147483648==a?0: +a);if(0>a)return this.missingHydrogenCount=0,-1==a;7==this.elementNumber&&this.isAromatic&&2==this.bondCount&&1==this.bonds[0].getBondType()&&1==this.bonds[1].getBondType()&&a++;for(var c=0;cthis.elementNumber&&(this.elementNumber=-1),!0;this.isAromatic&&(a=a.substring(0,1).toUpperCase()+(1==a.length?"":a.substring(1)));this.elementNumber=JU.Elements.elementNumberFromSymbol(a,!0);return 0!=this.elementNumber},"~S");p(b,"getElementNumber",function(){return this.elementNumber}); +j(b,"getAtomicMass",function(){return this.atomicMass});p(b,"getAtomNumber",function(){return this.atomNumber});j(b,"setAtomicMass",function(a){this.atomicMass=a},"~N");j(b,"getCharge",function(){return this.charge});j(b,"setCharge",function(a){this.charge=a},"~N");j(b,"getMatchingAtomIndex",function(){return this.matchingIndex});j(b,"getMatchingAtom",function(){return null==this.matchingNode?this:this.matchingNode});j(b,"setMatchingAtom",function(a,c){this.matchingNode=a;this.matchingIndex=c},"JU.Node,~N"); +j(b,"setExplicitHydrogenCount",function(a){this.explicitHydrogenCount=a},"~N");j(b,"setImplicitHydrogenCount",function(a){this.implicitHydrogenCount=a},"~N");j(b,"setDegree",function(a){this.degree=a},"~N");j(b,"setNonhydrogenDegree",function(a){this.nonhydrogenDegree=a},"~N");j(b,"setValence",function(a){this.valence=a},"~N");j(b,"setConnectivity",function(a){this.connectivity=a},"~N");j(b,"setRingMembership",function(a){this.ringMembership=a},"~N");j(b,"setRingSize",function(a){this.ringSize=a; +if(500==this.ringSize||600==this.ringSize)this.isAromatic=!0},"~N");j(b,"setRingConnectivity",function(a){this.ringConnectivity=a},"~N");p(b,"getModelIndex",function(){return this.component});p(b,"getMoleculeNumber",function(){return this.component},"~B");p(b,"getAtomSite",function(){return this.atomSite});p(b,"getFormalCharge",function(){return this.charge});p(b,"getIsotopeNumber",function(){return this.atomicMass});p(b,"getAtomicAndIsotopeNumber",function(){return JU.Elements.getAtomicAndIsotopeNumber(this.elementNumber, +this.atomicMass)});p(b,"getAtomName",function(){return null==this.bioAtomName?"":this.bioAtomName});p(b,"getGroup3",function(){return null==this.residueName?"":this.residueName},"~B");p(b,"getGroup1",function(){return null==this.residueChar?"":this.residueChar},"~S");j(b,"addBond",function(a){this.bondCount>=this.bonds.length&&(this.bonds=JU.AU.doubleLength(this.bonds));this.bonds[this.bondCount]=a;2==a.order&&(this.hasDoubleBond=!0);this.bondCount++},"JS.SmilesBond");j(b,"setBondArray",function(){this.bonds.length> +this.bondCount&&(this.bonds=JU.AU.arrayCopyObject(this.bonds,this.bondCount));null!=this.subAtoms&&this.subAtoms.length>this.nSubAtoms&&(this.subAtoms=JU.AU.arrayCopyObject(this.subAtoms,this.subAtoms.length));for(var a=0;ac.atom2.index&&c.switchAtoms()}});p(b,"getEdges",function(){return null!=this.parent?this.parent.getEdges():this.bonds}); +j(b,"getBond",function(a){return null!=this.parent?this.parent.getBond(a):0<=a&&a=this.bondCount)return-1;a=this.bonds[a];return(a.atom1===this?a.atom2:a.atom1).matchingIndex},"~N");p(b,"getBondedAtomIndex",function(a){return null!=this.parent?this.parent.getBondedAtomIndex(a):this.bonds[a].getOtherAtom(this).index}, +"~N");p(b,"getCovalentHydrogenCount",function(){if(0<=this.covalentHydrogenCount)return this.covalentHydrogenCount;if(null!=this.parent)return this.covalentHydrogenCount=this.parent.getCovalentHydrogenCount();for(var a=this.covalentHydrogenCount=0;a=a&&null!= +this.bonds)for(var c=this.bondCount;0<=--c;)a+=this.bonds[c].getValence();return this.valence=a});p(b,"getTotalValence",function(){return this.getValence()+(this.isTopoAtom?0:this.missingHydrogenCount)});j(b,"getBondTo",function(a){if(null!=this.parent)return this.parent.getBondTo(a);for(var c,b=0;b=c&&0==e&&Float.isNaN(d)&&(null==l||0==l.length);var q=JS.SmilesAtom.getDefaultHCount(a,!1,-2147483648==e?0:e);if(j&&0==f){if(g&&6==a)return m;f=q-b}return g&& +q==b?m:"["+(0>=c?"":""+c)+m+(null==l?"":l)+(1e?""+e:"+"+e)+(Float.isNaN(d)?"":":"+U(d))+"]"},"~N,~N,~N,~N,~N,~N,~B,~S,~B");p(b,"getBioSmilesType",function(){return this.bioType});j(b,"isNucleic",function(){return"n"==this.bioType||"r"==this.bioType||"d"==this.bioType});p(b,"isPurine",function(){return null!=this.residueChar&&this.isNucleic()&&0<="AG".indexOf(this.residueChar)});p(b,"isPyrimidine",function(){return null!=this.residueChar&&this.isNucleic()&& +0<="CTUI".indexOf(this.residueChar)});p(b,"isDeleted",function(){return!1});p(b,"findAtomsLike",function(){return null},"~S");p(b,"toString",function(){var a=null!=this.residueChar||null!=this.residueName?(null==this.residueChar?this.residueName:this.residueChar)+"."+this.bioAtomName:null!=this.bioAtomName&&-2147483648!=this.atomNumber?null:-1==this.elementNumber?"A":-2==this.elementNumber?"*":JU.Elements.elementSymbolFromNumber(this.elementNumber);if(null==a)return this.bioAtomName+" #"+this.atomNumber; +this.isAromatic&&(a=a.toLowerCase());for(var c="",b=0;b"+c+"("+this.x+","+this.y+","+this.z+")"});p(b,"getFloatProperty",function(a){return"property_atomclass"===a?this.atomClass:NaN},"~S");p(b,"getMass",function(){return this.atomicMass});p(b,"getCIPChirality",function(){return JV.JC.getCIPChiralityName(this.cipChirality&-225)},"~B");p(b,"setCIPChirality", +function(a){this.cipChirality=a},"~N");p(b,"getCIPChiralityCode",function(){return this.cipChirality});p(b,"getXYZ",function(){return this});j(b,"getStereo",function(){return this.stereo});j(b,"getPatternIndex",function(){return this.patternIndex});p(b,"modelIsRawPDB",function(){return!1});j(b,"definesStereo",function(){return!1});j(b,"getStereoAtAt",function(){return null},"~A");j(b,"isStereoOpposite",function(){return null},"~N,~N,~N")});G("JS");A(["JU.Edge"],"JS.SmilesBond",["JS.InvalidSmilesException"], +function(){var b=K(function(){this.atom2=this.atom1=null;this.isNot=!1;this.primitives=this.matchingBond=null;this.nPrimitives=0;this.bondsOr=null;this.nBondsOr=0;this.isConnection=!1;this.atropType=null;this.isChain=!1;I(this,arguments)},JS,"SmilesBond",JU.Edge);N(b,function(a,c,b,e){Q(this,JS.SmilesBond,[]);this.set2(b,e);this.set2a(a,c)},"JS.SmilesAtom,JS.SmilesAtom,~N,~B");b.getBondOrderString=j(b,"getBondOrderString",function(a){switch(a){case 2:return"=";case 3:return"#";case 4:return"$";default:return""}}, +"~N");b.getBondTypeFromCode=j(b,"getBondTypeFromCode",function(a){switch(a.charCodeAt(0)){case 46:return 0;case 45:return 1;case 61:return 2;case 35:return 3;case 36:return 4;case 58:return 17;case 47:return 1025;case 92:return 1041;case 94:return 65537;case 96:return 65538;case 64:return 65;case 126:return 81;case 43:return 96}return-1},"~S");j(b,"getAtom1",function(){return this.atom1});j(b,"set",function(a){this.order=a.order;this.isNot=a.isNot;this.primitives=a.primitives;this.nPrimitives=a.nPrimitives; +this.bondsOr=a.bondsOr;this.nBondsOr=a.nBondsOr;this.atropType=a.atropType},"JS.SmilesBond");j(b,"setAtropType",function(a){this.atropType=y(-1,[T(a/10)-1,a%10-1])},"~N");j(b,"setPrimitive",function(a){a=this.primitives[a];this.order=a.order;this.isNot=a.isNot;this.atropType=a.atropType;return a},"~N");j(b,"addBondOr",function(){null==this.bondsOr&&(this.bondsOr=Array(2));if(this.nBondsOr>=this.bondsOr.length){var a=Array(2*this.bondsOr.length);System.arraycopy(this.bondsOr,0,a,0,this.bondsOr.length); +this.bondsOr=a}a=new JS.SmilesBond(null,null,-1,!1);this.bondsOr[this.nBondsOr]=a;this.nBondsOr++;return a});j(b,"addPrimitive",function(){null==this.primitives&&(this.primitives=Array(2));if(this.nPrimitives>=this.primitives.length){var a=Array(2*this.primitives.length);System.arraycopy(this.primitives,0,a,0,this.primitives.length);this.primitives=a}a=new JS.SmilesBond(null,null,-1,!1);this.primitives[this.nPrimitives]=a;this.nPrimitives++;return a});p(b,"toString",function(){return this.atom1+" -"+ +(this.isNot?"!":"")+this.order+"- "+this.atom2});j(b,"set2",function(a,c){this.order=a;this.isNot=c},"~N,~B");j(b,"set2a",function(a,c){null!=a&&(this.atom1=a,a.addBond(this));null!=c&&(this.atom2=c,c.isBioAtomWild&&this.atom1.isBioAtomWild&&(this.order=96),c.isFirst=!1,c.addBond(this))},"JS.SmilesAtom,JS.SmilesAtom");j(b,"setAtom2",function(a){this.atom2=a;null!=this.atom2&&(a.addBond(this),this.isConnection=!0)},"JS.SmilesAtom,JS.SmilesSearch");j(b,"isFromPreviousTo",function(a){return!this.isConnection&& +this.atom2===a},"JS.SmilesAtom");b.isBondType=j(b,"isBondType",function(a,c,b){if(">"==a)return 1;if(0>"-=#$:/\\.~^`+!,&;@".indexOf(a))return 0;if(!c&&0>"-=#$:/\\.~^`".indexOf(a))throw new JS.InvalidSmilesException("SMARTS bond type "+a+" not allowed in SMILES");switch(a.charCodeAt(0)){case 126:return b?0:1;case 94:case 96:return-1;default:return 1}},"~S,~B,~B");j(b,"getValence",function(){return this.order&7});j(b,"getOtherAtom",function(a){return this.atom1===a?this.atom2:this.atom1},"JS.SmilesAtom"); +p(b,"getAtomIndex1",function(){return this.atom1.index});p(b,"getAtomIndex2",function(){return this.atom2.index});p(b,"getCovalentOrder",function(){return this.order&131071});p(b,"getOtherNode",function(a){return a===this.atom1?this.atom2:a===this.atom2||null==a?this.atom1:null},"JU.SimpleNode");p(b,"isCovalent",function(){return 112!=this.order});p(b,"isPartial",function(){return!1});p(b,"isHydrogen",function(){return 112==this.order});j(b,"switchAtoms",function(){var a=this.atom1;this.atom1=this.atom2; +this.atom2=a;switch(this.order&131071){case 65537:this.order=65538;break;case 65538:this.order=65537;break;case 1025:this.order=1041;break;case 1041:this.order=1025}});j(b,"getRealCovalentOrder",function(){switch(this.order&131071){case 65537:case 65538:case 1025:case 1041:return 1}return this.order&131071});j(b,"getMatchingBond",function(){return null==this.matchingBond?this:this.matchingBond});p(b,"getAtom",function(a){return 1==a?this.atom2:this.atom1},"~N")});G("JS");A(null,"JS.SmilesMeasure", +["JU.PT"],function(){var b=K(function(){this.search=null;this.index=this.type=this.nPoints=0;this.isNot=!1;this.points=this.minmax=this.indices=null;I(this,arguments)},JS,"SmilesMeasure",null);O(b,function(){this.indices=y(4,0);this.points=Array(4)});N(b,function(a,c,b,e,d){this.search=a;this.type=Math.min(4,Math.max(b,2));this.index=c;this.isNot=e;this.minmax=d;for(a=d.length-2;0<=a;a-=2)d[a]>d[a+1]&&(c=d[a+1],d[a+1]=d[a],d[a]=c)},"JS.SmilesSearch,~N,~N,~B,~A");j(b,"addPoint",function(a){if(this.nPoints== +this.type)return!1;if(0==this.nPoints)for(var c=1;c=this.minmax[a]&&c<=this.minmax[a+1])return!this.isNot;return this.isNot});b.setTorsionData=j(b,"setTorsionData",function(a,c,b,e,d,f){d.vTemp1.sub2(a,c);d.vTemp2.sub2(e,b);if(!f)return 0;d.vNorm2.sub2(c,b);d.vNorm2.normalize();d.vTemp1.cross(d.vTemp1,d.vNorm2);d.vTemp1.normalize();d.vTemp2.cross(d.vTemp2,d.vNorm2);d.vTemp2.normalize(); +d.vNorm3.cross(d.vTemp1,d.vTemp2);return d.vTemp1.angle(d.vTemp2)/0.017453292*(0>d.vNorm2.dot(d.vNorm3)?1:-1)},"JU.T3,JU.T3,JU.T3,JU.T3,JS.VTemp,~B");p(b,"toString",function(){for(var a="(."+"__dat".charAt(this.type)+this.index+":"+JU.PT.toJSON(null,this.minmax)+") for",c=0;c=this.nPoints?"?":""+this.indices[c]);return a})});G("JS");A(["java.util.Hashtable"],"JS.SmilesParser","JU.Lst $.PT $.SB JS.InvalidSmilesException $.SmilesAtom $.SmilesBond $.SmilesMeasure $.SmilesSearch $.SmilesStereo JU.Elements $.Logger".split(" "), +function(){var b=K(function(){this.htMeasures=this.connections=null;this.flags=0;this.isBioSequence=this.isSmarts=!1;this.bioType="\x00";this.componentParenCount=this.componentCount=this.branchLevel=this.braceCount=0;this.ignoreStereochemistry=!1;this.bondDirectionPaired=!0;this.isTarget=!1;I(this,arguments)},JS,"SmilesParser",null);O(b,function(){this.connections=new java.util.Hashtable;this.htMeasures=new java.util.Hashtable});N(b,function(a,c){this.isSmarts=a;this.isTarget=c},"~B,~B");b.newSearch= +j(b,"newSearch",function(a,c,b){return(new JS.SmilesParser(c,b)).parse(a)},"~S,~B,~B");j(b,"parse",function(a){if(null==a)throw new JS.InvalidSmilesException("expression must not be null");var c=new JS.SmilesSearch;this.isSmarts&&!this.isTarget&&(c.pattern0=a);0<=a.indexOf("$(select")&&(a=this.parseNested(c,a,"select"));var b=y(1,0);a=JS.SmilesParser.extractFlags(a,b);this.flags=b[0];c.setFlags(this.flags);0<=a.indexOf("$")&&(a=this.parseVariables(a));this.isSmarts&&0<=a.indexOf("[$")&&(a=this.parseVariableLength(a)); +if(0>a.indexOf("||"))return this.getSubsearch(c,a,this.flags);a=JU.PT.split(a,"||");b="";c.subSearches=Array(a.length);for(var e=0;eb.indexOf(d)&&(c.subSearches[e]=this.getSubsearch(c,a[e],this.flags),b+=d)}return c},"~S");j(b,"parseVariableLength",function(a){for(var c=new JU.SB,b=a.length-1,e=0,d=!1,f=0;fq.indexOf("|")){for(var t=0,r=q.length,p=-1,f=0;fp&&0==t&&(p=f)}0c.length()?a:c.substring(2)},"~S");j(b,"getSubsearch",function(a,c,b){this.htMeasures=new java.util.Hashtable;var e=new JS.SmilesSearch;e.setTop(a);e.isSmarts=this.isSmarts;e.pattern=c;e.pattern0=a.pattern0; +e.setFlags(b);0<=c.indexOf("$(")&&(c=this.parseNested(e,c,""));this.parseSmiles(e,c,null,!1);if(0!=this.braceCount)throw new JS.InvalidSmilesException("unmatched '{'");if(!this.connections.isEmpty())throw new JS.InvalidSmilesException("Open connection");e.set();if(this.isSmarts)for(a=e.ac;0<=--a;)this.checkNested(e,e.patternAtoms[a],b);else this.isBioSequence||(e.elementCounts[1]=e.getMissingHydrogenCount());!this.ignoreStereochemistry&&!this.isTarget&&this.fixChirality(e);return e},"JS.SmilesSearch,~S,~N"); +j(b,"checkNested",function(a,c,b){if(0q.indexOf(".")&& +0>q.indexOf("_"))&&(q+=".0");b=this.parseAtom(a,null,q,b,j,"["==g,!1,e);b.hasSubpattern=!0;-1!=j.order&&0!=j.order&&this.setBondAtom(j,null,b,a);break;default:q=!this.isBioSequence&&JU.PT.isUpperCase(g)?JS.SmilesParser.getChar(c,m+1):"\x00";if("X"!=g||"x"!=q)if(!JU.PT.isLowerCase(q)||0==JU.Elements.elementNumberFromSymbol(c.substring(m,m+2),!0))q="\x00";"\x00"!=q&&0<="NA CA BA PA SC AC Na Ca Ba Pa Sc Ac".indexOf(c.substring(m,m+2))&&(q="\x00");g=JU.PT.isUpperCase(g)&&JU.PT.isLowerCase(q)?2:1;b=this.parseAtom(a, +null,c.substring(m,m+g),b,j,!1,!1,e);m+=g}else throw new JS.InvalidSmilesException("Unexpected character: "+JS.SmilesParser.getChar(c,m));g=JS.SmilesParser.getChar(c,m);"}"==g&&this.checkBrace(a,g,"}")&&m++}c=c.substring(m);e=!1}},"JS.SmilesSearch,~S,JS.SmilesAtom,~B");j(b,"parseConnection",function(a,b,h,e){b=Integer.$valueOf(b);var d=this.connections.get(b);if(null==d)this.connections.put(b,e),a.target.ringCount++;else{this.connections.remove(b);switch(e.order){case -1:e.order=-1!=d.order?d.order: +this.isSmarts||h.isAromatic&&d.atom1.isAromatic?81:1;break;case 1025:e.order=1041;break;case 1041:e.order=1025}if(-1!=d.order&&d.order!=e.order||h===d.atom1||null!=d.atom1.getBondTo(h))throw new JS.InvalidSmilesException("Bad connection type or atom");d.set(e);h.bondCount--;d.setAtom2(h,a)}},"JS.SmilesSearch,~N,JS.SmilesAtom,JS.SmilesBond");j(b,"setBondAtom",function(a,b,h,e){a.set2a(b,h);null!=e&&(2==a.order&&null!=a.atom1&&null!=a.atom2&&a.atom1.isAromatic&&a.atom2.isAromatic&&0==(this.flags&512))&& +e.setFlags(this.flags|=512)},"JS.SmilesBond,JS.SmilesAtom,JS.SmilesAtom,JS.SmilesSearch");b.getRingNumber=j(b,"getRingNumber",function(a,b,h,e){switch(h.charCodeAt(0)){case 37:if("("==JS.SmilesParser.getChar(a,b+1)){if(a=JS.SmilesParser.getSubPattern(a,b+1,"("),JS.SmilesParser.getDigits(a,0,e),b+=a.length+3,0>e[0])throw new JS.InvalidSmilesException("Invalid number designation: "+a);}else if(b+3<=a.length&&(b=JS.SmilesParser.getDigits(a.substring(0,b+3),b+1,e)),10>e[0])throw new JS.InvalidSmilesException("Two digits must follow the % sign"); +a=e[0];break;default:a=h.charCodeAt(0)-48,b++}e[0]=a;return b},"~S,~N,~S,~A");j(b,"checkBioType",function(a,b){if(this.isBioSequence="~"==a.charAt(b)){b++;this.bioType="*";var h=JS.SmilesParser.getChar(a,2);if("~"==h&&("*"==(h=a.charAt(1))||JU.PT.isLowerCase(h)))this.bioType=h,b=3}return b},"~S,~N");j(b,"parseMeasure",function(a,b,h){for(var e=b.indexOf(":"),d=0>e?b:b.substring(0,e);0!=e;){var f=d.length;1==f&&(d+="0");var g=this.htMeasures.get(d);if(null==g==0>e||0==f)break;try{if(0j)break;var k=y(1,0);JS.SmilesParser.getDigits(d,1,k);var m=k[0];b=b.substring(e+1);var q=b.startsWith("!");q&&(b=b.substring(1));var n=b.startsWith("-");n&&(b=b.substring(1));b=JU.PT.rep(b,"-",",");b=JU.PT.rep(b,",,",",-");n&&(b="-"+b);var p=JU.PT.split(b,",");if(1==p.length%2||q&&2!=p.length)break;for(var r=R(p.length,0),u=p.length;0<=--u&&!Float.isNaN(r[u]=Float.parseFloat(p[u])););if(0<=u)break;g=new JS.SmilesMeasure(a,m,j,q,r);a.measures.addLast(g);0",;&![".indexOf(b.substring(f-1)))j="&";1",;&!)]".indexOf(g.charAt(0))&&(g="&"+g);b=b+j+"_"+a.top.addNested(d)+"_"+g}return b},"JS.SmilesSearch,~S,~S");j(b,"parseVariables",function(a){var b=new JU.Lst,h=new JU.Lst,e,d=0,f=-1;for(JU.Logger.debugging&&JU.Logger.info(a);0<=(e=a.indexOf("$",d))&&"("!=JS.SmilesParser.getChar(a,e+1);){d=JS.SmilesParser.skipTo(a,e,"=");if(d<=e+1||'"'!=JS.SmilesParser.getChar(a,d+1))break;e=a.substring(e,d);if(0f)return a;a=a.substring(f);for(d=b.size();0<=--d;)e=b.get(d),f=h.get(d),f.equals(e)||(a=JU.PT.rep(a,e,f));JU.Logger.debugging&&JU.Logger.info(a);return a},"~S");j(b,"parseAtom",function(a,b,h,e,d,f,g,j){if(null==h||0==h.length)throw new JS.InvalidSmilesException("Empty atom definition");var k=new JS.SmilesAtom;0a.ringDataMax&&(a.ringDataMax=s)}a.top.needRingData=!0;break;case 118:k.setValence(-2147483648==s?1:s);break;case 88:k.setConnectivity(-2147483648==s?1:s);break;case 120:k.setRingConnectivity(-2147483648==s?-1:s),a.top.needRingData=!0}}q=JS.SmilesParser.getChar(h,n);if(p&&"\x00"!=q)throw new JS.InvalidSmilesException("'!' may only involve one primitive.");}-2147483648==r&&f&&(r=-2147483647);k.setExplicitHydrogenCount(r);a.patternAtoms[k.index].setExplicitHydrogenCount(r)}0< +this.braceCount&&(k.selected=!0);null!=b&&b.addSubAtom(k,g);null!=e&&0==d.order&&(k.notBondedIndex=e.index);null!=e&&0!=d.order&&(-1==d.order&&(d.order=this.isBioSequence&&j?112:this.isSmarts||e.isAromatic&&k.isAromatic?81:1),f||this.setBondAtom(d,null,k,a),0==this.branchLevel&&(17==d.getBondType()||112==d.order)&&this.branchLevel++);0==this.branchLevel&&(a.lastChainAtom=k);return k},"JS.SmilesSearch,JS.SmilesAtom,~S,JS.SmilesAtom,JS.SmilesBond,~B,~B,~B");j(b,"checkCharge",function(a,b,h){var e=a.length, +d=a.charAt(b),f=1;++b;if(b>")){j=-1;break}case 46:if(null==e&&null==b)return this.isBioSequence="~"==JS.SmilesParser.getChar(h, +1),new JS.SmilesBond(null,null,0,!1);j=-1;break;case 43:null!=b&&(j=-1)}else m="\x00";e=null==b?null==e?new JS.SmilesBond(d,null,this.isBioSequence&&null!=d?g?112:96:-1,!1):e:f?b.addPrimitive():b.addBondOr();if(0",;&!(".indexOf(b.charAt(k-1))&&(b=b.substring(0,k)+"&"+b.substring(k)),k=b.lastIndexOf("!",k-1);var k=b.indexOf(","),m=b.length,q="&";a:for(;;){var n=0k&&1b)try{return h[0]=Integer.parseInt(a.substring(b,e)),e}catch(f){if(!H(f,"NumberFormatException"))throw f;}h[0]=-2147483648;return e},"~S,~N,~A");b.skipTo=j(b,"skipTo",function(a,b,h){for(var e;(e=JS.SmilesParser.getChar(a,++b))!=h&&"\x00"!=e;);return"\x00"==e?-1:b},"~S,~N,~S");b.cleanPattern=j(b,"cleanPattern",function(a){a=JU.PT.replaceAllCharacters(a," \t\n\r","");a=JU.PT.rep(a,"^^","`");for(var b=0,h=0;0<=(b=a.indexOf("//*"))&&(h=a.indexOf("*//"))>= +b;)a=a.substring(0,b)+a.substring(h+3);return a=JU.PT.rep(a,"//","")},"~S");b.extractFlags=j(b,"extractFlags",function(a,b){a=JS.SmilesParser.cleanPattern(a);for(var h=0;a.startsWith("/");){var e=JS.SmilesParser.getSubPattern(a,0,"/").toUpperCase();a=a.substring(e.length+2);h=JS.SmilesSearch.addFlags(h,e)}b[0]=h;return a},"~S,~A");b.getFlags=j(b,"getFlags",function(a){var b=y(1,0);JS.SmilesParser.extractFlags(a,b);return b[0]},"~S")});G("JS");A(null,"JS.SmilesExt","JU.AU $.BS $.Lst $.M4 $.Measure $.P3 J.api.Interface JU.Logger".split(" "), +function(){var b=K(function(){this.e=null;I(this,arguments)},JS,"SmilesExt",null);j(b,"init",function(a){this.e=a;return this},"~O");j(b,"getSmilesCorrelation",function(a,b,h,e,d,f,g,j,k,m,q,n){var p=null==k?0.1:3.4028235E38;try{null==e&&(e=new JU.Lst,d=new JU.Lst);var r=new JU.M4,u=new JU.P3,s=this.e.vwr.ms.at,y=this.e.vwr.ms.ac,x=this.e.vwr.getSmilesMatcher(),v=x.getCorrelationMaps(h,s,y,a,n|8);null==v&&this.e.evalError(x.getLastException(),null);if(0==v.length)return NaN;var A=v[0];for(a=0;a=f-h[d][0]&&(f+=360));h[d][e]=f}},"~A,~A,~A,~N");j(b,"mapPolyhedra",function(a,b,h,e){var d=new JU.Lst,f=new JU.Lst,g;g=P(-1,[Integer.$valueOf(a),null]);this.e.getShapePropertyData(21,"syminfo",g);a=g[1];g[0]=Integer.$valueOf(b);g[1]=null;this.e.getShapePropertyData(21,"syminfo",g);b=g[1];if(null==a||null==b)return NaN;g=a.get("polySmiles");var j=b.get("polySmiles");h=this.getSmilesMatches(j,g,null,null,h?1:16385,!1,!0);if(0==h.length)return NaN; +d.addLast(a.get("center"));a=a.get("vertices");g=0;for(j=a.length;g 0) { +haveData = true; +commands.append(atomProps); +}if (this.vwr.userVdws != null) { +var info = this.vwr.getDefaultVdwNameOrData(0, J.c.VDW.USER, this.vwr.bsUserVdws); +if (info.length > 0) { +haveData = true; +commands.append(info); +}}if (this.vwr.nmrCalculation != null) haveData = new Boolean (haveData | this.vwr.nmrCalculation.getState(commands)).valueOf(); +if (this.vwr.dm != null) haveData = new Boolean (haveData | this.vwr.dm.getDataState(this, commands)).valueOf(); +if (!haveData) return ""; +var cmd = ""; +if (sfunc != null) { +sfunc.append(" _setDataState;\n"); +cmd = "function _setDataState() {\n"; +commands.append("}\n\n"); +}return cmd + commands.toString(); +}, "JU.SB"); +Clazz_defineMethod(c$, "getDefinedState", +function(sfunc, isAll){ +var ms = this.vwr.ms; +var len = ms.stateScripts.size(); +if (len == 0) return ""; +var haveDefs = false; +var commands = new JU.SB(); +var cmd; +for (var i = 0; i < len; i++) { +var ss = ms.stateScripts.get(i); +if (ss.inDefinedStateBlock && (cmd = ss.toString()).length > 0) { +this.app(commands, cmd); +haveDefs = true; +}} +if (!haveDefs) return ""; +cmd = ""; +if (isAll && sfunc != null) { +sfunc.append(" _setDefinedState;\n"); +cmd = "function _setDefinedState() {\n\n"; +}if (sfunc != null) commands.append("\n}\n\n"); +return cmd + commands.toString(); +}, "JU.SB,~B"); +Clazz_overrideMethod(c$, "getModelState", +function(sfunc, isAll, withProteinStructure){ +var commands = new JU.SB(); +if (isAll && sfunc != null) { +sfunc.append(" _setModelState;\n"); +commands.append("function _setModelState() {\n"); +}var cmd; +var ms = this.vwr.ms; +var bonds = ms.bo; +var models = ms.am; +var modelCount = ms.mc; +if (isAll) { +var len = ms.stateScripts.size(); +for (var i = 0; i < len; i++) { +var ss = ms.stateScripts.get(i); +if (!ss.inDefinedStateBlock && (cmd = ss.toString()).length > 0) { +this.app(commands, cmd); +}} +var sb = new JU.SB(); +var loadUC = false; +if (ms.unitCells != null) { +var haveModulation = false; +for (var i = 0; i < modelCount; i++) { +var symmetry = ms.getUnitCell(i); +if (symmetry == null) continue; +sb.setLength(0); +if (symmetry.getState(ms, i, sb)) { +loadUC = true; +commands.append(" frame ").append(ms.getModelNumberDotted(i)).appendSB(sb).append(";\n"); +}haveModulation = new Boolean (haveModulation | (this.vwr.ms.getLastVibrationVector(i, 1275072532) >= 0)).valueOf(); +} +if (loadUC) this.vwr.shm.loadShape(33); +this.getShapeStatePriv(commands, isAll, 33); +if (haveModulation) { +var temp = new java.util.Hashtable(); +var ivib; +for (var i = modelCount; --i >= 0; ) { +if ((ivib = this.vwr.ms.getLastVibrationVector(i, 1275072532)) >= 0) for (var j = models[i].firstAtomIndex; j <= ivib; j++) { +var mset = ms.getModulation(j); +if (mset != null) JU.BSUtil.setMapBitSet(temp, j, j, mset.getState()); +} +} +commands.append(this.getCommands(temp, null, "select")); +}}sb.setLength(0); +for (var i = 0; i < ms.bondCount; i++) if (!models[bonds[i].atom1.mi].isModelKit) if (bonds[i].isHydrogen() || (bonds[i].order & 131072) != 0) { +var bond = bonds[i]; +var index = bond.atom1.i; +if (bond.atom1.group.isAdded(index)) index = -1 - index; +sb.appendI(index).appendC('\t').appendI(bond.atom2.i).appendC('\t').appendI(bond.order & 131071).appendC('\t').appendF(bond.mad / 1000).appendC('\t').appendF(bond.getEnergy()).appendC('\t').append(JU.Edge.getBondOrderNameFromOrder(bond.order)).append(";\n"); +} +if (sb.length() > 0) commands.append("data \"connect_atoms\"\n").appendSB(sb).append("end \"connect_atoms\";\n"); +commands.append("\n"); +}if (ms.haveHiddenBonds) { +var bs = new JM.BondSet(); +for (var i = ms.bondCount; --i >= 0; ) if (bonds[i].mad != 0 && (bonds[i].shapeVisibilityFlags & JM.Bond.myVisibilityFlag) == 0) bs.set(i); + +if (bs.isEmpty()) ms.haveHiddenBonds = false; + else commands.append(" hide ").append(JU.Escape.eBond(bs)).append(";\n"); +}this.vwr.setModelVisibility(); +if (withProteinStructure) commands.append(ms.getProteinStructureState(null, isAll ? 1073742327 : 1073742158)); +for (var i = 0; i < modelCount; i++) if (models[i].mat4 != null) commands.append(" frame orientation " + ms.getModelNumberDotted(i) + JU.Escape.matrixToScript(models[i].mat4) + ";\n"); + +this.getShapeStatePriv(commands, isAll, 2147483647); +if (isAll) { +var needOrientations = false; +for (var i = 0; i < modelCount; i++) if (models[i].isJmolDataFrame) { +needOrientations = true; +break; +} +var sb = new JU.SB(); +for (var i = 0; i < modelCount; i++) { +var m = models[i]; +sb.setLength(0); +var s = ms.getInfo(i, "modelID"); +if (s != null && !s.equals(ms.getInfo(i, "modelID0"))) sb.append(" frame ID ").append(JU.PT.esc(s)).append(";\n"); +var t = ms.frameTitles[i]; +if (t != null && t.length > 0) sb.append(" frame title ").append(JU.PT.esc(t)).append(";\n"); +if (needOrientations && m.orientation != null && !ms.isTrajectorySubFrame(i)) sb.append(" ").append(m.orientation.getMoveToText(false)).append(";\n"); +if (m.frameDelay != 0 && !ms.isTrajectorySubFrame(i)) sb.append(" frame delay ").appendF(m.frameDelay / 1000).append(";\n"); +if (m.simpleCage != null) { +sb.append(" unitcell ").append(JU.Escape.eAP(m.simpleCage.getUnitCellVectors())).append(";\n"); +this.getShapeStatePriv(sb, isAll, 33); +}if (sb.length() > 0) commands.append(" frame " + ms.getModelNumberDotted(i) + ";\n").appendSB(sb); +} +commands.append(" set fontScaling " + this.vwr.getBoolean(603979847) + ";\n"); +}if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JU.SB,~B,~B"); +Clazz_defineMethod(c$, "getWindowState", +function(sfunc, width, height){ +var global = this.vwr.g; +var str = new JU.SB(); +if (sfunc != null) { +sfunc.append(" initialize;\n set refreshing false;\n _setWindowState;\n"); +str.append("\nfunction _setWindowState() {\n"); +}if (width != 0) str.append("# preferredWidthHeight ").appendI(width).append(" ").appendI(height).append(";\n"); +str.append("# width ").appendI(width == 0 ? this.vwr.getScreenWidth() : width).append(";\n# height ").appendI(height == 0 ? this.vwr.getScreenHeight() : height).append(";\n"); +this.app(str, "stateVersion = " + JV.JC.versionInt); +this.app(str, "background " + JU.Escape.escapeColor(global.objColors[0])); +for (var i = 1; i < 7; i++) if (global.objColors[i] != 0) this.app(str, JV.StateManager.getObjectNameFromId(i) + "Color = \"" + JU.Escape.escapeColor(global.objColors[i]) + '"'); + +if (global.backgroundImageFileName != null) { +this.app(str, "background IMAGE " + (global.backgroundImageFileName.startsWith(";base64,") ? "" : "/*file*/") + JU.PT.esc(global.backgroundImageFileName)); +}str.append(this.getLightingState(false)); +if (sfunc != null) str.append("}\n\n"); +return str.toString(); +}, "JU.SB,~N,~N"); +Clazz_overrideMethod(c$, "getLightingState", +function(isAll){ +var str = new JU.SB(); +var g = this.vwr.gdata; +this.app(str, "set ambientPercent " + g.getAmbientPercent()); +this.app(str, "set diffusePercent " + g.getDiffusePercent()); +this.app(str, "set specular " + g.getSpecular()); +this.app(str, "set specularPercent " + g.getSpecularPercent()); +this.app(str, "set specularPower " + g.getSpecularPower()); +var se = g.getSpecularExponent(); +var pe = g.getPhongExponent(); +this.app(str, (Math.pow(2, se) == pe ? "set specularExponent " + se : "set phongExponent " + pe)); +this.app(str, "set celShading " + g.getCel()); +this.app(str, "set celShadingPower " + g.getCelPower()); +this.app(str, "set zShadePower " + this.vwr.g.zShadePower); +if (isAll) this.getZshadeState(str, this.vwr.tm, true); +return str.toString(); +}, "~B"); +Clazz_defineMethod(c$, "getFileState", +function(sfunc){ +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setFileState;\n"); +commands.append("function _setFileState() {\n\n"); +}if (commands.indexOf("append") < 0 && this.vwr.getModelSetFileName().equals("zapped")) commands.append(" zap;\n"); +this.appendLoadStates(commands); +if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JU.SB"); +Clazz_defineMethod(c$, "appendLoadStates", +function(cmds){ +var ligandModelSet = this.vwr.ligandModelSet; +if (ligandModelSet != null) { +for (var key, $key = ligandModelSet.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +var data = this.vwr.ligandModels.get(key + "_data"); +if (data != null) cmds.append(" ").append(JU.Escape.encapsulateData("ligand_" + key, data.trim() + "\n", 0)); +data = this.vwr.ligandModels.get(key + "_file"); +if (data != null) cmds.append(" ").append(JU.Escape.encapsulateData("file_" + key, data.trim() + "\n", 0)); +} +}var commands = new JU.SB(); +var ms = this.vwr.ms; +var models = ms.am; +var modelCount = ms.mc; +for (var i = 0; i < modelCount; i++) { +if (ms.isJmolDataFrameForModel(i) || ms.isTrajectorySubFrame(i)) continue; +var m = models[i]; +var pt = commands.indexOf(m.loadState); +if (pt < 0 || pt != commands.lastIndexOf(m.loadState)) commands.append(models[i].loadState); +if (models[i].isModelKit) { +var bs = ms.getModelAtomBitSetIncludingDeleted(i, false); +if (ms.tainted != null) { +if (ms.tainted[2] != null) ms.tainted[2].andNot(bs); +if (ms.tainted[3] != null) ms.tainted[3].andNot(bs); +}m.loadScript = new JU.SB(); +this.getInlineData(commands, this.vwr.getModelExtract(bs, false, true, "MOL"), i > 0, null, null); +} else { +commands.appendSB(m.loadScript); +var auxFiles = m.auxiliaryInfo.get("auxFiles"); +if (auxFiles != null) { +for (var j = 0; j < auxFiles.size(); j++) commands.append(";#FILE1=" + JU.PT.esc(auxFiles.get(j)) + ";"); + +}}} +var s = commands.toString(); +if (s.indexOf("data \"append ") < 0) { +var i = s.indexOf("load /*data*/"); +var j = s.indexOf("load /*file*/"); +if (j >= 0 && j < i) i = j; +if ((j = s.indexOf("load \"@")) >= 0 && j < i) i = j; +if (i >= 0) s = s.substring(0, i) + "zap;" + s.substring(i); +}cmds.append(s); +}, "JU.SB"); +Clazz_overrideMethod(c$, "getInlineData", +function(loadScript, strModel, isAppend, appendToModelIndex, loadFilter){ +var tag = (isAppend ? "append" + (appendToModelIndex != null && appendToModelIndex.intValue() != this.vwr.ms.mc - 1 ? " modelindex=" + appendToModelIndex : "") : "model") + " inline"; +loadScript.append("load /*data*/ data \"").append(tag).append("\"\n").append(strModel).append("end \"").append(tag).append(loadFilter == null || loadFilter.length == 0 ? "" : " filter" + JU.PT.esc(loadFilter)).append("\";"); +}, "JU.SB,~S,~B,Integer,~S"); +Clazz_defineMethod(c$, "getColorState", +function(cm, sfunc){ +var s = new JU.SB(); +var n = this.getCEState(cm.ce, s); +if (n > 0 && sfunc != null) sfunc.append("\n _setColorState\n"); +return (n > 0 && sfunc != null ? "function _setColorState() {\n" + s.append("}\n\n").toString() : s.toString()); +}, "JV.ColorManager,JU.SB"); +Clazz_defineMethod(c$, "getCEState", +function(p, s){ +var n = 0; +for (var entry, $entry = p.schemes.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var name = entry.getKey(); +if (name.length > 0 && !name.startsWith("=") && n++ >= 0) s.append("color \"" + name + "=" + JU.ColorEncoder.getColorSchemeList(entry.getValue()) + "\";\n"); +} +return n; +}, "JU.ColorEncoder,JU.SB"); +Clazz_defineMethod(c$, "getAnimState", +function(am, sfunc){ +var modelCount = this.vwr.ms.mc; +if (modelCount < 2) return ""; +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setFrameState;\n"); +commands.append("function _setFrameState() {\n"); +}commands.append("# frame state;\n"); +commands.append("# modelCount ").appendI(modelCount).append(";\n# first ").append(this.vwr.getModelNumberDotted(0)).append(";\n# last ").append(this.vwr.getModelNumberDotted(modelCount - 1)).append(";\n"); +if (am.backgroundModelIndex >= 0) this.app(commands, "set backgroundModel " + this.vwr.getModelNumberDotted(am.backgroundModelIndex)); +if (this.vwr.tm.bsFrameOffsets != null) { +this.app(commands, "frame align " + JU.Escape.eBS(this.vwr.tm.bsFrameOffsets)); +} else if (this.vwr.ms.translations != null) { +for (var i = modelCount; --i >= 0; ) { +var t = (this.vwr.ms.getTranslation(i)); +if (t != null) this.app(commands, "frame " + this.vwr.ms.getModelNumberDotted(i) + " align " + t); +} +}this.app(commands, "frame RANGE " + am.getModelSpecial(-1) + " " + am.getModelSpecial(1)); +this.app(commands, "animation DIRECTION " + (am.animationDirection == 1 ? "+1" : "-1")); +this.app(commands, "animation FPS " + am.animationFps); +this.app(commands, "animation MODE " + JS.T.nameOf(am.animationReplayMode) + " " + am.firstFrameDelay + " " + am.lastFrameDelay); +if (am.morphCount > 0) this.app(commands, "animation MORPH " + am.morphCount); +var showModel = true; +if (am.animationFrames != null) { +this.app(commands, "anim frames " + JU.Escape.eAI(am.animationFrames)); +var i = am.caf; +this.app(commands, "frame " + (i + 1)); +showModel = (am.cmi != am.modelIndexForFrame(i)); +}if (showModel) { +var s = am.getModelSpecial(0); +this.app(commands, s.equals("0") ? "frame *" : "model " + s); +}this.app(commands, "animation " + (!am.animationOn ? "OFF" : am.currentDirection == 1 ? "PLAY" : "PLAYREV")); +if (am.animationOn && am.animationPaused) this.app(commands, "animation PAUSE"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.AnimationManager,JU.SB"); +Clazz_defineMethod(c$, "getParameterState", +function(global, sfunc){ +var list = new Array(global.htBooleanParameterFlags.size() + global.htNonbooleanParameterValues.size()); +var commands = new JU.SB(); +var isState = (sfunc != null); +if (isState) { +sfunc.append(" _setParameterState;\n"); +commands.append("function _setParameterState() {\n\n"); +}var n = 0; +for (var key, $key = global.htBooleanParameterFlags.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (JV.GlobalSettings.doReportProperty(key)) list[n++] = "set " + key + " " + global.htBooleanParameterFlags.get(key); + +for (var key, $key = global.htNonbooleanParameterValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) if (JV.GlobalSettings.doReportProperty(key)) { +var value = global.htNonbooleanParameterValues.get(key); +if (key.charAt(0) == '=') { +key = key.substring(1); +} else { +key = (key.indexOf("default") == 0 ? " " : "") + "set " + key; +value = JU.Escape.e(value); +}list[n++] = key + " " + value; +} +switch (global.axesMode) { +case 603979808: +list[n++] = "set axes unitcell"; +break; +case 603979804: +list[n++] = "set axes molecular"; +break; +default: +list[n++] = "set axes window"; +} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) this.app(commands, list[i]); + +var s = JV.StateManager.getVariableList(global.htUserVariables, 0, false, true); +if (s.length > 0) { +commands.append("\n#user-defined atom sets; \n"); +commands.append(s); +}if (this.vwr.shm.getShape(5) != null) commands.append(this.getDefaultLabelState(this.vwr.shm.shapes[5])); +if (global.haveSetStructureList) { +var slist = global.structureList; +commands.append("struture HELIX set " + JU.Escape.eAF(slist.get(J.c.STR.HELIX))); +commands.append("struture SHEET set " + JU.Escape.eAF(slist.get(J.c.STR.SHEET))); +commands.append("struture TURN set " + JU.Escape.eAF(slist.get(J.c.STR.TURN))); +}if (sfunc != null) commands.append("\n}\n\n"); +return commands.toString(); +}, "JV.GlobalSettings,JU.SB"); +Clazz_defineMethod(c$, "getDefaultLabelState", +function(l){ +var s = new JU.SB().append("\n# label defaults;\n"); +this.app(s, "select none"); +this.app(s, J.shape.Shape.getColorCommand("label", l.defaultPaletteID, l.defaultColix, l.translucentAllowed)); +this.app(s, "background label " + J.shape.Shape.encodeColor(l.defaultBgcolix)); +this.app(s, "set labelOffset " + JV.JC.getXOffset(l.defaultOffset) + " " + (JV.JC.getYOffset(l.defaultOffset))); +var align = JV.JC.getHorizAlignmentName(l.defaultAlignment); +this.app(s, "set labelAlignment " + (align.length < 5 ? "left" : align)); +var pointer = JV.JC.getPointerName(l.defaultPointer); +this.app(s, "set labelPointer " + (pointer.length == 0 ? "off" : pointer)); +if ((l.defaultZPos & 32) != 0) this.app(s, "set labelFront"); + else if ((l.defaultZPos & 16) != 0) this.app(s, "set labelGroup"); +this.app(s, J.shape.Shape.getFontCommand("label", JU.Font.getFont3D(l.defaultFontId))); +return s.toString(); +}, "J.shape.Labels"); +Clazz_defineMethod(c$, "getSelectionState", +function(sm, sfunc){ +var commands = new JU.SB(); +if (sfunc != null) { +sfunc.append(" _setSelectionState;\n"); +commands.append("function _setSelectionState() {\n"); +}if (this.vwr.ms.trajectory != null) this.app(commands, this.vwr.ms.trajectory.getState()); +var temp = new java.util.Hashtable(); +var cmd = null; +this.addBs(commands, "hide ", sm.bsHidden); +this.addBs(commands, "subset ", sm.bsSubset); +this.addBs(commands, "delete ", sm.bsDeleted); +this.addBs(commands, "fix ", sm.bsFixed); +temp.put("-", this.vwr.slm.getSelectedAtomsNoSubset()); +cmd = this.getCommands(temp, null, "select"); +if (cmd == null) this.app(commands, "select none"); + else commands.append(cmd); +this.app(commands, "set hideNotSelected " + sm.hideNotSelected); +commands.append(this.vwr.getShapeProperty(1, "selectionState")); +if (this.vwr.getSelectionHalosEnabled()) this.app(commands, "SelectionHalos ON"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.SelectionManager,JU.SB"); +Clazz_defineMethod(c$, "getViewState", +function(tm, sfunc){ +var commands = new JU.SB(); +var moveToText = tm.getMoveToText(0, false); +if (sfunc != null) { +sfunc.append(" _setPerspectiveState;\n"); +commands.append("function _setPerspectiveState() {\n"); +}this.app(commands, "set perspectiveModel " + tm.perspectiveModel); +this.app(commands, "set scaleAngstromsPerInch " + tm.scale3DAngstromsPerInch); +this.app(commands, "set perspectiveDepth " + tm.perspectiveDepth); +this.app(commands, "set visualRange " + tm.visualRangeAngstroms); +if (!tm.isWindowCentered()) this.app(commands, "set windowCentered false"); +this.app(commands, "set cameraDepth " + tm.cameraDepth); +var navigating = (tm.mode == 1); +if (navigating) this.app(commands, "set navigationMode true"); +this.app(commands, this.vwr.ms.getBoundBoxCommand(false)); +this.app(commands, "center " + JU.Escape.eP(tm.fixedRotationCenter)); +commands.append(this.vwr.getOrientation(1073742034, null, null, null).toString()); +this.app(commands, moveToText); +if (!navigating && !tm.zoomEnabled) this.app(commands, "zoom off"); +commands.append(" slab ").appendI(tm.slabPercentSetting).append(";depth ").appendI(tm.depthPercentSetting).append(tm.slabEnabled && !navigating ? ";slab on" : "").append(";\n"); +commands.append(" set slabRange ").appendF(tm.slabRange).append(";\n"); +if (tm.slabPlane != null) commands.append(" slab plane ").append(JU.Escape.eP4(tm.slabPlane)).append(";\n"); +if (tm.depthPlane != null) commands.append(" depth plane ").append(JU.Escape.eP4(tm.depthPlane)).append(";\n"); +this.getZshadeState(commands, tm, false); +commands.append(this.getSpinState(true)).append("\n"); +if (this.vwr.ms.modelSetHasVibrationVectors() && tm.vibrationOn) this.app(commands, "set vibrationPeriod " + tm.vibrationPeriod + ";vibration on"); +var slabInternal = (tm.depthPlane != null || tm.slabPlane != null); +if (navigating) { +commands.append(tm.getNavigationState()); +}if (!tm.slabEnabled && slabInternal) commands.append(" slab off;\n"); +if (sfunc != null) commands.append("}\n\n"); +return commands.toString(); +}, "JV.TransformManager,JU.SB"); +Clazz_defineMethod(c$, "getZshadeState", +function(s, tm, isAll){ +if (isAll) { +this.app(s, "set zDepth " + tm.zDepthPercentSetting); +this.app(s, "set zSlab " + tm.zSlabPercentSetting); +if (!tm.zShadeEnabled) this.app(s, "set zShade false"); +}if (tm.zShadeEnabled) this.app(s, "set zShade true"); +try { +if (tm.zSlabPoint != null) this.app(s, "set zSlab " + JU.Escape.eP(tm.zSlabPoint)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "JU.SB,JV.TransformManager,~B"); +Clazz_overrideMethod(c$, "getSpinState", +function(isAll){ +var tm = this.vwr.tm; +var s = " set spinX " + Clazz_floatToInt(tm.spinX) + "; set spinY " + Clazz_floatToInt(tm.spinY) + "; set spinZ " + Clazz_floatToInt(tm.spinZ) + "; set spinFps " + Clazz_floatToInt(tm.spinFps) + ";"; +if (!Float.isNaN(tm.navFps)) s += " set navX " + Clazz_floatToInt(tm.navX) + "; set navY " + Clazz_floatToInt(tm.navY) + "; set navZ " + Clazz_floatToInt(tm.navZ) + "; set navFps " + Clazz_floatToInt(tm.navFps) + ";"; +if (tm.navOn) s += " navigation on;"; +if (!tm.spinOn) return s; +var prefix = (tm.isSpinSelected ? "\n select " + JU.Escape.eBS(this.vwr.bsA()) + ";\n rotateSelected" : "\n "); +if (tm.isSpinInternal) { +var pt = JU.P3.newP(tm.internalRotationCenter); +pt.sub(tm.rotationAxis); +s += prefix + " spin " + tm.rotationRate + " " + JU.Escape.eP(tm.internalRotationCenter) + " " + JU.Escape.eP(pt); +} else if (tm.isSpinFixed) { +s += prefix + " spin axisangle " + JU.Escape.eP(tm.rotationAxis) + " " + tm.rotationRate; +} else { +s += " spin on"; +}return s + ";"; +}, "~B"); +Clazz_overrideMethod(c$, "getCommands", +function(htDefine, htMore, selectCmd){ +var s = new JU.SB(); +var setPrev = this.getCommands2(htDefine, s, null, selectCmd); +if (htMore != null) this.getCommands2(htMore, s, setPrev, "select"); +return s.toString(); +}, "java.util.Map,java.util.Map,~S"); +Clazz_defineMethod(c$, "getCommands2", +function(ht, s, setPrev, selectCmd){ +if (ht == null) return ""; +for (var entry, $entry = ht.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var set = JU.Escape.eBS(entry.getValue()); +if (set.length < 5) continue; +set = selectCmd + " " + set; +if (!set.equals(setPrev)) this.app(s, set); +setPrev = set; +if (key.indexOf("-") != 0) this.app(s, key); +} +return setPrev; +}, "java.util.Map,JU.SB,~S,~S"); +Clazz_defineMethod(c$, "app", +function(s, cmd){ +if (cmd.length != 0) s.append(" ").append(cmd).append(";\n"); +}, "JU.SB,~S"); +Clazz_defineMethod(c$, "addBs", +function(sb, key, bs){ +if (bs == null || bs.length() == 0) return; +this.app(sb, key + JU.Escape.eBS(bs)); +}, "JU.SB,~S,JU.BS"); +Clazz_defineMethod(c$, "getFontState", +function(myType, font3d){ +var objId = JV.StateManager.getObjectIdFromName(myType.equalsIgnoreCase("axes") ? "axis" : myType); +if (objId < 0) return ""; +var mad = this.vwr.getObjectMad10(objId); +var s = new JU.SB().append("\n"); +this.app(s, myType + (mad == 0 ? " off" : mad == 1 ? " on" : mad == -1 ? " dotted" : mad < 20 ? " " + mad : " " + (mad / 20000))); +if (s.length() < 3) return ""; +var fcmd = J.shape.Shape.getFontCommand(myType, font3d); +if (fcmd.length > 0) fcmd = " " + fcmd + ";\n"; +return (s + fcmd); +}, "~S,JU.Font"); +Clazz_defineMethod(c$, "appendTickInfo", +function(myType, sb, t){ +sb.append(" "); +sb.append(myType); +JV.StateCreator.addTickInfo(sb, t, false); +sb.append(";\n"); +}, "~S,JU.SB,JM.TickInfo"); +c$.addTickInfo = Clazz_defineMethod(c$, "addTickInfo", +function(sb, tickInfo, addFirst){ +sb.append(" ticks ").appendC(tickInfo.type).append(" ").append(JU.Escape.eP(tickInfo.ticks)); +var isUnitCell = (tickInfo.scale != null && Float.isNaN(tickInfo.scale.x)); +if (isUnitCell) sb.append(" UNITCELL"); +if (tickInfo.tickLabelFormats != null) sb.append(" format ").append(JU.Escape.eAS(tickInfo.tickLabelFormats, false)); +if (!isUnitCell && tickInfo.scale != null) sb.append(" scale ").append(JU.Escape.eP(tickInfo.scale)); +if (addFirst && !Float.isNaN(tickInfo.first) && tickInfo.first != 0) sb.append(" first ").appendF(tickInfo.first); +if (tickInfo.reference != null) sb.append(" point ").append(JU.Escape.eP(tickInfo.reference)); +}, "JU.SB,JM.TickInfo,~B"); +Clazz_defineMethod(c$, "getMeasurementState", +function(shape){ +var mList = shape.measurements; +var measurementCount = shape.measurementCount; +var font3d = shape.font3d; +var ti = shape.defaultTickInfo; +var commands = new JU.SB(); +this.app(commands, "measures delete"); +for (var i = 0; i < measurementCount; i++) { +var m = mList.get(i); +var isProperty = (m.property != null); +if (isProperty && Float.isNaN(m.value)) continue; +var count = m.count; +var sb = new JU.SB().append("measure"); +if (m.thisID != null) sb.append(" ID ").append(JU.PT.esc(m.thisID)); +if (m.mad != 0) sb.append(" radius ").appendF(m.thisID == null || m.mad > 0 ? m.mad / 2000 : 0); +if (m.colix != 0) sb.append(" color ").append(JU.Escape.escapeColor(JU.C.getArgb(m.colix))); +if (m.text != null) { +if (m.text.font != null) sb.append(" font ").append(m.text.font.getInfo()); +if (m.text.align != 0) sb.append(" align ").append(JV.JC.getHorizAlignmentName(m.text.align)); +if (m.text.pymolOffset != null) sb.append(" offset ").append(JU.Escape.eAF(m.text.pymolOffset)); +}var tickInfo = m.tickInfo; +if (tickInfo != null) JV.StateCreator.addTickInfo(sb, tickInfo, true); +for (var j = 1; j <= count; j++) sb.append(" ").append(m.getLabel(j, true, true)); + +if (isProperty) { +sb.append(" " + m.property + " value " + (Double.isNaN(m.value) ? 0 : m.value)).append(" " + JU.PT.esc(m.getString())); +} else if (count == 2) { +var s = m.getDistanceFormatForState(); +if (s != null) sb.append(" ").append(JU.PT.esc(s)); +}if (!isProperty) { +sb.append("; # " + shape.getInfoAsString(i)); +}this.app(commands, sb.toString()); +} +this.app(commands, J.shape.Shape.getFontCommand("measures", font3d)); +var nHidden = 0; +var temp = new java.util.Hashtable(); +var bs = JU.BS.newN(measurementCount); +for (var i = 0; i < measurementCount; i++) { +var m = mList.get(i); +if (m.isHidden) { +nHidden++; +bs.set(i); +}if (shape.bsColixSet != null && shape.bsColixSet.get(i)) JU.BSUtil.setMapBitSet(temp, i, i, J.shape.Shape.getColorCommandUnk("measure", m.colix, shape.translucentAllowed)); +} +if (nHidden > 0) if (nHidden == measurementCount) this.app(commands, "measures off; # lines and numbers off"); + else for (var i = 0; i < measurementCount; i++) if (bs.get(i)) JU.BSUtil.setMapBitSet(temp, i, i, "measure off"); + +if (ti != null) { +commands.append(" measure "); +JV.StateCreator.addTickInfo(commands, ti, true); +commands.append(";\n"); +}if (shape.mad >= 0) commands.append(" set measurements ").appendF(shape.mad / 2000).append(";\n"); +var s = this.getCommands(temp, null, "select measures"); +if (s != null && s.length != 0) { +commands.append(s); +this.app(commands, "select measures ({null})"); +}return commands.toString(); +}, "J.shape.Measures"); +Clazz_defineMethod(c$, "getShapeStatePriv", +function(commands, isAll, iShape){ +var shapes = this.vwr.shm.shapes; +if (shapes == null) return; +var i; +var imax; +if (iShape == 2147483647) { +i = 0; +imax = 37; +} else { +imax = (i = iShape) + 1; +}for (; i < imax; ++i) { +var shape = shapes[i]; +if (shape != null && (isAll || i >= 9 && i < 16)) { +var cmd = this.getShapeState(shape); +if (cmd != null && cmd.length > 1) commands.append(cmd); +}} +commands.append(" select *;\n"); +}, "JU.SB,~B,~N"); +Clazz_defineMethod(c$, "getBondState", +function(shape){ +var bsOrderSet = shape.bsOrderSet; +var reportAll = shape.reportAll; +this.clearTemp(); +var modelSet = this.vwr.ms; +var haveTainted = false; +var bonds = modelSet.bo; +var bondCount = modelSet.bondCount; +var r; +if (reportAll || shape.bsSizeSet != null) { +var i0 = (reportAll ? bondCount - 1 : shape.bsSizeSet.nextSetBit(0)); +for (var i = i0; i >= 0; i = (reportAll ? i - 1 : shape.bsSizeSet.nextSetBit(i + 1))) JU.BSUtil.setMapBitSet(this.temp, i, i, "wireframe " + ((r = bonds[i].mad) == 1 ? "on" : "" + JU.PT.escF(r / 2000))); + +}if (reportAll || bsOrderSet != null) { +var i0 = (reportAll ? bondCount - 1 : bsOrderSet.nextSetBit(0)); +for (var i = i0; i >= 0; i = (reportAll ? i - 1 : bsOrderSet.nextSetBit(i + 1))) { +var bond = bonds[i]; +if (reportAll || (bond.order & 131072) == 0) JU.BSUtil.setMapBitSet(this.temp, i, i, "bondOrder " + JU.Edge.getBondOrderNameFromOrder(bond.order)); +} +}if (shape.bsColixSet != null) for (var i = shape.bsColixSet.nextSetBit(0); i >= 0; i = shape.bsColixSet.nextSetBit(i + 1)) { +var colix = bonds[i].colix; +if ((colix & -30721) == 2) JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommand("bonds", J.c.PAL.CPK.id, colix, shape.translucentAllowed)); + else JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommandUnk("bonds", colix, shape.translucentAllowed)); +} +var s = this.getCommands(this.temp, null, "select BONDS") + "\n" + (haveTainted ? this.getCommands(this.temp2, null, "select BONDS") + "\n" : ""); +this.clearTemp(); +return s; +}, "J.shape.Sticks"); +Clazz_defineMethod(c$, "clearTemp", +function(){ +this.temp.clear(); +this.temp2.clear(); +}); +Clazz_defineMethod(c$, "getShapeState", +function(shape){ +var s; +switch (shape.shapeID) { +case 34: +s = this.getAxesState(shape); +break; +case 33: +if (!this.vwr.ms.haveUnitCells) return ""; +var st = s = this.getFontLineShapeState(shape); +var iAtom = this.vwr.am.getUnitCellAtomIndex(); +if (iAtom >= 0) s += " unitcell ({" + iAtom + "});\n"; +var uc = this.vwr.getCurrentUnitCell(); +if (uc != null) { +s += uc.getUnitCellState(); +s += st; +}break; +case 32: +s = this.getFontLineShapeState(shape); +break; +case 36: +s = this.getFontState(shape.myType, (shape).baseFont3d); +break; +case 6: +s = this.getMeasurementState(shape); +break; +case 7: +case 18: +s = this.getAtomShapeState(shape); +break; +case 1: +s = this.getBondState(shape); +break; +case 31: +var es = shape; +var sb = new JU.SB(); +sb.append("\n set echo off;set echo \"%SCALE\" off;\n"); +this.getEchoState(sb, es.scaleObject); +var haveElementKey = false; +for (var t, $t = es.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) { +haveElementKey = new Boolean (haveElementKey | this.getEchoState(sb, t)).valueOf(); +} +if (haveElementKey) sb.append(" modelkit OFF;//to check for element keys\n"); +s = sb.toString(); +break; +case 8: +var hs = shape; +s = this.getAtomShapeState(hs) + (hs.colixSelection == 2 ? "" : hs.colixSelection == 0 ? " color SelectionHalos NONE;\n" : J.shape.Shape.getColorCommandUnk("selectionHalos", hs.colixSelection, hs.translucentAllowed) + ";\n"); +if (hs.bsHighlight != null) s += " set highlight " + JU.Escape.eBS(hs.bsHighlight) + "; " + J.shape.Shape.getColorCommandUnk("highlight", hs.colixHighlight, hs.translucentAllowed) + ";\n"; +break; +case 35: +this.clearTemp(); +var h = shape; +if (h.atomFormats != null) { +var at = this.vwr.ms.at; +for (var i = this.vwr.ms.ac; --i >= 0; ) { +if (at[i] == null) h.atomFormats[i] = null; +if (h.atomFormats[i] != null) { +JU.BSUtil.setMapBitSet(this.temp, i, i, "set hoverLabel " + JU.PT.esc(h.atomFormats[i])); +}} +}s = "\n hover " + JU.PT.esc((h.labelFormat == null ? "" : h.labelFormat)) + ";\n" + this.getCommands(this.temp, null, "select"); +this.clearTemp(); +break; +case 5: +var l = shape; +if (!l.isActive || l.bsSizeSet == null) return ""; +this.clearTemp(); +for (var i = l.bsSizeSet.nextSetBit(0); i >= 0; i = l.bsSizeSet.nextSetBit(i + 1)) { +var t = l.getLabel(i); +var cmd = "label "; +if (t == null) { +cmd += JU.PT.esc(l.formats[i]); +} else { +cmd += JU.PT.esc(t.textUnformatted); +if (t.pymolOffset != null) cmd += ";set labelOffset " + JU.Escape.eAF(t.pymolOffset); +}JU.BSUtil.setMapBitSet(this.temp, i, i, cmd); +if (l.bsColixSet != null && l.bsColixSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand("label", l.paletteIDs[i], l.colixes[i], l.translucentAllowed)); +if (l.bsBgColixSet != null && l.bsBgColixSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, "background label " + J.shape.Shape.encodeColor(l.bgcolixes[i])); +var text = l.getLabel(i); +var sppm = (text != null ? text.scalePixelsPerMicron : 0); +if (sppm > 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelScaleReference " + (10000 / sppm)); +if (l.offsets != null && l.offsets.length > i) { +var offsetFull = l.offsets[i]; +JU.BSUtil.setMapBitSet(this.temp2, i, i, "set " + (JV.JC.isOffsetAbsolute(offsetFull) ? "labelOffsetAbsolute " : "labelOffset ") + JV.JC.getXOffset(offsetFull) + " " + JV.JC.getYOffset(offsetFull)); +var align = JV.JC.getHorizAlignmentName(offsetFull >> 2); +var pointer = JV.JC.getPointerName(offsetFull); +if (pointer.length > 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelPointer " + pointer); +if ((offsetFull & 32) != 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelFront"); + else if ((offsetFull & 16) != 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set labelGroup"); +if (align.length > 0) JU.BSUtil.setMapBitSet(this.temp3, i, i, "set labelAlignment " + align); +}if (l.mads != null && l.mads[i] < 0) JU.BSUtil.setMapBitSet(this.temp2, i, i, "set toggleLabel"); +if (l.bsFontSet != null && l.bsFontSet.get(i)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getFontCommand("label", JU.Font.getFont3D(l.fids[i]))); +} +s = this.getCommands(this.temp, this.temp2, "select") + this.getCommands(null, this.temp3, "select"); +this.temp3.clear(); +this.clearTemp(); +break; +case 0: +this.clearTemp(); +var ac = this.vwr.ms.ac; +var atoms = this.vwr.ms.at; +var balls = shape; +var colixes = balls.colixes; +var pids = balls.paletteIDs; +var r = 0; +for (var i = 0; i < ac; i++) { +if (atoms[i] == null) continue; +if (shape.bsSizeSet != null && shape.bsSizeSet.get(i)) { +if ((r = atoms[i].madAtom) < 0) JU.BSUtil.setMapBitSet(this.temp, i, i, "Spacefill on"); + else JU.BSUtil.setMapBitSet(this.temp, i, i, "Spacefill " + JU.PT.escF(r / 2000)); +}if (shape.bsColixSet != null && shape.bsColixSet.get(i)) { +var pid = atoms[i].paletteID; +if (pid != J.c.PAL.CPK.id || JU.C.isColixTranslucent(atoms[i].colixAtom)) JU.BSUtil.setMapBitSet(this.temp, i, i, J.shape.Shape.getColorCommand("atoms", pid, atoms[i].colixAtom, shape.translucentAllowed)); +if (colixes != null && i < colixes.length) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand("balls", pids[i], colixes[i], shape.translucentAllowed)); +}} +s = this.getCommands(this.temp, this.temp2, "select"); +this.clearTemp(); +break; +default: +s = shape.getShapeState(); +break; +} +return s; +}, "J.shape.Shape"); +Clazz_defineMethod(c$, "getFontLineShapeState", +function(shape){ +var s = this.getFontState(shape.myType, shape.font3d); +if (shape.tickInfos == null) return s; +var isOff = (s.indexOf(" off") >= 0); +var sb = new JU.SB(); +sb.append(s); +for (var i = 0; i < 4; i++) if (shape.tickInfos[i] != null) this.appendTickInfo(shape.myType, sb, shape.tickInfos[i]); + +if (isOff) sb.append(" " + shape.myType + " off;\n"); +return sb.toString(); +}, "J.shape.FontLineShape"); +Clazz_defineMethod(c$, "getAxesState", +function(axes){ +var sb = new JU.SB(); +sb.append(this.getFontLineShapeState(axes)); +return axes.getAxesState(sb); +}, "J.shape.Axes"); +Clazz_overrideMethod(c$, "getAtomShapeState", +function(shape){ +if (!shape.isActive) return ""; +this.clearTemp(); +var type = JV.JC.shapeClassBases[shape.shapeID]; +var isVector = (shape.shapeID == 18); +var mad; +if (shape.bsSizeSet != null) for (var i = shape.bsSizeSet.nextSetBit(0); i >= 0; i = shape.bsSizeSet.nextSetBit(i + 1)) JU.BSUtil.setMapBitSet(this.temp, i, i, type + " " + ((mad = shape.mads[i]) < 0 ? (isVector && mad < -1 ? "" + -mad : "on") : JU.PT.escF(mad / 2000))); + +if (shape.bsColixSet != null) for (var i = shape.bsColixSet.nextSetBit(0); i >= 0; i = shape.bsColixSet.nextSetBit(i + 1)) JU.BSUtil.setMapBitSet(this.temp2, i, i, J.shape.Shape.getColorCommand(type, shape.paletteIDs[i], shape.colixes[i], shape.translucentAllowed)); + +var s = this.getCommands(this.temp, this.temp2, "select"); +this.clearTemp(); +return s; +}, "J.shape.AtomShape"); +Clazz_defineMethod(c$, "getEchoState", +function(sb, t){ +var isScale = (t != null && t.barPixels > 0); +var text = (t == null ? null : isScale ? t.textUnformatted : t.getStateText()); +if (text == null || !t.isEcho || t.target.equals("error")) return false; +var isImage = (t.image != null); +var strOff = null; +var echoCmd = "set echo ID " + JU.PT.esc(t.target); +switch (t.valign) { +case 3: +if (t.movableXPercent == 2147483647 || t.movableYPercent == 2147483647) { +strOff = (t.movableXPercent == 2147483647 ? t.movableX + " " : t.movableXPercent + "% ") + (t.movableYPercent == 2147483647 ? t.movableY + "" : t.movableYPercent + "%"); +} else { +strOff = "[" + t.movableXPercent + " " + t.movableYPercent + "%]"; +}case 4: +if (strOff == null) strOff = JU.Escape.eP(t.xyz); +sb.append(" ").append(echoCmd).append(" ").append(strOff); +if (t.align != 4) sb.append("; ").append(echoCmd).append(" ").append(JV.JC.getHorizAlignmentName(t.align)); +break; +default: +sb.append(" set echo ").append(JV.JC.getEchoName(t.valign)).append(" ").append(JV.JC.getHorizAlignmentName(t.align)); +} +if (t.movableZPercent != 2147483647) sb.append("; ").append(echoCmd).append(" depth ").appendI(t.movableZPercent); +if (isImage) { +sb.append("; ").append(echoCmd).append(" IMAGE /*file*/"); +} else { +sb.append("; echo "); +}sb.append(JU.PT.esc(text)); +sb.append(";\n"); +if (isImage && t.imageScale != 1) sb.append(" ").append(echoCmd).append(" scale ").appendF(t.imageScale).append(";\n"); +if (t.script != null) sb.append(" ").append(echoCmd).append(" script ").append(JU.PT.esc(t.script)).append(";\n"); +if (t.modelIndex >= 0) sb.append(" ").append(echoCmd).append(" model ").append(this.vwr.getModelNumberDotted(t.modelIndex)).append(";\n"); +if (t.pointerPt != null) { +sb.append(" ").append(echoCmd).append(" point ").append(Clazz_instanceOf(t.pointerPt,"JM.Atom") ? "({" + (t.pointerPt).i + "})" : JU.Escape.eP(t.pointerPt)).append(";\n"); +}if (t.pymolOffset != null) { +sb.append(" ").append(echoCmd).append(" offset ").append(JU.Escape.escapeFloatA(t.pymolOffset, true)).append(";\n"); +}t.appendFontCmd(sb); +sb.append("; color echo"); +if (JU.C.isColixTranslucent(t.colix)) sb.append(" ").append(JU.C.getColixTranslucencyLabel(t.colix)); +sb.append(" ").append(JU.C.getHexCode(t.colix)); +if (t.bgcolix != 0) { +sb.append("; color echo background "); +if (JU.C.isColixTranslucent(t.bgcolix)) sb.append(JU.C.getColixTranslucencyLabel(t.bgcolix)).append(" "); +sb.append(JU.C.getHexCode(t.bgcolix)); +}sb.append(";\n"); +if (t.hidden) { +if (isScale) sb.append(" set echo \"%SCALE\" hidden;\n"); + else sb.append(" set echo ID ").append(JU.PT.esc(t.target)).append(" hidden;\n"); +}return (t.target.startsWith("_!_elkey_")); +}, "JU.SB,JM.Text"); +Clazz_overrideMethod(c$, "getAllSettings", +function(prefix){ +var g = this.vwr.g; +var commands = new JU.SB(); +var list = new Array(g.htBooleanParameterFlags.size() + g.htNonbooleanParameterValues.size() + g.htUserVariables.size()); +var n = 0; +var _prefix = "_" + prefix; +for (var key, $key = g.htBooleanParameterFlags.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (prefix == null || key.indexOf(prefix) == 0 || key.indexOf(_prefix) == 0) list[n++] = (key.indexOf("_") == 0 ? key + " = " : "set " + key + " ") + g.htBooleanParameterFlags.get(key); +} +for (var key, $key = g.htNonbooleanParameterValues.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (key.charAt(0) != '@' && (prefix == null || key.indexOf(prefix) == 0 || key.indexOf(_prefix) == 0)) { +var value = g.htNonbooleanParameterValues.get(key); +if ((typeof(value)=='string')) value = JV.StateCreator.chop(JU.PT.esc(value)); +list[n++] = (key.indexOf("_") == 0 ? key + " = " : "set " + key + " ") + value; +}} +for (var key, $key = g.htUserVariables.keySet().iterator (); $key.hasNext()&& ((key = $key.next ()) || true);) { +if (prefix == null || key.indexOf(prefix) == 0) { +var value = g.htUserVariables.get(key); +var s = value.escape(); +list[n++] = key + " " + (key.startsWith("@") ? "" : "= ") + (value.tok == 4 ? JV.StateCreator.chop(JU.PT.esc(s)) : s); +}} +java.util.Arrays.sort(list, 0, n); +for (var i = 0; i < n; i++) if (list[i] != null) this.app(commands, list[i]); + +commands.append("\n"); +return commands.toString(); +}, "~S"); +c$.chop = Clazz_defineMethod(c$, "chop", +function(s){ +var len = s.length; +if (len < 512) return s; +var sb = new JU.SB(); +var sep = "\"\\\n + \""; +var pt = 0; +for (var i = 72; i < len; pt = i, i += 72) { +while (s.charAt(i - 1) == '\\') i++; + +sb.append((pt == 0 ? "" : sep)).append(s.substring(pt, i)); +} +sb.append(sep).append(s.substring(pt, len)); +return sb.toString(); +}, "~S"); +Clazz_overrideMethod(c$, "getFunctionCalls", +function(f){ +if (f == null) f = ""; +var s = new JU.SB(); +var pt = f.indexOf("*"); +var isGeneric = (pt >= 0); +var isStatic = JV.Viewer.isStaticFunction(f); +var namesOnly = (f.equalsIgnoreCase("names") || f.equalsIgnoreCase("static_names")); +if (namesOnly) f = ""; +if (isGeneric) f = f.substring(0, pt); +f = f.toLowerCase(); +if (isStatic || f.length == 0) this.addFunctions(s, JV.Viewer.staticFunctions, f, isGeneric, namesOnly); +if (!isStatic || f.length == 0) this.addFunctions(s, this.vwr.localFunctions, f, isGeneric, namesOnly); +return s.toString(); +}, "~S"); +Clazz_defineMethod(c$, "addFunctions", +function(s, ht, selectedFunction, isGeneric, namesOnly){ +var names = new Array(ht.size()); +var n = 0; +for (var name, $name = ht.keySet().iterator (); $name.hasNext()&& ((name = $name.next ()) || true);) if (selectedFunction.length == 0 && !name.startsWith("_") || name.equalsIgnoreCase(selectedFunction) || isGeneric && name.toLowerCase().indexOf(selectedFunction) == 0) names[n++] = name; + +java.util.Arrays.sort(names, 0, n); +for (var i = 0; i < n; i++) { +var f = ht.get(names[i]); +s.append(namesOnly ? f.getSignature() : f.toString()); +s.appendC('\n'); +} +}, "JU.SB,java.util.Map,~S,~B,~B"); +c$.isTainted = Clazz_defineMethod(c$, "isTainted", +function(tainted, atomIndex, type){ +return (tainted != null && tainted[type] != null && tainted[type].get(atomIndex)); +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "getAtomicPropertyState", +function(taintWhat, bsSelected){ +var bs; +var commands = new JU.SB(); +for (var type = 0; type < 18; type++) if (taintWhat < 0 || type == taintWhat) if ((bs = (bsSelected != null ? bsSelected : this.vwr.ms.getTaintedAtoms(type))) != null) this.getAtomicPropertyStateBuffer(commands, type, bs, null, null); + +return commands.toString(); +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "getAtomicPropertyStateBuffer", +function(commands, type, bs, label, fData){ +if (!this.vwr.g.preserveState) return; +var s = new JU.SB(); +var dataLabel = (label == null ? JM.AtomCollection.userSettableValues[type] : label) + " set"; +var n = 0; +var isDefault = (type == 2); +var atoms = this.vwr.ms.at; +var tainted = this.vwr.ms.tainted; +if (bs != null) for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +if (JM.AtomCollection.isDeleted(atoms[i])) continue; +s.appendI(i + 1).append(" ").append(atoms[i].getElementSymbol()).append(" ").append(atoms[i].getInfo().$replace(' ', '_')).append(" "); +switch (type) { +case 18: +if (i < fData.length) s.appendF(fData[i]); +break; +case 13: +s.appendI(atoms[i].getAtomNumber()); +break; +case 16: +s.append(atoms[i].getChainIDStr()); +break; +case 15: +s.appendI(atoms[i].group.getResno()); +break; +case 14: +s.appendI(atoms[i].getSeqID()); +break; +case 0: +s.append(atoms[i].getAtomName()); +break; +case 1: +s.append(atoms[i].getAtomType()); +break; +case 2: +if (JV.StateCreator.isTainted(tainted, i, 2)) isDefault = false; +s.appendF(atoms[i].x).append(" ").appendF(atoms[i].y).append(" ").appendF(atoms[i].z); +break; +case 12: +var v = atoms[i].getVibrationVector(); +if (v == null) s.append("0 0 0"); + else if (Float.isNaN(v.modScale)) s.appendF(v.x).append(" ").appendF(v.y).append(" ").appendF(v.z); + else s.appendF(1.4E-45).append(" ").appendF(1.4E-45).append(" ").appendF(v.modScale); +break; +case 17: +s.appendI(atoms[i].getAtomSite()); +break; +case 3: +s.appendI(atoms[i].getAtomicAndIsotopeNumber()); +break; +case 4: +s.appendI(atoms[i].getFormalCharge()); +break; +case 6: +s.appendF(atoms[i].getBondingRadius()); +break; +case 7: +s.appendI(atoms[i].getOccupancy100()); +break; +case 8: +s.appendF(atoms[i].getPartialCharge()); +break; +case 9: +s.appendF(atoms[i].getBfactor100() / 100); +break; +case 10: +s.appendI(atoms[i].getValence()); +break; +case 11: +s.appendF(atoms[i].getVanderwaalsRadiusFloat(this.vwr, J.c.VDW.AUTO)); +break; +} +s.append(" ;\n"); +++n; +} +if (n == 0) return; +if (isDefault) dataLabel += "(default)"; +commands.append("\n DATA \"" + dataLabel + "\"\n").appendI(n).append(" ;\nJmol Property Data Format 1 -- Jmol ").append(JV.Viewer.getJmolVersion()).append(";\n"); +commands.appendSB(s); +commands.append(" end \"" + dataLabel + "\";\n"); +}, "JU.SB,~N,JU.BS,~S,~A"); +Clazz_overrideMethod(c$, "undoMoveAction", +function(action, n){ +switch (action) { +case 4165: +case 4140: +switch (n) { +case 1275068425: +return (action == 4165 ? this.actionStates : this.actionStatesRedo).size(); +case -2: +this.actionStates.clear(); +this.actionStatesRedo.clear(); +break; +case -1: +(action == 4165 ? this.actionStates : this.actionStatesRedo).clear(); +break; +case 0: +n = 2147483647; +default: +if (n > 100) n = (action == 4165 ? this.actionStates : this.actionStatesRedo).size(); +for (var i = 0; i < n; i++) this.undoMoveActionClear(0, action, true); + +} +break; +} +return 0; +}, "~N,~N"); +Clazz_overrideMethod(c$, "undoMoveActionClear", +function(taintedAtom, type, clearRedo){ +if (!this.vwr.g.preserveState) return; +var modelIndex = (taintedAtom >= 0 && this.vwr.ms.at[taintedAtom] != null ? this.vwr.ms.at[taintedAtom].mi : this.vwr.ms.mc - 1); +switch (type) { +case 4140: +case 4165: +this.vwr.stopMinimization(); +var s = ""; +var list1; +var list2; +switch (type) { +default: +case 4165: +list1 = this.actionStates; +list2 = this.actionStatesRedo; +break; +case 4140: +list1 = this.actionStatesRedo; +list2 = this.actionStates; +if (this.actionStatesRedo.size() == 1) return; +break; +} +if (list1.size() == 0 || this.undoWorking) return; +this.undoWorking = true; +list2.add(0, list1.removeItemAt(0)); +s = this.actionStatesRedo.get(0); +if (type == 4165 && list2.size() == 1) { +var pt = Clazz_newIntArray(-1, [1]); +type = JU.PT.parseIntNext(s, pt); +taintedAtom = JU.PT.parseIntNext(s, pt); +this.undoMoveActionClear(taintedAtom, type, false); +}if (this.vwr.ms.am[modelIndex].isModelKit || s.indexOf("zap ") < 0) { +if (JU.Logger.debugging) this.vwr.log(s); +this.vwr.evalStringQuiet(s); +} else { +this.actionStates.clear(); +}break; +default: +if (this.undoWorking && clearRedo) return; +this.undoWorking = true; +var bs; +var sb = new JU.SB(); +sb.append("#" + type + " " + taintedAtom + " " + ( new java.util.Date()) + "\n"); +if (taintedAtom >= 0) { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +this.vwr.ms.taintAtoms(bs, type); +sb.append(this.getAtomicPropertyState(-1, null)); +} else { +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +sb.append("zap "); +sb.append(JU.Escape.eBS(bs)).append(";"); +this.getInlineData(sb, this.vwr.getModelExtract(bs, false, true, "MOL"), true, null, null); +sb.append("set refreshing false;").append(this.vwr.acm.getPickingState()).append(this.vwr.tm.getMoveToText(0, false)).append("set refreshing true;"); +}if (clearRedo) { +this.actionStates.add(0, sb.toString()); +this.actionStatesRedo.clear(); +} else { +this.actionStatesRedo.add(1, sb.toString()); +}if (this.actionStates.size() == 100) { +this.actionStates.removeItemAt(99); +}} +this.undoWorking = !clearRedo; +}, "~N,~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corestate.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corestate.z.js new file mode 100755 index 000000000000..bb2418cd8ba5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corestate.z.js @@ -0,0 +1,74 @@ +(function(B,C,D,E,F,G,q,r,s,t,u,n,H,v,I,w,x,K,y,z,A,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,k,m){q("JV");y(JV,"JmolStateCreator",null);q("JV");s(["JV.JmolStateCreator","java.util.Hashtable"],"JV.StateCreator","java.util.Arrays $.Date JU.BS $.Lst $.P3 $.PT $.SB J.c.PAL $.STR $.VDW JM.AtomCollection $.Bond $.BondSet JS.T J.shape.Shape JU.BSUtil $.C $.ColorEncoder $.Edge $.Escape $.Font $.Logger JV.GlobalSettings $.JC $.StateManager $.Viewer".split(" "), +function(){var h=u(function(){this.undoWorking=!1;this.temp3=this.temp2=this.temp=this.vwr=this.actionStatesRedo=this.actionStates=null;t(this,arguments)},JV,"StateCreator",JV.JmolStateCreator);z(h,function(){this.temp=new java.util.Hashtable;this.temp2=new java.util.Hashtable;this.temp3=new java.util.Hashtable});v(h,function(){A(this,JV.StateCreator,[]);this.actionStates=new JU.Lst;this.actionStatesRedo=new JU.Lst});m(h,"setViewer",function(a){this.vwr=a},"JV.Viewer");m(h,"getStateScript",function(a, +b,c){var d=null==a||a.equalsIgnoreCase("all"),e=new JU.SB,f=d?(new JU.SB).append("function _setState() {\n"):null;d&&(e.append("# Jmol state version "+JV.Viewer.getJmolVersion()+";\n"),this.vwr.isApplet&&(this.app(e,"# fullName = "+JU.PT.esc(this.vwr.fullName)),this.app(e,"# documentBase = "+JU.PT.esc(JV.Viewer.appletDocumentBase)),this.app(e,"# codeBase = "+JU.PT.esc(JV.Viewer.appletCodeBase)),e.append("\n")));var g=this.vwr.g;(d||a.equalsIgnoreCase("windowState"))&&e.append(this.getWindowState(f, +b,c));(d||a.equalsIgnoreCase("fileState"))&&e.append(this.getFileState(f));(d||a.equalsIgnoreCase("definedState"))&&e.append(this.getDefinedState(f,!0));(d||a.equalsIgnoreCase("variableState"))&&e.append(this.getParameterState(g,f));(d||a.equalsIgnoreCase("dataState"))&&e.append(this.getDataState(f));(d||a.equalsIgnoreCase("modelState"))&&e.append(this.getModelState(f,!0,this.vwr.getBooleanProperty("saveProteinStructureState")));(d||a.equalsIgnoreCase("colorState"))&&e.append(this.getColorState(this.vwr.cm, +f));(d||a.equalsIgnoreCase("frameState"))&&e.append(this.getAnimState(this.vwr.am,f));(d||a.equalsIgnoreCase("perspectiveState"))&&e.append(this.getViewState(this.vwr.tm,f));(d||a.equalsIgnoreCase("selectionState"))&&e.append(this.getSelectionState(this.vwr.slm,f));null!=f&&(this.app(f,"set refreshing true"),this.app(f,"set antialiasDisplay "+g.antialiasDisplay),this.app(f,"set antialiasTranslucent "+g.antialiasTranslucent),this.app(f,"set antialiasImages "+g.antialiasImages),this.vwr.tm.spinOn&& +this.app(f,"spin on"),f.append("}\n\n_setState;\n"));d&&e.appendSB(f);return e.toString()},"~S,~N,~N");k(h,"getDataState",function(a){var b=new JU.SB,c=!1,d=this.getAtomicPropertyState(-1,null);0b;b++)0!=d.objColors[b]&&this.app(e,JV.StateManager.getObjectNameFromId(b)+'Color = "'+JU.Escape.escapeColor(d.objColors[b])+ +'"');null!=d.backgroundImageFileName&&this.app(e,"background IMAGE "+(d.backgroundImageFileName.startsWith(";base64,")?"":"/*file*/")+JU.PT.esc(d.backgroundImageFileName));e.append(this.getLightingState(!1));null!=a&&e.append("}\n\n");return e.toString()},"JU.SB,~N,~N");m(h,"getLightingState",function(a){var b=new JU.SB,c=this.vwr.gdata;this.app(b,"set ambientPercent "+c.getAmbientPercent());this.app(b,"set diffusePercent "+c.getDiffusePercent());this.app(b,"set specular "+c.getSpecular());this.app(b, +"set specularPercent "+c.getSpecularPercent());this.app(b,"set specularPower "+c.getSpecularPower());var d=c.getSpecularExponent(),e=c.getPhongExponent();this.app(b,Math.pow(2,d)==e?"set specularExponent "+d:"set phongExponent "+e);this.app(b,"set celShading "+c.getCel());this.app(b,"set celShadingPower "+c.getCelPower());this.app(b,"set zShadePower "+this.vwr.g.zShadePower);a&&this.getZshadeState(b,this.vwr.tm,!0);return b.toString()},"~B");k(h,"getFileState",function(a){var b=new JU.SB;null!=a&& +(a.append(" _setFileState;\n"),b.append("function _setFileState() {\n\n"));0>b.indexOf("append")&&this.vwr.getModelSetFileName().equals("zapped")&&b.append(" zap;\n");this.appendLoadStates(b);null!=a&&b.append("\n}\n\n");return b.toString()},"JU.SB");k(h,"appendLoadStates",function(a){var b=this.vwr.ligandModelSet;if(null!=b)for(var c,b=b.keySet().iterator();b.hasNext()&&((c=b.next())||1);){var d=this.vwr.ligandModels.get(c+"_data");null!=d&&a.append(" ").append(JU.Escape.encapsulateData("ligand_"+ +c,d.trim()+"\n",0));d=this.vwr.ligandModels.get(c+"_file");null!=d&&a.append(" ").append(JU.Escape.encapsulateData("file_"+c,d.trim()+"\n",0))}var b=new JU.SB,d=this.vwr.ms,e=d.am,f=d.mc;for(c=0;cl||l!=b.lastIndexOf(g.loadState))&&b.append(e[c].loadState);if(e[c].isModelKit)l=d.getModelAtomBitSetIncludingDeleted(c,!1),null!=d.tainted&&(null!=d.tainted[2]&&d.tainted[2].andNot(l),null!=d.tainted[3]&& +d.tainted[3].andNot(l)),g.loadScript=new JU.SB,this.getInlineData(b,this.vwr.getModelExtract(l,!1,!0,"MOL"),0b.indexOf('data "append ')){c=b.indexOf("load /*data*/");g=b.indexOf("load /*file*/");0<=g&&gc)return"";var d=new JU.SB;null!=b&&(b.append(" _setFrameState;\n"),d.append("function _setFrameState() {\n"));d.append("# frame state;\n"); +d.append("# modelCount ").appendI(c).append(";\n# first ").append(this.vwr.getModelNumberDotted(0)).append(";\n# last ").append(this.vwr.getModelNumberDotted(c-1)).append(";\n");0<=a.backgroundModelIndex&&this.app(d,"set backgroundModel "+this.vwr.getModelNumberDotted(a.backgroundModelIndex));if(null!=this.vwr.tm.bsFrameOffsets)this.app(d,"frame align "+JU.Escape.eBS(this.vwr.tm.bsFrameOffsets));else if(null!=this.vwr.ms.translations)for(;0<=--c;){var e=this.vwr.ms.getTranslation(c);null!=e&&this.app(d, +"frame "+this.vwr.ms.getModelNumberDotted(c)+" align "+e)}this.app(d,"frame RANGE "+a.getModelSpecial(-1)+" "+a.getModelSpecial(1));this.app(d,"animation DIRECTION "+(1==a.animationDirection?"+1":"-1"));this.app(d,"animation FPS "+a.animationFps);this.app(d,"animation MODE "+JS.T.nameOf(a.animationReplayMode)+" "+a.firstFrameDelay+" "+a.lastFrameDelay);0c.length?"left":c));c=JV.JC.getPointerName(a.defaultPointer);this.app(b,"set labelPointer "+(0==c.length?"off":c));0!=(a.defaultZPos&32)?this.app(b,"set labelFront"):0!=(a.defaultZPos&16)&&this.app(b,"set labelGroup");this.app(b,J.shape.Shape.getFontCommand("label", +JU.Font.getFont3D(a.defaultFontId)));return b.toString()},"J.shape.Labels");k(h,"getSelectionState",function(a,b){var c=new JU.SB;null!=b&&(b.append(" _setSelectionState;\n"),c.append("function _setSelectionState() {\n"));null!=this.vwr.ms.trajectory&&this.app(c,this.vwr.ms.trajectory.getState());var d=new java.util.Hashtable,e=null;this.addBs(c,"hide ",a.bsHidden);this.addBs(c,"subset ",a.bsSubset);this.addBs(c,"delete ",a.bsDeleted);this.addBs(c,"fix ",a.bsFixed);d.put("-",this.vwr.slm.getSelectedAtomsNoSubset()); +e=this.getCommands(d,null,"select");null==e?this.app(c,"select none"):c.append(e);this.app(c,"set hideNotSelected "+a.hideNotSelected);c.append(this.vwr.getShapeProperty(1,"selectionState"));this.vwr.getSelectionHalosEnabled()&&this.app(c,"SelectionHalos ON");null!=b&&c.append("}\n\n");return c.toString()},"JV.SelectionManager,JU.SB");k(h,"getViewState",function(a,b){var c=new JU.SB,d=a.getMoveToText(0,!1);null!=b&&(b.append(" _setPerspectiveState;\n"),c.append("function _setPerspectiveState() {\n")); +this.app(c,"set perspectiveModel "+a.perspectiveModel);this.app(c,"set scaleAngstromsPerInch "+a.scale3DAngstromsPerInch);this.app(c,"set perspectiveDepth "+a.perspectiveDepth);this.app(c,"set visualRange "+a.visualRangeAngstroms);a.isWindowCentered()||this.app(c,"set windowCentered false");this.app(c,"set cameraDepth "+a.cameraDepth);var e=1==a.mode;e&&this.app(c,"set navigationMode true");this.app(c,this.vwr.ms.getBoundBoxCommand(!1));this.app(c,"center "+JU.Escape.eP(a.fixedRotationCenter));c.append(this.vwr.getOrientation(1073742034, +null,null,null).toString());this.app(c,d);!e&&!a.zoomEnabled&&this.app(c,"zoom off");c.append(" slab ").appendI(a.slabPercentSetting).append(";depth ").appendI(a.depthPercentSetting).append(a.slabEnabled&&!e?";slab on":"").append(";\n");c.append(" set slabRange ").appendF(a.slabRange).append(";\n");null!=a.slabPlane&&c.append(" slab plane ").append(JU.Escape.eP4(a.slabPlane)).append(";\n");null!=a.depthPlane&&c.append(" depth plane ").append(JU.Escape.eP4(a.depthPlane)).append(";\n");this.getZshadeState(c, +a,!1);c.append(this.getSpinState(!0)).append("\n");this.vwr.ms.modelSetHasVibrationVectors()&&a.vibrationOn&&this.app(c,"set vibrationPeriod "+a.vibrationPeriod+";vibration on");d=null!=a.depthPlane||null!=a.slabPlane;e&&c.append(a.getNavigationState());!a.slabEnabled&&d&&c.append(" slab off;\n");null!=b&&c.append("}\n\n");return c.toString()},"JV.TransformManager,JU.SB");k(h,"getZshadeState",function(a,b,c){c&&(this.app(a,"set zDepth "+b.zDepthPercentSetting),this.app(a,"set zSlab "+b.zSlabPercentSetting), +b.zShadeEnabled||this.app(a,"set zShade false"));b.zShadeEnabled&&this.app(a,"set zShade true");try{null!=b.zSlabPoint&&this.app(a,"set zSlab "+JU.Escape.eP(b.zSlabPoint))}catch(d){if(!w(d,Exception))throw d;}},"JU.SB,JV.TransformManager,~B");m(h,"getSpinState",function(){var a=this.vwr.tm,b=" set spinX "+n(a.spinX)+"; set spinY "+n(a.spinY)+"; set spinZ "+n(a.spinZ)+"; set spinFps "+n(a.spinFps)+";";Float.isNaN(a.navFps)||(b+=" set navX "+n(a.navX)+"; set navY "+n(a.navY)+"; set navZ "+n(a.navZ)+ +"; set navFps "+n(a.navFps)+";");a.navOn&&(b+=" navigation on;");if(!a.spinOn)return b;var c=a.isSpinSelected?"\n select "+JU.Escape.eBS(this.vwr.bsA())+";\n rotateSelected":"\n ";if(a.isSpinInternal){var d=JU.P3.newP(a.internalRotationCenter);d.sub(a.rotationAxis);b+=c+" spin "+a.rotationRate+" "+JU.Escape.eP(a.internalRotationCenter)+" "+JU.Escape.eP(d)}else b=a.isSpinFixed?b+(c+" spin axisangle "+JU.Escape.eP(a.rotationAxis)+" "+a.rotationRate):b+" spin on";return b+";"},"~B");m(h,"getCommands", +function(a,b,c){var d=new JU.SB;a=this.getCommands2(a,d,null,c);null!=b&&this.getCommands2(b,d,a,"select");return d.toString()},"java.util.Map,java.util.Map,~S");k(h,"getCommands2",function(a,b,c,d){if(null==a)return"";var e;for(a=a.entrySet().iterator();a.hasNext()&&((e=a.next())||1);){var f=e.getKey(),g=JU.Escape.eBS(e.getValue());5>g.length||(g=d+" "+g,g.equals(c)||this.app(b,g),c=g,0!=f.indexOf("-")&&this.app(b,f))}return c},"java.util.Map,JU.SB,~S,~S");k(h,"app",function(a,b){0!=b.length&&a.append(" ").append(b).append(";\n")}, +"JU.SB,~S");k(h,"addBs",function(a,b,c){null==c||0==c.length()||this.app(a,b+JU.Escape.eBS(c))},"JU.SB,~S,JU.BS");k(h,"getFontState",function(a,b){var c=JV.StateManager.getObjectIdFromName(a.equalsIgnoreCase("axes")?"axis":a);if(0>c)return"";var d=this.vwr.getObjectMad10(c),c=(new JU.SB).append("\n");this.app(c,a+(0==d?" off":1==d?" on":-1==d?" dotted":20>d?" "+d:" "+d/2E4));if(3>c.length())return"";d=J.shape.Shape.getFontCommand(a,b);0c))f=this.getShapeState(f),null!=f&&1b){c=a.offsets[b];JU.BSUtil.setMapBitSet(this.temp2,b,b,"set "+(JV.JC.isOffsetAbsolute(c)?"labelOffsetAbsolute ":"labelOffset ")+JV.JC.getXOffset(c)+" "+JV.JC.getYOffset(c));var d=JV.JC.getHorizAlignmentName(c>>2),e=JV.JC.getPointerName(c);0a.mads[b]&&JU.BSUtil.setMapBitSet(this.temp2,b,b,"set toggleLabel");null!=a.bsFontSet&&a.bsFontSet.get(b)&&JU.BSUtil.setMapBitSet(this.temp2,b,b,J.shape.Shape.getFontCommand("label",JU.Font.getFont3D(a.fids[b])))}b=this.getCommands(this.temp,this.temp2,"select")+this.getCommands(null,this.temp3,"select");this.temp3.clear();this.clearTemp();break;case 0:this.clearTemp(); +var c=this.vwr.ms.ac,d=this.vwr.ms.at,e=a.colixes,f=a.paletteIDs,g=0;for(b=0;b(g=d[b].madAtom)?JU.BSUtil.setMapBitSet(this.temp,b,b,"Spacefill on"):JU.BSUtil.setMapBitSet(this.temp,b,b,"Spacefill "+JU.PT.escF(g/2E3))),null!=a.bsColixSet&&a.bsColixSet.get(b))){var l=d[b].paletteID;(l!=J.c.PAL.CPK.id||JU.C.isColixTranslucent(d[b].colixAtom))&&JU.BSUtil.setMapBitSet(this.temp,b,b,J.shape.Shape.getColorCommand("atoms",l,d[b].colixAtom,a.translucentAllowed)); +null!=e&&bb;b++)null!=a.tickInfos[b]&&this.appendTickInfo(a.myType,d,a.tickInfos[b]); +c&&d.append(" "+a.myType+" off;\n");return d.toString()},"J.shape.FontLineShape");k(h,"getAxesState",function(a){var b=new JU.SB;b.append(this.getFontLineShapeState(a));return a.getAxesState(b)},"J.shape.Axes");m(h,"getAtomShapeState",function(a){if(!a.isActive)return"";this.clearTemp();var b=JV.JC.shapeClassBases[a.shapeID],c=18==a.shapeID,d;if(null!=a.bsSizeSet)for(var e=a.bsSizeSet.nextSetBit(0);0<=e;e=a.bsSizeSet.nextSetBit(e+1))JU.BSUtil.setMapBitSet(this.temp,e,e,b+" "+(0>(d=a.mads[e])?c&& +-1>d?""+-d:"on":JU.PT.escF(d/2E3)));if(null!=a.bsColixSet)for(e=a.bsColixSet.nextSetBit(0);0<=e;e=a.bsColixSet.nextSetBit(e+1))JU.BSUtil.setMapBitSet(this.temp2,e,e,J.shape.Shape.getColorCommand(b,a.paletteIDs[e],a.colixes[e],a.translucentAllowed));a=this.getCommands(this.temp,this.temp2,"select");this.clearTemp();return a},"J.shape.AtomShape");k(h,"getEchoState",function(a,b){var c=null!=b&&0b)return a;for(var c=new JU.SB,d=0,e=72;ee;e++)if(0>a||e==a)null!=(c=null!=b?b:this.vwr.ms.getTaintedAtoms(e))&&this.getAtomicPropertyStateBuffer(d,e,c,null,null);return d.toString()},"~N,JU.BS");m(h,"getAtomicPropertyStateBuffer",function(a,b,c,d,e){if(this.vwr.g.preserveState){var f=new JU.SB;d=(null==d?JM.AtomCollection.userSettableValues[b]:d)+" set";var g=0,h=2==b,k= +this.vwr.ms.at,m=this.vwr.ms.tainted;if(null!=c)for(var j=c.nextSetBit(0);0<=j;j=c.nextSetBit(j+1))if(!JM.AtomCollection.isDeleted(k[j])){f.appendI(j+1).append(" ").append(k[j].getElementSymbol()).append(" ").append(k[j].getInfo().$replace(" ","_")).append(" ");switch(b){case 18:je.indexOf("zap ")?(JU.Logger.debugging&&this.vwr.log(e),this.vwr.evalStringQuiet(e)):this.actionStates.clear();break;default:if(this.undoWorking&&c)return;this.undoWorking=!0;e=new JU.SB;e.append("#"+b+" "+a+" "+new java.util.Date+"\n");0<=a?(d=this.vwr.getModelUndeletedAtomsBitSet(d),this.vwr.ms.taintAtoms(d,b),e.append(this.getAtomicPropertyState(-1, +null))):(d=this.vwr.getModelUndeletedAtomsBitSet(d),e.append("zap "),e.append(JU.Escape.eBS(d)).append(";"),this.getInlineData(e,this.vwr.getModelExtract(d,!1,!0,"MOL"),!0,null,null),e.append("set refreshing false;").append(this.vwr.acm.getPickingState()).append(this.vwr.tm.getMoveToText(0,!1)).append("set refreshing true;"));c?(this.actionStates.add(0,e.toString()),this.actionStatesRedo.clear()):this.actionStatesRedo.add(1,e.toString());100==this.actionStates.size()&&this.actionStates.removeItemAt(99)}this.undoWorking= +!c}},"~N,~N,~B")})})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coresurface.js b/config/plugins/visualizations/jmol/static/j2s/core/coresurface.js new file mode 100755 index 000000000000..3c2391440889 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coresurface.js @@ -0,0 +1,12867 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ScriptExt", ["JU.AU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.e = null; +this.chk = false; +this.st = null; +this.slen = 0; +Clazz_instantialize(this, arguments);}, JS, "ScriptExt", null); +Clazz_defineMethod(c$, "init", +function(eval){ +this.e = eval; +this.vwr = this.e.vwr; +return this; +}, "~O"); +Clazz_defineMethod(c$, "atomExpressionAt", +function(i){ +return this.e.atomExpressionAt(i); +}, "~N"); +Clazz_defineMethod(c$, "checkLength", +function(i){ +this.e.checkLength(i); +}, "~N"); +Clazz_defineMethod(c$, "error", +function(err){ +this.e.error(err); +}, "~N"); +Clazz_defineMethod(c$, "invArg", +function(){ +this.e.invArg(); +}); +Clazz_defineMethod(c$, "invPO", +function(){ +this.error(23); +}); +Clazz_defineMethod(c$, "getShapeProperty", +function(shapeType, propertyName){ +return this.e.getShapeProperty(shapeType, propertyName); +}, "~N,~S"); +Clazz_defineMethod(c$, "paramAsStr", +function(i){ +return this.e.paramAsStr(i); +}, "~N"); +Clazz_defineMethod(c$, "centerParameter", +function(i){ +return this.e.centerParameter(i, null); +}, "~N"); +Clazz_defineMethod(c$, "floatParameter", +function(i){ +return this.e.floatParameter(i); +}, "~N"); +Clazz_defineMethod(c$, "getPoint3f", +function(i, allowFractional){ +return this.e.getPoint3f(i, allowFractional, true); +}, "~N,~B"); +Clazz_defineMethod(c$, "intParameter", +function(index){ +return this.e.intParameter(index); +}, "~N"); +Clazz_defineMethod(c$, "isFloatParameter", +function(index){ +switch (this.e.tokAt(index)) { +case 2: +case 3: +return true; +} +return false; +}, "~N"); +Clazz_defineMethod(c$, "setShapeProperty", +function(shapeType, propertyName, propertyValue){ +this.e.setShapeProperty(shapeType, propertyName, propertyValue); +}, "~N,~S,~O"); +Clazz_defineMethod(c$, "showString", +function(s){ +this.e.showString(s); +}, "~S"); +Clazz_defineMethod(c$, "stringParameter", +function(index){ +return this.e.stringParameter(index); +}, "~N"); +Clazz_defineMethod(c$, "getToken", +function(i){ +return this.e.getToken(i); +}, "~N"); +Clazz_defineMethod(c$, "tokAt", +function(i){ +return this.e.tokAt(i); +}, "~N"); +Clazz_defineMethod(c$, "setShapeId", +function(iShape, i, idSeen){ +if (idSeen) this.invArg(); +var name = this.e.setShapeNameParameter(i).toLowerCase(); +this.setShapeProperty(iShape, "thisID", name); +return name; +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "getColorTrans", +function(eval, i, allowNone, ret){ +var translucentLevel = 3.4028235E38; +if (eval.theTok != 1765808134) --i; +switch (this.tokAt(i + 1)) { +case 603979967: +i++; +translucentLevel = (this.isFloatParameter(i + 1) ? eval.getTranslucentLevel(++i) : this.vwr.getFloat(570425353)); +break; +case 1073742074: +i++; +translucentLevel = 0; +break; +} +if (eval.isColorParam(i + 1)) { +ret[0] = eval.getArgbParam(++i); +} else if (this.tokAt(i + 1) == 1073742333) { +ret[0] = 0; +eval.iToken = i + 1; +} else if (translucentLevel == 3.4028235E38) { +this.invArg(); +} else { +ret[0] = -2147483648; +}i = eval.iToken; +return translucentLevel; +}, "JS.ScriptEval,~N,~B,~A"); +Clazz_defineMethod(c$, "finalizeObject", +function(shapeID, colorArgb, translucentLevel, intScale, doSet, data, iptDisplayProperty, bs){ +if (doSet) { +this.setShapeProperty(shapeID, "set", data); +}if (colorArgb != -2147483648) this.e.setShapePropertyBs(shapeID, "color", Integer.$valueOf(colorArgb), bs); +if (translucentLevel != 3.4028235E38) this.e.setShapeTranslucency(shapeID, "", "translucent", translucentLevel, bs); +if (intScale != 0) { +this.setShapeProperty(shapeID, "scale", Integer.$valueOf(intScale)); +}if (iptDisplayProperty < 0) { +iptDisplayProperty = -1 - iptDisplayProperty; +this.setShapeProperty(shapeID, "token", Integer.$valueOf(1073742018)); +this.setShapeProperty(shapeID, "token", Integer.$valueOf(1073742046)); +}if (iptDisplayProperty > 0) { +if (!this.e.setMeshDisplayProperty(shapeID, iptDisplayProperty, 0)) this.invArg(); +}}, "~N,~N,~N,~N,~B,~O,~N,JU.BS"); +Clazz_defineMethod(c$, "getIntArray2", +function(i){ +var list = (this.e.getToken(i)).getList(); +var faces = JU.AU.newInt2(list.size()); +for (var vi = faces.length; --vi >= 0; ) { +var face = list.get(vi).getList(); +if (face == null) this.invArg(); +faces[vi] = Clazz_newIntArray (face.size(), 0); +for (var vii = faces[vi].length; --vii >= 0; ) faces[vi][vii] = face.get(vii).intValue; + +} +return faces; +}, "~N"); +Clazz_defineMethod(c$, "getAllPoints", +function(index, nmin){ +var points = null; +var bs = null; +try { +switch (this.e.tokAt(index)) { +case 7: +points = this.e.getPointArray(index, -1, false); +break; +case 12290: +case 10: +case 1073742325: +bs = this.atomExpressionAt(index); +break; +} +if (points == null) { +if (bs == null) bs = this.vwr.getAllAtoms(); +points = this.bsToArray(bs); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +if (points == null || points.length < nmin) this.invArg(); +return points; +}, "~N,~N"); +Clazz_defineMethod(c$, "bsToArray", +function(bs){ +var p = new Array(bs.cardinality()); +for (var i = bs.nextSetBit(0), pt = 0; i >= 0; i = bs.nextSetBit(i + 1)) p[pt++] = this.vwr.ms.at[i]; + +return p; +}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.ScriptExt"], "JS.IsoExt", ["JU.AU", "$.BS", "$.Lst", "$.M4", "$.Measure", "$.P3", "$.PT", "$.Quat", "$.SB", "$.V3", "J.api.Interface", "J.atomdata.RadiusData", "J.c.VDW", "JS.SV", "$.ScriptEval", "$.ScriptInterruption", "$.T", "JU.BSUtil", "$.BoxInfo", "$.C", "$.Escape", "$.Logger", "$.Parser", "$.TempArray", "$.Triangulator", "JV.JC"], function(){ +var c$ = Clazz_declareType(JS, "IsoExt", JS.ScriptExt); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, JS.IsoExt, []); +}); +Clazz_overrideMethod(c$, "dispatch", +function(iTok, b, st){ +this.chk = this.e.chk; +this.slen = this.e.slen; +this.st = st; +switch (iTok) { +case 23: +this.cgo(); +break; +case 25: +this.contact(); +break; +case 17: +this.dipole(); +break; +case 22: +this.draw(); +break; +case 24: +case 30: +case 29: +this.isosurface(iTok); +break; +case 26: +this.lcaoCartoon(); +break; +case 27: +case 28: +this.mo(b, iTok); +break; +} +return null; +}, "~N,~B,~A"); +Clazz_defineMethod(c$, "dipole", +function(){ +var eval = this.e; +var propertyName = null; +var propertyValue = null; +var iHaveAtoms = false; +var iHaveCoord = false; +var idSeen = false; +var getCharges = false; +var bsSelected = null; +eval.sm.loadShape(17); +if (this.tokAt(1) == 1073742001 && this.listIsosurface(17)) return; +this.setShapeProperty(17, "init", null); +if (this.slen == 1) { +this.setShapeProperty(17, "thisID", null); +return; +}for (var i = 1; i < this.slen; ++i) { +propertyName = null; +propertyValue = null; +switch (this.getToken(i).tok) { +case 1073742327: +propertyName = "all"; +getCharges = true; +break; +case 1073742335: +propertyName = "on"; +break; +case 1073742334: +propertyName = "off"; +break; +case 12291: +propertyName = "delete"; +break; +case 2: +case 3: +propertyName = "value"; +propertyValue = Float.$valueOf(this.floatParameter(i)); +break; +case 10: +if (this.tokAt(i + 1) == 10) { +this.setShapeProperty(17, "startSet", this.atomExpressionAt(i++)); +} else { +propertyName = "atomBitset"; +}case 1073742325: +if (propertyName == null) propertyName = (iHaveAtoms || iHaveCoord ? "endSet" : "startSet"); +propertyValue = bsSelected = this.atomExpressionAt(i); +i = eval.iToken; +if (this.tokAt(i + 1) == 0 && propertyName === "startSet") propertyName = "atomBitset"; +iHaveAtoms = true; +getCharges = true; +break; +case 1073742332: +case 8: +var pt = this.getPoint3f(i, true); +i = eval.iToken; +propertyName = (iHaveAtoms || iHaveCoord ? "endCoord" : "startCoord"); +propertyValue = pt; +iHaveCoord = true; +break; +case 1677721602: +propertyName = "bonds"; +getCharges = true; +break; +case 4102: +getCharges = true; +propertyName = "calculate"; +if (eval.isAtomExpression(i + 1)) { +propertyValue = bsSelected = this.atomExpressionAt(++i); +i = eval.iToken; +}break; +case 1073741974: +this.setShapeId(17, ++i, idSeen); +i = eval.iToken; +break; +case 1275069442: +propertyName = "cross"; +propertyValue = Boolean.TRUE; +break; +case 1073742040: +propertyName = "cross"; +propertyValue = Boolean.FALSE; +break; +case 1073742066: +if (this.isFloatParameter(i + 1)) { +var v = this.floatParameter(++i); +if (eval.theTok == 2) { +propertyName = "offsetPercent"; +propertyValue = Integer.$valueOf(Clazz_floatToInt(v)); +} else { +propertyName = "offset"; +propertyValue = Float.$valueOf(v); +}} else { +propertyName = "offsetPt"; +propertyValue = this.centerParameter(++i); +i = eval.iToken; +}break; +case 1073742068: +propertyName = "offsetSide"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1073742188: +propertyName = "value"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1073742196: +propertyName = "width"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +default: +if (eval.theTok == 268441089 || JS.T.tokAttr(eval.theTok, 1073741824)) { +this.setShapeId(17, i, idSeen); +i = eval.iToken; +break; +}this.invArg(); +} +idSeen = (eval.theTok != 12291 && eval.theTok != 4102); +if (getCharges) { +if (!this.chk) eval.getPartialCharges(bsSelected); +getCharges = false; +}if (propertyName != null) this.setShapeProperty(17, propertyName, propertyValue); +} +if (iHaveCoord || iHaveAtoms) this.setShapeProperty(17, "set", null); +}); +Clazz_defineMethod(c$, "draw", +function(){ +var eval = this.e; +eval.sm.loadShape(22); +switch (this.tokAt(1)) { +case 1073742001: +if (this.listIsosurface(22)) return; +break; +case 136314895: +case 134221850: +case 4138: +this.e.getCmdExt().dispatch(4133, false, this.st); +return; +} +var havePoints = false; +var isInitialized = false; +var isSavedState = false; +var isIntersect = false; +var isFrame = false; +var plane; +var pts = null; +var tokIntersectBox = 0; +var translucentLevel = 3.4028235E38; +var colorArgb = Clazz_newIntArray(-1, [-2147483648]); +var intScale = 0; +var swidth = ""; +var iptDisplayProperty = 0; +var center = null; +var thisId = this.initIsosurface(22); +var idSeen = (thisId != null); +var isWild = (idSeen && this.getShapeProperty(22, "ID") == null); +var connections = null; +var iConnect = 0; +var iArray = -1; +var iOn = -1; +var isBest = false; +var meshNoFill = false; +var tok = 0; +var lattice = null; +for (var i = eval.iToken; i < this.slen; ++i) { +var propertyName = null; +var propertyValue = null; +tok = this.getToken(i).tok; +switch (tok) { +case 134217763: +switch (tok = this.getToken(i + (this.tokAt(i + 1) == 1073741864 ? 2 : 1)).tok) { +case 1814695966: +case 1812599299: +tokIntersectBox = tok; +isIntersect = true; +continue; +case 1073742330: +++i; +propertyName = "intersect"; +propertyValue = eval.objectNameParameter(++i); +isIntersect = true; +havePoints = true; +break; +default: +this.invArg(); +} +break; +case 1073741864: +isBest = true; +if (iOn == i - 1) iOn++; +switch (this.tokAt(i + 1)) { +case 134217750: +case 1073741998: +case 1812599299: +continue; +default: +this.invArg(); +} +break; +case 1611272194: +if (!this.chk) this.vwr.getModelkit(false).drawAxes(thisId, swidth); +return; +case 1073741994: +case 1814695966: +case 1812599299: +lattice = null; +var uc = null; +var ucLattice = null; +var bs = null; +switch (tok) { +case 1812599299: +switch (this.tokAt(i + 1)) { +case 1073741864: +switch (this.tokAt(i + 2)) { +case 134217750: +case 1073741998: +break; +case 1073742330: +var data = Clazz_newArray(-1, [eval.objectNameParameter(i + 3), null]); +if (this.chk) return; +this.vwr.shm.getShapePropertyData(24, "points", data); +pts = data[1]; +if (pts == null) this.invArg(); +i += 2; +default: +isBest = true; +i++; +} +break; +case 10: +case 1073742325: +bs = eval.getAtomsStartingAt(i + 1); +i = eval.iToken; +} +break; +case 1814695966: +if (isBest) this.invArg(); +if (eval.isArrayParameter(i + 1)) { +uc = this.vwr.getSymTemp().getUnitCell(eval.getPointArray(i + 1, -1, false), false, null); +i = eval.iToken; +} else { +switch (this.tokAt(i + 1)) { +case 4: +var tr = this.stringParameter(i + 1); +if (tr.length > 0 && (uc = this.vwr.getCurrentUnitCell()) != null) { +uc = this.vwr.getSymTemp().getUnitCell(uc.getV0abc(tr, null), false, "draw"); +}i = eval.iToken; +break; +case 8: +case 1073742332: +ucLattice = eval.getFractionalPoint(i + 1); +i = eval.iToken; +break; +} +}if (this.tokAt(i + 1) == 1073741994) { +if (tokIntersectBox == 1814695966) tokIntersectBox = 1073741994; +++i; +lattice = eval.checkHKL(eval.getPointOrPlane(++i, 3)); +i = eval.iToken; +}if (this.tokAt(i + 1) == 1611272194) { +if (ucLattice == null) ucLattice = JU.P3.new3(555, 555, 1); +i++; +}break; +} +if (this.chk) break; +if (bs != null) { +if (isBest) { +uc = this.vwr.getSymTemp().getUnitCell(this.vwr.getOrientation(1814695966, "array", bs, null), false, null); +}} else if (isBest) { +uc = this.vwr.getSymTemp().getUnitCell(this.vwr.getOrientation(1814695966, "array", null, pts), false, null); +} else if (tok == 1814695966 && uc == null) { +if (ucLattice != null) { +this.vwr.getModelkit(false).drawUnitCell(thisId, ucLattice, swidth); +return; +}uc = this.vwr.getCurrentUnitCell(); +}if (lattice == null) { +pts = this.getBoxPoints(uc != null ? 1814695966 : tok, uc, bs, intScale / 100); +} else { +var cpts = JU.Measure.getLatticePoints(uc.getLatticeCentering(), Clazz_floatToInt(lattice.x), Clazz_floatToInt(lattice.y), Clazz_floatToInt(lattice.z)); +pts = new Array(cpts.size()); +for (var j = 0; j < cpts.size(); j++) { +pts[j] = cpts.get(j); +uc.toCartesian(pts[j], true); +} +}isBest = false; +if (!isIntersect) { +if (pts == null) this.invArg(); +propertyName = "polygon"; +var v = new JU.Lst(); +v.addLast(pts); +if (lattice == null) { +this.vwr.getTriangulator(); +v.addLast(JU.Triangulator.fullCubePolygon); +} else { +v.addLast(null); +}propertyValue = v; +havePoints = true; +intScale = 0; +meshNoFill = true; +break; +}if (this.tokAt(i + 1) == 1073742335) { +iOn = ++i; +}break; +case 1073741998: +case 134219777: +case 134217750: +var isProjection = (iOn == i - 1); +if (!havePoints && !isIntersect && tokIntersectBox == 0) { +if (eval.theTok == 134219777) { +havePoints = true; +this.setShapeProperty(22, "plane", null); +var list = new JU.Lst(); +plane = eval.hklParameter(++i, list, true); +i = eval.iToken; +propertyName = "coords"; +propertyValue = list; +break; +}if (!isBest) { +propertyName = (tok == 134217750 ? "plane" : "line"); +iArray = i + 1; +break; +}if (!this.chk && tok != 1073741998 && pts == null) { +uc = this.vwr.getCurrentUnitCell(); +tokIntersectBox = (uc == null ? 1812599299 : 1814695966); +pts = this.getBoxPoints(tokIntersectBox, uc, null, intScale / 100); +isIntersect = true; +}}plane = null; +var linePts = null; +var isAll = false; +switch (tok) { +case 134217750: +plane = eval.planeParameter(i, isBest); +break; +case 134219777: +plane = eval.hklParameter(++i, null, true); +if (this.tokAt(eval.iToken + 1) == 1073742327) { +isAll = true; +eval.iToken++; +}break; +case 1073741998: +if (tokIntersectBox == 1073741994) this.invArg(); +if (isBest) { +linePts = this.bsToArray(eval.getAtomsStartingAt(++i)); +} else if (eval.isCenterParameter(i + 1)) { +linePts = Clazz_newArray(-1, [this.centerParameter(++i), this.centerParameter(eval.iToken + 1)]); +} else { +linePts = eval.getPointArray(++i, 2, false); +}if (linePts.length < 2) this.invArg(); +break; +} +i = eval.iToken; +havePoints = true; +if (this.chk) break; +if (tok == 1073741998) { +linePts = JU.Measure.getBestLineThroughPoints(linePts, -1); +if (tokIntersectBox != 0) { +var v = JU.V3.newVsub(linePts[1], linePts[0]); +v.scale(1 / v.length()); +linePts = (isProjection ? JU.Measure.getProjectedLineSegment(pts, -1, linePts[0], v, null) : this.vwr.getTriangulator().intersectLine(pts, -1, linePts[0], v)); +if (linePts == null || linePts[1] == null) return; +}if (!isInitialized) { +this.setShapeProperty(22, "points", Integer.$valueOf(intScale)); +isInitialized = true; +}var l = new JU.Lst(); +l.addLast(linePts[0]); +l.addLast(linePts[1]); +this.setShapeProperty(22, "coords", l); +break; +}if (tokIntersectBox == 0) { +propertyValue = plane; +propertyName = "planedef"; +} else if (tokIntersectBox == 1073741994) { +propertyName = "polygon"; +var cpts = JU.Measure.getPointsOnPlane(pts, plane); +pts = cpts.toArray( new Array(cpts.size())); +var v = new JU.Lst(); +v.addLast(pts); +v.addLast(null); +propertyValue = v; +intScale = 0; +} else { +if (isAll && tokIntersectBox == 1814695966) { +(J.api.Interface.getInterface("JU.BZone", this.vwr, "script")).drawHKL(this.vwr, thisId, plane, pts); +}propertyName = "polygon"; +propertyValue = this.vwr.getTriangulator().intersectPlane(plane, pts, isProjection ? -1 : 0); +intScale = 0; +}break; +case 1275068447: +pts = (eval.isArrayParameter(++i) ? eval.getPointArray(i, -1, false) : null); +if (pts == null && eval.isAtomExpression(i)) { +bs = eval.atomExpressionAt(i); +pts = this.vwr.ms.getAtomPointVector(bs).toArray( new Array(bs.cardinality())); +}if (pts != null) { +i = eval.iToken + 1; +if (this.tokAt(i) == 12289) { +center = eval.centerParameter(++i, null); +i = eval.iToken + 1; +}}var type; +switch (this.tokAt(i)) { +case 536875059: +type = ""; +break; +case 1111490563: +type = "Cs"; +break; +case 1073742330: +var data = Clazz_newArray(-1, [eval.objectNameParameter(++i), null]); +if (this.chk) return; +this.vwr.shm.getShapePropertyData(21, "points", data); +pts = data[1]; +if (pts == null) this.invArg(); +type = ""; +break; +case 1275203608: +type = ":poly"; +break; +case 134217764: +if (center == null) center = new JU.P3(); +var crpts = this.vwr.ms.generateCrystalClass(this.vwr.bsA().nextSetBit(0), JU.P3.new3(NaN, NaN, NaN)); +if (pts != null) this.invArg(); +pts = new Array(crpts.size()); +for (var j = crpts.size(); --j >= 0; ) pts[j] = crpts.get(j); + +i++; +type = ""; +break; +default: +type = eval.optParameterAsString(i); +break; +} +var scale = (intScale == 0 ? 1 : intScale / 100); +var index = 0; +if (type.length > 0) { +if (this.isFloatParameter(++i)) index = this.intParameter(i++); +}if (this.tokAt(i) == 536875059) scale = this.floatParameter(++i); +if (!this.chk) eval.runScript(this.vwr.ms.getPointGroupAsString(this.vwr.bsA(), type, index, scale, pts, center, thisId == null ? "" : thisId)); +return; +case 4106: +connections = Clazz_newIntArray (4, 0); +iConnect = 4; +var farray = eval.floatParameterSet(++i, 4, 4); +i = eval.iToken; +for (var j = 0; j < 4; j++) connections[j] = Clazz_floatToInt(farray[j]); + +havePoints = true; +break; +case 1677721602: +case 1153433601: +if (connections == null || iConnect > (eval.theTok == 1228931586 ? 2 : 3)) { +iConnect = 0; +connections = Clazz_newIntArray(-1, [-1, -1, -1, -1]); +}connections[iConnect++] = this.atomExpressionAt(++i).nextSetBit(0); +i = eval.iToken; +connections[iConnect++] = (eval.theTok == 1677721602 ? this.atomExpressionAt(++i).nextSetBit(0) : -1); +i = eval.iToken; +havePoints = true; +break; +case 554176565: +switch (this.getToken(++i).tok) { +case 1073742330: +propertyName = "slab"; +propertyValue = eval.objectNameParameter(++i); +i = eval.iToken; +havePoints = true; +break; +default: +this.invArg(); +} +break; +case 1275203608: +case 134217751: +case 1073742106: +var isPoints = (tok == 134217751); +propertyName = "polygon"; +havePoints = true; +var v = new JU.Lst(); +var nVertices = 0; +var nTriangles = 0; +var points = null; +var vpolygons = null; +var polygons = null; +if (eval.isArrayParameter(++i)) { +points = eval.getPointArray(i, -1, true); +if (points.length > 0 && points[0] == null) { +var faces; +if (tok == 1275203608) { +faces = this.getIntArray2(i); +} else { +faces = JU.AU.newInt2(1); +faces[0] = eval.expandFloatArray(eval.floatParameterSet(i, -1, 2147483647), -1, false); +}points = this.getAllPoints(this.e.iToken + 1, 3); +try { +polygons = (J.api.Interface.getInterface("JU.MeshCapper", this.vwr, "script")).set(null).triangulateFaces(faces, points, null); +} catch (e) { +this.invArg(); +} +}nVertices = points.length; +}if (tok == 1275203608) { +nVertices = points.length; +}if (points == null) { +nVertices = Math.max(0, this.intParameter(i)); +points = new Array(nVertices); +for (var j = 0; j < nVertices; j++) points[j] = this.centerParameter(++eval.iToken); + +}i = eval.iToken; +switch (this.tokAt(i + 1)) { +case 11: +case 12: +vpolygons = JS.SV.newT(this.getToken(++i)).toArray().getList(); +nTriangles = vpolygons.size(); +break; +case 7: +vpolygons = (this.getToken(++i)).getList(); +nTriangles = vpolygons.size(); +break; +case 2: +nTriangles = this.intParameter(++i); +if (nTriangles < 0) isPoints = true; +break; +default: +if (polygons == null && !isPoints && !this.chk) polygons = (J.api.Interface.getInterface("JU.MeshCapper", this.vwr, "script")).set(null).triangulatePolygon(points, -1); +break; +} +if (polygons == null && !isPoints) { +polygons = JU.AU.newInt2(nTriangles); +for (var j = 0; j < nTriangles; j++) { +var f = (vpolygons == null ? eval.floatParameterSet(++eval.iToken, 3, 4) : JS.SV.flistValue(vpolygons.get(j), 0)); +if (f.length < 3 || f.length > 4) this.invArg(); +polygons[j] = Clazz_newIntArray(-1, [Clazz_floatToInt(f[0]), Clazz_floatToInt(f[1]), Clazz_floatToInt(f[2]), (f.length == 3 ? 7 : Clazz_floatToInt(f[3]))]); +} +}if (nVertices > 0) { +v.addLast(points); +v.addLast(polygons); +} else { +v = null; +}propertyValue = v; +i = eval.iToken; +break; +case 134217764: +case 1296041985: +var xyz = null; +var iSym = 2147483647; +plane = null; +var target = null; +var bsAtoms = null; +var options = 0; +var trans = null; +var opList = null; +var isSymop = (tok == 1296041985); +var nth = -1; +var ret = Clazz_newArray(-1, [null, this.vwr.getFrameAtoms()]); +if (isSymop) { +iSym = 0; +switch (this.tokAt(++i)) { +case 4: +xyz = this.stringParameter(i); +break; +case 12: +xyz = this.vwr.getSymStatic().convertTransform("xyz", this.getToken(i).value); +break; +case 2: +default: +if (!eval.isCenterParameter(i)) { +if (eval.isArrayParameter(i)) { +var params = eval.floatParameterSet(i, 1, 2147483647); +opList = Clazz_newIntArray (params.length, 0); +for (var j = opList.length; --j >= 0; ) opList[j] = Clazz_floatToInt(params[j]); + +i = eval.iToken + 1; +} else { +iSym = this.intParameter(i++); +if (eval.isArrayParameter(i)) { +trans = JU.P3.newA(eval.floatParameterSet(i, 3, 3)); +i = eval.iToken + 1; +}}}if (eval.isCenterParameter(i)) center = eval.centerParameter(i, ret); +if (opList == null && eval.isCenterParameter(eval.iToken + 1)) target = eval.centerParameter(++eval.iToken, ret); +if (this.chk) return; +i = eval.iToken; +if (center == null && i + 1 < this.slen) { +center = this.centerParameter(++i); +bsAtoms = (eval.isAtomExpression(i) ? this.atomExpressionAt(i) : null); +i = eval.iToken; +}nth = ((!isSymop || target != null) && this.tokAt(i + 1) == 2 ? eval.getToken(++i).intValue : -1); +if (nth < -1) this.invArg(); +if (this.tokAt(i + 1) == 1814695966) { +target = new JU.P3(); +options = 1073742066; +eval.iToken = ++i; +} else if (this.tokAt(i + 1) == 1073742066) { +i++; +target = this.getPoint3f(i + 1, false); +options = 1073742066; +i = eval.iToken; +}break; +} +} else if (this.tokAt(i + 1) == 1073742327) { +nth = -2; +eval.iToken = ++i; +}if (xyz != null) { +i++; +if (eval.isCenterParameter(i)) { +center = eval.centerParameter(i, ret); +i = eval.iToken; +}}eval.checkLast(eval.iToken); +if (this.chk) return; +var s = ""; +var iatom = (bsAtoms != null ? bsAtoms.nextSetBit(0) : -1); +if (bsAtoms == null && this.vwr.am.cmi >= 0) bsAtoms = this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi); +if (bsAtoms != null) { +s = this.vwr.getModelkit(false).drawSymmetry(thisId, isSymop, iatom, xyz, iSym, trans, center, target, intScale, nth, options, opList, false); +if (s == null) return; +if (isSymop && Clazz_instanceOf(target,"JM.Atom") && Clazz_instanceOf(center,"JM.Atom")) { +if (eval.fullCommand.indexOf("#quiet") >= 0) s = JU.PT.rep(s, "print", "#print"); +s += "\nmodelkit set atomset " + JU.PT.esc(thisId + "|" + (center).i + "|" + (target).i + "|" + eval.fullCommand) + ";"; +}}eval.runBufferedSafely(s.length > 0 ? s : "draw ID \"" + thisId + "*\" delete", eval.outputBuffer); +return; +case 4115: +isFrame = true; +continue; +case 1073742332: +case 9: +case 8: +if (eval.theTok == 9 || !eval.isPoint3f(i)) { +propertyValue = eval.getPoint4f(i); +if (isFrame) { +eval.checkLast(eval.iToken); +if (!this.chk) eval.runScript(JU.Escape.drawQuat(JU.Quat.newP4(propertyValue), (thisId == null ? "frame" : thisId), " " + swidth, (center == null ? new JU.P3() : center), intScale / 100)); +return; +}propertyName = "planedef"; +} else { +propertyValue = center = this.getPoint3f(i, true); +propertyName = "coord"; +}i = eval.iToken; +havePoints = true; +break; +case 1073742000: +propertyName = "lineData"; +propertyValue = eval.floatParameterSet(++i, 0, 2147483647); +i = eval.iToken; +havePoints = true; +break; +case 12290: +case 10: +case 1073742325: +propertyName = "atomSet"; +propertyValue = this.atomExpressionAt(i); +if (isFrame) center = this.centerParameter(i); +i = eval.iToken; +havePoints = true; +break; +case 7: +havePoints = true; +propertyName = (iArray == i ? "coords" : "modelBasedPoints"); +propertyValue = eval.theToken.value; +break; +case 1073742195: +case 268436992: +break; +case 268437504: +propertyValue = eval.xypParameter(i); +if (propertyValue != null) { +i = eval.iToken; +propertyName = "coord"; +havePoints = true; +break; +}if (isSavedState) this.invArg(); +isSavedState = true; +break; +case 268437505: +if (!isSavedState) this.invArg(); +isSavedState = false; +break; +case 1140850693: +propertyName = "reverse"; +break; +case 1073742166: +if (this.tokAt(++i) == 1765808134) { +propertyValue = Integer.$valueOf(this.e.getArgbParamOrNone(++i, false)); +propertyName = "titlecolor"; +i = this.e.iToken; +break; +}if (this.tokAt(i) == 4114) { +--i; +continue; +}case 4: +propertyValue = this.stringParameter(i); +propertyName = "title"; +break; +case 545259562: +propertyValue = this.stringParameter(++i); +propertyName = "hoverlabel"; +break; +case 4114: +var fontSize = this.floatParameter(++i); +var fontFace = (this.tokAt(i + 1) == 1073741824 ? this.paramAsStr(++i) : null); +var fontStyle = (this.tokAt(i + 1) == 1073741824 ? this.paramAsStr(++i) : null); +if (this.tokAt(i + 1) != 4 && ++i != this.slen || fontSize <= 0 || fontSize > 0xFF) this.invArg(); +propertyName = "myfont"; +if (fontFace == null || fontStyle == null) { +var f = this.vwr.shm.getShapePropertyIndex(22, "font", -1); +if (fontFace == null) fontFace = f.fontFace; +if (fontStyle == null) fontStyle = f.fontStyle; +}propertyValue = this.vwr.getFont3D(fontFace, fontStyle, fontSize); +break; +case 135198: +propertyName = "vector"; +break; +case 1140850691: +propertyValue = Float.$valueOf(this.floatParameter(++i)); +propertyName = "length"; +break; +case 3: +propertyValue = Float.$valueOf(this.floatParameter(i)); +propertyName = "length"; +break; +case 1094713359: +propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +break; +case 2: +if (isSavedState) { +propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(this.intParameter(i)); +} else { +intScale = this.intParameter(i); +}break; +case 536875059: +intScale = Math.round(this.floatParameter(++i) * (this.getToken(i).tok == 2 ? 1 : 100)); +continue; +case 1073741974: +thisId = this.setShapeId(22, ++i, idSeen); +isWild = (this.getShapeProperty(22, "ID") == null); +i = eval.iToken; +break; +case 1073742027: +propertyName = "fixed"; +propertyValue = Boolean.FALSE; +break; +case 12293: +propertyName = "fixed"; +propertyValue = Boolean.TRUE; +break; +case 1073742066: +var pt = this.getPoint3f(++i, true); +i = eval.iToken; +propertyName = "offset"; +propertyValue = pt; +break; +case 1073741906: +propertyName = "crossed"; +break; +case 1073742196: +propertyValue = Float.$valueOf(this.floatParameter(++i)); +propertyName = "width"; +swidth = propertyName + " " + propertyValue; +break; +case 1073741908: +propertyName = "curve"; +iArray = i + 1; +break; +case 1073741840: +propertyName = "arc"; +iArray = i + 1; +break; +case 1073741846: +propertyName = "arrow"; +iArray = i + 1; +break; +case 1073742194: +propertyName = "vertices"; +iArray = i + 1; +break; +case 1073741880: +propertyName = "circle"; +break; +case 1073741912: +propertyName = "cylinder"; +break; +case 1073742048: +propertyName = "nohead"; +break; +case 1073741860: +propertyName = "isbarb"; +break; +case 1073742130: +propertyName = "rotate45"; +break; +case 1073742092: +propertyName = "perp"; +break; +case 1665140738: +case 1073741917: +var isRadius = (eval.theTok == 1665140738); +var f = this.floatParameter(++i); +if (isRadius) f *= 2; +propertyValue = Float.$valueOf(f); +propertyName = (isRadius || this.tokAt(i) == 3 ? "width" : "diameter"); +swidth = propertyName + (this.tokAt(i) == 3 ? " " + f : " " + (Clazz_floatToInt(f))); +break; +case 1073742330: +if ((this.tokAt(i + 2) == 268437504 || isFrame)) { +var pto = center = this.centerParameter(i); +i = eval.iToken; +propertyName = "coord"; +propertyValue = pto; +havePoints = true; +break; +}propertyValue = eval.objectNameParameter(++i); +propertyName = "identifier"; +havePoints = true; +break; +case 1765808134: +case 603979967: +case 1073742074: +idSeen = true; +translucentLevel = this.getColorTrans(eval, i, false, colorArgb); +i = eval.iToken; +continue; +default: +if (!eval.setMeshDisplayProperty(22, 0, eval.theTok)) { +if (eval.theTok == 268441089 || JS.T.tokAttr(eval.theTok, 1073741824)) { +thisId = this.setShapeId(22, i, idSeen); +i = eval.iToken; +break; +}this.invArg(); +}if (iptDisplayProperty == 0) iptDisplayProperty = i; +i = eval.iToken; +continue; +} +idSeen = (eval.theTok != 12291); +if (havePoints && !isInitialized && !isFrame) { +this.setShapeProperty(22, "points", Integer.$valueOf(intScale)); +isInitialized = true; +intScale = 0; +}if (havePoints && isWild) this.invArg(); +if (propertyName != null) { +this.setShapeProperty(22, propertyName, propertyValue); +}} +if (meshNoFill) { +iptDisplayProperty = -1 - iptDisplayProperty; +}this.finalizeObject(22, colorArgb[0], translucentLevel, intScale, havePoints, connections, iptDisplayProperty, null); +}); +Clazz_defineMethod(c$, "mo", +function(isInitOnly, iShape){ +var eval = this.e; +var offset = 2147483647; +var isNegOffset = false; +var nboType = null; +var bsModels = this.vwr.getVisibleFramesBitSet(); +var propertyList = new JU.Lst(); +var isBeta = false; +var isNBO = (this.tokAt(0) == 1073877011); +var i0 = 1; +if (isNBO) { +var isViewOnly = this.e.optParameterAsString(1).equals("view"); +if (this.e.slen == 1 || isViewOnly || this.e.optParameterAsString(1).equals("options")) { +if (!this.chk) { +var options = (isViewOnly ? "VIEW" : this.e.optParameterAsString(2)); +this.vwr.startNBO(options); +}return; +}}if (this.tokAt(1) == 1094717454 || this.tokAt(1) == 4115) { +i0 = eval.modelNumberParameter(2); +if (i0 < 0) this.invArg(); +bsModels.clearAll(); +bsModels.set(i0); +i0 = 3; +}eval.sm.loadShape(iShape); +for (var iModel = bsModels.nextSetBit(0); iModel >= 0; iModel = bsModels.nextSetBit(iModel + 1)) { +var i = i0; +if (this.tokAt(i) == 1073742001 && this.listIsosurface(iShape)) return; +this.setShapeProperty(iShape, "init", Integer.$valueOf(iModel)); +if (isInitOnly) return; +var title = null; +var moNumber = (this.getShapeProperty(iShape, "moNumber")).intValue(); +var linearCombination = this.getShapeProperty(iShape, "moLinearCombination"); +var squared = this.getShapeProperty(iShape, "moSquareData"); +var linearSquared = (linearCombination == null ? null : this.getShapeProperty(iShape, "moSquareLinear")); +if (moNumber == 0) moNumber = 2147483647; +var propertyName = null; +var propertyValue = null; +var ignoreSquared = false; +var nboName = null; +switch (this.getToken(i).tok) { +case 1140850696: +if (iShape == 1073877010) { +this.mo(isInitOnly, 28); +return; +}nboType = this.paramAsStr(++i).toUpperCase(); +if (eval.tokAt(i + 1) == 4) { +nboName = this.paramAsStr(++eval.iToken); +}break; +case 1073741875: +case 554176565: +propertyName = eval.theToken.value; +propertyValue = this.getCapSlabObject(i, false); +i = eval.iToken; +break; +case 1073741914: +linearSquared = Boolean.TRUE; +linearCombination = Clazz_newFloatArray(-1, [1]); +offset = moNumber = 0; +break; +case 2: +moNumber = this.intParameter(i); +if (this.tokAt(i + 1) == 1073741865) { +isBeta = true; +i++; +}linearCombination = this.moCombo(propertyList); +if (linearCombination == null && moNumber < 0) linearCombination = Clazz_newFloatArray(-1, [-100, -moNumber]); +ignoreSquared = true; +break; +case 268440576: +switch (this.tokAt(++i)) { +case 1073741973: +case 1073742008: +break; +default: +this.invArg(); +} +isNegOffset = true; +case 1073741973: +case 1073742008: +if ((offset = this.moOffset(i)) == 2147483647) this.invArg(); +moNumber = 0; +linearCombination = this.moCombo(propertyList); +ignoreSquared = true; +break; +case 1073742037: +moNumber = 1073742037; +isBeta = false; +linearCombination = this.moCombo(propertyList); +ignoreSquared = true; +break; +case 1073742108: +moNumber = 1073742108; +isBeta = false; +linearCombination = this.moCombo(propertyList); +ignoreSquared = true; +break; +case 1765808134: +this.setColorOptions(null, i + 1, iShape, 2); +break; +case 134217750: +propertyName = "plane"; +propertyValue = (this.tokAt(this.e.iToken = ++i) == 1073742333 ? null : eval.planeParameter(i, false)); +break; +case 134217751: +this.addShapeProperty(propertyList, "randomSeed", this.tokAt(i + 2) == 2 ? Integer.$valueOf(this.intParameter(i + 2)) : null); +propertyName = "monteCarloCount"; +propertyValue = Integer.$valueOf(this.intParameter(i + 1)); +break; +case 536875059: +propertyName = "scale"; +propertyValue = Float.$valueOf(this.floatParameter(i + 1)); +break; +case 1073741910: +if (this.tokAt(i + 1) == 268440577) { +propertyName = "cutoffPositive"; +propertyValue = Float.$valueOf(this.floatParameter(i + 2)); +} else { +propertyName = "cutoff"; +propertyValue = Float.$valueOf(this.floatParameter(i + 1)); +}break; +case 536870916: +propertyName = "debug"; +break; +case 1073742054: +propertyName = "plane"; +break; +case 1073742104: +case 1073742122: +propertyName = "resolution"; +propertyValue = Float.$valueOf(this.floatParameter(i + 1)); +break; +case 1073742156: +if (linearCombination == null) squared = Boolean.TRUE; + else linearSquared = Boolean.TRUE; +ignoreSquared = false; +break; +case 1073742168: +if (i + 1 < this.slen && this.tokAt(i + 1) == 4) { +propertyName = "titleFormat"; +propertyValue = this.paramAsStr(i + 1); +}break; +case 1073741824: +this.invArg(); +break; +case 4: +if (isNBO && i == 1) { +nboName = eval.stringParameter(i); +break; +}default: +if (isNBO && eval.tokAt(i) == 4) { +nboName = this.paramAsStr(i++); +}if (eval.isArrayParameter(i)) { +linearCombination = eval.floatParameterSet(i, 1, 2147483647); +if (this.tokAt(eval.iToken + 1) == 1073742156) { +ignoreSquared = false; +linearSquared = Boolean.TRUE; +eval.iToken++; +}break; +}var ipt = eval.iToken; +if (!eval.setMeshDisplayProperty(iShape, 0, eval.theTok)) this.invArg(); +this.setShapeProperty(iShape, "setProperties", propertyList); +eval.setMeshDisplayProperty(iShape, ipt, this.tokAt(ipt)); +return; +} +if (propertyName != null) this.addShapeProperty(propertyList, propertyName, propertyValue); +var haveMO = (moNumber != 2147483647 || linearCombination != null); +if (this.chk) return; +if (nboType != null || nboName != null || haveMO) { +if (haveMO && this.tokAt(eval.iToken + 1) == 4) { +title = this.paramAsStr(++eval.iToken); +}eval.setCursorWait(true); +if (nboType != null || nboName != null) nboType = nboType + ":" + nboName; +this.setMoData(propertyList, moNumber, linearCombination, offset, isNegOffset, iModel, title, nboType, isBeta); +if (haveMO) { +this.addShapeProperty(propertyList, "finalize", null); +}}if (!ignoreSquared) { +this.setShapeProperty(iShape, "squareLinear", linearSquared); +this.setShapeProperty(iShape, "squareData", squared); +}if (propertyList.size() > 0) this.setShapeProperty(iShape, "setProperties", propertyList); +if (haveMO && !eval.tQuiet) { +var moLabel = ""; +if (isNBO) { +moLabel = this.getShapeProperty(iShape, "moLabel"); +} else { +moNumber = (this.getShapeProperty(iShape, "moNumber")).intValue(); +moLabel = "" + moNumber; +}this.showString(JS.T.nameOf(this.tokAt(0)) + " " + moLabel + " " + (isBeta ? "beta " : "") + this.getShapeProperty(iShape, "message")); +}propertyList.clear(); +} +}, "~B,~N"); +Clazz_defineMethod(c$, "setNBOType", +function(moData, type){ +var nboNumber = -1; +var name = null; +var pt = type.indexOf(":"); +if (pt > 0) { +name = type.substring(pt + 1); +type = type.substring(0, pt); +if (type.equals("null")) type = null; +if (name.equals("null")) name = null; +}if ((type == null ? 0 : JV.JC.getNBOTypeFromName(type)) < 0) this.invArg(); +if (!moData.containsKey("nboLabels")) this.error(27); +if (this.chk) return -1; +if (type != null && !(J.api.Interface.getInterface("J.adapter.readers.quantum.GenNBOReader", this.vwr, "script")).readNBOCoefficients(moData, type, this.vwr)) this.error(27); +var auxFiles = moData.get("auxFiles"); +var auxFiles0 = this.vwr.getCurrentModelAuxInfo().get("auxFiles"); +if (auxFiles0 == null) { +this.vwr.getCurrentModelAuxInfo().put("auxFiles", auxFiles); +} else { +auxFiles0.addAll(auxFiles); +}if (name != null) { +pt = name.indexOf("."); +if (pt > 0) { +var ipt = JU.PT.parseInt(name.substring(pt + 1)); +name = name.substring(0, pt); +pt = ipt; +}var labels = moData.get("nboLabels"); +for (var i = 0, n = labels.length; i < n; i++) { +if (name.equals(labels[i])) { +if (pt < 0 || --pt == 0) { +nboNumber = i + 1; +break; +}}} +if (nboNumber < 0) this.error(27); +}return nboNumber; +}, "java.util.Map,~S"); +Clazz_defineMethod(c$, "moCombo", +function(propertyList){ +if (this.tokAt(this.e.iToken + 1) != 1073742156) return null; +this.addShapeProperty(propertyList, "squareLinear", Boolean.TRUE); +this.e.iToken++; +return Clazz_newFloatArray (0, 0); +}, "JU.Lst"); +Clazz_defineMethod(c$, "moOffset", +function(index){ +var isHomo = (this.getToken(index).tok == 1073741973); +var offset = (isHomo ? 0 : 1); +var tok = this.tokAt(++index); +if (tok == 2 && (this.e.st[index].value).charAt(0) == '-') offset += this.intParameter(index); + else if (tok == 268440577) offset += this.intParameter(++index); + else if (tok == 268440576) offset -= this.intParameter(++index); +return offset; +}, "~N"); +Clazz_defineMethod(c$, "setMoData", +function(propertyList, moNumber, lc, offset, isNegOffset, modelIndex, title, nboType, isBeta){ +var eval = this.e; +if (modelIndex < 0) { +modelIndex = this.vwr.am.cmi; +if (modelIndex < 0) eval.errorStr(30, "MO isosurfaces"); +}var moData = this.vwr.ms.getInfo(modelIndex, "moData"); +if (moData == null) this.error(27); +this.vwr.checkMenuUpdate(); +if (nboType != null) { +var nboNumber = this.setNBOType(moData, nboType); +var nOrbitals = (moData.get("nboLabels")).length; +eval.showString(nOrbitals + " orbitals of type " + nboType.substring(0, nboType.indexOf(":") + 1) + " modelIndex=" + this.vwr.getModelNumberDotted(modelIndex)); +if (nboNumber > 0) moNumber = nboNumber; +if (lc == null && moNumber == 2147483647) return; +}var mos = null; +var mo; +var nOrb = 0; +var f = null; +if (lc == null || lc.length < 2) { +if (lc != null && lc.length == 1) offset = 0; + else if (isBeta && moData.containsKey("firstBeta")) offset = (moData.get("firstBeta")).intValue(); +var lastMoNumber = (moData.containsKey("lastMoNumber") ? (moData.get("lastMoNumber")).intValue() : 0); +var lastMoCount = (moData.containsKey("lastMoCount") ? (moData.get("lastMoCount")).intValue() : 1); +if (moNumber == 1073742108) moNumber = lastMoNumber - 1; + else if (moNumber == 1073742037) moNumber = lastMoNumber + lastMoCount; +mos = (moData.get("mos")); +nOrb = (mos == null ? 0 : mos.size()); +if (nOrb == 0) this.error(25); +if (nOrb == 1 && moNumber > 1) this.error(29); +if (offset != 2147483647) { +if (isBeta) { +} else if (moData.containsKey("HOMO")) { +moNumber = (moData.get("HOMO")).intValue() + offset; +offset = 0; +} else { +moNumber = nOrb; +for (var i = 0; i < nOrb; i++) { +mo = mos.get(i); +if ((f = mo.get("occupancy")) != null) { +if (f.floatValue() < 0.5) { +moNumber = i; +break; +}continue; +} else if ((f = mo.get("energy")) != null) { +if (f.floatValue() > 0) { +moNumber = i; +break; +}continue; +}break; +} +if (f == null) this.error(28); +}moNumber += offset; +if (!this.chk) JU.Logger.info("MO " + moNumber); +}if (moNumber < 1 || moNumber > nOrb) eval.errorStr(26, "" + nOrb); +}moNumber = Math.abs(moNumber); +moData.put("lastMoNumber", Integer.$valueOf(moNumber)); +moData.put("lastMoCount", Integer.$valueOf(1)); +if (isNegOffset && lc == null) lc = Clazz_newFloatArray(-1, [-100, moNumber]); +if (lc != null && lc.length < 2) { +mo = mos.get(moNumber - 1); +if ((f = mo.get("energy")) == null) { +lc = Clazz_newFloatArray(-1, [100, moNumber]); +} else { +var energy = f.floatValue(); +var bs = JU.BS.newN(nOrb); +var n = 0; +var isAllElectrons = (lc.length == 1 && lc[0] == 1); +for (var i = 0; i < nOrb; i++) { +if ((f = mos.get(i).get("energy")) == null) continue; +var e = f.floatValue(); +if (isAllElectrons ? e <= energy : e == energy) { +bs.set(i + 1); +n += 2; +}} +lc = Clazz_newFloatArray (n, 0); +for (var i = 0, pt = 0; i < n; i += 2) { +lc[i] = 1; +lc[i + 1] = (pt = bs.nextSetBit(pt + 1)); +} +moData.put("lastMoNumber", Integer.$valueOf(bs.nextSetBit(0))); +moData.put("lastMoCount", Integer.$valueOf(Clazz_doubleToInt(n / 2))); +}this.addShapeProperty(propertyList, "squareLinear", Boolean.TRUE); +}this.addShapeProperty(propertyList, "moData", moData); +if (title != null) this.addShapeProperty(propertyList, "title", title); +this.addShapeProperty(propertyList, "molecularOrbital", lc != null ? lc : Integer.$valueOf(Math.abs(moNumber))); +this.addShapeProperty(propertyList, "clear", null); +}, "JU.Lst,~N,~A,~N,~B,~N,~S,~S,~B"); +Clazz_defineMethod(c$, "isosurface", +function(iShape){ +var eval = this.e; +eval.sm.loadShape(iShape); +if (this.tokAt(1) == 1073742001 && this.listIsosurface(iShape)) return; +var iptDisplayProperty = 0; +var isDisplay = false; +var isBest = false; +var isIsosurface = (iShape == 24); +var isPmesh = (iShape == 29); +var isPlot3d = (iShape == 30); +var isLcaoCartoon = (iShape == 26); +var isSilent = (isLcaoCartoon || this.tokAt(1) == 12291 || eval.$isStateScript); +var surfaceObjectSeen = false; +var planeSeen = false; +var isMapped = false; +var isBicolor = false; +var isPhased = false; +var doCalcArea = false; +var doCalcVolume = false; +var isBeta = false; +var isCavity = false; +var haveRadius = false; +var toCache = false; +var isFxy = false; +var haveSlab = false; +var haveIntersection = false; +var isFrontOnly = false; +var nbotype = null; +var data = null; +var cmd = null; +var thisSet = null; +var nFiles = 0; +var nX; +var nY; +var nZ; +var ptX; +var ptY; +var sigma = NaN; +var cutoff = NaN; +var ptWithin = 0; +var smoothing = null; +var smoothingPower = 2147483647; +var bs = null; +var bsSelect = null; +var bsIgnore = null; +var sbCommand = new JU.SB(); +var pt; +var plane = null; +var lattice = null; +var fixLattice = false; +var pts = null; +var color = 0; +var str = null; +var modelIndex = (this.chk ? 0 : -2147483648); +eval.setCursorWait(true); +var idSeen = (this.initIsosurface(iShape) != null); +var isWild = (idSeen && this.getShapeProperty(iShape, "ID") == null); +var isColorSchemeTranslucent = false; +var isInline = false; +var isSign = false; +var colorDensity = false; +var onlyOneModel = null; +var filesData = null; +var translucency = null; +var colorScheme = null; +var mepOrMlp = null; +var symops = null; +var discreteColixes = null; +var propertyList = new JU.Lst(); +var defaultMesh = false; +if (isPmesh || isPlot3d) this.addShapeProperty(propertyList, "fileType", "Pmesh"); +for (var i = eval.iToken; i < this.slen; ++i) { +var propertyName = null; +var propertyValue = null; +var tok = this.getToken(i).tok; +if (tok == 1073741824) { +str = this.paramAsStr(i); +if (str.equalsIgnoreCase("map")) tok = 4125; +}switch (tok) { +case 1073742148: +isSilent = true; +sbCommand.append(" silent"); +propertyName = "silent"; +break; +case 603979868: +smoothing = (this.getToken(++i).tok == 1073742335 ? Boolean.TRUE : eval.theTok == 1073742334 ? Boolean.FALSE : null); +if (smoothing == null) this.invArg(); +continue; +case 553648146: +smoothingPower = this.intParameter(++i); +continue; +case 4128: +propertyName = "moveIsosurface"; +if (this.tokAt(++i) != 12) this.invArg(); +propertyValue = this.getToken(i++).value; +break; +case 1296041985: +var ff = this.floatArraySet(i + 2, this.intParameter(i + 1), 16); +symops = new Array(ff.length); +for (var j = symops.length; --j >= 0; ) symops[j] = JU.M4.newA16(ff[j]); + +i = eval.iToken; +break; +case 1088421903: +if (modelIndex < 0) modelIndex = Math.min(this.vwr.am.cmi, 0); +var needIgnore = (bsIgnore == null); +if (bsSelect == null) bsSelect = JU.BSUtil.copy(this.vwr.bsA()); +bsSelect.and(this.vwr.ms.getAtoms(1296041985, Integer.$valueOf(1))); +if (!needIgnore) bsSelect.andNot(bsIgnore); +this.addShapeProperty(propertyList, "select", bsSelect); +if (needIgnore) { +bsIgnore = JU.BSUtil.copy(bsSelect); +JU.BSUtil.invertInPlace(bsIgnore, this.vwr.ms.ac); +isFrontOnly = true; +this.addShapeProperty(propertyList, "ignore", bsIgnore); +sbCommand.append(" ignore ").append(JU.Escape.eBS(bsIgnore)); +}sbCommand.append(" symmetry"); +if (color == 0) this.addShapeProperty(propertyList, "colorRGB", Integer.$valueOf(1296041985)); +symops = this.vwr.ms.getSymMatrices(modelIndex); +break; +case 1073742066: +propertyName = "offset"; +propertyValue = this.centerParameter(++i); +i = eval.iToken; +break; +case 528432: +propertyName = "rotate"; +propertyValue = (this.tokAt(eval.iToken = ++i) == 1073742333 ? null : eval.getPoint4f(i)); +i = eval.iToken; +break; +case 1610612740: +propertyName = "scale3d"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1073742090: +sbCommand.append(" periodic"); +propertyName = "periodic"; +break; +case 1073742078: +case 266298: +case 134217751: +propertyName = eval.theToken.value.toString(); +sbCommand.append(" ").appendO(eval.theToken.value); +propertyValue = this.centerParameter(++i); +sbCommand.append(" ").append(JU.Escape.eP(propertyValue)); +i = eval.iToken; +break; +case 1812599299: +if (eval.fullCommand.indexOf("# BBOX=") >= 0) { +var bbox = JU.PT.split(JU.PT.getQuotedAttribute(eval.fullCommand, "# BBOX"), ","); +pts = Clazz_newArray(-1, [JU.Escape.uP(bbox[0]), JU.Escape.uP(bbox[1])]); +} else if (eval.isCenterParameter(i + 1)) { +pts = Clazz_newArray(-1, [this.getPoint3f(i + 1, true), this.getPoint3f(eval.iToken + 1, true)]); +i = eval.iToken; +} else { +pts = this.vwr.ms.getBBoxVertices(); +}sbCommand.append(" boundBox " + JU.Escape.eP(pts[0]) + " " + JU.Escape.eP(pts[pts.length - 1])); +propertyName = "boundingBox"; +propertyValue = pts; +break; +case 135188: +isPmesh = true; +sbCommand.append(" pmesh"); +propertyName = "fileType"; +propertyValue = "Pmesh"; +break; +case 134217763: +bsSelect = this.atomExpressionAt(++i); +if (this.chk) { +bs = new JU.BS(); +} else if (this.tokAt(eval.iToken + 1) == 1073742325 || this.tokAt(eval.iToken + 1) == 10) { +bs = this.atomExpressionAt(++eval.iToken); +bs.and(this.vwr.ms.getAtomsWithinRadius(5.0, bsSelect, false, null, null)); +} else { +bs = this.vwr.ms.getAtomsWithinRadius(5.0, bsSelect, true, null, null); +bs.andNot(this.vwr.ms.getAtoms(1094713360, bsSelect)); +}bs.andNot(bsSelect); +sbCommand.append(" intersection ").append(JU.Escape.eBS(bsSelect)).append(" ").append(JU.Escape.eBS(bs)); +i = eval.iToken; +if (this.tokAt(i + 1) == 134320141) { +i++; +var f = this.getToken(++i).value; +sbCommand.append(" function ").append(JU.PT.esc(f)); +if (!this.chk) this.addShapeProperty(propertyList, "func", (f.equals("a+b") || f.equals("a-b") ? f : this.createFunction("__iso__", "a,b", f))); +} else { +haveIntersection = true; +}propertyName = "intersection"; +propertyValue = Clazz_newArray(-1, [bsSelect, bs]); +break; +case 1610625028: +case 134217759: +isDisplay = (tok == 1610625028); +if (isDisplay) { +sbCommand.append(" display"); +iptDisplayProperty = i; +tok = this.tokAt(i + 1); +if (tok == 0) continue; +i++; +this.addShapeProperty(propertyList, "token", Integer.$valueOf(1073742335)); +if (tok == 10 || tok == 1073742327) { +propertyName = "bsDisplay"; +if (tok == 1073742327) { +sbCommand.append(" all"); +} else { +propertyValue = this.st[i].value; +sbCommand.append(" ").append(JU.Escape.eBS(propertyValue)); +}eval.checkLast(i); +break; +} else if (tok != 134217759) { +eval.iToken = i; +this.invArg(); +}} else { +ptWithin = i; +}var distance; +var ptc = null; +bs = null; +var ret = new Array(1); +if (this.tokAt(i + 1) == 1073742325) { +distance = this.floatParameter(i + 3); +if (eval.isPoint3f(i + 4)) { +ptc = eval.centerParameter(i + 4, null); +eval.iToken += 2; +} else if (eval.isPoint3f(i + 5)) { +ptc = eval.centerParameter(i + 5, null); +eval.iToken += 2; +} else { +bs = eval.atomExpression(this.st, i + 5, this.slen, true, false, ret, true); +if (bs == null) this.invArg(); +}} else { +distance = this.floatParameter(++i); +ptc = eval.centerParameter(++i, ret); +bs = (Clazz_instanceOf(ret[0],"JU.BS") ? ret[0] : null); +}if (isDisplay) eval.checkLast(eval.iToken); +i = eval.iToken; +if (eval.fullCommand.indexOf("# WITHIN=") >= 0) bs = JU.BS.unescape(JU.PT.getQuotedAttribute(eval.fullCommand, "# WITHIN")); +if (!this.chk) { +if (bs != null && modelIndex >= 0) bs = this.vwr.restrictToModel(bs, modelIndex); +if (ptc == null) ptc = (bs == null ? new JU.P3() : this.vwr.ms.getAtomSetCenter(bs)); +pts = this.getWithinDistanceVector(propertyList, distance, ptc, bs, isDisplay); +sbCommand.append(" within ").appendF(distance).append(" ").append(bs == null ? JU.Escape.eP(ptc) : JU.Escape.eBS(bs)); +}continue; +case 1073742083: +propertyName = "parameters"; +var fparams = eval.floatParameterSet(++i, 1, 10); +i = eval.iToken; +propertyValue = fparams; +sbCommand.append(" parameters ").append(JU.Escape.eAF(fparams)); +break; +case 1715472409: +case 1073742190: +onlyOneModel = eval.theToken.value; +var isVariable = (tok == 1073742190); +var tokProperty = this.tokAt(i + 1); +if (mepOrMlp == null) { +if (!surfaceObjectSeen && !isMapped && !planeSeen) { +this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +sbCommand.append(" vdw"); +surfaceObjectSeen = true; +}propertyName = "property"; +if (smoothing == null) { +var allowSmoothing = JS.T.tokAttr(tokProperty, 1111490560); +smoothing = (allowSmoothing && this.vwr.getIsosurfacePropertySmoothing(false) == 1 ? Boolean.TRUE : Boolean.FALSE); +}this.addShapeProperty(propertyList, "propertySmoothing", smoothing); +sbCommand.append(" isosurfacePropertySmoothing " + smoothing); +if (smoothing === Boolean.TRUE) { +if (smoothingPower == 2147483647) smoothingPower = this.vwr.getIsosurfacePropertySmoothing(true); +this.addShapeProperty(propertyList, "propertySmoothingPower", Integer.$valueOf(smoothingPower)); +sbCommand.append(" isosurfacePropertySmoothingPower " + smoothingPower); +}if (this.vwr.g.rangeSelected) this.addShapeProperty(propertyList, "rangeSelected", Boolean.TRUE); +} else { +propertyName = mepOrMlp; +}str = this.paramAsStr(i); +sbCommand.append(" ").append(str); +if (str.toLowerCase().indexOf("property_") == 0) { +data = Clazz_newFloatArray (this.vwr.ms.ac, 0); +if (this.chk) continue; +data = this.vwr.getDataObj(str, null, 1); +if (data == null) this.invArg(); +this.addShapeProperty(propertyList, propertyName, data); +continue; +}var ac = this.vwr.ms.ac; +data = Clazz_newFloatArray (ac, 0); +if (isVariable) { +var vname = this.paramAsStr(++i); +if (vname.length == 0) { +data = eval.floatParameterSet(i, ac, ac); +} else { +data = Clazz_newFloatArray (ac, 0); +if (!this.chk) JU.Parser.parseStringInfestedFloatArray("" + eval.getParameter(vname, 4, true), null, data); +}if (!this.chk) sbCommand.append(" \"\" ").append(JU.Escape.eAF(data)); +} else { +this.getToken(++i); +if (!this.chk) { +sbCommand.append(" " + eval.theToken.value); +var atoms = this.vwr.ms.at; +this.vwr.autoCalculate(tokProperty, null); +if (tokProperty != 1765808134) { +pt = new JU.P3(); +for (var iAtom = ac; --iAtom >= 0; ) data[iAtom] = atoms[iAtom].atomPropertyFloat(this.vwr, tokProperty, pt); + +}}if (tokProperty == 1765808134) colorScheme = "inherit"; +if (this.tokAt(i + 1) == 134217759) { +var d = this.floatParameter(i = i + 2); +sbCommand.append(" within " + d); +this.addShapeProperty(propertyList, "propertyDistanceMax", Float.$valueOf(d)); +}}propertyValue = data; +break; +case 1094713359: +case 1094717454: +if (surfaceObjectSeen) this.invArg(); +modelIndex = (tok == 1094713359 ? this.intParameter(++i) : eval.modelNumberParameter(++i)); +sbCommand.append(" modelIndex " + modelIndex); +if (modelIndex < 0) { +propertyName = "fixed"; +propertyValue = Boolean.TRUE; +break; +}propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(modelIndex); +break; +case 1275082241: +propertyName = "select"; +var bs1 = this.atomExpressionAt(++i); +propertyValue = bs1; +i = eval.iToken; +var isOnly = (this.tokAt(i + 1) == 1073742072); +if (isOnly) { +i++; +bsIgnore = JU.BSUtil.copy(bs1); +JU.BSUtil.invertInPlace(bsIgnore, this.vwr.ms.ac); +this.addShapeProperty(propertyList, "ignore", bsIgnore); +sbCommand.append(" ignore ").append(JU.Escape.eBS(bsIgnore)); +isFrontOnly = true; +}if (surfaceObjectSeen || isMapped) { +sbCommand.append(" select " + JU.Escape.eBS(bs1)); +} else { +bsSelect = propertyValue; +if (modelIndex < 0 && bsSelect.nextSetBit(0) >= 0) modelIndex = this.vwr.ms.at[bsSelect.nextSetBit(0)].mi; +}break; +case 2109448: +if (eval.getToken(++i).tok == 10) { +thisSet = eval.theToken.value; +} else { +thisSet = eval.expandFloatArray(eval.floatParameterSet(i, 1, 2147483647), 1, true); +}i = eval.iToken; +break; +case 36867: +var ns = this.intParameter(++i); +if (ns > 0) thisSet = JU.BSUtil.newAndSetBit(ns - 1); + else thisSet = new JU.BS(); +break; +case 12289: +propertyName = "center"; +propertyValue = this.centerParameter(++i); +sbCommand.append(" center " + JU.Escape.eP(propertyValue)); +i = eval.iToken; +break; +case 1073742147: +case 1765808134: +idSeen = true; +if (tok == 1073742147) { +isSign = true; +sbCommand.append(" sign"); +this.addShapeProperty(propertyList, "sign", Boolean.TRUE); +} else { +if (this.tokAt(i + 1) == 1073741914) { +i++; +propertyName = "colorDensity"; +sbCommand.append(" color density"); +colorDensity = true; +if (this.isFloatParameter(i + 1)) { +var ptSize = this.floatParameter(++i); +sbCommand.append(" " + ptSize); +propertyValue = Float.$valueOf(ptSize); +}break; +}if (this.getToken(i + 1).tok == 4) { +colorScheme = this.paramAsStr(++i); +if (colorScheme.indexOf(" ") > 0) { +discreteColixes = JU.C.getColixArray(colorScheme); +if (discreteColixes == null) this.error(4); +}} else if (eval.theTok == 1073742018) { +i++; +sbCommand.append(" color mesh"); +color = eval.getArgbParam(++i); +this.addShapeProperty(propertyList, "meshcolor", Integer.$valueOf(color)); +sbCommand.append(" ").append(JU.Escape.escapeColor(color)); +i = eval.iToken; +continue; +}if ((eval.theTok = this.tokAt(i + 1)) == 603979967 || eval.theTok == 1073742074) { +sbCommand.append(" color"); +translucency = this.setColorOptions(sbCommand, i + 1, 24, -2); +i = eval.iToken; +continue; +}switch (this.tokAt(i + 1)) { +case 1073741826: +case 1073742114: +this.getToken(++i); +sbCommand.append(" color range"); +this.addShapeProperty(propertyList, "rangeAll", null); +if (this.tokAt(i + 1) == 1073742327) { +i++; +sbCommand.append(" all"); +continue; +}var min = this.floatParameter(++i); +var max = this.floatParameter(++i); +this.addShapeProperty(propertyList, "red", Float.$valueOf(min)); +this.addShapeProperty(propertyList, "blue", Float.$valueOf(max)); +sbCommand.append(" ").appendF(min).append(" ").appendF(max); +continue; +} +if (eval.isColorParam(i + 1)) { +color = eval.getArgbParam(i + 1); +if (this.tokAt(i + 2) == 1073742170) { +colorScheme = eval.getColorRange(i + 1); +i = eval.iToken; +break; +}}sbCommand.append(" color"); +}if (eval.isColorParam(i + 1)) { +color = eval.getArgbParam(++i); +sbCommand.append(" ").append(JU.Escape.escapeColor(color)); +i = eval.iToken; +this.addShapeProperty(propertyList, "colorRGB", Integer.$valueOf(color)); +idSeen = true; +if (eval.isColorParam(i + 1)) { +color = eval.getArgbParam(++i); +i = eval.iToken; +this.addShapeProperty(propertyList, "colorRGB", Integer.$valueOf(color)); +sbCommand.append(" ").append(JU.Escape.escapeColor(color)); +isBicolor = true; +} else if (isSign) { +this.invPO(); +}} else if (!isSign && discreteColixes == null && colorScheme == null) { +this.invPO(); +}continue; +case 134221829: +if (!isIsosurface) this.invArg(); +toCache = !this.chk; +continue; +case 1228935687: +if (this.tokAt(i + 1) != 4) this.invPO(); +continue; +case 1111492618: +case 1648363544: +sbCommand.append(" ").appendO(eval.theToken.value); +var rd = eval.encodeRadiusParameter(i, false, true); +if (rd == null) return; +sbCommand.append(" ").appendO(rd); +if (Float.isNaN(rd.value)) rd.value = 100; +propertyValue = rd; +propertyName = "radius"; +haveRadius = true; +if (isMapped) surfaceObjectSeen = false; +i = eval.iToken; +break; +case 1073741864: +isBest = true; +continue; +case 134217750: +planeSeen = true; +propertyName = "plane"; +propertyValue = eval.planeParameter(i, isBest); +i = eval.iToken; +sbCommand.append(" plane ").append(JU.Escape.eP4(propertyValue)); +break; +case 536875059: +propertyName = "scale"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" scale ").appendO(propertyValue); +break; +case 1073742327: +if (idSeen) this.invArg(); +propertyName = "thisID"; +break; +case 1112150020: +surfaceObjectSeen = true; +++i; +propertyValue = eval.getPoint4f(i); +propertyName = "ellipsoid"; +i = eval.iToken; +sbCommand.append(" ellipsoid ").append(JU.Escape.eP4(propertyValue)); +break; +case 134219777: +planeSeen = true; +propertyName = "plane"; +propertyValue = eval.hklParameter(++i, null, true); +i = eval.iToken; +sbCommand.append(" plane ").append(JU.Escape.eP4(propertyValue)); +break; +case 135182: +surfaceObjectSeen = true; +var lcaoType = this.paramAsStr(++i); +this.addShapeProperty(propertyList, "lcaoType", lcaoType); +sbCommand.append(" lcaocartoon ").append(JU.PT.esc(lcaoType)); +switch (this.getToken(++i).tok) { +case 12290: +case 10: +case 1073742325: +propertyName = "lcaoCartoon"; +bs = this.atomExpressionAt(i); +i = eval.iToken; +if (this.chk) continue; +var atomIndex = bs.nextSetBit(0); +if (atomIndex < 0) this.error(14); +sbCommand.append(" ({").appendI(atomIndex).append("})"); +modelIndex = this.vwr.ms.at[atomIndex].mi; +this.addShapeProperty(propertyList, "modelIndex", Integer.$valueOf(modelIndex)); +var axes = Clazz_newArray(-1, [ new JU.V3(), new JU.V3(), JU.V3.newV(this.vwr.ms.at[atomIndex]), new JU.V3()]); +if (!lcaoType.equalsIgnoreCase("s") && this.vwr.getHybridizationAndAxes(atomIndex, axes[0], axes[1], lcaoType) == null) return; +propertyValue = axes; +break; +default: +this.error(14); +} +break; +case 1073877011: +nbotype = this.paramAsStr(++i).toUpperCase(); +sbCommand.append(" nbo ").append(nbotype).append(" "); +case 1073877010: +if (nbotype == null) sbCommand.append(" mo "); +var moNumber = 2147483647; +var offset = 2147483647; +var isNegOffset = (this.tokAt(i + 1) == 268440576); +if (isNegOffset) i++; +var linearCombination = null; +switch (this.tokAt(++i)) { +case 0: +eval.bad(); +break; +case 1073741914: +sbCommand.append("[1] squared "); +this.addShapeProperty(propertyList, "squareLinear", Boolean.TRUE); +linearCombination = Clazz_newFloatArray(-1, [1]); +offset = moNumber = 0; +i++; +break; +case 1073741973: +case 1073742008: +offset = this.moOffset(i); +moNumber = 0; +i = eval.iToken; +sbCommand.append((isNegOffset ? "-" : "") + "HOMO "); +if (offset > 0) sbCommand.append("+"); +if (offset != 0) sbCommand.appendI(offset); +break; +case 2: +moNumber = this.intParameter(i); +sbCommand.appendI(moNumber); +if (this.tokAt(i + 1) == 1073741865) { +isBeta = true; +i++; +}break; +default: +if (eval.isArrayParameter(i)) { +linearCombination = eval.floatParameterSet(i, 1, 2147483647); +i = eval.iToken; +}} +var squared = (this.tokAt(i + 1) == 1073742156); +if (squared) { +this.addShapeProperty(propertyList, "squareLinear", Boolean.TRUE); +sbCommand.append(" squared"); +if (linearCombination == null) linearCombination = Clazz_newFloatArray (0, 0); +} else if (this.tokAt(i + 1) == 134217751) { +++i; +var monteCarloCount = this.intParameter(++i); +var seed = (this.tokAt(i + 1) == 2 ? this.intParameter(++i) : (-System.currentTimeMillis()) % 10000); +this.addShapeProperty(propertyList, "monteCarloCount", Integer.$valueOf(monteCarloCount)); +this.addShapeProperty(propertyList, "randomSeed", Integer.$valueOf(seed)); +sbCommand.append(" points ").appendI(monteCarloCount).appendC(' ').appendI(seed); +}this.setMoData(propertyList, moNumber, linearCombination, offset, isNegOffset, modelIndex, null, nbotype, isBeta); +surfaceObjectSeen = true; +continue; +case 1073742036: +propertyName = "nci"; +sbCommand.append(" " + propertyName); +tok = this.tokAt(i + 1); +var isPromolecular = (tok != 1228935687 && tok != 4 && tok != 1073742032); +propertyValue = Boolean.$valueOf(isPromolecular); +if (isPromolecular) surfaceObjectSeen = true; +break; +case 1073742016: +case 1073742022: +var isMep = (tok == 1073742016); +propertyName = (isMep ? "mep" : "mlp"); +sbCommand.append(" " + propertyName); +var fname = null; +var calcType = -1; +surfaceObjectSeen = true; +if (this.tokAt(i + 1) == 2) { +calcType = this.intParameter(++i); +sbCommand.append(" " + calcType); +this.addShapeProperty(propertyList, "mepCalcType", Integer.$valueOf(calcType)); +}if (this.tokAt(i + 1) == 4) { +fname = this.stringParameter(++i); +sbCommand.append(" /*file*/" + JU.PT.esc(fname)); +} else if (this.tokAt(i + 1) == 1715472409) { +mepOrMlp = propertyName; +continue; +}if (!this.chk) try { +data = (fname == null && isMep ? this.vwr.getOrCalcPartialCharges(bsSelect, bsIgnore) : this.getAtomicPotentials(bsSelect, bsIgnore, fname)); +} catch (e1) { +if (Clazz_exceptionOf(e1,"JV.JmolAsyncException")){ +throw new JS.ScriptInterruption(this.e, "partialcharge", 1); +} else { +throw e1; +} +} +if (!this.chk && data == null) this.error(32); +propertyValue = data; +break; +case 1312817669: +doCalcVolume = !this.chk; +sbCommand.append(" volume"); +break; +case 1073741974: +this.setShapeId(iShape, ++i, idSeen); +isWild = (this.getShapeProperty(iShape, "ID") == null); +i = eval.iToken; +break; +case 1073741888: +if (this.tokAt(i + 1) == 603979967) { +isColorSchemeTranslucent = true; +i++; +}colorScheme = this.paramAsStr(++i).toLowerCase(); +if (colorScheme.equals("sets")) { +sbCommand.append(" colorScheme \"sets\""); +} else if (eval.isColorParam(i)) { +colorScheme = eval.getColorRange(i); +i = eval.iToken; +}break; +case 1073741828: +propertyName = "addHydrogens"; +propertyValue = Boolean.TRUE; +sbCommand.append(" addHydrogens"); +break; +case 1073741836: +propertyName = "angstroms"; +sbCommand.append(" angstroms"); +break; +case 1073741837: +propertyName = "anisotropy"; +propertyValue = this.getPoint3f(++i, false); +sbCommand.append(" anisotropy").append(JU.Escape.eP(propertyValue)); +i = eval.iToken; +break; +case 1073741842: +doCalcArea = !this.chk; +sbCommand.append(" area"); +break; +case 1073741850: +case 1073742076: +surfaceObjectSeen = true; +if (isBicolor && !isPhased) { +sbCommand.append(" phase \"_orb\""); +this.addShapeProperty(propertyList, "phase", "_orb"); +}var nlmZprs = Clazz_newFloatArray (7, 0); +nlmZprs[0] = this.intParameter(++i); +nlmZprs[1] = this.intParameter(++i); +nlmZprs[2] = this.intParameter(++i); +nlmZprs[3] = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 6); +sbCommand.append(" atomicOrbital ").appendI(Clazz_floatToInt(nlmZprs[0])).append(" ").appendI(Clazz_floatToInt(nlmZprs[1])).append(" ").appendI(Clazz_floatToInt(nlmZprs[2])).append(" ").appendF(nlmZprs[3]); +if (this.tokAt(i + 1) == 134217751) { +i += 2; +nlmZprs[4] = this.intParameter(i); +nlmZprs[5] = (this.tokAt(i + 1) == 3 ? this.floatParameter(++i) : 0); +nlmZprs[6] = (this.tokAt(i + 1) == 2 ? this.intParameter(++i) : (-System.currentTimeMillis()) % 10000); +sbCommand.append(" points ").appendI(Clazz_floatToInt(nlmZprs[4])).appendC(' ').appendF(nlmZprs[5]).appendC(' ').appendI(Clazz_floatToInt(nlmZprs[6])); +}propertyName = "hydrogenOrbital"; +propertyValue = nlmZprs; +break; +case 1073741866: +sbCommand.append(" binary"); +continue; +case 1073741868: +sbCommand.append(" blockData"); +propertyName = "blockData"; +propertyValue = Boolean.TRUE; +break; +case 1073741875: +case 554176565: +haveSlab = true; +propertyName = eval.theToken.value; +propertyValue = this.getCapSlabObject(i, false); +i = eval.iToken; +break; +case 1073741876: +if (!isIsosurface) this.invArg(); +isCavity = true; +var cavityRadius = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 1.2); +var envelopeRadius = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 10); +if (this.chk) continue; +if (envelopeRadius > 50) { +eval.integerOutOfRange(0, 50); +return; +}sbCommand.append(" cavity ").appendF(cavityRadius).append(" ").appendF(envelopeRadius); +this.addShapeProperty(propertyList, "envelopeRadius", Float.$valueOf(envelopeRadius)); +this.addShapeProperty(propertyList, "cavityRadius", Float.$valueOf(cavityRadius)); +propertyName = "cavity"; +break; +case 1073741896: +case 1073741900: +propertyName = "contour"; +sbCommand.append(" contour"); +switch (this.tokAt(i + 1)) { +case 1073741920: +propertyValue = eval.floatParameterSet(i + 2, 1, 2147483647); +sbCommand.append(" discrete ").append(JU.Escape.eAF(propertyValue)); +i = eval.iToken; +break; +case 1073741981: +pt = this.getPoint3f(i + 2, false); +if (pt.z <= 0 || pt.y < pt.x) this.invArg(); +if (pt.z == Clazz_floatToInt(pt.z) && pt.z > (pt.y - pt.x)) pt.z = (pt.y - pt.x) / pt.z; +propertyValue = pt; +i = eval.iToken; +sbCommand.append(" increment ").append(JU.Escape.eP(pt)); +break; +default: +propertyValue = Integer.$valueOf(this.tokAt(i + 1) == 2 ? this.intParameter(++i) : 0); +sbCommand.append(" ").appendO(propertyValue); +if (this.tokAt(i + 1) == 2) { +this.addShapeProperty(propertyList, propertyName, propertyValue); +propertyValue = Integer.$valueOf(-Math.abs(this.intParameter(++i))); +sbCommand.append(" ").appendO(propertyValue); +}} +break; +case 1073741910: +sbCommand.append(" cutoff "); +if (this.tokAt(++i) == 268440577) { +propertyName = "cutoffPositive"; +propertyValue = Float.$valueOf(cutoff = this.floatParameter(++i)); +sbCommand.append("+").appendO(propertyValue); +} else if (this.isFloatParameter(i)) { +propertyName = "cutoff"; +propertyValue = Float.$valueOf(cutoff = this.floatParameter(i)); +sbCommand.appendO(propertyValue); +} else if (colorDensity) { +propertyName = "cutoffRange"; +propertyValue = eval.floatParameterSet(i, 2, 2); +this.addShapeProperty(propertyList, "cutoff", Float.$valueOf(0)); +sbCommand.append(JU.Escape.eAF(propertyValue)); +i = eval.iToken; +} else { +this.invArg(); +}break; +case 1073741928: +propertyName = "downsample"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +sbCommand.append(" downsample ").appendO(propertyValue); +break; +case 1073741931: +propertyName = "eccentricity"; +propertyValue = eval.getPoint4f(++i); +sbCommand.append(" eccentricity ").append(JU.Escape.eP4(propertyValue)); +i = eval.iToken; +break; +case 1073741932: +sbCommand.append(" ed"); +this.setMoData(propertyList, -1, null, 0, false, modelIndex, null, null, false); +surfaceObjectSeen = true; +continue; +case 536870916: +case 1073742041: +sbCommand.append(" ").appendO(eval.theToken.value); +propertyName = "debug"; +propertyValue = (tok == 536870916 ? Boolean.TRUE : Boolean.FALSE); +break; +case 12293: +sbCommand.append(" fixed"); +propertyName = "fixed"; +propertyValue = Boolean.TRUE; +break; +case 1073741962: +sbCommand.append(" fullPlane"); +propertyName = "fullPlane"; +propertyValue = Boolean.TRUE; +break; +case 1073741966: +case 1073741968: +var isFxyz = (tok == 1073741968); +propertyName = "" + eval.theToken.value; +var vxy = new JU.Lst(); +propertyValue = vxy; +isFxy = surfaceObjectSeen = true; +sbCommand.append(" ").append(propertyName); +var name = this.paramAsStr(++i); +if (name.equals("=")) { +sbCommand.append(" ="); +name = this.paramAsStr(++i); +sbCommand.append(" ").append(JU.PT.esc(name)); +vxy.addLast(name); +if (!this.chk) this.addShapeProperty(propertyList, "func", this.createFunction("__iso__", "x,y,z", name)); +break; +}var dName = JU.PT.getQuotedAttribute(eval.fullCommand, "# DATA" + (isFxy ? "2" : "")); +if (dName == null) dName = "inline"; + else name = dName; +var isXYZ = (name.indexOf("data2d_") == 0); +var isXYZV = (name.indexOf("data3d_") == 0); +isInline = name.equals("inline"); +sbCommand.append(" inline"); +vxy.addLast(name); +var pt3 = this.getPoint3f(++i, false); +sbCommand.append(" ").append(JU.Escape.eP(pt3)); +vxy.addLast(pt3); +var pt4; +ptX = ++eval.iToken; +vxy.addLast(pt4 = eval.getPoint4f(ptX)); +sbCommand.append(" ").append(JU.Escape.eP4(pt4)); +nX = Clazz_floatToInt(pt4.x); +ptY = ++eval.iToken; +vxy.addLast(pt4 = eval.getPoint4f(ptY)); +sbCommand.append(" ").append(JU.Escape.eP4(pt4)); +nY = Clazz_floatToInt(pt4.x); +vxy.addLast(pt4 = eval.getPoint4f(++eval.iToken)); +sbCommand.append(" ").append(JU.Escape.eP4(pt4)); +nZ = Clazz_floatToInt(pt4.x); +if (nX == 0 || nY == 0 || nZ == 0) this.invArg(); +if (!this.chk) { +var fdata = null; +var xyzdata = null; +if (isFxyz) { +if (isInline) { +nX = Math.abs(nX); +nY = Math.abs(nY); +nZ = Math.abs(nZ); +xyzdata = this.floatArraySetXYZ(++eval.iToken, nX, nY, nZ); +} else if (isXYZV) { +xyzdata = this.vwr.getDataObj(name, null, 3); +} else { +xyzdata = this.vwr.functionXYZ(name, nX, nY, nZ); +}nX = Math.abs(nX); +nY = Math.abs(nY); +nZ = Math.abs(nZ); +if (xyzdata == null) { +eval.iToken = ptX; +eval.errorStr(53, "xyzdata is null."); +}if (xyzdata.length != nX || xyzdata[0].length != nY || xyzdata[0][0].length != nZ) { +eval.iToken = ptX; +eval.errorStr(53, "xyzdata[" + xyzdata.length + "][" + xyzdata[0].length + "][" + xyzdata[0][0].length + "] is not of size [" + nX + "][" + nY + "][" + nZ + "]"); +}vxy.addLast(xyzdata); +sbCommand.append(" ").append(JU.Escape.e(xyzdata)); +} else { +if (isInline) { +nX = Math.abs(nX); +nY = Math.abs(nY); +fdata = this.floatArraySet(++eval.iToken, nX, nY); +} else if (isXYZ) { +fdata = this.vwr.getDataObj(name, null, 2); +nX = (fdata == null ? 0 : fdata.length); +nY = 3; +} else { +fdata = this.vwr.functionXY(name, nX, nY); +nX = Math.abs(nX); +nY = Math.abs(nY); +}if (fdata == null) { +eval.iToken = ptX; +eval.errorStr(53, "fdata is null."); +}if (fdata.length != nX && !isXYZ) { +eval.iToken = ptX; +eval.errorStr(53, "fdata length is not correct: " + fdata.length + " " + nX + "."); +}for (var j = 0; j < nX; j++) { +if (fdata[j] == null) { +eval.iToken = ptY; +eval.errorStr(53, "fdata[" + j + "] is null."); +}if (fdata[j].length != nY) { +eval.iToken = ptY; +eval.errorStr(53, "fdata[" + j + "] is not the right length: " + fdata[j].length + " " + nY + "."); +}} +vxy.addLast(fdata); +sbCommand.append(" ").append(JU.Escape.e(fdata)); +}}i = eval.iToken; +break; +case 1073742188: +var isBS = this.e.isAtomExpression(++i); +var probes = this.getAllPoints(i, 1); +sbCommand.append(" value " + (isBS ? this.e.atomExpressionAt(i).toString() : JU.Escape.eAP(probes))); +propertyName = "probes"; +propertyValue = probes; +i = this.e.iToken; +break; +case 1073741970: +propertyName = "gridPoints"; +sbCommand.append(" gridPoints"); +break; +case 1073741976: +propertyName = "ignore"; +propertyValue = bsIgnore = this.atomExpressionAt(++i); +sbCommand.append(" ignore ").append(JU.Escape.eBS(bsIgnore)); +i = eval.iToken; +break; +case 1073741985: +propertyName = "insideOut"; +sbCommand.append(" insideout"); +break; +case 1073741988: +case 1073741986: +case 1073742100: +sbCommand.append(" ").appendO(eval.theToken.value); +propertyName = "pocket"; +propertyValue = (tok == 1073742100 ? Boolean.TRUE : Boolean.FALSE); +break; +case 1073742002: +propertyName = "lobe"; +propertyValue = eval.getPoint4f(++i); +i = eval.iToken; +sbCommand.append(" lobe ").append(JU.Escape.eP4(propertyValue)); +surfaceObjectSeen = true; +break; +case 1073742004: +case 1073742006: +propertyName = "lp"; +propertyValue = eval.getPoint4f(++i); +i = eval.iToken; +sbCommand.append(" lp ").append(JU.Escape.eP4(propertyValue)); +surfaceObjectSeen = true; +break; +case 4125: +if (isMapped || this.slen == i + 1) this.invArg(); +isMapped = true; +if ((isCavity || haveRadius || haveIntersection) && !surfaceObjectSeen) { +surfaceObjectSeen = true; +this.addShapeProperty(propertyList, "bsSolvent", (haveRadius || haveIntersection ? new JU.BS() : eval.lookupIdentifierValue("solvent"))); +this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +}if (sbCommand.length() == 0) { +plane = this.getShapeProperty(24, "plane"); +if (plane == null) { +if (this.getShapeProperty(24, "contours") != null) { +this.addShapeProperty(propertyList, "nocontour", null); +}} else { +this.addShapeProperty(propertyList, "plane", plane); +sbCommand.append("plane ").append(JU.Escape.eP4(plane)); +planeSeen = true; +plane = null; +}} else if (!surfaceObjectSeen && !planeSeen) { +this.invArg(); +}sbCommand.append("; isosurface map"); +this.addShapeProperty(propertyList, "map", (surfaceObjectSeen ? Boolean.TRUE : Boolean.FALSE)); +break; +case 1073742014: +propertyName = "maxset"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +sbCommand.append(" maxSet ").appendO(propertyValue); +break; +case 1073742020: +propertyName = "minset"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +sbCommand.append(" minSet ").appendO(propertyValue); +break; +case 1073742112: +surfaceObjectSeen = true; +propertyName = "rad"; +propertyValue = eval.getPoint4f(++i); +i = eval.iToken; +sbCommand.append(" radical ").append(JU.Escape.eP4(propertyValue)); +break; +case 1073742027: +propertyName = "fixed"; +propertyValue = Boolean.FALSE; +sbCommand.append(" modelBased"); +break; +case 1073742028: +case 1073742135: +case 1612709912: +onlyOneModel = eval.theToken.value; +var radius; +if (tok == 1073742028) { +propertyName = "molecular"; +sbCommand.append(" molecular"); +radius = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : 1.4); +} else { +this.addShapeProperty(propertyList, "bsSolvent", eval.lookupIdentifierValue("solvent")); +propertyName = (tok == 1073742135 ? "sasurface" : "solvent"); +sbCommand.append(" ").appendO(eval.theToken.value); +radius = (this.isFloatParameter(i + 1) ? this.floatParameter(++i) : this.vwr.getFloat(570425394)); +}sbCommand.append(" ").appendF(radius); +propertyValue = Float.$valueOf(radius); +if (this.tokAt(i + 1) == 1073741961) { +this.addShapeProperty(propertyList, "doFullMolecular", null); +sbCommand.append(" full"); +i++; +}surfaceObjectSeen = true; +break; +case 1073742032: +this.addShapeProperty(propertyList, "fileType", "Mrc"); +sbCommand.append(" mrc"); +continue; +case 1140850696: +var s = eval.stringParameter(++i); +this.addShapeProperty(propertyList, "fileType", s); +sbCommand.append(" type \"" + s + "\""); +continue; +case 1073742064: +case 1073742062: +this.addShapeProperty(propertyList, "fileType", "Obj"); +sbCommand.append(" obj"); +continue; +case 1073742033: +this.addShapeProperty(propertyList, "fileType", "Msms"); +sbCommand.append(" msms"); +continue; +case 1073742094: +if (surfaceObjectSeen) this.invArg(); +propertyName = "phase"; +isPhased = true; +propertyValue = (this.tokAt(i + 1) == 4 ? this.stringParameter(++i) : "_orb"); +sbCommand.append(" phase ").append(JU.PT.esc(propertyValue)); +break; +case 1073742104: +case 1073742122: +propertyName = "resolution"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" resolution ").appendO(propertyValue); +break; +case 1073742124: +propertyName = "reverseColor"; +propertyValue = Boolean.TRUE; +sbCommand.append(" reversecolor"); +break; +case 1073742127: +case 1073742146: +propertyName = "sigma"; +propertyValue = Float.$valueOf(sigma = this.floatParameter(++i)); +sbCommand.append(" sigma ").appendO(propertyValue); +break; +case 1112150021: +propertyName = "geodesic"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" geosurface ").appendO(propertyValue); +surfaceObjectSeen = true; +break; +case 1073742154: +propertyName = "sphere"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" sphere ").appendO(propertyValue); +surfaceObjectSeen = true; +break; +case 1073742156: +propertyName = "squareData"; +propertyValue = Boolean.TRUE; +sbCommand.append(" squared"); +break; +case 1073741984: +propertyName = (!surfaceObjectSeen && !planeSeen && !isMapped ? "readFile" : "mapColor"); +str = this.stringParameter(++i); +if (str == null) this.invArg(); +if (isPmesh) str = JU.PT.replaceWithCharacter(str, "{,}|", ' '); +if (eval.debugHigh) JU.Logger.debug("pmesh inline data:\n" + str); +propertyValue = (this.chk ? null : str); +this.addShapeProperty(propertyList, "fileName", ""); +sbCommand.append(" INLINE ").append(JU.PT.esc(str)); +surfaceObjectSeen = true; +break; +case 268437504: +case 1073742195: +case 7: +if (filesData != null || isWild) this.invArg(); +var list = eval.listParameter4(i, 2, 2147483647, true); +i = eval.iToken; +var n = Clazz_doubleToInt(list.size() / 2); +if (n == 0 || n * 2 != list.size()) this.invArg(); +var files = new Array(n); +var factors = Clazz_newFloatArray (n, 0); +sbCommand.append("["); +try { +for (var j = 0, ptf = 0; j < n; j++) { +factors[j] = (list.get(ptf++)).floatValue(); +files[j] = this.e.checkFileExists("ISOSURFACE_" + j + "_", false, list.get(ptf++), i, false); +sbCommand.appendF(factors[j]); +sbCommand.append(" /*file*/").append(JU.PT.esc(files[j])); +} +sbCommand.append("]"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.invArg(); +} else { +throw e; +} +} +filesData = Clazz_newArray(-1, [files, factors]); +propertyName = (!surfaceObjectSeen && !planeSeen && !isMapped ? "readFile" : "mapColor"); +surfaceObjectSeen = true; +if (this.chk) break; +this.addShapeProperty(propertyList, "filesData", filesData); +break; +case 545259556: +case 545259557: +case 1073741914: +case 4: +var firstPass = (!surfaceObjectSeen && !planeSeen); +var filename = null; +propertyName = (firstPass && !isMapped ? "readFile" : "mapColor"); +if (tok == 4) { +filename = this.paramAsStr(i); +var ipt = filename.indexOf("::"); +if (ipt > 0) { +var ftype = filename.substring(0, ipt); +ftype = ftype.substring(0, 1).toUpperCase() + ftype.substring(1).toLowerCase(); +this.addShapeProperty(propertyList, "fileType", ftype); +filename = filename.substring(ipt + 2); +}} else if (tok == 1073741914) { +filename = "=density/"; +}if (filename == null || filename.length == 0 || filename.equals("*") || filename.equals("=")) { +var pdbID = this.vwr.getPdbID(); +if (pdbID == null) eval.errorStr(22, "no PDBID available"); +filename = "*" + (tok == 545259557 ? "*" : "") + pdbID; +}var checkWithin = false; +if (filename.startsWith("http://eds.bmc.uu.se/eds/dfs/cb/") && filename.endsWith(".omap")) { +filename = (filename.indexOf("_diff") >= 0 ? "*" : "") + "*" + filename.substring(32, 36); +}if (filename.startsWith("*") || filename.startsWith("=")) { +var haveCutoff = (!Float.isNaN(cutoff) || !Float.isNaN(sigma)); +var isFull = (filename.indexOf("/full") >= 0); +if (isFull) filename = JU.PT.rep(filename, "/full", ""); +if (filename.indexOf("/diff") >= 0) filename = "*" + filename.substring(0, filename.indexOf("/diff")); +if (filename.startsWith("**")) { +if (!haveCutoff) this.addShapeProperty(propertyList, "sigma", Float.$valueOf(sigma = 3)); +if (!isSign) { +isSign = true; +sbCommand.append(" sign"); +this.addShapeProperty(propertyList, "sign", Boolean.TRUE); +}}var fn = filename; +filename = this.vwr.setLoadFormat(false, filename, (this.chk ? '?' : isFull ? '_' : '-'), false); +if (filename == null) eval.errorStr(22, "error parsing filename: " + fn); +checkWithin = !isFull; +}if (checkWithin) { +if (pts == null && ptWithin == 0) { +onlyOneModel = filename; +if (modelIndex < 0) modelIndex = this.vwr.am.cmi; +bs = this.vwr.getModelUndeletedAtomsBitSet(modelIndex); +if (bs.nextSetBit(0) >= 0) { +pts = this.getWithinDistanceVector(propertyList, 2.0, null, bs, false); +sbCommand.append(" within 2.0 ").append(JU.Escape.eBS(bs)); +}}if (pts != null && filename.indexOf("/0,0,0/0,0,0?") >= 0) { +filename = filename.$replace("0,0,0/0,0,0", pts[0].x + "," + pts[0].y + "," + pts[0].z + "/" + pts[pts.length - 1].x + "," + pts[pts.length - 1].y + "," + pts[pts.length - 1].z); +}if (firstPass) defaultMesh = true; +}var p = (filename == null ? -1 : filename.indexOf("#-")); +if (Float.isNaN(sigma) && Float.isNaN(cutoff)) { +if ((p = filename.indexOf("#-cutoff=")) >= 0) { +this.addShapeProperty(propertyList, "cutoff", Float.$valueOf(cutoff = Float.parseFloat(filename.substring(p + 9)))); +sbCommand.append(" cutoff " + cutoff); +} else if ((p = filename.indexOf("#-sigma=")) >= 0) { +this.addShapeProperty(propertyList, "sigma", Float.$valueOf(sigma = Float.parseFloat(filename.substring(p + 8)))); +sbCommand.append(" sigma " + sigma); +}}if (!Float.isNaN(sigma)) this.showString("using sigma = " + sigma); + else if (!Float.isNaN(cutoff)) this.showString("using cutoff = " + cutoff); +if (firstPass && this.vwr.getP("_fileType").equals("Pdb") && Float.isNaN(sigma) && Float.isNaN(cutoff)) { +this.addShapeProperty(propertyList, "sigma", Float.$valueOf(-1)); +sbCommand.append(" sigma -1.0"); +}if (filename.length == 0) { +if (modelIndex < 0) modelIndex = this.vwr.am.cmi; +filename = eval.getFullPathName(false); +propertyValue = this.vwr.ms.getInfo(modelIndex, "jmolSurfaceInfo"); +}var fileIndex = -1; +if (propertyValue == null && this.tokAt(i + 1) == 2) this.addShapeProperty(propertyList, "fileIndex", Integer.$valueOf(fileIndex = this.intParameter(++i))); +var stype = (this.tokAt(i + 1) == 4 ? this.stringParameter(++i) : null); +surfaceObjectSeen = true; +if (this.chk) { +break; +}var fullPathNameOrError; +var localName = null; +if (propertyValue == null) { +if (eval.fullCommand.indexOf("# FILE" + nFiles + "=") >= 0) { +filename = JU.PT.getQuotedAttribute(eval.fullCommand, "# FILE" + nFiles); +if (this.tokAt(i + 1) == 1073741848) i += 2; +} else if (this.tokAt(i + 1) == 1073741848) { +localName = this.vwr.fm.getFilePath(this.stringParameter(eval.iToken = (i = i + 2)), false, false); +fullPathNameOrError = this.vwr.getFullPathNameOrError(localName); +localName = fullPathNameOrError[0]; +if (this.vwr.fm.getPathForAllFiles() !== "") { +filename = localName; +localName = null; +} else { +this.addShapeProperty(propertyList, "localName", localName); +}}}if (stype == null) { +filename = this.e.checkFileExists("ISOSURFACE_" + (isMapped ? "MAP_" : ""), false, filename, i, false); +}this.showString("reading isosurface data from " + filename); +if (stype != null) { +propertyValue = this.vwr.fm.cacheGet(filename, false); +this.addShapeProperty(propertyList, "calculationType", stype); +}if (propertyValue == null) { +this.addShapeProperty(propertyList, "fileName", filename); +if (localName != null) filename = localName; +if (fileIndex >= 0) sbCommand.append(" ").appendI(fileIndex); +}sbCommand.append(" /*file*/").append(JU.PT.esc(filename)); +if (stype != null) sbCommand.append(" ").append(JU.PT.esc(stype)); +break; +case 4106: +propertyName = "connections"; +switch (this.tokAt(++i)) { +case 12290: +case 10: +case 1073742325: +propertyValue = Clazz_newIntArray(-1, [this.atomExpressionAt(i).nextSetBit(0)]); +break; +default: +propertyValue = Clazz_newIntArray(-1, [Clazz_floatToInt(eval.floatParameterSet(i, 1, 1)[0])]); +break; +} +i = eval.iToken; +break; +case 1094713347: +propertyName = "atomIndex"; +propertyValue = Integer.$valueOf(this.intParameter(++i)); +break; +case 1073741999: +propertyName = "link"; +sbCommand.append(" link"); +break; +case 1814695966: +if (iShape != 24) this.invArg(); +if (this.tokAt(i + 1) == 268440577) i++; +propertyName = "extendGrid"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +sbCommand.append(" unitcell " + propertyValue); +break; +case 1073741994: +if (iShape != 24) this.invArg(); +pt = this.getPoint3f(++i, false); +i = eval.iToken; +if (pt.x <= 0 || pt.y <= 0 || pt.z <= 0) break; +pt.x = Clazz_floatToInt(pt.x); +pt.y = Clazz_floatToInt(pt.y); +pt.z = Clazz_floatToInt(pt.z); +sbCommand.append(" lattice ").append(JU.Escape.eP(pt)); +if (isMapped) { +propertyName = "mapLattice"; +propertyValue = pt; +} else { +lattice = pt; +if (this.tokAt(i + 1) == 12293) { +sbCommand.append(" fixed"); +fixLattice = true; +i++; +}}break; +default: +if (tok == 1073741824) { +propertyName = "thisID"; +propertyValue = str; +}if (!eval.setMeshDisplayProperty(iShape, 0, tok)) { +if (JS.T.tokAttr(tok, 1073741824) && !idSeen) { +this.setShapeId(iShape, i, idSeen); +i = eval.iToken; +break; +}this.invArg(); +}if (iptDisplayProperty == 0) iptDisplayProperty = i; +i = this.slen - 1; +break; +} +idSeen = (tok != 12291); +if (isWild && surfaceObjectSeen) this.invArg(); +if (propertyName != null) this.addShapeProperty(propertyList, propertyName, propertyValue); +} +if (!this.chk) { +if ((isCavity || haveRadius) && !surfaceObjectSeen) { +surfaceObjectSeen = true; +this.addShapeProperty(propertyList, "bsSolvent", (haveRadius ? new JU.BS() : eval.lookupIdentifierValue("solvent"))); +this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +}if (planeSeen && !surfaceObjectSeen && !isMapped) { +this.addShapeProperty(propertyList, "nomap", Float.$valueOf(0)); +surfaceObjectSeen = true; +}if (thisSet != null) this.addShapeProperty(propertyList, "getSurfaceSets", thisSet); +if (discreteColixes != null) { +this.addShapeProperty(propertyList, "colorDiscrete", discreteColixes); +} else if ("sets".equals(colorScheme)) { +this.addShapeProperty(propertyList, "setColorScheme", null); +} else if (colorScheme != null) { +var ce = this.vwr.cm.getColorEncoder(colorScheme); +if (ce != null) { +ce.isTranslucent = isColorSchemeTranslucent; +ce.hi = 3.4028235E38; +this.addShapeProperty(propertyList, "remapColor", ce); +}}if (surfaceObjectSeen && !isLcaoCartoon && sbCommand.indexOf(";") != 0) { +propertyList.add(0, Clazz_newArray(-1, ["newObject", null])); +var needSelect = (bsSelect == null); +if (needSelect) bsSelect = JU.BSUtil.copy(this.vwr.bsA()); +if (modelIndex < 0) modelIndex = this.vwr.am.cmi; +bsSelect.and(this.vwr.getModelUndeletedAtomsBitSet(modelIndex)); +if (onlyOneModel != null) { +var bsModels = this.vwr.ms.getModelBS(bsSelect, false); +if (bsModels.cardinality() > 1) eval.errorStr(30, "ISOSURFACE " + onlyOneModel); +if (needSelect) { +propertyList.add(0, Clazz_newArray(-1, ["select", bsSelect])); +if (sbCommand.indexOf("; isosurface map") == 0) { +sbCommand = new JU.SB().append("; isosurface map select ").append(JU.Escape.eBS(bsSelect)).append(sbCommand.substring(16)); +}}}}if (haveIntersection && !haveSlab) { +if (!surfaceObjectSeen) this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +if (!isMapped) { +this.addShapeProperty(propertyList, "map", Boolean.TRUE); +this.addShapeProperty(propertyList, "select", bs); +this.addShapeProperty(propertyList, "sasurface", Float.$valueOf(0)); +}this.addShapeProperty(propertyList, "slab", this.getCapSlabObject(-100, false)); +}var timeMsg = (surfaceObjectSeen && this.vwr.getBoolean(603979934)); +if (timeMsg) JU.Logger.startTimer("isosurface"); +this.setShapeProperty(iShape, "setProperties", propertyList); +if (timeMsg) this.showString(JU.Logger.getTimerMsg("isosurface", 0)); +if (defaultMesh) { +this.setShapeProperty(iShape, "token", Integer.$valueOf(1073742018)); +this.setShapeProperty(iShape, "token", Integer.$valueOf(1073742046)); +isFrontOnly = true; +sbCommand.append(" mesh nofill frontOnly"); +}}if (lattice != null) { +this.setShapeProperty(iShape, "lattice", lattice); +if (fixLattice) this.setShapeProperty(iShape, "fixLattice", Boolean.TRUE); +}if (symops != null) this.setShapeProperty(iShape, "symops", symops); +if (isFrontOnly) this.setShapeProperty(iShape, "token", Integer.$valueOf(1073741960)); +if (iptDisplayProperty > 0) { +if (!eval.setMeshDisplayProperty(iShape, iptDisplayProperty, 0)) this.invArg(); +}if (this.chk) return; +var area = null; +var volume = null; +if (doCalcArea) { +area = this.getShapeProperty(iShape, "area"); +if (Clazz_instanceOf(area, Float)) this.vwr.setFloatProperty("isosurfaceArea", (area).floatValue()); + else this.vwr.g.setUserVariable("isosurfaceArea", JS.SV.getVariableAD(area)); +}if (doCalcVolume) { +volume = (doCalcVolume ? this.getShapeProperty(iShape, "volume") : null); +if (Clazz_instanceOf(volume, Float)) this.vwr.setFloatProperty("isosurfaceVolume", (volume).floatValue()); + else this.vwr.g.setUserVariable("isosurfaceVolume", JS.SV.getVariableAD(volume)); +}if (!isLcaoCartoon) { +var s = null; +if (isMapped && !surfaceObjectSeen) { +this.setShapeProperty(iShape, "finalize", sbCommand.toString()); +} else if (surfaceObjectSeen) { +cmd = sbCommand.toString(); +this.setShapeProperty(iShape, "finalize", (cmd.indexOf("; isosurface map") == 0 ? "" : " select " + JU.Escape.eBS(bsSelect) + " ") + cmd); +s = this.getShapeProperty(iShape, "ID"); +if (s != null && !eval.tQuiet && !isSilent) { +cutoff = (this.getShapeProperty(iShape, "cutoff")).floatValue(); +if (Float.isNaN(cutoff) && !Float.isNaN(sigma)) JU.Logger.error("sigma not supported"); +s += " created " + this.getShapeProperty(iShape, "message"); +}}var sarea; +var svol; +if (doCalcArea || doCalcVolume) { +sarea = (doCalcArea ? "isosurfaceArea = " + (Clazz_instanceOf(area, Float) ? "" + area : JU.Escape.eAD(area)) : null); +svol = (doCalcVolume ? "isosurfaceVolume = " + (Clazz_instanceOf(volume, Float) ? "" + volume : JU.Escape.eAD(volume)) : null); +if (s == null) { +if (doCalcArea) this.showString(sarea); +if (doCalcVolume) this.showString(svol); +} else { +if (doCalcArea) s += "\n" + sarea; +if (doCalcVolume) s += "\n" + svol; +}}if (s != null && !isSilent) this.showString(s); +if (surfaceObjectSeen) { +s = this.getShapeProperty(iShape, "output"); +if (s != null && !isSilent) this.showString(s); +}}if (translucency != null) this.setShapeProperty(iShape, "translucency", translucency); +this.setShapeProperty(iShape, "clear", null); +if (toCache) this.setShapeProperty(iShape, "cache", null); +if (!isSilent && !isDisplay && !haveSlab && eval.theTok != 12291) this.listIsosurface(iShape); +}, "~N"); +Clazz_defineMethod(c$, "lcaoCartoon", +function(){ +var eval = this.e; +eval.sm.loadShape(26); +if (eval.tokAt(1) == 1073742001 && this.listIsosurface(26)) return; +this.setShapeProperty(26, "init", eval.fullCommand); +if (this.slen == 1) { +this.setShapeProperty(26, "lcaoID", null); +return; +}var idSeen = false; +var translucency = null; +for (var i = 1; i < this.slen; i++) { +var propertyName = null; +var propertyValue = null; +switch (this.getToken(i).tok) { +case 1073741875: +case 554176565: +propertyName = eval.theToken.value; +if (this.tokAt(i + 1) == 1073742334) eval.iToken = i + 1; +propertyValue = this.getCapSlabObject(i, true); +i = eval.iToken; +break; +case 12289: +this.isosurface(26); +return; +case 528432: +var degx = 0; +var degy = 0; +var degz = 0; +switch (this.getToken(++i).tok) { +case 1111492629: +degx = (this.floatParameter(++i) * 0.017453292519943295); +break; +case 1111492630: +degy = (this.floatParameter(++i) * 0.017453292519943295); +break; +case 1111492631: +degz = (this.floatParameter(++i) * 0.017453292519943295); +break; +default: +this.invArg(); +} +propertyName = "rotationAxis"; +propertyValue = JU.V3.new3(degx, degy, degz); +break; +case 1073742335: +case 1610625028: +case 2097192: +propertyName = "on"; +break; +case 1073742334: +case 12294: +case 2097194: +propertyName = "off"; +break; +case 12291: +propertyName = "delete"; +break; +case 12290: +case 10: +case 1073742325: +propertyName = "select"; +propertyValue = this.atomExpressionAt(i); +i = eval.iToken; +break; +case 1140850693: +propertyName = "reversecolor"; +propertyValue = Boolean.TRUE; +if (this.tokAt(i + 1) == 1073742335) { +++i; +} else if (this.tokAt(i + 1) == 1073742334) { +propertyValue = Boolean.FALSE; +++i; +}break; +case 1765808134: +translucency = this.setColorOptions(null, i + 1, 26, -2); +if (translucency != null) this.setShapeProperty(26, "settranslucency", translucency); +i = eval.iToken; +idSeen = true; +continue; +case 603979967: +case 1073742074: +eval.setMeshDisplayProperty(26, i, eval.theTok); +i = eval.iToken; +idSeen = true; +continue; +case 1112152075: +case 4: +propertyValue = this.paramAsStr(i).toLowerCase(); +if (propertyValue.equals("spacefill")) propertyValue = "cpk"; +propertyName = "create"; +if (eval.optParameterAsString(i + 1).equalsIgnoreCase("molecular")) { +i++; +propertyName = "molecular"; +}break; +case 1275082241: +if (eval.isAtomExpression(i + 1)) { +propertyName = "select"; +propertyValue = this.atomExpressionAt(i + 1); +i = eval.iToken; +} else { +propertyName = "selectType"; +propertyValue = this.paramAsStr(++i); +if (propertyValue.equals("spacefill")) propertyValue = "cpk"; +}break; +case 536875059: +propertyName = "scale"; +propertyValue = Float.$valueOf(this.floatParameter(++i)); +break; +case 1073742004: +case 1073742006: +propertyName = "lonePair"; +break; +case 1073742112: +case 1073742111: +propertyName = "radical"; +break; +case 1073742028: +propertyName = "molecular"; +break; +case 1073741904: +propertyValue = this.paramAsStr(++i); +propertyName = "create"; +if (eval.optParameterAsString(i + 1).equalsIgnoreCase("molecular")) { +i++; +propertyName = "molecular"; +}break; +case 1073741974: +propertyValue = eval.setShapeNameParameter(++i); +i = eval.iToken; +if (idSeen) this.invArg(); +propertyName = "lcaoID"; +break; +default: +if (eval.theTok == 268441089 || JS.T.tokAttr(eval.theTok, 1073741824)) { +if (eval.theTok != 268441089) propertyValue = this.paramAsStr(i); +if (idSeen) this.invArg(); +propertyName = "lcaoID"; +break; +}break; +} +if (eval.theTok != 12291) idSeen = true; +if (propertyName == null) this.invArg(); +this.setShapeProperty(26, propertyName, propertyValue); +} +this.setShapeProperty(26, "clear", null); +}); +Clazz_defineMethod(c$, "contact", +function(){ +var eval = this.e; +eval.sm.loadShape(25); +if (this.tokAt(1) == 1073742001 && this.listIsosurface(25)) return false; +var iptDisplayProperty = 0; +eval.iToken = 1; +var thisId = this.initIsosurface(25); +var idSeen = (thisId != null); +var isWild = (idSeen && this.getShapeProperty(25, "ID") == null); +var bsA = null; +var bsB = null; +var bs = null; +var rd = null; +var params = null; +var colorDensity = false; +var sbCommand = new JU.SB(); +var minSet = 2147483647; +var displayType = 134217750; +var contactType = 0; +var distance = NaN; +var saProbeRadius = NaN; +var localOnly = true; +var intramolecular = null; +var userSlabObject = null; +var colorpt = 0; +var colorByType = false; +var tok; +var modelIndex = -2147483648; +var okNoAtoms = (eval.iToken > 1); +for (var i = eval.iToken; i < this.slen; ++i) { +switch (tok = this.getToken(i).tok) { +default: +okNoAtoms = true; +if (!eval.setMeshDisplayProperty(25, 0, eval.theTok)) { +if (eval.theTok != 268441089 && !JS.T.tokAttr(eval.theTok, 1073741824)) this.invArg(); +thisId = this.setShapeId(25, i, idSeen); +i = eval.iToken; +break; +}if (iptDisplayProperty == 0) iptDisplayProperty = i; +i = eval.iToken; +continue; +case 1073741974: +okNoAtoms = true; +this.setShapeId(25, ++i, idSeen); +isWild = (this.getShapeProperty(25, "ID") == null); +i = eval.iToken; +break; +case 1765808134: +switch (this.tokAt(i + 1)) { +case 1073741914: +tok = 0; +colorDensity = true; +sbCommand.append(" color density"); +i++; +break; +case 1140850696: +tok = 0; +colorByType = true; +sbCommand.append(" color type"); +i++; +break; +} +if (tok == 0) break; +case 603979967: +case 1073742074: +okNoAtoms = true; +if (colorpt == 0) colorpt = i; +eval.setMeshDisplayProperty(25, i, eval.theTok); +i = eval.iToken; +break; +case 554176565: +okNoAtoms = true; +userSlabObject = this.getCapSlabObject(i, false); +this.setShapeProperty(25, "slab", userSlabObject); +i = eval.iToken; +break; +case 1073741914: +colorDensity = true; +sbCommand.append(" density"); +if (this.isFloatParameter(i + 1)) { +if (params == null) params = Clazz_newFloatArray (1, 0); +params[0] = -Math.abs(this.floatParameter(++i)); +sbCommand.append(" " + -params[0]); +}break; +case 1073742122: +var resolution = this.floatParameter(++i); +if (resolution > 0) { +sbCommand.append(" resolution ").appendF(resolution); +this.setShapeProperty(25, "resolution", Float.$valueOf(resolution)); +}break; +case 1094717454: +case 1094713359: +modelIndex = (eval.theTok == 1094713359 ? this.intParameter(++i) : eval.modelNumberParameter(++i)); +sbCommand.append(" modelIndex " + modelIndex); +break; +case 134217759: +case 1275069443: +distance = this.floatParameter(++i); +sbCommand.append(" within ").appendF(distance); +break; +case 268440577: +case 2: +case 3: +rd = eval.encodeRadiusParameter(i, false, false); +if (rd == null) return false; +sbCommand.append(" ").appendO(rd); +i = eval.iToken; +break; +case 1073741990: +case 1073741989: +intramolecular = (tok == 1073741989 ? Boolean.TRUE : Boolean.FALSE); +sbCommand.append(" ").appendO(eval.theToken.value); +break; +case 1073742020: +minSet = this.intParameter(++i); +break; +case 1613238294: +case 1073741881: +case 1648363544: +contactType = tok; +sbCommand.append(" ").appendO(eval.theToken.value); +break; +case 1073742135: +if (this.isFloatParameter(i + 1)) saProbeRadius = this.floatParameter(++i); +case 1073741875: +case 1073742036: +case 2097180: +localOnly = false; +case 1275068932: +case 1073741961: +case 134217750: +case 4106: +displayType = tok; +sbCommand.append(" ").appendO(eval.theToken.value); +if (tok == 1073742135) sbCommand.append(" ").appendF(saProbeRadius); +break; +case 1073742083: +params = eval.floatParameterSet(++i, 1, 10); +i = eval.iToken; +break; +case 12290: +case 10: +case 1073742325: +if (isWild || bsB != null) this.invArg(); +bs = JU.BSUtil.copy(this.atomExpressionAt(i)); +i = eval.iToken; +if (bsA == null) bsA = bs; + else bsB = bs; +sbCommand.append(" ").append(JU.Escape.eBS(bs)); +break; +} +idSeen = (eval.theTok != 12291); +} +if (!okNoAtoms && bsA == null) this.error(13); +if (this.chk) return false; +if (bsA != null) { +if (contactType == 1648363544 && rd == null) rd = new J.atomdata.RadiusData(null, 0, J.atomdata.RadiusData.EnumType.OFFSET, J.c.VDW.AUTO); +var rd1 = (rd == null ? new J.atomdata.RadiusData(null, 0.26, J.atomdata.RadiusData.EnumType.OFFSET, J.c.VDW.AUTO) : rd); +if (displayType == 1073742036 && bsB == null && intramolecular != null && intramolecular.booleanValue()) bsB = bsA; + else bsB = eval.getMathExt().setContactBitSets(bsA, bsB, localOnly, distance, rd1, true); +switch (displayType) { +case 1073741875: +case 1073742135: +var bsSolvent = eval.lookupIdentifierValue("solvent"); +bsA.andNot(bsSolvent); +bsB.andNot(bsSolvent); +bsB.andNot(bsA); +break; +case 2097180: +bsB.andNot(bsA); +break; +case 1073742036: +if (minSet == 2147483647) minSet = 100; +this.setShapeProperty(25, "minset", Integer.$valueOf(minSet)); +sbCommand.append(" minSet ").appendI(minSet); +if (params == null) params = Clazz_newFloatArray(-1, [0.5, 2]); +} +if (intramolecular != null) { +params = (params == null ? Clazz_newFloatArray (2, 0) : JU.AU.ensureLengthA(params, 2)); +params[1] = (intramolecular.booleanValue() ? 1 : 2); +}if (params != null) sbCommand.append(" parameters ").append(JU.Escape.eAF(params)); +this.setShapeProperty(25, "set", Clazz_newArray(-1, [Integer.$valueOf(contactType), Integer.$valueOf(displayType), Boolean.$valueOf(colorDensity), Boolean.$valueOf(colorByType), bsA, bsB, rd, Float.$valueOf(saProbeRadius), params, Integer.$valueOf(modelIndex), sbCommand.toString()])); +if (colorpt > 0) eval.setMeshDisplayProperty(25, colorpt, 0); +}if (iptDisplayProperty > 0) { +if (!eval.setMeshDisplayProperty(25, iptDisplayProperty, 0)) this.invArg(); +}if (userSlabObject != null && bsA != null) this.setShapeProperty(25, "slab", userSlabObject); +if (bsA != null && (displayType == 1073742036 || localOnly)) { +var volume = this.getShapeProperty(25, "volume"); +var v; +var isFull = (displayType == 1073741961); +if (JU.AU.isAD(volume)) { +var vs = volume; +v = 0; +for (var i = 0; i < vs.length; i++) v += (isFull ? vs[i] : Math.abs(vs[i])); + +} else { +v = (volume).floatValue(); +}v = (Math.round(v * 1000) / 1000.); +if (colorDensity || displayType != 1275068932) { +var nsets = (this.getShapeProperty(25, "nSets")).intValue(); +var s = "Contacts: " + (nsets < 0 ? Clazz_doubleToInt(-nsets / 2) : nsets); +if (v != 0) s += ", with " + (isFull ? "approx " : "net ") + "volume " + v + " A^3"; +this.showString(s); +}}return true; +}); +Clazz_defineMethod(c$, "cgo", +function(){ +var eval = this.e; +eval.sm.loadShape(23); +if (this.tokAt(1) == 1073742001 && this.listIsosurface(23)) return false; +var iptDisplayProperty = 0; +var thisId = this.initIsosurface(23); +var idSeen = (thisId != null); +var isWild = (idSeen && this.getShapeProperty(23, "ID") == null); +var isInitialized = false; +var modelIndex = -1; +var data = null; +var translucentLevel = 3.4028235E38; +var colorArgb = Clazz_newIntArray(-1, [-2147483648]); +var intScale = 0; +for (var i = eval.iToken; i < this.slen; ++i) { +var propertyName = null; +var propertyValue = null; +var tok = this.getToken(i).tok; +switch (tok) { +case 268437504: +case 1073742195: +case 7: +if (data != null || isWild) this.invArg(); +data = new JU.Lst(); +var ai = Clazz_newIntArray(-1, [i, this.slen]); +if (!eval.getShapePropertyData(23, "data", Clazz_newArray(-1, [this.st, ai, data, this.vwr]))) this.invArg(); +i = ai[0]; +continue; +case 536875059: +if (++i >= this.slen) this.error(34); +switch (this.getToken(i).tok) { +case 2: +intScale = this.intParameter(i); +continue; +case 3: +intScale = Math.round(this.floatParameter(i) * 100); +continue; +} +this.error(34); +break; +case 12293: +propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(-1); +break; +case 1094713359: +case 1094717454: +modelIndex = (eval.theTok == 1094713359 ? this.intParameter(++i) : eval.modelNumberParameter(++i)); +propertyName = "modelIndex"; +propertyValue = Integer.$valueOf(modelIndex); +break; +case 1765808134: +case 603979967: +case 1073742074: +translucentLevel = this.getColorTrans(eval, i, false, colorArgb); +i = eval.iToken; +idSeen = true; +continue; +case 1073741974: +thisId = this.setShapeId(23, ++i, idSeen); +isWild = (this.getShapeProperty(23, "ID") == null); +i = eval.iToken; +break; +default: +if (!eval.setMeshDisplayProperty(23, 0, eval.theTok)) { +if (eval.theTok == 268441089 || JS.T.tokAttr(eval.theTok, 1073741824)) { +thisId = this.setShapeId(23, i, idSeen); +i = eval.iToken; +break; +}this.invArg(); +}if (iptDisplayProperty == 0) iptDisplayProperty = i; +i = eval.iToken; +continue; +} +idSeen = (eval.theTok != 12291); +if (data != null && !isInitialized) { +propertyName = "points"; +propertyValue = Integer.$valueOf(intScale); +isInitialized = true; +intScale = 0; +}if (propertyName != null) this.setShapeProperty(23, propertyName, propertyValue); +} +this.finalizeObject(23, colorArgb[0], translucentLevel, intScale, data != null, data, iptDisplayProperty, null); +return true; +}); +Clazz_defineMethod(c$, "getAtomicPotentials", +function(bsSelected, bsIgnore, fileName){ +var potentials = Clazz_newFloatArray (this.vwr.ms.ac, 0); +var m = J.api.Interface.getOption("quantum.MlpCalculation", this.vwr, "script"); +m.set(this.vwr); +var data = (fileName == null ? null : this.vwr.getFileAsString3(fileName, false, null)); +try { +m.assignPotentials(this.vwr.ms.at, potentials, this.vwr.getSmartsMatch("a", bsSelected), this.vwr.getSmartsMatch("/noAromatic/[$(C=O),$(O=C),$(NC=O)]", bsSelected), bsIgnore, data); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return potentials; +}, "JU.BS,JU.BS,~S"); +Clazz_defineMethod(c$, "getCapSlabObject", +function(i, isLcaoCartoon){ +if (i < 0) { +return JU.TempArray.getSlabWithinRange(i, 0); +}var eval = this.e; +var data = null; +var tok0 = this.tokAt(i); +var isSlab = (tok0 == 554176565); +var tok = this.tokAt(i + 1); +var plane = null; +var pts = null; +var d; +var d2; +var bs = null; +var slabColix = null; +var slabMeshType = null; +if (tok == 603979967) { +var slabTranslucency = (this.isFloatParameter(++i + 1) ? this.floatParameter(++i) : 0.5); +if (eval.isColorParam(i + 1)) { +slabColix = Short.$valueOf(JU.C.getColixTranslucent3(JU.C.getColix(eval.getArgbParam(i + 1)), slabTranslucency != 0, slabTranslucency)); +i = eval.iToken; +} else { +slabColix = Short.$valueOf(JU.C.getColixTranslucent3(1, slabTranslucency != 0, slabTranslucency)); +}switch (tok = this.tokAt(i + 1)) { +case 1073742018: +case 1073741938: +slabMeshType = Integer.$valueOf(tok); +tok = this.tokAt(++i + 1); +break; +default: +slabMeshType = Integer.$valueOf(1073741938); +break; +} +}switch (tok) { +case 1073742334: +eval.iToken = i + 1; +return Integer.$valueOf(-2147483648); +case 1073742333: +eval.iToken = i + 1; +break; +case 1073742330: +i++; +data = Clazz_newArray(-1, [Float.$valueOf(1), this.paramAsStr(++i)]); +tok = 1073742018; +break; +case 134217759: +i++; +if (this.tokAt(++i) == 1073742114) { +d = this.floatParameter(++i); +d2 = this.floatParameter(++i); +data = Clazz_newArray(-1, [Float.$valueOf(d), Float.$valueOf(d2)]); +tok = 1073742114; +} else if (this.isFloatParameter(i)) { +d = this.floatParameter(i); +if (eval.isCenterParameter(++i)) { +var ret = new Array(1); +var pt = eval.centerParameter(i, ret); +if (this.chk || !(Clazz_instanceOf(ret[0],"JU.BS"))) { +pts = Clazz_newArray(-1, [pt]); +} else { +var atoms = this.vwr.ms.at; +bs = ret[0]; +pts = new Array(bs.cardinality()); +for (var k = 0, j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1), k++) pts[k] = atoms[j]; + +}} else { +pts = eval.getPointArray(i, -1, false); +}if (pts.length == 0) { +eval.iToken = i; +this.invArg(); +}data = Clazz_newArray(-1, [Float.$valueOf(d), pts, bs]); +} else { +data = eval.getPointArray(i, 4, false); +tok = 1812599299; +}break; +case 1812599299: +eval.iToken = i + 1; +data = JU.BoxInfo.toOABC(this.vwr.ms.getBBoxVertices(), null); +break; +case 1073741872: +case 1814695966: +eval.iToken = i + 1; +var unitCell = this.vwr.getCurrentUnitCell(); +if (unitCell == null) { +if (tok == 1814695966) this.invArg(); +} else { +pts = JU.BoxInfo.toOABC(unitCell.getUnitCellVerticesNoOffset(), unitCell.getCartesianOffset()); +var iType = Clazz_floatToInt(unitCell.getUnitCellInfoType(6)); +var v1 = null; +var v2 = null; +switch (iType) { +case 3: +break; +case 1: +v2 = JU.V3.newVsub(pts[2], pts[0]); +v2.scale(1000); +case 2: +v1 = JU.V3.newVsub(pts[1], pts[0]); +v1.scale(1000); +pts[0].sub(v1); +pts[1].scale(2000); +if (iType == 1) { +pts[0].sub(v2); +pts[2].scale(2000); +}break; +} +data = pts; +}break; +case 12290: +case 10: +case 1073742325: +data = this.atomExpressionAt(i + 1); +tok = 3; +if (!eval.isCenterParameter(++eval.iToken)) { +isSlab = true; +break; +}data = null; +default: +if (!isLcaoCartoon && isSlab && this.isFloatParameter(i + 1)) { +d = this.floatParameter(++i); +if (!this.isFloatParameter(i + 1)) return Integer.$valueOf(Clazz_floatToInt(d)); +d2 = this.floatParameter(++i); +data = Clazz_newArray(-1, [Float.$valueOf(d), Float.$valueOf(d2)]); +tok = 1073742114; +break; +}plane = eval.planeParameter(++i, false); +var off = (this.isFloatParameter(eval.iToken + 1) ? this.floatParameter(++eval.iToken) : NaN); +if (!Float.isNaN(off)) plane.w -= off; +data = plane; +tok = 134217750; +} +var colorData = (slabMeshType == null ? null : Clazz_newArray(-1, [slabMeshType, slabColix])); +return JU.TempArray.getSlabObjectType(tok, data, !isSlab, colorData); +}, "~N,~B"); +Clazz_defineMethod(c$, "setColorOptions", +function(sb, index, iShape, nAllowed){ +var eval = this.e; +this.getToken(index); +var translucency = "opaque"; +if (eval.theTok == 603979967) { +translucency = "translucent"; +if (nAllowed < 0) { +var value = (this.isFloatParameter(index + 1) ? this.floatParameter(++index) : 3.4028235E38); +eval.setShapeTranslucency(iShape, null, "translucent", value, null); +if (sb != null) { +sb.append(" translucent"); +if (value != 3.4028235E38) sb.append(" ").appendF(value); +}} else { +eval.setMeshDisplayProperty(iShape, index, eval.theTok); +}} else if (eval.theTok == 1073742074) { +if (nAllowed >= 0) eval.setMeshDisplayProperty(iShape, index, eval.theTok); +} else { +eval.iToken--; +}nAllowed = Math.abs(nAllowed); +for (var i = 0; i < nAllowed; i++) { +if (eval.isColorParam(eval.iToken + 1)) { +var color = eval.getArgbParam(++eval.iToken); +this.setShapeProperty(iShape, "colorRGB", Integer.$valueOf(color)); +if (sb != null) sb.append(" ").append(JU.Escape.escapeColor(color)); +} else if (eval.iToken < index) { +this.invArg(); +} else { +break; +}} +return translucency; +}, "JU.SB,~N,~N,~N"); +Clazz_defineMethod(c$, "createFunction", +function(fname, xyz, ret){ +var e = ( new JS.ScriptEval()).setViewer(this.vwr); +try { +e.compileScript(null, "function " + fname + "(" + xyz + ") { return " + ret + "}", false); +var params = new JU.Lst(); +for (var i = 0; i < xyz.length; i += 2) params.addLast(JS.SV.newF(0).setName(xyz.substring(i, i + 1))); + +return Clazz_newArray(-1, [e.aatoken[0][1].value, params]); +} catch (ex) { +if (Clazz_exceptionOf(ex, Exception)){ +return null; +} else { +throw ex; +} +} +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "getWithinDistanceVector", +function(propertyList, distance, ptc, bs, isShow){ +var v = new JU.Lst(); +var pts = new Array(2); +if (bs == null) { +var pt1 = JU.P3.new3(distance, distance, distance); +var pt0 = JU.P3.newP(ptc); +pt0.sub(pt1); +pt1.add(ptc); +pts[0] = pt0; +pts[1] = pt1; +v.addLast(ptc); +} else { +var bbox = this.vwr.ms.getBoxInfo(bs, -Math.abs(distance * 2)); +pts[0] = bbox.getBoundBoxVertices()[0]; +pts[1] = bbox.getBoundBoxVertices()[7]; +if (bs.cardinality() == 1) v.addLast(this.vwr.ms.at[bs.nextSetBit(0)]); +}if (v.size() == 1 && !isShow) { +this.addShapeProperty(propertyList, "withinDistance", Float.$valueOf(distance)); +this.addShapeProperty(propertyList, "withinPoint", v.get(0)); +}this.addShapeProperty(propertyList, (isShow ? "displayWithin" : "withinPoints"), Clazz_newArray(-1, [Float.$valueOf(distance), pts, bs, v])); +return pts; +}, "JU.Lst,~N,JU.P3,JU.BS,~B"); +Clazz_defineMethod(c$, "addShapeProperty", +function(propertyList, key, value){ +if (this.chk) return; +propertyList.addLast( Clazz_newArray(-1, [key, value])); +}, "JU.Lst,~S,~O"); +Clazz_defineMethod(c$, "floatArraySetXYZ", +function(i, nX, nY, nZ){ +var eval = this.e; +var tok = this.tokAt(i++); +if (tok == 1073742195) tok = this.tokAt(i++); +if (tok != 268437504 || nX <= 0) this.invArg(); +var fparams = JU.AU.newFloat3(nX, -1); +var n = 0; +while (tok != 268437505) { +tok = this.getToken(i).tok; +switch (tok) { +case 1073742195: +case 268437505: +continue; +case 268436992: +i++; +break; +case 268437504: +fparams[n++] = this.floatArraySet(i, nY, nZ); +i = ++eval.iToken; +tok = 0; +if (n == nX && this.tokAt(i) != 268437505) this.invArg(); +break; +default: +this.invArg(); +} +} +return fparams; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "floatArraySet", +function(i, nX, nY){ +var tok = this.tokAt(i++); +if (tok == 1073742195) tok = this.tokAt(i++); +if (tok != 268437504) this.invArg(); +var fparams = JU.AU.newFloat2(nX); +var n = 0; +while (tok != 268437505) { +tok = this.getToken(i).tok; +switch (tok) { +case 1073742195: +case 268437505: +continue; +case 268436992: +i++; +break; +case 268437504: +i++; +var f = Clazz_newFloatArray (nY, 0); +fparams[n++] = f; +for (var j = 0; j < nY; j++) { +f[j] = this.floatParameter(i++); +if (this.tokAt(i) == 268436992) i++; +} +if (this.tokAt(i++) != 268437505) this.invArg(); +tok = 0; +if (n == nX && this.tokAt(i) != 268437505) this.invArg(); +break; +default: +this.invArg(); +} +} +return fparams; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "initIsosurface", +function(iShape){ +var eval = this.e; +this.setShapeProperty(iShape, "init", eval.fullCommand); +eval.iToken = 0; +var tok1 = this.tokAt(1); +var tok2 = this.tokAt(2); +if (tok1 == 12291 || tok2 == 12291 && this.tokAt(++eval.iToken) == 1073742327) { +this.setShapeProperty(iShape, "delete", null); +eval.iToken += 2; +if (this.slen > eval.iToken) { +this.setShapeProperty(iShape, "init", eval.fullCommand); +this.setShapeProperty(iShape, "thisID", "+PREVIOUS_MESH+"); +}return null; +}eval.iToken = 1; +if (!eval.setMeshDisplayProperty(iShape, 0, tok1)) { +this.setShapeProperty(iShape, "thisID", "+PREVIOUS_MESH+"); +if (iShape != 22) this.setShapeProperty(iShape, "title", Clazz_newArray(-1, [eval.thisCommand])); +if (tok1 != 1073741974 && (tok2 == 268441089 || tok1 == 268441089 && eval.setMeshDisplayProperty(iShape, 0, tok2))) { +var id = this.setShapeId(iShape, 1, false); +eval.iToken++; +return id; +}}return null; +}, "~N"); +Clazz_defineMethod(c$, "listIsosurface", +function(iShape){ +var s = (this.slen > 3 ? "0" : this.tokAt(2) == 0 ? "" : " " + this.getToken(2).value); +if (!this.chk) this.showString(this.getShapeProperty(iShape, "list" + s)); +return true; +}, "~N"); +Clazz_defineMethod(c$, "getBoxPoints", +function(type, uc, bsAtoms, scale){ +switch (type) { +case 1814695966: +return (uc == null ? null : uc.getCanonicalCopy(scale, true)); +case 1812599299: +var box; +if (bsAtoms == null) { +box = this.vwr.ms.getBoxInfo(); +} else { +box = new JU.BoxInfo(); +this.vwr.calcAtomsMinMax(bsAtoms, box); +}return JU.BoxInfo.getCanonicalCopy(box.getBoundBoxVertices(), scale); +default: +return null; +} +}, "~N,J.api.SymmetryInterface,JU.BS,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.TriangleData"], "JU.Triangulator", ["JU.AU", "$.BS", "$.Lst", "$.Measure", "$.P3", "$.P4", "$.V3"], function(){ +var c$ = Clazz_declareType(JU, "Triangulator", JU.TriangleData); +Clazz_defineMethod(c$, "intersectLine", +function(points, nPoints, ptA, unitVector){ +if (nPoints < 0) nPoints = points.length; +var v1 = new JU.V3(); +var v2 = new JU.V3(); +var v3 = new JU.V3(); +var vAB = new JU.V3(); +var pmin = null; +var pmax = null; +var p = new JU.P3(); +var plane = new JU.P4(); +var dmin = 3.4028235E38; +var dmax = -3.4028235E38; +for (var i = 0; i < 12; i++) { +var c = JU.Triangulator.fullCubePolygon[i]; +if (i % 2 == 0) { +JU.Measure.getPlaneThroughPoints(points[c[0]], points[c[1]], points[c[2]], v1, v2, plane); +var ret = JU.Measure.getIntersection(ptA, unitVector, plane, p, v1, v3); +if (ret == null) { +i++; +continue; +}vAB.sub2(p, ptA); +}if (JU.Measure.isInTriangle(p, points[c[0]], points[c[1]], points[c[2]], v1, v2, v3)) { +var d = unitVector.dot(vAB); +if (d < dmin) { +dmin = d; +pmin = p; +}if (d > dmax) { +dmax = d; +pmax = p; +}if ((i % 2) == 0) { +i++; +}if (dmax - dmin > 0.01) break; +p = new JU.P3(); +}} +return (pmin == null || (pmax == null || pmin.distance(pmax) < 0.001) && (pmax = pmin) == null ? null : Clazz_newArray(-1, [pmin, pmax])); +}, "~A,~N,JU.P3,JU.V3"); +Clazz_defineMethod(c$, "getCellProjection", +function(plane, pts){ +var vTemp = new JU.V3(); +var d = 0; +var dmax = -3.4028235E38; +var imax = 0; +var newPts = new Array(8); +for (var i = 0; i < 8; i++) { +d = pts[i].dot(plane); +if (d > dmax) { +dmax = d; +imax = i; +}JU.Measure.getPlaneProjection(pts[i], plane, newPts[i] = new JU.P3(), vTemp); +} +var t = JU.Triangulator.fullCubeCorners[imax][3]; +var polygons = JU.AU.newInt2(6); +for (var p = 0, i = 0; i < 12; i++) { +if ((t & JU.TriangleData.Pwr2[i]) != 0) { +var t1 = Clazz_newIntArray (4, 0); +var t0 = JU.Triangulator.fullCubePolygon[i]; +t1[0] = t0[0]; +t1[1] = t0[1]; +t1[2] = t0[2]; +t1[3] = (t0[0] == imax ? 2 : t0[1] == imax ? 0 : t0[2] == imax ? 1 : 3); +polygons[p++] = t1; +}} +var poly = new JU.Lst(); +poly.addLast(newPts); +poly.addLast(polygons); +return poly; +}, "JU.P4,~A"); +Clazz_defineMethod(c$, "intersectPlane", +function(plane, vertices, flags){ +if (flags == -1 && vertices.length == 8) { +return this.getCellProjection(plane, vertices); +}var v = new JU.Lst(); +var edgePoints = new Array(12); +var insideMask = 0; +var values = Clazz_newFloatArray (8, 0); +for (var i = 0; i < 8; i++) { +values[i] = plane.x * vertices[i].x + plane.y * vertices[i].y + plane.z * vertices[i].z + plane.w; +if (values[i] < 0) insideMask |= JU.TriangleData.Pwr2[i]; +} +var triangles = JU.TriangleData.triangleTable2[insideMask]; +if (triangles == null) return null; +for (var i = 0; i < 24; i += 2) { +var v1 = JU.TriangleData.edgeVertexes[i]; +var v2 = JU.TriangleData.edgeVertexes[i + 1]; +var result = JU.P3.newP(vertices[v2]); +result.sub(vertices[v1]); +result.scale(values[v1] / (values[v1] - values[v2])); +result.add(vertices[v1]); +edgePoints[i >> 1] = result; +} +if (flags == 0) { +var bsPoints = new JU.BS(); +for (var i = 0; i < triangles.length; i++) { +bsPoints.set(triangles[i]); +if (i % 4 == 2) i++; +} +var nPoints = bsPoints.cardinality(); +var pts = new Array(nPoints); +v.addLast(pts); +var list = Clazz_newIntArray (12, 0); +var ptList = 0; +for (var i = 0; i < triangles.length; i++) { +var pt = triangles[i]; +if (bsPoints.get(pt)) { +bsPoints.clear(pt); +pts[ptList] = edgePoints[pt]; +list[pt] = ptList++; +}if (i % 4 == 2) i++; +} +var polygons = JU.AU.newInt2(triangles.length >> 2); +v.addLast(polygons); +for (var i = 0; i < triangles.length; i++) polygons[i >> 2] = Clazz_newIntArray(-1, [list[triangles[i++]], list[triangles[i++]], list[triangles[i++]], triangles[i]]); + +return v; +}for (var i = 0; i < triangles.length; i++) { +var pt1 = edgePoints[triangles[i++]]; +var pt2 = edgePoints[triangles[i++]]; +var pt3 = edgePoints[triangles[i++]]; +if ((flags & 1) == 1) v.addLast( Clazz_newArray(-1, [pt1, pt2, pt3])); +if ((flags & 2) == 2) { +var b = triangles[i]; +if ((b & 1) == 1) v.addLast( Clazz_newArray(-1, [pt1, pt2])); +if ((b & 2) == 2) v.addLast( Clazz_newArray(-1, [pt2, pt3])); +if ((b & 4) == 4) v.addLast( Clazz_newArray(-1, [pt1, pt3])); +}} +return v; +}, "JU.P4,~A,~N"); +c$.fullCubePolygon = Clazz_newArray(-1, [ Clazz_newIntArray(-1, [0, 4, 5, 3]), Clazz_newIntArray(-1, [5, 1, 0, 3]), Clazz_newIntArray(-1, [1, 5, 6, 2]), Clazz_newIntArray(-1, [6, 2, 1, 3]), Clazz_newIntArray(-1, [2, 6, 7, 2]), Clazz_newIntArray(-1, [7, 3, 2, 3]), Clazz_newIntArray(-1, [3, 7, 4, 2]), Clazz_newIntArray(-1, [4, 0, 3, 2]), Clazz_newIntArray(-1, [6, 5, 4, 0]), Clazz_newIntArray(-1, [4, 7, 6, 0]), Clazz_newIntArray(-1, [0, 1, 2, 0]), Clazz_newIntArray(-1, [2, 3, 0, 0])]); +c$.fullCubeCorners = Clazz_newArray(-1, [ Clazz_newIntArray(-1, [1, 4, 3, 3267]), Clazz_newIntArray(-1, [0, 2, 5, 3087]), Clazz_newIntArray(-1, [1, 3, 6, 3132]), Clazz_newIntArray(-1, [2, 0, 7, 3312]), Clazz_newIntArray(-1, [0, 5, 7, 963]), Clazz_newIntArray(-1, [1, 6, 4, 783]), Clazz_newIntArray(-1, [2, 7, 5, 828]), Clazz_newIntArray(-1, [3, 4, 6, 1008])]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.P3i"], "JU.TriangleData", null, function(){ +var c$ = Clazz_declareType(JU, "TriangleData", null); +c$.Pwr2 = Clazz_newIntArray(-1, [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]); +c$.cubeVertexOffsets = Clazz_newArray(-1, [JU.P3i.new3(0, 0, 0), JU.P3i.new3(1, 0, 0), JU.P3i.new3(1, 0, 1), JU.P3i.new3(0, 0, 1), JU.P3i.new3(0, 1, 0), JU.P3i.new3(1, 1, 0), JU.P3i.new3(1, 1, 1), JU.P3i.new3(0, 1, 1)]); +c$.edgeVertexes = Clazz_newByteArray(-1, [0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]); +c$.triangleTable2 = Clazz_newArray(-1, [null, Clazz_newByteArray(-1, [0, 8, 3, 7]), Clazz_newByteArray(-1, [0, 1, 9, 7]), Clazz_newByteArray(-1, [1, 8, 3, 6, 9, 8, 1, 5]), Clazz_newByteArray(-1, [1, 2, 10, 7]), Clazz_newByteArray(-1, [0, 8, 3, 7, 1, 2, 10, 7]), Clazz_newByteArray(-1, [9, 2, 10, 6, 0, 2, 9, 5]), Clazz_newByteArray(-1, [2, 8, 3, 6, 2, 10, 8, 1, 10, 9, 8, 3]), Clazz_newByteArray(-1, [3, 11, 2, 7]), Clazz_newByteArray(-1, [0, 11, 2, 6, 8, 11, 0, 5]), Clazz_newByteArray(-1, [1, 9, 0, 7, 2, 3, 11, 7]), Clazz_newByteArray(-1, [1, 11, 2, 6, 1, 9, 11, 1, 9, 8, 11, 3]), Clazz_newByteArray(-1, [3, 10, 1, 6, 11, 10, 3, 5]), Clazz_newByteArray(-1, [0, 10, 1, 6, 0, 8, 10, 1, 8, 11, 10, 3]), Clazz_newByteArray(-1, [3, 9, 0, 6, 3, 11, 9, 1, 11, 10, 9, 3]), Clazz_newByteArray(-1, [9, 8, 10, 5, 10, 8, 11, 6]), Clazz_newByteArray(-1, [4, 7, 8, 7]), Clazz_newByteArray(-1, [4, 3, 0, 6, 7, 3, 4, 5]), Clazz_newByteArray(-1, [0, 1, 9, 7, 8, 4, 7, 7]), Clazz_newByteArray(-1, [4, 1, 9, 6, 4, 7, 1, 1, 7, 3, 1, 3]), Clazz_newByteArray(-1, [1, 2, 10, 7, 8, 4, 7, 7]), Clazz_newByteArray(-1, [3, 4, 7, 6, 3, 0, 4, 3, 1, 2, 10, 7]), Clazz_newByteArray(-1, [9, 2, 10, 6, 9, 0, 2, 3, 8, 4, 7, 7]), Clazz_newByteArray(-1, [2, 10, 9, 3, 2, 9, 7, 0, 2, 7, 3, 6, 7, 9, 4, 6]), Clazz_newByteArray(-1, [8, 4, 7, 7, 3, 11, 2, 7]), Clazz_newByteArray(-1, [11, 4, 7, 6, 11, 2, 4, 1, 2, 0, 4, 3]), Clazz_newByteArray(-1, [9, 0, 1, 7, 8, 4, 7, 7, 2, 3, 11, 7]), Clazz_newByteArray(-1, [4, 7, 11, 3, 9, 4, 11, 1, 9, 11, 2, 2, 9, 2, 1, 6]), Clazz_newByteArray(-1, [3, 10, 1, 6, 3, 11, 10, 3, 7, 8, 4, 7]), Clazz_newByteArray(-1, [1, 11, 10, 6, 1, 4, 11, 0, 1, 0, 4, 3, 7, 11, 4, 5]), Clazz_newByteArray(-1, [4, 7, 8, 7, 9, 0, 11, 1, 9, 11, 10, 6, 11, 0, 3, 6]), Clazz_newByteArray(-1, [4, 7, 11, 3, 4, 11, 9, 4, 9, 11, 10, 6]), Clazz_newByteArray(-1, [9, 5, 4, 7]), Clazz_newByteArray(-1, [9, 5, 4, 7, 0, 8, 3, 7]), Clazz_newByteArray(-1, [0, 5, 4, 6, 1, 5, 0, 5]), Clazz_newByteArray(-1, [8, 5, 4, 6, 8, 3, 5, 1, 3, 1, 5, 3]), Clazz_newByteArray(-1, [1, 2, 10, 7, 9, 5, 4, 7]), Clazz_newByteArray(-1, [3, 0, 8, 7, 1, 2, 10, 7, 4, 9, 5, 7]), Clazz_newByteArray(-1, [5, 2, 10, 6, 5, 4, 2, 1, 4, 0, 2, 3]), Clazz_newByteArray(-1, [2, 10, 5, 3, 3, 2, 5, 1, 3, 5, 4, 2, 3, 4, 8, 6]), Clazz_newByteArray(-1, [9, 5, 4, 7, 2, 3, 11, 7]), Clazz_newByteArray(-1, [0, 11, 2, 6, 0, 8, 11, 3, 4, 9, 5, 7]), Clazz_newByteArray(-1, [0, 5, 4, 6, 0, 1, 5, 3, 2, 3, 11, 7]), Clazz_newByteArray(-1, [2, 1, 5, 3, 2, 5, 8, 0, 2, 8, 11, 6, 4, 8, 5, 5]), Clazz_newByteArray(-1, [10, 3, 11, 6, 10, 1, 3, 3, 9, 5, 4, 7]), Clazz_newByteArray(-1, [4, 9, 5, 7, 0, 8, 1, 5, 8, 10, 1, 2, 8, 11, 10, 3]), Clazz_newByteArray(-1, [5, 4, 0, 3, 5, 0, 11, 0, 5, 11, 10, 6, 11, 0, 3, 6]), Clazz_newByteArray(-1, [5, 4, 8, 3, 5, 8, 10, 4, 10, 8, 11, 6]), Clazz_newByteArray(-1, [9, 7, 8, 6, 5, 7, 9, 5]), Clazz_newByteArray(-1, [9, 3, 0, 6, 9, 5, 3, 1, 5, 7, 3, 3]), Clazz_newByteArray(-1, [0, 7, 8, 6, 0, 1, 7, 1, 1, 5, 7, 3]), Clazz_newByteArray(-1, [1, 5, 3, 5, 3, 5, 7, 6]), Clazz_newByteArray(-1, [9, 7, 8, 6, 9, 5, 7, 3, 10, 1, 2, 7]), Clazz_newByteArray(-1, [10, 1, 2, 7, 9, 5, 0, 5, 5, 3, 0, 2, 5, 7, 3, 3]), Clazz_newByteArray(-1, [8, 0, 2, 3, 8, 2, 5, 0, 8, 5, 7, 6, 10, 5, 2, 5]), Clazz_newByteArray(-1, [2, 10, 5, 3, 2, 5, 3, 4, 3, 5, 7, 6]), Clazz_newByteArray(-1, [7, 9, 5, 6, 7, 8, 9, 3, 3, 11, 2, 7]), Clazz_newByteArray(-1, [9, 5, 7, 3, 9, 7, 2, 0, 9, 2, 0, 6, 2, 7, 11, 6]), Clazz_newByteArray(-1, [2, 3, 11, 7, 0, 1, 8, 5, 1, 7, 8, 2, 1, 5, 7, 3]), Clazz_newByteArray(-1, [11, 2, 1, 3, 11, 1, 7, 4, 7, 1, 5, 6]), Clazz_newByteArray(-1, [9, 5, 8, 5, 8, 5, 7, 6, 10, 1, 3, 3, 10, 3, 11, 6]), Clazz_newByteArray(-1, [5, 7, 0, 1, 5, 0, 9, 6, 7, 11, 0, 1, 1, 0, 10, 5, 11, 10, 0, 1]), Clazz_newByteArray(-1, [11, 10, 0, 1, 11, 0, 3, 6, 10, 5, 0, 1, 8, 0, 7, 5, 5, 7, 0, 1]), Clazz_newByteArray(-1, [11, 10, 5, 3, 7, 11, 5, 5]), Clazz_newByteArray(-1, [10, 6, 5, 7]), Clazz_newByteArray(-1, [0, 8, 3, 7, 5, 10, 6, 7]), Clazz_newByteArray(-1, [9, 0, 1, 7, 5, 10, 6, 7]), Clazz_newByteArray(-1, [1, 8, 3, 6, 1, 9, 8, 3, 5, 10, 6, 7]), Clazz_newByteArray(-1, [1, 6, 5, 6, 2, 6, 1, 5]), Clazz_newByteArray(-1, [1, 6, 5, 6, 1, 2, 6, 3, 3, 0, 8, 7]), Clazz_newByteArray(-1, [9, 6, 5, 6, 9, 0, 6, 1, 0, 2, 6, 3]), Clazz_newByteArray(-1, [5, 9, 8, 3, 5, 8, 2, 0, 5, 2, 6, 6, 3, 2, 8, 5]), Clazz_newByteArray(-1, [2, 3, 11, 7, 10, 6, 5, 7]), Clazz_newByteArray(-1, [11, 0, 8, 6, 11, 2, 0, 3, 10, 6, 5, 7]), Clazz_newByteArray(-1, [0, 1, 9, 7, 2, 3, 11, 7, 5, 10, 6, 7]), Clazz_newByteArray(-1, [5, 10, 6, 7, 1, 9, 2, 5, 9, 11, 2, 2, 9, 8, 11, 3]), Clazz_newByteArray(-1, [6, 3, 11, 6, 6, 5, 3, 1, 5, 1, 3, 3]), Clazz_newByteArray(-1, [0, 8, 11, 3, 0, 11, 5, 0, 0, 5, 1, 6, 5, 11, 6, 6]), Clazz_newByteArray(-1, [3, 11, 6, 3, 0, 3, 6, 1, 0, 6, 5, 2, 0, 5, 9, 6]), Clazz_newByteArray(-1, [6, 5, 9, 3, 6, 9, 11, 4, 11, 9, 8, 6]), Clazz_newByteArray(-1, [5, 10, 6, 7, 4, 7, 8, 7]), Clazz_newByteArray(-1, [4, 3, 0, 6, 4, 7, 3, 3, 6, 5, 10, 7]), Clazz_newByteArray(-1, [1, 9, 0, 7, 5, 10, 6, 7, 8, 4, 7, 7]), Clazz_newByteArray(-1, [10, 6, 5, 7, 1, 9, 7, 1, 1, 7, 3, 6, 7, 9, 4, 6]), Clazz_newByteArray(-1, [6, 1, 2, 6, 6, 5, 1, 3, 4, 7, 8, 7]), Clazz_newByteArray(-1, [1, 2, 5, 5, 5, 2, 6, 6, 3, 0, 4, 3, 3, 4, 7, 6]), Clazz_newByteArray(-1, [8, 4, 7, 7, 9, 0, 5, 5, 0, 6, 5, 2, 0, 2, 6, 3]), Clazz_newByteArray(-1, [7, 3, 9, 1, 7, 9, 4, 6, 3, 2, 9, 1, 5, 9, 6, 5, 2, 6, 9, 1]), Clazz_newByteArray(-1, [3, 11, 2, 7, 7, 8, 4, 7, 10, 6, 5, 7]), Clazz_newByteArray(-1, [5, 10, 6, 7, 4, 7, 2, 1, 4, 2, 0, 6, 2, 7, 11, 6]), Clazz_newByteArray(-1, [0, 1, 9, 7, 4, 7, 8, 7, 2, 3, 11, 7, 5, 10, 6, 7]), Clazz_newByteArray(-1, [9, 2, 1, 6, 9, 11, 2, 2, 9, 4, 11, 1, 7, 11, 4, 5, 5, 10, 6, 7]), Clazz_newByteArray(-1, [8, 4, 7, 7, 3, 11, 5, 1, 3, 5, 1, 6, 5, 11, 6, 6]), Clazz_newByteArray(-1, [5, 1, 11, 1, 5, 11, 6, 6, 1, 0, 11, 1, 7, 11, 4, 5, 0, 4, 11, 1]), Clazz_newByteArray(-1, [0, 5, 9, 6, 0, 6, 5, 2, 0, 3, 6, 1, 11, 6, 3, 5, 8, 4, 7, 7]), Clazz_newByteArray(-1, [6, 5, 9, 3, 6, 9, 11, 4, 4, 7, 9, 5, 7, 11, 9, 1]), Clazz_newByteArray(-1, [10, 4, 9, 6, 6, 4, 10, 5]), Clazz_newByteArray(-1, [4, 10, 6, 6, 4, 9, 10, 3, 0, 8, 3, 7]), Clazz_newByteArray(-1, [10, 0, 1, 6, 10, 6, 0, 1, 6, 4, 0, 3]), Clazz_newByteArray(-1, [8, 3, 1, 3, 8, 1, 6, 0, 8, 6, 4, 6, 6, 1, 10, 6]), Clazz_newByteArray(-1, [1, 4, 9, 6, 1, 2, 4, 1, 2, 6, 4, 3]), Clazz_newByteArray(-1, [3, 0, 8, 7, 1, 2, 9, 5, 2, 4, 9, 2, 2, 6, 4, 3]), Clazz_newByteArray(-1, [0, 2, 4, 5, 4, 2, 6, 6]), Clazz_newByteArray(-1, [8, 3, 2, 3, 8, 2, 4, 4, 4, 2, 6, 6]), Clazz_newByteArray(-1, [10, 4, 9, 6, 10, 6, 4, 3, 11, 2, 3, 7]), Clazz_newByteArray(-1, [0, 8, 2, 5, 2, 8, 11, 6, 4, 9, 10, 3, 4, 10, 6, 6]), Clazz_newByteArray(-1, [3, 11, 2, 7, 0, 1, 6, 1, 0, 6, 4, 6, 6, 1, 10, 6]), Clazz_newByteArray(-1, [6, 4, 1, 1, 6, 1, 10, 6, 4, 8, 1, 1, 2, 1, 11, 5, 8, 11, 1, 1]), Clazz_newByteArray(-1, [9, 6, 4, 6, 9, 3, 6, 0, 9, 1, 3, 3, 11, 6, 3, 5]), Clazz_newByteArray(-1, [8, 11, 1, 1, 8, 1, 0, 6, 11, 6, 1, 1, 9, 1, 4, 5, 6, 4, 1, 1]), Clazz_newByteArray(-1, [3, 11, 6, 3, 3, 6, 0, 4, 0, 6, 4, 6]), Clazz_newByteArray(-1, [6, 4, 8, 3, 11, 6, 8, 5]), Clazz_newByteArray(-1, [7, 10, 6, 6, 7, 8, 10, 1, 8, 9, 10, 3]), Clazz_newByteArray(-1, [0, 7, 3, 6, 0, 10, 7, 0, 0, 9, 10, 3, 6, 7, 10, 5]), Clazz_newByteArray(-1, [10, 6, 7, 3, 1, 10, 7, 1, 1, 7, 8, 2, 1, 8, 0, 6]), Clazz_newByteArray(-1, [10, 6, 7, 3, 10, 7, 1, 4, 1, 7, 3, 6]), Clazz_newByteArray(-1, [1, 2, 6, 3, 1, 6, 8, 0, 1, 8, 9, 6, 8, 6, 7, 6]), Clazz_newByteArray(-1, [2, 6, 9, 1, 2, 9, 1, 6, 6, 7, 9, 1, 0, 9, 3, 5, 7, 3, 9, 1]), Clazz_newByteArray(-1, [7, 8, 0, 3, 7, 0, 6, 4, 6, 0, 2, 6]), Clazz_newByteArray(-1, [7, 3, 2, 3, 6, 7, 2, 5]), Clazz_newByteArray(-1, [2, 3, 11, 7, 10, 6, 8, 1, 10, 8, 9, 6, 8, 6, 7, 6]), Clazz_newByteArray(-1, [2, 0, 7, 1, 2, 7, 11, 6, 0, 9, 7, 1, 6, 7, 10, 5, 9, 10, 7, 1]), Clazz_newByteArray(-1, [1, 8, 0, 6, 1, 7, 8, 2, 1, 10, 7, 1, 6, 7, 10, 5, 2, 3, 11, 7]), Clazz_newByteArray(-1, [11, 2, 1, 3, 11, 1, 7, 4, 10, 6, 1, 5, 6, 7, 1, 1]), Clazz_newByteArray(-1, [8, 9, 6, 1, 8, 6, 7, 6, 9, 1, 6, 1, 11, 6, 3, 5, 1, 3, 6, 1]), Clazz_newByteArray(-1, [0, 9, 1, 7, 11, 6, 7, 7]), Clazz_newByteArray(-1, [7, 8, 0, 3, 7, 0, 6, 4, 3, 11, 0, 5, 11, 6, 0, 1]), Clazz_newByteArray(-1, [7, 11, 6, 7]), Clazz_newByteArray(-1, [7, 6, 11, 7]), Clazz_newByteArray(-1, [3, 0, 8, 7, 11, 7, 6, 7]), Clazz_newByteArray(-1, [0, 1, 9, 7, 11, 7, 6, 7]), Clazz_newByteArray(-1, [8, 1, 9, 6, 8, 3, 1, 3, 11, 7, 6, 7]), Clazz_newByteArray(-1, [10, 1, 2, 7, 6, 11, 7, 7]), Clazz_newByteArray(-1, [1, 2, 10, 7, 3, 0, 8, 7, 6, 11, 7, 7]), Clazz_newByteArray(-1, [2, 9, 0, 6, 2, 10, 9, 3, 6, 11, 7, 7]), Clazz_newByteArray(-1, [6, 11, 7, 7, 2, 10, 3, 5, 10, 8, 3, 2, 10, 9, 8, 3]), Clazz_newByteArray(-1, [7, 2, 3, 6, 6, 2, 7, 5]), Clazz_newByteArray(-1, [7, 0, 8, 6, 7, 6, 0, 1, 6, 2, 0, 3]), Clazz_newByteArray(-1, [2, 7, 6, 6, 2, 3, 7, 3, 0, 1, 9, 7]), Clazz_newByteArray(-1, [1, 6, 2, 6, 1, 8, 6, 0, 1, 9, 8, 3, 8, 7, 6, 3]), Clazz_newByteArray(-1, [10, 7, 6, 6, 10, 1, 7, 1, 1, 3, 7, 3]), Clazz_newByteArray(-1, [10, 7, 6, 6, 1, 7, 10, 4, 1, 8, 7, 2, 1, 0, 8, 3]), Clazz_newByteArray(-1, [0, 3, 7, 3, 0, 7, 10, 0, 0, 10, 9, 6, 6, 10, 7, 5]), Clazz_newByteArray(-1, [7, 6, 10, 3, 7, 10, 8, 4, 8, 10, 9, 6]), Clazz_newByteArray(-1, [6, 8, 4, 6, 11, 8, 6, 5]), Clazz_newByteArray(-1, [3, 6, 11, 6, 3, 0, 6, 1, 0, 4, 6, 3]), Clazz_newByteArray(-1, [8, 6, 11, 6, 8, 4, 6, 3, 9, 0, 1, 7]), Clazz_newByteArray(-1, [9, 4, 6, 3, 9, 6, 3, 0, 9, 3, 1, 6, 11, 3, 6, 5]), Clazz_newByteArray(-1, [6, 8, 4, 6, 6, 11, 8, 3, 2, 10, 1, 7]), Clazz_newByteArray(-1, [1, 2, 10, 7, 3, 0, 11, 5, 0, 6, 11, 2, 0, 4, 6, 3]), Clazz_newByteArray(-1, [4, 11, 8, 6, 4, 6, 11, 3, 0, 2, 9, 5, 2, 10, 9, 3]), Clazz_newByteArray(-1, [10, 9, 3, 1, 10, 3, 2, 6, 9, 4, 3, 1, 11, 3, 6, 5, 4, 6, 3, 1]), Clazz_newByteArray(-1, [8, 2, 3, 6, 8, 4, 2, 1, 4, 6, 2, 3]), Clazz_newByteArray(-1, [0, 4, 2, 5, 4, 6, 2, 3]), Clazz_newByteArray(-1, [1, 9, 0, 7, 2, 3, 4, 1, 2, 4, 6, 6, 4, 3, 8, 6]), Clazz_newByteArray(-1, [1, 9, 4, 3, 1, 4, 2, 4, 2, 4, 6, 6]), Clazz_newByteArray(-1, [8, 1, 3, 6, 8, 6, 1, 0, 8, 4, 6, 3, 6, 10, 1, 3]), Clazz_newByteArray(-1, [10, 1, 0, 3, 10, 0, 6, 4, 6, 0, 4, 6]), Clazz_newByteArray(-1, [4, 6, 3, 1, 4, 3, 8, 6, 6, 10, 3, 1, 0, 3, 9, 5, 10, 9, 3, 1]), Clazz_newByteArray(-1, [10, 9, 4, 3, 6, 10, 4, 5]), Clazz_newByteArray(-1, [4, 9, 5, 7, 7, 6, 11, 7]), Clazz_newByteArray(-1, [0, 8, 3, 7, 4, 9, 5, 7, 11, 7, 6, 7]), Clazz_newByteArray(-1, [5, 0, 1, 6, 5, 4, 0, 3, 7, 6, 11, 7]), Clazz_newByteArray(-1, [11, 7, 6, 7, 8, 3, 4, 5, 3, 5, 4, 2, 3, 1, 5, 3]), Clazz_newByteArray(-1, [9, 5, 4, 7, 10, 1, 2, 7, 7, 6, 11, 7]), Clazz_newByteArray(-1, [6, 11, 7, 7, 1, 2, 10, 7, 0, 8, 3, 7, 4, 9, 5, 7]), Clazz_newByteArray(-1, [7, 6, 11, 7, 5, 4, 10, 5, 4, 2, 10, 2, 4, 0, 2, 3]), Clazz_newByteArray(-1, [3, 4, 8, 6, 3, 5, 4, 2, 3, 2, 5, 1, 10, 5, 2, 5, 11, 7, 6, 7]), Clazz_newByteArray(-1, [7, 2, 3, 6, 7, 6, 2, 3, 5, 4, 9, 7]), Clazz_newByteArray(-1, [9, 5, 4, 7, 0, 8, 6, 1, 0, 6, 2, 6, 6, 8, 7, 6]), Clazz_newByteArray(-1, [3, 6, 2, 6, 3, 7, 6, 3, 1, 5, 0, 5, 5, 4, 0, 3]), Clazz_newByteArray(-1, [6, 2, 8, 1, 6, 8, 7, 6, 2, 1, 8, 1, 4, 8, 5, 5, 1, 5, 8, 1]), Clazz_newByteArray(-1, [9, 5, 4, 7, 10, 1, 6, 5, 1, 7, 6, 2, 1, 3, 7, 3]), Clazz_newByteArray(-1, [1, 6, 10, 6, 1, 7, 6, 2, 1, 0, 7, 1, 8, 7, 0, 5, 9, 5, 4, 7]), Clazz_newByteArray(-1, [4, 0, 10, 1, 4, 10, 5, 6, 0, 3, 10, 1, 6, 10, 7, 5, 3, 7, 10, 1]), Clazz_newByteArray(-1, [7, 6, 10, 3, 7, 10, 8, 4, 5, 4, 10, 5, 4, 8, 10, 1]), Clazz_newByteArray(-1, [6, 9, 5, 6, 6, 11, 9, 1, 11, 8, 9, 3]), Clazz_newByteArray(-1, [3, 6, 11, 6, 0, 6, 3, 4, 0, 5, 6, 2, 0, 9, 5, 3]), Clazz_newByteArray(-1, [0, 11, 8, 6, 0, 5, 11, 0, 0, 1, 5, 3, 5, 6, 11, 3]), Clazz_newByteArray(-1, [6, 11, 3, 3, 6, 3, 5, 4, 5, 3, 1, 6]), Clazz_newByteArray(-1, [1, 2, 10, 7, 9, 5, 11, 1, 9, 11, 8, 6, 11, 5, 6, 6]), Clazz_newByteArray(-1, [0, 11, 3, 6, 0, 6, 11, 2, 0, 9, 6, 1, 5, 6, 9, 5, 1, 2, 10, 7]), Clazz_newByteArray(-1, [11, 8, 5, 1, 11, 5, 6, 6, 8, 0, 5, 1, 10, 5, 2, 5, 0, 2, 5, 1]), Clazz_newByteArray(-1, [6, 11, 3, 3, 6, 3, 5, 4, 2, 10, 3, 5, 10, 5, 3, 1]), Clazz_newByteArray(-1, [5, 8, 9, 6, 5, 2, 8, 0, 5, 6, 2, 3, 3, 8, 2, 5]), Clazz_newByteArray(-1, [9, 5, 6, 3, 9, 6, 0, 4, 0, 6, 2, 6]), Clazz_newByteArray(-1, [1, 5, 8, 1, 1, 8, 0, 6, 5, 6, 8, 1, 3, 8, 2, 5, 6, 2, 8, 1]), Clazz_newByteArray(-1, [1, 5, 6, 3, 2, 1, 6, 5]), Clazz_newByteArray(-1, [1, 3, 6, 1, 1, 6, 10, 6, 3, 8, 6, 1, 5, 6, 9, 5, 8, 9, 6, 1]), Clazz_newByteArray(-1, [10, 1, 0, 3, 10, 0, 6, 4, 9, 5, 0, 5, 5, 6, 0, 1]), Clazz_newByteArray(-1, [0, 3, 8, 7, 5, 6, 10, 7]), Clazz_newByteArray(-1, [10, 5, 6, 7]), Clazz_newByteArray(-1, [11, 5, 10, 6, 7, 5, 11, 5]), Clazz_newByteArray(-1, [11, 5, 10, 6, 11, 7, 5, 3, 8, 3, 0, 7]), Clazz_newByteArray(-1, [5, 11, 7, 6, 5, 10, 11, 3, 1, 9, 0, 7]), Clazz_newByteArray(-1, [10, 7, 5, 6, 10, 11, 7, 3, 9, 8, 1, 5, 8, 3, 1, 3]), Clazz_newByteArray(-1, [11, 1, 2, 6, 11, 7, 1, 1, 7, 5, 1, 3]), Clazz_newByteArray(-1, [0, 8, 3, 7, 1, 2, 7, 1, 1, 7, 5, 6, 7, 2, 11, 6]), Clazz_newByteArray(-1, [9, 7, 5, 6, 9, 2, 7, 0, 9, 0, 2, 3, 2, 11, 7, 3]), Clazz_newByteArray(-1, [7, 5, 2, 1, 7, 2, 11, 6, 5, 9, 2, 1, 3, 2, 8, 5, 9, 8, 2, 1]), Clazz_newByteArray(-1, [2, 5, 10, 6, 2, 3, 5, 1, 3, 7, 5, 3]), Clazz_newByteArray(-1, [8, 2, 0, 6, 8, 5, 2, 0, 8, 7, 5, 3, 10, 2, 5, 5]), Clazz_newByteArray(-1, [9, 0, 1, 7, 5, 10, 3, 1, 5, 3, 7, 6, 3, 10, 2, 6]), Clazz_newByteArray(-1, [9, 8, 2, 1, 9, 2, 1, 6, 8, 7, 2, 1, 10, 2, 5, 5, 7, 5, 2, 1]), Clazz_newByteArray(-1, [1, 3, 5, 5, 3, 7, 5, 3]), Clazz_newByteArray(-1, [0, 8, 7, 3, 0, 7, 1, 4, 1, 7, 5, 6]), Clazz_newByteArray(-1, [9, 0, 3, 3, 9, 3, 5, 4, 5, 3, 7, 6]), Clazz_newByteArray(-1, [9, 8, 7, 3, 5, 9, 7, 5]), Clazz_newByteArray(-1, [5, 8, 4, 6, 5, 10, 8, 1, 10, 11, 8, 3]), Clazz_newByteArray(-1, [5, 0, 4, 6, 5, 11, 0, 0, 5, 10, 11, 3, 11, 3, 0, 3]), Clazz_newByteArray(-1, [0, 1, 9, 7, 8, 4, 10, 1, 8, 10, 11, 6, 10, 4, 5, 6]), Clazz_newByteArray(-1, [10, 11, 4, 1, 10, 4, 5, 6, 11, 3, 4, 1, 9, 4, 1, 5, 3, 1, 4, 1]), Clazz_newByteArray(-1, [2, 5, 1, 6, 2, 8, 5, 0, 2, 11, 8, 3, 4, 5, 8, 5]), Clazz_newByteArray(-1, [0, 4, 11, 1, 0, 11, 3, 6, 4, 5, 11, 1, 2, 11, 1, 5, 5, 1, 11, 1]), Clazz_newByteArray(-1, [0, 2, 5, 1, 0, 5, 9, 6, 2, 11, 5, 1, 4, 5, 8, 5, 11, 8, 5, 1]), Clazz_newByteArray(-1, [9, 4, 5, 7, 2, 11, 3, 7]), Clazz_newByteArray(-1, [2, 5, 10, 6, 3, 5, 2, 4, 3, 4, 5, 2, 3, 8, 4, 3]), Clazz_newByteArray(-1, [5, 10, 2, 3, 5, 2, 4, 4, 4, 2, 0, 6]), Clazz_newByteArray(-1, [3, 10, 2, 6, 3, 5, 10, 2, 3, 8, 5, 1, 4, 5, 8, 5, 0, 1, 9, 7]), Clazz_newByteArray(-1, [5, 10, 2, 3, 5, 2, 4, 4, 1, 9, 2, 5, 9, 4, 2, 1]), Clazz_newByteArray(-1, [8, 4, 5, 3, 8, 5, 3, 4, 3, 5, 1, 6]), Clazz_newByteArray(-1, [0, 4, 5, 3, 1, 0, 5, 5]), Clazz_newByteArray(-1, [8, 4, 5, 3, 8, 5, 3, 4, 9, 0, 5, 5, 0, 3, 5, 1]), Clazz_newByteArray(-1, [9, 4, 5, 7]), Clazz_newByteArray(-1, [4, 11, 7, 6, 4, 9, 11, 1, 9, 10, 11, 3]), Clazz_newByteArray(-1, [0, 8, 3, 7, 4, 9, 7, 5, 9, 11, 7, 2, 9, 10, 11, 3]), Clazz_newByteArray(-1, [1, 10, 11, 3, 1, 11, 4, 0, 1, 4, 0, 6, 7, 4, 11, 5]), Clazz_newByteArray(-1, [3, 1, 4, 1, 3, 4, 8, 6, 1, 10, 4, 1, 7, 4, 11, 5, 10, 11, 4, 1]), Clazz_newByteArray(-1, [4, 11, 7, 6, 9, 11, 4, 4, 9, 2, 11, 2, 9, 1, 2, 3]), Clazz_newByteArray(-1, [9, 7, 4, 6, 9, 11, 7, 2, 9, 1, 11, 1, 2, 11, 1, 5, 0, 8, 3, 7]), Clazz_newByteArray(-1, [11, 7, 4, 3, 11, 4, 2, 4, 2, 4, 0, 6]), Clazz_newByteArray(-1, [11, 7, 4, 3, 11, 4, 2, 4, 8, 3, 4, 5, 3, 2, 4, 1]), Clazz_newByteArray(-1, [2, 9, 10, 6, 2, 7, 9, 0, 2, 3, 7, 3, 7, 4, 9, 3]), Clazz_newByteArray(-1, [9, 10, 7, 1, 9, 7, 4, 6, 10, 2, 7, 1, 8, 7, 0, 5, 2, 0, 7, 1]), Clazz_newByteArray(-1, [3, 7, 10, 1, 3, 10, 2, 6, 7, 4, 10, 1, 1, 10, 0, 5, 4, 0, 10, 1]), Clazz_newByteArray(-1, [1, 10, 2, 7, 8, 7, 4, 7]), Clazz_newByteArray(-1, [4, 9, 1, 3, 4, 1, 7, 4, 7, 1, 3, 6]), Clazz_newByteArray(-1, [4, 9, 1, 3, 4, 1, 7, 4, 0, 8, 1, 5, 8, 7, 1, 1]), Clazz_newByteArray(-1, [4, 0, 3, 3, 7, 4, 3, 5]), Clazz_newByteArray(-1, [4, 8, 7, 7]), Clazz_newByteArray(-1, [9, 10, 8, 5, 10, 11, 8, 3]), Clazz_newByteArray(-1, [3, 0, 9, 3, 3, 9, 11, 4, 11, 9, 10, 6]), Clazz_newByteArray(-1, [0, 1, 10, 3, 0, 10, 8, 4, 8, 10, 11, 6]), Clazz_newByteArray(-1, [3, 1, 10, 3, 11, 3, 10, 5]), Clazz_newByteArray(-1, [1, 2, 11, 3, 1, 11, 9, 4, 9, 11, 8, 6]), Clazz_newByteArray(-1, [3, 0, 9, 3, 3, 9, 11, 4, 1, 2, 9, 5, 2, 11, 9, 1]), Clazz_newByteArray(-1, [0, 2, 11, 3, 8, 0, 11, 5]), Clazz_newByteArray(-1, [3, 2, 11, 7]), Clazz_newByteArray(-1, [2, 3, 8, 3, 2, 8, 10, 4, 10, 8, 9, 6]), Clazz_newByteArray(-1, [9, 10, 2, 3, 0, 9, 2, 5]), Clazz_newByteArray(-1, [2, 3, 8, 3, 2, 8, 10, 4, 0, 1, 8, 5, 1, 10, 8, 1]), Clazz_newByteArray(-1, [1, 10, 2, 7]), Clazz_newByteArray(-1, [1, 3, 8, 3, 9, 1, 8, 5]), Clazz_newByteArray(-1, [0, 9, 1, 7]), Clazz_newByteArray(-1, [0, 3, 8, 7]), null]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.api"); +Clazz_declareInterface(J.jvxl.api, "VertexDataServer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.api"); +Clazz_declareInterface(J.jvxl.api, "MeshDataServer", J.jvxl.api.VertexDataServer); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapesurface"); +Clazz_load(["J.jvxl.api.MeshDataServer", "J.shape.MeshCollection", "JU.P3i", "$.P4"], "J.shapesurface.Isosurface", ["java.util.Hashtable", "JU.A4", "$.AU", "$.BS", "$.CU", "$.Lst", "$.M3", "$.M4", "$.P3", "$.PT", "$.Quat", "$.Rdr", "$.SB", "$.V3", "J.jvxl.data.JvxlCoder", "$.JvxlData", "$.MeshData", "J.jvxl.readers.SurfaceGenerator", "J.shape.Mesh", "J.shapesurface.IsosurfaceMesh", "JU.C", "$.Escape", "$.Logger", "$.TempArray", "JV.JC", "$.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isomeshes = null; +this.thisMesh = null; +this.actualID = null; +this.iHaveBitSets = false; +this.explicitContours = false; +this.atomIndex = 0; +this.moNumber = 0; +this.moLinearCombination = null; +this.colorType = 0; +this.defaultColix = 0; +this.meshColix = 0; +this.center = null; +this.scale3d = 0; +this.isPhaseColored = false; +this.isColorExplicit = false; +this.scriptAppendix = ""; +this.sg = null; +this.withinDistance2 = 0; +this.isWithinNot = false; +this.withinPoints = null; +this.cutoffRange = null; +this.allowMesh = true; +this.script = null; +this.iHaveModelIndex = false; +this.nLCAO = 0; +this.lcaoDir = null; +this.associateNormals = false; +this.oldFileName = null; +this.newFileName = null; +this.ptXY = null; +this.keyXy = null; +Clazz_instantialize(this, arguments);}, J.shapesurface, "Isosurface", J.shape.MeshCollection, J.jvxl.api.MeshDataServer); +Clazz_prepareFields (c$, function(){ +this.isomeshes = new Array(4); +this.lcaoDir = new JU.P4(); +this.ptXY = new JU.P3i(); +}); +Clazz_overrideMethod(c$, "allocMesh", +function(thisID, m){ +var index = this.meshCount++; +this.meshes = this.isomeshes = JU.AU.ensureLength(this.isomeshes, this.meshCount * 2); +this.currentMesh = this.thisMesh = this.isomeshes[index] = (m == null ? new J.shapesurface.IsosurfaceMesh(this.vwr, thisID, this.colix, index) : m); +this.currentMesh.index = index; +if (this.sg != null) this.sg.setJvxlData(this.jvxlData = this.thisMesh.jvxlData); +}, "~S,J.shape.Mesh"); +Clazz_defineMethod(c$, "initShape", +function(){ +Clazz_superCall(this, J.shapesurface.Isosurface, "initShape", []); +this.myType = "isosurface"; +this.newSg(); +}); +Clazz_defineMethod(c$, "newSg", +function(){ +this.sg = new J.jvxl.readers.SurfaceGenerator(this.vwr, this, null, this.jvxlData = new J.jvxl.data.JvxlData()); +this.sg.params.showTiming = this.vwr.getBoolean(603979934); +this.sg.version = "Jmol " + JV.Viewer.getJmolVersion(); +}); +Clazz_defineMethod(c$, "clearSg", +function(){ +this.sg = null; +}); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +this.setPropI(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "setPropI", +function(propertyName, value, bs){ +if ("cache" === propertyName) { +if (this.currentMesh == null) return; +var id = this.currentMesh.thisID; +var imodel = this.currentMesh.modelIndex; +this.vwr.cachePut("cache://isosurface_" + id, (this.getPropI("jvxlDataXml", -1)).getBytes()); +this.deleteMeshI(this.currentMesh.index); +this.setPropI("init", null, null); +this.setPropI("thisID", id, null); +this.setPropI("modelIndex", Integer.$valueOf(imodel), null); +this.setPropI("fileName", "cache://isosurface_" + id, null); +this.setPropI("readFile", null, null); +this.setPropI("finalize", "isosurface ID " + JU.PT.esc(id) + (imodel >= 0 ? " modelIndex " + imodel : "") + " /*file*/" + JU.PT.esc("cache://isosurface_" + id), null); +this.setPropI("clear", null, null); +return; +}if ("delete" === propertyName) { +this.setPropertySuper(propertyName, value, bs); +if (!this.explicitID) this.nLCAO = this.nUnnamed = 0; +this.currentMesh = this.thisMesh = null; +return; +}if ("remapInherited" === propertyName) { +for (var i = this.meshCount; --i >= 0; ) { +if (this.isomeshes[i] != null && "#inherit;".equals(this.isomeshes[i].colorCommand)) this.isomeshes[i].remapColors(this.vwr, null, NaN); +} +return; +}if ("remapColor" === propertyName) { +if (this.thisMesh != null) this.thisMesh.remapColors(this.vwr, value, this.translucentLevel); +return; +}if ("thisID" === propertyName) { +if (this.actualID != null) value = this.actualID; +this.setPropertySuper("thisID", value, null); +return; +}if ("params" === propertyName) { +if (this.thisMesh != null) { +this.ensureMeshSource(); +this.thisMesh.checkAllocColixes(); +var data = value; +var colixes = data[0]; +var atomMap = null; +if (colixes != null) { +for (var i = 0; i < colixes.length; i++) { +var colix = colixes[i]; +var f = 0; +if (f > 0.01) colix = JU.C.getColixTranslucent3(colix, true, f); +colixes[i] = colix; +} +atomMap = Clazz_newIntArray (bs.length(), 0); +for (var pt = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), pt++) atomMap[i] = pt; + +}this.thisMesh.setVertexColixesForAtoms(this.vwr, colixes, atomMap, bs); +this.thisMesh.setVertexColorMap(); +}return; +}if ("atomcolor" === propertyName) { +if (this.thisMesh != null) { +this.ensureMeshSource(); +this.thisMesh.colorVertices(JU.C.getColixO(value), bs, true); +}return; +}if ("pointSize" === propertyName) { +if (this.thisMesh != null) { +this.thisMesh.volumeRenderPointSize = (value).floatValue(); +}return; +}if ("vertexcolor" === propertyName) { +if (this.thisMesh != null) { +this.thisMesh.colorVertices(JU.C.getColixO(value), bs, false); +}return; +}if ("colorPhase" === propertyName) { +var colors = value; +var colix0 = JU.C.getColix((colors[0]).intValue()); +var colix1 = JU.C.getColix((colors[1]).intValue()); +var id = (this.thisMesh != null ? this.thisMesh.thisID : JU.PT.isWild(this.previousMeshID) ? this.previousMeshID : null); +var list = this.getMeshList(id, false); +for (var i = list.size(); --i >= 0; ) this.setColorPhase(list.get(i), colix0, colix1); + +return; +}if ("color" === propertyName) { +var color = JU.C.getHexCode(JU.C.getColixO(value)); +if (this.thisMesh != null) { +this.setIsoMeshColor(this.thisMesh, color); +} else { +var list = this.getMeshList(JU.PT.isWild(this.previousMeshID) ? this.previousMeshID : null, false); +for (var i = list.size(); --i >= 0; ) this.setIsoMeshColor(list.get(i), color); + +}this.setPropertySuper(propertyName, value, bs); +return; +}if ("nocontour" === propertyName) { +if (this.thisMesh != null) { +this.thisMesh.deleteContours(); +}return; +}if ("fixed" === propertyName) { +this.isFixed = (value).booleanValue(); +this.setMeshI(); +return; +}if ("newObject" === propertyName) { +if (this.thisMesh != null) this.thisMesh.clearType(this.thisMesh.meshType, false); +return; +}if ("moveIsosurface" === propertyName) { +if (this.thisMesh != null && !this.thisMesh.isModelConnected) { +this.thisMesh.updateCoordinates(value, null); +this.thisMesh.altVertices = null; +}return; +}if ("refreshTrajectories" === propertyName) { +var m = ((value)[0]).intValue(); +for (var i = this.meshCount; --i >= 0; ) if (this.meshes[i].modelIndex == m && (this.meshes[i].connectedAtoms != null || this.meshes[i].isModelConnected)) (this.meshes[i]).updateCoordinates((value)[2], (value)[1]); + +return; +}if ("modelIndex" === propertyName) { +if (!this.iHaveModelIndex) { +this.modelIndex = (value).intValue(); +this.isFixed = (this.modelIndex < 0); +this.sg.params.modelIndex = Math.abs(this.modelIndex); +}return; +}if ("lcaoCartoon" === propertyName || "lonePair" === propertyName || "radical" === propertyName) { +var info = value; +if (!this.explicitID) { +this.setPropertySuper("thisID", null, null); +}if (!this.sg.setProp("lcaoCartoonCenter", info[2], null)) this.drawLcaoCartoon(info[0], info[1], info[3], ("lonePair" === propertyName ? 2 : "radical" === propertyName ? 1 : 0), this.thisMesh == null ? false : this.thisMesh.reverseColor); +return; +}if ("select" === propertyName) { +if (this.iHaveBitSets) return; +}if ("ignore" === propertyName) { +if (this.iHaveBitSets) return; +}if ("reversecolor" === propertyName) { +if (this.thisMesh != null) this.thisMesh.reverseColor = (value === Boolean.TRUE); +return; +}if ("meshcolor" === propertyName) { +var rgb = (value).intValue(); +this.meshColix = JU.C.getColix(rgb); +if (this.thisMesh != null) this.thisMesh.meshColix = this.meshColix; +return; +}if ("offset" === propertyName) { +var offset = JU.P3.newP(value); +if (offset.equals(JV.JC.center)) offset = null; +if (this.thisMesh != null) { +this.thisMesh.rotateTranslate(null, offset, true); +this.thisMesh.altVertices = null; +}return; +}if ("rotate" === propertyName) { +var pt4 = value; +if (this.thisMesh != null) { +this.thisMesh.rotateTranslate(JU.Quat.newP4(pt4), null, true); +this.thisMesh.altVertices = null; +}return; +}if ("bsDisplay" === propertyName) { +this.bsDisplay = value; +return; +}if ("displayWithin" === propertyName) { +var o = value; +this.displayWithinDistance2 = (o[0]).floatValue(); +this.isDisplayWithinNot = (this.displayWithinDistance2 < 0); +this.displayWithinDistance2 *= this.displayWithinDistance2; +this.displayWithinPoints = o[3]; +if (this.displayWithinPoints.size() == 0) this.displayWithinPoints = this.ms.getAtomPointVector(o[2]); +return; +}if ("finalize" === propertyName) { +if (this.thisMesh != null) { +var cmd = value; +if (cmd != null && !cmd.startsWith("; isosurface map")) { +this.thisMesh.setDiscreteColixes(this.sg.params.contoursDiscrete, this.sg.params.contourColixes); +this.setJvxlInfo(); +}this.setScriptInfo(cmd); +}this.clearSg(); +return; +}if ("connections" === propertyName) { +if (this.currentMesh != null) { +this.connections = value; +if (this.connections[0] >= 0 && this.connections[0] < this.ms.ac) this.currentMesh.connectedAtoms = this.connections; + else this.connections = this.currentMesh.connectedAtoms = null; +}return; +}if ("fixLattice" === propertyName) { +if (this.thisMesh != null) this.thisMesh.fixLattice(); +return; +}if ("slab" === propertyName) { +if (Clazz_instanceOf(value, Integer)) { +if (this.thisMesh != null) this.thisMesh.jvxlData.slabValue = (value).intValue(); +return; +}if (this.thisMesh != null) { +var slabInfo = value; +var tok = (slabInfo[0]).intValue(); +switch (tok) { +case 1073742018: +var data = slabInfo[1]; +var m = this.getMesh(data[1]); +if (m == null) return; +data[1] = m; +break; +} +this.slabPolygons(slabInfo); +return; +}}if ("cap" === propertyName) { +if (this.thisMesh != null && this.thisMesh.pc != 0) { +this.thisMesh.getMeshSlicer().slabPolygons(value, true); +this.thisMesh.initialize(this.thisMesh.lighting, null, null); +return; +}}if ("map" === propertyName) { +if (this.sg != null) this.sg.params.isMapped = true; +this.setProperty("squareData", Boolean.FALSE, null); +if (this.thisMesh == null || this.thisMesh.vc == 0) return; +}if ("probes" === propertyName) { +if (this.sg != null) { +this.sg.params.probes = value; +this.sg.params.probeValues = Clazz_newFloatArray (this.sg.params.probes.length, 0); +}return; +}if ("deleteVdw" === propertyName) { +for (var i = this.meshCount; --i >= 0; ) if (this.isomeshes[i].bsVdw != null && (bs == null || bs.intersects(this.isomeshes[i].bsVdw))) this.deleteMeshI(i); + +this.currentMesh = this.thisMesh = null; +return; +}if ("mapColor" === propertyName || "readFile" === propertyName) { +if (value == null) { +if (this.sg.params.filesData == null) { +value = this.getFileReader(this.sg.params.fileName); +} else { +value = this.sg.params.filesData; +var a = this.sg.params.filesData[0]; +var b = new Array(a.length); +for (var i = b.length; --i >= 0 && value != null; ) if ((b[i] = this.getFileReader(a[i])) == null) value = null; + +if (value != null) this.sg.params.filesData[0] = b; +}if (value == null) return; +}} else if ("atomIndex" === propertyName) { +this.atomIndex = (value).intValue(); +if (this.thisMesh != null) this.thisMesh.atomIndex = this.atomIndex; +} else if ("center" === propertyName) { +this.center.setT(value); +} else if ("colorRGB" === propertyName) { +var rgb = (value).intValue(); +if (rgb == 1296041985) { +this.colorType = rgb; +} else { +this.colorType = 0; +this.defaultColix = JU.C.getColix(rgb); +}} else if ("contour" === propertyName) { +this.explicitContours = true; +} else if ("functionXY" === propertyName) { +if (this.sg.params.state == 2) this.setScriptInfo(null); +} else if ("init" === propertyName) { +this.newSg(); +} else if ("getSurfaceSets" === propertyName) { +if (this.thisMesh != null) { +var bsSets; +if (Clazz_instanceOf(value,"JU.BS")) { +bsSets = (value); +if (bsSets.isEmpty()) bsSets = null; +} else { +bsSets = new JU.BS(); +var a = value; +for (var i = a.length; --i >= 0; ) { +if (a[i] > 0) bsSets.set(a[i] - 1); +} +}this.thisMesh.jvxlData.thisSet = bsSets; +this.thisMesh.calculatedVolume = null; +this.thisMesh.calculatedArea = null; +}} else if ("localName" === propertyName) { +value = this.vwr.getOutputChannel(value, null); +propertyName = "outputChannel"; +} else if ("molecularOrbital" === propertyName) { +this.isFixed = false; +this.setMeshI(); +if (Clazz_instanceOf(value, Integer)) { +this.moNumber = (value).intValue(); +this.moLinearCombination = null; +} else { +this.moLinearCombination = value; +this.moNumber = 0; +}if (!this.isColorExplicit) this.isPhaseColored = true; +if (this.sg == null || !this.sg.params.isMapped) { +var mat4 = this.ms.am[this.currentMesh.modelIndex].mat4; +if (mat4 != null) { +var minv = JU.M4.newM4(mat4); +minv.invert(); +this.setPropI("modelInvRotation", minv, null); +}}} else if ("phase" === propertyName) { +this.isPhaseColored = true; +} else if ("plane" === propertyName) { +} else if ("pocket" === propertyName) { +} else if ("scale3d" === propertyName) { +this.scale3d = (value).floatValue(); +if (this.thisMesh != null) { +this.thisMesh.scale3d = this.thisMesh.jvxlData.scale3d = this.scale3d; +this.thisMesh.altVertices = null; +}} else if ("title" === propertyName) { +if ((typeof(value)=='string') && "-".equals(value)) value = null; +this.setPropertySuper(propertyName, value, bs); +value = this.title; +} else if ("withinPoints" === propertyName) { +var o = value; +this.withinDistance2 = (o[0]).floatValue(); +this.isWithinNot = (this.withinDistance2 < 0); +this.withinDistance2 *= this.withinDistance2; +this.withinPoints = o[3]; +if (this.withinPoints.size() == 0) this.withinPoints = this.ms.getAtomPointVector(o[2]); +} else if (("nci" === propertyName || "orbital" === propertyName) && this.sg != null) { +this.sg.params.testFlags = (this.vwr.getBoolean(603979962) ? 2 : 0); +} else if ("cutoffRange" === propertyName) { +this.cutoffRange = value; +}if (this.sg != null && this.sg.setProp(propertyName, value, bs)) { +if (this.sg.isValid) { +if ("molecularOrbital" === propertyName) { +this.currentMesh.isModelConnected = true; +this.currentMesh.mat4 = this.ms.am[this.currentMesh.modelIndex].mat4; +}return; +}propertyName = "delete"; +}if ("init" === propertyName) { +this.explicitID = false; +this.scriptAppendix = ""; +var script = ((typeof(value)=='string') ? value : null); +var pt = (script == null ? -1 : script.indexOf("# ID=")); +this.actualID = (pt >= 0 ? JU.PT.getQuotedStringAt(script, pt) : null); +this.setPropertySuper("thisID", "+PREVIOUS_MESH+", null); +if (script != null && !(this.iHaveBitSets = this.getScriptBitSets(script, null))) this.sg.setProp("select", bs, null); +this.initializeIsosurface(); +this.sg.params.modelIndex = (this.isFixed ? -1 : this.modelIndex); +return; +}if ("clear" === propertyName) { +this.discardTempData(true); +return; +}if ("colorDensity" === propertyName) { +if (value != null && this.currentMesh != null) this.currentMesh.volumeRenderPointSize = (value).floatValue(); +return; +}if (propertyName === "deleteModelAtoms") { +var modelIndex = ((value)[2])[0]; +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +for (var i = this.meshCount; --i >= 0; ) { +var m = this.meshes[i]; +if (m == null) continue; +if (m.connectedAtoms != null) { +var iAtom = m.connectedAtoms[0]; +if (iAtom >= firstAtomDeleted + nAtomsDeleted) m.connectedAtoms[0] = iAtom - nAtomsDeleted; + else if (iAtom >= firstAtomDeleted) m.connectedAtoms = null; +}m.connectedAtoms = null; +if (m.modelIndex == modelIndex) { +this.meshCount--; +if (m === this.currentMesh) this.currentMesh = this.thisMesh = null; +this.meshes = this.isomeshes = JU.AU.deleteElements(this.meshes, i, 1); +} else if (m.modelIndex > modelIndex) { +m.modelIndex--; +if (m.atomIndex >= firstAtomDeleted) m.atomIndex -= nAtomsDeleted; +}} +return; +}this.setPropertySuper(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "getFileReader", +function(fileName){ +var value = this.vwr.fm.getBufferedReaderOrErrorMessageFromName(fileName, null, true, true); +if ((typeof(value)=='string')) { +JU.Logger.error("Isosurface: could not open file " + fileName + " -- " + value); +return null; +}if (!(Clazz_instanceOf(value,"java.io.BufferedReader"))) try { +value = JU.Rdr.getBufferedReader(value, "ISO-8859-1"); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +return value; +}, "~S"); +Clazz_defineMethod(c$, "setIsoMeshColor", +function(m, color){ +m.jvxlData.baseColor = color; +m.isColorSolid = true; +m.pcs = null; +m.colorsExplicit = false; +m.colorEncoder = null; +m.vertexColorMap = null; +}, "J.shapesurface.IsosurfaceMesh,~S"); +Clazz_defineMethod(c$, "setColorPhase", +function(m, colix0, colix1){ +m.colorPhased = true; +m.colix = m.jvxlData.minColorIndex = colix0; +m.jvxlData.maxColorIndex = colix1; +m.jvxlData.isBicolorMap = true; +m.jvxlData.colorDensity = false; +m.isColorSolid = false; +m.remapColors(this.vwr, null, this.translucentLevel); +}, "J.shapesurface.IsosurfaceMesh,~N,~N"); +Clazz_defineMethod(c$, "ensureMeshSource", +function(){ +var haveColors = (this.thisMesh.vertexSource != null); +if (haveColors) for (var i = this.thisMesh.vc; --i >= 0; ) if (this.thisMesh.vertexSource[i] < 0) { +haveColors = false; +break; +} +if (!haveColors) { +var source = this.thisMesh.vertexSource; +var vertexColixes = this.thisMesh.vcs; +var colix = (this.thisMesh.isColorSolid ? this.thisMesh.colix : 0); +this.setProperty("init", null, null); +this.setProperty("map", Boolean.FALSE, null); +this.setProperty("property", Clazz_newFloatArray (this.ms.ac, 0), null); +if (colix != 0) { +this.thisMesh.colorCommand = "color isosurface " + JU.C.getHexCode(colix); +this.setProperty("color", Integer.$valueOf(JU.C.getArgb(colix)), null); +}if (source != null) { +for (var i = this.thisMesh.vc; --i >= 0; ) if (source[i] < 0) source[i] = this.thisMesh.vertexSource[i]; + +this.thisMesh.vertexSource = source; +this.thisMesh.vcs = vertexColixes; +}}}); +Clazz_defineMethod(c$, "slabPolygons", +function(slabInfo){ +this.thisMesh.calculatedVolume = null; +this.thisMesh.calculatedArea = null; +this.thisMesh.getMeshSlicer().slabPolygons(slabInfo, false); +this.thisMesh.reinitializeLightingAndColor(this.vwr); +}, "~A"); +Clazz_defineMethod(c$, "setPropertySuper", +function(propertyName, value, bs){ +if (propertyName === "thisID" && this.currentMesh != null && this.currentMesh.thisID != null && this.currentMesh.thisID.equals(value)) { +this.checkExplicit(value); +return; +}this.currentMesh = this.thisMesh; +this.setPropMC(propertyName, value, bs); +this.thisMesh = this.currentMesh; +this.jvxlData = (this.thisMesh == null ? null : this.thisMesh.jvxlData); +if (this.sg != null) this.sg.setJvxlData(this.jvxlData); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "getPropertyData", +function(property, data){ +var m; +if (property === "keys") { +var keys = (Clazz_instanceOf(data[1],"JU.Lst") ? data[1] : new JU.Lst()); +data[1] = keys; +keys.addLast("info"); +keys.addLast("data"); +keys.addLast("atoms"); +}if (property === "colorEncoder") { +m = this.getMesh(data[0]); +return (m != null && (data[1] = m.colorEncoder) != null); +}if (property === "intersectPlane") { +m = this.getMesh(data[0]); +if (m == null || data.length < 4) return false; +data[3] = Integer.$valueOf(m.modelIndex); +m.getMeshSlicer().getIntersection(0, data[1], null, data[2], null, null, null, false, false, 134217750, false); +return true; +}if (property === "getBoundingBox") { +var id = data[0]; +m = this.getMesh(id); +if (m == null || m.vs == null) return false; +data[2] = m.jvxlData.boundingBox; +if (m.mat4 != null) { +var d = new Array(2); +d[0] = JU.P3.newP(m.jvxlData.boundingBox[0]); +d[1] = JU.P3.newP(m.jvxlData.boundingBox[1]); +var v = new JU.V3(); +m.mat4.getTranslation(v); +d[0].add(v); +d[1].add(v); +data[2] = d; +}return true; +}if (property === "unitCell") { +m = this.getMesh(data[0]); +return (m != null && (data[1] = m.getUnitCell()) != null); +}if (property === "getCenter") { +var index = (data[1]).intValue(); +if (index == -2147483648) { +var id = data[0]; +m = this.getMesh(id); +if (m == null || m.vs == null) return false; +var p = JU.P3.newP(m.jvxlData.boundingBox[0]); +p.add(m.jvxlData.boundingBox[1]); +p.scale(0.5); +if (m.mat4 != null) { +var v = new JU.V3(); +m.mat4.getTranslation(v); +p.add(v); +}data[2] = p; +return true; +}}return this.getPropDataMC(property, data); +}, "~S,~A"); +Clazz_overrideMethod(c$, "getProperty", +function(property, index){ +return this.getPropI(property, index); +}, "~S,~N"); +Clazz_defineMethod(c$, "getPropI", +function(property, index){ +var m = this.thisMesh; +if (index >= 0 && (index >= this.meshCount || (m = this.isomeshes[index]) == null)) return null; +var ret = this.getPropMC(property, index); +if (ret != null) return ret; +if (property === "message") { +var s = ""; +if (!this.jvxlData.isValid) return "invalid! (no atoms selected?)"; +if (!Float.isNaN(this.jvxlData.integration)) s += "integration " + this.jvxlData.integration; +if (this.shapeID == 24 || this.shapeID == 27 || this.shapeID == 28) { +if (this.jvxlData.cutoffRange == null) s += " with cutoff=" + this.jvxlData.cutoff; + else s += " with cutoffRange=" + JU.Escape.eAF(this.jvxlData.cutoffRange); +}if (this.shapeID == 27 || this.shapeID == 28) return s; +if (this.jvxlData.dataMin != 3.4028235E38) s += " min=" + this.jvxlData.dataMin + " max=" + this.jvxlData.dataMax; +s += "; " + JV.JC.shapeClassBases[this.shapeID].toLowerCase() + " count: " + this.getPropMC("count", index); +return s + this.getPropI("dataRangeStr", index) + this.jvxlData.msg; +}if (property === "dataRange") return this.getDataRange(m); +if (property === "dataRangeStr") { +var dataRange = this.getDataRange(m); +return (dataRange != null && dataRange[0] != 3.4028235E38 && dataRange[0] != dataRange[1] ? "\nisosurface full data range " + dataRange[0] + " to " + dataRange[1] + " with color scheme spanning " + dataRange[2] + " to " + dataRange[3] : ""); +}if (property === "moNumber") return Integer.$valueOf(this.moNumber); +if (property === "moLinearCombination") return this.moLinearCombination; +if (property === "nSets") { +var n = (m == null ? -2147483648 : m.nSets); +if (n == 0) { +this.calculateVolumeOrArea(m, true); +n = m.nSets; +}return Integer.$valueOf(n == -2147483648 ? 0 : Math.abs(m.nSets)); +}if (property === "area") return (m == null ? Float.$valueOf(NaN) : this.calculateVolumeOrArea(m, true)); +if (property === "volume") return (m == null ? Float.$valueOf(NaN) : this.calculateVolumeOrArea(m, false)); +if (m == null) return null; +if (property === "output") { +return (m.jvxlData.sbOut == null && m.jvxlData.jvxlFileTitle == null ? null : m.jvxlData.jvxlFileTitle + "\n" + (m.jvxlData.sbOut == null ? "" : m.jvxlData.sbOut.toString())); +}if (property === "cutoff") return Float.$valueOf(this.jvxlData.cutoff); +if (property === "cutoffRange") return this.jvxlData.cutoffRange; +if (property === "minMaxInfo") return Clazz_newFloatArray(-1, [this.jvxlData.dataMin, this.jvxlData.dataMax]); +if (property === "plane") return this.jvxlData.jvxlPlane; +if (property === "contours") return m.getContours(); +if (property === "pmesh" || property === "pmeshbin") return m.getPmeshData(property === "pmeshbin"); +if (property === "jvxlDataXml" || property === "jvxlMeshXml") { +var meshData = null; +this.jvxlData.slabInfo = null; +if (property === "jvxlMeshXml" || this.jvxlData.vertexDataOnly || m.bsSlabDisplay != null && m.bsSlabGhost == null) { +meshData = new J.jvxl.data.MeshData(); +this.fillMeshData(meshData, 1, m); +meshData.polygonColorData = J.shapesurface.Isosurface.getPolygonColorData(meshData.pc, meshData.pcs, (meshData.colorsExplicit ? meshData.pis : null), meshData.bsSlabDisplay); +} else if (m.bsSlabGhost != null) { +this.jvxlData.slabInfo = m.slabOptions.toString(); +}var sb = new JU.SB(); +this.getMeshCommand(sb, m.index); +m.setJvxlColorMap(true); +return J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData, meshData, this.title, "", true, 1, sb.toString(), null); +}if (property === "jvxlFileInfo") { +return J.jvxl.data.JvxlCoder.jvxlGetInfo(this.jvxlData); +}if (property === "command") { +var sb = new JU.SB(); +var list = this.getMeshList((index < 0 ? this.previousMeshID : m.thisID), false); +for (var i = list.size(); --i >= 0; ) this.getMeshCommand(sb, list.get(i).index); + +return sb.toString(); +}if (property === "atoms") { +return m.surfaceAtoms; +}if (property === "colorEncoder") return m.colorEncoder; +if (property === "values" || property === "value") { +return m.probeValues; +}return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "getDataRange", +function(mesh){ +return (mesh == null ? null : mesh.getDataRange()); +}, "J.shapesurface.IsosurfaceMesh"); +Clazz_defineMethod(c$, "calculateVolumeOrArea", +function(mesh, isArea){ +if (isArea) { +if (mesh.calculatedArea != null) return mesh.calculatedArea; +} else { +if (mesh.calculatedVolume != null) return mesh.calculatedVolume; +}var meshData = new J.jvxl.data.MeshData(); +this.fillMeshData(meshData, 1, mesh); +meshData.nSets = mesh.nSets; +meshData.vertexSets = mesh.vertexSets; +if (!isArea && mesh.jvxlData.colorDensity) { +var f = mesh.jvxlData.voxelVolume; +f *= (mesh.bsSlabDisplay == null ? mesh.vc : mesh.bsSlabDisplay.cardinality()); +return mesh.calculatedVolume = Float.$valueOf(f); +}var ret = J.jvxl.data.MeshData.calculateVolumeOrArea(meshData, mesh.jvxlData.thisSet, isArea, false); +if (mesh.nSets <= 0) mesh.nSets = -meshData.nSets; +if (isArea) mesh.calculatedArea = ret; + else mesh.calculatedVolume = ret; +return ret; +}, "J.shapesurface.IsosurfaceMesh,~B"); +c$.getPolygonColorData = Clazz_defineMethod(c$, "getPolygonColorData", +function(ccount, colixes, polygons, bsSlabDisplay){ +var isExplicit = (polygons != null); +if (colixes == null && polygons == null) return null; +var list1 = new JU.SB(); +var count = 0; +var colix = 0; +var color = 0; +var colorNext = 0; +var done = false; +for (var i = 0; i < ccount || (done = true) == true; i++) { +if (!done && bsSlabDisplay != null && !bsSlabDisplay.get(i)) continue; +if (done || (isExplicit ? (colorNext = polygons[i][4]) != color : colixes[i] != colix)) { +if (count != 0) list1.append(" ").appendI(count).append(" ").appendI((isExplicit ? color : colix == 0 ? 0 : JU.C.getArgb(colix))); +if (done) break; +if (isExplicit) color = colorNext; + else colix = colixes[i]; +count = 1; +} else { +count++; +}} +list1.append("\n"); +return list1.toString(); +}, "~N,~A,~A,JU.BS"); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +this.clean(); +var sb = new JU.SB(); +sb.append("\n"); +for (var i = 0; i < this.meshCount; i++) this.getMeshCommand(sb, i); + +return sb.toString(); +}); +Clazz_defineMethod(c$, "getMeshCommand", +function(sb, i){ +var imesh = this.meshes[i]; +if (imesh == null || imesh.scriptCommand == null) return; +var cmd = imesh.scriptCommand; +var modelCount = this.ms.mc; +if (modelCount > 1) J.shape.Shape.appendCmd(sb, "frame " + this.vwr.getModelNumberDotted(imesh.modelIndex)); +cmd = JU.PT.rep(cmd, ";; isosurface map", " map"); +cmd = JU.PT.rep(cmd, "; isosurface map", " map"); +if (cmd.endsWith(" map")) cmd = cmd.substring(0, cmd.length - 4); +cmd = cmd.$replace('\t', ' '); +cmd = JU.PT.rep(cmd, ";#", "; #"); +var pt = cmd.indexOf("; #"); +if (pt >= 0) cmd = cmd.substring(0, pt); +if (imesh.connectedAtoms != null) cmd += " connect " + JU.Escape.eAI(imesh.connectedAtoms); +cmd = JU.PT.trim(cmd, ";"); +if (imesh.linkedMesh != null) cmd += " LINK"; +if (this.myType === "lcaoCartoon" && imesh.atomIndex >= 0) cmd += " ATOMINDEX " + imesh.atomIndex; +J.shape.Shape.appendCmd(sb, cmd); +var id = this.myType + " ID " + JU.PT.esc(imesh.thisID); +if (imesh.jvxlData.thisSet != null && !imesh.jvxlData.thisSet.isEmpty()) { +J.shape.Shape.appendCmd(sb, id + (imesh.jvxlData.thisSet.cardinality() == 1 ? " set " + (imesh.jvxlData.thisSet.nextSetBit(0) + 1) : " subset " + imesh.jvxlData.thisSet)); +}if (imesh.mat4 != null && !imesh.isModelConnected) J.shape.Shape.appendCmd(sb, id + " move " + JU.Escape.matrixToScript(imesh.mat4)); +if (imesh.scale3d != 0) J.shape.Shape.appendCmd(sb, id + " scale3d " + imesh.scale3d); +if (imesh.jvxlData.slabValue != -2147483648) J.shape.Shape.appendCmd(sb, id + " slab " + imesh.jvxlData.slabValue); +if (imesh.slabOptions != null) J.shape.Shape.appendCmd(sb, imesh.slabOptions.toString()); +if (cmd.charAt(0) != '#') { +if (this.allowMesh) J.shape.Shape.appendCmd(sb, imesh.getState(this.myType)); +if (!imesh.isColorSolid && imesh.colorType == 0 && JU.C.isColixTranslucent(imesh.colix)) J.shape.Shape.appendCmd(sb, "color " + this.myType + " " + J.shape.Shape.getTranslucentLabel(imesh.colix)); +if (imesh.colorCommand != null && imesh.colorType == 0 && !imesh.colorCommand.equals("#inherit;")) { +J.shape.Shape.appendCmd(sb, imesh.colorCommand); +}var colorArrayed = (imesh.isColorSolid && imesh.pcs != null); +if (imesh.isColorSolid && imesh.colorType == 0 && !imesh.colorsExplicit && !colorArrayed) { +J.shape.Shape.appendCmd(sb, J.shape.Shape.getColorCommandUnk(this.myType, imesh.colix, this.translucentAllowed)); +} else if (imesh.jvxlData.isBicolorMap && imesh.colorPhased) { +J.shape.Shape.appendCmd(sb, "color isosurface phase " + J.shape.Shape.encodeColor(imesh.jvxlData.minColorIndex) + " " + J.shape.Shape.encodeColor(imesh.jvxlData.maxColorIndex)); +}if (imesh.vertexColorMap != null) for (var entry, $entry = imesh.vertexColorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var bs = entry.getValue(); +if (!bs.isEmpty()) J.shape.Shape.appendCmd(sb, "color " + this.myType + " " + JU.Escape.eBS(bs) + " " + entry.getKey()); +} +}}, "JU.SB,~N"); +Clazz_defineMethod(c$, "getScriptBitSets", +function(script, bsCmd){ +this.script = script; +var i; +this.iHaveModelIndex = false; +this.modelIndex = -1; +if (script != null && (i = script.indexOf("MODEL({")) >= 0) { +var j = script.indexOf("})", i); +if (j > 0) { +var bs = JU.BS.unescape(script.substring(i + 3, j + 1)); +this.modelIndex = (bs == null ? -1 : bs.nextSetBit(0)); +this.iHaveModelIndex = (this.modelIndex >= 0); +}}if (script == null) return false; +this.getCapSlabInfo(script); +i = script.indexOf("# ({"); +if (i < 0) return false; +var j = script.indexOf("})", i); +if (j < 0) return false; +var bs = JU.BS.unescape(script.substring(i + 2, j + 2)); +if (bsCmd == null) this.sg.setProp("select", bs, null); + else bsCmd[0] = bs; +if ((i = script.indexOf("({", j)) < 0) return true; +j = script.indexOf("})", i); +if (j < 0) return false; +bs = JU.BS.unescape(script.substring(i + 1, j + 1)); +if (bsCmd == null) this.sg.setProp("ignore", bs, null); + else bsCmd[1] = bs; +if ((i = script.indexOf("/({", j)) == j + 2) { +if ((j = script.indexOf("})", i)) < 0) return false; +bs = JU.BS.unescape(script.substring(i + 3, j + 1)); +if (bsCmd == null) this.ms.setTrajectoryBs(bs); + else bsCmd[2] = bs; +}return true; +}, "~S,~A"); +Clazz_defineMethod(c$, "getCapSlabInfo", +function(script){ +var i = script.indexOf("# SLAB="); +if (i >= 0) this.sg.setProp("slab", this.getCapSlabObject(JU.PT.getQuotedStringAt(script, i), false), null); +i = script.indexOf("# CAP="); +if (i >= 0) this.sg.setProp("slab", this.getCapSlabObject(JU.PT.getQuotedStringAt(script, i), true), null); +}, "~S"); +Clazz_defineMethod(c$, "getCapSlabObject", +function(s, isCap){ +try { +if (s.indexOf("array") == 0) { +var pts = JU.PT.split(s.substring(6, s.length - 1), ","); +return JU.TempArray.getSlabObjectType(1812599299, Clazz_newArray(-1, [JU.Escape.uP(pts[0]), JU.Escape.uP(pts[1]), JU.Escape.uP(pts[2]), JU.Escape.uP(pts[3])]), isCap, null); +}var plane = JU.Escape.uP(s); +if (Clazz_instanceOf(plane,"JU.P4")) return JU.TempArray.getSlabObjectType(134217750, plane, isCap, null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return null; +}, "~S,~B"); +Clazz_defineMethod(c$, "initializeIsosurface", +function(){ +if (!this.iHaveModelIndex) this.modelIndex = this.vwr.am.cmi; +this.atomIndex = -1; +this.bsDisplay = null; +this.center = JU.P3.new3(NaN, 0, 0); +this.colix = 5; +this.connections = null; +this.cutoffRange = null; +this.colorType = this.defaultColix = this.meshColix = 0; +this.displayWithinPoints = null; +this.explicitContours = false; +this.isFixed = (this.modelIndex < 0); +this.isPhaseColored = this.isColorExplicit = false; +this.linkedMesh = null; +if (this.modelIndex < 0) this.modelIndex = 0; +this.scale3d = 0; +this.title = null; +this.translucentLevel = 0; +this.withinPoints = null; +this.initState(); +}); +Clazz_defineMethod(c$, "initState", +function(){ +this.associateNormals = true; +this.sg.initState(); +}); +Clazz_defineMethod(c$, "setMeshI", +function(){ +this.thisMesh.visible = true; +if ((this.thisMesh.atomIndex = this.atomIndex) >= 0) this.thisMesh.modelIndex = this.ms.at[this.atomIndex].mi; + else if (this.isFixed) this.thisMesh.modelIndex = -1; + else if (this.modelIndex >= 0) this.thisMesh.modelIndex = this.modelIndex; + else this.thisMesh.modelIndex = this.vwr.am.cmi; +this.thisMesh.scriptCommand = this.script; +this.thisMesh.ptCenter.setT(this.center); +this.thisMesh.scale3d = (this.thisMesh.jvxlData.jvxlPlane == null ? 0 : this.scale3d); +}); +Clazz_defineMethod(c$, "discardTempData", +function(discardAll){ +if (!discardAll) return; +this.title = null; +if (this.thisMesh == null) return; +this.thisMesh.surfaceSet = null; +}, "~B"); +Clazz_defineMethod(c$, "getDefaultColix", +function(){ +if (this.defaultColix != 0) return this.defaultColix; +if (!this.sg.jvxlData.wasCubic) return this.colix; +var argb = (this.sg.params.cutoff >= 0 ? -11525984 : -6283184); +return JU.C.getColix(argb); +}); +Clazz_defineMethod(c$, "drawLcaoCartoon", +function(z, x, rotAxis, nElectrons, reverseColor){ +var lcaoCartoon = this.sg.setLcao(); +var addAnti = (lcaoCartoon.indexOf("anti-sp") >= 0); +if (addAnti) { +lcaoCartoon = lcaoCartoon.substring(5); +}var rotRadians = rotAxis.x + rotAxis.y + rotAxis.z; +this.defaultColix = JU.C.getColix(this.sg.params.colorPos); +var colixNeg = JU.C.getColix(this.sg.params.colorNeg); +if (reverseColor) { +var c = colixNeg; +colixNeg = this.defaultColix; +this.defaultColix = c; +}var y = new JU.V3(); +var isReverse = (lcaoCartoon.length > 0 && lcaoCartoon.charAt(0) == '-'); +if (isReverse) lcaoCartoon = lcaoCartoon.substring(1); +var sense = (isReverse ? -1 : 1); +y.cross(z, x); +if (rotRadians != 0) { +var a = new JU.A4(); +if (rotAxis.x != 0) a.setVA(x, rotRadians); + else if (rotAxis.y != 0) a.setVA(y, rotRadians); + else a.setVA(z, rotRadians); +var m = new JU.M3().setAA(a); +m.rotate(x); +m.rotate(y); +m.rotate(z); +}if (this.thisMesh == null && this.nLCAO == 0) this.nLCAO = this.meshCount; +var id = (this.thisMesh == null ? (nElectrons > 0 ? "lp" : "lcao") + (++this.nLCAO) + "_" + lcaoCartoon : this.thisMesh.thisID); +if (this.thisMesh == null) this.allocMesh(id, null); +if (lcaoCartoon.equals("px")) { +this.thisMesh.thisID += "a"; +var meshA = this.thisMesh; +this.createLcaoLobe(x, sense, nElectrons); +if (nElectrons > 0) return; +this.setProperty("thisID", id + "b", null); +this.createLcaoLobe(x, -sense, 0); +this.thisMesh.colix = colixNeg; +this.linkedMesh = this.thisMesh.linkedMesh = meshA; +return; +}if (lcaoCartoon.equals("py")) { +this.thisMesh.thisID += "a"; +var meshA = this.thisMesh; +this.createLcaoLobe(y, sense, nElectrons); +if (nElectrons > 0) return; +this.setProperty("thisID", id + "b", null); +this.createLcaoLobe(y, -sense, 0); +this.thisMesh.colix = colixNeg; +this.linkedMesh = this.thisMesh.linkedMesh = meshA; +return; +}var meshA = this.thisMesh; +if (lcaoCartoon.equals("pz")) { +meshA.thisID += "a"; +this.createLcaoLobe(z, sense, nElectrons); +if (nElectrons > 0) return; +this.setProperty("thisID", id + "b", null); +this.createLcaoLobe(z, -sense, 0); +this.thisMesh.colix = colixNeg; +this.linkedMesh = this.thisMesh.linkedMesh = meshA; +return; +}if (lcaoCartoon.equals("pza") || lcaoCartoon.indexOf("sp") == 0 || lcaoCartoon.indexOf("d") == 0 || lcaoCartoon.indexOf("lp") == 0) { +this.createLcaoLobe(z, sense, nElectrons); +if (addAnti && nElectrons == 0) { +meshA.thisID += "a"; +this.setProperty("thisID", id + "b", null); +this.createLcaoLobe(z, -sense / 2, 0); +this.thisMesh.colix = colixNeg; +this.linkedMesh = this.thisMesh.linkedMesh = meshA; +}return; +}if (lcaoCartoon.equals("pzb")) { +this.createLcaoLobe(z, -sense, nElectrons); +return; +}if (lcaoCartoon.equals("pxa")) { +this.createLcaoLobe(x, sense, nElectrons); +return; +}if (lcaoCartoon.equals("pxb")) { +this.createLcaoLobe(x, -sense, nElectrons); +return; +}if (lcaoCartoon.equals("pya")) { +this.createLcaoLobe(y, sense, nElectrons); +return; +}if (lcaoCartoon.equals("pyb")) { +this.createLcaoLobe(y, -sense, nElectrons); +return; +}if (lcaoCartoon.equals("spacefill") || lcaoCartoon.equals("cpk")) { +this.createLcaoLobe(null, 2 * this.ms.at[this.atomIndex].getRadius(), nElectrons); +return; +}this.createLcaoLobe(null, 1, nElectrons); +return; +}, "JU.V3,JU.V3,JU.V3,~N,~B"); +Clazz_defineMethod(c$, "createLcaoLobe", +function(lobeAxis, factor, nElectrons){ +this.initState(); +if (JU.Logger.debugging) { +JU.Logger.debug("creating isosurface ID " + this.thisMesh.thisID); +}if (lobeAxis == null) { +this.setProperty("sphere", Float.$valueOf(factor / 2), null); +} else { +this.lcaoDir.x = lobeAxis.x * factor; +this.lcaoDir.y = lobeAxis.y * factor; +this.lcaoDir.z = lobeAxis.z * factor; +this.lcaoDir.w = 0.7; +this.setProperty(nElectrons == 2 ? "lp" : nElectrons == 1 ? "rad" : "lobe", this.lcaoDir, null); +}this.thisMesh.colix = this.defaultColix; +this.setScriptInfo(null); +}, "JU.V3,~N,~N"); +Clazz_overrideMethod(c$, "invalidateTriangles", +function(){ +this.thisMesh.invalidatePolygons(); +}); +Clazz_overrideMethod(c$, "setOutputChannel", +function(binaryDoc, out){ +binaryDoc.setOutputChannel(out); +}, "javajs.api.GenericBinaryDocument,JU.OC"); +Clazz_overrideMethod(c$, "fillMeshData", +function(meshData, mode, mesh){ +if (meshData == null) { +if (this.thisMesh == null) this.allocMesh(null, null); +if (!this.thisMesh.isMerged) this.thisMesh.clearType(this.myType, this.sg.params.iAddGridPoints); +this.thisMesh.connectedAtoms = this.connections; +this.thisMesh.colix = this.getDefaultColix(); +this.thisMesh.colorType = this.colorType; +this.thisMesh.meshColix = this.meshColix; +if (this.isPhaseColored || this.thisMesh.jvxlData.isBicolorMap) this.thisMesh.isColorSolid = false; +return; +}if (mesh == null) mesh = this.thisMesh; +if (mesh == null) return; +switch (mode) { +case 1: +meshData.mergeVertexCount0 = mesh.mergeVertexCount0; +meshData.vs = mesh.vs; +meshData.vertexSource = mesh.vertexSource; +meshData.vvs = mesh.vvs; +meshData.vc = mesh.vc; +meshData.vertexIncrement = mesh.vertexIncrement; +meshData.pc = mesh.pc; +meshData.pis = mesh.pis; +meshData.pcs = mesh.pcs; +meshData.bsSlabDisplay = mesh.bsSlabDisplay; +meshData.bsSlabGhost = mesh.bsSlabGhost; +meshData.slabColix = mesh.slabColix; +meshData.slabMeshType = mesh.slabMeshType; +meshData.polygonCount0 = mesh.polygonCount0; +meshData.vertexCount0 = mesh.vertexCount0; +meshData.slabOptions = mesh.slabOptions; +meshData.colorsExplicit = mesh.colorsExplicit; +return; +case 2: +if (mesh.vcs == null || mesh.vc > mesh.vcs.length) mesh.vcs = Clazz_newShortArray (mesh.vc, 0); +meshData.vcs = mesh.vcs; +return; +case 3: +mesh.surfaceSet = meshData.surfaceSet; +mesh.vertexSets = meshData.vertexSets; +mesh.nSets = meshData.nSets; +return; +case 4: +mesh.vs = meshData.vs; +mesh.vvs = meshData.vvs; +mesh.vc = meshData.vc; +mesh.vertexIncrement = meshData.vertexIncrement; +mesh.vertexSource = meshData.vertexSource; +mesh.pc = meshData.pc; +mesh.pis = meshData.pis; +mesh.pcs = meshData.pcs; +mesh.bsSlabDisplay = meshData.bsSlabDisplay; +mesh.bsSlabGhost = meshData.bsSlabGhost; +mesh.slabColix = meshData.slabColix; +mesh.slabMeshType = meshData.slabMeshType; +mesh.polygonCount0 = meshData.polygonCount0; +mesh.vertexCount0 = meshData.vertexCount0; +mesh.mergeVertexCount0 = meshData.mergeVertexCount0; +mesh.slabOptions = meshData.slabOptions; +mesh.colorsExplicit = meshData.colorsExplicit; +return; +} +}, "J.jvxl.data.MeshData,~N,J.shapesurface.IsosurfaceMesh"); +Clazz_overrideMethod(c$, "notifySurfaceGenerationCompleted", +function(){ +this.setMeshI(); +this.setBsVdw(); +this.thisMesh.surfaceAtoms = this.sg.params.bsSelected; +this.thisMesh.insideOut = this.sg.params.isInsideOut(); +this.thisMesh.isModelConnected = this.sg.params.isModelConnected; +this.thisMesh.vertexSource = this.sg.params.vertexSource; +this.thisMesh.oabc = this.sg.getOriginVaVbVc(); +this.thisMesh.calculatedArea = null; +this.thisMesh.calculatedVolume = null; +this.thisMesh.probeValues = this.sg.params.probeValues; +if (!this.thisMesh.isMerged) { +this.thisMesh.initialize(this.sg.params.isFullyLit() ? 1073741964 : 1073741958, null, this.sg.params.thePlane); +if (this.jvxlData.fixedLattice != null) { +this.thisMesh.lattice = this.jvxlData.fixedLattice; +this.thisMesh.fixLattice(); +}return this.thisMesh.setColorsFromJvxlData(this.sg.params.colorRgb); +}if (!this.sg.params.allowVolumeRender) this.thisMesh.jvxlData.allowVolumeRender = false; +this.thisMesh.setColorsFromJvxlData(this.sg.params.colorRgb); +if (this.thisMesh.jvxlData.slabInfo != null) this.vwr.runScriptCautiously("isosurface " + this.thisMesh.jvxlData.slabInfo); +if (this.sg.params.psi_monteCarloCount > 0) this.thisMesh.diameter = -1; +return false; +}); +Clazz_overrideMethod(c$, "notifySurfaceMappingCompleted", +function(){ +if (!this.thisMesh.isMerged) this.thisMesh.initialize(this.sg.params.isFullyLit() ? 1073741964 : 1073741958, null, this.sg.params.thePlane); +this.setBsVdw(); +this.thisMesh.isColorSolid = false; +this.thisMesh.colorDensity = this.jvxlData.colorDensity; +this.thisMesh.volumeRenderPointSize = this.jvxlData.pointSize; +this.thisMesh.colorEncoder = this.sg.params.colorEncoder; +this.thisMesh.getContours(); +if (this.thisMesh.jvxlData.nContours != 0 && this.thisMesh.jvxlData.nContours != -1) this.explicitContours = true; +if (this.explicitContours && this.thisMesh.jvxlData.jvxlPlane != null) this.thisMesh.havePlanarContours = true; +this.setPropertySuper("token", Integer.$valueOf(this.explicitContours ? 1073742046 : 1073741938), null); +this.setPropertySuper("token", Integer.$valueOf(this.explicitContours ? 1073741898 : 1073742039), null); +if (!this.thisMesh.isMerged) this.thisMesh.setJvxlDataRendering(); +if (this.sg.params.slabInfo != null) { +this.thisMesh.slabPolygonsList(this.sg.params.slabInfo, false); +this.thisMesh.reinitializeLightingAndColor(this.vwr); +}this.thisMesh.setColorCommand(); +}); +Clazz_defineMethod(c$, "setBsVdw", +function(){ +if (this.sg.bsVdw == null) return; +if (this.thisMesh.bsVdw == null) this.thisMesh.bsVdw = new JU.BS(); +this.thisMesh.bsVdw.or(this.sg.bsVdw); +}); +Clazz_overrideMethod(c$, "calculateGeodesicSurface", +function(bsSelected, envelopeRadius){ +return this.vwr.calculateSurface(bsSelected, envelopeRadius); +}, "JU.BS,~N"); +Clazz_overrideMethod(c$, "getSurfacePointIndexAndFraction", +function(cutoff, isCutoffAbsolute, x, y, z, offset, vA, vB, valueA, valueB, pointA, edgeVector, isContourType, fReturn){ +return 0; +}, "~N,~B,~N,~N,~N,JU.P3i,~N,~N,~N,~N,JU.T3,JU.V3,~B,~A"); +Clazz_overrideMethod(c$, "addVertexCopy", +function(vertexXYZ, value, assocVertex, asCopy){ +if (this.cutoffRange != null && (value < this.cutoffRange[0] || value > this.cutoffRange[1])) return -1; +return (this.withinPoints != null && !J.shape.Mesh.checkWithin(vertexXYZ, this.withinPoints, this.withinDistance2, this.isWithinNot) ? -1 : this.thisMesh.addVertexCopy(vertexXYZ, value, assocVertex, this.associateNormals, asCopy)); +}, "JU.T3,~N,~N,~B"); +Clazz_overrideMethod(c$, "addTriangleCheck", +function(iA, iB, iC, check, iContour, isAbsolute, color){ +return (iA < 0 || iB < 0 || iC < 0 || isAbsolute && !J.jvxl.data.MeshData.checkCutoff(iA, iB, iC, this.thisMesh.vvs) ? -1 : this.thisMesh.addTriangleCheck(iA, iB, iC, check, iContour, color)); +}, "~N,~N,~N,~N,~N,~B,~N"); +Clazz_defineMethod(c$, "setScriptInfo", +function(strCommand){ +var script = (strCommand == null ? this.sg.params.script : strCommand); +var pt = (script == null ? -1 : script.indexOf("; isosurface map")); +if (pt == 0) { +if (this.thisMesh.scriptCommand == null) return; +pt = this.thisMesh.scriptCommand.indexOf("; isosurface map"); +if (pt >= 0) this.thisMesh.scriptCommand = this.thisMesh.scriptCommand.substring(0, pt); +this.thisMesh.scriptCommand += script; +return; +}this.thisMesh.title = this.sg.params.title; +this.thisMesh.dataType = this.sg.params.dataType; +this.thisMesh.scale3d = this.sg.params.scale3d; +if (script != null) { +if (this.oldFileName != null) { +script = script.$replace(this.oldFileName, this.newFileName); +}if (script.charAt(0) == ' ') { +script = this.myType + " ID " + JU.PT.esc(this.thisMesh.thisID) + script; +pt = script.indexOf("; isosurface map"); +}}if (pt > 0 && this.scriptAppendix.length > 0) this.thisMesh.scriptCommand = script.substring(0, pt) + this.scriptAppendix + script.substring(pt); + else this.thisMesh.scriptCommand = script + this.scriptAppendix; +if (!this.explicitID && script != null && (pt = script.indexOf("# ID=")) >= 0) this.thisMesh.thisID = JU.PT.getQuotedStringAt(script, pt); +}, "~S"); +Clazz_overrideMethod(c$, "addRequiredFile", +function(fileName){ +fileName = " # /*file*/\"" + fileName + "\""; +if (this.scriptAppendix.indexOf(fileName) < 0) this.scriptAppendix += fileName; +}, "~S"); +Clazz_overrideMethod(c$, "setRequiredFile", +function(oldName, fileName){ +this.oldFileName = oldName; +this.newFileName = fileName; +}, "~S,~S"); +Clazz_defineMethod(c$, "setJvxlInfo", +function(){ +if (this.sg.jvxlData !== this.jvxlData || this.sg.jvxlData !== this.thisMesh.jvxlData) this.jvxlData = this.thisMesh.jvxlData = this.sg.jvxlData; +}); +Clazz_overrideMethod(c$, "getShapeDetail", +function(){ +var V = new JU.Lst(); +for (var i = 0; i < this.meshCount; i++) { +var info = new java.util.Hashtable(); +var mesh = this.isomeshes[i]; +if (mesh == null || mesh.vs == null || mesh.vc == 0 && mesh.pc == 0) continue; +this.addMeshInfo(mesh, info); +V.addLast(info); +} +return V; +}); +Clazz_defineMethod(c$, "addMeshInfo", +function(mesh, info){ +info.put("ID", (mesh.thisID == null ? "" : mesh.thisID)); +info.put("visible", Boolean.$valueOf(mesh.visible)); +info.put("vertexCount", Integer.$valueOf(mesh.vc)); +if (mesh.calculatedVolume != null) info.put("volume", mesh.calculatedVolume); +if (mesh.calculatedArea != null) info.put("area", mesh.calculatedArea); +if (!Float.isNaN(mesh.ptCenter.x)) info.put("center", mesh.ptCenter); +if (mesh.mat4 != null) info.put("mat4", mesh.mat4); +if (mesh.scale3d != 0) info.put("scale3d", Float.$valueOf(mesh.scale3d)); +info.put("xyzMin", mesh.jvxlData.boundingBox[0]); +info.put("xyzMax", mesh.jvxlData.boundingBox[1]); +var s = J.jvxl.data.JvxlCoder.jvxlGetInfo(mesh.jvxlData); +if (s != null) info.put("jvxlInfo", s.$replace('\n', ' ')); +info.put("modelIndex", Integer.$valueOf(mesh.modelIndex)); +info.put("color", JU.CU.colorPtFromInt(JU.C.getArgb(mesh.colix), null)); +if (mesh.colorEncoder != null) info.put("colorKey", mesh.colorEncoder.getColorKey()); +if (mesh.title != null) info.put("title", mesh.title); +if (mesh.jvxlData.contourValues != null || mesh.jvxlData.contourValuesUsed != null) info.put("contours", mesh.getContourList(this.vwr)); +}, "J.shapesurface.IsosurfaceMesh,java.util.Map"); +Clazz_overrideMethod(c$, "getPlane", +function(x){ +return null; +}, "~N"); +Clazz_overrideMethod(c$, "getValue", +function(x, y, z, ptyz){ +return 0; +}, "~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +if (this.keyXy != null && x >= this.keyXy[0] && y >= this.keyXy[1] && x < this.keyXy[2] && y < this.keyXy[3]) { +this.hoverKey(x, y); +return true; +}if (!this.vwr.getDrawHover()) return false; +var s = this.findValue(x, y, false, bsVisible); +if (s == null) return false; +this.vwr.hoverOnPt(x, y, s, this.pickedMesh.thisID, this.pickedPt); +return true; +}, "~N,~N,JU.BS"); +Clazz_defineMethod(c$, "hoverKey", +function(x, y){ +try { +var s; +var f = 1 - 1.0 * (y - this.keyXy[1]) / (this.keyXy[3] - this.keyXy[1]); +if (this.thisMesh.showContourLines) { +var vContours = this.thisMesh.getContours(); +if (vContours == null) { +if (this.thisMesh.jvxlData.contourValues == null) return; +var i = Clazz_doubleToInt(Math.floor(f * this.thisMesh.jvxlData.contourValues.length)); +if (i < 0 || i > this.thisMesh.jvxlData.contourValues.length) return; +s = "" + this.thisMesh.jvxlData.contourValues[i]; +} else { +var i = Clazz_doubleToInt(Math.floor(f * vContours.length)); +if (i < 0 || i > vContours.length) return; +s = "" + (vContours[i].get(2)).floatValue(); +}} else { +var g = this.thisMesh.colorEncoder.quantize(f, true); +f = this.thisMesh.colorEncoder.quantize(f, false); +s = "" + g + " - " + f; +}this.vwr.hoverOnPt(x, y, s, null, null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~N,~N"); +Clazz_overrideMethod(c$, "checkObjectClicked", +function(x, y, action, bsVisible, drawPicking){ +if (!drawPicking) return null; +if (!this.vwr.isBound(action, 18)) return null; +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}var imesh = -1; +var jmaxz = -1; +var jminz = -1; +var maxz = -2147483648; +var minz = 2147483647; +var pickFront = true; +for (var i = 0; i < this.meshCount; i++) { +var m = this.isomeshes[i]; +if (!this.isPickable(m, bsVisible)) continue; +var centers = (pickFront ? m.vs : m.getCenters()); +if (centers == null) continue; +for (var j = centers.length; --j >= 0; ) { +var v = centers[j]; +if (v == null) continue; +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +if (this.ptXY.z < minz) { +if (pickFront) imesh = i; +minz = this.ptXY.z; +jminz = j; +}if (this.ptXY.z > maxz) { +if (!pickFront) imesh = i; +maxz = this.ptXY.z; +jmaxz = j; +}}} +} +if (imesh < 0) return null; +this.pickedMesh = this.isomeshes[imesh]; +this.setPropertySuper("thisID", this.pickedMesh.thisID, null); +var iFace = this.pickedVertex = (pickFront ? jminz : jmaxz); +var ptRet = new JU.P3(); +ptRet.setT((pickFront ? this.pickedMesh.vs[this.pickedVertex] : (this.pickedMesh).centers[iFace])); +this.pickedModel = this.pickedMesh.modelIndex; +var map = this.getPickedPoint(ptRet, this.pickedModel); +this.setStatusPicked(-4, ptRet, map); +return map; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_defineMethod(c$, "isPickable", +function(m, bsVisible){ +return m.visibilityFlags != 0 && (m.modelIndex < 0 || bsVisible.get(m.modelIndex)) && !JU.C.isColixTranslucent(m.colix); +}, "J.shapesurface.IsosurfaceMesh,JU.BS"); +Clazz_defineMethod(c$, "findValue", +function(x, y, isPicking, bsVisible){ +var dmin2 = 100; +if (this.vwr.gdata.isAntialiased()) { +x <<= 1; +y <<= 1; +dmin2 <<= 1; +}var pickedVertex = -1; +var pickedContour = null; +var m = null; +for (var i = 0; i < this.meshCount; i++) { +m = this.isomeshes[i]; +if (!this.isPickable(m, bsVisible)) continue; +var vs = m.jvxlData.vContours; +var ilast = (m.firstRealVertex < 0 ? 0 : m.firstRealVertex); +var pickedJ = 0; +if (vs != null && vs.length > 0) { +for (var j = 0; j < vs.length; j++) { +var vc = vs[j]; +var n = vc.size() - 1; +for (var k = 6; k < n; k++) { +var v = vc.get(k); +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +pickedContour = vc; +pickedJ = j; +this.pickedMesh = m; +this.pickedPt = v; +}} +} +if (pickedContour != null) return pickedContour.get(2).toString() + (JU.Logger.debugging ? " " + pickedJ : ""); +} else if (m.jvxlData.jvxlPlane != null && m.vvs != null) { +var vertices = (m.mat4 == null && m.scale3d == 0 ? m.vs : m.getOffsetVertices(m.jvxlData.jvxlPlane)); +for (var k = m.vc; --k >= ilast; ) { +var v = vertices[k]; +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +pickedVertex = k; +this.pickedMesh = m; +this.pickedPt = v; +}} +if (pickedVertex != -1) break; +} else if (m.vvs != null) { +if (m.bsSlabDisplay != null) { +for (var k = m.bsSlabDisplay.nextSetBit(0); k >= 0; k = m.bsSlabDisplay.nextSetBit(k + 1)) { +var p = m.pis[k]; +if (p != null) for (var l = 0; l < 3; l++) { +var v = m.vs[p[l]]; +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +pickedVertex = p[l]; +this.pickedMesh = m; +this.pickedPt = v; +}} +} +} else { +for (var k = m.vc; --k >= ilast; ) { +var v = m.vs[k]; +var d2 = this.coordinateInRange(x, y, v, dmin2, this.ptXY); +if (d2 >= 0) { +dmin2 = d2; +pickedVertex = k; +this.pickedMesh = m; +this.pickedPt = v; +}} +}if (pickedVertex != -1) break; +}} +return (pickedVertex == -1 ? null : (JU.Logger.debugging ? "$" + m.thisID + "[" + (pickedVertex + 1) + "] " + m.vs[pickedVertex] + ": " : m.thisID + ": ") + m.vvs[pickedVertex]); +}, "~N,~N,~B,JU.BS"); +Clazz_defineMethod(c$, "getCmd", +function(index){ +var sb = new JU.SB().append("\n"); +this.getMeshCommand(sb, index); +return (sb.toString()); +}, "~N"); +Clazz_overrideMethod(c$, "getValues", +function(mesh){ +return (mesh == null ? null : (mesh).getValidValues(null)); +}, "J.shape.Mesh"); +Clazz_overrideMethod(c$, "getVertices", +function(mesh){ +return (mesh == null ? null : (mesh).getValidVertices(null)); +}, "J.shape.Mesh"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.data"); +Clazz_load(null, "J.jvxl.data.JvxlCoder", ["JU.BS", "$.Lst", "$.P3", "$.PT", "$.SB", "J.api.Interface", "J.jvxl.data.VolumeData", "JU.BSUtil", "$.C", "$.Escape", "$.Logger", "JV.Viewer"], function(){ +var c$ = Clazz_declareType(J.jvxl.data, "JvxlCoder", null); +c$.jvxlGetFile = Clazz_defineMethod(c$, "jvxlGetFile", +function(jvxlData, meshData, title, msg, includeHeader, nSurfaces, state, comment){ +J.jvxl.data.JvxlCoder.checkHaveXMLUtil(); +var data = new JU.SB(); +if ("TRAILERONLY".equals(msg)) { +JU.XmlUtil.closeTag(data, "jvxlSurfaceSet"); +JU.XmlUtil.closeTag(data, "jvxl"); +return data.toString(); +}var vertexDataOnly = (meshData != null); +var isHeaderOnly = ("HEADERONLY".equals(msg)); +if (includeHeader) { +JU.XmlUtil.openDocument(data); +JU.XmlUtil.openTagAttr(data, "jvxl", Clazz_newArray(-1, ["version", "2.4", "jmolVersion", jvxlData.version, "xmlns", "http://jmol.org/jvxl_schema", "xmlns:cml", "http://www.xml-cml.org/schema"])); +JU.XmlUtil.appendCdata(data, "jvxlFileTitle", null, jvxlData.jvxlFileTitle == null ? "\n" : "\n" + jvxlData.jvxlFileTitle); +if (jvxlData.moleculeXml != null) data.append(jvxlData.moleculeXml); +var volumeDataXml = (vertexDataOnly ? null : jvxlData.jvxlVolumeDataXml); +if (volumeDataXml == null) volumeDataXml = ( new J.jvxl.data.VolumeData()).setVolumetricXml(); +data.append(volumeDataXml); +JU.XmlUtil.openTagAttr(data, "jvxlSurfaceSet", Clazz_newArray(-1, ["count", "" + (nSurfaces > 0 ? nSurfaces : 1)])); +if (isHeaderOnly) return data.toString(); +}var sb; +var type = (vertexDataOnly ? "pmesh" : jvxlData.jvxlPlane == null ? "isosurface" : "plane"); +if (jvxlData.jvxlColorData != null && jvxlData.jvxlColorData.length > 0) type = "mapped " + type; +JU.XmlUtil.openTagAttr(data, "jvxlSurface", Clazz_newArray(-1, ["type", type])); +data.append(J.jvxl.data.JvxlCoder.jvxlGetInfoData(jvxlData, vertexDataOnly)); +J.jvxl.data.JvxlCoder.jvxlAppendCommandState(data, comment, state); +if (title != null || msg != null && msg.length > 0) { +sb = new JU.SB(); +if (msg != null && msg.length > 0) sb.append(msg).append("\n"); +if (title != null) for (var i = 0; i < title.length; i++) sb.append(title[i]).appendC('\n'); + +JU.XmlUtil.appendCdata(data, "jvxlSurfaceTitle", null, sb.toString()); +}sb = new JU.SB(); +JU.XmlUtil.openTagAttr(sb, "jvxlSurfaceData", (vertexDataOnly || jvxlData.jvxlPlane == null ? null : jvxlData.mapLattice == null ? Clazz_newArray(-1, ["plane", JU.Escape.eP4(jvxlData.jvxlPlane)]) : Clazz_newArray(-1, ["plane", JU.Escape.eP4(jvxlData.jvxlPlane), "maplattice", JU.Escape.eP(jvxlData.mapLattice)]))); +if (vertexDataOnly) { +J.jvxl.data.JvxlCoder.appendXmlVertexOnlyData(sb, jvxlData, meshData, true); +} else if (jvxlData.jvxlPlane == null) { +if (jvxlData.jvxlEdgeData == null) return ""; +J.jvxl.data.JvxlCoder.appendXmlEdgeData(sb, jvxlData); +J.jvxl.data.JvxlCoder.appendXmlColorData(sb, jvxlData.jvxlColorData, true, jvxlData.isJvxlPrecisionColor, jvxlData.valueMappedToRed, jvxlData.valueMappedToBlue); +} else { +J.jvxl.data.JvxlCoder.appendXmlColorData(sb, jvxlData.jvxlColorData, true, jvxlData.isJvxlPrecisionColor, jvxlData.valueMappedToRed, jvxlData.valueMappedToBlue); +}J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(sb, "jvxlInvalidatedVertexData", jvxlData.jvxlExcluded[1], -1, null); +if (jvxlData.excludedVertexCount > 0) { +J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(sb, "jvxlExcludedVertexData", jvxlData.jvxlExcluded[0], jvxlData.excludedVertexCount, null); +J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(sb, "jvxlExcludedPlaneData", jvxlData.jvxlExcluded[2], -1, null); +}J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(sb, "jvxlExcludedTriangleData", jvxlData.jvxlExcluded[3], jvxlData.excludedTriangleCount, null); +JU.XmlUtil.closeTag(sb, "jvxlSurfaceData"); +var len = sb.length(); +data.appendSB(sb); +if (jvxlData.vContours != null && jvxlData.vContours.length > 0) { +J.jvxl.data.JvxlCoder.jvxlEncodeContourData(jvxlData.vContours, data); +}if (jvxlData.vertexColorMap != null) { +if (jvxlData.baseColor == null) JU.XmlUtil.openTag(data, "jvxlVertexColorData"); + else JU.XmlUtil.openTagAttr(data, "jvxlVertexColorData", Clazz_newArray(-1, ["baseColor", jvxlData.baseColor])); +for (var entry, $entry = jvxlData.vertexColorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) J.jvxl.data.JvxlCoder.appendEncodedBitSetTag(data, "jvxlColorMap", entry.getValue(), -1, Clazz_newArray(-1, ["color", entry.getKey()])); + +jvxlData.vertexColorMap = null; +JU.XmlUtil.closeTag(data, "jvxlVertexColorData"); +}JU.XmlUtil.closeTag(data, "jvxlSurface"); +if (includeHeader) { +JU.XmlUtil.closeTag(data, "jvxlSurfaceSet"); +JU.XmlUtil.closeTag(data, "jvxl"); +}return J.jvxl.data.JvxlCoder.jvxlSetCompressionRatio(data, jvxlData, len); +}, "J.jvxl.data.JvxlData,J.jvxl.data.MeshData,~A,~S,~B,~N,~S,~S"); +c$.checkHaveXMLUtil = Clazz_defineMethod(c$, "checkHaveXMLUtil", +function(){ +if (!J.jvxl.data.JvxlCoder.haveXMLUtil) { +if (JV.Viewer.isJS) J.api.Interface.getInterface("JU.XmlUtil", null, "show"); +J.jvxl.data.JvxlCoder.haveXMLUtil = true; +}}); +c$.appendEncodedBitSetTag = Clazz_defineMethod(c$, "appendEncodedBitSetTag", +function(sb, name, bs, count, attribs){ +if (count < 0) count = JU.BSUtil.cardinalityOf(bs); +if (count == 0) return; +var sb1 = new JU.SB(); +sb1.append("\n "); +J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(bs, -1, sb1); +JU.XmlUtil.appendTagObj(sb, name, Clazz_newArray(-1, [attribs, "bsEncoding", "base90+35", "count", "" + count, "len", "" + bs.length()]), J.jvxl.data.JvxlCoder.jvxlCompressString(sb1.toString(), true)); +}, "JU.SB,~S,JU.BS,~N,~A"); +c$.jvxlSetCompressionRatio = Clazz_defineMethod(c$, "jvxlSetCompressionRatio", +function(data, jvxlData, len){ +var s = data.toString(); +var r = Clazz_floatToInt(jvxlData.nBytes > 0 ? (jvxlData.nBytes) / len : ((jvxlData.nPointsX * jvxlData.nPointsY * jvxlData.nPointsZ * 13)) / len); +return JU.PT.rep(s, "\"not calculated\"", (r > 0 ? "\"" + r + ":1\"" : "\"?\"")); +}, "JU.SB,J.jvxl.data.JvxlData,~N"); +c$.appendXmlEdgeData = Clazz_defineMethod(c$, "appendXmlEdgeData", +function(sb, jvxlData){ +JU.XmlUtil.appendTagObj(sb, "jvxlEdgeData", Clazz_newArray(-1, ["count", "" + (jvxlData.jvxlEdgeData.length - 1), "encoding", "base90f1", "bsEncoding", "base90+35c", "isXLowToHigh", "" + jvxlData.isXLowToHigh, "data", J.jvxl.data.JvxlCoder.jvxlCompressString(jvxlData.jvxlEdgeData, true)]), "\n" + J.jvxl.data.JvxlCoder.jvxlCompressString(jvxlData.jvxlSurfaceData, true)); +}, "JU.SB,J.jvxl.data.JvxlData"); +c$.jvxlAppendCommandState = Clazz_defineMethod(c$, "jvxlAppendCommandState", +function(data, cmd, state){ +if (cmd != null) JU.XmlUtil.appendCdata(data, "jvxlIsosurfaceCommand", null, "\n" + (cmd.indexOf("#") < 0 ? cmd : cmd.substring(0, cmd.indexOf("#"))) + "\n"); +if (state != null) { +if (state.indexOf("** XML ** ") >= 0) { +state = JU.PT.split(state, "** XML **")[1].trim(); +JU.XmlUtil.appendTag(data, "jvxlIsosurfaceState", "\n" + state + "\n"); +} else { +JU.XmlUtil.appendCdata(data, "jvxlIsosurfaceState", null, "\n" + state); +}}}, "JU.SB,~S,~S"); +c$.appendXmlColorData = Clazz_defineMethod(c$, "appendXmlColorData", +function(sb, data, isEncoded, isPrecisionColor, value1, value2){ +var n; +if (data == null || (n = data.length - 1) < 0) return; +if (isPrecisionColor) n /= 2; +JU.XmlUtil.appendTagObj(sb, "jvxlColorData", Clazz_newArray(-1, ["count", "" + n, "encoding", (isEncoded ? "base90f" + (isPrecisionColor ? "2" : "1") : "none"), "min", "" + value1, "max", "" + value2, "data", J.jvxl.data.JvxlCoder.jvxlCompressString(data, true)]), null); +}, "JU.SB,~S,~B,~B,~N,~N"); +c$.jvxlGetInfo = Clazz_defineMethod(c$, "jvxlGetInfo", +function(jvxlData){ +return J.jvxl.data.JvxlCoder.jvxlGetInfoData(jvxlData, jvxlData.vertexDataOnly); +}, "J.jvxl.data.JvxlData"); +c$.jvxlGetInfoData = Clazz_defineMethod(c$, "jvxlGetInfoData", +function(jvxlData, vertexDataOnly){ +if (jvxlData.jvxlSurfaceData == null) return ""; +J.jvxl.data.JvxlCoder.checkHaveXMLUtil(); +var attribs = new JU.Lst(); +var nSurfaceInts = jvxlData.nSurfaceInts; +var bytesUncompressedEdgeData = (vertexDataOnly ? 0 : jvxlData.jvxlEdgeData.length - 1); +var nColorData = (jvxlData.jvxlColorData == null ? -1 : (jvxlData.jvxlColorData.length - 1)); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n isModelConnected", "" + jvxlData.isModelConnected); +if (!vertexDataOnly) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n cutoff", (jvxlData.cutoffRange == null ? "" + jvxlData.cutoff : jvxlData.cutoffRange[0] + " " + jvxlData.cutoffRange[1])); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n isCutoffAbsolute", "" + jvxlData.isCutoffAbsolute); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n pointsPerAngstrom", "" + jvxlData.pointsPerAngstrom); +var n = jvxlData.jvxlSurfaceData.length + bytesUncompressedEdgeData + nColorData + 1; +if (n > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nBytesData", "" + n); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n isXLowToHigh", "" + jvxlData.isXLowToHigh); +if (jvxlData.jvxlPlane == null) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nSurfaceInts", "" + nSurfaceInts); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nBytesUncompressedEdgeData", "" + bytesUncompressedEdgeData); +}if (nColorData > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nBytesUncompressedColorData", "" + nColorData); +}jvxlData.excludedVertexCount = JU.BSUtil.cardinalityOf(jvxlData.jvxlExcluded[0]); +jvxlData.excludedTriangleCount = JU.BSUtil.cardinalityOf(jvxlData.jvxlExcluded[3]); +if (jvxlData.excludedVertexCount > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nExcludedVertexes", "" + jvxlData.excludedVertexCount); +if (jvxlData.excludedTriangleCount > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nExcludedTriangles", "" + jvxlData.excludedTriangleCount); +var n = JU.BSUtil.cardinalityOf(jvxlData.jvxlExcluded[1]); +if (n > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nInvalidatedVertexes", "" + n); +if (jvxlData.slabInfo != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n slabInfo", jvxlData.slabInfo); +if (jvxlData.isJvxlPrecisionColor) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n precisionColor", "true"); +if (jvxlData.colorDensity) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorDensity", "true"); +if (!Float.isNaN(jvxlData.pointSize)) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n pointSize", "" + jvxlData.pointSize); + else if (jvxlData.diameter != 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n diameter", "" + jvxlData.diameter); +if (!jvxlData.allowVolumeRender) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n allowVolumeRender", "false"); +if (jvxlData.jvxlPlane == null || vertexDataOnly) { +if (jvxlData.fixedLattice != null && !vertexDataOnly) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n fixedLattice", "" + jvxlData.fixedLattice); +if (jvxlData.isContoured) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n contoured", "true"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorMapped", "true"); +} else if (jvxlData.isBicolorMap) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n bicolorMap", "true"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorNegative", JU.C.getHexCode(jvxlData.minColorIndex)); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorPositive", JU.C.getHexCode(jvxlData.maxColorIndex)); +} else if (nColorData > 0) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorMapped", "true"); +}if (jvxlData.vContours != null && jvxlData.vContours.length > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nContourData", "" + jvxlData.vContours.length); +} else { +if (jvxlData.mapLattice != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n mapLattice", "" + jvxlData.mapLattice); +if (jvxlData.scale3d != 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n scale3d", "" + jvxlData.scale3d); +if (nColorData > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorMapped", "true"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n plane", JU.Escape.eP4(jvxlData.jvxlPlane)); +}if (jvxlData.color != null && jvxlData.color.indexOf("null") < 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n color", jvxlData.color); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n translucency", "" + jvxlData.translucency); +if (jvxlData.meshColor != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n meshColor", jvxlData.meshColor); +if (jvxlData.colorScheme != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n colorScheme", jvxlData.colorScheme); +if (jvxlData.rendering != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n rendering", jvxlData.rendering); +if (jvxlData.thisSet != null) { +var s = J.jvxl.data.JvxlCoder.subsetString(jvxlData.thisSet); +if (s.startsWith("[")) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n subset", s); + else J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n set", s); +}if (jvxlData.slabValue != -2147483648) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n slabValue", "" + jvxlData.slabValue); +if (jvxlData.isSlabbable) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n slabbable", "true"); +if (jvxlData.nVertexColors > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nVertexColors", "" + jvxlData.nVertexColors); +var min = (jvxlData.mappedDataMin == 3.4028235E38 ? 0 : jvxlData.mappedDataMin); +var blue = (jvxlData.isColorReversed ? jvxlData.valueMappedToRed : jvxlData.valueMappedToBlue); +var red = (jvxlData.isColorReversed ? jvxlData.valueMappedToBlue : jvxlData.valueMappedToRed); +if (jvxlData.jvxlColorData != null && jvxlData.jvxlColorData.length > 0 && !jvxlData.isBicolorMap) { +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n dataMinimum", "" + min); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n dataMaximum", "" + jvxlData.mappedDataMax); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n valueMappedToRed", "" + red); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n valueMappedToBlue", "" + blue); +}if (jvxlData.isContoured) { +if (jvxlData.contourValues == null || jvxlData.contourColixes == null) { +if (jvxlData.vContours == null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nContours", "" + Math.abs(jvxlData.nContours)); +} else { +if (jvxlData.jvxlPlane != null) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n contoured", "true"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n nContours", "" + jvxlData.contourValues.length); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n contourValues", JU.Escape.eAF(jvxlData.contourValuesUsed == null ? jvxlData.contourValues : jvxlData.contourValuesUsed)); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n contourColors", jvxlData.contourColors); +}if (jvxlData.thisContour > 0) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n thisContour", "" + jvxlData.thisContour); +}if (jvxlData.insideOut) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n insideOut", "true"); +if (jvxlData.vertexDataOnly) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n note", "vertex/face data only"); + else if (jvxlData.isXLowToHigh) J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n note", "progressive JVXL+ -- X values read from low(0) to high(" + (jvxlData.nPointsX - 1) + ")"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n xyzMin", JU.Escape.eP(jvxlData.boundingBox[0])); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n xyzMax", JU.Escape.eP(jvxlData.boundingBox[1])); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n approximateCompressionRatio", "not calculated"); +J.jvxl.data.JvxlCoder.addAttrib(attribs, "\n jmolVersion", jvxlData.version); +var info = new JU.SB(); +JU.XmlUtil.openTagAttr(info, "jvxlSurfaceInfo", attribs.toArray( new Array(attribs.size()))); +JU.XmlUtil.closeTag(info, "jvxlSurfaceInfo"); +return info.toString(); +}, "J.jvxl.data.JvxlData,~B"); +c$.subsetString = Clazz_defineMethod(c$, "subsetString", +function(bs){ +var n = bs.cardinality(); +if (n > 1) { +var a = "[ "; +for (var ia = bs.nextSetBit(0); ia >= 0; ia = bs.nextSetBit(ia)) a += (++ia) + " "; + +return a + "]"; +}return "" + (bs.nextSetBit(0) + 1); +}, "JU.BS"); +c$.addAttrib = Clazz_defineMethod(c$, "addAttrib", +function(attribs, name, value){ +attribs.addLast( Clazz_newArray(-1, [name, value])); +}, "JU.Lst,~S,~S"); +c$.jvxlEncodeContourData = Clazz_defineMethod(c$, "jvxlEncodeContourData", +function(contours, sb){ +JU.XmlUtil.openTagAttr(sb, "jvxlContourData", Clazz_newArray(-1, ["count", "" + contours.length])); +for (var i = 0; i < contours.length; i++) { +if (contours[i].size() < 6) { +continue; +}var nPolygons = (contours[i].get(0)).intValue(); +var sb1 = new JU.SB(); +sb1.append("\n"); +var bs = contours[i].get(1); +J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(bs, nPolygons, sb1); +JU.XmlUtil.appendTagObj(sb, "jvxlContour", Clazz_newArray(-1, ["index", "" + i, "value", "" + contours[i].get(2), "color", JU.Escape.escapeColor((contours[i].get(4))[0]), "count", "" + bs.length(), "encoding", "base90iff1", "bsEncoding", "base90+35c", "data", J.jvxl.data.JvxlCoder.jvxlCompressString(contours[i].get(5).toString(), true)]), J.jvxl.data.JvxlCoder.jvxlCompressString(sb1.toString(), true)); +} +JU.XmlUtil.closeTag(sb, "jvxlContourData"); +}, "~A,JU.SB"); +c$.set3dContourVector = Clazz_defineMethod(c$, "set3dContourVector", +function(v, polygonIndexes, vertices){ +if (v.size() < 6) return; +var fData = v.get(5); +var bs = v.get(1); +var pt = 0; +var nBuf = fData.length(); +var type = 0; +var c1 = ' '; +var c2 = ' '; +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var vertexIndexes = polygonIndexes[i]; +while (pt < nBuf && !JU.PT.isDigit(c1 = fData.charAt(pt++))) { +} +type = c1.charCodeAt(0) - 48; +while (pt < nBuf && JU.PT.isWhitespace(c1 = fData.charAt(pt++))) { +} +while (pt < nBuf && JU.PT.isWhitespace(c2 = fData.charAt(pt++))) { +} +var f1 = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(c1.charCodeAt(0), 35, 90, 0); +var f2 = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(c2.charCodeAt(0), 35, 90, 0); +var i1; +var i2; +var i3; +var i4; +if ((type & 1) == 0) { +i1 = vertexIndexes[1]; +i2 = i3 = vertexIndexes[2]; +i4 = vertexIndexes[0]; +} else { +i1 = vertexIndexes[0]; +i2 = vertexIndexes[1]; +if ((type & 2) != 0) { +i3 = i2; +i4 = vertexIndexes[2]; +} else { +i3 = vertexIndexes[2]; +i4 = i1; +}}v.addLast(J.jvxl.data.JvxlCoder.getContourPoint(vertices, i1, i2, f1)); +v.addLast(J.jvxl.data.JvxlCoder.getContourPoint(vertices, i3, i4, f2)); +} +}, "JU.Lst,~A,~A"); +c$.getContourPoint = Clazz_defineMethod(c$, "getContourPoint", +function(vertices, i, j, f){ +var pt = new JU.P3(); +pt.sub2(vertices[j], vertices[i]); +pt.scaleAdd2(f, pt, vertices[i]); +return pt; +}, "~A,~N,~N,~N"); +c$.appendContourTriangleIntersection = Clazz_defineMethod(c$, "appendContourTriangleIntersection", +function(type, f1, f2, fData){ +fData.appendI(type); +fData.appendC(J.jvxl.data.JvxlCoder.jvxlFractionAsCharacter(f1)); +fData.appendC(J.jvxl.data.JvxlCoder.jvxlFractionAsCharacter(f2)); +}, "~N,~N,~N,JU.SB"); +c$.jvxlCreateColorData = Clazz_defineMethod(c$, "jvxlCreateColorData", +function(jvxlData, vertexValues){ +if (vertexValues == null) { +jvxlData.jvxlColorData = ""; +return; +}var writePrecisionColor = jvxlData.isJvxlPrecisionColor; +var doTruncate = jvxlData.isTruncated; +var colorFractionBase = jvxlData.colorFractionBase; +var colorFractionRange = jvxlData.colorFractionRange; +var valueBlue = jvxlData.valueMappedToBlue; +var valueRed = jvxlData.valueMappedToRed; +var vertexCount = (jvxlData.saveVertexCount > 0 ? jvxlData.saveVertexCount : jvxlData.vertexCount); +if (vertexCount > vertexValues.length) System.out.println("JVXLCODER ERROR"); +var isPrecisionColor = jvxlData.isJvxlPrecisionColor; +var min = (isPrecisionColor ? jvxlData.mappedDataMin : jvxlData.valueMappedToRed); +var max = (isPrecisionColor ? jvxlData.mappedDataMax : jvxlData.valueMappedToBlue); +if (vertexValues.length < vertexCount) System.out.println("JVXLCOLOR OHOHO"); +jvxlData.jvxlColorData = J.jvxl.data.JvxlCoder.jvxlEncodeColorData(vertexValues, min, max, colorFractionBase, colorFractionRange, jvxlData.isTruncated, isPrecisionColor); +}, "J.jvxl.data.JvxlData,~A"); +c$.jvxlEncodeColorData = Clazz_defineMethod(c$, "jvxlEncodeColorData", +function(vertexValues, min, max, colorFractionBase, colorFractionRange, doTruncate, isPrecisionColor){ +var list1 = new JU.SB(); +var list2 = new JU.SB(); +for (var i = 0, n = vertexValues.length; i < n; i++) { +var value = vertexValues[i]; +if (Float.isNaN(value)) value = min; +if (doTruncate) value = (value > 0 ? 0.999 : -0.999); +if (isPrecisionColor) J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(value, min, max, colorFractionBase, colorFractionRange, list1, list2); + else list1.appendC(J.jvxl.data.JvxlCoder.jvxlValueAsCharacter(value, min, max, colorFractionBase, colorFractionRange)); +} +return list1.appendSB(list2).appendC('\n').toString(); +}, "~A,~N,~N,~N,~N,~B,~B"); +c$.appendXmlVertexOnlyData = Clazz_defineMethod(c$, "appendXmlVertexOnlyData", +function(sb, jvxlData, meshData, escapeXml){ +var vertexIdNew = Clazz_newIntArray (meshData.vc, 0); +if (J.jvxl.data.JvxlCoder.appendXmlTriangleData(sb, meshData.pis, meshData.pc, meshData.bsSlabDisplay, vertexIdNew, escapeXml)) J.jvxl.data.JvxlCoder.appendXmlVertexData(sb, jvxlData, vertexIdNew, meshData.vs, meshData.vvs, meshData.vc, meshData.polygonColorData, meshData.pc, meshData.bsSlabDisplay, jvxlData.vertexColors, jvxlData.jvxlColorData.length > 0, escapeXml); +}, "JU.SB,J.jvxl.data.JvxlData,J.jvxl.data.MeshData,~B"); +c$.appendXmlTriangleData = Clazz_defineMethod(c$, "appendXmlTriangleData", +function(sb, triangles, nData, bsSlabDisplay, vertexIdNew, escapeXml){ +var list1 = new JU.SB(); +var list2 = new JU.SB(); +var ilast = 1; +var p = 0; +var inew = 0; +var addPlus = false; +var nTri = 0; +var removeSlabbed = (bsSlabDisplay != null); +for (var i = 0; i < nData; ) { +if (triangles[i] == null || (removeSlabbed && !bsSlabDisplay.get(i))) { +i++; +continue; +}var idata = triangles[i][p]; +if (vertexIdNew[idata] > 0) { +idata = vertexIdNew[idata]; +} else { +idata = vertexIdNew[idata] = ++inew; +}var diff = idata - ilast; +ilast = idata; +if (diff == 0) { +list1.appendC('!'); +addPlus = false; +} else if (diff > 32) { +if (addPlus) list1.appendC('+'); +list1.appendI(diff); +addPlus = true; +} else if (diff < -32) { +list1.appendI(diff); +addPlus = true; +} else { +list1.appendC(String.fromCharCode(92 + diff)); +addPlus = false; +}if (++p % 3 == 0) { +list2.appendI(triangles[i][3]); +p = 0; +i++; +nTri++; +}} +if (list1.length() == 0) return true; +JU.XmlUtil.appendTagObj(sb, "jvxlTriangleData", Clazz_newArray(-1, ["count", "" + nTri, "encoding", "jvxltdiff", "data", J.jvxl.data.JvxlCoder.jvxlCompressString(list1.toString(), escapeXml)]), null); +JU.XmlUtil.appendTagObj(sb, "jvxlTriangleEdgeData", Clazz_newArray(-1, ["count", "" + nTri, "encoding", "jvxlsc", "data", J.jvxl.data.JvxlCoder.jvxlCompressString(list2.toString(), escapeXml)]), null); +return true; +}, "JU.SB,~A,~N,JU.BS,~A,~B"); +c$.appendXmlVertexData = Clazz_defineMethod(c$, "appendXmlVertexData", +function(sb, jvxlData, vertexIdNew, vertices, vertexValues, vertexCount, polygonColorData, polygonCount, bsSlabDisplay, vertexColors, addColorData, escapeXml){ +var colorFractionBase = jvxlData.colorFractionBase; +var colorFractionRange = jvxlData.colorFractionRange; +var p; +var min = jvxlData.boundingBox[0]; +var max = jvxlData.boundingBox[1]; +var list1 = new JU.SB(); +var list2 = new JU.SB(); +var vertexIdOld = null; +var removeSlabbed = (bsSlabDisplay != null); +if (polygonCount > 0) { +if (removeSlabbed) polygonCount = bsSlabDisplay.cardinality(); +removeSlabbed = false; +vertexIdOld = Clazz_newIntArray (vertexCount, 0); +for (var i = 0; i < vertexCount; i++) if (vertexIdNew[i] > 0) vertexIdOld[vertexIdNew[i] - 1] = i; + +}var n = 0; +for (var i = 0; i < vertexCount; i++) if (!removeSlabbed || bsSlabDisplay.get(i)) { +n++; +p = vertices[(polygonCount == 0 ? i : vertexIdOld[i])]; +J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(p.x, min.x, max.x, colorFractionBase, colorFractionRange, list1, list2); +J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(p.y, min.y, max.y, colorFractionBase, colorFractionRange, list1, list2); +J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(p.z, min.z, max.z, colorFractionBase, colorFractionRange, list1, list2); +} +list1.appendSB(list2); +JU.XmlUtil.appendTagObj(sb, "jvxlVertexData", Clazz_newArray(-1, ["count", "" + n, "min", JU.Escape.eP(min), "max", JU.Escape.eP(max), "encoding", "base90xyz2", "data", J.jvxl.data.JvxlCoder.jvxlCompressString(list1.toString(), escapeXml)]), null); +if (polygonColorData != null) JU.XmlUtil.appendTagObj(sb, "jvxlPolygonColorData", Clazz_newArray(-1, ["encoding", "jvxlnc", "count", "" + polygonCount]), "\n" + polygonColorData); +if (!addColorData) return; +list1 = new JU.SB(); +list2 = new JU.SB(); +if (vertexColors == null) { +for (var i = 0; i < vertexCount; i++) if (!removeSlabbed || bsSlabDisplay.get(i)) { +var value = vertexValues[polygonCount == 0 ? i : vertexIdOld[i]]; +J.jvxl.data.JvxlCoder.jvxlAppendCharacter2(value, jvxlData.mappedDataMin, jvxlData.mappedDataMax, colorFractionBase, colorFractionRange, list1, list2); +} +} else { +var lastColor = 0; +list1.appendI(n).append(" "); +for (var i = 0; i < vertexCount; i++) if (!removeSlabbed || bsSlabDisplay.get(i)) { +var c = vertexColors[polygonCount == 0 ? i : vertexIdOld[i]]; +if (c == lastColor) c = 0; + else lastColor = c; +list1.appendI(c); +list1.append(" "); +} +}J.jvxl.data.JvxlCoder.appendXmlColorData(sb, list1.appendSB(list2).append("\n").toString(), (vertexColors == null), true, jvxlData.valueMappedToRed, jvxlData.valueMappedToBlue); +}, "JU.SB,J.jvxl.data.JvxlData,~A,~A,~A,~N,~S,~N,JU.BS,~A,~B,~B"); +c$.jvxlFractionAsCharacter = Clazz_defineMethod(c$, "jvxlFractionAsCharacter", +function(fraction){ +return J.jvxl.data.JvxlCoder.jvxlFractionAsCharacterRange(fraction, 35, 90); +}, "~N"); +c$.jvxlFractionAsCharacterRange = Clazz_defineMethod(c$, "jvxlFractionAsCharacterRange", +function(fraction, base, range){ +if (fraction > 0.9999) fraction = 0.9999; + else if (Float.isNaN(fraction)) fraction = 1.0001; +var ich = Clazz_doubleToInt(Math.floor(fraction * range + base)); +if (ich < base) return String.fromCharCode(base); +if (ich == 92) return '!'; +return String.fromCharCode(ich); +}, "~N,~N,~N"); +c$.jvxlAppendCharacter2 = Clazz_defineMethod(c$, "jvxlAppendCharacter2", +function(value, min, max, base, range, list1, list2){ +var fraction = (min == max ? value : (value - min) / (max - min)); +var ch1 = J.jvxl.data.JvxlCoder.jvxlFractionAsCharacterRange(fraction, base, range); +list1.appendC(ch1); +fraction -= J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(ch1.charCodeAt(0), base, range, 0); +list2.appendC(J.jvxl.data.JvxlCoder.jvxlFractionAsCharacterRange(fraction * range, base, range)); +}, "~N,~N,~N,~N,~N,JU.SB,JU.SB"); +c$.jvxlFractionFromCharacter = Clazz_defineMethod(c$, "jvxlFractionFromCharacter", +function(ich, base, range, fracOffset){ +if (ich == base + range) return NaN; +if (ich < base) ich = 92; +var fraction = (ich - base + fracOffset) / range; +if (fraction < 0) return 0; +if (fraction > 1) return 0.999999; +return fraction; +}, "~N,~N,~N,~N"); +c$.jvxlFractionFromCharacter2 = Clazz_defineMethod(c$, "jvxlFractionFromCharacter2", +function(ich1, ich2, base, range){ +var fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(ich1, base, range, 0); +var remains = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(ich2, base, range, 0.5); +return fraction + remains / range; +}, "~N,~N,~N,~N"); +c$.jvxlValueAsCharacter = Clazz_defineMethod(c$, "jvxlValueAsCharacter", +function(value, min, max, base, range){ +var fraction = (min == max ? value : (value - min) / (max - min)); +return J.jvxl.data.JvxlCoder.jvxlFractionAsCharacterRange(fraction, base, range); +}, "~N,~N,~N,~N,~N"); +c$.jvxlValueFromCharacter2 = Clazz_defineMethod(c$, "jvxlValueFromCharacter2", +function(ich, ich2, min, max, base, range){ +var fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(ich, ich2, base, range); +return (max == min ? fraction : min + fraction * (max - min)); +}, "~N,~N,~N,~N,~N,~N"); +c$.jvxlEncodeBitSet0 = Clazz_defineMethod(c$, "jvxlEncodeBitSet0", +function(bs, nPoints, sb){ +var dataCount = 0; +var prevCount = -1; +var nPrev = 0; +if (nPoints < 0) nPoints = bs.length(); +var n = 0; +var isset = false; +var lastPoint = nPoints - 1; +for (var i = 0; i < nPoints; ++i) { +if (isset == bs.get(i)) { +dataCount++; +} else { +if (dataCount == prevCount && i != lastPoint) { +nPrev++; +} else { +if (nPrev > 0) { +sb.appendC(' ').appendI(-nPrev); +nPrev = 0; +n++; +}sb.appendC(' ').appendI(dataCount); +n++; +prevCount = dataCount; +}dataCount = 1; +isset = !isset; +}} +sb.appendC(' ').appendI(dataCount).appendC('\n'); +return n; +}, "JU.BS,~N,JU.SB"); +c$.jvxlEncodeBitSet = Clazz_defineMethod(c$, "jvxlEncodeBitSet", +function(bs){ +var sb = new JU.SB(); +J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(bs, -1, sb); +return sb.toString(); +}, "JU.BS"); +c$.jvxlEncodeBitSetBuffer = Clazz_defineMethod(c$, "jvxlEncodeBitSetBuffer", +function(bs, nPoints, sb){ +var dataCount = 0; +var n = 0; +var isset = false; +if (nPoints < 0) nPoints = bs.length(); +if (nPoints == 0) return 0; +sb.append("-"); +for (var i = 0; i < nPoints; ++i) { +if (isset == bs.get(i)) { +dataCount++; +} else { +J.jvxl.data.JvxlCoder.jvxlAppendEncodedNumber(sb, dataCount, 35, 90); +n++; +dataCount = 1; +isset = !isset; +}} +J.jvxl.data.JvxlCoder.jvxlAppendEncodedNumber(sb, dataCount, 35, 90); +sb.appendC('\n'); +return n; +}, "JU.BS,~N,JU.SB"); +c$.jvxlAppendEncodedNumber = Clazz_defineMethod(c$, "jvxlAppendEncodedNumber", +function(sb, n, base, range){ +var isInRange = (n < range); +if (n == 0) sb.appendC(String.fromCharCode(base)); + else if (!isInRange) sb.appendC(String.fromCharCode(base + range)); +while (n > 0) { +var n1 = Clazz_doubleToInt(n / range); +var x = base + n - n1 * range; +if (x == 92) x = 33; +sb.appendC(String.fromCharCode(x)); +n = n1; +} +if (!isInRange) sb.append(" "); +}, "JU.SB,~N,~N,~N"); +c$.jvxlDecodeBitSetRange = Clazz_defineMethod(c$, "jvxlDecodeBitSetRange", +function(data, base, range){ +var bs = new JU.BS(); +var dataCount = 0; +var ptr = 0; +var isset = false; +var next = Clazz_newIntArray (1, 0); +while ((dataCount = J.jvxl.data.JvxlCoder.jvxlParseEncodedInt(data, base, range, next)) != -2147483648) { +if (isset) bs.setBits(ptr, ptr + dataCount); +ptr += dataCount; +isset = !isset; +} +return bs; +}, "~S,~N,~N"); +c$.jvxlParseEncodedInt = Clazz_defineMethod(c$, "jvxlParseEncodedInt", +function(str, offset, base, next){ +var digitSeen = false; +var value = 0; +var ich = next[0]; +var ichMax = str.length; +if (ich < 0) return -2147483648; +while (ich < ichMax && JU.PT.isWhitespace(str.charAt(ich))) ++ich; + +if (ich >= ichMax) return -2147483648; +var factor = 1; +var isLong = ((str.charAt(ich)).charCodeAt(0) == (offset + base)); +if (isLong) ich++; +while (ich < ichMax && !JU.PT.isWhitespace(str.charAt(ich))) { +var i = (str.charAt(ich)).charCodeAt(0); +if (i < offset) i = 92; +value += (i - offset) * factor; +digitSeen = true; +++ich; +if (!isLong) break; +factor *= base; +} +if (!digitSeen) value = -2147483648; +next[0] = ich; +return value; +}, "~S,~N,~N,~A"); +c$.jvxlDecodeBitSet = Clazz_defineMethod(c$, "jvxlDecodeBitSet", +function(data){ +if (data.startsWith("-")) return J.jvxl.data.JvxlCoder.jvxlDecodeBitSetRange(J.jvxl.data.JvxlCoder.jvxlDecompressString(data.substring(1)), 35, 90); +var bs = new JU.BS(); +var dataCount = 0; +var lastCount = 0; +var nPrev = 0; +var ptr = 0; +var isset = false; +var next = Clazz_newIntArray (1, 0); +while (true) { +dataCount = (nPrev++ < 0 ? dataCount : JU.PT.parseIntNext(data, next)); +if (dataCount == -2147483648) break; +if (dataCount < 0) { +nPrev = dataCount; +dataCount = lastCount; +continue; +}if (isset) bs.setBits(ptr, ptr + dataCount); +ptr += dataCount; +lastCount = dataCount; +isset = !isset; +} +return bs; +}, "~S"); +c$.jvxlCompressString = Clazz_defineMethod(c$, "jvxlCompressString", +function(data, escapeXml){ +if (data.indexOf("~") >= 0) return data; +var dataOut = new JU.SB(); +var chLast = '\u0000'; +var escaped = false; +var lastEscaped = false; +var nLast = 0; +var n = data.length; +for (var i = 0; i <= n; i++) { +var ch = (i == n ? '\0' : data.charAt(i)); +switch ((ch).charCodeAt(0)) { +case 10: +case 13: +continue; +case 38: +case 60: +escaped = escapeXml; +break; +default: +escaped = false; +} +if (ch == chLast) { +++nLast; +ch = '\0'; +} else if (nLast > 0 || lastEscaped) { +if (nLast < 4 && !lastEscaped || chLast == ' ' || chLast == '\t') { +while (--nLast >= 0) dataOut.appendC(chLast); + +} else { +if (lastEscaped) lastEscaped = false; + else dataOut.appendC('~'); +dataOut.appendI(nLast); +dataOut.appendC(' '); +}nLast = 0; +}if (ch != '\0') { +if (escaped) { +lastEscaped = true; +escaped = false; +dataOut.appendC('~'); +chLast = ch; +ch = String.fromCharCode(ch.charCodeAt(0)-1); +} else { +chLast = ch; +}dataOut.appendC(ch); +}} +return dataOut.toString(); +}, "~S,~B"); +c$.jvxlDecompressString = Clazz_defineMethod(c$, "jvxlDecompressString", +function(data){ +if (data.indexOf("~") < 0) return data; +var dataOut = new JU.SB(); +var chLast = '\u0000'; +var next = Clazz_newIntArray (1, 0); +for (var i = 0; i < data.length; i++) { +var ch = data.charAt(i); +if (ch == '~') { +next[0] = ++i; +switch ((ch = data.charAt(i)).charCodeAt(0)) { +case 59: +case 37: +next[0]++; +dataOut.appendC(chLast = (ch = String.fromCharCode(ch.charCodeAt(0)+1))); +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +case 55: +case 56: +case 57: +var nChar = JU.PT.parseIntNext(data, next); +for (var c = 0; c < nChar; c++) dataOut.appendC(chLast); + +i = next[0]; +continue; +case 126: +--i; +break; +default: +JU.Logger.error("Error uncompressing string " + data.substring(0, i) + "?"); +} +}dataOut.appendC(ch); +chLast = ch; +} +return dataOut.toString(); +}, "~S"); +c$.jvxlCreateHeaderWithoutTitleOrAtoms = Clazz_defineMethod(c$, "jvxlCreateHeaderWithoutTitleOrAtoms", +function(v, bs){ +J.jvxl.data.JvxlCoder.jvxlCreateHeader(v, bs); +}, "J.jvxl.data.VolumeData,JU.SB"); +c$.jvxlCreateHeader = Clazz_defineMethod(c$, "jvxlCreateHeader", +function(v, sb){ +v.setVolumetricXml(); +if (sb.length() == 0) sb.append("Line 1\nLine 2\n"); +}, "J.jvxl.data.VolumeData,JU.SB"); +c$.haveXMLUtil = false; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.data"); +Clazz_load(["JU.M3", "$.P3", "$.V3"], "J.jvxl.data.VolumeData", ["java.util.Hashtable", "JU.SB", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sr = null; +this.doIterate = true; +this.volumetricOrigin = null; +this.origin = null; +this.volumetricVectors = null; +this.voxelCounts = null; +this.nPoints = 0; +this.voxelData = null; +this.voxelMap = null; +this.volumetricVectorLengths = null; +this.maxVectorLength = 0; +this.minToPlaneDistance = 0; +this.yzCount = 0; +this.unitVolumetricVectors = null; +this.volumetricMatrix = null; +this.inverseMatrix = null; +this.thePlane = null; +this.thePlaneNormalMag = 0; +this.ptXyzTemp = null; +this.xmlData = null; +this.mappingPlane = null; +this.mappingPlaneNormalMag = 0; +this.minGrid = 0; +this.maxGrid = 0; +this.voxelVolume = 0; +this.oabc = null; +this.isPeriodic = false; +this.isSquared = false; +this.edgeVector = null; +this.ptTemp = null; +Clazz_instantialize(this, arguments);}, J.jvxl.data, "VolumeData", null); +Clazz_prepareFields (c$, function(){ +this.volumetricOrigin = new JU.P3(); +this.origin = Clazz_newFloatArray (3, 0); +this.volumetricVectors = new Array(3); +this.voxelCounts = Clazz_newIntArray (3, 0); +this.volumetricVectorLengths = Clazz_newFloatArray (3, 0); +this.unitVolumetricVectors = new Array(3); +this.volumetricMatrix = new JU.M3(); +this.inverseMatrix = new JU.M3(); +this.ptXyzTemp = new JU.P3(); +this.edgeVector = new JU.V3(); +this.ptTemp = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(){ +this.volumetricVectors[0] = new JU.V3(); +this.volumetricVectors[1] = new JU.V3(); +this.volumetricVectors[2] = new JU.V3(); +this.unitVolumetricVectors[0] = new JU.V3(); +this.unitVolumetricVectors[1] = new JU.V3(); +this.unitVolumetricVectors[2] = new JU.V3(); +}); +Clazz_defineMethod(c$, "getVoxelData", +function(){ +return this.voxelData; +}); +Clazz_defineMethod(c$, "setVoxelDataAsArray", +function(voxelData){ +this.voxelData = voxelData; +if (voxelData != null) this.sr = null; +}, "~A"); +Clazz_defineMethod(c$, "hasPlane", +function(){ +return (this.thePlane != null); +}); +Clazz_defineMethod(c$, "setMappingPlane", +function(plane){ +this.mappingPlane = plane; +if (plane == null) return; +this.mappingPlaneNormalMag = Math.sqrt(plane.x * plane.x + plane.y * plane.y + plane.z * plane.z); +}, "JU.P4"); +Clazz_defineMethod(c$, "distanceToMappingPlane", +function(pt){ +return (this.mappingPlane.x * pt.x + this.mappingPlane.y * pt.y + this.mappingPlane.z * pt.z + this.mappingPlane.w) / this.mappingPlaneNormalMag; +}, "JU.T3"); +Clazz_defineMethod(c$, "setVolumetricOrigin", +function(x, y, z){ +this.volumetricOrigin.set(x, y, z); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getOriginFloat", +function(){ +return this.origin; +}); +Clazz_defineMethod(c$, "getYzCount", +function(){ +this.minGrid = this.volumetricVectors[0].length(); +this.minGrid = Math.min(this.minGrid, this.volumetricVectors[1].length()); +this.minGrid = Math.min(this.minGrid, this.volumetricVectors[2].length()); +this.maxGrid = this.volumetricVectors[0].length(); +this.maxGrid = Math.max(this.maxGrid, this.volumetricVectors[1].length()); +this.maxGrid = Math.max(this.maxGrid, this.volumetricVectors[2].length()); +this.nPoints = this.voxelCounts[0] * this.voxelCounts[1] * this.voxelCounts[2]; +return this.yzCount = this.voxelCounts[1] * this.voxelCounts[2]; +}); +Clazz_defineMethod(c$, "getVolumetricVectorLengths", +function(){ +return this.volumetricVectorLengths; +}); +Clazz_defineMethod(c$, "setVolumetricVector", +function(i, x, y, z){ +this.volumetricVectors[i].x = x; +this.volumetricVectors[i].y = y; +this.volumetricVectors[i].z = z; +this.setUnitVectors(); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getVoxelCounts", +function(){ +return this.voxelCounts; +}); +Clazz_defineMethod(c$, "setVoxelCounts", +function(nPointsX, nPointsY, nPointsZ){ +this.voxelCounts[0] = nPointsX; +this.voxelCounts[1] = nPointsY; +this.voxelCounts[2] = nPointsZ; +return nPointsX * nPointsY * nPointsZ; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getVoxelDataAt", +function(pt){ +var ix = Clazz_doubleToInt(pt / this.yzCount); +pt -= ix * this.yzCount; +var iy = Clazz_doubleToInt(pt / this.voxelCounts[2]); +var iz = pt - iy * this.voxelCounts[2]; +return this.voxelData[ix][iy][iz]; +}, "~N"); +Clazz_defineMethod(c$, "getPointIndex", +function(x, y, z){ +return x * this.yzCount + y * this.voxelCounts[2] + z; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getPoint", +function(ipt, pt){ +var ix = Clazz_doubleToInt(ipt / this.yzCount); +ipt -= ix * this.yzCount; +var iy = Clazz_doubleToInt(ipt / this.voxelCounts[2]); +var iz = ipt - iy * this.voxelCounts[2]; +this.voxelPtToXYZ(ix, iy, iz, pt); +}, "~N,JU.P3"); +Clazz_defineMethod(c$, "setVoxelData", +function(pt, value){ +var ix = Clazz_doubleToInt(pt / this.yzCount); +pt -= ix * this.yzCount; +var iy = Clazz_doubleToInt(pt / this.voxelCounts[2]); +var iz = pt - iy * this.voxelCounts[2]; +this.voxelData[ix][iy][iz] = value; +}, "~N,~N"); +Clazz_defineMethod(c$, "setVoxelMap", +function(){ +this.voxelMap = new java.util.Hashtable(); +this.getYzCount(); +}); +Clazz_defineMethod(c$, "setMatrix", +function(){ +for (var i = 0; i < 3; i++) this.volumetricMatrix.setColumnV(i, this.volumetricVectors[i]); + +try { +this.inverseMatrix.invertM(this.volumetricMatrix); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("VolumeData error setting matrix -- bad unit vectors? "); +return false; +} else { +throw e; +} +} +return true; +}); +Clazz_defineMethod(c$, "transform", +function(v1, v2){ +this.volumetricMatrix.rotate2(v1, v2); +}, "JU.V3,JU.V3"); +Clazz_defineMethod(c$, "setPlaneParameters", +function(plane){ +this.thePlane = plane; +this.thePlaneNormalMag = Math.sqrt(plane.x * plane.x + plane.y * plane.y + plane.z * plane.z); +}, "JU.P4"); +Clazz_defineMethod(c$, "calcVoxelPlaneDistance", +function(x, y, z){ +this.voxelPtToXYZ(x, y, z, this.ptXyzTemp); +return this.distancePointToPlane(this.ptXyzTemp); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getToPlaneParameter", +function(){ +return (Math.sqrt(this.thePlane.x * this.thePlane.x + this.thePlane.y * this.thePlane.y + this.thePlane.z * this.thePlane.z) * this.minToPlaneDistance); +}); +Clazz_defineMethod(c$, "isNearPlane", +function(x, y, z, toPlaneParameter){ +this.voxelPtToXYZ(x, y, z, this.ptXyzTemp); +return ((this.thePlane.x * this.ptXyzTemp.x + this.thePlane.y * this.ptXyzTemp.y + this.thePlane.z * this.ptXyzTemp.z + this.thePlane.w) < toPlaneParameter); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "distancePointToPlane", +function(pt){ +return (this.thePlane.x * pt.x + this.thePlane.y * pt.y + this.thePlane.z * pt.z + this.thePlane.w) / this.thePlaneNormalMag; +}, "JU.T3"); +Clazz_defineMethod(c$, "voxelPtToXYZ", +function(x, y, z, pt){ +pt.scaleAdd2(x, this.volumetricVectors[0], this.volumetricOrigin); +pt.scaleAdd2(y, this.volumetricVectors[1], pt); +pt.scaleAdd2(z, this.volumetricVectors[2], pt); +}, "~N,~N,~N,JU.T3"); +Clazz_defineMethod(c$, "setUnitVectors", +function(){ +this.maxVectorLength = 0; +this.voxelVolume = 1; +for (var i = 0; i < 3; i++) { +var d = this.volumetricVectorLengths[i] = this.volumetricVectors[i].length(); +if (d == 0) return false; +if (d > this.maxVectorLength) this.maxVectorLength = d; +this.voxelVolume *= d; +this.unitVolumetricVectors[i].setT(this.volumetricVectors[i]); +this.unitVolumetricVectors[i].normalize(); +} +this.minToPlaneDistance = this.maxVectorLength * 2; +this.origin[0] = this.volumetricOrigin.x; +this.origin[1] = this.volumetricOrigin.y; +this.origin[2] = this.volumetricOrigin.z; +this.oabc = new Array(4); +this.oabc[0] = JU.V3.newV(this.volumetricOrigin); +for (var i = 0; i < 3; i++) { +var v = this.oabc[i + 1] = new JU.V3(); +v.scaleAdd2(this.voxelCounts[i] - 1, this.volumetricVectors[i], v); +} +return this.setMatrix(); +}); +Clazz_defineMethod(c$, "xyzToVoxelPt", +function(x, y, z, pt3i){ +this.ptXyzTemp.set(x, y, z); +this.ptXyzTemp.sub(this.volumetricOrigin); +this.inverseMatrix.rotate(this.ptXyzTemp); +pt3i.set(Math.round(this.ptXyzTemp.x), Math.round(this.ptXyzTemp.y), Math.round(this.ptXyzTemp.z)); +}, "~N,~N,~N,JU.T3i"); +Clazz_defineMethod(c$, "lookupInterpolatedVoxelValue", +function(point, getSource){ +if (this.mappingPlane != null) return this.distanceToMappingPlane(point); +if (this.sr != null) { +var v = this.sr.getValueAtPoint(point, getSource); +return (this.isSquared ? v * v : v); +}this.ptXyzTemp.sub2(point, this.volumetricOrigin); +this.inverseMatrix.rotate(this.ptXyzTemp); +var iMax; +var xLower = this.indexLower(this.ptXyzTemp.x, iMax = this.voxelCounts[0] - 1); +var xUpper = this.indexUpper(this.ptXyzTemp.x, xLower, iMax); +var yLower = this.indexLower(this.ptXyzTemp.y, iMax = this.voxelCounts[1] - 1); +var yUpper = this.indexUpper(this.ptXyzTemp.y, yLower, iMax); +var zLower = this.indexLower(this.ptXyzTemp.z, iMax = this.voxelCounts[2] - 1); +var zUpper = this.indexUpper(this.ptXyzTemp.z, zLower, iMax); +var v1 = J.jvxl.data.VolumeData.getFractional2DValue(this.mantissa(this.ptXyzTemp.x - xLower), this.mantissa(this.ptXyzTemp.y - yLower), this.getVoxelValue(xLower, yLower, zLower), this.getVoxelValue(xUpper, yLower, zLower), this.getVoxelValue(xLower, yUpper, zLower), this.getVoxelValue(xUpper, yUpper, zLower)); +var v2 = J.jvxl.data.VolumeData.getFractional2DValue(this.mantissa(this.ptXyzTemp.x - xLower), this.mantissa(this.ptXyzTemp.y - yLower), this.getVoxelValue(xLower, yLower, zUpper), this.getVoxelValue(xUpper, yLower, zUpper), this.getVoxelValue(xLower, yUpper, zUpper), this.getVoxelValue(xUpper, yUpper, zUpper)); +return v1 + this.mantissa(this.ptXyzTemp.z - zLower) * (v2 - v1); +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "mantissa", +function(f){ +return (this.isPeriodic ? f - Math.floor(f) : f); +}, "~N"); +Clazz_defineMethod(c$, "getVoxelValue", +function(x, y, z){ +if (this.voxelMap == null) return this.voxelData[x][y][z]; +var f = this.voxelMap.get(Integer.$valueOf(this.getPointIndex(x, y, z))); +return (f == null ? NaN : f.floatValue()); +}, "~N,~N,~N"); +c$.getFractional2DValue = Clazz_defineMethod(c$, "getFractional2DValue", +function(fx, fy, x11, x12, x21, x22){ +var v1 = x11 + fx * (x12 - x11); +var v2 = x21 + fx * (x22 - x21); +return v1 + fy * (v2 - v1); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "indexLower", +function(x, xMax){ +if (this.isPeriodic && xMax > 0) { +while (x < 0) x += xMax; + +while (x >= xMax) x -= xMax; + +return Clazz_doubleToInt(Math.floor(x)); +}if (x < 0) return 0; +var floor = Clazz_doubleToInt(Math.floor(x)); +return (floor > xMax ? xMax : floor); +}, "~N,~N"); +Clazz_defineMethod(c$, "indexUpper", +function(x, xLower, xMax){ +return (!this.isPeriodic && x < 0 || xLower == xMax ? xLower : xLower + 1); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "offsetCenter", +function(center){ +var pt = new JU.P3(); +pt.scaleAdd2((this.voxelCounts[0] - 1) / 2, this.volumetricVectors[0], pt); +pt.scaleAdd2((this.voxelCounts[1] - 1) / 2, this.volumetricVectors[1], pt); +pt.scaleAdd2((this.voxelCounts[2] - 1) / 2, this.volumetricVectors[2], pt); +this.volumetricOrigin.sub2(center, pt); +}, "JU.P3"); +Clazz_defineMethod(c$, "setDataDistanceToPlane", +function(plane){ +this.setPlaneParameters(plane); +var nx = this.voxelCounts[0]; +var ny = this.voxelCounts[1]; +var nz = this.voxelCounts[2]; +this.voxelData = Clazz_newFloatArray (nx, ny, nz, 0); +for (var x = 0; x < nx; x++) for (var y = 0; y < ny; y++) for (var z = 0; z < nz; z++) this.voxelData[x][y][z] = this.calcVoxelPlaneDistance(x, y, z); + + + +}, "JU.P4"); +Clazz_defineMethod(c$, "filterData", +function(isSquared, invertCutoff){ +var doInvert = (!Float.isNaN(invertCutoff)); +if (this.sr != null) { +this.isSquared = isSquared; +return; +}var nx = this.voxelCounts[0]; +var ny = this.voxelCounts[1]; +var nz = this.voxelCounts[2]; +if (isSquared) for (var x = 0; x < nx; x++) for (var y = 0; y < ny; y++) for (var z = 0; z < nz; z++) this.voxelData[x][y][z] *= this.voxelData[x][y][z]; + + + +if (doInvert) for (var x = 0; x < nx; x++) for (var y = 0; y < ny; y++) for (var z = 0; z < nz; z++) this.voxelData[x][y][z] = invertCutoff - this.voxelData[x][y][z]; + + + +}, "~B,~N"); +Clazz_defineMethod(c$, "capData", +function(plane, cutoff){ +if (this.voxelData == null) return; +var nx = this.voxelCounts[0]; +var ny = this.voxelCounts[1]; +var nz = this.voxelCounts[2]; +var normal = JU.V3.new3(plane.x, plane.y, plane.z); +normal.normalize(); +var f = 1; +for (var x = 0; x < nx; x++) for (var y = 0; y < ny; y++) for (var z = 0; z < nz; z++) { +var value = this.voxelData[x][y][z] - cutoff; +this.voxelPtToXYZ(x, y, z, this.ptXyzTemp); +var d = (this.ptXyzTemp.x * normal.x + this.ptXyzTemp.y * normal.y + this.ptXyzTemp.z * normal.z + plane.w - cutoff) / f; +if (d >= 0 || d > value) this.voxelData[x][y][z] = d; +} + + +}, "JU.P4,~N"); +Clazz_defineMethod(c$, "setVolumetricXml", +function(){ +var sb = new JU.SB(); +if (this.voxelCounts[0] == 0) { +sb.append("\n"); +} else { +sb.append("\n"); +for (var i = 0; i < 3; i++) sb.append("\n"); + +}sb.append("\n"); +return this.xmlData = sb.toString(); +}); +Clazz_defineMethod(c$, "setVoxelMapValue", +function(x, y, z, v){ +if (this.voxelMap == null) return; +this.voxelMap.put(Integer.$valueOf(this.getPointIndex(x, y, z)), Float.$valueOf(v)); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "calculateFractionalPoint", +function(cutoff, pointA, pointB, valueA, valueB, pt){ +var d = (valueB - valueA); +var fraction = (cutoff - valueA) / d; +this.edgeVector.sub2(pointB, pointA); +pt.scaleAdd2(fraction, this.edgeVector, pointA); +if (this.sr == null || !this.doIterate || valueB == valueA || fraction < 0.01 || fraction > 0.99 || (this.edgeVector.length()) < 0.01) return cutoff; +var n = 0; +this.ptTemp.setT(pt); +var v = this.lookupInterpolatedVoxelValue(this.ptTemp, false); +var v0 = NaN; +while (++n < 10) { +var fnew = (v - valueA) / d; +if (fnew < 0 || fnew > 1) break; +var diff = (cutoff - v) / d / 2; +fraction += diff; +if (fraction < 0 || fraction > 1) break; +pt.setT(this.ptTemp); +v0 = v; +if (Math.abs(diff) < 0.005) break; +this.ptTemp.scaleAdd2(diff, this.edgeVector, pt); +v = this.lookupInterpolatedVoxelValue(this.ptTemp, false); +} +return v0; +}, "~N,JU.P3,JU.P3,~N,~N,JU.P3"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.data"); +Clazz_load(null, "J.jvxl.data.JvxlData", ["JU.SB", "J.jvxl.data.JvxlCoder"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.msg = ""; +this.wasJvxl = false; +this.wasCubic = false; +this.jvxlFileSource = null; +this.jvxlFileTitle = null; +this.jvxlFileMessage = null; +this.jvxlSurfaceData = null; +this.jvxlEdgeData = null; +this.jvxlColorData = null; +this.jvxlVolumeDataXml = null; +this.jvxlExcluded = null; +this.jvxlPlane = null; +this.isJvxlPrecisionColor = false; +this.jvxlDataIsColorMapped = false; +this.jvxlDataIs2dContour = false; +this.jvxlDataIsColorDensity = false; +this.isColorReversed = false; +this.thisSet = null; +this.edgeFractionBase = 35; +this.edgeFractionRange = 90; +this.colorFractionBase = 35; +this.colorFractionRange = 90; +this.isValid = true; +this.insideOut = false; +this.isXLowToHigh = false; +this.isContoured = false; +this.isBicolorMap = false; +this.isTruncated = false; +this.isCutoffAbsolute = false; +this.isModelConnected = false; +this.vertexDataOnly = false; +this.mappedDataMin = 0; +this.mappedDataMax = 0; +this.valueMappedToRed = 0; +this.valueMappedToBlue = 0; +this.cutoff = 0; +this.cutoffRange = null; +this.pointsPerAngstrom = 0; +this.nPointsX = 0; +this.nPointsY = 0; +this.nPointsZ = 0; +this.nBytes = 0; +this.nContours = 0; +this.nEdges = 0; +this.nSurfaceInts = 0; +this.vertexCount = 0; +this.vContours = null; +this.contourColixes = null; +this.contourColors = null; +this.contourValues = null; +this.contourValuesUsed = null; +this.thisContour = -1; +this.scale3d = 0; +this.minColorIndex = -1; +this.maxColorIndex = 0; +this.title = null; +this.version = null; +this.boundingBox = null; +this.excludedTriangleCount = 0; +this.excludedVertexCount = 0; +this.colorDensity = false; +this.pointSize = 0; +this.moleculeXml = null; +this.dataMin = 0; +this.dataMax = 0; +this.saveVertexCount = 0; +this.vertexColorMap = null; +this.nVertexColors = 0; +this.vertexColors = null; +this.color = null; +this.meshColor = null; +this.translucency = 0; +this.colorScheme = null; +this.rendering = null; +this.slabValue = -2147483648; +this.isSlabbable = false; +this.diameter = 0; +this.slabInfo = null; +this.allowVolumeRender = false; +this.voxelVolume = 0; +this.mapLattice = null; +this.fixedLattice = null; +this.baseColor = null; +this.integration = NaN; +this.sbOut = null; +Clazz_instantialize(this, arguments);}, J.jvxl.data, "JvxlData", null); +Clazz_prepareFields (c$, function(){ +this.jvxlExcluded = new Array(4); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$, "clear", +function(){ +this.allowVolumeRender = true; +this.jvxlSurfaceData = ""; +this.jvxlEdgeData = ""; +this.jvxlColorData = ""; +this.jvxlVolumeDataXml = ""; +this.color = null; +this.colorScheme = null; +this.colorDensity = false; +this.pointSize = NaN; +this.contourValues = null; +this.contourValuesUsed = null; +this.contourColixes = null; +this.contourColors = null; +this.integration = NaN; +this.isSlabbable = false; +this.isValid = true; +this.mapLattice = null; +this.meshColor = null; +this.msg = ""; +this.nPointsX = 0; +this.nVertexColors = 0; +this.fixedLattice = null; +this.slabInfo = null; +this.slabValue = -2147483648; +this.thisSet = null; +this.rendering = null; +this.thisContour = -1; +this.translucency = 0; +this.vContours = null; +this.vertexColorMap = null; +this.vertexColors = null; +this.voxelVolume = 0; +}); +Clazz_defineMethod(c$, "setSurfaceInfo", +function(thePlane, mapLattice, nSurfaceInts, surfaceData){ +this.jvxlSurfaceData = surfaceData; +this.jvxlPlane = thePlane; +this.mapLattice = mapLattice; +this.nSurfaceInts = nSurfaceInts; +}, "JU.P4,JU.P3,~N,~S"); +Clazz_defineMethod(c$, "setSurfaceInfoFromBitSet", +function(bs, thePlane){ +this.setSurfaceInfoFromBitSetPts(bs, thePlane, null); +}, "JU.BS,JU.P4"); +Clazz_defineMethod(c$, "setSurfaceInfoFromBitSetPts", +function(bs, thePlane, mapLattice){ +var sb = new JU.SB(); +var nSurfaceInts = (thePlane != null ? 0 : J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(bs, this.nPointsX * this.nPointsY * this.nPointsZ, sb)); +this.setSurfaceInfo(thePlane, mapLattice, nSurfaceInts, sb.toString()); +}, "JU.BS,JU.P4,JU.P3"); +Clazz_defineMethod(c$, "jvxlUpdateInfo", +function(title, nBytes){ +this.title = title; +this.nBytes = nBytes; +}, "~A,~N"); +c$.updateSurfaceData = Clazz_defineMethod(c$, "updateSurfaceData", +function(edgeData, vertexValues, vertexCount, vertexIncrement, isNaN){ +if (edgeData.length == 0) return ""; +var chars = edgeData.toCharArray(); +for (var i = 0, ipt = 0; i < vertexCount; i += vertexIncrement, ipt++) if (Float.isNaN(vertexValues[i])) chars[ipt] = isNaN; + +return String.copyValueOf(chars); +}, "~S,~A,~N,~N,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.data"); +Clazz_load(["JU.MeshSurface"], "J.jvxl.data.MeshData", ["java.util.Arrays", "JU.AU", "$.BS", "$.V3", "JU.BSUtil"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.setsSuccessful = false; +this.vertexIncrement = 1; +this.polygonColorData = null; +if (!Clazz_isClassDefined("J.jvxl.data.MeshData.SSet")) { +J.jvxl.data.MeshData.$MeshData$SSet$ (); +} +if (!Clazz_isClassDefined("J.jvxl.data.MeshData.SortSet")) { +J.jvxl.data.MeshData.$MeshData$SortSet$ (); +} +Clazz_instantialize(this, arguments);}, J.jvxl.data, "MeshData", JU.MeshSurface); +Clazz_defineMethod(c$, "addVertexCopy", +function(vertex, value, assocVertex, asCopy){ +if (assocVertex < 0) this.vertexIncrement = -assocVertex; +return this.addVCVal(vertex, value, asCopy); +}, "JU.T3,~N,~N,~B"); +Clazz_defineMethod(c$, "getSurfaceSet", +function(){ +return (this.surfaceSet == null ? this.getSurfaceSetForLevel(0) : this.surfaceSet); +}); +Clazz_defineMethod(c$, "getSurfaceSetForLevel", +function(level){ +if (level == 0) { +this.surfaceSet = new Array(100); +this.nSets = 0; +}this.setsSuccessful = true; +for (var i = 0; i < this.pc; i++) if (this.pis[i] != null) { +if (this.bsSlabDisplay != null && !this.bsSlabDisplay.get(i)) continue; +var p = this.pis[i]; +var pt0 = this.findSet(p[0]); +var pt1 = this.findSet(p[1]); +var pt2 = this.findSet(p[2]); +if (pt0 < 0 && pt1 < 0 && pt2 < 0) { +this.createSet(p[0], p[1], p[2]); +continue; +}if (pt0 == pt1 && pt1 == pt2) continue; +if (pt0 >= 0) { +this.surfaceSet[pt0].set(p[1]); +this.surfaceSet[pt0].set(p[2]); +if (pt1 >= 0 && pt1 != pt0) this.mergeSets(pt0, pt1); +if (pt2 >= 0 && pt2 != pt0 && pt2 != pt1) this.mergeSets(pt0, pt2); +continue; +}if (pt1 >= 0) { +this.surfaceSet[pt1].set(p[0]); +this.surfaceSet[pt1].set(p[2]); +if (pt2 >= 0 && pt2 != pt1) this.mergeSets(pt1, pt2); +continue; +}this.surfaceSet[pt2].set(p[0]); +this.surfaceSet[pt2].set(p[1]); +} +var n = 0; +for (var i = 0; i < this.nSets; i++) if (this.surfaceSet[i] != null) n++; + +var temp = new Array(this.surfaceSet.length); +n = 0; +for (var i = 0; i < this.nSets; i++) if (this.surfaceSet[i] != null) temp[n++] = this.surfaceSet[i]; + +this.nSets = n; +this.surfaceSet = temp; +if (!this.setsSuccessful && level < 2) this.getSurfaceSetForLevel(level + 1); +if (level == 0) { +var sets = new Array(this.nSets); +for (var i = 0; i < this.nSets; i++) sets[i] = Clazz_innerTypeInstance(J.jvxl.data.MeshData.SSet, this, null, this.surfaceSet[i]); + +java.util.Arrays.sort(sets, Clazz_innerTypeInstance(J.jvxl.data.MeshData.SortSet, this, null)); +for (var i = 0; i < this.nSets; i++) this.surfaceSet[i] = sets[i].bs; + +this.setVertexSets(false); +}return this.surfaceSet; +}, "~N"); +Clazz_defineMethod(c$, "setVertexSets", +function(onlyIfNull){ +if (this.surfaceSet == null) return; +var nNull = 0; +for (var i = 0; i < this.nSets; i++) { +if (this.surfaceSet[i] != null && this.surfaceSet[i].nextSetBit(0) < 0) this.surfaceSet[i] = null; +if (this.surfaceSet[i] == null) nNull++; +} +if (nNull > 0) { +var bsNew = new Array(this.nSets - nNull); +for (var i = 0, n = 0; i < this.nSets; i++) if (this.surfaceSet[i] != null) bsNew[n++] = this.surfaceSet[i]; + +this.surfaceSet = bsNew; +this.nSets -= nNull; +} else if (onlyIfNull) { +return; +}this.vertexSets = Clazz_newIntArray (this.vc, 0); +for (var i = 0; i < this.nSets; i++) for (var j = this.surfaceSet[i].nextSetBit(0); j >= 0; j = this.surfaceSet[i].nextSetBit(j + 1)) this.vertexSets[j] = i; + + +}, "~B"); +Clazz_defineMethod(c$, "findSet", +function(vertex){ +for (var i = 0; i < this.nSets; i++) if (this.surfaceSet[i] != null && this.surfaceSet[i].get(vertex)) return i; + +return -1; +}, "~N"); +Clazz_defineMethod(c$, "createSet", +function(v1, v2, v3){ +var i; +for (i = 0; i < this.nSets; i++) if (this.surfaceSet[i] == null) break; + +if (i == this.surfaceSet.length) this.surfaceSet = JU.AU.ensureLength(this.surfaceSet, this.surfaceSet.length + 100); +this.surfaceSet[i] = new JU.BS(); +this.surfaceSet[i].set(v1); +this.surfaceSet[i].set(v2); +this.surfaceSet[i].set(v3); +if (i == this.nSets) this.nSets++; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "mergeSets", +function(a, b){ +this.surfaceSet[a].or(this.surfaceSet[b]); +this.surfaceSet[b] = null; +}, "~N,~N"); +Clazz_defineMethod(c$, "invalidateSurfaceSet", +function(i){ +for (var j = this.surfaceSet[i].nextSetBit(0); j >= 0; j = this.surfaceSet[i].nextSetBit(j + 1)) this.vvs[j] = NaN; + +this.surfaceSet[i] = null; +}, "~N"); +c$.checkCutoff = Clazz_defineMethod(c$, "checkCutoff", +function(iA, iB, iC, vertexValues){ +if (iA < 0 || iB < 0 || iC < 0) return false; +var val1 = vertexValues[iA]; +var val2 = vertexValues[iB]; +var val3 = vertexValues[iC]; +return (val1 >= 0 && val2 >= 0 && val3 >= 0 || val1 <= 0 && val2 <= 0 && val3 <= 0); +}, "~N,~N,~N,~A"); +c$.calculateVolumeOrArea = Clazz_defineMethod(c$, "calculateVolumeOrArea", +function(m, thisSet, isArea, getSets){ +if (getSets || m.nSets <= 0) m.getSurfaceSet(); +var justOne = (thisSet != null && thisSet.cardinality() == 1); +var n = (justOne || m.nSets <= 0 ? 1 : m.nSets); +var v = Clazz_newDoubleArray (n, 0); +var vAB = new JU.V3(); +var vAC = new JU.V3(); +var vTemp = new JU.V3(); +for (var i = m.pc; --i >= 0; ) { +if (m.setABC(i) == null) continue; +var iSet = (m.nSets <= 0 ? 0 : m.vertexSets[m.iA]); +if (thisSet != null && !thisSet.get(iSet)) continue; +if (isArea) { +vAB.sub2(m.vs[m.iB], m.vs[m.iA]); +vAC.sub2(m.vs[m.iC], m.vs[m.iA]); +vTemp.cross(vAB, vAC); +v[justOne ? 0 : iSet] += vTemp.length(); +} else { +vAB.setT(m.vs[m.iB]); +vAC.setT(m.vs[m.iC]); +vTemp.cross(vAB, vAC); +vAC.setT(m.vs[m.iA]); +v[justOne ? 0 : iSet] += vAC.dot(vTemp); +}} +var factor = (isArea ? 2 : 6); +for (var i = 0; i < n; i++) v[i] /= factor; + +if (justOne) return Float.$valueOf(v[0]); +if (thisSet != null) { +thisSet.and(JU.BSUtil.newBitSet2(0, v.length)); +var v1 = Clazz_newDoubleArray (thisSet.cardinality(), 0); +for (var pt = 0, i = thisSet.nextSetBit(0); i >= 0; i = thisSet.nextSetBit(i + 1)) { +v1[pt++] = v[i]; +} +v = v1; +}return v; +}, "J.jvxl.data.MeshData,JU.BS,~B,~B"); +Clazz_defineMethod(c$, "updateInvalidatedVertices", +function(bs){ +bs.clearAll(); +for (var i = 0; i < this.vc; i += this.vertexIncrement) if (Float.isNaN(this.vvs[i])) bs.set(i); + +}, "JU.BS"); +Clazz_defineMethod(c$, "invalidateVertices", +function(bsInvalid){ +for (var i = bsInvalid.nextSetBit(0); i >= 0; i = bsInvalid.nextSetBit(i + 1)) this.vvs[i] = NaN; + +}, "JU.BS"); +c$.$MeshData$SSet$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.bs = null; +this.n = 0; +Clazz_instantialize(this, arguments);}, J.jvxl.data.MeshData, "SSet", null); +Clazz_makeConstructor(c$, +function(bs){ +this.bs = bs; +this.n = bs.cardinality(); +}, "JU.BS"); +/*eoif4*/})(); +}; +c$.$MeshData$SortSet$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +Clazz_instantialize(this, arguments);}, J.jvxl.data.MeshData, "SortSet", null, java.util.Comparator); +Clazz_overrideMethod(c$, "compare", +function(o1, o2){ +return (o1.n > o2.n ? -1 : o1.n < o2.n ? 1 : 0); +}, "J.jvxl.data.MeshData.SSet,J.jvxl.data.MeshData.SSet"); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(null, "J.jvxl.readers.XmlReader", ["JU.P3", "$.PT", "$.SB", "JU.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.br = null; +this.line = null; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "XmlReader", null); +Clazz_makeConstructor(c$, +function(br){ +this.br = br; +}, "java.io.BufferedReader"); +Clazz_defineMethod(c$, "getLine", +function(){ +return this.line; +}); +Clazz_defineMethod(c$, "toTag", +function(name){ +this.skipTo("<" + name); +if (this.line == null) return ""; +var i = this.line.indexOf("<" + name) + name.length + 1; +if (i == this.line.length) return this.line; +if (this.line.charAt(i) == ' ' || this.line.charAt(i) == '>') return this.line; +this.line = null; +return this.toTag(name); +}, "~S"); +Clazz_defineMethod(c$, "skipTag", +function(name){ +this.skipTo(""); +}, "~S"); +Clazz_defineMethod(c$, "getXmlData", +function(name, data, withTag, allowSelfCloseOption){ +return this.getXmlDataLF(name, data, withTag, allowSelfCloseOption, false); +}, "~S,~S,~B,~B"); +Clazz_defineMethod(c$, "getXmlDataLF", +function(name, data, withTag, allowSelfCloseOption, addLF){ +var closer = ""; +var tag = "<" + name; +if (data == null) { +var sb = new JU.SB(); +try { +if (this.line == null) this.line = this.br.readLine(); +while (this.line.indexOf(tag) < 0) { +this.line = this.br.readLine(); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +sb.append(this.line); +if (addLF) sb.append("\n"); +var selfClosed = false; +var pt = this.line.indexOf("/>"); +var pt1 = this.line.indexOf(">"); +if (pt1 < 0 || pt == pt1 - 1) selfClosed = allowSelfCloseOption; +while (this.line.indexOf(closer) < 0 && (!selfClosed || this.line.indexOf("/>") < 0)) { +sb.append(this.line = this.br.readLine()); +if (addLF) sb.append("\n"); +} +data = sb.toString(); +}return J.jvxl.readers.XmlReader.extractTag(data, tag, closer, withTag); +}, "~S,~S,~B,~B,~B"); +c$.extractTagOnly = Clazz_defineMethod(c$, "extractTagOnly", +function(data, tag){ +return J.jvxl.readers.XmlReader.extractTag(data, "<" + tag + ">", "", false); +}, "~S,~S"); +c$.extractTag = Clazz_defineMethod(c$, "extractTag", +function(data, tag, closer, withTag){ +var pt1 = data.indexOf(tag); +if (pt1 < 0) return ""; +var pt2 = data.indexOf(closer, pt1); +if (pt2 < 0) { +pt2 = data.indexOf("/>", pt1); +closer = "/>"; +}if (pt2 < 0) return ""; +if (withTag) { +pt2 += closer.length; +return data.substring(pt1, pt2); +}var quoted = false; +for (; pt1 < pt2; pt1++) { +var ch; +if ((ch = data.charAt(pt1)) == '"') quoted = !quoted; + else if (quoted && ch == '\\') pt1++; + else if (!quoted && (ch == '>' || ch == '/')) break; +} +if (pt1 >= pt2) return ""; +while (JU.PT.isWhitespace(data.charAt(++pt1))) { +} +return J.jvxl.readers.XmlReader.unwrapCdata(data.substring(pt1, pt2)); +}, "~S,~S,~S,~B"); +c$.unwrapCdata = Clazz_defineMethod(c$, "unwrapCdata", +function(s){ +return (s.startsWith("") ? JU.PT.rep(s.substring(9, s.length - 3), "]]]]>", "]]>") : s); +}, "~S"); +c$.getXmlAttrib = Clazz_defineMethod(c$, "getXmlAttrib", +function(data, what){ +var nexta = Clazz_newIntArray (1, 0); +var pt = J.jvxl.readers.XmlReader.setNext(data, what, nexta, 1); +if (pt < 2 || (pt = J.jvxl.readers.XmlReader.setNext(data, "\"", nexta, 0)) < 2) return ""; +var pt1 = J.jvxl.readers.XmlReader.setNext(data, "\"", nexta, -1); +return (pt1 <= 0 ? "" : data.substring(pt, pt1)); +}, "~S,~S"); +Clazz_defineMethod(c$, "getXmlPoint", +function(data, key){ +var spt = J.jvxl.readers.XmlReader.getXmlAttrib(data, key).$replace('(', '{').$replace(')', '}'); +var value = JU.Escape.uP(spt); +if (Clazz_instanceOf(value,"JU.P3")) return value; +return new JU.P3(); +}, "~S,~S"); +c$.setNext = Clazz_defineMethod(c$, "setNext", +function(data, what, next, offset){ +var ipt = next[0]; +if (ipt < 0 || (ipt = data.indexOf(what, next[0])) < 0) return -1; +ipt += what.length; +next[0] = ipt + offset; +if (offset > 0 && ipt < data.length && data.charAt(ipt) != '=') return J.jvxl.readers.XmlReader.setNext(data, what, next, offset); +return next[0]; +}, "~S,~S,~A,~N"); +Clazz_defineMethod(c$, "skipTo", +function(key){ +if (this.line == null) this.line = this.br.readLine(); +while (this.line != null && this.line.indexOf(key) < 0) this.line = this.br.readLine(); + +}, "~S"); +Clazz_defineMethod(c$, "isNext", +function(name){ +if (this.line == null || this.line.indexOf("= 0 && this.line.indexOf("= 0); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(["JU.P3", "$.V3"], "J.jvxl.readers.SurfaceGenerator", ["JU.AU", "$.BS", "$.Measure", "$.P4", "$.PT", "$.Rdr", "$.SB", "J.jvxl.data.JvxlCoder", "$.JvxlData", "$.MeshData", "$.VolumeData", "J.jvxl.readers.Parameters", "$.SurfaceReader", "JU.Logger", "JV.FileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.params = null; +this.jvxlData = null; +this.meshData = null; +this.volumeDataTemp = null; +this.meshDataServer = null; +this.atomDataServer = null; +this.marchingSquares = null; +this.version = null; +this.isValid = true; +this.fileType = null; +this.bsVdw = null; +this.colorPtr = 0; +this.surfaceReader = null; +this.out = null; +this.readerData = null; +this.vAB = null; +this.vNorm = null; +this.ptRef = null; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "SurfaceGenerator", null); +Clazz_prepareFields (c$, function(){ +this.vAB = new JU.V3(); +this.vNorm = new JU.V3(); +this.ptRef = JU.P3.new3(0, 0, 1e15); +}); +Clazz_makeConstructor(c$, +function(atomDataServer, meshDataServer, meshData, jvxlData){ +this.atomDataServer = atomDataServer; +this.meshDataServer = meshDataServer; +this.params = new J.jvxl.readers.Parameters(); +this.meshData = (meshData == null ? new J.jvxl.data.MeshData() : meshData); +this.jvxlData = (jvxlData == null ? new J.jvxl.data.JvxlData() : jvxlData); +this.volumeDataTemp = new J.jvxl.data.VolumeData(); +this.initializeIsosurface(); +}, "J.atomdata.AtomDataServer,J.jvxl.api.MeshDataServer,J.jvxl.data.MeshData,J.jvxl.data.JvxlData"); +Clazz_defineMethod(c$, "setJvxlData", +function(jvxlData){ +this.jvxlData = jvxlData; +if (jvxlData != null) jvxlData.version = this.version; +}, "J.jvxl.data.JvxlData"); +Clazz_defineMethod(c$, "setProp", +function(propertyName, value, bs){ +if ("debug" === propertyName) { +var TF = (value).booleanValue(); +this.params.logMessages = TF; +this.params.logCube = TF; +return true; +}if ("init" === propertyName) { +this.initializeIsosurface(); +if (Clazz_instanceOf(value,"J.jvxl.readers.Parameters")) { +this.params = value; +} else { +this.params.script = value; +if (this.params.script != null && this.params.script.indexOf(";#") >= 0) { +this.params.script = JU.PT.rep(this.params.script, ";#", "; #"); +}}return false; +}if ("silent" === propertyName) { +this.params.isSilent = true; +return true; +}if ("map" === propertyName) { +this.params.resetForMapping((value).booleanValue()); +if (this.surfaceReader != null) this.surfaceReader.minMax = null; +return true; +}if ("finalize" === propertyName) { +this.initializeIsosurface(); +return true; +}if ("clear" === propertyName) { +if (this.surfaceReader != null) this.surfaceReader.discardTempData(true); +return false; +}if ("fileIndex" === propertyName) { +this.params.fileIndex = (value).intValue(); +if (this.params.fileIndex < 0) this.params.fileIndex = 0; +this.params.readAllData = false; +return true; +}if ("blockData" === propertyName) { +this.params.blockCubeData = (value).booleanValue(); +return true; +}if ("withinPoints" === propertyName) { +this.params.boundingBox = (value)[1]; +return true; +}if ("boundingBox" === propertyName) { +var pts = value; +this.params.boundingBox = Clazz_newArray(-1, [JU.P3.newP(pts[0]), JU.P3.newP(pts[pts.length - 1])]); +return true; +}if ("func" === propertyName) { +this.params.func = value; +return true; +}if ("intersection" === propertyName) { +this.params.intersection = value; +return true; +}if ("bsSolvent" === propertyName) { +this.params.bsSolvent = value; +return true; +}if ("select" === propertyName) { +this.params.bsSelected = value; +return true; +}if ("ignore" === propertyName) { +this.params.bsIgnore = value; +return true; +}if ("propertySmoothing" === propertyName) { +this.params.propertySmoothing = (value).booleanValue(); +return true; +}if ("propertyDistanceMax" === propertyName) { +this.params.propertyDistanceMax = (value).floatValue(); +return true; +}if ("propertySmoothingPower" === propertyName) { +this.params.propertySmoothingPower = (value).intValue(); +return true; +}if ("title" === propertyName) { +if (value == null) { +this.params.title = null; +return true; +} else if (JU.AU.isAS(value)) { +this.params.title = value; +if (JU.Logger.debugging) for (var i = 0; i < this.params.title.length; i++) if (this.params.title[i].length > 0) JU.Logger.info(this.params.title[i]); + +}return true; +}if ("sigma" === propertyName) { +this.params.cutoff = this.params.sigma = (value).floatValue(); +this.params.cutoffRange = null; +this.params.cutoffAutomatic = false; +return true; +}if ("cutoff" === propertyName) { +this.params.cutoff = (value).floatValue(); +this.params.cutoffRange = null; +this.params.isPositiveOnly = false; +this.params.cutoffAutomatic = false; +return true; +}if ("cutoffPositive" === propertyName) { +this.params.cutoff = (value).floatValue(); +this.params.cutoffRange = null; +this.params.isPositiveOnly = true; +this.params.isCutoffAbsolute = false; +this.params.cutoffAutomatic = false; +return true; +}if ("cutoffRange" === propertyName) { +this.params.cutoffRange = value; +this.params.cutoff = this.params.cutoffRange[0]; +this.params.isPositiveOnly = false; +this.params.cutoffAutomatic = false; +return true; +}if ("parameters" === propertyName) { +this.params.parameters = JU.AU.ensureLengthA(value, 2); +if (this.params.parameters.length > 0 && this.params.parameters[0] != 0) this.params.cutoff = this.params.parameters[0]; +return true; +}if ("cap" === propertyName || "slab" === propertyName) { +if (value != null) this.params.addSlabInfo(value); +return true; +}if ("scale" === propertyName) { +this.params.scale = (value).floatValue(); +return true; +}if ("scale3d" === propertyName) { +this.params.scale3d = (value).floatValue(); +return true; +}if ("angstroms" === propertyName) { +this.params.isAngstroms = true; +return true; +}if ("resolution" === propertyName) { +var resolution = (value).floatValue(); +this.params.resolution = (resolution > 0 ? resolution : 3.4028235E38); +return true; +}if ("downsample" === propertyName) { +var rate = (value).intValue(); +this.params.downsampleFactor = (rate >= 0 ? rate : 0); +return true; +}if ("anisotropy" === propertyName) { +if ((this.params.dataType & 32) == 0) this.params.setAnisotropy(value); +return true; +}if ("eccentricity" === propertyName) { +this.params.setEccentricity(value); +return true; +}if ("addHydrogens" === propertyName) { +this.params.addHydrogens = (value).booleanValue(); +return true; +}if ("squareData" === propertyName) { +this.params.isSquared = (value == null ? false : (value).booleanValue()); +return true; +}if ("squareLinear" === propertyName) { +this.params.isSquaredLinear = (value == null ? false : (value).booleanValue()); +return true; +}if ("gridPoints" === propertyName) { +this.params.iAddGridPoints = true; +return true; +}if ("atomIndex" === propertyName) { +this.params.atomIndex = (value).intValue(); +return true; +}if ("insideOut" === propertyName) { +this.params.insideOut = true; +return true; +}if ("sign" === propertyName) { +this.params.isCutoffAbsolute = !this.params.isPositiveOnly; +this.params.colorBySign = true; +this.colorPtr = 0; +return true; +}if ("colorRGB" === propertyName) { +var rgb = (value).intValue(); +this.params.colorRgb = this.params.colorPos = this.params.colorPosLCAO = rgb; +if (this.colorPtr++ == 0) { +this.params.colorNeg = this.params.colorNegLCAO = rgb; +} else { +this.params.colorRgb = 2147483647; +}return true; +}if ("monteCarloCount" === propertyName) { +this.params.psi_monteCarloCount = (value).intValue(); +return true; +}if ("rangeAll" === propertyName) { +this.params.rangeAll = true; +return true; +}if ("rangeSelected" === propertyName) { +this.params.rangeSelected = true; +return true; +}if ("red" === propertyName) { +this.params.valueMappedToRed = (value).floatValue(); +return true; +}if ("blue" === propertyName) { +this.params.valueMappedToBlue = (value).floatValue(); +if (this.params.valueMappedToRed > this.params.valueMappedToBlue) { +var f = this.params.valueMappedToRed; +this.params.valueMappedToRed = this.params.valueMappedToBlue; +this.params.valueMappedToBlue = f; +this.params.isColorReversed = !this.params.isColorReversed; +}this.params.rangeDefined = true; +this.params.rangeAll = false; +return true; +}if ("reverseColor" === propertyName) { +this.params.isColorReversed = true; +return true; +}if ("setColorScheme" === propertyName) { +this.getSurfaceSets(); +this.params.colorBySets = true; +this.mapSurface(); +return true; +}if ("center" === propertyName) { +this.params.center.setT(value); +return true; +}if ("origin" === propertyName) { +this.params.origin = value; +return true; +}if ("step" === propertyName) { +this.params.steps = value; +return true; +}if ("modelInvRotation" === propertyName) { +this.params.modelInvRotation = value; +return true; +}if ("point" === propertyName) { +this.params.points = value; +return true; +}if ("withinDistance" === propertyName) { +this.params.distance = (value).floatValue(); +return true; +}if ("withinPoint" === propertyName) { +this.params.point = value; +return true; +}if ("progressive" === propertyName) { +this.params.isXLowToHigh = true; +return true; +}if ("phase" === propertyName) { +var color = value; +this.params.isCutoffAbsolute = true; +this.params.colorBySign = true; +this.params.colorByPhase = true; +this.params.colorPhase = J.jvxl.readers.SurfaceReader.getColorPhaseIndex(color); +if (this.params.colorPhase < 0) { +JU.Logger.warn(" invalid color phase: " + color); +this.params.colorPhase = 0; +}this.params.colorByPhase = this.params.colorPhase != 0; +if (this.params.state >= 2) { +this.params.dataType = this.params.surfaceType; +this.params.state = 3; +this.params.isBicolorMap = true; +this.surfaceReader.applyColorScale(); +}return true; +}if ("radius" === propertyName) { +JU.Logger.info("solvent probe radius set to " + value); +this.params.atomRadiusData = value; +return true; +}if ("envelopeRadius" === propertyName) { +this.params.envelopeRadius = (value).floatValue(); +return true; +}if ("cavityRadius" === propertyName) { +this.params.cavityRadius = (value).floatValue(); +return true; +}if ("cavity" === propertyName) { +this.params.isCavity = true; +return true; +}if ("doFullMolecular" === propertyName) { +this.params.doFullMolecular = true; +return true; +}if ("pocket" === propertyName) { +this.params.pocket = value; +this.params.fullyLit = this.params.pocket.booleanValue(); +return true; +}if ("minset" === propertyName) { +this.params.minSet = (value).intValue(); +return true; +}if ("maxset" === propertyName) { +this.params.maxSet = (value).intValue(); +return true; +}if ("plane" === propertyName) { +this.params.setPlane(value); +return true; +}if ("contour" === propertyName) { +this.params.isContoured = true; +var n; +if (JU.AU.isAF(value)) { +this.params.contoursDiscrete = value; +this.params.nContours = this.params.contoursDiscrete.length; +} else if (Clazz_instanceOf(value,"JU.P3")) { +var pt = this.params.contourIncrements = value; +var from = pt.x; +var to = pt.y; +var step = pt.z; +if (step <= 0) step = 1; +n = 0; +for (var p = from; p <= to + step / 10; p += step, n++) { +} +this.params.contoursDiscrete = Clazz_newFloatArray (n, 0); +var p = from; +for (var i = 0; i < n; i++, p += step) { +this.params.contoursDiscrete[i] = p; +} +this.params.nContours = n; +} else { +n = (value).intValue(); +this.params.thisContour = 0; +if (n == 0) this.params.nContours = 9; + else if (n > 0) this.params.nContours = n; + else this.params.thisContour = -n; +}return true; +}if ("colorDiscrete" === propertyName) { +this.params.contourColixes = value; +return true; +}if ("colorDensity" === propertyName) { +this.params.colorDensity = true; +if (value != null) this.params.pointSize = (value).floatValue(); +return false; +}if ("fullPlane" === propertyName) { +this.params.contourFromZero = !(value).booleanValue(); +return true; +}if ("mapLattice" === propertyName) { +this.params.mapLattice = value; +return true; +}if ("extendGrid" === propertyName) { +this.params.extendGrid = (value).floatValue(); +return true; +}if ("property" === propertyName) { +this.params.dataType = 1208; +this.params.theProperty = value; +this.mapSurface(); +return true; +}if ("sphere" === propertyName) { +this.params.setSphere((value).floatValue(), false); +this.readerData = Float.$valueOf(this.params.distance); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("geodesic" === propertyName) { +this.params.setSphere((value).floatValue(), true); +this.readerData = Float.$valueOf(this.params.distance); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("ellipsoid" === propertyName) { +if (Clazz_instanceOf(value,"JU.P4")) this.params.setEllipsoidP4(value); + else if (JU.AU.isAF(value)) this.params.setEllipsoidAF(value); + else return true; +this.readerData = Float.$valueOf(this.params.distance); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("ellipsoid3" === propertyName) { +this.params.setEllipsoidAF(value); +this.readerData = Float.$valueOf(this.params.distance); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("lp" === propertyName) { +this.params.setLp(value); +this.readerData = Clazz_newFloatArray(-1, [3, 2, 0, 15, 0]); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("rad" === propertyName) { +this.params.setRadical(value); +this.readerData = Clazz_newFloatArray(-1, [3, 2, 0, 15, 0]); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("lobe" === propertyName) { +this.params.setLobe(value); +this.readerData = Clazz_newFloatArray(-1, [3, 2, 0, 15, 0]); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.generateSurface(); +return true; +}if ("hydrogenOrbital" === propertyName) { +if (!this.params.setAtomicOrbital(value)) { +this.isValid = false; +return true; +}this.readerData = Clazz_newFloatArray(-1, [this.params.psi_n, this.params.psi_l, this.params.psi_m, this.params.psi_Znuc, this.params.psi_monteCarloCount]); +this.surfaceReader = this.newReader("IsoShapeReader"); +this.processState(); +return true; +}if ("functionXY" === propertyName) { +this.params.setFunctionXY(value); +if (this.params.isContoured) this.volumeDataTemp.setPlaneParameters(this.params.thePlane == null ? this.params.thePlane = JU.P4.new4(0, 0, 1, 0) : this.params.thePlane); +if ((this.params.functionInfo.get(0)).indexOf("_xyz") >= 0) this.getFunctionZfromXY(); +this.processState(); +return true; +}if ("functionXYZ" === propertyName) { +this.params.setFunctionXYZ(value); +this.processState(); +return true; +}if ("lcaoType" === propertyName) { +this.params.setLcao(value, this.colorPtr); +return true; +}if ("lcaoCartoonCenter" === propertyName) { +if (++this.params.state != 2) return true; +if (Float.isNaN(this.params.center.x)) this.params.center.setT(value); +return false; +}if ("molecular" === propertyName || "solvent" === propertyName || "sasurface" === propertyName || "nomap" === propertyName) { +this.params.setSolvent(propertyName, (value).floatValue()); +if (!this.params.isSilent) JU.Logger.info(this.params.calculationType); +this.processState(); +return true; +}if ("moData" === propertyName) { +this.params.moData = value; +return true; +}if ("mepCalcType" === propertyName) { +this.params.mep_calcType = (value).intValue(); +return true; +}if ("mep" === propertyName) { +this.params.setMep(value, false); +this.processState(); +return true; +}if ("mlp" === propertyName) { +this.params.setMep(value, true); +this.processState(); +return true; +}if ("nci" === propertyName) { +var isPromolecular = (value).booleanValue(); +this.params.setNci(isPromolecular); +if (isPromolecular) this.processState(); +return true; +}if ("calculationType" === propertyName) { +this.params.calculationType = value; +return true; +}if ("charges" === propertyName) { +this.params.theProperty = value; +return true; +}if ("randomSeed" === propertyName) { +this.params.randomSeed = (value).intValue(); +return true; +}if ("molecularOrbital" === propertyName) { +var iMo = 0; +var linearCombination = null; +if (Clazz_instanceOf(value, Integer)) { +iMo = (value).intValue(); +} else { +linearCombination = value; +}this.params.setMO(iMo, linearCombination); +JU.Logger.info(this.params.calculationType); +this.processState(); +return true; +}if ("fileType" === propertyName) { +this.fileType = value; +return true; +}if ("fileName" === propertyName) { +this.params.fileName = value; +return true; +}if ("filesData" === propertyName) { +this.params.filesData = value; +return true; +}if ("outputChannel" === propertyName) { +this.out = value; +return true; +}if ("readFile" === propertyName) { +if ((this.surfaceReader = this.setFileData(this.atomDataServer, value)) == null) { +JU.Logger.error("Could not set the surface data"); +return true; +}this.surfaceReader.setOutputChannel(this.out); +this.generateSurface(); +return true; +}if ("mapColor" === propertyName) { +if ((this.surfaceReader = this.setFileData(this.atomDataServer, value)) == null) { +JU.Logger.error("Could not set the mapping data"); +return true; +}this.surfaceReader.setOutputChannel(this.out); +this.mapSurface(); +return true; +}if ("getSurfaceSets" === propertyName) { +this.getSurfaceSets(); +return true; +}if ("periodic" === propertyName) { +this.params.isPeriodic = true; +}return false; +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "newReader", +function(name){ +var sr = J.jvxl.readers.SurfaceGenerator.getInterface(name); +if (sr != null) sr.init(this); +return sr; +}, "~S"); +Clazz_defineMethod(c$, "newReaderBr", +function(name, br){ +var sr = J.jvxl.readers.SurfaceGenerator.getInterface(name); +if (sr != null) sr.init2(this, br); +return sr; +}, "~S,java.io.BufferedReader"); +c$.getInterface = Clazz_defineMethod(c$, "getInterface", +function(name){ +try { +var x = Clazz._4Name("J.jvxl.readers." + name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Interface.java Error creating instance for " + name + ": \n" + e.toString()); +return null; +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "getSurfaceSets", +function(){ +if (this.meshDataServer == null) { +this.meshData.getSurfaceSet(); +} else { +this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.getSurfaceSet(); +this.meshDataServer.fillMeshData(this.meshData, 3, null); +}}); +Clazz_defineMethod(c$, "processState", +function(){ +if (this.params.state == 1 && this.params.thePlane != null) this.params.state++; +if (this.params.state >= 2) { +this.mapSurface(); +} else { +this.generateSurface(); +}}); +Clazz_defineMethod(c$, "setReader", +function(){ +this.readerData = null; +if (this.surfaceReader != null) return !this.surfaceReader.vertexDataOnly; +switch (this.params.dataType) { +case 1207: +this.surfaceReader = this.newReader("IsoPlaneReader"); +break; +case 1208: +this.surfaceReader = this.newReader("AtomPropertyMapper"); +break; +case 1328: +case 1329: +this.readerData = (this.params.dataType == 1328 ? "Mep" : "Mlp"); +if (this.params.state == 3) { +this.surfaceReader = this.newReader("AtomPropertyMapper"); +} else { +this.surfaceReader = this.newReader("Iso" + this.readerData + "Reader"); +}break; +case 1334: +this.surfaceReader = this.newReader("IsoIntersectFileReader"); +break; +case 1333: +this.surfaceReader = this.newReader("IsoIntersectAtomReader"); +break; +case 1195: +case 1203: +case 1196: +this.surfaceReader = this.newReader("IsoSolventReader"); +break; +case 1844: +case 1837: +this.surfaceReader = this.newReader("IsoMOReader"); +break; +case 8: +this.surfaceReader = this.newReader("IsoFxyReader"); +break; +case 9: +this.surfaceReader = this.newReader("IsoFxyzReader"); +break; +} +if (JU.Logger.debugging) JU.Logger.info("Using surface reader " + this.surfaceReader); +if (this.params.isSilent && this.surfaceReader != null) this.surfaceReader.isQuiet = true; +return true; +}); +Clazz_defineMethod(c$, "generateSurface", +function(){ +if (++this.params.state != 2) return; +this.setReader(); +if (this.params.sbOut == null) this.params.sbOut = new JU.SB(); +this.jvxlData.sbOut = this.params.sbOut; +var haveMeshDataServer = (this.meshDataServer != null); +if (this.params.colorBySign) this.params.isBicolorMap = true; +if (this.surfaceReader == null) { +JU.Logger.error("surfaceReader is null for " + this.params.dataType); +return; +}if (!this.surfaceReader.createIsosurface(false)) { +JU.Logger.error("Could not create isosurface"); +this.params.cutoff = NaN; +this.params.cutoffRange = null; +this.surfaceReader.closeReader(); +return; +}if (this.params.probes != null) { +for (var i = this.params.probeValues.length; --i >= 0; ) { +this.params.probeValues[i] = this.surfaceReader.getValueAtPoint(this.params.probes[i], false); +} +}if (this.params.pocket != null && haveMeshDataServer) this.surfaceReader.selectPocket(!this.params.pocket.booleanValue()); +if (this.params.minSet > 0) this.surfaceReader.excludeMinimumSet(); +if (this.params.maxSet > 0) this.surfaceReader.excludeMaximumSet(); +if (this.params.slabInfo != null) this.surfaceReader.slabIsosurface(this.params.slabInfo); +if (haveMeshDataServer && this.meshDataServer.notifySurfaceGenerationCompleted()) this.surfaceReader.hasColorData = false; +if (this.jvxlData.thisSet != null) this.getSurfaceSets(); +if (this.jvxlData.jvxlDataIs2dContour) { +this.surfaceReader.colorIsosurface(); +this.params.state = 3; +}if (this.jvxlData.jvxlDataIsColorDensity) { +this.params.state = 3; +}if (this.params.colorBySign || this.params.isBicolorMap) { +this.params.state = 3; +this.surfaceReader.applyColorScale(); +}if (this.jvxlData.vertexColorMap != null) { +this.jvxlData.vertexColorMap = null; +this.surfaceReader.hasColorData = false; +}this.surfaceReader.jvxlUpdateInfo(); +this.marchingSquares = this.surfaceReader.marchingSquares; +this.surfaceReader.discardTempData(false); +this.params.mappedDataMin = 3.4028235E38; +this.surfaceReader.closeReader(); +if (this.params.state != 3 && (this.surfaceReader.hasColorData || this.params.colorDensity)) { +this.params.state = 3; +this.colorIsosurface(); +}this.surfaceReader = null; +}); +Clazz_defineMethod(c$, "mapSurface", +function(){ +if (this.params.state == 1 && this.params.thePlane != null) this.params.state++; +if (++this.params.state < 3) return; +if (!this.setReader()) return; +if (this.params.isPeriodic) this.surfaceReader.volumeData.isPeriodic = true; +if (this.params.thePlane != null) { +var isSquared = this.params.isSquared; +this.params.isSquared = false; +this.params.cutoff = 0; +this.params.cutoffRange = null; +this.surfaceReader.volumeData.setMappingPlane(this.params.thePlane); +this.surfaceReader.createIsosurface(!this.params.isPeriodic); +this.surfaceReader.volumeData.setMappingPlane(null); +if (this.meshDataServer != null) this.meshDataServer.notifySurfaceGenerationCompleted(); +if (this.params.dataType == 1207) { +this.surfaceReader.discardTempData(true); +return; +}this.params.isSquared = isSquared; +this.params.mappedDataMin = 3.4028235E38; +this.surfaceReader.readVolumeData(true); +if (this.params.mapLattice != null) this.surfaceReader.volumeData.isPeriodic = true; +} else if (!this.params.colorBySets && !this.params.colorDensity) { +this.surfaceReader.readAndSetVolumeParameters(true); +this.params.mappedDataMin = 3.4028235E38; +this.surfaceReader.readVolumeData(true); +}this.colorIsosurface(); +this.surfaceReader.closeReader(); +this.surfaceReader = null; +}); +Clazz_defineMethod(c$, "colorIsosurface", +function(){ +this.surfaceReader.colorIsosurface(); +this.surfaceReader.jvxlUpdateInfo(); +this.surfaceReader.updateTriangles(); +this.surfaceReader.discardTempData(true); +if (this.meshDataServer != null) this.meshDataServer.notifySurfaceMappingCompleted(); +}); +Clazz_defineMethod(c$, "getProperty", +function(property, index){ +if (property === "jvxlFileData") return J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData, null, this.params.title, "", true, index, null, null); +if (property === "jvxlFileInfo") return J.jvxl.data.JvxlCoder.jvxlGetInfo(this.jvxlData); +return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "setFileData", +function(vwr, value){ +var fileType = this.fileType; +this.fileType = null; +if (Clazz_instanceOf(value,"java.util.Map")) { +var map = value; +if (map.containsKey("__pymolSurfaceData__")) { +this.readerData = map; +return this.newReaderBr("PyMOLMeshReader", null); +}value = map.get("volumeData"); +}if (Clazz_instanceOf(value,"J.jvxl.data.VolumeData")) { +this.volumeDataTemp = value; +return this.newReader("VolumeDataReader"); +}var data = null; +if ((typeof(value)=='string')) { +data = value; +value = JU.Rdr.getBR(value); +}if (Clazz_instanceOf(value,Array)) { +var a = (value)[0]; +var b = new Array(a.length); +for (var i = 0; i < a.length; i++) { +this.fileType = fileType; +b[i] = this.setFileData(vwr, a[i]); +} +(value)[0] = b; +this.readerData = value; +return this.newReader("IsoIntersectGridReader"); +}var br = value; +if (fileType == null) fileType = JV.FileManager.determineSurfaceFileType(br); +if (fileType != null && fileType.startsWith("UPPSALA")) { +var fname = this.params.fileName; +fname = fname.substring(0, fname.indexOf("/", 10)); +fname += JU.PT.getQuotedStringAt(fileType, fileType.indexOf("A HREF") + 1); +this.params.fileName = fname; +value = this.atomDataServer.getBufferedInputStream(fname); +if (value == null) { +JU.Logger.error("Isosurface: could not open file " + fname); +return null; +}try { +br = JU.Rdr.getBufferedReader(value, null); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +fileType = JV.FileManager.determineSurfaceFileType(br); +}if (fileType == null) fileType = "UNKNOWN"; +JU.Logger.info("data file type was determined to be " + fileType); +if (fileType.equals("Jvxl+")) return this.newReaderBr("JvxlReader", br); +this.readerData = Clazz_newArray(-1, [this.params.fileName, data]); +if ("MRC DELPHI DSN6".indexOf(fileType.toUpperCase()) >= 0) { +fileType += "Binary"; +}return this.newReaderBr(fileType + "Reader", br); +}, "JV.Viewer,~O"); +Clazz_defineMethod(c$, "getReaderData", +function(){ +var o = this.readerData; +this.readerData = null; +return o; +}); +Clazz_defineMethod(c$, "initializeIsosurface", +function(){ +this.params.initialize(); +this.colorPtr = 0; +this.surfaceReader = null; +this.marchingSquares = null; +this.initState(); +}); +Clazz_defineMethod(c$, "initState", +function(){ +this.params.state = 1; +this.params.dataType = this.params.surfaceType = 0; +}); +Clazz_defineMethod(c$, "setLcao", +function(){ +this.params.colorPos = this.params.colorPosLCAO; +this.params.colorNeg = this.params.colorNegLCAO; +return this.params.lcaoType; +}); +Clazz_defineMethod(c$, "getFunctionZfromXY", +function(){ +var origin = this.params.functionInfo.get(1); +var counts = Clazz_newIntArray (3, 0); +var nearest = Clazz_newIntArray (3, 0); +var vectors = new Array(3); +for (var i = 0; i < 3; i++) { +var info = this.params.functionInfo.get(i + 2); +counts[i] = Math.abs(Clazz_floatToInt(info.x)); +vectors[i] = JU.V3.new3(info.y, info.z, info.w); +} +var nx = counts[0]; +var ny = counts[1]; +var pt = new JU.P3(); +var pta = new JU.P3(); +var ptb = new JU.P3(); +var ptc = new JU.P3(); +var data = this.params.functionInfo.get(5); +var data2 = Clazz_newFloatArray (nx, ny, 0); +var d; +for (var i = 0; i < nx; i++) for (var j = 0; j < ny; j++) { +pt.scaleAdd2(i, vectors[0], origin); +pt.scaleAdd2(j, vectors[1], pt); +var dist = J.jvxl.readers.SurfaceGenerator.findNearestThreePoints(pt.x, pt.y, data, nearest); +pta.set((d = data[nearest[0]])[0], d[1], d[2]); +if (dist < 0.00001) { +pt.z = d[2]; +} else { +ptb.set((d = data[nearest[1]])[0], d[1], d[2]); +ptc.set((d = data[nearest[2]])[0], d[1], d[2]); +pt.z = this.distanceVerticalToPlane(pt.x, pt.y, pta, ptb, ptc); +}data2[i][j] = pt.z; +} + +this.params.functionInfo.set(5, data2); +}); +Clazz_defineMethod(c$, "distanceVerticalToPlane", +function(x, y, pta, ptb, ptc){ +var d = JU.Measure.getDirectedNormalThroughPoints(pta, ptb, ptc, this.ptRef, this.vNorm, this.vAB); +return (this.vNorm.x * x + this.vNorm.y * y + d) / -this.vNorm.z; +}, "~N,~N,JU.P3,JU.P3,JU.P3"); +c$.findNearestThreePoints = Clazz_defineMethod(c$, "findNearestThreePoints", +function(x, y, xyz, result){ +var d; +var dist1; +var dist2; +var dist3; +var i1; +var i2; +var i3; +i1 = i2 = i3 = -1; +dist1 = dist2 = dist3 = 3.4028235E38; +for (var i = xyz.length; --i >= 0; ) { +d = (d = xyz[i][0] - x) * d + (d = xyz[i][1] - y) * d; +if (d < dist1) { +dist3 = dist2; +dist2 = dist1; +dist1 = d; +i3 = i2; +i2 = i1; +i1 = i; +} else if (d < dist2) { +dist3 = dist2; +dist2 = d; +i3 = i2; +i2 = i; +} else if (d < dist3) { +dist3 = d; +i3 = i; +}} +result[0] = i1; +result[1] = i2; +result[2] = i3; +return dist1; +}, "~N,~N,~A,~A"); +Clazz_defineMethod(c$, "addRequiredFile", +function(fileName){ +if (this.meshDataServer == null) return; +this.meshDataServer.addRequiredFile(fileName); +}, "~S"); +Clazz_defineMethod(c$, "setRequiredFile", +function(oldName, fileName){ +if (this.meshDataServer == null) return; +this.meshDataServer.setRequiredFile(oldName, fileName); +}, "~S,~S"); +Clazz_defineMethod(c$, "log", +function(msg){ +if (this.atomDataServer == null) System.out.println(msg); + else this.atomDataServer.log(msg); +}, "~S"); +Clazz_defineMethod(c$, "setOutputChannel", +function(binaryDoc, out){ +if (this.meshDataServer == null) return; +this.meshDataServer.setOutputChannel(binaryDoc, out); +}, "javajs.api.GenericBinaryDocument,JU.OC"); +Clazz_defineMethod(c$, "fillAtomData", +function(atomData, mode){ +if ((mode & 2) != 0 && atomData.bsSelected != null) { +if (this.bsVdw == null) this.bsVdw = new JU.BS(); +this.bsVdw.or(atomData.bsSelected); +}this.atomDataServer.fillAtomData(atomData, mode); +}, "J.atomdata.AtomData,~N"); +Clazz_defineMethod(c$, "getOriginVaVbVc", +function(){ +return (this.surfaceReader.volumeData == null ? null : this.surfaceReader.volumeData.oabc); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(null, "J.jvxl.readers.Parameters", ["java.util.Hashtable", "JU.A4", "$.Lst", "$.M3", "$.P3", "$.P4", "$.V3", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.state = 0; +this.testFlags = 0; +this.logMessages = false; +this.logCompression = false; +this.logCube = false; +this.isSilent = false; +this.assocCutoff = 0.3; +this.dataType = 0; +this.surfaceType = 0; +this.calculationType = ""; +this.atomRadiusData = null; +this.addHydrogens = false; +this.solventRadius = 0; +this.solventExtendedAtomRadius = 0; +this.propertySmoothing = false; +this.propertySmoothingPower = 4; +this.envelopeRadius = 0; +this.cavityRadius = 0; +this.isCavity = false; +this.pocket = null; +this.minSet = 0; +this.slabInfo = null; +this.slabPlaneOffset = NaN; +this.theProperty = null; +this.solvent_ptsPerAngstrom = 4; +this.solvent_gridMax = 60; +this.plane_ptsPerAngstrom = 4; +this.plane_gridMax = 81; +this.colorBySign = false; +this.colorByPhase = false; +this.colorBySets = false; +this.colorRgb = 0; +this.colorNeg = 0; +this.colorPos = 0; +this.colorPosLCAO = 0; +this.colorNegLCAO = 0; +this.colorPhase = 0; +this.colorDensity = false; +this.iAddGridPoints = false; +this.atomIndex = 0; +this.isAngstroms = false; +this.scale = 0; +this.scale3d = 0; +this.anisotropy = null; +this.isAnisotropic = false; +this.eccentricityMatrix = null; +this.eccentricityMatrixInverse = null; +this.isEccentric = false; +this.eccentricityScale = 0; +this.eccentricityRatio = 0; +this.aniosU = null; +this.anisoB = null; +this.lcaoType = null; +this.functionInfo = null; +this.psi_n = 2; +this.psi_l = 1; +this.psi_m = 1; +this.psi_Znuc = 1; +this.psi_ptsPerAngstrom = 5; +this.psi_monteCarloCount = 0; +this.mep_gridMax = 40; +this.mep_ptsPerAngstrom = 3; +this.mep_marginAngstroms = 1; +this.mep_calcType = -1; +this.qmOrbitalType = 0; +this.qmOrbitalCount = 0; +this.moData = null; +this.qm_gridMax = 80; +this.qm_ptsPerAngstrom = 10; +this.qm_marginAngstroms = 1; +this.qm_nAtoms = 0; +this.qm_moNumber = 2147483647; +this.qm_moLinearCombination = null; +this.center = null; +this.point = null; +this.distance = 0; +this.allowVolumeRender = false; +this.script = null; +this.bsSelected = null; +this.bsIgnore = null; +this.bsSolvent = null; +this.func = null; +this.title = null; +this.blockCubeData = false; +this.readAllData = false; +this.fileIndex = -1; +this.fileName = null; +this.modelIndex = -1; +this.modelInvRotation = null; +this.isXLowToHigh = false; +this.insideOut = false; +this.dataXYReversed = false; +this.cutoff = 3.4028235E38; +this.cutoffRange = null; +this.sigma = 3.4028235E38; +this.cutoffAutomatic = true; +this.isCutoffAbsolute = false; +this.isPositiveOnly = false; +this.rangeAll = false; +this.rangeSelected = false; +this.rangeDefined = false; +this.valueMappedToRed = 0; +this.valueMappedToBlue = 0; +this.mappedDataMin = 0; +this.mappedDataMax = 0; +this.isColorReversed = false; +this.isBicolorMap = false; +this.isSquared = false; +this.isSquaredLinear = false; +this.thePlane = null; +this.isContoured = false; +this.nContours = 0; +this.thisContour = 0; +this.contourFromZero = false; +this.parameters = null; +this.resolution = 0; +this.downsampleFactor = 0; +this.maxSet = 0; +this.contoursDiscrete = null; +this.contourColixes = null; +this.contourIncrements = null; +this.boundingBox = null; +this.bsExcluded = null; +this.contourType = 0; +this.colorSchemeTranslucent = false; +this.colorEncoder = null; +this.usePropertyForColorRange = true; +this.isPeriodic = false; +this.doFullMolecular = false; +this.propertyDistanceMax = 2147483647; +this.randomSeed = 0; +this.fullyLit = false; +this.vertexSource = null; +this.intersection = null; +this.origin = null; +this.steps = null; +this.points = null; +this.volumeData = null; +this.contactPair = null; +this.mapLattice = null; +this.extendGrid = 0; +this.isMapped = false; +this.showTiming = false; +this.pointSize = 0; +this.probes = null; +this.isModelConnected = false; +this.surfaceAtoms = null; +this.filesData = null; +this.probeValues = null; +this.sbOut = null; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "Parameters", null); +Clazz_prepareFields (c$, function(){ +this.anisotropy = Clazz_newFloatArray (3, 0); +}); +Clazz_defineMethod(c$, "initialize", +function(){ +this.addHydrogens = false; +this.allowVolumeRender = true; +this.atomRadiusData = null; +this.atomIndex = -1; +this.blockCubeData = false; +this.boundingBox = null; +this.bsExcluded = new Array(4); +this.bsIgnore = null; +this.bsSelected = null; +this.bsSolvent = null; +this.calculationType = ""; +this.center = new JU.P3(); +this.resetForMapping(true); +this.colorBySign = this.colorByPhase = this.colorBySets = false; +this.colorEncoder = null; +this.colorNeg = -65536; +this.colorNegLCAO = -8388480; +this.colorPos = -16776961; +this.colorPosLCAO = -23296; +this.colorRgb = -2147483648; +this.colorSchemeTranslucent = false; +this.contactPair = null; +this.contourIncrements = null; +this.contoursDiscrete = null; +this.contourColixes = null; +this.contourFromZero = true; +this.cutoff = 3.4028235E38; +this.cutoffAutomatic = true; +this.dataXYReversed = false; +this.distance = 3.4028235E38; +this.doFullMolecular = false; +this.envelopeRadius = 10; +this.extendGrid = 0; +this.fileIndex = 1; +this.readAllData = true; +this.fileName = ""; +this.filesData = null; +this.fullyLit = false; +this.functionInfo = null; +this.iAddGridPoints = false; +this.insideOut = false; +this.isAngstroms = false; +this.isBicolorMap = this.isCutoffAbsolute = this.isPositiveOnly = false; +this.isCavity = false; +this.isColorReversed = false; +this.isModelConnected = false; +this.isSquared = false; +this.isSquaredLinear = false; +this.isContoured = false; +this.isEccentric = false; +this.isMapped = false; +this.isPeriodic = false; +this.isSilent = false; +this.logCube = this.logCompression = false; +this.logMessages = JU.Logger.debugging; +this.mapLattice = null; +this.mep_calcType = -1; +this.minSet = 0; +this.modelIndex = -1; +this.modelInvRotation = null; +this.nContours = 0; +this.pocket = null; +this.pointSize = NaN; +this.probes = null; +this.probeValues = null; +this.propertyDistanceMax = 2147483647; +this.propertySmoothing = false; +this.propertySmoothingPower = 4; +this.rangeDefined = false; +this.rangeAll = false; +this.rangeSelected = false; +this.resolution = 3.4028235E38; +this.scale = NaN; +this.scale3d = 0; +this.sigma = NaN; +this.slabInfo = null; +this.solventExtendedAtomRadius = 0; +this.state = 1; +this.testFlags = 0; +this.thePlane = null; +this.theProperty = null; +this.thisContour = -1; +this.title = null; +this.usePropertyForColorRange = true; +this.vertexSource = null; +}); +Clazz_defineMethod(c$, "resetForMapping", +function(haveSurface){ +if (!haveSurface) this.state = 2; +this.center.x = NaN; +this.colorDensity = false; +this.func = null; +this.intersection = null; +this.isAnisotropic = false; +this.isMapped = true; +this.mappedDataMin = 3.4028235E38; +this.origin = null; +this.parameters = null; +this.points = null; +this.qmOrbitalType = 0; +this.steps = null; +this.volumeData = null; +}, "~B"); +Clazz_defineMethod(c$, "setAnisotropy", +function(pt){ +this.anisotropy[0] = pt.x; +this.anisotropy[1] = pt.y; +this.anisotropy[2] = pt.z; +this.isAnisotropic = true; +if (Float.isNaN(this.center.x)) this.center.set(0, 0, 0); +}, "JU.P3"); +Clazz_defineMethod(c$, "setEccentricity", +function(info){ +var ecc = JU.V3.new3(info.x, info.y, info.z); +var c = (this.scale > 0 ? this.scale : info.w < 0 ? 1 : ecc.length()); +var fab_c = Math.abs(info.w); +ecc.normalize(); +var z = JU.V3.new3(0, 0, 1); +ecc.add(z); +ecc.normalize(); +if (Float.isNaN(ecc.x)) ecc.set(1, 0, 0); +this.eccentricityMatrixInverse = new JU.M3(); +this.eccentricityMatrixInverse.invertM(this.eccentricityMatrix = new JU.M3().setAA(JU.A4.newVA(ecc, 3.141592653589793))); +this.isEccentric = this.isAnisotropic = true; +this.eccentricityScale = c; +this.eccentricityRatio = fab_c; +if (fab_c > 1) this.eccentricityScale *= fab_c; +this.anisotropy[0] = fab_c * c; +this.anisotropy[1] = fab_c * c; +this.anisotropy[2] = c; +if (Float.isNaN(this.center.x)) this.center.set(0, 0, 0); +}, "JU.P4"); +Clazz_defineMethod(c$, "setPlane", +function(plane){ +this.thePlane = plane; +if (this.thePlane.x == 0 && this.thePlane.y == 0 && this.thePlane.z == 0) this.thePlane.z = 1; +this.isContoured = true; +}, "JU.P4"); +Clazz_defineMethod(c$, "setSphere", +function(radius, isGeodesic){ +this.dataType = (isGeodesic ? 74 : 65); +this.distance = radius; +this.setEccentricity(JU.P4.new4(0, 0, 1, 1)); +this.cutoff = 1.4E-45; +this.isCutoffAbsolute = false; +this.isSilent = !this.logMessages; +this.script = this.getScriptParams() + " SPHERE " + radius + ";"; +}, "~N,~B"); +Clazz_defineMethod(c$, "setEllipsoidP4", +function(v){ +this.dataType = 66; +this.distance = 1; +this.setEccentricity(v); +this.cutoff = 1.4E-45; +this.isCutoffAbsolute = false; +this.isSilent = !this.logMessages; +}, "JU.P4"); +Clazz_defineMethod(c$, "setEllipsoidAF", +function(bList){ +this.anisoB = bList; +this.dataType = 67; +this.distance = 0.3 * (Float.isNaN(this.scale) ? 1 : this.scale); +this.cutoff = 1.4E-45; +this.isCutoffAbsolute = false; +this.isSilent = !this.logMessages; +if (Float.isNaN(this.center.x)) this.center.set(0, 0, 0); +if (this.resolution == 3.4028235E38) this.resolution = 6; +}, "~A"); +Clazz_defineMethod(c$, "setLobe", +function(v){ +this.dataType = 68; +this.setEccentricity(v); +if (this.cutoff == 3.4028235E38) { +this.cutoff = 0.14; +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isSilent = !this.logMessages; +this.script = this.getScriptParams() + " LOBE {" + v.x + " " + v.y + " " + v.z + " " + v.w + "};"; +}, "JU.P4"); +Clazz_defineMethod(c$, "getScriptParams", +function(){ +return " center " + JU.Escape.eP(this.center) + (Float.isNaN(this.scale) ? "" : " scale " + this.scale); +}); +Clazz_defineMethod(c$, "setLp", +function(v){ +this.dataType = 70; +this.setEccentricity(v); +if (this.cutoff == 3.4028235E38) { +this.cutoff = 0.14; +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isSilent = !this.logMessages; +this.script = " center " + JU.Escape.eP(this.center) + (Float.isNaN(this.scale) ? "" : " scale " + this.scale) + " LP {" + v.x + " " + v.y + " " + v.z + " " + v.w + "};"; +}, "JU.P4"); +Clazz_defineMethod(c$, "setRadical", +function(v){ +this.dataType = 71; +this.setEccentricity(v); +if (this.cutoff == 3.4028235E38) { +this.cutoff = 0.14; +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isSilent = !this.logMessages; +this.script = " center " + JU.Escape.eP(this.center) + (Float.isNaN(this.scale) ? "" : " scale " + this.scale) + " RAD {" + v.x + " " + v.y + " " + v.z + " " + v.w + "};"; +}, "JU.P4"); +Clazz_defineMethod(c$, "setLcao", +function(type, colorPtr){ +this.lcaoType = type; +if (colorPtr == 1) this.colorPosLCAO = this.colorNegLCAO; +this.isSilent = !this.logMessages; +}, "~S,~N"); +Clazz_defineMethod(c$, "setSolvent", +function(propertyName, radius){ +this.isEccentric = this.isAnisotropic = false; +this.solventRadius = Math.abs(radius); +this.dataType = (this.intersection != null ? 1333 : "nomap" === propertyName ? 1207 : "molecular" === propertyName ? 1203 : "sasurface" === propertyName || this.solventRadius == 0 ? 1196 : 1195); +if (this.state < 2 && (this.cutoffAutomatic || !this.colorDensity) && (this.intersection == null || this.cutoff == 3.4028235E38)) this.cutoff = 0.0; +switch (this.dataType) { +case 1333: +this.calculationType = "VDW intersection"; +break; +case 1207: +this.calculationType = "unmapped plane"; +break; +case 1203: +this.calculationType = "molecular surface with radius " + this.solventRadius; +if (this.minSet == 0) this.minSet = 50; +break; +case 1195: +this.calculationType = "solvent-excluded surface with radius " + this.solventRadius; +if (this.minSet == 0) this.minSet = 50; +break; +case 1196: +this.calculationType = "solvent-accessible surface with radius " + this.solventRadius; +if (this.minSet == 0) this.minSet = 50; +break; +} +switch (this.dataType) { +case 1207: +this.solventExtendedAtomRadius = this.solventRadius; +this.solventRadius = 0; +this.isContoured = false; +break; +case 1203: +this.solventExtendedAtomRadius = 0; +break; +case 1195: +this.solventExtendedAtomRadius = 0; +if (this.bsIgnore == null) this.bsIgnore = this.bsSolvent; + else if (this.bsSolvent != null) this.bsIgnore.or(this.bsSolvent); +break; +case 1196: +this.solventExtendedAtomRadius = this.solventRadius; +this.solventRadius = 0; +if (this.bsIgnore == null) this.bsIgnore = this.bsSolvent; + else if (this.bsSolvent != null) this.bsIgnore.or(this.bsSolvent); +break; +} +}, "~S,~N"); +Clazz_defineMethod(c$, "setFunctionXY", +function(value){ +this.dataType = 8; +this.functionInfo = value; +this.cutoff = 1.4E-45; +this.isEccentric = this.isAnisotropic = false; +}, "JU.Lst"); +Clazz_defineMethod(c$, "setFunctionXYZ", +function(value){ +this.dataType = 9; +this.functionInfo = value; +if (this.cutoff == 3.4028235E38) this.cutoff = 1.4E-45; +this.isEccentric = this.isAnisotropic = false; +}, "JU.Lst"); +Clazz_defineMethod(c$, "setAtomicOrbital", +function(nlmZprs){ +this.dataType = 1294; +this.setEccentricity(JU.P4.new4(0, 0, 1, 1)); +this.psi_n = Clazz_floatToInt(nlmZprs[0]); +this.psi_l = Clazz_floatToInt(nlmZprs[1]); +this.psi_m = Clazz_floatToInt(nlmZprs[2]); +this.psi_Znuc = nlmZprs[3]; +this.psi_monteCarloCount = Clazz_floatToInt(nlmZprs[4]); +this.distance = nlmZprs[5]; +if (this.distance != 0 || this.thePlane != null) this.allowVolumeRender = false; +this.randomSeed = Clazz_floatToInt(nlmZprs[6]); +this.psi_ptsPerAngstrom = 10; +if (this.cutoff == 3.4028235E38 || this.cutoff == 0.14) { +this.cutoff = (this.psi_monteCarloCount > 0 ? 0 : 0.04); +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isCutoffAbsolute = true; +if (this.state < 2 && this.thePlane == null && this.colorBySign) this.isBicolorMap = true; +return (this.psi_Znuc > 0 && Math.abs(this.psi_m) <= this.psi_l && this.psi_l < this.psi_n); +}, "~A"); +Clazz_defineMethod(c$, "setMep", +function(charges, isMLP){ +this.dataType = (isMLP ? 1329 : 1328); +this.theProperty = charges; +this.usePropertyForColorRange = false; +this.isEccentric = this.isAnisotropic = false; +if (this.cutoff == 3.4028235E38) { +this.cutoff = 0.1; +if (this.isSquared) this.cutoff = this.cutoff * this.cutoff; +}this.isCutoffAbsolute = (this.cutoff > 0 && !this.isPositiveOnly); +this.contourFromZero = false; +if (this.state >= 2 || this.thePlane != null) { +if (!this.rangeDefined && !this.rangeAll) { +this.valueMappedToRed = -0.1; +this.valueMappedToBlue = 0.1; +this.rangeDefined = true; +}} else { +this.colorBySign = true; +this.isBicolorMap = true; +}}, "~A,~B"); +Clazz_defineMethod(c$, "setNci", +function(isPromolecular){ +this.fullyLit = true; +this.qm_gridMax = 200; +if (isPromolecular) this.dataType = 1844; +this.qm_marginAngstroms = 2; +this.qmOrbitalType = (isPromolecular ? 3 : 4); +if (isPromolecular) { +if (this.parameters == null || this.parameters.length < 2) this.parameters = Clazz_newFloatArray(-1, [this.cutoff, 2]); +}if (this.cutoff == 3.4028235E38 || this.cutoff == 0) this.cutoff = 0.3; +if (this.isSquared) this.cutoff *= this.cutoff; +if (this.title == null) this.title = new Array(0); +this.moData = new java.util.Hashtable(); +}, "~B"); +Clazz_defineMethod(c$, "setMO", +function(iMo, linearCombination){ +this.isModelConnected = true; +this.qm_moLinearCombination = linearCombination; +this.qm_moNumber = (linearCombination == null ? Math.abs(iMo) : Clazz_floatToInt(linearCombination[1])); +this.qmOrbitalType = (this.moData.containsKey("haveVolumeData") ? 5 : this.moData.containsKey("gaussians") ? 1 : this.moData.containsKey("slaters") ? 2 : 0); +var isElectronDensity = (iMo <= 0 && linearCombination == null); +if (this.qmOrbitalType == 0) { +JU.Logger.error("MO ERROR: No basis functions found in file for MO calculation. (GAUSSIAN 'gfprint' keyword may be missing?)"); +this.title = Clazz_newArray(-1, ["no basis functions found in file"]); +} else { +var mos = this.moData.get("mos"); +this.qmOrbitalCount = mos.size(); +this.calculationType = this.moData.get("calculationType"); +this.calculationType = "Molecular orbital #" + this.qm_moNumber + "/" + this.qmOrbitalCount + " " + (this.calculationType == null ? "" : this.calculationType); +if (!isElectronDensity) { +if (this.title == null) { +this.title = new Array(5); +this.title[0] = "%F"; +this.title[1] = "Model %M MO %I/%N %T"; +this.title[2] = "?Energy = %E %U"; +this.title[3] = "?Symmetry = %S"; +this.title[4] = "?Occupancy = %O"; +}}}this.dataType = 1837; +if (this.cutoff == 3.4028235E38) { +this.cutoff = (isElectronDensity ? 0.01 : 0.05); +}if (this.isSquared || this.isSquaredLinear) this.cutoff = this.cutoff * this.cutoff; +this.isEccentric = this.isAnisotropic = false; +this.isCutoffAbsolute = (this.cutoff > 0 && !this.isPositiveOnly); +if (this.state >= 2 || this.thePlane != null) return; +this.colorBySign = true; +if (this.colorByPhase && this.colorPhase == 0) this.colorByPhase = false; +this.isBicolorMap = true; +}, "~N,~A"); +Clazz_defineMethod(c$, "setMapRanges", +function(surfaceReader, haveData){ +if (!this.colorDensity) if (this.colorByPhase || this.colorBySign || (this.thePlane != null || this.isBicolorMap) && !this.isContoured) { +this.mappedDataMin = -1; +this.mappedDataMax = 1; +}if (this.mappedDataMin == 3.4028235E38 || this.mappedDataMin == this.mappedDataMax) { +var minMax = surfaceReader.getMinMaxMappedValues(haveData); +System.out.println("parameters - setmapranges " + minMax[0] + " " + minMax[1]); +this.mappedDataMin = minMax[0]; +this.mappedDataMax = minMax[1]; +}if (this.mappedDataMin == 0 && this.mappedDataMax == 0) { +this.mappedDataMin = -1; +this.mappedDataMax = 1; +}if (!this.rangeDefined) { +this.valueMappedToRed = this.mappedDataMin; +this.valueMappedToBlue = this.mappedDataMax; +}}, "J.jvxl.readers.SurfaceReader,~B"); +Clazz_defineMethod(c$, "addSlabInfo", +function(slabObject){ +if (this.slabInfo == null) this.slabInfo = new JU.Lst(); +this.slabInfo.addLast(slabObject); +}, "~A"); +Clazz_defineMethod(c$, "isInsideOut", +function(){ +return this.insideOut != this.dataXYReversed; +}); +Clazz_defineMethod(c$, "isFullyLit", +function(){ +return (this.thePlane != null || this.fullyLit); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(["J.jvxl.api.VertexDataServer", "JU.P3"], "J.jvxl.readers.SurfaceReader", ["JU.AU", "$.BS", "J.jvxl.calc.MarchingCubes", "$.MarchingSquares", "J.jvxl.data.JvxlCoder", "$.MeshData", "JU.BoxInfo", "$.C", "$.ColorEncoder", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.sg = null; +this.meshDataServer = null; +this.params = null; +this.meshData = null; +this.jvxlData = null; +this.volumeData = null; +this.edgeData = null; +this.haveSurfaceAtoms = false; +this.allowSigma = false; +this.isProgressive = false; +this.isXLowToHigh = false; +this.assocCutoff = 0.3; +this.isQuiet = false; +this.isPeriodic = false; +this.vertexDataOnly = false; +this.hasColorData = false; +this.dataMin = 3.4028235E38; +this.dataMax = -3.4028235E38; +this.dataMean = 0; +this.xyzMin = null; +this.xyzMax = null; +this.center = null; +this.anisotropy = null; +this.isAnisotropic = false; +this.eccentricityMatrix = null; +this.eccentricityMatrixInverse = null; +this.isEccentric = false; +this.eccentricityScale = 0; +this.eccentricityRatio = 0; +this.edgeCount = 0; +this.volumetricOrigin = null; +this.volumetricVectors = null; +this.voxelCounts = null; +this.voxelData = null; +this.nBytes = 0; +this.nDataPoints = 0; +this.nPointsX = 0; +this.nPointsY = 0; +this.nPointsZ = 0; +this.isJvxl = false; +this.edgeFractionBase = 0; +this.edgeFractionRange = 0; +this.colorFractionBase = 0; +this.colorFractionRange = 0; +this.jvxlFileHeaderBuffer = null; +this.fractionData = null; +this.jvxlEdgeDataRead = ""; +this.jvxlColorDataRead = ""; +this.jvxlVoxelBitSet = null; +this.jvxlDataIsColorMapped = false; +this.jvxlDataIsPrecisionColor = false; +this.jvxlDataIs2dContour = false; +this.jvxlDataIsColorDensity = false; +this.jvxlCutoff = 0; +this.jvxlCutoffRange = null; +this.jvxlNSurfaceInts = 0; +this.cJvxlEdgeNaN = '\0'; +this.contourVertexCount = 0; +this.marchingSquares = null; +this.marchingCubes = null; +this.yzPlanes = null; +this.yzCount = 0; +this.qpc = null; +this.ptTemp = null; +this.minMax = null; +this.haveSetAnisotropy = false; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "SurfaceReader", null, J.jvxl.api.VertexDataServer); +Clazz_prepareFields (c$, function(){ +this.ptTemp = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$, "initSR", +function(sg){ +this.sg = sg; +this.params = sg.params; +this.assocCutoff = this.params.assocCutoff; +this.isXLowToHigh = this.params.isXLowToHigh; +this.center = this.params.center; +this.anisotropy = this.params.anisotropy; +this.isAnisotropic = this.params.isAnisotropic; +this.eccentricityMatrix = this.params.eccentricityMatrix; +this.eccentricityMatrixInverse = this.params.eccentricityMatrixInverse; +this.isEccentric = this.params.isEccentric; +this.eccentricityScale = this.params.eccentricityScale; +this.eccentricityRatio = this.params.eccentricityRatio; +this.marchingSquares = sg.marchingSquares; +this.meshData = sg.meshData; +this.jvxlData = sg.jvxlData; +this.setVolumeDataV(sg.volumeDataTemp); +this.meshDataServer = sg.meshDataServer; +this.cJvxlEdgeNaN = String.fromCharCode(125); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz_defineMethod(c$, "setOutputChannel", +function(out){ +}, "JU.OC"); +Clazz_defineMethod(c$, "newVoxelDataCube", +function(){ +this.volumeData.setVoxelDataAsArray(this.voxelData = Clazz_newFloatArray (this.nPointsX, this.nPointsY, this.nPointsZ, 0)); +}); +Clazz_defineMethod(c$, "setVolumeDataV", +function(v){ +this.nBytes = 0; +this.volumetricOrigin = v.volumetricOrigin; +this.volumetricVectors = v.volumetricVectors; +this.voxelCounts = v.voxelCounts; +this.voxelData = v.getVoxelData(); +this.volumeData = v; +}, "J.jvxl.data.VolumeData"); +Clazz_defineMethod(c$, "jvxlUpdateInfo", +function(){ +this.jvxlData.jvxlUpdateInfo(this.params.title, this.nBytes); +}); +Clazz_defineMethod(c$, "readAndSetVolumeParameters", +function(isMapData){ +if (!this.readVolumeParameters(isMapData)) return false; +if (this.vertexDataOnly) return true; +return (this.volumeData.setUnitVectors()); +}, "~B"); +Clazz_defineMethod(c$, "createIsosurface", +function(justForPlane){ +this.resetIsosurface(); +if (this.params.showTiming) JU.Logger.startTimer("isosurface creation"); +this.jvxlData.cutoff = NaN; +this.jvxlData.cutoffRange = null; +if (!this.readAndSetVolumeParameters(justForPlane)) return false; +if (!justForPlane && !Float.isNaN(this.params.sigma) && !this.allowSigma) { +if (this.params.sigma > 0) JU.Logger.error("Reader does not support SIGMA option -- using cutoff 1.6"); +this.params.cutoff = 1.6; +}if (this.params.sigma < 0) this.params.sigma = -this.params.sigma; +this.nPointsX = this.voxelCounts[0]; +this.nPointsY = this.voxelCounts[1]; +this.nPointsZ = this.voxelCounts[2]; +this.jvxlData.isSlabbable = ((this.params.dataType & 1024) != 0); +this.jvxlData.insideOut = this.params.isInsideOut(); +this.jvxlData.isBicolorMap = this.params.isBicolorMap; +this.jvxlData.nPointsX = this.nPointsX; +this.jvxlData.nPointsY = this.nPointsY; +this.jvxlData.nPointsZ = this.nPointsZ; +this.jvxlData.jvxlVolumeDataXml = this.volumeData.xmlData; +this.jvxlData.voxelVolume = this.volumeData.voxelVolume; +if (justForPlane) { +this.volumeData.setMappingPlane(this.params.thePlane); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.params.setMapRanges(this, false); +this.generateSurfaceData(); +this.volumeData.setMappingPlane(null); +} else { +if (!this.readVolumeData(false)) return false; +this.generateSurfaceData(); +}if (this.jvxlFileHeaderBuffer == null) { +this.jvxlData.jvxlFileTitle = ""; +this.jvxlData.jvxlFileSource = null; +this.jvxlData.jvxlFileMessage = null; +} else { +var s = this.jvxlFileHeaderBuffer.toString(); +var i = s.indexOf('\n', s.indexOf('\n', s.indexOf('\n') + 1) + 1) + 1; +this.jvxlData.jvxlFileTitle = s.substring(0, i); +this.jvxlData.jvxlFileSource = this.params.fileName; +}if (this.params.contactPair == null) this.setBBoxAll(); +this.jvxlData.isValid = (this.xyzMin.x != 3.4028235E38); +if (!this.params.isSilent) { +if (!this.jvxlData.isValid) JU.Logger.error("no isosurface points were found!"); + else JU.Logger.info("boundbox corners " + JU.Escape.eP(this.xyzMin) + " " + JU.Escape.eP(this.xyzMax)); +}this.jvxlData.boundingBox = Clazz_newArray(-1, [this.xyzMin, this.xyzMax]); +this.jvxlData.dataMin = this.dataMin; +this.jvxlData.dataMax = this.dataMax; +this.jvxlData.cutoffRange = (this.isJvxl ? this.jvxlCutoffRange : this.params.cutoffRange); +this.jvxlData.cutoff = (this.jvxlCutoffRange != null ? this.jvxlData.cutoffRange[0] : this.isJvxl ? this.jvxlCutoff : this.params.cutoff); +this.jvxlData.isCutoffAbsolute = this.params.isCutoffAbsolute; +this.jvxlData.isModelConnected = this.params.isModelConnected; +this.jvxlData.pointsPerAngstrom = 1 / this.volumeData.volumetricVectorLengths[0]; +this.jvxlData.jvxlColorData = ""; +this.jvxlData.jvxlPlane = this.params.thePlane; +this.jvxlData.jvxlEdgeData = this.edgeData; +this.jvxlData.isBicolorMap = this.params.isBicolorMap; +this.jvxlData.isContoured = this.params.isContoured; +this.jvxlData.colorDensity = this.params.colorDensity; +this.jvxlData.pointSize = this.params.pointSize; +if (this.jvxlData.vContours != null) this.params.nContours = this.jvxlData.vContours.length; +this.jvxlData.nContours = (this.params.contourFromZero ? this.params.nContours : -1 - this.params.nContours); +this.jvxlData.thisContour = this.params.thisContour; +this.jvxlData.nEdges = this.edgeCount; +this.jvxlData.edgeFractionBase = this.edgeFractionBase; +this.jvxlData.edgeFractionRange = this.edgeFractionRange; +this.jvxlData.colorFractionBase = this.colorFractionBase; +this.jvxlData.colorFractionRange = this.colorFractionRange; +this.jvxlData.jvxlDataIs2dContour = this.jvxlDataIs2dContour; +this.jvxlData.jvxlDataIsColorMapped = this.jvxlDataIsColorMapped; +this.jvxlData.jvxlDataIsColorDensity = this.jvxlDataIsColorDensity; +this.jvxlData.isXLowToHigh = this.isXLowToHigh; +this.jvxlData.vertexDataOnly = this.vertexDataOnly; +this.jvxlData.saveVertexCount = 0; +if (this.jvxlDataIsColorMapped || this.jvxlData.nVertexColors > 0) { +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshDataServer.fillMeshData(this.meshData, 2, null); +}this.jvxlData.jvxlColorData = this.readColorData(); +this.updateSurfaceData(); +if (this.meshDataServer != null) this.meshDataServer.notifySurfaceMappingCompleted(); +}if (this.params.showTiming) JU.Logger.checkTimer("isosurface creation", false); +return true; +}, "~B"); +Clazz_defineMethod(c$, "resetIsosurface", +function(){ +this.meshData = new J.jvxl.data.MeshData(); +this.xyzMin = this.xyzMax = null; +this.jvxlData.isBicolorMap = this.params.isBicolorMap; +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(null, 0, null); +this.contourVertexCount = 0; +if (this.params.cutoff == 3.4028235E38) this.params.cutoff = 0.02; +this.jvxlData.jvxlSurfaceData = ""; +this.jvxlData.jvxlEdgeData = ""; +this.jvxlData.jvxlColorData = ""; +this.edgeCount = 0; +this.edgeFractionBase = 35; +this.edgeFractionRange = 90; +this.colorFractionBase = 35; +this.colorFractionRange = 90; +this.params.mappedDataMin = 3.4028235E38; +}); +Clazz_defineMethod(c$, "discardTempData", +function(discardAll){ +this.discardTempDataSR(discardAll); +}, "~B"); +Clazz_defineMethod(c$, "discardTempDataSR", +function(discardAll){ +if (!discardAll) return; +this.voxelData = null; +this.sg.marchingSquares = this.marchingSquares = null; +this.marchingCubes = null; +}, "~B"); +Clazz_defineMethod(c$, "initializeVolumetricData", +function(){ +this.nPointsX = this.voxelCounts[0]; +this.nPointsY = this.voxelCounts[1]; +this.nPointsZ = this.voxelCounts[2]; +this.setVolumeDataV(this.volumeData); +}); +Clazz_defineMethod(c$, "gotoAndReadVoxelData", +function(isMapData){ +this.initializeVolumetricData(); +if (this.nPointsX > 0 && this.nPointsY > 0 && this.nPointsZ > 0) try { +this.gotoData(this.params.fileIndex - 1, this.nPointsX * this.nPointsY * this.nPointsZ); +this.readSurfaceData(isMapData); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return false; +} else { +throw e; +} +} +return true; +}, "~B"); +Clazz_defineMethod(c$, "gotoData", +function(n, nPoints){ +}, "~N,~N"); +Clazz_defineMethod(c$, "readColorData", +function(){ +if (this.jvxlData.vertexColors == null) return ""; +var vertexCount = this.jvxlData.vertexCount; +var colixes = this.meshData.vcs; +var vertexValues = this.meshData.vvs; +if (colixes == null || colixes.length < vertexCount) this.meshData.vcs = colixes = Clazz_newShortArray (vertexCount, 0); +if (vertexValues == null || vertexValues.length < vertexCount) this.meshData.vvs = vertexValues = Clazz_newFloatArray (vertexCount, 0); +for (var i = 0; i < vertexCount; i++) colixes[i] = JU.C.getColix(this.jvxlData.vertexColors[i]); + +return "-"; +}); +Clazz_overrideMethod(c$, "getPlane", +function(x){ +return this.getPlaneSR(x); +}, "~N"); +Clazz_defineMethod(c$, "getPlaneSR", +function(x){ +if (this.yzCount == 0) this.initPlanes(); +if (this.qpc != null) this.qpc.getPlane(x, this.yzPlanes[x % 2]); +return this.yzPlanes[x % 2]; +}, "~N"); +Clazz_defineMethod(c$, "initPlanes", +function(){ +this.yzCount = this.nPointsY * this.nPointsZ; +if (!this.isQuiet) JU.Logger.info("reading data progressively -- yzCount = " + this.yzCount); +this.yzPlanes = JU.AU.newFloat2(2); +this.yzPlanes[0] = Clazz_newFloatArray (this.yzCount, 0); +this.yzPlanes[1] = Clazz_newFloatArray (this.yzCount, 0); +}); +Clazz_overrideMethod(c$, "getValue", +function(x, y, z, ptyz){ +return this.getValue2(x, y, z, ptyz); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getValue2", +function(x, y, z, ptyz){ +return (this.yzPlanes == null ? this.voxelData[x][y][z] : this.yzPlanes[x % 2][ptyz]); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "generateSurfaceData", +function(){ +this.edgeData = ""; +if (this.vertexDataOnly) { +try { +this.readSurfaceData(false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +JU.Logger.error("Exception in SurfaceReader::readSurfaceData: " + e.toString()); +} else { +throw e; +} +} +return; +}this.contourVertexCount = 0; +var contourType = -1; +this.marchingSquares = null; +if (this.params.thePlane != null || this.params.isContoured) { +this.marchingSquares = new J.jvxl.calc.MarchingSquares(this, this.volumeData, this.params.thePlane, this.params.contoursDiscrete, this.params.nContours, this.params.thisContour, this.params.contourFromZero); +contourType = this.marchingSquares.contourType; +this.marchingSquares.setMinMax(this.params.valueMappedToRed, this.params.valueMappedToBlue); +}this.params.contourType = contourType; +this.params.isXLowToHigh = this.isXLowToHigh; +this.marchingCubes = new J.jvxl.calc.MarchingCubes(this, this.volumeData, this.params, this.jvxlVoxelBitSet); +var data = this.marchingCubes.getEdgeData(); +if (this.params.thePlane == null) this.edgeData = data; +this.jvxlData.setSurfaceInfoFromBitSetPts(this.marchingCubes.bsVoxels, this.params.thePlane, this.params.mapLattice); +this.jvxlData.jvxlExcluded = this.params.bsExcluded; +if (this.isJvxl) this.edgeData = this.jvxlEdgeDataRead; +this.postProcessVertices(); +}); +Clazz_defineMethod(c$, "postProcessVertices", +function(){ +}); +Clazz_overrideMethod(c$, "getSurfacePointIndexAndFraction", +function(cutoff, isCutoffAbsolute, x, y, z, offset, vA, vB, valueA, valueB, pointA, edgeVector, isContourType, fReturn){ +var thisValue = this.getSurfacePointAndFraction(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, this.ptTemp); +if (this.marchingSquares != null && this.params.isContoured) return this.marchingSquares.addContourVertex(this.ptTemp, cutoff); +var assocVertex = (this.assocCutoff > 0 ? (fReturn[0] < this.assocCutoff ? vA : fReturn[0] > 1 - this.assocCutoff ? vB : -1) : -1); +if (assocVertex >= 0) assocVertex = this.marchingCubes.getLinearOffset(x, y, z, assocVertex); +var n = this.addVertexCopy(this.ptTemp, thisValue, assocVertex, true); +if (n >= 0 && this.params.iAddGridPoints) { +this.marchingCubes.calcVertexPoint(x, y, z, vB, this.ptTemp); +this.addVertexCopy(valueA < valueB ? pointA : this.ptTemp, Math.min(valueA, valueB), -3, true); +this.addVertexCopy(valueA < valueB ? this.ptTemp : pointA, Math.max(valueA, valueB), -3, true); +}return n; +}, "~N,~B,~N,~N,~N,JU.P3i,~N,~N,~N,~N,JU.T3,JU.V3,~B,~A"); +Clazz_defineMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +return this.getSPF(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz_defineMethod(c$, "getSPF", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +var diff = valueB - valueA; +var fraction = (cutoff - valueA) / diff; +if (isCutoffAbsolute && (fraction < 0 || fraction > 1)) fraction = (-cutoff - valueA) / diff; +if (fraction < 0 || fraction > 1) { +fraction = NaN; +}fReturn[0] = fraction; +ptReturn.scaleAdd2(fraction, edgeVector, pointA); +return valueA + fraction * diff; +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz_defineMethod(c$, "addVertexCopy", +function(vertexXYZ, value, assocVertex, asCopy){ +return this.addVC(vertexXYZ, value, assocVertex, asCopy); +}, "JU.T3,~N,~N,~B"); +Clazz_defineMethod(c$, "addVC", +function(vertexXYZ, value, assocVertex, asCopy){ +return (Float.isNaN(value) && assocVertex != -3 ? -1 : this.meshDataServer == null ? this.meshData.addVertexCopy(vertexXYZ, value, assocVertex, asCopy) : this.meshDataServer.addVertexCopy(vertexXYZ, value, assocVertex, asCopy)); +}, "JU.T3,~N,~N,~B"); +Clazz_defineMethod(c$, "addTriangleCheck", +function(iA, iB, iC, check, iContour, isAbsolute, color){ +if (this.marchingSquares != null && this.params.isContoured) { +if (color == 0) return this.marchingSquares.addTriangle(iA, iB, iC, check, iContour); +color = 0; +}return (this.meshDataServer != null ? this.meshDataServer.addTriangleCheck(iA, iB, iC, check, iContour, isAbsolute, color) : isAbsolute && !J.jvxl.data.MeshData.checkCutoff(iA, iB, iC, this.meshData.vvs) ? -1 : this.meshData.addTriangleCheck(iA, iB, iC, check, iContour, color)); +}, "~N,~N,~N,~N,~N,~B,~N"); +Clazz_defineMethod(c$, "colorIsosurface", +function(){ +if (this.params.isSquared && this.volumeData != null) this.volumeData.filterData(true, NaN); +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 1, null); +}this.jvxlData.saveVertexCount = 0; +if (this.params.isContoured && this.marchingSquares != null) { +this.initializeMapping(); +this.params.setMapRanges(this, false); +this.marchingSquares.setMinMax(this.params.valueMappedToRed, this.params.valueMappedToBlue); +this.jvxlData.saveVertexCount = this.marchingSquares.contourVertexCount; +this.contourVertexCount = this.marchingSquares.generateContourData(this.jvxlDataIs2dContour, (this.params.isSquared ? 1e-8 : 1e-4)); +this.jvxlData.contourValuesUsed = this.marchingSquares.contourValuesUsed; +this.minMax = this.marchingSquares.getMinMax(); +if (this.meshDataServer != null) this.meshDataServer.notifySurfaceGenerationCompleted(); +this.finalizeMapping(); +}this.applyColorScale(); +this.jvxlData.nContours = (this.params.contourFromZero ? this.params.nContours : -1 - this.params.nContours); +this.jvxlData.thisContour = this.params.thisContour; +this.jvxlData.jvxlFileMessage = "mapped: min = " + this.params.valueMappedToRed + "; max = " + this.params.valueMappedToBlue; +}); +Clazz_defineMethod(c$, "applyColorScale", +function(){ +this.colorFractionBase = this.jvxlData.colorFractionBase = 35; +this.colorFractionRange = this.jvxlData.colorFractionRange = 90; +if (this.params.colorPhase == 0) this.params.colorPhase = 1; +if (this.meshDataServer == null) { +this.meshData.vcs = Clazz_newShortArray (this.meshData.vc, 0); +} else { +this.meshDataServer.fillMeshData(this.meshData, 1, null); +if (this.params.contactPair == null) this.meshDataServer.fillMeshData(this.meshData, 2, null); +}var saveColorData = (this.params.colorDensity || this.params.isBicolorMap || this.params.colorBySign || !this.params.colorByPhase); +if (this.params.contactPair != null) saveColorData = false; +this.jvxlData.isJvxlPrecisionColor = true; +this.jvxlData.vertexCount = (this.contourVertexCount > 0 ? this.contourVertexCount : this.meshData.vc); +this.jvxlData.minColorIndex = -1; +this.jvxlData.maxColorIndex = 0; +this.jvxlData.contourValues = this.params.contoursDiscrete; +this.jvxlData.isColorReversed = this.params.isColorReversed; +if (!this.params.colorDensity) if (this.params.isBicolorMap && !this.params.isContoured || this.params.colorBySign) { +this.jvxlData.minColorIndex = JU.C.getColixTranslucent3(JU.C.getColix(this.params.isColorReversed ? this.params.colorPos : this.params.colorNeg), this.jvxlData.translucency != 0, this.jvxlData.translucency); +this.jvxlData.maxColorIndex = JU.C.getColixTranslucent3(JU.C.getColix(this.params.isColorReversed ? this.params.colorNeg : this.params.colorPos), this.jvxlData.translucency != 0, this.jvxlData.translucency); +}this.jvxlData.isTruncated = (this.jvxlData.minColorIndex >= 0 && !this.params.isContoured); +var useMeshDataValues = this.jvxlDataIs2dContour || this.hasColorData || this.vertexDataOnly || this.params.colorDensity || this.params.isBicolorMap && !this.params.isContoured; +if (!useMeshDataValues) { +if (this.haveSurfaceAtoms && this.meshData.vertexSource == null) this.meshData.vertexSource = Clazz_newIntArray (this.meshData.vc, 0); +var min = 3.4028235E38; +var max = -3.4028235E38; +var value; +this.initializeMapping(); +for (var i = this.meshData.vc; --i >= this.meshData.mergeVertexCount0; ) { +if (this.params.colorBySets) { +value = this.meshData.vertexSets[i]; +} else if (this.params.colorByPhase) { +value = this.getPhase(this.meshData.vs[i]); +} else { +var needSource = this.haveSurfaceAtoms; +value = this.volumeData.lookupInterpolatedVoxelValue(this.meshData.vs[i], needSource); +if (needSource) this.meshData.vertexSource[i] = this.getSurfaceAtomIndex(); +}if (value < min) min = value; +if (value > max && value != 3.4028235E38) max = value; +this.meshData.vvs[i] = value; +} +if (this.params.rangeSelected && this.minMax == null) this.minMax = Clazz_newFloatArray(-1, [min, max]); +this.finalizeMapping(); +}this.params.setMapRanges(this, true); +this.jvxlData.mappedDataMin = this.params.mappedDataMin; +this.jvxlData.mappedDataMax = this.params.mappedDataMax; +this.jvxlData.valueMappedToRed = this.params.valueMappedToRed; +this.jvxlData.valueMappedToBlue = this.params.valueMappedToBlue; +if (this.params.contactPair == null && this.jvxlData.vertexColors == null) this.colorData(); +J.jvxl.data.JvxlCoder.jvxlCreateColorData(this.jvxlData, (saveColorData ? this.meshData.vvs : null)); +if (this.haveSurfaceAtoms && this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 4, null); +if (this.meshDataServer != null && this.params.colorBySets) this.meshDataServer.fillMeshData(this.meshData, 3, null); +}); +Clazz_defineMethod(c$, "colorData", +function(){ +var vertexValues = this.meshData.vvs; +var vertexColixes = this.meshData.vcs; +this.meshData.pcs = null; +var valueBlue = this.jvxlData.valueMappedToBlue; +var valueRed = this.jvxlData.valueMappedToRed; +var minColorIndex = this.jvxlData.minColorIndex; +var maxColorIndex = this.jvxlData.maxColorIndex; +if (this.params.colorEncoder == null) this.params.colorEncoder = new JU.ColorEncoder(null, null); +this.params.colorEncoder.setRange(this.params.valueMappedToRed, this.params.valueMappedToBlue, this.params.isColorReversed); +for (var i = this.meshData.vc; --i >= 0; ) { +var value = vertexValues[i]; +if (minColorIndex >= 0) { +if (value <= 0) vertexColixes[i] = minColorIndex; + else if (value > 0) vertexColixes[i] = maxColorIndex; +} else { +if (value <= valueRed) value = valueRed; +if (value >= valueBlue) value = valueBlue; +vertexColixes[i] = this.params.colorEncoder.getColorIndex(value); +}} +if ((this.params.nContours > 0 || this.jvxlData.contourValues != null) && this.jvxlData.contourColixes == null) { +var n = (this.jvxlData.contourValues == null ? this.params.nContours : this.jvxlData.contourValues.length); +var colors = this.jvxlData.contourColixes = Clazz_newShortArray (n, 0); +var values = this.jvxlData.contourValues; +if (values == null) values = this.jvxlData.contourValuesUsed; +if (this.jvxlData.contourValuesUsed == null) this.jvxlData.contourValuesUsed = (values == null ? Clazz_newFloatArray (n, 0) : values); +var dv = (valueBlue - valueRed) / (n + 1); +this.params.colorEncoder.setRange(this.params.valueMappedToRed, this.params.valueMappedToBlue, this.params.isColorReversed); +for (var i = 0; i < n; i++) { +var v = (values == null ? valueRed + (i + 1) * dv : values[i]); +this.jvxlData.contourValuesUsed[i] = v; +colors[i] = JU.C.getColixTranslucent(this.params.colorEncoder.getArgb(v)); +} +this.jvxlData.contourColors = JU.C.getHexCodes(colors); +}}); +c$.getColorPhaseIndex = Clazz_defineMethod(c$, "getColorPhaseIndex", +function(color){ +var colorPhase = -1; +for (var i = 0; i < J.jvxl.readers.SurfaceReader.colorPhases.length; i++) if (color.equalsIgnoreCase(J.jvxl.readers.SurfaceReader.colorPhases[i])) { +colorPhase = i; +break; +} +return colorPhase; +}, "~S"); +Clazz_defineMethod(c$, "getPhase", +function(pt){ +switch (this.params.colorPhase) { +case 0: +case -1: +case 1: +return (pt.x > 0 ? 1 : -1); +case 2: +return (pt.y > 0 ? 1 : -1); +case 3: +return (pt.z > 0 ? 1 : -1); +case 4: +return (pt.x * pt.y > 0 ? 1 : -1); +case 5: +return (pt.y * pt.z > 0 ? 1 : -1); +case 6: +return (pt.x * pt.z > 0 ? 1 : -1); +case 7: +return (pt.x * pt.x - pt.y * pt.y > 0 ? 1 : -1); +case 8: +return (pt.z * pt.z * 2 - pt.x * pt.x - pt.y * pt.y > 0 ? 1 : -1); +} +return 1; +}, "JU.T3"); +Clazz_defineMethod(c$, "getMinMaxMappedValues", +function(haveData){ +if (this.minMax != null && this.minMax[0] != 3.4028235E38) return this.minMax; +if (this.params.colorBySets) return (this.minMax = Clazz_newFloatArray(-1, [0, Math.max(this.meshData.nSets - 1, 0)])); +var min = 3.4028235E38; +var max = -3.4028235E38; +if (this.params.usePropertyForColorRange && this.params.theProperty != null) { +for (var i = this.params.theProperty.length; --i >= 0; ) { +if (this.params.rangeSelected && !this.params.bsSelected.get(i)) continue; +var p = this.params.theProperty[i]; +if (Float.isNaN(p)) continue; +if (p < min) min = p; +if (p > max) max = p; +} +return (this.minMax = Clazz_newFloatArray(-1, [min, max])); +}var vertexCount = (this.contourVertexCount > 0 ? this.contourVertexCount : this.meshData.vc); +var vertexes = this.meshData.vs; +var useVertexValue = (haveData || this.jvxlDataIs2dContour || this.vertexDataOnly || this.params.colorDensity); +for (var i = this.meshData.mergeVertexCount0; i < vertexCount; i++) { +var v; +if (useVertexValue) v = this.meshData.vvs[i]; + else v = this.volumeData.lookupInterpolatedVoxelValue(vertexes[i], false); +if (v < min) min = v; +if (v > max && v != 3.4028235E38) max = v; +} +return (this.minMax = Clazz_newFloatArray(-1, [min, max])); +}, "~B"); +Clazz_defineMethod(c$, "updateTriangles", +function(){ +if (this.meshDataServer == null) { +this.meshData.invalidatePolygons(); +} else { +this.meshDataServer.invalidateTriangles(); +}}); +Clazz_defineMethod(c$, "updateSurfaceData", +function(){ +this.meshData.setVertexSets(true); +this.updateTriangles(); +if (this.params.bsExcluded[1] == null) this.params.bsExcluded[1] = new JU.BS(); +this.meshData.updateInvalidatedVertices(this.params.bsExcluded[1]); +}); +Clazz_defineMethod(c$, "selectPocket", +function(doExclude){ +}, "~B"); +Clazz_defineMethod(c$, "excludeMinimumSet", +function(){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.getSurfaceSet(); +var bs; +for (var i = this.meshData.nSets; --i >= 0; ) if ((bs = this.meshData.surfaceSet[i]) != null && bs.cardinality() < this.params.minSet) this.meshData.invalidateSurfaceSet(i); + +this.updateSurfaceData(); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 3, null); +}); +Clazz_defineMethod(c$, "excludeMaximumSet", +function(){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.getSurfaceSet(); +var bs; +for (var i = this.meshData.nSets; --i >= 0; ) if ((bs = this.meshData.surfaceSet[i]) != null && bs.cardinality() > this.params.maxSet) this.meshData.invalidateSurfaceSet(i); + +this.updateSurfaceData(); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 3, null); +}); +Clazz_defineMethod(c$, "slabIsosurface", +function(slabInfo){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.slabPolygonsList(slabInfo, true); +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 4, null); +}, "JU.Lst"); +Clazz_defineMethod(c$, "setVertexAnisotropy", +function(pt){ +pt.x *= this.anisotropy[0]; +pt.y *= this.anisotropy[1]; +pt.z *= this.anisotropy[2]; +pt.add(this.center); +}, "JU.T3"); +Clazz_defineMethod(c$, "setVectorAnisotropy", +function(v){ +this.haveSetAnisotropy = true; +v.x *= this.anisotropy[0]; +v.y *= this.anisotropy[1]; +v.z *= this.anisotropy[2]; +}, "JU.T3"); +Clazz_defineMethod(c$, "setVolumetricAnisotropy", +function(){ +if (this.haveSetAnisotropy) return; +this.setVolumetricOriginAnisotropy(); +this.setVectorAnisotropy(this.volumetricVectors[0]); +this.setVectorAnisotropy(this.volumetricVectors[1]); +this.setVectorAnisotropy(this.volumetricVectors[2]); +}); +Clazz_defineMethod(c$, "setVolumetricOriginAnisotropy", +function(){ +this.volumetricOrigin.setT(this.center); +}); +Clazz_defineMethod(c$, "setBBoxAll", +function(){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.xyzMin = new JU.P3(); +this.xyzMax = new JU.P3(); +this.meshData.setBox(this.xyzMin, this.xyzMax); +}); +Clazz_defineMethod(c$, "setBBox", +function(pt, margin){ +if (this.xyzMin == null) { +this.xyzMin = JU.P3.new3(3.4028235E38, 3.4028235E38, 3.4028235E38); +this.xyzMax = JU.P3.new3(-3.4028235E38, -3.4028235E38, -3.4028235E38); +}JU.BoxInfo.addPoint(pt, this.xyzMin, this.xyzMax, margin); +}, "JU.T3,~N"); +Clazz_defineMethod(c$, "getValueAtPoint", +function(pt, getSource){ +return 0; +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "initializeMapping", +function(){ +}); +Clazz_defineMethod(c$, "finalizeMapping", +function(){ +}); +Clazz_defineMethod(c$, "getSurfaceAtomIndex", +function(){ +return -1; +}); +c$.colorPhases = Clazz_newArray(-1, ["_orb", "x", "y", "z", "xy", "yz", "xz", "x2-y2", "z2"]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.calc"); +Clazz_load(["JU.TriangleData", "JU.BS", "$.P3", "$.SB", "$.V3"], "J.jvxl.calc.MarchingCubes", ["J.jvxl.data.JvxlCoder"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.surfaceReader = null; +this.volumeData = null; +this.contourType = 0; +this.isContoured = false; +this.cutoff = 0; +this.isCutoffAbsolute = false; +this.isSquared = false; +this.isXLowToHigh = false; +this.cubeCountX = 0; +this.cubeCountY = 0; +this.cubeCountZ = 0; +this.nY = 0; +this.nZ = 0; +this.yzCount = 0; +this.colorDensity = false; +this.integrateSquared = true; +this.bsVoxels = null; +this.bsExcludedVertices = null; +this.bsExcludedTriangles = null; +this.bsExcludedPlanes = null; +this.edgeData = null; +this.excludePartialCubes = true; +this.isDensityRange = false; +this.mode = 0; +this.vertexValues = null; +this.edgeCount = 0; +this.voxelVertexVectors = null; +this.edgeVectors = null; +this.edgePointIndexes = null; +this.isoPointIndexPlanes = null; +this.yzPlanes = null; +this.mappingPlane = null; +this.allInside = false; +this.$isInside = false; +this.offset = null; +this.voxelData = null; +this.nTriangles = 0; +this.bsValues = null; +this.pt0 = null; +this.pointA = null; +this.edgeVertexPointers = null; +this.edgeVertexPlanes = null; +this.fReturn = null; +this.linearOffsets = null; +Clazz_instantialize(this, arguments);}, J.jvxl.calc, "MarchingCubes", JU.TriangleData); +Clazz_prepareFields (c$, function(){ +this.edgeData = new JU.SB(); +this.vertexValues = Clazz_newFloatArray (8, 0); +this.voxelVertexVectors = new Array(8); +this.edgeVectors = new Array(12); +{ +for (var i = 12; --i >= 0; ) this.edgeVectors[i] = new JU.V3(); + +}this.edgePointIndexes = Clazz_newIntArray (12, 0); +this.bsValues = new JU.BS(); +this.pt0 = new JU.P3(); +this.pointA = new JU.P3(); +this.fReturn = Clazz_newFloatArray (1, 0); +this.linearOffsets = Clazz_newIntArray (8, 0); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.jvxl.calc.MarchingCubes, []); +}); +Clazz_makeConstructor(c$, +function(surfaceReader, volumeData, params, bsVoxels){ +Clazz_superConstructor (this, J.jvxl.calc.MarchingCubes, []); +this.excludePartialCubes = true; +this.surfaceReader = surfaceReader; +this.bsVoxels = bsVoxels; +var bsExcluded = params.bsExcluded; +this.bsExcludedVertices = (bsExcluded[0] == null ? bsExcluded[0] = new JU.BS() : bsExcluded[0]); +this.bsExcludedPlanes = (bsExcluded[2] == null ? bsExcluded[2] = new JU.BS() : bsExcluded[2]); +this.bsExcludedTriangles = (bsExcluded[3] == null ? bsExcluded[3] = new JU.BS() : bsExcluded[3]); +this.mode = (volumeData.getVoxelData() != null || volumeData.mappingPlane != null ? 1 : bsVoxels != null ? 2 : 3); +this.setParameters(volumeData, params); +}, "J.jvxl.api.VertexDataServer,J.jvxl.data.VolumeData,J.jvxl.readers.Parameters,JU.BS"); +Clazz_defineMethod(c$, "setParameters", +function(volumeData, params){ +this.volumeData = volumeData; +this.colorDensity = params.colorDensity; +this.isContoured = params.thePlane == null && params.isContoured && !this.colorDensity; +this.cutoff = params.cutoff; +this.isCutoffAbsolute = params.isCutoffAbsolute; +this.isDensityRange = (params.cutoffRange != null); +this.contourType = params.contourType; +this.isSquared = params.isSquared; +this.isXLowToHigh = params.isXLowToHigh; +this.cubeCountX = volumeData.voxelCounts[0] - 1; +this.cubeCountY = volumeData.voxelCounts[1] - 1; +this.cubeCountZ = volumeData.voxelCounts[2] - 1; +volumeData.getYzCount(); +if (params.mapLattice != null) { +this.cubeCountX *= Math.abs(params.mapLattice.x); +this.cubeCountY *= Math.abs(params.mapLattice.y); +this.cubeCountZ *= Math.abs(params.mapLattice.z); +}this.nY = this.cubeCountY + 1; +this.nZ = this.cubeCountZ + 1; +this.yzCount = this.nY * this.nZ; +if (this.bsVoxels == null) this.bsVoxels = new JU.BS(); +this.edgeVertexPointers = (this.isXLowToHigh ? J.jvxl.calc.MarchingCubes.edgeVertexPointersLowToHigh : J.jvxl.calc.MarchingCubes.edgeVertexPointersHighToLow); +this.edgeVertexPlanes = (this.isXLowToHigh ? J.jvxl.calc.MarchingCubes.edgeVertexPlanesLowToHigh : J.jvxl.calc.MarchingCubes.edgeVertexPlanesHighToLow); +this.isoPointIndexPlanes = Clazz_newIntArray (2, this.yzCount, 3, 0); +this.yzPlanes = (this.mode == 3 ? Clazz_newFloatArray (2, this.yzCount, 0) : null); +this.setLinearOffsets(); +this.calcVoxelVertexVectors(); +}, "J.jvxl.data.VolumeData,J.jvxl.readers.Parameters"); +Clazz_defineMethod(c$, "calcVoxelVertexVectors", +function(){ +for (var i = 8; --i >= 0; ) this.volumeData.transform(J.jvxl.calc.MarchingCubes.cubeVertexVectors[i], this.voxelVertexVectors[i] = new JU.V3()); + +for (var i = 12; --i >= 0; ) this.edgeVectors[i].sub2(this.voxelVertexVectors[JU.TriangleData.edgeVertexes[i + i + 1]], this.voxelVertexVectors[JU.TriangleData.edgeVertexes[i + i]]); + +}); +Clazz_defineMethod(c$, "resetIndexPlane", +function(plane){ +for (var i = 0; i < this.yzCount; i++) for (var j = 0; j < 3; j++) plane[i][j] = -2147483648; + + +return plane; +}, "~A"); +Clazz_defineMethod(c$, "getEdgeData", +function(){ +if (this.cubeCountX < 0 || this.cubeCountY < 0 || this.cubeCountZ < 0) return ""; +this.mappingPlane = this.volumeData.mappingPlane; +this.edgeCount = 0; +var x0; +var x1; +var xStep; +var ptStep; +var pt; +var ptX; +if (this.isXLowToHigh) { +x0 = 0; +x1 = this.cubeCountX + (this.colorDensity ? 1 : 0); +if (this.colorDensity) { +x1 = this.cubeCountX + 1; +ptX = this.yzCount - 1; +} else { +x1 = this.cubeCountX; +ptX = (this.yzCount - 1) - this.nZ - 1; +}xStep = 1; +ptStep = this.yzCount; +} else { +if (this.colorDensity) { +x0 = this.cubeCountX; +ptX = (this.cubeCountX + 1) * this.yzCount - 1; +} else { +x0 = this.cubeCountX - 1; +ptX = (this.cubeCountX * this.yzCount - 1) - this.nZ - 1; +}x1 = -1; +xStep = -1; +ptStep = -this.yzCount; +}pt = ptX; +this.resetIndexPlane(this.isoPointIndexPlanes[1]); +this.voxelData = null; +var y1 = this.cubeCountY + (this.colorDensity ? 1 : 0); +var z1 = this.cubeCountZ + (this.colorDensity ? 1 : 0); +switch (this.mode) { +case 3: +this.getPlane(x0, false); +break; +case 1: +this.voxelData = this.volumeData.getVoxelData(); +break; +} +this.allInside = (this.colorDensity && (this.cutoff == 0 || this.mode == 2 && this.bsVoxels.nextSetBit(0) < 0)); +var colorDensityAll = (this.colorDensity && this.cutoff == 0); +var v = 0; +for (var x = x0; x != x1; x += xStep, ptX += ptStep, pt = ptX) { +if (this.mode == 3) { +if (x + xStep <= x1) this.getPlane(x + xStep, true); +}if (this.bsExcludedPlanes.get(x) && this.bsExcludedPlanes.get(x + xStep)) continue; +if (this.colorDensity) { +for (var y = y1; --y >= 0; ) for (var z = z1; --z >= 0; pt--) { +v = this.getValue(x, y, z, pt, 0); +if (colorDensityAll || this.$isInside) { +this.addVertex(x, y, z, pt, v); +}} + +continue; +}var indexPlane = this.isoPointIndexPlanes[0]; +this.isoPointIndexPlanes[0] = this.isoPointIndexPlanes[1]; +this.isoPointIndexPlanes[1] = this.resetIndexPlane(indexPlane); +var noValues = true; +for (var y = y1; --y >= 0; pt--) { +for (var z = z1; --z >= 0; pt--) { +var insideMask = 0; +for (var i = 8; --i >= 0; ) { +v = this.getValue(x, y, z, pt, i); +if (this.$isInside) insideMask |= JU.TriangleData.Pwr2[i]; +} +if (noValues && !Float.isNaN(v)) noValues = false; +if (insideMask == 0) { +continue; +}if (insideMask == 0xFF) { +continue; +}if (this.processOneCubical(insideMask, x, y, z, pt) && !this.isContoured && !this.colorDensity) { +this.processTriangles(insideMask); +}} +} +if (noValues) { +this.bsExcludedPlanes.set(x); +}} +return this.edgeData.toString(); +}); +Clazz_defineMethod(c$, "getValue", +function(x, y, z, pt, i){ +var v; +this.offset = JU.TriangleData.cubeVertexOffsets[i]; +var pti = pt + this.linearOffsets[i]; +switch (this.mode) { +case 3: +v = this.vertexValues[i] = this.getValueArray(x + this.offset.x, y + this.offset.y, z + this.offset.z, pti, this.yzPlanes[J.jvxl.calc.MarchingCubes.yzPlanePts[i]]); +this.$isInside = (this.allInside || this.bsVoxels.get(pti)); +break; +case 2: +this.$isInside = (this.allInside || this.bsVoxels.get(pti)); +v = this.vertexValues[i] = ((this.isDensityRange ? !this.$isInside : this.bsExcludedVertices.get(pti)) ? NaN : this.$isInside ? 1 : 0); +break; +default: +case 1: +if (this.mappingPlane == null) { +v = this.vertexValues[i] = this.voxelData[x + this.offset.x][y + this.offset.y][z + this.offset.z]; +} else { +this.volumeData.voxelPtToXYZ(x + this.offset.x, y + this.offset.y, z + this.offset.z, this.pt0); +v = this.vertexValues[i] = this.volumeData.distanceToMappingPlane(this.pt0); +}if (this.isSquared) this.vertexValues[i] *= this.vertexValues[i]; +this.$isInside = (this.allInside ? true : J.jvxl.calc.MarchingCubes.isInside(this.vertexValues[i], this.cutoff, this.isCutoffAbsolute)); +if (this.$isInside) this.bsVoxels.set(pti); +} +return v; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getPlane", +function(i, andSwap){ +if (i < 0 || i > this.cubeCountX) return; +this.surfaceReader.getPlane(i); +if (andSwap) { +var plane = this.yzPlanes[0]; +this.yzPlanes[0] = this.yzPlanes[1]; +this.yzPlanes[1] = plane; +}}, "~N,~B"); +Clazz_defineMethod(c$, "processTriangles", +function(insideMask){ +var triangles = JU.TriangleData.triangleTable2[insideMask]; +for (var i = triangles.length; (i -= 4) >= 0; ) this.addTriangle(triangles[i], triangles[i + 1], triangles[i + 2], triangles[i + 3]); + +}, "~N"); +Clazz_defineMethod(c$, "addVertex", +function(x, y, z, pti, value){ +this.volumeData.voxelPtToXYZ(x, y, z, this.pt0); +if (this.surfaceReader.addVertexCopy(this.pt0, value, -4, true) < 0) this.bsExcludedVertices.set(pti); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "addTriangle", +function(ia, ib, ic, edgeType){ +if (!this.bsExcludedTriangles.get(this.nTriangles) && this.surfaceReader.addTriangleCheck(this.edgePointIndexes[ia], this.edgePointIndexes[ib], this.edgePointIndexes[ic], edgeType, 0, this.isCutoffAbsolute, 0) < 0) { +this.bsExcludedTriangles.set(this.nTriangles); +}this.nTriangles++; +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "getValueArray", +function(x, y, z, pt, tempValues){ +var ptyz = pt % this.yzCount; +this.bsValues.set(pt); +var value = this.surfaceReader.getValue(x, y, z, ptyz); +if (this.isSquared) value *= value; +tempValues[ptyz] = value; +if (J.jvxl.calc.MarchingCubes.isInside(value, this.cutoff, this.isCutoffAbsolute)) this.bsVoxels.set(pt); +return value; +}, "~N,~N,~N,~N,~A"); +c$.isInside = Clazz_defineMethod(c$, "isInside", +function(voxelValue, max, isAbsolute){ +return ((max > 0 && (isAbsolute ? Math.abs(voxelValue) : voxelValue) >= max) || (max <= 0 && voxelValue <= max)); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "processOneCubical", +function(insideMask, x, y, z, pt){ +var edgeMask = J.jvxl.calc.MarchingCubes.insideMaskTable[insideMask]; +var isNaN = false; +for (var iEdge = 12; --iEdge >= 0; ) { +var xEdge = JU.TriangleData.Pwr2[iEdge]; +if ((edgeMask & xEdge) == 0) continue; +var iPlane = this.edgeVertexPlanes[iEdge]; +var iPt = (pt + this.linearOffsets[this.edgeVertexPointers[iEdge]]) % this.yzCount; +var iType = J.jvxl.calc.MarchingCubes.edgeTypeTable[iEdge]; +var index = this.edgePointIndexes[iEdge] = this.isoPointIndexPlanes[iPlane][iPt][iType]; +if (index != -2147483648) { +if (index == -1) isNaN = this.excludePartialCubes; +continue; +}var vertexA = JU.TriangleData.edgeVertexes[iEdge << 1]; +var vertexB = JU.TriangleData.edgeVertexes[(iEdge << 1) + 1]; +var valueA = this.vertexValues[vertexA]; +var valueB = this.vertexValues[vertexB]; +this.calcVertexPoint(x, y, z, vertexA, this.pointA); +this.edgeCount++; +var i = this.edgePointIndexes[iEdge] = this.isoPointIndexPlanes[iPlane][iPt][iType] = this.surfaceReader.getSurfacePointIndexAndFraction(this.cutoff, this.isCutoffAbsolute, x, y, z, JU.TriangleData.cubeVertexOffsets[vertexA], vertexA, vertexB, valueA, valueB, this.pointA, this.edgeVectors[iEdge], iType == this.contourType, this.fReturn); +this.addEdgeData(i < 0 ? NaN : this.fReturn[0]); +if (Float.isNaN(this.fReturn[0]) || i < 0) isNaN = this.excludePartialCubes; +} +return !isNaN; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "addEdgeData", +function(f){ +var ch = J.jvxl.data.JvxlCoder.jvxlFractionAsCharacter(f); +this.edgeData.appendC(ch); +}, "~N"); +Clazz_defineMethod(c$, "calcVertexPoint", +function(x, y, z, vertex, pt){ +this.volumeData.voxelPtToXYZ(x, y, z, this.pt0); +pt.add2(this.pt0, this.voxelVertexVectors[vertex]); +}, "~N,~N,~N,~N,JU.P3"); +Clazz_defineMethod(c$, "setLinearOffsets", +function(){ +this.linearOffsets[0] = 0; +this.linearOffsets[1] = this.yzCount; +this.linearOffsets[2] = this.yzCount + 1; +this.linearOffsets[3] = 1; +this.linearOffsets[4] = this.nZ; +this.linearOffsets[5] = this.yzCount + this.nZ; +this.linearOffsets[6] = this.yzCount + this.nZ + 1; +this.linearOffsets[7] = this.nZ + 1; +}); +Clazz_defineMethod(c$, "getLinearOffset", +function(x, y, z, offset){ +return x * this.yzCount + y * this.nZ + z + this.linearOffsets[offset]; +}, "~N,~N,~N,~N"); +c$.yzPlanePts = Clazz_newIntArray(-1, [0, 1, 1, 0, 0, 1, 1, 0]); +c$.edgeVertexPointersLowToHigh = Clazz_newIntArray(-1, [1, 1, 2, 0, 5, 5, 6, 4, 0, 1, 2, 3]); +c$.edgeVertexPointersHighToLow = Clazz_newIntArray(-1, [0, 1, 3, 0, 4, 5, 7, 4, 0, 1, 2, 3]); +c$.edgeVertexPlanesLowToHigh = Clazz_newIntArray(-1, [1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0]); +c$.edgeVertexPlanesHighToLow = Clazz_newIntArray(-1, [1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1]); +c$.cubeVertexVectors = Clazz_newArray(-1, [JU.V3.new3(0, 0, 0), JU.V3.new3(1, 0, 0), JU.V3.new3(1, 0, 1), JU.V3.new3(0, 0, 1), JU.V3.new3(0, 1, 0), JU.V3.new3(1, 1, 0), JU.V3.new3(1, 1, 1), JU.V3.new3(0, 1, 1)]); +c$.edgeTypeTable = Clazz_newIntArray(-1, [0, 2, 0, 2, 0, 2, 0, 2, 1, 1, 1, 1]); +c$.insideMaskTable = Clazz_newShortArray(-1, [0x0000, 0x0109, 0x0203, 0x030A, 0x0406, 0x050F, 0x0605, 0x070C, 0x080C, 0x0905, 0x0A0F, 0x0B06, 0x0C0A, 0x0D03, 0x0E09, 0x0F00, 0x0190, 0x0099, 0x0393, 0x029A, 0x0596, 0x049F, 0x0795, 0x069C, 0x099C, 0x0895, 0x0B9F, 0x0A96, 0x0D9A, 0x0C93, 0x0F99, 0x0E90, 0x0230, 0x0339, 0x0033, 0x013A, 0x0636, 0x073F, 0x0435, 0x053C, 0x0A3C, 0x0B35, 0x083F, 0x0936, 0x0E3A, 0x0F33, 0x0C39, 0x0D30, 0x03A0, 0x02A9, 0x01A3, 0x00AA, 0x07A6, 0x06AF, 0x05A5, 0x04AC, 0x0BAC, 0x0AA5, 0x09AF, 0x08A6, 0x0FAA, 0x0EA3, 0x0DA9, 0x0CA0, 0x0460, 0x0569, 0x0663, 0x076A, 0x0066, 0x016F, 0x0265, 0x036C, 0x0C6C, 0x0D65, 0x0E6F, 0x0F66, 0x086A, 0x0963, 0x0A69, 0x0B60, 0x05F0, 0x04F9, 0x07F3, 0x06FA, 0x01F6, 0x00FF, 0x03F5, 0x02FC, 0x0DFC, 0x0CF5, 0x0FFF, 0x0EF6, 0x09FA, 0x08F3, 0x0BF9, 0x0AF0, 0x0650, 0x0759, 0x0453, 0x055A, 0x0256, 0x035F, 0x0055, 0x015C, 0x0E5C, 0x0F55, 0x0C5F, 0x0D56, 0x0A5A, 0x0B53, 0x0859, 0x0950, 0x07C0, 0x06C9, 0x05C3, 0x04CA, 0x03C6, 0x02CF, 0x01C5, 0x00CC, 0x0FCC, 0x0EC5, 0x0DCF, 0x0CC6, 0x0BCA, 0x0AC3, 0x09C9, 0x08C0, 0x08C0, 0x09C9, 0x0AC3, 0x0BCA, 0x0CC6, 0x0DCF, 0x0EC5, 0x0FCC, 0x00CC, 0x01C5, 0x02CF, 0x03C6, 0x04CA, 0x05C3, 0x06C9, 0x07C0, 0x0950, 0x0859, 0x0B53, 0x0A5A, 0x0D56, 0x0C5F, 0x0F55, 0x0E5C, 0x015C, 0x0055, 0x035F, 0x0256, 0x055A, 0x0453, 0x0759, 0x0650, 0x0AF0, 0x0BF9, 0x08F3, 0x09FA, 0x0EF6, 0x0FFF, 0x0CF5, 0x0DFC, 0x02FC, 0x03F5, 0x00FF, 0x01F6, 0x06FA, 0x07F3, 0x04F9, 0x05F0, 0x0B60, 0x0A69, 0x0963, 0x086A, 0x0F66, 0x0E6F, 0x0D65, 0x0C6C, 0x036C, 0x0265, 0x016F, 0x0066, 0x076A, 0x0663, 0x0569, 0x0460, 0x0CA0, 0x0DA9, 0x0EA3, 0x0FAA, 0x08A6, 0x09AF, 0x0AA5, 0x0BAC, 0x04AC, 0x05A5, 0x06AF, 0x07A6, 0x00AA, 0x01A3, 0x02A9, 0x03A0, 0x0D30, 0x0C39, 0x0F33, 0x0E3A, 0x0936, 0x083F, 0x0B35, 0x0A3C, 0x053C, 0x0435, 0x073F, 0x0636, 0x013A, 0x0033, 0x0339, 0x0230, 0x0E90, 0x0F99, 0x0C93, 0x0D9A, 0x0A96, 0x0B9F, 0x0895, 0x099C, 0x069C, 0x0795, 0x049F, 0x0596, 0x029A, 0x0393, 0x0099, 0x0190, 0x0F00, 0x0E09, 0x0D03, 0x0C0A, 0x0B06, 0x0A0F, 0x0905, 0x080C, 0x070C, 0x0605, 0x050F, 0x0406, 0x030A, 0x0203, 0x0109, 0x0000]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.calc"); +Clazz_load(["JU.P3", "java.util.Hashtable"], "J.jvxl.calc.MarchingSquares", ["JU.AU", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.surfaceReader = null; +this.volumeData = null; +this.nContourSegments = 0; +this.contourType = 0; +this.thisContour = 0; +this.valueMin = 0; +this.valueMax = 0; +this.pointA = null; +this.pointB = null; +this.contourFromZero = true; +this.contoursDiscrete = null; +this.contourVertexCount = 0; +this.contourVertexes = null; +if (!Clazz_isClassDefined("J.jvxl.calc.MarchingSquares.ContourVertex")) { +J.jvxl.calc.MarchingSquares.$MarchingSquares$ContourVertex$ (); +} +this.contourPlaneMinimumValue = 0; +this.contourPlaneMaximumValue = 0; +this.contourValuesUsed = null; +this.ptTemp = null; +this.triangleCount = 0; +this.triangles = null; +this.htPts = null; +if (!Clazz_isClassDefined("J.jvxl.calc.MarchingSquares.Triangle")) { +J.jvxl.calc.MarchingSquares.$MarchingSquares$Triangle$ (); +} +Clazz_instantialize(this, arguments);}, J.jvxl.calc, "MarchingSquares", null); +Clazz_prepareFields (c$, function(){ +this.pointA = new JU.P3(); +this.pointB = new JU.P3(); +this.contourVertexes = new Array(1000); +this.ptTemp = new JU.P3(); +this.triangles = new Array(1000); +this.htPts = new java.util.Hashtable(); +}); +Clazz_makeConstructor(c$, +function(surfaceReader, volumeData, thePlane, contoursDiscrete, nContours, thisContour, contourFromZero){ +this.surfaceReader = surfaceReader; +this.volumeData = volumeData; +this.thisContour = thisContour; +this.contoursDiscrete = contoursDiscrete; +this.contourFromZero = contourFromZero; +if (contoursDiscrete == null) { +var i = 0; +this.nContourSegments = (nContours == 0 ? 9 : nContours) + i; +if (this.nContourSegments > 100) this.nContourSegments = 100; +} else { +nContours = contoursDiscrete.length; +this.nContourSegments = nContours; +this.contourFromZero = false; +}}, "J.jvxl.api.VertexDataServer,J.jvxl.data.VolumeData,JU.P4,~A,~N,~N,~B"); +Clazz_defineMethod(c$, "setMinMax", +function(valueMin, valueMax){ +this.valueMin = valueMin; +this.valueMax = valueMax; +}, "~N,~N"); +Clazz_defineMethod(c$, "addContourVertex", +function(vertexXYZ, value){ +if (this.contourVertexCount == this.contourVertexes.length) this.contourVertexes = JU.AU.doubleLength(this.contourVertexes); +var vPt = this.surfaceReader.addVertexCopy(vertexXYZ, value, -2, true); +this.contourVertexes[this.contourVertexCount++] = Clazz_innerTypeInstance(J.jvxl.calc.MarchingSquares.ContourVertex, this, null, vertexXYZ); +return vPt; +}, "JU.P3,~N"); +Clazz_defineMethod(c$, "setContourData", +function(i, value){ +this.contourVertexes[i].setValue(value); +}, "~N,~N"); +Clazz_defineMethod(c$, "calcContourPoint", +function(cutoff, valueA, valueB, pt){ +return this.volumeData.calculateFractionalPoint(cutoff, this.pointA, this.pointB, valueA, valueB, pt); +}, "~N,~N,~N,JU.P3"); +Clazz_defineMethod(c$, "addTriangle", +function(iA, iB, iC, check, iContour){ +if (this.triangleCount == this.triangles.length) this.triangles = JU.AU.doubleLength(this.triangles); +this.triangles[this.triangleCount++] = Clazz_innerTypeInstance(J.jvxl.calc.MarchingSquares.Triangle, this, null, iA, iB, iC, check, iContour); +return 0; +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "generateContourData", +function(haveData, zeroOffset){ +JU.Logger.info("generateContours: " + this.nContourSegments + " segments"); +this.getVertexValues(haveData); +this.createContours(this.valueMin, this.valueMax, zeroOffset); +this.addAllTriangles(); +return this.contourVertexCount; +}, "~B,~N"); +Clazz_defineMethod(c$, "getVertexValues", +function(haveData){ +this.contourPlaneMinimumValue = 3.4028235E38; +this.contourPlaneMaximumValue = -3.4028235E38; +for (var i = 0; i < this.contourVertexCount; i++) { +var c = this.contourVertexes[i]; +var value; +if (haveData) { +value = c.value; +} else { +value = this.volumeData.lookupInterpolatedVoxelValue(c, false); +c.setValue(value); +}if (value < this.contourPlaneMinimumValue) this.contourPlaneMinimumValue = value; +if (value > this.contourPlaneMaximumValue) this.contourPlaneMaximumValue = value; +} +}, "~B"); +Clazz_defineMethod(c$, "createContours", +function(min, max, zeroOffset){ +var diff = max - min; +this.contourValuesUsed = Clazz_newFloatArray (this.nContourSegments, 0); +for (var i = this.triangleCount; --i >= 0; ) this.triangles[i].check = 0; + +var minCutoff = -3.4028235E38; +var cutoff = minCutoff; +for (var i = 0; i < this.nContourSegments; i++) { +cutoff = (this.contoursDiscrete != null ? this.contoursDiscrete[i] : this.contourFromZero ? min + (i * 1 / this.nContourSegments) * diff : i == 0 ? -3.4028235E38 : i == this.nContourSegments - 1 ? 3.4028235E38 : min + ((i - 1) * 1 / (this.nContourSegments - 1)) * diff); +if (this.contoursDiscrete == null && Math.abs(cutoff) < zeroOffset) cutoff = (cutoff < 0 ? -zeroOffset : zeroOffset); +this.contourValuesUsed[i] = cutoff; +JU.Logger.info("#contour " + (i + 1) + " " + cutoff + " " + this.triangleCount); +this.htPts.clear(); +for (var ii = this.triangleCount; --ii >= 0; ) { +if (this.triangles[ii].isValid) this.checkContour(this.triangles[ii], i, cutoff); +} +if (this.thisContour > 0) { +if (i + 1 == this.thisContour) minCutoff = cutoff; +} else { +}} +if (this.contoursDiscrete != null) { +minCutoff = this.contoursDiscrete[0]; +}this.valueMin = this.contourValuesUsed[0]; +this.valueMax = (this.contourValuesUsed.length == 0 ? this.valueMin : this.contourValuesUsed[this.contourValuesUsed.length - 1]); +return true; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "intercept", +function(t, i, value){ +var iA = t.pts[i]; +var iB = t.pts[(i + 1) % 3]; +if (iA == 2147483647 || iB == 2147483647) return -1; +var key = (iA < iB ? iA + "_" + iB : iB + "_" + iA); +if (this.htPts.containsKey(key)) return this.htPts.get(key).intValue(); +var valueA = this.contourVertexes[iA].value; +var valueB = this.contourVertexes[iB].value; +var iPt = -1; +if (valueA != valueB) { +var f = (value - valueA) / (valueB - valueA); +if (f >= 0 && f <= 1) { +this.pointA.setT(this.contourVertexes[iA]); +this.pointB.setT(this.contourVertexes[iB]); +value = this.calcContourPoint(value, valueA, valueB, this.ptTemp); +if (!Float.isNaN(value)) { +iPt = this.addContourVertex(this.ptTemp, value); +if (iPt < 0) return -1; +this.contourVertexes[iPt].setValue(value); +} else { +}}}this.htPts.put(key, Integer.$valueOf(iPt)); +return iPt; +}, "J.jvxl.calc.MarchingSquares.Triangle,~N,~N"); +Clazz_defineMethod(c$, "checkContour", +function(t, i, value){ +if (this.thisContour > 0 && i + 1 != this.thisContour) return; +var ipt0 = this.intercept(t, 0, value); +var ipt1 = this.intercept(t, 1, value); +var ipt2 = this.intercept(t, 2, value); +var pts = t.pts; +var mode = 0; +if (ipt0 >= 0) { +mode += 1; +}if (ipt1 >= 0) { +mode += 2; +}if (ipt2 >= 0) { +mode += 4; +}switch (mode) { +case 3: +this.addTriangle(pts[0], ipt0, ipt1, 2 | (t.check & 1), i); +this.addTriangle(ipt0, pts[1], ipt1, 4 | (t.check & 3), i); +this.addTriangle(pts[0], ipt1, pts[2], (t.check & 6), i); +break; +case 5: +this.addTriangle(pts[0], ipt0, ipt2, 2 | (t.check & 5), i); +this.addTriangle(ipt0, pts[1], ipt2, 4 | (t.check & 1), i); +this.addTriangle(ipt2, pts[1], pts[2], (t.check & 6), i); +break; +case 6: +this.addTriangle(pts[0], pts[1], ipt2, (t.check & 5), i); +this.addTriangle(ipt2, pts[1], ipt1, 4 | (t.check & 2), i); +this.addTriangle(ipt2, ipt1, pts[2], 1 | (t.check & 6), i); +break; +default: +return; +} +t.isValid = false; +}, "J.jvxl.calc.MarchingSquares.Triangle,~N,~N"); +Clazz_defineMethod(c$, "getMinMax", +function(){ +return Clazz_newFloatArray(-1, [this.valueMin, this.valueMax]); +}); +Clazz_defineMethod(c$, "addAllTriangles", +function(){ +for (var i = 0; i < this.triangleCount; i++) if (this.triangles[i].isValid) { +var t = this.triangles[i]; +this.surfaceReader.addTriangleCheck(t.pts[0], t.pts[1], t.pts[2], t.check, t.contourIndex, false, -1); +} +}); +c$.$MarchingSquares$ContourVertex$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.value = 0; +Clazz_instantialize(this, arguments);}, J.jvxl.calc.MarchingSquares, "ContourVertex", JU.P3); +Clazz_makeConstructor(c$, +function(vertexXYZ){ +Clazz_superConstructor (this, J.jvxl.calc.MarchingSquares.ContourVertex, []); +this.setT(vertexXYZ); +}, "JU.P3"); +Clazz_defineMethod(c$, "setValue", +function(value){ +this.value = value; +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.value + " " + this.x + " " + this.y + " " + this.z; +}); +/*eoif4*/})(); +}; +c$.$MarchingSquares$Triangle$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.pts = null; +this.check = 0; +this.isValid = true; +this.contourIndex = 0; +Clazz_instantialize(this, arguments);}, J.jvxl.calc.MarchingSquares, "Triangle", null); +Clazz_makeConstructor(c$, +function(iA, iB, iC, check, contourIndex){ +this.pts = Clazz_newIntArray(-1, [iA, iB, iC]); +this.check = check; +this.contourIndex = contourIndex; +}, "~N,~N,~N,~N,~N"); +/*eoif4*/})(); +}; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shapesurface"); +Clazz_load(["J.shape.Mesh"], "J.shapesurface.IsosurfaceMesh", ["java.util.Hashtable", "JU.AU", "$.BS", "$.CU", "$.Lst", "$.M4", "$.P3", "$.P3i", "$.PT", "$.SB", "$.V3", "J.api.Interface", "J.jvxl.data.JvxlCoder", "$.JvxlData", "JS.T", "JU.C", "$.ColorEncoder", "$.Logger", "$.SimpleUnitCell", "JV.Viewer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.jvxlData = null; +this.vertexIncrement = 1; +this.firstRealVertex = -1; +this.dataType = 0; +this.hasGridPoints = false; +this.calculatedArea = null; +this.calculatedVolume = null; +this.info = null; +this.assocGridPointMap = null; +this.assocGridPointNormals = null; +this.mergeAssociatedNormalCount = 0; +this.centers = null; +this.contourValues = null; +this.contourColixes = null; +this.colorEncoder = null; +this.bsVdw = null; +this.colorPhased = false; +this.probeValues = null; +Clazz_instantialize(this, arguments);}, J.shapesurface, "IsosurfaceMesh", J.shape.Mesh); +Clazz_makeConstructor(c$, +function(vwr, thisID, colix, index){ +Clazz_superConstructor (this, J.shapesurface.IsosurfaceMesh, []); +this.mesh1(vwr, thisID, colix, index); +this.jvxlData = new J.jvxl.data.JvxlData(); +this.checkByteCount = 2; +this.jvxlData.version = JV.Viewer.getJmolVersion(); +}, "JV.Viewer,~S,~N,~N"); +Clazz_overrideMethod(c$, "getResolution", +function(){ +return 1 / this.jvxlData.pointsPerAngstrom; +}); +Clazz_defineMethod(c$, "clearType", +function(meshType, iAddGridPoints){ +this.clear(meshType); +this.jvxlData.clear(); +this.assocGridPointMap = null; +this.assocGridPointNormals = null; +this.bsVdw = null; +this.calculatedVolume = null; +this.calculatedArea = null; +this.centers = null; +this.colorEncoder = null; +this.colorPhased = false; +this.colorsExplicit = false; +this.firstRealVertex = -1; +this.hasGridPoints = iAddGridPoints; +this.isColorSolid = true; +this.mergeAssociatedNormalCount = 0; +this.nSets = 0; +this.pcs = null; +this.showPoints = iAddGridPoints; +this.surfaceSet = null; +this.vcs = null; +this.vertexColorMap = null; +this.vertexIncrement = 1; +this.vertexSets = null; +this.vvs = null; +}, "~S,~B"); +Clazz_defineMethod(c$, "allocVertexColixes", +function(){ +if (this.vcs == null) { +this.vcs = Clazz_newShortArray (this.vc, 0); +for (var i = this.vc; --i >= 0; ) this.vcs[i] = this.colix; + +}this.isColorSolid = false; +}); +Clazz_defineMethod(c$, "addVertexCopy", +function(vertex, value, assocVertex, associateNormals, asCopy){ +var vPt = this.addVCVal(vertex, value, asCopy); +switch (assocVertex) { +case -1: +if (this.firstRealVertex < 0) this.firstRealVertex = vPt; +break; +case -2: +this.hasGridPoints = true; +break; +case -3: +this.vertexIncrement = 3; +break; +default: +if (this.firstRealVertex < 0) this.firstRealVertex = vPt; +if (associateNormals) { +if (this.assocGridPointMap == null) this.assocGridPointMap = new java.util.Hashtable(); +this.assocGridPointMap.put(Integer.$valueOf(vPt), Integer.$valueOf(assocVertex + this.mergeAssociatedNormalCount)); +}} +return vPt; +}, "JU.T3,~N,~N,~B,~B"); +Clazz_overrideMethod(c$, "setTranslucent", +function(isTranslucent, iLevel){ +this.colix = JU.C.getColixTranslucent3(this.colix, isTranslucent, iLevel); +if (this.vcs != null) for (var i = this.vc; --i >= 0; ) this.vcs[i] = JU.C.getColixTranslucent3(this.vcs[i], isTranslucent, iLevel); + +}, "~B,~N"); +Clazz_defineMethod(c$, "setMerged", +function(TF){ +this.isMerged = TF; +this.mergePolygonCount0 = (TF ? this.pc : 0); +this.mergeVertexCount0 = (TF ? this.vc : 0); +if (TF) { +this.mergeAssociatedNormalCount += this.jvxlData.nPointsX * this.jvxlData.nPointsY * this.jvxlData.nPointsZ; +this.assocGridPointNormals = null; +}}, "~B"); +Clazz_overrideMethod(c$, "sumVertexNormals", +function(vertices, vectorSums){ +J.shape.Mesh.sumVertexNormals2(this, vertices, vectorSums); +if (this.assocGridPointMap != null && vectorSums.length > 0 && !this.isMerged) { +if (this.assocGridPointNormals == null) this.assocGridPointNormals = new java.util.Hashtable(); +for (var entry, $entry = this.assocGridPointMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var gridPoint = entry.getValue(); +if (!this.assocGridPointNormals.containsKey(gridPoint)) this.assocGridPointNormals.put(gridPoint, JU.V3.new3(0, 0, 0)); +this.assocGridPointNormals.get(gridPoint).add(vectorSums[entry.getKey().intValue()]); +} +for (var entry, $entry = this.assocGridPointMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) vectorSums[entry.getKey().intValue()] = this.assocGridPointNormals.get(entry.getValue()); + +}}, "~A,~A"); +Clazz_defineMethod(c$, "getCenters", +function(){ +if (this.centers != null) return this.centers; +this.centers = new Array(this.pc); +for (var i = 0; i < this.pc; i++) { +var p = this.pis[i]; +if (p == null) continue; +var pt = this.centers[i] = JU.P3.newP(this.vs[p[0]]); +pt.add(this.vs[p[1]]); +pt.add(this.vs[p[2]]); +pt.scale(0.33333334); +} +return this.centers; +}); +Clazz_defineMethod(c$, "getContours", +function(){ +var n = this.jvxlData.nContours; +if (n == 0 || this.pis == null) return null; +this.havePlanarContours = (this.jvxlData.jvxlPlane != null); +if (this.havePlanarContours) return null; +if (n < 0) n = -1 - n; +var vContours = this.jvxlData.vContours; +if (vContours != null) { +for (var i = 0; i < n; i++) { +if (vContours[i].size() > 6) return this.jvxlData.vContours; +J.jvxl.data.JvxlCoder.set3dContourVector(vContours[i], this.pis, this.vs); +} +return this.jvxlData.vContours; +}vContours = new Array(n); +for (var i = 0; i < n; i++) { +vContours[i] = new JU.Lst(); +} +if (this.jvxlData.contourValuesUsed == null) { +var dv = (this.jvxlData.valueMappedToBlue - this.jvxlData.valueMappedToRed) / (n + 1); +for (var i = 0; i < n; i++) { +var value = this.jvxlData.valueMappedToRed + (i + 1) * dv; +J.shapesurface.IsosurfaceMesh.get3dContour(this, vContours[i], value, this.jvxlData.contourColixes[i]); +} +JU.Logger.info(n + " contour lines; separation = " + dv); +} else { +for (var i = 0; i < n; i++) { +var value = this.jvxlData.contourValuesUsed[i]; +J.shapesurface.IsosurfaceMesh.get3dContour(this, vContours[i], value, this.jvxlData.contourColixes[i]); +} +}this.jvxlData.contourColixes = Clazz_newShortArray (n, 0); +this.jvxlData.contourValues = Clazz_newFloatArray (n, 0); +for (var i = 0; i < n; i++) { +this.jvxlData.contourValues[i] = (vContours[i].get(2)).floatValue(); +this.jvxlData.contourColixes[i] = (vContours[i].get(3))[0]; +} +return this.jvxlData.vContours = vContours; +}); +Clazz_defineMethod(c$, "getPmeshData", +function(isBinary){ +var mw = J.api.Interface.getInterface("J.shapesurface.PMeshWriter", this.vwr, "script"); +return mw.write(this, isBinary); +}, "~B"); +c$.get3dContour = Clazz_defineMethod(c$, "get3dContour", +function(m, v, value, colix){ +var bsContour = JU.BS.newN(m.pc); +var fData = new JU.SB(); +var color = JU.C.getArgb(colix); +J.shapesurface.IsosurfaceMesh.setContourVector(v, m.pc, bsContour, value, colix, color, fData); +for (var i = 0; i < m.pc; i++) if (m.setABC(i) != null) J.shapesurface.IsosurfaceMesh.addContourPoints(v, bsContour, i, fData, m.vs, m.vvs, m.iA, m.iB, m.iC, value); + +}, "J.shapesurface.IsosurfaceMesh,JU.Lst,~N,~N"); +c$.setContourVector = Clazz_defineMethod(c$, "setContourVector", +function(v, nPolygons, bsContour, value, colix, color, fData){ +v.add(0, Integer.$valueOf(nPolygons)); +v.add(1, bsContour); +v.add(2, Float.$valueOf(value)); +v.add(3, Clazz_newShortArray(-1, [colix])); +v.add(4, Clazz_newIntArray(-1, [color])); +v.add(5, fData); +}, "JU.Lst,~N,JU.BS,~N,~N,~N,JU.SB"); +c$.addContourPoints = Clazz_defineMethod(c$, "addContourPoints", +function(v, bsContour, i, fData, vertices, vertexValues, iA, iB, iC, value){ +var pt1 = null; +var pt2 = null; +var type = 0; +var f1 = J.shapesurface.IsosurfaceMesh.checkPt(vertexValues, iA, iB, value); +if (!Float.isNaN(f1)) { +pt1 = J.shapesurface.IsosurfaceMesh.getContourPoint(vertices, iA, iB, f1); +type |= 1; +}var f2 = (f1 == 1 ? NaN : J.shapesurface.IsosurfaceMesh.checkPt(vertexValues, iB, iC, value)); +if (!Float.isNaN(f2)) { +pt2 = J.shapesurface.IsosurfaceMesh.getContourPoint(vertices, iB, iC, f2); +if (type == 0) { +pt1 = pt2; +f1 = f2; +}type |= 2; +}switch (type) { +case 0: +return; +case 1: +if (f1 == 0) return; +case 2: +f2 = (f2 == 1 ? NaN : J.shapesurface.IsosurfaceMesh.checkPt(vertexValues, iC, iA, value)); +if (!Float.isNaN(f2)) { +pt2 = J.shapesurface.IsosurfaceMesh.getContourPoint(vertices, iC, iA, f2); +type |= 4; +}break; +} +switch (type) { +case 3: +case 5: +case 6: +break; +default: +return; +} +bsContour.set(i); +J.jvxl.data.JvxlCoder.appendContourTriangleIntersection(type, f1, f2, fData); +v.addLast(pt1); +v.addLast(pt2); +}, "JU.Lst,JU.BS,~N,JU.SB,~A,~A,~N,~N,~N,~N"); +c$.checkPt = Clazz_defineMethod(c$, "checkPt", +function(vertexValues, i, j, v){ +var v1; +var v2; +return (v == (v1 = vertexValues[i]) ? 0 : v == (v2 = vertexValues[j]) ? 1 : (v1 < v) == (v < v2) ? (v - v1) / (v2 - v1) : NaN); +}, "~A,~N,~N,~N"); +c$.getContourPoint = Clazz_defineMethod(c$, "getContourPoint", +function(vertices, i, j, f){ +var pt = new JU.P3(); +pt.sub2(vertices[j], vertices[i]); +pt.scaleAdd2(f, pt, vertices[i]); +return pt; +}, "~A,~N,~N,~N"); +Clazz_defineMethod(c$, "setDiscreteColixes", +function(values, colixes){ +if (values != null) this.jvxlData.contourValues = values; +if (values == null || values.length == 0) values = this.jvxlData.contourValues = this.jvxlData.contourValuesUsed; +if (colixes == null && this.jvxlData.contourColixes != null) { +colixes = this.jvxlData.contourColixes; +} else { +this.jvxlData.contourColixes = colixes; +this.jvxlData.contourColors = JU.C.getHexCodes(colixes); +}if (this.vs == null || this.vvs == null || values == null) return; +var n = values.length; +var vMax = values[n - 1]; +this.colorCommand = null; +var haveColixes = (colixes != null && colixes.length > 0); +this.isColorSolid = (haveColixes && this.jvxlData.jvxlPlane != null); +if (this.jvxlData.vContours != null) { +if (haveColixes) for (var i = 0; i < this.jvxlData.vContours.length; i++) { +var colix = colixes[i % colixes.length]; +(this.jvxlData.vContours[i].get(3))[0] = colix; +(this.jvxlData.vContours[i].get(4))[0] = JU.C.getArgb(colix); +} +return; +}var defaultColix = 0; +this.pcs = Clazz_newShortArray (this.pc, 0); +this.colorsExplicit = false; +for (var i = 0; i < this.pc; i++) { +var p = this.pis[i]; +if (p == null) continue; +this.pcs[i] = defaultColix; +var v = (this.vvs[p[0]] + this.vvs[p[1]] + this.vvs[p[2]]) / 3; +for (var j = n; --j >= 0; ) { +if (v >= values[j] && v < vMax) { +this.pcs[i] = (haveColixes ? colixes[j % colixes.length] : 0); +break; +}} +} +}, "~A,~A"); +Clazz_defineMethod(c$, "getContourList", +function(vwr){ +var ht = new java.util.Hashtable(); +ht.put("values", (this.jvxlData.contourValuesUsed == null ? this.jvxlData.contourValues : this.jvxlData.contourValuesUsed)); +var colors = new JU.Lst(); +if (this.jvxlData.contourColixes != null) { +for (var i = 0; i < this.jvxlData.contourColixes.length; i++) { +colors.addLast(JU.CU.colorPtFromInt(JU.C.getArgb(this.jvxlData.contourColixes[i]), null)); +} +ht.put("colors", colors); +}return ht; +}, "JV.Viewer"); +Clazz_defineMethod(c$, "deleteContours", +function(){ +this.jvxlData.contourValuesUsed = null; +this.jvxlData.contourValues = null; +this.jvxlData.contourColixes = null; +this.jvxlData.vContours = null; +}); +Clazz_defineMethod(c$, "setVertexColorMap", +function(){ +this.vertexColorMap = new java.util.Hashtable(); +var lastColix = -999; +var bs = null; +for (var i = this.vc; --i >= 0; ) { +var c = this.vcs[i]; +if (c != lastColix) { +var color = JU.C.getHexCode(lastColix = c); +bs = this.vertexColorMap.get(color); +if (bs == null) this.vertexColorMap.put(color, bs = new JU.BS()); +}bs.set(i); +} +}); +Clazz_defineMethod(c$, "setVertexColixesForAtoms", +function(vwr, colixes, atomMap, bs){ +this.jvxlData.vertexDataOnly = true; +this.jvxlData.vertexColors = Clazz_newIntArray (this.vc, 0); +this.jvxlData.nVertexColors = this.vc; +var atoms = vwr.ms.at; +var gdata = vwr.gdata; +for (var i = this.mergeVertexCount0; i < this.vc; i++) { +var iAtom = this.vertexSource[i]; +if (iAtom < 0 || !bs.get(iAtom)) continue; +this.jvxlData.vertexColors[i] = gdata.getColorArgbOrGray(this.vcs[i] = JU.C.copyColixTranslucency(this.colix, atoms[iAtom].colixAtom)); +var colix = (colixes == null ? 0 : colixes[atomMap[iAtom]]); +if (colix == 0) colix = atoms[iAtom].colixAtom; +this.vcs[i] = JU.C.copyColixTranslucency(this.colix, colix); +} +}, "JV.Viewer,~A,~A,JU.BS"); +Clazz_defineMethod(c$, "colorVertices", +function(colix, bs, isAtoms){ +if (this.vertexSource == null) return; +colix = JU.C.copyColixTranslucency(this.colix, colix); +var bsVertices = (isAtoms ? new JU.BS() : bs); +this.checkAllocColixes(); +if (isAtoms) for (var i = 0; i < this.vc; i++) { +var pt = this.vertexSource[i]; +if (pt >= 0 && bs.get(pt)) { +this.vcs[i] = colix; +if (bsVertices != null) bsVertices.set(i); +}} + else for (var i = 0; i < this.vc; i++) if (bsVertices.get(i)) this.vcs[i] = colix; + +if (!isAtoms) { +return; +}var color = JU.C.getHexCode(colix); +if (this.vertexColorMap == null) this.vertexColorMap = new java.util.Hashtable(); +J.shapesurface.IsosurfaceMesh.addColorToMap(this.vertexColorMap, color, bs); +}, "~N,JU.BS,~B"); +Clazz_defineMethod(c$, "checkAllocColixes", +function(){ +if (this.vcs == null || this.vertexColorMap == null && this.isColorSolid) this.allocVertexColixes(); +this.isColorSolid = false; +}); +c$.addColorToMap = Clazz_defineMethod(c$, "addColorToMap", +function(colorMap, color, bs){ +var bsMap = null; +for (var entry, $entry = colorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) if (entry.getKey() === color) { +bsMap = entry.getValue(); +bsMap.or(bs); +} else { +entry.getValue().andNot(bs); +} +if (bsMap == null) colorMap.put(color, bs); +}, "java.util.Map,~S,JU.BS"); +Clazz_defineMethod(c$, "setJvxlColorMap", +function(isAll){ +this.jvxlData.diameter = this.diameter; +this.jvxlData.color = JU.C.getHexCode(this.colix); +this.jvxlData.meshColor = (this.meshColix == 0 ? null : JU.C.getHexCode(this.meshColix)); +this.jvxlData.translucency = ((this.colix & 30720) == 30720 ? -1 : JU.C.getColixTranslucencyFractional(this.colix)); +this.jvxlData.rendering = this.getRendering().substring(1); +this.jvxlData.colorScheme = (this.colorEncoder == null ? null : this.colorEncoder.getColorScheme()); +if (this.jvxlData.vertexColors == null) this.jvxlData.nVertexColors = (this.vertexColorMap == null ? 0 : this.vertexColorMap.size()); +if (this.vertexColorMap == null || this.vertexSource == null || !isAll) return; +if (this.jvxlData.vertexColorMap == null) this.jvxlData.vertexColorMap = new java.util.Hashtable(); +for (var entry, $entry = this.vertexColorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var bsMap = entry.getValue(); +if (bsMap.isEmpty()) continue; +var color = entry.getKey(); +var bs = new JU.BS(); +for (var i = 0; i < this.vc; i++) if (bsMap.get(this.vertexSource[i])) bs.set(i); + +J.shapesurface.IsosurfaceMesh.addColorToMap(this.jvxlData.vertexColorMap, color, bs); +} +this.jvxlData.nVertexColors = this.jvxlData.vertexColorMap.size(); +if (this.jvxlData.vertexColorMap.size() == 0) this.jvxlData.vertexColorMap = null; +}, "~B"); +Clazz_defineMethod(c$, "setColorCommand", +function(){ +if (this.colorEncoder == null || (this.colorCommand = this.colorEncoder.getColorScheme()) == null) return; +if (this.colorCommand.equals("inherit")) { +this.colorCommand = "#inherit;"; +return; +}this.colorCommand = "color $" + JU.PT.esc(this.thisID) + JU.PT.esc(this.colorCommand) + " range " + (this.jvxlData.isColorReversed ? this.jvxlData.valueMappedToBlue + " " + this.jvxlData.valueMappedToRed : this.jvxlData.valueMappedToRed + " " + this.jvxlData.valueMappedToBlue); +}); +Clazz_defineMethod(c$, "setColorsFromJvxlData", +function(colorRgb){ +this.diameter = this.jvxlData.diameter; +if (colorRgb == -1) { +} else if (colorRgb != -2147483648 && colorRgb != 2147483647) { +this.colix = JU.C.getColix(colorRgb); +} else if (this.jvxlData.color != null) { +this.colix = JU.C.getColixS(this.jvxlData.color); +}if (this.colix == 0) this.colix = 5; +this.colix = JU.C.getColixTranslucent3(this.colix, this.jvxlData.translucency != 0, this.jvxlData.translucency); +var translucencyLevel = (this.jvxlData.translucency == 0 ? NaN : this.jvxlData.translucency); +if (this.jvxlData.meshColor != null) this.meshColix = JU.C.getColixS(this.jvxlData.meshColor); +this.setJvxlDataRendering(); +this.isColorSolid = !this.jvxlData.isBicolorMap && this.jvxlData.vertexColors == null && this.jvxlData.vertexColorMap == null; +if (this.colorEncoder == null) return false; +if (this.jvxlData.vertexColorMap == null) { +if (this.jvxlData.colorScheme != null) { +var colorScheme = this.jvxlData.colorScheme; +var isTranslucent = colorScheme.startsWith("translucent "); +if (isTranslucent) { +colorScheme = colorScheme.substring(12); +translucencyLevel = NaN; +}this.colorEncoder.setColorScheme(colorScheme, isTranslucent); +this.remapColors(null, null, translucencyLevel); +}} else { +if (this.jvxlData.baseColor != null) { +for (var i = this.vc; --i >= 0; ) this.vcs[i] = this.colix; + +}for (var entry, $entry = this.jvxlData.vertexColorMap.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var bsMap = entry.getValue(); +var colix = JU.C.copyColixTranslucency(this.colix, JU.C.getColixS(entry.getKey())); +for (var i = bsMap.nextSetBit(0); i >= 0; i = bsMap.nextSetBit(i + 1)) this.vcs[i] = colix; + +} +}return true; +}, "~N"); +Clazz_defineMethod(c$, "setJvxlDataRendering", +function(){ +if (this.jvxlData.rendering != null) { +var tokens = JU.PT.getTokens(this.jvxlData.rendering); +for (var i = 0; i < tokens.length; i++) this.setTokenProperty(JS.T.getTokFromName(tokens[i]), true); + +}}); +Clazz_defineMethod(c$, "remapColors", +function(vwr, ce, translucentLevel){ +if (ce == null) ce = this.colorEncoder; +if (ce == null) ce = this.colorEncoder = new JU.ColorEncoder(null, vwr); +this.colorEncoder = ce; +this.setColorCommand(); +if (Float.isNaN(translucentLevel)) { +translucentLevel = JU.C.getColixTranslucencyLevel(this.colix); +} else { +this.colix = JU.C.getColixTranslucent3(this.colix, true, translucentLevel); +}var min = ce.lo; +var max = ce.hi; +var inherit = (this.vertexSource != null && ce.currentPalette == 15); +this.vertexColorMap = null; +this.pcs = null; +this.colorsExplicit = false; +this.jvxlData.baseColor = null; +this.jvxlData.vertexCount = this.vc; +if (this.vvs == null || this.jvxlData.vertexCount == 0) return; +if (this.vcs == null || this.vcs.length != this.vc) this.allocVertexColixes(); +if (inherit) { +this.jvxlData.vertexDataOnly = true; +this.jvxlData.vertexColors = Clazz_newIntArray (this.vc, 0); +this.jvxlData.nVertexColors = this.vc; +var atoms = vwr.ms.at; +var gdata = vwr.gdata; +for (var i = this.mergeVertexCount0; i < this.vc; i++) { +var pt = this.vertexSource[i]; +if (pt >= 0 && pt < atoms.length) this.jvxlData.vertexColors[i] = gdata.getColorArgbOrGray(this.vcs[i] = JU.C.copyColixTranslucency(this.colix, atoms[pt].colixAtom)); +} +return; +}this.jvxlData.vertexColors = null; +this.jvxlData.vertexColorMap = null; +if (this.jvxlData.isBicolorMap) { +for (var i = this.mergeVertexCount0; i < this.vc; i++) this.vcs[i] = JU.C.copyColixTranslucency(this.colix, this.vvs[i] < 0 ? this.jvxlData.minColorIndex : this.jvxlData.maxColorIndex); + +return; +}this.jvxlData.isColorReversed = ce.isReversed; +if (max != 3.4028235E38) { +this.jvxlData.valueMappedToRed = min; +this.jvxlData.valueMappedToBlue = max; +}ce.setRange(this.jvxlData.valueMappedToRed, this.jvxlData.valueMappedToBlue, this.jvxlData.isColorReversed); +var isTranslucent = JU.C.isColixTranslucent(this.colix); +if (ce.isTranslucent) { +if (!isTranslucent) this.colix = JU.C.getColixTranslucent3(this.colix, true, 0.5); +isTranslucent = false; +}this.vcs = JU.AU.ensureLengthShort(this.vcs, this.vc); +for (var i = this.vc; --i >= this.mergeVertexCount0; ) this.vcs[i] = ce.getColorIndex(this.vvs[i]); + +this.setTranslucent(isTranslucent, translucentLevel); +this.colorEncoder = ce; +var contours = this.getContours(); +if (contours != null) { +for (var i = contours.length; --i >= 0; ) { +var value = (contours[i].get(2)).floatValue(); +var colix = (contours[i].get(3)); +colix[0] = ce.getColorIndex(value); +var color = (contours[i].get(4)); +color[0] = JU.C.getArgb(colix[0]); +} +}if (this.contourValues != null) { +this.contourColixes = Clazz_newShortArray (this.contourValues.length, 0); +for (var i = 0; i < this.contourValues.length; i++) this.contourColixes[i] = ce.getColorIndex(this.contourValues[i]); + +this.setDiscreteColixes(null, null); +}this.jvxlData.isJvxlPrecisionColor = true; +J.jvxl.data.JvxlCoder.jvxlCreateColorData(this.jvxlData, this.vvs); +this.setColorCommand(); +this.isColorSolid = false; +}, "JV.Viewer,JU.ColorEncoder,~N"); +Clazz_defineMethod(c$, "reinitializeLightingAndColor", +function(vwr){ +this.initialize(this.lighting, null, null); +if (this.colorEncoder != null || this.jvxlData.isBicolorMap) { +this.vcs = null; +this.remapColors(vwr, null, NaN); +}}, "JV.Viewer"); +Clazz_overrideMethod(c$, "getBoundingBox", +function(){ +return this.jvxlData.boundingBox; +}); +Clazz_overrideMethod(c$, "setBoundingBox", +function(pts){ +this.jvxlData.boundingBox = pts; +}, "~A"); +Clazz_defineMethod(c$, "merge", +function(m){ +var nV = this.vc + (m == null ? 0 : m.vc); +if (this.pis == null) this.pis = Clazz_newIntArray (0, 0, 0); +if (m != null && m.pis == null) m.pis = Clazz_newIntArray (0, 0, 0); +var nP = (this.bsSlabDisplay == null || this.pc == 0 ? this.pc : this.bsSlabDisplay.cardinality()) + (m == null || m.pc == 0 ? 0 : m.bsSlabDisplay == null ? m.pc : m.bsSlabDisplay.cardinality()); +if (this.vs == null) this.vs = new Array(0); +this.vs = JU.AU.ensureLength(this.vs, nV); +this.vvs = JU.AU.ensureLengthA(this.vvs, nV); +var haveSources = (this.vertexSource != null && (m == null || m.vertexSource != null)); +this.vertexSource = JU.AU.ensureLengthI(this.vertexSource, nV); +var newPolygons = JU.AU.newInt2(nP); +var ipt = J.shapesurface.IsosurfaceMesh.mergePolygons(this, 0, 0, newPolygons); +if (m != null) { +ipt = J.shapesurface.IsosurfaceMesh.mergePolygons(m, ipt, this.vc, newPolygons); +for (var i = 0; i < m.vc; i++, this.vc++) { +this.vs[this.vc] = m.vs[i]; +this.vvs[this.vc] = m.vvs[i]; +if (haveSources) this.vertexSource[this.vc] = m.vertexSource[i]; +} +}this.pc = this.polygonCount0 = nP; +this.vc = this.vertexCount0 = nV; +if (nP > 0) this.resetSlab(); +this.pis = newPolygons; +}, "J.jvxl.data.MeshData"); +c$.mergePolygons = Clazz_defineMethod(c$, "mergePolygons", +function(m, ipt, vertexCount, newPolygons){ +var p; +for (var i = 0; i < m.pc; i++) { +if ((p = m.pis[i]) == null || m.bsSlabDisplay != null && !m.bsSlabDisplay.get(i)) continue; +newPolygons[ipt++] = m.pis[i]; +if (vertexCount > 0) for (var j = 0; j < 3; j++) p[j] += vertexCount; + +} +return ipt; +}, "JU.MeshSurface,~N,~N,~A"); +Clazz_overrideMethod(c$, "getUnitCell", +function(){ +return (this.unitCell != null || (this.unitCell = this.vwr.ms.am[this.modelIndex].biosymmetry) != null || (this.unitCell = this.vwr.ms.getUnitCell(this.modelIndex)) != null || this.oabc != null && (this.unitCell = this.vwr.getSymTemp().getUnitCell(this.oabc, true, null)) != null ? this.unitCell : null); +}); +Clazz_defineMethod(c$, "fixLattice", +function(){ +if (this.getUnitCell() == null) return; +var minXYZ = new JU.P3i(); +var maxXYZ = JU.P3i.new3(Clazz_floatToInt(this.lattice.x), Clazz_floatToInt(this.lattice.y), Clazz_floatToInt(this.lattice.z)); +this.jvxlData.fixedLattice = this.lattice; +this.lattice = null; +JU.SimpleUnitCell.setMinMaxLatticeParameters(Clazz_floatToInt(this.unitCell.getUnitCellInfoType(6)), minXYZ, maxXYZ, 0); +var nCells = (maxXYZ.x - minXYZ.x) * (maxXYZ.y - minXYZ.y) * (maxXYZ.z - minXYZ.z); +var latticeOffset = new JU.P3(); +var vc0 = this.vc; +var vcNew = nCells * this.vc; +this.vs = JU.AU.arrayCopyPt(this.vs, vcNew); +this.vvs = (this.vvs == null ? null : JU.AU.ensureLengthA(this.vvs, vcNew)); +var pc0 = this.pc; +var pcNew = nCells * this.pc; +this.pis = JU.AU.arrayCopyII(this.pis, pcNew); +var off = 0; +this.normixes = JU.AU.arrayCopyShort(this.normixes, vcNew); +for (var tx = minXYZ.x; tx < maxXYZ.x; tx++) for (var ty = minXYZ.y; ty < maxXYZ.y; ty++) for (var tz = minXYZ.z; tz < maxXYZ.z; tz++) { +if (tx == 0 && ty == 0 && tz == 0) continue; +latticeOffset.set(tx, ty, tz); +this.unitCell.toCartesian(latticeOffset, false); +for (var i = 0; i < vc0; i++) { +this.normixes[this.vc] = this.normixes[i]; +var v = JU.P3.newP(this.vs[i]); +v.add(latticeOffset); +this.addVCVal(v, this.vvs[i], false); +} +off += vc0; +for (var i = 0; i < pc0; i++) { +var p = JU.AU.arrayCopyI(this.pis[i], -1); +p[0] += off; +p[1] += off; +p[2] += off; +this.addPolygon(p, null); +} +} + + +var xyzMin = new JU.P3(); +var xyzMax = new JU.P3(); +this.setBox(xyzMin, xyzMax); +this.jvxlData.boundingBox = Clazz_newArray(-1, [xyzMin, xyzMax]); +}); +Clazz_overrideMethod(c$, "getMinDistance2ForVertexGrouping", +function(){ +if (this.jvxlData.boundingBox != null && this.jvxlData.boundingBox[0] != null) { +var d2 = this.jvxlData.boundingBox[1].distanceSquared(this.jvxlData.boundingBox[0]); +if (d2 < 5) return 1e-10; +}return 1e-8; +}); +Clazz_overrideMethod(c$, "getVisibleVertexBitSet", +function(){ +var bs = this.getVisibleVBS(); +if (this.jvxlData.thisSet != null) for (var i = 0; i < this.vc; i++) if (!this.jvxlData.thisSet.get(this.vertexSets[i])) bs.clear(i); + +return bs; +}); +Clazz_defineMethod(c$, "updateCoordinates", +function(m, bs){ +var doUpdate = (bs == null || this.isModelConnected); +if (!doUpdate) for (var i = 0; i < this.connectedAtoms.length; i++) if (this.connectedAtoms[i] >= 0 && bs.get(this.connectedAtoms[i])) { +doUpdate = true; +break; +} +if (!doUpdate) return; +if (this.isModelConnected) { +this.mat4 = this.vwr.ms.am[this.modelIndex].mat4; +} else { +if (this.mat4 == null) this.mat4 = JU.M4.newM4(null); +this.mat4.mul2(m, this.mat4); +}this.recalcAltVertices = true; +}, "JU.M4,JU.BS"); +Clazz_defineMethod(c$, "getDataMinMax", +function(){ +var min = 3.4028235E38; +var max = -3.4028235E38; +for (var i = this.vvs.length; --i >= 0; ) { +var v = this.vvs[i]; +if (v < min) min = v; +if (v > max) max = v; +} +return Clazz_newFloatArray(-1, [min, max]); +}); +Clazz_defineMethod(c$, "getDataRange", +function(){ +return (this.jvxlData.jvxlPlane != null && this.colorEncoder == null ? null : Clazz_newFloatArray(-1, [this.jvxlData.mappedDataMin, this.jvxlData.mappedDataMax, (this.jvxlData.isColorReversed ? this.jvxlData.valueMappedToBlue : this.jvxlData.valueMappedToRed), (this.jvxlData.isColorReversed ? this.jvxlData.valueMappedToRed : this.jvxlData.valueMappedToBlue)])); +}); +Clazz_defineMethod(c$, "getInfo", +function(isAll){ +var info = Clazz_superCall(this, J.shapesurface.IsosurfaceMesh, "getInfo", [isAll]); +if (isAll) { +var bs = new JU.BS(); +var valid = this.getValidVertices(bs); +if (valid != null) { +info.put("allVertices", info.get("vertices")); +info.put("vertices", valid); +var values = info.get("vertexValues"); +if (values != null) { +var v = this.getValidValues(bs); +info.put("allValues", values); +info.put("vertexValues", v); +}}}return info; +}, "~B"); +Clazz_defineMethod(c$, "getValidValues", +function(bs){ +if (bs == null) this.getInvalidBS(bs = new JU.BS()); +var n = this.vc - bs.cardinality(); +var v = Clazz_newFloatArray (n, 0); +for (var pt = 0, i = bs.nextClearBit(0); i >= 0 && i < this.vc; i = bs.nextClearBit(i + 1)) v[pt++] = this.vvs[i]; + +return v; +}, "JU.BS"); +Clazz_defineMethod(c$, "getValidVertices", +function(bs){ +var allowNull = (bs != null); +if (bs == null) bs = new JU.BS(); +this.getInvalidBS(bs); +var n = this.vc - bs.cardinality(); +if (n == this.vc && allowNull) { +return null; +}var pa = new Array(n); +for (var pt = 0, i = bs.nextClearBit(0); i >= 0 && pt < n; i = bs.nextClearBit(i + 1)) { +pa[pt++] = this.vs[i]; +} +return pa; +}, "JU.BS"); +Clazz_defineMethod(c$, "getInvalidBS", +function(bs){ +var excluded = this.jvxlData.jvxlExcluded; +var invalid = excluded[1]; +var thisSet = this.jvxlData.thisSet; +if (invalid != null) bs.or(invalid); +if (thisSet != null) { +for (var i = this.vc; --i >= 0; ) { +if (!thisSet.get(this.vertexSets[i])) bs.set(i); +} +}}, "JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(["J.jvxl.readers.SurfaceReader"], "J.jvxl.readers.VolumeDataReader", ["JU.AU", "$.SB", "J.jvxl.data.JvxlCoder", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.dataType = 0; +this.precalculateVoxelData = false; +this.allowMapData = false; +this.point = null; +this.ptsPerAngstrom = 0; +this.maxGrid = 0; +this.useOriginStepsPoints = false; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "VolumeDataReader", J.jvxl.readers.SurfaceReader); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.jvxl.readers.VolumeDataReader, []); +}); +Clazz_overrideMethod(c$, "init", +function(sg){ +this.initVDR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz_defineMethod(c$, "initVDR", +function(sg){ +this.initSR(sg); +this.useOriginStepsPoints = (this.params.origin != null && this.params.points != null && this.params.steps != null); +this.dataType = this.params.dataType; +this.precalculateVoxelData = true; +this.allowMapData = true; +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz_defineMethod(c$, "setup", +function(isMapData){ +this.jvxlFileHeaderBuffer = new JU.SB().append("volume data read from file\n\n"); +J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(this.volumeData, this.jvxlFileHeaderBuffer); +}, "~B"); +Clazz_overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.setup(isMapData); +this.initializeVolumetricData(); +return true; +}, "~B"); +Clazz_overrideMethod(c$, "readVolumeData", +function(isMapData){ +try { +this.readSurfaceData(isMapData); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +{ +}return false; +} else { +throw e; +} +} +return true; +}, "~B"); +Clazz_defineMethod(c$, "readVoxelDataIndividually", +function(isMapData){ +if (isMapData && !this.allowMapData) return; +if (!isMapData || this.volumeData.sr != null) { +this.volumeData.setVoxelDataAsArray(this.voxelData = null); +return; +}this.newVoxelDataCube(); +for (var x = 0; x < this.nPointsX; ++x) { +var plane = JU.AU.newFloat2(this.nPointsY); +this.voxelData[x] = plane; +var ptyz = 0; +for (var y = 0; y < this.nPointsY; ++y) { +var strip = plane[y] = Clazz_newFloatArray (this.nPointsZ, 0); +for (var z = 0; z < this.nPointsZ; ++z, ++ptyz) { +strip[z] = this.getValue(x, y, z, ptyz); +} +} +} +}, "~B"); +Clazz_defineMethod(c$, "setVolumeData", +function(){ +}); +Clazz_defineMethod(c$, "setVolumeDataParams", +function(){ +if (this.params.volumeData != null) { +this.setVolumeDataV(this.params.volumeData); +return true; +}if (!this.useOriginStepsPoints) { +return false; +}this.volumetricOrigin.setT(this.params.origin); +this.volumetricVectors[0].set(this.params.steps.x, 0, 0); +this.volumetricVectors[1].set(0, this.params.steps.y, 0); +this.volumetricVectors[2].set(0, 0, this.params.steps.z); +this.voxelCounts[0] = Clazz_floatToInt(this.params.points.x); +this.voxelCounts[1] = Clazz_floatToInt(this.params.points.y); +this.voxelCounts[2] = Clazz_floatToInt(this.params.points.z); +if (this.voxelCounts[0] < 1 || this.voxelCounts[1] < 1 || this.voxelCounts[2] < 1) return false; +this.showGridInfo(); +return true; +}); +Clazz_defineMethod(c$, "showGridInfo", +function(){ +JU.Logger.info("grid origin = " + this.params.origin); +JU.Logger.info("grid steps = " + this.params.steps); +JU.Logger.info("grid points = " + this.params.points); +this.ptTemp.x = this.params.steps.x * this.params.points.x; +this.ptTemp.y = this.params.steps.y * this.params.points.y; +this.ptTemp.z = this.params.steps.z * this.params.points.z; +JU.Logger.info("grid lengths = " + this.ptTemp); +this.ptTemp.add(this.params.origin); +JU.Logger.info("grid max xyz = " + this.ptTemp); +}); +Clazz_defineMethod(c$, "setVoxelRange", +function(index, min, max, ptsPerAngstrom, gridMax, minPointsPerAngstrom){ +var nGrid; +var d; +if (min - max >= -1.0E-4) { +min = -10; +max = 10; +}var range = max - min; +var resolution = this.params.resolution; +if (resolution != 3.4028235E38) { +ptsPerAngstrom = resolution; +minPointsPerAngstrom = 0; +}nGrid = Clazz_doubleToInt(Math.floor(range * ptsPerAngstrom)) + 1; +if (nGrid > gridMax) { +if ((this.dataType & 256) > 0) { +if (resolution == 3.4028235E38) { +if (!this.isQuiet) JU.Logger.info("Maximum number of voxels for index=" + index + " exceeded (" + nGrid + ") -- set to " + gridMax); +nGrid = gridMax; +} else { +if (!this.isQuiet) JU.Logger.info("Warning -- high number of grid points: " + nGrid); +}} else if (resolution == 3.4028235E38) { +nGrid = gridMax; +}}if (nGrid == 1) nGrid = 2; +ptsPerAngstrom = (nGrid - 1) / range; +if (ptsPerAngstrom < minPointsPerAngstrom) { +ptsPerAngstrom = minPointsPerAngstrom; +nGrid = Clazz_doubleToInt(Math.floor(ptsPerAngstrom * range + 1)); +ptsPerAngstrom = (nGrid - 1) / range; +}d = this.volumeData.volumetricVectorLengths[index] = 1 / ptsPerAngstrom; +this.voxelCounts[index] = nGrid; +if (this.params.sbOut != null) this.params.sbOut.append("isosurface resolution for axis " + (index + 1) + " set to " + ptsPerAngstrom + " points/Angstrom; " + this.voxelCounts[index] + " voxels\n"); +switch (index) { +case 0: +this.volumetricVectors[0].set(d, 0, 0); +this.volumetricOrigin.x = min; +break; +case 1: +this.volumetricVectors[1].set(0, d, 0); +this.volumetricOrigin.y = min; +break; +case 2: +this.volumetricVectors[2].set(0, 0, d); +this.volumetricOrigin.z = min; +if (this.isEccentric) this.eccentricityMatrix.rotate(this.volumetricOrigin); +if (this.center != null && !Float.isNaN(this.center.x)) this.volumetricOrigin.add(this.center); +if (this.params.sbOut != null) this.params.sbOut.append((this.voxelCounts[0] * this.voxelCounts[1] * this.voxelCounts[2]) + " voxels total\n"); +} +if (this.isEccentric) this.eccentricityMatrix.rotate(this.volumetricVectors[index]); +return this.voxelCounts[index]; +}, "~N,~N,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "readSurfaceData", +function(isMapData){ +this.readSurfaceDataVDR(isMapData); +}, "~B"); +Clazz_defineMethod(c$, "readSurfaceDataVDR", +function(isMapData){ +if (this.isProgressive && !isMapData) { +this.nDataPoints = this.volumeData.setVoxelCounts(this.nPointsX, this.nPointsY, this.nPointsZ); +this.voxelData = null; +return; +}if (this.precalculateVoxelData) this.generateCube(); + else this.readVoxelDataIndividually(isMapData); +}, "~B"); +Clazz_defineMethod(c$, "generateCube", +function(){ +JU.Logger.info("data type: user volumeData"); +JU.Logger.info("voxel grid origin:" + this.volumetricOrigin); +for (var i = 0; i < 3; ++i) JU.Logger.info("voxel grid vector:" + this.volumetricVectors[i]); + +JU.Logger.info("Read " + this.nPointsX + " x " + this.nPointsY + " x " + this.nPointsZ + " data points"); +}); +Clazz_overrideMethod(c$, "closeReader", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(["J.jvxl.readers.VolumeDataReader", "JU.BS", "$.P3", "$.P3i", "J.atomdata.AtomData"], "J.jvxl.readers.AtomDataReader", ["java.util.Date", "JU.AU", "$.SB", "$.V3", "J.atomdata.RadiusData", "J.c.VDW", "J.jvxl.data.JvxlCoder", "JU.BSUtil", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.maxDistance = 0; +this.contactPair = null; +this.fileName = null; +this.fileDotModel = null; +this.modelIndex = 0; +this.atomData = null; +this.atomXyzTruncated = null; +this.atomRadius = null; +this.atomProp = null; +this.atomNo = null; +this.atomIndex = null; +this.myIndex = null; +this.ac = 0; +this.myAtomCount = 0; +this.nearbyAtomCount = 0; +this.firstNearbyAtom = 0; +this.bsMySelected = null; +this.bsMyIgnored = null; +this.bsNearby = null; +this.doAddHydrogens = false; +this.havePlane = false; +this.doUseIterator = false; +this.theProperty = 0; +this.haveOneProperty = false; +this.minPtsPerAng = 0; +this.sr = 0; +this.rs = null; +this.rs2 = null; +this.maxRS = 0; +this.thisPlane = null; +this.thisAtomSet = null; +this.thisX = 0; +this.margin = 0; +this.vl0 = 0; +this.vl1 = 0; +this.vl2 = 0; +this.bsSurfaceVoxels = null; +this.validSpheres = null; +this.noFaceSpheres = null; +this.voxelSource = null; +this.ptY0 = null; +this.ptZ0 = null; +this.pt0 = null; +this.pt1 = null; +this.ptV = null; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "AtomDataReader", J.jvxl.readers.VolumeDataReader); +Clazz_prepareFields (c$, function(){ +this.atomData = new J.atomdata.AtomData(); +this.bsMySelected = new JU.BS(); +this.bsMyIgnored = new JU.BS(); +this.ptY0 = new JU.P3(); +this.ptZ0 = new JU.P3(); +this.pt0 = new JU.P3i(); +this.pt1 = new JU.P3i(); +this.ptV = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.jvxl.readers.AtomDataReader, []); +}); +Clazz_defineMethod(c$, "initADR", +function(sg){ +this.initVDR(sg); +this.precalculateVoxelData = true; +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz_overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +}, "~B"); +Clazz_defineMethod(c$, "setup2", +function(){ +this.contactPair = this.params.contactPair; +this.doAddHydrogens = (this.sg.atomDataServer != null && this.params.addHydrogens); +this.modelIndex = this.params.modelIndex; +if (this.params.bsIgnore != null) this.bsMyIgnored = this.params.bsIgnore; +if (this.params.volumeData != null) { +this.setVolumeDataV(this.params.volumeData); +this.setBBox(this.volumeData.volumetricOrigin, 0); +this.ptV.setT(this.volumeData.volumetricOrigin); +for (var i = 0; i < 3; i++) this.ptV.scaleAdd2(this.volumeData.voxelCounts[i] - 1, this.volumeData.volumetricVectors[i], this.ptV); + +this.setBBox(this.ptV, 0); +}this.havePlane = (this.params.thePlane != null); +if (this.havePlane) this.volumeData.setPlaneParameters(this.params.thePlane); +}); +Clazz_defineMethod(c$, "markPlaneVoxels", +function(p, r){ +for (var i = 0, pt = this.thisX * this.yzCount, pt1 = pt + this.yzCount; pt < pt1; pt++, i++) { +this.volumeData.getPoint(pt, this.ptV); +this.thisPlane[i] = this.ptV.distance(p) - r; +} +}, "JU.P3,~N"); +Clazz_defineMethod(c$, "setVolumeForPlane", +function(){ +if (this.useOriginStepsPoints) { +this.xyzMin = JU.P3.newP(this.params.origin); +this.xyzMax = JU.P3.newP(this.params.origin); +this.xyzMax.add3((this.params.points.x - 1) * this.params.steps.x, (this.params.points.y - 1) * this.params.steps.y, (this.params.points.z - 1) * this.params.steps.z); +} else if (this.params.boundingBox == null) { +this.getAtoms(this.params.bsSelected, false, true, false, false, false, false, this.params.mep_marginAngstroms, this.params.modelInvRotation); +if (this.xyzMin == null) { +this.xyzMin = JU.P3.new3(-10, -10, -10); +this.xyzMax = JU.P3.new3(10, 10, 10); +}} else { +this.xyzMin = JU.P3.newP(this.params.boundingBox[0]); +this.xyzMax = JU.P3.newP(this.params.boundingBox[1]); +}this.setRanges(this.params.plane_ptsPerAngstrom, this.params.plane_gridMax, 0); +}); +Clazz_defineMethod(c$, "getAtoms", +function(bsSelected, doAddHydrogens, getRadii, getMolecules, getAllModels, addNearbyAtoms, getAtomMinMax, marginAtoms, modelInvRotation){ +if (addNearbyAtoms) getRadii = true; +if (getRadii) { +if (this.params.atomRadiusData == null) this.params.atomRadiusData = new J.atomdata.RadiusData(null, 1, J.atomdata.RadiusData.EnumType.FACTOR, J.c.VDW.AUTO); +this.atomData.radiusData = this.params.atomRadiusData; +this.atomData.radiusData.valueExtended = this.params.solventExtendedAtomRadius; +if (doAddHydrogens) this.atomData.radiusData.vdwType = J.c.VDW.NOJMOL; +}this.atomData.modelIndex = this.modelIndex; +this.atomData.bsSelected = bsSelected; +this.atomData.bsIgnored = this.bsMyIgnored; +this.sg.fillAtomData(this.atomData, 1 | (getAllModels ? 16 : 0) | (getMolecules ? 4 : 0) | (getRadii ? 2 : 0)); +if (this.doUseIterator) this.atomData.bsSelected = null; +this.ac = this.atomData.ac; +this.modelIndex = this.atomData.firstModelIndex; +if (modelInvRotation != null) this.atomData.transformXYZ(modelInvRotation, bsSelected); +var needRadius = false; +for (var i = 0; i < this.ac; i++) { +if ((bsSelected == null || bsSelected.get(i)) && (!this.bsMyIgnored.get(i))) { +if (this.havePlane && Math.abs(this.volumeData.distancePointToPlane(this.atomData.xyz[i])) > 2 * (this.atomData.atomRadius[i] = this.getWorkingRadius(i, marginAtoms))) continue; +this.bsMySelected.set(i); +needRadius = !this.havePlane; +}if (getRadii && (addNearbyAtoms || needRadius)) this.atomData.atomRadius[i] = this.getWorkingRadius(i, marginAtoms); +} +var rH = (getRadii && doAddHydrogens ? this.getWorkingRadius(-1, marginAtoms) : 0); +this.myAtomCount = JU.BSUtil.cardinalityOf(this.bsMySelected); +var atomSet = JU.BSUtil.copy(this.bsMySelected); +var nH = 0; +this.atomProp = null; +this.theProperty = 3.4028235E38; +this.haveOneProperty = false; +var props = this.params.theProperty; +if (this.myAtomCount > 0) { +var hAtoms = null; +if (doAddHydrogens) { +this.atomData.bsSelected = atomSet; +this.sg.atomDataServer.fillAtomData(this.atomData, 8); +hAtoms = new Array(nH = this.atomData.hydrogenAtomCount); +for (var i = 0; i < this.atomData.hAtoms.length; i++) if (this.atomData.hAtoms[i] != null) for (var j = this.atomData.hAtoms[i].length; --j >= 0; ) hAtoms[--nH] = this.atomData.hAtoms[i][j]; + + +nH = hAtoms.length; +JU.Logger.info(nH + " attached hydrogens added"); +}var n = nH + this.myAtomCount; +if (getRadii) this.atomRadius = Clazz_newFloatArray (n, 0); +this.atomXyzTruncated = new Array(n); +if (this.params.theProperty != null) this.atomProp = Clazz_newFloatArray (n, 0); +this.atomNo = Clazz_newIntArray (n, 0); +this.atomIndex = Clazz_newIntArray (n, 0); +this.myIndex = Clazz_newIntArray (this.ac, 0); +for (var i = 0; i < nH; i++) { +if (getRadii) this.atomRadius[i] = rH; +this.atomXyzTruncated[i] = hAtoms[i]; +this.atomNo[i] = -1; +if (this.atomProp != null) this.addAtomProp(i, NaN); +} +this.myAtomCount = nH; +for (var i = atomSet.nextSetBit(0); i >= 0; i = atomSet.nextSetBit(i + 1)) { +if (this.atomProp != null) this.addAtomProp(this.myAtomCount, (props != null && i < props.length ? props[i] : NaN)); +this.atomXyzTruncated[this.myAtomCount] = this.atomData.xyz[i]; +this.atomNo[this.myAtomCount] = this.atomData.atomicNumber[i]; +this.atomIndex[this.myAtomCount] = i; +this.myIndex[i] = this.myAtomCount; +if (getRadii) this.atomRadius[this.myAtomCount] = this.atomData.atomRadius[i]; +this.myAtomCount++; +} +}this.firstNearbyAtom = this.myAtomCount; +if (!this.isQuiet) JU.Logger.info(this.myAtomCount + " atoms will be used in the surface calculation"); +if (this.myAtomCount == 0) { +this.setBBox(JU.P3.new3(10, 10, 10), 0); +this.setBBox(JU.P3.new3(-10, -10, -10), 0); +}for (var i = 0; i < this.myAtomCount; i++) this.setBBox(this.atomXyzTruncated[i], getRadii ? this.atomRadius[i] + 0.5 : 0); + +if (!Float.isNaN(this.params.scale)) { +var v = JU.V3.newVsub(this.xyzMax, this.xyzMin); +v.scale(0.5); +this.xyzMin.add(v); +v.scale(this.params.scale); +this.xyzMax.add2(this.xyzMin, v); +this.xyzMin.sub(v); +}if (!addNearbyAtoms || this.myAtomCount == 0) return; +var pt = new JU.P3(); +this.bsNearby = new JU.BS(); +for (var i = 0; i < this.ac; i++) { +if (atomSet.get(i) || this.bsMyIgnored.get(i)) continue; +var rA = this.atomData.atomRadius[i]; +if (this.params.thePlane != null && Math.abs(this.volumeData.distancePointToPlane(this.atomData.xyz[i])) > 2 * rA) continue; +if (this.params.theProperty != null) rA += this.maxDistance; +pt = this.atomData.xyz[i]; +if (pt.x + rA > this.xyzMin.x && pt.x - rA < this.xyzMax.x && pt.y + rA > this.xyzMin.y && pt.y - rA < this.xyzMax.y && pt.z + rA > this.xyzMin.z && pt.z - rA < this.xyzMax.z) { +this.bsNearby.set(i); +this.nearbyAtomCount++; +}} +var nAtoms = this.myAtomCount; +if (this.nearbyAtomCount != 0) { +nAtoms += this.nearbyAtomCount; +this.atomRadius = JU.AU.arrayCopyF(this.atomRadius, nAtoms); +this.atomXyzTruncated = JU.AU.arrayCopyObject(this.atomXyzTruncated, nAtoms); +if (this.atomIndex != null) this.atomIndex = JU.AU.arrayCopyI(this.atomIndex, nAtoms); +if (props != null) this.atomProp = JU.AU.arrayCopyF(this.atomProp, nAtoms); +for (var i = this.bsNearby.nextSetBit(0); i >= 0; i = this.bsNearby.nextSetBit(i + 1)) { +if (props != null) this.addAtomProp(this.myAtomCount, props[i]); +this.myIndex[i] = this.myAtomCount; +this.atomIndex[this.myAtomCount] = i; +this.atomXyzTruncated[this.myAtomCount] = this.atomData.xyz[i]; +this.atomRadius[this.myAtomCount++] = this.atomData.atomRadius[i]; +} +}if (getRadii) this.setRadii(); +this.haveOneProperty = (!Float.isNaN(this.theProperty)); +}, "JU.BS,~B,~B,~B,~B,~B,~B,~N,JU.M4"); +Clazz_defineMethod(c$, "setRadii", +function(){ +if (this.rs != null) return; +this.maxRS = 0; +this.rs = Clazz_newFloatArray (this.myAtomCount, 0); +this.rs2 = Clazz_newFloatArray (this.myAtomCount, 0); +for (var i = 0; i < this.myAtomCount; i++) { +var r = this.rs[i] = this.atomRadius[i] + this.sr; +if (r > this.maxRS) this.maxRS = r; +this.rs2[i] = this.rs[i] * this.rs[i]; +} +}); +Clazz_defineMethod(c$, "addAtomProp", +function(i, f){ +this.atomProp[i] = f; +if (!Float.isNaN(this.theProperty)) if (f != this.theProperty) this.theProperty = (this.theProperty == 3.4028235E38 ? f : NaN); +}, "~N,~N"); +Clazz_defineMethod(c$, "getWorkingRadius", +function(i, marginAtoms){ +var r = (i < 0 ? this.atomData.hAtomRadius : this.atomData.atomRadius[i]); +return (Float.isNaN(marginAtoms) ? Math.max(r, 0.1) : r + marginAtoms); +}, "~N,~N"); +Clazz_defineMethod(c$, "setHeader", +function(calcType, line2){ +this.jvxlFileHeaderBuffer = new JU.SB(); +if (this.atomData.programInfo != null) this.jvxlFileHeaderBuffer.append("#created by ").append(this.atomData.programInfo).append(" on ").append("" + new java.util.Date()).append("\n"); +this.jvxlFileHeaderBuffer.append(calcType).append("\n").append(line2).append("\n"); +}, "~S,~S"); +Clazz_defineMethod(c$, "setRanges", +function(ptsPerAngstrom, maxGrid, minPtsPerAng){ +if (this.xyzMin == null) return; +this.ptsPerAngstrom = ptsPerAngstrom; +this.maxGrid = maxGrid; +this.minPtsPerAng = minPtsPerAng; +this.setVolumeData(); +J.jvxl.data.JvxlCoder.jvxlCreateHeader(this.volumeData, this.jvxlFileHeaderBuffer); +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "setVolumeData", +function(){ +this.setVolumeDataADR(); +}); +Clazz_defineMethod(c$, "setVolumeDataADR", +function(){ +if (!this.setVolumeDataParams()) { +this.setVoxelRange(0, this.xyzMin.x, this.xyzMax.x, this.ptsPerAngstrom, this.maxGrid, this.minPtsPerAng); +this.setVoxelRange(1, this.xyzMin.y, this.xyzMax.y, this.ptsPerAngstrom, this.maxGrid, this.minPtsPerAng); +this.setVoxelRange(2, this.xyzMin.z, this.xyzMax.z, this.ptsPerAngstrom, this.maxGrid, this.minPtsPerAng); +}}); +Clazz_defineMethod(c$, "setVertexSource", +function(){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +if (this.params.vertexSource != null) { +this.params.vertexSource = JU.AU.arrayCopyI(this.params.vertexSource, this.meshData.vc); +for (var i = 0; i < this.meshData.vc; i++) this.params.vertexSource[i] = Math.abs(this.params.vertexSource[i]) - 1; + +}}); +Clazz_defineMethod(c$, "resetPlane", +function(value){ +for (var i = 0; i < this.yzCount; i++) this.thisPlane[i] = value; + +}, "~N"); +Clazz_defineMethod(c$, "resetVoxelData", +function(value){ +for (var x = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) this.voxelData[x][y][z] = value; + + + +}, "~N"); +Clazz_defineMethod(c$, "getVoxel", +function(i, j, k, ipt){ +return (this.isProgressive ? this.thisPlane[ipt % this.yzCount] : this.voxelData[i][j][k]); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "unsetVoxelData", +function(){ +this.unsetVoxelData2(); +}); +Clazz_defineMethod(c$, "unsetVoxelData2", +function(){ +if (this.isProgressive) for (var i = 0; i < this.yzCount; i++) { +if (this.thisPlane[i] == 3.4028235E38) this.thisPlane[i] = NaN; +} + else for (var x = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) if (this.voxelData[x][y][z] == 3.4028235E38) this.voxelData[x][y][z] = NaN; + + + +}); +Clazz_defineMethod(c$, "setGridLimitsForAtom", +function(ptA, rA, pt0, pt1){ +rA += this.margin; +this.volumeData.xyzToVoxelPt(ptA.x, ptA.y, ptA.z, pt0); +var x = Clazz_doubleToInt(Math.floor(rA / this.volumeData.volumetricVectorLengths[0])); +var y = Clazz_doubleToInt(Math.floor(rA / this.volumeData.volumetricVectorLengths[1])); +var z = Clazz_doubleToInt(Math.floor(rA / this.volumeData.volumetricVectorLengths[2])); +pt1.set(pt0.x + x, pt0.y + y, pt0.z + z); +pt0.set(pt0.x - x, pt0.y - y, pt0.z - z); +pt0.x = Math.max(pt0.x - 1, 0); +pt0.y = Math.max(pt0.y - 1, 0); +pt0.z = Math.max(pt0.z - 1, 0); +pt1.x = Math.min(pt1.x + 1, this.nPointsX); +pt1.y = Math.min(pt1.y + 1, this.nPointsY); +pt1.z = Math.min(pt1.z + 1, this.nPointsZ); +}, "JU.P3,~N,JU.P3i,JU.P3i"); +Clazz_defineMethod(c$, "getAtomMinMax", +function(bs, bsAtomMinMax){ +for (var i = 0; i < this.nPointsX; i++) bsAtomMinMax[i] = new JU.BS(); + +for (var iAtom = this.myAtomCount; --iAtom >= 0; ) { +if (bs != null && !bs.get(iAtom)) continue; +this.setGridLimitsForAtom(this.atomXyzTruncated[iAtom], this.atomRadius[iAtom], this.pt0, this.pt1); +for (var i = this.pt0.x; i < this.pt1.x; i++) bsAtomMinMax[i].set(iAtom); + +} +}, "JU.BS,~A"); +Clazz_defineMethod(c$, "markSphereVoxels", +function(r0, distance){ +var isWithin = (distance != 3.4028235E38 && this.point != null); +var v0 = this.volumetricVectors[0]; +var v1 = this.volumetricVectors[1]; +var v2 = this.volumetricVectors[2]; +for (var iAtom = this.thisAtomSet.nextSetBit(0); iAtom >= 0; iAtom = this.thisAtomSet.nextSetBit(iAtom + 1)) { +if (!this.havePlane && this.validSpheres != null && !this.validSpheres.get(iAtom)) continue; +var isSurface = (this.noFaceSpheres != null && this.noFaceSpheres.get(iAtom)); +var isNearby = (iAtom >= this.firstNearbyAtom); +var ptA = this.atomXyzTruncated[iAtom]; +var rA = this.atomRadius[iAtom]; +if (isWithin && ptA.distance(this.point) > distance + rA + 0.5) continue; +var rA0 = rA + r0; +this.setGridLimitsForAtom(ptA, rA0, this.pt0, this.pt1); +if (this.isProgressive) { +this.pt0.x = this.thisX; +this.pt1.x = this.thisX + 1; +}this.volumeData.voxelPtToXYZ(this.pt0.x, this.pt0.y, this.pt0.z, this.ptV); +for (var i = this.pt0.x; i < this.pt1.x; i++, this.ptV.add2(v0, this.ptY0)) { +this.ptY0.setT(this.ptV); +for (var j = this.pt0.y; j < this.pt1.y; j++, this.ptV.add2(v1, this.ptZ0)) { +this.ptZ0.setT(this.ptV); +for (var k = this.pt0.z; k < this.pt1.z; k++, this.ptV.add(v2)) { +var value = this.ptV.distance(ptA) - rA; +var ipt = this.volumeData.getPointIndex(i, j, k); +if ((r0 == 0 || value <= rA0) && value < this.getVoxel(i, j, k, ipt)) { +if (isNearby || isWithin && this.ptV.distance(this.point) > distance) value = NaN; +this.setVoxel(i, j, k, ipt, value); +if (!Float.isNaN(value)) { +if (this.voxelSource != null) this.voxelSource[ipt] = iAtom + 1; +if (value < 0 && isSurface) this.bsSurfaceVoxels.set(ipt); +}}} +} +} +} +}, "~N,~N"); +Clazz_defineMethod(c$, "setVoxel", +function(i, j, k, ipt, value){ +if (this.isProgressive) this.thisPlane[ipt % this.yzCount] = value; + else this.voxelData[i][j][k] = value; +}, "~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(["JU.P3", "J.jvxl.readers.AtomDataReader", "JU.P4", "$.V3"], "J.jvxl.readers.IsoSolventReader", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.Measure", "J.jvxl.data.MeshData", "JU.BSUtil", "$.Logger", "$.MeshSurface", "$.TempArray"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.cavityRadius = 0; +this.envelopeRadius = 0; +this.dots = null; +this.doCalculateTroughs = false; +this.isCavity = false; +this.isPocket = false; +this.iter = null; +this.bsSurfacePoints = null; +this.bsSurfaceDone = null; +this.bsLocale = null; +this.htEdges = null; +this.vEdges = null; +this.vFaces = null; +this.ptS1 = null; +this.ptS2 = null; +this.vTemp = null; +this.plane = null; +this.ptTemp2 = null; +this.vTemp2 = null; +this.p = null; +this.bsAtomMinMax = null; +this.isSurfacePoint = false; +this.iAtomSurface = 0; +this.nTest = 0; +if (!Clazz_isClassDefined("J.jvxl.readers.IsoSolventReader.Edge")) { +J.jvxl.readers.IsoSolventReader.$IsoSolventReader$Edge$ (); +} +if (!Clazz_isClassDefined("J.jvxl.readers.IsoSolventReader.Face")) { +J.jvxl.readers.IsoSolventReader.$IsoSolventReader$Face$ (); +} +this.rAS = 0; +this.rBS = 0; +this.rAS2 = 0; +this.rBS2 = 0; +this.dAB = 0; +this.dAB2 = 0; +this.ecosASB2 = 0; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "IsoSolventReader", J.jvxl.readers.AtomDataReader); +Clazz_prepareFields (c$, function(){ +this.ptS1 = new JU.P3(); +this.ptS2 = new JU.P3(); +this.vTemp = new JU.V3(); +this.plane = new JU.P4(); +this.ptTemp2 = new JU.P3(); +this.vTemp2 = new JU.V3(); +this.p = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.jvxl.readers.IsoSolventReader, []); +}); +Clazz_overrideMethod(c$, "init", +function(sg){ +this.initADR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz_overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.setup(isMapData); +this.initializeVolumetricData(); +this.volumeData.setUnitVectors(); +this.vl0 = this.volumeData.volumetricVectorLengths[0]; +this.vl1 = this.volumeData.volumetricVectorLengths[1]; +this.vl2 = this.volumeData.volumetricVectorLengths[2]; +if (this.isProgressive) { +this.volumeData.getYzCount(); +this.bsAtomMinMax = new Array(this.nPointsX); +this.getAtomMinMax(null, this.bsAtomMinMax); +this.voxelSource = Clazz_newIntArray (this.volumeData.nPoints, 0); +}return true; +}, "~B"); +Clazz_overrideMethod(c$, "setup", +function(isMapData){ +this.setup2(); +if (this.contactPair == null) { +this.cavityRadius = this.params.cavityRadius; +this.envelopeRadius = this.params.envelopeRadius; +this.sr = this.params.solventRadius; +this.point = this.params.point; +this.isCavity = (this.params.isCavity && this.meshDataServer != null); +this.isPocket = (this.params.pocket != null && this.meshDataServer != null); +this.doCalculateTroughs = (!isMapData && this.sg.atomDataServer != null && !this.isCavity && this.sr > 0 && (this.dataType == 1195 || this.dataType == 1203)); +this.doUseIterator = this.doCalculateTroughs; +this.getAtoms(this.params.bsSelected, this.doAddHydrogens, true, false, false, true, false, NaN, null); +if (this.isCavity || this.isPocket) this.dots = this.meshDataServer.calculateGeodesicSurface(this.bsMySelected, this.envelopeRadius); +this.setHeader("solvent/molecular surface", this.params.calculationType); +if (this.havePlane || !isMapData) { +var r = Math.max(this.params.solventExtendedAtomRadius, this.params.solventRadius); +var minPtsPerAng = (r >= 1 ? 1.5 / r : 0); +if (minPtsPerAng > 0) System.out.println("IsoSolventReader.minPtsPerAng=" + minPtsPerAng); +this.setRanges(this.params.solvent_ptsPerAngstrom, this.params.solvent_gridMax, minPtsPerAng); +this.volumeData.getYzCount(); +this.margin = this.volumeData.maxGrid * 2.0; +}if (this.bsNearby != null) this.bsMySelected.or(this.bsNearby); +} else if (!isMapData) { +this.setVolumeData(); +}if (!this.doCalculateTroughs) { +if (isMapData) { +this.precalculateVoxelData = false; +this.volumeData.sr = this; +} else if (!this.isCavity) { +this.isProgressive = this.isXLowToHigh = true; +}}if (this.thisAtomSet == null) this.thisAtomSet = JU.BSUtil.setAll(this.myAtomCount); +}, "~B"); +Clazz_overrideMethod(c$, "generateCube", +function(){ +if (this.isCavity && this.params.theProperty != null) return; +if (this.isCavity && this.dataType != 1207 && this.dataType != 1208) { +this.params.vertexSource = null; +this.newVoxelDataCube(); +this.resetVoxelData(3.4028235E38); +this.markSphereVoxels(this.cavityRadius, this.params.distance); +this.generateSolventCavity(); +this.resetVoxelData(3.4028235E38); +this.markSphereVoxels(0, NaN); +} else { +this.voxelSource = Clazz_newIntArray (this.volumeData.nPoints, 0); +this.generateSolventCube(); +}this.unsetVoxelData(); +var info = this.params.slabInfo; +if (info != null) for (var i = 0; i < info.size(); i++) if ((info.get(i)[2]).booleanValue() && Clazz_instanceOf(info.get(i)[0],"JU.P4")) { +this.volumeData.capData(info.get(i)[0], this.params.cutoff); +info.removeItemAt(i--); +} +}); +Clazz_overrideMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA0, vB0, fReturn, ptReturn){ +var vA = this.marchingCubes.getLinearOffset(x, y, z, vA0); +var vB = this.marchingCubes.getLinearOffset(x, y, z, vB0); +this.isSurfacePoint = (this.bsSurfaceVoxels != null && (this.bsSurfaceVoxels.get(vA) || this.bsSurfaceVoxels.get(vB))); +if (this.voxelSource != null) { +var vs = Math.abs(Float.isNaN(valueB) || valueA < valueB ? this.voxelSource[vA] : this.voxelSource[vB]); +if (vs > 0) this.iAtomSurface = this.atomIndex[vs - 1]; +}if (J.jvxl.readers.IsoSolventReader.testLinear || this.voxelSource == null || this.voxelSource[vA] == 0 || this.voxelSource[vA] != this.voxelSource[vB]) return this.getSPF(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +var fraction = fReturn[0] = JU.MeshSurface.getSphericalInterpolationFraction((this.voxelSource[vA] < 0 ? this.sr : this.atomRadius[this.voxelSource[vA] - 1]), valueA, valueB, edgeVector.length()); +ptReturn.scaleAdd2(fraction, edgeVector, pointA); +var diff = valueB - valueA; +return valueA + fraction * diff; +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz_overrideMethod(c$, "addVertexCopy", +function(vertexXYZ, value, assocVertex, asCopy){ +var i = this.addVC(vertexXYZ, value, assocVertex, asCopy); +if (i < 0) return i; +if (this.isSurfacePoint) this.bsSurfacePoints.set(i); +if (this.params.vertexSource != null) this.params.vertexSource[i] = this.iAtomSurface; +return i; +}, "JU.T3,~N,~N,~B"); +Clazz_overrideMethod(c$, "selectPocket", +function(doExclude){ +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +var v = this.meshData.vs; +var nVertices = this.meshData.vc; +var vv = this.meshData.vvs; +var nDots = this.dots.length; +for (var i = 0; i < nVertices; i++) { +for (var j = 0; j < nDots; j++) { +if (this.dots[j].distance(v[i]) < this.envelopeRadius) { +vv[i] = NaN; +continue; +}} +} +this.meshData.getSurfaceSet(); +var nSets = this.meshData.nSets; +var pocketSet = JU.BS.newN(nSets); +var ss; +for (var i = 0; i < nSets; i++) if ((ss = this.meshData.surfaceSet[i]) != null) for (var j = ss.nextSetBit(0); j >= 0; j = ss.nextSetBit(j + 1)) if (Float.isNaN(this.meshData.vvs[j])) { +pocketSet.set(i); +break; +} + +for (var i = 0; i < nSets; i++) if (this.meshData.surfaceSet[i] != null && pocketSet.get(i) == doExclude) this.meshData.invalidateSurfaceSet(i); + +this.updateSurfaceData(); +if (!doExclude) this.meshData.surfaceSet = null; +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 3, null); +this.meshData = new J.jvxl.data.MeshData(); +}}, "~B"); +Clazz_overrideMethod(c$, "postProcessVertices", +function(){ +this.setVertexSource(); +if (this.doCalculateTroughs && this.bsSurfacePoints != null) { +var bsAll = new JU.BS(); +var bsSurfaces = this.meshData.getSurfaceSet(); +var bsSources = null; +var volumes = (this.isPocket ? null : J.jvxl.data.MeshData.calculateVolumeOrArea(this.meshData, null, false, false)); +var minVolume = (this.isCavity ? (1.5 * 3.141592653589793 * Math.pow(this.sr, 3)) : 0); +var maxVolume = 0; +var maxIsNegative = false; +if (volumes != null && !this.isCavity) for (var i = 0; i < this.meshData.nSets; i++) { +var v = volumes[i]; +if (Math.abs(v) > maxVolume) { +maxVolume = Math.abs(v); +maxIsNegative = (v < 0); +}} +var factor = (maxIsNegative ? -1 : 1); +for (var i = 0; i < this.meshData.nSets; i++) { +var bss = bsSurfaces[i]; +if (bss.intersects(this.bsSurfacePoints)) { +if (volumes == null || volumes[i] * factor > minVolume) if (this.params.vertexSource != null) { +var bs = new JU.BS(); +if (bsSources == null) bsSources = new Array(bsSurfaces.length); +for (var j = bss.nextSetBit(0); j >= 0; j = bss.nextSetBit(j + 1)) { +var iatom = this.params.vertexSource[j]; +if (iatom < 0) continue; +if (bsAll.get(iatom)) { +this.meshData.invalidateSurfaceSet(i); +break; +}bs.set(iatom); +} +bsAll.or(bs); +continue; +}}this.meshData.invalidateSurfaceSet(i); +} +this.updateSurfaceData(); +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 3, null); +this.meshData = new J.jvxl.data.MeshData(); +}}if (this.params.thePlane != null && this.params.slabInfo == null) this.params.addSlabInfo(JU.TempArray.getSlabWithinRange(-100, 0)); +}); +Clazz_defineMethod(c$, "generateSolventCavity", +function(){ +var bs = JU.BS.newN(this.nPointsX * this.nPointsY * this.nPointsZ); +var i = 0; +var nDots = this.dots.length; +var n = 0; +var d; +var r2 = this.envelopeRadius; +for (var x = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) { +out : for (var z = 0; z < this.nPointsZ; ++z, ++i) if ((d = this.voxelData[x][y][z]) < 3.4028235E38 && d >= this.cavityRadius) { +this.volumeData.voxelPtToXYZ(x, y, z, this.ptV); +for (var j = 0; j < nDots; j++) { +if (this.dots[j].distance(this.ptV) < r2) continue out; +} +bs.set(i); +n++; +} +} + +JU.Logger.info("cavities include " + n + " voxel points"); +this.atomRadius = Clazz_newFloatArray (n, 0); +this.atomXyzTruncated = new Array(n); +for (var x = 0, ipt = 0, apt = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) if (bs.get(ipt++)) { +this.volumeData.voxelPtToXYZ(x, y, z, (this.atomXyzTruncated[apt] = new JU.P3())); +this.atomRadius[apt++] = this.voxelData[x][y][z]; +} + + +this.myAtomCount = this.firstNearbyAtom = n; +this.thisAtomSet = JU.BSUtil.setAll(this.myAtomCount); +this.rs = null; +this.setRadii(); +}); +Clazz_defineMethod(c$, "generateSolventCube", +function(){ +if (this.dataType == 1207) return; +this.params.vertexSource = Clazz_newIntArray (this.volumeData.nPoints, 0); +this.bsSurfaceDone = new JU.BS(); +this.bsSurfaceVoxels = new JU.BS(); +this.bsSurfacePoints = new JU.BS(); +if (this.doCalculateTroughs) { +this.iter = this.sg.atomDataServer.getSelectedAtomIterator(this.bsMySelected, true, false, false); +this.vEdges = new JU.Lst(); +this.bsLocale = new Array(this.myAtomCount); +this.htEdges = new java.util.Hashtable(); +this.getEdges(); +JU.Logger.info(this.vEdges.size() + " edges"); +this.vFaces = new JU.Lst(); +this.getFaces(); +JU.Logger.info(this.vFaces.size() + " faces"); +this.bsLocale = null; +this.htEdges = null; +this.iter.release(); +this.iter = null; +this.newVoxelDataCube(); +this.resetVoxelData(3.4028235E38); +this.markFaceVoxels(true); +this.markToroidVoxels(); +this.validSpheres.or(this.noFaceSpheres); +this.vEdges = null; +this.markFaceVoxels(false); +this.vFaces = null; +} else { +this.newVoxelDataCube(); +this.resetVoxelData(3.4028235E38); +}this.markSphereVoxels(0, this.doCalculateTroughs ? 3.4028235E38 : this.params.distance); +this.noFaceSpheres = null; +this.validSpheres = null; +}); +Clazz_defineMethod(c$, "getEdges", +function(){ +for (var iatomA = 0; iatomA < this.myAtomCount; iatomA++) this.bsLocale[iatomA] = new JU.BS(); + +for (var iatomA = 0; iatomA < this.myAtomCount; iatomA++) { +var ptA = this.atomXyzTruncated[iatomA]; +var rA = this.rs[iatomA]; +this.sg.atomDataServer.setIteratorForAtom(this.iter, this.atomIndex[iatomA], rA + this.maxRS); +while (this.iter.hasNext()) { +var iB = this.iter.next(); +var iatomB = this.myIndex[iB]; +if (iatomA >= this.firstNearbyAtom && iatomB >= this.firstNearbyAtom) continue; +var ptB = this.atomXyzTruncated[iatomB]; +var rB = this.rs[iatomB]; +var dAB = ptA.distance(ptB); +if (dAB >= rA + rB) continue; +var edge = Clazz_innerTypeInstance(J.jvxl.readers.IsoSolventReader.Edge, this, null, this, iatomA, iatomB, dAB); +this.vEdges.addLast(edge); +this.bsLocale[iatomA].set(iatomB); +this.bsLocale[iatomB].set(iatomA); +this.htEdges.put(edge.toString(), edge); +} +} +}); +Clazz_defineMethod(c$, "findEdge", +function(i, j){ +return this.htEdges.get(i < j ? i + "_" + j : j + "_" + i); +}, "~N,~N"); +Clazz_defineMethod(c$, "getFaces", +function(){ +var bs = new JU.BS(); +this.params.surfaceAtoms = this.validSpheres = new JU.BS(); +this.noFaceSpheres = JU.BSUtil.setAll(this.myAtomCount); +for (var i = this.vEdges.size(); --i >= 0; ) { +var edge = this.vEdges.get(i); +var ia = edge.ia; +var ib = edge.ib; +bs.clearAll(); +bs.or(this.bsLocale[ia]); +bs.and(this.bsLocale[ib]); +for (var ic = bs.nextSetBit(ib + 1); ic >= 0; ic = bs.nextSetBit(ic + 1)) { +if (this.getSolventPoints(edge, ia, ib, ic)) { +var f; +var isOK = false; +if ((f = this.validateFace(ia, ib, ic, edge, this.ptS1)) != null) { +this.vFaces.addLast(f); +isOK = true; +}if ((f = this.validateFace(ia, ib, ic, edge, this.ptS2)) != null) { +this.vFaces.addLast(f); +isOK = true; +}if (isOK) { +this.noFaceSpheres.clear(ia); +this.noFaceSpheres.clear(ib); +this.noFaceSpheres.clear(ic); +}}} +} +}); +Clazz_defineMethod(c$, "validateFace", +function(ia, ib, ic, edge, ptS){ +this.sg.atomDataServer.setIteratorForPoint(this.iter, this.modelIndex, ptS, this.maxRS); +var isValid = true; +while (this.iter.hasNext()) { +var iia = this.iter.next(); +var iatom = this.myIndex[iia]; +if (iatom == ia || iatom == ib || iatom == ic) continue; +var d = this.atomData.atoms[iia].distance(ptS); +if (d < this.atomData.atomRadius[iia] + this.sr) { +isValid = false; +break; +}} +var bc = this.findEdge(ib, ic); +var ca = this.findEdge(ia, ic); +var f = (isValid ? Clazz_innerTypeInstance(J.jvxl.readers.IsoSolventReader.Face, this, null, ia, ib, ic, ptS) : null); +edge.addFace(f); +bc.addFace(f); +ca.addFace(f); +if (!isValid) return null; +this.validSpheres.set(ia); +this.validSpheres.set(ib); +this.validSpheres.set(ic); +return f; +}, "~N,~N,~N,J.jvxl.readers.IsoSolventReader.Edge,JU.P3"); +Clazz_defineMethod(c$, "markFaceVoxels", +function(firstPass){ +var bsThisPass = new JU.BS(); +var v0 = this.volumetricVectors[0]; +var v1 = this.volumetricVectors[1]; +var v2 = this.volumetricVectors[2]; +for (var fi = this.vFaces.size(); --fi >= 0; ) { +var f = this.vFaces.get(fi); +var ptA = this.atomXyzTruncated[f.ia]; +var ptB = this.atomXyzTruncated[f.ib]; +var ptC = this.atomXyzTruncated[f.ic]; +var ptS = f.pS; +this.setGridLimitsForAtom(ptS, this.sr, this.pt0, this.pt1); +this.volumeData.voxelPtToXYZ(this.pt0.x, this.pt0.y, this.pt0.z, this.ptV); +for (var i = this.pt0.x; i < this.pt1.x; i++, this.ptV.add2(v0, this.ptY0)) { +this.ptY0.setT(this.ptV); +for (var j = this.pt0.y; j < this.pt1.y; j++, this.ptV.add2(v1, this.ptZ0)) { +this.ptZ0.setT(this.ptV); +for (var k = this.pt0.z; k < this.pt1.z; k++, this.ptV.add(v2)) { +var value = this.sr - this.ptV.distance(ptS); +var v = this.voxelData[i][j][k]; +var ipt = this.volumeData.getPointIndex(i, j, k); +if (firstPass && value > 0) this.bsSurfaceDone.set(ipt); +if (JU.Measure.isInTetrahedron(this.ptV, ptA, ptB, ptC, ptS, this.plane, this.vTemp, this.vTemp2, false)) { +if (!firstPass ? !this.bsSurfaceDone.get(ipt) && value < 0 && value > -this.volumeData.maxGrid * 1.8 && (value > v) == bsThisPass.get(ipt) : (value > 0 && (v < 0 || v == 3.4028235E38 || (value > v) == bsThisPass.get(ipt)))) { +bsThisPass.set(ipt); +this.setVoxel(i, j, k, ipt, value); +if (this.voxelSource != null) this.voxelSource[ipt] = -1 - f.ia; +if (value > 0) { +this.bsSurfaceVoxels.set(ipt); +}}}} +} +} +} +}, "~B"); +Clazz_defineMethod(c$, "markToroidVoxels", +function(){ +var v0 = this.volumetricVectors[0]; +var v1 = this.volumetricVectors[1]; +var v2 = this.volumetricVectors[2]; +for (var ei = this.vEdges.size(); --ei >= 0; ) { +var edge = this.vEdges.get(ei); +if (!edge.isValid()) continue; +var ia = edge.ia; +var ib = edge.ib; +var ptA = this.atomXyzTruncated[ia]; +var ptB = this.atomXyzTruncated[ib]; +this.rAS = this.rs[ia]; +this.rBS = this.rs[ib]; +this.rAS2 = this.rs2[ia]; +this.rBS2 = this.rs2[ib]; +this.dAB = edge.d; +this.dAB2 = edge.d2; +this.ecosASB2 = edge.cosASB2; +this.setGridLimitsForAtom(edge, edge.maxr, this.pt0, this.pt1); +this.volumeData.voxelPtToXYZ(this.pt0.x, this.pt0.y, this.pt0.z, this.ptV); +for (var i = this.pt0.x; i < this.pt1.x; i++, this.ptV.add2(v0, this.ptY0)) { +this.ptY0.setT(this.ptV); +for (var j = this.pt0.y; j < this.pt1.y; j++, this.ptV.add2(v1, this.ptZ0)) { +this.ptZ0.setT(this.ptV); +for (var k = this.pt0.z; k < this.pt1.z; k++, this.ptV.add(v2)) { +var dVS = this.checkSpecialVoxel(ptA, ptB, this.ptV); +if (Float.isNaN(dVS)) continue; +var value = this.sr - dVS; +if (value < this.voxelData[i][j][k]) { +var ipt = this.volumeData.getPointIndex(i, j, k); +this.setVoxel(i, j, k, ipt, value); +if (this.voxelSource != null) this.voxelSource[ipt] = -1 - ia; +}} +} +} +} +}); +Clazz_overrideMethod(c$, "unsetVoxelData", +function(){ +if (!this.havePlane) { +this.unsetVoxelData2(); +return; +}if (this.isProgressive) for (var i = 0; i < this.yzCount; i++) { +if (this.thisPlane[i] < 0.001) { +} else { +this.thisPlane[i] = 0.001; +}} + else for (var x = 0; x < this.nPointsX; ++x) for (var y = 0; y < this.nPointsY; ++y) for (var z = 0; z < this.nPointsZ; ++z) if (this.voxelData[x][y][z] < 0.001) { +} else { +this.voxelData[x][y][z] = 0.001; +} + + +}); +Clazz_defineMethod(c$, "getSolventPoints", +function(edge, ia, ib, ic){ +var rAS = this.rs[ia]; +var v = edge.v; +var cosAngleBAS = (edge.d2 + this.rs2[ia] - this.rs2[ib]) / (2 * edge.d * rAS); +var angleBAS = Math.acos(cosAngleBAS); +this.p.scaleAdd2(cosAngleBAS * rAS, v, this.atomXyzTruncated[ia]); +JU.Measure.getPlaneThroughPoint(this.p, v, this.plane); +var dPS = (Math.sin(angleBAS) * rAS); +var ptC = this.atomXyzTruncated[ic]; +var rCS = this.rs[ic]; +var dCT = JU.Measure.distanceToPlane(this.plane, ptC); +if (Math.abs(dCT) >= rCS * 0.9) return false; +this.ptTemp.scaleAdd2(-dCT, v, ptC); +var dpT = this.p.distance(this.ptTemp); +var dsp2 = dPS * dPS; +var dST2 = this.rs2[ic] - dCT * dCT; +var cosTheta = (dsp2 + dpT * dpT - dST2) / (2 * dPS * dpT); +if (Math.abs(cosTheta) >= 0.99) return false; +var vXS = this.vTemp2; +vXS.sub2(this.ptTemp, this.p); +vXS.normalize(); +this.ptTemp.scaleAdd2(dPS * cosTheta, vXS, this.p); +vXS.cross(v, vXS); +vXS.normalize(); +vXS.scale((Math.sqrt(1 - cosTheta * cosTheta) * dPS)); +this.ptS1.add2(this.ptTemp, vXS); +this.ptS2.sub2(this.ptTemp, vXS); +return true; +}, "J.jvxl.readers.IsoSolventReader.Edge,~N,~N,~N"); +Clazz_defineMethod(c$, "checkSpecialVoxel", +function(ptA, ptB, ptV){ +var dAV = ptA.distance(ptV); +var dAV2 = ptA.distanceSquared(ptV); +var f = this.rAS / dAV; +if (f > 1) { +this.p.set(ptA.x + (ptV.x - ptA.x) * f, ptA.y + (ptV.y - ptA.y) * f, ptA.z + (ptV.z - ptA.z) * f); +return (ptB.distanceSquared(this.p) >= this.rBS2 ? NaN : this.solventDistance(this.rAS, this.rAS2, this.rBS2, dAV, dAV2, ptB.distanceSquared(ptV))); +}var dBV = ptB.distance(ptV); +if ((f = this.rBS / dBV) > 1) { +this.p.set(ptB.x + (ptV.x - ptB.x) * f, ptB.y + (ptV.y - ptB.y) * f, ptB.z + (ptV.z - ptB.z) * f); +return (ptA.distanceSquared(this.p) >= this.rAS2 ? NaN : this.solventDistance(this.rBS, this.rBS2, this.rAS2, dBV, dBV * dBV, dAV2)); +}return NaN; +}, "JU.P3,JU.P3,JU.P3"); +Clazz_defineMethod(c$, "solventDistance", +function(rAS, rAS2, rBS2, dAV, dAV2, dBV2){ +var angleVAB = Math.acos((dAV2 + this.dAB2 - dBV2) / (2 * dAV * this.dAB)); +var angleSAB = Math.acos((rAS2 + this.dAB2 - rBS2) / (2 * rAS * this.dAB)); +var dVS2 = (rAS2 + dAV2 - 2 * rAS * dAV * Math.cos(angleSAB - angleVAB)); +var dVS = Math.sqrt(dVS2); +return (this.ecosASB2 < (rAS2 + dVS2 - dAV * dAV) / (dVS * rAS) ? dVS : NaN); +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "dumpLine", +function(pt1, pt2, label, color){ +this.sg.log("draw ID \"x" + label + (this.nTest++) + "\" " + JU.P3.newP(pt1) + " " + JU.P3.newP(pt2) + " color " + color); +}, "JU.P3,JU.T3,~S,~S"); +Clazz_defineMethod(c$, "dumpLine2", +function(pt1, pt2, label, d, color1, color2){ +var pt = new JU.V3(); +pt.setT(pt2); +pt.sub(pt1); +pt.normalize(); +pt.scale(d); +pt.add(pt1); +this.sg.log("draw ID \"" + label + (this.nTest++) + "\" " + JU.P3.newP(pt1) + " " + JU.P3.newP(pt) + " color " + color1); +this.sg.log("draw ID \"" + label + (this.nTest++) + "\"" + JU.P3.newP(pt) + " " + JU.P3.newP(pt2) + " color " + color2 + "\"" + label + "\""); +}, "JU.P3,JU.P3,~S,~N,~S,~S"); +Clazz_defineMethod(c$, "dumpPoint", +function(pt, label, color){ +this.sg.log("draw ID \"" + label + (this.nTest++) + "\"" + JU.P3.newP(pt) + " color " + color); +}, "JU.P3,~S,~S"); +Clazz_overrideMethod(c$, "getValueAtPoint", +function(pt, getSource){ +if (this.contactPair != null) return pt.distance(this.contactPair.myAtoms[1]) - this.contactPair.radii[1]; +var value = 3.4028235E38; +for (var iAtom = 0; iAtom < this.firstNearbyAtom; iAtom++) { +var r = pt.distance(this.atomXyzTruncated[iAtom]) - this.rs[iAtom]; +if (r < value) value = r; +} +return (value == 3.4028235E38 ? NaN : value); +}, "JU.T3,~B"); +Clazz_overrideMethod(c$, "discardTempData", +function(discardAll){ +this.rs = null; +this.rs2 = null; +this.discardTempDataSR(discardAll); +}, "~B"); +Clazz_overrideMethod(c$, "getPlane", +function(x){ +if (this.yzCount == 0) { +this.initPlanes(); +}this.thisX = x; +this.thisPlane = this.yzPlanes[x % 2]; +if (this.contactPair == null) { +this.resetPlane(3.4028235E38); +this.thisAtomSet = this.bsAtomMinMax[x]; +this.markSphereVoxels(0, this.params.distance); +this.unsetVoxelData(); +} else { +this.markPlaneVoxels(this.contactPair.myAtoms[0], this.contactPair.radii[0]); +}return this.thisPlane; +}, "~N"); +c$.$IsoSolventReader$Edge$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.ia = 0; +this.ib = 0; +this.nFaces = 0; +this.nInvalid = 0; +this.d = 0; +this.d2 = 0; +this.maxr = 0; +this.cosASB2 = 0; +this.v = null; +Clazz_instantialize(this, arguments);}, J.jvxl.readers.IsoSolventReader, "Edge", JU.P3); +Clazz_overrideConstructor(c$, +function(r, ia, ib, d){ +this.ia = Math.min(ia, ib); +this.ib = Math.max(ia, ib); +this.d = d; +this.d2 = d * d; +this.maxr = Math.sqrt(this.d2 / 4 + Math.max(r.rs2[ia], r.rs2[ib])); +this.ave(r.atomXyzTruncated[ia], r.atomXyzTruncated[ib]); +this.cosASB2 = (r.rs2[ia] + r.rs2[ib] - this.d2) / (r.rs[ib] * r.rs[ia]); +this.v = JU.V3.newVsub(r.atomXyzTruncated[ib], r.atomXyzTruncated[ia]); +this.v.normalize(); +}, "J.jvxl.readers.IsoSolventReader,~N,~N,~N"); +Clazz_defineMethod(c$, "addFace", +function(f){ +this.nFaces++; +if (f == null) { +this.nInvalid++; +return; +}}, "J.jvxl.readers.IsoSolventReader.Face"); +Clazz_defineMethod(c$, "isValid", +function(){ +return (this.nFaces == 0 || this.nInvalid != this.nFaces); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.ia + "_" + this.ib; +}); +/*eoif4*/})(); +}; +c$.$IsoSolventReader$Face$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.ia = 0; +this.ib = 0; +this.ic = 0; +this.pS = null; +Clazz_instantialize(this, arguments);}, J.jvxl.readers.IsoSolventReader, "Face", null); +Clazz_makeConstructor(c$, +function(ia, ib, ic, pS){ +this.ia = ia; +this.ib = ib; +this.ic = ic; +this.pS = JU.P3.newP(pS); +}, "~N,~N,~N,JU.P3"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.ia + "_" + this.ib + "_" + this.ic + "_" + this.pS; +}); +/*eoif4*/})(); +}; +c$.testLinear = false; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(["J.jvxl.readers.SurfaceReader"], "J.jvxl.readers.SurfaceFileReader", ["JU.PT", "$.Rdr", "J.api.Interface"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.br = null; +this.binarydoc = null; +this.out = null; +this.line = null; +this.next = null; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "SurfaceFileReader", J.jvxl.readers.SurfaceReader); +Clazz_prepareFields (c$, function(){ +this.next = Clazz_newIntArray (1, 0); +}); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.jvxl.readers.SurfaceFileReader, []); +}); +Clazz_defineMethod(c$, "setStream", +function(fileName, isBigEndian){ +if (fileName == null) this.binarydoc.setStream(null, isBigEndian); + else try { +if (Clazz_instanceOf(this.br,"JU.Rdr.StreamReader")) { +var stream = (this.br).getStream(); +stream.reset(); +this.binarydoc.setStream(stream, true); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println("BCifDensityReader " + e); +this.binarydoc.setStream(this.sg.atomDataServer.getBufferedInputStream(fileName), isBigEndian); +} else { +throw e; +} +} +}, "~S,~B"); +Clazz_overrideMethod(c$, "init", +function(sg){ +this.initSR(sg); +}, "J.jvxl.readers.SurfaceGenerator"); +Clazz_defineMethod(c$, "init2", +function(sg, br){ +this.init2SFR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz_defineMethod(c$, "init2SFR", +function(sg, br){ +this.br = br; +this.init(sg); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz_defineMethod(c$, "newBinaryDocument", +function(){ +return J.api.Interface.getInterface("JU.BinaryDocument", this.sg.atomDataServer, "file"); +}); +Clazz_overrideMethod(c$, "setOutputChannel", +function(out){ +if (this.binarydoc == null) this.out = out; + else this.sg.setOutputChannel(this.binarydoc, out); +}, "JU.OC"); +Clazz_overrideMethod(c$, "closeReader", +function(){ +this.closeReaderSFR(); +}); +Clazz_defineMethod(c$, "closeReaderSFR", +function(){ +if (this.br != null) try { +this.br.close(); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +if (this.out != null) this.out.closeChannel(); +if (this.binarydoc != null) this.binarydoc.close(); +}); +Clazz_overrideMethod(c$, "discardTempData", +function(discardAll){ +this.closeReader(); +this.discardTempDataSR(discardAll); +}, "~B"); +Clazz_defineMethod(c$, "getTokens", +function(){ +return JU.PT.getTokensAt(this.line, 0); +}); +Clazz_defineMethod(c$, "parseFloat", +function(){ +return JU.PT.parseFloatNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "parseFloatStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseFloatNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseFloatRange", +function(s, iStart, iEnd){ +this.next[0] = iStart; +return JU.PT.parseFloatRange(s, iEnd, this.next); +}, "~S,~N,~N"); +Clazz_defineMethod(c$, "parseInt", +function(){ +return JU.PT.parseIntNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "parseIntStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseIntNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseIntNext", +function(s){ +return JU.PT.parseIntNext(s, this.next); +}, "~S"); +Clazz_defineMethod(c$, "parseFloatArrayStr", +function(s){ +this.next[0] = 0; +return JU.PT.parseFloatArrayNext(s, this.next, null, null, null); +}, "~S"); +Clazz_defineMethod(c$, "parseFloatArray", +function(a, strStart, strEnd){ +return JU.PT.parseFloatArrayNext(this.line, this.next, a, strStart, strEnd); +}, "~A,~S,~S"); +Clazz_defineMethod(c$, "getQuotedStringNext", +function(){ +return JU.PT.getQuotedStringNext(this.line, this.next); +}); +Clazz_defineMethod(c$, "skipTo", +function(info, what){ +if (info != null) while (this.rd().indexOf(info) < 0) { +} +if (what != null) this.next[0] = this.line.indexOf(what) + what.length + 2; +}, "~S,~S"); +Clazz_defineMethod(c$, "rd", +function(){ +this.line = this.br.readLine(); +if (this.line != null) { +this.nBytes += this.line.length; +if (this.out != null) { +var b = this.line.getBytes(); +this.out.write(b, 0, b.length); +this.out.writeByteAsInt(0x0A); +}}return this.line; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(["J.jvxl.readers.SurfaceFileReader"], "J.jvxl.readers.VolumeFileReader", ["JU.AU", "$.PT", "$.SB", "J.api.Interface", "J.atomdata.AtomData", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.endOfData = false; +this.negativeAtomCount = false; +this.ac = 0; +this.nSurfaces = 0; +this.isAngstroms = false; +this.canDownsample = false; +this.downsampleRemainders = null; +this.getNCIPlanes = false; +this.nData = 0; +this.readerClosed = false; +this.downsampleFactor = 0; +this.nSkipX = 0; +this.nSkipY = 0; +this.nSkipZ = 0; +this.yzPlanesRaw = null; +this.iPlaneNCI = 0; +this.boundingBox = null; +this.isScaledAlready = false; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "VolumeFileReader", J.jvxl.readers.SurfaceFileReader); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.jvxl.readers.VolumeFileReader, []); +}); +Clazz_overrideMethod(c$, "init2", +function(sg, br){ +this.init2VFR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz_defineMethod(c$, "init2VFR", +function(sg, br){ +this.init2SFR(sg, br); +this.canDownsample = this.isProgressive = this.isXLowToHigh = true; +this.jvxlData.wasCubic = true; +this.boundingBox = this.params.boundingBox; +if (this.params.qmOrbitalType == 4) { +this.hasColorData = (this.params.parameters == null || this.params.parameters[1] >= 0); +this.getNCIPlanes = true; +this.params.insideOut = !this.params.insideOut; +}}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz_defineMethod(c$, "recordData", +function(value){ +if (Float.isNaN(value)) return value; +if (value < this.dataMin) this.dataMin = value; +if (value > this.dataMax) this.dataMax = value; +this.dataMean += value; +this.nData++; +return value; +}, "~N"); +Clazz_overrideMethod(c$, "closeReader", +function(){ +if (this.readerClosed) return; +this.readerClosed = true; +this.closeReaderSFR(); +if (this.nData == 0 || this.dataMax == -3.4028235E38) return; +this.dataMean /= this.nData; +JU.Logger.info("VolumeFileReader closing file: " + this.nData + " points read \ndata min/max/mean = " + this.dataMin + "/" + this.dataMax + "/" + this.dataMean); +}); +Clazz_overrideMethod(c$, "readVolumeParameters", +function(isMapData){ +this.endOfData = false; +this.nSurfaces = this.readVolumetricHeader(); +if (this.nSurfaces == 0) return false; +if (this.nSurfaces < this.params.fileIndex) { +JU.Logger.warn("not enough surfaces in file -- resetting params.fileIndex to " + this.nSurfaces); +this.params.fileIndex = this.nSurfaces; +}return true; +}, "~B"); +Clazz_overrideMethod(c$, "readVolumeData", +function(isMapData){ +return this.readVolumeDataVFR(isMapData); +}, "~B"); +Clazz_defineMethod(c$, "readVolumeDataVFR", +function(isMapData){ +if (!this.gotoAndReadVoxelData(isMapData)) return false; +if (!this.vertexDataOnly) JU.Logger.info("JVXL read: " + this.nPointsX + " x " + this.nPointsY + " x " + this.nPointsZ + " data points"); +return true; +}, "~B"); +Clazz_defineMethod(c$, "readVolumetricHeader", +function(){ +try { +this.readParameters(); +if (this.ac == -2147483648) return 0; +if (!this.vertexDataOnly) JU.Logger.info("voxel grid origin:" + this.volumetricOrigin); +var downsampleFactor = this.params.downsampleFactor; +var downsampling = (this.canDownsample && downsampleFactor > 1); +if (downsampleFactor > 1 && !this.canDownsample) this.jvxlData.msg += "\ncannot downsample this file type"; +if (downsampling) { +this.downsampleRemainders = Clazz_newIntArray (3, 0); +JU.Logger.info("downsample factor = " + downsampleFactor); +for (var i = 0; i < 3; ++i) { +var n = this.voxelCounts[i]; +this.downsampleRemainders[i] = n % downsampleFactor; +this.voxelCounts[i] /= downsampleFactor; +if (this.isPeriodic) { +this.voxelCounts[i]++; +this.downsampleRemainders[i]--; +}this.volumetricVectors[i].scale(downsampleFactor); +JU.Logger.info("downsampling axis " + (i + 1) + " from " + n + " to " + this.voxelCounts[i]); +} +}if (!this.vertexDataOnly) for (var i = 0; i < 3; ++i) { +if (!this.isAngstroms) this.volumetricVectors[i].scale(0.5291772); +this.line = this.voxelCounts[i] + " " + this.volumetricVectors[i].x + " " + this.volumetricVectors[i].y + " " + this.volumetricVectors[i].z; +JU.Logger.info("voxel grid count/vector:" + this.line); +} +this.scaleIsosurface(this.params.scale); +this.volumeData.setVolumetricXml(); +return this.nSurfaces; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return 0; +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "skipComments", +function(allowBlankLines){ +var sb = new JU.SB(); +while (this.rd() != null && (allowBlankLines && this.line.length == 0 || this.line.indexOf("#") == 0)) sb.append(this.line).appendC('\n'); + +return sb.toString(); +}, "~B"); +Clazz_defineMethod(c$, "readVoxelVector", +function(voxelVectorIndex){ +this.rd(); +var voxelVector = this.volumetricVectors[voxelVectorIndex]; +if ((this.voxelCounts[voxelVectorIndex] = this.parseIntStr(this.line)) == -2147483648) this.next[0] = this.line.indexOf(" "); +voxelVector.set(this.parseFloat(), this.parseFloat(), this.parseFloat()); +if (this.isAnisotropic) this.setVectorAnisotropy(voxelVector); +}, "~N"); +Clazz_defineMethod(c$, "initializeSurfaceData", +function(){ +this.downsampleFactor = this.params.downsampleFactor; +this.nSkipX = 0; +this.nSkipY = 0; +this.nSkipZ = 0; +if (this.canDownsample && this.downsampleFactor > 0) { +this.nSkipX = this.downsampleFactor - 1; +this.nSkipY = this.downsampleRemainders[2] + (this.downsampleFactor - 1) * (this.nSkipZ = ((this.nPointsZ - (this.isPeriodic ? 1 : 0)) * this.downsampleFactor + this.downsampleRemainders[2])); +this.nSkipZ = this.downsampleRemainders[1] * this.nSkipZ + (this.downsampleFactor - 1) * this.nSkipZ * ((this.nPointsY - (this.isPeriodic ? 1 : 0)) * this.downsampleFactor + this.downsampleRemainders[1]); +}if (this.params.thePlane != null) { +this.params.cutoff = 0; +} else if (this.isJvxl) { +this.params.cutoff = (this.params.isBicolorMap || this.params.colorBySign ? 0.01 : this.getJVXLCutoff()); +}this.nDataPoints = 0; +this.next[0] = 0; +this.line = ""; +this.jvxlNSurfaceInts = 0; +}); +Clazz_defineMethod(c$, "getJVXLCutoff", +function(){ +return 0.5; +}); +Clazz_overrideMethod(c$, "readSurfaceData", +function(isMapData){ +this.readSurfaceDataVFR(isMapData); +}, "~B"); +Clazz_defineMethod(c$, "readSurfaceDataVFR", +function(isMapData){ +this.initializeSurfaceData(); +if (this.isProgressive && !isMapData || this.isJvxl) { +this.nDataPoints = this.volumeData.setVoxelCounts(this.nPointsX, this.nPointsY, this.nPointsZ); +this.voxelData = null; +if (this.isJvxl) this.jvxlVoxelBitSet = this.getVoxelBitSet(this.nDataPoints); +} else if (isMapData && this.volumeData.hasPlane()) { +this.volumeData.setVoxelMap(); +var f = this.volumeData.getToPlaneParameter(); +for (var x = 0; x < this.nPointsX; ++x) { +for (var y = 0; y < this.nPointsY; ++y) { +for (var z = 0; z < this.nPointsZ; ++z) { +var v = this.recordData(this.getNextVoxelValue()); +if (this.volumeData.isNearPlane(x, y, z, f)) this.volumeData.setVoxelMapValue(x, y, z, v); +if (this.nSkipX != 0) this.skipVoxels(this.nSkipX); +} +if (this.nSkipY != 0) this.skipVoxels(this.nSkipY); +} +if (this.nSkipZ != 0) this.skipVoxels(this.nSkipZ); +} +} else { +this.voxelData = JU.AU.newFloat3(this.nPointsX, -1); +for (var x = 0; x < this.nPointsX; ++x) { +var plane = JU.AU.newFloat2(this.nPointsY); +this.voxelData[x] = plane; +for (var y = 0; y < this.nPointsY; ++y) { +var strip = Clazz_newFloatArray (this.nPointsZ, 0); +plane[y] = strip; +for (var z = 0; z < this.nPointsZ; ++z) { +strip[z] = this.recordData(this.getNextVoxelValue()); +if (this.nSkipX != 0) this.skipVoxels(this.nSkipX); +} +if (this.nSkipY != 0) this.skipVoxels(this.nSkipY); +} +if (this.nSkipZ != 0) this.skipVoxels(this.nSkipZ); +} +}this.volumeData.setVoxelDataAsArray(this.voxelData); +}, "~B"); +Clazz_overrideMethod(c$, "getPlane", +function(x){ +if (x == 0) this.initPlanes(); +if (this.getNCIPlanes) return this.getPlaneNCI(x); +var plane = this.getPlaneSR(x); +if (this.qpc == null) this.getPlaneVFR(plane, true); +return plane; +}, "~N"); +Clazz_defineMethod(c$, "getPlaneNCI", +function(x){ +var plane; +if (this.iPlaneNCI == 0) { +this.qpc = J.api.Interface.getOption("quantum.NciCalculation", this.sg.atomDataServer, null); +var atomData = new J.atomdata.AtomData(); +atomData.modelIndex = -1; +atomData.bsSelected = this.params.bsSelected; +this.sg.fillAtomData(atomData, 1); +(this.qpc).setupCalculation(this.volumeData, this.sg.params.bsSelected, null, null, atomData.atoms, -1, true, null, this.params.parameters, this.params.testFlags); +this.iPlaneNCI = 1; +this.qpc.setPlanes(this.yzPlanesRaw = Clazz_newFloatArray (4, this.yzCount, 0)); +if (this.hasColorData) { +this.getPlaneVFR(this.yzPlanesRaw[0], false); +this.getPlaneVFR(this.yzPlanesRaw[1], false); +plane = this.yzPlanes[0]; +for (var i = 0; i < this.yzCount; i++) plane[i] = NaN; + +return plane; +}this.iPlaneNCI = -1; +}var nan = this.qpc.getNoValue(); +var x1 = this.nPointsX - 1; +switch (this.iPlaneNCI) { +case -1: +plane = this.yzPlanes[x % 2]; +x1++; +break; +case 3: +plane = this.yzPlanesRaw[0]; +this.yzPlanesRaw[0] = this.yzPlanesRaw[1]; +this.yzPlanesRaw[1] = this.yzPlanesRaw[2]; +this.yzPlanesRaw[2] = this.yzPlanesRaw[3]; +this.yzPlanesRaw[3] = plane; +plane = this.yzPlanesRaw[this.iPlaneNCI]; +break; +default: +this.iPlaneNCI++; +plane = this.yzPlanesRaw[this.iPlaneNCI]; +} +if (x < x1) { +this.getPlaneVFR(plane, false); +this.qpc.calcPlane(x, plane = this.yzPlanes[x % 2]); +for (var i = 0; i < this.yzCount; i++) if (plane[i] != nan) this.recordData(plane[i]); + +} else { +for (var i = 0; i < this.yzCount; i++) plane[i] = NaN; + +}return plane; +}, "~N"); +Clazz_defineMethod(c$, "getPlaneVFR", +function(plane, doRecord){ +try { +for (var y = 0, ptyz = 0; y < this.nPointsY; ++y) { +for (var z = 0; z < this.nPointsZ; ++z) { +var v = this.getNextVoxelValue(); +if (doRecord) this.recordData(v); +plane[ptyz++] = v; +if (this.nSkipX != 0) this.skipVoxels(this.nSkipX); +} +if (this.nSkipY != 0) this.skipVoxels(this.nSkipY); +} +if (this.nSkipZ != 0) this.skipVoxels(this.nSkipZ); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}, "~A,~B"); +Clazz_overrideMethod(c$, "getValue", +function(x, y, z, ptyz){ +if (this.boundingBox != null) { +this.volumeData.voxelPtToXYZ(x, y, z, this.ptTemp); +if (this.ptTemp.x < this.boundingBox[0].x || this.ptTemp.x > this.boundingBox[1].x || this.ptTemp.y < this.boundingBox[0].y || this.ptTemp.y > this.boundingBox[1].y || this.ptTemp.z < this.boundingBox[0].z || this.ptTemp.z > this.boundingBox[1].z) return NaN; +}return this.getValue2(x, y, z, ptyz); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "skipVoxels", +function(n){ +for (var i = n; --i >= 0; ) this.getNextVoxelValue(); + +}, "~N"); +Clazz_defineMethod(c$, "getVoxelBitSet", +function(nPoints){ +return null; +}, "~N"); +Clazz_defineMethod(c$, "getNextVoxelValue", +function(){ +var voxelValue = 0; +if (this.nSurfaces > 1 && !this.params.blockCubeData) { +for (var i = 1; i < this.params.fileIndex; i++) this.nextVoxel(); + +voxelValue = this.nextVoxel(); +for (var i = this.params.fileIndex; i < this.nSurfaces; i++) this.nextVoxel(); + +} else { +voxelValue = this.nextVoxel(); +}return voxelValue; +}); +Clazz_defineMethod(c$, "nextVoxel", +function(){ +var voxelValue = this.parseFloat(); +if (Float.isNaN(voxelValue)) { +while (this.rd() != null && Float.isNaN(voxelValue = this.parseFloatStr(this.line))) { +} +if (this.line == null) { +if (!this.endOfData) JU.Logger.warn("end of file reading cube voxel data? nBytes=" + this.nBytes + " nDataPoints=" + this.nDataPoints + " (line):" + this.line); +this.endOfData = true; +this.line = "0 0 0 0 0 0 0 0 0 0"; +}}return voxelValue; +}); +Clazz_overrideMethod(c$, "gotoData", +function(n, nPoints){ +if (!this.params.blockCubeData) return; +if (n > 0) JU.Logger.info("skipping " + n + " data sets, " + nPoints + " points each"); +for (var i = 0; i < n; i++) this.skipData(nPoints); + +}, "~N,~N"); +Clazz_defineMethod(c$, "skipData", +function(nPoints){ +this.skipDataVFR(nPoints); +}, "~N"); +Clazz_defineMethod(c$, "skipDataVFR", +function(nPoints){ +var iV = 0; +while (iV < nPoints) iV += this.countData(this.rd()); + +}, "~N"); +Clazz_defineMethod(c$, "countData", +function(str){ +var count = 0; +var ich = 0; +var ichMax = str.length; +var ch; +while (ich < ichMax) { +while (ich < ichMax && ((ch = str.charAt(ich)) == ' ' || ch == '\t')) ++ich; + +if (ich < ichMax) ++count; +while (ich < ichMax && ((ch = str.charAt(ich)) != ' ' && ch != '\t')) ++ich; + +} +return count; +}, "~S"); +c$.checkAtomLine = Clazz_defineMethod(c$, "checkAtomLine", +function(isXLowToHigh, isAngstroms, strAtomCount, atomLine, bs){ +if (atomLine.indexOf("ANGSTROMS") >= 0) isAngstroms = true; +var ac = (strAtomCount == null ? 2147483647 : JU.PT.parseInt(strAtomCount)); +switch (ac) { +case -2147483648: +ac = 0; +atomLine = " " + atomLine.substring(atomLine.indexOf(" ") + 1); +break; +case 2147483647: +ac = -2147483648; +break; +default: +var s = "" + ac; +atomLine = atomLine.substring(atomLine.indexOf(s) + s.length); +} +if (isAngstroms) { +if (atomLine.indexOf("ANGSTROM") < 0) atomLine += " ANGSTROMS"; +} else { +if (atomLine.indexOf("BOHR") < 0) atomLine += " BOHR"; +}atomLine = (ac == -2147483648 ? "" : (isXLowToHigh ? "+" : "-") + Math.abs(ac)) + atomLine + "\n"; +bs.append(atomLine); +return isAngstroms; +}, "~B,~B,~S,~S,JU.SB"); +Clazz_overrideMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +return this.getSPFv(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz_defineMethod(c$, "getSPFv", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +var zero = this.getSPF(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +if (this.qpc == null || Float.isNaN(zero) || !this.hasColorData) return zero; +vA = this.marchingCubes.getLinearOffset(x, y, z, vA); +vB = this.marchingCubes.getLinearOffset(x, y, z, vB); +return this.qpc.process(vA, vB, fReturn[0]); +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz_defineMethod(c$, "scaleIsosurface", +function(scale){ +if (this.isScaledAlready) return; +this.isScaledAlready = true; +if (this.isAnisotropic) this.setVolumetricAnisotropy(); +if (Float.isNaN(scale)) return; +JU.Logger.info("applying scaling factor of " + scale); +this.volumetricOrigin.scaleAdd2((1 - scale) / 2, this.volumetricVectors[0], this.volumetricOrigin); +this.volumetricOrigin.scaleAdd2((1 - scale) / 2, this.volumetricVectors[1], this.volumetricOrigin); +this.volumetricOrigin.scaleAdd2((1 - scale) / 2, this.volumetricVectors[2], this.volumetricOrigin); +this.volumetricVectors[0].scale(scale); +this.volumetricVectors[1].scale(scale); +this.volumetricVectors[2].scale(scale); +}, "~N"); +Clazz_defineMethod(c$, "swapXZ", +function(){ +var v = this.volumetricVectors[0]; +this.volumetricVectors[0] = this.volumetricVectors[2]; +this.volumetricVectors[2] = v; +var n = this.voxelCounts[0]; +this.voxelCounts[0] = this.voxelCounts[2]; +this.voxelCounts[2] = n; +this.params.insideOut = !this.params.insideOut; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.jvxl.readers"); +Clazz_load(["J.jvxl.readers.VolumeFileReader"], "J.jvxl.readers.JvxlXmlReader", ["java.util.Hashtable", "JU.AU", "$.BS", "$.CU", "$.Lst", "$.P3", "$.P4", "$.PT", "$.SB", "J.jvxl.data.JvxlCoder", "$.MeshData", "J.jvxl.readers.XmlReader", "J.shapesurface.IsosurfaceMesh", "JU.C", "$.ColorEncoder", "$.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.JVXL_VERSION = "2.3"; +this.surfaceDataCount = 0; +this.edgeDataCount = 0; +this.colorDataCount = 0; +this.excludedTriangleCount = 0; +this.excludedVertexCount = 0; +this.invalidatedVertexCount = 0; +this.haveContourData = false; +this.xr = null; +this.isXmlFile = true; +this.thisInside = false; +this.tempDataXml = null; +this.bsVoxelBitSet = null; +this.includeValueNaN = true; +this.valueCount = 0; +this.valueMin = NaN; +this.valueRange = NaN; +this.fractionPtr = 0; +this.colorPtr = 0; +this.strFractionTemp = ""; +this.haveReadColorData = false; +this.jvxlColorEncodingRead = null; +Clazz_instantialize(this, arguments);}, J.jvxl.readers, "JvxlXmlReader", J.jvxl.readers.VolumeFileReader); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.jvxl.readers.JvxlXmlReader, []); +}); +Clazz_overrideMethod(c$, "init2", +function(sg, br){ +this.init2JXR(sg, br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz_defineMethod(c$, "init2JXR", +function(sg, br){ +this.init2VFR(sg, br); +this.jvxlData.wasJvxl = this.isJvxl = true; +this.isXLowToHigh = this.canDownsample = false; +this.xr = new J.jvxl.readers.XmlReader(br); +}, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); +Clazz_overrideMethod(c$, "readVolumeData", +function(isMapData){ +if (!this.readVolumeDataVFR(isMapData)) return false; +this.strFractionTemp = this.jvxlEdgeDataRead; +this.fractionPtr = 0; +return true; +}, "~B"); +Clazz_overrideMethod(c$, "gotoAndReadVoxelData", +function(isMapData){ +this.initializeVolumetricData(); +if (this.nPointsX < 0 || this.nPointsY < 0 || this.nPointsZ < 0) return true; +try { +this.gotoData(this.params.fileIndex - 1, this.nPointsX * this.nPointsY * this.nPointsZ); +if (this.vertexDataOnly) return true; +this.volumeData.setMappingPlane(this.params.thePlane); +this.readSurfaceData(isMapData); +this.volumeData.setMappingPlane(null); +if (this.edgeDataCount > 0) this.jvxlEdgeDataRead = this.jvxlReadFractionData("edge", this.edgeDataCount); +this.params.bsExcluded = this.jvxlData.jvxlExcluded = new Array(4); +this.hasColorData = (this.colorDataCount > 0); +if (this.hasColorData) this.jvxlColorDataRead = this.jvxlReadFractionData("color", this.colorDataCount); +if (this.excludedVertexCount > 0) { +this.jvxlData.jvxlExcluded[0] = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlExcludedVertexData", null, false, false)); +if (this.xr.isNext("jvxlExcludedPlaneData")) this.jvxlData.jvxlExcluded[2] = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlExcludedPlaneData", null, false, false)); +}if (this.excludedTriangleCount > 0) this.jvxlData.jvxlExcluded[3] = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlExcludedTriangleData", null, false, false)); +if (this.invalidatedVertexCount > 0) this.jvxlData.jvxlExcluded[1] = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlInvalidatedVertexData", null, false, false)); +if (this.haveContourData) this.jvxlDecodeContourData(this.jvxlData, this.xr.getXmlData("jvxlContourData", null, false, false)); +if (this.jvxlDataIsColorMapped && this.jvxlData.nVertexColors > 0) { +this.jvxlData.vertexColorMap = new java.util.Hashtable(); +var vdata = this.xr.getXmlData("jvxlVertexColorData", null, true, false); +var baseColor = J.jvxl.readers.XmlReader.getXmlAttrib(vdata, "baseColor"); +this.jvxlData.baseColor = (baseColor.length > 0 ? baseColor : null); +for (var i = 0; i < this.jvxlData.nVertexColors; i++) { +var s = this.xr.getXmlData("jvxlColorMap", vdata, true, false); +var color = J.jvxl.readers.XmlReader.getXmlAttrib(s, "color"); +var bs = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlColorMap", s, false, false)); +this.jvxlData.vertexColorMap.put(color, bs); +} +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error(e.toString()); +return false; +} else { +throw e; +} +} +return true; +}, "~B"); +Clazz_overrideMethod(c$, "readParameters", +function(){ +var s = this.xr.getXmlDataLF("jvxlFileTitle", null, false, false, true); +this.jvxlFileHeaderBuffer = JU.SB.newS(s == null ? "" : s); +this.xr.toTag("jvxlVolumeData"); +var data = this.tempDataXml = this.xr.getXmlData("jvxlVolumeData", null, true, false); +this.volumetricOrigin.setT(this.xr.getXmlPoint(data, "origin")); +this.isAngstroms = true; +this.readVector(0); +this.readVector(1); +this.readVector(2); +this.line = this.xr.toTag("jvxlSurfaceSet"); +this.nSurfaces = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(this.line, "count")); +JU.Logger.info("jvxl file surfaces: " + this.nSurfaces); +JU.Logger.info("using default edge fraction base and range"); +JU.Logger.info("using default color fraction base and range"); +this.cJvxlEdgeNaN = String.fromCharCode(this.edgeFractionBase + this.edgeFractionRange); +}); +Clazz_overrideMethod(c$, "getJVXLCutoff", +function(){ +return this.params.cutoff; +}); +Clazz_defineMethod(c$, "readVector", +function(voxelVectorIndex){ +var data = this.xr.getXmlData("jvxlVolumeVector", this.tempDataXml, true, true); +this.tempDataXml = this.tempDataXml.substring(this.tempDataXml.indexOf(data) + data.length); +var n = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "count")); +if (n == -2147483648) this.vertexDataOnly = true; +this.voxelCounts[voxelVectorIndex] = (n < 0 ? 0 : n); +this.volumetricVectors[voxelVectorIndex].setT(this.xr.getXmlPoint(data, "vector")); +if (this.isAnisotropic) this.setVectorAnisotropy(this.volumetricVectors[voxelVectorIndex]); +}, "~N"); +Clazz_overrideMethod(c$, "gotoData", +function(n, nPoints){ +if (n > 0) JU.Logger.info("skipping " + n + " data sets, " + nPoints + " points each"); +this.vertexDataOnly = this.jvxlData.vertexDataOnly = (nPoints == 0); +for (var i = 0; i < n; i++) { +this.jvxlSkipData(nPoints, true); +} +this.xr.toTag("jvxlSurface"); +this.jvxlReadSurfaceInfo(); +}, "~N,~N"); +Clazz_defineMethod(c$, "jvxlSkipData", +function(nPoints, doSkipColorData){ +this.rd(); +this.xr.skipTag("jvxlSurface"); +}, "~N,~B"); +Clazz_defineMethod(c$, "jvxlReadSurfaceInfo", +function(){ +var data = this.xr.getXmlData("jvxlSurfaceInfo", null, true, true); +this.isXLowToHigh = J.jvxl.readers.XmlReader.getXmlAttrib(data, "isXLowToHigh").equals("true"); +var s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "cutoff"); +if (s.indexOf(" ") < 0) { +this.jvxlCutoff = this.parseFloatStr(s); +if (!Double.isNaN(this.jvxlCutoff)) JU.Logger.info("JVXL read: cutoff " + this.jvxlCutoff); +} else { +this.jvxlCutoffRange = this.parseFloatArrayStr(s); +this.jvxlCutoff = this.jvxlCutoffRange[0]; +JU.Logger.info("JVXL read: cutoff " + JU.Escape.eAF(this.jvxlCutoffRange)); +}this.params.cutoff = this.jvxlCutoff; +var nContourData = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nContourData")); +this.haveContourData = (nContourData > 0); +this.params.isContoured = this.jvxlData.isModelConnected = J.jvxl.readers.XmlReader.getXmlAttrib(data, "contoured").equals("true"); +this.params.isModelConnected = J.jvxl.readers.XmlReader.getXmlAttrib(data, "isModelConnected").equals("true"); +if (this.params.isContoured) { +var nContoursRead = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nContours")); +if (nContoursRead <= 0) { +nContoursRead = 0; +} else { +if (this.params.thisContour < 0) this.params.thisContour = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "thisContour")); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "contourValues"); +if (s.length > 0) { +s = s.$replace('[', ' ').$replace(']', ' '); +this.jvxlData.contourValues = this.params.contoursDiscrete = this.parseFloatArrayStr(s); +JU.Logger.info("JVXL read: contourValues " + JU.Escape.eAF(this.jvxlData.contourValues)); +}s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "contourColors"); +if (s.length > 0) { +this.jvxlData.contourColixes = this.params.contourColixes = JU.C.getColixArray(s); +this.jvxlData.contourColors = JU.C.getHexCodes(this.jvxlData.contourColixes); +JU.Logger.info("JVXL read: contourColixes " + JU.C.getHexCodes(this.jvxlData.contourColixes)); +}this.params.contourFromZero = J.jvxl.readers.XmlReader.getXmlAttrib(data, "contourFromZero").equals("true"); +}this.params.nContours = (this.haveContourData ? nContourData : nContoursRead); +}this.jvxlData.nVertexColors = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nVertexColors")); +this.params.isBicolorMap = J.jvxl.readers.XmlReader.getXmlAttrib(data, "bicolorMap").equals("true"); +if (this.params.isBicolorMap) { +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorPositive"); +if (s.length > 0 && this.params.colorRgb == -2147483648 && this.params.colorPos == -16776961) this.params.colorPos = JU.CU.getArgbFromString(s); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorNegative"); +if (s.length > 0 && this.params.colorRgb == -2147483648 && this.params.colorNeg == -65536) this.params.colorNeg = JU.CU.getArgbFromString(s); +}if (this.params.isBicolorMap || this.params.colorBySign) this.jvxlCutoff = 0; +this.jvxlDataIsColorMapped = ((this.params.colorRgb == -2147483648 || this.params.colorRgb == 2147483647) && (this.params.isBicolorMap || J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorMapped").equals("true"))); +this.jvxlData.isJvxlPrecisionColor = J.jvxl.readers.XmlReader.getXmlAttrib(data, "precisionColor").equals("true"); +this.jvxlData.jvxlDataIsColorDensity = this.params.colorDensity = (this.params.colorRgb == -2147483648 && J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorDensity").equals("true")); +if (this.jvxlData.jvxlDataIsColorDensity && Float.isNaN(this.params.pointSize)) { +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "pointSize"); +if (s.length > 0) this.jvxlData.pointSize = this.params.pointSize = this.parseFloatStr(s); +}s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "allowVolumeRender"); +this.jvxlData.allowVolumeRender = this.params.allowVolumeRender = (s.length == 0 || s.equalsIgnoreCase("true")); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "plane"); +if (s.indexOf("{") >= 0) { +this.params.thePlane = null; +this.params.mapLattice = null; +try { +this.params.thePlane = JU.Escape.uP(s); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "maplattice"); +JU.Logger.info("JVXL read: plane " + this.params.thePlane); +if (s.indexOf("{") >= 0) { +this.params.mapLattice = JU.Escape.uP(s); +JU.Logger.info("JVXL read: mapLattice " + this.params.mapLattice); +}if (this.params.scale3d == 0) this.params.scale3d = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "scale3d")); +if (Float.isNaN(this.params.scale3d)) this.params.scale3d = 0; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +if (this.params.thePlane == null) { +JU.Logger.error("JVXL Error reading plane definition -- setting to 0 0 1 0 (z=0)"); +this.params.thePlane = JU.P4.new4(0, 0, 1, 0); +} else { +JU.Logger.error("JVXL Error reading mapLattice definition -- ignored"); +}} else { +throw e; +} +} +this.surfaceDataCount = 0; +this.edgeDataCount = 0; +} else { +this.params.thePlane = null; +this.surfaceDataCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nSurfaceInts")); +this.edgeDataCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nBytesUncompressedEdgeData")); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "fixedLattice"); +if (s.indexOf("{") >= 0) this.jvxlData.fixedLattice = JU.Escape.uP(s); +}this.excludedVertexCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nExcludedVertexes")); +this.excludedTriangleCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nExcludedTriangles")); +this.invalidatedVertexCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nInvalidatedVertexes")); +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "slabInfo"); +if (s.length > 0) this.jvxlData.slabInfo = s; +this.colorDataCount = Math.max(0, this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "nBytesUncompressedColorData"))); +this.jvxlDataIs2dContour = (this.params.thePlane != null && this.jvxlDataIsColorMapped); +this.jvxlData.color = J.jvxl.readers.XmlReader.getXmlAttrib(data, "color"); +if (this.jvxlData.color.length == 0 || this.jvxlData.color.indexOf("null") >= 0) this.jvxlData.color = "orange"; +this.jvxlData.translucency = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "translucency")); +if (Float.isNaN(this.jvxlData.translucency)) this.jvxlData.translucency = 0; +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "meshColor"); +if (s.length > 0) this.jvxlData.meshColor = s; +s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "rendering"); +if (s.length > 0) this.jvxlData.rendering = s; +this.jvxlData.colorScheme = J.jvxl.readers.XmlReader.getXmlAttrib(data, "colorScheme"); +if (this.jvxlData.colorScheme.length == 0) this.jvxlData.colorScheme = (this.jvxlDataIsColorMapped ? "roygb" : null); +if (this.jvxlData.thisSet == null) { +var n = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "set")); +if (n > 0) { +this.jvxlData.thisSet = new JU.BS(); +this.jvxlData.thisSet.set(n - 1); +}var a = J.jvxl.readers.XmlReader.getXmlAttrib(data, "subset"); +if (a != null && a.length > 2) { +var sets = a.$replace('[', ' ').$replace(']', ' ').trim().$plit(" "); +if (sets.length > 0) { +this.jvxlData.thisSet = new JU.BS(); +for (var i = sets.length; --i >= 0; ) { +this.jvxlData.thisSet.set(JU.PT.parseInt(sets[i]) - 1); +} +}}}this.jvxlData.slabValue = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "slabValue")); +this.jvxlData.isSlabbable = (J.jvxl.readers.XmlReader.getXmlAttrib(data, "slabbable").equalsIgnoreCase("true")); +this.jvxlData.diameter = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "diameter")); +if (this.jvxlData.diameter == -2147483648) this.jvxlData.diameter = 0; +if (this.jvxlDataIs2dContour) this.params.isContoured = true; +if (this.params.colorBySign) this.params.isBicolorMap = true; +var insideOut = J.jvxl.readers.XmlReader.getXmlAttrib(data, "insideOut").equals("true"); +var dataMin = NaN; +var dataMax = NaN; +var red = NaN; +var blue = NaN; +if (this.jvxlDataIsColorMapped) { +dataMin = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "dataMinimum")); +dataMax = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "dataMaximum")); +red = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "valueMappedToRed")); +blue = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "valueMappedToBlue")); +if (Float.isNaN(dataMin)) { +dataMin = red = -1.0; +dataMax = blue = 1; +}}this.jvxlSetColorRanges(dataMin, dataMax, red, blue, insideOut); +}); +Clazz_defineMethod(c$, "jvxlSetColorRanges", +function(dataMin, dataMax, red, blue, insideOut){ +if (this.jvxlDataIsColorMapped) { +if (!Float.isNaN(dataMin) && !Float.isNaN(dataMax)) { +if (dataMax == 0 && dataMin == 0) { +dataMin = -1; +dataMax = 1; +}this.params.mappedDataMin = dataMin; +this.params.mappedDataMax = dataMax; +JU.Logger.info("JVXL read: data_min/max " + this.params.mappedDataMin + "/" + this.params.mappedDataMax); +}if (!this.params.rangeDefined) if (!Float.isNaN(red) && !Float.isNaN(blue)) { +if (red == 0 && blue == 0) { +red = -1; +blue = 1; +}this.params.valueMappedToRed = Math.min(red, blue); +this.params.valueMappedToBlue = Math.max(red, blue); +this.params.isColorReversed = (red > blue); +this.params.rangeDefined = true; +} else { +this.params.valueMappedToRed = 0; +this.params.valueMappedToBlue = 1; +this.params.rangeDefined = true; +}JU.Logger.info("JVXL read: color red/blue: " + this.params.valueMappedToRed + "/" + this.params.valueMappedToBlue); +}this.jvxlData.valueMappedToRed = this.params.valueMappedToRed; +this.jvxlData.valueMappedToBlue = this.params.valueMappedToBlue; +this.jvxlData.mappedDataMin = this.params.mappedDataMin; +this.jvxlData.mappedDataMax = this.params.mappedDataMax; +this.jvxlData.isColorReversed = this.params.isColorReversed; +if (this.params.insideOut) insideOut = !insideOut; +this.params.insideOut = this.jvxlData.insideOut = insideOut; +}, "~N,~N,~N,~N,~B"); +Clazz_overrideMethod(c$, "readSurfaceData", +function(isMapDataIgnored){ +this.thisInside = !this.params.isContoured; +if (this.readSurfaceDataXML()) return; +this.tempDataXml = this.xr.getXmlData("jvxlEdgeData", null, true, false); +this.bsVoxelBitSet = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlEdgeData", this.tempDataXml, false, false)); +this.readSurfaceDataJXR(); +}, "~B"); +Clazz_defineMethod(c$, "readSurfaceDataXML", +function(){ +if (this.vertexDataOnly) { +this.getEncodedVertexData(); +return true; +}if (this.params.thePlane != null) { +this.volumeData.setDataDistanceToPlane(this.params.thePlane); +this.setVolumeDataV(this.volumeData); +this.params.cutoff = 0; +this.jvxlData.setSurfaceInfo(this.params.thePlane, this.params.mapLattice, 0, ""); +this.jvxlData.scale3d = this.params.scale3d; +return true; +}return false; +}); +Clazz_defineMethod(c$, "readSurfaceDataJXR", +function(){ +this.readSurfaceDataVFR(false); +this.volumeData.setMappingPlane(null); +}); +Clazz_defineMethod(c$, "jvxlReadFractionData", +function(type, nPoints){ +var str; +try { +if (type.equals("edge")) { +str = J.jvxl.data.JvxlCoder.jvxlDecompressString(J.jvxl.readers.XmlReader.getXmlAttrib(this.tempDataXml, "data")); +} else { +var data = this.xr.getXmlData("jvxlColorData", null, true, false); +this.jvxlData.isJvxlPrecisionColor = J.jvxl.readers.JvxlXmlReader.getEncoding(data).endsWith("2"); +str = J.jvxl.data.JvxlCoder.jvxlDecompressString(J.jvxl.readers.XmlReader.getXmlAttrib(data, "data")); +}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Error reading " + type + " data " + e); +throw new NullPointerException(); +} else { +throw e; +} +} +return str; +}, "~S,~N"); +Clazz_overrideMethod(c$, "getVoxelBitSet", +function(nPoints){ +if (this.bsVoxelBitSet != null) return this.bsVoxelBitSet; +var bs = new JU.BS(); +var bsVoxelPtr = 0; +if (this.surfaceDataCount <= 0) return bs; +var nThisValue = 0; +while (bsVoxelPtr < nPoints) { +nThisValue = this.parseInt(); +if (nThisValue == -2147483648) { +this.rd(); +if (this.line == null || (nThisValue = this.parseIntStr(this.line)) == -2147483648) { +if (!this.endOfData) JU.Logger.error("end of file in JvxlReader?" + " line=" + this.line); +this.endOfData = true; +nThisValue = 10000; +}}this.thisInside = !this.thisInside; +++this.jvxlNSurfaceInts; +if (this.thisInside) bs.setBits(bsVoxelPtr, bsVoxelPtr + nThisValue); +bsVoxelPtr += nThisValue; +} +return bs; +}, "~N"); +Clazz_overrideMethod(c$, "getSurfacePointAndFraction", +function(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn){ +if (this.edgeDataCount <= 0) return this.getSPFv(cutoff, isCutoffAbsolute, valueA, valueB, pointA, edgeVector, x, y, z, vA, vB, fReturn, ptReturn); +ptReturn.scaleAdd2(fReturn[0] = this.jvxlGetNextFraction(this.edgeFractionBase, this.edgeFractionRange, 0.5), edgeVector, pointA); +if (Float.isNaN(this.valueMin)) this.setValueMinMax(); +return (this.valueCount == 0 || this.includeValueNaN && Float.isNaN(fReturn[0]) ? fReturn[0] : this.getNextValue()); +}, "~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3"); +Clazz_defineMethod(c$, "getNextValue", +function(){ +var fraction = NaN; +while (this.colorPtr < this.valueCount && Float.isNaN(fraction)) { +if (this.jvxlData.isJvxlPrecisionColor) { +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(this.jvxlColorDataRead.charAt(this.colorPtr).charCodeAt(0), this.jvxlColorDataRead.charAt((this.colorPtr++) + this.valueCount).charCodeAt(0), this.colorFractionBase, this.colorFractionRange); +} else { +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(this.jvxlColorDataRead.charAt(this.colorPtr++).charCodeAt(0), this.colorFractionBase, this.colorFractionRange, 0.5); +}break; +} +return this.valueMin + fraction * this.valueRange; +}); +Clazz_defineMethod(c$, "setValueMinMax", +function(){ +this.valueCount = this.jvxlColorDataRead.length; +if (this.jvxlData.isJvxlPrecisionColor) this.valueCount /= 2; +this.includeValueNaN = (this.valueCount != this.jvxlEdgeDataRead.length); +this.valueMin = (!this.jvxlData.isJvxlPrecisionColor ? this.params.valueMappedToRed : this.params.mappedDataMin == 3.4028235E38 ? 0.0 : this.params.mappedDataMin); +this.valueRange = (!this.jvxlData.isJvxlPrecisionColor ? this.params.valueMappedToBlue : this.params.mappedDataMin == 3.4028235E38 ? 1.0 : this.params.mappedDataMax) - this.valueMin; +this.haveReadColorData = true; +}); +Clazz_defineMethod(c$, "jvxlGetNextFraction", +function(base, range, fracOffset){ +if (this.fractionPtr >= this.strFractionTemp.length) { +if (!this.endOfData) JU.Logger.error("end of file reading compressed fraction data"); +this.endOfData = true; +this.strFractionTemp = "" + String.fromCharCode(base); +this.fractionPtr = 0; +}return J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(this.strFractionTemp.charAt(this.fractionPtr++).charCodeAt(0), base, range, fracOffset); +}, "~N,~N,~N"); +Clazz_overrideMethod(c$, "readColorData", +function(){ +if (!this.jvxlDataIsColorMapped) return ""; +var vertexCount = this.jvxlData.vertexCount = this.meshData.vc; +var colixes = this.meshData.vcs; +var vertexValues = this.meshData.vvs; +if ("none".equals(this.jvxlColorEncodingRead)) { +this.jvxlData.vertexColors = Clazz_newIntArray (vertexCount, 0); +var nextc = Clazz_newIntArray (1, 0); +var n = JU.PT.parseIntNext(this.jvxlColorDataRead, nextc); +n = Math.min(n, vertexCount); +var tokens = JU.PT.getTokens(this.jvxlColorDataRead.substring(nextc[0])); +var haveTranslucent = false; +var trans = this.jvxlData.translucency; +var lastColor = 0; +for (var i = 0; i < n; i++) try { +var c = J.jvxl.readers.JvxlXmlReader.getColor(tokens[i]); +if (c == 0) c = lastColor; + else lastColor = c; +colixes[i] = JU.C.getColixTranslucent(this.jvxlData.vertexColors[i] = c); +if (JU.C.isColixTranslucent(colixes[i])) haveTranslucent = true; + else if (trans != 0) colixes[i] = JU.C.getColixTranslucent3(colixes[i], true, trans); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.info("JvxlXmlReader: Cannot interpret color code: " + tokens[i]); +} else { +throw e; +} +} + +if (haveTranslucent && trans == 0) { +this.jvxlData.translucency = 0.5; +}return "-"; +}if (this.params.colorEncoder == null) this.params.colorEncoder = new JU.ColorEncoder(null, null); +this.params.colorEncoder.setColorScheme(null, false); +this.params.colorEncoder.setRange(this.params.valueMappedToRed, this.params.valueMappedToBlue, this.params.isColorReversed); +JU.Logger.info("JVXL reading color data mapped min/max: " + this.params.mappedDataMin + "/" + this.params.mappedDataMax + " for " + vertexCount + " vertices." + " using encoding keys " + this.colorFractionBase + " " + this.colorFractionRange); +JU.Logger.info("mapping red-->blue for " + this.params.valueMappedToRed + " to " + this.params.valueMappedToBlue + " colorPrecision:" + this.jvxlData.isJvxlPrecisionColor); +var getValues = (Float.isNaN(this.valueMin)); +if (getValues) this.setValueMinMax(); +var contourPlaneMinimumValue = 3.4028235E38; +var contourPlaneMaximumValue = -3.4028235E38; +if (colixes == null || colixes.length < vertexCount) this.meshData.vcs = colixes = Clazz_newShortArray (vertexCount, 0); +var colixNeg = 0; +var colixPos = 0; +if (this.params.colorBySign) { +colixPos = JU.C.getColix(this.params.isColorReversed ? this.params.colorNeg : this.params.colorPos); +colixNeg = JU.C.getColix(this.params.isColorReversed ? this.params.colorPos : this.params.colorNeg); +}var vertexIncrement = this.meshData.vertexIncrement; +var needContourMinMax = (this.params.mappedDataMin == 3.4028235E38); +for (var i = 0; i < vertexCount; i += vertexIncrement) { +var value; +if (getValues) value = vertexValues[i] = this.getNextValue(); + else value = vertexValues[i]; +if (needContourMinMax) { +if (value < contourPlaneMinimumValue) contourPlaneMinimumValue = value; +if (value > contourPlaneMaximumValue) contourPlaneMaximumValue = value; +}} +if (needContourMinMax) { +this.params.mappedDataMin = contourPlaneMinimumValue; +this.params.mappedDataMax = contourPlaneMaximumValue; +}if (this.jvxlData.colorScheme != null) { +var setContourValue = (this.marchingSquares != null && this.params.isContoured); +for (var i = 0; i < vertexCount; i += vertexIncrement) { +var value = vertexValues[i]; +if (setContourValue) { +this.marchingSquares.setContourData(i, value); +continue; +}var colix = (!this.params.colorBySign ? this.params.colorEncoder.getColorIndex(value) : (this.params.isColorReversed ? value > 0 : value <= 0) ? colixNeg : colixPos); +colixes[i] = JU.C.getColixTranslucent3(colix, true, this.jvxlData.translucency); +} +}return this.jvxlColorDataRead + "\n"; +}); +c$.getColor = Clazz_defineMethod(c$, "getColor", +function(c){ +var n = 0; +try { +switch ((c.charAt(0)).charCodeAt(0)) { +case 91: +n = JU.CU.getArgbFromString(c); +break; +case 48: +n = JU.PT.parseIntRadix(c.substring(2), 16); +break; +default: +n = JU.PT.parseIntRadix(c, 10); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return n; +}, "~S"); +Clazz_defineMethod(c$, "getEncodedVertexData", +function(){ +var sdata = this.xr.getXmlData("jvxlSurfaceData", null, true, false); +this.jvxlDecodeVertexData(this.xr.getXmlData("jvxlVertexData", sdata, true, false), false); +var tData = this.xr.getXmlData("jvxlTriangleData", sdata, true, false); +var edgeData = this.xr.getXmlData("jvxlTriangleEdgeData", sdata, true, false); +var polygonColorData = this.xr.getXmlData("jvxlPolygonColorData", sdata, false, false); +this.jvxlDecodeTriangleData(tData, edgeData, polygonColorData); +var cData = this.xr.getXmlData("jvxlColorData", sdata, true, false); +this.jvxlColorEncodingRead = J.jvxl.readers.JvxlXmlReader.getEncoding(cData); +this.jvxlData.isJvxlPrecisionColor = this.jvxlColorEncodingRead.endsWith("2"); +cData = this.getData(cData, "jvxlColorData"); +this.jvxlColorDataRead = (this.jvxlColorEncodingRead.equals("none") ? cData : J.jvxl.data.JvxlCoder.jvxlDecompressString(cData)); +this.jvxlDataIsColorMapped = ((this.params.colorRgb == -2147483648 || this.params.colorRgb == 2147483647) && this.jvxlColorDataRead.length > 0); +if (this.haveContourData) this.jvxlDecodeContourData(this.jvxlData, this.xr.getXmlData("jvxlContourData", null, false, false)); +}); +Clazz_defineMethod(c$, "getData", +function(sdata, name){ +var data = J.jvxl.readers.XmlReader.getXmlAttrib(sdata, "data"); +if (data.length == 0) data = this.xr.getXmlData(name, sdata, false, false); +return data; +}, "~S,~S"); +c$.getEncoding = Clazz_defineMethod(c$, "getEncoding", +function(data){ +if (J.jvxl.readers.XmlReader.getXmlAttrib(data, "len").length > 0) return ""; +var s = J.jvxl.readers.XmlReader.getXmlAttrib(data, "encoding"); +return (s.length == 0 ? "none" : s); +}, "~S"); +Clazz_defineMethod(c$, "jvxlDecodeVertexData", +function(data, asArray){ +var vertexCount = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(data, "count")); +if (!asArray) JU.Logger.info("Reading " + vertexCount + " vertices"); +var ptCount = vertexCount * 3; +var vertices = (asArray ? new Array(vertexCount) : null); +var fraction; +var vData = J.jvxl.readers.XmlReader.getXmlAttrib(data, "data"); +var encoding = J.jvxl.readers.JvxlXmlReader.getEncoding(data); +if ("none".equals(encoding)) { +if (vData.length == 0) vData = this.xr.getXmlData("jvxlVertexData", data, false, false); +var fdata = JU.PT.parseFloatArray(vData); +if (fdata[0] != vertexCount * 3) JU.Logger.info("JvxlXmlReader: vertexData count=" + (Clazz_floatToInt(fdata[0])) + "; expected " + (vertexCount * 3)); +for (var i = 0, pt = 1; i < vertexCount; i++) { +var p = JU.P3.new3(fdata[pt++], fdata[pt++], fdata[pt++]); +if (asArray) vertices[i] = p; + else this.addVertexCopy(p, 0, i, false); +} +} else { +var min = this.xr.getXmlPoint(data, "min"); +var range = this.xr.getXmlPoint(data, "max"); +range.sub(min); +var colorFractionBase = this.jvxlData.colorFractionBase; +var colorFractionRange = this.jvxlData.colorFractionRange; +var s = J.jvxl.data.JvxlCoder.jvxlDecompressString(vData); +if (s.length == 0) s = this.xr.getXmlData("jvxlVertexData", data, false, false); +for (var i = 0, pt = -1; i < vertexCount; i++) { +var p = new JU.P3(); +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(s.charAt(++pt).charCodeAt(0), s.charAt(pt + ptCount).charCodeAt(0), colorFractionBase, colorFractionRange); +p.x = min.x + fraction * range.x; +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(s.charAt(++pt).charCodeAt(0), s.charAt(pt + ptCount).charCodeAt(0), colorFractionBase, colorFractionRange); +p.y = min.y + fraction * range.y; +fraction = J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter2(s.charAt(++pt).charCodeAt(0), s.charAt(pt + ptCount).charCodeAt(0), colorFractionBase, colorFractionRange); +p.z = min.z + fraction * range.z; +if (asArray) vertices[i] = p; + else this.addVertexCopy(p, 0, i, false); +} +}return vertices; +}, "~S,~B"); +Clazz_defineMethod(c$, "jvxlDecodeTriangleData", +function(tdata, edgeData, colorData){ +var nTriangles = this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(tdata, "count")); +if (nTriangles < 0) return; +var nextc = Clazz_newIntArray (1, 0); +var nColors = (colorData == null ? -1 : 1); +var color = 0; +JU.Logger.info("Reading " + nTriangles + " triangles"); +var encoding = J.jvxl.readers.JvxlXmlReader.getEncoding(tdata); +tdata = this.getData(tdata, "jvxlTriangleData"); +var edata = this.getData(edgeData, "jvxlTriangleEdgeData"); +var vertex = Clazz_newIntArray (3, 0); +var nextp = Clazz_newIntArray (1, 0); +var nexte = null; +var edgeMask = 7; +var haveEdgeInfo; +var haveEncoding = !"none".equals(encoding); +if (haveEncoding) { +tdata = J.jvxl.data.JvxlCoder.jvxlDecompressString(tdata); +edata = J.jvxl.data.JvxlCoder.jvxlDecompressString(edata).trim(); +haveEdgeInfo = (edata.length == nTriangles); +} else { +var n = JU.PT.parseIntNext(tdata, nextp); +haveEdgeInfo = (edata.length > 0); +if (haveEdgeInfo) { +nexte = Clazz_newIntArray (1, 0); +JU.PT.parseIntNext(edata, nexte); +} else if (n > 0) { +JU.Logger.info("JvxlXmlReader: jvxlTriangleEdgeData count=" + n + "; expected " + nTriangles); +}}for (var i = 0, v = 0, p = 0, pt = -1; i < nTriangles; ) { +if (haveEncoding) { +var ch = tdata.charAt(++pt); +var diff; +switch ((ch).charCodeAt(0)) { +case 33: +diff = 0; +break; +case 43: +case 46: +case 32: +case 10: +case 13: +case 9: +case 44: +continue; +case 45: +case 48: +case 49: +case 50: +case 51: +case 52: +case 53: +case 54: +case 55: +case 56: +case 57: +nextp[0] = pt; +diff = JU.PT.parseIntNext(tdata, nextp); +pt = nextp[0] - 1; +break; +default: +diff = ch.charCodeAt(0) - 92; +} +v += diff; +} else { +v = JU.PT.parseIntNext(tdata, nextp) - 1; +}vertex[p] = v; +if (++p == 3) { +p = 0; +if (haveEdgeInfo) { +edgeMask = (nexte == null ? (edata.charAt(i)).charCodeAt(0) - 48 : JU.PT.parseIntNext(edata, nexte)); +if (edgeMask < 0 || edgeMask > 7) edgeMask = 7; +}if (--nColors == 0) { +nColors = (JU.PT.parseIntNext(colorData, nextc)); +var c = JU.PT.parseIntNext(colorData, nextc); +if (c == -2147483648) nColors = 0; + else color = c | 0xFF000000; +}this.addTriangleCheck(vertex[0], vertex[1], vertex[2], edgeMask, color, false, color); +i++; +}} +}, "~S,~S,~S"); +Clazz_defineMethod(c$, "jvxlDecodeContourData", +function(jvxlData, data){ +var vs = new JU.Lst(); +var values = new JU.SB(); +var colors = new JU.SB(); +var pt = -1; +jvxlData.vContours = null; +if (data == null) return; +while ((pt = data.indexOf("= 0) { +var v = new JU.Lst(); +var s = this.xr.getXmlData("jvxlContour", data.substring(pt), true, false); +var value = this.parseFloatStr(J.jvxl.readers.XmlReader.getXmlAttrib(s, "value")); +values.append(" ").appendF(value); +var color = J.jvxl.readers.JvxlXmlReader.getColor(J.jvxl.readers.XmlReader.getXmlAttrib(s, "color")); +var colix = JU.C.getColix(color); +colors.append(" ").append(JU.Escape.escapeColor(color)); +var fData = J.jvxl.data.JvxlCoder.jvxlDecompressString(J.jvxl.readers.XmlReader.getXmlAttrib(s, "data")); +var bs = J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlContour", s, false, false)); +var n = bs.length(); +J.shapesurface.IsosurfaceMesh.setContourVector(v, n, bs, value, colix, color, JU.SB.newS(fData)); +vs.addLast(v); +} +var n = vs.size(); +if (n > 0) { +jvxlData.vContours = JU.AU.createArrayOfArrayList(n); +jvxlData.contourColixes = this.params.contourColixes = Clazz_newShortArray (n, 0); +jvxlData.contourValues = this.params.contoursDiscrete = Clazz_newFloatArray (n, 0); +for (var i = 0; i < n; i++) { +jvxlData.vContours[i] = vs.get(i); +jvxlData.contourValues[i] = (jvxlData.vContours[i].get(2)).floatValue(); +jvxlData.contourColixes[i] = (jvxlData.vContours[i].get(3))[0]; +} +jvxlData.contourColors = JU.C.getHexCodes(jvxlData.contourColixes); +JU.Logger.info("JVXL read: " + n + " discrete contours"); +JU.Logger.info("JVXL read: contour values: " + values); +JU.Logger.info("JVXL read: contour colors: " + colors); +}}, "J.jvxl.data.JvxlData,~S"); +Clazz_overrideMethod(c$, "postProcessVertices", +function(){ +var bsInvalid = this.params.bsExcluded[1]; +if (bsInvalid != null) { +if (this.meshDataServer != null) this.meshDataServer.fillMeshData(this.meshData, 1, null); +this.meshData.invalidateVertices(bsInvalid); +if (this.meshDataServer != null) { +this.meshDataServer.fillMeshData(this.meshData, 4, null); +this.meshData = new J.jvxl.data.MeshData(); +}this.updateTriangles(); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.rendersurface"); +Clazz_load(["J.render.MeshRenderer"], "J.rendersurface.IsosurfaceRenderer", ["JU.V3", "JU.C", "$.Normix"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.iHideBackground = false; +this.isBicolorMap = false; +this.backgroundColix = 0; +this.nError = 0; +this.vertexValues = null; +this.imesh = null; +this.isosurface = null; +this.isNavigationMode = false; +this.iShowNormals = false; +this.showNumbers = false; +this.showKey = null; +this.hasColorRange = false; +this.meshScale = -1; +this.mySlabValue = 0; +this.globalSlabValue = 0; +Clazz_instantialize(this, arguments);}, J.rendersurface, "IsosurfaceRenderer", J.render.MeshRenderer); +Clazz_overrideMethod(c$, "render", +function(){ +return this.renderIso(); +}); +Clazz_defineMethod(c$, "renderIso", +function(){ +this.setGlobals(); +for (var i = this.isosurface.meshCount; --i >= 0; ) { +this.mesh = this.imesh = this.isosurface.meshes[i]; +if (this.imesh.connectedAtoms != null && !this.vwr.ms.at[this.imesh.connectedAtoms[0]].checkVisible()) continue; +this.hasColorRange = false; +if (this.renderMeshSlab()) { +this.renderInfo(); +if (this.isExport && this.isGhostPass) { +this.exportPass = 1; +this.renderMeshSlab(); +this.exportPass = 2; +}}} +return this.needTranslucent; +}); +Clazz_defineMethod(c$, "setGlobals", +function(){ +this.needTranslucent = false; +this.antialias = this.g3d.isAntialiased(); +this.iShowNormals = this.vwr.getBoolean(603979965); +this.showNumbers = this.vwr.getBoolean(603979964); +this.isosurface = this.shape; +this.exportPass = (this.isExport ? 2 : 0); +this.isNavigationMode = this.vwr.getBoolean(603979889); +this.showKey = (this.vwr.getBoolean(603979867) ? Boolean.TRUE : null); +this.isosurface.keyXy = null; +this.meshScale = -1; +this.globalSlabValue = this.vwr.gdata.slab; +this.mySlabValue = (this.isNavigationMode ? Clazz_floatToInt(this.tm.getNavigationOffset().z) : 2147483647); +}); +Clazz_defineMethod(c$, "renderInfo", +function(){ +if (this.isExport || !this.hasColorRange || this.imesh.colorEncoder == null || Boolean.TRUE !== this.showKey) return; +this.showKey = Boolean.FALSE; +var colors = null; +var colixes = null; +var vContours = null; +var n = 0; +var type = 0; +if (this.imesh.showContourLines) { +vContours = this.imesh.getContours(); +if (vContours == null) { +colixes = this.imesh.jvxlData.contourColixes; +if (colixes == null) return; +n = colixes.length; +} else { +n = vContours.length; +type = 1; +}} else { +colors = this.imesh.colorEncoder.getColorSchemeArray(this.imesh.colorEncoder.currentPalette); +n = (colors == null ? 0 : colors.length); +type = 2; +}if (n < 2) return; +var factor = (this.antialias ? 2 : 1); +var height = this.vwr.getScreenHeight() * factor; +var dy = Clazz_doubleToInt(Clazz_doubleToInt(height / 2) / (n - 1)); +var y = Clazz_doubleToInt(height / 4) * 3 - dy; +var x = 10 * factor; +var dx = 20 * factor; +this.isosurface.keyXy = Clazz_newIntArray(-1, [Clazz_doubleToInt(x / factor), 0, Clazz_doubleToInt((x + dx) / factor), Clazz_doubleToInt((y + dy) / factor), Clazz_doubleToInt(dy / factor)]); +for (var i = 0; i < n; i++, y -= dy) { +switch (type) { +case 0: +if (!this.g3d.setC(colixes[i])) return; +break; +case 1: +if (!this.g3d.setC((vContours[i].get(3))[0])) return; +break; +case 2: +this.vwr.gdata.setColor(colors[i]); +break; +} +this.g3d.fillTextRect(x, y, 5, -2147483648, dx, dy); +} +this.isosurface.keyXy[1] = Clazz_doubleToInt((y + dy) / factor); +}); +Clazz_defineMethod(c$, "renderMeshSlab", +function(){ +this.volumeRender = (this.imesh.jvxlData.colorDensity && this.imesh.jvxlData.allowVolumeRender); +var thisSlabValue = this.mySlabValue; +this.frontOnly = this.mesh.frontOnly || this.shapeID == 26; +this.isShell = this.mesh.isShell && this.shapeID != 26; +if (!this.isNavigationMode) { +this.meshSlabValue = this.imesh.jvxlData.slabValue; +if (this.meshSlabValue != -2147483648 && this.imesh.jvxlData.isSlabbable) { +var points = this.imesh.jvxlData.boundingBox; +var z0 = 3.4028235E38; +var z1 = 1.4E-45; +for (var i = points.length; --i >= 0; ) { +this.pt2f.setT(points[i]); +this.tm.transformPt3f(this.pt2f, this.pt2f); +if (this.pt2f.z < z0) z0 = this.pt2f.z; +if (this.pt2f.z > z1) z1 = this.pt2f.z; +} +thisSlabValue = Math.round(z0 + (z1 - z0) * (100 - this.meshSlabValue) / 100); +this.frontOnly = new Boolean (this.frontOnly & (this.meshSlabValue >= 100)).valueOf(); +this.isShell = new Boolean (this.isShell & (this.meshSlabValue >= 100)).valueOf(); +}}var tCover = this.vwr.gdata.translucentCoverOnly; +this.vwr.gdata.translucentCoverOnly = (this.frontOnly || !this.vwr.getBoolean(603979967)); +this.thePlane = this.imesh.jvxlData.jvxlPlane; +this.vertexValues = this.mesh.vvs; +var isOK; +if (thisSlabValue != 2147483647 && this.imesh.jvxlData.isSlabbable) { +this.g3d.setSlab(thisSlabValue); +isOK = this.renderMesh2(this.mesh); +this.g3d.setSlab(this.globalSlabValue); +} else { +isOK = this.renderMesh2(this.mesh); +}this.vwr.gdata.translucentCoverOnly = tCover; +return isOK; +}); +Clazz_overrideMethod(c$, "render2", +function(isExport){ +if (this.volumeRender) { +this.renderPoints(); +return; +}switch (this.imesh.dataType) { +case 70: +this.renderLonePair(false); +return; +case 71: +this.renderLonePair(true); +return; +} +this.isBicolorMap = this.imesh.jvxlData.isBicolorMap; +this.render2b(isExport); +if (!this.g3d.setC(4)) return; +if (this.imesh.showContourLines) this.renderContourLines(); +}, "~B"); +Clazz_defineMethod(c$, "renderLonePair", +function(isRadical){ +this.pt2f.setT(this.vertices[1]); +this.tm.transformPt3f(this.pt2f, this.pt2f); +var r = Clazz_floatToInt(this.vwr.tm.scaleToScreen(Clazz_floatToInt(this.pt2f.z), 100)); +if (r < 1) r = 1; +if (!isRadical) { +var v1 = new JU.V3(); +var v2 = new JU.V3(); +this.pt1f.setT(this.vertices[0]); +this.tm.transformPt3f(this.pt1f, this.pt1f); +v1.sub2(this.pt2f, this.pt1f); +v2.set(v1.x, v1.y, v1.z + 1); +v2.cross(v2, v1); +v2.normalize(); +var f = this.vwr.tm.scaleToScreen(Clazz_floatToInt(this.pt1f.z), 100); +v2.scale(f); +this.pt1f.add2(this.pt2f, v2); +this.pt2f.sub(v2); +this.screens[0].set(Math.round(this.pt1f.x), Math.round(this.pt1f.y), Math.round(this.pt1f.z)); +this.g3d.fillSphereI(r, this.screens[0]); +}this.screens[1].set(Math.round(this.pt2f.x), Math.round(this.pt2f.y), Math.round(this.pt2f.z)); +this.g3d.fillSphereI(r, this.screens[1]); +}, "~B"); +Clazz_defineMethod(c$, "renderContourLines", +function(){ +var vContours = this.imesh.getContours(); +if (vContours == null) { +if (this.imesh.jvxlData.contourValues != null) this.hasColorRange = true; +return; +}this.hasColorRange = (this.mesh.meshColix == 0); +for (var i = vContours.length; --i >= 0; ) { +var v = vContours[i]; +if (v.size() < 6) continue; +this.colix = (this.mesh.meshColix == 0 ? (v.get(3))[0] : this.mesh.meshColix); +if (!this.g3d.setC(this.colix)) return; +var n = v.size() - 1; +var diam = this.getDiameter(); +for (var j = 6; j < n; j++) { +var pt1 = v.get(j); +var pt2 = v.get(++j); +if (Float.isNaN(pt1.x) || Float.isNaN(pt2.x)) break; +this.tm.transformPtScrT3(pt1, this.pt1f); +this.tm.transformPtScrT3(pt2, this.pt2f); +this.pt1f.z -= 2; +this.pt2f.z -= 2; +if (!this.antialias && diam == 1) { +this.g3d.drawLineAB(this.pt1f, this.pt2f); +} else { +this.g3d.fillCylinderBits(1, diam, this.pt1f, this.pt2f); +}} +} +}); +Clazz_overrideMethod(c$, "renderPoints", +function(){ +try { +if (this.volumeRender) this.g3d.volumeRender(true); +var slabPoints = ((this.volumeRender || this.mesh.pc == 0) && this.selectedPolyOnly); +var incr = this.imesh.vertexIncrement; +var diam; +if (this.mesh.diameter <= 0) { +diam = this.vwr.getInt(553648140); +this.frontOnly = this.isShell = false; +} else { +diam = Clazz_doubleToInt(this.vwr.getScreenDim() / (this.volumeRender ? 50 : 100)); +}var ptSize = Math.round(Float.isNaN(this.mesh.volumeRenderPointSize) ? 150 : this.mesh.volumeRenderPointSize * 1000); +if (diam < 1) diam = 1; +var cX = (this.showNumbers ? Clazz_doubleToInt(this.vwr.getScreenWidth() / 2) : 0); +var cY = (this.showNumbers ? Clazz_doubleToInt(this.vwr.getScreenHeight() / 2) : 0); +if (this.showNumbers) this.vwr.gdata.setFontBold("Monospaced", 24); +for (var i = (!this.imesh.hasGridPoints || this.imesh.firstRealVertex < 0 ? 0 : this.imesh.firstRealVertex); i < this.vertexCount; i += incr) { +if (this.vertexValues != null && Float.isNaN(this.vertexValues[i]) || this.frontOnly && !this.isVisibleNormix(this.normixes[i]) || this.imesh.jvxlData.thisSet != null && !this.imesh.jvxlData.thisSet.get(this.mesh.vertexSets[i]) || !this.mesh.isColorSolid && this.mesh.vcs != null && !this.setColix(this.mesh.vcs[i]) || this.haveBsDisplay && !this.mesh.bsDisplay.get(i) || slabPoints && !this.bsPolygons.get(i)) continue; +this.hasColorRange = true; +if (this.showNumbers && this.screens[i].z > 10 && Math.abs(this.screens[i].x - cX) < 150 && Math.abs(this.screens[i].y - cY) < 150) { +var s = i + (this.mesh.isColorSolid ? "" : " " + this.mesh.vvs[i]); +this.g3d.setC(4); +this.g3d.drawStringNoSlab(s, null, this.screens[i].x, this.screens[i].y, this.screens[i].z - 30, 0); +}if (this.volumeRender) { +diam = Clazz_floatToInt(this.vwr.tm.scaleToScreen(this.screens[i].z, ptSize)); +if (diam < 1) diam = 1; +this.g3d.volumeRender4(diam, this.screens[i].x, this.screens[i].y, this.screens[i].z); +} else { +this.g3d.fillSphereI(diam, this.screens[i]); +}} +if (incr == 3) { +this.g3d.setC(this.isTranslucent ? JU.C.getColixTranslucent3(12, true, 0.5) : 12); +for (var i = 1; i < this.vertexCount; i += 3) this.g3d.fillCylinder(3, Clazz_doubleToInt(diam / 4), this.screens[i], this.screens[i + 1]); + +this.g3d.setC(this.isTranslucent ? JU.C.getColixTranslucent3(21, true, 0.5) : 21); +for (var i = 1; i < this.vertexCount; i += 3) this.g3d.fillSphereI(diam, this.screens[i]); + +this.g3d.setC(this.isTranslucent ? JU.C.getColixTranslucent3(7, true, 0.5) : 7); +for (var i = 2; i < this.vertexCount; i += 3) { +this.g3d.fillSphereI(diam, this.screens[i]); +} +}} catch (e) { +} +if (this.volumeRender) this.g3d.volumeRender(false); +}); +Clazz_overrideMethod(c$, "renderTriangles", +function(fill, iShowTriangles, isExport){ +this.g3d.addRenderer(1073742182); +var polygonIndexes = this.mesh.pis; +this.colix = (this.isGhostPass ? this.mesh.slabColix : !fill && this.mesh.meshColix != 0 ? this.mesh.meshColix : this.mesh.colix); +var vertexColixes = (!fill && this.mesh.meshColix != 0 ? null : this.mesh.vcs); +if (this.isTranslucentInherit) this.colix = JU.C.copyColixTranslucency(this.mesh.slabColix, this.mesh.colix); +this.g3d.setC(this.colix); +var generateSet = isExport; +if (generateSet) { +if (this.frontOnly && fill) this.frontOnly = false; +this.bsPolygonsToExport.clearAll(); +}if (this.exportType == 1) { +this.frontOnly = false; +}var colorSolid = (this.isGhostPass && (!this.isBicolorMap) || vertexColixes == null || this.mesh.isColorSolid); +var noColor = (this.isGhostPass && !this.isBicolorMap || vertexColixes == null || !fill && this.mesh.meshColix != 0); +var isPlane = (this.imesh.jvxlData.jvxlPlane != null); +var colix = this.colix; +if (isPlane && !colorSolid && !fill && this.mesh.fillTriangles) { +colorSolid = true; +colix = 4; +}var colorArrayed = (colorSolid && this.mesh.pcs != null); +if (colorArrayed && !fill && this.mesh.fillTriangles) colorArrayed = false; +var contourColixes = this.imesh.jvxlData.contourColixes; +this.hasColorRange = !colorSolid && !this.isBicolorMap; +var diam = this.getDiameter(); +var i0 = 0; +for (var i = this.mesh.pc; --i >= i0; ) { +var polygon = polygonIndexes[i]; +if (polygon == null || this.selectedPolyOnly && !this.bsPolygons.get(i)) continue; +var iA = polygon[0]; +var iB = polygon[1]; +var iC = polygon[2]; +if (this.imesh.jvxlData.thisSet != null && this.mesh.vertexSets != null && !this.imesh.jvxlData.thisSet.get(this.mesh.vertexSets[iA])) continue; +if (this.haveBsDisplay && (!this.mesh.bsDisplay.get(iA) || !this.mesh.bsDisplay.get(iB) || !this.mesh.bsDisplay.get(iC))) continue; +var nA = this.normixes[iA]; +var nB = this.normixes[iB]; +var nC = this.normixes[iC]; +var check = (this.frontOnly || this.isShell ? this.checkFront(nA, nB, nC) : 7); +if (fill && check == 0) continue; +var colixA; +var colixB; +var colixC; +if (colorSolid) { +if (colorArrayed && i < this.mesh.pcs.length) { +var c = this.mesh.pcs[i]; +if (c == 0) continue; +colix = c; +}if (iShowTriangles) colix = (Math.round(Math.random() * 10) + 5); +colixA = colixB = colixC = colix; +} else { +colixA = vertexColixes[iA]; +colixB = vertexColixes[iB]; +colixC = vertexColixes[iC]; +if (this.isBicolorMap) { +if (colixA != colixB || colixB != colixC) continue; +if (this.isGhostPass) { +colixA = colixB = colixC = JU.C.copyColixTranslucency(this.mesh.slabColix, colixA); +}}}if (fill) { +if (generateSet) { +this.bsPolygonsToExport.set(i); +continue; +}if (iB == iC) { +this.setColix(colixA); +if (iA == iB) this.g3d.fillSphereI(diam, this.screens[iA]); + else this.g3d.fillCylinder(3, diam, this.screens[iA], this.screens[iB]); +} else if (this.mesh.colorsExplicit) { +this.vwr.gdata.setColor(polygon[4]); +colixA = JU.C.copyColixTranslucency(this.mesh.colix, 2047); +this.g3d.setC(colixA); +this.g3d.fillTriangle3CN(this.screens[iA], colixA, nA, this.screens[iB], colixA, nB, this.screens[iC], colixA, nC); +} else { +if (this.isTranslucentInherit && vertexColixes != null) { +colixA = JU.C.copyColixTranslucency(this.mesh.slabColix, vertexColixes[iA]); +colixB = JU.C.copyColixTranslucency(this.mesh.slabColix, vertexColixes[iB]); +colixC = JU.C.copyColixTranslucency(this.mesh.slabColix, vertexColixes[iC]); +}this.g3d.fillTriangle3CN(this.screens[iA], colixA, nA, this.screens[iB], colixB, nB, this.screens[iC], colixC, nC); +}if (this.iShowNormals) this.renderNormals(); +} else { +check &= polygon[3]; +if (check == 0) continue; +if (iShowTriangles) check = 7; +this.pt1i.setT(this.screens[iA]); +this.pt2i.setT(this.screens[iB]); +this.pt3i.setT(this.screens[iC]); +this.pt1i.z -= 2; +this.pt2i.z -= 2; +this.pt3i.z -= 2; +if (noColor) { +} else if (colorArrayed) { +this.g3d.setC(this.mesh.fillTriangles ? 4 : contourColixes[polygon[4] % contourColixes.length]); +} else { +this.drawTriangle(this.pt1i, colixA, this.pt2i, colixB, this.pt3i, colixC, check, diam); +continue; +}this.drawTriangle(this.pt1i, colix, this.pt2i, colix, this.pt3i, colix, check, diam); +}} +if (generateSet) this.exportSurface(colorSolid ? colix : 0); +}, "~B,~B,~B"); +Clazz_defineMethod(c$, "getDiameter", +function(){ +var diam; +if (this.mesh.diameter <= 0) { +diam = (this.meshScale < 0 ? this.meshScale = this.vwr.getInt(553648149) : this.meshScale); +if (this.antialias) diam *= 2; +} else { +diam = Clazz_doubleToInt(this.vwr.getScreenDim() / 100); +}if (diam < 1) diam = 1; +return diam; +}); +Clazz_defineMethod(c$, "renderNormals", +function(){ +if (!this.g3d.setC(JU.C.copyColixTranslucency(this.mesh.colix, 8))) return; +this.vwr.gdata.setFontBold("Monospaced", 24); +var vertexVectors = JU.Normix.getVertexVectors(); +for (var i = this.vertexCount; --i >= 0; ) { +if (this.vertexValues != null && Float.isNaN(this.vertexValues[i])) continue; +this.pt1f.setT(this.vertices[i]); +var n = this.mesh.normixes[i]; +if (n >= 0) { +this.pt2f.scaleAdd2(0.3, vertexVectors[n], this.pt1f); +this.tm.transformPtScrT3(this.pt2f, this.pt2f); +this.pt1f.set(this.screens[i].x, this.screens[i].y, this.screens[i].z); +this.g3d.drawLineAB(this.pt1f, this.pt2f); +}} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coresurface.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coresurface.z.js new file mode 100755 index 000000000000..e2427181abc9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coresurface.z.js @@ -0,0 +1,673 @@ +(function(fb,gc,hc,ic,M,jc,E,aa,T,U,G,A,kc,Z,lc,ba,t,x,za,da,ja,g,Ha,ea,pa,qa,ua,D,mc,nc,Ia,oc,pc,qc,rc,Ja,gb,sc,tc,uc,vc,wc,xc,yc,zc,Ac,Bc,Cc,Dc,Ec,Fc,Gc,Hc,Ic,Jc,e,l){E("JS");T(null,"JS.ScriptExt",["JU.AU"],function(){var d=G(function(){this.e=this.vwr=null;this.chk=!1;this.st=null;this.slen=0;U(this,arguments)},JS,"ScriptExt",null);e(d,"init",function(a){this.e=a;this.vwr=this.e.vwr;return this},"~O");e(d,"atomExpressionAt",function(a){return this.e.atomExpressionAt(a)},"~N");e(d,"checkLength", +function(a){this.e.checkLength(a)},"~N");e(d,"error",function(a){this.e.error(a)},"~N");e(d,"invArg",function(){this.e.invArg()});e(d,"invPO",function(){this.error(23)});e(d,"getShapeProperty",function(a,b){return this.e.getShapeProperty(a,b)},"~N,~S");e(d,"paramAsStr",function(a){return this.e.paramAsStr(a)},"~N");e(d,"centerParameter",function(a){return this.e.centerParameter(a,null)},"~N");e(d,"floatParameter",function(a){return this.e.floatParameter(a)},"~N");e(d,"getPoint3f",function(a,b){return this.e.getPoint3f(a, +b,!0)},"~N,~B");e(d,"intParameter",function(a){return this.e.intParameter(a)},"~N");e(d,"isFloatParameter",function(a){switch(this.e.tokAt(a)){case 2:case 3:return!0}return!1},"~N");e(d,"setShapeProperty",function(a,b,c){this.e.setShapeProperty(a,b,c)},"~N,~S,~O");e(d,"showString",function(a){this.e.showString(a)},"~S");e(d,"stringParameter",function(a){return this.e.stringParameter(a)},"~N");e(d,"getToken",function(a){return this.e.getToken(a)},"~N");e(d,"tokAt",function(a){return this.e.tokAt(a)}, +"~N");e(d,"setShapeId",function(a,b,c){c&&this.invArg();b=this.e.setShapeNameParameter(b).toLowerCase();this.setShapeProperty(a,"thisID",b);return b},"~N,~N,~B");e(d,"getColorTrans",function(a,b,c,f){c=3.4028235E38;1765808134!=a.theTok&&--b;switch(this.tokAt(b+1)){case 603979967:b++;c=this.isFloatParameter(b+1)?a.getTranslucentLevel(++b):this.vwr.getFloat(570425353);break;case 1073742074:b++,c=0}a.isColorParam(b+1)?f[0]=a.getArgbParam(++b):1073742333==this.tokAt(b+1)?(f[0]=0,a.iToken=b+1):3.4028235E38== +c?this.invArg():f[0]=-2147483648;return c},"JS.ScriptEval,~N,~B,~A");e(d,"finalizeObject",function(a,b,c,f,v,R,d,e){v&&this.setShapeProperty(a,"set",R);-2147483648!=b&&this.e.setShapePropertyBs(a,"color",Integer.$valueOf(b),e);3.4028235E38!=c&&this.e.setShapeTranslucency(a,"","translucent",c,e);0!=f&&this.setShapeProperty(a,"scale",Integer.$valueOf(f));0>d&&(d=-1-d,this.setShapeProperty(a,"token",Integer.$valueOf(1073742018)),this.setShapeProperty(a,"token",Integer.$valueOf(1073742046)));0N.length&&this.invArg()}p=a.iToken;b=!0;if(this.chk)break;if(1073741998==y){N=JU.Measure.getBestLineThroughPoints(N,-1);if(0!=j&&(h=JU.V3.newVsub(N[1],N[0]), +h.scale(1/h.length()),N=Q?JU.Measure.getProjectedLineSegment(e,-1,N[0],h,null):this.vwr.getTriangulator().intersectLine(e,-1,N[0],h),null==N||null==N[1]))return;c||(this.setShapeProperty(22,"points",Integer.$valueOf(g)),c=!0);y=new JU.Lst;y.addLast(N[0]);y.addLast(N[1]);this.setShapeProperty(22,"coords",y);break}0==j?(L=h,F="planedef"):(1073741994==j?(F="polygon",N=JU.Measure.getPointsOnPlane(e,h),e=N.toArray(Array(N.size())),h=new JU.Lst,h.addLast(e),h.addLast(null),L=h):(P&&1814695966==j&&J.api.Interface.getInterface("JU.BZone", +this.vwr,"script").drawHKL(this.vwr,na,h,e),F="polygon",L=this.vwr.getTriangulator().intersectPlane(h,e,Q?-1:0)),g=0);break;case 1275068447:e=a.isArrayParameter(++p)?a.getPointArray(p,-1,!1):null;null==e&&a.isAtomExpression(p)&&(P=a.atomExpressionAt(p),e=this.vwr.ms.getAtomPointVector(P).toArray(Array(P.cardinality())));null!=e&&(p=a.iToken+1,12289==this.tokAt(p)&&(u=a.centerParameter(++p,null),p=a.iToken+1));switch(this.tokAt(p)){case 536875059:c="";break;case 1111490563:c="Cs";break;case 1073742330:e= +D(-1,[a.objectNameParameter(++p),null]);if(this.chk)return;this.vwr.shm.getShapePropertyData(21,"points",e);e=e[1];null==e&&this.invArg();c="";break;case 1275203608:c=":poly";break;case 134217764:null==u&&(u=new JU.P3);c=this.vwr.ms.generateCrystalClass(this.vwr.bsA().nextSetBit(0),JU.P3.new3(NaN,NaN,NaN));null!=e&&this.invArg();e=Array(c.size());for(y=c.size();0<=--y;)e[y]=c.get(y);p++;c="";break;default:c=a.optParameterAsString(p)}g=0==g?1:g/100;f=0;0y;y++)x[y]=A(b[y]);b=!0;break;case 1677721602:case 1153433601:if(null==x||Ka>(1228931586==a.theTok?2:3))Ka=0,x=t(-1,[-1,-1,-1,-1]);x[Ka++]=this.atomExpressionAt(++p).nextSetBit(0);p=a.iToken;x[Ka++]=1677721602==a.theTok?this.atomExpressionAt(++p).nextSetBit(0):-1;p= +a.iToken;b=!0;break;case 554176565:switch(this.getToken(++p).tok){case 1073742330:F="slab";L=a.objectNameParameter(++p);p=a.iToken;b=!0;break;default:this.invArg()}break;case 1275203608:case 134217751:case 1073742106:Q=134217751==y;F="polygon";b=!0;h=new JU.Lst;var V=0,L=0,E=P=N=null;if(a.isArrayParameter(++p)){N=a.getPointArray(p,-1,!0);if(0L&&(Q= +!0);break;default:null==E&&(!Q&&!this.chk)&&(E=J.api.Interface.getInterface("JU.MeshCapper",this.vwr,"script").set(null).triangulatePolygon(N,-1))}if(null==E&&!Q){E=JU.AU.newInt2(L);for(y=0;yQ.length||4K&&this.invArg();1814695966==this.tokAt(p+1)?(f=new JU.P3,d=1073742066,a.iToken=++p):1073742066==this.tokAt(p+1)&&(p++,f=this.getPoint3f(p+1,!1),d=1073742066,p=a.iToken)}else 1073742327== +this.tokAt(p+1)&&(K=-2,a.iToken=++p);null!=e&&(p++,a.isCenterParameter(p)&&(u=a.centerParameter(p,l)));a.checkLast(a.iToken);if(this.chk)return;p="";l=null!=v?v.nextSetBit(0):-1;null==v&&0<=this.vwr.am.cmi&&(v=this.vwr.getModelUndeletedAtomsBitSet(this.vwr.am.cmi));if(null!=v){p=this.vwr.getModelkit(!1).drawSymmetry(na,k,l,e,c,j,u,f,g,K,d,n,!1);if(null==p)return;k&&(aa(f,"JM.Atom")&&aa(u,"JM.Atom"))&&(0<=a.fullCommand.indexOf("#quiet")&&(p=JU.PT.rep(p,"print","#print")),p+="\nmodelkit set atomset "+ +JU.PT.esc(na+"|"+u.i+"|"+f.i+"|"+a.fullCommand)+";")}a.runBufferedSafely(0=y||255k&&this.invArg(),h.clearAll(),h.set(k),k=3;c.sm.loadShape(b);for(q=h.nextSetBit(0);0<=q;q=h.nextSetBit(q+1)){var r=k;if(1073742001==this.tokAt(r)&&this.listIsosurface(b))break;this.setShapeProperty(b,"init",Integer.$valueOf(q));if(a)break;var K=null,u=this.getShapeProperty(b,"moNumber").intValue(),l=this.getShapeProperty(b,"moLinearCombination"),t=this.getShapeProperty(b,"moSquareData"),D=null==l?null:this.getShapeProperty(b,"moSquareLinear"); +0==u&&(u=2147483647);var A=null,S=null,O=!1,H=null;switch(this.getToken(r).tok){case 1140850696:if(1073877010==b){this.mo(a,28);return}d=this.paramAsStr(++r).toUpperCase();4==c.tokAt(r+1)&&(H=this.paramAsStr(++c.iToken));break;case 1073741875:case 554176565:A=c.theToken.value;S=this.getCapSlabObject(r,!1);break;case 1073741914:D=Boolean.TRUE;l=x(-1,[1]);f=u=0;break;case 2:u=this.intParameter(r);1073741865==this.tokAt(r+1)&&(j=!0);l=this.moCombo(e);null==l&&0>u&&(l=x(-1,[-100,-u]));O=!0;break;case 268440576:switch(this.tokAt(++r)){case 1073741973:case 1073742008:break; +default:this.invArg()}v=!0;case 1073741973:case 1073742008:2147483647==(f=this.moOffset(r))&&this.invArg();u=0;l=this.moCombo(e);O=!0;break;case 1073742037:u=1073742037;j=!1;l=this.moCombo(e);O=!0;break;case 1073742108:u=1073742108;j=!1;l=this.moCombo(e);O=!0;break;case 1765808134:this.setColorOptions(null,r+1,b,2);break;case 134217750:A="plane";S=1073742333==this.tokAt(this.e.iToken=++r)?null:c.planeParameter(r,!1);break;case 134217751:this.addShapeProperty(e,"randomSeed",2==this.tokAt(r+2)?Integer.$valueOf(this.intParameter(r+ +2)):null);A="monteCarloCount";S=Integer.$valueOf(this.intParameter(r+1));break;case 536875059:A="scale";S=Float.$valueOf(this.floatParameter(r+1));break;case 1073741910:268440577==this.tokAt(r+1)?(A="cutoffPositive",S=Float.$valueOf(this.floatParameter(r+2))):(A="cutoff",S=Float.$valueOf(this.floatParameter(r+1)));break;case 536870916:A="debug";break;case 1073742054:A="plane";break;case 1073742104:case 1073742122:A="resolution";S=Float.$valueOf(this.floatParameter(r+1));break;case 1073742156:null== +l?t=Boolean.TRUE:D=Boolean.TRUE;O=!1;break;case 1073742168:r+1(null==b?0:JV.JC.getNBOTypeFromName(b))&&this.invArg();a.containsKey("nboLabels")||this.error(27); +if(this.chk)return-1;null!=b&&!J.api.Interface.getInterface("J.adapter.readers.quantum.GenNBOReader",this.vwr,"script").readNBOCoefficients(a,b,this.vwr)&&this.error(27);var v=a.get("auxFiles"),d=this.vwr.getCurrentModelAuxInfo().get("auxFiles");null==d?this.vwr.getCurrentModelAuxInfo().put("auxFiles",v):d.addAll(v);if(null!=f){v=f.indexOf(".");0v||0==--v)){c=h+ +1;break}0>c&&this.error(27)}return c},"java.util.Map,~S");e(d,"moCombo",function(a){if(1073742156!=this.tokAt(this.e.iToken+1))return null;this.addShapeProperty(a,"squareLinear",Boolean.TRUE);this.e.iToken++;return x(0,0)},"JU.Lst");e(d,"moOffset",function(a){var b=1073741973==this.getToken(a).tok?0:1,c=this.tokAt(++a);2==c&&"-"==this.e.st[a].value.charAt(0)?b+=this.intParameter(a):268440577==c?b+=this.intParameter(++a):268440576==c&&(b-=this.intParameter(++a));return b},"~N");e(d,"setMoData",function(a, +b,c,f,v,d,h,e,j){var g=this.e;0>d&&(d=this.vwr.am.cmi,0>d&&g.errorStr(30,"MO isosurfaces"));var k=this.vwr.ms.getInfo(d,"moData");null==k&&this.error(27);this.vwr.checkMenuUpdate();if(null!=e){var q=this.setNBOType(k,e),r=k.get("nboLabels").length;g.showString(r+" orbitals of type "+e.substring(0,e.indexOf(":")+1)+" modelIndex="+this.vwr.getModelNumberDotted(d));0c.length){null!=c&&1==c.length?f=0:j&&k.containsKey("firstBeta")&& +(f=k.get("firstBeta").intValue());e=k.containsKey("lastMoNumber")?k.get("lastMoNumber").intValue():0;q=k.containsKey("lastMoCount")?k.get("lastMoCount").intValue():1;1073742108==b?b=e-1:1073742037==b&&(b=e+q);e=k.get("mos");q=null==e?0:e.size();0==q&&this.error(25);1==q&&1d.floatValue()){b=j;break}}else if(null!=(d=r.get("energy"))){if(0< +d.floatValue()){b=j;break}}else break;null==d&&this.error(28)}b+=f;this.chk||JU.Logger.info("MO "+b)}(1>b||b>q)&&g.errorStr(26,""+q)}b=Math.abs(b);k.put("lastMoNumber",Integer.$valueOf(b));k.put("lastMoCount",Integer.$valueOf(1));v&&null==c&&(c=x(-1,[-100,b]));if(null!=c&&2>c.length){r=e.get(b-1);if(null==(d=r.get("energy")))c=x(-1,[100,b]);else{g=d.floatValue();f=JU.BS.newN(q);v=0;c=1==c.length&&1==c[0];for(j=0;jca&&(ca=Math.min(this.vwr.am.cmi,0));var Db=null==ka;null==$&&($=JU.BSUtil.copy(this.vwr.bsA()));$.and(this.vwr.ms.getAtoms(1296041985,Integer.$valueOf(1)));Db||$.andNot(ka); +this.addShapeProperty(C,"select",$);Db&&(ka=JU.BSUtil.copy($),JU.BSUtil.invertInPlace(ka,this.vwr.ms.ac),Q=!0,this.addShapeProperty(C,"ignore",ka),s.append(" ignore ").append(JU.Escape.eBS(ka)));s.append(" symmetry");0==sa&&this.addShapeProperty(C,"colorRGB",Integer.$valueOf(1296041985));Fa=this.vwr.ms.getSymMatrices(ca);break;case 1073742066:B="offset";z=this.centerParameter(++m);m=b.iToken;break;case 528432:B="rotate";z=1073742333==this.tokAt(b.iToken=++m)?null:b.getPoint4f(m);m=b.iToken;break; +case 1610612740:B="scale3d";z=Float.$valueOf(this.floatParameter(++m));break;case 1073742090:s.append(" periodic");B="periodic";break;case 1073742078:case 266298:case 134217751:B=b.theToken.value.toString();s.append(" ").appendO(b.theToken.value);z=this.centerParameter(++m);s.append(" ").append(JU.Escape.eP(z));m=b.iToken;break;case 1812599299:if(0<=b.fullCommand.indexOf("# BBOX="))var Eb=JU.PT.split(JU.PT.getQuotedAttribute(b.fullCommand,"# BBOX"),","),fa=D(-1,[JU.Escape.uP(Eb[0]),JU.Escape.uP(Eb[1])]); +else b.isCenterParameter(m+1)?(fa=D(-1,[this.getPoint3f(m+1,!0),this.getPoint3f(b.iToken+1,!0)]),m=b.iToken):fa=this.vwr.ms.getBBoxVertices();s.append(" boundBox "+JU.Escape.eP(fa[0])+" "+JU.Escape.eP(fa[fa.length-1]));B="boundingBox";z=fa;break;case 135188:h=!0;s.append(" pmesh");B="fileType";z="Pmesh";break;case 134217763:$=this.atomExpressionAt(++m);this.chk?Y=new JU.BS:1073742325==this.tokAt(b.iToken+1)||10==this.tokAt(b.iToken+1)?(Y=this.atomExpressionAt(++b.iToken),Y.and(this.vwr.ms.getAtomsWithinRadius(5, +$,!1,null,null))):(Y=this.vwr.ms.getAtomsWithinRadius(5,$,!0,null,null),Y.andNot(this.vwr.ms.getAtoms(1094713360,$)));Y.andNot($);s.append(" intersection ").append(JU.Escape.eBS($)).append(" ").append(JU.Escape.eBS(Y));m=b.iToken;if(134320141==this.tokAt(m+1)){m++;var Oa=this.getToken(++m).value;s.append(" function ").append(JU.PT.esc(Oa));this.chk||this.addShapeProperty(C,"func",Oa.equals("a+b")||Oa.equals("a-b")?Oa:this.createFunction("__iso__","a,b",Oa))}else y=!0;B="intersection";z=D(-1,[$,Y]); +break;case 1610625028:case 134217759:if(f=1610625028==X){s.append(" display");c=m;X=this.tokAt(m+1);if(0==X)continue;m++;this.addShapeProperty(C,"token",Integer.$valueOf(1073742335));if(10==X||1073742327==X){B="bsDisplay";1073742327==X?s.append(" all"):(z=this.st[m].value,s.append(" ").append(JU.Escape.eBS(z)));b.checkLast(m);break}else 134217759!=X&&(b.iToken=m,this.invArg())}else ja=m;var Xa,Ca=null,Y=null,Ya=Array(1);1073742325==this.tokAt(m+1)?(Xa=this.floatParameter(m+3),b.isPoint3f(m+4)?(Ca= +b.centerParameter(m+4,null),b.iToken+=2):b.isPoint3f(m+5)?(Ca=b.centerParameter(m+5,null),b.iToken+=2):(Y=b.atomExpression(this.st,m+5,this.slen,!0,!1,Ya,!0),null==Y&&this.invArg())):(Xa=this.floatParameter(++m),Ca=b.centerParameter(++m,Ya),Y=aa(Ya[0],"JU.BS")?Ya[0]:null);f&&b.checkLast(b.iToken);m=b.iToken;0<=b.fullCommand.indexOf("# WITHIN=")&&(Y=JU.BS.unescape(JU.PT.getQuotedAttribute(b.fullCommand,"# WITHIN")));this.chk||(null!=Y&&0<=ca&&(Y=this.vwr.restrictToModel(Y,ca)),null==Ca&&(Ca=null== +Y?new JU.P3:this.vwr.ms.getAtomSetCenter(Y)),fa=this.getWithinDistanceVector(C,Xa,Ca,Y,f),s.append(" within ").appendF(Xa).append(" ").append(null==Y?JU.Escape.eP(Ca):JU.Escape.eBS(Y)));continue;case 1073742083:var B="parameters",Fb=b.floatParameterSet(++m,1,10),m=b.iToken,z=Fb;s.append(" parameters ").append(JU.Escape.eAF(Fb));break;case 1715472409:case 1073742190:var Ma=b.theToken.value,fb=1073742190==X,Pa=this.tokAt(m+1);null==lb?(!k&&(!r&&!q)&&(this.addShapeProperty(C,"sasurface",Float.$valueOf(0)), +s.append(" vdw"),k=!0),B="property",null==Ba&&(Ba=JS.T.tokAttr(Pa,1111490560)&&1==this.vwr.getIsosurfacePropertySmoothing(!1)?Boolean.TRUE:Boolean.FALSE),this.addShapeProperty(C,"propertySmoothing",Ba),s.append(" isosurfacePropertySmoothing "+Ba),Ba===Boolean.TRUE&&(2147483647==pa&&(pa=this.vwr.getIsosurfacePropertySmoothing(!0)),this.addShapeProperty(C,"propertySmoothingPower",Integer.$valueOf(pa)),s.append(" isosurfacePropertySmoothingPower "+pa)),this.vwr.g.rangeSelected&&this.addShapeProperty(C, +"rangeSelected",Boolean.TRUE)):B=lb;la=this.paramAsStr(m);s.append(" ").append(la);if(0==la.toLowerCase().indexOf("property_")){F=x(this.vwr.ms.ac,0);if(this.chk)continue;F=this.vwr.getDataObj(la,null,1);null==F&&this.invArg();this.addShapeProperty(C,B,F);continue}var Qa=this.vwr.ms.ac,F=x(Qa,0);if(fb){var Gb=this.paramAsStr(++m);0==Gb.length?F=b.floatParameterSet(m,Qa,Qa):(F=x(Qa,0),this.chk||JU.Parser.parseStringInfestedFloatArray(""+b.getParameter(Gb,4,!0),null,F));this.chk||s.append(' "" ').append(JU.Escape.eAF(F))}else{this.getToken(++m); +if(!this.chk){s.append(" "+b.theToken.value);var gb=this.vwr.ms.at;this.vwr.autoCalculate(Pa,null);if(1765808134!=Pa){W=new JU.P3;for(var mb=Qa;0<=--mb;)F[mb]=gb[mb].atomPropertyFloat(this.vwr,Pa,W)}}1765808134==Pa&&(ra="inherit");if(134217759==this.tokAt(m+1)){var Hb=this.floatParameter(m+=2);s.append(" within "+Hb);this.addShapeProperty(C,"propertyDistanceMax",Float.$valueOf(Hb))}}z=F;break;case 1094713359:case 1094717454:k&&this.invArg();ca=1094713359==X?this.intParameter(++m):b.modelNumberParameter(++m); +s.append(" modelIndex "+ca);if(0>ca){B="fixed";z=Boolean.TRUE;break}B="modelIndex";z=Integer.$valueOf(ca);break;case 1275082241:var B="select",nb=this.atomExpressionAt(++m),z=nb,m=b.iToken;1073742072==this.tokAt(m+1)&&(m++,ka=JU.BSUtil.copy(nb),JU.BSUtil.invertInPlace(ka,this.vwr.ms.ac),this.addShapeProperty(C,"ignore",ka),s.append(" ignore ").append(JU.Escape.eBS(ka)),Q=!0);k||r?s.append(" select "+JU.Escape.eBS(nb)):($=z,0>ca&&0<=$.nextSetBit(0)&&(ca=this.vwr.ms.at[$.nextSetBit(0)].mi));break;case 2109448:N= +10==b.getToken(++m).tok?b.theToken.value:b.expandFloatArray(b.floatParameterSet(m,1,2147483647),1,!0);m=b.iToken;break;case 36867:var Ib=this.intParameter(++m),N=0Sa&&this.error(14);s.append(" ({").appendI(Sa).append("})");ca=this.vwr.ms.at[Sa].mi;this.addShapeProperty(C,"modelIndex",Integer.$valueOf(ca));var ob=D(-1,[new JU.V3,new JU.V3,JU.V3.newV(this.vwr.ms.at[Sa]),new JU.V3]);if(!Za.equalsIgnoreCase("s")&&null==this.vwr.getHybridizationAndAxes(Sa,ob[0],ob[1],Za))return;z=ob;break;default:this.error(14)}break; +case 1073877011:p=this.paramAsStr(++m).toUpperCase(),s.append(" nbo ").append(p).append(" ");case 1073877010:null==p&&s.append(" mo ");var Ta=2147483647,Ga=2147483647,pb=268440576==this.tokAt(m+1);pb&&m++;var Ua=null;switch(this.tokAt(++m)){case 0:b.bad();break;case 1073741914:s.append("[1] squared ");this.addShapeProperty(C,"squareLinear",Boolean.TRUE);Ua=x(-1,[1]);Ga=Ta=0;m++;break;case 1073741973:case 1073742008:Ga=this.moOffset(m);Ta=0;m=b.iToken;s.append((pb?"-":"")+"HOMO ");0=W.z||W.yW.y-W.x&&(W.z=(W.y-W.x)/W.z);z=W;m=b.iToken;s.append(" increment ").append(JU.Escape.eP(W));break;default:z=Integer.$valueOf(2==this.tokAt(m+1)?this.intParameter(++m):0),s.append(" ").appendO(z),2==this.tokAt(m+1)&&(this.addShapeProperty(C,B,z),z=Integer.$valueOf(-Math.abs(this.intParameter(++m))), +s.append(" ").appendO(z))}break;case 1073741910:s.append(" cutoff ");268440577==this.tokAt(++m)?(B="cutoffPositive",z=Float.$valueOf(da=this.floatParameter(++m)),s.append("+").appendO(z)):this.isFloatParameter(m)?(B="cutoff",z=Float.$valueOf(da=this.floatParameter(m)),s.appendO(z)):Ia?(B="cutoffRange",z=b.floatParameterSet(m,2,2),this.addShapeProperty(C,"cutoff",Float.$valueOf(0)),s.append(JU.Escape.eAF(z)),m=b.iToken):this.invArg();break;case 1073741928:B="downsample";z=Integer.$valueOf(this.intParameter(++m)); +s.append(" downsample ").appendO(z);break;case 1073741931:B="eccentricity";z=b.getPoint4f(++m);s.append(" eccentricity ").append(JU.Escape.eP4(z));m=b.iToken;break;case 1073741932:s.append(" ed");this.setMoData(C,-1,null,0,!1,ca,null,null,!1);k=!0;continue;case 536870916:case 1073742041:s.append(" ").appendO(b.theToken.value);B="debug";z=536870916==X?Boolean.TRUE:Boolean.FALSE;break;case 12293:s.append(" fixed");B="fixed";z=Boolean.TRUE;break;case 1073741962:s.append(" fullPlane");B="fullPlane";z= +Boolean.TRUE;break;case 1073741966:case 1073741968:var bc=1073741968==X,B=""+b.theToken.value,va=new JU.Lst,z=va,H=k=!0;s.append(" ").append(B);var ma=this.paramAsStr(++m);if(ma.equals("=")){s.append(" =");ma=this.paramAsStr(++m);s.append(" ").append(JU.PT.esc(ma));va.addLast(ma);this.chk||this.addShapeProperty(C,"func",this.createFunction("__iso__","x,y,z",ma));break}var sb=JU.PT.getQuotedAttribute(b.fullCommand,"# DATA"+(H?"2":""));null==sb?sb="inline":ma=sb;var Sb=0==ma.indexOf("data2d_"),cc=0== +ma.indexOf("data3d_"),ib=ma.equals("inline");s.append(" inline");va.addLast(ma);var Tb=this.getPoint3f(++m,!1);s.append(" ").append(JU.Escape.eP(Tb));va.addLast(Tb);var wa;T=++b.iToken;va.addLast(wa=b.getPoint4f(T));s.append(" ").append(JU.Escape.eP4(wa));P=A(wa.x);Z=++b.iToken;va.addLast(wa=b.getPoint4f(Z));s.append(" ").append(JU.Escape.eP4(wa));V=A(wa.x);va.addLast(wa=b.getPoint4f(++b.iToken));s.append(" ").append(JU.Escape.eP4(wa));G=A(wa.x);(0==P||0==V||0==G)&&this.invArg();if(!this.chk){var oa= +null,ta=null;if(bc){ib?(P=Math.abs(P),V=Math.abs(V),G=Math.abs(G),ta=this.floatArraySetXYZ(++b.iToken,P,V,G)):ta=cc?this.vwr.getDataObj(ma,null,3):this.vwr.functionXYZ(ma,P,V,G);P=Math.abs(P);V=Math.abs(V);G=Math.abs(G);null==ta&&(b.iToken=T,b.errorStr(53,"xyzdata is null."));if(ta.length!=P||ta[0].length!=V||ta[0][0].length!=G)b.iToken=T,b.errorStr(53,"xyzdata["+ta.length+"]["+ta[0].length+"]["+ta[0][0].length+"] is not of size ["+P+"]["+V+"]["+G+"]");va.addLast(ta);s.append(" ").append(JU.Escape.e(ta))}else{ib? +(P=Math.abs(P),V=Math.abs(V),oa=this.floatArraySet(++b.iToken,P,V)):Sb?(oa=this.vwr.getDataObj(ma,null,2),P=null==oa?0:oa.length,V=3):(oa=this.vwr.functionXY(ma,P,V),P=Math.abs(P),V=Math.abs(V));null==oa&&(b.iToken=T,b.errorStr(53,"fdata is null."));oa.length!=P&&!Sb&&(b.iToken=T,b.errorStr(53,"fdata length is not correct: "+oa.length+" "+P+"."));for(ga=0;gaca&&(ca=this.vwr.am.cmi),Y=this.vwr.getModelUndeletedAtomsBitSet(ca),0<=Y.nextSetBit(0)&&(fa=this.getWithinDistanceVector(C,2,null,Y,!1),s.append(" within 2.0 ").append(JU.Escape.eBS(Y)))),null!=fa&&0<=I.indexOf("/0,0,0/0,0,0?")&&(I=I.$replace("0,0,0/0,0,0",fa[0].x+","+fa[0].y+","+fa[0].z+"/"+fa[fa.length-1].x+","+fa[fa.length- +1].y+","+fa[fa.length-1].z)),vb&&(Ja=!0));var db=null==I?-1:I.indexOf("#-");if(Float.isNaN(ea)&&Float.isNaN(da))if(0<=(db=I.indexOf("#-cutoff=")))this.addShapeProperty(C,"cutoff",Float.$valueOf(da=Float.parseFloat(I.substring(db+9)))),s.append(" cutoff "+da);else if(0<=(db=I.indexOf("#-sigma=")))this.addShapeProperty(C,"sigma",Float.$valueOf(ea=Float.parseFloat(I.substring(db+8)))),s.append(" sigma "+ea);Float.isNaN(ea)?Float.isNaN(da)||this.showString("using cutoff = "+da):this.showString("using sigma = "+ +ea);vb&&(this.vwr.getP("_fileType").equals("Pdb")&&Float.isNaN(ea)&&Float.isNaN(da))&&(this.addShapeProperty(C,"sigma",Float.$valueOf(-1)),s.append(" sigma -1.0"));0==I.length&&(0>ca&&(ca=this.vwr.am.cmi),I=b.getFullPathName(!1),z=this.vwr.ms.getInfo(ca,"jmolSurfaceInfo"));var yb=-1;null==z&&2==this.tokAt(m+1)&&this.addShapeProperty(C,"fileIndex",Integer.$valueOf(yb=this.intParameter(++m)));var Wa=4==this.tokAt(m+1)?this.stringParameter(++m):null,k=!0;if(this.chk)break;var Zb,ya=null;null==z&&(0<= +b.fullCommand.indexOf("# FILE0=")?(I=JU.PT.getQuotedAttribute(b.fullCommand,"# FILE0"),1073741848==this.tokAt(m+1)&&(m+=2)):1073741848==this.tokAt(m+1)&&(ya=this.vwr.fm.getFilePath(this.stringParameter(b.iToken=m+=2),!1,!1),Zb=this.vwr.getFullPathNameOrError(ya),ya=Zb[0],""!==this.vwr.fm.getPathForAllFiles()?(I=ya,ya=null):this.addShapeProperty(C,"localName",ya)));null==Wa&&(I=this.e.checkFileExists("ISOSURFACE_"+(r?"MAP_":""),!1,I,m,!1));this.showString("reading isosurface data from "+I);null!=Wa&& +(z=this.vwr.fm.cacheGet(I,!1),this.addShapeProperty(C,"calculationType",Wa));null==z&&(this.addShapeProperty(C,"fileName",I),null!=ya&&(I=ya),0<=yb&&s.append(" ").appendI(yb));s.append(" /*file*/").append(JU.PT.esc(I));null!=Wa&&s.append(" ").append(JU.PT.esc(Wa));break;case 4106:B="connections";switch(this.tokAt(++m)){case 12290:case 10:case 1073742325:z=t(-1,[this.atomExpressionAt(m).nextSetBit(0)]);break;default:z=t(-1,[A(b.floatParameterSet(m,1,1)[0])])}m=b.iToken;break;case 1094713347:B="atomIndex"; +z=Integer.$valueOf(this.intParameter(++m));break;case 1073741999:B="link";s.append(" link");break;case 1814695966:24!=a&&this.invArg();268440577==this.tokAt(m+1)&&m++;B="extendGrid";z=Float.$valueOf(this.floatParameter(++m));s.append(" unitcell "+z);break;case 1073741994:24!=a&&this.invArg();W=this.getPoint3f(++m,!1);m=b.iToken;if(0>=W.x||0>=W.y||0>=W.z)break;W.x=A(W.x);W.y=A(W.y);W.z=A(W.z);s.append(" lattice ").append(JU.Escape.eP(W));r?(B="mapLattice",z=W):(ua=W,12293==this.tokAt(m+1)&&(s.append(" fixed"), +za=!0,m++));break;default:1073741824==X&&(B="thisID",z=la);if(!b.setMeshDisplayProperty(a,0,X)){if(JS.T.tokAttr(X,1073741824)&&!xa){this.setShapeId(a,m,xa);m=b.iToken;break}this.invArg()}0==c&&(c=m);m=this.slen-1}xa=12291!=X;hb&&k&&this.invArg();null!=B&&this.addShapeProperty(C,B,z)}if(!this.chk){if((E||S)&&!k)k=!0,this.addShapeProperty(C,"bsSolvent",S?new JU.BS:b.lookupIdentifierValue("solvent")),this.addShapeProperty(C,"sasurface",Float.$valueOf(0));q&&(!k&&!r)&&(this.addShapeProperty(C,"nomap", +Float.$valueOf(0)),k=!0);null!=N&&this.addShapeProperty(C,"getSurfaceSets",N);if(null!=Na)this.addShapeProperty(C,"colorDiscrete",Na);else if("sets".equals(ra))this.addShapeProperty(C,"setColorScheme",null);else if(null!=ra){var eb=this.vwr.cm.getColorEncoder(ra);null!=eb&&(eb.isTranslucent=Ha,eb.hi=3.4028235E38,this.addShapeProperty(C,"remapColor",eb))}if(k&&!j&&0!=s.indexOf(";")){C.add(0,D(-1,["newObject",null]));var $b=null==$;$b&&($=JU.BSUtil.copy(this.vwr.bsA()));0>ca&&(ca=this.vwr.am.cmi);$.and(this.vwr.getModelUndeletedAtomsBitSet(ca)); +null!=Ma&&(1g?M(-g/2):g),0!=a&&(g+=", with "+(b?"approx ":"net ")+"volume "+a+" A^3"),this.showString(g)}return!0});e(d,"cgo",function(){var a=this.e;a.sm.loadShape(23); +if(1073742001==this.tokAt(1)&&this.listIsosurface(23))return!1;for(var b=0,c=null!=this.initIsosurface(23),f=c&&null==this.getShapeProperty(23,"ID"),v=!1,d=-1,h=null,e=3.4028235E38,j=t(-1,[-2147483648]),g=0,k=a.iToken;k=this.slen&& +this.error(34);switch(this.getToken(k).tok){case 2:g=this.intParameter(k);continue;case 3:g=Math.round(100*this.floatParameter(k));continue}this.error(34);break;case 12293:q="modelIndex";d=Integer.$valueOf(-1);break;case 1094713359:case 1094717454:d=1094713359==a.theTok?this.intParameter(++k):a.modelNumberParameter(++k);q="modelIndex";d=Integer.$valueOf(d);break;case 1765808134:case 603979967:case 1073742074:e=this.getColorTrans(a,k,!1,j);k=a.iToken;c=!0;continue;case 1073741974:this.setShapeId(23, +++k,c);f=null==this.getShapeProperty(23,"ID");k=a.iToken;break;default:if(!a.setMeshDisplayProperty(23,0,a.theTok)){if(268441089==a.theTok||JS.T.tokAttr(a.theTok,1073741824)){this.setShapeId(23,k,c);k=a.iToken;break}this.invArg()}0==b&&(b=k);k=a.iToken;continue}c=12291!=a.theTok;null!=h&&!v&&(q="points",d=Integer.$valueOf(g),v=!0,g=0);null!=q&&this.setShapeProperty(23,q,d)}this.finalizeObject(23,j[0],e,g,null!=h,h,b,null);return!0});e(d,"getAtomicPotentials",function(a,b,c){var f=x(this.vwr.ms.ac, +0),v=J.api.Interface.getOption("quantum.MlpCalculation",this.vwr,"script");v.set(this.vwr);c=null==c?null:this.vwr.getFileAsString3(c,!1,null);try{v.assignPotentials(this.vwr.ms.at,f,this.vwr.getSmartsMatch("a",a),this.vwr.getSmartsMatch("/noAromatic/[$(C=O),$(O=C),$(NC=O)]",a),b,c)}catch(d){if(!ba(d,Exception))throw d;}return f},"JU.BS,JU.BS,~S");e(d,"getCapSlabObject",function(a,b){if(0>a)return JU.TempArray.getSlabWithinRange(a,0);var c=this.e,f=null,v=554176565==this.tokAt(a),d=this.tokAt(a+1), +h=null,e=h=null,j=null,g=null;if(603979967==d)switch(j=this.isFloatParameter(++a+1)?this.floatParameter(++a):0.5,c.isColorParam(a+1)?(j=Short.$valueOf(JU.C.getColixTranslucent3(JU.C.getColix(c.getArgbParam(a+1)),0!=j,j)),a=c.iToken):j=Short.$valueOf(JU.C.getColixTranslucent3(1,0!=j,j)),d=this.tokAt(a+1)){case 1073742018:case 1073741938:g=Integer.$valueOf(d);d=this.tokAt(++a+1);break;default:g=Integer.$valueOf(1073741938)}switch(d){case 1073742334:return c.iToken=a+1,Integer.$valueOf(-2147483648); +case 1073742333:c.iToken=a+1;break;case 1073742330:a++;f=D(-1,[Float.$valueOf(1),this.paramAsStr(++a)]);d=1073742018;break;case 134217759:a++;if(1073742114==this.tokAt(++a))f=this.floatParameter(++a),d=this.floatParameter(++a),f=D(-1,[Float.$valueOf(f),Float.$valueOf(d)]),d=1073742114;else if(this.isFloatParameter(a)){f=this.floatParameter(a);if(c.isCenterParameter(++a)){var h=Array(1),k=c.centerParameter(a,h);if(this.chk||!aa(h[0],"JU.BS"))h=D(-1,[k]);else for(var k=this.vwr.ms.at,e=h[0],h=Array(e.cardinality()), +q=0,r=e.nextSetBit(0);0<=r;r=e.nextSetBit(r+1),q++)h[q]=k[r]}else h=c.getPointArray(a,-1,!1);0==h.length&&(c.iToken=a,this.invArg());f=D(-1,[Float.$valueOf(f),h,e])}else f=c.getPointArray(a,4,!1),d=1812599299;break;case 1812599299:c.iToken=a+1;f=JU.BoxInfo.toOABC(this.vwr.ms.getBBoxVertices(),null);break;case 1073741872:case 1814695966:c.iToken=a+1;c=this.vwr.getCurrentUnitCell();if(null==c)1814695966==d&&this.invArg();else{h=JU.BoxInfo.toOABC(c.getUnitCellVerticesNoOffset(),c.getCartesianOffset()); +c=A(c.getUnitCellInfoType(6));f=e=null;switch(c){case 1:f=JU.V3.newVsub(h[2],h[0]),f.scale(1E3);case 2:e=JU.V3.newVsub(h[1],h[0]),e.scale(1E3),h[0].sub(e),h[1].scale(2E3),1==c&&(h[0].sub(f),h[2].scale(2E3))}f=h}break;case 12290:case 10:case 1073742325:if(f=this.atomExpressionAt(a+1),d=3,!c.isCenterParameter(++c.iToken)){v=!0;break}default:if(!b&&v&&this.isFloatParameter(a+1)){f=this.floatParameter(++a);if(!this.isFloatParameter(a+1))return Integer.$valueOf(A(f));d=this.floatParameter(++a);f=D(-1, +[Float.$valueOf(f),Float.$valueOf(d)]);d=1073742114;break}h=c.planeParameter(++a,!1);d=this.isFloatParameter(c.iToken+1)?this.floatParameter(++c.iToken):NaN;Float.isNaN(d)||(h.w-=d);f=h;d=134217750}j=null==g?null:D(-1,[g,j]);return JU.TempArray.getSlabObjectType(d,f,!v,j)},"~N,~B");e(d,"setColorOptions",function(a,b,c,f){var v=this.e;this.getToken(b);var d="opaque";if(603979967==v.theTok)if(d="translucent",0>f){var h=this.isFloatParameter(b+1)?this.floatParameter(++b):3.4028235E38;v.setShapeTranslucency(c, +null,"translucent",h,null);null!=a&&(a.append(" translucent"),3.4028235E38!=h&&a.append(" ").appendF(h))}else v.setMeshDisplayProperty(c,b,v.theTok);else 1073742074==v.theTok?0<=f&&v.setMeshDisplayProperty(c,b,v.theTok):v.iToken--;f=Math.abs(f);for(h=0;h=b)&&this.invArg();for(var h=JU.AU.newFloat3(b,-1),e=0;268437505!=R;)switch(R=this.getToken(a).tok,R){case 1073742195:case 268437505:continue;case 268436992:a++;break;case 268437504:h[e++]=this.floatArraySet(a,c,f);a=++d.iToken;R=0;e==b&&268437505!=this.tokAt(a)&&this.invArg();break;default:this.invArg()}return h},"~N,~N,~N,~N");e(d,"floatArraySet", +function(a,b,c){var f=this.tokAt(a++);1073742195==f&&(f=this.tokAt(a++));268437504!=f&&this.invArg();for(var d=JU.AU.newFloat2(b),R=0;268437505!=f;)switch(f=this.getToken(a).tok,f){case 1073742195:case 268437505:continue;case 268436992:a++;break;case 268437504:a++;f=x(c,0);d[R++]=f;for(var h=0;hb.iToken&&(this.setShapeProperty(a,"init",b.fullCommand),this.setShapeProperty(a,"thisID","+PREVIOUS_MESH+")),null;b.iToken=1;return!b.setMeshDisplayProperty(a,0,c)&&(this.setShapeProperty(a,"thisID","+PREVIOUS_MESH+"),22!=a&&this.setShapeProperty(a, +"title",D(-1,[b.thisCommand])),1073741974!=c&&(268441089==f||268441089==c&&b.setMeshDisplayProperty(a,0,f)))?(a=this.setShapeId(a,1,!1),b.iToken++,a):null},"~N");e(d,"listIsosurface",function(a){var b=3K;K++){var u= +JU.Triangulator.fullCubePolygon[K];if(0==K%2){JU.Measure.getPlaneThroughPoints(a[u[0]],a[u[1]],a[u[2]],b,d,k);if(null==JU.Measure.getIntersection(c,f,k,g,b,R)){K++;continue}h.sub2(g,c)}if(JU.Measure.isInTriangle(g,a[u[0]],a[u[1]],a[u[2]],b,d,R)){u=f.dot(h);ur&&(r=u,j=g);0==K%2&&K++;if(0.01e.distance(j))&&null==(j=e)?null:D(-1,[e,j])},"~A,~N,JU.P3,JU.V3");e(d,"getCellProjection",function(a,b){for(var c=new JU.V3,f=0,d=-3.4028235E38, +R=0,h=Array(8),e=0;8>e;e++)f=b[e].dot(a),f>d&&(d=f,R=e),JU.Measure.getPlaneProjection(b[e],a,h[e]=new JU.P3,c);f=JU.Triangulator.fullCubeCorners[R][3];c=JU.AU.newInt2(6);for(e=d=0;12>e;e++)if(0!=(f&JU.TriangleData.Pwr2[e])){var j=t(4,0),g=JU.Triangulator.fullCubePolygon[e];j[0]=g[0];j[1]=g[1];j[2]=g[2];j[3]=g[0]==R?2:g[1]==R?0:g[2]==R?1:3;c[d++]=j}R=new JU.Lst;R.addLast(h);R.addLast(c);return R},"JU.P4,~A");e(d,"intersectPlane",function(a,b,c){if(-1==c&&8==b.length)return this.getCellProjection(a, +b);for(var f=new JU.Lst,d=Array(12),e=0,h=x(8,0),w=0;8>w;w++)h[w]=a.x*b[w].x+a.y*b[w].y+a.z*b[w].z+a.w,0>h[w]&&(e|=JU.TriangleData.Pwr2[w]);a=JU.TriangleData.triangleTable2[e];if(null==a)return null;for(w=0;24>w;w+=2){var e=JU.TriangleData.edgeVertexes[w],j=JU.TriangleData.edgeVertexes[w+1],g=JU.P3.newP(b[j]);g.sub(b[e]);g.scale(h[e]/(h[e]-h[j]));g.add(b[e]);d[w>>1]=g}if(0==c){c=new JU.BS;for(w=0;w>2);f.addLast(d);for(w=0;w>2]=t(-1,[b[a[w++]],b[a[w++]],b[a[w++]],a[w]]);return f}for(w=0;wthis.modelIndex,this.sg.params.modelIndex=Math.abs(this.modelIndex));else if("lcaoCartoon"===a||"lonePair"===a||"radical"===a)f=b,this.explicitID||this.setPropertySuper("thisID",null,null),this.sg.setProp("lcaoCartoonCenter",f[2],null)||this.drawLcaoCartoon(f[0],f[1],f[3],"lonePair"===a?2:"radical"===a?1:0,null==this.thisMesh?!1:this.thisMesh.reverseColor);else if(!("select"=== +a&&this.iHaveBitSets||"ignore"===a&&this.iHaveBitSets))if("reversecolor"===a)null!=this.thisMesh&&(this.thisMesh.reverseColor=b===Boolean.TRUE);else if("meshcolor"===a)f=b.intValue(),this.meshColix=JU.C.getColix(f),null!=this.thisMesh&&(this.thisMesh.meshColix=this.meshColix);else if("offset"===a)f=JU.P3.newP(b),f.equals(JV.JC.center)&&(f=null),null!=this.thisMesh&&(this.thisMesh.rotateTranslate(null,f,!0),this.thisMesh.altVertices=null);else if("rotate"===a)null!=this.thisMesh&&(this.thisMesh.rotateTranslate(JU.Quat.newP4(b), +null,!0),this.thisMesh.altVertices=null);else if("bsDisplay"===a)this.bsDisplay=b;else if("displayWithin"===a)f=b,this.displayWithinDistance2=f[0].floatValue(),this.isDisplayWithinNot=0>this.displayWithinDistance2,this.displayWithinDistance2*=this.displayWithinDistance2,this.displayWithinPoints=f[3],0==this.displayWithinPoints.size()&&(this.displayWithinPoints=this.ms.getAtomPointVector(f[2]));else if("finalize"===a)null!=this.thisMesh&&(f=b,null!=f&&!f.startsWith("; isosurface map")&&(this.thisMesh.setDiscreteColixes(this.sg.params.contoursDiscrete, +this.sg.params.contourColixes),this.setJvxlInfo()),this.setScriptInfo(f)),this.clearSg();else if("connections"===a)null!=this.currentMesh&&(this.connections=b,0<=this.connections[0]&&this.connections[0]this.withinDistance2,this.withinDistance2*=this.withinDistance2,this.withinPoints=f[3],0==this.withinPoints.size()&&(this.withinPoints=this.ms.getAtomPointVector(f[2]))):("nci"===a||"orbital"===a)&&null!=this.sg?this.sg.params.testFlags=this.vwr.getBoolean(603979962)?2:0:"cutoffRange"===a&&(this.cutoffRange=b));if(null!=this.sg&&this.sg.setProp(a,b,c)){if(this.sg.isValid){"molecularOrbital"=== +a&&(this.currentMesh.isModelConnected=!0,this.currentMesh.mat4=this.ms.am[this.currentMesh.modelIndex].mat4);return}a="delete"}if("init"===a)this.explicitID=!1,this.scriptAppendix="",f="string"==typeof b?b:null,b=null==f?-1:f.indexOf("# ID="),this.actualID=0<=b?JU.PT.getQuotedStringAt(f,b):null,this.setPropertySuper("thisID","+PREVIOUS_MESH+",null),null!=f&&!(this.iHaveBitSets=this.getScriptBitSets(f,null))&&this.sg.setProp("select",c,null),this.initializeIsosurface(),this.sg.params.modelIndex=this.isFixed? +-1:this.modelIndex;else if("clear"===a)this.discardTempData(!0);else if("colorDensity"===a)null!=b&&null!=this.currentMesh&&(this.currentMesh.volumeRenderPointSize=b.floatValue());else if("deleteModelAtoms"===a){a=b[2][0];d=b[2][1];b=b[2][2];for(f=this.meshCount;0<=--f;)c=this.meshes[f],null!=c&&(null!=c.connectedAtoms&&(e=c.connectedAtoms[0],e>=d+b?c.connectedAtoms[0]=e-b:e>=d&&(c.connectedAtoms=null)),c.connectedAtoms=null,c.modelIndex==a?(this.meshCount--,c===this.currentMesh&&(this.currentMesh= +this.thisMesh=null),this.meshes=this.isomeshes=JU.AU.deleteElements(this.meshes,f,1)):c.modelIndex>a&&(c.modelIndex--,c.atomIndex>=d&&(c.atomIndex-=b)))}else this.setPropertySuper(a,b,c)}}}},"~S,~O,JU.BS");e(d,"getFileReader",function(a){var b=this.vwr.fm.getBufferedReaderOrErrorMessageFromName(a,null,!0,!0);if("string"==typeof b)return JU.Logger.error("Isosurface: could not open file "+a+" -- "+b),null;if(!aa(b,"java.io.BufferedReader"))try{b=JU.Rdr.getBufferedReader(b,"ISO-8859-1")}catch(c){if(!ba(c, +"java.io.IOException"))throw c;}return b},"~S");e(d,"setIsoMeshColor",function(a,b){a.jvxlData.baseColor=b;a.isColorSolid=!0;a.pcs=null;a.colorsExplicit=!1;a.colorEncoder=null;a.vertexColorMap=null},"J.shapesurface.IsosurfaceMesh,~S");e(d,"setColorPhase",function(a,b,c){a.colorPhased=!0;a.colix=a.jvxlData.minColorIndex=b;a.jvxlData.maxColorIndex=c;a.jvxlData.isBicolorMap=!0;a.jvxlData.colorDensity=!1;a.isColorSolid=!1;a.remapColors(this.vwr,null,this.translucentLevel)},"J.shapesurface.IsosurfaceMesh,~N,~N"); +e(d,"ensureMeshSource",function(){var a=null!=this.thisMesh.vertexSource;if(a)for(var b=this.thisMesh.vc;0<=--b;)if(0>this.thisMesh.vertexSource[b]){a=!1;break}if(!a){var a=this.thisMesh.vertexSource,c=this.thisMesh.vcs,b=this.thisMesh.isColorSolid?this.thisMesh.colix:0;this.setProperty("init",null,null);this.setProperty("map",Boolean.FALSE,null);this.setProperty("property",x(this.ms.ac,0),null);0!=b&&(this.thisMesh.colorCommand="color isosurface "+JU.C.getHexCode(b),this.setProperty("color",Integer.$valueOf(JU.C.getArgb(b)), +null));if(null!=a){for(b=this.thisMesh.vc;0<=--b;)0>a[b]&&(a[b]=this.thisMesh.vertexSource[b]);this.thisMesh.vertexSource=a;this.thisMesh.vcs=c}}});e(d,"slabPolygons",function(a){this.thisMesh.calculatedVolume=null;this.thisMesh.calculatedArea=null;this.thisMesh.getMeshSlicer().slabPolygons(a,!1);this.thisMesh.reinitializeLightingAndColor(this.vwr)},"~A");e(d,"setPropertySuper",function(a,b,c){"thisID"===a&&null!=this.currentMesh&&null!=this.currentMesh.thisID&&this.currentMesh.thisID.equals(b)?this.checkExplicit(b): +(this.currentMesh=this.thisMesh,this.setPropMC(a,b,c),this.thisMesh=this.currentMesh,this.jvxlData=null==this.thisMesh?null:this.thisMesh.jvxlData,null!=this.sg&&this.sg.setJvxlData(this.jvxlData))},"~S,~O,JU.BS");l(d,"getPropertyData",function(a,b){var c;"keys"===a&&(c=aa(b[1],"JU.Lst")?b[1]:new JU.Lst,b[1]=c,c.addLast("info"),c.addLast("data"),c.addLast("atoms"));if("colorEncoder"===a)return c=this.getMesh(b[0]),null!=c&&null!=(b[1]=c.colorEncoder);if("intersectPlane"===a){c=this.getMesh(b[0]); +if(null==c||4>b.length)return!1;b[3]=Integer.$valueOf(c.modelIndex);c.getMeshSlicer().getIntersection(0,b[1],null,b[2],null,null,null,!1,!1,134217750,!1);return!0}if("getBoundingBox"===a){c=b[0];c=this.getMesh(c);if(null==c||null==c.vs)return!1;b[2]=c.jvxlData.boundingBox;if(null!=c.mat4){var f=Array(2);f[0]=JU.P3.newP(c.jvxlData.boundingBox[0]);f[1]=JU.P3.newP(c.jvxlData.boundingBox[1]);var d=new JU.V3;c.mat4.getTranslation(d);f[0].add(d);f[1].add(d);b[2]=f}return!0}if("unitCell"===a)return c=this.getMesh(b[0]), +null!=c&&null!=(b[1]=c.getUnitCell());if("getCenter"===a&&-2147483648==b[1].intValue()){c=b[0];c=this.getMesh(c);if(null==c||null==c.vs)return!1;f=JU.P3.newP(c.jvxlData.boundingBox[0]);f.add(c.jvxlData.boundingBox[1]);f.scale(0.5);null!=c.mat4&&(d=new JU.V3,c.mat4.getTranslation(d),f.add(d));b[2]=f;return!0}return this.getPropDataMC(a,b)},"~S,~A");l(d,"getProperty",function(a,b){return this.getPropI(a,b)},"~S,~N");e(d,"getPropI",function(a,b){var c=this.thisMesh;if(0<=b&&(b>=this.meshCount||null== +(c=this.isomeshes[b])))return null;var f=this.getPropMC(a,b);if(null!=f)return f;if("message"===a){c="";if(!this.jvxlData.isValid)return"invalid! (no atoms selected?)";Float.isNaN(this.jvxlData.integration)||(c+="integration "+this.jvxlData.integration);if(24==this.shapeID||27==this.shapeID||28==this.shapeID)c=null==this.jvxlData.cutoffRange?c+(" with cutoff="+this.jvxlData.cutoff):c+(" with cutoffRange="+JU.Escape.eAF(this.jvxlData.cutoffRange));if(27==this.shapeID||28==this.shapeID)return c;3.4028235E38!= +this.jvxlData.dataMin&&(c+=" min="+this.jvxlData.dataMin+" max="+this.jvxlData.dataMax);c+="; "+JV.JC.shapeClassBases[this.shapeID].toLowerCase()+" count: "+this.getPropMC("count",b);return c+this.getPropI("dataRangeStr",b)+this.jvxlData.msg}if("dataRange"===a)return this.getDataRange(c);if("dataRangeStr"===a)return c=this.getDataRange(c),null!=c&&3.4028235E38!=c[0]&&c[0]!=c[1]?"\nisosurface full data range "+c[0]+" to "+c[1]+" with color scheme spanning "+c[2]+" to "+c[3]:"";if("moNumber"===a)return Integer.$valueOf(this.moNumber); +if("moLinearCombination"===a)return this.moLinearCombination;if("nSets"===a)return f=null==c?-2147483648:c.nSets,0==f&&(this.calculateVolumeOrArea(c,!0),f=c.nSets),Integer.$valueOf(-2147483648==f?0:Math.abs(c.nSets));if("area"===a)return null==c?Float.$valueOf(NaN):this.calculateVolumeOrArea(c,!0);if("volume"===a)return null==c?Float.$valueOf(NaN):this.calculateVolumeOrArea(c,!1);if(null==c)return null;if("output"===a)return null==c.jvxlData.sbOut&&null==c.jvxlData.jvxlFileTitle?null:c.jvxlData.jvxlFileTitle+ +"\n"+(null==c.jvxlData.sbOut?"":c.jvxlData.sbOut.toString());if("cutoff"===a)return Float.$valueOf(this.jvxlData.cutoff);if("cutoffRange"===a)return this.jvxlData.cutoffRange;if("minMaxInfo"===a)return x(-1,[this.jvxlData.dataMin,this.jvxlData.dataMax]);if("plane"===a)return this.jvxlData.jvxlPlane;if("contours"===a)return c.getContours();if("pmesh"===a||"pmeshbin"===a)return c.getPmeshData("pmeshbin"===a);if("jvxlDataXml"===a||"jvxlMeshXml"===a){var d=null;this.jvxlData.slabInfo=null;"jvxlMeshXml"=== +a||this.jvxlData.vertexDataOnly||null!=c.bsSlabDisplay&&null==c.bsSlabGhost?(d=new J.jvxl.data.MeshData,this.fillMeshData(d,1,c),d.polygonColorData=J.shapesurface.Isosurface.getPolygonColorData(d.pc,d.pcs,d.colorsExplicit?d.pis:null,d.bsSlabDisplay)):null!=c.bsSlabGhost&&(this.jvxlData.slabInfo=c.slabOptions.toString());f=new JU.SB;this.getMeshCommand(f,c.index);c.setJvxlColorMap(!0);return J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData,d,this.title,"",!0,1,f.toString(),null)}if("jvxlFileInfo"=== +a)return J.jvxl.data.JvxlCoder.jvxlGetInfo(this.jvxlData);if("command"===a){f=new JU.SB;c=this.getMeshList(0>b?this.previousMeshID:c.thisID,!1);for(d=c.size();0<=--d;)this.getMeshCommand(f,c.get(d).index);return f.toString()}return"atoms"===a?c.surfaceAtoms:"colorEncoder"===a?c.colorEncoder:"values"===a||"value"===a?c.probeValues:null},"~S,~N");e(d,"getDataRange",function(a){return null==a?null:a.getDataRange()},"J.shapesurface.IsosurfaceMesh");e(d,"calculateVolumeOrArea",function(a,b){if(b){if(null!= +a.calculatedArea)return a.calculatedArea}else if(null!=a.calculatedVolume)return a.calculatedVolume;var c=new J.jvxl.data.MeshData;this.fillMeshData(c,1,a);c.nSets=a.nSets;c.vertexSets=a.vertexSets;if(!b&&a.jvxlData.colorDensity)return c=a.jvxlData.voxelVolume,c*=null==a.bsSlabDisplay?a.vc:a.bsSlabDisplay.cardinality(),a.calculatedVolume=Float.$valueOf(c);var f=J.jvxl.data.MeshData.calculateVolumeOrArea(c,a.jvxlData.thisSet,b,!1);0>=a.nSets&&(a.nSets=-c.nSets);b?a.calculatedArea=f:a.calculatedVolume= +f;return f},"J.shapesurface.IsosurfaceMesh,~B");d.getPolygonColorData=e(d,"getPolygonColorData",function(a,b,c,f){var d=null!=c;if(null==b&&null==c)return null;for(var e=new JU.SB,h=0,g=0,j=0,n=0,k=!1,q=0;qc)return!1;f=a.indexOf("})",c);if(0>f)return!1;c=JU.BS.unescape(a.substring(c+2,f+2));null==b?this.sg.setProp("select",c,null):b[0]=c;if(0>(c=a.indexOf("({",f)))return!0;f=a.indexOf("})",c);if(0>f)return!1;c=JU.BS.unescape(a.substring(c+1,f+1));null==b?this.sg.setProp("ignore",c,null):b[1]=c;if((c=a.indexOf("/({",f))==f+2){if(0>(f=a.indexOf("})",c)))return!1;c=JU.BS.unescape(a.substring(c+ +3,f+1));null==b?this.ms.setTrajectoryBs(c):b[2]=c}return!0},"~S,~A");e(d,"getCapSlabInfo",function(a){var b=a.indexOf("# SLAB=");0<=b&&this.sg.setProp("slab",this.getCapSlabObject(JU.PT.getQuotedStringAt(a,b),!1),null);b=a.indexOf("# CAP=");0<=b&&this.sg.setProp("slab",this.getCapSlabObject(JU.PT.getQuotedStringAt(a,b),!0),null)},"~S");e(d,"getCapSlabObject",function(a,b){try{if(0==a.indexOf("array")){var c=JU.PT.split(a.substring(6,a.length-1),",");return JU.TempArray.getSlabObjectType(1812599299, +D(-1,[JU.Escape.uP(c[0]),JU.Escape.uP(c[1]),JU.Escape.uP(c[2]),JU.Escape.uP(c[3])]),b,null)}var f=JU.Escape.uP(a);if(aa(f,"JU.P4"))return JU.TempArray.getSlabObjectType(134217750,f,b,null)}catch(d){if(!ba(d,Exception))throw d;}return null},"~S,~B");e(d,"initializeIsosurface",function(){this.iHaveModelIndex||(this.modelIndex=this.vwr.am.cmi);this.atomIndex=-1;this.bsDisplay=null;this.center=JU.P3.new3(NaN,0,0);this.colix=5;this.cutoffRange=this.connections=null;this.colorType=this.defaultColix=this.meshColix= +0;this.displayWithinPoints=null;this.explicitContours=!1;this.isFixed=0>this.modelIndex;this.isPhaseColored=this.isColorExplicit=!1;this.linkedMesh=null;0>this.modelIndex&&(this.modelIndex=0);this.scale3d=0;this.title=null;this.translucentLevel=0;this.withinPoints=null;this.initState()});e(d,"initState",function(){this.associateNormals=!0;this.sg.initState()});e(d,"setMeshI",function(){this.thisMesh.visible=!0;this.thisMesh.modelIndex=0<=(this.thisMesh.atomIndex=this.atomIndex)?this.ms.at[this.atomIndex].mi: +this.isFixed?-1:0<=this.modelIndex?this.modelIndex:this.vwr.am.cmi;this.thisMesh.scriptCommand=this.script;this.thisMesh.ptCenter.setT(this.center);this.thisMesh.scale3d=null==this.thisMesh.jvxlData.jvxlPlane?0:this.scale3d});e(d,"discardTempData",function(a){a&&(this.title=null,null!=this.thisMesh&&(this.thisMesh.surfaceSet=null))},"~B");e(d,"getDefaultColix",function(){return 0!=this.defaultColix?this.defaultColix:!this.sg.jvxlData.wasCubic?this.colix:JU.C.getColix(0<=this.sg.params.cutoff?-11525984: +-6283184)});e(d,"drawLcaoCartoon",function(a,b,c,f,d){var e=this.sg.setLcao(),h=0<=e.indexOf("anti-sp");h&&(e=e.substring(5));var g=c.x+c.y+c.z;this.defaultColix=JU.C.getColix(this.sg.params.colorPos);var j=JU.C.getColix(this.sg.params.colorNeg);d&&(d=j,j=this.defaultColix,this.defaultColix=d);d=new JU.V3;var n=0c.vcs.length)c.vcs=ea(c.vc,0);a.vcs=c.vcs;break;case 3:c.surfaceSet=a.surfaceSet;c.vertexSets=a.vertexSets;c.nSets=a.nSets;break;case 4:c.vs=a.vs,c.vvs=a.vvs,c.vc=a.vc,c.vertexIncrement=a.vertexIncrement,c.vertexSource=a.vertexSource,c.pc=a.pc,c.pis=a.pis,c.pcs=a.pcs,c.bsSlabDisplay=a.bsSlabDisplay,c.bsSlabGhost=a.bsSlabGhost,c.slabColix=a.slabColix,c.slabMeshType=a.slabMeshType,c.polygonCount0=a.polygonCount0,c.vertexCount0=a.vertexCount0,c.mergeVertexCount0=a.mergeVertexCount0,c.slabOptions= +a.slabOptions,c.colorsExplicit=a.colorsExplicit}},"J.jvxl.data.MeshData,~N,J.shapesurface.IsosurfaceMesh");l(d,"notifySurfaceGenerationCompleted",function(){this.setMeshI();this.setBsVdw();this.thisMesh.surfaceAtoms=this.sg.params.bsSelected;this.thisMesh.insideOut=this.sg.params.isInsideOut();this.thisMesh.isModelConnected=this.sg.params.isModelConnected;this.thisMesh.vertexSource=this.sg.params.vertexSource;this.thisMesh.oabc=this.sg.getOriginVaVbVc();this.thisMesh.calculatedArea=null;this.thisMesh.calculatedVolume= +null;this.thisMesh.probeValues=this.sg.params.probeValues;if(!this.thisMesh.isMerged)return this.thisMesh.initialize(this.sg.params.isFullyLit()?1073741964:1073741958,null,this.sg.params.thePlane),null!=this.jvxlData.fixedLattice&&(this.thisMesh.lattice=this.jvxlData.fixedLattice,this.thisMesh.fixLattice()),this.thisMesh.setColorsFromJvxlData(this.sg.params.colorRgb);this.sg.params.allowVolumeRender||(this.thisMesh.jvxlData.allowVolumeRender=!1);this.thisMesh.setColorsFromJvxlData(this.sg.params.colorRgb); +null!=this.thisMesh.jvxlData.slabInfo&&this.vwr.runScriptCautiously("isosurface "+this.thisMesh.jvxlData.slabInfo);0this.cutoffRange[1])?-1:null!=this.withinPoints&&!J.shape.Mesh.checkWithin(a,this.withinPoints,this.withinDistance2,this.isWithinNot)?-1:this.thisMesh.addVertexCopy(a,b,c,this.associateNormals,f)},"JU.T3,~N,~N,~B");l(d,"addTriangleCheck",function(a,b,c,f,d,e,h){return 0>a||0>b||0>c||e&&!J.jvxl.data.MeshData.checkCutoff(a,b,c,this.thisMesh.vvs)? +-1:this.thisMesh.addTriangleCheck(a,b,c,f,d,h)},"~N,~N,~N,~N,~N,~B,~N");e(d,"setScriptInfo",function(a){a=null==a?this.sg.params.script:a;var b=null==a?-1:a.indexOf("; isosurface map");if(0==b)null!=this.thisMesh.scriptCommand&&(b=this.thisMesh.scriptCommand.indexOf("; isosurface map"),0<=b&&(this.thisMesh.scriptCommand=this.thisMesh.scriptCommand.substring(0,b)),this.thisMesh.scriptCommand+=a);else if(this.thisMesh.title=this.sg.params.title,this.thisMesh.dataType=this.sg.params.dataType,this.thisMesh.scale3d= +this.sg.params.scale3d,null!=a&&(null!=this.oldFileName&&(a=a.$replace(this.oldFileName,this.newFileName))," "==a.charAt(0)&&(a=this.myType+" ID "+JU.PT.esc(this.thisMesh.thisID)+a,b=a.indexOf("; isosurface map"))),this.thisMesh.scriptCommand=0this.scriptAppendix.indexOf(a)&&(this.scriptAppendix+=a)},"~S");l(d,"setRequiredFile",function(a,b){this.oldFileName=a;this.newFileName=b},"~S,~S");e(d,"setJvxlInfo",function(){if(this.sg.jvxlData!==this.jvxlData||this.sg.jvxlData!==this.thisMesh.jvxlData)this.jvxlData=this.thisMesh.jvxlData=this.sg.jvxlData});l(d,"getShapeDetail",function(){for(var a=new JU.Lst,b=0;b":a.thisID);b.put("visible",Boolean.$valueOf(a.visible));b.put("vertexCount",Integer.$valueOf(a.vc));null!=a.calculatedVolume&&b.put("volume",a.calculatedVolume);null!=a.calculatedArea&&b.put("area",a.calculatedArea);Float.isNaN(a.ptCenter.x)||b.put("center",a.ptCenter);null!=a.mat4&&b.put("mat4",a.mat4);0!=a.scale3d&&b.put("scale3d",Float.$valueOf(a.scale3d));b.put("xyzMin",a.jvxlData.boundingBox[0]);b.put("xyzMax", +a.jvxlData.boundingBox[1]);var c=J.jvxl.data.JvxlCoder.jvxlGetInfo(a.jvxlData);null!=c&&b.put("jvxlInfo",c.$replace("\n"," "));b.put("modelIndex",Integer.$valueOf(a.modelIndex));b.put("color",JU.CU.colorPtFromInt(JU.C.getArgb(a.colix),null));null!=a.colorEncoder&&b.put("colorKey",a.colorEncoder.getColorKey());null!=a.title&&b.put("title",a.title);(null!=a.jvxlData.contourValues||null!=a.jvxlData.contourValuesUsed)&&b.put("contours",a.getContourList(this.vwr))},"J.shapesurface.IsosurfaceMesh,java.util.Map"); +l(d,"getPlane",function(){return null},"~N");l(d,"getValue",function(){return 0},"~N,~N,~N,~N");l(d,"checkObjectHovered",function(a,b,c){if(null!=this.keyXy&&a>=this.keyXy[0]&&b>=this.keyXy[1]&&ae||e>this.thisMesh.jvxlData.contourValues.length)return;c=""+this.thisMesh.jvxlData.contourValues[e]}else{e=M(Math.floor(f*d.length));if(0>e||e>d.length)return;c=""+d[e].get(2).floatValue()}}else{var h=this.thisMesh.colorEncoder.quantize(f,!0),f=this.thisMesh.colorEncoder.quantize(f, +!1);c=""+h+" - "+f}this.vwr.hoverOnPt(a,b,c,null,null)}catch(g){if(!ba(g,Exception))throw g;}},"~N,~N");l(d,"checkObjectClicked",function(a,b,c,f,d){if(!d||!this.vwr.isBound(c,18))return null;c=100;this.vwr.gdata.isAntialiased()&&(a<<=1,b<<=1,c<<=1);for(var e=d=-1,h=-2147483648,g=2147483647,j=0;jh&&(h=this.ptXY.z))}}if(0>d)return null;this.pickedMesh=this.isomeshes[d];this.setPropertySuper("thisID",this.pickedMesh.thisID,null);this.pickedVertex=e;a=new JU.P3;a.setT(this.pickedMesh.vs[this.pickedVertex]);this.pickedModel=this.pickedMesh.modelIndex;b=this.getPickedPoint(a,this.pickedModel);this.setStatusPicked(-4,a,b);return b},"~N,~N,~N,JU.BS,~B");e(d,"isPickable",function(a,b){return 0!=a.visibilityFlags&&(0>a.modelIndex||b.get(a.modelIndex))&&!JU.C.isColixTranslucent(a.colix)}, +"J.shapesurface.IsosurfaceMesh,JU.BS");e(d,"findValue",function(a,b,c,f){c=100;this.vwr.gdata.isAntialiased()&&(a<<=1,b<<=1,c<<=1);for(var d=-1,e=null,h=null,g=0;gh.firstRealVertex?0:h.firstRealVertex,k=0;if(null!=j&&0=n;)u=j[K],l=this.coordinateInRange(a,b,u,c,this.ptXY),0<=l&&(c=l,d=K,this.pickedMesh=h,this.pickedPt=u);if(-1!=d)break}else if(null!=h.vvs){if(null!=h.bsSlabDisplay)for(K=h.bsSlabDisplay.nextSetBit(0);0<=K;K=h.bsSlabDisplay.nextSetBit(K+1)){if(j=h.pis[K],null!=j)for(k=0;3>k;k++)u=h.vs[j[k]],l=this.coordinateInRange(a, +b,u,c,this.ptXY),0<=l&&(c=l,d=j[k],this.pickedMesh=h,this.pickedPt=u)}else for(K=h.vc;--K>=n;)u=h.vs[K],l=this.coordinateInRange(a,b,u,c,this.ptXY),0<=l&&(c=l,d=K,this.pickedMesh=h,this.pickedPt=u);if(-1!=d)break}}return-1==d?null:(JU.Logger.debugging?"$"+h.thisID+"["+(d+1)+"] "+h.vs[d]+": ":h.thisID+": ")+h.vvs[d]},"~N,~N,~B,JU.BS");e(d,"getCmd",function(a){var b=(new JU.SB).append("\n");this.getMeshCommand(b,a);return b.toString()},"~N");l(d,"getValues",function(a){return null==a?null:a.getValidValues(null)}, +"J.shape.Mesh");l(d,"getVertices",function(a){return null==a?null:a.getValidVertices(null)},"J.shape.Mesh")});E("J.jvxl.data");T(null,"J.jvxl.data.JvxlCoder","JU.BS $.Lst $.P3 $.PT $.SB J.api.Interface J.jvxl.data.VolumeData JU.BSUtil $.C $.Escape $.Logger JV.Viewer".split(" "),function(){var d=za(J.jvxl.data,"JvxlCoder",null);d.jvxlGetFile=e(d,"jvxlGetFile",function(a,b,c,f,d,e,h,g){J.jvxl.data.JvxlCoder.checkHaveXMLUtil();var j=new JU.SB;if("TRAILERONLY".equals(f))return JU.XmlUtil.closeTag(j,"jvxlSurfaceSet"), +JU.XmlUtil.closeTag(j,"jvxl"),j.toString();var n=null!=b,k="HEADERONLY".equals(f);if(d){JU.XmlUtil.openDocument(j);JU.XmlUtil.openTagAttr(j,"jvxl",D(-1,["version","2.4","jmolVersion",a.version,"xmlns","http://jmol.org/jvxl_schema","xmlns:cml","http://www.xml-cml.org/schema"]));JU.XmlUtil.appendCdata(j,"jvxlFileTitle",null,null==a.jvxlFileTitle?"\n":"\n"+a.jvxlFileTitle);null!=a.moleculeXml&&j.append(a.moleculeXml);var q=n?null:a.jvxlVolumeDataXml;null==q&&(q=(new J.jvxl.data.VolumeData).setVolumetricXml()); +j.append(q);JU.XmlUtil.openTagAttr(j,"jvxlSurfaceSet",D(-1,["count",""+(0f&&(f=JU.BSUtil.cardinalityOf(c));if(0!=f){var e=new JU.SB;e.append("\n ");J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(c,-1,e);JU.XmlUtil.appendTagObj(a,b,D(-1,[d,"bsEncoding","base90+35","count",""+f,"len",""+c.length()]),J.jvxl.data.JvxlCoder.jvxlCompressString(e.toString(),!0))}},"JU.SB,~S,JU.BS,~N,~A");d.jvxlSetCompressionRatio=e(d,"jvxlSetCompressionRatio",function(a,b,c){a=a.toString(); +b=A(0b.indexOf("#")?b:b.substring(0,b.indexOf("#")))+"\n");null!=c&&(0<=c.indexOf("** XML ** ")?(c=JU.PT.split(c,"** XML **")[1].trim(),JU.XmlUtil.appendTag(a,"jvxlIsosurfaceState","\n"+c+"\n")):JU.XmlUtil.appendCdata(a,"jvxlIsosurfaceState",null,"\n"+c))},"JU.SB,~S,~S");d.appendXmlColorData=e(d,"appendXmlColorData",function(a, +b,c,f,d,e){var h;if(!(null==b||0>(h=b.length-1)))f&&(h/=2),JU.XmlUtil.appendTagObj(a,"jvxlColorData",D(-1,["count",""+h,"encoding",c?"base90f"+(f?"2":"1"):"none","min",""+d,"max",""+e,"data",J.jvxl.data.JvxlCoder.jvxlCompressString(b,!0)]),null)},"JU.SB,~S,~B,~B,~N,~N");d.jvxlGetInfo=e(d,"jvxlGetInfo",function(a){return J.jvxl.data.JvxlCoder.jvxlGetInfoData(a,a.vertexDataOnly)},"J.jvxl.data.JvxlData");d.jvxlGetInfoData=e(d,"jvxlGetInfoData",function(a,b){if(null==a.jvxlSurfaceData)return"";J.jvxl.data.JvxlCoder.checkHaveXMLUtil(); +var c=new JU.Lst,f=a.nSurfaceInts,d=b?0:a.jvxlEdgeData.length-1,e=null==a.jvxlColorData?-1:a.jvxlColorData.length-1;J.jvxl.data.JvxlCoder.addAttrib(c,"\n isModelConnected",""+a.isModelConnected);if(!b){J.jvxl.data.JvxlCoder.addAttrib(c,"\n cutoff",null==a.cutoffRange?""+a.cutoff:a.cutoffRange[0]+" "+a.cutoffRange[1]);J.jvxl.data.JvxlCoder.addAttrib(c,"\n isCutoffAbsolute",""+a.isCutoffAbsolute);J.jvxl.data.JvxlCoder.addAttrib(c,"\n pointsPerAngstrom",""+a.pointsPerAngstrom);var h=a.jvxlSurfaceData.length+ +d+e+1;0a.color.indexOf("null")&&J.jvxl.data.JvxlCoder.addAttrib(c,"\n color",a.color);J.jvxl.data.JvxlCoder.addAttrib(c,"\n translucency",""+a.translucency);null!=a.meshColor&&J.jvxl.data.JvxlCoder.addAttrib(c, +"\n meshColor",a.meshColor);null!=a.colorScheme&&J.jvxl.data.JvxlCoder.addAttrib(c,"\n colorScheme",a.colorScheme);null!=a.rendering&&J.jvxl.data.JvxlCoder.addAttrib(c,"\n rendering",a.rendering);null!=a.thisSet&&(f=J.jvxl.data.JvxlCoder.subsetString(a.thisSet),f.startsWith("[")?J.jvxl.data.JvxlCoder.addAttrib(c,"\n subset",f):J.jvxl.data.JvxlCoder.addAttrib(c,"\n set",f));-2147483648!=a.slabValue&&J.jvxl.data.JvxlCoder.addAttrib(c,"\n slabValue",""+a.slabValue);a.isSlabbable&&J.jvxl.data.JvxlCoder.addAttrib(c, +"\n slabbable","true");0a[c].size())){var f=a[c].get(0).intValue(),d=new JU.SB;d.append("\n");var e=a[c].get(1);J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(e,f, +d);JU.XmlUtil.appendTagObj(b,"jvxlContour",D(-1,["index",""+c,"value",""+a[c].get(2),"color",JU.Escape.escapeColor(a[c].get(4)[0]),"count",""+e.length(),"encoding","base90iff1","bsEncoding","base90+35c","data",J.jvxl.data.JvxlCoder.jvxlCompressString(a[c].get(5).toString(),!0)]),J.jvxl.data.JvxlCoder.jvxlCompressString(d.toString(),!0))}JU.XmlUtil.closeTag(b,"jvxlContourData")},"~A,JU.SB");d.set3dContourVector=e(d,"set3dContourVector",function(a,b,c){if(!(6>a.size()))for(var f=a.get(5),d=a.get(1), +e=0,h=f.length(),g=0,j=" ",n=" ",k=d.nextSetBit(0);0<=k;k=d.nextSetBit(k+1)){for(var q=b[k];eb.length&&System.out.println("JVXLCODER ERROR");var e=a.isJvxlPrecisionColor,h=e?a.mappedDataMin:a.valueMappedToRed,g=e?a.mappedDataMax:a.valueMappedToBlue;b.lengthx?(h.appendI(x),q=!0):(h.appendC(String.fromCharCode(92+x)),q=!1);0==++n%3&&(g.appendI(b[u][3]),n=0,u++,r++)}if(0==h.length())return!0;JU.XmlUtil.appendTagObj(a,"jvxlTriangleData",D(-1,["count",""+r,"encoding","jvxltdiff","data",J.jvxl.data.JvxlCoder.jvxlCompressString(h.toString(),e)]),null);JU.XmlUtil.appendTagObj(a,"jvxlTriangleEdgeData",D(-1,["count",""+r,"encoding","jvxlsc","data",J.jvxl.data.JvxlCoder.jvxlCompressString(g.toString(),e)]),null);return!0},"JU.SB,~A,~N,JU.BS,~A,~B");d.appendXmlVertexData= +e(d,"appendXmlVertexData",function(a,b,c,f,d,e,h,g,j,n,k,q){var r=b.colorFractionBase,l=b.colorFractionRange,u,x=b.boundingBox[0],A=b.boundingBox[1],E=new JU.SB,G=new JU.SB,S=null,O=null!=j;if(0a?0:1b&&(b=a.length());for(var h=0,g=!1,j=b-1,n=0;nb&&(b=a.length());if(0==b)return 0;c.append("-");for(var h=0;hh)return-2147483648;for(;h=g)return-2147483648;var j=1,n=a.charAt(h).charCodeAt(0)==b+c;for(n&&h++;hd++?c:JU.PT.parseIntNext(a,g);if(-2147483648==c)break;0>c?(d=c,c=f):(h&&b.setBits(e,e+c),e+=c,f=c,h=!h)}return b},"~S");d.jvxlCompressString=e(d,"jvxlCompressString",function(a,b){if(0<=a.indexOf("~"))return a;for(var c=new JU.SB,f="\x00",d=!1,e=!1,h=0,g=a.length,j=0;j<=g;j++){var n=j==g?"\x00": +a.charAt(j);switch(n.charCodeAt(0)){case 10:case 13:continue;case 38:case 60:d=b;break;default:d=!1}if(n==f)++h,n="\x00";else if(0h&&!e||" "==f||"\t"==f)for(;0<=--h;)c.appendC(f);else e?e=!1:c.appendC("~"),c.appendI(h),c.appendC(" ");h=0}"\x00"!=n&&(d?(e=!0,c.appendC("~"),f=n,n=String.fromCharCode(n.charCodeAt(0)-1)):f=n,c.appendC(n))}return c.toString()},"~S,~B");d.jvxlDecompressString=e(d,"jvxlDecompressString",function(a){if(0>a.indexOf("~"))return a;for(var b=new JU.SB,c="\x00",f= +t(1,0),d=0;da;a++)this.volumetricMatrix.setColumnV(a,this.volumetricVectors[a]);try{this.inverseMatrix.invertM(this.volumetricMatrix)}catch(b){if(ba(b, +Exception))return JU.Logger.error("VolumeData error setting matrix -- bad unit vectors? "),!1;throw b;}return!0});e(d,"transform",function(a,b){this.volumetricMatrix.rotate2(a,b)},"JU.V3,JU.V3");e(d,"setPlaneParameters",function(a){this.thePlane=a;this.thePlaneNormalMag=Math.sqrt(a.x*a.x+a.y*a.y+a.z*a.z)},"JU.P4");e(d,"calcVoxelPlaneDistance",function(a,b,c){this.voxelPtToXYZ(a,b,c,this.ptXyzTemp);return this.distancePointToPlane(this.ptXyzTemp)},"~N,~N,~N");e(d,"getToPlaneParameter",function(){return Math.sqrt(this.thePlane.x* +this.thePlane.x+this.thePlane.y*this.thePlane.y+this.thePlane.z*this.thePlane.z)*this.minToPlaneDistance});e(d,"isNearPlane",function(a,b,c,f){this.voxelPtToXYZ(a,b,c,this.ptXyzTemp);return this.thePlane.x*this.ptXyzTemp.x+this.thePlane.y*this.ptXyzTemp.y+this.thePlane.z*this.ptXyzTemp.z+this.thePlane.wa;a++){var b=this.volumetricVectorLengths[a]=this.volumetricVectors[a].length();if(0==b)return!1;b>this.maxVectorLength&&(this.maxVectorLength=b);this.voxelVolume*=b;this.unitVolumetricVectors[a].setT(this.volumetricVectors[a]);this.unitVolumetricVectors[a].normalize()}this.minToPlaneDistance= +2*this.maxVectorLength;this.origin[0]=this.volumetricOrigin.x;this.origin[1]=this.volumetricOrigin.y;this.origin[2]=this.volumetricOrigin.z;this.oabc=Array(4);this.oabc[0]=JU.V3.newV(this.volumetricOrigin);for(a=0;3>a;a++)b=this.oabc[a+1]=new JU.V3,b.scaleAdd2(this.voxelCounts[a]-1,this.volumetricVectors[a],b);return this.setMatrix()});e(d,"xyzToVoxelPt",function(a,b,c,f){this.ptXyzTemp.set(a,b,c);this.ptXyzTemp.sub(this.volumetricOrigin);this.inverseMatrix.rotate(this.ptXyzTemp);f.set(Math.round(this.ptXyzTemp.x), +Math.round(this.ptXyzTemp.y),Math.round(this.ptXyzTemp.z))},"~N,~N,~N,JU.T3i");e(d,"lookupInterpolatedVoxelValue",function(a,b){if(null!=this.mappingPlane)return this.distanceToMappingPlane(a);if(null!=this.sr){var c=this.sr.getValueAtPoint(a,b);return this.isSquared?c*c:c}this.ptXyzTemp.sub2(a,this.volumetricOrigin);this.inverseMatrix.rotate(this.ptXyzTemp);var f,d=this.indexLower(this.ptXyzTemp.x,f=this.voxelCounts[0]-1),e=this.indexUpper(this.ptXyzTemp.x,d,f),h=this.indexLower(this.ptXyzTemp.y, +f=this.voxelCounts[1]-1),g=this.indexUpper(this.ptXyzTemp.y,h,f),c=this.indexLower(this.ptXyzTemp.z,f=this.voxelCounts[2]-1),j=this.indexUpper(this.ptXyzTemp.z,c,f);f=J.jvxl.data.VolumeData.getFractional2DValue(this.mantissa(this.ptXyzTemp.x-d),this.mantissa(this.ptXyzTemp.y-h),this.getVoxelValue(d,h,c),this.getVoxelValue(e,h,c),this.getVoxelValue(d,g,c),this.getVoxelValue(e,g,c));d=J.jvxl.data.VolumeData.getFractional2DValue(this.mantissa(this.ptXyzTemp.x-d),this.mantissa(this.ptXyzTemp.y-h),this.getVoxelValue(d, +h,j),this.getVoxelValue(e,h,j),this.getVoxelValue(d,g,j),this.getVoxelValue(e,g,j));return f+this.mantissa(this.ptXyzTemp.z-c)*(d-f)},"JU.T3,~B");e(d,"mantissa",function(a){return this.isPeriodic?a-Math.floor(a):a},"~N");e(d,"getVoxelValue",function(a,b,c){if(null==this.voxelMap)return this.voxelData[a][b][c];a=this.voxelMap.get(Integer.$valueOf(this.getPointIndex(a,b,c)));return null==a?NaN:a.floatValue()},"~N,~N,~N");d.getFractional2DValue=e(d,"getFractional2DValue",function(a,b,c,f,d,e){c+=a*(f- +c);return c+b*(d+a*(e-d)-c)},"~N,~N,~N,~N,~N,~N");e(d,"indexLower",function(a,b){if(this.isPeriodic&&0a;)a+=b;for(;a>=b;)a-=b;return M(Math.floor(a))}if(0>a)return 0;var c=M(Math.floor(a));return c>b?b:c},"~N,~N");e(d,"indexUpper",function(a,b,c){return!this.isPeriodic&&0>a||b==c?b:b+1},"~N,~N,~N");e(d,"offsetCenter",function(a){var b=new JU.P3;b.scaleAdd2((this.voxelCounts[0]-1)/2,this.volumetricVectors[0],b);b.scaleAdd2((this.voxelCounts[1]-1)/2,this.volumetricVectors[1],b);b.scaleAdd2((this.voxelCounts[2]- +1)/2,this.volumetricVectors[2],b);this.volumetricOrigin.sub2(a,b)},"JU.P3");e(d,"setDataDistanceToPlane",function(a){this.setPlaneParameters(a);a=this.voxelCounts[0];var b=this.voxelCounts[1],c=this.voxelCounts[2];this.voxelData=x(a,b,c,0);for(var f=0;fn)this.voxelData[h][g][j]=k}}},"JU.P4,~N");e(d,"setVolumetricXml",function(){var a=new JU.SB;if(0==this.voxelCounts[0])a.append("\n");else{a.append('\n');for(var b=0;3>b;b++)a.append('\n')}a.append("\n");return this.xmlData=a.toString()});e(d,"setVoxelMapValue",function(a,b,c,f){null!=this.voxelMap&&this.voxelMap.put(Integer.$valueOf(this.getPointIndex(a,b,c)),Float.$valueOf(f))},"~N,~N,~N,~N");e(d,"calculateFractionalPoint",function(a,b,c,f,d,e){var h=d-f,g=(a-f)/h;this.edgeVector.sub2(c,b);e.scaleAdd2(g,this.edgeVector,b);if(null==this.sr||!this.doIterate||d==f||0.01>g||0.99this.edgeVector.length())return a;b=0;this.ptTemp.setT(e); +c=this.lookupInterpolatedVoxelValue(this.ptTemp,!1);for(d=NaN;10>++b;){var j=(c-f)/h;if(0>j||1g||1Math.abs(j))break;this.ptTemp.scaleAdd2(j,this.edgeVector,e);c=this.lookupInterpolatedVoxelValue(this.ptTemp,!1)}return d},"~N,JU.P3,JU.P3,~N,~N,JU.P3")});E("J.jvxl.data");T(null,"J.jvxl.data.JvxlData",["JU.SB","J.jvxl.data.JvxlCoder"],function(){var d=G(function(){this.msg="";this.wasCubic=this.wasJvxl=!1;this.jvxlPlane=this.jvxlExcluded= +this.jvxlVolumeDataXml=this.jvxlColorData=this.jvxlEdgeData=this.jvxlSurfaceData=this.jvxlFileMessage=this.jvxlFileTitle=this.jvxlFileSource=null;this.isColorReversed=this.jvxlDataIsColorDensity=this.jvxlDataIs2dContour=this.jvxlDataIsColorMapped=this.isJvxlPrecisionColor=!1;this.thisSet=null;this.edgeFractionBase=35;this.edgeFractionRange=90;this.colorFractionBase=35;this.colorFractionRange=90;this.isValid=!0;this.vertexDataOnly=this.isModelConnected=this.isCutoffAbsolute=this.isTruncated=this.isBicolorMap= +this.isContoured=this.isXLowToHigh=this.insideOut=!1;this.cutoff=this.valueMappedToBlue=this.valueMappedToRed=this.mappedDataMax=this.mappedDataMin=0;this.cutoffRange=null;this.vertexCount=this.nSurfaceInts=this.nEdges=this.nContours=this.nBytes=this.nPointsZ=this.nPointsY=this.nPointsX=this.pointsPerAngstrom=0;this.contourValuesUsed=this.contourValues=this.contourColors=this.contourColixes=this.vContours=null;this.thisContour=-1;this.scale3d=0;this.minColorIndex=-1;this.maxColorIndex=0;this.boundingBox= +this.version=this.title=null;this.excludedVertexCount=this.excludedTriangleCount=0;this.colorDensity=!1;this.pointSize=0;this.moleculeXml=null;this.saveVertexCount=this.dataMax=this.dataMin=0;this.vertexColorMap=null;this.nVertexColors=0;this.meshColor=this.color=this.vertexColors=null;this.translucency=0;this.rendering=this.colorScheme=null;this.slabValue=-2147483648;this.isSlabbable=!1;this.diameter=0;this.slabInfo=null;this.allowVolumeRender=!1;this.voxelVolume=0;this.baseColor=this.fixedLattice= +this.mapLattice=null;this.integration=NaN;this.sbOut=null;U(this,arguments)},J.jvxl.data,"JvxlData",null);da(d,function(){this.jvxlExcluded=Array(4)});Z(d,function(){});e(d,"clear",function(){this.allowVolumeRender=!0;this.jvxlVolumeDataXml=this.jvxlColorData=this.jvxlEdgeData=this.jvxlSurfaceData="";this.colorScheme=this.color=null;this.colorDensity=!1;this.pointSize=NaN;this.contourColors=this.contourColixes=this.contourValuesUsed=this.contourValues=null;this.integration=NaN;this.isSlabbable=!1; +this.isValid=!0;this.meshColor=this.mapLattice=null;this.msg="";this.nVertexColors=this.nPointsX=0;this.slabInfo=this.fixedLattice=null;this.slabValue=-2147483648;this.rendering=this.thisSet=null;this.thisContour=-1;this.translucency=0;this.vertexColors=this.vertexColorMap=this.vContours=null;this.voxelVolume=0});e(d,"setSurfaceInfo",function(a,b,c,f){this.jvxlSurfaceData=f;this.jvxlPlane=a;this.mapLattice=b;this.nSurfaceInts=c},"JU.P4,JU.P3,~N,~S");e(d,"setSurfaceInfoFromBitSet",function(a,b){this.setSurfaceInfoFromBitSetPts(a, +b,null)},"JU.BS,JU.P4");e(d,"setSurfaceInfoFromBitSetPts",function(a,b,c){var f=new JU.SB;a=null!=b?0:J.jvxl.data.JvxlCoder.jvxlEncodeBitSetBuffer(a,this.nPointsX*this.nPointsY*this.nPointsZ,f);this.setSurfaceInfo(b,c,a,f.toString())},"JU.BS,JU.P4,JU.P3");e(d,"jvxlUpdateInfo",function(a,b){this.title=a;this.nBytes=b},"~A,~N");d.updateSurfaceData=e(d,"updateSurfaceData",function(a,b,c,f,d){if(0==a.length)return"";a=a.toCharArray();for(var e=0,h=0;ec&&(this.vertexIncrement= +-c);return this.addVCVal(a,b,f)},"JU.T3,~N,~N,~B");e(d,"getSurfaceSet",function(){return null==this.surfaceSet?this.getSurfaceSetForLevel(0):this.surfaceSet});e(d,"getSurfaceSetForLevel",function(a){0==a&&(this.surfaceSet=Array(100),this.nSets=0);this.setsSuccessful=!0;for(var b=0;bf&&0>d&&0>e?this.createSet(c[0],c[1],c[2]):f== +d&&d==e||(0<=f?(this.surfaceSet[f].set(c[1]),this.surfaceSet[f].set(c[2]),0<=d&&d!=f&&this.mergeSets(f,d),0<=e&&(e!=f&&e!=d)&&this.mergeSets(f,e)):0<=d?(this.surfaceSet[d].set(c[0]),this.surfaceSet[d].set(c[2]),0<=e&&e!=d&&this.mergeSets(d,e)):(this.surfaceSet[e].set(c[0]),this.surfaceSet[e].set(c[1])))}for(b=c=0;ba&&this.getSurfaceSetForLevel(a+1);if(0==a){a=Array(this.nSets);for(b=0;bthis.surfaceSet[c].nextSetBit(0)&& +(this.surfaceSet[c]=null),null==this.surfaceSet[c]&&b++;if(0a||0>b||0>c)return!1;a=f[a];b=f[b];c=f[c];return 0<=a&&0<=b&&0<=c||0>=a&&0>=b&&0>=c},"~N,~N,~N,~A");d.calculateVolumeOrArea=e(d,"calculateVolumeOrArea",function(a,b,c,f){(f||0>=a.nSets)&&a.getSurfaceSet();var d=null!=b&&1==b.cardinality(),e=d||0>=a.nSets?1:a.nSets;f=Ja(e,0);for(var h=new JU.V3,g=new JU.V3,j=new JU.V3,n=a.pc;0<= +--n;)if(null!=a.setABC(n)){var k=0>=a.nSets?0:a.vertexSets[a.iA];if(null==b||b.get(k))c?(h.sub2(a.vs[a.iB],a.vs[a.iA]),g.sub2(a.vs[a.iC],a.vs[a.iA]),j.cross(h,g),f[d?0:k]+=j.length()):(h.setT(a.vs[a.iB]),g.setT(a.vs[a.iC]),j.cross(h,g),g.setT(a.vs[a.iA]),f[d?0:k]+=g.dot(j))}a=c?2:6;for(n=0;nc.n?-1:a.n"==this.line.charAt(b))return this.line;this.line=null;return this.toTag(a)},"~S");e(d,"skipTag",function(a){this.skipTo("")},"~S");e(d,"getXmlData",function(a,b,c,f){return this.getXmlDataLF(a,b,c,f,!1)},"~S,~S,~B,~B");e(d,"getXmlDataLF",function(a,b,c,f,d){var e="";a="<"+a;if(null==b){b=new JU.SB;try{null==this.line&& +(this.line=this.br.readLine());for(;0>this.line.indexOf(a);)this.line=this.br.readLine()}catch(h){if(ba(h,Exception))return null;throw h;}b.append(this.line);d&&b.append("\n");var g=!1,j=this.line.indexOf("/>"),n=this.line.indexOf(">");if(0>n||j==n-1)g=f;for(;0>this.line.indexOf(e)&&(!g||0>this.line.indexOf("/>"));)b.append(this.line=this.br.readLine()),d&&b.append("\n");b=b.toString()}return J.jvxl.readers.XmlReader.extractTag(b,a,e,c)},"~S,~S,~B,~B,~B");d.extractTagOnly=e(d,"extractTagOnly",function(a, +b){return J.jvxl.readers.XmlReader.extractTag(a,"<"+b+">","",!1)},"~S,~S");d.extractTag=e(d,"extractTag",function(a,b,c,f){b=a.indexOf(b);if(0>b)return"";var d=a.indexOf(c,b);0>d&&(d=a.indexOf("/>",b),c="/>");if(0>d)return"";if(f)return d+=c.length,a.substring(b,d);for(c=!1;b"==f||"/"==f))break;if(b>=d)return"";for(;JU.PT.isWhitespace(a.charAt(++b)););return J.jvxl.readers.XmlReader.unwrapCdata(a.substring(b,d))},"~S,~S,~S,~B"); +d.unwrapCdata=e(d,"unwrapCdata",function(a){return a.startsWith("","]]\x3e"):a},"~S");d.getXmlAttrib=e(d,"getXmlAttrib",function(a,b){var c=t(1,0),f=J.jvxl.readers.XmlReader.setNext(a,b,c,1);if(2>f||2>(f=J.jvxl.readers.XmlReader.setNext(a,'"',c,0)))return"";c=J.jvxl.readers.XmlReader.setNext(a,'"',c,-1);return 0>=c?"":a.substring(f,c)},"~S,~S");e(d,"getXmlPoint",function(a,b){var c=J.jvxl.readers.XmlReader.getXmlAttrib(a, +b).$replace("(","{").$replace(")","}"),c=JU.Escape.uP(c);return aa(c,"JU.P3")?c:new JU.P3},"~S,~S");d.setNext=e(d,"setNext",function(a,b,c,f){var d=c[0];if(0>d||0>(d=a.indexOf(b,c[0])))return-1;d+=b.length;c[0]=d+f;return 0this.line.indexOf(a);)this.line=this.br.readLine()},"~S");e(d,"isNext",function(a){if(null== +this.line||0<=this.line.indexOf("this.params.fileIndex&&(this.params.fileIndex=0),this.params.readAllData=!1,!0;if("blockData"===a)return this.params.blockCubeData=b.booleanValue(),!0;if("withinPoints"===a)return this.params.boundingBox=b[1],!0;if("boundingBox"===a)return this.params.boundingBox=D(-1,[JU.P3.newP(b[0]),JU.P3.newP(b[b.length-1])]),!0;if("func"===a)return this.params.func=b,!0;if("intersection"===a)return this.params.intersection=b,!0;if("bsSolvent"=== +a)return this.params.bsSolvent=b,!0;if("select"===a)return this.params.bsSelected=b,!0;if("ignore"===a)return this.params.bsIgnore=b,!0;if("propertySmoothing"===a)return this.params.propertySmoothing=b.booleanValue(),!0;if("propertyDistanceMax"===a)return this.params.propertyDistanceMax=b.floatValue(),!0;if("propertySmoothingPower"===a)return this.params.propertySmoothingPower=b.intValue(),!0;if("title"===a){if(null==b)this.params.title=null;else if(JU.AU.isAS(b)&&(this.params.title=b,JU.Logger.debugging))for(var f= +0;fthis.params.valueMappedToBlue&&(c=this.params.valueMappedToRed,this.params.valueMappedToRed=this.params.valueMappedToBlue,this.params.valueMappedToBlue=c,this.params.isColorReversed=!this.params.isColorReversed),this.params.rangeDefined=!0,this.params.rangeAll=!1,!0;if("reverseColor"===a)return this.params.isColorReversed=!0;if("setColorScheme"===a)return this.getSurfaceSets(),this.params.colorBySets=!0,this.mapSurface(),!0;if("center"===a)return this.params.center.setT(b), +!0;if("origin"===a)return this.params.origin=b,!0;if("step"===a)return this.params.steps=b,!0;if("modelInvRotation"===a)return this.params.modelInvRotation=b,!0;if("point"===a)return this.params.points=b,!0;if("withinDistance"===a)return this.params.distance=b.floatValue(),!0;if("withinPoint"===a)return this.params.point=b,!0;if("progressive"===a)return this.params.isXLowToHigh=!0;if("phase"===a)return this.params.isCutoffAbsolute=!0,this.params.colorBySign=!0,this.params.colorByPhase=!0,this.params.colorPhase= +J.jvxl.readers.SurfaceReader.getColorPhaseIndex(b),0>this.params.colorPhase&&(JU.Logger.warn(" invalid color phase: "+b),this.params.colorPhase=0),this.params.colorByPhase=0!=this.params.colorPhase,2<=this.params.state&&(this.params.dataType=this.params.surfaceType,this.params.state=3,this.params.isBicolorMap=!0,this.surfaceReader.applyColorScale()),!0;if("radius"===a)return JU.Logger.info("solvent probe radius set to "+b),this.params.atomRadiusData=b,!0;if("envelopeRadius"===a)return this.params.envelopeRadius= +b.floatValue(),!0;if("cavityRadius"===a)return this.params.cavityRadius=b.floatValue(),!0;if("cavity"===a)return this.params.isCavity=!0;if("doFullMolecular"===a)return this.params.doFullMolecular=!0;if("pocket"===a)return this.params.pocket=b,this.params.fullyLit=this.params.pocket.booleanValue(),!0;if("minset"===a)return this.params.minSet=b.intValue(),!0;if("maxset"===a)return this.params.maxSet=b.intValue(),!0;if("plane"===a)return this.params.setPlane(b),!0;if("contour"===a){this.params.isContoured= +!0;if(JU.AU.isAF(b))this.params.contoursDiscrete=b,this.params.nContours=this.params.contoursDiscrete.length;else if(aa(b,"JU.P3")){var c=this.params.contourIncrements=b,f=c.x,d=c.y,e=c.z;0>=e&&(e=1);for(var c=0,h=f;h<=d+e/10;h+=e,c++);this.params.contoursDiscrete=x(c,0);h=f;for(f=0;f++this.params.state)&&this.setReader()){this.params.isPeriodic&&(this.surfaceReader.volumeData.isPeriodic=!0);if(null!=this.params.thePlane){var a=this.params.isSquared;this.params.isSquared=!1;this.params.cutoff=0;this.params.cutoffRange=null;this.surfaceReader.volumeData.setMappingPlane(this.params.thePlane);this.surfaceReader.createIsosurface(!this.params.isPeriodic);this.surfaceReader.volumeData.setMappingPlane(null); +null!=this.meshDataServer&&this.meshDataServer.notifySurfaceGenerationCompleted();if(1207==this.params.dataType){this.surfaceReader.discardTempData(!0);return}this.params.isSquared=a;this.params.mappedDataMin=3.4028235E38;this.surfaceReader.readVolumeData(!0);null!=this.params.mapLattice&&(this.surfaceReader.volumeData.isPeriodic=!0)}else!this.params.colorBySets&&!this.params.colorDensity&&(this.surfaceReader.readAndSetVolumeParameters(!0),this.params.mappedDataMin=3.4028235E38,this.surfaceReader.readVolumeData(!0)); +this.colorIsosurface();this.surfaceReader.closeReader();this.surfaceReader=null}});e(d,"colorIsosurface",function(){this.surfaceReader.colorIsosurface();this.surfaceReader.jvxlUpdateInfo();this.surfaceReader.updateTriangles();this.surfaceReader.discardTempData(!0);null!=this.meshDataServer&&this.meshDataServer.notifySurfaceMappingCompleted()});e(d,"getProperty",function(a,b){return"jvxlFileData"===a?J.jvxl.data.JvxlCoder.jvxlGetFile(this.jvxlData,null,this.params.title,"",!0,b,null,null):"jvxlFileInfo"=== +a?J.jvxl.data.JvxlCoder.jvxlGetInfo(this.jvxlData):null},"~S,~N");e(d,"setFileData",function(a,b){var c=this.fileType;this.fileType=null;if(aa(b,"java.util.Map")){var f=b;if(f.containsKey("__pymolSurfaceData__"))return this.readerData=f,this.newReaderBr("PyMOLMeshReader",null);b=f.get("volumeData")}if(aa(b,"J.jvxl.data.VolumeData"))return this.volumeDataTemp=b,this.newReader("VolumeDataReader");f=null;"string"==typeof b&&(f=b,b=JU.Rdr.getBR(b));if(aa(b,Array)){for(var f=b[0],d=Array(f.length),e=0;e< +f.length;e++)this.fileType=c,d[e]=this.setFileData(a,f[e]);b[0]=d;this.readerData=b;return this.newReader("IsoIntersectGridReader")}d=b;null==c&&(c=JV.FileManager.determineSurfaceFileType(d));if(null!=c&&c.startsWith("UPPSALA")){e=this.params.fileName;e=e.substring(0,e.indexOf("/",10));e+=JU.PT.getQuotedStringAt(c,c.indexOf("A HREF")+1);this.params.fileName=e;b=this.atomDataServer.getBufferedInputStream(e);if(null==b)return JU.Logger.error("Isosurface: could not open file "+e),null;try{d=JU.Rdr.getBufferedReader(b, +null)}catch(h){if(!ba(h,Exception))throw h;}c=JV.FileManager.determineSurfaceFileType(d)}null==c&&(c="UNKNOWN");JU.Logger.info("data file type was determined to be "+c);if(c.equals("Jvxl+"))return this.newReaderBr("JvxlReader",d);this.readerData=D(-1,[this.params.fileName,f]);0<="MRC DELPHI DSN6".indexOf(c.toUpperCase())&&(c+="Binary");return this.newReaderBr(c+"Reader",d)},"JV.Viewer,~O");e(d,"getReaderData",function(){var a=this.readerData;this.readerData=null;return a});e(d,"initializeIsosurface", +function(){this.params.initialize();this.colorPtr=0;this.marchingSquares=this.surfaceReader=null;this.initState()});e(d,"initState",function(){this.params.state=1;this.params.dataType=this.params.surfaceType=0});e(d,"setLcao",function(){this.params.colorPos=this.params.colorPosLCAO;this.params.colorNeg=this.params.colorNegLCAO;return this.params.lcaoType});e(d,"getFunctionZfromXY",function(){for(var a=this.params.functionInfo.get(1),b=t(3,0),c=t(3,0),f=Array(3),d=0;3>d;d++){var e=this.params.functionInfo.get(d+ +2);b[d]=Math.abs(A(e.x));f[d]=JU.V3.new3(e.y,e.z,e.w)}for(var e=b[0],b=b[1],h=new JU.P3,g=new JU.P3,j=new JU.P3,n=new JU.P3,k=this.params.functionInfo.get(5),q=x(e,b,0),r,d=0;du?h.z=r[2]:(j.set((r=k[c[1]])[0],r[1],r[2]),n.set((r=k[c[2]])[0],r[1],r[2]),h.z=this.distanceVerticalToPlane(h.x,h.y,g,j,n));q[d][l]=h.z}this.params.functionInfo.set(5, +q)});e(d,"distanceVerticalToPlane",function(a,b,c,f,d){c=JU.Measure.getDirectedNormalThroughPoints(c,f,d,this.ptRef,this.vNorm,this.vAB);return(this.vNorm.x*a+this.vNorm.y*b+c)/-this.vNorm.z},"~N,~N,JU.P3,JU.P3,JU.P3");d.findNearestThreePoints=e(d,"findNearestThreePoints",function(a,b,c,f){var d,e,h,g,j,n,k;j=n=k=-1;e=h=g=3.4028235E38;for(var q=c.length;0<=--q;)d=(d=c[q][0]-a)*d+(d=c[q][1]-b)*d,da.w?1:b.length();a=Math.abs(a.w);b.normalize();var f=JU.V3.new3(0,0,1);b.add(f);b.normalize();Float.isNaN(b.x)&&b.set(1, +0,0);this.eccentricityMatrixInverse=new JU.M3;this.eccentricityMatrixInverse.invertM(this.eccentricityMatrix=(new JU.M3).setAA(JU.A4.newVA(b,3.141592653589793)));this.isEccentric=this.isAnisotropic=!0;this.eccentricityScale=c;this.eccentricityRatio=a;1this.state&&(this.cutoffAutomatic||!this.colorDensity)&&(null==this.intersection||3.4028235E38==this.cutoff))this.cutoff=0;switch(this.dataType){case 1333:this.calculationType="VDW intersection";break;case 1207:this.calculationType="unmapped plane";break;case 1203:this.calculationType="molecular surface with radius "+ +this.solventRadius;0==this.minSet&&(this.minSet=50);break;case 1195:this.calculationType="solvent-excluded surface with radius "+this.solventRadius;0==this.minSet&&(this.minSet=50);break;case 1196:this.calculationType="solvent-accessible surface with radius "+this.solventRadius,0==this.minSet&&(this.minSet=50)}switch(this.dataType){case 1207:this.solventExtendedAtomRadius=this.solventRadius;this.solventRadius=0;this.isContoured=!1;break;case 1203:this.solventExtendedAtomRadius=0;break;case 1195:this.solventExtendedAtomRadius= +0;null==this.bsIgnore?this.bsIgnore=this.bsSolvent:null!=this.bsSolvent&&this.bsIgnore.or(this.bsSolvent);break;case 1196:this.solventExtendedAtomRadius=this.solventRadius,this.solventRadius=0,null==this.bsIgnore?this.bsIgnore=this.bsSolvent:null!=this.bsSolvent&&this.bsIgnore.or(this.bsSolvent)}},"~S,~N");e(d,"setFunctionXY",function(a){this.dataType=8;this.functionInfo=a;this.cutoff=1.4E-45;this.isEccentric=this.isAnisotropic=!1},"JU.Lst");e(d,"setFunctionXYZ",function(a){this.dataType=9;this.functionInfo= +a;3.4028235E38==this.cutoff&&(this.cutoff=1.4E-45);this.isEccentric=this.isAnisotropic=!1},"JU.Lst");e(d,"setAtomicOrbital",function(a){this.dataType=1294;this.setEccentricity(JU.P4.new4(0,0,1,1));this.psi_n=A(a[0]);this.psi_l=A(a[1]);this.psi_m=A(a[2]);this.psi_Znuc=a[3];this.psi_monteCarloCount=A(a[4]);this.distance=a[5];if(0!=this.distance||null!=this.thePlane)this.allowVolumeRender=!1;this.randomSeed=A(a[6]);this.psi_ptsPerAngstrom=10;if(3.4028235E38==this.cutoff||0.14==this.cutoff)this.cutoff= +0this.state&&(null==this.thePlane&&this.colorBySign)&&(this.isBicolorMap=!0);return 0this.parameters.length))this.parameters=x(-1,[this.cutoff,2]);if(3.4028235E38== +this.cutoff||0==this.cutoff)this.cutoff=0.3;this.isSquared&&(this.cutoff*=this.cutoff);null==this.title&&(this.title=[]);this.moData=new java.util.Hashtable},"~B");e(d,"setMO",function(a,b){this.isModelConnected=!0;this.qm_moLinearCombination=b;this.qm_moNumber=null==b?Math.abs(a):A(b[1]);this.qmOrbitalType=this.moData.containsKey("haveVolumeData")?5:this.moData.containsKey("gaussians")?1:this.moData.containsKey("slaters")?2:0;var c=0>=a&&null==b;0==this.qmOrbitalType?(JU.Logger.error("MO ERROR: No basis functions found in file for MO calculation. (GAUSSIAN 'gfprint' keyword may be missing?)"), +this.title=D(-1,["no basis functions found in file"])):(this.qmOrbitalCount=this.moData.get("mos").size(),this.calculationType=this.moData.get("calculationType"),this.calculationType="Molecular orbital #"+this.qm_moNumber+"/"+this.qmOrbitalCount+" "+(null==this.calculationType?"":this.calculationType),!c&&null==this.title&&(this.title=Array(5),this.title[0]="%F",this.title[1]="Model %M MO %I/%N %T",this.title[2]="?Energy = %E %U",this.title[3]="?Symmetry = %S",this.title[4]="?Occupancy = %O"));this.dataType= +1837;3.4028235E38==this.cutoff&&(this.cutoff=c?0.01:0.05);if(this.isSquared||this.isSquaredLinear)this.cutoff*=this.cutoff;this.isEccentric=this.isAnisotropic=!1;this.isCutoffAbsolute=0this.params.sigma&&(this.params.sigma=-this.params.sigma);this.nPointsX=this.voxelCounts[0];this.nPointsY=this.voxelCounts[1];this.nPointsZ=this.voxelCounts[2];this.jvxlData.isSlabbable=0!=(this.params.dataType&1024);this.jvxlData.insideOut=this.params.isInsideOut(); +this.jvxlData.isBicolorMap=this.params.isBicolorMap;this.jvxlData.nPointsX=this.nPointsX;this.jvxlData.nPointsY=this.nPointsY;this.jvxlData.nPointsZ=this.nPointsZ;this.jvxlData.jvxlVolumeDataXml=this.volumeData.xmlData;this.jvxlData.voxelVolume=this.volumeData.voxelVolume;if(a)this.volumeData.setMappingPlane(this.params.thePlane),null!=this.meshDataServer&&this.meshDataServer.fillMeshData(this.meshData,1,null),this.params.setMapRanges(this,!1),this.generateSurfaceData(),this.volumeData.setMappingPlane(null); +else{if(!this.readVolumeData(!1))return!1;this.generateSurfaceData()}if(null==this.jvxlFileHeaderBuffer)this.jvxlData.jvxlFileTitle="",this.jvxlData.jvxlFileSource=null,this.jvxlData.jvxlFileMessage=null;else{a=this.jvxlFileHeaderBuffer.toString();var b=a.indexOf("\n",a.indexOf("\n",a.indexOf("\n")+1)+1)+1;this.jvxlData.jvxlFileTitle=a.substring(0,b);this.jvxlData.jvxlFileSource=this.params.fileName}null==this.params.contactPair&&this.setBBoxAll();this.jvxlData.isValid=3.4028235E38!=this.xyzMin.x; +this.params.isSilent||(this.jvxlData.isValid?JU.Logger.info("boundbox corners "+JU.Escape.eP(this.xyzMin)+" "+JU.Escape.eP(this.xyzMax)):JU.Logger.error("no isosurface points were found!"));this.jvxlData.boundingBox=D(-1,[this.xyzMin,this.xyzMax]);this.jvxlData.dataMin=this.dataMin;this.jvxlData.dataMax=this.dataMax;this.jvxlData.cutoffRange=this.isJvxl?this.jvxlCutoffRange:this.params.cutoffRange;this.jvxlData.cutoff=null!=this.jvxlCutoffRange?this.jvxlData.cutoffRange[0]:this.isJvxl?this.jvxlCutoff: +this.params.cutoff;this.jvxlData.isCutoffAbsolute=this.params.isCutoffAbsolute;this.jvxlData.isModelConnected=this.params.isModelConnected;this.jvxlData.pointsPerAngstrom=1/this.volumeData.volumetricVectorLengths[0];this.jvxlData.jvxlColorData="";this.jvxlData.jvxlPlane=this.params.thePlane;this.jvxlData.jvxlEdgeData=this.edgeData;this.jvxlData.isBicolorMap=this.params.isBicolorMap;this.jvxlData.isContoured=this.params.isContoured;this.jvxlData.colorDensity=this.params.colorDensity;this.jvxlData.pointSize= +this.params.pointSize;null!=this.jvxlData.vContours&&(this.params.nContours=this.jvxlData.vContours.length);this.jvxlData.nContours=this.params.contourFromZero?this.params.nContours:-1-this.params.nContours;this.jvxlData.thisContour=this.params.thisContour;this.jvxlData.nEdges=this.edgeCount;this.jvxlData.edgeFractionBase=this.edgeFractionBase;this.jvxlData.edgeFractionRange=this.edgeFractionRange;this.jvxlData.colorFractionBase=this.colorFractionBase;this.jvxlData.colorFractionRange=this.colorFractionRange; +this.jvxlData.jvxlDataIs2dContour=this.jvxlDataIs2dContour;this.jvxlData.jvxlDataIsColorMapped=this.jvxlDataIsColorMapped;this.jvxlData.jvxlDataIsColorDensity=this.jvxlDataIsColorDensity;this.jvxlData.isXLowToHigh=this.isXLowToHigh;this.jvxlData.vertexDataOnly=this.vertexDataOnly;this.jvxlData.saveVertexCount=0;if(this.jvxlDataIsColorMapped||01-this.assocCutoff?g:-1:-1;0<=a&&(a=this.marchingCubes.getLinearOffset(c,f,d,a));a=this.addVertexCopy(this.ptTemp,b,a,!0);0<=a&&this.params.iAddGridPoints&&(this.marchingCubes.calcVertexPoint(c,f,d,g,this.ptTemp),this.addVertexCopy(jh||1h||1=this.meshData.mergeVertexCount0;){if(this.params.colorBySets)f=this.meshData.vertexSets[d];else if(this.params.colorByPhase)f=this.getPhase(this.meshData.vs[d]);else{var e=this.haveSurfaceAtoms;f=this.volumeData.lookupInterpolatedVoxelValue(this.meshData.vs[d],e);e&&(this.meshData.vertexSource[d]= +this.getSurfaceAtomIndex())}fc&&3.4028235E38!=f&&(c=f);this.meshData.vvs[d]=f}this.params.rangeSelected&&null==this.minMax&&(this.minMax=x(-1,[b,c]));this.finalizeMapping()}this.params.setMapRanges(this,!0);this.jvxlData.mappedDataMin=this.params.mappedDataMin;this.jvxlData.mappedDataMax=this.params.mappedDataMax;this.jvxlData.valueMappedToRed=this.params.valueMappedToRed;this.jvxlData.valueMappedToBlue=this.params.valueMappedToBlue;null==this.params.contactPair&&null==this.jvxlData.vertexColors&& +this.colorData();J.jvxl.data.JvxlCoder.jvxlCreateColorData(this.jvxlData,a?this.meshData.vvs:null);this.haveSurfaceAtoms&&null!=this.meshDataServer&&this.meshDataServer.fillMeshData(this.meshData,4,null);null!=this.meshDataServer&&this.params.colorBySets&&this.meshDataServer.fillMeshData(this.meshData,3,null)});e(d,"colorData",function(){var a=this.meshData.vvs,b=this.meshData.vcs;this.meshData.pcs=null;var c=this.jvxlData.valueMappedToBlue,f=this.jvxlData.valueMappedToRed,d=this.jvxlData.minColorIndex, +e=this.jvxlData.maxColorIndex;null==this.params.colorEncoder&&(this.params.colorEncoder=new JU.ColorEncoder(null,null));this.params.colorEncoder.setRange(this.params.valueMappedToRed,this.params.valueMappedToBlue,this.params.isColorReversed);for(var h=this.meshData.vc;0<=--h;){var g=a[h];0<=d?0>=g?b[h]=d:0=c&&(g=c),b[h]=this.params.colorEncoder.getColorIndex(g))}if((0c&&(c=f))}return this.minMax=x(-1,[b,c])}var f=0c&&3.4028235E38!= +h&&(c=h)}return this.minMax=x(-1,[b,c])},"~B");e(d,"updateTriangles",function(){null==this.meshDataServer?this.meshData.invalidatePolygons():this.meshDataServer.invalidateTriangles()});e(d,"updateSurfaceData",function(){this.meshData.setVertexSets(!0);this.updateTriangles();null==this.params.bsExcluded[1]&&(this.params.bsExcluded[1]=new JU.BS);this.meshData.updateInvalidatedVertices(this.params.bsExcluded[1])});e(d,"selectPocket",function(){},"~B");e(d,"excludeMinimumSet",function(){null!=this.meshDataServer&& +this.meshDataServer.fillMeshData(this.meshData,1,null);this.meshData.getSurfaceSet();for(var a,b=this.meshData.nSets;0<=--b;)null!=(a=this.meshData.surfaceSet[b])&&a.cardinality()this.params.maxSet&&this.meshData.invalidateSurfaceSet(b);this.updateSurfaceData();null!=this.meshDataServer&&this.meshDataServer.fillMeshData(this.meshData,3,null)});e(d,"slabIsosurface",function(a){null!=this.meshDataServer&&this.meshDataServer.fillMeshData(this.meshData,1,null);this.meshData.slabPolygonsList(a,!0);null!=this.meshDataServer&&this.meshDataServer.fillMeshData(this.meshData,4,null)},"JU.Lst");e(d, +"setVertexAnisotropy",function(a){a.x*=this.anisotropy[0];a.y*=this.anisotropy[1];a.z*=this.anisotropy[2];a.add(this.center)},"JU.T3");e(d,"setVectorAnisotropy",function(a){this.haveSetAnisotropy=!0;a.x*=this.anisotropy[0];a.y*=this.anisotropy[1];a.z*=this.anisotropy[2]},"JU.T3");e(d,"setVolumetricAnisotropy",function(){this.haveSetAnisotropy||(this.setVolumetricOriginAnisotropy(),this.setVectorAnisotropy(this.volumetricVectors[0]),this.setVectorAnisotropy(this.volumetricVectors[1]),this.setVectorAnisotropy(this.volumetricVectors[2]))}); +e(d,"setVolumetricOriginAnisotropy",function(){this.volumetricOrigin.setT(this.center)});e(d,"setBBoxAll",function(){null!=this.meshDataServer&&this.meshDataServer.fillMeshData(this.meshData,1,null);this.xyzMin=new JU.P3;this.xyzMax=new JU.P3;this.meshData.setBox(this.xyzMin,this.xyzMax)});e(d,"setBBox",function(a,b){null==this.xyzMin&&(this.xyzMin=JU.P3.new3(3.4028235E38,3.4028235E38,3.4028235E38),this.xyzMax=JU.P3.new3(-3.4028235E38,-3.4028235E38,-3.4028235E38));JU.BoxInfo.addPoint(a,this.xyzMin, +this.xyzMax,b)},"JU.T3,~N");e(d,"getValueAtPoint",function(){return 0},"JU.T3,~B");e(d,"initializeMapping",function(){});e(d,"finalizeMapping",function(){});e(d,"getSurfaceAtomIndex",function(){return-1});d.colorPhases=D(-1,"_orb x y z xy yz xz x2-y2 z2".split(" "))});E("J.jvxl.calc");T(["JU.TriangleData","JU.BS","$.P3","$.SB","$.V3"],"J.jvxl.calc.MarchingCubes",["J.jvxl.data.JvxlCoder"],function(){var d=G(function(){this.volumeData=this.surfaceReader=null;this.contourType=0;this.isContoured=!1;this.cutoff= +0;this.isXLowToHigh=this.isSquared=this.isCutoffAbsolute=!1;this.yzCount=this.nZ=this.nY=this.cubeCountZ=this.cubeCountY=this.cubeCountX=0;this.colorDensity=!1;this.integrateSquared=!0;this.edgeData=this.bsExcludedPlanes=this.bsExcludedTriangles=this.bsExcludedVertices=this.bsVoxels=null;this.excludePartialCubes=!0;this.isDensityRange=!1;this.mode=0;this.vertexValues=null;this.edgeCount=0;this.mappingPlane=this.yzPlanes=this.isoPointIndexPlanes=this.edgePointIndexes=this.edgeVectors=this.voxelVertexVectors= +null;this.$isInside=this.allInside=!1;this.voxelData=this.offset=null;this.nTriangles=0;this.linearOffsets=this.fReturn=this.edgeVertexPlanes=this.edgeVertexPointers=this.pointA=this.pt0=this.bsValues=null;U(this,arguments)},J.jvxl.calc,"MarchingCubes",JU.TriangleData);da(d,function(){this.edgeData=new JU.SB;this.vertexValues=x(8,0);this.voxelVertexVectors=Array(8);this.edgeVectors=Array(12);for(var a=12;0<=--a;)this.edgeVectors[a]=new JU.V3;this.edgePointIndexes=t(12,0);this.bsValues=new JU.BS;this.pt0= +new JU.P3;this.pointA=new JU.P3;this.fReturn=x(1,0);this.linearOffsets=t(8,0)});Z(d,function(){ja(this,J.jvxl.calc.MarchingCubes,[])});Z(d,function(a,b,c,f){ja(this,J.jvxl.calc.MarchingCubes,[]);this.excludePartialCubes=!0;this.surfaceReader=a;this.bsVoxels=f;a=c.bsExcluded;this.bsExcludedVertices=null==a[0]?a[0]=new JU.BS:a[0];this.bsExcludedPlanes=null==a[2]?a[2]=new JU.BS:a[2];this.bsExcludedTriangles=null==a[3]?a[3]=new JU.BS:a[3];this.mode=null!=b.getVoxelData()||null!=b.mappingPlane?1:null!= +f?2:3;this.setParameters(b,c)},"J.jvxl.api.VertexDataServer,J.jvxl.data.VolumeData,J.jvxl.readers.Parameters,JU.BS");e(d,"setParameters",function(a,b){this.volumeData=a;this.colorDensity=b.colorDensity;this.isContoured=null==b.thePlane&&b.isContoured&&!this.colorDensity;this.cutoff=b.cutoff;this.isCutoffAbsolute=b.isCutoffAbsolute;this.isDensityRange=null!=b.cutoffRange;this.contourType=b.contourType;this.isSquared=b.isSquared;this.isXLowToHigh=b.isXLowToHigh;this.cubeCountX=a.voxelCounts[0]-1;this.cubeCountY= +a.voxelCounts[1]-1;this.cubeCountZ=a.voxelCounts[2]-1;a.getYzCount();null!=b.mapLattice&&(this.cubeCountX*=Math.abs(b.mapLattice.x),this.cubeCountY*=Math.abs(b.mapLattice.y),this.cubeCountZ*=Math.abs(b.mapLattice.z));this.nY=this.cubeCountY+1;this.nZ=this.cubeCountZ+1;this.yzCount=this.nY*this.nZ;null==this.bsVoxels&&(this.bsVoxels=new JU.BS);this.edgeVertexPointers=this.isXLowToHigh?J.jvxl.calc.MarchingCubes.edgeVertexPointersLowToHigh:J.jvxl.calc.MarchingCubes.edgeVertexPointersHighToLow;this.edgeVertexPlanes= +this.isXLowToHigh?J.jvxl.calc.MarchingCubes.edgeVertexPlanesLowToHigh:J.jvxl.calc.MarchingCubes.edgeVertexPlanesHighToLow;this.isoPointIndexPlanes=t(2,this.yzCount,3,0);this.yzPlanes=3==this.mode?x(2,this.yzCount,0):null;this.setLinearOffsets();this.calcVoxelVertexVectors()},"J.jvxl.data.VolumeData,J.jvxl.readers.Parameters");e(d,"calcVoxelVertexVectors",function(){for(var a=8;0<=--a;)this.volumeData.transform(J.jvxl.calc.MarchingCubes.cubeVertexVectors[a],this.voxelVertexVectors[a]=new JU.V3);for(a= +12;0<=--a;)this.edgeVectors[a].sub2(this.voxelVertexVectors[JU.TriangleData.edgeVertexes[a+a+1]],this.voxelVertexVectors[JU.TriangleData.edgeVertexes[a+a]])});e(d,"resetIndexPlane",function(a){for(var b=0;bc;c++)a[b][c]=-2147483648;return a},"~A");e(d,"getEdgeData",function(){if(0>this.cubeCountX||0>this.cubeCountY||0>this.cubeCountZ)return"";this.mappingPlane=this.volumeData.mappingPlane;this.edgeCount=0;var a,b,c,f,d,e;this.isXLowToHigh?(a=0,this.colorDensity?(b= +this.cubeCountX+1,e=this.yzCount-1):(b=this.cubeCountX,e=this.yzCount-1-this.nZ-1),c=1,f=this.yzCount):(this.colorDensity?(a=this.cubeCountX,e=(this.cubeCountX+1)*this.yzCount-1):(a=this.cubeCountX-1,e=this.cubeCountX*this.yzCount-1-this.nZ-1),c=b=-1,f=-this.yzCount);d=e;this.resetIndexPlane(this.isoPointIndexPlanes[1]);this.voxelData=null;var h=this.cubeCountY+(this.colorDensity?1:0),g=this.cubeCountZ+(this.colorDensity?1:0);switch(this.mode){case 3:this.getPlane(a,!1);break;case 1:this.voxelData= +this.volumeData.getVoxelData()}this.allInside=this.colorDensity&&(0==this.cutoff||2==this.mode&&0>this.bsVoxels.nextSetBit(0));for(var j=this.colorDensity&&0==this.cutoff,n=0;a!=b;a+=c,e+=f,d=e)if(3==this.mode&&a+c<=b&&this.getPlane(a+c,!0),!this.bsExcludedPlanes.get(a)||!this.bsExcludedPlanes.get(a+c))if(this.colorDensity)for(var k=h;0<=--k;)for(var q=g;0<=--q;d--)n=this.getValue(a,k,q,d,0),(j||this.$isInside)&&this.addVertex(a,k,q,d,n);else{k=this.isoPointIndexPlanes[0];this.isoPointIndexPlanes[0]= +this.isoPointIndexPlanes[1];this.isoPointIndexPlanes[1]=this.resetIndexPlane(k);for(var r=!0,k=h;0<=--k;d--)for(q=g;0<=--q;d--){for(var l=0,u=8;0<=--u;)n=this.getValue(a,k,q,d,u),this.$isInside&&(l|=JU.TriangleData.Pwr2[u]);r&&!Float.isNaN(n)&&(r=!1);0!=l&&255!=l&&this.processOneCubical(l,a,k,q,d)&&(!this.isContoured&&!this.colorDensity)&&this.processTriangles(l)}r&&this.bsExcludedPlanes.set(a)}return this.edgeData.toString()});e(d,"getValue",function(a,b,c,f,d){this.offset=JU.TriangleData.cubeVertexOffsets[d]; +f+=this.linearOffsets[d];switch(this.mode){case 3:a=this.vertexValues[d]=this.getValueArray(a+this.offset.x,b+this.offset.y,c+this.offset.z,f,this.yzPlanes[J.jvxl.calc.MarchingCubes.yzPlanePts[d]]);this.$isInside=this.allInside||this.bsVoxels.get(f);break;case 2:this.$isInside=this.allInside||this.bsVoxels.get(f);a=this.vertexValues[d]=(this.isDensityRange?!this.$isInside:this.bsExcludedVertices.get(f))?NaN:this.$isInside?1:0;break;default:case 1:null==this.mappingPlane?a=this.vertexValues[d]=this.voxelData[a+ +this.offset.x][b+this.offset.y][c+this.offset.z]:(this.volumeData.voxelPtToXYZ(a+this.offset.x,b+this.offset.y,c+this.offset.z,this.pt0),a=this.vertexValues[d]=this.volumeData.distanceToMappingPlane(this.pt0)),this.isSquared&&(this.vertexValues[d]*=this.vertexValues[d]),(this.$isInside=this.allInside?!0:J.jvxl.calc.MarchingCubes.isInside(this.vertexValues[d],this.cutoff,this.isCutoffAbsolute))&&this.bsVoxels.set(f)}return a},"~N,~N,~N,~N,~N");e(d,"getPlane",function(a,b){if(!(0>a||a>this.cubeCountX))if(this.surfaceReader.getPlane(a), +b){var c=this.yzPlanes[0];this.yzPlanes[0]=this.yzPlanes[1];this.yzPlanes[1]=c}},"~N,~B");e(d,"processTriangles",function(a){a=JU.TriangleData.triangleTable2[a];for(var b=a.length;0<=(b-=4);)this.addTriangle(a[b],a[b+1],a[b+2],a[b+3])},"~N");e(d,"addVertex",function(a,b,c,f,d){this.volumeData.voxelPtToXYZ(a,b,c,this.pt0);0>this.surfaceReader.addVertexCopy(this.pt0,d,-4,!0)&&this.bsExcludedVertices.set(f)},"~N,~N,~N,~N,~N");e(d,"addTriangle",function(a,b,c,f){!this.bsExcludedTriangles.get(this.nTriangles)&& +0>this.surfaceReader.addTriangleCheck(this.edgePointIndexes[a],this.edgePointIndexes[b],this.edgePointIndexes[c],f,0,this.isCutoffAbsolute,0)&&this.bsExcludedTriangles.set(this.nTriangles);this.nTriangles++},"~N,~N,~N,~N");e(d,"getValueArray",function(a,b,c,f,d){var e=f%this.yzCount;this.bsValues.set(f);a=this.surfaceReader.getValue(a,b,c,e);this.isSquared&&(a*=a);d[e]=a;J.jvxl.calc.MarchingCubes.isInside(a,this.cutoff,this.isCutoffAbsolute)&&this.bsVoxels.set(f);return a},"~N,~N,~N,~N,~A");d.isInside= +e(d,"isInside",function(a,b,c){return 0=b||0>=b&&a<=b},"~N,~N,~B");e(d,"processOneCubical",function(a,b,c,f,d){a=J.jvxl.calc.MarchingCubes.insideMaskTable[a];for(var e=!1,h=12;0<=--h;)if(0!=(a&JU.TriangleData.Pwr2[h])){var g=this.edgeVertexPlanes[h],j=(d+this.linearOffsets[this.edgeVertexPointers[h]])%this.yzCount,n=J.jvxl.calc.MarchingCubes.edgeTypeTable[h],k=this.edgePointIndexes[h]=this.isoPointIndexPlanes[g][j][n];if(-2147483648!=k)-1==k&&(e=this.excludePartialCubes);else{var k= +JU.TriangleData.edgeVertexes[h<<1],q=JU.TriangleData.edgeVertexes[(h<<1)+1],r=this.vertexValues[k],l=this.vertexValues[q];this.calcVertexPoint(b,c,f,k,this.pointA);this.edgeCount++;g=this.edgePointIndexes[h]=this.isoPointIndexPlanes[g][j][n]=this.surfaceReader.getSurfacePointIndexAndFraction(this.cutoff,this.isCutoffAbsolute,b,c,f,JU.TriangleData.cubeVertexOffsets[k],k,q,r,l,this.pointA,this.edgeVectors[h],n==this.contourType,this.fReturn);this.addEdgeData(0>g?NaN:this.fReturn[0]);if(Float.isNaN(this.fReturn[0])|| +0>g)e=this.excludePartialCubes}}return!e},"~N,~N,~N,~N,~N");e(d,"addEdgeData",function(a){a=J.jvxl.data.JvxlCoder.jvxlFractionAsCharacter(a);this.edgeData.appendC(a)},"~N");e(d,"calcVertexPoint",function(a,b,c,f,d){this.volumeData.voxelPtToXYZ(a,b,c,this.pt0);d.add2(this.pt0,this.voxelVertexVectors[f])},"~N,~N,~N,~N,JU.P3");e(d,"setLinearOffsets",function(){this.linearOffsets[0]=0;this.linearOffsets[1]=this.yzCount;this.linearOffsets[2]=this.yzCount+1;this.linearOffsets[3]=1;this.linearOffsets[4]= +this.nZ;this.linearOffsets[5]=this.yzCount+this.nZ;this.linearOffsets[6]=this.yzCount+this.nZ+1;this.linearOffsets[7]=this.nZ+1});e(d,"getLinearOffset",function(a,b,c,f){return a*this.yzCount+b*this.nZ+c+this.linearOffsets[f]},"~N,~N,~N,~N");d.yzPlanePts=t(-1,[0,1,1,0,0,1,1,0]);d.edgeVertexPointersLowToHigh=t(-1,[1,1,2,0,5,5,6,4,0,1,2,3]);d.edgeVertexPointersHighToLow=t(-1,[0,1,3,0,4,5,7,4,0,1,2,3]);d.edgeVertexPlanesLowToHigh=t(-1,[1,1,1,0,1,1,1,0,0,1,1,0]);d.edgeVertexPlanesHighToLow=t(-1,[1,0, +1,1,1,0,1,1,1,0,0,1]);d.cubeVertexVectors=D(-1,[JU.V3.new3(0,0,0),JU.V3.new3(1,0,0),JU.V3.new3(1,0,1),JU.V3.new3(0,0,1),JU.V3.new3(0,1,0),JU.V3.new3(1,1,0),JU.V3.new3(1,1,1),JU.V3.new3(0,1,1)]);d.edgeTypeTable=t(-1,[0,2,0,2,0,2,0,2,1,1,1,1]);d.insideMaskTable=ea(-1,[0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419, +170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370, +1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0])});E("J.jvxl.calc");T(["JU.P3", +"java.util.Hashtable"],"J.jvxl.calc.MarchingSquares",["JU.AU","JU.Logger"],function(){var d=G(function(){this.volumeData=this.surfaceReader=null;this.valueMax=this.valueMin=this.thisContour=this.contourType=this.nContourSegments=0;this.pointB=this.pointA=null;this.contourFromZero=!0;this.contoursDiscrete=null;this.contourVertexCount=0;this.contourVertexes=null;qa("J.jvxl.calc.MarchingSquares.ContourVertex")||J.jvxl.calc.MarchingSquares.$MarchingSquares$ContourVertex$();this.contourPlaneMaximumValue= +this.contourPlaneMinimumValue=0;this.ptTemp=this.contourValuesUsed=null;this.triangleCount=0;this.htPts=this.triangles=null;qa("J.jvxl.calc.MarchingSquares.Triangle")||J.jvxl.calc.MarchingSquares.$MarchingSquares$Triangle$();U(this,arguments)},J.jvxl.calc,"MarchingSquares",null);da(d,function(){this.pointA=new JU.P3;this.pointB=new JU.P3;this.contourVertexes=Array(1E3);this.ptTemp=new JU.P3;this.triangles=Array(1E3);this.htPts=new java.util.Hashtable});Z(d,function(a,b,c,f,d,e,h){this.surfaceReader= +a;this.volumeData=b;this.thisContour=e;this.contoursDiscrete=f;this.contourFromZero=h;null==f?(this.nContourSegments=(0==d?9:d)+0,100this.contourPlaneMaximumValue&&(this.contourPlaneMaximumValue=f)}},"~B");e(d,"createContours",function(a,b,c){b-=a;this.contourValuesUsed=x(this.nContourSegments,0);for(var f=this.triangleCount;0<=--f;)this.triangles[f].check=0;for(var d= +-3.4028235E38,f=0;fd?-c:c);this.contourValuesUsed[f]=d;JU.Logger.info("#contour "+(f+1)+" "+d+" "+this.triangleCount);this.htPts.clear();for(var e=this.triangleCount;0<=--e;)this.triangles[e].isValid&&this.checkContour(this.triangles[e], +f,d)}this.valueMin=this.contourValuesUsed[0];this.valueMax=0==this.contourValuesUsed.length?this.valueMin:this.contourValuesUsed[this.contourValuesUsed.length-1];return!0},"~N,~N,~N");e(d,"intercept",function(a,b,c){var f=a.pts[b];a=a.pts[(b+1)%3];if(2147483647==f||2147483647==a)return-1;b=f=g&&(this.pointA.setT(this.contourVertexes[f]), +this.pointB.setT(this.contourVertexes[a]),c=this.calcContourPoint(c,d,e,this.ptTemp),!Float.isNaN(c))){h=this.addContourVertex(this.ptTemp,c);if(0>h)return-1;this.contourVertexes[h].setValue(c)}}this.htPts.put(b,Integer.$valueOf(h));return h},"J.jvxl.calc.MarchingSquares.Triangle,~N,~N");e(d,"checkContour",function(a,b,c){if(!(0this.firstRealVertex&&(this.firstRealVertex=a);break;case -2:this.hasGridPoints=!0;break;case -3:this.vertexIncrement=3;break;default:0>this.firstRealVertex&&(this.firstRealVertex=a),f&&(null==this.assocGridPointMap&&(this.assocGridPointMap=new java.util.Hashtable),this.assocGridPointMap.put(Integer.$valueOf(a),Integer.$valueOf(c+this.mergeAssociatedNormalCount)))}return a}, +"JU.T3,~N,~N,~B,~B");l(d,"setTranslucent",function(a,b){this.colix=JU.C.getColixTranslucent3(this.colix,a,b);if(null!=this.vcs)for(var c=this.vc;0<=--c;)this.vcs[c]=JU.C.getColixTranslucent3(this.vcs[c],a,b)},"~B,~N");e(d,"setMerged",function(a){this.mergePolygonCount0=(this.isMerged=a)?this.pc:0;this.mergeVertexCount0=a?this.vc:0;a&&(this.mergeAssociatedNormalCount+=this.jvxlData.nPointsX*this.jvxlData.nPointsY*this.jvxlData.nPointsZ,this.assocGridPointNormals=null)},"~B");l(d,"sumVertexNormals", +function(a,b){J.shape.Mesh.sumVertexNormals2(this,a,b);if(null!=this.assocGridPointMap&&0a&&(a=-1-a);var b=this.jvxlData.vContours;if(null!=b){for(var c=0;c=a[w]&&hh)&&d.get(h)){this.jvxlData.vertexColors[g]=a.getColorArgbOrGray(this.vcs[g]=JU.C.copyColixTranslucency(this.colix,e[h].colixAtom));var w=null==b?0:b[c[h]];0==w&&(w=e[h].colixAtom);this.vcs[g]=JU.C.copyColixTranslucency(this.colix,w)}}},"JV.Viewer,~A,~A,JU.BS");e(d,"colorVertices",function(a,b,c){if(null!=this.vertexSource){a=JU.C.copyColixTranslucency(this.colix,a);var d=c?new JU.BS: +b;this.checkAllocColixes();if(c)for(var e=0;ethis.vvs[a]?this.jvxlData.minColorIndex:this.jvxlData.maxColorIndex);else{this.jvxlData.isColorReversed=b.isReversed;3.4028235E38!=e&&(this.jvxlData.valueMappedToRed=d,this.jvxlData.valueMappedToBlue=e);b.setRange(this.jvxlData.valueMappedToRed,this.jvxlData.valueMappedToBlue, +this.jvxlData.isColorReversed);d=JU.C.isColixTranslucent(this.colix);b.isTranslucent&&(d||(this.colix=JU.C.getColixTranslucent3(this.colix,!0,0.5)),d=!1);this.vcs=JU.AU.ensureLengthShort(this.vcs,this.vc);for(a=this.vc;--a>=this.mergeVertexCount0;)this.vcs[a]=b.getColorIndex(this.vvs[a]);this.setTranslucent(d,c);this.colorEncoder=b;c=this.getContours();if(null!=c)for(a=c.length;0<=--a;)d=c[a].get(2).floatValue(),e=c[a].get(3),e[0]=b.getColorIndex(d),c[a].get(4)[0]=JU.C.getArgb(e[0]);if(null!=this.contourValues){this.contourColixes= +ea(this.contourValues.length,0);for(a=0;ah;h++)e[h]+=c;return b},"JU.MeshSurface,~N,~N,~A");l(d,"getUnitCell",function(){return null!=this.unitCell||null!=(this.unitCell=this.vwr.ms.am[this.modelIndex].biosymmetry)||null!=(this.unitCell=this.vwr.ms.getUnitCell(this.modelIndex))|| +null!=this.oabc&&null!=(this.unitCell=this.vwr.getSymTemp().getUnitCell(this.oabc,!0,null))?this.unitCell:null});e(d,"fixLattice",function(){if(null!=this.getUnitCell()){var a=new JU.P3i,b=JU.P3i.new3(A(this.lattice.x),A(this.lattice.y),A(this.lattice.z));this.jvxlData.fixedLattice=this.lattice;this.lattice=null;JU.SimpleUnitCell.setMinMaxLatticeParameters(A(this.unitCell.getUnitCellInfoType(6)),a,b,0);var c=(b.x-a.x)*(b.y-a.y)*(b.z-a.z),d=new JU.P3,e=this.vc,g=c*this.vc;this.vs=JU.AU.arrayCopyPt(this.vs, +g);this.vvs=null==this.vvs?null:JU.AU.ensureLengthA(this.vvs,g);var h=this.pc;this.pis=JU.AU.arrayCopyII(this.pis,c*this.pc);c=0;this.normixes=JU.AU.arrayCopyShort(this.normixes,g);for(g=a.x;gthis.jvxlData.boundingBox[1].distanceSquared(this.jvxlData.boundingBox[0])?1E-10:1E-8});l(d,"getVisibleVertexBitSet",function(){var a=this.getVisibleVBS();if(null!=this.jvxlData.thisSet)for(var b=0;bb&&(b=d)}return x(-1,[a,b])});e(d,"getDataRange",function(){return null!=this.jvxlData.jvxlPlane&&null==this.colorEncoder?null:x(-1,[this.jvxlData.mappedDataMin,this.jvxlData.mappedDataMax,this.jvxlData.isColorReversed?this.jvxlData.valueMappedToBlue:this.jvxlData.valueMappedToRed,this.jvxlData.isColorReversed?this.jvxlData.valueMappedToRed:this.jvxlData.valueMappedToBlue])});e(d,"getInfo",function(a){var b=Ia(this,J.shapesurface.IsosurfaceMesh,"getInfo",[a]); +if(a){a=new JU.BS;var c=this.getValidVertices(a);null!=c&&(b.put("allVertices",b.get("vertices")),b.put("vertices",c),c=b.get("vertexValues"),null!=c&&(a=this.getValidValues(a),b.put("allValues",c),b.put("vertexValues",a)))}return b},"~B");e(d,"getValidValues",function(a){null==a&&this.getInvalidBS(a=new JU.BS);for(var b=this.vc-a.cardinality(),b=x(b,0),c=0,d=a.nextClearBit(0);0<=d&&dthis.voxelCounts[0]||1>this.voxelCounts[1]||1>this.voxelCounts[2])return!1;this.showGridInfo();return!0});e(d,"showGridInfo",function(){JU.Logger.info("grid origin = "+this.params.origin);JU.Logger.info("grid steps = "+this.params.steps);JU.Logger.info("grid points = "+this.params.points);this.ptTemp.x=this.params.steps.x*this.params.points.x;this.ptTemp.y=this.params.steps.y*this.params.points.y;this.ptTemp.z= +this.params.steps.z*this.params.points.z;JU.Logger.info("grid lengths = "+this.ptTemp);this.ptTemp.add(this.params.origin);JU.Logger.info("grid max xyz = "+this.ptTemp)});e(d,"setVoxelRange",function(a,b,c,d,e,g){-1E-4<=b-c&&(b=-10,c=10);var h=c-b,w=this.params.resolution;3.4028235E38!=w&&(d=w,g=0);c=M(Math.floor(h*d))+1;c>e&&(0<(this.dataType&256)?3.4028235E38==w?(this.isQuiet||JU.Logger.info("Maximum number of voxels for index="+a+" exceeded ("+c+") -- set to "+e),c=e):this.isQuiet||JU.Logger.info("Warning -- high number of grid points: "+ +c):3.4028235E38==w&&(c=e));1==c&&(c=2);d=(c-1)/h;da;++a)JU.Logger.info("voxel grid vector:"+this.volumetricVectors[a]);JU.Logger.info("Read "+ +this.nPointsX+" x "+this.nPointsY+" x "+this.nPointsZ+" data points")});l(d,"closeReader",function(){})});E("J.jvxl.readers");T(["J.jvxl.readers.VolumeDataReader","JU.BS","$.P3","$.P3i","J.atomdata.AtomData"],"J.jvxl.readers.AtomDataReader","java.util.Date JU.AU $.SB $.V3 J.atomdata.RadiusData J.c.VDW J.jvxl.data.JvxlCoder JU.BSUtil $.Logger".split(" "),function(){var d=G(function(){this.maxDistance=0;this.fileDotModel=this.fileName=this.contactPair=null;this.modelIndex=0;this.myIndex=this.atomIndex= +this.atomNo=this.atomProp=this.atomRadius=this.atomXyzTruncated=this.atomData=null;this.firstNearbyAtom=this.nearbyAtomCount=this.myAtomCount=this.ac=0;this.bsNearby=this.bsMyIgnored=this.bsMySelected=null;this.doUseIterator=this.havePlane=this.doAddHydrogens=!1;this.theProperty=0;this.haveOneProperty=!1;this.sr=this.minPtsPerAng=0;this.rs2=this.rs=null;this.maxRS=0;this.thisAtomSet=this.thisPlane=null;this.vl2=this.vl1=this.vl0=this.margin=this.thisX=0;this.ptV=this.pt1=this.pt0=this.ptZ0=this.ptY0= +this.voxelSource=this.noFaceSpheres=this.validSpheres=this.bsSurfaceVoxels=null;U(this,arguments)},J.jvxl.readers,"AtomDataReader",J.jvxl.readers.VolumeDataReader);da(d,function(){this.atomData=new J.atomdata.AtomData;this.bsMySelected=new JU.BS;this.bsMyIgnored=new JU.BS;this.ptY0=new JU.P3;this.ptZ0=new JU.P3;this.pt0=new JU.P3i;this.pt1=new JU.P3i;this.ptV=new JU.P3});Z(d,function(){ja(this,J.jvxl.readers.AtomDataReader,[])});e(d,"initADR",function(a){this.initVDR(a);this.precalculateVoxelData= +!0},"J.jvxl.readers.SurfaceGenerator");l(d,"setup",function(){this.setup2()},"~B");e(d,"setup2",function(){this.contactPair=this.params.contactPair;this.doAddHydrogens=null!=this.sg.atomDataServer&&this.params.addHydrogens;this.modelIndex=this.params.modelIndex;null!=this.params.bsIgnore&&(this.bsMyIgnored=this.params.bsIgnore);if(null!=this.params.volumeData){this.setVolumeDataV(this.params.volumeData);this.setBBox(this.volumeData.volumetricOrigin,0);this.ptV.setT(this.volumeData.volumetricOrigin); +for(var a=0;3>a;a++)this.ptV.scaleAdd2(this.volumeData.voxelCounts[a]-1,this.volumeData.volumetricVectors[a],this.ptV);this.setBBox(this.ptV,0)}(this.havePlane=null!=this.params.thePlane)&&this.volumeData.setPlaneParameters(this.params.thePlane)});e(d,"markPlaneVoxels",function(a,b){for(var c=0,d=this.thisX*this.yzCount,e=d+this.yzCount;d +2*(this.atomData.atomRadius[d]=this.getWorkingRadius(d,w)))continue;this.bsMySelected.set(d);e=!this.havePlane}if(c&&(g||e))this.atomData.atomRadius[d]=this.getWorkingRadius(d,w)}e=c&&b?this.getWorkingRadius(-1,w):0;this.myAtomCount=JU.BSUtil.cardinalityOf(this.bsMySelected);w=JU.BSUtil.copy(this.bsMySelected);h=0;this.atomProp=null;this.theProperty=3.4028235E38;this.haveOneProperty=!1;a=this.params.theProperty;if(02*b||(null!=this.params.theProperty&&(b+=this.maxDistance),g=this.atomData.xyz[d],g.x+b>this.xyzMin.x&&(g.x-bthis.xyzMin.y&&g.y-bthis.xyzMin.z&&g.z-bthis.maxRS&&(this.maxRS=b);this.rs2[a]=this.rs[a]*this.rs[a]}}}); +e(d,"addAtomProp",function(a,b){this.atomProp[a]=b;!Float.isNaN(this.theProperty)&&b!=this.theProperty&&(this.theProperty=3.4028235E38==this.theProperty?b:NaN)},"~N,~N");e(d,"getWorkingRadius",function(a,b){var c=0>a?this.atomData.hAtomRadius:this.atomData.atomRadius[a];return Float.isNaN(b)?Math.max(c,0.1):c+b},"~N,~N");e(d,"setHeader",function(a,b){this.jvxlFileHeaderBuffer=new JU.SB;null!=this.atomData.programInfo&&this.jvxlFileHeaderBuffer.append("#created by ").append(this.atomData.programInfo).append(" on ").append(""+ +new java.util.Date).append("\n");this.jvxlFileHeaderBuffer.append(a).append("\n").append(b).append("\n")},"~S,~S");e(d,"setRanges",function(a,b,c){null!=this.xyzMin&&(this.ptsPerAngstrom=a,this.maxGrid=b,this.minPtsPerAng=c,this.setVolumeData(),J.jvxl.data.JvxlCoder.jvxlCreateHeader(this.volumeData,this.jvxlFileHeaderBuffer))},"~N,~N,~N");l(d,"setVolumeData",function(){this.setVolumeDataADR()});e(d,"setVolumeDataADR",function(){this.setVolumeDataParams()||(this.setVoxelRange(0,this.xyzMin.x,this.xyzMax.x, +this.ptsPerAngstrom,this.maxGrid,this.minPtsPerAng),this.setVoxelRange(1,this.xyzMin.y,this.xyzMax.y,this.ptsPerAngstrom,this.maxGrid,this.minPtsPerAng),this.setVoxelRange(2,this.xyzMin.z,this.xyzMax.z,this.ptsPerAngstrom,this.maxGrid,this.minPtsPerAng))});e(d,"setVertexSource",function(){null!=this.meshDataServer&&this.meshDataServer.fillMeshData(this.meshData,1,null);if(null!=this.params.vertexSource){this.params.vertexSource=JU.AU.arrayCopyI(this.params.vertexSource,this.meshData.vc);for(var a= +0;a=this.firstNearbyAtom,n=this.atomXyzTruncated[h],k=this.atomRadius[h]; +if(!(c&&n.distance(this.point)>b+k+0.5)){var q=k+a;this.setGridLimitsForAtom(n,q,this.pt0,this.pt1);this.isProgressive&&(this.pt0.x=this.thisX,this.pt1.x=this.thisX+1);this.volumeData.voxelPtToXYZ(this.pt0.x,this.pt0.y,this.pt0.z,this.ptV);for(var r=this.pt0.x;rb)t=NaN;this.setVoxel(r,l,u,x,t);Float.isNaN(t)||(null!=this.voxelSource&&(this.voxelSource[x]=h+1),0>t&&w&&this.bsSurfaceVoxels.set(x))}}}}}}},"~N,~N");e(d,"setVoxel",function(a,b,c,d,e){this.isProgressive?this.thisPlane[d%this.yzCount]=e:this.voxelData[a][b][c]=e},"~N,~N,~N,~N,~N")});E("J.jvxl.readers");T(["JU.P3","J.jvxl.readers.AtomDataReader","JU.P4","$.V3"],"J.jvxl.readers.IsoSolventReader", +"java.util.Hashtable JU.BS $.Lst $.Measure J.jvxl.data.MeshData JU.BSUtil $.Logger $.MeshSurface $.TempArray".split(" "),function(){var d=G(function(){this.envelopeRadius=this.cavityRadius=0;this.dots=null;this.isPocket=this.isCavity=this.doCalculateTroughs=!1;this.bsAtomMinMax=this.p=this.vTemp2=this.ptTemp2=this.plane=this.vTemp=this.ptS2=this.ptS1=this.vFaces=this.vEdges=this.htEdges=this.bsLocale=this.bsSurfaceDone=this.bsSurfacePoints=this.iter=null;this.isSurfacePoint=!1;this.nTest=this.iAtomSurface= +0;qa("J.jvxl.readers.IsoSolventReader.Edge")||J.jvxl.readers.IsoSolventReader.$IsoSolventReader$Edge$();qa("J.jvxl.readers.IsoSolventReader.Face")||J.jvxl.readers.IsoSolventReader.$IsoSolventReader$Face$();this.ecosASB2=this.dAB2=this.dAB=this.rBS2=this.rAS2=this.rBS=this.rAS=0;U(this,arguments)},J.jvxl.readers,"IsoSolventReader",J.jvxl.readers.AtomDataReader);da(d,function(){this.ptS1=new JU.P3;this.ptS2=new JU.P3;this.vTemp=new JU.V3;this.plane=new JU.P4;this.ptTemp2=new JU.P3;this.vTemp2=new JU.V3; +this.p=new JU.P3});Z(d,function(){ja(this,J.jvxl.readers.IsoSolventReader,[])});l(d,"init",function(a){this.initADR(a)},"J.jvxl.readers.SurfaceGenerator");l(d,"readVolumeParameters",function(a){this.setup(a);this.initializeVolumetricData();this.volumeData.setUnitVectors();this.vl0=this.volumeData.volumetricVectorLengths[0];this.vl1=this.volumeData.volumetricVectorLengths[1];this.vl2=this.volumeData.volumetricVectorLengths[2];this.isProgressive&&(this.volumeData.getYzCount(),this.bsAtomMinMax=Array(this.nPointsX), +this.getAtomMinMax(null,this.bsAtomMinMax),this.voxelSource=t(this.volumeData.nPoints,0));return!0},"~B");l(d,"setup",function(a){this.setup2();if(null==this.contactPair){this.cavityRadius=this.params.cavityRadius;this.envelopeRadius=this.params.envelopeRadius;this.sr=this.params.solventRadius;this.point=this.params.point;this.isCavity=this.params.isCavity&&null!=this.meshDataServer;this.isPocket=null!=this.params.pocket&&null!=this.meshDataServer;this.doUseIterator=this.doCalculateTroughs=!a&&null!= +this.sg.atomDataServer&&!this.isCavity&&0this.voxelSource[n]?this.sr:this.atomRadius[this.voxelSource[n]-1],c,d,g.length());r.scaleAdd2(a,g,e);return c+a*(d-c)},"~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3");l(d,"addVertexCopy",function(a,b,c,d){a=this.addVC(a,b,c,d);if(0>a)return a; +this.isSurfacePoint&&this.bsSurfacePoints.set(a);null!=this.params.vertexSource&&(this.params.vertexSource[a]=this.iAtomSurface);return a},"JU.T3,~N,~N,~B");l(d,"selectPocket",function(a){null!=this.meshDataServer&&this.meshDataServer.fillMeshData(this.meshData,1,null);for(var b=this.meshData.vs,c=this.meshData.vc,d=this.meshData.vvs,e=this.dots.length,g=0;gg&&(g=Math.abs(j),h=0>j)}g=h?-1:1;for(w=0;we)&&null!=this.params.vertexSource){j= +new JU.BS;null==c&&(c=Array(b.length));for(var n=h.nextSetBit(0);0<=n;n=h.nextSetBit(n+1)){var k=this.params.vertexSource[n];if(!(0>k)){if(a.get(k)){this.meshData.invalidateSurfaceSet(w);break}j.set(k)}}a.or(j)}else this.meshData.invalidateSurfaceSet(w);this.updateSurfaceData();null!=this.meshDataServer&&(this.meshDataServer.fillMeshData(this.meshData,3,null),this.meshData=new J.jvxl.data.MeshData)}null!=this.params.thePlane&&null==this.params.slabInfo&&this.params.addSlabInfo(JU.TempArray.getSlabWithinRange(-100, +0))});e(d,"generateSolventCavity",function(){for(var a=JU.BS.newN(this.nPointsX*this.nPointsY*this.nPointsZ),b=0,c=this.dots.length,d=0,e,g=this.envelopeRadius,h=0;h(e=this.voxelData[h][w][j])&&e>=this.cavityRadius){this.volumeData.voxelPtToXYZ(h,w,j,this.ptV);for(var n=0;n=this.firstNearbyAtom&&d>=this.firstNearbyAtom)){var e=this.rs[d],g=b.distance(this.atomXyzTruncated[d]);g>=c+e||(e=pa(J.jvxl.readers.IsoSolventReader.Edge,this,null,this,a,d,g),this.vEdges.addLast(e),this.bsLocale[a].set(d),this.bsLocale[d].set(a),this.htEdges.put(e.toString(),e))}}}});e(d,"findEdge",function(a, +b){return this.htEdges.get(au&&u>1.8*-this.volumeData.maxGrid&&u>x==b.get(A):0x||3.4028235E38==x||u>x==b.get(A))))b.set(A),this.setVoxel(q,l,t,A,u),null!=this.voxelSource&&(this.voxelSource[A]=-1-h.ia),0this.thisPlane[a]||(this.thisPlane[a]= +0.001);else for(a=0;athis.voxelData[a][b][c]||(this.voxelData[a][b][c]=0.001);else this.unsetVoxelData2()});e(d,"getSolventPoints",function(a,b,c,d){var e=this.rs[b],g=a.v;a=(a.d2+this.rs2[b]-this.rs2[c])/(2*a.d*e);c=Math.acos(a);this.p.scaleAdd2(a*e,g,this.atomXyzTruncated[b]);JU.Measure.getPlaneThroughPoint(this.p,g,this.plane);b=Math.sin(c)*e;a=this.atomXyzTruncated[d];c=this.rs[d];e=JU.Measure.distanceToPlane(this.plane, +a);if(Math.abs(e)>=0.9*c)return!1;this.ptTemp.scaleAdd2(-e,g,a);a=this.p.distance(this.ptTemp);d=(b*b+a*a-(this.rs2[d]-e*e))/(2*b*a);if(0.99<=Math.abs(d))return!1;e=this.vTemp2;e.sub2(this.ptTemp,this.p);e.normalize();this.ptTemp.scaleAdd2(b*d,e,this.p);e.cross(g,e);e.normalize();e.scale(Math.sqrt(1-d*d)*b);this.ptS1.add2(this.ptTemp,e);this.ptS2.sub2(this.ptTemp,e);return!0},"J.jvxl.readers.IsoSolventReader.Edge,~N,~N,~N");e(d,"checkSpecialVoxel",function(a,b,c){var d=a.distance(c),e=a.distanceSquared(c), +g=this.rAS/d;if(1=this.rBS2?NaN:this.solventDistance(this.rAS,this.rAS2,this.rBS2,d,e,b.distanceSquared(c));d=b.distance(c);return 1<(g=this.rBS/d)?(this.p.set(b.x+(c.x-b.x)*g,b.y+(c.y-b.y)*g,b.z+(c.z-b.z)*g),a.distanceSquared(this.p)>=this.rAS2?NaN:this.solventDistance(this.rBS,this.rBS2,this.rAS2,d,d*d,e)):NaN},"JU.P3,JU.P3,JU.P3");e(d,"solventDistance",function(a,b,c,d,e,g){g=Math.acos((e+this.dAB2- +g)/(2*d*this.dAB));c=Math.acos((b+this.dAB2-c)/(2*a*this.dAB));e=b+e-2*a*d*Math.cos(c-g);c=Math.sqrt(e);return this.ecosASB2<(b+e-d*d)/(c*a)?c:NaN},"~N,~N,~N,~N,~N,~N");e(d,"dumpLine",function(a,b,c,d){this.sg.log('draw ID "x'+c+this.nTest++ +'" '+JU.P3.newP(a)+" "+JU.P3.newP(b)+" color "+d)},"JU.P3,JU.T3,~S,~S");e(d,"dumpLine2",function(a,b,c,d,e,g){var h=new JU.V3;h.setT(b);h.sub(a);h.normalize();h.scale(d);h.add(a);this.sg.log('draw ID "'+c+this.nTest++ +'" '+JU.P3.newP(a)+" "+JU.P3.newP(h)+" color "+ +e);this.sg.log('draw ID "'+c+this.nTest++ +'"'+JU.P3.newP(h)+" "+JU.P3.newP(b)+" color "+g+'"'+c+'"')},"JU.P3,JU.P3,~S,~N,~S,~S");e(d,"dumpPoint",function(a,b,c){this.sg.log('draw ID "'+b+this.nTest++ +'"'+JU.P3.newP(a)+" color "+c)},"JU.P3,~S,~S");l(d,"getValueAtPoint",function(a){if(null!=this.contactPair)return a.distance(this.contactPair.myAtoms[1])-this.contactPair.radii[1];for(var b=3.4028235E38,c=0;cthis.rd().indexOf(a););null!=b&&(this.next[0]=this.line.indexOf(b)+b.length+2)},"~S,~S");e(d,"rd",function(){this.line=this.br.readLine();if(null!=this.line&&(this.nBytes+=this.line.length,null!=this.out)){var a=this.line.getBytes();this.out.write(a,0,a.length);this.out.writeByteAsInt(10)}return this.line})}); +E("J.jvxl.readers");T(["J.jvxl.readers.SurfaceFileReader"],"J.jvxl.readers.VolumeFileReader","JU.AU $.PT $.SB J.api.Interface J.atomdata.AtomData JU.Logger".split(" "),function(){var d=G(function(){this.negativeAtomCount=this.endOfData=!1;this.nSurfaces=this.ac=0;this.canDownsample=this.isAngstroms=!1;this.downsampleRemainders=null;this.getNCIPlanes=!1;this.nData=0;this.readerClosed=!1;this.nSkipZ=this.nSkipY=this.nSkipX=this.downsampleFactor=0;this.yzPlanesRaw=null;this.iPlaneNCI=0;this.boundingBox= +null;this.isScaledAlready=!1;U(this,arguments)},J.jvxl.readers,"VolumeFileReader",J.jvxl.readers.SurfaceFileReader);Z(d,function(){ja(this,J.jvxl.readers.VolumeFileReader,[])});l(d,"init2",function(a,b){this.init2VFR(a,b)},"J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader");e(d,"init2VFR",function(a,b){this.init2SFR(a,b);this.canDownsample=this.isProgressive=this.isXLowToHigh=!0;this.jvxlData.wasCubic=!0;this.boundingBox=this.params.boundingBox;4==this.params.qmOrbitalType&&(this.hasColorData= +null==this.params.parameters||0<=this.params.parameters[1],this.getNCIPlanes=!0,this.params.insideOut=!this.params.insideOut)},"J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader");e(d,"recordData",function(a){if(Float.isNaN(a))return a;athis.dataMax&&(this.dataMax=a);this.dataMean+=a;this.nData++;return a},"~N");l(d,"closeReader",function(){this.readerClosed||(this.readerClosed=!0,this.closeReaderSFR(),0==this.nData||-3.4028235E38==this.dataMax||(this.dataMean/= +this.nData,JU.Logger.info("VolumeFileReader closing file: "+this.nData+" points read \ndata min/max/mean = "+this.dataMin+"/"+this.dataMax+"/"+this.dataMean)))});l(d,"readVolumeParameters",function(){this.endOfData=!1;this.nSurfaces=this.readVolumetricHeader();if(0==this.nSurfaces)return!1;this.nSurfacesc;++c)this.isAngstroms||this.volumetricVectors[c].scale(0.5291772), +this.line=this.voxelCounts[c]+" "+this.volumetricVectors[c].x+" "+this.volumetricVectors[c].y+" "+this.volumetricVectors[c].z,JU.Logger.info("voxel grid count/vector:"+this.line);this.scaleIsosurface(this.params.scale);this.volumeData.setVolumetricXml();return this.nSurfaces}catch(e){if(ba(e,Exception))return JU.Logger.error(e.toString()),0;throw e;}});e(d,"skipComments",function(a){for(var b=new JU.SB;null!=this.rd()&&(a&&0==this.line.length||0==this.line.indexOf("#"));)b.append(this.line).appendC("\n"); +return b.toString()},"~B");e(d,"readVoxelVector",function(a){this.rd();var b=this.volumetricVectors[a];if(-2147483648==(this.voxelCounts[a]=this.parseIntStr(this.line)))this.next[0]=this.line.indexOf(" ");b.set(this.parseFloat(),this.parseFloat(),this.parseFloat());this.isAnisotropic&&this.setVectorAnisotropy(b)},"~N");e(d,"initializeSurfaceData",function(){this.downsampleFactor=this.params.downsampleFactor;this.nSkipZ=this.nSkipY=this.nSkipX=0;this.canDownsample&&0this.boundingBox[1].x||this.ptTemp.ythis.boundingBox[1].y||this.ptTemp.zthis.boundingBox[1].z)?NaN:this.getValue2(a,b,c,d)},"~N,~N,~N,~N");e(d,"skipVoxels",function(a){for(;0<= +--a;)this.getNextVoxelValue()},"~N");e(d,"getVoxelBitSet",function(){return null},"~N");e(d,"getNextVoxelValue",function(){var a=0;if(1d.indexOf("ANGSTROM")&& +(d+=" ANGSTROMS"):0>d.indexOf("BOHR")&&(d+=" BOHR");d=(-2147483648==c?"":(a?"+":"-")+Math.abs(c))+d+"\n";e.append(d);return b},"~B,~B,~S,~S,JU.SB");l(d,"getSurfacePointAndFraction",function(a,b,c,d,e,g,h,l,j,n,k,q,r){return this.getSPFv(a,b,c,d,e,g,h,l,j,n,k,q,r)},"~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3");e(d,"getSPFv",function(a,b,c,d,e,g,h,l,j,n,k,q,r){a=this.getSPF(a,b,c,d,e,g,h,l,j,n,k,q,r);if(null==this.qpc||Float.isNaN(a)||!this.hasColorData)return a;n=this.marchingCubes.getLinearOffset(h, +l,j,n);k=this.marchingCubes.getLinearOffset(h,l,j,k);return this.qpc.process(n,k,q[0])},"~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3");e(d,"scaleIsosurface",function(a){this.isScaledAlready||(this.isScaledAlready=!0,this.isAnisotropic&&this.setVolumetricAnisotropy(),Float.isNaN(a)||(JU.Logger.info("applying scaling factor of "+a),this.volumetricOrigin.scaleAdd2((1-a)/2,this.volumetricVectors[0],this.volumetricOrigin),this.volumetricOrigin.scaleAdd2((1-a)/2,this.volumetricVectors[1],this.volumetricOrigin), +this.volumetricOrigin.scaleAdd2((1-a)/2,this.volumetricVectors[2],this.volumetricOrigin),this.volumetricVectors[0].scale(a),this.volumetricVectors[1].scale(a),this.volumetricVectors[2].scale(a)))},"~N");e(d,"swapXZ",function(){var a=this.volumetricVectors[0];this.volumetricVectors[0]=this.volumetricVectors[2];this.volumetricVectors[2]=a;a=this.voxelCounts[0];this.voxelCounts[0]=this.voxelCounts[2];this.voxelCounts[2]=a;this.params.insideOut=!this.params.insideOut})});E("J.jvxl.readers");T(["J.jvxl.readers.VolumeFileReader"], +"J.jvxl.readers.JvxlXmlReader","java.util.Hashtable JU.AU $.BS $.CU $.Lst $.P3 $.P4 $.PT $.SB J.jvxl.data.JvxlCoder $.MeshData J.jvxl.readers.XmlReader J.shapesurface.IsosurfaceMesh JU.C $.ColorEncoder $.Escape $.Logger".split(" "),function(){var d=G(function(){this.JVXL_VERSION="2.3";this.invalidatedVertexCount=this.excludedVertexCount=this.excludedTriangleCount=this.colorDataCount=this.edgeDataCount=this.surfaceDataCount=0;this.haveContourData=!1;this.xr=null;this.isXmlFile=!0;this.thisInside=!1; +this.bsVoxelBitSet=this.tempDataXml=null;this.includeValueNaN=!0;this.valueCount=0;this.valueRange=this.valueMin=NaN;this.colorPtr=this.fractionPtr=0;this.strFractionTemp="";this.haveReadColorData=!1;this.jvxlColorEncodingRead=null;U(this,arguments)},J.jvxl.readers,"JvxlXmlReader",J.jvxl.readers.VolumeFileReader);Z(d,function(){ja(this,J.jvxl.readers.JvxlXmlReader,[])});l(d,"init2",function(a,b){this.init2JXR(a,b)},"J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader");e(d,"init2JXR",function(a, +b){this.init2VFR(a,b);this.jvxlData.wasJvxl=this.isJvxl=!0;this.isXLowToHigh=this.canDownsample=!1;this.xr=new J.jvxl.readers.XmlReader(b)},"J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader");l(d,"readVolumeData",function(a){if(!this.readVolumeDataVFR(a))return!1;this.strFractionTemp=this.jvxlEdgeDataRead;this.fractionPtr=0;return!0},"~B");l(d,"gotoAndReadVoxelData",function(a){this.initializeVolumetricData();if(0>this.nPointsX||0>this.nPointsY||0>this.nPointsZ)return!0;try{this.gotoData(this.params.fileIndex- +1,this.nPointsX*this.nPointsY*this.nPointsZ);if(this.vertexDataOnly)return!0;this.volumeData.setMappingPlane(this.params.thePlane);this.readSurfaceData(a);this.volumeData.setMappingPlane(null);0c?0:c;this.volumetricVectors[a].setT(this.xr.getXmlPoint(b,"vector"));this.isAnisotropic&&this.setVectorAnisotropy(this.volumetricVectors[a])},"~N"); +l(d,"gotoData",function(a,b){0b.indexOf(" ")?(this.jvxlCutoff=this.parseFloatStr(b),Double.isNaN(this.jvxlCutoff)||JU.Logger.info("JVXL read: cutoff "+this.jvxlCutoff)):(this.jvxlCutoffRange=this.parseFloatArrayStr(b),this.jvxlCutoff=this.jvxlCutoffRange[0],JU.Logger.info("JVXL read: cutoff "+JU.Escape.eAF(this.jvxlCutoffRange)));this.params.cutoff=this.jvxlCutoff;var c=this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(a,"nContourData"));this.haveContourData=0=d?d=0:(0>this.params.thisContour&&(this.params.thisContour=this.parseIntStr(J.jvxl.readers.XmlReader.getXmlAttrib(a,"thisContour"))),b=J.jvxl.readers.XmlReader.getXmlAttrib(a,"contourValues"), +0d):(this.params.valueMappedToRed=0,this.params.valueMappedToBlue= +1),this.params.rangeDefined=!0),JU.Logger.info("JVXL read: color red/blue: "+this.params.valueMappedToRed+"/"+this.params.valueMappedToBlue));this.jvxlData.valueMappedToRed=this.params.valueMappedToRed;this.jvxlData.valueMappedToBlue=this.params.valueMappedToBlue;this.jvxlData.mappedDataMin=this.params.mappedDataMin;this.jvxlData.mappedDataMax=this.params.mappedDataMax;this.jvxlData.isColorReversed=this.params.isColorReversed;this.params.insideOut&&(e=!e);this.params.insideOut=this.jvxlData.insideOut= +e},"~N,~N,~N,~N,~B");l(d,"readSurfaceData",function(){this.thisInside=!this.params.isContoured;this.readSurfaceDataXML()||(this.tempDataXml=this.xr.getXmlData("jvxlEdgeData",null,!0,!1),this.bsVoxelBitSet=J.jvxl.data.JvxlCoder.jvxlDecodeBitSet(this.xr.getXmlData("jvxlEdgeData",this.tempDataXml,!1,!1)),this.readSurfaceDataJXR())},"~B");e(d,"readSurfaceDataXML",function(){return this.vertexDataOnly?(this.getEncodedVertexData(),!0):null!=this.params.thePlane?(this.volumeData.setDataDistanceToPlane(this.params.thePlane), +this.setVolumeDataV(this.volumeData),this.params.cutoff=0,this.jvxlData.setSurfaceInfo(this.params.thePlane,this.params.mapLattice,0,""),this.jvxlData.scale3d=this.params.scale3d,!0):!1});e(d,"readSurfaceDataJXR",function(){this.readSurfaceDataVFR(!1);this.volumeData.setMappingPlane(null)});e(d,"jvxlReadFractionData",function(a){var b;try{if(a.equals("edge"))b=J.jvxl.data.JvxlCoder.jvxlDecompressString(J.jvxl.readers.XmlReader.getXmlAttrib(this.tempDataXml,"data"));else{var c=this.xr.getXmlData("jvxlColorData", +null,!0,!1);this.jvxlData.isJvxlPrecisionColor=J.jvxl.readers.JvxlXmlReader.getEncoding(c).endsWith("2");b=J.jvxl.data.JvxlCoder.jvxlDecompressString(J.jvxl.readers.XmlReader.getXmlAttrib(c,"data"))}}catch(d){if(ba(d,Exception))throw JU.Logger.error("Error reading "+a+" data "+d),new NullPointerException;throw d;}return b},"~S,~N");l(d,"getVoxelBitSet",function(a){if(null!=this.bsVoxelBitSet)return this.bsVoxelBitSet;var b=new JU.BS,c=0;if(0>=this.surfaceDataCount)return b;for(var d=0;c=this.edgeDataCount)return this.getSPFv(a,b,c,d,e,g,h,l,j,n,k,q,r);r.scaleAdd2(q[0]=this.jvxlGetNextFraction(this.edgeFractionBase, +this.edgeFractionRange,0.5),g,e);Float.isNaN(this.valueMin)&&this.setValueMinMax();return 0==this.valueCount||this.includeValueNaN&&Float.isNaN(q[0])?q[0]:this.getNextValue()},"~N,~B,~N,~N,JU.T3,JU.V3,~N,~N,~N,~N,~N,~A,JU.T3");e(d,"getNextValue",function(){for(var a=NaN;this.colorPtr=this.strFractionTemp.length&&(this.endOfData||JU.Logger.error("end of file reading compressed fraction data"),this.endOfData= +!0,this.strFractionTemp=""+String.fromCharCode(a),this.fractionPtr=0);return J.jvxl.data.JvxlCoder.jvxlFractionFromCharacter(this.strFractionTemp.charAt(this.fractionPtr++).charCodeAt(0),a,b,c)},"~N,~N,~N");l(d,"readColorData",function(){if(!this.jvxlDataIsColorMapped)return"";var a=this.jvxlData.vertexCount=this.meshData.vc,b=this.meshData.vcs,c=this.meshData.vvs;if("none".equals(this.jvxlColorEncodingRead)){this.jvxlData.vertexColors=t(a,0);for(var d=t(1,0),c=JU.PT.parseIntNext(this.jvxlColorDataRead, +d),c=Math.min(c,a),a=JU.PT.getTokens(this.jvxlColorDataRead.substring(d[0])),e=!1,g=this.jvxlData.translucency,h=0,d=0;dq&&(q=h));r&&(this.params.mappedDataMin=k,this.params.mappedDataMax=q);if(null!=this.jvxlData.colorScheme){n=null!=this.marchingSquares&&this.params.isContoured;for(d=0;d=h)?l:e,b[d]=JU.C.getColixTranslucent3(h,!0,this.jvxlData.translucency))}return this.jvxlColorDataRead+ +"\n"});d.getColor=e(d,"getColor",function(a){var b=0;try{switch(a.charAt(0).charCodeAt(0)){case 91:b=JU.CU.getArgbFromString(a);break;case 48:b=JU.PT.parseIntRadix(a.substring(2),16);break;default:b=JU.PT.parseIntRadix(a,10)}}catch(c){if(!ba(c,Exception))throw c;}return b},"~S");e(d,"getEncodedVertexData",function(){var a=this.xr.getXmlData("jvxlSurfaceData",null,!0,!1);this.jvxlDecodeVertexData(this.xr.getXmlData("jvxlVertexData",a,!0,!1),!1);var b=this.xr.getXmlData("jvxlTriangleData",a,!0,!1), +c=this.xr.getXmlData("jvxlTriangleEdgeData",a,!0,!1),d=this.xr.getXmlData("jvxlPolygonColorData",a,!1,!1);this.jvxlDecodeTriangleData(b,c,d);a=this.xr.getXmlData("jvxlColorData",a,!0,!1);this.jvxlColorEncodingRead=J.jvxl.readers.JvxlXmlReader.getEncoding(a);this.jvxlData.isJvxlPrecisionColor=this.jvxlColorEncodingRead.endsWith("2");a=this.getData(a,"jvxlColorData");this.jvxlColorDataRead=this.jvxlColorEncodingRead.equals("none")?a:J.jvxl.data.JvxlCoder.jvxlDecompressString(a);this.jvxlDataIsColorMapped= +(-2147483648==this.params.colorRgb||2147483647==this.params.colorRgb)&&0d)){var e=t(1,0),g=null== +c?-1:1,h=0;JU.Logger.info("Reading "+d+" triangles");var l=J.jvxl.readers.JvxlXmlReader.getEncoding(a);a=this.getData(a,"jvxlTriangleData");b=this.getData(b,"jvxlTriangleEdgeData");var j=t(3,0),n=t(1,0),k=null,q=7,r=!"none".equals(l);if(r)a=J.jvxl.data.JvxlCoder.jvxlDecompressString(a),b=J.jvxl.data.JvxlCoder.jvxlDecompressString(b).trim(),l=b.length==d;else{var x=JU.PT.parseIntNext(a,n);(l=0q||7d)){var g=this.antialias?2:1,h=this.vwr.getScreenHeight()*g,l=M(M(h/2)/(d-1)),h=3*M(h/4)-l,j=10*g,n=20*g;this.isosurface.keyXy=t(-1,[M(j/g),0,M((j+n)/g),M((h+l)/g),M(l/g)]);for(var k=0;kc&&(c=this.pt2f.z);a=Math.round(a+(c-a)*(100-this.meshSlabValue)/100);this.frontOnly=(new Boolean(this.frontOnly&100<=this.meshSlabValue)).valueOf();this.isShell=(new Boolean(this.isShell&100<=this.meshSlabValue)).valueOf()}b=this.vwr.gdata.translucentCoverOnly;this.vwr.gdata.translucentCoverOnly=this.frontOnly||!this.vwr.getBoolean(603979967);this.thePlane=this.imesh.jvxlData.jvxlPlane; +this.vertexValues=this.mesh.vvs;2147483647!=a&&this.imesh.jvxlData.isSlabbable?(this.g3d.setSlab(a),a=this.renderMesh2(this.mesh),this.g3d.setSlab(this.globalSlabValue)):a=this.renderMesh2(this.mesh);this.vwr.gdata.translucentCoverOnly=b;return a});l(d,"render2",function(a){if(this.volumeRender)this.renderPoints();else{switch(this.imesh.dataType){case 70:this.renderLonePair(!1);return;case 71:this.renderLonePair(!0);return}this.isBicolorMap=this.imesh.jvxlData.isBicolorMap;this.render2b(a);this.g3d.setC(4)&& +this.imesh.showContourLines&&this.renderContourLines()}},"~B");e(d,"renderLonePair",function(a){this.pt2f.setT(this.vertices[1]);this.tm.transformPt3f(this.pt2f,this.pt2f);var b=A(this.vwr.tm.scaleToScreen(A(this.pt2f.z),100));1>b&&(b=1);if(!a){var c=new JU.V3;a=new JU.V3;this.pt1f.setT(this.vertices[0]);this.tm.transformPt3f(this.pt1f,this.pt1f);c.sub2(this.pt2f,this.pt1f);a.set(c.x,c.y,c.z+1);a.cross(a,c);a.normalize();c=this.vwr.tm.scaleToScreen(A(this.pt1f.z),100);a.scale(c);this.pt1f.add2(this.pt2f, +a);this.pt2f.sub(a);this.screens[0].set(Math.round(this.pt1f.x),Math.round(this.pt1f.y),Math.round(this.pt1f.z));this.g3d.fillSphereI(b,this.screens[0])}this.screens[1].set(Math.round(this.pt2f.x),Math.round(this.pt2f.y),Math.round(this.pt2f.z));this.g3d.fillSphereI(b,this.screens[1])},"~B");e(d,"renderContourLines",function(){var a=this.imesh.getContours();if(null==a)null!=this.imesh.jvxlData.contourValues&&(this.hasColorRange=!0);else{this.hasColorRange=0==this.mesh.meshColix;for(var b=a.length;0<= +--b;){var c=a[b];if(!(6>c.size())){this.colix=0==this.mesh.meshColix?c.get(3)[0]:this.mesh.meshColix;if(!this.g3d.setC(this.colix))break;for(var d=c.size()-1,e=this.getDiameter(),g=6;g=this.mesh.diameter?(c=this.vwr.getInt(553648140),this.frontOnly=this.isShell=!1):c=M(this.vwr.getScreenDim()/(this.volumeRender?50:100));var d=Math.round(Float.isNaN(this.mesh.volumeRenderPointSize)?150:1E3*this.mesh.volumeRenderPointSize);1>c&&(c=1);var e=this.showNumbers?M(this.vwr.getScreenWidth()/2):0,g=this.showNumbers?M(this.vwr.getScreenHeight()/ +2):0;this.showNumbers&&this.vwr.gdata.setFontBold("Monospaced",24);for(var h=!this.imesh.hasGridPoints||0>this.imesh.firstRealVertex?0:this.imesh.firstRealVertex;hMath.abs(this.screens[h].x-e)&&150>Math.abs(this.screens[h].y-g)){var l=h+(this.mesh.isColorSolid?"":" "+this.mesh.vvs[h]);this.g3d.setC(4);this.g3d.drawStringNoSlab(l,null,this.screens[h].x,this.screens[h].y,this.screens[h].z-30,0)}this.volumeRender?(c=A(this.vwr.tm.scaleToScreen(this.screens[h].z,d)),1>c&&(c=1),this.g3d.volumeRender4(c,this.screens[h].x,this.screens[h].y, +this.screens[h].z)):this.g3d.fillSphereI(c,this.screens[h])}if(3==b){this.g3d.setC(this.isTranslucent?JU.C.getColixTranslucent3(12,!0,0.5):12);for(h=1;h=this.mesh.diameter?(a=0>this.meshScale?this.meshScale=this.vwr.getInt(553648149):this.meshScale,this.antialias&& +(a*=2)):a=M(this.vwr.getScreenDim()/100);1>a&&(a=1);return a});e(d,"renderNormals",function(){if(this.g3d.setC(JU.C.copyColixTranslucency(this.mesh.colix,8))){this.vwr.gdata.setFontBold("Monospaced",24);for(var a=JU.Normix.getVertexVectors(),b=this.vertexCount;0<=--b;)if(!(null!=this.vertexValues&&Float.isNaN(this.vertexValues[b]))){this.pt1f.setT(this.vertices[b]);var c=this.mesh.normixes[b];0<=c&&(this.pt2f.scaleAdd2(0.3,a[c],this.pt1f),this.tm.transformPtScrT3(this.pt2f,this.pt2f),this.pt1f.set(this.screens[b].x, +this.screens[b].y,this.screens[b].z),this.g3d.drawLineAB(this.pt1f,this.pt2f))}}})})})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface, +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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coreswing.js b/config/plugins/visualizations/jmol/static/j2s/core/coreswing.js new file mode 100755 index 000000000000..66c1907adc47 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coreswing.js @@ -0,0 +1,1351 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("J.api"); +Clazz_declareInterface(J.api, "SC"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.LayoutManager"], "JS.BorderLayout", null, function(){ +var c$ = Clazz_declareType(JS, "BorderLayout", JS.LayoutManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.Component", ["JU.CU"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this._visible = false; +this.enabled = true; +this.text = null; +this.name = null; +this.width = 0; +this.height = 0; +this.id = null; +this.parent = null; +this.mouseListener = null; +this.bgcolor = null; +this.minWidth = 30; +this.minHeight = 30; +this.renderWidth = 0; +this.renderHeight = 0; +Clazz_instantialize(this, arguments);}, JS, "Component", null); +Clazz_makeConstructor(c$, +function(type){ +this.id = JS.Component.newID(type); +if (type == null) return; +{ +SwingController.register(this, type); +}}, "~S"); +Clazz_defineMethod(c$, "setParent", +function(p){ +this.parent = p; +}, "~O"); +c$.newID = Clazz_defineMethod(c$, "newID", +function(type){ +return type + ("" + Math.random()).substring(3, 10); +}, "~S"); +Clazz_defineMethod(c$, "setBackground", +function(color){ +this.bgcolor = color; +}, "javajs.api.GenericColor"); +Clazz_defineMethod(c$, "setText", +function(text){ +this.text = text; +{ +SwingController.setText(this); +}}, "~S"); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_defineMethod(c$, "getParent", +function(){ +return this.parent; +}); +Clazz_defineMethod(c$, "setPreferredSize", +function(dimension){ +this.width = dimension.width; +this.height = dimension.height; +}, "JS.Dimension"); +Clazz_defineMethod(c$, "addMouseListener", +function(listener){ +this.mouseListener = listener; +}, "~O"); +Clazz_defineMethod(c$, "getText", +function(){ +return this.text; +}); +Clazz_defineMethod(c$, "isEnabled", +function(){ +return this.enabled; +}); +Clazz_defineMethod(c$, "setEnabled", +function(enabled){ +this.enabled = enabled; +{ +SwingController.setEnabled(this); +}}, "~B"); +Clazz_defineMethod(c$, "isVisible", +function(){ +return this._visible; +}); +Clazz_defineMethod(c$, "setVisible", +function(visible){ +this._visible = visible; +{ +SwingController.setVisible(this); +}}, "~B"); +Clazz_defineMethod(c$, "getHeight", +function(){ +return this.height; +}); +Clazz_defineMethod(c$, "getWidth", +function(){ +return this.width; +}); +Clazz_defineMethod(c$, "setMinimumSize", +function(d){ +this.minWidth = d.width; +this.minHeight = d.height; +}, "JS.Dimension"); +Clazz_defineMethod(c$, "getSubcomponentWidth", +function(){ +return this.width; +}); +Clazz_defineMethod(c$, "getSubcomponentHeight", +function(){ +return this.height; +}); +Clazz_defineMethod(c$, "getCSSstyle", +function(defaultPercentW, defaultPercentH){ +var width = (this.renderWidth > 0 ? this.renderWidth : this.getSubcomponentWidth()); +var height = (this.renderHeight > 0 ? this.renderHeight : this.getSubcomponentHeight()); +return (width > 0 ? "width:" + width + "px;" : defaultPercentW > 0 ? "width:" + defaultPercentW + "%;" : "") + (height > 0 ? "height:" + height + "px;" : defaultPercentH > 0 ? "height:" + defaultPercentH + "%;" : "") + (this.bgcolor == null ? "" : "background-color:" + JU.CU.toCSSString(this.bgcolor) + ";"); +}, "~N,~N"); +Clazz_defineMethod(c$, "repaint", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.Component"], "JS.Container", ["JU.Lst"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.list = null; +this.cList = null; +Clazz_instantialize(this, arguments);}, JS, "Container", JS.Component); +Clazz_defineMethod(c$, "getComponent", +function(i){ +return this.list.get(i); +}, "~N"); +Clazz_defineMethod(c$, "getComponentCount", +function(){ +return (this.list == null ? 0 : this.list.size()); +}); +Clazz_defineMethod(c$, "getComponents", +function(){ +if (this.cList == null) { +if (this.list == null) return new Array(0); +this.cList = this.list.toArray(); +}return this.cList; +}); +Clazz_defineMethod(c$, "add", +function(component){ +return this.addComponent(component); +}, "JS.Component"); +Clazz_defineMethod(c$, "addComponent", +function(component){ +if (this.list == null) this.list = new JU.Lst(); +this.list.addLast(component); +this.cList = null; +component.parent = this; +return component; +}, "JS.Component"); +Clazz_defineMethod(c$, "insertComponent", +function(component, index){ +if (this.list == null) return this.addComponent(component); +this.list.add(index, component); +this.cList = null; +component.parent = this; +return component; +}, "JS.Component,~N"); +Clazz_defineMethod(c$, "remove", +function(i){ +var c = this.list.removeItemAt(i); +c.parent = null; +this.cList = null; +}, "~N"); +Clazz_defineMethod(c$, "removeAll", +function(){ +if (this.list != null) { +for (var i = this.list.size(); --i >= 0; ) this.list.get(i).parent = null; + +this.list.clear(); +}this.cList = null; +}); +Clazz_defineMethod(c$, "getSubcomponentWidth", +function(){ +return (this.list != null && this.list.size() == 1 ? this.list.get(0).getSubcomponentWidth() : 0); +}); +Clazz_defineMethod(c$, "getSubcomponentHeight", +function(){ +return (this.list != null && this.list.size() == 1 ? this.list.get(0).getSubcomponentHeight() : 0); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +(function(){ +var c$ = Clazz_declareType(JS, "LayoutManager", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["J.api.SC", "JS.JComponent"], "JS.AbstractButton", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.itemListener = null; +this.applet = null; +this.htmlName = null; +this.selected = false; +this.popupMenu = null; +this.icon = null; +Clazz_instantialize(this, arguments);}, JS, "AbstractButton", JS.JComponent, J.api.SC); +Clazz_makeConstructor(c$, +function(type){ +Clazz_superConstructor(this, JS.AbstractButton, [type]); +this.enabled = true; +}, "~S"); +Clazz_overrideMethod(c$, "setSelected", +function(selected){ +this.selected = selected; +{ +SwingController.setSelected(this); +}}, "~B"); +Clazz_overrideMethod(c$, "isSelected", +function(){ +return this.selected; +}); +Clazz_overrideMethod(c$, "addItemListener", +function(listener){ +this.itemListener = listener; +}, "~O"); +Clazz_overrideMethod(c$, "getIcon", +function(){ +return this.icon; +}); +Clazz_overrideMethod(c$, "setIcon", +function(icon){ +this.icon = icon; +}, "~O"); +Clazz_overrideMethod(c$, "init", +function(text, icon, actionCommand, popupMenu){ +this.text = text; +this.icon = icon; +this.actionCommand = actionCommand; +this.popupMenu = popupMenu; +{ +SwingController.initMenuItem(this); +}}, "~S,~O,~S,J.api.SC"); +Clazz_defineMethod(c$, "getTopPopupMenu", +function(){ +return this.popupMenu; +}); +Clazz_defineMethod(c$, "add", +function(item){ +this.addComponent(item); +}, "J.api.SC"); +Clazz_overrideMethod(c$, "insert", +function(subMenu, index){ +this.insertComponent(subMenu, index); +}, "J.api.SC,~N"); +Clazz_overrideMethod(c$, "getPopupMenu", +function(){ +return null; +}); +Clazz_defineMethod(c$, "getMenuHTML", +function(){ +var label = (this.icon != null ? this.icon : this.text != null ? this.text : null); +var s = (label == null ? "" : "
  • " + label + "" + this.htmlMenuOpener("ul")); +var n = this.getComponentCount(); +if (n > 0) for (var i = 0; i < n; i++) s += this.getComponent(i).toHTML(); + +if (label != null) s += "
  • "; +return s; +}); +Clazz_defineMethod(c$, "htmlMenuOpener", +function(type){ +return "<" + type + " id=\"" + this.id + "\"" + (this.enabled ? "" : this.getHtmlDisabled()) + ">"; +}, "~S"); +Clazz_defineMethod(c$, "getHtmlDisabled", +function(){ +return " disabled=\"disabled\""; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_declareInterface(JS, "AbstractTableModel", JS.TableColumn); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.ButtonGroup", ["JS.Component"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.id = null; +this.count = 0; +Clazz_instantialize(this, arguments);}, JS, "ButtonGroup", null); +Clazz_makeConstructor(c$, +function(){ +this.id = JS.Component.newID("bg"); +}); +Clazz_defineMethod(c$, "add", +function(item){ +this.count++; +(item).htmlName = this.id; +}, "J.api.SC"); +Clazz_defineMethod(c$, "getButtonCount", +function(){ +return this.count; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.component = null; +this.colspan = 0; +this.rowspan = 0; +this.textAlign = 0; +this.c = null; +Clazz_instantialize(this, arguments);}, JS, "Cell", null); +Clazz_makeConstructor(c$, +function(btn, c){ +this.component = btn; +this.colspan = c.gridwidth; +this.rowspan = c.gridheight; +this.c = c; +}, "JS.JComponent,JS.GridBagConstraints"); +Clazz_defineMethod(c$, "toHTML", +function(id){ +var style = this.c.getStyle(false); +return "" + this.component.toHTML() + ""; +}, "~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_declareInterface(JS, "ColumnSelectionModel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_declareInterface(JS, "Document"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.LayoutManager"], "JS.FlowLayout", null, function(){ +var c$ = Clazz_declareType(JS, "FlowLayout", JS.LayoutManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.Grid", ["JU.AU", "$.SB", "JS.Cell"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.nrows = 0; +this.ncols = 0; +this.grid = null; +this.renderer = null; +Clazz_instantialize(this, arguments);}, JS, "Grid", null); +Clazz_makeConstructor(c$, +function(rows, cols){ +this.grid = Clazz_newArray(0, 0, null); +}, "~N,~N"); +Clazz_defineMethod(c$, "add", +function(btn, c){ +if (c.gridx >= this.ncols) { +this.ncols = c.gridx + 1; +for (var i = 0; i < this.nrows; i++) { +this.grid[i] = JU.AU.ensureLength(this.grid[i], this.ncols * 2); +} +}if (c.gridy >= this.nrows) { +var g = new Array(c.gridy * 2 + 1); +for (var i = 0; i < this.nrows; i++) g[i] = this.grid[i]; + +for (var i = g.length; --i >= this.nrows; ) g[i] = new Array(this.ncols * 2 + 1); + +this.grid = g; +this.nrows = c.gridy + 1; +}this.grid[c.gridy][c.gridx] = new JS.Cell(btn, c); +}, "JS.JComponent,JS.GridBagConstraints"); +Clazz_defineMethod(c$, "toHTML", +function(id){ +var sb = new JU.SB(); +id += "_grid"; +sb.append("\n"); +for (var i = 0; i < this.nrows; i++) { +var rowid = id + "_" + i; +sb.append("\n"); +for (var j = 0; j < this.ncols; j++) if (this.grid[i][j] != null) sb.append(this.grid[i][j].toHTML(rowid + "_" + j)); + +sb.append(""); +} +sb.append("\n
    \n"); +return sb.toString(); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.GridBagConstraints", ["JS.Insets"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.gridx = 0; +this.gridy = 0; +this.gridwidth = 0; +this.gridheight = 0; +this.weightx = 0; +this.weighty = 0; +this.anchor = 0; +this.fill = 0; +this.insets = null; +this.ipadx = 0; +this.ipady = 0; +Clazz_instantialize(this, arguments);}, JS, "GridBagConstraints", null); +Clazz_makeConstructor(c$, +function(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, insets, ipadx, ipady){ +this.gridx = gridx; +this.gridy = gridy; +this.gridwidth = gridwidth; +this.gridheight = gridheight; +this.weightx = weightx; +this.weighty = weighty; +this.anchor = anchor; +this.fill = fill; +if (insets == null) insets = new JS.Insets(0, 0, 0, 0); +this.insets = insets; +this.ipadx = ipadx; +this.ipady = ipady; +}, "~N,~N,~N,~N,~N,~N,~N,~N,JS.Insets,~N,~N"); +Clazz_defineMethod(c$, "getStyle", +function(margins){ +return "style='" + (margins ? "margin:" + this.insets.top + "px " + (this.ipady + this.insets.right) + "px " + this.insets.bottom + "px " + (this.ipadx + this.insets.left) + "px;" : "text-align:" + (this.anchor == 13 ? "right" : this.anchor == 17 ? "left" : "center")) + "'"; +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.LayoutManager"], "JS.GridBagLayout", null, function(){ +var c$ = Clazz_declareType(JS, "GridBagLayout", JS.LayoutManager); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.top = 0; +this.left = 0; +this.bottom = 0; +this.right = 0; +Clazz_instantialize(this, arguments);}, JS, "Insets", null); +Clazz_makeConstructor(c$, +function(top, left, bottom, right){ +this.top = top; +this.left = left; +this.bottom = bottom; +this.right = right; +}, "~N,~N,~N,~N"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.AbstractButton"], "JS.JButton", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JS, "JButton", JS.AbstractButton); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JButton, ["btnJB"]); +}); +Clazz_overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.AbstractButton"], "JS.JCheckBox", null, function(){ +var c$ = Clazz_declareType(JS, "JCheckBox", JS.AbstractButton); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JCheckBox, ["chkJCB"]); +}); +Clazz_overrideMethod(c$, "toHTML", +function(){ +var s = ""; +return s; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JMenuItem"], "JS.JCheckBoxMenuItem", null, function(){ +var c$ = Clazz_declareType(JS, "JCheckBoxMenuItem", JS.JMenuItem); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JCheckBoxMenuItem, ["chk", 2]); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.AbstractButton"], "JS.JComboBox", ["JU.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.info = null; +this.selectedIndex = 0; +Clazz_instantialize(this, arguments);}, JS, "JComboBox", JS.AbstractButton); +Clazz_makeConstructor(c$, +function(info){ +Clazz_superConstructor(this, JS.JComboBox, ["cmbJCB"]); +this.info = info; +}, "~A"); +Clazz_defineMethod(c$, "setSelectedIndex", +function(i){ +this.selectedIndex = i; +{ +SwingController.setSelectedIndex(this); +}}, "~N"); +Clazz_defineMethod(c$, "getSelectedIndex", +function(){ +return this.selectedIndex; +}); +Clazz_defineMethod(c$, "getSelectedItem", +function(){ +return (this.selectedIndex < 0 ? null : this.info[this.selectedIndex]); +}); +Clazz_overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append("\n\n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.Container"], "JS.JComponent", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.autoScrolls = false; +this.actionCommand = null; +this.actionListener = null; +Clazz_instantialize(this, arguments);}, JS, "JComponent", JS.Container); +Clazz_defineMethod(c$, "setAutoscrolls", +function(b){ +this.autoScrolls = b; +}, "~B"); +Clazz_defineMethod(c$, "addActionListener", +function(listener){ +this.actionListener = listener; +}, "~O"); +Clazz_defineMethod(c$, "getActionCommand", +function(){ +return this.actionCommand; +}); +Clazz_defineMethod(c$, "setActionCommand", +function(actionCommand){ +this.actionCommand = actionCommand; +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JComponent"], "JS.JComponentImp", null, function(){ +var c$ = Clazz_declareType(JS, "JComponentImp", JS.JComponent); +Clazz_overrideMethod(c$, "toHTML", +function(){ +return null; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JComponent"], "JS.JContentPane", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JS, "JContentPane", JS.JComponent); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JContentPane, ["JCP"]); +}); +Clazz_defineMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append("\n
    \n"); +if (this.list != null) for (var i = 0; i < this.list.size(); i++) sb.append(this.list.get(i).toHTML()); + +sb.append("\n
    \n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.Container"], "JS.JDialog", ["JU.SB", "JS.Color", "$.JContentPane"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.defaultWidth = 600; +this.defaultHeight = 300; +this.contentPane = null; +this.title = null; +this.html = null; +this.zIndex = 9000; +this.loc = null; +Clazz_instantialize(this, arguments);}, JS, "JDialog", JS.Container); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JDialog, ["JD"]); +this.add(this.contentPane = new JS.JContentPane()); +this.setBackground(JS.Color.get3(210, 210, 240)); +this.contentPane.setBackground(JS.Color.get3(230, 230, 230)); +}); +Clazz_defineMethod(c$, "setZIndex", +function(zIndex){ +this.zIndex = zIndex; +}, "~N"); +Clazz_defineMethod(c$, "setLocation", +function(loc){ +this.loc = loc; +}, "~A"); +Clazz_defineMethod(c$, "getContentPane", +function(){ +return this.contentPane; +}); +Clazz_defineMethod(c$, "setTitle", +function(title){ +this.title = title; +}, "~S"); +Clazz_defineMethod(c$, "pack", +function(){ +this.html = null; +}); +Clazz_defineMethod(c$, "validate", +function(){ +this.html = null; +}); +Clazz_defineMethod(c$, "setVisible", +function(tf){ +if (tf && this.html == null) this.setDialog(); +Clazz_superCall(this, JS.JDialog, "setVisible", [tf]); +if (tf) this.toFront(); +}, "~B"); +Clazz_defineMethod(c$, "dispose", +function(){ +{ +{ +SwingController.dispose(this); +}}}); +Clazz_overrideMethod(c$, "repaint", +function(){ +this.setDialog(); +}); +Clazz_defineMethod(c$, "setDialog", +function(){ +this.html = this.toHTML(); +{ +SwingController.setDialog(this); +}}); +Clazz_overrideMethod(c$, "toHTML", +function(){ +this.renderWidth = Math.max(this.width, this.getSubcomponentWidth()); +if (this.renderWidth == 0) this.renderWidth = this.defaultWidth; +this.renderHeight = Math.max(this.height, this.contentPane.getSubcomponentHeight()); +if (this.renderHeight == 0) this.renderHeight = this.defaultHeight; +var h = this.renderHeight - 25; +var sb = new JU.SB(); +sb.append("\n
    \n"); +sb.append("\n
    " + "" + this.title + "" + "
    \n"); +sb.append("\n
    \n"); +sb.append(this.contentPane.toHTML()); +sb.append("\n
    \n"); +return sb.toString(); +}); +Clazz_defineMethod(c$, "toFront", +function(){ +{ +SwingController.setFront(this); +}}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JComponent"], "JS.JEditorPane", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JS, "JEditorPane", JS.JComponent); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JEditorPane, ["txtJEP"]); +this.text = ""; +}); +Clazz_overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JComponent"], "JS.JLabel", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JS, "JLabel", JS.JComponent); +Clazz_makeConstructor(c$, +function(text){ +Clazz_superConstructor(this, JS.JLabel, ["lblJL"]); +this.text = text; +}, "~S"); +Clazz_overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +sb.append(this.text); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JMenuItem"], "JS.JMenu", null, function(){ +var c$ = Clazz_declareType(JS, "JMenu", JS.JMenuItem); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JMenu, ["mnu", 4]); +}); +Clazz_defineMethod(c$, "getItemCount", +function(){ +return this.getComponentCount(); +}); +Clazz_defineMethod(c$, "getItem", +function(i){ +return this.getComponent(i); +}, "~N"); +Clazz_overrideMethod(c$, "getPopupMenu", +function(){ +return this; +}); +Clazz_overrideMethod(c$, "toHTML", +function(){ +return this.getMenuHTML(); +}); +{ +{ +// JSmolMenu.js +// author: Bob Hanson, hansonr@stolaf.edu +// BH 10/17/2015 6:18:38 PM wraps with Jmol.__$ to use same version of jQuery as Jmol is using +// BH 5/27/2014 11:01:46 PM frank menu fix; better event handling +// BH 5/26/2014 allow for a user callback for customization of menu +// using Jmol._showMenuCallback(menu, x, y); +// BH 2/17/2014 7:52:18 AM Jmol.Menu folded into Jmol.Swing +// BH 1/16/2014 9:20:15 AM allowing second attempt to initiate this library to gracefully skip processing +//! jQuery UI - v1.9.2 - 2012-12-17 +// http://jqueryui.com +// Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.menu.js +// Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT +;(function(jQuery) { +if (!jQuery.ui) +try{ +(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}}) +})(jQuery); +}catch (e) { +System.out.println("coremenu failed to load jQuery.ui.mouse -- jQuery version conflict?"); +} +if (!jQuery.ui.position) +try{ +(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("
    "),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};lr(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)a&&(v<0||v0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery) +})(jQuery); +}catch (e) { +System.out.println("coremenu failed to load jQuery.ui.position -- jQuery version conflict?"); +} +//! jQuery UI - v1.9.2 - 2012-12-17 +//http://jqueryui.com +//Includes: jquery.ui.core.css, jquery.ui.menu.css +//To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +//Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT +if (!jQuery.ui.menu) +try{ +(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"
      ",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-+�G��G��+�G��G��\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})}, +_startOpening:function(e){ +if (e.hasClass("ui-state-disabled"))return // BH +clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()'+Swing.__getMenuStyle(menu.applet)+''); +Swing.__getStyle = null; // once only +menu.tainted = true; +menu.popupMenu = menu; +menu.id = "top"; +menu.id = Swing.getMenuID(menu); +menu.applet._menus || (menu.applet._menus = {}); +menu.applet._menus[menu.name] = menu; +Jmol.$after("body",''); +menu.setContainer(Jmol.$('#' + menu.id)); +} +Swing.showMenu = function(menu, x, y) { +// called by JS.JPopupMenu +// allow for a user callback for customization of menu +if (Jmol._showMenuCallback) +Jmol._showMenuCallback(menu, x, y); +if (menu.tainted) { +menu.container.html(menu.toHTML()); +menu.tainted = false; +Swing.bindMenuActionCommands(menu, true); +} +menu.setPosition(); +menu.container.hide().menu().menu('refresh').show(); +menu._visible = true; +menu.timestamp = System.currentTimeMillis(); +menu.dragBind(true); +menu.container.unbind('clickoutjsmol'); +if (!Jmol._persistentMenu) +menu.container.bind('clickoutjsmol mousemoveoutjsmol', function(evspecial, target, ev) { +if (System.currentTimeMillis() - menu.timestamp > 1000) +Swing.hideMenu(menu); +}); +menu.container.bind("contextmenu", function() {return false;}) +} +Swing.disposeMenu = function(menu) { +// called by JS.JPopupMenu +if (Jmol._persistentMenu) +return +Swing.hideMenu(menu); +Swing.bindMenuActionCommands(menu, false); +delete menu.applet._menus[menu.name]; +} +Swing.initMenuItem = function(item) { +// called by JS.AbstractButton +item.applet = item.popupMenu.applet; +item.id = Swing.getMenuID(item); +item.icon && (item.icon = '') +} +Swing.getMenuID = function(item) { +// called internally +var popup = item.popupMenu; +return popup.applet._id + '_' + popup.name + "_" + item.id + '_' + (++Swing.menuCounter); +} +Swing.hideMenu = function(menu) { +// called internally +if (!menu._visible)return; +//menu.container.unbind('clickoutjsmol'); +menu.dragBind(false); +menu.container.hide(); +menu._visible = menu.isDragging = false; +}; +var delayHide = function(menu, f) { +setTimeout(function(){Swing.hideMenus(menu.applet);f();},500); +} +Swing.bindMenuActionCommands = function(menu, isBind) { +// called internally +var n = menu.getComponentCount(); +for(var i = 0; i < n; i++) +Swing.bindMenuActionCommands(menu.getComponent(i), isBind); +Jmol.$documentOff('click mouseup mouseover mousedown touchstart touchend mouseenter mouseleave', menu.id); +if (isBind) { +Jmol.$documentOn('click', menu.id, function(event) { +var name= "" + menu.name; +var dohide = (name.indexOf("Persist") < 0 || name.indexOf("!Persist") >= 0); +if (menu.itemListener) { +menu.selected = (menu.btnType == 2 ? Jmol.$prop(menu.id + "-cb", "checked") : true); +if (dohide) +delayHide(menu, function() {menu.itemListener.itemStateChanged({getSource:function(){return menu}})}); +} else if (menu.actionListener) { +if (dohide) +delayHide(menu, function() {menu.actionListener.actionPerformed({getSource:function(){return menu},getActionCommand:function(){return menu.actionCommand}})}); +} +}); +Jmol.$documentOn('mouseup mouseover mousedown touchstart touchend mouseenter mouseleave', menu.id, function(event) { +if (menu.mouseListener && menu.mouseListener.handleEvent) { +menu.mouseListener.handleEvent({jqevent:event,getID:function(){return event.type},getSource:function(){return menu}}); +} +}); +} +} +})(Jmol.Swing); +})(Jmol.__$); +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.AbstractButton"], "JS.JMenuItem", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.btnType = 0; +Clazz_instantialize(this, arguments);}, JS, "JMenuItem", JS.AbstractButton); +Clazz_makeConstructor(c$, +function(text){ +Clazz_superConstructor(this, JS.JMenuItem, ["btn"]); +this.setText(text); +this.btnType = (text == null ? 0 : 1); +}, "~S"); +Clazz_makeConstructor(c$, +function(type, i){ +Clazz_superConstructor(this, JS.JMenuItem, [type]); +this.btnType = i; +}, "~S,~N"); +Clazz_overrideMethod(c$, "toHTML", +function(){ +return this.htmlMenuOpener("li") + (this.text == null ? "" : "" + this.htmlLabel() + "") + ""; +}); +Clazz_overrideMethod(c$, "getHtmlDisabled", +function(){ +return " class=\"ui-state-disabled\""; +}); +Clazz_defineMethod(c$, "htmlLabel", +function(){ +return (this.btnType == 1 ? this.text : ""); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JComponent"], "JS.JPanel", ["JU.SB", "JS.Grid", "$.GridBagConstraints"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.grid = null; +this.nElements = 0; +this.last = null; +Clazz_instantialize(this, arguments);}, JS, "JPanel", JS.JComponent); +Clazz_makeConstructor(c$, +function(manager){ +Clazz_superConstructor(this, JS.JPanel, ["JP"]); +this.grid = new JS.Grid(10, 10); +}, "JS.LayoutManager"); +Clazz_defineMethod(c$, "add", +function(btn, c){ +this.last = (++this.nElements == 1 ? btn : null); +if ((typeof(c)=='string')) { +if (c.equals("North")) c = new JS.GridBagConstraints(0, 0, 3, 1, 0, 0, 10, 0, null, 0, 0); + else if (c.equals("South")) c = new JS.GridBagConstraints(0, 2, 3, 1, 0, 0, 10, 0, null, 0, 0); + else if (c.equals("East")) c = new JS.GridBagConstraints(2, 1, 1, 1, 0, 0, 13, 0, null, 0, 0); + else if (c.equals("West")) c = new JS.GridBagConstraints(0, 1, 1, 1, 0, 0, 17, 0, null, 0, 0); + else c = new JS.GridBagConstraints(1, 1, 1, 1, 0, 0, 10, 0, null, 0, 0); +}this.grid.add(btn, c); +}, "JS.JComponent,~O"); +Clazz_overrideMethod(c$, "toHTML", +function(){ +if (this.last != null) { +this.grid = new JS.Grid(1, 1); +this.grid.add(this.last, new JS.GridBagConstraints(0, 0, 1, 1, 0, 0, 10, 0, null, 0, 0)); +this.last = null; +}var sb = new JU.SB(); +sb.append("\n
      \n"); +sb.append("\n"); +sb.append(this.grid.toHTML(this.id)); +sb.append(""); +sb.append("\n
      \n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.AbstractButton"], "JS.JPopupMenu", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tainted = true; +Clazz_instantialize(this, arguments);}, JS, "JPopupMenu", JS.AbstractButton); +Clazz_makeConstructor(c$, +function(name){ +Clazz_superConstructor(this, JS.JPopupMenu, ["mnu"]); +this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "setInvoker", +function(applet){ +this.applet = applet; +{ +SwingController.setMenu(this); +}}, "~O"); +Clazz_defineMethod(c$, "show", +function(applet, x, y){ +if (applet != null) this.tainted = true; +{ +SwingController.showMenu(this, x, y); +}}, "JS.Component,~N,~N"); +Clazz_defineMethod(c$, "disposeMenu", +function(){ +{ +SwingController.disposeMenu(this); +}}); +Clazz_overrideMethod(c$, "toHTML", +function(){ +return this.getMenuHTML(); +}); +{ +{ +SwingController.setDraggable(JS.JPopupMenu); +}}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JMenuItem"], "JS.JRadioButtonMenuItem", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isRadio = true; +Clazz_instantialize(this, arguments);}, JS, "JRadioButtonMenuItem", JS.JMenuItem); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JRadioButtonMenuItem, ["rad", 3]); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JComponent"], "JS.JScrollPane", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JS, "JScrollPane", JS.JComponent); +Clazz_makeConstructor(c$, +function(component){ +Clazz_superConstructor(this, JS.JScrollPane, ["JScP"]); +this.add(component); +}, "JS.JComponent"); +Clazz_defineMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append("\n
      \n"); +if (this.list != null) { +var c = this.list.get(0); +sb.append(c.toHTML()); +}sb.append("\n
      \n"); +return sb.toString(); +}); +Clazz_overrideMethod(c$, "setMinimumSize", +function(dimension){ +}, "JS.Dimension"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JComponent"], "JS.JSplitPane", ["JU.SB", "JS.JComponentImp"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isH = true; +this.split = 1; +this.right = null; +this.left = null; +Clazz_instantialize(this, arguments);}, JS, "JSplitPane", JS.JComponent); +Clazz_makeConstructor(c$, +function(split){ +Clazz_superConstructor(this, JS.JSplitPane, ["JSpP"]); +this.split = split; +this.isH = (split == 1); +}, "~N"); +Clazz_defineMethod(c$, "setRightComponent", +function(r){ +this.right = new JS.JComponentImp(null); +this.right.add(r); +}, "JS.JComponent"); +Clazz_defineMethod(c$, "setLeftComponent", +function(l){ +this.left = new JS.JComponentImp(null); +this.left.add(l); +}, "JS.JComponent"); +Clazz_defineMethod(c$, "getSubcomponentWidth", +function(){ +var w = this.width; +if (w == 0) { +var wleft = this.left.getSubcomponentWidth(); +var wright = this.right.getSubcomponentWidth(); +if (wleft > 0 && wright > 0) { +if (this.isH) w = wleft + wright; + else w = Math.max(wleft, wright); +}}return w; +}); +Clazz_defineMethod(c$, "getSubcomponentHeight", +function(){ +var h = this.height; +if (h == 0) { +var hleft = this.left.getSubcomponentHeight(); +var hright = this.right.getSubcomponentHeight(); +if (hleft > 0 && hright > 0) { +if (this.isH) h = Math.max(hleft, hright); + else h = hleft + hright; +}}return h; +}); +Clazz_defineMethod(c$, "toHTML", +function(){ +if (this.left == null || this.right == null) return ""; +var isH = (this.split == 1); +if (this.width == 0) this.width = this.getSubcomponentWidth(); +if (this.height == 0) this.height = this.getSubcomponentHeight(); +var sb = new JU.SB(); +sb.append("
      "); +if (isH) sb.append("
      "); + else sb.append("
      "); +sb.append(this.left.getComponents()[0].toHTML()); +if (isH) sb.append("
      "); + else sb.append("
      "); +sb.append(this.right.getComponents()[0].toHTML()); +sb.append("
      \n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.ColumnSelectionModel", "$.JComponent", "$.ListSelectionModel"], "JS.JTable", ["JU.BS", "$.SB"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tableModel = null; +this.bsSelectedCells = null; +this.bsSelectedRows = null; +this.rowSelectionAllowed = false; +this.cellSelectionEnabled = false; +this.selectionListener = null; +Clazz_instantialize(this, arguments);}, JS, "JTable", JS.JComponent, [JS.ListSelectionModel, JS.ColumnSelectionModel]); +Clazz_makeConstructor(c$, +function(tableModel){ +Clazz_superConstructor(this, JS.JTable, ["JT"]); +this.tableModel = tableModel; +this.bsSelectedCells = new JU.BS(); +this.bsSelectedRows = new JU.BS(); +}, "JS.AbstractTableModel"); +Clazz_overrideMethod(c$, "getSelectionModel", +function(){ +return this; +}); +Clazz_defineMethod(c$, "getColumnModel", +function(){ +return this; +}); +Clazz_defineMethod(c$, "setPreferredScrollableViewportSize", +function(dimension){ +this.width = dimension.width; +this.height = dimension.height; +}, "JS.Dimension"); +Clazz_defineMethod(c$, "clearSelection", +function(){ +this.bsSelectedCells.clearAll(); +this.bsSelectedRows.clearAll(); +}); +Clazz_defineMethod(c$, "setRowSelectionAllowed", +function(b){ +this.rowSelectionAllowed = b; +}, "~B"); +Clazz_defineMethod(c$, "setRowSelectionInterval", +function(i, j){ +this.bsSelectedRows.clearAll(); +this.bsSelectedRows.setBits(i, j); +this.bsSelectedCells.clearAll(); +}, "~N,~N"); +Clazz_defineMethod(c$, "setCellSelectionEnabled", +function(enabled){ +this.cellSelectionEnabled = enabled; +}, "~B"); +Clazz_overrideMethod(c$, "addListSelectionListener", +function(listener){ +this.selectionListener = listener; +}, "~O"); +Clazz_overrideMethod(c$, "getColumn", +function(i){ +return this.tableModel.getColumn(i); +}, "~N"); +Clazz_overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append("\n"); +this.tableModel.toHTML(sb, this.id, this.bsSelectedRows); +sb.append("\n
      \n"); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.JComponent"], "JS.JTextField", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JS, "JTextField", JS.JComponent); +Clazz_makeConstructor(c$, +function(value){ +Clazz_superConstructor(this, JS.JTextField, ["txtJT"]); +this.text = value; +}, "~S"); +Clazz_overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JS.Document", "$.JComponent"], "JS.JTextPane", ["JU.SB"], function(){ +var c$ = Clazz_declareType(JS, "JTextPane", JS.JComponent, JS.Document); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor(this, JS.JTextPane, ["txtJTP"]); +this.text = ""; +}); +Clazz_defineMethod(c$, "getDocument", +function(){ +return this; +}); +Clazz_overrideMethod(c$, "insertString", +function(i, s, object){ +i = Math.min(i, this.text.length); +this.text = this.text.substring(0, i) + s + this.text.substring(i); +}, "~N,~S,~O"); +Clazz_overrideMethod(c$, "toHTML", +function(){ +var sb = new JU.SB(); +sb.append(""); +return sb.toString(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_declareInterface(JS, "ListSelectionModel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +(function(){ +var c$ = Clazz_declareType(JS, "SwingConstants", null); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_declareInterface(JS, "TableCellRenderer"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_declareInterface(JS, "TableColumn"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coreswing.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coreswing.z.js new file mode 100755 index 000000000000..24915b391fb7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coreswing.z.js @@ -0,0 +1,108 @@ +(function(x,$,aa,ba,ca,fa,g,ga,k,n,m,ha,ia,l,ja,ka,la,ma,r,na,q,oa,v,pa,qa,ra,sa,O,ta,ua,F,va,wa,xa,ya,za,Aa,Ba,Ca,Da,Ea,Fa,Ga,Ha,Ia,Ja,Ka,La,Ma,Na,Oa,Pa,Qa,Ra,Sa,d,h){g("J.api");v(J.api,"SC");g("JS");k(["JS.LayoutManager"],"JS.BorderLayout",null,function(){r(JS,"BorderLayout",JS.LayoutManager)});g("JS");k(null,"JS.Component",["JU.CU"],function(){var b=m(function(){this._visible=!1;this.enabled=!0;this.name=this.text=null;this.height=this.width=0;this.bgcolor=this.mouseListener=this.parent=this.id= +null;this.minHeight=this.minWidth=30;this.renderHeight=this.renderWidth=0;n(this,arguments)},JS,"Component",null);l(b,function(a){this.id=JS.Component.newID(a);null!=a&&SwingController.register(this,a)},"~S");d(b,"setParent",function(a){this.parent=a},"~O");b.newID=d(b,"newID",function(a){return a+(""+Math.random()).substring(3,10)},"~S");d(b,"setBackground",function(a){this.bgcolor=a},"javajs.api.GenericColor");d(b,"setText",function(a){this.text=a;SwingController.setText(this)},"~S");d(b,"setName", +function(a){this.name=a},"~S");d(b,"getName",function(){return this.name});d(b,"getParent",function(){return this.parent});d(b,"setPreferredSize",function(a){this.width=a.width;this.height=a.height},"JS.Dimension");d(b,"addMouseListener",function(a){this.mouseListener=a},"~O");d(b,"getText",function(){return this.text});d(b,"isEnabled",function(){return this.enabled});d(b,"setEnabled",function(a){this.enabled=a;SwingController.setEnabled(this)},"~B");d(b,"isVisible",function(){return this._visible}); +d(b,"setVisible",function(a){this._visible=a;SwingController.setVisible(this)},"~B");d(b,"getHeight",function(){return this.height});d(b,"getWidth",function(){return this.width});d(b,"setMinimumSize",function(a){this.minWidth=a.width;this.minHeight=a.height},"JS.Dimension");d(b,"getSubcomponentWidth",function(){return this.width});d(b,"getSubcomponentHeight",function(){return this.height});d(b,"getCSSstyle",function(a,b){var d=0"+a+""+this.htmlMenuOpener("ul"),d=this.getComponentCount();if(0");return b});d(b,"htmlMenuOpener",function(a){return"<"+a+' id="'+this.id+'"'+(this.enabled?"":this.getHtmlDisabled())+">"},"~S");d(b,"getHtmlDisabled",function(){return' disabled="disabled"'})});g("JS");v(JS,"AbstractTableModel",JS.TableColumn); +g("JS");k(null,"JS.ButtonGroup",["JS.Component"],function(){var b=m(function(){this.id=null;this.count=0;n(this,arguments)},JS,"ButtonGroup",null);l(b,function(){this.id=JS.Component.newID("bg")});d(b,"add",function(a){this.count++;a.htmlName=this.id},"J.api.SC");d(b,"getButtonCount",function(){return this.count})});g("JS");x=m(function(){this.component=null;this.textAlign=this.rowspan=this.colspan=0;this.c=null;n(this,arguments)},JS,"Cell",null);l(x,function(b,a){this.component=b;this.colspan=a.gridwidth; +this.rowspan=a.gridheight;this.c=a},"JS.JComponent,JS.GridBagConstraints");d(x,"toHTML",function(b){var a=this.c.getStyle(!1);return"this.colspan?"":"colspan='"+this.colspan+"' ")+a+">"+this.component.toHTML()+""},"~S");g("JS");v(JS,"ColumnSelectionModel");g("JS");v(JS,"Document");g("JS");k(["JS.LayoutManager"],"JS.FlowLayout",null,function(){r(JS,"FlowLayout",JS.LayoutManager)});g("JS");k(null,"JS.Grid",["JU.AU","$.SB","JS.Cell"],function(){var b= +m(function(){this.ncols=this.nrows=0;this.renderer=this.grid=null;n(this,arguments)},JS,"Grid",null);l(b,function(){this.grid=O(0,0,null)},"~N,~N");d(b,"add",function(a,b){if(b.gridx>=this.ncols){this.ncols=b.gridx+1;for(var d=0;d=this.nrows){for(var g=Array(2*b.gridy+1),d=0;d=this.nrows;)g[d]=Array(2*this.ncols+1);this.grid=g;this.nrows=b.gridy+1}this.grid[b.gridy][b.gridx]= +new JS.Cell(a,b)},"JS.JComponent,JS.GridBagConstraints");d(b,"toHTML",function(a){var b=new JU.SB;a+="_grid";b.append("\n");for(var d=0;d");for(var h=0;h")}b.append("\n
      \n");return b.toString()}, +"~S")});g("JS");k(null,"JS.GridBagConstraints",["JS.Insets"],function(){var b=m(function(){this.fill=this.anchor=this.weighty=this.weightx=this.gridheight=this.gridwidth=this.gridy=this.gridx=0;this.insets=null;this.ipady=this.ipadx=0;n(this,arguments)},JS,"GridBagConstraints",null);l(b,function(a,b,d,g,h,k,l,q,n,f,m){this.gridx=a;this.gridy=b;this.gridwidth=d;this.gridheight=g;this.weightx=h;this.weighty=k;this.anchor=l;this.fill=q;null==n&&(n=new JS.Insets(0,0,0,0));this.insets=n;this.ipadx=f;this.ipady= +m},"~N,~N,~N,~N,~N,~N,~N,~N,JS.Insets,~N,~N");d(b,"getStyle",function(a){return"style='"+(a?"margin:"+this.insets.top+"px "+(this.ipady+this.insets.right)+"px "+this.insets.bottom+"px "+(this.ipadx+this.insets.left)+"px;":"text-align:"+(13==this.anchor?"right":17==this.anchor?"left":"center"))+"'"},"~B")});g("JS");k(["JS.LayoutManager"],"JS.GridBagLayout",null,function(){r(JS,"GridBagLayout",JS.LayoutManager)});g("JS");x=m(function(){this.right=this.bottom=this.left=this.top=0;n(this,arguments)}, +JS,"Insets",null);l(x,function(b,a,e,d){this.top=b;this.left=a;this.bottom=e;this.right=d},"~N,~N,~N,~N");g("JS");k(["JS.AbstractButton"],"JS.JButton",["JU.SB"],function(){var b=r(JS,"JButton",JS.AbstractButton);l(b,function(){q(this,JS.JButton,["btnJB"])});h(b,"toHTML",function(){var a=new JU.SB;a.append("");return a.toString()})});g("JS");k(["JS.AbstractButton"], +"JS.JCheckBox",null,function(){var b=r(JS,"JCheckBox",JS.AbstractButton);l(b,function(){q(this,JS.JCheckBox,["chkJCB"])});h(b,"toHTML",function(){return""})});g("JS");k(["JS.JMenuItem"],"JS.JCheckBoxMenuItem",null,function(){var b=r(JS,"JCheckBoxMenuItem",JS.JMenuItem);l(b,function(){q(this,JS.JCheckBoxMenuItem, +["chk",2])})});g("JS");k(["JS.AbstractButton"],"JS.JComboBox",["JU.SB"],function(){var b=m(function(){this.info=null;this.selectedIndex=0;n(this,arguments)},JS,"JComboBox",JS.AbstractButton);l(b,function(a){q(this,JS.JComboBox,["cmbJCB"]);this.info=a},"~A");d(b,"setSelectedIndex",function(a){this.selectedIndex=a;SwingController.setSelectedIndex(this)},"~N");d(b,"getSelectedIndex",function(){return this.selectedIndex});d(b,"getSelectedItem",function(){return 0>this.selectedIndex?null:this.info[this.selectedIndex]}); +h(b,"toHTML",function(){var a=new JU.SB;a.append("\n\n");return a.toString()})});g("JS");k(["JS.Container"],"JS.JComponent",null,function(){var b=m(function(){this.autoScrolls=!1;this.actionListener=this.actionCommand=null;n(this,arguments)},JS, +"JComponent",JS.Container);d(b,"setAutoscrolls",function(a){this.autoScrolls=a},"~B");d(b,"addActionListener",function(a){this.actionListener=a},"~O");d(b,"getActionCommand",function(){return this.actionCommand});d(b,"setActionCommand",function(a){this.actionCommand=a},"~S")});g("JS");k(["JS.JComponent"],"JS.JComponentImp",null,function(){var b=r(JS,"JComponentImp",JS.JComponent);h(b,"toHTML",function(){return null})});g("JS");k(["JS.JComponent"],"JS.JContentPane",["JU.SB"],function(){var b=r(JS, +"JContentPane",JS.JComponent);l(b,function(){q(this,JS.JContentPane,["JCP"])});d(b,"toHTML",function(){var a=new JU.SB;a.append("\n
      \n");if(null!=this.list)for(var b=0;b\n");return a.toString()})});g("JS");k(["JS.Container"],"JS.JDialog",["JU.SB","JS.Color","$.JContentPane"],function(){var b=m(function(){this.defaultWidth=600;this.defaultHeight= +300;this.html=this.title=this.contentPane=null;this.zIndex=9E3;this.loc=null;n(this,arguments)},JS,"JDialog",JS.Container);l(b,function(){q(this,JS.JDialog,["JD"]);this.add(this.contentPane=new JS.JContentPane);this.setBackground(JS.Color.get3(210,210,240));this.contentPane.setBackground(JS.Color.get3(230,230,230))});d(b,"setZIndex",function(a){this.zIndex=a},"~N");d(b,"setLocation",function(a){this.loc=a},"~A");d(b,"getContentPane",function(){return this.contentPane});d(b,"setTitle",function(a){this.title= +a},"~S");d(b,"pack",function(){this.html=null});d(b,"validate",function(){this.html=null});d(b,"setVisible",function(a){a&&null==this.html&&this.setDialog();F(this,JS.JDialog,"setVisible",[a]);a&&this.toFront()},"~B");d(b,"dispose",function(){SwingController.dispose(this)});h(b,"repaint",function(){this.setDialog()});d(b,"setDialog",function(){this.html=this.toHTML();SwingController.setDialog(this)});h(b,"toHTML",function(){this.renderWidth=Math.max(this.width,this.getSubcomponentWidth());0==this.renderWidth&& +(this.renderWidth=this.defaultWidth);this.renderHeight=Math.max(this.height,this.contentPane.getSubcomponentHeight());0==this.renderHeight&&(this.renderHeight=this.defaultHeight);var a=this.renderHeight-25,b=new JU.SB;b.append("\n
      \n");b.append("\n
      "+ +this.title+"
      \n");b.append("\n
      \n");b.append(this.contentPane.toHTML());b.append("\n
      \n");return b.toString()});d(b,"toFront",function(){SwingController.setFront(this)})});g("JS");k(["JS.JComponent"], +"JS.JEditorPane",["JU.SB"],function(){var b=r(JS,"JEditorPane",JS.JComponent);l(b,function(){q(this,JS.JEditorPane,["txtJEP"]);this.text=""});h(b,"toHTML",function(){var a=new JU.SB;a.append("");return a.toString()})});g("JS");k(["JS.JComponent"],"JS.JLabel",["JU.SB"],function(){var b=r(JS,"JLabel",JS.JComponent);l(b,function(a){q(this,JS.JLabel,["lblJL"]);this.text=a},"~S");h(b,"toHTML", +function(){var a=new JU.SB;a.append("");a.append(this.text);a.append("");return a.toString()})});g("JS");k(["JS.JMenuItem"],"JS.JMenu",null,function(){var b=r(JS,"JMenu",JS.JMenuItem);l(b,function(){q(this,JS.JMenu,["mnu",4])});d(b,"getItemCount",function(){return this.getComponentCount()});d(b,"getItem",function(c){return this.getComponent(c)},"~N");h(b,"getPopupMenu",function(){return this});h(b,"toHTML",function(){return this.getMenuHTML()}); +var a=Jmol.__$;if(!a.ui)try{var e=a,g=function(c,a){var b,j,d,u=c.nodeName.toLowerCase();return"area"===u?(b=c.parentNode,j=b.name,!c.href||!j||"map"!==b.nodeName.toLowerCase()?!1:(d=e("img[usemap=#"+j+"]")[0],!!d&&k(d))):(/input|select|textarea|button|object/.test(u)?!c.disabled:"a"===u?c.href||a:a)&&k(c)},k=function(c){return e.expr.filters.visible(c)&&!e(c).parents().andSelf().filter(function(){return"hidden"===e.css(this,"visibility")}).length},n=0,m=/^ui-id-\d+$/;e.ui=e.ui||{};if(!e.ui.version){e.extend(e.ui, +{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}});e.fn.extend({_focus:e.fn.focus,focus:function(c,a){return"number"==typeof c?this.each(function(){var b=this;setTimeout(function(){e(b).focus();a&&a.call(b)},c)}):this._focus.apply(this,arguments)},scrollParent:function(){var c; +return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?c=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):c=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!c.length?e(document): +c},zIndex:function(c){if(void 0!==c)return this.css("zIndex",c);if(this.length){c=e(this[0]);for(var a;c.length&&c[0]!==document;){a=c.css("position");if("absolute"===a||"relative"===a||"fixed"===a)if(a=parseInt(c.css("zIndex"),10),!isNaN(a)&&0!==a)return a;c=c.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){m.test(this.id)&&e(this).removeAttr("id")})}});e.extend(e.expr[":"],{data:e.expr.createPseudo? +e.expr.createPseudo(function(c){return function(a){return!!e.data(a,c)}}):function(c,a,b){return!!e.data(c,b[3])},focusable:function(c){return g(c,!isNaN(e.attr(c,"tabindex")))},tabbable:function(c){var a=e.attr(c,"tabindex"),b=isNaN(a);return(b||0<=a)&&g(c,!b)}});e(function(){var c=document.body,a=c.appendChild(a=document.createElement("div"));a.offsetHeight;e.extend(a.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});e.support.minHeight=100===a.offsetHeight;e.support.selectstart= +"onselectstart"in a;c.removeChild(a).style.display="none"});e("").outerWidth(1).jquery||e.each(["Width","Height"],function(c,a){function b(c,a,w,A){return e.each(j,function(){a-=parseFloat(e.css(c,"padding"+this))||0;w&&(a-=parseFloat(e.css(c,"border"+this+"Width"))||0);A&&(a-=parseFloat(e.css(c,"margin"+this))||0)}),a}var j="Width"===a?["Left","Right"]:["Top","Bottom"],d=a.toLowerCase(),u={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight}; +e.fn["inner"+a]=function(c){return void 0===c?u["inner"+a].call(this):this.each(function(){e(this).css(d,b(this,c)+"px")})};e.fn["outer"+a]=function(c,j){return"number"!=typeof c?u["outer"+a].call(this,c):this.each(function(){e(this).css(d,b(this,c,!0,j)+"px")})}});if(e("").data("a-b","a").removeData("a-b").data("a-b")){var v=e.fn.removeData;e.fn.removeData=function(c){return arguments.length?v.call(this,e.camelCase(c)):v.call(this)}}var x=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())|| +[];e.ui.ie=x.length?!0:!1;e.ui.ie6=6===parseFloat(x[1],10);e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(c){c.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});e.extend(e.ui,{plugin:{add:function(c,a,b){var j;c=e.ui[c].prototype;for(j in b)c.plugins[j]=c.plugins[j]||[],c.plugins[j].push([a,b[j]])},call:function(c,a,b){var j=c.plugins[a];if(j&&c.element[0].parentNode&& +11!==c.element[0].parentNode.nodeType)for(a=0;aa&&c",options:{disabled:!1,create:null},_createWidget:function(c,a){a=f(a||this.defaultElement||this)[0];this.element=f(a);this.uuid=F++;this.eventNamespace="."+this.widgetName+this.uuid;this.options=f.widget.extend({},this.options, +this._getCreateOptions(),c);this.bindings=f();this.hoverable=f();this.focusable=f();a!==this&&(f.data(a,this.widgetName,this),f.data(a,this.widgetFullName,this),this._on(!0,this.element,{remove:function(c){c.target===a&&this.destroy()}}),this.document=f(a.style?a.ownerDocument:a.document||a),this.window=f(this.document[0].defaultView||this.document[0].parentWindow));this._create();this._trigger("create",null,this._getCreateEventData());this._init()},_getCreateOptions:f.noop,_getCreateEventData:f.noop, +_create:f.noop,_init:f.noop,destroy:function(){this._destroy();this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(f.camelCase(this.widgetFullName));this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled ui-state-disabled");this.bindings.unbind(this.eventNamespace);this.hoverable.removeClass("ui-state-hover");this.focusable.removeClass("ui-state-focus")},_destroy:f.noop,widget:function(){return this.element}, +option:function(c,a){var b=c,j,d,e;if(0===arguments.length)return f.widget.extend({},this.options);if("string"==typeof c)if(b={},j=c.split("."),c=j.shift(),j.length){d=b[c]=f.widget.extend({},this.options[c]);for(e=0;e=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}catch(aa){System.out.println("coremenu failed to load jQuery.ui.mouse -- jQuery version conflict?")}if(!a.ui.position)try{var S= +function(c,a,b){return[parseInt(c[0],10)*(R.test(c[0])?a/100:1),parseInt(c[1],10)*(R.test(c[1])?b/100:1)]};a.ui=a.ui||{};var H,D=Math.max,y=Math.abs,T=Math.round,U=/left|center|right/,V=/top|center|bottom/,W=/[\+\-]\d+%?/,X=/^\w+/,R=/%$/,ea=a.fn.position;a.position={scrollbarWidth:function(){if(void 0!==H)return H;var c,b,d=a("
      "),e=d.children()[0];return a("body").append(d),c=e.offsetWidth, +d.css("overflow","scroll"),b=e.offsetWidth,c===b&&(b=d[0].clientWidth),d.remove(),H=c-b},getScrollInfo:function(c){var b=c.isWindow?"":c.element.css("overflow-x"),d=c.isWindow?"":c.element.css("overflow-y"),d="scroll"===d||"auto"===d&&c.heightw?"left":0h?"top":0D(y(f),y(h))?u.important="horizontal":u.important="vertical";c.using.call(this,a,u)});m.offset(a.extend(t,{using:q}))})}; +a.ui.position={fit:{left:function(c,a){var b=a.within,d=b.isWindow?b.scrollLeft:b.offset.left,b=b.width,e=c.left-a.collisionPosition.marginLeft,f=d-e,g=e+a.collisionWidth-b-d,h;a.collisionWidth>b?0=g?(h=c.left+f+a.collisionWidth-b-d,c.left+=f-h):0=f?c.left=d:f>g?c.left=d+b-a.collisionWidth:c.left=d:0d?0=g?(h=c.top+f+a.collisionHeight-d-b,c.top+=f-h):0=f?c.top=b:f>g?c.top=b+d-a.collisionHeight:c.top=b:0b){if(d=c.left+g+k+l+a.collisionWidth-e-d,0>d||dg?(n=c.top+h+k+l+a.collisionHeight-e-d,c.top+h+k+l>g&&(0>n||nf&&(0I;B.innerHTML="";z.removeChild(B);if(!1!==a.uiBackCompat){var Y=a.fn.position; +a.fn.position=function(c){if(!c||!c.offset)return Y.call(this,c);var b=c.offset.split(" "),d=c.at.split(" ");return 1===b.length&&(b[1]=b[0]),/^\d/.test(b[0])&&(b[0]="+"+b[0]),/^\d/.test(b[1])&&(b[1]="+"+b[1]),1===d.length&&(/left|center|right/.test(d[0])?d[1]="center":(d[1]=d[0],d[0]="center")),Y.call(this,a.extend(c,{at:d[0]+b[0]+" "+d[1]+b[1],offset:void 0}))}}}catch(ba){System.out.println("coremenu failed to load jQuery.ui.position -- jQuery version conflict?")}if(!a.ui.menu)try{var N=!1;a.widget("ui.menu", +{version:"1.9.2",defaultElement:"
        ",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element;this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,a.proxy(function(a){this.options.disabled&& +a.preventDefault()},this));this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true");this._on({"mousedown .ui-menu-item > a":function(a){a.preventDefault()},"click .ui-state-disabled > a":function(a){a.preventDefault()},"click .ui-menu-item:has(a)":function(c){var b=a(c.target).closest(".ui-menu-item");!N&&b.not(".ui-state-disabled").length&&(N=!0,this.select(c),b.has(".ui-menu").length?this.expand(c):this.element.is(":focus")||(this.element.trigger("focus",[!0]), +this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(c){var b=a(c.currentTarget);b.siblings().children(".ui-state-active").removeClass("ui-state-active");this.focus(c,b)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(a,b){var d=this.active||this.element.children(".ui-menu-item").eq(0);b||this.focus(a,d)},blur:function(c){this._delay(function(){a.contains(this.element[0],this.document[0].activeElement)|| +this.collapseAll(c)})},keydown:"_keydown"});this.refresh();this._on(this.document,{click:function(c){a(c.target).closest(".ui-menu").length||this.collapseAll(c);N=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(); +this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var c=a(this);c.data("ui-menu-submenu-carat")&&c.remove()});this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(c){function b(a){return a.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, +"\\$&")}var d,e,f,g,h=!0;switch(c.keyCode){case a.ui.keyCode.PAGE_UP:this.previousPage(c);break;case a.ui.keyCode.PAGE_DOWN:this.nextPage(c);break;case a.ui.keyCode.HOME:this._move("first","first",c);break;case a.ui.keyCode.END:this._move("last","last",c);break;case a.ui.keyCode.UP:this.previous(c);break;case a.ui.keyCode.DOWN:this.next(c);break;case a.ui.keyCode.LEFT:this.collapse(c);break;case a.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(c);break;case a.ui.keyCode.ENTER:case a.ui.keyCode.SPACE:this._activate(c); +break;case a.ui.keyCode.ESCAPE:this.collapse(c);break;default:h=!1,d=this.previousFilter||"",e=String.fromCharCode(c.keyCode),f=!1,clearTimeout(this.filterTimer),e===d?f=!0:e=d+e,g=RegExp("^"+b(e),"i"),d=this.activeMenu.children(".ui-menu-item").filter(function(){return g.test(a(this).children("a").text())}),d=f&&-1!==d.index(this.active.next())?this.active.nextAll(".ui-menu-item"):d,d.length||(e=String.fromCharCode(c.keyCode),g=RegExp("^"+b(e),"i"),d=this.activeMenu.children(".ui-menu-item").filter(function(){return g.test(a(this).children("a").text())})), +d.length?(this.focus(c,d),1").addClass("ui-menu-icon ui-icon "+b).data("ui-menu-submenu-carat",!0);d.attr("aria-haspopup","true").prepend(e);c.attr("aria-labelledby",d.attr("id"))});c=c.add(this.element);c.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()});c.children(":not(.ui-menu-item)").each(function(){var c= +a(this);/[^\-+\ufffdG\ufffd\ufffdG\ufffd\ufffd+\ufffdG\ufffd\ufffdG\ufffd\ufffd\s]/.test(c.text())||c.addClass("ui-widget-content ui-menu-divider")});c.children(".ui-state-disabled").attr("aria-disabled","true");this.active&&!a.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(a,b){var d;this.blur(a,a&&"focus"===a.type);this._scrollIntoView(b);this.active=b.first();d=this.active.children("a").addClass("ui-state-focus"); +this.options.role&&this.element.attr("aria-activedescendant",d.attr("id"));this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active");a&&"keydown"===a.type?this._close():this.timer=this._delay(function(){this._close()},this.delay);d=b.children(".ui-menu");d.length&&/^mouse/.test(a.type)&&this._startOpening(d);this.activeMenu=b.parent();this._trigger("focus",a,{item:b})},_scrollIntoView:function(c){var b,d,e,f,g,h;this._hasScroll()&&(b=parseFloat(a.css(this.activeMenu[0], +"borderTopWidth"))||0,d=parseFloat(a.css(this.activeMenu[0],"paddingTop"))||0,e=c.offset().top-this.activeMenu.offset().top-b-d,f=this.activeMenu.scrollTop(),g=this.activeMenu.height(),h=c.height(),0>e?this.activeMenu.scrollTop(f+e):e+h>g&&this.activeMenu.scrollTop(f+e-g+h))},blur:function(a,b){b||clearTimeout(this.timer);this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",a,{item:this.active}))},_startOpening:function(a){a.hasClass("ui-state-disabled")|| +(clearTimeout(this.timer),"true"===a.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close();this._open(a)},this.delay)))},_open:function(c){var b=a.extend({of:this.active},this.options.position);clearTimeout(this.timer);this.element.find(".ui-menu").not(c.parents(".ui-menu")).hide().attr("aria-hidden","true");c.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(b)},collapseAll:function(c,b){clearTimeout(this.timer);this.timer=this._delay(function(){var d=b?this.element: +a(c&&c.target).closest(this.element.find(".ui-menu"));d.length||(d=this.element);this._close(d);this.blur(c);this.activeMenu=d},this.delay)},_close:function(a){a||(a=this.active?this.active.parent():this.element);a.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(a){var b=this.active&&this.active.parent().closest(".ui-menu-item",this.element);b&&b.length&&(this._close(),this.focus(a,b))}, +expand:function(a){var b=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();b&&b.length&&(this._open(b.parent()),this._delay(function(){this.focus(a,b)}))},next:function(a){this._move("next","first",a)},previous:function(a){this._move("prev","last",a)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(a,b,d){var e;this.active&& +("first"===a||"last"===a?e=this.active["first"===a?"prevAll":"nextAll"](".ui-menu-item").eq(-1):e=this.active[a+"All"](".ui-menu-item").eq(0));if(!e||!e.length||!this.active)e=this.activeMenu.children(".ui-menu-item")[b]();this.focus(d,e)},nextPage:function(c){var b,d,e;this.active?this.isLastItem()||(this._hasScroll()?(d=this.active.offset().top,e=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return b=a(this),0>b.offset().top-d-e}),this.focus(c,b)):this.focus(c,this.activeMenu.children(".ui-menu-item")[this.active? +"last":"first"]())):this.next(c)},previousPage:function(c){var b,d,e;this.active?this.isFirstItem()||(this._hasScroll()?(d=this.active.offset().top,e=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return b=a(this),0"+p.__getMenuStyle(a.applet)+"");p.__getStyle=null;a.tainted=!0;a.popupMenu=a;a.id="top";a.id=p.getMenuID(a);a.applet._menus||(a.applet._menus={});a.applet._menus[a.name]=a;Jmol.$after("body",'
          ');a.setContainer(Jmol.$("#"+a.id))};p.showMenu=function(a,b,d){Jmol._showMenuCallback&&Jmol._showMenuCallback(a,b,d);a.tainted&&(a.container.html(a.toHTML()),a.tainted=!1,p.bindMenuActionCommands(a, +!0));a.setPosition();a.container.hide().menu().menu("refresh").show();a._visible=!0;a.timestamp=System.currentTimeMillis();a.dragBind(!0);a.container.unbind("clickoutjsmol");Jmol._persistentMenu||a.container.bind("clickoutjsmol mousemoveoutjsmol",function(){1E3')};p.getMenuID=function(a){var b=a.popupMenu;return b.applet._id+"_"+b.name+"_"+a.id+"_"+ ++p.menuCounter};p.hideMenu=function(a){a._visible&&(a.dragBind(!1),a.container.hide(),a._visible=a.isDragging=!1)};var Z=function(a,b){setTimeout(function(){p.hideMenus(a.applet);b()},500)};p.bindMenuActionCommands=function(a,b){for(var d=a.getComponentCount(), +e=0;eb.indexOf("Persist")||0<=b.indexOf("!Persist");a.itemListener?(a.selected=2==a.btnType?Jmol.$prop(a.id+"-cb","checked"):!0,b&&Z(a,function(){a.itemListener.itemStateChanged({getSource:function(){return a}})})):a.actionListener&&b&&Z(a,function(){a.actionListener.actionPerformed({getSource:function(){return a}, +getActionCommand:function(){return a.actionCommand}})})}),Jmol.$documentOn("mouseup mouseover mousedown touchstart touchend mouseenter mouseleave",a.id,function(b){a.mouseListener&&a.mouseListener.handleEvent&&a.mouseListener.handleEvent({jqevent:b,getID:function(){return b.type},getSource:function(){return a}})}))}}});g("JS");k(["JS.AbstractButton"],"JS.JMenuItem",null,function(){var b=m(function(){this.btnType=0;n(this,arguments)},JS,"JMenuItem",JS.AbstractButton);l(b,function(a){q(this,JS.JMenuItem, +["btn"]);this.setText(a);this.btnType=null==a?0:1},"~S");l(b,function(a,b){q(this,JS.JMenuItem,[a]);this.btnType=b},"~S,~N");h(b,"toHTML",function(){return this.htmlMenuOpener("li")+(null==this.text?"":"
          "+this.htmlLabel()+"")+""});h(b,"getHtmlDisabled",function(){return' class="ui-state-disabled"'});d(b,"htmlLabel",function(){return 1==this.btnType?this.text:'"})});g("JS");k(["JS.JComponent"],"JS.JPanel",["JU.SB","JS.Grid","$.GridBagConstraints"],function(){var b=m(function(){this.grid=null;this.nElements=0;this.last=null;n(this,arguments)},JS,"JPanel",JS.JComponent);l(b,function(){q(this,JS.JPanel,["JP"]);this.grid=new JS.Grid(10,10)},"JS.LayoutManager");d(b,"add",function(a,b){this.last=1==++this.nElements?a:null;"string"==typeof b&&(b=b.equals("North")?new JS.GridBagConstraints(0,0,3,1,0,0, +10,0,null,0,0):b.equals("South")?new JS.GridBagConstraints(0,2,3,1,0,0,10,0,null,0,0):b.equals("East")?new JS.GridBagConstraints(2,1,1,1,0,0,13,0,null,0,0):b.equals("West")?new JS.GridBagConstraints(0,1,1,1,0,0,17,0,null,0,0):new JS.GridBagConstraints(1,1,1,1,0,0,10,0,null,0,0));this.grid.add(a,b)},"JS.JComponent,~O");h(b,"toHTML",function(){null!=this.last&&(this.grid=new JS.Grid(1,1),this.grid.add(this.last,new JS.GridBagConstraints(0,0,1,1,0,0,10,0,null,0,0)),this.last=null);var a=new JU.SB;a.append("\n
          \n");a.append("\n");a.append(this.grid.toHTML(this.id));a.append("");a.append("\n
          \n");return a.toString()})});g("JS");k(["JS.AbstractButton"],"JS.JPopupMenu",null,function(){var b=m(function(){this.tainted=!0;n(this,arguments)},JS,"JPopupMenu",JS.AbstractButton);l(b,function(a){q(this,JS.JPopupMenu,["mnu"]);this.name=a},"~S"); +d(b,"setInvoker",function(a){this.applet=a;SwingController.setMenu(this)},"~O");d(b,"show",function(a,b,d){null!=a&&(this.tainted=!0);SwingController.showMenu(this,b,d)},"JS.Component,~N,~N");d(b,"disposeMenu",function(){SwingController.disposeMenu(this)});h(b,"toHTML",function(){return this.getMenuHTML()});SwingController.setDraggable(JS.JPopupMenu)});g("JS");k(["JS.JMenuItem"],"JS.JRadioButtonMenuItem",null,function(){var b=m(function(){this.isRadio=!0;n(this,arguments)},JS,"JRadioButtonMenuItem", +JS.JMenuItem);l(b,function(){q(this,JS.JRadioButtonMenuItem,["rad",3])})});g("JS");k(["JS.JComponent"],"JS.JScrollPane",["JU.SB"],function(){var b=r(JS,"JScrollPane",JS.JComponent);l(b,function(a){q(this,JS.JScrollPane,["JScP"]);this.add(a)},"JS.JComponent");d(b,"toHTML",function(){var a=new JU.SB;a.append("\n
          \n");if(null!=this.list){var b=this.list.get(0);a.append(b.toHTML())}a.append("\n
          \n");return a.toString()}); +h(b,"setMinimumSize",function(){},"JS.Dimension")});g("JS");k(["JS.JComponent"],"JS.JSplitPane",["JU.SB","JS.JComponentImp"],function(){var b=m(function(){this.isH=!0;this.split=1;this.left=this.right=null;n(this,arguments)},JS,"JSplitPane",JS.JComponent);l(b,function(a){q(this,JS.JSplitPane,["JSpP"]);this.split=a;this.isH=1==a},"~N");d(b,"setRightComponent",function(a){this.right=new JS.JComponentImp(null);this.right.add(a)},"JS.JComponent");d(b,"setLeftComponent",function(a){this.left=new JS.JComponentImp(null); +this.left.add(a)},"JS.JComponent");d(b,"getSubcomponentWidth",function(){var a=this.width;if(0==a){var b=this.left.getSubcomponentWidth(),d=this.right.getSubcomponentWidth();0");a?b.append("
          "):b.append("
          ");b.append(this.left.getComponents()[0].toHTML());a?b.append("
          "):b.append("
          ");b.append(this.right.getComponents()[0].toHTML());b.append("
          \n");return b.toString()})});g("JS");k(["JS.ColumnSelectionModel","$.JComponent","$.ListSelectionModel"],"JS.JTable",["JU.BS","$.SB"],function(){var b=m(function(){this.bsSelectedRows=this.bsSelectedCells=this.tableModel=null;this.cellSelectionEnabled= +this.rowSelectionAllowed=!1;this.selectionListener=null;n(this,arguments)},JS,"JTable",JS.JComponent,[JS.ListSelectionModel,JS.ColumnSelectionModel]);l(b,function(a){q(this,JS.JTable,["JT"]);this.tableModel=a;this.bsSelectedCells=new JU.BS;this.bsSelectedRows=new JU.BS},"JS.AbstractTableModel");h(b,"getSelectionModel",function(){return this});d(b,"getColumnModel",function(){return this});d(b,"setPreferredScrollableViewportSize",function(a){this.width=a.width;this.height=a.height},"JS.Dimension"); +d(b,"clearSelection",function(){this.bsSelectedCells.clearAll();this.bsSelectedRows.clearAll()});d(b,"setRowSelectionAllowed",function(a){this.rowSelectionAllowed=a},"~B");d(b,"setRowSelectionInterval",function(a,b){this.bsSelectedRows.clearAll();this.bsSelectedRows.setBits(a,b);this.bsSelectedCells.clearAll()},"~N,~N");d(b,"setCellSelectionEnabled",function(a){this.cellSelectionEnabled=a},"~B");h(b,"addListSelectionListener",function(a){this.selectionListener=a},"~O");h(b,"getColumn",function(a){return this.tableModel.getColumn(a)}, +"~N");h(b,"toHTML",function(){var a=new JU.SB;a.append("\n");this.tableModel.toHTML(a,this.id,this.bsSelectedRows);a.append("\n
          \n");return a.toString()})});g("JS");k(["JS.JComponent"],"JS.JTextField",["JU.SB"],function(){var b=r(JS,"JTextField",JS.JComponent);l(b,function(a){q(this,JS.JTextField,["txtJT"]);this.text=a},"~S");h(b,"toHTML",function(){var a=new JU.SB;a.append("");return a.toString()})});g("JS");k(["JS.Document","$.JComponent"],"JS.JTextPane",["JU.SB"],function(){var b=r(JS,"JTextPane",JS.JComponent,JS.Document);l(b,function(){q(this,JS.JTextPane,["txtJTP"]);this.text=""});d(b,"getDocument",function(){return this});h(b,"insertString",function(a,b){a=Math.min(a,this.text.length);this.text=this.text.substring(0,a)+b+this.text.substring(a)},"~N,~S,~O");h(b,"toHTML",function(){var a=new JU.SB; +a.append("");return a.toString()})});g("JS");v(JS,"ListSelectionModel");g("JS");r(JS,"SwingConstants",null);g("JS");v(JS,"TableCellRenderer");g("JS");v(JS,"TableColumn")})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong, +Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coresym.js b/config/plugins/visualizations/jmol/static/j2s/core/coresym.js new file mode 100755 index 000000000000..0d88fcc757bc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coresym.js @@ -0,0 +1,8356 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("J.adapter.smarter"); +Clazz_load(["JS.Symmetry", "JU.P3", "$.SB"], "J.adapter.smarter.XtalSymmetry", ["java.util.Hashtable", "JU.BS", "$.Lst", "$.M3", "$.M4", "$.P3i", "$.PT", "$.V3", "J.adapter.smarter.Atom", "JS.SpaceGroup", "$.SymmetryOperation", "$.UnitCell", "JU.BSUtil", "$.Logger", "$.SimpleUnitCell"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.acr = null; +this.applySymmetryToBonds = false; +this.asc = null; +this.baseSymmetry = null; +this.bondCount0 = 0; +this.bondsFound = null; +this.centroidPacked = false; +this.checkAll = false; +this.checkNearAtoms = false; +this.crystalReaderLatticeOpsOnly = false; +this.disorderMap = null; +this.disorderMapMax = 0; +this.doCentroidUnitCell = false; +this.doNormalize = true; +this.doPackUnitCell = false; +this.filterSymop = null; +this.firstAtom = 0; +this.latticeCells = null; +this.latticeOp = 0; +this.mident = null; +this.minXYZ = null; +this.maxXYZ = null; +this.minXYZ0 = null; +this.maxXYZ0 = null; +this.mTemp = null; +this.ndims = 3; +this.noSymmetryCount = 0; +this.nVib = 0; +this.packingRange = 0; +this.ptOffset = null; +this.ptTemp = null; +this.rminx = 0; +this.rminy = 0; +this.rminz = 0; +this.rmaxx = 0; +this.rmaxy = 0; +this.rmaxz = 0; +this.symmetry = null; +this.symmetryRange = 0; +this.trajectoryUnitCells = null; +this.unitCellParams = null; +this.unitCellTranslations = null; +Clazz_instantialize(this, arguments);}, J.adapter.smarter, "XtalSymmetry", null); +Clazz_prepareFields (c$, function(){ +this.bondsFound = new JU.SB(); +this.ptOffset = new JU.P3(); +}); +Clazz_makeConstructor(c$, +function(){ +}); +Clazz_defineMethod(c$, "addRotatedTensor", +function(a, t, iSym, reset, symmetry){ +if (this.ptTemp == null) { +this.ptTemp = new JU.P3(); +this.mTemp = new JU.M3(); +}return a.addTensor((this.acr.getInterface("JU.Tensor")).setFromEigenVectors(symmetry.rotateAxes(iSym, t.eigenVectors, this.ptTemp, this.mTemp), t.eigenValues, t.isIsotropic ? "iso" : t.type, t.id, t), null, reset); +}, "J.adapter.smarter.Atom,JU.Tensor,~N,~B,J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "applySymmetryBio", +function(thisBiomolecule, applySymmetryToBonds, filter){ +var biomts = thisBiomolecule.get("biomts"); +var len = biomts.size(); +if (this.mident == null) { +this.mident = new JU.M4(); +this.mident.setIdentity(); +}this.acr.lstNCS = null; +this.setLatticeCells(); +var lc = (this.latticeCells != null && this.latticeCells[0] != 0 ? Clazz_newIntArray (3, 0) : null); +if (lc != null) for (var i = 0; i < 3; i++) lc[i] = this.latticeCells[i]; + +this.latticeCells = null; +var bmChains = this.acr.getFilterWithCase("BMCHAINS"); +var fixBMChains = (bmChains == null ? -1 : bmChains.length < 2 ? 0 : JU.PT.parseInt(bmChains.substring(1))); +if (fixBMChains == -2147483648) { +fixBMChains = -(bmChains.charAt(1)).charCodeAt(0); +}var particleMode = (filter.indexOf("BYCHAIN") >= 0 ? 1 : filter.indexOf("BYSYMOP") >= 0 ? 2 : 0); +this.doNormalize = false; +var biomtchains = thisBiomolecule.get("chains"); +(this.symmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry()).setSpaceGroup(this.doNormalize); +this.addSpaceGroupOperation("x,y,z", false); +var name = thisBiomolecule.get("name"); +this.setAtomSetSpaceGroupName(this.acr.sgName = name); +this.applySymmetryToBonds = applySymmetryToBonds; +this.bondCount0 = this.asc.bondCount; +this.firstAtom = this.asc.getLastAtomSetAtomIndex(); +var atomMax = this.asc.ac; +var ht = new java.util.Hashtable(); +var nChain = 0; +var atoms = this.asc.atoms; +var addBonds = (this.bondCount0 > this.asc.bondIndex0 && applySymmetryToBonds); +switch (particleMode) { +case 1: +for (var i = atomMax; --i >= this.firstAtom; ) { +var id = Integer.$valueOf(atoms[i].chainID); +var bs = ht.get(id); +if (bs == null) { +nChain++; +ht.put(id, bs = new JU.BS()); +}bs.set(i); +} +this.asc.bsAtoms = new JU.BS(); +for (var i = 0; i < nChain; i++) { +this.asc.bsAtoms.set(atomMax + i); +var a = new J.adapter.smarter.Atom(); +a.set(0, 0, 0); +a.radius = 16; +this.asc.addAtom(a); +} +var ichain = 0; +for (var e, $e = ht.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var a = atoms[atomMax + ichain++]; +var bs = e.getValue(); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) a.add(atoms[i]); + +a.scale(1 / bs.cardinality()); +a.atomName = "Pt" + ichain; +a.chainID = e.getKey().intValue(); +} +this.firstAtom = atomMax; +atomMax += nChain; +addBonds = false; +break; +case 2: +this.asc.bsAtoms = new JU.BS(); +this.asc.bsAtoms.set(atomMax); +var a = atoms[atomMax] = new J.adapter.smarter.Atom(); +a.set(0, 0, 0); +for (var i = atomMax; --i >= this.firstAtom; ) a.add(atoms[i]); + +a.scale(1 / (atomMax - this.firstAtom)); +a.atomName = "Pt"; +a.radius = 16; +this.asc.addAtom(a); +this.firstAtom = atomMax++; +addBonds = false; +break; +} +var assemblyIdAtoms = thisBiomolecule.get("asemblyIdAtoms"); +if (filter.indexOf("#<") >= 0) { +len = Math.min(len, JU.PT.parseInt(filter.substring(filter.indexOf("#<") + 2)) - 1); +filter = JU.PT.rep(filter, "#<", "_<"); +}var maxChain = 0; +for (var iAtom = this.firstAtom; iAtom < atomMax; iAtom++) { +atoms[iAtom].bsSymmetry = new JU.BS(); +var chainID = atoms[iAtom].chainID; +if (chainID > maxChain) maxChain = chainID; +} +var bsAtoms = this.asc.bsAtoms; +var atomMap = (addBonds ? Clazz_newIntArray (this.asc.ac, 0) : null); +for (var imt = (biomtchains == null ? 1 : 0); imt < len; imt++) { +if (filter.indexOf("!#") >= 0) { +if (filter.indexOf("!#" + (imt + 1) + ";") >= 0) continue; +} else if (filter.indexOf("#") >= 0 && filter.indexOf("#" + (imt + 1) + ";") < 0) { +continue; +}var mat = biomts.get(imt); +var notIdentity = !mat.equals(this.mident); +var chains = (biomtchains == null ? null : biomtchains.get(imt)); +if (chains != null && assemblyIdAtoms != null) { +bsAtoms = new JU.BS(); +for (var e, $e = assemblyIdAtoms.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) if (chains.indexOf(":" + e.getKey() + ";") >= 0) bsAtoms.or(e.getValue()); + +if (this.asc.bsAtoms != null) bsAtoms.and(this.asc.bsAtoms); +chains = null; +}var lastID = -1; +var id; +var skipping = false; +for (var iAtom = this.firstAtom; iAtom < atomMax; iAtom++) { +if (bsAtoms != null) { +skipping = !bsAtoms.get(iAtom); +} else if (chains != null && (id = atoms[iAtom].chainID) != lastID) { +skipping = (chains.indexOf(":" + this.acr.vwr.getChainIDStr(lastID = id) + ";") < 0); +}if (skipping) continue; +try { +var atomSite = atoms[iAtom].atomSite; +var atom1; +if (addBonds) atomMap[atomSite] = this.asc.ac; +atom1 = this.asc.newCloneAtom(atoms[iAtom]); +atom1.bondingRadius = imt; +this.asc.atomSymbolicMap.put("" + atom1.atomSerial, atom1); +if (this.asc.bsAtoms != null) this.asc.bsAtoms.set(atom1.index); +atom1.atomSite = atomSite; +if (notIdentity) mat.rotTrans(atom1); +atom1.bsSymmetry = JU.BSUtil.newAndSetBit(imt); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.asc.errorMessage = "appendAtomCollection error: " + e; +} else { +throw e; +} +} +} +if (notIdentity) this.symmetry.addBioMoleculeOperation(mat, false); +if (addBonds) { +for (var bondNum = this.asc.bondIndex0; bondNum < this.bondCount0; bondNum++) { +var bond = this.asc.bonds[bondNum]; +var iAtom1 = atomMap[atoms[bond.atomIndex1].atomSite]; +var iAtom2 = atomMap[atoms[bond.atomIndex2].atomSite]; +this.asc.addNewBondWithOrder(iAtom1, iAtom2, bond.order); +} +}} +if (biomtchains != null) { +if (this.asc.bsAtoms == null) this.asc.bsAtoms = JU.BSUtil.newBitSet2(0, this.asc.ac); +this.asc.bsAtoms.clearBits(this.firstAtom, atomMax); +if (particleMode == 0) { +if (fixBMChains != -1) { +var assignABC = (fixBMChains != 0); +var bsChains = (assignABC ? new JU.BS() : null); +atoms = this.asc.atoms; +var firstNew = 0; +if (assignABC) { +firstNew = (fixBMChains < 0 ? Math.max(-fixBMChains, maxChain + 1) : Math.max(maxChain + fixBMChains, 65)); +bsChains.setBits(0, firstNew - 1); +bsChains.setBits(91, 97); +bsChains.setBits(123, 200); +}var bsAll = (this.asc.structureCount == 1 ? this.asc.structures[0].bsAll : null); +var chainMap = new java.util.Hashtable(); +var knownMap = new java.util.Hashtable(); +var knownAtomMap = (bsAll == null ? null : new java.util.Hashtable()); +var lastKnownAtom = null; +for (var i = atomMax, n = this.asc.ac; i < n; i++) { +var ic = atoms[i].chainID; +var isym = atoms[i].bsSymmetry.nextSetBit(0); +var ch0 = this.acr.vwr.getChainIDStr(ic); +var ch = (isym == 0 ? ch0 : ch0 + isym); +var known = chainMap.get(ch); +if (known == null) { +if (assignABC && isym != 0) { +var pt = (firstNew < 200 ? bsChains.nextClearBit(firstNew) : 200); +if (pt < 200) { +bsChains.set(pt); +known = Integer.$valueOf(this.acr.vwr.getChainID("" + String.fromCharCode(pt), true)); +firstNew = pt; +} else { +}}if (known == null) known = Integer.$valueOf(this.acr.vwr.getChainID(ch, true)); +if (ch !== ch0) { +knownMap.put(known, Integer.$valueOf(ic)); +if (bsAll != null) { +if (lastKnownAtom != null) lastKnownAtom[1] = i; +knownAtomMap.put(known, lastKnownAtom = Clazz_newIntArray(-1, [i, n])); +}}chainMap.put(ch, known); +}atoms[i].chainID = known.intValue(); +} +if (this.asc.structureCount > 0) { +var strucs = this.asc.structures; +var nStruc = this.asc.structureCount; +for (var e, $e = knownMap.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var known = e.getKey(); +var ch1 = known.intValue(); +var ch0 = e.getValue().intValue(); +for (var i = 0; i < nStruc; i++) { +var s = strucs[i]; +if (s.bsAll != null) { +} else if (s.startChainID == s.endChainID) { +if (s.startChainID == ch0) { +var s1 = s.clone(); +s1.startChainID = s1.endChainID = ch1; +this.asc.addStructure(s1); +}} else { +System.err.println("XtalSymmetry not processing biomt chain structure " + this.acr.vwr.getChainIDStr(ch0) + " to " + this.acr.vwr.getChainIDStr(ch1)); +}} +} +}}var vConnect = this.asc.getAtomSetAuxiliaryInfoValue(-1, "PDB_CONECT_bonds"); +if (!addBonds && vConnect != null) { +for (var i = vConnect.size(); --i >= 0; ) { +var bond = vConnect.get(i); +var a = this.asc.getAtomFromName("" + bond[0]); +var b = this.asc.getAtomFromName("" + bond[1]); +if (a != null && b != null && a.bondingRadius != b.bondingRadius && (bsAtoms == null || bsAtoms.get(a.index) && bsAtoms.get(b.index)) && a.distanceSquared(b) > 25.0) { +vConnect.removeItemAt(i); +System.out.println("long interchain bond removed for @" + a.atomSerial + "-@" + b.atomSerial); +}} +}}for (var i = atomMax, n = this.asc.ac; i < n; i++) { +this.asc.atoms[i].bondingRadius = NaN; +} +}this.noSymmetryCount = atomMax - this.firstAtom; +this.finalizeSymmetry(this.symmetry); +this.setCurrentModelInfo(len, null, null); +this.reset(); +}, "java.util.Map,~B,~S"); +Clazz_defineMethod(c$, "getBaseSymmetry", +function(){ +return (this.baseSymmetry == null ? this.symmetry : this.baseSymmetry); +}); +Clazz_defineMethod(c$, "getOverallSpan", +function(){ +return (this.maxXYZ0 == null ? JU.V3.new3(this.maxXYZ.x - this.minXYZ.x, this.maxXYZ.y - this.minXYZ.y, this.maxXYZ.z - this.minXYZ.z) : JU.V3.newVsub(this.maxXYZ0, this.minXYZ0)); +}); +Clazz_defineMethod(c$, "getSymmetry", +function(){ +return (this.symmetry == null ? (this.symmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry()) : this.symmetry); +}); +Clazz_defineMethod(c$, "isWithinCell", +function(ndims, pt, minX, maxX, minY, maxY, minZ, maxZ, slop){ +return (pt.x > minX - slop && pt.x < maxX + slop && (ndims < 2 || pt.y > minY - slop && pt.y < maxY + slop) && (ndims < 3 || pt.z > minZ - slop && pt.z < maxZ + slop)); +}, "~N,JU.P3,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "scaleFractionalVibs", +function(){ +var params = this.acr.unitCellParams; +var ptScale = JU.P3.new3(1 / params[0], 1 / params[1], 1 / params[2]); +var i0 = this.asc.getAtomSetAtomIndex(this.asc.iSet); +for (var i = this.asc.ac; --i >= i0; ) { +var v = this.asc.atoms[i].vib; +if (v != null) { +v.scaleT(ptScale); +}} +}); +Clazz_defineMethod(c$, "set", +function(reader){ +this.acr = reader; +this.asc = reader.asc; +this.getSymmetry(); +return this; +}, "J.adapter.smarter.AtomSetCollectionReader"); +Clazz_defineMethod(c$, "setLatticeParameter", +function(latt){ +this.symmetry.setSpaceGroup(this.doNormalize); +this.symmetry.setLattice(latt); +}, "~N"); +Clazz_defineMethod(c$, "setSpinVectors", +function(){ +if (this.nVib > 0 || this.asc.iSet < 0 || !this.acr.vibsFractional) return this.nVib; +var i0 = this.asc.getAtomSetAtomIndex(this.asc.iSet); +var sym = this.getBaseSymmetry(); +for (var i = this.asc.ac; --i >= i0; ) { +var v = this.asc.atoms[i].vib; +if (v != null) { +if (v.modDim > 0) { +(v).setMoment(); +} else { +v = v.clone(); +sym.toCartesian(v, true); +this.asc.atoms[i].vib = v; +}this.nVib++; +}} +return this.nVib; +}); +Clazz_defineMethod(c$, "addSpaceGroupOperation", +function(xyz, andSetLattice){ +this.symmetry.setSpaceGroup(this.doNormalize); +if (andSetLattice && this.symmetry.getSpaceGroupOperationCount() == 1) this.setLatticeCells(); +return this.symmetry.addSpaceGroupOperation(xyz, 0); +}, "~S,~B"); +Clazz_defineMethod(c$, "applySymmetryFromReader", +function(readerSymmetry){ +this.asc.setCoordinatesAreFractional(this.acr.iHaveFractionalCoordinates); +this.setAtomSetSpaceGroupName(this.acr.sgName); +this.symmetryRange = this.acr.symmetryRange; +this.asc.setInfo("symmetryRange", Float.$valueOf(this.symmetryRange)); +if (this.acr.doConvertToFractional || this.acr.fileCoordinatesAreFractional) { +this.setLatticeCells(); +var doApplySymmetry = true; +if (this.acr.ignoreFileSpaceGroupName || !this.acr.iHaveSymmetryOperators) { +if (this.acr.unitCellParams[0] == 0 && this.acr.unitCellParams[2] == 0) { +JU.SimpleUnitCell.fillParams(null, null, null, this.acr.unitCellParams); +}if (!this.acr.merging || readerSymmetry == null) readerSymmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry(); +doApplySymmetry = readerSymmetry.createSpaceGroup(this.acr.desiredSpaceGroupIndex, (this.acr.sgName.indexOf("!") >= 0 ? "P1" : this.acr.sgName), this.acr.unitCellParams, this.acr.modDim); +} else { +this.acr.doPreSymmetry(); +readerSymmetry = null; +}this.packingRange = this.acr.getPackingRangeValue(0); +if (doApplySymmetry) { +if (readerSymmetry != null) this.getSymmetry().setSpaceGroupTo(readerSymmetry.getSpaceGroup()); +this.applySymmetryLattice(); +if (readerSymmetry != null && this.filterSymop == null) this.setAtomSetSpaceGroupName(readerSymmetry.getSpaceGroupName()); +} else { +this.setUnitCellSafely(); +}}if (this.acr.iHaveFractionalCoordinates && this.acr.merging && readerSymmetry != null) { +var atoms = this.asc.atoms; +for (var i = this.asc.getLastAtomSetAtomIndex(), n = this.asc.ac; i < n; i++) readerSymmetry.toCartesian(atoms[i], true); + +this.asc.setCoordinatesAreFractional(false); +this.acr.addVibrations = false; +}return this.symmetry; +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "setSymmetry", +function(symmetry){ +return (this.symmetry = symmetry); +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "setTensors", +function(){ +var n = this.asc.ac; +for (var i = this.asc.getLastAtomSetAtomIndex(); i < n; i++) { +var a = this.asc.atoms[i]; +if (a.anisoBorU == null) continue; +a.addTensor(this.symmetry.getTensor(this.acr.vwr, a.anisoBorU), null, false); +if (Float.isNaN(a.bfactor)) a.bfactor = a.anisoBorU[7] * 100; +a.anisoBorU = null; +} +}); +Clazz_defineMethod(c$, "adjustRangeMinMax", +function(oabc){ +var pa = new JU.P3(); +var pb = new JU.P3(); +var pc = new JU.P3(); +if (this.acr.forcePacked) { +pa.setT(oabc[1]); +pb.setT(oabc[2]); +pc.setT(oabc[3]); +pa.scale(this.packingRange); +pb.scale(this.packingRange); +pc.scale(this.packingRange); +}oabc[0].scaleAdd2(this.minXYZ.x, oabc[1], oabc[0]); +oabc[0].scaleAdd2(this.minXYZ.y, oabc[2], oabc[0]); +oabc[0].scaleAdd2(this.minXYZ.z, oabc[3], oabc[0]); +oabc[0].sub(pa); +oabc[0].sub(pb); +oabc[0].sub(pc); +var pt = JU.P3.newP(oabc[0]); +this.symmetry.toFractional(pt, true); +this.setSymmetryMinMax(pt); +oabc[1].scale(this.maxXYZ.x - this.minXYZ.x); +oabc[2].scale(this.maxXYZ.y - this.minXYZ.y); +oabc[3].scale(this.maxXYZ.z - this.minXYZ.z); +oabc[1].scaleAdd2(2, pa, oabc[1]); +oabc[2].scaleAdd2(2, pb, oabc[2]); +oabc[3].scaleAdd2(2, pc, oabc[3]); +for (var i = 0; i < 3; i++) { +for (var j = i + 1; j < 4; j++) { +pt.add2(oabc[i], oabc[j]); +if (i != 0) pt.add(oabc[0]); +this.symmetry.toFractional(pt, false); +this.setSymmetryMinMax(pt); +} +} +this.symmetry.toCartesian(pt, false); +pt.add(oabc[1]); +this.symmetry.toFractional(pt, false); +this.setSymmetryMinMax(pt); +this.minXYZ = JU.P3i.new3(Clazz_doubleToInt(Math.min(0, Math.floor(this.rminx + 0.001))), Clazz_doubleToInt(Math.min(0, Math.floor(this.rminy + 0.001))), Clazz_doubleToInt(Math.min(0, Math.floor(this.rminz + 0.001)))); +this.maxXYZ = JU.P3i.new3(Clazz_doubleToInt(Math.max(1, Math.ceil(this.rmaxx - 0.001))), Clazz_doubleToInt(Math.max(1, Math.ceil(this.rmaxy - 0.001))), Clazz_doubleToInt(Math.max(1, Math.ceil(this.rmaxz - 0.001)))); +}, "~A"); +Clazz_defineMethod(c$, "applyAllSymmetry", +function(ms, bsAtoms){ +if (this.asc.ac == 0 || bsAtoms != null && bsAtoms.isEmpty()) return; +var n = this.noSymmetryCount = this.asc.baseSymmetryAtomCount > 0 ? this.asc.baseSymmetryAtomCount : bsAtoms == null ? this.asc.getLastAtomSetAtomCount() : this.asc.ac - bsAtoms.nextSetBit(this.asc.getLastAtomSetAtomIndex()); +this.asc.setTensors(); +this.applySymmetryToBonds = this.acr.applySymmetryToBonds; +this.doPackUnitCell = this.acr.doPackUnitCell && !this.applySymmetryToBonds; +this.bondCount0 = this.asc.bondCount; +this.ndims = JU.SimpleUnitCell.getDimensionFromParams(this.acr.unitCellParams); +this.finalizeSymmetry(this.symmetry); +var operationCount = this.symmetry.getSpaceGroupOperationCount(); +var excludedOps = (this.acr.thisBiomolecule == null ? null : new JU.BS()); +this.checkNearAtoms = this.acr.checkNearAtoms || excludedOps != null; +JU.SimpleUnitCell.setMinMaxLatticeParameters(this.ndims, this.minXYZ, this.maxXYZ, 0); +this.latticeOp = this.symmetry.getLatticeOp(); +this.crystalReaderLatticeOpsOnly = (this.asc.crystalReaderLatticeOpsOnly && this.latticeOp >= 0); +if (this.doCentroidUnitCell) this.asc.setInfo("centroidMinMax", Clazz_newIntArray(-1, [this.minXYZ.x, this.minXYZ.y, this.minXYZ.z, this.maxXYZ.x, this.maxXYZ.y, this.maxXYZ.z, (this.centroidPacked ? 1 : 0)])); +if (this.doCentroidUnitCell || this.acr.doPackUnitCell || this.symmetryRange != 0 && this.maxXYZ.x - this.minXYZ.x == 1 && this.maxXYZ.y - this.minXYZ.y == 1 && this.maxXYZ.z - this.minXYZ.z == 1) { +this.minXYZ0 = JU.P3.new3(this.minXYZ.x, this.minXYZ.y, this.minXYZ.z); +this.maxXYZ0 = JU.P3.new3(this.maxXYZ.x, this.maxXYZ.y, this.maxXYZ.z); +if (ms != null) { +ms.setMinMax0(this.minXYZ0, this.maxXYZ0); +this.minXYZ.set(Clazz_floatToInt(this.minXYZ0.x), Clazz_floatToInt(this.minXYZ0.y), Clazz_floatToInt(this.minXYZ0.z)); +this.maxXYZ.set(Clazz_floatToInt(this.maxXYZ0.x), Clazz_floatToInt(this.maxXYZ0.y), Clazz_floatToInt(this.maxXYZ0.z)); +}switch (this.ndims) { +case 3: +this.minXYZ.z--; +this.maxXYZ.z++; +case 2: +this.minXYZ.y--; +this.maxXYZ.y++; +case 1: +this.minXYZ.x--; +this.maxXYZ.x++; +} +}var nCells = (this.maxXYZ.x - this.minXYZ.x) * (this.maxXYZ.y - this.minXYZ.y) * (this.maxXYZ.z - this.minXYZ.z); +var nsym = n * (this.crystalReaderLatticeOpsOnly ? 4 : operationCount); +var cartesianCount = (this.checkNearAtoms || this.acr.thisBiomolecule != null ? nsym * nCells : this.symmetryRange > 0 ? nsym : 1); +var cartesians = new Array(cartesianCount); +var atoms = this.asc.atoms; +for (var i = 0; i < n; i++) atoms[this.firstAtom + i].bsSymmetry = JU.BS.newN(operationCount * (nCells + 1)); + +var pt = 0; +this.unitCellTranslations = new Array(nCells); +var iCell = 0; +var cell555Count = 0; +var absRange = Math.abs(this.symmetryRange); +var checkCartesianRange = (this.symmetryRange != 0); +var checkRangeNoSymmetry = (this.symmetryRange < 0); +var checkRange111 = (this.symmetryRange > 0); +if (checkCartesianRange) { +this.rminx = this.rminy = this.rminz = 3.4028235E38; +this.rmaxx = this.rmaxy = this.rmaxz = -3.4028235E38; +}var sym = this.symmetry; +var lastSymmetry = sym; +this.checkAll = (this.crystalReaderLatticeOpsOnly || this.asc.atomSetCount == 1 && this.checkNearAtoms && this.latticeOp >= 0); +var lstNCS = this.acr.lstNCS; +if (lstNCS != null && lstNCS.get(0).m33 == 0) { +var nOp = sym.getSpaceGroupOperationCount(); +var nn = lstNCS.size(); +for (var i = nn; --i >= 0; ) { +var m = lstNCS.get(i); +m.m33 = 1; +sym.toFractionalM(m); +} +for (var i = 1; i < nOp; i++) { +var m1 = sym.getSpaceGroupOperation(i); +for (var j = 0; j < nn; j++) { +var m = JU.M4.newM4(lstNCS.get(j)); +m.mul2(m1, m); +if (this.doNormalize && this.noSymmetryCount > 0) JS.SymmetryOperation.normalizeOperationToCentroid(3, m, atoms, this.firstAtom, this.noSymmetryCount); +lstNCS.addLast(m); +} +} +}var pttemp = null; +var op = sym.getSpaceGroupOperation(0); +if (this.doPackUnitCell) { +pttemp = new JU.P3(); +this.ptOffset.set(0, 0, 0); +}var atomMap = (this.bondCount0 > this.asc.bondIndex0 && this.applySymmetryToBonds ? Clazz_newIntArray (n, 0) : null); +var unitCells = Clazz_newIntArray (nCells, 0); +for (var tx = this.minXYZ.x; tx < this.maxXYZ.x; tx++) { +for (var ty = this.minXYZ.y; ty < this.maxXYZ.y; ty++) { +for (var tz = this.minXYZ.z; tz < this.maxXYZ.z; tz++) { +this.unitCellTranslations[iCell] = JU.V3.new3(tx, ty, tz); +unitCells[iCell++] = 555 + tx * 100 + ty * 10 + tz; +if (tx != 0 || ty != 0 || tz != 0 || cartesians.length == 0) continue; +for (pt = 0; pt < n; pt++) { +var atom = atoms[this.firstAtom + pt]; +if (ms != null) { +sym = ms.getAtomSymmetry(atom, this.symmetry); +if (sym !== lastSymmetry) { +if (sym.getSpaceGroupOperationCount() == 0) this.finalizeSymmetry(lastSymmetry = sym); +op = sym.getSpaceGroupOperation(0); +}}var c = JU.P3.newP(atom); +op.rotTrans(c); +sym.toCartesian(c, false); +if (this.doPackUnitCell) { +sym.toUnitCellRnd(c, this.ptOffset); +pttemp.setT(c); +sym.toFractional(pttemp, false); +this.acr.fixFloatPt(pttemp, 100000.0); +if (bsAtoms == null) atom.setT(pttemp); + else if (atom.distance(pttemp) < 1.0E-4) bsAtoms.set(atom.index); + else { +bsAtoms.clear(atom.index); +continue; +}}if (bsAtoms != null) atom.bsSymmetry.clearAll(); +atom.bsSymmetry.set(iCell * operationCount); +atom.bsSymmetry.set(0); +if (checkCartesianRange) this.setSymmetryMinMax(c); +if (pt < cartesianCount) cartesians[pt] = c; +} +if (checkRangeNoSymmetry) { +this.rminx -= absRange; +this.rminy -= absRange; +this.rminz -= absRange; +this.rmaxx += absRange; +this.rmaxy += absRange; +this.rmaxz += absRange; +}cell555Count = pt = this.symmetryAddAtoms(0, 0, 0, 0, pt, iCell * operationCount, cartesians, ms, excludedOps, atomMap); +} +} +} +if (checkRange111) { +this.rminx -= absRange; +this.rminy -= absRange; +this.rminz -= absRange; +this.rmaxx += absRange; +this.rmaxy += absRange; +this.rmaxz += absRange; +}iCell = 0; +for (var tx = this.minXYZ.x; tx < this.maxXYZ.x; tx++) { +for (var ty = this.minXYZ.y; ty < this.maxXYZ.y; ty++) { +for (var tz = this.minXYZ.z; tz < this.maxXYZ.z; tz++) { +iCell++; +if (tx != 0 || ty != 0 || tz != 0) pt = this.symmetryAddAtoms(tx, ty, tz, cell555Count, pt, iCell * operationCount, cartesians, ms, excludedOps, atomMap); +} +} +} +if (iCell * n == this.asc.ac - this.firstAtom) this.duplicateAtomProperties(iCell); +this.setCurrentModelInfo(n, sym, unitCells); +this.unitCellParams = null; +this.reset(); +}, "J.adapter.smarter.MSInterface,JU.BS"); +Clazz_defineMethod(c$, "applyRangeSymmetry", +function(bsAtoms){ +var range = this.acr.fillRange; +bsAtoms = this.updateBSAtoms(); +this.acr.forcePacked = true; +this.doPackUnitCell = false; +var minXYZ2 = JU.P3i.new3(this.minXYZ.x, this.minXYZ.y, this.minXYZ.z); +var maxXYZ2 = JU.P3i.new3(this.maxXYZ.x, this.maxXYZ.y, this.maxXYZ.z); +var oabc = new Array(4); +for (var i = 0; i < 4; i++) oabc[i] = JU.P3.newP(range[i]); + +this.setUnitCellSafely(); +this.adjustRangeMinMax(oabc); +var superSymmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry(); +superSymmetry.getUnitCell(this.acr.fillRange, false, null); +this.applyAllSymmetry(this.acr.ms, bsAtoms); +var pt0 = new JU.P3(); +var atoms = this.asc.atoms; +for (var i = this.asc.ac; --i >= this.firstAtom; ) { +pt0.setT(atoms[i]); +this.symmetry.toCartesian(pt0, false); +superSymmetry.toFractional(pt0, false); +if (this.acr.noPack ? !this.removePacking(this.ndims, pt0, minXYZ2.x, maxXYZ2.x, minXYZ2.y, maxXYZ2.y, minXYZ2.z, maxXYZ2.z, this.packingRange) : !this.isWithinCell(this.ndims, pt0, minXYZ2.x, maxXYZ2.x, minXYZ2.y, maxXYZ2.y, minXYZ2.z, maxXYZ2.z, this.packingRange)) bsAtoms.clear(i); +} +}, "JU.BS"); +Clazz_defineMethod(c$, "applySuperSymmetry", +function(supercell, bsAtoms, iAtomFirst, oabc, pt0, vabc, slop){ +this.asc.setGlobalBoolean(7); +var doPack0 = this.doPackUnitCell; +this.doPackUnitCell = doPack0; +this.applyAllSymmetry(this.acr.ms, null); +this.doPackUnitCell = doPack0; +var atoms = this.asc.atoms; +var atomCount = this.asc.ac; +for (var i = iAtomFirst; i < atomCount; i++) { +this.symmetry.toCartesian(atoms[i], true); +bsAtoms.set(i); +} +this.asc.setCurrentModelInfo("unitcell_conventional", this.symmetry.getV0abc("a,b,c", null)); +var va = vabc[0]; +var vb = vabc[1]; +var vc = vabc[2]; +this.symmetry = new J.adapter.smarter.XtalSymmetry.FileSymmetry(); +this.setUnitCell( Clazz_newFloatArray(-1, [0, 0, 0, 0, 0, 0, va.x, va.y, va.z, vb.x, vb.y, vb.z, vc.x, vc.y, vc.z, 0, 0, 0, 0, 0, 0, NaN, NaN, NaN, NaN, NaN, slop]), null, null); +var name = oabc == null || supercell == null ? "P1" : "cell=" + supercell; +this.setAtomSetSpaceGroupName(name); +this.symmetry.setSpaceGroupName(name); +this.symmetry.setSpaceGroup(this.doNormalize); +this.symmetry.addSpaceGroupOperation("x,y,z", 0); +if (pt0 != null && pt0.length() == 0) pt0 = null; +if (pt0 != null) this.symmetry.toFractional(pt0, true); +for (var i = iAtomFirst; i < atomCount; i++) { +this.symmetry.toFractional(atoms[i], true); +if (pt0 != null) atoms[i].sub(pt0); +} +this.asc.haveAnisou = false; +this.asc.setCurrentModelInfo("matUnitCellOrientation", null); +}, "~S,JU.BS,~N,~A,JU.P3,~A,~N"); +Clazz_defineMethod(c$, "applySymmetryLattice", +function(){ +if (!this.asc.coordinatesAreFractional || this.symmetry.getSpaceGroup() == null) return; +var maxX = this.latticeCells[0]; +var maxY = this.latticeCells[1]; +var maxZ = Math.abs(this.latticeCells[2]); +var kcode = this.latticeCells[3]; +this.firstAtom = this.asc.getLastAtomSetAtomIndex(); +var bsAtoms = this.asc.bsAtoms; +if (bsAtoms != null) { +this.updateBSAtoms(); +this.firstAtom = bsAtoms.nextSetBit(this.firstAtom); +}this.rminx = this.rminy = this.rminz = 3.4028235E38; +this.rmaxx = this.rmaxy = this.rmaxz = -3.4028235E38; +if (this.acr.latticeType == null) this.acr.latticeType = "" + this.symmetry.getLatticeType(); +if (this.acr.isPrimitive) { +this.asc.setCurrentModelInfo("isprimitive", Boolean.TRUE); +if (!"P".equals(this.acr.latticeType) || this.acr.primitiveToCrystal != null) { +this.asc.setCurrentModelInfo("unitcell_conventional", this.symmetry.getConventionalUnitCell(this.acr.latticeType, this.acr.primitiveToCrystal)); +}}this.setUnitCellSafely(); +this.asc.setCurrentModelInfo("f2c", this.symmetry.getUnitCellF2C()); +var s = this.symmetry.getSpaceGroupTitle(); +if (s.indexOf("--") < 0) this.asc.setCurrentModelInfo("f2cTitle", s); +this.asc.setCurrentModelInfo("f2cParams", this.symmetry.getUnitCellParams()); +if (this.acr.latticeType != null) { +this.asc.setCurrentModelInfo("latticeType", this.acr.latticeType); +if ((typeof(this.acr.fillRange)=='string')) { +var range = this.setLatticeRange(this.acr.latticeType, this.acr.fillRange); +if (range == null) { +this.acr.appendLoadNote(this.acr.fillRange + " symmetry could not be implemented"); +this.acr.fillRange = null; +} else { +this.acr.fillRange = range; +}}}this.baseSymmetry = this.symmetry; +if (this.acr.fillRange != null) { +this.setMinMax(this.ndims, kcode, maxX, maxY, maxZ); +this.applyRangeSymmetry(bsAtoms); +return; +}var oabc = null; +var slop = 1e-6; +this.nVib = 0; +var supercell = this.acr.strSupercell; +var isSuper = (supercell != null && supercell.indexOf(",") >= 0); +var matSuper = null; +var pt0 = null; +var vabc = new Array(3); +if (isSuper) { +matSuper = new JU.M4(); +if (this.mident == null) this.mident = new JU.M4(); +this.setUnitCellSafely(); +oabc = this.symmetry.getV0abc(supercell, matSuper); +matSuper.transpose33(); +if (oabc != null && !matSuper.equals(this.mident)) { +this.setMinMax(this.ndims, kcode, maxX, maxY, maxZ); +pt0 = JU.P3.newP(oabc[0]); +vabc[0] = JU.V3.newV(oabc[1]); +vabc[1] = JU.V3.newV(oabc[2]); +vabc[2] = JU.V3.newV(oabc[3]); +this.adjustRangeMinMax(oabc); +}}var iAtomFirst = this.asc.getLastAtomSetAtomIndex(); +if (bsAtoms != null) iAtomFirst = bsAtoms.nextSetBit(iAtomFirst); +if (this.rminx == 3.4028235E38) { +supercell = null; +oabc = null; +} else { +bsAtoms = this.updateBSAtoms(); +slop = this.symmetry.getPrecision(); +this.applySuperSymmetry(supercell, bsAtoms, iAtomFirst, oabc, pt0, vabc, slop); +}this.setMinMax(this.ndims, kcode, maxX, maxY, maxZ); +if (oabc == null) { +this.applyAllSymmetry(this.acr.ms, bsAtoms); +if (!this.acr.noPack && (!this.applySymmetryToBonds || !this.acr.doPackUnitCell)) { +return; +}this.setMinMax(this.ndims, kcode, maxX, maxY, maxZ); +}if (this.acr.forcePacked || this.acr.doPackUnitCell || this.acr.noPack) { +this.trimToUnitCell(iAtomFirst); +}this.updateSupercellAtomSites(matSuper, bsAtoms, slop); +}); +Clazz_defineMethod(c$, "duplicateAtomProperties", +function(nTimes){ +var p = this.asc.getAtomSetAuxiliaryInfoValue(-1, "atomProperties"); +if (p != null) for (var entry, $entry = p.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +var key = entry.getKey(); +var val = entry.getValue(); +if ((typeof(val)=='string')) { +var data = val; +var s = new JU.SB(); +for (var i = nTimes; --i >= 0; ) s.append(data); + +p.put(key, s.toString()); +} else { +var f = val; +var fnew = Clazz_newFloatArray (f.length * nTimes, 0); +for (var i = nTimes; --i >= 0; ) System.arraycopy(f, 0, fnew, i * f.length, f.length); + +}} +}, "~N"); +Clazz_defineMethod(c$, "finalizeSymmetry", +function(symmetry){ +var name = this.asc.getAtomSetAuxiliaryInfoValue(-1, "spaceGroup"); +symmetry.setFinalOperations(this.ndims, name, this.asc.atoms, this.firstAtom, this.noSymmetryCount, this.doNormalize, this.filterSymop); +if (this.filterSymop != null || name == null || name.equals("unspecified!")) { +this.setAtomSetSpaceGroupName(symmetry.getSpaceGroupName()); +}if (this.unitCellParams != null || Float.isNaN(this.acr.unitCellParams[0])) return; +if (symmetry.fixUnitCell(this.acr.unitCellParams)) { +this.acr.appendLoadNote("Unit cell parameters were adjusted to match space group!"); +}this.setUnitCellSafely(); +}, "J.adapter.smarter.XtalSymmetry.FileSymmetry"); +Clazz_defineMethod(c$, "removePacking", +function(ndims, pt, minX, maxX, minY, maxY, minZ, maxZ, slop){ +return (pt.x > minX - slop && pt.x < maxX - slop && (ndims < 2 || pt.y > minY - slop && pt.y < maxY - slop) && (ndims < 3 || pt.z > minZ - slop && pt.z < maxZ - slop)); +}, "~N,JU.P3,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "reset", +function(){ +this.asc.coordinatesAreFractional = false; +this.asc.setCurrentModelInfo("hasSymmetry", Boolean.TRUE); +this.asc.setGlobalBoolean(1); +}); +Clazz_defineMethod(c$, "setAtomSetSpaceGroupName", +function(spaceGroupName){ +this.symmetry.setSpaceGroupName(spaceGroupName); +this.asc.setCurrentModelInfo("spaceGroup", spaceGroupName + ""); +}, "~S"); +Clazz_defineMethod(c$, "setCurrentModelInfo", +function(n, sym, unitCells){ +if (sym == null) { +this.asc.setCurrentModelInfo("presymmetryAtomCount", Integer.$valueOf(this.noSymmetryCount)); +this.asc.setCurrentModelInfo("biosymmetryCount", Integer.$valueOf(n)); +this.asc.setCurrentModelInfo("biosymmetry", this.symmetry); +} else { +this.asc.setCurrentModelInfo("presymmetryAtomCount", Integer.$valueOf(n)); +this.asc.setCurrentModelInfo("latticeDesignation", sym.getLatticeDesignation()); +this.asc.setCurrentModelInfo("ML_unitCellRange", unitCells); +if (this.acr.isSUPERCELL) this.asc.setCurrentModelInfo("supercell", this.acr.strSupercell); +}this.asc.setCurrentModelInfo("presymmetryAtomIndex", Integer.$valueOf(this.firstAtom)); +var operationCount = this.symmetry.getSpaceGroupOperationCount(); +if (operationCount > 0) { +var symmetryList = new Array(operationCount); +for (var i = 0; i < operationCount; i++) symmetryList[i] = "" + this.symmetry.getSpaceGroupXyz(i, this.doNormalize); + +this.asc.setCurrentModelInfo("symmetryOperations", symmetryList); +this.asc.setCurrentModelInfo("symmetryOps", this.symmetry.getSymmetryOperations()); +}this.asc.setCurrentModelInfo("symmetryCount", Integer.$valueOf(operationCount)); +this.asc.setCurrentModelInfo("latticeType", this.acr.latticeType == null ? "P" : this.acr.latticeType); +this.asc.setCurrentModelInfo("intlTableNo", this.symmetry.getIntTableNumber()); +this.asc.setCurrentModelInfo("intlTableIndex", this.symmetry.getSpaceGroupInfoObj("itaIndex", null, false, false)); +this.asc.setCurrentModelInfo("intlTableTransform", this.symmetry.getSpaceGroupInfoObj("itaTransform", null, false, false)); +this.asc.setCurrentModelInfo("intlTableJmolID", this.symmetry.getIntTableNumberFull()); +this.asc.setCurrentModelInfo("spaceGroupIndex", Integer.$valueOf(this.symmetry.getSpaceGroupIndex())); +this.asc.setCurrentModelInfo("spaceGroupTitle", this.symmetry.getSpaceGroupTitle()); +if (this.acr.sgName == null || this.acr.sgName.indexOf("?") >= 0 || this.acr.sgName.indexOf("!") >= 0) this.setAtomSetSpaceGroupName(this.acr.sgName = this.symmetry.getSpaceGroupName()); +}, "~N,J.adapter.smarter.XtalSymmetry.FileSymmetry,~A"); +Clazz_defineMethod(c$, "setCurrentModelUCInfo", +function(unitCellParams, unitCellOffset, matUnitCellOrientation){ +if (unitCellParams != null) this.asc.setCurrentModelInfo("unitCellParams", unitCellParams); +if (unitCellOffset != null) this.asc.setCurrentModelInfo("unitCellOffset", unitCellOffset); +if (matUnitCellOrientation != null) this.asc.setCurrentModelInfo("matUnitCellOrientation", matUnitCellOrientation); +}, "~A,JU.P3,JU.M3"); +Clazz_defineMethod(c$, "setLatticeCells", +function(){ +this.latticeCells = this.acr.latticeCells; +var isLatticeRange = (this.latticeCells[0] <= 555 && this.latticeCells[1] >= 555 && (this.latticeCells[2] == 0 || this.latticeCells[2] == 1 || this.latticeCells[2] == -1)); +this.doNormalize = this.latticeCells[0] != 0 && (!isLatticeRange || this.latticeCells[2] == 1); +this.applySymmetryToBonds = this.acr.applySymmetryToBonds; +this.doPackUnitCell = this.acr.doPackUnitCell && !this.applySymmetryToBonds; +this.doCentroidUnitCell = this.acr.doCentroidUnitCell; +this.centroidPacked = this.acr.centroidPacked; +this.filterSymop = this.acr.filterSymop; +}); +Clazz_defineMethod(c$, "setLatticeRange", +function(latticetype, rangeType){ +var range = null; +var isRhombohedral = "R".equals(latticetype); +if (rangeType.equals("conventional")) { +range = this.symmetry.getConventionalUnitCell(latticetype, this.acr.primitiveToCrystal); +} else if (rangeType.equals("primitive")) { +range = this.symmetry.getUnitCellVectors(); +this.symmetry.toFromPrimitive(true, latticetype.charAt(0), range, this.acr.primitiveToCrystal); +} else if (isRhombohedral && rangeType.equals("rhombohedral")) { +if (this.symmetry.getUnitCellInfoType(7) == 1) { +rangeType = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"; +} else { +rangeType = null; +}} else if (isRhombohedral && rangeType.equals("trigonal")) { +if (this.symmetry.getUnitCellInfoType(8) == 1) { +rangeType = "a-b,b-c,a+b+c"; +} else { +rangeType = null; +}} else if (rangeType.indexOf(",") < 0 || rangeType.indexOf("a") < 0 || rangeType.indexOf("b") < 0 || rangeType.indexOf("c") < 0) { +rangeType = null; +} else { +rangeType = null; +}if (rangeType != null && range == null && (range = this.symmetry.getV0abc(rangeType, null)) == null) { +rangeType = null; +}if (rangeType == null) return null; +this.acr.addJmolScript("unitcell " + JU.PT.esc(rangeType)); +return range; +}, "~S,~S"); +Clazz_defineMethod(c$, "setMinMax", +function(dim, kcode, maxX, maxY, maxZ){ +this.minXYZ = new JU.P3i(); +this.maxXYZ = JU.P3i.new3(maxX, maxY, maxZ); +JU.SimpleUnitCell.setMinMaxLatticeParameters(dim, this.minXYZ, this.maxXYZ, kcode); +}, "~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setSymmetryMinMax", +function(c){ +if (this.rminx > c.x) this.rminx = c.x; +if (this.rminy > c.y) this.rminy = c.y; +if (this.rminz > c.z) this.rminz = c.z; +if (this.rmaxx < c.x) this.rmaxx = c.x; +if (this.rmaxy < c.y) this.rmaxy = c.y; +if (this.rmaxz < c.z) this.rmaxz = c.z; +}, "JU.P3"); +Clazz_defineMethod(c$, "setUnitCell", +function(info, matUnitCellOrientation, unitCellOffset){ +this.unitCellParams = Clazz_newFloatArray (info.length, 0); +for (var i = 0; i < info.length; i++) this.unitCellParams[i] = info[i]; + +this.asc.haveUnitCell = true; +if (this.asc.isTrajectory) { +if (this.trajectoryUnitCells == null) { +this.trajectoryUnitCells = new JU.Lst(); +this.asc.setInfo("unitCells", this.trajectoryUnitCells); +}this.trajectoryUnitCells.addLast(this.unitCellParams); +}this.asc.setGlobalBoolean(2); +this.getSymmetry().setUnitCellFromParams(this.unitCellParams, false, this.unitCellParams[26]); +if (unitCellOffset != null) this.symmetry.setOffsetPt(unitCellOffset); +if (matUnitCellOrientation != null) this.symmetry.initializeOrientation(matUnitCellOrientation); +this.setCurrentModelUCInfo(this.unitCellParams, unitCellOffset, matUnitCellOrientation); +}, "~A,JU.M3,JU.P3"); +Clazz_defineMethod(c$, "setUnitCellSafely", +function(){ +if (this.unitCellParams == null) this.setUnitCell(this.acr.unitCellParams, this.acr.matUnitCellOrientation, this.acr.unitCellOffset); +}); +Clazz_defineMethod(c$, "symmetryAddAtoms", +function(transX, transY, transZ, baseCount, pt, iCellOpPt, cartesians, ms, excludedOps, atomMap){ +var isBaseCell = (baseCount == 0); +var addBonds = (atomMap != null); +if (this.doPackUnitCell) this.ptOffset.set(transX, transY, transZ); +var range2 = this.symmetryRange * this.symmetryRange; +var checkRangeNoSymmetry = (this.symmetryRange < 0); +var checkRange111 = (this.symmetryRange > 0); +var checkSymmetryMinMax = (isBaseCell && checkRange111); +checkRange111 = new Boolean (checkRange111 & !isBaseCell).valueOf(); +var nOp = this.symmetry.getSpaceGroupOperationCount(); +var lstNCS = this.acr.lstNCS; +var nNCS = (lstNCS == null ? 0 : lstNCS.size()); +var nOperations = nOp + nNCS; +nNCS = Clazz_doubleToInt(nNCS / nOp); +var checkNearAtoms = (this.checkNearAtoms && (nOperations > 1 || this.doPackUnitCell)); +var checkSymmetryRange = (checkRangeNoSymmetry || checkRange111); +var checkDistances = (checkNearAtoms || checkSymmetryRange); +var checkOps = (excludedOps != null); +var addCartesian = (checkNearAtoms || checkSymmetryMinMax); +var bsAtoms = (this.acr.isMolecular ? null : this.asc.bsAtoms); +var sym = this.symmetry; +if (checkRangeNoSymmetry) baseCount = this.noSymmetryCount; +var atomMax = this.firstAtom + this.noSymmetryCount; +var bondAtomMin = (this.asc.firstAtomToBond < 0 ? atomMax : this.asc.firstAtomToBond); +var pttemp = new JU.P3(); +var code = null; +var minCartDist2 = (checkOps ? 0.01 : 1.0E-4); +var subSystemId = '\u0000'; +var j00 = (bsAtoms == null ? this.firstAtom : bsAtoms.nextSetBit(this.firstAtom)); +out : for (var iSym = 0; iSym < nOperations; iSym++) { +if (isBaseCell && iSym == 0 || this.crystalReaderLatticeOpsOnly && iSym > 0 && (iSym % this.latticeOp) != 0 || excludedOps != null && excludedOps.get(iSym)) continue; +var pt0 = this.firstAtom + (checkNearAtoms ? pt : checkRange111 ? baseCount : 0); +var spinOp = (iSym >= nOp ? 0 : this.asc.vibScale == 0 ? sym.getSpinOp(iSym) : this.asc.vibScale); +var i0 = Math.max(this.firstAtom, (bsAtoms == null ? 0 : bsAtoms.nextSetBit(0))); +var checkDistance = checkDistances; +var spt = (iSym >= nOp ? Clazz_doubleToInt((iSym - nOp) / nNCS) : iSym); +var cpt = spt + iCellOpPt; +for (var i = i0; i < atomMax; i++) { +var a = this.asc.atoms[i]; +if (bsAtoms != null && !bsAtoms.get(i)) continue; +if (ms == null) { +sym.newSpaceGroupPoint(a, iSym, (iSym >= nOp ? lstNCS.get(iSym - nOp) : null), transX, transY, transZ, pttemp); +} else { +sym = ms.getAtomSymmetry(a, this.symmetry); +sym.newSpaceGroupPoint(a, iSym, null, transX, transY, transZ, pttemp); +code = sym.getSpaceGroupOperationCode(iSym); +if (code != null) { +subSystemId = code.charAt(0); +sym = ms.getSymmetryFromCode(code); +if (sym.getSpaceGroupOperationCount() == 0) this.finalizeSymmetry(sym); +}}this.acr.fixFloatPt(pttemp, 100000.0); +var c = JU.P3.newP(pttemp); +sym.toCartesian(c, false); +if (this.doPackUnitCell) { +sym.toUnitCellRnd(c, this.ptOffset); +pttemp.setT(c); +sym.toFractional(pttemp, false); +this.acr.fixFloatPt(pttemp, 100000.0); +if (!this.isWithinCell(this.ndims, pttemp, this.minXYZ0.x, this.maxXYZ0.x, this.minXYZ0.y, this.maxXYZ0.y, this.minXYZ0.z, this.maxXYZ0.z, this.packingRange)) { +continue; +}}if (checkSymmetryMinMax) this.setSymmetryMinMax(c); +var special = null; +if (checkDistance) { +if (checkSymmetryRange && (c.x < this.rminx || c.y < this.rminy || c.z < this.rminz || c.x > this.rmaxx || c.y > this.rmaxy || c.z > this.rmaxz)) continue; +var minDist2 = 3.4028235E38; +var j0 = (this.checkAll ? this.asc.ac : pt0); +var name = a.atomName; +var id = (code == null ? a.altLoc : subSystemId); +for (var j = j00; j < j0; j++) { +if (bsAtoms != null && !bsAtoms.get(j)) continue; +var pc = cartesians[j - this.firstAtom]; +if (pc == null) continue; +var d2 = c.distanceSquared(pc); +if (checkNearAtoms && d2 < minCartDist2) { +if (checkOps) { +excludedOps.set(iSym); +continue out; +}special = this.asc.atoms[j]; +if ((special.atomName == null || special.atomName.equals(name)) && special.altLoc == id) break; +special = null; +}if (checkRange111 && j < baseCount && d2 < minDist2) minDist2 = d2; +} +if (checkRange111 && minDist2 > range2) continue; +}if (checkOps) { +checkDistance = false; +}var atomSite = a.atomSite; +if (special != null) { +if (addBonds) atomMap[atomSite] = special.index; +special.bsSymmetry.set(cpt); +special.bsSymmetry.set(spt); +} else { +if (addBonds) atomMap[atomSite] = this.asc.ac; +var atom1 = a.copyTo(pttemp, this.asc); +if (this.asc.bsAtoms != null) this.asc.bsAtoms.set(atom1.index); +if (spinOp != 0 && atom1.vib != null) { +sym.getSpaceGroupOperation(iSym).rotate(atom1.vib); +atom1.vib.scale(spinOp); +}if (atom1.isNegDisorder) { +if (this.disorderMap == null) this.disorderMap = new java.util.Hashtable(); +var key = Integer.$valueOf(iSym * 1000 + atom1.altLoc.charCodeAt(0)); +var ch = this.disorderMap.get(key); +if (ch == null) { +if (this.disorderMapMax == 0 || this.disorderMapMax == 90) this.disorderMapMax = ('@').charCodeAt(0); +this.disorderMap.put(key, ch = new Character(String.fromCharCode(++this.disorderMapMax))); +}atom1.altLoc = ch.charValue(); +}atom1.atomSite = atomSite; +if (code != null) atom1.altLoc = subSystemId; +atom1.bsSymmetry = JU.BSUtil.newAndSetBit(cpt); +atom1.bsSymmetry.set(spt); +if (addCartesian) cartesians[pt++] = c; +var tensors = a.tensors; +if (tensors != null) { +atom1.tensors = null; +for (var j = tensors.size(); --j >= 0; ) { +var t = tensors.get(j); +if (t == null) continue; +if (nOp == 1) atom1.addTensor(t.copyTensor(), null, false); + else this.addRotatedTensor(atom1, t, iSym, false, sym); +} +}}} +if (addBonds) { +var bonds = this.asc.bonds; +var atoms = this.asc.atoms; +var key; +for (var bondNum = this.asc.bondIndex0; bondNum < this.bondCount0; bondNum++) { +var bond = bonds[bondNum]; +var atom1 = atoms[bond.atomIndex1]; +var atom2 = atoms[bond.atomIndex2]; +if (atom1 == null || atom2 == null || atom2.atomSetIndex < atom1.atomSetIndex) continue; +var ia1 = atomMap[atom1.atomSite]; +var ia2 = atomMap[atom2.atomSite]; +if (ia1 > ia2) { +var i = ia1; +ia1 = ia2; +ia2 = i; +}if (ia1 != ia2 && (ia1 >= bondAtomMin || ia2 >= bondAtomMin) && this.bondsFound.indexOf(key = "-" + ia1 + "," + ia2) < 0) { +this.bondsFound.append(key); +this.asc.addNewBondWithOrder(ia1, ia2, bond.order); +}} +}} +return pt; +}, "~N,~N,~N,~N,~N,~N,~A,J.adapter.smarter.MSInterface,JU.BS,~A"); +Clazz_defineMethod(c$, "trimToUnitCell", +function(iAtomFirst){ +var atoms = this.asc.atoms; +var bs = this.updateBSAtoms(); +if (this.acr.noPack) { +for (var i = bs.nextSetBit(iAtomFirst); i >= 0; i = bs.nextSetBit(i + 1)) { +if (!this.removePacking(this.ndims, atoms[i], this.minXYZ.x, this.maxXYZ.x, this.minXYZ.y, this.maxXYZ.y, this.minXYZ.z, this.maxXYZ.z, this.packingRange)) bs.clear(i); +} +} else { +for (var i = bs.nextSetBit(iAtomFirst); i >= 0; i = bs.nextSetBit(i + 1)) { +if (!this.isWithinCell(this.ndims, atoms[i], this.minXYZ.x, this.maxXYZ.x, this.minXYZ.y, this.maxXYZ.y, this.minXYZ.z, this.maxXYZ.z, this.packingRange)) bs.clear(i); +} +}}, "~N"); +Clazz_defineMethod(c$, "updateBSAtoms", +function(){ +var bs = this.asc.bsAtoms; +if (bs == null) bs = this.asc.bsAtoms = JU.BSUtil.newBitSet2(0, this.asc.ac); +if (bs.nextSetBit(this.firstAtom) < 0) bs.setBits(this.firstAtom, this.asc.ac); +return bs; +}); +Clazz_defineMethod(c$, "updateSupercellAtomSites", +function(matSuper, bsAtoms, slop){ +var n = bsAtoms.cardinality(); +var baseAtoms = new Array(n); +var nbase = 0; +var slop2 = slop * slop; +for (var i = bsAtoms.nextSetBit(0); i >= 0; i = bsAtoms.nextSetBit(i + 1)) { +var a = this.asc.atoms[i]; +var p = new J.adapter.smarter.Atom(); +p.setT(a); +if (matSuper != null) { +matSuper.rotTrans(p); +JU.SimpleUnitCell.unitizeDimRnd(3, p, slop); +}p.atomSerial = a.atomSite; +p.atomSite = a.atomSite; +this.symmetry.unitize(p); +var found = false; +for (var ib = 0; ib < nbase; ib++) { +var b = baseAtoms[ib]; +if (p.atomSerial == b.atomSerial && p.distanceSquared(b) < slop2) { +found = true; +a.atomSite = b.atomSite; +break; +}} +if (!found) { +a.atomSite = p.atomSite = nbase; +baseAtoms[nbase++] = p; +}} +}, "JU.M4,JU.BS,~N"); +Clazz_defineMethod(c$, "newFileSymmetry", +function(){ +return new J.adapter.smarter.XtalSymmetry.FileSymmetry(); +}); +/*if3*/;(function(){ +var c$ = Clazz_declareType(J.adapter.smarter.XtalSymmetry, "FileSymmetry", JS.Symmetry); +Clazz_makeConstructor(c$, +function(){ +Clazz_superConstructor (this, J.adapter.smarter.XtalSymmetry.FileSymmetry, []); +}); +Clazz_defineMethod(c$, "addLatticeVectors", +function(lattvecs){ +return this.spaceGroup.addLatticeVectors(lattvecs); +}, "JU.Lst"); +Clazz_defineMethod(c$, "addSubSystemOp", +function(code, rs, vs, sigma){ +this.spaceGroup.isSSG = true; +var s = JS.SymmetryOperation.getXYZFromRsVs(rs, vs, false); +var i = this.spaceGroup.addSymmetry(s, -1, true); +this.spaceGroup.operations[i].setSigma(code, sigma); +return s; +}, "~S,JU.Matrix,JU.Matrix,JU.Matrix"); +Clazz_defineMethod(c$, "checkDistance", +function(f1, f2, distance, dx, iRange, jRange, kRange, ptOffset){ +return this.unitCell.checkDistance(f1, f2, distance, dx, iRange, jRange, kRange, ptOffset); +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N,JU.P3"); +Clazz_defineMethod(c$, "createSpaceGroup", +function(desiredSpaceGroupIndex, name, data, modDim){ +this.spaceGroup = JS.SpaceGroup.createSpaceGroup(desiredSpaceGroupIndex, name, data, modDim); +if (this.spaceGroup != null && JU.Logger.debugging) JU.Logger.debug("using generated space group " + this.spaceGroup.dumpInfo()); +return this.spaceGroup != null; +}, "~N,~S,~O,~N"); +Clazz_defineMethod(c$, "fcoord", +function(p){ +return JS.SymmetryOperation.fcoord(p, " "); +}, "JU.T3"); +Clazz_defineMethod(c$, "getMatrixFromString", +function(xyz, rotTransMatrix){ +JS.SymmetryOperation.getMatrixFromString(null, xyz, rotTransMatrix, false, true, false); +}, "~S,~A"); +Clazz_defineMethod(c$, "getSpaceGroupOperationCode", +function(iOp){ +return this.spaceGroup.operations[iOp].subsystemCode; +}, "~N"); +Clazz_defineMethod(c$, "getTensor", +function(vwr, parBorU){ +if (parBorU == null) return null; +if (this.unitCell == null) this.unitCell = JS.UnitCell.fromParams( Clazz_newFloatArray(-1, [1, 1, 1, 90, 90, 90]), true, 1.0E-4); +return this.unitCell.getTensor(vwr, parBorU); +}, "JV.Viewer,~A"); +Clazz_defineMethod(c$, "getSpaceGroupTitle", +function(){ +var s = this.getSpaceGroupName(); +return (s.startsWith("cell=") ? s : this.spaceGroup != null ? this.spaceGroup.asString() : this.unitCell != null && this.unitCell.name.length > 0 ? "cell=" + this.unitCell.name : ""); +}); +Clazz_defineMethod(c$, "setPrecision", +function(prec){ +this.unitCell.setPrecision(prec); +}, "~N"); +Clazz_defineMethod(c$, "toFractionalM", +function(m){ +if (!this.$isBio) this.unitCell.toFractionalM(m); +}, "JU.M4"); +Clazz_defineMethod(c$, "toUnitCellRnd", +function(pt, offset){ +this.unitCell.toUnitCellRnd(pt, offset); +}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "twelfthify", +function(pt){ +this.unitCell.twelfthify(pt); +}, "JU.P3"); +Clazz_defineMethod(c$, "getConventionalUnitCell", +function(latticeType, primitiveToCrystal){ +return (this.unitCell == null || latticeType == null ? null : this.unitCell.getConventionalUnitCell(latticeType, primitiveToCrystal)); +}, "~S,JU.M3"); +Clazz_defineMethod(c$, "getSpaceGroupIndex", +function(){ +return this.spaceGroup.getIndex(); +}); +Clazz_defineMethod(c$, "getUnitCellF2C", +function(){ +return this.unitCell.getF2C(); +}); +Clazz_defineMethod(c$, "addInversion", +function(){ +var ops = this.spaceGroup.operations; +var inv = new JU.M4(); +inv.m00 = inv.m11 = inv.m22 = -1; +inv.m33 = 1; +var n = this.getSpaceGroupOperationCount(); +var m = new JU.M4(); +for (var i = 0; i < n; i++) { +m.mul2(inv, ops[i]); +var s = JS.SymmetryOperation.getXYZFromMatrix(m, true, true, false); +this.addSpaceGroupOperation(s, 0); +} +}); +/*eoif3*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["J.api.SymmetryInterface"], "JS.Symmetry", ["java.util.Hashtable", "JU.BS", "$.JSJSONParser", "$.Lst", "$.M4", "$.P3", "$.PT", "$.Rdr", "$.SB", "J.api.Interface", "J.bspt.Bspt", "JS.PointGroup", "$.SpaceGroup", "$.SymmetryInfo", "$.SymmetryOperation", "$.UnitCell", "JU.Escape", "$.Logger", "$.SimpleUnitCell", "JV.FileManager"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.spaceGroup = null; +this.unitCell = null; +this.$isBio = false; +this.pointGroup = null; +this.cip = null; +this.symmetryInfo = null; +this.desc = null; +this.transformMatrix = null; +Clazz_instantialize(this, arguments);}, JS, "Symmetry", null, J.api.SymmetryInterface); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "isBio", +function(){ +return this.$isBio; +}); +Clazz_overrideMethod(c$, "setPointGroup", +function(vwr, siLast, center, atomset, bsAtoms, haveVibration, distanceTolerance, linearTolerance, maxAtoms, localEnvOnly){ +this.pointGroup = JS.PointGroup.getPointGroup(siLast == null ? null : (siLast).pointGroup, center, atomset, bsAtoms, haveVibration, distanceTolerance, linearTolerance, maxAtoms, localEnvOnly, vwr.getBoolean(603979956), vwr.getScalePixelsPerAngstrom(false)); +return this; +}, "JV.Viewer,J.api.SymmetryInterface,JU.T3,~A,JU.BS,~B,~N,~N,~N,~B"); +Clazz_overrideMethod(c$, "getPointGroupName", +function(){ +return this.pointGroup.getName(); +}); +Clazz_overrideMethod(c$, "getPointGroupInfo", +function(modelIndex, drawID, asInfo, type, index, scale){ +if (drawID == null && !asInfo && this.pointGroup.textInfo != null) return this.pointGroup.textInfo; + else if (drawID == null && this.pointGroup.isDrawType(type, index, scale)) return this.pointGroup.drawInfo; + else if (asInfo && this.pointGroup.info != null) return this.pointGroup.info; +return this.pointGroup.getInfo(modelIndex, drawID, asInfo, type, index, scale); +}, "~N,~S,~B,~S,~N,~N"); +Clazz_overrideMethod(c$, "setSpaceGroup", +function(doNormalize){ +this.symmetryInfo = null; +if (this.spaceGroup == null) this.spaceGroup = JS.SpaceGroup.getNull(true, doNormalize, false); +}, "~B"); +Clazz_overrideMethod(c$, "addSpaceGroupOperation", +function(xyz, opId){ +return this.spaceGroup.addSymmetry(xyz, opId, false); +}, "~S,~N"); +Clazz_overrideMethod(c$, "addBioMoleculeOperation", +function(mat, isReverse){ +this.$isBio = this.spaceGroup.isBio = true; +return this.spaceGroup.addSymmetry((isReverse ? "!" : "") + "[[bio" + mat, 0, false); +}, "JU.M4,~B"); +Clazz_overrideMethod(c$, "setLattice", +function(latt){ +this.spaceGroup.setLatticeParam(latt); +}, "~N"); +Clazz_overrideMethod(c$, "getSpaceGroup", +function(){ +return this.spaceGroup; +}); +Clazz_overrideMethod(c$, "getSpaceGroupInfoObj", +function(name, params, isFull, addNonstandard){ +var isNameToXYZList = false; +switch (name) { +case "list": +return this.getSpaceGroupList(params); +case "opsCtr": +return this.spaceGroup.getOpsCtr(params); +case "nameToXYZList": +isNameToXYZList = true; +case "itaIndex": +case "itaTransform": +case "itaNumber": +var sg = null; +if (params != null) { +sg = JS.SpaceGroup.determineSpaceGroupN(params); +if (sg == null && isNameToXYZList) sg = JS.SpaceGroup.createSpaceGroupN(params); +} else if (this.spaceGroup != null) { +sg = this.spaceGroup; +} else if (this.symmetryInfo != null) { +sg = this.symmetryInfo.getDerivedSpaceGroup(); +}switch (sg == null ? "" : name) { +case "nameToXYZList": +var genPos = new JU.Lst(); +sg.setFinalOperations(); +for (var i = 0, n = sg.getOperationCount(); i < n; i++) { +genPos.addLast((sg.getOperation(i)).xyz); +} +return genPos; +case "itaIndex": +return sg.getItaIndex(); +case "itaTransform": +return sg.itaTransform; +case "itaNumber": +return sg.itaNumber; +} +return null; +default: +return JS.SpaceGroup.getInfo(this.spaceGroup, name, params, isFull, addNonstandard); +} +}, "~S,~O,~B,~B"); +Clazz_defineMethod(c$, "getSpaceGroupList", +function(vwr){ +var sb = new JU.SB(); +var list = this.getSpaceGroupJSON(vwr, "ITA", "ALL", 0); +for (var i = 0, n = list.size(); i < n; i++) { +var map = list.get(i); +sb.appendO(map.get("sg")).appendC('.').appendO(map.get("set")).appendC('\t').appendO(map.get("hm")).appendC('\t').appendO(map.get("sg")).appendC(':').appendO(map.get("trm")).appendC('\n'); +} +return sb.toString(); +}, "JV.Viewer"); +Clazz_overrideMethod(c$, "getLatticeDesignation", +function(){ +return this.spaceGroup.getLatticeDesignation(); +}); +Clazz_overrideMethod(c$, "setFinalOperations", +function(dim, name, atoms, iAtomFirst, noSymmetryCount, doNormalize, filterSymop){ +if (name != null && (name.startsWith("bio") || name.indexOf(" *(") >= 0)) this.spaceGroup.setName(name); +if (filterSymop != null) { +var lst = new JU.Lst(); +lst.addLast(this.spaceGroup.operations[0]); +for (var i = 1; i < this.spaceGroup.operationCount; i++) if (filterSymop.contains(" " + (i + 1) + " ")) lst.addLast(this.spaceGroup.operations[i]); + +this.spaceGroup = JS.SpaceGroup.createSpaceGroup(-1, name + " *(" + filterSymop.trim() + ")", lst, -1); +}this.spaceGroup.setFinalOperationsForAtoms(dim, atoms, iAtomFirst, noSymmetryCount, doNormalize); +}, "~N,~S,~A,~N,~N,~B,~S"); +Clazz_overrideMethod(c$, "getSpaceGroupOperation", +function(i){ +return (this.spaceGroup == null || this.spaceGroup.operations == null || i >= this.spaceGroup.operations.length ? null : this.spaceGroup.finalOperations == null ? this.spaceGroup.operations[i] : this.spaceGroup.finalOperations[i]); +}, "~N"); +Clazz_overrideMethod(c$, "getSpaceGroupXyz", +function(i, doNormalize){ +return this.spaceGroup.getXyz(i, doNormalize); +}, "~N,~B"); +Clazz_overrideMethod(c$, "newSpaceGroupPoint", +function(pt, i, o, transX, transY, transZ, retPoint){ +if (o == null && this.spaceGroup.finalOperations == null) { +var op = this.spaceGroup.operations[i]; +if (!op.isFinalized) op.doFinalize(); +o = op; +}JS.SymmetryOperation.rotateAndTranslatePoint((o == null ? this.spaceGroup.finalOperations[i] : o), pt, transX, transY, transZ, retPoint); +}, "JU.P3,~N,JU.M4,~N,~N,~N,JU.P3"); +Clazz_overrideMethod(c$, "rotateAxes", +function(iop, axes, ptTemp, mTemp){ +return (iop == 0 ? axes : this.spaceGroup.finalOperations[iop].rotateAxes(axes, this.unitCell, ptTemp, mTemp)); +}, "~N,~A,JU.P3,JU.M3"); +Clazz_overrideMethod(c$, "getSpinOp", +function(op){ +return this.spaceGroup.operations[op].getMagneticOp(); +}, "~N"); +Clazz_overrideMethod(c$, "getLatticeOp", +function(){ +return this.spaceGroup.latticeOp; +}); +Clazz_overrideMethod(c$, "getLatticeCentering", +function(){ +return JS.SymmetryOperation.getLatticeCentering(this.getSymmetryOperations()); +}); +Clazz_overrideMethod(c$, "getOperationRsVs", +function(iop){ +return (this.spaceGroup.finalOperations == null ? this.spaceGroup.operations : this.spaceGroup.finalOperations)[iop].rsvs; +}, "~N"); +Clazz_overrideMethod(c$, "getSiteMultiplicity", +function(pt){ +return this.spaceGroup.getSiteMultiplicity(pt, this.unitCell); +}, "JU.P3"); +Clazz_overrideMethod(c$, "getSpaceGroupName", +function(){ +return (this.spaceGroup != null ? this.spaceGroup.getName() : this.symmetryInfo != null ? this.symmetryInfo.sgName : this.unitCell != null && this.unitCell.name.length > 0 ? "cell=" + this.unitCell.name : ""); +}); +Clazz_overrideMethod(c$, "getSpaceGroupNameType", +function(type){ +return (this.spaceGroup == null ? null : this.spaceGroup.getNameType(type, this)); +}, "~S"); +Clazz_overrideMethod(c$, "getLatticeType", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.latticeType : this.spaceGroup == null ? 'P' : this.spaceGroup.latticeType); +}); +Clazz_overrideMethod(c$, "getIntTableNumber", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.intlTableNo : this.spaceGroup == null ? null : this.spaceGroup.itaNumber); +}); +Clazz_overrideMethod(c$, "getIntTableIndex", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.intlTableIndex : this.spaceGroup == null ? null : this.spaceGroup.getItaIndex()); +}); +Clazz_overrideMethod(c$, "getIntTableTransform", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.intlTableTransform : this.spaceGroup == null ? null : this.spaceGroup.itaTransform); +}); +Clazz_overrideMethod(c$, "getIntTableNumberFull", +function(){ +return (this.symmetryInfo != null ? this.symmetryInfo.intlTableJmolID : this.spaceGroup == null ? null : this.spaceGroup.jmolId != null ? this.spaceGroup.jmolId : this.spaceGroup.itaNumber); +}); +Clazz_overrideMethod(c$, "getCoordinatesAreFractional", +function(){ +return this.symmetryInfo == null || this.symmetryInfo.coordinatesAreFractional; +}); +Clazz_overrideMethod(c$, "getCellRange", +function(){ +return this.symmetryInfo == null ? null : this.symmetryInfo.cellRange; +}); +Clazz_overrideMethod(c$, "getSymmetryInfoStr", +function(){ +if (this.symmetryInfo != null) return this.symmetryInfo.infoStr; +if (this.spaceGroup == null) return ""; +(this.symmetryInfo = new JS.SymmetryInfo()).setSymmetryInfoFromModelkit(this.spaceGroup); +return this.symmetryInfo.infoStr; +}); +Clazz_overrideMethod(c$, "getSpaceGroupOperationCount", +function(){ +return (this.symmetryInfo != null && this.symmetryInfo.symmetryOperations != null ? this.symmetryInfo.symmetryOperations.length : this.spaceGroup != null ? (this.spaceGroup.finalOperations != null ? this.spaceGroup.finalOperations.length : this.spaceGroup.operationCount) : 0); +}); +Clazz_overrideMethod(c$, "getSymmetryOperations", +function(){ +if (this.symmetryInfo != null) return this.symmetryInfo.symmetryOperations; +if (this.spaceGroup == null) this.spaceGroup = JS.SpaceGroup.getNull(true, false, true); +this.spaceGroup.setFinalOperations(); +return this.spaceGroup.finalOperations; +}); +Clazz_overrideMethod(c$, "getAdditionalOperationsCount", +function(){ +return (this.symmetryInfo != null && this.symmetryInfo.symmetryOperations != null && this.symmetryInfo.getAdditionalOperations() != null ? this.symmetryInfo.additionalOperations.length : this.spaceGroup != null && this.spaceGroup.finalOperations != null ? this.spaceGroup.getAdditionalOperationsCount() : 0); +}); +Clazz_overrideMethod(c$, "getAdditionalOperations", +function(){ +if (this.symmetryInfo != null) return this.symmetryInfo.getAdditionalOperations(); +this.getSymmetryOperations(); +return this.spaceGroup.getAdditionalOperations(); +}); +Clazz_overrideMethod(c$, "isSimple", +function(){ +return (this.spaceGroup == null && (this.symmetryInfo == null || this.symmetryInfo.symmetryOperations == null)); +}); +Clazz_overrideMethod(c$, "haveUnitCell", +function(){ +return (this.unitCell != null); +}); +Clazz_overrideMethod(c$, "setUnitCellFromParams", +function(unitCellParams, setRelative, slop){ +if (unitCellParams == null) unitCellParams = Clazz_newFloatArray(-1, [1, 1, 1, 90, 90, 90]); +this.unitCell = JS.UnitCell.fromParams(unitCellParams, setRelative, slop); +return this; +}, "~A,~B,~N"); +Clazz_overrideMethod(c$, "unitCellEquals", +function(uc2){ +return ((uc2)).unitCell.isSameAs(this.unitCell.getF2C()); +}, "J.api.SymmetryInterface"); +Clazz_overrideMethod(c$, "isSymmetryCell", +function(sym){ +var uc = ((sym)).unitCell; +var myf2c = (!uc.isStandard() ? null : (this.symmetryInfo != null ? this.symmetryInfo.spaceGroupF2C : this.unitCell.getF2C())); +var ret = uc.isSameAs(myf2c); +if (this.symmetryInfo != null) { +if (this.symmetryInfo.setIsCurrentCell(ret)) { +this.setUnitCellFromParams(this.symmetryInfo.spaceGroupF2CParams, false, NaN); +}}return ret; +}, "J.api.SymmetryInterface"); +Clazz_overrideMethod(c$, "getUnitCellState", +function(){ +if (this.unitCell == null) return ""; +return this.unitCell.getState(); +}); +Clazz_overrideMethod(c$, "getMoreInfo", +function(){ +return this.unitCell.moreInfo; +}); +Clazz_overrideMethod(c$, "initializeOrientation", +function(mat){ +this.unitCell.initOrientation(mat); +}, "JU.M3"); +Clazz_overrideMethod(c$, "unitize", +function(ptFrac){ +this.unitCell.unitize(ptFrac); +}, "JU.T3"); +Clazz_overrideMethod(c$, "toUnitCell", +function(pt, offset){ +this.unitCell.toUnitCell(pt, offset); +}, "JU.T3,JU.T3"); +Clazz_overrideMethod(c$, "toSupercell", +function(fpt){ +return this.unitCell.toSupercell(fpt); +}, "JU.P3"); +Clazz_overrideMethod(c$, "toFractional", +function(pt, ignoreOffset){ +if (!this.$isBio) this.unitCell.toFractional(pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz_overrideMethod(c$, "toCartesian", +function(pt, ignoreOffset){ +if (!this.$isBio) this.unitCell.toCartesian(pt, ignoreOffset); +}, "JU.T3,~B"); +Clazz_overrideMethod(c$, "getUnitCellParams", +function(){ +return this.unitCell.getUnitCellParams(); +}); +Clazz_overrideMethod(c$, "getUnitCellAsArray", +function(vectorsOnly){ +return this.unitCell.getUnitCellAsArray(vectorsOnly); +}, "~B"); +Clazz_overrideMethod(c$, "getUnitCellVerticesNoOffset", +function(){ +return this.unitCell.getVertices(); +}); +Clazz_overrideMethod(c$, "getCartesianOffset", +function(){ +return this.unitCell.getCartesianOffset(); +}); +Clazz_overrideMethod(c$, "getFractionalOffset", +function(){ +return this.unitCell.getFractionalOffset(); +}); +Clazz_overrideMethod(c$, "setOffsetPt", +function(pt){ +this.unitCell.setOffset(pt); +}, "JU.T3"); +Clazz_overrideMethod(c$, "setOffset", +function(nnn){ +var pt = new JU.P3(); +JU.SimpleUnitCell.ijkToPoint3f(nnn, pt, 0, 0); +this.unitCell.setOffset(pt); +}, "~N"); +Clazz_overrideMethod(c$, "getUnitCellMultiplier", +function(){ +return this.unitCell.getUnitCellMultiplier(); +}); +Clazz_overrideMethod(c$, "getUnitCellMultiplied", +function(){ +var uc = this.unitCell.getUnitCellMultiplied(); +if (uc === this.unitCell) return this; +var s = new JS.Symmetry(); +s.unitCell = uc; +return s; +}); +Clazz_overrideMethod(c$, "getCanonicalCopy", +function(scale, withOffset){ +return this.unitCell.getCanonicalCopy(scale, withOffset); +}, "~N,~B"); +Clazz_overrideMethod(c$, "getUnitCellInfoType", +function(infoType){ +return this.unitCell.getInfo(infoType); +}, "~N"); +Clazz_overrideMethod(c$, "getUnitCellInfo", +function(scaled){ +return (this.unitCell == null ? null : this.unitCell.dumpInfo(false, scaled)); +}, "~B"); +Clazz_overrideMethod(c$, "isSlab", +function(){ +return this.unitCell.isSlab(); +}); +Clazz_overrideMethod(c$, "isPolymer", +function(){ +return this.unitCell.isPolymer(); +}); +Clazz_defineMethod(c$, "getUnitCellVectors", +function(){ +return this.unitCell.getUnitCellVectors(); +}); +Clazz_overrideMethod(c$, "getUnitCell", +function(oabc, setRelative, name){ +if (oabc == null) return null; +this.unitCell = JS.UnitCell.fromOABC(oabc, setRelative); +if (name != null) this.unitCell.name = name; +return this; +}, "~A,~B,~S"); +Clazz_overrideMethod(c$, "isSupercell", +function(){ +return this.unitCell.isSupercell(); +}); +Clazz_overrideMethod(c$, "notInCentroid", +function(modelSet, bsAtoms, minmax){ +try { +var bsDelete = new JU.BS(); +var iAtom0 = bsAtoms.nextSetBit(0); +var molecules = modelSet.getMolecules(); +var moleculeCount = molecules.length; +var atoms = modelSet.at; +var isOneMolecule = (molecules[moleculeCount - 1].firstAtomIndex == modelSet.am[atoms[iAtom0].mi].firstAtomIndex); +var center = new JU.P3(); +var centroidPacked = (minmax[6] == 1); +nextMol : for (var i = moleculeCount; --i >= 0 && bsAtoms.get(molecules[i].firstAtomIndex); ) { +var bs = molecules[i].atomList; +center.set(0, 0, 0); +var n = 0; +for (var j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) { +if (isOneMolecule || centroidPacked) { +center.setT(atoms[j]); +if (this.isNotCentroid(center, 1, minmax, centroidPacked)) { +if (isOneMolecule) bsDelete.set(j); +} else if (!isOneMolecule) { +continue nextMol; +}} else { +center.add(atoms[j]); +n++; +}} +if (centroidPacked || n > 0 && this.isNotCentroid(center, n, minmax, false)) bsDelete.or(bs); +} +return bsDelete; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "JM.ModelSet,JU.BS,~A"); +Clazz_defineMethod(c$, "isNotCentroid", +function(center, n, minmax, centroidPacked){ +center.scale(1 / n); +this.toFractional(center, false); +if (centroidPacked) return (center.x + 0.000005 <= minmax[0] || center.x - 0.000005 > minmax[3] || center.y + 0.000005 <= minmax[1] || center.y - 0.000005 > minmax[4] || center.z + 0.000005 <= minmax[2] || center.z - 0.000005 > minmax[5]); +return (center.x + 0.000005 <= minmax[0] || center.x + 0.00005 > minmax[3] || center.y + 0.000005 <= minmax[1] || center.y + 0.00005 > minmax[4] || center.z + 0.000005 <= minmax[2] || center.z + 0.00005 > minmax[5]); +}, "JU.P3,~N,~A,~B"); +Clazz_defineMethod(c$, "getDesc", +function(modelSet){ +if (modelSet == null) { +return (JS.Symmetry.nullDesc == null ? (JS.Symmetry.nullDesc = (J.api.Interface.getInterface("JS.SymmetryDesc", null, "modelkit"))) : JS.Symmetry.nullDesc); +}return (this.desc == null ? (this.desc = (J.api.Interface.getInterface("JS.SymmetryDesc", modelSet.vwr, "eval"))) : this.desc).set(modelSet); +}, "JM.ModelSet"); +Clazz_overrideMethod(c$, "getSymmetryInfoAtom", +function(modelSet, iatom, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, opList){ +return this.getDesc(modelSet).getSymopInfo(iatom, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, opList); +}, "JM.ModelSet,~N,~S,~N,JU.P3,JU.P3,JU.P3,~S,~N,~N,~N,~N,~A"); +Clazz_overrideMethod(c$, "getSpaceGroupInfo", +function(modelSet, sgName, modelIndex, isFull, cellParams){ +var isForModel = (sgName == null); +if (sgName == null) { +var info = modelSet.getModelAuxiliaryInfo(modelSet.vwr.am.cmi); +if (info != null) sgName = info.get("spaceGroup"); +}var cellInfo = null; +if (cellParams != null) { +cellInfo = new JS.Symmetry().setUnitCellFromParams(cellParams, false, NaN); +}return this.getDesc(modelSet).getSpaceGroupInfo(this, modelIndex, sgName, 0, null, null, null, 0, -1, isFull, isForModel, 0, cellInfo, null); +}, "JM.ModelSet,~S,~N,~B,~A"); +Clazz_overrideMethod(c$, "getV0abc", +function(def, retMatrix){ +var t = null; +{ +t = (def && def[0] ? def[0] : null); +}return ((t != null ? Clazz_instanceOf(t,"JU.T3") : Clazz_instanceOf(def,Array)) ? def : JS.UnitCell.getMatrixAndUnitCell(this.unitCell, def, retMatrix)); +}, "~O,JU.M4"); +Clazz_overrideMethod(c$, "getQuaternionRotation", +function(abc){ +return (this.unitCell == null ? null : this.unitCell.getQuaternionRotation(abc)); +}, "~S"); +Clazz_overrideMethod(c$, "getFractionalOrigin", +function(){ +return this.unitCell.getFractionalOrigin(); +}); +Clazz_overrideMethod(c$, "getState", +function(ms, modelIndex, commands){ +var isAssigned = (ms.getInfo(modelIndex, "spaceGroupAssigned") != null); +var pt = this.getFractionalOffset(); +var loadUC = false; +if (pt != null && (pt.x != 0 || pt.y != 0 || pt.z != 0)) { +commands.append("; set unitcell ").append(JU.Escape.eP(pt)); +loadUC = true; +}var ptm = this.getUnitCellMultiplier(); +if (ptm != null) { +commands.append("; set unitcell ").append(JU.SimpleUnitCell.escapeMultiplier(ptm)); +loadUC = true; +}var sg = ms.getInfo(modelIndex, "spaceGroup"); +if (isAssigned && sg != null) { +var cmd = "\n UNITCELL " + JU.Escape.e(ms.getUnitCell(modelIndex).getUnitCellVectors()); +commands.append(cmd); +commands.append("\n MODELKIT SPACEGROUP " + JU.PT.esc(sg)); +commands.append(cmd); +loadUC = true; +}return loadUC; +}, "JM.ModelSet,~N,JU.SB"); +Clazz_overrideMethod(c$, "getIterator", +function(vwr, atom, bsAtoms, radius){ +return (J.api.Interface.getInterface("JS.UnitCellIterator", vwr, "script")).set(this, atom, vwr.ms.at, bsAtoms, radius); +}, "JV.Viewer,JM.Atom,JU.BS,~N"); +Clazz_overrideMethod(c$, "toFromPrimitive", +function(toPrimitive, type, oabc, primitiveToCrystal){ +if (this.unitCell == null) this.unitCell = JS.UnitCell.fromOABC(oabc, false); +return this.unitCell.toFromPrimitive(toPrimitive, type, oabc, primitiveToCrystal); +}, "~B,~S,~A,JU.M3"); +Clazz_overrideMethod(c$, "generateCrystalClass", +function(pt00){ +if (this.symmetryInfo == null || !this.symmetryInfo.isCurrentCell) return null; +var ops = this.getSymmetryOperations(); +var lst = new JU.Lst(); +var isRandom = (pt00 == null); +var rand1 = 0; +var rand2 = 0; +var rand3 = 0; +var pt0; +if (isRandom) { +rand1 = 2.718281828459045; +rand2 = 3.141592653589793; +rand3 = Math.log10(2000); +pt0 = JU.P3.new3(rand1 + 1, rand2 + 2, rand3 + 3); +} else { +pt0 = JU.P3.newP(pt00); +}if (ops == null || this.unitCell == null) { +lst.addLast(pt0); +} else { +this.unitCell.toFractional(pt0, true); +var pt1 = null; +var pt2 = null; +if (isRandom) { +pt1 = JU.P3.new3(rand2 + 4, rand3 + 5, rand1 + 6); +this.unitCell.toFractional(pt1, true); +pt2 = JU.P3.new3(rand3 + 7, rand1 + 8, rand2 + 9); +this.unitCell.toFractional(pt2, true); +}var bspt = new J.bspt.Bspt(3, 0); +var iter = bspt.allocateCubeIterator(); +var pt = new JU.P3(); +out : for (var i = ops.length; --i >= 0; ) { +ops[i].rotate2(pt0, pt); +iter.initialize(pt, 0.001, false); +if (iter.hasMoreElements()) continue out; +var ptNew = JU.P3.newP(pt); +lst.addLast(ptNew); +bspt.addTuple(ptNew); +if (isRandom) { +if (pt2 != null) { +ops[i].rotate2(pt2, pt); +lst.addLast(JU.P3.newP(pt)); +}if (pt1 != null) { +ops[i].rotate2(pt1, pt); +lst.addLast(JU.P3.newP(pt)); +}}} +for (var j = lst.size(); --j >= 0; ) { +pt = lst.get(j); +if (isRandom) pt.scale(0.5); +this.unitCell.toCartesian(pt, true); +} +}return lst; +}, "JU.P3"); +Clazz_overrideMethod(c$, "calculateCIPChiralityForAtoms", +function(vwr, bsAtoms){ +vwr.setCursor(3); +var cip = this.getCIPChirality(vwr); +var dataClass = (vwr.getBoolean(603979960) ? "CIPData" : "CIPDataTracker"); +var data = (J.api.Interface.getInterface("JS." + dataClass, vwr, "script")).set(vwr, bsAtoms); +data.setRule6Full(vwr.getBoolean(603979823)); +cip.getChiralityForAtoms(data); +vwr.setCursor(0); +}, "JV.Viewer,JU.BS"); +Clazz_overrideMethod(c$, "calculateCIPChiralityForSmiles", +function(vwr, smiles){ +vwr.setCursor(3); +var cip = this.getCIPChirality(vwr); +var data = (J.api.Interface.getInterface("JS.CIPDataSmiles", vwr, "script")).setAtomsForSmiles(vwr, smiles); +cip.getChiralityForAtoms(data); +vwr.setCursor(0); +return data.getSmilesChiralityArray(); +}, "JV.Viewer,~S"); +Clazz_defineMethod(c$, "getCIPChirality", +function(vwr){ +return (this.cip == null ? (this.cip = (J.api.Interface.getInterface("JS.CIPChirality", vwr, "script"))) : this.cip); +}, "JV.Viewer"); +Clazz_overrideMethod(c$, "getUnitCellInfoMap", +function(){ +return (this.unitCell == null ? null : this.unitCell.getInfo()); +}); +Clazz_overrideMethod(c$, "setUnitCell", +function(uc){ +this.unitCell = JS.UnitCell.cloneUnitCell((uc).unitCell); +}, "J.api.SymmetryInterface"); +Clazz_overrideMethod(c$, "findSpaceGroup", +function(vwr, atoms, xyzList, unitCellParams, origin, oabc, flags){ +return (J.api.Interface.getInterface("JS.SpaceGroupFinder", vwr, "eval")).findSpaceGroup(vwr, atoms, xyzList, unitCellParams, origin, oabc, this, flags); +}, "JV.Viewer,JU.BS,~S,~A,JU.T3,~A,~N"); +Clazz_overrideMethod(c$, "setSpaceGroupName", +function(name){ +this.symmetryInfo = null; +if (this.spaceGroup != null) this.spaceGroup.setName(name); +}, "~S"); +Clazz_overrideMethod(c$, "setSpaceGroupTo", +function(sg){ +this.symmetryInfo = null; +if (Clazz_instanceOf(sg,"JS.SpaceGroup")) { +this.spaceGroup = sg; +} else { +this.spaceGroup = JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(sg.toString()); +}}, "~O"); +Clazz_overrideMethod(c$, "removeDuplicates", +function(ms, bs, highPrec){ +var uc = this.unitCell; +var atoms = ms.at; +var occs = ms.occupancies; +var haveOccupancies = (occs != null); +var unitized = new Array(bs.length()); +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var pt = unitized[i] = JU.P3.newP(atoms[i]); +uc.toFractional(pt, false); +if (highPrec) uc.unitizeRnd(pt); + else uc.unitize(pt); +} +for (var i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +var a = atoms[i]; +var pt = unitized[i]; +var type = a.getAtomicAndIsotopeNumber(); +var occ = (haveOccupancies ? occs[i] : 0); +for (var j = bs.nextSetBit(i + 1); j >= 0; j = bs.nextSetBit(j + 1)) { +var b = atoms[j]; +if (type != b.getAtomicAndIsotopeNumber() || (haveOccupancies && occ != occs[j])) continue; +var pt2 = unitized[j]; +if (pt.distanceSquared(pt2) < 1.96E-6) { +bs.clear(j); +}} +} +return bs; +}, "JM.ModelSet,JU.BS,~B"); +Clazz_overrideMethod(c$, "getEquivPoints", +function(pts, pt, flags){ +var ops = this.getSymmetryOperations(); +return (ops == null || this.unitCell == null ? null : this.unitCell.getEquivPoints(pt, flags, ops, pts == null ? new JU.Lst() : pts, 0, 0, 0)); +}, "JU.Lst,JU.P3,~S"); +Clazz_overrideMethod(c$, "getEquivPointList", +function(pts, nInitial, flags, opsCtr){ +var ops = (opsCtr == null ? this.getSymmetryOperations() : opsCtr); +var newPt = (flags.indexOf("newpt") >= 0); +var zapped = (flags.indexOf("zapped") >= 0); +var n = pts.size(); +var tofractional = (flags.indexOf("tofractional") >= 0); +if (flags.indexOf("fromfractional") < 0) { +for (var i = 0; i < pts.size(); i++) { +this.toFractional(pts.get(i), false); +} +}flags += ",fromfractional,tofractional"; +var check0 = (nInitial > 0 ? 0 : n); +var allPoints = (nInitial == n); +var n0 = (nInitial > 0 ? nInitial : n); +if (allPoints) { +nInitial--; +n0--; +}if (zapped) n0 = 0; +var p0 = (nInitial > 0 ? pts.get(nInitial) : null); +var dup0 = (opsCtr == null ? n0 : check0); +if (ops != null || this.unitCell != null) { +for (var i = nInitial; i < n; i++) { +this.unitCell.getEquivPoints(pts.get(i), flags, ops, pts, check0, n0, dup0); +} +}if (!zapped && (pts.size() == nInitial || pts.get(nInitial) !== p0 || allPoints || newPt)) n--; +for (var i = n - nInitial; --i >= 0; ) pts.removeItemAt(nInitial); + +if (!tofractional) { +for (var i = pts.size(); --i >= nInitial; ) this.toCartesian(pts.get(i), false); + +}}, "JU.Lst,~N,~S,~A"); +Clazz_overrideMethod(c$, "getInvariantSymops", +function(pt, v0){ +var ops = this.getSymmetryOperations(); +if (ops == null) return Clazz_newIntArray (0, 0); +var bs = new JU.BS(); +var p = new JU.P3(); +var p0 = new JU.P3(); +var nops = ops.length; +for (var i = 1; i < nops; i++) { +p.setT(pt); +this.unitCell.toFractional(p, false); +this.unitCell.unitize(p); +p0.setT(p); +ops[i].rotTrans(p); +this.unitCell.unitize(p); +if (p0.distanceSquared(p) < 1.96E-6) { +bs.set(i); +}} +var ret = Clazz_newIntArray (bs.cardinality(), 0); +if (v0 != null && ret.length != v0.length) return null; +for (var k = 0, i = 1; i < nops; i++) { +var isOK = bs.get(i); +if (isOK) { +if (v0 != null && v0[k] != i + 1) return null; +ret[k++] = i + 1; +}} +return ret; +}, "JU.P3,~A"); +Clazz_overrideMethod(c$, "getWyckoffPosition", +function(vwr, p, letter){ +if (this.unitCell == null) return ""; +var sg = this.spaceGroup; +if (sg == null && this.symmetryInfo != null) { +sg = JS.SpaceGroup.determineSpaceGroupN(this.symmetryInfo.sgName); +if (sg == null) sg = JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(this.symmetryInfo.intlTableJmolID); +}if (sg == null || sg.itaNumber == null) { +return "?"; +}if (p == null) { +p = JU.P3.new3(0.53, 0.20, 0.16); +} else { +p = JU.P3.newP(p); +this.unitCell.toFractional(p, false); +this.unitCell.unitize(p); +}if (JS.Symmetry.wyckoffFinder == null) { +JS.Symmetry.wyckoffFinder = J.api.Interface.getInterface("JS.WyckoffFinder", null, "symmetry"); +}try { +var w = JS.Symmetry.wyckoffFinder.getWyckoffFinder(vwr, sg); +var withMult = (letter != null && letter.charAt(0) == 'M'); +if (withMult) { +letter = (letter.length == 1 ? null : letter.substring(1)); +}var mode = (letter == null ? -1 : letter.equalsIgnoreCase("coord") ? -2 : letter.equalsIgnoreCase("coords") ? -3 : letter.endsWith("*") ? (letter.charAt(0)).charCodeAt(0) : 0); +if (mode != 0) { +return (w == null ? "?" : w.getInfo(this.unitCell, p, mode, withMult)); +}if (w.findPositionFor(p, letter) == null) return null; +this.unitCell.toCartesian(p, false); +return p; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +e.printStackTrace(); +return (letter == null ? "?" : null); +} else { +throw e; +} +} +}, "JV.Viewer,JU.P3,~S"); +Clazz_overrideMethod(c$, "getTransform", +function(fracA, fracB, best){ +return this.getDesc(null).getTransform(this.unitCell, this.getSymmetryOperations(), fracA, fracB, best); +}, "JU.P3,JU.P3,~B"); +Clazz_overrideMethod(c$, "isWithinUnitCell", +function(pt, x, y, z){ +return this.unitCell.isWithinUnitCell(x, y, z, pt); +}, "JU.P3,~N,~N,~N"); +Clazz_overrideMethod(c$, "checkPeriodic", +function(pt){ +return this.unitCell.checkPeriodic(pt); +}, "JU.P3"); +Clazz_overrideMethod(c$, "staticConvertOperation", +function(xyz, matrix){ +return (matrix == null ? JS.SymmetryOperation.stringToMatrix(xyz) : JS.SymmetryOperation.getXYZFromMatrixFrac(matrix, false, false, false, true)); +}, "~S,JU.M4"); +Clazz_overrideMethod(c$, "getSubgroupJSON", +function(vwr, itaFrom, itaTo, index1, index2){ +var allSubsMap = (itaTo < 0); +var asIntArray = (itaTo == 0 && index1 == 0); +var asSSIntArray = (itaTo == 0 && index1 < 0); +var isIndexMap = (itaTo == 0 && index1 > 0 && index2 < 0); +var isIndexTStr = (itaTo == 0 && index1 > 0 && index2 > 0); +var isWhereList = (itaTo > 0 && index1 < 0); +var isWhereMap = (itaTo > 0 && index1 > 0 && index2 < 0); +var isWhereTStr = (itaTo > 0 && index1 > 0 && index2 > 0); +try { +var o = this.getSpaceGroupJSON(vwr, "subgroups", "map", itaFrom); +var ithis = 0; +if (o != null) { +if (allSubsMap) return o; +if (asIntArray || asSSIntArray) { +var list = o.get("subgroups"); +var n = list.size(); +var groups = (asIntArray ? Clazz_newIntArray (n, 0) : null); +var bs = (asSSIntArray ? new JU.BS() : null); +for (var i = n; --i >= 0; ) { +o = list.get(i); +var isub = (o.get("subgroup")).intValue(); +if (asSSIntArray) { +bs.set(isub); +continue; +}var subIndex = (o.get("subgroupIndex")).intValue(); +var trType = "k".equals(o.get("trType")) ? 2 : 1; +var subType = (trType == 1 ? o.get("trSubtype") : ""); +var det = (o.get("det")).doubleValue(); +var idet = Clazz_doubleToInt(det < 1 ? -1 / det : det); +if (subType.equals("ct")) trType = 3; + else if (subType.equals("eu")) trType = 4; +var ntrm = (o.get("trm")).size(); +groups[i] = Clazz_newIntArray(-1, [isub, ntrm, subIndex, idet, trType]); +} +if (asSSIntArray) { +var a = Clazz_newIntArray (bs.cardinality(), 0); +for (var p = 0, i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { +a[p++] = i; +} +return a; +}return groups; +}var list = o.get("subgroups"); +var i0 = 0; +var n = list.size(); +if (isIndexMap || isIndexTStr) { +if (index1 > n) { +throw new ArrayIndexOutOfBoundsException("no map.subgroups[" + index1 + "]!"); +}i0 = index1 - 1; +if (isIndexMap) return list.get(i0); +n = index1; +}var whereList = (isWhereList ? new JU.Lst() : null); +for (var i = i0; i < n; i++) { +o = list.get(i); +var isub = (o.get("subgroup")).intValue(); +if (!isIndexTStr && isub != itaTo) continue; +if (++ithis == index1) { +if (isWhereMap) return o; +} else if (isWhereTStr) { +continue; +}if (isWhereList) { +whereList.addLast(o); +continue; +}var trms = o.get("trm"); +n = trms.size(); +if (index2 < 1 || index2 > n) return null; +return (trms.get(index2 - 1)).substring(2); +} +if (isWhereList && !whereList.isEmpty()) { +return whereList; +}}if (index1 == 0) return null; +if (isWhereTStr && ithis > 0) { +throw new ArrayIndexOutOfBoundsException("only " + ithis + " maximal subgroup information for " + itaFrom + ">>" + itaTo + "!"); +}throw new ArrayIndexOutOfBoundsException("no maximal subgroup information for " + itaFrom + ">>" + itaTo + "!"); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return e.getMessage(); +} else { +throw e; +} +} +}, "JV.Viewer,~N,~N,~N,~N"); +Clazz_overrideMethod(c$, "getSpaceGroupJSON", +function(vwr, name, data, index){ +var isSettings = name.equals("settings"); +var isSubgroups = !isSettings && name.equals("subgroups"); +var isThis = ((isSettings || isSubgroups) && index == -2147483648); +var s0 = (!isSettings && !isSubgroups ? name : isThis ? this.getSpaceGroupName() : "" + index); +try { +var itno; +var tm = null; +var isTM; +var isInt; +var sgname; +if (isSettings || isSubgroups) { +isTM = false; +isInt = true; +sgname = (isSettings ? data : null); +if (isThis) { +itno = JU.PT.parseInt(this.getIntTableNumber()); +if (isSettings) { +if (this.spaceGroup == null) { +var sg = this.symmetryInfo.getDerivedSpaceGroup(); +if (sg == null) return new java.util.Hashtable(); +sgname = sg.jmolId; +} else { +sgname = this.getIntTableNumberFull(); +}}} else { +itno = index; +}} else { +sgname = data; +var pt = sgname.indexOf("("); +if (pt < 0) pt = sgname.indexOf(":"); +isTM = (pt >= 0 && sgname.indexOf(",") > pt); +if (isTM) { +tm = sgname.substring(pt + 1, sgname.length - (sgname.endsWith(")") ? 1 : 0)); +sgname = sgname.substring(0, pt); +isThis = true; +}itno = (sgname.equalsIgnoreCase("ALL") ? 0 : JU.PT.parseInt(sgname)); +isInt = (itno != -2147483648); +pt = sgname.indexOf('.'); +if (!isTM && isInt && index == 0 && pt > 0) { +index = JU.PT.parseInt(sgname.substring(pt + 1)); +sgname = sgname.substring(0, pt); +}}if (isInt && (itno > 230 || (isSettings ? itno < 1 : itno < 0))) throw new ArrayIndexOutOfBoundsException(itno); +if (isSubgroups) { +if (JS.Symmetry.itaSubData == null) JS.Symmetry.itaSubData = new Array(230); +var resource = JS.Symmetry.itaSubData[itno - 1]; +if (resource == null) JS.Symmetry.itaSubData[itno - 1] = resource = this.getResource(vwr, "sg/json/sub_" + itno + ".json"); +if (resource != null) { +return resource; +}} else if (isSettings || name.equalsIgnoreCase("ITA")) { +if (itno == 0) { +if (JS.Symmetry.allDataITA == null) JS.Symmetry.allDataITA = this.getResource(vwr, "sg/json/ita_all.json"); +return JS.Symmetry.allDataITA; +}if (JS.Symmetry.itaData == null) JS.Symmetry.itaData = new Array(230); +var resource = JS.Symmetry.itaData[itno - 1]; +if (resource == null) JS.Symmetry.itaData[itno - 1] = resource = this.getResource(vwr, "sg/json/ita_" + itno + ".json"); +if (resource != null) { +if (index == 0 && tm == null) return resource; +var its = resource.get("its"); +if (its != null) { +if (isSettings && !isThis) { +return its; +}var n = its.size(); +var i0 = (isInt && !isThis ? index : n); +if (i0 > n) return null; +var map = null; +for (var i = i0; --i >= 0; ) { +map = its.get(i); +if (i == index - 1 || (tm == null ? sgname.equals(map.get("jmolId")) : tm.equals(map.get("trm")))) { +System.out.println(tm); +System.out.println(map); +if (!map.containsKey("more")) { +return map; +}break; +}map = null; +} +if (map != null) { +return JS.SpaceGroup.fillMoreData(map, map.get("clegId"), itno, its.get(0)); +}}}} else if (name.equalsIgnoreCase("AFLOW") && tm == null) { +if (JS.Symmetry.aflowStructures == null) JS.Symmetry.aflowStructures = this.getResource(vwr, "sg/json/aflow_structures.json"); +if (itno == 0) return JS.Symmetry.aflowStructures; +if (itno == -2147483648) { +var start = null; +if (sgname.endsWith("*")) { +start = new JU.Lst(); +sgname = sgname.substring(0, sgname.length - 1); +}for (var j = 1; j <= 230; j++) { +var list = JS.Symmetry.aflowStructures.get("" + j); +for (var i = 0, n = list.size(); i < n; i++) { +var id = list.get(i); +if (start != null && id.startsWith(sgname)) { +start.addLast("=aflowlib/" + j + "." + (i + 1) + "\t" + id); +} else if (id.equalsIgnoreCase(sgname)) { +return j + "." + (i + 1); +}} +} +return (start != null && start.size() > 0 ? start : null); +}var adata = JS.Symmetry.aflowStructures.get("" + sgname); +if (index <= adata.size()) { +return (index == 0 ? adata : adata.get(index - 1)); +}}if (isThis) return new java.util.Hashtable(); +throw new IllegalArgumentException(s0); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return e.getMessage(); +} else { +throw e; +} +} +}, "JV.Viewer,~S,~O,~N"); +Clazz_defineMethod(c$, "getResource", +function(vwr, resource){ +try { +var r = JV.FileManager.getBufferedReaderForResource(vwr, this, "JS/", resource); +var data = new Array(1); +if (JU.Rdr.readAllAsString(r, 2147483647, false, data, 0)) { +return new JU.JSJSONParser().parse(data[0], true); +}} catch (e) { +System.err.println(e.getMessage()); +} +return null; +}, "JV.Viewer,~S"); +Clazz_overrideMethod(c$, "getCellWeight", +function(pt){ +return this.unitCell.getCellWeight(pt); +}, "JU.P3"); +Clazz_overrideMethod(c$, "getPrecision", +function(){ +return (this.unitCell == null ? NaN : this.unitCell.getPrecision()); +}); +Clazz_overrideMethod(c$, "fixUnitCell", +function(params){ +return JS.UnitCell.createCompatibleUnitCell(this.spaceGroup, params, null, true); +}, "~A"); +Clazz_overrideMethod(c$, "staticGetTransformABC", +function(transform, normalize){ +return JS.SymmetryOperation.getTransformABC(transform, normalize); +}, "~O,~B"); +Clazz_defineMethod(c$, "setCartesianOffset", +function(origin){ +this.unitCell.setCartesianOffset(origin); +}, "JU.T3"); +Clazz_defineMethod(c$, "setSymmetryInfoFromFile", +function(ms, modelIndex, unitCellParams){ +var modelAuxiliaryInfo = ms.getModelAuxiliaryInfo(modelIndex); +this.symmetryInfo = new JS.SymmetryInfo(); +var params = this.symmetryInfo.setSymmetryInfoFromFile(modelAuxiliaryInfo, unitCellParams); +if (params != null) { +this.setUnitCellFromParams(params, modelAuxiliaryInfo.containsKey("jmolData"), NaN); +this.unitCell.moreInfo = modelAuxiliaryInfo.get("moreUnitCellInfo"); +modelAuxiliaryInfo.put("infoUnitCell", this.getUnitCellAsArray(false)); +this.setOffsetPt(modelAuxiliaryInfo.get("unitCellOffset")); +var matUnitCellOrientation = modelAuxiliaryInfo.get("matUnitCellOrientation"); +if (matUnitCellOrientation != null) this.initializeOrientation(matUnitCellOrientation); +var s = this.symmetryInfo.strSUPERCELL; +if (s != null) { +var oabc = this.unitCell.getUnitCellVectors(); +oabc[0] = new JU.P3(); +ms.setModelCagePts(modelIndex, oabc, "conventional"); +}if (JU.Logger.debugging) JU.Logger.debug("symmetryInfos[" + modelIndex + "]:\n" + this.unitCell.dumpInfo(true, true)); +}}, "JM.ModelSet,~N,~A"); +Clazz_defineMethod(c$, "transformUnitCell", +function(trm){ +if (trm == null) { +trm = JS.UnitCell.toTrm(this.spaceGroup.itaTransform, null); +}var trmInv = JU.M4.newM4(trm); +trmInv.invert(); +var oabc = this.getUnitCellVectors(); +for (var i = 1; i <= 3; i++) { +this.toFractional(oabc[i], true); +trmInv.rotate(oabc[i]); +this.toCartesian(oabc[i], true); +} +var o = new JU.P3(); +trm.getTranslation(o); +this.toCartesian(o, true); +oabc[0].add(o); +this.unitCell = JS.UnitCell.fromOABC(oabc, false); +}, "JU.M4"); +Clazz_overrideMethod(c$, "getITASettingValue", +function(vwr, itaIndex, key){ +var o = this.getSpaceGroupJSON(vwr, "ITA", itaIndex, 0); +return (Clazz_instanceOf(o,"java.util.Map") ? (o).get(key) : o); +}, "JV.Viewer,~S,~S"); +Clazz_overrideMethod(c$, "staticCleanTransform", +function(tr){ +return JS.SymmetryOperation.getTransformABC(JS.UnitCell.toTrm(tr, null), true); +}, "~S"); +Clazz_overrideMethod(c$, "replaceTransformMatrix", +function(trm){ +var trm0 = this.transformMatrix; +this.transformMatrix = trm; +return trm0; +}, "JU.M4"); +Clazz_overrideMethod(c$, "getUnitCellDisplayName", +function(){ +var name = (this.symmetryInfo != null ? this.symmetryInfo.getDisplayName(this) : this.spaceGroup != null ? this.spaceGroup.getDisplayName() : null); +return (name.length > 0 ? name : null); +}); +Clazz_overrideMethod(c$, "staticToRationalXYZ", +function(fPt, sep){ +var s = JS.SymmetryOperation.fcoord(fPt, sep); +return (",".equals(sep) ? s : "(" + s + ")"); +}, "JU.P3,~S"); +Clazz_overrideMethod(c$, "getClegId", +function(){ +if (this.symmetryInfo != null) return this.symmetryInfo.getDerivedSpaceGroup().clegId; +return this.spaceGroup.clegId; +}); +Clazz_overrideMethod(c$, "getFinalOperationCount", +function(){ +this.setFinalOperations(3, null, null, -1, -1, false, null); +return this.spaceGroup.getOperationCount(); +}); +Clazz_overrideMethod(c$, "convertTransform", +function(transform, trm){ +if (transform == null) { +return this.staticGetTransformABC(trm, false); +}if (transform.equals("xyz")) { +return (trm == null ? null : JS.SymmetryOperation.getXYZFromMatrix(trm, false, false, false)); +}if (trm == null) trm = new JU.M4(); +JS.UnitCell.getMatrixAndUnitCell(null, transform, trm); +return trm; +}, "~S,JU.M4"); +c$.nullDesc = null; +c$.aflowStructures = null; +c$.itaData = null; +c$.itaSubData = null; +c$.allDataITA = null; +c$.wyckoffFinder = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.M3", "$.V3"], "JS.PointGroup", ["java.util.Hashtable", "JU.Lst", "$.P3", "$.PT", "$.Quat", "$.SB", "J.bspt.Bspt", "JU.BSUtil", "$.Escape", "$.Logger", "$.Point3fi"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isAtoms = false; +this.drawInfo = null; +this.info = null; +this.textInfo = null; +this.iter = null; +this.drawType = ""; +this.drawIndex = 0; +this.scale = NaN; +this.nAxes = null; +this.axes = null; +this.nAtoms = 0; +this.radius = 0; +this.distanceTolerance = 0.25; +this.distanceTolerance2 = 0; +this.linearTolerance = 8; +this.cosTolerance = 0.99; +this.name = "C_1?"; +this.principalAxis = null; +this.principalPlane = null; +this.convention = 0; +this.vTemp = null; +this.centerAtomIndex = -1; +this.haveInversionCenter = false; +this.center = null; +this.points = null; +this.elements = null; +this.atomMap = null; +this.bsAtoms = null; +this.haveVibration = false; +this.localEnvOnly = false; +this.$isLinear = false; +this.sppa = 0; +this.maxAtoms = 250; +this.maxElement = 0; +this.eCounts = null; +this.nOps = 0; +if (!Clazz_isClassDefined("JS.PointGroup.Operation")) { +JS.PointGroup.$PointGroup$Operation$ (); +} +Clazz_instantialize(this, arguments);}, JS, "PointGroup", null); +Clazz_prepareFields (c$, function(){ +this.nAxes = Clazz_newIntArray (JS.PointGroup.maxAxis, 0); +this.axes = new Array(JS.PointGroup.maxAxis); +this.vTemp = new JU.V3(); +}); +Clazz_makeConstructor(c$, +function(isHM){ +this.convention = (isHM ? 1 : 0); +}, "~B"); +Clazz_defineMethod(c$, "getName", +function(){ +return this.getConventionalName(this.name); +}); +Clazz_defineMethod(c$, "getHermannMauguinName", +function(){ +return JS.PointGroup.getHMfromSFName(this.name); +}); +Clazz_defineMethod(c$, "getConventionalName", +function(name){ +return (this.convention == 1 ? JS.PointGroup.getHMfromSFName(name) : name); +}, "~S"); +c$.getPointGroup = Clazz_defineMethod(c$, "getPointGroup", +function(pgLast, center, atomset, bsAtoms, haveVibration, distanceTolerance, linearTolerance, maxAtoms, localEnvOnly, isHM, sppa){ +var pg = new JS.PointGroup(isHM); +if (distanceTolerance <= 0) { +distanceTolerance = 0.01; +}if (linearTolerance <= 0) { +linearTolerance = 0.5; +}if (maxAtoms <= 0) maxAtoms = 250; +pg.distanceTolerance = distanceTolerance; +pg.distanceTolerance2 = distanceTolerance * distanceTolerance; +pg.linearTolerance = linearTolerance; +pg.maxAtoms = maxAtoms; +pg.isAtoms = (bsAtoms != null); +pg.bsAtoms = (pg.isAtoms ? bsAtoms : JU.BSUtil.newBitSet2(0, atomset.length)); +pg.haveVibration = haveVibration; +pg.center = center; +pg.localEnvOnly = localEnvOnly; +pg.sppa = sppa; +if (JU.Logger.debugging) pgLast = null; +return (pg.set(pgLast, atomset) ? pg : pgLast); +}, "JS.PointGroup,JU.T3,~A,JU.BS,~B,~N,~N,~N,~B,~B,~N"); +Clazz_defineMethod(c$, "isEqual", +function(pg){ +if (pg == null) return false; +if (this.convention != pg.convention || this.linearTolerance != pg.linearTolerance || this.distanceTolerance != pg.distanceTolerance || this.nAtoms != pg.nAtoms || this.localEnvOnly != pg.localEnvOnly || this.haveVibration != pg.haveVibration || this.bsAtoms == null ? pg.bsAtoms != null : !this.bsAtoms.equals(pg.bsAtoms)) return false; +for (var i = 0; i < this.nAtoms; i++) { +if (this.elements[i] != pg.elements[i] || !this.points[i].equals(pg.points[i])) return false; +} +return true; +}, "JS.PointGroup"); +Clazz_defineMethod(c$, "set", +function(pgLast, atomset){ +this.cosTolerance = (Math.cos(this.linearTolerance / 180 * 3.141592653589793)); +if (!this.getPointsAndElements(atomset)) { +JU.Logger.error("Too many atoms for point group calculation"); +this.name = "point group not determined -- ac > " + this.maxAtoms + " -- select fewer atoms and try again."; +return true; +}this.getElementCounts(); +if (this.haveVibration) { +var atomVibs = new Array(this.points.length); +for (var i = this.points.length; --i >= 0; ) { +atomVibs[i] = JU.P3.newP(this.points[i]); +var v = (this.points[i]).getVibrationVector(); +if (v != null) atomVibs[i].add(v); +} +this.points = atomVibs; +}if (this.isEqual(pgLast)) return false; +try { +this.findInversionCenter(); +this.$isLinear = this.isLinear(this.points); +if (this.$isLinear) { +if (this.haveInversionCenter) { +this.name = "D(infinity)h"; +} else { +this.name = "C(infinity)v"; +}this.vTemp.sub2(this.points[1], this.points[0]); +this.addAxis(16, this.vTemp); +this.principalAxis = this.axes[16][0]; +if (this.haveInversionCenter) { +this.axes[0] = new Array(1); +this.principalPlane = this.axes[0][this.nAxes[0]++] = Clazz_innerTypeInstance(JS.PointGroup.Operation, this, null, this.vTemp); +}return true; +}this.axes[0] = new Array(15); +var nPlanes = 0; +this.findCAxes(); +nPlanes = this.findPlanes(); +this.findAdditionalAxes(nPlanes); +var n = this.getHighestOrder(); +if (this.nAxes[17] > 1) { +if (this.nAxes[19] > 1) { +if (this.haveInversionCenter) { +this.name = "Ih"; +} else { +this.name = "I"; +}} else if (this.nAxes[18] > 1) { +if (this.haveInversionCenter) { +this.name = "Oh"; +} else { +this.name = "O"; +}} else { +if (nPlanes > 0) { +if (this.haveInversionCenter) { +this.name = "Th"; +} else { +this.name = "Td"; +}} else { +this.name = "T"; +}}} else { +if (n < 2) { +if (nPlanes == 1) { +this.name = "Cs"; +return true; +}if (this.haveInversionCenter) { +this.name = "Ci"; +return true; +}this.name = "C1"; +} else if ((n % 2) == 1 && this.nAxes[16] > 0 || (n % 2) == 0 && this.nAxes[16] > 1) { +this.principalAxis = this.setPrincipalAxis(n, nPlanes); +if (nPlanes == 0) { +if (n < 14) { +this.name = "S" + n; +} else { +this.name = "D" + (n - 14); +}} else { +if (n < 14) n = Clazz_doubleToInt(n / 2); + else n -= 14; +if (nPlanes == n) { +this.name = "D" + n + "d"; +} else { +this.name = "D" + n + "h"; +}}} else if (nPlanes == 0) { +this.principalAxis = this.axes[n][0]; +if (n < 14) { +this.name = "S" + n; +} else { +this.name = "C" + (n - 14); +}} else if (nPlanes == n - 14) { +this.principalAxis = this.axes[n][0]; +this.name = "C" + nPlanes + "v"; +} else { +this.principalAxis = this.axes[n < 14 ? n + 14 : n][0]; +this.principalPlane = this.axes[0][0]; +if (n < 14) n /= 2; + else n -= 14; +this.name = "C" + n + "h"; +}}} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +this.name = "??"; +} else { +throw e; +} +} finally { +JU.Logger.info("Point group found: " + this.name); +} +return true; +}, "JS.PointGroup,~A"); +Clazz_defineMethod(c$, "setPrincipalAxis", +function(n, nPlanes){ +var principalPlane = this.setPrincipalPlane(n, nPlanes); +if (nPlanes == 0 && n < 14 || this.nAxes[n] == 1) { +return this.axes[n][0]; +}if (principalPlane == null) return null; +for (var i = 0; i < this.nAxes[16]; i++) if (this.isParallel(principalPlane.normalOrAxis, this.axes[16][i].normalOrAxis)) { +if (i != 0) { +var o = this.axes[16][0]; +this.axes[16][0] = this.axes[16][i]; +this.axes[16][i] = o; +}return this.axes[16][0]; +} +return null; +}, "~N,~N"); +Clazz_defineMethod(c$, "setPrincipalPlane", +function(n, nPlanes){ +if (nPlanes == 1) return this.principalPlane = this.axes[0][0]; +if (nPlanes == 0 || nPlanes == n - 14) return null; +for (var i = 0; i < nPlanes; i++) for (var j = 0, nPerp = 0; j < nPlanes; j++) if (this.isPerpendicular(this.axes[0][i].normalOrAxis, this.axes[0][j].normalOrAxis) && ++nPerp > 2) { +if (i != 0) { +var o = this.axes[0][0]; +this.axes[0][0] = this.axes[0][i]; +this.axes[0][i] = o; +}return this.principalPlane = this.axes[0][0]; +} + +return null; +}, "~N,~N"); +Clazz_defineMethod(c$, "getPointsAndElements", +function(atomset){ +var ac = this.bsAtoms.cardinality(); +if (this.isAtoms && ac > this.maxAtoms) return false; +this.points = new Array(ac); +this.elements = Clazz_newIntArray (ac, 0); +if (ac == 0) return true; +var atomIndexMax = 0; +for (var i = this.bsAtoms.nextSetBit(0); i >= 0; i = this.bsAtoms.nextSetBit(i + 1)) { +var p = atomset[i]; +if (Clazz_instanceOf(p,"JU.Node")) atomIndexMax = Math.max(atomIndexMax, (p).i); +} +this.atomMap = Clazz_newIntArray (atomIndexMax + 1, 0); +this.nAtoms = 0; +var needCenter = (this.center == null); +if (needCenter) this.center = new JU.P3(); +var bspt = new J.bspt.Bspt(3, 0); +for (var i = this.bsAtoms.nextSetBit(0); i >= 0; i = this.bsAtoms.nextSetBit(i + 1), this.nAtoms++) { +var p = atomset[i]; +if (Clazz_instanceOf(p,"JU.Node")) { +var bondIndex = (this.localEnvOnly ? 1 : 1 + Math.max(3, (p).getCovalentBondCount())); +this.elements[this.nAtoms] = (p).getElementNumber() * bondIndex; +this.atomMap[(p).i] = this.nAtoms + 1; +} else { +var newPt = new JU.Point3fi(); +newPt.setT(p); +newPt.i = -1 - this.nAtoms; +if (Clazz_instanceOf(p,"JU.Point3fi")) this.elements[this.nAtoms] = Math.max(0, (p).sD); +p = newPt; +}bspt.addTuple(p); +if (needCenter) this.center.add(p); +this.points[this.nAtoms] = p; +} +this.iter = bspt.allocateCubeIterator(); +if (needCenter) this.center.scale(1 / this.nAtoms); +for (var i = this.nAtoms; --i >= 0; ) { +var r2 = this.center.distanceSquared(this.points[i]); +if (this.isAtoms && r2 < this.distanceTolerance2) this.centerAtomIndex = i; +this.radius = Math.max(this.radius, r2); +} +this.radius = Math.sqrt(this.radius); +if (this.radius < 1.5 && this.distanceTolerance > 0.15) { +this.distanceTolerance = this.radius / 10; +this.distanceTolerance2 = this.distanceTolerance * this.distanceTolerance; +System.out.println("PointGroup calculation adjusting distanceTolerance to " + this.distanceTolerance); +}return true; +}, "~A"); +Clazz_defineMethod(c$, "findInversionCenter", +function(){ +this.haveInversionCenter = this.checkOperation(null, this.center, -1); +if (this.haveInversionCenter) { +this.axes[1] = new Array(1); +this.axes[1][0] = Clazz_innerTypeInstance(JS.PointGroup.Operation, this, null); +}}); +Clazz_defineMethod(c$, "checkOperation", +function(q, center, iOrder){ +var pt = new JU.P3(); +var nFound = 0; +var isInversion = (iOrder < 14); +out : for (var n = this.points.length, i = n; --i >= 0 && nFound < n; ) { +if (i == this.centerAtomIndex) continue; +var a1 = this.points[i]; +var e1 = this.elements[i]; +if (q != null) { +pt.sub2(a1, center); +q.transform2(pt, pt).add(center); +} else { +pt.setT(a1); +}if (isInversion) { +this.vTemp.sub2(center, pt); +pt.scaleAdd2(2, this.vTemp, pt); +}if ((q != null || isInversion) && pt.distanceSquared(a1) < this.distanceTolerance2) { +nFound++; +continue; +}this.iter.initialize(pt, this.distanceTolerance, false); +while (this.iter.hasMoreElements()) { +var a2 = this.iter.nextElement(); +if (a2 === a1) continue; +var j = this.getPointIndex((a2).i); +if (this.centerAtomIndex >= 0 && j == this.centerAtomIndex || j >= this.elements.length || this.elements[j] != e1) continue; +if (pt.distanceSquared(a2) < this.distanceTolerance2) { +nFound++; +continue out; +}} +return false; +} +return true; +}, "JU.Quat,JU.T3,~N"); +Clazz_defineMethod(c$, "getPointIndex", +function(j){ +return (j < 0 ? -j : this.atomMap[j]) - 1; +}, "~N"); +Clazz_defineMethod(c$, "isLinear", +function(atoms){ +var v1 = null; +if (atoms.length < 2) return false; +for (var i = atoms.length; --i >= 0; ) { +if (i == this.centerAtomIndex) continue; +if (v1 == null) { +v1 = new JU.V3(); +v1.sub2(atoms[i], this.center); +v1.normalize(); +this.vTemp.setT(v1); +continue; +}this.vTemp.sub2(atoms[i], this.center); +this.vTemp.normalize(); +if (!this.isParallel(v1, this.vTemp)) return false; +} +return true; +}, "~A"); +Clazz_defineMethod(c$, "isParallel", +function(v1, v2){ +return (Math.abs(v1.dot(v2)) >= this.cosTolerance); +}, "JU.V3,JU.V3"); +Clazz_defineMethod(c$, "isPerpendicular", +function(v1, v2){ +return (Math.abs(v1.dot(v2)) <= 1 - this.cosTolerance); +}, "JU.V3,JU.V3"); +Clazz_defineMethod(c$, "getElementCounts", +function(){ +for (var i = this.points.length; --i >= 0; ) { +var e1 = this.elements[i]; +if (e1 > this.maxElement) this.maxElement = e1; +} +this.eCounts = Clazz_newIntArray (++this.maxElement, 0); +for (var i = this.points.length; --i >= 0; ) this.eCounts[this.elements[i]]++; + +}); +Clazz_defineMethod(c$, "findCAxes", +function(){ +var v1 = new JU.V3(); +var v2 = new JU.V3(); +var v3 = new JU.V3(); +for (var i = this.points.length; --i >= 0; ) { +if (i == this.centerAtomIndex) continue; +var a1 = this.points[i]; +var e1 = this.elements[i]; +for (var j = this.points.length; --j > i; ) { +var a2 = this.points[j]; +if (this.elements[j] != e1) continue; +v1.sub2(a1, this.center); +v2.sub2(a2, this.center); +v1.normalize(); +v2.normalize(); +if (this.isParallel(v1, v2)) { +this.getAllAxes(v1); +continue; +}if (this.nAxes[16] < JS.PointGroup.axesMaxN[16]) { +v3.ave(a1, a2); +v3.sub(this.center); +this.getAllAxes(v3); +}var order = (6.283185307179586 / v1.angle(v2)); +var iOrder = Clazz_doubleToInt(Math.floor(order + 0.01)); +var isIntegerOrder = (order - iOrder <= 0.02); +if (!isIntegerOrder || (iOrder = iOrder + 14) >= JS.PointGroup.maxAxis) continue; +if (this.nAxes[iOrder] < JS.PointGroup.axesMaxN[iOrder]) { +v3.cross(v1, v2); +this.checkAxisOrder(iOrder, v3, this.center); +}} +} +var vs = new Array(this.nAxes[16] * 2); +for (var i = 0; i < vs.length; i++) vs[i] = new JU.V3(); + +var n = 0; +for (var i = 0; i < this.nAxes[16]; i++) { +vs[n++].setT(this.axes[16][i].normalOrAxis); +vs[n].setT(this.axes[16][i].normalOrAxis); +vs[n++].scale(-1); +} +for (var i = vs.length; --i >= 2; ) for (var j = i; --j >= 1; ) for (var k = j; --k >= 0; ) { +v3.add2(vs[i], vs[j]); +v3.add(vs[k]); +if (v3.length() < 1) continue; +this.checkAxisOrder(17, v3, this.center); +} + + +var nMin = 2147483647; +var iMin = -1; +for (var i = 0; i < this.maxElement; i++) { +if (this.eCounts[i] < nMin && this.eCounts[i] > 2) { +nMin = this.eCounts[i]; +iMin = i; +}} +out : for (var i = 0; i < this.points.length - 2; i++) if (this.elements[i] == iMin) for (var j = i + 1; j < this.points.length - 1; j++) if (this.elements[j] == iMin) for (var k = j + 1; k < this.points.length; k++) if (this.elements[k] == iMin) { +v1.sub2(this.points[i], this.points[j]); +v2.sub2(this.points[i], this.points[k]); +v1.normalize(); +v2.normalize(); +v3.cross(v1, v2); +this.getAllAxes(v3); +v1.add2(this.points[i], this.points[j]); +v1.add(this.points[k]); +v1.normalize(); +if (!this.isParallel(v1, v3)) this.getAllAxes(v1); +if (this.nAxes[19] == JS.PointGroup.axesMaxN[19]) break out; +} + + +vs = new Array(this.maxElement); +for (var i = this.points.length; --i >= 0; ) { +var e1 = this.elements[i]; +if (vs[e1] == null) vs[e1] = new JU.V3(); + else if (this.haveInversionCenter) continue; +vs[e1].add(this.points[i]); +} +if (!this.haveInversionCenter) for (var i = 0; i < this.maxElement; i++) if (vs[i] != null) vs[i].scale(1 / this.eCounts[i]); + +for (var i = 0; i < this.maxElement; i++) if (vs[i] != null) for (var j = 0; j < this.maxElement; j++) { +if (i == j || vs[j] == null) continue; +if (this.haveInversionCenter) v1.cross(vs[i], vs[j]); + else v1.sub2(vs[i], vs[j]); +this.checkAxisOrder(16, v1, this.center); +} + +return this.getHighestOrder(); +}); +Clazz_defineMethod(c$, "getAllAxes", +function(v3){ +for (var o = 16; o < JS.PointGroup.maxAxis; o++) if (this.nAxes[o] < JS.PointGroup.axesMaxN[o]) this.checkAxisOrder(o, v3, this.center); + +}, "JU.V3"); +Clazz_defineMethod(c$, "getHighestOrder", +function(){ +var n = 0; +for (n = 14; --n > 1 && this.nAxes[n] == 0; ) { +} +if (n > 1) return (n + 14 < JS.PointGroup.maxAxis && this.nAxes[n + 14] > 0 ? n + 14 : n); +for (n = JS.PointGroup.maxAxis; --n > 1 && this.nAxes[n] == 0; ) { +} +return n; +}); +Clazz_defineMethod(c$, "checkAxisOrder", +function(iOrder, v, center){ +switch (iOrder) { +case 22: +if (this.nAxes[17] > 0) return false; +case 20: +case 18: +if (this.nAxes[19] > 0) return false; +break; +case 17: +if (this.nAxes[22] > 0) return false; +break; +case 19: +if (this.nAxes[18] > 0 || this.nAxes[20] > 0 || this.nAxes[22] > 0) return false; +break; +case 16: +break; +} +v.normalize(); +if (this.haveAxis(iOrder, v)) return false; +var q = JS.PointGroup.getQuaternion(v, iOrder); +if (!this.checkOperation(q, center, iOrder)) return false; +this.addAxis(iOrder, v); +switch (iOrder) { +case 16: +this.checkAxisOrder(4, v, center); +break; +case 17: +this.checkAxisOrder(3, v, center); +if (this.haveInversionCenter) this.addAxis(6, v); +break; +case 18: +this.addAxis(16, v); +this.checkAxisOrder(4, v, center); +this.checkAxisOrder(8, v, center); +break; +case 19: +this.checkAxisOrder(5, v, center); +if (this.haveInversionCenter) this.addAxis(10, v); +break; +case 20: +this.addAxis(16, v); +this.addAxis(17, v); +this.checkAxisOrder(3, v, center); +this.checkAxisOrder(6, v, center); +this.checkAxisOrder(12, v, center); +break; +case 22: +this.addAxis(16, v); +this.addAxis(18, v); +break; +} +return true; +}, "~N,JU.V3,JU.T3"); +Clazz_defineMethod(c$, "addAxis", +function(iOrder, v){ +if (this.haveAxis(iOrder, v)) return; +if (this.axes[iOrder] == null) this.axes[iOrder] = new Array(JS.PointGroup.axesMaxN[iOrder]); +this.axes[iOrder][this.nAxes[iOrder]++] = Clazz_innerTypeInstance(JS.PointGroup.Operation, this, null, v, iOrder); +}, "~N,JU.V3"); +Clazz_defineMethod(c$, "haveAxis", +function(iOrder, v){ +if (this.nAxes[iOrder] == JS.PointGroup.axesMaxN[iOrder]) { +return true; +}if (this.nAxes[iOrder] > 0) for (var i = this.nAxes[iOrder]; --i >= 0; ) { +if (this.isParallel(v, this.axes[iOrder][i].normalOrAxis)) return true; +} +return false; +}, "~N,JU.V3"); +Clazz_defineMethod(c$, "findPlanes", +function(){ +var pt = new JU.P3(); +var v1 = new JU.V3(); +var v2 = new JU.V3(); +var v3 = new JU.V3(); +var nPlanes = 0; +var haveAxes = (this.getHighestOrder() > 1); +for (var i = this.points.length; --i >= 0; ) { +if (i == this.centerAtomIndex) continue; +var a1 = this.points[i]; +var e1 = this.elements[i]; +for (var j = this.points.length; --j > i; ) { +if (haveAxes && this.elements[j] != e1) continue; +var a2 = this.points[j]; +pt.add2(a1, a2); +pt.scale(0.5); +v1.sub2(a1, this.center); +v2.sub2(a2, this.center); +v1.normalize(); +v2.normalize(); +if (!this.isParallel(v1, v2)) { +v3.cross(v1, v2); +v3.normalize(); +nPlanes = this.getPlane(v3); +}v3.sub2(a2, a1); +v3.normalize(); +nPlanes = this.getPlane(v3); +if (nPlanes == JS.PointGroup.axesMaxN[0]) return nPlanes; +} +} +if (haveAxes) for (var i = 16; i < JS.PointGroup.maxAxis; i++) for (var j = 0; j < this.nAxes[i]; j++) nPlanes = this.getPlane(this.axes[i][j].normalOrAxis); + + +return nPlanes; +}); +Clazz_defineMethod(c$, "getPlane", +function(v3){ +if (!this.haveAxis(0, v3) && this.checkOperation(JU.Quat.newVA(v3, 180), this.center, -1)) this.axes[0][this.nAxes[0]++] = Clazz_innerTypeInstance(JS.PointGroup.Operation, this, null, v3); +return this.nAxes[0]; +}, "JU.V3"); +Clazz_defineMethod(c$, "findAdditionalAxes", +function(nPlanes){ +var planes = this.axes[0]; +var Cn = 0; +if (nPlanes > 1 && ((Cn = nPlanes + 14) < JS.PointGroup.maxAxis) && this.nAxes[Cn] == 0) { +this.vTemp.cross(planes[0].normalOrAxis, planes[1].normalOrAxis); +if (!this.checkAxisOrder(Cn, this.vTemp, this.center) && nPlanes > 2) { +this.vTemp.cross(planes[1].normalOrAxis, planes[2].normalOrAxis); +this.checkAxisOrder(Cn - 1, this.vTemp, this.center); +}}if (this.nAxes[16] == 0 && nPlanes > 2) { +for (var i = 0; i < nPlanes - 1; i++) { +for (var j = i + 1; j < nPlanes; j++) { +this.vTemp.add2(planes[1].normalOrAxis, planes[2].normalOrAxis); +this.checkAxisOrder(16, this.vTemp, this.center); +} +} +}}, "~N"); +c$.getQuaternion = Clazz_defineMethod(c$, "getQuaternion", +function(v, iOrder){ +return JU.Quat.newVA(v, (iOrder < 14 ? 180 : 0) + (iOrder == 0 ? 0 : Clazz_doubleToInt(360 / (iOrder % 14)))); +}, "JU.V3,~N"); +Clazz_defineMethod(c$, "getInfo", +function(modelIndex, drawID, asInfo, type, index, scaleFactor){ +var asDraw = (drawID != null); +this.info = (asInfo ? new java.util.Hashtable() : null); +var v = new JU.V3(); +var op; +if (scaleFactor == 0) scaleFactor = 1; +this.scale = scaleFactor; +var nType = Clazz_newIntArray (4, 2, 0); +for (var i = 1; i < JS.PointGroup.maxAxis; i++) for (var j = this.nAxes[i]; --j >= 0; ) nType[this.axes[i][j].type][0]++; + + +var sb = new JU.SB().append("# ").appendI(this.nAtoms).append(" atoms\n"); +var name = this.getConventionalName(this.name); +if (asDraw) { +drawID = "draw " + drawID; +var haveType = (type != null && type.length > 0); +this.drawType = type = (haveType ? type : ""); +this.drawIndex = index; +var anyProperAxis = (type.equalsIgnoreCase(this.getConventionalName("Cn"))); +var anyImproperAxis = (type.equalsIgnoreCase(this.getConventionalName("Sn"))); +sb.append("set perspectivedepth off;\n"); +var m = "_" + modelIndex + "_"; +if (!haveType) sb.append(drawID + "pg0").append(m).append("* delete;draw pgva").append(m).append("* delete;draw pgvp").append(m).append("* delete;"); +if (!haveType || type.equalsIgnoreCase("Ci")) sb.append(drawID + "pg0").append(m).append(this.haveInversionCenter ? "inv " : " ").append(JU.Escape.eP(this.center)).append(this.haveInversionCenter ? "\"i\";\n" : ";\n"); +var offset = 0.1; +for (var i = 2; i < JS.PointGroup.maxAxis; i++) { +if (i == 14) offset = 0.1; +if (this.nAxes[i] == 0) continue; +var sglabel = (!this.$isLinear ? this.axes[i][0].getLabel(false) : "C_infinity"); +var label = (!this.$isLinear ? this.axes[i][0].getLabel(true) : "C_infinity"); +offset += 0.25; +var scale = scaleFactor * 1.05 * this.radius + offset * 80 / this.sppa; +var isProper = (i >= 14); +if (!haveType || type.equalsIgnoreCase(label) || anyProperAxis && isProper || anyImproperAxis && !isProper) for (var j = 0; j < this.nAxes[i]; j++) { +if (index > 0 && j + 1 != index) continue; +op = this.axes[i][j]; +v.add2(op.normalOrAxis, this.center); +sb.append(drawID + "pgva").append(m).append(sglabel).append("_").appendI(j + 1).append(" width 0.05 scale ").appendF(op.type == 2 ? -scale : scale).append(" ").append(JU.Escape.eP(v)); +v.scaleAdd2(-2, op.normalOrAxis, v); +var isPA = (!this.$isLinear && this.principalAxis != null && op.index == this.principalAxis.index); +sb.append(JU.Escape.eP(v)).append("\"").append(label).append(isPA ? "" : "").append("\" color ").append(isPA ? "red" : op.type == 2 ? "blue" : "orange").append(";\n"); +} +} +if (!haveType || type.equalsIgnoreCase(this.getConventionalName("Cs"))) { +for (var j = 0; j < this.nAxes[0]; j++) { +if (index > 0 && j + 1 != index) continue; +op = this.axes[0][j]; +sb.append(drawID + "pgvp").append(m).appendI(j + 1).append("disk scale ").appendF(scaleFactor * this.radius * 2).append(" CIRCLE PLANE ").append(JU.Escape.eP(this.center)); +v.add2(op.normalOrAxis, this.center); +sb.append(JU.Escape.eP(v)).append(" color translucent yellow;\n"); +v.add2(op.normalOrAxis, this.center); +sb.append(drawID + "pgvp").append(m).appendI(j + 1).append("ring width 0.05 scale ").appendF(scaleFactor * this.radius * 2).append(" arc ").append(JU.Escape.eP(v)); +v.scaleAdd2(-2, op.normalOrAxis, v); +sb.append(JU.Escape.eP(v)); +v.add3(0.011, 0.012, 0.013); +sb.append(JU.Escape.eP(v)).append("{0 360 0.5} color ").append(this.principalPlane != null && op.index == this.principalPlane.index ? "red" : "blue").append(";\n"); +} +}sb.append("# name=").append(name); +sb.append(", n" + this.getConventionalName("Ci") + "=").appendI(this.haveInversionCenter ? 1 : 0); +sb.append(", n" + this.getConventionalName("Cs") + "=").appendI(this.nAxes[0]); +sb.append(", n" + this.getConventionalName("Cn") + "=").appendI(nType[1][0]); +sb.append(", n" + this.getConventionalName("Sn") + "=").appendI(nType[2][0]); +sb.append(": "); +for (var i = JS.PointGroup.maxAxis; --i >= 2; ) if (this.nAxes[i] > 0) { +var axisName = this.getConventionalName((i < 14 ? "S" : "C") + (i % 14)); +sb.append(" n").append(axisName); +sb.append("=").appendI(this.nAxes[i]); +} +sb.append(";\n"); +sb.append("print '" + name + "';\n"); +this.drawInfo = sb.toString(); +if (JU.Logger.debugging) JU.Logger.info(this.drawInfo); +return this.drawInfo; +}var n = 0; +var nTotal = 1; +var nElements = 0; +var ctype = (this.haveInversionCenter ? this.getConventionalName("Ci") : "center"); +if (this.haveInversionCenter) { +nTotal++; +nElements++; +}if (asInfo) { +if (this.center != null) { +this.info.put(ctype, this.center); +if (this.haveInversionCenter) this.info.put("center", this.center); +this.info.put(ctype, this.center); +}} else { +sb.append("\n\n").append(name).append("\t").append(ctype).append("\t").append(JU.Escape.eP(this.center)); +}for (var i = JS.PointGroup.maxAxis; --i >= 0; ) { +if (this.nAxes[i] > 0) { +n = JS.PointGroup.nUnique[i]; +var label = this.axes[i][0].getLabel(true); +var sglabel = this.axes[i][0].getLabel(false); +if (asInfo) this.info.put("n" + sglabel, Integer.$valueOf(this.nAxes[i])); + else sb.append("\n\n").append(name).append("\tn").append(label).append("\t").appendI(this.nAxes[i]).append("\t").appendI(n); +n *= this.nAxes[i]; +nTotal += n; +nElements += this.nAxes[i]; +nType[this.axes[i][0].type][1] += n; +var vinfo = (asInfo ? new JU.Lst() : null); +var minfo = (asInfo ? new JU.Lst() : null); +for (var j = 0; j < this.nAxes[i]; j++) { +var aop = this.axes[i][j]; +if (asInfo) { +vinfo.addLast(aop.normalOrAxis); +minfo.addLast(aop.getM3()); +} else { +sb.append("\n").append(name).append("\t").append(sglabel).append("_").appendI(j + 1).append("\t").appendO(aop.normalOrAxis); +}} +if (asInfo) { +this.info.put(sglabel, vinfo); +this.info.put(sglabel + "_m", minfo); +}}} +if (!asInfo) { +sb.append("\n"); +sb.append("\n").append(name).append("\ttype\tnElements\tnUnique"); +sb.append("\n").append(name).append("\t" + this.getConventionalName("E") + "\t 1\t 1"); +n = (this.haveInversionCenter ? 1 : 0); +sb.append("\n").append(name).append("\t" + this.getConventionalName("Ci") + "\t ").appendI(n).append("\t ").appendI(n); +sb.append("\n").append(name).append("\t" + this.getConventionalName("Cs") + "\t"); +JU.PT.rightJustify(sb, " ", this.nAxes[0] + "\t"); +JU.PT.rightJustify(sb, " ", this.nAxes[0] + "\n"); +sb.append(name).append("\t" + this.getConventionalName("Cn") + "\t"); +JU.PT.rightJustify(sb, " ", nType[1][0] + "\t"); +JU.PT.rightJustify(sb, " ", nType[1][1] + "\n"); +sb.append(name).append("\t" + this.getConventionalName("Sn") + "\t"); +JU.PT.rightJustify(sb, " ", nType[2][0] + "\t"); +JU.PT.rightJustify(sb, " ", nType[2][1] + "\n"); +sb.append(name).append("\t\tTOTAL\t"); +JU.PT.rightJustify(sb, " ", nTotal + "\n"); +return (this.textInfo = sb.toString()); +}this.info.put("name", this.name); +this.info.put("hmName", this.getHermannMauguinName()); +this.info.put("nAtoms", Integer.$valueOf(this.nAtoms)); +this.info.put("nTotal", Integer.$valueOf(nTotal)); +this.info.put("nElements", Integer.$valueOf(nElements)); +this.info.put("nCi", Integer.$valueOf(this.haveInversionCenter ? 1 : 0)); +if (this.haveInversionCenter) this.info.put("Ci_m", JU.M3.newM3(JS.PointGroup.mInv)); +this.info.put("nCs", Integer.$valueOf(this.nAxes[0])); +this.info.put("nCn", Integer.$valueOf(nType[1][0])); +this.info.put("nSn", Integer.$valueOf(nType[2][0])); +this.info.put("distanceTolerance", Float.$valueOf(this.distanceTolerance)); +this.info.put("linearTolerance", Float.$valueOf(this.linearTolerance)); +this.info.put("points", this.points); +this.info.put("detail", sb.toString().$replace('\n', ';')); +if (this.principalAxis != null && this.principalAxis.index > 0) this.info.put("principalAxis", this.principalAxis.normalOrAxis); +if (this.principalPlane != null && this.principalPlane.index > 0) this.info.put("principalPlane", this.principalPlane.normalOrAxis); +return this.info; +}, "~N,~S,~B,~S,~N,~N"); +Clazz_defineMethod(c$, "isDrawType", +function(type, index, scale){ +return (this.drawInfo != null && this.drawType.equals(type == null ? "" : type) && this.drawIndex == index && this.scale == scale); +}, "~S,~N,~N"); +c$.getHMfromSFName = Clazz_defineMethod(c$, "getHMfromSFName", +function(name){ +if (JS.PointGroup.htSFToHM == null) { +JS.PointGroup.htSFToHM = new java.util.Hashtable(); +var syms = JS.PointGroup.SF2HM; +JS.PointGroup.addNames("E", "1"); +JS.PointGroup.addNames("Ci", "-1"); +JS.PointGroup.addNames("Cn", "n"); +JS.PointGroup.addNames("Sn", "-n"); +for (var i = 0; i < syms.length; i++) { +var list = syms[i].$plit(","); +var sym = list[0]; +if (list.length == 2) { +JS.PointGroup.addNames(sym, list[1]); +continue; +}var type = sym.substring(0, 1); +var ext = sym.substring(2, sym.length); +for (var n = 1; n < 13; n++) { +var val = list[n]; +if (val.length > 0) { +JS.PointGroup.addNames(type + n + ext, val); +System.out.println(type + n + ext + "\t" + val); +}} +if (list.length == 14) { +JS.PointGroup.addNames(type + "\u221e" + ext, list[13]); +}} +}var hm = JS.PointGroup.htSFToHM.get(name); +return (hm == null ? name : hm); +}, "~S"); +c$.addNames = Clazz_defineMethod(c$, "addNames", +function(sch, hm){ +JS.PointGroup.htSFToHM.put(sch, hm); +JS.PointGroup.htSFToHM.put(hm, sch); +}, "~S,~S"); +c$.$PointGroup$Operation$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.type = 0; +this.order = 0; +this.index = 0; +this.normalOrAxis = null; +this.typeOrder = 0; +this.mat = null; +Clazz_instantialize(this, arguments);}, JS.PointGroup, "Operation", null); +Clazz_makeConstructor(c$, +function(){ +this.index = ++this.b$["JS.PointGroup"].nOps; +this.type = 3; +this.order = 1; +this.typeOrder = 1; +if (JU.Logger.debugging) JU.Logger.debug("new operation -- " + JS.PointGroup.typeNames[this.type]); +}); +Clazz_makeConstructor(c$, +function(v, i){ +this.index = ++this.b$["JS.PointGroup"].nOps; +this.type = (i < 14 ? 2 : 1); +this.typeOrder = i; +this.order = i % 14; +this.normalOrAxis = JU.Quat.newVA(v, 180).getNormal(); +if (JU.Logger.debugging) JU.Logger.debug("new operation -- " + (this.order == i ? "S" : "C") + this.order + " " + this.normalOrAxis); +}, "JU.V3,~N"); +Clazz_makeConstructor(c$, +function(v){ +if (v == null) return; +this.index = ++this.b$["JS.PointGroup"].nOps; +this.type = 0; +this.normalOrAxis = JU.Quat.newVA(v, 180).getNormal(); +if (JU.Logger.debugging) JU.Logger.debug("new operation -- plane " + this.normalOrAxis); +}, "JU.V3"); +Clazz_defineMethod(c$, "getLabel", +function(conventional){ +var s; +switch (this.type) { +case 0: +s = "Cs"; +break; +case 2: +s = "S" + this.order; +break; +default: +s = "C" + this.order; +break; +} +return (conventional ? this.b$["JS.PointGroup"].getConventionalName(s) : s); +}, "~B"); +Clazz_defineMethod(c$, "getM3", +function(){ +if (this.mat != null) return this.mat; +var m = JU.M3.newM3(JS.PointGroup.getQuaternion(this.normalOrAxis, this.typeOrder).getMatrix()); +if (this.type == 0 || this.type == 2) m.mul(JS.PointGroup.mInv); +this.cleanMatrix(m); +return this.mat = m; +}); +Clazz_defineMethod(c$, "cleanMatrix", +function(m){ +for (var i = 0; i < 3; i++) for (var j = 0; j < 3; j++) m.setElement(i, j, this.approx0(m.getElement(i, j))); + + +}, "JU.M3"); +Clazz_defineMethod(c$, "approx0", +function(v){ +return (v > 1e-15 || v < -1.0E-15 ? v : 0); +}, "~N"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.getLabel(false) + " " + this.normalOrAxis; +}); +/*eoif4*/})(); +}; +c$.axesMaxN = Clazz_newIntArray(-1, [15, 0, 0, 1, 3, 1, 10, 0, 1, 0, 6, 0, 1, 0, 0, 0, 15, 10, 6, 6, 10, 0, 1]); +c$.nUnique = Clazz_newIntArray(-1, [1, 0, 0, 2, 2, 4, 2, 0, 4, 0, 4, 0, 4, 0, 0, 0, 1, 2, 2, 4, 2, 0, 4]); +c$.maxAxis = JS.PointGroup.axesMaxN.length; +c$.typeNames = Clazz_newArray(-1, ["plane", "proper axis", "improper axis", "center of inversion"]); +c$.mInv = JU.M3.newA9( Clazz_newFloatArray(-1, [-1, 0, 0, 0, -1, 0, 0, 0, -1])); +c$.SF2HM = ("Cn,1,2,3,4,5,6,7,8,9,10,11,12|Cnv,m,2m,3m,4mm,5m,6mm,7m,8mm,9m,10mm,11m,12mm,\u221em|Sn,,-1,-6,-4,(-10),-3,(-14),-8,(-18),-5,(-22),(-12)|Cnh,m,2/m,-6,4/m,-10,6/m,-14,8/m,-18,10/m,-22,12/m|Dn,,222,32,422,52,622,72,822,92,(10)22,(11)2,(12)22|Dnd,,-42m,-3m,-82m,-5m,(-12)2m,-7m,(-16)2m,-9m,(-20)2m,(-11)m,(-24)2m|Dnh,,mmm,-6m2,4/mmm,(-10)m2,6/mmm,(-14)m2,8/mmm,(-18)m2,10/mmm,(-22)m2,12/mmm,\u221e/mm|Ci,-1|Cs,m|T,23|Th,m-3|Td,-43m|O,432|Oh,m-3m").$plit("\\|"); +c$.htSFToHM = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["java.util.Hashtable"], "JS.SpaceGroup", ["java.util.Arrays", "JU.AU", "$.Lst", "$.M4", "$.P3", "$.PT", "$.SB", "JS.HallInfo", "$.HallTranslation", "$.SymmetryOperation", "$.UnitCell", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.operations = null; +this.finalOperations = null; +this.allOperations = null; +this.xyzList = null; +this.uniqueAxis = '\0'; +this.axisChoice = '\0'; +this.itaNumber = null; +this.jmolId = null; +this.clegId = null; +this.operationCount = 0; +this.latticeOp = -1; +this.isBio = false; +this.latticeType = 'P'; +this.itaTransform = null; +this.itaIndex = null; +this.index = 0; +this.derivedIndex = -1; +this.isSSG = false; +this.name = "unknown!"; +this.hallSymbol = null; +this.hallSymbolAlt = null; +this.crystalClass = null; +this.hmSymbol = null; +this.jmolIdExt = null; +this.hallInfo = null; +this.latticeParameter = 0; +this.modDim = 0; +this.doNormalize = true; +this.info = null; +this.nHallOperators = null; +this.hmSymbolFull = null; +this.hmSymbolExt = null; +this.hmSymbolAbbr = null; +this.hmSymbolAlternative = null; +this.hmSymbolAbbrShort = null; +this.ambiguityType = '\0'; +this.strName = null; +this.displayName = null; +Clazz_instantialize(this, arguments);}, JS, "SpaceGroup", null, Cloneable); +Clazz_makeConstructor(c$, +function(index, strData, doInit){ +++JS.SpaceGroup.sgIndex; +if (index < 0) index = JS.SpaceGroup.sgIndex; +this.index = index; +this.init(doInit && strData == null); +if (doInit && strData != null) this.buildSelf(strData); +}, "~N,~S,~B"); +Clazz_defineMethod(c$, "setFrom", +function(sg, isITA){ +if (isITA) { +this.setName(sg.itaNumber.equals("0") ? this.clegId : "HM:" + sg.hmSymbolFull + " #" + this.clegId); +this.derivedIndex = -2; +} else { +this.setName(sg.getName()); +this.derivedIndex = sg.index; +}this.clegId = sg.clegId; +this.itaIndex = sg.itaIndex; +this.crystalClass = sg.crystalClass; +this.hallSymbol = sg.hallSymbol; +this.hmSymbol = sg.hmSymbol; +this.hmSymbolAbbr = sg.hmSymbolAbbr; +this.hmSymbolAbbrShort = sg.hmSymbolAbbrShort; +this.hmSymbolAlternative = sg.hmSymbolAlternative; +this.hmSymbolExt = sg.hmSymbolExt; +this.hmSymbolFull = sg.hmSymbolFull; +this.itaNumber = sg.itaNumber; +this.itaTransform = sg.itaTransform; +this.jmolId = null; +this.jmolIdExt = null; +this.latticeType = sg.latticeType; +this.strName = this.displayName = null; +return this; +}, "JS.SpaceGroup,~B"); +c$.getNull = Clazz_defineMethod(c$, "getNull", +function(doInit, doNormalize, doFinalize){ +var sg = new JS.SpaceGroup(-1, null, doInit); +sg.doNormalize = doNormalize; +if (doFinalize) sg.setFinalOperations(); +return sg; +}, "~B,~B,~B"); +Clazz_defineMethod(c$, "init", +function(addXYZ){ +this.xyzList = new java.util.Hashtable(); +this.operationCount = 0; +if (addXYZ) this.addSymmetry("x,y,z", 0, false); +}, "~B"); +c$.createSpaceGroup = Clazz_defineMethod(c$, "createSpaceGroup", +function(desiredSpaceGroupIndex, name, data, modDim){ +var sg = null; +if (desiredSpaceGroupIndex >= 0) { +sg = JS.SpaceGroup.SG[desiredSpaceGroupIndex]; +} else { +if (Clazz_instanceOf(data,"JU.Lst")) sg = JS.SpaceGroup.createSGFromList(name, data); + else sg = JS.SpaceGroup.determineSpaceGroupNA(name, data); +if (sg == null) sg = JS.SpaceGroup.createSpaceGroupN(modDim <= 0 ? name : "x1,x2,x3,x4,x5,x6,x7,x8,x9".substring(0, modDim * 3 + 8)); +}if (sg != null) sg.generateAllOperators(null); +return sg; +}, "~N,~S,~O,~N"); +Clazz_defineMethod(c$, "cloneInfoTo", +function(sg0){ +try { +var sg = this.clone(); +sg.operations = sg0.operations; +sg.finalOperations = sg0.finalOperations; +sg.xyzList = sg0.xyzList; +return sg; +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}, "JS.SpaceGroup"); +Clazz_defineMethod(c$, "getItaIndex", +function(){ +return (this.itaIndex != null && !"--".equals(this.itaIndex) ? this.itaIndex : !"0".equals(this.itaNumber) ? this.itaNumber : !"--".equals(this.hallSymbol) ? "[" + this.hallSymbol + "]" : "?"); +}); +Clazz_defineMethod(c$, "getIndex", +function(){ +return (this.derivedIndex >= 0 ? this.derivedIndex : this.index); +}); +c$.createSGFromList = Clazz_defineMethod(c$, "createSGFromList", +function(name, data){ +var sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;--", true); +sg.doNormalize = false; +sg.setName(name); +var n = data.size(); +for (var i = 0; i < n; i++) { +var operation = data.get(i); +if (Clazz_instanceOf(operation,"JS.SymmetryOperation")) { +var op = operation; +var iop = sg.addOp(op, op.xyz, false); +sg.operations[iop].setTimeReversal(op.timeReversal); +} else { +sg.addSymmetrySM("xyz matrix:" + operation, operation); +}} +var sgn = sg.getDerivedSpaceGroup(); +if (sgn != null) sg = sgn; +return sg; +}, "~S,JU.Lst"); +Clazz_defineMethod(c$, "addSymmetry", +function(xyz, opId, allowScaling){ +xyz = xyz.toLowerCase(); +return (xyz.indexOf("[[") < 0 && xyz.indexOf("x4") < 0 && xyz.indexOf(";") < 0 && (xyz.indexOf("x") < 0 || xyz.indexOf("y") < 0 || xyz.indexOf("z") < 0) ? -1 : this.addOperation(xyz, opId, allowScaling)); +}, "~S,~N,~B"); +Clazz_defineMethod(c$, "setFinalOperations", +function(){ +this.setFinalOperationsForAtoms(3, null, 0, 0, false); +}); +Clazz_defineMethod(c$, "setFinalOperationsForAtoms", +function(dim, atoms, atomIndex, count, doNormalize){ +if (this.hallInfo == null && this.latticeParameter != 0) { +var h = new JS.HallInfo(JS.HallTranslation.getHallLatticeEquivalent(this.latticeParameter)); +this.generateAllOperators(h); +}this.finalOperations = null; +this.isBio = (this.name.indexOf("bio") >= 0); +if (!this.isBio && this.index >= JS.SpaceGroup.SG.length && this.name.indexOf("SSG:") < 0 && this.name.indexOf("[subsystem") < 0) { +var sg = this.getDerivedSpaceGroup(); +if (sg != null && sg !== this) { +this.setFrom(sg, false); +}}if (this.operationCount == 0) this.addOperation("x,y,z", 1, false); +this.finalOperations = new Array(this.operationCount); +var op = null; +var doOffset = (doNormalize && count > 0 && atoms != null); +if (doOffset) { +op = this.finalOperations[0] = new JS.SymmetryOperation(this.operations[0], 0, true); +if (op.sigma == null) JS.SymmetryOperation.normalizeOperationToCentroid(dim, op, atoms, atomIndex, count); +var atom = atoms[atomIndex]; +var c = JU.P3.newP(atom); +op.rotTrans(c); +if (c.distance(atom) > 0.0001) { +for (var i = 0; i < count; i++) { +atom = atoms[atomIndex + i]; +c.setT(atom); +op.rotTrans(c); +atom.setT(c); +} +}if (!doNormalize) op = null; +}for (var i = 0; i < this.operationCount; i++) { +if (i > 0 || op == null) { +op = this.finalOperations[i] = new JS.SymmetryOperation(this.operations[i], 0, doNormalize); +}if (doOffset && op.sigma == null) { +JS.SymmetryOperation.normalizeOperationToCentroid(dim, op, atoms, atomIndex, count); +}op.getCentering(); +} +}, "~N,~A,~N,~N,~B"); +Clazz_defineMethod(c$, "getOperationCount", +function(){ +if (this.finalOperations == null) this.setFinalOperations(); +return this.finalOperations.length; +}); +Clazz_defineMethod(c$, "getOperation", +function(i){ +return this.finalOperations[i]; +}, "~N"); +Clazz_defineMethod(c$, "getAdditionalOperationsCount", +function(){ +if (this.finalOperations == null) this.setFinalOperations(); +if (this.allOperations == null) { +this.allOperations = JS.SymmetryOperation.getAdditionalOperations(this.finalOperations); +}return this.allOperations.length - this.getOperationCount(); +}); +Clazz_defineMethod(c$, "getAdditionalOperations", +function(){ +this.getAdditionalOperationsCount(); +return this.allOperations; +}); +Clazz_defineMethod(c$, "getAllOperation", +function(i){ +return this.allOperations[i]; +}, "~N"); +Clazz_defineMethod(c$, "getXyz", +function(i, doNormalize){ +return (this.finalOperations == null ? this.operations[i].getXyz(doNormalize) : this.finalOperations[i].getXyz(doNormalize)); +}, "~N,~B"); +c$.findSpaceGroupFromXYZ = Clazz_defineMethod(c$, "findSpaceGroupFromXYZ", +function(xyzList){ +var sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;--", true); +sg.doNormalize = false; +var xyzlist = xyzList.$plit(";"); +for (var i = 0, n = xyzlist.length; i < n; i++) { +var op = new JS.SymmetryOperation(null, i, false); +op.setMatrixFromXYZ(xyzlist[i], 0, false); +sg.addOp(op, xyzlist[i], false); +} +return JS.SpaceGroup.findSpaceGroup(sg.operationCount, sg.getCanonicalSeitzList()); +}, "~S"); +c$.getInfo = Clazz_defineMethod(c$, "getInfo", +function(sg, spaceGroup, params, asMap, andNonstandard){ +try { +if (sg != null && sg.index >= JS.SpaceGroup.SG.length) { +var sgDerived = JS.SpaceGroup.findSpaceGroup(sg.operationCount, sg.getCanonicalSeitzList()); +if (sgDerived != null) sg = sgDerived; +}if (params != null) { +if (sg == null) { +if (spaceGroup.indexOf("[") >= 0) spaceGroup = spaceGroup.substring(0, spaceGroup.indexOf("[")).trim(); +if (spaceGroup.equals("unspecified!")) return "no space group identified in file"; +sg = JS.SpaceGroup.determineSpaceGroupNA(spaceGroup, params); +}} else if (spaceGroup.equalsIgnoreCase("ALL")) { +return JS.SpaceGroup.dumpAll(asMap); +} else if (spaceGroup.equalsIgnoreCase("MAP")) { +return JS.SpaceGroup.dumpAll(true); +} else if (spaceGroup.equalsIgnoreCase("ALLSEITZ")) { +return JS.SpaceGroup.dumpAllSeitz(); +} else { +sg = JS.SpaceGroup.determineSpaceGroupN(spaceGroup); +}if (sg == null) { +var sgFound = JS.SpaceGroup.createSpaceGroupN(spaceGroup); +if (sgFound != null) sgFound = JS.SpaceGroup.findSpaceGroup(sgFound.operationCount, sgFound.getCanonicalSeitzList()); +if (sgFound != null) sg = sgFound; +}if (sg != null) { +if (asMap) { +return sg.dumpInfoObj(); +}var sb = new JU.SB(); +while (sg != null) { +sb.append(sg.dumpInfo()); +if (sg.index >= JS.SpaceGroup.SG.length || !andNonstandard) break; +sg = JS.SpaceGroup.determineSpaceGroupNS(spaceGroup, sg); +} +return sb.toString(); +}return asMap ? null : "?"; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return "?"; +} else { +throw e; +} +} +}, "JS.SpaceGroup,~S,~A,~B,~B"); +Clazz_defineMethod(c$, "dumpInfo", +function(){ +var info = this.dumpCanonicalSeitzList(); +if (Clazz_instanceOf(info,"JS.SpaceGroup")) return (info).dumpInfo(); +var sb = new JU.SB().append("\nHermann-Mauguin symbol: "); +if (this.hmSymbol == null || this.hmSymbolExt == null) sb.append("?"); + else sb.append(this.hmSymbol).append(this.hmSymbolExt.length > 0 ? ":" + this.hmSymbolExt : ""); +if (this.itaNumber != null) { +sb.append("\ninternational table number: ").append(this.itaNumber).append(this.itaTransform != null ? ":" + this.itaTransform : "").append("\ncrystal class: " + this.crystalClass); +}if (this.jmolId != null) { +sb.append("\nJmol_ID: ").append(this.jmolId).append(" (" + this.itaIndex + ")"); +}sb.append("\n\n").append(this.hallInfo == null ? "Hall symbol unknown" : JU.Logger.debugging ? this.hallInfo.dumpInfo() : ""); +sb.append("\n\n").appendI(this.operationCount).append(" operators").append(this.hallInfo != null && !this.hallInfo.hallSymbol.equals("--") ? " from Hall symbol " + this.hallInfo.hallSymbol + " #" + this.jmolId : "").append(": "); +for (var i = 0; i < this.operationCount; i++) { +sb.append("\n").append(this.operations[i].xyz); +} +return sb.toString(); +}); +Clazz_defineMethod(c$, "dumpInfoObj", +function(){ +var info = this.dumpCanonicalSeitzList(); +if (Clazz_instanceOf(info,"JS.SpaceGroup")) return (info).dumpInfoObj(); +var map = new java.util.Hashtable(); +if (this.itaNumber != null && !this.itaNumber.equals("0")) { +var s = (this.hmSymbol == null || this.hmSymbolExt == null ? "?" : this.hmSymbol + (this.hmSymbolExt.length > 0 ? ":" + this.hmSymbolExt : "")); +map.put("HermannMauguinSymbol", s); +map.put("ita", Integer.$valueOf(JU.PT.parseInt(this.itaNumber))); +map.put("itaIndex", this.itaIndex == null ? "n/a" : this.itaIndex); +map.put("clegId", this.itaIndex == null ? "n/a" : this.clegId); +if (this.jmolId != null) map.put("jmolId", this.jmolId); +map.put("crystalClass", this.crystalClass); +map.put("operationCount", Integer.$valueOf(this.operationCount)); +}var lst = new JU.Lst(); +for (var i = 0; i < this.operationCount; i++) { +lst.addLast(this.operations[i].xyz); +} +map.put("operationsXYZ", lst); +if (this.hallInfo != null && this.hallInfo.hallSymbol != null) map.put("HallSymbol", this.hallInfo.hallSymbol); +if (this.hallSymbolAlt != null) map.put("HallSymbolAlt", this.hallSymbolAlt); +return map; +}); +Clazz_defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_defineMethod(c$, "getLatticeDesignation", +function(){ +return JS.HallTranslation.getLatticeDesignation(this.latticeParameter); +}); +Clazz_defineMethod(c$, "setLatticeParam", +function(latticeParameter){ +this.latticeParameter = latticeParameter; +if (latticeParameter > 10) this.latticeParameter = -JS.HallTranslation.getLatticeIndex(JS.HallTranslation.getLatticeCode(latticeParameter)); +}, "~N"); +Clazz_defineMethod(c$, "dumpCanonicalSeitzList", +function(){ +if (this.nHallOperators != null) { +this.hallInfo = new JS.HallInfo(this.hallSymbol); +this.generateAllOperators(null); +}var s = this.getCanonicalSeitzList(); +if (this.index >= JS.SpaceGroup.SG.length) { +var sgDerived = JS.SpaceGroup.findSpaceGroup(this.operationCount, s); +if (sgDerived != null) return sgDerived.getCanonicalSeitzList(); +}return (this.index >= 0 && this.index < JS.SpaceGroup.SG.length ? this.hallSymbol + " = " : "") + s; +}); +Clazz_defineMethod(c$, "getDerivedSpaceGroup", +function(){ +if (this.derivedIndex == -2 || this.index >= 0 && this.index < JS.SpaceGroup.SG.length || this.modDim > 0 || this.operations == null || this.operations.length == 0 || this.operations[0].timeReversal != 0) return this; +if (this.finalOperations != null) this.setFinalOperations(); +var s = this.getCanonicalSeitzList(); +return (s == null ? null : JS.SpaceGroup.findSpaceGroup(this.operationCount, s)); +}); +Clazz_defineMethod(c$, "getCanonicalSeitzList", +function(){ +return JS.SpaceGroup.getCanonicalSeitzForOperations(this.operations, this.operationCount); +}); +c$.getCanonicalSeitzForOperations = Clazz_defineMethod(c$, "getCanonicalSeitzForOperations", +function(operations, n){ +var list = new Array(n); +for (var i = 0; i < n; i++) list[i] = JS.SymmetryOperation.dumpSeitz(operations[i], true); + +java.util.Arrays.sort(list, 0, n); +var sb = new JU.SB().append("\n["); +for (var i = 0; i < n; i++) sb.append(list[i].$replace('\t', ' ').$replace('\n', ' ')).append("; "); + +sb.append("]"); +return sb.toString(); +}, "~A,~N"); +c$.findSpaceGroup = Clazz_defineMethod(c$, "findSpaceGroup", +function(opCount, s){ +var lst = JS.SpaceGroup.htByOpCount.get(Integer.$valueOf(opCount)); +if (lst != null) for (var i = 0, n = lst.size(); i < n; i++) { +var sg = lst.get(i); +if (JS.SpaceGroup.getCanonicalSeitz(sg.index).indexOf(s) >= 0) return JS.SpaceGroup.SG[sg.index]; +} +return null; +}, "~N,~S"); +c$.dumpAll = Clazz_defineMethod(c$, "dumpAll", +function(asMap){ +if (asMap) { +var info = new JU.Lst(); +for (var i = 0; i < JS.SpaceGroup.SG.length; i++) info.addLast(JS.SpaceGroup.SG[i].dumpInfoObj()); + +return info; +}var sb = new JU.SB(); +for (var i = 0; i < JS.SpaceGroup.SG.length; i++) sb.append("\n----------------------\n" + JS.SpaceGroup.SG[i].dumpInfo()); + +return sb.toString(); +}, "~B"); +c$.dumpAllSeitz = Clazz_defineMethod(c$, "dumpAllSeitz", +function(){ +var sb = new JU.SB(); +for (var i = 0; i < JS.SpaceGroup.SG.length; i++) sb.append("\n").appendO(JS.SpaceGroup.getCanonicalSeitz(i)); + +return sb.toString(); +}); +c$.getCanonicalSeitz = Clazz_defineMethod(c$, "getCanonicalSeitz", +function(i){ +if (JS.SpaceGroup.canonicalSeitzList == null) JS.SpaceGroup.canonicalSeitzList = new Array(JS.SpaceGroup.SG.length); +var cs = JS.SpaceGroup.canonicalSeitzList[i]; +return (cs == null ? JS.SpaceGroup.canonicalSeitzList[i] = JS.SpaceGroup.SG[i].dumpCanonicalSeitzList().toString() : cs); +}, "~N"); +Clazz_defineMethod(c$, "setLattice", +function(latticeCode, isCentrosymmetric){ +this.latticeParameter = JS.HallTranslation.getLatticeIndex(latticeCode); +if (!isCentrosymmetric) this.latticeParameter = -this.latticeParameter; +}, "~S,~B"); +c$.createSpaceGroupN = Clazz_defineMethod(c$, "createSpaceGroupN", +function(name){ +name = name.trim(); +var sg = JS.SpaceGroup.determineSpaceGroupN(name); +var hallInfo; +if (sg == null) { +hallInfo = new JS.HallInfo(name); +if (hallInfo.nRotations > 0) { +sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;" + name, true); +sg.hallInfo = hallInfo; +sg.hallSymbol = hallInfo.hallSymbol; +sg.setName("[" + sg.hallSymbol + "]"); +sg.jmolId = null; +} else if (name.indexOf(",") >= 0) { +sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;--", true); +sg.doNormalize = false; +sg.generateOperatorsFromXyzInfo(name); +}}if (sg != null) sg.generateAllOperators(null); +return sg; +}, "~S"); +Clazz_defineMethod(c$, "addOperation", +function(xyz0, opId, allowScaling){ +if (xyz0 == null || xyz0.length < 3) { +this.init(false); +return -1; +}xyz0 = JU.PT.rep(xyz0, " ", ""); +var isSpecial = (xyz0.charAt(0) == '='); +if (isSpecial) xyz0 = xyz0.substring(1); +var id = this.checkXYZlist(xyz0); +if (id >= 0) return id; +if (xyz0.startsWith("x1,x2,x3,x4") && this.modDim == 0) { +this.xyzList.clear(); +this.operationCount = 0; +this.modDim = JU.PT.parseInt(xyz0.substring(xyz0.lastIndexOf("x") + 1)) - 3; +} else if (xyz0.indexOf("m") >= 0) { +xyz0 = JU.PT.rep(xyz0, "+m", "m"); +if (xyz0.equals("x,y,z,m") || xyz0.equals("x,y,z(mx,my,mz)")) { +this.xyzList.clear(); +this.operationCount = 0; +}}var op = new JS.SymmetryOperation(null, opId, this.doNormalize); +if (!op.setMatrixFromXYZ(xyz0, this.modDim, allowScaling)) { +JU.Logger.error("couldn't interpret symmetry operation: " + xyz0); +return -1; +}if (xyz0.charAt(0) == '!') { +xyz0 = xyz0.substring(xyz0.lastIndexOf('!') + 1); +}return this.addOp(op, xyz0, isSpecial); +}, "~S,~N,~B"); +Clazz_defineMethod(c$, "checkXYZlist", +function(xyz){ +return (this.xyzList.containsKey(xyz) ? this.xyzList.get(xyz).intValue() : -1); +}, "~S"); +Clazz_defineMethod(c$, "addOp", +function(op, xyz0, isSpecial){ +var xyz = op.xyz; +if (!isSpecial) { +var id = this.checkXYZlist(xyz); +if (id >= 0) return id; +if (this.latticeOp < 0) { +var xxx = JU.PT.replaceAllCharacters(this.modDim > 0 ? JS.SymmetryOperation.replaceXn(xyz, this.modDim + 3) : xyz, "+123/", ""); +if (this.xyzList.containsKey(xxx + "!")) { +this.latticeOp = this.operationCount; +} else { +this.xyzList.put(xxx + "!", Integer.$valueOf(this.operationCount)); +}}this.xyzList.put(xyz, Integer.$valueOf(this.operationCount)); +}if (!xyz.equals(xyz0)) this.xyzList.put(xyz0, Integer.$valueOf(this.operationCount)); +if (this.operations == null) this.operations = new Array(4); +if (this.operationCount == this.operations.length) this.operations = JU.AU.arrayCopyObject(this.operations, this.operationCount * 2); +this.operations[this.operationCount++] = op; +op.number = this.operationCount; +if (op.timeReversal != 0) this.operations[0].timeReversal = 1; +if (JU.Logger.debugging) JU.Logger.debug("\naddOperation " + this.operationCount + op.dumpInfo()); +return this.operationCount - 1; +}, "JS.SymmetryOperation,~S,~B"); +Clazz_defineMethod(c$, "generateOperatorsFromXyzInfo", +function(xyzInfo){ +this.init(true); +var terms = JU.PT.split(xyzInfo.toLowerCase(), ";"); +for (var i = 0; i < terms.length; i++) this.addSymmetry(terms[i], 0, false); + +}, "~S"); +Clazz_defineMethod(c$, "generateAllOperators", +function(h){ +if (h == null) { +if (this.operationCount > 0) return; +if (this.hallSymbol.endsWith("?")) { +this.checkHallOperators(); +return; +}h = this.hallInfo; +this.operations = new Array(4); +if (this.hallInfo == null || this.hallInfo.nRotations == 0) h = this.hallInfo = new JS.HallInfo(this.hallSymbol); +this.setLattice(this.hallInfo.latticeCode, this.hallInfo.isCentrosymmetric); +this.init(true); +}switch ((h.latticeCode).charCodeAt(0)) { +case 0: +case 83: +case 84: +case 80: +this.latticeType = 'P'; +break; +default: +this.latticeType = h.latticeCode; +break; +} +var mat1 = new JU.M4(); +var operation = new JU.M4(); +var newOps = new Array(7); +for (var i = 0; i < 7; i++) newOps[i] = new JU.M4(); + +for (var i = 0; i < h.nRotations; i++) { +var rt = h.rotationTerms[i]; +mat1.setM4(rt.seitzMatrix12ths); +var nRot = rt.order; +newOps[0].setIdentity(); +var nOps = this.operationCount; +for (var j = 1; j <= nRot; j++) { +var m = newOps[j]; +m.mul2(mat1, newOps[0]); +newOps[0].setM4(m); +for (var k = 0; k < nOps; k++) { +operation.mul2(m, this.operations[k]); +operation.m03 = (Clazz_floatToInt(operation.m03) + 12) % 12; +operation.m13 = (Clazz_floatToInt(operation.m13) + 12) % 12; +operation.m23 = (Clazz_floatToInt(operation.m23) + 12) % 12; +var xyz = JS.SymmetryOperation.getXYZFromMatrix(operation, true, true, false); +if (this.checkXYZlist(xyz) >= 0) continue; +this.addSymmetrySM("!nohalf!" + xyz, operation); +} +} +} +if (this.hmSymbol == null) { +this.hmSymbol = "--"; +}if (this.hmSymbol.equals("--")) { +this.hallSymbol = h.hallSymbol; +this.nHallOperators = Integer.$valueOf(this.operationCount); +}if (this.nHallOperators != null && this.operationCount != this.nHallOperators.intValue()) JU.Logger.error("Operator mismatch " + this.operationCount + " for " + this); +}, "JS.HallInfo"); +Clazz_defineMethod(c$, "addSymmetrySM", +function(xyz, operation){ +var iop = this.addOperation(xyz, 0, false); +if (iop >= 0) { +var symmetryOperation = this.operations[iop]; +symmetryOperation.setM4(operation); +}return iop; +}, "~S,JU.M4"); +c$.determineSpaceGroupN = Clazz_defineMethod(c$, "determineSpaceGroupN", +function(name){ +return JS.SpaceGroup.determineSpaceGroup(name, 0, 0, 0, 0, 0, 0, -1); +}, "~S"); +c$.determineSpaceGroupNS = Clazz_defineMethod(c$, "determineSpaceGroupNS", +function(name, sg){ +return JS.SpaceGroup.determineSpaceGroup(name, 0, 0, 0, 0, 0, 0, sg.index); +}, "~S,JS.SpaceGroup"); +c$.determineSpaceGroupNA = Clazz_defineMethod(c$, "determineSpaceGroupNA", +function(name, unitCellParams){ +return (unitCellParams == null ? JS.SpaceGroup.determineSpaceGroup(name, 0, 0, 0, 0, 0, 0, -1) : JS.SpaceGroup.determineSpaceGroup(name, unitCellParams[0], unitCellParams[1], unitCellParams[2], unitCellParams[3], unitCellParams[4], unitCellParams[5], -1)); +}, "~S,~A"); +c$.determineSpaceGroup = Clazz_defineMethod(c$, "determineSpaceGroup", +function(name, a, b, c, alpha, beta, gamma, lastIndex){ +var i = JS.SpaceGroup.determineSpaceGroupIndex(name, a, b, c, alpha, beta, gamma, lastIndex); +return (i >= 0 ? JS.SpaceGroup.SG[i] : null); +}, "~S,~N,~N,~N,~N,~N,~N,~N"); +c$.isXYZList = Clazz_defineMethod(c$, "isXYZList", +function(name){ +return (name != null && name.indexOf(",") >= 0 && name.indexOf("(") < 0 && name.indexOf(":") < 0); +}, "~S"); +c$.determineSpaceGroupIndex = Clazz_defineMethod(c$, "determineSpaceGroupIndex", +function(name, a, b, c, alpha, beta, gamma, lastIndex){ +if (JS.SpaceGroup.isXYZList(name)) return -1; +if (lastIndex < 0) lastIndex = JS.SpaceGroup.SG.length; +name = name.trim().toLowerCase(); +if (name.startsWith("bilbao:")) { +name = name.substring(7); +}var pt = name.indexOf("hall:"); +if (pt > 0) name = name.substring(pt); +var nameType = (name.startsWith("ita/") ? 4 : name.startsWith("hall:") ? 5 : name.startsWith("hm:") ? 3 : 0); +switch (nameType) { +case 3: +case 5: +case 4: +name = name.substring(nameType); +break; +case 0: +if (name.contains("[")) { +nameType = 5; +name = name.substring(0, name.indexOf("[")).trim(); +} else if (name.indexOf(".") > 0) { +nameType = 4; +}} +var nameExt = name; +var i; +var haveExtension = false; +if (nameType == 4) { +} else { +name = name.$replace('_', ' '); +if (name.length >= 2) { +i = (name.indexOf("-") == 0 ? 2 : 1); +if (i < name.length && name.charAt(i) != ' ') name = name.substring(0, i) + " " + name.substring(i); +name = JS.SpaceGroup.toCap(name, 2); +}}var ext = ""; +if ((i = name.indexOf(":")) > 0) { +ext = name.substring(i + 1); +name = name.substring(0, i).trim(); +haveExtension = (ext.length > 0); +}if (nameType != 4 && nameType != 5 && !haveExtension && JU.PT.isOneOf(name, JS.SpaceGroup.ambiguousHMNames)) { +ext = "?"; +haveExtension = true; +}var abbr = JU.PT.replaceAllCharacters(name, " ()", ""); +var s; +switch (nameType) { +case 4: +if (haveExtension) for (i = 0; i < lastIndex; i++) { +if (nameExt.equalsIgnoreCase(JS.SpaceGroup.SG[i].itaIndex)) return i; +} + else for (i = 0; i < lastIndex; i++) { +if (name.equalsIgnoreCase(JS.SpaceGroup.SG[i].itaIndex)) return i; +} +break; +case 5: +for (i = 0; i < lastIndex; i++) { +if (JS.SpaceGroup.SG[i].hallSymbol.equalsIgnoreCase(name)) return i; +} +break; +default: +case 3: +if (nameType != 3) for (i = 0; i < lastIndex; i++) if (JS.SpaceGroup.SG[i].jmolId.equalsIgnoreCase(nameExt)) return i; + +for (i = 0; i < lastIndex; i++) if (JS.SpaceGroup.SG[i].hmSymbolFull.equalsIgnoreCase(nameExt)) return i; + +for (i = 0; i < lastIndex; i++) if ((s = JS.SpaceGroup.SG[i]).hmSymbolAlternative != null && s.hmSymbolAlternative.equalsIgnoreCase(nameExt)) return i; + +if (haveExtension) { +for (i = 0; i < lastIndex; i++) if ((s = JS.SpaceGroup.SG[i]).hmSymbolAbbr.equalsIgnoreCase(abbr) && s.jmolIdExt.equalsIgnoreCase(ext)) return i; + +for (i = 0; i < lastIndex; i++) if ((s = JS.SpaceGroup.SG[i]).hmSymbolAbbrShort.equalsIgnoreCase(abbr) && s.jmolIdExt.equalsIgnoreCase(ext)) return i; + +}var uniqueAxis = JS.SpaceGroup.determineUniqueAxis(a, b, c, alpha, beta, gamma); +if (!haveExtension || ext.charAt(0) == '?') for (i = 0; i < lastIndex; i++) if (((s = JS.SpaceGroup.SG[i]).hmSymbolAbbr.equalsIgnoreCase(abbr) || s.hmSymbolAbbrShort.equalsIgnoreCase(abbr) || s.itaNumber.equals(abbr))) switch ((s.ambiguityType).charCodeAt(0)) { +case 0: +return i; +case 97: +if (s.uniqueAxis == uniqueAxis || uniqueAxis == '\0') return i; +break; +case 111: +if (ext.length == 0) { +if (s.hmSymbolExt.equals("2")) return i; +} else if (s.hmSymbolExt.equalsIgnoreCase(ext)) return i; +break; +case 116: +if (ext.length == 0) { +if (s.axisChoice == 'h') return i; +} else if ((s.axisChoice + "").equalsIgnoreCase(ext)) return i; +break; +} + +break; +} +if (ext.length == 0) for (i = 0; i < lastIndex; i++) if ((s = JS.SpaceGroup.SG[i]).itaNumber.equals(nameExt)) return i; + +return -1; +}, "~S,~N,~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setJmolCode", +function(name){ +this.jmolId = name; +var parts = JU.PT.split(name, ":"); +this.itaNumber = parts[0]; +this.jmolIdExt = (parts.length == 1 ? "" : parts[1]); +this.ambiguityType = '\0'; +if (this.jmolIdExt.length > 0) { +var c = this.jmolIdExt.charAt(0); +if (this.jmolIdExt.equals("h") || this.jmolIdExt.equals("r")) { +this.ambiguityType = 't'; +this.axisChoice = this.jmolIdExt.charAt(0); +} else if (c == '1' || c == '2') { +this.ambiguityType = 'o'; +} else if (this.jmolIdExt.length <= 2 || this.jmolIdExt.length == 3 && c == '-') { +this.ambiguityType = 'a'; +this.uniqueAxis = this.jmolIdExt.charAt(c == '-' ? 1 : 0); +} else if (this.jmolIdExt.contains("-")) { +this.ambiguityType = '-'; +}}}, "~S"); +c$.determineUniqueAxis = Clazz_defineMethod(c$, "determineUniqueAxis", +function(a, b, c, alpha, beta, gamma){ +if (a == b) return (b == c ? '\0' : 'c'); +if (b == c) return 'a'; +if (c == a) return 'b'; +if (alpha == beta) return (beta == gamma ? '\0' : 'c'); +if (beta == gamma) return 'a'; +if (gamma == alpha) return 'b'; +return '\0'; +}, "~N,~N,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "buildSelf", +function(sgLineData){ +var terms = JU.PT.split(sgLineData.toLowerCase(), ";"); +this.jmolId = terms[0].trim(); +this.setJmolCode(this.jmolId); +var isAlternate = this.jmolId.endsWith("*"); +if (isAlternate) this.jmolId = this.jmolId.substring(0, this.jmolId.length - 1); +this.itaIndex = terms[1].$replace('|', ';'); +var s = terms[2]; +this.itaTransform = (s.length == 0 || s.equals("--") ? "a,b,c" : JU.PT.rep(s, "ab", "a-b,a+b,c").$replace('|', ';')); +this.clegId = this.itaNumber + ":" + this.itaTransform; +if (terms[3].length > 0) { +this.nHallOperators = Integer.$valueOf(terms[3]); +var lst = JS.SpaceGroup.htByOpCount.get(this.nHallOperators); +if (lst == null) JS.SpaceGroup.htByOpCount.put(this.nHallOperators, lst = new JU.Lst()); +lst.addLast(this); +}this.crystalClass = JS.SpaceGroup.toCap(JU.PT.split(terms[4], "^")[0], 1); +var hm = terms[5]; +if (hm.endsWith("*")) hm = hm.substring(0, hm.length - 1); +this.setHMSymbol(hm); +var info; +if ("xyz".equals(terms[6])) { +info = this.hmSymbol; +this.hallSymbol = "" + this.latticeType + "?"; +} else { +this.hallSymbol = terms[6]; +if (this.hallSymbol.length > 1) this.hallSymbol = JS.SpaceGroup.toCap(this.hallSymbol, 2); +if (isAlternate) { +this.hallSymbolAlt = this.hallSymbol; +this.hallSymbol = JS.SpaceGroup.lastHallSymbol; +}info = this.itaNumber + this.hallSymbol; +if (this.itaNumber.charAt(0) != '0' && info.equals(JS.SpaceGroup.lastInfo)) { +isAlternate = true; +JS.SpaceGroup.ambiguousHMNames += this.hmSymbol + ";"; +}}JS.SpaceGroup.lastHallSymbol = this.hallSymbol; +JS.SpaceGroup.lastInfo = info; +this.name = "HM:" + this.hmSymbolFull + " " + (this.hallSymbol == null || this.hallSymbol === "?" ? "[" + this.hallSymbol + "]" : "") + " #" + this.itaIndex; +}, "~S"); +Clazz_defineMethod(c$, "setHMSymbol", +function(name){ +var pt = name.indexOf("#"); +if (pt >= 0) name = name.substring(0, pt).trim(); +this.hmSymbolFull = JS.SpaceGroup.toCap(name, 1); +this.latticeType = this.hmSymbolFull.charAt(0); +var parts = JU.PT.split(this.hmSymbolFull, ":"); +this.hmSymbol = parts[0]; +this.hmSymbolExt = (parts.length == 1 ? "" : parts[1]); +pt = this.hmSymbol.indexOf(" -3"); +if (pt >= 1) if ("admn".indexOf(this.hmSymbol.charAt(pt - 1)) >= 0) { +this.hmSymbolAlternative = (this.hmSymbol.substring(0, pt) + " 3" + this.hmSymbol.substring(pt + 3)).toLowerCase(); +}this.hmSymbolAbbr = JU.PT.rep(this.hmSymbol, " ", ""); +this.hmSymbolAbbrShort = (this.hmSymbol.length > 3 ? JU.PT.rep(this.hmSymbol, " 1", "") : this.hmSymbolAbbr); +this.hmSymbolAbbrShort = JU.PT.rep(this.hmSymbolAbbrShort, " ", ""); +}, "~S"); +c$.toCap = Clazz_defineMethod(c$, "toCap", +function(s, n){ +return s.substring(0, n).toUpperCase() + s.substring(n); +}, "~S,~N"); +Clazz_defineMethod(c$, "toString", +function(){ +return this.asString(); +}); +Clazz_defineMethod(c$, "asString", +function(){ +return (this.strName == null ? (this.strName = (this.jmolId == null || this.jmolId.equals("0") ? this.name : this.jmolId + " HM:" + this.hmSymbolFull + " #" + this.clegId)) : this.strName); +}); +Clazz_defineMethod(c$, "getDisplayName", +function(){ +if (this.displayName == null) { +var name = null; +if (this.jmolId == null || "--".equals(this.hallSymbol)) { +name = ""; +if (this.hmSymbolFull != null && !"--".equals(this.hmSymbol)) name = this.hmSymbolFull + " #"; +} else if (!this.jmolId.equals("0")) { +name = this.hmSymbolFull + " #"; +}if (name == null) { +name = "[" + this.hallSymbol + "]"; +} else { +name += this.clegId; +}if (name.endsWith("2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c")) name = JU.PT.rep(name, "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c", "r"); +if (name.indexOf("-- [--]") >= 0) name = ""; +if (name.endsWith(":a,b,c")) name = name.substring(0, name.length - 6); +this.displayName = name; +}return this.displayName; +}); +c$.getSpaceGroups = Clazz_defineMethod(c$, "getSpaceGroups", +function(){ +if (JS.SpaceGroup.SG == null) { +var n = JS.SpaceGroup.STR_SG.length; +JS.SpaceGroup.nameToGroup = new java.util.Hashtable(); +var defs = new Array(n); +for (var i = 0; i < n; i++) { +defs[i] = new JS.SpaceGroup(i, JS.SpaceGroup.STR_SG[i], true); +JS.SpaceGroup.nameToGroup.put(defs[i].jmolId, defs[i]); +} +System.out.println("SpaceGroup - " + JS.SpaceGroup.nSG + " settings generated"); +JS.SpaceGroup.STR_SG = null; +JS.SpaceGroup.SG = defs; +}return JS.SpaceGroup.SG; +}); +Clazz_defineMethod(c$, "addLatticeVectors", +function(lattvecs){ +if (this.latticeOp >= 0 || lattvecs.size() == 0) return false; +var nOps = this.latticeOp = this.operationCount; +var isMagnetic = (lattvecs.get(0).length == this.modDim + 4); +var magRev = -2; +for (var j = 0; j < lattvecs.size(); j++) { +var data = lattvecs.get(j); +if (isMagnetic) { +magRev = Clazz_floatToInt(data[this.modDim + 3]); +data = JU.AU.arrayCopyF(data, this.modDim + 3); +}if (data.length > this.modDim + 3) return false; +for (var i = 0; i < nOps; i++) { +var newOp = new JS.SymmetryOperation(null, 0, true); +newOp.modDim = this.modDim; +var op = this.operations[i]; +newOp.divisor = op.divisor; +newOp.linearRotTrans = JU.AU.arrayCopyF(op.linearRotTrans, -1); +newOp.setFromMatrix(data, false); +if (magRev != -2) newOp.setTimeReversal(op.timeReversal * magRev); +newOp.xyzOriginal = newOp.xyz; +this.addOp(newOp, newOp.xyz, true); +} +} +return true; +}, "JU.Lst"); +Clazz_defineMethod(c$, "getSiteMultiplicity", +function(pt, unitCell){ +var n = this.finalOperations.length; +var pts = new JU.Lst(); +for (var i = n; --i >= 0; ) { +var pt1 = JU.P3.newP(pt); +this.finalOperations[i].rotTrans(pt1); +unitCell.unitize(pt1); +for (var j = pts.size(); --j >= 0; ) { +var pt0 = pts.get(j); +if (pt1.distanceSquared(pt0) < 1.96E-6) { +pt1 = null; +break; +}} +if (pt1 != null) pts.addLast(pt1); +} +return Clazz_doubleToInt(n / pts.size()); +}, "JU.P3,JS.UnitCell"); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = name; +if (name != null && name.startsWith("HM:")) { +this.setHMSymbol(name.substring(3)); +}this.strName = this.displayName = null; +}, "~S"); +Clazz_defineMethod(c$, "getNameType", +function(type, uc){ +var ret = null; +if (type.equals("HM")) { +ret = this.hmSymbol; +} else if (type.equals("ITA")) { +ret = this.itaNumber; +} else if (type.equals("Hall")) { +ret = this.hallSymbol; +} else { +ret = "?"; +}if (ret != null) return ret; +if (this.info == null) this.info = JS.SpaceGroup.getInfo(this, this.hmSymbol, uc.getUnitCellParams(), true, false); +if ((typeof(this.info)=='string')) return null; +var map = this.info; +var v = map.get(type.equals("Hall") ? "HallSymbol" : type.equals("ITA") ? "ita" : "HermannMauguinSymbol"); +return (v == null ? null : v.toString()); +}, "~S,J.api.SymmetryInterface"); +c$.getSpaceGroupFromJmolClegOrITA = Clazz_defineMethod(c$, "getSpaceGroupFromJmolClegOrITA", +function(name){ +var n = JS.SpaceGroup.SG.length; +if (name.indexOf(":") >= 0) { +if (name.indexOf(",") >= 0) { +for (var i = 0; i < n; i++) if (name.equals(JS.SpaceGroup.SG[i].clegId)) return JS.SpaceGroup.SG[i]; + +} else { +for (var i = 0; i < n; i++) if (name.equals(JS.SpaceGroup.SG[i].jmolId)) return JS.SpaceGroup.SG[i]; + +}} else if (name.indexOf(".") >= 0) { +for (var i = 0; i < n; i++) if (name.equals(JS.SpaceGroup.SG[i].itaIndex)) return JS.SpaceGroup.SG[i]; + +} else { +for (var i = 0; i < n; i++) if (name.equals(JS.SpaceGroup.SG[i].itaNumber)) return JS.SpaceGroup.SG[i]; + +}return null; +}, "~S"); +Clazz_defineMethod(c$, "checkHallOperators", +function(){ +if (this.nHallOperators != null && this.nHallOperators.intValue() != this.operationCount) { +if (this.hallInfo == null || this.hallInfo.nRotations > 0) { +this.generateAllOperators(this.hallInfo); +} else { +this.init(false); +this.doNormalize = false; +JS.SpaceGroup.transformSpaceGroup(this, JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(this.itaNumber), null, this.itaTransform, null); +this.hallInfo = null; +}}}); +Clazz_defineMethod(c$, "getOpsCtr", +function(transform){ +var sg = JS.SpaceGroup.getNull(true, true, false); +JS.SpaceGroup.transformSpaceGroup(sg, this, null, "!" + transform, null); +sg.setFinalOperations(); +var sg2 = JS.SpaceGroup.getNull(true, false, false); +JS.SpaceGroup.transformSpaceGroup(sg2, sg, null, transform, null); +sg2.setFinalOperations(); +return sg2.finalOperations; +}, "~S"); +c$.getSpaceGroupFromIndex = Clazz_defineMethod(c$, "getSpaceGroupFromIndex", +function(i){ +return (JS.SpaceGroup.SG != null && i >= 0 && i < JS.SpaceGroup.SG.length ? JS.SpaceGroup.SG[i] : null); +}, "~N"); +Clazz_defineMethod(c$, "setITATableNames", +function(jmolId, sg, set, tr){ +this.itaNumber = sg; +this.itaIndex = (tr != null ? sg + ":" + tr : set.indexOf(".") >= 0 ? set : sg + "." + set); +this.itaTransform = tr; +this.clegId = sg + ":" + tr; +this.jmolId = jmolId; +if (jmolId == null) { +this.info = this.dumpInfoObj(); +} else { +this.setJmolCode(jmolId); +}}, "~S,~S,~S,~S"); +c$.transformCoords = Clazz_defineMethod(c$, "transformCoords", +function(coord, trmInv, centering, t, v, coordt){ +if (coordt == null) coordt = new JU.Lst(); +for (var j = 0, n = coord.size(); j < n; j++) { +var xyz = JS.SymmetryOperation.transformStr(coord.get(j), null, trmInv, t, v, null, centering, true, true); +if (!coordt.contains(xyz)) coordt.addLast(xyz); +} +return coordt; +}, "JU.Lst,JU.M4,JU.P3,JU.M4,~A,JU.Lst"); +c$.getTransformRange = Clazz_defineMethod(c$, "getTransformRange", +function(trm){ +var t = Clazz_newFloatArray (2, 3, 0); +var row = Clazz_newFloatArray (4, 0); +for (var i = 0; i < 3; i++) { +trm.getRow(i, row); +for (var j = 0; j < 3; j++) { +var v = row[j]; +if (v < 0) { +t[0][i] += -row[j]; +} else if (v > 0) { +t[1][i] += row[j]; +}} +} +var ignore = true; +for (var i = 0, dz = 0; i < 2; i++, dz++) { +for (var j = 0; j < 3; j++) { +var d = Clazz_doubleToInt(Math.ceil(t[i][j])); +if (d > dz) ignore = false; +t[i][j] = (i == 0 ? -d : d); +} +} +return (ignore ? null : t); +}, "JU.M4"); +c$.getTransformedCentering = Clazz_defineMethod(c$, "getTransformedCentering", +function(trm, cent){ +var trmInv = JU.M4.newM4(trm); +trmInv.invert(); +var n0 = cent.size(); +var p = new JU.P3(); +var c = JS.SpaceGroup.getTransformRange(trm); +if (c != null) { +for (var i = Clazz_floatToInt(c[0][0]); i < c[1][0]; i++) { +for (var j = Clazz_floatToInt(c[0][1]); j <= c[1][1]; j++) { +for (var k = Clazz_floatToInt(c[0][2]); k <= c[1][2]; k++) { +p.set(i, j, k); +trmInv.rotTrans(p); +if (p.length() % 1 != 0) { +p.x = p.x % 1; +p.y = p.y % 1; +p.z = p.z % 1; +var s = JS.SymmetryOperation.norm3(p); +if (!s.equals("0,0,0") && !cent.contains(s)) cent.addLast(s); +}} +} +} +var n = cent.size(); +if (n > 0) { +var a = new Array(n); +cent.toArray(a); +java.util.Arrays.sort(a); +cent.clear(); +for (var i = 0; i < n; i++) cent.addLast(a[i]); + +}}for (var i = n0; --i >= 0; ) { +JS.SymmetryOperation.toPoint(cent.get(i), p); +trmInv.rotTrans(p); +if (p.x % 1 == 0 && p.y % 1 == 0 && p.z % 1 == 0) cent.remove(i); +} +return trmInv; +}, "JU.M4,JU.Lst"); +c$.fillMoreData = Clazz_defineMethod(c$, "fillMoreData", +function(map, clegId, itno, its0){ +var pt = clegId.indexOf(':'); +var transform = (pt < 0 ? "a,b,c" : clegId.substring(pt + 1)); +var trm = JS.UnitCell.toTrm(transform, null); +var gp0 = its0.get("gp"); +var wpos0 = its0.get("wpos"); +var cent0 = wpos0.get("cent"); +var cent = new JU.Lst(); +if (cent0 != null) cent.addAll(cent0); +var nctr0 = cent.size(); +var trmInv = JS.SpaceGroup.getTransformedCentering(trm, cent); +var nctr = cent.size(); +var pos0 = wpos0.get("pos"); +var pos = new JU.Lst(); +var t = new JU.M4(); +var v = Clazz_newFloatArray (16, 0); +var f = (nctr + 1) / (nctr0 + 1); +for (var i = 0, n = pos0.size(); i < n; i++) { +var p0 = pos0.get(i); +var p = new java.util.Hashtable(); +p.putAll(p0); +var coord = p0.get("coord"); +if (coord != null) { +coord = JS.SpaceGroup.transformCoords(coord, trmInv, null, t, v, null); +p.put("coord", coord); +}var mult = (p0.get("mult")).intValue(); +p.put("mult", Integer.$valueOf(Clazz_floatToInt(mult * f))); +pos.addLast(p); +} +var gp = new JU.Lst(); +JS.SpaceGroup.transformCoords(gp0, trmInv, null, t, v, gp); +if (nctr > 0) { +for (var i = 0; i < nctr; i++) { +var p = new JU.P3(); +JS.SpaceGroup.transformCoords(gp0, trmInv, JS.SymmetryOperation.toPoint(cent.get(i), p), t, v, gp); +} +}if (map == null) { +map = new java.util.Hashtable(); +map.put("sg", Integer.$valueOf(itno)); +map.put("trm", transform); +map.put("clegId", itno + ":" + transform); +map.put("det", Float.$valueOf(trm.determinant3())); +} else { +map.remove("more"); +}var wpos = new java.util.Hashtable(); +if (nctr > 0) wpos.put("cent", cent); +wpos.put("pos", pos); +map.put("wpos", wpos); +wpos.put("gp", gp); +gp = new JU.Lst(); +var base = JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(clegId); +var sg = JS.SpaceGroup.transformSpaceGroup(null, base, gp0, transform, new JU.M4()); +for (var i = 0, n = sg.getOperationCount(); i < n; i++) { +gp.addLast((sg.getOperation(i)).xyz); +} +map.put("gp", gp); +return map; +}, "java.util.Map,~S,~N,java.util.Map"); +c$.transformSpaceGroup = Clazz_defineMethod(c$, "transformSpaceGroup", +function(sg, base, genPos, transform, trm){ +if (genPos == null) { +base.setFinalOperations(); +genPos = new JU.Lst(); +for (var i = 0, n = base.getOperationCount(); i < n; i++) { +genPos.addLast(base.getXyz(i, false)); +} +}var normalize = (sg == null || sg.doNormalize); +var xyzList = JS.SpaceGroup.addTransformXYZList(sg, genPos, transform, trm, normalize); +if (sg == null) { +return JS.SpaceGroup.createITASpaceGroup(xyzList, base); +}if (transform == null) { +sg.setFrom(base, true); +} else { +sg.setITATableNames(sg.jmolId, sg.itaNumber, "1", transform); +}return sg; +}, "JS.SpaceGroup,JS.SpaceGroup,JU.Lst,~S,JU.M4"); +c$.createITASpaceGroup = Clazz_defineMethod(c$, "createITASpaceGroup", +function(genpos, base){ +var sg = new JS.SpaceGroup(-1, "0;--;--;0;--;--;--", true); +sg.doNormalize = false; +for (var i = 0, n = genpos.size(); i < n; i++) { +var op = new JS.SymmetryOperation(null, i, false); +var xyz = genpos.get(i); +op.setMatrixFromXYZ(xyz, 0, false); +sg.addOp(op, xyz, false); +} +if (base != null) sg.setFrom(base, true); +return sg; +}, "JU.Lst,JS.SpaceGroup"); +c$.addTransformXYZList = Clazz_defineMethod(c$, "addTransformXYZList", +function(sg, genPos, transform, trm, normalize){ +var trmInv = null; +var t = null; +var v = null; +if (transform != null) { +if (transform.equals("r")) transform = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c"; +trm = JS.UnitCell.toTrm(transform, trm); +trmInv = JU.M4.newM4(trm); +trmInv.invert(); +v = Clazz_newFloatArray (16, 0); +t = new JU.M4(); +}var xyzList = JS.SpaceGroup.addTransformedOperations(sg, genPos, trm, trmInv, t, v, sg == null ? new JU.Lst() : null, null, normalize); +if (sg == null) return xyzList; +var c = JS.SpaceGroup.getTransformRange(trm); +if (c != null) { +var p = new JU.P3(); +for (var i = Clazz_floatToInt(c[0][0]); i < c[1][0]; i++) { +for (var j = Clazz_floatToInt(c[0][1]); j <= c[1][1]; j++) { +for (var k = Clazz_floatToInt(c[0][2]); k <= c[1][2]; k++) { +if (i == 0 && j == 0 && k == 0) continue; +p.set(i, j, k); +JS.SpaceGroup.addTransformedOperations(sg, genPos, trm, trmInv, t, v, null, p, normalize); +} +} +} +}return null; +}, "JS.SpaceGroup,JU.Lst,~S,JU.M4,~B"); +c$.addTransformedOperations = Clazz_defineMethod(c$, "addTransformedOperations", +function(sg, genPos, trm, trmInv, t, v, retGenPos, centering, normalize){ +if (sg != null) sg.latticeOp = 0; +for (var i = 0, c = genPos.size(); i < c; i++) { +var xyz = genPos.get(i); +if (trm != null && (i > 0 || centering != null)) { +xyz = JS.SymmetryOperation.transformStr(xyz, trm, trmInv, t, v, centering, null, normalize, false); +}if (sg == null) { +retGenPos.addLast(xyz); +} else { +sg.addOperation(xyz, 0, false); +}} +return retGenPos; +}, "JS.SpaceGroup,JU.Lst,JU.M4,JU.M4,JU.M4,~A,JU.Lst,JU.P3,~B"); +c$.canonicalSeitzList = null; +c$.sgIndex = -1; +c$.lastInfo = null; +c$.ambiguousHMNames = ""; +c$.lastHallSymbol = ""; +c$.SG = null; +c$.htByOpCount = new java.util.Hashtable(); +c$.nameToGroup = null; +c$.nSG = 0; +c$.STR_SG = Clazz_newArray(-1, ["1;1.1;;1;c1^1;p 1;p 1", "2;2.1;;2;ci^1;p -1;-p 1", "3:b;3.1;;2;c2^1;p 1 2 1;p 2y", "3:b;3.1;;2;c2^1;p 2;p 2y", "3:c;3.2;c,a,b;2;c2^1;p 1 1 2;p 2", "3:a;3.3;b,c,a;2;c2^1;p 2 1 1;p 2x", "4:b;4.1;;2;c2^2;p 1 21 1;p 2yb", "4:b;4.1;;2;c2^2;p 21;p 2yb", "4:b*;4.1;;2;c2^2;p 1 21 1*;p 2y1", "4:c;4.2;c,a,b;2;c2^2;p 1 1 21;p 2c", "4:c*;4.2;c,a,b;2;c2^2;p 1 1 21*;p 21", "4:a;4.3;b,c,a;2;c2^2;p 21 1 1;p 2xa", "4:a*;4.3;b,c,a;2;c2^2;p 21 1 1*;p 2x1", "5:b1;5.1;;4;c2^3;c 1 2 1;c 2y", "5:b1;5.1;;4;c2^3;c 2;c 2y", "5:b2;5.2;-a-c,b,a;4;c2^3;a 1 2 1;a 2y", "5:b3;5.3;c,b,-a-c;4;c2^3;i 1 2 1;i 2y", "5:c1;5.4;c,a,b;4;c2^3;a 1 1 2;a 2", "5:c2;5.5;a,-a-c,b;4;c2^3;b 1 1 2;b 2", "5:c3;5.6;-a-c,c,b;4;c2^3;i 1 1 2;i 2", "5:a1;5.7;b,c,a;4;c2^3;b 2 1 1;b 2x", "5:a2;5.8;b,a,-a-c;4;c2^3;c 2 1 1;c 2x", "5:a3;5.9;b,-a-c,c;4;c2^3;i 2 1 1;i 2x", "6:b;6.1;;2;cs^1;p 1 m 1;p -2y", "6:b;6.1;;2;cs^1;p m;p -2y", "6:c;6.2;c,a,b;2;cs^1;p 1 1 m;p -2", "6:a;6.3;b,c,a;2;cs^1;p m 1 1;p -2x", "7:b1;7.1;;2;cs^2;p 1 c 1;p -2yc", "7:b1;7.1;;2;cs^2;p c;p -2yc", "7:b2;7.2;-a-c,b,a;2;cs^2;p 1 n 1;p -2yac", "7:b2;7.2;-a-c,b,a;2;cs^2;p n;p -2yac", "7:b3;7.3;c,b,-a-c;2;cs^2;p 1 a 1;p -2ya", "7:b3;7.3;c,b,-a-c;2;cs^2;p a;p -2ya", "7:c1;7.4;c,a,b;2;cs^2;p 1 1 a;p -2a", "7:c2;7.5;a,-a-c,b;2;cs^2;p 1 1 n;p -2ab", "7:c3;7.6;-a-c,c,b;2;cs^2;p 1 1 b;p -2b", "7:a1;7.7;b,c,a;2;cs^2;p b 1 1;p -2xb", "7:a2;7.8;b,a,-a-c;2;cs^2;p n 1 1;p -2xbc", "7:a3;7.9;b,-a-c,c;2;cs^2;p c 1 1;p -2xc", "8:b1;8.1;;4;cs^3;c 1 m 1;c -2y", "8:b1;8.1;;4;cs^3;c m;c -2y", "8:b2;8.2;-a-c,b,a;4;cs^3;a 1 m 1;a -2y", "8:b3;8.3;c,b,-a-c;4;cs^3;i 1 m 1;i -2y", "8:b3;8.3;c,b,-a-c;4;cs^3;i m;i -2y", "8:c1;8.4;c,a,b;4;cs^3;a 1 1 m;a -2", "8:c2;8.5;a,-a-c,b;4;cs^3;b 1 1 m;b -2", "8:c3;8.6;-a-c,c,b;4;cs^3;i 1 1 m;i -2", "8:a1;8.7;b,c,a;4;cs^3;b m 1 1;b -2x", "8:a2;8.8;b,a,-a-c;4;cs^3;c m 1 1;c -2x", "8:a3;8.9;b,-a-c,c;4;cs^3;i m 1 1;i -2x", "9:b1;9.1;;4;cs^4;c 1 c 1;c -2yc", "9:b1;9.1;;4;cs^4;c c;c -2yc", "9:b2;9.2;-a-c,b,a;4;cs^4;a 1 n 1;a -2yab", "9:b3;9.3;c,b,-a-c;4;cs^4;i 1 a 1;i -2ya", "9:-b1;9.4;c,-b,a;4;cs^4;a 1 a 1;a -2ya", "9:-b2;9.5;a,-b,-a-c;4;cs^4;c 1 n 1;c -2yac", "9:-b3;9.6;-a-c,-b,c;4;cs^4;i 1 c 1;i -2yc", "9:c1;9.7;c,a,b;4;cs^4;a 1 1 a;a -2a", "9:c2;9.8;a,-a-c,b;4;cs^4;b 1 1 n;b -2ab", "9:c3;9.9;-a-c,c,b;4;cs^4;i 1 1 b;i -2b", "9:-c1;9.10;a,c,-b;4;cs^4;b 1 1 b;b -2b", "9:-c2;9.11;-a-c,a,-b;4;cs^4;a 1 1 n;a -2ab", "9:-c3;9.12;c,-a-c,-b;4;cs^4;i 1 1 a;i -2a", "9:a1;9.13;b,c,a;4;cs^4;b b 1 1;b -2xb", "9:a2;9.14;b,a,-a-c;4;cs^4;c n 1 1;c -2xac", "9:a3;9.15;b,-a-c,c;4;cs^4;i c 1 1;i -2xc", "9:-a1;9.16;-b,a,c;4;cs^4;c c 1 1;c -2xc", "9:-a2;9.17;-b,-a-c,a;4;cs^4;b n 1 1;b -2xab", "9:-a3;9.18;-b,c,-a-c;4;cs^4;i b 1 1;i -2xb", "10:b;10.1;;4;c2h^1;p 1 2/m 1;-p 2y", "10:b;10.1;;4;c2h^1;p 2/m;-p 2y", "10:c;10.2;c,a,b;4;c2h^1;p 1 1 2/m;-p 2", "10:a;10.3;b,c,a;4;c2h^1;p 2/m 1 1;-p 2x", "11:b;11.1;;4;c2h^2;p 1 21/m 1;-p 2yb", "11:b;11.1;;4;c2h^2;p 21/m;-p 2yb", "11:b*;11.1;;4;c2h^2;p 1 21/m 1*;-p 2y1", "11:c;11.2;c,a,b;4;c2h^2;p 1 1 21/m;-p 2c", "11:c*;11.2;c,a,b;4;c2h^2;p 1 1 21/m*;-p 21", "11:a;11.3;b,c,a;4;c2h^2;p 21/m 1 1;-p 2xa", "11:a*;11.3;b,c,a;4;c2h^2;p 21/m 1 1*;-p 2x1", "12:b1;12.1;;8;c2h^3;c 1 2/m 1;-c 2y", "12:b1;12.1;;8;c2h^3;c 2/m;-c 2y", "12:b2;12.2;-a-c,b,a;8;c2h^3;a 1 2/m 1;-a 2y", "12:b3;12.3;c,b,-a-c;8;c2h^3;i 1 2/m 1;-i 2y", "12:b3;12.3;c,b,-a-c;8;c2h^3;i 2/m;-i 2y", "12:c1;12.4;c,a,b;8;c2h^3;a 1 1 2/m;-a 2", "12:c2;12.5;a,-a-c,b;8;c2h^3;b 1 1 2/m;-b 2", "12:c3;12.6;-a-c,c,b;8;c2h^3;i 1 1 2/m;-i 2", "12:a1;12.7;b,c,a;8;c2h^3;b 2/m 1 1;-b 2x", "12:a2;12.8;b,a,-a-c;8;c2h^3;c 2/m 1 1;-c 2x", "12:a3;12.9;b,-a-c,c;8;c2h^3;i 2/m 1 1;-i 2x", "13:b1;13.1;;4;c2h^4;p 1 2/c 1;-p 2yc", "13:b1;13.1;;4;c2h^4;p 2/c;-p 2yc", "13:b2;13.2;-a-c,b,a;4;c2h^4;p 1 2/n 1;-p 2yac", "13:b2;13.2;-a-c,b,a;4;c2h^4;p 2/n;-p 2yac", "13:b3;13.3;c,b,-a-c;4;c2h^4;p 1 2/a 1;-p 2ya", "13:b3;13.3;c,b,-a-c;4;c2h^4;p 2/a;-p 2ya", "13:c1;13.4;c,a,b;4;c2h^4;p 1 1 2/a;-p 2a", "13:c2;13.5;a,-a-c,b;4;c2h^4;p 1 1 2/n;-p 2ab", "13:c3;13.6;-a-c,c,b;4;c2h^4;p 1 1 2/b;-p 2b", "13:a1;13.7;b,c,a;4;c2h^4;p 2/b 1 1;-p 2xb", "13:a2;13.8;b,a,-a-c;4;c2h^4;p 2/n 1 1;-p 2xbc", "13:a3;13.9;b,-a-c,c;4;c2h^4;p 2/c 1 1;-p 2xc", "14:b1;14.1;;4;c2h^5;p 1 21/c 1;-p 2ybc", "14:b1;14.1;;4;c2h^5;p 21/c;-p 2ybc", "14:b2;14.2;-a-c,b,a;4;c2h^5;p 1 21/n 1;-p 2yn", "14:b2;14.2;-a-c,b,a;4;c2h^5;p 21/n;-p 2yn", "14:b3;14.3;c,b,-a-c;4;c2h^5;p 1 21/a 1;-p 2yab", "14:b3;14.3;c,b,-a-c;4;c2h^5;p 21/a;-p 2yab", "14:c1;14.4;c,a,b;4;c2h^5;p 1 1 21/a;-p 2ac", "14:c2;14.5;a,-a-c,b;4;c2h^5;p 1 1 21/n;-p 2n", "14:c3;14.6;-a-c,c,b;4;c2h^5;p 1 1 21/b;-p 2bc", "14:a1;14.7;b,c,a;4;c2h^5;p 21/b 1 1;-p 2xab", "14:a2;14.8;b,a,-a-c;4;c2h^5;p 21/n 1 1;-p 2xn", "14:a3;14.9;b,-a-c,c;4;c2h^5;p 21/c 1 1;-p 2xac", "15:b1;15.1;;8;c2h^6;c 1 2/c 1;-c 2yc", "15:b1;15.1;;8;c2h^6;c 2/c;-c 2yc", "15:b2;15.2;-a-c,b,a;8;c2h^6;a 1 2/n 1;-a 2yab", "15:b3;15.3;c,b,-a-c;8;c2h^6;i 1 2/a 1;-i 2ya", "15:b3;15.3;c,b,-a-c;8;c2h^6;i 2/a;-i 2ya", "15:-b1;15.4;c,-b,a;8;c2h^6;a 1 2/a 1;-a 2ya", "15:-b2;15.5;a,-b,-a-c;8;c2h^6;c 1 2/n 1;-c 2yac", "15:-b2;15.5;a,-b,-a-c;8;c2h^6;c 2/n;-c 2yac", "15:-b3;15.6;-a-c,-b,c;8;c2h^6;i 1 2/c 1;-i 2yc", "15:-b3;15.6;-a-c,-b,c;8;c2h^6;i 2/c;-i 2yc", "15:c1;15.7;c,a,b;8;c2h^6;a 1 1 2/a;-a 2a", "15:c2;15.8;a,-a-c,b;8;c2h^6;b 1 1 2/n;-b 2ab", "15:c3;15.9;-a-c,c,b;8;c2h^6;i 1 1 2/b;-i 2b", "15:-c1;15.10;a,c,-b;8;c2h^6;b 1 1 2/b;-b 2b", "15:-c2;15.11;-a-c,a,-b;8;c2h^6;a 1 1 2/n;-a 2ab", "15:-c3;15.12;c,-a-c,-b;8;c2h^6;i 1 1 2/a;-i 2a", "15:a1;15.13;b,c,a;8;c2h^6;b 2/b 1 1;-b 2xb", "15:a2;15.14;b,a,-a-c;8;c2h^6;c 2/n 1 1;-c 2xac", "15:a3;15.15;b,-a-c,c;8;c2h^6;i 2/c 1 1;-i 2xc", "15:-a1;15.16;-b,a,c;8;c2h^6;c 2/c 1 1;-c 2xc", "15:-a2;15.17;-b,-a-c,a;8;c2h^6;b 2/n 1 1;-b 2xab", "15:-a3;15.18;-b,c,-a-c;8;c2h^6;i 2/b 1 1;-i 2xb", "16;16.1;;4;d2^1;p 2 2 2;p 2 2", "17;17.1;;4;d2^2;p 2 2 21;p 2c 2", "17*;17.1;;4;d2^2;p 2 2 21*;p 21 2", "17:cab;17.2;c,a,b;4;d2^2;p 21 2 2;p 2a 2a", "17:bca;17.3;b,c,a;4;d2^2;p 2 21 2;p 2 2b", "18;18.1;;4;d2^3;p 21 21 2;p 2 2ab", "18:cab;18.2;c,a,b;4;d2^3;p 2 21 21;p 2bc 2", "18:bca;18.3;b,c,a;4;d2^3;p 21 2 21;p 2ac 2ac", "19;19.1;;4;d2^4;p 21 21 21;p 2ac 2ab", "20;20.1;;8;d2^5;c 2 2 21;c 2c 2", "20*;20.1;;8;d2^5;c 2 2 21*;c 21 2", "20:cab;20.2;c,a,b;8;d2^5;a 21 2 2;a 2a 2a", "20:cab*;20.2;c,a,b;8;d2^5;a 21 2 2*;a 2a 21", "20:bca;20.3;b,c,a;8;d2^5;b 2 21 2;b 2 2b", "21;21.1;;8;d2^6;c 2 2 2;c 2 2", "21:cab;21.2;c,a,b;8;d2^6;a 2 2 2;a 2 2", "21:bca;21.3;b,c,a;8;d2^6;b 2 2 2;b 2 2", "22;22.1;;16;d2^7;f 2 2 2;f 2 2", "23;23.1;;8;d2^8;i 2 2 2;i 2 2", "24;24.1;;8;d2^9;i 21 21 21;i 2b 2c", "25;25.1;;4;c2v^1;p m m 2;p 2 -2", "25:cab;25.2;c,a,b;4;c2v^1;p 2 m m;p -2 2", "25:bca;25.3;b,c,a;4;c2v^1;p m 2 m;p -2 -2", "26;26.1;;4;c2v^2;p m c 21;p 2c -2", "26*;26.1;;4;c2v^2;p m c 21*;p 21 -2", "26:ba-c;26.2;b,a,-c;4;c2v^2;p c m 21;p 2c -2c", "26:ba-c*;26.2;b,a,-c;4;c2v^2;p c m 21*;p 21 -2c", "26:cab;26.3;c,a,b;4;c2v^2;p 21 m a;p -2a 2a", "26:-cba;26.4;-c,b,a;4;c2v^2;p 21 a m;p -2 2a", "26:bca;26.5;b,c,a;4;c2v^2;p b 21 m;p -2 -2b", "26:a-cb;26.6;a,-c,b;4;c2v^2;p m 21 b;p -2b -2", "27;27.1;;4;c2v^3;p c c 2;p 2 -2c", "27:cab;27.2;c,a,b;4;c2v^3;p 2 a a;p -2a 2", "27:bca;27.3;b,c,a;4;c2v^3;p b 2 b;p -2b -2b", "28;28.1;;4;c2v^4;p m a 2;p 2 -2a", "28*;28.1;;4;c2v^4;p m a 2*;p 2 -21", "28:ba-c;28.2;b,a,-c;4;c2v^4;p b m 2;p 2 -2b", "28:cab;28.3;c,a,b;4;c2v^4;p 2 m b;p -2b 2", "28:-cba;28.4;-c,b,a;4;c2v^4;p 2 c m;p -2c 2", "28:-cba*;28.4;-c,b,a;4;c2v^4;p 2 c m*;p -21 2", "28:bca;28.5;b,c,a;4;c2v^4;p c 2 m;p -2c -2c", "28:a-cb;28.6;a,-c,b;4;c2v^4;p m 2 a;p -2a -2a", "29;29.1;;4;c2v^5;p c a 21;p 2c -2ac", "29:ba-c;29.2;b,a,-c;4;c2v^5;p b c 21;p 2c -2b", "29:cab;29.3;c,a,b;4;c2v^5;p 21 a b;p -2b 2a", "29:-cba;29.4;-c,b,a;4;c2v^5;p 21 c a;p -2ac 2a", "29:bca;29.5;b,c,a;4;c2v^5;p c 21 b;p -2bc -2c", "29:a-cb;29.6;a,-c,b;4;c2v^5;p b 21 a;p -2a -2ab", "30;30.1;;4;c2v^6;p n c 2;p 2 -2bc", "30:ba-c;30.2;b,a,-c;4;c2v^6;p c n 2;p 2 -2ac", "30:cab;30.3;c,a,b;4;c2v^6;p 2 n a;p -2ac 2", "30:-cba;30.4;-c,b,a;4;c2v^6;p 2 a n;p -2ab 2", "30:bca;30.5;b,c,a;4;c2v^6;p b 2 n;p -2ab -2ab", "30:a-cb;30.6;a,-c,b;4;c2v^6;p n 2 b;p -2bc -2bc", "31;31.1;;4;c2v^7;p m n 21;p 2ac -2", "31:ba-c;31.2;b,a,-c;4;c2v^7;p n m 21;p 2bc -2bc", "31:cab;31.3;c,a,b;4;c2v^7;p 21 m n;p -2ab 2ab", "31:-cba;31.4;-c,b,a;4;c2v^7;p 21 n m;p -2 2ac", "31:bca;31.5;b,c,a;4;c2v^7;p n 21 m;p -2 -2bc", "31:a-cb;31.6;a,-c,b;4;c2v^7;p m 21 n;p -2ab -2", "32;32.1;;4;c2v^8;p b a 2;p 2 -2ab", "32:cab;32.2;c,a,b;4;c2v^8;p 2 c b;p -2bc 2", "32:bca;32.3;b,c,a;4;c2v^8;p c 2 a;p -2ac -2ac", "33;33.1;;4;c2v^9;p n a 21;p 2c -2n", "33*;33.1;;4;c2v^9;p n a 21*;p 21 -2n", "33:ba-c;33.2;b,a,-c;4;c2v^9;p b n 21;p 2c -2ab", "33:ba-c*;33.2;b,a,-c;4;c2v^9;p b n 21*;p 21 -2ab", "33:cab;33.3;c,a,b;4;c2v^9;p 21 n b;p -2bc 2a", "33:cab*;33.3;c,a,b;4;c2v^9;p 21 n b*;p -2bc 21", "33:-cba;33.4;-c,b,a;4;c2v^9;p 21 c n;p -2n 2a", "33:-cba*;33.4;-c,b,a;4;c2v^9;p 21 c n*;p -2n 21", "33:bca;33.5;b,c,a;4;c2v^9;p c 21 n;p -2n -2ac", "33:a-cb;33.6;a,-c,b;4;c2v^9;p n 21 a;p -2ac -2n", "34;34.1;;4;c2v^10;p n n 2;p 2 -2n", "34:cab;34.2;c,a,b;4;c2v^10;p 2 n n;p -2n 2", "34:bca;34.3;b,c,a;4;c2v^10;p n 2 n;p -2n -2n", "35;35.1;;8;c2v^11;c m m 2;c 2 -2", "35:cab;35.2;c,a,b;8;c2v^11;a 2 m m;a -2 2", "35:bca;35.3;b,c,a;8;c2v^11;b m 2 m;b -2 -2", "36;36.1;;8;c2v^12;c m c 21;c 2c -2", "36*;36.1;;8;c2v^12;c m c 21*;c 21 -2", "36:ba-c;36.2;b,a,-c;8;c2v^12;c c m 21;c 2c -2c", "36:ba-c*;36.2;b,a,-c;8;c2v^12;c c m 21*;c 21 -2c", "36:cab;36.3;c,a,b;8;c2v^12;a 21 m a;a -2a 2a", "36:cab*;36.3;c,a,b;8;c2v^12;a 21 m a*;a -2a 21", "36:-cba;36.4;-c,b,a;8;c2v^12;a 21 a m;a -2 2a", "36:-cba*;36.4;-c,b,a;8;c2v^12;a 21 a m*;a -2 21", "36:bca;36.5;b,c,a;8;c2v^12;b b 21 m;b -2 -2b", "36:a-cb;36.6;a,-c,b;8;c2v^12;b m 21 b;b -2b -2", "37;37.1;;8;c2v^13;c c c 2;c 2 -2c", "37:cab;37.2;c,a,b;8;c2v^13;a 2 a a;a -2a 2", "37:bca;37.3;b,c,a;8;c2v^13;b b 2 b;b -2b -2b", "38;38.1;;8;c2v^14;a m m 2;a 2 -2", "38:ba-c;38.2;b,a,-c;8;c2v^14;b m m 2;b 2 -2", "38:cab;38.3;c,a,b;8;c2v^14;b 2 m m;b -2 2", "38:-cba;38.4;-c,b,a;8;c2v^14;c 2 m m;c -2 2", "38:bca;38.5;b,c,a;8;c2v^14;c m 2 m;c -2 -2", "38:a-cb;38.6;a,-c,b;8;c2v^14;a m 2 m;a -2 -2", "39;39.1;;8;c2v^15;a e m 2;a 2 -2b", "39;39.1;;8;c2v^15;a b m 2;a 2 -2b", "39:ba-c;39.2;b,a,-c;8;c2v^15;b m e 2;b 2 -2a", "39:ba-c;39.2;b,a,-c;8;c2v^15;b m a 2;b 2 -2a", "39:cab;39.3;c,a,b;8;c2v^15;b 2 e m;b -2a 2", "39:cab;39.3;c,a,b;8;c2v^15;b 2 c m;b -2a 2", "39:-cba;39.4;-c,b,a;8;c2v^15;c 2 m e;c -2a 2", "39:-cba;39.4;-c,b,a;8;c2v^15;c 2 m b;c -2a 2", "39:bca;39.5;b,c,a;8;c2v^15;c m 2 e;c -2a -2a", "39:bca;39.5;b,c,a;8;c2v^15;c m 2 a;c -2a -2a", "39:a-cb;39.6;a,-c,b;8;c2v^15;a e 2 m;a -2b -2b", "39:a-cb;39.6;a,-c,b;8;c2v^15;a c 2 m;a -2b -2b", "40;40.1;;8;c2v^16;a m a 2;a 2 -2a", "40:ba-c;40.2;b,a,-c;8;c2v^16;b b m 2;b 2 -2b", "40:cab;40.3;c,a,b;8;c2v^16;b 2 m b;b -2b 2", "40:-cba;40.4;-c,b,a;8;c2v^16;c 2 c m;c -2c 2", "40:bca;40.5;b,c,a;8;c2v^16;c c 2 m;c -2c -2c", "40:a-cb;40.6;a,-c,b;8;c2v^16;a m 2 a;a -2a -2a", "41;41.1;;8;c2v^17;a e a 2;a 2 -2ab", "41;41.1;;8;c2v^17;a b a 2;a 2 -2ab", "41:ba-c;41.2;b,a,-c;8;c2v^17;b b e 2;b 2 -2ab", "41:ba-c;41.2;b,a,-c;8;c2v^17;b b a 2;b 2 -2ab", "41:cab;41.3;c,a,b;8;c2v^17;b 2 e b;b -2ab 2", "41:cab;41.3;c,a,b;8;c2v^17;b 2 c b;b -2ab 2", "41:-cba;41.4;-c,b,a;8;c2v^17;c 2 c e;c -2ac 2", "41:-cba;41.4;-c,b,a;8;c2v^17;c 2 c b;c -2ac 2", "41:bca;41.5;b,c,a;8;c2v^17;c c 2 e;c -2ac -2ac", "41:bca;41.5;b,c,a;8;c2v^17;c c 2 a;c -2ac -2ac", "41:a-cb;41.6;a,-c,b;8;c2v^17;a e 2 a;a -2ab -2ab", "41:a-cb;41.6;a,-c,b;8;c2v^17;a c 2 a;a -2ab -2ab", "42;42.1;;16;c2v^18;f m m 2;f 2 -2", "42:cab;42.2;c,a,b;16;c2v^18;f 2 m m;f -2 2", "42:bca;42.3;b,c,a;16;c2v^18;f m 2 m;f -2 -2", "43;43.1;;16;c2v^19;f d d 2;f 2 -2d", "43:cab;43.2;c,a,b;16;c2v^19;f 2 d d;f -2d 2", "43:bca;43.3;b,c,a;16;c2v^19;f d 2 d;f -2d -2d", "44;44.1;;8;c2v^20;i m m 2;i 2 -2", "44:cab;44.2;c,a,b;8;c2v^20;i 2 m m;i -2 2", "44:bca;44.3;b,c,a;8;c2v^20;i m 2 m;i -2 -2", "45;45.1;;8;c2v^21;i b a 2;i 2 -2c", "45:cab;45.2;c,a,b;8;c2v^21;i 2 c b;i -2a 2", "45:bca;45.3;b,c,a;8;c2v^21;i c 2 a;i -2b -2b", "46;46.1;;8;c2v^22;i m a 2;i 2 -2a", "46:ba-c;46.2;b,a,-c;8;c2v^22;i b m 2;i 2 -2b", "46:cab;46.3;c,a,b;8;c2v^22;i 2 m b;i -2b 2", "46:-cba;46.4;-c,b,a;8;c2v^22;i 2 c m;i -2c 2", "46:bca;46.5;b,c,a;8;c2v^22;i c 2 m;i -2c -2c", "46:a-cb;46.6;a,-c,b;8;c2v^22;i m 2 a;i -2a -2a", "47;47.1;;8;d2h^1;p m m m;-p 2 2", "48:2;48.1;;8;d2h^2;p n n n :2;-p 2ab 2bc", "48:1;48.2;a,b,c|1/4,1/4,1/4;8;d2h^2;p n n n :1;p 2 2 -1n", "49;49.1;;8;d2h^3;p c c m;-p 2 2c", "49:cab;49.2;c,a,b;8;d2h^3;p m a a;-p 2a 2", "49:bca;49.3;b,c,a;8;d2h^3;p b m b;-p 2b 2b", "50:2;50.1;;8;d2h^4;p b a n :2;-p 2ab 2b", "50:2cab;50.2;c,a,b;8;d2h^4;p n c b :2;-p 2b 2bc", "50:2bca;50.3;b,c,a;8;d2h^4;p c n a :2;-p 2a 2c", "50:1;50.4;a,b,c|1/4,1/4,0;8;d2h^4;p b a n :1;p 2 2 -1ab", "50:1cab;50.5;c,a,b|1/4,1/4,0;8;d2h^4;p n c b :1;p 2 2 -1bc", "50:1bca;50.6;b,c,a|1/4,1/4,0;8;d2h^4;p c n a :1;p 2 2 -1ac", "51;51.1;;8;d2h^5;p m m a;-p 2a 2a", "51:ba-c;51.2;b,a,-c;8;d2h^5;p m m b;-p 2b 2", "51:cab;51.3;c,a,b;8;d2h^5;p b m m;-p 2 2b", "51:-cba;51.4;-c,b,a;8;d2h^5;p c m m;-p 2c 2c", "51:bca;51.5;b,c,a;8;d2h^5;p m c m;-p 2c 2", "51:a-cb;51.6;a,-c,b;8;d2h^5;p m a m;-p 2 2a", "52;52.1;;8;d2h^6;p n n a;-p 2a 2bc", "52:ba-c;52.2;b,a,-c;8;d2h^6;p n n b;-p 2b 2n", "52:cab;52.3;c,a,b;8;d2h^6;p b n n;-p 2n 2b", "52:-cba;52.4;-c,b,a;8;d2h^6;p c n n;-p 2ab 2c", "52:bca;52.5;b,c,a;8;d2h^6;p n c n;-p 2ab 2n", "52:a-cb;52.6;a,-c,b;8;d2h^6;p n a n;-p 2n 2bc", "53;53.1;;8;d2h^7;p m n a;-p 2ac 2", "53:ba-c;53.2;b,a,-c;8;d2h^7;p n m b;-p 2bc 2bc", "53:cab;53.3;c,a,b;8;d2h^7;p b m n;-p 2ab 2ab", "53:-cba;53.4;-c,b,a;8;d2h^7;p c n m;-p 2 2ac", "53:bca;53.5;b,c,a;8;d2h^7;p n c m;-p 2 2bc", "53:a-cb;53.6;a,-c,b;8;d2h^7;p m a n;-p 2ab 2", "54;54.1;;8;d2h^8;p c c a;-p 2a 2ac", "54:ba-c;54.2;b,a,-c;8;d2h^8;p c c b;-p 2b 2c", "54:cab;54.3;c,a,b;8;d2h^8;p b a a;-p 2a 2b", "54:-cba;54.4;-c,b,a;8;d2h^8;p c a a;-p 2ac 2c", "54:bca;54.5;b,c,a;8;d2h^8;p b c b;-p 2bc 2b", "54:a-cb;54.6;a,-c,b;8;d2h^8;p b a b;-p 2b 2ab", "55;55.1;;8;d2h^9;p b a m;-p 2 2ab", "55:cab;55.2;c,a,b;8;d2h^9;p m c b;-p 2bc 2", "55:bca;55.3;b,c,a;8;d2h^9;p c m a;-p 2ac 2ac", "56;56.1;;8;d2h^10;p c c n;-p 2ab 2ac", "56:cab;56.2;c,a,b;8;d2h^10;p n a a;-p 2ac 2bc", "56:bca;56.3;b,c,a;8;d2h^10;p b n b;-p 2bc 2ab", "57;57.1;;8;d2h^11;p b c m;-p 2c 2b", "57:ba-c;57.2;b,a,-c;8;d2h^11;p c a m;-p 2c 2ac", "57:cab;57.3;c,a,b;8;d2h^11;p m c a;-p 2ac 2a", "57:-cba;57.4;-c,b,a;8;d2h^11;p m a b;-p 2b 2a", "57:bca;57.5;b,c,a;8;d2h^11;p b m a;-p 2a 2ab", "57:a-cb;57.6;a,-c,b;8;d2h^11;p c m b;-p 2bc 2c", "58;58.1;;8;d2h^12;p n n m;-p 2 2n", "58:cab;58.2;c,a,b;8;d2h^12;p m n n;-p 2n 2", "58:bca;58.3;b,c,a;8;d2h^12;p n m n;-p 2n 2n", "59:2;59.1;;8;d2h^13;p m m n :2;-p 2ab 2a", "59:2cab;59.2;c,a,b;8;d2h^13;p n m m :2;-p 2c 2bc", "59:2bca;59.3;b,c,a;8;d2h^13;p m n m :2;-p 2c 2a", "59:1;59.4;a,b,c|1/4,1/4,0;8;d2h^13;p m m n :1;p 2 2ab -1ab", "59:1cab;59.5;c,a,b|1/4,1/4,0;8;d2h^13;p n m m :1;p 2bc 2 -1bc", "59:1bca;59.6;b,c,a|1/4,1/4,0;8;d2h^13;p m n m :1;p 2ac 2ac -1ac", "60;60.1;;8;d2h^14;p b c n;-p 2n 2ab", "60:ba-c;60.2;b,a,-c;8;d2h^14;p c a n;-p 2n 2c", "60:cab;60.3;c,a,b;8;d2h^14;p n c a;-p 2a 2n", "60:-cba;60.4;-c,b,a;8;d2h^14;p n a b;-p 2bc 2n", "60:bca;60.5;b,c,a;8;d2h^14;p b n a;-p 2ac 2b", "60:a-cb;60.6;a,-c,b;8;d2h^14;p c n b;-p 2b 2ac", "61;61.1;;8;d2h^15;p b c a;-p 2ac 2ab", "61:ba-c;61.2;b,a,-c;8;d2h^15;p c a b;-p 2bc 2ac", "62;62.1;;8;d2h^16;p n m a;-p 2ac 2n", "62:ba-c;62.2;b,a,-c;8;d2h^16;p m n b;-p 2bc 2a", "62:cab;62.3;c,a,b;8;d2h^16;p b n m;-p 2c 2ab", "62:-cba;62.4;-c,b,a;8;d2h^16;p c m n;-p 2n 2ac", "62:bca;62.5;b,c,a;8;d2h^16;p m c n;-p 2n 2a", "62:a-cb;62.6;a,-c,b;8;d2h^16;p n a m;-p 2c 2n", "63;63.1;;16;d2h^17;c m c m;-c 2c 2", "63:ba-c;63.2;b,a,-c;16;d2h^17;c c m m;-c 2c 2c", "63:cab;63.3;c,a,b;16;d2h^17;a m m a;-a 2a 2a", "63:-cba;63.4;-c,b,a;16;d2h^17;a m a m;-a 2 2a", "63:bca;63.5;b,c,a;16;d2h^17;b b m m;-b 2 2b", "63:a-cb;63.6;a,-c,b;16;d2h^17;b m m b;-b 2b 2", "64;64.1;;16;d2h^18;c m c e;-c 2ac 2", "64;64.1;;16;d2h^18;c m c a;-c 2ac 2", "64:ba-c;64.2;b,a,-c;16;d2h^18;c c m e;-c 2ac 2ac", "64:ba-c;64.2;b,a,-c;16;d2h^18;c c m b;-c 2ac 2ac", "64:cab;64.3;c,a,b;16;d2h^18;a e m a;-a 2ab 2ab", "64:cab;64.3;c,a,b;16;d2h^18;a b m a;-a 2ab 2ab", "64:-cba;64.4;-c,b,a;16;d2h^18;a e a m;-a 2 2ab", "64:-cba;64.4;-c,b,a;16;d2h^18;a c a m;-a 2 2ab", "64:bca;64.5;b,c,a;16;d2h^18;b b e m;-b 2 2ab", "64:bca;64.5;b,c,a;16;d2h^18;b b c m;-b 2 2ab", "64:a-cb;64.6;a,-c,b;16;d2h^18;b m e b;-b 2ab 2", "64:a-cb;64.6;a,-c,b;16;d2h^18;b m a b;-b 2ab 2", "65;65.1;;16;d2h^19;c m m m;-c 2 2", "65:cab;65.2;c,a,b;16;d2h^19;a m m m;-a 2 2", "65:bca;65.3;b,c,a;16;d2h^19;b m m m;-b 2 2", "66;66.1;;16;d2h^20;c c c m;-c 2 2c", "66:cab;66.2;c,a,b;16;d2h^20;a m a a;-a 2a 2", "66:bca;66.3;b,c,a;16;d2h^20;b b m b;-b 2b 2b", "67;67.1;;16;d2h^21;c m m e;-c 2a 2", "67;67.1;;16;d2h^21;c m m a;-c 2a 2", "67:ba-c;67.2;b,a,-c;16;d2h^21;c m m b;-c 2a 2a", "67:cab;67.3;c,a,b;16;d2h^21;a b m m;-a 2b 2b", "67:-cba;67.4;-c,b,a;16;d2h^21;a c m m;-a 2 2b", "67:bca;67.5;b,c,a;16;d2h^21;b m c m;-b 2 2a", "67:a-cb;67.6;a,-c,b;16;d2h^21;b m a m;-b 2a 2", "68:2;68.1;;16;d2h^22;c c c e :2;-c 2a 2ac", "68:2;68.1;;16;d2h^22;c c c a :2;-c 2a 2ac", "68:2ba-c;68.2;b,a,-c;16;d2h^22;c c c b :2;-c 2a 2c", "68:2cab;68.3;c,a,b;16;d2h^22;a b a a :2;-a 2a 2b", "68:2-cba;68.4;-c,b,a;16;d2h^22;a c a a :2;-a 2ab 2b", "68:2bca;68.5;b,c,a;16;d2h^22;b b c b :2;-b 2ab 2b", "68:2a-cb;68.6;a,-c,b;16;d2h^22;b b a b :2;-b 2b 2ab", "68:1;68.7;a,b,c|0,1/4,1/4;16;d2h^22;c c c e :1;c 2 2 -1ac", "68:1;68.7;a,b,c|0,1/4,1/4;16;d2h^22;c c c a :1;c 2 2 -1ac", "68:1ba-c;68.8;b,a,-c|0,1/4,1/4;16;d2h^22;c c c b :1;c 2 2 -1ac", "68:1cab;68.9;c,a,b|0,1/4,1/4;16;d2h^22;a b a a :1;a 2 2 -1ab", "68:1-cba;68.10;-c,b,a|0,1/4,1/4;16;d2h^22;a c a a :1;a 2 2 -1ab", "68:1bca;68.11;b,c,a|0,1/4,1/4;16;d2h^22;b b c b :1;b 2 2 -1ab", "68:1a-cb;68.12;a,-c,b|0,1/4,1/4;16;d2h^22;b b a b :1;b 2 2 -1ab", "69;69.1;;32;d2h^23;f m m m;-f 2 2", "70:2;70.1;;32;d2h^24;f d d d :2;-f 2uv 2vw", "70:1;70.2;a,b,c|-1/8,-1/8,-1/8;32;d2h^24;f d d d :1;f 2 2 -1d", "71;71.1;;16;d2h^25;i m m m;-i 2 2", "72;72.1;;16;d2h^26;i b a m;-i 2 2c", "72:cab;72.2;c,a,b;16;d2h^26;i m c b;-i 2a 2", "72:bca;72.3;b,c,a;16;d2h^26;i c m a;-i 2b 2b", "73;73.1;;16;d2h^27;i b c a;-i 2b 2c", "73:ba-c;73.2;b,a,-c;16;d2h^27;i c a b;-i 2a 2b", "74;74.1;;16;d2h^28;i m m a;-i 2b 2", "74:ba-c;74.2;b,a,-c;16;d2h^28;i m m b;-i 2a 2a", "74:cab;74.3;c,a,b;16;d2h^28;i b m m;-i 2c 2c", "74:-cba;74.4;-c,b,a;16;d2h^28;i c m m;-i 2 2b", "74:bca;74.5;b,c,a;16;d2h^28;i m c m;-i 2 2a", "74:a-cb;74.6;a,-c,b;16;d2h^28;i m a m;-i 2c 2", "75;75.1;;4;c4^1;p 4;p 4", "75:c;75.2;ab;8;c4^1;c 4;c 4", "76;76.1;;4;c4^2;p 41;p 4w", "76*;76.1;;4;c4^2;p 41*;p 41", "76:c;76.2;ab;8;c4^2;c 41;c 4w", "77;77.1;;4;c4^3;p 42;p 4c", "77*;77.1;;4;c4^3;p 42*;p 42", "77:c;77.2;ab;8;c4^3;c 42;c 4c", "78;78.1;;4;c4^4;p 43;p 4cw", "78*;78.1;;4;c4^4;p 43*;p 43", "78:c;78.2;ab;8;c4^4;c 43;c 4cw", "79;79.1;;8;c4^5;i 4;i 4", "79:f;79.2;ab;16;c4^5;f 4;f 4", "80;80.1;;8;c4^6;i 41;i 4bw", "80:f;80.2;ab;16;c4^6;f 41;xyz", "81;81.1;;4;s4^1;p -4;p -4", "81:c;81.2;ab;8;s4^1;c -4;c -4", "82;82.1;;8;s4^2;i -4;i -4", "82:f;82.2;ab;16;s4^2;f -4;f -4", "83;83.1;;8;c4h^1;p 4/m;-p 4", "83:f;83.2;ab;16;c4h^1;c 4/m;-c 4", "84;84.1;;8;c4h^2;p 42/m;-p 4c", "84*;84.1;;8;c4h^2;p 42/m*;-p 42", "84:c;84.2;ab;16;c4h^2;c 42/m;-c 4c", "85:2;85.1;;8;c4h^3;p 4/n :2;-p 4a", "85:c2;85.2;ab;16;c4h^3;c 4/e :2;xyz", "85:1;85.3;a,b,c|-1/4,1/4,0;8;c4h^3;p 4/n :1;p 4ab -1ab", "85:c1;85.4;ab|-1/4,1/4,0;16;c4h^3;c 4/e :1;xyz", "86:2;86.1;;8;c4h^4;p 42/n :2;-p 4bc", "86:1;86.3;a,b,c|-1/4,-1/4,-1/4;8;c4h^4;p 42/n :1;p 4n -1n", "86:c1;86.4;ab|-1/4,-1/4,-1/4;16;c4h^4;c 42/e :1;xyz", "86:c2;86.2;ab;16;c4h^4;c 42/e :2;xyz", "87;87.1;;16;c4h^5;i 4/m;-i 4", "87:f;87.2;ab;32;c4h^5;f 4/m;xyz", "88:2;88.1;;16;c4h^6;i 41/a :2;-i 4ad", "88:f2;88.2;ab;32;c4h^6;f 41/d :2;xyz", "88:1;88.3;a,b,c|0,-1/4,-1/8;16;c4h^6;i 41/a :1;i 4bw -1bw", "88:f1;88.4;ab|0,-1/4,-1/8;32;c4h^6;f 41/d :1;xyz", "89;89.1;;8;d4^1;p 4 2 2;p 4 2", "89:c;89.2;ab;16;d4^1;c 4 2 2;xyz", "90;90.1;;8;d4^2;p 4 21 2;p 4ab 2ab", "90:c;90.2;ab;16;d4^2;c 4 2 21;xyz", "91;91.1;;8;d4^3;p 41 2 2;p 4w 2c", "91*;91.1;;8;d4^3;p 41 2 2*;p 41 2c", "91:c;91.2;ab;16;d4^3;c 41 2 2;xyz", "92;92.1;;8;d4^4;p 41 21 2;p 4abw 2nw", "92:c;92.2;ab;16;d4^4;c 41 2 21;xyz", "93;93.1;;8;d4^5;p 42 2 2;p 4c 2", "93*;93.1;;8;d4^5;p 42 2 2*;p 42 2", "93:c;93.2;ab;16;d4^5;c 42 2 2;xyz", "94;94.1;;8;d4^6;p 42 21 2;p 4n 2n", "94:c;94.2;ab;16;d4^6;c 42 2 21;xyz", "95;95.1;;8;d4^7;p 43 2 2;p 4cw 2c", "95*;95.1;;8;d4^7;p 43 2 2*;p 43 2c", "95:c;95.2;ab;16;d4^7;c 43 2 2;xyz", "96;96.1;;8;d4^8;p 43 21 2;p 4nw 2abw", "96:c;96.2;ab;16;d4^8;c 43 2 21;xyz", "97;97.1;;16;d4^9;i 4 2 2;i 4 2", "97:f;97.2;ab;32;d4^9;f 4 2 2;f 4 2", "98;98.1;;16;d4^10;i 41 2 2;i 4bw 2bw", "98:f;98.2;ab;32;d4^10;f 41 2 2;xyz", "99;99.1;;8;c4v^1;p 4 m m;p 4 -2", "99:c;99.2;ab;16;c4v^1;c 4 m m;c 4 -2", "100;100.1;;8;c4v^2;p 4 b m;p 4 -2ab", "100:c;100.2;ab;16;c4v^2;c 4 m g1;xyz", "101;101.1;;8;c4v^3;p 42 c m;p 4c -2c", "101*;101.1;;8;c4v^3;p 42 c m*;p 42 -2c", "101:c;101.2;ab;16;c4v^3;c 42 m c;xyz", "102;102.1;;8;c4v^4;p 42 n m;p 4n -2n", "102:c;102.2;ab;16;c4v^4;c 42 m g2;xyz", "103;103.1;;8;c4v^5;p 4 c c;p 4 -2c", "103:c;103.2;ab;16;c4v^5;c 4 c c;c 4 -2c", "104;104.1;;8;c4v^6;p 4 n c;p 4 -2n", "104:c;104.2;ab;16;c4v^6;c 4 c g2;xyz", "105;105.1;;8;c4v^7;p 42 m c;p 4c -2", "105*;105.1;;8;c4v^7;p 42 m c*;p 42 -2", "105:c;105.2;ab;16;c4v^7;c 42 c m;xyz", "106;106.1;;8;c4v^8;p 42 b c;p 4c -2ab", "106*;106.1;;8;c4v^8;p 42 b c*;p 42 -2ab", "106:c;106.2;ab;16;c4v^8;c 42 c g1;xyz", "107;107.1;;16;c4v^9;i 4 m m;i 4 -2", "107:f;107.2;ab;32;c4v^9;f 4 m m;f 4 -2", "108;108.1;;16;c4v^10;i 4 c m;i 4 -2c", "108:f;108.2;ab;32;c4v^10;f 4 m c;xyz", "109;109.1;;16;c4v^11;i 41 m d;i 4bw -2", "109:f;109.2;ab;32;c4v^11;f 41 d m;xyz", "110;110.1;;16;c4v^12;i 41 c d;i 4bw -2c", "110:f;110.2;ab;32;c4v^12;f 41 d c;xyz", "111;111.1;;8;d2d^1;p -4 2 m;p -4 2", "111:c;111.2;ab;16;d2d^1;c -4 m 2;xyz", "112;112.1;;8;d2d^2;p -4 2 c;p -4 2c", "112:c;112.2;ab;16;d2d^2;c -4 c 2;xyz", "113;113.1;;8;d2d^3;p -4 21 m;p -4 2ab", "113:c;113.2;ab;16;d2d^3;c -4 m 21;xyz", "114;114.1;;8;d2d^4;p -4 21 c;p -4 2n", "114:c;114.2;ab;16;d2d^4;c -4 c 21;xyz", "115;115.1;;8;d2d^5;p -4 m 2;p -4 -2", "115:c;115.2;ab;16;d2d^5;c -4 2 m;xyz", "116;116.1;;8;d2d^6;p -4 c 2;p -4 -2c", "116:c;116.2;ab;16;d2d^6;c -4 2 c;xyz", "117;117.1;;8;d2d^7;p -4 b 2;p -4 -2ab", "117:c;117.2;ab;16;d2d^7;c -4 2 g1;xyz", "118;118.1;;8;d2d^8;p -4 n 2;p -4 -2n", "118:c;118.2;ab;16;d2d^8;c -4 2 g2;xyz", "119;119.1;;16;d2d^9;i -4 m 2;i -4 -2", "119:f;119.2;ab;32;d2d^9;f -4 2 m;xyz", "120;120.1;;16;d2d^10;i -4 c 2;i -4 -2c", "120:f;120.2;ab;32;d2d^10;f -4 2 c;xyz", "121;121.1;;16;d2d^11;i -4 2 m;i -4 2", "121:f;121.2;ab;32;d2d^11;f -4 m 2;xyz", "122;122.1;;16;d2d^12;i -4 2 d;i -4 2bw", "122:f;122.2;ab;32;d2d^12;f -4 d 2;xyz", "123;123.1;;16;d4h^1;p 4/m m m;-p 4 2", "123:c;123.2;ab;32;d4h^1;c 4/m m m;xyz", "124;124.1;;16;d4h^2;p 4/m c c;-p 4 2c", "124:c;124.2;ab;32;d4h^2;c 4/m c c;xyz", "125:2;125.1;;16;d4h^3;p 4/n b m :2;-p 4a 2b", "125:c2;125.2;ab;32;d4h^3;c 4/e m g1 :2;xyz", "125:1;125.3;a,b,c|-1/4,-1/4,0;16;d4h^3;p 4/n b m :1;p 4 2 -1ab", "125:c1;125.4;ab|-1/4,-1/4,0;32;d4h^3;c 4/e m g1 :1;xyz", "126:2;126.1;;16;d4h^4;p 4/n n c :2;-p 4a 2bc", "126:c1;126.2;ab;32;d4h^4;c 4/e c g2 :2;xyz", "126:1;126.3;a,b,c|-1/4,-1/4,-1/4;16;d4h^4;p 4/n n c :1;p 4 2 -1n", "126:c4;126.4;ab|-1/4,-1/4,-1/4;32;d4h^4;c 4/e c g2 :1;xyz", "127;127.1;;16;d4h^5;p 4/m b m;-p 4 2ab", "127:c;127.2;ab;32;d4h^5;c 4/m m g1;xyz", "128;128.1;;16;d4h^6;p 4/m n c;-p 4 2n", "128:c;128.2;a+b,-a+b,c;32;d4h^6;c 4/m c g2;xyz", "129:2;129.1;;16;d4h^7;p 4/n m m :2;-p 4a 2a", "129:c2;129.2;ab;32;d4h^7;c 4/e m m :2;xyz", "129:1;129.3;a,b,c|-1/4,1/4,0;16;d4h^7;p 4/n m m :1;p 4ab 2ab -1ab", "129:c1;129.4;ab|-1/4,1/4,0;32;d4h^7;c 4/e m m :1;xyz", "130:2;130.1;;16;d4h^8;p 4/n c c :2;-p 4a 2ac", "130:c2;130.2;ab;32;d4h^8;c 4/e c c :2;xyz", "130:1;130.3;a,b,c|-1/4,1/4,0;16;d4h^8;p 4/n c c :1;p 4ab 2n -1ab", "130:c1;130.4;ab|-1/4,1/4,0;32;d4h^8;c 4/e c c :1;xyz", "131;131.1;;16;d4h^9;p 42/m m c;-p 4c 2", "131:c;131.2;ab;32;d4h^9;c 42/m c m;xyz", "132;132.1;;16;d4h^10;p 42/m c m;-p 4c 2c", "132:c;132.2;ab;32;d4h^10;c 42/m m c;xyz", "133:2;133.1;;16;d4h^11;p 42/n b c :2;-p 4ac 2b", "133:c1;133.2;ab;32;d4h^11;c 42/e c g1 :2;xyz", "133:1;133.3;a,b,c|-1/4,1/4,-1/4;16;d4h^11;p 42/n b c :1;p 4n 2c -1n", "133:c2;133.4;ab|-1/4,1/4,-1/4;32;d4h^11;c 42/e c g1 :1;xyz", "134:2;134.1;;16;d4h^12;p 42/n n m :2;-p 4ac 2bc", "134:c2;134.2;ab;32;d4h^12;c 42/e m g2 :2;xyz", "134:1;134.3;a,b,c|-1/4,1/4,-1/4;16;d4h^12;p 42/n n m :1;p 4n 2 -1n", "134:c1;134.4;ab|-1/4,1/4,-1/4;32;d4h^12;c 42/e m g2 :1;xyz", "135;135.1;;16;d4h^13;p 42/m b c;-p 4c 2ab", "135*;135.1;;16;d4h^13;p 42/m b c*;-p 42 2ab", "135:c;135.2;ab;32;d4h^13;c 42/m c g1;xyz", "136;136.1;;16;d4h^14;p 42/m n m;-p 4n 2n", "136:c;136.2;ab;32;d4h^14;c 42/m m g2;xyz", "137:2;137.1;;16;d4h^15;p 42/n m c :2;-p 4ac 2a", "137:c1;137.2;ab;32;d4h^15;c 42/e c m :2;xyz", "137:1;137.3;a,b,c|-1/4,1/4,-1/4;16;d4h^15;p 42/n m c :1;p 4n 2n -1n", "137:c2;137.4;ab|-1/4,1/4,-1/4;32;d4h^15;c 42/e c m :1;xyz", "138:2;138.1;;16;d4h^16;p 42/n c m :2;-p 4ac 2ac", "138:c2;138.2;ab;32;d4h^16;c 42/e m c :2;xyz", "138:1;138.3;a,b,c|-1/4,1/4,-1/4;16;d4h^16;p 42/n c m :1;p 4n 2ab -1n", "138:c1;138.4;ab|-1/4,1/4,-1/4;32;d4h^16;c 42/e m c :1;xyz", "139;139.1;;32;d4h^17;i 4/m m m;-i 4 2", "139:f;139.2;ab;64;d4h^17;f 4/m m m;xyz", "140;140.1;;32;d4h^18;i 4/m c m;-i 4 2c", "140:f;140.2;ab;64;d4h^18;f 4/m m c;xyz", "141:2;141.1;;32;d4h^19;i 41/a m d :2;-i 4bd 2", "141:f2;141.2;ab;64;d4h^19;f 41/d d m :2;xyz", "141:1;141.3;a,b,c|0,1/4,-1/8;32;d4h^19;i 41/a m d :1;i 4bw 2bw -1bw", "141:f1;141.4;ab|0,1/4,-1/8;64;d4h^19;f 41/d d m :1;xyz", "142:2;142.1;;32;d4h^20;i 41/a c d :2;-i 4bd 2c", "142:f2;142.2;ab;64;d4h^20;f 41/d d c :2;xyz", "142:1;142.3;a,b,c|0,1/4,-1/8;32;d4h^20;i 41/a c d :1;i 4bw 2aw -1bw", "142:f1;142.4;ab|0,1/4,-1/8;64;d4h^20;f 41/d d c :1;xyz", "143;143.1;;3;c3^1;p 3;p 3", "144;144.1;;3;c3^2;p 31;p 31", "145;145.1;;3;c3^3;p 32;p 32", "146:h;146.1;;9;c3^4;r 3 :h;r 3", "146:r;146.2;r;3;c3^4;r 3 :r;p 3*", "147;147.1;;6;c3i^1;p -3;-p 3", "148:h;148.1;;18;c3i^2;r -3 :h;-r 3", "148:r;148.2;r;6;c3i^2;r -3 :r;-p 3*", "149;149.1;;6;d3^1;p 3 1 2;p 3 2", "150;150.1;;6;d3^2;p 3 2 1;p 3 2\"", "151;151.1;;6;d3^3;p 31 1 2;p 31 2 (0 0 4)", "152;152.1;;6;d3^4;p 31 2 1;p 31 2\"", "152:_2;152:a,b,c|0,0,-1/3;a,b,c|0,0,-1/3;6;d3^4;p 31 2 1;p 31 2\" (0 0 -4)", "153;153.1;;6;d3^5;p 32 1 2;p 32 2 (0 0 2)", "154;154.1;;6;d3^6;p 32 2 1;p 32 2\"", "154:_2;154:a,b,c|0,0,-1/3;a,b,c|0,0,-1/3;6;d3^6;p 32 2 1;p 32 2\" (0 0 4)", "155:h;155.1;;18;d3^7;r 3 2 :h;r 3 2\"", "155:r;155.2;r;6;d3^7;r 3 2 :r;p 3* 2", "156;156.1;;6;c3v^1;p 3 m 1;p 3 -2\"", "157;157.1;;6;c3v^2;p 3 1 m;p 3 -2", "158;158.1;;6;c3v^3;p 3 c 1;p 3 -2\"c", "159;159.1;;6;c3v^4;p 3 1 c;p 3 -2c", "160:h;160.1;;18;c3v^5;r 3 m :h;r 3 -2\"", "160:r;160.2;r;6;c3v^5;r 3 m :r;p 3* -2", "161:h;161.1;;18;c3v^6;r 3 c :h;r 3 -2\"c", "161:r;161.2;r;6;c3v^6;r 3 c :r;p 3* -2n", "162;162.1;;12;d3d^1;p -3 1 m;-p 3 2", "163;163.1;;12;d3d^2;p -3 1 c;-p 3 2c", "164;164.1;;12;d3d^3;p -3 m 1;-p 3 2\"", "165;165.1;;12;d3d^4;p -3 c 1;-p 3 2\"c", "166:h;166.1;;36;d3d^5;r -3 m :h;-r 3 2\"", "166:r;166.2;r;12;d3d^5;r -3 m :r;-p 3* 2", "167:h;167.1;;36;d3d^6;r -3 c :h;-r 3 2\"c", "167:r;167.2;r;12;d3d^6;r -3 c :r;-p 3* 2n", "168;168.1;;6;c6^1;p 6;p 6", "169;169.1;;6;c6^2;p 61;p 61", "170;170.1;;6;c6^3;p 65;p 65", "171;171.1;;6;c6^4;p 62;p 62", "172;172.1;;6;c6^5;p 64;p 64", "173;173.1;;6;c6^6;p 63;p 6c", "173*;173.1;;6;c6^6;p 63*;p 63 ", "174;174.1;;6;c3h^1;p -6;p -6", "175;175.1;;12;c6h^1;p 6/m;-p 6", "176;176.1;;12;c6h^2;p 63/m;-p 6c", "176*;176.1;;12;c6h^2;p 63/m*;-p 63", "177;177.1;;12;d6^1;p 6 2 2;p 6 2", "178;178.1;;12;d6^2;p 61 2 2;p 61 2 (0 0 5)", "179;179.1;;12;d6^3;p 65 2 2;p 65 2 (0 0 1)", "180;180.1;;12;d6^4;p 62 2 2;p 62 2 (0 0 4)", "181;181.1;;12;d6^5;p 64 2 2;p 64 2 (0 0 2)", "182;182.1;;12;d6^6;p 63 2 2;p 6c 2c", "182*;182.1;;12;d6^6;p 63 2 2*;p 63 2c", "183;183.1;;12;c6v^1;p 6 m m;p 6 -2", "184;184.1;;12;c6v^2;p 6 c c;p 6 -2c", "185;185.1;;12;c6v^3;p 63 c m;p 6c -2", "185*;185.1;;12;c6v^3;p 63 c m*;p 63 -2", "186;186.1;;12;c6v^4;p 63 m c;p 6c -2c", "186*;186.1;;12;c6v^4;p 63 m c*;p 63 -2c", "187;187.1;;12;d3h^1;p -6 m 2;p -6 2", "188;188.1;;12;d3h^2;p -6 c 2;p -6c 2", "189;189.1;;12;d3h^3;p -6 2 m;p -6 -2", "190;190.1;;12;d3h^4;p -6 2 c;p -6c -2c", "191;191.1;;24;d6h^1;p 6/m m m;-p 6 2", "192;192.1;;24;d6h^2;p 6/m c c;-p 6 2c", "193;193.1;;24;d6h^3;p 63/m c m;-p 6c 2", "193*;193.1;;24;d6h^3;p 63/m c m*;-p 63 2", "194;194.1;;24;d6h^4;p 63/m m c;-p 6c 2c", "194*;194.1;;24;d6h^4;p 63/m m c*;-p 63 2c", "195;195.1;;12;t^1;p 2 3;p 2 2 3", "196;196.1;;48;t^2;f 2 3;f 2 2 3", "197;197.1;;24;t^3;i 2 3;i 2 2 3", "198;198.1;;12;t^4;p 21 3;p 2ac 2ab 3", "199;199.1;;24;t^5;i 21 3;i 2b 2c 3", "200;200.1;;24;th^1;p m -3;-p 2 2 3", "201:2;201.1;;24;th^2;p n -3 :2;-p 2ab 2bc 3", "201:1;201.2;a,b,c|-1/4,-1/4,-1/4;24;th^2;p n -3 :1;p 2 2 3 -1n", "202;202.1;;96;th^3;f m -3;-f 2 2 3", "203:2;203.1;;96;th^4;f d -3 :2;-f 2uv 2vw 3", "203:1;203.2;a,b,c|-1/8,-1/8,-1/8;96;th^4;f d -3 :1;f 2 2 3 -1d", "204;204.1;;48;th^5;i m -3;-i 2 2 3", "205;205.1;;24;th^6;p a -3;-p 2ac 2ab 3", "206;206.1;;48;th^7;i a -3;-i 2b 2c 3", "207;207.1;;24;o^1;p 4 3 2;p 4 2 3", "208;208.1;;24;o^2;p 42 3 2;p 4n 2 3", "209;209.1;;96;o^3;f 4 3 2;f 4 2 3", "210;210.1;;96;o^4;f 41 3 2;f 4d 2 3", "211;211.1;;48;o^5;i 4 3 2;i 4 2 3", "212;212.1;;24;o^6;p 43 3 2;p 4acd 2ab 3", "213;213.1;;24;o^7;p 41 3 2;p 4bd 2ab 3", "214;214.1;;48;o^8;i 41 3 2;i 4bd 2c 3", "215;215.1;;24;td^1;p -4 3 m;p -4 2 3", "216;216.1;;96;td^2;f -4 3 m;f -4 2 3", "217;217.1;;48;td^3;i -4 3 m;i -4 2 3", "218;218.1;;24;td^4;p -4 3 n;p -4n 2 3", "219;219.1;;96;td^5;f -4 3 c;f -4a 2 3", "220;220.1;;48;td^6;i -4 3 d;i -4bd 2c 3", "221;221.1;;48;oh^1;p m -3 m;-p 4 2 3", "222:2;222.1;;48;oh^2;p n -3 n :2;-p 4a 2bc 3", "222:1;222.2;a,b,c|-1/4,-1/4,-1/4;48;oh^2;p n -3 n :1;p 4 2 3 -1n", "223;223.1;;48;oh^3;p m -3 n;-p 4n 2 3", "224:2;224.1;;48;oh^4;p n -3 m :2;-p 4bc 2bc 3", "224:1;224.2;a,b,c|-1/4,-1/4,-1/4;48;oh^4;p n -3 m :1;p 4n 2 3 -1n", "225;225.1;;192;oh^5;f m -3 m;-f 4 2 3", "226;226.1;;192;oh^6;f m -3 c;-f 4a 2 3", "227:2;227.1;;192;oh^7;f d -3 m :2;-f 4vw 2vw 3", "227:1;227.2;a,b,c|-1/8,-1/8,-1/8;192;oh^7;f d -3 m :1;f 4d 2 3 -1d", "228:2;228.1;;192;oh^8;f d -3 c :2;-f 4ud 2vw 3", "228:1;228.2;a,b,c|-3/8,-3/8,-3/8;192;oh^8;f d -3 c :1;f 4d 2 3 -1ad", "229;229.1;;96;oh^9;i m -3 m;-i 4 2 3", "230;230.1;;96;oh^10;i a -3 d;-i 4bd 2c 3"]); +{ +JS.SpaceGroup.getSpaceGroups(); +}}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.HallInfo", ["JU.P3i", "$.SB", "JS.HallRotationTerm", "$.HallTranslation", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.hallSymbol = null; +this.primitiveHallSymbol = null; +this.latticeCode = '\0'; +this.latticeExtension = null; +this.isCentrosymmetric = false; +this.nRotations = 0; +this.rotationTerms = null; +this.vector12ths = null; +this.vectorCode = null; +Clazz_instantialize(this, arguments);}, JS, "HallInfo", null); +Clazz_prepareFields (c$, function(){ +this.rotationTerms = new Array(16); +}); +Clazz_makeConstructor(c$, +function(hallSymbol){ +try { +if (hallSymbol.startsWith("Hall:")) hallSymbol = hallSymbol.substring(5).trim(); +var str = this.hallSymbol = hallSymbol.trim(); +str = this.extractLatticeInfo(str); +if (JS.HallTranslation.getLatticeIndex(this.latticeCode) == 0) return; +this.latticeExtension = JS.HallTranslation.getLatticeExtension(this.latticeCode, this.isCentrosymmetric); +str = this.extractVectorInfo(str) + this.latticeExtension; +if (JU.Logger.debugging) JU.Logger.debug("Hallinfo: " + hallSymbol + " " + str); +var prevOrder = 0; +var prevAxisType = '\u0000'; +this.primitiveHallSymbol = "P"; +while (str.length > 0 && this.nRotations < 16) { +str = this.extractRotationInfo(str, prevOrder, prevAxisType); +var r = this.rotationTerms[this.nRotations - 1]; +prevOrder = r.order; +prevAxisType = r.axisType; +this.primitiveHallSymbol += " " + r.primitiveCode; +} +this.primitiveHallSymbol += this.vectorCode; +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +JU.Logger.error("Invalid Hall symbol " + e); +this.nRotations = 0; +} else { +throw e; +} +} +}, "~S"); +Clazz_defineMethod(c$, "dumpInfo", +function(){ +var sb = new JU.SB(); +sb.append("\nHall symbol: ").append(this.hallSymbol).append("\nprimitive Hall symbol: ").append(this.primitiveHallSymbol).append("\nlattice type: ").append(this.getLatticeDesignation()); +for (var i = 0; i < this.nRotations; i++) { +sb.append("\n\nrotation term ").appendI(i + 1).append(this.rotationTerms[i].dumpInfo(this.vectorCode)); +} +return sb.toString(); +}); +Clazz_defineMethod(c$, "getLatticeDesignation", +function(){ +return JS.HallTranslation.getLatticeDesignation2(this.latticeCode, this.isCentrosymmetric); +}); +Clazz_defineMethod(c$, "extractLatticeInfo", +function(name){ +var i = name.indexOf(" "); +if (i < 0) return ""; +var term = name.substring(0, i).toUpperCase(); +this.latticeCode = term.charAt(0); +if (this.latticeCode == '-') { +this.isCentrosymmetric = true; +this.latticeCode = term.charAt(1); +}return name.substring(i + 1).trim(); +}, "~S"); +Clazz_defineMethod(c$, "extractVectorInfo", +function(name){ +this.vector12ths = new JU.P3i(); +this.vectorCode = ""; +var i = name.indexOf("("); +var j = name.indexOf(")", i); +if (i > 0 && j > i) { +var term = name.substring(i + 1, j); +this.vectorCode = " (" + term + ")"; +name = name.substring(0, i).trim(); +i = term.indexOf(" "); +if (i >= 0) { +this.vector12ths.x = Integer.parseInt(term.substring(0, i)); +term = term.substring(i + 1).trim(); +i = term.indexOf(" "); +if (i >= 0) { +this.vector12ths.y = Integer.parseInt(term.substring(0, i)); +term = term.substring(i + 1).trim(); +}}this.vector12ths.z = Integer.parseInt(term); +}return name; +}, "~S"); +Clazz_defineMethod(c$, "extractRotationInfo", +function(name, prevOrder, prevAxisType){ +var i = name.indexOf(" "); +var code; +if (i >= 0) { +code = name.substring(0, i); +name = name.substring(i + 1).trim(); +} else { +code = name; +name = ""; +}this.rotationTerms[this.nRotations] = new JS.HallRotationTerm(this, code, prevOrder, prevAxisType); +this.nRotations++; +return name; +}, "~S,~N,~S"); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.hallSymbol; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.M4"], "JS.HallRotationTerm", ["JU.SB", "JS.HallRotation", "$.HallTranslation", "$.SymmetryOperation", "JU.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.inputCode = null; +this.primitiveCode = null; +this.lookupCode = null; +this.translationString = null; +this.rotation = null; +this.translation = null; +this.seitzMatrix12ths = null; +this.isImproper = false; +this.order = 0; +this.axisType = '\0'; +this.diagonalReferenceAxis = '\0'; +this.allPositive = true; +Clazz_instantialize(this, arguments);}, JS, "HallRotationTerm", null); +Clazz_prepareFields (c$, function(){ +this.seitzMatrix12ths = new JU.M4(); +}); +Clazz_makeConstructor(c$, +function(hallInfo, code, prevOrder, prevAxisType){ +this.inputCode = code; +code += " "; +if (code.charAt(0) == '-') { +this.isImproper = true; +code = code.substring(1); +}this.primitiveCode = ""; +this.order = (code.charAt(0)).charCodeAt(0) - 48; +this.diagonalReferenceAxis = '\0'; +this.axisType = '\0'; +var ptr = 2; +var c; +switch ((c = code.charAt(1)).charCodeAt(0)) { +case 120: +case 121: +case 122: +switch ((code.charAt(2)).charCodeAt(0)) { +case 39: +case 34: +this.diagonalReferenceAxis = c; +c = code.charAt(2); +ptr++; +} +case 42: +this.axisType = c; +break; +case 39: +case 34: +this.axisType = c; +switch ((code.charAt(2)).charCodeAt(0)) { +case 120: +case 121: +case 122: +this.diagonalReferenceAxis = code.charAt(2); +ptr++; +break; +default: +this.diagonalReferenceAxis = prevAxisType; +} +break; +default: +this.axisType = (this.order == 1 ? '_' : hallInfo.nRotations == 0 ? 'z' : hallInfo.nRotations == 2 ? '*' : prevOrder == 2 || prevOrder == 4 ? 'x' : '\''); +code = code.substring(0, 1) + this.axisType + code.substring(1); +} +this.primitiveCode += (this.axisType == '_' ? "1" : code.substring(0, 2)); +if (this.diagonalReferenceAxis != '\0') { +code = code.substring(0, 1) + this.diagonalReferenceAxis + this.axisType + code.substring(ptr); +this.primitiveCode += this.diagonalReferenceAxis; +ptr = 3; +}this.lookupCode = code.substring(0, ptr); +this.rotation = JS.HallRotation.lookup(this.lookupCode); +if (this.rotation == null) { +JU.Logger.error("Rotation lookup could not find " + this.inputCode + " ? " + this.lookupCode); +return; +}this.translation = new JS.HallTranslation('\0', null); +this.translationString = ""; +var len = code.length; +for (var i = ptr; i < len; i++) { +var translationCode = code.charAt(i); +var t = JS.HallTranslation.getHallTranslation(translationCode, this.order); +if (t != null) { +this.translationString += "" + t.translationCode; +this.translation.rotationShift12ths += t.rotationShift12ths; +this.translation.vectorShift12ths.add(t.vectorShift12ths); +}} +this.primitiveCode = (this.isImproper ? "-" : "") + this.primitiveCode + this.translationString; +this.seitzMatrix12ths.setM4(this.isImproper ? this.rotation.seitzMatrixInv : this.rotation.seitzMatrix); +this.seitzMatrix12ths.m03 = this.translation.vectorShift12ths.x; +this.seitzMatrix12ths.m13 = this.translation.vectorShift12ths.y; +this.seitzMatrix12ths.m23 = this.translation.vectorShift12ths.z; +switch ((this.axisType).charCodeAt(0)) { +case 120: +this.seitzMatrix12ths.m03 += this.translation.rotationShift12ths; +break; +case 121: +this.seitzMatrix12ths.m13 += this.translation.rotationShift12ths; +break; +case 122: +this.seitzMatrix12ths.m23 += this.translation.rotationShift12ths; +break; +} +if (hallInfo.vectorCode.length > 0) { +var m1 = JU.M4.newM4(null); +var m2 = JU.M4.newM4(null); +var v = hallInfo.vector12ths; +m1.m03 = v.x; +m1.m13 = v.y; +m1.m23 = v.z; +m2.m03 = -v.x; +m2.m13 = -v.y; +m2.m23 = -v.z; +this.seitzMatrix12ths.mul2(m1, this.seitzMatrix12ths); +this.seitzMatrix12ths.mul(m2); +}if (JU.Logger.debugging) { +JU.Logger.debug("code = " + code + "; primitive code =" + this.primitiveCode + "\n Seitz Matrix(12ths):" + this.seitzMatrix12ths); +}}, "JS.HallInfo,~S,~N,~S"); +Clazz_defineMethod(c$, "dumpInfo", +function(vectorCode){ +var sb = new JU.SB(); +sb.append("\ninput code: ").append(this.inputCode).append("; primitive code: ").append(this.primitiveCode).append("\norder: ").appendI(this.order).append(this.isImproper ? " (improper axis)" : ""); +if (this.axisType != '_') { +sb.append("; axisType: ").appendC(this.axisType); +if (this.diagonalReferenceAxis != '\0') sb.appendC(this.diagonalReferenceAxis); +}if (this.translationString.length > 0) sb.append("; translation: ").append(this.translationString); +if (vectorCode.length > 0) sb.append("; vector offset: ").append(vectorCode); +if (this.rotation != null) sb.append("\noperator: ").append(this.getXYZ(this.allPositive)).append("\nSeitz matrix:\n").append(JS.SymmetryOperation.dumpSeitz(this.seitzMatrix12ths, false)); +return sb.toString(); +}, "~S"); +Clazz_defineMethod(c$, "getXYZ", +function(allPositive){ +return JS.SymmetryOperation.getXYZFromMatrix(this.seitzMatrix12ths, true, allPositive, true); +}, "~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.M4"], "JS.HallRotation", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.rotCode = null; +this.seitzMatrix = null; +this.seitzMatrixInv = null; +Clazz_instantialize(this, arguments);}, JS, "HallRotation", null); +Clazz_prepareFields (c$, function(){ +this.seitzMatrix = new JU.M4(); +this.seitzMatrixInv = new JU.M4(); +}); +Clazz_makeConstructor(c$, +function(code, matrixData){ +this.rotCode = code; +var data = Clazz_newFloatArray (16, 0); +var dataInv = Clazz_newFloatArray (16, 0); +data[15] = dataInv[15] = 1; +for (var i = 0, ipt = 0; ipt < 11; i++) { +var value = 0; +switch ((matrixData.charAt(i)).charCodeAt(0)) { +case 32: +ipt++; +continue; +case 43: +case 49: +value = 1; +break; +case 45: +value = -1; +break; +} +data[ipt] = value; +dataInv[ipt] = -value; +ipt++; +} +this.seitzMatrix.setA(data); +this.seitzMatrixInv.setA(dataInv); +}, "~S,~S"); +c$.lookup = Clazz_defineMethod(c$, "lookup", +function(code){ +for (var i = JS.HallRotation.getHallTerms().length; --i >= 0; ) if (JS.HallRotation.hallRotationTerms[i].rotCode.equals(code)) return JS.HallRotation.hallRotationTerms[i]; + +return null; +}, "~S"); +c$.getHallTerms = Clazz_defineMethod(c$, "getHallTerms", +function(){ +return (JS.HallRotation.hallRotationTerms == null ? JS.HallRotation.hallRotationTerms = Clazz_newArray(-1, [ new JS.HallRotation("1_", "+00 0+0 00+"), new JS.HallRotation("2x", "+00 0-0 00-"), new JS.HallRotation("2y", "-00 0+0 00-"), new JS.HallRotation("2z", "-00 0-0 00+"), new JS.HallRotation("2'", "0-0 -00 00-"), new JS.HallRotation("2\"", "0+0 +00 00-"), new JS.HallRotation("2x'", "-00 00- 0-0"), new JS.HallRotation("2x\"", "-00 00+ 0+0"), new JS.HallRotation("2y'", "00- 0-0 -00"), new JS.HallRotation("2y\"", "00+ 0-0 +00"), new JS.HallRotation("2z'", "0-0 -00 00-"), new JS.HallRotation("2z\"", "0+0 +00 00-"), new JS.HallRotation("3x", "+00 00- 0+-"), new JS.HallRotation("3y", "-0+ 0+0 -00"), new JS.HallRotation("3z", "0-0 +-0 00+"), new JS.HallRotation("3*", "00+ +00 0+0"), new JS.HallRotation("4x", "+00 00- 0+0"), new JS.HallRotation("4y", "00+ 0+0 -00"), new JS.HallRotation("4z", "0-0 +00 00+"), new JS.HallRotation("6x", "+00 0+- 0+0"), new JS.HallRotation("6y", "00+ 0+0 -0+"), new JS.HallRotation("6z", "+-0 +00 00+")]) : JS.HallRotation.hallRotationTerms); +}); +c$.hallRotationTerms = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.HallTranslation", ["JU.P3i"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.translationCode = '\0'; +this.rotationOrder = 0; +this.rotationShift12ths = 0; +this.vectorShift12ths = null; +Clazz_instantialize(this, arguments);}, JS, "HallTranslation", null); +Clazz_makeConstructor(c$, +function(translationCode, params){ +this.translationCode = translationCode; +if (params != null) { +if (params.z >= 0) { +this.vectorShift12ths = params; +return; +}this.rotationOrder = params.x; +this.rotationShift12ths = params.y; +}this.vectorShift12ths = new JU.P3i(); +}, "~S,JU.P3i"); +c$.getHallLatticeEquivalent = Clazz_defineMethod(c$, "getHallLatticeEquivalent", +function(latticeParameter){ +var latticeCode = JS.HallTranslation.getLatticeCode(latticeParameter); +var isCentrosymmetric = (latticeParameter > 0); +return (isCentrosymmetric ? "-" : "") + latticeCode + " 1"; +}, "~N"); +c$.getLatticeIndex = Clazz_defineMethod(c$, "getLatticeIndex", +function(latt){ +for (var i = 1, ipt = 3; i <= JS.HallTranslation.nLatticeTypes; i++, ipt += 3) if (JS.HallTranslation.latticeTranslationData[ipt].charAt(0) == latt) return i; + +return 0; +}, "~S"); +c$.getLatticeCode = Clazz_defineMethod(c$, "getLatticeCode", +function(latt){ +if (latt < 0) latt = -latt; +return (latt == 0 ? '\0' : latt > JS.HallTranslation.nLatticeTypes ? JS.HallTranslation.getLatticeCode(JS.HallTranslation.getLatticeIndex(String.fromCharCode(latt))) : JS.HallTranslation.latticeTranslationData[latt * 3].charAt(0)); +}, "~N"); +c$.getLatticeDesignation = Clazz_defineMethod(c$, "getLatticeDesignation", +function(latt){ +var isCentrosymmetric = (latt > 0); +var str = (isCentrosymmetric ? "-" : ""); +if (latt < 0) latt = -latt; +if (latt == 0 || latt > JS.HallTranslation.nLatticeTypes) return ""; +return str + JS.HallTranslation.getLatticeCode(latt) + ": " + (isCentrosymmetric ? "centrosymmetric " : "") + JS.HallTranslation.latticeTranslationData[latt * 3 + 1]; +}, "~N"); +c$.getLatticeDesignation2 = Clazz_defineMethod(c$, "getLatticeDesignation2", +function(latticeCode, isCentrosymmetric){ +var latt = JS.HallTranslation.getLatticeIndex(latticeCode); +if (!isCentrosymmetric) latt = -latt; +return JS.HallTranslation.getLatticeDesignation(latt); +}, "~S,~B"); +c$.getLatticeExtension = Clazz_defineMethod(c$, "getLatticeExtension", +function(latt, isCentrosymmetric){ +for (var i = 1, ipt = 3; i <= JS.HallTranslation.nLatticeTypes; i++, ipt += 3) if (JS.HallTranslation.latticeTranslationData[ipt].charAt(0) == latt) return JS.HallTranslation.latticeTranslationData[ipt + 2] + (isCentrosymmetric ? " -1" : ""); + +return ""; +}, "~S,~B"); +c$.getHallTerms = Clazz_defineMethod(c$, "getHallTerms", +function(){ +return (JS.HallTranslation.hallTranslationTerms == null ? JS.HallTranslation.hallTranslationTerms = Clazz_newArray(-1, [ new JS.HallTranslation('a', JU.P3i.new3(6, 0, 0)), new JS.HallTranslation('b', JU.P3i.new3(0, 6, 0)), new JS.HallTranslation('c', JU.P3i.new3(0, 0, 6)), new JS.HallTranslation('n', JU.P3i.new3(6, 6, 6)), new JS.HallTranslation('u', JU.P3i.new3(3, 0, 0)), new JS.HallTranslation('v', JU.P3i.new3(0, 3, 0)), new JS.HallTranslation('w', JU.P3i.new3(0, 0, 3)), new JS.HallTranslation('d', JU.P3i.new3(3, 3, 3)), new JS.HallTranslation('1', JU.P3i.new3(2, 6, -1)), new JS.HallTranslation('1', JU.P3i.new3(3, 4, -1)), new JS.HallTranslation('2', JU.P3i.new3(3, 8, -1)), new JS.HallTranslation('1', JU.P3i.new3(4, 3, -1)), new JS.HallTranslation('3', JU.P3i.new3(4, 9, -1)), new JS.HallTranslation('1', JU.P3i.new3(6, 2, -1)), new JS.HallTranslation('2', JU.P3i.new3(6, 4, -1)), new JS.HallTranslation('4', JU.P3i.new3(6, 8, -1)), new JS.HallTranslation('5', JU.P3i.new3(6, 10, -1)), new JS.HallTranslation('r', JU.P3i.new3(4, 8, 8)), new JS.HallTranslation('s', JU.P3i.new3(8, 8, 4)), new JS.HallTranslation('t', JU.P3i.new3(8, 4, 8))]) : JS.HallTranslation.hallTranslationTerms); +}); +c$.getHallTranslation = Clazz_defineMethod(c$, "getHallTranslation", +function(translationCode, order){ +var ht = null; +for (var i = JS.HallTranslation.getHallTerms().length; --i >= 0; ) { +var h = JS.HallTranslation.hallTranslationTerms[i]; +if (h.translationCode == translationCode) { +if (h.rotationOrder == 0 || h.rotationOrder == order) { +ht = new JS.HallTranslation(translationCode, null); +ht.translationCode = translationCode; +ht.rotationShift12ths = h.rotationShift12ths; +ht.vectorShift12ths = h.vectorShift12ths; +return ht; +}}} +return ht; +}, "~S,~N"); +c$.latticeTranslationData = Clazz_newArray(-1, ["\0", "unknown", "", "P", "primitive", "", "I", "body-centered", " 1n", "R", "rhombohedral", " 1r 1r", "F", "face-centered", " 1ab 1bc 1ac", "A", "A-centered", " 1bc", "B", "B-centered", " 1ac", "C", "C-centered", " 1ab", "S", "rhombohedral(S)", " 1s 1s", "T", "rhombohedral(T)", " 1t 1t"]); +c$.nLatticeTypes = Clazz_doubleToInt(JS.HallTranslation.latticeTranslationData.length / 3) - 1; +c$.hallTranslationTerms = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.M4", "$.P3"], "JS.SymmetryOperation", ["java.util.Hashtable", "JU.Lst", "$.Matrix", "$.Measure", "$.P4", "$.PT", "$.SB", "$.V3", "JS.UnitCell", "JU.BoxInfo", "$.Logger", "$.Parser"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.xyzOriginal = null; +this.xyzCanonical = null; +this.xyz = null; +this.doNormalize = true; +this.isFinalized = false; +this.opId = 0; +this.centering = null; +this.info = null; +this.opType = -1; +this.opOrder = 0; +this.opTrans = null; +this.opGlide = null; +this.opPoint = null; +this.opPoint2 = null; +this.opAxis = null; +this.opPlane = null; +this.opIsCCW = null; +this.isIrrelevant = false; +this.iCoincident = 0; +this.myLabels = null; +this.modDim = 0; +this.linearRotTrans = null; +this.rsvs = null; +this.isBio = false; +this.sigma = null; +this.number = 0; +this.subsystemCode = null; +this.timeReversal = 0; +this.unCentered = false; +this.isCenteringOp = false; +this.magOp = 2147483647; +this.divisor = 12; +this.opX = null; +this.opAxisCode = null; +this.opIsLong = false; +Clazz_instantialize(this, arguments);}, JS, "SymmetryOperation", JU.M4); +Clazz_makeConstructor(c$, +function(op, id, doNormalize){ +Clazz_superConstructor (this, JS.SymmetryOperation, []); +this.doNormalize = doNormalize; +if (op == null) { +this.opId = id; +return; +}this.xyzOriginal = op.xyzOriginal; +this.xyz = op.xyz; +this.divisor = op.divisor; +this.opId = op.opId; +this.modDim = op.modDim; +this.myLabels = op.myLabels; +this.number = op.number; +this.linearRotTrans = op.linearRotTrans; +this.sigma = op.sigma; +this.subsystemCode = op.subsystemCode; +this.timeReversal = op.timeReversal; +this.setMatrix(false); +if (!op.isFinalized) this.doFinalize(); +}, "JS.SymmetryOperation,~N,~B"); +Clazz_defineMethod(c$, "getOpName", +function(opMode){ +if (this.opType == -1) this.setOpTypeAndOrder(); +switch (this.opType) { +case 0: +return "I"; +case 1: +return "Trans" + JS.SymmetryOperation.op48(this.opTrans); +case 2: +return "Rot" + this.opOrder + JS.SymmetryOperation.op48(this.opPoint) + JS.SymmetryOperation.op48(this.opAxis) + this.opIsCCW; +case 4: +return "Inv" + JS.SymmetryOperation.op48(this.opPoint); +case 8: +return (opMode == 0 ? "" : "Plane") + this.opPlane; +case 3: +return (opMode == 0 ? "S" + JS.SymmetryOperation.op48(this.opPoint) + JS.SymmetryOperation.op48(this.opAxis) : "Screw" + this.opOrder + JS.SymmetryOperation.op48(this.opPoint) + JS.SymmetryOperation.op48(this.opAxis) + JS.SymmetryOperation.op48(this.opTrans) + this.opIsCCW); +case 6: +return "Nbar" + this.opOrder + JS.SymmetryOperation.op48(this.opPoint) + JS.SymmetryOperation.op48(this.opAxis) + this.opIsCCW; +case 9: +return (opMode == 0 ? "" : "Glide") + this.opPlane + (opMode == 2 ? JS.SymmetryOperation.op48(this.opTrans) : ""); +} +System.out.println("SymmetryOperation REJECTED TYPE FOR " + this); +return ""; +}, "~N"); +Clazz_defineMethod(c$, "getOpTitle", +function(){ +if (this.opType == -1) this.setOpTypeAndOrder(); +switch (this.opType) { +case 0: +return "identity "; +case 1: +return "translation " + JS.SymmetryOperation.opFrac(this.opTrans); +case 2: +return "rotation " + this.opOrder; +case 4: +return "inversion center " + JS.SymmetryOperation.opFrac(this.opPoint); +case 8: +return "reflection "; +case 3: +return "screw rotation " + this.opOrder + (this.opIsCCW == null ? "" : this.opIsCCW === Boolean.TRUE ? "(+) " : "(-) ") + JS.SymmetryOperation.opFrac(this.opTrans); +case 6: +return this.opOrder + "-bar " + (this.opIsCCW == null ? "" : this.opIsCCW === Boolean.TRUE ? "(+) " : "(-) ") + JS.SymmetryOperation.opFrac(this.opPoint); +case 9: +return "glide reflection " + JS.SymmetryOperation.opFrac(this.opTrans); +} +return ""; +}); +c$.opFrac = Clazz_defineMethod(c$, "opFrac", +function(p){ +return "{" + JS.SymmetryOperation.opF(p.x) + " " + JS.SymmetryOperation.opF(p.y) + " " + JS.SymmetryOperation.opF(p.z) + "}"; +}, "JU.T3"); +c$.opF = Clazz_defineMethod(c$, "opF", +function(x){ +if (x == 0) return "0"; +var neg = (x < 0); +if (neg) { +x = -x; +}var n = 0; +if (x >= 1) { +n = Clazz_floatToInt(x); +x -= n; +}var n48 = Math.round(x * 48); +if (JU.PT.approx(n48 / 48 - x, 1000) != 0) return "" + JU.PT.approx(x, 1000); +var div; +if (n48 % 48 == 0) { +div = 1; +} else if (n48 % 24 == 0) { +div = 2; +} else if (n48 % 16 == 0) { +div = 3; +} else if (n48 % 12 == 0) { +div = 4; +} else if (n48 % 8 == 0) { +div = 6; +} else if (n48 % 6 == 0) { +div = 8; +} else if (n48 % 4 == 0) { +div = 12; +} else if (n48 % 3 == 0) { +div = 16; +} else if (n48 % 2 == 0) { +div = 24; +} else { +div = 48; +}return (neg ? "-" : "") + (n * div + Clazz_doubleToInt(n48 * div / 48)) + (div == 1 ? "" : "/" + div); +}, "~N"); +c$.op48 = Clazz_defineMethod(c$, "op48", +function(p){ +if (p == null) { +System.err.println("SymmetryOperation.op48 null"); +return "(null)"; +}return "{" + Math.round(p.x * 48) + " " + Math.round(p.y * 48) + " " + Math.round(p.z * 48) + "}"; +}, "JU.T3"); +Clazz_defineMethod(c$, "setSigma", +function(subsystemCode, sigma){ +this.subsystemCode = subsystemCode; +this.sigma = sigma; +}, "~S,JU.Matrix"); +Clazz_defineMethod(c$, "setGamma", +function(isReverse){ +var n = 3 + this.modDim; +var a = (this.rsvs = new JU.Matrix(null, n + 1, n + 1)).getArray(); +var t = Clazz_newDoubleArray (n, 0); +var pt = 0; +for (var i = 0; i < n; i++) { +for (var j = 0; j < n; j++) a[i][j] = this.linearRotTrans[pt++]; + +t[i] = (isReverse ? -1 : 1) * this.linearRotTrans[pt++]; +} +a[n][n] = 1; +if (isReverse) this.rsvs = this.rsvs.inverse(); +for (var i = 0; i < n; i++) a[i][n] = t[i]; + +a = this.rsvs.getSubmatrix(0, 0, 3, 3).getArray(); +for (var i = 0; i < 3; i++) for (var j = 0; j < 4; j++) this.setElement(i, j, (j < 3 ? a[i][j] : t[i])); + + +this.setElement(3, 3, 1); +}, "~B"); +Clazz_defineMethod(c$, "doFinalize", +function(){ +JS.SymmetryOperation.div12(this, this.divisor); +if (this.modDim > 0) { +var a = this.rsvs.getArray(); +for (var i = a.length - 1; --i >= 0; ) a[i][3 + this.modDim] = JS.SymmetryOperation.finalizeD(a[i][3 + this.modDim], this.divisor); + +}this.isFinalized = true; +}); +c$.div12 = Clazz_defineMethod(c$, "div12", +function(op, divisor){ +op.m03 = JS.SymmetryOperation.finalizeF(op.m03, divisor); +op.m13 = JS.SymmetryOperation.finalizeF(op.m13, divisor); +op.m23 = JS.SymmetryOperation.finalizeF(op.m23, divisor); +return op; +}, "JU.M4,~N"); +c$.finalizeF = Clazz_defineMethod(c$, "finalizeF", +function(m, divisor){ +if (divisor == 0) { +if (m == 0) return 0; +var n = Clazz_floatToInt(m); +return ((n >> 8) * 1 / (n & 255)); +}return m / divisor; +}, "~N,~N"); +c$.finalizeD = Clazz_defineMethod(c$, "finalizeD", +function(m, divisor){ +if (divisor == 0) { +if (m == 0) return 0; +var n = Clazz_doubleToInt(m); +return ((n >> 8) * 1 / (n & 255)); +}return m / divisor; +}, "~N,~N"); +Clazz_defineMethod(c$, "getXyz", +function(normalized){ +return (normalized && this.modDim == 0 || this.xyzOriginal == null ? this.xyz : this.xyzOriginal); +}, "~B"); +Clazz_defineMethod(c$, "getxyzTrans", +function(t){ +var m = JU.M4.newM4(this); +m.add(t); +return JS.SymmetryOperation.getXYZFromMatrix(m, false, false, false); +}, "JU.T3"); +Clazz_defineMethod(c$, "dumpInfo", +function(){ +return "\n" + this.xyz + "\ninternal matrix representation:\n" + this.toString(); +}); +c$.dumpSeitz = Clazz_defineMethod(c$, "dumpSeitz", +function(s, isCanonical){ +var sb = new JU.SB(); +var r = Clazz_newFloatArray (4, 0); +for (var i = 0; i < 3; i++) { +s.getRow(i, r); +sb.append("[\t"); +for (var j = 0; j < 3; j++) sb.appendI(Clazz_floatToInt(r[j])).append("\t"); + +var trans = r[3]; +trans *= (trans == Clazz_floatToInt(trans) ? 4 : 48); +sb.append(JS.SymmetryOperation.twelfthsOf(isCanonical ? JS.SymmetryOperation.normalizeTwelfths(trans / 48, 48, true) : Clazz_floatToInt(trans))).append("\t]\n"); +} +return sb.toString(); +}, "JU.M4,~B"); +Clazz_defineMethod(c$, "setMatrixFromXYZ", +function(xyz, modDim, allowScaling){ +if (xyz == null) return false; +this.xyzOriginal = xyz; +this.divisor = JS.SymmetryOperation.setDivisor(xyz); +xyz = xyz.toLowerCase(); +this.setModDim(modDim); +var isReverse = false; +var halfOrLess = true; +if (xyz.startsWith("!")) { +if (xyz.startsWith("!nohalf!")) { +halfOrLess = false; +xyz = xyz.substring(8); +this.xyzOriginal = xyz; +} else { +isReverse = false; +xyz = xyz.substring(1); +}}if (xyz.indexOf("xyz matrix:") == 0) { +this.xyz = xyz; +JU.Parser.parseStringInfestedFloatArray(xyz, null, this.linearRotTrans); +return this.setFromMatrix(null, isReverse); +}if (xyz.indexOf("[[") == 0) { +xyz = xyz.$replace('[', ' ').$replace(']', ' ').$replace(',', ' '); +JU.Parser.parseStringInfestedFloatArray(xyz, null, this.linearRotTrans); +for (var i = this.linearRotTrans.length; --i >= 0; ) if (Float.isNaN(this.linearRotTrans[i])) return false; + +this.setMatrix(isReverse); +this.isFinalized = true; +this.isBio = (xyz.indexOf("bio") >= 0); +this.xyz = (this.isBio ? (this.xyzOriginal = Clazz_superCall(this, JS.SymmetryOperation, "toString", [])) : JS.SymmetryOperation.getXYZFromMatrix(this, false, false, false)); +return true; +}if (modDim == 0 && xyz.indexOf("x4") >= 0) { +for (var i = 14; --i >= 4; ) { +if (xyz.indexOf("x" + i) >= 0) { +this.setModDim(i - 3); +break; +}} +}var mxyz = null; +if (xyz.endsWith("m")) { +this.timeReversal = (xyz.indexOf("-m") >= 0 ? -1 : 1); +allowScaling = true; +} else if (xyz.indexOf("mz)") >= 0) { +var pt = xyz.indexOf("("); +mxyz = xyz.substring(pt + 1, xyz.length - 1); +xyz = xyz.substring(0, pt); +allowScaling = false; +}var strOut = JS.SymmetryOperation.getMatrixFromString(this, xyz, this.linearRotTrans, allowScaling, halfOrLess, true); +if (strOut == null) return false; +this.xyzCanonical = strOut; +if (mxyz != null) { +var isProper = (JU.M4.newA16(this.linearRotTrans).determinant3() == 1); +this.timeReversal = (((xyz.indexOf("-x") < 0) == (mxyz.indexOf("-mx") < 0)) == isProper ? 1 : -1); +}this.setMatrix(isReverse); +this.xyz = (isReverse ? JS.SymmetryOperation.getXYZFromMatrix(this, true, false, false) : this.doNormalize ? strOut : xyz); +if (this.timeReversal != 0) this.xyz += (this.timeReversal == 1 ? ",m" : ",-m"); +if (JU.Logger.debugging) JU.Logger.debug("" + this); +return true; +}, "~S,~N,~B"); +c$.setDivisor = Clazz_defineMethod(c$, "setDivisor", +function(xyz){ +var pt = xyz.indexOf('/'); +var len = xyz.length; +while (pt > 0 && pt < len - 1) { +var c = xyz.charAt(pt + 1); +if ("2346".indexOf(c) < 0 || pt < len - 2 && Character.isDigit(xyz.charAt(pt + 2))) { +return 0; +}pt = xyz.indexOf('/', pt + 1); +} +return 12; +}, "~S"); +Clazz_defineMethod(c$, "setModDim", +function(dim){ +var n = (dim + 4) * (dim + 4); +this.modDim = dim; +if (dim > 0) this.myLabels = JS.SymmetryOperation.labelsXn; +this.linearRotTrans = Clazz_newFloatArray (n, 0); +}, "~N"); +Clazz_defineMethod(c$, "setMatrix", +function(isReverse){ +if (this.linearRotTrans.length > 16) { +this.setGamma(isReverse); +} else { +this.setA(this.linearRotTrans); +if (isReverse) { +var p3 = JU.P3.new3(this.m03, this.m13, this.m23); +this.invert(); +this.rotate(p3); +p3.scale(-1); +this.setTranslation(p3); +}}}, "~B"); +Clazz_defineMethod(c$, "setFromMatrix", +function(offset, isReverse){ +var v = 0; +var pt = 0; +this.myLabels = (this.modDim == 0 ? JS.SymmetryOperation.labelsXYZ : JS.SymmetryOperation.labelsXn); +var rowPt = 0; +var n = 3 + this.modDim; +for (var i = 0; rowPt < n; i++) { +if (Float.isNaN(this.linearRotTrans[i])) return false; +v = this.linearRotTrans[i]; +if (Math.abs(v) < 0.00001) v = 0; +var isTrans = ((i + 1) % (n + 1) == 0); +if (isTrans) { +var denom = (this.divisor == 0 ? (Clazz_floatToInt(v)) & 255 : this.divisor); +if (denom == 0) denom = 12; +v = JS.SymmetryOperation.finalizeF(v, this.divisor); +if (offset != null) { +if (pt < offset.length) v += offset[pt++]; +}v = JS.SymmetryOperation.normalizeTwelfths(((v < 0 ? -1 : 1) * Math.abs(v * denom) / denom), denom, this.doNormalize); +if (this.divisor == 0) v = JS.SymmetryOperation.toDivisor(v, denom); +rowPt++; +}this.linearRotTrans[i] = v; +} +this.linearRotTrans[this.linearRotTrans.length - 1] = this.divisor; +this.setMatrix(isReverse); +this.isFinalized = (offset == null); +this.xyz = JS.SymmetryOperation.getXYZFromMatrix(this, true, false, false); +return true; +}, "~A,~B"); +c$.getMatrixFromXYZ = Clazz_defineMethod(c$, "getMatrixFromXYZ", +function(xyz, v, halfOrLess){ +if (v == null) v = Clazz_newFloatArray (16, 0); +xyz = JS.SymmetryOperation.getMatrixFromString(null, xyz, v, false, halfOrLess, true); +if (xyz == null) return null; +var m = new JU.M4(); +m.setA(v); +return JS.SymmetryOperation.div12(m, JS.SymmetryOperation.setDivisor(xyz)); +}, "~S,~A,~B"); +c$.getJmolCanonicalXYZ = Clazz_defineMethod(c$, "getJmolCanonicalXYZ", +function(xyz){ +try { +return JS.SymmetryOperation.getMatrixFromString(null, xyz, null, false, true, true); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~S"); +c$.getMatrixFromString = Clazz_defineMethod(c$, "getMatrixFromString", +function(op, xyz, linearRotTrans, allowScaling, halfOrLess, retString){ +var isDenominator = false; +var isDecimal = false; +var isNegative = false; +xyz = JU.PT.rep(xyz, "[bio[", ""); +var modDim = (op == null ? 0 : op.modDim); +var nRows = 4 + modDim; +var divisor = (op == null ? JS.SymmetryOperation.setDivisor(xyz) : op.divisor); +var doNormalize = halfOrLess && (op == null ? !xyz.startsWith("!") : op.doNormalize); +var dimOffset = (modDim > 0 ? 3 : 0); +if (linearRotTrans != null) { +var n = linearRotTrans.length - 1; +for (var i = n; --i >= 0; ) linearRotTrans[i] = 0; + +linearRotTrans[n] = 1; +}var transPt = xyz.indexOf(';') + 1; +if (transPt != 0) { +allowScaling = true; +if (transPt == xyz.length) xyz += "0,0,0"; +}var rotPt = -1; +var myLabels = (op == null || modDim == 0 ? null : op.myLabels); +if (myLabels == null) myLabels = JS.SymmetryOperation.labelsXYZ; +xyz = xyz.toLowerCase() + ","; +xyz = xyz.$replace('(', ','); +if (modDim > 0) xyz = JS.SymmetryOperation.replaceXn(xyz, modDim + 3); +var xpt = 0; +var tpt0 = 0; +var rowPt = 0; +var ch; +var iValue = 0; +var denom = 0; +var numer = 0; +var decimalMultiplier = 1; +var strT = ""; +var strOut = (retString ? "" : null); +var ret = Clazz_newIntArray (1, 0); +var len = xyz.length; +for (var i = 0; i < len; i++) { +switch ((ch = xyz.charAt(i)).charCodeAt(0)) { +case 59: +break; +case 39: +case 32: +case 123: +case 125: +case 33: +continue; +case 45: +isNegative = true; +continue; +case 43: +isNegative = false; +continue; +case 47: +denom = 0; +isDenominator = true; +continue; +case 120: +case 121: +case 122: +case 97: +case 98: +case 99: +case 100: +case 101: +case 102: +case 103: +case 104: +tpt0 = rowPt * nRows; +var ipt = (ch >= 'x' ? ch.charCodeAt(0) - 120 : ch.charCodeAt(0) - 97 + dimOffset); +xpt = tpt0 + ipt; +var val = (isNegative ? -1 : 1); +if (allowScaling && iValue != 0) { +if (linearRotTrans != null) linearRotTrans[xpt] = iValue; +val = Clazz_floatToInt(iValue); +iValue = 0; +} else if (linearRotTrans != null) { +linearRotTrans[xpt] = val; +}if (strOut != null) strT += JS.SymmetryOperation.plusMinus(strT, val, myLabels[ipt], false); +break; +case 44: +if (transPt != 0) { +if (transPt > 0) { +rotPt = i; +i = transPt - 1; +transPt = -i; +iValue = 0; +denom = 0; +continue; +}transPt = i + 1; +i = rotPt; +}iValue = JS.SymmetryOperation.normalizeTwelfths(iValue, denom == 0 ? 12 : divisor == 0 ? denom : divisor, doNormalize); +if (linearRotTrans != null) linearRotTrans[tpt0 + nRows - 1] = (divisor == 0 && denom > 0 ? iValue = JS.SymmetryOperation.toDivisor(numer, denom) : iValue); +if (strOut != null) { +strT += JS.SymmetryOperation.xyzFraction12(iValue, (divisor == 0 ? denom : divisor), false, halfOrLess); +strOut += (strOut === "" ? "" : ",") + strT; +}if (rowPt == nRows - 2) return (retString ? strOut : "ok"); +iValue = 0; +numer = 0; +denom = 0; +strT = ""; +tpt0 += 4; +if (rowPt++ > 2 && modDim == 0) { +JU.Logger.warn("Symmetry Operation? " + xyz); +return null; +}break; +case 46: +isDecimal = true; +decimalMultiplier = 1; +continue; +case 48: +if (!isDecimal && divisor == 12 && (isDenominator || !allowScaling)) continue; +default: +var ich = ch.charCodeAt(0) - 48; +if (ich >= 0 && ich <= 9) { +if (isDecimal) { +decimalMultiplier /= 10; +if (iValue < 0) isNegative = true; +iValue += decimalMultiplier * ich * (isNegative ? -1 : 1); +continue; +}if (isDenominator) { +ret[0] = i; +denom = JU.PT.parseIntNext(xyz, ret); +if (denom < 0) return null; +i = ret[0] - 1; +if (iValue == 0) { +if (linearRotTrans != null) linearRotTrans[xpt] /= denom; +} else { +numer = Clazz_floatToInt(iValue); +iValue /= denom; +}} else { +iValue = iValue * 10 + (isNegative ? -1 : 1) * ich; +isNegative = false; +}} else { +JU.Logger.warn("symmetry character?" + ch); +}} +isDecimal = isDenominator = isNegative = false; +} +return null; +}, "JS.SymmetryOperation,~S,~A,~B,~B,~B"); +c$.replaceXn = Clazz_defineMethod(c$, "replaceXn", +function(xyz, n){ +for (var i = n; --i >= 0; ) xyz = JU.PT.rep(xyz, JS.SymmetryOperation.labelsXn[i], JS.SymmetryOperation.labelsXnSub[i]); + +return xyz; +}, "~S,~N"); +c$.toDivisor = Clazz_defineMethod(c$, "toDivisor", +function(numer, denom){ +var n = Clazz_floatToInt(numer); +if (n != numer) { +var f = numer - n; +denom = Clazz_floatToInt(Math.abs(denom / f)); +n = Clazz_floatToInt(Math.abs(numer) / f); +}return ((n << 8) + denom); +}, "~N,~N"); +c$.xyzFraction12 = Clazz_defineMethod(c$, "xyzFraction12", +function(n12ths, denom, allPositive, halfOrLess){ +if (n12ths == 0) return ""; +var n = n12ths; +if (denom != 12) { +var $in = Clazz_floatToInt(n); +denom = ($in & 255); +n = $in >> 8; +}var half = (Clazz_doubleToInt(denom / 2)); +if (allPositive) { +while (n < 0) n += denom; + +} else if (halfOrLess) { +while (n > half) n -= denom; + +while (n < -half) n += denom; + +}var s = (denom == 12 ? JS.SymmetryOperation.twelfthsOf(n) : n == 0 ? "0" : n + "/" + denom); +return (s.charAt(0) == '0' ? "" : n > 0 ? "+" + s : s); +}, "~N,~N,~B,~B"); +c$.twelfthsOf = Clazz_defineMethod(c$, "twelfthsOf", +function(n12ths){ +var str = ""; +if (n12ths < 0) { +n12ths = -n12ths; +str = "-"; +}var m = 12; +var n = Math.round(n12ths); +if (Math.abs(n - n12ths) > 0.01) { +var f = n12ths / 12; +var max = 20; +for (m = 3; m < max; m++) { +var fm = f * m; +n = Math.round(fm); +if (Math.abs(n - fm) < 0.01) break; +} +if (m == max) return str + f; +} else { +if (n == 12) return str + "1"; +if (n < 12) return str + JS.SymmetryOperation.twelfths[n % 12]; +switch (n % 12) { +case 0: +return str + Clazz_doubleToInt(n / 12); +case 2: +case 10: +m = 6; +break; +case 3: +case 9: +m = 4; +break; +case 4: +case 8: +m = 3; +break; +case 6: +m = 2; +break; +default: +break; +} +n = (Clazz_doubleToInt(n * m / 12)); +}return str + n + "/" + m; +}, "~N"); +c$.plusMinus = Clazz_defineMethod(c$, "plusMinus", +function(strT, x, sx, allowFractions){ +var a; +return (x == 0 ? "" : (x < 0 ? "-" : strT.length == 0 ? "" : "+") + (x == 1 || x == -1 ? "" : (a = Math.abs(x)) < 1 && allowFractions ? JS.SymmetryOperation.twelfthsOf(a * 12) : "" + Clazz_floatToInt(a))) + sx; +}, "~S,~N,~S,~B"); +c$.normalizeTwelfths = Clazz_defineMethod(c$, "normalizeTwelfths", +function(iValue, divisor, doNormalize){ +iValue *= divisor; +var half = Clazz_doubleToInt(divisor / 2); +if (doNormalize) { +while (iValue > half) iValue -= divisor; + +while (iValue <= -half) iValue += divisor; + +}return iValue; +}, "~N,~N,~B"); +c$.getXYZFromMatrix = Clazz_defineMethod(c$, "getXYZFromMatrix", +function(mat, is12ths, allPositive, halfOrLess){ +return JS.SymmetryOperation.getXYZFromMatrixFrac(mat, is12ths, allPositive, halfOrLess, false); +}, "JU.M4,~B,~B,~B"); +c$.getXYZFromMatrixFrac = Clazz_defineMethod(c$, "getXYZFromMatrixFrac", +function(mat, is12ths, allPositive, halfOrLess, allowFractions){ +var str = ""; +var op = (Clazz_instanceOf(mat,"JS.SymmetryOperation") ? mat : null); +if (op != null && op.modDim > 0) return JS.SymmetryOperation.getXYZFromRsVs(op.rsvs.getRotation(), op.rsvs.getTranslation(), is12ths); +var row = Clazz_newFloatArray (4, 0); +var denom = Clazz_floatToInt(mat.getElement(3, 3)); +if (denom == 1) denom = 12; + else mat.setElement(3, 3, 1); +for (var i = 0; i < 3; i++) { +var lpt = (i < 3 ? 0 : 3); +mat.getRow(i, row); +var term = ""; +for (var j = 0; j < 3; j++) { +var x = row[j]; +if (JS.SymmetryOperation.approx(x) != 0) { +term += JS.SymmetryOperation.plusMinus(term, x, JS.SymmetryOperation.labelsXYZ[j + lpt], allowFractions); +}} +if ((is12ths ? row[3] : JS.SymmetryOperation.approx(row[3])) != 0) { +var f = JS.SymmetryOperation.xyzFraction12((is12ths ? row[3] : row[3] * denom), denom, allPositive, halfOrLess); +if (term === "") f = (f.charAt(0) == '+' ? f.substring(1) : f); +term += f; +}str += "," + (term === "" ? "0" : term); +} +return str.substring(1); +}, "JU.M4,~B,~B,~B,~B"); +Clazz_defineMethod(c$, "rotateAxes", +function(vectors, unitcell, ptTemp, mTemp){ +var vRot = new Array(3); +this.getRotationScale(mTemp); +for (var i = vectors.length; --i >= 0; ) { +ptTemp.setT(vectors[i]); +unitcell.toFractional(ptTemp, true); +mTemp.rotate(ptTemp); +unitcell.toCartesian(ptTemp, true); +vRot[i] = JU.V3.newV(ptTemp); +} +return vRot; +}, "~A,JS.UnitCell,JU.P3,JU.M3"); +c$.fcoord = Clazz_defineMethod(c$, "fcoord", +function(p, sep){ +return JS.SymmetryOperation.opF(p.x) + sep + JS.SymmetryOperation.opF(p.y) + sep + JS.SymmetryOperation.opF(p.z); +}, "JU.T3,~S"); +c$.approx = Clazz_defineMethod(c$, "approx", +function(f){ +return JU.PT.approx(f, 100); +}, "~N"); +c$.approx6 = Clazz_defineMethod(c$, "approx6", +function(f){ +return JU.PT.approx(f, 1000000); +}, "~N"); +c$.getXYZFromRsVs = Clazz_defineMethod(c$, "getXYZFromRsVs", +function(rs, vs, is12ths){ +var ra = rs.getArray(); +var va = vs.getArray(); +var d = ra.length; +var s = ""; +for (var i = 0; i < d; i++) { +s += ","; +for (var j = 0; j < d; j++) { +var r = ra[i][j]; +if (r != 0) { +s += (r < 0 ? "-" : s.endsWith(",") ? "" : "+") + (Math.abs(r) == 1 ? "" : "" + Math.abs(r)) + "x" + (j + 1); +}} +s += JS.SymmetryOperation.xyzFraction12(Clazz_doubleToInt(va[i][0] * (is12ths ? 1 : 12)), 12, false, true); +} +return JU.PT.rep(s.substring(1), ",+", ","); +}, "JU.Matrix,JU.Matrix,~B"); +Clazz_defineMethod(c$, "toString", +function(){ +return (this.rsvs == null ? Clazz_superCall(this, JS.SymmetryOperation, "toString", []) : Clazz_superCall(this, JS.SymmetryOperation, "toString", []) + " " + this.rsvs.toString()); +}); +Clazz_defineMethod(c$, "getMagneticOp", +function(){ +return (this.magOp == 2147483647 ? this.magOp = Clazz_floatToInt(this.determinant3() * this.timeReversal) : this.magOp); +}); +Clazz_defineMethod(c$, "setTimeReversal", +function(magRev){ +this.timeReversal = magRev; +if (this.xyz.indexOf("m") >= 0) this.xyz = this.xyz.substring(0, this.xyz.indexOf("m")); +if (magRev != 0) { +this.xyz += (magRev == 1 ? ",m" : ",-m"); +}}, "~N"); +Clazz_defineMethod(c$, "getCentering", +function(){ +if (!this.isFinalized) this.doFinalize(); +if (this.centering == null && !this.unCentered) { +if (this.modDim == 0 && this.m00 == 1 && this.m11 == 1 && this.m22 == 1 && this.m01 == 0 && this.m02 == 0 && this.m10 == 0 && this.m12 == 0 && this.m20 == 0 && this.m21 == 0 && (this.m03 != 0 || this.m13 != 0 || this.m23 != 0)) { +this.isCenteringOp = true; +this.centering = JU.V3.new3(this.m03, this.m13, this.m23); +} else { +this.unCentered = true; +this.centering = null; +}}return this.centering; +}); +Clazz_defineMethod(c$, "fixMagneticXYZ", +function(m, xyz, addMag){ +if (this.timeReversal == 0) return xyz; +var pt = xyz.indexOf("m"); +pt -= Clazz_doubleToInt((3 - this.timeReversal) / 2); +xyz = (pt < 0 ? xyz : xyz.substring(0, pt)); +if (!addMag) return xyz + (this.timeReversal > 0 ? " +1" : " -1"); +var m2 = JU.M4.newM4(m); +m2.m03 = m2.m13 = m2.m23 = 0; +if (this.getMagneticOp() < 0) m2.scale(-1); +xyz += "(" + JU.PT.rep(JU.PT.rep(JU.PT.rep(JS.SymmetryOperation.getXYZFromMatrix(m2, false, false, false), "x", "mx"), "y", "my"), "z", "mz") + ")"; +return xyz; +}, "JU.M4,~S,~B"); +Clazz_defineMethod(c$, "getInfo", +function(){ +if (this.info == null) { +this.info = new java.util.Hashtable(); +this.info.put("xyz", this.xyz); +if (this.centering != null) this.info.put("centering", this.centering); +this.info.put("index", Integer.$valueOf(this.number - 1)); +this.info.put("isCenteringOp", Boolean.$valueOf(this.isCenteringOp)); +if (this.linearRotTrans != null) this.info.put("linearRotTrans", this.linearRotTrans); +this.info.put("modulationDimension", Integer.$valueOf(this.modDim)); +this.info.put("matrix", JU.M4.newM4(this)); +if (this.magOp != 3.4028235E38) this.info.put("magOp", Float.$valueOf(this.magOp)); +this.info.put("id", Integer.$valueOf(this.opId)); +this.info.put("timeReversal", Integer.$valueOf(this.timeReversal)); +if (this.xyzOriginal != null) this.info.put("xyzOriginal", this.xyzOriginal); +}return this.info; +}); +c$.normalizeOperationToCentroid = Clazz_defineMethod(c$, "normalizeOperationToCentroid", +function(dim, m, fracPts, i0, n){ +if (n <= 0) return; +var x = 0; +var y = 0; +var z = 0; +if (JS.SymmetryOperation.atomTest == null) JS.SymmetryOperation.atomTest = new JU.P3(); +for (var i = i0, i2 = i + n; i < i2; i++) { +m.rotTrans2(fracPts[i], JS.SymmetryOperation.atomTest); +x += JS.SymmetryOperation.atomTest.x; +y += JS.SymmetryOperation.atomTest.y; +z += JS.SymmetryOperation.atomTest.z; +} +x /= n; +y /= n; +z /= n; +while (x < -0.001 || x >= 1.001) { +m.m03 += (x < 0 ? 1 : -1); +x += (x < 0 ? 1 : -1); +} +if (dim > 1) while (y < -0.001 || y >= 1.001) { +m.m13 += (y < 0 ? 1 : -1); +y += (y < 0 ? 1 : -1); +} +if (dim > 2) while (z < -0.001 || z >= 1.001) { +m.m23 += (z < 0 ? 1 : -1); +z += (z < 0 ? 1 : -1); +} +}, "~N,JU.M4,~A,~N,~N"); +c$.getLatticeCentering = Clazz_defineMethod(c$, "getLatticeCentering", +function(ops){ +var list = new JU.Lst(); +for (var i = 0; i < ops.length; i++) { +var c = (ops[i] == null ? null : ops[i].getCentering()); +if (c != null) list.addLast(JU.P3.newP(c)); +} +return list; +}, "~A"); +Clazz_defineMethod(c$, "getOpIsCCW", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opIsCCW; +}); +Clazz_defineMethod(c$, "getOpType", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opType; +}); +Clazz_defineMethod(c$, "getOpOrder", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opOrder; +}); +Clazz_defineMethod(c$, "getOpPoint", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opPoint; +}); +Clazz_defineMethod(c$, "getOpAxis", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return this.opAxis; +}); +Clazz_defineMethod(c$, "getOpPoint2", +function(){ +return this.opPoint2; +}); +Clazz_defineMethod(c$, "getOpTrans", +function(){ +if (this.opType == -1) { +this.setOpTypeAndOrder(); +}return (this.opTrans == null ? (this.opTrans = new JU.V3()) : this.opTrans); +}); +c$.opGet3code = Clazz_defineMethod(c$, "opGet3code", +function(m){ +var c = 0; +var row = Clazz_newFloatArray (4, 0); +for (var r = 0; r < 3; r++) { +m.getRow(r, row); +for (var i = 0; i < 3; i++) { +switch (Clazz_floatToInt(row[i])) { +case 1: +c |= (i + 1) << ((2 - r) << 3); +break; +case -1: +c |= (0x10 + i + 1) << ((2 - r) << 3); +break; +} +} +} +return c; +}, "JU.M4"); +c$.opGet3x = Clazz_defineMethod(c$, "opGet3x", +function(m){ +if (m.m22 != 0) return JS.SymmetryOperation.x; +var c = JS.SymmetryOperation.opGet3code(m); +for (var i = 0; i < 8; i++) if (c == JS.SymmetryOperation.C3codes[i]) { +if (JS.SymmetryOperation.xneg == null) { +JS.SymmetryOperation.xneg = JU.V3.newV(JS.SymmetryOperation.x); +JS.SymmetryOperation.xneg.scale(-1); +}return JS.SymmetryOperation.xneg; +} +return JS.SymmetryOperation.x; +}, "JU.M4"); +Clazz_defineMethod(c$, "setOpTypeAndOrder", +function(){ +this.clearOp(); +var det = Math.round(this.determinant3()); +var trace = Math.round(this.m00 + this.m11 + this.m22); +var order = 0; +var angle = 0; +var px = JS.SymmetryOperation.x; +switch (trace) { +case 3: +if (JS.SymmetryOperation.hasTrans(this)) { +this.opType = 1; +this.opTrans = new JU.V3(); +this.getTranslation(this.opTrans); +this.opOrder = 2; +} else { +this.opType = 0; +this.opOrder = 1; +}return; +case -3: +this.opType = 4; +order = 2; +break; +default: +order = trace * det + 3; +if (order == 5) order = 6; +if (det > 0) { +this.opType = 2; +angle = Clazz_doubleToInt(Math.acos((trace - 1) / 2) * 180 / 3.141592653589793); +if (angle == 120) { +if (this.opX == null) this.opX = JS.SymmetryOperation.opGet3x(this); +px = this.opX; +}} else { +if (order == 2) { +this.opType = 8; +} else { +this.opType = 6; +if (order == 3) order = 6; +angle = Clazz_doubleToInt(Math.acos((-trace - 1) / 2) * 180 / 3.141592653589793); +if (angle == 120) { +if (this.opX == null) this.opX = JS.SymmetryOperation.opGet3x(this); +px = this.opX; +}}}break; +} +this.opOrder = order; +var m4 = new JU.M4(); +var p1 = new JU.P3(); +var p2 = JU.P3.newP(px); +m4.setM4(this); +var p1sum = new JU.P3(); +var p2sum = JU.P3.newP(p2); +var p2odd = new JU.P3(); +var p2even = JU.P3.newP(p2); +var p21 = new JU.P3(); +for (var i = 1; i < order; i++) { +m4.mul(this); +this.rotTrans(p1); +this.rotTrans(p2); +if (i == 1) p21.setT(p2); +p1sum.add(p1); +p2sum.add(p2); +if (this.opType == 6) { +if (i % 2 == 0) { +p2even.add(p2); +} else { +p2odd.add(p2); +}}} +this.opTrans = new JU.V3(); +m4.getTranslation(this.opTrans); +this.opTrans.scale(1 / order); +var d = JS.SymmetryOperation.approx6(this.opTrans.length()); +this.opPoint = new JU.P3(); +var v = null; +var isOK = true; +switch (this.opType) { +case 4: +p2sum.add2(p2, px); +p2sum.scale(0.5); +this.opPoint = JU.P3.newP(JS.SymmetryOperation.opClean6(p2sum)); +isOK = JS.SymmetryOperation.checkOpPoint(this.opPoint); +break; +case 6: +p2odd.scale(2 / order); +p2even.scale(2 / order); +v = JU.V3.newVsub(p2odd, p2even); +v.normalize(); +this.opAxis = JS.SymmetryOperation.opClean6(v); +p1sum.add2(p2odd, p2even); +p2sum.scale(1 / order); +this.opPoint.setT(JS.SymmetryOperation.opClean6(p2sum)); +isOK = JS.SymmetryOperation.checkOpPoint(this.opPoint); +if (angle != 180) { +p2.cross(px, p2); +this.opIsCCW = Boolean.$valueOf(p2.dot(v) < 0); +}break; +case 2: +v = JU.V3.newVsub(p2sum, p1sum); +v.normalize(); +this.opAxis = JS.SymmetryOperation.opClean6(v); +p1sum.scale(1 / order); +p1.setT(p1sum); +if (d > 0) { +p1sum.sub(this.opTrans); +}this.opPoint.setT(p1sum); +JS.SymmetryOperation.opClean6(this.opPoint); +if (angle != 180) { +p2.cross(px, p2); +this.opIsCCW = Boolean.$valueOf(p2.dot(v) < 0); +}isOK = new Boolean (isOK & JS.SymmetryOperation.checkOpAxis(p1, (d == 0 ? this.opAxis : this.opTrans), p1sum, new JU.V3(), new JU.V3(), null)).valueOf(); +if (isOK) { +this.opPoint.setT(p1sum); +if (JS.SymmetryOperation.checkOpAxis(this.opPoint, this.opAxis, p2, new JU.V3(), new JU.V3(), this.opPoint)) { +this.opPoint2 = JU.P3.newP(p2); +}if (d > 0) { +p1sum.scaleAdd2(0.5, this.opTrans, this.opPoint); +isOK = JS.SymmetryOperation.checkOpPoint(p1sum); +if (this.opPoint2 != null) { +p1sum.scaleAdd2(0.5, this.opTrans, this.opPoint2); +if (!JS.SymmetryOperation.checkOpPoint(p1sum)) this.opPoint2 = null; +}if (v.dot(p1) < 0) { +isOK = false; +}}}break; +case 8: +p1.sub(this.opTrans); +p1.scale(0.5); +this.opPoint.setT(p1); +p21.sub(this.opTrans); +this.opAxis = JU.V3.newVsub(p21, px); +p2.scaleAdd2(0.5, this.opAxis, px); +this.opAxis.normalize(); +this.opPlane = new JU.P4(); +p1.set(px.x + 1.1, px.y + 1.7, px.z + 2.1); +p1.scale(0.5); +this.rotTrans(p1); +p1.sub(this.opTrans); +p1.scaleAdd2(0.5, px, p1); +p1.scale(0.5); +v = new JU.V3(); +isOK = JS.SymmetryOperation.checkOpPlane(this.opPoint, p1, p2, this.opPlane, v, new JU.V3()); +JS.SymmetryOperation.opClean6(this.opPlane); +if (JS.SymmetryOperation.approx6(this.opPlane.w) == 0) this.opPlane.w = 0; +JS.SymmetryOperation.approx6Pt(this.opAxis); +JS.SymmetryOperation.normalizePlane(this.opPlane); +break; +} +if (d > 0) { +JS.SymmetryOperation.opClean6(this.opTrans); +var dmax = 1; +if (this.opType == 8) { +if (this.opTrans.z == 0 && this.opTrans.lengthSquared() == 1.25 || this.opTrans.z == 0.5 && this.opTrans.lengthSquared() == 1.5) { +dmax = 1.25; +this.opIsLong = true; +} else { +dmax = 0.78; +}this.opGlide = JU.V3.newV(this.opTrans); +this.fixNegTrans(this.opGlide); +if (this.opGlide.length() == 0) this.opGlide = null; +if ((this.opTrans.x == 1 || this.opTrans.y == 1 || this.opTrans.z == 1) && this.m22 == -1) isOK = false; +} else { +if (this.opTrans.z == 0 && this.opTrans.lengthSquared() == 1.25) { +dmax = 1.25; +this.opIsLong = true; +}}this.opType |= 1; +if (Math.abs(JS.SymmetryOperation.approx(this.opTrans.x)) >= dmax || Math.abs(JS.SymmetryOperation.approx(this.opTrans.y)) >= dmax || Math.abs(JS.SymmetryOperation.approx(this.opTrans.z)) >= dmax) { +isOK = false; +}} else { +this.opTrans = null; +}if (!isOK) { +this.isIrrelevant = true; +}}); +Clazz_defineMethod(c$, "fixNegTrans", +function(t){ +t.x = JS.SymmetryOperation.normHalf(t.x); +t.y = JS.SymmetryOperation.normHalf(t.y); +t.z = JS.SymmetryOperation.normHalf(t.z); +}, "JU.V3"); +c$.normalizePlane = Clazz_defineMethod(c$, "normalizePlane", +function(plane){ +JS.SymmetryOperation.approx6Pt(plane); +plane.w = JS.SymmetryOperation.approx6(plane.w); +if (plane.w > 0 || plane.w == 0 && (plane.x < 0 || plane.x == 0 && plane.y < 0 || plane.y == 0 && plane.z < 0)) { +plane.scale4(-1); +}JS.SymmetryOperation.opClean6(plane); +plane.w = JS.SymmetryOperation.approx6(plane.w); +}, "JU.P4"); +c$.isCoaxial = Clazz_defineMethod(c$, "isCoaxial", +function(v){ +return (Math.abs(JS.SymmetryOperation.approx(v.x)) == 1 || Math.abs(JS.SymmetryOperation.approx(v.y)) == 1 || Math.abs(JS.SymmetryOperation.approx(v.z)) == 1); +}, "JU.T3"); +Clazz_defineMethod(c$, "clearOp", +function(){ +if (!this.isFinalized) this.doFinalize(); +this.isIrrelevant = false; +this.opTrans = null; +this.opPoint = this.opPoint2 = null; +this.opPlane = null; +this.opIsCCW = null; +this.opIsLong = false; +}); +c$.hasTrans = Clazz_defineMethod(c$, "hasTrans", +function(m4){ +return (JS.SymmetryOperation.approx6(m4.m03) != 0 || JS.SymmetryOperation.approx6(m4.m13) != 0 || JS.SymmetryOperation.approx6(m4.m23) != 0); +}, "JU.M4"); +c$.checkOpAxis = Clazz_defineMethod(c$, "checkOpAxis", +function(pt, axis, ptRet, t1, t2, ptNot){ +if (JS.SymmetryOperation.opPlanes == null) { +JS.SymmetryOperation.opPlanes = JU.BoxInfo.getBoxFacesFromOABC(null); +}var map = JU.BoxInfo.faceOrder; +var f = (ptNot == null ? 1 : -1); +for (var i = 0; i < 6; i++) { +var p = JU.Measure.getIntersection(pt, axis, JS.SymmetryOperation.opPlanes[map[i]], ptRet, t1, t2); +if (p != null && JS.SymmetryOperation.checkOpPoint(p) && axis.dot(t1) * f < 0 && (ptNot == null || JS.SymmetryOperation.approx(ptNot.distance(p) - 0.5) >= 0)) { +return true; +}} +return false; +}, "JU.P3,JU.V3,JU.P3,JU.V3,JU.V3,JU.P3"); +c$.opClean6 = Clazz_defineMethod(c$, "opClean6", +function(t){ +if (JS.SymmetryOperation.approx6(t.x) == 0) t.x = 0; +if (JS.SymmetryOperation.approx6(t.y) == 0) t.y = 0; +if (JS.SymmetryOperation.approx6(t.z) == 0) t.z = 0; +return t; +}, "JU.T3"); +c$.checkOpPoint = Clazz_defineMethod(c$, "checkOpPoint", +function(pt){ +return JS.SymmetryOperation.checkOK(pt.x, 0) && JS.SymmetryOperation.checkOK(pt.y, 0) && JS.SymmetryOperation.checkOK(pt.z, 0); +}, "JU.T3"); +c$.checkOK = Clazz_defineMethod(c$, "checkOK", +function(p, a){ +return (a != 0 || JS.SymmetryOperation.approx(p) >= 0 && JS.SymmetryOperation.approx(p) <= 1); +}, "~N,~N"); +c$.checkOpPlane = Clazz_defineMethod(c$, "checkOpPlane", +function(p1, p2, p3, plane, vtemp1, vtemp2){ +JU.Measure.getPlaneThroughPoints(p1, p2, p3, vtemp1, vtemp2, plane); +var pts = JU.BoxInfo.unitCubePoints; +var nPos = 0; +var nNeg = 0; +for (var i = 8; --i >= 0; ) { +var d = JU.Measure.getPlaneProjection(pts[i], plane, p1, vtemp1); +switch (Clazz_floatToInt(Math.signum(JS.SymmetryOperation.approx6(d)))) { +case 1: +if (nNeg > 0) return true; +nPos++; +break; +case 0: +break; +case -1: +if (nPos > 0) return true; +nNeg++; +} +} +return !(nNeg == 8 || nPos == 8); +}, "JU.P3,JU.P3,JU.P3,JU.P4,JU.V3,JU.V3"); +c$.getAdditionalOperations = Clazz_defineMethod(c$, "getAdditionalOperations", +function(ops){ +var n = ops.length; +var lst = new JU.Lst(); +var xyzLst = new JU.SB(); +var mapPlanes = new java.util.Hashtable(); +var vTemp = new JU.V3(); +for (var i = 0; i < n; i++) { +var op = ops[i]; +lst.addLast(op); +var s = op.getOpName(1); +xyzLst.append(s).appendC(';'); +if ((op.getOpType() & 8) != 0) JS.SymmetryOperation.addCoincidentMap(mapPlanes, op, 8, vTemp); + else if (op.getOpType() == 3) JS.SymmetryOperation.addCoincidentMap(mapPlanes, op, 3, null); +} +for (var i = 1; i < n; i++) { +ops[i].addOps(xyzLst, lst, mapPlanes, n, i, vTemp); +} +return lst.toArray( new Array(lst.size())); +}, "~A"); +Clazz_defineMethod(c$, "addOps", +function(xyzList, lst, mapCoincident, n0, isym, vTemp){ +var t0 = new JU.V3(); +this.getTranslation(t0); +var isPlane = ((this.getOpType() & 8) == 8); +var isScrew = (this.getOpType() == 3); +var t = new JU.V3(); +var opTemp = null; +for (var i = 3; --i >= -3; ) { +for (var j = 3; --j >= -3; ) { +for (var k = 3; --k >= -3; ) { +if (opTemp == null) opTemp = new JS.SymmetryOperation(null, 0, false); +t.set(i, j, k); +if (this.checkOpSimilar(t, vTemp)) continue; +if (opTemp.opCheckAdd(this, t0, n0, t, xyzList, lst, isym + 1)) { +if (isPlane) JS.SymmetryOperation.addCoincidentMap(mapCoincident, opTemp, 8, vTemp); + else if (isScrew) JS.SymmetryOperation.addCoincidentMap(mapCoincident, opTemp, 3, null); +opTemp = null; +}} +} +} +}, "JU.SB,JU.Lst,java.util.Map,~N,~N,JU.V3"); +c$.addCoincidentMap = Clazz_defineMethod(c$, "addCoincidentMap", +function(mapCoincident, op, opType, vTemp){ +if (op.isIrrelevant) return; +var s = op.getOpName(0); +var l = mapCoincident.get(s); +op.iCoincident = 0; +var isRotation = (opType == 3); +if (l == null) { +mapCoincident.put(s, l = new JU.Lst()); +} else if (isRotation) { +if (op.opOrder == 6) { +for (var i = l.size(); --i >= 0; ) { +var op1 = l.get(i); +if (!op1.isIrrelevant) switch (op1.opOrder) { +case 3: +op1.isIrrelevant = true; +break; +case 6: +break; +} +} +}op.iCoincident = 1; +} else { +var op0 = null; +for (var i = l.size(); --i >= 0; ) { +op0 = l.get(i); +if (op.opGlide != null && op0.opGlide != null) { +vTemp.sub2(op.opGlide, op0.opGlide); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}vTemp.add2(op.opGlide, op0.opGlide); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}vTemp.add2(op.opAxis, op0.opAxis); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}} else if (op.opGlide == null && op0.opGlide == null) { +vTemp.add2(op.opAxis, op0.opAxis); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}vTemp.sub2(op.opAxis, op0.opAxis); +if (vTemp.lengthSquared() < 1e-6) { +op.isIrrelevant = true; +return; +}}} +if (op0.iCoincident == 0) { +op.iCoincident = 1; +op0.iCoincident = -1; +} else { +op.iCoincident = -op0.iCoincident; +}}l.addLast(op); +}, "java.util.Map,JS.SymmetryOperation,~N,JU.V3"); +Clazz_defineMethod(c$, "checkOpSimilar", +function(t, vTemp){ +switch (this.getOpType() & -2) { +default: +return false; +case 0: +return true; +case 2: +return (JS.SymmetryOperation.approx6(t.dot(this.opAxis) - t.length()) == 0); +case 8: +vTemp.cross(t, this.opAxis); +return (JS.SymmetryOperation.approx6(vTemp.length()) == 0 ? false : JS.SymmetryOperation.approx6(t.dot(this.opAxis)) == 0); +} +}, "JU.V3,JU.V3"); +Clazz_defineMethod(c$, "opCheckAdd", +function(opThis, t0, n0, t, xyzList, lst, itno){ +this.setM4(opThis); +var t1 = JU.V3.newV(t); +t1.add(t0); +this.setTranslation(t1); +this.isFinalized = true; +this.setOpTypeAndOrder(); +if (this.isIrrelevant || this.opType == 0 || this.opType == 1) return false; +var s = this.getOpName(1) + ";"; +if ((this.opType & 8) == 0 && xyzList.indexOf(s) >= 0) { +return false; +}xyzList.append(s); +lst.addLast(this); +this.isFinalized = true; +this.xyz = JS.SymmetryOperation.getXYZFromMatrix(this, false, false, false); +return true; +}, "JS.SymmetryOperation,JU.V3,~N,JU.V3,JU.SB,JU.Lst,~N"); +c$.approx6Pt = Clazz_defineMethod(c$, "approx6Pt", +function(pt){ +if (pt != null) { +pt.x = JS.SymmetryOperation.approx6(pt.x); +pt.y = JS.SymmetryOperation.approx6(pt.y); +pt.z = JS.SymmetryOperation.approx6(pt.z); +}}, "JU.T3"); +c$.normalize12ths = Clazz_defineMethod(c$, "normalize12ths", +function(vtrans){ +vtrans.x = JU.PT.approx(vtrans.x, 12); +vtrans.y = JU.PT.approx(vtrans.y, 12); +vtrans.z = JU.PT.approx(vtrans.z, 12); +}, "JU.V3"); +Clazz_defineMethod(c$, "getCode", +function(){ +if (this.opAxisCode != null) { +return this.opAxisCode; +}var t = this.getOpName(2).charAt(0); +var o = this.opOrder; +var ccw = (this.opIsCCW == null ? 0 : this.opIsCCW === Boolean.TRUE ? 1 : 2); +var g = ""; +var m = ""; +switch ((t).charCodeAt(0)) { +case 71: +t = JS.SymmetryOperation.getGlideFromTrans(this.opTrans, this.opPlane); +case 80: +if (!JS.SymmetryOperation.isCoaxial(this.opAxis)) { +t = (t == 'P' ? 'p' : String.fromCharCode(t.charCodeAt(0) - 32)); +}break; +case 83: +var d = this.opTrans.length(); +if (this.opIsCCW != null && (d < (d > 1 ? 6 : 0.5)) == (this.opIsCCW === Boolean.TRUE)) t = 'w'; +break; +case 82: +if (!JS.SymmetryOperation.isCoaxial(this.opAxis)) { +t = 'o'; +}if (this.opPoint.length() == 0) t = (t == 'o' ? 'q' : 'Q'); +break; +default: +break; +} +var s = g + m + t + "." + (String.fromCharCode(48 + o)) + "." + ccw + "."; +return this.opAxisCode = s; +}); +c$.getGlideFromTrans = Clazz_defineMethod(c$, "getGlideFromTrans", +function(ftrans, ax1){ +var fx = Math.abs(JS.SymmetryOperation.approx(ftrans.x * 12)); +var fy = Math.abs(JS.SymmetryOperation.approx(ftrans.y * 12)); +var fz = Math.abs(JS.SymmetryOperation.approx(ftrans.z * 12)); +if (fx == 9) fx = 3; +if (fy == 9) fy = 3; +if (fz == 9) fz = 3; +var nonzero = 3; +if (fx == 0) nonzero--; +if (fy == 0) nonzero--; +if (fz == 0) nonzero--; +var sum = Clazz_floatToInt(fx + fy + fz); +switch (nonzero) { +default: +case 1: +return (fx != 0 ? 'a' : fy != 0 ? 'b' : 'c'); +case 2: +switch (sum) { +case 6: +return 'd'; +case 12: +var n = JU.P3.newP(ax1); +n.normalize(); +if (JS.SymmetryOperation.approx(n.x + n.y + n.z) == 1) return 'n'; +} +break; +case 3: +switch (sum) { +case 9: +return 'd'; +case 18: +return 'n'; +} +break; +} +return 'g'; +}, "JU.T3,JU.T3"); +c$.rotateAndTranslatePoint = Clazz_defineMethod(c$, "rotateAndTranslatePoint", +function(m, src, ta, tb, tc, dest){ +m.rotTrans2(src, dest); +dest.add3(ta, tb, tc); +}, "JU.M4,JU.P3,~N,~N,~N,JU.P3"); +c$.transformStr = Clazz_defineMethod(c$, "transformStr", +function(xyz, trm, trmInv, t, v, centering, targetCentering, normalize, allowFractions){ +if (trmInv == null) { +trmInv = JU.M4.newM4(trm); +trmInv.invert(); +}if (t == null) t = new JU.M4(); +if (v == null) v = Clazz_newFloatArray (16, 0); +var op = JS.SymmetryOperation.getMatrixFromXYZ(xyz, v, true); +if (centering != null) op.add(centering); +t.setM4(trmInv); +t.mul(op); +if (trm != null) t.mul(trm); +if (targetCentering != null) op.add(targetCentering); +if (normalize) { +t.getColumn(3, v); +for (var i = 0; i < 3; i++) { +v[i] = v[i] % 1; +} +t.setColumnA(3, v); +}return JS.SymmetryOperation.getXYZFromMatrixFrac(t, false, true, false, allowFractions); +}, "~S,JU.M4,JU.M4,JU.M4,~A,JU.T3,JU.T3,~B,~B"); +c$.transformXyzT = Clazz_defineMethod(c$, "transformXyzT", +function(xyz, transform){ +return (JS.SymmetryOperation.transformStr(xyz, JS.UnitCell.toTrm(transform, null), null, null, null, null, null, true, false)); +}, "~S,~S"); +c$.stringToMatrix = Clazz_defineMethod(c$, "stringToMatrix", +function(xyz){ +var divisor = JS.SymmetryOperation.setDivisor(xyz); +var a = Clazz_newFloatArray (16, 0); +JS.SymmetryOperation.getMatrixFromString(null, xyz, a, true, false, false); +return JS.SymmetryOperation.div12(JU.M4.newA16(a), divisor); +}, "~S"); +c$.getTransformABC = Clazz_defineMethod(c$, "getTransformABC", +function(transform, normalize){ +if (transform == null) return "a,b,c"; +var t = transform; +var m = JU.M4.newM4(t); +var tr = new JU.V3(); +m.getTranslation(tr); +tr.scale(-1); +m.add(tr); +m.transpose(); +var s = JS.SymmetryOperation.getXYZFromMatrixFrac(m, false, true, false, true).$replace('x', 'a').$replace('y', 'b').$replace('z', 'c'); +if (tr.lengthSquared() < 1e-12) return s; +tr.scale(-1); +return s + ";" + (normalize ? JS.SymmetryOperation.norm3(tr) : JS.SymmetryOperation.opF(tr.x) + "," + JS.SymmetryOperation.opF(tr.y) + "," + JS.SymmetryOperation.opF(tr.z)); +}, "~O,~B"); +c$.norm3 = Clazz_defineMethod(c$, "norm3", +function(tr){ +return JS.SymmetryOperation.norm(tr.x) + "," + JS.SymmetryOperation.norm(tr.y) + "," + JS.SymmetryOperation.norm(tr.z); +}, "JU.T3"); +c$.norm = Clazz_defineMethod(c$, "norm", +function(d){ +return JS.SymmetryOperation.opF(JS.SymmetryOperation.normHalf(d)); +}, "~N"); +c$.normHalf = Clazz_defineMethod(c$, "normHalf", +function(d){ +while (d <= -0.5) { +d += 1; +} +while (d > 0.5) { +d -= 1; +} +return d; +}, "~N"); +c$.toPoint = Clazz_defineMethod(c$, "toPoint", +function(xyz, p){ +if (p == null) p = new JU.P3(); +var s = JU.PT.split(xyz, ","); +p.set(JU.PT.parseFloatFraction(s[0]), JU.PT.parseFloatFraction(s[1]), JU.PT.parseFloatFraction(s[2])); +return p; +}, "~S,JU.P3"); +c$.atomTest = null; +c$.twelfths = Clazz_newArray(-1, ["0", "1/12", "1/6", "1/4", "1/3", "5/12", "1/2", "7/12", "2/3", "3/4", "5/6", "11/12"]); +c$.labelsXYZ = Clazz_newArray(-1, ["x", "y", "z"]); +c$.labelsXn = Clazz_newArray(-1, ["x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13"]); +c$.labelsXnSub = Clazz_newArray(-1, ["x", "y", "z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]); +c$.x = JU.P3.new3(3.141592653589793, 2.718281828459045, (8.539734222673566)); +c$.C3codes = Clazz_newIntArray(-1, [0x031112, 0x121301, 0x130112, 0x021311, 0x130102, 0x020311, 0x031102, 0x120301]); +c$.xneg = null; +c$.opPlanes = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(null, "JS.SymmetryInfo", ["JU.PT", "JS.SpaceGroup", "$.SymmetryOperation", "JU.SimpleUnitCell"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.isCurrentCell = true; +this.displayName = null; +this.coordinatesAreFractional = false; +this.isMultiCell = false; +this.sgName = null; +this.sgTitle = null; +this.symmetryOperations = null; +this.additionalOperations = null; +this.infoStr = null; +this.cellRange = null; +this.latticeType = 'P'; +this.intlTableNo = null; +this.intlTableJmolID = null; +this.spaceGroupIndex = 0; +this.spaceGroupF2CTitle = null; +this.spaceGroupF2C = null; +this.spaceGroupF2CParams = null; +this.strSUPERCELL = null; +this.intlTableIndex = null; +this.intlTableTransform = null; +this.sgDerived = null; +Clazz_instantialize(this, arguments);}, JS, "SymmetryInfo", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "setSymmetryInfoFromModelkit", +function(sg){ +this.cellRange = null; +this.sgName = sg.getName(); +this.intlTableJmolID = sg.jmolId; +this.intlTableNo = sg.itaNumber; +this.latticeType = sg.latticeType; +this.symmetryOperations = sg.finalOperations; +this.coordinatesAreFractional = true; +this.setInfo(sg.getOperationCount()); +}, "JS.SpaceGroup"); +Clazz_defineMethod(c$, "setSymmetryInfoFromFile", +function(modelInfo, unitCellParams){ +this.spaceGroupIndex = (modelInfo.remove("spaceGroupIndex")).intValue(); +this.cellRange = modelInfo.remove("ML_unitCellRange"); +this.sgName = modelInfo.get("spaceGroup"); +this.spaceGroupF2C = modelInfo.remove("f2c"); +this.spaceGroupF2CTitle = modelInfo.remove("f2cTitle"); +this.spaceGroupF2CParams = modelInfo.remove("f2cParams"); +this.sgTitle = modelInfo.remove("spaceGroupTitle"); +this.strSUPERCELL = modelInfo.remove("supercell"); +if (this.sgName == null || this.sgName === "") this.sgName = "spacegroup unspecified"; +this.intlTableNo = modelInfo.get("intlTableNo"); +this.intlTableIndex = modelInfo.get("intlTableIndex"); +this.intlTableTransform = modelInfo.get("intlTableTransform"); +this.intlTableJmolID = modelInfo.remove("intlTableJmolID"); +var s = modelInfo.get("latticeType"); +this.latticeType = (s == null ? 'P' : s.charAt(0)); +this.symmetryOperations = modelInfo.remove("symmetryOps"); +this.coordinatesAreFractional = modelInfo.containsKey("coordinatesAreFractional") ? (modelInfo.get("coordinatesAreFractional")).booleanValue() : false; +this.isMultiCell = (this.coordinatesAreFractional && this.symmetryOperations != null); +if (unitCellParams == null) unitCellParams = modelInfo.get("unitCellParams"); +unitCellParams = (JU.SimpleUnitCell.isValid(unitCellParams) ? unitCellParams : null); +if (unitCellParams == null) { +this.coordinatesAreFractional = false; +this.symmetryOperations = null; +this.cellRange = null; +this.infoStr = ""; +modelInfo.remove("unitCellParams"); +}var symmetryCount = modelInfo.containsKey("symmetryCount") ? (modelInfo.get("symmetryCount")).intValue() : 0; +this.setInfo(symmetryCount); +return unitCellParams; +}, "java.util.Map,~A"); +Clazz_defineMethod(c$, "setInfo", +function(symmetryCount){ +var info = "Spacegroup: " + this.sgName; +if (this.symmetryOperations != null) { +var c = ""; +var s = "\nNumber of symmetry operations: " + (symmetryCount == 0 ? 1 : symmetryCount) + "\nSymmetry Operations:"; +for (var i = 0; i < symmetryCount; i++) { +var op = this.symmetryOperations[i]; +s += "\n" + op.fixMagneticXYZ(op, op.xyz, true); +if (op.isCenteringOp) c += " (" + JU.PT.rep(JU.PT.replaceAllCharacters(op.xyz, "xyz", "0"), "0+", "") + ")"; +} +if (c.length > 0) info += "\nCentering: " + c; +info += s; +info += "\n"; +}this.infoStr = info; +}, "~N"); +Clazz_defineMethod(c$, "getAdditionalOperations", +function(){ +if (this.additionalOperations == null && this.symmetryOperations != null) { +this.additionalOperations = JS.SymmetryOperation.getAdditionalOperations(this.symmetryOperations); +}return this.additionalOperations; +}); +Clazz_defineMethod(c$, "getDerivedSpaceGroup", +function(){ +if (this.sgDerived == null) { +this.sgDerived = JS.SpaceGroup.getSpaceGroupFromIndex(this.spaceGroupIndex); +}return this.sgDerived; +}); +Clazz_defineMethod(c$, "setIsCurrentCell", +function(TF){ +return (this.isCurrentCell != TF && (this.isCurrentCell = TF) == true); +}, "~B"); +Clazz_defineMethod(c$, "getSpaceGroupTitle", +function(){ +return (this.isCurrentCell && this.spaceGroupF2CTitle != null ? this.spaceGroupF2CTitle : this.sgName.startsWith("cell=") ? this.sgName : this.sgTitle); +}); +Clazz_defineMethod(c$, "getDisplayName", +function(sym){ +if (this.displayName == null) { +var isPolymer = sym.isPolymer(); +var isSlab = sym.isSlab(); +var sgName = (isPolymer ? "polymer" : isSlab ? "slab" : this.getSpaceGroupTitle()); +if (sgName == null) return null; +if (sgName.startsWith("cell=!")) sgName = "cell=inverse[" + sgName.substring(6) + "]"; +sgName = JU.PT.rep(sgName, ";0,0,0", ""); +if (sgName.indexOf("#") < 0) { +var trm = this.intlTableTransform; +var intTab = this.intlTableIndex; +if (!isSlab && !isPolymer && intTab != null) { +if (trm != null) { +var pt = sgName.indexOf(trm); +if (pt >= 0) { +sgName = JU.PT.rep(sgName, "(" + trm + ")", ""); +}if (intTab.indexOf(trm) < 0) { +pt = intTab.indexOf("."); +if (pt > 0) intTab = intTab.substring(0, pt); +intTab += ":" + trm; +}}sgName = (sgName.startsWith("0") ? "" : sgName.equals("unspecified!") ? "#" : sgName + " #") + intTab; +}}if (sgName.indexOf("-- [--]") >= 0) sgName = ""; +this.displayName = sgName; +}return this.displayName; +}, "JS.Symmetry"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.P3", "$.V3"], "JS.SymmetryDesc", ["java.util.Hashtable", "JU.A4", "$.BS", "$.Lst", "$.M3", "$.M4", "$.Measure", "$.P4", "$.PT", "$.Quat", "$.SB", "JS.T", "JS.SpaceGroup", "$.Symmetry", "$.SymmetryOperation", "JU.Escape", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.modelSet = null; +this.drawID = null; +Clazz_instantialize(this, arguments);}, JS, "SymmetryDesc", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "set", +function(modelSet){ +this.modelSet = modelSet; +return this; +}, "JM.ModelSet"); +c$.getType = Clazz_defineMethod(c$, "getType", +function(id){ +var type; +if (id == null) return 1073742001; +if (id.equalsIgnoreCase("matrix")) return 12; +if (id.equalsIgnoreCase("description")) return 1825200146; +if (id.equalsIgnoreCase("axispoint")) return 134217751; +if (id.equalsIgnoreCase("time")) return 268441089; +if (id.equalsIgnoreCase("info")) return 1275068418; +if (id.equalsIgnoreCase("element")) return 1086326789; +if (id.equalsIgnoreCase("invariant")) return 36868; +type = JS.T.getTokFromName(id); +if (type != 0) return type; +type = JS.SymmetryDesc.getKeyType(id); +return (type < 0 ? type : 1073742327); +}, "~S"); +c$.getKeyType = Clazz_defineMethod(c$, "getKeyType", +function(id){ +if ("type".equals(id)) id = "_type"; +for (var type = 0; type < JS.SymmetryDesc.keys.length; type++) if (id.equalsIgnoreCase(JS.SymmetryDesc.keys[type])) return -1 - type; + +return 0; +}, "~S"); +c$.nullReturn = Clazz_defineMethod(c$, "nullReturn", +function(type){ +switch (type) { +case 135176: +return ";draw ID sym* delete;draw ID sg* delete;"; +case 1073741961: +case 1825200146: +case 1073741974: +case 1145047049: +case 1145047053: +case 11: +case 1073742078: +return ""; +case 1153433601: +return new JU.BS(); +default: +return null; +} +}, "~N"); +c$.getInfo = Clazz_defineMethod(c$, "getInfo", +function(io, type){ +if (io.length == 0) return ""; +if (type < 0 && -type <= JS.SymmetryDesc.keys.length && -type <= io.length) return io[-1 - type]; +switch (type) { +case 1073742327: +case 1073741982: +return io; +case 1275068418: +var lst = new java.util.Hashtable(); +for (var j = 0, n = io.length; j < n; j++) { +var key = (j == 3 ? "draw" : j == 7 ? "axispoint" : JS.SymmetryDesc.keys[j]); +if (io[j] != null) lst.put(key, io[j]); +} +return lst; +case 1073741961: +return io[0] + " \t" + io[2]; +case 1145047049: +return io[0]; +case 1145047053: +return io[19]; +case 1073742078: +return io[1]; +default: +case 1825200146: +return io[2]; +case 134217764: +if (!JU.Logger.debugging) return io[3]; +case 135176: +return io[3] + "\nprint " + JU.PT.esc(io[0] + " " + io[2]); +case 1145047050: +return io[4]; +case 1073742178: +return io[5]; +case 12289: +return io[6]; +case 134217751: +return io[7]; +case 1073741854: +return io[8]; +case 134217729: +return io[9]; +case 12: +return io[10]; +case 1814695966: +return io[11]; +case 4160: +return io[12]; +case 268441089: +return io[13]; +case 134217750: +return io[14]; +case 1140850696: +return io[15]; +case 1073741974: +return io[16]; +case 1086326789: +return Clazz_newArray(-1, [io[6], io[7], io[8], io[14], io[5]]); +case 36868: +return (io[6] != null ? io[6] : io[8] != null ? Clazz_newArray(-1, [io[7], io[8], io[5]]) : io[5] != null ? "none" : io[14] != null ? io[14] : "identity"); +} +}, "~A,~N"); +c$.getInfoBS = Clazz_defineMethod(c$, "getInfoBS", +function(type){ +var bsInfo = new JU.BS(); +if (type < 0 && -type <= JS.SymmetryDesc.keys.length) { +bsInfo.set(-1 - type); +return bsInfo; +}switch (type) { +case 0: +case 1153433601: +case 1073742001: +case 1073742327: +case 1073741982: +case 1275068418: +bsInfo.setBits(0, JS.SymmetryDesc.keys.length); +break; +case 1073741961: +bsInfo.set(0); +bsInfo.set(2); +break; +case 1145047049: +bsInfo.set(0); +break; +case 1145047053: +bsInfo.set(19); +break; +case 1073742078: +bsInfo.set(1); +break; +default: +case 1825200146: +bsInfo.set(2); +break; +case 135176: +bsInfo.set(0); +bsInfo.set(2); +bsInfo.set(3); +break; +case 1145047050: +bsInfo.set(4); +break; +case 1073742178: +bsInfo.set(5); +break; +case 12289: +bsInfo.set(6); +break; +case 134217751: +bsInfo.set(7); +break; +case 1073741854: +bsInfo.set(8); +break; +case 134217729: +bsInfo.set(9); +break; +case 12: +bsInfo.set(10); +break; +case 1814695966: +bsInfo.set(11); +break; +case 4160: +bsInfo.set(12); +break; +case 268441089: +bsInfo.set(13); +break; +case 134217750: +bsInfo.set(14); +break; +case 1140850696: +bsInfo.set(15); +break; +case 1073741974: +bsInfo.set(16); +break; +case 1086326789: +case 36868: +bsInfo.set(5); +bsInfo.set(6); +bsInfo.set(7); +bsInfo.set(8); +bsInfo.set(14); +bsInfo.set(22); +break; +} +return bsInfo; +}, "~N"); +Clazz_defineMethod(c$, "createInfoArray", +function(op, uc, ptFrom, ptTarget, id, scaleFactor, options, haveTranslation, bsInfo, isSpaceGroup, isSpaceGroupAll){ +if (!op.isFinalized) op.doFinalize(); +var matrixOnly = (bsInfo.cardinality() == 1 && bsInfo.get(10)); +var isTimeReversed = (op.timeReversal == -1); +if (scaleFactor == 0) scaleFactor = 1; +JS.SymmetryDesc.vtrans.set(0, 0, 0); +var plane = null; +var pta00 = (ptFrom == null || Float.isNaN(ptFrom.x) ? uc.getCartesianOffset() : ptFrom); +if (ptTarget != null) { +JS.SymmetryDesc.pta01.setT(pta00); +JS.SymmetryDesc.pta02.setT(ptTarget); +uc.toFractional(JS.SymmetryDesc.pta01, false); +uc.toFractional(JS.SymmetryDesc.pta02, false); +op.rotTrans(JS.SymmetryDesc.pta01); +JS.SymmetryDesc.ptemp.setT(JS.SymmetryDesc.pta01); +uc.unitize(JS.SymmetryDesc.pta01); +JS.SymmetryDesc.vtrans.setT(JS.SymmetryDesc.pta02); +uc.unitize(JS.SymmetryDesc.pta02); +if (JS.SymmetryDesc.pta01.distanceSquared(JS.SymmetryDesc.pta02) >= 1.96E-6) return null; +JS.SymmetryDesc.vtrans.sub(JS.SymmetryDesc.ptemp); +}var m2 = JU.M4.newM4(op); +m2.add(JS.SymmetryDesc.vtrans); +if (bsInfo.get(10) && ptTarget != null && pta00.equals(ptTarget)) { +m2.m00 = Math.round(m2.m00); +m2.m01 = Math.round(m2.m01); +m2.m02 = Math.round(m2.m02); +m2.m03 = Math.round(m2.m03); +m2.m10 = Math.round(m2.m10); +m2.m11 = Math.round(m2.m11); +m2.m12 = Math.round(m2.m12); +m2.m13 = Math.round(m2.m13); +m2.m20 = Math.round(m2.m20); +m2.m21 = Math.round(m2.m21); +m2.m22 = Math.round(m2.m22); +m2.m23 = Math.round(m2.m23); +}var isMagnetic = (op.timeReversal != 0); +if (matrixOnly && !isMagnetic) { +var im = JS.SymmetryDesc.getKeyType("matrix"); +var o = new Array(-im); +o[-1 - im] = m2; +return o; +}var ftrans = new JU.V3(); +JS.SymmetryDesc.pta01.set(1, 0, 0); +JS.SymmetryDesc.pta02.set(0, 1, 0); +var pta03 = JU.P3.new3(0, 0, 1); +JS.SymmetryDesc.pta01.add(pta00); +JS.SymmetryDesc.pta02.add(pta00); +pta03.add(pta00); +var pt0 = JS.SymmetryDesc.rotTransCart(op, uc, pta00, JS.SymmetryDesc.vtrans); +var pt1 = JS.SymmetryDesc.rotTransCart(op, uc, JS.SymmetryDesc.pta01, JS.SymmetryDesc.vtrans); +var pt2 = JS.SymmetryDesc.rotTransCart(op, uc, JS.SymmetryDesc.pta02, JS.SymmetryDesc.vtrans); +var pt3 = JS.SymmetryDesc.rotTransCart(op, uc, pta03, JS.SymmetryDesc.vtrans); +var vt1 = JU.V3.newVsub(pt1, pt0); +var vt2 = JU.V3.newVsub(pt2, pt0); +var vt3 = JU.V3.newVsub(pt3, pt0); +JS.SymmetryOperation.approx6Pt(JS.SymmetryDesc.vtrans); +var vtemp = new JU.V3(); +vtemp.cross(vt1, vt2); +var haveInversion = (vtemp.dot(vt3) < 0); +if (haveInversion) { +pt1.sub2(pt0, vt1); +pt2.sub2(pt0, vt2); +pt3.sub2(pt0, vt3); +}var q = JU.Quat.getQuaternionFrame(pt0, pt1, pt2).div(JU.Quat.getQuaternionFrame(pta00, JS.SymmetryDesc.pta01, JS.SymmetryDesc.pta02)); +var qF = JU.Quat.new4(q.q1, q.q2, q.q3, q.q0); +var info = JU.Measure.computeHelicalAxis(pta00, pt0, qF); +var pa1 = JU.P3.newP(info[0]); +var ax1 = JU.P3.newP(info[1]); +var ang1 = Clazz_floatToInt(Math.abs(JU.PT.approx((info[3]).x, 1))); +var pitch1 = JS.SymmetryOperation.approx((info[3]).y); +if (haveInversion) { +pt1.add2(pt0, vt1); +pt2.add2(pt0, vt2); +pt3.add2(pt0, vt3); +}var trans = JU.V3.newVsub(pt0, pta00); +if (trans.length() < 0.1) trans = null; +var ptinv = null; +var ipt = null; +var ptref = null; +var w = 0; +var margin = 0; +var isTranslation = (ang1 == 0); +var isRotation = !isTranslation; +var isInversionOnly = false; +var isMirrorPlane = false; +var isTranslationOnly = !isRotation && !haveInversion; +if (isRotation || haveInversion) { +trans = null; +}if (haveInversion && isTranslation) { +ipt = JU.P3.newP(pta00); +ipt.add(pt0); +ipt.scale(0.5); +ptinv = pt0; +isInversionOnly = true; +} else if (haveInversion) { +var d = (pitch1 == 0 ? new JU.V3() : ax1); +var f = 0; +switch (ang1) { +case 60: +f = 0.6666667; +break; +case 120: +f = 2; +break; +case 90: +f = 1; +break; +case 180: +ptref = JU.P3.newP(pta00); +ptref.add(d); +pa1.scaleAdd2(0.5, d, pta00); +if (ptref.distance(pt0) > 0.1) { +trans = JU.V3.newVsub(pt0, ptref); +ftrans.setT(trans); +uc.toFractional(ftrans, true); +} else { +trans = null; +}vtemp.setT(ax1); +vtemp.normalize(); +w = -vtemp.x * pa1.x - vtemp.y * pa1.y - vtemp.z * pa1.z; +plane = JU.P4.new4(vtemp.x, vtemp.y, vtemp.z, w); +margin = (Math.abs(w) < 0.01 && vtemp.x * vtemp.y > 0.4 ? 1.30 : 1.05); +isRotation = false; +haveInversion = false; +isMirrorPlane = true; +break; +default: +haveInversion = false; +break; +} +if (f != 0) { +vtemp.sub2(pta00, pa1); +vtemp.add(pt0); +vtemp.sub(pa1); +vtemp.sub(d); +vtemp.scale(f); +pa1.add(vtemp); +ipt = new JU.P3(); +ipt.scaleAdd2(0.5, d, pa1); +ptinv = new JU.P3(); +ptinv.scaleAdd2(-2, ipt, pt0); +ptinv.scale(-1); +}} else if (trans != null) { +JS.SymmetryDesc.ptemp.setT(trans); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +ftrans.setT(JS.SymmetryDesc.ptemp); +uc.toCartesian(JS.SymmetryDesc.ptemp, false); +trans.setT(JS.SymmetryDesc.ptemp); +}var ang = ang1; +JS.SymmetryDesc.approx0(ax1); +if (isRotation) { +var ptr = new JU.P3(); +vtemp.setT(ax1); +var ang2 = ang1; +var p0; +if (haveInversion) { +ptr.setT(ptinv); +p0 = ptinv; +} else if (pitch1 == 0) { +p0 = pt0; +ptr.setT(pa1); +} else { +p0 = pt0; +ptr.scaleAdd2(0.5, vtemp, pa1); +}JS.SymmetryDesc.ptemp.add2(pa1, vtemp); +ang2 = Math.round(JU.Measure.computeTorsion(pta00, pa1, JS.SymmetryDesc.ptemp, p0, true)); +if (JS.SymmetryOperation.approx(ang2) != 0) { +ang1 = ang2; +if (ang1 < 0) ang1 = 360 + ang1; +}}var info1 = null; +var type = null; +var glideType = String.fromCharCode(0); +var isIrrelevant = op.isIrrelevant; +var order = op.getOpOrder(); +op.isIrrelevant = new Boolean (op.isIrrelevant | isIrrelevant).valueOf(); +var isccw = op.getOpIsCCW(); +var screwDir = 0; +var nrot = 0; +if (bsInfo.get(2) || bsInfo.get(15)) { +info1 = type = "identity"; +if (isInversionOnly) { +JS.SymmetryDesc.ptemp.setT(ipt); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +info1 = "Ci: " + JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp, op.isBio); +type = "inversion center"; +} else if (isRotation) { +var screwtype = ""; +if (isccw != null) { +screwtype = (isccw === Boolean.TRUE ? "(+)" : "(-)"); +screwDir = (isccw === Boolean.TRUE ? 1 : -1); +if (haveInversion && screwDir == -1) isIrrelevant = true; +}nrot = Clazz_doubleToInt(360 / ang); +if (haveInversion) { +info1 = nrot + "-bar" + screwtype + " axis"; +} else if (pitch1 != 0) { +JS.SymmetryDesc.ptemp.setT(ax1); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +info1 = nrot + screwtype + " (" + JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp, op.isBio) + ") screw axis"; +} else { +info1 = nrot + screwtype + " axis"; +if (order % 2 == 0) screwDir *= Clazz_doubleToInt(order / 2); +}type = info1; +} else if (trans != null) { +var s = " " + JS.SymmetryDesc.strCoord(ftrans, op.isBio); +if (isTranslation) { +type = info1 = "translation"; +info1 += ":" + s; +} else if (isMirrorPlane) { +if (isSpaceGroup) { +JS.SymmetryDesc.fixGlideTrans(ftrans); +trans.setT(ftrans); +uc.toCartesian(trans, true); +}s = " " + JS.SymmetryDesc.strCoord(ftrans, op.isBio); +glideType = JS.SymmetryOperation.getGlideFromTrans(ftrans, ax1); +type = info1 = glideType + "-glide plane"; +info1 += "|translation:" + s; +}} else if (isMirrorPlane) { +type = info1 = "mirror plane"; +}if (haveInversion && !isInversionOnly) { +JS.SymmetryDesc.ptemp.setT(ipt); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +info1 += "|at " + JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp, op.isBio); +}if (isTimeReversed) { +info1 += "|time-reversed"; +type += " (time-reversed)"; +}}var isRightHand = true; +var isScrew = (isRotation && !haveInversion && pitch1 != 0); +if (!isScrew) { +screwDir = 0; +isRightHand = JS.SymmetryDesc.checkHandedness(uc, ax1); +if (!isRightHand) { +ang1 = -ang1; +if (ang1 < 0) ang1 = 360 + ang1; +ax1.scale(-1); +}}var ignore = false; +var cmds = null; +if (id != null && bsInfo.get(3)) { +if (op.getOpType() == 0 || isSpaceGroupAll && op.isIrrelevant) { +if (JU.Logger.debugging) System.out.println("!!SD irrelevent " + op.getOpTitle() + op.getOpPoint()); +cmds = ""; +} else { +var opType = null; +this.drawID = "\ndraw ID \"" + id; +var drawSB = new JU.SB(); +drawSB.append(this.getDrawID("*")).append(" delete"); +if (!isSpaceGroup) { +this.drawLine(drawSB, "frame1X", 0.15, pta00, JS.SymmetryDesc.pta01, "red"); +this.drawLine(drawSB, "frame1Y", 0.15, pta00, JS.SymmetryDesc.pta02, "green"); +this.drawLine(drawSB, "frame1Z", 0.15, pta00, pta03, "blue"); +}var color; +var planeCenter = null; +var nPC = 0; +var isSpecial = (pta00.distance(pt0) < 0.2); +var title = (isSpaceGroup ? "" + id + ": " + op.xyz + "|" + info1 + "" : null); +if (isRotation) { +color = (nrot == 2 ? "red" : nrot == 3 ? "[xA00040]" : nrot == 4 ? "[x800080]" : "[x4000A0]"); +ang = ang1; +var scale = 1; +vtemp.setT(ax1); +var wp = ""; +if (isSpaceGroup) { +pa1.setT(op.getOpPoint()); +uc.toCartesian(pa1, false); +}var ptr = new JU.P3(); +if (pitch1 != 0 && !haveInversion) { +opType = "screw"; +color = (isccw === Boolean.TRUE ? "orange" : isccw === Boolean.FALSE ? "blue" : order == 4 ? "lightgray" : "grey"); +if (!isSpaceGroup) { +this.drawLine(drawSB, "rotLine1", 0.1, pta00, pa1, "red"); +JS.SymmetryDesc.ptemp.add2(pa1, vtemp); +this.drawLine(drawSB, "rotLine2", 0.1, pt0, JS.SymmetryDesc.ptemp, "red"); +ptr.scaleAdd2(0.5, vtemp, pa1); +}} else { +ptr.setT(pa1); +if (!isRightHand) { +if (!isSpecial && !isSpaceGroup) pa1.sub2(pa1, vtemp); +}if (haveInversion) { +opType = "bar"; +if (isSpaceGroup) { +vtemp.normalize(); +if (isccw === Boolean.TRUE) { +vtemp.scale(-1); +}} else { +if (pitch1 == 0) { +ptr.setT(ipt); +vtemp.scale(3 * scaleFactor); +if (isSpecial) { +JS.SymmetryDesc.ptemp.scaleAdd2(0.25, vtemp, pa1); +pa1.scaleAdd2(-0.2, vtemp, pa1); +ptr.scaleAdd2(0.31, vtemp, ptr); +color = "cyan"; +} else { +JS.SymmetryDesc.ptemp.scaleAdd2(-1, vtemp, pa1); +this.drawLine(drawSB, "rotLine1", 0.1, pta00, ipt, "red"); +this.drawLine(drawSB, "rotLine2", 0.1, ptinv, ipt, "red"); +}} else if (!isSpecial) { +scale = pta00.distance(ptr); +this.drawLine(drawSB, "rotLine1", 0.1, pta00, ptr, "red"); +this.drawLine(drawSB, "rotLine2", 0.1, ptinv, ptr, "red"); +}}} else { +opType = "rot"; +vtemp.scale(3 * scaleFactor); +if (isSpecial) { +} else { +if (!isSpaceGroup) { +this.drawLine(drawSB, "rotLine1", 0.1, pta00, ptr, "red"); +this.drawLine(drawSB, "rotLine2", 0.1, pt0, ptr, "red"); +}}ptr.setT(pa1); +if (pitch1 == 0 && isSpecial) ptr.scaleAdd2(0.25, vtemp, ptr); +}}if (!isSpaceGroup) { +if (ang > 180) { +ang = 180 - ang; +}JS.SymmetryDesc.ptemp.add2(ptr, vtemp); +drawSB.append(this.getDrawID("rotRotArrow")).append(" arrow width 0.1 scale " + JU.PT.escF(scale) + " arc ").append(JU.Escape.eP(ptr)).append(JU.Escape.eP(JS.SymmetryDesc.ptemp)); +JS.SymmetryDesc.ptemp.setT(pta00); +if (JS.SymmetryDesc.ptemp.distance(pt0) < 0.1) JS.SymmetryDesc.ptemp.set(Math.random(), Math.random(), Math.random()); +drawSB.append(JU.Escape.eP(JS.SymmetryDesc.ptemp)); +JS.SymmetryDesc.ptemp.set(0, ang - 5 * Math.signum(ang), 0); +drawSB.append(JU.Escape.eP(JS.SymmetryDesc.ptemp)).append(" color red"); +}var d; +var opTransLength = 0; +if (!op.opIsLong && (isSpaceGroupAll && pitch1 > 0 && !haveInversion)) { +ignore = ((opTransLength = op.getOpTrans().length()) > (order == 2 ? 0.71 : order == 3 ? 0.578 : order == 4 ? 0.51 : 0.51)); +}if (ignore && JU.Logger.debugging) { +System.out.println("SD ignoring " + op.getOpTrans().length() + " " + op.getOpTitle() + op.xyz); +}var p2 = null; +if (pitch1 == 0 && !haveInversion) { +JS.SymmetryDesc.ptemp.scaleAdd2(0.5, vtemp, pa1); +pa1.scaleAdd2(isSpaceGroup ? -0.5 : -0.45, vtemp, pa1); +if (isSpaceGroupAll && (p2 = op.getOpPoint2()) != null) { +ptr.setT(p2); +uc.toCartesian(ptr, false); +ptr.scaleAdd2(-0.5, vtemp, ptr); +}if (isSpaceGroup) { +this.scaleByOrder(vtemp, order, isccw); +}} else if (isSpaceGroupAll && pitch1 != 0 && !haveInversion && (d = op.getOpTrans().length()) > 0.4) { +if (isccw === Boolean.TRUE) { +} else if (isccw == null) { +} else if (d == 0.5) { +ignore = true; +}} else if (isSpaceGroup && haveInversion) { +this.scaleByOrder(vtemp, order, isccw); +wp = "80"; +}if (pitch1 > 0 && !haveInversion) { +wp = "" + (90 - Clazz_floatToInt(vtemp.length() / pitch1 * 90)); +}if (!ignore) { +if (screwDir != 0) { +switch (order) { +case 2: +break; +case 3: +break; +case 4: +if (opTransLength > 0.49) screwDir = -2; +break; +case 6: +if (opTransLength > 0.49) screwDir = -3; + else if (opTransLength > 0.33) screwDir *= 2; +break; +} +color = (screwDir < 0 ? "blue" : "orange"); +}var name = opType + "_" + nrot + "rotvector1"; +this.drawOrderVector(drawSB, name, "vector", "0.1" + wp, pa1, nrot, screwDir, haveInversion && isSpaceGroupAll, isccw === Boolean.TRUE, vtemp, isTimeReversed ? "gray" : color, title, isSpaceGroupAll); +if (p2 != null) { +this.drawOrderVector(drawSB, name + "2", "vector", "0.1" + wp, ptr, order, screwDir, haveInversion, isccw === Boolean.TRUE, vtemp, isTimeReversed ? "gray" : color, title, isSpaceGroupAll); +}}} else if (isMirrorPlane) { +JS.SymmetryDesc.ptemp.sub2(ptref, pta00); +if (!isSpaceGroup && pta00.distance(ptref) > 0.2) this.drawVector(drawSB, "planeVector", "vector", "0.05", pta00, JS.SymmetryDesc.ptemp, isTimeReversed ? "gray" : "cyan", null); +opType = "plane"; +if (trans == null) { +color = "magenta"; +} else { +opType = "glide"; +switch ((glideType).charCodeAt(0)) { +case 97: +color = "[x4080ff]"; +break; +case 98: +color = "blue"; +break; +case 99: +color = "cyan"; +break; +case 110: +color = "orange"; +break; +case 100: +color = "grey"; +break; +case 103: +default: +color = "lightgreen"; +break; +} +if (!isSpaceGroup) { +this.drawFrameLine("X", ptref, vt1, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "red"); +this.drawFrameLine("Y", ptref, vt2, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "green"); +this.drawFrameLine("Z", ptref, vt3, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "blue"); +}}var points = uc.getCanonicalCopy(margin, true); +var v = this.modelSet.vwr.getTriangulator().intersectPlane(plane, points, 3); +if (v != null) { +var iCoincident = (isSpaceGroup ? op.iCoincident : 0); +planeCenter = new JU.P3(); +for (var i = 0, iv = 0, n = v.size(); i < n; i++) { +var pts = v.get(i); +drawSB.append(this.getDrawID((trans == null ? "mirror_" : glideType + "_g") + "planep" + i)).append(JU.Escape.eP(pts[0])).append(JU.Escape.eP(pts[1])); +if (pts.length == 3) { +if (iCoincident == 0 || (iv % 2 == 0) != (iCoincident == 1)) { +drawSB.append(JU.Escape.eP(pts[2])); +}iv++; +} else { +planeCenter.add(pts[0]); +planeCenter.add(pts[1]); +nPC += 2; +}drawSB.append(" color translucent ").append(color); +if (title != null) drawSB.append(" ").append(JU.PT.esc(title)); +} +}if (v == null || v.size() == 0) { +if (isSpaceGroupAll) { +ignore = true; +} else { +JS.SymmetryDesc.ptemp.add2(pa1, ax1); +drawSB.append(this.getDrawID("planeCircle")).append(" scale 2.0 circle ").append(JU.Escape.eP(pa1)).append(JU.Escape.eP(JS.SymmetryDesc.ptemp)).append(" color translucent ").append(color).append(" mesh fill"); +if (title != null) drawSB.append(" ").append(JU.PT.esc(title)); +}}}if (haveInversion) { +opType = "inv"; +if (isInversionOnly) { +drawSB.append(this.getDrawID("inv_point")).append(" diameter 0.4 ").append(JU.Escape.eP(ipt)); +if (title != null) drawSB.append(" ").append(JU.PT.esc(title)); +JS.SymmetryDesc.ptemp.sub2(ptinv, pta00); +if (!isSpaceGroup) { +this.drawVector(drawSB, "Arrow", "vector", "0.05", pta00, JS.SymmetryDesc.ptemp, isTimeReversed ? "gray" : "cyan", null); +}} else { +if (order == 4) { +drawSB.append(this.getDrawID("RotPoint")).append(" diameter 0.3 color red").append(JU.Escape.eP(ipt)); +if (title != null) drawSB.append(" ").append(JU.PT.esc(title)); +}if (!isSpaceGroup) { +drawSB.append(" color cyan"); +if (!isSpecial) { +JS.SymmetryDesc.ptemp.sub2(pt0, ptinv); +this.drawVector(drawSB, "Arrow", "vector", "0.05", ptinv, JS.SymmetryDesc.ptemp, isTimeReversed ? "gray" : "cyan", null); +}if (options != 1073742066) { +vtemp.setT(vt1); +vtemp.scale(-1); +this.drawFrameLine("X", ptinv, vtemp, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "red"); +vtemp.setT(vt2); +vtemp.scale(-1); +this.drawFrameLine("Y", ptinv, vtemp, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "green"); +vtemp.setT(vt3); +vtemp.scale(-1); +this.drawFrameLine("Z", ptinv, vtemp, 0.15, JS.SymmetryDesc.ptemp, drawSB, opType, "blue"); +}}}}if (trans != null) { +if (isMirrorPlane && isSpaceGroup) { +if (planeCenter != null) { +ptref = planeCenter; +ptref.scale(1 / nPC); +ptref.scaleAdd2(-0.5, trans, ptref); +}} else if (ptref == null) { +ptref = (isSpaceGroup ? pta00 : JU.P3.newP(pta00)); +}if (ptref != null && !ignore) { +var isCentered = (glideType == '\0'); +color = (isTimeReversed && !haveInversion && !isMirrorPlane && !isRotation ? "darkGray" : "gold"); +this.drawVector(drawSB, (isCentered ? "centering_" : glideType + "_g") + "trans_vector", "vector", (isTranslationOnly ? "0.1" : "0.05"), ptref, trans, color, title); +if (isSpaceGroup && !isCentered && !isTranslationOnly) { +JS.SymmetryDesc.ptemp.setT(ptref); +JS.SymmetryDesc.ptemp.add(trans); +JS.SymmetryDesc.ptemp2.setT(trans); +JS.SymmetryDesc.ptemp2.scale(-1); +this.drawVector(drawSB, glideType + "_g" + "trans_vector2", "vector", "0.05", JS.SymmetryDesc.ptemp, JS.SymmetryDesc.ptemp2, color, title); +}}}if (!isSpaceGroup) { +JS.SymmetryDesc.ptemp2.setT(pt0); +JS.SymmetryDesc.ptemp.sub2(pt1, pt0); +JS.SymmetryDesc.ptemp.scaleAdd2(0.9, JS.SymmetryDesc.ptemp, JS.SymmetryDesc.ptemp2); +this.drawLine(drawSB, "frame2X", 0.2, JS.SymmetryDesc.ptemp2, JS.SymmetryDesc.ptemp, "red"); +JS.SymmetryDesc.ptemp.sub2(pt2, pt0); +JS.SymmetryDesc.ptemp.scaleAdd2(0.9, JS.SymmetryDesc.ptemp, JS.SymmetryDesc.ptemp2); +this.drawLine(drawSB, "frame2Y", 0.2, JS.SymmetryDesc.ptemp2, JS.SymmetryDesc.ptemp, "green"); +JS.SymmetryDesc.ptemp.sub2(pt3, pt0); +JS.SymmetryDesc.ptemp.scaleAdd2(0.9, JS.SymmetryDesc.ptemp, JS.SymmetryDesc.ptemp2); +this.drawLine(drawSB, "frame2Z", 0.2, JS.SymmetryDesc.ptemp2, JS.SymmetryDesc.ptemp, "purple"); +drawSB.append("\nsym_point = " + JU.Escape.eP(pta00)); +drawSB.append("\nvar p0 = " + JU.Escape.eP(JS.SymmetryDesc.ptemp2)); +if (Clazz_instanceOf(pta00,"JM.Atom")) { +drawSB.append("\nvar set2 = within(0.2,p0);if(!set2){set2 = within(0.2,p0.uxyz.xyz)}"); +drawSB.append("\n set2 &= {_" + (pta00).getElementSymbol() + "}"); +} else { +drawSB.append("\nvar set2 = p0.uxyz"); +}drawSB.append("\nsym_target = set2;if (set2) {"); +if (!isSpecial && options != 1073742066 && ptTarget == null && !haveTranslation) { +drawSB.append(this.getDrawID("offsetFrameX")).append(" diameter 0.20 @{set2.xyz} @{set2.xyz + ").append(JU.Escape.eP(vt1)).append("*0.9} color red"); +drawSB.append(this.getDrawID("offsetFrameY")).append(" diameter 0.20 @{set2.xyz} @{set2.xyz + ").append(JU.Escape.eP(vt2)).append("*0.9} color green"); +drawSB.append(this.getDrawID("offsetFrameZ")).append(" diameter 0.20 @{set2.xyz} @{set2.xyz + ").append(JU.Escape.eP(vt3)).append("*0.9} color purple"); +}drawSB.append("\n}\n"); +}cmds = drawSB.toString(); +if (JU.Logger.debugging) JU.Logger.info(cmds); +drawSB = null; +}}if (trans == null) ftrans = null; +if (isScrew) { +trans = JU.V3.newV(ax1); +JS.SymmetryDesc.ptemp.setT(trans); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +ftrans = JU.V3.newV(JS.SymmetryDesc.ptemp); +}if (isMirrorPlane) { +ang1 = 0; +}if (haveInversion) { +if (isInversionOnly) { +pa1 = null; +ax1 = null; +trans = null; +ftrans = null; +}} else if (isTranslation) { +pa1 = null; +ax1 = null; +}if (ax1 != null) ax1.normalize(); +var xyzNew = null; +if (bsInfo.get(0) || bsInfo.get(17)) { +xyzNew = (op.isBio ? m2.toString() : op.modDim > 0 ? op.xyzOriginal : JS.SymmetryOperation.getXYZFromMatrix(m2, false, false, false)); +if (isMagnetic) xyzNew = op.fixMagneticXYZ(m2, xyzNew, true); +}var ret = new Array(20); +for (var i = bsInfo.nextSetBit(0); i >= 0; i = bsInfo.nextSetBit(i + 1)) { +switch (i) { +case 0: +ret[i] = xyzNew; +break; +case 19: +if (ptFrom != null && ptTarget == null && !op.isBio && op.modDim == 0) { +var xyzN; +JS.SymmetryDesc.pta02.setT(ptFrom); +uc.toFractional(JS.SymmetryDesc.pta02, true); +m2.rotTrans(JS.SymmetryDesc.pta02); +JS.SymmetryDesc.ptemp.setT(JS.SymmetryDesc.pta02); +uc.unitize(JS.SymmetryDesc.pta02); +JS.SymmetryDesc.vtrans.sub2(JS.SymmetryDesc.pta02, JS.SymmetryDesc.ptemp); +m2 = JU.M4.newM4(op); +m2.add(JS.SymmetryDesc.vtrans); +xyzN = JS.SymmetryOperation.getXYZFromMatrix(m2, false, false, false); +if (isMagnetic) xyzN = op.fixMagneticXYZ(m2, xyzN, true); +ret[i] = xyzN; +}break; +case 1: +ret[i] = op.xyzOriginal; +break; +case 2: +ret[i] = info1; +break; +case 3: +ret[i] = cmds; +break; +case 4: +ret[i] = JS.SymmetryDesc.approx0(ftrans); +break; +case 5: +ret[i] = JS.SymmetryDesc.approx0(trans); +break; +case 6: +ret[i] = JS.SymmetryDesc.approx0(ipt); +break; +case 7: +ret[i] = JS.SymmetryDesc.approx0(pa1 != null && bsInfo.get(22) ? pta00 : pa1); +break; +case 8: +ret[i] = (plane == null ? JS.SymmetryDesc.approx0(ax1) : null); +break; +case 9: +ret[i] = (ang1 != 0 ? Integer.$valueOf(ang1) : null); +break; +case 10: +ret[i] = m2; +break; +case 11: +ret[i] = (JS.SymmetryDesc.vtrans.lengthSquared() > 0 ? JS.SymmetryDesc.vtrans : null); +break; +case 12: +ret[i] = op.getCentering(); +break; +case 13: +ret[i] = Integer.$valueOf(op.timeReversal); +break; +case 14: +if (plane != null && bsInfo.get(22)) { +var d = JU.Measure.distanceToPlane(plane, pta00); +plane.w -= d; +}ret[i] = plane; +break; +case 15: +ret[i] = type; +break; +case 16: +ret[i] = Integer.$valueOf(op.number); +break; +case 17: +var cift = null; +if (!op.isBio && !xyzNew.equals(op.xyzOriginal)) { +if (op.number > 0) { +var orig = JS.SymmetryOperation.getMatrixFromXYZ(op.xyzOriginal, null, false); +orig.sub(m2); +cift = new JU.P3(); +orig.getTranslation(cift); +}}var cifi = (op.number < 0 ? 0 : op.number); +ret[i] = cifi + (cift == null ? " [0 0 0]" : " [" + Clazz_floatToInt(-cift.x) + " " + Clazz_floatToInt(-cift.y) + " " + Clazz_floatToInt(-cift.z) + "]"); +break; +case 18: +ret[i] = op.xyzCanonical; +break; +} +} +return ret; +}, "JS.SymmetryOperation,J.api.SymmetryInterface,JU.P3,JU.P3,~S,~N,~N,~B,JU.BS,~B,~B"); +c$.fixGlideTrans = Clazz_defineMethod(c$, "fixGlideTrans", +function(ftrans){ +ftrans.x = JS.SymmetryDesc.fixGlideX(ftrans.x); +ftrans.y = JS.SymmetryDesc.fixGlideX(ftrans.y); +ftrans.z = JS.SymmetryDesc.fixGlideX(ftrans.z); +}, "JU.V3"); +c$.fixGlideX = Clazz_defineMethod(c$, "fixGlideX", +function(x){ +var n48 = Math.round(x * 48.001); +switch (n48) { +case 36: +return -0.25; +case -36: +return 0.25; +default: +return x; +} +}, "~N"); +Clazz_defineMethod(c$, "scaleByOrder", +function(v, order, isccw){ +v.scale(1 + (0.3 / order) + (isccw == null ? 0 : isccw === Boolean.TRUE ? 0.02 : -0.02)); +}, "JU.V3,~N,Boolean"); +c$.checkHandedness = Clazz_defineMethod(c$, "checkHandedness", +function(uc, ax1){ +var a; +var b; +var c; +JS.SymmetryDesc.ptemp.set(1, 0, 0); +uc.toCartesian(JS.SymmetryDesc.ptemp, false); +a = JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(ax1)); +JS.SymmetryDesc.ptemp.set(0, 1, 0); +uc.toCartesian(JS.SymmetryDesc.ptemp, false); +b = JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(ax1)); +JS.SymmetryDesc.ptemp.set(0, 0, 1); +uc.toCartesian(JS.SymmetryDesc.ptemp, false); +c = JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(ax1)); +return (a == 0 ? (b == 0 ? c > 0 : b > 0) : c == 0 ? a > 0 : (b == 0 ? c > 0 : a * b * c > 0)); +}, "J.api.SymmetryInterface,JU.P3"); +Clazz_defineMethod(c$, "drawLine", +function(s, id, diameter, pt0, pt1, color){ +s.append(this.getDrawID(id)).append(" diameter ").appendD(diameter).append(JU.Escape.eP(pt0)).append(JU.Escape.eP(pt1)).append(" color ").append(color); +}, "JU.SB,~S,~N,JU.P3,JU.P3,~S"); +Clazz_defineMethod(c$, "drawFrameLine", +function(xyz, pt, v, width, ptemp, sb, key, color){ +ptemp.setT(pt); +ptemp.add(v); +this.drawLine(sb, key + "Pt" + xyz, width, pt, ptemp, "translucent " + color); +}, "~S,JU.P3,JU.V3,~N,JU.P3,JU.SB,~S,~S"); +Clazz_defineMethod(c$, "drawVector", +function(sb, label, type, d, pt1, v, color, title){ +if (type.equals("vline")) { +JS.SymmetryDesc.ptemp2.add2(pt1, v); +type = ""; +v = JS.SymmetryDesc.ptemp2; +}d += " "; +sb.append(this.getDrawID(label)).append(" diameter ").append(d).append(type).append(JU.Escape.eP(pt1)).append(JU.Escape.eP(v)).append(" color ").append(color); +if (title != null) sb.append(" \"" + title + "\""); +}, "JU.SB,~S,~S,~S,JU.T3,JU.T3,~S,~S"); +Clazz_defineMethod(c$, "drawOrderVector", +function(sb, label, type, d, pt, order, screwDir, haveInversion, isCCW, vtemp, color, title, isSpaceGroupAll){ +this.drawVector(sb, label, type, d, pt, vtemp, color, title); +if (order == 2 || haveInversion && !isCCW) return; +var poly = JS.SymmetryDesc.getPolygon(order, !haveInversion ? 0 : isCCW ? 1 : -1, haveInversion, pt, vtemp); +var l = poly[0]; +sb.append(this.getDrawID(label + "_key")).append(" POLYGON ").appendI(l.size()); +for (var i = 0, n = l.size(); i < n; i++) sb.appendO(l.get(i)); + +sb.append(" color ").append(color); +if (screwDir != 0 && isSpaceGroupAll) { +poly = JS.SymmetryDesc.getPolygon(order, screwDir, haveInversion, pt, vtemp); +sb.append(this.getDrawID(label + "_key2")); +l = poly[0]; +sb.append(" POLYGON ").appendI(l.size()); +for (var i = 0, n = l.size(); i < n; i++) sb.appendO(l.get(i)); + +l = poly[1]; +sb.appendI(l.size()); +for (var i = 0, n = l.size(); i < n; i++) sb.appendO(JU.PT.toJSON(null, l.get(i))); + +sb.append(" color ").append(color); +}}, "JU.SB,~S,~S,~S,JU.P3,~N,~N,~B,~B,JU.V3,~S,~S,~B"); +c$.getPolygon = Clazz_defineMethod(c$, "getPolygon", +function(order, screwDir, haveInversion, pt0, v){ +var scale = (haveInversion ? 0.6 : 0.4); +var pts = new JU.Lst(); +var faces = new JU.Lst(); +var offset = JU.V3.newV(v); +offset.scale(0); +offset.add(pt0); +var vZ = JU.V3.new3(0, 0, 1); +var vperp = new JU.V3(); +var m = new JU.M3(); +vperp.cross(vZ, v); +if (vperp.length() < 0.01) { +m.m00 = m.m11 = m.m22 = 1; +} else { +vperp.normalize(); +var a = vZ.angle(v); +m.setAA(JU.A4.newVA(vperp, a)); +}var rad = (6.283185307179586 / order * (screwDir < 0 ? -1 : 1)); +var vt = new JU.V3(); +var ptLast = null; +for (var plast = 0, p = 0, i = 0, n = (screwDir == 0 ? order : order + 1); i < n; i++) { +var pt = new JU.P3(); +pt.x = Math.cos(rad * i) * scale; +pt.y = Math.sin(rad * i) * scale; +m.rotate(pt); +pt.add(offset); +if (i < order) { +pts.addLast(pt); +}if (!haveInversion && screwDir != 0 && (i % screwDir == 0) && ptLast != null) { +vt.sub2(pt, ptLast); +var p2 = (i < order ? p++ : 0); +var pt1 = JU.P3.newP(pt); +pt1.scaleAdd2(1, pt, pt1); +pt1.scaleAdd2(-1, offset, pt1); +pts.addLast(pt1); +faces.addLast( Clazz_newIntArray(-1, [plast, p++, p2, 0])); +plast = p2; +} else { +plast = p++; +}ptLast = pt; +} +return Clazz_newArray(-1, [pts, faces]); +}, "~N,~N,~B,JU.P3,JU.V3"); +c$.rotTransCart = Clazz_defineMethod(c$, "rotTransCart", +function(op, uc, pt00, vtrans){ +var p0 = JU.P3.newP(pt00); +uc.toFractional(p0, false); +op.rotTrans(p0); +p0.add(vtrans); +uc.toCartesian(p0, false); +return p0; +}, "JS.SymmetryOperation,J.api.SymmetryInterface,JU.P3,JU.V3"); +c$.strCoord = Clazz_defineMethod(c$, "strCoord", +function(p, isBio){ +JS.SymmetryDesc.approx0(p); +return (isBio ? "(" + p.x + " " + p.y + " " + p.z + ")" : JS.SymmetryOperation.fcoord(p, " ")); +}, "JU.T3,~B"); +c$.approx0 = Clazz_defineMethod(c$, "approx0", +function(pt){ +if (pt != null) { +pt.x = JS.SymmetryDesc.approx0d(pt.x); +pt.y = JS.SymmetryDesc.approx0d(pt.y); +pt.z = JS.SymmetryDesc.approx0d(pt.z); +}return pt; +}, "JU.T3"); +c$.approx0d = Clazz_defineMethod(c$, "approx0d", +function(x){ +return (Math.abs(x) < 0.0001 ? 0 : x); +}, "~N"); +Clazz_defineMethod(c$, "getSymmetryInfo", +function(iModel, iatom, uc, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, isSpaceGroup){ +var returnType = 0; +var nullRet = JS.SymmetryDesc.nullReturn(type); +switch (type) { +case 1073741994: +return "" + uc.getLatticeType(); +case 1073742001: +returnType = 1825200146; +break; +case 135176: +returnType = 135176; +break; +case 1275068418: +returnType = JS.SymmetryDesc.getType(id); +switch (returnType) { +case 1153433601: +case 1073741961: +case 1073742001: +case 134217751: +case 1086326789: +case 36868: +type = returnType; +break; +default: +returnType = JS.SymmetryDesc.getKeyType(id); +break; +} +break; +} +var bsInfo = JS.SymmetryDesc.getInfoBS(returnType); +var isSpaceGroupAll = (nth == -2); +var iop = op; +var offset = (options == 1073742066 && (type == 1153433601 || type == 134217751) ? pt2 : null); +if (offset != null) pt2 = null; +var info = null; +var xyzOriginal = null; +var ops = null; +if (pt2 == null) { +if (xyz == null) { +ops = (isSpaceGroupAll ? uc.getAdditionalOperations() : uc.getSymmetryOperations()); +if (ops == null || Math.abs(op) > ops.length) return nullRet; +if (op == 0) return nullRet; +iop = Math.abs(op) - 1; +xyz = (translation == null ? ops[iop].xyz : ops[iop].getxyzTrans(translation)); +xyzOriginal = ops[iop].xyzOriginal; +} else { +iop = op = 0; +}var symTemp = new JS.Symmetry(); +symTemp.setSpaceGroup(false); +var isBio = (uc != null && uc.isBio()); +var i = (isBio ? symTemp.addBioMoleculeOperation((uc.getSpaceGroup()).finalOperations[iop], op < 0) : symTemp.addSpaceGroupOperation((op < 0 ? "!" : "=") + xyz, Math.abs(op))); +if (i < 0) return nullRet; +var opTemp = symTemp.getSpaceGroupOperation(i); +if (isSpaceGroup) { +opTemp.iCoincident = ops[iop].iCoincident; +}if (isSpaceGroupAll) { +opTemp.isIrrelevant = ops[iop].isIrrelevant; +}if (xyzOriginal != null) opTemp.xyzOriginal = xyzOriginal; +opTemp.number = op; +if (!isBio) opTemp.getCentering(); +if (pt == null && iatom >= 0) pt = this.modelSet.at[iatom]; +if (type == 134217751 || type == 1153433601) { +if (isBio || pt == null) return nullRet; +symTemp.setUnitCell(uc); +JS.SymmetryDesc.ptemp.setT(pt); +uc.toFractional(JS.SymmetryDesc.ptemp, false); +if (Float.isNaN(JS.SymmetryDesc.ptemp.x)) return nullRet; +var sympt = new JU.P3(); +symTemp.newSpaceGroupPoint(JS.SymmetryDesc.ptemp, i, null, 0, 0, 0, sympt); +if (options == 1073742066) { +uc.unitize(sympt); +sympt.add(offset); +}symTemp.toCartesian(sympt, false); +var ret = sympt; +return (type == 1153433601 ? this.getAtom(uc, iModel, iatom, ret) : ret); +}info = this.createInfoArray(opTemp, uc, pt, null, (id == null ? "sym" : id), scaleFactor, options, (translation != null), bsInfo, isSpaceGroup, isSpaceGroupAll); +if (type == 1275068418 && id != null) { +returnType = JS.SymmetryDesc.getKeyType(id); +}} else { +var stype = "info"; +var asString = false; +switch (type) { +case 1275068418: +returnType = JS.SymmetryDesc.getKeyType(id); +id = stype = null; +if (nth == 0) nth = -1; +break; +case 1073742001: +id = stype = null; +if (nth == 0) nth = -1; +asString = true; +bsInfo.set(21); +bsInfo.set(0); +bsInfo.set(19); +break; +case 135176: +if (id == null) id = (isSpaceGroup ? "sg" : "sym"); +stype = "all"; +asString = true; +break; +case 1153433601: +id = stype = null; +default: +if (nth == 0) nth = 1; +} +var ret1 = this.getSymopInfoForPoints(uc, iModel, op, translation, pt, pt2, id, stype, scaleFactor, nth, options, bsInfo); +if (asString) { +return ret1; +}if ((typeof(ret1)=='string')) return nullRet; +info = ret1; +if (type == 1153433601) { +if (!(Clazz_instanceOf(pt,"JM.Atom")) && !(Clazz_instanceOf(pt2,"JM.Atom"))) iatom = -1; +return (info == null ? nullRet : this.getAtom(uc, iModel, iatom, info[7])); +}}if (info == null) return nullRet; +var isList = (info.length > 0 && Clazz_instanceOf(info[0],Array)); +if (nth < 0 && op <= 0 && xyz == null && (type == 1275068418 || isList)) { +if (type == 1275068418 && info.length > 0 && !(Clazz_instanceOf(info[0],Array))) info = Clazz_newArray(-1, [info]); +var lst = new JU.Lst(); +for (var i = 0; i < info.length; i++) lst.addLast(JS.SymmetryDesc.getInfo(info[i], returnType < 0 ? returnType : type)); + +return lst; +} else if (returnType < 0 && (nth >= 0 || op > 0 || xyz != null)) { +type = returnType; +}if (nth > 0 && isList) info = info[0]; +if (type == 135176 && isSpaceGroup && nth == -2) type = 134217764; +return JS.SymmetryDesc.getInfo(info, type); +}, "~N,~N,J.api.SymmetryInterface,~S,~N,JU.P3,JU.P3,JU.P3,~S,~N,~N,~N,~N,~B"); +Clazz_defineMethod(c$, "getAtom", +function(uc, iModel, iAtom, sympt){ +var bsElement = null; +if (iAtom >= 0) this.modelSet.getAtomBitsMDa(1094715402, Integer.$valueOf(this.modelSet.at[iAtom].getElementNumber()), bsElement = new JU.BS()); +var bsResult = new JU.BS(); +this.modelSet.getAtomsWithin(0.02, sympt, bsResult, iModel); +if (bsElement != null) bsResult.and(bsElement); +if (bsResult.isEmpty()) { +sympt = JU.P3.newP(sympt); +uc.toUnitCell(sympt, null); +uc.toCartesian(sympt, false); +this.modelSet.getAtomsWithin(0.02, sympt, bsResult, iModel); +if (bsElement != null) bsResult.and(bsElement); +}return bsResult; +}, "J.api.SymmetryInterface,~N,~N,JU.T3"); +Clazz_defineMethod(c$, "getSymopInfoForPoints", +function(sym, modelIndex, symOp, translation, pt1, pt2, drawID, stype, scaleFactor, nth, options, bsInfo){ +var asString = (bsInfo.get(21) || bsInfo.get(3) && bsInfo.cardinality() == 3); +bsInfo.clear(21); +var ret = (asString ? "" : null); +var sginfo = this.getSpaceGroupInfo(sym, modelIndex, null, symOp, pt1, pt2, drawID, scaleFactor, nth, false, true, options, null, bsInfo); +if (sginfo == null) return ret; +var infolist = sginfo.get("operations"); +if (infolist == null) return ret; +var sb = (asString ? new JU.SB() : null); +symOp--; +var isAll = (!asString && symOp < 0); +var strOperations = sginfo.get("symmetryInfo"); +var labelOnly = "label".equals(stype); +var n = 0; +for (var i = 0; i < infolist.length; i++) { +if (infolist[i] == null || symOp >= 0 && symOp != i) continue; +if (!asString) { +if (!isAll) return infolist[i]; +infolist[n++] = infolist[i]; +continue; +}if (drawID != null) return (infolist[i][3]) + "\nprint " + JU.PT.esc(strOperations); +if (sb.length() > 0) sb.appendC('\n'); +if (!labelOnly) { +if (symOp < 0) sb.appendI(i + 1).appendC('\t'); +sb.append(infolist[i][0]).appendC('\t'); +}sb.append(infolist[i][2]); +} +if (!asString) { +var a = new Array(n); +for (var i = 0; i < n; i++) a[i] = infolist[i]; + +return a; +}if (sb.length() == 0) return (drawID != null ? "draw ID \"" + drawID + "*\" delete" : ret); +return sb.toString(); +}, "J.api.SymmetryInterface,~N,~N,JU.P3,JU.P3,JU.P3,~S,~S,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "getDrawID", +function(id){ +return this.drawID + id + "\" "; +}, "~S"); +Clazz_defineMethod(c$, "getSymopInfo", +function(iAtom, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, opList){ +if (type == 0) type = JS.SymmetryDesc.getType(id); +var ret = (type == 1153433601 ? new JU.BS() : ""); +var iModel = (iAtom >= 0 ? this.modelSet.at[iAtom].mi : this.modelSet.vwr.am.cmi); +if (iModel < 0) return ret; +var uc = this.modelSet.am[iModel].biosymmetry; +if (uc == null && (uc = this.modelSet.getUnitCell(iModel)) == null) { +uc = new JS.Symmetry().setUnitCellFromParams(null, false, NaN); +}if (type != 135176 || op != 2147483647 && opList == null) { +return this.getSymmetryInfo(iModel, iAtom, uc, xyz, op, translation, pt, pt2, id, type, scaleFactor, nth, options, false); +}if (uc == null) return ret; +var isSpaceGroup = (xyz == null && nth < 0 && opList == null); +var s = ""; +var ops = (isSpaceGroup && nth == -2 ? uc.getAdditionalOperations() : uc.getSymmetryOperations()); +if (ops != null) { +if (id == null) id = "sg"; +var n = ops.length; +if (pt != null && pt2 == null || opList != null) { +if (opList == null) opList = uc.getInvariantSymops(pt, null); +n = opList.length; +for (var i = 0; i < n; i++) { +if (nth > 0 && nth != i + 1) continue; +op = opList[i]; +s += this.getSymmetryInfo(iModel, iAtom, uc, xyz, op, translation, pt, pt2, id + op, 135176, scaleFactor, nth, options, pt == null); +} +} else { +for (op = 1; op <= n; op++) s += this.getSymmetryInfo(iModel, iAtom, uc, xyz, op, translation, pt, pt2, id + op, 135176, scaleFactor, nth, options, true); + +}}return s; +}, "~N,~S,~N,JU.P3,JU.P3,JU.P3,~S,~N,~N,~N,~N,~A"); +Clazz_defineMethod(c$, "getSpaceGroupInfo", +function(sym, modelIndex, sgName, symOp, pt1, pt2, drawID, scaleFactor, nth, isFull, isForModel, options, cellInfo, bsInfo){ +if (bsInfo == null) { +bsInfo = new JU.BS(); +bsInfo.setBits(0, JS.SymmetryDesc.keys.length); +bsInfo.clear(19); +}var matrixOnly = (bsInfo.cardinality() == 1 && bsInfo.get(10)); +var info = null; +var isStandard = (!matrixOnly && pt1 == null && drawID == null && nth <= 0 && bsInfo.cardinality() >= JS.SymmetryDesc.keys.length); +var isBio = false; +var sgNote = null; +var haveName = (sgName != null && sgName.length > 0); +var haveRawName = (haveName && sgName.indexOf("[--]") >= 0); +if (isForModel || !haveName) { +var saveModelInfo = (isStandard && symOp == 0); +if (matrixOnly) { +cellInfo = sym; +} else { +if (modelIndex < 0) modelIndex = (Clazz_instanceOf(pt1,"JM.Atom") ? (pt1).mi : this.modelSet.vwr.am.cmi); +if (modelIndex < 0) sgNote = "no single current model"; + else if (cellInfo == null && !(isBio = (cellInfo = this.modelSet.am[modelIndex].biosymmetry) != null) && (cellInfo = this.modelSet.getUnitCell(modelIndex)) == null) sgNote = "not applicable"; +if (sgNote != null) { +info = new java.util.Hashtable(); +info.put("spaceGroupInfo", ""); +info.put("spaceGroupNote", sgNote); +info.put("symmetryInfo", ""); +} else if (isStandard) { +info = this.modelSet.getInfo(modelIndex, "spaceGroupInfo"); +}if (info != null) return info; +sgName = cellInfo.getSpaceGroupName(); +}info = new java.util.Hashtable(); +var ops = cellInfo.getSymmetryOperations(); +var sg = (isBio ? (cellInfo).spaceGroup : null); +var slist = (haveRawName ? "" : null); +var opCount = 0; +if (ops != null) { +if (!matrixOnly) { +if (isBio) sym.setSpaceGroupTo(JS.SpaceGroup.getNull(false, false, false)); + else sym.setSpaceGroup(false); +}if (ops[0].timeReversal != 0) (sym.getSpaceGroupOperation(0)).timeReversal = 1; +var infolist = new Array(ops.length); +var sops = ""; +var i0 = (drawID == null || pt1 == null || pt2 == null && nth < 0 ? 0 : 1); +for (var i = i0, nop = 0; i < ops.length && nop != nth; i++) { +var op = ops[i]; +var xyzOriginal = op.xyzOriginal; +var iop; +if (matrixOnly) { +iop = i; +} else { +var isNewIncomm = (i == 0 && op.xyz.indexOf("x4") >= 0); +iop = (!isNewIncomm && sym.getSpaceGroupOperation(i) != null ? i : isBio ? sym.addBioMoleculeOperation(sg.finalOperations[i], false) : sym.addSpaceGroupOperation("=" + op.xyz, i + 1)); +if (iop < 0) continue; +op = sym.getSpaceGroupOperation(i); +if (op == null) continue; +op.xyzOriginal = xyzOriginal; +}if (op.timeReversal != 0 || op.modDim > 0) isStandard = false; +if (slist != null) slist += ";" + op.xyz; +var ret = (symOp > 0 && symOp - 1 != iop ? null : this.createInfoArray(op, cellInfo, pt1, pt2, drawID, scaleFactor, options, false, bsInfo, false, false)); +if (ret != null) { +nop++; +if (nth > 0 && nop != nth) continue; +infolist[i] = ret; +if (!matrixOnly) sops += "\n" + (i + 1) + (drawID != null && nop == 1 ? "*" : "") + "\t" + ret[bsInfo.get(19) ? 19 : 0] + "\t " + ret[2]; +opCount++; +if (symOp > 0) break; +}} +info.put("operations", infolist); +if (!matrixOnly) info.put("symmetryInfo", (sops.length == 0 ? "" : sops.substring(1))); +}if (matrixOnly) { +return info; +}sgNote = (opCount == 0 ? "\n no symmetry operations" : nth <= 0 && symOp <= 0 ? "\n" + opCount + " symmetry operation" + (opCount == 1 ? ":\n" : "s:\n") : ""); +if (slist != null) sgName = slist.substring(slist.indexOf(";") + 1); +if (saveModelInfo) this.modelSet.setInfo(modelIndex, "spaceGroupInfo", info); +} else { +info = new java.util.Hashtable(); +}info.put("spaceGroupName", sgName); +info.put("spaceGroupNote", sgNote == null ? "" : sgNote); +var data; +if (isBio) { +data = sgName; +} else { +if (haveName && !haveRawName) sym.setSpaceGroupName(sgName); +data = sym.getSpaceGroupInfoObj(sgName, (cellInfo == null ? null : cellInfo.getUnitCellParams()), isFull, !isForModel); +if (data == null || data.equals("?")) { +data = "?"; +info.put("spaceGroupNote", "could not identify space group from name: " + sgName + "\nformat: show spacegroup \"2\" or \"P 2c\" " + "or \"C m m m\" or \"x, y, z;-x ,-y, -z\""); +}}info.put("spaceGroupInfo", data); +return info; +}, "J.api.SymmetryInterface,~N,~S,~N,JU.P3,JU.P3,~S,~N,~N,~B,~B,~N,J.api.SymmetryInterface,JU.BS"); +Clazz_defineMethod(c$, "getTransform", +function(uc, ops, fracA, fracB, best){ +if (JS.SymmetryDesc.pta01 == null) { +JS.SymmetryDesc.pta01 = new JU.P3(); +JS.SymmetryDesc.pta02 = new JU.P3(); +JS.SymmetryDesc.ptemp = new JU.P3(); +JS.SymmetryDesc.vtrans = new JU.V3(); +}JS.SymmetryDesc.pta02.setT(fracB); +JS.SymmetryDesc.vtrans.setT(JS.SymmetryDesc.pta02); +uc.unitize(JS.SymmetryDesc.pta02); +var dmin = 3.4028235E38; +var imin = -1; +for (var i = 0, n = ops.length; i < n; i++) { +var op = ops[i]; +JS.SymmetryDesc.pta01.setT(fracA); +op.rotTrans(JS.SymmetryDesc.pta01); +JS.SymmetryDesc.ptemp.setT(JS.SymmetryDesc.pta01); +uc.unitize(JS.SymmetryDesc.pta01); +var d = JS.SymmetryDesc.pta01.distanceSquared(JS.SymmetryDesc.pta02); +if (d < 1.96E-6) { +JS.SymmetryDesc.vtrans.sub(JS.SymmetryDesc.ptemp); +JS.SymmetryOperation.normalize12ths(JS.SymmetryDesc.vtrans); +var m2 = JU.M4.newM4(op); +m2.add(JS.SymmetryDesc.vtrans); +JS.SymmetryDesc.pta01.setT(fracA); +m2.rotTrans(JS.SymmetryDesc.pta01); +uc.unitize(JS.SymmetryDesc.pta01); +d = JS.SymmetryDesc.pta01.distanceSquared(JS.SymmetryDesc.pta02); +if (d >= 1.96E-6) { +continue; +}return m2; +}if (d < dmin) { +dmin = d; +imin = i; +}} +if (best) { +var op = ops[imin]; +JS.SymmetryDesc.pta01.setT(fracA); +op.rotTrans(JS.SymmetryDesc.pta01); +uc.unitize(JS.SymmetryDesc.pta01); +}return null; +}, "JS.UnitCell,~A,JU.P3,JU.P3,~B"); +c$.keys = Clazz_newArray(-1, ["xyz", "xyzOriginal", "label", null, "fractionalTranslation", "cartesianTranslation", "inversionCenter", null, "axisVector", "rotationAngle", "matrix", "unitTranslation", "centeringVector", "timeReversal", "plane", "_type", "id", "cif2", "xyzCanonical", "xyzNormalized"]); +c$.ptemp = new JU.P3(); +c$.ptemp2 = new JU.P3(); +c$.pta01 = new JU.P3(); +c$.pta02 = new JU.P3(); +c$.vtrans = new JU.V3(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JS"); +Clazz_load(["JU.SimpleUnitCell", "JU.P3", "JV.JC"], "JS.UnitCell", ["java.util.Hashtable", "JU.AU", "$.Lst", "$.M3", "$.M4", "$.P4", "$.PT", "$.Quat", "$.V3", "J.api.Interface", "JS.Symmetry", "JU.BoxInfo", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.moreInfo = null; +this.name = ""; +this.vertices = null; +this.fractionalOffset = null; +this.allFractionalRelative = false; +this.cartesianOffset = null; +this.unitCellMultiplier = null; +this.unitCellMultiplied = null; +this.f2c = null; +Clazz_instantialize(this, arguments);}, JS, "UnitCell", JU.SimpleUnitCell, Cloneable); +Clazz_prepareFields (c$, function(){ +this.cartesianOffset = new JU.P3(); +}); +c$.fromOABC = Clazz_defineMethod(c$, "fromOABC", +function(oabc, setRelative){ +var c = new JS.UnitCell(); +if (oabc.length == 3) oabc = Clazz_newArray(-1, [ new JU.P3(), oabc[0], oabc[1], oabc[2]]); +var parameters = Clazz_newFloatArray(-1, [-1, 0, 0, 0, 0, 0, oabc[1].x, oabc[1].y, oabc[1].z, oabc[2].x, oabc[2].y, oabc[2].z, oabc[3].x, oabc[3].y, oabc[3].z]); +c.init(parameters); +c.allFractionalRelative = setRelative; +c.initUnitcellVertices(); +c.setCartesianOffset(oabc[0]); +return c; +}, "~A,~B"); +c$.fromParams = Clazz_defineMethod(c$, "fromParams", +function(params, setRelative, slop){ +var c = new JS.UnitCell(); +c.init(params); +c.initUnitcellVertices(); +c.allFractionalRelative = setRelative; +c.setPrecision(slop); +if (params.length > 26) params[26] = slop; +return c; +}, "~A,~B,~N"); +c$.cloneUnitCell = Clazz_defineMethod(c$, "cloneUnitCell", +function(uc){ +var ucnew = null; +try { +ucnew = uc.clone(); +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +} else { +throw e; +} +} +return ucnew; +}, "JS.UnitCell"); +Clazz_defineMethod(c$, "checkDistance", +function(f1, f2, distance, dx, iRange, jRange, kRange, ptOffset){ +var p1 = JU.P3.newP(f1); +this.toCartesian(p1, true); +for (var i = -iRange; i <= iRange; i++) for (var j = -jRange; j <= jRange; j++) for (var k = -kRange; k <= kRange; k++) { +ptOffset.set(f2.x + i, f2.y + j, f2.z + k); +this.toCartesian(ptOffset, true); +var d = p1.distance(ptOffset); +if (dx > 0 ? Math.abs(d - distance) <= dx : d <= distance && d > 0.1) { +ptOffset.set(i, j, k); +return true; +}} + + +return false; +}, "JU.P3,JU.P3,~N,~N,~N,~N,~N,JU.P3"); +Clazz_defineMethod(c$, "checkPeriodic", +function(pt){ +switch (this.dimension) { +case 3: +if (pt.z < -this.slop || pt.z > 1 - this.slop) return false; +case 2: +if (pt.y < -this.slop || pt.y > 1 - this.slop) return false; +case 1: +if (pt.x < -this.slop || pt.x > 1 - this.slop) return false; +} +return true; +}, "JU.P3"); +Clazz_defineMethod(c$, "dumpInfo", +function(isDebug, multiplied){ +var m = (multiplied ? this.getUnitCellMultiplied() : this); +if (m !== this) return m.dumpInfo(isDebug, false); +return "a=" + this.a + ", b=" + this.b + ", c=" + this.c + ", alpha=" + this.alpha + ", beta=" + this.beta + ", gamma=" + this.gamma + "\noabc=" + JU.Escape.eAP(this.getUnitCellVectors()) + "\nvolume=" + this.volume + (isDebug ? "\nfractional to cartesian: " + this.matrixFractionalToCartesian + "\ncartesian to fractional: " + this.matrixCartesianToFractional : ""); +}, "~B,~B"); +Clazz_defineMethod(c$, "fix000", +function(x){ +return (Math.abs(x) < 0.001 ? 0 : x); +}, "~N"); +Clazz_defineMethod(c$, "fixFloor", +function(d){ +return (d == 1 ? 0 : d); +}, "~N"); +Clazz_defineMethod(c$, "getCanonicalCopy", +function(scale, withOffset){ +var pts = this.getScaledCell(withOffset); +return JU.BoxInfo.getCanonicalCopy(pts, scale); +}, "~N,~B"); +Clazz_defineMethod(c$, "getCanonicalCopyTrimmed", +function(frac, scale){ +var pts = this.getScaledCellMult(frac, true); +return JU.BoxInfo.getCanonicalCopy(pts, scale); +}, "JU.P3,~N"); +Clazz_defineMethod(c$, "getCartesianOffset", +function(){ +return this.cartesianOffset; +}); +Clazz_defineMethod(c$, "getCellWeight", +function(pt){ +var f = 1; +if (pt.x <= this.slop || pt.x >= 1 - this.slop) f /= 2; +if (pt.y <= this.slop || pt.y >= 1 - this.slop) f /= 2; +if (pt.z <= this.slop || pt.z >= 1 - this.slop) f /= 2; +return f; +}, "JU.P3"); +Clazz_defineMethod(c$, "getConventionalUnitCell", +function(latticeType, primitiveToCrystal){ +var oabc = this.getUnitCellVectors(); +if (!latticeType.equals("P") || primitiveToCrystal != null) this.toFromPrimitive(false, latticeType.charAt(0), oabc, primitiveToCrystal); +return oabc; +}, "~S,JU.M3"); +Clazz_defineMethod(c$, "getEquivPoints", +function(pt, flags, ops, list, i0, n0, dup0){ +var fromfractional = (flags.indexOf("fromfractional") >= 0); +var tofractional = (flags.indexOf("tofractional") >= 0); +var packed = (flags.indexOf("packed") >= 0); +if (list == null) list = new JU.Lst(); +var pf = JU.P3.newP(pt); +if (!fromfractional) this.toFractional(pf, true); +var n = list.size(); +for (var i = 0, nops = ops.length; i < nops; i++) { +var p = JU.P3.newP(pf); +ops[i].rotTrans(p); +p.x = this.fixFloor(p.x - Math.floor(p.x)); +p.y = this.fixFloor(p.y - Math.floor(p.y)); +p.z = this.fixFloor(p.z - Math.floor(p.z)); +list.addLast(p); +n++; +} +if (packed) { +for (var i = n0; i < n; i++) { +pf.setT(list.get(i)); +this.unitizeRnd(pf); +if (pf.x == 0) { +list.addLast(JU.P3.new3(0, pf.y, pf.z)); +list.addLast(JU.P3.new3(1, pf.y, pf.z)); +if (pf.y == 0) { +list.addLast(JU.P3.new3(1, 1, pf.z)); +list.addLast(JU.P3.new3(0, 0, pf.z)); +if (pf.z == 0) { +list.addLast(JU.P3.new3(1, 1, 1)); +list.addLast(JU.P3.new3(0, 0, 0)); +}}}if (pf.y == 0) { +list.addLast(JU.P3.new3(pf.x, 0, pf.z)); +list.addLast(JU.P3.new3(pf.x, 1, pf.z)); +if (pf.z == 0) { +list.addLast(JU.P3.new3(pf.x, 0, 0)); +list.addLast(JU.P3.new3(pf.x, 1, 1)); +}}if (pf.z == 0) { +list.addLast(JU.P3.new3(pf.x, pf.y, 0)); +list.addLast(JU.P3.new3(pf.x, pf.y, 1)); +if (pf.x == 0) { +list.addLast(JU.P3.new3(0, pf.y, 0)); +list.addLast(JU.P3.new3(1, pf.y, 1)); +}}} +}JS.UnitCell.removeDuplicates(list, i0, dup0, -1); +if (!tofractional) { +for (var i = list.size(); --i >= n0; ) this.toCartesian(list.get(i), true); + +}return list; +}, "JU.P3,~S,~A,JU.Lst,~N,~N,~N"); +Clazz_defineMethod(c$, "getFractionalOffset", +function(){ +return this.fractionalOffset; +}); +Clazz_defineMethod(c$, "getInfo", +function(){ +var m = this.getUnitCellMultiplied(); +if (m !== this) return m.getInfo(); +var info = new java.util.Hashtable(); +info.put("params", this.unitCellParams); +info.put("oabc", this.getUnitCellVectors()); +info.put("volume", Double.$valueOf(this.volume)); +info.put("matFtoC", this.matrixFractionalToCartesian); +info.put("matCtoF", this.matrixCartesianToFractional); +return info; +}); +Clazz_defineMethod(c$, "getQuaternionRotation", +function(abc){ +var a = JU.V3.newVsub(this.vertices[4], this.vertices[0]); +var b = JU.V3.newVsub(this.vertices[2], this.vertices[0]); +var c = JU.V3.newVsub(this.vertices[1], this.vertices[0]); +var x = new JU.P3(); +var v = new JU.P3(); +var mul = (abc.charAt(0) == '-' ? -1 : 1); +if (mul < 0) abc = abc.substring(1); +var abc0 = abc; +abc = JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(abc, "ab", "A"), "bc", "B"), "ca", "C"), "ba", "D"), "cb", "E"), "ac", "F"); +var isFace = !abc0.equals(abc); +var quadrant = (isFace ? 1 : 0); +if (abc.length == 2) { +quadrant = (abc.charAt(1)).charCodeAt(0) - 48; +abc = abc.substring(0, 1); +}var isEven = (quadrant % 2 == 0); +var axis = "abcABCDEF".indexOf(abc); +var v1; +var v2; +var P3; +switch (axis) { +case 7: +mul = -mul; +case 4: +a.cross(c, b); +quadrant = ((5 - quadrant) % 4) + 1; +case 0: +default: +v1 = a; +v2 = c; +P3 = b; +break; +case 8: +mul = -mul; +case 5: +mul = -mul; +b.cross(c, a); +quadrant = ((2 + quadrant) % 4) + 1; +case 1: +v1 = b; +v2 = a; +P3 = c; +mul = -mul; +break; +case 3: +mul = -mul; +case 6: +c.cross(a, b); +if (isEven) quadrant = 6 - quadrant; +case 2: +v1 = c; +v2 = a; +P3 = b; +if (!isFace && quadrant > 0) { +quadrant = 5 - quadrant; +}break; +} +if (quadrant > 0) { +if (mul > 0 != isEven) { +v2 = P3; +v1.scale(-1); +}}switch (quadrant) { +case 0: +default: +case 1: +break; +case 2: +v1.scale(-1); +v2.scale(-1); +break; +case 3: +v2.scale(-1); +break; +case 4: +v1.scale(-1); +break; +} +x.cross(v1, v2); +v.cross(x, v1); +return JU.Quat.getQuaternionFrame(null, v, x).inv(); +}, "~S"); +Clazz_defineMethod(c$, "getScaledCell", +function(withOffset){ +return this.getScaledCellMult(null, withOffset); +}, "~B"); +Clazz_defineMethod(c$, "getScaledCellMult", +function(mult, withOffset){ +var pts = new Array(8); +var cell0 = null; +var cell1 = null; +var isFrac = (mult != null); +if (!isFrac) mult = this.unitCellMultiplier; +if (withOffset && mult != null && mult.z == 0) { +cell0 = new JU.P3(); +cell1 = new JU.P3(); +JU.SimpleUnitCell.ijkToPoint3f(Clazz_floatToInt(mult.x), cell0, 0, 0); +JU.SimpleUnitCell.ijkToPoint3f(Clazz_floatToInt(mult.y), cell1, 0, 0); +cell1.sub(cell0); +}var scale = (isFrac || mult == null || mult.z == 0 ? 1 : Math.abs(mult.z)); +for (var i = 0; i < 8; i++) { +var pt = pts[i] = JU.P3.newP(JU.BoxInfo.unitCubePoints[i]); +if (cell0 != null) { +pts[i].add3(cell0.x + cell1.x * pt.x, cell0.y + cell1.y * pt.y, cell0.z + cell1.z * pt.z); +} else if (isFrac) { +pt.scaleT(mult); +}pts[i].scale(scale); +this.matrixFractionalToCartesian.rotTrans(pt); +if (!withOffset) pt.sub(this.cartesianOffset); +} +return pts; +}, "JU.T3,~B"); +Clazz_defineMethod(c$, "getState", +function(){ +var s = ""; +if (this.fractionalOffset != null && this.fractionalOffset.lengthSquared() != 0) s += " unitcell offset " + JU.Escape.eP(this.fractionalOffset) + ";\n"; +if (this.unitCellMultiplier != null) s += " unitcell range " + JU.SimpleUnitCell.escapeMultiplier(this.unitCellMultiplier) + ";\n"; +return s; +}); +Clazz_defineMethod(c$, "getTensor", +function(vwr, parBorU){ +var t = (J.api.Interface.getUtil("Tensor", vwr, "file")); +if (parBorU[0] == 0 && parBorU[1] == 0 && parBorU[2] == 0) { +var f = parBorU[7]; +var eigenValues = Clazz_newFloatArray(-1, [f, f, f]); +return t.setFromEigenVectors(JS.UnitCell.unitVectors, eigenValues, "iso", "Uiso=" + f, null); +}t.parBorU = parBorU; +var Bcart = Clazz_newDoubleArray (6, 0); +var ortepType = Clazz_floatToInt(parBorU[6]); +if (ortepType == 12) { +Bcart[0] = parBorU[0] * 19.739208802178716; +Bcart[1] = parBorU[1] * 19.739208802178716; +Bcart[2] = parBorU[2] * 19.739208802178716; +Bcart[3] = parBorU[3] * 19.739208802178716 * 2; +Bcart[4] = parBorU[4] * 19.739208802178716 * 2; +Bcart[5] = parBorU[5] * 19.739208802178716 * 2; +parBorU[7] = (parBorU[0] + parBorU[1] + parBorU[3]) / 3; +} else { +var isFractional = (ortepType == 4 || ortepType == 5 || ortepType == 8 || ortepType == 9); +var cc = 2 - (ortepType % 2); +var dd = (ortepType == 8 || ortepType == 9 || ortepType == 10 ? 19.739208802178716 : ortepType == 4 || ortepType == 5 ? 0.25 : ortepType == 2 || ortepType == 3 ? Math.log(2) : 1); +var B11 = parBorU[0] * dd * (isFractional ? this.a_ * this.a_ : 1); +var B22 = parBorU[1] * dd * (isFractional ? this.b_ * this.b_ : 1); +var B33 = parBorU[2] * dd * (isFractional ? this.c_ * this.c_ : 1); +var B12 = parBorU[3] * dd * (isFractional ? this.a_ * this.b_ : 1) * cc; +var B13 = parBorU[4] * dd * (isFractional ? this.a_ * this.c_ : 1) * cc; +var B23 = parBorU[5] * dd * (isFractional ? this.b_ * this.c_ : 1) * cc; +parBorU[7] = Math.pow(B11 / 19.739208802178716 / this.a_ / this.a_ * B22 / 19.739208802178716 / this.b_ / this.b_ * B33 / 19.739208802178716 / this.c_ / this.c_, 0.3333); +Bcart[0] = this.a * this.a * B11 + this.b * this.b * this.cosGamma * this.cosGamma * B22 + this.c * this.c * this.cosBeta * this.cosBeta * B33 + this.a * this.b * this.cosGamma * B12 + this.b * this.c * this.cosGamma * this.cosBeta * B23 + this.a * this.c * this.cosBeta * B13; +Bcart[1] = this.b * this.b * this.sinGamma * this.sinGamma * B22 + this.c * this.c * this.cA_ * this.cA_ * B33 + this.b * this.c * this.cA_ * this.sinGamma * B23; +Bcart[2] = this.c * this.c * this.cB_ * this.cB_ * B33; +Bcart[3] = 2 * this.b * this.b * this.cosGamma * this.sinGamma * B22 + 2 * this.c * this.c * this.cA_ * this.cosBeta * B33 + this.a * this.b * this.sinGamma * B12 + this.b * this.c * (this.cA_ * this.cosGamma + this.sinGamma * this.cosBeta) * B23 + this.a * this.c * this.cA_ * B13; +Bcart[4] = 2 * this.c * this.c * this.cB_ * this.cosBeta * B33 + this.b * this.c * this.cosGamma * B23 + this.a * this.c * this.cB_ * B13; +Bcart[5] = 2 * this.c * this.c * this.cA_ * this.cB_ * B33 + this.b * this.c * this.cB_ * this.sinGamma * B23; +}return t.setFromThermalEquation(Bcart, JU.Escape.eAF(parBorU)); +}, "JV.Viewer,~A"); +Clazz_defineMethod(c$, "getUnitCellMultiplied", +function(){ +if (this.unitCellMultiplier == null || this.unitCellMultiplier.z > 0 && this.unitCellMultiplier.z == Clazz_floatToInt(this.unitCellMultiplier.z)) return this; +if (this.unitCellMultiplied == null) { +var pts = JU.BoxInfo.toOABC(this.getScaledCell(true), null); +this.unitCellMultiplied = JS.UnitCell.fromOABC(pts, false); +}return this.unitCellMultiplied; +}); +Clazz_defineMethod(c$, "getUnitCellMultiplier", +function(){ +return this.unitCellMultiplier; +}); +Clazz_defineMethod(c$, "isStandard", +function(){ +return (this.unitCellMultiplier == null || this.unitCellMultiplier.x == this.unitCellMultiplier.y); +}); +Clazz_defineMethod(c$, "getUnitCellVectors", +function(){ +var m = this.matrixFractionalToCartesian; +return Clazz_newArray(-1, [JU.P3.newP(this.cartesianOffset), JU.P3.new3(this.fix000(m.m00), this.fix000(m.m10), this.fix000(m.m20)), JU.P3.new3(this.fix000(m.m01), this.fix000(m.m11), this.fix000(m.m21)), JU.P3.new3(this.fix000(m.m02), this.fix000(m.m12), this.fix000(m.m22))]); +}); +c$.toTrm = Clazz_defineMethod(c$, "toTrm", +function(transform, trm){ +if (trm == null) trm = new JU.M4(); +JS.UnitCell.getMatrixAndUnitCell(null, transform, trm); +return trm; +}, "~S,JU.M4"); +c$.getMatrixAndUnitCell = Clazz_defineMethod(c$, "getMatrixAndUnitCell", +function(uc, def, retMatrix){ +if (def == null) def = "a,b,c"; +var m; +var pts = new Array(4); +var pt = pts[0] = JU.P3.new3(0, 0, 0); +pts[1] = JU.P3.new3(1, 0, 0); +pts[2] = JU.P3.new3(0, 1, 0); +pts[3] = JU.P3.new3(0, 0, 1); +var m3 = new JU.M3(); +if (JU.AU.isAD(def)) { +return JU.SimpleUnitCell.setAbcFromParams(def, pts); +}var isString = (typeof(def)=='string'); +if (isString) { +var sdef = def; +var strans; +var strans2 = null; +if (sdef.indexOf("a=") == 0) return JU.SimpleUnitCell.setAbc(sdef, null, pts); +var ret = new Array(1); +var ptc = sdef.indexOf(";"); +if (ptc >= 0) { +strans = sdef.substring(ptc + 1).trim(); +sdef = sdef.substring(0, ptc); +ret[0] = sdef; +strans2 = JS.UnitCell.fixABC(ret); +if (sdef !== ret[0]) { +sdef = ret[0]; +}} else if (sdef.equals("a,b,c")) { +strans = null; +} else { +ret[0] = sdef; +strans = JS.UnitCell.fixABC(ret); +sdef = ret[0]; +}sdef += ";0,0,0"; +while (sdef.startsWith("!!")) sdef = sdef.substring(2); + +var isRev = sdef.startsWith("!"); +if (isRev) sdef = sdef.substring(1); +if (sdef.startsWith("r;")) sdef = "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c" + sdef.substring(1); +var symTemp = new JS.Symmetry(); +symTemp.setSpaceGroup(false); +var i = symTemp.addSpaceGroupOperation("=" + sdef, 0); +if (i < 0) return null; +m = symTemp.getSpaceGroupOperation(i); +(m).doFinalize(); +var t = new JU.P3(); +JS.UnitCell.addTrans(strans, t); +JS.UnitCell.addTrans(strans2, t); +m.setTranslation(t); +var isABC = (sdef.indexOf("c") >= 0); +if (isABC) { +m.transpose33(); +}if (isRev) { +m.invert(); +}if (retMatrix != null) { +retMatrix.setM4(m); +}if (uc == null) return pts; +} else if (retMatrix != null || uc == null) { +return null; +} else if (Clazz_instanceOf(def,"JU.M3")) { +m = JU.M4.newMV(def, new JU.P3()); +} else if (Clazz_instanceOf(def,"JU.M4")) { +m = def; +} else { +m = (def)[0]; +m.getRotationScale(m3); +m.rotTrans(pt); +uc.toCartesian(pt, false); +for (var i = 1; i < 4; i++) { +m3.rotate(pts[i]); +uc.toCartesian(pts[i], true); +} +return pts; +}m.getRotationScale(m3); +m.getTranslation(pt); +uc.toCartesian(pt, false); +for (var i = 1; i < 4; i++) { +m3.rotate(pts[i]); +uc.toCartesian(pts[i], true); +} +return pts; +}, "JU.SimpleUnitCell,~O,JU.M4"); +c$.addTrans = Clazz_defineMethod(c$, "addTrans", +function(strans, t){ +if (strans == null) return; +var atrans = JU.PT.split(strans, ","); +var ftrans = Clazz_newFloatArray (3, 0); +if (atrans.length == 3) { +for (var j = 0; j < 3; j++) { +var s = atrans[j]; +var sfpt = s.indexOf("/"); +if (sfpt >= 0) { +ftrans[j] = JU.PT.parseFloat(s.substring(0, sfpt)) / JU.PT.parseFloat(s.substring(sfpt + 1)); +} else { +ftrans[j] = JU.PT.parseFloat(s); +}} +}t.add3(ftrans[0], ftrans[1], ftrans[2]); +}, "~S,JU.P3"); +c$.fixABC = Clazz_defineMethod(c$, "fixABC", +function(ret){ +var tokens = JU.PT.split(ret[0], ","); +if (tokens.length != 3) return null; +var trans = ""; +var abc = ""; +var haveT = false; +for (var i = 0; i < 3; i++) { +var a = tokens[i]; +var p; +var n = 0; +for (p = a.length; --p >= 0; ) { +var c = a.charAt(p); +switch ((c).charCodeAt(0)) { +default: +if (c >= 'a') p = 0; +break; +case 43: +n = 1; +case 45: +p = -p; +break; +} +} +p = -1 - p; +if (p == 0) { +trans += ",0"; +abc += "," + a; +} else { +haveT = true; +trans += "," + a.substring(p + n); +abc += "," + a.substring(0, p); +}} +ret[0] = abc.substring(1); +return (haveT ? trans.substring(1) : null); +}, "~A"); +Clazz_defineMethod(c$, "getVertices", +function(){ +return this.vertices; +}); +Clazz_defineMethod(c$, "hasOffset", +function(){ +return (this.fractionalOffset != null && this.fractionalOffset.lengthSquared() != 0); +}); +Clazz_defineMethod(c$, "initOrientation", +function(mat){ +if (mat == null) return; +var m = new JU.M4(); +m.setToM3(mat); +this.matrixFractionalToCartesian.mul2(m, this.matrixFractionalToCartesian); +this.matrixCartesianToFractional.setM4(this.matrixFractionalToCartesian).invert(); +this.initUnitcellVertices(); +}, "JU.M3"); +Clazz_defineMethod(c$, "initUnitcellVertices", +function(){ +if (this.matrixFractionalToCartesian == null) return; +this.matrixCtoFNoOffset = JU.M4.newM4(this.matrixCartesianToFractional); +this.matrixFtoCNoOffset = JU.M4.newM4(this.matrixFractionalToCartesian); +this.vertices = new Array(8); +for (var i = 8; --i >= 0; ) this.vertices[i] = this.matrixFractionalToCartesian.rotTrans2(JU.BoxInfo.unitCubePoints[i], new JU.P3()); + +}); +Clazz_defineMethod(c$, "isSameAs", +function(f2c2){ +if (f2c2 == null) return false; +var f2c = this.getF2C(); +for (var i = 0; i < 3; i++) { +for (var j = 0; j < 4; j++) { +if (!JU.SimpleUnitCell.approx0(f2c[i][j] - f2c2[i][j])) return false; +} +} +return true; +}, "~A"); +Clazz_defineMethod(c$, "getF2C", +function(){ +if (this.f2c == null) { +this.f2c = Clazz_newFloatArray (3, 4, 0); +for (var i = 0; i < 3; i++) this.matrixFractionalToCartesian.getRow(i, this.f2c[i]); + +}return this.f2c; +}); +Clazz_defineMethod(c$, "isWithinUnitCell", +function(a, b, c, pt){ +switch (this.dimension) { +case 3: +if (pt.z < c - 1 - this.slop || pt.z > c + this.slop) return false; +case 2: +if (pt.y < b - 1 - this.slop || pt.y > b + this.slop) return false; +case 1: +if (pt.x < a - 1 - this.slop || pt.x > a + this.slop) return false; +} +return true; +}, "~N,~N,~N,JU.P3"); +Clazz_defineMethod(c$, "setCartesianOffset", +function(origin){ +this.cartesianOffset.setT(origin); +this.matrixFractionalToCartesian.m03 = this.cartesianOffset.x; +this.matrixFractionalToCartesian.m13 = this.cartesianOffset.y; +this.matrixFractionalToCartesian.m23 = this.cartesianOffset.z; +var wasOffset = this.hasOffset(); +this.fractionalOffset = JU.P3.newP(this.cartesianOffset); +this.matrixCartesianToFractional.rotate(this.fractionalOffset); +this.matrixCartesianToFractional.m03 = -this.fractionalOffset.x; +this.matrixCartesianToFractional.m13 = -this.fractionalOffset.y; +this.matrixCartesianToFractional.m23 = -this.fractionalOffset.z; +if (this.allFractionalRelative) { +this.matrixCtoFNoOffset.setM4(this.matrixCartesianToFractional); +this.matrixFtoCNoOffset.setM4(this.matrixFractionalToCartesian); +}if (!wasOffset && this.fractionalOffset.lengthSquared() == 0) this.fractionalOffset = null; +this.f2c = null; +}, "JU.T3"); +Clazz_defineMethod(c$, "setOffset", +function(pt){ +if (pt == null) return; +this.unitCellMultiplied = null; +var pt4 = (Clazz_instanceOf(pt,"JU.T4") ? pt : null); +var w = (pt4 == null ? 1.4E-45 : pt4.w); +var isCell555P4 = (w > 999999); +if (pt4 != null ? w <= 0 || isCell555P4 : pt.x >= 100 || pt.y >= 100) { +this.unitCellMultiplier = (pt.z == 0 && pt.x == pt.y && !isCell555P4 ? null : isCell555P4 ? JU.P4.newPt(pt4) : JU.P3.newP(pt)); +this.unitCellMultiplied = null; +if (pt4 == null || pt4.w == 0 || isCell555P4) return; +}if (this.hasOffset() || pt.lengthSquared() > 0) { +this.fractionalOffset = JU.P3.newP(pt); +}this.matrixCartesianToFractional.m03 = -pt.x; +this.matrixCartesianToFractional.m13 = -pt.y; +this.matrixCartesianToFractional.m23 = -pt.z; +this.cartesianOffset.setT(pt); +this.matrixFractionalToCartesian.rotate(this.cartesianOffset); +this.matrixFractionalToCartesian.m03 = this.cartesianOffset.x; +this.matrixFractionalToCartesian.m13 = this.cartesianOffset.y; +this.matrixFractionalToCartesian.m23 = this.cartesianOffset.z; +if (this.allFractionalRelative) { +this.matrixCtoFNoOffset.setM4(this.matrixCartesianToFractional); +this.matrixFtoCNoOffset.setM4(this.matrixFractionalToCartesian); +}this.f2c = null; +}, "JU.T3"); +Clazz_defineMethod(c$, "toFromPrimitive", +function(toPrimitive, type, uc, primitiveToCrystal){ +var offset = uc.length - 3; +var mf = null; +if (type == 'r' || primitiveToCrystal == null) { +switch ((type).charCodeAt(0)) { +default: +return false; +case 114: +JU.SimpleUnitCell.getReciprocal(uc, uc, 1); +return true; +case 80: +toPrimitive = true; +mf = JU.M3.newA9( Clazz_newFloatArray(-1, [1, 0, 0, 0, 1, 0, 0, 0, 1])); +break; +case 65: +mf = JU.M3.newA9( Clazz_newFloatArray(-1, [1, 0, 0, 0, 0.5, 0.5, 0, -0.5, 0.5])); +break; +case 66: +mf = JU.M3.newA9( Clazz_newFloatArray(-1, [0.5, 0, 0.5, 0, 1, 0, -0.5, 0, 0.5])); +break; +case 67: +mf = JU.M3.newA9( Clazz_newFloatArray(-1, [0.5, 0.5, 0, -0.5, 0.5, 0, 0, 0, 1])); +break; +case 82: +mf = JU.M3.newA9( Clazz_newFloatArray(-1, [0.6666667, -0.33333334, -0.33333334, 0.33333334, 0.33333334, -0.6666667, 0.33333334, 0.33333334, 0.33333334])); +break; +case 73: +mf = JU.M3.newA9( Clazz_newFloatArray(-1, [-0.5, .5, .5, .5, -0.5, .5, .5, .5, -0.5])); +break; +case 70: +mf = JU.M3.newA9( Clazz_newFloatArray(-1, [0, 0.5, 0.5, 0.5, 0, 0.5, 0.5, 0.5, 0])); +break; +} +if (!toPrimitive) mf.invert(); +} else { +mf = JU.M3.newM3(primitiveToCrystal); +if (toPrimitive) mf.invert(); +}for (var i = uc.length; --i >= offset; ) { +var p = uc[i]; +this.toFractional(p, true); +mf.rotate(p); +this.toCartesian(p, true); +} +return true; +}, "~B,~S,~A,JU.M3"); +Clazz_defineMethod(c$, "toUnitCell", +function(pt, offset){ +if (this.matrixCartesianToFractional == null) return; +if (offset == null) { +this.matrixCartesianToFractional.rotTrans(pt); +this.unitize(pt); +this.matrixFractionalToCartesian.rotTrans(pt); +} else { +this.matrixCtoFNoOffset.rotTrans(pt); +this.unitize(pt); +pt.add(offset); +this.matrixFtoCNoOffset.rotTrans(pt); +}}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "toUnitCellRnd", +function(pt, offset){ +if (this.matrixCartesianToFractional == null) return; +if (offset == null) { +this.matrixCartesianToFractional.rotTrans(pt); +this.unitizeRnd(pt); +this.matrixFractionalToCartesian.rotTrans(pt); +} else { +this.matrixCtoFNoOffset.rotTrans(pt); +this.unitizeRnd(pt); +pt.add(offset); +this.matrixFtoCNoOffset.rotTrans(pt); +}}, "JU.T3,JU.T3"); +Clazz_defineMethod(c$, "unitize", +function(pt){ +this.unitizeDim(this.dimension, pt); +}, "JU.T3"); +Clazz_defineMethod(c$, "unitizeRnd", +function(pt){ +JU.SimpleUnitCell.unitizeDimRnd(this.dimension, pt, this.slop); +}, "JU.T3"); +c$.createCompatibleUnitCell = Clazz_defineMethod(c$, "createCompatibleUnitCell", +function(sg, params, newParams, allowSame){ +if (newParams == null) newParams = params; +var a = params[0]; +var b = params[1]; +var c = params[2]; +var alpha = params[3]; +var beta = params[4]; +var gamma = params[5]; +var n = (sg == null || sg.itaNumber == null ? 0 : JU.PT.parseInt(sg.itaNumber)); +var toHex = (n != 0 && JS.UnitCell.isHexagonalSG(n, null)); +var isHex = (toHex && JS.UnitCell.isHexagonalSG(-1, params)); +var toRhom = (n != 0 && sg.axisChoice == 'r'); +var isRhom = (toRhom && JU.SimpleUnitCell.isRhombohedral(params)); +if (toHex && isHex || toRhom && isRhom) { +allowSame = true; +}if (n > (allowSame ? 2 : 0)) { +var absame = JU.SimpleUnitCell.approx0(a - b); +var bcsame = JU.SimpleUnitCell.approx0(b - c); +var acsame = JU.SimpleUnitCell.approx0(c - a); +var albesame = JU.SimpleUnitCell.approx0(alpha - beta); +var begasame = JU.SimpleUnitCell.approx0(beta - gamma); +var algasame = JU.SimpleUnitCell.approx0(gamma - alpha); +if (!allowSame) { +if (a > b) { +var d = a; +a = b; +b = d; +}bcsame = JU.SimpleUnitCell.approx0(b - c); +if (bcsame) c = b * 1.5; +absame = JU.SimpleUnitCell.approx0(a - b); +if (absame) b = a * 1.2; +acsame = JU.SimpleUnitCell.approx0(c - a); +if (acsame) c = a * 1.1; +if (JU.SimpleUnitCell.approx0(alpha - 90)) { +alpha = 80; +}if (JU.SimpleUnitCell.approx0(beta - 90)) { +beta = 100; +}if (JU.SimpleUnitCell.approx0(gamma - 90)) { +gamma = 110; +}if (alpha > beta) { +var d = alpha; +alpha = beta; +beta = d; +}albesame = JU.SimpleUnitCell.approx0(alpha - beta); +begasame = JU.SimpleUnitCell.approx0(beta - gamma); +algasame = JU.SimpleUnitCell.approx0(gamma - alpha); +if (albesame) { +beta = alpha * 1.2; +}if (begasame) { +gamma = beta * 1.3; +}if (algasame) { +gamma = alpha * 1.4; +}}if (toHex) { +if (toRhom ? isRhom : isHex) { +} else if (sg.axisChoice == 'r') { +c = b = a; +if (!allowSame && alpha > 85 && alpha < 95) alpha = 80; +gamma = beta = alpha; +} else { +b = a; +alpha = beta = 90; +gamma = 120; +}} else if (n >= 195) { +c = b = a; +alpha = beta = gamma = 90; +} else if (n >= 75) { +b = a; +if (acsame && !allowSame) c = a * 1.5; +alpha = beta = gamma = 90; +} else if (n >= 16) { +alpha = beta = gamma = 90; +} else if (n >= 3) { +switch ((sg.uniqueAxis).charCodeAt(0)) { +case 97: +beta = gamma = 90; +break; +default: +case 98: +alpha = gamma = 90; +break; +case 99: +alpha = beta = 90; +break; +} +}}var isNew = !(a == params[0] && b == params[1] && c == params[2] && alpha == params[3] && beta == params[4] && gamma == params[5]); +newParams[0] = a; +newParams[1] = b; +newParams[2] = c; +newParams[3] = alpha; +newParams[4] = beta; +newParams[5] = gamma; +return isNew; +}, "JS.SpaceGroup,~A,~A,~B"); +c$.isHexagonalSG = Clazz_defineMethod(c$, "isHexagonalSG", +function(n, params){ +return (n < 1 ? JU.SimpleUnitCell.isHexagonal(params) : n >= 143 && n <= 194); +}, "~N,~A"); +c$.isMonoclinicSG = Clazz_defineMethod(c$, "isMonoclinicSG", +function(n){ +return (n >= 3 && n <= 15); +}, "~N"); +c$.isTetragonalSG = Clazz_defineMethod(c$, "isTetragonalSG", +function(n){ +return (n >= 75 && n <= 142); +}, "~N"); +c$.isPolarSG = Clazz_defineMethod(c$, "isPolarSG", +function(n){ +return (n == 1 || n >= 3 && n <= 5 || n >= 6 && n <= 9 || n >= 25 && n <= 46 || n >= 75 && n <= 80 || n >= 99 && n <= 110 || n >= 143 && n <= 146 || n >= 156 && n <= 161 || n >= 168 && n <= 173 || n >= 183 && n <= 186); +}, "~N"); +c$.removeDuplicates = Clazz_defineMethod(c$, "removeDuplicates", +function(list, i0, n0, n){ +if (n < 0) n = list.size(); +for (var i = i0; i < n; i++) { +var p = list.get(i); +for (var j = Math.max(i + 1, n0); j < n; j++) { +if (list.get(j).distanceSquared(p) < 1.96E-6) { +list.removeItemAt(j); +n--; +j--; +}} +} +}, "JU.Lst,~N,~N,~N"); +c$.unitVectors = Clazz_newArray(-1, [JV.JC.axisX, JV.JC.axisY, JV.JC.axisZ]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coresym.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coresym.z.js new file mode 100755 index 000000000000..8515878b68c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coresym.z.js @@ -0,0 +1,410 @@ +(function(ya,za,Aa,Ba,S,Ca,X,U,fa,M,ba,w,Da,Z,Ea,da,H,C,va,oa,ta,Fa,Ga,Ha,qa,wa,xa,Q,Ia,Ja,sa,Ka,La,Ma,Na,ua,Oa,Pa,Qa,Ra,Sa,Ta,Ua,Va,Wa,Xa,Ya,Za,$a,ab,bb,cb,db,eb,fb,d,r){X("J.adapter.smarter");fa(["JS.Symmetry","JU.P3","$.SB"],"J.adapter.smarter.XtalSymmetry","java.util.Hashtable JU.BS $.Lst $.M3 $.M4 $.P3i $.PT $.V3 J.adapter.smarter.Atom JS.SpaceGroup $.SymmetryOperation $.UnitCell JU.BSUtil $.Logger $.SimpleUnitCell".split(" "),function(){var b=ba(function(){this.acr=null;this.applySymmetryToBonds= +!1;this.baseSymmetry=this.asc=null;this.bondCount0=0;this.bondsFound=null;this.crystalReaderLatticeOpsOnly=this.checkNearAtoms=this.checkAll=this.centroidPacked=!1;this.disorderMap=null;this.disorderMapMax=0;this.doCentroidUnitCell=!1;this.doNormalize=!0;this.doPackUnitCell=!1;this.filterSymop=null;this.firstAtom=0;this.latticeCells=null;this.latticeOp=0;this.mTemp=this.maxXYZ0=this.minXYZ0=this.maxXYZ=this.minXYZ=this.mident=null;this.ndims=3;this.packingRange=this.nVib=this.noSymmetryCount=0;this.ptTemp= +this.ptOffset=null;this.rmaxz=this.rmaxy=this.rmaxx=this.rminz=this.rminy=this.rminx=0;this.symmetry=null;this.symmetryRange=0;this.unitCellTranslations=this.unitCellParams=this.trajectoryUnitCells=null;M(this,arguments)},J.adapter.smarter,"XtalSymmetry",null);oa(b,function(){this.bondsFound=new JU.SB;this.ptOffset=new JU.P3});Z(b,function(){});d(b,"addRotatedTensor",function(a,c,e,g,n){null==this.ptTemp&&(this.ptTemp=new JU.P3,this.mTemp=new JU.M3);return a.addTensor(this.acr.getInterface("JU.Tensor").setFromEigenVectors(n.rotateAxes(e, +c.eigenVectors,this.ptTemp,this.mTemp),c.eigenValues,c.isIsotropic?"iso":c.type,c.id,c),null,g)},"J.adapter.smarter.Atom,JU.Tensor,~N,~B,J.adapter.smarter.XtalSymmetry.FileSymmetry");d(b,"applySymmetryBio",function(a,c,e){var g=a.get("biomts"),n=g.size();null==this.mident&&(this.mident=new JU.M4,this.mident.setIdentity());this.acr.lstNCS=null;this.setLatticeCells();var b=null!=this.latticeCells&&0!=this.latticeCells[0]?H(3,0):null;if(null!=b)for(var h=0;3>h;h++)b[h]=this.latticeCells[h];this.latticeCells= +null;var b=this.acr.getFilterWithCase("BMCHAINS"),j=null==b?-1:2>b.length?0:JU.PT.parseInt(b.substring(1));-2147483648==j&&(j=-b.charAt(1).charCodeAt(0));var d=0<=e.indexOf("BYCHAIN")?1:0<=e.indexOf("BYSYMOP")?2:0;this.doNormalize=!1;var k=a.get("chains");(this.symmetry=new J.adapter.smarter.XtalSymmetry.FileSymmetry).setSpaceGroup(this.doNormalize);this.addSpaceGroupOperation("x,y,z",!1);b=a.get("name");this.setAtomSetSpaceGroupName(this.acr.sgName=b);this.applySymmetryToBonds=c;this.bondCount0= +this.asc.bondCount;this.firstAtom=this.asc.getLastAtomSetAtomIndex();var b=this.asc.ac,l=new java.util.Hashtable,p=0,q=this.asc.atoms;c=this.bondCount0>this.asc.bondIndex0&&c;switch(d){case 1:for(h=b;--h>=this.firstAtom;){var A=Integer.$valueOf(q[h].chainID),s=l.get(A);null==s&&(p++,l.put(A,s=new JU.BS));s.set(h)}this.asc.bsAtoms=new JU.BS;for(h=0;h=this.firstAtom;)c.add(q[h]);c.scale(1/(b-this.firstAtom));c.atomName="Pt";c.radius=16;this.asc.addAtom(c);this.firstAtom=b++;c=!1}p=a.get("asemblyIdAtoms");0<=e.indexOf("#<")&& +(n=Math.min(n,JU.PT.parseInt(e.substring(e.indexOf("#<")+2))-1),e=JU.PT.rep(e,"#<","_<"));h=0;for(l=this.firstAtom;lh&&(h=a);a=this.asc.bsAtoms;s=c?H(this.asc.ac,0):null;for(t=null==k?1:0;te.indexOf("#"+(t+1)+";"))continue;var v=g.get(t),u=!v.equals(this.mident),P=null==k?null:k.get(t);if(null!=P&&null!=p){a=new JU.BS;for(l=p.entrySet().iterator();l.hasNext()&& +((r=l.next())||1);)0<=P.indexOf(":"+r.getKey()+";")&&a.or(r.getValue());null!=this.asc.bsAtoms&&a.and(this.asc.bsAtoms);P=null}for(var w=-1,y=!1,l=this.firstAtom;lP.indexOf(":"+this.acr.vwr.getChainIDStr(w=A)+";");if(!y)try{var z=q[l].atomSite,G;c&&(s[z]=this.asc.ac);G=this.asc.newCloneAtom(q[l]);G.bondingRadius=t;this.asc.atomSymbolicMap.put(""+G.atomSerial,G);null!=this.asc.bsAtoms&&this.asc.bsAtoms.set(G.index);G.atomSite= +z;u&&v.rotTrans(G);G.bsSymmetry=JU.BSUtil.newAndSetBit(t)}catch(L){if(da(L,Exception))this.asc.errorMessage="appendAtomCollection error: "+L;else throw L;}}u&&this.symmetry.addBioMoleculeOperation(v,!1);if(c)for(v=this.asc.bondIndex0;vj?Math.max(-j,h+1):Math.max(h+j,65),A.setBits(0,z-1),A.setBits(91,97),A.setBits(123,200));d=1==this.asc.structureCount?this.asc.structures[0].bsAll:null;k=new java.util.Hashtable;G=new java.util.Hashtable;l=null==d?null:new java.util.Hashtable;p=null;h=b;for(s=this.asc.ac;hz?A.nextClearBit(z): +200,200>u&&(A.set(u),e=Integer.$valueOf(this.acr.vwr.getChainID(""+String.fromCharCode(u),!0)),z=u)),null==e&&(e=Integer.$valueOf(this.acr.vwr.getChainID(v,!0))),v!==j&&(G.put(e,Integer.$valueOf(t)),null!=d&&(null!=p&&(p[1]=h),l.put(e,p=H(-1,[h,s])))),k.put(v,e)),q[h].chainID=e.intValue();if(0e-d&&c.xa||c.y>n-d&&c.ya||c.z>h-d&&c.z=c;){var g=this.asc.atoms[e].vib;null!=g&&g.scaleT(a)}});d(b,"set",function(a){this.acr=a;this.asc=a.asc;this.getSymmetry();return this},"J.adapter.smarter.AtomSetCollectionReader");d(b,"setLatticeParameter",function(a){this.symmetry.setSpaceGroup(this.doNormalize);this.symmetry.setLattice(a)},"~N");d(b,"setSpinVectors",function(){if(0this.asc.iSet|| +!this.acr.vibsFractional)return this.nVib;for(var a=this.asc.getAtomSetAtomIndex(this.asc.iSet),c=this.getBaseSymmetry(),e=this.asc.ac;--e>=a;){var g=this.asc.atoms[e].vib;null!=g&&(0c;c++)for(e=c+1;4>e;e++)b.add2(a[c],a[e]),0!=c&&b.add(a[0]),this.symmetry.toFractional(b, +!1),this.setSymmetryMinMax(b);this.symmetry.toCartesian(b,!1);b.add(a[1]);this.symmetry.toFractional(b,!1);this.setSymmetryMinMax(b);this.minXYZ=JU.P3i.new3(S(Math.min(0,Math.floor(this.rminx+0.001))),S(Math.min(0,Math.floor(this.rminy+0.001))),S(Math.min(0,Math.floor(this.rminz+0.001))));this.maxXYZ=JU.P3i.new3(S(Math.max(1,Math.ceil(this.rmaxx-0.001))),S(Math.max(1,Math.ceil(this.rmaxy-0.001))),S(Math.max(1,Math.ceil(this.rmaxz-0.001))))},"~A");d(b,"applyAllSymmetry",function(a,c){if(!(0==this.asc.ac|| +null!=c&&c.isEmpty())){var e=this.noSymmetryCount=0this.symmetryRange,r=0this.asc.bondIndex0&&this.applySymmetryToBonds?H(e,0):null;f=H(f,0);for(y=this.minXYZ.x;yq.distance(k))c.set(q.index);else{c.clear(q.index);continue}null!=c&&q.bsSymmetry.clearAll();q.bsSymmetry.set(p*g);q.bsSymmetry.set(0);s&&this.setSymmetryMinMax(L);lf;f++)b[f]=JU.P3.newP(c[f]);this.setUnitCellSafely();this.adjustRangeMinMax(b);c=new J.adapter.smarter.XtalSymmetry.FileSymmetry;c.getUnitCell(this.acr.fillRange,!1,null);this.applyAllSymmetry(this.acr.ms,a);for(var b=new JU.P3,h=this.asc.atoms,f=this.asc.ac;--f>=this.firstAtom;)b.setT(h[f]),this.symmetry.toCartesian(b,!1),c.toFractional(b,!1),(this.acr.noPack?!this.removePacking(this.ndims,b,e.x,g.x,e.y,g.y,e.z,g.z,this.packingRange):!this.isWithinCell(this.ndims, +b,e.x,g.x,e.y,g.y,e.z,g.z,this.packingRange))&&a.clear(f)},"JU.BS");d(b,"applySuperSymmetry",function(a,c,e,g,b,f,h){this.asc.setGlobalBoolean(7);var j=this.doPackUnitCell;this.doPackUnitCell=j;this.applyAllSymmetry(this.acr.ms,null);this.doPackUnitCell=j;for(var j=this.asc.atoms,d=this.asc.ac,k=e;kf.indexOf("--")&&this.asc.setCurrentModelInfo("f2cTitle",f);this.asc.setCurrentModelInfo("f2cParams",this.symmetry.getUnitCellParams());null!=this.acr.latticeType&&(this.asc.setCurrentModelInfo("latticeType",this.acr.latticeType),"string"==typeof this.acr.fillRange&&(f=this.setLatticeRange(this.acr.latticeType,this.acr.fillRange),null==f?(this.acr.appendLoadNote(this.acr.fillRange+" symmetry could not be implemented"),this.acr.fillRange=null):this.acr.fillRange=f));this.baseSymmetry=this.symmetry; +if(null!=this.acr.fillRange)this.setMinMax(this.ndims,g,a,c,e),this.applyRangeSymmetry(b);else{var f=null,h=1E-6;this.nVib=0;var j=this.acr.strSupercell,d=null!=j&&0<=j.indexOf(","),k=null,l=null,p=Array(3);d&&(k=new JU.M4,null==this.mident&&(this.mident=new JU.M4),this.setUnitCellSafely(),f=this.symmetry.getV0abc(j,k),k.transpose33(),null!=f&&!k.equals(this.mident)&&(this.setMinMax(this.ndims,g,a,c,e),l=JU.P3.newP(f[0]),p[0]=JU.V3.newV(f[1]),p[1]=JU.V3.newV(f[2]),p[2]=JU.V3.newV(f[3]),this.adjustRangeMinMax(f))); +d=this.asc.getLastAtomSetAtomIndex();null!=b&&(d=b.nextSetBit(d));3.4028235E38==this.rminx?f=null:(b=this.updateBSAtoms(),h=this.symmetry.getPrecision(),this.applySuperSymmetry(j,b,d,f,l,p,h));this.setMinMax(this.ndims,g,a,c,e);if(null==f){this.applyAllSymmetry(this.acr.ms,b);if(!this.acr.noPack&&(!this.applySymmetryToBonds||!this.acr.doPackUnitCell))return;this.setMinMax(this.ndims,g,a,c,e)}(this.acr.forcePacked||this.acr.doPackUnitCell||this.acr.noPack)&&this.trimToUnitCell(d);this.updateSupercellAtomSites(k, +b,h)}}});d(b,"duplicateAtomProperties",function(a){var c=this.asc.getAtomSetAuxiliaryInfoValue(-1,"atomProperties");if(null!=c)for(var e,g=c.entrySet().iterator();g.hasNext()&&((e=g.next())||1);){var b=e.getKey(),f=e.getValue();if("string"==typeof f){for(var h=f,j=new JU.SB,f=a;0<=--f;)j.append(h);c.put(b,j.toString())}else{b=f;h=C(b.length*a,0);for(f=a;0<=--f;)System.arraycopy(b,0,h,f*b.length,b.length)}}},"~N");d(b,"finalizeSymmetry",function(a){var c=this.asc.getAtomSetAuxiliaryInfoValue(-1,"spaceGroup"); +a.setFinalOperations(this.ndims,c,this.asc.atoms,this.firstAtom,this.noSymmetryCount,this.doNormalize,this.filterSymop);(null!=this.filterSymop||null==c||c.equals("unspecified!"))&&this.setAtomSetSpaceGroupName(a.getSpaceGroupName());null!=this.unitCellParams||Float.isNaN(this.acr.unitCellParams[0])||(a.fixUnitCell(this.acr.unitCellParams)&&this.acr.appendLoadNote("Unit cell parameters were adjusted to match space group!"),this.setUnitCellSafely())},"J.adapter.smarter.XtalSymmetry.FileSymmetry"); +d(b,"removePacking",function(a,c,e,g,b,f,h,j,d){return c.x>e-d&&c.xa||c.y>b-d&&c.ya||c.z>h-d&&c.z=this.latticeCells[0]&&555<=this.latticeCells[1]&&(0==this.latticeCells[2]||1==this.latticeCells[2]||-1==this.latticeCells[2]);this.doNormalize=0!=this.latticeCells[0]&&(!a||1==this.latticeCells[2]);this.applySymmetryToBonds=this.acr.applySymmetryToBonds;this.doPackUnitCell=this.acr.doPackUnitCell&&!this.applySymmetryToBonds;this.doCentroidUnitCell=this.acr.doCentroidUnitCell;this.centroidPacked=this.acr.centroidPacked;this.filterSymop=this.acr.filterSymop});d(b,"setLatticeRange", +function(a,c){var e=null,g="R".equals(a);c.equals("conventional")?e=this.symmetry.getConventionalUnitCell(a,this.acr.primitiveToCrystal):c.equals("primitive")?(e=this.symmetry.getUnitCellVectors(),this.symmetry.toFromPrimitive(!0,a.charAt(0),e,this.acr.primitiveToCrystal)):g&&c.equals("rhombohedral")?c=1==this.symmetry.getUnitCellInfoType(7)?"2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c":null:g&&c.equals("trigonal")?c=1==this.symmetry.getUnitCellInfoType(8)?"a-b,b-c,a+b+c":null:(0>c.indexOf(",")|| +0>c.indexOf("a")||0>c.indexOf("b")||c.indexOf("c"),c=null);if(null!=c&&null==e&&null==(e=this.symmetry.getV0abc(c,null)))c=null;if(null==c)return null;this.acr.addJmolScript("unitcell "+JU.PT.esc(c));return e},"~S,~S");d(b,"setMinMax",function(a,c,e,g,b){this.minXYZ=new JU.P3i;this.maxXYZ=JU.P3i.new3(e,g,b);JU.SimpleUnitCell.setMinMaxLatticeParameters(a,this.minXYZ,this.maxXYZ,c)},"~N,~N,~N,~N,~N");d(b,"setSymmetryMinMax",function(a){this.rminx>a.x&&(this.rminx=a.x);this.rminy>a.y&&(this.rminy=a.y); +this.rminz>a.z&&(this.rminz=a.z);this.rmaxxthis.symmetryRange,s=0this.asc.firstAtomToBond?A:this.asc.firstAtomToBond, +E=new JU.P3,O=null,C=G?0.01:1E-4,U="\x00",H=null==x?this.firstAtom:x.nextSetBit(this.firstAtom),N=0;a:for(;N=r?0:0==this.asc.vibScale?B.getSpinOp(N):this.asc.vibScale,ca=Math.max(this.firstAtom,null==x?0:x.nextSetBit(0)),Q=z,ga=N>=r?S((N-r)/u):N,ha=ga+f;ca=r?v.get(N- +r):null,a,c,e,E):(B=j.getAtomSymmetry(R,this.symmetry),B.newSpaceGroupPoint(R,N,null,a,c,e,E),O=B.getSpaceGroupOperationCode(N),null!=O&&(U=O.charAt(0),B=j.getSymmetryFromCode(O),0==B.getSpaceGroupOperationCount()&&this.finalizeSymmetry(B)));this.acr.fixFloatPt(E,1E5);var aa=JU.P3.newP(E);B.toCartesian(aa,!1);if(this.doPackUnitCell&&(B.toUnitCellRnd(aa,this.ptOffset),E.setT(aa),B.toFractional(E,!1),this.acr.fixFloatPt(E,1E5),!this.isWithinCell(this.ndims,E,this.minXYZ0.x,this.maxXYZ0.x,this.minXYZ0.y, +this.maxXYZ0.y,this.minXYZ0.z,this.maxXYZ0.z,this.packingRange)))continue;t&&this.setSymmetryMinMax(aa);var I=null;if(Q){if(y&&(aa.xthis.rmaxx||aa.y>this.rmaxy||aa.z>this.rmaxz))continue;for(var K=3.4028235E38,ka=this.checkAll?this.asc.ac:V,T=R.atomName,M=null==O?R.altLoc:U,W=H;Wq)continue}G&&(Q=!1);W=R.atomSite;if(null!=I)p&&(k[W]=I.index),I.bsSymmetry.set(ha),I.bsSymmetry.set(ga);else{p&&(k[W]=this.asc.ac);I=R.copyTo(E,this.asc);null!=this.asc.bsAtoms&&this.asc.bsAtoms.set(I.index);0!=$&&null!=I.vib&&(B.getSpaceGroupOperation(N).rotate(I.vib),I.vib.scale($));if(I.isNegDisorder){null==this.disorderMap&&(this.disorderMap=new java.util.Hashtable);var Y=Integer.$valueOf(1E3*N+I.altLoc.charCodeAt(0)), +K=this.disorderMap.get(Y);if(null==K){if(0==this.disorderMapMax||90==this.disorderMapMax)this.disorderMapMax=64;this.disorderMap.put(Y,K=new Character(String.fromCharCode(++this.disorderMapMax)))}I.altLoc=K.charValue()}I.atomSite=W;null!=O&&(I.altLoc=U);I.bsSymmetry=JU.BSUtil.newAndSetBit(ha);I.bsSymmetry.set(ga);L&&(h[b++]=aa);R=R.tensors;if(null!=R){I.tensors=null;for(W=R.size();0<=--W;)aa=R.get(W),null!=aa&&(1==r?I.addTensor(aa.copyTensor(),null,!1):this.addRotatedTensor(I,aa,N,!1,B))}}}}if(p){V= +this.asc.bonds;$=this.asc.atoms;for(Q=this.asc.bondIndex0;QR&&(ca=ha,ha=R,R=ca),ha!=R&&(ha>=D||R>=D)&&0>this.bondsFound.indexOf(Y="-"+ha+","+R))this.bondsFound.append(Y),this.asc.addNewBondWithOrder(ha,R,ga.order)}}return b},"~N,~N,~N,~N,~N,~N,~A,J.adapter.smarter.MSInterface,JU.BS,~A");d(b,"trimToUnitCell",function(a){var c=this.asc.atoms, +e=this.updateBSAtoms();if(this.acr.noPack)for(a=e.nextSetBit(a);0<=a;a=e.nextSetBit(a+1))this.removePacking(this.ndims,c[a],this.minXYZ.x,this.maxXYZ.x,this.minXYZ.y,this.maxXYZ.y,this.minXYZ.z,this.maxXYZ.z,this.packingRange)||e.clear(a);else for(a=e.nextSetBit(a);0<=a;a=e.nextSetBit(a+1))this.isWithinCell(this.ndims,c[a],this.minXYZ.x,this.maxXYZ.x,this.minXYZ.y,this.maxXYZ.y,this.minXYZ.z,this.maxXYZ.z,this.packingRange)||e.clear(a)},"~N");d(b,"updateBSAtoms",function(){var a=this.asc.bsAtoms; +null==a&&(a=this.asc.bsAtoms=JU.BSUtil.newBitSet2(0,this.asc.ac));0>a.nextSetBit(this.firstAtom)&&a.setBits(this.firstAtom,this.asc.ac);return a});d(b,"updateSupercellAtomSites",function(a,c,e){for(var g=c.cardinality(),g=Array(g),b=0,f=e*e,h=c.nextSetBit(0);0<=h;h=c.nextSetBit(h+1)){var j=this.asc.atoms[h],d=new J.adapter.smarter.Atom;d.setT(j);null!=a&&(a.rotTrans(d),JU.SimpleUnitCell.unitizeDimRnd(3,d,e));d.atomSerial=j.atomSite;d.atomSite=j.atomSite;this.symmetry.unitize(d);for(var k=!1,l=0;l< +b;l++){var p=g[l];if(d.atomSerial==p.atomSerial&&d.distanceSquared(p)=this.spaceGroup.operations.length?null:null==this.spaceGroup.finalOperations?this.spaceGroup.operations[a]:this.spaceGroup.finalOperations[a]},"~N");r(b,"getSpaceGroupXyz",function(a,c){return this.spaceGroup.getXyz(a,c)},"~N,~B");r(b,"newSpaceGroupPoint",function(a,c,e,g,b,f,h){null==e&&null==this.spaceGroup.finalOperations&&(e=this.spaceGroup.operations[c],e.isFinalized||e.doFinalize());JS.SymmetryOperation.rotateAndTranslatePoint(null== +e?this.spaceGroup.finalOperations[c]:e,a,g,b,f,h)},"JU.P3,~N,JU.M4,~N,~N,~N,JU.P3");r(b,"rotateAxes",function(a,c,e,g){return 0==a?c:this.spaceGroup.finalOperations[a].rotateAxes(c,this.unitCell,e,g)},"~N,~A,JU.P3,JU.M3");r(b,"getSpinOp",function(a){return this.spaceGroup.operations[a].getMagneticOp()},"~N");r(b,"getLatticeOp",function(){return this.spaceGroup.latticeOp});r(b,"getLatticeCentering",function(){return JS.SymmetryOperation.getLatticeCentering(this.getSymmetryOperations())});r(b,"getOperationRsVs", +function(a){return(null==this.spaceGroup.finalOperations?this.spaceGroup.operations:this.spaceGroup.finalOperations)[a].rsvs},"~N");r(b,"getSiteMultiplicity",function(a){return this.spaceGroup.getSiteMultiplicity(a,this.unitCell)},"JU.P3");r(b,"getSpaceGroupName",function(){return null!=this.spaceGroup?this.spaceGroup.getName():null!=this.symmetryInfo?this.symmetryInfo.sgName:null!=this.unitCell&&0e[3]||a.y+5E-6<=e[1]||a.y-5E-6>e[4]||a.z+5E-6<=e[2]||a.z-5E-6>e[5]:a.x+5E-6<=e[0]||a.x+5E-5>e[3]||a.y+5E-6<=e[1]|| +a.y+5E-5>e[4]||a.z+5E-6<=e[2]||a.z+5E-5>e[5]},"JU.P3,~N,~A,~B");d(b,"getDesc",function(a){return null==a?null==JS.Symmetry.nullDesc?JS.Symmetry.nullDesc=J.api.Interface.getInterface("JS.SymmetryDesc",null,"modelkit"):JS.Symmetry.nullDesc:(null==this.desc?this.desc=J.api.Interface.getInterface("JS.SymmetryDesc",a.vwr,"eval"):this.desc).set(a)},"JM.ModelSet");r(b,"getSymmetryInfoAtom",function(a,c,e,g,b,f,h,d,m,k,l,p,q){return this.getDesc(a).getSymopInfo(c,e,g,b,f,h,d,m,k,l,p,q)},"JM.ModelSet,~N,~S,~N,JU.P3,JU.P3,JU.P3,~S,~N,~N,~N,~N,~A"); +r(b,"getSpaceGroupInfo",function(a,c,e,g,b){var f=null==c;if(null==c){var h=a.getModelAuxiliaryInfo(a.vwr.am.cmi);null!=h&&(c=h.get("spaceGroup"))}h=null;null!=b&&(h=(new JS.Symmetry).setUnitCellFromParams(b,!1,NaN));return this.getDesc(a).getSpaceGroupInfo(this,e,c,0,null,null,null,0,-1,g,f,0,h,null)},"JM.ModelSet,~S,~N,~B,~A");r(b,"getV0abc",function(a,c){var e=null,e=a&&a[0]?a[0]:null;return(null!=e?U(e,"JU.T3"):U(a,Array))?a:JS.UnitCell.getMatrixAndUnitCell(this.unitCell,a,c)},"~O,JU.M4");r(b, +"getQuaternionRotation",function(a){return null==this.unitCell?null:this.unitCell.getQuaternionRotation(a)},"~S");r(b,"getFractionalOrigin",function(){return this.unitCell.getFractionalOrigin()});r(b,"getState",function(a,c,e){var g=null!=a.getInfo(c,"spaceGroupAssigned"),b=this.getFractionalOffset(),f=!1;if(null!=b&&(0!=b.x||0!=b.y||0!=b.z))e.append("; set unitcell ").append(JU.Escape.eP(b)),f=!0;b=this.getUnitCellMultiplier();null!=b&&(e.append("; set unitcell ").append(JU.SimpleUnitCell.escapeMultiplier(b)), +f=!0);b=a.getInfo(c,"spaceGroup");g&&null!=b&&(a="\n UNITCELL "+JU.Escape.e(a.getUnitCell(c).getUnitCellVectors()),e.append(a),e.append("\n MODELKIT SPACEGROUP "+JU.PT.esc(b)),e.append(a),f=!0);return f},"JM.ModelSet,~N,JU.SB");r(b,"getIterator",function(a,c,e,g){return J.api.Interface.getInterface("JS.UnitCellIterator",a,"script").set(this,c,a.ms.at,e,g)},"JV.Viewer,JM.Atom,JU.BS,~N");r(b,"toFromPrimitive",function(a,c,e,g){null==this.unitCell&&(this.unitCell=JS.UnitCell.fromOABC(e,!1));return this.unitCell.toFromPrimitive(a, +c,e,g)},"~B,~S,~A,JU.M3");r(b,"generateCrystalClass",function(a){if(null==this.symmetryInfo||!this.symmetryInfo.isCurrentCell)return null;var c=this.getSymmetryOperations(),e=new JU.Lst,g=null==a,b=0,f=0,h=0;g?(b=2.718281828459045,f=3.141592653589793,h=Math.log10(2E3),a=JU.P3.new3(b+1,f+2,h+3)):a=JU.P3.newP(a);if(null==c||null==this.unitCell)e.addLast(a);else{this.unitCell.toFractional(a,!0);var d=null,m=null;g&&(d=JU.P3.new3(f+4,h+5,b+6),this.unitCell.toFractional(d,!0),m=JU.P3.new3(h+7,b+8,f+9), +this.unitCell.toFractional(m,!0));var f=new J.bspt.Bspt(3,0),h=f.allocateCubeIterator(),b=new JU.P3,k=c.length;a:for(;0<=--k;){c[k].rotate2(a,b);h.initialize(b,0.001,!1);if(h.hasMoreElements())continue a;var l=JU.P3.newP(b);e.addLast(l);f.addTuple(l);g&&(null!=m&&(c[k].rotate2(m,b),e.addLast(JU.P3.newP(b))),null!=d&&(c[k].rotate2(d,b),e.addLast(JU.P3.newP(b))))}for(c=e.size();0<=--c;)b=e.get(c),g&&b.scale(0.5),this.unitCell.toCartesian(b,!0)}return e},"JU.P3");r(b,"calculateCIPChiralityForAtoms", +function(a,c){a.setCursor(3);var e=this.getCIPChirality(a),g=a.getBoolean(603979960)?"CIPData":"CIPDataTracker",g=J.api.Interface.getInterface("JS."+g,a,"script").set(a,c);g.setRule6Full(a.getBoolean(603979823));e.getChiralityForAtoms(g);a.setCursor(0)},"JV.Viewer,JU.BS");r(b,"calculateCIPChiralityForSmiles",function(a,c){a.setCursor(3);var e=this.getCIPChirality(a),g=J.api.Interface.getInterface("JS.CIPDataSmiles",a,"script").setAtomsForSmiles(a,c);e.getChiralityForAtoms(g);a.setCursor(0);return g.getSmilesChiralityArray()}, +"JV.Viewer,~S");d(b,"getCIPChirality",function(a){return null==this.cip?this.cip=J.api.Interface.getInterface("JS.CIPChirality",a,"script"):this.cip},"JV.Viewer");r(b,"getUnitCellInfoMap",function(){return null==this.unitCell?null:this.unitCell.getInfo()});r(b,"setUnitCell",function(a){this.unitCell=JS.UnitCell.cloneUnitCell(a.unitCell)},"J.api.SymmetryInterface");r(b,"findSpaceGroup",function(a,c,e,g,b,f,h){return J.api.Interface.getInterface("JS.SpaceGroupFinder",a,"eval").findSpaceGroup(a,c,e, +g,b,f,this,h)},"JV.Viewer,JU.BS,~S,~A,JU.T3,~A,~N");r(b,"setSpaceGroupName",function(a){this.symmetryInfo=null;null!=this.spaceGroup&&this.spaceGroup.setName(a)},"~S");r(b,"setSpaceGroupTo",function(a){this.symmetryInfo=null;this.spaceGroup=U(a,"JS.SpaceGroup")?a:JS.SpaceGroup.getSpaceGroupFromJmolClegOrITA(a.toString())},"~O");r(b,"removeDuplicates",function(a,c,e){var g=this.unitCell,b=a.at;a=a.occupancies;for(var f=null!=a,h=Array(c.length()),d=c.nextSetBit(0);0<=d;d=c.nextSetBit(d+1)){var m=h[d]= +JU.P3.newP(b[d]);g.toFractional(m,!1);e?g.unitizeRnd(m):g.unitize(m)}for(d=c.nextSetBit(0);0<=d;d=c.nextSetBit(d+1)){e=b[d];m=h[d];e=e.getAtomicAndIsotopeNumber();for(var g=f?a[d]:0,k=c.nextSetBit(d+1);0<=k;k=c.nextSetBit(k+1))e!=b[k].getAtomicAndIsotopeNumber()||f&&g!=a[k]||1.96E-6>m.distanceSquared(h[k])&&c.clear(k)}return c},"JM.ModelSet,JU.BS,~B");r(b,"getEquivPoints",function(a,c,e){var g=this.getSymmetryOperations();return null==g||null==this.unitCell?null:this.unitCell.getEquivPoints(c,e,g, +null==a?new JU.Lst:a,0,0,0)},"JU.Lst,JU.P3,~S");r(b,"getEquivPointList",function(a,c,e,g){var b=null==g?this.getSymmetryOperations():g,f=0<=e.indexOf("newpt"),h=0<=e.indexOf("zapped"),d=a.size(),m=0<=e.indexOf("tofractional");if(0>e.indexOf("fromfractional"))for(var k=0;k=c;)this.toCartesian(a.get(k),!1)},"JU.Lst,~N,~S,~A");r(b,"getInvariantSymops",function(a,c){var e=this.getSymmetryOperations();if(null==e)return H(0,0);for(var g=new JU.BS,b=new JU.P3,f=new JU.P3,h=e.length,d=1;df.distanceSquared(b)&&g.set(d);e=H(g.cardinality(), +0);if(null!=c&&e.length!=c.length)return null;b=0;for(d=1;de,d=0==e&&0==g,j=0==e&&0>g,m=0==e&&0b,k=0==e&&0g,p=0b,q=0G?-1/G:G);z.equals("ct")?y=3:z.equals("eu")&&(y=4);var x=A.get("trm").size();r[u]=H(-1,[w,x,C,L,y])}}if(j){var B=H(v.cardinality(),0);c=0;for(u=v.nextSetBit(0);0<=u;u=v.nextSetBit(u+1))B[c++]=u;return B}return r}s=A.get("subgroups");v=0;t=s.size();if(m||k){if(g>t)throw new ArrayIndexOutOfBoundsException("no map.subgroups["+ +g+"]!");v=g-1;if(m)return s.get(v);t=g}for(var D=l?new JU.Lst:null,u=v;ub||b>t?null:E.get(b-1).substring(2)}}if(l&&!D.isEmpty())return D}if(0==g)return null;if(q&&0>"+e+"!");throw new ArrayIndexOutOfBoundsException("no maximal subgroup information for "+ +c+">>"+e+"!");}catch(O){if(da(O,Exception))return O.getMessage();throw O;}},"JV.Viewer,~N,~N,~N,~N");r(b,"getSpaceGroupJSON",function(a,c,e,g){var b=c.equals("settings"),f=!b&&c.equals("subgroups"),d=(b||f)&&-2147483648==g,j=!b&&!f?c:d?this.getSpaceGroupName():""+g;try{var m,k=null,l,p,q;if(b||f)if(p=!0,q=b?e:null,d){if(m=JU.PT.parseInt(this.getIntTableNumber()),b)if(null==this.spaceGroup){var r=this.symmetryInfo.getDerivedSpaceGroup();if(null==r)return new java.util.Hashtable;q=r.jmolId}else q=this.getIntTableNumberFull()}else m= +g;else{q=e;var s=q.indexOf("(");0>s&&(s=q.indexOf(":"));if(l=0<=s&&q.indexOf(",")>s)k=q.substring(s+1,q.length-(q.endsWith(")")?1:0)),q=q.substring(0,s),d=!0;m=q.equalsIgnoreCase("ALL")?0:JU.PT.parseInt(q);p=-2147483648!=m;s=q.indexOf(".");!l&&(p&&0==g&&0m:0>m)))throw new ArrayIndexOutOfBoundsException(m);if(f){null==JS.Symmetry.itaSubData&&(JS.Symmetry.itaSubData=Array(230));var t=JS.Symmetry.itaSubData[m-1];null==t&& +(JS.Symmetry.itaSubData[m-1]=t=this.getResource(a,"sg/json/sub_"+m+".json"));if(null!=t)return t}else if(b||c.equalsIgnoreCase("ITA")){if(0==m)return null==JS.Symmetry.allDataITA&&(JS.Symmetry.allDataITA=this.getResource(a,"sg/json/ita_all.json")),JS.Symmetry.allDataITA;null==JS.Symmetry.itaData&&(JS.Symmetry.itaData=Array(230));t=JS.Symmetry.itaData[m-1];null==t&&(JS.Symmetry.itaData[m-1]=t=this.getResource(a,"sg/json/ita_"+m+".json"));if(null!=t){if(0==g&&null==k)return t;var w=t.get("its");if(null!= +w){if(b&&!d)return w;var v=w.size(),u=p&&!d?g:v;if(u>v)return null;for(v=null;0<=--u;){v=w.get(u);if(u==g-1||(null==k?q.equals(v.get("jmolId")):k.equals(v.get("trm")))){System.out.println(k);System.out.println(v);if(!v.containsKey("more"))return v;break}v=null}if(null!=v)return JS.SpaceGroup.fillMoreData(v,v.get("clegId"),m,w.get(0))}}}else if(c.equalsIgnoreCase("AFLOW")&&null==k){null==JS.Symmetry.aflowStructures&&(JS.Symmetry.aflowStructures=this.getResource(a,"sg/json/aflow_structures.json")); +if(0==m)return JS.Symmetry.aflowStructures;if(-2147483648==m){g=null;q.endsWith("*")&&(g=new JU.Lst,q=q.substring(0,q.length-1));for(d=1;230>=d;d++)for(var P=JS.Symmetry.aflowStructures.get(""+d),u=0,v=P.size();u=g;g++)this.toFractional(e[g],!0),c.rotate(e[g]),this.toCartesian(e[g],!0);c=new JU.P3;a.getTranslation(c);this.toCartesian(c,!0);e[0].add(c);this.unitCell=JS.UnitCell.fromOABC(e,!1)},"JU.M4");r(b,"getITASettingValue",function(a,c,e){a=this.getSpaceGroupJSON(a,"ITA",c,0);return U(a,"java.util.Map")? +a.get(e):a},"JV.Viewer,~S,~S");r(b,"staticCleanTransform",function(a){return JS.SymmetryOperation.getTransformABC(JS.UnitCell.toTrm(a,null),!0)},"~S");r(b,"replaceTransformMatrix",function(a){var c=this.transformMatrix;this.transformMatrix=a;return c},"JU.M4");r(b,"getUnitCellDisplayName",function(){var a=null!=this.symmetryInfo?this.symmetryInfo.getDisplayName(this):null!=this.spaceGroup?this.spaceGroup.getDisplayName():null;return 0=f&&(f=0.01);0>=d&&(d=0.5);0>=j&&(j=250);k.distanceTolerance=f;k.distanceTolerance2=f*f;k.linearTolerance=d;k.maxAtoms=j;k.isAtoms=null!=g;k.bsAtoms=k.isAtoms?g:JU.BSUtil.newBitSet2(0,e.length);k.haveVibration=b;k.center=c;k.localEnvOnly=m;k.sppa=l;JU.Logger.debugging&&(a=null);return k.set(a,e)?k:a},"JS.PointGroup,JU.T3,~A,JU.BS,~B,~N,~N,~N,~B,~B,~N");d(b,"isEqual", +function(a){if(null==a||(this.convention!=a.convention||this.linearTolerance!=a.linearTolerance||this.distanceTolerance!=a.distanceTolerance||this.nAtoms!=a.nAtoms||this.localEnvOnly!=a.localEnvOnly||this.haveVibration!=a.haveVibration||null==this.bsAtoms?null!=a.bsAtoms:!this.bsAtoms.equals(a.bsAtoms)))return!1;for(var c=0;cf){if(1==e)return this.name="Cs",!0;if(this.haveInversionCenter)return this.name="Ci",!0;this.name="C1"}else 1==f%2&&0f?"S"+f:"D"+(f-14):(f=14>f?S(f/2):f-14,this.name=e==f?"D"+f+"d":"D"+f+"h")):0==e?(this.principalAxis= +this.axes[f][0],this.name=14>f?"S"+f:"C"+(f-14)):e==f-14?(this.principalAxis=this.axes[f][0],this.name="C"+e+"v"):(this.principalAxis=this.axes[14>f?f+14:f][0],this.principalPlane=this.axes[0][0],this.name="C"+(14>f?f/2:f-14)+"h")}catch(d){if(da(d,Exception))this.name="??";else throw d;}finally{JU.Logger.info("Point group found: "+this.name)}return!0},"JS.PointGroup,~A");d(b,"setPrincipalAxis",function(a,c){var e=this.setPrincipalPlane(a,c);if(0==c&&14>a||1==this.nAxes[a])return this.axes[a][0];if(null== +e)return null;for(var g=0;gthis.maxAtoms)return!1;this.points=Array(c);this.elements=H(c,0);if(0==c)return!0;for(var e=0,c=this.bsAtoms.nextSetBit(0);0<=c;c=this.bsAtoms.nextSetBit(c+1)){var g=a[c];U(g,"JU.Node")&&(e=Math.max(e,g.i))}this.atomMap=H(e+1,0);this.nAtoms=0;if(e=null==this.center)this.center=new JU.P3; +for(var b=new J.bspt.Bspt(3,0),c=this.bsAtoms.nextSetBit(0);0<=c;c=this.bsAtoms.nextSetBit(c+1),this.nAtoms++){g=a[c];if(U(g,"JU.Node")){var f=this.localEnvOnly?1:1+Math.max(3,g.getCovalentBondCount());this.elements[this.nAtoms]=g.getElementNumber()*f;this.atomMap[g.i]=this.nAtoms+1}else f=new JU.Point3fi,f.setT(g),f.i=-1-this.nAtoms,U(g,"JU.Point3fi")&&(this.elements[this.nAtoms]=Math.max(0,g.sD)),g=f;b.addTuple(g);e&&this.center.add(g);this.points[this.nAtoms]=g}this.iter=b.allocateCubeIterator(); +e&&this.center.scale(1/this.nAtoms);for(c=this.nAtoms;0<=--c;)a=this.center.distanceSquared(this.points[c]),this.isAtoms&&athis.radius&&0.15e;var f=this.points.length,d=f;a:for(;0<=--d&&b=this.elements.length||this.elements[l]!=m)&&g.distanceSquared(k)a?-a:this.atomMap[a])-1},"~N");d(b,"isLinear", +function(a){var c=null;if(2>a.length)return!1;for(var e=a.length;0<=--e;)if(e!=this.centerAtomIndex)if(null==c)c=new JU.V3,c.sub2(a[e],this.center),c.normalize(),this.vTemp.setT(c);else if(this.vTemp.sub2(a[e],this.center),this.vTemp.normalize(),!this.isParallel(c,this.vTemp))return!1;return!0},"~A");d(b,"isParallel",function(a,c){return Math.abs(a.dot(c))>=this.cosTolerance},"JU.V3,JU.V3");d(b,"isPerpendicular",function(a,c){return Math.abs(a.dot(c))<=1-this.cosTolerance},"JU.V3,JU.V3");d(b,"getElementCounts", +function(){for(var a=this.points.length;0<=--a;){var c=this.elements[a];c>this.maxElement&&(this.maxElement=c)}this.eCounts=H(++this.maxElement,0);for(a=this.points.length;0<=--a;)this.eCounts[this.elements[a]]++});d(b,"findCAxes",function(){for(var a=new JU.V3,c=new JU.V3,e=new JU.V3,g=this.points.length;0<=--g;)if(g!=this.centerAtomIndex)for(var b=this.points[g],f=this.elements[g],d=this.points.length;--d>g;){var j=this.points[d];if(this.elements[d]==f)if(a.sub2(b,this.center),c.sub2(j,this.center), +a.normalize(),c.normalize(),this.isParallel(a,c))this.getAllAxes(a);else{this.nAxes[16]=j-m&&!((m+=14)>=JS.PointGroup.maxAxis)&&this.nAxes[m]e.length()||this.checkAxisOrder(17,e,this.center);d=2147483647;b=-1;for(g=0;gh;)if(!(f&&this.elements[k]!=m)&&(d=this.points[k],a.add2(j,d),a.scale(0.5),c.sub2(j,this.center),e.sub2(d,this.center),c.normalize(),e.normalize(),this.isParallel(c,e)||(b.cross(c,e),b.normalize(),this.getPlane(b)),b.sub2(d,j),b.normalize(),d=this.getPlane(b),d==JS.PointGroup.axesMaxN[0]))return d;if(f)for(h=16;hc?180:0)+(0==c?0:S(360/(c%14))))},"JU.V3,~N");d(b,"getInfo",function(a,c,e,b,d,f){var h=null!=c;this.info=e?new java.util.Hashtable:null;var j= +new JU.V3,m;0==f&&(f=1);this.scale=f;for(var k=H(4,2,0),l=1;ll?"S":"C")+l%14),q.append(" n").append(k),q.append("=").appendI(this.nAxes[l]));q.append(";\n");q.append("print '"+r+"';\n");this.drawInfo=q.toString();JU.Logger.debugging&&JU.Logger.info(this.drawInfo);return this.drawInfo}p=0;c=1;b=0;l=this.haveInversionCenter?this.getConventionalName("Ci"): +"center";this.haveInversionCenter&&(c++,b++);e?null!=this.center&&(this.info.put(l,this.center),this.haveInversionCenter&&this.info.put("center",this.center),this.info.put(l,this.center)):q.append("\n\n").append(r).append("\t").append(l).append("\t").append(JU.Escape.eP(this.center));for(l=JS.PointGroup.maxAxis;0<=--l;)if(0h;h++){var j=b[h];0e?2:1;this.typeOrder=e;this.order=e%14;this.normalOrAxis=JU.Quat.newVA(a,180).getNormal();JU.Logger.debugging&&JU.Logger.debug("new operation -- "+(this.order==e?"S":"C")+this.order+" "+this.normalOrAxis)},"JU.V3,~N");Z(a,function(a){null!=a&&(this.index=++this.b$["JS.PointGroup"].nOps,this.type=0,this.normalOrAxis=JU.Quat.newVA(a,180).getNormal(),JU.Logger.debugging&&JU.Logger.debug("new operation -- plane "+this.normalOrAxis))}, +"JU.V3");d(a,"getLabel",function(a){var e;switch(this.type){case 0:e="Cs";break;case 2:e="S"+this.order;break;default:e="C"+this.order}return a?this.b$["JS.PointGroup"].getConventionalName(e):e},"~B");d(a,"getM3",function(){if(null!=this.mat)return this.mat;var a=JU.M3.newM3(JS.PointGroup.getQuaternion(this.normalOrAxis,this.typeOrder).getMatrix());(0==this.type||2==this.type)&&a.mul(JS.PointGroup.mInv);this.cleanMatrix(a);return this.mat=a});d(a,"cleanMatrix",function(a){for(var e=0;3>e;e++)for(var b= +0;3>b;b++)a.setElement(e,b,this.approx0(a.getElement(e,b)))},"JU.M3");d(a,"approx0",function(a){return 1E-15a?a:0},"~N");r(a,"toString",function(){return this.getLabel(!1)+" "+this.normalOrAxis})};b.axesMaxN=H(-1,[15,0,0,1,3,1,10,0,1,0,6,0,1,0,0,0,15,10,6,6,10,0,1]);b.nUnique=H(-1,[1,0,0,2,2,4,2,0,4,0,4,0,4,0,0,0,1,2,2,4,2,0,4]);b.maxAxis=JS.PointGroup.axesMaxN.length;b.typeNames=Q(-1,["plane","proper axis","improper axis","center of inversion"]);b.mInv=JU.M3.newA9(C(-1,[-1,0,0,0,-1,0, +0,0,-1]));b.SF2HM="Cn,1,2,3,4,5,6,7,8,9,10,11,12|Cnv,m,2m,3m,4mm,5m,6mm,7m,8mm,9m,10mm,11m,12mm,\u221em|Sn,,-1,-6,-4,(-10),-3,(-14),-8,(-18),-5,(-22),(-12)|Cnh,m,2/m,-6,4/m,-10,6/m,-14,8/m,-18,10/m,-22,12/m|Dn,,222,32,422,52,622,72,822,92,(10)22,(11)2,(12)22|Dnd,,-42m,-3m,-82m,-5m,(-12)2m,-7m,(-16)2m,-9m,(-20)2m,(-11)m,(-24)2m|Dnh,,mmm,-6m2,4/mmm,(-10)m2,6/mmm,(-14)m2,8/mmm,(-18)m2,10/mmm,(-22)m2,12/mmm,\u221e/mm|Ci,-1|Cs,m|T,23|Th,m-3|Td,-43m|O,432|Oh,m-3m".$plit("\\|");b.htSFToHM=null});X("JS"); +fa(["java.util.Hashtable"],"JS.SpaceGroup","java.util.Arrays JU.AU $.Lst $.M4 $.P3 $.PT $.SB JS.HallInfo $.HallTranslation $.SymmetryOperation $.UnitCell JU.Logger".split(" "),function(){var b=ba(function(){this.xyzList=this.allOperations=this.finalOperations=this.operations=null;this.axisChoice=this.uniqueAxis="\x00";this.clegId=this.jmolId=this.itaNumber=null;this.operationCount=0;this.latticeOp=-1;this.isBio=!1;this.latticeType="P";this.itaIndex=this.itaTransform=null;this.index=0;this.derivedIndex= +-1;this.isSSG=!1;this.name="unknown!";this.hallInfo=this.jmolIdExt=this.hmSymbol=this.crystalClass=this.hallSymbolAlt=this.hallSymbol=null;this.modDim=this.latticeParameter=0;this.doNormalize=!0;this.hmSymbolAbbrShort=this.hmSymbolAlternative=this.hmSymbolAbbr=this.hmSymbolExt=this.hmSymbolFull=this.nHallOperators=this.info=null;this.ambiguityType="\x00";this.displayName=this.strName=null;M(this,arguments)},JS,"SpaceGroup",null,Cloneable);Z(b,function(a,c,e){++JS.SpaceGroup.sgIndex;0>a&&(a=JS.SpaceGroup.sgIndex); +this.index=a;this.init(e&&null==c);e&&null!=c&&this.buildSelf(c)},"~N,~S,~B");d(b,"setFrom",function(a,c){c?(this.setName(a.itaNumber.equals("0")?this.clegId:"HM:"+a.hmSymbolFull+" #"+this.clegId),this.derivedIndex=-2):(this.setName(a.getName()),this.derivedIndex=a.index);this.clegId=a.clegId;this.itaIndex=a.itaIndex;this.crystalClass=a.crystalClass;this.hallSymbol=a.hallSymbol;this.hmSymbol=a.hmSymbol;this.hmSymbolAbbr=a.hmSymbolAbbr;this.hmSymbolAbbrShort=a.hmSymbolAbbrShort;this.hmSymbolAlternative= +a.hmSymbolAlternative;this.hmSymbolExt=a.hmSymbolExt;this.hmSymbolFull=a.hmSymbolFull;this.itaNumber=a.itaNumber;this.itaTransform=a.itaTransform;this.jmolIdExt=this.jmolId=null;this.latticeType=a.latticeType;this.strName=this.displayName=null;return this},"JS.SpaceGroup,~B");b.getNull=d(b,"getNull",function(a,c,e){a=new JS.SpaceGroup(-1,null,a);a.doNormalize=c;e&&a.setFinalOperations();return a},"~B,~B,~B");d(b,"init",function(a){this.xyzList=new java.util.Hashtable;this.operationCount=0;a&&this.addSymmetry("x,y,z", +0,!1)},"~B");b.createSpaceGroup=d(b,"createSpaceGroup",function(a,c,e,b){var d=null;0<=a?d=JS.SpaceGroup.SG[a]:(d=U(e,"JU.Lst")?JS.SpaceGroup.createSGFromList(c,e):JS.SpaceGroup.determineSpaceGroupNA(c,e),null==d&&(d=JS.SpaceGroup.createSpaceGroupN(0>=b?c:"x1,x2,x3,x4,x5,x6,x7,x8,x9".substring(0,3*b+8))));null!=d&&d.generateAllOperators(null);return d},"~N,~S,~O,~N");d(b,"cloneInfoTo",function(a){try{var c=this.clone();c.operations=a.operations;c.finalOperations=a.finalOperations;c.xyzList=a.xyzList; +return c}catch(e){if(da(e,"CloneNotSupportedException"))return null;throw e;}},"JS.SpaceGroup");d(b,"getItaIndex",function(){return null!=this.itaIndex&&!"--".equals(this.itaIndex)?this.itaIndex:!"0".equals(this.itaNumber)?this.itaNumber:!"--".equals(this.hallSymbol)?"["+this.hallSymbol+"]":"?"});d(b,"getIndex",function(){return 0<=this.derivedIndex?this.derivedIndex:this.index});b.createSGFromList=d(b,"createSGFromList",function(a,c){var e=new JS.SpaceGroup(-1,"0;--;--;0;--;--;--",!0);e.doNormalize= +!1;e.setName(a);for(var b=c.size(),d=0;da.indexOf("[[")&&0>a.indexOf("x4")&&0>a.indexOf(";")&&(0>a.indexOf("x")||0>a.indexOf("y")||0>a.indexOf("z"))?-1:this.addOperation(a,c,e)},"~S,~N,~B");d(b,"setFinalOperations", +function(){this.setFinalOperationsForAtoms(3,null,0,0,!1)});d(b,"setFinalOperationsForAtoms",function(a,c,e,b,d){if(null==this.hallInfo&&0!=this.latticeParameter){var f=new JS.HallInfo(JS.HallTranslation.getHallLatticeEquivalent(this.latticeParameter));this.generateAllOperators(f)}this.finalOperations=null;this.isBio=0<=this.name.indexOf("bio");!this.isBio&&(this.index>=JS.SpaceGroup.SG.length&&0>this.name.indexOf("SSG:")&&0>this.name.indexOf("[subsystem"))&&(f=this.getDerivedSpaceGroup(),null!=f&& +f!==this&&this.setFrom(f,!1));0==this.operationCount&&this.addOperation("x,y,z",1,!1);this.finalOperations=Array(this.operationCount);var f=null,h=d&&0=JS.SpaceGroup.SG.length){var f=JS.SpaceGroup.findSpaceGroup(a.operationCount,a.getCanonicalSeitzList());null!=f&&(a=f)}if(null!= +e){if(null==a){0<=c.indexOf("[")&&(c=c.substring(0,c.indexOf("[")).trim());if(c.equals("unspecified!"))return"no space group identified in file";a=JS.SpaceGroup.determineSpaceGroupNA(c,e)}}else{if(c.equalsIgnoreCase("ALL"))return JS.SpaceGroup.dumpAll(b);if(c.equalsIgnoreCase("MAP"))return JS.SpaceGroup.dumpAll(!0);if(c.equalsIgnoreCase("ALLSEITZ"))return JS.SpaceGroup.dumpAllSeitz();a=JS.SpaceGroup.determineSpaceGroupN(c)}if(null==a){var h=JS.SpaceGroup.createSpaceGroupN(c);null!=h&&(h=JS.SpaceGroup.findSpaceGroup(h.operationCount, +h.getCanonicalSeitzList()));null!=h&&(a=h)}if(null!=a){if(b)return a.dumpInfoObj();for(var j=new JU.SB;null!=a;){j.append(a.dumpInfo());if(a.index>=JS.SpaceGroup.SG.length||!d)break;a=JS.SpaceGroup.determineSpaceGroupNS(c,a)}return j.toString()}return b?null:"?"}catch(m){if(da(m,Exception))return"?";throw m;}},"JS.SpaceGroup,~S,~A,~B,~B");d(b,"dumpInfo",function(){var a=this.dumpCanonicalSeitzList();if(U(a,"JS.SpaceGroup"))return a.dumpInfo();a=(new JU.SB).append("\nHermann-Mauguin symbol: ");null== +this.hmSymbol||null==this.hmSymbolExt?a.append("?"):a.append(this.hmSymbol).append(0=JS.SpaceGroup.SG.length){var c=JS.SpaceGroup.findSpaceGroup(this.operationCount,a);if(null!=c)return c.getCanonicalSeitzList()}return(0<=this.index&&this.indexa.length)return this.init(!1),-1;a=JU.PT.rep(a, +" ","");var b="="==a.charAt(0);b&&(a=a.substring(1));var d=this.checkXYZlist(a);if(0<=d)return d;if(a.startsWith("x1,x2,x3,x4")&&0==this.modDim)this.xyzList.clear(),this.operationCount=0,this.modDim=JU.PT.parseInt(a.substring(a.lastIndexOf("x")+1))-3;else if(0<=a.indexOf("m")&&(a=JU.PT.rep(a,"+m","m"),a.equals("x,y,z,m")||a.equals("x,y,z(mx,my,mz)")))this.xyzList.clear(),this.operationCount=0;c=new JS.SymmetryOperation(null,c,this.doNormalize);if(!c.setMatrixFromXYZ(a,this.modDim,e))return JU.Logger.error("couldn't interpret symmetry operation: "+ +a),-1;"!"==a.charAt(0)&&(a=a.substring(a.lastIndexOf("!")+1));return this.addOp(c,a,b)},"~S,~N,~B");d(b,"checkXYZlist",function(a){return this.xyzList.containsKey(a)?this.xyzList.get(a).intValue():-1},"~S");d(b,"addOp",function(a,c,e){var b=a.xyz;if(!e){e=this.checkXYZlist(b);if(0<=e)return e;0>this.latticeOp&&(e=JU.PT.replaceAllCharacters(0d;d++)b[d]=new JU.M4;for(d=0;da.indexOf("(")&&0>a.indexOf(":")},"~S");b.determineSpaceGroupIndex= +d(b,"determineSpaceGroupIndex",function(a,c,e,b,d,f,h,j){if(JS.SpaceGroup.isXYZList(a))return-1;0>j&&(j=JS.SpaceGroup.SG.length);a=a.trim().toLowerCase();a.startsWith("bilbao:")&&(a=a.substring(7));var m=a.indexOf("hall:");0=this.jmolIdExt.length||3==this.jmolIdExt.length&&"-"==a?(this.ambiguityType="a",this.uniqueAxis=this.jmolIdExt.charAt("-"==a?1:0)):this.jmolIdExt.contains("-")&&(this.ambiguityType="-"))},"~S");b.determineUniqueAxis=d(b,"determineUniqueAxis",function(a,c,e,b,d,f){return a==c?c==e?"\x00":"c":c==e?"a":e==a?"b":b==d?d==f?"\x00":"c":d==f?"a":f==b?"b":"\x00"},"~N,~N,~N,~N,~N,~N");d(b,"buildSelf",function(a){a=JU.PT.split(a.toLowerCase(), +";");this.jmolId=a[0].trim();this.setJmolCode(this.jmolId);var c=this.jmolId.endsWith("*");c&&(this.jmolId=this.jmolId.substring(0,this.jmolId.length-1));this.itaIndex=a[1].$replace("|",";");var e=a[2];this.itaTransform=0==e.length||e.equals("--")?"a,b,c":JU.PT.rep(e,"ab","a-b,a+b,c").$replace("|",";");this.clegId=this.itaNumber+":"+this.itaTransform;0this.modDim+3)return!1;for(var h=0;hf.distanceSquared(j)){f=null;break}}null!=f&&b.addLast(f)}return S(e/b.size())},"JU.P3,JS.UnitCell");d(b,"setName",function(a){this.name=a;null!=a&&a.startsWith("HM:")&&this.setHMSymbol(a.substring(3));this.strName=this.displayName=null},"~S");d(b,"getNameType",function(a,c){var e=null,e=a.equals("HM")?this.hmSymbol:a.equals("ITA")?this.itaNumber:a.equals("Hall")?this.hallSymbol:"?";if(null!=e)return e;null==this.info&&(this.info= +JS.SpaceGroup.getInfo(this,this.hmSymbol,c.getUnitCellParams(),!0,!1));if("string"==typeof this.info)return null;e=this.info.get(a.equals("Hall")?"HallSymbol":a.equals("ITA")?"ita":"HermannMauguinSymbol");return null==e?null:e.toString()},"~S,J.api.SymmetryInterface");b.getSpaceGroupFromJmolClegOrITA=d(b,"getSpaceGroupFromJmolClegOrITA",function(a){var c=JS.SpaceGroup.SG.length;if(0<=a.indexOf(":"))if(0<=a.indexOf(","))for(var e=0;eb;b++){a.getRow(b,e);for(var d=0;3>d;d++){var f=e[d];0>f?c[0][b]+=-e[d]:0b;b++,e++)for(d=0;3>d;d++)f=S(Math.ceil(c[b][d])),f>e&&(a=!1),c[b][d]=0==b?-f:f;return a?null:c},"JU.M4");b.getTransformedCentering=d(b,"getTransformedCentering", +function(a,c){var e=JU.M4.newM4(a);e.invert();var b=c.size(),d=new JU.P3,f=JS.SpaceGroup.getTransformRange(a);if(null!=f){for(var h=w(f[0][0]);hd?"a,b,c":c.substring(d+1),f=JS.UnitCell.toTrm(d,null),h=b.get("gp"),j=b.get("wpos"),m=j.get("cent");b=new JU.Lst;null!=m&&b.addAll(m);for(var k=b.size(),l=JS.SpaceGroup.getTransformedCentering(f,b),m=b.size(),p=j.get("pos"),j=new JU.Lst,q=new JU.M4,r=C(16,0),s=(m+1)/(k+1),k=0,t=p.size();kthis.nRotations;){var c=this.extractRotationInfo(c,a,e),b=this.rotationTerms[this.nRotations-1];a=b.order; +e=b.axisType;this.primitiveHallSymbol+=" "+b.primitiveCode}this.primitiveHallSymbol+=this.vectorCode}}catch(d){if(da(d,Exception))JU.Logger.error("Invalid Hall symbol "+d),this.nRotations=0;else throw d;}},"~S");d(b,"dumpInfo",function(){var a=new JU.SB;a.append("\nHall symbol: ").append(this.hallSymbol).append("\nprimitive Hall symbol: ").append(this.primitiveHallSymbol).append("\nlattice type: ").append(this.getLatticeDesignation());for(var c=0;cc)return"";var e=a.substring(0,c).toUpperCase();this.latticeCode=e.charAt(0);"-"==this.latticeCode&&(this.isCentrosymmetric=!0,this.latticeCode=e.charAt(1));return a.substring(c+1).trim()},"~S");d(b,"extractVectorInfo",function(a){this.vector12ths= +new JU.P3i;this.vectorCode="";var c=a.indexOf("("),e=a.indexOf(")",c);0c&&(e=a.substring(c+1,e),this.vectorCode=" ("+e+")",a=a.substring(0,c).trim(),c=e.indexOf(" "),0<=c&&(this.vector12ths.x=Integer.parseInt(e.substring(0,c)),e=e.substring(c+1).trim(),c=e.indexOf(" "),0<=c&&(this.vector12ths.y=Integer.parseInt(e.substring(0,c)),e=e.substring(c+1).trim())),this.vector12ths.z=Integer.parseInt(e));return a},"~S");d(b,"extractRotationInfo",function(a,c,e){var b=a.indexOf(" "),d;0<=b?(d=a.substring(0, +b),a=a.substring(b+1).trim()):(d=a,a="");this.rotationTerms[this.nRotations]=new JS.HallRotationTerm(this,d,c,e);this.nRotations++;return a},"~S,~N,~S");r(b,"toString",function(){return this.hallSymbol})});X("JS");fa(["JU.M4"],"JS.HallRotationTerm",["JU.SB","JS.HallRotation","$.HallTranslation","$.SymmetryOperation","JU.Logger"],function(){var b=ba(function(){this.seitzMatrix12ths=this.translation=this.rotation=this.translationString=this.lookupCode=this.primitiveCode=this.inputCode=null;this.isImproper= +!1;this.order=0;this.diagonalReferenceAxis=this.axisType="\x00";this.allPositive=!0;M(this,arguments)},JS,"HallRotationTerm",null);oa(b,function(){this.seitzMatrix12ths=new JU.M4});Z(b,function(a,c,e,b){this.inputCode=c;c+=" ";"-"==c.charAt(0)&&(this.isImproper=!0,c=c.substring(1));this.primitiveCode="";this.order=c.charAt(0).charCodeAt(0)-48;this.axisType=this.diagonalReferenceAxis="\x00";var d=2,f;switch((f=c.charAt(1)).charCodeAt(0)){case 120:case 121:case 122:switch(c.charAt(2).charCodeAt(0)){case 39:case 34:this.diagonalReferenceAxis= +f,f=c.charAt(2),d++}case 42:this.axisType=f;break;case 39:case 34:this.axisType=f;switch(c.charAt(2).charCodeAt(0)){case 120:case 121:case 122:this.diagonalReferenceAxis=c.charAt(2);d++;break;default:this.diagonalReferenceAxis=b}break;default:this.axisType=1==this.order?"_":0==a.nRotations?"z":2==a.nRotations?"*":2==e||4==e?"x":"'",c=c.substring(0,1)+this.axisType+c.substring(1)}this.primitiveCode+="_"==this.axisType?"1":c.substring(0,2);"\x00"!=this.diagonalReferenceAxis&&(c=c.substring(0,1)+this.diagonalReferenceAxis+ +this.axisType+c.substring(d),this.primitiveCode+=this.diagonalReferenceAxis,d=3);this.lookupCode=c.substring(0,d);this.rotation=JS.HallRotation.lookup(this.lookupCode);if(null==this.rotation)JU.Logger.error("Rotation lookup could not find "+this.inputCode+" ? "+this.lookupCode);else{this.translation=new JS.HallTranslation("\x00",null);this.translationString="";for(e=c.length;df;d++){var h=0;switch(c.charAt(d).charCodeAt(0)){case 32:f++;continue;case 43:case 49:h=1;break;case 45:h=-1}e[f]=h;b[f]=-h;f++}this.seitzMatrix.setA(e);this.seitzMatrixInv.setA(b)},"~S,~S");b.lookup=d(b,"lookup",function(a){for(var c=JS.HallRotation.getHallTerms().length;0<=--c;)if(JS.HallRotation.hallRotationTerms[c].rotCode.equals(a))return JS.HallRotation.hallRotationTerms[c]; +return null},"~S");b.getHallTerms=d(b,"getHallTerms",function(){return null==JS.HallRotation.hallRotationTerms?JS.HallRotation.hallRotationTerms=Q(-1,[new JS.HallRotation("1_","+00 0+0 00+"),new JS.HallRotation("2x","+00 0-0 00-"),new JS.HallRotation("2y","-00 0+0 00-"),new JS.HallRotation("2z","-00 0-0 00+"),new JS.HallRotation("2'","0-0 -00 00-"),new JS.HallRotation('2"',"0+0 +00 00-"),new JS.HallRotation("2x'","-00 00- 0-0"),new JS.HallRotation('2x"',"-00 00+ 0+0"),new JS.HallRotation("2y'","00- 0-0 -00"), +new JS.HallRotation('2y"',"00+ 0-0 +00"),new JS.HallRotation("2z'","0-0 -00 00-"),new JS.HallRotation('2z"',"0+0 +00 00-"),new JS.HallRotation("3x","+00 00- 0+-"),new JS.HallRotation("3y","-0+ 0+0 -00"),new JS.HallRotation("3z","0-0 +-0 00+"),new JS.HallRotation("3*","00+ +00 0+0"),new JS.HallRotation("4x","+00 00- 0+0"),new JS.HallRotation("4y","00+ 0+0 -00"),new JS.HallRotation("4z","0-0 +00 00+"),new JS.HallRotation("6x","+00 0+- 0+0"),new JS.HallRotation("6y","00+ 0+0 -0+"),new JS.HallRotation("6z", +"+-0 +00 00+")]):JS.HallRotation.hallRotationTerms});b.hallRotationTerms=null});X("JS");fa(null,"JS.HallTranslation",["JU.P3i"],function(){var b=ba(function(){this.translationCode="\x00";this.rotationShift12ths=this.rotationOrder=0;this.vectorShift12ths=null;M(this,arguments)},JS,"HallTranslation",null);Z(b,function(a,c){this.translationCode=a;if(null!=c){if(0<=c.z){this.vectorShift12ths=c;return}this.rotationOrder=c.x;this.rotationShift12ths=c.y}this.vectorShift12ths=new JU.P3i},"~S,JU.P3i");b.getHallLatticeEquivalent= +d(b,"getHallLatticeEquivalent",function(a){var c=JS.HallTranslation.getLatticeCode(a);return(0a&&(a=-a);return 0==a?"\x00":a>JS.HallTranslation.nLatticeTypes?JS.HallTranslation.getLatticeCode(JS.HallTranslation.getLatticeIndex(String.fromCharCode(a))): +JS.HallTranslation.latticeTranslationData[3*a].charAt(0)},"~N");b.getLatticeDesignation=d(b,"getLatticeDesignation",function(a){var c=0a&&(a=-a);return 0==a||a>JS.HallTranslation.nLatticeTypes?"":(c?"-":"")+JS.HallTranslation.getLatticeCode(a)+": "+(c?"centrosymmetric ":"")+JS.HallTranslation.latticeTranslationData[3*a+1]},"~N");b.getLatticeDesignation2=d(b,"getLatticeDesignation2",function(a,c){var e=JS.HallTranslation.getLatticeIndex(a);c||(e=-e);return JS.HallTranslation.getLatticeDesignation(e)}, +"~S,~B");b.getLatticeExtension=d(b,"getLatticeExtension",function(a,c){for(var e=1,b=3;e<=JS.HallTranslation.nLatticeTypes;e++,b+=3)if(JS.HallTranslation.latticeTranslationData[b].charAt(0)==a)return JS.HallTranslation.latticeTranslationData[b+2]+(c?" -1":"");return""},"~S,~B");b.getHallTerms=d(b,"getHallTerms",function(){return null==JS.HallTranslation.hallTranslationTerms?JS.HallTranslation.hallTranslationTerms=Q(-1,[new JS.HallTranslation("a",JU.P3i.new3(6,0,0)),new JS.HallTranslation("b",JU.P3i.new3(0, +6,0)),new JS.HallTranslation("c",JU.P3i.new3(0,0,6)),new JS.HallTranslation("n",JU.P3i.new3(6,6,6)),new JS.HallTranslation("u",JU.P3i.new3(3,0,0)),new JS.HallTranslation("v",JU.P3i.new3(0,3,0)),new JS.HallTranslation("w",JU.P3i.new3(0,0,3)),new JS.HallTranslation("d",JU.P3i.new3(3,3,3)),new JS.HallTranslation("1",JU.P3i.new3(2,6,-1)),new JS.HallTranslation("1",JU.P3i.new3(3,4,-1)),new JS.HallTranslation("2",JU.P3i.new3(3,8,-1)),new JS.HallTranslation("1",JU.P3i.new3(4,3,-1)),new JS.HallTranslation("3", +JU.P3i.new3(4,9,-1)),new JS.HallTranslation("1",JU.P3i.new3(6,2,-1)),new JS.HallTranslation("2",JU.P3i.new3(6,4,-1)),new JS.HallTranslation("4",JU.P3i.new3(6,8,-1)),new JS.HallTranslation("5",JU.P3i.new3(6,10,-1)),new JS.HallTranslation("r",JU.P3i.new3(4,8,8)),new JS.HallTranslation("s",JU.P3i.new3(8,8,4)),new JS.HallTranslation("t",JU.P3i.new3(8,4,8))]):JS.HallTranslation.hallTranslationTerms});b.getHallTranslation=d(b,"getHallTranslation",function(a,c){for(var e=null,b=JS.HallTranslation.getHallTerms().length;0<= +--b;){var d=JS.HallTranslation.hallTranslationTerms[b];if(d.translationCode==a&&(0==d.rotationOrder||d.rotationOrder==c)){e=new JS.HallTranslation(a,null);e.translationCode=a;e.rotationShift12ths=d.rotationShift12ths;e.vectorShift12ths=d.vectorShift12ths;break}}return e},"~S,~N");b.latticeTranslationData=Q(-1,"\x00;unknown;;P;primitive;;I;body-centered; 1n;R;rhombohedral; 1r 1r;F;face-centered; 1ab 1bc 1ac;A;A-centered; 1bc;B;B-centered; 1ac;C;C-centered; 1ab;S;rhombohedral(S); 1s 1s;T;rhombohedral(T); 1t 1t".split(";")); +b.nLatticeTypes=S(JS.HallTranslation.latticeTranslationData.length/3)-1;b.hallTranslationTerms=null});X("JS");fa(["JU.M4","$.P3"],"JS.SymmetryOperation","java.util.Hashtable JU.Lst $.Matrix $.Measure $.P4 $.PT $.SB $.V3 JS.UnitCell JU.BoxInfo $.Logger $.Parser".split(" "),function(){var b=ba(function(){this.xyz=this.xyzCanonical=this.xyzOriginal=null;this.doNormalize=!0;this.isFinalized=!1;this.opId=0;this.info=this.centering=null;this.opType=-1;this.opOrder=0;this.opIsCCW=this.opPlane=this.opAxis= +this.opPoint2=this.opPoint=this.opGlide=this.opTrans=null;this.isIrrelevant=!1;this.iCoincident=0;this.myLabels=null;this.modDim=0;this.rsvs=this.linearRotTrans=null;this.isBio=!1;this.sigma=null;this.number=0;this.subsystemCode=null;this.timeReversal=0;this.isCenteringOp=this.unCentered=!1;this.magOp=2147483647;this.divisor=12;this.opAxisCode=this.opX=null;this.opIsLong=!1;M(this,arguments)},JS,"SymmetryOperation",JU.M4);Z(b,function(a,c,e){ta(this,JS.SymmetryOperation,[]);this.doNormalize=e;null== +a?this.opId=c:(this.xyzOriginal=a.xyzOriginal,this.xyz=a.xyz,this.divisor=a.divisor,this.opId=a.opId,this.modDim=a.modDim,this.myLabels=a.myLabels,this.number=a.number,this.linearRotTrans=a.linearRotTrans,this.sigma=a.sigma,this.subsystemCode=a.subsystemCode,this.timeReversal=a.timeReversal,this.setMatrix(!1),a.isFinalized||this.doFinalize())},"JS.SymmetryOperation,~N,~B");d(b,"getOpName",function(a){-1==this.opType&&this.setOpTypeAndOrder();switch(this.opType){case 0:return"I";case 1:return"Trans"+ +JS.SymmetryOperation.op48(this.opTrans);case 2:return"Rot"+this.opOrder+JS.SymmetryOperation.op48(this.opPoint)+JS.SymmetryOperation.op48(this.opAxis)+this.opIsCCW;case 4:return"Inv"+JS.SymmetryOperation.op48(this.opPoint);case 8:return(0==a?"":"Plane")+this.opPlane;case 3:return 0==a?"S"+JS.SymmetryOperation.op48(this.opPoint)+JS.SymmetryOperation.op48(this.opAxis):"Screw"+this.opOrder+JS.SymmetryOperation.op48(this.opPoint)+JS.SymmetryOperation.op48(this.opAxis)+JS.SymmetryOperation.op48(this.opTrans)+ +this.opIsCCW;case 6:return"Nbar"+this.opOrder+JS.SymmetryOperation.op48(this.opPoint)+JS.SymmetryOperation.op48(this.opAxis)+this.opIsCCW;case 9:return(0==a?"":"Glide")+this.opPlane+(2==a?JS.SymmetryOperation.op48(this.opTrans):"")}System.out.println("SymmetryOperation REJECTED TYPE FOR "+this);return""},"~N");d(b,"getOpTitle",function(){-1==this.opType&&this.setOpTypeAndOrder();switch(this.opType){case 0:return"identity ";case 1:return"translation "+JS.SymmetryOperation.opFrac(this.opTrans);case 2:return"rotation "+ +this.opOrder;case 4:return"inversion center "+JS.SymmetryOperation.opFrac(this.opPoint);case 8:return"reflection ";case 3:return"screw rotation "+this.opOrder+(null==this.opIsCCW?"":this.opIsCCW===Boolean.TRUE?"(+) ":"(-) ")+JS.SymmetryOperation.opFrac(this.opTrans);case 6:return this.opOrder+"-bar "+(null==this.opIsCCW?"":this.opIsCCW===Boolean.TRUE?"(+) ":"(-) ")+JS.SymmetryOperation.opFrac(this.opPoint);case 9:return"glide reflection "+JS.SymmetryOperation.opFrac(this.opTrans)}return""});b.opFrac= +d(b,"opFrac",function(a){return"{"+JS.SymmetryOperation.opF(a.x)+" "+JS.SymmetryOperation.opF(a.y)+" "+JS.SymmetryOperation.opF(a.z)+"}"},"JU.T3");b.opF=d(b,"opF",function(a){if(0==a)return"0";var c=0>a;c&&(a=-a);var e=0;1<=a&&(e=w(a),a-=e);var b=Math.round(48*a);if(0!=JU.PT.approx(b/48-a,1E3))return""+JU.PT.approx(a,1E3);a=0==b%48?1:0==b%24?2:0==b%16?3:0==b%12?4:0==b%8?6:0==b%6?8:0==b%4?12:0==b%3?16:0==b%2?24:48;return(c?"-":"")+(e*a+S(b*a/48))+(1==a?"":"/"+a)},"~N");b.op48=d(b,"op48",function(a){return null== +a?(System.err.println("SymmetryOperation.op48 null"),"(null)"):"{"+Math.round(48*a.x)+" "+Math.round(48*a.y)+" "+Math.round(48*a.z)+"}"},"JU.T3");d(b,"setSigma",function(a,c){this.subsystemCode=a;this.sigma=c},"~S,JU.Matrix");d(b,"setGamma",function(a){for(var c=3+this.modDim,b=(this.rsvs=new JU.Matrix(null,c+1,c+1)).getArray(),g=ua(c,0),d=0,f=0;ff;f++)for(h=0;4>h;h++)this.setElement(f,h,3>h?b[f][h]:g[f]);this.setElement(3,3,1)},"~B");d(b,"doFinalize",function(){JS.SymmetryOperation.div12(this,this.divisor);if(0>8)/(b&255)}return a/c},"~N,~N");b.finalizeD=d(b,"finalizeD",function(a,c){if(0==c){if(0==a)return 0;var b=S(a);return 1*(b>>8)/(b&255)}return a/c},"~N,~N");d(b,"getXyz",function(a){return a&&0==this.modDim||null==this.xyzOriginal?this.xyz:this.xyzOriginal},"~B");d(b,"getxyzTrans",function(a){var c=JU.M4.newM4(this);c.add(a);return JS.SymmetryOperation.getXYZFromMatrix(c, +!1,!1,!1)},"JU.T3");d(b,"dumpInfo",function(){return"\n"+this.xyz+"\ninternal matrix representation:\n"+this.toString()});b.dumpSeitz=d(b,"dumpSeitz",function(a,c){for(var b=new JU.SB,g=C(4,0),d=0;3>d;d++){a.getRow(d,g);b.append("[\t");for(var f=0;3>f;f++)b.appendI(w(g[f])).append("\t");f=g[3];f*=f==w(f)?4:48;b.append(JS.SymmetryOperation.twelfthsOf(c?JS.SymmetryOperation.normalizeTwelfths(f/48,48,!0):w(f))).append("\t]\n")}return b.toString()},"JU.M4,~B");d(b,"setMatrixFromXYZ",function(a,c,b){if(null== +a)return!1;this.xyzOriginal=a;this.divisor=JS.SymmetryOperation.setDivisor(a);a=a.toLowerCase();this.setModDim(c);var g=!1,d=!0;a.startsWith("!")&&(a.startsWith("!nohalf!")?(d=!1,this.xyzOriginal=a=a.substring(8)):(g=!1,a=a.substring(1)));if(0==a.indexOf("xyz matrix:"))return this.xyz=a,JU.Parser.parseStringInfestedFloatArray(a,null,this.linearRotTrans),this.setFromMatrix(null,g);if(0==a.indexOf("[[")){a=a.$replace("["," ").$replace("]"," ").$replace(","," ");JU.Parser.parseStringInfestedFloatArray(a, +null,this.linearRotTrans);for(c=this.linearRotTrans.length;0<=--c;)if(Float.isNaN(this.linearRotTrans[c]))return!1;this.setMatrix(g);this.isFinalized=!0;this.xyz=(this.isBio=0<=a.indexOf("bio"))?this.xyzOriginal=sa(this,JS.SymmetryOperation,"toString",[]):JS.SymmetryOperation.getXYZFromMatrix(this,!1,!1,!1);return!0}if(0==c&&0<=a.indexOf("x4"))for(c=14;4<=--c;)if(0<=a.indexOf("x"+c)){this.setModDim(c-3);break}c=null;a.endsWith("m")?(this.timeReversal=0<=a.indexOf("-m")?-1:1,b=!0):0<=a.indexOf("mz)")&& +(b=a.indexOf("("),c=a.substring(b+1,a.length-1),a=a.substring(0,b),b=!1);d=JS.SymmetryOperation.getMatrixFromString(this,a,this.linearRotTrans,b,d,!0);if(null==d)return!1;this.xyzCanonical=d;null!=c&&(b=1==JU.M4.newA16(this.linearRotTrans).determinant3(),this.timeReversal=0>a.indexOf("-x")==0>c.indexOf("-mx")==b?1:-1);this.setMatrix(g);this.xyz=g?JS.SymmetryOperation.getXYZFromMatrix(this,!0,!1,!1):this.doNormalize?d:a;0!=this.timeReversal&&(this.xyz+=1==this.timeReversal?",m":",-m");JU.Logger.debugging&& +JU.Logger.debug(""+this);return!0},"~S,~N,~B");b.setDivisor=d(b,"setDivisor",function(a){for(var c=a.indexOf("/"),b=a.length;0"2346".indexOf(d)||cMath.abs(b)&&(b=0);if(0==(h+1)%(f+1)){var j=0==this.divisor?w(b)&255:this.divisor;0==j&&(j=12);b=JS.SymmetryOperation.finalizeF(b, +this.divisor);null!=a&&db?-1:1)*Math.abs(b*j)/j,j,this.doNormalize);0==this.divisor&&(b=JS.SymmetryOperation.toDivisor(b,j));n++}this.linearRotTrans[h]=b}this.linearRotTrans[this.linearRotTrans.length-1]=this.divisor;this.setMatrix(c);this.isFinalized=null==a;this.xyz=JS.SymmetryOperation.getXYZFromMatrix(this,!0,!1,!1);return!0},"~A,~B");b.getMatrixFromXYZ=d(b,"getMatrixFromXYZ",function(a,c,b){null==c&&(c=C(16,0));a=JS.SymmetryOperation.getMatrixFromString(null, +a,c,!1,b,!0);if(null==a)return null;b=new JU.M4;b.setA(c);return JS.SymmetryOperation.div12(b,JS.SymmetryOperation.setDivisor(a))},"~S,~A,~B");b.getJmolCanonicalXYZ=d(b,"getJmolCanonicalXYZ",function(a){try{return JS.SymmetryOperation.getMatrixFromString(null,a,null,!1,!0,!0)}catch(c){if(da(c,Exception))return null;throw c;}},"~S");b.getMatrixFromString=d(b,"getMatrixFromString",function(a,c,b,d,n,f){var h=!1,j=!1,m=!1;c=JU.PT.rep(c,"[bio[","");var k=null==a?0:a.modDim,l=4+k,p=null==a?JS.SymmetryOperation.setDivisor(c): +a.divisor,q=n&&(null==a?!c.startsWith("!"):a.doNormalize),r=0=O){if(j){L/=10;0>y&&(m=!0);y+=L*O*(m?-1:1);continue}if(h){D[0]=t;z=JU.PT.parseIntNext(c,D);if(0> +z)return null;t=D[0]-1;0==y?null!=b&&(b[v]/=z):(G=w(y),y/=z)}else y=10*y+(m?-1:1)*O}else JU.Logger.warn("symmetry character?"+C)}j=h=m=!1}return null},"JS.SymmetryOperation,~S,~A,~B,~B,~B");b.replaceXn=d(b,"replaceXn",function(a,c){for(var b=c;0<=--b;)a=JU.PT.rep(a,JS.SymmetryOperation.labelsXn[b],JS.SymmetryOperation.labelsXnSub[b]);return a},"~S,~N");b.toDivisor=d(b,"toDivisor",function(a,c){var b=w(a);b!=a&&(b=a-b,c=w(Math.abs(c/b)),b=w(Math.abs(a)/b));return(b<<8)+c},"~N,~N");b.xyzFraction12= +d(b,"xyzFraction12",function(a,c,b,d){if(0==a)return"";12!=c&&(a=w(a),c=a&255,a>>=8);var n=S(c/2);if(b)for(;0>a;)a+=c;else if(d){for(;a>n;)a-=c;for(;a<-n;)a+=c}c=12==c?JS.SymmetryOperation.twelfthsOf(a):0==a?"0":a+"/"+c;return"0"==c.charAt(0)?"":0a&&(a=-a,c="-");var b=12,d=Math.round(a);if(0.01b;b++){var n=a*b,d=Math.round(n);if(0.01>Math.abs(d-n))break}if(20==b)return c+a}else{if(12== +d)return c+"1";if(12>d)return c+JS.SymmetryOperation.twelfths[d%12];switch(d%12){case 0:return c+S(d/12);case 2:case 10:b=6;break;case 3:case 9:b=4;break;case 4:case 8:b=3;break;case 6:b=2}d=S(d*b/12)}return c+d+"/"+b},"~N");b.plusMinus=d(b,"plusMinus",function(a,c,b,d){var n;return(0==c?"":(0>c?"-":0==a.length?"":"+")+(1==c||-1==c?"":1>(n=Math.abs(c))&&d?JS.SymmetryOperation.twelfthsOf(12*n):""+w(n)))+b},"~S,~N,~S,~B");b.normalizeTwelfths=d(b,"normalizeTwelfths",function(a,c,b){a*=c;var d=S(c/2); +if(b){for(;a>d;)a-=c;for(;a<=-d;)a+=c}return a},"~N,~N,~B");b.getXYZFromMatrix=d(b,"getXYZFromMatrix",function(a,c,b,d){return JS.SymmetryOperation.getXYZFromMatrixFrac(a,c,b,d,!1)},"JU.M4,~B,~B,~B");b.getXYZFromMatrixFrac=d(b,"getXYZFromMatrixFrac",function(a,c,b,d,n){var f="",h=U(a,"JS.SymmetryOperation")?a:null;if(null!=h&&0m;m++){var k=3>m?0:3;a.getRow(m,h);for(var l="",p=0;3>p;p++){var q=h[p];0!=JS.SymmetryOperation.approx(q)&&(l+=JS.SymmetryOperation.plusMinus(l,q,JS.SymmetryOperation.labelsXYZ[p+k],n))}if(0!=(c?h[3]:JS.SymmetryOperation.approx(h[3])))k=JS.SymmetryOperation.xyzFraction12(c?h[3]:h[3]*j,j,b,d),""===l&&(k="+"==k.charAt(0)?k.substring(1):k),l+=k;f+=","+(""===l?"0":l)}return f.substring(1)},"JU.M4,~B,~B,~B,~B");d(b,"rotateAxes",function(a,c,b,d){var n=Array(3);this.getRotationScale(d);for(var f=a.length;0<= +--f;)b.setT(a[f]),c.toFractional(b,!0),d.rotate(b),c.toCartesian(b,!0),n[f]=JU.V3.newV(b);return n},"~A,JS.UnitCell,JU.P3,JU.M3");b.fcoord=d(b,"fcoord",function(a,c){return JS.SymmetryOperation.opF(a.x)+c+JS.SymmetryOperation.opF(a.y)+c+JS.SymmetryOperation.opF(a.z)},"JU.T3,~S");b.approx=d(b,"approx",function(a){return JU.PT.approx(a,100)},"~N");b.approx6=d(b,"approx6",function(a){return JU.PT.approx(a,1E6)},"~N");b.getXYZFromRsVs=d(b,"getXYZFromRsVs",function(a,c,b){a=a.getArray();c=c.getArray(); +for(var d=a.length,n="",f=0;fj?"-":n.endsWith(",")?"":"+")+(1==Math.abs(j)?"":""+Math.abs(j))+"x"+(h+1))}n+=JS.SymmetryOperation.xyzFraction12(S(c[f][0]*(b?1:12)),12,!1,!0)}return JU.PT.rep(n.substring(1),",+",",")},"JU.Matrix,JU.Matrix,~B");d(b,"toString",function(){return null==this.rsvs?sa(this,JS.SymmetryOperation,"toString",[]):sa(this,JS.SymmetryOperation,"toString",[])+" "+this.rsvs.toString()});d(b,"getMagneticOp",function(){return 2147483647== +this.magOp?this.magOp=w(this.determinant3()*this.timeReversal):this.magOp});d(b,"setTimeReversal",function(a){this.timeReversal=a;0<=this.xyz.indexOf("m")&&(this.xyz=this.xyz.substring(0,this.xyz.indexOf("m")));0!=a&&(this.xyz+=1==a?",m":",-m")},"~N");d(b,"getCentering",function(){this.isFinalized||this.doFinalize();null==this.centering&&!this.unCentered&&(0==this.modDim&&1==this.m00&&1==this.m11&&1==this.m22&&0==this.m01&&0==this.m02&&0==this.m10&&0==this.m12&&0==this.m20&&0==this.m21&&(0!=this.m03|| +0!=this.m13||0!=this.m23)?(this.isCenteringOp=!0,this.centering=JU.V3.new3(this.m03,this.m13,this.m23)):(this.unCentered=!0,this.centering=null));return this.centering});d(b,"fixMagneticXYZ",function(a,c,b){if(0==this.timeReversal)return c;var d=c.indexOf("m"),d=d-S((3-this.timeReversal)/2);c=0>d?c:c.substring(0,d);if(!b)return c+(0this.getMagneticOp()&&a.scale(-1);return c+="("+JU.PT.rep(JU.PT.rep(JU.PT.rep(JS.SymmetryOperation.getXYZFromMatrix(a, +!1,!1,!1),"x","mx"),"y","my"),"z","mz")+")"},"JU.M4,~S,~B");d(b,"getInfo",function(){null==this.info&&(this.info=new java.util.Hashtable,this.info.put("xyz",this.xyz),null!=this.centering&&this.info.put("centering",this.centering),this.info.put("index",Integer.$valueOf(this.number-1)),this.info.put("isCenteringOp",Boolean.$valueOf(this.isCenteringOp)),null!=this.linearRotTrans&&this.info.put("linearRotTrans",this.linearRotTrans),this.info.put("modulationDimension",Integer.$valueOf(this.modDim)),this.info.put("matrix", +JU.M4.newM4(this)),3.4028235E38!=this.magOp&&this.info.put("magOp",Float.$valueOf(this.magOp)),this.info.put("id",Integer.$valueOf(this.opId)),this.info.put("timeReversal",Integer.$valueOf(this.timeReversal)),null!=this.xyzOriginal&&this.info.put("xyzOriginal",this.xyzOriginal));return this.info});b.normalizeOperationToCentroid=d(b,"normalizeOperationToCentroid",function(a,c,b,d,n){if(!(0>=n)){var f=0,h=0,j=0;null==JS.SymmetryOperation.atomTest&&(JS.SymmetryOperation.atomTest=new JU.P3);for(var m= +d+n;df||1.001<=f;)c.m03+=0>f?1:-1,f+=0>f?1:-1;if(1h||1.001<=h;)c.m13+=0>h?1:-1,h+=0>h?1:-1;if(2j||1.001<=j;)c.m23+=0>j?1:-1,j+=0>j?1:-1}},"~N,JU.M4,~A,~N,~N");b.getLatticeCentering=d(b,"getLatticeCentering",function(a){for(var c=new JU.Lst,b=0;bd;d++){a.getRow(d,b);for(var n=0;3>n;n++)switch(w(b[n])){case 1:c|=n+1<<(2-d<<3);break;case -1:c|=16+n+1<<(2-d<<3)}}return c},"JU.M4");b.opGet3x=d(b,"opGet3x",function(a){if(0!=a.m22)return JS.SymmetryOperation.x;a=JS.SymmetryOperation.opGet3code(a); +for(var c=0;8>c;c++)if(a==JS.SymmetryOperation.C3codes[c])return null==JS.SymmetryOperation.xneg&&(JS.SymmetryOperation.xneg=JU.V3.newV(JS.SymmetryOperation.x),JS.SymmetryOperation.xneg.scale(-1)),JS.SymmetryOperation.xneg;return JS.SymmetryOperation.x},"JU.M4");d(b,"setOpTypeAndOrder",function(){this.clearOp();var a=Math.round(this.determinant3()),c=Math.round(this.m00+this.m11+this.m22),b=0,d=0,n=JS.SymmetryOperation.x;switch(c){case 3:JS.SymmetryOperation.hasTrans(this)?(this.opType=1,this.opTrans= +new JU.V3,this.getTranslation(this.opTrans),this.opOrder=2):(this.opType=0,this.opOrder=1);return;case -3:this.opType=4;b=2;break;default:b=c*a+3,5==b&&(b=6),0c.dot(q)));break;case 2:q=JU.V3.newVsub(j,h);q.normalize();this.opAxis=JS.SymmetryOperation.opClean6(q);h.scale(1/b);a.setT(h);0c.dot(q)));if(f=(new Boolean(f&JS.SymmetryOperation.checkOpAxis(a,0==p?this.opAxis:this.opTrans,h,new JU.V3,new JU.V3,null))).valueOf())this.opPoint.setT(h),JS.SymmetryOperation.checkOpAxis(this.opPoint,this.opAxis,c,new JU.V3,new JU.V3,this.opPoint)&&(this.opPoint2=JU.P3.newP(c)),0q.dot(a)&&(f=!1));break;case 8:a.sub(this.opTrans),a.scale(0.5),this.opPoint.setT(a),l.sub(this.opTrans),this.opAxis=JU.V3.newVsub(l,n),c.scaleAdd2(0.5,this.opAxis,n),this.opAxis.normalize(),this.opPlane=new JU.P4,a.set(n.x+1.1,n.y+1.7,n.z+2.1),a.scale(0.5),this.rotTrans(a),a.sub(this.opTrans),a.scaleAdd2(0.5,n,a),a.scale(0.5),q=new JU.V3,f=JS.SymmetryOperation.checkOpPlane(this.opPoint,a,c, +this.opPlane,q,new JU.V3),JS.SymmetryOperation.opClean6(this.opPlane),0==JS.SymmetryOperation.approx6(this.opPlane.w)&&(this.opPlane.w=0),JS.SymmetryOperation.approx6Pt(this.opAxis),JS.SymmetryOperation.normalizePlane(this.opPlane)}if(0=b||Math.abs(JS.SymmetryOperation.approx(this.opTrans.y))>=b||Math.abs(JS.SymmetryOperation.approx(this.opTrans.z))>=b)f=!1}else this.opTrans=null;f||(this.isIrrelevant=!0)});d(b,"fixNegTrans",function(a){a.x=JS.SymmetryOperation.normHalf(a.x); +a.y=JS.SymmetryOperation.normHalf(a.y);a.z=JS.SymmetryOperation.normHalf(a.z)},"JU.V3");b.normalizePlane=d(b,"normalizePlane",function(a){JS.SymmetryOperation.approx6Pt(a);a.w=JS.SymmetryOperation.approx6(a.w);(0a.x||0==a.x&&0>a.y||0==a.y&&0>a.z))&&a.scale4(-1);JS.SymmetryOperation.opClean6(a);a.w=JS.SymmetryOperation.approx6(a.w)},"JU.P4");b.isCoaxial=d(b,"isCoaxial",function(a){return 1==Math.abs(JS.SymmetryOperation.approx(a.x))||1==Math.abs(JS.SymmetryOperation.approx(a.y))|| +1==Math.abs(JS.SymmetryOperation.approx(a.z))},"JU.T3");d(b,"clearOp",function(){this.isFinalized||this.doFinalize();this.isIrrelevant=!1;this.opIsCCW=this.opPlane=this.opPoint=this.opPoint2=this.opTrans=null;this.opIsLong=!1});b.hasTrans=d(b,"hasTrans",function(a){return 0!=JS.SymmetryOperation.approx6(a.m03)||0!=JS.SymmetryOperation.approx6(a.m13)||0!=JS.SymmetryOperation.approx6(a.m23)},"JU.M4");b.checkOpAxis=d(b,"checkOpAxis",function(a,c,b,d,n,f){null==JS.SymmetryOperation.opPlanes&&(JS.SymmetryOperation.opPlanes= +JU.BoxInfo.getBoxFacesFromOABC(null));for(var h=JU.BoxInfo.faceOrder,j=null==f?1:-1,m=0;6>m;m++){var k=JU.Measure.getIntersection(a,c,JS.SymmetryOperation.opPlanes[h[m]],b,d,n);if(null!=k&&JS.SymmetryOperation.checkOpPoint(k)&&0>c.dot(d)*j&&(null==f||0<=JS.SymmetryOperation.approx(f.distance(k)-0.5)))return!0}return!1},"JU.P3,JU.V3,JU.P3,JU.V3,JU.V3,JU.P3");b.opClean6=d(b,"opClean6",function(a){0==JS.SymmetryOperation.approx6(a.x)&&(a.x=0);0==JS.SymmetryOperation.approx6(a.y)&&(a.y=0);0==JS.SymmetryOperation.approx6(a.z)&& +(a.z=0);return a},"JU.T3");b.checkOpPoint=d(b,"checkOpPoint",function(a){return JS.SymmetryOperation.checkOK(a.x,0)&&JS.SymmetryOperation.checkOK(a.y,0)&&JS.SymmetryOperation.checkOK(a.z,0)},"JU.T3");b.checkOK=d(b,"checkOK",function(a,c){return 0!=c||0<=JS.SymmetryOperation.approx(a)&&1>=JS.SymmetryOperation.approx(a)},"~N,~N");b.checkOpPlane=d(b,"checkOpPlane",function(a,c,b,d,n,f){JU.Measure.getPlaneThroughPoints(a,c,b,n,f,d);c=JU.BoxInfo.unitCubePoints;f=b=0;for(var h=8;0<=--h;){var j=JU.Measure.getPlaneProjection(c[h], +d,a,n);switch(w(Math.signum(JS.SymmetryOperation.approx6(j)))){case 1:if(0d.lengthSquared()){c.isIrrelevant=!0;return}d.add2(c.opGlide,n.opGlide);if(1E-6>d.lengthSquared()){c.isIrrelevant=!0;return}d.add2(c.opAxis,n.opAxis);if(1E-6>d.lengthSquared()){c.isIrrelevant=!0;return}}else if(null==c.opGlide&&null==n.opGlide){d.add2(c.opAxis,n.opAxis);if(1E-6>d.lengthSquared()){c.isIrrelevant=!0;return}d.sub2(c.opAxis,n.opAxis);if(1E-6>d.lengthSquared()){c.isIrrelevant=!0;return}}0==n.iCoincident?(c.iCoincident=1,n.iCoincident=-1):c.iCoincident=-n.iCoincident}f.addLast(c)}}, +"java.util.Map,JS.SymmetryOperation,~N,JU.V3");d(b,"checkOpSimilar",function(a,c){switch(this.getOpType()&-2){default:return!1;case 0:return!0;case 2:return 0==JS.SymmetryOperation.approx6(a.dot(this.opAxis)-a.length());case 8:return c.cross(a,this.opAxis),0==JS.SymmetryOperation.approx6(c.length())?!1:0==JS.SymmetryOperation.approx6(a.dot(this.opAxis))}},"JU.V3,JU.V3");d(b,"opCheckAdd",function(a,c,b,d,n,f){this.setM4(a);a=JU.V3.newV(d);a.add(c);this.setTranslation(a);this.isFinalized=!0;this.setOpTypeAndOrder(); +if(this.isIrrelevant||0==this.opType||1==this.opType)return!1;c=this.getOpName(1)+";";if(0==(this.opType&8)&&0<=n.indexOf(c))return!1;n.append(c);f.addLast(this);this.isFinalized=!0;this.xyz=JS.SymmetryOperation.getXYZFromMatrix(this,!1,!1,!1);return!0},"JS.SymmetryOperation,JU.V3,~N,JU.V3,JU.SB,JU.Lst,~N");b.approx6Pt=d(b,"approx6Pt",function(a){null!=a&&(a.x=JS.SymmetryOperation.approx6(a.x),a.y=JS.SymmetryOperation.approx6(a.y),a.z=JS.SymmetryOperation.approx6(a.z))},"JU.T3");b.normalize12ths= +d(b,"normalize12ths",function(a){a.x=JU.PT.approx(a.x,12);a.y=JU.PT.approx(a.y,12);a.z=JU.PT.approx(a.z,12)},"JU.V3");d(b,"getCode",function(){if(null!=this.opAxisCode)return this.opAxisCode;var a=this.getOpName(2).charAt(0),c=this.opOrder,b=null==this.opIsCCW?0:this.opIsCCW===Boolean.TRUE?1:2;switch(a.charCodeAt(0)){case 71:a=JS.SymmetryOperation.getGlideFromTrans(this.opTrans,this.opPlane);case 80:JS.SymmetryOperation.isCoaxial(this.opAxis)||(a="P"==a?"p":String.fromCharCode(a.charCodeAt(0)-32)); +break;case 83:var d=this.opTrans.length();if(null!=this.opIsCCW&&d<(1c;c++)n[c]%=1;d.setColumnA(3,n)}return JS.SymmetryOperation.getXYZFromMatrixFrac(d,!1,!0,!1,m)},"~S,JU.M4,JU.M4,JU.M4,~A,JU.T3,JU.T3,~B,~B");b.transformXyzT=d(b,"transformXyzT",function(a,c){return JS.SymmetryOperation.transformStr(a, +JS.UnitCell.toTrm(c,null),null,null,null,null,null,!0,!1)},"~S,~S");b.stringToMatrix=d(b,"stringToMatrix",function(a){var c=JS.SymmetryOperation.setDivisor(a),b=C(16,0);JS.SymmetryOperation.getMatrixFromString(null,a,b,!0,!1,!1);return JS.SymmetryOperation.div12(JU.M4.newA16(b),c)},"~S");b.getTransformABC=d(b,"getTransformABC",function(a,c){if(null==a)return"a,b,c";var b=JU.M4.newM4(a),d=new JU.V3;b.getTranslation(d);d.scale(-1);b.add(d);b.transpose();b=JS.SymmetryOperation.getXYZFromMatrixFrac(b, +!1,!0,!1,!0).$replace("x","a").$replace("y","b").$replace("z","c");if(1E-12>d.lengthSquared())return b;d.scale(-1);return b+";"+(c?JS.SymmetryOperation.norm3(d):JS.SymmetryOperation.opF(d.x)+","+JS.SymmetryOperation.opF(d.y)+","+JS.SymmetryOperation.opF(d.z))},"~O,~B");b.norm3=d(b,"norm3",function(a){return JS.SymmetryOperation.norm(a.x)+","+JS.SymmetryOperation.norm(a.y)+","+JS.SymmetryOperation.norm(a.z)},"JU.T3");b.norm=d(b,"norm",function(a){return JS.SymmetryOperation.opF(JS.SymmetryOperation.normHalf(a))}, +"~N");b.normHalf=d(b,"normHalf",function(a){for(;-0.5>=a;)a+=1;for(;0.5a.indexOf("#")){var d=this.intlTableTransform,n=this.intlTableIndex;!b&&(!c&&null!=n)&&(null!=d&&(c=a.indexOf(d),0<=c&&(a=JU.PT.rep(a,"("+d+")","")),0>n.indexOf(d)&&(c=n.indexOf("."),0c?c:1073742327},"~S");b.getKeyType=d(b,"getKeyType",function(a){"type".equals(a)&& +(a="_type");for(var c=0;cc&&-c<=JS.SymmetryDesc.keys.length&& +-c<=a.length)return a[-1-c];switch(c){case 1073742327:case 1073741982:return a;case 1275068418:for(var b=new java.util.Hashtable,d=0,n=a.length;da&&-a<=JS.SymmetryDesc.keys.length)return c.set(-1-a),c;switch(a){case 0:case 1153433601:case 1073742001:case 1073742327:case 1073741982:case 1275068418:c.setBits(0,JS.SymmetryDesc.keys.length);break;case 1073741961:c.set(0);c.set(2);break;case 1145047049:c.set(0);break;case 1145047053:c.set(19);break;case 1073742078:c.set(1);break;default:case 1825200146:c.set(2);break;case 135176:c.set(0);c.set(2); +c.set(3);break;case 1145047050:c.set(4);break;case 1073742178:c.set(5);break;case 12289:c.set(6);break;case 134217751:c.set(7);break;case 1073741854:c.set(8);break;case 134217729:c.set(9);break;case 12:c.set(10);break;case 1814695966:c.set(11);break;case 4160:c.set(12);break;case 268441089:c.set(13);break;case 134217750:c.set(14);break;case 1140850696:c.set(15);break;case 1073741974:c.set(16);break;case 1086326789:case 36868:c.set(5),c.set(6),c.set(7),c.set(8),c.set(14),c.set(22)}return c},"~N"); +d(b,"createInfoArray",function(a,c,b,d,n,f,h,j,m,k,l){a.isFinalized||a.doFinalize();var p=1==m.cardinality()&&m.get(10),q=-1==a.timeReversal;0==f&&(f=1);JS.SymmetryDesc.vtrans.set(0,0,0);var r=null,s=null==b||Float.isNaN(b.x)?c.getCartesianOffset():b;if(null!=d){JS.SymmetryDesc.pta01.setT(s);JS.SymmetryDesc.pta02.setT(d);c.toFractional(JS.SymmetryDesc.pta01,!1);c.toFractional(JS.SymmetryDesc.pta02,!1);a.rotTrans(JS.SymmetryDesc.pta01);JS.SymmetryDesc.ptemp.setT(JS.SymmetryDesc.pta01);c.unitize(JS.SymmetryDesc.pta01); +JS.SymmetryDesc.vtrans.setT(JS.SymmetryDesc.pta02);c.unitize(JS.SymmetryDesc.pta02);if(1.96E-6<=JS.SymmetryDesc.pta01.distanceSquared(JS.SymmetryDesc.pta02))return null;JS.SymmetryDesc.vtrans.sub(JS.SymmetryDesc.ptemp)}var t=JU.M4.newM4(a);t.add(JS.SymmetryDesc.vtrans);m.get(10)&&(null!=d&&s.equals(d))&&(t.m00=Math.round(t.m00),t.m01=Math.round(t.m01),t.m02=Math.round(t.m02),t.m03=Math.round(t.m03),t.m10=Math.round(t.m10),t.m11=Math.round(t.m11),t.m12=Math.round(t.m12),t.m13=Math.round(t.m13),t.m20= +Math.round(t.m20),t.m21=Math.round(t.m21),t.m22=Math.round(t.m22),t.m23=Math.round(t.m23));var C=0!=a.timeReversal;if(p&&!C)return a=JS.SymmetryDesc.getKeyType("matrix"),c=Array(-a),c[-1-a]=t,c;p=new JU.V3;JS.SymmetryDesc.pta01.set(1,0,0);JS.SymmetryDesc.pta02.set(0,1,0);var v=JU.P3.new3(0,0,1);JS.SymmetryDesc.pta01.add(s);JS.SymmetryDesc.pta02.add(s);v.add(s);var u=JS.SymmetryDesc.rotTransCart(a,c,s,JS.SymmetryDesc.vtrans),P=JS.SymmetryDesc.rotTransCart(a,c,JS.SymmetryDesc.pta01,JS.SymmetryDesc.vtrans), +Q=JS.SymmetryDesc.rotTransCart(a,c,JS.SymmetryDesc.pta02,JS.SymmetryDesc.vtrans),y=JS.SymmetryDesc.rotTransCart(a,c,v,JS.SymmetryDesc.vtrans),z=JU.V3.newVsub(P,u),G=JU.V3.newVsub(Q,u),L=JU.V3.newVsub(y,u);JS.SymmetryOperation.approx6Pt(JS.SymmetryDesc.vtrans);var x=new JU.V3;x.cross(z,G);var B=0>x.dot(L);B&&(P.sub2(u,z),Q.sub2(u,G),y.sub2(u,L));var D=JU.Quat.getQuaternionFrame(u,P,Q).div(JU.Quat.getQuaternionFrame(s,JS.SymmetryDesc.pta01,JS.SymmetryDesc.pta02)),D=JU.Quat.new4(D.q1,D.q2,D.q3,D.q0), +E=JU.Measure.computeHelicalAxis(s,u,D),D=JU.P3.newP(E[0]),O=JU.P3.newP(E[1]),H=w(Math.abs(JU.PT.approx(E[3].x,1))),M=JS.SymmetryOperation.approx(E[3].y);B&&(P.add2(u,z),Q.add2(u,G),y.add2(u,L));E=JU.V3.newVsub(u,s);0.1>E.length()&&(E=null);var ja=null,N=null,V=null,$=0,ca=0,ba=0==H,ga=!ba,ha=!1,R=!1,aa=!ga&&!B;if(ga||B)E=null;if(B&&ba)N=JU.P3.newP(s),N.add(u),N.scale(0.5),ja=u,ha=!0;else if(B){var I=0==M?new JU.V3:O,K=0;switch(H){case 60:K=0.6666667;break;case 120:K=2;break;case 90:K=1;break;case 180:V= +JU.P3.newP(s);V.add(I);D.scaleAdd2(0.5,I,s);0.1Math.abs($)&&0.4H&&(H=360+H))}var $=K=null,X=String.fromCharCode(0),W=a.isIrrelevant,ea=a.getOpOrder();a.isIrrelevant=(new Boolean(a.isIrrelevant| +W)).valueOf();var Y=a.getOpIsCCW(),la=0,ia=0;if(m.get(2)||m.get(15))K=$="identity",ha?(JS.SymmetryDesc.ptemp.setT(N),c.toFractional(JS.SymmetryDesc.ptemp,!1),K="Ci: "+JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp,a.isBio),$="inversion center"):ga?(K="",null!=Y&&(K=Y===Boolean.TRUE?"(+)":"(-)",la=Y===Boolean.TRUE?1:-1),ia=S(360/ka),B?K=ia+"-bar"+K+" axis":0!=M?(JS.SymmetryDesc.ptemp.setT(O),c.toFractional(JS.SymmetryDesc.ptemp,!1),K=ia+K+" ("+JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp,a.isBio)+ +") screw axis"):(K=ia+K+" axis",0==ea%2&&(la*=S(ea/2))),$=K):null!=E?(W=" "+JS.SymmetryDesc.strCoord(p,a.isBio),ba?($=K="translation",K+=":"+W):R&&(k&&(JS.SymmetryDesc.fixGlideTrans(p),E.setT(p),c.toCartesian(E,!0)),W=" "+JS.SymmetryDesc.strCoord(p,a.isBio),X=JS.SymmetryOperation.getGlideFromTrans(p,O),$=K=X+"-glide plane",K+="|translation:"+W)):R&&($=K="mirror plane"),B&&!ha&&(JS.SymmetryDesc.ptemp.setT(N),c.toFractional(JS.SymmetryDesc.ptemp,!1),K+="|at "+JS.SymmetryDesc.strCoord(JS.SymmetryDesc.ptemp, +a.isBio)),q&&(K+="|time-reversed",$+=" (time-reversed)");var fa=!0,W=ga&&!B&&0!=M;W||(la=0,fa=JS.SymmetryDesc.checkHandedness(c,O),fa||(H=-H,0>H&&(H=360+H),O.scale(-1)));var Z=!1,F=null;if(null!=n&&m.get(3))if(0==a.getOpType()||l&&a.isIrrelevant)JU.Logger.debugging&&System.out.println("!!SD irrelevent "+a.getOpTitle()+a.getOpPoint()),F="";else{var ma=null;this.drawID='\ndraw ID "'+n;F=new JU.SB;F.append(this.getDrawID("*")).append(" delete");k||(this.drawLine(F,"frame1X",0.15,s,JS.SymmetryDesc.pta01, +"red"),this.drawLine(F,"frame1Y",0.15,s,JS.SymmetryDesc.pta02,"green"),this.drawLine(F,"frame1Z",0.15,s,v,"blue"));var da=null,oa=0,v=0.2>s.distance(u),na=k?""+n+": "+a.xyz+"|"+K+"":null;if(ga){n=2==ia?"red":3==ia?"[xA00040]":4==ia?"[x800080]":"[x4000A0]";var ka=H,qa=1;x.setT(O);ca="";k&&(D.setT(a.getOpPoint()),c.toCartesian(D,!1));T=new JU.P3;0!=M&&!B?(ma="screw",n=Y===Boolean.TRUE?"orange":Y===Boolean.FALSE?"blue":4==ea?"lightgray":"grey",k||(this.drawLine(F,"rotLine1",0.1,s,D,"red"), +JS.SymmetryDesc.ptemp.add2(D,x),this.drawLine(F,"rotLine2",0.1,u,JS.SymmetryDesc.ptemp,"red"),T.scaleAdd2(0.5,x,D))):(T.setT(D),fa||!v&&!k&&D.sub2(D,x),B?(ma="bar",k?(x.normalize(),Y===Boolean.TRUE&&x.scale(-1)):0==M?(T.setT(N),x.scale(3*f),v?(JS.SymmetryDesc.ptemp.scaleAdd2(0.25,x,D),D.scaleAdd2(-0.2,x,D),T.scaleAdd2(0.31,x,T),n="cyan"):(JS.SymmetryDesc.ptemp.scaleAdd2(-1,x,D),this.drawLine(F,"rotLine1",0.1,s,N,"red"),this.drawLine(F,"rotLine2",0.1,ja,N,"red"))):v||(qa=s.distance(T),this.drawLine(F, +"rotLine1",0.1,s,T,"red"),this.drawLine(F,"rotLine2",0.1,ja,T,"red"))):(ma="rot",x.scale(3*f),!v&&!k&&(this.drawLine(F,"rotLine1",0.1,s,T,"red"),this.drawLine(F,"rotLine2",0.1,u,T,"red")),T.setT(D),0==M&&v&&T.scaleAdd2(0.25,x,T)));k||(180JS.SymmetryDesc.ptemp.distance(u)&& +JS.SymmetryDesc.ptemp.set(Math.random(),Math.random(),Math.random()),F.append(JU.Escape.eP(JS.SymmetryDesc.ptemp)),JS.SymmetryDesc.ptemp.set(0,ka-5*Math.signum(ka),0),F.append(JU.Escape.eP(JS.SymmetryDesc.ptemp)).append(" color red"));ka=0;!a.opIsLong&&(l&&0(2==ea?0.71:3==ea?0.578:0.51));Z&&JU.Logger.debugging&&System.out.println("SD ignoring "+a.getOpTrans().length()+" "+a.getOpTitle()+a.xyz);f=null;if(0==M&&!B){JS.SymmetryDesc.ptemp.scaleAdd2(0.5,x,D);D.scaleAdd2(k? +-0.5:-0.45,x,D);if(l&&null!=(f=a.getOpPoint2()))T.setT(f),c.toCartesian(T,!1),T.scaleAdd2(-0.5,x,T);k&&this.scaleByOrder(x,ea,Y)}else l&&0!=M&&!B&&0.4<(I=a.getOpTrans().length())?Y!==Boolean.TRUE&&null!=Y&&0.5==I&&(Z=!0):k&&B&&(this.scaleByOrder(x,ea,Y),ca="80");0la?"blue":"orange"}I=ma+"_"+ia+"rotvector1";this.drawOrderVector(F,I,"vector","0.1"+ca,D,ia,la, +B&&l,Y===Boolean.TRUE,x,q?"gray":n,na,l);null!=f&&this.drawOrderVector(F,I+"2","vector","0.1"+ca,T,ea,la,B,Y===Boolean.TRUE,x,q?"gray":n,na,l)}}else if(R){JS.SymmetryDesc.ptemp.sub2(V,s);!k&&0.2a.number?0:a.number)+(null==k?" [0 0 0]":" ["+w(-k.x)+" "+w(-k.y)+" "+w(-k.z)+"]");break;case 18:j[f]=a.xyzCanonical}return j},"JS.SymmetryOperation,J.api.SymmetryInterface,JU.P3,JU.P3,~S,~N,~N,~B,JU.BS,~B,~B");b.fixGlideTrans=d(b,"fixGlideTrans",function(a){a.x=JS.SymmetryDesc.fixGlideX(a.x);a.y=JS.SymmetryDesc.fixGlideX(a.y);a.z=JS.SymmetryDesc.fixGlideX(a.z)},"JU.V3");b.fixGlideX=d(b,"fixGlideX",function(a){switch(Math.round(48.001*a)){case 36:return-0.25;case -36:return 0.25; +default:return a}},"~N");d(b,"scaleByOrder",function(a,c,b){a.scale(1+0.3/c+(null==b?0:b===Boolean.TRUE?0.02:-0.02))},"JU.V3,~N,Boolean");b.checkHandedness=d(b,"checkHandedness",function(a,c){var b,d,n;JS.SymmetryDesc.ptemp.set(1,0,0);a.toCartesian(JS.SymmetryDesc.ptemp,!1);b=JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(c));JS.SymmetryDesc.ptemp.set(0,1,0);a.toCartesian(JS.SymmetryDesc.ptemp,!1);d=JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(c));JS.SymmetryDesc.ptemp.set(0,0,1);a.toCartesian(JS.SymmetryDesc.ptemp, +!1);n=JS.SymmetryDesc.approx0d(JS.SymmetryDesc.ptemp.dot(c));return 0==b?0==d?0l.length()?d.m00=d.m11=d.m22=1:(l.normalize(),n=k.angle(n),d.setAA(JU.A4.newVA(l,n)));n=6.283185307179586/a*(0>c?-1:1);for(var l=new JU.V3,p=null,q=k=0,r=0,s=0==c?a:a+1;rMath.abs(a)?0:a},"~N");d(b,"getSymmetryInfo",function(a,c,b,d,n,f,h,j,m,k,l,p,q,r){var s=0,t=JS.SymmetryDesc.nullReturn(k);switch(k){case 1073741994:return""+b.getLatticeType();case 1073742001:s=1825200146;break;case 135176:s=135176;break;case 1275068418:switch(s=JS.SymmetryDesc.getType(m), +s){case 1153433601:case 1073741961:case 1073742001:case 134217751:case 1086326789:case 36868:k=s;break;default:s=JS.SymmetryDesc.getKeyType(m)}}var w=JS.SymmetryDesc.getInfoBS(s),v=-2==p,u=n,C=1073742066==q&&(1153433601==k||134217751==k)?j:null;null!=C&&(j=null);var H=u=null,y=null;if(null==j){if(null==d){y=v?b.getAdditionalOperations():b.getSymmetryOperations();if(null==y||Math.abs(n)>y.length||0==n)return t;u=Math.abs(n)-1;d=null==f?y[u].xyz:y[u].getxyzTrans(f);H=y[u].xyzOriginal}else u=n=0;var z= +new JS.Symmetry;z.setSpaceGroup(!1);var G=null!=b&&b.isBio();j=G?z.addBioMoleculeOperation(b.getSpaceGroup().finalOperations[u],0>n):z.addSpaceGroupOperation((0>n?"!":"=")+d,Math.abs(n));if(0>j)return t;var L=z.getSpaceGroupOperation(j);r&&(L.iCoincident=y[u].iCoincident);v&&(L.isIrrelevant=y[u].isIrrelevant);null!=H&&(L.xyzOriginal=H);L.number=n;G||L.getCentering();null==h&&0<=c&&(h=this.modelSet.at[c]);if(134217751==k||1153433601==k){if(G||null==h)return t;z.setUnitCell(b);JS.SymmetryDesc.ptemp.setT(h); +b.toFractional(JS.SymmetryDesc.ptemp,!1);if(Float.isNaN(JS.SymmetryDesc.ptemp.x))return t;s=new JU.P3;z.newSpaceGroupPoint(JS.SymmetryDesc.ptemp,j,null,0,0,0,s);1073742066==q&&(b.unitize(s),s.add(C));z.toCartesian(s,!1);return 1153433601==k?this.getAtom(b,a,c,s):s}u=this.createInfoArray(L,b,h,null,null==m?"sym":m,l,q,null!=f,w,r,v);1275068418==k&&null!=m&&(s=JS.SymmetryDesc.getKeyType(m))}else{v="info";C=!1;switch(k){case 1275068418:s=JS.SymmetryDesc.getKeyType(m);m=v=null;0==p&&(p=-1);break;case 1073742001:m= +v=null;0==p&&(p=-1);C=!0;w.set(21);w.set(0);w.set(19);break;case 135176:null==m&&(m=r?"sg":"sym");v="all";C=!0;break;case 1153433601:m=v=null;default:0==p&&(p=1)}q=this.getSymopInfoForPoints(b,a,n,f,h,j,m,v,l,p,q,w);if(C)return q;if("string"==typeof q)return t;u=q;if(1153433601==k)return!U(h,"JM.Atom")&&!U(j,"JM.Atom")&&(c=-1),null==u?t:this.getAtom(b,a,c,u[7])}if(null==u)return t;a=0p&&0>=n&&null==d&&(1275068418==k||a)){1275068418==k&&(0s?s:k));return a}if(0>s&&(0<=p||0b;f=f.get("symmetryInfo"); +k="label".equals(j);for(m=j=0;mb&&c.appendI(m+1).appendC("\t"),c.append(a[m][0]).appendC("\t"));c.append(a[m][2])}else{if(!n)return a[m];a[j++]=a[m]}if(!d){b=Array(j);for(m=0;mr)return q;var s=this.modelSet.am[r].biosymmetry;if(null==s&&null==(s=this.modelSet.getUnitCell(r)))s=(new JS.Symmetry).setUnitCellFromParams(null,!1,NaN);if(135176!=j||2147483647!=b&&null==p)return this.getSymmetryInfo(r,a,s,c,b,d,n,f,h,j,m,k,l,!1);if(null==s)return q;j="";b=null==c&&(0>k&&null==p)&&-2== +k?s.getAdditionalOperations():s.getSymmetryOperations();if(null!=b)if(null==h&&(h="sg"),q=b.length,null!=n&&null==f||null!=p){null==p&&(p=s.getInvariantSymops(n,null));for(var q=p.length,t=0;t=m&&r.cardinality()>=JS.SymmetryDesc.keys.length,v=!1,u=null,C=null!=b&&0c&&(c=U(n,"JM.Atom")?n.mi:this.modelSet.vwr.am.cmi);if(0>c)u="no single current model";else if(null==q&&!(v=null!=(q=this.modelSet.am[c].biosymmetry))&&null==(q=this.modelSet.getUnitCell(c)))u="not applicable";null!=u?(t= +new java.util.Hashtable,t.put("spaceGroupInfo",""),t.put("spaceGroupNote",u),t.put("symmetryInfo","")):w&&(t=this.modelSet.getInfo(c,"spaceGroupInfo"));if(null!=t)return t;b=q.getSpaceGroupName()}var t=new java.util.Hashtable,u=q.getSymmetryOperations(),z=v?q.spaceGroup:null,w=H?"":null,G=0;if(null!=u){s||(v?a.setSpaceGroupTo(JS.SpaceGroup.getNull(!1,!1,!1)):a.setSpaceGroup(!1));0!=u[0].timeReversal&&(a.getSpaceGroupOperation(0).timeReversal=1);for(var L=Array(u.length),x="",B=null==h||null==n||null== +f&&0>m?0:1,D=0;BM)continue;E=a.getSpaceGroupOperation(B);if(null==E)continue;E.xyzOriginal=O}null!=w&&(w+=";"+E.xyz);E=0=m&&0>=d?"\n"+G+" symmetry operation"+(1==G?":\n":"s:\n"):"";null!=w&&(b=w.substring(w.indexOf(";")+1));y&&this.modelSet.setInfo(c,"spaceGroupInfo",t)}else t=new java.util.Hashtable;t.put("spaceGroupName",b);t.put("spaceGroupNote",null==u?"":u);if(v)a=b;else if(C&&!H&&a.setSpaceGroupName(b),a=a.getSpaceGroupInfoObj(b,null==q? +null:q.getUnitCellParams(),k,!l),null==a||a.equals("?"))a="?",t.put("spaceGroupNote","could not identify space group from name: "+b+'\nformat: show spacegroup "2" or "P 2c" or "C m m m" or "x, y, z;-x ,-y, -z"');t.put("spaceGroupInfo",a);return t},"J.api.SymmetryInterface,~N,~S,~N,JU.P3,JU.P3,~S,~N,~N,~B,~B,~N,J.api.SymmetryInterface,JU.BS");d(b,"getTransform",function(a,c,b,d,n){null==JS.SymmetryDesc.pta01&&(JS.SymmetryDesc.pta01=new JU.P3,JS.SymmetryDesc.pta02=new JU.P3,JS.SymmetryDesc.ptemp=new JU.P3, +JS.SymmetryDesc.vtrans=new JU.V3);JS.SymmetryDesc.pta02.setT(d);JS.SymmetryDesc.vtrans.setT(JS.SymmetryDesc.pta02);a.unitize(JS.SymmetryDesc.pta02);d=3.4028235E38;for(var f=-1,h=0,j=c.length;hk){JS.SymmetryDesc.vtrans.sub(JS.SymmetryDesc.ptemp);JS.SymmetryOperation.normalize12ths(JS.SymmetryDesc.vtrans); +m=JU.M4.newM4(m);m.add(JS.SymmetryDesc.vtrans);JS.SymmetryDesc.pta01.setT(b);m.rotTrans(JS.SymmetryDesc.pta01);a.unitize(JS.SymmetryDesc.pta01);k=JS.SymmetryDesc.pta01.distanceSquared(JS.SymmetryDesc.pta02);if(1.96E-6<=k)continue;return m}k1-this.slop)return!1;case 2:if(a.y<-this.slop||a.y>1-this.slop)return!1;case 1:if(a.x<-this.slop||a.x>1-this.slop)return!1}return!0},"JU.P3");d(b,"dumpInfo",function(a,b){var d= +b?this.getUnitCellMultiplied():this;return d!==this?d.dumpInfo(a,!1):"a="+this.a+", b="+this.b+", c="+this.c+", alpha="+this.alpha+", beta="+this.beta+", gamma="+this.gamma+"\noabc="+JU.Escape.eAP(this.getUnitCellVectors())+"\nvolume="+this.volume+(a?"\nfractional to cartesian: "+this.matrixFractionalToCartesian+"\ncartesian to fractional: "+this.matrixCartesianToFractional:"")},"~B,~B");d(b,"fix000",function(a){return 0.001>Math.abs(a)?0:a},"~N");d(b,"fixFloor",function(a){return 1==a?0:a},"~N"); +d(b,"getCanonicalCopy",function(a,b){var d=this.getScaledCell(b);return JU.BoxInfo.getCanonicalCopy(d,a)},"~N,~B");d(b,"getCanonicalCopyTrimmed",function(a,b){var d=this.getScaledCellMult(a,!0);return JU.BoxInfo.getCanonicalCopy(d,b)},"JU.P3,~N");d(b,"getCartesianOffset",function(){return this.cartesianOffset});d(b,"getCellWeight",function(a){var b=1;if(a.x<=this.slop||a.x>=1-this.slop)b/=2;if(a.y<=this.slop||a.y>=1-this.slop)b/=2;if(a.z<=this.slop||a.z>=1-this.slop)b/=2;return b},"JU.P3");d(b,"getConventionalUnitCell", +function(a,b){var d=this.getUnitCellVectors();(!a.equals("P")||null!=b)&&this.toFromPrimitive(!1,a.charAt(0),d,b);return d},"~S,JU.M3");d(b,"getEquivPoints",function(a,b,d,g,n,f,h){var j=0<=b.indexOf("fromfractional"),m=0<=b.indexOf("tofractional");b=0<=b.indexOf("packed");null==g&&(g=new JU.Lst);a=JU.P3.newP(a);j||this.toFractional(a,!0);for(var j=g.size(),k=0,l=d.length;k=f;)this.toCartesian(g.get(k),!0);return g},"JU.P3,~S,~A,JU.Lst,~N,~N,~N");d(b,"getFractionalOffset",function(){return this.fractionalOffset});d(b,"getInfo",function(){var a=this.getUnitCellMultiplied();if(a!==this)return a.getInfo();a=new java.util.Hashtable;a.put("params",this.unitCellParams);a.put("oabc",this.getUnitCellVectors()); +a.put("volume",Double.$valueOf(this.volume));a.put("matFtoC",this.matrixFractionalToCartesian);a.put("matCtoF",this.matrixCartesianToFractional);return a});d(b,"getQuaternionRotation",function(a){var b=JU.V3.newVsub(this.vertices[4],this.vertices[0]),d=JU.V3.newVsub(this.vertices[2],this.vertices[0]),g=JU.V3.newVsub(this.vertices[1],this.vertices[0]),n=new JU.P3,f=new JU.P3,h="-"==a.charAt(0)?-1:1;0>h&&(a=a.substring(1));var j=a;a=JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(JU.PT.rep(a,"ab", +"A"),"bc","B"),"ca","C"),"ba","D"),"cb","E"),"ac","F");var m=(j=!j.equals(a))?1:0;2==a.length&&(m=a.charAt(1).charCodeAt(0)-48,a=a.substring(0,1));var k=0==m%2;switch("abcABCDEF".indexOf(a)){case 7:h=-h;case 4:b.cross(g,d),m=(5-m)%4+1;default:a=b;b=g;break;case 8:h=-h;case 5:h=-h,d.cross(g,b),m=(2+m)%4+1;case 1:a=d;d=g;h=-h;break;case 3:h=-h;case 6:g.cross(b,d),k&&(m=6-m);case 2:a=g,!j&&0j;j++){var m=d[j]= +JU.P3.newP(JU.BoxInfo.unitCubePoints[j]);null!=g?d[j].add3(g.x+n.x*m.x,g.y+n.y*m.y,g.z+n.z*m.z):f&&m.scaleT(a);d[j].scale(h);this.matrixFractionalToCartesian.rotTrans(m);b||m.sub(this.cartesianOffset)}return d},"JU.T3,~B");d(b,"getState",function(){var a="";null!=this.fractionalOffset&&0!=this.fractionalOffset.lengthSquared()&&(a+=" unitcell offset "+JU.Escape.eP(this.fractionalOffset)+";\n");null!=this.unitCellMultiplier&&(a+=" unitcell range "+JU.SimpleUnitCell.escapeMultiplier(this.unitCellMultiplier)+ +";\n");return a});d(b,"getTensor",function(a,b){var d=J.api.Interface.getUtil("Tensor",a,"file");if(0==b[0]&&0==b[1]&&0==b[2]){var g=b[7],n=C(-1,[g,g,g]);return d.setFromEigenVectors(JS.UnitCell.unitVectors,n,"iso","Uiso="+g,null)}d.parBorU=b;var g=ua(6,0),f=w(b[6]);if(12==f)g[0]=19.739208802178716*b[0],g[1]=19.739208802178716*b[1],g[2]=19.739208802178716*b[2],g[3]=39.47841760435743*b[3],g[4]=39.47841760435743*b[4],g[5]=39.47841760435743*b[5],b[7]=(b[0]+b[1]+b[3])/3;else{var n=4==f||5==f||8==f||9== +f,h=2-f%2,j=8==f||9==f||10==f?19.739208802178716:4==f||5==f?0.25:2==f||3==f?Math.log(2):1,f=b[0]*j*(n?this.a_*this.a_:1),m=b[1]*j*(n?this.b_*this.b_:1),k=b[2]*j*(n?this.c_*this.c_:1),l=b[3]*j*(n?this.a_*this.b_:1)*h,p=b[4]*j*(n?this.a_*this.c_:1)*h,n=b[5]*j*(n?this.b_*this.c_:1)*h;b[7]=Math.pow(f/19.739208802178716/this.a_/this.a_*m/19.739208802178716/this.b_/this.b_*k/19.739208802178716/this.c_/this.c_,0.3333);g[0]=this.a*this.a*f+this.b*this.b*this.cosGamma*this.cosGamma*m+this.c*this.c*this.cosBeta* +this.cosBeta*k+this.a*this.b*this.cosGamma*l+this.b*this.c*this.cosGamma*this.cosBeta*n+this.a*this.c*this.cosBeta*p;g[1]=this.b*this.b*this.sinGamma*this.sinGamma*m+this.c*this.c*this.cA_*this.cA_*k+this.b*this.c*this.cA_*this.sinGamma*n;g[2]=this.c*this.c*this.cB_*this.cB_*k;g[3]=2*this.b*this.b*this.cosGamma*this.sinGamma*m+2*this.c*this.c*this.cA_*this.cosBeta*k+this.a*this.b*this.sinGamma*l+this.b*this.c*(this.cA_*this.cosGamma+this.sinGamma*this.cosBeta)*n+this.a*this.c*this.cA_*p;g[4]=2*this.c* +this.c*this.cB_*this.cosBeta*k+this.b*this.c*this.cosGamma*n+this.a*this.c*this.cB_*p;g[5]=2*this.c*this.c*this.cA_*this.cB_*k+this.b*this.c*this.cB_*this.sinGamma*n}return d.setFromThermalEquation(g,JU.Escape.eAF(b))},"JV.Viewer,~A");d(b,"getUnitCellMultiplied",function(){if(null==this.unitCellMultiplier||0l)return null;g=g.getSpaceGroupOperation(l);g.doFinalize();l=new JU.P3;JS.UnitCell.addTrans(j,l);JS.UnitCell.addTrans(m,l);g.setTranslation(l);0<=b.indexOf("c")&&g.transpose33();k&&g.invert();null!=d&&d.setM4(g);if(null==a)return n}else{if(null!=d||null==a)return null;if(U(b,"JU.M3"))g=JU.M4.newMV(b,new JU.P3);else if(U(b,"JU.M4"))g=b;else{g=b[0];g.getRotationScale(h);g.rotTrans(f);a.toCartesian(f,!1);for(l=1;4>l;l++)h.rotate(n[l]),a.toCartesian(n[l],!0);return n}}g.getRotationScale(h); +g.getTranslation(f);a.toCartesian(f,!1);for(l=1;4>l;l++)h.rotate(n[l]),a.toCartesian(n[l],!0);return n},"JU.SimpleUnitCell,~O,JU.M4");b.addTrans=d(b,"addTrans",function(a,b){if(null!=a){var d=JU.PT.split(a,","),g=C(3,0);if(3==d.length)for(var n=0;3>n;n++){var f=d[n],h=f.indexOf("/");g[n]=0<=h?JU.PT.parseFloat(f.substring(0,h))/JU.PT.parseFloat(f.substring(h+1)):JU.PT.parseFloat(f)}b.add3(g[0],g[1],g[2])}},"~S,JU.P3");b.fixABC=d(b,"fixABC",function(a){var b=JU.PT.split(a[0],",");if(3!=b.length)return null; +for(var d="",g="",n=!1,f=0;3>f;f++){var h=b[f],j,m=0;for(j=h.length;0<=--j;){var k=h.charAt(j);switch(k.charCodeAt(0)){default:"a"<=k&&(j=0);break;case 43:m=1;case 45:j=-j}}j=-1-j;0==j?(d+=",0",g+=","+h):(n=!0,d+=","+h.substring(j+m),g+=","+h.substring(0,j))}a[0]=g.substring(1);return n?d.substring(1):null},"~A");d(b,"getVertices",function(){return this.vertices});d(b,"hasOffset",function(){return null!=this.fractionalOffset&&0!=this.fractionalOffset.lengthSquared()});d(b,"initOrientation",function(a){if(null!= +a){var b=new JU.M4;b.setToM3(a);this.matrixFractionalToCartesian.mul2(b,this.matrixFractionalToCartesian);this.matrixCartesianToFractional.setM4(this.matrixFractionalToCartesian).invert();this.initUnitcellVertices()}},"JU.M3");d(b,"initUnitcellVertices",function(){if(null!=this.matrixFractionalToCartesian){this.matrixCtoFNoOffset=JU.M4.newM4(this.matrixCartesianToFractional);this.matrixFtoCNoOffset=JU.M4.newM4(this.matrixFractionalToCartesian);this.vertices=Array(8);for(var a=8;0<=--a;)this.vertices[a]= +this.matrixFractionalToCartesian.rotTrans2(JU.BoxInfo.unitCubePoints[a],new JU.P3)}});d(b,"isSameAs",function(a){if(null==a)return!1;for(var b=this.getF2C(),d=0;3>d;d++)for(var g=0;4>g;g++)if(!JU.SimpleUnitCell.approx0(b[d][g]-a[d][g]))return!1;return!0},"~A");d(b,"getF2C",function(){if(null==this.f2c){this.f2c=C(3,4,0);for(var a=0;3>a;a++)this.matrixFractionalToCartesian.getRow(a,this.f2c[a])}return this.f2c});d(b,"isWithinUnitCell",function(a,b,d,g){switch(this.dimension){case 3:if(g.zd+this.slop)return!1;case 2:if(g.yb+this.slop)return!1;case 1:if(g.xa+this.slop)return!1}return!0},"~N,~N,~N,JU.P3");d(b,"setCartesianOffset",function(a){this.cartesianOffset.setT(a);this.matrixFractionalToCartesian.m03=this.cartesianOffset.x;this.matrixFractionalToCartesian.m13=this.cartesianOffset.y;this.matrixFractionalToCartesian.m23=this.cartesianOffset.z;a=this.hasOffset();this.fractionalOffset=JU.P3.newP(this.cartesianOffset);this.matrixCartesianToFractional.rotate(this.fractionalOffset); +this.matrixCartesianToFractional.m03=-this.fractionalOffset.x;this.matrixCartesianToFractional.m13=-this.fractionalOffset.y;this.matrixCartesianToFractional.m23=-this.fractionalOffset.z;this.allFractionalRelative&&(this.matrixCtoFNoOffset.setM4(this.matrixCartesianToFractional),this.matrixFtoCNoOffset.setM4(this.matrixFractionalToCartesian));!a&&0==this.fractionalOffset.lengthSquared()&&(this.fractionalOffset=null);this.f2c=null},"JU.T3");d(b,"setOffset",function(a){if(null!=a){this.unitCellMultiplied= +null;var b=U(a,"JU.T4")?a:null,d=null==b?1.4E-45:b.w,g=999999=d||g:100<=a.x||100<=a.y)if(this.unitCellMultiplier=0==a.z&&a.x==a.y&&!g?null:g?JU.P4.newPt(b):JU.P3.newP(a),this.unitCellMultiplied=null,null==b||0==b.w||g)return;if(this.hasOffset()||0=n;)b=d[a],this.toFractional(b,!0),f.rotate(b),this.toCartesian(b,!0);return!0},"~B,~S,~A,JU.M3");d(b,"toUnitCell",function(a,b){null!=this.matrixCartesianToFractional&&(null==b?(this.matrixCartesianToFractional.rotTrans(a),this.unitize(a),this.matrixFractionalToCartesian.rotTrans(a)):(this.matrixCtoFNoOffset.rotTrans(a),this.unitize(a),a.add(b),this.matrixFtoCNoOffset.rotTrans(a)))},"JU.T3,JU.T3"); +d(b,"toUnitCellRnd",function(a,b){null!=this.matrixCartesianToFractional&&(null==b?(this.matrixCartesianToFractional.rotTrans(a),this.unitizeRnd(a),this.matrixFractionalToCartesian.rotTrans(a)):(this.matrixCtoFNoOffset.rotTrans(a),this.unitizeRnd(a),a.add(b),this.matrixFtoCNoOffset.rotTrans(a)))},"JU.T3,JU.T3");d(b,"unitize",function(a){this.unitizeDim(this.dimension,a)},"JU.T3");d(b,"unitizeRnd",function(a){JU.SimpleUnitCell.unitizeDimRnd(this.dimension,a,this.slop)},"JU.T3");b.createCompatibleUnitCell= +d(b,"createCompatibleUnitCell",function(a,b,d,g){null==d&&(d=b);var n=b[0],f=b[1],h=b[2],j=b[3],m=b[4],k=b[5],l=null==a||null==a.itaNumber?0:JU.PT.parseInt(a.itaNumber),p=0!=l&&JS.UnitCell.isHexagonalSG(l,null),q=p&&JS.UnitCell.isHexagonalSG(-1,b),r=0!=l&&"r"==a.axisChoice,s=r&&JU.SimpleUnitCell.isRhombohedral(b);if(p&&q||r&&s)g=!0;if(l>(g?2:0)){var t=JU.SimpleUnitCell.approx0(n-f),t=JU.SimpleUnitCell.approx0(f-h),t=JU.SimpleUnitCell.approx0(h-n),w=JU.SimpleUnitCell.approx0(j-m),v=JU.SimpleUnitCell.approx0(m- +k),u=JU.SimpleUnitCell.approx0(k-j);g||(n>f&&(w=n,n=f,f=w),(t=JU.SimpleUnitCell.approx0(f-h))&&(h=1.5*f),(t=JU.SimpleUnitCell.approx0(n-f))&&(f=1.2*n),(t=JU.SimpleUnitCell.approx0(h-n))&&(h=1.1*n),JU.SimpleUnitCell.approx0(j-90)&&(j=80),JU.SimpleUnitCell.approx0(m-90)&&(m=100),JU.SimpleUnitCell.approx0(k-90)&&(k=110),j>m&&(w=j,j=m,m=w),w=JU.SimpleUnitCell.approx0(j-m),v=JU.SimpleUnitCell.approx0(m-k),u=JU.SimpleUnitCell.approx0(k-j),w&&(m=1.2*j),v&&(k=1.3*m),u&&(k=1.4*j));if(p){if(!(r?s:q))"r"==a.axisChoice? +(h=f=n,!g&&(85j)&&(j=80),k=m=j):(f=n,j=m=90,k=120)}else if(195<=l)h=f=n,j=m=k=90;else if(75<=l)f=n,t&&!g&&(h=1.5*n),j=m=k=90;else if(16<=l)j=m=k=90;else if(3<=l)switch(a.uniqueAxis.charCodeAt(0)){case 97:m=k=90;break;default:case 98:j=k=90;break;case 99:j=m=90}}a=!(n==b[0]&&f==b[1]&&h==b[2]&&j==b[3]&&m==b[4]&&k==b[5]);d[0]=n;d[1]=f;d[2]=h;d[3]=j;d[4]=m;d[5]=k;return a},"JS.SpaceGroup,~A,~A,~B");b.isHexagonalSG=d(b,"isHexagonalSG",function(a,b){return 1>a?JU.SimpleUnitCell.isHexagonal(b):143<= +a&&194>=a},"~N,~A");b.isMonoclinicSG=d(b,"isMonoclinicSG",function(a){return 3<=a&&15>=a},"~N");b.isTetragonalSG=d(b,"isTetragonalSG",function(a){return 75<=a&&142>=a},"~N");b.isPolarSG=d(b,"isPolarSG",function(a){return 1==a||3<=a&&5>=a||6<=a&&9>=a||25<=a&&46>=a||75<=a&&80>=a||99<=a&&110>=a||143<=a&&146>=a||156<=a&&161>=a||168<=a&&173>=a||183<=a&&186>=a},"~N");b.removeDuplicates=d(b,"removeDuplicates",function(a,b,d,g){for(0>g&&(g=a.size());b +a.get(f).distanceSquared(n)&&(a.removeItemAt(f),g--,f--)},"JU.Lst,~N,~N,~N");b.unitVectors=Q(-1,[JV.JC.axisX,JV.JC.axisY,JV.JC.axisZ])})})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields, +Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,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.isAB,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); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coretext.js b/config/plugins/visualizations/jmol/static/j2s/core/coretext.js new file mode 100755 index 000000000000..e193f7bf0c26 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coretext.js @@ -0,0 +1,2798 @@ +(function(Clazz +,Clazz_getClassName +,Clazz_newLongArray +,Clazz_doubleToByte +,Clazz_doubleToInt +,Clazz_doubleToLong +,Clazz_declarePackage +,Clazz_instanceOf +,Clazz_load +,Clazz_instantialize +,Clazz_decorateAsClass +,Clazz_floatToInt +,Clazz_floatToLong +,Clazz_makeConstructor +,Clazz_defineEnumConstant +,Clazz_exceptionOf +,Clazz_newIntArray +,Clazz_newFloatArray +,Clazz_declareType +,Clazz_prepareFields +,Clazz_superConstructor +,Clazz_newByteArray +,Clazz_declareInterface +,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_isAB +,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_checkPrivateMethod +,Clazz_cloneFinals +){ +var $t$; +//var c$; +Clazz_declarePackage("JM"); +Clazz_load(null, "JM.Text", ["JU.PT", "J.shape.Shape", "JU.C", "$.Font", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.vwr = null; +this.doFormatText = false; +this.font = null; +this.fid = 0; +this.ascent = 0; +this.descent = 0; +this.lineHeight = 0; +this.offsetX = 0; +this.offsetY = 0; +this.boxYoff2 = 0; +this.widths = null; +this.textWidth = 0; +this.textHeight = 0; +this.text = null; +this.textUnformatted = null; +this.lines = null; +this.image = null; +this.imageScale = 1; +this.barPixels = 0; +this.barDistance = 0; +this.xAdj = 0; +this.yAdj = 0; +this.y0 = 0; +this.pointerPt = null; +this.isMeasure = false; +this.isEcho = false; +this.xyz = null; +this.target = null; +this.script = null; +this.colix = 0; +this.bgcolix = 0; +this.pointer = 0; +this.fontScale = 0; +this.align = 0; +this.valign = 0; +this.atomX = 0; +this.atomY = 0; +this.atomZ = 2147483647; +this.movableX = 0; +this.movableY = 0; +this.movableZ = 0; +this.movableXPercent = 2147483647; +this.movableYPercent = 2147483647; +this.movableZPercent = 2147483647; +this.z = 1; +this.zSlab = -2147483648; +this.pymolOffset = null; +this.windowWidth = 0; +this.windowHeight = 0; +this.adjustForWindow = false; +this.boxWidth = 0; +this.boxHeight = 0; +this.boxX = 0; +this.boxY = 0; +this.modelIndex = -1; +this.thisModelOnly = false; +this.visible = true; +this.hidden = false; +this.boxXY = null; +this.scalePixelsPerMicron = 0; +this.barPixelsXYZ = 0; +Clazz_instantialize(this, arguments);}, JM, "Text", null); +Clazz_makeConstructor(c$, +function(){ +this.boxXY = Clazz_newFloatArray (5, 0); +}); +c$.newLabel = Clazz_defineMethod(c$, "newLabel", +function(vwr, font, text, colix, bgcolix, align, scalePixelsPerMicron){ +var t = new JM.Text(); +t.vwr = vwr; +t.set(font, colix, align, scalePixelsPerMicron); +t.setText(text); +t.bgcolix = bgcolix; +return t; +}, "JV.Viewer,JU.Font,~S,~N,~N,~N,~N"); +c$.newMeasure = Clazz_defineMethod(c$, "newMeasure", +function(vwr, font, colix){ +var t = new JM.Text(); +t.vwr = vwr; +t.set(font, colix, 0, 0); +t.isMeasure = true; +return t; +}, "JV.Viewer,JU.Font,~N"); +c$.newEcho = Clazz_defineMethod(c$, "newEcho", +function(vwr, font, target, colix, valign, align, scalePixelsPerMicron){ +var t = new JM.Text(); +t.isEcho = true; +t.vwr = vwr; +t.set(font, colix, align, scalePixelsPerMicron); +t.target = target; +t.valign = valign; +t.z = 2; +t.zSlab = -2147483648; +return t; +}, "JV.Viewer,JU.Font,~S,~N,~N,~N,~N"); +Clazz_defineMethod(c$, "set", +function(font, colix, align, scalePixelsPerMicron){ +this.scalePixelsPerMicron = scalePixelsPerMicron; +this.colix = colix; +this.align = align; +this.setFont(font, !this.isEcho); +}, "JU.Font,~N,~N,~N"); +Clazz_defineMethod(c$, "setOffset", +function(offset){ +this.offsetX = JV.JC.getXOffset(offset); +this.offsetY = JV.JC.getYOffset(offset); +this.pymolOffset = null; +this.valign = 3; +}, "~N"); +Clazz_defineMethod(c$, "getFontMetrics", +function(){ +this.descent = this.font.getDescent(); +this.ascent = this.font.getAscent(); +this.lineHeight = this.ascent + this.descent; +}); +Clazz_defineMethod(c$, "setFontFromFid", +function(fid){ +if (this.fid == fid) return; +this.fontScale = 0; +this.setFont(JU.Font.getFont3D(fid), true); +}, "~N"); +Clazz_defineMethod(c$, "setText", +function(text){ +if (this.image != null) { +this.getFontMetrics(); +this.image = null; +}this.barPixels = 0; +if (text != null && text.length == 0) text = null; +if (this.text != null && this.text.equals(text)) return; +this.text = this.textUnformatted = text; +this.doFormatText = (this.isEcho && text != null && (text.indexOf("%{") >= 0 || text.indexOf("@{") >= 0)); +if (!this.doFormatText) this.recalc(); +}, "~S"); +Clazz_defineMethod(c$, "setImage", +function(image){ +this.image = image; +this.recalc(); +}, "~O"); +Clazz_defineMethod(c$, "setScale", +function(scale){ +this.imageScale = scale; +this.recalc(); +}, "~N"); +Clazz_defineMethod(c$, "setFont", +function(f3d, doAll){ +this.font = f3d; +if (this.font == null) return; +this.getFontMetrics(); +if (!doAll) return; +this.fid = this.font.fid; +this.recalc(); +}, "JU.Font,~B"); +Clazz_defineMethod(c$, "setFontScale", +function(scale){ +if (this.fontScale == scale) return; +this.fontScale = scale; +if (this.fontScale != 0 && this.font != null) this.setFont(this.vwr.gdata.getFont3DScaled(this.font, scale), true); +}, "~N"); +Clazz_defineMethod(c$, "recalc", +function(){ +if (this.image != null) { +this.textWidth = this.textHeight = 0; +this.boxWidth = this.vwr.apiPlatform.getImageWidth(this.image) * this.fontScale * this.imageScale; +this.boxHeight = this.vwr.apiPlatform.getImageHeight(this.image) * this.fontScale * this.imageScale; +this.ascent = 0; +return; +}if (this.text == null) { +this.text = null; +this.lines = null; +this.widths = null; +return; +}if (this.font == null) return; +this.lines = JU.PT.split(this.text, (this.text.indexOf("\n") >= 0 ? "\n" : "|")); +this.textWidth = 0; +this.widths = Clazz_newIntArray (this.lines.length, 0); +for (var i = this.lines.length; --i >= 0; ) this.textWidth = Math.max(this.textWidth, this.widths[i] = this.stringWidth(this.lines[i])); + +this.textHeight = this.lines.length * this.lineHeight; +this.boxWidth = this.textWidth + (this.fontScale >= 2 ? 16 : 8); +this.boxHeight = this.textHeight + (this.fontScale >= 2 ? 16 : 8); +}); +Clazz_defineMethod(c$, "setPosition", +function(scalePixelsPerMicron, imageFontScaling, isAbsolute, boxXY){ +if (boxXY == null) boxXY = this.boxXY; + else this.boxXY = boxXY; +this.setWindow(this.vwr.gdata.width, this.vwr.gdata.height, scalePixelsPerMicron); +if (scalePixelsPerMicron != 0 && this.scalePixelsPerMicron != 0) this.setFontScale(scalePixelsPerMicron / this.scalePixelsPerMicron); + else if (this.fontScale != imageFontScaling) this.setFontScale(imageFontScaling); +if (this.doFormatText) { +this.text = (this.isEcho ? this.vwr.formatText(this.textUnformatted) : this.textUnformatted); +this.recalc(); +} else { +if (this.textUnformatted != null && this.textUnformatted.startsWith("%SCALE")) { +var ret = Clazz_newFloatArray (2, 0); +this.text = this.vwr.getScaleText(this.textUnformatted.substring(6).trim(), this.vwr.antialiased, (this.xyz == null ? 15 : 8), ret); +this.barPixels = Clazz_floatToInt(ret[0] * (this.vwr.antialiased ? 2 : 1)); +this.barDistance = ret[1]; +this.recalc(); +}}var dx = this.offsetX * imageFontScaling; +var dy = this.offsetY * imageFontScaling; +this.xAdj = (this.fontScale >= 2 ? 8 : 4); +this.yAdj = this.ascent - this.lineHeight + this.xAdj; +if (!this.isEcho || this.pymolOffset != null) { +boxXY[0] = this.movableX; +boxXY[1] = this.movableY; +var isAng = !this.isPymolOffsetPixels(); +if (this.pymolOffset != null && isAng) { +var pixelsPerAngstrom = this.vwr.tm.scaleToScreen(this.z, 1000); +var pz = this.pymolOffset[3]; +var dz = (pz < 0 ? -1 : 1) * Math.max(pz == 0 ? 0.5 : 0, Math.abs(pz) - 1) * pixelsPerAngstrom; +this.z -= Clazz_floatToInt(dz); +pixelsPerAngstrom = this.vwr.tm.scaleToScreen(this.z, 1000); +dx = (this.xyz != null && this.barPixels > 0 ? 0 : this.getPymolXYOffset(this.pymolOffset[1], this.textWidth, pixelsPerAngstrom)); +var dh = this.ascent - this.descent; +dy = -this.getPymolXYOffset(-this.pymolOffset[2], dh, pixelsPerAngstrom) - Clazz_doubleToInt((this.textHeight + dh) / 2); +if (this.pymolOffset[0] == 1) { +dy -= this.descent; +}this.xAdj = (this.fontScale >= 2 ? 8 : 4); +this.yAdj = -this.descent; +boxXY[0] = this.movableX - this.xAdj; +boxXY[1] = this.movableY - this.yAdj; +isAbsolute = true; +this.boxYoff2 = -2; +} else { +this.boxYoff2 = 0; +}if (this.pymolOffset == null) switch (this.align) { +case 8: +dy = 0; +dx = 0; +break; +case 12: +boxXY[0] -= this.boxWidth; +case 4: +dy = 0; +break; +} +JM.Text.setBoxXY(this.boxWidth, this.boxHeight, dx, dy, boxXY, isAbsolute); +} else { +this.setPos(this.fontScale); +}this.boxX = boxXY[0]; +this.boxY = boxXY[1]; +if (this.adjustForWindow) this.setBoxOffsetsInWindow(0, this.isEcho ? 0 : 16 * this.fontScale + this.lineHeight, this.boxY - this.textHeight); +this.y0 = this.boxY + this.yAdj; +if (this.isMeasure && this.align != 8) this.y0 += this.ascent + (this.lines.length - 1) / 2 * this.lineHeight; +}, "~N,~N,~B,~A"); +Clazz_defineMethod(c$, "getPymolXYOffset", +function(x, width, ppa){ +var f = (x < -1 ? -1 : x > 1 ? 0 : (x - 1) / 2); +var offset = (x < -1 || x > 1 ? x + (x < 0 ? 1 : -1) : 0); +return f * width + offset * ppa; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setPos", +function(scale){ +var xLeft; +var xCenter; +var xRight; +var is3dEcho = (this.xyz != null); +if (this.valign == 3 || this.valign == 4) { +var x = (this.movableXPercent != 2147483647 ? Clazz_doubleToInt(this.movableXPercent * this.windowWidth / 100) : is3dEcho ? this.movableX : this.movableX * scale); +var offsetX = this.offsetX * scale; +xLeft = xRight = xCenter = x + offsetX + this.barPixels; +} else { +xLeft = 5 * scale; +xCenter = Clazz_doubleToInt((this.windowWidth + this.barPixels) / 2); +xRight = this.windowWidth - xLeft; +xLeft += this.barPixels; +}switch (this.align) { +case 8: +this.boxXY[0] = xCenter - this.boxWidth / 2; +break; +case 12: +this.boxXY[0] = xRight - this.boxWidth; +break; +default: +this.boxXY[0] = xLeft; +break; +} +this.boxXY[1] = 0; +switch (this.valign) { +case 0: +break; +case 2: +this.boxXY[1] = Clazz_doubleToInt(this.windowHeight / 2); +break; +case 1: +this.boxXY[1] = this.windowHeight; +break; +default: +var y = (this.movableYPercent != 2147483647 ? Clazz_doubleToInt(this.movableYPercent * this.windowHeight / 100) : is3dEcho ? this.movableY : this.movableY * scale); +this.boxXY[1] = (is3dEcho ? y : (this.windowHeight - y)) + this.offsetY * scale; +} +if (this.align == 8) this.boxXY[1] -= (this.image != null ? this.boxHeight : this.xyz != null ? this.boxHeight : this.ascent - this.boxHeight) / 2; + else if (this.image != null) this.boxXY[1] -= 0; + else if (this.xyz != null) this.boxXY[1] -= Clazz_doubleToInt(this.ascent / 2); +}, "~N"); +c$.setBoxXY = Clazz_defineMethod(c$, "setBoxXY", +function(boxWidth, boxHeight, xOffset, yOffset, boxXY, isAbsolute){ +var xBoxOffset; +var yBoxOffset; +if (xOffset > 0 || isAbsolute) { +xBoxOffset = xOffset; +} else { +xBoxOffset = -boxWidth; +if (xOffset == 0) xBoxOffset /= 2; + else xBoxOffset += xOffset; +}if (isAbsolute || yOffset > 0) { +yBoxOffset = -boxHeight - yOffset; +} else if (yOffset == 0) { +yBoxOffset = -boxHeight / 2; +} else { +yBoxOffset = -yOffset; +}boxXY[0] += xBoxOffset; +boxXY[1] += yBoxOffset; +boxXY[2] = boxWidth; +boxXY[3] = boxHeight; +}, "~N,~N,~N,~N,~A,~B"); +Clazz_defineMethod(c$, "stringWidth", +function(str){ +var w = 0; +var f = 1; +var subscale = 1; +if (str == null) return 0; +if (str.indexOf(""))) { +var i1 = str.indexOf(">", i); +if (i1 >= 0) { +i = i1; +continue; +}}if (i + 5 <= len && ((s = str.substring(i, i + 5)).equals("") || s.equals(""))) { +i += 4; +f = subscale; +continue; +}if (i + 6 <= len && ((s = str.substring(i, i + 6)).equals("") || s.equals(""))) { +i += 5; +f = 1; +continue; +}}w += this.font.stringWidth(str.substring(i, i + 1)) * f; +} +return w; +}, "~S"); +Clazz_defineMethod(c$, "setXYA", +function(xy, i){ +if (i == 0) { +xy[2] = this.boxX; +switch (this.align) { +case 8: +xy[2] += this.boxWidth / 2; +break; +case 12: +xy[2] += this.boxWidth - this.xAdj; +break; +default: +xy[2] += this.xAdj; +} +xy[0] = xy[2]; +xy[1] = this.y0; +}switch (this.align) { +case 8: +xy[0] = xy[2] - Clazz_doubleToInt(this.widths[i] / 2); +break; +case 12: +xy[0] = xy[2] - this.widths[i]; +} +xy[1] += this.lineHeight; +}, "~A,~N"); +Clazz_defineMethod(c$, "appendFontCmd", +function(s){ +s.append(" " + J.shape.Shape.getFontCommand("echo", this.font)); +if (this.scalePixelsPerMicron > 0) s.append(" " + (10000 / this.scalePixelsPerMicron)); +}, "JU.SB"); +Clazz_defineMethod(c$, "setScalePixelsPerMicron", +function(scalePixelsPerMicron){ +this.fontScale = 0; +this.scalePixelsPerMicron = scalePixelsPerMicron; +}, "~N"); +Clazz_defineMethod(c$, "setXYZ", +function(xyz, doAdjust){ +this.xyz = xyz; +if (xyz == null) { +this.zSlab = -2147483648; +this.pymolOffset = null; +}if (doAdjust) { +this.valign = (xyz == null ? 3 : 4); +this.adjustForWindow = (xyz == null); +}}, "JU.P3,~B"); +Clazz_defineMethod(c$, "setTranslucent", +function(level, isBackground){ +if (isBackground) { +if (this.bgcolix != 0) this.bgcolix = JU.C.getColixTranslucent3(this.bgcolix, !Float.isNaN(level), level); +} else { +this.colix = JU.C.getColixTranslucent3(this.colix, !Float.isNaN(level), level); +}}, "~N,~B"); +Clazz_defineMethod(c$, "setMovableX", +function(x){ +this.valign = (this.valign == 4 ? 4 : 3); +this.movableX = x; +this.movableXPercent = 2147483647; +}, "~N"); +Clazz_defineMethod(c$, "setMovableY", +function(y){ +this.valign = (this.valign == 4 ? 4 : 3); +this.movableY = y; +this.movableYPercent = 2147483647; +}, "~N"); +Clazz_defineMethod(c$, "setMovableXPercent", +function(x){ +this.valign = (this.valign == 4 ? 4 : 3); +this.movableX = 2147483647; +this.movableXPercent = x; +}, "~N"); +Clazz_defineMethod(c$, "setMovableYPercent", +function(y){ +this.valign = (this.valign == 4 ? 4 : 3); +this.movableY = 2147483647; +this.movableYPercent = y; +}, "~N"); +Clazz_defineMethod(c$, "setMovableZPercent", +function(z){ +if (this.valign != 4) this.valign = 3; +this.movableZ = 2147483647; +this.movableZPercent = z; +}, "~N"); +Clazz_defineMethod(c$, "setZs", +function(z, zSlab){ +this.z = z; +this.zSlab = zSlab; +}, "~N,~N"); +Clazz_defineMethod(c$, "setXYZs", +function(x, y, z, zSlab){ +this.setMovableX(x); +this.setMovableY(y); +this.setZs(z, zSlab); +}, "~N,~N,~N,~N"); +Clazz_defineMethod(c$, "setScript", +function(script){ +this.script = (script == null || script.length == 0 ? null : script); +}, "~S"); +Clazz_defineMethod(c$, "setAlignmentLCR", +function(align){ +if (align != null) { +if ("left".equals(align)) return this.setAlignment(4); +if ("center".equals(align)) return this.setAlignment(8); +if ("right".equals(align)) return this.setAlignment(12); +}return false; +}, "~S"); +Clazz_defineMethod(c$, "setAlignment", +function(align){ +if (this.align != align) { +this.align = align; +this.recalc(); +}return true; +}, "~N"); +Clazz_defineMethod(c$, "setBoxOffsetsInWindow", +function(margin, vMargin, vTop){ +var bw = this.boxWidth + margin; +var x = this.boxX; +if (x + bw > this.windowWidth) x = this.windowWidth - bw; +if (x < margin) x = margin; +this.boxX = x; +var bh = this.boxHeight; +var y = vTop; +if (y + bh > this.windowHeight) y = this.windowHeight - bh; +if (y < vMargin) y = vMargin; +this.boxY = y; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setWindow", +function(width, height, scalePixelsPerMicron){ +this.windowWidth = width; +this.windowHeight = height; +if (this.pymolOffset == null && this.scalePixelsPerMicron < 0 && scalePixelsPerMicron != 0) this.setScalePixelsPerMicron(scalePixelsPerMicron); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "checkObjectClicked", +function(isAntialiased, x, y, bsVisible){ +if (this.hidden || this.script == null || this.modelIndex >= 0 && !bsVisible.get(this.modelIndex)) return false; +if (isAntialiased) { +x <<= 1; +y <<= 1; +}return (x >= this.boxX && x <= this.boxX + this.boxWidth && y >= this.boxY && y <= this.boxY + this.boxHeight); +}, "~B,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "getPymolScreenOffset", +function(atomPt, screen, zSlab, pTemp, sppm){ +var isPixel = this.isPymolOffsetPixels(); +var isRelative = this.isPymolOffsetRelative(); +if (atomPt != null && isRelative) pTemp.setT(atomPt); + else pTemp.set(0, 0, 0); +pTemp.add3(this.pymolOffset[4], this.pymolOffset[5], this.pymolOffset[6]); +this.vwr.tm.transformPtScr(pTemp, screen); +if (isPixel) { +screen.x += this.pymolOffset[1]; +screen.y += this.pymolOffset[2]; +screen.z += this.pymolOffset[3]; +}this.setXYZs(screen.x, screen.y, screen.z, zSlab); +}, "JU.P3,JU.P3i,~N,JU.P3,~N"); +Clazz_defineMethod(c$, "isPymolOffsetRelative", +function(){ +var mode = (this.pymolOffset == null ? -1 : Clazz_floatToInt(this.pymolOffset[0])); +return ((mode & 1) == 1); +}); +Clazz_defineMethod(c$, "isPymolOffsetPixels", +function(){ +var mode = (this.pymolOffset == null ? -1 : Clazz_floatToInt(this.pymolOffset[0])); +return (mode != -1 && ((mode & 2) == 2)); +}); +Clazz_defineMethod(c$, "getStateText", +function(){ +return (this.doFormatText ? JU.PT.rep(this.text, "@{", "\\@{") : this.text); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.textUnformatted; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.Shape", "java.util.Hashtable"], "J.shape.TextShape", ["JU.P3", "$.PT", "JU.C", "$.Logger"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.objects = null; +this.currentObject = null; +this.currentFont = null; +this.currentColor = null; +this.currentBgColor = null; +this.currentTranslucentLevel = 0; +this.currentBgTranslucentLevel = 0; +this.thisID = null; +this.isHover = false; +this.isAll = false; +Clazz_instantialize(this, arguments);}, J.shape, "TextShape", J.shape.Shape); +Clazz_prepareFields (c$, function(){ +this.objects = new java.util.Hashtable(); +}); +Clazz_defineMethod(c$, "setPropTS", +function(propertyName, value, bsSelected){ +if ("text" === propertyName) { +var text = value; +if (this.currentObject != null) { +this.currentObject.setText(text); +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.setText(text); + +}return; +}if ("font" === propertyName) { +this.currentFont = value; +if (this.currentObject != null) { +this.currentObject.setFont(this.currentFont, true); +this.currentObject.setFontScale(0); +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.setFont(this.currentFont, true); + +}return; +}if ("allOff" === propertyName) { +this.currentObject = null; +this.isAll = true; +this.objects = new java.util.Hashtable(); +return; +}if ("delete" === propertyName) { +if (Clazz_instanceOf(value,"JM.Text")) { +this.currentObject = value; +}if (this.currentObject != null) { +this.objects.remove(this.currentObject.target); +this.currentObject = null; +} else if (this.isAll || this.thisID != null) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +var text = e.next(); +if (this.isAll || JU.PT.isMatch(text.target.toUpperCase(), this.thisID, true, true)) { +e.remove(); +}} +}return; +}if ("off" === propertyName) { +if (this.isAll) { +this.objects = new java.util.Hashtable(); +this.isAll = false; +this.currentObject = null; +return; +}if (this.currentObject != null) { +this.objects.remove(this.currentObject.target); +this.currentObject = null; +} else if (this.thisID != null) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +var text = e.next(); +if (this.isAll || JU.PT.isMatch(text.target.toUpperCase(), this.thisID, true, true)) { +e.remove(); +}} +}}if ("model" === propertyName) { +var modelIndex = (value).intValue(); +if (this.currentObject != null) { +this.currentObject.modelIndex = modelIndex; +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.modelIndex = modelIndex; + +}return; +}if ("align" === propertyName) { +var align = value; +if (this.currentObject != null) { +if (!this.currentObject.setAlignmentLCR(align)) JU.Logger.error("unrecognized align:" + align); +} else if (this.isAll) { +for (var obj, $obj = this.objects.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) obj.setAlignmentLCR(align); + +}return; +}if ("bgcolor" === propertyName) { +this.currentBgColor = value; +if (this.currentObject != null) { +this.currentObject.bgcolix = JU.C.getColixO(value); +} else if (this.isAll) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +e.next().bgcolix = JU.C.getColixO(value); +} +}return; +}if ("color" === propertyName) { +this.currentColor = value; +if (this.currentObject != null) { +this.currentObject.colix = JU.C.getColixO(value); +} else if (this.isAll || this.thisID != null) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +var text = e.next(); +if (this.isAll || JU.PT.isMatch(text.target.toUpperCase(), this.thisID, true, true)) { +text.colix = JU.C.getColixO(value); +}} +}return; +}if ("target" === propertyName) { +var target = value; +this.isAll = target.equals("all"); +if (this.isAll || target.equals("none")) { +this.currentObject = null; +}return; +}var isBackground; +if ((isBackground = ("bgtranslucency" === propertyName)) || "translucency" === propertyName) { +var isTranslucent = ("translucent" === value); +if (isBackground) this.currentBgTranslucentLevel = (isTranslucent ? this.translucentLevel : 0); + else this.currentTranslucentLevel = (isTranslucent ? this.translucentLevel : 0); +if (this.currentObject != null) { +this.currentObject.setTranslucent(this.translucentLevel, isBackground); +} else if (this.isAll) { +var e = this.objects.values().iterator(); +while (e.hasNext()) { +e.next().setTranslucent(this.translucentLevel, isBackground); +} +}return; +}if (propertyName === "deleteModelAtoms") { +var modelIndex = ((value)[2])[0]; +var e = this.objects.values().iterator(); +while (e.hasNext()) { +var text = e.next(); +if (text.modelIndex == modelIndex) { +e.remove(); +} else if (text.modelIndex > modelIndex) { +text.modelIndex--; +}} +return; +}this.setPropS(propertyName, value, bsSelected); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "getShapeState", +function(){ +return null; +}); +Clazz_overrideMethod(c$, "initModelSet", +function(){ +this.currentObject = null; +this.isAll = false; +}); +Clazz_overrideMethod(c$, "setModelVisibilityFlags", +function(bsModels){ +if (!this.isHover) for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.visible = (t.modelIndex < 0 || bsModels.get(t.modelIndex) && (!t.thisModelOnly || bsModels.cardinality() == 1 && t.modelIndex == this.vwr.am.cmi)); + +}, "JU.BS"); +Clazz_overrideMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +if (this.isHover || modifiers == 0) return null; +var isAntialiased = this.vwr.antialiased; +for (var obj, $obj = this.objects.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (obj.checkObjectClicked(isAntialiased, x, y, bsVisible)) { +if (obj.script != null) this.vwr.evalStringQuiet(obj.script); +var map = new java.util.Hashtable(); +map.put("pt", (obj.xyz == null ? new JU.P3() : obj.xyz)); +var modelIndex = obj.modelIndex; +if (modelIndex < 0) modelIndex = 0; +map.put("modelIndex", Integer.$valueOf(modelIndex)); +map.put("model", this.vwr.getModelNumberDotted(modelIndex)); +map.put("id", obj.target); +map.put("type", "echo"); +return map; +}} +return null; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_overrideMethod(c$, "checkObjectHovered", +function(x, y, bsVisible){ +if (this.isHover) return false; +var haveScripts = false; +var isAntialiased = this.vwr.antialiased; +for (var obj, $obj = this.objects.values().iterator (); $obj.hasNext()&& ((obj = $obj.next ()) || true);) { +if (obj.script != null) { +haveScripts = true; +if (obj.checkObjectClicked(isAntialiased, x, y, bsVisible)) { +this.vwr.setCursor(12); +return true; +}}} +if (haveScripts) this.vwr.setCursor(0); +return false; +}, "~N,~N,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.AtomShape", "java.util.Hashtable", "JU.P3"], "J.shape.Labels", ["JU.AU", "$.BS", "$.PT", "J.c.PAL", "JM.LabelToken", "$.Text", "JS.SV", "JU.BSUtil", "$.C", "$.Font", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.strings = null; +this.formats = null; +this.bgcolixes = null; +this.fids = null; +this.offsets = null; +this.atomLabels = null; +this.labelBoxes = null; +this.bsFontSet = null; +this.bsBgColixSet = null; +this.defaultOffset = 0; +this.defaultAlignment = 0; +this.defaultZPos = 0; +this.defaultFontId = 0; +this.defaultColix = 0; +this.defaultBgcolix = 0; +this.defaultPaletteID = 0; +this.defaultPointer = 0; +this.zeroFontId = 0; +this.setDefaults = false; +this.isScaled = false; +this.scalePixelsPerMicron = 0; +this.ptTemp = null; +this.pickedAtom = -1; +this.lastPicked = -1; +this.pickedOffset = 0; +this.pickedX = 0; +this.pickedY = 0; +Clazz_instantialize(this, arguments);}, J.shape, "Labels", J.shape.AtomShape); +Clazz_prepareFields (c$, function(){ +this.atomLabels = new java.util.Hashtable(); +this.ptTemp = new JU.P3(); +}); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.defaultFontId = this.zeroFontId = this.vwr.gdata.getFont3DFSS("SansSerif", "Plain", 13).fid; +this.defaultColix = 0; +this.defaultBgcolix = 0; +this.defaultOffset = JV.JC.LABEL_DEFAULT_OFFSET; +this.defaultAlignment = 4; +this.defaultPointer = 0; +this.defaultZPos = 0; +this.translucentAllowed = false; +}); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +this.isActive = true; +var atoms = this.ms.at; +var ac = this.ms.ac; +if ("setDefaults" === propertyName) { +this.setDefaults = (value).booleanValue(); +return; +}if ("color" === propertyName) { +var pid = J.c.PAL.pidOf(value); +var colix = JU.C.getColixO(value); +if (this.setDefaults) { +this.defaultColix = colix; +this.defaultPaletteID = pid; +} else { +var n = this.checkColixLength(colix, bs.length()); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) this.setLabelColix(i, colix, pid); + +}return; +}if ("scalereference" === propertyName) { +if (this.strings == null) return; +var val = (value).floatValue(); +var scalePixelsPerMicron = (val == 0 ? 0 : 10000 / val); +var n = Math.min(ac, this.strings.length); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) { +var text = this.getLabel(i); +if (text == null) { +text = JM.Text.newLabel(this.vwr, null, this.strings[i], 0, 0, 0, scalePixelsPerMicron); +this.putLabel(i, text); +} else { +text.setScalePixelsPerMicron(scalePixelsPerMicron); +}} +return; +}if ("label" === propertyName) { +var isPicked = (this.isPickingMode() && bs.cardinality() == 1 && bs.nextSetBit(0) == this.lastPicked); +this.setScaling(); +var tokens = null; +var nbs = this.checkStringLength(bs.length()); +if (this.defaultColix != 0 || this.defaultPaletteID != 0) this.checkColixLength(this.defaultColix, bs.length()); +if (this.defaultBgcolix != 0) this.checkBgColixLength(this.defaultBgcolix, bs.length()); +if (Clazz_instanceOf(value,"JU.Lst")) { +var list = value; +var n = list.size(); +tokens = Clazz_newArray(-1, [null]); +for (var pt = 0, i = bs.nextSetBit(0); i >= 0 && i < nbs; i = bs.nextSetBit(i + 1)) { +if (pt >= n) { +this.setLabel(J.shape.Labels.nullToken, "", i, !isPicked); +continue; +}tokens[0] = null; +this.setLabel(tokens, JS.SV.sValue(list.get(pt++)), i, !isPicked); +} +} else { +var strLabel = value; +tokens = (strLabel == null || strLabel.length == 0 ? J.shape.Labels.nullToken : Clazz_newArray(-1, [null])); +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setLabel(tokens, strLabel, i, !isPicked); + +}return; +}if (propertyName.startsWith("label:")) { +this.setScaling(); +this.checkStringLength(ac); +var label = propertyName.substring(6); +if (label.length == 0) label = null; +this.setLabel( Clazz_newArray(-1, [null]), label, (value).intValue(), false); +return; +}if ("clearBoxes" === propertyName) { +this.labelBoxes = null; +return; +}if ("translucency" === propertyName || "bgtranslucency" === propertyName) { +return; +}if ("bgcolor" === propertyName) { +this.isActive = true; +if (this.bsBgColixSet == null) this.bsBgColixSet = JU.BS.newN(ac); +var bgcolix = JU.C.getColixO(value); +if (this.setDefaults) { +this.defaultBgcolix = bgcolix; +} else { +var n = this.checkBgColixLength(bgcolix, bs.length()); +for (var i = bs.nextSetBit(0); i >= 0 && i < n; i = bs.nextSetBit(i + 1)) this.setBgcolix(i, bgcolix); + +}return; +}if (this.bsFontSet == null) this.bsFontSet = JU.BS.newN(ac); +if ("fontsize" === propertyName) { +var fontsize = (value).intValue(); +if (fontsize < 0) { +this.fids = null; +return; +}var f; +if (this.setDefaults) { +f = JU.Font.getFont3D(this.defaultFontId); +this.defaultFontId = this.vwr.getFont3D(f.fontFace, f.fontStyle, fontsize).fid; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) { +f = JU.Font.getFont3D(this.fids == null || i >= this.fids.length ? this.fids[i] : this.defaultFontId); +this.setFont(i, this.vwr.getFont3D(f.fontFace, f.fontStyle, fontsize).fid); +} +}return; +}if ("font" === propertyName) { +var fid = (value).fid; +if (this.setDefaults) { +this.defaultFontId = fid; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setFont(i, fid); + +}return; +}if ("offset" === propertyName) { +if (Clazz_instanceOf(value, Integer)) { +var offset = (value).intValue(); +if (this.setDefaults) { +this.defaultOffset = offset; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setOffsets(i, offset); + +}} else if (!this.setDefaults) { +this.checkColixLength(-1, ac); +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setPymolOffset(i, value); + +}return; +}if ("align" === propertyName) { +var type = value; +var hAlignment = (type.equalsIgnoreCase("right") ? 12 : type.equalsIgnoreCase("center") ? 8 : 4); +if (this.setDefaults) { +this.defaultAlignment = hAlignment; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setHorizAlignment(i, hAlignment); + +}return; +}if ("pointer" === propertyName) { +var pointer = (value).intValue(); +if (this.setDefaults) { +this.defaultPointer = pointer; +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setPointer(i, pointer); + +}return; +}if ("front" === propertyName) { +var TF = (value).booleanValue(); +if (this.setDefaults) { +this.defaultZPos = (TF ? 32 : 0); +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setZPos(i, 32, TF); + +}return; +}if ("group" === propertyName) { +var TF = (value).booleanValue(); +if (this.setDefaults) { +this.defaultZPos = (TF ? 16 : 0); +} else { +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) this.setZPos(i, 16, TF); + +}return; +}if ("display" === propertyName || "toggleLabel" === propertyName) { +var mode = ("toggleLabel" === propertyName ? 0 : (value).booleanValue() ? 1 : -1); +if (this.mads == null) this.mads = Clazz_newShortArray (ac, 0); +var strLabelPDB = null; +var tokensPDB = null; +var strLabelUNK = null; +var tokensUNK = null; +var strLabel; +var tokens; +var nstr = this.checkStringLength(bs.length()); +var bgcolix = this.defaultBgcolix; +var nbg = this.checkBgColixLength(bgcolix, bs.length()); +var thisMad = (mode >= 0 ? 1 : -1); +for (var i = bs.nextSetBit(0); i >= 0 && i < ac; i = bs.nextSetBit(i + 1)) { +var atom = atoms[i]; +if (i < nstr && this.strings[i] != null) { +this.mads[i] = (mode == 1 || mode == 0 && this.mads[i] < 0 ? 1 : -1); +} else { +this.mads[i] = thisMad; +if (atom.getGroup3(false).equals("UNK")) { +if (strLabelUNK == null) { +strLabelUNK = this.vwr.getStandardLabelFormat(1); +tokensUNK = JM.LabelToken.compile(this.vwr, strLabelUNK, '\0', null); +}strLabel = strLabelUNK; +tokens = tokensUNK; +} else { +if (strLabelPDB == null) { +strLabelPDB = this.vwr.getStandardLabelFormat(2); +tokensPDB = JM.LabelToken.compile(this.vwr, strLabelPDB, '\0', null); +}strLabel = strLabelPDB; +tokens = tokensPDB; +}this.strings[i] = JM.LabelToken.formatLabelAtomArray(this.vwr, atom, tokens, '\0', null, this.ptTemp); +this.formats[i] = strLabel; +this.bsSizeSet.set(i); +if (i < nbg && !this.bsBgColixSet.get(i)) this.setBgcolix(i, this.defaultBgcolix); +}atom.setShapeVisibility(this.vf, this.strings != null && i < this.strings.length && this.strings[i] != null && this.mads[i] >= 0); +} +return; +}if ("pymolLabels" === propertyName) { +this.setPymolLabels(value, bs); +return; +}if (propertyName === "deleteModelAtoms") { +this.labelBoxes = null; +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +this.fids = JU.AU.deleteElements(this.fids, firstAtomDeleted, nAtomsDeleted); +this.bgcolixes = JU.AU.deleteElements(this.bgcolixes, firstAtomDeleted, nAtomsDeleted); +this.offsets = JU.AU.deleteElements(this.offsets, firstAtomDeleted, nAtomsDeleted); +this.formats = JU.AU.deleteElements(this.formats, firstAtomDeleted, nAtomsDeleted); +this.strings = JU.AU.deleteElements(this.strings, firstAtomDeleted, nAtomsDeleted); +JU.BSUtil.deleteBits(this.bsFontSet, bs); +JU.BSUtil.deleteBits(this.bsBgColixSet, bs); +}this.setPropAS(propertyName, value, bs); +}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "isPickingMode", +function(){ +return (this.vwr.getPickingMode() == 2 && this.labelBoxes != null); +}); +Clazz_defineMethod(c$, "checkStringLength", +function(n){ +var ac = this.ms.ac; +n = Math.min(ac, n); +if (this.strings == null || n > this.strings.length) { +this.formats = JU.AU.ensureLengthS(this.formats, n); +this.strings = JU.AU.ensureLengthS(this.strings, n); +if (this.bsSizeSet == null) this.bsSizeSet = JU.BS.newN(n); +}return n; +}, "~N"); +Clazz_defineMethod(c$, "checkBgColixLength", +function(colix, n){ +n = Math.min(this.ms.ac, n); +if (colix == 0) return (this.bgcolixes == null ? 0 : this.bgcolixes.length); +if (this.bgcolixes == null || n > this.bgcolixes.length) this.bgcolixes = JU.AU.ensureLengthShort(this.bgcolixes, n); +return n; +}, "~N,~N"); +Clazz_defineMethod(c$, "setPymolLabels", +function(labels, bsSelected){ +this.setScaling(); +var n = this.checkStringLength(this.ms.ac); +this.checkColixLength(-1, n); +for (var i = bsSelected.nextSetBit(0); i >= 0 && i < n; i = bsSelected.nextSetBit(i + 1)) this.setPymolLabel(i, labels.get(Integer.$valueOf(i)), null); + +}, "java.util.Map,JU.BS"); +Clazz_defineMethod(c$, "setPymolOffset", +function(i, value){ +var text = this.getLabel(i); +if (text == null) { +if (this.strings == null || i >= this.strings.length || this.strings[i] == null) return; +var fid = (this.bsFontSet != null && this.bsFontSet.get(i) ? this.fids[i] : -1); +if (fid < 0) this.setFont(i, fid = this.defaultFontId); +var a = this.ms.at[i]; +text = JM.Text.newLabel(this.vwr, JU.Font.getFont3D(fid), this.strings[i], this.getColix2(i, a, false), this.getColix2(i, a, true), 0, this.scalePixelsPerMicron); +this.setPymolLabel(i, text, this.formats[i]); +}text.pymolOffset = value; +}, "~N,~A"); +Clazz_defineMethod(c$, "setScaling", +function(){ +this.isActive = true; +if (this.bsSizeSet == null) this.bsSizeSet = JU.BS.newN(this.ms.ac); +this.isScaled = this.vwr.getBoolean(603979847); +this.scalePixelsPerMicron = (this.isScaled ? this.vwr.getScalePixelsPerAngstrom(false) * 10000 : 0); +}); +Clazz_defineMethod(c$, "setPymolLabel", +function(i, t, format){ +if (t == null) return; +var label = t.text; +var atom = this.ms.at[i]; +if (atom == null) return; +this.addString(atom, i, label, format == null ? JU.PT.rep(label, "%", "%%") : format); +atom.setShapeVisibility(this.vf, true); +if (t.colix >= 0) this.setLabelColix(i, t.colix, J.c.PAL.UNKNOWN.id); +this.setFont(i, t.font.fid); +this.putLabel(i, t); +}, "~N,JM.Text,~S"); +Clazz_defineMethod(c$, "setLabel", +function(temp, strLabel, i, doAll){ +var atom = this.ms.at[i]; +var tokens = temp[0]; +if (tokens == null) tokens = temp[0] = JM.LabelToken.compile(this.vwr, strLabel, '\0', null); +var label = (tokens == null ? null : JM.LabelToken.formatLabelAtomArray(this.vwr, atom, tokens, '\0', null, this.ptTemp)); +var isNew = this.addString(atom, i, label, strLabel); +doAll = new Boolean (doAll |(isNew || label == null)).valueOf(); +var text = this.getLabel(i); +if (this.isScaled && doAll) { +text = JM.Text.newLabel(this.vwr, null, label, 0, 0, 0, this.scalePixelsPerMicron); +this.putLabel(i, text); +} else if (text != null) { +if (label == null) { +this.putLabel(i, null); +} else { +text.setText(label); +text.textUnformatted = strLabel; +}}if (!doAll) return; +if (this.defaultOffset != JV.JC.LABEL_DEFAULT_OFFSET) this.setOffsets(i, this.defaultOffset); +if (this.defaultAlignment != 4) this.setHorizAlignment(i, this.defaultAlignment); +if ((this.defaultZPos & 32) != 0) this.setZPos(i, 32, true); + else if ((this.defaultZPos & 16) != 0) this.setZPos(i, 16, true); +if (this.defaultPointer != 0) this.setPointer(i, this.defaultPointer); +if (this.defaultColix != 0 || this.defaultPaletteID != 0) this.setLabelColix(i, this.defaultColix, this.defaultPaletteID); +if (this.defaultBgcolix != 0) this.setBgcolix(i, this.defaultBgcolix); +if (this.defaultFontId != this.zeroFontId) this.setFont(i, this.defaultFontId); +}, "~A,~S,~N,~B"); +Clazz_defineMethod(c$, "addString", +function(atom, i, label, strLabel){ +atom.setShapeVisibility(this.vf, label != null); +var notNull = (strLabel != null); +var isNew = (this.strings[i] == null); +this.strings[i] = label; +this.formats[i] = (notNull && strLabel.indexOf("%{") >= 0 ? label : strLabel); +this.bsSizeSet.setBitTo(i, notNull); +return isNew; +}, "JM.Atom,~N,~S,~S"); +Clazz_overrideMethod(c$, "getProperty", +function(property, index){ +if (property.equals("font")) return JU.Font.getFont3D(this.defaultFontId); +if (property.equals("offsets")) return this.offsets; +if (property.equals("label")) return (this.strings != null && index < this.strings.length && this.strings[index] != null ? this.strings[index] : ""); +return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "putLabel", +function(i, text){ +if (text == null) this.atomLabels.remove(Integer.$valueOf(i)); + else { +this.atomLabels.put(Integer.$valueOf(i), text); +text.textUnformatted = this.formats[i]; +}}, "~N,JM.Text"); +Clazz_defineMethod(c$, "getLabel", +function(i){ +return this.atomLabels.get(Integer.$valueOf(i)); +}, "~N"); +Clazz_defineMethod(c$, "putBox", +function(i, boxXY){ +if (this.labelBoxes == null) this.labelBoxes = new java.util.Hashtable(); +this.labelBoxes.put(Integer.$valueOf(i), boxXY); +}, "~N,~A"); +Clazz_defineMethod(c$, "getBox", +function(i){ +if (this.labelBoxes == null) return null; +return this.labelBoxes.get(Integer.$valueOf(i)); +}, "~N"); +Clazz_defineMethod(c$, "setLabelColix", +function(i, colix, pid){ +this.setColixAndPalette(colix, pid, i); +var text; +if (this.colixes != null && ((text = this.getLabel(i)) != null)) text.colix = this.colixes[i]; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "setBgcolix", +function(i, bgcolix){ +this.bgcolixes[i] = bgcolix; +this.bsBgColixSet.setBitTo(i, bgcolix != 0); +var text = this.getLabel(i); +if (text != null) text.bgcolix = bgcolix; +}, "~N,~N"); +Clazz_defineMethod(c$, "setOffsets", +function(i, offset){ +if (this.offsets == null || i >= this.offsets.length) { +if (offset == JV.JC.LABEL_DEFAULT_OFFSET) return; +this.offsets = JU.AU.ensureLengthI(this.offsets, this.ms.ac); +}this.offsets[i] = (this.offsets[i] & 63) | offset; +var text = this.getLabel(i); +if (text != null) text.setOffset(offset); +}, "~N,~N"); +Clazz_defineMethod(c$, "setHorizAlignment", +function(i, hAlign){ +if (this.offsets == null || i >= this.offsets.length) { +switch (hAlign) { +case 0: +case 4: +return; +} +this.offsets = JU.AU.ensureLengthI(this.offsets, this.ms.ac); +}if (hAlign == 0) hAlign = 4; +this.offsets[i] = JV.JC.setHorizAlignment(this.offsets[i], hAlign); +var text = this.getLabel(i); +if (text != null) text.setAlignment(hAlign); +}, "~N,~N"); +Clazz_defineMethod(c$, "setPointer", +function(i, pointer){ +if (this.offsets == null || i >= this.offsets.length) { +if (pointer == 0) return; +this.offsets = JU.AU.ensureLengthI(this.offsets, this.ms.ac); +}this.offsets[i] = JV.JC.setPointer(this.offsets[i], pointer); +var text = this.getLabel(i); +if (text != null) text.pointer = pointer; +}, "~N,~N"); +Clazz_defineMethod(c$, "setZPos", +function(i, flag, TF){ +if (this.offsets == null || i >= this.offsets.length) { +if (!TF) return; +this.offsets = JU.AU.ensureLengthI(this.offsets, this.ms.ac); +}this.offsets[i] = JV.JC.setZPosition(this.offsets[i], TF ? flag : 0); +}, "~N,~N,~B"); +Clazz_defineMethod(c$, "setFont", +function(i, fid){ +if (this.fids == null || i >= this.fids.length) { +if (fid == this.zeroFontId) return; +this.fids = JU.AU.ensureLengthI(this.fids, this.ms.ac); +}this.fids[i] = fid; +this.bsFontSet.set(i); +var text = this.getLabel(i); +if (text != null) { +text.setFontFromFid(fid); +}}, "~N,~N"); +Clazz_overrideMethod(c$, "setAtomClickability", +function(){ +if (this.strings == null) return; +for (var i = this.strings.length; --i >= 0; ) { +var label = this.strings[i]; +if (label != null && this.ms.at.length > i && this.ms.at[i] != null && !this.ms.isAtomHidden(i)) this.ms.at[i].setClickable(this.vf); +} +}); +Clazz_overrideMethod(c$, "checkObjectClicked", +function(x, y, modifiers, bsVisible, drawPicking){ +if (!this.isPickingMode()) return null; +var iAtom = this.findNearestLabel(x, y); +if (iAtom < 0) return null; +var map = new java.util.Hashtable(); +map.put("type", "label"); +map.put("atomIndex", Integer.$valueOf(iAtom)); +this.lastPicked = iAtom; +return map; +}, "~N,~N,~N,JU.BS,~B"); +Clazz_overrideMethod(c$, "checkObjectDragged", +function(prevX, prevY, x, y, dragAction, bsVisible){ +if (!this.isPickingMode()) return false; +if (prevX == -2147483648) { +var iAtom = this.findNearestLabel(x, y); +if (iAtom >= 0) { +this.pickedAtom = iAtom; +this.lastPicked = this.pickedAtom; +this.vwr.acm.setDragAtomIndex(iAtom); +this.pickedX = x; +this.pickedY = y; +this.pickedOffset = (this.offsets == null || this.pickedAtom >= this.offsets.length ? JV.JC.LABEL_DEFAULT_OFFSET : this.offsets[this.pickedAtom]); +return true; +}return false; +}if (prevX == 2147483647) this.pickedAtom = -1; +if (this.pickedAtom < 0) return false; +this.move2D(this.pickedAtom, x, y); +return true; +}, "~N,~N,~N,~N,~N,JU.BS"); +Clazz_defineMethod(c$, "findNearestLabel", +function(x, y){ +if (this.labelBoxes == null) return -1; +var dmin = 3.4028235E38; +var imin = -1; +var zmin = 3.4028235E38; +var afactor = (this.vwr.antialiased ? 2 : 1); +var atoms = this.ms.at; +for (var entry, $entry = this.labelBoxes.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +if (!atoms[entry.getKey().intValue()].isVisible(this.vf | 9)) continue; +var boxXY = entry.getValue(); +var dx = (x - boxXY[0]) * afactor; +var dy = (y - boxXY[1]) * afactor; +if (dx <= 0 || dy <= 0 || dx >= boxXY[2] || dy >= boxXY[3] || boxXY[4] > zmin) continue; +zmin = boxXY[4]; +var d = Math.min(Math.abs(dx - boxXY[2] / 2), Math.abs(dy - boxXY[3] / 2)); +if (d <= dmin) { +dmin = d; +imin = entry.getKey().intValue(); +}} +return imin; +}, "~N,~N"); +Clazz_defineMethod(c$, "move2D", +function(pickedAtom, x, y){ +var xOffset = JV.JC.getXOffset(this.pickedOffset); +var yOffset = JV.JC.getYOffset(this.pickedOffset); +xOffset += x - this.pickedX; +yOffset -= y - this.pickedY; +var offset = JV.JC.getOffset(xOffset, yOffset, true); +this.setOffsets(pickedAtom, offset); +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "getColix2", +function(i, atom, isBg){ +var colix; +if (isBg) { +colix = (this.bgcolixes == null || i >= this.bgcolixes.length) ? 0 : this.bgcolixes[i]; +} else { +colix = (this.colixes == null || i >= this.colixes.length) ? 0 : this.colixes[i]; +colix = JU.C.getColixInherited(colix, atom.colixAtom); +if (JU.C.isColixTranslucent(colix)) colix = JU.C.getColixTranslucent3(colix, false, 0); +}return colix; +}, "~N,JM.Atom,~B"); +c$.nullToken = Clazz_newArray(-1, [null]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.api.JmolMeasurementClient", "J.shape.AtomShape", "JU.Lst"], "J.shape.Measures", ["java.util.Hashtable", "JU.AU", "$.BS", "$.PT", "$.SB", "JM.Measurement", "$.MeasurementData", "JU.BSUtil", "$.C", "$.Escape"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.bsSelected = null; +this.strFormat = null; +this.mustBeConnected = false; +this.mustNotBeConnected = false; +this.radiusData = null; +this.intramolecular = null; +this.measureAllModels = false; +this.measurementCount = 0; +this.measurements = null; +this.mPending = null; +this.colix = 0; +this.tickInfo = null; +this.defaultTickInfo = null; +this.font3d = null; +this.htMin = null; +this.tokAction = 0; +Clazz_instantialize(this, arguments);}, J.shape, "Measures", J.shape.AtomShape, J.api.JmolMeasurementClient); +Clazz_prepareFields (c$, function(){ +this.measurements = new JU.Lst(); +}); +Clazz_defineMethod(c$, "getSelected", +function(){ +return this.bsSelected; +}); +Clazz_overrideMethod(c$, "initModelSet", +function(){ +for (var i = this.measurements.size(); --i >= 0; ) { +var m = this.measurements.get(i); +if (m != null) m.ms = this.ms; +} +}); +Clazz_overrideMethod(c$, "initShape", +function(){ +if (this.font3d == null) this.font3d = this.vwr.gdata.getFont3D(18); +}); +Clazz_overrideMethod(c$, "setSize", +function(size, bsSelected){ +this.mad = size; +}, "~N,JU.BS"); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bsAtoms){ +var mt; +if ("clearModelIndex" === propertyName) { +for (var i = 0; i < this.measurementCount; i++) this.measurements.get(i).setModelIndex(0); + +return; +}if ("color" === propertyName) { +this.setColor(JU.C.getColixO(value)); +return; +}if ("font" === propertyName) { +this.font3d = value; +return; +}if ("hideAll" === propertyName) { +this.showHide((value).booleanValue()); +return; +}if ("pending" === propertyName) { +this.mPending = value; +if (this.mPending == null) return; +if (this.mPending.count > 1) this.vwr.setStatusMeasuring("measurePending", this.mPending.count, J.shape.Measures.getMessage(this.mPending, false), this.mPending.value); +return; +}var isRefresh; +if ((isRefresh = ("refresh" === propertyName)) || "refreshTrajectories" === propertyName) { +for (var i = this.measurements.size(); --i >= 0; ) if ((mt = this.measurements.get(i)) != null && (isRefresh || mt.isTrajectory)) mt.refresh(null); + +return; +}if ("select" === propertyName) { +var bs = value; +if (JU.BSUtil.cardinalityOf(bs) == 0) { +this.bsSelected = null; +} else { +this.bsSelected = new JU.BS(); +this.bsSelected.or(bs); +}return; +}if ("selectall" === propertyName) { +this.bsSelected = JU.BSUtil.newBitSet2(0, this.measurementCount); +return; +}if ("setFormats" === propertyName) { +this.setFormats(value); +return; +}this.measureAllModels = this.vwr.getBoolean(603979877); +if ("delete" === propertyName) { +this.deleteO(value); +this.setIndices(); +return; +}this.bsSelected = null; +if ("maps" === propertyName) { +var maps = value; +for (var i = 0; i < maps.length; i++) { +var len = maps[i].length; +if (len < 2 || len > 4) continue; +var v = Clazz_newIntArray (len + 1, 0); +v[0] = len; +System.arraycopy(maps[i], 0, v, 1, len); +this.toggleOn(v); +} +} else if ("measure" === propertyName) { +var md = value; +this.tickInfo = md.tickInfo; +if (md.tickInfo != null && md.tickInfo.id.equals("default")) { +this.defaultTickInfo = md.tickInfo; +return; +}if (md.isAll && md.points.size() == 2 && Clazz_instanceOf(md.points.get(0),"JU.BS")) { +var type = JM.Measurement.nmrType(this.vwr.getDistanceUnits(md.strFormat)); +switch (type) { +case 2: +md.htMin = this.vwr.getNMRCalculation().getMinDistances(md); +} +}this.tickInfo = md.tickInfo; +this.radiusData = md.radiusData; +this.htMin = md.htMin; +this.mustBeConnected = md.mustBeConnected; +this.mustNotBeConnected = md.mustNotBeConnected; +this.intramolecular = md.intramolecular; +this.strFormat = md.strFormat; +if (md.isAll) { +if (this.tickInfo != null) this.define(md, 12291); +if (md.bsSelected != null) this.bsSelected = md.bsSelected; +this.define(md, md.tokAction); +this.setIndices(); +return; +}var m = this.setSingleItem(md.points); +m.setFromMD(md, false); +switch (md.tokAction) { +case 266284: +this.doAction(md, md.thisID, 266284); +break; +case 12291: +this.defineAll(-2147483648, m, true, false, false); +this.setIndices(); +break; +case 1073742335: +this.showHideM(m, false); +break; +case 1073742334: +this.showHideM(m, true); +break; +case 1665140738: +if (md.thisID != null) this.doAction(md, md.thisID, 1665140738); +break; +case 12290: +if (md.thisID == null) { +this.deleteM(m); +} else { +this.deleteO(md.thisID); +}this.toggle(m); +break; +case 1275082241: +this.bsSelected = new JU.BS(); +this.processNextMeasure(md, m); +break; +case 268438018: +this.toggle(m); +} +return; +}if ("clear" === propertyName) { +this.clear(); +return; +}if ("atomsDeleted" === propertyName) { +for (var i = this.measurementCount; --i >= 0; ) { +out : for (var iatom = bsAtoms.nextSetBit(0); iatom >= 0; iatom = bsAtoms.nextSetBit(iatom + 1)) { +mt = this.measurements.get(i); +var indices = mt.countPlusIndices; +for (var j = 1; j <= indices[0]; j++) { +if (indices[j] == iatom) { +this.deleteI(i); +break out; +}} +} +} +return; +}if ("deleteModelAtoms" === propertyName) { +var modelIndex = ((value)[2])[0]; +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +var atomMax = firstAtomDeleted + nAtomsDeleted; +for (var i = this.measurementCount; --i >= 0; ) { +mt = this.measurements.get(i); +var indices = mt.countPlusIndices; +for (var j = 1; j <= indices[0]; j++) { +var iAtom = indices[j]; +if (iAtom >= firstAtomDeleted) { +if (iAtom < atomMax) { +this.deleteI(i); +break; +}indices[j] -= nAtomsDeleted; +} else if (iAtom < 0) { +var pt = mt.getAtom(j); +if (pt.mi > modelIndex) { +pt.mi--; +} else if (pt.mi == modelIndex) { +this.deleteI(i); +break; +}}} +} +return; +}if ("reformatDistances" === propertyName) { +this.reformatDistances(value == null); +return; +}if ("hide" === propertyName) { +if ((typeof(value)=='string')) { +this.doAction(null, value, 12294); +} else { +this.showHideM( new JM.Measurement().setPoints(this.ms, value, null, null), true); +}return; +}if ("refresh" === propertyName) { +this.doAction(value, null, 266284); +return; +}if ("show" === propertyName) { +if ((typeof(value)=='string')) { +this.doAction(null, value, 134222350); +} else { +this.showHideM( new JM.Measurement().setPoints(this.ms, value, null, null), false); +}return; +}if ("toggle" === propertyName) { +if ((typeof(value)=='string')) { +this.doAction(null, value, 268438018); +} else { +this.toggle( new JM.Measurement().setPoints(this.ms, value, null, null)); +}return; +}if ("toggleOn" === propertyName) { +if ((typeof(value)=='string')) { +this.doAction(null, value, 1073742335); +} else { +this.toggleOn(value); +}return; +}}, "~S,~O,JU.BS"); +Clazz_defineMethod(c$, "setSingleItem", +function(vector){ +var points = new Array(4); +var indices = Clazz_newIntArray (5, 0); +indices[0] = vector.size(); +for (var i = vector.size(); --i >= 0; ) { +var value = vector.get(i); +if (Clazz_instanceOf(value,"JU.BS")) { +var atomIndex = (value).nextSetBit(0); +if (atomIndex < 0) return null; +indices[i + 1] = atomIndex; +} else { +points[i] = value; +indices[i + 1] = -2 - i; +}} +return new JM.Measurement().setPoints(this.ms, indices, points, this.tickInfo == null ? this.defaultTickInfo : this.tickInfo); +}, "JU.Lst"); +Clazz_overrideMethod(c$, "getProperty", +function(property, index){ +if ("pending".equals(property)) return this.mPending; +if ("count".equals(property)) return Integer.$valueOf(this.measurementCount); +if ("countPlusIndices".equals(property)) return (index < this.measurementCount ? this.measurements.get(index).countPlusIndices : null); +if ("stringValue".equals(property)) return (index < this.measurementCount ? this.measurements.get(index).getString() : null); +if ("pointInfo".equals(property)) return this.measurements.get(Clazz_doubleToInt(index / 10)).getLabel(index % 10, false, false); +if ("info".equals(property)) return this.getAllInfo(); +if ("infostring".equals(property)) return this.getAllInfoAsString(); +if ("selected".equals(property)) return (this.bsSelected == null ? new JU.BS() : JU.BSUtil.copy(this.bsSelected)); +return null; +}, "~S,~N"); +Clazz_defineMethod(c$, "clear", +function(){ +if (this.measurementCount == 0) return; +this.measurementCount = 0; +this.measurements.clear(); +this.mPending = null; +this.vwr.setStatusMeasuring("measureDeleted", -1, "all", 0); +}); +Clazz_defineMethod(c$, "setColor", +function(colix){ +if (this.bsColixSet == null) this.bsColixSet = new JU.BS(); +if (this.bsSelected == null) this.colix = colix; +var mt; +for (var i = this.measurements.size(); --i >= 0; ) if ((mt = this.measurements.get(i)) != null && (this.bsSelected != null && this.bsSelected.get(i) || this.bsSelected == null && (colix == 0 || mt.colix == 0))) { +mt.colix = colix; +this.bsColixSet.set(i); +} +}, "~N"); +Clazz_defineMethod(c$, "setFormats", +function(format){ +if (format != null && format.length == 0) format = null; +var isDefault = "default".equals(format); +if (isDefault || JM.Measurement.isUnits(format)) { +if (isDefault) format = null; +for (var i = this.measurements.size(); --i >= 0; ) if (this.bsSelected == null || this.bsSelected.get(i)) { +var m = this.measurements.get(i); +m.units = format; +m.formatMeasurement(null); +} +} else { +for (var i = this.measurements.size(); --i >= 0; ) if (this.bsSelected == null || this.bsSelected.get(i)) this.measurements.get(i).formatMeasurementAs(format, null, false); + +}}, "~S"); +Clazz_defineMethod(c$, "showHide", +function(isHide){ +for (var i = this.measurements.size(); --i >= 0; ) if (this.bsSelected == null || this.bsSelected.get(i)) this.measurements.get(i).isHidden = isHide; + +}, "~B"); +Clazz_defineMethod(c$, "showHideM", +function(m, isHide){ +var i = this.find(m); +if (i >= 0) this.measurements.get(i).isHidden = isHide; +}, "JM.Measurement,~B"); +Clazz_defineMethod(c$, "toggle", +function(m){ +this.radiusData = null; +this.htMin = null; +var i = this.find(m); +var mt; +if (i >= 0 && !(mt = this.measurements.get(i)).isHidden) this.defineAll(i, mt, true, false, false); + else this.defineAll(-1, m, false, true, false); +this.setIndices(); +}, "JM.Measurement"); +Clazz_defineMethod(c$, "toggleOn", +function(indices){ +this.radiusData = null; +this.htMin = null; +this.bsSelected = new JU.BS(); +var m = new JM.Measurement().setPoints(this.ms, indices, null, this.defaultTickInfo); +this.defineAll(-2147483648, m, false, true, true); +var i = this.find(m); +if (i >= 0) this.bsSelected.set(i); +this.setIndices(); +this.reformatDistances(false); +}, "~A"); +Clazz_defineMethod(c$, "deleteM", +function(m){ +this.radiusData = null; +this.htMin = null; +var i = this.find(m); +if (i >= 0) this.defineAll(i, this.measurements.get(i), true, false, false); +this.setIndices(); +}, "JM.Measurement"); +Clazz_defineMethod(c$, "deleteO", +function(value){ +if (Clazz_instanceOf(value, Integer)) { +this.deleteI((value).intValue()); +} else if ((typeof(value)=='string')) { +this.doAction(null, value, 12291); +} else if (JU.AU.isAI(value)) { +this.defineAll(-2147483648, new JM.Measurement().setPoints(this.ms, value, null, null), true, false, false); +}}, "~O"); +Clazz_defineMethod(c$, "defineAll", +function(iPt, m, isDelete, isShow, doSelect){ +if (!this.measureAllModels) { +if (isDelete) { +if (iPt == -2147483648) iPt = this.find(m); +if (iPt >= 0) this.deleteI(iPt); +return; +}this.defineMeasurement(iPt, m, doSelect); +return; +}if (isShow) { +this.defineAll(iPt, m, true, false, false); +if (isDelete) return; +}var points = new JU.Lst(); +var nPoints = m.count; +var atoms = this.ms.at; +for (var i = 1; i <= nPoints; i++) { +var atomIndex = m.getAtomIndex(i); +points.addLast(atomIndex >= 0 ? this.ms.getAtoms(1094715393, Integer.$valueOf(atoms[atomIndex].getAtomNumber())) : m.getAtom(i)); +} +this.define(( new JM.MeasurementData().init(null, this.vwr, points)).set(this.tokAction, this.htMin, this.radiusData, m.property, this.strFormat, null, this.tickInfo, this.mustBeConnected, this.mustNotBeConnected, this.intramolecular, true, 0, 0, null, NaN, null), (isDelete ? 12291 : 12290)); +}, "~N,JM.Measurement,~B,~B,~B"); +Clazz_defineMethod(c$, "find", +function(m){ +return (m.thisID == null ? JM.Measurement.find(this.measurements, m) : -1); +}, "JM.Measurement"); +Clazz_defineMethod(c$, "setIndices", +function(){ +for (var i = 0; i < this.measurementCount; i++) this.measurements.get(i).index = i; + +}); +Clazz_defineMethod(c$, "define", +function(md, tokAction){ +this.tokAction = tokAction; +if (md.bsSelected != null) { +for (var i = this.measurementCount; --i >= 0; ) if (md.bsSelected.get(i)) this.processNextMeasure(md, this.measurements.get(i)); + +return; +}if (tokAction == 1275082241) this.bsSelected = new JU.BS(); +md.define(this, this.ms); +}, "JM.MeasurementData,~N"); +Clazz_overrideMethod(c$, "processNextMeasure", +function(md, m){ +var iThis = this.find(m); +if (md.tokAction == 1275082241) { +if (iThis < 0 || !this.isInRange(NaN, m)) return; +this.bsSelected.set(iThis); +}if (iThis >= 0) { +if (this.tokAction == 12291) { +if (this.isInRange(NaN, m)) this.deleteI(iThis); +} else if (md.tokAction == 1275082241) { +var mThis = this.measurements.get(iThis); +mThis.setFromMD(md, true); +if (this.strFormat != null && md.strFormat == null) { +mThis.formatMeasurementAs(this.strFormat, md.units, true); +} else if (md.units != null) { +mThis.strFormat = null; +mThis.units = (md.units.equals("default") ? null : md.units); +mThis.formatMeasurement(null); +}} else { +this.measurements.get(iThis).isHidden = (this.tokAction == 1073742334); +}} else if (this.tokAction == 12290 || this.tokAction == 268438018) { +m.tickInfo = (this.tickInfo == null ? this.defaultTickInfo : this.tickInfo); +this.defineMeasurement(-1, m, true); +}}, "JM.MeasurementData,JM.Measurement"); +Clazz_defineMethod(c$, "isInRange", +function(val, m){ +return !(this.htMin != null && !m.isMin(this.htMin) || this.radiusData != null && !m.isInRange(this.radiusData, val == val ? val : m.getMeasurement(null))); +}, "~N,JM.Measurement"); +Clazz_defineMethod(c$, "defineMeasurement", +function(i, m, doSelect){ +var value = m.getMeasurement(null); +if (!this.isInRange(value, m)) return; +if (i == -2147483648) i = this.find(m); +if (i >= 0) { +this.measurements.get(i).isHidden = false; +if (doSelect) this.bsSelected.set(i); +return; +}var measureNew = new JM.Measurement().setM(this.ms, m, value, (m.colix == 0 ? this.colix : m.colix), this.strFormat, this.measurementCount); +if (!measureNew.$isValid) return; +this.measurements.addLast(measureNew); +this.vwr.setStatusMeasuring("measureCompleted", this.measurementCount++, J.shape.Measures.getMessage(measureNew, false), measureNew.value); +}, "~N,JM.Measurement,~B"); +c$.getMessage = Clazz_defineMethod(c$, "getMessage", +function(m, asBitSet){ +var sb = new JU.SB(); +sb.append("["); +for (var i = 1; i <= m.count; i++) { +if (i > 1) sb.append(", "); +sb.append(m.getLabel(i, asBitSet, false)); +} +sb.append(", "); +sb.append(m.getString()); +sb.append("]"); +return sb.toString(); +}, "JM.Measurement,~B"); +Clazz_defineMethod(c$, "deleteI", +function(i){ +if (i >= this.measurements.size() || i < 0) return; +var msg = J.shape.Measures.getMessage(this.measurements.get(i), true); +this.measurements.removeItemAt(i); +this.measurementCount--; +this.vwr.setStatusMeasuring("measureDeleted", i, msg, 0); +this.bsSelected = null; +}, "~N"); +Clazz_defineMethod(c$, "doAction", +function(md, id, tok){ +id = id.toUpperCase().$replace('?', '*'); +var isWild = JU.PT.isWild(id); +for (var i = this.measurements.size(); --i >= 0; ) { +var m = this.measurements.get(i); +if (m.thisID != null && (m.thisID.equalsIgnoreCase(id) || isWild && JU.PT.isMatch(m.thisID.toUpperCase(), id, true, true))) switch (tok) { +case 266284: +m.setFromMD(md, true); +break; +case 1665140738: +m.mad = md.mad; +break; +case 12291: +var msg = J.shape.Measures.getMessage(this.measurements.get(i), true); +this.measurements.removeItemAt(i); +this.measurementCount--; +this.vwr.setStatusMeasuring("measureDeleted", i, msg, 0); +break; +case 134222350: +m.isHidden = false; +break; +case 12294: +m.isHidden = true; +break; +case 268438018: +m.isHidden = !m.isHidden; +break; +case 1073742335: +m.isHidden = false; +break; +} +} +}, "JM.MeasurementData,~S,~N"); +Clazz_defineMethod(c$, "reformatDistances", +function(isDefault){ +for (var i = this.measurementCount; --i >= 0; ) this.measurements.get(i).reformatDistanceIfSelected(isDefault); + +}, "~B"); +Clazz_defineMethod(c$, "getAllInfo", +function(){ +var info = new JU.Lst(); +for (var i = 0; i < this.measurementCount; i++) { +info.addLast(this.getInfo(i)); +} +return info; +}); +Clazz_defineMethod(c$, "getAllInfoAsString", +function(){ +var info = "Measurement Information"; +for (var i = 0; i < this.measurementCount; i++) { +info += "\n" + this.getInfoAsString(i); +} +return info; +}); +Clazz_defineMethod(c$, "getInfo", +function(index){ +var m = this.measurements.get(index); +var count = m.count; +var info = new java.util.Hashtable(); +info.put("index", Integer.$valueOf(index)); +info.put("type", (count == 2 ? "distance" : count == 3 ? "angle" : "dihedral")); +info.put("strMeasurement", m.getString()); +info.put("count", Integer.$valueOf(count)); +info.put("id", "" + m.thisID); +info.put("value", Float.$valueOf(m.value)); +info.put("hidden", Boolean.$valueOf(m.isHidden)); +info.put("visible", Boolean.$valueOf(m.isVisible)); +var tickInfo = m.tickInfo; +if (tickInfo != null) { +info.put("ticks", tickInfo.ticks); +if (tickInfo.scale != null) info.put("tickScale", tickInfo.scale); +if (tickInfo.tickLabelFormats != null) info.put("tickLabelFormats", tickInfo.tickLabelFormats); +if (!Float.isNaN(tickInfo.first)) info.put("tickStart", Float.$valueOf(tickInfo.first)); +}var atomsInfo = new JU.Lst(); +var atoms = this.ms.at; +for (var i = 1; i <= count; i++) { +var atomInfo = new java.util.Hashtable(); +var atomIndex = m.getAtomIndex(i); +atomInfo.put("_ipt", Integer.$valueOf(atomIndex)); +atomInfo.put("coord", JU.Escape.eP(m.getAtom(i))); +atomInfo.put("atomno", Integer.$valueOf(atomIndex < 0 ? -1 : atoms[atomIndex].getAtomNumber())); +atomInfo.put("info", (atomIndex < 0 ? "" : atoms[atomIndex].getInfo())); +atomsInfo.addLast(atomInfo); +} +info.put("atoms", atomsInfo); +return info; +}, "~N"); +Clazz_defineMethod(c$, "getInfoAsString", +function(index){ +return this.measurements.get(index).getInfoAsString(null); +}, "~N"); +Clazz_defineMethod(c$, "setVisibilityInfo", +function(){ +var bsModels = this.vwr.getVisibleFramesBitSet(); +out : for (var i = this.measurementCount; --i >= 0; ) { +var m = this.measurements.get(i); +m.isVisible = false; +if (this.mad == 0 || m.isHidden) continue; +for (var iAtom = m.count; iAtom > 0; iAtom--) { +var atomIndex = m.getAtomIndex(iAtom); +if (atomIndex >= 0) { +if (!this.ms.at[atomIndex].isClickable()) continue out; +} else { +var modelIndex = m.getAtom(iAtom).mi; +if (modelIndex >= 0 && !bsModels.get(modelIndex)) continue out; +}} +m.isVisible = true; +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.TextShape"], "J.shape.Echo", ["java.util.Hashtable", "JU.Lst", "$.PT", "JM.Text", "JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.scaleObject = null; +Clazz_instantialize(this, arguments);}, J.shape, "Echo", J.shape.TextShape); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.setProperty("target", "top", null); +}); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bs){ +if ("target" === propertyName) { +if ("%SCALE".equals(value)) { +this.currentObject = this.scaleObject; +this.thisID = "%SCALE"; +if (this.currentObject != null) return; +}var target = (value).intern().toLowerCase(); +if (JU.PT.isWild(target)) { +propertyName = "thisID"; +} else if (target !== "none" && target !== "all") { +this.isAll = false; +var text = (this.thisID === "%SCALE" ? this.scaleObject : this.objects.get(target)); +if (text == null) { +var valign = 3; +var halign = 4; +if ("top" === target) { +valign = 0; +halign = 8; +} else if ("middle" === target) { +valign = 2; +halign = 8; +} else if ("bottom" === target) { +valign = 1; +} else if ("error" === target) { +valign = 0; +}text = JM.Text.newEcho(this.vwr, this.vwr.gdata.getFont3DFS("Serif", 20), target, 10, valign, halign, 0); +text.adjustForWindow = true; +if (this.thisID === "%SCALE") { +this.scaleObject = text; +} else { +this.objects.put(target, text); +if (target.startsWith("_!_")) { +text.thisModelOnly = true; +}}if (this.currentFont != null) text.setFont(this.currentFont, true); +if (this.currentColor != null) text.colix = JU.C.getColixO(this.currentColor); +if (this.currentBgColor != null) text.bgcolix = JU.C.getColixO(this.currentBgColor); +if (this.currentTranslucentLevel != 0) text.setTranslucent(this.currentTranslucentLevel, false); +if (this.currentBgTranslucentLevel != 0) text.setTranslucent(this.currentBgTranslucentLevel, true); +}this.currentObject = text; +if (this.thisID !== "%SCALE") this.thisID = null; +return; +}}if ("thisID" === propertyName) { +if (value == null) { +this.currentObject = null; +this.thisID = null; +return; +}var target = value; +if (target === "%SCALE") { +this.currentObject = this.scaleObject; +this.thisID = target; +} else { +this.currentObject = this.objects.get(target); +if (this.currentObject == null && JU.PT.isWild(target)) this.thisID = target.toUpperCase(); +}return; +}if ("%SCALE" === propertyName) { +this.currentObject = this.scaleObject = value; +this.thisID = "%SCALE"; +return; +}if ("color" === propertyName || "font" === propertyName) { +if (this.scaleObject != null && this.currentObject === this.scaleObject) { +var f = this.currentFont; +var c = this.currentColor; +this.setPropTS(propertyName, value, bs); +this.currentFont = f; +this.currentColor = c; +return; +}}if ("off" === propertyName) { +if (this.currentObject != null && this.currentObject === this.scaleObject) { +this.currentObject = this.scaleObject = null; +return; +}}if ("text" === propertyName) { +if ((value).startsWith("%SCALE")) { +this.thisID = "%SCALE"; +this.setPropTS("text", value, null); +this.scaleObject = this.currentObject; +if (this.scaleObject != null && this.objects.get(this.scaleObject.target) === this.scaleObject) this.setPropTS("delete", this.scaleObject, null); +this.currentObject = this.scaleObject; +return; +}}if ("scalereference" === propertyName) { +if (this.currentObject != null) { +var val = (value).floatValue(); +this.currentObject.setScalePixelsPerMicron(val == 0 ? 0 : 10000 / val); +}return; +}if ("point" === propertyName) { +if (this.currentObject != null) { +var t = this.currentObject; +t.pointerPt = (value == null ? null : value); +t.pointer = (value == null ? 0 : 1); +}return; +}if ("xyz" === propertyName) { +if (this.currentObject != null) { +if (this.vwr.getBoolean(603979847)) { +this.currentObject.setScalePixelsPerMicron(this.vwr.getScalePixelsPerAngstrom(false) * 10000); +}this.currentObject.setXYZ(value, true); +}}if ("scale" === propertyName) { +if (this.currentObject != null) { +(this.currentObject).setScale((value).floatValue()); +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.setScale((value).floatValue()); + +}return; +}if ("image" === propertyName) { +if (this.currentObject != null) { +(this.currentObject).setImage(value); +} else if (this.isAll) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) t.setImage(value); + +}return; +}if ("hidden" === propertyName) { +var isHidden = (value).booleanValue(); +if (this.currentObject != null) { +(this.currentObject).hidden = isHidden; +} else if (this.isAll || this.thisID != null) { +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) if (this.isAll || JU.PT.isMatch(t.target.toUpperCase(), this.thisID, true, true)) t.hidden = isHidden; + +}return; +}if ("script" === propertyName) { +if (this.currentObject != null) this.currentObject.setScript(value); +return; +}if ("xpos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableX((value).intValue()); +}return; +}if ("ypos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableY((value).intValue()); +}return; +}if ("%xpos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableXPercent((value).intValue()); +}return; +}if ("%ypos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableYPercent((value).intValue()); +}return; +}if ("%zpos" === propertyName) { +if (this.currentObject != null) { +this.currentObject.setXYZ(null, true); +this.currentObject.setMovableZPercent((value).intValue()); +}return; +}if ("xypos" === propertyName) { +if (this.currentObject != null) { +var pt = value; +this.currentObject.setXYZ(null, true); +if (pt.z == 3.4028235E38) { +this.currentObject.setMovableX(Clazz_floatToInt(pt.x)); +this.currentObject.setMovableY(Clazz_floatToInt(pt.y)); +} else { +this.currentObject.setMovableXPercent(Clazz_floatToInt(pt.x)); +this.currentObject.setMovableYPercent(Clazz_floatToInt(pt.y)); +}}return; +}if ("offset" === propertyName) { +if (this.currentObject != null) { +this.currentObject.pymolOffset = value; +}return; +}if ("align" === propertyName) { +if (this.currentObject != null) { +this.currentObject.pymolOffset = null; +}}this.setPropTS(propertyName, value, null); +}, "~S,~O,JU.BS"); +Clazz_overrideMethod(c$, "getPropertyData", +function(property, data){ +if ("currentTarget" === property) { +return (this.currentObject != null && (data[0] = this.currentObject.target) != null); +}if (property === "%SCALE") { +data[0] = this.scaleObject; +return (data[0] != null); +}if (property === "checkID") { +var key = (data[0]).toUpperCase(); +var isWild = JU.PT.isWild(key); +for (var t, $t = this.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) { +var id = t.target; +if (id.equalsIgnoreCase(key) || isWild && JU.PT.isMatch(id.toUpperCase(), key, true, true)) { +data[1] = id; +return true; +}} +return false; +}return this.getPropShape(property, data); +}, "~S,~A"); +Clazz_overrideMethod(c$, "getShapeDetail", +function(){ +var lst = new java.util.Hashtable(); +for (var e, $e = this.objects.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var info = new java.util.Hashtable(); +var t = e.getValue(); +var name = e.getKey(); +info.put("boxXY", t.boxXY); +if (t.xyz != null) info.put("xyz", t.xyz); +var o = t.image; +if (o == null) { +info.put("text", t.text == null ? "" : t.text); +} else { +info.put("imageFile", t.text); +info.put("imageWidth", Integer.$valueOf(this.vwr.apiPlatform.getImageWidth(o))); +info.put("imageHeight", Integer.$valueOf(this.vwr.apiPlatform.getImageHeight(o))); +}lst.put(name, info); +} +var lst2 = new JU.Lst(); +lst2.addLast(lst); +return lst2; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.shape"); +Clazz_load(["J.shape.TextShape"], "J.shape.Hover", ["JU.AU", "JM.Text", "JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.hoverText = null; +this.atomIndex = -1; +this.xy = null; +this.text = null; +this.labelFormat = "%U"; +this.atomFormats = null; +this.specialLabel = null; +Clazz_instantialize(this, arguments);}, J.shape, "Hover", J.shape.TextShape); +Clazz_overrideMethod(c$, "initShape", +function(){ +this.isHover = true; +var font3d = this.vwr.gdata.getFont3DFSS("SansSerif", "Plain", 12); +var bgcolix = JU.C.getColixS("#FFFFC3"); +var colix = 4; +this.currentObject = this.hoverText = JM.Text.newLabel(this.vwr, font3d, null, colix, bgcolix, 4, 0); +this.hoverText.adjustForWindow = true; +}); +Clazz_overrideMethod(c$, "setProperty", +function(propertyName, value, bsSelected){ +if ("target" === propertyName) { +if (value == null) this.atomIndex = -1; + else { +this.atomIndex = (value).intValue(); +}return; +}if ("text" === propertyName) { +this.text = value; +if (this.text != null && this.text.length == 0) this.text = null; +return; +}if ("specialLabel" === propertyName) { +this.specialLabel = value; +return; +}if ("atomLabel" === propertyName) { +var text = value; +if (text != null && text.length == 0) text = null; +var count = this.ms.ac; +if (this.atomFormats == null || this.atomFormats.length < count) this.atomFormats = new Array(count); +for (var i = bsSelected.nextSetBit(0); i >= 0; i = bsSelected.nextSetBit(i + 1)) this.atomFormats[i] = text; + +return; +}if ("xy" === propertyName) { +this.xy = value; +return; +}if ("label" === propertyName) { +this.labelFormat = value; +if (this.labelFormat != null && this.labelFormat.length == 0) this.labelFormat = null; +return; +}if (propertyName === "deleteModelAtoms") { +if (this.atomFormats != null) { +var firstAtomDeleted = ((value)[2])[1]; +var nAtomsDeleted = ((value)[2])[2]; +this.atomFormats = JU.AU.deleteElements(this.atomFormats, firstAtomDeleted, nAtomsDeleted); +}this.atomIndex = -1; +return; +}this.setPropTS(propertyName, value, null); +}, "~S,~O,JU.BS"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(null, "J.render.TextRenderer", ["JM.Text"], function(){ +var c$ = Clazz_declareType(J.render, "TextRenderer", null); +c$.render = Clazz_defineMethod(c$, "render", +function(vwr, text, g3d, scalePixelsPerMicron, imageFontScaling, boxXY, temp, pTemp, pointerColix, pointerWidth, mode){ +if (text == null || text.image == null && !text.doFormatText && text.lines == null) return false; +var isAbsolute = ((mode & 64) != 0); +var doPointer = ((mode & 1) != 0); +var isAntialiased = ((mode & 4) != 0); +var colix = text.colix; +var showText = g3d.setC(colix); +if (!showText && (text.image == null && (text.bgcolix == 0 || !g3d.setC(text.bgcolix)))) return false; +if (text.isEcho && text.valign == 4) J.render.TextRenderer.calcBarPixelsXYZ(vwr, text, pTemp, false); +text.setPosition(scalePixelsPerMicron, imageFontScaling, isAbsolute, boxXY); +var barPixels = (text.isEcho && text.valign == 4 ? J.render.TextRenderer.calcBarPixelsXYZ(vwr, text, pTemp, false) : text.barPixels); +if (text.image == null) { +if (text.bgcolix != 0) { +if (g3d.setC(text.bgcolix)) J.render.TextRenderer.showBox(g3d, text.colix, Clazz_floatToInt(text.boxX) - (barPixels == 0 ? 0 : barPixels + 4), Clazz_floatToInt(text.boxY) + text.boxYoff2 * 2, text.z + 2, text.zSlab, Clazz_floatToInt(text.boxWidth) + barPixels, Clazz_floatToInt(text.boxHeight), text.fontScale, !text.isEcho); +if (!showText) return false; +}for (var i = 0; i < text.lines.length; i++) { +text.setXYA(temp, i); +if (text.xyz != null) temp[1] += 2; +g3d.drawString(text.lines[i], text.font, Clazz_floatToInt(temp[0]), Clazz_floatToInt(temp[1]), text.z, text.zSlab, text.bgcolix); +} +if (text.barPixels > 0) { +J.render.TextRenderer.renderScale(g3d, text, temp, barPixels, isAntialiased); +}} else { +g3d.drawImage(text.image, Clazz_floatToInt(text.boxX), Clazz_floatToInt(text.boxY), text.z, text.zSlab, text.bgcolix, Clazz_floatToInt(text.boxWidth), Clazz_floatToInt(text.boxHeight)); +}if (!doPointer) return true; +J.render.TextRenderer.drawLineXYZ(g3d, text.atomX, text.atomY, text.atomZ, text.boxX, text.boxY, text.zSlab, text.boxWidth, text.boxHeight, pointerColix, pointerWidth * (isAntialiased ? 2 : 1)); +return true; +}, "JV.Viewer,JM.Text,J.api.JmolRendererInterface,~N,~N,~A,~A,JU.P3i,~N,~N,~N"); +c$.calcBarPixelsXYZ = Clazz_defineMethod(c$, "calcBarPixelsXYZ", +function(vwr, t, pTemp, andSet){ +var barPixels = t.barPixels; +if (t.xyz != null) { +vwr.tm.transformPtScr(t.xyz, pTemp); +if (andSet) t.setXYZs(pTemp.x, pTemp.y, pTemp.z, pTemp.z); +if (barPixels > 0 && vwr.tm.perspectiveDepth) { +var d = vwr.tm.unscaleToScreen(pTemp.z, barPixels); +barPixels = t.barPixelsXYZ = Clazz_floatToInt(barPixels * t.barDistance / d); +}}return barPixels; +}, "JV.Viewer,JM.Text,JU.P3i,~B"); +c$.renderScale = Clazz_defineMethod(c$, "renderScale", +function(g3d, text, temp, barPixels, isAntialiased){ +var z = text.z; +var xoff = (text.xyz == null ? 0 : 2); +var ia = (isAntialiased ? 2 : 1); +var i = 1; +var x1 = xoff + Clazz_floatToInt(temp[0]) - barPixels - i - ia * 2; +var x2 = xoff + Clazz_floatToInt(temp[0]) - i - ia * 2; +var h = Clazz_doubleToInt((text.lineHeight) / 2); +var y = Clazz_floatToInt(temp[1]) - i; +g3d.fillTextRect(x1, y - Clazz_doubleToInt(h / 2) - ia, z, text.zSlab, x2 - x1, 2 * ia); +g3d.fillTextRect(x1, y - Clazz_doubleToInt(h * 2 / 2), z, text.zSlab, 2 * ia, Clazz_doubleToInt(h * 2 / 2)); +g3d.fillTextRect(x2, y - Clazz_doubleToInt(h * 2 / 2), z, text.zSlab, 2 * ia, Clazz_doubleToInt(h * 2 / 2)); +for (var j = 1; j < 10; j++) { +var x1b = x1 + Clazz_doubleToInt(j * barPixels / 10); +var len = (j == 5 ? h : Clazz_doubleToInt(h / 2)); +g3d.fillTextRect(x1b, y - len, z, text.zSlab, 2 * ia, len); +} +}, "J.api.JmolRendererInterface,JM.Text,~A,~N,~B"); +c$.drawLineXYZ = Clazz_defineMethod(c$, "drawLineXYZ", +function(g3d, x0, y0, z0, x1, y1, z1, w, h, pointerColix, pointerWidth){ +var offsetX = x1 - x0; +var offsetY = y1 - y0; +if (offsetX <= 0 && -offsetX <= w && offsetY <= 0 && -offsetY <= h) return; +var setX = (offsetY > 0 || offsetY < -h); +var pt = NaN; +x1 += (setX ? (offsetX > w / 2 ? 0 : offsetX < -w * 3 / 2 ? w : (pt = w / 2)) : (offsetX > 0 ? 0 : w)); +var setY = !Float.isNaN(pt); +y1 += (setY && offsetY > 0 ? 0 : setY && offsetY < -h ? h : h / 2); +if (pointerWidth > 1) { +g3d.fillCylinderXYZ(pointerColix, pointerColix, 2, pointerWidth, x0, y0, z0, Clazz_floatToInt(x1), Clazz_floatToInt(y1), z1); +} else { +g3d.setC(pointerColix); +g3d.drawLineXYZ(x0, y0, z0, Clazz_floatToInt(x1), Clazz_floatToInt(y1), z1); +}}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +c$.renderSimpleLabel = Clazz_defineMethod(c$, "renderSimpleLabel", +function(g3d, font, strLabel, colix, bgcolix, boxXY, z, zSlab, xOffset, yOffset, ascent, descent, pointerColix, pointerWidth, mode){ +var w = font.stringWidth(strLabel) + 8; +var h = ascent + descent + 8; +var x0 = Clazz_floatToInt(boxXY[0]); +var y0 = Clazz_floatToInt(boxXY[1]); +var isAbsolute = ((mode & 64) != 0); +var doPointer = ((mode & 1) != 0); +var isAntialiased = ((mode & 4) != 0); +JM.Text.setBoxXY(w, h, xOffset, yOffset, boxXY, isAbsolute); +var x = boxXY[0]; +var y = boxXY[1]; +if (bgcolix != 0 && g3d.setC(bgcolix)) { +J.render.TextRenderer.showBox(g3d, colix, Clazz_floatToInt(x), Clazz_floatToInt(y), z, zSlab, Clazz_floatToInt(w), Clazz_floatToInt(h), 1, true); +} else { +g3d.setC(colix); +}g3d.drawString(strLabel, font, Clazz_floatToInt(x + 4), Clazz_floatToInt(y + 4 + ascent), z - 1, zSlab, bgcolix); +if (doPointer && (xOffset != 0 || yOffset != 0)) { +J.render.TextRenderer.drawLineXYZ(g3d, x0, y0, zSlab, x, y, zSlab, w, h, pointerColix, pointerWidth * (isAntialiased ? 2 : 1)); +}}, "J.api.JmolRendererInterface,JU.Font,~S,~N,~N,~A,~N,~N,~N,~N,~N,~N,~N,~N,~N"); +c$.showBox = Clazz_defineMethod(c$, "showBox", +function(g3d, colix, x, y, z, zSlab, boxWidth, boxHeight, imageFontScaling, atomBased){ +g3d.fillTextRect(x, y, z, zSlab, boxWidth, boxHeight); +g3d.setC(colix); +if (!atomBased) return; +if (imageFontScaling >= 2) { +g3d.drawRect(x + 3, y + 3, z - 1, zSlab, boxWidth - 6, boxHeight - 6); +} else { +g3d.drawRect(x + 1, y + 1, z - 1, zSlab, boxWidth - 2, boxHeight - 2); +}}, "J.api.JmolRendererInterface,~N,~N,~N,~N,~N,~N,~N,~N,~B"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.FontLineShapeRenderer", "JU.P3", "$.P3i"], "J.render.LabelsRenderer", ["JM.Text", "J.render.TextRenderer", "JU.Font", "JV.JC"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.minZ = null; +this.ascent = 0; +this.descent = 0; +this.sppm = 0; +this.xy = null; +this.screen = null; +this.fidPrevious = 0; +this.pTemp = null; +this.bgcolix = 0; +this.labelColix = 0; +this.fid = 0; +this.atom = null; +this.atomPt = null; +this.doPointer = 0; +this.offset = 0; +this.textAlign = 0; +this.pointer = 0; +this.zSlab = -2147483648; +this.zBox = 0; +this.boxXY = null; +this.scalePixelsPerMicron = 0; +this.mode = 0; +Clazz_instantialize(this, arguments);}, J.render, "LabelsRenderer", J.render.FontLineShapeRenderer); +Clazz_prepareFields (c$, function(){ +this.minZ = Clazz_newIntArray (1, 0); +this.xy = Clazz_newFloatArray (3, 0); +this.screen = new JU.P3i(); +this.pTemp = new JU.P3(); +}); +Clazz_overrideMethod(c$, "render", +function(){ +this.fidPrevious = 0; +var labels = this.shape; +var labelStrings = labels.strings; +var fids = labels.fids; +var offsets = labels.offsets; +if (labelStrings == null) return false; +var atoms = this.ms.at; +var backgroundColixContrast = this.vwr.cm.colixBackgroundContrast; +var backgroundColor = this.vwr.getBackgroundArgb(); +this.sppm = this.vwr.getScalePixelsPerAngstrom(true); +this.scalePixelsPerMicron = (this.vwr.getBoolean(603979847) ? this.sppm * 10000 : 0); +this.imageFontScaling = this.vwr.imageFontScaling; +var iGroup = -1; +this.minZ[0] = 2147483647; +var isAntialiased = this.g3d.isAntialiased(); +for (var i = labelStrings.length; --i >= 0; ) { +this.atomPt = this.atom = atoms[i]; +if (!this.isVisibleForMe(this.atom)) continue; +var label = labelStrings[i]; +if (label == null || label.length == 0 || labels.mads != null && labels.mads[i] < 0) continue; +this.labelColix = labels.getColix2(i, this.atom, false); +this.bgcolix = labels.getColix2(i, this.atom, true); +if (this.bgcolix == 0 && this.vwr.gdata.getColorArgbOrGray(this.labelColix) == backgroundColor) this.labelColix = backgroundColixContrast; +this.fid = ((fids == null || i >= fids.length || fids[i] == 0) ? labels.zeroFontId : fids[i]); +this.offset = (offsets == null || i >= offsets.length ? 0 : offsets[i]); +var labelsFront = ((this.offset & 32) != 0); +var labelsGroup = ((this.offset & 16) != 0); +this.textAlign = JV.JC.getAlignment(this.offset); +this.pointer = JV.JC.getPointer(this.offset); +this.doPointer = (this.pointer & 1); +var isAbsolute = this.offset & 64; +this.mode = (this.doPointer | isAbsolute | (isAntialiased ? 4 : 0)); +this.zSlab = this.atom.sZ - Clazz_doubleToInt(this.atom.sD / 2) - 3; +if (this.zSlab < 1) this.zSlab = 1; +this.zBox = this.zSlab; +if (labelsGroup) { +var group = this.atom.group; +var ig = group.groupIndex; +if (ig != iGroup) { +group.getMinZ(atoms, this.minZ); +iGroup = ig; +}this.zBox = this.minZ[0]; +} else if (labelsFront) { +this.zBox = 1; +}if (this.zBox < 1) this.zBox = 1; +var text = labels.getLabel(i); +this.boxXY = (!this.isExport || this.vwr.creatingImage ? labels.getBox(i) : Clazz_newFloatArray (5, 0)); +if (this.boxXY == null) labels.putBox(i, this.boxXY = Clazz_newFloatArray (5, 0)); +text = this.renderLabelOrMeasure(text, label); +if (text != null) { +labels.putLabel(i, text); +}if (isAntialiased) { +this.boxXY[0] /= 2; +this.boxXY[1] /= 2; +}this.boxXY[4] = this.zBox; +} +return false; +}); +Clazz_defineMethod(c$, "renderLabelOrMeasure", +function(text, label){ +var newText = false; +var pointerColix = ((this.pointer & 2) != 0 && this.bgcolix != 0 ? this.bgcolix : this.labelColix); +if (text != null) { +if (text.font == null) text.setFontFromFid(this.fid); +text.atomX = this.atomPt.sX; +text.atomY = this.atomPt.sY; +text.atomZ = this.zSlab; +if (text.pymolOffset == null) { +text.setXYZs(this.atomPt.sX, this.atomPt.sY, this.zBox, this.zSlab); +text.colix = this.labelColix; +text.bgcolix = this.bgcolix; +} else { +text.getPymolScreenOffset(this.atomPt, this.screen, this.zSlab, this.pTemp, this.sppm); +}} else { +var isLeft = (this.textAlign == 4 || this.textAlign == 0); +if (this.fid != this.fidPrevious || this.ascent == 0) { +this.vwr.gdata.setFont(JU.Font.getFont3D(this.fid)); +this.fidPrevious = this.fid; +this.font3d = this.vwr.gdata.getFont3DCurrent(); +if (isLeft) { +this.ascent = this.font3d.getAscent(); +this.descent = this.font3d.getDescent(); +}}var isSimple = isLeft && (this.imageFontScaling == 1 && this.scalePixelsPerMicron == 0 && label.indexOf("|") < 0 && label.indexOf("\n") < 0 && label.indexOf("= 0; ) { +this.m = measures.measurements.get(i); +if (!this.m.isVisible || !this.m.$isValid || (this.count = this.m.count) == 1 && this.m.traceX == -2147483648) continue; +this.getPoints(); +this.colix = this.m.colix; +if (this.colix == 0) this.colix = measures.colix; +if (this.colix == 0) this.colix = this.vwr.cm.colixBackgroundContrast; +this.labelColix = this.m.labelColix; +if (this.labelColix == 0) this.labelColix = this.vwr.cm.colixBackgroundContrast; + else if (this.labelColix == -1) this.labelColix = this.colix; +this.g3d.setC(this.colix); +this.colixA = this.colixB = this.colix; +this.mode = (this.g3d.isAntialiased() ? 4 : 0); +this.renderMeasurement(showMeasurementLabels); +} +return false; +}); +Clazz_defineMethod(c$, "getPoints", +function(){ +for (var j = this.count; --j >= 0; ) { +var i = this.m.getAtomIndex(j + 1); +var pt = (i >= 0 && this.modulating ? this.getModAtom(i) : this.m.getAtom(j + 1)); +if (pt.sD < 0) { +this.tm.transformPtScr(pt, this.pt0i); +pt.sX = this.pt0i.x; +pt.sY = this.pt0i.y; +pt.sZ = this.pt0i.z; +}this.p[j] = pt; +} +if (this.modulating) this.m.refresh(this.p); +}); +Clazz_defineMethod(c$, "getModAtom", +function(i){ +var ii = Integer.$valueOf(i); +var pt = this.mpts.get(ii); +if (pt != null) ii = null; +var v = this.ms.getModulation(i); +if (v == null) { +pt = this.ms.at[i]; +} else { +if (pt == null) pt = new JU.Point3fi(); +pt.setT(this.ms.at[i]); +if (this.vwr.tm.vibrationOn) this.vwr.tm.getVibrationPoint(v, pt, NaN); +pt.sD = -1; +}if (ii != null) this.mpts.put(ii, pt); +return pt; +}, "~N"); +Clazz_defineMethod(c$, "renderMeasurement", +function(renderLabel){ +var s = (renderLabel ? this.m.getString() : null); +if (s != null) { +if (s.length == 0) { +s = null; +} else if (this.m.text != null) { +this.m.text.setText(s); +this.m.text.colix = this.labelColix; +this.m.text.setFontScale(this.imageFontScaling); +}}if (this.m.mad == 0) { +this.dotsOrDashes = false; +this.mad = this.mad0; +} else { +this.mad = this.m.mad; +this.dotsOrDashes = true; +this.dashDots = (this.mad < 0 ? null : J.render.FontLineShapeRenderer.ndots); +}switch (this.count) { +case 1: +this.drawLine(this.p[0].sX, this.p[0].sY, this.p[0].sZ, this.m.traceX, this.m.traceY, this.p[0].sZ, this.mad); +break; +case 2: +this.renderDistance(s, this.p[0], this.p[1]); +break; +case 3: +this.renderAngle(s, this.p[0], this.p[1], this.p[2]); +break; +case 4: +this.renderTorsion(s, this.p[0], this.p[1], this.p[2], this.p[3]); +break; +} +this.p[0] = this.p[1] = this.p[2] = this.p[3] = null; +}, "~B"); +Clazz_defineMethod(c$, "renderDistance", +function(s, a, b){ +if ((this.tickInfo = this.m.tickInfo) != null) { +this.drawLine(a.sX, a.sY, a.sZ, b.sX, b.sY, b.sZ, this.mad); +this.tickA = a; +this.tickB = b; +if (this.tickAs == null) { +this.tickAs = new JU.P3(); +this.tickBs = new JU.P3(); +}this.tickAs.set(a.sX, a.sY, a.sZ); +this.tickBs.set(b.sX, b.sY, b.sZ); +this.drawTicks(this.mad, s != null); +return; +}var zA = a.sZ - a.sD - 10; +var zB = b.sZ - b.sD - 10; +var radius = this.drawLine(a.sX, a.sY, zA, b.sX, b.sY, zB, this.mad); +if (s == null) return; +if (this.mad > 0) radius <<= 1; +var zLabel = (this.m.inFront ? Math.min(zA, zB) - 10 : Clazz_doubleToInt((zA + zB) / 2)); +if (zLabel < 1) zLabel = 1; +var x = Clazz_doubleToInt((a.sX + b.sX) / 2); +var y = Clazz_doubleToInt((a.sY + b.sY) / 2); +if (this.m.text == null) { +this.g3d.setC(this.labelColix); +this.drawString(x, y, zLabel, radius, this.doJustify && (x - a.sX) * (y - a.sY) > 0, false, true, (this.doJustify ? 0 : 2147483647), s); +} else { +this.atomPt.ave(a, b); +this.atomPt.sX = Clazz_doubleToInt((a.sX + b.sX) / 2); +this.atomPt.sY = Clazz_doubleToInt((a.sY + b.sY) / 2); +this.renderLabelOrMeasure(this.m.text, s); +}}, "~S,JU.Point3fi,JU.Point3fi"); +Clazz_defineMethod(c$, "renderAngle", +function(s, a, b, c){ +var zOffset = b.sD + 10; +var zA = a.sZ - a.sD - 10; +var zB = b.sZ - zOffset; +var zC = c.sZ - c.sD - 10; +var radius = this.drawLine(a.sX, a.sY, zA, b.sX, b.sY, zB, this.mad); +radius += this.drawLine(b.sX, b.sY, zB, c.sX, c.sY, zC, this.mad); +if (s == null) return; +radius = Clazz_doubleToInt((radius + 1) / 2); +if (this.m.value > 175) { +if (this.m.text == null) { +var offset = Clazz_doubleToInt(Math.floor(5 * this.imageFontScaling)); +this.g3d.setC(this.labelColix); +this.drawString(b.sX + offset, b.sY - offset, zB, radius, false, false, false, (this.doJustify ? 0 : 2147483647), s); +} else { +this.atomPt.setT(b); +this.renderLabelOrMeasure(this.m.text, s); +}return; +}if (this.m.isTainted()) { +var radians = JU.Measure.computeAngle(this.p[0], this.p[1], this.p[2], this.vectorT2, this.vectorT3, false); +this.vectorT.cross(this.vectorT2, this.vectorT3); +this.m.renderAxis = JU.A4.new4(this.vectorT.x, this.vectorT.y, this.vectorT.z, radians); +this.vectorT2.normalize(); +this.vectorT2.scale(0.5); +this.m.renderArc = JU.P3.newP(this.vectorT2); +}if (this.aaT == null) { +this.aaT = new JU.A4(); +this.matrixT = new JU.M3(); +}var dotCount = Clazz_doubleToInt(Math.floor((this.m.renderAxis.angle / (6.283185307179586)) * 64)); +var stepAngle = this.m.renderAxis.angle / dotCount; +this.aaT.setAA(this.m.renderAxis); +var iMid = Clazz_doubleToInt(dotCount / 2); +for (var i = dotCount; --i >= 0; ) { +this.aaT.angle = i * stepAngle; +this.pointT.setT(this.m.renderArc); +this.matrixT.setAA(this.aaT).rotate(this.pointT); +this.pointT.add(b); +var p3i = this.tm.transformPt(this.pointT); +var zArc = p3i.z - zOffset; +if (zArc < 0) zArc = 0; +this.g3d.drawPixel(p3i.x, p3i.y, zArc); +if (i != iMid) continue; +this.pointT.setT(this.m.renderArc); +this.pointT.scale(1.1); +this.matrixT.rotate(this.pointT); +this.pointT.add(b); +this.tm.transformPt(this.pointT); +var zLabel = (this.m.inFront ? Math.min(Math.min(zA, zB), zC) : p3i.z - zOffset); +if (zLabel < 1) zLabel = 1; +if (this.m.text == null) { +this.g3d.setC(this.labelColix); +this.drawString(p3i.x, p3i.y, zLabel, radius, p3i.x < b.sX, false, false, (this.doJustify ? b.sY : 2147483647), s); +} else { +this.atomPt.setT(this.pointT); +this.renderLabelOrMeasure(this.m.text, s); +}} +}, "~S,JU.Point3fi,JU.Point3fi,JU.Point3fi"); +Clazz_defineMethod(c$, "renderTorsion", +function(s, a, b, c, d){ +var zA = a.sZ - a.sD - 10; +var zB = b.sZ - b.sD - 10; +var zC = c.sZ - c.sD - 10; +var zD = d.sZ - d.sD - 10; +var radius = this.drawLine(a.sX, a.sY, zA, b.sX, b.sY, zB, this.mad); +radius += this.drawLine(b.sX, b.sY, zB, c.sX, c.sY, zC, this.mad); +radius += this.drawLine(c.sX, c.sY, zC, d.sX, d.sY, zD, this.mad); +if (s == null) return; +var zLabel = (this.m.inFront ? Math.min(Math.min(Math.min(zA, zB), zC), zD) : Clazz_doubleToInt((zA + zB + zC + zD) / 4)); +if (zLabel < 1) zLabel = 1; +radius /= 3; +if (this.m.text == null) { +this.g3d.setC(this.labelColix); +this.drawString(Clazz_doubleToInt((a.sX + b.sX + c.sX + d.sX) / 4), Clazz_doubleToInt((a.sY + b.sY + c.sY + d.sY) / 4), zLabel, radius, false, false, false, (this.doJustify ? 0 : 2147483647), s); +} else { +this.atomPt.add2(a, b); +this.atomPt.add(c); +this.atomPt.add(d); +this.atomPt.scale(0.25); +this.renderLabelOrMeasure(this.m.text, s); +}}, "~S,JU.Point3fi,JU.Point3fi,JU.Point3fi,JU.Point3fi"); +Clazz_defineMethod(c$, "renderPendingMeasurement", +function(){ +try { +this.getPoints(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +(this.shape).mPending = null; +return; +} else { +throw e; +} +} +var renderLabel = (this.m.traceX == -2147483648); +this.g3d.setC(this.labelColix = (renderLabel ? this.vwr.cm.colixRubberband : this.count == 2 ? 20 : 23)); +if ((this.m).haveTarget) { +this.renderMeasurement(renderLabel); +return; +}var atomLast = this.p[this.count - 1]; +if (this.count > 1) this.renderMeasurement(false); +var lastZ = atomLast.sZ - atomLast.sD - 10; +var x = this.vwr.getCursorX(); +var y = this.vwr.getCursorY(); +if (this.g3d.isAntialiased()) { +x <<= 1; +y <<= 1; +}this.drawLine(atomLast.sX, atomLast.sY, lastZ, x, y, lastZ, this.mad); +}); +Clazz_overrideMethod(c$, "drawLine", +function(x1, y1, z1, x2, y2, z2, mad){ +var diameter = Clazz_floatToInt(mad >= 20 && this.exportType != 1 ? this.vwr.tm.scaleToScreen(Clazz_doubleToInt((z1 + z2) / 2), mad) : mad); +if (this.dotsOrDashes && (this.dashDots == null || this.dashDots === J.render.FontLineShapeRenderer.ndots)) this.width = diameter; +return this.drawLine2(this.g3d, x1, y1, z1, x2, y2, z2, diameter); +}, "~N,~N,~N,~N,~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.LabelsRenderer"], "J.render.EchoRenderer", ["J.render.TextRenderer", "JU.C"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.haveTranslucent = false; +Clazz_instantialize(this, arguments);}, J.render, "EchoRenderer", J.render.LabelsRenderer); +Clazz_overrideMethod(c$, "render", +function(){ +if (this.vwr.isPreviewOnly) return false; +var echo = this.shape; +this.sppm = (this.vwr.getBoolean(603979847) ? this.vwr.getScalePixelsPerAngstrom(true) * 10000 : 0); +this.imageFontScaling = this.vwr.imageFontScaling; +this.haveTranslucent = false; +var alias = (this.g3d.isAntialiased() ? 4 : 0); +for (var t, $t = echo.objects.values().iterator (); $t.hasNext()&& ((t = $t.next ()) || true);) { +this.renderEcho(t, alias); +} +if (echo.scaleObject != null) this.renderEcho(echo.scaleObject, alias); +if (!this.isExport) { +var frameTitle = this.vwr.getFrameTitle(); +if (frameTitle != null && frameTitle.length > 0) { +if (this.g3d.setC(this.vwr.cm.colixBackgroundContrast)) { +this.renderFrameTitle(this.vwr.formatText(frameTitle)); +}}}return this.haveTranslucent; +}); +Clazz_defineMethod(c$, "renderEcho", +function(t, alias){ +if (!t.visible || t.hidden) { +return; +}if (Clazz_instanceOf(t.pointerPt,"JM.Atom")) { +if (!(t.pointerPt).checkVisible()) return; +}if (t.valign == 4) J.render.TextRenderer.calcBarPixelsXYZ(this.vwr, t, this.pt0i, true); +if (t.pymolOffset != null) t.getPymolScreenOffset(t.xyz, this.pt0i, this.zSlab, this.pTemp, this.sppm); + else if (t.movableZPercent != 2147483647) { +var z = this.vwr.tm.zValueFromPercent(t.movableZPercent % 1000); +if (t.valign == 4 && Math.abs(t.movableZPercent) >= 1000) z = this.pt0i.z - this.vwr.tm.zValueFromPercent(0) + z; +t.setZs(z, z); +}if (t.pointerPt == null) { +t.pointer = 0; +} else { +t.pointer = 1; +this.tm.transformPtScr(t.pointerPt, this.pt0i); +t.atomX = this.pt0i.x; +t.atomY = this.pt0i.y; +t.atomZ = this.pt0i.z; +if (t.zSlab == -2147483648) t.zSlab = 1; +}if (J.render.TextRenderer.render(this.vwr, t, this.g3d, this.sppm, this.imageFontScaling, null, this.xy, this.pt2i, 0, 0, alias) && t.valign == 1 && t.align == 12) this.vwr.noFrankEcho = false; +if (JU.C.renderPass2(t.bgcolix) || JU.C.renderPass2(t.colix)) this.haveTranslucent = true; +}, "JM.Text,~N"); +Clazz_defineMethod(c$, "renderFrameTitle", +function(frameTitle){ +this.vwr.gdata.setFontBold("arial", Clazz_floatToInt(24 * this.imageFontScaling)); +var y = Clazz_doubleToInt(Math.floor(this.vwr.getScreenHeight() * (this.g3d.isAntialiased() ? 2 : 1) - 10 * this.imageFontScaling)); +var x = Clazz_doubleToInt(Math.floor(5 * this.imageFontScaling)); +this.g3d.drawStringNoSlab(frameTitle, null, x, y, 0, 0); +}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.render"); +Clazz_load(["J.render.ShapeRenderer"], "J.render.HoverRenderer", ["JU.P3", "J.render.TextRenderer"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.tempXY = null; +this.ptTemp = null; +Clazz_instantialize(this, arguments);}, J.render, "HoverRenderer", J.render.ShapeRenderer); +Clazz_prepareFields (c$, function(){ +this.tempXY = Clazz_newFloatArray (3, 0); +}); +Clazz_overrideMethod(c$, "render", +function(){ +if (this.tm.isNavigating()) return false; +if (this.ptTemp == null) this.ptTemp = new JU.P3(); +var hover = this.shape; +var antialias = this.g3d.isAntialiased(); +var text = hover.hoverText; +var label; +if (hover.atomIndex >= 0) { +var atom = this.ms.at[hover.atomIndex]; +label = (hover.specialLabel != null ? hover.specialLabel : hover.atomFormats != null && hover.atomFormats[hover.atomIndex] != null ? this.ms.getLabeler().formatLabel(this.vwr, atom, hover.atomFormats[hover.atomIndex], this.ptTemp) : hover.labelFormat != null ? this.ms.getLabeler().formatLabel(this.vwr, atom, this.fixLabel(atom, hover.labelFormat), this.ptTemp) : null); +if (label == null) return false; +text.setXYZs(atom.sX, atom.sY, 1, -2147483648); +} else if (hover.text != null) { +label = hover.text; +text.setXYZs(hover.xy.x, hover.xy.y, 1, -2147483648); +} else { +return true; +}if (this.vwr != null) label = this.vwr.formatText(label); +text.setText(label); +J.render.TextRenderer.render(null, text, this.g3d, 0, antialias ? 2 : 1, null, this.tempXY, null, 0, 0, 0); +return true; +}); +Clazz_defineMethod(c$, "fixLabel", +function(atom, label){ +if (label == null || atom == null) return null; +return (this.ms.isJmolDataFrameForModel(atom.mi) && label.equals("%U") ? "%W" : label); +}, "JM.Atom,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/coretext.z.js b/config/plugins/visualizations/jmol/static/j2s/core/coretext.z.js new file mode 100755 index 000000000000..e4b667e8c179 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/coretext.z.js @@ -0,0 +1,134 @@ +(function(E,F,G,H,j,I,n,u,s,r,t,k,K,A,L,B,x,v,C,w,M,N,O,D,P,Q,R,y,S,T,U,V,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,g,l){n("JM");s(null,"JM.Text",["JU.PT","J.shape.Shape","JU.C","$.Font","JV.JC"],function(){var e=t(function(){this.vwr=null;this.doFormatText=!1;this.font=null;this.boxYoff2=this.offsetY=this.offsetX=this.lineHeight=this.descent=this.ascent=this.fid=0;this.widths=null;this.textHeight=this.textWidth=0;this.image=this.lines=this.textUnformatted=this.text=null;this.imageScale= +1;this.y0=this.yAdj=this.xAdj=this.barDistance=this.barPixels=0;this.pointerPt=null;this.isEcho=this.isMeasure=!1;this.script=this.target=this.xyz=null;this.atomY=this.atomX=this.valign=this.align=this.fontScale=this.pointer=this.bgcolix=this.colix=0;this.atomZ=2147483647;this.movableZ=this.movableY=this.movableX=0;this.movableZPercent=this.movableYPercent=this.movableXPercent=2147483647;this.z=1;this.zSlab=-2147483648;this.pymolOffset=null;this.windowHeight=this.windowWidth=0;this.adjustForWindow= +!1;this.boxY=this.boxX=this.boxHeight=this.boxWidth=0;this.modelIndex=-1;this.thisModelOnly=!1;this.visible=!0;this.hidden=!1;this.boxXY=null;this.barPixelsXYZ=this.scalePixelsPerMicron=0;r(this,arguments)},JM,"Text",null);A(e,function(){this.boxXY=v(5,0)});e.newLabel=g(e,"newLabel",function(a,b,c,d,f,h,e){var g=new JM.Text;g.vwr=a;g.set(b,d,h,e);g.setText(c);g.bgcolix=f;return g},"JV.Viewer,JU.Font,~S,~N,~N,~N,~N");e.newMeasure=g(e,"newMeasure",function(a,b,c){var d=new JM.Text;d.vwr=a;d.set(b,c, +0,0);d.isMeasure=!0;return d},"JV.Viewer,JU.Font,~N");e.newEcho=g(e,"newEcho",function(a,b,c,d,f,h,e){var g=new JM.Text;g.isEcho=!0;g.vwr=a;g.set(b,d,h,e);g.target=c;g.valign=f;g.z=2;g.zSlab=-2147483648;return g},"JV.Viewer,JU.Font,~S,~N,~N,~N,~N");g(e,"set",function(a,b,c,d){this.scalePixelsPerMicron=d;this.colix=b;this.align=c;this.setFont(a,!this.isEcho)},"JU.Font,~N,~N,~N");g(e,"setOffset",function(a){this.offsetX=JV.JC.getXOffset(a);this.offsetY=JV.JC.getYOffset(a);this.pymolOffset=null;this.valign= +3},"~N");g(e,"getFontMetrics",function(){this.descent=this.font.getDescent();this.ascent=this.font.getAscent();this.lineHeight=this.ascent+this.descent});g(e,"setFontFromFid",function(a){this.fid!=a&&(this.fontScale=0,this.setFont(JU.Font.getFont3D(a),!0))},"~N");g(e,"setText",function(a){null!=this.image&&(this.getFontMetrics(),this.image=null);this.barPixels=0;null!=a&&0==a.length&&(a=null);null!=this.text&&this.text.equals(a)||(this.text=this.textUnformatted=a,(this.doFormatText=this.isEcho&&null!= +a&&(0<=a.indexOf("%{")||0<=a.indexOf("@{")))||this.recalc())},"~S");g(e,"setImage",function(a){this.image=a;this.recalc()},"~O");g(e,"setScale",function(a){this.imageScale=a;this.recalc()},"~N");g(e,"setFont",function(a,b){this.font=a;null!=this.font&&(this.getFontMetrics(),b&&(this.fid=this.font.fid,this.recalc()))},"JU.Font,~B");g(e,"setFontScale",function(a){this.fontScale!=a&&(this.fontScale=a,0!=this.fontScale&&null!=this.font&&this.setFont(this.vwr.gdata.getFont3DScaled(this.font,a),!0))},"~N"); +g(e,"recalc",function(){if(null!=this.image)this.textWidth=this.textHeight=0,this.boxWidth=this.vwr.apiPlatform.getImageWidth(this.image)*this.fontScale*this.imageScale,this.boxHeight=this.vwr.apiPlatform.getImageHeight(this.image)*this.fontScale*this.imageScale,this.ascent=0;else if(null==this.text)this.widths=this.lines=this.text=null;else if(null!=this.font){this.lines=JU.PT.split(this.text,0<=this.text.indexOf("\n")?"\n":"|");this.textWidth=0;this.widths=x(this.lines.length,0);for(var a=this.lines.length;0<= +--a;)this.textWidth=Math.max(this.textWidth,this.widths[a]=this.stringWidth(this.lines[a]));this.textHeight=this.lines.length*this.lineHeight;this.boxWidth=this.textWidth+(2<=this.fontScale?16:8);this.boxHeight=this.textHeight+(2<=this.fontScale?16:8)}});g(e,"setPosition",function(a,b,c,d){null==d?d=this.boxXY:this.boxXY=d;this.setWindow(this.vwr.gdata.width,this.vwr.gdata.height,a);0!=a&&0!=this.scalePixelsPerMicron?this.setFontScale(a/this.scalePixelsPerMicron):this.fontScale!=b&&this.setFontScale(b); +this.doFormatText?(this.text=this.isEcho?this.vwr.formatText(this.textUnformatted):this.textUnformatted,this.recalc()):null!=this.textUnformatted&&this.textUnformatted.startsWith("%SCALE")&&(a=v(2,0),this.text=this.vwr.getScaleText(this.textUnformatted.substring(6).trim(),this.vwr.antialiased,null==this.xyz?15:8,a),this.barPixels=k(a[0]*(this.vwr.antialiased?2:1)),this.barDistance=a[1],this.recalc());a=this.offsetX*b;b*=this.offsetY;this.xAdj=2<=this.fontScale?8:4;this.yAdj=this.ascent-this.lineHeight+ +this.xAdj;if(!this.isEcho||null!=this.pymolOffset){d[0]=this.movableX;d[1]=this.movableY;var f=!this.isPymolOffsetPixels();null!=this.pymolOffset&&f?(c=this.vwr.tm.scaleToScreen(this.z,1E3),a=this.pymolOffset[3],c*=(0>a?-1:1)*Math.max(0==a?0.5:0,Math.abs(a)-1),this.z-=k(c),c=this.vwr.tm.scaleToScreen(this.z,1E3),a=null!=this.xyz&&0a?-1:1a||1a?1:-1):0)*c},"~N,~N,~N");g(e,"setPos",function(a){var b,c,d,f=null!=this.xyz;3==this.valign||4==this.valign?b=d=c=(2147483647!=this.movableXPercent?j(this.movableXPercent*this.windowWidth/100):f?this.movableX:this.movableX*a)+this.offsetX* +a+this.barPixels:(b=5*a,c=j((this.windowWidth+this.barPixels)/2),d=this.windowWidth-b,b+=this.barPixels);switch(this.align){case 8:this.boxXY[0]=c-this.boxWidth/2;break;case 12:this.boxXY[0]=d-this.boxWidth;break;default:this.boxXY[0]=b}this.boxXY[1]=0;switch(this.valign){case 0:break;case 2:this.boxXY[1]=j(this.windowHeight/2);break;case 1:this.boxXY[1]=this.windowHeight;break;default:b=2147483647!=this.movableYPercent?j(this.movableYPercent*this.windowHeight/100):f?this.movableY:this.movableY*a, +this.boxXY[1]=(f?b:this.windowHeight-b)+this.offsetY*a}8==this.align?this.boxXY[1]-=(null!=this.image?this.boxHeight:null!=this.xyz?this.boxHeight:this.ascent-this.boxHeight)/2:null!=this.image?this.boxXY[1]-=0:null!=this.xyz&&(this.boxXY[1]-=j(this.ascent/2))},"~N");e.setBoxXY=g(e,"setBoxXY",function(a,b,c,d,f,h){var e;0a.indexOf("a.indexOf(""))){var e=a.indexOf(">",h);if(0<=e){h=e;continue}}if(h+5<=d&&((f=a.substring(h,h+5)).equals("")||f.equals(""))){h+=4;c=1;continue}if(h+6<=d&&((f=a.substring(h,h+6)).equals("")||f.equals(""))){h+=5;c=1;continue}}b+=this.font.stringWidth(a.substring(h,h+1))*c}return b},"~S");g(e,"setXYA", +function(a,b){if(0==b){a[2]=this.boxX;switch(this.align){case 8:a[2]+=this.boxWidth/2;break;case 12:a[2]+=this.boxWidth-this.xAdj;break;default:a[2]+=this.xAdj}a[0]=a[2];a[1]=this.y0}switch(this.align){case 8:a[0]=a[2]-j(this.widths[b]/2);break;case 12:a[0]=a[2]-this.widths[b]}a[1]+=this.lineHeight},"~A,~N");g(e,"appendFontCmd",function(a){a.append(" "+J.shape.Shape.getFontCommand("echo",this.font));0this.windowWidth&&(f=this.windowWidth-d);fthis.windowHeight&&(c=this.windowHeight-a);cthis.scalePixelsPerMicron&&0!=c)&&this.setScalePixelsPerMicron(c)},"~N,~N,~N");g(e,"checkObjectClicked",function(a, +b,c,d){if(this.hidden||null==this.script||0<=this.modelIndex&&!d.get(this.modelIndex))return!1;a&&(b<<=1,c<<=1);return b>=this.boxX&&b<=this.boxX+this.boxWidth&&c>=this.boxY&&c<=this.boxY+this.boxHeight},"~B,~N,~N,JU.BS");g(e,"getPymolScreenOffset",function(a,b,c,d){var f=this.isPymolOffsetPixels(),h=this.isPymolOffsetRelative();null!=a&&h?d.setT(a):d.set(0,0,0);d.add3(this.pymolOffset[4],this.pymolOffset[5],this.pymolOffset[6]);this.vwr.tm.transformPtScr(d,b);f&&(b.x+=this.pymolOffset[1],b.y+=this.pymolOffset[2], +b.z+=this.pymolOffset[3]);this.setXYZs(b.x,b.y,b.z,c)},"JU.P3,JU.P3i,~N,JU.P3,~N");g(e,"isPymolOffsetRelative",function(){return 1==((null==this.pymolOffset?-1:k(this.pymolOffset[0]))&1)});g(e,"isPymolOffsetPixels",function(){var a=null==this.pymolOffset?-1:k(this.pymolOffset[0]);return-1!=a&&2==(a&2)});g(e,"getStateText",function(){return this.doFormatText?JU.PT.rep(this.text,"@{","\\@{"):this.text});l(e,"toString",function(){return this.textUnformatted})});n("J.shape");s(["J.shape.Shape","java.util.Hashtable"], +"J.shape.TextShape",["JU.P3","$.PT","JU.C","$.Logger"],function(){var e=t(function(){this.currentBgColor=this.currentColor=this.currentFont=this.currentObject=this.objects=null;this.currentBgTranslucentLevel=this.currentTranslucentLevel=0;this.thisID=null;this.isAll=this.isHover=!1;r(this,arguments)},J.shape,"TextShape",J.shape.Shape);w(e,function(){this.objects=new java.util.Hashtable});g(e,"setPropTS",function(a,b,c){if("text"===a){var d=b;if(null!=this.currentObject)this.currentObject.setText(d); +else if(this.isAll)for(var f,h=this.objects.values().iterator();h.hasNext()&&((f=h.next())||1);)f.setText(d)}else if("font"===a)if(this.currentFont=b,null!=this.currentObject)this.currentObject.setFont(this.currentFont,!0),this.currentObject.setFontScale(0);else{if(this.isAll)for(h=this.objects.values().iterator();h.hasNext()&&((f=h.next())||1);)f.setFont(this.currentFont,!0)}else if("allOff"===a)this.currentObject=null,this.isAll=!0,this.objects=new java.util.Hashtable;else if("delete"===a)if(u(b, +"JM.Text")&&(this.currentObject=b),null!=this.currentObject)this.objects.remove(this.currentObject.target),this.currentObject=null;else{if(this.isAll||null!=this.thisID)for(h=this.objects.values().iterator();h.hasNext();)d=h.next(),(this.isAll||JU.PT.isMatch(d.target.toUpperCase(),this.thisID,!0,!0))&&h.remove()}else{if("off"===a){if(this.isAll){this.objects=new java.util.Hashtable;this.isAll=!1;this.currentObject=null;return}if(null!=this.currentObject)this.objects.remove(this.currentObject.target), +this.currentObject=null;else if(null!=this.thisID)for(h=this.objects.values().iterator();h.hasNext();)d=h.next(),(this.isAll||JU.PT.isMatch(d.target.toUpperCase(),this.thisID,!0,!0))&&h.remove()}if("model"===a)if(b=b.intValue(),null!=this.currentObject)this.currentObject.modelIndex=b;else{if(this.isAll)for(h=this.objects.values().iterator();h.hasNext()&&((f=h.next())||1);)f.modelIndex=b}else if("align"===a)if(null!=this.currentObject)this.currentObject.setAlignmentLCR(b)||JU.Logger.error("unrecognized align:"+ +b);else{if(this.isAll)for(var e,d=this.objects.values().iterator();d.hasNext()&&((e=d.next())||1);)e.setAlignmentLCR(b)}else if("bgcolor"===a)if(this.currentBgColor=b,null!=this.currentObject)this.currentObject.bgcolix=JU.C.getColixO(b);else{if(this.isAll)for(h=this.objects.values().iterator();h.hasNext();)h.next().bgcolix=JU.C.getColixO(b)}else if("color"===a)if(this.currentColor=b,null!=this.currentObject)this.currentObject.colix=JU.C.getColixO(b);else{if(this.isAll||null!=this.thisID)for(h=this.objects.values().iterator();h.hasNext();)if(d= +h.next(),this.isAll||JU.PT.isMatch(d.target.toUpperCase(),this.thisID,!0,!0))d.colix=JU.C.getColixO(b)}else if("target"===a){if((this.isAll=b.equals("all"))||b.equals("none"))this.currentObject=null}else if((d="bgtranslucency"===a)||"translucency"===a)if(b="translucent"===b,d?this.currentBgTranslucentLevel=b?this.translucentLevel:0:this.currentTranslucentLevel=b?this.translucentLevel:0,null!=this.currentObject)this.currentObject.setTranslucent(this.translucentLevel,d);else{if(this.isAll)for(h=this.objects.values().iterator();h.hasNext();)h.next().setTranslucent(this.translucentLevel, +d)}else if("deleteModelAtoms"===a){b=b[2][0];for(h=this.objects.values().iterator();h.hasNext();)d=h.next(),d.modelIndex==b?h.remove():d.modelIndex>b&&d.modelIndex--}else this.setPropS(a,b,c)}},"~S,~O,JU.BS");l(e,"getShapeState",function(){return null});l(e,"initModelSet",function(){this.currentObject=null;this.isAll=!1});l(e,"setModelVisibilityFlags",function(a){if(!this.isHover)for(var b,c=this.objects.values().iterator();c.hasNext()&&((b=c.next())||1);)b.visible=0>b.modelIndex||a.get(b.modelIndex)&& +(!b.thisModelOnly||1==a.cardinality()&&b.modelIndex==this.vwr.am.cmi)},"JU.BS");l(e,"checkObjectClicked",function(a,b,c,d){if(this.isHover||0==c)return null;c=this.vwr.antialiased;for(var f,h=this.objects.values().iterator();h.hasNext()&&((f=h.next())||1);)if(f.checkObjectClicked(c,a,b,d))return null!=f.script&&this.vwr.evalStringQuiet(f.script),a=new java.util.Hashtable,a.put("pt",null==f.xyz?new JU.P3:f.xyz),b=f.modelIndex,0>b&&(b=0),a.put("modelIndex",Integer.$valueOf(b)),a.put("model",this.vwr.getModelNumberDotted(b)), +a.put("id",f.target),a.put("type","echo"),a;return null},"~N,~N,~N,JU.BS,~B");l(e,"checkObjectHovered",function(a,b,c){if(this.isHover)return!1;for(var d=!1,f=this.vwr.antialiased,h,e=this.objects.values().iterator();e.hasNext()&&((h=e.next())||1);)if(null!=h.script&&(d=!0,h.checkObjectClicked(f,a,b,c)))return this.vwr.setCursor(12),!0;d&&this.vwr.setCursor(0);return!1},"~N,~N,JU.BS")});n("J.shape");s(["J.shape.AtomShape","java.util.Hashtable","JU.P3"],"J.shape.Labels","JU.AU $.BS $.PT J.c.PAL JM.LabelToken $.Text JS.SV JU.BSUtil $.C $.Font JV.JC".split(" "), +function(){var e=t(function(){this.bsBgColixSet=this.bsFontSet=this.labelBoxes=this.atomLabels=this.offsets=this.fids=this.bgcolixes=this.formats=this.strings=null;this.zeroFontId=this.defaultPointer=this.defaultPaletteID=this.defaultBgcolix=this.defaultColix=this.defaultFontId=this.defaultZPos=this.defaultAlignment=this.defaultOffset=0;this.isScaled=this.setDefaults=!1;this.scalePixelsPerMicron=0;this.ptTemp=null;this.lastPicked=this.pickedAtom=-1;this.pickedY=this.pickedX=this.pickedOffset=0;r(this, +arguments)},J.shape,"Labels",J.shape.AtomShape);w(e,function(){this.atomLabels=new java.util.Hashtable;this.ptTemp=new JU.P3});l(e,"initShape",function(){this.defaultFontId=this.zeroFontId=this.vwr.gdata.getFont3DFSS("SansSerif","Plain",13).fid;this.defaultBgcolix=this.defaultColix=0;this.defaultOffset=JV.JC.LABEL_DEFAULT_OFFSET;this.defaultAlignment=4;this.defaultZPos=this.defaultPointer=0;this.translucentAllowed=!1});l(e,"setProperty",function(a,b,c){this.isActive=!0;var d=this.ms.at,f=this.ms.ac; +if("setDefaults"===a)this.setDefaults=b.booleanValue();else if("color"===a){var h=J.c.PAL.pidOf(b),d=JU.C.getColixO(b);if(this.setDefaults)this.defaultColix=d,this.defaultPaletteID=h;else{f=this.checkColixLength(d,c.length());for(a=c.nextSetBit(0);0<=a&&a=f?this.setLabel(J.shape.Labels.nullToken,"",a,!d):(h[0]=null,this.setLabel(h,JS.SV.sValue(b.get(g++)),a,!d))}else{h=null==b||0==b.length?J.shape.Labels.nullToken:y(-1,[null]);for(a=c.nextSetBit(0);0<=a&&ah)this.fids=null;else if(this.setDefaults)d=JU.Font.getFont3D(this.defaultFontId), +this.defaultFontId=this.vwr.getFont3D(d.fontFace,d.fontStyle,h).fid;else for(a=c.nextSetBit(0);0<=a&&a=this.fids.length?this.fids[a]:this.defaultFontId),this.setFont(a,this.vwr.getFont3D(d.fontFace,d.fontStyle,h).fid);else if("font"===a)if(h=b.fid,this.setDefaults)this.defaultFontId=h;else for(a=c.nextSetBit(0);0<=a&&athis.mads[a]?1:-1:(this.mads[a]=l,n.getGroup3(!1).equals("UNK")?(null==m&&(m=this.vwr.getStandardLabelFormat(1),k=JM.LabelToken.compile(this.vwr,m,"\x00",null)),b=m,h=k):(null==g&&(g=this.vwr.getStandardLabelFormat(2),p=JM.LabelToken.compile(this.vwr, +g,"\x00",null)),b=g,h=p),this.strings[a]=JM.LabelToken.formatLabelAtomArray(this.vwr,n,h,"\x00",null,this.ptTemp),this.formats[a]=b,this.bsSizeSet.set(a),athis.strings.length)this.formats= +JU.AU.ensureLengthS(this.formats,a),this.strings=JU.AU.ensureLengthS(this.strings,a),null==this.bsSizeSet&&(this.bsSizeSet=JU.BS.newN(a));return a},"~N");g(e,"checkBgColixLength",function(a,b){b=Math.min(this.ms.ac,b);if(0==a)return null==this.bgcolixes?0:this.bgcolixes.length;if(null==this.bgcolixes||b>this.bgcolixes.length)this.bgcolixes=JU.AU.ensureLengthShort(this.bgcolixes,b);return b},"~N,~N");g(e,"setPymolLabels",function(a,b){this.setScaling();var c=this.checkStringLength(this.ms.ac);this.checkColixLength(-1, +c);for(var d=b.nextSetBit(0);0<=d&&d=this.strings.length||null==this.strings[a])return;c=null!=this.bsFontSet&&this.bsFontSet.get(a)?this.fids[a]:-1;0>c&&this.setFont(a,c=this.defaultFontId);var d=this.ms.at[a],c=JM.Text.newLabel(this.vwr,JU.Font.getFont3D(c),this.strings[a],this.getColix2(a,d,!1),this.getColix2(a, +d,!0),0,this.scalePixelsPerMicron);this.setPymolLabel(a,c,this.formats[a])}c.pymolOffset=b},"~N,~A");g(e,"setScaling",function(){this.isActive=!0;null==this.bsSizeSet&&(this.bsSizeSet=JU.BS.newN(this.ms.ac));this.scalePixelsPerMicron=(this.isScaled=this.vwr.getBoolean(603979847))?1E4*this.vwr.getScalePixelsPerAngstrom(!1):0});g(e,"setPymolLabel",function(a,b,c){if(null!=b){var d=b.text,f=this.ms.at[a];null!=f&&(this.addString(f,a,d,null==c?JU.PT.rep(d,"%","%%"):c),f.setShapeVisibility(this.vf,!0), +0<=b.colix&&this.setLabelColix(a,b.colix,J.c.PAL.UNKNOWN.id),this.setFont(a,b.font.fid),this.putLabel(a,b))}},"~N,JM.Text,~S");g(e,"setLabel",function(a,b,c,d){var f=this.ms.at[c],h=a[0];null==h&&(h=a[0]=JM.LabelToken.compile(this.vwr,b,"\x00",null));a=null==h?null:JM.LabelToken.formatLabelAtomArray(this.vwr,f,h,"\x00",null,this.ptTemp);f=this.addString(f,c,a,b);d=(new Boolean(d|(f||null==a))).valueOf();f=this.getLabel(c);this.isScaled&&d?(f=JM.Text.newLabel(this.vwr,null,a,0,0,0,this.scalePixelsPerMicron), +this.putLabel(c,f)):null!=f&&(null==a?this.putLabel(c,null):(f.setText(a),f.textUnformatted=b));d&&(this.defaultOffset!=JV.JC.LABEL_DEFAULT_OFFSET&&this.setOffsets(c,this.defaultOffset),4!=this.defaultAlignment&&this.setHorizAlignment(c,this.defaultAlignment),0!=(this.defaultZPos&32)?this.setZPos(c,32,!0):0!=(this.defaultZPos&16)&&this.setZPos(c,16,!0),0!=this.defaultPointer&&this.setPointer(c,this.defaultPointer),(0!=this.defaultColix||0!=this.defaultPaletteID)&&this.setLabelColix(c,this.defaultColix, +this.defaultPaletteID),0!=this.defaultBgcolix&&this.setBgcolix(c,this.defaultBgcolix),this.defaultFontId!=this.zeroFontId&&this.setFont(c,this.defaultFontId))},"~A,~S,~N,~B");g(e,"addString",function(a,b,c,d){a.setShapeVisibility(this.vf,null!=c);a=null!=d;var f=null==this.strings[b];this.strings[b]=c;this.formats[b]=a&&0<=d.indexOf("%{")?c:d;this.bsSizeSet.setBitTo(b,a);return f},"JM.Atom,~N,~S,~S");l(e,"getProperty",function(a,b){return a.equals("font")?JU.Font.getFont3D(this.defaultFontId):a.equals("offsets")? +this.offsets:a.equals("label")?null!=this.strings&&b=this.offsets.length){if(b== +JV.JC.LABEL_DEFAULT_OFFSET)return;this.offsets=JU.AU.ensureLengthI(this.offsets,this.ms.ac)}this.offsets[a]=this.offsets[a]&63|b;var c=this.getLabel(a);null!=c&&c.setOffset(b)},"~N,~N");g(e,"setHorizAlignment",function(a,b){if(null==this.offsets||a>=this.offsets.length){switch(b){case 0:case 4:return}this.offsets=JU.AU.ensureLengthI(this.offsets,this.ms.ac)}0==b&&(b=4);this.offsets[a]=JV.JC.setHorizAlignment(this.offsets[a],b);var c=this.getLabel(a);null!=c&&c.setAlignment(b)},"~N,~N");g(e,"setPointer", +function(a,b){if(null==this.offsets||a>=this.offsets.length){if(0==b)return;this.offsets=JU.AU.ensureLengthI(this.offsets,this.ms.ac)}this.offsets[a]=JV.JC.setPointer(this.offsets[a],b);var c=this.getLabel(a);null!=c&&(c.pointer=b)},"~N,~N");g(e,"setZPos",function(a,b,c){if(null==this.offsets||a>=this.offsets.length){if(!c)return;this.offsets=JU.AU.ensureLengthI(this.offsets,this.ms.ac)}this.offsets[a]=JV.JC.setZPosition(this.offsets[a],c?b:0)},"~N,~N,~B");g(e,"setFont",function(a,b){if(null==this.fids|| +a>=this.fids.length){if(b==this.zeroFontId)return;this.fids=JU.AU.ensureLengthI(this.fids,this.ms.ac)}this.fids[a]=b;this.bsFontSet.set(a);var c=this.getLabel(a);null!=c&&c.setFontFromFid(b)},"~N,~N");l(e,"setAtomClickability",function(){if(null!=this.strings)for(var a=this.strings.length;0<=--a;)null!=this.strings[a]&&(this.ms.at.length>a&&null!=this.ms.at[a]&&!this.ms.isAtomHidden(a))&&this.ms.at[a].setClickable(this.vf)});l(e,"checkObjectClicked",function(a,b){if(!this.isPickingMode())return null; +var c=this.findNearestLabel(a,b);if(0>c)return null;var d=new java.util.Hashtable;d.put("type","label");d.put("atomIndex",Integer.$valueOf(c));this.lastPicked=c;return d},"~N,~N,~N,JU.BS,~B");l(e,"checkObjectDragged",function(a,b,c,d){if(!this.isPickingMode())return!1;if(-2147483648==a)return a=this.findNearestLabel(c,d),0<=a?(this.lastPicked=this.pickedAtom=a,this.vwr.acm.setDragAtomIndex(a),this.pickedX=c,this.pickedY=d,this.pickedOffset=null==this.offsets||this.pickedAtom>=this.offsets.length? +JV.JC.LABEL_DEFAULT_OFFSET:this.offsets[this.pickedAtom],!0):!1;2147483647==a&&(this.pickedAtom=-1);if(0>this.pickedAtom)return!1;this.move2D(this.pickedAtom,c,d);return!0},"~N,~N,~N,~N,~N,JU.BS");g(e,"findNearestLabel",function(a,b){if(null==this.labelBoxes)return-1;for(var c=3.4028235E38,d=-1,f=3.4028235E38,h=this.vwr.antialiased?2:1,e=this.ms.at,g,p=this.labelBoxes.entrySet().iterator();p.hasNext()&&((g=p.next())||1);)if(e[g.getKey().intValue()].isVisible(this.vf|9)){var m=g.getValue(),k=(a-m[0])* +h,q=(b-m[1])*h;0>=k||(0>=q||k>=m[2]||q>=m[3]||m[4]>f)||(f=m[4],m=Math.min(Math.abs(k-m[2]/2),Math.abs(q-m[3]/2)),m<=c&&(c=m,d=g.getKey().intValue()))}return d},"~N,~N");g(e,"move2D",function(a,b,c){var d=JV.JC.getXOffset(this.pickedOffset),f=JV.JC.getYOffset(this.pickedOffset),d=d+(b-this.pickedX),f=f-(c-this.pickedY);b=JV.JC.getOffset(d,f,!0);this.setOffsets(a,b)},"~N,~N,~N");g(e,"getColix2",function(a,b,c){c?a=null==this.bgcolixes||a>=this.bgcolixes.length?0:this.bgcolixes[a]:(a=null==this.colixes|| +a>=this.colixes.length?0:this.colixes[a],a=JU.C.getColixInherited(a,b.colixAtom),JU.C.isColixTranslucent(a)&&(a=JU.C.getColixTranslucent3(a,!1,0)));return a},"~N,JM.Atom,~B");e.nullToken=y(-1,[null])});n("J.shape");s(["J.api.JmolMeasurementClient","J.shape.AtomShape","JU.Lst"],"J.shape.Measures","java.util.Hashtable JU.AU $.BS $.PT $.SB JM.Measurement $.MeasurementData JU.BSUtil $.C $.Escape".split(" "),function(){var e=t(function(){this.strFormat=this.bsSelected=null;this.mustNotBeConnected=this.mustBeConnected= +!1;this.intramolecular=this.radiusData=null;this.measureAllModels=!1;this.measurementCount=0;this.mPending=this.measurements=null;this.colix=0;this.htMin=this.font3d=this.defaultTickInfo=this.tickInfo=null;this.tokAction=0;r(this,arguments)},J.shape,"Measures",J.shape.AtomShape,J.api.JmolMeasurementClient);w(e,function(){this.measurements=new JU.Lst});g(e,"getSelected",function(){return this.bsSelected});l(e,"initModelSet",function(){for(var a=this.measurements.size();0<=--a;){var b=this.measurements.get(a); +null!=b&&(b.ms=this.ms)}});l(e,"initShape",function(){null==this.font3d&&(this.font3d=this.vwr.gdata.getFont3D(18))});l(e,"setSize",function(a){this.mad=a},"~N,JU.BS");l(e,"setProperty",function(a,b,c){var d;if("clearModelIndex"===a)for(var f=0;fd||4=h){if(pp)if(p=d.getAtom(a),p.mi>c)p.mi--;else if(p.mi==c){this.deleteI(f);break}}}}else"reformatDistances"===a?this.reformatDistances(null==b):"hide"===a?"string"==typeof b?this.doAction(null,b,12294):this.showHideM((new JM.Measurement).setPoints(this.ms,b,null,null),!0):"refresh"===a?this.doAction(b,null,266284):"show"===a?"string"==typeof b?this.doAction(null,b,134222350):this.showHideM((new JM.Measurement).setPoints(this.ms,b,null,null),!1): +"toggle"===a?"string"==typeof b?this.doAction(null,b,268438018):this.toggle((new JM.Measurement).setPoints(this.ms,b,null,null)):"toggleOn"===a&&("string"==typeof b?this.doAction(null,b,1073742335):this.toggleOn(b))}}},"~S,~O,JU.BS");g(e,"setSingleItem",function(a){var b=Array(4),c=x(5,0);c[0]=a.size();for(var d=a.size();0<=--d;){var f=a.get(d);if(u(f,"JU.BS")){f=f.nextSetBit(0);if(0>f)return null;c[d+1]=f}else b[d]=f,c[d+1]=-2-d}return(new JM.Measurement).setPoints(this.ms,c,b,null==this.tickInfo? +this.defaultTickInfo:this.tickInfo)},"JU.Lst");l(e,"getProperty",function(a,b){return"pending".equals(a)?this.mPending:"count".equals(a)?Integer.$valueOf(this.measurementCount):"countPlusIndices".equals(a)?bc||!this.isInRange(NaN,b))return;this.bsSelected.set(c)}if(0<=c)12291==this.tokAction?this.isInRange(NaN,b)&&this.deleteI(c):1275082241== +a.tokAction?(c=this.measurements.get(c),c.setFromMD(a,!0),null!=this.strFormat&&null==a.strFormat?c.formatMeasurementAs(this.strFormat,a.units,!0):null!=a.units&&(c.strFormat=null,c.units=a.units.equals("default")?null:a.units,c.formatMeasurement(null))):this.measurements.get(c).isHidden=1073742334==this.tokAction;else if(12290==this.tokAction||268438018==this.tokAction)b.tickInfo=null==this.tickInfo?this.defaultTickInfo:this.tickInfo,this.defineMeasurement(-1,b,!0)},"JM.MeasurementData,JM.Measurement"); +g(e,"isInRange",function(a,b){return!(null!=this.htMin&&!b.isMin(this.htMin)||null!=this.radiusData&&!b.isInRange(this.radiusData,a==a?a:b.getMeasurement(null)))},"~N,JM.Measurement");g(e,"defineMeasurement",function(a,b,c){var d=b.getMeasurement(null);this.isInRange(d,b)&&(-2147483648==a&&(a=this.find(b)),0<=a?(this.measurements.get(a).isHidden=!1,c&&this.bsSelected.set(a)):(a=(new JM.Measurement).setM(this.ms,b,d,0==b.colix?this.colix:b.colix,this.strFormat,this.measurementCount),a.$isValid&&(this.measurements.addLast(a), +this.vwr.setStatusMeasuring("measureCompleted",this.measurementCount++,J.shape.Measures.getMessage(a,!1),a.value))))},"~N,JM.Measurement,~B");e.getMessage=g(e,"getMessage",function(a,b){var c=new JU.SB;c.append("[");for(var d=1;d<=a.count;d++)1=this.measurements.size()||0>a)){var b=J.shape.Measures.getMessage(this.measurements.get(a), +!0);this.measurements.removeItemAt(a);this.measurementCount--;this.vwr.setStatusMeasuring("measureDeleted",a,b,0);this.bsSelected=null}},"~N");g(e,"doAction",function(a,b,c){b=b.toUpperCase().$replace("?","*");for(var d=JU.PT.isWild(b),f=this.measurements.size();0<=--f;){var h=this.measurements.get(f);if(null!=h.thisID&&(h.thisID.equalsIgnoreCase(b)||d&&JU.PT.isMatch(h.thisID.toUpperCase(),b,!0,!0)))switch(c){case 266284:h.setFromMD(a,!0);break;case 1665140738:h.mad=a.mad;break;case 12291:h=J.shape.Measures.getMessage(this.measurements.get(f), +!0);this.measurements.removeItemAt(f);this.measurementCount--;this.vwr.setStatusMeasuring("measureDeleted",f,h,0);break;case 134222350:h.isHidden=!1;break;case 12294:h.isHidden=!0;break;case 268438018:h.isHidden=!h.isHidden;break;case 1073742335:h.isHidden=!1}}},"JM.MeasurementData,~S,~N");g(e,"reformatDistances",function(a){for(var b=this.measurementCount;0<=--b;)this.measurements.get(b).reformatDistanceIfSelected(a)},"~B");g(e,"getAllInfo",function(){for(var a=new JU.Lst,b=0;bg?-1:f[g].getAtomNumber())); +e.put("info",0>g?"":f[g].getInfo());a.addLast(e)}d.put("atoms",a);return d},"~N");g(e,"getInfoAsString",function(a){return this.measurements.get(a).getInfoAsString(null)},"~N");g(e,"setVisibilityInfo",function(){var a=this.vwr.getVisibleFramesBitSet(),b=this.measurementCount;a:for(;0<=--b;){var c=this.measurements.get(b);c.isVisible=!1;if(!(0==this.mad||c.isHidden)){for(var d=c.count;0p;p++){var m=l+j(p*d/10),z=5==p?g:j(g/2);a.fillTextRect(m,c-z,e,b.zSlab,2*f,z)}},"J.api.JmolRendererInterface,JM.Text,~A,~N,~B");e.drawLineXYZ=g(e,"drawLineXYZ",function(a,b,c,d,f,e,g,j,p,m,l){var q=f-b,n=e-c;if(!(0>=q&&-q<=j&&0>=n&&-n<=p)){var s=NaN;f+=0j/2?0:q<3*-j/2?j:s=j/2:0a.mads[m])){this.labelColix=a.getColix2(m,this.atom,!1);this.bgcolix=a.getColix2(m,this.atom,!0);0==this.bgcolix&&this.vwr.gdata.getColorArgbOrGray(this.labelColix)==g&&(this.labelColix=e);this.fid=null==c||m>=c.length||0==c[m]?a.zeroFontId:c[m];this.offset=null==d||m>=d.length?0:d[m];var q=0!=(this.offset&32),n=0!=(this.offset&16);this.textAlign=JV.JC.getAlignment(this.offset);this.pointer=JV.JC.getPointer(this.offset);this.doPointer=this.pointer&1;this.mode=this.doPointer| +this.offset&64|(p?4:0);this.zSlab=this.atom.sZ-j(this.atom.sD/2)-3;1>this.zSlab&&(this.zSlab=1);this.zBox=this.zSlab;n?(q=this.atom.group,n=q.groupIndex,n!=l&&(q.getMinZ(f,this.minZ),l=n),this.zBox=this.minZ[0]):q&&(this.zBox=1);1>this.zBox&&(this.zBox=1);q=a.getLabel(m);this.boxXY=!this.isExport||this.vwr.creatingImage?a.getBox(m):v(5,0);null==this.boxXY&&a.putBox(m,this.boxXY=v(5,0));q=this.renderLabelOrMeasure(q,k);null!=q&&a.putLabel(m,q);p&&(this.boxXY[0]/=2,this.boxXY[1]/=2);this.boxXY[4]=this.zBox}}return!1}); +g(e,"renderLabelOrMeasure",function(a,b){var c=!1,d=0!=(this.pointer&2)&&0!=this.bgcolix?this.bgcolix:this.labelColix;if(null!=a)null==a.font&&a.setFontFromFid(this.fid),a.atomX=this.atomPt.sX,a.atomY=this.atomPt.sY,a.atomZ=this.zSlab,null==a.pymolOffset?(a.setXYZs(this.atomPt.sX,this.atomPt.sY,this.zBox,this.zSlab),a.colix=this.labelColix,a.bgcolix=this.bgcolix):a.getPymolScreenOffset(this.atomPt,this.screen,this.zSlab,this.pTemp,this.sppm);else{c=4==this.textAlign||0==this.textAlign;if(this.fid!= +this.fidPrevious||0==this.ascent)this.vwr.gdata.setFont(JU.Font.getFont3D(this.fid)),this.fidPrevious=this.fid,this.font3d=this.vwr.gdata.getFont3DCurrent(),c&&(this.ascent=this.font3d.getAscent(),this.descent=this.font3d.getDescent());if(c&&1==this.imageFontScaling&&0==this.scalePixelsPerMicron&&0>b.indexOf("|")&&0>b.indexOf("\n")&&0>b.indexOf("b.indexOf("b.sD&&(this.tm.transformPtScr(b,this.pt0i),b.sX=this.pt0i.x,b.sY=this.pt0i.y,b.sZ=this.pt0i.z);this.p[a]=b}this.modulating&&this.m.refresh(this.p)});g(e,"getModAtom",function(a){var b=Integer.$valueOf(a),c=this.mpts.get(b);null!=c&&(b=null);var d=this.ms.getModulation(a);null==d?c=this.ms.at[a]:(null==c&&(c=new JU.Point3fi),c.setT(this.ms.at[a]),this.vwr.tm.vibrationOn&& +this.vwr.tm.getVibrationPoint(d,c,NaN),c.sD=-1);null!=b&&this.mpts.put(b,c);return c},"~N");g(e,"renderMeasurement",function(a){a=a?this.m.getString():null;null!=a&&(0==a.length?a=null:null!=this.m.text&&(this.m.text.setText(a),this.m.text.colix=this.labelColix,this.m.text.setFontScale(this.imageFontScaling)));0==this.m.mad?(this.dotsOrDashes=!1,this.mad=this.mad0):(this.mad=this.m.mad,this.dotsOrDashes=!0,this.dashDots=0>this.mad?null:J.render.FontLineShapeRenderer.ndots);switch(this.count){case 1:this.drawLine(this.p[0].sX, +this.p[0].sY,this.p[0].sZ,this.m.traceX,this.m.traceY,this.p[0].sZ,this.mad);break;case 2:this.renderDistance(a,this.p[0],this.p[1]);break;case 3:this.renderAngle(a,this.p[0],this.p[1],this.p[2]);break;case 4:this.renderTorsion(a,this.p[0],this.p[1],this.p[2],this.p[3])}this.p[0]=this.p[1]=this.p[2]=this.p[3]=null},"~B");g(e,"renderDistance",function(a,b,c){if(null!=(this.tickInfo=this.m.tickInfo))this.drawLine(b.sX,b.sY,b.sZ,c.sX,c.sY,c.sZ,this.mad),this.tickA=b,this.tickB=c,null==this.tickAs&&(this.tickAs= +new JU.P3,this.tickBs=new JU.P3),this.tickAs.set(b.sX,b.sY,b.sZ),this.tickBs.set(c.sX,c.sY,c.sZ),this.drawTicks(this.mad,null!=a);else{var d=b.sZ-b.sD-10,f=c.sZ-c.sD-10,e=this.drawLine(b.sX,b.sY,d,c.sX,c.sY,f,this.mad);if(null!=a){0d&&(d=1);var f=j((b.sX+c.sX)/2),g=j((b.sY+c.sY)/2);null==this.m.text?(this.g3d.setC(this.labelColix),this.drawString(f,g,d,e,this.doJustify&&0<(f-b.sX)*(g-b.sY),!1,!0,this.doJustify?0:2147483647,a)):(this.atomPt.ave(b, +c),this.atomPt.sX=j((b.sX+c.sX)/2),this.atomPt.sY=j((b.sY+c.sY)/2),this.renderLabelOrMeasure(this.m.text,a))}}},"~S,JU.Point3fi,JU.Point3fi");g(e,"renderAngle",function(a,b,c,d){var e=c.sD+10,h=b.sZ-b.sD-10,g=c.sZ-e,l=d.sZ-d.sD-10;b=this.drawLine(b.sX,b.sY,h,c.sX,c.sY,g,this.mad);b+=this.drawLine(c.sX,c.sY,g,d.sX,d.sY,l,this.mad);if(null!=a)if(b=j((b+1)/2),175q&&(q=0);this.g3d.drawPixel(n.x,n.y,q);k==m&&(this.pointT.setT(this.m.renderArc),this.pointT.scale(1.1),this.matrixT.rotate(this.pointT),this.pointT.add(c),this.tm.transformPt(this.pointT), +q=this.m.inFront?Math.min(Math.min(h,g),l):n.z-e,1>q&&(q=1),null==this.m.text?(this.g3d.setC(this.labelColix),this.drawString(n.x,n.y,q,b,n.xh&&(h=1),m/=3,null==this.m.text?(this.g3d.setC(this.labelColix),this.drawString(j((b.sX+c.sX+d.sX+e.sX)/4),j((b.sY+c.sY+d.sY+e.sY)/4),h,m,!1,!1,!1,this.doJustify?0:2147483647,a)):(this.atomPt.add2(b,c),this.atomPt.add(d),this.atomPt.add(e),this.atomPt.scale(0.25),this.renderLabelOrMeasure(this.m.text,a)))},"~S,JU.Point3fi,JU.Point3fi,JU.Point3fi,JU.Point3fi"); +g(e,"renderPendingMeasurement",function(){try{this.getPoints()}catch(a){if(B(a,Exception)){this.shape.mPending=null;return}throw a;}var b=-2147483648==this.m.traceX;this.g3d.setC(this.labelColix=b?this.vwr.cm.colixRubberband:2==this.count?20:23);if(this.m.haveTarget)this.renderMeasurement(b);else{b=this.p[this.count-1];1 b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var avail = this.buf.length - this.pos; +if (avail > 0) { +if (len < avail) { +avail = len; +}System.arraycopy(this.buf, this.pos, b, off, avail); +this.pos += avail; +off += avail; +len -= avail; +}if (len > 0) { +len = this.$in.read(b, off, len); +if (len == -1) { +return avail == 0 ? -1 : avail; +}return avail + len; +}return avail; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "unreadByte", +function(b){ +this.ensureOpen(); +if (this.pos == 0) { +throw new java.io.IOException("Push back buffer is full"); +}this.buf[--this.pos] = b; +}, "~N"); +Clazz_defineMethod(c$, "unread", +function(b, off, len){ +this.ensureOpen(); +if (len > this.pos) { +throw new java.io.IOException("Push back buffer is full"); +}this.pos -= len; +System.arraycopy(b, off, this.buf, this.pos, len); +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "available", +function(){ +this.ensureOpen(); +var n = this.buf.length - this.pos; +var avail = this.$in.available(); +return n > (2147483647 - avail) ? 2147483647 : n + avail; +}); +Clazz_overrideMethod(c$, "skip", +function(n){ +this.ensureOpen(); +if (n <= 0) { +return 0; +}var pskip = this.buf.length - this.pos; +if (pskip > 0) { +if (n < pskip) { +pskip = n; +}this.pos += pskip; +n -= pskip; +}if (n > 0) { +pskip += this.$in.skip(n); +}return pskip; +}, "~N"); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz_overrideMethod(c$, "close", +function(){ +if (this.$in == null) return; +this.$in.close(); +this.$in = null; +this.buf = null; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["java.io.FilterInputStream"], "java.util.zip.CheckedInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.cksum = null; +Clazz_instantialize(this, arguments);}, java.util.zip, "CheckedInputStream", java.io.FilterInputStream); +Clazz_defineMethod(c$, "set", +function(cksum){ +this.$in = this.$in; +this.cksum = cksum; +return this; +}, "com.jcraft.jzlib.Checksum"); +Clazz_overrideMethod(c$, "readByteAsInt", +function(){ +var b = this.$in.readByteAsInt(); +if (b != -1) { +this.cksum.updateByteAsInt(b); +}return b; +}); +Clazz_defineMethod(c$, "read", +function(buf, off, len){ +len = this.$in.read(buf, off, len); +if (len != -1) { +this.cksum.update(buf, off, len); +}return len; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(n){ +var buf = Clazz_newByteArray (512, 0); +var total = 0; +while (total < n) { +var len = n - total; +len = this.read(buf, 0, len < buf.length ? len : buf.length); +if (len == -1) { +return total; +}total += len; +} +return total; +}, "~N"); +Clazz_defineMethod(c$, "getChecksum", +function(){ +return this.cksum; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["com.jcraft.jzlib.Inflater"], "java.util.zip.Inflater", null, function(){ +var c$ = Clazz_declareType(java.util.zip, "Inflater", com.jcraft.jzlib.Inflater); +Clazz_defineMethod(c$, "initialize", +function(nowrap){ +return this.init(0, nowrap); +}, "~B"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["java.io.IOException"], "java.util.zip.ZipException", null, function(){ +var c$ = Clazz_declareType(java.util.zip, "ZipException", java.io.IOException); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +(function(){ +var c$ = Clazz_declareInterface(java.util.zip, "ZipConstants"); +c$.LOCSIG = 0x04034b50; +c$.EXTSIG = 0x08074b50; +c$.CENSIG = 0x02014b50; +c$.ENDSIG = 0x06054b50; +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["java.util.zip.ZipConstants"], "java.util.zip.ZipEntry", ["java.util.Date"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.offset = 0; +this.name = null; +this.time = -1; +this.crc = -1; +this.size = -1; +this.csize = -1; +this.method = -1; +this.flag = 0; +this.extra = null; +this.comment = null; +Clazz_instantialize(this, arguments);}, java.util.zip, "ZipEntry", null, [java.util.zip.ZipConstants, Cloneable]); +Clazz_makeConstructor(c$, +function(name){ +if (name == null) { +throw new NullPointerException(); +}if (name.length > 0xFFFF) { +throw new IllegalArgumentException("entry name too long"); +}this.name = name; +}, "~S"); +Clazz_defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz_defineMethod(c$, "setTime", +function(time){ +this.time = java.util.zip.ZipEntry.javaToDosTime(time); +}, "~N"); +Clazz_defineMethod(c$, "getTime", +function(){ +return this.time != -1 ? java.util.zip.ZipEntry.dosToJavaTime(this.time) : -1; +}); +Clazz_defineMethod(c$, "setSize", +function(size){ +if (size < 0) { +throw new IllegalArgumentException("invalid entry size"); +}this.size = size; +}, "~N"); +Clazz_defineMethod(c$, "getSize", +function(){ +return this.size; +}); +Clazz_defineMethod(c$, "getCompressedSize", +function(){ +return this.csize; +}); +Clazz_defineMethod(c$, "setCompressedSize", +function(csize){ +this.csize = csize; +}, "~N"); +Clazz_defineMethod(c$, "setCrc", +function(crc){ +if (crc < 0 || crc > 0xFFFFFFFF) { +throw new IllegalArgumentException("invalid entry crc-32"); +}this.crc = crc; +}, "~N"); +Clazz_defineMethod(c$, "getCrc", +function(){ +return this.crc; +}); +Clazz_defineMethod(c$, "setMethod", +function(method){ +if (method != 0 && method != 8) { +throw new IllegalArgumentException("invalid compression method"); +}this.method = method; +}, "~N"); +Clazz_defineMethod(c$, "getMethod", +function(){ +return this.method; +}); +Clazz_defineMethod(c$, "setExtra", +function(extra){ +if (extra != null && extra.length > 0xFFFF) { +throw new IllegalArgumentException("invalid extra field length"); +}this.extra = extra; +}, "~A"); +Clazz_defineMethod(c$, "getExtra", +function(){ +return this.extra; +}); +Clazz_defineMethod(c$, "setComment", +function(comment){ +this.comment = comment; +}, "~S"); +Clazz_defineMethod(c$, "getComment", +function(){ +return this.comment; +}); +Clazz_defineMethod(c$, "isDirectory", +function(){ +return this.name.endsWith("/"); +}); +Clazz_overrideMethod(c$, "toString", +function(){ +return this.getName(); +}); +c$.dosToJavaTime = Clazz_defineMethod(c$, "dosToJavaTime", +function(dtime){ +var d = new java.util.Date((((dtime >> 25) & 0x7f) + 80), (((dtime >> 21) & 0x0f) - 1), ((dtime >> 16) & 0x1f), ((dtime >> 11) & 0x1f), ((dtime >> 5) & 0x3f), ((dtime << 1) & 0x3e)); +return d.getTime(); +}, "~N"); +c$.javaToDosTime = Clazz_defineMethod(c$, "javaToDosTime", +function(time){ +var d = new java.util.Date(time); +var year = d.getYear() + 1900; +if (year < 1980) { +return 2162688; +}return (year - 1980) << 25 | (d.getMonth() + 1) << 21 | d.getDate() << 16 | d.getHours() << 11 | d.getMinutes() << 5 | d.getSeconds() >> 1; +}, "~N"); +Clazz_overrideMethod(c$, "hashCode", +function(){ +return this.name.hashCode(); +}); +Clazz_defineMethod(c$, "clone", +function(){ +try { +var e = Clazz_superCall(this, java.util.zip.ZipEntry, "clone", []); +if (this.extra != null) { +e.extra = Clazz_newByteArray (this.extra.length, 0); +System.arraycopy(this.extra, 0, e.extra, 0, this.extra.length); +}return e; +} catch (e) { +if (Clazz_exceptionOf(e,"CloneNotSupportedException")){ +throw new InternalError(); +} else { +throw e; +} +} +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +(function(){ +var c$ = Clazz_declareType(java.util.zip, "ZipConstants64", null); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["java.util.zip.InflaterInputStream", "$.ZipConstants", "$.CRC32"], "java.util.zip.ZipInputStream", ["java.io.PushbackInputStream", "java.util.zip.Inflater", "$.ZipEntry"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.entry = null; +this.flag = 0; +this.crc = null; +this.remaining = 0; +this.tmpbuf = null; +this.$closed = false; +this.entryEOF = false; +this.zc = null; +this.byteTest = null; +this.$b = null; +Clazz_instantialize(this, arguments);}, java.util.zip, "ZipInputStream", java.util.zip.InflaterInputStream, java.util.zip.ZipConstants); +Clazz_prepareFields (c$, function(){ +this.crc = new java.util.zip.CRC32(); +this.tmpbuf = Clazz_newByteArray (512, 0); +this.byteTest = Clazz_newByteArray(-1, [0x20]); +this.$b = Clazz_newByteArray (256, 0); +}); +Clazz_makeConstructor(c$, +function($in){ +Clazz_superConstructor(this, java.util.zip.ZipInputStream, [ new java.io.PushbackInputStream($in, 1024), java.util.zip.ZipInputStream.newInflater(), 512]); +var charset = "UTF-8"; +try { + String.instantialize(this.byteTest, charset); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +throw new NullPointerException("charset is invalid"); +} else { +throw e; +} +} +this.zc = charset; +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.$closed) { +throw new java.io.IOException("Stream closed"); +}}); +c$.newInflater = Clazz_defineMethod(c$, "newInflater", +function(){ +return new java.util.zip.Inflater().init(0, true); +}); +Clazz_defineMethod(c$, "getNextEntry", +function(){ +this.ensureOpen(); +if (this.entry != null) { +this.closeEntry(); +}this.crc.reset(); +this.inflater = this.inf = java.util.zip.ZipInputStream.newInflater(); +if ((this.entry = this.readLOC()) == null) { +return null; +}if (this.entry.method == 0) { +this.remaining = this.entry.size; +}this.entryEOF = false; +return this.entry; +}); +Clazz_defineMethod(c$, "closeEntry", +function(){ +this.ensureOpen(); +while (this.read(this.tmpbuf, 0, this.tmpbuf.length) != -1) { +} +this.entryEOF = true; +}); +Clazz_overrideMethod(c$, "available", +function(){ +this.ensureOpen(); +return (this.entryEOF ? 0 : 1); +}); +Clazz_defineMethod(c$, "read", +function(b, off, len){ +this.ensureOpen(); +if (off < 0 || len < 0 || off > b.length - len) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}if (this.entry == null) { +return -1; +}switch (this.entry.method) { +case 8: +len = this.readInf(b, off, len); +if (len == -1) { +this.readEnd(this.entry); +this.entryEOF = true; +this.entry = null; +} else { +this.crc.update(b, off, len); +}return len; +case 0: +if (this.remaining <= 0) { +this.entryEOF = true; +this.entry = null; +return -1; +}if (len > this.remaining) { +len = this.remaining; +}len = this.$in.read(b, off, len); +if (len == -1) { +throw new java.util.zip.ZipException("unexpected EOF"); +}this.crc.update(b, off, len); +this.remaining -= len; +if (this.remaining == 0 && this.entry.crc != this.crc.getValue()) { +throw new java.util.zip.ZipException("invalid entry CRC (expected 0x" + Long.toHexString(this.entry.crc) + " but got 0x" + Long.toHexString(this.crc.getValue()) + ")"); +}return len; +default: +throw new java.util.zip.ZipException("invalid compression method"); +} +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "skip", +function(n){ +if (n < 0) { +throw new IllegalArgumentException("negative skip length"); +}this.ensureOpen(); +var max = Math.min(n, 2147483647); +var total = 0; +while (total < max) { +var len = max - total; +if (len > this.tmpbuf.length) { +len = this.tmpbuf.length; +}len = this.read(this.tmpbuf, 0, len); +if (len == -1) { +this.entryEOF = true; +break; +}total += len; +} +return total; +}, "~N"); +Clazz_defineMethod(c$, "close", +function(){ +if (!this.$closed) { +Clazz_superCall(this, java.util.zip.ZipInputStream, "close", []); +this.$closed = true; +}}); +Clazz_defineMethod(c$, "readLOC", +function(){ +try { +this.readFully(this.tmpbuf, 0, 30); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.EOFException")){ +return null; +} else { +throw e; +} +} +if (java.util.zip.ZipInputStream.get32(this.tmpbuf, 0) != 67324752) { +return null; +}this.flag = java.util.zip.ZipInputStream.get16(this.tmpbuf, 6); +var len = java.util.zip.ZipInputStream.get16(this.tmpbuf, 26); +var blen = this.$b.length; +if (len > blen) { +do blen = blen * 2; + while (len > blen); +this.$b = Clazz_newByteArray (blen, 0); +}this.readFully(this.$b, 0, len); +var e = this.createZipEntry(((this.flag & 2048) != 0) ? this.toStringUTF8(this.$b, len) : this.toStringb2(this.$b, len)); +if ((this.flag & 1) == 1) { +throw new java.util.zip.ZipException("encrypted ZIP entry not supported"); +}e.method = java.util.zip.ZipInputStream.get16(this.tmpbuf, 8); +e.time = java.util.zip.ZipInputStream.get32(this.tmpbuf, 10); +if ((this.flag & 8) == 8) { +if (e.method != 8) { +throw new java.util.zip.ZipException("only DEFLATED entries can have EXT descriptor"); +}} else { +e.crc = java.util.zip.ZipInputStream.get32(this.tmpbuf, 14); +e.csize = java.util.zip.ZipInputStream.get32(this.tmpbuf, 18); +e.size = java.util.zip.ZipInputStream.get32(this.tmpbuf, 22); +}len = java.util.zip.ZipInputStream.get16(this.tmpbuf, 28); +if (len > 0) { +var bb = Clazz_newByteArray (len, 0); +this.readFully(bb, 0, len); +e.setExtra(bb); +if (e.csize == 4294967295 || e.size == 4294967295) { +var off = 0; +while (off + 4 < len) { +var sz = java.util.zip.ZipInputStream.get16(bb, off + 2); +if (java.util.zip.ZipInputStream.get16(bb, off) == 1) { +off += 4; +if (sz < 16 || (off + sz) > len) { +return e; +}e.size = java.util.zip.ZipInputStream.get64(bb, off); +e.csize = java.util.zip.ZipInputStream.get64(bb, off + 8); +break; +}off += (sz + 4); +} +}}return e; +}); +Clazz_defineMethod(c$, "toStringUTF8", +function(b2, len){ +try { +return String.instantialize(b2, 0, len, this.zc); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +return this.toStringb2(b2, len); +} else { +throw e; +} +} +}, "~A,~N"); +Clazz_defineMethod(c$, "toStringb2", +function(b2, len){ +return String.instantialize(b2, 0, len); +}, "~A,~N"); +Clazz_defineMethod(c$, "createZipEntry", +function(name){ +return new java.util.zip.ZipEntry(name); +}, "~S"); +Clazz_defineMethod(c$, "readEnd", +function(e){ +var n = this.inf.getAvailIn(); +if (n > 0) { +(this.$in).unread(this.buf, this.len - n, n); +this.eof = false; +}if ((this.flag & 8) == 8) { +if (this.inf.getTotalOut() > 4294967295 || this.inf.getTotalIn() > 4294967295) { +this.readFully(this.tmpbuf, 0, 24); +var sig = java.util.zip.ZipInputStream.get32(this.tmpbuf, 0); +if (sig != 134695760) { +e.crc = sig; +e.csize = java.util.zip.ZipInputStream.get64(this.tmpbuf, 4); +e.size = java.util.zip.ZipInputStream.get64(this.tmpbuf, 12); +(this.$in).unread(this.tmpbuf, 19, 4); +} else { +e.crc = java.util.zip.ZipInputStream.get32(this.tmpbuf, 4); +e.csize = java.util.zip.ZipInputStream.get64(this.tmpbuf, 8); +e.size = java.util.zip.ZipInputStream.get64(this.tmpbuf, 16); +}} else { +this.readFully(this.tmpbuf, 0, 16); +var sig = java.util.zip.ZipInputStream.get32(this.tmpbuf, 0); +if (sig != 134695760) { +e.crc = sig; +e.csize = java.util.zip.ZipInputStream.get32(this.tmpbuf, 4); +e.size = java.util.zip.ZipInputStream.get32(this.tmpbuf, 8); +(this.$in).unread(this.tmpbuf, 11, 4); +} else { +e.crc = java.util.zip.ZipInputStream.get32(this.tmpbuf, 4); +e.csize = java.util.zip.ZipInputStream.get32(this.tmpbuf, 8); +e.size = java.util.zip.ZipInputStream.get32(this.tmpbuf, 12); +}}}if (e.size != this.inf.getTotalOut()) { +throw new java.util.zip.ZipException("invalid entry size (expected " + e.size + " but got " + this.inf.getTotalOut() + " bytes)"); +}if (e.csize != this.inf.getTotalIn()) { +throw new java.util.zip.ZipException("invalid entry compressed size (expected " + e.csize + " but got " + this.inf.getTotalIn() + " bytes)"); +}if (e.crc != this.crc.getValue()) { +throw new java.util.zip.ZipException("invalid entry CRC (expected 0x" + Long.toHexString(e.crc) + " but got 0x" + Long.toHexString(this.crc.getValue()) + ")"); +}}, "java.util.zip.ZipEntry"); +Clazz_defineMethod(c$, "readFully", +function(b, off, len){ +while (len > 0) { +var n = this.$in.read(b, off, len); +if (n == -1) { +throw new java.io.EOFException(); +}off += n; +len -= n; +} +}, "~A,~N,~N"); +c$.get16 = Clazz_defineMethod(c$, "get16", +function(b, off){ +return (b[off] & 0xff) | ((b[off + 1] & 0xff) << 8); +}, "~A,~N"); +c$.get32 = Clazz_defineMethod(c$, "get32", +function(b, off){ +return (java.util.zip.ZipInputStream.get16(b, off) | (java.util.zip.ZipInputStream.get16(b, off + 2) << 16)) & 0xffffffff; +}, "~A,~N"); +c$.get64 = Clazz_defineMethod(c$, "get64", +function(b, off){ +return java.util.zip.ZipInputStream.get32(b, off) | (java.util.zip.ZipInputStream.get32(b, off + 4) << 32); +}, "~A,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["com.jcraft.jzlib.CRC32"], "java.util.zip.CRC32", null, function(){ +var c$ = Clazz_declareType(java.util.zip, "CRC32", com.jcraft.jzlib.CRC32); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["com.jcraft.jzlib.InflaterInputStream"], "java.util.zip.InflaterInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.inf = null; +Clazz_instantialize(this, arguments);}, java.util.zip, "InflaterInputStream", com.jcraft.jzlib.InflaterInputStream); +Clazz_makeConstructor(c$, +function($in, inflater, size){ +Clazz_superConstructor(this, java.util.zip.InflaterInputStream, [$in, inflater, size, true]); +this.inf = inflater; +}, "java.io.InputStream,java.util.zip.Inflater,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("java.util.zip"); +Clazz_load(["java.util.zip.InflaterInputStream", "$.CRC32"], "java.util.zip.GZIPInputStream", ["java.util.zip.CheckedInputStream", "$.Inflater"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.crc = null; +this.eos = false; +this.$closed = false; +this.tmpbuf = null; +Clazz_instantialize(this, arguments);}, java.util.zip, "GZIPInputStream", java.util.zip.InflaterInputStream); +Clazz_prepareFields (c$, function(){ +this.crc = new java.util.zip.CRC32(); +this.tmpbuf = Clazz_newByteArray (128, 0); +}); +Clazz_makeConstructor(c$, +function($in, size){ +Clazz_superConstructor(this, java.util.zip.GZIPInputStream, [$in, new java.util.zip.Inflater().init(0, true), size]); +this.readHeader($in); +}, "java.io.InputStream,~N"); +Clazz_defineMethod(c$, "ensureOpen", +function(){ +if (this.$closed) { +throw new java.io.IOException("Stream closed"); +}}); +Clazz_defineMethod(c$, "read", +function(buf, off, len){ +this.ensureOpen(); +if (this.eos) { +return -1; +}var n = this.readInf(buf, off, len); +if (n == -1) { +if (this.readTrailer()) this.eos = true; + else return this.read(buf, off, len); +} else { +this.crc.update(buf, off, n); +}return n; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "close", +function(){ +if (!this.$closed) { +Clazz_superCall(this, java.util.zip.GZIPInputStream, "close", []); +this.eos = true; +this.$closed = true; +}}); +Clazz_defineMethod(c$, "readHeader", +function(this_in){ +var $in = new java.util.zip.CheckedInputStream(this_in).set(this.crc); +this.crc.reset(); +if (this.readUShort($in) != 35615) { +throw new java.util.zip.ZipException("Not in GZIP format"); +}if (this.readUByte($in) != 8) { +throw new java.util.zip.ZipException("Unsupported compression method"); +}var flg = this.readUByte($in); +this.skipBytes($in, 6); +var n = 10; +if ((flg & 4) == 4) { +var m = this.readUShort($in); +this.skipBytes($in, m); +n += m + 2; +}if ((flg & 8) == 8) { +do { +n++; +} while (this.readUByte($in) != 0); +}if ((flg & 16) == 16) { +do { +n++; +} while (this.readUByte($in) != 0); +}if ((flg & 2) == 2) { +var v = this.crc.getValue() & 0xffff; +if (this.readUShort($in) != v) { +throw new java.util.zip.ZipException("Corrupt GZIP header"); +}n += 2; +}this.crc.reset(); +return n; +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "readTrailer", +function(){ +return true; +}); +Clazz_defineMethod(c$, "readUShort", +function($in){ +var b = this.readUByte($in); +return (this.readUByte($in) << 8) | b; +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "readUByte", +function($in){ +var b = $in.readByteAsInt(); +if (b == -1) { +throw new java.io.EOFException(); +}if (b < -1 || b > 255) { +throw new java.io.IOException(this.$in.getClass().getName() + ".read() returned value out of range -1..255: " + b); +}return b; +}, "java.io.InputStream"); +Clazz_defineMethod(c$, "skipBytes", +function($in, n){ +while (n > 0) { +var len = $in.read(this.tmpbuf, 0, n < this.tmpbuf.length ? n : this.tmpbuf.length); +if (len == -1) { +throw new java.io.EOFException(); +}n -= len; +} +}, "java.io.InputStream,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 +Clazz_declarePackage("javajs.api"); +Clazz_load(["java.util.zip.ZipInputStream", "javajs.api.ZInputStream"], "javajs.api.GenericZipInputStream", null, function(){ +var c$ = Clazz_declareType(javajs.api, "GenericZipInputStream", java.util.zip.ZipInputStream, javajs.api.ZInputStream); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["javajs.api.GenericZipTools"], "JU.ZipTools", ["java.io.BufferedInputStream", "java.util.zip.CRC32", "$.GZIPInputStream", "$.ZipEntry", "javajs.api.GenericZipInputStream", "$.Interface", "JU.BArray", "$.Lst", "$.Rdr", "$.SB"], function(){ +var c$ = Clazz_declareType(JU, "ZipTools", null, javajs.api.GenericZipTools); +/*LV!1824 unnec constructor*/Clazz_overrideMethod(c$, "newZipInputStream", +function(is){ +return JU.ZipTools.newZIS(is); +}, "java.io.InputStream"); +c$.newZIS = Clazz_defineMethod(c$, "newZIS", +function(is){ +return (Clazz_instanceOf(is,"java.util.zip.ZipInputStream") ? is : Clazz_instanceOf(is,"java.io.BufferedInputStream") ? new javajs.api.GenericZipInputStream(is) : new javajs.api.GenericZipInputStream( new java.io.BufferedInputStream(is))); +}, "java.io.InputStream"); +Clazz_overrideMethod(c$, "getAllZipData", +function(is, subfileList, name0, binaryFileList, exclude, fileData){ +}, "java.io.InputStream,~A,~S,~S,~S,java.util.Map"); +Clazz_overrideMethod(c$, "getZipFileDirectory", +function(bis, list, listPtr, asBufferedInputStream){ +var ret; +var justDir = (list == null || listPtr >= list.length); +var fileName = (justDir ? "." : list[listPtr]); +if (JU.Rdr.isTar(bis)) return JU.ZipTools.getTarFileDirectory(bis, fileName, asBufferedInputStream); +if (justDir) return this.getZipDirectoryAsStringAndClose(bis); +bis = JU.Rdr.getPngZipStream(bis, true); +var zis = JU.ZipTools.newZIS(bis); +var ze; +try { +var isAll = (fileName.equals(".")); +if (isAll || fileName.lastIndexOf("/") == fileName.length - 1) { +ret = new JU.SB(); +while ((ze = zis.getNextEntry()) != null) { +var name = ze.getName(); +if (isAll || name.startsWith(fileName)) ret.append(name).appendC('\n'); +} +var str = ret.toString(); +return (asBufferedInputStream ? JU.Rdr.getBIS(str.getBytes()) : str); +}var pt = fileName.indexOf(":asBinaryString"); +var asBinaryString = (pt > 0); +if (asBinaryString) fileName = fileName.substring(0, pt); +fileName = fileName.$replace('\\', '/'); +while ((ze = zis.getNextEntry()) != null && !fileName.equals(ze.getName())) { +} +var bytes = (ze == null ? null : JU.Rdr.getLimitedStreamBytes(zis, ze.getSize())); +ze = null; +zis.close(); +if (bytes == null) return ""; +if (JU.Rdr.isZipB(bytes) || JU.Rdr.isPngZipB(bytes)) return this.getZipFileDirectory(JU.Rdr.getBIS(bytes), list, ++listPtr, asBufferedInputStream); +if (asBufferedInputStream) return JU.Rdr.getBIS(bytes); +if (asBinaryString) { +ret = new JU.SB(); +for (var i = 0; i < bytes.length; i++) ret.append(Integer.toHexString(bytes[i] & 0xFF)).appendC(' '); + +return ret.toString(); +}if (JU.Rdr.isGzipB(bytes)) bytes = JU.Rdr.getLimitedStreamBytes(this.getUnGzippedInputStream(bytes), -1); +return JU.Rdr.fixUTF(bytes); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return ""; +} else { +throw e; +} +} +}, "java.io.BufferedInputStream,~A,~N,~B"); +c$.getTarFileDirectory = Clazz_defineMethod(c$, "getTarFileDirectory", +function(bis, fileName, asBufferedInputStream){ +var ret; +try { +var isAll = (fileName.equals(".")); +if (isAll || fileName.lastIndexOf("/") == fileName.length - 1) { +ret = new JU.SB(); +JU.ZipTools.getTarContents(bis, fileName, ret); +var str = ret.toString(); +return (asBufferedInputStream ? JU.Rdr.getBIS(str.getBytes()) : str); +}fileName = fileName.$replace('\\', '/'); +var bytes = JU.ZipTools.getTarContents(bis, fileName, null); +bis.close(); +return (bytes == null ? "" : asBufferedInputStream ? JU.Rdr.getBIS(bytes) : JU.Rdr.fixUTF(bytes)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return ""; +} else { +throw e; +} +} +}, "java.io.BufferedInputStream,~S,~B"); +Clazz_overrideMethod(c$, "getZipFileContentsAsBytes", +function(bis, list, listPtr){ +var ret = Clazz_newByteArray (0, 0); +var fileName = list[listPtr]; +if (fileName.lastIndexOf("/") == fileName.length - 1) return ret; +try { +if (JU.Rdr.isTar(bis)) return JU.ZipTools.getTarContents(bis, fileName, null); +bis = JU.Rdr.getPngZipStream(bis, true); +var zis = JU.ZipTools.newZIS(bis); +var ze; +while ((ze = zis.getNextEntry()) != null) { +if (!fileName.equals(ze.getName())) continue; +var bytes = JU.Rdr.getLimitedStreamBytes(zis, ze.getSize()); +return ((JU.Rdr.isZipB(bytes) || JU.Rdr.isPngZipB(bytes)) && ++listPtr < list.length ? this.getZipFileContentsAsBytes(JU.Rdr.getBIS(bytes), list, listPtr) : bytes); +} +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +} else { +throw e; +} +} +return ret; +}, "java.io.BufferedInputStream,~A,~N"); +c$.getTarContents = Clazz_defineMethod(c$, "getTarContents", +function(bis, fileName, sb){ +if (JU.ZipTools.b512 == null) JU.ZipTools.b512 = Clazz_newByteArray (512, 0); +var len = fileName.length; +while (bis.read(JU.ZipTools.b512, 0, 512) > 0) { +var bytes = JU.ZipTools.getTarFile(bis, fileName, len, sb, null, false); +if (bytes != null) return bytes; +} +return null; +}, "java.io.BufferedInputStream,~S,JU.SB"); +c$.getTarFile = Clazz_defineMethod(c$, "getTarFile", +function(bis, fileName, len, sb, cache, oneFile){ +var j = 124; +while (JU.ZipTools.b512[j] == 48) j++; + +var isAll = (sb != null && fileName.equals(".")); +var nbytes = 0; +while (j < 135) nbytes = (nbytes << 3) + (JU.ZipTools.b512[j++] - 48); + +if (nbytes == 0) return null; +var fname = String.instantialize(JU.ZipTools.b512, 0, 100).trim(); +var prefix = String.instantialize(JU.ZipTools.b512, 345, 155).trim(); +var name = prefix + fname; +var found = false; +if (sb != null) { +if (name.length == 0) return null; +if (isAll || (oneFile ? name.equalsIgnoreCase(fileName) : name.startsWith(fileName))) { +found = (cache != null); +sb.append(name).appendC('\n'); +}len = -1; +}var nul = (512 - (nbytes % 512)) % 512; +if (!found && (len != name.length || !fileName.equals(name))) { +var nBlocks = (nbytes + nul) >> 9; +for (var i = nBlocks; --i >= 0; ) bis.read(JU.ZipTools.b512, 0, 512); + +return null; +}var bytes = JU.Rdr.getLimitedStreamBytes(bis, nbytes); +if (cache != null) { +cache.put(name, new JU.BArray(bytes)); +bis.read(JU.ZipTools.b512, 0, nul); +}return bytes; +}, "java.io.BufferedInputStream,~S,~N,JU.SB,java.util.Map,~B"); +Clazz_overrideMethod(c$, "getZipDirectoryAsStringAndClose", +function(bis){ +var sb = new JU.SB(); +var s = new Array(0); +try { +s = this.getZipDirectoryOrErrorAndClose(bis, null); +bis.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +for (var i = 0; i < s.length; i++) sb.append(s[i]).appendC('\n'); + +return sb.toString(); +}, "java.io.BufferedInputStream"); +Clazz_overrideMethod(c$, "getZipDirectoryAndClose", +function(bis, manifestID){ +var s = new Array(0); +try { +s = this.getZipDirectoryOrErrorAndClose(bis, manifestID); +bis.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +System.out.println(e.toString()); +} else { +throw e; +} +} +return s; +}, "java.io.BufferedInputStream,~S"); +Clazz_defineMethod(c$, "getZipDirectoryOrErrorAndClose", +function(bis, manifestID){ +bis = JU.Rdr.getPngZipStream(bis, true); +var v = new JU.Lst(); +var zis = JU.ZipTools.newZIS(bis); +var ze; +var manifest = null; +while ((ze = zis.getNextEntry()) != null) { +var fileName = ze.getName(); +if (manifestID != null && fileName.startsWith(manifestID)) manifest = JU.ZipTools.getStreamAsString(zis); + else if (!fileName.startsWith("__MACOS")) v.addLast(fileName); +} +zis.close(); +if (manifestID != null) v.add(0, manifest == null ? "" : manifest + "\n############\n"); +return v.toArray( new Array(v.size())); +}, "java.io.BufferedInputStream,~S"); +c$.getStreamAsString = Clazz_defineMethod(c$, "getStreamAsString", +function(is){ +return JU.Rdr.fixUTF(JU.Rdr.getLimitedStreamBytes(is, -1)); +}, "java.io.InputStream"); +Clazz_overrideMethod(c$, "newGZIPInputStream", +function(is){ +return new java.io.BufferedInputStream( new java.util.zip.GZIPInputStream(is, 512)); +}, "java.io.InputStream"); +Clazz_overrideMethod(c$, "newBZip2InputStream", +function(is){ +return new java.io.BufferedInputStream((javajs.api.Interface.getInterface("org.apache.tools.bzip2.CBZip2InputStreamFactory")).getStream(is)); +}, "java.io.InputStream"); +Clazz_overrideMethod(c$, "getUnGzippedInputStream", +function(bytes){ +try { +return JU.Rdr.getUnzippedInputStream(this, JU.Rdr.getBIS(bytes)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return null; +} else { +throw e; +} +} +}, "~A"); +Clazz_overrideMethod(c$, "addZipEntry", +function(zos, fileName){ +(zos).putNextEntry( new java.util.zip.ZipEntry(fileName)); +}, "~O,~S"); +Clazz_overrideMethod(c$, "closeZipEntry", +function(zos){ +(zos).closeEntry(); +}, "~O"); +Clazz_overrideMethod(c$, "getZipOutputStream", +function(bos){ +{ +return javajs.api.Interface.getInterface( +"java.util.zip.ZipOutputStream").setZOS(bos); +}}, "~O"); +Clazz_overrideMethod(c$, "getCrcValue", +function(bytes){ +var crc = new java.util.zip.CRC32(); +crc.update(bytes, 0, bytes.length); +return crc.getValue(); +}, "~A"); +Clazz_overrideMethod(c$, "readFileAsMap", +function(bis, bdata, name){ +JU.ZipTools.readFileAsMapStatic(bis, bdata, name); +}, "java.io.BufferedInputStream,java.util.Map,~S"); +c$.readFileAsMapStatic = Clazz_defineMethod(c$, "readFileAsMapStatic", +function(bis, bdata, name){ +var pt = (name == null ? -1 : name.indexOf("|")); +name = (pt >= 0 ? name.substring(pt + 1) : null); +try { +var isZip = false; +if (JU.Rdr.isPngZipStream(bis)) { +var isImage = "_IMAGE_".equals(name); +if (name == null || isImage) bdata.put((isImage ? "_DATA_" : "_IMAGE_"), new JU.BArray(JU.ZipTools.getPngImageBytes(bis))); +isZip = !isImage; +} else if (JU.Rdr.isZipS(bis)) { +isZip = true; +} else if (JU.Rdr.isTar(bis)) { +JU.ZipTools.cacheTarContentsStatic(bis, name, bdata); +} else if (name == null) { +bdata.put("_DATA_", new JU.BArray(JU.Rdr.getLimitedStreamBytes(bis, -1))); +} else { +throw new java.io.IOException("ZIP file " + name + " not found"); +}if (isZip) JU.ZipTools.cacheZipContentsStatic(bis, name, bdata, true); +bdata.put("$_BINARY_$", Boolean.TRUE); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +bdata.clear(); +bdata.put("_ERROR_", e.getMessage()); +} else { +throw e; +} +} +}, "java.io.BufferedInputStream,java.util.Map,~S"); +c$.cacheTarContentsStatic = Clazz_defineMethod(c$, "cacheTarContentsStatic", +function(bis, fileName, cache){ +var listing = new JU.SB(); +var n = 0; +if (fileName != null && fileName.endsWith("/.")) fileName = fileName.substring(0, fileName.length - 1); +var isPath = (fileName != null && fileName.endsWith("/")); +var justOne = (fileName != null && !isPath); +try { +if (JU.ZipTools.b512 == null) JU.ZipTools.b512 = Clazz_newByteArray (512, 0); +while (bis.read(JU.ZipTools.b512, 0, 512) > 0) { +var bytes = JU.ZipTools.getTarFile(bis, fileName == null ? "." : fileName, -1, listing, cache, justOne); +if (bytes != null) { +n += bytes.length; +if (justOne) break; +}} +bis.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +try { +bis.close(); +} catch (e1) { +if (Clazz_exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +return null; +} else { +throw e; +} +} +if (n == 0 || fileName == null) return null; +System.out.println("ZipTools cached " + n + " bytes from " + fileName); +return listing.toString(); +}, "java.io.BufferedInputStream,~S,java.util.Map"); +Clazz_overrideMethod(c$, "cacheZipContents", +function(bis, fileName, cache, asByteArray){ +return JU.ZipTools.cacheZipContentsStatic(bis, fileName, cache, asByteArray); +}, "java.io.BufferedInputStream,~S,java.util.Map,~B"); +c$.cacheZipContentsStatic = Clazz_defineMethod(c$, "cacheZipContentsStatic", +function(bis, fileName, cache, asByteArray){ +var zis = JU.ZipTools.newZIS(bis); +var ze; +var listing = new JU.SB(); +var n = 0; +if (fileName != null && fileName.endsWith("/.")) fileName = fileName.substring(0, fileName.length - 1); +var isPath = (fileName != null && fileName.endsWith("/")); +var oneFile = (fileName != null && !isPath && asByteArray); +var pt = (oneFile ? fileName.indexOf("|") : -1); +var zipEntryRoot = (pt >= 0 ? fileName : null); +if (pt >= 0) fileName = fileName.substring(0, pt); +var prefix = (fileName == null || isPath ? "" : fileName + "|"); +try { +while ((ze = zis.getNextEntry()) != null) { +if (ze.isDirectory()) continue; +var name = ze.getName(); +if (fileName != null) { +if (oneFile) { +if (!name.equalsIgnoreCase(fileName)) continue; +} else { +if (isPath && !name.startsWith(fileName)) continue; +listing.append(name).appendC('\n'); +}}var nBytes = ze.getSize(); +var bytes = JU.Rdr.getLimitedStreamBytes(zis, nBytes); +if (zipEntryRoot != null) { +JU.ZipTools.readFileAsMapStatic(JU.Rdr.getBIS(bytes), cache, zipEntryRoot); +return null; +}n += bytes.length; +var o = (asByteArray ? new JU.BArray(bytes) : bytes); +cache.put((oneFile ? "_DATA_" : prefix + name), o); +if (oneFile) break; +} +zis.close(); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +try { +zis.close(); +} catch (e1) { +if (Clazz_exceptionOf(e1,"java.io.IOException")){ +} else { +throw e1; +} +} +return null; +} else { +throw e; +} +} +if (n == 0 || fileName == null) return null; +System.out.println("ZipTools cached " + n + " bytes from " + fileName); +return listing.toString(); +}, "java.io.BufferedInputStream,~S,java.util.Map,~B"); +c$.getPngImageBytes = Clazz_defineMethod(c$, "getPngImageBytes", +function(bis){ +try { +if (JU.Rdr.isPngZipStream(bis)) { +var pt_count = Clazz_newIntArray (2, 0); +JU.Rdr.getPngZipPointAndCount(bis, pt_count); +if (pt_count[1] != 0) return JU.ZipTools.deActivatePngZipB(JU.Rdr.getLimitedStreamBytes(bis, pt_count[0])); +}return JU.Rdr.getLimitedStreamBytes(bis, -1); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.IOException")){ +return null; +} else { +throw e; +} +} +}, "java.io.BufferedInputStream"); +c$.deActivatePngZipB = Clazz_defineMethod(c$, "deActivatePngZipB", +function(bytes){ +if (JU.Rdr.isPngZipB(bytes)) bytes[51] = 32; +return bytes; +}, "~A"); +Clazz_overrideMethod(c$, "isZipStream", +function(br){ +return Clazz_instanceOf(br,"javajs.api.ZInputStream"); +}, "~O"); +c$.b512 = null; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_declareInterface(JU, "Checksum"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Checksum"], "JU.CRC32", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.crc = 0; +this.b1 = null; +Clazz_instantialize(this, arguments);}, JU, "CRC32", null, JU.Checksum); +Clazz_prepareFields (c$, function(){ +this.b1 = Clazz_newByteArray (1, 0); +}); +Clazz_overrideMethod(c$, "update", +function(buf, index, len){ +var c = ~this.crc; +while (--len >= 0) c = JU.CRC32.crc_table[(c ^ buf[index++]) & 0xff] ^ (c >>> 8); + +this.crc = ~c; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.crc = 0; +}); +Clazz_overrideMethod(c$, "resetLong", +function(vv){ +this.crc = (vv & 0xffffffff); +}, "~N"); +Clazz_overrideMethod(c$, "getValue", +function(){ +return this.crc & 0xffffffff; +}); +Clazz_overrideMethod(c$, "updateByteAsInt", +function(b){ +this.b1[0] = b; +this.update(this.b1, 0, 1); +}, "~N"); +c$.crc_table = Clazz_newIntArray(-1, [0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274, 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548, 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990, 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096, 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722, 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980, 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974, 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192, 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290, 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444, 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902, 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960, 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506, 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948, 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054, 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912, -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366, -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716, -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770, -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408, -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446, -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492, -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754, -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376, -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662, -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284, -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362, -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400, -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478, -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188, -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682, -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.io.FilterInputStream"], "JU.InflaterInputStream", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.inflater = null; +this.buf = null; +this.len = 0; +this.closed = false; +this.eof = false; +this.close_in = true; +this.myinflater = false; +this.byte1 = null; +this.b = null; +Clazz_instantialize(this, arguments);}, JU, "InflaterInputStream", java.io.FilterInputStream); +Clazz_prepareFields (c$, function(){ +this.byte1 = Clazz_newByteArray (1, 0); +this.b = Clazz_newByteArray (512, 0); +}); +Clazz_makeConstructor(c$, +function($in, inflater, size, close_in){ +Clazz_superConstructor(this, JU.InflaterInputStream, [$in]); +this.inflater = inflater; +this.buf = Clazz_newByteArray (size, 0); +this.close_in = close_in; +}, "java.io.InputStream,JU.Inflater,~N,~B"); +Clazz_defineMethod(c$, "readByteAsInt", +function(){ +if (this.closed) { +throw new java.io.IOException("Stream closed"); +}return this.read(this.byte1, 0, 1) == -1 ? -1 : this.byte1[0] & 0xff; +}); +Clazz_defineMethod(c$, "read", +function(b, off, len){ +return this.readInf(b, off, len); +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "readInf", +function(b, off, len){ +if (this.closed) { +throw new java.io.IOException("Stream closed"); +}if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +} else if (this.eof) { +return -1; +}var n = 0; +this.inflater.setOutput(b, off, len); +while (!this.eof) { +if (this.inflater.avail_in == 0) this.fill(); +var err = this.inflater.inflate(0); +n += this.inflater.next_out_index - off; +off = this.inflater.next_out_index; +switch (err) { +case -3: +throw new java.io.IOException(this.inflater.msg); +case 1: +case 2: +this.eof = true; +if (err == 2) return -1; +break; +default: +} +if (this.inflater.avail_out == 0) break; +} +return n; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "available", +function(){ +if (this.closed) { +throw new java.io.IOException("Stream closed"); +}return (this.eof ? 0 : 1); +}); +Clazz_overrideMethod(c$, "skip", +function(n){ +if (n < 0) { +throw new IllegalArgumentException("negative skip length"); +}if (this.closed) { +throw new java.io.IOException("Stream closed"); +}var max = Math.min(n, 2147483647); +var total = 0; +while (total < max) { +var len = max - total; +if (len > this.b.length) { +len = this.b.length; +}len = this.read(this.b, 0, len); +if (len == -1) { +this.eof = true; +break; +}total += len; +} +return total; +}, "~N"); +Clazz_overrideMethod(c$, "close", +function(){ +if (!this.closed) { +if (this.myinflater) this.inflater.end(); +if (this.close_in) this.$in.close(); +this.closed = true; +}}); +Clazz_defineMethod(c$, "fill", +function(){ +if (this.closed) { +throw new java.io.IOException("Stream closed"); +}this.len = this.$in.read(this.buf, 0, this.buf.length); +if (this.len == -1) { +if (this.inflater.istate.wrap == 0 && !this.inflater.finished()) { +this.buf[0] = 0; +this.len = 1; +} else if (this.inflater.istate.was != -1) { +throw new java.io.IOException("footer is not found"); +} else { +throw new java.io.EOFException("Unexpected end of ZLIB input stream"); +}}this.inflater.setInput(this.buf, 0, this.len, true); +}); +Clazz_overrideMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz_overrideMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz_defineMethod(c$, "getTotalIn", +function(){ +return this.inflater.getTotalIn(); +}); +Clazz_defineMethod(c$, "getTotalOut", +function(){ +return this.inflater.getTotalOut(); +}); +Clazz_defineMethod(c$, "getAvailIn", +function(){ +if (this.inflater.avail_in <= 0) return null; +var tmp = Clazz_newByteArray (this.inflater.avail_in, 0); +System.arraycopy(this.inflater.next_in, this.inflater.next_in_index, tmp, 0, this.inflater.avail_in); +return tmp; +}); +Clazz_defineMethod(c$, "readHeader", +function(){ +var empty = "".getBytes(); +this.inflater.setInput(empty, 0, 0, false); +this.inflater.setOutput(empty, 0, 0); +var err = this.inflater.inflate(0); +if (!this.inflater.istate.inParsingHeader()) { +return; +}var b1 = Clazz_newByteArray (1, 0); +do { +var i = this.$in.read(b1, 0, 1); +if (i <= 0) throw new java.io.IOException("no input"); +this.inflater.setInput(b1, 0, b1.length, false); +err = this.inflater.inflate(0); +if (err != 0) throw new java.io.IOException(this.inflater.msg); +} while (this.inflater.istate.inParsingHeader()); +}); +Clazz_defineMethod(c$, "getInflater", +function(){ +return this.inflater; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.ZStream", ["JU.Adler32"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.next_in = null; +this.next_in_index = 0; +this.avail_in = 0; +this.total_in = 0; +this.next_out = null; +this.next_out_index = 0; +this.avail_out = 0; +this.total_out = 0; +this.msg = null; +this.dstate = null; +this.istate = null; +this.data_type = 0; +this.checksum = null; +Clazz_instantialize(this, arguments);}, JU, "ZStream", null); +Clazz_defineMethod(c$, "setAdler32", +function(){ +this.checksum = new JU.Adler32(); +}); +Clazz_defineMethod(c$, "inflate", +function(f){ +if (this.istate == null) return -2; +return this.istate.inflate(f); +}, "~N"); +Clazz_defineMethod(c$, "deflate", +function(flush){ +if (this.dstate == null) { +return -2; +}return this.dstate.deflate(flush); +}, "~N"); +Clazz_defineMethod(c$, "flush_pending", +function(){ +var len = this.dstate.pending; +if (len > this.avail_out) len = this.avail_out; +if (len == 0) return; +System.arraycopy(this.dstate.pending_buf, this.dstate.pending_out, this.next_out, this.next_out_index, len); +this.next_out_index += len; +this.dstate.pending_out += len; +this.total_out += len; +this.avail_out -= len; +this.dstate.pending -= len; +if (this.dstate.pending == 0) { +this.dstate.pending_out = 0; +}}); +Clazz_defineMethod(c$, "read_buf", +function(buf, start, size){ +var len = this.avail_in; +if (len > size) len = size; +if (len == 0) return 0; +this.avail_in -= len; +if (this.dstate.wrap != 0) { +this.checksum.update(this.next_in, this.next_in_index, len); +}System.arraycopy(this.next_in, this.next_in_index, buf, start, len); +this.next_in_index += len; +this.total_in += len; +return len; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "getAdler", +function(){ +return this.checksum.getValue(); +}); +Clazz_defineMethod(c$, "free", +function(){ +this.next_in = null; +this.next_out = null; +this.msg = null; +}); +Clazz_defineMethod(c$, "setOutput", +function(buf, off, len){ +this.next_out = buf; +this.next_out_index = off; +this.avail_out = len; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "setInput", +function(buf, off, len, append){ +if (len <= 0 && append && this.next_in != null) return; +if (this.avail_in > 0 && append) { +var tmp = Clazz_newByteArray (this.avail_in + len, 0); +System.arraycopy(this.next_in, this.next_in_index, tmp, 0, this.avail_in); +System.arraycopy(buf, off, tmp, this.avail_in, len); +this.next_in = tmp; +this.next_in_index = 0; +this.avail_in += len; +} else { +this.next_in = buf; +this.next_in_index = off; +this.avail_in = len; +}}, "~A,~N,~N,~B"); +Clazz_defineMethod(c$, "getAvailIn", +function(){ +return this.avail_in; +}); +Clazz_defineMethod(c$, "getTotalOut", +function(){ +return this.total_out; +}); +Clazz_defineMethod(c$, "getTotalIn", +function(){ +return this.total_in; +}); +c$.getBytes = Clazz_defineMethod(c$, "getBytes", +function(s){ +{ +var x = []; +for (var i = 0; i < s.length;i++) { +var pt = s.charCodeAt(i); +if (pt <= 0x7F) { +x.push(pt); +} else if (pt <= 0x7FF) { +x.push(0xC0|((pt>>6)&0x1F)); +x.push(0x80|(pt&0x3F)); +} else if (pt <= 0xFFFF) { +x.push(0xE0|((pt>>12)&0xF)); +x.push(0x80|((pt>>6)&0x3F)); +x.push(0x80|(pt&0x3F)); +} else { +x.push(0x3F); // '?' +} +} +return (Int32Array != Array ? new Int32Array(x) : x); +}}, "~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.ZStream"], "JU.Inflater", ["JU.Inflate"], function(){ +var c$ = Clazz_declareType(JU, "Inflater", JU.ZStream); +Clazz_defineMethod(c$, "init", +function(w, nowrap){ +this.setAdler32(); +if (w == 0) w = 15; +this.istate = new JU.Inflate(this); +this.istate.inflateInit(nowrap ? -w : w); +return this; +}, "~N,~B"); +Clazz_overrideMethod(c$, "inflate", +function(f){ +if (this.istate == null) return -2; +var ret = this.istate.inflate(f); +return ret; +}, "~N"); +Clazz_overrideMethod(c$, "end", +function(){ +if (this.istate == null) return -2; +var ret = this.istate.inflateEnd(); +return ret; +}); +Clazz_defineMethod(c$, "sync", +function(){ +if (this.istate == null) return -2; +return this.istate.inflateSync(); +}); +Clazz_defineMethod(c$, "syncPoint", +function(){ +if (this.istate == null) return -2; +return this.istate.inflateSyncPoint(); +}); +Clazz_defineMethod(c$, "setDictionary", +function(dictionary, dictLength){ +if (this.istate == null) return -2; +return this.istate.inflateSetDictionary(dictionary, dictLength); +}, "~A,~N"); +Clazz_overrideMethod(c$, "finished", +function(){ +return this.istate.mode == 12; +}); +Clazz_defineMethod(c$, "reset", +function(){ +this.avail_in = 0; +if (this.istate != null) this.istate.reset(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Checksum"], "JU.Adler32", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.s1 = 1; +this.s2 = 0; +this.b1 = null; +Clazz_instantialize(this, arguments);}, JU, "Adler32", null, JU.Checksum); +Clazz_prepareFields (c$, function(){ +this.b1 = Clazz_newByteArray (1, 0); +}); +Clazz_overrideMethod(c$, "resetLong", +function(init){ +this.s1 = init & 0xffff; +this.s2 = (init >> 16) & 0xffff; +}, "~N"); +Clazz_overrideMethod(c$, "reset", +function(){ +this.s1 = 1; +this.s2 = 0; +}); +Clazz_overrideMethod(c$, "getValue", +function(){ +return ((this.s2 << 16) | this.s1); +}); +Clazz_overrideMethod(c$, "update", +function(buf, index, len){ +if (len == 1) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +this.s1 %= 65521; +this.s2 %= 65521; +return; +}var len1 = Clazz_doubleToInt(len / 5552); +var len2 = len % 5552; +while (len1-- > 0) { +var k = 5552; +len -= k; +while (k-- > 0) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +} +this.s1 %= 65521; +this.s2 %= 65521; +} +var k = len2; +len -= k; +while (k-- > 0) { +this.s1 += buf[index++] & 0xff; +this.s2 += this.s1; +} +this.s1 %= 65521; +this.s2 %= 65521; +}, "~A,~N,~N"); +Clazz_overrideMethod(c$, "updateByteAsInt", +function(b){ +this.b1[0] = b; +this.update(this.b1, 0, 1); +}, "~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.dyn_tree = null; +this.max_code = 0; +this.stat_desc = null; +Clazz_instantialize(this, arguments);}, JU, "Tree", null); +c$.d_code = Clazz_defineMethod(c$, "d_code", +function(dist){ +return ((dist) < 256 ? JU.Tree._dist_code[dist] : JU.Tree._dist_code[256 + ((dist) >>> 7)]); +}, "~N"); +Clazz_defineMethod(c$, "gen_bitlen", +function(s){ +var tree = this.dyn_tree; +var stree = this.stat_desc.static_tree; +var extra = this.stat_desc.extra_bits; +var base = this.stat_desc.extra_base; +var max_length = this.stat_desc.max_length; +var h; +var n; +var m; +var bits; +var xbits; +var f; +var overflow = 0; +for (bits = 0; bits <= 15; bits++) s.bl_count[bits] = 0; + +tree[s.heap[s.heap_max] * 2 + 1] = 0; +for (h = s.heap_max + 1; h < 573; h++) { +n = s.heap[h]; +bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; +if (bits > max_length) { +bits = max_length; +overflow++; +}tree[n * 2 + 1] = bits; +if (n > this.max_code) continue; +s.bl_count[bits]++; +xbits = 0; +if (n >= base) xbits = extra[n - base]; +f = tree[n * 2]; +s.opt_len += f * (bits + xbits); +if (stree != null) s.static_len += f * (stree[n * 2 + 1] + xbits); +} +if (overflow == 0) return; +do { +bits = max_length - 1; +while (s.bl_count[bits] == 0) bits--; + +s.bl_count[bits]--; +s.bl_count[bits + 1] += 2; +s.bl_count[max_length]--; +overflow -= 2; +} while (overflow > 0); +for (bits = max_length; bits != 0; bits--) { +n = s.bl_count[bits]; +while (n != 0) { +m = s.heap[--h]; +if (m > this.max_code) continue; +if (tree[m * 2 + 1] != bits) { +s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; +tree[m * 2 + 1] = bits; +}n--; +} +} +}, "JU.Deflate"); +Clazz_defineMethod(c$, "build_tree", +function(s){ +var tree = this.dyn_tree; +var stree = this.stat_desc.static_tree; +var elems = this.stat_desc.elems; +var n; +var m; +var max_code = -1; +var node; +s.heap_len = 0; +s.heap_max = 573; +for (n = 0; n < elems; n++) { +if (tree[n * 2] != 0) { +s.heap[++s.heap_len] = max_code = n; +s.depth[n] = 0; +} else { +tree[n * 2 + 1] = 0; +}} +while (s.heap_len < 2) { +node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); +tree[node * 2] = 1; +s.depth[node] = 0; +s.opt_len--; +if (stree != null) s.static_len -= stree[node * 2 + 1]; +} +this.max_code = max_code; +for (n = Clazz_doubleToInt(s.heap_len / 2); n >= 1; n--) s.pqdownheap(tree, n); + +node = elems; +do { +n = s.heap[1]; +s.heap[1] = s.heap[s.heap_len--]; +s.pqdownheap(tree, 1); +m = s.heap[1]; +s.heap[--s.heap_max] = n; +s.heap[--s.heap_max] = m; +tree[node * 2] = (tree[n * 2] + tree[m * 2]); +s.depth[node] = (Math.max(s.depth[n], s.depth[m]) + 1); +tree[n * 2 + 1] = tree[m * 2 + 1] = node; +s.heap[1] = node++; +s.pqdownheap(tree, 1); +} while (s.heap_len >= 2); +s.heap[--s.heap_max] = s.heap[1]; +this.gen_bitlen(s); +JU.Tree.gen_codes(tree, max_code, s.bl_count); +}, "JU.Deflate"); +c$.gen_codes = Clazz_defineMethod(c$, "gen_codes", +function(tree, max_code, bl_count){ +var code = 0; +var bits; +var n; +JU.Tree.next_code[0] = 0; +for (bits = 1; bits <= 15; bits++) { +JU.Tree.next_code[bits] = code = ((code + bl_count[bits - 1]) << 1); +} +for (n = 0; n <= max_code; n++) { +var len = tree[n * 2 + 1]; +if (len == 0) continue; +tree[n * 2] = (JU.Tree.bi_reverse(JU.Tree.next_code[len]++, len)); +} +}, "~A,~N,~A"); +c$.bi_reverse = Clazz_defineMethod(c$, "bi_reverse", +function(code, len){ +var res = 0; +do { +res |= code & 1; +code >>>= 1; +res <<= 1; +} while (--len > 0); +return res >>> 1; +}, "~N,~N"); +c$.extra_lbits = Clazz_newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]); +c$.extra_dbits = Clazz_newIntArray(-1, [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]); +c$.extra_blbits = Clazz_newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]); +c$.bl_order = Clazz_newByteArray(-1, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +c$._dist_code = Clazz_newByteArray(-1, [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29]); +c$._length_code = Clazz_newByteArray(-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28]); +c$.base_length = Clazz_newIntArray(-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0]); +c$.base_dist = Clazz_newIntArray(-1, [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576]); +c$.next_code = Clazz_newShortArray (16, 0); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.Tree"], "JU.StaticTree", null, function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.static_tree = null; +this.extra_bits = null; +this.extra_base = 0; +this.elems = 0; +this.max_length = 0; +Clazz_instantialize(this, arguments);}, JU, "StaticTree", null); +Clazz_makeConstructor(c$, +function(static_tree, extra_bits, extra_base, elems, max_length){ +this.static_tree = static_tree; +this.extra_bits = extra_bits; +this.extra_base = extra_base; +this.elems = elems; +this.max_length = max_length; +}, "~A,~A,~N,~N,~N"); +c$.static_ltree = Clazz_newShortArray(-1, [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8]); +c$.static_dtree = Clazz_newShortArray(-1, [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5]); +c$.static_l_desc = new JU.StaticTree(JU.StaticTree.static_ltree, JU.Tree.extra_lbits, 257, 286, 15); +c$.static_d_desc = new JU.StaticTree(JU.StaticTree.static_dtree, JU.Tree.extra_dbits, 0, 30, 15); +c$.static_bl_desc = new JU.StaticTree(null, JU.Tree.extra_blbits, 0, 19, 7); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(null, "JU.GZIPHeader", ["JU.ZStream"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.text = false; +this.fhcrc = false; +this.time = 0; +this.xflags = 0; +this.os = 255; +this.extra = null; +this.name = null; +this.comment = null; +this.hcrc = 0; +this.crc = 0; +this.done = false; +this.mtime = 0; +Clazz_instantialize(this, arguments);}, JU, "GZIPHeader", null, Cloneable); +Clazz_defineMethod(c$, "setModifiedTime", +function(mtime){ +this.mtime = mtime; +}, "~N"); +Clazz_defineMethod(c$, "getModifiedTime", +function(){ +return this.mtime; +}); +Clazz_defineMethod(c$, "setOS", +function(os){ +if ((0 <= os && os <= 13) || os == 255) this.os = os; + else throw new IllegalArgumentException("os: " + os); +}, "~N"); +Clazz_defineMethod(c$, "getOS", +function(){ +return this.os; +}); +Clazz_defineMethod(c$, "setName", +function(name){ +this.name = JU.ZStream.getBytes(name); +}, "~S"); +Clazz_defineMethod(c$, "getName", +function(){ +if (this.name == null) return ""; +try { +return String.instantialize(this.name, "ISO-8859-1"); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +throw new InternalError(e.toString()); +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "setComment", +function(comment){ +this.comment = JU.ZStream.getBytes(comment); +}, "~S"); +Clazz_defineMethod(c$, "getComment", +function(){ +if (this.comment == null) return ""; +try { +return String.instantialize(this.comment, "ISO-8859-1"); +} catch (e) { +if (Clazz_exceptionOf(e,"java.io.UnsupportedEncodingException")){ +throw new InternalError(e.toString()); +} else { +throw e; +} +} +}); +Clazz_defineMethod(c$, "setCRC", +function(crc){ +this.crc = crc; +}, "~N"); +Clazz_defineMethod(c$, "getCRC", +function(){ +return this.crc; +}); +Clazz_defineMethod(c$, "put", +function(d){ +var flag = 0; +if (this.text) { +flag |= 1; +}if (this.fhcrc) { +flag |= 2; +}if (this.extra != null) { +flag |= 4; +}if (this.name != null) { +flag |= 8; +}if (this.comment != null) { +flag |= 16; +}var xfl = 0; +if (d.level == 1) { +xfl |= 4; +} else if (d.level == 9) { +xfl |= 2; +}d.put_short(0x8b1f); +d.put_byteB(8); +d.put_byteB(flag); +d.put_byteB(this.mtime); +d.put_byteB((this.mtime >> 8)); +d.put_byteB((this.mtime >> 16)); +d.put_byteB((this.mtime >> 24)); +d.put_byteB(xfl); +d.put_byteB(this.os); +if (this.extra != null) { +d.put_byteB(this.extra.length); +d.put_byteB((this.extra.length >> 8)); +d.put_byte(this.extra, 0, this.extra.length); +}if (this.name != null) { +d.put_byte(this.name, 0, this.name.length); +d.put_byteB(0); +}if (this.comment != null) { +d.put_byte(this.comment, 0, this.comment.length); +d.put_byteB(0); +}}, "JU.Deflate"); +Clazz_defineMethod(c$, "clone", +function(){ +var gheader = Clazz_superCall(this, JU.GZIPHeader, "clone", []); +var tmp; +if (gheader.extra != null) { +tmp = Clazz_newByteArray (gheader.extra.length, 0); +System.arraycopy(gheader.extra, 0, tmp, 0, tmp.length); +gheader.extra = tmp; +}if (gheader.name != null) { +tmp = Clazz_newByteArray (gheader.name.length, 0); +System.arraycopy(gheader.name, 0, tmp, 0, tmp.length); +gheader.name = tmp; +}if (gheader.comment != null) { +tmp = Clazz_newByteArray (gheader.comment.length, 0); +System.arraycopy(gheader.comment, 0, tmp, 0, tmp.length); +gheader.comment = tmp; +}return gheader; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["java.lang.Exception"], "JU.Inflate", ["JU.Adler32", "$.CRC32", "$.GZIPHeader", "$.InfBlocks", "java.io.ByteArrayOutputStream"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mode = 0; +this.method = 0; +this.was = -1; +this.need = 0; +this.marker = 0; +this.wrap = 0; +this.wbits = 0; +this.blocks = null; +this.z = null; +this.flags = 0; +this.need_bytes = -1; +this.crcbuf = null; +this.gheader = null; +if (!Clazz_isClassDefined("JU.Inflate.Return")) { +JU.Inflate.$Inflate$Return$ (); +} +this.tmp_string = null; +Clazz_instantialize(this, arguments);}, JU, "Inflate", null); +Clazz_prepareFields (c$, function(){ +this.crcbuf = Clazz_newByteArray (4, 0); +}); +Clazz_makeConstructor(c$, +function(z){ +this.z = z; +}, "JU.ZStream"); +Clazz_defineMethod(c$, "reset", +function(){ +this.inflateReset(); +}); +Clazz_defineMethod(c$, "inflateReset", +function(){ +if (this.z == null) return -2; +this.z.total_in = this.z.total_out = 0; +this.z.msg = null; +this.mode = 14; +this.need_bytes = -1; +this.blocks.reset(); +return 0; +}); +Clazz_defineMethod(c$, "inflateEnd", +function(){ +if (this.blocks != null) { +this.blocks.free(); +}return 0; +}); +Clazz_defineMethod(c$, "inflateInit", +function(w){ +this.z.msg = null; +this.blocks = null; +this.wrap = 0; +if (w < 0) { +w = -w; +} else { +this.wrap = (w >> 4) + 1; +if (w < 48) w &= 15; +}if (w < 8 || w > 15) { +this.inflateEnd(); +return -2; +}if (this.blocks != null && this.wbits != w) { +this.blocks.free(); +this.blocks = null; +}this.wbits = w; +this.blocks = new JU.InfBlocks(this.z, 1 << w); +this.inflateReset(); +return 0; +}, "~N"); +Clazz_defineMethod(c$, "inflate", +function(f){ +var r; +var b; +if (this.z == null || this.z.next_in == null) { +if (f == 4 && this.mode == 14) return 0; +return -2; +}f = f == 4 ? -5 : 0; +r = -5; +while (true) { +switch (this.mode) { +case 14: +if (this.wrap == 0) { +this.mode = 7; +break; +}try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if ((this.wrap & 2) != 0 && this.need == 0x8b1f) { +this.z.checksum = new JU.CRC32(); +this.checksum(2, this.need); +if (this.gheader == null) this.gheader = new JU.GZIPHeader(); +this.mode = 23; +break; +}this.flags = 0; +this.method = (this.need) & 0xff; +b = ((this.need >> 8)) & 0xff; +if ((this.wrap & 1) == 0 || (((this.method << 8) + b) % 31) != 0) { +this.mode = 13; +this.z.msg = "incorrect header check"; +break; +}if ((this.method & 0xf) != 8) { +this.mode = 13; +this.z.msg = "unknown compression method"; +break; +}if ((this.method >> 4) + 8 > this.wbits) { +this.mode = 13; +this.z.msg = "invalid window size"; +break; +}this.z.checksum = new JU.Adler32(); +if ((b & 32) == 0) { +this.mode = 7; +break; +}this.mode = 2; +case 2: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need = ((this.z.next_in[this.z.next_in_index++] & 0xff) << 24) & 0xff000000; +this.mode = 3; +case 3: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 16) & 0xff0000; +this.mode = 4; +case 4: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 8) & 0xff00; +this.mode = 5; +case 5: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += (this.z.next_in[this.z.next_in_index++] & 0xff); +this.z.checksum.resetLong(this.need); +this.mode = 6; +return 2; +case 6: +this.mode = 13; +this.z.msg = "need dictionary"; +this.marker = 0; +return -2; +case 7: +r = this.blocks.proc(r); +if (r == -3) { +this.mode = 13; +this.marker = 0; +break; +}if (r == 0) { +r = f; +}if (r != 1) { +return r; +}r = f; +this.was = this.z.checksum.getValue(); +this.blocks.reset(); +if (this.wrap == 0) { +this.mode = 12; +break; +}this.mode = 8; +case 8: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need = ((this.z.next_in[this.z.next_in_index++] & 0xff) << 24) & 0xff000000; +this.mode = 9; +case 9: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 16) & 0xff0000; +this.mode = 10; +case 10: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 8) & 0xff00; +this.mode = 11; +case 11: +if (this.z.avail_in == 0) return r; +r = f; +this.z.avail_in--; +this.z.total_in++; +this.need += (this.z.next_in[this.z.next_in_index++] & 0xff); +if (this.flags != 0) { +this.need = ((this.need & 0xff000000) >> 24 | (this.need & 0x00ff0000) >> 8 | (this.need & 0x0000ff00) << 8 | (this.need & 0x0000ffff) << 24) & 0xffffffff; +}if (((this.was)) != ((this.need))) { +this.z.msg = "incorrect data check"; +} else if (this.flags != 0 && this.gheader != null) { +this.gheader.crc = this.need; +}this.mode = 15; +case 15: +if (this.wrap != 0 && this.flags != 0) { +try { +r = this.readBytes(4, r, f); +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.z.msg != null && this.z.msg.equals("incorrect data check")) { +this.mode = 13; +this.marker = 5; +break; +}if (this.need != (this.z.total_out & 0xffffffff)) { +this.z.msg = "incorrect length check"; +this.mode = 13; +break; +}this.z.msg = null; +} else { +if (this.z.msg != null && this.z.msg.equals("incorrect data check")) { +this.mode = 13; +this.marker = 5; +break; +}}this.mode = 12; +case 12: +return 1; +case 13: +return -3; +case 23: +try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +this.flags = (this.need) & 0xffff; +if ((this.flags & 0xff) != 8) { +this.z.msg = "unknown compression method"; +this.mode = 13; +break; +}if ((this.flags & 0xe000) != 0) { +this.z.msg = "unknown header flags set"; +this.mode = 13; +break; +}if ((this.flags & 0x0200) != 0) { +this.checksum(2, this.need); +}this.mode = 16; +case 16: +try { +r = this.readBytes(4, r, f); +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.gheader != null) this.gheader.time = this.need; +if ((this.flags & 0x0200) != 0) { +this.checksum(4, this.need); +}this.mode = 17; +case 17: +try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.gheader != null) { +this.gheader.xflags = (this.need) & 0xff; +this.gheader.os = ((this.need) >> 8) & 0xff; +}if ((this.flags & 0x0200) != 0) { +this.checksum(2, this.need); +}this.mode = 18; +case 18: +if ((this.flags & 0x0400) != 0) { +try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.gheader != null) { +this.gheader.extra = Clazz_newByteArray ((this.need) & 0xffff, 0); +}if ((this.flags & 0x0200) != 0) { +this.checksum(2, this.need); +}} else if (this.gheader != null) { +this.gheader.extra = null; +}this.mode = 19; +case 19: +if ((this.flags & 0x0400) != 0) { +try { +r = this.readBytes(r, f); +if (this.gheader != null) { +var foo = this.tmp_string.toByteArray(); +this.tmp_string = null; +if (foo.length == this.gheader.extra.length) { +System.arraycopy(foo, 0, this.gheader.extra, 0, foo.length); +} else { +this.z.msg = "bad extra field length"; +this.mode = 13; +break; +}}} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +} else if (this.gheader != null) { +this.gheader.extra = null; +}this.mode = 20; +case 20: +if ((this.flags & 0x0800) != 0) { +try { +r = this.readString(r, f); +if (this.gheader != null) { +this.gheader.name = this.tmp_string.toByteArray(); +}this.tmp_string = null; +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +} else if (this.gheader != null) { +this.gheader.name = null; +}this.mode = 21; +case 21: +if ((this.flags & 0x1000) != 0) { +try { +r = this.readString(r, f); +if (this.gheader != null) { +this.gheader.comment = this.tmp_string.toByteArray(); +}this.tmp_string = null; +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +} else if (this.gheader != null) { +this.gheader.comment = null; +}this.mode = 22; +case 22: +if ((this.flags & 0x0200) != 0) { +try { +r = this.readBytes(2, r, f); +} catch (e) { +if (Clazz_exceptionOf(e,"JU.Inflate.Return")){ +return e.r; +} else { +throw e; +} +} +if (this.gheader != null) { +this.gheader.hcrc = (this.need & 0xffff); +}if (this.need != (this.z.checksum.getValue() & 0xffff)) { +this.mode = 13; +this.z.msg = "header crc mismatch"; +this.marker = 5; +break; +}}this.z.checksum = new JU.CRC32(); +this.mode = 7; +break; +default: +return -2; +} +} +}, "~N"); +Clazz_defineMethod(c$, "inflateSetDictionary", +function(dictionary, dictLength){ +if (this.z == null || (this.mode != 6 && this.wrap != 0)) { +return -2; +}var index = 0; +var length = dictLength; +if (this.mode == 6) { +var adler_need = this.z.checksum.getValue(); +this.z.checksum.reset(); +this.z.checksum.update(dictionary, 0, dictLength); +if (this.z.checksum.getValue() != adler_need) { +return -3; +}}this.z.checksum.reset(); +if (length >= (1 << this.wbits)) { +length = (1 << this.wbits) - 1; +index = dictLength - length; +}this.blocks.set_dictionary(dictionary, index, length); +this.mode = 7; +return 0; +}, "~A,~N"); +Clazz_defineMethod(c$, "inflateSync", +function(){ +var n; +var p; +var m; +var r; +var w; +if (this.z == null) return -2; +if (this.mode != 13) { +this.mode = 13; +this.marker = 0; +}if ((n = this.z.avail_in) == 0) return -5; +p = this.z.next_in_index; +m = this.marker; +while (n != 0 && m < 4) { +if (this.z.next_in[p] == JU.Inflate.mark[m]) { +m++; +} else if (this.z.next_in[p] != 0) { +m = 0; +} else { +m = 4 - m; +}p++; +n--; +} +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.z.avail_in = n; +this.marker = m; +if (m != 4) { +return -3; +}r = this.z.total_in; +w = this.z.total_out; +this.inflateReset(); +this.z.total_in = r; +this.z.total_out = w; +this.mode = 7; +return 0; +}); +Clazz_defineMethod(c$, "inflateSyncPoint", +function(){ +if (this.z == null || this.blocks == null) return -2; +return this.blocks.sync_point(); +}); +Clazz_defineMethod(c$, "readBytes", +function(n, r, f){ +if (this.need_bytes == -1) { +this.need_bytes = n; +this.need = 0; +}while (this.need_bytes > 0) { +if (this.z.avail_in == 0) { +throw Clazz_innerTypeInstance(JU.Inflate.Return, this, null, r); +}r = f; +this.z.avail_in--; +this.z.total_in++; +this.need = this.need | ((this.z.next_in[this.z.next_in_index++] & 0xff) << ((n - this.need_bytes) * 8)); +this.need_bytes--; +} +if (n == 2) { +this.need &= 0xffff; +} else if (n == 4) { +this.need &= 0xffffffff; +}this.need_bytes = -1; +return r; +}, "~N,~N,~N"); +Clazz_defineMethod(c$, "readString", +function(r, f){ +if (this.tmp_string == null) { +this.tmp_string = new java.io.ByteArrayOutputStream(); +}var b = 0; +do { +if (this.z.avail_in == 0) { +throw Clazz_innerTypeInstance(JU.Inflate.Return, this, null, r); +}r = f; +this.z.avail_in--; +this.z.total_in++; +b = this.z.next_in[this.z.next_in_index]; +if (b != 0) this.tmp_string.write(this.z.next_in, this.z.next_in_index, 1); +this.z.checksum.update(this.z.next_in, this.z.next_in_index, 1); +this.z.next_in_index++; +} while (b != 0); +return r; +}, "~N,~N"); +Clazz_defineMethod(c$, "readBytes", +function(r, f){ +if (this.tmp_string == null) { +this.tmp_string = new java.io.ByteArrayOutputStream(); +}while (this.need > 0) { +if (this.z.avail_in == 0) { +throw Clazz_innerTypeInstance(JU.Inflate.Return, this, null, r); +}r = f; +this.z.avail_in--; +this.z.total_in++; +this.tmp_string.write(this.z.next_in, this.z.next_in_index, 1); +this.z.checksum.update(this.z.next_in, this.z.next_in_index, 1); +this.z.next_in_index++; +this.need--; +} +return r; +}, "~N,~N"); +Clazz_defineMethod(c$, "checksum", +function(n, v){ +for (var i = 0; i < n; i++) { +this.crcbuf[i] = (v & 0xff); +v >>= 8; +} +this.z.checksum.update(this.crcbuf, 0, n); +}, "~N,~N"); +Clazz_defineMethod(c$, "getGZIPHeader", +function(){ +return this.gheader; +}); +Clazz_defineMethod(c$, "inParsingHeader", +function(){ +switch (this.mode) { +case 14: +case 2: +case 3: +case 4: +case 5: +case 23: +case 16: +case 17: +case 18: +case 19: +case 20: +case 21: +case 22: +return true; +default: +return false; +} +}); +c$.$Inflate$Return$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz_decorateAsClass(function(){ +Clazz_prepareCallback(this, arguments); +this.r = 0; +Clazz_instantialize(this, arguments);}, JU.Inflate, "Return", Exception); +Clazz_makeConstructor(c$, +function(r){ +Clazz_superConstructor (this, JU.Inflate.Return, []); +this.r = r; +}, "~N"); +/*eoif4*/})(); +}; +c$.mark = Clazz_newByteArray(-1, [0, 0, 0xff, 0xff]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.hn = null; +this.v = null; +this.c = null; +this.r = null; +this.u = null; +this.x = null; +Clazz_instantialize(this, arguments);}, JU, "InfTree", null); +Clazz_defineMethod(c$, "huft_build", +function(b, bindex, n, s, d, e, t, m, hp, hn, v){ +var a; +var f; +var g; +var h; +var i; +var j; +var k; +var l; +var mask; +var p; +var q; +var w; +var xp; +var y; +var z; +p = 0; +i = n; +do { +this.c[b[bindex + p]]++; +p++; +i--; +} while (i != 0); +if (this.c[0] == n) { +t[0] = -1; +m[0] = 0; +return 0; +}l = m[0]; +for (j = 1; j <= 15; j++) if (this.c[j] != 0) break; + +k = j; +if (l < j) { +l = j; +}for (i = 15; i != 0; i--) { +if (this.c[i] != 0) break; +} +g = i; +if (l > i) { +l = i; +}m[0] = l; +for (y = 1 << j; j < i; j++, y <<= 1) { +if ((y -= this.c[j]) < 0) { +return -3; +}} +if ((y -= this.c[i]) < 0) { +return -3; +}this.c[i] += y; +this.x[1] = j = 0; +p = 1; +xp = 2; +while (--i != 0) { +this.x[xp] = (j += this.c[p]); +xp++; +p++; +} +i = 0; +p = 0; +do { +if ((j = b[bindex + p]) != 0) { +v[this.x[j]++] = i; +}p++; +} while (++i < n); +n = this.x[g]; +this.x[0] = i = 0; +p = 0; +h = -1; +w = -l; +this.u[0] = 0; +q = 0; +z = 0; +for (; k <= g; k++) { +a = this.c[k]; +while (a-- != 0) { +while (k > w + l) { +h++; +w += l; +z = g - w; +z = (z > l) ? l : z; +if ((f = 1 << (j = k - w)) > a + 1) { +f -= a + 1; +xp = k; +if (j < z) { +while (++j < z) { +if ((f <<= 1) <= this.c[++xp]) break; +f -= this.c[xp]; +} +}}z = 1 << j; +if (hn[0] + z > 1440) { +return -3; +}this.u[h] = q = hn[0]; +hn[0] += z; +if (h != 0) { +this.x[h] = i; +this.r[0] = j; +this.r[1] = l; +j = i >>> (w - l); +this.r[2] = (q - this.u[h - 1] - j); +System.arraycopy(this.r, 0, hp, (this.u[h - 1] + j) * 3, 3); +} else { +t[0] = q; +}} +this.r[1] = (k - w); +if (p >= n) { +this.r[0] = 192; +} else if (v[p] < s) { +this.r[0] = (v[p] < 256 ? 0 : 96); +this.r[2] = v[p++]; +} else { +this.r[0] = (e[v[p] - s] + 16 + 64); +this.r[2] = d[v[p++] - s]; +}f = 1 << (k - w); +for (j = i >>> w; j < z; j += f) { +System.arraycopy(this.r, 0, hp, (q + j) * 3, 3); +} +for (j = 1 << (k - 1); (i & j) != 0; j >>>= 1) { +i ^= j; +} +i ^= j; +mask = (1 << w) - 1; +while ((i & mask) != this.x[h]) { +h--; +w -= l; +mask = (1 << w) - 1; +} +} +} +return y != 0 && g != 1 ? -5 : 0; +}, "~A,~N,~N,~N,~A,~A,~A,~A,~A,~A,~A"); +Clazz_defineMethod(c$, "inflate_trees_bits", +function(c, bb, tb, hp, z){ +var result; +this.initWorkArea(19); +this.hn[0] = 0; +result = this.huft_build(c, 0, 19, 19, null, null, tb, bb, hp, this.hn, this.v); +if (result == -3) { +z.msg = "oversubscribed dynamic bit lengths tree"; +} else if (result == -5 || bb[0] == 0) { +z.msg = "incomplete dynamic bit lengths tree"; +result = -3; +}return result; +}, "~A,~A,~A,~A,JU.ZStream"); +Clazz_defineMethod(c$, "inflate_trees_dynamic", +function(nl, nd, c, bl, bd, tl, td, hp, z){ +var result; +this.initWorkArea(288); +this.hn[0] = 0; +result = this.huft_build(c, 0, nl, 257, JU.InfTree.cplens, JU.InfTree.cplext, tl, bl, hp, this.hn, this.v); +if (result != 0 || bl[0] == 0) { +if (result == -3) { +z.msg = "oversubscribed literal/length tree"; +} else if (result != -4) { +z.msg = "incomplete literal/length tree"; +result = -3; +}return result; +}this.initWorkArea(288); +result = this.huft_build(c, nl, nd, 0, JU.InfTree.cpdist, JU.InfTree.cpdext, td, bd, hp, this.hn, this.v); +if (result != 0 || (bd[0] == 0 && nl > 257)) { +if (result == -3) { +z.msg = "oversubscribed distance tree"; +} else if (result == -5) { +z.msg = "incomplete distance tree"; +result = -3; +} else if (result != -4) { +z.msg = "empty distance tree with lengths"; +result = -3; +}return result; +}return 0; +}, "~N,~N,~A,~A,~A,~A,~A,~A,JU.ZStream"); +c$.inflate_trees_fixed = Clazz_defineMethod(c$, "inflate_trees_fixed", +function(bl, bd, tl, td, z){ +bl[0] = 9; +bd[0] = 5; +tl[0] = JU.InfTree.fixed_tl; +td[0] = JU.InfTree.fixed_td; +return 0; +}, "~A,~A,~A,~A,JU.ZStream"); +Clazz_defineMethod(c$, "initWorkArea", +function(vsize){ +if (this.hn == null) { +this.hn = Clazz_newIntArray (1, 0); +this.v = Clazz_newIntArray (vsize, 0); +this.c = Clazz_newIntArray (16, 0); +this.r = Clazz_newIntArray (3, 0); +this.u = Clazz_newIntArray (15, 0); +this.x = Clazz_newIntArray (16, 0); +}if (this.v.length < vsize) { +this.v = Clazz_newIntArray (vsize, 0); +}for (var i = 0; i < vsize; i++) { +this.v[i] = 0; +} +for (var i = 0; i < 16; i++) { +this.c[i] = 0; +} +for (var i = 0; i < 3; i++) { +this.r[i] = 0; +} +System.arraycopy(this.c, 0, this.u, 0, 15); +System.arraycopy(this.c, 0, this.x, 0, 16); +}, "~N"); +c$.fixed_tl = Clazz_newIntArray(-1, [96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 160, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 218, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 217, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 163, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255]); +c$.fixed_td = Clazz_newIntArray(-1, [80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025, 85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193, 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5, 385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5, 24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90, 5, 3073, 86, 5, 193, 192, 5, 24577]); +c$.cplens = Clazz_newIntArray(-1, [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]); +c$.cplext = Clazz_newIntArray(-1, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112]); +c$.cpdist = Clazz_newIntArray(-1, [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577]); +c$.cpdext = Clazz_newIntArray(-1, [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +Clazz_load(["JU.InfTree"], "JU.InfBlocks", ["JU.InfCodes"], function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mode = 0; +this.left = 0; +this.table = 0; +this.index = 0; +this.blens = null; +this.bb = null; +this.tb = null; +this.bl = null; +this.bd = null; +this.tl = null; +this.td = null; +this.tli = null; +this.tdi = null; +this.codes = null; +this.last = 0; +this.bitk = 0; +this.bitb = 0; +this.hufts = null; +this.window = null; +this.end = 0; +this.read = 0; +this.write = 0; +this.check = false; +this.inftree = null; +this.z = null; +Clazz_instantialize(this, arguments);}, JU, "InfBlocks", null); +Clazz_prepareFields (c$, function(){ +this.bb = Clazz_newIntArray (1, 0); +this.tb = Clazz_newIntArray (1, 0); +this.bl = Clazz_newIntArray (1, 0); +this.bd = Clazz_newIntArray (1, 0); +this.tli = Clazz_newIntArray (1, 0); +this.tdi = Clazz_newIntArray (1, 0); +this.inftree = new JU.InfTree(); +}); +Clazz_makeConstructor(c$, +function(z, w){ +this.z = z; +this.codes = new JU.InfCodes(this.z, this); +this.hufts = Clazz_newIntArray (4320, 0); +this.window = Clazz_newByteArray (w, 0); +this.end = w; +this.check = (z.istate.wrap == 0) ? false : true; +this.mode = 0; +{ +this.tl = Clazz_newArray(1, null); +this.td = Clazz_newArray(1, null); +}this.reset(); +}, "JU.ZStream,~N"); +Clazz_defineMethod(c$, "reset", +function(){ +if (this.mode == 6) { +this.codes.free(this.z); +}this.mode = 0; +this.bitk = 0; +this.bitb = 0; +this.read = this.write = 0; +if (this.check) { +this.z.checksum.reset(); +}}); +Clazz_defineMethod(c$, "proc", +function(r){ +var t; +var b; +var k; +var p; +var n; +var q; +var m; +{ +p = this.z.next_in_index; +n = this.z.avail_in; +b = this.bitb; +k = this.bitk; +}{ +q = this.write; +m = (q < this.read ? this.read - q - 1 : this.end - q); +}while (true) { +switch (this.mode) { +case 0: +while (k < (3)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +t = (b & 7); +this.last = t & 1; +switch (t >>> 1) { +case 0: +{ +b >>>= (3); +k -= (3); +}t = k & 7; +{ +b >>>= (t); +k -= (t); +}this.mode = 1; +break; +case 1: +JU.InfTree.inflate_trees_fixed(this.bl, this.bd, this.tl, this.td, this.z); +this.codes.init(this.bl[0], this.bd[0], this.tl[0], 0, this.td[0], 0); +{ +b >>>= (3); +k -= (3); +}this.mode = 6; +break; +case 2: +{ +b >>>= (3); +k -= (3); +}this.mode = 3; +break; +case 3: +{ +b >>>= (3); +k -= (3); +}this.mode = 9; +this.z.msg = "invalid block type"; +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +} +break; +case 1: +while (k < (32)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +if ((((~b) >>> 16) & 0xffff) != (b & 0xffff)) { +this.mode = 9; +this.z.msg = "invalid stored block lengths"; +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}this.left = (b & 0xffff); +b = k = 0; +this.mode = this.left != 0 ? 2 : (this.last != 0 ? 7 : 0); +break; +case 2: +if (n == 0) { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}if (m == 0) { +if (q == this.end && this.read != 0) { +q = 0; +m = (q < this.read ? this.read - q - 1 : this.end - q); +}if (m == 0) { +this.write = q; +r = this.inflate_flush(r); +q = this.write; +m = (q < this.read ? this.read - q - 1 : this.end - q); +if (q == this.end && this.read != 0) { +q = 0; +m = (q < this.read ? this.read - q - 1 : this.end - q); +}if (m == 0) { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}}}r = 0; +t = this.left; +if (t > n) t = n; +if (t > m) t = m; +System.arraycopy(this.z.next_in, p, this.window, q, t); +p += t; +n -= t; +q += t; +m -= t; +if ((this.left -= t) != 0) break; +this.mode = this.last != 0 ? 7 : 0; +break; +case 3: +while (k < (14)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +this.table = t = (b & 0x3fff); +if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29) { +this.mode = 9; +this.z.msg = "too many length or distance symbols"; +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f); +if (this.blens == null || this.blens.length < t) { +this.blens = Clazz_newIntArray (t, 0); +} else { +for (var i = 0; i < t; i++) { +this.blens[i] = 0; +} +}{ +b >>>= (14); +k -= (14); +}this.index = 0; +this.mode = 4; +case 4: +while (this.index < 4 + (this.table >>> 10)) { +while (k < (3)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +this.blens[JU.InfBlocks.border[this.index++]] = b & 7; +{ +b >>>= (3); +k -= (3); +}} +while (this.index < 19) { +this.blens[JU.InfBlocks.border[this.index++]] = 0; +} +this.bb[0] = 7; +t = this.inftree.inflate_trees_bits(this.blens, this.bb, this.tb, this.hufts, this.z); +if (t != 0) { +r = t; +if (r == -3) { +this.blens = null; +this.mode = 9; +}this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}this.index = 0; +this.mode = 5; +case 5: +while (true) { +t = this.table; +if (!(this.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))) { +break; +}var i; +var j; +var c; +t = this.bb[0]; +while (k < (t)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +t = this.hufts[(this.tb[0] + (b & JU.InfBlocks.inflate_mask[t])) * 3 + 1]; +c = this.hufts[(this.tb[0] + (b & JU.InfBlocks.inflate_mask[t])) * 3 + 2]; +if (c < 16) { +b >>>= (t); +k -= (t); +this.blens[this.index++] = c; +} else { +i = c == 18 ? 7 : c - 14; +j = c == 18 ? 11 : 3; +while (k < (t + i)) { +if (n != 0) { +r = 0; +} else { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +b >>>= (t); +k -= (t); +j += (b & JU.InfBlocks.inflate_mask[i]); +b >>>= (i); +k -= (i); +i = this.index; +t = this.table; +if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || (c == 16 && i < 1)) { +this.blens = null; +this.mode = 9; +this.z.msg = "invalid bit length repeat"; +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}c = c == 16 ? this.blens[i - 1] : 0; +do { +this.blens[i++] = c; +} while (--j != 0); +this.index = i; +}} +this.tb[0] = -1; +{ +this.bl[0] = 9; +this.bd[0] = 6; +t = this.table; +t = this.inftree.inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), this.blens, this.bl, this.bd, this.tli, this.tdi, this.hufts, this.z); +if (t != 0) { +if (t == -3) { +this.blens = null; +this.mode = 9; +}r = t; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}this.codes.init(this.bl[0], this.bd[0], this.hufts, this.tli[0], this.hufts, this.tdi[0]); +}this.mode = 6; +case 6: +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +if ((r = this.codes.proc(r)) != 1) { +return this.inflate_flush(r); +}r = 0; +this.codes.free(this.z); +p = this.z.next_in_index; +n = this.z.avail_in; +b = this.bitb; +k = this.bitk; +q = this.write; +m = (q < this.read ? this.read - q - 1 : this.end - q); +if (this.last == 0) { +this.mode = 0; +break; +}this.mode = 7; +case 7: +this.write = q; +r = this.inflate_flush(r); +q = this.write; +m = (q < this.read ? this.read - q - 1 : this.end - q); +if (this.read != this.write) { +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +}this.mode = 8; +case 8: +r = 1; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +case 9: +r = -3; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +default: +r = -2; +this.bitb = b; +this.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.write = q; +return this.inflate_flush(r); +} +} +}, "~N"); +Clazz_defineMethod(c$, "free", +function(){ +this.reset(); +this.window = null; +this.hufts = null; +}); +Clazz_defineMethod(c$, "set_dictionary", +function(d, start, n){ +System.arraycopy(d, start, this.window, 0, n); +this.read = this.write = n; +}, "~A,~N,~N"); +Clazz_defineMethod(c$, "sync_point", +function(){ +return this.mode == 1 ? 1 : 0; +}); +Clazz_defineMethod(c$, "inflate_flush", +function(r){ +var n; +var p; +var q; +p = this.z.next_out_index; +q = this.read; +n = ((q <= this.write ? this.write : this.end) - q); +if (n > this.z.avail_out) n = this.z.avail_out; +if (n != 0 && r == -5) r = 0; +this.z.avail_out -= n; +this.z.total_out += n; +if (this.check && n > 0) { +this.z.checksum.update(this.window, q, n); +}System.arraycopy(this.window, q, this.z.next_out, p, n); +p += n; +q += n; +if (q == this.end) { +q = 0; +if (this.write == this.end) this.write = 0; +n = this.write - q; +if (n > this.z.avail_out) n = this.z.avail_out; +if (n != 0 && r == -5) r = 0; +this.z.avail_out -= n; +this.z.total_out += n; +if (this.check && n > 0) { +this.z.checksum.update(this.window, q, n); +}System.arraycopy(this.window, q, this.z.next_out, p, n); +p += n; +q += n; +}this.z.next_out_index = p; +this.read = q; +return r; +}, "~N"); +c$.inflate_mask = Clazz_newIntArray(-1, [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]); +c$.border = Clazz_newIntArray(-1, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("JU"); +(function(){ +var c$ = Clazz_decorateAsClass(function(){ +this.mode = 0; +this.len = 0; +this.tree = null; +this.tree_index = 0; +this.need = 0; +this.lit = 0; +this.get = 0; +this.dist = 0; +this.lbits = 0; +this.dbits = 0; +this.ltree = null; +this.ltree_index = 0; +this.dtree = null; +this.dtree_index = 0; +this.z = null; +this.s = null; +Clazz_instantialize(this, arguments);}, JU, "InfCodes", null); +Clazz_makeConstructor(c$, +function(z, s){ +this.z = z; +this.s = s; +}, "JU.ZStream,JU.InfBlocks"); +Clazz_defineMethod(c$, "init", +function(bl, bd, tl, tl_index, td, td_index){ +this.mode = 0; +this.lbits = bl; +this.dbits = bd; +this.ltree = tl; +this.ltree_index = tl_index; +this.dtree = td; +this.dtree_index = td_index; +this.tree = null; +}, "~N,~N,~A,~N,~A,~N"); +Clazz_defineMethod(c$, "proc", +function(r){ +var j; +var tindex; +var e; +var b = 0; +var k = 0; +var p = 0; +var n; +var q; +var m; +var f; +p = this.z.next_in_index; +n = this.z.avail_in; +b = this.s.bitb; +k = this.s.bitk; +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +while (true) { +switch (this.mode) { +case 0: +if (m >= 258 && n >= 10) { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +r = this.inflate_fast(this.lbits, this.dbits, this.ltree, this.ltree_index, this.dtree, this.dtree_index, this.s, this.z); +p = this.z.next_in_index; +n = this.z.avail_in; +b = this.s.bitb; +k = this.s.bitk; +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +if (r != 0) { +this.mode = r == 1 ? 7 : 9; +break; +}}this.need = this.lbits; +this.tree = this.ltree; +this.tree_index = this.ltree_index; +this.mode = 1; +case 1: +j = this.need; +while (k < (j)) { +if (n != 0) r = 0; + else { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +tindex = (this.tree_index + (b & JU.InfCodes.inflate_mask[j])) * 3; +b >>>= (this.tree[tindex + 1]); +k -= (this.tree[tindex + 1]); +e = this.tree[tindex]; +if (e == 0) { +this.lit = this.tree[tindex + 2]; +this.mode = 6; +break; +}if ((e & 16) != 0) { +this.get = e & 15; +this.len = this.tree[tindex + 2]; +this.mode = 2; +break; +}if ((e & 64) == 0) { +this.need = e; +this.tree_index = Clazz_doubleToInt(tindex / 3) + this.tree[tindex + 2]; +break; +}if ((e & 32) != 0) { +this.mode = 7; +break; +}this.mode = 9; +this.z.msg = "invalid literal/length code"; +r = -3; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +case 2: +j = this.get; +while (k < (j)) { +if (n != 0) r = 0; + else { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +this.len += (b & JU.InfCodes.inflate_mask[j]); +b >>= j; +k -= j; +this.need = this.dbits; +this.tree = this.dtree; +this.tree_index = this.dtree_index; +this.mode = 3; +case 3: +j = this.need; +while (k < (j)) { +if (n != 0) r = 0; + else { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +tindex = (this.tree_index + (b & JU.InfCodes.inflate_mask[j])) * 3; +b >>= this.tree[tindex + 1]; +k -= this.tree[tindex + 1]; +e = (this.tree[tindex]); +if ((e & 16) != 0) { +this.get = e & 15; +this.dist = this.tree[tindex + 2]; +this.mode = 4; +break; +}if ((e & 64) == 0) { +this.need = e; +this.tree_index = Clazz_doubleToInt(tindex / 3) + this.tree[tindex + 2]; +break; +}this.mode = 9; +this.z.msg = "invalid distance code"; +r = -3; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +case 4: +j = this.get; +while (k < (j)) { +if (n != 0) r = 0; + else { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}n--; +b |= (this.z.next_in[p++] & 0xff) << k; +k += 8; +} +this.dist += (b & JU.InfCodes.inflate_mask[j]); +b >>= j; +k -= j; +this.mode = 5; +case 5: +f = q - this.dist; +while (f < 0) { +f += this.s.end; +} +while (this.len != 0) { +if (m == 0) { +if (q == this.s.end && this.s.read != 0) { +q = 0; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +}if (m == 0) { +this.s.write = q; +r = this.s.inflate_flush(r); +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +if (q == this.s.end && this.s.read != 0) { +q = 0; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +}if (m == 0) { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}}}this.s.window[q++] = this.s.window[f++]; +m--; +if (f == this.s.end) f = 0; +this.len--; +} +this.mode = 0; +break; +case 6: +if (m == 0) { +if (q == this.s.end && this.s.read != 0) { +q = 0; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +}if (m == 0) { +this.s.write = q; +r = this.s.inflate_flush(r); +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +if (q == this.s.end && this.s.read != 0) { +q = 0; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +}if (m == 0) { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}}}r = 0; +this.s.window[q++] = this.lit; +m--; +this.mode = 0; +break; +case 7: +if (k > 7) { +k -= 8; +n++; +p--; +}this.s.write = q; +r = this.s.inflate_flush(r); +q = this.s.write; +m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q; +if (this.s.read != this.s.write) { +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +}this.mode = 8; +case 8: +r = 1; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +case 9: +r = -3; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +default: +r = -2; +this.s.bitb = b; +this.s.bitk = k; +this.z.avail_in = n; +this.z.total_in += p - this.z.next_in_index; +this.z.next_in_index = p; +this.s.write = q; +return this.s.inflate_flush(r); +} +} +}, "~N"); +Clazz_defineMethod(c$, "free", +function(z){ +}, "JU.ZStream"); +Clazz_defineMethod(c$, "inflate_fast", +function(bl, bd, tl, tl_index, td, td_index, s, z){ +var t; +var tp; +var tp_index; +var e; +var b; +var k; +var p; +var n; +var q; +var m; +var ml; +var md; +var c; +var d; +var r; +var tp_index_t_3; +p = z.next_in_index; +n = z.avail_in; +b = s.bitb; +k = s.bitk; +q = s.write; +m = q < s.read ? s.read - q - 1 : s.end - q; +ml = JU.InfCodes.inflate_mask[bl]; +md = JU.InfCodes.inflate_mask[bd]; +do { +while (k < (20)) { +n--; +b |= (z.next_in[p++] & 0xff) << k; +k += 8; +} +t = b & ml; +tp = tl; +tp_index = tl_index; +tp_index_t_3 = (tp_index + t) * 3; +if ((e = tp[tp_index_t_3]) == 0) { +b >>= (tp[tp_index_t_3 + 1]); +k -= (tp[tp_index_t_3 + 1]); +s.window[q++] = tp[tp_index_t_3 + 2]; +m--; +continue; +}do { +b >>= (tp[tp_index_t_3 + 1]); +k -= (tp[tp_index_t_3 + 1]); +if ((e & 16) != 0) { +e &= 15; +c = tp[tp_index_t_3 + 2] + (b & JU.InfCodes.inflate_mask[e]); +b >>= e; +k -= e; +while (k < (15)) { +n--; +b |= (z.next_in[p++] & 0xff) << k; +k += 8; +} +t = b & md; +tp = td; +tp_index = td_index; +tp_index_t_3 = (tp_index + t) * 3; +e = tp[tp_index_t_3]; +do { +b >>= (tp[tp_index_t_3 + 1]); +k -= (tp[tp_index_t_3 + 1]); +if ((e & 16) != 0) { +e &= 15; +while (k < (e)) { +n--; +b |= (z.next_in[p++] & 0xff) << k; +k += 8; +} +d = tp[tp_index_t_3 + 2] + (b & JU.InfCodes.inflate_mask[e]); +b >>= (e); +k -= (e); +m -= c; +if (q >= d) { +r = q - d; +if (q - r > 0 && 2 > (q - r)) { +s.window[q++] = s.window[r++]; +s.window[q++] = s.window[r++]; +c -= 2; +} else { +System.arraycopy(s.window, r, s.window, q, 2); +q += 2; +r += 2; +c -= 2; +}} else { +r = q - d; +do { +r += s.end; +} while (r < 0); +e = s.end - r; +if (c > e) { +c -= e; +if (q - r > 0 && e > (q - r)) { +do { +s.window[q++] = s.window[r++]; +} while (--e != 0); +} else { +System.arraycopy(s.window, r, s.window, q, e); +q += e; +r += e; +e = 0; +}r = 0; +}}if (q - r > 0 && c > (q - r)) { +do { +s.window[q++] = s.window[r++]; +} while (--c != 0); +} else { +System.arraycopy(s.window, r, s.window, q, c); +q += c; +r += c; +c = 0; +}break; +} else if ((e & 64) == 0) { +t += tp[tp_index_t_3 + 2]; +t += (b & JU.InfCodes.inflate_mask[e]); +tp_index_t_3 = (tp_index + t) * 3; +e = tp[tp_index_t_3]; +} else { +z.msg = "invalid distance code"; +c = z.avail_in - n; +c = (k >> 3) < c ? k >> 3 : c; +n += c; +p -= c; +k -= c << 3; +s.bitb = b; +s.bitk = k; +z.avail_in = n; +z.total_in += p - z.next_in_index; +z.next_in_index = p; +s.write = q; +return -3; +}} while (true); +break; +}if ((e & 64) == 0) { +t += tp[tp_index_t_3 + 2]; +t += (b & JU.InfCodes.inflate_mask[e]); +tp_index_t_3 = (tp_index + t) * 3; +if ((e = tp[tp_index_t_3]) == 0) { +b >>= (tp[tp_index_t_3 + 1]); +k -= (tp[tp_index_t_3 + 1]); +s.window[q++] = tp[tp_index_t_3 + 2]; +m--; +break; +}} else if ((e & 32) != 0) { +c = z.avail_in - n; +c = (k >> 3) < c ? k >> 3 : c; +n += c; +p -= c; +k -= c << 3; +s.bitb = b; +s.bitk = k; +z.avail_in = n; +z.total_in += p - z.next_in_index; +z.next_in_index = p; +s.write = q; +return 1; +} else { +z.msg = "invalid literal/length code"; +c = z.avail_in - n; +c = (k >> 3) < c ? k >> 3 : c; +n += c; +p -= c; +k -= c << 3; +s.bitb = b; +s.bitk = k; +z.avail_in = n; +z.total_in += p - z.next_in_index; +z.next_in_index = p; +s.write = q; +return -3; +}} while (true); +} while (m >= 258 && n >= 10); +c = z.avail_in - n; +c = (k >> 3) < c ? k >> 3 : c; +n += c; +p -= c; +k -= c << 3; +s.bitb = b; +s.bitk = k; +z.avail_in = n; +z.total_in += p - z.next_in_index; +z.next_in_index = p; +s.write = q; +return 0; +}, "~N,~N,~A,~N,~A,~N,JU.InfBlocks,JU.ZStream"); +c$.inflate_mask = Clazz_newIntArray(-1, [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +Clazz_declarePackage("J.io"); +Clazz_load(null, "J.io.JmolUtil", ["java.net.URL", "java.util.Hashtable", "JU.AU", "$.Lst", "$.OC", "$.PT", "$.Rdr", "J.adapter.smarter.AtomSetCollection", "J.api.Interface", "JU.Logger", "JV.FileManager", "$.Viewer"], function(){ +var c$ = Clazz_declareType(J.io, "JmolUtil", null); +/*LV!1824 unnec constructor*/Clazz_defineMethod(c$, "getImage", +function(vwr, fullPathNameOrBytes, echoName, forceSync){ +var image = null; +var info = null; +var apiPlatform = vwr.apiPlatform; +var createImage = false; +var fullPathName = "" + fullPathNameOrBytes; +if ((typeof(fullPathNameOrBytes)=='string')) { +var isBMP = fullPathName.toUpperCase().endsWith("BMP"); +if (forceSync || fullPathName.indexOf("|") > 0 || isBMP) { +var ret = vwr.fm.getFileAsBytes(fullPathName, null); +if (!JU.AU.isAB(ret)) return "" + ret; +if (JV.Viewer.isJS) info = Clazz_newArray(-1, [echoName, fullPathNameOrBytes, ret]); + else image = apiPlatform.createImage(ret); +} else if (JU.OC.urlTypeIndex(fullPathName) >= 0) { +if (JV.Viewer.isJS) info = Clazz_newArray(-1, [echoName, fullPathNameOrBytes, null]); + else try { +image = apiPlatform.createImage( new java.net.URL(Clazz_castNullAs("java.net.URL"), fullPathName, null)); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return "bad URL: " + fullPathName; +} else { +throw e; +} +} +} else { +createImage = true; +}} else if (JV.Viewer.isJS) { +info = Clazz_newArray(-1, [echoName, JU.Rdr.guessMimeTypeForBytes(fullPathNameOrBytes), fullPathNameOrBytes]); +} else { +createImage = true; +}if (createImage) image = apiPlatform.createImage("\1close".equals(fullPathNameOrBytes) ? "\1close" + echoName : fullPathNameOrBytes); + else if (info != null) image = apiPlatform.createImage(info); +{ +return image; +}}, "JV.Viewer,~O,~S,~B"); +Clazz_defineMethod(c$, "getAtomSetCollectionOrBufferedReaderFromZip", +function(vwr, is, fileName, zipDirectory, htParams, subFilePtr, asBufferedReader){ +var adapter = vwr.getModelAdapter(); +var doCombine = (subFilePtr == 1); +htParams.put("zipSet", fileName); +var subFileList = htParams.get("subFileList"); +if (subFileList == null) subFileList = this.getSpartanSubfiles(zipDirectory); +var subFileName = (subFileList == null || subFilePtr >= subFileList.length ? htParams.get("SubFileName") : subFileList[subFilePtr]); +if (subFileName != null && (subFileName.startsWith("/") || subFileName.startsWith("\\"))) subFileName = subFileName.substring(1); +var selectedFile = 0; +if (subFileName == null && htParams.containsKey("modelNumber")) { +selectedFile = (htParams.get("modelNumber")).intValue(); +if (selectedFile > 0 && doCombine) htParams.remove("modelNumber"); +}var manifest = htParams.get("manifest"); +var useFileManifest = (manifest == null); +if (useFileManifest) manifest = (zipDirectory.length > 0 ? zipDirectory[0] : ""); +var haveManifest = (manifest.length > 0); +if (haveManifest) { +if (JU.Logger.debugging) JU.Logger.debug("manifest for " + fileName + ":\n" + manifest); +}var ignoreErrors = (manifest.indexOf("IGNORE_ERRORS") >= 0); +var selectAll = (manifest.indexOf("IGNORE_MANIFEST") >= 0); +var exceptFiles = (manifest.indexOf("EXCEPT_FILES") >= 0); +if (selectAll || subFileName != null) haveManifest = false; +if (useFileManifest && haveManifest) { +var path = JV.FileManager.getManifestScriptPath(manifest); +if (path != null) { +return "NOTE: file recognized as a script file: " + fileName + path + "\n"; +}}var vCollections = new JU.Lst(); +var htCollections = (haveManifest ? new java.util.Hashtable() : null); +var nFiles = 0; +try { +var spartanData = (this.isSpartanZip(zipDirectory) ? vwr.fm.spartanUtil().getData(is, zipDirectory) : null); +var zpt = vwr.getJzt(); +var ret; +if (spartanData != null) { +var reader = JU.Rdr.getBR(spartanData.toString()); +if (asBufferedReader) return reader; +ret = adapter.getAtomSetCollectionFromReader(fileName, reader, htParams); +if ((typeof(ret)=='string')) return ret; +if (Clazz_instanceOf(ret,"J.adapter.smarter.AtomSetCollection")) { +var atomSetCollection = ret; +if (atomSetCollection.errorMessage != null) { +if (ignoreErrors) return null; +return atomSetCollection.errorMessage; +}return atomSetCollection; +}if (ignoreErrors) return null; +return "unknown reader error"; +}if (Clazz_instanceOf(is,"java.io.BufferedInputStream")) is = JU.Rdr.getPngZipStream(is, true); +var zis = zpt.newZipInputStream(is); +var ze; +if (haveManifest) manifest = '|' + manifest.$replace('\r', '|').$replace('\n', '|') + '|'; +while ((ze = zis.getNextEntry()) != null && (selectedFile <= 0 || vCollections.size() < selectedFile)) { +if (ze.isDirectory()) continue; +var thisEntry = ze.getName(); +if (subFileName != null && !thisEntry.equals(subFileName)) continue; +if (subFileName != null) htParams.put("subFileName", subFileName); +if (thisEntry.startsWith("JmolManifest") || haveManifest && exceptFiles == manifest.indexOf("|" + thisEntry + "|") >= 0) continue; +var bytes = JU.Rdr.getLimitedStreamBytes(zis, ze.getSize()); +if (JU.Rdr.isGzipB(bytes)) bytes = JU.Rdr.getLimitedStreamBytes(zpt.getUnGzippedInputStream(bytes), -1); +if (JU.Rdr.isZipB(bytes) || JU.Rdr.isPngZipB(bytes)) { +var bis = JU.Rdr.getBIS(bytes); +var zipDir2 = zpt.getZipDirectoryAndClose(bis, "JmolManifest"); +bis = JU.Rdr.getBIS(bytes); +var atomSetCollections = this.getAtomSetCollectionOrBufferedReaderFromZip(vwr, bis, fileName + "|" + thisEntry, zipDir2, htParams, ++subFilePtr, asBufferedReader); +if ((typeof(atomSetCollections)=='string')) { +if (ignoreErrors) continue; +return atomSetCollections; +} else if (Clazz_instanceOf(atomSetCollections,"J.adapter.smarter.AtomSetCollection") || Clazz_instanceOf(atomSetCollections,"JU.Lst")) { +if (haveManifest && !exceptFiles) htCollections.put(thisEntry, atomSetCollections); + else vCollections.addLast(atomSetCollections); +} else if (Clazz_instanceOf(atomSetCollections,"java.io.BufferedReader")) { +if (doCombine) zis.close(); +return atomSetCollections; +} else { +if (ignoreErrors) continue; +zis.close(); +return "unknown zip reader error"; +}} else if (JU.Rdr.isPickleB(bytes)) { +var bis = JU.Rdr.getBIS(bytes); +if (doCombine) zis.close(); +return bis; +} else { +var sData; +if (JU.Rdr.isCompoundDocumentB(bytes)) { +var jd = J.api.Interface.getInterface("JU.CompoundDocument", vwr, "file"); +jd.setDocStream(zpt, JU.Rdr.getBIS(bytes)); +sData = jd.getAllDataFiles("Molecule", "Input").toString(); +} else { +sData = JU.Rdr.fixUTF(bytes); +}var reader = JU.Rdr.getBR(sData); +if (asBufferedReader) { +if (doCombine) zis.close(); +return reader; +}var fname = fileName + "|" + ze.getName(); +ret = adapter.getAtomSetCollectionFromReader(fname, reader, htParams); +if (!(Clazz_instanceOf(ret,"J.adapter.smarter.AtomSetCollection"))) { +if (ignoreErrors) continue; +zis.close(); +return "" + ret; +}if (haveManifest && !exceptFiles) htCollections.put(thisEntry, ret); + else vCollections.addLast(ret); +var a = ret; +if (a.errorMessage != null) { +if (ignoreErrors) continue; +zis.close(); +return a.errorMessage; +}}} +if (doCombine) zis.close(); +if (haveManifest && !exceptFiles) { +var list = JU.PT.split(manifest, "|"); +for (var i = 0; i < list.length; i++) { +var file = list[i]; +if (file.length == 0 || file.indexOf("#") == 0) continue; +if (htCollections.containsKey(file)) vCollections.addLast(htCollections.get(file)); + else if (JU.Logger.debugging) JU.Logger.debug("manifested file " + file + " was not found in " + fileName); +} +}if (!doCombine) return vCollections; +var result = (vCollections.size() == 1 && Clazz_instanceOf(vCollections.get(0),"J.adapter.smarter.AtomSetCollection") ? vCollections.get(0) : new J.adapter.smarter.AtomSetCollection("Array", null, null, vCollections)); +if (result.errorMessage != null) { +if (ignoreErrors) return null; +return result.errorMessage; +}if (nFiles == 1) selectedFile = 1; +if (selectedFile > 0 && selectedFile <= vCollections.size()) return vCollections.get(selectedFile - 1); +return result; +} catch (e$$) { +if (Clazz_exceptionOf(e$$, Exception)){ +var e = e$$; +{ +if (ignoreErrors) return null; +JU.Logger.error("" + e); +return "" + e; +} +} else if (Clazz_exceptionOf(e$$, Error)){ +var er = e$$; +{ +JU.Logger.errorEx(null, er); +return "" + er; +} +} else { +throw e$$; +} +} +}, "JV.Viewer,java.io.InputStream,~S,~A,java.util.Map,~N,~B"); +Clazz_defineMethod(c$, "getCachedPngjBytes", +function(fm, pathName){ +if (pathName.startsWith("file:///")) pathName = "file:" + pathName.substring(7); +JU.Logger.info("JmolUtil checking PNGJ cache for " + pathName); +var shortName = this.shortSceneFilename(pathName); +if (fm.pngjCache == null && !this.clearAndCachePngjFile(fm, Clazz_newArray(-1, [pathName, null]))) return null; +var cache = fm.pngjCache; +var isMin = (pathName.indexOf(".min.") >= 0); +if (!isMin) { +var cName = fm.getCanonicalName(JU.Rdr.getZipRoot(pathName)); +if (!cache.containsKey(cName) && !this.clearAndCachePngjFile(fm, Clazz_newArray(-1, [pathName, null]))) return null; +if (pathName.indexOf("|") < 0) shortName = cName; +}if (cache.containsKey(shortName)) { +JU.Logger.info("FileManager using memory cache " + shortName); +return fm.pngjCache.get(shortName); +}if (!isMin || !this.clearAndCachePngjFile(fm, Clazz_newArray(-1, [pathName, null]))) return null; +JU.Logger.info("FileManager using memory cache " + shortName); +return cache.get(shortName); +}, "JV.FileManager,~S"); +Clazz_defineMethod(c$, "clearAndCachePngjFile", +function(fm, data){ +fm.pngjCache = new java.util.Hashtable(); +if (data == null || data[0] == null) return false; +data[0] = JU.Rdr.getZipRoot(data[0]); +var shortName = this.shortSceneFilename(data[0]); +var cache = fm.pngjCache; +try { +data[1] = fm.vwr.getJzt().cacheZipContents(JU.Rdr.getPngZipStream(fm.getBufferedInputStreamOrErrorMessageFromName(data[0], null, false, false, null, false, true), true), shortName, cache, false); +} catch (e) { +if (Clazz_exceptionOf(e, Exception)){ +return false; +} else { +throw e; +} +} +if (data[1] == null) return false; +var bytes = data[1].getBytes(); +cache.put(fm.getCanonicalName(data[0]), bytes); +if (shortName.indexOf("_scene_") >= 0) { +cache.put(this.shortSceneFilename(data[0]), bytes); +bytes = cache.remove(shortName + "|state.spt"); +if (bytes != null) cache.put(this.shortSceneFilename(data[0] + "|state.spt"), bytes); +}return true; +}, "JV.FileManager,~A"); +Clazz_defineMethod(c$, "shortSceneFilename", +function(pathName){ +var pt = pathName.indexOf("_scene_") + 7; +if (pt < 7) return pathName; +var s = ""; +if (pathName.endsWith("|state.spt")) { +var pt1 = pathName.indexOf('.', pt); +if (pt1 < 0) return pathName; +s = pathName.substring(pt, pt1); +}var pt2 = pathName.lastIndexOf("|"); +return pathName.substring(0, pt) + s + (pt2 > 0 ? pathName.substring(pt2) : ""); +}, "~S"); +Clazz_defineMethod(c$, "getSpartanSubfiles", +function(zipDirectory){ +var name = (zipDirectory.length < 2 ? null : zipDirectory[1]); +return (name == null || zipDirectory.length != 2 || !name.endsWith(".spardir/") ? null : Clazz_newArray(-1, ["", JU.PT.trim(name, "/")])); +}, "~A"); +Clazz_defineMethod(c$, "isSpartanZip", +function(zipDirectory){ +for (var i = 1; i < zipDirectory.length; i++) if (zipDirectory[i].endsWith(".spardir/") || zipDirectory[i].indexOf("_spartandir") >= 0) return true; + +return false; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 +})(Clazz +,Clazz.getClassName +,Clazz.newLongArray +,Clazz.doubleToByte +,Clazz.doubleToInt +,Clazz.doubleToLong +,Clazz.declarePackage +,Clazz.instanceOf +,Clazz.load +,Clazz.instantialize +,Clazz.decorateAsClass +,Clazz.floatToInt +,Clazz.floatToLong +,Clazz.makeConstructor +,Clazz.defineEnumConstant +,Clazz.exceptionOf +,Clazz.newIntArray +,Clazz.newFloatArray +,Clazz.declareType +,Clazz.prepareFields +,Clazz.superConstructor +,Clazz.newByteArray +,Clazz.declareInterface +,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.isAB +,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.checkPrivateMethod +,Clazz.cloneFinals +); diff --git a/config/plugins/visualizations/jmol/static/j2s/core/corezip.z.js b/config/plugins/visualizations/jmol/static/j2s/core/corezip.z.js new file mode 100755 index 000000000000..6db84eb7bf4a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/core/corezip.z.js @@ -0,0 +1,165 @@ +(function(M,X,Y,Z,R,$,z,I,y,B,A,aa,ba,D,ca,t,u,da,F,L,K,x,l,O,T,U,V,E,W,ea,P,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,Ca,d,k){y(["java.io.FilterInputStream"],"java.io.PushbackInputStream",null,function(){var b=A(function(){this.buf=null;this.pos=0;B(this,arguments)},java.io,"PushbackInputStream",java.io.FilterInputStream);D(b,function(a,c){K(this,java.io.PushbackInputStream,[a]);if(0>=c)throw new IllegalArgumentException("size <= 0");this.buf=x(c,0);this.pos=c},"java.io.InputStream,~N"); +d(b,"ensureOpen",function(){if(null==this.$in)throw new java.io.IOException("Stream closed");});k(b,"readByteAsInt",function(){this.ensureOpen();return this.posc||0>m||m>a.length-c)throw new IndexOutOfBoundsException;if(0==m)return 0;var b=this.buf.length-this.pos;0this.pos)throw new java.io.IOException("Push back buffer is full");this.pos-=m;System.arraycopy(a,c,this.buf,this.pos,m)},"~A,~N,~N");k(b,"available",function(){this.ensureOpen();var a=this.buf.length-this.pos,c=this.$in.available(); +return a>2147483647-c?2147483647:a+c});k(b,"skip",function(a){this.ensureOpen();if(0>=a)return 0;var c=this.buf.length-this.pos;0a)throw new IllegalArgumentException("invalid entry size");this.size=a},"~N");d(b,"getSize",function(){return this.size});d(b,"getCompressedSize",function(){return this.csize}); +d(b,"setCompressedSize",function(a){this.csize=a},"~N");d(b,"setCrc",function(a){if(0>a||4294967295>25&127)+80,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,a<<1&62)).getTime()},"~N");b.javaToDosTime=d(b,"javaToDosTime",function(a){a=new java.util.Date(a); +var c=a.getYear()+1900;return 1980>c?2162688:c-1980<<25|a.getMonth()+1<<21|a.getDate()<<16|a.getHours()<<11|a.getMinutes()<<5|a.getSeconds()>>1},"~N");k(b,"hashCode",function(){return this.name.hashCode()});d(b,"clone",function(){try{var a=P(this,java.util.zip.ZipEntry,"clone",[]);null!=this.extra&&(a.extra=x(this.extra.length,0),System.arraycopy(this.extra,0,a.extra,0,this.extra.length));return a}catch(c){if(t(c,"CloneNotSupportedException"))throw new InternalError;throw c;}})});z("java.util.zip"); +F(java.util.zip,"ZipConstants64",null);z("java.util.zip");y(["java.util.zip.InflaterInputStream","$.ZipConstants","$.CRC32"],"java.util.zip.ZipInputStream",["java.io.PushbackInputStream","java.util.zip.Inflater","$.ZipEntry"],function(){var b=A(function(){this.entry=null;this.flag=0;this.crc=null;this.remaining=0;this.tmpbuf=null;this.entryEOF=this.$closed=!1;this.$b=this.byteTest=this.zc=null;B(this,arguments)},java.util.zip,"ZipInputStream",java.util.zip.InflaterInputStream,java.util.zip.ZipConstants); +L(b,function(){this.crc=new java.util.zip.CRC32;this.tmpbuf=x(512,0);this.byteTest=x(-1,[32]);this.$b=x(256,0)});D(b,function(a){K(this,java.util.zip.ZipInputStream,[new java.io.PushbackInputStream(a,1024),java.util.zip.ZipInputStream.newInflater(),512]);try{String.instantialize(this.byteTest,"UTF-8")}catch(c){if(t(c,"java.io.UnsupportedEncodingException"))throw new NullPointerException("charset is invalid");throw c;}this.zc="UTF-8"},"java.io.InputStream");d(b,"ensureOpen",function(){if(this.$closed)throw new java.io.IOException("Stream closed"); +});b.newInflater=d(b,"newInflater",function(){return(new java.util.zip.Inflater).init(0,!0)});d(b,"getNextEntry",function(){this.ensureOpen();null!=this.entry&&this.closeEntry();this.crc.reset();this.inflater=this.inf=java.util.zip.ZipInputStream.newInflater();if(null==(this.entry=this.readLOC()))return null;0==this.entry.method&&(this.remaining=this.entry.size);this.entryEOF=!1;return this.entry});d(b,"closeEntry",function(){for(this.ensureOpen();-1!=this.read(this.tmpbuf,0,this.tmpbuf.length);); +this.entryEOF=!0});k(b,"available",function(){this.ensureOpen();return this.entryEOF?0:1});d(b,"read",function(a,c,m){this.ensureOpen();if(0>c||0>m||c>a.length-m)throw new IndexOutOfBoundsException;if(0==m)return 0;if(null==this.entry)return-1;switch(this.entry.method){case 8:return m=this.readInf(a,c,m),-1==m?(this.readEnd(this.entry),this.entryEOF=!0,this.entry=null):this.crc.update(a,c,m),m;case 0:if(0>=this.remaining)return this.entryEOF=!0,this.entry=null,-1;m>this.remaining&&(m=this.remaining); +m=this.$in.read(a,c,m);if(-1==m)throw new java.util.zip.ZipException("unexpected EOF");this.crc.update(a,c,m);this.remaining-=m;if(0==this.remaining&&this.entry.crc!=this.crc.getValue())throw new java.util.zip.ZipException("invalid entry CRC (expected 0x"+Long.toHexString(this.entry.crc)+" but got 0x"+Long.toHexString(this.crc.getValue())+")");return m;default:throw new java.util.zip.ZipException("invalid compression method");}},"~A,~N,~N");k(b,"skip",function(a){if(0>a)throw new IllegalArgumentException("negative skip length"); +this.ensureOpen();a=Math.min(a,2147483647);for(var c=0;cthis.tmpbuf.length&&(m=this.tmpbuf.length);m=this.read(this.tmpbuf,0,m);if(-1==m){this.entryEOF=!0;break}c+=m}return c},"~N");d(b,"close",function(){this.$closed||(P(this,java.util.zip.ZipInputStream,"close",[]),this.$closed=!0)});d(b,"readLOC",function(){try{this.readFully(this.tmpbuf,0,30)}catch(a){if(t(a,"java.io.EOFException"))return null;throw a;}if(67324752!=java.util.zip.ZipInputStream.get32(this.tmpbuf,0))return null; +this.flag=java.util.zip.ZipInputStream.get16(this.tmpbuf,6);var c=java.util.zip.ZipInputStream.get16(this.tmpbuf,26),m=this.$b.length;if(c>m){do m*=2;while(c>m);this.$b=x(m,0)}this.readFully(this.$b,0,c);m=this.createZipEntry(0!=(this.flag&2048)?this.toStringUTF8(this.$b,c):this.toStringb2(this.$b,c));if(1==(this.flag&1))throw new java.util.zip.ZipException("encrypted ZIP entry not supported");m.method=java.util.zip.ZipInputStream.get16(this.tmpbuf,8);m.time=java.util.zip.ZipInputStream.get32(this.tmpbuf, +10);if(8==(this.flag&8)){if(8!=m.method)throw new java.util.zip.ZipException("only DEFLATED entries can have EXT descriptor");}else m.crc=java.util.zip.ZipInputStream.get32(this.tmpbuf,14),m.csize=java.util.zip.ZipInputStream.get32(this.tmpbuf,18),m.size=java.util.zip.ZipInputStream.get32(this.tmpbuf,22);c=java.util.zip.ZipInputStream.get16(this.tmpbuf,28);if(0h||g+h>c)break;m.size=java.util.zip.ZipInputStream.get64(b,g);m.csize=java.util.zip.ZipInputStream.get64(b,g+8);break}g+=h+4}}return m});d(b,"toStringUTF8",function(a,c){try{return String.instantialize(a,0,c,this.zc)}catch(b){if(t(b,"java.io.UnsupportedEncodingException"))return this.toStringb2(a,c);throw b;}},"~A,~N");d(b,"toStringb2",function(a,c){return String.instantialize(a,0,c)},"~A,~N");d(b,"createZipEntry",function(a){return new java.util.zip.ZipEntry(a)}, +"~S");d(b,"readEnd",function(a){var c=this.inf.getAvailIn();0a||255=c.length,f=h?".":c[b];if(JU.Rdr.isTar(a))return JU.ZipTools.getTarFileDirectory(a,f,e);if(h)return this.getZipDirectoryAsStringAndClose(a);a=JU.Rdr.getPngZipStream(a,!0);a=JU.ZipTools.newZIS(a);var j;try{var d=f.equals(".");if(d||f.lastIndexOf("/")==f.length-1){for(g=new JU.SB;null!=(j=a.getNextEntry());){var v=j.getName();(d||v.startsWith(f))&&g.append(v).appendC("\n")}var q=g.toString();return e?JU.Rdr.getBIS(q.getBytes()):q}var r=f.indexOf(":asBinaryString"); +(d=0f;)d=(d<<3)+(JU.ZipTools.b512[f++]-48);if(0==d)return null;var f=String.instantialize(JU.ZipTools.b512,0,100).trim(),f=String.instantialize(JU.ZipTools.b512,345,155).trim()+f,v=!1;if(null!=e){if(0==f.length)return null;if(j||(h?f.equalsIgnoreCase(c):f.startsWith(c)))v=null!=g,e.append(f).appendC("\n");b=-1}e=(512-d%512)%512;if(!v&&(b!=f.length||!c.equals(f))){for(g=d+e>>9;0<=--g;)a.read(JU.ZipTools.b512,0,512);return null}c=JU.Rdr.getLimitedStreamBytes(a,d);null!=g&&(g.put(f,new JU.BArray(c)), +a.read(JU.ZipTools.b512,0,e));return c},"java.io.BufferedInputStream,~S,~N,JU.SB,java.util.Map,~B");k(b,"getZipDirectoryAsStringAndClose",function(a){var c=new JU.SB,b=[];try{b=this.getZipDirectoryOrErrorAndClose(a,null),a.close()}catch(e){if(t(e,Exception))System.out.println(e.toString());else throw e;}for(a=0;a>>8;this.crc=~e},"~A,~N,~N");k(b,"reset",function(){this.crc=0});k(b,"resetLong",function(a){this.crc= +a&4294967295},"~N");k(b,"getValue",function(){return this.crc&4294967295});k(b,"updateByteAsInt",function(a){this.b1[0]=a;this.update(this.b1,0,1)},"~N");b.crc_table=u(-1,[0,1996959894,-301047508,-1727442502,124634137,1886057615,-379345611,-1637575261,249268274,2044508324,-522852066,-1747789432,162941995,2125561021,-407360249,-1866523247,498536548,1789927666,-205950648,-2067906082,450548861,1843258603,-187386543,-2083289657,325883990,1684777152,-43845254,-1973040660,335633487,1661365465,-99664541, +-1928851979,997073096,1281953886,-715111964,-1570279054,1006888145,1258607687,-770865667,-1526024853,901097722,1119000684,-608450090,-1396901568,853044451,1172266101,-589951537,-1412350631,651767980,1373503546,-925412992,-1076862698,565507253,1454621731,-809855591,-1195530993,671266974,1594198024,-972236366,-1324619484,795835527,1483230225,-1050600021,-1234817731,1994146192,31158534,-1731059524,-271249366,1907459465,112637215,-1614814043,-390540237,2013776290,251722036,-1777751922,-519137256,2137656763, +141376813,-1855689577,-429695999,1802195444,476864866,-2056965928,-228458418,1812370925,453092731,-2113342271,-183516073,1706088902,314042704,-1950435094,-54949764,1658658271,366619977,-1932296973,-69972891,1303535960,984961486,-1547960204,-725929758,1256170817,1037604311,-1529756563,-740887301,1131014506,879679996,-1385723834,-631195440,1141124467,855842277,-1442165665,-586318647,1342533948,654459306,-1106571248,-921952122,1466479909,544179635,-1184443383,-832445281,1591671054,702138776,-1328506846, +-942167884,1504918807,783551873,-1212326853,-1061524307,-306674912,-1698712650,62317068,1957810842,-355121351,-1647151185,81470997,1943803523,-480048366,-1805370492,225274430,2053790376,-468791541,-1828061283,167816743,2097651377,-267414716,-2029476910,503444072,1762050814,-144550051,-2140837941,426522225,1852507879,-19653770,-1982649376,282753626,1742555852,-105259153,-1900089351,397917763,1622183637,-690576408,-1580100738,953729732,1340076626,-776247311,-1497606297,1068828381,1219638859,-670225446, +-1358292148,906185462,1090812512,-547295293,-1469587627,829329135,1181335161,-882789492,-1134132454,628085408,1382605366,-871598187,-1156888829,570562233,1426400815,-977650754,-1296233688,733239954,1555261956,-1026031705,-1244606671,752459403,1541320221,-1687895376,-328994266,1969922972,40735498,-1677130071,-351390145,1913087877,83908371,-1782625662,-491226604,2075208622,213261112,-1831694693,-438977011,2094854071,198958881,-2032938284,-237706686,1759359992,534414190,-2118248755,-155638181,1873836001, +414664567,-2012718362,-15766928,1711684554,285281116,-1889165569,-127750551,1634467795,376229701,-1609899400,-686959890,1308918612,956543938,-1486412191,-799009033,1231636301,1047427035,-1362007478,-640263460,1088359270,936918E3,-1447252397,-558129467,1202900863,817233897,-1111625188,-893730166,1404277552,615818150,-1160759803,-841546093,1423857449,601450431,-1285129682,-1000256840,1567103746,711928724,-1274298825,-1022587231,1510334235,755167117])});z("JU");y(["java.io.FilterInputStream"],"JU.InflaterInputStream", +null,function(){var b=A(function(){this.buf=this.inflater=null;this.len=0;this.eof=this.closed=!1;this.close_in=!0;this.myinflater=!1;this.b=this.byte1=null;B(this,arguments)},JU,"InflaterInputStream",java.io.FilterInputStream);L(b,function(){this.byte1=x(1,0);this.b=x(512,0)});D(b,function(a,c,b,e){K(this,JU.InflaterInputStream,[a]);this.inflater=c;this.buf=x(b,0);this.close_in=e},"java.io.InputStream,JU.Inflater,~N,~B");d(b,"readByteAsInt",function(){if(this.closed)throw new java.io.IOException("Stream closed"); +return-1==this.read(this.byte1,0,1)?-1:this.byte1[0]&255});d(b,"read",function(a,c,b){return this.readInf(a,c,b)},"~A,~N,~N");d(b,"readInf",function(a,c,b){if(this.closed)throw new java.io.IOException("Stream closed");if(null==a)throw new NullPointerException;if(0>c||0>b||b>a.length-c)throw new IndexOutOfBoundsException;if(0==b)return 0;if(this.eof)return-1;var e=0;for(this.inflater.setOutput(a,c,b);!this.eof;){0==this.inflater.avail_in&&this.fill();a=this.inflater.inflate(0);e+=this.inflater.next_out_index- +c;c=this.inflater.next_out_index;switch(a){case -3:throw new java.io.IOException(this.inflater.msg);case 1:case 2:if(this.eof=!0,2==a)return-1}if(0==this.inflater.avail_out)break}return e},"~A,~N,~N");k(b,"available",function(){if(this.closed)throw new java.io.IOException("Stream closed");return this.eof?0:1});k(b,"skip",function(a){if(0>a)throw new IllegalArgumentException("negative skip length");if(this.closed)throw new java.io.IOException("Stream closed");a=Math.min(a,2147483647);for(var c=0;c< +a;){var b=a-c;b>this.b.length&&(b=this.b.length);b=this.read(this.b,0,b);if(-1==b){this.eof=!0;break}c+=b}return c},"~N");k(b,"close",function(){this.closed||(this.myinflater&&this.inflater.end(),this.close_in&&this.$in.close(),this.closed=!0)});d(b,"fill",function(){if(this.closed)throw new java.io.IOException("Stream closed");this.len=this.$in.read(this.buf,0,this.buf.length);if(-1==this.len)if(0==this.inflater.istate.wrap&&!this.inflater.finished())this.buf[0]=0,this.len=1;else{if(-1!=this.inflater.istate.was)throw new java.io.IOException("footer is not found"); +throw new java.io.EOFException("Unexpected end of ZLIB input stream");}this.inflater.setInput(this.buf,0,this.len,!0)});k(b,"markSupported",function(){return!1});k(b,"mark",function(){},"~N");k(b,"reset",function(){throw new java.io.IOException("mark/reset not supported");});d(b,"getTotalIn",function(){return this.inflater.getTotalIn()});d(b,"getTotalOut",function(){return this.inflater.getTotalOut()});d(b,"getAvailIn",function(){if(0>=this.inflater.avail_in)return null;var a=x(this.inflater.avail_in, +0);System.arraycopy(this.inflater.next_in,this.inflater.next_in_index,a,0,this.inflater.avail_in);return a});d(b,"readHeader",function(){var a="".getBytes();this.inflater.setInput(a,0,0,!1);this.inflater.setOutput(a,0,0);a=this.inflater.inflate(0);if(this.inflater.istate.inParsingHeader()){var c=x(1,0);do{if(0>=this.$in.read(c,0,1))throw new java.io.IOException("no input");this.inflater.setInput(c,0,c.length,!1);a=this.inflater.inflate(0);if(0!=a)throw new java.io.IOException(this.inflater.msg);}while(this.inflater.istate.inParsingHeader())}}); +d(b,"getInflater",function(){return this.inflater})});z("JU");y(null,"JU.ZStream",["JU.Adler32"],function(){var b=A(function(){this.next_in=null;this.total_in=this.avail_in=this.next_in_index=0;this.next_out=null;this.total_out=this.avail_out=this.next_out_index=0;this.istate=this.dstate=this.msg=null;this.data_type=0;this.checksum=null;B(this,arguments)},JU,"ZStream",null);d(b,"setAdler32",function(){this.checksum=new JU.Adler32});d(b,"inflate",function(a){return null==this.istate?-2:this.istate.inflate(a)}, +"~N");d(b,"deflate",function(a){return null==this.dstate?-2:this.dstate.deflate(a)},"~N");d(b,"flush_pending",function(){var a=this.dstate.pending;a>this.avail_out&&(a=this.avail_out);0!=a&&(System.arraycopy(this.dstate.pending_buf,this.dstate.pending_out,this.next_out,this.next_out_index,a),this.next_out_index+=a,this.dstate.pending_out+=a,this.total_out+=a,this.avail_out-=a,this.dstate.pending-=a,0==this.dstate.pending&&(this.dstate.pending_out=0))});d(b,"read_buf",function(a,c,b){var e=this.avail_in; +e>b&&(e=b);if(0==e)return 0;this.avail_in-=e;0!=this.dstate.wrap&&this.checksum.update(this.next_in,this.next_in_index,e);System.arraycopy(this.next_in,this.next_in_index,a,c,e);this.next_in_index+=e;this.total_in+=e;return e},"~A,~N,~N");d(b,"getAdler",function(){return this.checksum.getValue()});d(b,"free",function(){this.msg=this.next_out=this.next_in=null});d(b,"setOutput",function(a,c,b){this.next_out=a;this.next_out_index=c;this.avail_out=b},"~A,~N,~N");d(b,"setInput",function(a,c,b,e){0>=b&& +e&&null!=this.next_in||(0=e?c.push(e):2047>=e?(c.push(192|e>>6&31),c.push(128|e&63)):65535>=e?(c.push(224|e>>12&15),c.push(128|e>>6&63),c.push(128|e&63)):c.push(63)}return Int32Array!=Array?new Int32Array(c):c},"~S")});z("JU");y(["JU.ZStream"],"JU.Inflater",["JU.Inflate"],function(){var b=F(JU,"Inflater",JU.ZStream);d(b,"init",function(a,c){this.setAdler32();0==a&&(a=15);this.istate=new JU.Inflate(this);this.istate.inflateInit(c?-a:a);return this},"~N,~B");k(b,"inflate",function(a){return null== +this.istate?-2:this.istate.inflate(a)},"~N");k(b,"end",function(){return null==this.istate?-2:this.istate.inflateEnd()});d(b,"sync",function(){return null==this.istate?-2:this.istate.inflateSync()});d(b,"syncPoint",function(){return null==this.istate?-2:this.istate.inflateSyncPoint()});d(b,"setDictionary",function(a,c){return null==this.istate?-2:this.istate.inflateSetDictionary(a,c)},"~A,~N");k(b,"finished",function(){return 12==this.istate.mode});d(b,"reset",function(){this.avail_in=0;null!=this.istate&& +this.istate.reset()})});z("JU");y(["JU.Checksum"],"JU.Adler32",null,function(){var b=A(function(){this.s1=1;this.s2=0;this.b1=null;B(this,arguments)},JU,"Adler32",null,JU.Checksum);L(b,function(){this.b1=x(1,0)});k(b,"resetLong",function(a){this.s1=a&65535;this.s2=a>>16&65535},"~N");k(b,"reset",function(){this.s1=1;this.s2=0});k(b,"getValue",function(){return this.s2<<16|this.s1});k(b,"update",function(a,c,b){if(1==b)this.s1+=a[c++]&255,this.s2+=this.s1;else{for(var e=R(b/5552),g=b%5552;0b?JU.Tree._dist_code[b]:JU.Tree._dist_code[256+(b>>>7)]},"~N");d(l,"gen_bitlen", +function(b){var a=this.dyn_tree,c=this.stat_desc.static_tree,m=this.stat_desc.extra_bits,e=this.stat_desc.extra_base,g=this.stat_desc.max_length,h,f,d,C,v,q=0;for(d=0;15>=d;d++)b.bl_count[d]=0;a[2*b.heap[b.heap_max]+1]=0;for(h=b.heap_max+1;573>h;h++)f=b.heap[h],d=a[2*a[2*f+1]+1]+1,d>g&&(d=g,q++),a[2*f+1]=d,f>this.max_code||(b.bl_count[d]++,C=0,f>=e&&(C=m[f-e]),v=a[2*f],b.opt_len+=v*(d+C),null!=c&&(b.static_len+=v*(c[2*f+1]+C)));if(0!=q){do{for(d=g-1;0==b.bl_count[d];)d--;b.bl_count[d]--;b.bl_count[d+ +1]+=2;b.bl_count[g]--;q-=2}while(0this.max_code||(a[2*c+1]!=d&&(b.opt_len+=(d-a[2*c+1])*a[2*c],a[2*c+1]=d),f--)}},"JU.Deflate");d(l,"build_tree",function(b){var a=this.dyn_tree,c=this.stat_desc.static_tree,m=this.stat_desc.elems,e,g=-1,d;b.heap_len=0;b.heap_max=573;for(e=0;eb.heap_len;)d=b.heap[++b.heap_len]=2>g?++g:0,a[2*d]=1,b.depth[d]=0,b.opt_len--,null!=c&& +(b.static_len-=c[2*d+1]);this.max_code=g;for(e=R(b.heap_len/2);1<=e;e--)b.pqdownheap(a,e);d=m;do e=b.heap[1],b.heap[1]=b.heap[b.heap_len--],b.pqdownheap(a,1),c=b.heap[1],b.heap[--b.heap_max]=e,b.heap[--b.heap_max]=c,a[2*d]=a[2*e]+a[2*c],b.depth[d]=Math.max(b.depth[e],b.depth[c])+1,a[2*e+1]=a[2*c+1]=d,b.heap[1]=d++,b.pqdownheap(a,1);while(2<=b.heap_len);b.heap[--b.heap_max]=b.heap[1];this.gen_bitlen(b);JU.Tree.gen_codes(a,g,b.bl_count)},"JU.Deflate");l.gen_codes=d(l,"gen_codes",function(b,a,c){var m= +0,e;JU.Tree.next_code[0]=0;for(e=1;15>=e;e++)JU.Tree.next_code[e]=m=m+c[e-1]<<1;for(c=0;c<=a;c++)m=b[2*c+1],0!=m&&(b[2*c]=JU.Tree.bi_reverse(JU.Tree.next_code[m]++,m))},"~A,~N,~A");l.bi_reverse=d(l,"bi_reverse",function(b,a){var c=0;do c|=b&1,b>>>=1,c<<=1;while(0<--a);return c>>>1},"~N,~N");l.extra_lbits=u(-1,[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);l.extra_dbits=u(-1,[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);l.extra_blbits=u(-1,[0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,2,3,7]);l.bl_order=x(-1,[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);l._dist_code=x(-1,[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14, +14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29]);l._length_code=x(-1,[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28]);l.base_length=u(-1,[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);l.base_dist=u(-1, +[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]);l.next_code=O(16,0);z("JU");y(["JU.Tree"],"JU.StaticTree",null,function(){var b=A(function(){this.extra_bits=this.static_tree=null;this.max_length=this.elems=this.extra_base=0;B(this,arguments)},JU,"StaticTree",null);D(b,function(a,c,b,e,g){this.static_tree=a;this.extra_bits=c;this.extra_base=b;this.elems=e;this.max_length=g},"~A,~A,~N,~N,~N");b.static_ltree=O(-1,[12,8,140,8,76,8,204, +8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177, +8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9, +219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56, +7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8]);b.static_dtree=O(-1,[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5]);b.static_l_desc=new JU.StaticTree(JU.StaticTree.static_ltree,JU.Tree.extra_lbits,257,286,15);b.static_d_desc=new JU.StaticTree(JU.StaticTree.static_dtree,JU.Tree.extra_dbits,0,30,15);b.static_bl_desc=new JU.StaticTree(null,JU.Tree.extra_blbits, +0,19,7)});z("JU");y(null,"JU.GZIPHeader",["JU.ZStream"],function(){var b=A(function(){this.fhcrc=this.text=!1;this.xflags=this.time=0;this.os=255;this.comment=this.name=this.extra=null;this.crc=this.hcrc=0;this.done=!1;this.mtime=0;B(this,arguments)},JU,"GZIPHeader",null,Cloneable);d(b,"setModifiedTime",function(a){this.mtime=a},"~N");d(b,"getModifiedTime",function(){return this.mtime});d(b,"setOS",function(a){if(0<=a&&13>=a||255==a)this.os=a;else throw new IllegalArgumentException("os: "+a);},"~N"); +d(b,"getOS",function(){return this.os});d(b,"setName",function(a){this.name=JU.ZStream.getBytes(a)},"~S");d(b,"getName",function(){if(null==this.name)return"";try{return String.instantialize(this.name,"ISO-8859-1")}catch(a){if(t(a,"java.io.UnsupportedEncodingException"))throw new InternalError(a.toString());throw a;}});d(b,"setComment",function(a){this.comment=JU.ZStream.getBytes(a)},"~S");d(b,"getComment",function(){if(null==this.comment)return"";try{return String.instantialize(this.comment,"ISO-8859-1")}catch(a){if(t(a, +"java.io.UnsupportedEncodingException"))throw new InternalError(a.toString());throw a;}});d(b,"setCRC",function(a){this.crc=a},"~N");d(b,"getCRC",function(){return this.crc});d(b,"put",function(a){var c=0;this.text&&(c|=1);this.fhcrc&&(c|=2);null!=this.extra&&(c|=4);null!=this.name&&(c|=8);null!=this.comment&&(c|=16);var b=0;1==a.level?b|=4:9==a.level&&(b|=2);a.put_short(35615);a.put_byteB(8);a.put_byteB(c);a.put_byteB(this.mtime);a.put_byteB(this.mtime>>8);a.put_byteB(this.mtime>>16);a.put_byteB(this.mtime>> +24);a.put_byteB(b);a.put_byteB(this.os);null!=this.extra&&(a.put_byteB(this.extra.length),a.put_byteB(this.extra.length>>8),a.put_byte(this.extra,0,this.extra.length));null!=this.name&&(a.put_byte(this.name,0,this.name.length),a.put_byteB(0));null!=this.comment&&(a.put_byte(this.comment,0,this.comment.length),a.put_byteB(0))},"JU.Deflate");d(b,"clone",function(){var a=P(this,JU.GZIPHeader,"clone",[]),c;null!=a.extra&&(c=x(a.extra.length,0),System.arraycopy(a.extra,0,c,0,c.length),a.extra=c);null!= +a.name&&(c=x(a.name.length,0),System.arraycopy(a.name,0,c,0,c.length),a.name=c);null!=a.comment&&(c=x(a.comment.length,0),System.arraycopy(a.comment,0,c,0,c.length),a.comment=c);return a})});z("JU");y(["java.lang.Exception"],"JU.Inflate",["JU.Adler32","$.CRC32","$.GZIPHeader","$.InfBlocks","java.io.ByteArrayOutputStream"],function(){var b=A(function(){this.method=this.mode=0;this.was=-1;this.wbits=this.wrap=this.marker=this.need=0;this.z=this.blocks=null;this.flags=0;this.need_bytes=-1;this.gheader= +this.crcbuf=null;U("JU.Inflate.Return")||JU.Inflate.$Inflate$Return$();this.tmp_string=null;B(this,arguments)},JU,"Inflate",null);L(b,function(){this.crcbuf=x(4,0)});D(b,function(a){this.z=a},"JU.ZStream");d(b,"reset",function(){this.inflateReset()});d(b,"inflateReset",function(){if(null==this.z)return-2;this.z.total_in=this.z.total_out=0;this.z.msg=null;this.mode=14;this.need_bytes=-1;this.blocks.reset();return 0});d(b,"inflateEnd",function(){null!=this.blocks&&this.blocks.free();return 0});d(b, +"inflateInit",function(a){this.blocks=this.z.msg=null;this.wrap=0;0>a?a=-a:(this.wrap=(a>>4)+1,48>a&&(a&=15));if(8>a||15>8&255;if(0==(this.wrap&1)||0!=((this.method<<8)+b)%31){this.mode=13;this.z.msg="incorrect header check";break}if(8!=(this.method&15)){this.mode=13;this.z.msg="unknown compression method";break}if((this.method>> +4)+8>this.wbits){this.mode=13;this.z.msg="invalid window size";break}this.z.checksum=new JU.Adler32;if(0==(b&32)){this.mode=7;break}this.mode=2;case 2:if(0==this.z.avail_in)return c;c=a;this.z.avail_in--;this.z.total_in++;this.need=(this.z.next_in[this.z.next_in_index++]&255)<<24&4278190080;this.mode=3;case 3:if(0==this.z.avail_in)return c;c=a;this.z.avail_in--;this.z.total_in++;this.need+=(this.z.next_in[this.z.next_in_index++]&255)<<16&16711680;this.mode=4;case 4:if(0==this.z.avail_in)return c; +c=a;this.z.avail_in--;this.z.total_in++;this.need+=(this.z.next_in[this.z.next_in_index++]&255)<<8&65280;this.mode=5;case 5:if(0==this.z.avail_in)return c;this.z.avail_in--;this.z.total_in++;this.need+=this.z.next_in[this.z.next_in_index++]&255;this.z.checksum.resetLong(this.need);this.mode=6;return 2;case 6:return this.mode=13,this.z.msg="need dictionary",this.marker=0,-2;case 7:c=this.blocks.proc(c);if(-3==c){this.mode=13;this.marker=0;break}0==c&&(c=a);if(1!=c)return c;c=a;this.was=this.z.checksum.getValue(); +this.blocks.reset();if(0==this.wrap){this.mode=12;break}this.mode=8;case 8:if(0==this.z.avail_in)return c;c=a;this.z.avail_in--;this.z.total_in++;this.need=(this.z.next_in[this.z.next_in_index++]&255)<<24&4278190080;this.mode=9;case 9:if(0==this.z.avail_in)return c;c=a;this.z.avail_in--;this.z.total_in++;this.need+=(this.z.next_in[this.z.next_in_index++]&255)<<16&16711680;this.mode=10;case 10:if(0==this.z.avail_in)return c;c=a;this.z.avail_in--;this.z.total_in++;this.need+=(this.z.next_in[this.z.next_in_index++]& +255)<<8&65280;this.mode=11;case 11:if(0==this.z.avail_in)return c;c=a;this.z.avail_in--;this.z.total_in++;this.need+=this.z.next_in[this.z.next_in_index++]&255;0!=this.flags&&(this.need=((this.need&4278190080)>>24|(this.need&16711680)>>8|(this.need&65280)<<8|(this.need&65535)<<24)&4294967295);this.was!=this.need?this.z.msg="incorrect data check":0!=this.flags&&null!=this.gheader&&(this.gheader.crc=this.need);this.mode=15;case 15:if(0!=this.wrap&&0!=this.flags){try{c=this.readBytes(4,c,a)}catch(g){if(t(g, +"JU.Inflate.Return"))return g.r;throw g;}if(null!=this.z.msg&&this.z.msg.equals("incorrect data check")){this.mode=13;this.marker=5;break}if(this.need!=(this.z.total_out&4294967295)){this.z.msg="incorrect length check";this.mode=13;break}this.z.msg=null}else if(null!=this.z.msg&&this.z.msg.equals("incorrect data check")){this.mode=13;this.marker=5;break}this.mode=12;case 12:return 1;case 13:return-3;case 23:try{c=this.readBytes(2,c,a)}catch(d){if(t(d,"JU.Inflate.Return"))return d.r;throw d;}this.flags= +this.need&65535;if(8!=(this.flags&255)){this.z.msg="unknown compression method";this.mode=13;break}if(0!=(this.flags&57344)){this.z.msg="unknown header flags set";this.mode=13;break}0!=(this.flags&512)&&this.checksum(2,this.need);this.mode=16;case 16:try{c=this.readBytes(4,c,a)}catch(f){if(t(f,"JU.Inflate.Return"))return f.r;throw f;}null!=this.gheader&&(this.gheader.time=this.need);0!=(this.flags&512)&&this.checksum(4,this.need);this.mode=17;case 17:try{c=this.readBytes(2,c,a)}catch(j){if(t(j,"JU.Inflate.Return"))return j.r; +throw j;}null!=this.gheader&&(this.gheader.xflags=this.need&255,this.gheader.os=this.need>>8&255);0!=(this.flags&512)&&this.checksum(2,this.need);this.mode=18;case 18:if(0!=(this.flags&1024)){try{c=this.readBytes(2,c,a)}catch(C){if(t(C,"JU.Inflate.Return"))return C.r;throw C;}null!=this.gheader&&(this.gheader.extra=x(this.need&65535,0));0!=(this.flags&512)&&this.checksum(2,this.need)}else null!=this.gheader&&(this.gheader.extra=null);this.mode=19;case 19:if(0!=(this.flags&1024))try{if(c=this.readBytes(c, +a),null!=this.gheader){var v=this.tmp_string.toByteArray();this.tmp_string=null;if(v.length==this.gheader.extra.length)System.arraycopy(v,0,this.gheader.extra,0,v.length);else{this.z.msg="bad extra field length";this.mode=13;break}}}catch(q){if(t(q,"JU.Inflate.Return"))return q.r;throw q;}else null!=this.gheader&&(this.gheader.extra=null);this.mode=20;case 20:if(0!=(this.flags&2048))try{c=this.readString(c,a),null!=this.gheader&&(this.gheader.name=this.tmp_string.toByteArray()),this.tmp_string=null}catch(r){if(t(r, +"JU.Inflate.Return"))return r.r;throw r;}else null!=this.gheader&&(this.gheader.name=null);this.mode=21;case 21:if(0!=(this.flags&4096))try{c=this.readString(c,a),null!=this.gheader&&(this.gheader.comment=this.tmp_string.toByteArray()),this.tmp_string=null}catch(p){if(t(p,"JU.Inflate.Return"))return p.r;throw p;}else null!=this.gheader&&(this.gheader.comment=null);this.mode=22;case 22:if(0!=(this.flags&512)){try{c=this.readBytes(2,c,a)}catch(n){if(t(n,"JU.Inflate.Return"))return n.r;throw n;}null!= +this.gheader&&(this.gheader.hcrc=this.need&65535);if(this.need!=(this.z.checksum.getValue()&65535)){this.mode=13;this.z.msg="header crc mismatch";this.marker=5;break}}this.z.checksum=new JU.CRC32;this.mode=7;break;default:return-2}},"~N");d(b,"inflateSetDictionary",function(a,c){if(null==this.z||6!=this.mode&&0!=this.wrap)return-2;var b=0,e=c;if(6==this.mode){var g=this.z.checksum.getValue();this.z.checksum.reset();this.z.checksum.update(a,0,c);if(this.z.checksum.getValue()!=g)return-3}this.z.checksum.reset(); +e>=1<b;)this.z.next_in[c]==JU.Inflate.mark[b]?b++:b=0!=this.z.next_in[c]?0:4-b,c++,a--;this.z.total_in+=c-this.z.next_in_index;this.z.next_in_index=c;this.z.avail_in=a;this.marker=b;if(4!=b)return-3;a=this.z.total_in; +c=this.z.total_out;this.inflateReset();this.z.total_in=a;this.z.total_out=c;this.mode=7;return 0});d(b,"inflateSyncPoint",function(){return null==this.z||null==this.blocks?-2:this.blocks.sync_point()});d(b,"readBytes",function(a,c,b){-1==this.need_bytes&&(this.need_bytes=a,this.need=0);for(;0>=8;this.z.checksum.update(this.crcbuf, +0,a)},"~N,~N");d(b,"getGZIPHeader",function(){return this.gheader});d(b,"inParsingHeader",function(){switch(this.mode){case 14:case 2:case 3:case 4:case 5:case 23:case 16:case 17:case 18:case 19:case 20:case 21:case 22:return!0;default:return!1}});b.$Inflate$Return$=function(){var a=A(function(){V(this,arguments);this.r=0;B(this,arguments)},JU.Inflate,"Return",Exception);D(a,function(a){K(this,JU.Inflate.Return,[]);this.r=a},"~N")};b.mark=x(-1,[0,0,255,255])});z("JU");l=A(function(){this.x=this.u= +this.r=this.c=this.v=this.hn=null;B(this,arguments)},JU,"InfTree",null);d(l,"huft_build",function(b,a,c,m,e,g,d,f,j,C,v){var q,r,p,n,G,k,l,s,w,t;l=0;p=c;do this.c[b[a+l]]++,l++,p--;while(0!=p);if(this.c[0]==c)return d[0]=-1,f[0]=0;k=f[0];for(n=1;15>=n&&0==this.c[n];n++);G=n;kp&&(k=p);f[0]=k;for(f=1<(f-=this.c[n]))return-3;if(0>(f-=this.c[p]))return-3;this.c[p]+=f;this.x[1]=n=0;l=1;for(s=2;0!=--p;)this.x[s]=n+=this.c[l],s++,l++; +l=p=0;do{if(0!=(n=b[a+l]))v[this.x[n]++]=p;l++}while(++pw+k;){a++;w+=k;t=r-w;t=t>k?k:t;if((q=1<<(n=G-w))>b+1)if(q-=b+1,s=G,n>>w-k,this.r[2]=s-this.u[a-1]-n,System.arraycopy(this.r,0,j,3*(this.u[a-1]+n),3)):d[0]=s}this.r[1]=G-w;l>=c?this.r[0]=192: +v[l]v[l]?0:96,this.r[2]=v[l++]):(this.r[0]=g[v[l]-m]+16+64,this.r[2]=e[v[l++]-m]);q=1<>>w;n>>=1)p^=n;p^=n;for(n=(1<a;a++)this.c[a]=0;for(a=0;3>a;a++)this.r[a]=0;System.arraycopy(this.c,0,this.u,0,15);System.arraycopy(this.c,0,this.x,0,16)},"~N");l.fixed_tl=u(-1,[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80, +7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22, +192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0, +8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206, +81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0, +8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6, +0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0, +9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95, +0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255]);l.fixed_td=u(-1,[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577]);l.cplens=u(-1,[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163, +195,227,258,0,0]);l.cplext=u(-1,[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112]);l.cpdist=u(-1,[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);l.cpdext=u(-1,[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);z("JU");y(["JU.InfTree"],"JU.InfBlocks",["JU.InfCodes"],function(){var b=A(function(){this.index=this.table=this.left=this.mode=0;this.codes=this.tdi=this.tli=this.td=this.tl=this.bd=this.bl= +this.tb=this.bb=this.blens=null;this.bitb=this.bitk=this.last=0;this.window=this.hufts=null;this.write=this.read=this.end=0;this.check=!1;this.z=this.inftree=null;B(this,arguments)},JU,"InfBlocks",null);L(b,function(){this.bb=u(1,0);this.tb=u(1,0);this.bl=u(1,0);this.bd=u(1,0);this.tli=u(1,0);this.tdi=u(1,0);this.inftree=new JU.InfTree});D(b,function(a,c){this.z=a;this.codes=new JU.InfCodes(this.z,this);this.hufts=u(4320,0);this.window=x(c,0);this.end=c;this.check=0==a.istate.wrap?!1:!0;this.mode= +0;this.tl=E(1,null);this.td=E(1,null);this.reset()},"JU.ZStream,~N");d(b,"reset",function(){6==this.mode&&this.codes.free(this.z);this.read=this.write=this.bitb=this.bitk=this.mode=0;this.check&&this.z.checksum.reset()});d(b,"proc",function(a){var c,b,e,g,d,f,j;g=this.z.next_in_index;d=this.z.avail_in;b=this.bitb;e=this.bitk;f=this.write;for(j=fe;){if(0!=d)a=0;else return this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+= +g-this.z.next_in_index,this.z.next_in_index=g,this.write=f,this.inflate_flush(a);d--;b|=(this.z.next_in[g++]&255)<>>1){case 0:b>>>=3;e-=3;c=e&7;b>>>=c;e-=c;this.mode=1;break;case 1:JU.InfTree.inflate_trees_fixed(this.bl,this.bd,this.tl,this.td,this.z);this.codes.init(this.bl[0],this.bd[0],this.tl[0],0,this.td[0],0);b>>>=3;e-=3;this.mode=6;break;case 2:b>>>=3;e-=3;this.mode=3;break;case 3:return b>>>=3,e-=3,this.mode=9,this.z.msg="invalid block type",a=-3,this.bitb= +b,this.bitk=e,this.z.avail_in=d,this.z.total_in+=g-this.z.next_in_index,this.z.next_in_index=g,this.write=f,this.inflate_flush(a)}break;case 1:for(;32>e;){if(0!=d)a=0;else return this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+=g-this.z.next_in_index,this.z.next_in_index=g,this.write=f,this.inflate_flush(a);d--;b|=(this.z.next_in[g++]&255)<>>16&65535)!=(b&65535))return this.mode=9,this.z.msg="invalid stored block lengths",a=-3,this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+= +g-this.z.next_in_index,this.z.next_in_index=g,this.write=f,this.inflate_flush(a);this.left=b&65535;b=e=0;this.mode=0!=this.left?2:0!=this.last?7:0;break;case 2:if(0==d||0==j&&(f==this.end&&0!=this.read&&(f=0,j=fd&&(c=d);c>j&&(c=j);System.arraycopy(this.z.next_in,g,this.window,f,c);g+=c;d-=c;f+=c;j-=c;if(0!=(this.left-=c))break;this.mode=0!=this.last?7:0;break;case 3:for(;14>e;){if(0!=d)a=0;else return this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+=g-this.z.next_in_index,this.z.next_in_index=g,this.write=f,this.inflate_flush(a);d--;b|=(this.z.next_in[g++]&255)<>5&31))return this.mode= +9,this.z.msg="too many length or distance symbols",a=-3,this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+=g-this.z.next_in_index,this.z.next_in_index=g,this.write=f,this.inflate_flush(a);c=258+(c&31)+(c>>5&31);if(null==this.blens||this.blens.length>>=14;e-=14;this.index=0;this.mode=4;case 4:for(;this.index<4+(this.table>>>10);){for(;3>e;){if(0!=d)a=0;else return this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+=g-this.z.next_in_index, +this.z.next_in_index=g,this.write=f,this.inflate_flush(a);d--;b|=(this.z.next_in[g++]&255)<>>=3;e-=3}for(;19>this.index;)this.blens[JU.InfBlocks.border[this.index++]]=0;this.bb[0]=7;c=this.inftree.inflate_trees_bits(this.blens,this.bb,this.tb,this.hufts,this.z);if(0!=c)return a=c,-3==a&&(this.blens=null,this.mode=9),this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+=g-this.z.next_in_index,this.z.next_in_index=g,this.write=f,this.inflate_flush(a); +this.index=0;this.mode=5;case 5:for(;;){c=this.table;if(!(this.index<258+(c&31)+(c>>5&31)))break;var k,v;for(c=this.bb[0];ev)b>>>=c,e-=c,this.blens[this.index++]= +v;else{j=18==v?7:v-14;for(k=18==v?11:3;e>>=c;e-=c;k+=b&JU.InfBlocks.inflate_mask[j];b>>>=j;e-=j;j=this.index;c=this.table;if(j+k>258+(c&31)+(c>>5&31)||16==v&&1>j)return this.blens=null,this.mode=9,this.z.msg="invalid bit length repeat",a=-3,this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+= +g-this.z.next_in_index,this.z.next_in_index=g,this.write=f,this.inflate_flush(a);v=16==v?this.blens[j-1]:0;do this.blens[j++]=v;while(0!=--k);this.index=j}}this.tb[0]=-1;this.bl[0]=9;this.bd[0]=6;c=this.table;c=this.inftree.inflate_trees_dynamic(257+(c&31),1+(c>>5&31),this.blens,this.bl,this.bd,this.tli,this.tdi,this.hufts,this.z);if(0!=c)return-3==c&&(this.blens=null,this.mode=9),a=c,this.bitb=b,this.bitk=e,this.z.avail_in=d,this.z.total_in+=g-this.z.next_in_index,this.z.next_in_index=g,this.write= +f,this.inflate_flush(a);this.codes.init(this.bl[0],this.bd[0],this.hufts,this.tli[0],this.hufts,this.tdi[0]);this.mode=6;case 6:this.bitb=b;this.bitk=e;this.z.avail_in=d;this.z.total_in+=g-this.z.next_in_index;this.z.next_in_index=g;this.write=f;if(1!=(a=this.codes.proc(a)))return this.inflate_flush(a);a=0;this.codes.free(this.z);g=this.z.next_in_index;d=this.z.avail_in;b=this.bitb;e=this.bitk;f=this.write;j=fthis.z.avail_out&&(b=this.z.avail_out);0!=b&&-5==a&&(a=0);this.z.avail_out-=b;this.z.total_out+=b;this.check&&0this.z.avail_out&&(b=this.z.avail_out),0!=b&&-5==a&&(a=0),this.z.avail_out-=b,this.z.total_out+=b,this.check&&0>>=this.tree[a+1];e-=this.tree[a+1];c=this.tree[a];if(0==c){this.lit=this.tree[a+2];this.mode=6;break}if(0!=(c&16)){this.get=c&15;this.len=this.tree[a+2];this.mode=2;break}if(0==(c&64)){this.need=c;this.tree_index=R(a/3)+this.tree[a+2];break}if(0!=(c&32)){this.mode=7; +break}this.mode=9;this.z.msg="invalid literal/length code";b=-3;this.s.bitb=d;this.s.bitk=e;this.z.avail_in=h;this.z.total_in+=g-this.z.next_in_index;this.z.next_in_index=g;this.s.write=f;return this.s.inflate_flush(b);case 2:for(a=this.get;e>= +a;e-=a;this.need=this.dbits;this.tree=this.dtree;this.tree_index=this.dtree_index;this.mode=3;case 3:for(a=this.need;e>=this.tree[a+1];e-=this.tree[a+1];c=this.tree[a];if(0!=(c&16)){this.get=c&15;this.dist=this.tree[a+2];this.mode= +4;break}if(0==(c&64)){this.need=c;this.tree_index=R(a/3)+this.tree[a+2];break}this.mode=9;this.z.msg="invalid distance code";b=-3;this.s.bitb=d;this.s.bitk=e;this.z.avail_in=h;this.z.total_in+=g-this.z.next_in_index;this.z.next_in_index=g;this.s.write=f;return this.s.inflate_flush(b);case 4:for(a=this.get;e>=a;e-=a;this.mode=5;case 5:for(a=f-this.dist;0>a;)a+=this.s.end;for(;0!=this.len;){if(0==j&&(f==this.s.end&&0!=this.s.read&&(f=0,j=fr;)n--,q|=(f.next_in[p++]&255)<>=k[w+1],r-=k[w+1],h.window[l++]=k[w+2],t--;else{do{q>>=k[w+1];r-=k[w+1];if(0!=(a&16)){a&=15;s=k[w+2]+(q&JU.InfCodes.inflate_mask[a]);q>>=a;for(r-=a;15>r;)n--,q|=(f.next_in[p++]&255)<>=k[w+1],r-=k[w+1],0!=(a&16)){for(a&=15;r>=a;r-=a;t-=s;if(l>=j)j=l-j,0l-j?(h.window[l++]=h.window[j++],h.window[l++]=h.window[j++]):(System.arraycopy(h.window,j,h.window,l,2),l+=2,j+=2),s-=2;else{j=l-j;do j+=h.end;while(0>j);a=h.end-j;if(s>a){s-=a;if(0l-j){do h.window[l++]=h.window[j++];while(0!=--a)}else System.arraycopy(h.window,j,h.window,l,a),l+=a;j=0}}if(0< +l-j&&s>l-j){do h.window[l++]=h.window[j++];while(0!=--s)}else System.arraycopy(h.window,j,h.window,l,s),l+=s;break}else if(0==(a&64))j+=k[w+2],j+=q&JU.InfCodes.inflate_mask[a],w=3*(v+j),a=k[w];else return f.msg="invalid distance code",s=f.avail_in-n,s=r>>3>3:s,n+=s,p-=s,r-=s<<3,h.bitb=q,h.bitk=r,f.avail_in=n,f.total_in+=p-f.next_in_index,f.next_in_index=p,h.write=l,-3;while(1);break}if(0==(a&64)){if(j+=k[w+2],j+=q&JU.InfCodes.inflate_mask[a],w=3*(v+j),0==(a=k[w])){q>>=k[w+1];r-=k[w+1];h.window[l++]= +k[w+2];t--;break}}else{if(0!=(a&32))return s=f.avail_in-n,s=r>>3>3:s,n+=s,p-=s,r-=s<<3,h.bitb=q,h.bitk=r,f.avail_in=n,f.total_in+=p-f.next_in_index,f.next_in_index=p,h.write=l,1;f.msg="invalid literal/length code";s=f.avail_in-n;s=r>>3>3:s;n+=s;p-=s;r-=s<<3;h.bitb=q;h.bitk=r;f.avail_in=n;f.total_in+=p-f.next_in_index;f.next_in_index=p;h.write=l;return-3}}while(1)}}while(258<=t&&10<=n);s=f.avail_in-n;s=r>>3>3:s;p-=s;h.bitb=q;h.bitk=r-(s<<3);f.avail_in=n+s;f.total_in+=p-f.next_in_index; +f.next_in_index=p;h.write=l;return 0},"~N,~N,~A,~N,~A,~N,JU.InfBlocks,JU.ZStream");l.inflate_mask=u(-1,[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535]);z("J.io");y(null,"J.io.JmolUtil","java.net.URL java.util.Hashtable JU.AU $.Lst $.OC $.PT $.Rdr J.adapter.smarter.AtomSetCollection J.api.Interface JU.Logger JV.FileManager $.Viewer".split(" "),function(){var b=F(J.io,"JmolUtil",null);d(b,"getImage",function(a,b,d,e){var g=null,h=null,f=a.apiPlatform,j=!1,l=""+b;if("string"==typeof b){var k= +l.toUpperCase().endsWith("BMP");if(e||0=k.length?g.get("SubFileName"):k[h];if(null!=q&&(q.startsWith("/")||q.startsWith("\\")))q=q.substring(1);var r=0;null==q&&g.containsKey("modelNumber")&&(r=g.get("modelNumber").intValue(),0=r||n.size()b.indexOf("|")&&(d=h)}if(e.containsKey(d))return JU.Logger.info("FileManager using memory cache "+d),a.pngjCache.get(d);if(!g||!this.clearAndCachePngjFile(a,E(-1,[b,null])))return null;JU.Logger.info("FileManager using memory cache "+ +d);return e.get(d)},"JV.FileManager,~S");d(b,"clearAndCachePngjFile",function(a,b){a.pngjCache=new java.util.Hashtable;if(null==b||null==b[0])return!1;b[0]=JU.Rdr.getZipRoot(b[0]);var d=this.shortSceneFilename(b[0]),e=a.pngjCache;try{b[1]=a.vwr.getJzt().cacheZipContents(JU.Rdr.getPngZipStream(a.getBufferedInputStreamOrErrorMessageFromName(b[0],null,!1,!1,null,!1,!0),!0),d,e,!1)}catch(g){if(t(g,Exception))return!1;throw g;}if(null==b[1])return!1;var h=b[1].getBytes();e.put(a.getCanonicalName(b[0]), +h);0<=d.indexOf("_scene_")&&(e.put(this.shortSceneFilename(b[0]),h),h=e.remove(d+"|state.spt"),null!=h&&e.put(this.shortSceneFilename(b[0]+"|state.spt"),h));return!0},"JV.FileManager,~A");d(b,"shortSceneFilename",function(a){var b=a.indexOf("_scene_")+7;if(7>b)return a;var d="";if(a.endsWith("|state.spt")){d=a.indexOf(".",b);if(0>d)return a;d=a.substring(b,d)}var e=a.lastIndexOf("|");return a.substring(0,b)+d+(0a.length?null: +a[1];return null==b||2!=a.length||!b.endsWith(".spardir/")?null:E(-1,["",JU.PT.trim(b,"/")])},"~A");d(b,"isSpartanZip",function(a){for(var b=1;bWpVL1OBkAA2rhoq?{ZstU?dKX2?CcoeYNTht z%*epNp!iS9xhOTUBsE2$JhLQ2Au%hlA}2pFMK3ciEuTU0CkrPRP?Zi41C177U|=@p z*mdWh!70yd;baag4#_#}elyZIT{jvY+9fjc;5NO4BZmqv=tfIe-d)CSDZ#_;mHpfU zXbYw}CLnYCdK49;TX=SFc-G}o=oA=|U?{1O;Nu!CwW3C5Yw7*Bi4yD$3fCnbwK+>} zQdQ9s!e)>e$1Wpf?Ng2?CY+fPrq9-zEW`Ij((j|EQ{s%(1u`GF&TQT*b8Lk+Q{-Fm zKa9kofG=$fH(vI3Xq}WJ+txPPvRoC(ZMx z90Zu!^ zh)hVBy^WEV<&cBGY{P~_*UnAEZ45BxSEo8%nWK4Kj)UW{Lf`R1J{CiRm8UkW3y?Sj bjIOX-OPLf(lO&qvMGH<~V6X-y954U?mkHYU literal 0 HcmV?d00001 diff --git a/config/plugins/visualizations/jmol/static/j2s/img/cursor_wait.gif b/config/plugins/visualizations/jmol/static/j2s/img/cursor_wait.gif new file mode 100755 index 0000000000000000000000000000000000000000..36fe3109715652e3e7cadd7406f22dcae5c950c3 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q9|#!!|2y>WpVL1OBkAA2rhoq?{ZstU?dKX2?CcoeYNTht z%*epNp!iS9xhOTUBsE2$JhLQ2Au%hlA}2pFMK3ciEuTU0CkrPRP?Zi41C177U|=@p z*mdWh!70yd;baag4#_#}elyZIT{jvY+9fjc;5NO4BZmqv=tfIe-d)CSDZ#_;mHpfU zXbYw}CLnYCdK49;TX=SFc-G}o=oA=|U?{1O;Nu!CwW3C5Yw7*Bi4yD$3fCnbwK+>} zQdQ9s!e)>e$1Wpf?Ng2?CY+fPrq9-zEW`Ij((j|EQ{s%(1u`GF&TQT*b8Lk+Q{-Fm zKa9kofG=$fH(vI3Xq}WJ+txPPvRoC(ZMx z90Zu!^ zh)hVBy^WEV<&cBGY{P~_*UnAEZ45BxSEo8%nWK4Kj)UW{Lf`R1J{CiRm8UkW3y?Sj bjIOX-OPLf(lO&qvMGH<~V6X-y954U?mkHYU literal 0 HcmV?d00001 diff --git a/config/plugins/visualizations/jmol/static/j2s/img/play_make_live.jpg b/config/plugins/visualizations/jmol/static/j2s/img/play_make_live.jpg new file mode 100755 index 0000000000000000000000000000000000000000..92daafab977aec05079d30d38844d42c3121080c GIT binary patch literal 14022 zcmbWdWn5HU6h1nLgmfwmf`lL?Aw8lr!blE1bPXYmq>6x&N-6@Qq~u5p-7P5%Ll50U z56m!J-v90RaPM7buk+=ceSZ7dXRWpOe%88~xmgC#XsKzc0SE{H0D{{KaDxZPztmS% zHU#O*aXHxwyS{O7;_??45#ti@^KtQT;?mSo=hAwus?Oyv{q*q@E-ybDHy7WxT#8(> zVq`aSfR_NmJ9qwTw{rKk5s?xR-MvdhMnXbNNaLrFzTMNUq0pN5v6 zfsv7sg8Bi|eFi2v21bVeK0-iv+vhIPJtCre43y-Q4F8|yrVT(#`X3-d0&c(^S^`2^ zf}1V?=PgJgg8w0a|3wJy+>Vi$g!CR6`Rxk`8o(U_Lc%+D3I7}Q?c1TZ&jEL7iRd1R zD-+Y}*^qF1F+6?$^%p76i;8we{ZaHI30vME4EGQ`@{Y*wy?xl*V zn!1LjmVu#>G1$b^%+B7y(aG7x)yLP*KOpdJP{hZ`sOV3hW0I0nQq$7Eeb30r&C4$+ z{9ROBSyhdwsjaJT=;-X~?& z^&igvRsLsS{})`ex47=yy-RqPlcLHvekoGRoLvdm{WjzubFM95$?@1Y6eEn6? zevd~&AI)g%JxX@}k>m>R(SOkX2eSWnz&`x{LiWD_``>XP0ThG;w?B`N761fX8|1_Y z0RE4f_gfUcU)`wb0T-E;JH6hN@Z10zzRxeclR9>a!Fe4~cgHq%FG@zVPfoEndFoX?SbyS$$b2H*D4>E1HS@ zm--SHd=nxI)D!SD61<|7dx7Q=q25RJoGs%k%A&1@2#x2QXri4YAN zGtLHfw<;Fy#wPdr(;enPn?Ko0_3E(o%3QN9Isg(7&a{G-F~Q`a`Fs#e4vRNm>9rH zne4kG2fGs&xB-CcwuO7h18Hp`7E!_wWJ z(&`gGN{zOF&Py>tT8aCRXlc0wx#swz#N*ezc)vbPtYmw8tfjBDPa0wbKP=b;BUI2S zh}+KQzL2q0NNZ|Ic!P?l=4gTvCB7r^YQT~HvqRG!C{ryu59Wf zlIS_iMxe1t`WaRDUHD5he4iSP?a^1ipM`=x^m*7}Zdp0u@hlwLxB%CS{IVSKbGDA z=!;g*Aeuo};;f$u2!y?ta*nTp;@zM8#zf%w@(_HC&xeQ}><>2HBX)rDgKwbmf za&CvO7P>o)17h`e@r>e~t0R;Z2;d3xsKgVKv%tTPsDC}W0rJU5vcH{@qG@XQT~Q-XTY~Z| z3z}cDuzOu!dC67kCy3XYFq8otoncY<=bW+%Twe~Ylj8u#ilcDlE zl0Wc#cw*;@ZIMk*R#O?{R>M`*>f>dv?;o#gp1MOu7O_`BJcCX0Xu5v>2P_L~8Ihgd zqdncPVgA_O-R>ac_?2c+jSouO0KcKEM6}}x(?YBIGufh?`Yr$VHr$-ZCYe+zpqlS(c(w{6T1S^8Fy6x-C zMlv$i(*1rNm!%b2Ba2=AeJlc>bqRIsn3=oBUuVfNj-WFm7MthVfC#EzE48(MFcB0l zX3>8z$spFUywj(@Hze@?`p;za^a2M~{1Z{BNqS5bEeh8;jM(1m{H?I&(A{o7I5iYT zUCzS1N^hd!_2F5&!0F~MT;ht={FcMzn(U)8rIGODYv%RWy&EAw`K1il%88{S7!?-b z!g7|4aAKUy?+Uno{M$E;kD@%!o<{vH%jhm7`vyR*#Iwsuc`!5`nFr01;5}#(_u->C zNjl#PTMZ5!pSS;@)QtfjMXO+b3$TLAF20c+&;_hs6&M&8sn%a8e|8{yS+^mM>f^(5R`kf)(s|7WiPx3<=d?G-jPWy?cN zX!FxtOa!^#Cv{~50Dc9@9(_8qmMJ)Gl%+)b72`owsgcl;I9<= zup1uN5Z%)Vmqvr~0y&tUnQp7>XI#Et*&sY29}UEdr~p}&Bs7oU5IP=h>JO5a5;pd; z2H^tR@(FeLEugP=nB6fdP`(3fB{dPUnF`uQlcCSkMw?4jV*Hla%sC1qmQ0p&f&i3 z*2q!?QAgpuUu3$^`sW*A`r-NV8sqM#B{F61wkFnbHb&tiX44<-^#>*Hp&(CuKWyWj zs4UZ8lGSgPEdWTQ8>($t0tfe|msL|>oo%sgv?gkL4F53A!@v89>e0@rZXM{}^T}WL; zdh|YP))84TO9xUTn4;VdAHrtaUtU95u$q&nf6P!lFCs9g%iitrqcS@yy4i0aN;B53 zw}1&|d0mO7cV$3%D$nN<+6F@^apO4(!FzNKJQDY~Q$AE7gjhq>rnG~9>jzrc zeC<&#GgTAJ{Lol5RFEMnsH!PBx*P_?m`i^+{JpKZR%KB48`u=Rq}baEftaoNiqgAg zb4=S#`NpP>pUu28_6GU{Mc_?e<^DcZRNjuc3i7*469kS6(Z+cExopV({@@_&^q&AW zyR>C7w|2a6e%XiAcIC{%wjsz8{|Xc0NLFJB-u*`6h^SOb#qb{u=wiO-OA}O0x@#m{ zfWG06Np1kMDQCuPv{d) zbs5gQIYOdoEjDtIy!1D`U5=AH&_A4E$Ez#1zc!Ati;4$yBz2gf1S3v&qC`~N%Gfcz z27bRN5ATqp2qON$Mn;g@;sU`A;Tb3A5>ij!7Ko$x9nfWok^N{WC6!AE$QwtP5BX@v zs726iPWNd#<5IAy;>>q)Af}zj#f3!*-+-x(rHP2j!YE@dfLb%?+INemyo<$UY>N6b z=%Itf2xK!EQ_>=D!XuMay+}hQKrq>5lbRI&0O1b$ty@9L&Q?NzCYm=gVY+_kbg`29 zOXvffkL4q;QfJ2Js)PiF)?^l_xQwH9S)IjKSFXOlG|k95f0w#D^{_mPu9RZeM~?O? znfE<|(0~W9;HtcWw}kYY4^TpGQ=3A zTo5-A_GB}=)4xu-L#`6$yu=R1sfN9OSEeoAIY1Nx)-k_2QSY=3E!T@p0N%^bZk=`v zdygUSG0uKGy6-9Mr2UCM-af%(hS86QD`Gps@{KGbT79qnNDV|97>%bTpY@-azYo)~ z8>KdVi1)}H58Ogr=q87yPxb96_rW`T;wlRaVzXI-g<*dG@X`HMET-jjOvUEF_A}Kh zft)6TDKcoC%9CC)VqF(#S1Yvj(^w$&3h!ioN)Nl8)fX54glI}8KR#1}J!9T45!d@I zh}npa5!O#pEZN5{Y;~n7Vk!JqxnqxOkCikrBS*Y=u@Jopzi;_Zou?d1C4W*Gw#A=l z$+n-c-S6AU0cy=*+=PT+M0;~00^Zfkk zH$7sX?!@3fb@yaLK1Pv6eHIG0Dm>v893S$U6hCWd27>C@iGD8|BkHzIjk8Mh`H>Qk zdsgZ*dJ|2&wB^vT5R&CqVY`VlfvU%y%7o#7y+OrL5>NOm>Zry0__+rBSfkFA@&2cO z36H$4Nlva<&f0`fUbly;?e;5Jc*?Tkq*cx-8PvfpR1VCVbWpzNqs!4Y=@2*fjSO!jZH@GNLeKhu{?>YH0MHA%A#N&*=iS|-4t zP!E97Q_gdB#y!3E3$POSLB^?WU&kMGiAF$+>9@7yzkIc2A%Z`t(-3xb4xEp)TCH3m zO8$6-P-3Cc1ZJ3`!e2#%Ab*qrJCSUY&LzW3jrP8#N(nHQDWZKo*B0%X99&VMW{~h8<_x3H7P6Sjb6Ii)sd6Z^+^4H z$ZQt@`K-;zu&2nS{GkfLU4fxlU^UaA z^}OIZQlE9fV}jF1tBJ}7LSO&ABu$oz$amJ0@KmD;O3sFsRo2jOF_kwkgeFyV#`QdT zRsS`REyhlY!b?vc9Hjnr@Z}o<62|Y|LOOHYRR_^#yLo$iHhK%p4;1c*TX@EwN=^CJ zlGWG6iZY*_aVBEGPJTT)c9y5`oDM_ZwLUJ|ZtGa7>*^B4 zrlt9>x`r^1u7JA#7RW+V(dUQ!e2*FSeU*0F5<6NnjusPyrI^_t z&<>?@^w!+~ln^CYDaKZrzpLcJUjr$|By^er1DmH^Jb5B)SgCcfyONZ{@Af`MKnQ>EDVRT`qxA9>=c$Eir z7!R4HZP^v2M3&VMhp(cnD+jWBNx2AjCNIK%1+YiPT}a4iJ~P4E_@(=?2>ZSMM`dsK>xoRd|c)Maq+64ZC-Uj^;tMtB+RMz+h+7Y8i%M^ z!V+)EHPu{O4dDf5xG$WEi}IYlx1~nG9%^EaKxY$lQ%L(a1#tqj;Hp5tI_(8Jv9B6tli~u z7;y{vQ}~`sy`R#iU}uw2U}vGhxa5!=C0_@*yu&Po0Im9&(ndK!jPtHV>n$(BX@-+R z>*m8PBERmByU|G44S%mw!GSD%0ojviX`e8+Yty>1X!}IP>z`p_F!GKN*}QpDg!adw zp^h3BCP2iQLH6YS3T%2SjkH`Mp!1$X{&ai11MREn*$!mwMfTFN(HJSpRg$xzagVsT!L zKyPYUbiz;Hl2>XPRkYHE?mTrRUJy-cDuwQAS9P=eH!mX0OcmR8^=30%0@yB*^H%`{ zjo2y6sN~{ZZcWL#$K}R6Cvp^k(5GG_2q*X_mc{LTPuic^(#ZZ@M9LK{vhu>yxvE(% zM$jNWdB>v>RRZeIP^mX%pz)>@U*fKb*?Fun*m!7C>s01$6;LYQ)1wn?;{P`Fdw1Y) zpOs5_n?sI#^myy#Ih=hGo`>E)ORFbVX|U{AIGV^=(;%sjtGmj$P}Cq%H(u9hhd-R& z>(G>RBLrxD31Y#{*Q+6zUuPGUgl_hsinZ^>6vh@dnT2~@EOk)R^TBiH8Z_8V355tJ zXs4PL*kUl7=L$#W11mzT_v{yhBNSsjWFM(@8^XNbgH|Cn=9(KX;&+5Dds(9cU+KJ3 zXc>SW0E@&Xb3f&hjUqLHO~)h1+%Bh12mojECP~tJe)b07)Ybpy<^0pOys)Qa7@ik3 z0JRtZ8$eNL7dF>v0tH5~aAXw58(7qSZe57ygv7(3q48(F@=Glec(q?UnHxqsNe+SX@(x5s?TlX`TC{7_Sy!#4Rj(hjhJ zsFq*oumlCgl`OeV4-NtK@A%90)*}>jBaz%J-n<(r^_4YA`}akn5sB~>A;g%zN9Y*0 z6Od_h0yJI8uv*(`RbJa@(Yh`VvA)`j^M&6t|NFyImS|zDXnA;b?QVEwX5!TrbXN;^ z18AO@>uII++jsvlXg;uQCB2LNITIH~#t_E1W?ghL(P}q8R1z%6R#Jov*z$9Y*w3cZIIrluwi3TkJl^dTH2yH)8Xe@|5Uh8OLgHX zHJ8+|?bbcMF7`{vJ1*hp-ZK!#8iMW%UdA$#_r|!ssL0-a-IwZbxKW}ZCS>2|Jo3$* zxGJ}@ZrV>qa#xJvM0!3uM!w>lFr&Um_fJpP^e>zk`umt0t3ksnt3?4MwFzp6Wa11M zop1NKE11dBBj~#a(W;O@bK0g+j`R5yRjQ|rn>d4ZTy|-2#RY%H(Grrg?Kt#HAY2!; zI0vXb`i&hur3(fBI=^M*ntOiL*Cy;RKg^IyV`j+hSrzP8Bju@+Ix#HK$^toO7j8?T zQ+EHI3%mTgnKuAZc%Mv9bj8q)RCQ8#^d+nn9Ut)N?{CdhV{BGpW~*molR4(jzf6+WIvD%$ zpQpEk!b^y}b1p0NmRs=b_Cf)p_9NE!Ccuidv>wlKsjY(OvIjZSJ8Z&?Y%$4}Z(C0b z!qj^zy@!#Z+zFk!eRmqV&;S)yWai>VqgzGa#{ zM%61_ydpmbmVN5IQ{}sUjhw0$$^`#Yq#n6S?n?FG-G1GL@Zc?fD`EIKS66VtWi0oz z>x8z&v130^l3a@FKIju!mRD`QPmODizVl`Aae+pR_CqKjjByGFhWMvmXTdu5!t z3YZcel-L1(nL);1&`VFUH~&2+t z%NkkPwdzuR{m<7#0hr(J;PLdgk`qt5-DKiaH8ppOce9gOz*ZP6-Fk{DCJ|hRgp&D5 zm1Le#Jww4eF=5;o-BpmhU2EdSl);}H09b&{Y35X^SMfPK`BWYouXGG$ok1=hEWTtI z)$HUcY9~2jyr2v@#A@MWp{CP44fd9Ix{K5zYE{zFE1;V3ndypj+t8Ft-YO+0*|y@- z>r&(2>r<tEJh9R9N*U6~pC^pWsBoOtot?&(?lI)rZW8}5zLURLXycRkM z>RLsCJ|WQr+TsN_fVx)cu%)*6re7jsPM`2gH8ZuC z(17a&wcxPKkg4Nm_%V1^wG$R`roO+P&kBnSGS17*k}#`ISNiZ`>IQ(dYI!}Hhee#@ zcnpyC#lQi+R>%Yno3P#RwuygC5As7kOSS>5>NtC+K3)pLI6C{Rp9mV8u=zeJn7y_G zTH$g8R1tnx$;=~r5r1@rYRPAZuDXjF;5(0~Qj6%{Lw(rF@LSdzxGISKV+sPc4-y%; zA94}#ej;1fuqfBZHu+S8g(%8rSSRI)>XSIjIZc8QtQPocx|5U2qM+MaZ(_NGf(Cl% zih*~VF{3@Z!)aXR{9kw=Q8aRIy+d|L#{Ge0D+3!T^SY(S$*D3!96t(t=%%`~O@i23 z?1e^Lw;r;QT`}L<^IN|sDhO|JBNTIq9@$2+beuLVmFu8wNxq5JrsMW~8dM(T>mpQE zL#5=O4Oh6RR%*O)UFgs87tSLS9(Tnn_?gOcS2m+5%Nkv4g<@k`805!p)t4njcRs{e;_L7nA+bK?mZiHItyr15sw~BDii8&rU>jasp zZR^_TCNxY2myX0J1h23rMp{Y0 zv}_LxwXwU*a~Kr=FW{m<`xW85AvB0DF#-Y#al$}3yWk{4P#VL@G9Sf{y@YfG7x(r` zWq|MZAuQVsasPCL%lajs(bOlHzforY#KU-TDJ_I7H}y#DufmZ`77pDqwvN~D ziR*=J>ZC^JN1BDwrtDWr&e+Hr)z`oE+7H`lfT}}u(f#2g(si)oL?`?Nd=wPXua-=W zZ5?Y>R3P;5qmK2@V=K##SPLEyw7UVQWL!VMn0nZZ*{pJkp2GWOP&wJoxws1Lvun^| zAa`et0%=@)X4iVv5NN;>Dq;Vy*z&UrHL-8-vAQ1;O}sXq3jDy5?ymS zsV{$>-L(hrC?Q;HGeSn?qQEcmXeVePX_;mT?1A z6(v7JymH?Dn_7+{J6T{Yye%bs^+W5^5wQcq%c-qvVAPRTYM9z-TJ*o`-8P^rkfbt; zzq@91b8pRbQH-4?v!{1P+~GFQSQZLscFk_gF$+vqZyGzyJ#iO7IpkRiDb!Abhc2#KLkbk`znUIwhW02 zi%|77W%iQM(;tYs&l*x^dKsA>i37W%sgLXavg%P7{objzn9N%?)cBO+iz+aSBz83{ zWv*2DIbPLk=A1vI?0?5K5=%?Z>Dr`Y*q9hZ`|63m5M>A1_;9o6>!Z;AJB$2NBU5-!ydZ)dXIc%zX!^l$ z)VE3C7`Q%j$a*=oLs#_FV*4DVe4h9fOHIH$)E(uj{U>iroBVira=@N}Sb{bbp5)(?(f0L62HTTmEQ9R4DED)} zdAKh)#Hj9+QYjak+1Gb_K6&B%Csb(JYob2+6_$eC>E2_WZ8#vXW2u*exn^Pone^xQ z;33JiVeX;m8Algb194pVPQeA(388y?*r3C`doO@4?u)zzN%7jXntFbyjza+DbtzbS zEbsjIci`H~)c<%LNV+ZhkXo-idjGA5v`qiw>-_qj5MzuBbrpJEEd*2uC|3(it+ zY9o)2;mI*Or~78|A33FhwOqBfFyC+e+e~9#SI}tRC@0m#NtV&UgeB@8HKF7|%6A5P z!*mT6RxeMQRfH3y zMFL{;;(;@6qZwQxE3DQb$xkMf-4t&(3@HC$m|o@`lsQA((n_Ljw^1Qw8ON^g{`17j z2et0*7|c#9>#nt8^M&ePVg{t`x6qlFWdb}Petrtv;m+J-xf9^G2{5b6>Yb9?u)Du^H;YrMR#= z;UB~ABPiu$27^Q@k6q=w@C@Fw*|ev2P1NdKp~z&FrdvPTg&`xBQMlJ=#jgA7)|2~8 zmfIJP!i%$%ks$0Nx>ETPS_oC39XRdz(R{~wK+Un_1LMljEeC_Bm#2!@57a^U$d$n{ z*%qs!A^dT6;*hV?NiWmdp>WT&chdC&sQm`et{ANid#K}Q{PYfq)FzS_{ibOeTA)jo z0EMxt7K~7n8%cgI3$U(z^F`ftONj}mQ-|>jlx%+0w8)WKS@vPbx$C$sKtCw4%jb)C z8Jifx?t-w$DpxraC0^$|p(C;Xbk7%kq93c2SJf2p8WFRBG|XN!qGqf3&I zJQ5M&R~91LAl?;q15ouJOw*m2%PwQa)9?So=Wd0QU^dl{n$wYzCBJwCh_wSQ9X?$> zJ-<3t{0#pLkIs5f-n(P+%1^=2C<|t103LPo+vTgC5VmWq_3+n_h}faFJCKD-PU0yn zOd5xNLe?d|x&(qa`d6JhIR7TSK%`YCkbqkv3$3zP4 zzDZo=%nITOWL5V6JGS48EqQ-s^eIF*cdlmZv{BU)!s~-8UKI8hHVqIoiDg?C69J--&SN6pAew_3+M?n7ln6%$oec zkF_N4op)kOgX+)q(txi5;JM*W;nB3)=Tp*0Y9YUA4ezgI2JqM4#y=(6K-+MZ+w>LP zJ(Q=Q^16vy+q%uL_G*PU!4=U3{2%qlMM_H{(B~NIW$^mE!;ex&UhAz^?`*vH?uA>} zVf&>}KiX=l_xk*!Et8ae0<`PDpo_->;G$f(?1 zJ-TDFTUb%3l$oygMSauatT(#6x^b;#+{3Z5F)<~BM4{#hVQC6OB5fl&W~$!J~f)X6L@{KK+IdrFomf=bl2%r51I zIT&#Xnl!9fy-$2E0Dv@1hK0Y&>E==JC6q@7|*b^uJ%R zk7xZGAg|*+rX$2womAln)OTHtPM+T=`u+k)rs&yy13>Vly0k2HvV1wm2(P(fyuhAkXHR=g;|23cKD10rM;|arC#6oB2D-8uaSAZO zU!-w}D?HJ)lgog-e1BVR^KNXxurjf~(Oi*FUZWRahk#z*BkhPO@#13K)h`HHaJ`r> zk^jh%`t>c)tTq5hTp{WqMlH4fFE7xqIK{JYcgQ=VdF%DtGGX)Av?V?K46=VV<(`VMtD5k#;xIgOx(XewY3Fn*lDJ=<}evKl17Z%z4M?O;<4t>zV zJ=yx_)Sr91$HQa7-t6Jw!6rr>6}Wp!-F6spWY!M7D~;t!Eb!LceDq)7$r$-`QfH3| zFSc1a%xgt6;zJY5S47y;pSYJi-H7K*tNEd-`6gwlmE3XG zwiP&@mAdL+feEg=1jq)fRE)fPW7Wm`TN>awgPtmY;o}{#ApOzjY@P{C^e!lO>0sz5 zI_LZsr3v*E)UTl@SQM;72fXZ2B)pLFbTLr&Th?!K&BE{_J?f#*=>z%H`TU z9OO0AWxNR*shxL7xm%+7hAWt*Jc5F{4>=O?_fU?rYOFFpw`?Ee?tDj+L@5}tRdjP} zRjU2xxlts)h@0hKPA54)zB$$%#zLy1%Fx)?b(2l3)IV$o?P03?uJjYt{5j9Cz}q^Q zN^cPT3W&YedxRxD3Pn7tSiPffVva2@{1X0h<|_p8x-4Qu0PFSyvD1)yiGAAdRZnDY zWHE82>3*^oDq#~+P9oLpA|tcW)whjLXP^)vZcdV8F z#zrG}>Rc{+r+!!HEX2oLdYWrB_W<{ zTVa}O$OaHB9R^4}Iq@r<`|(b~@^m|sQHXY4CvM7U0y84H+t~f;#Ns@^G*4^Rrnfoh zR6y1(kq_ZpYo9)CqbyqvHks0=39~W1+Kd_FY7@il4mRnn2A0`mygi^JrE$pn`Uh|| zJ!9=XtFw^1aU?U>V&XcKNP|fUS(bXMTUNfqAuzEv=F9VaV!y6Ms6pP-W)?R0b0_%D zfb$vr^MgC`Qm|K}-*D597_*myxD;*+ZL7oVW~dOSzz)&(M{~;V6w)8aeU}By)`tTV zsZ*3!(C%9Bu&*}&=}H0NR|!+Jsd>cLPYht*8h1e_ma)Zp`D%^1p(_Jxrlqq#kaun^a(5 zUAo(^Qd0q~xy=#_-!iyf!0Y2MwW|Y2zHtQxLG?o*R!?G^-icL;G=moA1bmFU2hUG< zK=56}jn_z2X!pV+gqVl$heN{TR!w6WcsVrH0VR+}xXGF2ZVsib5nDZhr}`#-#;$@B zydF8_3fXh^Gz4?TC_g8<0hk?^ps$T8#S4Gr=T$2u#~R+&RM6md42t=b(74@AOqgJS z(j{)k6Jz%G`UWu7RQMI#((66^c+O{mcVZQf#_dG*lriBSUQWkq9_igyE^L~DVGJpo z)K^mz$AbHN4hoAfpV>pHtuLIJVSd9qN`g^b;ekN8qpX)GbInY}H$h81tfcE=tY;ak zgR{r+h;R(1-HbZ<62e^*Rn{pPWA z&KDvEz32Z=O8Q)ZHlr{gU)leo93jRCDL@!8-NIt(s@40~0_J)=!WcHS**e2 z&8$2W${uH6_Q>l)PO(G^J8F+Fc@#!;%m1j1O*v)Efus%SlX;URDZ=te`RYmzXM4@Z zKV$DV7SBa)u_xJJE@OJn;G>t-Ki=Yx2{Fd*BN2P$B;um$R_hd4iOy}^rm~I0%WTV# z62i}TDW+D##G$_}bb-hT{Gqw#?QSOf+!}`SEi(dAE4=08Lm%K$_5{At>hLZHe5} zsb*MIHOBLC!6BPM*e;CFBy8~O;-6;~3$9AjRZYd=%TKiMsatra>rA^Ul>~C8{Z-CR zHfw@Q@J!7jMa4TWI=oRnalAW#)s8bYFfeX_IR>w2sy$gXm;3Qov~fNWr%K4>%E-H~ zFJAwpSw%JjpJOcT3W=`A)`G!dUmn>-GT>7;vQ){1ImjgmUQ+}ap?|3X+VXSWkqP{t J6?ilIKLNP*5KI67 literal 0 HcmV?d00001 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedInputStream.js new file mode 100755 index 000000000000..94b97845b82c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedInputStream.js @@ -0,0 +1,144 @@ +Clazz.load(["java.io.FilterInputStream"], "java.io.BufferedInputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +this.count = 0; +this.pos = 0; +this.markpos = -1; +this.marklimit = 0; +Clazz.instantialize(this, arguments);}, java.io, "BufferedInputStream", java.io.FilterInputStream); +Clazz.makeConstructor(c$, +function($in){ +Clazz.superConstructor(this, java.io.BufferedInputStream, [$in]); +this.buf = Clazz.newByteArray (8192, 0); +}, "java.io.InputStream"); +Clazz.defineMethod(c$, "getInIfOpen", +function(){ +var input = this.$in; +if (input == null) throw new java.io.IOException("Stream closed"); +return input; +}); +Clazz.defineMethod(c$, "getBufIfOpen", +function(){ +var buffer = this.buf; +if (buffer == null) throw new java.io.IOException("Stream closed"); +return buffer; +}); +Clazz.overrideMethod(c$, "resetStream", +function(){ +}); +Clazz.defineMethod(c$, "fill", +function(){ +var buffer = this.getBufIfOpen(); +if (this.markpos < 0) this.pos = 0; + else if (this.pos >= buffer.length) if (this.markpos > 0) { +var sz = this.pos - this.markpos; +System.arraycopy(buffer, this.markpos, buffer, 0, sz); +this.pos = sz; +this.markpos = 0; +} else if (buffer.length >= this.marklimit) { +this.markpos = -1; +this.pos = 0; +} else { +var nsz = this.pos * 2; +if (nsz > this.marklimit) nsz = this.marklimit; +var nbuf = Clazz.newByteArray (nsz, 0); +System.arraycopy(buffer, 0, nbuf, 0, this.pos); +buffer = this.buf = nbuf; +}this.count = this.pos; +var n = this.isRead(buffer, this.pos, buffer.length - this.pos); +if (n > 0) this.count = n + this.pos; +}); +Clazz.overrideMethod(c$, "readByteAsInt", +function(){ +if (this.pos >= this.count) { +this.fill(); +if (this.pos >= this.count) return -1; +}return this.getBufIfOpen()[this.pos++] & 0xff; +}); +Clazz.defineMethod(c$, "read1", +function(b, off, len){ +var avail = this.count - this.pos; +if (avail <= 0) { +if (len >= this.getBufIfOpen().length && this.markpos < 0) { +return this.isRead(b, off, len); +}this.fill(); +avail = this.count - this.pos; +if (avail <= 0) return -1; +}var cnt = (avail < len) ? avail : len; +System.arraycopy(this.getBufIfOpen(), this.pos, b, off, cnt); +this.pos += cnt; +return cnt; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "isRead", +function(b, off, len){ +var is = this.getInIfOpen(); +{ +if (is.readBAIS) return is.readBAIS(b, off, len); +}return is.read(b, off, len); +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "read", +function(b, off, len){ +return this.readBIS(b, off, len); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "readBIS", +function(b, off, len){ +this.getBufIfOpen(); +if ((off | len | (off + len) | (b.length - (off + len))) < 0) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var n = 0; +for (; ; ) { +var nread = this.read1(b, off + n, len - n); +if (nread <= 0) return (n == 0) ? nread : n; +n += nread; +if (n >= len) return n; +var input = this.$in; +if (input != null && input.available() <= 0) return n; +} +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "skip", +function(n){ +this.getBufIfOpen(); +if (n <= 0) { +return 0; +}var avail = this.count - this.pos; +if (avail <= 0) { +if (this.markpos < 0) return this.getInIfOpen().skip(n); +this.fill(); +avail = this.count - this.pos; +if (avail <= 0) return 0; +}var skipped = (avail < n) ? avail : n; +this.pos += skipped; +return skipped; +}, "~N"); +Clazz.overrideMethod(c$, "available", +function(){ +var n = this.count - this.pos; +var avail = this.getInIfOpen().available(); +return n > (2147483647 - avail) ? 2147483647 : n + avail; +}); +Clazz.overrideMethod(c$, "mark", +function(readlimit){ +this.marklimit = readlimit; +this.markpos = this.pos; +}, "~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +this.getBufIfOpen(); +if (this.markpos < 0) throw new java.io.IOException("Resetting to invalid mark"); +this.pos = this.markpos; +}); +Clazz.overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "close", +function(){ +var input = this.$in; +this.$in = null; +if (input != null) input.close(); +return; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedOutputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedOutputStream.js new file mode 100755 index 000000000000..6274d36f8f1f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedOutputStream.js @@ -0,0 +1,62 @@ +Clazz.load(["java.io.FilterOutputStream"], "java.io.BufferedOutputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +this.count = 0; +Clazz.instantialize(this, arguments);}, java.io, "BufferedOutputStream", java.io.FilterOutputStream); +Clazz.makeConstructor(c$, +function(out){ +Clazz.superConstructor (this, java.io.BufferedOutputStream, []); +this.jzSetFOS(out); +this.buf = Clazz.newByteArray (8192, 0); +}, "java.io.OutputStream"); +Clazz.makeConstructor(c$, +function(out, size){ +Clazz.superConstructor (this, java.io.BufferedOutputStream, []); +this.jzSetFOS(out); +if (size <= 0) { +throw new IllegalArgumentException(("K0058")); +}this.buf = Clazz.newByteArray (size, 0); +}, "java.io.OutputStream,~N"); +Clazz.overrideMethod(c$, "flush", +function(){ +if (this.count > 0) { +this.out.write(this.buf, 0, this.count); +}this.count = 0; +this.out.flush(); +}); +Clazz.defineMethod(c$, "write", +function(buffer, offset, length){ +if (buffer == null) { +throw new NullPointerException(("K0047")); +}if (offset < 0 || offset > buffer.length - length || length < 0) { +throw new ArrayIndexOutOfBoundsException(("K002f")); +}if (this.count == 0 && length >= this.buf.length) { +this.out.write(buffer, offset, length); +return; +}var available = this.buf.length - this.count; +if (length < available) { +available = length; +}if (available > 0) { +System.arraycopy(buffer, offset, this.buf, this.count, available); +this.count += available; +}if (this.count == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.count = 0; +if (length > available) { +offset += available; +available = length - available; +if (available >= this.buf.length) { +this.out.write(buffer, offset, available); +} else { +System.arraycopy(buffer, offset, this.buf, this.count, available); +this.count += available; +}}}}, "~A,~N,~N"); +Clazz.defineMethod(c$, "write", +function(oneByte){ +if (this.count == this.buf.length) { +this.out.write(this.buf, 0, this.count); +this.count = 0; +}this.buf[this.count++] = oneByte; +}, "~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedReader.js b/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedReader.js new file mode 100755 index 000000000000..a22da2c3cf9a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedReader.js @@ -0,0 +1,204 @@ +Clazz.load(["java.io.Reader"], "java.io.BufferedReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$in = null; +this.cb = null; +this.nChars = 0; +this.nextChar = 0; +this.markedChar = -1; +this.readAheadLimit = 0; +this.skipLF = false; +this.markedSkipLF = false; +Clazz.instantialize(this, arguments);}, java.io, "BufferedReader", java.io.Reader); +Clazz.makeConstructor(c$, +function($in){ +Clazz.superConstructor(this, java.io.BufferedReader, [$in]); +this.$in = $in; +this.setSize(8192); +}, "java.io.Reader"); +Clazz.defineMethod(c$, "setSize", +function(sz){ +if (sz <= 0) throw new IllegalArgumentException("Buffer size <= 0"); +this.cb = Clazz.newCharArray (sz, '\0'); +this.nextChar = this.nChars = 0; +}, "~N"); +Clazz.defineMethod(c$, "ensureOpen", +function(){ +if (this.$in == null) throw new java.io.IOException("Stream closed"); +}); +Clazz.defineMethod(c$, "fill", +function(){ +var dst; +if (this.markedChar <= -1) { +dst = 0; +} else { +var delta = this.nextChar - this.markedChar; +if (delta >= this.readAheadLimit) { +this.markedChar = -2; +this.readAheadLimit = 0; +dst = 0; +} else { +if (this.readAheadLimit <= this.cb.length) { +System.arraycopy(this.cb, this.markedChar, this.cb, 0, delta); +this.markedChar = 0; +dst = delta; +} else { +var ncb = Clazz.newCharArray (this.readAheadLimit, '\0'); +System.arraycopy(this.cb, this.markedChar, ncb, 0, delta); +this.cb = ncb; +this.markedChar = 0; +dst = delta; +}this.nextChar = this.nChars = delta; +}}var n; +do { +n = this.$in.read(this.cb, dst, this.cb.length - dst); +} while (n == 0); +if (n > 0) { +this.nChars = dst + n; +this.nextChar = dst; +}}); +Clazz.defineMethod(c$, "read1", +function(cbuf, off, len){ +if (this.nextChar >= this.nChars) { +if (len >= this.cb.length && this.markedChar <= -1 && !this.skipLF) { +return this.$in.read(cbuf, off, len); +}this.fill(); +}if (this.nextChar >= this.nChars) return -1; +if (this.skipLF) { +this.skipLF = false; +if (this.cb[this.nextChar] == '\n') { +this.nextChar++; +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) return -1; +}}var n = Math.min(len, this.nChars - this.nextChar); +System.arraycopy(this.cb, this.nextChar, cbuf, off, n); +this.nextChar += n; +return n; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "read", +function(cbuf, off, len){ +{ +this.ensureOpen(); +if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var n = this.read1(cbuf, off, len); +if (n <= 0) return n; +while ((n < len) && this.$in.ready()) { +var n1 = this.read1(cbuf, off + n, len - n); +if (n1 <= 0) break; +n += n1; +} +return n; +}}, "~A,~N,~N"); +Clazz.defineMethod(c$, "readLine1", +function(ignoreLF){ +var s = null; +var startChar; +{ +this.ensureOpen(); +var omitLF = ignoreLF || this.skipLF; +for (; ; ) { +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) { +if (s != null && s.length > 0) return s.toString(); +return null; +}var eol = false; +var c = String.fromCharCode(0); +var i; +if (omitLF && (this.cb[this.nextChar] == '\n')) this.nextChar++; +this.skipLF = false; +omitLF = false; +charLoop : for (i = this.nextChar; i < this.nChars; i++) { +c = this.cb[i]; +if ((c == '\n') || (c == '\r')) { +eol = true; +break charLoop; +}} +startChar = this.nextChar; +this.nextChar = i; +var str = String.instantialize(this.cb, startChar, i - startChar); +if (eol) { +if (s != null) { +s += str; +str = s; +}this.nextChar++; +if (c == '\r') { +this.skipLF = true; +}return str; +}if (s == null) s = ""; +s += str; +} +}}, "~B"); +Clazz.defineMethod(c$, "readLine", +function(){ +return this.readLine1(false); +}); +Clazz.overrideMethod(c$, "skip", +function(n){ +if (n < 0) { +throw new IllegalArgumentException("skip value is negative"); +}{ +this.ensureOpen(); +var r = n; +while (r > 0) { +if (this.nextChar >= this.nChars) this.fill(); +if (this.nextChar >= this.nChars) break; +if (this.skipLF) { +this.skipLF = false; +if (this.cb[this.nextChar] == '\n') { +this.nextChar++; +}}var d = this.nChars - this.nextChar; +if (r <= d) { +this.nextChar += r; +r = 0; +break; +}r -= d; +this.nextChar = this.nChars; +} +return n - r; +}}, "~N"); +Clazz.defineMethod(c$, "ready", +function(){ +{ +this.ensureOpen(); +if (this.skipLF) { +if (this.nextChar >= this.nChars && this.$in.ready()) { +this.fill(); +}if (this.nextChar < this.nChars) { +if (this.cb[this.nextChar] == '\n') this.nextChar++; +this.skipLF = false; +}}return (this.nextChar < this.nChars) || this.$in.ready(); +}}); +Clazz.overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "mark", +function(readAheadLimit){ +if (readAheadLimit < 0) { +throw new IllegalArgumentException("Read-ahead limit < 0"); +}{ +this.ensureOpen(); +this.readAheadLimit = readAheadLimit; +this.markedChar = this.nextChar; +this.markedSkipLF = this.skipLF; +}}, "~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +{ +this.ensureOpen(); +if (this.markedChar < 0) throw new java.io.IOException((this.markedChar == -2) ? "Mark invalid" : "Stream not marked"); +this.nextChar = this.markedChar; +this.skipLF = this.markedSkipLF; +}}); +Clazz.defineMethod(c$, "close", +function(){ +{ +if (this.$in == null) return; +this.$in.close(); +this.$in = null; +this.cb = null; +}}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedWriter.js b/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedWriter.js new file mode 100755 index 000000000000..8e828609ce43 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/BufferedWriter.js @@ -0,0 +1,125 @@ +Clazz.load(["java.io.Writer"], "java.io.BufferedWriter", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.out = null; +this.buf = null; +this.pos = 0; +this.lineSeparator = "\r\n"; +Clazz.instantialize(this, arguments);}, java.io, "BufferedWriter", java.io.Writer); +Clazz.makeConstructor(c$, +function(out){ +Clazz.superConstructor(this, java.io.BufferedWriter, [out]); +this.out = out; +this.buf = Clazz.newCharArray (8192, '\0'); +}, "java.io.Writer"); +Clazz.makeConstructor(c$, +function(out, size){ +Clazz.superConstructor(this, java.io.BufferedWriter, [out]); +if (size > 0) { +this.out = out; +this.buf = Clazz.newCharArray (size, '\0'); +} else { +throw new IllegalArgumentException(("K0058")); +}}, "java.io.Writer,~N"); +Clazz.defineMethod(c$, "close", +function(){ +{ +if (this.isOpen()) { +this.flush(); +this.out.close(); +this.buf = null; +this.out = null; +}}}); +Clazz.defineMethod(c$, "flush", +function(){ +{ +if (this.isOpen()) { +if (this.pos > 0) { +this.out.write(this.buf, 0, this.pos); +}this.pos = 0; +this.out.flush(); +} else { +throw new java.io.IOException(("K005d")); +}}}); +Clazz.defineMethod(c$, "isOpen", +function(){ +return this.out != null; +}); +Clazz.defineMethod(c$, "newLine", +function(){ +this.write("\r\n", 0, "\r\n".length); +}); +Clazz.defineMethod(c$, "write", +function(cbuf, offset, count){ +{ +if (!this.isOpen()) { +throw new java.io.IOException(("K005d")); +}if (offset < 0 || offset > cbuf.length - count || count < 0) { +throw new IndexOutOfBoundsException(); +}if (this.pos == 0 && count >= this.buf.length) { +this.out.write(cbuf, offset, count); +return; +}var available = this.buf.length - this.pos; +if (count < available) { +available = count; +}if (available > 0) { +System.arraycopy(cbuf, offset, this.buf, this.pos, available); +this.pos += available; +}if (this.pos == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +if (count > available) { +offset += available; +available = count - available; +if (available >= this.buf.length) { +this.out.write(cbuf, offset, available); +return; +}System.arraycopy(cbuf, offset, this.buf, this.pos, available); +this.pos += available; +}}}}, "~A,~N,~N"); +Clazz.defineMethod(c$, "write", +function(oneChar){ +{ +if (this.isOpen()) { +if (this.pos >= this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +}this.buf[this.pos++] = String.fromCharCode(oneChar); +} else { +throw new java.io.IOException(("K005d")); +}}}, "~N"); +Clazz.defineMethod(c$, "write", +function(str, offset, count){ +{ +if (!this.isOpen()) { +throw new java.io.IOException(("K005d")); +}if (count <= 0) { +return; +}if (offset > str.length - count || offset < 0) { +throw new StringIndexOutOfBoundsException(); +}if (this.pos == 0 && count >= this.buf.length) { +var chars = Clazz.newCharArray (count, '\0'); +str.getChars(offset, offset + count, chars, 0); +this.out.write(chars, 0, count); +return; +}var available = this.buf.length - this.pos; +if (count < available) { +available = count; +}if (available > 0) { +str.getChars(offset, offset + available, this.buf, this.pos); +this.pos += available; +}if (this.pos == this.buf.length) { +this.out.write(this.buf, 0, this.buf.length); +this.pos = 0; +if (count > available) { +offset += available; +available = count - available; +if (available >= this.buf.length) { +var chars = Clazz.newCharArray (count, '\0'); +str.getChars(offset, offset + available, chars, 0); +this.out.write(chars, 0, available); +return; +}str.getChars(offset, offset + available, this.buf, this.pos); +this.pos += available; +}}}}, "~S,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/ByteArrayInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/ByteArrayInputStream.js new file mode 100755 index 000000000000..af1c26ce5b8f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/ByteArrayInputStream.js @@ -0,0 +1,71 @@ +Clazz.load(["java.io.InputStream"], "java.io.ByteArrayInputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +this.pos = 0; +this.$mark = 0; +this.count = 0; +Clazz.instantialize(this, arguments);}, java.io, "ByteArrayInputStream", java.io.InputStream); +Clazz.makeConstructor(c$, +function(buf){ +Clazz.superConstructor (this, java.io.ByteArrayInputStream, []); +this.buf = buf; +this.pos = 0; +this.count = buf.length; +}, "~A"); +Clazz.overrideMethod(c$, "readByteAsInt", +function(){ +return (this.pos < this.count) ? (this.buf[this.pos++] & 0xff) : -1; +}); +Clazz.overrideMethod(c$, "read", +function(b, off, len){ +return this.readBAIS(b, off, len); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "readBAIS", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +}if (this.pos >= this.count) { +return -1; +}var avail = this.count - this.pos; +if (len > avail) { +len = avail; +}if (len <= 0) { +return 0; +}System.arraycopy(this.buf, this.pos, b, off, len); +this.pos += len; +return len; +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "skip", +function(n){ +var k = this.count - this.pos; +if (n < k) { +k = n < 0 ? 0 : n; +}this.pos += k; +return k; +}, "~N"); +Clazz.overrideMethod(c$, "available", +function(){ +return this.count - this.pos; +}); +Clazz.overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "mark", +function(readAheadLimit){ +this.$mark = this.pos; +}, "~N"); +Clazz.overrideMethod(c$, "resetStream", +function(){ +}); +Clazz.overrideMethod(c$, "reset", +function(){ +this.pos = this.$mark; +}); +Clazz.overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/ByteArrayOutputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/ByteArrayOutputStream.js new file mode 100755 index 000000000000..db0ff545d6fc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/ByteArrayOutputStream.js @@ -0,0 +1,75 @@ +Clazz.load(["java.io.OutputStream"], "java.io.ByteArrayOutputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +this.count = 0; +Clazz.instantialize(this, arguments);}, java.io, "ByteArrayOutputStream", java.io.OutputStream); +Clazz.makeConstructor(c$, +function(){ +this.construct (32); +}); +Clazz.makeConstructor(c$, +function(size){ +Clazz.superConstructor (this, java.io.ByteArrayOutputStream, []); +if (size < 0) { +throw new IllegalArgumentException("Negative initial size: " + size); +}this.buf = Clazz.newByteArray (size, 0); +}, "~N"); +Clazz.defineMethod(c$, "ensureCapacity", +function(minCapacity){ +if (minCapacity - this.buf.length > 0) this.grow(minCapacity); +}, "~N"); +Clazz.defineMethod(c$, "grow", +function(minCapacity){ +var oldCapacity = this.buf.length; +var newCapacity = oldCapacity << 1; +if (newCapacity - minCapacity < 0) newCapacity = minCapacity; +if (newCapacity < 0) { +if (minCapacity < 0) throw new OutOfMemoryError(); +newCapacity = minCapacity; +}this.buf = java.io.ByteArrayOutputStream.arrayCopyByte(this.buf, newCapacity); +}, "~N"); +c$.arrayCopyByte = Clazz.defineMethod(c$, "arrayCopyByte", +function(array, newLength){ +var t = Clazz.newByteArray (newLength, 0); +System.arraycopy(array, 0, t, 0, array.length < newLength ? array.length : newLength); +return t; +}, "~A,~N"); +Clazz.overrideMethod(c$, "writeByteAsInt", +function(b){ +this.ensureCapacity(this.count + 1); +this.buf[this.count] = b; +this.count += 1; +}, "~N"); +Clazz.defineMethod(c$, "write", +function(b, off, len){ +if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) - b.length > 0)) { +throw new IndexOutOfBoundsException(); +}this.ensureCapacity(this.count + len); +System.arraycopy(b, off, this.buf, this.count, len); +this.count += len; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "writeTo", +function(out){ +out.write(this.buf, 0, this.count); +}, "java.io.OutputStream"); +Clazz.defineMethod(c$, "reset", +function(){ +this.count = 0; +}); +Clazz.defineMethod(c$, "toByteArray", +function(){ +return (this.count == this.buf.length ? this.buf : java.io.ByteArrayOutputStream.arrayCopyByte(this.buf, this.count)); +}); +Clazz.defineMethod(c$, "size", +function(){ +return this.count; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return String.instantialize(this.buf, 0, this.count); +}); +Clazz.overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/CharArrayReader.js b/config/plugins/visualizations/jmol/static/j2s/java/io/CharArrayReader.js new file mode 100755 index 000000000000..a279c0c31426 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/CharArrayReader.js @@ -0,0 +1,101 @@ +Clazz.load(["java.io.Reader"], "java.io.CharArrayReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +this.pos = 0; +this.markedPos = -1; +this.count = 0; +Clazz.instantialize(this, arguments);}, java.io, "CharArrayReader", java.io.Reader); +Clazz.makeConstructor(c$, +function(buf){ +Clazz.superConstructor(this, java.io.CharArrayReader, [buf]); +this.buf = buf; +this.count = buf.length; +}, "~A"); +Clazz.makeConstructor(c$, +function(buf, offset, length){ +Clazz.superConstructor(this, java.io.CharArrayReader, [buf]); +if (0 <= offset && offset <= buf.length && length >= 0) { +this.buf = buf; +this.pos = offset; +this.count = this.pos + length < buf.length ? length : buf.length; +} else { +throw new IllegalArgumentException(); +}}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "close", +function(){ +{ +if (this.isOpen()) { +this.buf = null; +}}}); +Clazz.defineMethod(c$, "isOpen", +function(){ +return this.buf != null; +}); +Clazz.overrideMethod(c$, "mark", +function(readLimit){ +{ +if (this.isOpen()) { +this.markedPos = this.pos; +} else { +throw new java.io.IOException(("K0060")); +}}}, "~N"); +Clazz.overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz.defineMethod(c$, "read", +function(){ +{ +if (this.isOpen()) { +if (this.pos != this.count) { +return this.buf[this.pos++]; +}return -1; +}throw new java.io.IOException(("K0060")); +}}); +Clazz.defineMethod(c$, "read", +function(buffer, offset, len){ +if (0 <= offset && offset <= buffer.length && 0 <= len && len <= buffer.length - offset) { +{ +if (this.isOpen()) { +if (this.pos < this.count) { +var bytesRead = this.pos + len > this.count ? this.count - this.pos : len; +System.arraycopy(this.buf, this.pos, buffer, offset, bytesRead); +this.pos += bytesRead; +return bytesRead; +}return -1; +}throw new java.io.IOException(("K0060")); +}}throw new ArrayIndexOutOfBoundsException(); +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "ready", +function(){ +{ +if (this.isOpen()) { +return this.pos != this.count; +}throw new java.io.IOException(("K0060")); +}}); +Clazz.overrideMethod(c$, "reset", +function(){ +{ +if (this.isOpen()) { +this.pos = this.markedPos != -1 ? this.markedPos : 0; +} else { +throw new java.io.IOException(("K0060")); +}}}); +Clazz.overrideMethod(c$, "skip", +function(n){ +{ +if (this.isOpen()) { +if (n <= 0) { +return 0; +}var skipped = 0; +if (n < this.count - this.pos) { +this.pos = this.pos + n; +skipped = n; +} else { +skipped = this.count - this.pos; +this.pos = this.count; +}return skipped; +}throw new java.io.IOException(("K0060")); +}}, "~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/CharArrayWriter.js b/config/plugins/visualizations/jmol/static/j2s/java/io/CharArrayWriter.js new file mode 100755 index 000000000000..c4452e104de6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/CharArrayWriter.js @@ -0,0 +1,112 @@ +Clazz.load(["java.io.Writer"], "java.io.CharArrayWriter", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +this.count = 0; +Clazz.instantialize(this, arguments);}, java.io, "CharArrayWriter", java.io.Writer); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, java.io.CharArrayWriter); +this.buf = Clazz.newCharArray (32, '\0'); +this.lock = this.buf; +}); +Clazz.makeConstructor(c$, +function(initialSize){ +Clazz.superConstructor(this, java.io.CharArrayWriter); +if (initialSize >= 0) { +this.buf = Clazz.newCharArray (initialSize, '\0'); +this.lock = this.buf; +} else { +throw new IllegalArgumentException(("K005e")); +}}, "~N"); +Clazz.overrideMethod(c$, "close", +function(){ +}); +Clazz.defineMethod(c$, "expand", +function(i){ +if (this.count + i <= this.buf.length) { +return; +}var newbuf = Clazz.newCharArray (this.buf.length + (2 * i), '\0'); +System.arraycopy(this.buf, 0, newbuf, 0, this.count); +this.buf = newbuf; +}, "~N"); +Clazz.overrideMethod(c$, "flush", +function(){ +}); +Clazz.defineMethod(c$, "reset", +function(){ +{ +this.count = 0; +}}); +Clazz.defineMethod(c$, "size", +function(){ +{ +return this.count; +}}); +Clazz.defineMethod(c$, "toCharArray", +function(){ +{ +var result = Clazz.newCharArray (this.count, '\0'); +System.arraycopy(this.buf, 0, result, 0, this.count); +return result; +}}); +Clazz.overrideMethod(c$, "toString", +function(){ +{ +return String.instantialize(this.buf, 0, this.count); +}}); +Clazz.defineMethod(c$, "write", +function(c, offset, len){ +if (0 <= offset && offset <= c.length && 0 <= len && len <= c.length - offset) { +{ +this.expand(len); +System.arraycopy(c, offset, this.buf, this.count, len); +this.count += len; +}} else { +throw new IndexOutOfBoundsException(); +}}, "~A,~N,~N"); +Clazz.defineMethod(c$, "write", +function(oneChar){ +{ +this.expand(1); +this.buf[this.count++] = String.fromCharCode(oneChar); +}}, "~N"); +Clazz.defineMethod(c$, "write", +function(str, offset, len){ +if (str == null) { +throw new NullPointerException(("K0047")); +}if (0 <= offset && offset <= str.length && 0 <= len && len <= str.length - offset) { +{ +this.expand(len); +str.getChars(offset, offset + len, this.buf, this.count); +this.count += len; +}} else { +throw new StringIndexOutOfBoundsException(); +}}, "~S,~N,~N"); +Clazz.defineMethod(c$, "writeTo", +function(out){ +{ +out.write(this.buf, 0, this.count); +}}, "java.io.Writer"); +Clazz.defineMethod(c$, "append", +function(c){ +this.write(c.charCodeAt(0)); +return this; +}, "~S"); +Clazz.defineMethod(c$, "append", +function(csq){ +if (null == csq) { +this.append("null", 0, "null".length); +} else { +this.append(csq, 0, csq.length); +}return this; +}, "CharSequence"); +Clazz.defineMethod(c$, "append", +function(csq, start, end){ +if (null == csq) { +csq = "null"; +}var output = csq.subSequence(start, end).toString(); +this.write(output, 0, output.length); +return this; +}, "CharSequence,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/Closeable.js b/config/plugins/visualizations/jmol/static/j2s/java/io/Closeable.js new file mode 100755 index 000000000000..4b0915ce258b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/Closeable.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.io, "Closeable", AutoCloseable); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/DataInput.js b/config/plugins/visualizations/jmol/static/j2s/java/io/DataInput.js new file mode 100755 index 000000000000..92ff0878d016 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/DataInput.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.io, "DataInput"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/DataInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/DataInputStream.js new file mode 100755 index 000000000000..8df78aab00bd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/DataInputStream.js @@ -0,0 +1,213 @@ +Clazz.load(["java.io.DataInput", "$.FilterInputStream"], "java.io.DataInputStream", ["java.io.PushbackInputStream"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bytearr = null; +this.chararr = null; +this.readBuffer = null; +this.lineBuffer = null; +Clazz.instantialize(this, arguments);}, java.io, "DataInputStream", java.io.FilterInputStream, java.io.DataInput); +Clazz.prepareFields (c$, function(){ +this.bytearr = Clazz.newByteArray (80, 0); +this.chararr = String.fromCharCode( Clazz.newCharArray (80, '\0')); +this.readBuffer = Clazz.newByteArray (8, 0); +}); +Clazz.overrideMethod(c$, "read", +function(b, off, len){ +return this.$in.read(b, off, len); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "readDIS", +function(b, off, len){ +var is = this.$in; +{ +if (is.readBIS) return is.readBIS(b, off, len); +if (is.readBAIS) +return is.readBAIS(b, off, len); +}return is.read(b, off, len); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "readFully", +function(b, off, len){ +if (len < 0) throw new IndexOutOfBoundsException(); +var n = 0; +while (n < len) { +var count = this.$in.read(b, off + n, len - n); +if (count < 0) throw new java.io.EOFException(); +n += count; +} +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "skipBytes", +function(n){ +var total = 0; +var cur = 0; +while ((total < n) && ((cur = this.$in.skip(n - total)) > 0)) { +total += cur; +} +return total; +}, "~N"); +Clazz.overrideMethod(c$, "readBoolean", +function(){ +var ch = this.$in.readByteAsInt(); +if (ch < 0) throw new java.io.EOFException(); +return (ch != 0); +}); +Clazz.overrideMethod(c$, "readByte", +function(){ +var ch = this.$in.readByteAsInt(); +if (ch < 0) throw new java.io.EOFException(); +return (ch); +}); +Clazz.overrideMethod(c$, "readUnsignedByte", +function(){ +var ch = this.$in.readByteAsInt(); +if (ch < 0) throw new java.io.EOFException(); +return ch; +}); +Clazz.overrideMethod(c$, "readShort", +function(){ +var ch1 = this.$in.readByteAsInt(); +var ch2 = this.$in.readByteAsInt(); +if ((ch1 | ch2) < 0) throw new java.io.EOFException(); +var n = ((ch1 << 8) + (ch2 << 0)); +{ +return (n > 0x7FFF ? n - 0x10000 : n); +}}); +Clazz.defineMethod(c$, "readUnsignedShort", +function(){ +var ch1 = this.$in.readByteAsInt(); +var ch2 = this.$in.readByteAsInt(); +if ((ch1 | ch2) < 0) throw new java.io.EOFException(); +return (ch1 << 8) + (ch2 << 0); +}); +Clazz.overrideMethod(c$, "readChar", +function(){ +var ch1 = this.$in.readByteAsInt(); +var ch2 = this.$in.readByteAsInt(); +if ((ch1 | ch2) < 0) throw new java.io.EOFException(); +return String.fromCharCode((ch1 << 8) + (ch2 << 0)); +}); +Clazz.overrideMethod(c$, "readInt", +function(){ +var ch1 = this.$in.readByteAsInt(); +var ch2 = this.$in.readByteAsInt(); +var ch3 = this.$in.readByteAsInt(); +var ch4 = this.$in.readByteAsInt(); +if ((ch1 | ch2 | ch3 | ch4) < 0) throw new java.io.EOFException(); +var n = ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0)); +{ +return (n > 0x7FFFFFFF ? n - 0x100000000 : n); +}}); +Clazz.overrideMethod(c$, "readLong", +function(){ +this.readFully(this.readBuffer, 0, 8); +return ((this.readBuffer[0] << 56) + ((this.readBuffer[1] & 255) << 48) + ((this.readBuffer[2] & 255) << 40) + ((this.readBuffer[3] & 255) << 32) + ((this.readBuffer[4] & 255) << 24) + ((this.readBuffer[5] & 255) << 16) + ((this.readBuffer[6] & 255) << 8) + ((this.readBuffer[7] & 255) << 0)); +}); +Clazz.overrideMethod(c$, "readFloat", +function(){ +return Float.intBitsToFloat(this.readInt()); +}); +Clazz.overrideMethod(c$, "readDouble", +function(){ +return Double.longBitsToDouble(this.readLong()); +}); +Clazz.overrideMethod(c$, "readLine", +function(){ +var buf = this.lineBuffer; +if (buf == null) { +buf = this.lineBuffer = Clazz.newCharArray (128, '\0'); +}var room = buf.length; +var offset = 0; +var c; +loop : while (true) { +switch (c = this.$in.readByteAsInt()) { +case -1: +case 10: +break loop; +case 13: +var c2 = this.$in.readByteAsInt(); +if ((c2 != 10) && (c2 != -1)) { +if (!(Clazz.instanceOf(this.$in,"java.io.PushbackInputStream"))) { +this.$in = new java.io.PushbackInputStream(this.$in, 1); +}(this.$in).unreadByte(c2); +}break loop; +default: +if (--room < 0) { +buf = Clazz.newCharArray (offset + 128, '\0'); +room = buf.length - offset - 1; +System.arraycopy(this.lineBuffer, 0, buf, 0, offset); +this.lineBuffer = buf; +}buf[offset++] = String.fromCharCode(c); +break; +} +} +if ((c == -1) && (offset == 0)) { +return null; +}return String.copyValueOf(buf, 0, offset); +}); +Clazz.overrideMethod(c$, "readUTF", +function(){ +return java.io.DataInputStream.readUTFBytes(this, -1); +}); +c$.readUTFBytes = Clazz.defineMethod(c$, "readUTFBytes", +function($in, utflen){ +var isByteArray = (utflen >= 0); +if (!isByteArray) utflen = $in.readUnsignedShort(); +var bytearr = null; +var chararr = null; +if (Clazz.instanceOf($in,"java.io.DataInputStream")) { +var dis = $in; +if (dis.bytearr.length < utflen) { +dis.bytearr = Clazz.newByteArray (isByteArray ? utflen : utflen * 2, 0); +dis.chararr = Clazz.newCharArray (dis.bytearr.length, '\0'); +}chararr = dis.chararr; +bytearr = dis.bytearr; +} else { +bytearr = Clazz.newByteArray (utflen, 0); +chararr = Clazz.newCharArray (utflen, '\0'); +}var c; +var char2; +var char3; +var count = 0; +var chararr_count = 0; +$in.readFully(bytearr, 0, utflen); +while (count < utflen) { +c = bytearr[count] & 0xff; +if (c > 127) break; +count++; +chararr[chararr_count++] = String.fromCharCode(c); +} +while (count < utflen) { +c = bytearr[count] & 0xff; +switch (c >> 4) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +case 7: +count++; +chararr[chararr_count++] = String.fromCharCode(c); +break; +case 12: +case 13: +count += 2; +if (count > utflen) throw new java.io.UTFDataFormatException("malformed input: partial character at end"); +char2 = bytearr[count - 1]; +if ((char2 & 0xC0) != 0x80) throw new java.io.UTFDataFormatException("malformed input around byte " + count); +chararr[chararr_count++] = String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); +break; +case 14: +count += 3; +if (count > utflen) throw new java.io.UTFDataFormatException("malformed input: partial character at end"); +char2 = bytearr[count - 2]; +char3 = bytearr[count - 1]; +if (((char2 & 0xC0) != 0x80) || ((char3 & 0xC0) != 0x80)) throw new java.io.UTFDataFormatException("malformed input around byte " + (count - 1)); +chararr[chararr_count++] = String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)); +break; +default: +throw new java.io.UTFDataFormatException("malformed input around byte " + count); +} +} +return String.instantialize(chararr, 0, chararr_count); +}, "java.io.DataInput,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/DataOutput.js b/config/plugins/visualizations/jmol/static/j2s/java/io/DataOutput.js new file mode 100755 index 000000000000..e3062c7dcf57 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/DataOutput.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.io, "DataOutput"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/Externalizable.js b/config/plugins/visualizations/jmol/static/j2s/java/io/Externalizable.js new file mode 100755 index 000000000000..9677ceffd942 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/Externalizable.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.io, "Externalizable", java.io.Serializable); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/FilterInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/FilterInputStream.js new file mode 100755 index 000000000000..1f44116de176 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/FilterInputStream.js @@ -0,0 +1,43 @@ +Clazz.load(["java.io.InputStream"], "java.io.FilterInputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$in = null; +Clazz.instantialize(this, arguments);}, java.io, "FilterInputStream", java.io.InputStream); +Clazz.makeConstructor(c$, +function($in){ +Clazz.superConstructor (this, java.io.FilterInputStream, []); +this.$in = $in; +}, "java.io.InputStream"); +Clazz.defineMethod(c$, "readByteAsInt", +function(){ +return this.$in.readByteAsInt(); +}); +Clazz.overrideMethod(c$, "read", +function(b, off, len){ +return this.$in.read(b, off, len); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "skip", +function(n){ +return this.$in.skip(n); +}, "~N"); +Clazz.defineMethod(c$, "available", +function(){ +return this.$in.available(); +}); +Clazz.defineMethod(c$, "close", +function(){ +this.$in.close(); +}); +Clazz.defineMethod(c$, "mark", +function(readlimit){ +this.$in.mark(readlimit); +}, "~N"); +Clazz.defineMethod(c$, "reset", +function(){ +this.$in.reset(); +}); +Clazz.defineMethod(c$, "markSupported", +function(){ +return this.$in.markSupported(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/FilterOutputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/FilterOutputStream.js new file mode 100755 index 000000000000..26626026b152 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/FilterOutputStream.js @@ -0,0 +1,37 @@ +Clazz.load(["java.io.OutputStream"], "java.io.FilterOutputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.out = null; +Clazz.instantialize(this, arguments);}, java.io, "FilterOutputStream", java.io.OutputStream); +Clazz.defineMethod(c$, "jzSetFOS", +function(out){ +this.out = out; +}, "java.io.OutputStream"); +Clazz.defineMethod(c$, "writeByteAsInt", +function(b){ +this.out.writeByteAsInt(b); +}, "~N"); +Clazz.defineMethod(c$, "write", +function(b, off, len){ +if ((off | len | (b.length - (len + off)) | (off + len)) < 0) throw new IndexOutOfBoundsException(); +for (var i = 0; i < len; i++) { +this.writeByteAsInt(b[off + i]); +} +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "flush", +function(){ +this.out.flush(); +}); +Clazz.defineMethod(c$, "close", +function(){ +try { +this.flush(); +} catch (ignored) { +if (Clazz.exceptionOf(ignored,"java.io.IOException")){ +} else { +throw ignored; +} +} +this.out.close(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/Flushable.js b/config/plugins/visualizations/jmol/static/j2s/java/io/Flushable.js new file mode 100755 index 000000000000..156012626d80 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/Flushable.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.io, "Flushable"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/InputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/InputStream.js new file mode 100755 index 000000000000..52c3e96ba14a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/InputStream.js @@ -0,0 +1,70 @@ +Clazz.load(["java.io.Closeable"], "java.io.InputStream", null, function(){ +var c$ = Clazz.declareType(java.io, "InputStream", null, java.io.Closeable); +Clazz.defineMethod(c$, "read", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var c = this.readByteAsInt(); +if (c == -1) { +return -1; +}b[off] = c; +var i = 1; +try { +for (; i < len; i++) { +c = this.readByteAsInt(); +if (c == -1) { +break; +}b[off + i] = c; +} +} catch (ee) { +if (Clazz.exceptionOf(ee,"java.io.IOException")){ +} else { +throw ee; +} +} +return i; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "skip", +function(n){ +var remaining = n; +var nr; +if (java.io.InputStream.skipBuffer == null) java.io.InputStream.skipBuffer = Clazz.newByteArray (2048, 0); +var localSkipBuffer = java.io.InputStream.skipBuffer; +if (n <= 0) { +return 0; +}while (remaining > 0) { +nr = this.read(localSkipBuffer, 0, Math.min(2048, remaining)); +if (nr < 0) { +break; +}remaining -= nr; +} +return n - remaining; +}, "~N"); +Clazz.defineMethod(c$, "available", +function(){ +return 0; +}); +Clazz.overrideMethod(c$, "close", +function(){ +}); +Clazz.defineMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz.defineMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz.defineMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz.defineMethod(c$, "resetStream", +function(){ +}); +c$.skipBuffer = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/InputStreamReader.js b/config/plugins/visualizations/jmol/static/j2s/java/io/InputStreamReader.js new file mode 100755 index 000000000000..9175172a243f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/InputStreamReader.js @@ -0,0 +1,79 @@ +Clazz.load(["java.io.Reader"], "java.io.InputStreamReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$in = null; +this.isOpen = true; +this.charsetName = null; +this.isUTF8 = false; +this.bytearr = null; +this.pos = 0; +Clazz.instantialize(this, arguments);}, java.io, "InputStreamReader", java.io.Reader); +Clazz.makeConstructor(c$, +function($in, charsetName){ +Clazz.superConstructor(this, java.io.InputStreamReader, [$in]); +this.$in = $in; +this.charsetName = charsetName; +if (!(this.isUTF8 = "UTF-8".equals(charsetName)) && !"ISO-8859-1".equals(charsetName)) throw new NullPointerException("charsetName"); +}, "java.io.InputStream,~S"); +Clazz.defineMethod(c$, "getEncoding", +function(){ +return this.charsetName; +}); +Clazz.overrideMethod(c$, "read", +function(cbuf, offset, length){ +if (this.bytearr == null || this.bytearr.length < length) this.bytearr = Clazz.newByteArray (length, 0); +var c; +var char2; +var char3; +var byteCount = 0; +var charCount = offset; +var byteLen = this.$in.read(this.bytearr, this.pos, length - this.pos); +var nAvail = this.$in.available(); +if (byteLen < 0) return -1; +var nMax = byteLen; +while (byteCount < nMax) { +c = this.bytearr[byteCount] & 0xff; +if (this.isUTF8) switch (c >> 4) { +case 0xC: +case 0xD: +if (byteCount + 1 >= byteLen) { +if (nAvail >= 1) { +nMax = byteCount; +continue; +}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80) { +cbuf[charCount++] = String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); +byteCount += 2; +continue; +}this.isUTF8 = false; +break; +case 0xE: +if (byteCount + 2 >= byteLen) { +if (nAvail >= 2) { +nMax = byteCount; +continue; +}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80 && ((char3 = this.bytearr[byteCount + 2]) & 0xC0) == 0x80) { +cbuf[charCount++] = String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | (char3 & 0x3F)); +byteCount += 3; +continue; +}this.isUTF8 = false; +break; +} +byteCount++; +cbuf[charCount++] = String.fromCharCode(c); +} +this.pos = byteLen - byteCount; +for (var i = 0; i < this.pos; i++) { +this.bytearr[i] = this.bytearr[byteCount++]; +} +return charCount - offset; +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "ready", +function(){ +return this.isOpen; +}); +Clazz.overrideMethod(c$, "close", +function(){ +this.$in.close(); +this.isOpen = false; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/ObjectStreamField.js b/config/plugins/visualizations/jmol/static/j2s/java/io/ObjectStreamField.js new file mode 100755 index 000000000000..b2cb110c410b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/ObjectStreamField.js @@ -0,0 +1,178 @@ +Clazz.load(null, "java.io.ObjectStreamField", ["java.util.Arrays"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.name = null; +this.type = null; +this.offset = 0; +this.typeString = null; +this.unshared = false; +this.isDeserialized = false; +Clazz.instantialize(this, arguments);}, java.io, "ObjectStreamField", null, Comparable); +Clazz.makeConstructor(c$, +function(name, cl){ +if (name == null || cl == null) { +throw new NullPointerException(); +}this.name = name; +this.type = cl; +}, "~S,Class"); +Clazz.makeConstructor(c$, +function(name, cl, unshared){ +if (name == null || cl == null) { +throw new NullPointerException(); +}this.name = name; +this.type = cl; +this.unshared = unshared; +}, "~S,Class,~B"); +Clazz.makeConstructor(c$, +function(signature, name){ +if (name == null) { +throw new NullPointerException(); +}this.name = name; +this.typeString = signature.$replace('.', '/'); +this.isDeserialized = true; +}, "~S,~S"); +Clazz.overrideMethod(c$, "compareTo", +function(o){ +var f = o; +var thisPrimitive = this.isPrimitive(); +var fPrimitive = f.isPrimitive(); +if (thisPrimitive != fPrimitive) { +return thisPrimitive ? -1 : 1; +}return this.getName().compareTo(f.getName()); +}, "~O"); +Clazz.overrideMethod(c$, "equals", +function(arg0){ +return this.compareTo(arg0) == 0; +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return this.getName().hashCode(); +}); +Clazz.defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz.defineMethod(c$, "getOffset", +function(){ +return this.offset; +}); +Clazz.defineMethod(c$, "getTypeInternal", +function(){ +return this.type; +}); +Clazz.defineMethod(c$, "getType", +function(){ +var cl = this.getTypeInternal(); +if (this.isDeserialized && !cl.isPrimitive()) { +return Clazz._O; +}return cl; +}); +Clazz.defineMethod(c$, "getTypeCode", +function(){ +var t = this.getTypeInternal(); +if (t === Integer.TYPE) { +return 'I'; +}if (t === Byte.TYPE) { +return 'B'; +}if (t === Character.TYPE) { +return 'C'; +}if (t === Short.TYPE) { +return 'S'; +}if (t === Boolean.TYPE) { +return 'Z'; +}if (t === Long.TYPE) { +return 'J'; +}if (t === Float.TYPE) { +return 'F'; +}if (t === Double.TYPE) { +return 'D'; +}if (t.isArray()) { +return '['; +}return 'L'; +}); +Clazz.defineMethod(c$, "getTypeString", +function(){ +if (this.isPrimitive()) { +return null; +}if (this.typeString == null) { +var t = this.getTypeInternal(); +var typeName = t.getName().$replace('.', '/'); +var str = (t.isArray()) ? typeName : ("L" + typeName + ';'); +this.typeString = str.intern(); +}return this.typeString; +}); +Clazz.defineMethod(c$, "isPrimitive", +function(){ +var t = this.getTypeInternal(); +return t != null && t.isPrimitive(); +}); +Clazz.defineMethod(c$, "setOffset", +function(newValue){ +this.offset = newValue; +}, "~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.getClass().getName() + '(' + this.getName() + ':' + this.getTypeInternal() + ')'; +}); +c$.sortFields = Clazz.defineMethod(c$, "sortFields", +function(fields){ +if (fields.length > 1) { +var fieldDescComparator = ((Clazz.isClassDefined("java.io.ObjectStreamField$1") ? 0 : java.io.ObjectStreamField.$ObjectStreamField$1$ ()), Clazz.innerTypeInstance(java.io.ObjectStreamField$1, this, null)); +java.util.Arrays.sort(fields, fieldDescComparator); +}}, "~A"); +Clazz.defineMethod(c$, "resolve", +function(loader){ +if (this.typeString.length == 1) { +switch ((this.typeString.charAt(0)).charCodeAt(0)) { +case 73: +this.type = Integer.TYPE; +return; +case 66: +this.type = Byte.TYPE; +return; +case 67: +this.type = Character.TYPE; +return; +case 83: +this.type = Short.TYPE; +return; +case 90: +this.type = Boolean.TYPE; +return; +case 74: +this.type = Long.TYPE; +return; +case 70: +this.type = Float.TYPE; +return; +case 68: +this.type = Double.TYPE; +return; +} +}var className = this.typeString.$replace('/', '.'); +if (className.charAt(0) == 'L') { +className = className.substring(1, className.length - 1); +}try { +var cl = Clazz._4Name(className, false, loader); +this.type = cl; +} catch (e) { +if (Clazz.exceptionOf(e,"ClassNotFoundException")){ +} else { +throw e; +} +} +}, "ClassLoader"); +Clazz.defineMethod(c$, "isUnshared", +function(){ +return this.unshared; +}); +c$.$ObjectStreamField$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.io, "ObjectStreamField$1", null, java.util.Comparator); +Clazz.overrideMethod(c$, "compare", +function(f1, f2){ +return f1.compareTo(f2); +}, "java.io.ObjectStreamField,java.io.ObjectStreamField"); +/*eoif5*/})(); +}; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/OutputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/OutputStream.js new file mode 100755 index 000000000000..f30a5dbbda36 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/OutputStream.js @@ -0,0 +1,22 @@ +Clazz.load(["java.io.Closeable", "$.Flushable"], "java.io.OutputStream", null, function(){ +var c$ = Clazz.declareType(java.io, "OutputStream", null, [java.io.Closeable, java.io.Flushable]); +Clazz.defineMethod(c$, "write", +function(b, off, len){ +if (b == null) { +throw new NullPointerException(); +} else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return; +}for (var i = 0; i < len; i++) { +this.writeByteAsInt(b[off + i]); +} +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "flush", +function(){ +}); +Clazz.overrideMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/PushbackInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/PushbackInputStream.js new file mode 100755 index 000000000000..89aa050d3d3a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/PushbackInputStream.js @@ -0,0 +1,105 @@ +Clazz.load(["java.io.FilterInputStream"], "java.io.PushbackInputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +this.pos = 0; +Clazz.instantialize(this, arguments);}, java.io, "PushbackInputStream", java.io.FilterInputStream); +Clazz.makeConstructor(c$, +function($in, size){ +Clazz.superConstructor(this, java.io.PushbackInputStream, [$in]); +if (size <= 0) { +throw new IllegalArgumentException("size <= 0"); +}this.buf = Clazz.newByteArray (size, 0); +this.pos = size; +}, "java.io.InputStream,~N"); +Clazz.defineMethod(c$, "ensureOpen", +function(){ +if (this.$in == null) throw new java.io.IOException("Stream closed"); +}); +Clazz.overrideMethod(c$, "readByteAsInt", +function(){ +this.ensureOpen(); +if (this.pos < this.buf.length) { +return this.buf[this.pos++] & 0xff; +}return this.$in.readByteAsInt(); +}); +Clazz.defineMethod(c$, "read", +function(b, off, len){ +this.ensureOpen(); +if (b == null) { +throw new NullPointerException(); +} else if (off < 0 || len < 0 || len > b.length - off) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}var avail = this.buf.length - this.pos; +if (avail > 0) { +if (len < avail) { +avail = len; +}System.arraycopy(this.buf, this.pos, b, off, avail); +this.pos += avail; +off += avail; +len -= avail; +}if (len > 0) { +len = this.$in.read(b, off, len); +if (len == -1) { +return avail == 0 ? -1 : avail; +}return avail + len; +}return avail; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "unreadByte", +function(b){ +this.ensureOpen(); +if (this.pos == 0) { +throw new java.io.IOException("Push back buffer is full"); +}this.buf[--this.pos] = b; +}, "~N"); +Clazz.defineMethod(c$, "unread", +function(b, off, len){ +this.ensureOpen(); +if (len > this.pos) { +throw new java.io.IOException("Push back buffer is full"); +}this.pos -= len; +System.arraycopy(b, off, this.buf, this.pos, len); +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "available", +function(){ +this.ensureOpen(); +var n = this.buf.length - this.pos; +var avail = this.$in.available(); +return n > (2147483647 - avail) ? 2147483647 : n + avail; +}); +Clazz.overrideMethod(c$, "skip", +function(n){ +this.ensureOpen(); +if (n <= 0) { +return 0; +}var pskip = this.buf.length - this.pos; +if (pskip > 0) { +if (n < pskip) { +pskip = n; +}this.pos += pskip; +n -= pskip; +}if (n > 0) { +pskip += this.$in.skip(n); +}return pskip; +}, "~N"); +Clazz.overrideMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "mark", +function(readlimit){ +}, "~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +throw new java.io.IOException("mark/reset not supported"); +}); +Clazz.overrideMethod(c$, "close", +function(){ +if (this.$in == null) return; +this.$in.close(); +this.$in = null; +this.buf = null; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/Reader.js b/config/plugins/visualizations/jmol/static/j2s/java/io/Reader.js new file mode 100755 index 000000000000..7c7b94f4b62d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/Reader.js @@ -0,0 +1,43 @@ +Clazz.load(["java.io.Closeable"], "java.io.Reader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.lock = null; +this.skipBuffer = String.fromCharCode(null); +Clazz.instantialize(this, arguments);}, java.io, "Reader", null, java.io.Closeable); +Clazz.makeConstructor(c$, +function(lock){ +if (lock == null) { +throw new NullPointerException(); +}this.lock = lock; +}, "~O"); +Clazz.defineMethod(c$, "skip", +function(n){ +if (n < 0) throw new IllegalArgumentException("skip value is negative"); +var nn = Math.min(n, 8192); +{ +if ((this.skipBuffer == null) || (this.skipBuffer.length < nn)) this.skipBuffer = Clazz.newCharArray (nn, '\0'); +var r = n; +while (r > 0) { +var nc = this.read(this.skipBuffer, 0, Math.min(r, nn)); +if (nc == -1) break; +r -= nc; +} +return n - r; +}}, "~N"); +Clazz.defineMethod(c$, "ready", +function(){ +return false; +}); +Clazz.defineMethod(c$, "markSupported", +function(){ +return false; +}); +Clazz.defineMethod(c$, "mark", +function(readAheadLimit){ +throw new java.io.IOException("mark() not supported"); +}, "~N"); +Clazz.defineMethod(c$, "reset", +function(){ +throw new java.io.IOException("reset() not supported"); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/Serializable.js b/config/plugins/visualizations/jmol/static/j2s/java/io/Serializable.js new file mode 100755 index 000000000000..15d868aa8391 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/Serializable.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.io, "Serializable"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/StringBufferInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/io/StringBufferInputStream.js new file mode 100755 index 000000000000..790abb3b4381 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/StringBufferInputStream.js @@ -0,0 +1,63 @@ +Clazz.load(["java.io.InputStream"], "java.io.StringBufferInputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buffer = null; +this.count = 0; +this.pos = 0; +Clazz.instantialize(this, arguments);}, java.io, "StringBufferInputStream", java.io.InputStream); +Clazz.makeConstructor(c$, +function(str){ +Clazz.superConstructor (this, java.io.StringBufferInputStream, []); +if (str != null) { +this.buffer = str; +this.count = str.length; +} else { +throw new NullPointerException(); +}}, "~S"); +Clazz.overrideMethod(c$, "available", +function(){ +return this.count - this.pos; +}); +Clazz.defineMethod(c$, "read", +function(){ +return this.pos < this.count ? (this.buffer.charAt(this.pos++)).charCodeAt(0) & 0xFF : -1; +}); +Clazz.defineMethod(c$, "read", +function(b, offset, length){ +if (this.pos >= this.count) { +return -1; +}if (b != null) { +if (0 <= offset && offset <= b.length && 0 <= length && length <= b.length - offset) { +if (length == 0) { +return 0; +}var copylen = this.count - this.pos < length ? this.count - this.pos : length; +for (var i = 0; i < copylen; i++) { +b[offset + i] = (this.buffer.charAt(this.pos + i)).charCodeAt(0); +} +this.pos += copylen; +return copylen; +}throw new ArrayIndexOutOfBoundsException(); +}throw new NullPointerException(("K0047")); +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +this.pos = 0; +}); +Clazz.overrideMethod(c$, "skip", +function(n){ +if (n <= 0) { +return 0; +}var numskipped; +if (this.count - this.pos < n) { +numskipped = this.count - this.pos; +this.pos = this.count; +} else { +numskipped = n; +this.pos += n; +}return numskipped; +}, "~N"); +Clazz.overrideMethod(c$, "readByteAsInt", +function(){ +return 0; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/StringReader.js b/config/plugins/visualizations/jmol/static/j2s/java/io/StringReader.js new file mode 100755 index 000000000000..636550e870c5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/StringReader.js @@ -0,0 +1,71 @@ +Clazz.load(["java.io.Reader"], "java.io.StringReader", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.str = null; +this.length = 0; +this.next = 0; +this.$mark = 0; +Clazz.instantialize(this, arguments);}, java.io, "StringReader", java.io.Reader); +Clazz.makeConstructor(c$, +function(s){ +Clazz.superConstructor(this, java.io.StringReader, [s]); +this.str = s; +this.length = s.length; +}, "~S"); +Clazz.defineMethod(c$, "ensureOpen", +function(){ +if (this.str == null) throw new java.io.IOException("Stream closed"); +}); +Clazz.overrideMethod(c$, "read", +function(cbuf, off, len){ +{ +this.ensureOpen(); +if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}if (this.next >= this.length) return -1; +var n = Math.min(this.length - this.next, len); +this.str.getChars(this.next, this.next + n, cbuf, off); +this.next += n; +return n; +}}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "skip", +function(ns){ +{ +this.ensureOpen(); +if (this.next >= this.length) return 0; +var n = Math.min(this.length - this.next, ns); +n = Math.max(-this.next, n); +this.next += n; +return n; +}}, "~N"); +Clazz.overrideMethod(c$, "ready", +function(){ +{ +this.ensureOpen(); +return true; +}}); +Clazz.overrideMethod(c$, "markSupported", +function(){ +return true; +}); +Clazz.overrideMethod(c$, "mark", +function(readAheadLimit){ +if (readAheadLimit < 0) { +throw new IllegalArgumentException("Read-ahead limit < 0"); +}{ +this.ensureOpen(); +this.$mark = this.next; +}}, "~N"); +Clazz.overrideMethod(c$, "reset", +function(){ +{ +this.ensureOpen(); +this.next = this.$mark; +}}); +Clazz.overrideMethod(c$, "close", +function(){ +this.str = null; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/StringWriter.js b/config/plugins/visualizations/jmol/static/j2s/java/io/StringWriter.js new file mode 100755 index 000000000000..f4b8da5cf745 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/StringWriter.js @@ -0,0 +1,77 @@ +Clazz.load(["java.io.Writer"], "java.io.StringWriter", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.buf = null; +Clazz.instantialize(this, arguments);}, java.io, "StringWriter", java.io.Writer); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, java.io.StringWriter); +this.buf = ""; +this.lock = this.buf; +}); +Clazz.makeConstructor(c$, +function(initialSize){ +Clazz.superConstructor (this, java.io.StringWriter, []); +if (initialSize >= 0) { +this.buf = ""; +this.lock = this.buf; +} else { +throw new IllegalArgumentException(); +}}, "~N"); +Clazz.overrideMethod(c$, "close", +function(){ +}); +Clazz.overrideMethod(c$, "flush", +function(){ +}); +Clazz.overrideMethod(c$, "toString", +function(){ +{ +return this.buf; +}}); +Clazz.defineMethod(c$, "write", +function(cbuf, offset, count){ +if (0 <= offset && offset <= cbuf.length && 0 <= count && count <= cbuf.length - offset) { +{ +this.buf += String.instantialize(cbuf, offset, count); +}} else { +throw new IndexOutOfBoundsException(); +}}, "~A,~N,~N"); +Clazz.defineMethod(c$, "write", +function(oneChar){ +{ +this.buf += String.fromCharCode(oneChar); +}}, "~N"); +Clazz.defineMethod(c$, "write", +function(str){ +{ +this.buf += str; +}}, "~S"); +Clazz.defineMethod(c$, "write", +function(str, offset, count){ +var sub = str.substring(offset, offset + count); +{ +this.buf += sub; +}}, "~S,~N,~N"); +Clazz.defineMethod(c$, "append", +function(c){ +this.write(c.charCodeAt(0)); +return this; +}, "~S"); +Clazz.defineMethod(c$, "append", +function(csq){ +if (null == csq) { +this.append("null", 0, "null".length); +} else { +this.append(csq, 0, csq.length); +}return this; +}, "CharSequence"); +Clazz.defineMethod(c$, "append", +function(csq, start, end){ +if (null == csq) { +csq = "null"; +}var output = csq.subSequence(start, end).toString(); +this.write(output, 0, output.length); +return this; +}, "CharSequence,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/io/Writer.js b/config/plugins/visualizations/jmol/static/j2s/java/io/Writer.js new file mode 100755 index 000000000000..e8f0016b29d5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/io/Writer.js @@ -0,0 +1,66 @@ +Clazz.load(["java.io.Closeable", "$.Flushable", "java.lang.Appendable"], "java.io.Writer", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.lock = null; +Clazz.instantialize(this, arguments);}, java.io, "Writer", null, [Appendable, java.io.Closeable, java.io.Flushable]); +Clazz.makeConstructor(c$, +function(){ +this.lock = this; +}); +Clazz.makeConstructor(c$, +function(lock){ +if (lock != null) { +this.lock = lock; +} else { +throw new NullPointerException(); +}}, "~O"); +Clazz.defineMethod(c$, "write", +function(buf){ +this.write(buf, 0, buf.length); +}, "~A"); +Clazz.defineMethod(c$, "write", +function(oneChar){ +{ +var oneCharArray = Clazz.newCharArray (1, '\0'); +oneCharArray[0] = String.fromCharCode(oneChar); +this.write(oneCharArray); +}}, "~N"); +Clazz.defineMethod(c$, "write", +function(str){ +var buf = Clazz.newCharArray (str.length, '\0'); +str.getChars(0, buf.length, buf, 0); +{ +this.write(buf); +}}, "~S"); +Clazz.defineMethod(c$, "write", +function(str, offset, count){ +if (count >= 0) { +var buf = Clazz.newCharArray (count, '\0'); +str.getChars(offset, offset + count, buf, 0); +{ +this.write(buf); +}} else { +throw new StringIndexOutOfBoundsException(); +}}, "~S,~N,~N"); +Clazz.defineMethod(c$, "append", +function(c){ +this.write(c.charCodeAt(0)); +return this; +}, "~S"); +Clazz.defineMethod(c$, "append", +function(csq){ +if (null == csq) { +this.write("null"); +} else { +this.write(csq.toString()); +}return this; +}, "CharSequence"); +Clazz.defineMethod(c$, "append", +function(csq, start, end){ +if (null == csq) { +this.write("null".substring(start, end)); +} else { +this.write(csq.subSequence(start, end).toString()); +}return this; +}, "CharSequence,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/lang/Enum.js b/config/plugins/visualizations/jmol/static/j2s/java/lang/Enum.js new file mode 100755 index 000000000000..bd4e3ee59fa3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/lang/Enum.js @@ -0,0 +1,57 @@ +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$name = null; +this.$ordinal = 0; +Clazz.instantialize(this, arguments);}, java.lang, "Enum", null, [Comparable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(name, ordinal){ +this.$name = name; +this.$ordinal = ordinal; +}, "~S,~N"); +Clazz.defineMethod(c$, "name", +function(){ +return this.$name; +}); +Clazz.defineMethod(c$, "ordinal", +function(){ +return this.$ordinal; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.$name; +}); +Clazz.overrideMethod(c$, "equals", +function(other){ +return this === other; +}, "~O"); +Clazz.overrideMethod(c$, "clone", +function(){ +throw new CloneNotSupportedException(); +}); +Clazz.overrideMethod(c$, "compareTo", +function(o){ +var other = o; +var self = this; +if (self.getClass() !== other.getClass() && self.getDeclaringClass() !== other.getDeclaringClass()) throw new ClassCastException(); +return self.$ordinal - other.$ordinal; +}, "~O"); +Clazz.defineMethod(c$, "getDeclaringClass", +function(){ +var clazz = this.getClass(); +var zuper = clazz.getSuperclass(); +return ((zuper === Enum) ? clazz : zuper); +}); +c$.$valueOf = Clazz.defineMethod(c$, "$valueOf", +function(enumType, name){ +var result = null; +{ +result = enumType.$clazz$[name]; +}if (result != null) return result; +if (name == null) throw new NullPointerException("Name is null"); +throw new IllegalArgumentException("No enum const " + enumType + "." + name); +}, "Class,~S"); +Clazz.overrideMethod(c$, "finalize", +function(){ +}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/lang/Enum0.js b/config/plugins/visualizations/jmol/static/j2s/java/lang/Enum0.js new file mode 100755 index 000000000000..054f08d5913d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/lang/Enum0.js @@ -0,0 +1,81 @@ +// BH removed inner class +Clazz.load(null,"java.lang.Enum",["java.lang.CloneNotSupportedException","$.IllegalArgumentException","$.NullPointerException"],function(){ +var $fz,c$=Clazz.decorateAsClass(function(){ +this.$name=null; +this.$ordinal=0; +Clazz.instantialize(this,arguments); +},java.lang,"Enum",null,[java.io.Serializable,Comparable]); +Clazz.makeConstructor(c$, +function(name,ordinal){ +this.$name=name; +this.$ordinal=ordinal; +},"~S,~N"); +Clazz.defineMethod(c$,"name", +function(){ +return this.$name; +}); +Clazz.defineMethod(c$,"ordinal", +function(){ +return this.$ordinal; +}); +Clazz.overrideMethod(c$,"toString", +function(){ +return this.$name; +}); +Clazz.overrideMethod(c$,"equals", +function(other){ +return this===other; +},"~O"); +Clazz.overrideMethod(c$,"hashCode", +function(){ +return this.$ordinal+(this.$name==null?0:this.$name.hashCode()); +}); +Clazz.overrideMethod(c$,"clone", +function(){ +throw new CloneNotSupportedException(("KA004")); +}); +Clazz.overrideMethod(c$,"compareTo", +function(o){ +return this.$ordinal-o.$ordinal; +},"~O"); +Clazz.defineMethod(c$,"getDeclaringClass", +function(){ +var myClass=this.getClass(); +var mySuperClass=myClass.getSuperclass(); +if(Enum===mySuperClass){ +return myClass; +}return mySuperClass; +}); +c$.$valueOf=Clazz.defineMethod(c$,"$valueOf", +function(enumType,name){ +if((enumType==null)||(name==null)){ +throw new NullPointerException(("KA001")); +}var values=Enum.getValues(enumType); +if(values==null){ +throw new IllegalArgumentException(("KA005")); +}for(var enumConst,$enumConst=0,$$enumConst=values;$enumConst<$$enumConst.length&&((enumConst=$$enumConst[$enumConst])||true);$enumConst++){ +if(enumConst.$name.equals(name)){ +return enumConst; +}} +throw new IllegalArgumentException(("KA006")); +},"Class,~S"); +c$.getValues=Clazz.defineMethod(c$,"getValues", +function(enumType){ +return enumType.values(); +},"Class"); + +//c$.$Enum$1$=function(){ +//Clazz.pu$h(self.c$); + +//c$=Clazz.declareAnonymous(null,"Enum$1",null,java.security.PrivilegedExceptionAction); +//Clazz.overrideMethod(c$,"run", +//function(){ +//var valsMethod=this.f$.enumType.getMethod("values",null); +//valsMethod.setAccessible(true); +//return valsMethod; +//}); +//c$=Clazz.p0p(); +//}; + + +}); diff --git a/config/plugins/visualizations/jmol/static/j2s/java/lang/Thread.js b/config/plugins/visualizations/jmol/static/j2s/java/lang/Thread.js new file mode 100755 index 000000000000..4b7c3c4ad71a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/lang/Thread.js @@ -0,0 +1,105 @@ +Clazz.load(null, "java.lang.Thread", ["java.util.Date"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.target = null; +this.group = null; +this.name = null; +this.priority = 0; +Clazz.instantialize(this, arguments);}, java.lang, "Thread", null, Runnable); +/*LV!1824 unnec constructor*/Clazz.makeConstructor(c$, +function(target){ +this.init(null, target, "Thread-" + new java.util.Date().getTime() + Math.random(), 0); +}, "Runnable"); +Clazz.makeConstructor(c$, +function(group, target){ +this.init(group, target, "Thread-" + new java.util.Date().getTime() + Math.random(), 0); +}, "ThreadGroup,Runnable"); +Clazz.makeConstructor(c$, +function(name){ +this.init(null, null, name, 0); +}, "~S"); +Clazz.makeConstructor(c$, +function(group, name){ +this.init(group, null, name, 0); +}, "ThreadGroup,~S"); +Clazz.makeConstructor(c$, +function(target, name){ +this.init(null, target, name, 0); +}, "Runnable,~S"); +Clazz.makeConstructor(c$, +function(group, target, name){ +this.init(group, target, name, 0); +}, "ThreadGroup,Runnable,~S"); +Clazz.makeConstructor(c$, +function(group, target, name, stackSize){ +this.init(group, target, name, stackSize); +}, "ThreadGroup,Runnable,~S,~N"); +c$.currentThread = Clazz.defineMethod(c$, "currentThread", +function(){ +if (Thread.J2S_THREAD == null) { +Thread.J2S_THREAD = new Thread(); +}return Thread.J2S_THREAD; +}); +c$.sleep = Clazz.defineMethod(c$, "sleep", +function(millis){ +alert ("Thread.sleep is not implemented in Java2Script!"); +}, "~N"); +Clazz.defineMethod(c$, "init", +function(g, target, name, stackSize){ +if (g == null) { +g = new ThreadGroup(); +}this.group = g; +this.target = target; +this.name = name; +this.priority = 5; +}, "ThreadGroup,Runnable,~S,~N"); +Clazz.defineMethod(c$, "start", +function(){ +this.startT(); +}); +Clazz.defineMethod(c$, "startT", +function(){ +{ +window.setTimeout ((function (runnable) { +return function () { +runnable.run (); +}; +}) (this), 0); +}}); +Clazz.defineMethod(c$, "run", +function(){ +if (this.target != null) { +this.target.run(); +}}); +Clazz.defineMethod(c$, "setPriority", +function(newPriority){ +if (newPriority > 10 || newPriority < 1) { +throw new IllegalArgumentException(); +}this.priority = newPriority; +}, "~N"); +Clazz.defineMethod(c$, "getPriority", +function(){ +return this.priority; +}); +Clazz.defineMethod(c$, "setName", +function(name){ +this.name = name; +}, "~S"); +Clazz.defineMethod(c$, "getName", +function(){ +return String.valueOf(this.name); +}); +Clazz.defineMethod(c$, "getThreadGroup", +function(){ +return this.group; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +var group = this.getThreadGroup(); +if (group != null) { +return "Thread[" + this.getName() + "," + this.getPriority() + "," + group.getName() + "]"; +} else { +return "Thread[" + this.getName() + "," + this.getPriority() + "," + "" + "]"; +}}); +c$.J2S_THREAD = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/lang/ThreadGroup.js b/config/plugins/visualizations/jmol/static/j2s/java/lang/ThreadGroup.js new file mode 100755 index 000000000000..e261efa41f69 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/lang/ThreadGroup.js @@ -0,0 +1,37 @@ +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.parent = null; +this.name = null; +this.maxPriority = 0; +Clazz.instantialize(this, arguments);}, java.lang, "ThreadGroup", null); +Clazz.makeConstructor(c$, +function(){ +this.name = "system"; +this.maxPriority = 10; +}); +Clazz.makeConstructor(c$, +function(name){ +this.construct (Thread.currentThread().getThreadGroup(), name); +}, "~S"); +Clazz.makeConstructor(c$, +function(parent, name){ +if (parent == null) { +throw new NullPointerException(); +}this.name = name; +this.parent = parent; +this.maxPriority = 10; +}, "ThreadGroup,~S"); +Clazz.defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz.defineMethod(c$, "getParent", +function(){ +return this.parent; +}); +Clazz.defineMethod(c$, "getMaxPriority", +function(){ +return this.maxPriority; +}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/MalformedURLException.js b/config/plugins/visualizations/jmol/static/j2s/java/net/MalformedURLException.js new file mode 100755 index 000000000000..395526ee786a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/MalformedURLException.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("java.net"); +Clazz.load(["java.io.IOException"], "java.net.MalformedURLException", null, function(){ +var c$ = Clazz.declareType(java.net, "MalformedURLException", java.io.IOException); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, java.net.MalformedURLException, []); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/Parts.js b/config/plugins/visualizations/jmol/static/j2s/java/net/Parts.js new file mode 100755 index 000000000000..a11cacba35da --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/Parts.js @@ -0,0 +1,33 @@ +Clazz.declarePackage("java.net"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.path = null; +this.query = null; +this.ref = null; +Clazz.instantialize(this, arguments);}, java.net, "Parts", null); +Clazz.makeConstructor(c$, +function(file){ +var ind = file.indexOf('#'); +this.ref = ind < 0 ? null : file.substring(ind + 1); +file = ind < 0 ? file : file.substring(0, ind); +var q = file.lastIndexOf('?'); +if (q != -1) { +this.query = file.substring(q + 1); +this.path = file.substring(0, q); +} else { +this.path = file; +}}, "~S"); +Clazz.defineMethod(c$, "getPath", +function(){ +return this.path; +}); +Clazz.defineMethod(c$, "getQuery", +function(){ +return this.query; +}); +Clazz.defineMethod(c$, "getRef", +function(){ +return this.ref; +}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/URL.js b/config/plugins/visualizations/jmol/static/j2s/java/net/URL.js new file mode 100755 index 000000000000..8b3f200fba6b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/URL.js @@ -0,0 +1,250 @@ +Clazz.declarePackage("java.net"); +Clazz.load(["java.util.Hashtable"], "java.net.URL", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.protocol = null; +this.host = null; +this.port = -1; +this.file = null; +this.query = null; +this.authority = null; +this.path = null; +this.userInfo = null; +this.ref = null; +this.handler = null; +this.$hashCode = -1; +Clazz.instantialize(this, arguments);}, java.net, "URL", null); +Clazz.makeConstructor(c$, +function(context, spec, handler){ +{ +switch (arguments.length) { +case 1: +spec = context;context = handler = null; +break; +case 2: +handler = null; +break; +case 3: +if (context == null || Clazz.instanceOf(context, java.net.URL)) +break; +default: +alert("java.net.URL constructor format not supported"); +break; +} +context && context.valueOf && context.valueOf() == null && (context = null); +}var original = spec; +var i; +var limit; +var c; +var start = 0; +var newProtocol = null; +var aRef = false; +var isRelative = false; +try { +limit = spec.length; +while ((limit > 0) && (spec.charAt(limit - 1) <= ' ')) { +limit--; +} +while ((start < limit) && (spec.charAt(start) <= ' ')) { +start++; +} +if (spec.regionMatches(true, start, "url:", 0, 4)) { +start += 4; +}if (start < spec.length && spec.charAt(start) == '#') { +aRef = true; +}for (i = start; !aRef && (i < limit) && ((c = (spec.charAt(i)).charCodeAt(0)) != 47); i++) { +if (c == 58) { +var s = spec.substring(start, i).toLowerCase(); +if (this.isValidProtocol(s)) { +newProtocol = s; +start = i + 1; +}break; +}} +this.protocol = newProtocol; +if ((context != null) && ((newProtocol == null) || newProtocol.equalsIgnoreCase(context.protocol))) { +if (handler == null) { +handler = context.handler; +}if (context.path != null && context.path.startsWith("/")) newProtocol = null; +if (newProtocol == null) { +this.protocol = context.protocol; +this.authority = context.authority; +this.userInfo = context.userInfo; +this.host = context.host; +this.port = context.port; +this.file = context.file; +this.path = context.path; +isRelative = true; +}}if (this.protocol == null) { +throw new java.net.MalformedURLException("no protocol: " + original); +}if (handler == null && (handler = java.net.URL.getURLStreamHandler(this.protocol)) == null) { +throw new java.net.MalformedURLException("unknown protocol: " + this.protocol); +}this.handler = handler; +i = spec.indexOf('#', start); +if (i >= 0) { +this.ref = spec.substring(i + 1, limit); +limit = i; +}if (isRelative && start == limit) { +this.query = context.query; +if (this.ref == null) { +this.ref = context.ref; +}}handler.parseURL(this, spec, start, limit); +} catch (e$$) { +if (Clazz.exceptionOf(e$$,"java.net.MalformedURLException")){ +var e = e$$; +{ +throw e; +} +} else if (Clazz.exceptionOf(e$$, Exception)){ +var e = e$$; +{ +var exception = new java.net.MalformedURLException(e.getMessage()); +exception.initCause(e); +throw exception; +} +} else { +throw e$$; +} +} +}, "java.net.URL,~S,java.net.URLStreamHandler"); +Clazz.defineMethod(c$, "isValidProtocol", +function(protocol){ +var len = protocol.length; +if (len < 1) return false; +var c = protocol.charAt(0); +if (!Character.isLetter(c)) return false; +for (var i = 1; i < len; i++) { +c = protocol.charAt(i); +if (!Character.isLetterOrDigit(c) && c != '.' && c != '+' && c != '-') { +return false; +}} +return true; +}, "~S"); +Clazz.defineMethod(c$, "set5", +function(protocol, host, port, file, ref){ +{ +this.protocol = protocol; +this.host = host; +this.authority = port == -1 ? host : host + ":" + port; +this.port = port; +this.file = file; +this.ref = ref; +this.$hashCode = -1; +var q = file.lastIndexOf('?'); +if (q != -1) { +this.query = file.substring(q + 1); +this.path = file.substring(0, q); +} else this.path = file; +}}, "~S,~S,~N,~S,~S"); +Clazz.defineMethod(c$, "set", +function(protocol, host, port, authority, userInfo, path, query, ref){ +{ +this.protocol = protocol; +this.host = host; +this.port = port; +this.file = query == null ? path : path + "?" + query; +this.userInfo = userInfo; +this.path = path; +this.ref = ref; +this.$hashCode = -1; +this.query = query; +this.authority = authority; +}}, "~S,~S,~N,~S,~S,~S,~S,~S"); +Clazz.defineMethod(c$, "getQuery", +function(){ +return this.query; +}); +Clazz.defineMethod(c$, "getPath", +function(){ +return this.path; +}); +Clazz.defineMethod(c$, "getUserInfo", +function(){ +return this.userInfo; +}); +Clazz.defineMethod(c$, "getAuthority", +function(){ +return this.authority; +}); +Clazz.defineMethod(c$, "getPort", +function(){ +return this.port; +}); +Clazz.defineMethod(c$, "getDefaultPort", +function(){ +return this.handler.getDefaultPort(); +}); +Clazz.defineMethod(c$, "getProtocol", +function(){ +return this.protocol; +}); +Clazz.defineMethod(c$, "getHost", +function(){ +return this.host; +}); +Clazz.defineMethod(c$, "getFile", +function(){ +return this.file; +}); +Clazz.defineMethod(c$, "getRef", +function(){ +return this.ref; +}); +Clazz.overrideMethod(c$, "equals", +function(obj){ +if (!(Clazz.instanceOf(obj,"java.net.URL"))) return false; +var u2 = obj; +return this.handler.equals2(this, u2); +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +if (this.$hashCode != -1) return this.$hashCode; +this.$hashCode = this.handler.hashCode(this); +return this.$hashCode; +}); +Clazz.defineMethod(c$, "sameFile", +function(other){ +return this.handler.sameFile(this, other); +}, "java.net.URL"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.toExternalForm(); +}); +Clazz.defineMethod(c$, "toExternalForm", +function(){ +return this.handler.toExternalForm(this); +}); +Clazz.defineMethod(c$, "openConnection", +function(){ +return this.handler.openConnection(this); +}); +Clazz.defineMethod(c$, "openStream", +function(){ +return this.openConnection().getInputStream(); +}); +Clazz.defineMethod(c$, "getContent", +function(){ +return this.openConnection().getInputStream(); +}); +c$.setURLStreamHandlerFactory = Clazz.defineMethod(c$, "setURLStreamHandlerFactory", +function(fac){ +{ +if (java.net.URL.factory != null) { +throw new Error("factory already defined"); +}var security = System.getSecurityManager(); +if (security != null) { +security.checkSetFactory(); +}java.net.URL.handlers.clear(); +java.net.URL.factory = fac; +}}, "java.net.URLStreamHandlerFactory"); +c$.getURLStreamHandler = Clazz.defineMethod(c$, "getURLStreamHandler", +function(protocol){ +var handler = java.net.URL.handlers.get(protocol); +if (handler == null) { +if (java.net.URL.factory != null) { +handler = java.net.URL.factory.createURLStreamHandler(protocol); +}}return handler; +}, "~S"); +c$.factory = null; +c$.handlers = new java.util.Hashtable(); +c$.streamHandlerLock = new Clazz._O(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/URLConnection.js b/config/plugins/visualizations/jmol/static/j2s/java/net/URLConnection.js new file mode 100755 index 000000000000..d5f27c66ed09 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/URLConnection.js @@ -0,0 +1,56 @@ +Clazz.declarePackage("java.net"); +Clazz.load(null, "java.net.URLConnection", ["java.util.ArrayList"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.url = null; +this.doInput = true; +this.doOutput = false; +this.connected = false; +this.requests = null; +Clazz.instantialize(this, arguments);}, java.net, "URLConnection", null); +Clazz.makeConstructor(c$, +function(url){ +this.url = url; +}, "java.net.URL"); +Clazz.defineMethod(c$, "setDoInput", +function(doinput){ +if (this.connected) throw new IllegalStateException("Already connected"); +this.doInput = doinput; +}, "~B"); +Clazz.defineMethod(c$, "getDoInput", +function(){ +return this.doInput; +}); +Clazz.defineMethod(c$, "setDoOutput", +function(dooutput){ +if (this.connected) throw new IllegalStateException("Already connected"); +this.doOutput = dooutput; +}, "~B"); +Clazz.defineMethod(c$, "getDoOutput", +function(){ +return this.doOutput; +}); +Clazz.defineMethod(c$, "getURL", +function(){ +return this.url; +}); +Clazz.defineMethod(c$, "getInputStream", +function(){ +throw new java.net.UnknownServiceException("protocol doesn't support input"); +}); +Clazz.defineMethod(c$, "getOutputStream", +function(){ +throw new java.net.UnknownServiceException("protocol doesn't support output"); +}); +Clazz.defineMethod(c$, "setRequestProperty", +function(key, value){ +if (this.connected) throw new IllegalStateException("Already connected"); +if (key == null) throw new NullPointerException("key is null"); +if (this.requests == null) this.requests = new java.util.ArrayList(); +for (var i = this.requests.size(); --i >= 0; ) if (this.requests.get(i)[0].equals(key)) { +this.requests.get(i)[1] = value; +return; +} +this.requests.add( Clazz.newArray(-1, [key, value])); +}, "~S,~S"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/URLDecoder.js b/config/plugins/visualizations/jmol/static/j2s/java/net/URLDecoder.js new file mode 100755 index 000000000000..f9c7f1fd7a9d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/URLDecoder.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("java.net"); +(function(){ +var c$ = Clazz.declareType(java.net, "URLDecoder", null); +c$.decode = Clazz.defineMethod(c$, "decode", +function(s){ +return decodeURIComponent(s); +}, "~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/URLEncoder.js b/config/plugins/visualizations/jmol/static/j2s/java/net/URLEncoder.js new file mode 100755 index 000000000000..bc6f2a4bfef6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/URLEncoder.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("java.net"); +(function(){ +var c$ = Clazz.declareType(java.net, "URLEncoder", null); +c$.encode = Clazz.defineMethod(c$, "encode", +function(s){ +return encodeURIComponent(s); +}, "~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/URLStreamHandler.js b/config/plugins/visualizations/jmol/static/j2s/java/net/URLStreamHandler.js new file mode 100755 index 000000000000..5a31043513e7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/URLStreamHandler.js @@ -0,0 +1,170 @@ +Clazz.declarePackage("java.net"); +(function(){ +var c$ = Clazz.declareType(java.net, "URLStreamHandler", null); +Clazz.defineMethod(c$, "openConnectionProxy", +function(u, p){ +throw new UnsupportedOperationException("Method not implemented."); +}, "java.net.URL,java.net.Proxy"); +Clazz.defineMethod(c$, "parseURL", +function(u, spec, start, limit){ +var protocol = u.getProtocol(); +var authority = u.getAuthority(); +var userInfo = u.getUserInfo(); +var host = u.getHost(); +var port = u.getPort(); +var path = u.getPath(); +var query = u.getQuery(); +var ref = u.getRef(); +var isRelPath = false; +var queryOnly = false; +if (start < limit) { +var queryStart = spec.indexOf('?'); +queryOnly = queryStart == start; +if ((queryStart != -1) && (queryStart < limit)) { +query = spec.substring(queryStart + 1, limit); +if (limit > queryStart) limit = queryStart; +spec = spec.substring(0, queryStart); +}}var i = 0; +var isUNCName = (start <= limit - 4) && (spec.charAt(start) == '/') && (spec.charAt(start + 1) == '/') && (spec.charAt(start + 2) == '/') && (spec.charAt(start + 3) == '/'); +if (!isUNCName && (start <= limit - 2) && (spec.charAt(start) == '/') && (spec.charAt(start + 1) == '/')) { +start += 2; +i = spec.indexOf('/', start); +if (i < 0) { +i = spec.indexOf('?', start); +if (i < 0) i = limit; +}host = authority = spec.substring(start, i); +var ind = authority.indexOf('@'); +if (ind != -1) { +userInfo = authority.substring(0, ind); +host = authority.substring(ind + 1); +} else { +userInfo = null; +}if (host != null) { +if (host.length > 0 && (host.charAt(0) == '[')) { +throw new IllegalArgumentException("Invalid host: " + host); +}ind = host.indexOf(':'); +port = -1; +if (ind >= 0) { +if (host.length > (ind + 1)) { +port = Integer.parseInt(host.substring(ind + 1)); +}host = host.substring(0, ind); +}} else { +host = ""; +}if (port < -1) throw new IllegalArgumentException("Invalid port number :" + port); +start = i; +if (authority.length > 0) path = ""; +}if (host == null) { +host = ""; +}if (start < limit) { +if (spec.charAt(start) == '/') { +path = spec.substring(start, limit); +} else if (path != null && path.length > 0) { +isRelPath = true; +var ind = path.lastIndexOf('/'); +var seperator = ""; +if (ind == -1 && authority != null) seperator = "/"; +path = path.substring(0, ind + 1) + seperator + spec.substring(start, limit); +} else { +var seperator = (authority != null) ? "/" : ""; +path = seperator + spec.substring(start, limit); +}} else if (queryOnly && path != null) { +var ind = path.lastIndexOf('/'); +if (ind < 0) ind = 0; +path = path.substring(0, ind) + "/"; +}if (path == null) path = ""; +if (isRelPath) { +while ((i = path.indexOf("/./")) >= 0) { +path = path.substring(0, i) + path.substring(i + 2); +} +i = 0; +while ((i = path.indexOf("/../", i)) >= 0) { +if (i > 0 && (limit = path.lastIndexOf('/', i - 1)) >= 0 && (path.indexOf("/../", limit) != 0)) { +path = path.substring(0, limit) + path.substring(i + 3); +i = 0; +} else { +i = i + 3; +}} +while (path.endsWith("/..")) { +i = path.indexOf("/.."); +if ((limit = path.lastIndexOf('/', i - 1)) >= 0) { +path = path.substring(0, limit + 1); +} else { +break; +}} +if (path.startsWith("./") && path.length > 2) path = path.substring(2); +if (path.endsWith("/.")) path = path.substring(0, path.length - 1); +}this.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~N,~N"); +Clazz.defineMethod(c$, "getDefaultPort", +function(){ +return -1; +}); +Clazz.defineMethod(c$, "equals2", +function(u1, u2){ +var ref1 = u1.getRef(); +var ref2 = u2.getRef(); +return (ref1 === ref2 || (ref1 != null && ref1.equals(ref2))) && this.sameFile(u1, u2); +}, "java.net.URL,java.net.URL"); +Clazz.defineMethod(c$, "hashCode", +function(u){ +var h = 0; +var protocol = u.getProtocol(); +if (protocol != null) h += protocol.hashCode(); +h += u.toString().hashCode(); +var file = u.getFile(); +if (file != null) h += file.hashCode(); +if (u.getPort() == -1) h += this.getDefaultPort(); + else h += u.getPort(); +var ref = u.getRef(); +if (ref != null) h += ref.hashCode(); +return h; +}, "java.net.URL"); +Clazz.defineMethod(c$, "sameFile", +function(u1, u2){ +if (!((u1.getProtocol() === u2.getProtocol()) || (u1.getProtocol() != null && u1.getProtocol().equalsIgnoreCase(u2.getProtocol())))) return false; +if (!(u1.getFile() === u2.getFile() || (u1.getFile() != null && u1.getFile().equals(u2.getFile())))) return false; +var port1; +var port2; +port1 = (u1.getPort() != -1) ? u1.getPort() : u1.handler.getDefaultPort(); +port2 = (u2.getPort() != -1) ? u2.getPort() : u2.handler.getDefaultPort(); +if (port1 != port2) return false; +if (!this.hostsEqual(u1, u2)) return false; +return true; +}, "java.net.URL,java.net.URL"); +Clazz.defineMethod(c$, "hostsEqual", +function(u1, u2){ +if (u1.getHost() != null && u2.getHost() != null) return u1.getHost().equalsIgnoreCase(u2.getHost()); +return u1.getHost() == null && u2.getHost() == null; +}, "java.net.URL,java.net.URL"); +Clazz.defineMethod(c$, "toExternalForm", +function(u){ +return ""; +}, "java.net.URL"); +Clazz.defineMethod(c$, "setURL", +function(u, protocol, host, port, authority, userInfo, path, query, ref){ +if (this !== u.handler) { +throw new SecurityException("handler for url different from this handler"); +}u.set(u.getProtocol(), host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~S,~N,~S,~S,~S,~S,~S"); +Clazz.defineMethod(c$, "setURLDeprecated", +function(u, protocol, host, port, file, ref){ +var authority = null; +var userInfo = null; +if (host != null && host.length != 0) { +authority = (port == -1) ? host : host + ":" + port; +var at = host.lastIndexOf('@'); +if (at != -1) { +userInfo = host.substring(0, at); +host = host.substring(at + 1); +}}var path = null; +var query = null; +if (file != null) { +var q = file.lastIndexOf('?'); +if (q != -1) { +query = file.substring(q + 1); +path = file.substring(0, q); +} else path = file; +}this.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); +}, "java.net.URL,~S,~S,~N,~S,~S"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/URLStreamHandlerFactory.js b/config/plugins/visualizations/jmol/static/j2s/java/net/URLStreamHandlerFactory.js new file mode 100755 index 000000000000..53fc798da0e2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/URLStreamHandlerFactory.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("java.net"); +Clazz.declareInterface(java.net, "URLStreamHandlerFactory"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/net/UnknownServiceException.js b/config/plugins/visualizations/jmol/static/j2s/java/net/UnknownServiceException.js new file mode 100755 index 000000000000..ba29baa49c3c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/net/UnknownServiceException.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("java.net"); +Clazz.load(["java.io.IOException"], "java.net.UnknownServiceException", null, function(){ +var c$ = Clazz.declareType(java.net, "UnknownServiceException", java.io.IOException); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, java.net.UnknownServiceException, []); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/text/MessageFormat.js b/config/plugins/visualizations/jmol/static/j2s/java/text/MessageFormat.js new file mode 100755 index 000000000000..9dd82e6299ed --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/text/MessageFormat.js @@ -0,0 +1,27 @@ +Clazz.declarePackage("java.text"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pattern = null; +Clazz.instantialize(this, arguments);}, java.text, "MessageFormat", null); +Clazz.makeConstructor(c$, +function(pattern){ +this.pattern = pattern; +}, "~S"); +Clazz.makeConstructor(c$, +function(pattern, locale){ +this.pattern = pattern; +}, "~S,java.util.Locale"); +c$.format = Clazz.defineMethod(c$, "format", +function(pattern, args){ +return pattern.replace (/\{(\d+)\}/g, function ($0, $1) { +var i = parseInt ($1); +if (args == null) return null; +return args[i]; +}); +}, "~S,~A"); +Clazz.defineMethod(c$, "format", +function(obj){ +return java.text.MessageFormat.format(this.pattern, Clazz.newArray(-1, [obj])); +}, "~O"); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractCollection.js b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractCollection.js new file mode 100755 index 000000000000..945e6cb6a92f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractCollection.js @@ -0,0 +1,136 @@ +Clazz.load(["java.util.Collection"], "java.util.AbstractCollection", ["java.lang.reflect.Array"], function(){ +var c$ = Clazz.declareType(java.util, "AbstractCollection", null, java.util.Collection); +/*LV!1824 unnec constructor*/Clazz.overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz.overrideMethod(c$, "addAll", +function(collection){ +var result = false; +var it = collection.iterator(); +while (it.hasNext()) { +if (this.add(it.next())) { +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "clear", +function(){ +var it = this.iterator(); +while (it.hasNext()) { +it.next(); +it.remove(); +} +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +var it = this.iterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "containsAll", +function(collection){ +var it = collection.iterator(); +while (it.hasNext()) { +if (!this.contains(it.next())) { +return false; +}} +return true; +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz.overrideMethod(c$, "remove", +function(object){ +var it = this.iterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +it.remove(); +return true; +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +it.remove(); +return true; +}} +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "removeAll", +function(collection){ +var result = false; +var it = this.iterator(); +while (it.hasNext()) { +if (collection.contains(it.next())) { +it.remove(); +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "retainAll", +function(collection){ +var result = false; +var it = this.iterator(); +while (it.hasNext()) { +if (!collection.contains(it.next())) { +it.remove(); +result = true; +}} +return result; +}, "java.util.Collection"); +Clazz.defineMethod(c$, "toArray", +function(){ +var size = this.size(); +var index = 0; +var it = this.iterator(); +var array = new Array(size); +while (index < size) { +array[index++] = it.next(); +} +return array; +}); +Clazz.defineMethod(c$, "toArray", +function(contents){ +var size = this.size(); +var index = 0; +if (size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, size); +}for (var entry, $entry = this.iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +contents[index++] = entry; +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +Clazz.overrideMethod(c$, "toString", +function(){ +if (this.isEmpty()) { +return "[]"; +}var buffer = "["; +var it = this.iterator(); +while (it.hasNext()) { +var next = it.next(); +if (next !== this) { +buffer += next; +} else { +buffer += ("(this Collection)"); +}if (it.hasNext()) { +buffer += (", "); +}} +buffer += (']'); +return buffer; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractList.js b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractList.js new file mode 100755 index 000000000000..5b9939c96671 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractList.js @@ -0,0 +1,426 @@ +Clazz.load(["java.util.AbstractCollection", "$.Iterator", "$.List", "$.ListIterator", "$.RandomAccess"], "java.util.AbstractList", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.modCount = 0; +Clazz.instantialize(this, arguments);}, java.util, "AbstractList", java.util.AbstractCollection, java.util.List); +Clazz.defineMethod(c$, "add", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz.defineMethod(c$, "add", +function(object){ +this.add(this.size(), object); +return true; +}, "~O"); +Clazz.defineMethod(c$, "addAll", +function(location, collection){ +var it = collection.iterator(); +while (it.hasNext()) { +this.add(location++, it.next()); +} +return !collection.isEmpty(); +}, "~N,java.util.Collection"); +Clazz.overrideMethod(c$, "clear", +function(){ +this.removeRange(0, this.size()); +}); +Clazz.overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz.instanceOf(object,"java.util.List")) { +var list = object; +if (list.size() != this.size()) { +return false; +}var it1 = this.iterator(); +var it2 = list.iterator(); +while (it1.hasNext()) { +var e1 = it1.next(); +var e2 = it2.next(); +if (!(e1 == null ? e2 == null : e1.equals(e2))) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +var result = 1; +var it = this.iterator(); +while (it.hasNext()) { +var object = it.next(); +result = (31 * result) + (object == null ? 0 : object.hashCode()); +} +return result; +}); +Clazz.overrideMethod(c$, "indexOf", +function(object){ +var it = this.listIterator(); +if (object != null) { +while (it.hasNext()) { +if (object.equals(it.next())) { +return it.previousIndex(); +}} +} else { +while (it.hasNext()) { +if (it.next() == null) { +return it.previousIndex(); +}} +}return -1; +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.AbstractList.SimpleListIterator(this); +}); +Clazz.overrideMethod(c$, "lastIndexOf", +function(object){ +var it = this.listIterator(this.size()); +if (object != null) { +while (it.hasPrevious()) { +if (object.equals(it.previous())) { +return it.nextIndex(); +}} +} else { +while (it.hasPrevious()) { +if (it.previous() == null) { +return it.nextIndex(); +}} +}return -1; +}, "~O"); +Clazz.defineMethod(c$, "listIterator", +function(){ +return this.listIterator(0); +}); +Clazz.defineMethod(c$, "listIterator", +function(location){ +return new java.util.AbstractList.FullListIterator(this, location); +}, "~N"); +Clazz.defineMethod(c$, "remove", +function(location){ +throw new UnsupportedOperationException(); +}, "~N"); +Clazz.defineMethod(c$, "removeRange", +function(start, end){ +var it = this.listIterator(start); +for (var i = start; i < end; i++) { +it.next(); +it.remove(); +} +}, "~N,~N"); +Clazz.overrideMethod(c$, "set", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz.overrideMethod(c$, "subList", +function(start, end){ +if (0 <= start && end <= this.size()) { +if (start <= end) { +if (Clazz.instanceOf(this,"java.util.RandomAccess")) { +return new java.util.AbstractList.SubAbstractListRandomAccess(this, start, end); +}return new java.util.AbstractList.SubAbstractList(this, start, end); +}throw new IllegalArgumentException(); +}throw new IndexOutOfBoundsException(); +}, "~N,~N"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pos = -1; +this.expectedModCount = 0; +this.lastPosition = -1; +this.list = null; +Clazz.instantialize(this, arguments);}, java.util.AbstractList, "SimpleListIterator", null, java.util.Iterator); +Clazz.makeConstructor(c$, +function(l){ +this.list = l; +this.expectedModCount = l.modCount; +}, "java.util.AbstractList"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.pos + 1 < this.list.size(); +}); +Clazz.overrideMethod(c$, "next", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +var result = this.list.get(this.pos + 1); +this.lastPosition = ++this.pos; +return result; +} catch (e) { +if (Clazz.exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}throw new java.util.ConcurrentModificationException(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.remove(this.lastPosition); +} catch (e) { +if (Clazz.exceptionOf(e,"IndexOutOfBoundsException")){ +throw new IllegalStateException(); +} else { +throw e; +} +} +if (this.list.modCount != this.expectedModCount) { +this.expectedModCount++; +}if (this.pos == this.lastPosition) { +this.pos--; +}this.lastPosition = -1; +} else { +throw new java.util.ConcurrentModificationException(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.AbstractList, "FullListIterator", java.util.AbstractList.SimpleListIterator, java.util.ListIterator); +Clazz.makeConstructor(c$, +function(list, start){ +Clazz.superConstructor(this, java.util.AbstractList.FullListIterator, [list]); +if (0 <= start && start <= list.size()) { +this.pos = start - 1; +} else { +throw new IndexOutOfBoundsException(); +}}, "java.util.AbstractList,~N"); +Clazz.overrideMethod(c$, "add", +function(object){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.add(this.pos + 1, object); +} catch (e) { +if (Clazz.exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +this.pos++; +this.lastPosition = -1; +if (this.list.modCount != this.expectedModCount) { +this.expectedModCount++; +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +Clazz.overrideMethod(c$, "hasPrevious", +function(){ +return this.pos >= 0; +}); +Clazz.overrideMethod(c$, "nextIndex", +function(){ +return this.pos + 1; +}); +Clazz.overrideMethod(c$, "previous", +function(){ +if (this.expectedModCount == this.list.modCount) { +try { +var result = this.list.get(this.pos); +this.lastPosition = this.pos; +this.pos--; +return result; +} catch (e) { +if (Clazz.exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}throw new java.util.ConcurrentModificationException(); +}); +Clazz.overrideMethod(c$, "previousIndex", +function(){ +return this.pos; +}); +Clazz.overrideMethod(c$, "set", +function(object){ +if (this.expectedModCount == this.list.modCount) { +try { +this.list.set(this.lastPosition, object); +} catch (e) { +if (Clazz.exceptionOf(e,"IndexOutOfBoundsException")){ +throw new IllegalStateException(); +} else { +throw e; +} +} +} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.AbstractList, "SubAbstractListRandomAccess", java.util.AbstractList.SubAbstractList, java.util.RandomAccess); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.fullList = null; +this.offset = 0; +this.$size = 0; +Clazz.instantialize(this, arguments);}, java.util.AbstractList, "SubAbstractList", java.util.AbstractList); +Clazz.makeConstructor(c$, +function(list, start, end){ +Clazz.superConstructor(this, java.util.AbstractList.SubAbstractList); +this.fullList = list; +this.modCount = this.fullList.modCount; +this.offset = start; +this.$size = end - start; +}, "java.util.AbstractList,~N,~N"); +Clazz.defineMethod(c$, "add", +function(location, object){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +this.fullList.add(location + this.offset, object); +this.$size++; +this.modCount = this.fullList.modCount; +} else { +throw new IndexOutOfBoundsException(); +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~N,~O"); +Clazz.defineMethod(c$, "addAll", +function(location, collection){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +var result = this.fullList.addAll(location + this.offset, collection); +if (result) { +this.$size += collection.size(); +this.modCount = this.fullList.modCount; +}return result; +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N,java.util.Collection"); +Clazz.defineMethod(c$, "addAll", +function(collection){ +if (this.modCount == this.fullList.modCount) { +var result = this.fullList.addAll(this.offset + this.$size, collection); +if (result) { +this.$size += collection.size(); +this.modCount = this.fullList.modCount; +}return result; +}throw new java.util.ConcurrentModificationException(); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "get", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +return this.fullList.get(location + this.offset); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return this.listIterator(0); +}); +Clazz.defineMethod(c$, "listIterator", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location <= this.$size) { +return new java.util.AbstractList.SubAbstractList.SubAbstractListIterator(this.fullList.listIterator(location + this.offset), this, this.offset, this.$size); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz.defineMethod(c$, "remove", +function(location){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +var result = this.fullList.remove(location + this.offset); +this.$size--; +this.modCount = this.fullList.modCount; +return result; +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N"); +Clazz.defineMethod(c$, "removeRange", +function(start, end){ +if (start != end) { +if (this.modCount == this.fullList.modCount) { +this.fullList.removeRange(start + this.offset, end + this.offset); +this.$size -= end - start; +this.modCount = this.fullList.modCount; +} else { +throw new java.util.ConcurrentModificationException(); +}}}, "~N,~N"); +Clazz.defineMethod(c$, "set", +function(location, object){ +if (this.modCount == this.fullList.modCount) { +if (0 <= location && location < this.$size) { +return this.fullList.set(location + this.offset, object); +}throw new IndexOutOfBoundsException(); +}throw new java.util.ConcurrentModificationException(); +}, "~N,~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.$size; +}); +Clazz.defineMethod(c$, "sizeChanged", +function(increment){ +if (increment) { +this.$size++; +} else { +this.$size--; +}this.modCount = this.fullList.modCount; +}, "~B"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.subList = null; +this.iterator = null; +this.start = 0; +this.end = 0; +Clazz.instantialize(this, arguments);}, java.util.AbstractList.SubAbstractList, "SubAbstractListIterator", null, java.util.ListIterator); +Clazz.makeConstructor(c$, +function(it, list, offset, length){ +this.iterator = it; +this.subList = list; +this.start = offset; +this.end = this.start + length; +}, "java.util.ListIterator,java.util.AbstractList.SubAbstractList,~N,~N"); +Clazz.defineMethod(c$, "add", +function(object){ +this.iterator.add(object); +this.subList.sizeChanged(true); +this.end++; +}, "~O"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.iterator.nextIndex() < this.end; +}); +Clazz.overrideMethod(c$, "hasPrevious", +function(){ +return this.iterator.previousIndex() >= this.start; +}); +Clazz.defineMethod(c$, "next", +function(){ +if (this.iterator.nextIndex() < this.end) { +return this.iterator.next(); +}throw new java.util.NoSuchElementException(); +}); +Clazz.defineMethod(c$, "nextIndex", +function(){ +return this.iterator.nextIndex() - this.start; +}); +Clazz.defineMethod(c$, "previous", +function(){ +if (this.iterator.previousIndex() >= this.start) { +return this.iterator.previous(); +}throw new java.util.NoSuchElementException(); +}); +Clazz.defineMethod(c$, "previousIndex", +function(){ +var previous = this.iterator.previousIndex(); +if (previous >= this.start) { +return previous - this.start; +}return -1; +}); +Clazz.defineMethod(c$, "remove", +function(){ +this.iterator.remove(); +this.subList.sizeChanged(false); +this.end--; +}); +Clazz.defineMethod(c$, "set", +function(object){ +this.iterator.set(object); +}, "~O"); +/*eoif3*/})(); +/*eoif3*/})(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractMap.js b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractMap.js new file mode 100755 index 000000000000..437dfb97867a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractMap.js @@ -0,0 +1,255 @@ +Clazz.load(["java.util.Map"], "java.util.AbstractMap", ["java.util.AbstractCollection", "$.AbstractSet", "$.Iterator"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$keySet = null; +this.$values = null; +Clazz.instantialize(this, arguments);}, java.util, "AbstractMap", null, java.util.Map); +Clazz.overrideMethod(c$, "clear", +function(){ +this.entrySet().clear(); +}); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +if (key.equals(it.next().getKey())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next().getKey() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "containsValue", +function(value){ +var it = this.entrySet().iterator(); +if (value != null) { +while (it.hasNext()) { +if (value.equals(it.next().getValue())) { +return true; +}} +} else { +while (it.hasNext()) { +if (it.next().getValue() == null) { +return true; +}} +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz.instanceOf(object,"java.util.Map")) { +var map = object; +if (this.size() != map.size()) { +return false; +}var objectSet = map.entrySet(); +var it = this.entrySet().iterator(); +while (it.hasNext()) { +if (!objectSet.contains(it.next())) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "get", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +var entry = it.next(); +if (key.equals(entry.getKey())) { +return entry.getValue(); +}} +} else { +while (it.hasNext()) { +var entry = it.next(); +if (entry.getKey() == null) { +return entry.getValue(); +}} +}return null; +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +var result = 0; +var it = this.entrySet().iterator(); +while (it.hasNext()) { +result += it.next().hashCode(); +} +return result; +}); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz.overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = ((Clazz.isClassDefined("java.util.AbstractMap$1") ? 0 : java.util.AbstractMap.$AbstractMap$1$ ()), Clazz.innerTypeInstance(java.util.AbstractMap$1, this, null)); +}return this.$keySet; +}); +Clazz.overrideMethod(c$, "put", +function(key, value){ +throw new UnsupportedOperationException(); +}, "~O,~O"); +Clazz.overrideMethod(c$, "putAll", +function(map){ +this.putAllAM(map); +}, "java.util.Map"); +Clazz.defineMethod(c$, "putAllAM", +function(map){ +if (!map.isEmpty()) for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +this.put(entry.getKey(), entry.getValue()); +} +}, "java.util.Map"); +Clazz.overrideMethod(c$, "remove", +function(key){ +var it = this.entrySet().iterator(); +if (key != null) { +while (it.hasNext()) { +var entry = it.next(); +if (key.equals(entry.getKey())) { +it.remove(); +return entry.getValue(); +}} +} else { +while (it.hasNext()) { +var entry = it.next(); +if (entry.getKey() == null) { +it.remove(); +return entry.getValue(); +}} +}return null; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.entrySet().size(); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +if (this.isEmpty()) { +return "{}"; +}var buffer = "{"; +var it = this.entrySet().iterator(); +while (it.hasNext()) { +var entry = it.next(); +var key = entry.getKey(); +if (key !== this) { +buffer += (key); +} else { +buffer += ("(this Map)"); +}buffer += ('='); +var value = entry.getValue(); +if (value !== this) { +buffer += (value); +} else { +buffer += ("(this Map)"); +}if (it.hasNext()) { +buffer += (", "); +}} +buffer += ('}'); +return buffer; +}); +Clazz.overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = ((Clazz.isClassDefined("java.util.AbstractMap$2") ? 0 : java.util.AbstractMap.$AbstractMap$2$ ()), Clazz.innerTypeInstance(java.util.AbstractMap$2, this, null)); +}return this.$values; +}); +Clazz.defineMethod(c$, "clone", +function(){ +return this.cloneAM(); +}); +Clazz.defineMethod(c$, "cloneAM", +function(){ +var result; +{ +result = Clazz.clone(this); +}result.$keySet = null; +result.$values = null; +return result; +}); +c$.$AbstractMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "AbstractMap$1", java.util.AbstractSet); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.AbstractMap"].containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.AbstractMap"].size(); +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return ((Clazz.isClassDefined("java.util.AbstractMap$1$1") ? 0 : java.util.AbstractMap.$AbstractMap$1$1$ ()), Clazz.innerTypeInstance(java.util.AbstractMap$1$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.setIterator = null; +Clazz.instantialize(this, arguments);}, java.util, "AbstractMap$1$1", null, java.util.Iterator); +Clazz.prepareFields (c$, function(){ +this.setIterator = this.b$["java.util.AbstractMap"].entrySet().iterator(); +}); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.setIterator.hasNext(); +}); +Clazz.overrideMethod(c$, "next", +function(){ +return this.setIterator.next().getKey(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +this.setIterator.remove(); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "AbstractMap$2", java.util.AbstractCollection); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.AbstractMap"].size(); +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.AbstractMap"].containsValue(object); +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return ((Clazz.isClassDefined("java.util.AbstractMap$2$1") ? 0 : java.util.AbstractMap.$AbstractMap$2$1$ ()), Clazz.innerTypeInstance(java.util.AbstractMap$2$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$AbstractMap$2$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.setIterator = null; +Clazz.instantialize(this, arguments);}, java.util, "AbstractMap$2$1", null, java.util.Iterator); +Clazz.prepareFields (c$, function(){ +this.setIterator = this.b$["java.util.AbstractMap"].entrySet().iterator(); +}); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.setIterator.hasNext(); +}); +Clazz.overrideMethod(c$, "next", +function(){ +return this.setIterator.next().getValue(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +this.setIterator.remove(); +}); +/*eoif5*/})(); +}; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractQueue.js b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractQueue.js new file mode 100755 index 000000000000..5306426a1e08 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractQueue.js @@ -0,0 +1,41 @@ +Clazz.load(["java.util.AbstractCollection", "$.Queue"], "java.util.AbstractQueue", null, function(){ +var c$ = Clazz.declareType(java.util, "AbstractQueue", java.util.AbstractCollection, java.util.Queue); +Clazz.overrideMethod(c$, "add", +function(o){ +if (null == o) { +throw new NullPointerException(); +}if (this.offer(o)) { +return true; +}throw new IllegalStateException(); +}, "~O"); +Clazz.overrideMethod(c$, "addAll", +function(c){ +if (null == c) { +throw new NullPointerException(); +}if (this === c) { +throw new IllegalArgumentException(); +}return Clazz.superCall(this, java.util.AbstractQueue, "addAll", [c]); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "remove", +function(){ +var o = this.poll(); +if (null == o) { +throw new java.util.NoSuchElementException(); +}return o; +}); +Clazz.overrideMethod(c$, "element", +function(){ +var o = this.peek(); +if (null == o) { +throw new java.util.NoSuchElementException(); +}return o; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +var o; +do { +o = this.poll(); +} while (null != o); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractSequentialList.js b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractSequentialList.js new file mode 100755 index 000000000000..11d9bc1d8b4e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractSequentialList.js @@ -0,0 +1,57 @@ +Clazz.load(["java.util.AbstractList"], "java.util.AbstractSequentialList", null, function(){ +var c$ = Clazz.declareType(java.util, "AbstractSequentialList", java.util.AbstractList); +Clazz.defineMethod(c$, "add", +function(location, object){ +this.listIterator(location).add(object); +}, "~N,~O"); +Clazz.defineMethod(c$, "addAll", +function(location, collection){ +var it = this.listIterator(location); +var colIt = collection.iterator(); +var next = it.nextIndex(); +while (colIt.hasNext()) { +it.add(colIt.next()); +it.previous(); +} +return next != it.nextIndex(); +}, "~N,java.util.Collection"); +Clazz.overrideMethod(c$, "get", +function(location){ +try { +return this.listIterator(location).next(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.util.NoSuchElementException")){ +throw new IndexOutOfBoundsException(); +} else { +throw e; +} +} +}, "~N"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return this.listIterator(0); +}); +Clazz.defineMethod(c$, "remove", +function(location){ +try { +var it = this.listIterator(location); +var result = it.next(); +it.remove(); +return result; +} catch (e) { +if (Clazz.exceptionOf(e,"java.util.NoSuchElementException")){ +throw new IndexOutOfBoundsException(); +} else { +throw e; +} +} +}, "~N"); +Clazz.overrideMethod(c$, "set", +function(location, object){ +var it = this.listIterator(location); +var result = it.next(); +it.set(object); +return result; +}, "~N,~O"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractSet.js b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractSet.js new file mode 100755 index 000000000000..f7b8b4d09063 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractSet.js @@ -0,0 +1,40 @@ +Clazz.load(["java.util.AbstractCollection", "$.Set"], "java.util.AbstractSet", null, function(){ +var c$ = Clazz.declareType(java.util, "AbstractSet", java.util.AbstractCollection, java.util.Set); +Clazz.overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz.instanceOf(object,"java.util.Set")) { +var s = object; +return this.size() == s.size() && this.containsAll(s); +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +var result = 0; +var it = this.iterator(); +while (it.hasNext()) { +var next = it.next(); +result += next == null ? 0 : next.hashCode(); +} +return result; +}); +Clazz.overrideMethod(c$, "removeAll", +function(collection){ +var result = false; +if (this.size() <= collection.size()) { +var it = this.iterator(); +while (it.hasNext()) { +if (collection.contains(it.next())) { +it.remove(); +result = true; +}} +} else { +var it = collection.iterator(); +while (it.hasNext()) { +result = this.remove(it.next()) || result; +} +}return result; +}, "java.util.Collection"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractStringBuilder.js b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractStringBuilder.js new file mode 100755 index 000000000000..e133df281800 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/AbstractStringBuilder.js @@ -0,0 +1,412 @@ +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.value = null; +this.count = 0; +this.shared = false; +Clazz.instantialize(this, arguments);}, java.util, "AbstractStringBuilder", null); +Clazz.makeConstructor(c$, +function(){ +this.value = Clazz.newCharArray (16, '\0'); +}); +Clazz.makeConstructor(c$, +function(capacity){ +if (capacity < 0) throw new NegativeArraySizeException(); +this.value = Clazz.newCharArray (capacity, '\0'); +}, "~N"); +Clazz.makeConstructor(c$, +function(string){ +this.count = string.length; +this.shared = false; +this.value = Clazz.newCharArray (this.count + 16, '\0'); +string.getChars(0, this.count, this.value, 0); +}, "~S"); +Clazz.defineMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz.defineMethod(c$, "shareValue", +function(){ +this.shared = true; +return this.value; +}); +Clazz.defineMethod(c$, "set", +function(val, len){ +if (val == null) val = Clazz.newCharArray (0, '\0'); +if (val.length < len) throw new java.io.InvalidObjectException(("K0199")); +this.shared = false; +this.value = val; +this.count = len; +}, "~A,~N"); +Clazz.defineMethod(c$, "enlargeBuffer", +function(min){ +var twice = (this.value.length << 1) + 2; +var newData = Clazz.newCharArray (min > twice ? min : twice, '\0'); +System.arraycopy(this.value, 0, newData, 0, this.count); +this.value = newData; +this.shared = false; +}, "~N"); +Clazz.defineMethod(c$, "appendNull", +function(){ +var newSize = this.count + 4; +if (newSize > this.value.length) { +this.enlargeBuffer(newSize); +} else if (this.shared) { +this.value = this.value.clone(); +this.shared = false; +}this.value[this.count++] = 'n'; +this.value[this.count++] = 'u'; +this.value[this.count++] = 'l'; +this.value[this.count++] = 'l'; +}); +Clazz.defineMethod(c$, "append0", +function(chars){ +var newSize = this.count + chars.length; +if (newSize > this.value.length) { +this.enlargeBuffer(newSize); +} else if (this.shared) { +this.value = this.value.clone(); +this.shared = false; +}System.arraycopy(chars, 0, this.value, this.count, chars.length); +this.count = newSize; +}, "~A"); +Clazz.defineMethod(c$, "append0", +function(chars, start, length){ +if (chars == null) { +throw new NullPointerException(); +}if (start >= 0 && 0 <= length && length <= chars.length - start) { +var newSize = this.count + length; +if (newSize > this.value.length) { +this.enlargeBuffer(newSize); +} else if (this.shared) { +this.value = this.value.clone(); +this.shared = false; +}System.arraycopy(chars, start, this.value, this.count, length); +this.count = newSize; +} else { +throw new ArrayIndexOutOfBoundsException(); +}}, "~A,~N,~N"); +Clazz.defineMethod(c$, "append0", +function(ch){ +if (this.count == this.value.length) { +this.enlargeBuffer(this.count + 1); +}if (this.shared) { +this.value = this.value.clone(); +this.shared = false; +}this.value[this.count++] = ch; +}, "~S"); +Clazz.defineMethod(c$, "append0", +function(string){ +if (string == null) { +this.appendNull(); +return; +}var adding = string.length; +var newSize = this.count + adding; +if (newSize > this.value.length) { +this.enlargeBuffer(newSize); +} else if (this.shared) { +this.value = this.value.clone(); +this.shared = false; +}string.getChars(0, adding, this.value, this.count); +this.count = newSize; +}, "~S"); +Clazz.defineMethod(c$, "append0", +function(s, start, end){ +if (s == null) s = "null"; +if (start < 0 || end < 0 || start > end || end > s.length) throw new IndexOutOfBoundsException(); +this.append0(s.subSequence(start, end).toString()); +}, "CharSequence,~N,~N"); +Clazz.defineMethod(c$, "capacity", +function(){ +return this.value.length; +}); +Clazz.defineMethod(c$, "charAt", +function(index){ +if (index < 0 || index >= this.count) throw new StringIndexOutOfBoundsException(index); +return this.value[index]; +}, "~N"); +Clazz.defineMethod(c$, "delete0", +function(start, end){ +if (start >= 0) { +if (end > this.count) { +end = this.count; +}if (end == start) { +return; +}if (end > start) { +var length = this.count - end; +if (length > 0) { +if (!this.shared) { +System.arraycopy(this.value, end, this.value, start, length); +} else { +var newData = Clazz.newCharArray (this.value.length, '\0'); +System.arraycopy(this.value, 0, newData, 0, start); +System.arraycopy(this.value, end, newData, start, length); +this.value = newData; +this.shared = false; +}}this.count -= end - start; +return; +}}throw new StringIndexOutOfBoundsException(); +}, "~N,~N"); +Clazz.defineMethod(c$, "deleteCharAt0", +function(location){ +if (0 > location || location >= this.count) throw new StringIndexOutOfBoundsException(location); +var length = this.count - location - 1; +if (length > 0) { +if (!this.shared) { +System.arraycopy(this.value, location + 1, this.value, location, length); +} else { +var newData = Clazz.newCharArray (this.value.length, '\0'); +System.arraycopy(this.value, 0, newData, 0, location); +System.arraycopy(this.value, location + 1, newData, location, length); +this.value = newData; +this.shared = false; +}}this.count--; +}, "~N"); +Clazz.defineMethod(c$, "ensureCapacity", +function(min){ +if (min > this.value.length) { +this.enlargeBuffer(min); +}}, "~N"); +Clazz.defineMethod(c$, "getChars", +function(start, end, dest, destStart){ +if (start > this.count || end > this.count || start > end) { +throw new StringIndexOutOfBoundsException(); +}System.arraycopy(this.value, start, dest, destStart, end - start); +}, "~N,~N,~A,~N"); +Clazz.defineMethod(c$, "insert0", +function(index, chars){ +if (0 > index || index > this.count) { +throw new StringIndexOutOfBoundsException(index); +}if (chars.length != 0) { +this.move(chars.length, index); +System.arraycopy(chars, 0, this.value, index, chars.length); +this.count += chars.length; +}}, "~N,~A"); +Clazz.defineMethod(c$, "insert0", +function(index, chars, start, length){ +if (0 <= index && index <= this.count) { +if (start >= 0 && 0 <= length && length <= chars.length - start) { +if (length != 0) { +this.move(length, index); +System.arraycopy(chars, start, this.value, index, length); +this.count += length; +}return; +}throw new StringIndexOutOfBoundsException("offset " + start + ", len " + length + ", array.length " + chars.length); +}throw new StringIndexOutOfBoundsException(index); +}, "~N,~A,~N,~N"); +Clazz.defineMethod(c$, "insert0", +function(index, ch){ +if (0 > index || index > this.count) { +throw new ArrayIndexOutOfBoundsException(index); +}this.move(1, index); +this.value[index] = ch; +this.count++; +}, "~N,~S"); +Clazz.defineMethod(c$, "insert0", +function(index, string){ +if (0 <= index && index <= this.count) { +if (string == null) string = "null"; +var min = string.length; +if (min != 0) { +this.move(min, index); +string.getChars(0, min, this.value, index); +this.count += min; +}} else { +throw new StringIndexOutOfBoundsException(index); +}}, "~N,~S"); +Clazz.defineMethod(c$, "insert0", +function(index, s, start, end){ +if (s == null) s = "null"; +if (index < 0 || index > this.count || start < 0 || end < 0 || start > end || end > s.length) throw new IndexOutOfBoundsException(); +this.insert0(index, s.subSequence(start, end).toString()); +}, "~N,CharSequence,~N,~N"); +Clazz.defineMethod(c$, "length", +function(){ +return this.count; +}); +Clazz.defineMethod(c$, "move", +function(size, index){ +var newSize; +if (this.value.length - this.count >= size) { +if (!this.shared) { +System.arraycopy(this.value, index, this.value, index + size, this.count - index); +return; +}newSize = this.value.length; +} else { +var a = this.count + size; +var b = (this.value.length << 1) + 2; +newSize = a > b ? a : b; +}var newData = Clazz.newCharArray (newSize, '\0'); +System.arraycopy(this.value, 0, newData, 0, index); +System.arraycopy(this.value, index, newData, index + size, this.count - index); +this.value = newData; +this.shared = false; +}, "~N,~N"); +Clazz.defineMethod(c$, "replace0", +function(start, end, string){ +if (start >= 0) { +if (end > this.count) end = this.count; +if (end > start) { +var stringLength = string.length; +var diff = end - start - stringLength; +if (diff > 0) { +if (!this.shared) { +System.arraycopy(this.value, end, this.value, start + stringLength, this.count - end); +} else { +var newData = Clazz.newCharArray (this.value.length, '\0'); +System.arraycopy(this.value, 0, newData, 0, start); +System.arraycopy(this.value, end, newData, start + stringLength, this.count - end); +this.value = newData; +this.shared = false; +}} else if (diff < 0) { +this.move(-diff, end); +} else if (this.shared) { +this.value = this.value.clone(); +this.shared = false; +}string.getChars(0, stringLength, this.value, start); +this.count -= diff; +return; +}if (start == end) { +if (string == null) throw new NullPointerException(); +this.insert0(start, string); +return; +}}throw new StringIndexOutOfBoundsException(); +}, "~N,~N,~S"); +Clazz.defineMethod(c$, "reverse0", +function(){ +if (this.count < 2) { +return; +}if (!this.shared) { +for (var i = 0, end = this.count, mid = Clazz.doubleToInt(this.count / 2); i < mid; i++) { +var temp = this.value[--end]; +this.value[end] = this.value[i]; +this.value[i] = temp; +} +} else { +var newData = Clazz.newCharArray (this.value.length, '\0'); +for (var i = 0, end = this.count; i < this.count; i++) { +newData[--end] = this.value[i]; +} +this.value = newData; +this.shared = false; +}}); +Clazz.defineMethod(c$, "setCharAt", +function(index, ch){ +if (0 > index || index >= this.count) { +throw new StringIndexOutOfBoundsException(index); +}if (this.shared) { +this.value = this.value.clone(); +this.shared = false; +}this.value[index] = ch; +}, "~N,~S"); +Clazz.defineMethod(c$, "setLength", +function(length){ +if (length < 0) throw new StringIndexOutOfBoundsException(length); +if (this.count < length) { +if (length > this.value.length) { +this.enlargeBuffer(length); +} else { +if (this.shared) { +var newData = Clazz.newCharArray (this.value.length, '\0'); +System.arraycopy(this.value, 0, newData, 0, this.count); +this.value = newData; +this.shared = false; +} else { +for (var i = this.count; i < length; i++) { +this.value[i] = String.fromCharCode( 0); +} +}}}this.count = length; +}, "~N"); +Clazz.defineMethod(c$, "substring", +function(start){ +if (0 <= start && start <= this.count) { +if (start == this.count) return ""; +this.shared = true; +return String.instantialize(this.value, start, this.count - start); +}throw new StringIndexOutOfBoundsException(start); +}, "~N"); +Clazz.defineMethod(c$, "substring", +function(start, end){ +if (0 <= start && start <= end && end <= this.count) { +if (start == end) return ""; +this.shared = true; +return String.instantialize(this.value, start, end - start); +}throw new StringIndexOutOfBoundsException(); +}, "~N,~N"); +Clazz.overrideMethod(c$, "toString", +function(){ +if (this.count == 0) return ""; +if (this.count >= 256 && this.count <= (this.value.length >> 1)) return String.instantialize(this.value, 0, this.count); +this.shared = true; +return String.instantialize(this.value, 0, this.count); +}); +Clazz.defineMethod(c$, "subSequence", +function(start, end){ +return this.substring(start, end); +}, "~N,~N"); +Clazz.defineMethod(c$, "indexOf", +function(string){ +return this.indexOf(string, 0); +}, "~S"); +Clazz.defineMethod(c$, "indexOf", +function(subString, start){ +if (start < 0) start = 0; +var subCount = subString.length; +if (subCount > 0) { +if (subCount + start > this.count) return -1; +var firstChar = subString.charAt(0); +while (true) { +var i = start; +var found = false; +for (; i < this.count; i++) if (this.value[i] == firstChar) { +found = true; +break; +} +if (!found || subCount + i > this.count) return -1; +var o1 = i; +var o2 = 0; +while (++o2 < subCount && this.value[++o1] == subString.charAt(o2)) { +} +if (o2 == subCount) return i; +start = i + 1; +} +}return (start < this.count || start == 0) ? start : this.count; +}, "~S,~N"); +Clazz.defineMethod(c$, "lastIndexOf", +function(string){ +return this.lastIndexOf(string, this.count); +}, "~S"); +Clazz.defineMethod(c$, "lastIndexOf", +function(subString, start){ +var subCount = subString.length; +if (subCount <= this.count && start >= 0) { +if (subCount > 0) { +if (start > this.count - subCount) start = this.count - subCount; +var firstChar = subString.charAt(0); +while (true) { +var i = start; +var found = false; +for (; i >= 0; --i) if (this.value[i] == firstChar) { +found = true; +break; +} +if (!found) return -1; +var o1 = i; +var o2 = 0; +while (++o2 < subCount && this.value[++o1] == subString.charAt(o2)) { +} +if (o2 == subCount) return i; +start = i - 1; +} +}return start < this.count ? start : this.count; +}return -1; +}, "~S,~N"); +Clazz.defineMethod(c$, "trimToSize", +function(){ +if (this.count < this.value.length) { +var newValue = Clazz.newCharArray (this.count, '\0'); +System.arraycopy(this.value, 0, newValue, 0, this.count); +this.value = newValue; +this.shared = false; +}}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/ArrayList.js b/config/plugins/visualizations/jmol/static/j2s/java/util/ArrayList.js new file mode 100755 index 000000000000..1f210507b9b6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/ArrayList.js @@ -0,0 +1,386 @@ +Clazz.load(["java.util.AbstractList", "$.List", "$.RandomAccess"], "java.util.ArrayList", ["java.util.Arrays"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.firstIndex = 0; +this.lastIndex = 0; +this.array = null; +Clazz.instantialize(this, arguments);}, java.util, "ArrayList", java.util.AbstractList, [java.util.List, Cloneable, java.io.Serializable, java.util.RandomAccess]); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, java.util.ArrayList, []); +this.setCapacity(0); +}); +Clazz.makeConstructor(c$, +function(capacity){ +Clazz.superConstructor (this, java.util.ArrayList, []); +this.setCapacity(capacity); +}, "~N"); +Clazz.makeConstructor(c$, +function(collection){ +this.firstIndex = this.lastIndex = 0; +var n = -1; +{ +if (!collection) { +n = 0; +} else if (typeof collection == "number") { +n = collection; +} +}if (n >= 0) { +this.setCapacity(n); +return; +}var size = collection.size(); +this.array = this.newElementArray(size + (Clazz.doubleToInt(size / 10))); +this.addAll(collection); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "setCapacity", +function(capacity){ +try { +this.array = this.newElementArray(capacity); +} catch (e) { +if (Clazz.exceptionOf(e,"NegativeArraySizeException")){ +throw new IllegalArgumentException(); +} else { +throw e; +} +} +}, "~N"); +Clazz.defineMethod(c$, "newElementArray", +function(size){ +return new Array(size); +}, "~N"); +Clazz.defineMethod(c$, "add", +function(location, object){ +this.add2(location, object); +}, "~N,~O"); +Clazz.defineMethod(c$, "add2", +function(location, object){ +var size = this.size(); +if (0 < location && location < size) { +if (this.firstIndex == 0 && this.lastIndex == this.array.length) { +this.growForInsert(location, 1); +} else if ((location < Clazz.doubleToInt(size / 2) && this.firstIndex > 0) || this.lastIndex == this.array.length) { +System.arraycopy(this.array, this.firstIndex, this.array, --this.firstIndex, location); +} else { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index + 1, size - location); +this.lastIndex++; +}this.array[location + this.firstIndex] = object; +} else if (location == 0) { +if (this.firstIndex == 0) { +this.growAtFront(1); +}this.array[--this.firstIndex] = object; +} else if (location == size) { +if (this.lastIndex == this.array.length) { +this.growAtEnd(1); +}this.array[this.lastIndex++] = object; +} else { +throw new IndexOutOfBoundsException(); +}this.modCount++; +}, "~N,~O"); +Clazz.defineMethod(c$, "add", +function(object){ +return this.add1(object); +}, "~O"); +Clazz.defineMethod(c$, "add1", +function(object){ +if (this.lastIndex == this.array.length) { +this.growAtEnd(1); +}this.array[this.lastIndex++] = object; +this.modCount++; +return true; +}, "~O"); +Clazz.defineMethod(c$, "addAll", +function(location, collection){ +var size = this.size(); +if (location < 0 || location > size) { +throw new IndexOutOfBoundsException(); +}var growSize = collection.size(); +if (0 < location && location < size) { +if (this.array.length - size < growSize) { +this.growForInsert(location, growSize); +} else if ((location < Clazz.doubleToInt(size / 2) && this.firstIndex > 0) || this.lastIndex > this.array.length - growSize) { +var newFirst = this.firstIndex - growSize; +if (newFirst < 0) { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index - newFirst, size - location); +this.lastIndex -= newFirst; +newFirst = 0; +}System.arraycopy(this.array, this.firstIndex, this.array, newFirst, location); +this.firstIndex = newFirst; +} else { +var index = location + this.firstIndex; +System.arraycopy(this.array, index, this.array, index + growSize, size - location); +this.lastIndex += growSize; +}} else if (location == 0) { +this.growAtFront(growSize); +this.firstIndex -= growSize; +} else if (location == size) { +if (this.lastIndex > this.array.length - growSize) { +this.growAtEnd(growSize); +}this.lastIndex += growSize; +}if (growSize > 0) { +var it = collection.iterator(); +var index = location + this.firstIndex; +var end = index + growSize; +while (index < end) { +this.array[index++] = it.next(); +} +this.modCount++; +return true; +}return false; +}, "~N,java.util.Collection"); +Clazz.defineMethod(c$, "addAll", +function(collection){ +var growSize = collection.size(); +if (growSize > 0) { +if (this.lastIndex > this.array.length - growSize) { +this.growAtEnd(growSize); +}var it = collection.iterator(); +var end = this.lastIndex + growSize; +while (this.lastIndex < end) { +this.array[this.lastIndex++] = it.next(); +} +this.modCount++; +return true; +}return false; +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "clear", +function(){ +if (this.firstIndex != this.lastIndex) { +java.util.Arrays.fill(this.array, this.firstIndex, this.lastIndex, null); +this.firstIndex = this.lastIndex = 0; +this.modCount++; +}}); +Clazz.defineMethod(c$, "clone", +function(){ +try { +var newList = Clazz.superCall(this, java.util.ArrayList, "clone", []); +newList.array = this.array.clone(); +return newList; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +if (object != null) { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (object.equals(this.array[i])) { +return true; +}} +} else { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (this.array[i] == null) { +return true; +}} +}return false; +}, "~O"); +Clazz.defineMethod(c$, "ensureCapacity", +function(minimumCapacity){ +if (this.array.length < minimumCapacity) { +if (this.firstIndex > 0) { +this.growAtFront(minimumCapacity - this.array.length); +} else { +this.growAtEnd(minimumCapacity - this.array.length); +}}}, "~N"); +Clazz.overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.size()) { +return this.array[this.firstIndex + location]; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz.defineMethod(c$, "growAtEnd", +function(required){ +var size = this.size(); +if (this.firstIndex >= required - (this.array.length - this.lastIndex)) { +var newLast = this.lastIndex - this.firstIndex; +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, this.array, 0, size); +var start = newLast < this.firstIndex ? this.firstIndex : newLast; +java.util.Arrays.fill(this.array, start, this.array.length, null); +}this.firstIndex = 0; +this.lastIndex = newLast; +} else { +var increment = Clazz.doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, newArray, this.firstIndex, size); +}this.array = newArray; +}}, "~N"); +Clazz.defineMethod(c$, "growAtFront", +function(required){ +var size = this.size(); +if (this.array.length - this.lastIndex >= required) { +var newFirst = this.array.length - size; +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, this.array, newFirst, size); +var length = this.firstIndex + size > newFirst ? newFirst : this.firstIndex + size; +java.util.Arrays.fill(this.array, this.firstIndex, length, null); +}this.firstIndex = newFirst; +this.lastIndex = this.array.length; +} else { +var increment = Clazz.doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (size > 0) { +System.arraycopy(this.array, this.firstIndex, newArray, newArray.length - size, size); +}this.firstIndex = newArray.length - size; +this.lastIndex = newArray.length; +this.array = newArray; +}}, "~N"); +Clazz.defineMethod(c$, "growForInsert", +function(location, required){ +var size = this.size(); +var increment = Clazz.doubleToInt(size / 2); +if (required > increment) { +increment = required; +}if (increment < 12) { +increment = 12; +}var newArray = this.newElementArray(size + increment); +if (location < Clazz.doubleToInt(size / 2)) { +var newFirst = newArray.length - (size + required); +System.arraycopy(this.array, location, newArray, location + increment, size - location); +System.arraycopy(this.array, this.firstIndex, newArray, newFirst, location); +this.firstIndex = newFirst; +this.lastIndex = newArray.length; +} else { +System.arraycopy(this.array, this.firstIndex, newArray, 0, location); +System.arraycopy(this.array, location, newArray, location + required, size - location); +this.firstIndex = 0; +this.lastIndex += required; +}this.array = newArray; +}, "~N,~N"); +Clazz.overrideMethod(c$, "indexOf", +function(object){ +if (object != null) { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (object.equals(this.array[i])) { +return i - this.firstIndex; +}} +} else { +for (var i = this.firstIndex; i < this.lastIndex; i++) { +if (this.array[i] == null) { +return i - this.firstIndex; +}} +}return -1; +}, "~O"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.lastIndex == this.firstIndex; +}); +Clazz.overrideMethod(c$, "lastIndexOf", +function(object){ +if (object != null) { +for (var i = this.lastIndex - 1; i >= this.firstIndex; i--) { +if (object.equals(this.array[i])) { +return i - this.firstIndex; +}} +} else { +for (var i = this.lastIndex - 1; i >= this.firstIndex; i--) { +if (this.array[i] == null) { +return i - this.firstIndex; +}} +}return -1; +}, "~O"); +Clazz.defineMethod(c$, "remove", +function(location){ +{ +}return this._removeItemAt(location); +}, "~N"); +Clazz.defineMethod(c$, "_removeObject", +function(o){ +var i = this.indexOf(o); +if (i < 0) return false; +this._removeItemAt(i); +return true; +}, "~O"); +Clazz.defineMethod(c$, "_removeItemAt", +function(location){ +var result; +var size = this.size(); +if (0 <= location && location < size) { +if (location == size - 1) { +result = this.array[--this.lastIndex]; +this.array[this.lastIndex] = null; +} else if (location == 0) { +result = this.array[this.firstIndex]; +this.array[this.firstIndex++] = null; +} else { +var elementIndex = this.firstIndex + location; +result = this.array[elementIndex]; +if (location < Clazz.doubleToInt(size / 2)) { +System.arraycopy(this.array, this.firstIndex, this.array, this.firstIndex + 1, location); +this.array[this.firstIndex++] = null; +} else { +System.arraycopy(this.array, elementIndex + 1, this.array, elementIndex, size - location - 1); +this.array[--this.lastIndex] = null; +}}} else { +throw new IndexOutOfBoundsException(); +}this.modCount++; +return result; +}, "~N"); +Clazz.overrideMethod(c$, "removeRange", +function(start, end){ +if (start >= 0 && start <= end && end <= this.size()) { +if (start == end) { +return; +}var size = this.size(); +if (end == size) { +java.util.Arrays.fill(this.array, this.firstIndex + start, this.lastIndex, null); +this.lastIndex = this.firstIndex + start; +} else if (start == 0) { +java.util.Arrays.fill(this.array, this.firstIndex, this.firstIndex + end, null); +this.firstIndex += end; +} else { +System.arraycopy(this.array, this.firstIndex + end, this.array, this.firstIndex + start, size - end); +var newLast = this.lastIndex + start - end; +java.util.Arrays.fill(this.array, newLast, this.lastIndex, null); +this.lastIndex = newLast; +}this.modCount++; +} else { +throw new IndexOutOfBoundsException(); +}}, "~N,~N"); +Clazz.overrideMethod(c$, "set", +function(location, object){ +if (0 <= location && location < this.size()) { +var result = this.array[this.firstIndex + location]; +this.array[this.firstIndex + location] = object; +return result; +}throw new IndexOutOfBoundsException(); +}, "~N,~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.lastIndex - this.firstIndex; +}); +Clazz.overrideMethod(c$, "toArray", +function(contents){ +var size = this.size(); +if (contents == null || size > contents.length) { +{ +return this.array.slice(this.firstIndex, this.firstIndex + size); +}}System.arraycopy(this.array, this.firstIndex, contents, 0, size); +if (size < contents.length) { +contents[size] = null; +}return contents; +}, "~A"); +Clazz.defineMethod(c$, "trimToSize", +function(){ +var size = this.size(); +var newArray = this.newElementArray(size); +System.arraycopy(this.array, this.firstIndex, newArray, 0, size); +this.array = newArray; +this.firstIndex = 0; +this.lastIndex = this.array.length; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Arrays.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Arrays.js new file mode 100755 index 000000000000..a83892298450 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Arrays.js @@ -0,0 +1,166 @@ +Clazz.load(["java.util.AbstractList", "$.RandomAccess"], "java.util.Arrays", null, function(){ +var c$ = Clazz.declareType(java.util, "Arrays", null); +c$.fill = Clazz.defineMethod(c$, "fill", +function(a, fromIndex, toIndex, val){ +{ +if (arguments.length == 2) { +val = arguments[1]; +fromIndex = 0; +toIndex = a.length; +} +}java.util.Arrays.rangeCheck(a.length, fromIndex, toIndex); +for (var i = fromIndex; i < toIndex; i++) a[i] = val; + +}, "~A,~N,~N,~O"); +c$.asList = Clazz.defineMethod(c$, "asList", +function(a){ +return new java.util.Arrays.ArrayList(a); +}, "~A"); +c$.rangeCheck = Clazz.defineMethod(c$, "rangeCheck", +function(arrayLen, fromIndex, toIndex){ +if (fromIndex > toIndex) throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")"); +if (fromIndex < 0) throw new ArrayIndexOutOfBoundsException(fromIndex); +if (toIndex > arrayLen) throw new ArrayIndexOutOfBoundsException(toIndex); +}, "~N,~N,~N"); +c$.binarySearch = Clazz.defineMethod(c$, "binarySearch", +function(a, key){ +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +if (midVal < key) low = mid + 1; + else if (midVal > key) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~N"); +c$.binarySearch = Clazz.defineMethod(c$, "binarySearch", +function(a, key){ +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +var cmp = (midVal).compareTo(key); +if (cmp < 0) low = mid + 1; + else if (cmp > 0) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~O"); +c$.binarySearch = Clazz.defineMethod(c$, "binarySearch", +function(a, key, c){ +if (c == null) return java.util.Arrays.binarySearch(a, key); +var low = 0; +var high = a.length - 1; +while (low <= high) { +var mid = (low + high) >> 1; +var midVal = a[mid]; +var cmp = c.compare(midVal, key); +if (cmp < 0) low = mid + 1; + else if (cmp > 0) high = mid - 1; + else return mid; +} +return -(low + 1); +}, "~A,~O,java.util.Comparator"); +c$.equals = Clazz.defineMethod(c$, "equals", +function(a, a2){ +if (a === a2) return true; +if (a == null || a2 == null) return false; +var length = a.length; +if (a2.length != length) return false; +for (var i = 0; i < length; i++) { +var o1 = a[i]; +var o2 = a2[i]; +{ +if(!(o1==null?o2==null:(o1.equals==null?o1==o2:o1.equals(o2))))return false; +}} +return true; +}, "~A,~A"); +c$.sort = Clazz.defineMethod(c$, "sort", +function(a, fromIndex, toIndex, c){ +if (a.length < 2) return; +var n = 0; +var p = null; +{ +n = arguments.count; p = fromIndex; +}var temp = a; +var ret = null; +switch (n) { +case 1: +p = null; +case 2: +fromIndex = 0; +toIndex = a.length; +break; +case 3: +p = null; +case 4: +p = c; +if (fromIndex == 0 && toIndex == a.length) { +temp = a; +} else { +{ +temp = a.slice(fromIndex, toIndex); +}ret = a; +}break; +} +java.util.Arrays.rangeCheck(a.length, fromIndex, toIndex); +if (p == null) p = java.util.Arrays.comp; +c = p; +{ +temp.sort(c.compare); +}if (ret != null) { +System.arraycopy(temp, 0, ret, fromIndex, toIndex); +}}, "~A,~N,~N,java.util.Comparator"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.a = null; +Clazz.instantialize(this, arguments);}, java.util.Arrays, "ArrayList", java.util.AbstractList, [java.util.RandomAccess, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(array){ +Clazz.superConstructor (this, java.util.Arrays.ArrayList, []); +if (array == null) throw new NullPointerException(); +this.a = array; +}, "~A"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.a.length; +}); +Clazz.defineMethod(c$, "toArray", +function(){ +return this.a.clone(); +}); +Clazz.overrideMethod(c$, "get", +function(index){ +return this.a[index]; +}, "~N"); +Clazz.overrideMethod(c$, "set", +function(index, element){ +var oldValue = this.a[index]; +this.a[index] = element; +return oldValue; +}, "~N,~O"); +Clazz.overrideMethod(c$, "indexOf", +function(o){ +if (o == null) { +for (var i = 0; i < this.a.length; i++) if (this.a[i] == null) return i; + +} else { +for (var i = 0; i < this.a.length; i++) if (o.equals(this.a[i])) return i; + +}return -1; +}, "~O"); +Clazz.overrideMethod(c$, "contains", +function(o){ +return this.indexOf(o) != -1; +}, "~O"); +/*eoif3*/})(); +c$.comp = null; +{ +c$.comp = {compare: function (o1, o2) { +return (o1 == null ? (o2 == null ? 0 : -1) : o2 == null ? 1 +: typeof o1 == "number" ? o1 - o2 : o1.compareTo(o2))}}; +}}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Collection.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Collection.js new file mode 100755 index 000000000000..2bf604b1a30f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Collection.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "Collection", Iterable); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Collections.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Collections.js new file mode 100755 index 000000000000..d7bc523f9d3d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Collections.js @@ -0,0 +1,2171 @@ +Clazz.load(["java.util.AbstractList", "$.AbstractMap", "$.AbstractSet", "$.Collection", "$.Enumeration", "$.Iterator", "$.List", "$.ListIterator", "$.Map", "$.RandomAccess", "$.Set", "$.SortedMap", "$.SortedSet", "java.lang.reflect.Array"], "java.util.Collections", ["java.util.ArrayList", "$.Arrays", "java.util.Map.Entry", "java.util.Random"], function(){ +var c$ = Clazz.declareType(java.util, "Collections", null); +c$.emptyEnumeration = Clazz.defineMethod(c$, "emptyEnumeration", +function(){ +if (java.util.Collections.EMPTY_ENUMERATION == null) java.util.Collections.EMPTY_ENUMERATION = new java.util.Collections.EmptyEnumeration(); +return java.util.Collections.EMPTY_ENUMERATION; +}); +c$.emptyIterator = Clazz.defineMethod(c$, "emptyIterator", +function(){ +if (java.util.Collections.EMPTY_ITERATOR == null) { +java.util.Collections.EMPTY_ITERATOR = new java.util.Collections.EmptyIterator(); +}return java.util.Collections.EMPTY_ITERATOR; +}); +c$.binarySearch = Clazz.defineMethod(c$, "binarySearch", +function(list, object){ +if (list == null) { +throw new NullPointerException(); +}if (list.isEmpty()) { +return -1; +}var key = object; +if (!(Clazz.instanceOf(list,"java.util.RandomAccess"))) { +var it = list.listIterator(); +while (it.hasNext()) { +var result; +if ((result = key.compareTo(it.next())) <= 0) { +if (result == 0) { +return it.previousIndex(); +}return -it.previousIndex() - 1; +}} +return -list.size() - 1; +}var low = 0; +var mid = list.size(); +var high = mid - 1; +var result = -1; +while (low <= high) { +mid = (low + high) >> 1; +if ((result = key.compareTo(list.get(mid))) > 0) { +low = mid + 1; +} else if (result == 0) { +return mid; +} else { +high = mid - 1; +}} +return -mid - (result < 0 ? 1 : 2); +}, "java.util.List,~O"); +c$.binarySearch = Clazz.defineMethod(c$, "binarySearch", +function(list, object, comparator){ +if (comparator == null) { +return java.util.Collections.binarySearch(list, object); +}if (!(Clazz.instanceOf(list,"java.util.RandomAccess"))) { +var it = list.listIterator(); +while (it.hasNext()) { +var result; +if ((result = comparator.compare(object, it.next())) <= 0) { +if (result == 0) { +return it.previousIndex(); +}return -it.previousIndex() - 1; +}} +return -list.size() - 1; +}var low = 0; +var mid = list.size(); +var high = mid - 1; +var result = -1; +while (low <= high) { +mid = (low + high) >> 1; +if ((result = comparator.compare(object, list.get(mid))) > 0) { +low = mid + 1; +} else if (result == 0) { +return mid; +} else { +high = mid - 1; +}} +return -mid - (result < 0 ? 1 : 2); +}, "java.util.List,~O,java.util.Comparator"); +c$.copy = Clazz.defineMethod(c$, "copy", +function(destination, source){ +if (destination.size() < source.size()) { +throw new ArrayIndexOutOfBoundsException(); +}var srcIt = source.iterator(); +var destIt = destination.listIterator(); +while (srcIt.hasNext()) { +try { +destIt.next(); +} catch (e) { +if (Clazz.exceptionOf(e,"java.util.NoSuchElementException")){ +throw new ArrayIndexOutOfBoundsException(); +} else { +throw e; +} +} +destIt.set(srcIt.next()); +} +}, "java.util.List,java.util.List"); +c$.enumeration = Clazz.defineMethod(c$, "enumeration", +function(collection){ +var c = collection; +return ((Clazz.isClassDefined("java.util.Collections$1") ? 0 : java.util.Collections.$Collections$1$ ()), Clazz.innerTypeInstance(java.util.Collections$1, this, Clazz.cloneFinals("c", c))); +}, "java.util.Collection"); +c$.fill = Clazz.defineMethod(c$, "fill", +function(list, object){ +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(object); +} +}, "java.util.List,~O"); +c$.max = Clazz.defineMethod(c$, "max", +function(collection){ +var it = collection.iterator(); +var max = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (max.compareTo(next) < 0) { +max = next; +}} +return max; +}, "java.util.Collection"); +c$.max = Clazz.defineMethod(c$, "max", +function(collection, comparator){ +var it = collection.iterator(); +var max = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (comparator.compare(max, next) < 0) { +max = next; +}} +return max; +}, "java.util.Collection,java.util.Comparator"); +c$.min = Clazz.defineMethod(c$, "min", +function(collection){ +var it = collection.iterator(); +var min = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (min.compareTo(next) > 0) { +min = next; +}} +return min; +}, "java.util.Collection"); +c$.min = Clazz.defineMethod(c$, "min", +function(collection, comparator){ +var it = collection.iterator(); +var min = it.next(); +while (it.hasNext()) { +var next = it.next(); +if (comparator.compare(min, next) > 0) { +min = next; +}} +return min; +}, "java.util.Collection,java.util.Comparator"); +c$.nCopies = Clazz.defineMethod(c$, "nCopies", +function(length, object){ +return new java.util.Collections.CopiesList(length, object); +}, "~N,~O"); +c$.reverse = Clazz.defineMethod(c$, "reverse", +function(list){ +var size = list.size(); +var front = list.listIterator(); +var back = list.listIterator(size); +for (var i = 0; i < Clazz.doubleToInt(size / 2); i++) { +var frontNext = front.next(); +var backPrev = back.previous(); +front.set(backPrev); +back.set(frontNext); +} +}, "java.util.List"); +c$.reverseOrder = Clazz.defineMethod(c$, "reverseOrder", +function(){ +return new java.util.Collections.ReverseComparator(); +}); +c$.reverseOrder = Clazz.defineMethod(c$, "reverseOrder", +function(c){ +if (c == null) { +return java.util.Collections.reverseOrder(); +}return new java.util.Collections.ReverseComparatorWithComparator(c); +}, "java.util.Comparator"); +c$.shuffle = Clazz.defineMethod(c$, "shuffle", +function(list){ +java.util.Collections.shuffle(list, new java.util.Random()); +}, "java.util.List"); +c$.shuffle = Clazz.defineMethod(c$, "shuffle", +function(list, random){ +if (!(Clazz.instanceOf(list,"java.util.RandomAccess"))) { +var array = list.toArray(); +for (var i = array.length - 1; i > 0; i--) { +var index = random.nextInt() % (i + 1); +if (index < 0) { +index = -index; +}var temp = array[i]; +array[i] = array[index]; +array[index] = temp; +} +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +} else { +var rawList = list; +for (var i = rawList.size() - 1; i > 0; i--) { +var index = random.nextInt() % (i + 1); +if (index < 0) { +index = -index; +}rawList.set(index, rawList.set(i, rawList.get(index))); +} +}}, "java.util.List,java.util.Random"); +c$.singleton = Clazz.defineMethod(c$, "singleton", +function(object){ +return new java.util.Collections.SingletonSet(object); +}, "~O"); +c$.singletonList = Clazz.defineMethod(c$, "singletonList", +function(object){ +return new java.util.Collections.SingletonList(object); +}, "~O"); +c$.singletonMap = Clazz.defineMethod(c$, "singletonMap", +function(key, value){ +return new java.util.Collections.SingletonMap(key, value); +}, "~O,~O"); +c$.sort = Clazz.defineMethod(c$, "sort", +function(list){ +var array = list.toArray(); +java.util.Arrays.sort(array); +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +}, "java.util.List"); +c$.sort = Clazz.defineMethod(c$, "sort", +function(list, comparator){ +var array = list.toArray( new Array(list.size())); +java.util.Arrays.sort(array, comparator); +var i = 0; +var it = list.listIterator(); +while (it.hasNext()) { +it.next(); +it.set(array[i++]); +} +}, "java.util.List,java.util.Comparator"); +c$.swap = Clazz.defineMethod(c$, "swap", +function(list, index1, index2){ +if (list == null) { +throw new NullPointerException(); +}if (index1 == index2) { +return; +}var rawList = list; +rawList.set(index2, rawList.set(index1, rawList.get(index2))); +}, "java.util.List,~N,~N"); +c$.replaceAll = Clazz.defineMethod(c$, "replaceAll", +function(list, obj, obj2){ +var index; +var found = false; +while ((index = list.indexOf(obj)) > -1) { +found = true; +list.set(index, obj2); +} +return found; +}, "java.util.List,~O,~O"); +c$.rotate = Clazz.defineMethod(c$, "rotate", +function(lst, dist){ +var list = lst; +var size = list.size(); +if (size == 0) { +return; +}var normdist; +if (dist > 0) { +normdist = dist % size; +} else { +normdist = size - ((dist % size) * (-1)); +}if (normdist == 0 || normdist == size) { +return; +}if (Clazz.instanceOf(list,"java.util.RandomAccess")) { +var temp = list.get(0); +var index = 0; +var beginIndex = 0; +for (var i = 0; i < size; i++) { +index = (index + normdist) % size; +temp = list.set(index, temp); +if (index == beginIndex) { +index = ++beginIndex; +temp = list.get(beginIndex); +}} +} else { +var divideIndex = (size - normdist) % size; +var sublist1 = list.subList(0, divideIndex); +var sublist2 = list.subList(divideIndex, size); +java.util.Collections.reverse(sublist1); +java.util.Collections.reverse(sublist2); +java.util.Collections.reverse(list); +}}, "java.util.List,~N"); +c$.indexOfSubList = Clazz.defineMethod(c$, "indexOfSubList", +function(list, sublist){ +var size = list.size(); +var sublistSize = sublist.size(); +if (sublistSize > size) { +return -1; +}if (sublistSize == 0) { +return 0; +}var firstObj = sublist.get(0); +var index = list.indexOf(firstObj); +if (index == -1) { +return -1; +}while (index < size && (size - index >= sublistSize)) { +var listIt = list.listIterator(index); +if ((firstObj == null) ? listIt.next() == null : firstObj.equals(listIt.next())) { +var sublistIt = sublist.listIterator(1); +var difFound = false; +while (sublistIt.hasNext()) { +var element = sublistIt.next(); +if (!listIt.hasNext()) { +return -1; +}if ((element == null) ? listIt.next() != null : !element.equals(listIt.next())) { +difFound = true; +break; +}} +if (!difFound) { +return index; +}}index++; +} +return -1; +}, "java.util.List,java.util.List"); +c$.lastIndexOfSubList = Clazz.defineMethod(c$, "lastIndexOfSubList", +function(list, sublist){ +var sublistSize = sublist.size(); +var size = list.size(); +if (sublistSize > size) { +return -1; +}if (sublistSize == 0) { +return size; +}var lastObj = sublist.get(sublistSize - 1); +var index = list.lastIndexOf(lastObj); +while ((index > -1) && (index + 1 >= sublistSize)) { +var listIt = list.listIterator(index + 1); +if ((lastObj == null) ? listIt.previous() == null : lastObj.equals(listIt.previous())) { +var sublistIt = sublist.listIterator(sublistSize - 1); +var difFound = false; +while (sublistIt.hasPrevious()) { +var element = sublistIt.previous(); +if (!listIt.hasPrevious()) { +return -1; +}if ((element == null) ? listIt.previous() != null : !element.equals(listIt.previous())) { +difFound = true; +break; +}} +if (!difFound) { +return listIt.nextIndex(); +}}index--; +} +return -1; +}, "java.util.List,java.util.List"); +c$.list = Clazz.defineMethod(c$, "list", +function(enumeration){ +var list = new java.util.ArrayList(); +while (enumeration.hasMoreElements()) { +list.add(enumeration.nextElement()); +} +return list; +}, "java.util.Enumeration"); +c$.synchronizedCollection = Clazz.defineMethod(c$, "synchronizedCollection", +function(collection){ +if (collection == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedCollection(collection); +}, "java.util.Collection"); +c$.synchronizedList = Clazz.defineMethod(c$, "synchronizedList", +function(list){ +if (list == null) { +throw new NullPointerException(); +}if (Clazz.instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.SynchronizedRandomAccessList(list); +}return new java.util.Collections.SynchronizedList(list); +}, "java.util.List"); +c$.synchronizedMap = Clazz.defineMethod(c$, "synchronizedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedMap(map); +}, "java.util.Map"); +c$.synchronizedSet = Clazz.defineMethod(c$, "synchronizedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSet(set); +}, "java.util.Set"); +c$.synchronizedSortedMap = Clazz.defineMethod(c$, "synchronizedSortedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSortedMap(map); +}, "java.util.SortedMap"); +c$.synchronizedSortedSet = Clazz.defineMethod(c$, "synchronizedSortedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.SynchronizedSortedSet(set); +}, "java.util.SortedSet"); +c$.unmodifiableCollection = Clazz.defineMethod(c$, "unmodifiableCollection", +function(collection){ +if (collection == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableCollection(collection); +}, "java.util.Collection"); +c$.unmodifiableList = Clazz.defineMethod(c$, "unmodifiableList", +function(list){ +if (list == null) { +throw new NullPointerException(); +}if (Clazz.instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.UnmodifiableRandomAccessList(list); +}return new java.util.Collections.UnmodifiableList(list); +}, "java.util.List"); +c$.unmodifiableMap = Clazz.defineMethod(c$, "unmodifiableMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableMap(map); +}, "java.util.Map"); +c$.unmodifiableSet = Clazz.defineMethod(c$, "unmodifiableSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSet(set); +}, "java.util.Set"); +c$.unmodifiableSortedMap = Clazz.defineMethod(c$, "unmodifiableSortedMap", +function(map){ +if (map == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSortedMap(map); +}, "java.util.SortedMap"); +c$.unmodifiableSortedSet = Clazz.defineMethod(c$, "unmodifiableSortedSet", +function(set){ +if (set == null) { +throw new NullPointerException(); +}return new java.util.Collections.UnmodifiableSortedSet(set); +}, "java.util.SortedSet"); +c$.frequency = Clazz.defineMethod(c$, "frequency", +function(c, o){ +if (c == null) { +throw new NullPointerException(); +}if (c.isEmpty()) { +return 0; +}var result = 0; +var itr = c.iterator(); +while (itr.hasNext()) { +var e = itr.next(); +if (o == null ? e == null : o.equals(e)) { +result++; +}} +return result; +}, "java.util.Collection,~O"); +c$.emptyList = Clazz.defineMethod(c$, "emptyList", +function(){ +return java.util.Collections.EMPTY_LIST; +}); +c$.emptySet = Clazz.defineMethod(c$, "emptySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +c$.emptyMap = Clazz.defineMethod(c$, "emptyMap", +function(){ +return java.util.Collections.EMPTY_MAP; +}); +c$.checkedCollection = Clazz.defineMethod(c$, "checkedCollection", +function(c, type){ +return new java.util.Collections.CheckedCollection(c, type); +}, "java.util.Collection,Class"); +c$.checkedMap = Clazz.defineMethod(c$, "checkedMap", +function(m, keyType, valueType){ +return new java.util.Collections.CheckedMap(m, keyType, valueType); +}, "java.util.Map,Class,Class"); +c$.checkedList = Clazz.defineMethod(c$, "checkedList", +function(list, type){ +if (Clazz.instanceOf(list,"java.util.RandomAccess")) { +return new java.util.Collections.CheckedRandomAccessList(list, type); +}return new java.util.Collections.CheckedList(list, type); +}, "java.util.List,Class"); +c$.checkedSet = Clazz.defineMethod(c$, "checkedSet", +function(s, type){ +return new java.util.Collections.CheckedSet(s, type); +}, "java.util.Set,Class"); +c$.checkedSortedMap = Clazz.defineMethod(c$, "checkedSortedMap", +function(m, keyType, valueType){ +return new java.util.Collections.CheckedSortedMap(m, keyType, valueType); +}, "java.util.SortedMap,Class,Class"); +c$.checkedSortedSet = Clazz.defineMethod(c$, "checkedSortedSet", +function(s, type){ +return new java.util.Collections.CheckedSortedSet(s, type); +}, "java.util.SortedSet,Class"); +c$.addAll = Clazz.defineMethod(c$, "addAll", +function(c, a){ +var modified = false; +for (var i = 0; i < a.length; i++) { +modified = new Boolean (modified | c.add(a[i])).valueOf(); +} +return modified; +}, "java.util.Collection,~A"); +c$.disjoint = Clazz.defineMethod(c$, "disjoint", +function(c1, c2){ +if ((Clazz.instanceOf(c1,"java.util.Set")) && !(Clazz.instanceOf(c2,"java.util.Set")) || (c2.size()) > c1.size()) { +var tmp = c1; +c1 = c2; +c2 = tmp; +}var it = c1.iterator(); +while (it.hasNext()) { +if (c2.contains(it.next())) { +return false; +}} +return true; +}, "java.util.Collection,java.util.Collection"); +c$.checkType = Clazz.defineMethod(c$, "checkType", +function(obj, type){ +if (!type.isInstance(obj)) { +throw new ClassCastException("Attempt to insert " + obj.getClass() + " element into collection with element type " + type); +}return obj; +}, "~O,Class"); +c$.$Collections$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.it = null; +Clazz.instantialize(this, arguments);}, java.util, "Collections$1", null, java.util.Enumeration); +Clazz.prepareFields (c$, function(){ +this.it = this.f$.c.iterator(); +}); +Clazz.defineMethod(c$, "hasMoreElements", +function(){ +return this.it.hasNext(); +}); +Clazz.defineMethod(c$, "nextElement", +function(){ +return this.it.next(); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "EmptyEnumeration", null, java.util.Enumeration); +Clazz.overrideMethod(c$, "hasMoreElements", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "nextElement", +function(){ +throw new java.util.NoSuchElementException(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "EmptyIterator", null, java.util.Iterator); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "next", +function(){ +throw new java.util.NoSuchElementException(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +throw new IllegalStateException(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.n = 0; +this.element = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "CopiesList", java.util.AbstractList, java.io.Serializable); +Clazz.makeConstructor(c$, +function(length, object){ +Clazz.superConstructor (this, java.util.Collections.CopiesList, []); +if (length < 0) { +throw new IllegalArgumentException(); +}this.n = length; +this.element = object; +}, "~N,~O"); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.n; +}); +Clazz.overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.n) { +return this.element; +}throw new IndexOutOfBoundsException(); +}, "~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "EmptyList", java.util.AbstractList, java.io.Serializable); +Clazz.overrideMethod(c$, "contains", +function(object){ +return false; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return 0; +}); +Clazz.overrideMethod(c$, "get", +function(location){ +throw new IndexOutOfBoundsException(); +}, "~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "EmptySet", java.util.AbstractSet, java.io.Serializable); +Clazz.overrideMethod(c$, "contains", +function(object){ +return false; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return 0; +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return ((Clazz.isClassDefined("java.util.Collections$EmptySet$1") ? 0 : java.util.Collections.EmptySet.$Collections$EmptySet$1$ ()), Clazz.innerTypeInstance(java.util.Collections$EmptySet$1, this, null)); +}); +c$.$Collections$EmptySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "Collections$EmptySet$1", null, java.util.Iterator); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return false; +}); +Clazz.overrideMethod(c$, "next", +function(){ +throw new java.util.NoSuchElementException(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "EmptyMap", java.util.AbstractMap, java.io.Serializable); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +return false; +}, "~O"); +Clazz.overrideMethod(c$, "containsValue", +function(value){ +return false; +}, "~O"); +Clazz.overrideMethod(c$, "entrySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +Clazz.overrideMethod(c$, "get", +function(key){ +return null; +}, "~O"); +Clazz.overrideMethod(c$, "keySet", +function(){ +return java.util.Collections.EMPTY_SET; +}); +Clazz.overrideMethod(c$, "values", +function(){ +return java.util.Collections.EMPTY_LIST; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "ReverseComparator", null, [java.util.Comparator, java.io.Serializable]); +Clazz.overrideMethod(c$, "compare", +function(o1, o2){ +var c2 = o2; +return c2.compareTo(o1); +}, "~O,~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.comparator = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "ReverseComparatorWithComparator", null, [java.util.Comparator, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(comparator){ +this.comparator = comparator; +}, "java.util.Comparator"); +Clazz.defineMethod(c$, "compare", +function(o1, o2){ +return this.comparator.compare(o2, o1); +}, "~O,~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.element = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "SingletonSet", java.util.AbstractSet, java.io.Serializable); +Clazz.makeConstructor(c$, +function(object){ +Clazz.superConstructor (this, java.util.Collections.SingletonSet, []); +this.element = object; +}, "~O"); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return ((Clazz.isClassDefined("java.util.Collections$SingletonSet$1") ? 0 : java.util.Collections.SingletonSet.$Collections$SingletonSet$1$ ()), Clazz.innerTypeInstance(java.util.Collections$SingletonSet$1, this, null)); +}); +c$.$Collections$SingletonSet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.$hasNext = true; +Clazz.instantialize(this, arguments);}, java.util, "Collections$SingletonSet$1", null, java.util.Iterator); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.$hasNext; +}); +Clazz.overrideMethod(c$, "next", +function(){ +if (this.$hasNext) { +this.$hasNext = false; +return this.b$["java.util.Collections.SingletonSet"].element; +}throw new java.util.NoSuchElementException(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.element = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "SingletonList", java.util.AbstractList, java.io.Serializable); +Clazz.makeConstructor(c$, +function(object){ +Clazz.superConstructor (this, java.util.Collections.SingletonList, []); +this.element = object; +}, "~O"); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.element == null ? object == null : this.element.equals(object); +}, "~O"); +Clazz.overrideMethod(c$, "get", +function(location){ +if (location == 0) { +return this.element; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz.overrideMethod(c$, "size", +function(){ +return 1; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.k = null; +this.v = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "SingletonMap", java.util.AbstractMap, java.io.Serializable); +Clazz.makeConstructor(c$, +function(key, value){ +Clazz.superConstructor (this, java.util.Collections.SingletonMap, []); +this.k = key; +this.v = value; +}, "~O,~O"); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +return this.k == null ? key == null : this.k.equals(key); +}, "~O"); +Clazz.overrideMethod(c$, "containsValue", +function(value){ +return this.v == null ? value == null : this.v.equals(value); +}, "~O"); +Clazz.overrideMethod(c$, "get", +function(key){ +if (this.containsKey(key)) { +return this.v; +}return null; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz.overrideMethod(c$, "entrySet", +function(){ +return ((Clazz.isClassDefined("java.util.Collections$SingletonMap$1") ? 0 : java.util.Collections.SingletonMap.$Collections$SingletonMap$1$ ()), Clazz.innerTypeInstance(java.util.Collections$SingletonMap$1, this, null)); +}); +c$.$Collections$SingletonMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "Collections$SingletonMap$1", java.util.AbstractSet); +Clazz.overrideMethod(c$, "contains", +function(object){ +if (Clazz.instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return this.b$["java.util.Collections.SingletonMap"].containsKey(entry.getKey()) && this.b$["java.util.Collections.SingletonMap"].containsValue(entry.getValue()); +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return 1; +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return ((Clazz.isClassDefined("java.util.Collections$SingletonMap$1$1") ? 0 : java.util.Collections.$Collections$SingletonMap$1$1$ ()), Clazz.innerTypeInstance(java.util.Collections$SingletonMap$1$1, this, null)); +}); +/*eoif5*/})(); +}; +c$.$Collections$SingletonMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.$hasNext = true; +Clazz.instantialize(this, arguments);}, java.util, "Collections$SingletonMap$1$1", null, java.util.Iterator); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.$hasNext; +}); +Clazz.overrideMethod(c$, "next", +function(){ +if (this.$hasNext) { +this.$hasNext = false; +return ((Clazz.isClassDefined("java.util.Collections$SingletonMap$1$1$1") ? 0 : java.util.Collections.$Collections$SingletonMap$1$1$1$ ()), Clazz.innerTypeInstance(java.util.Collections$SingletonMap$1$1$1, this, null)); +}throw new java.util.NoSuchElementException(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +c$.$Collections$SingletonMap$1$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "Collections$SingletonMap$1$1$1", null, java.util.Map.Entry); +Clazz.overrideMethod(c$, "equals", +function(object){ +return this.b$["java.util.Collections$SingletonMap$1"].contains(object); +}, "~O"); +Clazz.overrideMethod(c$, "getKey", +function(){ +return this.b$["java.util.Collections.SingletonMap"].k; +}); +Clazz.overrideMethod(c$, "getValue", +function(){ +return this.b$["java.util.Collections.SingletonMap"].v; +}); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return (this.b$["java.util.Collections.SingletonMap"].k == null ? 0 : this.b$["java.util.Collections.SingletonMap"].k.hashCode()) ^ (this.b$["java.util.Collections.SingletonMap"].v == null ? 0 : this.b$["java.util.Collections.SingletonMap"].v.hashCode()); +}); +Clazz.overrideMethod(c$, "setValue", +function(value){ +throw new UnsupportedOperationException(); +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.c = null; +this.mutex = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "SynchronizedCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(collection){ +this.c = collection; +this.mutex = this; +}, "java.util.Collection"); +Clazz.makeConstructor(c$, +function(collection, mutex){ +this.c = collection; +this.mutex = mutex; +}, "java.util.Collection,~O"); +Clazz.defineMethod(c$, "add", +function(object){ +{ +return this.c.add(object); +}}, "~O"); +Clazz.defineMethod(c$, "addAll", +function(collection){ +{ +return this.c.addAll(collection); +}}, "java.util.Collection"); +Clazz.defineMethod(c$, "clear", +function(){ +{ +this.c.clear(); +}}); +Clazz.defineMethod(c$, "contains", +function(object){ +{ +return this.c.contains(object); +}}, "~O"); +Clazz.defineMethod(c$, "containsAll", +function(collection){ +{ +return this.c.containsAll(collection); +}}, "java.util.Collection"); +Clazz.defineMethod(c$, "isEmpty", +function(){ +{ +return this.c.isEmpty(); +}}); +Clazz.defineMethod(c$, "iterator", +function(){ +{ +return this.c.iterator(); +}}); +Clazz.defineMethod(c$, "remove", +function(object){ +{ +return this.c.remove(object); +}}, "~O"); +Clazz.defineMethod(c$, "removeAll", +function(collection){ +{ +return this.c.removeAll(collection); +}}, "java.util.Collection"); +Clazz.defineMethod(c$, "retainAll", +function(collection){ +{ +return this.c.retainAll(collection); +}}, "java.util.Collection"); +Clazz.defineMethod(c$, "size", +function(){ +{ +return this.c.size(); +}}); +Clazz.defineMethod(c$, "toArray", +function(){ +{ +return this.c.toArray(); +}}); +Clazz.defineMethod(c$, "toString", +function(){ +{ +return this.c.toString(); +}}); +Clazz.defineMethod(c$, "toArray", +function(array){ +{ +return this.c.toArray(array); +}}, "~A"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "SynchronizedRandomAccessList", java.util.Collections.SynchronizedList, java.util.RandomAccess); +Clazz.overrideMethod(c$, "subList", +function(start, end){ +{ +return new java.util.Collections.SynchronizedRandomAccessList(this.list.subList(start, end), this.mutex); +}}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.list = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "SynchronizedList", java.util.Collections.SynchronizedCollection, java.util.List); +Clazz.makeConstructor(c$, +function(l){ +Clazz.superConstructor(this, java.util.Collections.SynchronizedList, [l]); +this.list = l; +}, "java.util.List"); +Clazz.makeConstructor(c$, +function(l, mutex){ +Clazz.superConstructor(this, java.util.Collections.SynchronizedList, [l, mutex]); +this.list = l; +}, "java.util.List,~O"); +Clazz.defineMethod(c$, "add", +function(location, object){ +{ +this.list.add(location, object); +}}, "~N,~O"); +Clazz.defineMethod(c$, "addAll", +function(location, collection){ +{ +return this.list.addAll(location, collection); +}}, "~N,java.util.Collection"); +Clazz.defineMethod(c$, "equals", +function(object){ +{ +return this.list.equals(object); +}}, "~O"); +Clazz.defineMethod(c$, "get", +function(location){ +{ +return this.list.get(location); +}}, "~N"); +Clazz.defineMethod(c$, "hashCode", +function(){ +{ +return this.list.hashCode(); +}}); +Clazz.defineMethod(c$, "indexOf", +function(object){ +{ +return this.list.indexOf(object); +}}, "~O"); +Clazz.defineMethod(c$, "lastIndexOf", +function(object){ +{ +return this.list.lastIndexOf(object); +}}, "~O"); +Clazz.defineMethod(c$, "listIterator", +function(){ +{ +return this.list.listIterator(); +}}); +Clazz.defineMethod(c$, "listIterator", +function(location){ +{ +return this.list.listIterator(location); +}}, "~N"); +Clazz.defineMethod(c$, "remove", +function(location){ +{ +return this.list.remove(location); +}}, "~N"); +Clazz.defineMethod(c$, "set", +function(location, object){ +{ +return this.list.set(location, object); +}}, "~N,~O"); +Clazz.defineMethod(c$, "subList", +function(start, end){ +{ +return new java.util.Collections.SynchronizedList(this.list.subList(start, end), this.mutex); +}}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.m = null; +this.mutex = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "SynchronizedMap", null, [java.util.Map, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(map){ +this.m = map; +this.mutex = this; +}, "java.util.Map"); +Clazz.makeConstructor(c$, +function(map, mutex){ +this.m = map; +this.mutex = mutex; +}, "java.util.Map,~O"); +Clazz.defineMethod(c$, "clear", +function(){ +{ +this.m.clear(); +}}); +Clazz.defineMethod(c$, "containsKey", +function(key){ +{ +return this.m.containsKey(key); +}}, "~O"); +Clazz.defineMethod(c$, "containsValue", +function(value){ +{ +return this.m.containsValue(value); +}}, "~O"); +Clazz.defineMethod(c$, "entrySet", +function(){ +{ +return new java.util.Collections.SynchronizedSet(this.m.entrySet(), this.mutex); +}}); +Clazz.defineMethod(c$, "equals", +function(object){ +{ +return this.m.equals(object); +}}, "~O"); +Clazz.defineMethod(c$, "get", +function(key){ +{ +return this.m.get(key); +}}, "~O"); +Clazz.defineMethod(c$, "hashCode", +function(){ +{ +return this.m.hashCode(); +}}); +Clazz.defineMethod(c$, "isEmpty", +function(){ +{ +return this.m.isEmpty(); +}}); +Clazz.defineMethod(c$, "keySet", +function(){ +{ +return new java.util.Collections.SynchronizedSet(this.m.keySet(), this.mutex); +}}); +Clazz.defineMethod(c$, "put", +function(key, value){ +{ +return this.m.put(key, value); +}}, "~O,~O"); +Clazz.defineMethod(c$, "putAll", +function(map){ +{ +this.m.putAll(map); +}}, "java.util.Map"); +Clazz.defineMethod(c$, "remove", +function(key){ +{ +return this.m.remove(key); +}}, "~O"); +Clazz.defineMethod(c$, "size", +function(){ +{ +return this.m.size(); +}}); +Clazz.defineMethod(c$, "values", +function(){ +{ +return new java.util.Collections.SynchronizedCollection(this.m.values(), this.mutex); +}}); +Clazz.defineMethod(c$, "toString", +function(){ +{ +return this.m.toString(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "SynchronizedSet", java.util.Collections.SynchronizedCollection, java.util.Set); +Clazz.overrideMethod(c$, "equals", +function(object){ +{ +return this.c.equals(object); +}}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +{ +return this.c.hashCode(); +}}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sm = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "SynchronizedSortedMap", java.util.Collections.SynchronizedMap, java.util.SortedMap); +Clazz.makeConstructor(c$, +function(map){ +Clazz.superConstructor(this, java.util.Collections.SynchronizedSortedMap, [map]); +this.sm = map; +}, "java.util.SortedMap"); +Clazz.makeConstructor(c$, +function(map, mutex){ +Clazz.superConstructor(this, java.util.Collections.SynchronizedSortedMap, [map, mutex]); +this.sm = map; +}, "java.util.SortedMap,~O"); +Clazz.defineMethod(c$, "comparator", +function(){ +{ +return this.sm.comparator(); +}}); +Clazz.defineMethod(c$, "firstKey", +function(){ +{ +return this.sm.firstKey(); +}}); +Clazz.defineMethod(c$, "headMap", +function(endKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.headMap(endKey), this.mutex); +}}, "~O"); +Clazz.defineMethod(c$, "lastKey", +function(){ +{ +return this.sm.lastKey(); +}}); +Clazz.defineMethod(c$, "subMap", +function(startKey, endKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.subMap(startKey, endKey), this.mutex); +}}, "~O,~O"); +Clazz.defineMethod(c$, "tailMap", +function(startKey){ +{ +return new java.util.Collections.SynchronizedSortedMap(this.sm.tailMap(startKey), this.mutex); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ss = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "SynchronizedSortedSet", java.util.Collections.SynchronizedSet, java.util.SortedSet); +Clazz.makeConstructor(c$, +function(set){ +Clazz.superConstructor(this, java.util.Collections.SynchronizedSortedSet, [set]); +this.ss = set; +}, "java.util.SortedSet"); +Clazz.makeConstructor(c$, +function(set, mutex){ +Clazz.superConstructor(this, java.util.Collections.SynchronizedSortedSet, [set, mutex]); +this.ss = set; +}, "java.util.SortedSet,~O"); +Clazz.defineMethod(c$, "comparator", +function(){ +{ +return this.ss.comparator(); +}}); +Clazz.defineMethod(c$, "first", +function(){ +{ +return this.ss.first(); +}}); +Clazz.defineMethod(c$, "headSet", +function(end){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.headSet(end), this.mutex); +}}, "~O"); +Clazz.defineMethod(c$, "last", +function(){ +{ +return this.ss.last(); +}}); +Clazz.defineMethod(c$, "subSet", +function(start, end){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.subSet(start, end), this.mutex); +}}, "~O,~O"); +Clazz.defineMethod(c$, "tailSet", +function(start){ +{ +return new java.util.Collections.SynchronizedSortedSet(this.ss.tailSet(start), this.mutex); +}}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.c = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "UnmodifiableCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(collection){ +this.c = collection; +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz.overrideMethod(c$, "addAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "clear", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz.defineMethod(c$, "contains", +function(object){ +return this.c.contains(object); +}, "~O"); +Clazz.defineMethod(c$, "containsAll", +function(collection){ +return this.c.containsAll(collection); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "isEmpty", +function(){ +return this.c.isEmpty(); +}); +Clazz.defineMethod(c$, "iterator", +function(){ +return ((Clazz.isClassDefined("java.util.Collections$UnmodifiableCollection$1") ? 0 : java.util.Collections.UnmodifiableCollection.$Collections$UnmodifiableCollection$1$ ()), Clazz.innerTypeInstance(java.util.Collections$UnmodifiableCollection$1, this, null)); +}); +Clazz.overrideMethod(c$, "remove", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz.overrideMethod(c$, "removeAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "retainAll", +function(collection){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "size", +function(){ +return this.c.size(); +}); +Clazz.defineMethod(c$, "toArray", +function(){ +return this.c.toArray(); +}); +Clazz.defineMethod(c$, "toArray", +function(array){ +return this.c.toArray(array); +}, "~A"); +Clazz.defineMethod(c$, "toString", +function(){ +return this.c.toString(); +}); +c$.$Collections$UnmodifiableCollection$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.iterator = null; +Clazz.instantialize(this, arguments);}, java.util, "Collections$UnmodifiableCollection$1", null, java.util.Iterator); +Clazz.prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableCollection"].c.iterator(); +}); +Clazz.defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz.defineMethod(c$, "next", +function(){ +return this.iterator.next(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "UnmodifiableRandomAccessList", java.util.Collections.UnmodifiableList, java.util.RandomAccess); +Clazz.overrideMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.UnmodifiableRandomAccessList(this.list.subList(start, end)); +}, "~N,~N"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.list = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "UnmodifiableList", java.util.Collections.UnmodifiableCollection, java.util.List); +Clazz.makeConstructor(c$, +function(l){ +Clazz.superConstructor(this, java.util.Collections.UnmodifiableList, [l]); +this.list = l; +}, "java.util.List"); +Clazz.defineMethod(c$, "add", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz.defineMethod(c$, "addAll", +function(location, collection){ +throw new UnsupportedOperationException(); +}, "~N,java.util.Collection"); +Clazz.defineMethod(c$, "equals", +function(object){ +return this.list.equals(object); +}, "~O"); +Clazz.defineMethod(c$, "get", +function(location){ +return this.list.get(location); +}, "~N"); +Clazz.defineMethod(c$, "hashCode", +function(){ +return this.list.hashCode(); +}); +Clazz.defineMethod(c$, "indexOf", +function(object){ +return this.list.indexOf(object); +}, "~O"); +Clazz.defineMethod(c$, "lastIndexOf", +function(object){ +return this.list.lastIndexOf(object); +}, "~O"); +Clazz.defineMethod(c$, "listIterator", +function(){ +return this.listIterator(0); +}); +Clazz.defineMethod(c$, "listIterator", +function(location){ +return ((Clazz.isClassDefined("java.util.Collections$UnmodifiableList$1") ? 0 : java.util.Collections.UnmodifiableList.$Collections$UnmodifiableList$1$ ()), Clazz.innerTypeInstance(java.util.Collections$UnmodifiableList$1, this, Clazz.cloneFinals("location", location))); +}, "~N"); +Clazz.defineMethod(c$, "remove", +function(location){ +throw new UnsupportedOperationException(); +}, "~N"); +Clazz.overrideMethod(c$, "set", +function(location, object){ +throw new UnsupportedOperationException(); +}, "~N,~O"); +Clazz.defineMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.UnmodifiableList(this.list.subList(start, end)); +}, "~N,~N"); +c$.$Collections$UnmodifiableList$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.iterator = null; +Clazz.instantialize(this, arguments);}, java.util, "Collections$UnmodifiableList$1", null, java.util.ListIterator); +Clazz.prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableList"].list.listIterator(this.f$.location); +}); +Clazz.overrideMethod(c$, "add", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz.defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz.defineMethod(c$, "hasPrevious", +function(){ +return this.iterator.hasPrevious(); +}); +Clazz.defineMethod(c$, "next", +function(){ +return this.iterator.next(); +}); +Clazz.defineMethod(c$, "nextIndex", +function(){ +return this.iterator.nextIndex(); +}); +Clazz.defineMethod(c$, "previous", +function(){ +return this.iterator.previous(); +}); +Clazz.defineMethod(c$, "previousIndex", +function(){ +return this.iterator.previousIndex(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz.overrideMethod(c$, "set", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.m = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "UnmodifiableMap", null, [java.util.Map, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(map){ +this.m = map; +}, "java.util.Map"); +Clazz.overrideMethod(c$, "clear", +function(){ +throw new UnsupportedOperationException(); +}); +Clazz.defineMethod(c$, "containsKey", +function(key){ +return this.m.containsKey(key); +}, "~O"); +Clazz.defineMethod(c$, "containsValue", +function(value){ +return this.m.containsValue(value); +}, "~O"); +Clazz.defineMethod(c$, "entrySet", +function(){ +return new java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet(this.m.entrySet()); +}); +Clazz.defineMethod(c$, "equals", +function(object){ +return this.m.equals(object); +}, "~O"); +Clazz.defineMethod(c$, "get", +function(key){ +return this.m.get(key); +}, "~O"); +Clazz.defineMethod(c$, "hashCode", +function(){ +return this.m.hashCode(); +}); +Clazz.defineMethod(c$, "isEmpty", +function(){ +return this.m.isEmpty(); +}); +Clazz.defineMethod(c$, "keySet", +function(){ +return new java.util.Collections.UnmodifiableSet(this.m.keySet()); +}); +Clazz.overrideMethod(c$, "put", +function(key, value){ +throw new UnsupportedOperationException(); +}, "~O,~O"); +Clazz.overrideMethod(c$, "putAll", +function(map){ +throw new UnsupportedOperationException(); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "remove", +function(key){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz.defineMethod(c$, "size", +function(){ +return this.m.size(); +}); +Clazz.defineMethod(c$, "values", +function(){ +return new java.util.Collections.UnmodifiableCollection(this.m.values()); +}); +Clazz.defineMethod(c$, "toString", +function(){ +return this.m.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections.UnmodifiableMap, "UnmodifiableEntrySet", java.util.Collections.UnmodifiableSet); +Clazz.overrideMethod(c$, "iterator", +function(){ +return ((Clazz.isClassDefined("java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1") ? 0 : java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.$Collections$UnmodifiableMap$UnmodifiableEntrySet$1$ ()), Clazz.innerTypeInstance(java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1, this, null)); +}); +Clazz.defineMethod(c$, "toArray", +function(){ +var length = this.c.size(); +var result = new Array(length); +var it = this.iterator(); +for (var i = length; --i >= 0; ) { +result[i] = it.next(); +} +return result; +}); +Clazz.defineMethod(c$, "toArray", +function(contents){ +var size = this.c.size(); +var index = 0; +var it = this.iterator(); +if (size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, size); +}while (index < size) { +contents[index++] = it.next(); +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +c$.$Collections$UnmodifiableMap$UnmodifiableEntrySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.iterator = null; +Clazz.instantialize(this, arguments);}, java.util, "Collections$UnmodifiableMap$UnmodifiableEntrySet$1", null, java.util.Iterator); +Clazz.prepareFields (c$, function(){ +this.iterator = this.b$["java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet"].c.iterator(); +}); +Clazz.defineMethod(c$, "hasNext", +function(){ +return this.iterator.hasNext(); +}); +Clazz.defineMethod(c$, "next", +function(){ +return new java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.UnmodifiableMapEntry(this.iterator.next()); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +throw new UnsupportedOperationException(); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.mapEntry = null; +Clazz.instantialize(this, arguments);}, java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet, "UnmodifiableMapEntry", null, java.util.Map.Entry); +Clazz.makeConstructor(c$, +function(entry){ +this.mapEntry = entry; +}, "java.util.Map.Entry"); +Clazz.defineMethod(c$, "equals", +function(object){ +return this.mapEntry.equals(object); +}, "~O"); +Clazz.defineMethod(c$, "getKey", +function(){ +return this.mapEntry.getKey(); +}); +Clazz.defineMethod(c$, "getValue", +function(){ +return this.mapEntry.getValue(); +}); +Clazz.defineMethod(c$, "hashCode", +function(){ +return this.mapEntry.hashCode(); +}); +Clazz.overrideMethod(c$, "setValue", +function(object){ +throw new UnsupportedOperationException(); +}, "~O"); +Clazz.defineMethod(c$, "toString", +function(){ +return this.mapEntry.toString(); +}); +/*eoif3*/})(); +/*eoif3*/})(); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "UnmodifiableSet", java.util.Collections.UnmodifiableCollection, java.util.Set); +Clazz.overrideMethod(c$, "equals", +function(object){ +return this.c.equals(object); +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return this.c.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sm = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "UnmodifiableSortedMap", java.util.Collections.UnmodifiableMap, java.util.SortedMap); +Clazz.makeConstructor(c$, +function(map){ +Clazz.superConstructor(this, java.util.Collections.UnmodifiableSortedMap, [map]); +this.sm = map; +}, "java.util.SortedMap"); +Clazz.defineMethod(c$, "comparator", +function(){ +return this.sm.comparator(); +}); +Clazz.defineMethod(c$, "firstKey", +function(){ +return this.sm.firstKey(); +}); +Clazz.defineMethod(c$, "headMap", +function(before){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.headMap(before)); +}, "~O"); +Clazz.defineMethod(c$, "lastKey", +function(){ +return this.sm.lastKey(); +}); +Clazz.defineMethod(c$, "subMap", +function(start, end){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.subMap(start, end)); +}, "~O,~O"); +Clazz.defineMethod(c$, "tailMap", +function(after){ +return new java.util.Collections.UnmodifiableSortedMap(this.sm.tailMap(after)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ss = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "UnmodifiableSortedSet", java.util.Collections.UnmodifiableSet, java.util.SortedSet); +Clazz.makeConstructor(c$, +function(set){ +Clazz.superConstructor(this, java.util.Collections.UnmodifiableSortedSet, [set]); +this.ss = set; +}, "java.util.SortedSet"); +Clazz.defineMethod(c$, "comparator", +function(){ +return this.ss.comparator(); +}); +Clazz.defineMethod(c$, "first", +function(){ +return this.ss.first(); +}); +Clazz.defineMethod(c$, "headSet", +function(before){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.headSet(before)); +}, "~O"); +Clazz.defineMethod(c$, "last", +function(){ +return this.ss.last(); +}); +Clazz.defineMethod(c$, "subSet", +function(start, end){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.subSet(start, end)); +}, "~O,~O"); +Clazz.defineMethod(c$, "tailSet", +function(after){ +return new java.util.Collections.UnmodifiableSortedSet(this.ss.tailSet(after)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.c = null; +this.type = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "CheckedCollection", null, [java.util.Collection, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(c, type){ +if (c == null || type == null) { +throw new NullPointerException(); +}this.c = c; +this.type = type; +}, "java.util.Collection,Class"); +Clazz.defineMethod(c$, "size", +function(){ +return this.c.size(); +}); +Clazz.defineMethod(c$, "isEmpty", +function(){ +return this.c.isEmpty(); +}); +Clazz.defineMethod(c$, "contains", +function(obj){ +return this.c.contains(obj); +}, "~O"); +Clazz.defineMethod(c$, "iterator", +function(){ +var i = this.c.iterator(); +if (Clazz.instanceOf(i,"java.util.ListIterator")) { +i = new java.util.Collections.CheckedListIterator(i, this.type); +}return i; +}); +Clazz.defineMethod(c$, "toArray", +function(){ +return this.c.toArray(); +}); +Clazz.defineMethod(c$, "toArray", +function(arr){ +return this.c.toArray(arr); +}, "~A"); +Clazz.defineMethod(c$, "add", +function(obj){ +return this.c.add(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +Clazz.defineMethod(c$, "remove", +function(obj){ +return this.c.remove(obj); +}, "~O"); +Clazz.defineMethod(c$, "containsAll", +function(c1){ +return this.c.containsAll(c1); +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "addAll", +function(c1){ +var size = c1.size(); +if (size == 0) { +return false; +}var arr = new Array(size); +var it = c1.iterator(); +for (var i = 0; i < size; i++) { +arr[i] = java.util.Collections.checkType(it.next(), this.type); +} +var added = false; +for (var i = 0; i < size; i++) { +added = new Boolean (added | this.c.add(arr[i])).valueOf(); +} +return added; +}, "java.util.Collection"); +Clazz.defineMethod(c$, "removeAll", +function(c1){ +return this.c.removeAll(c1); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "retainAll", +function(c1){ +return this.c.retainAll(c1); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "clear", +function(){ +this.c.clear(); +}); +Clazz.defineMethod(c$, "toString", +function(){ +return this.c.toString(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.i = null; +this.type = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "CheckedListIterator", null, java.util.ListIterator); +Clazz.makeConstructor(c$, +function(i, type){ +this.i = i; +this.type = type; +}, "java.util.ListIterator,Class"); +Clazz.defineMethod(c$, "hasNext", +function(){ +return this.i.hasNext(); +}); +Clazz.defineMethod(c$, "next", +function(){ +return this.i.next(); +}); +Clazz.defineMethod(c$, "remove", +function(){ +this.i.remove(); +}); +Clazz.defineMethod(c$, "hasPrevious", +function(){ +return this.i.hasPrevious(); +}); +Clazz.defineMethod(c$, "previous", +function(){ +return this.i.previous(); +}); +Clazz.defineMethod(c$, "nextIndex", +function(){ +return this.i.nextIndex(); +}); +Clazz.defineMethod(c$, "previousIndex", +function(){ +return this.i.previousIndex(); +}); +Clazz.defineMethod(c$, "set", +function(obj){ +this.i.set(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +Clazz.defineMethod(c$, "add", +function(obj){ +this.i.add(java.util.Collections.checkType(obj, this.type)); +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.l = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "CheckedList", java.util.Collections.CheckedCollection, java.util.List); +Clazz.makeConstructor(c$, +function(l, type){ +Clazz.superConstructor(this, java.util.Collections.CheckedList, [l, type]); +this.l = l; +}, "java.util.List,Class"); +Clazz.defineMethod(c$, "addAll", +function(index, c1){ +var size = c1.size(); +if (size == 0) { +return false; +}var arr = new Array(size); +var it = c1.iterator(); +for (var i = 0; i < size; i++) { +arr[i] = java.util.Collections.checkType(it.next(), this.type); +} +return this.l.addAll(index, java.util.Arrays.asList(arr)); +}, "~N,java.util.Collection"); +Clazz.defineMethod(c$, "get", +function(index){ +return this.l.get(index); +}, "~N"); +Clazz.defineMethod(c$, "set", +function(index, obj){ +return this.l.set(index, java.util.Collections.checkType(obj, this.type)); +}, "~N,~O"); +Clazz.defineMethod(c$, "add", +function(index, obj){ +this.l.add(index, java.util.Collections.checkType(obj, this.type)); +}, "~N,~O"); +Clazz.defineMethod(c$, "remove", +function(index){ +return this.l.remove(index); +}, "~N"); +Clazz.defineMethod(c$, "indexOf", +function(obj){ +return this.l.indexOf(obj); +}, "~O"); +Clazz.defineMethod(c$, "lastIndexOf", +function(obj){ +return this.l.lastIndexOf(obj); +}, "~O"); +Clazz.defineMethod(c$, "listIterator", +function(){ +return new java.util.Collections.CheckedListIterator(this.l.listIterator(), this.type); +}); +Clazz.defineMethod(c$, "listIterator", +function(index){ +return new java.util.Collections.CheckedListIterator(this.l.listIterator(index), this.type); +}, "~N"); +Clazz.defineMethod(c$, "subList", +function(fromIndex, toIndex){ +return java.util.Collections.checkedList(this.l.subList(fromIndex, toIndex), this.type); +}, "~N,~N"); +Clazz.defineMethod(c$, "equals", +function(obj){ +return this.l.equals(obj); +}, "~O"); +Clazz.defineMethod(c$, "hashCode", +function(){ +return this.l.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "CheckedRandomAccessList", java.util.Collections.CheckedList, java.util.RandomAccess); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.Collections, "CheckedSet", java.util.Collections.CheckedCollection, java.util.Set); +Clazz.overrideMethod(c$, "equals", +function(obj){ +return this.c.equals(obj); +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return this.c.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.m = null; +this.keyType = null; +this.valueType = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "CheckedMap", null, [java.util.Map, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(m, keyType, valueType){ +if (m == null || keyType == null || valueType == null) { +throw new NullPointerException(); +}this.m = m; +this.keyType = keyType; +this.valueType = valueType; +}, "java.util.Map,Class,Class"); +Clazz.defineMethod(c$, "size", +function(){ +return this.m.size(); +}); +Clazz.defineMethod(c$, "isEmpty", +function(){ +return this.m.isEmpty(); +}); +Clazz.defineMethod(c$, "containsKey", +function(key){ +return this.m.containsKey(key); +}, "~O"); +Clazz.defineMethod(c$, "containsValue", +function(value){ +return this.m.containsValue(value); +}, "~O"); +Clazz.defineMethod(c$, "get", +function(key){ +return this.m.get(key); +}, "~O"); +Clazz.defineMethod(c$, "put", +function(key, value){ +return this.m.put(java.util.Collections.checkType(key, this.keyType), java.util.Collections.checkType(value, this.valueType)); +}, "~O,~O"); +Clazz.defineMethod(c$, "remove", +function(key){ +return this.m.remove(key); +}, "~O"); +Clazz.overrideMethod(c$, "putAll", +function(map){ +var size = map.size(); +if (size == 0) { +return; +}var entries = new Array(size); +var it = map.entrySet().iterator(); +for (var i = 0; i < size; i++) { +var e = it.next(); +java.util.Collections.checkType(e.getKey(), this.keyType); +java.util.Collections.checkType(e.getValue(), this.valueType); +entries[i] = e; +} +for (var i = 0; i < size; i++) { +this.m.put(entries[i].getKey(), entries[i].getValue()); +} +}, "java.util.Map"); +Clazz.defineMethod(c$, "clear", +function(){ +this.m.clear(); +}); +Clazz.defineMethod(c$, "keySet", +function(){ +return this.m.keySet(); +}); +Clazz.defineMethod(c$, "values", +function(){ +return this.m.values(); +}); +Clazz.defineMethod(c$, "entrySet", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntrySet(this.m.entrySet(), this.valueType); +}); +Clazz.defineMethod(c$, "equals", +function(obj){ +return this.m.equals(obj); +}, "~O"); +Clazz.defineMethod(c$, "hashCode", +function(){ +return this.m.hashCode(); +}); +Clazz.defineMethod(c$, "toString", +function(){ +return this.m.toString(); +}); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.e = null; +this.valueType = null; +Clazz.instantialize(this, arguments);}, java.util.Collections.CheckedMap, "CheckedEntry", null, java.util.Map.Entry); +Clazz.makeConstructor(c$, +function(e, valueType){ +if (e == null) { +throw new NullPointerException(); +}this.e = e; +this.valueType = valueType; +}, "java.util.Map.Entry,Class"); +Clazz.defineMethod(c$, "getKey", +function(){ +return this.e.getKey(); +}); +Clazz.defineMethod(c$, "getValue", +function(){ +return this.e.getValue(); +}); +Clazz.defineMethod(c$, "setValue", +function(obj){ +return this.e.setValue(java.util.Collections.checkType(obj, this.valueType)); +}, "~O"); +Clazz.defineMethod(c$, "equals", +function(obj){ +return this.e.equals(obj); +}, "~O"); +Clazz.defineMethod(c$, "hashCode", +function(){ +return this.e.hashCode(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.s = null; +this.valueType = null; +Clazz.instantialize(this, arguments);}, java.util.Collections.CheckedMap, "CheckedEntrySet", null, java.util.Set); +Clazz.makeConstructor(c$, +function(s, valueType){ +this.s = s; +this.valueType = valueType; +}, "java.util.Set,Class"); +Clazz.defineMethod(c$, "iterator", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntrySet.CheckedEntryIterator(this.s.iterator(), this.valueType); +}); +Clazz.defineMethod(c$, "toArray", +function(){ +var thisSize = this.size(); +var array = new Array(thisSize); +var it = this.iterator(); +for (var i = 0; i < thisSize; i++) { +array[i] = it.next(); +} +return array; +}); +Clazz.defineMethod(c$, "toArray", +function(array){ +var thisSize = this.size(); +if (array.length < thisSize) { +var ct = array.getClass().getComponentType(); +array = java.lang.reflect.Array.newInstance(ct, thisSize); +}var it = this.iterator(); +for (var i = 0; i < thisSize; i++) { +array[i] = it.next(); +} +if (thisSize < array.length) { +array[thisSize] = null; +}return array; +}, "~A"); +Clazz.defineMethod(c$, "retainAll", +function(c){ +return this.s.retainAll(c); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "removeAll", +function(c){ +return this.s.removeAll(c); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "containsAll", +function(c){ +return this.s.containsAll(c); +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "addAll", +function(c){ +throw new UnsupportedOperationException(); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "remove", +function(o){ +return this.s.remove(o); +}, "~O"); +Clazz.defineMethod(c$, "contains", +function(o){ +return this.s.contains(o); +}, "~O"); +Clazz.overrideMethod(c$, "add", +function(o){ +throw new UnsupportedOperationException(); +}, "java.util.Map.Entry"); +Clazz.defineMethod(c$, "isEmpty", +function(){ +return this.s.isEmpty(); +}); +Clazz.defineMethod(c$, "clear", +function(){ +this.s.clear(); +}); +Clazz.defineMethod(c$, "size", +function(){ +return this.s.size(); +}); +Clazz.defineMethod(c$, "hashCode", +function(){ +return this.s.hashCode(); +}); +Clazz.defineMethod(c$, "equals", +function(object){ +return this.s.equals(object); +}, "~O"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.i = null; +this.valueType = null; +Clazz.instantialize(this, arguments);}, java.util.Collections.CheckedMap.CheckedEntrySet, "CheckedEntryIterator", null, java.util.Iterator); +Clazz.makeConstructor(c$, +function(i, valueType){ +this.i = i; +this.valueType = valueType; +}, "java.util.Iterator,Class"); +Clazz.defineMethod(c$, "hasNext", +function(){ +return this.i.hasNext(); +}); +Clazz.defineMethod(c$, "remove", +function(){ +this.i.remove(); +}); +Clazz.defineMethod(c$, "next", +function(){ +return new java.util.Collections.CheckedMap.CheckedEntry(this.i.next(), this.valueType); +}); +/*eoif3*/})(); +/*eoif3*/})(); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ss = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "CheckedSortedSet", java.util.Collections.CheckedSet, java.util.SortedSet); +Clazz.makeConstructor(c$, +function(s, type){ +Clazz.superConstructor(this, java.util.Collections.CheckedSortedSet, [s, type]); +this.ss = s; +}, "java.util.SortedSet,Class"); +Clazz.defineMethod(c$, "comparator", +function(){ +return this.ss.comparator(); +}); +Clazz.defineMethod(c$, "subSet", +function(fromElement, toElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.subSet(fromElement, toElement), this.type); +}, "~O,~O"); +Clazz.defineMethod(c$, "headSet", +function(toElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.headSet(toElement), this.type); +}, "~O"); +Clazz.defineMethod(c$, "tailSet", +function(fromElement){ +return new java.util.Collections.CheckedSortedSet(this.ss.tailSet(fromElement), this.type); +}, "~O"); +Clazz.defineMethod(c$, "first", +function(){ +return this.ss.first(); +}); +Clazz.defineMethod(c$, "last", +function(){ +return this.ss.last(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.sm = null; +Clazz.instantialize(this, arguments);}, java.util.Collections, "CheckedSortedMap", java.util.Collections.CheckedMap, java.util.SortedMap); +Clazz.makeConstructor(c$, +function(m, keyType, valueType){ +Clazz.superConstructor(this, java.util.Collections.CheckedSortedMap, [m, keyType, valueType]); +this.sm = m; +}, "java.util.SortedMap,Class,Class"); +Clazz.defineMethod(c$, "comparator", +function(){ +return this.sm.comparator(); +}); +Clazz.defineMethod(c$, "subMap", +function(fromKey, toKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.subMap(fromKey, toKey), this.keyType, this.valueType); +}, "~O,~O"); +Clazz.defineMethod(c$, "headMap", +function(toKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.headMap(toKey), this.keyType, this.valueType); +}, "~O"); +Clazz.defineMethod(c$, "tailMap", +function(fromKey){ +return new java.util.Collections.CheckedSortedMap(this.sm.tailMap(fromKey), this.keyType, this.valueType); +}, "~O"); +Clazz.defineMethod(c$, "firstKey", +function(){ +return this.sm.firstKey(); +}); +Clazz.defineMethod(c$, "lastKey", +function(){ +return this.sm.lastKey(); +}); +/*eoif3*/})(); +c$.EMPTY_ENUMERATION = null; +c$.EMPTY_ITERATOR = null; +c$.EMPTY_LIST = new java.util.Collections.EmptyList(); +c$.EMPTY_SET = new java.util.Collections.EmptySet(); +c$.EMPTY_MAP = new java.util.Collections.EmptyMap(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Comparator.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Comparator.js new file mode 100755 index 000000000000..29c1cd2b3433 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Comparator.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "Comparator"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Dictionary.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Dictionary.js new file mode 100755 index 000000000000..d403fa3cf067 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Dictionary.js @@ -0,0 +1,4 @@ +(function(){ +var c$ = Clazz.declareType(java.util, "Dictionary", null); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Enumeration.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Enumeration.js new file mode 100755 index 000000000000..86c7822657fd --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Enumeration.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "Enumeration"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/EventListener.js b/config/plugins/visualizations/jmol/static/j2s/java/util/EventListener.js new file mode 100755 index 000000000000..9ec371c90a0e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/EventListener.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "EventListener"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/EventListenerProxy.js b/config/plugins/visualizations/jmol/static/j2s/java/util/EventListenerProxy.js new file mode 100755 index 000000000000..67f605c06bde --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/EventListenerProxy.js @@ -0,0 +1,14 @@ +Clazz.load(["java.util.EventListener"], "java.util.EventListenerProxy", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.listener = null; +Clazz.instantialize(this, arguments);}, java.util, "EventListenerProxy", null, java.util.EventListener); +Clazz.makeConstructor(c$, +function(listener){ +this.listener = listener; +}, "java.util.EventListener"); +Clazz.defineMethod(c$, "getListener", +function(){ +return this.listener; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/EventObject.js b/config/plugins/visualizations/jmol/static/j2s/java/util/EventObject.js new file mode 100755 index 000000000000..f477d3630dde --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/EventObject.js @@ -0,0 +1,19 @@ +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.source = null; +Clazz.instantialize(this, arguments);}, java.util, "EventObject", null, java.io.Serializable); +Clazz.makeConstructor(c$, +function(source){ +if (source != null) this.source = source; + else throw new IllegalArgumentException(); +}, "~O"); +Clazz.defineMethod(c$, "getSource", +function(){ +return this.source; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.getClass().getName() + "[source=" + String.valueOf(this.source) + ']'; +}); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/HashMap.js b/config/plugins/visualizations/jmol/static/j2s/java/util/HashMap.js new file mode 100755 index 000000000000..7c2cf8b35f7b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/HashMap.js @@ -0,0 +1,670 @@ +Clazz.load(["java.util.AbstractMap", "$.AbstractSet", "$.Iterator", "$.Map", "$.MapEntry"], "java.util.HashMap", ["java.util.AbstractCollection", "$.Arrays", "java.util.MapEntry.Type"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.elementCount = 0; +this.elementData = null; +this.loadFactor = 0; +this.threshold = 0; +this.modCount = 0; +this.$entrySet = null; +this.__m = null; +this.__allowJS = false; +Clazz.instantialize(this, arguments);}, java.util, "HashMap", java.util.AbstractMap, [java.util.Map, Cloneable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(){ +var size = 16; +var loadFactor = 0.75; +{ +size = (arguments[0] || size); loadFactor = (arguments[1] || +0.75); +}this.initHM(size, loadFactor); +}); +Clazz.defineMethod(c$, "newElementArray", +function(s){ +return new Array(s); +}, "~N"); +Clazz.defineMethod(c$, "initHM", +function(capacity, loadFactor){ +var map = null; +{ +if (typeof capacity == "object") { map = capacity; this.__allowJS = +map.__allowJS; capacity = (map.size() < 6 ? 11 : map.size() * 2); } +else { this.__allowJS = true; } !capacity && (capacity = 0); +!loadFactor && (loadFactor = 0.75); +}if (capacity == 0) capacity = 16; +if (capacity >= 0) { +this.elementCount = 0; +this.elementData = this.newElementArray(capacity == 0 ? 1 : capacity); +this.loadFactor = loadFactor; +this.computeMaxSize(); +} else { +throw new IllegalArgumentException(); +}this.__setJS(); +if (map != null) { +this.putAll(map); +}}, "~N,~N"); +Clazz.defineMethod(c$, "putMapEntries", +function(mOriginal, evict){ +var n = mOriginal.size(); +if (n == 0) return; +var key = null; +var value = null; +if (java.util.HashMap.__isSimple(this) && java.util.HashMap.__isSimple(mOriginal)) { +var me = this; +var hash = 0; +var mode = java.util.HashMap.__hasKey(me, key); +{ +mOriginal.__m.forEach(function(value, key) { +me.putJSVal(hash, key, value, false, evict, mode); +}); +}return; +}if (java.util.HashMap.__isSimple(mOriginal)) { +var me = this; +{ +mOriginal.__m.forEach(function(value, key) { +me.putJavaValue(key, value); +}); +}return; +}this.__m = null; +for (var e, $e = mOriginal.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +key = e.getKey(); +value = e.getValue(); +this.putJavaValue(key, value); +} +}, "java.util.Map,~B"); +Clazz.defineMethod(c$, "reinitialize", +function(){ +this.elementData = null; +this.$entrySet = null; +this.$keySet = null; +this.$values = null; +this.modCount = 0; +this.threshold = 0; +this.elementCount = 0; +this.__setJS(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.modCount++; +if (java.util.HashMap.__isSimple(this)) { +{ +this.__m.clear(); +}}this.__setJS(); +if (this.elementCount > 0) { +this.elementCount = 0; +java.util.Arrays.fill(this.elementData, null); +this.modCount++; +}}); +Clazz.defineMethod(c$, "clone", +function(){ +var result; +try { +result = Clazz.superCall(this, java.util.HashMap, "clone", []); +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +result.reinitialize(); +result.putMapEntries(this, false); +return result; +}); +Clazz.defineMethod(c$, "computeMaxSize", +function(){ +this.threshold = Clazz.floatToInt(this.elementData.length * this.loadFactor); +}); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +switch (java.util.HashMap.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.HashMap.__ensureJavaMap(this); +break; +case 2: +return false; +case 3: +return true; +} +return (this.getJavaEntry(key) != null); +}, "~O"); +Clazz.defineMethod(c$, "keysEqual", +function(k1, entry){ +var k1Hash = k1 == null ? 0 : k1.hashCode(); +if (k1Hash != entry.origKeyHash) { +return false; +}if (k1 == null && entry.key == null) { +return true; +}return k1.equals(entry.key); +}, "~O,java.util.HashMap.Entry"); +Clazz.overrideMethod(c$, "containsValue", +function(value){ +if (java.util.HashMap.__isSimple(this)) { +var m = this.__m; +{ +var iter = m.values(); +for (var n = iter.next(); !n.done; n = iter.next()) { +if (n.value == value || n.value.equals$O(value)) { +return true; +} +} +}} else if (value != null) { +for (var i = this.elementData.length; --i >= 0; ) { +var entry = this.elementData[i]; +while (entry != null) { +if (value.equals(entry.value)) { +return true; +}entry = entry.next; +} +} +} else { +for (var i = this.elementData.length; --i >= 0; ) { +var entry = this.elementData[i]; +while (entry != null) { +if (entry.value == null) { +return true; +}entry = entry.next; +} +} +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "entrySet", +function(){ +var es; +return (es = this.$entrySet) == null ? (this.$entrySet = new java.util.HashMap.HashMapEntrySet(this)) : es; +}); +Clazz.overrideMethod(c$, "get", +function(key){ +switch (java.util.HashMap.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.HashMap.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v = null; +{ +v = this.__m.get(key); +}return v; +} +var m = this.getJavaEntry(key); +return (m == null ? null : m.value); +}, "~O"); +Clazz.defineMethod(c$, "getJavaEntry", +function(key){ +var index = this.getModuloHash(key); +return this.findJavaEntry(key, index); +}, "~O"); +Clazz.defineMethod(c$, "getModuloHash", +function(key){ +if (key == null) { +return 0; +}return (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +}, "~O"); +Clazz.defineMethod(c$, "findJavaEntry", +function(key, index){ +var m; +m = this.elementData[index]; +if (key != null) { +while (m != null && !this.keysEqual(key, m)) { +m = m.next; +} +} else { +while (m != null && m.key != null) { +m = m.next; +} +}return m; +}, "~O,~N"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz.overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = ((Clazz.isClassDefined("java.util.HashMap$1") ? 0 : java.util.HashMap.$HashMap$1$ ()), Clazz.innerTypeInstance(java.util.HashMap$1, this, null)); +}return this.$keySet; +}); +Clazz.overrideMethod(c$, "put", +function(key, value){ +var type = java.util.HashMap.__hasKey(this, key); +switch (type) { +case 0: +break; +case 1: +java.util.HashMap.__ensureJavaMap(this); +break; +case 2: +case 3: +return this.putJSVal(1, key, value, false, true, type); +} +return this.putJavaValue(key, value); +}, "~O,~O"); +Clazz.defineMethod(c$, "putJavaValue", +function(key, value){ +var index = this.getModuloHash(key); +var entry = this.findJavaEntry(key, index); +if (entry == null) { +this.modCount++; +if (++this.elementCount > this.threshold) { +this.rehash(); +index = key == null ? 0 : (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +}entry = this.createEntry(key, index, value); +return null; +}var result = entry.value; +entry.value = value; +return result; +}, "~O,~O"); +Clazz.defineMethod(c$, "createEntry", +function(key, index, value){ +var entry = new java.util.HashMap.Entry(key, value); +entry.next = this.elementData[index]; +this.elementData[index] = entry; +return entry; +}, "~O,~N,~O"); +Clazz.overrideMethod(c$, "putAll", +function(map){ +if (!map.isEmpty()) for (var entry, $entry = map.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +this.put(entry.getKey(), entry.getValue()); +} +}, "java.util.Map"); +Clazz.defineMethod(c$, "putJSVal", +function(hash, key, value, onlyIfAbsent, evict, mode){ +var v0 = null; +switch (mode) { +case 2: +{ +this.__m.set(key, value); +}++this.modCount; +break; +case 3: +if (hash != 0) { +{ +v0 = this.__m.get(key) || null; +}}if (!onlyIfAbsent || v0 == null) { +{ +this.__m.set(key, value); +}}break; +} +return v0; +}, "~N,~O,~O,~B,~B,~N"); +Clazz.defineMethod(c$, "rehashImpl", +function(capacity){ +var length = (capacity == 0 ? 1 : capacity << 1); +var newData = this.newElementArray(length); +for (var i = 0; i < this.elementData.length; i++) { +var entry = this.elementData[i]; +while (entry != null) { +var key = entry.key; +var index = key == null ? 0 : (key.hashCode() & 0x7FFFFFFF) % length; +var next = entry.next; +entry.next = newData[index]; +newData[index] = entry; +entry = next; +} +} +this.elementData = newData; +this.computeMaxSize(); +}, "~N"); +Clazz.defineMethod(c$, "rehash", +function(){ +this.rehashImpl(this.elementData.length); +}); +Clazz.overrideMethod(c$, "remove", +function(key){ +switch (java.util.HashMap.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.HashMap.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +return this.removeJSNode(1, key, null, false, true); +} +var entry = this.removeJavaEntry(key); +return (entry == null ? null : entry.value); +}, "~O"); +Clazz.defineMethod(c$, "removeJSNode", +function(hash, key, value, matchValue, movable){ +var v = null; +if (hash == 1 || matchValue) { +{ +v = this.__m.get(key) || null; +}}if (!matchValue || v === value || (value != null && value.equals(v))) { +{ +this.__m["delete"](key); +}++this.modCount; +switch (hash) { +case 1: +return v; +case 3: +return "true"; +} +}return null; +}, "~N,~O,~O,~B,~B"); +Clazz.defineMethod(c$, "removeJavaEntry", +function(key){ +var index = 0; +var entry; +var last = null; +if (key != null) { +index = (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +entry = this.elementData[index]; +while (entry != null && !this.keysEqual(key, entry)) { +last = entry; +entry = entry.next; +} +} else { +entry = this.elementData[0]; +while (entry != null && entry.key != null) { +last = entry; +entry = entry.next; +} +}if (entry == null) { +return null; +}if (last == null) { +this.elementData[index] = entry.next; +} else { +last.next = entry.next; +}this.modCount++; +this.elementCount--; +return entry; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +{ +if (this.__m) +return this.__m.size; +}return this.elementCount; +}); +Clazz.overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = ((Clazz.isClassDefined("java.util.HashMap$2") ? 0 : java.util.HashMap.$HashMap$2$ ()), Clazz.innerTypeInstance(java.util.HashMap$2, this, null)); +}return this.$values; +}); +Clazz.defineMethod(c$, "__setJS", +function(){ +if (this.__allowJS && java.util.HashMap.USE_SIMPLE) { +var m = null; +{ +m = new Map(); +}this.__m = m; +} else { +this.__m = null; +}}); +c$.__get = Clazz.defineMethod(c$, "__get", +function(map, key){ +{ +return map.__m.get(key == null ? null : key + ""); +}}, "~O,~O"); +c$.__set = Clazz.defineMethod(c$, "__set", +function(map, key, value){ +{ +map.__m.set(key == null ? null : key + "", value); +}}, "java.util.Map,~O,~O"); +c$.__hasKey = Clazz.defineMethod(c$, "__hasKey", +function(map, key){ +{ +return (!map.__m ? 0 : key != null && typeof key != "string" ? 1 : +map.__m.has(key) ? 3 : 2); +}}, "java.util.Map,~O"); +c$.__isSimple = Clazz.defineMethod(c$, "__isSimple", +function(map){ +{ +return !!map.__m; +}}, "java.util.Map"); +c$.__ensureJavaMap = Clazz.defineMethod(c$, "__ensureJavaMap", +function(map){ +{ +if (map.__m) { var m = map.__m; map.__m = null; +m.forEach(function(value, key){map.put(key, value);}); m.clear(); +} +}}, "java.util.Map"); +c$.$HashMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "HashMap$1", java.util.AbstractSet); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.HashMap"].containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.HashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.HashMap"].clear(); +}); +Clazz.overrideMethod(c$, "remove", +function(key){ +if (!this.b$["java.util.HashMap"].containsKey(key)) return false; +this.b$["java.util.HashMap"].remove(key); +return true; +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.HashMap.HashMapIterator(((Clazz.isClassDefined("java.util.HashMap$1$1") ? 0 : java.util.HashMap.$HashMap$1$1$ ()), Clazz.innerTypeInstance(java.util.HashMap$1$1, this, null)), this.b$["java.util.HashMap"]); +}); +/*eoif5*/})(); +}; +c$.$HashMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "HashMap$1$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +if (java.util.HashMap.__isSimple(this.b$["java.util.HashMap"])) { +{ +return (entry == null ? null : entry.value[0]); +}}return entry.key; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +c$.$HashMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "HashMap$2", java.util.AbstractCollection); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.HashMap"].containsValue(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.HashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.HashMap"].clear(); +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.HashMap.HashMapIterator(((Clazz.isClassDefined("java.util.HashMap$2$1") ? 0 : java.util.HashMap.$HashMap$2$1$ ()), Clazz.innerTypeInstance(java.util.HashMap$2$1, this, null)), this.b$["java.util.HashMap"]); +}); +/*eoif5*/})(); +}; +c$.$HashMap$2$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "HashMap$2$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +if (java.util.HashMap.__isSimple(this.b$["java.util.HashMap"])) { +{ +return (entry == null ? null : entry.value[1]); +}}return entry.value; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.origKeyHash = 0; +this.next = null; +Clazz.instantialize(this, arguments);}, java.util.HashMap, "Entry", java.util.MapEntry); +Clazz.makeConstructor(c$, +function(theKey, theValue){ +Clazz.superConstructor(this, java.util.HashMap.Entry, [theKey, theValue]); +this.origKeyHash = (theKey == null ? 0 : theKey.hashCode()); +}, "~O,~O"); +Clazz.defineMethod(c$, "clone", +function(){ +var entry = Clazz.superCall(this, java.util.HashMap.Entry, "clone", []); +if (this.next != null) { +entry.next = this.next.clone(); +}return entry; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.jsMapIterator = null; +this.isSimple = false; +this.index = 0; +this.expectedModCount = 0; +this.type = null; +this.canRemove = false; +this.entry = null; +this.lastEntry = null; +this.associatedMap = null; +Clazz.instantialize(this, arguments);}, java.util.HashMap, "HashMapIterator", null, java.util.Iterator); +Clazz.makeConstructor(c$, +function(value, hm){ +this.associatedMap = hm; +this.type = value; +this.expectedModCount = hm.modCount; +this.lastEntry = this.entry = null; +this.isSimple = java.util.HashMap.__isSimple(this.associatedMap); +if (this.isSimple) { +var m = this.associatedMap.__m; +{ +this.jsMapIterator = m.entries(); +this.entry = this.jsMapIterator.next(); +}}}, "java.util.MapEntry.Type,java.util.HashMap"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +if (this.isSimple) { +if (this.entry == null) { +return false; +}var isDone = false; +{ +isDone = this.entry.done; +}return !isDone; +}if (this.entry != null) { +return true; +}while (this.index < this.associatedMap.elementData.length) { +if (this.associatedMap.elementData[this.index] == null) { +this.index++; +} else { +return true; +}} +return false; +}); +Clazz.defineMethod(c$, "checkConcurrentMod", +function(){ +if (this.expectedModCount != this.associatedMap.modCount) { +throw new java.util.ConcurrentModificationException(); +}}); +Clazz.overrideMethod(c$, "next", +function(){ +this.checkConcurrentMod(); +if (!this.hasNext()) { +throw new java.util.NoSuchElementException(); +}var result = null; +if (this.isSimple) { +{ +result = this.entry; +this.entry = this.jsMapIterator.next() || null; +}} else if (this.entry == null) { +result = this.lastEntry = this.associatedMap.elementData[this.index++]; +this.entry = this.lastEntry.next; +} else { +if (this.lastEntry.next !== this.entry) { +this.lastEntry = this.lastEntry.next; +}result = this.entry; +this.entry = this.entry.next; +}this.canRemove = true; +return this.type.get(result); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +this.checkConcurrentMod(); +if (!this.canRemove) { +throw new IllegalStateException(); +}this.canRemove = false; +this.associatedMap.modCount++; +if (this.lastEntry.next === this.entry) { +while (this.associatedMap.elementData[--this.index] == null) { +;} +this.associatedMap.elementData[this.index] = this.associatedMap.elementData[this.index].next; +this.entry = null; +} else { +this.lastEntry.next = this.entry; +}this.associatedMap.elementCount--; +this.expectedModCount++; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.associatedMap = null; +Clazz.instantialize(this, arguments);}, java.util.HashMap, "HashMapEntrySet", java.util.AbstractSet); +Clazz.makeConstructor(c$, +function(hm){ +Clazz.superConstructor (this, java.util.HashMap.HashMapEntrySet, []); +this.associatedMap = hm; +}, "java.util.HashMap"); +Clazz.defineMethod(c$, "hashMap", +function(){ +return this.associatedMap; +}); +Clazz.overrideMethod(c$, "size", +function(){ +return this.associatedMap.elementCount; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.associatedMap.clear(); +}); +Clazz.overrideMethod(c$, "remove", +function(object){ +if (this.contains(object)) { +this.associatedMap.remove((object).getKey()); +return true; +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "contains", +function(object){ +if (!(Clazz.instanceOf(object,"java.util.Map.Entry"))) return false; +var key = (object).getKey(); +if (!this.associatedMap.containsKey(key)) return false; +if (java.util.HashMap.__isSimple(this.associatedMap)) { +var value = (object).getValue(); +var v = this.associatedMap.get(key); +return (value === v || value != null && value.equals(v)); +}var entry = this.associatedMap.getJavaEntry((object).getKey()); +return object.equals(entry); +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.HashMap.HashMapIterator(((Clazz.isClassDefined("java.util.HashMap$HashMapEntrySet$1") ? 0 : java.util.HashMap.HashMapEntrySet.$HashMap$HashMapEntrySet$1$ ()), Clazz.innerTypeInstance(java.util.HashMap$HashMapEntrySet$1, this, null)), this.associatedMap); +}); +c$.$HashMap$HashMapEntrySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "HashMap$HashMapEntrySet$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +if (java.util.HashMap.__isSimple(this.b$["java.util.HashMap.HashMapEntrySet"].associatedMap)) { +var key = null; +var value = null; +{ +key = entry.value[0]; +value = entry.value[1]; +}return new java.util.HashMap.Entry(key, value); +}return entry; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +c$.USE_SIMPLE = true; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/HashSet.js b/config/plugins/visualizations/jmol/static/j2s/java/util/HashSet.js new file mode 100755 index 000000000000..01c1605d4f56 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/HashSet.js @@ -0,0 +1,76 @@ +Clazz.load(["java.util.AbstractSet", "$.Set"], "java.util.HashSet", ["java.util.HashMap"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.backingMap = null; +Clazz.instantialize(this, arguments);}, java.util, "HashSet", java.util.AbstractSet, [java.util.Set, Cloneable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(){ +this.construct ( new java.util.HashMap()); +}); +Clazz.makeConstructor(c$, +function(capacity){ +this.construct ( new java.util.HashMap(capacity)); +}, "~N"); +Clazz.makeConstructor(c$, +function(capacity, loadFactor){ +this.construct ( new java.util.HashMap(capacity, loadFactor)); +}, "~N,~N"); +Clazz.makeConstructor(c$, +function(collection){ +this.construct ( new java.util.HashMap(collection.size() < 6 ? 11 : collection.size() * 2)); +for (var e, $e = collection.iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +this.add(e); +} +}, "java.util.Collection"); +Clazz.makeConstructor(c$, +function(backingMap){ +Clazz.superConstructor (this, java.util.HashSet, []); +this.backingMap = backingMap; +}, "java.util.HashMap"); +Clazz.overrideMethod(c$, "add", +function(object){ +return this.backingMap.put(object, this) == null; +}, "~O"); +Clazz.overrideMethod(c$, "clear", +function(){ +this.backingMap.clear(); +}); +Clazz.defineMethod(c$, "clone", +function(){ +try { +var clone = Clazz.superCall(this, java.util.HashSet, "clone", []); +clone.backingMap = this.backingMap.clone(); +return clone; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.backingMap.containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.backingMap.isEmpty(); +}); +Clazz.defineMethod(c$, "iterator", +function(){ +return this.backingMap.keySet().iterator(); +}); +Clazz.overrideMethod(c$, "remove", +function(object){ +return this.backingMap.remove(object) != null; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.backingMap.size(); +}); +Clazz.defineMethod(c$, "createBackingMap", +function(capacity, loadFactor){ +return new java.util.HashMap(capacity, loadFactor); +}, "~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Hashtable.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Hashtable.js new file mode 100755 index 000000000000..b275fa6e6fb6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Hashtable.js @@ -0,0 +1,758 @@ +Clazz.load(["java.util.AbstractCollection", "$.AbstractSet", "$.Dictionary", "$.Enumeration", "$.Iterator", "$.Map"], "java.util.Hashtable", ["java.util.Collections"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.table = null; +this.count = 0; +this.threshold = 0; +this.loadFactor = 0; +this.modCount = 0; +this.$keySet = null; +this.$entrySet = null; +this.$values = null; +this.__m = null; +this.__allowJS = false; +Clazz.instantialize(this, arguments);}, java.util, "Hashtable", java.util.Dictionary, [java.util.Map, Cloneable]); +Clazz.makeConstructor(c$, +function(){ +this.initHT(); +}); +Clazz.defineMethod(c$, "initHT", +function(){ +var map = null; +var capacity = 11; +var loadFactor = 0.75; +{ +capacity = arguments[0]; +loadFactor = arguments[1]; +if (typeof capacity == "object") { +map = capacity; +capacity = Math.max(2*t.size(), 11); +this.__allowJS = map.__allowJS; +} else { +this.__allowJS = true; +} +capacity = (capacity || 11); +loadFactor = (loadFactor || 0.75); +}if (capacity < 0) throw new IllegalArgumentException("Illegal Capacity: " + capacity); +if (loadFactor <= 0 || Float.isNaN(loadFactor)) throw new IllegalArgumentException("Illegal Load: " + loadFactor); +if (capacity == 0) capacity = 1; +this.loadFactor = loadFactor; +this.table = new Array(capacity); +this.threshold = Clazz.floatToInt(Math.min(capacity * loadFactor, 2147483640)); +this.__setJS(); +if (map != null) this.putAll(map); +}); +Clazz.overrideMethod(c$, "size", +function(){ +var c = this.count; +{ +c = this.__m && this.__m.size || c; +}return c; +}); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz.overrideMethod(c$, "keys", +function(){ +return this.getEnumeration(0); +}); +Clazz.overrideMethod(c$, "elements", +function(){ +return this.getEnumeration(1); +}); +Clazz.defineMethod(c$, "contains", +function(value){ +if (value == null) { +throw new NullPointerException(); +}if (this.size() == 0) return false; +if (java.util.Hashtable.__isSimple(this)) { +var m = this.__m; +{ +var iter = m.values(); +for (var n = iter.next(); !n.done; n = iter.next()) { +if (n.value == value || n.value.equals(value)) { +return true; +} +} +}} else { +var tab = this.table; +for (var i = tab.length; i-- > 0; ) { +for (var e = tab[i]; e != null; e = e.next_) { +if (e.value.equals(value)) { +return true; +}} +} +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "containsValue", +function(value){ +return this.contains(value); +}, "~O"); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return false; +case 3: +return true; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +return true; +}} +return false; +}, "~O"); +Clazz.overrideMethod(c$, "get", +function(key){ +if (key == null) return null; +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v = null; +{ +v = this.__m.get(key); +}return v; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +return e.value; +}} +return null; +}, "~O"); +Clazz.defineMethod(c$, "rehash", +function(){ +var oldCapacity = this.table.length; +var oldMap = this.table; +var newCapacity = (oldCapacity << 1) + 1; +if (newCapacity - 2147483639 > 0) { +if (oldCapacity == 2147483639) return; +newCapacity = 2147483639; +}var newMap = new Array(newCapacity); +this.modCount++; +this.threshold = Clazz.floatToInt(Math.min(newCapacity * this.loadFactor, 2147483640)); +this.table = newMap; +for (var i = oldCapacity; i-- > 0; ) { +for (var old = oldMap[i]; old != null; ) { +var e = old; +old = old.next_; +var index = (e.hash & 0x7FFFFFFF) % newCapacity; +e.next_ = newMap[index]; +newMap[index] = e; +} +} +}); +Clazz.defineMethod(c$, "addEntry", +function(hash, key, value, index){ +this.modCount++; +var tab = this.table; +if (this.count >= this.threshold) { +this.rehash(); +tab = this.table; +hash = key.hashCode(); +index = (hash & 0x7FFFFFFF) % tab.length; +}var e = tab[index]; +tab[index] = new java.util.Hashtable.Entry(hash, key, value, e); +this.count++; +}, "~N,~O,~O,~N"); +Clazz.overrideMethod(c$, "put", +function(key, value){ +if (value == null) { +throw new NullPointerException(); +}switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +{ +this.__m.set(key, value); +}++this.modCount; +return null; +case 3: +var v0 = null; +{ +v0 = this.__m.get(key); +this.__m.set(key, value); +}++this.modCount; +return v0; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var entry = tab[index]; +for (; entry != null; entry = entry.next_) { +if ((entry.hash == hash) && entry.key.equals(key)) { +var old = entry.value; +entry.value = value; +return old; +}} +this.addEntry(hash, key, value, index); +return null; +}, "~O,~O"); +Clazz.overrideMethod(c$, "remove", +function(key){ +if (key == null) throw new NullPointerException("Hashtable key may not be null"); +switch (java.util.Hashtable.__hasKey(this, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this); +break; +case 2: +return null; +case 3: +var v0 = null; +{ +v0 = this.__m.get(key); this.__m["delete"](key); +}++this.modCount; +return v0; +} +var tab = this.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if ((e.hash == hash) && e.key.equals(key)) { +this.modCount++; +if (prev != null) { +prev.next_ = e.next_; +} else { +tab[index] = e.next_; +}this.count--; +var oldValue = e.value; +e.value = null; +return oldValue; +}} +return null; +}, "~O"); +Clazz.overrideMethod(c$, "putAll", +function(t){ +var key = null; +var value = null; +if (java.util.Hashtable.__isSimple(t)) { +var me = this; +{ +t.__m.forEach(function(value, key) { me.put(key, value); }) +}return; +}for (var e, $e = t.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) this.put(e.getKey(), e.getValue()); + +}, "java.util.Map"); +Clazz.overrideMethod(c$, "clear", +function(){ +var tab = this.table; +this.modCount++; +if (java.util.Hashtable.__isSimple(this)) { +{ +this.__m.clear(); +}}this.__setJS(); +for (var index = tab.length; --index >= 0; ) tab[index] = null; + +this.count = 0; +}); +Clazz.defineMethod(c$, "clone", +function(){ +try { +var t = Clazz.superCall(this, java.util.Hashtable, "clone", []); +t.table = new Array(this.table.length); +for (var i = this.table.length; i-- > 0; ) { +t.table[i] = (this.table[i] != null) ? this.table[i].clone() : null; +} +t.$keySet = null; +t.$entrySet = null; +t.$values = null; +t.modCount = 0; +if (java.util.Hashtable.__isSimple(this)) { +t.__setJS(); +var me = this; +{ +me.__m.forEach(function(value, key) { +t.__m.set(key, value); t.modCount++; +}); +}} else { +t.__m = null; +}return t; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +throw new InternalError(e); +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "toString", +function(){ +var max = this.size() - 1; +if (max == -1) return "{}"; +var it = this.entrySet().iterator(); +var sb = "{"; +for (var i = 0; ; i++) { +var e = it.next(); +var key = e.getKey(); +var value = e.getValue(); +sb += (key === this ? "(this Map)" : key.toString()); +sb += "="; +sb += (value === this ? "(this Map)" : value.toString()); +if (i == max) return sb + '}'; +sb += ", "; +} +}); +Clazz.overrideMethod(c$, "equals", +function(o){ +if (o === this) return true; +if (!(Clazz.instanceOf(o,"java.util.Map"))) return false; +var t = o; +if (t.size() != this.size()) return false; +try { +var i = this.entrySet().iterator(); +while (i.hasNext()) { +var e = i.next(); +var key = e.getKey(); +var value = e.getValue(); +if (value == null) { +if (!(t.get(key) == null && t.containsKey(key))) return false; +} else { +if (!value.equals(t.get(key))) return false; +}} +} catch (e$$) { +if (Clazz.exceptionOf(e$$,"ClassCastException")){ +var unused = e$$; +{ +return false; +} +} else if (Clazz.exceptionOf(e$$, NullPointerException)){ +var unused = e$$; +{ +return false; +} +} else { +throw e$$; +} +} +return true; +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +var h = 0; +if (this.count == 0 || this.loadFactor < 0) return h; +this.loadFactor = -this.loadFactor; +var tab = this.table; +for (var entry, $entry = 0, $$entry = tab; $entry < $$entry.length && ((entry = $$entry[$entry]) || true); $entry++) { +while (entry != null) { +h += entry.hashCode(); +entry = entry.next_; +} +} +this.loadFactor = -this.loadFactor; +return h; +}); +Clazz.defineMethod(c$, "getEnumeration", +function(type){ +if (this.size() == 0) { +return java.util.Collections.emptyEnumeration(); +} else { +return new java.util.Hashtable.Enumerator(this, type, false); +}}, "~N"); +Clazz.defineMethod(c$, "getIterator", +function(type){ +if (this.size() == 0) { +return java.util.Collections.emptyIterator(); +} else { +return new java.util.Hashtable.Enumerator(this, type, true); +}}, "~N"); +Clazz.overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) this.$keySet = new java.util.Hashtable.KeySet(this); +return this.$keySet; +}); +Clazz.overrideMethod(c$, "entrySet", +function(){ +if (this.$entrySet == null) this.$entrySet = new java.util.Hashtable.EntrySet(this); +return this.$entrySet; +}); +Clazz.overrideMethod(c$, "values", +function(){ +if (this.$values == null) this.$values = new java.util.Hashtable.ValueCollection(this); +return this.$values; +}); +Clazz.defineMethod(c$, "__setJS", +function(){ +if (this.__allowJS && java.util.Hashtable.USE_SIMPLE) { +var m = null; +{ +m = new Map(); +}this.__m = m; +} else { +this.__m = null; +}}); +c$.__get = Clazz.defineMethod(c$, "__get", +function(map, key){ +{ +return map.__m.get(key == null ? null : key + "") +}}, "~O,~O"); +c$.__set = Clazz.defineMethod(c$, "__set", +function(map, key, value){ +{ +map.__m.set(key == null ? null : key + "", value) +}}, "java.util.Map,~O,~O"); +c$.__hasKey = Clazz.defineMethod(c$, "__hasKey", +function(map, key){ +{ +return (!map.__m ? 0 : key != null && typeof key != "string" +? 1 : map.__m.has(key) ? 3 : 2); +}}, "java.util.Map,~O"); +c$.__isSimple = Clazz.defineMethod(c$, "__isSimple", +function(map){ +{ +return !!map.__m; +}}, "java.util.Map"); +c$.__ensureJavaMap = Clazz.defineMethod(c$, "__ensureJavaMap", +function(map){ +{ +if (map.__m) { +var m = map.__m; +map.__m = null; +m.forEach(function(value, key){map.put(key, value);}); +m.clear(); +} +}}, "java.util.Map"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.hash = 0; +this.key = null; +this.value = null; +this.next_ = null; +Clazz.instantialize(this, arguments);}, java.util.Hashtable, "Entry", null, java.util.Map.Entry); +Clazz.makeConstructor(c$, +function(hash, key, value, next){ +this.hash = hash; +this.key = key; +this.value = value; +this.next_ = next; +}, "~N,~O,~O,java.util.Hashtable.Entry"); +Clazz.overrideMethod(c$, "clone", +function(){ +return new java.util.Hashtable.Entry(this.hash, this.key, this.value, (this.next_ == null ? null : this.next_.clone())); +}); +Clazz.overrideMethod(c$, "getKey", +function(){ +return this.key; +}); +Clazz.overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz.overrideMethod(c$, "setValue", +function(value){ +if (value == null) throw new NullPointerException(); +var oldValue = this.value; +this.value = value; +return oldValue; +}, "~O"); +Clazz.overrideMethod(c$, "equals", +function(o){ +if (!(Clazz.instanceOf(o,"java.util.Map.Entry"))) return false; +var e = o; +return (this.key == null ? e.getKey() == null : this.key.equals(e.getKey())) && (this.value == null ? e.getValue() == null : this.value.equals(e.getValue())); +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return this.hash ^ (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz.defineMethod(c$, "toString", +function(){ +return this.key.toString() + "=" + this.value.toString(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ht = null; +Clazz.instantialize(this, arguments);}, java.util.Hashtable, "KeySet", java.util.AbstractSet); +Clazz.makeConstructor(c$, +function(ht){ +Clazz.superConstructor (this, java.util.Hashtable.KeySet, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(0); +}); +Clazz.overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz.overrideMethod(c$, "contains", +function(o){ +return this.ht.containsKey(o); +}, "~O"); +Clazz.overrideMethod(c$, "remove", +function(o){ +return this.ht.remove(o) != null; +}, "~O"); +Clazz.overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ht = null; +Clazz.instantialize(this, arguments);}, java.util.Hashtable, "EntrySet", java.util.AbstractSet); +Clazz.makeConstructor(c$, +function(ht){ +Clazz.superConstructor (this, java.util.Hashtable.EntrySet, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(2); +}); +Clazz.overrideMethod(c$, "contains", +function(o){ +if (!(Clazz.instanceOf(o,"java.util.Map.Entry"))) return false; +var entry = o; +var key = entry.getKey(); +switch (java.util.Hashtable.__hasKey(this.ht, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this.ht); +break; +case 3: +var value = entry.getValue(); +var v = this.ht.get(key); +return (value === v || value != null && value.equals(key)); +case 2: +return false; +} +var tab = this.ht.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +for (var e = tab[index]; e != null; e = e.next_) if (e.hash == hash && e.equals(entry)) return true; + +return false; +}, "~O"); +Clazz.overrideMethod(c$, "remove", +function(o){ +if (!(Clazz.instanceOf(o,"java.util.Map.Entry"))) return false; +var entry = o; +var key = entry.getKey(); +switch (java.util.Hashtable.__hasKey(this.ht, key)) { +case 0: +break; +case 1: +java.util.Hashtable.__ensureJavaMap(this.ht); +break; +case 3: +var value = entry.getValue(); +if (value == null) return false; +var v = this.ht.get(key); +if (v === value || v.equals(value)) { +this.ht.remove(key); +return true; +}return false; +case 2: +return false; +} +var tab = this.ht.table; +var hash = key.hashCode(); +var index = (hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if (e.hash == hash && e.equals(entry)) { +this.ht.modCount++; +if (prev != null) prev.next_ = e.next_; + else tab[index] = e.next_; +this.ht.count--; +e.value = null; +return true; +}} +return false; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.ht = null; +Clazz.instantialize(this, arguments);}, java.util.Hashtable, "ValueCollection", java.util.AbstractCollection); +Clazz.makeConstructor(c$, +function(ht){ +Clazz.superConstructor (this, java.util.Hashtable.ValueCollection, []); +this.ht = ht; +}, "java.util.Hashtable"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return this.ht.getIterator(1); +}); +Clazz.overrideMethod(c$, "size", +function(){ +return this.ht.size(); +}); +Clazz.overrideMethod(c$, "contains", +function(o){ +return this.ht.containsValue(o); +}, "~O"); +Clazz.overrideMethod(c$, "clear", +function(){ +this.ht.clear(); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.table = null; +this.index = 0; +this.next_ = null; +this.current = null; +this.type = 0; +this.jsMapIterator = null; +this.ht = null; +this.isIterator = false; +this.expectedModCount = 0; +Clazz.instantialize(this, arguments);}, java.util.Hashtable, "Enumerator", null, [java.util.Enumeration, java.util.Iterator]); +Clazz.makeConstructor(c$, +function(ht, type, iterator){ +this.ht = ht; +this.table = ht.table; +this.index = ht.table.length; +this.type = type; +this.isIterator = iterator; +this.expectedModCount = ht.modCount; +if (java.util.Hashtable.__isSimple(ht)) { +var m = ht.__m; +{ +this.jsMapIterator = m.entries(); +this.next_ = this.jsMapIterator.next(); +}}}, "java.util.Hashtable,~N,~B"); +Clazz.overrideMethod(c$, "hasMoreElements", +function(){ +if (java.util.Hashtable.__isSimple(this.ht)) { +var b = false; +{ +b = this.next_ && !this.next_.done +}return b; +} else { +var e = this.next_; +var i = this.index; +var t = this.table; +while (e == null && i > 0) { +e = t[--i]; +} +this.next_ = e; +this.index = i; +return e != null; +}}); +Clazz.overrideMethod(c$, "nextElement", +function(){ +var node = this.next_; +if (java.util.Hashtable.__isSimple(this.ht)) { +var t = this.type; +this.current = node; +var n = null; +{ +n = this.jsMapIterator.next() || null; +}this.next_ = n; +if (node != null) { +var k = null; +var v = null; +var done = false; +{ +done = node.done; +if (!done) { +if (t < 2) return node.value[t]; +k = node.value[0]; +v = node.value[1]; +} +}if (!done) { +return ((Clazz.isClassDefined("java.util.Hashtable$Enumerator$1") ? 0 : java.util.Hashtable.Enumerator.$Hashtable$Enumerator$1$ ()), Clazz.innerTypeInstance(java.util.Hashtable$Enumerator$1, this, null, 0, k, v, null)); +}}} else { +var i = this.index; +var t = this.table; +while (node == null && i > 0) { +node = t[--i]; +} +this.next_ = node; +this.index = i; +if (node != null) { +var e = this.current = this.next_; +this.next_ = e.next_; +return this.type == 0 ? e.key : (this.type == 1 ? e.value : e); +}}throw new java.util.NoSuchElementException("Hashtable Enumerator"); +}); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.hasMoreElements(); +}); +Clazz.overrideMethod(c$, "next", +function(){ +if (this.ht.modCount != this.expectedModCount) throw new java.util.ConcurrentModificationException(); +return this.nextElement(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +if (!this.isIterator) throw new UnsupportedOperationException(); +var p = this.current; +if (p == null) throw new IllegalStateException("Hashtable Enumerator"); +if (this.ht.modCount != this.expectedModCount) throw new java.util.ConcurrentModificationException(); +if (java.util.Hashtable.__isSimple(this.ht)) { +var key = null; +{ +key = p.value[0]; +}this.ht.remove(key); +this.expectedModCount++; +} else { +{ +var tab = this.ht.table; +var index = (this.current.hash & 0x7FFFFFFF) % tab.length; +var e = tab[index]; +for (var prev = null; e != null; prev = e, e = e.next_) { +if (e === this.current) { +this.ht.modCount++; +this.expectedModCount++; +if (prev == null) tab[index] = e.next_; + else prev.next_ = e.next_; +this.ht.count--; +this.current = null; +return; +}} +throw new java.util.ConcurrentModificationException(); +}}}); +c$.$Hashtable$Enumerator$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "Hashtable$Enumerator$1", java.util.Hashtable.Entry); +Clazz.overrideMethod(c$, "setValue", +function(value){ +var m = this.b$["java.util.Hashtable.Enumerator"].ht.modCount; +var v = this.b$["java.util.Hashtable.Enumerator"].ht.put(this.getKey(), value); +this.b$["java.util.Hashtable.Enumerator"].ht.modCount = m; +return v; +}, "~O"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +c$.USE_SIMPLE = true; +}); +;//5.0.1-v2 Sat Apr 06 02:47:40 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/IdentityHashMap.js b/config/plugins/visualizations/jmol/static/j2s/java/util/IdentityHashMap.js new file mode 100755 index 000000000000..1d069f09112b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/IdentityHashMap.js @@ -0,0 +1,447 @@ +Clazz.load(["java.util.AbstractMap", "$.AbstractSet", "$.Iterator", "$.Map", "$.MapEntry"], "java.util.IdentityHashMap", ["java.util.AbstractCollection", "java.util.MapEntry.Type"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.elementData = null; +this.$size = 0; +this.threshold = 0; +this.modCount = 0; +Clazz.instantialize(this, arguments);}, java.util, "IdentityHashMap", java.util.AbstractMap, [java.util.Map, java.io.Serializable, Cloneable]); +Clazz.makeConstructor(c$, +function(){ +this.construct (21); +}); +Clazz.makeConstructor(c$, +function(maxSize){ +Clazz.superConstructor (this, java.util.IdentityHashMap, []); +if (maxSize >= 0) { +this.$size = 0; +this.threshold = this.getThreshold(maxSize); +this.elementData = this.newElementArray(this.computeElementArraySize()); +} else { +throw new IllegalArgumentException(); +}}, "~N"); +Clazz.makeConstructor(c$, +function(map){ +this.construct (map.size() < 6 ? 11 : map.size() * 2); +this.putAllImpl(map); +}, "java.util.Map"); +Clazz.defineMethod(c$, "getThreshold", +function(maxSize){ +return maxSize > 3 ? maxSize : 3; +}, "~N"); +Clazz.defineMethod(c$, "computeElementArraySize", +function(){ +return (Clazz.doubleToInt((this.threshold * 10000) / 7500)) * 2; +}); +Clazz.defineMethod(c$, "newElementArray", +function(s){ +return new Array(s); +}, "~N"); +Clazz.defineMethod(c$, "massageValue", +function(value){ +return ((value === java.util.IdentityHashMap.NULL_OBJECT) ? null : value); +}, "~O"); +Clazz.overrideMethod(c$, "clear", +function(){ +this.$size = 0; +for (var i = 0; i < this.elementData.length; i++) { +this.elementData[i] = null; +} +this.modCount++; +}); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +if (key == null) { +key = java.util.IdentityHashMap.NULL_OBJECT; +}var index = this.findIndex(key, this.elementData); +return this.elementData[index] === key; +}, "~O"); +Clazz.overrideMethod(c$, "containsValue", +function(value){ +if (value == null) { +value = java.util.IdentityHashMap.NULL_OBJECT; +}for (var i = 1; i < this.elementData.length; i = i + 2) { +if (this.elementData[i] === value) { +return true; +}} +return false; +}, "~O"); +Clazz.overrideMethod(c$, "get", +function(key){ +if (key == null) { +key = java.util.IdentityHashMap.NULL_OBJECT; +}var index = this.findIndex(key, this.elementData); +if (this.elementData[index] === key) { +var result = this.elementData[index + 1]; +return this.massageValue(result); +}return null; +}, "~O"); +Clazz.defineMethod(c$, "getEntry", +function(key){ +if (key == null) { +key = java.util.IdentityHashMap.NULL_OBJECT; +}var index = this.findIndex(key, this.elementData); +if (this.elementData[index] === key) { +return this.getEntry(index); +}return null; +}, "~O"); +Clazz.defineMethod(c$, "getEntry", +function(index){ +var key = this.elementData[index]; +var value = this.elementData[index + 1]; +if (key === java.util.IdentityHashMap.NULL_OBJECT) { +key = null; +}if (value === java.util.IdentityHashMap.NULL_OBJECT) { +value = null; +}return new java.util.IdentityHashMap.IdentityHashMapEntry(key, value); +}, "~N"); +Clazz.defineMethod(c$, "findIndex", +function(key, array){ +var length = array.length; +var index = this.getModuloHash(key, length); +var last = (index + length - 2) % length; +while (index != last) { +if (array[index] === key || (array[index] == null)) { +break; +}index = (index + 2) % length; +} +return index; +}, "~O,~A"); +Clazz.defineMethod(c$, "getModuloHash", +function(key, length){ +return ((System.identityHashCode(key) & 0x7FFFFFFF) % (Clazz.doubleToInt(length / 2))) * 2; +}, "~O,~N"); +Clazz.overrideMethod(c$, "put", +function(key, value){ +var _key = key; +var _value = value; +if (_key == null) { +_key = java.util.IdentityHashMap.NULL_OBJECT; +}if (_value == null) { +_value = java.util.IdentityHashMap.NULL_OBJECT; +}var index = this.findIndex(_key, this.elementData); +if (this.elementData[index] !== _key) { +this.modCount++; +if (++this.$size > this.threshold) { +this.rehash(); +index = this.findIndex(_key, this.elementData); +}this.elementData[index] = _key; +this.elementData[index + 1] = null; +}var result = this.elementData[index + 1]; +this.elementData[index + 1] = _value; +return this.massageValue(result); +}, "~O,~O"); +Clazz.overrideMethod(c$, "putAll", +function(map){ +this.putAllImpl(map); +}, "java.util.Map"); +Clazz.defineMethod(c$, "rehash", +function(){ +var newlength = this.elementData.length << 1; +if (newlength == 0) { +newlength = 1; +}var newData = this.newElementArray(newlength); +for (var i = 0; i < this.elementData.length; i = i + 2) { +var key = this.elementData[i]; +if (key != null) { +var index = this.findIndex(key, newData); +newData[index] = key; +newData[index + 1] = this.elementData[i + 1]; +}} +this.elementData = newData; +this.computeMaxSize(); +}); +Clazz.defineMethod(c$, "computeMaxSize", +function(){ +this.threshold = (Clazz.doubleToInt((Clazz.doubleToInt(this.elementData.length / 2)) * 7500 / 10000)); +}); +Clazz.overrideMethod(c$, "remove", +function(key){ +if (key == null) { +key = java.util.IdentityHashMap.NULL_OBJECT; +}var hashedOk; +var index; +var next; +var hash; +var result; +var object; +index = next = this.findIndex(key, this.elementData); +if (this.elementData[index] !== key) { +return null; +}result = this.elementData[index + 1]; +var length = this.elementData.length; +while (true) { +next = (next + 2) % length; +object = this.elementData[next]; +if (object == null) { +break; +}hash = this.getModuloHash(object, length); +hashedOk = hash > index; +if (next < index) { +hashedOk = hashedOk || (hash <= next); +} else { +hashedOk = hashedOk && (hash <= next); +}if (!hashedOk) { +this.elementData[index] = object; +this.elementData[index + 1] = this.elementData[next + 1]; +index = next; +}} +this.$size--; +this.modCount++; +this.elementData[index] = null; +this.elementData[index + 1] = null; +return this.massageValue(result); +}, "~O"); +Clazz.overrideMethod(c$, "entrySet", +function(){ +return new java.util.IdentityHashMap.IdentityHashMapEntrySet(this); +}); +Clazz.overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = ((Clazz.isClassDefined("java.util.IdentityHashMap$1") ? 0 : java.util.IdentityHashMap.$IdentityHashMap$1$ ()), Clazz.innerTypeInstance(java.util.IdentityHashMap$1, this, null)); +}return this.$keySet; +}); +Clazz.overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = ((Clazz.isClassDefined("java.util.IdentityHashMap$2") ? 0 : java.util.IdentityHashMap.$IdentityHashMap$2$ ()), Clazz.innerTypeInstance(java.util.IdentityHashMap$2, this, null)); +}return this.$values; +}); +Clazz.overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz.instanceOf(object,"java.util.Map")) { +var map = object; +if (this.size() != map.size()) { +return false; +}var set = this.entrySet(); +return set.equals(map.entrySet()); +}return false; +}, "~O"); +Clazz.defineMethod(c$, "clone", +function(){ +try { +return Clazz.superCall(this, java.util.IdentityHashMap, "clone", []); +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.$size == 0; +}); +Clazz.overrideMethod(c$, "size", +function(){ +return this.$size; +}); +Clazz.defineMethod(c$, "putAllImpl", +function(map){ +if (map.entrySet() != null) { +Clazz.superCall(this, java.util.IdentityHashMap, "putAll", [map]); +}}, "java.util.Map"); +c$.$IdentityHashMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "IdentityHashMap$1", java.util.AbstractSet); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.IdentityHashMap"].containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.IdentityHashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.IdentityHashMap"].clear(); +}); +Clazz.overrideMethod(c$, "remove", +function(key){ +if (this.b$["java.util.IdentityHashMap"].containsKey(key)) { +this.b$["java.util.IdentityHashMap"].remove(key); +return true; +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$1$1") ? 0 : java.util.IdentityHashMap.$IdentityHashMap$1$1$ ()), Clazz.innerTypeInstance(java.util.IdentityHashMap$1$1, this, null)), this.b$["java.util.IdentityHashMap"]); +}); +/*eoif5*/})(); +}; +c$.$IdentityHashMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "IdentityHashMap$1$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry.key; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +c$.$IdentityHashMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "IdentityHashMap$2", java.util.AbstractCollection); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.IdentityHashMap"].containsValue(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.IdentityHashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.IdentityHashMap"].clear(); +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$2$1") ? 0 : java.util.IdentityHashMap.$IdentityHashMap$2$1$ ()), Clazz.innerTypeInstance(java.util.IdentityHashMap$2$1, this, null)), this.b$["java.util.IdentityHashMap"]); +}); +Clazz.overrideMethod(c$, "remove", +function(object){ +var it = this.iterator(); +while (it.hasNext()) { +if (object === it.next()) { +it.remove(); +return true; +}} +return false; +}, "~O"); +/*eoif5*/})(); +}; +c$.$IdentityHashMap$2$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "IdentityHashMap$2$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry.value; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.IdentityHashMap, "IdentityHashMapEntry", java.util.MapEntry); +Clazz.overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz.instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return (this.key === entry.getKey()) && (this.value === entry.getValue()); +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return System.identityHashCode(this.key) ^ System.identityHashCode(this.value); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.key + "=" + this.value; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.position = 0; +this.lastPosition = 0; +this.associatedMap = null; +this.expectedModCount = 0; +this.type = null; +this.canRemove = false; +Clazz.instantialize(this, arguments);}, java.util.IdentityHashMap, "IdentityHashMapIterator", null, java.util.Iterator); +Clazz.makeConstructor(c$, +function(value, hm){ +this.associatedMap = hm; +this.type = value; +this.expectedModCount = hm.modCount; +}, "java.util.MapEntry.Type,java.util.IdentityHashMap"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +while (this.position < this.associatedMap.elementData.length) { +if (this.associatedMap.elementData[this.position] == null) { +this.position += 2; +} else { +return true; +}} +return false; +}); +Clazz.defineMethod(c$, "checkConcurrentMod", +function(){ +if (this.expectedModCount != this.associatedMap.modCount) { +throw new java.util.ConcurrentModificationException(); +}}); +Clazz.overrideMethod(c$, "next", +function(){ +this.checkConcurrentMod(); +if (!this.hasNext()) { +throw new java.util.NoSuchElementException(); +}var result = this.associatedMap.getEntry(this.position); +this.lastPosition = this.position; +this.position += 2; +this.canRemove = true; +return this.type.get(result); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +this.checkConcurrentMod(); +if (!this.canRemove) { +throw new IllegalStateException(); +}this.canRemove = false; +this.associatedMap.remove(this.associatedMap.elementData[this.lastPosition]); +this.position = this.lastPosition; +this.expectedModCount++; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.associatedMap = null; +Clazz.instantialize(this, arguments);}, java.util.IdentityHashMap, "IdentityHashMapEntrySet", java.util.AbstractSet); +Clazz.makeConstructor(c$, +function(hm){ +Clazz.superConstructor (this, java.util.IdentityHashMap.IdentityHashMapEntrySet, []); +this.associatedMap = hm; +}, "java.util.IdentityHashMap"); +Clazz.defineMethod(c$, "hashMap", +function(){ +return this.associatedMap; +}); +Clazz.overrideMethod(c$, "size", +function(){ +return this.associatedMap.$size; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.associatedMap.clear(); +}); +Clazz.overrideMethod(c$, "remove", +function(object){ +if (this.contains(object)) { +this.associatedMap.remove((object).getKey()); +return true; +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "contains", +function(object){ +if (Clazz.instanceOf(object,"java.util.Map.Entry")) { +var entry = this.associatedMap.getEntry((object).getKey()); +return entry != null && entry.equals(object); +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$IdentityHashMapEntrySet$1") ? 0 : java.util.IdentityHashMap.IdentityHashMapEntrySet.$IdentityHashMap$IdentityHashMapEntrySet$1$ ()), Clazz.innerTypeInstance(java.util.IdentityHashMap$IdentityHashMapEntrySet$1, this, null)), this.associatedMap); +}); +c$.$IdentityHashMap$IdentityHashMapEntrySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "IdentityHashMap$IdentityHashMapEntrySet$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +c$.NULL_OBJECT = new Clazz._O(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Iterator.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Iterator.js new file mode 100755 index 000000000000..7a87b34338b1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Iterator.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "Iterator"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedHashMap.js b/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedHashMap.js new file mode 100755 index 000000000000..8b77d7816f88 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedHashMap.js @@ -0,0 +1,338 @@ +Clazz.load(["java.util.HashMap"], "java.util.LinkedHashMap", ["java.util.AbstractCollection", "$.AbstractSet", "java.util.MapEntry.Type"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.accessOrder = false; +this.head = null; +this.tail = null; +Clazz.instantialize(this, arguments);}, java.util, "LinkedHashMap", java.util.HashMap); +Clazz.makeConstructor(c$, +function(){ +this.construct (16, 0.75, false); +}); +Clazz.makeConstructor(c$, +function(s){ +this.construct (s, 0.75, false); +}, "~N"); +Clazz.makeConstructor(c$, +function(s, lf){ +this.construct (s, lf, false); +}, "~N,~N"); +Clazz.makeConstructor(c$, +function(s, lf, order){ +Clazz.superConstructor(this, java.util.LinkedHashMap, [s, lf]); +this.accessOrder = order; +this.head = null; +this.tail = null; +}, "~N,~N,~B"); +Clazz.makeConstructor(c$, +function(m){ +Clazz.superConstructor (this, java.util.LinkedHashMap, []); +this.accessOrder = false; +this.head = null; +this.tail = null; +this.putAll(m); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "newElementArray", +function(s){ +return new Array(s); +}, "~N"); +Clazz.overrideMethod(c$, "get", +function(key){ +var m = this.getJavaEntry(key); +if (m == null) { +return null; +}if (this.accessOrder && this.tail !== m) { +var p = m.chainBackward; +var n = m.chainForward; +n.chainBackward = p; +if (p != null) { +p.chainForward = n; +} else { +this.head = n; +}m.chainForward = null; +m.chainBackward = this.tail; +this.tail.chainForward = m; +this.tail = m; +}return m.value; +}, "~O"); +Clazz.overrideMethod(c$, "createEntry", +function(key, index, value){ +var m = new java.util.LinkedHashMap.LinkedHashMapEntry(key, value); +m.next = this.elementData[index]; +this.elementData[index] = m; +this.linkEntry(m); +return m; +}, "~O,~N,~O"); +Clazz.overrideMethod(c$, "put", +function(key, value){ +var index = this.getModuloHash(key); +var m = this.findJavaEntry(key, index); +if (m == null) { +this.modCount++; +if (++this.elementCount > this.threshold) { +this.rehash(); +index = key == null ? 0 : (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +}m = this.createEntry(key, index, null); +} else { +this.linkEntry(m); +}var result = m.value; +m.value = value; +if (this.removeEldestEntry(this.head)) { +this.remove(this.head.key); +}return result; +}, "~O,~O"); +Clazz.defineMethod(c$, "linkEntry", +function(m){ +if (this.tail === m) { +return; +}if (this.head == null) { +this.head = this.tail = m; +return; +}var p = m.chainBackward; +var n = m.chainForward; +if (p == null) { +if (n != null) { +if (this.accessOrder) { +this.head = n; +n.chainBackward = null; +m.chainBackward = this.tail; +m.chainForward = null; +this.tail.chainForward = m; +this.tail = m; +}} else { +m.chainBackward = this.tail; +m.chainForward = null; +this.tail.chainForward = m; +this.tail = m; +}return; +}if (n == null) { +return; +}if (this.accessOrder) { +p.chainForward = n; +n.chainBackward = p; +m.chainForward = null; +m.chainBackward = this.tail; +this.tail.chainForward = m; +this.tail = m; +}}, "java.util.LinkedHashMap.LinkedHashMapEntry"); +Clazz.overrideMethod(c$, "entrySet", +function(){ +return new java.util.LinkedHashMap.LinkedHashMapEntrySet(this); +}); +Clazz.overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = ((Clazz.isClassDefined("java.util.LinkedHashMap$1") ? 0 : java.util.LinkedHashMap.$LinkedHashMap$1$ ()), Clazz.innerTypeInstance(java.util.LinkedHashMap$1, this, null)); +}return this.$keySet; +}); +Clazz.overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = ((Clazz.isClassDefined("java.util.LinkedHashMap$2") ? 0 : java.util.LinkedHashMap.$LinkedHashMap$2$ ()), Clazz.innerTypeInstance(java.util.LinkedHashMap$2, this, null)); +}return this.$values; +}); +Clazz.overrideMethod(c$, "remove", +function(key){ +var m = this.removeJavaEntry(key); +if (m == null) { +return null; +}var p = m.chainBackward; +var n = m.chainForward; +if (p != null) { +p.chainForward = n; +} else { +this.head = n; +}if (n != null) { +n.chainBackward = p; +} else { +this.tail = p; +}return m.value; +}, "~O"); +Clazz.defineMethod(c$, "removeEldestEntry", +function(eldest){ +return false; +}, "java.util.Map.Entry"); +Clazz.defineMethod(c$, "clear", +function(){ +Clazz.superCall(this, java.util.LinkedHashMap, "clear", []); +this.head = this.tail = null; +}); +Clazz.defineMethod(c$, "clone", +function(){ +var map = Clazz.superCall(this, java.util.LinkedHashMap, "clone", []); +map.clear(); +for (var entry, $entry = this.entrySet().iterator (); $entry.hasNext()&& ((entry = $entry.next ()) || true);) { +map.put(entry.getKey(), entry.getValue()); +} +return map; +}); +Clazz.overrideMethod(c$, "__setJS", +function(){ +this.__m = null; +}); +c$.$LinkedHashMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "LinkedHashMap$1", java.util.AbstractSet); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.LinkedHashMap"].containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.LinkedHashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.LinkedHashMap"].clear(); +}); +Clazz.overrideMethod(c$, "remove", +function(key){ +if (this.b$["java.util.LinkedHashMap"].containsKey(key)) { +this.b$["java.util.LinkedHashMap"].remove(key); +return true; +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.LinkedHashMap.LinkedHashIterator(((Clazz.isClassDefined("java.util.LinkedHashMap$1$1") ? 0 : java.util.LinkedHashMap.$LinkedHashMap$1$1$ ()), Clazz.innerTypeInstance(java.util.LinkedHashMap$1$1, this, null)), this.b$["java.util.LinkedHashMap"]); +}); +/*eoif5*/})(); +}; +c$.$LinkedHashMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "LinkedHashMap$1$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry.key; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +c$.$LinkedHashMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "LinkedHashMap$2", java.util.AbstractCollection); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.LinkedHashMap"].containsValue(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.LinkedHashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.LinkedHashMap"].clear(); +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.LinkedHashMap.LinkedHashIterator(((Clazz.isClassDefined("java.util.LinkedHashMap$2$1") ? 0 : java.util.LinkedHashMap.$LinkedHashMap$2$1$ ()), Clazz.innerTypeInstance(java.util.LinkedHashMap$2$1, this, null)), this.b$["java.util.LinkedHashMap"]); +}); +/*eoif5*/})(); +}; +c$.$LinkedHashMap$2$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "LinkedHashMap$2$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry.value; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.LinkedHashMap, "LinkedHashIterator", java.util.HashMap.HashMapIterator); +Clazz.makeConstructor(c$, +function(value, hm){ +Clazz.superConstructor(this, java.util.LinkedHashMap.LinkedHashIterator, [value, hm]); +this.entry = hm.head; +}, "java.util.MapEntry.Type,java.util.LinkedHashMap"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return (this.entry != null); +}); +Clazz.overrideMethod(c$, "next", +function(){ +this.checkConcurrentMod(); +if (!this.hasNext()) { +throw new java.util.NoSuchElementException(); +}var result = this.type.get(this.entry); +this.lastEntry = this.entry; +this.entry = (this.entry).chainForward; +this.canRemove = true; +return result; +}); +Clazz.overrideMethod(c$, "remove", +function(){ +this.checkConcurrentMod(); +if (!this.canRemove) { +throw new IllegalStateException(); +}this.canRemove = false; +this.associatedMap.modCount++; +var index = this.associatedMap.getModuloHash(this.lastEntry.key); +var m = this.associatedMap.elementData[index]; +if (m === this.lastEntry) { +this.associatedMap.elementData[index] = this.lastEntry.next; +} else { +while (m.next != null) { +if (m.next === this.lastEntry) { +break; +}m = m.next; +} +m.next = this.lastEntry.next; +}var lhme = this.lastEntry; +var p = lhme.chainBackward; +var n = lhme.chainForward; +var lhm = this.associatedMap; +if (p != null) { +p.chainForward = n; +if (n != null) { +n.chainBackward = p; +} else { +lhm.tail = p; +}} else { +lhm.head = n; +if (n != null) { +n.chainBackward = null; +} else { +lhm.tail = null; +}}this.associatedMap.elementCount--; +this.expectedModCount++; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.LinkedHashMap, "LinkedHashMapEntrySet", java.util.HashMap.HashMapEntrySet); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.LinkedHashMap.LinkedHashIterator(((Clazz.isClassDefined("java.util.LinkedHashMap$LinkedHashMapEntrySet$1") ? 0 : java.util.LinkedHashMap.LinkedHashMapEntrySet.$LinkedHashMap$LinkedHashMapEntrySet$1$ ()), Clazz.innerTypeInstance(java.util.LinkedHashMap$LinkedHashMapEntrySet$1, this, null)), this.hashMap()); +}); +c$.$LinkedHashMap$LinkedHashMapEntrySet$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "LinkedHashMap$LinkedHashMapEntrySet$1", null, java.util.MapEntry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry; +}, "java.util.MapEntry"); +/*eoif5*/})(); +}; +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.chainForward = null; +this.chainBackward = null; +Clazz.instantialize(this, arguments);}, java.util.LinkedHashMap, "LinkedHashMapEntry", java.util.HashMap.Entry); +Clazz.makeConstructor(c$, +function(theKey, theValue){ +Clazz.superConstructor(this, java.util.LinkedHashMap.LinkedHashMapEntry, [theKey, theValue]); +this.chainForward = null; +this.chainBackward = null; +}, "~O,~O"); +Clazz.defineMethod(c$, "clone", +function(){ +var entry = Clazz.superCall(this, java.util.LinkedHashMap.LinkedHashMapEntry, "clone", []); +entry.chainBackward = this.chainBackward; +entry.chainForward = this.chainForward; +var lnext = entry.next; +if (lnext != null) { +entry.next = lnext.clone(); +}return entry; +}); +/*eoif3*/})(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedHashSet.js b/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedHashSet.js new file mode 100755 index 000000000000..ca0fb4a5a4a6 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedHashSet.js @@ -0,0 +1,27 @@ +Clazz.load(["java.util.HashSet", "$.Set"], "java.util.LinkedHashSet", ["java.util.LinkedHashMap"], function(){ +var c$ = Clazz.declareType(java.util, "LinkedHashSet", java.util.HashSet, [java.util.Set, Cloneable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor(this, java.util.LinkedHashSet, [ new java.util.LinkedHashMap()]); +}); +Clazz.makeConstructor(c$, +function(capacity){ +Clazz.superConstructor(this, java.util.LinkedHashSet, [ new java.util.LinkedHashMap(capacity)]); +}, "~N"); +Clazz.makeConstructor(c$, +function(capacity, loadFactor){ +Clazz.superConstructor(this, java.util.LinkedHashSet, [ new java.util.LinkedHashMap(capacity, loadFactor)]); +}, "~N,~N"); +Clazz.makeConstructor(c$, +function(collection){ +Clazz.superConstructor(this, java.util.LinkedHashSet, [ new java.util.LinkedHashMap(collection.size() < 6 ? 11 : collection.size() * 2)]); +for (var e, $e = collection.iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +this.add(e); +} +}, "java.util.Collection"); +Clazz.overrideMethod(c$, "createBackingMap", +function(capacity, loadFactor){ +return new java.util.LinkedHashMap(capacity, loadFactor); +}, "~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedList.js b/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedList.js new file mode 100755 index 000000000000..009e350e9478 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/LinkedList.js @@ -0,0 +1,473 @@ +Clazz.load(["java.util.AbstractSequentialList", "$.List", "$.ListIterator", "$.Queue"], "java.util.LinkedList", ["java.lang.reflect.Array"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$size = 0; +this.voidLink = null; +Clazz.instantialize(this, arguments);}, java.util, "LinkedList", java.util.AbstractSequentialList, [java.util.List, java.util.Queue, Cloneable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, java.util.LinkedList, []); +this.voidLink = new java.util.LinkedList.Link(null, null, null); +this.voidLink.previous = this.voidLink; +this.voidLink.next = this.voidLink; +}); +Clazz.makeConstructor(c$, +function(collection){ +this.construct (); +this.addAll(collection); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "add", +function(location, object){ +if (0 <= location && location <= this.$size) { +var link = this.voidLink; +if (location < (Clazz.doubleToInt(this.$size / 2))) { +for (var i = 0; i <= location; i++) { +link = link.next; +} +} else { +for (var i = this.$size; i > location; i--) { +link = link.previous; +} +}var previous = link.previous; +var newLink = new java.util.LinkedList.Link(object, previous, link); +previous.next = newLink; +link.previous = newLink; +this.$size++; +this.modCount++; +} else { +throw new IndexOutOfBoundsException(); +}}, "~N,~O"); +Clazz.defineMethod(c$, "add", +function(object){ +var oldLast = this.voidLink.previous; +var newLink = new java.util.LinkedList.Link(object, oldLast, this.voidLink); +this.voidLink.previous = newLink; +oldLast.next = newLink; +this.$size++; +this.modCount++; +return true; +}, "~O"); +Clazz.defineMethod(c$, "addAll", +function(location, collection){ +if (location < 0 || location > this.$size) { +throw new IndexOutOfBoundsException(); +}var adding = collection.size(); +if (adding == 0) { +return false; +}var previous = this.voidLink; +if (location < (Clazz.doubleToInt(this.$size / 2))) { +for (var i = 0; i < location; i++) { +previous = previous.next; +} +} else { +for (var i = this.$size; i >= location; i--) { +previous = previous.previous; +} +}var next = previous.next; +for (var e, $e = collection.iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var newLink = new java.util.LinkedList.Link(e, previous, null); +previous.next = newLink; +previous = newLink; +} +previous.next = next; +next.previous = previous; +this.$size += adding; +this.modCount++; +return true; +}, "~N,java.util.Collection"); +Clazz.defineMethod(c$, "addAll", +function(collection){ +var adding = collection.size(); +if (adding == 0) { +return false; +}var previous = this.voidLink.previous; +for (var e, $e = collection.iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var newLink = new java.util.LinkedList.Link(e, previous, null); +previous.next = newLink; +previous = newLink; +} +previous.next = this.voidLink; +this.voidLink.previous = previous; +this.$size += adding; +this.modCount++; +return true; +}, "java.util.Collection"); +Clazz.defineMethod(c$, "addFirst", +function(object){ +var oldFirst = this.voidLink.next; +var newLink = new java.util.LinkedList.Link(object, this.voidLink, oldFirst); +this.voidLink.next = newLink; +oldFirst.previous = newLink; +this.$size++; +this.modCount++; +}, "~O"); +Clazz.defineMethod(c$, "addLast", +function(object){ +var oldLast = this.voidLink.previous; +var newLink = new java.util.LinkedList.Link(object, oldLast, this.voidLink); +this.voidLink.previous = newLink; +oldLast.next = newLink; +this.$size++; +this.modCount++; +}, "~O"); +Clazz.overrideMethod(c$, "clear", +function(){ +if (this.$size > 0) { +this.$size = 0; +this.voidLink.next = this.voidLink; +this.voidLink.previous = this.voidLink; +this.modCount++; +}}); +Clazz.overrideMethod(c$, "clone", +function(){ +return new java.util.LinkedList(this); +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +var link = this.voidLink.next; +if (object != null) { +while (link !== this.voidLink) { +if (object.equals(link.data)) { +return true; +}link = link.next; +} +} else { +while (link !== this.voidLink) { +if (link.data == null) { +return true; +}link = link.next; +} +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "get", +function(location){ +if (0 <= location && location < this.$size) { +var link = this.voidLink; +if (location < (Clazz.doubleToInt(this.$size / 2))) { +for (var i = 0; i <= location; i++) { +link = link.next; +} +} else { +for (var i = this.$size; i > location; i--) { +link = link.previous; +} +}return link.data; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz.defineMethod(c$, "getFirst", +function(){ +var first = this.voidLink.next; +if (first !== this.voidLink) { +return first.data; +}throw new java.util.NoSuchElementException(); +}); +Clazz.defineMethod(c$, "getLast", +function(){ +var last = this.voidLink.previous; +if (last !== this.voidLink) { +return last.data; +}throw new java.util.NoSuchElementException(); +}); +Clazz.overrideMethod(c$, "indexOf", +function(object){ +var pos = 0; +var link = this.voidLink.next; +if (object != null) { +while (link !== this.voidLink) { +if (object.equals(link.data)) { +return pos; +}link = link.next; +pos++; +} +} else { +while (link !== this.voidLink) { +if (link.data == null) { +return pos; +}link = link.next; +pos++; +} +}return -1; +}, "~O"); +Clazz.overrideMethod(c$, "lastIndexOf", +function(object){ +var pos = this.$size; +var link = this.voidLink.previous; +if (object != null) { +while (link !== this.voidLink) { +pos--; +if (object.equals(link.data)) { +return pos; +}link = link.previous; +} +} else { +while (link !== this.voidLink) { +pos--; +if (link.data == null) { +return pos; +}link = link.previous; +} +}return -1; +}, "~O"); +Clazz.defineMethod(c$, "listIterator", +function(location){ +return new java.util.LinkedList.LinkIterator(this, location); +}, "~N"); +Clazz.defineMethod(c$, "remove", +function(location){ +if (0 <= location && location < this.$size) { +var link = this.voidLink; +if (location < (Clazz.doubleToInt(this.$size / 2))) { +for (var i = 0; i <= location; i++) { +link = link.next; +} +} else { +for (var i = this.$size; i > location; i--) { +link = link.previous; +} +}var previous = link.previous; +var next = link.next; +previous.next = next; +next.previous = previous; +this.$size--; +this.modCount++; +return link.data; +}throw new IndexOutOfBoundsException(); +}, "~N"); +Clazz.defineMethod(c$, "remove", +function(object){ +var link = this.voidLink.next; +if (object != null) { +while (link !== this.voidLink && !object.equals(link.data)) { +link = link.next; +} +} else { +while (link !== this.voidLink && link.data != null) { +link = link.next; +} +}if (link === this.voidLink) { +return false; +}var next = link.next; +var previous = link.previous; +previous.next = next; +next.previous = previous; +this.$size--; +this.modCount++; +return true; +}, "~O"); +Clazz.defineMethod(c$, "removeFirst", +function(){ +var first = this.voidLink.next; +if (first !== this.voidLink) { +var next = first.next; +this.voidLink.next = next; +next.previous = this.voidLink; +this.$size--; +this.modCount++; +return first.data; +}throw new java.util.NoSuchElementException(); +}); +Clazz.defineMethod(c$, "removeLast", +function(){ +var last = this.voidLink.previous; +if (last !== this.voidLink) { +var previous = last.previous; +this.voidLink.previous = previous; +previous.next = this.voidLink; +this.$size--; +this.modCount++; +return last.data; +}throw new java.util.NoSuchElementException(); +}); +Clazz.overrideMethod(c$, "set", +function(location, object){ +if (0 <= location && location < this.$size) { +var link = this.voidLink; +if (location < (Clazz.doubleToInt(this.$size / 2))) { +for (var i = 0; i <= location; i++) { +link = link.next; +} +} else { +for (var i = this.$size; i > location; i--) { +link = link.previous; +} +}var result = link.data; +link.data = object; +return result; +}throw new IndexOutOfBoundsException(); +}, "~N,~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.$size; +}); +Clazz.overrideMethod(c$, "offer", +function(o){ +this.add(o); +return true; +}, "~O"); +Clazz.overrideMethod(c$, "poll", +function(){ +return this.$size == 0 ? null : this.removeFirst(); +}); +Clazz.defineMethod(c$, "remove", +function(){ +return this.removeFirst(); +}); +Clazz.overrideMethod(c$, "peek", +function(){ +var first = this.voidLink.next; +return first === this.voidLink ? null : first.data; +}); +Clazz.overrideMethod(c$, "element", +function(){ +return this.getFirst(); +}); +Clazz.defineMethod(c$, "toArray", +function(){ +var index = 0; +var contents = new Array(this.$size); +var link = this.voidLink.next; +while (link !== this.voidLink) { +contents[index++] = link.data; +link = link.next; +} +return contents; +}); +Clazz.defineMethod(c$, "toArray", +function(contents){ +var index = 0; +if (this.$size > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, this.$size); +}var link = this.voidLink.next; +while (link !== this.voidLink) { +contents[index++] = link.data; +link = link.next; +} +if (index < contents.length) { +contents[index] = null; +}return contents; +}, "~A"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.data = null; +this.previous = null; +this.next = null; +Clazz.instantialize(this, arguments);}, java.util.LinkedList, "Link", null); +Clazz.makeConstructor(c$, +function(o, p, n){ +this.data = o; +this.previous = p; +this.next = n; +}, "~O,java.util.LinkedList.Link,java.util.LinkedList.Link"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.pos = 0; +this.expectedModCount = 0; +this.list = null; +this.link = null; +this.lastLink = null; +Clazz.instantialize(this, arguments);}, java.util.LinkedList, "LinkIterator", null, java.util.ListIterator); +Clazz.makeConstructor(c$, +function(object, location){ +this.list = object; +this.expectedModCount = this.list.modCount; +if (0 <= location && location <= this.list.$size) { +this.link = this.list.voidLink; +if (location < Clazz.doubleToInt(this.list.$size / 2)) { +for (this.pos = -1; this.pos + 1 < location; this.pos++) { +this.link = this.link.next; +} +} else { +for (this.pos = this.list.$size; this.pos >= location; this.pos--) { +this.link = this.link.previous; +} +}} else { +throw new IndexOutOfBoundsException(); +}}, "java.util.LinkedList,~N"); +Clazz.overrideMethod(c$, "add", +function(object){ +if (this.expectedModCount == this.list.modCount) { +var next = this.link.next; +var newLink = new java.util.LinkedList.Link(object, this.link, next); +this.link.next = newLink; +next.previous = newLink; +this.link = newLink; +this.lastLink = null; +this.pos++; +this.expectedModCount++; +this.list.$size++; +this.list.modCount++; +} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return this.link.next !== this.list.voidLink; +}); +Clazz.overrideMethod(c$, "hasPrevious", +function(){ +return this.link !== this.list.voidLink; +}); +Clazz.overrideMethod(c$, "next", +function(){ +if (this.expectedModCount == this.list.modCount) { +var next = this.link.next; +if (next !== this.list.voidLink) { +this.lastLink = this.link = next; +this.pos++; +return this.link.data; +}throw new java.util.NoSuchElementException(); +}throw new java.util.ConcurrentModificationException(); +}); +Clazz.overrideMethod(c$, "nextIndex", +function(){ +return this.pos + 1; +}); +Clazz.overrideMethod(c$, "previous", +function(){ +if (this.expectedModCount == this.list.modCount) { +if (this.link !== this.list.voidLink) { +this.lastLink = this.link; +this.link = this.link.previous; +this.pos--; +return this.lastLink.data; +}throw new java.util.NoSuchElementException(); +}throw new java.util.ConcurrentModificationException(); +}); +Clazz.overrideMethod(c$, "previousIndex", +function(){ +return this.pos; +}); +Clazz.overrideMethod(c$, "remove", +function(){ +if (this.expectedModCount == this.list.modCount) { +if (this.lastLink != null) { +var next = this.lastLink.next; +var previous = this.lastLink.previous; +next.previous = previous; +previous.next = next; +if (this.lastLink === this.link) { +this.pos--; +}this.link = previous; +this.lastLink = null; +this.expectedModCount++; +this.list.$size--; +this.list.modCount++; +} else { +throw new IllegalStateException(); +}} else { +throw new java.util.ConcurrentModificationException(); +}}); +Clazz.overrideMethod(c$, "set", +function(object){ +if (this.expectedModCount == this.list.modCount) { +if (this.lastLink != null) { +this.lastLink.data = object; +} else { +throw new IllegalStateException(); +}} else { +throw new java.util.ConcurrentModificationException(); +}}, "~O"); +/*eoif3*/})(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/List.js b/config/plugins/visualizations/jmol/static/j2s/java/util/List.js new file mode 100755 index 000000000000..76d4504b486b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/List.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "List", java.util.Collection); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/ListIterator.js b/config/plugins/visualizations/jmol/static/j2s/java/util/ListIterator.js new file mode 100755 index 000000000000..b5260678f7d1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/ListIterator.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "ListIterator", java.util.Iterator); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/ListResourceBundle.js b/config/plugins/visualizations/jmol/static/j2s/java/util/ListResourceBundle.js new file mode 100755 index 000000000000..955ff2a49558 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/ListResourceBundle.js @@ -0,0 +1,71 @@ +Clazz.load(["java.util.ResourceBundle"], "java.util.ListResourceBundle", ["java.util.Enumeration", "$.Hashtable"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.table = null; +Clazz.instantialize(this, arguments);}, java.util, "ListResourceBundle", java.util.ResourceBundle); +Clazz.defineMethod(c$, "getKeys", +function(){ +if (this.table == null) { +this.initializeTable(); +}if (this.parent == null) { +return this.table.keys(); +}return ((Clazz.isClassDefined("java.util.ListResourceBundle$1") ? 0 : java.util.ListResourceBundle.$ListResourceBundle$1$ ()), Clazz.innerTypeInstance(java.util.ListResourceBundle$1, this, null)); +}); +Clazz.overrideMethod(c$, "handleGetObject", +function(key){ +if (this.table == null) { +this.initializeTable(); +}return this.table.get(key); +}, "~S"); +Clazz.defineMethod(c$, "initializeTable", +function(){ +if (this.table == null) { +var contents = this.getContents(); +this.table = new java.util.Hashtable(Clazz.doubleToInt(contents.length / 3) * 4 + 3); +for (var i = 0; i < contents.length; i++) { +this.table.put(contents[i][0], contents[i][1]); +} +}}); +c$.$ListResourceBundle$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.local = null; +this.pEnum = null; +this.$nextElement = null; +Clazz.instantialize(this, arguments);}, java.util, "ListResourceBundle$1", null, java.util.Enumeration); +Clazz.prepareFields (c$, function(){ +this.local = this.b$["java.util.ListResourceBundle"].table.keys(); +this.pEnum = this.b$["java.util.ListResourceBundle"].parent.getKeys(); +}); +Clazz.defineMethod(c$, "findNext", +function(){ +if (this.$nextElement != null) { +return true; +}while (this.pEnum.hasMoreElements()) { +var next = this.pEnum.nextElement(); +if (!this.b$["java.util.ListResourceBundle"].table.containsKey(next)) { +this.$nextElement = next; +return true; +}} +return false; +}); +Clazz.defineMethod(c$, "hasMoreElements", +function(){ +if (this.local.hasMoreElements()) { +return true; +}return this.findNext(); +}); +Clazz.defineMethod(c$, "nextElement", +function(){ +if (this.local.hasMoreElements()) { +return this.local.nextElement(); +}if (this.findNext()) { +var result = this.$nextElement; +this.$nextElement = null; +return result; +}return this.pEnum.nextElement(); +}); +/*eoif5*/})(); +}; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Locale.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Locale.js new file mode 100755 index 000000000000..eb16bf7222c9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Locale.js @@ -0,0 +1,241 @@ +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.language = ""; +this.country = ""; +this.variant = ""; +this.hashcode = -1; +Clazz.instantialize(this, arguments);}, java.util, "Locale", null, [Cloneable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(language, country, variant){ +this.language = this.convertOldISOCodes(language); +this.country = country.toUpperCase(); +this.variant = variant.intern(); +}, "~S,~S,~S"); +Clazz.makeConstructor(c$, +function(language, country){ +this.construct (language, country, ""); +}, "~S,~S"); +Clazz.makeConstructor(c$, +function(language){ +this.construct (language, "", ""); +}, "~S"); +c$.getDefault = Clazz.defineMethod(c$, "getDefault", +function(){ +if (java.util.Locale.defaultLocale == null) { +var language = "en"; +var country = "US"; +var variant = ""; +{ +navigator.userAgent.replace (/;\s*([a-zA-Z]{2,})[-_]([a-zA-Z]{2,});/, function ($0, $1, $2) { +language = $1; +country = $2; +}); +}java.util.Locale.defaultLocale = new java.util.Locale(language, country, variant); +}return java.util.Locale.defaultLocale; +}); +c$.setDefault = Clazz.defineMethod(c$, "setDefault", +function(newLocale){ +if (newLocale == null) throw new NullPointerException("Can't set default locale to NULL"); +{ +java.util.Locale.defaultLocale = newLocale; +}}, "java.util.Locale"); +c$.getAvailableLocales = Clazz.defineMethod(c$, "getAvailableLocales", +function(){ +var lcl = java.util.Locale; +return [ +lcl.ENGLISH, +lcl.ENGLISH, +lcl.FRENCH, +lcl.GERMAN, +lcl.ITALIAN, +lcl.JAPANESE, +lcl.KOREAN, +lcl.CHINESE, +lcl.SIMPLIFIED_CHINESE, +lcl.TRADITIONAL_CHINESE, +lcl.FRANCE, +lcl.GERMANY, +lcl.ITALY, +lcl.JAPAN, +lcl.KOREA, +lcl.CHINA, +lcl.PRC, +lcl.TAIWAN, +lcl.UK, +lcl.US, +lcl.CANADA, +lcl.CANADA_FRENCH +]; +}); +c$.getISOCountries = Clazz.defineMethod(c$, "getISOCountries", +function(){ +if (java.util.Locale.isoCountries == null) { +java.util.Locale.isoCountries = new Array(Clazz.doubleToInt(java.util.Locale.compressedIsoCountries.length / 6)); +for (var i = 0; i < java.util.Locale.isoCountries.length; i++) java.util.Locale.isoCountries[i] = java.util.Locale.compressedIsoCountries.substring((i * 6) + 1, (i * 6) + 3); + +}var result = new Array(java.util.Locale.isoCountries.length); +System.arraycopy(java.util.Locale.isoCountries, 0, result, 0, java.util.Locale.isoCountries.length); +return result; +}); +c$.getISOLanguages = Clazz.defineMethod(c$, "getISOLanguages", +function(){ +if (java.util.Locale.isoLanguages == null) { +java.util.Locale.isoLanguages = new Array(Clazz.doubleToInt(java.util.Locale.compressedIsoLanguages.length / 6)); +for (var i = 0; i < java.util.Locale.isoLanguages.length; i++) java.util.Locale.isoLanguages[i] = java.util.Locale.compressedIsoLanguages.substring((i * 6) + 1, (i * 6) + 3); + +}var result = new Array(java.util.Locale.isoLanguages.length); +System.arraycopy(java.util.Locale.isoLanguages, 0, result, 0, java.util.Locale.isoLanguages.length); +return result; +}); +Clazz.defineMethod(c$, "getLanguage", +function(){ +return this.language; +}); +Clazz.defineMethod(c$, "getCountry", +function(){ +return this.country; +}); +Clazz.defineMethod(c$, "getVariant", +function(){ +return this.variant; +}); +Clazz.overrideMethod(c$, "toString", +function(){ +var l = this.language.length != 0; +var c = this.country.length != 0; +var v = this.variant.length != 0; +var result = this.language; +if (c || (l && v)) { +result += '_' + this.country; +}if (v && (l || c)) { +result += '_' + this.variant; +}return result; +}); +Clazz.defineMethod(c$, "getISO3Language", +function(){ +var length = this.language.length; +if (length == 0) { +return ""; +}var index = java.util.Locale.compressedIsoLanguages.indexOf("," + this.language); +if (index == -1 || length != 2) { +throw new java.util.MissingResourceException("Couldn't find 3-letter language code for " + this.language, "LocaleElements_" + this.toString(), "ShortLanguage"); +}return java.util.Locale.compressedIsoLanguages.substring(index + 3, index + 6); +}); +Clazz.defineMethod(c$, "getISO3Country", +function(){ +var length = this.country.length; +if (length == 0) { +return ""; +}var index = java.util.Locale.compressedIsoCountries.indexOf("," + this.country); +if (index == -1 || length != 2) { +throw new java.util.MissingResourceException("Couldn't find 3-letter country code for " + this.country, "LocaleElements_" + this.toString(), "ShortCountry"); +}return java.util.Locale.compressedIsoCountries.substring(index + 3, index + 6); +}); +Clazz.defineMethod(c$, "getDisplayLanguage", +function(){ +return this.getDisplayLanguage(java.util.Locale.getDefault()); +}); +Clazz.defineMethod(c$, "getDisplayLanguage", +function(inLocale){ +return inLocale.language; +}, "java.util.Locale"); +Clazz.defineMethod(c$, "getDisplayCountry", +function(){ +return this.getDisplayCountry(java.util.Locale.getDefault()); +}); +Clazz.defineMethod(c$, "getDisplayCountry", +function(inLocale){ +return inLocale.country; +}, "java.util.Locale"); +Clazz.defineMethod(c$, "getDisplayVariant", +function(){ +return this.getDisplayVariant(java.util.Locale.getDefault()); +}); +Clazz.defineMethod(c$, "getDisplayVariant", +function(inLocale){ +return inLocale.variant; +}, "java.util.Locale"); +Clazz.defineMethod(c$, "getDisplayName", +function(){ +return this.getDisplayName(java.util.Locale.getDefault()); +}); +Clazz.defineMethod(c$, "getDisplayName", +function(inLocale){ +var s = inLocale.language + "_" + inLocale.country; +var v = inLocale.variant; +if (v != null && v.length != 0) { +return s + "(" + v + ")"; +} else { +return s; +} +}, "java.util.Locale"); +Clazz.defineMethod(c$, "clone", +function(){ +try { +var that = Clazz.superCall(this, java.util.Locale, "clone", []); +return that; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +throw new InternalError(); +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "hashCode", +function(){ +if (this.hashcode == -1) { +this.hashcode = this.language.hashCode() ^ this.country.hashCode() ^ this.variant.hashCode(); +}return this.hashcode; +}); +Clazz.overrideMethod(c$, "equals", +function(obj){ +if (this === obj) return true; +if (!(Clazz.instanceOf(obj,"java.util.Locale"))) return false; +var other = obj; +if (this.hashCode() != other.hashCode()) return false; +if (this.language !== other.language) return false; +if (this.country !== other.country) return false; +if (this.variant !== other.variant) return false; +return true; +}, "~O"); +Clazz.defineMethod(c$, "convertOldISOCodes", +function(language){ +language = language.toLowerCase(); +if (language === "he") { +return "iw"; +} else if (language === "yi") { +return "ji"; +} else if (language === "id") { +return "in"; +} else { +return language; +}}, "~S"); +c$.ENGLISH = new java.util.Locale("en", "", ""); +c$.FRENCH = new java.util.Locale("fr", "", ""); +c$.GERMAN = new java.util.Locale("de", "", ""); +c$.ITALIAN = new java.util.Locale("it", "", ""); +c$.JAPANESE = new java.util.Locale("ja", "", ""); +c$.KOREAN = new java.util.Locale("ko", "", ""); +c$.CHINESE = new java.util.Locale("zh", "", ""); +c$.SIMPLIFIED_CHINESE = new java.util.Locale("zh", "CN", ""); +c$.TRADITIONAL_CHINESE = new java.util.Locale("zh", "TW", ""); +c$.FRANCE = new java.util.Locale("fr", "FR", ""); +c$.GERMANY = new java.util.Locale("de", "DE", ""); +c$.ITALY = new java.util.Locale("it", "IT", ""); +c$.JAPAN = new java.util.Locale("ja", "JP", ""); +c$.KOREA = new java.util.Locale("ko", "KR", ""); +c$.CHINA = new java.util.Locale("zh", "CN", ""); +c$.PRC = new java.util.Locale("zh", "CN", ""); +c$.TAIWAN = new java.util.Locale("zh", "TW", ""); +c$.UK = new java.util.Locale("en", "GB", ""); +c$.US = new java.util.Locale("en", "US", ""); +c$.CANADA = new java.util.Locale("en", "CA", ""); +c$.CANADA_FRENCH = new java.util.Locale("fr", "CA", ""); +c$.defaultLocale = null; +c$.isoLanguages = null; +c$.compressedIsoLanguages = ",aaaar,ababk,afafr,amamh,arara,asasm,ayaym,azaze,babak,bebel,bgbul,bhbih,bibis,bnben,bobod,brbre,cacat,cocos,csces,cycym,dadan,dedeu,dzdzo,elell,eneng,eoepo,esspa,etest,eueus,fafas,fifin,fjfij,fofao,frfra,fyfry,gagai,gdgdh,glglg,gngrn,guguj,hahau,heheb,hihin,hrhrv,huhun,hyhye,iaina,idind,ieile,ikipk,inind,isisl,itita,iuiku,iwheb,jajpn,jiyid,jwjaw,kakat,kkkaz,klkal,kmkhm,knkan,kokor,kskas,kukur,kykir,lalat,lnlin,lolao,ltlit,lvlav,mgmlg,mimri,mkmkd,mlmal,mnmon,momol,mrmar,msmsa,mtmlt,mymya,nanau,nenep,nlnld,nonor,ococi,omorm,orori,papan,plpol,pspus,ptpor,quque,rmroh,rnrun,roron,rurus,rwkin,sasan,sdsnd,sgsag,shsrp,sisin,skslk,slslv,smsmo,snsna,sosom,sqsqi,srsrp,ssssw,stsot,susun,svswe,swswa,tatam,tetel,tgtgk,ththa,titir,tktuk,tltgl,tntsn,toton,trtur,tstso,tttat,twtwi,uguig,ukukr,ururd,uzuzb,vivie,vovol,wowol,xhxho,yiyid,yoyor,zazha,zhzho,zuzul"; +c$.isoCountries = null; +c$.compressedIsoCountries = ",ADAND,AEARE,AFAFG,AGATG,AIAIA,ALALB,AMARM,ANANT,AOAGO,AQATA,ARARG,ASASM,ATAUT,AUAUS,AWABW,AZAZE,BABIH,BBBRB,BDBGD,BEBEL,BFBFA,BGBGR,BHBHR,BIBDI,BJBEN,BMBMU,BNBRN,BOBOL,BRBRA,BSBHS,BTBTN,BVBVT,BWBWA,BYBLR,BZBLZ,CACAN,CCCCK,CFCAF,CGCOG,CHCHE,CICIV,CKCOK,CLCHL,CMCMR,CNCHN,COCOL,CRCRI,CUCUB,CVCPV,CXCXR,CYCYP,CZCZE,DEDEU,DJDJI,DKDNK,DMDMA,DODOM,DZDZA,ECECU,EEEST,EGEGY,EHESH,ERERI,ESESP,ETETH,FIFIN,FJFJI,FKFLK,FMFSM,FOFRO,FRFRA,FXFXX,GAGAB,GBGBR,GDGRD,GEGEO,GFGUF,GHGHA,GIGIB,GLGRL,GMGMB,GNGIN,GPGLP,GQGNQ,GRGRC,GSSGS,GTGTM,GUGUM,GWGNB,GYGUY,HKHKG,HMHMD,HNHND,HRHRV,HTHTI,HUHUN,IDIDN,IEIRL,ILISR,ININD,IOIOT,IQIRQ,IRIRN,ISISL,ITITA,JMJAM,JOJOR,JPJPN,KEKEN,KGKGZ,KHKHM,KIKIR,KMCOM,KNKNA,KPPRK,KRKOR,KWKWT,KYCYM,KZKAZ,LALAO,LBLBN,LCLCA,LILIE,LKLKA,LRLBR,LSLSO,LTLTU,LULUX,LVLVA,LYLBY,MAMAR,MCMCO,MDMDA,MGMDG,MHMHL,MKMKD,MLMLI,MMMMR,MNMNG,MOMAC,MPMNP,MQMTQ,MRMRT,MSMSR,MTMLT,MUMUS,MVMDV,MWMWI,MXMEX,MYMYS,MZMOZ,NANAM,NCNCL,NENER,NFNFK,NGNGA,NINIC,NLNLD,NONOR,NPNPL,NRNRU,NUNIU,NZNZL,OMOMN,PAPAN,PEPER,PFPYF,PGPNG,PHPHL,PKPAK,PLPOL,PMSPM,PNPCN,PRPRI,PTPRT,PWPLW,PYPRY,QAQAT,REREU,ROROM,RURUS,RWRWA,SASAU,SBSLB,SCSYC,SDSDN,SESWE,SGSGP,SHSHN,SISVN,SJSJM,SKSVK,SLSLE,SMSMR,SNSEN,SOSOM,SRSUR,STSTP,SVSLV,SYSYR,SZSWZ,TCTCA,TDTCD,TFATF,TGTGO,THTHA,TJTJK,TKTKL,TMTKM,TNTUN,TOTON,TPTMP,TRTUR,TTTTO,TVTUV,TWTWN,TZTZA,UAUKR,UGUGA,UMUMI,USUSA,UYURY,UZUZB,VAVAT,VCVCT,VEVEN,VGVGB,VIVIR,VNVNM,VUVUT,WFWLF,WSWSM,YEYEM,YTMYT,YUYUG,ZAZAF,ZMZMB,ZRZAR,ZWZWE"; +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Map.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Map.js new file mode 100755 index 000000000000..437abefff70e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Map.js @@ -0,0 +1,9 @@ +(function(){ +var c$ = Clazz.declareInterface(java.util, "Map"); +Clazz.declareInterface(java.util.Map, "Entry"); +c$.NOT_SIMPLE = 0; +c$.INVALID_KEY = 1; +c$.NO_SUCH_KEY = 2; +c$.HAS_KEY = 3; +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/MapEntry.js b/config/plugins/visualizations/jmol/static/j2s/java/util/MapEntry.js new file mode 100755 index 000000000000..220eeb09110b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/MapEntry.js @@ -0,0 +1,60 @@ +Clazz.load(["java.util.Map"], "java.util.MapEntry", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.key = null; +this.value = null; +Clazz.instantialize(this, arguments);}, java.util, "MapEntry", null, [java.util.Map.Entry, Cloneable]); +Clazz.makeConstructor(c$, +function(theKey){ +this.key = theKey; +}, "~O"); +Clazz.makeConstructor(c$, +function(theKey, theValue){ +this.key = theKey; +this.value = theValue; +}, "~O,~O"); +Clazz.defineMethod(c$, "clone", +function(){ +try { +return Clazz.superCall(this, java.util.MapEntry, "clone", []); +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz.instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +return (this.key == null ? entry.getKey() == null : this.key.equals(entry.getKey())) && (this.value == null ? entry.getValue() == null : this.value.equals(entry.getValue())); +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "getKey", +function(){ +return this.key; +}); +Clazz.overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return (this.key == null ? 0 : this.key.hashCode()) ^ (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz.overrideMethod(c$, "setValue", +function(object){ +var result = this.value; +this.value = object; +return result; +}, "~O"); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.key + "=" + this.value; +}); +Clazz.declareInterface(java.util.MapEntry, "Type"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Observable.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Observable.js new file mode 100755 index 000000000000..c278aa76d950 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Observable.js @@ -0,0 +1,57 @@ +Clazz.load(["java.util.Vector"], "java.util.Observable", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.observers = null; +this.changed = false; +Clazz.instantialize(this, arguments);}, java.util, "Observable", null); +Clazz.prepareFields (c$, function(){ +this.observers = new java.util.Vector(); +}); +Clazz.makeConstructor(c$, +function(){ +}); +Clazz.defineMethod(c$, "addObserver", +function(observer){ +if (observer == null) { +throw new NullPointerException(); +}if (!this.observers.contains(observer)) this.observers.addElement(observer); +}, "java.util.Observer"); +Clazz.defineMethod(c$, "clearChanged", +function(){ +this.changed = false; +}); +Clazz.defineMethod(c$, "countObservers", +function(){ +return this.observers.size(); +}); +Clazz.defineMethod(c$, "deleteObserver", +function(observer){ +this.observers.removeElement(observer); +}, "java.util.Observer"); +Clazz.defineMethod(c$, "deleteObservers", +function(){ +this.observers.setSize(0); +}); +Clazz.defineMethod(c$, "hasChanged", +function(){ +return this.changed; +}); +Clazz.defineMethod(c$, "notifyObservers", +function(){ +this.notifyObservers(null); +}); +Clazz.defineMethod(c$, "notifyObservers", +function(data){ +if (this.changed) { +var clone = this.observers.clone(); +var size = clone.size(); +for (var i = 0; i < size; i++) { +clone.elementAt(i).update(this, data); +} +this.clearChanged(); +}}, "~O"); +Clazz.defineMethod(c$, "setChanged", +function(){ +this.changed = true; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Observer.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Observer.js new file mode 100755 index 000000000000..995f3d3e4653 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Observer.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "Observer"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Properties.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Properties.js new file mode 100755 index 000000000000..c0b293f810f9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Properties.js @@ -0,0 +1,176 @@ +Clazz.load(["java.util.Hashtable"], "java.util.Properties", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.builder = null; +this.defaults = null; +Clazz.instantialize(this, arguments);}, java.util, "Properties", java.util.Hashtable); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, java.util.Properties, []); +}); +Clazz.makeConstructor(c$, +function(properties){ +this.initHT(); +this.defaults = (properties == null ? null : properties); +}, "java.util.Properties"); +Clazz.defineMethod(c$, "dumpString", +function(buffer, string, key){ +var i = 0; +if (!key && i < string.length && string.charAt(i) == ' ') { +buffer += ("\\ "); +i++; +}for (; i < string.length; i++) { +var ch = string.charAt(i); +switch ((ch).charCodeAt(0)) { +case 9: +buffer += ("\\t"); +break; +case 10: +buffer += ("\\n"); +break; +case 12: +buffer += ("\\f"); +break; +case 13: +buffer += ("\\r"); +break; +default: +if ("\\#!=:".indexOf(ch) >= 0 || (key && ch == ' ')) { +buffer += ('\\'); +}if (ch >= ' ' && ch <= '~') { +buffer += (ch); +} else { +var hex = Integer.toHexString(ch.charCodeAt(0)); +buffer += ("\\u"); +for (var j = 0; j < 4 - hex.length; j++) { +buffer += ("0"); +} +buffer += (hex); +}} +} +return buffer; +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "getProperty", +function(name){ +var result = this.get(name); +var property = (typeof(result)=='string') ? result : null; +if (property == null && this.defaults != null) { +property = this.defaults.getProperty(name); +}return property; +}, "~S"); +Clazz.defineMethod(c$, "getProperty", +function(name, defaultValue){ +var result = this.get(name); +var property = (typeof(result)=='string') ? result : null; +if (property == null && this.defaults != null) { +property = this.defaults.getProperty(name); +}if (property == null) { +return defaultValue; +}return property; +}, "~S,~S"); +Clazz.defineMethod(c$, "list", +function(out){ +if (out == null) { +throw new NullPointerException(); +}var buffer = ""; +var keys = this.propertyNames(); +while (keys.hasMoreElements()) { +var key = keys.nextElement(); +buffer += (key); +buffer += ('='); +var property = this.get(key); +var def = this.defaults; +while (property == null) { +property = def.get(key); +def = def.defaults; +} +if (property.length > 40) { +buffer += (property.substring(0, 37)); +buffer += ("..."); +} else { +buffer += (property); +}out.println(buffer.toString()); +buffer = ""; +} +}, "java.io.PrintStream"); +Clazz.defineMethod(c$, "list", +function(writer){ +if (writer == null) { +throw new NullPointerException(); +}var buffer = ""; +var keys = this.propertyNames(); +while (keys.hasMoreElements()) { +var key = keys.nextElement(); +buffer += (key); +buffer += ('='); +var property = this.get(key); +var def = this.defaults; +while (property == null) { +property = def.get(key); +def = def.defaults; +} +if (property.length > 40) { +buffer += (property.substring(0, 37)); +buffer += ("..."); +} else { +buffer += (property); +}writer.println(buffer.toString()); +buffer = ""; +} +}, "java.io.PrintWriter"); +Clazz.defineMethod(c$, "load", +function($in){ + +}, "java.io.InputStream"); +Clazz.defineMethod(c$, "propertyNames", +function(){ +if (this.defaults == null) { +return this.keys(); +}var set = new java.util.Hashtable(this.defaults.size() + this.size()); +var keys = this.defaults.propertyNames(); +while (keys.hasMoreElements()) { +set.put(keys.nextElement(), set); +} +keys = this.keys(); +while (keys.hasMoreElements()) { +set.put(keys.nextElement(), set); +} +return set.keys(); +}); +Clazz.defineMethod(c$, "save", +function(out, comment){ +try { +this.store(out, comment); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +} else { +throw e; +} +} +}, "java.io.OutputStream,~S"); +Clazz.defineMethod(c$, "setProperty", +function(name, value){ +return this.put(name, value); +}, "~S,~S"); +Clazz.defineMethod(c$, "store", +function(out, comment){ + +}, "java.io.OutputStream,~S"); +Clazz.defineMethod(c$, "loadFromXML", +function($in){ + +}, "java.io.InputStream"); +Clazz.defineMethod(c$, "storeToXML", +function(os, comment){ + +}, "java.io.OutputStream,~S"); +Clazz.defineMethod(c$, "storeToXML", +function(os, comment, encoding){ + +}, "java.io.OutputStream,~S,~S"); +Clazz.defineMethod(c$, "substitutePredefinedEntries", +function(s){ +return s.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\u0027", "'").replaceAll("\"", """); +}, "~S"); +c$.lineSeparator = null; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Queue.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Queue.js new file mode 100755 index 000000000000..9f2173b913ac --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Queue.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "Queue", java.util.Collection); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Random.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Random.js new file mode 100755 index 000000000000..f24b6dd6c252 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Random.js @@ -0,0 +1,238 @@ +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.haveNextNextGaussian = false; +this.seed = 0; +this.nextNextGaussian = 0; +Clazz.instantialize(this, arguments);}, java.util, "Random", null, java.io.Serializable); +Clazz.makeConstructor(c$, +function(){ +var seed = -2147483648; +{ +arguments.length == 1 && (seed = arguments[0]); +}if (seed == -2147483648) seed = System.currentTimeMillis(); +this.setSeed(seed); +}); +Clazz.defineMethod(c$, "next", +function(bits){ +this.seed = (this.seed * 25214903917 + 0xb) & (281474976710655); +return (this.seed >>> (48 - bits)); +}, "~N"); +Clazz.defineMethod(c$, "nextBoolean", +function(){ +{ +return Math.random () > 0.5; +}}); +Clazz.defineMethod(c$, "nextBytes", +function(buf){ +{ +var rand = 0; +var count = 0; +var loop = 0; +while (count < buf.length) { +if (loop == 0) { +rand = this.nextInt(); +loop = 3; +} else { +loop--; +}buf[count++] = rand; +rand >>= 8; +} +}}, "~A"); +Clazz.defineMethod(c$, "nextDouble", +function(){ +{ +return Math.random (); +}}); +Clazz.defineMethod(c$, "nextFloat", +function(){ +{ +return Math.random (); +}}); +Clazz.defineMethod(c$, "nextGaussian", +function(){ +if (this.haveNextNextGaussian) { +this.haveNextNextGaussian = false; +return this.nextNextGaussian; +}var v1; +var v2; +var s; +do { +v1 = 2 * this.nextDouble() - 1; +v2 = 2 * this.nextDouble() - 1; +s = v1 * v1 + v2 * v2; +} while (s >= 1); +var norm = Math.sqrt(-2 * Math.log(s) / s); +this.nextNextGaussian = v2 * norm; +this.haveNextNextGaussian = true; +return v1 * norm; +}); +Clazz.defineMethod(c$, "nextInt", +function(n){ +{ +if (arguments.length == 0) +return Math.random()*0x100000000 | 0; +}if (n <= 0) { +throw new IllegalArgumentException(); +}{ +return Math.random() * n|0 +}}, "~N"); +Clazz.defineMethod(c$, "nextLong", +function(){ +return (this.next(32) << 32) + this.next(32); +}); +Clazz.defineMethod(c$, "setSeed", +function(seed){ +{ +Math.seedrandom(seed); +}}, "~N"); +{ +{ +(function (pool, math, width, chunks, significance, overflow, startdenom) { +var copyright = "Copyright 2010 David Bau, all rights reserved. (BSD)" +// +// seedrandom() +// This is the seedrandom function described above. +// +math['seedrandom'] = function seedrandom(seed, use_entropy) { +var key = []; +var arc4; +// Flatten the seed string or build one from local entropy if needed. +seed = mixkey(flatten( +use_entropy ? [seed, pool] : +arguments.length ? seed : +[new Date().getTime(), pool, window], 3), key); +// Use the seed to initialize an ARC4 generator. +arc4 = new ARC4(key); +// Mix the randomness into accumulated entropy. +mixkey(arc4.S, pool); +// Override Math.random +// This function returns a random double in [0, 1) that contains +// randomness in every bit of the mantissa of the IEEE 754 value. +math['random'] = function random() { // Closure to return a random double: +var n = arc4.g(chunks); // Start with a numerator n < 2 ^ 48 +var d = startdenom; // and denominator d = 2 ^ 48. +var x = 0; // and no 'extra last byte'. +while (n < significance) { // Fill up all significant digits by +n = (n + x) * width; // shifting numerator and +d *= width; // denominator and generating a +x = arc4.g(1); // new least-significant-byte. +} +while (n >= overflow) { // To avoid rounding up, before adding +n /= 2; // last byte, shift everything +d /= 2; // right using integer math until +x >>>= 1; // we have exactly the desired bits. +} +return (n + x) / d; // Form the number within [0, 1). +}; +// Return the seed that was used +return seed; +}; +// +// ARC4 +// +// An ARC4 implementation. The constructor takes a key in the form of +// an array of at most (width) integers that should be 0 <= x < (width). +// +// The g(count) method returns a pseudorandom integer that concatenates +// the next (count) outputs from ARC4. Its return value is a number x +// that is in the range 0 <= x < (width ^ count). +// +function ARC4(key) { +var t, u, me = this, keylen = key.length; +var i = 0, j = me.i = me.j = me.m = 0; +me.S = []; +me.c = []; +// The empty key [] is treated as [0]. +if (!keylen) { key = [keylen++]; } +// Set up S using the standard key scheduling algorithm. +while (i < width) { me.S[i] = i++; } +for (i = 0; i < width; i++) { +t = me.S[i]; +j = lowbits(j + t + key[i % keylen]); +u = me.S[j]; +me.S[i] = u; +me.S[j] = t; +} +// The "g" method returns the next (count) outputs as one number. +me.g = function getnext(count) { +var s = me.S; +var i = lowbits(me.i + 1); var t = s[i]; +var j = lowbits(me.j + t); var u = s[j]; +s[i] = u; +s[j] = t; +var r = s[lowbits(t + u)]; +while (--count) { +i = lowbits(i + 1); t = s[i]; +j = lowbits(j + t); u = s[j]; +s[i] = u; +s[j] = t; +r = r * width + s[lowbits(t + u)]; +} +me.i = i; +me.j = j; +return r; +}; +// For robust unpredictability discard an initial batch of values. +// See http://www.rsa.com/rsalabs/node.asp?id=2009 +me.g(width); +} +// +// flatten() +// Converts an object tree to nested arrays of strings. +// +function flatten(obj, depth, result, prop) { +result = []; +if (depth && typeof(obj) == 'object') { +for (prop in obj) { +if (prop.indexOf('S') < 5) { // Avoid FF3 bug (local/sessionStorage) +try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} +} +} +} +return result.length ? result : '' + obj; +} +// +// mixkey() +// Mixes a string seed into a key that is an array of integers, and +// returns a shortened string seed that is equivalent to the result key. +// +function mixkey(seed, key, smear, j) { +seed += ''; // Ensure the seed is a string +smear = 0; +for (j = 0; j < seed.length; j++) { +key[lowbits(j)] = +lowbits((smear ^= key[lowbits(j)] * 19) + seed.charCodeAt(j)); +} +seed = ''; +for (j in key) { seed += String.fromCharCode(key[j]); } +return seed; +} +// +// lowbits() +// A quick "n mod width" for width a power of 2. +// +function lowbits(n) { return n & (width - 1); } +// +// The following constants are related to IEEE 754 limits. +// +startdenom = math.pow(width, chunks); +significance = math.pow(2, significance); +overflow = significance * 2; +// +// When seedrandom.js is loaded, we immediately mix a few bits +// from the built-in RNG into the entropy pool. Because we do +// not want to intefere with determinstic PRNG state later, +// seedrandom will not call math.random on its own again after +// initialization. +// +mixkey(math.random(), pool); +// End anonymous scope, and pass initial values. +})( +[], // pool: entropy pool starts empty +Math, // math: package containing random, pow, and seedrandom +256, // width: each RC4 output is 0 <= x < 256 +6, // chunks: at least six RC4 outputs for each double +52 // significance: there are 52 significant digits in a double +); +}}})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/RandomAccess.js b/config/plugins/visualizations/jmol/static/j2s/java/util/RandomAccess.js new file mode 100755 index 000000000000..9aadd4fbd1f2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/RandomAccess.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "RandomAccess"); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/ResourceBundle.js b/config/plugins/visualizations/jmol/static/j2s/java/util/ResourceBundle.js new file mode 100755 index 000000000000..1b26730511dc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/ResourceBundle.js @@ -0,0 +1,206 @@ +Clazz.load(null, "java.util.ResourceBundle", ["java.util.Enumeration", "net.sf.j2s.ajax.HttpRequest"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.parent = null; +this.locale = null; +this.bundleName = null; +Clazz.instantialize(this, arguments);}, java.util, "ResourceBundle", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "getString", +function(key){ +return this.getObject(key); +}, "~S"); +Clazz.defineMethod(c$, "getStringArray", +function(key){ +return this.getObject(key); +}, "~S"); +Clazz.defineMethod(c$, "getObject", +function(key){ +var obj = this.handleGetObject(key); +if (obj == null) { +if (this.parent != null) { +obj = this.parent.getObject(key); +}if (obj == null) throw new java.util.MissingResourceException("Can't find resource for bundle " + this.getClass().getName() + ", key " + key, this.getClass().getName(), key); +}return obj; +}, "~S"); +Clazz.defineMethod(c$, "getLocale", +function(){ +return this.locale; +}); +Clazz.defineMethod(c$, "setParent", +function(parent){ +this.parent = parent; +}, "java.util.ResourceBundle"); +c$.getBundle = Clazz.defineMethod(c$, "getBundle", +function(baseName){ +return java.util.ResourceBundle.getBundleImpl(baseName, null, null); +}, "~S"); +c$.getBundle = Clazz.defineMethod(c$, "getBundle", +function(baseName, locale){ +return java.util.ResourceBundle.getBundleImpl(baseName, locale, null); +}, "~S,java.util.Locale"); +c$.getBundle = Clazz.defineMethod(c$, "getBundle", +function(baseName, locale, loader){ +if (loader == null) { +throw new NullPointerException(); +}return java.util.ResourceBundle.getBundleImpl(baseName, locale, loader); +}, "~S,java.util.Locale,ClassLoader"); +c$.getBundleImpl = Clazz.defineMethod(c$, "getBundleImpl", +function(baseName, locale, loader){ +if (baseName == null) { +throw new NullPointerException(); +}for (var i = 0; i < java.util.ResourceBundle.caches.length; i++) { +if (java.util.ResourceBundle.caches[i].bundleName === baseName) { +return java.util.ResourceBundle.caches[i]; +}} +var bundle = new java.util.ResourceBundle.TextResourceBundle(baseName); +java.util.ResourceBundle.caches[java.util.ResourceBundle.caches.length] = bundle; +return bundle; +}, "~S,java.util.Locale,ClassLoader"); +c$.registerBundle = Clazz.defineMethod(c$, "registerBundle", +function(baseName, content){ +for (var i = 0; i < java.util.ResourceBundle.caches.length; i++) { +if (java.util.ResourceBundle.caches[i].bundleName === baseName) { +return; +}} +java.util.ResourceBundle.caches[java.util.ResourceBundle.caches.length] = new java.util.ResourceBundle.TextResourceBundle(baseName, content); +}, "~S,~S"); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.map = null; +this.keys = null; +this.content = null; +this.initialized = false; +Clazz.instantialize(this, arguments);}, java.util.ResourceBundle, "TextResourceBundle", java.util.ResourceBundle); +Clazz.prepareFields (c$, function(){ +this.map = new Array(0); +this.keys = new Array(0); +}); +Clazz.makeConstructor(c$, +function(bundleName){ +Clazz.superConstructor (this, java.util.ResourceBundle.TextResourceBundle, []); +this.bundleName = bundleName; +}, "~S"); +Clazz.makeConstructor(c$, +function(bundleName, content){ +Clazz.superConstructor (this, java.util.ResourceBundle.TextResourceBundle, []); +this.bundleName = bundleName; +this.content = content; +}, "~S,~S"); +Clazz.defineMethod(c$, "evalString", +function(a){ +var r = new Array (); +var b = false; +var x = 0; +for (var i = 0; i < a.length; i++) { +var c = a.charAt (i); +if (b) { +if (c == 'f') r[r.length] = '\f'; +else if (c == 't') r[r.length] = '\t'; +else if (c == 'r') r[r.length] = '\r'; +else if (c == 'n') r[r.length] = '\n'; +else if (c == '\'') r[r.length] = '\''; +else if (c == '\"') r[r.length] = '\"'; +else if (c == '\\') r[r.length] = '\\'; +else if (c == 'u') { +r[r.length] = eval ("\"\\u" + a.substring (i + 1, i + 5) + "\""); +i += 4; +} +x = i + 1; +b = false; +} else if (c == '\\') { +if (x != i) { +r[r.length] = a.substring (x, i); +} +b = true; +} +} +if (!b) { +r[r.length] = a.substring (x, a.length); +} +return r.join (''); +}, "~S"); +Clazz.defineMethod(c$, "initBundle", +function(){ +if (this.initialized) { +return; +}this.initialized = true; +var a = null; +var b = this.bundleName; +if (this.content == null) { +var n = b.replace (/\./g, '/') + ".properties"; +var p = Clazz.binaryFolders; +if (p == null) { +p = ["bin", "", "j2slib"]; +} +var r = new net.sf.j2s.ajax.HttpRequest (); +var x = 0; +while (a == null && x < p.length) { +var q = p[x]; +if (q.length > 0 && q.lastIndexOf ("/") != q.length - 1) { +q += "/"; +} +try { +r.open ("GET", q + n, false); // FIXME: using synchronized mode will freeze browser! +r.send (); +a = r.getResponseText (); +} catch (e) { +r = new net.sf.j2s.ajax.HttpRequest (); +} +x++; +} +}if (this.content == null) { +this.content = a; +}if (this.content == null) { +return; +}var bundleLines = this.content.$plit("\n"); +for (var i = 0; i < bundleLines.length; i++) { +var trimedLine = bundleLines[i].trim(); +if (!trimedLine.startsWith("#")) { +var index = trimedLine.indexOf('='); +if (index != -1) { +var key = trimedLine.substring(0, index).trim(); +var value = trimedLine.substring(index + 1).trim(); +if (value.indexOf('\\') != -1) { +value = this.evalString(value); +}var m = this.map; +var k = this.keys; +{ +if (m[key] == null) { +k[k.length] = key; +} +m[key] = value; +}}}} +}); +Clazz.overrideMethod(c$, "getKeys", +function(){ +return ((Clazz.isClassDefined("java.util.ResourceBundle$TextResourceBundle$1") ? 0 : java.util.ResourceBundle.TextResourceBundle.$ResourceBundle$TextResourceBundle$1$ ()), Clazz.innerTypeInstance(java.util.ResourceBundle$TextResourceBundle$1, this, null)); +}); +Clazz.overrideMethod(c$, "handleGetObject", +function(key){ +if (!this.initialized) { +this.initBundle(); +}var m = this.map; +{ +return m[key]; +}return m; +}, "~S"); +c$.$ResourceBundle$TextResourceBundle$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.index = -1; +Clazz.instantialize(this, arguments);}, java.util, "ResourceBundle$TextResourceBundle$1", null, java.util.Enumeration); +Clazz.overrideMethod(c$, "nextElement", +function(){ +this.index++; +return this.b$["java.util.ResourceBundle.TextResourceBundle"].keys[this.index]; +}); +Clazz.overrideMethod(c$, "hasMoreElements", +function(){ +return this.index < this.b$["java.util.ResourceBundle.TextResourceBundle"].keys.length - 1; +}); +/*eoif5*/})(); +}; +/*eoif3*/})(); +c$.caches = new Array(0); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Set.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Set.js new file mode 100755 index 000000000000..7f7f9438f646 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Set.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "Set", java.util.Collection); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/SortedMap.js b/config/plugins/visualizations/jmol/static/j2s/java/util/SortedMap.js new file mode 100755 index 000000000000..0739b7e6cc5f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/SortedMap.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "SortedMap", java.util.Map); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/SortedSet.js b/config/plugins/visualizations/jmol/static/j2s/java/util/SortedSet.js new file mode 100755 index 000000000000..474d4aa3c104 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/SortedSet.js @@ -0,0 +1,2 @@ +Clazz.declareInterface(java.util, "SortedSet", java.util.Set); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Stack.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Stack.js new file mode 100755 index 000000000000..f23b493c9143 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Stack.js @@ -0,0 +1,46 @@ +Clazz.load(["java.util.Vector"], "java.util.Stack", null, function(){ +var c$ = Clazz.declareType(java.util, "Stack", java.util.Vector); +Clazz.defineMethod(c$, "empty", +function(){ +return this.elementCount == 0; +}); +Clazz.defineMethod(c$, "peek", +function(){ +try { +return this.elementData[this.elementCount - 1]; +} catch (e) { +if (Clazz.exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.EmptyStackException(); +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "pop", +function(){ +try { +var index = this.elementCount - 1; +var obj = this.elementData[index]; +this.removeElementAt(index); +return obj; +} catch (e) { +if (Clazz.exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.EmptyStackException(); +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "push", +function(object){ +this.addElement(object); +return object; +}, "~O"); +Clazz.defineMethod(c$, "search", +function(o){ +var index = this.lastIndexOf(o); +if (index >= 0) return (this.elementCount - index); +return -1; +}, "~O"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/StringTokenizer.js b/config/plugins/visualizations/jmol/static/j2s/java/util/StringTokenizer.js new file mode 100755 index 000000000000..a97153c41e04 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/StringTokenizer.js @@ -0,0 +1,76 @@ +Clazz.load(["java.util.Enumeration"], "java.util.StringTokenizer", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.string = null; +this.delimiters = null; +this.returnDelimiters = false; +this.position = 0; +Clazz.instantialize(this, arguments);}, java.util, "StringTokenizer", null, java.util.Enumeration); +Clazz.makeConstructor(c$, +function(string, delimiters, returnDelimiters){ +{ +switch (arguments.length) { +case 1: delimiters = " \t\n\r\f"; +case 2: returnDelimiters = false; +} +}if (string == null) throw new NullPointerException(); +this.string = string; +this.delimiters = delimiters; +this.returnDelimiters = returnDelimiters; +this.position = 0; +}, "~S,~S,~B"); +Clazz.defineMethod(c$, "countTokens", +function(){ +var count = 0; +var inToken = false; +for (var i = this.position, length = this.string.length; i < length; i++) { +if (this.delimiters.indexOf(this.string.charAt(i), 0) >= 0) { +if (this.returnDelimiters) count++; +if (inToken) { +count++; +inToken = false; +}} else { +inToken = true; +}} +if (inToken) count++; +return count; +}); +Clazz.overrideMethod(c$, "hasMoreElements", +function(){ +return this.hasMoreTokens(); +}); +Clazz.defineMethod(c$, "hasMoreTokens", +function(){ +var length = this.string.length; +if (this.position < length) { +if (this.returnDelimiters) return true; +for (var i = this.position; i < length; i++) if (this.delimiters.indexOf(this.string.charAt(i), 0) == -1) return true; + +}return false; +}); +Clazz.overrideMethod(c$, "nextElement", +function(){ +return this.nextToken(); +}); +Clazz.defineMethod(c$, "nextToken", +function(){ +{ +(arguments.length == 1) && (this.delimiters = arguments[0]); +}var i = this.position; +var length = this.string.length; +if (i < length) { +if (this.returnDelimiters) { +if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return String.valueOf(this.string.charAt(this.position++)); +for (this.position++; this.position < length; this.position++) if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return this.string.substring(i, this.position); + +return this.string.substring(i); +}while (i < length && this.delimiters.indexOf(this.string.charAt(i), 0) >= 0) i++; + +this.position = i; +if (i < length) { +for (this.position++; this.position < length; this.position++) if (this.delimiters.indexOf(this.string.charAt(this.position), 0) >= 0) return this.string.substring(i, this.position); + +return this.string.substring(i); +}}throw new java.util.NoSuchElementException(); +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/TreeMap.js b/config/plugins/visualizations/jmol/static/j2s/java/util/TreeMap.js new file mode 100755 index 000000000000..401364e82474 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/TreeMap.js @@ -0,0 +1,1006 @@ +Clazz.load(["java.util.AbstractCollection", "$.AbstractMap", "$.AbstractSet", "$.Iterator", "$.MapEntry", "$.Set", "$.SortedMap"], "java.util.TreeMap", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.$size = 0; +this.root = null; +this.$comparator = null; +this.modCount = 0; +this.$entrySet = null; +Clazz.instantialize(this, arguments);}, java.util, "TreeMap", java.util.AbstractMap, [java.util.SortedMap, Cloneable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(comparator){ +Clazz.superConstructor (this, java.util.TreeMap, []); +this.$comparator = comparator; +}, "java.util.Comparator"); +Clazz.makeConstructor(c$, +function(map){ +this.construct (); +this.putAll(map); +}, "java.util.Map"); +Clazz.makeConstructor(c$, +function(map){ +this.construct (map.comparator()); +var it = map.entrySet().iterator(); +if (it.hasNext()) { +var entry = it.next(); +var last = new java.util.TreeMap.Entry(entry.getKey(), entry.getValue()); +this.root = last; +this.$size = 1; +while (it.hasNext()) { +entry = it.next(); +var x = new java.util.TreeMap.Entry(entry.getKey(), entry.getValue()); +x.parent = last; +last.right = x; +this.$size++; +this.balance(x); +last = x; +} +}}, "java.util.SortedMap"); +c$.toComparable = Clazz.defineMethod(c$, "toComparable", +function(obj){ +return obj; +}, "~O"); +Clazz.defineMethod(c$, "balance", +function(x){ +var y; +x.color = true; +while (x !== this.root && x.parent.color) { +if (x.parent === x.parent.parent.left) { +y = x.parent.parent.right; +if (y != null && y.color) { +x.parent.color = false; +y.color = false; +x.parent.parent.color = true; +x = x.parent.parent; +} else { +if (x === x.parent.right) { +x = x.parent; +this.leftRotate(x); +}x.parent.color = false; +x.parent.parent.color = true; +this.rightRotate(x.parent.parent); +}} else { +y = x.parent.parent.left; +if (y != null && y.color) { +x.parent.color = false; +y.color = false; +x.parent.parent.color = true; +x = x.parent.parent; +} else { +if (x === x.parent.left) { +x = x.parent; +this.rightRotate(x); +}x.parent.color = false; +x.parent.parent.color = true; +this.leftRotate(x.parent.parent); +}}} +this.root.color = false; +}, "java.util.TreeMap.Entry"); +Clazz.overrideMethod(c$, "clear", +function(){ +this.root = null; +this.$size = 0; +this.modCount++; +}); +Clazz.defineMethod(c$, "clone", +function(){ +try { +var clone = Clazz.superCall(this, java.util.TreeMap, "clone", []); +clone.$entrySet = null; +if (this.root != null) { +clone.root = this.root.clone(null); +}return clone; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "comparator", +function(){ +return this.$comparator; +}); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +return this.find(key) != null; +}, "~O"); +Clazz.defineMethod(c$, "containsValue", +function(value){ +if (this.root != null) { +return this.containsValue(this.root, value); +}return false; +}, "~O"); +Clazz.defineMethod(c$, "containsValue", +function(node, value){ +if (value == null ? node.value == null : value.equals(node.value)) { +return true; +}if (node.left != null) { +if (this.containsValue(node.left, value)) { +return true; +}}if (node.right != null) { +if (this.containsValue(node.right, value)) { +return true; +}}return false; +}, "java.util.TreeMap.Entry,~O"); +Clazz.overrideMethod(c$, "entrySet", +function(){ +if (this.$entrySet == null) { +this.$entrySet = ((Clazz.isClassDefined("java.util.TreeMap$1") ? 0 : java.util.TreeMap.$TreeMap$1$ ()), Clazz.innerTypeInstance(java.util.TreeMap$1, this, null)); +}return this.$entrySet; +}); +Clazz.defineMethod(c$, "find", +function(keyObj){ +var result; +var key = keyObj; +var object = null; +if (this.$comparator == null) { +object = java.util.TreeMap.toComparable(key); +}var x = this.root; +while (x != null) { +result = object != null ? object.compareTo(x.key) : this.$comparator.compare(key, x.key); +if (result == 0) { +return x; +}x = result < 0 ? x.left : x.right; +} +return null; +}, "~O"); +Clazz.defineMethod(c$, "findAfter", +function(keyObj){ +var key = keyObj; +var result; +var object = null; +if (this.$comparator == null) { +object = java.util.TreeMap.toComparable(key); +}var x = this.root; +var last = null; +while (x != null) { +result = object != null ? object.compareTo(x.key) : this.$comparator.compare(key, x.key); +if (result == 0) { +return x; +}if (result < 0) { +last = x; +x = x.left; +} else { +x = x.right; +}} +return last; +}, "~O"); +Clazz.defineMethod(c$, "findBefore", +function(key){ +var result; +var object = null; +if (this.$comparator == null) { +object = java.util.TreeMap.toComparable(key); +}var x = this.root; +var last = null; +while (x != null) { +result = object != null ? object.compareTo(x.key) : this.$comparator.compare(key, x.key); +if (result <= 0) { +x = x.left; +} else { +last = x; +x = x.right; +}} +return last; +}, "~O"); +Clazz.overrideMethod(c$, "firstKey", +function(){ +if (this.root != null) { +return java.util.TreeMap.minimum(this.root).key; +}throw new java.util.NoSuchElementException(); +}); +Clazz.defineMethod(c$, "fixup", +function(x){ +var w; +while (x !== this.root && !x.color) { +if (x === x.parent.left) { +w = x.parent.right; +if (w == null) { +x = x.parent; +continue; +}if (w.color) { +w.color = false; +x.parent.color = true; +this.leftRotate(x.parent); +w = x.parent.right; +if (w == null) { +x = x.parent; +continue; +}}if ((w.left == null || !w.left.color) && (w.right == null || !w.right.color)) { +w.color = true; +x = x.parent; +} else { +if (w.right == null || !w.right.color) { +w.left.color = false; +w.color = true; +this.rightRotate(w); +w = x.parent.right; +}w.color = x.parent.color; +x.parent.color = false; +w.right.color = false; +this.leftRotate(x.parent); +x = this.root; +}} else { +w = x.parent.left; +if (w == null) { +x = x.parent; +continue; +}if (w.color) { +w.color = false; +x.parent.color = true; +this.rightRotate(x.parent); +w = x.parent.left; +if (w == null) { +x = x.parent; +continue; +}}if ((w.left == null || !w.left.color) && (w.right == null || !w.right.color)) { +w.color = true; +x = x.parent; +} else { +if (w.left == null || !w.left.color) { +w.right.color = false; +w.color = true; +this.leftRotate(w); +w = x.parent.left; +}w.color = x.parent.color; +x.parent.color = false; +w.left.color = false; +this.rightRotate(x.parent); +x = this.root; +}}} +x.color = false; +}, "java.util.TreeMap.Entry"); +Clazz.overrideMethod(c$, "get", +function(key){ +var node = this.find(key); +if (node != null) { +return node.value; +}return null; +}, "~O"); +Clazz.overrideMethod(c$, "headMap", +function(endKey){ +if (this.$comparator == null) { +java.util.TreeMap.toComparable(endKey).compareTo(endKey); +} else { +this.$comparator.compare(endKey, endKey); +}return new java.util.TreeMap.SubMap(this, endKey); +}, "~O"); +Clazz.overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = ((Clazz.isClassDefined("java.util.TreeMap$2") ? 0 : java.util.TreeMap.$TreeMap$2$ ()), Clazz.innerTypeInstance(java.util.TreeMap$2, this, null)); +}return this.$keySet; +}); +Clazz.overrideMethod(c$, "lastKey", +function(){ +if (this.root != null) { +return java.util.TreeMap.maximum(this.root).key; +}throw new java.util.NoSuchElementException(); +}); +Clazz.defineMethod(c$, "leftRotate", +function(x){ +var y = x.right; +x.right = y.left; +if (y.left != null) { +y.left.parent = x; +}y.parent = x.parent; +if (x.parent == null) { +this.root = y; +} else { +if (x === x.parent.left) { +x.parent.left = y; +} else { +x.parent.right = y; +}}y.left = x; +x.parent = y; +}, "java.util.TreeMap.Entry"); +c$.maximum = Clazz.defineMethod(c$, "maximum", +function(x){ +while (x.right != null) { +x = x.right; +} +return x; +}, "java.util.TreeMap.Entry"); +c$.minimum = Clazz.defineMethod(c$, "minimum", +function(x){ +while (x.left != null) { +x = x.left; +} +return x; +}, "java.util.TreeMap.Entry"); +c$.predecessor = Clazz.defineMethod(c$, "predecessor", +function(x){ +if (x.left != null) { +return java.util.TreeMap.maximum(x.left); +}var y = x.parent; +while (y != null && x === y.left) { +x = y; +y = y.parent; +} +return y; +}, "java.util.TreeMap.Entry"); +Clazz.overrideMethod(c$, "put", +function(key, value){ +var entry = this.rbInsert(key); +var result = entry.value; +entry.value = value; +return result; +}, "~O,~O"); +Clazz.defineMethod(c$, "rbDelete", +function(z){ +var y = z.left == null || z.right == null ? z : java.util.TreeMap.successor(z); +var x = y.left != null ? y.left : y.right; +if (x != null) { +x.parent = y.parent; +}if (y.parent == null) { +this.root = x; +} else if (y === y.parent.left) { +y.parent.left = x; +} else { +y.parent.right = x; +}this.modCount++; +if (y !== z) { +z.key = y.key; +z.value = y.value; +}if (!y.color && this.root != null) { +if (x == null) { +this.fixup(y.parent); +} else { +this.fixup(x); +}}this.$size--; +}, "java.util.TreeMap.Entry"); +Clazz.defineMethod(c$, "rbInsert", +function(object){ +var result = 0; +var y = null; +if (this.$size != 0) { +var key = null; +if (this.$comparator == null) { +key = java.util.TreeMap.toComparable(object); +}var x = this.root; +while (x != null) { +y = x; +result = key != null ? key.compareTo(x.key) : this.$comparator.compare(object, x.key); +if (result == 0) { +return x; +}x = result < 0 ? x.left : x.right; +} +}this.$size++; +this.modCount++; +var z = new java.util.TreeMap.Entry(object); +if (y == null) { +return this.root = z; +}z.parent = y; +if (result < 0) { +y.left = z; +} else { +y.right = z; +}this.balance(z); +return z; +}, "~O"); +Clazz.overrideMethod(c$, "remove", +function(key){ +var node = this.find(key); +if (node == null) { +return null; +}var result = node.value; +this.rbDelete(node); +return result; +}, "~O"); +Clazz.defineMethod(c$, "rightRotate", +function(x){ +var y = x.left; +x.left = y.right; +if (y.right != null) { +y.right.parent = x; +}y.parent = x.parent; +if (x.parent == null) { +this.root = y; +} else { +if (x === x.parent.right) { +x.parent.right = y; +} else { +x.parent.left = y; +}}y.right = x; +x.parent = y; +}, "java.util.TreeMap.Entry"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.$size; +}); +Clazz.overrideMethod(c$, "subMap", +function(startKey, endKey){ +if (this.$comparator == null) { +if (java.util.TreeMap.toComparable(startKey).compareTo(endKey) <= 0) { +return new java.util.TreeMap.SubMap(startKey, this, endKey); +}} else { +if (this.$comparator.compare(startKey, endKey) <= 0) { +return new java.util.TreeMap.SubMap(startKey, this, endKey); +}}throw new IllegalArgumentException(); +}, "~O,~O"); +c$.successor = Clazz.defineMethod(c$, "successor", +function(x){ +if (x.right != null) { +return java.util.TreeMap.minimum(x.right); +}var y = x.parent; +while (y != null && x === y.right) { +x = y; +y = y.parent; +} +return y; +}, "java.util.TreeMap.Entry"); +Clazz.overrideMethod(c$, "tailMap", +function(startKey){ +if (this.$comparator == null) { +java.util.TreeMap.toComparable(startKey).compareTo(startKey); +} else { +this.$comparator.compare(startKey, startKey); +}return new java.util.TreeMap.SubMap(startKey, this); +}, "~O"); +Clazz.overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = ((Clazz.isClassDefined("java.util.TreeMap$3") ? 0 : java.util.TreeMap.$TreeMap$3$ ()), Clazz.innerTypeInstance(java.util.TreeMap$3, this, null)); +}return this.$values; +}); +c$.$TreeMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "TreeMap$1", java.util.AbstractSet); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.TreeMap"].$size; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.TreeMap"].clear(); +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +if (Clazz.instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +var v1 = this.b$["java.util.TreeMap"].get(entry.getKey()); +var v2 = entry.getValue(); +return v1 == null ? v2 == null : v1.equals(v2); +}return false; +}, "~O"); +Clazz.defineMethod(c$, "iterator", +function(){ +return new java.util.TreeMap.UnboundedEntryIterator(this.b$["java.util.TreeMap"]); +}); +/*eoif5*/})(); +}; +c$.$TreeMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "TreeMap$2", java.util.AbstractSet); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.TreeMap"].containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.TreeMap"].$size; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.TreeMap"].clear(); +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.TreeMap.UnboundedKeyIterator(this.b$["java.util.TreeMap"]); +}); +/*eoif5*/})(); +}; +c$.$TreeMap$3$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "TreeMap$3", java.util.AbstractCollection); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.TreeMap"].containsValue(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.TreeMap"].$size; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.TreeMap"].clear(); +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +return new java.util.TreeMap.UnboundedValueIterator(this.b$["java.util.TreeMap"]); +}); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.parent = null; +this.left = null; +this.right = null; +this.color = false; +Clazz.instantialize(this, arguments);}, java.util.TreeMap, "Entry", java.util.MapEntry); +Clazz.defineMethod(c$, "clone", +function(parent){ +var clone = Clazz.superCall(this, java.util.TreeMap.Entry, "clone", []); +clone.parent = parent; +if (this.left != null) { +clone.left = this.left.clone(clone); +}if (this.right != null) { +clone.right = this.right.clone(clone); +}return clone; +}, "java.util.TreeMap.Entry"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.backingMap = null; +this.expectedModCount = 0; +this.node = null; +this.lastNode = null; +Clazz.instantialize(this, arguments);}, java.util.TreeMap, "AbstractMapIterator", null); +Clazz.makeConstructor(c$, +function(map, startNode){ +this.backingMap = map; +this.expectedModCount = map.modCount; +this.node = startNode; +}, "java.util.TreeMap,java.util.TreeMap.Entry"); +Clazz.defineMethod(c$, "hasNext", +function(){ +return this.node != null; +}); +Clazz.defineMethod(c$, "remove", +function(){ +if (this.expectedModCount == this.backingMap.modCount) { +if (this.lastNode != null) { +this.backingMap.rbDelete(this.lastNode); +this.lastNode = null; +this.expectedModCount++; +} else { +throw new IllegalStateException(); +}} else { +throw new java.util.ConcurrentModificationException(); +}}); +Clazz.defineMethod(c$, "makeNext", +function(){ +if (this.expectedModCount != this.backingMap.modCount) { +throw new java.util.ConcurrentModificationException(); +} else if (this.node == null) { +throw new java.util.NoSuchElementException(); +}this.lastNode = this.node; +this.node = java.util.TreeMap.successor(this.node); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "UnboundedEntryIterator", java.util.TreeMap.AbstractMapIterator, java.util.Iterator); +Clazz.makeConstructor(c$, +function(map){ +Clazz.superConstructor(this, java.util.TreeMap.UnboundedEntryIterator, [map, map.root == null ? null : java.util.TreeMap.minimum(map.root)]); +}, "java.util.TreeMap"); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +return this.lastNode; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "UnboundedKeyIterator", java.util.TreeMap.AbstractMapIterator, java.util.Iterator); +Clazz.makeConstructor(c$, +function(map){ +Clazz.superConstructor(this, java.util.TreeMap.UnboundedKeyIterator, [map, map.root == null ? null : java.util.TreeMap.minimum(map.root)]); +}, "java.util.TreeMap"); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +return this.lastNode.key; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "UnboundedValueIterator", java.util.TreeMap.AbstractMapIterator, java.util.Iterator); +Clazz.makeConstructor(c$, +function(map){ +Clazz.superConstructor(this, java.util.TreeMap.UnboundedValueIterator, [map, map.root == null ? null : java.util.TreeMap.minimum(map.root)]); +}, "java.util.TreeMap"); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +return this.lastNode.value; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.endKey = null; +this.cmp = null; +Clazz.instantialize(this, arguments);}, java.util.TreeMap, "ComparatorBoundedIterator", java.util.TreeMap.AbstractMapIterator); +Clazz.makeConstructor(c$, +function(map, startNode, end){ +Clazz.superConstructor(this, java.util.TreeMap.ComparatorBoundedIterator, [map, startNode]); +this.endKey = end; +this.cmp = map.comparator(); +}, "java.util.TreeMap,java.util.TreeMap.Entry,~O"); +Clazz.defineMethod(c$, "cleanNext", +function(){ +if (this.node != null && this.cmp.compare(this.endKey, this.node.key) <= 0) { +this.node = null; +}}); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return (this.node != null && this.endKey != null) && (this.cmp.compare(this.node.key, this.endKey) < 0); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "ComparatorBoundedEntryIterator", java.util.TreeMap.ComparatorBoundedIterator, java.util.Iterator); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +this.cleanNext(); +return this.lastNode; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "ComparatorBoundedKeyIterator", java.util.TreeMap.ComparatorBoundedIterator, java.util.Iterator); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +this.cleanNext(); +return this.lastNode.key; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "ComparatorBoundedValueIterator", java.util.TreeMap.ComparatorBoundedIterator, java.util.Iterator); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +this.cleanNext(); +return this.lastNode.value; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.endKey = null; +Clazz.instantialize(this, arguments);}, java.util.TreeMap, "ComparableBoundedIterator", java.util.TreeMap.AbstractMapIterator); +Clazz.makeConstructor(c$, +function(treeMap, entry, endKey){ +Clazz.superConstructor(this, java.util.TreeMap.ComparableBoundedIterator, [treeMap, entry]); +this.endKey = endKey; +}, "java.util.TreeMap,java.util.TreeMap.Entry,Comparable"); +Clazz.defineMethod(c$, "cleanNext", +function(){ +if ((this.node != null) && (this.endKey.compareTo(this.node.key) <= 0)) { +this.node = null; +}}); +Clazz.overrideMethod(c$, "hasNext", +function(){ +return (this.node != null) && (this.endKey.compareTo(this.node.key) > 0); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "ComparableBoundedEntryIterator", java.util.TreeMap.ComparableBoundedIterator, java.util.Iterator); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +this.cleanNext(); +return this.lastNode; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "ComparableBoundedKeyIterator", java.util.TreeMap.ComparableBoundedIterator, java.util.Iterator); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +this.cleanNext(); +return this.lastNode.key; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.declareType(java.util.TreeMap, "ComparableBoundedValueIterator", java.util.TreeMap.ComparableBoundedIterator, java.util.Iterator); +Clazz.overrideMethod(c$, "next", +function(){ +this.makeNext(); +this.cleanNext(); +return this.lastNode.value; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.backingMap = null; +this.hasStart = false; +this.hasEnd = false; +this.startKey = null; +this.endKey = null; +this.$entrySet = null; +Clazz.instantialize(this, arguments);}, java.util.TreeMap, "SubMap", java.util.AbstractMap, [java.util.SortedMap, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(start, map){ +Clazz.superConstructor (this, java.util.TreeMap.SubMap, []); +this.backingMap = map; +this.hasStart = true; +this.startKey = start; +}, "~O,java.util.TreeMap"); +Clazz.makeConstructor(c$, +function(start, map, end){ +Clazz.superConstructor (this, java.util.TreeMap.SubMap, []); +this.backingMap = map; +this.hasStart = this.hasEnd = true; +this.startKey = start; +this.endKey = end; +}, "~O,java.util.TreeMap,~O"); +Clazz.makeConstructor(c$, +function(map, end){ +Clazz.superConstructor (this, java.util.TreeMap.SubMap, []); +this.backingMap = map; +this.hasEnd = true; +this.endKey = end; +}, "java.util.TreeMap,~O"); +Clazz.defineMethod(c$, "checkRange", +function(key){ +var cmp = this.backingMap.$comparator; +if (cmp == null) { +var object = java.util.TreeMap.toComparable(key); +if (this.hasStart && object.compareTo(this.startKey) < 0) { +throw new IllegalArgumentException(); +}if (this.hasEnd && object.compareTo(this.endKey) >= 0) { +throw new IllegalArgumentException(); +}} else { +if (this.hasStart && this.backingMap.comparator().compare(key, this.startKey) < 0) { +throw new IllegalArgumentException(); +}if (this.hasEnd && this.backingMap.comparator().compare(key, this.endKey) >= 0) { +throw new IllegalArgumentException(); +}}}, "~O"); +Clazz.defineMethod(c$, "isInRange", +function(key){ +var cmp = this.backingMap.$comparator; +if (cmp == null) { +var object = java.util.TreeMap.toComparable(key); +if (this.hasStart && object.compareTo(this.startKey) < 0) { +return false; +}if (this.hasEnd && object.compareTo(this.endKey) >= 0) { +return false; +}} else { +if (this.hasStart && cmp.compare(key, this.startKey) < 0) { +return false; +}if (this.hasEnd && cmp.compare(key, this.endKey) >= 0) { +return false; +}}return true; +}, "~O"); +Clazz.defineMethod(c$, "checkUpperBound", +function(key){ +if (this.hasEnd) { +var cmp = this.backingMap.$comparator; +if (cmp == null) { +return (java.util.TreeMap.toComparable(key).compareTo(this.endKey) < 0); +}return (cmp.compare(key, this.endKey) < 0); +}return true; +}, "~O"); +Clazz.defineMethod(c$, "checkLowerBound", +function(key){ +if (this.hasStart) { +var cmp = this.backingMap.$comparator; +if (cmp == null) { +return (java.util.TreeMap.toComparable(key).compareTo(this.startKey) >= 0); +}return (cmp.compare(key, this.startKey) >= 0); +}return true; +}, "~O"); +Clazz.overrideMethod(c$, "comparator", +function(){ +return this.backingMap.comparator(); +}); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +if (this.isInRange(key)) { +return this.backingMap.containsKey(key); +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "entrySet", +function(){ +if (this.$entrySet == null) { +this.$entrySet = new java.util.TreeMap.SubMapEntrySet(this); +}return this.$entrySet; +}); +Clazz.overrideMethod(c$, "firstKey", +function(){ +var node = this.firstEntry(); +if (node != null) { +return node.key; +}throw new java.util.NoSuchElementException(); +}); +Clazz.defineMethod(c$, "firstEntry", +function(){ +if (!this.hasStart) { +var root = this.backingMap.root; +return (root == null) ? null : java.util.TreeMap.minimum(this.backingMap.root); +}var node = this.backingMap.findAfter(this.startKey); +if (node != null && this.checkUpperBound(node.key)) { +return node; +}return null; +}); +Clazz.overrideMethod(c$, "get", +function(key){ +if (this.isInRange(key)) { +return this.backingMap.get(key); +}return null; +}, "~O"); +Clazz.overrideMethod(c$, "headMap", +function(endKey){ +this.checkRange(endKey); +if (this.hasStart) { +return new java.util.TreeMap.SubMap(this.startKey, this.backingMap, endKey); +}return new java.util.TreeMap.SubMap(this.backingMap, endKey); +}, "~O"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +if (this.hasStart) { +var node = this.backingMap.findAfter(this.startKey); +return node == null || !this.checkUpperBound(node.key); +}return this.backingMap.findBefore(this.endKey) == null; +}); +Clazz.overrideMethod(c$, "keySet", +function(){ +if (this.$keySet == null) { +this.$keySet = new java.util.TreeMap.SubMapKeySet(this); +}return this.$keySet; +}); +Clazz.overrideMethod(c$, "lastKey", +function(){ +if (!this.hasEnd) { +return this.backingMap.lastKey(); +}var node = this.backingMap.findBefore(this.endKey); +if (node != null && this.checkLowerBound(node.key)) { +return node.key; +}throw new java.util.NoSuchElementException(); +}); +Clazz.overrideMethod(c$, "put", +function(key, value){ +if (this.isInRange(key)) { +return this.backingMap.put(key, value); +}throw new IllegalArgumentException(); +}, "~O,~O"); +Clazz.overrideMethod(c$, "remove", +function(key){ +if (this.isInRange(key)) { +return this.backingMap.remove(key); +}return null; +}, "~O"); +Clazz.overrideMethod(c$, "subMap", +function(startKey, endKey){ +this.checkRange(startKey); +this.checkRange(endKey); +var c = this.backingMap.comparator(); +if (c == null) { +if (java.util.TreeMap.toComparable(startKey).compareTo(endKey) <= 0) { +return new java.util.TreeMap.SubMap(startKey, this.backingMap, endKey); +}} else { +if (c.compare(startKey, endKey) <= 0) { +return new java.util.TreeMap.SubMap(startKey, this.backingMap, endKey); +}}throw new IllegalArgumentException(); +}, "~O,~O"); +Clazz.overrideMethod(c$, "tailMap", +function(startKey){ +this.checkRange(startKey); +if (this.hasEnd) { +return new java.util.TreeMap.SubMap(startKey, this.backingMap, this.endKey); +}return new java.util.TreeMap.SubMap(startKey, this.backingMap); +}, "~O"); +Clazz.overrideMethod(c$, "values", +function(){ +if (this.$values == null) { +this.$values = new java.util.TreeMap.SubMapValuesCollection(this); +}return this.$values; +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.subMap = null; +Clazz.instantialize(this, arguments);}, java.util.TreeMap, "SubMapEntrySet", java.util.AbstractSet, java.util.Set); +Clazz.makeConstructor(c$, +function(map){ +Clazz.superConstructor (this, java.util.TreeMap.SubMapEntrySet, []); +this.subMap = map; +}, "java.util.TreeMap.SubMap"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.subMap.isEmpty(); +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +var startNode = this.subMap.firstEntry(); +if (this.subMap.hasEnd) { +var cmp = this.subMap.comparator(); +if (cmp == null) { +return new java.util.TreeMap.ComparableBoundedEntryIterator(this.subMap.backingMap, startNode, java.util.TreeMap.toComparable(this.subMap.endKey)); +}return new java.util.TreeMap.ComparatorBoundedEntryIterator(this.subMap.backingMap, startNode, this.subMap.endKey); +}return new java.util.TreeMap.UnboundedEntryIterator(this.subMap.backingMap, startNode); +}); +Clazz.overrideMethod(c$, "size", +function(){ +var size = 0; +var it = this.iterator(); +while (it.hasNext()) { +size++; +it.next(); +} +return size; +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +if (Clazz.instanceOf(object,"java.util.Map.Entry")) { +var entry = object; +var key = entry.getKey(); +if (this.subMap.isInRange(key)) { +var v1 = this.subMap.get(key); +var v2 = entry.getValue(); +return v1 == null ? v2 == null : v1.equals(v2); +}}return false; +}, "~O"); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.subMap = null; +Clazz.instantialize(this, arguments);}, java.util.TreeMap, "SubMapKeySet", java.util.AbstractSet, java.util.Set); +Clazz.makeConstructor(c$, +function(map){ +Clazz.superConstructor (this, java.util.TreeMap.SubMapKeySet, []); +this.subMap = map; +}, "java.util.TreeMap.SubMap"); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.subMap.containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.subMap.isEmpty(); +}); +Clazz.overrideMethod(c$, "size", +function(){ +var size = 0; +var it = this.iterator(); +while (it.hasNext()) { +size++; +it.next(); +} +return size; +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +var startNode = this.subMap.firstEntry(); +if (this.subMap.hasEnd) { +var cmp = this.subMap.comparator(); +if (cmp == null) { +return new java.util.TreeMap.ComparableBoundedKeyIterator(this.subMap.backingMap, startNode, java.util.TreeMap.toComparable(this.subMap.endKey)); +}return new java.util.TreeMap.ComparatorBoundedKeyIterator(this.subMap.backingMap, startNode, this.subMap.endKey); +}return new java.util.TreeMap.UnboundedKeyIterator(this.subMap.backingMap, startNode); +}); +/*eoif3*/})(); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.subMap = null; +Clazz.instantialize(this, arguments);}, java.util.TreeMap, "SubMapValuesCollection", java.util.AbstractCollection); +Clazz.makeConstructor(c$, +function(subMap){ +Clazz.superConstructor (this, java.util.TreeMap.SubMapValuesCollection, []); +this.subMap = subMap; +}, "java.util.TreeMap.SubMap"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.subMap.isEmpty(); +}); +Clazz.overrideMethod(c$, "iterator", +function(){ +var startNode = this.subMap.firstEntry(); +if (this.subMap.hasEnd) { +var cmp = this.subMap.comparator(); +if (cmp == null) { +return new java.util.TreeMap.ComparableBoundedValueIterator(this.subMap.backingMap, startNode, java.util.TreeMap.toComparable(this.subMap.endKey)); +}return new java.util.TreeMap.ComparatorBoundedValueIterator(this.subMap.backingMap, startNode, this.subMap.endKey); +}return new java.util.TreeMap.UnboundedValueIterator(this.subMap.backingMap, startNode); +}); +Clazz.overrideMethod(c$, "size", +function(){ +var cnt = 0; +for (var it = this.iterator(); it.hasNext(); ) { +it.next(); +cnt++; +} +return cnt; +}); +/*eoif3*/})(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/TreeSet.js b/config/plugins/visualizations/jmol/static/j2s/java/util/TreeSet.js new file mode 100755 index 000000000000..d5f5291e47a9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/TreeSet.js @@ -0,0 +1,120 @@ +Clazz.load(["java.util.AbstractSet", "$.SortedSet", "$.TreeMap"], "java.util.TreeSet", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.backingMap = null; +Clazz.instantialize(this, arguments);}, java.util, "TreeSet", java.util.AbstractSet, [java.util.SortedSet, Cloneable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(map){ +Clazz.superConstructor (this, java.util.TreeSet, []); +this.backingMap = map; +}, "java.util.SortedMap"); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, java.util.TreeSet, []); +this.backingMap = new java.util.TreeMap(); +}); +Clazz.makeConstructor(c$, +function(collection){ +this.construct (); +this.addAll(collection); +}, "java.util.Collection"); +Clazz.makeConstructor(c$, +function(comparator){ +Clazz.superConstructor (this, java.util.TreeSet, []); +this.backingMap = new java.util.TreeMap(comparator); +}, "java.util.Comparator"); +Clazz.makeConstructor(c$, +function(set){ +this.construct (set.comparator()); +var it = set.iterator(); +while (it.hasNext()) { +this.add(it.next()); +} +}, "java.util.SortedSet"); +Clazz.overrideMethod(c$, "add", +function(object){ +return this.backingMap.put(object, object) == null; +}, "~O"); +Clazz.overrideMethod(c$, "clear", +function(){ +this.backingMap.clear(); +}); +Clazz.defineMethod(c$, "clone", +function(){ +try { +var clone = Clazz.superCall(this, java.util.TreeSet, "clone", []); +if (Clazz.instanceOf(this.backingMap,"java.util.TreeMap")) { +clone.backingMap = (this.backingMap).clone(); +} else { +clone.backingMap = new java.util.TreeMap(this.backingMap); +}return clone; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "comparator", +function(){ +return this.backingMap.comparator(); +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.backingMap.containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "first", +function(){ +return this.backingMap.firstKey(); +}); +Clazz.overrideMethod(c$, "headSet", +function(end){ +var c = this.backingMap.comparator(); +if (c == null) { +(end).compareTo(end); +} else { +c.compare(end, end); +}return new java.util.TreeSet(this.backingMap.headMap(end)); +}, "~O"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.backingMap.isEmpty(); +}); +Clazz.defineMethod(c$, "iterator", +function(){ +return this.backingMap.keySet().iterator(); +}); +Clazz.overrideMethod(c$, "last", +function(){ +return this.backingMap.lastKey(); +}); +Clazz.overrideMethod(c$, "remove", +function(object){ +return this.backingMap.remove(object) != null; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.backingMap.size(); +}); +Clazz.overrideMethod(c$, "subSet", +function(start, end){ +var c = this.backingMap.comparator(); +if (c == null) { +if ((start).compareTo(end) <= 0) { +return new java.util.TreeSet(this.backingMap.subMap(start, end)); +}} else { +if (c.compare(start, end) <= 0) { +return new java.util.TreeSet(this.backingMap.subMap(start, end)); +}}throw new IllegalArgumentException(); +}, "~O,~O"); +Clazz.overrideMethod(c$, "tailSet", +function(start){ +var c = this.backingMap.comparator(); +if (c == null) { +(start).compareTo(start); +} else { +c.compare(start, start); +}return new java.util.TreeSet(this.backingMap.tailMap(start)); +}, "~O"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/Vector.js b/config/plugins/visualizations/jmol/static/j2s/java/util/Vector.js new file mode 100755 index 000000000000..312a732b37a8 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/Vector.js @@ -0,0 +1,424 @@ +Clazz.load(["java.util.AbstractList", "$.List", "$.RandomAccess"], "java.util.Vector", ["java.lang.reflect.Array", "java.util.Arrays", "$.Collections", "$.Enumeration"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.elementCount = 0; +this.elementData = null; +this.capacityIncrement = 0; +Clazz.instantialize(this, arguments);}, java.util, "Vector", java.util.AbstractList, [java.util.List, java.util.RandomAccess, Cloneable, java.io.Serializable]); +Clazz.makeConstructor(c$, +function(){ +this.construct (10, 0); +}); +Clazz.makeConstructor(c$, +function(capacity){ +this.construct (capacity, 0); +}, "~N"); +Clazz.makeConstructor(c$, +function(capacity, capacityIncrement){ +Clazz.superConstructor (this, java.util.Vector, []); +this.elementCount = 0; +try { +this.elementData = this.newElementArray(capacity); +} catch (e) { +if (Clazz.exceptionOf(e,"NegativeArraySizeException")){ +throw new IllegalArgumentException(); +} else { +throw e; +} +} +this.capacityIncrement = capacityIncrement; +}, "~N,~N"); +Clazz.makeConstructor(c$, +function(collection){ +this.construct (collection.size(), 0); +var it = collection.iterator(); +while (it.hasNext()) { +this.elementData[this.elementCount++] = it.next(); +} +}, "java.util.Collection"); +Clazz.defineMethod(c$, "newElementArray", +function(size){ +return new Array(size); +}, "~N"); +Clazz.defineMethod(c$, "add", +function(location, object){ +this.insertElementAt(object, location); +}, "~N,~O"); +Clazz.defineMethod(c$, "add", +function(object){ +this.addElement(object); +return true; +}, "~O"); +Clazz.defineMethod(c$, "addAll", +function(location, collection){ +if (0 <= location && location <= this.elementCount) { +var size = collection.size(); +if (size == 0) { +return false; +}var required = size - (this.elementData.length - this.elementCount); +if (required > 0) { +this.growBy(required); +}var count = this.elementCount - location; +if (count > 0) { +System.arraycopy(this.elementData, location, this.elementData, location + size, count); +}var it = collection.iterator(); +while (it.hasNext()) { +this.elementData[location++] = it.next(); +} +this.elementCount += size; +this.modCount++; +return true; +}throw new ArrayIndexOutOfBoundsException(location); +}, "~N,java.util.Collection"); +Clazz.defineMethod(c$, "addAll", +function(collection){ +return this.addAll(this.elementCount, collection); +}, "java.util.Collection"); +Clazz.defineMethod(c$, "addElement", +function(object){ +if (this.elementCount == this.elementData.length) { +this.growByOne(); +}this.elementData[this.elementCount++] = object; +this.modCount++; +}, "~O"); +Clazz.defineMethod(c$, "capacity", +function(){ +return this.elementData.length; +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.removeAllElements(); +}); +Clazz.defineMethod(c$, "clone", +function(){ +try { +var vector = Clazz.superCall(this, java.util.Vector, "clone", []); +vector.elementData = this.elementData.clone(); +return vector; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +return null; +} else { +throw e; +} +} +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.indexOf(object, 0) != -1; +}, "~O"); +Clazz.defineMethod(c$, "copyInto", +function(elements){ +System.arraycopy(this.elementData, 0, elements, 0, this.elementCount); +}, "~A"); +Clazz.defineMethod(c$, "elementAt", +function(location){ +if (location < this.elementCount) { +return this.elementData[location]; +}throw new ArrayIndexOutOfBoundsException(location); +}, "~N"); +Clazz.defineMethod(c$, "elements", +function(){ +return ((Clazz.isClassDefined("java.util.Vector$1") ? 0 : java.util.Vector.$Vector$1$ ()), Clazz.innerTypeInstance(java.util.Vector$1, this, null)); +}); +Clazz.defineMethod(c$, "ensureCapacity", +function(minimumCapacity){ +if (this.elementData.length < minimumCapacity) { +var next = (this.capacityIncrement <= 0 ? this.elementData.length : this.capacityIncrement) + this.elementData.length; +this.grow(minimumCapacity > next ? minimumCapacity : next); +}}, "~N"); +Clazz.overrideMethod(c$, "equals", +function(object){ +if (this === object) { +return true; +}if (Clazz.instanceOf(object,"java.util.List")) { +var list = object; +if (list.size() != this.size()) { +return false; +}var index = 0; +var it = list.iterator(); +while (it.hasNext()) { +var e1 = this.elementData[index++]; +var e2 = it.next(); +if (!(e1 == null ? e2 == null : e1.equals(e2))) { +return false; +}} +return true; +}return false; +}, "~O"); +Clazz.defineMethod(c$, "firstElement", +function(){ +if (this.elementCount > 0) { +return this.elementData[0]; +}throw new java.util.NoSuchElementException(); +}); +Clazz.overrideMethod(c$, "get", +function(location){ +return this.elementAt(location); +}, "~N"); +Clazz.defineMethod(c$, "grow", +function(newCapacity){ +var newData = this.newElementArray(newCapacity); +System.arraycopy(this.elementData, 0, newData, 0, this.elementCount); +this.elementData = newData; +}, "~N"); +Clazz.defineMethod(c$, "growByOne", +function(){ +var adding = 0; +if (this.capacityIncrement <= 0) { +if ((adding = this.elementData.length) == 0) { +adding = 1; +}} else { +adding = this.capacityIncrement; +}var newData = this.newElementArray(this.elementData.length + adding); +System.arraycopy(this.elementData, 0, newData, 0, this.elementCount); +this.elementData = newData; +}); +Clazz.defineMethod(c$, "growBy", +function(required){ +var adding = 0; +if (this.capacityIncrement <= 0) { +if ((adding = this.elementData.length) == 0) { +adding = required; +}while (adding < required) { +adding += adding; +} +} else { +adding = (Clazz.doubleToInt(required / this.capacityIncrement)) * this.capacityIncrement; +if (adding < required) { +adding += this.capacityIncrement; +}}var newData = this.newElementArray(this.elementData.length + adding); +System.arraycopy(this.elementData, 0, newData, 0, this.elementCount); +this.elementData = newData; +}, "~N"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +var result = 1; +for (var i = 0; i < this.elementCount; i++) { +result = (31 * result) + (this.elementData[i] == null ? 0 : this.elementData[i].hashCode()); +} +return result; +}); +Clazz.defineMethod(c$, "indexOf", +function(object){ +return this.indexOf(object, 0); +}, "~O"); +Clazz.defineMethod(c$, "indexOf", +function(object, location){ +if (object != null) { +for (var i = location; i < this.elementCount; i++) { +if (object.equals(this.elementData[i])) { +return i; +}} +} else { +for (var i = location; i < this.elementCount; i++) { +if (this.elementData[i] == null) { +return i; +}} +}return -1; +}, "~O,~N"); +Clazz.defineMethod(c$, "insertElementAt", +function(object, location){ +if (0 <= location && location <= this.elementCount) { +if (this.elementCount == this.elementData.length) { +this.growByOne(); +}var count = this.elementCount - location; +if (count > 0) { +System.arraycopy(this.elementData, location, this.elementData, location + 1, count); +}this.elementData[location] = object; +this.elementCount++; +this.modCount++; +} else { +throw new ArrayIndexOutOfBoundsException(location); +}}, "~O,~N"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.elementCount == 0; +}); +Clazz.defineMethod(c$, "lastElement", +function(){ +try { +return this.elementData[this.elementCount - 1]; +} catch (e) { +if (Clazz.exceptionOf(e,"IndexOutOfBoundsException")){ +throw new java.util.NoSuchElementException(); +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "lastIndexOf", +function(object){ +return this.lastIndexOf(object, this.elementCount - 1); +}, "~O"); +Clazz.defineMethod(c$, "lastIndexOf", +function(object, location){ +if (location < this.elementCount) { +if (object != null) { +for (var i = location; i >= 0; i--) { +if (object.equals(this.elementData[i])) { +return i; +}} +} else { +for (var i = location; i >= 0; i--) { +if (this.elementData[i] == null) { +return i; +}} +}return -1; +}throw new ArrayIndexOutOfBoundsException(location); +}, "~O,~N"); +Clazz.defineMethod(c$, "remove", +function(location){ +if (location < this.elementCount) { +var result = this.elementData[location]; +this.elementCount--; +var size = this.elementCount - location; +if (size > 0) { +System.arraycopy(this.elementData, location + 1, this.elementData, location, size); +}this.elementData[this.elementCount] = null; +this.modCount++; +return result; +}throw new ArrayIndexOutOfBoundsException(location); +}, "~N"); +Clazz.defineMethod(c$, "remove", +function(object){ +return this.removeElement(object); +}, "~O"); +Clazz.defineMethod(c$, "removeAllElements", +function(){ +java.util.Arrays.fill(this.elementData, 0, this.elementCount, null); +this.modCount++; +this.elementCount = 0; +}); +Clazz.defineMethod(c$, "removeElement", +function(object){ +var index; +if ((index = this.indexOf(object, 0)) == -1) { +return false; +}this.removeElementAt(index); +return true; +}, "~O"); +Clazz.defineMethod(c$, "removeElementAt", +function(location){ +if (0 <= location && location < this.elementCount) { +this.elementCount--; +var size = this.elementCount - location; +if (size > 0) { +System.arraycopy(this.elementData, location + 1, this.elementData, location, size); +}this.elementData[this.elementCount] = null; +this.modCount++; +} else { +throw new ArrayIndexOutOfBoundsException(location); +}}, "~N"); +Clazz.overrideMethod(c$, "removeRange", +function(start, end){ +if (start >= 0 && start <= end && end <= this.size()) { +if (start == end) { +return; +}if (end != this.elementCount) { +System.arraycopy(this.elementData, end, this.elementData, start, this.elementCount - end); +var newCount = this.elementCount - (end - start); +java.util.Arrays.fill(this.elementData, newCount, this.elementCount, null); +this.elementCount = newCount; +} else { +java.util.Arrays.fill(this.elementData, start, this.elementCount, null); +this.elementCount = start; +}this.modCount++; +} else { +throw new IndexOutOfBoundsException(); +}}, "~N,~N"); +Clazz.overrideMethod(c$, "set", +function(location, object){ +if (location < this.elementCount) { +var result = this.elementData[location]; +this.elementData[location] = object; +return result; +}throw new ArrayIndexOutOfBoundsException(location); +}, "~N,~O"); +Clazz.defineMethod(c$, "setElementAt", +function(object, location){ +if (location < this.elementCount) { +this.elementData[location] = object; +} else { +throw new ArrayIndexOutOfBoundsException(location); +}}, "~O,~N"); +Clazz.defineMethod(c$, "setSize", +function(length){ +if (length == this.elementCount) { +return; +}this.ensureCapacity(length); +if (this.elementCount > length) { +java.util.Arrays.fill(this.elementData, length, this.elementCount, null); +}this.elementCount = length; +this.modCount++; +}, "~N"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.elementCount; +}); +Clazz.overrideMethod(c$, "subList", +function(start, end){ +return new java.util.Collections.SynchronizedRandomAccessList(Clazz.superCall(this, java.util.Vector, "subList", [start, end]), this); +}, "~N,~N"); +Clazz.defineMethod(c$, "toArray", +function(){ +var result = new Array(this.elementCount); +System.arraycopy(this.elementData, 0, result, 0, this.elementCount); +return result; +}); +Clazz.defineMethod(c$, "toArray", +function(contents){ +if (this.elementCount > contents.length) { +var ct = contents.getClass().getComponentType(); +contents = java.lang.reflect.Array.newInstance(ct, this.elementCount); +}System.arraycopy(this.elementData, 0, contents, 0, this.elementCount); +if (this.elementCount < contents.length) { +contents[this.elementCount] = null; +}return contents; +}, "~A"); +Clazz.overrideMethod(c$, "toString", +function(){ +if (this.elementCount == 0) { +return "[]"; +}var length = this.elementCount - 1; +var buffer = ""; +buffer += ('['); +for (var i = 0; i < length; i++) { +if (this.elementData[i] === this) { +buffer += ("(this Collection)"); +} else { +buffer += (this.elementData[i]); +}buffer += (", "); +} +if (this.elementData[length] === this) { +buffer += ("(this Collection)"); +} else { +buffer += (this.elementData[length]); +}buffer += (']'); +return buffer; +}); +Clazz.defineMethod(c$, "trimToSize", +function(){ +if (this.elementData.length != this.elementCount) { +this.grow(this.elementCount); +}}); +c$.$Vector$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.pos = 0; +Clazz.instantialize(this, arguments);}, java.util, "Vector$1", null, java.util.Enumeration); +Clazz.overrideMethod(c$, "hasMoreElements", +function(){ +return this.pos < this.b$["java.util.Vector"].elementCount; +}); +Clazz.overrideMethod(c$, "nextElement", +function(){ +{ +if (this.pos < this.b$["java.util.Vector"].elementCount) { +return this.b$["java.util.Vector"].elementData[this.pos++]; +}}throw new java.util.NoSuchElementException(); +}); +/*eoif5*/})(); +}; +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/WeakHashMap.js b/config/plugins/visualizations/jmol/static/j2s/java/util/WeakHashMap.js new file mode 100755 index 000000000000..29c3085a4500 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/WeakHashMap.js @@ -0,0 +1,489 @@ +Clazz.load(["java.lang.ref.WeakReference", "java.util.AbstractMap", "$.Iterator", "$.Map"], "java.util.WeakHashMap", ["java.lang.ref.ReferenceQueue", "java.util.AbstractCollection", "$.AbstractSet", "$.Arrays"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.referenceQueue = null; +this.elementCount = 0; +this.elementData = null; +this.loadFactor = 0; +this.threshold = 0; +this.modCount = 0; +if (!Clazz.isClassDefined("java.util.WeakHashMap.HashIterator")) { +java.util.WeakHashMap.$WeakHashMap$HashIterator$ (); +} +Clazz.instantialize(this, arguments);}, java.util, "WeakHashMap", java.util.AbstractMap, java.util.Map); +Clazz.makeConstructor(c$, +function(){ +this.construct (16); +}); +Clazz.makeConstructor(c$, +function(capacity){ +Clazz.superConstructor (this, java.util.WeakHashMap, []); +if (capacity >= 0) { +this.elementCount = 0; +this.elementData = java.util.WeakHashMap.newEntryArray(capacity == 0 ? 1 : capacity); +this.loadFactor = 7500; +this.computeMaxSize(); +this.referenceQueue = new java.lang.ref.ReferenceQueue(); +} else { +throw new IllegalArgumentException(); +}}, "~N"); +Clazz.makeConstructor(c$, +function(capacity, loadFactor){ +Clazz.superConstructor (this, java.util.WeakHashMap, []); +if (capacity >= 0 && loadFactor > 0) { +this.elementCount = 0; +this.elementData = java.util.WeakHashMap.newEntryArray(capacity == 0 ? 1 : capacity); +this.loadFactor = Clazz.floatToInt(loadFactor * 10000); +this.computeMaxSize(); +this.referenceQueue = new java.lang.ref.ReferenceQueue(); +} else { +throw new IllegalArgumentException(); +}}, "~N,~N"); +Clazz.makeConstructor(c$, +function(map){ +this.construct (map.size() < 6 ? 11 : map.size() * 2); +this.putAllImpl(map); +}, "java.util.Map"); +c$.newEntryArray = Clazz.defineMethod(c$, "newEntryArray", +function(size){ +return new Array(size); +}, "~N"); +Clazz.overrideMethod(c$, "clear", +function(){ +if (this.elementCount > 0) { +this.elementCount = 0; +java.util.Arrays.fill(this.elementData, null); +this.modCount++; +while (this.referenceQueue.poll() != null) { +} +}}); +Clazz.defineMethod(c$, "computeMaxSize", +function(){ +this.threshold = (Clazz.doubleToInt(this.elementData.length * this.loadFactor / 10000)); +}); +Clazz.overrideMethod(c$, "containsKey", +function(key){ +return this.getEntry(key) != null; +}, "~O"); +Clazz.overrideMethod(c$, "entrySet", +function(){ +this.poll(); +return ((Clazz.isClassDefined("java.util.WeakHashMap$1") ? 0 : java.util.WeakHashMap.$WeakHashMap$1$ ()), Clazz.innerTypeInstance(java.util.WeakHashMap$1, this, null)); +}); +Clazz.overrideMethod(c$, "keySet", +function(){ +this.poll(); +if (this.$keySet == null) { +this.$keySet = ((Clazz.isClassDefined("java.util.WeakHashMap$2") ? 0 : java.util.WeakHashMap.$WeakHashMap$2$ ()), Clazz.innerTypeInstance(java.util.WeakHashMap$2, this, null)); +}return this.$keySet; +}); +Clazz.overrideMethod(c$, "values", +function(){ +this.poll(); +if (this.$values == null) { +this.$values = ((Clazz.isClassDefined("java.util.WeakHashMap$3") ? 0 : java.util.WeakHashMap.$WeakHashMap$3$ ()), Clazz.innerTypeInstance(java.util.WeakHashMap$3, this, null)); +}return this.$values; +}); +Clazz.overrideMethod(c$, "get", +function(key){ +this.poll(); +if (key != null) { +var index = (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +var entry = this.elementData[index]; +while (entry != null) { +if (key.equals(entry.get())) { +return entry.value; +}entry = entry.$next; +} +return null; +}var entry = this.elementData[0]; +while (entry != null) { +if (entry.isNull) { +return entry.value; +}entry = entry.$next; +} +return null; +}, "~O"); +Clazz.defineMethod(c$, "getEntry", +function(key){ +this.poll(); +if (key != null) { +var index = (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +var entry = this.elementData[index]; +while (entry != null) { +if (key.equals(entry.get())) { +return entry; +}entry = entry.$next; +} +return null; +}var entry = this.elementData[0]; +while (entry != null) { +if (entry.isNull) { +return entry; +}entry = entry.$next; +} +return null; +}, "~O"); +Clazz.overrideMethod(c$, "containsValue", +function(value){ +this.poll(); +if (value != null) { +for (var i = this.elementData.length; --i >= 0; ) { +var entry = this.elementData[i]; +while (entry != null) { +var key = entry.get(); +if ((key != null || entry.isNull) && value.equals(entry.value)) { +return true; +}entry = entry.$next; +} +} +} else { +for (var i = this.elementData.length; --i >= 0; ) { +var entry = this.elementData[i]; +while (entry != null) { +var key = entry.get(); +if ((key != null || entry.isNull) && entry.value == null) { +return true; +}entry = entry.$next; +} +} +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "isEmpty", +function(){ +return this.size() == 0; +}); +Clazz.defineMethod(c$, "poll", +function(){ +var toRemove; +while ((toRemove = this.referenceQueue.poll()) != null) { +this.removeEntry(toRemove); +} +}); +Clazz.defineMethod(c$, "removeEntry", +function(toRemove){ +var entry; +var last = null; +var index = (toRemove.hash & 0x7FFFFFFF) % this.elementData.length; +entry = this.elementData[index]; +while (entry != null) { +if (toRemove === entry) { +this.modCount++; +if (last == null) { +this.elementData[index] = entry.$next; +} else { +last.$next = entry.$next; +}this.elementCount--; +break; +}last = entry; +entry = entry.$next; +} +}, "java.util.WeakHashMap.Entry"); +Clazz.overrideMethod(c$, "put", +function(key, value){ +this.poll(); +var index = 0; +var entry; +if (key != null) { +index = (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +entry = this.elementData[index]; +while (entry != null && !key.equals(entry.get())) { +entry = entry.$next; +} +} else { +entry = this.elementData[0]; +while (entry != null && !entry.isNull) { +entry = entry.$next; +} +}if (entry == null) { +this.modCount++; +if (++this.elementCount > this.threshold) { +this.rehash(); +index = key == null ? 0 : (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +}entry = new java.util.WeakHashMap.Entry(key, value, this.referenceQueue); +entry.$next = this.elementData[index]; +this.elementData[index] = entry; +return null; +}var result = entry.value; +entry.value = value; +return result; +}, "~O,~O"); +Clazz.defineMethod(c$, "rehash", +function(){ +var length = this.elementData.length << 1; +if (length == 0) { +length = 1; +}var newData = java.util.WeakHashMap.newEntryArray(length); +for (var i = 0; i < this.elementData.length; i++) { +var entry = this.elementData[i]; +while (entry != null) { +var index = entry.isNull ? 0 : (entry.hash & 0x7FFFFFFF) % length; +var next = entry.$next; +entry.$next = newData[index]; +newData[index] = entry; +entry = next; +} +} +this.elementData = newData; +this.computeMaxSize(); +}); +Clazz.overrideMethod(c$, "putAll", +function(map){ +this.putAllImpl(map); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "remove", +function(key){ +this.poll(); +var index = 0; +var entry; +var last = null; +if (key != null) { +index = (key.hashCode() & 0x7FFFFFFF) % this.elementData.length; +entry = this.elementData[index]; +while (entry != null && !key.equals(entry.get())) { +last = entry; +entry = entry.$next; +} +} else { +entry = this.elementData[0]; +while (entry != null && !entry.isNull) { +last = entry; +entry = entry.$next; +} +}if (entry != null) { +this.modCount++; +if (last == null) { +this.elementData[index] = entry.$next; +} else { +last.$next = entry.$next; +}this.elementCount--; +return entry.value; +}return null; +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +this.poll(); +return this.elementCount; +}); +Clazz.defineMethod(c$, "putAllImpl", +function(map){ +if (map.entrySet() != null) { +Clazz.superCall(this, java.util.WeakHashMap, "putAll", [map]); +}}, "java.util.Map"); +c$.$WeakHashMap$HashIterator$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.position = 0; +this.expectedModCount = 0; +this.currentEntry = null; +this.nextEntry = null; +this.nextKey = null; +this.type = null; +Clazz.instantialize(this, arguments);}, java.util.WeakHashMap, "HashIterator", null, java.util.Iterator); +Clazz.makeConstructor(c$, +function(type){ +this.type = type; +this.expectedModCount = this.b$["java.util.WeakHashMap"].modCount; +}, "java.util.WeakHashMap.Entry.Type"); +Clazz.overrideMethod(c$, "hasNext", +function(){ +if (this.nextEntry != null) { +return true; +}while (true) { +if (this.nextEntry == null) { +while (this.position < this.b$["java.util.WeakHashMap"].elementData.length) { +if ((this.nextEntry = this.b$["java.util.WeakHashMap"].elementData[this.position++]) != null) { +break; +}} +if (this.nextEntry == null) { +return false; +}}this.nextKey = this.nextEntry.get(); +if (this.nextKey != null || this.nextEntry.isNull) { +return true; +}this.nextEntry = this.nextEntry.$next; +} +}); +Clazz.overrideMethod(c$, "next", +function(){ +if (this.expectedModCount == this.b$["java.util.WeakHashMap"].modCount) { +if (this.hasNext()) { +this.currentEntry = this.nextEntry; +this.nextEntry = this.currentEntry.$next; +var result = this.type.get(this.currentEntry); +this.nextKey = null; +return result; +}throw new java.util.NoSuchElementException(); +}throw new java.util.ConcurrentModificationException(); +}); +Clazz.overrideMethod(c$, "remove", +function(){ +if (this.expectedModCount == this.b$["java.util.WeakHashMap"].modCount) { +if (this.currentEntry != null) { +this.b$["java.util.WeakHashMap"].removeEntry(this.currentEntry); +this.currentEntry = null; +this.expectedModCount++; +} else { +throw new IllegalStateException(); +}} else { +throw new java.util.ConcurrentModificationException(); +}}); +/*eoif4*/})(); +}; +c$.$WeakHashMap$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "WeakHashMap$1", java.util.AbstractSet); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.WeakHashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.WeakHashMap"].clear(); +}); +Clazz.overrideMethod(c$, "remove", +function(object){ +if (this.contains(object)) { +this.b$["java.util.WeakHashMap"].remove((object).getKey()); +return true; +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "contains", +function(object){ +if (Clazz.instanceOf(object,"java.util.Map.Entry")) { +var entry = this.b$["java.util.WeakHashMap"].getEntry((object).getKey()); +if (entry != null) { +var key = entry.get(); +if (key != null || entry.isNull) { +return object.equals(entry); +}}}return false; +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator, this, null, ((Clazz.isClassDefined("java.util.WeakHashMap$1$1") ? 0 : java.util.WeakHashMap.$WeakHashMap$1$1$ ()), Clazz.innerTypeInstance(java.util.WeakHashMap$1$1, this, null))); +}); +/*eoif5*/})(); +}; +c$.$WeakHashMap$1$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "WeakHashMap$1$1", null, java.util.WeakHashMap.Entry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry; +}, "java.util.Map.Entry"); +/*eoif5*/})(); +}; +c$.$WeakHashMap$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "WeakHashMap$2", java.util.AbstractSet); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.WeakHashMap"].containsKey(object); +}, "~O"); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.WeakHashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.WeakHashMap"].clear(); +}); +Clazz.overrideMethod(c$, "remove", +function(key){ +if (this.b$["java.util.WeakHashMap"].containsKey(key)) { +this.b$["java.util.WeakHashMap"].remove(key); +return true; +}return false; +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator, this, null, ((Clazz.isClassDefined("java.util.WeakHashMap$2$1") ? 0 : java.util.WeakHashMap.$WeakHashMap$2$1$ ()), Clazz.innerTypeInstance(java.util.WeakHashMap$2$1, this, null))); +}); +/*eoif5*/})(); +}; +c$.$WeakHashMap$2$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "WeakHashMap$2$1", null, java.util.WeakHashMap.Entry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry.getKey(); +}, "java.util.Map.Entry"); +/*eoif5*/})(); +}; +c$.$WeakHashMap$3$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "WeakHashMap$3", java.util.AbstractCollection); +Clazz.overrideMethod(c$, "size", +function(){ +return this.b$["java.util.WeakHashMap"].size(); +}); +Clazz.overrideMethod(c$, "clear", +function(){ +this.b$["java.util.WeakHashMap"].clear(); +}); +Clazz.overrideMethod(c$, "contains", +function(object){ +return this.b$["java.util.WeakHashMap"].containsValue(object); +}, "~O"); +Clazz.overrideMethod(c$, "iterator", +function(){ +return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator, this, null, ((Clazz.isClassDefined("java.util.WeakHashMap$3$1") ? 0 : java.util.WeakHashMap.$WeakHashMap$3$1$ ()), Clazz.innerTypeInstance(java.util.WeakHashMap$3$1, this, null))); +}); +/*eoif5*/})(); +}; +c$.$WeakHashMap$3$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(java.util, "WeakHashMap$3$1", null, java.util.WeakHashMap.Entry.Type); +Clazz.overrideMethod(c$, "get", +function(entry){ +return entry.getValue(); +}, "java.util.Map.Entry"); +/*eoif5*/})(); +}; +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.hash = 0; +this.isNull = false; +this.value = null; +this.$next = null; +Clazz.instantialize(this, arguments);}, java.util.WeakHashMap, "Entry", java.lang.ref.WeakReference, java.util.Map.Entry); +Clazz.makeConstructor(c$, +function(key, object, queue){ +Clazz.superConstructor(this, java.util.WeakHashMap.Entry, [key, queue]); +this.isNull = key == null; +this.hash = this.isNull ? 0 : key.hashCode(); +this.value = object; +}, "~O,~O,java.lang.ref.ReferenceQueue"); +Clazz.overrideMethod(c$, "getKey", +function(){ +return Clazz.superCall(this, java.util.WeakHashMap.Entry, "get", []); +}); +Clazz.overrideMethod(c$, "getValue", +function(){ +return this.value; +}); +Clazz.overrideMethod(c$, "setValue", +function(object){ +var result = this.value; +this.value = object; +return result; +}, "~O"); +Clazz.overrideMethod(c$, "equals", +function(other){ +if (!(Clazz.instanceOf(other,"java.util.Map.Entry"))) { +return false; +}var entry = other; +var key = Clazz.superCall(this, java.util.WeakHashMap.Entry, "get", []); +return (key == null ? key === entry.getKey() : key.equals(entry.getKey())) && (this.value == null ? this.value === entry.getValue() : this.value.equals(entry.getValue())); +}, "~O"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return this.hash + (this.value == null ? 0 : this.value.hashCode()); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return Clazz.superCall(this, java.util.WeakHashMap.Entry, "get", []) + "=" + this.value; +}); +Clazz.declareInterface(java.util.WeakHashMap.Entry, "Type"); +/*eoif3*/})(); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/CRC32.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/CRC32.js new file mode 100755 index 000000000000..ea15bec16094 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/CRC32.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["com.jcraft.jzlib.CRC32"], "java.util.zip.CRC32", null, function(){ +var c$ = Clazz.declareType(java.util.zip, "CRC32", com.jcraft.jzlib.CRC32); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/CheckedInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/CheckedInputStream.js new file mode 100755 index 000000000000..d83581126ad5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/CheckedInputStream.js @@ -0,0 +1,44 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["java.io.FilterInputStream"], "java.util.zip.CheckedInputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.cksum = null; +Clazz.instantialize(this, arguments);}, java.util.zip, "CheckedInputStream", java.io.FilterInputStream); +Clazz.defineMethod(c$, "set", +function(cksum){ +this.$in = this.$in; +this.cksum = cksum; +return this; +}, "com.jcraft.jzlib.Checksum"); +Clazz.overrideMethod(c$, "readByteAsInt", +function(){ +var b = this.$in.readByteAsInt(); +if (b != -1) { +this.cksum.updateByteAsInt(b); +}return b; +}); +Clazz.defineMethod(c$, "read", +function(buf, off, len){ +len = this.$in.read(buf, off, len); +if (len != -1) { +this.cksum.update(buf, off, len); +}return len; +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "skip", +function(n){ +var buf = Clazz.newByteArray (512, 0); +var total = 0; +while (total < n) { +var len = n - total; +len = this.read(buf, 0, len < buf.length ? len : buf.length); +if (len == -1) { +return total; +}total += len; +} +return total; +}, "~N"); +Clazz.defineMethod(c$, "getChecksum", +function(){ +return this.cksum; +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/Deflater.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/Deflater.js new file mode 100755 index 000000000000..da62c6137c8b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/Deflater.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["com.jcraft.jzlib.Deflater"], "java.util.zip.Deflater", null, function(){ +var c$ = Clazz.declareType(java.util.zip, "Deflater", com.jcraft.jzlib.Deflater); +Clazz.makeConstructor(c$, +function(compressionLevel){ +if (compressionLevel != 2147483647) this.init(compressionLevel, 0, false); +}, "~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/DeflaterOutputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/DeflaterOutputStream.js new file mode 100755 index 000000000000..fa2fe3603890 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/DeflaterOutputStream.js @@ -0,0 +1,18 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["com.jcraft.jzlib.DeflaterOutputStream"], "java.util.zip.DeflaterOutputStream", null, function(){ +var c$ = Clazz.declareType(java.util.zip, "DeflaterOutputStream", com.jcraft.jzlib.DeflaterOutputStream); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, java.util.zip.DeflaterOutputStream, []); +}); +Clazz.makeConstructor(c$, +function(bos, deflater){ +Clazz.superConstructor (this, java.util.zip.DeflaterOutputStream, []); +this.setDOS(bos, deflater); +}, "java.io.ByteArrayOutputStream,java.util.zip.Deflater"); +Clazz.defineMethod(c$, "setDOS", +function(out, deflater){ +this.jzSetDOS(out, deflater, 0, true); +}, "java.io.OutputStream,java.util.zip.Deflater"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/GZIPInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/GZIPInputStream.js new file mode 100755 index 000000000000..8fccc95ac93a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/GZIPInputStream.js @@ -0,0 +1,102 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["java.util.zip.InflaterInputStream", "$.CRC32"], "java.util.zip.GZIPInputStream", ["java.util.zip.CheckedInputStream", "$.Inflater"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.crc = null; +this.eos = false; +this.$closed = false; +this.tmpbuf = null; +Clazz.instantialize(this, arguments);}, java.util.zip, "GZIPInputStream", java.util.zip.InflaterInputStream); +Clazz.prepareFields (c$, function(){ +this.crc = new java.util.zip.CRC32(); +this.tmpbuf = Clazz.newByteArray (128, 0); +}); +Clazz.makeConstructor(c$, +function($in, size){ +Clazz.superConstructor(this, java.util.zip.GZIPInputStream, [$in, new java.util.zip.Inflater().init(0, true), size]); +this.readHeader($in); +}, "java.io.InputStream,~N"); +Clazz.defineMethod(c$, "ensureOpen", +function(){ +if (this.$closed) { +throw new java.io.IOException("Stream closed"); +}}); +Clazz.defineMethod(c$, "read", +function(buf, off, len){ +this.ensureOpen(); +if (this.eos) { +return -1; +}var n = this.readInf(buf, off, len); +if (n == -1) { +if (this.readTrailer()) this.eos = true; + else return this.read(buf, off, len); +} else { +this.crc.update(buf, off, n); +}return n; +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "close", +function(){ +if (!this.$closed) { +Clazz.superCall(this, java.util.zip.GZIPInputStream, "close", []); +this.eos = true; +this.$closed = true; +}}); +Clazz.defineMethod(c$, "readHeader", +function(this_in){ +var $in = new java.util.zip.CheckedInputStream(this_in).set(this.crc); +this.crc.reset(); +if (this.readUShort($in) != 35615) { +throw new java.util.zip.ZipException("Not in GZIP format"); +}if (this.readUByte($in) != 8) { +throw new java.util.zip.ZipException("Unsupported compression method"); +}var flg = this.readUByte($in); +this.skipBytes($in, 6); +var n = 10; +if ((flg & 4) == 4) { +var m = this.readUShort($in); +this.skipBytes($in, m); +n += m + 2; +}if ((flg & 8) == 8) { +do { +n++; +} while (this.readUByte($in) != 0); +}if ((flg & 16) == 16) { +do { +n++; +} while (this.readUByte($in) != 0); +}if ((flg & 2) == 2) { +var v = this.crc.getValue() & 0xffff; +if (this.readUShort($in) != v) { +throw new java.util.zip.ZipException("Corrupt GZIP header"); +}n += 2; +}this.crc.reset(); +return n; +}, "java.io.InputStream"); +Clazz.defineMethod(c$, "readTrailer", +function(){ +return true; +}); +Clazz.defineMethod(c$, "readUShort", +function($in){ +var b = this.readUByte($in); +return (this.readUByte($in) << 8) | b; +}, "java.io.InputStream"); +Clazz.defineMethod(c$, "readUByte", +function($in){ +var b = $in.readByteAsInt(); +if (b == -1) { +throw new java.io.EOFException(); +}if (b < -1 || b > 255) { +throw new java.io.IOException(this.$in.getClass().getName() + ".read() returned value out of range -1..255: " + b); +}return b; +}, "java.io.InputStream"); +Clazz.defineMethod(c$, "skipBytes", +function($in, n){ +while (n > 0) { +var len = $in.read(this.tmpbuf, 0, n < this.tmpbuf.length ? n : this.tmpbuf.length); +if (len == -1) { +throw new java.io.EOFException(); +}n -= len; +} +}, "java.io.InputStream,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/Inflater.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/Inflater.js new file mode 100755 index 000000000000..99373564c48b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/Inflater.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["com.jcraft.jzlib.Inflater"], "java.util.zip.Inflater", null, function(){ +var c$ = Clazz.declareType(java.util.zip, "Inflater", com.jcraft.jzlib.Inflater); +Clazz.defineMethod(c$, "initialize", +function(nowrap){ +return this.init(0, nowrap); +}, "~B"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/InflaterInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/InflaterInputStream.js new file mode 100755 index 000000000000..dcbb178c299b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/InflaterInputStream.js @@ -0,0 +1,12 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["com.jcraft.jzlib.InflaterInputStream"], "java.util.zip.InflaterInputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.inf = null; +Clazz.instantialize(this, arguments);}, java.util.zip, "InflaterInputStream", com.jcraft.jzlib.InflaterInputStream); +Clazz.makeConstructor(c$, +function($in, inflater, size){ +Clazz.superConstructor(this, java.util.zip.InflaterInputStream, [$in, inflater, size, true]); +this.inf = inflater; +}, "java.io.InputStream,java.util.zip.Inflater,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipConstants.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipConstants.js new file mode 100755 index 000000000000..381c4b9216f7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipConstants.js @@ -0,0 +1,9 @@ +Clazz.declarePackage("java.util.zip"); +(function(){ +var c$ = Clazz.declareInterface(java.util.zip, "ZipConstants"); +c$.LOCSIG = 0x04034b50; +c$.EXTSIG = 0x08074b50; +c$.CENSIG = 0x02014b50; +c$.ENDSIG = 0x06054b50; +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipConstants64.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipConstants64.js new file mode 100755 index 000000000000..0a6a37b02d72 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipConstants64.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("java.util.zip"); +(function(){ +var c$ = Clazz.declareType(java.util.zip, "ZipConstants64", null); +})(); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipEntry.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipEntry.js new file mode 100755 index 000000000000..de67dd43e494 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipEntry.js @@ -0,0 +1,133 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["java.util.zip.ZipConstants"], "java.util.zip.ZipEntry", ["java.util.Date"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.offset = 0; +this.name = null; +this.time = -1; +this.crc = -1; +this.size = -1; +this.csize = -1; +this.method = -1; +this.flag = 0; +this.extra = null; +this.comment = null; +Clazz.instantialize(this, arguments);}, java.util.zip, "ZipEntry", null, [java.util.zip.ZipConstants, Cloneable]); +Clazz.makeConstructor(c$, +function(name){ +if (name == null) { +throw new NullPointerException(); +}if (name.length > 0xFFFF) { +throw new IllegalArgumentException("entry name too long"); +}this.name = name; +}, "~S"); +Clazz.defineMethod(c$, "getName", +function(){ +return this.name; +}); +Clazz.defineMethod(c$, "setTime", +function(time){ +this.time = java.util.zip.ZipEntry.javaToDosTime(time); +}, "~N"); +Clazz.defineMethod(c$, "getTime", +function(){ +return this.time != -1 ? java.util.zip.ZipEntry.dosToJavaTime(this.time) : -1; +}); +Clazz.defineMethod(c$, "setSize", +function(size){ +if (size < 0) { +throw new IllegalArgumentException("invalid entry size"); +}this.size = size; +}, "~N"); +Clazz.defineMethod(c$, "getSize", +function(){ +return this.size; +}); +Clazz.defineMethod(c$, "getCompressedSize", +function(){ +return this.csize; +}); +Clazz.defineMethod(c$, "setCompressedSize", +function(csize){ +this.csize = csize; +}, "~N"); +Clazz.defineMethod(c$, "setCrc", +function(crc){ +if (crc < 0 || crc > 0xFFFFFFFF) { +throw new IllegalArgumentException("invalid entry crc-32"); +}this.crc = crc; +}, "~N"); +Clazz.defineMethod(c$, "getCrc", +function(){ +return this.crc; +}); +Clazz.defineMethod(c$, "setMethod", +function(method){ +if (method != 0 && method != 8) { +throw new IllegalArgumentException("invalid compression method"); +}this.method = method; +}, "~N"); +Clazz.defineMethod(c$, "getMethod", +function(){ +return this.method; +}); +Clazz.defineMethod(c$, "setExtra", +function(extra){ +if (extra != null && extra.length > 0xFFFF) { +throw new IllegalArgumentException("invalid extra field length"); +}this.extra = extra; +}, "~A"); +Clazz.defineMethod(c$, "getExtra", +function(){ +return this.extra; +}); +Clazz.defineMethod(c$, "setComment", +function(comment){ +this.comment = comment; +}, "~S"); +Clazz.defineMethod(c$, "getComment", +function(){ +return this.comment; +}); +Clazz.defineMethod(c$, "isDirectory", +function(){ +return this.name.endsWith("/"); +}); +Clazz.overrideMethod(c$, "toString", +function(){ +return this.getName(); +}); +c$.dosToJavaTime = Clazz.defineMethod(c$, "dosToJavaTime", +function(dtime){ +var d = new java.util.Date((((dtime >> 25) & 0x7f) + 80), (((dtime >> 21) & 0x0f) - 1), ((dtime >> 16) & 0x1f), ((dtime >> 11) & 0x1f), ((dtime >> 5) & 0x3f), ((dtime << 1) & 0x3e)); +return d.getTime(); +}, "~N"); +c$.javaToDosTime = Clazz.defineMethod(c$, "javaToDosTime", +function(time){ +var d = new java.util.Date(time); +var year = d.getYear() + 1900; +if (year < 1980) { +return 2162688; +}return (year - 1980) << 25 | (d.getMonth() + 1) << 21 | d.getDate() << 16 | d.getHours() << 11 | d.getMinutes() << 5 | d.getSeconds() >> 1; +}, "~N"); +Clazz.overrideMethod(c$, "hashCode", +function(){ +return this.name.hashCode(); +}); +Clazz.defineMethod(c$, "clone", +function(){ +try { +var e = Clazz.superCall(this, java.util.zip.ZipEntry, "clone", []); +if (this.extra != null) { +e.extra = Clazz.newByteArray (this.extra.length, 0); +System.arraycopy(this.extra, 0, e.extra, 0, this.extra.length); +}return e; +} catch (e) { +if (Clazz.exceptionOf(e,"CloneNotSupportedException")){ +throw new InternalError(); +} else { +throw e; +} +} +}); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipException.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipException.js new file mode 100755 index 000000000000..68300ca90bdf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipException.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["java.io.IOException"], "java.util.zip.ZipException", null, function(){ +var c$ = Clazz.declareType(java.util.zip, "ZipException", java.io.IOException); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipInputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipInputStream.js new file mode 100755 index 000000000000..6f80d80a5490 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipInputStream.js @@ -0,0 +1,268 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["java.util.zip.InflaterInputStream", "$.ZipConstants", "$.CRC32"], "java.util.zip.ZipInputStream", ["java.io.PushbackInputStream", "java.util.zip.Inflater", "$.ZipEntry"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.entry = null; +this.flag = 0; +this.crc = null; +this.remaining = 0; +this.tmpbuf = null; +this.$closed = false; +this.entryEOF = false; +this.zc = null; +this.byteTest = null; +this.$b = null; +Clazz.instantialize(this, arguments);}, java.util.zip, "ZipInputStream", java.util.zip.InflaterInputStream, java.util.zip.ZipConstants); +Clazz.prepareFields (c$, function(){ +this.crc = new java.util.zip.CRC32(); +this.tmpbuf = Clazz.newByteArray (512, 0); +this.byteTest = Clazz.newByteArray(-1, [0x20]); +this.$b = Clazz.newByteArray (256, 0); +}); +Clazz.makeConstructor(c$, +function($in){ +Clazz.superConstructor(this, java.util.zip.ZipInputStream, [ new java.io.PushbackInputStream($in, 1024), java.util.zip.ZipInputStream.newInflater(), 512]); +var charset = "UTF-8"; +try { + String.instantialize(this.byteTest, charset); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.UnsupportedEncodingException")){ +throw new NullPointerException("charset is invalid"); +} else { +throw e; +} +} +this.zc = charset; +}, "java.io.InputStream"); +Clazz.defineMethod(c$, "ensureOpen", +function(){ +if (this.$closed) { +throw new java.io.IOException("Stream closed"); +}}); +c$.newInflater = Clazz.defineMethod(c$, "newInflater", +function(){ +return new java.util.zip.Inflater().init(0, true); +}); +Clazz.defineMethod(c$, "getNextEntry", +function(){ +this.ensureOpen(); +if (this.entry != null) { +this.closeEntry(); +}this.crc.reset(); +this.inflater = this.inf = java.util.zip.ZipInputStream.newInflater(); +if ((this.entry = this.readLOC()) == null) { +return null; +}if (this.entry.method == 0) { +this.remaining = this.entry.size; +}this.entryEOF = false; +return this.entry; +}); +Clazz.defineMethod(c$, "closeEntry", +function(){ +this.ensureOpen(); +while (this.read(this.tmpbuf, 0, this.tmpbuf.length) != -1) { +} +this.entryEOF = true; +}); +Clazz.overrideMethod(c$, "available", +function(){ +this.ensureOpen(); +return (this.entryEOF ? 0 : 1); +}); +Clazz.defineMethod(c$, "read", +function(b, off, len){ +this.ensureOpen(); +if (off < 0 || len < 0 || off > b.length - len) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return 0; +}if (this.entry == null) { +return -1; +}switch (this.entry.method) { +case 8: +len = this.readInf(b, off, len); +if (len == -1) { +this.readEnd(this.entry); +this.entryEOF = true; +this.entry = null; +} else { +this.crc.update(b, off, len); +}return len; +case 0: +if (this.remaining <= 0) { +this.entryEOF = true; +this.entry = null; +return -1; +}if (len > this.remaining) { +len = this.remaining; +}len = this.$in.read(b, off, len); +if (len == -1) { +throw new java.util.zip.ZipException("unexpected EOF"); +}this.crc.update(b, off, len); +this.remaining -= len; +if (this.remaining == 0 && this.entry.crc != this.crc.getValue()) { +throw new java.util.zip.ZipException("invalid entry CRC (expected 0x" + Long.toHexString(this.entry.crc) + " but got 0x" + Long.toHexString(this.crc.getValue()) + ")"); +}return len; +default: +throw new java.util.zip.ZipException("invalid compression method"); +} +}, "~A,~N,~N"); +Clazz.overrideMethod(c$, "skip", +function(n){ +if (n < 0) { +throw new IllegalArgumentException("negative skip length"); +}this.ensureOpen(); +var max = Math.min(n, 2147483647); +var total = 0; +while (total < max) { +var len = max - total; +if (len > this.tmpbuf.length) { +len = this.tmpbuf.length; +}len = this.read(this.tmpbuf, 0, len); +if (len == -1) { +this.entryEOF = true; +break; +}total += len; +} +return total; +}, "~N"); +Clazz.defineMethod(c$, "close", +function(){ +if (!this.$closed) { +Clazz.superCall(this, java.util.zip.ZipInputStream, "close", []); +this.$closed = true; +}}); +Clazz.defineMethod(c$, "readLOC", +function(){ +try { +this.readFully(this.tmpbuf, 0, 30); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.EOFException")){ +return null; +} else { +throw e; +} +} +if (java.util.zip.ZipInputStream.get32(this.tmpbuf, 0) != 67324752) { +return null; +}this.flag = java.util.zip.ZipInputStream.get16(this.tmpbuf, 6); +var len = java.util.zip.ZipInputStream.get16(this.tmpbuf, 26); +var blen = this.$b.length; +if (len > blen) { +do blen = blen * 2; + while (len > blen); +this.$b = Clazz.newByteArray (blen, 0); +}this.readFully(this.$b, 0, len); +var e = this.createZipEntry(((this.flag & 2048) != 0) ? this.toStringUTF8(this.$b, len) : this.toStringb2(this.$b, len)); +if ((this.flag & 1) == 1) { +throw new java.util.zip.ZipException("encrypted ZIP entry not supported"); +}e.method = java.util.zip.ZipInputStream.get16(this.tmpbuf, 8); +e.time = java.util.zip.ZipInputStream.get32(this.tmpbuf, 10); +if ((this.flag & 8) == 8) { +if (e.method != 8) { +throw new java.util.zip.ZipException("only DEFLATED entries can have EXT descriptor"); +}} else { +e.crc = java.util.zip.ZipInputStream.get32(this.tmpbuf, 14); +e.csize = java.util.zip.ZipInputStream.get32(this.tmpbuf, 18); +e.size = java.util.zip.ZipInputStream.get32(this.tmpbuf, 22); +}len = java.util.zip.ZipInputStream.get16(this.tmpbuf, 28); +if (len > 0) { +var bb = Clazz.newByteArray (len, 0); +this.readFully(bb, 0, len); +e.setExtra(bb); +if (e.csize == 4294967295 || e.size == 4294967295) { +var off = 0; +while (off + 4 < len) { +var sz = java.util.zip.ZipInputStream.get16(bb, off + 2); +if (java.util.zip.ZipInputStream.get16(bb, off) == 1) { +off += 4; +if (sz < 16 || (off + sz) > len) { +return e; +}e.size = java.util.zip.ZipInputStream.get64(bb, off); +e.csize = java.util.zip.ZipInputStream.get64(bb, off + 8); +break; +}off += (sz + 4); +} +}}return e; +}); +Clazz.defineMethod(c$, "toStringUTF8", +function(b2, len){ +try { +return String.instantialize(b2, 0, len, this.zc); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.UnsupportedEncodingException")){ +return this.toStringb2(b2, len); +} else { +throw e; +} +} +}, "~A,~N"); +Clazz.defineMethod(c$, "toStringb2", +function(b2, len){ +return String.instantialize(b2, 0, len); +}, "~A,~N"); +Clazz.defineMethod(c$, "createZipEntry", +function(name){ +return new java.util.zip.ZipEntry(name); +}, "~S"); +Clazz.defineMethod(c$, "readEnd", +function(e){ +var n = this.inf.getAvailIn(); +if (n > 0) { +(this.$in).unread(this.buf, this.len - n, n); +this.eof = false; +}if ((this.flag & 8) == 8) { +if (this.inf.getTotalOut() > 4294967295 || this.inf.getTotalIn() > 4294967295) { +this.readFully(this.tmpbuf, 0, 24); +var sig = java.util.zip.ZipInputStream.get32(this.tmpbuf, 0); +if (sig != 134695760) { +e.crc = sig; +e.csize = java.util.zip.ZipInputStream.get64(this.tmpbuf, 4); +e.size = java.util.zip.ZipInputStream.get64(this.tmpbuf, 12); +(this.$in).unread(this.tmpbuf, 19, 4); +} else { +e.crc = java.util.zip.ZipInputStream.get32(this.tmpbuf, 4); +e.csize = java.util.zip.ZipInputStream.get64(this.tmpbuf, 8); +e.size = java.util.zip.ZipInputStream.get64(this.tmpbuf, 16); +}} else { +this.readFully(this.tmpbuf, 0, 16); +var sig = java.util.zip.ZipInputStream.get32(this.tmpbuf, 0); +if (sig != 134695760) { +e.crc = sig; +e.csize = java.util.zip.ZipInputStream.get32(this.tmpbuf, 4); +e.size = java.util.zip.ZipInputStream.get32(this.tmpbuf, 8); +(this.$in).unread(this.tmpbuf, 11, 4); +} else { +e.crc = java.util.zip.ZipInputStream.get32(this.tmpbuf, 4); +e.csize = java.util.zip.ZipInputStream.get32(this.tmpbuf, 8); +e.size = java.util.zip.ZipInputStream.get32(this.tmpbuf, 12); +}}}if (e.size != this.inf.getTotalOut()) { +throw new java.util.zip.ZipException("invalid entry size (expected " + e.size + " but got " + this.inf.getTotalOut() + " bytes)"); +}if (e.csize != this.inf.getTotalIn()) { +throw new java.util.zip.ZipException("invalid entry compressed size (expected " + e.csize + " but got " + this.inf.getTotalIn() + " bytes)"); +}if (e.crc != this.crc.getValue()) { +throw new java.util.zip.ZipException("invalid entry CRC (expected 0x" + Long.toHexString(e.crc) + " but got 0x" + Long.toHexString(this.crc.getValue()) + ")"); +}}, "java.util.zip.ZipEntry"); +Clazz.defineMethod(c$, "readFully", +function(b, off, len){ +while (len > 0) { +var n = this.$in.read(b, off, len); +if (n == -1) { +throw new java.io.EOFException(); +}off += n; +len -= n; +} +}, "~A,~N,~N"); +c$.get16 = Clazz.defineMethod(c$, "get16", +function(b, off){ +return (b[off] & 0xff) | ((b[off + 1] & 0xff) << 8); +}, "~A,~N"); +c$.get32 = Clazz.defineMethod(c$, "get32", +function(b, off){ +return (java.util.zip.ZipInputStream.get16(b, off) | (java.util.zip.ZipInputStream.get16(b, off + 2) << 16)) & 0xffffffff; +}, "~A,~N"); +c$.get64 = Clazz.defineMethod(c$, "get64", +function(b, off){ +return java.util.zip.ZipInputStream.get32(b, off) | (java.util.zip.ZipInputStream.get32(b, off + 4) << 32); +}, "~A,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipOutputStream.js b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipOutputStream.js new file mode 100755 index 000000000000..9fcc127cc5f5 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/java/util/zip/ZipOutputStream.js @@ -0,0 +1,373 @@ +Clazz.declarePackage("java.util.zip"); +Clazz.load(["java.util.zip.DeflaterOutputStream", "$.ZipConstants", "java.util.ArrayList", "$.Hashtable", "java.util.zip.CRC32"], "java.util.zip.ZipOutputStream", ["com.jcraft.jzlib.ZStream", "java.util.zip.Deflater"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.current = null; +this.xentries = null; +this.names = null; +this.crc = null; +this.written = 0; +this.locoff = 0; +this.comment = null; +this.method = 8; +this.finished = false; +this.$closed = false; +Clazz.instantialize(this, arguments);}, java.util.zip, "ZipOutputStream", java.util.zip.DeflaterOutputStream, java.util.zip.ZipConstants); +Clazz.prepareFields (c$, function(){ +this.xentries = new java.util.ArrayList(); +this.names = new java.util.Hashtable(); +this.crc = new java.util.zip.CRC32(); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, java.util.zip.ZipOutputStream, []); +}); +c$.version = Clazz.defineMethod(c$, "version", +function(e){ +switch (e.method) { +case 8: +return 20; +case 0: +return 10; +default: +throw new java.util.zip.ZipException("unsupported compression method"); +} +}, "java.util.zip.ZipEntry"); +Clazz.defineMethod(c$, "ensureOpen", +function(){ +if (this.$closed) { +throw new java.io.IOException("Stream closed"); +}}); +Clazz.defineMethod(c$, "setZOS", +function(out){ +this.setDOS(out, java.util.zip.ZipOutputStream.newDeflater()); +return this; +}, "java.io.OutputStream"); +c$.newDeflater = Clazz.defineMethod(c$, "newDeflater", +function(){ +return ( new java.util.zip.Deflater(2147483647)).init(-1, 0, true); +}); +Clazz.defineMethod(c$, "setComment", +function(comment){ +if (comment != null) { +this.comment = com.jcraft.jzlib.ZStream.getBytes(comment); +if (this.comment.length > 0xffff) throw new IllegalArgumentException("ZIP file comment too long."); +}}, "~S"); +Clazz.defineMethod(c$, "putNextEntry", +function(e){ +this.ensureOpen(); +if (this.current != null) { +this.closeEntry(); +}if (e.time == -1) { +e.setTime(System.currentTimeMillis()); +}if (e.method == -1) { +e.method = this.method; +}e.flag = 0; +switch (e.method) { +case 8: +if (e.size == -1 || e.csize == -1 || e.crc == -1) e.flag = 8; +break; +case 0: +if (e.size == -1) { +e.size = e.csize; +} else if (e.csize == -1) { +e.csize = e.size; +} else if (e.size != e.csize) { +throw new java.util.zip.ZipException("STORED entry where compressed != uncompressed size"); +}if (e.size == -1 || e.crc == -1) { +throw new java.util.zip.ZipException("STORED entry missing size, compressed size, or crc-32"); +}break; +default: +throw new java.util.zip.ZipException("unsupported compression method"); +} +if (this.names.containsKey(e.name)) { +throw new java.util.zip.ZipException("duplicate entry: " + e.name); +}this.names.put(e.name, Boolean.TRUE); +e.flag |= 2048; +this.current = e; +this.current.offset = this.written; +this.xentries.add(this.current); +this.writeLOC(this.current); +}, "java.util.zip.ZipEntry"); +Clazz.defineMethod(c$, "closeEntry", +function(){ +this.ensureOpen(); +if (this.current != null) { +var e = this.current; +switch (e.method) { +case 8: +this.deflater.finish(); +Clazz.superCall(this, java.util.zip.ZipOutputStream, "finish", []); +if ((e.flag & 8) == 0) { +if (e.size != this.deflater.getBytesRead()) { +throw new java.util.zip.ZipException("invalid entry size (expected " + e.size + " but got " + this.deflater.getBytesRead() + " bytes)"); +}if (e.csize != this.deflater.getBytesWritten()) { +throw new java.util.zip.ZipException("invalid entry compressed size (expected " + e.csize + " but got " + this.deflater.getBytesWritten() + " bytes)"); +}if (e.crc != this.crc.getValue()) { +throw new java.util.zip.ZipException("invalid entry CRC-32 (expected 0x" + Long.toHexString(e.crc) + " but got 0x" + Long.toHexString(this.crc.getValue()) + ")"); +}} else { +e.size = this.deflater.getBytesRead(); +e.csize = this.deflater.getBytesWritten(); +e.crc = this.crc.getValue(); +this.writeEXT(e); +}this.deflater = java.util.zip.ZipOutputStream.newDeflater(); +this.written += e.csize; +break; +case 0: +if (e.size != this.written - this.locoff) { +throw new java.util.zip.ZipException("invalid entry size (expected " + e.size + " but got " + (this.written - this.locoff) + " bytes)"); +}if (e.crc != this.crc.getValue()) { +throw new java.util.zip.ZipException("invalid entry crc-32 (expected 0x" + Long.toHexString(e.crc) + " but got 0x" + Long.toHexString(this.crc.getValue()) + ")"); +}break; +default: +throw new java.util.zip.ZipException("invalid compression method"); +} +this.crc.reset(); +this.current = null; +}}); +Clazz.defineMethod(c$, "write", +function(b, off, len){ +this.ensureOpen(); +if (off < 0 || len < 0 || off > b.length - len) { +throw new IndexOutOfBoundsException(); +} else if (len == 0) { +return; +}if (this.current == null) { +throw new java.util.zip.ZipException("no current ZIP entry"); +}var entry = this.current; +switch (entry.method) { +case 8: +Clazz.superCall(this, java.util.zip.ZipOutputStream, "write", [b, off, len]); +break; +case 0: +this.written += len; +if (this.written - this.locoff > entry.size) { +throw new java.util.zip.ZipException("attempt to write past end of STORED entry"); +}this.out.write(this.buffer, 0, len); +break; +default: +throw new java.util.zip.ZipException("invalid compression method"); +} +this.crc.update(b, off, len); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "finish", +function(){ +this.ensureOpen(); +if (this.finished) { +return; +}if (this.current != null) { +this.closeEntry(); +}var off = this.written; +for (var xentry, $xentry = this.xentries.iterator (); $xentry.hasNext()&& ((xentry = $xentry.next ()) || true);) this.writeCEN(xentry); + +this.writeEND(off, this.written - off); +this.finished = true; +}); +Clazz.defineMethod(c$, "close", +function(){ +if (!this.$closed) { +Clazz.superCall(this, java.util.zip.ZipOutputStream, "close", []); +this.$closed = true; +}}); +Clazz.defineMethod(c$, "writeLOC", +function(entry){ +var e = entry; +var flag = e.flag; +var elen = (e.extra != null) ? e.extra.length : 0; +var hasZip64 = false; +this.writeInt(67324752); +if ((flag & 8) == 8) { +this.writeShort(java.util.zip.ZipOutputStream.version(e)); +this.writeShort(flag); +this.writeShort(e.method); +this.writeInt(e.time); +this.writeInt(0); +this.writeInt(0); +this.writeInt(0); +} else { +if (e.csize >= 4294967295 || e.size >= 4294967295) { +hasZip64 = true; +this.writeShort(45); +} else { +this.writeShort(java.util.zip.ZipOutputStream.version(e)); +}this.writeShort(flag); +this.writeShort(e.method); +this.writeInt(e.time); +this.writeInt(e.crc); +if (hasZip64) { +this.writeInt(4294967295); +this.writeInt(4294967295); +elen += 20; +} else { +this.writeInt(e.csize); +this.writeInt(e.size); +}}var nameBytes = com.jcraft.jzlib.ZStream.getBytes(e.name); +this.writeShort(nameBytes.length); +this.writeShort(elen); +this.writeBytes(nameBytes, 0, nameBytes.length); +if (hasZip64) { +this.writeShort(1); +this.writeShort(16); +this.writeLong(e.size); +this.writeLong(e.csize); +}if (e.extra != null) { +this.writeBytes(e.extra, 0, e.extra.length); +}this.locoff = this.written; +}, "java.util.zip.ZipEntry"); +Clazz.defineMethod(c$, "writeEXT", +function(e){ +this.writeInt(134695760); +this.writeInt(e.crc); +if (e.csize >= 4294967295 || e.size >= 4294967295) { +this.writeLong(e.csize); +this.writeLong(e.size); +} else { +this.writeInt(e.csize); +this.writeInt(e.size); +}}, "java.util.zip.ZipEntry"); +Clazz.defineMethod(c$, "writeCEN", +function(entry){ +var e = entry; +var flag = e.flag; +var version = java.util.zip.ZipOutputStream.version(e); +var csize = e.csize; +var size = e.size; +var offset = entry.offset; +var e64len = 0; +var hasZip64 = false; +if (e.csize >= 4294967295) { +csize = 4294967295; +e64len += 8; +hasZip64 = true; +}if (e.size >= 4294967295) { +size = 4294967295; +e64len += 8; +hasZip64 = true; +}if (entry.offset >= 4294967295) { +offset = 4294967295; +e64len += 8; +hasZip64 = true; +}this.writeInt(33639248); +if (hasZip64) { +this.writeShort(45); +this.writeShort(45); +} else { +this.writeShort(version); +this.writeShort(version); +}this.writeShort(flag); +this.writeShort(e.method); +this.writeInt(e.time); +this.writeInt(e.crc); +this.writeInt(csize); +this.writeInt(size); +var nameBytes = com.jcraft.jzlib.ZStream.getBytes(e.name); +this.writeShort(nameBytes.length); +if (hasZip64) { +this.writeShort(e64len + 4 + (e.extra != null ? e.extra.length : 0)); +} else { +this.writeShort(e.extra != null ? e.extra.length : 0); +}var commentBytes; +if (e.comment != null) { +commentBytes = com.jcraft.jzlib.ZStream.getBytes(e.comment); +this.writeShort(Math.min(commentBytes.length, 0xffff)); +} else { +commentBytes = null; +this.writeShort(0); +}this.writeShort(0); +this.writeShort(0); +this.writeInt(0); +this.writeInt(offset); +this.writeBytes(nameBytes, 0, nameBytes.length); +if (hasZip64) { +this.writeShort(1); +this.writeShort(e64len); +if (size == 4294967295) this.writeLong(e.size); +if (csize == 4294967295) this.writeLong(e.csize); +if (offset == 4294967295) this.writeLong(entry.offset); +}if (e.extra != null) { +this.writeBytes(e.extra, 0, e.extra.length); +}if (commentBytes != null) { +this.writeBytes(commentBytes, 0, Math.min(commentBytes.length, 0xffff)); +}}, "java.util.zip.ZipEntry"); +Clazz.defineMethod(c$, "writeEND", +function(off, len){ +var hasZip64 = false; +var xlen = len; +var xoff = off; +if (xlen >= 4294967295) { +xlen = 4294967295; +hasZip64 = true; +}if (xoff >= 4294967295) { +xoff = 4294967295; +hasZip64 = true; +}var count = this.xentries.size(); +if (count >= 65535) { +count = 65535; +hasZip64 = true; +}if (hasZip64) { +var off64 = this.written; +this.writeInt(101075792); +this.writeLong(44); +this.writeShort(45); +this.writeShort(45); +this.writeInt(0); +this.writeInt(0); +this.writeLong(this.xentries.size()); +this.writeLong(this.xentries.size()); +this.writeLong(len); +this.writeLong(off); +this.writeInt(117853008); +this.writeInt(0); +this.writeLong(off64); +this.writeInt(1); +}this.writeInt(101010256); +this.writeShort(0); +this.writeShort(0); +this.writeShort(count); +this.writeShort(count); +this.writeInt(xlen); +this.writeInt(xoff); +if (this.comment != null) { +this.writeShort(this.comment.length); +this.writeBytes(this.comment, 0, this.comment.length); +} else { +this.writeShort(0); +}}, "~N,~N"); +Clazz.defineMethod(c$, "writeShort", +function(v){ +var out = this.out; +{ +out.writeByteAsInt((v >>> 0) & 0xff); +out.writeByteAsInt((v >>> 8) & 0xff); +}this.written += 2; +}, "~N"); +Clazz.defineMethod(c$, "writeInt", +function(v){ +var out = this.out; +{ +out.writeByteAsInt((v >>> 0) & 0xff); +out.writeByteAsInt((v >>> 8) & 0xff); +out.writeByteAsInt((v >>> 16) & 0xff); +out.writeByteAsInt((v >>> 24) & 0xff); +}this.written += 4; +}, "~N"); +Clazz.defineMethod(c$, "writeLong", +function(v){ +var out = this.out; +{ +out.writeByteAsInt((v >>> 0) & 0xff); +out.writeByteAsInt((v >>> 8) & 0xff); +out.writeByteAsInt((v >>> 16) & 0xff); +out.writeByteAsInt((v >>> 24) & 0xff); +out.writeByteAsInt(0); +out.writeByteAsInt(0); +out.writeByteAsInt(0); +out.writeByteAsInt(0); +}this.written += 8; +}, "~N"); +Clazz.defineMethod(c$, "writeBytes", +function(b, off, len){ +this.out.write(b, off, len); +this.written += len; +}, "~A,~N,~N"); +}); +;//5.0.1-v2 Sat Apr 06 02:44:31 CDT 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/J2SIgnoreImport.js b/config/plugins/visualizations/jmol/static/j2s/javajs/J2SIgnoreImport.js new file mode 100755 index 000000000000..4adf4222a716 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/J2SIgnoreImport.js @@ -0,0 +1,2 @@ +Clazz.declarePackage("javajs"); +javajs.J2SIgnoreImportClassthis.value;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/J2SRequireImport.js b/config/plugins/visualizations/jmol/static/j2s/javajs/J2SRequireImport.js new file mode 100755 index 000000000000..e12040419914 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/J2SRequireImport.js @@ -0,0 +1,2 @@ +Clazz.declarePackage("javajs"); +javajs.J2SRequireImportClassthis.value;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/BytePoster.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/BytePoster.js new file mode 100755 index 000000000000..05e75735de4c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/BytePoster.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "BytePoster"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/EigenInterface.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/EigenInterface.js new file mode 100755 index 000000000000..c712a117fa6e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/EigenInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "EigenInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericBinaryDocument.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericBinaryDocument.js new file mode 100755 index 000000000000..98f73ef2c3a1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericBinaryDocument.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "GenericBinaryDocument", javajs.api.GenericBinaryDocumentReader); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericBinaryDocumentReader.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericBinaryDocumentReader.js new file mode 100755 index 000000000000..91c7232e2e53 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericBinaryDocumentReader.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "GenericBinaryDocumentReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericCifDataParser.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericCifDataParser.js new file mode 100755 index 000000000000..6acb490270c3 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericCifDataParser.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("javajs.api"); +(function(){ +var c$ = Clazz.declareInterface(javajs.api, "GenericCifDataParser"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericColor.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericColor.js new file mode 100755 index 000000000000..ef5ed7cff92b --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericColor.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "GenericColor"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericImageEncoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericImageEncoder.js new file mode 100755 index 000000000000..285f1a441143 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericImageEncoder.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "GenericImageEncoder"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericLineReader.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericLineReader.js new file mode 100755 index 000000000000..b5afd55b5e79 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericLineReader.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "GenericLineReader"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericOutputChannel.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericOutputChannel.js new file mode 100755 index 000000000000..9b4b8821c350 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericOutputChannel.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "GenericOutputChannel"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericZipInputStream.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericZipInputStream.js new file mode 100755 index 000000000000..93436fd01ff2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericZipInputStream.js @@ -0,0 +1,5 @@ +Clazz.declarePackage("javajs.api"); +Clazz.load(["java.util.zip.ZipInputStream", "javajs.api.ZInputStream"], "javajs.api.GenericZipInputStream", null, function(){ +var c$ = Clazz.declareType(javajs.api, "GenericZipInputStream", java.util.zip.ZipInputStream, javajs.api.ZInputStream); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericZipTools.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericZipTools.js new file mode 100755 index 000000000000..f63605f83182 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/GenericZipTools.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "GenericZipTools"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/Interface.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/Interface.js new file mode 100755 index 000000000000..f1effdb8a01a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/Interface.js @@ -0,0 +1,19 @@ +Clazz.declarePackage("javajs.api"); +(function(){ +var c$ = Clazz.declareType(javajs.api, "Interface", null); +c$.getInterface = Clazz.defineMethod(c$, "getInterface", +function(name){ +try { +var x = Clazz._4Name(name); +return (x == null ? null : x.newInstance()); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("Interface.java Error creating instance for " + name + ": \n" + e); +return null; +} else { +throw e; +} +} +}, "~S"); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSFunction.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSFunction.js new file mode 100755 index 000000000000..429dd65c1fb9 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSFunction.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "JSFunction"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSInterface.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSInterface.js new file mode 100755 index 000000000000..1ed49810d574 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "JSInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSONEncodable.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSONEncodable.js new file mode 100755 index 000000000000..05593570d831 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/JSONEncodable.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "JSONEncodable"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/ZInputStream.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/ZInputStream.js new file mode 100755 index 000000000000..e6285090f184 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/ZInputStream.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api"); +Clazz.declareInterface(javajs.api, "ZInputStream"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/js/J2SObjectInterface.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/js/J2SObjectInterface.js new file mode 100755 index 000000000000..c48d37c7177f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/js/J2SObjectInterface.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api.js"); +Clazz.declareInterface(javajs.api.js, "J2SObjectInterface"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/api/js/JSAppletObject.js b/config/plugins/visualizations/jmol/static/j2s/javajs/api/js/JSAppletObject.js new file mode 100755 index 000000000000..06183d37ed4c --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/api/js/JSAppletObject.js @@ -0,0 +1,3 @@ +Clazz.declarePackage("javajs.api.js"); +Clazz.declareInterface(javajs.api.js, "JSAppletObject"); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/export/PDFCreator.js b/config/plugins/visualizations/jmol/static/j2s/javajs/export/PDFCreator.js new file mode 100755 index 000000000000..7469b01cf920 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/export/PDFCreator.js @@ -0,0 +1,297 @@ +Clazz.declarePackage("javajs.export"); +Clazz.load(null, "javajs.export.PDFCreator", ["java.util.Hashtable", "javajs.export.PDFObject", "JU.Lst", "$.SB"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.os = null; +this.indirectObjects = null; +this.root = null; +this.graphics = null; +this.pt = 0; +this.xrefPt = 0; +this.count = 0; +this.height = 0; +this.width = 0; +this.fonts = null; +this.images = null; +Clazz.instantialize(this, arguments);}, javajs["export"], "PDFCreator", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "setOutputStream", +function(os){ +this.os = os; +}, "java.io.OutputStream"); +Clazz.defineMethod(c$, "newDocument", +function(paperWidth, paperHeight, isLandscape){ +this.width = (isLandscape ? paperHeight : paperWidth); +this.height = (isLandscape ? paperWidth : paperHeight); +System.out.println("Creating PDF with width=" + this.width + " and height=" + this.height); +this.fonts = new java.util.Hashtable(); +this.indirectObjects = new JU.Lst(); +this.root = this.newObject("Catalog"); +var pages = this.newObject("Pages"); +var page = this.newObject("Page"); +var pageContents = this.newObject(null); +this.graphics = this.newObject("XObject"); +this.root.addDef("Pages", pages.getRef()); +pages.addDef("Count", "1"); +pages.addDef("Kids", "[ " + page.getRef() + " ]"); +page.addDef("Parent", pages.getRef()); +page.addDef("MediaBox", "[ 0 0 " + paperWidth + " " + paperHeight + " ]"); +if (isLandscape) page.addDef("Rotate", "90"); +pageContents.addDef("Length", "?"); +pageContents.append((isLandscape ? "q 0 1 1 0 0 0 " : "q 1 0 0 -1 0 " + (paperHeight)) + " cm /" + this.graphics.getID() + " Do Q"); +page.addDef("Contents", pageContents.getRef()); +this.addProcSet(page); +this.addProcSet(this.graphics); +this.graphics.addDef("Subtype", "/Form"); +this.graphics.addDef("FormType", "1"); +this.graphics.addDef("BBox", "[0 0 " + this.width + " " + this.height + "]"); +this.graphics.addDef("Matrix", "[1 0 0 1 0 0]"); +this.graphics.addDef("Length", "?"); +page.addResource("XObject", this.graphics.getID(), this.graphics.getRef()); +this.g("q 1 w 1 J 1 j 10 M []0 d q "); +this.clip(0, 0, this.width, this.height); +}, "~N,~N,~B"); +Clazz.defineMethod(c$, "addProcSet", +function(o){ +o.addResource(null, "ProcSet", "[/PDF /Text /ImageB /ImageC /ImageI]"); +}, "javajs.export.PDFObject"); +Clazz.defineMethod(c$, "clip", +function(x1, y1, x2, y2){ +this.moveto(x1, y1); +this.lineto(x2, y1); +this.lineto(x2, y2); +this.lineto(x1, y2); +this.g("h W n"); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "moveto", +function(x, y){ +this.g(x + " " + y + " m"); +}, "~N,~N"); +Clazz.defineMethod(c$, "lineto", +function(x, y){ +this.g(x + " " + y + " l"); +}, "~N,~N"); +Clazz.defineMethod(c$, "newObject", +function(type){ +var o = new javajs["export"].PDFObject(++this.count); +if (type != null) o.addDef("Type", "/" + type); +this.indirectObjects.addLast(o); +return o; +}, "~S"); +Clazz.defineMethod(c$, "addInfo", +function(data){ +var info = new java.util.Hashtable(); +for (var e, $e = data.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var value = "(" + e.getValue().$replace(')', '_').$replace('(', '_') + ")"; +info.put(e.getKey(), value); +} +this.root.addDef("Info", info); +}, "java.util.Map"); +Clazz.defineMethod(c$, "addFontResource", +function(fname){ +var f = this.newObject("Font"); +this.fonts.put(fname, f); +f.addDef("BaseFont", fname); +f.addDef("Encoding", "/WinAnsiEncoding"); +f.addDef("Subtype", "/Type1"); +this.graphics.addResource("Font", f.getID(), f.getRef()); +return f; +}, "~S"); +Clazz.defineMethod(c$, "addImageResource", +function(newImage, width, height, buffer, isRGB){ +var imageObj = this.newObject("XObject"); +if (this.images == null) this.images = new java.util.Hashtable(); +this.images.put(newImage, imageObj); +imageObj.addDef("Subtype", "/Image"); +imageObj.addDef("Length", "?"); +imageObj.addDef("ColorSpace", isRGB ? "/DeviceRGB" : "/DeviceGray"); +imageObj.addDef("BitsPerComponent", "8"); +imageObj.addDef("Width", "" + width); +imageObj.addDef("Height", "" + height); +this.graphics.addResource("XObject", imageObj.getID(), imageObj.getRef()); +var n = buffer.length; +var stream = Clazz.newByteArray (n * (isRGB ? 3 : 1), 0); +if (isRGB) { +for (var i = 0, pt = 0; i < n; i++) { +stream[pt++] = ((buffer[i] >> 16) & 0xFF); +stream[pt++] = ((buffer[i] >> 8) & 0xFF); +stream[pt++] = (buffer[i] & 0xFF); +} +} else { +for (var i = 0; i < n; i++) stream[i] = buffer[i]; + +}imageObj.setStream(stream); +this.graphics.addResource("XObject", imageObj.getID(), imageObj.getRef()); +}, "~O,~N,~N,~A,~B"); +Clazz.defineMethod(c$, "g", +function(cmd){ +this.graphics.append(cmd).appendC('\n'); +}, "~S"); +Clazz.defineMethod(c$, "output", +function(s){ +var b = s.getBytes(); +this.os.write(b, 0, b.length); +this.pt += b.length; +}, "~S"); +Clazz.defineMethod(c$, "closeDocument", +function(){ +this.g("Q Q"); +this.outputHeader(); +this.writeObjects(); +this.writeXRefTable(); +this.writeTrailer(); +this.os.flush(); +this.os.close(); +}); +Clazz.defineMethod(c$, "outputHeader", +function(){ +this.output("%PDF-1.3\n%"); +var b = Clazz.newByteArray(-1, [-1, -1, -1, -1]); +this.os.write(b, 0, b.length); +this.pt += 4; +this.output("\n"); +}); +Clazz.defineMethod(c$, "writeTrailer", +function(){ +var trailer = new javajs["export"].PDFObject(-2); +this.output("trailer"); +trailer.addDef("Size", "" + this.indirectObjects.size()); +trailer.addDef("Root", this.root.getRef()); +trailer.output(this.os); +this.output("startxref\n"); +this.output("" + this.xrefPt + "\n"); +this.output("%%EOF\n"); +}); +Clazz.defineMethod(c$, "writeObjects", +function(){ +var nObj = this.indirectObjects.size(); +for (var i = 0; i < nObj; i++) { +var o = this.indirectObjects.get(i); +if (!o.isFont()) continue; +o.pt = this.pt; +this.pt += o.output(this.os); +} +for (var i = 0; i < nObj; i++) { +var o = this.indirectObjects.get(i); +if (o.isFont()) continue; +o.pt = this.pt; +this.pt += o.output(this.os); +} +}); +Clazz.defineMethod(c$, "writeXRefTable", +function(){ +this.xrefPt = this.pt; +var nObj = this.indirectObjects.size(); +var sb = new JU.SB(); +sb.append("xref\n0 " + (nObj + 1) + "\n0000000000 65535 f\r\n"); +for (var i = 0; i < nObj; i++) { +var o = this.indirectObjects.get(i); +var s = "0000000000" + o.pt; +sb.append(s.substring(s.length - 10)); +sb.append(" 00000 n\r\n"); +} +this.output(sb.toString()); +}); +Clazz.defineMethod(c$, "canDoLineTo", +function(){ +return true; +}); +Clazz.defineMethod(c$, "fill", +function(){ +this.g("f"); +}); +Clazz.defineMethod(c$, "stroke", +function(){ +this.g("S"); +}); +Clazz.defineMethod(c$, "doCircle", +function(x, y, r, doFill){ +var d = r * 4 * (Math.sqrt(2) - 1) / 3; +var dx = x; +var dy = y; +this.g((dx + r) + " " + dy + " m"); +this.g((dx + r) + " " + (dy + d) + " " + (dx + d) + " " + (dy + r) + " " + (dx) + " " + (dy + r) + " " + " c"); +this.g((dx - d) + " " + (dy + r) + " " + (dx - r) + " " + (dy + d) + " " + (dx - r) + " " + (dy) + " c"); +this.g((dx - r) + " " + (dy - d) + " " + (dx - d) + " " + (dy - r) + " " + (dx) + " " + (dy - r) + " c"); +this.g((dx + d) + " " + (dy - r) + " " + (dx + r) + " " + (dy - d) + " " + (dx + r) + " " + (dy) + " c"); +this.g(doFill ? "f" : "s"); +}, "~N,~N,~N,~B"); +Clazz.defineMethod(c$, "doPolygon", +function(axPoints, ayPoints, nPoints, doFill){ +this.moveto(axPoints[0], ayPoints[0]); +for (var i = 1; i < nPoints; i++) this.lineto(axPoints[i], ayPoints[i]); + +this.g(doFill ? "f" : "s"); +}, "~A,~A,~N,~B"); +Clazz.defineMethod(c$, "doRect", +function(x, y, width, height, doFill){ +this.g(x + " " + y + " " + width + " " + height + " re " + (doFill ? "f" : "s")); +}, "~N,~N,~N,~N,~B"); +Clazz.defineMethod(c$, "drawImage", +function(image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1){ +var imageObj = this.images.get(image); +if (imageObj == null) return; +this.g("q"); +this.clip(destX0, destY0, destX1, destY1); +var iw = Double.parseDouble(imageObj.getDef("Width")); +var ih = Double.parseDouble(imageObj.getDef("Height")); +var dw = (destX1 - destX0 + 1); +var dh = (destY1 - destY0 + 1); +var sw = (srcX1 - srcX0 + 1); +var sh = (srcY1 - srcY0 + 1); +var scaleX = dw / sw; +var scaleY = dh / sh; +var transX = destX0 - srcX0 * scaleX; +var transY = destY0 + (ih - srcY0) * scaleY; +this.g(scaleX * iw + " 0 0 " + -scaleY * ih + " " + transX + " " + transY + " cm"); +this.g("/" + imageObj.getID() + " Do"); +this.g("Q"); +}, "~O,~N,~N,~N,~N,~N,~N,~N,~N"); +Clazz.defineMethod(c$, "drawStringRotated", +function(s, x, y, angle){ +this.g("q " + this.getRotation(angle) + " " + x + " " + y + " cm BT(" + s + ")Tj ET Q"); +}, "~S,~N,~N,~N"); +Clazz.defineMethod(c$, "getRotation", +function(angle){ +var cos = 0; +var sin = 0; +switch (angle) { +case 0: +cos = 1; +break; +case 90: +sin = 1; +break; +case -90: +sin = -1; +break; +case 180: +cos = -1; +break; +default: +var a = (angle / 180.0 * 3.141592653589793); +cos = Math.cos(a); +sin = Math.sin(a); +if (Math.abs(cos) < 0.0001) cos = 0; +if (Math.abs(sin) < 0.0001) sin = 0; +} +return cos + " " + sin + " " + sin + " " + -cos; +}, "~N"); +Clazz.defineMethod(c$, "setColor", +function(rgb, isFill){ +this.g(rgb[0] + " " + rgb[1] + " " + rgb[2] + (isFill ? " rg" : " RG")); +}, "~A,~B"); +Clazz.defineMethod(c$, "setFont", +function(fname, size){ +var f = this.fonts.get(fname); +if (f == null) f = this.addFontResource(fname); +this.g("/" + f.getID() + " " + size + " Tf"); +}, "~S,~N"); +Clazz.defineMethod(c$, "setLineWidth", +function(width){ +this.g(width + " w"); +}, "~N"); +Clazz.defineMethod(c$, "translateScale", +function(x, y, scale){ +this.g(scale + " 0 0 " + scale + " " + x + " " + y + " cm"); +}, "~N,~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/export/PDFObject.js b/config/plugins/visualizations/jmol/static/j2s/javajs/export/PDFObject.js new file mode 100755 index 000000000000..0f6f25b60ddf --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/export/PDFObject.js @@ -0,0 +1,115 @@ +Clazz.declarePackage("javajs.export"); +Clazz.load(["JU.SB"], "javajs.export.PDFObject", ["java.io.ByteArrayOutputStream", "java.util.Hashtable", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.dictionary = null; +this.stream = null; +this.index = 0; +this.type = null; +this.len = 0; +this.pt = 0; +Clazz.instantialize(this, arguments);}, javajs["export"], "PDFObject", JU.SB); +Clazz.makeConstructor(c$, +function(index){ +Clazz.superConstructor (this, javajs["export"].PDFObject, []); +this.index = index; +}, "~N"); +Clazz.defineMethod(c$, "getRef", +function(){ +return this.index + " 0 R"; +}); +Clazz.defineMethod(c$, "getID", +function(){ +return this.type.substring(0, 1) + this.index; +}); +Clazz.defineMethod(c$, "isFont", +function(){ +return "Font".equals(this.type); +}); +Clazz.defineMethod(c$, "setStream", +function(stream){ +this.stream = stream; +}, "~A"); +Clazz.defineMethod(c$, "getDef", +function(key){ +return this.dictionary.get(key); +}, "~S"); +Clazz.defineMethod(c$, "addDef", +function(key, value){ +if (this.dictionary == null) this.dictionary = new java.util.Hashtable(); +this.dictionary.put(key, value); +if (key.equals("Type")) this.type = (value).substring(1); +}, "~S,~O"); +Clazz.defineMethod(c$, "setAsStream", +function(){ +this.stream = this.toBytes(0, -1); +this.setLength(0); +}); +Clazz.defineMethod(c$, "output", +function(os){ +if (this.index > 0) { +var s = this.index + " 0 obj\n"; +this.write(os, s.getBytes(), 0); +}var streamLen = 0; +if (this.dictionary != null) { +if (this.dictionary.containsKey("Length")) { +if (this.stream == null) this.setAsStream(); +streamLen = this.stream.length; +var doDeflate = (streamLen > 1000); +if (doDeflate) { +var deflater = new java.util.zip.Deflater(9); +var outBytes = new java.io.ByteArrayOutputStream(1024); +var compBytes = new java.util.zip.DeflaterOutputStream(outBytes, deflater); +compBytes.write(this.stream, 0, streamLen); +compBytes.finish(); +this.stream = outBytes.toByteArray(); +this.dictionary.put("Filter", "/FlateDecode"); +streamLen = this.stream.length; +}this.dictionary.put("Length", "" + streamLen); +}this.write(os, this.getDictionaryText(this.dictionary, "\n").getBytes(), 0); +}if (this.length() > 0) this.write(os, this.toString().getBytes(), 0); +if (this.stream != null) { +this.write(os, "stream\r\n".getBytes(), 0); +this.write(os, this.stream, streamLen); +this.write(os, "\r\nendstream\r\n".getBytes(), 0); +}if (this.index > 0) this.write(os, "endobj\n".getBytes(), 0); +return this.len; +}, "java.io.OutputStream"); +Clazz.defineMethod(c$, "write", +function(os, bytes, nBytes){ +if (nBytes == 0) nBytes = bytes.length; +this.len += nBytes; +os.write(bytes, 0, nBytes); +}, "java.io.OutputStream,~A,~N"); +Clazz.defineMethod(c$, "getDictionaryText", +function(d, nl){ +var sb = new JU.SB(); +sb.append("<<"); +if (d.containsKey("Type")) sb.append("/Type").appendO(d.get("Type")); +for (var e, $e = d.entrySet().iterator (); $e.hasNext()&& ((e = $e.next ()) || true);) { +var s = e.getKey(); +if (s.equals("Type") || s.startsWith("!")) continue; +sb.append("/" + s); +var o = e.getValue(); +if (Clazz.instanceOf(o,"java.util.Map")) { +sb.append((this.getDictionaryText(o, ""))); +continue; +}s = e.getValue(); +if (!s.startsWith("/")) sb.append(" "); +sb.appendO(s); +} +return (sb.length() > 3 ? sb.append(">>").append(nl).toString() : ""); +}, "java.util.Map,~S"); +Clazz.defineMethod(c$, "createSubdict", +function(d0, dict){ +var d = d0.get(dict); +if (d == null) d0.put(dict, d = new java.util.Hashtable()); +return d; +}, "java.util.Map,~S"); +Clazz.defineMethod(c$, "addResource", +function(type, key, value){ +var r = this.createSubdict(this.dictionary, "Resources"); +if (type != null) r = this.createSubdict(r, type); +r.put(key, value); +}, "~S,~S,~S"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/BMPDecoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/BMPDecoder.js new file mode 100755 index 000000000000..211d283093e2 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/BMPDecoder.js @@ -0,0 +1,141 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(null, "javajs.img.BMPDecoder", ["JU.Rdr"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.bis = null; +this.temp = null; +Clazz.instantialize(this, arguments);}, javajs.img, "BMPDecoder", null); +/*LV!1824 unnec constructor*/Clazz.defineMethod(c$, "decodeWindowsBMP", +function(bytes){ +try { +this.bis = JU.Rdr.getBIS(bytes); +this.temp = Clazz.newByteArray (4, 0); +if (this.readByte() != 66 || this.readByte() != 77) return null; +this.readInt(); +this.readShort(); +this.readShort(); +this.readInt(); +var imageWidth; +var imageHeight; +var bitsPerPixel; +var nColors = 0; +var imageSize = 0; +var headerSize = this.readInt(); +switch (headerSize) { +case 12: +imageWidth = this.readShort(); +imageHeight = this.readShort(); +this.readShort(); +bitsPerPixel = this.readShort(); +break; +case 40: +imageWidth = this.readInt(); +imageHeight = this.readInt(); +this.readShort(); +bitsPerPixel = this.readShort(); +var ncompression = this.readInt(); +if (ncompression != 0) { +System.out.println("BMP Compression is :" + ncompression + " -- aborting"); +return null; +}imageSize = this.readInt(); +this.readInt(); +this.readInt(); +nColors = this.readInt(); +this.readInt(); +break; +default: +System.out.println("BMP Header unrecognized, length=" + headerSize + " -- aborting"); +return null; +} +var isYReversed = (imageHeight < 0); +if (isYReversed) imageHeight = -imageHeight; +var nPixels = imageHeight * imageWidth; +var bytesPerPixel = Clazz.doubleToInt(bitsPerPixel / 8); +nColors = (nColors > 0 ? nColors : 1 << bitsPerPixel); +var npad = (bytesPerPixel == 4 ? 0 : imageSize == 0 ? 4 - (imageWidth % 4) : (Clazz.doubleToInt(imageSize / imageHeight)) - imageWidth * bytesPerPixel) % 4; +var palette; +var buf = Clazz.newIntArray (nPixels, 0); +var dpt = (isYReversed ? imageWidth : -imageWidth); +var pt0 = (isYReversed ? 0 : nPixels + dpt); +var pt1 = (isYReversed ? nPixels : dpt); +switch (bitsPerPixel) { +case 32: +case 24: +for (var pt = pt0; pt != pt1; pt += dpt, this.pad(npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = this.readColor(bytesPerPixel); + + +break; +case 8: +palette = Clazz.newIntArray (nColors, 0); +for (var i = 0; i < nColors; i++) palette[i] = this.readColor(4); + +for (var pt = pt0; pt != pt1; pt += dpt, this.pad(npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = palette[this.readByte()]; + + +break; +case 4: +npad = (4 - ((Clazz.doubleToInt((imageWidth + 1) / 2)) % 4)) % 4; +palette = Clazz.newIntArray (nColors, 0); +for (var i = 0; i < nColors; i++) palette[i] = this.readColor(4); + +var b4 = 0; +for (var pt = pt0; pt != pt1; pt += dpt, this.pad(npad)) for (var i = 0, shift = 4; i < imageWidth; i++, shift = 4 - shift) buf[pt + i] = palette[((shift == 4 ? (b4 = this.readByte()) : b4) >> shift) & 0xF]; + + +break; +case 1: +var color1 = this.readColor(3); +var color2 = this.readColor(3); +npad = (4 - ((Clazz.doubleToInt((imageWidth + 7) / 8)) % 4)) % 4; +var b = 0; +for (var pt = pt0; pt != pt1; pt += dpt, this.pad(npad)) for (var i = 0, bpt = -1; i < imageWidth; i++, bpt--) { +if (bpt < 0) { +b = this.readByte(); +bpt = 7; +}buf[pt + i] = ((b & (1 << bpt)) == 0 ? color1 : color2); +} + +break; +case 64: +case 2: +default: +System.out.println("Not a 32-, 24-, 8-, 4-, or 1-bit Windows Bitmap, aborting..."); +return null; +} +return Clazz.newArray(-1, [buf, Integer.$valueOf(imageWidth), Integer.$valueOf(imageHeight)]); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.out.println("Caught exception in loadbitmap!"); +} else { +throw e; +} +} +return null; +}, "~A"); +Clazz.defineMethod(c$, "pad", +function(npad){ +for (var i = 0; i < npad; i++) this.readByte(); + +return true; +}, "~N"); +Clazz.defineMethod(c$, "readColor", +function(n){ +this.bis.read(this.temp, 0, n); +return -16777216 | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff; +}, "~N"); +Clazz.defineMethod(c$, "readInt", +function(){ +this.bis.read(this.temp, 0, 4); +return ((this.temp[3] & 0xff) << 24) | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff; +}); +Clazz.defineMethod(c$, "readShort", +function(){ +this.bis.read(this.temp, 0, 2); +return ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff; +}); +Clazz.defineMethod(c$, "readByte", +function(){ +this.bis.read(this.temp, 0, 1); +return this.temp[0] & 0xff; +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/CRCEncoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/CRCEncoder.js new file mode 100755 index 000000000000..85857efedd9a --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/CRCEncoder.js @@ -0,0 +1,74 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(["javajs.img.ImageEncoder"], "javajs.img.CRCEncoder", ["java.util.zip.CRC32", "JU.AU"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.startPos = 0; +this.bytePos = 0; +this.crc = null; +this.pngBytes = null; +this.dataLen = 0; +this.int2 = null; +this.int4 = null; +Clazz.instantialize(this, arguments);}, javajs.img, "CRCEncoder", javajs.img.ImageEncoder); +Clazz.prepareFields (c$, function(){ +this.int2 = Clazz.newByteArray (2, 0); +this.int4 = Clazz.newByteArray (4, 0); +}); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, javajs.img.CRCEncoder, []); +this.pngBytes = Clazz.newByteArray (250, 0); +this.crc = new java.util.zip.CRC32(); +}); +Clazz.defineMethod(c$, "setData", +function(b, pt){ +this.pngBytes = b; +this.dataLen = b.length; +this.startPos = this.bytePos = pt; +}, "~A,~N"); +Clazz.defineMethod(c$, "getBytes", +function(){ +return (this.dataLen == this.pngBytes.length ? this.pngBytes : JU.AU.arrayCopyByte(this.pngBytes, this.dataLen)); +}); +Clazz.defineMethod(c$, "writeCRC", +function(){ +this.crc.reset(); +this.crc.update(this.pngBytes, this.startPos, this.bytePos - this.startPos); +this.writeInt4(this.crc.getValue()); +}); +Clazz.defineMethod(c$, "writeInt2", +function(n){ +this.int2[0] = ((n >> 8) & 0xff); +this.int2[1] = (n & 0xff); +this.writeBytes(this.int2); +}, "~N"); +Clazz.defineMethod(c$, "writeInt4", +function(n){ +javajs.img.CRCEncoder.getInt4(n, this.int4); +this.writeBytes(this.int4); +}, "~N"); +c$.getInt4 = Clazz.defineMethod(c$, "getInt4", +function(n, int4){ +int4[0] = ((n >> 24) & 0xff); +int4[1] = ((n >> 16) & 0xff); +int4[2] = ((n >> 8) & 0xff); +int4[3] = (n & 0xff); +}, "~N,~A"); +Clazz.defineMethod(c$, "writeByte", +function(b){ +var temp = Clazz.newByteArray(-1, [b]); +this.writeBytes(temp); +}, "~N"); +Clazz.defineMethod(c$, "writeString", +function(s){ +this.writeBytes(s.getBytes()); +}, "~S"); +Clazz.defineMethod(c$, "writeBytes", +function(data){ +var newPos = this.bytePos + data.length; +this.dataLen = Math.max(this.dataLen, newPos); +if (newPos > this.pngBytes.length) this.pngBytes = JU.AU.arrayCopyByte(this.pngBytes, newPos + 16); +System.arraycopy(data, 0, this.pngBytes, this.bytePos, data.length); +this.bytePos = newPos; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/GifEncoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/GifEncoder.js new file mode 100755 index 000000000000..3c4a35258ea1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/GifEncoder.js @@ -0,0 +1,622 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(["javajs.img.ImageEncoder", "JU.Lst", "$.P3"], "javajs.img.GifEncoder", ["java.util.Hashtable", "JU.CU", "$.M3"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.params = null; +this.palette = null; +this.backgroundColor = 0; +this.interlaced = false; +this.addHeader = true; +this.addImage = true; +this.addTrailer = true; +this.isTransparent = false; +this.floydSteinberg = true; +this.capturing = false; +this.looping = false; +this.delayTime100ths = -1; +this.bitsPerPixel = 1; +this.byteCount = 0; +if (!Clazz.isClassDefined("javajs.img.GifEncoder.ColorItem")) { +javajs.img.GifEncoder.$GifEncoder$ColorItem$ (); +} +if (!Clazz.isClassDefined("javajs.img.GifEncoder.ColorCell")) { +javajs.img.GifEncoder.$GifEncoder$ColorCell$ (); +} +this.initCodeSize = 0; +this.curpt = 0; +this.nBits = 0; +this.maxbits = 12; +this.maxcode = 0; +this.maxmaxcode = 4096; +this.htab = null; +this.codetab = null; +this.hsize = 5003; +this.freeEnt = 0; +this.clearFlag = false; +this.clearCode = 0; +this.EOFCode = 0; +this.countDown = 0; +this.pass = 0; +this.curx = 0; +this.cury = 0; +this.curAccum = 0; +this.curBits = 0; +this.masks = null; +this.bufPt = 0; +this.buf = null; +Clazz.instantialize(this, arguments);}, javajs.img, "GifEncoder", javajs.img.ImageEncoder); +Clazz.prepareFields (c$, function(){ +this.htab = Clazz.newIntArray (5003, 0); +this.codetab = Clazz.newIntArray (5003, 0); +this.masks = Clazz.newIntArray(-1, [0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF]); +this.buf = Clazz.newByteArray (256, 0); +}); +Clazz.overrideMethod(c$, "setParams", +function(params){ +this.params = params; +var ic = params.get("transparentColor"); +if (ic == null) { +ic = params.get("backgroundColor"); +if (ic != null) this.backgroundColor = ic.intValue(); +} else { +this.backgroundColor = ic.intValue(); +this.isTransparent = true; +}if (this.backgroundColor == 0xFF000000) { +for (var i = this.pixels.length; --i >= 0; ) this.pixels[i] = this.pixels[i] & -263173; + +}this.interlaced = (Boolean.TRUE === params.get("interlaced")); +if (params.containsKey("captureRootExt") || !params.containsKey("captureMode")) return; +this.interlaced = false; +this.capturing = true; +var c = params.get("captureByteCount"); +if (c != null) this.byteCount = c.intValue(); +switch ("maec".indexOf((params.get("captureMode")).substring(0, 1))) { +case 0: +params.put("captureMode", "add"); +this.addImage = false; +this.addTrailer = false; +break; +case 1: +this.addHeader = false; +this.addTrailer = false; +var msDelay = params.get("captureDelayMS"); +if (msDelay == null) { +var fps = Math.abs((params.get("captureFps")).intValue()); +this.delayTime100ths = (fps == 0 ? 0 : Clazz.doubleToInt(100 / fps)); +} else { +this.delayTime100ths = Clazz.doubleToInt(msDelay.intValue() / 10); +params.remove("captureDelayMS"); +}this.looping = (Boolean.FALSE !== params.get("captureLooping")); +break; +case 2: +this.addHeader = false; +this.addImage = false; +break; +case 3: +this.addHeader = false; +this.addImage = false; +this.out.cancel(); +break; +} +}, "java.util.Map"); +Clazz.overrideMethod(c$, "generate", +function(){ +if (this.addHeader) this.writeHeader(); +this.addHeader = false; +if (this.addImage) { +this.createPalette(); +this.writeGraphicControlExtension(); +if (this.delayTime100ths >= 0 && this.looping) this.writeNetscapeLoopExtension(); +this.writeImage(); +}}); +Clazz.overrideMethod(c$, "close", +function(){ +if (this.addTrailer) { +this.writeTrailer(); +} else { +this.doClose = false; +}if (this.capturing) this.params.put("captureByteCount", Integer.$valueOf(this.byteCount)); +}); +Clazz.defineMethod(c$, "createPalette", +function(){ +var tempColors = new JU.Lst(); +var ciHash = new java.util.Hashtable(); +for (var i = 0, n = this.pixels.length; i < n; i++) { +var rgb = this.pixels[i]; +var key = Integer.$valueOf(rgb); +var item = ciHash.get(key); +if (item == null) { +item = Clazz.innerTypeInstance(javajs.img.GifEncoder.ColorItem, this, null, rgb, rgb == this.backgroundColor); +ciHash.put(key, item); +tempColors.addLast(item); +}} +var nColors = tempColors.size(); +System.out.println("GIF total image colors: " + nColors); +ciHash = null; +var cells = this.quantizeColors(tempColors); +nColors = cells.size(); +System.out.println("GIF final color count: " + nColors); +var colorMap = new java.util.Hashtable(); +this.bitsPerPixel = (nColors <= 2 ? 1 : nColors <= 4 ? 2 : nColors <= 16 ? 4 : 8); +this.palette = new Array(1 << this.bitsPerPixel); +for (var i = 0; i < nColors; i++) { +var c = cells.get(i); +colorMap.put(Integer.$valueOf(JU.CU.colorPtToFFRGB(this.palette[i] = c.setColor())), c); +} +this.pixels = this.indexPixels(cells, colorMap); +}); +Clazz.defineMethod(c$, "quantizeColors", +function(tempColors){ +var n = tempColors.size(); +var cells = new JU.Lst(); +var cc = Clazz.innerTypeInstance(javajs.img.GifEncoder.ColorCell, this, null, 0); +cc.addLast(Clazz.innerTypeInstance(javajs.img.GifEncoder.ColorItem, this, null, this.backgroundColor, true)); +cells.addLast(cc); +cc = Clazz.innerTypeInstance(javajs.img.GifEncoder.ColorCell, this, null, 1); +if (n > 256) cells.addLast(cc); +for (var i = 0; i < n; i++) { +var c = tempColors.get(i); +if (c.isBackground) continue; +cc.addLast(c); +if (n <= 256) { +cells.addLast(cc); +cc = Clazz.innerTypeInstance(javajs.img.GifEncoder.ColorCell, this, null, cells.size()); +}} +tempColors.clear(); +if (n > 256) while ((n = cells.size()) < 256) { +var maxVol = 0; +var maxCell = null; +for (var i = n; --i >= 1; ) { +var c = cells.get(i); +var v = c.getVolume(false); +if (v > maxVol) { +maxVol = v; +maxCell = c; +}} +if (maxCell == null || !maxCell.splitCell(cells)) break; +} +return cells; +}, "JU.Lst"); +Clazz.defineMethod(c$, "indexPixels", +function(cells, colorMap){ +var w2 = this.width + 2; +var errors = new Array(w2); +var newPixels = Clazz.newIntArray (this.pixels.length, 0); +var err = new JU.P3(); +var lab; +var rgb; +var nearestCell = new java.util.Hashtable(); +for (var i = 0, p = 0; i < this.height; ++i) { +var notLastRow = (i != this.height - 1); +for (var j = 0; j < this.width; ++j, p++) { +if (this.pixels[p] == this.backgroundColor) { +continue; +}var pe = errors[p % w2]; +if (pe == null || pe.x == 3.4028235E38) { +lab = null; +rgb = this.pixels[p]; +} else { +lab = this.toLABnorm(this.pixels[p]); +err = pe; +err.x = this.clamp(err.x, -75, 75); +err.y = this.clamp(err.y, -75, 75); +err.z = this.clamp(err.z, -75, 75); +lab.add(err); +rgb = JU.CU.colorPtToFFRGB(this.toRGB(lab)); +}var key = Integer.$valueOf(rgb); +var cell = colorMap.get(key); +if (cell == null) { +lab = this.toLABnorm(rgb); +cell = nearestCell.get(key); +if (cell == null) { +var maxerr = 3.4028235E38; +for (var ib = cells.size(); --ib >= 1; ) { +var c = cells.get(ib); +err.sub2(lab, c.center); +var d = err.lengthSquared(); +if (d < maxerr) { +maxerr = d; +cell = c; +}} +nearestCell.put(key, cell); +}if (this.floydSteinberg) { +err.sub2(lab, cell.center); +var notLastCol = (j < this.width - 1); +if (notLastCol) this.addError(err, 7, errors, p + 1, w2); +if (notLastRow) { +if (j > 0) this.addError(err, 3, errors, p + this.width - 1, w2); +this.addError(err, 5, errors, p + this.width, w2); +if (notLastCol) this.addError(err, 1, errors, p + this.width + 1, w2); +}}err.x = 3.4028235E38; +}newPixels[p] = cell.index; +} +} +return newPixels; +}, "JU.Lst,java.util.Map"); +Clazz.defineMethod(c$, "addError", +function(err, f, errors, p, w2){ +if (this.pixels[p] == this.backgroundColor) return; +p %= w2; +var errp = errors[p]; +if (errp == null) errp = errors[p] = new JU.P3(); + else if (errp.x == 3.4028235E38) errp.set(0, 0, 0); +errp.scaleAdd2(f / 16, err, errp); +}, "JU.P3,~N,~A,~N,~N"); +Clazz.defineMethod(c$, "toLABnorm", +function(rgb){ +var lab = JU.CU.colorPtFromInt(rgb, null); +this.rgbToXyz(lab, lab); +this.xyzToLab(lab, lab); +lab.y = (lab.y + 86.185) / (184.439) * 100; +lab.z = (lab.z + 107.863) / (202.345) * 100; +return lab; +}, "~N"); +Clazz.defineMethod(c$, "toRGB", +function(lab){ +var xyz = JU.P3.newP(lab); +xyz.y = xyz.y / 100 * (184.439) - 86.185; +xyz.z = xyz.z / 100 * (202.345) - 107.863; +this.labToXyz(xyz, xyz); +return this.xyzToRgb(xyz, xyz); +}, "JU.P3"); +Clazz.defineMethod(c$, "rgbToXyz", +function(rgb, xyz){ +if (xyz == null) xyz = new JU.P3(); +xyz.x = this.sxyz(rgb.x); +xyz.y = this.sxyz(rgb.y); +xyz.z = this.sxyz(rgb.z); +javajs.img.GifEncoder.rgb2xyz.rotate(xyz); +return xyz; +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "sxyz", +function(x){ +x /= 255; +return (x <= 0.04045 ? x / 12.92 : Math.pow(((x + 0.055) / 1.055), 2.4)) * 100; +}, "~N"); +Clazz.defineMethod(c$, "xyzToRgb", +function(xyz, rgb){ +if (rgb == null) rgb = new JU.P3(); +rgb.setT(xyz); +rgb.scale(0.01); +javajs.img.GifEncoder.xyz2rgb.rotate(rgb); +rgb.x = this.clamp(this.srgb(rgb.x), 0, 255); +rgb.y = this.clamp(this.srgb(rgb.y), 0, 255); +rgb.z = this.clamp(this.srgb(rgb.z), 0, 255); +return rgb; +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "srgb", +function(x){ +return (x > 0.0031308 ? (1.055 * Math.pow(x, 0.4166666666666667)) - 0.055 : x * 12.92) * 255; +}, "~N"); +Clazz.defineMethod(c$, "xyzToLab", +function(xyz, lab){ +if (lab == null) lab = new JU.P3(); +var x = this.flab(xyz.x / 95.0429); +var y = this.flab(xyz.y / 100); +var z = this.flab(xyz.z / 108.89); +lab.x = (116 * y) - 16; +lab.y = 500 * (x - y); +lab.z = 200 * (y - z); +return lab; +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "flab", +function(t){ +return (t > 8.85645168E-3 ? Math.pow(t, 0.333333333) : 7.78703704 * t + 0.137931034); +}, "~N"); +Clazz.defineMethod(c$, "labToXyz", +function(lab, xyz){ +if (xyz == null) xyz = new JU.P3(); +xyz.setT(lab); +var y = (xyz.x + 16) / 116; +var x = xyz.y / 500 + y; +var z = y - xyz.z / 200; +xyz.x = this.fxyz(x) * 95.0429; +xyz.y = this.fxyz(y) * 100; +xyz.z = this.fxyz(z) * 108.89; +return xyz; +}, "JU.P3,JU.P3"); +Clazz.defineMethod(c$, "fxyz", +function(t){ +return (t > 0.206896552 ? t * t * t : 0.128418549 * (t - 0.137931034)); +}, "~N"); +Clazz.defineMethod(c$, "clamp", +function(c, min, max){ +c = (c < min ? min : c > max ? max : c); +return (min == 0 ? Math.round(c) : c); +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "writeHeader", +function(){ +this.putString("GIF89a"); +this.putWord(this.width); +this.putWord(this.height); +this.putByte(0); +this.putByte(0); +this.putByte(0); +}); +Clazz.defineMethod(c$, "writeGraphicControlExtension", +function(){ +if (this.isTransparent || this.delayTime100ths >= 0) { +this.putByte(0x21); +this.putByte(0xf9); +this.putByte(4); +this.putByte((this.isTransparent ? 9 : 0) | (this.delayTime100ths > 0 ? 2 : 0)); +this.putWord(this.delayTime100ths > 0 ? this.delayTime100ths : 0); +this.putByte(0); +this.putByte(0); +}}); +Clazz.defineMethod(c$, "writeNetscapeLoopExtension", +function(){ +this.putByte(0x21); +this.putByte(0xff); +this.putByte(0x0B); +this.putString("NETSCAPE2.0"); +this.putByte(3); +this.putByte(1); +this.putWord(0); +this.putByte(0); +}); +Clazz.defineMethod(c$, "writeImage", +function(){ +this.putByte(0x2C); +this.putWord(0); +this.putWord(0); +this.putWord(this.width); +this.putWord(this.height); +var packedFields = 0x80 | (this.interlaced ? 0x40 : 0) | (this.bitsPerPixel - 1); +this.putByte(packedFields); +var colorMapSize = 1 << this.bitsPerPixel; +var p = new JU.P3(); +for (var i = 0; i < colorMapSize; i++) { +if (this.palette[i] != null) p = this.palette[i]; +this.putByte(Clazz.floatToInt(p.x)); +this.putByte(Clazz.floatToInt(p.y)); +this.putByte(Clazz.floatToInt(p.z)); +} +this.putByte(this.initCodeSize = (this.bitsPerPixel <= 1 ? 2 : this.bitsPerPixel)); +this.compress(); +this.putByte(0); +}); +Clazz.defineMethod(c$, "writeTrailer", +function(){ +this.putByte(0x3B); +}); +Clazz.defineMethod(c$, "nextPixel", +function(){ +if (this.countDown-- == 0) return -1; +var colorIndex = this.pixels[this.curpt]; +++this.curx; +if (this.curx == this.width) { +this.curx = 0; +if (this.interlaced) this.updateY(javajs.img.GifEncoder.INTERLACE_PARAMS[this.pass], javajs.img.GifEncoder.INTERLACE_PARAMS[this.pass + 4]); + else ++this.cury; +}this.curpt = this.cury * this.width + this.curx; +return colorIndex & 0xff; +}); +Clazz.defineMethod(c$, "updateY", +function(yNext, yNew){ +this.cury += yNext; +if (yNew >= 0 && this.cury >= this.height) { +this.cury = yNew; +++this.pass; +}}, "~N,~N"); +Clazz.defineMethod(c$, "putWord", +function(w){ +this.putByte(w); +this.putByte(w >> 8); +}, "~N"); +c$.MAXCODE = Clazz.defineMethod(c$, "MAXCODE", +function(nBits){ +return (1 << nBits) - 1; +}, "~N"); +Clazz.defineMethod(c$, "compress", +function(){ +this.countDown = this.width * this.height; +this.pass = 0; +this.curx = 0; +this.cury = 0; +this.clearFlag = false; +this.nBits = this.initCodeSize + 1; +this.maxcode = javajs.img.GifEncoder.MAXCODE(this.nBits); +this.clearCode = 1 << this.initCodeSize; +this.EOFCode = this.clearCode + 1; +this.freeEnt = this.clearCode + 2; +this.bufPt = 0; +var ent = this.nextPixel(); +var hshift = 0; +var fcode; +for (fcode = this.hsize; fcode < 65536; fcode *= 2) ++hshift; + +hshift = 8 - hshift; +var hsizeReg = this.hsize; +this.clearHash(hsizeReg); +this.output(this.clearCode); +var c; +outer_loop : while ((c = this.nextPixel()) != -1) { +fcode = (c << this.maxbits) + ent; +var i = (c << hshift) ^ ent; +if (this.htab[i] == fcode) { +ent = this.codetab[i]; +continue; +} else if (this.htab[i] >= 0) { +var disp = hsizeReg - i; +if (i == 0) disp = 1; +do { +if ((i -= disp) < 0) i += hsizeReg; +if (this.htab[i] == fcode) { +ent = this.codetab[i]; +continue outer_loop; +}} while (this.htab[i] >= 0); +}this.output(ent); +ent = c; +if (this.freeEnt < this.maxmaxcode) { +this.codetab[i] = this.freeEnt++; +this.htab[i] = fcode; +} else { +this.clearBlock(); +}} +this.output(ent); +this.output(this.EOFCode); +}); +Clazz.defineMethod(c$, "output", +function(code){ +this.curAccum &= this.masks[this.curBits]; +if (this.curBits > 0) this.curAccum |= (code << this.curBits); + else this.curAccum = code; +this.curBits += this.nBits; +while (this.curBits >= 8) { +this.byteOut((this.curAccum & 0xff)); +this.curAccum >>= 8; +this.curBits -= 8; +} +if (this.freeEnt > this.maxcode || this.clearFlag) { +if (this.clearFlag) { +this.maxcode = javajs.img.GifEncoder.MAXCODE(this.nBits = this.initCodeSize + 1); +this.clearFlag = false; +} else { +++this.nBits; +if (this.nBits == this.maxbits) this.maxcode = this.maxmaxcode; + else this.maxcode = javajs.img.GifEncoder.MAXCODE(this.nBits); +}}if (code == this.EOFCode) { +while (this.curBits > 0) { +this.byteOut((this.curAccum & 0xff)); +this.curAccum >>= 8; +this.curBits -= 8; +} +this.flushBytes(); +}}, "~N"); +Clazz.defineMethod(c$, "clearBlock", +function(){ +this.clearHash(this.hsize); +this.freeEnt = this.clearCode + 2; +this.clearFlag = true; +this.output(this.clearCode); +}); +Clazz.defineMethod(c$, "clearHash", +function(hsize){ +for (var i = 0; i < hsize; ++i) this.htab[i] = -1; + +}, "~N"); +Clazz.defineMethod(c$, "byteOut", +function(c){ +this.buf[this.bufPt++] = c; +if (this.bufPt >= 254) this.flushBytes(); +}, "~N"); +Clazz.defineMethod(c$, "flushBytes", +function(){ +if (this.bufPt > 0) { +this.putByte(this.bufPt); +this.out.write(this.buf, 0, this.bufPt); +this.byteCount += this.bufPt; +this.bufPt = 0; +}}); +c$.$GifEncoder$ColorItem$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.isBackground = false; +Clazz.instantialize(this, arguments);}, javajs.img.GifEncoder, "ColorItem", JU.P3); +Clazz.makeConstructor(c$, +function(rgb, isBackground){ +Clazz.superConstructor (this, javajs.img.GifEncoder.ColorItem, []); +this.isBackground = isBackground; +this.setT(this.b$["javajs.img.GifEncoder"].toLABnorm(rgb)); +}, "~N,~B"); +/*eoif4*/})(); +}; +c$.$GifEncoder$ColorCell$ = function(){ +/*if4*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +Clazz.prepareCallback(this, arguments); +this.index = 0; +this.center = null; +this.volume = 0; +Clazz.instantialize(this, arguments);}, javajs.img.GifEncoder, "ColorCell", JU.Lst); +Clazz.makeConstructor(c$, +function(index){ +Clazz.superConstructor (this, javajs.img.GifEncoder.ColorCell, []); +this.index = index; +}, "~N"); +Clazz.defineMethod(c$, "getVolume", +function(doVisualize){ +if (this.volume != 0) return this.volume; +if (this.size() < 2) return -1; +var maxx = -2147483647; +var minx = 2147483647; +var maxy = -2147483647; +var miny = 2147483647; +var maxz = -2147483647; +var minz = 2147483647; +var n = this.size(); +for (var i = n; --i >= 0; ) { +var xyz = this.get(i); +if (xyz.x < minx) minx = xyz.x; +if (xyz.y < miny) miny = xyz.y; +if (xyz.z < minz) minz = xyz.z; +if (xyz.x > maxx) maxx = xyz.x; +if (xyz.y > maxy) maxy = xyz.y; +if (xyz.z > maxz) maxz = xyz.z; +} +var dx = (maxx - minx); +var dy = (maxy - miny); +var dz = (maxz - minz); +return this.volume = dx * dx + dy * dy + dz * dz; +}, "~B"); +Clazz.defineMethod(c$, "setColor", +function(){ +var count = this.size(); +this.center = new JU.P3(); +for (var i = count; --i >= 0; ) this.center.add(this.get(i)); + +this.center.scale(1 / count); +return this.b$["javajs.img.GifEncoder"].toRGB(this.center); +}); +Clazz.defineMethod(c$, "splitCell", +function(cells){ +var n = this.size(); +if (n < 2) return false; +var newIndex = cells.size(); +var newCell = Clazz.innerTypeInstance(javajs.img.GifEncoder.ColorCell, this, null, newIndex); +cells.addLast(newCell); +var ranges = Clazz.newFloatArray (3, 3, 0); +for (var ic = 0; ic < 3; ic++) { +var low = 3.4028235E38; +var high = -3.4028235E38; +for (var i = n; --i >= 0; ) { +var lab = this.get(i); +var v = (ic == 0 ? lab.x : ic == 1 ? lab.y : lab.z); +if (low > v) low = v; +if (high < v) high = v; +} +ranges[0][ic] = low; +ranges[1][ic] = high; +ranges[2][ic] = high - low; +} +var r = ranges[2]; +var mode = (r[0] >= r[1] ? (r[0] >= r[2] ? 0 : 2) : r[1] >= r[2] ? 1 : 2); +var val = ranges[0][mode] + ranges[2][mode] / 2; +this.volume = 0; +switch (mode) { +case 0: +for (var i = n; --i >= 0; ) if (this.get(i).x >= val) newCell.addLast(this.removeItemAt(i)); + +break; +case 1: +for (var i = n; --i >= 0; ) if (this.get(i).y >= val) newCell.addLast(this.removeItemAt(i)); + +break; +case 2: +for (var i = this.size(); --i >= 0; ) if (this.get(i).z >= val) newCell.addLast(this.removeItemAt(i)); + +break; +} +return true; +}, "JU.Lst"); +/*eoif4*/})(); +}; +c$.xyz2rgb = null; +c$.rgb2xyz = null; +{ +javajs.img.GifEncoder.rgb2xyz = JU.M3.newA9( Clazz.newFloatArray(-1, [0.4124, 0.3576, 0.1805, 0.2126, 0.7152, 0.0722, 0.0193, 0.1192, 0.9505])); +javajs.img.GifEncoder.xyz2rgb = JU.M3.newA9( Clazz.newFloatArray(-1, [3.2406, -1.5372, -0.4986, -0.9689, 1.8758, 0.0415, 0.0557, -0.204, 1.0570])); +}c$.INTERLACE_PARAMS = Clazz.newIntArray(-1, [8, 8, 4, 2, 4, 2, 1, 0]); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/ImageEncoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/ImageEncoder.js new file mode 100755 index 000000000000..f2774e640e23 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/ImageEncoder.js @@ -0,0 +1,41 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(["javajs.api.GenericImageEncoder"], "javajs.img.ImageEncoder", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.out = null; +this.width = -1; +this.height = -1; +this.quality = -1; +this.date = null; +this.logging = false; +this.doClose = true; +this.pixels = null; +Clazz.instantialize(this, arguments);}, javajs.img, "ImageEncoder", null, javajs.api.GenericImageEncoder); +Clazz.overrideMethod(c$, "createImage", +function(type, out, params){ +this.out = out; +this.logging = (Boolean.TRUE === params.get("logging")); +this.width = (params.get("imageWidth")).intValue(); +this.height = (params.get("imageHeight")).intValue(); +this.pixels = params.get("imagePixels"); +this.date = params.get("date"); +var q = params.get("quality"); +this.quality = (q == null ? -1 : q.intValue()); +this.setParams(params); +this.generate(); +this.close(); +return this.doClose; +}, "~S,JU.OC,java.util.Map"); +Clazz.defineMethod(c$, "putString", +function(s){ +var b = s.getBytes(); +this.out.write(b, 0, b.length); +}, "~S"); +Clazz.defineMethod(c$, "putByte", +function(b){ +this.out.writeByteAsInt(b); +}, "~N"); +Clazz.defineMethod(c$, "close", +function(){ +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/Jpg64Encoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/Jpg64Encoder.js new file mode 100755 index 000000000000..7b7edb184554 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/Jpg64Encoder.js @@ -0,0 +1,23 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(["javajs.img.JpgEncoder"], "javajs.img.Jpg64Encoder", ["JU.Base64"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.outTemp = null; +Clazz.instantialize(this, arguments);}, javajs.img, "Jpg64Encoder", javajs.img.JpgEncoder); +Clazz.defineMethod(c$, "setParams", +function(params){ +this.defaultQuality = 75; +this.outTemp = params.remove("outputChannelTemp"); +Clazz.superCall(this, javajs.img.Jpg64Encoder, "setParams", [params]); +}, "java.util.Map"); +Clazz.defineMethod(c$, "generate", +function(){ +var out0 = this.out; +this.out = this.outTemp; +Clazz.superCall(this, javajs.img.Jpg64Encoder, "generate", []); +var bytes = JU.Base64.getBytes64(this.out.toByteArray()); +this.outTemp = null; +this.out = out0; +this.out.write(bytes, 0, bytes.length); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/JpgEncoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/JpgEncoder.js new file mode 100755 index 000000000000..cab1621b7d51 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/JpgEncoder.js @@ -0,0 +1,743 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(["javajs.img.ImageEncoder", "JU.AU"], ["javajs.img.DCT", "$.Huffman", "$.JpgEncoder", "$.JpegObj"], null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.jpegObj = null; +this.huf = null; +this.dct = null; +this.defaultQuality = 100; +this.applicationTag = null; +Clazz.instantialize(this, arguments);}, javajs.img, "JpgEncoder", javajs.img.ImageEncoder); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, javajs.img.JpgEncoder, []); +}); +Clazz.overrideMethod(c$, "setParams", +function(params){ +if (this.quality <= 0) this.quality = (params.containsKey("qualityJPG") ? (params.get("qualityJPG")).intValue() : this.defaultQuality); +this.jpegObj = new javajs.img.JpegObj(); +this.jpegObj.comment = params.get("comment"); +this.applicationTag = params.get("jpgAppTag"); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "generate", +function(){ +this.jpegObj.imageWidth = this.width; +this.jpegObj.imageHeight = this.height; +this.dct = new javajs.img.DCT(this.quality); +this.huf = new javajs.img.Huffman(this.width, this.height); +if (this.jpegObj == null) return; +this.jpegObj.getYCCArray(this.pixels); +var longState = this.writeHeaders(this.jpegObj, this.dct); +this.writeCompressedData(this.jpegObj, this.dct, this.huf); +this.writeMarker(javajs.img.JpgEncoder.eoi); +if (longState != null) { +var b = longState.getBytes(); +this.out.write(b, 0, b.length); +}}); +Clazz.defineMethod(c$, "writeCompressedData", +function(jpegObj, dct, huf){ +var i; +var j; +var r; +var c; +var a; +var b; +var comp; +var xpos; +var ypos; +var xblockoffset; +var yblockoffset; +var inputArray; +var dctArray1 = Clazz.newFloatArray (8, 8, 0); +var dctArray2 = Clazz.newDoubleArray (8, 8, 0); +var dctArray3 = Clazz.newIntArray (64, 0); +var lastDCvalue = Clazz.newIntArray (jpegObj.numberOfComponents, 0); +var minBlockWidth; +var minBlockHeight; +minBlockWidth = ((huf.imageWidth % 8 != 0) ? Clazz.doubleToInt(Math.floor(huf.imageWidth / 8.0) + 1) * 8 : huf.imageWidth); +minBlockHeight = ((huf.imageHeight % 8 != 0) ? Clazz.doubleToInt(Math.floor(huf.imageHeight / 8.0) + 1) * 8 : huf.imageHeight); +for (comp = 0; comp < jpegObj.numberOfComponents; comp++) { +minBlockWidth = Math.min(minBlockWidth, jpegObj.blockWidth[comp]); +minBlockHeight = Math.min(minBlockHeight, jpegObj.blockHeight[comp]); +} +xpos = 0; +for (r = 0; r < minBlockHeight; r++) { +for (c = 0; c < minBlockWidth; c++) { +xpos = c * 8; +ypos = r * 8; +for (comp = 0; comp < jpegObj.numberOfComponents; comp++) { +inputArray = jpegObj.components[comp]; +var vsampF = jpegObj.vsampFactor[comp]; +var hsampF = jpegObj.hsampFactor[comp]; +var qNumber = jpegObj.qtableNumber[comp]; +var dcNumber = jpegObj.dctableNumber[comp]; +var acNumber = jpegObj.actableNumber[comp]; +for (i = 0; i < vsampF; i++) { +for (j = 0; j < hsampF; j++) { +xblockoffset = j * 8; +yblockoffset = i * 8; +for (a = 0; a < 8; a++) { +for (b = 0; b < 8; b++) { +dctArray1[a][b] = inputArray[ypos + yblockoffset + a][xpos + xblockoffset + b]; +} +} +dctArray2 = javajs.img.DCT.forwardDCT(dctArray1); +dctArray3 = javajs.img.DCT.quantizeBlock(dctArray2, dct.divisors[qNumber]); +huf.HuffmanBlockEncoder(this.out, dctArray3, lastDCvalue[comp], dcNumber, acNumber); +lastDCvalue[comp] = dctArray3[0]; +} +} +} +} +} +huf.flushBuffer(this.out); +}, "javajs.img.JpegObj,javajs.img.DCT,javajs.img.Huffman"); +Clazz.defineMethod(c$, "writeHeaders", +function(jpegObj, dct){ +var i; +var j; +var index; +var offset; +var tempArray; +this.writeMarker(javajs.img.JpgEncoder.soi); +this.writeArray(javajs.img.JpgEncoder.jfif); +var comment = null; +if (jpegObj.comment.length > 0) this.writeString(jpegObj.comment, 0xE1); +this.writeString("JPEG Encoder Copyright 1998, James R. Weeks and BioElectroMech.\n\n", 0xFE); +var dqt = Clazz.newByteArray (134, 0); +dqt[0] = 0xFF; +dqt[1] = 0xDB; +dqt[2] = 0; +dqt[3] = 132; +offset = 4; +for (i = 0; i < 2; i++) { +dqt[offset++] = ((0) + i); +tempArray = dct.quantum[i]; +for (j = 0; j < 64; j++) { +dqt[offset++] = tempArray[javajs.img.Huffman.jpegNaturalOrder[j]]; +} +} +this.writeArray(dqt); +var sof = Clazz.newByteArray (19, 0); +sof[0] = 0xFF; +sof[1] = 0xC0; +sof[2] = 0; +sof[3] = 17; +sof[4] = jpegObj.precision; +sof[5] = ((jpegObj.imageHeight >> 8) & 0xFF); +sof[6] = ((jpegObj.imageHeight) & 0xFF); +sof[7] = ((jpegObj.imageWidth >> 8) & 0xFF); +sof[8] = ((jpegObj.imageWidth) & 0xFF); +sof[9] = jpegObj.numberOfComponents; +index = 10; +for (i = 0; i < sof[9]; i++) { +sof[index++] = jpegObj.compID[i]; +sof[index++] = ((jpegObj.hsampFactor[i] << 4) + jpegObj.vsampFactor[i]); +sof[index++] = jpegObj.qtableNumber[i]; +} +this.writeArray(sof); +this.WriteDHTHeader(javajs.img.Huffman.bitsDCluminance, javajs.img.Huffman.valDCluminance); +this.WriteDHTHeader(javajs.img.Huffman.bitsACluminance, javajs.img.Huffman.valACluminance); +this.WriteDHTHeader(javajs.img.Huffman.bitsDCchrominance, javajs.img.Huffman.valDCchrominance); +this.WriteDHTHeader(javajs.img.Huffman.bitsACchrominance, javajs.img.Huffman.valACchrominance); +var sos = Clazz.newByteArray (14, 0); +sos[0] = 0xFF; +sos[1] = 0xDA; +sos[2] = 0; +sos[3] = 12; +sos[4] = jpegObj.numberOfComponents; +index = 5; +for (i = 0; i < sos[4]; i++) { +sos[index++] = jpegObj.compID[i]; +sos[index++] = ((jpegObj.dctableNumber[i] << 4) + jpegObj.actableNumber[i]); +} +sos[index++] = jpegObj.ss; +sos[index++] = jpegObj.se; +sos[index++] = ((jpegObj.ah << 4) + jpegObj.al); +this.writeArray(sos); +return comment; +}, "javajs.img.JpegObj,javajs.img.DCT"); +Clazz.defineMethod(c$, "writeString", +function(s, id){ +var len = s.length; +var i0 = 0; +var suffix = this.applicationTag; +while (i0 < len) { +var nBytes = len - i0; +if (nBytes > 65510) { +nBytes = 65500; +var pt = s.lastIndexOf('\n', i0 + nBytes); +if (pt > i0 + 1) nBytes = pt - i0; +}if (i0 + nBytes == len) suffix = ""; +this.writeTag(nBytes + suffix.length, id); +this.writeArray(s.substring(i0, i0 + nBytes).getBytes()); +if (suffix.length > 0) this.writeArray(suffix.getBytes()); +i0 += nBytes; +} +}, "~S,~N"); +Clazz.defineMethod(c$, "writeTag", +function(length, id){ +length += 2; +var com = Clazz.newByteArray (4, 0); +com[0] = 0xFF; +com[1] = id; +com[2] = ((length >> 8) & 0xFF); +com[3] = (length & 0xFF); +this.writeArray(com); +}, "~N,~N"); +Clazz.defineMethod(c$, "WriteDHTHeader", +function(bits, val){ +var dht; +var bytes = 0; +for (var j = 1; j < 17; j++) bytes += bits[j]; + +dht = Clazz.newByteArray (21 + bytes, 0); +dht[0] = 0xFF; +dht[1] = 0xC4; +var index = 4; +for (var j = 0; j < 17; j++) dht[index++] = bits[j]; + +for (var j = 0; j < bytes; j++) dht[index++] = val[j]; + +dht[2] = (((index - 2) >> 8) & 0xFF); +dht[3] = ((index - 2) & 0xFF); +this.writeArray(dht); +}, "~A,~A"); +Clazz.defineMethod(c$, "writeMarker", +function(data){ +this.out.write(data, 0, 2); +}, "~A"); +Clazz.defineMethod(c$, "writeArray", +function(data){ +this.out.write(data, 0, data.length); +}, "~A"); +c$.eoi = Clazz.newByteArray(-1, [0xFF, 0xD9]); +c$.jfif = Clazz.newByteArray(-1, [0xff, 0xe0, 0, 16, 0x4a, 0x46, 0x49, 0x46, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0]); +c$.soi = Clazz.newByteArray(-1, [0xFF, 0xD8]); +var c$ = Clazz.decorateAsClass(function(){ +this.quantum = null; +this.divisors = null; +this.quantum_luminance = null; +this.DivisorsLuminance = null; +this.quantum_chrominance = null; +this.DivisorsChrominance = null; +Clazz.instantialize(this, arguments);}, javajs.img, "DCT", null); +Clazz.prepareFields (c$, function(){ +this.quantum = JU.AU.newInt2(2); +this.divisors = JU.AU.newDouble2(2); +this.quantum_luminance = Clazz.newIntArray (64, 0); +this.DivisorsLuminance = Clazz.newDoubleArray (64, 0); +this.quantum_chrominance = Clazz.newIntArray (64, 0); +this.DivisorsChrominance = Clazz.newDoubleArray (64, 0); +}); +Clazz.makeConstructor(c$, +function(quality){ +this.initMatrix(quality); +}, "~N"); +Clazz.defineMethod(c$, "initMatrix", +function(quality){ +quality = (quality < 1 ? 1 : quality > 100 ? 100 : quality); +quality = (quality < 50 ? Clazz.doubleToInt(5000 / quality) : 200 - quality * 2); +this.quantum_luminance[0] = 16; +this.quantum_luminance[1] = 11; +this.quantum_luminance[2] = 10; +this.quantum_luminance[3] = 16; +this.quantum_luminance[4] = 24; +this.quantum_luminance[5] = 40; +this.quantum_luminance[6] = 51; +this.quantum_luminance[7] = 61; +this.quantum_luminance[8] = 12; +this.quantum_luminance[9] = 12; +this.quantum_luminance[10] = 14; +this.quantum_luminance[11] = 19; +this.quantum_luminance[12] = 26; +this.quantum_luminance[13] = 58; +this.quantum_luminance[14] = 60; +this.quantum_luminance[15] = 55; +this.quantum_luminance[16] = 14; +this.quantum_luminance[17] = 13; +this.quantum_luminance[18] = 16; +this.quantum_luminance[19] = 24; +this.quantum_luminance[20] = 40; +this.quantum_luminance[21] = 57; +this.quantum_luminance[22] = 69; +this.quantum_luminance[23] = 56; +this.quantum_luminance[24] = 14; +this.quantum_luminance[25] = 17; +this.quantum_luminance[26] = 22; +this.quantum_luminance[27] = 29; +this.quantum_luminance[28] = 51; +this.quantum_luminance[29] = 87; +this.quantum_luminance[30] = 80; +this.quantum_luminance[31] = 62; +this.quantum_luminance[32] = 18; +this.quantum_luminance[33] = 22; +this.quantum_luminance[34] = 37; +this.quantum_luminance[35] = 56; +this.quantum_luminance[36] = 68; +this.quantum_luminance[37] = 109; +this.quantum_luminance[38] = 103; +this.quantum_luminance[39] = 77; +this.quantum_luminance[40] = 24; +this.quantum_luminance[41] = 35; +this.quantum_luminance[42] = 55; +this.quantum_luminance[43] = 64; +this.quantum_luminance[44] = 81; +this.quantum_luminance[45] = 104; +this.quantum_luminance[46] = 113; +this.quantum_luminance[47] = 92; +this.quantum_luminance[48] = 49; +this.quantum_luminance[49] = 64; +this.quantum_luminance[50] = 78; +this.quantum_luminance[51] = 87; +this.quantum_luminance[52] = 103; +this.quantum_luminance[53] = 121; +this.quantum_luminance[54] = 120; +this.quantum_luminance[55] = 101; +this.quantum_luminance[56] = 72; +this.quantum_luminance[57] = 92; +this.quantum_luminance[58] = 95; +this.quantum_luminance[59] = 98; +this.quantum_luminance[60] = 112; +this.quantum_luminance[61] = 100; +this.quantum_luminance[62] = 103; +this.quantum_luminance[63] = 99; +javajs.img.DCT.AANscale(this.DivisorsLuminance, this.quantum_luminance, quality); +for (var i = 4; i < 64; i++) this.quantum_chrominance[i] = 99; + +this.quantum_chrominance[0] = 17; +this.quantum_chrominance[1] = 18; +this.quantum_chrominance[2] = 24; +this.quantum_chrominance[3] = 47; +this.quantum_chrominance[8] = 18; +this.quantum_chrominance[9] = 21; +this.quantum_chrominance[10] = 26; +this.quantum_chrominance[11] = 66; +this.quantum_chrominance[16] = 24; +this.quantum_chrominance[17] = 26; +this.quantum_chrominance[18] = 56; +this.quantum_chrominance[24] = 47; +this.quantum_chrominance[25] = 66; +javajs.img.DCT.AANscale(this.DivisorsChrominance, this.quantum_chrominance, quality); +this.quantum[0] = this.quantum_luminance; +this.quantum[1] = this.quantum_chrominance; +this.divisors[0] = this.DivisorsLuminance; +this.divisors[1] = this.DivisorsChrominance; +}, "~N"); +c$.AANscale = Clazz.defineMethod(c$, "AANscale", +function(divisors, values, quality){ +for (var j = 0; j < 64; j++) { +var temp = Clazz.doubleToInt((values[j] * quality + 50) / 100); +values[j] = (temp < 1 ? 1 : temp > 255 ? 255 : temp); +} +for (var i = 0, index = 0; i < 8; i++) for (var j = 0; j < 8; j++, index++) divisors[index] = (0.125 / (values[index] * javajs.img.DCT.AANscaleFactor[i] * javajs.img.DCT.AANscaleFactor[j])); + + +}, "~A,~A,~N"); +c$.forwardDCT = Clazz.defineMethod(c$, "forwardDCT", +function(input){ +var output = Clazz.newDoubleArray (8, 8, 0); +var tmp0; +var tmp1; +var tmp2; +var tmp3; +var tmp4; +var tmp5; +var tmp6; +var tmp7; +var tmp10; +var tmp11; +var tmp12; +var tmp13; +var z1; +var z2; +var z3; +var z4; +var z5; +var z11; +var z13; +for (var i = 0; i < 8; i++) for (var j = 0; j < 8; j++) output[i][j] = (input[i][j] - 128.0); + + +for (var i = 0; i < 8; i++) { +tmp0 = output[i][0] + output[i][7]; +tmp7 = output[i][0] - output[i][7]; +tmp1 = output[i][1] + output[i][6]; +tmp6 = output[i][1] - output[i][6]; +tmp2 = output[i][2] + output[i][5]; +tmp5 = output[i][2] - output[i][5]; +tmp3 = output[i][3] + output[i][4]; +tmp4 = output[i][3] - output[i][4]; +tmp10 = tmp0 + tmp3; +tmp13 = tmp0 - tmp3; +tmp11 = tmp1 + tmp2; +tmp12 = tmp1 - tmp2; +output[i][0] = tmp10 + tmp11; +output[i][4] = tmp10 - tmp11; +z1 = (tmp12 + tmp13) * 0.707106781; +output[i][2] = tmp13 + z1; +output[i][6] = tmp13 - z1; +tmp10 = tmp4 + tmp5; +tmp11 = tmp5 + tmp6; +tmp12 = tmp6 + tmp7; +z5 = (tmp10 - tmp12) * 0.382683433; +z2 = 0.541196100 * tmp10 + z5; +z4 = 1.306562965 * tmp12 + z5; +z3 = tmp11 * 0.707106781; +z11 = tmp7 + z3; +z13 = tmp7 - z3; +output[i][5] = z13 + z2; +output[i][3] = z13 - z2; +output[i][1] = z11 + z4; +output[i][7] = z11 - z4; +} +for (var i = 0; i < 8; i++) { +tmp0 = output[0][i] + output[7][i]; +tmp7 = output[0][i] - output[7][i]; +tmp1 = output[1][i] + output[6][i]; +tmp6 = output[1][i] - output[6][i]; +tmp2 = output[2][i] + output[5][i]; +tmp5 = output[2][i] - output[5][i]; +tmp3 = output[3][i] + output[4][i]; +tmp4 = output[3][i] - output[4][i]; +tmp10 = tmp0 + tmp3; +tmp13 = tmp0 - tmp3; +tmp11 = tmp1 + tmp2; +tmp12 = tmp1 - tmp2; +output[0][i] = tmp10 + tmp11; +output[4][i] = tmp10 - tmp11; +z1 = (tmp12 + tmp13) * 0.707106781; +output[2][i] = tmp13 + z1; +output[6][i] = tmp13 - z1; +tmp10 = tmp4 + tmp5; +tmp11 = tmp5 + tmp6; +tmp12 = tmp6 + tmp7; +z5 = (tmp10 - tmp12) * 0.382683433; +z2 = 0.541196100 * tmp10 + z5; +z4 = 1.306562965 * tmp12 + z5; +z3 = tmp11 * 0.707106781; +z11 = tmp7 + z3; +z13 = tmp7 - z3; +output[5][i] = z13 + z2; +output[3][i] = z13 - z2; +output[1][i] = z11 + z4; +output[7][i] = z11 - z4; +} +return output; +}, "~A"); +c$.quantizeBlock = Clazz.defineMethod(c$, "quantizeBlock", +function(inputData, divisorsCode){ +var outputData = Clazz.newIntArray (64, 0); +for (var i = 0, index = 0; i < 8; i++) for (var j = 0; j < 8; j++, index++) outputData[index] = (Math.round(inputData[i][j] * divisorsCode[index])); + + +return outputData; +}, "~A,~A"); +c$.AANscaleFactor = Clazz.newDoubleArray(-1, [1.0, 1.387039845, 1.306562965, 1.175875602, 1.0, 0.785694958, 0.541196100, 0.275899379]); +var c$ = Clazz.decorateAsClass(function(){ +this.bufferPutBits = 0; +this.bufferPutBuffer = 0; +this.imageHeight = 0; +this.imageWidth = 0; +this.dc_matrix0 = null; +this.ac_matrix0 = null; +this.dc_matrix1 = null; +this.ac_matrix1 = null; +this.dc_matrix = null; +this.ac_matrix = null; +this.numOfDCTables = 0; +this.numOfACTables = 0; +Clazz.instantialize(this, arguments);}, javajs.img, "Huffman", null); +Clazz.makeConstructor(c$, +function(width, height){ +this.initHuf(); +this.imageWidth = width; +this.imageHeight = height; +}, "~N,~N"); +Clazz.defineMethod(c$, "HuffmanBlockEncoder", +function(out, zigzag, prec, dcCode, acCode){ +var temp; +var temp2; +var nbits; +var k; +var r; +var i; +this.numOfDCTables = 2; +this.numOfACTables = 2; +var matrixDC = this.dc_matrix[dcCode]; +var matrixAC = this.ac_matrix[acCode]; +temp = temp2 = zigzag[0] - prec; +if (temp < 0) { +temp = -temp; +temp2--; +}nbits = 0; +while (temp != 0) { +nbits++; +temp >>= 1; +} +this.bufferIt(out, matrixDC[nbits][0], matrixDC[nbits][1]); +if (nbits != 0) { +this.bufferIt(out, temp2, nbits); +}r = 0; +for (k = 1; k < 64; k++) { +if ((temp = zigzag[javajs.img.Huffman.jpegNaturalOrder[k]]) == 0) { +r++; +} else { +while (r > 15) { +this.bufferIt(out, matrixAC[0xF0][0], matrixAC[0xF0][1]); +r -= 16; +} +temp2 = temp; +if (temp < 0) { +temp = -temp; +temp2--; +}nbits = 1; +while ((temp >>= 1) != 0) { +nbits++; +} +i = (r << 4) + nbits; +this.bufferIt(out, matrixAC[i][0], matrixAC[i][1]); +this.bufferIt(out, temp2, nbits); +r = 0; +}} +if (r > 0) { +this.bufferIt(out, matrixAC[0][0], matrixAC[0][1]); +}}, "JU.OC,~A,~N,~N,~N"); +Clazz.defineMethod(c$, "bufferIt", +function(out, code, size){ +var putBuffer = code; +var putBits = this.bufferPutBits; +putBuffer &= (1 << size) - 1; +putBits += size; +putBuffer <<= 24 - putBits; +putBuffer |= this.bufferPutBuffer; +while (putBits >= 8) { +var c = ((putBuffer >> 16) & 0xFF); +out.writeByteAsInt(c); +if (c == 0xFF) { +out.writeByteAsInt(0); +}putBuffer <<= 8; +putBits -= 8; +} +this.bufferPutBuffer = putBuffer; +this.bufferPutBits = putBits; +}, "JU.OC,~N,~N"); +Clazz.defineMethod(c$, "flushBuffer", +function(out){ +var putBuffer = this.bufferPutBuffer; +var putBits = this.bufferPutBits; +while (putBits >= 8) { +var c = ((putBuffer >> 16) & 0xFF); +out.writeByteAsInt(c); +if (c == 0xFF) { +out.writeByteAsInt(0); +}putBuffer <<= 8; +putBits -= 8; +} +if (putBits > 0) { +var c = ((putBuffer >> 16) & 0xFF); +out.writeByteAsInt(c); +}}, "JU.OC"); +Clazz.defineMethod(c$, "initHuf", +function(){ +this.dc_matrix0 = Clazz.newIntArray (12, 2, 0); +this.dc_matrix1 = Clazz.newIntArray (12, 2, 0); +this.ac_matrix0 = Clazz.newIntArray (255, 2, 0); +this.ac_matrix1 = Clazz.newIntArray (255, 2, 0); +this.dc_matrix = JU.AU.newInt3(2, -1); +this.ac_matrix = JU.AU.newInt3(2, -1); +var p; +var l; +var i; +var lastp; +var si; +var code; +var huffsize = Clazz.newIntArray (257, 0); +var huffcode = Clazz.newIntArray (257, 0); +p = 0; +for (l = 1; l <= 16; l++) { +for (i = javajs.img.Huffman.bitsDCchrominance[l]; --i >= 0; ) { +huffsize[p++] = l; +} +} +huffsize[p] = 0; +lastp = p; +code = 0; +si = huffsize[0]; +p = 0; +while (huffsize[p] != 0) { +while (huffsize[p] == si) { +huffcode[p++] = code; +code++; +} +code <<= 1; +si++; +} +for (p = 0; p < lastp; p++) { +this.dc_matrix1[javajs.img.Huffman.valDCchrominance[p]][0] = huffcode[p]; +this.dc_matrix1[javajs.img.Huffman.valDCchrominance[p]][1] = huffsize[p]; +} +p = 0; +for (l = 1; l <= 16; l++) { +for (i = javajs.img.Huffman.bitsACchrominance[l]; --i >= 0; ) { +huffsize[p++] = l; +} +} +huffsize[p] = 0; +lastp = p; +code = 0; +si = huffsize[0]; +p = 0; +while (huffsize[p] != 0) { +while (huffsize[p] == si) { +huffcode[p++] = code; +code++; +} +code <<= 1; +si++; +} +for (p = 0; p < lastp; p++) { +this.ac_matrix1[javajs.img.Huffman.valACchrominance[p]][0] = huffcode[p]; +this.ac_matrix1[javajs.img.Huffman.valACchrominance[p]][1] = huffsize[p]; +} +p = 0; +for (l = 1; l <= 16; l++) { +for (i = javajs.img.Huffman.bitsDCluminance[l]; --i >= 0; ) { +huffsize[p++] = l; +} +} +huffsize[p] = 0; +lastp = p; +code = 0; +si = huffsize[0]; +p = 0; +while (huffsize[p] != 0) { +while (huffsize[p] == si) { +huffcode[p++] = code; +code++; +} +code <<= 1; +si++; +} +for (p = 0; p < lastp; p++) { +this.dc_matrix0[javajs.img.Huffman.valDCluminance[p]][0] = huffcode[p]; +this.dc_matrix0[javajs.img.Huffman.valDCluminance[p]][1] = huffsize[p]; +} +p = 0; +for (l = 1; l <= 16; l++) { +for (i = javajs.img.Huffman.bitsACluminance[l]; --i >= 0; ) { +huffsize[p++] = l; +} +} +huffsize[p] = 0; +lastp = p; +code = 0; +si = huffsize[0]; +p = 0; +while (huffsize[p] != 0) { +while (huffsize[p] == si) { +huffcode[p++] = code; +code++; +} +code <<= 1; +si++; +} +for (var q = 0; q < lastp; q++) { +this.ac_matrix0[javajs.img.Huffman.valACluminance[q]][0] = huffcode[q]; +this.ac_matrix0[javajs.img.Huffman.valACluminance[q]][1] = huffsize[q]; +} +this.dc_matrix[0] = this.dc_matrix0; +this.dc_matrix[1] = this.dc_matrix1; +this.ac_matrix[0] = this.ac_matrix0; +this.ac_matrix[1] = this.ac_matrix1; +}); +c$.bitsDCluminance = Clazz.newIntArray(-1, [0x00, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]); +c$.valDCluminance = Clazz.newIntArray(-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]); +c$.bitsDCchrominance = Clazz.newIntArray(-1, [0x01, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]); +c$.valDCchrominance = Clazz.newIntArray(-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]); +c$.bitsACluminance = Clazz.newIntArray(-1, [0x10, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d]); +c$.valACluminance = Clazz.newIntArray(-1, [0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa]); +c$.bitsACchrominance = Clazz.newIntArray(-1, [0x11, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77]); +c$.valACchrominance = Clazz.newIntArray(-1, [0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa]); +c$.jpegNaturalOrder = Clazz.newIntArray(-1, [0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]); +var c$ = Clazz.decorateAsClass(function(){ +this.comment = null; +this.imageHeight = 0; +this.imageWidth = 0; +this.blockWidth = null; +this.blockHeight = null; +this.precision = 8; +this.numberOfComponents = 3; +this.components = null; +this.compID = null; +this.hsampFactor = null; +this.vsampFactor = null; +this.qtableNumber = null; +this.dctableNumber = null; +this.actableNumber = null; +this.lastColumnIsDummy = null; +this.lastRowIsDummy = null; +this.ss = 0; +this.se = 63; +this.ah = 0; +this.al = 0; +this.compWidth = null; +this.compHeight = null; +this.maxHsampFactor = 0; +this.maxVsampFactor = 0; +Clazz.instantialize(this, arguments);}, javajs.img, "JpegObj", null); +Clazz.prepareFields (c$, function(){ +this.compID = Clazz.newIntArray(-1, [1, 2, 3]); +this.hsampFactor = Clazz.newIntArray(-1, [1, 1, 1]); +this.vsampFactor = Clazz.newIntArray(-1, [1, 1, 1]); +this.qtableNumber = Clazz.newIntArray(-1, [0, 1, 1]); +this.dctableNumber = Clazz.newIntArray(-1, [0, 1, 1]); +this.actableNumber = Clazz.newIntArray(-1, [0, 1, 1]); +this.lastColumnIsDummy = Clazz.newBooleanArray(-1, [false, false, false]); +this.lastRowIsDummy = Clazz.newBooleanArray(-1, [false, false, false]); +}); +Clazz.makeConstructor(c$, +function(){ +this.components = JU.AU.newFloat3(this.numberOfComponents, -1); +this.compWidth = Clazz.newIntArray (this.numberOfComponents, 0); +this.compHeight = Clazz.newIntArray (this.numberOfComponents, 0); +this.blockWidth = Clazz.newIntArray (this.numberOfComponents, 0); +this.blockHeight = Clazz.newIntArray (this.numberOfComponents, 0); +}); +Clazz.defineMethod(c$, "getYCCArray", +function(pixels){ +this.maxHsampFactor = 1; +this.maxVsampFactor = 1; +for (var y = 0; y < this.numberOfComponents; y++) { +this.maxHsampFactor = Math.max(this.maxHsampFactor, this.hsampFactor[y]); +this.maxVsampFactor = Math.max(this.maxVsampFactor, this.vsampFactor[y]); +} +for (var y = 0; y < this.numberOfComponents; y++) { +this.compWidth[y] = (Clazz.doubleToInt(((this.imageWidth % 8 != 0) ? (Clazz.doubleToInt(Math.ceil(this.imageWidth / 8.0))) * 8 : this.imageWidth) / this.maxHsampFactor)) * this.hsampFactor[y]; +if (this.compWidth[y] != ((Clazz.doubleToInt(this.imageWidth / this.maxHsampFactor)) * this.hsampFactor[y])) { +this.lastColumnIsDummy[y] = true; +}this.blockWidth[y] = Clazz.doubleToInt(Math.ceil(this.compWidth[y] / 8.0)); +this.compHeight[y] = (Clazz.doubleToInt(((this.imageHeight % 8 != 0) ? (Clazz.doubleToInt(Math.ceil(this.imageHeight / 8.0))) * 8 : this.imageHeight) / this.maxVsampFactor)) * this.vsampFactor[y]; +if (this.compHeight[y] != ((Clazz.doubleToInt(this.imageHeight / this.maxVsampFactor)) * this.vsampFactor[y])) { +this.lastRowIsDummy[y] = true; +}this.blockHeight[y] = Clazz.doubleToInt(Math.ceil(this.compHeight[y] / 8.0)); +} +var Y = Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0); +var Cr1 = Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0); +var Cb1 = Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0); +for (var pt = 0, y = 0; y < this.imageHeight; ++y) { +for (var x = 0; x < this.imageWidth; ++x, pt++) { +var p = pixels[pt]; +var r = ((p >> 16) & 0xff); +var g = ((p >> 8) & 0xff); +var b = (p & 0xff); +Y[y][x] = ((0.299 * r + 0.587 * g + 0.114 * b)); +Cb1[y][x] = 128 + ((-0.16874 * r - 0.33126 * g + 0.5 * b)); +Cr1[y][x] = 128 + ((0.5 * r - 0.41869 * g - 0.08131 * b)); +} +} +this.components[0] = Y; +this.components[1] = Cb1; +this.components[2] = Cr1; +}, "~A"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/PdfEncoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/PdfEncoder.js new file mode 100755 index 000000000000..63214ec661bc --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/PdfEncoder.js @@ -0,0 +1,58 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(["javajs.img.ImageEncoder"], "javajs.img.PdfEncoder", ["java.util.Hashtable", "javajs.export.PDFCreator"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.isLandscape = false; +this.pdf = null; +this.comment = null; +Clazz.instantialize(this, arguments);}, javajs.img, "PdfEncoder", javajs.img.ImageEncoder); +Clazz.makeConstructor(c$, +function(){ +Clazz.superConstructor (this, javajs.img.PdfEncoder, []); +}); +Clazz.overrideMethod(c$, "setParams", +function(params){ +this.isLandscape = (this.quality > 1); +this.comment = "Jmol " + params.get("comment"); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "generate", +function(){ +this.pdf = new javajs["export"].PDFCreator(); +var pageWidth = 576; +var pageHeight = 792; +this.pdf.setOutputStream(this.out); +this.pdf.newDocument(pageWidth, pageHeight, this.isLandscape); +this.addMyImage(pageWidth, pageHeight); +var ht = new java.util.Hashtable(); +if (this.comment != null) ht.put("Producer", this.comment); +ht.put("Author", "JMol"); +ht.put("CreationDate", this.date); +this.pdf.addInfo(ht); +this.pdf.closeDocument(); +}); +Clazz.defineMethod(c$, "addMyImage", +function(pageWidth, pageHeight){ +this.pdf.addImageResource("img1", this.width, this.height, this.pixels, true); +var w = (this.isLandscape ? pageHeight : pageWidth); +var h = (this.isLandscape ? pageWidth : pageHeight); +var iw = this.width; +var ih = this.height; +if (iw > 0.9 * w) { +ih = Clazz.doubleToInt(ih * 0.9 * w / iw); +iw = Clazz.doubleToInt(w * 0.9); +}if (ih > 0.9 * h) { +iw = Clazz.doubleToInt(iw * 0.9 * h / ih); +ih = Clazz.doubleToInt(h * 0.9); +}var x = 0; +var y = 0; +var x1 = iw; +var y1 = ih; +if (w > iw) { +x = Clazz.doubleToInt((w - iw) / 2); +x1 = iw + x; +}if (h > ih) { +y = Clazz.doubleToInt((h - ih) / 2); +y1 = ih + y; +}this.pdf.drawImage("img1", x, y, x1, y1, 0, 0, this.width, this.height); +}, "~N,~N"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/PngEncoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/PngEncoder.js new file mode 100755 index 000000000000..1ee896c0a7a7 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/PngEncoder.js @@ -0,0 +1,167 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(["javajs.img.CRCEncoder"], "javajs.img.PngEncoder", ["java.io.ByteArrayOutputStream", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.encodeAlpha = false; +this.filter = 0; +this.bytesPerPixel = 0; +this.compressionLevel = 0; +this.type = null; +this.transparentColor = null; +this.appData = null; +this.appPrefix = null; +this.comment = null; +this.bytes = null; +this.scanLines = null; +this.byteWidth = 0; +Clazz.instantialize(this, arguments);}, javajs.img, "PngEncoder", javajs.img.CRCEncoder); +Clazz.overrideMethod(c$, "setParams", +function(params){ +if (this.quality < 0) this.quality = (params.containsKey("qualityPNG") ? (params.get("qualityPNG")).intValue() : 2); +if (this.quality > 9) this.quality = 9; +this.encodeAlpha = false; +this.filter = 0; +this.compressionLevel = this.quality; +this.transparentColor = params.get("transparentColor"); +this.comment = params.get("comment"); +this.type = (params.get("type") + "0000").substring(0, 4); +this.bytes = params.get("pngImgData"); +this.appData = params.get("pngAppData"); +this.appPrefix = params.get("pngAppPrefix"); +}, "java.util.Map"); +Clazz.overrideMethod(c$, "generate", +function(){ +if (this.bytes == null) { +if (!this.pngEncode()) { +this.out.cancel(); +return; +}this.bytes = this.getBytes(); +} else { +this.dataLen = this.bytes.length; +}var len = this.dataLen; +if (this.appData != null) { +javajs.img.PngEncoder.setJmolTypeText(this.appPrefix, this.bytes, len, this.appData.length, this.type); +this.out.write(this.bytes, 0, len); +len = (this.bytes = this.appData).length; +}this.out.write(this.bytes, 0, len); +}); +Clazz.defineMethod(c$, "pngEncode", +function(){ +var pngIdBytes = Clazz.newByteArray(-1, [-119, 80, 78, 71, 13, 10, 26, 10]); +this.writeBytes(pngIdBytes); +this.writeHeader(); +this.writeText(javajs.img.PngEncoder.getApplicationText(this.appPrefix, this.type, 0, 0)); +this.writeText("Software\0Jmol " + this.comment); +this.writeText("Creation Time\0" + this.date); +if (!this.encodeAlpha && this.transparentColor != null) this.writeTransparentColor(this.transparentColor.intValue()); +return this.writeImageData(); +}); +c$.setJmolTypeText = Clazz.defineMethod(c$, "setJmolTypeText", +function(prefix, b, nPNG, nState, type){ +var s = "tEXt" + javajs.img.PngEncoder.getApplicationText(prefix, type, nPNG, nState); +var encoder = new javajs.img.PngEncoder(); +var test = s.substring(0, 4 + prefix.length).getBytes(); +for (var i = test.length; --i >= 0; ) if (b[i + 37] != test[i]) { +System.out.println("image is not of the right form; appending data, but not adding tEXt tag."); +return; +} +encoder.setData(b, 37); +encoder.writeString(s); +encoder.writeCRC(); +}, "~S,~A,~N,~N,~S"); +c$.getApplicationText = Clazz.defineMethod(c$, "getApplicationText", +function(prefix, type, nPNG, nState){ +var sPNG = "000000000" + nPNG; +sPNG = sPNG.substring(sPNG.length - 9); +var sState = "000000000" + nState; +sState = sState.substring(sState.length - 9); +return prefix + "\0" + type + (type.equals("PNG") ? "0" : "") + sPNG + "+" + sState; +}, "~S,~S,~N,~N"); +Clazz.defineMethod(c$, "writeHeader", +function(){ +this.writeInt4(13); +this.startPos = this.bytePos; +this.writeString("IHDR"); +this.writeInt4(this.width); +this.writeInt4(this.height); +this.writeByte(8); +this.writeByte(this.encodeAlpha ? 6 : 2); +this.writeByte(0); +this.writeByte(0); +this.writeByte(0); +this.writeCRC(); +}); +Clazz.defineMethod(c$, "writeText", +function(msg){ +this.writeInt4(msg.length); +this.startPos = this.bytePos; +this.writeString("tEXt" + msg); +this.writeCRC(); +}, "~S"); +Clazz.defineMethod(c$, "writeTransparentColor", +function(icolor){ +this.writeInt4(6); +this.startPos = this.bytePos; +this.writeString("tRNS"); +this.writeInt2((icolor >> 16) & 0xFF); +this.writeInt2((icolor >> 8) & 0xFF); +this.writeInt2(icolor & 0xFF); +this.writeCRC(); +}, "~N"); +Clazz.defineMethod(c$, "writeImageData", +function(){ +this.bytesPerPixel = (this.encodeAlpha ? 4 : 3); +this.byteWidth = this.width * this.bytesPerPixel; +var scanWidth = this.byteWidth + 1; +var rowsLeft = this.height; +var nRows; +var scanPos; +var deflater = new java.util.zip.Deflater(this.compressionLevel); +var outBytes = new java.io.ByteArrayOutputStream(1024); +var compBytes = new java.util.zip.DeflaterOutputStream(outBytes, deflater); +var pt = 0; +try { +while (rowsLeft > 0) { +nRows = Math.max(1, Math.min(Clazz.doubleToInt(32767 / scanWidth), rowsLeft)); +this.scanLines = Clazz.newByteArray (scanWidth * nRows, 0); +var nPixels = this.width * nRows; +scanPos = 0; +for (var i = 0; i < nPixels; i++, pt++) { +if (i % this.width == 0) { +this.scanLines[scanPos++] = this.filter; +}this.scanLines[scanPos++] = ((this.pixels[pt] >> 16) & 0xff); +this.scanLines[scanPos++] = ((this.pixels[pt] >> 8) & 0xff); +this.scanLines[scanPos++] = ((this.pixels[pt]) & 0xff); +if (this.encodeAlpha) { +this.scanLines[scanPos++] = ((this.pixels[pt] >> 24) & 0xff); +}} +compBytes.write(this.scanLines, 0, scanPos); +rowsLeft -= nRows; +} +compBytes.close(); +var compressedLines = outBytes.toByteArray(); +this.writeInt4(compressedLines.length); +this.startPos = this.bytePos; +this.writeString("IDAT"); +this.writeBytes(compressedLines); +this.writeCRC(); +this.writeEnd(); +deflater.finish(); +return true; +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +System.err.println(e.toString()); +return false; +} else { +throw e; +} +} +}); +Clazz.defineMethod(c$, "writeEnd", +function(){ +this.writeInt4(0); +this.startPos = this.bytePos; +this.writeString("IEND"); +this.writeCRC(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/javajs/img/PpmEncoder.js b/config/plugins/visualizations/jmol/static/j2s/javajs/img/PpmEncoder.js new file mode 100755 index 000000000000..6858c3500c08 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/javajs/img/PpmEncoder.js @@ -0,0 +1,24 @@ +Clazz.declarePackage("javajs.img"); +Clazz.load(["javajs.img.ImageEncoder"], "javajs.img.PpmEncoder", null, function(){ +var c$ = Clazz.declareType(javajs.img, "PpmEncoder", javajs.img.ImageEncoder); +Clazz.overrideMethod(c$, "setParams", +function(params){ +}, "java.util.Map"); +Clazz.overrideMethod(c$, "generate", +function(){ +this.putString("P6\n"); +this.putString(this.width + " " + this.height + "\n"); +this.putString("255\n"); +var ppmPixels = Clazz.newByteArray (this.width * 3, 0); +for (var pt = 0, row = 0; row < this.height; ++row) { +for (var col = 0, j = 0; col < this.width; ++col, pt++) { +var p = this.pixels[pt]; +ppmPixels[j++] = ((p >> 16) & 0xff); +ppmPixels[j++] = ((p >> 8) & 0xff); +ppmPixels[j++] = (p & 0xff); +} +this.out.write(ppmPixels, 0, ppmPixels.length); +} +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/jme/AtomDisplayLabel.js b/config/plugins/visualizations/jmol/static/j2s/jme/AtomDisplayLabel.js new file mode 100755 index 000000000000..d1507d60394d --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/jme/AtomDisplayLabel.js @@ -0,0 +1,106 @@ +Clazz.declarePackage("jme"); +Clazz.load(null, "jme.AtomDisplayLabel", [], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.smallAtomWidthLabel = 0; +this.fullAtomWidthLabel = 0; +this.alignment = 0; +this.noLabelAtom = false; +this.atomLabelBoundingBox = null; +this.labelX = 0; +this.labelY = 0; +this.str = null; +this.boundingBoxpadding = 2; +this.atomMapY = 0; +this.atomMapX = 0; +this.mapString = null; +this.subscripts = null; +this.superscripts = null; +Clazz.instantialize(this, arguments);}, jme, "AtomDisplayLabel", null); +Clazz.makeConstructor(c$, +function(x, y, z, an, nv, sbo, nh, q, iso, map, alignment, fm, h, showHs){ +if (z == null || z.length < 1) { +z = "*"; +System.err.println("Z error!"); +}this.alignment = alignment; +var padding = 2; +this.noLabelAtom = (an == 3 && q == 0 && iso == 0 && nv > 0 && (nv != 2 || sbo != 4)); +var hydrogenSymbols = ""; +if (showHs && !this.noLabelAtom) { +if (nh > 0) { +hydrogenSymbols += "H"; +if (nh > 1) { +hydrogenSymbols += nh; +}}}var isoSymbol = (iso == 0 ? "" : "[" + iso + "]"); +var chargeSymbols = (q == 0 ? "" : (Math.abs(q) > 1 ? "" + Math.abs(q) : "") + (q > 0 ? "+" : "-")); +var stringForWidth = z; +if (alignment == 2) { +z = chargeSymbols + hydrogenSymbols + isoSymbol + z; +} else { +z = isoSymbol + z + hydrogenSymbols + chargeSymbols; +}this.str = z; +if (alignment == 1) { +stringForWidth = z; +}var smallWidth = fm.stringWidth(stringForWidth); +var fullWidth = fm.stringWidth(z); +this.smallAtomWidthLabel = smallWidth; +this.fullAtomWidthLabel = fullWidth; +var lineThickness = 1; +var xstart = x - smallWidth / 2.; +if (alignment == 2) { +xstart -= (fullWidth - smallWidth); +}var ystart = y - h / 2; +xstart -= lineThickness; +fullWidth += lineThickness; +var box = this.atomLabelBoundingBox = new java.awt.geom.Rectangle2D.Double(xstart - padding, ystart - padding, fullWidth + 2 * padding, h + 2 * padding); +this.mapString = null; +this.labelX = this.atomLabelBoundingBox.x + padding + 1; +this.labelY = this.atomLabelBoundingBox.y + h + padding; +if (hydrogenSymbols.length > 1) { +var pos = z.indexOf(hydrogenSymbols); +var styleIndices = Clazz.newIntArray(-1, [pos + 1, hydrogenSymbols.length - 1]); +this.subscripts = Clazz.newArray(-1, [styleIndices]); +}if (chargeSymbols.length > 0) { +var pos = z.indexOf(chargeSymbols); +var styleIndices = Clazz.newIntArray(-1, [pos, chargeSymbols.length]); +this.superscripts = Clazz.newArray(-1, [styleIndices]); +}if (isoSymbol.length > 0) { +var pos = z.indexOf(isoSymbol); +var styleIndices = Clazz.newIntArray(-1, [pos, isoSymbol.length]); +if (this.superscripts == null) { +this.superscripts = Clazz.newArray(-1, [styleIndices]); +} else { +this.superscripts = Clazz.newArray(-1, [this.superscripts[0], styleIndices]); +}}if (map < 0) return; +this.mapString = " " + map; +if (this.noLabelAtom) { +this.atomMapX = x + smallWidth / 4; +this.atomMapY = y - h * 0.1; +} else { +var atomMapStringWidth = fm.stringWidth(this.mapString); +if (alignment == 0) { +this.atomMapX = x - smallWidth / 2. + fullWidth; +} else { +box.x -= atomMapStringWidth; +this.atomMapX = x + smallWidth / 2 - fullWidth - atomMapStringWidth; +}var superscriptMove = h * 0.3; +this.atomMapY = y - superscriptMove; +box.y -= superscriptMove; +box.height += superscriptMove; +box.width += atomMapStringWidth; +}}, "~N,~N,~S,~N,~N,~N,~N,~N,~N,~N,~N,java.awt.FontMetrics,~N,~B"); +Clazz.defineMethod(c$, "draw", +function(g){ +g.drawString(this.str, Clazz.doubleToInt(this.labelX), Clazz.doubleToInt(this.labelY)); +}, "java.awt.Graphics"); +Clazz.defineMethod(c$, "drawRect", +function(g){ +var box = this.atomLabelBoundingBox; +g.drawRect(Clazz.doubleToInt(box.x), Clazz.doubleToInt(box.y), Clazz.doubleToInt(box.width), Clazz.doubleToInt(box.height)); +}, "java.awt.Graphics"); +Clazz.defineMethod(c$, "fillRect", +function(g){ +var box = this.atomLabelBoundingBox; +g.fillRect(Clazz.doubleToInt(box.x), Clazz.doubleToInt(box.y), Clazz.doubleToInt(box.width), Clazz.doubleToInt(box.height)); +}, "java.awt.Graphics"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/jme/JME.js b/config/plugins/visualizations/jmol/static/j2s/jme/JME.js new file mode 100755 index 000000000000..3c7dd8574502 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/jme/JME.js @@ -0,0 +1,2231 @@ +Clazz.declarePackage("jme"); +Clazz.load(["javax.swing.JFrame", "$.JPanel", "java.util.ArrayList", "javax.swing.JTextField"], ["jme.MultiBox", "$.QueryBox", "$.JME"], ["java.io.FileInputStream", "java.util.StringTokenizer", "JU.Rdr", "javax.swing.JButton", "$.JComboBox", "$.JLabel", "jme.JMEmol"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.myFrame = null; +this.aboutBoxPoint = null; +this.smilesBoxPoint = null; +this.atomxBoxPoint = null; +this.atomicSymbol = null; +this.$action = 0; +this.active_an = 0; +this.application = false; +this.infoText = "JME Molecular Editor by Peter Ertl"; +this.sd = 24; +this.arrowWidth = 48; +this.$font = null; +this.fontBold = null; +this.fontSmall = null; +this.fontMet = null; +this.fontBoldMet = null; +this.fontSmallMet = null; +this.fontSize = 0; +this.bwMode = false; +this.runsmi = false; +this.depictcgi = null; +this.depictservlet = null; +this.canonize = true; +this.stereo = true; +this.multipart = false; +this.xButton = true; +this.rButton = false; +this.showHydrogens = true; +this.query = false; +this.reaction = false; +this.autoez = false; +this.writesmi = false; +this.writemi = false; +this.writemol = false; +this.number = false; +this.star = false; +this.autonumber = false; +this.jmeh = false; +this.depict = false; +this.depictBorder = false; +this.keepHydrogens = true; +this.canvasBg = null; +this.atomColors = null; +this.atomBgColors = null; +this.depictScale = 1.; +this.nocenter = false; +this.polarnitro = false; +this.$showAtomNumbers = false; +this.$smiles = null; +this.jmeString = null; +this.molString = null; +this.dimension = null; +this.topMenu = null; +this.leftMenu = null; +this.infoArea = null; +this.molecularArea = null; +this.doMenu = true; +this.movePossible = false; +this.lastAction = 0; +this.newMolecule = false; +this.xold = 0; +this.yold = 0; +this.afterClear = false; +this.mouseShift = false; +this.smilesBox = null; +this.atomxBox = null; +this.aboutBox = null; +this.queryBox = null; +this.point = null; +this.c = null; +this.n = null; +this.o = null; +this.s = null; +this.p = null; +this.f = null; +this.cl = null; +this.br = null; +this.i = null; +this.any = null; +this.anyec = null; +this.halogen = null; +this.aromatic = null; +this.nonaromatic = null; +this.ring = null; +this.nonring = null; +this.anyBond = null; +this.aromaticBond = null; +this.ringBond = null; +this.nonringBond = null; +this.sdBond = null; +this.choiced = null; +this.choiceh = null; +this.dyMode = true; +this.molText = null; +this.mol = null; +this.nmols = 0; +this.actualMolecule = 0; +this.saved = 0; +this.template = null; +this.tmol = null; +this.mols = null; +this.smol = null; +this.psColor = null; +this.molStack = null; +this.stackPointer = -1; +this.doTags = false; +this.webme = false; +this.apointx = null; +this.apointy = null; +this.bpointx = null; +this.bpointy = null; +this.revertStereo = false; +this.relativeStereo = false; +this.allHs = false; +this.markUsed = true; +this.currentMark = 1; +this.infoImage = null; +this.clearImage = null; +this.deleteImage = null; +this.deleterImage = null; +this.chargeImage = null; +this.templatesImage = null; +this.rtemplatesImage = null; +this.undoImage = null; +this.endImage = null; +this.smiImage = null; +this.smitImage = null; +this.smartsImage = null; +this.stereoImage = null; +this.stereoxImage = null; +this.embedded = false; +Clazz.instantialize(this, arguments);}, jme, "JME", javax.swing.JPanel, [java.awt.event.MouseListener, java.awt.event.KeyListener, java.awt.event.MouseMotionListener]); +Clazz.prepareFields (c$, function(){ +this.aboutBoxPoint = new java.awt.Point(500, 10); +this.smilesBoxPoint = new java.awt.Point(200, 50); +this.atomxBoxPoint = new java.awt.Point(150, 420); +this.atomicSymbol = new javax.swing.JTextField("H"); +this.canvasBg = java.awt.Color.white; +this.point = new java.awt.Point(20, 200); +this.mols = new Array(99); +this.psColor = new Array(7); +this.molStack = new java.util.ArrayList(); +}); +Clazz.makeConstructor(c$, +function(){ +this.construct (null, true); +}); +Clazz.makeConstructor(c$, +function(frame, embedded){ +Clazz.superConstructor (this, jme.JME, []); +if (frame != null) { +this.setFrame(frame); +}this.embedded = embedded; +this.mol = new jme.JMEmol(this); +this.psColor[0] = java.awt.Color.gray; +this.psColor[1] = new java.awt.Color(255, 153, 153); +this.psColor[2] = new java.awt.Color(255, 204, 102); +this.psColor[3] = new java.awt.Color(255, 255, 153); +this.psColor[4] = new java.awt.Color(102, 255, 255); +this.psColor[5] = new java.awt.Color(51, 204, 255); +this.psColor[6] = new java.awt.Color(255, 153, 255); +this.initialize(); +this.start(); +}, "javax.swing.JFrame,~B"); +Clazz.defineMethod(c$, "setFrame", +function(frame){ +this.myFrame = frame; +frame.add("Center", this); +frame.addKeyListener(this); +this.addMouseListener(this); +this.addMouseMotionListener(this); +this.application = true; +}, "javax.swing.JFrame"); +c$.main = Clazz.defineMethod(c$, "main", +function(args){ +var frame = new javax.swing.JFrame("JME 2D Molecular Editor"); +frame.setDefaultCloseOperation(3); +var jme = new jme.JME(frame, false); +var w = 432; +var h = 384; +frame.setBounds(300, 200, w, h); +if (args.length == 1) jme.options(args[0]); +frame.setVisible(true); +var fileName = null; +for (var i = 0; i < args.length; i++) { +if ("-embedded".equals(args[i])) { +jme.embedded = true; +} else if ("-s".equals(args[i])) { +} else if (args[i].startsWith("-f")) { +fileName = args[++i]; +} else if (args[i].startsWith("-o")) { +jme.options(args[++i]); +}} +if (fileName != null) { +jme.dimension = jme.getSize(); +try { +jme.readMolecule(JU.Rdr.streamToString( new java.io.FileInputStream(fileName))); +} catch (e) { +if (Clazz.exceptionOf(e,"java.io.IOException")){ +System.err.println("File " + fileName + " could not be read"); +} else { +throw e; +} +} +}}, "~A"); +Clazz.defineMethod(c$, "getColor", +function(){ +return jme.JME.bgColor; +}); +Clazz.defineMethod(c$, "activateQuery", +function(){ +if (this.$action != 107) { +this.$action = 107; +this.repaint(); +}}); +Clazz.defineMethod(c$, "initialize", +function(){ +this.dimension = this.getSize(); +this.setLayout(null); +this.fontSize = 12; +if (this.$font == null) { +this.$font = new java.awt.Font("Helvetica", 0, this.fontSize); +this.fontMet = this.getFontMetrics(this.$font); +}if (this.fontBold == null) { +this.fontBold = new java.awt.Font("Helvetica", 1, this.fontSize); +this.fontBoldMet = this.getFontMetrics(this.fontBold); +}var fs = this.fontSize; +if (this.fontSmall == null) { +this.fontSmall = new java.awt.Font("Helvetica", 0, fs); +this.fontSmallMet = this.getFontMetrics(this.fontSmall); +}this.query = false; +this.reaction = false; +this.autoez = false; +this.stereo = true; +this.canonize = true; +this.xButton = true; +this.rButton = false; +jme.JME.ACTIONA = 10; +this.showHydrogens = true; +this.$action = 202; +jme.JME.atomicData(); +this.validate(); +}); +Clazz.defineMethod(c$, "start", +function(){ +this.dimension = this.getSize(); +if (this.jmeString != null) { +this.readMolecule(this.jmeString); +} else if (this.molString != null) this.readMolFile(this.molString); +}); +Clazz.defineMethod(c$, "stop", +function(){ +if (this.smilesBox != null) this.smilesBox.dispose(); +if (this.atomxBox != null) this.atomxBox.dispose(); +if (this.aboutBox != null) this.aboutBox.dispose(); +if (this.queryBox != null) this.queryBox.dispose(); +this.mols = null; +}); +Clazz.defineMethod(c$, "ping", +function(){ +}); +Clazz.defineMethod(c$, "smiles", +function(){ +var smiles = this.Smiles(); +this.repaint(); +return smiles; +}); +Clazz.defineMethod(c$, "nonisomericSmiles", +function(){ +var originalStereo = this.stereo; +this.stereo = false; +var smiles = this.Smiles(); +this.stereo = originalStereo; +this.repaint(); +return smiles; +}); +Clazz.defineMethod(c$, "Smiles", +function(){ +var s; +if (this.reaction) s = this.partSmiles(1) + ">" + this.partSmiles(2) + ">" + this.partSmiles(3); + else { +s = this.partSmiles(0); +if (s.length > 0) { +this.molStack.add( new jme.JMEmol(this.mol)); +this.stackPointer = this.molStack.size() - 1; +}}return s; +}); +Clazz.defineMethod(c$, "partSmiles", +function(pp){ +var s = ""; +for (var m = 1; m <= this.nmols; m++) { +if (pp > 0) { +var p = this.mols[m].reactionPart(); +if (p != pp) continue; +}var smiles = this.mols[m].createSmiles(); +if (smiles.length > 0) { +if (s.length > 0) s += "."; +s += smiles; +}} +return s; +}, "~N"); +Clazz.defineMethod(c$, "reset", +function(){ +this.$action = 202; +this.newMolecule = false; +this.nmols = 0; +this.actualMolecule = 0; +this.mol = new jme.JMEmol(this); +this.mol.maxMark = 0; +this.molText = null; +this.depictScale = 1.; +this.repaint(); +}); +Clazz.defineMethod(c$, "clear", +function(){ +this.$action = 202; +this.newMolecule = false; +if (this.nmols == 0) return; +this.mol.save(); +this.afterClear = true; +for (var i = this.actualMolecule; i < this.nmols; i++) this.mols[i] = this.mols[i + 1]; + +this.nmols--; +this.actualMolecule = this.nmols; +if (this.nmols > 0) this.mol = this.mols[this.actualMolecule]; + else { +this.mol = new jme.JMEmol(this); +this.mol.maxMark = 0; +}}); +Clazz.defineMethod(c$, "jmeFile", +function(){ +var s = ""; +if (this.reaction) s = this.partJme(1) + ">" + this.partJme(2) + ">" + this.partJme(3); + else s = this.partJme(0); +return s; +}); +Clazz.defineMethod(c$, "partJme", +function(pp){ +var s = ""; +for (var m = 1; m <= this.nmols; m++) { +if (pp > 0) { +var p = this.mols[m].reactionPart(); +if (p != pp) continue; +}var jme = this.mols[m].createJME(); +if (jme.length > 0) { +if (s.length > 0) s += "|"; +s += jme; +}} +return s; +}, "~N"); +Clazz.defineMethod(c$, "getReactionParts", +function(){ +var part = Clazz.newIntArray (4, this.nmols + 1, 0); +for (var p = 1; p <= 3; p++) { +var np = 0; +for (var m = 1; m <= this.nmols; m++) if (this.mols[m].reactionPart() == p) part[p][++np] = m; + +part[p][0] = np; +} +return part; +}); +Clazz.defineMethod(c$, "readMolecule", +function(molecule){ +this.reset(); +var lastReactant = 0; +var firstProduct = 0; +var st = new java.util.StringTokenizer(molecule, "|>", true); +var isReaction = (molecule.indexOf(">") > -1); +var rx = 1; +var nt = st.countTokens(); +this.nmols = 0; +for (var i = 1; i <= nt; i++) { +var s = st.nextToken(); +s.trim(); +if (s.equals("|")) continue; +if (s.equals(">")) { +rx++; +if (rx == 2) lastReactant = this.nmols; + else if (rx == 3) firstProduct = this.nmols + 1; +continue; +}this.mol = new jme.JMEmol(this, s, true); +if (this.mol.natoms == 0) { +this.info("ERROR - problems in reading/processing molecule !"); +System.err.println("ERROR while processing\n" + s); +continue; +}this.nmols++; +this.actualMolecule = this.nmols; +this.mols[this.nmols] = this.mol; +this.smol = null; +} +if (rx == 2) { +firstProduct = lastReactant + 1; +this.info("ERROR - strange reaction - fixing !"); +System.err.println("ERROR - reactant and product should be separated by >>\n"); +} else if (rx > 3) { +this.info("ERROR - strange reaction !"); +System.err.println("ERROR - strange reaction !\n"); +return; +}if (this.nmols > 1 && !isReaction) this.options("multipart"); +if (isReaction && !this.reaction) this.options("reaction"); +if (!isReaction && this.reaction) this.options("noreaction"); +if (!isReaction) this.alignMolecules(1, this.nmols, 0); + else { +this.alignMolecules(1, lastReactant, 1); +this.alignMolecules(lastReactant + 1, firstProduct - 1, 2); +this.alignMolecules(firstProduct, this.nmols, 3); +}this.setMol(false); +this.repaint(); +}, "~S"); +Clazz.defineMethod(c$, "setTemplate", +function(t, name){ +this.afterClear = false; +this.tmol = new jme.JMEmol(this, t, true); +this.tmol.complete(); +this.$action = 253; +this.info(name); +this.repaint(); +}, "~S,~S"); +Clazz.defineMethod(c$, "alignMolecules", +function(m1, m2, part){ +if (this.nocenter) return; +var nm = m2 - m1 + 1; +if (nm <= 0 || m1 > this.nmols || m2 > this.nmols) return; +var center = Clazz.newDoubleArray (4, 0); +var RBOND = 25; +var share = Clazz.newDoubleArray (99, 0); +var sumx = 0.; +var sumy = 0.; +var maxy = 0.; +for (var i = m1; i <= m2; i++) { +this.mols[i].centerPoint(center); +sumx += center[2]; +sumy += center[3]; +if (center[3] > maxy) maxy = center[3]; +share[i] = center[2]; +if (part == 2) share[i] = center[3]; +} +if (this.depict) { +sumx += RBOND * (nm + 1); +sumy += RBOND * (nm + 1); +maxy += RBOND; +}if (this.dimension.width == 0 || this.dimension.height == 0) this.dimension = this.getSize(); +if (this.dimension.width == 0) this.dimension.width = 400; +if (this.dimension.height == 0) this.dimension.height = 300; +var scalex = 1.; +var scaley = 1.; +var xsize = this.dimension.width; +var ysize = this.dimension.height; +if (!this.depict) { +xsize -= this.sd; +ysize -= 3 * this.sd; +}if (part == 1 || part == 3) xsize = Clazz.doubleToInt((xsize - this.arrowWidth) / 2); + else if (part == 2) ysize = Clazz.doubleToInt(ysize / 2); +if (sumx >= xsize) scalex = (xsize) / sumx; +if (maxy >= ysize) scaley = (ysize) / maxy; +var medzera = 0.; +if (this.depict) { +this.depictScale = Math.min(scalex, scaley); +medzera = RBOND * xsize / sumx; +if (part == 2) medzera = RBOND * ysize / sumy; +}for (var i = m1; i <= m2; i++) { +if (part == 2) share[i] = share[i] * ysize / sumy; + else share[i] = share[i] * xsize / sumx; +} +var shiftx = -xsize / 2.; +var shifty = 0.; +if (part == 1) shiftx = -xsize - this.arrowWidth / 2.; + else if (part == 3) shiftx = this.arrowWidth / 2.; + else if (part == 2) { +shiftx = 0.; +shifty = -ysize; +}for (var i = m1; i <= m2; i++) { +if (this.depict) { +for (var a = 1; a <= this.mols[i].natoms; a++) { +this.mols[i].x[a] *= this.depictScale; +this.mols[i].y[a] *= this.depictScale; +} +this.mols[i].center(); +}if (part == 2) shifty += (share[i] / 2. + medzera); + else shiftx += (share[i] / 2. + medzera); +for (var a = 1; a <= this.mols[i].natoms; a++) { +this.mols[i].x[a] += shiftx; +this.mols[i].y[a] += shifty; +} +if (part == 2) shifty += share[i] / 2.; + else shiftx += share[i] / 2.; +if (!this.depict) this.mols[i].findBondCenters(); +} +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "molFile", +function(){ +var s = ""; +if (this.reaction) { +var part = this.getReactionParts(); +s += "$RXN\n\n\nJME Molecular Editor\n"; +s += jme.JMEmol.iformat(part[1][0], 3) + jme.JMEmol.iformat(part[3][0], 3) + "\n"; +for (var i = 1; i <= part[1][0]; i++) s += "$MOL" + "\n" + this.mols[part[1][i]].createMolFile(this.$smiles); + +for (var i = 1; i <= part[3][0]; i++) s += "$MOL" + "\n" + this.mols[part[3][i]].createMolFile(this.$smiles); + +} else { +if (this.nmols > 1) this.mol = new jme.JMEmol(this, this.mols, this.nmols); +if (this.mol.natoms > 0) s = this.mol.createMolFile(""); +if (this.nmols > 1) this.mol = this.mols[this.actualMolecule]; +}return s; +}); +Clazz.defineMethod(c$, "readMolFile", +function(s){ +this.reset(); +if (s.startsWith("$RXN")) { +this.reaction = true; +this.multipart = true; +var separator = jme.JMEmol.findSeparator(s); +var st = new java.util.StringTokenizer(s, separator, true); +var line = ""; +for (var i = 1; i <= 5; i++) { +line = jme.JMEmol.nextData(st, separator); +} +var nr = Integer.$valueOf(line.substring(0, 3).trim()).intValue(); +var np = Integer.$valueOf(line.substring(3, 6).trim()).intValue(); +jme.JMEmol.nextData(st, separator); +for (var p = 1; p <= nr + np; p++) { +var m = ""; +while (true) { +var ns = jme.JMEmol.nextData(st, separator); +if (ns == null || ns.equals("$MOL")) break; +m += ns + separator; +} +this.mols[++this.nmols] = new jme.JMEmol(this, m); +} +this.alignMolecules(1, nr, 1); +this.alignMolecules(nr + 1, nr + np, 3); +} else { +this.reaction = false; +this.mol = new jme.JMEmol(this, s); +this.setMol(true); +}this.repaint(); +}, "~S"); +Clazz.defineMethod(c$, "setMol", +function(checkMultipart){ +if (this.mol == null || this.mol.natoms == 0) { +return true; +}if (this.atomBgColors != null && this.mol != null) this.mol.setAtomColors(this.atomBgColors, true); +if (this.atomColors != null && this.mol != null) this.mol.setAtomColors(this.atomColors, false); +if (!checkMultipart) return false; +var nparts = this.mol.checkMultipart(false); +if (nparts == 1) { +this.mols[++this.nmols] = this.mol; +} else { +this.multipart = true; +for (var p = 1; p <= nparts; p++) this.mols[++this.nmols] = new jme.JMEmol(this, this.mol, p); + +}this.actualMolecule = 1; +this.mol = this.mols[this.actualMolecule]; +this.smol = null; +this.alignMolecules(1, nparts, 0); +return true; +}, "~B"); +Clazz.defineMethod(c$, "setSubstituent", +function(s){ +var pressed = -1; +if (s.equals("Select substituent")) { +pressed = 202; +s = ""; +} else if (s.equals("-C(=O)OH")) pressed = 235; + else if (s.equals("-C(=O)OMe")) pressed = 240; + else if (s.equals("-OC(=O)Me")) pressed = 241; + else if (s.equals("-CMe3")) pressed = 233; + else if (s.equals("-CF3")) pressed = 236; + else if (s.equals("-CCl3")) pressed = 237; + else if (s.equals("-NO2")) pressed = 234; + else if (s.equals("-NMe2")) pressed = 243; + else if (s.equals("-SO2-NH2")) pressed = 252; + else if (s.equals("-NH-SO2-Me")) pressed = 244; + else if (s.equals("-SO3H")) pressed = 239; + else if (s.equals("-PO3H2")) pressed = 251; + else if (s.equals("-C#N")) pressed = 242; + else if (s.equals("-C#C-Me")) pressed = 245; + else if (s.equals("-C#CH")) pressed = 238; +if (pressed > 0) this.menuAction(pressed); + else s = "Not known group!"; +this.info(s); +this.repaint(); +}, "~S"); +Clazz.defineMethod(c$, "options", +function(parameters){ +parameters = parameters.toLowerCase(); +if (parameters.indexOf("norbutton") > -1) this.rButton = false; + else if (parameters.indexOf("rbutton") > -1) this.rButton = true; +if (parameters.indexOf("nohydrogens") > -1) this.showHydrogens = false; + else if (parameters.indexOf("hydrogens") > -1) this.showHydrogens = true; +if (parameters.indexOf("keephs") > -1) this.keepHydrogens = true; +if (parameters.indexOf("removehs") > -1) this.keepHydrogens = false; +if (parameters.indexOf("noquery") > -1) this.query = false; + else if (parameters.indexOf("query") > -1) this.query = true; +if (parameters.indexOf("noreaction") > -1) this.reaction = false; + else if (parameters.indexOf("reaction") > -1) this.reaction = true; +if (parameters.indexOf("noautoez") > -1) this.autoez = false; + else if (parameters.indexOf("autoez") > -1) this.autoez = true; +if (parameters.indexOf("nostereo") > -1) this.stereo = false; + else if (parameters.indexOf("stereo") > -1) this.stereo = true; +if (parameters.indexOf("nocanonize") > -1) this.canonize = false; + else if (parameters.indexOf("canonize") > -1) this.canonize = true; +if (parameters.indexOf("nomultipart") > -1) this.multipart = false; + else if (parameters.indexOf("multipart") > -1) this.multipart = true; +if (parameters.indexOf("nonumber") > -1) { +this.number = false; +this.autonumber = false; +} else if (parameters.indexOf("number") > -1) { +this.number = true; +this.autonumber = false; +}if (parameters.indexOf("autonumber") > -1) { +this.autonumber = true; +this.number = true; +}if (parameters.indexOf("star") > -1) { +this.star = true; +this.number = true; +}if (parameters.indexOf("polarnitro") > -1) this.polarnitro = true; +if (parameters.indexOf("depict") > -1) { +this.depict = true; +this.sd = 0; +this.molecularArea = null; +this.alignMolecules(1, this.nmols, 0); +}if (parameters.indexOf("nodepict") > -1) { +this.depict = false; +for (var i = 1; i <= this.nmols; i++) { +this.mols[i].scaling(); +this.mols[i].center(); +} +this.depictScale = 1; +this.sd = 24; +if (this.mol != null) this.mol.needRecentering = true; +}if (parameters.indexOf("border") > -1) { +this.depictBorder = true; +}if (parameters.indexOf("writesmi") > -1) this.writesmi = true; +if (parameters.indexOf("writemi") > -1) this.writemi = true; +if (parameters.indexOf("writemol") > -1) this.writemol = true; +if (parameters.indexOf("nocenter") > -1) this.nocenter = true; +if (parameters.indexOf("jmeh") > -1) this.jmeh = true; +if (parameters.indexOf("showan") > -1) this.$showAtomNumbers = true; +if (this.reaction) { +this.number = true; +this.multipart = true; +}if (!this.depict) this.depictBorder = false; +if (this.rButton) jme.JME.ACTIONA++; +this.repaint(); +}, "~S"); +Clazz.defineMethod(c$, "setText", +function(text){ +this.molText = text; +this.repaint(); +}, "~S"); +Clazz.defineMethod(c$, "showAtomNumbers", +function(){ +if (this.mol != null) this.mol.numberAtoms(); +}); +Clazz.defineMethod(c$, "hasPrevious", +function(){ +if (this.molStack.size() == 0 || this.stackPointer == 0) return false; +return true; +}); +Clazz.defineMethod(c$, "getPreviousMolecule", +function(){ +this.getFromStack(-1); +}); +Clazz.defineMethod(c$, "getFromStack", +function(n){ +this.info(""); +this.clear(); +this.stackPointer += n; +this.mol = new jme.JMEmol(this.molStack.get(this.stackPointer)); +this.mol.complete(); +this.mol.center(); +this.nmols = 1; +this.actualMolecule = 1; +this.mols[1] = this.mol; +this.repaint(); +this.smol = null; +}, "~N"); +Clazz.overrideMethod(c$, "paint", +function(g){ +this.update(g); +}, "java.awt.Graphics"); +Clazz.overrideMethod(c$, "update", +function(g){ +var d = this.getSize(); +if (this.dimension == null || (d.width != this.dimension.width) || (d.height != this.dimension.height) || this.molecularArea == null || this.infoArea == null) { +this.dimension = d; +var imagew = d.width - this.sd; +var imageh = d.height - this.sd * 3; +if (imagew < 1) imagew = 1; +if (imageh < 1) imageh = 1; +this.molecularArea = this.createImage(imagew, imageh); +this.drawMolecularArea(g); +if (this.depict) return; +this.topMenu = this.createImage(d.width, this.sd * 2); +this.drawTopMenu(g); +imageh = d.height - this.sd * 2; +if (imageh < 1) imageh = 1; +this.leftMenu = this.createImage(this.sd, imageh); +this.drawLeftMenu(g); +this.infoArea = this.createImage(imagew, this.sd); +this.drawInfo(g); +} else { +this.drawMolecularArea(g); +if (this.depict) return; +this.drawInfo(g); +if (this.doMenu) { +this.drawTopMenu(g); +this.drawLeftMenu(g); +}this.doMenu = true; +}}, "java.awt.Graphics"); +c$.atomicData = Clazz.defineMethod(c$, "atomicData", +function(){ +for (var i = 0; i < 23; i++) { +jme.JME.color[i] = java.awt.Color.orange; +jme.JME.zlabel[i] = "X"; +} +jme.JME.zlabel[1] = "H"; +jme.JME.color[1] = java.awt.Color.darkGray; +jme.JME.zlabel[2] = "B"; +jme.JME.color[2] = java.awt.Color.orange; +jme.JME.zlabel[3] = "C"; +jme.JME.color[3] = java.awt.Color.darkGray; +jme.JME.zlabel[4] = "N"; +jme.JME.color[4] = java.awt.Color.blue; +jme.JME.zlabel[5] = "O"; +jme.JME.color[5] = java.awt.Color.red; +jme.JME.zlabel[9] = "F"; +jme.JME.color[9] = java.awt.Color.magenta; +jme.JME.zlabel[10] = "Cl"; +jme.JME.color[10] = java.awt.Color.magenta; +jme.JME.zlabel[11] = "Br"; +jme.JME.color[11] = java.awt.Color.magenta; +jme.JME.zlabel[12] = "I"; +jme.JME.color[12] = java.awt.Color.magenta; +jme.JME.zlabel[8] = "S"; +jme.JME.color[8] = java.awt.Color.yellow.darker(); +jme.JME.zlabel[7] = "P"; +jme.JME.color[7] = java.awt.Color.orange; +jme.JME.zlabel[6] = "Si"; +jme.JME.color[6] = java.awt.Color.darkGray; +jme.JME.zlabel[13] = "Se"; +jme.JME.color[13] = java.awt.Color.darkGray; +jme.JME.zlabel[18] = "X"; +jme.JME.color[18] = java.awt.Color.darkGray; +jme.JME.zlabel[19] = "R"; +jme.JME.color[19] = java.awt.Color.darkGray; +jme.JME.zlabel[20] = "R1"; +jme.JME.color[20] = java.awt.Color.darkGray; +jme.JME.zlabel[21] = "R2"; +jme.JME.color[21] = java.awt.Color.darkGray; +jme.JME.zlabel[22] = "R3"; +jme.JME.color[22] = java.awt.Color.darkGray; +}); +Clazz.defineMethod(c$, "drawMolecularArea", +function(g){ +this.paintMolecularArea(this.molecularArea); +g.drawImage(this.molecularArea, this.sd, this.sd * 2, this); +}, "java.awt.Graphics"); +Clazz.defineMethod(c$, "paintMolecularArea", +function(img){ +var og = img.getGraphics(); +og.setRenderingHint(java.awt.RenderingHints.KEY_ANTIALIASING, java.awt.RenderingHints.VALUE_ANTIALIAS_ON); +var imgWidth = img.getWidth(); +var imgHeight = img.getHeight(); +og.setColor(this.canvasBg); +og.fillRect(0, 0, imgWidth, imgHeight); +for (var m = 1; m <= this.nmols; m++) this.mols[m].draw(og); + +if (!this.depict) { +og.setColor(jme.JME.bgColor.darker()); +og.drawLine(imgWidth - 1, 0, imgWidth - 1, imgHeight - 1); +og.setColor(jme.JME.bgColor); +og.drawLine(imgWidth - 2, 0, imgWidth - 2, imgHeight - 1); +og.setColor(jme.JME.brightColor); +og.drawLine(imgWidth - 3, 0, imgWidth - 3, imgHeight - 1); +}if (this.reaction) { +var pWidth = this.arrowWidth; +var pStart = Clazz.doubleToInt((imgWidth - pWidth) / 2); +var m = Clazz.doubleToInt(this.arrowWidth / 8); +og.setColor(java.awt.Color.magenta); +og.drawLine(pStart, Clazz.doubleToInt(imgHeight / 2), pStart + pWidth, Clazz.doubleToInt(imgHeight / 2)); +og.drawLine(pStart + pWidth, Clazz.doubleToInt(imgHeight / 2), pStart + pWidth - m, Clazz.doubleToInt(imgHeight / 2) + m); +og.drawLine(pStart + pWidth, Clazz.doubleToInt(imgHeight / 2), pStart + pWidth - m, Clazz.doubleToInt(imgHeight / 2) - m); +}if (this.depict) { +this.$font = new java.awt.Font("Helvetica", 0, this.fontSize); +this.fontMet = this.getFontMetrics(this.$font); +if (this.molText != null) { +var w = this.fontMet.stringWidth(this.molText); +var xstart = Math.round((imgWidth - w) / 2.); +var ystart = imgHeight - this.fontSize; +og.setColor(java.awt.Color.black); +og.setFont(this.$font); +og.drawString(this.molText, xstart, ystart); +}}}, "java.awt.image.BufferedImage"); +Clazz.defineMethod(c$, "drawTopMenu", +function(g){ +var og = this.topMenu.getGraphics(); +var imgWidth = this.dimension.width; +var imgHeight = this.sd * 2; +og.setColor(jme.JME.bgColor); +og.fillRect(0, 0, imgWidth, imgHeight); +og.setColor(jme.JME.bgColor.darker()); +og.drawLine(imgWidth - 1, 0, imgWidth - 1, imgHeight - 1); +og.drawLine(0, imgHeight - 1, imgWidth - 1 - 2, imgHeight - 1); +og.setColor(jme.JME.brightColor); +og.drawLine(0, 0, imgWidth - 1, 0); +og.drawLine(12 * this.sd, 0, 12 * this.sd, imgHeight - 1); +for (var i = 1; i <= 12; i++) { +this.createSquare(og, i, 1); +this.createSquare(og, i, 2); +} +g.drawImage(this.topMenu, 0, 0, this); +}, "java.awt.Graphics"); +Clazz.defineMethod(c$, "drawLeftMenu", +function(g){ +var og = this.leftMenu.getGraphics(); +var imgWidth = this.sd; +var imgHeight = this.dimension.height - this.sd * 2; +og.setColor(jme.JME.bgColor); +og.fillRect(0, 0, imgWidth, imgHeight); +og.setColor(jme.JME.brightColor); +og.drawLine(0, 0, 0, imgHeight - 1); +og.drawLine(0, jme.JME.ACTIONA * this.sd, imgHeight - 1, jme.JME.ACTIONA * this.sd); +og.setColor(jme.JME.bgColor.darker()); +og.drawLine(imgWidth - 1, 0, imgWidth - 1, imgHeight - 1 - this.sd); +og.drawLine(0, imgHeight - 1, imgWidth - 1, imgHeight - 1); +for (var i = 3; i <= jme.JME.ACTIONA + 2; i++) this.createSquare(og, 1, i); + +g.drawImage(this.leftMenu, 0, this.sd * 2, this); +}, "java.awt.Graphics"); +Clazz.defineMethod(c$, "drawInfo", +function(g){ +var og = this.infoArea.getGraphics(); +var imgWidth = this.dimension.width - this.sd; +var imgHeight = this.sd; +og.setColor(jme.JME.bgColor); +og.fillRect(0, 0, imgWidth, imgHeight); +og.setColor(jme.JME.brightColor); +og.drawLine(0, 0, imgWidth - 1 - 2, 0); +og.setColor(jme.JME.bgColor.darker()); +og.drawLine(0, imgHeight - 1, imgWidth - 1, imgHeight - 1); +og.drawLine(imgWidth - 1, 0, imgWidth - 1, imgHeight - 1); +og.setFont(this.fontSmall); +og.setColor(java.awt.Color.black); +if (this.infoText.startsWith("E")) og.setColor(java.awt.Color.red); +og.drawString(this.infoText, 10, 15); +g.drawImage(this.infoArea, this.sd, this.dimension.height - this.sd, this); +}, "java.awt.Graphics"); +Clazz.defineMethod(c$, "menuAction", +function(pressed){ +if (pressed == 0) return; +var action_old = this.$action; +this.$action = pressed; +if (pressed <= 300) { +switch (pressed) { +case 102: +this.clear(); +break; +case 110: +this.$action = action_old; +if (this.smol == null) { +this.actualMolecule = this.nmols; +this.clear(); +} else if (this.afterClear) { +this.saved = ++this.nmols; +this.actualMolecule = this.nmols; +this.afterClear = false; +}if (this.smol == null) break; +this.mol = new jme.JMEmol(this.smol); +this.mol.complete(); +this.mols[this.saved] = this.mol; +break; +case 152: +var ssize = this.molStack.size(); +this.$action = action_old; +if (ssize == 0) this.info("No molecules in molstack"); + else if (this.stackPointer == 0) this.info("Bottom of molstack reached"); + else this.getFromStack(-1); +break; +case 151: +ssize = this.molStack.size(); +this.$action = action_old; +if (ssize == 0) this.info("No molecules in molstack"); + else if (this.stackPointer == ssize - 1) this.info("Top of molstack reached"); + else this.getFromStack(1); +break; +case 101: +if (this.smilesBox != null && this.smilesBox.isVisible()) { +this.smilesBoxPoint = this.smilesBox.getLocationOnScreen(); +this.smilesBox.dispose(); +this.smilesBox = null; +}this.smilesBox = new jme.MultiBox(1, this); +this.$action = action_old; +break; +case 107: +if (this.queryBox != null && this.queryBox.isVisible()) { +this.point = this.queryBox.getLocationOnScreen(); +this.queryBox.dispose(); +this.queryBox = null; +}this.queryBox = new jme.QueryBox(this); +break; +case 112: +if (this.aboutBox != null && this.aboutBox.isVisible()) { +this.aboutBoxPoint = this.aboutBox.getLocationOnScreen(); +this.aboutBox.dispose(); +this.aboutBox = null; +}this.aboutBox = new jme.MultiBox(0, this); +this.$action = action_old; +break; +case 103: +this.newMolecule = true; +this.$action = action_old; +break; +case 105: +if (this.autonumber) { +if (this.mouseShift) { +this.mouseShift = false; +this.mol.numberAtoms(); +this.$action = action_old; +}}this.currentMark = 1; +break; +case 111: +if (this.embedded) { +if (this.myFrame != null) this.myFrame.setVisible(false); +return; +}System.exit(0); +break; +case 109: +this.$action = action_old; +var part = this.mol.reactionPart(); +if (part == 2) { +this.info("Copying the agent not possible !"); +break; +}var center = Clazz.newDoubleArray (4, 0); +this.mol.centerPoint(center); +this.mol = new jme.JMEmol(this.mol); +var dx = Clazz.doubleToInt(Clazz.doubleToInt((this.dimension.width - this.sd) / 2) - center[0]); +for (var i = 1; i <= this.mol.natoms; i++) this.mol.x[i] += dx * 2; + +this.mol.complete(); +this.mols[++this.nmols] = this.mol; +this.actualMolecule = this.nmols; +break; +case 104: +if (this.mol.touchedAtom > 0) { +this.mol.save(); +this.mol.deleteAtom(this.mol.touchedAtom); +this.mol.touchedAtom = 0; +} else if (this.mol.touchedBond > 0) { +this.mol.save(); +this.mol.deleteBond(this.mol.touchedBond); +this.mol.touchedBond = 0; +}this.mol.valenceState(); +break; +default: +break; +} +} else { +switch (pressed) { +case 301: +this.active_an = 3; +break; +case 401: +this.active_an = 4; +break; +case 501: +this.active_an = 5; +break; +case 701: +this.active_an = 9; +break; +case 801: +this.active_an = 10; +break; +case 901: +this.active_an = 11; +break; +case 1001: +this.active_an = 12; +break; +case 601: +this.active_an = 8; +break; +case 1101: +this.active_an = 7; +break; +case 1300: +this.active_an = 1; +break; +case 1201: +if (!this.webme) { +if (this.atomxBox != null && this.atomxBox.isVisible()) { +this.atomxBoxPoint = this.atomxBox.getLocationOnScreen(); +this.atomxBox.dispose(); +this.atomxBox = null; +}if (this.mol.touchedAtom == 0) this.atomxBox = new jme.MultiBox(2, this); +}this.active_an = 18; +break; +case 1301: +this.active_an = 19; +break; +case 1302: +this.active_an = 20; +break; +case 1303: +this.active_an = 21; +break; +case 1304: +this.active_an = 22; +break; +} +if (this.mol.touchedAtom > 0) { +if (this.active_an != this.mol.an[this.mol.touchedAtom] && this.active_an != 18) { +this.mol.save(); +this.mol.an[this.mol.touchedAtom] = this.active_an; +this.mol.q[this.mol.touchedAtom] = 0; +this.mol.nh[this.mol.touchedAtom] = 0; +}if (this.active_an == 18) { +var xx = this.atomicSymbol.getText(); +this.mol.setAtom(this.mol.touchedAtom, xx); +}this.mol.valenceState(); +}}this.repaint(); +}, "~N"); +Clazz.defineMethod(c$, "createSquare", +function(g, xpos, ypos){ +var square = ypos * 100 + xpos; +var xstart = (xpos - 1) * this.sd; +var ystart = (ypos - 1) * this.sd; +if (xpos == 1 && ypos > 2) ystart -= (2 * this.sd); +g.setColor(jme.JME.bgColor); +if (square == this.$action) g.fill3DRect(xstart + 1, ystart + 1, this.sd, this.sd, false); + else g.fill3DRect(xstart, ystart, this.sd, this.sd, true); +if (square == 1301 && !this.rButton) return; +if (square == 111 && !this.application) return; +if (square == 107 && !this.query) return; +if (square == 201 && !this.stereo) return; +if (square == 103 && !this.multipart) return; +if (square == 105 && !(this.number || this.autonumber)) return; +if (square == 109 && !this.reaction) return; +var m = Clazz.doubleToInt(this.sd / 4); +if (ypos < 3) { +g.setColor(java.awt.Color.black); +switch (square) { +case 101: +if (!this.bwMode) { +g.setColor(java.awt.Color.yellow); +g.fillOval(xstart + 3, ystart + 3, this.sd - 6, this.sd - 6); +g.setColor(java.awt.Color.black); +}g.drawOval(xstart + 3, ystart + 3, this.sd - 6, this.sd - 6); +g.drawArc(xstart + 6, ystart + 6, this.sd - 12, this.sd - 12, -35, -110); +g.fillRect(xstart + 9, ystart + 9, 2, 4); +g.fillRect(xstart + this.sd - 10, ystart + 9, 2, 4); +if (Math.random() < 0.04) { +g.setColor(java.awt.Color.red); +g.fillRect(xstart + 10, ystart + 18, 4, 4); +}if (Math.random() > 0.96) { +g.setColor(java.awt.Color.yellow); +g.fillRect(xstart + this.sd - 10, ystart + 8, 2, 3); +}break; +case 111: +this.squareText(g, xstart, ystart, "END"); +break; +case 107: +g.setColor(java.awt.Color.orange); +g.fillRect(xstart + 4, ystart + 4, this.sd - 8, this.sd - 8); +g.setColor(java.awt.Color.black); +g.drawRect(xstart + 4, ystart + 4, this.sd - 8, this.sd - 8); +g.drawArc(xstart + 6, ystart + 6, this.sd - 11, this.sd - 12, -35, -110); +g.fillRect(xstart + 9, ystart + 9, 2, 4); +g.fillRect(xstart + this.sd - 10, ystart + 9, 2, 4); +break; +case 108: +this.squareText(g, xstart, ystart, "+ / "); +g.drawLine(xstart + 15, ystart + 13, xstart + 19, ystart + 13); +break; +case 110: +g.drawArc(xstart + 6, ystart + 7, this.sd - 12, this.sd - 14, 270, 270); +g.drawLine(xstart + 6, ystart + 13, xstart + 3, ystart + 10); +g.drawLine(xstart + 6, ystart + 13, xstart + 9, ystart + 10); +break; +case 109: +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2), xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2)); +g.drawLine(xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2), xstart + this.sd - Clazz.doubleToInt(m * 3 / 2), ystart + Clazz.doubleToInt(this.sd / 2) + Clazz.doubleToInt(m / 2)); +g.drawLine(xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2), xstart + this.sd - Clazz.doubleToInt(m * 3 / 2), ystart + Clazz.doubleToInt(this.sd / 2) - Clazz.doubleToInt(m / 2)); +break; +case 102: +g.setColor(java.awt.Color.white); +g.fillRect(xstart + 3, ystart + 5, this.sd - 7, this.sd - 11); +g.setColor(java.awt.Color.black); +g.drawRect(xstart + 3, ystart + 5, this.sd - 7, this.sd - 11); +break; +case 103: +g.setColor(jme.JME.bgColor); +if (this.newMolecule) g.fill3DRect(xstart + 1, ystart + 1, this.sd, this.sd, false); +g.setColor(java.awt.Color.black); +this.squareText(g, xstart, ystart, "NEW"); +break; +case 106: +g.setColor(java.awt.Color.red); +g.drawLine(xstart + 7, ystart + 7, xstart + this.sd - 7, ystart + this.sd - 7); +g.drawLine(xstart + 8, ystart + 7, xstart + this.sd - 6, ystart + this.sd - 7); +g.drawLine(xstart + 7, ystart + this.sd - 7, xstart + this.sd - 7, ystart + 7); +g.drawLine(xstart + 8, ystart + this.sd - 7, xstart + this.sd - 6, ystart + 7); +g.setColor(java.awt.Color.black); +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2), xstart + 12, ystart + Clazz.doubleToInt(this.sd / 2)); +this.squareText(g, xstart + 6, ystart, "R"); +break; +case 104: +g.setColor(java.awt.Color.red); +g.drawLine(xstart + 7, ystart + 7, xstart + this.sd - 7, ystart + this.sd - 7); +g.drawLine(xstart + 8, ystart + 7, xstart + this.sd - 6, ystart + this.sd - 7); +g.drawLine(xstart + 7, ystart + this.sd - 7, xstart + this.sd - 7, ystart + 7); +g.drawLine(xstart + 8, ystart + this.sd - 7, xstart + this.sd - 6, ystart + 7); +g.setColor(java.awt.Color.black); +break; +case 105: +if (this.star) { +g.setColor(java.awt.Color.cyan); +g.drawLine(xstart + 11, ystart + 5, xstart + 9, ystart + 9); +g.drawLine(xstart + 9, ystart + 9, xstart + 4, ystart + 9); +g.drawLine(xstart + 4, ystart + 9, xstart + 8, ystart + 12); +g.drawLine(xstart + 8, ystart + 12, xstart + 6, ystart + 18); +g.drawLine(xstart + 6, ystart + 18, xstart + 11, ystart + 15); +g.drawLine(xstart + 12, ystart + 5, xstart + 14, ystart + 9); +g.drawLine(xstart + 14, ystart + 9, xstart + 19, ystart + 9); +g.drawLine(xstart + 19, ystart + 9, xstart + 15, ystart + 12); +g.drawLine(xstart + 15, ystart + 12, xstart + 17, ystart + 18); +g.drawLine(xstart + 17, ystart + 18, xstart + 12, ystart + 15); +g.setColor(java.awt.Color.black); +} else this.squareText(g, xstart, ystart, "123"); +break; +case 112: +g.setColor(java.awt.Color.blue); +g.fillRect(xstart + 4, ystart + 4, this.sd - 8, this.sd - 8); +g.setColor(java.awt.Color.black); +g.drawRect(xstart + 4, ystart + 4, this.sd - 8, this.sd - 8); +this.squareTextBold(g, xstart + 1, ystart - 1, java.awt.Color.white, "i"); +break; +case 201: +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2), xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2) + 2); +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2), xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2) - 2); +g.drawLine(xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2) + 2, xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2) - 2); +break; +case 202: +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2), xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2)); +break; +case 203: +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2) - 2, xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2) - 2); +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2) + 2, xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2) + 2); +break; +case 204: +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2), xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2)); +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2) - 2, xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2) - 2); +g.drawLine(xstart + m, ystart + Clazz.doubleToInt(this.sd / 2) + 2, xstart + this.sd - m, ystart + Clazz.doubleToInt(this.sd / 2) + 2); +break; +case 205: +g.drawLine(xstart + Clazz.doubleToInt(m / 2), ystart + m * 2 + Clazz.doubleToInt(m / 3), xstart + Clazz.doubleToInt(m / 2) * 3, ystart + m * 2 - Clazz.doubleToInt(m / 3)); +g.drawLine(xstart + Clazz.doubleToInt(m / 2) * 3, ystart + m * 2 - Clazz.doubleToInt(m / 3), xstart + Clazz.doubleToInt(m / 2) * 5, ystart + m * 2 + Clazz.doubleToInt(m / 3)); +g.drawLine(xstart + Clazz.doubleToInt(m / 2) * 5, ystart + m * 2 + Clazz.doubleToInt(m / 3), xstart + Clazz.doubleToInt(m / 2) * 7, ystart + m * 2 - Clazz.doubleToInt(m / 3)); +break; +case 206: +this.drawRingIcon(g, xstart, ystart + 2, 3); +break; +case 207: +this.drawRingIcon(g, xstart, ystart, 4); +break; +case 208: +this.drawRingIcon(g, xstart, ystart, 5); +break; +case 209: +this.drawRingIcon(g, xstart, ystart, 1); +break; +case 210: +this.drawRingIcon(g, xstart, ystart, 6); +break; +case 211: +this.drawRingIcon(g, xstart, ystart, 7); +break; +case 212: +this.drawRingIcon(g, xstart, ystart, 8); +break; +} +} else { +var dan = 3; +if (square == 301) dan = 3; + else if (square == 401) dan = 4; + else if (square == 501) dan = 5; + else if (square == 601) dan = 8; + else if (square == 701) dan = 9; + else if (square == 801) dan = 10; + else if (square == 901) dan = 11; + else if (square == 1001) dan = 12; + else if (square == 1101) dan = 7; + else if (square == 1201) dan = 18; + else if (square == 1301) dan = 19; +this.squareTextBold(g, xstart, ystart, jme.JME.color[dan], jme.JME.zlabel[dan]); +}}, "java.awt.Graphics,~N,~N"); +Clazz.defineMethod(c$, "squareText", +function(g, xstart, ystart, text){ +g.setFont(this.fontSmall); +var hSmall = this.fontSmallMet.getAscent(); +var w = this.fontSmallMet.stringWidth(text); +g.drawString(text, xstart + Clazz.doubleToInt((this.sd - w) / 2), ystart + Clazz.doubleToInt((this.sd - hSmall) / 2) + hSmall); +}, "java.awt.Graphics,~N,~N,~S"); +Clazz.defineMethod(c$, "squareTextBold", +function(g, xstart, ystart, col, text){ +var h = this.fontBoldMet.getAscent(); +var w = this.fontBoldMet.stringWidth(text); +g.setFont(this.fontBold); +g.setColor(col); +if (this.bwMode) g.setColor(java.awt.Color.black); +g.drawString(text, xstart + Clazz.doubleToInt((this.sd - w) / 2), ystart + Clazz.doubleToInt((this.sd - h) / 2) + h); +}, "java.awt.Graphics,~N,~N,java.awt.Color,~S"); +Clazz.defineMethod(c$, "drawRingIcon", +function(g, xstart, ystart, n){ +var m = Clazz.doubleToInt(this.sd / 4); +var ph = false; +var xp = Clazz.newIntArray (9, 0); +var yp = Clazz.newIntArray (9, 0); +var xcenter = xstart + Clazz.doubleToInt(this.sd / 2); +var ycenter = ystart + Clazz.doubleToInt(this.sd / 2); +var rc = Clazz.doubleToInt(this.sd / 2) - Clazz.doubleToInt(m / 2); +if (n == 1) { +n = 6; +ph = true; +}for (var i = 0; i <= n; i++) { +var uhol = 6.283185307179586 / n * (i - .5); +xp[i] = Clazz.doubleToInt(xcenter + rc * Math.sin(uhol)); +yp[i] = Clazz.doubleToInt(ycenter + rc * Math.cos(uhol)); +} +g.drawPolygon(xp, yp, n + 1); +if (ph) { +for (var i = 0; i <= n; i++) { +var uhol = 6.283185307179586 / n * (i - .5); +xp[i] = Clazz.doubleToInt(xcenter + (rc - 3) * Math.sin(uhol)); +yp[i] = Clazz.doubleToInt(ycenter + (rc - 3) * Math.cos(uhol)); +} +g.drawLine(xp[0], yp[0], xp[1], yp[1]); +g.drawLine(xp[2], yp[2], xp[3], yp[3]); +g.drawLine(xp[4], yp[4], xp[5], yp[5]); +}}, "java.awt.Graphics,~N,~N,~N"); +Clazz.defineMethod(c$, "info", +function(text){ +this.infoText = text; +}, "~S"); +Clazz.defineMethod(c$, "mouseDown", +function(e, x, y){ +var status = true; +if (this.depict) return true; +this.xold = x - this.sd; +this.yold = y - 2 * this.sd; +this.info(""); +this.mouseShift = e.isShiftDown(); +this.movePossible = false; +if (x < this.sd || y < this.sd * 2) { +var xbutton = 0; +for (var i = 1; i <= 12; i++) if (x < i * this.sd) { +xbutton = i; +break; +} +var ybutton = 0; +for (var i = 1; i <= jme.JME.ACTIONA + 2; i++) if (y < i * this.sd) { +ybutton = i; +break; +} +if (xbutton == 0 || ybutton == 0) return true; +var action = ybutton * 100 + xbutton; +if (!this.application && action == 111) return true; +if (!this.query && action == 107) return true; +if (!this.stereo && action == 201) return true; +if (!this.multipart && action == 103) return true; +if (!(this.number || this.autonumber) && action == 105) return true; +if (!this.reaction && action == 109) return true; +this.menuAction(action); +} else if (y > this.dimension.height - this.sd - 1) { +return true; +} else { +this.movePossible = true; +x -= this.sd; +y -= 2 * this.sd; +if (this.doAction()) { +return false; +}if (this.nmols == 0 || this.newMolecule == true) { +if (this.$action <= 201) return true; +this.doNewMoleculeAction(x, y); +status = false; +}this.mol.valenceState(); +this.repaint(); +}return status; +}, "java.awt.event.MouseEvent,~N,~N"); +Clazz.defineMethod(c$, "doAction", +function(){ +if (this.mol.touchedAtom > 0) { +this.doMouseAtomAction(); +} else if (this.mol.touchedBond > 0) { +this.doMouseBondAction(); +} else { +return false; +}this.mol.valenceState(); +this.repaint(); +return true; +}); +Clazz.defineMethod(c$, "doNewMoleculeAction", +function(x, y){ +this.nmols++; +this.actualMolecule = this.nmols; +this.mols[this.nmols] = new jme.JMEmol(this); +this.mol = this.mols[this.nmols]; +this.newMolecule = false; +this.smol = null; +if (this.$action >= 202 && this.$action <= 204 || this.$action == 205) { +this.mol.createAtom(); +this.mol.nbonds = 0; +this.mol.nv[1] = 0; +this.mol.x[1] = x; +this.mol.y[1] = y; +this.mol.touchedAtom = 1; +this.mol.touched_org = 1; +this.lastAction = 1; +this.mol.addBond(); +if (this.$action == 205) { +this.mol.x[2] = x + 21.65; +this.mol.y[2] = y - 12.5; +this.mol.chain[0] = 1; +this.mol.chain[1] = 2; +this.mol.nchain = 1; +}} else if (this.$action >= 206 && this.$action <= 229) { +this.mol.xorg = x; +this.mol.yorg = y; +this.lastAction = 2; +this.mol.addRing(); +} else if (this.$action > 300) { +this.mol.createAtom(); +this.mol.an[1] = this.active_an; +this.mol.nbonds = 0; +this.mol.nv[1] = 0; +this.mol.x[1] = x; +this.mol.y[1] = y; +this.mol.touchedAtom = 1; +if (this.active_an == 18) { +var xx = this.atomicSymbol.getText(); +if (xx.length < 1) xx = "X"; +this.mol.setAtom(1, xx); +}} else if (this.$action == 230) { +this.readMolecule(this.template); +} else if (this.$action >= 233 && this.$action < 260) { +this.mol.createAtom(); +this.mol.nbonds = 0; +this.mol.nv[1] = 0; +this.mol.x[1] = x; +this.mol.y[1] = y; +this.mol.touchedAtom = 1; +this.mol.addGroup(true); +} else { +System.err.println("error -report fall through bug !"); +}}, "~N,~N"); +Clazz.defineMethod(c$, "doMouseBondAction", +function(){ +if (this.$action == 104) { +this.mol.save(); +this.mol.deleteBond(this.mol.touchedBond); +this.mol.touchedBond = 0; +} else if (this.$action == 106) { +this.mol.save(); +this.mol.deleteGroup(this.mol.touchedBond); +this.mol.touchedBond = 0; +} else if (this.$action == 201) { +this.mol.stereoBond(this.mol.touchedBond); +} else if (this.$action == 202 || this.$action == 205) { +if (this.mol.nasv[this.mol.touchedBond] == 1 && this.mol.stereob[this.mol.touchedBond] == 0) this.mol.nasv[this.mol.touchedBond] = 2; + else this.mol.nasv[this.mol.touchedBond] = 1; +this.mol.stereob[this.mol.touchedBond] = 0; +} else if (this.$action == 203) { +this.mol.nasv[this.mol.touchedBond] = 2; +this.mol.stereob[this.mol.touchedBond] = 0; +} else if (this.$action == 204) { +this.mol.nasv[this.mol.touchedBond] = 3; +this.mol.stereob[this.mol.touchedBond] = 0; +} else if (this.$action >= 206 && this.$action <= 229) { +this.mol.save(); +this.lastAction = 2; +this.mol.addRing(); +} else if (this.$action == 107) { +if (!this.queryBox.isBondQuery()) return; +var bondQuery = this.queryBox.getSmarts(); +this.mol.nasv[this.mol.touchedBond] = 9; +this.mol.btag[this.mol.touchedBond] = bondQuery; +} else if (this.$action == 105) { +this.info("Only atoms may be marked !"); +}}); +Clazz.defineMethod(c$, "doMouseAtomAction", +function(){ +if (this.$action == 104) { +this.mol.save(); +this.mol.deleteAtom(this.mol.touchedAtom); +this.mol.touchedAtom = 0; +} else if (this.$action == 106) { +return true; +} else if (this.$action == 108) { +this.mol.changeCharge(this.mol.touchedAtom, 0); +} else if (this.$action == 157) { +this.mol.changeCharge(this.mol.touchedAtom, 1); +} else if (this.$action == 158) { +this.mol.changeCharge(this.mol.touchedAtom, -1); +} else if (this.$action == 202 || this.$action == 203 || this.$action == 204 || this.$action == 201 || this.$action == 205) { +this.mol.save(); +this.lastAction = 1; +this.mol.addBond(); +this.mol.touched_org = this.mol.touchedAtom; +if (this.$action == 205) { +this.mol.nchain = 1; +this.mol.chain[1] = this.mol.natoms; +this.mol.chain[0] = this.mol.touchedAtom; +this.mol.touchedBond = 0; +}} else if (this.$action >= 206 && this.$action <= 229) { +this.mol.save(); +this.lastAction = 2; +this.mol.addRing(); +} else if (this.$action == 230) { +this.mol.save(); +this.lastAction = 3; +} else if (this.$action >= 233 && this.$action < 260) { +this.mol.save(); +this.mol.addGroup(false); +this.lastAction = 3; +} else if (this.$action == 107) { +if (this.queryBox.isBondQuery()) return true; +this.mol.setAtom(this.mol.touchedAtom, this.queryBox.getSmarts()); +} else if (this.$action == 105) { +this.mol.mark(); +} else if (this.$action > 300) { +if (this.active_an != this.mol.an[this.mol.touchedAtom] || this.active_an == 18) { +this.mol.save(); +this.mol.an[this.mol.touchedAtom] = this.active_an; +this.mol.q[this.mol.touchedAtom] = 0; +this.mol.nh[this.mol.touchedAtom] = 0; +if (this.active_an == 18) { +var xx = this.atomicSymbol.getText(); +if (xx.length < 1) xx = "X"; +this.mol.setAtom(this.mol.touchedAtom, xx); +}}}return false; +}); +Clazz.defineMethod(c$, "mouseUp", +function(e, x, y){ +if (this.depict) return true; +if (this.lastAction == 1) { +if (this.$action == 205) this.mol.checkChain(); + else this.mol.checkBond(); +this.mol.findBondCenters(); +} else if (this.lastAction == 5) { +this.mol.findBondCenters(); +}if (this.lastAction > 0) { +this.mol.valenceState(); +this.mol.cleanPolarBonds(); +this.repaint(); +this.lastAction = 0; +this.afterClear = false; +}return true; +}, "java.awt.event.MouseEvent,~N,~N"); +Clazz.defineMethod(c$, "mouseDrag", +function(e, x, y){ +if (this.depict) return true; +if (!this.movePossible) return true; +x -= this.sd; +y -= this.sd * 2; +var movex = (x - this.xold); +var movey = (y - this.yold); +if (this.lastAction == 2 || this.lastAction == 3 || this.lastAction == 9) return true; + else if (this.lastAction == 1) { +this.mol.rubberBanding(x, y); +} else if (e.isShiftDown() || e.isMetaDown()) { +this.mol.rotate(movex); +this.lastAction = 5; +} else if (this.mol.touchedAtom == 0 && this.mol.touchedBond == 0) { +this.mol.move(movex, movey); +this.lastAction = 5; +}this.repaint(); +this.xold = x; +this.yold = y; +return true; +}, "java.awt.event.MouseEvent,~N,~N"); +Clazz.defineMethod(c$, "mouseMove", +function(e, x, y){ +if (this.depict) return true; +x -= this.sd; +y -= this.sd * 2; +this.myFrame.requestFocusInWindow(); +var repaintFlag = false; +var newActual = 0; +touchLoop : for (var m = 1; m <= this.nmols; m++) { +var a = 0; +var b = 0; +a = this.mols[m].testAtomTouch(x, y); +if (a == 0) b = this.mols[m].testBondTouch(x, y); +if (a > 0) { +this.mols[m].touchedAtom = a; +this.mols[m].touchedBond = 0; +newActual = m; +repaintFlag = true; +break touchLoop; +} else if (b > 0) { +this.mols[m].touchedAtom = 0; +this.mols[m].touchedBond = b; +newActual = m; +repaintFlag = true; +break touchLoop; +} else { +if (this.mols[m].touchedAtom > 0 || this.mols[m].touchedBond > 0) { +this.mols[m].touchedAtom = 0; +this.mols[m].touchedBond = 0; +repaintFlag = true; +}}} +if (repaintFlag) { +for (var m = this.actualMolecule + 1; m <= this.nmols; m++) { +this.mols[m].touchedAtom = 0; +this.mols[m].touchedBond = 0; +} +this.repaint(); +}if (newActual != 0 && newActual != this.actualMolecule) { +this.actualMolecule = newActual; +this.mol = this.mols[this.actualMolecule]; +}return true; +}, "java.awt.event.MouseEvent,~N,~N"); +Clazz.defineMethod(c$, "keyDown", +function(e, key){ +if (this.depict) return true; +this.info(""); +var pressed = 0; +var alt = e.getModifiers() == 8; +var ctrl = e.getModifiers() == 2; +var c = String.fromCharCode(key); +switch ((c).charCodeAt(0)) { +case 67: +pressed = 301; +break; +case 78: +pressed = 401; +break; +case 79: +pressed = 501; +break; +case 83: +pressed = 601; +break; +case 80: +pressed = 1101; +break; +case 70: +pressed = 701; +break; +case 76: +pressed = 801; +break; +case 66: +pressed = 901; +break; +case 73: +pressed = 1001; +break; +case 88: +this.info(this.atomicSymbol.getText()); +pressed = 1201; +this.active_an = 18; +break; +case 72: +this.info("H"); +pressed = 1300; +break; +case 82: +this.info("R"); +pressed = 1301; +break; +case 84: +if (this.$action == 701) { +pressed = 236; +this.info("-CF3"); +} else if (this.$action == 801) { +pressed = 237; +this.info("-CCl3"); +} else { +pressed = 233; +this.info("-tBu"); +}break; +case 89: +pressed = 234; +this.info("-NO2"); +break; +case 90: +if (ctrl) { +pressed = 110; +this.info(""); +} else { +pressed = 239; +this.info("-SO3H"); +}break; +case 65: +pressed = 235; +this.info("-COOH"); +break; +case 69: +pressed = 238; +this.info("-C#CH"); +break; +case 85: +pressed = 110; +break; +case 81: +pressed = 242; +this.info("-C#N"); +break; +case 27: +pressed = 202; +break; +case 45: +if (this.$action == 701) { +pressed = 254; +this.info("-F"); +} else if (this.$action == 801) { +pressed = 255; +this.info("-Cl"); +} else if (this.$action == 901) { +pressed = 256; +this.info("-Br"); +} else if (this.$action == 1001) { +pressed = 257; +this.info("-I"); +} else if (this.$action == 501) { +pressed = 259; +this.info("-OH"); +} else if (this.$action == 401) { +pressed = 258; +this.info("-NH2"); +} else pressed = 202; +break; +case 61: +if (this.$action == 501) { +pressed = 250; +this.info("=O"); +} else pressed = 203; +break; +case 35: +pressed = 204; +break; +case 48: +if (this.$action == 105) this.updateMark(0); + else { +if (!alt) { +pressed = 221; +this.info("-Furyl"); +} else { +pressed = 223; +this.info("-3-Furyl"); +}}break; +case 49: +if (this.$action == 105) this.updateMark(1); + else if (this.$action == 1301) { +this.info("-R1"); +pressed = 1302; +} else { +var action_old = this.$action; +this.menuAction(202); +this.doAction(); +this.$action = action_old; +return true; +}break; +case 50: +if (this.$action == 105) { +this.updateMark(2); +} else if (this.$action == 1301) { +this.info("-R2"); +pressed = 1303; +} else { +var action_old = this.$action; +this.menuAction(203); +this.doAction(); +this.$action = action_old; +return true; +}break; +case 51: +if (this.$action == 105) { +this.updateMark(3); +} else if (this.$action == 1301) { +this.info("-R3"); +pressed = 1304; +} else { +var action_old = this.$action; +this.menuAction(204); +this.doAction(); +this.$action = action_old; +return true; +}break; +case 52: +if (this.$action == 105) this.updateMark(4); + else pressed = 207; +break; +case 53: +if (this.$action == 105) this.updateMark(5); + else pressed = 208; +break; +case 54: +if (this.$action == 105) this.updateMark(6); + else pressed = 210; +break; +case 55: +if (this.$action == 105) this.updateMark(7); + else pressed = 211; +break; +case 56: +if (this.$action == 105) this.updateMark(8); + else pressed = 212; +break; +case 57: +if (this.$action == 105) this.updateMark(9); + else { +this.info("9 ring"); +pressed = 229; +}break; +case 100: +case 68: +case 8: +case 127: +pressed = 104; +break; +case 32: +pressed = 205; +break; +case 1002: +pressed = 151; +break; +case 1003: +pressed = 152; +break; +} +this.menuAction(pressed); +return true; +}, "java.awt.event.KeyEvent,~N"); +Clazz.defineMethod(c$, "updateMark", +function(n){ +if (this.autonumber) { +if (n == 0) { +this.currentMark = -1; +this.info("click marked atom to delete mark"); +this.repaint(); +}return; +}if (this.markUsed) this.currentMark = n; + else { +if (this.currentMark > -1 && this.currentMark < 10) this.currentMark = this.currentMark * 10 + n; + else this.currentMark = n; +}this.markUsed = false; +if (this.currentMark == 0) { +this.currentMark = -1; +this.info("click marked atom to delete mark"); +} else this.info(this.currentMark + " "); +this.repaint(); +}, "~N"); +Clazz.overrideMethod(c$, "mouseDragged", +function(e){ +this.mouseDrag(e, e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz.overrideMethod(c$, "mouseMoved", +function(e){ +this.mouseMove(e, e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz.overrideMethod(c$, "keyTyped", +function(e){ +}, "java.awt.event.KeyEvent"); +Clazz.overrideMethod(c$, "keyPressed", +function(e){ +this.keyDown(e, e.getKeyCode()); +}, "java.awt.event.KeyEvent"); +Clazz.overrideMethod(c$, "keyReleased", +function(e){ +}, "java.awt.event.KeyEvent"); +Clazz.overrideMethod(c$, "mouseClicked", +function(e){ +}, "java.awt.event.MouseEvent"); +Clazz.overrideMethod(c$, "mousePressed", +function(e){ +this.mouseDown(e, e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz.overrideMethod(c$, "mouseReleased", +function(e){ +this.mouseUp(e, e.getX(), e.getY()); +}, "java.awt.event.MouseEvent"); +Clazz.overrideMethod(c$, "mouseEntered", +function(e){ +}, "java.awt.event.MouseEvent"); +Clazz.overrideMethod(c$, "mouseExited", +function(e){ +}, "java.awt.event.MouseEvent"); +c$.bgColor = java.awt.Color.lightGray; +c$.brightColor = jme.JME.bgColor.brighter(); +c$.color = new Array(23); +c$.zlabel = new Array(23); +c$.ACTIONA = 10; +var c$ = Clazz.decorateAsClass(function(){ +this.smilesText = null; +this.jme = null; +Clazz.instantialize(this, arguments);}, jme, "MultiBox", javax.swing.JFrame, java.awt.event.KeyListener); +Clazz.makeConstructor(c$, +function(box, jme){ +Clazz.superConstructor(this, jme.MultiBox); +this.jme = jme; +this.setFont(jme.fontSmall); +this.setBackground(jme.JME.bgColor); +this.setResizable(false); +this.addKeyListener(this); +if (box == 1) this.createSmilesBox(jme.Smiles()); + else if (box == 2) this.createAtomxBox(); + else this.createAboutBox(); +this.pack(); +this.setVisible(true); +}, "~N,jme.JME"); +Clazz.defineMethod(c$, "createAboutBox", +function(){ +this.setTitle("about JSME"); +this.setLayout( new java.awt.GridLayout(0, 1, 0, 0)); +this.setFont(this.jme.fontSmall); +this.setBackground(jme.JME.bgColor); +this.add( new javax.swing.JLabel("JSME Molecular Editor v2023.01", 0)); +this.add( new javax.swing.JLabel("Peter Ertl, Bruno BienFait. and Robert Hanson", 0)); +var p = new javax.swing.JPanel(); +var b = new javax.swing.JButton("Close"); +b.addActionListener(((Clazz.isClassDefined("jme.MultiBox$1") ? 0 : jme.MultiBox.$MultiBox$1$ ()), Clazz.innerTypeInstance(jme.MultiBox$1, this, null))); +p.add(b); +this.add(p); +this.setLocation(this.jme.aboutBoxPoint); +}); +Clazz.defineMethod(c$, "createSmilesBox", +function(smiles){ +this.setTitle("SMILES"); +this.setLayout( new java.awt.BorderLayout(2, 0)); +this.smilesText = new javax.swing.JTextField(smiles + " "); +if (!this.jme.runsmi) this.smilesText.setEditable(false); +this.add("Center", this.smilesText); +var p = new javax.swing.JPanel(); +var b = new javax.swing.JButton("Close"); +b.addActionListener(((Clazz.isClassDefined("jme.MultiBox$2") ? 0 : jme.MultiBox.$MultiBox$2$ ()), Clazz.innerTypeInstance(jme.MultiBox$2, this, null))); +p.add(b); +if (this.jme.runsmi) { +b = new javax.swing.JButton("Submit"); +p.add(b); +}this.add("South", p); +this.smilesText.setText(this.smilesText.getText().trim()); +this.setResizable(true); +this.setLocation(this.jme.smilesBoxPoint); +}, "~S"); +Clazz.defineMethod(c$, "setSmiles", +function(smiles){ +var d = this.getSize(); +var l = this.jme.fontSmallMet.stringWidth(smiles) + 30; +if (l < 150) l = 150; +this.setSize(l, d.height); +this.validate(); +this.smilesText.setText(smiles); +}, "~S"); +Clazz.defineMethod(c$, "createAtomxBox", +function(){ +this.setTitle("nonstandard atom"); +this.setLayout( new java.awt.BorderLayout(2, 0)); +var p = new javax.swing.JPanel(); +p.add( new javax.swing.JLabel("atomic SMILES", 0)); +this.add("North", p); +var as = "H"; +if (this.jme.atomicSymbol != null) as = this.jme.atomicSymbol.getText(); +this.jme.atomicSymbol = new javax.swing.JTextField(as, 8); +this.add("Center", this.jme.atomicSymbol); +p = new javax.swing.JPanel(); +var b = new javax.swing.JButton("Close "); +b.addActionListener(((Clazz.isClassDefined("jme.MultiBox$3") ? 0 : jme.MultiBox.$MultiBox$3$ ()), Clazz.innerTypeInstance(jme.MultiBox$3, this, null))); +p.add(b); +this.add("South", p); +this.setLocation(this.jme.atomxBoxPoint); +}); +Clazz.defineMethod(c$, "keyDown", +function(e, key){ +if (this.jme.atomicSymbol == null) return false; +if (this.jme.$action != 1201) { +this.jme.$action = 1201; +this.jme.active_an = 18; +}return false; +}, "java.awt.event.KeyEvent,~N"); +Clazz.overrideMethod(c$, "keyTyped", +function(e){ +}, "java.awt.event.KeyEvent"); +Clazz.overrideMethod(c$, "keyPressed", +function(e){ +this.keyDown(e, e.getKeyCode()); +}, "java.awt.event.KeyEvent"); +Clazz.overrideMethod(c$, "keyReleased", +function(e){ +}, "java.awt.event.KeyEvent"); +c$.$MultiBox$1$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(jme, "MultiBox$1", null, java.awt.event.ActionListener); +Clazz.overrideMethod(c$, "actionPerformed", +function(e){ +this.b$["jme.MultiBox"].jme.aboutBoxPoint = this.b$["jme.MultiBox"].jme.aboutBox.getLocationOnScreen(); +this.b$["jme.MultiBox"].jme.aboutBox.setVisible(false); +}, "java.awt.event.ActionEvent"); +/*eoif5*/})(); +}; +c$.$MultiBox$2$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(jme, "MultiBox$2", null, java.awt.event.ActionListener); +Clazz.overrideMethod(c$, "actionPerformed", +function(e){ +this.b$["jme.MultiBox"].jme.smilesBoxPoint = this.b$["jme.MultiBox"].jme.smilesBox.getLocationOnScreen(); +this.b$["jme.MultiBox"].jme.smilesBox.setVisible(false); +}, "java.awt.event.ActionEvent"); +/*eoif5*/})(); +}; +c$.$MultiBox$3$=function(){ +/*if5*/;(function(){ +var c$ = Clazz.declareAnonymous(jme, "MultiBox$3", null, java.awt.event.ActionListener); +Clazz.overrideMethod(c$, "actionPerformed", +function(e){ +this.b$["jme.MultiBox"].jme.atomxBoxPoint = this.b$["jme.MultiBox"].jme.atomxBox.getLocationOnScreen(); +this.b$["jme.MultiBox"].jme.atomxBox.setVisible(false); +}, "java.awt.event.ActionEvent"); +/*eoif5*/})(); +}; +var c$ = Clazz.decorateAsClass(function(){ +this.text = null; +this.bgc = null; +this.$isBondQuery = false; +this.jme = null; +Clazz.instantialize(this, arguments);}, jme, "QueryBox", javax.swing.JFrame); +Clazz.prepareFields (c$, function(){ +this.bgc = jme.JME.bgColor; +}); +Clazz.makeConstructor(c$, +function(jme){ +Clazz.superConstructor(this, jme.QueryBox, ["Atom/Bond Query"]); +this.jme = jme; +this.setLayout( new java.awt.GridLayout(0, 1)); +this.setFont(jme.fontSmall); +this.setBackground(this.bgc); +var p1 = new javax.swing.JPanel(); +p1.setLayout( new java.awt.FlowLayout(0, 3, 1)); +p1.add( new javax.swing.JLabel("Atom type :")); +var first = true; +if (first) { +jme.any = new javax.swing.JButton("Any"); +jme.anyec = new javax.swing.JButton("Any except C"); +jme.halogen = new javax.swing.JButton("Halogen"); +}p1.add(jme.any); +p1.add(jme.anyec); +p1.add(jme.halogen); +this.add(p1); +var p2 = new javax.swing.JPanel(); +p2.setLayout( new java.awt.FlowLayout(0, 3, 1)); +p2.add( new javax.swing.JLabel("Or select one or more from the list :", 2)); +this.add(p2); +var p3 = new javax.swing.JPanel(); +p3.setLayout( new java.awt.FlowLayout(0, 3, 1)); +if (first) { +jme.c = new javax.swing.JButton("C"); +jme.n = new javax.swing.JButton("N"); +jme.o = new javax.swing.JButton("O"); +jme.s = new javax.swing.JButton("S"); +jme.p = new javax.swing.JButton("P"); +jme.f = new javax.swing.JButton("F"); +jme.cl = new javax.swing.JButton("Cl"); +jme.br = new javax.swing.JButton("Br"); +jme.i = new javax.swing.JButton("I"); +}p3.add(jme.c); +p3.add(jme.n); +p3.add(jme.o); +p3.add(jme.s); +p3.add(jme.p); +p3.add(jme.f); +p3.add(jme.cl); +p3.add(jme.br); +p3.add(jme.i); +this.add(p3); +var p4 = new javax.swing.JPanel(); +p4.setLayout( new java.awt.FlowLayout(0, 3, 1)); +if (first) { +jme.choiceh = new javax.swing.JComboBox(); +jme.choiceh.addItem("Any"); +jme.choiceh.addItem("0"); +jme.choiceh.addItem("1"); +jme.choiceh.addItem("2"); +jme.choiceh.addItem("3"); +}p4.add( new javax.swing.JLabel("Number of hydrogens : ")); +p4.add(jme.choiceh); +this.add(p4); +var p5 = new javax.swing.JPanel(); +p5.setLayout( new java.awt.FlowLayout(0, 3, 1)); +if (first) { +jme.choiced = new javax.swing.JComboBox(); +jme.choiced.addItem("Any"); +jme.choiced.addItem("0"); +jme.choiced.addItem("1"); +jme.choiced.addItem("2"); +jme.choiced.addItem("3"); +jme.choiced.addItem("4"); +jme.choiced.addItem("5"); +jme.choiced.addItem("6"); +}p5.add( new javax.swing.JLabel("Number of connections :", 2)); +p5.add(jme.choiced); +p5.add( new javax.swing.JLabel(" (H's don't count.)", 2)); +this.add(p5); +var p6 = new javax.swing.JPanel(); +p6.setLayout( new java.awt.FlowLayout(0, 3, 1)); +p6.add( new javax.swing.JLabel("Atom is :")); +if (first) jme.aromatic = new javax.swing.JButton("Aromatic"); +p6.add(jme.aromatic); +if (first) jme.nonaromatic = new javax.swing.JButton("Nonaromatic"); +p6.add(jme.nonaromatic); +if (first) jme.ring = new javax.swing.JButton("Ring"); +p6.add(jme.ring); +if (first) jme.nonring = new javax.swing.JButton("Nonring"); +p6.add(jme.nonring); +this.add(p6); +var p9 = new javax.swing.JPanel(); +p9.setBackground(this.getBackground().darker()); +p9.setLayout( new java.awt.FlowLayout(0, 3, 1)); +p9.add( new javax.swing.JLabel("Bond is :")); +if (first) jme.anyBond = new javax.swing.JButton("Any"); +p9.add(jme.anyBond); +if (first) jme.aromaticBond = new javax.swing.JButton("Aromatic"); +p9.add(jme.aromaticBond); +if (first) jme.ringBond = new javax.swing.JButton("Ring"); +p9.add(jme.ringBond); +if (first) jme.nonringBond = new javax.swing.JButton("Nonring"); +p9.add(jme.nonringBond); +this.add(p9); +var p8 = new javax.swing.JPanel(); +p8.setLayout( new java.awt.FlowLayout(1, 3, 1)); +if (first) this.text = new javax.swing.JTextField("*", 20); +p8.add(this.text); +p8.add( new javax.swing.JButton("Reset")); +p8.add( new javax.swing.JButton("Close")); +this.add(p8); +this.setResizable(false); +if (first) { +this.resetAtomList(); +this.resetAtomType(); +this.resetBondType(); +jme.aromatic.setBackground(this.bgc); +jme.nonaromatic.setBackground(this.bgc); +jme.ring.setBackground(this.bgc); +jme.nonring.setBackground(this.bgc); +jme.choiceh.setBackground(this.bgc); +jme.choiced.setBackground(this.bgc); +this.changeColor(jme.any); +}this.pack(); +this.setLocation(jme.point); +this.setVisible(true); +}, "jme.JME"); +Clazz.overrideMethod(c$, "action", +function(e, arg){ +if (arg.equals("Close")) { +this.jme.point = this.getLocationOnScreen(); +this.setVisible(false); +} else if (arg.equals("Reset")) { +this.resetAll(); +this.changeColor(this.jme.any); +this.doSmarts(); +} else if (Clazz.instanceOf(e.target,"javax.swing.JButton")) { +this.resetBondType(); +if (e.target === this.jme.any) { +this.resetAtomList(); +this.resetAtomType(); +} else if (e.target === this.jme.anyec) { +this.resetAtomList(); +this.resetAtomType(); +} else if (e.target === this.jme.halogen) { +this.resetAtomList(); +this.resetAtomType(); +} else if (e.target === this.jme.ring) { +this.jme.nonring.setBackground(this.bgc); +} else if (e.target === this.jme.nonring) { +this.jme.ring.setBackground(this.bgc); +this.jme.aromatic.setBackground(this.bgc); +} else if (e.target === this.jme.aromatic) { +this.jme.nonaromatic.setBackground(this.bgc); +this.jme.nonring.setBackground(this.bgc); +} else if (e.target === this.jme.nonaromatic) { +this.jme.aromatic.setBackground(this.bgc); +} else if (e.target === this.jme.anyBond || e.target === this.jme.aromaticBond || e.target === this.jme.ringBond || e.target === this.jme.nonringBond) { +this.resetAll(); +this.$isBondQuery = true; +} else { +this.resetAtomType(); +}this.changeColor((e.target)); +this.doSmarts(); +} else if (Clazz.instanceOf(e.target,"javax.swing.JComboBox")) { +this.resetBondType(); +var choice = (e.target); +if (choice.getSelectedIndex() == 0) choice.setBackground(this.bgc); + else choice.setBackground(java.awt.Color.orange); +this.doSmarts(); +}if (this.jme.$action != 107) { +this.jme.$action = 107; +this.jme.repaint(); +}return true; +}, "java.awt.Event,~O"); +Clazz.defineMethod(c$, "resetAll", +function(){ +this.resetAtomList(); +this.resetAtomType(); +this.jme.choiceh.setSelectedIndex(0); +this.jme.choiced.setSelectedIndex(0); +this.jme.aromatic.setBackground(this.bgc); +this.jme.nonaromatic.setBackground(this.bgc); +this.jme.ring.setBackground(this.bgc); +this.jme.nonring.setBackground(this.bgc); +this.jme.choiceh.setBackground(this.bgc); +this.jme.choiced.setBackground(this.bgc); +this.resetBondType(); +}); +Clazz.defineMethod(c$, "resetAtomList", +function(){ +this.jme.c.setBackground(this.bgc); +this.jme.n.setBackground(this.bgc); +this.jme.o.setBackground(this.bgc); +this.jme.s.setBackground(this.bgc); +this.jme.p.setBackground(this.bgc); +this.jme.f.setBackground(this.bgc); +this.jme.cl.setBackground(this.bgc); +this.jme.br.setBackground(this.bgc); +this.jme.i.setBackground(this.bgc); +}); +Clazz.defineMethod(c$, "resetAtomType", +function(){ +this.jme.any.setBackground(this.bgc); +this.jme.anyec.setBackground(this.bgc); +this.jme.halogen.setBackground(this.bgc); +}); +Clazz.defineMethod(c$, "resetBondType", +function(){ +this.jme.anyBond.setBackground(this.bgc); +this.jme.aromaticBond.setBackground(this.bgc); +this.jme.ringBond.setBackground(this.bgc); +this.jme.nonringBond.setBackground(this.bgc); +this.$isBondQuery = false; +}); +Clazz.defineMethod(c$, "changeColor", +function(b){ +if (b.getBackground() === this.bgc) b.setBackground(java.awt.Color.orange); + else b.setBackground(this.bgc); +}, "javax.swing.JButton"); +Clazz.defineMethod(c$, "doSmarts", +function(){ +var smarts = ""; +var showaA = false; +if (this.jme.any.getBackground() !== this.bgc) { +smarts = "*"; +showaA = true; +} else if (this.jme.anyec.getBackground() !== this.bgc) { +smarts = "!#6"; +showaA = true; +} else if (this.jme.halogen.getBackground() !== this.bgc) { +this.jme.f.setBackground(java.awt.Color.orange); +this.jme.cl.setBackground(java.awt.Color.orange); +this.jme.br.setBackground(java.awt.Color.orange); +this.jme.i.setBackground(java.awt.Color.orange); +smarts = "F,Cl,Br,I"; +} else { +var ar = this.jme.aromatic.getBackground() !== this.bgc; +var nar = this.jme.nonaromatic.getBackground() !== this.bgc; +if (this.jme.c.getBackground() !== this.bgc) { +if (ar) smarts += "c,"; + else if (nar) smarts += "C,"; + else smarts += "#6,"; +}if (this.jme.n.getBackground() !== this.bgc) { +if (ar) smarts += "n,"; + else if (nar) smarts += "N,"; + else smarts += "#7,"; +}if (this.jme.o.getBackground() !== this.bgc) { +if (ar) smarts += "o,"; + else if (nar) smarts += "O,"; + else smarts += "#8,"; +}if (this.jme.s.getBackground() !== this.bgc) { +if (ar) smarts += "s,"; + else if (nar) smarts += "S,"; + else smarts += "#16,"; +}if (this.jme.p.getBackground() !== this.bgc) { +if (ar) smarts += "p,"; + else if (nar) smarts += "P,"; + else smarts += "#15,"; +}if (this.jme.f.getBackground() !== this.bgc) smarts += "F,"; +if (this.jme.cl.getBackground() !== this.bgc) smarts += "Cl,"; +if (this.jme.br.getBackground() !== this.bgc) smarts += "Br,"; +if (this.jme.i.getBackground() !== this.bgc) smarts += "I,"; +if (smarts.endsWith(",")) smarts = smarts.substring(0, smarts.length - 1); +if (smarts.length < 1 && !this.$isBondQuery) { +if (ar) smarts = "a"; + else if (nar) smarts = "A"; + else { +this.jme.any.setBackground(java.awt.Color.orange); +smarts = "*"; +}}}var ap = ""; +if (showaA && this.jme.aromatic.getBackground() !== this.bgc) ap += ";a"; +if (showaA && this.jme.nonaromatic.getBackground() !== this.bgc) ap += ";A"; +if (this.jme.ring.getBackground() !== this.bgc) ap += ";R"; +if (this.jme.nonring.getBackground() !== this.bgc) ap += ";!R"; +if (this.jme.any.getBackground() !== this.bgc && ap.length > 0) smarts = ap.substring(1, ap.length); + else smarts += ap; +var nh = this.jme.choiceh.getSelectedIndex(); +if (nh > 0) { +nh--; +smarts += ";H" + nh; +}var nd = this.jme.choiced.getSelectedIndex(); +if (nd > 0) { +nd--; +smarts += ";D" + nd; +}if (this.jme.anyBond.getBackground() !== this.bgc) smarts = "~"; +if (this.jme.aromaticBond.getBackground() !== this.bgc) smarts = ":"; +if (this.jme.ringBond.getBackground() !== this.bgc) smarts = "@"; +if (this.jme.nonringBond.getBackground() !== this.bgc) smarts = "!@"; +this.text.setText(smarts); +}); +Clazz.defineMethod(c$, "isBondQuery", +function(){ +return this.$isBondQuery; +}); +Clazz.defineMethod(c$, "getSmarts", +function(){ +return this.text.getText(); +}); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/jme/JMEUtil.js b/config/plugins/visualizations/jmol/static/j2s/jme/JMEUtil.js new file mode 100755 index 000000000000..618d0d9044ae --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/jme/JMEUtil.js @@ -0,0 +1,351 @@ +Clazz.declarePackage("jme"); +Clazz.load(null, "jme.JMEUtil", ["java.lang.reflect.Array", "java.util.StringTokenizer", "jme.JME"], function(){ +var c$ = Clazz.declareType(jme, "JMEUtil", null); +c$.growArray = Clazz.defineMethod(c$, "growArray", +function(array, newSize){ +var newArray = jme.JMEUtil.createArray(newSize); +System.arraycopy(array, 0, newArray, 0, array.length); +return newArray; +}, "~A,~N"); +c$.copyArray = Clazz.defineMethod(c$, "copyArray", +function(array){ +var copy = Clazz.newIntArray (array.length, 0); +System.arraycopy(array, 0, copy, 0, array.length); +return copy; +}, "~A"); +c$.growArray = Clazz.defineMethod(c$, "growArray", +function(array, newSize){ +var newArray = jme.JMEUtil.copyOf(array, newSize); +return newArray; +}, "~A,~N"); +c$.copyOf = Clazz.defineMethod(c$, "copyOf", +function(original, newLength){ +return jme.JMEUtil.copyOf(original, newLength, original.getClass()); +}, "~A,~N"); +c$.copyOf = Clazz.defineMethod(c$, "copyOf", +function(original, newLength, newType){ +var copy = (newType === Array) ? new Array(newLength) : java.lang.reflect.Array.newInstance(newType.getComponentType(), newLength); +System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); +return copy; +}, "~A,~N,Class"); +c$.growArray = Clazz.defineMethod(c$, "growArray", +function(array, newSize){ +var newArray = jme.JMEUtil.createSArray(newSize); +System.arraycopy(array, 0, newArray, 0, array.length); +return newArray; +}, "~A,~N"); +c$.growArray = Clazz.defineMethod(c$, "growArray", +function(array, newSize){ +var newArray = jme.JMEUtil.createDArray(newSize); +System.arraycopy(array, 0, newArray, 0, array.length); +return newArray; +}, "~A,~N"); +c$.growArray = Clazz.defineMethod(c$, "growArray", +function(array, newSize){ +var secondarySize = array[0].length; +var newArray = jme.JMEUtil.createArray(newSize, secondarySize); +System.arraycopy(array, 0, newArray, 0, array.length); +return newArray; +}, "~A,~N"); +c$.equals = Clazz.defineMethod(c$, "equals", +function(a1, a2){ +if (a1.length == a2.length) { +for (var i = 0; i < a1.length; i++) { +if (a1[i] != a2[i]) { +return false; +}} +return true; +}return false; +}, "~A,~A"); +c$.intersection = Clazz.defineMethod(c$, "intersection", +function(array1, array2){ +var common = Clazz.newIntArray (0, 0); +for (var v1, $v1 = 0, $$v1 = array1; $v1 < $$v1.length && ((v1 = $$v1[$v1]) || true); $v1++) { +if (jme.JMEUtil.contains(array2, v1)) { +common = jme.JMEUtil.growArray(common, common.length + 1); +common[common.length - 1] = v1; +}} +return common; +}, "~A,~A"); +c$.contains = Clazz.defineMethod(c$, "contains", +function(array, v){ +for (var each, $each = 0, $$each = array; $each < $$each.length && ((each = $$each[$each]) || true); $each++) { +if (each == v) { +return true; +}} +return false; +}, "~A,~N"); +c$.swap = Clazz.defineMethod(c$, "swap", +function(array, i, j){ +var temp = array[j]; +array[j] = array[i]; +array[i] = temp; +}, "~A,~N,~N"); +c$.copyArray = Clazz.defineMethod(c$, "copyArray", +function(array, n){ +var copy = Clazz.newIntArray (array.length, 0); +System.arraycopy(array, 0, copy, 0, n); +return copy; +}, "~A,~N"); +c$.copyArray = Clazz.defineMethod(c$, "copyArray", +function(array){ +var copy = new Array(array.length); +System.arraycopy(array, 0, copy, 0, array.length); +return copy; +}, "~A"); +c$.copyArray = Clazz.defineMethod(c$, "copyArray", +function(array){ +var copy = Clazz.newDoubleArray (array.length, 0); +System.arraycopy(array, 0, copy, 0, array.length); +return copy; +}, "~A"); +c$.createArray = Clazz.defineMethod(c$, "createArray", +function(size){ +return Clazz.newIntArray (size, 0); +}, "~N"); +c$.createSArray = Clazz.defineMethod(c$, "createSArray", +function(size){ +return new Array(size); +}, "~N"); +c$.createDArray = Clazz.defineMethod(c$, "createDArray", +function(size){ +return Clazz.newDoubleArray (size, 0); +}, "~N"); +c$.createLArray = Clazz.defineMethod(c$, "createLArray", +function(size){ +return Clazz.newLongArray (size, 0); +}, "~N"); +c$.createBArray = Clazz.defineMethod(c$, "createBArray", +function(size){ +return Clazz.newBooleanArray(size, false); +}, "~N"); +c$.createArray = Clazz.defineMethod(c$, "createArray", +function(size1, size2){ +return Clazz.newIntArray (size1, size2, 0); +}, "~N,~N"); +c$.isHighDPI = Clazz.defineMethod(c$, "isHighDPI", +function(){ +return false; +}); +c$.runAsync = Clazz.defineMethod(c$, "runAsync", +function(runAsyncCallback){ +runAsyncCallback.onSuccess(); +}, "jme.JMEUtil.RunAsyncCallback"); +c$.generatePrimes = Clazz.defineMethod(c$, "generatePrimes", +function(n){ +var npn; +var pn = jme.JMEUtil.createLArray(n + 2); +var prime = jme.JMEUtil.createArray(100); +var test = 5; +var index = 0; +var num = 0; +var check = true; +prime[0] = 3; +pn[1] = 2; +pn[2] = 3; +npn = 2; +if (n < 3) return pn; +while (test < (prime[num] * prime[num])) { +index = 0; +check = true; +while (check == true && index <= num && test >= (prime[index] * prime[index])) { +if (test % prime[index] == 0) check = false; + else index++; +} +if (check == true) { +pn[++npn] = test; +if (npn >= n) return pn; +if (num < (prime.length - 1)) { +num++; +prime[num] = test; +}}test += 2; +} +System.err.println("ERROR - Prime Number generator failed !"); +return pn; +}, "~N"); +c$.nextData = Clazz.defineMethod(c$, "nextData", +function(st, separator){ +while (st.hasMoreTokens()) { +var s = st.nextToken(); +if (s.equals(separator)) return " "; +if (!st.nextToken().equals(separator)) { +System.err.println("mol file line separator problem!"); +}while (true) { +var c = s.charAt(s.length - 1); +if (c == '|' || c == '\n' || c == '\r') { +s = s.substring(0, s.length - 1); +if (s.length == 0) return " "; +} else { +break; +}} +return s; +} +return null; +}, "java.util.StringTokenizer,~S"); +c$.findLineSeparator = Clazz.defineMethod(c$, "findLineSeparator", +function(molFile){ +var st = new java.util.StringTokenizer(molFile, "\n", true); +if (st.countTokens() > 4) return "\n"; +st = new java.util.StringTokenizer(molFile, "|", true); +if (st.countTokens() > 4) return "|"; +System.err.println("Cannot process mol file, use | as line separator !"); +return null; +}, "~S"); +c$.squareEuclideanDist = Clazz.defineMethod(c$, "squareEuclideanDist", +function(x1, y1, x2, y2){ +var dx = x2 - x1; +var dy = y2 - y1; +return dx * dx + dy * dy; +}, "~N,~N,~N,~N"); +c$.dotProduct = Clazz.defineMethod(c$, "dotProduct", +function(x1, y1, x2, y2){ +return x1 * x2 + y1 * y2; +}, "~N,~N,~N,~N"); +c$.triangleHeight = Clazz.defineMethod(c$, "triangleHeight", +function(a, b, c){ +var s = (a + b + c) / 2; +var area = Math.sqrt(s * (s - a) * (s - b) * (s - c)); +var h = 0; +if (b != 0) { +h = area / b * 2; +}return h; +}, "~N,~N,~N"); +c$.compareAngles = Clazz.defineMethod(c$, "compareAngles", +function(sina, cosa, sinb, cosb){ +var qa = 0; +var qb = 0; +if (sina >= 0. && cosa >= 0.) qa = 1; + else if (sina >= 0. && cosa < 0.) qa = 2; + else if (sina < 0. && cosa < 0.) qa = 3; + else if (sina < 0. && cosa >= 0.) qa = 4; +if (sinb >= 0. && cosb >= 0.) qb = 1; + else if (sinb >= 0. && cosb < 0.) qb = 2; + else if (sinb < 0. && cosb < 0.) qb = 3; + else if (sinb < 0. && cosb >= 0.) qb = 4; +if (qa < qb) return 1; + else if (qa > qb) return -1; +switch (qa) { +case 1: +case 4: +return (sina < sinb ? 1 : -1); +case 2: +case 3: +return (sina > sinb ? 1 : -1); +} +System.err.println("stereowarning #31"); +return 0; +}, "~N,~N,~N,~N"); +c$.stereoTransformation = Clazz.defineMethod(c$, "stereoTransformation", +function(t, ref){ +var d = 0; +if (ref[0] == t[1]) { +d = t[0]; +t[0] = t[1]; +t[1] = d; +d = t[2]; +t[2] = t[3]; +t[3] = d; +} else if (ref[0] == t[2]) { +d = t[2]; +t[2] = t[0]; +t[0] = d; +d = t[1]; +t[1] = t[3]; +t[3] = d; +} else if (ref[0] == t[3]) { +d = t[3]; +t[3] = t[0]; +t[0] = d; +d = t[1]; +t[1] = t[2]; +t[2] = d; +}if (ref[1] == t[2]) { +d = t[1]; +t[1] = t[2]; +t[2] = d; +d = t[2]; +t[2] = t[3]; +t[3] = d; +} else if (ref[1] == t[3]) { +d = t[1]; +t[1] = t[3]; +t[3] = d; +d = t[2]; +t[2] = t[3]; +t[3] = d; +}}, "~A,~A"); +c$.checkAtomicSymbol = Clazz.defineMethod(c$, "checkAtomicSymbol", +function(s){ +for (var an = 1; an < jme.JME.zlabel.length; an++) { +if (s.equals(jme.JME.zlabel[an])) return an; +} +return 18; +}, "~S"); +c$.getSDFDateLine = Clazz.defineMethod(c$, "getSDFDateLine", +function(version){ +var mol = (version + " ").substring(0, 10); +var cMM; +var cDD; +var cYYYY; +var cHH; +var cmm; +{ +var c = new Date(); cMM = c.getMonth(); cDD = c.getDate(); cYYYY = +c.getFullYear(); cHH = c.getHours(); cmm = c.getMinutes(); +}mol += jme.JMEUtil.rightJustify("00", "" + (1 + cMM)); +mol += jme.JMEUtil.rightJustify("00", "" + cDD); +mol += ("" + cYYYY).substring(2, 4); +mol += jme.JMEUtil.rightJustify("00", "" + cHH); +mol += jme.JMEUtil.rightJustify("00", "" + cmm); +mol += "2D 1 1.00000 0.00000 0"; +return mol; +}, "~S"); +c$.iformat = Clazz.defineMethod(c$, "iformat", +function(number, len){ +return jme.JMEUtil.rightJustify(" ".substring(0, len), "" + number); +}, "~N,~N"); +c$.rightJustify = Clazz.defineMethod(c$, "rightJustify", +function(s1, s2){ +var n = s1.length - s2.length; +return (n == 0 ? s2 : n > 0 ? s1.substring(0, n) + s2 : s1.substring(0, s1.length - 1) + "?"); +}, "~S,~S"); +c$.fformat = Clazz.defineMethod(c$, "fformat", +function(number, len, dec){ +if (dec == 0) return jme.JMEUtil.iformat(Clazz.doubleToInt(number), len); +if (Math.abs(number) < 0.0009) number = 0.; +var m = Math.pow(10, dec); +number = Math.round(number * m) / m; +var s = new Double(number).toString(); +var dotpos = s.indexOf('.'); +if (dotpos < 0) { +s += "."; +dotpos = s.indexOf('.'); +}var slen = s.length; +for (var i = 1; i <= dec - slen + dotpos + 1; i++) s += "0"; + +return (len == 0 ? s : jme.JMEUtil.rightJustify(" ".substring(0, len), s)); +}, "~N,~N,~N"); +c$.stringHeight = Clazz.defineMethod(c$, "stringHeight", +function(fm){ +return fm.getAscent() - fm.getDescent(); +}, "java.awt.FontMetrics"); +/*if3*/;(function(){ +var c$ = Clazz.declareType(jme.JMEUtil, "GWT", null); +c$.isScript = Clazz.defineMethod(c$, "isScript", +function(){ +return false; +}); +c$.log = Clazz.defineMethod(c$, "log", +function(string){ +}, "~S"); +/*eoif3*/})(); +Clazz.declareInterface(jme.JMEUtil, "RunAsyncCallback"); +/*if3*/;(function(){ +var c$ = Clazz.declareType(jme.JMEUtil, "JSME_RunAsyncCallback", null, jme.JMEUtil.RunAsyncCallback); +Clazz.overrideMethod(c$, "onFailure", +function(reason){ +}, "Throwable"); +/*eoif3*/})(); +Clazz.declareInterface(jme.JMEUtil, "RunWhenDataReadyCallback"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/jme/JMEmol.js b/config/plugins/visualizations/jmol/static/j2s/jme/JMEmol.js new file mode 100755 index 000000000000..6163ae1c11e4 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/jme/JMEmol.js @@ -0,0 +1,4000 @@ +Clazz.declarePackage("jme"); +Clazz.load(null, "jme.JMEmol", ["java.util.ArrayList", "$.Date", "$.Hashtable", "$.StringTokenizer", "JU.SB", "jme.AtomDisplayLabel", "$.JME", "$.JMEUtil", "J.api.JmolAdapter", "JV.PropertyManager"], function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.jme = null; +this.natoms = 0; +this.nbonds = 0; +this.an = null; +this.q = null; +this.x = null; +this.y = null; +this.v = null; +this.abg = null; +this.atag = null; +this.label = null; +this.nh = null; +this.nv = null; +this.va = null; +this.vb = null; +this.nasv = null; +this.stereob = null; +this.xb = null; +this.yb = null; +this.btag = null; +this.$mark = null; +this.chain = null; +this.nmarked = 0; +this.maxMark = 0; +this.doColoring = 0; +this.a = null; +this.btype = null; +this.touchedAtom = 0; +this.touchedBond = 0; +this.touched_org = 0; +this.xorg = 0; +this.yorg = 0; +this.linearAdding = false; +this.nchain = 0; +this.stopChain = false; +this.needRecentering = false; +this.minx = 0; +this.maxx = 0; +this.miny = 0; +this.maxy = 0; +Clazz.instantialize(this, arguments);}, jme, "JMEmol", null); +Clazz.prepareFields (c$, function(){ +this.an = Clazz.newIntArray (20, 0); +this.q = Clazz.newIntArray (20, 0); +this.x = Clazz.newDoubleArray (20, 0); +this.y = Clazz.newDoubleArray (20, 0); +this.v = Clazz.newIntArray (20, 7, 0); +this.abg = Clazz.newIntArray (20, 0); +this.atag = new Array(20); +this.label = new Array(20); +this.nh = Clazz.newIntArray (20, 0); +this.nv = Clazz.newIntArray (20, 0); +this.va = Clazz.newIntArray (20, 0); +this.vb = Clazz.newIntArray (20, 0); +this.nasv = Clazz.newIntArray (20, 0); +this.stereob = Clazz.newIntArray (20, 0); +this.xb = Clazz.newIntArray (20, 0); +this.yb = Clazz.newIntArray (20, 0); +this.btag = new Array(20); +this.$mark = Clazz.newIntArray (10, 2, 0); +this.chain = Clazz.newIntArray (101, 0); +}); +Clazz.makeConstructor(c$, +function(jme){ +this.jme = jme; +}, "jme.JME"); +Clazz.makeConstructor(c$, +function(m){ +this.jme = m.jme; +this.natoms = m.natoms; +this.nbonds = m.nbonds; +this.nmarked = m.nmarked; +this.an = Clazz.newIntArray (this.natoms + 1, 0); +System.arraycopy(m.an, 0, this.an, 0, this.natoms + 1); +this.q = Clazz.newIntArray (this.natoms + 1, 0); +System.arraycopy(m.q, 0, this.q, 0, this.natoms + 1); +this.nh = Clazz.newIntArray (this.natoms + 1, 0); +System.arraycopy(m.nh, 0, this.nh, 0, this.natoms + 1); +this.abg = Clazz.newIntArray (this.natoms + 1, 0); +System.arraycopy(m.abg, 0, this.abg, 0, this.natoms + 1); +this.atag = new Array(this.natoms + 1); +System.arraycopy(m.atag, 0, this.atag, 0, this.natoms + 1); +this.x = Clazz.newDoubleArray (this.natoms + 1, 0); +System.arraycopy(m.x, 0, this.x, 0, this.natoms + 1); +this.y = Clazz.newDoubleArray (this.natoms + 1, 0); +System.arraycopy(m.y, 0, this.y, 0, this.natoms + 1); +this.label = new Array(this.natoms + 1); +System.arraycopy(m.label, 0, this.label, 0, this.natoms + 1); +this.va = Clazz.newIntArray (this.nbonds + 1, 0); +System.arraycopy(m.va, 0, this.va, 0, this.nbonds + 1); +this.vb = Clazz.newIntArray (this.nbonds + 1, 0); +System.arraycopy(m.vb, 0, this.vb, 0, this.nbonds + 1); +this.nasv = Clazz.newIntArray (this.nbonds + 1, 0); +System.arraycopy(m.nasv, 0, this.nasv, 0, this.nbonds + 1); +this.btag = new Array(this.nbonds + 1); +System.arraycopy(m.btag, 0, this.btag, 0, this.nbonds + 1); +this.stereob = Clazz.newIntArray (this.nbonds + 1, 0); +System.arraycopy(m.stereob, 0, this.stereob, 0, this.nbonds + 1); +this.$mark = Clazz.newIntArray (this.nmarked + 1, 2, 0); +for (var i = 1; i <= this.nmarked; i++) { +this.$mark[i][0] = m.$mark[i][0]; +this.$mark[i][1] = m.$mark[i][1]; +} +this.doColoring = m.doColoring; +}, "jme.JMEmol"); +Clazz.makeConstructor(c$, +function(jme, mols, nmols){ +this.construct (jme); +for (var i = 1; i <= nmols; i++) { +this.natoms += mols[i].natoms; +this.nbonds += mols[i].nbonds; +this.nmarked += mols[i].nmarked; +} +this.an = Clazz.newIntArray (this.natoms + 1, 0); +this.q = Clazz.newIntArray (this.natoms + 1, 0); +this.nh = Clazz.newIntArray (this.natoms + 1, 0); +this.abg = Clazz.newIntArray (this.natoms + 1, 0); +this.atag = new Array(this.natoms + 1); +this.x = Clazz.newDoubleArray (this.natoms + 1, 0); +this.y = Clazz.newDoubleArray (this.natoms + 1, 0); +this.label = new Array(this.natoms + 1); +this.va = Clazz.newIntArray (this.nbonds + 1, 0); +this.vb = Clazz.newIntArray (this.nbonds + 1, 0); +this.nasv = Clazz.newIntArray (this.nbonds + 1, 0); +this.btag = new Array(this.nbonds + 1); +this.stereob = Clazz.newIntArray (this.nbonds + 1, 0); +this.$mark = Clazz.newIntArray (this.nmarked + 1, 2, 0); +var na = 0; +var nb = 0; +var nm = 0; +var nadd = 0; +for (var i = 1; i <= nmols; i++) { +for (var j = 1; j <= mols[i].natoms; j++) { +na++; +this.an[na] = mols[i].an[j]; +this.x[na] = mols[i].x[j]; +this.y[na] = mols[i].y[j]; +this.q[na] = mols[i].q[j]; +this.nh[na] = mols[i].nh[j]; +this.abg[na] = mols[i].abg[j]; +this.atag[na] = mols[i].atag[j]; +this.label[na] = mols[i].label[j]; +} +for (var j = 1; j <= mols[i].nbonds; j++) { +nb++; +this.nasv[nb] = mols[i].nasv[j]; +this.stereob[nb] = mols[i].stereob[j]; +this.va[nb] = mols[i].va[j] + nadd; +this.vb[nb] = mols[i].vb[j] + nadd; +this.btag[nb] = mols[i].btag[j]; +} +for (var j = 1; j <= mols[i].nmarked; j++) { +nm++; +this.$mark[nm][0] = mols[i].$mark[j][0] + nadd; +this.$mark[nm][1] = mols[i].$mark[j][1]; +} +nadd = na; +} +this.complete(); +this.center(); +}, "jme.JME,~A,~N"); +Clazz.makeConstructor(c$, +function(jme, m, part){ +this.construct (jme); +var newn = Clazz.newIntArray (m.natoms + 1, 0); +for (var i = 1; i <= m.natoms; i++) { +if (m.a[i] != part) continue; +this.createAtom(); +this.an[this.natoms] = m.an[i]; +this.x[this.natoms] = m.x[i]; +this.y[this.natoms] = m.y[i]; +this.q[this.natoms] = m.q[i]; +this.nh[this.natoms] = m.nh[i]; +this.abg[this.natoms] = m.abg[i]; +this.atag[this.natoms] = m.atag[i]; +this.label[this.natoms] = m.label[i]; +newn[i] = this.natoms; +} +for (var i = 1; i <= m.nbonds; i++) { +var atom1 = m.va[i]; +var atom2 = m.vb[i]; +if (m.a[atom1] != part && m.a[atom2] != part) continue; +if (m.a[atom1] != part || m.a[atom2] != part) { +System.err.println("MOL multipart inconsistency - report bug !"); +continue; +}this.createBond(); +this.nasv[this.nbonds] = m.nasv[i]; +this.stereob[this.nbonds] = m.stereob[i]; +this.va[this.nbonds] = newn[atom1]; +this.vb[this.nbonds] = newn[atom2]; +this.btag[this.nbonds] = m.btag[i]; +} +for (var i = 1; i <= m.nmarked; i++) { +var atom = m.$mark[i][0]; +if (atom != part) continue; +this.nmarked++; +this.$mark[this.nmarked][0] = newn[atom]; +this.$mark[this.nmarked][1] = m.$mark[i][1]; +} +this.doColoring = m.doColoring; +this.complete(); +this.center(); +}, "jme.JME,jme.JMEmol,~N"); +Clazz.makeConstructor(c$, +function(jme, molecule, hasCoordinates){ +this.construct (jme); +if (molecule.startsWith("\"")) molecule = molecule.substring(1, molecule.length); +if (molecule.endsWith("\"")) molecule = molecule.substring(0, molecule.length - 1); +if (molecule.length < 1) { +this.natoms = 0; +return; +}try { +var st = new java.util.StringTokenizer(molecule); +var natomsx = Integer.$valueOf(st.nextToken()).intValue(); +var nbondsx = Integer.$valueOf(st.nextToken()).intValue(); +for (var i = 1; i <= natomsx; i++) { +var symbol = st.nextToken(); +this.createAtom(symbol); +if (hasCoordinates) { +this.x[i] = Double.$valueOf(st.nextToken()).doubleValue(); +this.y[i] = -Double.$valueOf(st.nextToken()).doubleValue(); +}} +for (var i = 1; i <= nbondsx; i++) { +this.createBond(); +this.va[i] = Integer.$valueOf(st.nextToken()).intValue(); +this.vb[i] = Integer.$valueOf(st.nextToken()).intValue(); +this.nasv[i] = Integer.$valueOf(st.nextToken()).intValue(); +if (this.nasv[i] == -1) { +this.nasv[i] = 1; +this.stereob[i] = 1; +} else if (this.nasv[i] == -2) { +this.nasv[i] = 1; +this.stereob[i] = 2; +} else if (this.nasv[i] == -5) { +this.nasv[i] = 2; +this.stereob[i] = 10; +} else if (this.nasv[i] == 11 || this.nasv[i] == 12 || this.nasv[i] == 13 || this.nasv[i] == 14) { +this.stereob[i] = this.nasv[i]; +this.nasv[i] = 9; +}} +this.fillFields(); +if (hasCoordinates) { +this.scaling(); +this.center(); +}} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.err.println("read mol exception - " + e.getMessage()); +this.natoms = 0; +return; +} else { +throw e; +} +} +this.deleteHydrogens(); +this.complete(); +}, "jme.JME,~S,~B"); +Clazz.makeConstructor(c$, +function(jme, atomIterator, bondIterator){ +this.construct (jme); +this.init(); +var atomMap = new java.util.Hashtable(); +while (atomIterator.hasNext()) { +this.createAtom(); +atomMap.put(atomIterator.getUniqueID(), Integer.$valueOf(this.natoms)); +this.x[this.natoms] = atomIterator.getXYZ().x; +this.y[this.natoms] = -atomIterator.getXYZ().y; +this.q[this.natoms] = atomIterator.getFormalCharge(); +this.setAtom(this.natoms, J.api.JmolAdapter.getElementSymbol(atomIterator.getElement())); +} +while (bondIterator.hasNext()) { +this.createBond(); +var i = this.nbonds; +this.va[i] = atomMap.get(bondIterator.getAtomUniqueID1()).intValue(); +this.vb[i] = atomMap.get(bondIterator.getAtomUniqueID2()).intValue(); +var bo = bondIterator.getEncodedOrder(); +switch (bo) { +case 1025: +this.nasv[i] = 1; +this.stereob[i] = 1; +break; +case 1041: +this.nasv[i] = 1; +this.stereob[i] = 2; +break; +case 1: +case 513: +this.nasv[i] = 1; +break; +case 2: +case 514: +this.nasv[i] = 2; +break; +case 3: +this.nasv[i] = 3; +break; +case 515: +case 1057: +default: +if ((bo & 0x07) != 0) this.nasv[i] = (bo & 0x07); +break; +} +} +this.fillFields(); +this.scaling(); +this.center(); +this.complete(); +this.deleteHydrogens(); +this.complete(); +}, "jme.JME,J.api.JmolAdapterAtomIterator,J.api.JmolAdapterBondIterator"); +Clazz.makeConstructor(c$, +function(jme, molFile){ +this.construct (jme); +if (molFile == null) return; +var line = ""; +var separator = jme.JMEmol.findSeparator(molFile); +var st = new java.util.StringTokenizer(molFile, separator, true); +for (var i = 1; i <= 4; i++) { +line = jme.JMEmol.nextData(st, separator); +} +var natomsx = Integer.$valueOf(line.substring(0, 3).trim()).intValue(); +var nbondsx = Integer.$valueOf(line.substring(3, 6).trim()).intValue(); +for (var i = 1; i <= natomsx; i++) { +this.createAtom(); +line = jme.JMEmol.nextData(st, separator); +this.x[i] = Double.$valueOf(line.substring(0, 10).trim()).doubleValue(); +this.y[i] = -Double.$valueOf(line.substring(10, 20).trim()).doubleValue(); +var endsymbol = 34; +if (line.length < 34) endsymbol = line.length; +var symbol = line.substring(31, endsymbol).trim(); +this.setAtom(i, symbol); +if (line.length >= 62) { +var s = line.substring(60, 63).trim(); +if (s.length > 0) { +var mark = Integer.$valueOf(s).intValue(); +if (mark > 0) { +this.touchedAtom = i; +jme.currentMark = mark; +this.mark(); +this.touchedAtom = 0; +}}}} +for (var i = 1; i <= nbondsx; i++) { +this.createBond(); +line = jme.JMEmol.nextData(st, separator); +this.va[i] = Integer.$valueOf(line.substring(0, 3).trim()).intValue(); +this.vb[i] = Integer.$valueOf(line.substring(3, 6).trim()).intValue(); +var nasvx = Integer.$valueOf(line.substring(6, 9).trim()).intValue(); +if (nasvx == 1) this.nasv[i] = 1; + else if (nasvx == 2) this.nasv[i] = 2; + else if (nasvx == 3) this.nasv[i] = 3; + else this.nasv[i] = 9; +var stereo = 0; +if (line.length > 11) stereo = Integer.$valueOf(line.substring(9, 12).trim()).intValue(); +if (nasvx == 1 && stereo == 1) { +this.nasv[i] = 1; +this.stereob[i] = 1; +}if (nasvx == 1 && stereo == 6) { +this.nasv[i] = 1; +this.stereob[i] = 2; +}} +this.fillFields(); +this.scaling(); +this.center(); +this.complete(); +while (st.hasMoreTokens()) { +if ((line = st.nextToken()) == null) break; +if (line.startsWith("M END")) break; +if (line.startsWith("M CHG")) { +var stq = new java.util.StringTokenizer(line); +stq.nextToken(); +stq.nextToken(); +var ndata = Integer.$valueOf(stq.nextToken()).intValue(); +for (var i = 1; i <= ndata; i++) { +var a = Integer.$valueOf(stq.nextToken()).intValue(); +this.q[a] = Integer.$valueOf(stq.nextToken()).intValue(); +} +}if (line.startsWith("M APO")) { +var stq = new java.util.StringTokenizer(line); +stq.nextToken(); +stq.nextToken(); +var ndata = Integer.$valueOf(stq.nextToken()).intValue(); +for (var i = 1; i <= ndata; i++) { +var a = Integer.$valueOf(stq.nextToken()).intValue(); +var nr = Integer.$valueOf(stq.nextToken()).intValue(); +this.touchedAtom = a; +this.addBond(); +this.setAtom(this.natoms, "R" + nr); +this.touchedAtom = 0; +} +}} +this.deleteHydrogens(); +this.complete(); +}, "jme.JME,~S"); +Clazz.defineMethod(c$, "init", +function(){ +this.natoms = 0; +this.nbonds = 0; +this.nmarked = 0; +}); +c$.nextData = Clazz.defineMethod(c$, "nextData", +function(st, separator){ +while (st.hasMoreTokens()) { +var s = st.nextToken(); +if (s.equals(separator)) return " "; +if (!st.nextToken().equals(separator)) { +System.err.println("mol file line separator problem!"); +}while (true) { +var c = s.charAt(s.length - 1); +if (c == '|' || c == '\n' || c == '\r') { +s = s.substring(0, s.length - 1); +if (s.length == 0) return " "; +} else break; +} +return s; +} +return null; +}, "java.util.StringTokenizer,~S"); +c$.findSeparator = Clazz.defineMethod(c$, "findSeparator", +function(molFile){ +var st = new java.util.StringTokenizer(molFile, "\n", true); +if (st.countTokens() > 4) return "\n"; +st = new java.util.StringTokenizer(molFile, "|", true); +if (st.countTokens() > 4) return "|"; +System.err.println("Cannot process mol file, use | as line separator !"); +return null; +}, "~S"); +Clazz.defineMethod(c$, "getAtomCount", +function(){ +return this.natoms; +}); +Clazz.defineMethod(c$, "getBondCount", +function(){ +return this.nbonds; +}); +Clazz.defineMethod(c$, "getX", +function(i){ +return this.x[i] * 1.4 / 25; +}, "~N"); +Clazz.defineMethod(c$, "getY", +function(i){ +return this.y[i] * 1.4 / 25; +}, "~N"); +Clazz.defineMethod(c$, "setAtomProperties", +function(xx, yy, ahc, aq){ +this.x[this.natoms] = xx; +this.y[this.natoms] = yy; +this.setAtomHydrogenCount(this.natoms, ahc); +this.setAtomFormalCharge(this.natoms, aq); +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "getHydrogenCount", +function(i){ +return this.nh[i]; +}, "~N"); +Clazz.defineMethod(c$, "getCharge", +function(i){ +return this.q[i]; +}, "~N"); +Clazz.defineMethod(c$, "getBondProperties", +function(i){ +var bd = Clazz.newIntArray (4, 0); +bd[0] = this.va[i]; +bd[1] = this.vb[i]; +bd[2] = this.nasv[i]; +bd[3] = this.stereob[i]; +return bd; +}, "~N"); +Clazz.defineMethod(c$, "setBondProperties", +function(bp0, bp1, bp2, bp3){ +this.va[this.nbonds] = bp0; +this.vb[this.nbonds] = bp1; +this.nasv[this.nbonds] = bp2; +this.stereob[this.nbonds] = bp3; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "completeMolecule", +function(){ +this.fillFields(); +this.scaling(); +this.center(); +this.complete(); +}); +Clazz.defineMethod(c$, "complete", +function(){ +this.fillFields(); +var storage = this.nasv.length; +this.xb = Clazz.newIntArray (storage, 0); +this.yb = Clazz.newIntArray (storage, 0); +this.findBondCenters(); +this.valenceState(); +}); +Clazz.defineMethod(c$, "scaling", +function(){ +var dx; +var dy; +var sumlen = 0.; +var scale = 0.; +for (var i = 1; i <= this.nbonds; i++) { +dx = this.x[this.va[i]] - this.x[this.vb[i]]; +dy = this.y[this.va[i]] - this.y[this.vb[i]]; +sumlen += Math.sqrt(dx * dx + dy * dy); +} +if (this.nbonds > 0) { +sumlen = sumlen / this.nbonds; +scale = 25 / sumlen; +} else if (this.natoms > 1) { +scale = 75.0 / Math.sqrt((this.x[1] - this.x[2]) * (this.x[1] - this.x[2]) + (this.y[1] - this.y[2]) * (this.y[1] - this.y[2])); +}for (var i = 1; i <= this.natoms; i++) { +this.x[i] *= scale; +this.y[i] *= scale; +} +}); +Clazz.defineMethod(c$, "center", +function(){ +var center = Clazz.newDoubleArray (4, 0); +var xpix = 0; +var ypix = 0; +if (this.jme != null && this.jme.dimension != null && this.jme.dimension.width > 0) { +xpix = this.jme.dimension.width - this.jme.sd; +ypix = this.jme.dimension.height - this.jme.sd * 3; +}if (xpix <= 0 || ypix <= 0) { +this.needRecentering = true; +return; +}this.centerPoint(center); +var shiftx = Clazz.doubleToInt(xpix / 2) - Math.round(center[0]); +var shifty = Clazz.doubleToInt(ypix / 2) - Math.round(center[1]); +if (!this.jme.nocenter) for (var i = 1; i <= this.natoms; i++) { +this.x[i] += shiftx; +this.y[i] += shifty; +} +this.findBondCenters(); +}); +Clazz.defineMethod(c$, "testAtomTouch", +function(xx, yy){ +var i; +var atom; +var min; +var dx; +var dy; +var rx; +atom = 0; +min = 51; +for (i = 1; i <= this.natoms; i++) { +dx = xx - this.x[i]; +dy = yy - this.y[i]; +rx = dx * dx + dy * dy; +if (rx < 50) if (rx < min) { +min = rx; +atom = i; +}} +return atom; +}, "~N,~N"); +Clazz.defineMethod(c$, "testBondTouch", +function(xx, yy){ +var i; +var bond; +var min; +var dx; +var dy; +var rx; +bond = 0; +min = 51; +for (i = 1; i <= this.nbonds; i++) { +dx = xx - this.xb[i]; +dy = yy - this.yb[i]; +rx = dx * dx + dy * dy; +if (rx < 50) if (rx < min) { +min = rx; +bond = i; +}} +return bond; +}, "~N,~N"); +Clazz.defineMethod(c$, "reset", +function(){ +this.save(); +this.natoms = 0; +this.nbonds = 0; +this.nmarked = 0; +}); +Clazz.defineMethod(c$, "draw", +function(g){ +var atom1; +var atom2; +var xa; +var ya; +var xb; +var yb; +var dx; +var dy; +var dd; +var sina = 1.; +var cosa = 1.; +var sirka2s; +var sirka2c; +var sirka2 = 2.; +var sirka3 = 3.; +if (this.needRecentering) { +this.center(); +this.jme.alignMolecules(1, this.jme.nmols, 0); +this.needRecentering = false; +}if (this.jme.depictScale != 1.) { +sirka2 *= this.jme.depictScale; +sirka3 *= this.jme.depictScale; +var xs = 1.0; +if (this.jme.depictScale < 0.7) xs = 1.2; +var fs = Clazz.doubleToInt(this.jme.fontSize * this.jme.depictScale * xs); +this.jme.$font = new java.awt.Font("Helvetica", 0, fs); +this.jme.fontMet = g.getFontMetrics(this.jme.$font); +}if (this.jme.depictBorder) { +g.setColor(java.awt.Color.black); +g.drawRect(0, 0, this.jme.dimension.width - 1, this.jme.dimension.height - 1); +}if (this.natoms == 0) return; +if (this.doColoring == -1) { +var cs = Math.round(sirka2 * 12); +for (var i = 1; i <= this.natoms; i++) { +if (this.abg[i] > 0 && this.abg[i] < 7) { +g.setColor(this.jme.psColor[this.abg[i]]); +g.fillOval(Clazz.doubleToInt(this.x[i] - cs / 2.), Clazz.doubleToInt(this.y[i] - cs / 2.), cs, cs); +}} +for (var i = 1; i <= this.nbonds; i++) { +atom1 = this.va[i]; +atom2 = this.vb[i]; +if (this.abg[atom1] == 0) continue; +if (this.abg[atom1] != this.abg[atom2]) continue; +g.setColor(this.jme.psColor[this.abg[atom1]]); +dx = this.x[atom2] - this.x[atom1]; +dy = this.y[atom2] - this.y[atom1]; +dd = Math.sqrt(dx * dx + dy * dy); +if (dd < 1.) dd = 1.; +sina = dy / dd; +cosa = dx / dd; +sirka2s = (sirka3 * 3) * sina; +sirka2c = (sirka3 * 3) * cosa; +var xr = Clazz.newIntArray (4, 0); +var yr = Clazz.newIntArray (4, 0); +xr[0] = Clazz.doubleToInt(this.x[atom1] + sirka2s); +yr[0] = Clazz.doubleToInt(this.y[atom1] - sirka2c); +xr[1] = Clazz.doubleToInt(this.x[atom2] + sirka2s); +yr[1] = Clazz.doubleToInt(this.y[atom2] - sirka2c); +xr[2] = Clazz.doubleToInt(this.x[atom2] - sirka2s); +yr[2] = Clazz.doubleToInt(this.y[atom2] + sirka2c); +xr[3] = Clazz.doubleToInt(this.x[atom1] - sirka2s); +yr[3] = Clazz.doubleToInt(this.y[atom1] + sirka2c); +g.fillPolygon(xr, yr, 4); +} +}var neighborXSum = jme.JMEUtil.createDArray(this.natoms + 1); +var neighborCount = jme.JMEUtil.createArray(this.natoms + 1); +for (var i = 1; i <= this.nbonds; i++) { +atom1 = this.va[i]; +atom2 = this.vb[i]; +neighborXSum[atom1] += this.x[atom2]; +neighborXSum[atom2] += this.x[atom1]; +neighborCount[atom1]++; +neighborCount[atom2]++; +g.setColor(java.awt.Color.black); +if (this.doColoring == 1) { +if (this.abg[atom1] != 0 && this.abg[atom1] == this.abg[atom2]) g.setColor(this.jme.psColor[this.abg[atom1]]); +}if (this.stereob[i] == 3 || this.stereob[i] == 4) { +var d = atom1; +atom1 = atom2; +atom2 = d; +}xa = this.x[atom1]; +ya = this.y[atom1]; +xb = this.x[atom2]; +yb = this.y[atom2]; +if (this.nasv[i] != 1 || this.stereob[i] != 0) { +dx = xb - xa; +dy = yb - ya; +dd = Math.sqrt(dx * dx + dy * dy); +if (dd < 1.) dd = 1.; +sina = dy / dd; +cosa = dx / dd; +}switch (this.nasv[i]) { +case 2: +if (this.stereob[i] >= 10) g.setColor(java.awt.Color.magenta); +sirka2s = sirka2 * sina; +sirka2c = sirka2 * cosa; +g.drawLine(Math.round(xa + sirka2s), Math.round(ya - sirka2c), Math.round(xb + sirka2s), Math.round(yb - sirka2c)); +g.drawLine(Math.round(xa - sirka2s), Math.round(ya + sirka2c), Math.round(xb - sirka2s), Math.round(yb + sirka2c)); +g.setColor(java.awt.Color.black); +break; +case 3: +var ixa = Math.round(xa); +var iya = Math.round(ya); +var ixb = Math.round(xb); +var iyb = Math.round(yb); +g.drawLine(ixa, iya, ixb, iyb); +var sirka3s = Math.round(sirka3 * sina); +var sirka3c = Math.round(sirka3 * cosa); +g.drawLine(ixa + sirka3s, iya - sirka3c, ixb + sirka3s, iyb - sirka3c); +g.drawLine(ixa - sirka3s, iya + sirka3c, ixb - sirka3s, iyb + sirka3c); +break; +case 9: +case 0: +for (var k = 0; k < 10; k++) { +var xax = xa - (xa - xb) / 10. * k; +var yax = ya - (ya - yb) / 10. * k; +g.drawLine(Math.round(xax), Math.round(yax), Math.round(xax), Math.round(yax)); +} +g.setFont(this.jme.$font); +var h = jme.JMEUtil.stringHeight(this.jme.fontMet); +var o = this.btag[i]; +var z = "?"; +if (o != null) z = o; +var w = this.jme.fontMet.stringWidth(z); +var xstart = Math.round((xa + xb) / 2. - w / 2.); +var ystart = Math.round((ya + yb) / 2. + h / 2 - 1); +g.setColor(java.awt.Color.magenta); +g.drawString(z, xstart, ystart); +g.setColor(java.awt.Color.black); +break; +default: +if (this.stereob[i] == 1 || this.stereob[i] == 3) { +sirka2s = sirka3 * sina; +sirka2c = sirka3 * cosa; +var px = Clazz.newIntArray (3, 0); +var py = Clazz.newIntArray (3, 0); +px[0] = Math.round(xb + sirka2s); +py[0] = Math.round(yb - sirka2c); +px[1] = Math.round(xa); +py[1] = Math.round(ya); +px[2] = Math.round(xb - sirka2s); +py[2] = Math.round(yb + sirka2c); +g.fillPolygon(px, py, 3); +} else if (this.stereob[i] == 2 || this.stereob[i] == 4) { +sirka2s = sirka3 * sina; +sirka2c = sirka3 * cosa; +for (var k = 0; k < 10; k++) { +var xax = xa - (xa - xb) / 10. * k; +var yax = ya - (ya - yb) / 10. * k; +var sc = k / 10.; +g.drawLine(Math.round(xax + sirka2s * sc), Math.round(yax - sirka2c * sc), Math.round(xax - sirka2s * sc), Math.round(yax + sirka2c * sc)); +} +} else g.drawLine(Math.round(xa), Math.round(ya), Math.round(xb), Math.round(yb)); +break; +} +if (this.jme.doTags) { +if (this.btag[i] != null && this.btag[i].length > 0) { +g.setFont(this.jme.$font); +var h = this.jme.fontMet.getAscent(); +var w = this.jme.fontMet.stringWidth(this.btag[i]); +var xstart = Math.round((xa + xb) / 2. - w / 2.); +var ystart = Math.round((ya + yb) / 2. + Clazz.doubleToInt(h / 2) - 1); +g.setColor(java.awt.Color.red); +g.drawString(this.btag[i], xstart, ystart); +g.setColor(java.awt.Color.black); +}}} +g.setFont(this.jme.$font); +var h = this.jme.fontMet.getAscent(); +var al = new Array(this.natoms + 1); +for (var i = 1; i <= this.natoms; i++) { +var n = neighborCount[i]; +var diff = neighborXSum[i] / neighborCount[i] - this.x[i]; +var alignment; +if (n > 2 || n == 0 || n == 2 && Math.abs(diff) < 8) { +alignment = 1; +} else if (n == 1 && Math.abs(diff) < 2) { +alignment = 0; +} else { +alignment = (diff < 0 ? 0 : 2); +}al[i] = new jme.AtomDisplayLabel(this.x[i], this.y[i], this.getAtomLabel(i), this.an[i], this.nv[i], this.sumBondOrders(i), this.nh[i], this.q[i], 0, -1, alignment, this.jme.fontMet, h, this.jme.showHydrogens); +if (!al[i].noLabelAtom) { +g.setColor(this.jme.canvasBg); +if (this.doColoring == -1 && this.abg[i] != 0) g.setColor(this.jme.psColor[this.abg[i]]); +al[i].fillRect(g); +if (this.doColoring == 1) { +if (this.abg[i] != 0) g.setColor(this.jme.psColor[this.abg[i]]); + else g.setColor(java.awt.Color.black); +} else { +g.setColor(jme.JME.color[this.an[i]]); +}if (this.jme.bwMode) g.setColor(java.awt.Color.black); +al[i].draw(g); +}} +for (var k = 1; k <= this.nmarked; k++) { +var atom = this.$mark[k][0]; +var w = this.jme.fontMet.stringWidth(al[atom].str); +var xstart = Math.round(this.x[atom] - w / 2.); +var ystart = Math.round(this.y[atom] + Clazz.doubleToInt(h / 2) - 1); +g.setColor(java.awt.Color.magenta); +g.drawString(" " + this.$mark[k][1], xstart + w, ystart); +} +if (this.jme.doTags) { +for (var i = 1; i <= this.natoms; i++) { +if (this.atag[i] == null || this.atag[i].equals("")) continue; +var w = this.jme.fontMet.stringWidth(al[i].str); +var xstart = Math.round(this.x[i] - w / 2.); +var ystart = Math.round(this.y[i] + Clazz.doubleToInt(h / 2) - 1); +g.setColor(java.awt.Color.red); +g.drawString(" " + this.atag[i], xstart + w, ystart); +} +}if ((this.touchedAtom > 0 || this.touchedBond > 0) && !this.jme.webme) { +g.setColor(this.jme.$action == 104 ? java.awt.Color.red : java.awt.Color.blue); +if (this.touchedAtom > 0 && this.jme.$action != 106) { +al[this.touchedAtom].drawRect(g); +}if (this.touchedBond > 0) { +atom1 = this.va[this.touchedBond]; +atom2 = this.vb[this.touchedBond]; +dx = this.x[atom2] - this.x[atom1]; +dy = this.y[atom2] - this.y[atom1]; +dd = Math.sqrt(dx * dx + dy * dy); +if (dd < 1.) dd = 1.; +sina = dy / dd; +cosa = dx / dd; +sirka2s = (sirka3 + 1) * sina; +sirka2c = (sirka3 + 1) * cosa; +var px = Clazz.newIntArray (5, 0); +var py = Clazz.newIntArray (5, 0); +px[0] = Math.round(this.x[atom1] + sirka2s); +px[1] = Math.round(this.x[atom2] + sirka2s); +py[0] = Math.round(this.y[atom1] - sirka2c); +py[1] = Math.round(this.y[atom2] - sirka2c); +px[3] = Math.round(this.x[atom1] - sirka2s); +px[2] = Math.round(this.x[atom2] - sirka2s); +py[3] = Math.round(this.y[atom1] + sirka2c); +py[2] = Math.round(this.y[atom2] + sirka2c); +px[4] = px[0]; +py[4] = py[0]; +if (this.jme.$action != 106) g.drawPolygon(px, py, 5); +markGroup : if (this.jme.$action == 106) { +if (!this.isRotatableBond(this.va[this.touchedBond], this.vb[this.touchedBond])) break markGroup; +var nsub = 0; +for (var i = 1; i <= this.natoms; i++) if (this.a[i] > 0) nsub++; + +if (nsub > Clazz.doubleToInt(this.natoms / 2)) { +for (var i = 1; i <= this.natoms; i++) if (this.a[i] > 0) this.a[i] = 0; + else this.a[i] = 1; + +}g.setColor(java.awt.Color.red); +for (var i = 1; i <= this.natoms; i++) if (this.a[i] > 0) { +var w = this.jme.fontMet.stringWidth(al[i].str); +g.drawRect(Math.round(this.x[i] - w / 2. - 1), Math.round(this.y[i] - h / 2. - 1), w + 2, h + 2); +} +}}}if (this.jme.webme) { +this.jme.apointx = Clazz.newIntArray (this.natoms, 0); +this.jme.apointy = Clazz.newIntArray (this.natoms, 0); +this.jme.bpointx = Clazz.newIntArray (this.nbonds, 0); +this.jme.bpointy = Clazz.newIntArray (this.nbonds, 0); +for (var i = 1; i <= this.natoms; i++) { +this.jme.apointx[i - 1] = Math.round(this.x[i]); +this.jme.apointy[i - 1] = Math.round(this.y[i]); +} +for (var i = 1; i <= this.nbonds; i++) { +this.jme.bpointx[i - 1] = Math.round((this.x[this.va[i]] + this.x[this.vb[i]]) / 2.); +this.jme.bpointy[i - 1] = Math.round((this.y[this.va[i]] + this.y[this.vb[i]]) / 2.); +} +}}, "java.awt.Graphics"); +Clazz.defineMethod(c$, "move", +function(movex, movey){ +for (var i = 1; i <= this.natoms; i++) { +this.x[i] += movex; +this.y[i] += movey; +} +var center = Clazz.newDoubleArray (4, 0); +this.centerPoint(center); +var centerx = center[0]; +var centery = center[1]; +if (centerx > 0 && centerx < this.jme.dimension.width - this.jme.sd && centery > 0 && centery < this.jme.dimension.height - this.jme.sd * 3) return; +for (var i = 1; i <= this.natoms; i++) { +this.x[i] -= movex; +this.y[i] -= movey; +} +}, "~N,~N"); +Clazz.defineMethod(c$, "rotate", +function(movex){ +var center = Clazz.newDoubleArray (4, 0); +this.centerPoint(center); +var centerx = center[0]; +var centery = center[1]; +var sinu = Math.sin(movex * 3.141592653589793 / 180.); +var cosu = Math.cos(movex * 3.141592653589793 / 180.); +for (var i = 1; i <= this.natoms; i++) { +var xx = this.x[i] * cosu + this.y[i] * sinu; +var yy = -this.x[i] * sinu + this.y[i] * cosu; +this.x[i] = xx; +this.y[i] = yy; +} +this.centerPoint(center); +for (var i = 1; i <= this.natoms; i++) { +this.x[i] += centerx - center[0]; +this.y[i] += centery - center[1]; +} +}, "~N"); +Clazz.defineMethod(c$, "centerPoint", +function(center){ +this.getMinMax(); +center[0] = (this.minx + (this.maxx - this.minx) / 2.); +center[1] = (this.miny + (this.maxy - this.miny) / 2.); +center[2] = this.maxx - this.minx; +center[3] = this.maxy - this.miny; +if (center[2] < 25) center[2] = 25; +if (center[3] < 25) center[3] = 25; +}, "~A"); +Clazz.defineMethod(c$, "getMinMax", +function(){ +this.minx = this.miny = 1.7976931348623157E308; +this.maxx = this.maxy = -1.7976931348623157E308; +for (var i = 1; i <= this.natoms; i++) { +if (this.x[i] < this.minx) this.minx = this.x[i]; +if (this.x[i] > this.maxx) this.maxx = this.x[i]; +if (this.y[i] < this.miny) this.miny = this.y[i]; +if (this.y[i] > this.maxy) this.maxy = this.y[i]; +} +}); +Clazz.defineMethod(c$, "shiftToXY", +function(marginPixelsX, marginPixelsY){ +if (this.natoms == 0) return new java.awt.Dimension(); +this.getMinMax(); +marginPixelsX /= this.jme.depictScale; +marginPixelsY /= this.jme.depictScale; +this.needRecentering = false; +for (var i = 1; i <= this.natoms; i++) { +this.x[i] = this.x[i] - this.minx + marginPixelsX; +this.y[i] = this.y[i] - this.miny + marginPixelsY; +} +return new java.awt.Dimension(Clazz.doubleToInt((marginPixelsX * 2 + (this.maxx - this.minx)) * this.jme.depictScale), Clazz.doubleToInt((marginPixelsY * 2 + (this.maxy - this.miny)) * this.jme.depictScale)); +}, "~N,~N"); +Clazz.defineMethod(c$, "rubberBanding", +function(xnew, ynew){ +var atom; +var dx; +var dy; +var rx; +var sina; +var cosa; +this.touchedAtom = 0; +this.x[0] = xnew; +this.y[0] = ynew; +atom = this.checkTouch(0); +if (atom > 0 && this.jme.$action != 205) { +this.touchedAtom = atom; +if (atom != this.touched_org) { +this.x[this.natoms] = this.x[atom]; +this.y[this.natoms] = this.y[atom]; +} else { +this.x[this.natoms] = this.xorg; +this.y[this.natoms] = this.yorg; +}} else { +if (this.jme.$action == 205) { +this.touchedBond = 0; +var last = this.chain[this.nchain]; +var parent = this.chain[this.nchain - 1]; +dx = this.x[last] - this.x[parent]; +dy = this.y[last] - this.y[parent]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 1.0) rx = 1.0; +sina = dy / rx; +cosa = dx / rx; +var vv = rx / 2. / Math.tan(0.5235987755982988); +var xx = xnew - this.x[parent]; +var yy = ynew - this.y[parent]; +var xm = -rx / 2. + xx * cosa + yy * sina; +var ym = yy * cosa - xx * sina; +if (xm < 0.) { +if (this.nchain > 1) { +this.deleteAtom(this.natoms); +this.nchain--; +this.stopChain = false; +} else if (this.natoms == 2) { +if (this.y[2] - this.y[1] < 0 && ynew - this.y[1] > 0) this.y[2] = this.y[1] + rx / 2.; + else if (this.y[2] - this.y[1] > 0 && ynew - this.y[1] < 0) this.y[2] = this.y[1] - rx / 2.; +if (this.x[2] - this.x[1] < 0 && xnew - this.x[1] > 0) this.x[2] = this.x[1] + rx * .866; + else if (this.x[2] - this.x[1] > 0 && xnew - this.x[1] < 0) this.x[2] = this.x[1] - rx * .866; +} else { +if (this.nv[this.chain[0]] == 2) { +var ref = this.v[this.chain[0]][1]; +if (ref == this.chain[1]) ref = this.v[this.chain[0]][2]; +dx = this.x[this.chain[0]] - this.x[ref]; +dy = this.y[this.chain[0]] - this.y[ref]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 1.0) rx = 1.0; +sina = dy / rx; +cosa = dx / rx; +xx = xnew - this.x[ref]; +yy = ynew - this.y[ref]; +var ymm = yy * cosa - xx * sina; +xx = this.x[this.chain[1]] - this.x[ref]; +yy = this.y[this.chain[1]] - this.y[ref]; +var yc1 = yy * cosa - xx * sina; +if (ymm > 0. && yc1 < 0. || ymm < 0. && yc1 > 0.) { +var bd = this.nbonds; +this.touchedAtom = this.chain[0]; +this.addBond(); +this.deleteBond(bd); +if (this.checkTouch(this.natoms) > 0) this.stopChain = true; +}}}} else { +if (this.stopChain) return; +var th = -1.0; +if (xm < rx * 1.5) th = (rx * 1.5 - xm) * vv / (rx * 1.5); +if (Math.abs(ym) > th) { +this.nchain++; +if (this.nchain > 100) { +this.jme.info("You are too focused on chains, enough of it for now !"); +this.nchain--; +return; +}this.touchedAtom = this.natoms; +this.addBond(Math.round(ym)); +this.chain[this.nchain] = this.natoms; +if (this.checkTouch(this.natoms) > 0) this.stopChain = true; +}}this.touchedAtom = 0; +var n = this.nchain; +this.jme.info(n + ""); +} else { +dx = xnew - this.x[this.touched_org]; +dy = ynew - this.y[this.touched_org]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 1.0) rx = 1.0; +sina = dy / rx; +cosa = dx / rx; +this.x[this.natoms] = this.x[this.touched_org] + 25 * cosa; +this.y[this.natoms] = this.y[this.touched_org] + 25 * sina; +}}}, "~N,~N"); +Clazz.defineMethod(c$, "checkChain", +function(){ +if (this.stopChain) { +var n = this.checkTouch(this.natoms); +if (this.nv[n] < 6) { +this.createBond(); +var parent = this.chain[this.nchain - 1]; +this.va[this.nbonds] = n; +this.vb[this.nbonds] = parent; +this.v[n][++this.nv[n]] = parent; +this.v[parent][++this.nv[parent]] = n; +}this.deleteAtom(this.natoms); +}this.stopChain = false; +}); +Clazz.defineMethod(c$, "checkTouch", +function(atom){ +var dx; +var dy; +var rx; +var min = 51; +var touch = 0; +for (var i = 1; i < this.natoms; i++) { +if (atom == i) continue; +dx = this.x[atom] - this.x[i]; +dy = this.y[atom] - this.y[i]; +rx = dx * dx + dy * dy; +if (rx < 50) if (rx < min) { +min = rx; +touch = i; +}} +return touch; +}, "~N"); +Clazz.defineMethod(c$, "avoidTouch", +function(from){ +if (from == 0) from = this.natoms; +for (var i = this.natoms; i > this.natoms - from; i--) { +var n = this.checkTouch(i); +if (n == 0) continue; +this.x[i] += 6; +this.y[i] += 6; +} +}, "~N"); +Clazz.defineMethod(c$, "deleteAtom", +function(delatom){ +var i; +var j; +var k; +var atom1; +var atom2; +j = 0; +for (i = 1; i <= this.nbonds; i++) { +atom1 = this.va[i]; +atom2 = this.vb[i]; +if (atom1 != delatom && atom2 != delatom) { +j++; +this.va[j] = atom1; +if (atom1 > delatom) this.va[j]--; +this.vb[j] = atom2; +if (atom2 > delatom) this.vb[j]--; +this.nasv[j] = this.nasv[i]; +this.stereob[j] = this.stereob[i]; +this.xb[j] = this.xb[i]; +this.yb[j] = this.yb[i]; +this.btag[j] = this.btag[i]; +}} +this.nbonds = j; +for (i = delatom; i < this.natoms; i++) { +this.an[i] = this.an[i + 1]; +this.q[i] = this.q[i + 1]; +this.x[i] = this.x[i + 1]; +this.y[i] = this.y[i + 1]; +this.nh[i] = this.nh[i + 1]; +this.abg[i] = this.abg[i + 1]; +this.atag[i] = this.atag[i + 1]; +this.nv[i] = this.nv[i + 1]; +this.label[i] = this.label[i + 1]; +for (j = 1; j <= this.nv[i]; j++) this.v[i][j] = this.v[i + 1][j]; + +} +this.natoms--; +if (this.natoms == 0) { +this.jme.clear(); +return; +}for (i = 1; i <= this.natoms; i++) { +k = 0; +for (j = 1; j <= this.nv[i]; j++) { +atom1 = this.v[i][j]; +if (atom1 == delatom) { +this.nh[i]++; +continue; +}if (atom1 > delatom) atom1--; +this.v[i][++k] = atom1; +} +this.nv[i] = k; +} +iloop : for (i = 1; i <= this.nmarked; i++) if (this.$mark[i][0] == delatom) { +for (j = i; j < this.nmarked; j++) { +this.$mark[j][0] = this.$mark[j + 1][0]; +this.$mark[j][1] = this.$mark[j + 1][1]; +} +this.nmarked--; +break iloop; +} +for (i = 1; i <= this.nmarked; i++) if (this.$mark[i][0] > delatom) this.$mark[i][0]--; + +}, "~N"); +Clazz.defineMethod(c$, "deleteBond", +function(delbond){ +var i; +var k; +var atom1; +var atom2; +atom1 = this.va[delbond]; +atom2 = this.vb[delbond]; +for (i = delbond; i < this.nbonds; i++) { +this.va[i] = this.va[i + 1]; +this.vb[i] = this.vb[i + 1]; +this.nasv[i] = this.nasv[i + 1]; +this.stereob[i] = this.stereob[i + 1]; +this.xb[i] = this.xb[i + 1]; +this.yb[i] = this.yb[i + 1]; +this.btag[i] = this.btag[i + 1]; +} +this.nbonds--; +k = 0; +for (i = 1; i <= this.nv[atom1]; i++) if (this.v[atom1][i] != atom2) this.v[atom1][++k] = this.v[atom1][i]; + +this.nv[atom1] = k; +k = 0; +for (i = 1; i <= this.nv[atom2]; i++) if (this.v[atom2][i] != atom1) this.v[atom2][++k] = this.v[atom2][i]; + +this.nv[atom2] = k; +if (atom1 < atom2) { +k = atom1; +atom1 = atom2; +atom2 = k; +}if (this.nv[atom1] == 0) this.deleteAtom(atom1); +if (this.nv[atom2] == 0) this.deleteAtom(atom2); +}, "~N"); +Clazz.defineMethod(c$, "deleteGroup", +function(bond){ +if (this.jme.webme) { +if (!this.isRotatableBond(this.va[this.touchedBond], this.vb[this.touchedBond])) return; +var nsub = 0; +for (var i = 1; i <= this.natoms; i++) if (this.a[i] > 0) nsub++; + +if (nsub > Clazz.doubleToInt(this.natoms / 2)) { +for (var i = 1; i <= this.natoms; i++) if (this.a[i] > 0) this.a[i] = 0; + else this.a[i] = 1; + +}}if (this.a[this.va[bond]] > 0 && this.a[this.vb[bond]] > 0) { +this.jme.info("Removal of substituent not possible."); +return; +}while (true) { +var atd = 0; +for (var i = this.natoms; i >= 1; i--) if (this.a[i] > 0 && i > atd) { +atd = i; +} +if (atd == 0) break; +this.deleteAtom(atd); +this.a[atd] = 0; +} +}, "~N"); +Clazz.defineMethod(c$, "backCations", +function(atom){ +for (var i = 1; i <= this.nv[atom]; i++) { +var j = this.v[atom][i]; +if (this.q[j] > 0) this.q[j]--; +} +}, "~N"); +Clazz.defineMethod(c$, "backCations", +function(atom1, atom2){ +if (this.q[atom1] > 0) this.q[atom1]--; +if (this.q[atom2] > 0) this.q[atom2]--; +}, "~N,~N"); +Clazz.defineMethod(c$, "flipGroup", +function(atom){ +if (this.nv[atom] < 2) return; +}, "~N"); +Clazz.defineMethod(c$, "stereoBond", +function(bond){ +if (this.nasv[bond] == 1) { +var atom1 = this.va[bond]; +var atom2 = this.vb[bond]; +if (this.nv[atom1] < 2 && this.nv[atom2] < 2) { +this.stereob[bond] = 0; +this.jme.info("Stereomarking meaningless on this bond !"); +return; +}if (this.jme.webme) { +if (!this.jme.revertStereo) { +if (this.stereob[bond] == 1) this.stereob[bond] = 3; + else if (this.stereob[bond] == 3) this.stereob[bond] = 1; + else { +if (this.nv[atom2] <= this.nv[atom1]) this.stereob[bond] = 1; + else this.stereob[bond] = 3; +}} else { +if (this.stereob[bond] == 2) this.stereob[bond] = 4; + else if (this.stereob[bond] == 4) this.stereob[bond] = 2; + else { +if (this.nv[atom2] <= this.nv[atom1]) this.stereob[bond] = 2; + else this.stereob[bond] = 4; +}}} else { +switch (this.stereob[bond]) { +case 0: +if (this.nv[atom2] <= this.nv[atom1]) this.stereob[bond] = 1; + else this.stereob[bond] = 3; +break; +case 1: +this.stereob[bond] = 2; +break; +case 2: +if (this.nv[atom2] > 2) this.stereob[bond] = 3; + else this.stereob[bond] = 1; +break; +case 3: +this.stereob[bond] = 4; +break; +case 4: +if (this.nv[atom1] > 2) this.stereob[bond] = 1; + else this.stereob[bond] = 3; +break; +} +}} else if (this.nasv[bond] == 2) { +if (this.stereob[bond] == 10) this.stereob[bond] = 0; + else this.stereob[bond] = 10; +} else { +this.jme.info("Stereomarking allowed only on single and double bonds!"); +}}, "~N"); +Clazz.defineMethod(c$, "getStereoAtom", +function(bond){ +switch (this.stereob[bond]) { +case 1: +case 2: +return this.va[bond]; +case 3: +case 4: +return this.vb[bond]; +} +return 0; +}, "~N"); +Clazz.defineMethod(c$, "addBond", +function(){ +this.addBond(0); +}); +Clazz.defineMethod(c$, "addBond", +function(up){ +var i; +var atom1; +var atom3; +var dx; +var dy; +var rx; +var sina; +var cosa; +var xx; +var yy; +this.createAtom(); +switch (this.nv[this.touchedAtom]) { +case 0: +this.x[this.natoms] = this.x[this.touchedAtom] + this.rbond() * .866; +this.y[this.natoms] = this.y[this.touchedAtom] + this.rbond() * .5; +break; +case 1: +atom1 = this.v[this.touchedAtom][1]; +atom3 = 0; +if (this.nv[atom1] == 2) { +if (this.v[atom1][1] == this.touchedAtom) atom3 = this.v[atom1][2]; + else atom3 = this.v[atom1][1]; +}dx = this.x[this.touchedAtom] - this.x[atom1]; +dy = this.y[this.touchedAtom] - this.y[atom1]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +sina = dy / rx; +cosa = dx / rx; +xx = rx + this.rbond() * Math.cos(1.0471975511965976); +yy = this.rbond() * Math.sin(1.0471975511965976); +i = this.bondIdentity(this.touchedAtom, atom1); +if ((this.nasv[i] == 3) || this.jme.$action == 204 || (!this.isSingle(i) && (this.jme.$action == 203 || this.jme.$action == 204)) || this.linearAdding) { +xx = rx + this.rbond(); +yy = 0.; +}if (atom3 > 0) if (((this.y[atom3] - this.y[atom1]) * cosa - (this.x[atom3] - this.x[atom1]) * sina) > 0.) yy = -yy; +if (up > 0 && yy < 0.) yy = -yy; + else if (up < 0 && yy > 0.) yy = -yy; +this.x[this.natoms] = this.x[atom1] + xx * cosa - yy * sina; +this.y[this.natoms] = this.y[atom1] + yy * cosa + xx * sina; +break; +case 2: +var newPoint = Clazz.newDoubleArray (2, 0); +this.addPoint(this.touchedAtom, this.rbond(), newPoint); +this.x[this.natoms] = newPoint[0]; +this.y[this.natoms] = newPoint[1]; +break; +case 3: +case 4: +case 5: +for (i = 1; i <= this.nv[this.touchedAtom]; i++) { +atom1 = this.v[this.touchedAtom][i]; +dx = this.x[this.touchedAtom] - this.x[atom1]; +dy = this.y[this.touchedAtom] - this.y[atom1]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +this.x[this.natoms] = this.x[this.touchedAtom] + this.rbond() * dx / rx; +this.y[this.natoms] = this.y[this.touchedAtom] + this.rbond() * dy / rx; +if (this.checkTouch(this.natoms) == 0 || i == this.nv[this.touchedAtom]) break; +} +break; +default: +this.natoms--; +this.jme.info("Are you trying to draw an hedgehog ?"); +this.jme.lastAction = 9; +return; +} +this.completeBond(); +this.xorg = this.x[this.natoms]; +this.yorg = this.y[this.natoms]; +}, "~N"); +Clazz.defineMethod(c$, "rbond", +function(){ +return 25 * this.jme.depictScale; +}); +Clazz.defineMethod(c$, "completeBond", +function(){ +this.nv[this.natoms] = 1; +this.nv[this.touchedAtom]++; +this.createBond(); +this.nasv[this.nbonds] = 1; +if (this.jme.$action == 203) this.nasv[this.nbonds] = 2; +if (this.jme.$action == 204) this.nasv[this.nbonds] = 3; +this.va[this.nbonds] = this.touchedAtom; +this.vb[this.nbonds] = this.natoms; +if (this.jme.$action == 201) this.stereoBond(this.nbonds); +this.v[this.natoms][1] = this.touchedAtom; +this.v[this.touchedAtom][this.nv[this.touchedAtom]] = this.natoms; +this.xb[this.nbonds] = Math.round((this.x[this.touchedAtom] + this.x[this.natoms]) / 2.); +this.yb[this.nbonds] = Math.round((this.y[this.touchedAtom] + this.y[this.natoms]) / 2.); +}); +Clazz.defineMethod(c$, "checkBond", +function(){ +var i; +var atom; +var atom1; +var atom2; +atom = this.checkTouch(this.natoms); +if (atom == 0) return; +this.natoms--; +for (i = 1; i < this.nbonds; i++) { +atom1 = this.va[i]; +atom2 = this.vb[i]; +if ((atom1 == atom && atom2 == this.touched_org) || (atom1 == this.touched_org && atom2 == atom)) { +this.nbonds--; +this.nv[this.touched_org]--; +if (this.nasv[i] < 3) { +this.nasv[i]++; +this.stereob[i] = 0; +} else this.jme.info("Maximum allowed bond order is 3 !"); +return; +}} +if (this.nv[atom] == 6) { +this.nbonds--; +this.nv[this.touched_org]--; +this.jme.info("Not possible connection !"); +return; +}this.vb[this.nbonds] = atom; +this.v[atom][++this.nv[atom]] = this.touched_org; +this.v[this.touched_org][this.nv[this.touched_org]] = atom; +this.xb[this.nbonds] = Math.round((this.x[this.touched_org] + this.x[atom]) / 2.); +this.yb[this.nbonds] = Math.round((this.y[this.touched_org] + this.y[atom]) / 2.); +}); +Clazz.defineMethod(c$, "addGroup", +function(emptyCanvas){ +this.touched_org = this.touchedAtom; +var nadded = 0; +if (this.jme.$action == 233 || this.jme.$action == 237 || this.jme.$action == 236 || this.jme.$action == 239 || this.jme.$action == 251 || this.jme.$action == 252) { +this.addBond(); +this.touchedAtom = this.natoms; +this.linearAdding = true; +this.addBond(); +this.linearAdding = false; +this.touchedAtom = this.natoms - 1; +this.addBond(); +this.touchedAtom = this.natoms - 2; +this.addBond(); +if (this.jme.$action == 237) { +this.an[this.natoms] = 10; +this.an[this.natoms - 1] = 10; +this.an[this.natoms - 2] = 10; +}if (this.jme.$action == 236) { +this.an[this.natoms] = 9; +this.an[this.natoms - 1] = 9; +this.an[this.natoms - 2] = 9; +}if (this.jme.$action == 239) { +this.an[this.natoms] = 5; +this.an[this.natoms - 1] = 5; +this.an[this.natoms - 2] = 5; +this.an[this.natoms - 3] = 8; +this.nasv[this.nbonds] = 2; +this.nasv[this.nbonds - 1] = 2; +}if (this.jme.$action == 252) { +this.an[this.natoms] = 5; +this.an[this.natoms - 1] = 5; +this.an[this.natoms - 2] = 4; +this.an[this.natoms - 3] = 8; +this.nasv[this.nbonds] = 2; +this.nasv[this.nbonds - 1] = 2; +}if (this.jme.$action == 251) { +this.an[this.natoms] = 5; +this.an[this.natoms - 1] = 5; +this.an[this.natoms - 2] = 5; +this.an[this.natoms - 3] = 7; +this.nasv[this.nbonds] = 2; +}nadded = 4; +} else if (this.jme.$action == 244) { +this.addBond(); +this.an[this.natoms] = 4; +this.touchedAtom = this.natoms; +this.addBond(); +this.an[this.natoms] = 8; +this.touchedAtom = this.natoms; +this.linearAdding = true; +this.addBond(); +this.linearAdding = false; +this.touchedAtom = this.natoms - 1; +this.addBond(); +this.an[this.natoms] = 5; +this.nasv[this.nbonds] = 2; +this.touchedAtom = this.natoms - 2; +this.addBond(); +this.an[this.natoms] = 5; +this.nasv[this.nbonds] = 2; +nadded = 5; +} else if (this.jme.$action == 234) { +this.addBond(); +this.an[this.natoms] = 4; +this.touchedAtom = this.natoms; +this.addBond(); +this.an[this.natoms] = 5; +this.nasv[this.nbonds] = 2; +this.touchedAtom = this.natoms - 1; +this.addBond(); +this.an[this.natoms] = 5; +this.nasv[this.nbonds] = 2; +nadded = 3; +} else if (this.jme.$action == 235) { +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +this.an[this.natoms] = 5; +this.touchedAtom = this.natoms - 1; +this.addBond(); +this.an[this.natoms] = 5; +this.nasv[this.nbonds] = 2; +nadded = 3; +} else if (this.jme.$action == 240) { +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +this.an[this.natoms] = 5; +this.touchedAtom = this.natoms; +this.addBond(); +this.touchedAtom = this.natoms - 2; +this.addBond(); +this.an[this.natoms] = 5; +this.nasv[this.nbonds] = 2; +nadded = 4; +} else if (this.jme.$action == 241) { +this.addBond(); +this.an[this.natoms] = 5; +this.touchedAtom = this.natoms; +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +this.touchedAtom = this.natoms - 1; +this.addBond(); +this.nasv[this.nbonds] = 2; +this.an[this.natoms] = 5; +nadded = 4; +} else if (this.jme.$action == 243) { +this.addBond(); +this.an[this.natoms] = 4; +this.touchedAtom = this.natoms; +this.addBond(); +this.touchedAtom = this.natoms - 1; +this.addBond(); +nadded = 3; +} else if (this.jme.$action == 238) { +this.addBond(); +this.touchedAtom = this.natoms; +this.linearAdding = true; +this.addBond(); +this.nasv[this.nbonds] = 3; +this.linearAdding = false; +nadded = 2; +} else if (this.jme.$action == 249) { +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +this.nasv[this.nbonds] = 2; +this.an[this.natoms] = 5; +nadded = 2; +} else if (this.jme.$action == 250) { +this.addBond(); +this.nasv[this.nbonds] = 2; +this.an[this.natoms] = 5; +nadded = 1; +} else if (this.jme.$action == 245) { +this.addBond(); +this.touchedAtom = this.natoms; +this.linearAdding = true; +this.addBond(); +this.touchedAtom = this.natoms; +this.nasv[this.nbonds] = 3; +this.addBond(); +this.linearAdding = false; +nadded = 3; +} else if (this.jme.$action == 242) { +this.addBond(); +this.touchedAtom = this.natoms; +this.linearAdding = true; +this.addBond(); +this.nasv[this.nbonds] = 3; +this.an[this.natoms] = 4; +this.linearAdding = false; +nadded = 2; +} else if (this.jme.$action == 254) { +this.addBond(); +this.an[this.natoms] = 9; +nadded = 1; +} else if (this.jme.$action == 255) { +this.addBond(); +this.an[this.natoms] = 10; +nadded = 1; +} else if (this.jme.$action == 256) { +this.addBond(); +this.an[this.natoms] = 11; +nadded = 1; +} else if (this.jme.$action == 257) { +this.addBond(); +this.an[this.natoms] = 12; +nadded = 1; +} else if (this.jme.$action == 258) { +this.addBond(); +this.an[this.natoms] = 4; +nadded = 1; +} else if (this.jme.$action == 259) { +this.addBond(); +this.an[this.natoms] = 5; +nadded = 1; +} else if (this.jme.$action == 246) { +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +nadded = 2; +} else if (this.jme.$action == 247) { +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +nadded = 3; +} else if (this.jme.$action == 248) { +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +this.touchedAtom = this.natoms; +this.addBond(); +nadded = 4; +} else if (this.jme.$action == 253) { +this.addGroupTemplate(emptyCanvas); +nadded = 4; +}this.avoidTouch(nadded); +this.touchedAtom = this.touched_org; +if (emptyCanvas) this.touchedAtom = 0; +}, "~B"); +Clazz.defineMethod(c$, "addRing", +function(){ +var atom1; +var atom2; +var atom3; +var revert; +var dx; +var dy; +var rx; +var sina; +var cosa; +var xx; +var yy; +var diel; +var rc; +var uhol; +var xstart; +var ystart; +var returnTouch = -1; +var nmembered = 6; +switch (this.jme.$action) { +case 206: +nmembered = 3; +break; +case 207: +nmembered = 4; +break; +case 208: +case 221: +case 223: +nmembered = 5; +break; +case 210: +case 209: +nmembered = 6; +break; +case 211: +nmembered = 7; +break; +case 212: +nmembered = 8; +break; +case 229: +nmembered = 9; +break; +} +diel = 6.283185307179586 / nmembered; +rc = Math.sqrt(this.rbond() * this.rbond() / 2. / (1. - Math.cos(diel))); +if (this.touchedAtom > 0) { +if (this.nv[this.touchedAtom] < 2) { +this.addRingToBond(nmembered, diel, rc); +} else { +if (!this.jme.mouseShift) { +returnTouch = this.touchedAtom; +this.addBond(); +this.touchedAtom = this.natoms; +this.addRingToBond(nmembered, diel, rc); +} else { +if (this.jme.$action == 209 || this.jme.$action == 221 || this.jme.$action == 223) { +this.jme.info("ERROR - cannot add aromatic spiro ring !"); +this.jme.lastAction = 9; +return; +}for (var i = 1; i <= this.nv[this.touchedAtom]; i++) { +var bo = this.nasv[this.bondIdentity(this.touchedAtom, this.v[this.touchedAtom][i])]; +if (i > 2 || bo != 1) { +this.jme.info("ERROR - spiro ring not possible here !"); +this.jme.lastAction = 9; +return; +}} +var newPoint = Clazz.newDoubleArray (2, 0); +this.addPoint(this.touchedAtom, rc, newPoint); +dx = this.x[this.touchedAtom] - newPoint[0]; +dy = this.y[this.touchedAtom] - newPoint[1]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +sina = dy / rx; +cosa = dx / rx; +for (var i = 1; i <= nmembered; i++) { +this.createAtom(); +uhol = diel * i + 1.5707963267948966; +this.x[this.natoms] = newPoint[0] + rc * (Math.sin(uhol) * cosa - Math.cos(uhol) * sina); +this.y[this.natoms] = newPoint[1] + rc * (Math.cos(uhol) * cosa + Math.sin(uhol) * sina); +} +}}} else if (this.touchedBond > 0) { +atom1 = this.va[this.touchedBond]; +atom2 = this.vb[this.touchedBond]; +atom3 = 0; +if (this.nv[atom1] == 2) { +if (this.v[atom1][1] != atom2) atom3 = this.v[atom1][1]; + else atom3 = this.v[atom1][2]; +} else if (this.nv[atom2] == 2) { +if (this.v[atom2][1] != atom1) atom3 = this.v[atom2][1]; + else atom3 = this.v[atom2][2]; +revert = atom1; +atom1 = atom2; +atom2 = revert; +}if (atom3 == 0) if (this.v[atom1][1] != atom2) atom3 = this.v[atom1][1]; + else atom3 = this.v[atom1][2]; +dx = this.x[atom2] - this.x[atom1]; +dy = this.y[atom2] - this.y[atom1]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +sina = dy / rx; +cosa = dx / rx; +xx = rx / 2.; +yy = rc * Math.sin((3.141592653589793 - diel) * .5); +revert = 1; +if (((this.y[atom3] - this.y[atom1]) * cosa - (this.x[atom3] - this.x[atom1]) * sina) > 0.) { +yy = -yy; +revert = 0; +}xstart = this.x[atom1] + xx * cosa - yy * sina; +ystart = this.y[atom1] + yy * cosa + xx * sina; +for (var i = 1; i <= nmembered; i++) { +this.createAtom(); +uhol = diel * (i + .5) + 3.141592653589793 * revert; +this.x[this.natoms] = xstart + rc * (Math.sin(uhol) * cosa - Math.cos(uhol) * sina); +this.y[this.natoms] = ystart + rc * (Math.cos(uhol) * cosa + Math.sin(uhol) * sina); +if (revert == 1) { +if (i == nmembered) { +this.x[this.natoms] = this.x[atom1]; +this.y[this.natoms] = this.y[atom1]; +}if (i == nmembered - 1) { +this.x[this.natoms] = this.x[atom2]; +this.y[this.natoms] = this.y[atom2]; +}} else { +if (i == nmembered - 1) { +this.x[this.natoms] = this.x[atom1]; +this.y[this.natoms] = this.y[atom1]; +}if (i == nmembered) { +this.x[this.natoms] = this.x[atom2]; +this.y[this.natoms] = this.y[atom2]; +}}} +} else { +var helpv = 0.5; +if (nmembered == 6) helpv = 0.; +for (var i = 1; i <= nmembered; i++) { +this.createAtom(); +uhol = diel * (i - helpv); +this.x[this.natoms] = this.xorg + rc * Math.sin(uhol); +this.y[this.natoms] = this.yorg + rc * Math.cos(uhol); +} +}this.completeRing(nmembered); +this.checkRing(nmembered); +if (returnTouch > -1) this.touchedAtom = returnTouch; +}); +Clazz.defineMethod(c$, "addRingToBond", +function(nmembered, diel, rc){ +var sina; +var cosa; +var dx; +var dy; +var rx; +var uhol; +var atom1 = 0; +if (this.nv[this.touchedAtom] == 0) { +sina = 0.; +cosa = 1.; +} else { +atom1 = this.v[this.touchedAtom][1]; +dx = this.x[this.touchedAtom] - this.x[atom1]; +dy = this.y[this.touchedAtom] - this.y[atom1]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +sina = dy / rx; +cosa = dx / rx; +}var xstart = this.x[this.touchedAtom] + rc * cosa; +var ystart = this.y[this.touchedAtom] + rc * sina; +for (var i = 1; i <= nmembered; i++) { +this.createAtom(); +uhol = diel * i - 1.5707963267948966; +this.x[this.natoms] = xstart + rc * (Math.sin(uhol) * cosa - Math.cos(uhol) * sina); +this.y[this.natoms] = ystart + rc * (Math.cos(uhol) * cosa + Math.sin(uhol) * sina); +} +}, "~N,~N,~N"); +Clazz.defineMethod(c$, "completeRing", +function(nmembered){ +var i; +var atom = 0; +var atom3; +for (i = 1; i <= nmembered; i++) { +this.createBond(); +this.nasv[this.nbonds] = 1; +atom = this.natoms - nmembered + i; +this.nv[atom] = 2; +this.va[this.nbonds] = atom; +this.vb[this.nbonds] = atom + 1; +} +this.vb[this.nbonds] = this.natoms - nmembered + 1; +if (this.jme.$action == 209) { +this.nasv[this.nbonds - 4] = 2; +this.nasv[this.nbonds - 2] = 2; +this.nasv[this.nbonds - 0] = 2; +if (this.touchedBond > 0) { +if (this.isSingle(this.touchedBond)) { +atom3 = 0; +if (this.nv[this.va[this.touchedBond]] > 1) { +atom3 = this.v[this.va[this.touchedBond]][1]; +atom = this.va[this.touchedBond]; +if (atom3 == this.vb[this.touchedBond]) atom3 = this.v[this.va[this.touchedBond]][2]; +}if (atom3 == 0 && this.nv[this.vb[this.touchedBond]] > 1) { +atom3 = this.v[this.vb[this.touchedBond]][1]; +atom = this.vb[this.touchedBond]; +if (atom3 == this.vb[this.touchedBond]) atom3 = this.v[this.vb[this.touchedBond]][2]; +}if (atom3 > 0) for (i = 1; i <= this.nbonds; i++) if ((this.va[i] == atom3 && this.vb[i] == atom) || (this.va[i] == atom && this.vb[i] == atom3)) { +if (!this.isSingle(i)) { +this.nasv[this.nbonds - 4] = 1; +this.nasv[this.nbonds - 2] = 1; +this.nasv[this.nbonds - 0] = 1; +this.nasv[this.nbonds - 5] = 2; +this.nasv[this.nbonds - 3] = 2; +this.nasv[this.nbonds - 1] = 3; +}break; +} +} else { +this.nasv[this.nbonds - 4] = 1; +this.nasv[this.nbonds - 2] = 1; +this.nasv[this.nbonds - 0] = 1; +this.nasv[this.nbonds - 5] = 2; +this.nasv[this.nbonds - 3] = 2; +this.nasv[this.nbonds - 1] = 2; +}}} else if (this.jme.$action == 221 || this.jme.$action == 223) { +if (this.touchedBond > 0) { +if (this.nasv[this.touchedBond] == 1) { +var isConjugated = false; +for (i = 1; i <= this.nv[this.va[this.touchedBond]]; i++) { +var ax = this.v[this.va[this.touchedBond]][i]; +if (this.nasv[this.bondIdentity(this.va[this.touchedBond], ax)] > 1) { +isConjugated = true; +break; +}} +for (i = 1; i <= this.nv[this.vb[this.touchedBond]]; i++) { +var ax = this.v[this.vb[this.touchedBond]][i]; +if (this.nasv[this.bondIdentity(this.vb[this.touchedBond], ax)] > 1) { +isConjugated = true; +break; +}} +if (!isConjugated) this.nasv[this.touchedBond] = 2; +}this.nasv[this.nbonds - 4] = 2; +this.an[this.natoms - 2] = 5; +} else if (this.touchedAtom > 0) { +if (this.jme.$action == 221) { +this.nasv[this.nbonds - 4] = 1; +this.nasv[this.nbonds - 2] = 1; +this.nasv[this.nbonds - 1] = 1; +this.nasv[this.nbonds - 3] = 2; +this.nasv[this.nbonds - 0] = 2; +this.an[this.natoms - 1] = 5; +} else { +this.nasv[this.nbonds - 3] = 1; +this.nasv[this.nbonds - 2] = 1; +this.nasv[this.nbonds - 0] = 1; +this.nasv[this.nbonds - 4] = 2; +this.nasv[this.nbonds - 1] = 2; +this.an[this.natoms - 2] = 5; +}} else { +this.nasv[this.nbonds - 3] = 1; +this.nasv[this.nbonds - 2] = 1; +this.nasv[this.nbonds - 0] = 1; +this.nasv[this.nbonds - 4] = 2; +this.nasv[this.nbonds - 1] = 2; +this.an[this.natoms - 2] = 5; +}}}, "~N"); +Clazz.defineMethod(c$, "checkRing", +function(nmembered){ +var i; +var j; +var k; +var atom; +var atom1; +var atom2; +var ratom; +var rbond; +var noldbonds; +var noldatoms; +var parent = Clazz.newIntArray (this.natoms + 1, 0); +var dx; +var dy; +var rx; +var min; +for (i = 1; i <= nmembered; i++) { +ratom = this.natoms - nmembered + i; +rbond = this.nbonds - nmembered + i; +this.v[ratom][1] = ratom - 1; +this.v[ratom][2] = ratom + 1; +atom1 = this.va[rbond]; +atom2 = this.vb[rbond]; +this.xb[rbond] = Math.round((this.x[atom1] + this.x[atom2]) / 2.); +this.yb[rbond] = Math.round((this.y[atom1] + this.y[atom2]) / 2.); +} +this.v[this.natoms - nmembered + 1][1] = this.natoms; +this.v[this.natoms][2] = this.natoms - nmembered + 1; +for (i = this.natoms - nmembered + 1; i <= this.natoms; i++) { +parent[i] = 0; +min = 51; +atom = 0; +for (j = 1; j <= this.natoms - nmembered; j++) { +dx = this.x[i] - this.x[j]; +dy = this.y[i] - this.y[j]; +rx = dx * dx + dy * dy; +if (rx < 50) if (rx < min) { +min = rx; +atom = j; +}} +if (atom > 0) if (this.touchedAtom == 0 || atom == this.touchedAtom) parent[i] = atom; +} +noldbonds = this.nbonds - nmembered; +bloop : for (i = noldbonds + 1; i <= noldbonds + nmembered; i++) { +atom1 = this.va[i]; +atom2 = this.vb[i]; +if (parent[atom1] > 0 && parent[atom2] > 0) { +for (k = 1; k <= noldbonds; k++) { +if ((this.va[k] == parent[atom1] && this.vb[k] == parent[atom2]) || (this.vb[k] == parent[atom1] && this.va[k] == parent[atom2])) continue bloop; +} +this.createBond(); +this.nasv[this.nbonds] = this.nasv[i]; +this.va[this.nbonds] = parent[atom1]; +this.v[parent[atom1]][++this.nv[parent[atom1]]] = parent[atom2]; +this.vb[this.nbonds] = parent[atom2]; +this.v[parent[atom2]][++this.nv[parent[atom2]]] = parent[atom1]; +this.xb[this.nbonds] = Math.round((this.x[this.va[this.nbonds]] + this.x[this.vb[this.nbonds]]) / 2.); +this.yb[this.nbonds] = Math.round((this.y[this.va[this.nbonds]] + this.y[this.vb[this.nbonds]]) / 2.); +} else if (parent[atom1] > 0) { +this.createBond(); +this.nasv[this.nbonds] = this.nasv[i]; +this.va[this.nbonds] = parent[atom1]; +this.v[parent[atom1]][++this.nv[parent[atom1]]] = atom2; +this.vb[this.nbonds] = atom2; +this.v[atom2][++this.nv[atom2]] = parent[atom1]; +this.xb[this.nbonds] = Math.round((this.x[this.va[this.nbonds]] + this.x[this.vb[this.nbonds]]) / 2.); +this.yb[this.nbonds] = Math.round((this.y[this.va[this.nbonds]] + this.y[this.vb[this.nbonds]]) / 2.); +} else if (parent[atom2] > 0) { +this.createBond(); +this.nasv[this.nbonds] = this.nasv[i]; +this.va[this.nbonds] = parent[atom2]; +this.v[parent[atom2]][++this.nv[parent[atom2]]] = atom1; +this.vb[this.nbonds] = atom1; +this.v[atom1][++this.nv[atom1]] = parent[atom2]; +this.xb[this.nbonds] = Math.round((this.x[this.va[this.nbonds]] + this.x[this.vb[this.nbonds]]) / 2.); +this.yb[this.nbonds] = Math.round((this.y[this.va[this.nbonds]] + this.y[this.vb[this.nbonds]]) / 2.); +}} +noldatoms = this.natoms - nmembered; +for (i = this.natoms; i > noldatoms; i--) { +if (parent[i] > 0) { +this.deleteAtom(i); +if (this.an[parent[i]] == 3) { +var sum = 0; +for (j = 1; j <= this.nv[parent[i]]; j++) { +var a2 = this.v[parent[i]][j]; +for (k = 1; k <= this.nbonds; k++) { +if ((this.va[k] == parent[i] && this.vb[k] == a2) || (this.va[k] == a2 && this.vb[k] == parent[i])) sum += this.nasv[k]; +} +} +if (sum > 4) { +for (k = noldbonds + 1; k <= noldbonds + nmembered; k++) this.nasv[k] = 1; + +}}}} +if (this.touchedAtom > 0) this.avoidTouch(nmembered); +}, "~N"); +Clazz.defineMethod(c$, "addPoint", +function(touchedAtom, rbond, newPoint){ +var dx; +var dy; +var rx; +var sina; +var cosa; +var xx; +var yy; +var xpoint; +var ypoint; +var atom1 = this.v[touchedAtom][1]; +var atom2 = this.v[touchedAtom][2]; +dx = this.x[atom2] - this.x[atom1]; +dy = -(this.y[atom2] - this.y[atom1]); +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +sina = dy / rx; +cosa = dx / rx; +var vzd = Math.abs((this.y[touchedAtom] - this.y[atom1]) * cosa + (this.x[touchedAtom] - this.x[atom1]) * sina); +if (vzd < 1.0) { +dx = this.x[touchedAtom] - this.x[atom1]; +dy = this.y[touchedAtom] - this.y[atom1]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +xx = rx; +yy = rbond; +sina = dy / rx; +cosa = dx / rx; +newPoint[0] = this.x[atom1] + xx * cosa - yy * sina; +newPoint[1] = this.y[atom1] + yy * cosa + xx * sina; +} else { +xpoint = (this.x[atom1] + this.x[atom2]) / 2.; +ypoint = (this.y[atom1] + this.y[atom2]) / 2.; +dx = this.x[touchedAtom] - xpoint; +dy = this.y[touchedAtom] - ypoint; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +newPoint[0] = this.x[touchedAtom] + rbond * dx / rx; +newPoint[1] = this.y[touchedAtom] + rbond * dy / rx; +}}, "~N,~N,~A"); +Clazz.defineMethod(c$, "addGroupTemplate", +function(emptyCanvas){ +var mark1 = 0; +var tmol = this.jme.tmol; +for (var k = 1; k <= tmol.nmarked; k++) { +var atom = tmol.$mark[k][0]; +if (tmol.$mark[k][1] == 1) mark1 = atom; +} +var nn = this.natoms; +var source = this.touchedAtom; +this.addBond(); +var x1 = this.x[this.natoms]; +var y1 = this.y[this.natoms]; +this.deleteAtom(this.natoms); +var dx1 = this.x[source] - x1; +var dy1 = this.y[source] - y1; +var r = Math.sqrt(dx1 * dx1 + dy1 * dy1); +var sina = dy1 / r; +var cosa = dx1 / r; +for (var i = 1; i <= tmol.natoms; i++) { +this.createAtom(); +this.an[this.natoms] = tmol.an[i]; +this.q[this.natoms] = tmol.q[i]; +this.nh[this.natoms] = tmol.nh[i]; +this.x[this.natoms] = tmol.x[i]; +this.y[this.natoms] = tmol.y[i]; +} +for (var i = 1; i <= tmol.nbonds; i++) { +this.createBond(); +this.va[this.nbonds] = tmol.va[i] + nn; +this.vb[this.nbonds] = tmol.vb[i] + nn; +this.nasv[this.nbonds] = tmol.nasv[i]; +} +this.complete(); +this.touchedAtom = mark1 + nn; +this.addBond(); +var x2 = this.x[this.natoms]; +var y2 = this.y[this.natoms]; +this.deleteAtom(this.natoms); +var dx2 = this.x[mark1 + nn] - x2; +var dy2 = this.y[mark1 + nn] - y2; +r = Math.sqrt(dx2 * dx2 + dy2 * dy2); +var sinb = dy2 / r; +var cosb = dx2 / r; +for (var i = nn + 1; i <= this.natoms; i++) { +this.x[i] -= x2; +this.y[i] -= y2; +var xx = this.x[i] * cosb + this.y[i] * sinb; +var yy = this.y[i] * cosb - this.x[i] * sinb; +this.x[i] = xx; +this.y[i] = yy; +xx = -this.x[i] * cosa + this.y[i] * sina; +yy = -this.y[i] * cosa - this.x[i] * sina; +this.x[i] = xx; +this.y[i] = yy; +this.x[i] += this.x[source]; +this.y[i] += this.y[source]; +} +this.createBond(); +this.va[this.nbonds] = source; +this.vb[this.nbonds] = mark1 + nn; +this.complete(); +if (emptyCanvas) { +this.deleteAtom(source); +this.center(); +}}, "~B"); +Clazz.defineMethod(c$, "createAtom", +function(){ +this.natoms++; +if (this.natoms > this.an.length - 1) { +var storage = this.an.length + 10; +var n_an = Clazz.newIntArray (storage, 0); +System.arraycopy(this.an, 0, n_an, 0, this.an.length); +this.an = n_an; +var n_q = Clazz.newIntArray (storage, 0); +System.arraycopy(this.q, 0, n_q, 0, this.q.length); +this.q = n_q; +var n_nh = Clazz.newIntArray (storage, 0); +System.arraycopy(this.nh, 0, n_nh, 0, this.nh.length); +this.nh = n_nh; +var n_abg = Clazz.newIntArray (storage, 0); +System.arraycopy(this.abg, 0, n_abg, 0, this.abg.length); +this.abg = n_abg; +var n_atag = new Array(storage); +System.arraycopy(this.atag, 0, n_atag, 0, this.atag.length); +this.atag = n_atag; +var n_label = new Array(storage); +System.arraycopy(this.label, 0, n_label, 0, this.label.length); +this.label = n_label; +var n_x = Clazz.newDoubleArray (storage, 0); +System.arraycopy(this.x, 0, n_x, 0, this.x.length); +this.x = n_x; +var n_y = Clazz.newDoubleArray (storage, 0); +System.arraycopy(this.y, 0, n_y, 0, this.y.length); +this.y = n_y; +var n_v = Clazz.newIntArray (storage, 7, 0); +System.arraycopy(this.v, 0, n_v, 0, this.v.length); +this.v = n_v; +var n_nv = Clazz.newIntArray (storage, 0); +System.arraycopy(this.nv, 0, n_nv, 0, this.nv.length); +this.nv = n_nv; +}this.an[this.natoms] = 3; +this.q[this.natoms] = 0; +this.abg[this.natoms] = 0; +this.atag[this.natoms] = null; +this.nh[this.natoms] = 0; +}); +Clazz.defineMethod(c$, "createAtom", +function(symbol){ +this.createAtom(); +this.setAtom(this.natoms, symbol); +}, "~S"); +Clazz.defineMethod(c$, "setAtom", +function(atom, symbol){ +if (symbol.startsWith("[") && symbol.endsWith("]")) { +symbol = symbol.substring(1, symbol.length - 1); +this.an[atom] = 18; +this.label[atom] = symbol; +this.nh[atom] = 0; +return; +}if (symbol.length < 1) System.err.println("Error - null atom !"); +var isQuery = false; +if (symbol.indexOf(",") > -1) isQuery = true; +if (symbol.indexOf(";") > -1) isQuery = true; +if (symbol.indexOf("#") > -1) isQuery = true; +if (symbol.indexOf("!") > -1) isQuery = true; +var dpos = symbol.indexOf(":"); +var hpos = symbol.indexOf("H"); +var qpos = Math.max(symbol.indexOf("+"), symbol.indexOf("-")); +if (dpos > -1) { +var smark = symbol.substring(dpos + 1); +try { +this.jme.currentMark = Integer.parseInt(smark); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +this.jme.currentMark = 0; +} else { +throw e; +} +} +this.touchedAtom = atom; +this.mark(); +symbol = symbol.substring(0, dpos); +this.touchedAtom = 0; +}atomProcessing : { +if (isQuery) { +this.label[atom] = symbol; +this.an[atom] = 18; +this.nh[atom] = 0; +break atomProcessing; +}var as = symbol; +if (hpos > 0) as = symbol.substring(0, hpos); + else if (qpos > 0) as = symbol.substring(0, qpos); +this.an[atom] = jme.JMEmol.checkAtomicSymbol(as); +if (this.an[atom] == 18) this.label[atom] = as; +symbol += " "; +var nhs = 0; +if (hpos > 0) { +nhs = 1; +var c = symbol.charAt(++hpos); +if (c >= '0' && c <= '9') nhs = c.charCodeAt(0) - 48; +}if (this.an[atom] == 18) { +this.nh[atom] = nhs; +}var charge = 0; +if (qpos > 0) { +var c = symbol.charAt(qpos++); +if (c == '+') charge = 1; + else if (c == '-') charge = -1; +if (charge != 0) { +c = symbol.charAt(qpos++); +if (c >= '0' && c <= '9') c = String.fromCharCode(c.charCodeAt(0)* (c.charCodeAt(0) - 48)); + else { +while (c == '+') { +charge++; +c = symbol.charAt(qpos++); +} +while (c == '-') { +charge--; +c = symbol.charAt(qpos++); +} +}}}this.q[atom] = charge; +}}, "~N,~S"); +Clazz.defineMethod(c$, "setAtomHydrogenCount", +function(atom, nh){ +if (this.an[atom] == 18) { +this.label[atom] += "H"; +if (nh > 1) this.label[atom] += nh; +}}, "~N,~N"); +Clazz.defineMethod(c$, "setAtomFormalCharge", +function(atom, nq){ +this.q[atom] = nq; +}, "~N,~N"); +Clazz.defineMethod(c$, "setAtomColors", +function(s, bg){ +this.doColoring = 1; +if (bg) this.doColoring = -1; +var st = new java.util.StringTokenizer(s, ","); +var atom; +var color; +try { +while (st.hasMoreTokens()) { +atom = Integer.$valueOf(st.nextToken()).intValue(); +color = Integer.$valueOf(st.nextToken()).intValue(); +this.setAtomColoring(atom, color); +} +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +System.err.println("Error in atom coloring"); +e.printStackTrace(); +} else { +throw e; +} +} +}, "~S,~B"); +Clazz.defineMethod(c$, "setAtomColoring", +function(atom, n){ +if (n < 0 || n > 6) n = 0; +this.abg[atom] = n; +}, "~N,~N"); +Clazz.defineMethod(c$, "createBond", +function(){ +this.nbonds++; +if (this.nbonds > this.nasv.length - 1) { +var storage = this.nasv.length + 10; +var n_va = Clazz.newIntArray (storage, 0); +System.arraycopy(this.va, 0, n_va, 0, this.va.length); +this.va = n_va; +var n_vb = Clazz.newIntArray (storage, 0); +System.arraycopy(this.vb, 0, n_vb, 0, this.vb.length); +this.vb = n_vb; +var n_nasv = Clazz.newIntArray (storage, 0); +System.arraycopy(this.nasv, 0, n_nasv, 0, this.nasv.length); +this.nasv = n_nasv; +var n_stereob = Clazz.newIntArray (storage, 0); +System.arraycopy(this.stereob, 0, n_stereob, 0, this.stereob.length); +this.stereob = n_stereob; +var n_xb = Clazz.newIntArray (storage, 0); +System.arraycopy(this.xb, 0, n_xb, 0, this.xb.length); +this.xb = n_xb; +var n_yb = Clazz.newIntArray (storage, 0); +System.arraycopy(this.yb, 0, n_yb, 0, this.yb.length); +this.yb = n_yb; +var n_btag = new Array(storage); +System.arraycopy(this.btag, 0, n_btag, 0, this.btag.length); +this.btag = n_btag; +}this.nasv[this.nbonds] = 1; +this.stereob[this.nbonds] = 0; +this.btag[this.nbonds] = null; +}); +Clazz.defineMethod(c$, "findBondCenters", +function(){ +for (var i = 1; i <= this.nbonds; i++) { +var atom1 = this.va[i]; +var atom2 = this.vb[i]; +this.xb[i] = Math.round((this.x[atom1] + this.x[atom2]) / 2.); +this.yb[i] = Math.round((this.y[atom1] + this.y[atom2]) / 2.); +} +}); +Clazz.defineMethod(c$, "save", +function(){ +this.jme.smol = new jme.JMEmol(this); +this.jme.smol.complete(); +this.jme.saved = this.jme.actualMolecule; +}); +Clazz.defineMethod(c$, "isRotatableBond", +function(a1, a2){ +var i; +var j; +var poradie = 1; +this.a = Clazz.newIntArray (this.natoms + 1, 0); +for (i = 1; i <= this.natoms; i++) this.a[i] = 0; + +this.a[a1] = poradie; +for (i = 1; i <= this.nv[a1]; i++) if (this.v[a1][i] != a2) this.a[this.v[a1][i]] = ++poradie; + +var ok = false; +while (true) { +for (i = 1; i <= this.natoms; i++) { +ok = false; +if (this.a[i] > 0 && i != a1) for (j = 1; j <= this.nv[i]; j++) { +if (this.a[this.v[i][j]] == 0) { +this.a[this.v[i][j]] = ++poradie; +ok = true; +}} +if (ok) break; +} +if (!ok) break; +} +return (this.a[a2] == 0); +}, "~N,~N"); +Clazz.defineMethod(c$, "findRingBonds", +function(isRingBond){ +for (var i = 1; i <= this.nbonds; i++) if (this.isRotatableBond(this.va[i], this.vb[i])) isRingBond[i] = false; + else isRingBond[i] = true; + +}, "~A"); +Clazz.defineMethod(c$, "isInRing", +function(atom, isRingBond){ +for (var i = 1; i <= this.nv[atom]; i++) { +if (isRingBond[this.bondIdentity(atom, this.v[atom][i])]) return true; +} +return false; +}, "~N,~A"); +Clazz.defineMethod(c$, "findAromatic", +function(isAromatic, isRingBond){ +this.btype = Clazz.newIntArray (this.nbonds + 1, 0); +var pa = Clazz.newBooleanArray(this.natoms + 1, false); +for (var i = 1; i <= this.natoms; i++) { +pa[i] = false; +isAromatic[i] = false; +if (!this.isInRing(i, isRingBond)) continue; +if (this.nv[i] + this.nh[i] > 3) continue; +switch (this.an[i]) { +case 3: +case 4: +case 7: +case 5: +case 8: +case 13: +pa[i] = true; +break; +case 18: +pa[i] = true; +break; +} +} +for (var b = 1; b <= this.nbonds; b++) { +if (this.isSingle(b)) this.btype[b] = 1; + else if (this.isDouble(b)) this.btype[b] = 2; + else if (this.nasv[b] == 3) this.btype[b] = 3; + else System.err.println("problems in findAromatic " + this.nasv[b]); +} +bondloop : for (var b = 1; b <= this.nbonds; b++) { +if (!isRingBond[b]) continue; +var atom1 = this.va[b]; +var atom2 = this.vb[b]; +if (!pa[atom1] || !pa[atom2]) continue; +var a = Clazz.newBooleanArray(this.natoms + 1, false); +for (var i = 1; i <= this.nv[atom1]; i++) { +var atom = this.v[atom1][i]; +if (atom != atom2 && pa[atom]) a[atom] = true; +} +var ok = false; +while (true) { +for (var i = 1; i <= this.natoms; i++) { +ok = false; +if (a[i] && pa[i] && i != atom1) { +for (var j = 1; j <= this.nv[i]; j++) { +var atom = this.v[i][j]; +if (atom == atom2) { +isAromatic[atom1] = true; +isAromatic[atom2] = true; +this.btype[b] = 5; +continue bondloop; +}if (!a[atom] && pa[atom]) { +a[atom] = true; +ok = true; +}} +}if (ok) break; +} +if (!ok) break; +} +} +}, "~A,~A"); +Clazz.defineMethod(c$, "canonize", +function(){ +var ok; +var a = Clazz.newIntArray (this.natoms + 1, 0); +var aold = Clazz.newIntArray (this.natoms + 1, 0); +var d = Clazz.newLongArray (this.natoms + 1, 0); +var prime = Clazz.newLongArray (this.natoms + 2, 0); +prime = jme.JMEmol.generatePrimes(this.natoms); +for (var i = 1; i <= this.natoms; i++) { +var xbo = 1; +for (var j = 1; j <= this.nbonds; j++) { +if (this.va[j] == i || this.vb[j] == i) xbo *= this.btype[j]; +} +var xan = this.an[i]; +if (xan == 18) { +var zlabel = this.label[i]; +var c1 = (zlabel.charAt(0)).charCodeAt(0) - 65 + 1; +var c2 = 0; +if (zlabel.length > 1) c2 = (zlabel.charAt(1)).charCodeAt(0) - 97; +if (c1 < 0) c1 = 0; +if (c2 < 0) c2 = 0; +xan = c1 * 28 + c2; +}var qq = 0; +if (this.q[i] < -2) qq = 1; + else if (this.q[i] == -2) qq = 2; + else if (this.q[i] == -1) qq = 3; + else if (this.q[i] == 1) qq = 4; + else if (this.q[i] == 2) qq = 5; + else if (this.q[i] > 2) qq = 6; +var xx = 1; +d[i] = xbo; +xx *= 126; +d[i] += this.nh[i] * xx; +xx *= 7; +d[i] += qq * xx; +xx *= 7; +d[i] += xan * xx; +xx *= 783; +d[i] += this.nv[i] * xx; +} +var breaklevel = 0; +while (true) { +if (this.canonsort(a, d)) break; +ok = false; +for (var i = 1; i <= this.natoms; i++) if (a[i] != aold[i]) { +aold[i] = a[i]; +ok = true; +} +if (ok) { +for (var i = 1; i <= this.natoms; i++) { +d[i] = 1; +for (var j = 1; j <= this.nv[i]; j++) d[i] *= prime[a[this.v[i][j]]]; + +} +breaklevel = 0; +} else { +if (breaklevel > 0) { +for (var i = 1; i <= this.natoms; i++) d[i] = 1; + +bd : for (var i = 1; i <= this.natoms - 1; i++) for (var j = i + 1; j <= this.natoms; j++) if (a[i] == a[j]) { +d[i] = 2; +break bd; +} + +} else { +for (var i = 1; i <= this.natoms; i++) { +d[i] = 1; +for (var j = 1; j <= this.nv[i]; j++) { +var atom = this.v[i][j]; +d[i] *= this.an[atom] * this.btype[this.bondIdentity(i, atom)]; +} +} +breaklevel = 1; +}}this.canonsort(a, d); +for (var i = 1; i <= this.natoms; i++) d[i] = aold[i] * this.natoms + a[i]; + +} +for (var i = 1; i <= this.natoms; i++) aold[i] = a[i]; + +for (var s = 1; s <= this.natoms; s++) { +for (var i = 1; i <= this.natoms; i++) { +if (aold[i] == s) { +this.an[0] = this.an[i]; +this.q[0] = this.q[i]; +this.x[0] = this.x[i]; +this.y[0] = this.y[i]; +this.nv[0] = this.nv[i]; +this.an[i] = this.an[s]; +this.q[i] = this.q[s]; +this.x[i] = this.x[s]; +this.y[i] = this.y[s]; +this.nv[i] = this.nv[s]; +this.an[s] = this.an[0]; +this.q[s] = this.q[0]; +this.x[s] = this.x[0]; +this.y[s] = this.y[0]; +this.nv[s] = this.nv[0]; +aold[i] = aold[s]; +aold[s] = s; +this.label[0] = this.label[i]; +this.label[i] = this.label[s]; +this.label[s] = this.label[0]; +this.abg[0] = this.abg[i]; +this.abg[i] = this.abg[s]; +this.abg[s] = this.abg[0]; +this.atag[0] = this.atag[i]; +this.atag[i] = this.atag[s]; +this.atag[s] = this.atag[0]; +this.nh[0] = this.nh[i]; +this.nh[i] = this.nh[s]; +this.nh[s] = this.nh[0]; +break; +}} +} +for (var i = 1; i <= this.nmarked; i++) this.$mark[i][0] = a[this.$mark[i][0]]; + +for (var i = 1; i <= this.nbonds; i++) { +this.va[i] = a[this.va[i]]; +this.vb[i] = a[this.vb[i]]; +if (this.va[i] > this.vb[i]) { +var du = this.va[i]; +this.va[i] = this.vb[i]; +this.vb[i] = du; +if (this.stereob[i] == 1) this.stereob[i] = 3; + else if (this.stereob[i] == 2) this.stereob[i] = 4; + else if (this.stereob[i] == 3) this.stereob[i] = 1; + else if (this.stereob[i] == 4) this.stereob[i] = 2; +}} +for (var i = 1; i < this.nbonds; i++) { +var minva = this.natoms; +var minvb = this.natoms; +var b = 0; +for (var j = i; j <= this.nbonds; j++) { +if (this.va[j] < minva) { +minva = this.va[j]; +minvb = this.vb[j]; +b = j; +} else if (this.va[j] == minva && this.vb[j] < minvb) { +minvb = this.vb[j]; +b = j; +}} +var du; +du = this.va[i]; +this.va[i] = this.va[b]; +this.va[b] = du; +du = this.vb[i]; +this.vb[i] = this.vb[b]; +this.vb[b] = du; +du = this.nasv[i]; +this.nasv[i] = this.nasv[b]; +this.nasv[b] = du; +du = this.stereob[i]; +this.stereob[i] = this.stereob[b]; +this.stereob[b] = du; +var ds = this.btag[i]; +this.btag[i] = this.btag[b]; +this.btag[b] = ds; +} +this.complete(); +}); +Clazz.defineMethod(c$, "canonsort", +function(a, d){ +var min = 0; +var nth = 0; +var ndone = 0; +while (true) { +nth++; +for (var i = 1; i <= this.natoms; i++) if (d[i] > 0) { +min = d[i]; +break; +} +for (var i = 1; i <= this.natoms; i++) if (d[i] > 0 && d[i] < min) min = d[i]; + +for (var i = 1; i <= this.natoms; i++) if (d[i] == min) { +a[i] = nth; +d[i] = 0; +ndone++; +} +if (ndone == this.natoms) break; +} +return (nth == this.natoms); +}, "~A,~A"); +Clazz.defineMethod(c$, "cleanPolarBonds", +function(){ +for (var i = 1; i <= this.nbonds; i++) { +var atom1 = this.va[i]; +var atom2 = this.vb[i]; +if ((this.q[atom1] == 1 && this.q[atom2] == -1) || (this.q[atom1] == -1 && this.q[atom2] == 1)) { +if (this.nasv[i] == 1 || this.nasv[i] == 2) { +if (this.an[atom1] != 3 && this.an[atom2] != 3 && this.jme.polarnitro) continue; +if (this.an[atom1] == 1 || this.an[atom2] == 1) continue; +if (this.an[atom1] == 2 || this.an[atom2] == 2) continue; +if (this.an[atom1] == 9 || this.an[atom1] == 10 || this.an[atom1] == 11 || this.an[atom1] == 12 || this.an[atom2] == 9 || this.an[atom2] == 10 || this.an[atom2] == 11 || this.an[atom2] == 12) continue; +this.q[atom1] = 0; +this.q[atom2] = 0; +this.nasv[i]++; +this.valenceState(); +}}if (this.q[atom1] == 1 && this.q[atom2] == 1) { +if (this.nasv[i] == 2) this.nasv[i] = 1; + else if (this.nasv[i] == 3) this.nasv[i] = 2; +this.valenceState(); +}if (this.nasv[i] == 4) this.nasv[i] = 1; +} +}); +Clazz.defineMethod(c$, "fillFields", +function(){ +var storage = this.an.length; +this.v = Clazz.newIntArray (storage, 7, 0); +this.nv = Clazz.newIntArray (storage, 0); +for (var i = 1; i <= this.natoms; i++) this.nv[i] = 0; + +for (var i = 1; i <= this.nbonds; i++) { +if (this.nv[this.va[i]] < 6) this.v[this.va[i]][++this.nv[this.va[i]]] = this.vb[i]; +if (this.nv[this.vb[i]] < 6) this.v[this.vb[i]][++this.nv[this.vb[i]]] = this.va[i]; +} +}); +Clazz.defineMethod(c$, "checkMultipart", +function(removeSmall){ +var nparts = 0; +var ok = false; +this.a = Clazz.newIntArray (this.natoms + 1, 0); +while (true) { +for (var j = 1; j <= this.natoms; j++) if (this.a[j] == 0) { +this.a[j] = ++nparts; +ok = true; +break; +} +if (!ok) break; +while (ok) { +ok = false; +for (var j = 1; j <= this.nbonds; j++) { +var atom1 = this.va[j]; +var atom2 = this.vb[j]; +if (this.a[atom1] > 0 && this.a[atom2] == 0) { +this.a[atom2] = nparts; +ok = true; +} else if (this.a[atom2] > 0 && this.a[atom1] == 0) { +this.a[atom1] = nparts; +ok = true; +}} +} +} +if (nparts < 2 || !removeSmall) return nparts; +var size = Clazz.newIntArray (nparts + 1, 0); +for (var i = 1; i <= this.natoms; i++) size[this.a[i]]++; + +var max = 0; +var largest = 1; +for (var i = 1; i <= nparts; i++) if (size[i] > max) { +max = size[i]; +largest = i; +} +for (var i = this.natoms; i >= 1; i--) if (this.a[i] != largest) this.deleteAtom(i); + +this.center(); +this.jme.info("Smaller part(s) removed !"); +return 1; +}, "~B"); +Clazz.defineMethod(c$, "createSmiles", +function(){ +var con1 = Clazz.newIntArray (this.natoms + 10, 0); +var con2 = Clazz.newIntArray (this.natoms + 10, 0); +var branch = Clazz.newIntArray (this.natoms + 1, 0); +var candidate = Clazz.newIntArray (7, 0); +var parent = Clazz.newIntArray (this.natoms + 1, 0); +var isAromatic = Clazz.newBooleanArray(this.natoms + 1, false); +var isRingBond = Clazz.newBooleanArray(this.nbonds + 1, false); +var nconnections = 0; +if (this.natoms == 0) return ""; +this.checkMultipart(true); +var noQueryBonds = true; +for (var b = 1; b <= this.nbonds; b++) { +if (this.nasv[b] == 9) { +noQueryBonds = false; +break; +}} +if (this.jme.canonize && noQueryBonds) { +this.deleteHydrogens(); +this.cleanPolarBonds(); +this.findRingBonds(isRingBond); +this.findAromatic(isAromatic, isRingBond); +this.canonize(); +this.valenceState(); +this.findRingBonds(isRingBond); +this.findAromatic(isAromatic, isRingBond); +} else { +this.findRingBonds(isRingBond); +this.btype = Clazz.newIntArray (this.nbonds + 1, 0); +for (var i = 1; i <= this.nbonds; i++) this.btype[i] = this.nasv[i]; + +}var atom = 1; +this.a = Clazz.newIntArray (this.natoms + 1, 0); +var step = 1; +this.a[atom] = step; +var nbranch = 0; +while (true) { +var ncandidates = 0; +for (var i = 1; i <= this.nv[atom]; i++) { +var atomx = this.v[atom][i]; +if (this.a[atomx] > 0) { +if (this.a[atomx] > this.a[atom]) continue; +if (atomx == parent[atom]) continue; +var newcon = true; +for (var k = 1; k <= nconnections; k++) if (con1[k] == atom && con2[k] == atomx || con1[k] == atomx && con2[k] == atom) { +newcon = false; +break; +} +if (newcon) { +nconnections++; +con1[nconnections] = atom; +con2[nconnections] = atomx; +}} else candidate[++ncandidates] = atomx; +} +if (ncandidates == 0) { +if (step == this.natoms) break; +atom = branch[nbranch--]; +} else if (ncandidates == 1) { +parent[candidate[1]] = atom; +atom = candidate[1]; +this.a[atom] = ++step; +} else { +branch[++nbranch] = atom; +var atomnew = 0; +for (var i = 1; i <= ncandidates; i++) { +var b = this.bondIdentity(candidate[i], atom); +if (isRingBond[b]) continue; +atomnew = candidate[i]; +break; +} +if (atomnew == 0) { +for (var i = 1; i <= ncandidates; i++) { +var b = this.bondIdentity(candidate[i], atom); +if (this.btype[b] == 2 || this.btype[b] == 3) { +atomnew = candidate[i]; +break; +}} +}if (atomnew == 0) atomnew = candidate[1]; +parent[atomnew] = atom; +atom = atomnew; +this.a[atom] = ++step; +}} +parent = Clazz.newIntArray (this.natoms + 1, 0); +var aa = Clazz.newIntArray (this.natoms + 1, 0); +var leftBracket = Clazz.newBooleanArray(this.natoms + 1, false); +var rightBracket = Clazz.newBooleanArray(this.natoms + 1, false); +nbranch = 0; +step = 0; +var atomold = 0; +for (var i = 1; i <= this.natoms; i++) if (this.a[i] == 1) { +atom = i; +break; +} +loopTwo : while (true) { +if (atomold > 0) parent[atom] = atomold; +aa[++step] = atom; +this.a[atom] = 0; +var atomnew; +var ncandidates; +while (true) { +atomnew = 0; +ncandidates = 0; +var min = this.natoms + 1; +cs1 : for (var i = 1; i <= this.nv[atom]; i++) { +var atomx = this.v[atom][i]; +for (var j = 1; j <= nconnections; j++) if (con1[j] == atomx && con2[j] == atom || con1[j] == atom && con2[j] == atomx) continue cs1; + +if (this.a[atomx] > 0) { +ncandidates++; +if (this.a[atomx] < min) { +atomnew = atomx; +min = this.a[atomx]; +}}} +if (atomnew == 0) { +if (nbranch == 0) break loopTwo; +rightBracket[atom] = true; +atom = branch[nbranch--]; +} else break; +} +atomold = atom; +atom = atomnew; +if (ncandidates > 1) { +branch[++nbranch] = atomold; +leftBracket[atom] = true; +}} +var slashBond = Clazz.newIntArray (this.nbonds + 1, 0); +var slimak = Clazz.newIntArray (this.natoms + 1, 0); +if (this.jme.stereo) this.smilesStereo(aa, parent, slashBond, slimak, isRingBond, con1, con2, nconnections); +var queryMode = false; +var smiles = new JU.SB(); +var ax = Clazz.newIntArray (this.natoms + 1, 0); +for (var i = 1; i <= this.natoms; i++) ax[aa[i]] = i; + +for (var i = 1; i <= this.natoms; i++) { +atom = aa[i]; +if (leftBracket[atom]) smiles.append("("); +if (parent[i] > 0) this.smilesAddBond(atom, parent[atom], smiles, slashBond, queryMode); +this.smilesAddAtom(atom, smiles, isAromatic[atom], slimak); +for (var j = 1; j <= nconnections; j++) { +if (con1[j] == atom || con2[j] == atom) { +var atom2 = con2[j]; +if (atom2 == atom) atom2 = con1[j]; +if (ax[atom] < ax[atom2]) this.smilesAddBond(con1[j], con2[j], smiles, slashBond, queryMode); +if (j > 9) smiles.append("%"); +smiles.append( new Integer(j).toString()); +}} +if (rightBracket[atom]) smiles.append(")"); +} +return smiles.toString(); +}); +Clazz.defineMethod(c$, "smilesAddAtom", +function(atom, smiles, isAromatic, slimak){ +var z = "X"; +var bracket = false; +if (this.q[atom] != 0) bracket = true; +if (slimak[atom] != 0) bracket = true; +var lmark = -1; +for (var i = 1; i <= this.nmarked; i++) if (this.$mark[i][0] == atom) { +lmark = this.$mark[i][1]; +break; +} +if (lmark > -1) bracket = true; +if (this.jme.allHs) bracket = true; +if (this.jme.star && this.abg[atom] > 0) { +bracket = true; +lmark = 1; +}switch (this.an[atom]) { +case 2: +z = "B"; +break; +case 3: +if (isAromatic) z = "c"; + else z = "C"; +break; +case 4: +if (isAromatic) { +z = "n"; +if (this.nh[atom] > 0) bracket = true; +} else z = "N"; +break; +case 5: +if (isAromatic) z = "o"; + else z = "O"; +break; +case 7: +if (isAromatic) { +z = "p"; +if (this.nh[atom] > 0) bracket = true; +} else z = "P"; +break; +case 8: +if (isAromatic) z = "s"; + else z = "S"; +break; +case 13: +if (isAromatic) z = "se"; + else z = "Se"; +bracket = true; +break; +case 6: +z = "Si"; +bracket = true; +break; +case 9: +z = "F"; +break; +case 10: +z = "Cl"; +break; +case 11: +z = "Br"; +break; +case 12: +z = "I"; +break; +case 1: +z = "H"; +bracket = true; +break; +case 19: +z = "R"; +bracket = true; +break; +case 20: +z = "R1"; +bracket = true; +break; +case 21: +z = "R2"; +bracket = true; +break; +case 22: +z = "R3"; +bracket = true; +break; +case 18: +bracket = true; +z = this.label[atom]; +if (z.equals("*") || z.equals("a") || z.equals("A")) bracket = false; +break; +} +if (bracket) { +z = "[" + z; +if (slimak[atom] == 1) z += "@"; + else if (slimak[atom] == -1) z += "@@"; +if (this.nh[atom] == 1) z += "H"; + else if (this.nh[atom] > 1) z += "H" + this.nh[atom]; +if (this.q[atom] != 0) { +if (this.q[atom] > 0) z += "+"; + else z += "-"; +if (Math.abs(this.q[atom]) > 1) z += Math.abs(this.q[atom]); +}if (lmark > -1) z += ":" + lmark; +z += "]"; +}smiles.append(z); +}, "~N,JU.SB,~B,~A"); +Clazz.defineMethod(c$, "smilesAddBond", +function(atom1, atom2, smiles, slashBond, queryMode){ +var b = this.bondIdentity(atom1, atom2); +if (this.btype[b] != 5 && this.isDouble(b)) smiles.append("="); + else if (this.nasv[b] == 3) smiles.append("#"); + else if (this.nasv[b] == 9) { +var z = "?"; +var o = this.btag[b]; +if (o != null) z = o; +smiles.append(z); +} else if (this.btype[b] == 5 && queryMode) smiles.append(":"); + else if (slashBond[b] == 1) smiles.append("/"); + else if (slashBond[b] == -1) smiles.append("\\"); +}, "~N,~N,JU.SB,~A,~B"); +Clazz.defineMethod(c$, "smilesStereo", +function(aa, parent, slashBond, slimak, isRingBond, con1, con2, nconnections){ +var ax = Clazz.newIntArray (this.natoms + 1, 0); +for (var i = 1; i <= this.natoms; i++) ax[aa[i]] = i; + +var doneEZ = Clazz.newBooleanArray(this.nbonds + 1, false); +for (var i = 1; i <= this.natoms; i++) { +var atom1 = aa[i]; +var atom2 = parent[atom1]; +var bi = this.bondIdentity(atom1, atom2); +if (bi == 0) continue; +this.stereoEZ(bi, ax, slashBond, isRingBond); +doneEZ[bi] = true; +} +for (var i = 1; i <= this.nbonds; i++) { +if (!doneEZ[i]) this.stereoEZ(i, ax, slashBond, isRingBond); +} +doneEZ = null; +iloop : for (var i = 1; i <= this.natoms; i++) { +if (this.nv[i] < 2 || this.nv[i] > 4) continue; +var nstereo = 0; +var doubleBonded = 0; +for (var j = 1; j <= this.nv[i]; j++) { +var bi = this.bondIdentity(i, this.v[i][j]); +if (this.btype[bi] == 5) continue iloop; +if (this.nasv[bi] == 1 && this.upDownBond(bi, i) != 0) nstereo++; +if (this.nasv[bi] == 2) doubleBonded = this.v[i][j]; +} +if (nstereo == 0) continue; +if (doubleBonded > 0) this.stereoAllene(i, ax, slimak, parent, con1, con2, nconnections); + else this.stereoC4(i, parent, ax, con1, con2, nconnections, slimak); +} +}, "~A,~A,~A,~A,~A,~A,~A,~N"); +Clazz.defineMethod(c$, "stereoC4", +function(atom, parent, ax, con1, con2, nconnections, slimak){ +var ref = Clazz.newIntArray (4, 0); +var refx = Clazz.newIntArray (4, 0); +this.identifyNeighbors(atom, ax, parent, con1, con2, nconnections, ref); +var nup = 0; +var ndown = 0; +var up = 0; +var down = 0; +var marked = 0; +var nonmarked = 0; +for (var i = 0; i < 4; i++) { +if (ref[i] <= 0) continue; +var bi = this.bondIdentity(atom, ref[i]); +refx[i] = this.upDownBond(bi, atom); +if (refx[i] > 0) { +nup++; +up = ref[i]; +marked = ref[i]; +} else if (refx[i] < 0) { +ndown++; +down = ref[i]; +marked = ref[i]; +} else nonmarked = ref[i]; +} +var nstereo = nup + ndown; +var ox; +var t = Clazz.newIntArray (4, 0); +var stereoRef = 0; +if (this.nv[atom] == 3) { +if ((nup == 1 && ndown == 1) || (nstereo == 3 && nup > 0 && ndown > 0)) { +this.jme.info("Error in C3H stereospecification !"); +return; +}var refAtom = ref[0]; +if (nstereo == 1) refAtom = marked; + else if (nstereo == 2) refAtom = nonmarked; +ox = this.C4order(atom, refAtom, ref); +t[0] = marked; +t[1] = -1; +t[2] = ox[2]; +t[3] = ox[1]; +if (nup > 0) stereoRef = 1; + else stereoRef = -1; +} else if (this.nv[atom] == 4) { +if (nstereo == 1) { +ox = this.C4order(atom, marked, ref); +t[0] = ox[0]; +t[1] = ox[3]; +t[2] = ox[2]; +t[3] = ox[1]; +if (nup > 0) stereoRef = 1; + else stereoRef = -1; +} else { +var refAtom = ref[0]; +if (nonmarked > 1) refAtom = nonmarked; +if (nup == 1) refAtom = up; + else if (ndown == 1) refAtom = down; +ox = this.C4order(atom, refAtom, ref); +var box = Clazz.newIntArray (4, 0); +for (var i = 0; i < 4; i++) { +var bi = this.bondIdentity(atom, ox[i]); +box[i] = this.upDownBond(bi, atom); +} +if (nstereo == 4) { +if (nup == 0 || ndown == 0) { +this.jme.info("Error in C4 stereospecification !"); +return; +} else if (nup == 1 || ndown == 1) { +t[0] = ox[0]; +t[1] = ox[3]; +t[2] = ox[2]; +t[3] = ox[1]; +stereoRef = box[0]; +} else { +for (var i = 0; i < 4; i++) if (box[i] == -1) box[i] = 0; + +nstereo = 2; +}} else if (nstereo == 3) { +if (nup == 3 || ndown == 3) { +t[0] = ox[0]; +t[1] = ox[3]; +t[2] = ox[2]; +t[3] = ox[1]; +if (nup > 0) stereoRef = -1; + else stereoRef = 1; +} else { +var d = 0; +if (nup == 1) { +d = 1; +nup = 1; +} else { +d = -1; +ndown = -1; +}for (var i = 0; i < 4; i++) if (box[i] == d) box[i] = 0; + +nstereo = 2; +}}if (nstereo == 2) { +if (nup == 1 && ndown == 1) { +if (ox[1] == down) { +ox[1] = ox[2]; +ox[2] = ox[3]; +} else if (ox[2] == down) { +ox[2] = ox[3]; +}t[0] = up; +t[1] = down; +t[2] = ox[2]; +t[3] = ox[1]; +stereoRef = 1; +} else { +if ((box[0] == box[1]) || (box[1] == box[2])) { +this.jme.info("Error in C4 stereospecification ! 2/0r"); +return; +}if (box[0] != 0) { +t[0] = ox[0]; +t[1] = ox[2]; +t[2] = ox[1]; +t[3] = ox[3]; +} else { +t[0] = ox[1]; +t[1] = ox[3]; +t[2] = ox[2]; +t[3] = ox[0]; +}if (nup > 1) stereoRef = 1; + else stereoRef = -1; +}}}}this.stereoTransformation(t, ref); +if (t[2] == ref[2]) slimak[atom] = 1; + else if (t[2] == ref[3]) slimak[atom] = -1; + else this.jme.info("Error in stereoprocessing ! - t30"); +slimak[atom] *= stereoRef; +}, "~N,~A,~A,~A,~A,~N,~A"); +Clazz.defineMethod(c$, "identifyNeighbors", +function(atom, ax, parent, con1, con2, nconnections, ref){ +var nref = -1; +if (parent[atom] > 0) ref[++nref] = parent[atom]; +for (var i = 1; i <= nconnections; i++) { +if (con1[i] == atom) ref[++nref] = con2[i]; +if (con2[i] == atom) ref[++nref] = con1[i]; +} +for (var i = nref + 1; i < this.nv[atom]; i++) { +var min = this.natoms + 1; +jloop : for (var j = 1; j <= this.nv[atom]; j++) { +var atomx = this.v[atom][j]; +for (var k = 0; k < i; k++) if (atomx == ref[k]) continue jloop; + +if (ax[atomx] < min) { +min = ax[atomx]; +ref[i] = atomx; +}} +} +if (parent[atom] == 0 && this.nh[atom] > 0) { +ref[3] = ref[2]; +ref[2] = ref[1]; +ref[1] = ref[0]; +ref[0] = -1; +System.out.println("stereowarning #7"); +} else if (this.nh[atom] > 0) { +ref[3] = ref[2]; +ref[2] = ref[1]; +ref[1] = -1; +}}, "~N,~A,~A,~A,~A,~N,~A"); +Clazz.defineMethod(c$, "C4order", +function(center, ref0, ref){ +var ox = Clazz.newIntArray (4, 0); +var dx; +var dy; +var rx; +dx = this.x[ref0] - this.x[center]; +dy = this.y[ref0] - this.y[center]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +var sin0 = dy / rx; +var cos0 = dx / rx; +var p = Clazz.newIntArray (4, 0); +for (var i = 0; i < 4; i++) { +if (ref[i] == ref0 || ref[i] <= 0) continue; +if (p[1] == 0) { +p[1] = ref[i]; +continue; +}if (p[2] == 0) { +p[2] = ref[i]; +continue; +}if (p[3] == 0) { +p[3] = ref[i]; +continue; +}} +var sin = Clazz.newDoubleArray (4, 0); +var cos = Clazz.newDoubleArray (4, 0); +for (var i = 1; i <= 3; i++) { +if (i == 3 && p[3] == 0) continue; +dx = (this.x[p[i]] - this.x[center]) * cos0 + (this.y[p[i]] - this.y[center]) * sin0; +dy = (this.y[p[i]] - this.y[center]) * cos0 - (this.x[p[i]] - this.x[center]) * sin0; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +sin[i] = dy / rx; +cos[i] = dx / rx; +} +var c12 = this.compareAngles(sin[1], cos[1], sin[2], cos[2]); +if (p[3] > 0) { +var c23 = this.compareAngles(sin[2], cos[2], sin[3], cos[3]); +var c13 = this.compareAngles(sin[1], cos[1], sin[3], cos[3]); +if (c12 > 0 && c23 > 0) { +ox[1] = p[1]; +ox[2] = p[2]; +ox[3] = p[3]; +} else if (c13 > 0 && c23 < 0) { +ox[1] = p[1]; +ox[2] = p[3]; +ox[3] = p[2]; +} else if (c12 < 0 && c13 > 0) { +ox[1] = p[2]; +ox[2] = p[1]; +ox[3] = p[3]; +} else if (c23 > 0 && c13 < 0) { +ox[1] = p[2]; +ox[2] = p[3]; +ox[3] = p[1]; +} else if (c13 < 0 && c12 > 0) { +ox[1] = p[3]; +ox[2] = p[1]; +ox[3] = p[2]; +} else if (c23 < 0 && c12 < 0) { +ox[1] = p[3]; +ox[2] = p[2]; +ox[3] = p[1]; +}} else { +if (c12 > 0) { +ox[1] = p[1]; +ox[2] = p[2]; +} else { +ox[1] = p[2]; +ox[2] = p[1]; +}}ox[0] = ref0; +return ox; +}, "~N,~N,~A"); +Clazz.defineMethod(c$, "stereoTransformation", +function(t, ref){ +var d = 0; +if (ref[0] == t[1]) { +d = t[0]; +t[0] = t[1]; +t[1] = d; +d = t[2]; +t[2] = t[3]; +t[3] = d; +} else if (ref[0] == t[2]) { +d = t[2]; +t[2] = t[0]; +t[0] = d; +d = t[1]; +t[1] = t[3]; +t[3] = d; +} else if (ref[0] == t[3]) { +d = t[3]; +t[3] = t[0]; +t[0] = d; +d = t[1]; +t[1] = t[2]; +t[2] = d; +}if (ref[1] == t[2]) { +d = t[1]; +t[1] = t[2]; +t[2] = d; +d = t[2]; +t[2] = t[3]; +t[3] = d; +} else if (ref[1] == t[3]) { +d = t[1]; +t[1] = t[3]; +t[3] = d; +d = t[2]; +t[2] = t[3]; +t[3] = d; +}}, "~A,~A"); +Clazz.defineMethod(c$, "stereoEZ", +function(bond, ax, slashBond, isRingBond){ +if (this.nasv[bond] != 2 || this.btype[bond] == 5) return; +if (!(this.stereob[bond] == 10 || (this.jme.autoez && !isRingBond[bond]))) return; +var atom1 = this.va[bond]; +var atom2 = this.vb[bond]; +if (this.nv[atom1] < 2 || this.nv[atom2] < 2 || this.nv[atom1] > 3 || this.nv[atom2] > 3) return; +if (ax[atom1] > ax[atom2]) { +var d = atom1; +atom1 = atom2; +atom2 = d; +}var ref1 = 0; +var ref11 = 0; +var ref12 = 0; +var ref1x = false; +for (var j = 1; j <= this.nv[atom1]; j++) { +var atomx = this.v[atom1][j]; +if (atomx == atom2) continue; +if (ref11 == 0) ref11 = atomx; + else ref12 = atomx; +} +if (ref12 > 0 && ax[ref11] > ax[ref12]) { +var d = ref11; +ref11 = ref12; +ref12 = d; +}var bi = this.bondIdentity(atom1, ref11); +if (slashBond[bi] != 0) { +ref1 = ref11; +} else if (this.nasv[bi] == 1 && this.btype[bi] != 5) ref1 = ref11; +if (ref1 == 0) { +bi = this.bondIdentity(atom1, ref12); +if (slashBond[bi] != 0) ref1 = ref12; + else if (this.nasv[bi] == 1 && this.btype[bi] != 5) ref1 = ref12; +}if (ax[ref1] > ax[atom1]) ref1x = true; +var ref2 = 0; +var ref21 = 0; +var ref22 = 0; +for (var j = 1; j <= this.nv[atom2]; j++) { +var atomx = this.v[atom2][j]; +if (atomx == atom1) continue; +if (ref21 == 0) ref21 = atomx; + else ref22 = atomx; +} +if (ref22 > 0 && ax[ref21] < ax[ref22]) { +var d = ref21; +ref21 = ref22; +ref22 = d; +}bi = this.bondIdentity(atom2, ref21); +if (this.nasv[bi] == 1 && this.btype[bi] != 5 && slashBond[bi] == 0) ref2 = ref21; +if (ref2 == 0) { +bi = this.bondIdentity(atom2, ref22); +if (this.nasv[bi] == 1 && this.btype[bi] != 5) ref2 = ref22; +}if (ref1 == 0 || ref2 == 0) return; +var dx = this.x[atom2] - this.x[atom1]; +var dy = this.y[atom2] - this.y[atom1]; +var rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +var sina = dy / rx; +var cosa = dx / rx; +var y1 = (this.y[ref1] - this.y[atom1]) * cosa - (this.x[ref1] - this.x[atom1]) * sina; +var y2 = (this.y[ref2] - this.y[atom1]) * cosa - (this.x[ref2] - this.x[atom1]) * sina; +if (Math.abs(y1) < 2 || Math.abs(y2) < 2) { +this.jme.info("Not unique E/Z geometry !"); +return; +}var b1 = this.bondIdentity(ref1, atom1); +var b2 = this.bondIdentity(ref2, atom2); +var newSlash = 1; +if (slashBond[b1] == 0) { +for (var j = 1; j <= this.nv[ref1]; j++) { +var atomx = this.v[ref1][j]; +if (atomx == atom1) continue; +bi = this.bondIdentity(ref1, atomx); +if (slashBond[bi] != 0) { +if (ax[atomx] > ax[ref1]) newSlash = -slashBond[bi]; + else newSlash = slashBond[bi]; +break; +}} +slashBond[b1] = newSlash; +}if (slashBond[b2] != 0) { +System.err.println("E/Z internal error !"); +return; +}if ((y1 > 0 && y2 > 0) || (y1 < 0 && y2 < 0)) slashBond[b2] = -slashBond[b1]; + else slashBond[b2] = slashBond[b1]; +if (ref1x) slashBond[b2] = -slashBond[b2]; +}, "~N,~A,~A,~A"); +Clazz.defineMethod(c$, "compareAngles", +function(sina, cosa, sinb, cosb){ +var qa = 0; +var qb = 0; +if (sina >= 0. && cosa >= 0.) qa = 1; + else if (sina >= 0. && cosa < 0.) qa = 2; + else if (sina < 0. && cosa < 0.) qa = 3; + else if (sina < 0. && cosa >= 0.) qa = 4; +if (sinb >= 0. && cosb >= 0.) qb = 1; + else if (sinb >= 0. && cosb < 0.) qb = 2; + else if (sinb < 0. && cosb < 0.) qb = 3; + else if (sinb < 0. && cosb >= 0.) qb = 4; +if (qa < qb) return 1; + else if (qa > qb) return -1; +switch (qa) { +case 1: +case 4: +return (sina < sinb ? 1 : -1); +case 2: +case 3: +return (sina > sinb ? 1 : -1); +} +System.err.println("stereowarning #31"); +return 0; +}, "~N,~N,~N,~N"); +Clazz.defineMethod(c$, "upDownBond", +function(bond, atom){ +var sb = this.stereob[bond]; +if (sb < 1 || sb > 4) return 0; +if (sb == 1 && this.va[bond] == atom) return 1; +if (sb == 2 && this.va[bond] == atom) return -1; +if (sb == 3 && this.vb[bond] == atom) return 1; +if (sb == 4 && this.vb[bond] == atom) return -1; +return 0; +}, "~N,~N"); +Clazz.defineMethod(c$, "stereoAllene", +function(i, ax, slimak, parent, con1, con2, nconnections){ +var dx; +var dy; +var rx; +var sina; +var cosa; +var nal = 1; +var ala = i; +var al = Clazz.newIntArray (this.natoms + 1, 0); +al[1] = i; +while (true) { +var ok = false; +for (var j = 1; j <= this.nv[ala]; j++) { +var atomx = this.v[ala][j]; +if (atomx == al[1] || atomx == al[nal - 1]) continue; +var bi = this.bondIdentity(ala, atomx); +if (this.nasv[bi] == 2 && this.btype[bi] != 5) { +al[++nal] = atomx; +ala = atomx; +ok = true; +break; +}} +if (!ok) break; +} +if (nal % 2 == 0) return; +if (this.nv[al[nal]] < 2 || this.nv[al[nal]] > 3) return; +var start = al[1]; +var center = al[Clazz.doubleToInt((nal + 1) / 2)]; +var end = al[nal]; +var ref11 = 0; +var ref12 = 0; +var ref21 = 0; +var ref22 = 0; +var ref1 = 0; +var ref2 = 0; +var ref1x = false; +var ref2x = false; +for (var j = 1; j <= this.nv[start]; j++) { +var atomx = this.v[start][j]; +var bi = this.bondIdentity(start, atomx); +if (this.nasv[bi] != 1 || this.btype[bi] == 5) continue; +if (ref11 == 0) ref11 = atomx; + else ref12 = atomx; +} +if (ax[ref12] > 0 && ax[ref11] > ax[ref12]) { +var d = ref11; +ref11 = ref12; +ref12 = d; +}ref1 = ref11; +if (ref1 == 0) { +ref1 = ref12; +ref1x = true; +}for (var j = 1; j <= this.nv[end]; j++) { +var atomx = this.v[end][j]; +var bi = this.bondIdentity(end, atomx); +if (this.nasv[bi] != 1 || this.btype[bi] == 5) continue; +if (ref21 == 0) ref21 = atomx; + else ref22 = atomx; +} +if (ax[ref22] > 0 && ax[ref21] > ax[ref22]) { +var d = ref21; +ref21 = ref22; +ref22 = d; +}ref2 = ref21; +if (ref2 == 0) { +ref2 = ref22; +ref2x = true; +}var ref11x = this.upDownBond(this.bondIdentity(start, ref11), start); +var ref12x = this.upDownBond(this.bondIdentity(start, ref12), start); +var ref21x = this.upDownBond(this.bondIdentity(end, ref21), end); +var ref22x = this.upDownBond(this.bondIdentity(end, ref22), end); +if (Math.abs(ref11x + ref12x) > 1 || ref21x != 0 || ref22x != 0) { +this.jme.info("Bad stereoinfo on allene !"); +return; +}dx = this.x[al[nal - 1]] - this.x[end]; +dy = this.y[al[nal - 1]] - this.y[end]; +rx = Math.sqrt(dx * dx + dy * dy); +if (rx < 0.001) rx = 0.001; +sina = dy / rx; +cosa = dx / rx; +var y2 = (this.y[ref2] - this.y[al[nal - 1]]) * cosa - (this.x[ref2] - this.x[al[nal - 1]]) * sina; +if (y2 > 0) slimak[center] = 1; + else slimak[center] = -1; +if (ref1x) slimak[center] *= -1; +if (ref2x) slimak[center] *= -1; +if (ref1 == ref11 && ref11x < 0) slimak[center] *= -1; +if (ref1 == ref12 && ref12x < 0) slimak[center] *= -1; +if (ax[ref1] > ax[ref2]) slimak[center] *= -1; +}, "~N,~A,~A,~A,~A,~A,~N"); +Clazz.defineMethod(c$, "createJME", +function(){ +var s = "" + this.natoms + " " + this.nbonds; +var scale = 0.055999999999999994; +for (var i = 1; i <= this.natoms; i++) { +var z = this.getAtomLabel(i); +if (this.jme.jmeh && this.nh[i] > 0) { +z += "H"; +if (this.nh[i] > 1) z += this.nh[i]; +}if (this.q[i] != 0) { +if (this.q[i] > 0) z += "+"; + else z += "-"; +if (Math.abs(this.q[i]) > 1) z += Math.abs(this.q[i]); +}var lmark = -1; +for (var j = 1; j <= this.nmarked; j++) if (this.$mark[j][0] == i) { +lmark = this.$mark[j][1]; +break; +} +if (this.jme.star && this.abg[i] > 0) lmark = 1; +if (lmark > -1) z += ":" + lmark; +s += " " + z + " " + jme.JMEmol.fformat(this.x[i] * scale, 0, 2) + " " + jme.JMEmol.fformat(-this.y[i] * scale, 0, 2); +} +for (var i = 1; i <= this.nbonds; i++) { +var a1 = this.va[i]; +var a2 = this.vb[i]; +var nas = this.nasv[i]; +if (this.stereob[i] == 1) nas = -1; + else if (this.stereob[i] == 2) nas = -2; + else if (this.stereob[i] == 3) { +nas = -1; +var d = a1; +a1 = a2; +a2 = d; +} else if (this.stereob[i] == 4) { +nas = -2; +var d = a1; +a1 = a2; +a2 = d; +} else if (this.stereob[i] == 10) { +nas = -5; +}if (this.nasv[i] == 9) nas = this.stereob[i]; +s += " " + a1 + " " + a2 + " " + nas; +} +return s; +}); +Clazz.defineMethod(c$, "createMolFile", +function(title){ +if (this.natoms == 0) return ""; +var s = ""; +s = title; +if (s.length > 79) s = s.substring(0, 76) + "..."; +s += "\n"; +s += JV.PropertyManager.getSDFDateLine("JME2023.01", true); +s += "JME " + "2023.01" + " " + new java.util.Date() + "\n"; +s += jme.JMEmol.iformat(this.natoms, 3) + jme.JMEmol.iformat(this.nbonds, 3); +s += " 0 0 0 0 0 0 0 0999 V2000\n"; +var scale = 0.055999999999999994; +var ymax = -1.7976931348623157E308; +var xmin = 1.7976931348623157E308; +for (var i = 1; i <= this.natoms; i++) { +if (this.y[i] > ymax) ymax = this.y[i]; +if (this.x[i] < xmin) xmin = this.x[i]; +} +for (var i = 1; i <= this.natoms; i++) { +s += jme.JMEmol.fformat((this.x[i] - xmin) * scale, 10, 4) + jme.JMEmol.fformat((ymax - this.y[i]) * scale, 10, 4) + jme.JMEmol.fformat(0.0, 10, 4); +var z = this.getAtomLabel(i); +if (z.length == 1) z += " "; + else if (z.length == 2) z += " "; + else if (z.length > 3) z = "Q "; +s += " " + z; +var charge = 0; +if (this.q[i] > 0 && this.q[i] < 4) charge = 4 - this.q[i]; + else if (this.q[i] < 0 && this.q[i] > -4) charge = 4 - this.q[i]; +z = " 0" + jme.JMEmol.iformat(charge, 3) + " 0 0 0 0 0 0 0"; +var lmark = -1; +for (var j = 1; j <= this.nmarked; j++) if (this.$mark[j][0] == i) { +lmark = this.$mark[j][1]; +break; +} +if (lmark > -1) z += jme.JMEmol.iformat(lmark, 3); + else z += " 0"; +s += z + " 0 0" + "\n"; +} +for (var i = 1; i <= this.nbonds; i++) { +var nas = this.nasv[i]; +if (this.isSingle(i)) nas = 1; + else if (this.isDouble(i)) nas = 2; +var bonds = jme.JMEmol.iformat(this.va[i], 3) + jme.JMEmol.iformat(this.vb[i], 3); +var stereo = 0; +if (this.nasv[i] == 1 && this.stereob[i] == 1) stereo = 1; + else if (this.nasv[i] == 1 && this.stereob[i] == 2) stereo = 6; +if (this.nasv[i] == 1 && this.stereob[i] == 3) { +stereo = 1; +bonds = jme.JMEmol.iformat(this.vb[i], 3) + jme.JMEmol.iformat(this.va[i], 3); +}if (this.nasv[i] == 1 && this.stereob[i] == 4) { +stereo = 6; +bonds = jme.JMEmol.iformat(this.vb[i], 3) + jme.JMEmol.iformat(this.va[i], 3); +}s += bonds + jme.JMEmol.iformat(nas, 3) + jme.JMEmol.iformat(stereo, 3) + " 0 0 0" + "\n"; +} +for (var i = 1; i <= this.natoms; i++) if (this.q[i] != 0) { +s += "M CHG 1" + jme.JMEmol.iformat(i, 4) + jme.JMEmol.iformat(this.q[i], 4) + "\n"; +} +s += "M END\n"; +return s; +}, "~S"); +Clazz.defineMethod(c$, "createExtendedMolFile", +function(smiles){ +var chiral = 0; +for (var i = 1; i <= this.nbonds; i++) if (this.stereob[i] != 0) { +chiral = 1; +break; +} +var mv30 = "M V30 "; +var s = ""; +s = smiles; +if (s.length > 79) s = s.substring(0, 76) + "..."; +s += "\n"; +s += JV.PropertyManager.getSDFDateLine("JME2023.01", true) + "JME " + "2023.01" + " " + new java.util.Date() + "\n"; +s += " 0 0 0 0 0 0 0 0 0 0999 V3000\n"; +s += mv30 + "BEGIN CTAB" + "\n"; +s += mv30 + "COUNTS " + this.natoms + " " + this.nbonds + " 0 0 " + chiral + "\n"; +s += mv30 + "BEGIN ATOM" + "\n"; +var scale = 0.055999999999999994; +var ymax = -1.7976931348623157E308; +var xmin = 1.7976931348623157E308; +for (var i = 1; i <= this.natoms; i++) { +if (this.y[i] > ymax) ymax = this.y[i]; +if (this.x[i] < xmin) xmin = this.x[i]; +} +for (var i = 1; i <= this.natoms; i++) { +s += mv30; +var z = this.getAtomLabel(i); +s += i + " " + z; +var m = 0; +var lmark = -1; +for (var j = 1; j <= this.nmarked; j++) if (this.$mark[j][0] == i) { +lmark = this.$mark[j][1]; +break; +} +if (lmark > -1) m = lmark; +s += " " + jme.JMEmol.fformat((this.x[i] - xmin) * scale, 0, 4) + " " + jme.JMEmol.fformat((ymax - this.y[i]) * scale, 0, 4) + " " + jme.JMEmol.fformat(0.0, 0, 4) + " " + m; +if (this.q[i] != 0) s += " CHG=" + this.q[i]; +s += "\n"; +} +s += mv30 + "END ATOM" + "\n"; +s += mv30 + "BEGIN BOND" + "\n"; +for (var i = 1; i <= this.nbonds; i++) { +s += mv30 + i; +var nas = this.nasv[i]; +if (this.isSingle(i)) nas = 1; + else if (this.isDouble(i)) nas = 2; +var bonds = this.va[i] + " " + this.vb[i]; +var stereo = 0; +if (this.nasv[i] == 1 && this.stereob[i] == 1) stereo = 1; + else if (this.nasv[i] == 1 && this.stereob[i] == 2) stereo = 3; +if (this.nasv[i] == 1 && this.stereob[i] == 3) { +stereo = 1; +bonds = this.vb[i] + " " + this.va[i]; +}if (this.nasv[i] == 1 && this.stereob[i] == 4) { +stereo = 3; +bonds = this.vb[i] + " " + this.va[i]; +}s += " " + bonds + " " + nas; +if (stereo != 0) s += " CFG=" + stereo; +s += "\n"; +} +s += mv30 + "END BOND" + "\n"; +var abs = new java.util.ArrayList(); +var orlists = new java.util.ArrayList(); +var mixlists = new java.util.ArrayList(); +for (var i = 0; i < 10; i++) { +orlists.add(null); +mixlists.add(null); +} +for (var i = 1; i <= this.natoms; i++) { +if (this.atag[i] == null || this.atag[i].length == 0) continue; +if (this.atag[i].equals("abs")) abs.add( new Integer(i)); + else if (this.atag[i].startsWith("mix")) { +var n = Integer.parseInt(this.atag[i].substring(3)); +var o = null; +if (mixlists.size() > n) o = mixlists.get(n); +var l = (o == null ? new java.util.ArrayList() : o); +l.add( new Integer(i)); +mixlists.set(n, l); +} else if (this.atag[i].startsWith("or")) { +var n = Integer.parseInt(this.atag[i].substring(2)); +var o = null; +if (orlists.size() > n) o = orlists.get(n); +var l = (o == null ? new java.util.ArrayList() : o); +l.add( new Integer(i)); +orlists.set(n, l); +}} +s += this.addCollection("MDLV30/STEABS", abs, mv30); +if (orlists.size() > 0) for (var i = 1; i < orlists.size(); i++) s += this.addCollection("MDLV30/STEREL" + i, orlists.get(i), mv30); + +if (mixlists.size() > 0) for (var i = 1; i < mixlists.size(); i++) s += this.addCollection("MDLV30/STERAC" + i, mixlists.get(i), mv30); + +s += mv30 + "END CTAB" + "\n"; +s += "M END\n"; +return s; +}, "~S"); +Clazz.defineMethod(c$, "addCollection", +function(name, list, mv30){ +if (list == null || list.size() == 0) return ""; +var s = ""; +s += mv30 + "BEGIN COLLECTION" + "\n"; +s += mv30 + name + " [ATOMS=(" + list.size(); +for (var i = list.iterator(); i.hasNext(); ) s += " " + i.next(); + +s += ")]\n"; +s += mv30 + "END COLLECTION" + "\n"; +return s; +}, "~S,java.util.ArrayList,~S"); +Clazz.defineMethod(c$, "getAtomLabel", +function(i){ +var z = jme.JME.zlabel[this.an[i]]; +if (this.an[i] == 18) z = this.label[i]; +return z; +}, "~N"); +c$.iformat = Clazz.defineMethod(c$, "iformat", +function(number, len){ +var n = new Integer(number); +var s = n.toString(); +if (s.length > len) s = "?"; +var space = ""; +for (var i = 1; i <= len - s.length; i++) space += " "; + +s = space + s; +return s; +}, "~N,~N"); +c$.fformat = Clazz.defineMethod(c$, "fformat", +function(number, len, dec){ +if (dec == 0) return jme.JMEmol.iformat(Clazz.doubleToInt(number), len); +if (Math.abs(number) < 0.0009) number = 0.; +number = Math.round(number * Math.pow(10., dec)) / (Math.pow(10., dec)); +var s = new Double(number).toString(); +var dotpos = s.indexOf('.'); +if (dotpos < 0) { +s += "."; +dotpos = s.indexOf('.'); +}var slen = s.length; +for (var i = 1; i <= dec - slen + dotpos + 1; i++) s += "0"; + +if (len == 0) return s; +if (s.length > len) s = "?"; +var space = ""; +for (var i = 1; i <= len - s.length; i++) space += " "; + +s = space + s; +return s; +}, "~N,~N,~N"); +c$.checkAtomicSymbol = Clazz.defineMethod(c$, "checkAtomicSymbol", +function(s){ +if (s.equals("C")) return 3; + else if (s.equals("B")) return 2; + else if (s.equals("N")) return 4; + else if (s.equals("O")) return 5; + else if (s.equals("P")) return 7; + else if (s.equals("S")) return 8; + else if (s.equals("F")) return 9; + else if (s.equals("Cl")) return 10; + else if (s.equals("Br")) return 11; + else if (s.equals("I")) return 12; + else if (s.equals("H")) return 1; + else if (s.equals("Se")) return 13; + else if (s.equals("Si")) return 6; + else if (s.equals("R")) return 19; + else if (s.equals("R1")) return 20; + else if (s.equals("R2")) return 21; + else if (s.equals("R3")) return 22; + else return 18; +}, "~S"); +Clazz.defineMethod(c$, "deleteHydrogens", +function(){ +if (this.jme.keepHydrogens) return; +iloop : for (var i = this.natoms; i >= 1; i--) { +var parent = this.v[i][1]; +if (this.an[i] == 1 && this.nv[i] == 1 && this.q[i] == 0 && this.an[parent] != 1 && this.an[parent] < 18) { +for (var j = 1; j <= this.nmarked; j++) if (this.$mark[j][0] == i) continue iloop; + +var bi = this.bondIdentity(i, parent); +if (this.nasv[bi] == 1) { +if (this.stereob[bi] == 0 || !this.jme.stereo) this.deleteAtom(i); +}}} +}); +Clazz.defineMethod(c$, "bondIdentity", +function(atom1, atom2){ +for (var i = 1; i <= this.nbonds; i++) { +if (this.va[i] == atom1 && this.vb[i] == atom2) return i; +if (this.va[i] == atom2 && this.vb[i] == atom1) return i; +} +return 0; +}, "~N,~N"); +Clazz.defineMethod(c$, "isSingle", +function(bond){ +return (this.nasv[bond] == 1); +}, "~N"); +Clazz.defineMethod(c$, "isDouble", +function(bond){ +return (this.nasv[bond] == 2); +}, "~N"); +Clazz.defineMethod(c$, "valenceState", +function(){ +for (var i = 1; i <= this.natoms; i++) { +this.atomValenceState(i); +} +}); +Clazz.defineMethod(c$, "atomValenceState", +function(i){ +var sbo = this.sumBondOrders(i); +if (sbo == -1) { +this.nh[i] = 0; +return; +}switch (this.an[i]) { +case 1: +if (sbo == 2) this.q[i] = 1; + else this.q[i] = 0; +this.nh[i] = 0; +break; +case 2: +if (sbo == 3 || sbo == 5) { +this.nh[i] = 0; +this.q[i] = 0; +} else if (sbo < 3) { +this.nh[i] = 3 - sbo - this.q[i]; +} else if (sbo == 4) { +this.q[i] = -1; +this.nh[i] = 0; +} else if (sbo > 5) { +this.q[i] = sbo - 5; +this.nh[i] = 0; +}break; +case 3: +case 6: +if (sbo < 4) { +if (this.q[i] > 0) this.nh[i] = 2 - sbo + this.q[i]; + else if (this.q[i] < 0) this.nh[i] = 2 - sbo - this.q[i]; + else this.nh[i] = 4 - sbo; +} else { +this.q[i] = sbo - 4; +this.nh[i] = 4 - sbo + this.q[i]; +}break; +case 4: +case 7: +if (sbo < 3) this.nh[i] = 3 - sbo + this.q[i]; + else if (sbo == 3) { +if (this.q[i] < 0) { +this.q[i] = 0; +this.nh[i] = 0; +} else if (this.q[i] > 0) this.nh[i] = this.q[i]; + else this.nh[i] = 3 - sbo; +} else if (sbo == 4) { +this.q[i] = 1; +this.nh[i] = 0; +} else if (sbo == 6) { +this.q[i] = -1; +this.nh[i] = 0; +} else { +this.q[i] = sbo - 5; +this.nh[i] = 0; +}break; +case 5: +if (sbo == 2) { +if (this.q[i] < 0) { +this.q[i] = 0; +this.nh[i] = 0; +} else if (this.q[i] > 0) this.nh[i] = this.q[i]; + else this.nh[i] = 2 - sbo; +}if (sbo > 2) this.q[i] = sbo - 2; +this.nh[i] = 2 - sbo + this.q[i]; +break; +case 8: +case 13: +if (sbo < 2) this.nh[i] = 2 - sbo + this.q[i]; + else if (sbo == 2) { +if (this.q[i] < 0) { +this.q[i] = 0; +this.nh[i] = 0; +} else if (this.q[i] > 0) this.nh[i] = this.q[i]; + else this.nh[i] = 2 - sbo; +} else if (sbo == 3) { +if (this.nv[i] == 2) { +this.q[i] = 0; +this.nh[i] = 1; +} else { +this.q[i] = 1; +this.nh[i] = 0; +}} else if (sbo == 4) { +this.q[i] = 0; +this.nh[i] = 0; +} else if (sbo == 5) { +this.q[i] = 0; +this.nh[i] = 1; +} else { +this.q[i] = sbo - 6; +this.nh[i] = 0; +}break; +case 9: +case 10: +case 11: +case 12: +if (sbo >= 1) this.q[i] = sbo - 1; +this.nh[i] = 1 - sbo + this.q[i]; +if (sbo > 2) { +this.q[i] = 0; +this.nh[i] = 0; +}break; +case 19: +case 18: +this.nh[i] = 0; +break; +} +if (this.nh[i] < 0) this.nh[i] = 0; +if (this.jme.relativeStereo && this.atag[i] != null && this.atag[i].length > 0) { +var ok = false; +for (var j = 1; j <= this.nv[i]; j++) { +var bond = this.bondIdentity(i, this.v[i][j]); +if (i == this.va[bond] && (this.stereob[bond] == 1 || this.stereob[bond] == 2)) { +ok = true; +break; +}if (i == this.vb[bond] && (this.stereob[bond] == 3 || this.stereob[bond] == 4)) { +ok = true; +break; +}} +if (!ok) this.atag[i] = ""; +}}, "~N"); +Clazz.defineMethod(c$, "changeCharge", +function(atom, type){ +var np = "Charge change not possible on "; +if (type == 1) { +this.q[atom]++; +return; +} else if (type == -1) { +this.q[atom]--; +return; +}var sbo = this.sumBondOrders(atom); +if (sbo == -1) { +if (type == 0) { +if (this.q[atom] == 0) this.q[atom] = 1; + else if (this.q[atom] == 1) this.q[atom] = -1; + else if (this.q[atom] == -1) this.q[atom] = 0; +}}switch (this.an[atom]) { +case 2: +if (sbo > 2) this.jme.info(np + "this boron !"); +if (this.q[atom] == 0) this.q[atom] = 1; + else if (this.q[atom] == 1) this.q[atom] = 0; +break; +case 3: +if (sbo > 3) this.jme.info(np + "this carbon !"); + else if (sbo < 4) { +if (this.q[atom] == 0) this.q[atom] = -1; + else if (this.q[atom] == -1) this.q[atom] = 1; + else if (this.q[atom] == 1) this.q[atom] = 0; +}break; +case 4: +case 7: +if (sbo > 3) this.jme.info(np + "multibonded N or P !"); + else if (sbo == 3 && this.q[atom] == 0) this.q[atom] = 1; + else if (sbo == 3 && this.q[atom] == 1) this.q[atom] = 0; + else if (sbo < 3 && this.q[atom] == 0) this.q[atom] = 1; + else if (sbo < 3 && this.q[atom] == 1) this.q[atom] = -1; + else if (sbo < 3 && this.q[atom] == -1) this.q[atom] = 0; +break; +case 5: +case 8: +case 13: +if (sbo > 2) this.jme.info(np + "multibonded O or S !"); + else if (sbo == 2 && this.q[atom] == 0) this.q[atom] = 1; + else if (sbo == 2 && this.q[atom] == 1) this.q[atom] = 0; + else if (sbo < 2 && this.q[atom] == 0) this.q[atom] = -1; + else if (sbo < 2 && this.q[atom] == -1) this.q[atom] = 1; + else if (sbo < 2 && this.q[atom] == 1) this.q[atom] = 0; +break; +case 9: +case 10: +case 11: +case 12: +if (sbo == 0 && this.q[atom] == 0) this.q[atom] = -1; + else if (sbo == 0 && this.q[atom] == -1) this.q[atom] = 0; + else this.jme.info(np + "the halogen !"); +break; +case 18: +this.jme.info("Use X button to change charge on the X atom !"); +break; +} +}, "~N,~N"); +Clazz.defineMethod(c$, "sumBondOrders", +function(atom){ +var sbo = 0; +for (var i = 1; i <= this.nv[atom]; i++) { +var bond = this.bondIdentity(atom, this.v[atom][i]); +if (this.isSingle(bond)) sbo += 1; + else if (this.isDouble(bond)) sbo += 2; + else if (this.nasv[bond] == 3) sbo += 3; + else if (this.nasv[bond] == 9) return -1; +} +return sbo; +}, "~N"); +Clazz.defineMethod(c$, "mark", +function(){ +this.jme.markUsed = true; +if (this.jme.star) { +this.doColoring = -1; +if (this.abg[this.touchedAtom] == 0) this.abg[this.touchedAtom] = 4; + else this.abg[this.touchedAtom] = 0; +return; +}for (var i = 1; i <= this.nmarked; i++) { +if (this.touchedAtom == this.$mark[i][0]) { +if (this.jme.currentMark == -1) { +for (var j = i; j < this.nmarked; j++) { +this.$mark[j][0] = this.$mark[j + 1][0]; +this.$mark[j][1] = this.$mark[j + 1][1]; +} +this.nmarked--; +} else { +var n = this.jme.currentMark; +if (this.jme.autonumber) { +if (!this.jme.mouseShift) this.maxMark++; +n = this.maxMark; +}this.$mark[i][1] = n; +}return; +}} +var storage = this.$mark.length; +if (++this.nmarked > storage - 1) { +var n_m = Clazz.newIntArray (storage + 5, 2, 0); +System.arraycopy(this.$mark, 0, n_m, 0, this.$mark.length); +this.$mark = n_m; +}this.$mark[this.nmarked][0] = this.touchedAtom; +var n = this.jme.currentMark; +if (this.jme.autonumber) { +if (!this.jme.mouseShift) this.maxMark++; +n = this.maxMark; +}this.$mark[this.nmarked][1] = n; +}); +Clazz.defineMethod(c$, "numberAtoms", +function(){ +this.nmarked = 0; +this.maxMark = 0; +this.createSmiles(); +for (var i = 1; i <= this.natoms; i++) { +this.touchedAtom = i; +this.mark(); +} +this.touchedAtom = 0; +}); +Clazz.defineMethod(c$, "setLabel", +function(n, s){ +if (this.label == null || this.label.length < this.natoms + 1) this.label = new Array(this.natoms + 1); +this.label[n] = s; +}, "~N,~S"); +Clazz.defineMethod(c$, "reactionPart", +function(){ +var center = Clazz.newDoubleArray (4, 0); +this.centerPoint(center); +var xpix = this.jme.dimension.width; +if (!this.jme.depict) xpix -= this.jme.sd; +if (center[0] < Clazz.doubleToInt(xpix / 2) - Clazz.doubleToInt(this.jme.arrowWidth / 2)) return 1; + else if (center[0] > Clazz.doubleToInt(xpix / 2) + Clazz.doubleToInt(this.jme.arrowWidth / 2)) return 3; + else return 2; +}); +c$.generatePrimes = Clazz.defineMethod(c$, "generatePrimes", +function(n){ +var npn; +var pn = Clazz.newLongArray (n + 2, 0); +var prime = Clazz.newIntArray (100, 0); +var test = 5; +var index = 0; +var num = 0; +var check = true; +prime[0] = 3; +pn[1] = 2; +pn[2] = 3; +npn = 2; +if (n < 3) return pn; +while (test < (prime[num] * prime[num])) { +index = 0; +check = true; +while (check == true && index <= num && test >= (prime[index] * prime[index])) { +if (test % prime[index] == 0) check = false; + else index++; +} +if (check == true) { +pn[++npn] = test; +if (npn >= n) return pn; +if (num < (prime.length - 1)) { +num++; +prime[num] = test; +}}test += 2; +} +System.err.println("ERROR - Prime Number generator failed !"); +return pn; +}, "~N"); +Clazz.defineMethod(c$, "saveXY", +function(){ +var x = Clazz.newDoubleArray (this.natoms + 1, 0); +var y = Clazz.newDoubleArray (this.natoms + 1, 0); +System.arraycopy(this.x, 1, x, 1, this.natoms); +System.arraycopy(this.y, 1, y, 1, this.natoms); +return Clazz.newArray(-1, [x, y]); +}); +Clazz.defineMethod(c$, "restoreXY", +function(xy){ +System.arraycopy(xy[0], 1, this.x, 1, this.natoms); +System.arraycopy(xy[1], 1, this.y, 1, this.natoms); +}, "~A"); +c$.TESTDRAW = false; +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/BZip2Constants.js b/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/BZip2Constants.js new file mode 100755 index 000000000000..a854440a16e1 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/BZip2Constants.js @@ -0,0 +1,16 @@ +Clazz.declarePackage("org.apache.tools.bzip2"); +(function(){ +var c$ = Clazz.declareInterface(org.apache.tools.bzip2, "BZip2Constants"); +c$.baseBlockSize = 100000; +c$.MAX_ALPHA_SIZE = 258; +c$.MAX_CODE_LEN = 23; +c$.RUNA = 0; +c$.RUNB = 1; +c$.N_GROUPS = 6; +c$.G_SIZE = 50; +c$.N_ITERS = 4; +c$.MAX_SELECTORS = (18002); +c$.NUM_OVERSHOOT_BYTES = 20; +c$.rNums = Clazz.newIntArray(-1, [619, 720, 127, 481, 931, 816, 813, 233, 566, 247, 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, 936, 638]); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CBZip2InputStream.js b/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CBZip2InputStream.js new file mode 100755 index 000000000000..b39aa81f495f --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CBZip2InputStream.js @@ -0,0 +1,691 @@ +Clazz.declarePackage("org.apache.tools.bzip2"); +Clazz.load(["java.io.InputStream", "org.apache.tools.bzip2.BZip2Constants", "$.CRC"], "org.apache.tools.bzip2.CBZip2InputStream", null, function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.last = 0; +this.origPtr = 0; +this.blockSize100k = 0; +this.blockRandomised = false; +this.bsBuff = 0; +this.bsLive = 0; +this.crc = null; +this.nInUse = 0; +this.$in = null; +this.decompressConcatenated = false; +this.currentChar = -1; +this.currentState = 1; +this.storedBlockCRC = 0; +this.storedCombinedCRC = 0; +this.computedBlockCRC = 0; +this.computedCombinedCRC = 0; +this.su_count = 0; +this.su_ch2 = 0; +this.su_chPrev = 0; +this.su_i2 = 0; +this.su_j2 = 0; +this.su_rNToGo = 0; +this.su_rTPos = 0; +this.su_tPos = 0; +this.su_z = '\0'; +this.data = null; +Clazz.instantialize(this, arguments);}, org.apache.tools.bzip2, "CBZip2InputStream", java.io.InputStream, org.apache.tools.bzip2.BZip2Constants); +Clazz.prepareFields (c$, function(){ +this.crc = new org.apache.tools.bzip2.CRC(); +}); +Clazz.makeConstructor(c$, +function($in){ +this.construct ($in, false); +}, "java.io.InputStream"); +Clazz.makeConstructor(c$, +function($in, decompressConcatenated){ +Clazz.superConstructor(this, org.apache.tools.bzip2.CBZip2InputStream); +this.$in = $in; +this.decompressConcatenated = decompressConcatenated; +this.init(true); +this.initBlock(); +this.setupBlock(); +}, "java.io.InputStream,~B"); +Clazz.defineMethod(c$, "read", +function(){ +if (this.$in == null) throw new java.io.IOException("stream closed"); +return this.read0(); +}); +Clazz.defineMethod(c$, "read", +function(dest, offs, len){ +if (offs < 0) { +throw new IndexOutOfBoundsException("offs(" + offs + ") < 0."); +}if (len < 0) { +throw new IndexOutOfBoundsException("len(" + len + ") < 0."); +}if (offs + len > dest.length) { +throw new IndexOutOfBoundsException("offs(" + offs + ") + len(" + len + ") > dest.length(" + dest.length + ")."); +}if (this.$in == null) { +throw new java.io.IOException("stream closed"); +}var hi = offs + len; +var destOffs = offs; +for (var b; (destOffs < hi) && ((b = this.read0()) >= 0); ) { +dest[destOffs++] = b; +} +return (destOffs == offs) ? -1 : (destOffs - offs); +}, "~A,~N,~N"); +Clazz.defineMethod(c$, "makeMaps", +function(){ +var inUse = this.data.inUse; +var seqToUnseq = this.data.seqToUnseq; +var nInUseShadow = 0; +for (var i = 0; i < 256; i++) { +if (inUse[i]) { +seqToUnseq[nInUseShadow++] = i; +}} +this.nInUse = nInUseShadow; +}); +Clazz.defineMethod(c$, "read0", +function(){ +var retChar = this.currentChar; +switch (this.currentState) { +case 0: +return -1; +case 1: +throw new IllegalStateException(); +case 2: +throw new IllegalStateException(); +case 3: +this.setupRandPartB(); +break; +case 4: +this.setupRandPartC(); +break; +case 5: +throw new IllegalStateException(); +case 6: +this.setupNoRandPartB(); +break; +case 7: +this.setupNoRandPartC(); +break; +default: +throw new IllegalStateException(); +} +return retChar; +}); +Clazz.defineMethod(c$, "init", +function(isFirstStream){ +if (null == this.$in) { +throw new java.io.IOException("No InputStream"); +}if (isFirstStream) { +if (this.$in.available() == 0) { +throw new java.io.IOException("Empty InputStream"); +}} else { +var magic0 = this.readByteAsInt(); +if (magic0 == -1) { +return false; +}var magic1 = this.readByteAsInt(); +if (magic0 != 66 || magic1 != 90) { +throw new java.io.IOException("Garbage after a valid BZip2 stream"); +}}var magic2 = this.readByteAsInt(); +if (magic2 != 104) { +throw new java.io.IOException(isFirstStream ? "Stream is not in the BZip2 format" : "Garbage after a valid BZip2 stream"); +}var blockSize = this.readByteAsInt(); +if ((blockSize < 49) || (blockSize > 57)) { +throw new java.io.IOException("Stream is not BZip2 formatted: illegal " + "blocksize " + String.fromCharCode(blockSize)); +}this.blockSize100k = blockSize - 48; +this.bsLive = 0; +this.computedCombinedCRC = 0; +return true; +}, "~B"); +Clazz.defineMethod(c$, "readByteAsInt", +function(){ +{ +return(this.in.readByteAsInt()); +}}); +Clazz.defineMethod(c$, "initBlock", +function(){ +var magic0; +var magic1; +var magic2; +var magic3; +var magic4; +var magic5; +while (true) { +magic0 = this.bsGetUByte(); +magic1 = this.bsGetUByte(); +magic2 = this.bsGetUByte(); +magic3 = this.bsGetUByte(); +magic4 = this.bsGetUByte(); +magic5 = this.bsGetUByte(); +if (magic0.charCodeAt(0) != 0x17 || magic1.charCodeAt(0) != 0x72 || magic2.charCodeAt(0) != 0x45 || magic3.charCodeAt(0) != 0x38 || magic4.charCodeAt(0) != 0x50 || magic5.charCodeAt(0) != 0x90) { +break; +}if (this.complete()) { +return; +}} +if (magic0.charCodeAt(0) != 0x31 || magic1.charCodeAt(0) != 0x41 || magic2.charCodeAt(0) != 0x59 || magic3.charCodeAt(0) != 0x26 || magic4.charCodeAt(0) != 0x53 || magic5.charCodeAt(0) != 0x59) { +this.currentState = 0; +throw new java.io.IOException("bad block header"); +}this.storedBlockCRC = this.bsGetInt(); +this.blockRandomised = this.bsR(1) == 1; +if (this.data == null) { +this.data = new org.apache.tools.bzip2.CBZip2InputStream.Data(this.blockSize100k); +}this.getAndMoveToFrontDecode(); +this.crc.initialiseCRC(); +this.currentState = 1; +}); +Clazz.defineMethod(c$, "endBlock", +function(){ +this.computedBlockCRC = this.crc.getFinalCRC(); +if (this.storedBlockCRC != this.computedBlockCRC) { +this.computedCombinedCRC = (this.storedCombinedCRC << 1) | (this.storedCombinedCRC >>> 31); +this.computedCombinedCRC ^= this.storedBlockCRC; +org.apache.tools.bzip2.CBZip2InputStream.reportCRCError(); +}this.computedCombinedCRC = (this.computedCombinedCRC << 1) | (this.computedCombinedCRC >>> 31); +this.computedCombinedCRC ^= this.computedBlockCRC; +}); +Clazz.defineMethod(c$, "complete", +function(){ +this.storedCombinedCRC = this.bsGetInt(); +this.currentState = 0; +this.data = null; +if (this.storedCombinedCRC != this.computedCombinedCRC) { +org.apache.tools.bzip2.CBZip2InputStream.reportCRCError(); +}return !this.decompressConcatenated || !this.init(false); +}); +Clazz.defineMethod(c$, "close", +function(){ +var inShadow = this.$in; +if (inShadow != null) { +try { +if (inShadow !== System.$in) { +inShadow.close(); +}} finally { +this.data = null; +this.$in = null; +} +}}); +Clazz.defineMethod(c$, "bsR", +function(n){ +var bsLiveShadow = this.bsLive; +var bsBuffShadow = this.bsBuff; +if (bsLiveShadow < n) { +var inShadow = this.$in; +do { +var thech = this.readByteAsInt(); +if (thech < 0) { +throw new java.io.IOException("unexpected end of stream"); +}bsBuffShadow = (bsBuffShadow << 8) | thech; +bsLiveShadow += 8; +} while (bsLiveShadow < n); +this.bsBuff = bsBuffShadow; +}this.bsLive = bsLiveShadow - n; +return (bsBuffShadow >> (bsLiveShadow - n)) & ((1 << n) - 1); +}, "~N"); +Clazz.defineMethod(c$, "bsGetBit", +function(){ +var bsLiveShadow = this.bsLive; +var bsBuffShadow = this.bsBuff; +if (bsLiveShadow < 1) { +var thech = this.readByteAsInt(); +if (thech < 0) { +throw new java.io.IOException("unexpected end of stream"); +}bsBuffShadow = (bsBuffShadow << 8) | thech; +bsLiveShadow += 8; +this.bsBuff = bsBuffShadow; +}this.bsLive = bsLiveShadow - 1; +return ((bsBuffShadow >> (bsLiveShadow - 1)) & 1) != 0; +}); +Clazz.defineMethod(c$, "bsGetUByte", +function(){ +return String.fromCharCode(this.bsR(8)); +}); +Clazz.defineMethod(c$, "bsGetInt", +function(){ +return (((((this.bsR(8) << 8) | this.bsR(8)) << 8) | this.bsR(8)) << 8) | this.bsR(8); +}); +c$.hbCreateDecodeTables = Clazz.defineMethod(c$, "hbCreateDecodeTables", +function(limit, base, perm, length, minLen, maxLen, alphaSize){ +for (var i = minLen, pp = 0; i <= maxLen; i++) { +for (var j = 0; j < alphaSize; j++) { +if ((length[j]).charCodeAt(0) == i) { +perm[pp++] = j; +}} +} +for (var i = 23; --i > 0; ) { +base[i] = 0; +limit[i] = 0; +} +for (var i = 0; i < alphaSize; i++) { +base[(length[i]).charCodeAt(0) + 1]++; +} +for (var i = 1, b = base[0]; i < 23; i++) { +b += base[i]; +base[i] = b; +} +for (var i = minLen, vec = 0, b = base[i]; i <= maxLen; i++) { +var nb = base[i + 1]; +vec += nb - b; +b = nb; +limit[i] = vec - 1; +vec <<= 1; +} +for (var i = minLen + 1; i <= maxLen; i++) { +base[i] = ((limit[i - 1] + 1) << 1) - base[i]; +} +}, "~A,~A,~A,~A,~N,~N,~N"); +Clazz.defineMethod(c$, "recvDecodingTables", +function(){ +var dataShadow = this.data; +var inUse = dataShadow.inUse; +var pos = dataShadow.recvDecodingTables_pos; +var selector = dataShadow.selector; +var selectorMtf = dataShadow.selectorMtf; +var inUse16 = 0; +for (var i = 0; i < 16; i++) { +if (this.bsGetBit()) { +inUse16 |= 1 << i; +}} +for (var i = 256; --i >= 0; ) { +inUse[i] = false; +} +for (var i = 0; i < 16; i++) { +if ((inUse16 & (1 << i)) != 0) { +var i16 = i << 4; +for (var j = 0; j < 16; j++) { +if (this.bsGetBit()) { +inUse[i16 + j] = true; +}} +}} +this.makeMaps(); +var alphaSize = this.nInUse + 2; +var nGroups = this.bsR(3); +var nSelectors = this.bsR(15); +for (var i = 0; i < nSelectors; i++) { +var j = 0; +while (this.bsGetBit()) { +j++; +} +selectorMtf[i] = j; +} +for (var v = nGroups; --v >= 0; ) { +pos[v] = v; +} +for (var i = 0; i < nSelectors; i++) { +var v = selectorMtf[i] & 0xff; +var tmp = pos[v]; +while (v > 0) { +pos[v] = pos[v - 1]; +v--; +} +pos[0] = tmp; +selector[i] = tmp; +} +var len = dataShadow.temp_charArray2d; +for (var t = 0; t < nGroups; t++) { +var curr = this.bsR(5); +var len_t = len[t]; +for (var i = 0; i < alphaSize; i++) { +while (this.bsGetBit()) { +curr += this.bsGetBit() ? -1 : 1; +} +len_t[i] = String.fromCharCode(curr); +} +} +this.createHuffmanDecodingTables(alphaSize, nGroups); +}); +Clazz.defineMethod(c$, "createHuffmanDecodingTables", +function(alphaSize, nGroups){ +var dataShadow = this.data; +var len = dataShadow.temp_charArray2d; +var minLens = dataShadow.minLens; +var limit = dataShadow.limit; +var base = dataShadow.base; +var perm = dataShadow.perm; +for (var t = 0; t < nGroups; t++) { +var minLen = 32; +var maxLen = 0; +var len_t = len[t]; +for (var i = alphaSize; --i >= 0; ) { +var lent = len_t[i]; +if (lent.charCodeAt(0) > maxLen) { +maxLen = (lent).charCodeAt(0); +}if (lent.charCodeAt(0) < minLen) { +minLen = (lent).charCodeAt(0); +}} +org.apache.tools.bzip2.CBZip2InputStream.hbCreateDecodeTables(limit[t], base[t], perm[t], len[t], minLen, maxLen, alphaSize); +minLens[t] = minLen; +} +}, "~N,~N"); +Clazz.defineMethod(c$, "getAndMoveToFrontDecode", +function(){ +this.origPtr = this.bsR(24); +this.recvDecodingTables(); +var inShadow = this.$in; +var dataShadow = this.data; +var ll8 = dataShadow.ll8; +var unzftab = dataShadow.unzftab; +var selector = dataShadow.selector; +var seqToUnseq = dataShadow.seqToUnseq; +var yy = dataShadow.getAndMoveToFrontDecode_yy; +var minLens = dataShadow.minLens; +var limit = dataShadow.limit; +var base = dataShadow.base; +var perm = dataShadow.perm; +var limitLast = this.blockSize100k * 100000; +for (var i = 256; --i >= 0; ) { +yy[i] = String.fromCharCode(i); +unzftab[i] = 0; +} +var groupNo = 0; +var groupPos = 49; +var eob = this.nInUse + 1; +var nextSym = this.getAndMoveToFrontDecode0(0); +var bsBuffShadow = this.bsBuff; +var bsLiveShadow = this.bsLive; +var lastShadow = -1; +var zt = selector[groupNo] & 0xff; +var base_zt = base[zt]; +var limit_zt = limit[zt]; +var perm_zt = perm[zt]; +var minLens_zt = minLens[zt]; +while (nextSym != eob) { +if ((nextSym == 0) || (nextSym == 1)) { +var s = -1; +for (var n = 1; true; n <<= 1) { +if (nextSym == 0) { +s += n; +} else if (nextSym == 1) { +s += n << 1; +} else { +break; +}if (groupPos == 0) { +groupPos = 49; +zt = selector[++groupNo] & 0xff; +base_zt = base[zt]; +limit_zt = limit[zt]; +perm_zt = perm[zt]; +minLens_zt = minLens[zt]; +} else { +groupPos--; +}var zn = minLens_zt; +while (bsLiveShadow < zn) { +var thech = this.readByteAsInt(); +if (thech < 0) throw new java.io.IOException("unexpected end of stream"); +bsBuffShadow = (bsBuffShadow << 8) | thech; +bsLiveShadow += 8; +continue; +} +var zvec = (bsBuffShadow >> (bsLiveShadow - zn)) & ((1 << zn) - 1); +bsLiveShadow -= zn; +while (zvec > limit_zt[zn]) { +zn++; +while (bsLiveShadow < 1) { +var thech = this.readByteAsInt(); +if (thech < 0) throw new java.io.IOException("unexpected end of stream"); +bsBuffShadow = (bsBuffShadow << 8) | thech; +bsLiveShadow += 8; +continue; +} +bsLiveShadow--; +zvec = (zvec << 1) | ((bsBuffShadow >> bsLiveShadow) & 1); +} +nextSym = perm_zt[zvec - base_zt[zn]]; +} +var ch = seqToUnseq[yy[0].charCodeAt(0)]; +unzftab[ch & 0xff] += s + 1; +while (s-- >= 0) { +ll8[++lastShadow] = ch; +} +if (lastShadow >= limitLast) { +throw new java.io.IOException("block overrun"); +}} else { +if (++lastShadow >= limitLast) { +throw new java.io.IOException("block overrun"); +}var tmp = yy[nextSym - 1]; +unzftab[seqToUnseq[tmp.charCodeAt(0)] & 0xff]++; +ll8[lastShadow] = seqToUnseq[tmp.charCodeAt(0)]; +if (nextSym <= 16) { +for (var j = nextSym - 1; j > 0; ) { +yy[j] = yy[--j]; +} +} else { +System.arraycopy(yy, 0, yy, 1, nextSym - 1); +}yy[0] = tmp; +if (groupPos == 0) { +groupPos = 49; +zt = selector[++groupNo] & 0xff; +base_zt = base[zt]; +limit_zt = limit[zt]; +perm_zt = perm[zt]; +minLens_zt = minLens[zt]; +} else { +groupPos--; +}var zn = minLens_zt; +while (bsLiveShadow < zn) { +var thech = this.readByteAsInt(); +if (thech < 0) throw new java.io.IOException("unexpected end of stream"); +bsBuffShadow = (bsBuffShadow << 8) | thech; +bsLiveShadow += 8; +continue; +} +var zvec = (bsBuffShadow >> (bsLiveShadow - zn)) & ((1 << zn) - 1); +bsLiveShadow -= zn; +while (zvec > limit_zt[zn]) { +zn++; +while (bsLiveShadow < 1) { +var thech = this.readByteAsInt(); +if (thech < 0) throw new java.io.IOException("unexpected end of stream"); +bsBuffShadow = (bsBuffShadow << 8) | thech; +bsLiveShadow += 8; +continue; +} +bsLiveShadow--; +zvec = (zvec << 1) | ((bsBuffShadow >> bsLiveShadow) & 1); +} +nextSym = perm_zt[zvec - base_zt[zn]]; +}} +this.last = lastShadow; +this.bsLive = bsLiveShadow; +this.bsBuff = bsBuffShadow; +}); +Clazz.defineMethod(c$, "getAndMoveToFrontDecode0", +function(groupNo){ +var inShadow = this.$in; +var dataShadow = this.data; +var zt = dataShadow.selector[groupNo] & 0xff; +var limit_zt = dataShadow.limit[zt]; +var zn = dataShadow.minLens[zt]; +var zvec = this.bsR(zn); +var bsLiveShadow = this.bsLive; +var bsBuffShadow = this.bsBuff; +while (zvec > limit_zt[zn]) { +zn++; +while (bsLiveShadow < 1) { +var thech = this.readByteAsInt(); +if (thech < 0) throw new java.io.IOException("unexpected end of stream"); +bsBuffShadow = (bsBuffShadow << 8) | thech; +bsLiveShadow += 8; +continue; +} +bsLiveShadow--; +zvec = (zvec << 1) | ((bsBuffShadow >> bsLiveShadow) & 1); +} +this.bsLive = bsLiveShadow; +this.bsBuff = bsBuffShadow; +return dataShadow.perm[zt][zvec - dataShadow.base[zt][zn]]; +}, "~N"); +Clazz.defineMethod(c$, "setupBlock", +function(){ +if (this.data == null) { +return; +}var cftab = this.data.cftab; +var tt = this.data.initTT(this.last + 1); +var ll8 = this.data.ll8; +cftab[0] = 0; +System.arraycopy(this.data.unzftab, 0, cftab, 1, 256); +for (var i = 1, c = cftab[0]; i <= 256; i++) { +c += cftab[i]; +cftab[i] = c; +} +for (var i = 0, lastShadow = this.last; i <= lastShadow; i++) { +tt[cftab[ll8[i] & 0xff]++] = i; +} +if ((this.origPtr < 0) || (this.origPtr >= tt.length)) { +throw new java.io.IOException("stream corrupted"); +}this.su_tPos = tt[this.origPtr]; +this.su_count = 0; +this.su_i2 = 0; +this.su_ch2 = 256; +if (this.blockRandomised) { +this.su_rNToGo = 0; +this.su_rTPos = 0; +this.setupRandPartA(); +} else { +this.setupNoRandPartA(); +}}); +Clazz.defineMethod(c$, "setupRandPartA", +function(){ +if (this.su_i2 <= this.last) { +this.su_chPrev = this.su_ch2; +var su_ch2Shadow = this.data.ll8[this.su_tPos] & 0xff; +this.su_tPos = this.data.tt[this.su_tPos]; +if (this.su_rNToGo == 0) { +this.su_rNToGo = org.apache.tools.bzip2.BZip2Constants.rNums[this.su_rTPos] - 1; +if (++this.su_rTPos == 512) { +this.su_rTPos = 0; +}} else { +this.su_rNToGo--; +}this.su_ch2 = su_ch2Shadow ^= (this.su_rNToGo == 1) ? 1 : 0; +this.su_i2++; +this.currentChar = su_ch2Shadow; +this.currentState = 3; +this.crc.updateCRC(su_ch2Shadow); +} else { +this.endBlock(); +this.initBlock(); +this.setupBlock(); +}}); +Clazz.defineMethod(c$, "setupNoRandPartA", +function(){ +if (this.su_i2 <= this.last) { +this.su_chPrev = this.su_ch2; +var su_ch2Shadow = this.data.ll8[this.su_tPos] & 0xff; +this.su_ch2 = su_ch2Shadow; +this.su_tPos = this.data.tt[this.su_tPos]; +this.su_i2++; +this.currentChar = su_ch2Shadow; +this.currentState = 6; +this.crc.updateCRC(su_ch2Shadow); +} else { +this.currentState = 5; +this.endBlock(); +this.initBlock(); +this.setupBlock(); +}}); +Clazz.defineMethod(c$, "setupRandPartB", +function(){ +if (this.su_ch2 != this.su_chPrev) { +this.currentState = 2; +this.su_count = 1; +this.setupRandPartA(); +} else if (++this.su_count >= 4) { +this.su_z = String.fromCharCode(this.data.ll8[this.su_tPos] & 0xff); +this.su_tPos = this.data.tt[this.su_tPos]; +if (this.su_rNToGo == 0) { +this.su_rNToGo = org.apache.tools.bzip2.BZip2Constants.rNums[this.su_rTPos] - 1; +if (++this.su_rTPos == 512) { +this.su_rTPos = 0; +}} else { +this.su_rNToGo--; +}this.su_j2 = 0; +this.currentState = 4; +if (this.su_rNToGo == 1) { +this.su_z = String.fromCharCode((this.su_z).charCodeAt(0)^ 1); +}this.setupRandPartC(); +} else { +this.currentState = 2; +this.setupRandPartA(); +}}); +Clazz.defineMethod(c$, "setupRandPartC", +function(){ +if (this.su_j2 < (this.su_z).charCodeAt(0)) { +this.currentChar = this.su_ch2; +this.crc.updateCRC(this.su_ch2); +this.su_j2++; +} else { +this.currentState = 2; +this.su_i2++; +this.su_count = 0; +this.setupRandPartA(); +}}); +Clazz.defineMethod(c$, "setupNoRandPartB", +function(){ +if (this.su_ch2 != this.su_chPrev) { +this.su_count = 1; +this.setupNoRandPartA(); +} else if (++this.su_count >= 4) { +this.su_z = String.fromCharCode(this.data.ll8[this.su_tPos] & 0xff); +this.su_tPos = this.data.tt[this.su_tPos]; +this.su_j2 = 0; +this.setupNoRandPartC(); +} else { +this.setupNoRandPartA(); +}}); +Clazz.defineMethod(c$, "setupNoRandPartC", +function(){ +if (this.su_j2 < (this.su_z).charCodeAt(0)) { +var su_ch2Shadow = this.su_ch2; +this.currentChar = su_ch2Shadow; +this.crc.updateCRC(su_ch2Shadow); +this.su_j2++; +this.currentState = 7; +} else { +this.su_i2++; +this.su_count = 0; +this.setupNoRandPartA(); +}}); +c$.reportCRCError = Clazz.defineMethod(c$, "reportCRCError", +function(){ +System.err.println("BZip2 CRC error"); +}); +/*if3*/;(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.inUse = null; +this.seqToUnseq = null; +this.selector = null; +this.selectorMtf = null; +this.unzftab = null; +this.limit = null; +this.base = null; +this.perm = null; +this.minLens = null; +this.cftab = null; +this.getAndMoveToFrontDecode_yy = null; +this.temp_charArray2d = null; +this.recvDecodingTables_pos = null; +this.tt = null; +this.ll8 = null; +Clazz.instantialize(this, arguments);}, org.apache.tools.bzip2.CBZip2InputStream, "Data", null); +Clazz.prepareFields (c$, function(){ +this.inUse = Clazz.newBooleanArray(256, false); +this.seqToUnseq = Clazz.newByteArray (256, 0); +this.selector = Clazz.newByteArray (18002, 0); +this.selectorMtf = Clazz.newByteArray (18002, 0); +this.unzftab = Clazz.newIntArray (256, 0); +this.limit = Clazz.newIntArray (6, 258, 0); +this.base = Clazz.newIntArray (6, 258, 0); +this.perm = Clazz.newIntArray (6, 258, 0); +this.minLens = Clazz.newIntArray (6, 0); +this.cftab = Clazz.newIntArray (257, 0); +this.getAndMoveToFrontDecode_yy = Clazz.newCharArray (256, '\0'); +this.temp_charArray2d = Clazz.newCharArray (6, 258, '\0'); +this.recvDecodingTables_pos = Clazz.newByteArray (6, 0); +}); +Clazz.makeConstructor(c$, +function(blockSize100k){ +this.ll8 = Clazz.newByteArray (blockSize100k * 100000, 0); +}, "~N"); +Clazz.defineMethod(c$, "initTT", +function(length){ +var ttShadow = this.tt; +if ((ttShadow == null) || (ttShadow.length < length)) { +this.tt = ttShadow = Clazz.newIntArray (length, 0); +}return ttShadow; +}, "~N"); +/*eoif3*/})(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CBZip2InputStreamFactory.js b/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CBZip2InputStreamFactory.js new file mode 100755 index 000000000000..1d93d7effdea --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CBZip2InputStreamFactory.js @@ -0,0 +1,10 @@ +Clazz.declarePackage("org.apache.tools.bzip2"); +Clazz.load(null, "org.apache.tools.bzip2.CBZip2InputStreamFactory", ["org.apache.tools.bzip2.CBZip2InputStream"], function(){ +var c$ = Clazz.declareType(org.apache.tools.bzip2, "CBZip2InputStreamFactory", null); +Clazz.defineMethod(c$, "getStream", +function(is){ +is.read( Clazz.newByteArray (2, 0), 0, 2); +return new org.apache.tools.bzip2.CBZip2InputStream(is); +}, "java.io.InputStream"); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CRC.js b/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CRC.js new file mode 100755 index 000000000000..72467fc5935e --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/org/apache/tools/bzip2/CRC.js @@ -0,0 +1,44 @@ +Clazz.declarePackage("org.apache.tools.bzip2"); +(function(){ +var c$ = Clazz.decorateAsClass(function(){ +this.globalCrc = 0; +Clazz.instantialize(this, arguments);}, org.apache.tools.bzip2, "CRC", null); +Clazz.makeConstructor(c$, +function(){ +this.initialiseCRC(); +}); +Clazz.defineMethod(c$, "initialiseCRC", +function(){ +this.globalCrc = 0xffffffff; +}); +Clazz.defineMethod(c$, "getFinalCRC", +function(){ +return ~this.globalCrc; +}); +Clazz.defineMethod(c$, "getGlobalCRC", +function(){ +return this.globalCrc; +}); +Clazz.defineMethod(c$, "setGlobalCRC", +function(newCrc){ +this.globalCrc = newCrc; +}, "~N"); +Clazz.defineMethod(c$, "updateCRC", +function(inCh){ +var temp = (this.globalCrc >> 24) ^ inCh; +if (temp < 0) { +temp = 256 + temp; +}this.globalCrc = (this.globalCrc << 8) ^ org.apache.tools.bzip2.CRC.crc32Table[temp]; +}, "~N"); +Clazz.defineMethod(c$, "updateCRC", +function(inCh, repeat){ +var globalCrcShadow = this.globalCrc; +while (repeat-- > 0) { +var temp = (globalCrcShadow >> 24) ^ inCh; +globalCrcShadow = (globalCrcShadow << 8) ^ org.apache.tools.bzip2.CRC.crc32Table[(temp >= 0) ? temp : (temp + 256)]; +} +this.globalCrc = globalCrcShadow; +}, "~N,~N"); +c$.crc32Table = Clazz.newIntArray(-1, [0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4]); +})(); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/j2s/org/qcschema/QCSchemaUnits.js b/config/plugins/visualizations/jmol/static/j2s/org/qcschema/QCSchemaUnits.js new file mode 100755 index 000000000000..c442a47a5206 --- /dev/null +++ b/config/plugins/visualizations/jmol/static/j2s/org/qcschema/QCSchemaUnits.js @@ -0,0 +1,169 @@ +Clazz.declarePackage("org.qcschema"); +Clazz.load(["java.util.Hashtable", "JV.Viewer"], "org.qcschema.QCSchemaUnits", null, function(){ +var c$ = Clazz.declareType(org.qcschema, "QCSchemaUnits", null); +c$.getFactorToAU = Clazz.defineMethod(c$, "getFactorToAU", +function(units){ +switch ("cm cm^-1 cm-1 angstroms au atomic units fractional bohrs hartrees ev kj_mol kcal_mol".indexOf(units.toLowerCase())) { +case 0: +return 1.8897261254578283E8; +case 1: +return 1.889726125457828E10; +case 3: +case 9: +return 4.55633590401805E-6; +case 14: +return 1.8897261254578281; +case 24: +case 27: +return 1; +case 40: +return 0; +case 51: +return 1.0; +case 57: +return 1.0; +case 66: +return 0.0367498438131638; +case 69: +return 0.0015936254980079682; +case 76: +return 3.7943464238284955E-4; +default: +return NaN; +} +}, "~S"); +c$.getUnitConversion = Clazz.defineMethod(c$, "getUnitConversion", +function(fromUnits, toUnits){ +if (fromUnits.equalsIgnoreCase(toUnits)) return 1; +var key = "" + fromUnits + toUnits; +var d = org.qcschema.QCSchemaUnits.htConvert.get(key); +if (d != null) return d.doubleValue(); +var val = NaN; +try { +var toAUDesired = org.qcschema.QCSchemaUnits.getFactorToAU(toUnits); +var toAUActual = org.qcschema.QCSchemaUnits.getFactorToAU(fromUnits); +val = toAUActual / toAUDesired; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +org.qcschema.QCSchemaUnits.htConvert.put(key, Double.$valueOf(val)); +return val; +}, "~S,~S"); +c$.getConversionFactorTo = Clazz.defineMethod(c$, "getConversionFactorTo", +function(unitsFactor, unitsDesired){ +try { +var toAUDesired = org.qcschema.QCSchemaUnits.getFactorToAU(unitsDesired); +var toAUActual = org.qcschema.QCSchemaUnits.getFactorToAU(unitsFactor == null ? "au" : unitsFactor.get(0).toString()); +if (Double.isNaN(toAUActual)) toAUActual = Double.parseDouble(unitsFactor.get(1).toString()); +return toAUActual / toAUDesired; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +return NaN; +} else { +throw e; +} +} +}, "java.util.ArrayList,~S"); +c$.convertValue = Clazz.defineMethod(c$, "convertValue", +function(valueUnits, toUnits){ +return org.qcschema.QCSchemaUnits.getDouble(valueUnits, "value", null) * org.qcschema.QCSchemaUnits.getConversionFactor(valueUnits, "units", toUnits); +}, "java.util.Map,~S"); +c$.getUnitsJSON = Clazz.defineMethod(c$, "getUnitsJSON", +function(name, asArray){ +var d = org.qcschema.QCSchemaUnits.getFactorToAU(name); +var toAU = (!Double.isNaN(d) ? "" + d : asArray ? "?" : "\"?\""); +return (asArray ? Clazz.newArray(-1, [name, toAU]) : "[\"" + name + "\"," + toAU + "]"); +}, "~S,~B"); +c$.getConversionFactor = Clazz.defineMethod(c$, "getConversionFactor", +function(map, key, toUnits){ +var list = org.qcschema.QCSchemaUnits.getList(map, key + "_units"); +var units = (list == null ? null : list.get(0).toString()); +var f = org.qcschema.QCSchemaUnits.getConversionFactorTo(list, toUnits); +if (Double.isNaN(f)) { +System.out.println("units for " + units + "? " + units); +f = 1; +}return f; +}, "java.util.Map,~S,~S"); +c$.getDouble = Clazz.defineMethod(c$, "getDouble", +function(map, key, toUnits){ +var o = map.get(key); +var conv = 1; +if (toUnits != null) if (Clazz.instanceOf(o,"java.util.Map")) { +return org.qcschema.QCSchemaUnits.convertValue(o, toUnits); +} else if (map.containsKey(key + "_units")) { +conv = org.qcschema.QCSchemaUnits.getConversionFactor(map, key, toUnits); +}return (o == null ? NaN : (o).doubleValue() * conv); +}, "java.util.Map,~S,~S"); +c$.getList = Clazz.defineMethod(c$, "getList", +function(mapOrList, key){ +var list = (key == null ? mapOrList : (mapOrList).get(key)); +if (list == null) return null; +var n = list.size(); +if (n == 0 || !"_RLE_".equals(list.get(0))) return list; +var list1 = org.qcschema.QCSchemaUnits.newList(); +for (var i = 1; i < n; i++) { +var count = (list.get(i)).intValue(); +var value = list.get(++i); +for (var j = 0; j < count; j++) { +list1.addLast(value); +} +} +return list1; +}, "~O,~S"); +c$.newList = Clazz.defineMethod(c$, "newList", +function(){ +return new JU .Lst(); +}); +c$.getDoubleArray = Clazz.defineMethod(c$, "getDoubleArray", +function(mapOrList, key){ +var list = org.qcschema.QCSchemaUnits.getList(mapOrList, key); +if (list == null) return null; +var a = Clazz.newDoubleArray (list.size(), 0); +for (var i = a.length; --i >= 0; ) { +try { +a[i] = (list.get(i)).doubleValue(); +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +a[i] = NaN; +} else { +throw e; +} +} +} +return a; +}, "~O,~S"); +c$.getIntArray = Clazz.defineMethod(c$, "getIntArray", +function(mapOrList, key){ +var list = org.qcschema.QCSchemaUnits.getList(mapOrList, key); +if (list != null) { +try { +var a = Clazz.newIntArray (list.size(), 0); +for (var i = a.length; --i >= 0; ) a[i] = (list.get(i)).intValue(); + +return a; +} catch (e) { +if (Clazz.exceptionOf(e, Exception)){ +} else { +throw e; +} +} +}return null; +}, "~O,~S"); +c$.getStringArray = Clazz.defineMethod(c$, "getStringArray", +function(mapOrList, key){ +var list = org.qcschema.QCSchemaUnits.getList(mapOrList, key); +if (list == null) return null; +var a = new Array(list.size()); +for (var i = a.length; --i >= 0; ) { +var o = list.get(i); +a[i] = (o == null ? null : list.get(i).toString()); +} +return a; +}, "~O,~S"); +c$.version = "QCJSON 0-0-0.Jmol_" + JV.Viewer.getJmolVersion().$replace(' ', '_'); +c$.htConvert = new java.util.Hashtable(); +}); +;//5.0.1-v2 Fri Jun 07 15:32:46 BST 2024 diff --git a/config/plugins/visualizations/jmol/static/logo.png b/config/plugins/visualizations/jmol/static/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..5162079082b42c51e8ea3dbaec088dde598ed116 GIT binary patch literal 32833 zcmXt91yEaEw+&JV6sNemQ{0`PMT!*n;_hz6iaV6x?g5IsyE_zj*8;`i<$E)K=0+#E zlY6$TwfEX5;;WJjDl#E5002OhlLe^)05GJ`*Y-dJ=;L*!ZvpfP-bF%A9SFVo0!_oA z?~xp3wOyd!U;6J3BSD|x3H^}3RZ7cM&B5H&!`Rsj;NjuHYGrTZ^4-|cjMc%}BI81c z5C9+t$brPwJu}ZbynOX6ym)-qr?kzNOtfoRR)6nOE186fVR2CWz@XEDmsqy3{E|oX zRcB*XRp%+?FJ)PBk#7-=gVkoD>WYMw6+8{I;fg7&6P83c7Tu42%E=u*gFUI!N(-Ot z!?!m+7ipQl(bPk!YZ9OZ9F#-6i>pMu+5|K*JK>>j+0b1^E1{MKm=XnkhFMnMbmb0Q2iSY2-n`lS zq3P_fZu*KOpgE>{D(zASKgq1XykKfQKxaSYb0hMWGU>+G}M?B>_ST3NU~bF&>Z$ zcp=66YbfGY;$b5GO2ren3ea0I8MgcVyBguD>}eU~cQaKMu-9w8C;3X%0q8^);{tn# z24(>p>fG+^&;gz#cz^fJUYO``N+J%qln77oG?)|*CH02i?fmqx@&x~W!uz{XCeW1> za-Yk6yfzy8A}Q8~`s@H0Y-c}&YsSwj;vmbB!hg+(TL-Yl0K=YScwkDMDFXH$l;7vK z{#&z=exs=K?*RMgY)6VqSbSj|I#=YYZQNCTz`NkT7e&5QSIXrZ-gzpmu33|p!(9zj zyuUuFj@eTTO4w5_C?{mcuv?B4hBns%FqVj4cO(p&@V_q%jc103k3<0O;xa?OD%gbu z>`91dnZBb0HUQAFfSP$#++J>pf?%yx(^b|GTm!u(>lCG27@>L7XP+6pr364Hrf``I z`s-mvnh;sZjb}F8*Y{!E5ZcF8%o8%?yp8Lw=Jvhc#v zfISXC0Q^=1Q1MC*@D8(utv9U9x-BFCV~coY9#So)$g#rF`B8TPx(!dND z-`J0jh#ArE!hlP}Y1A!IXkdt)H5f`;PTW%ZR85Na6Jg=%#Cl?`j(nnc{z= z!&JVt5f^kn!w?o0&WAuIWT~;jcKI|g;8X2Zi<4((b#%jw(^Tapcv+j^%QZ?!`}+OpFd4sc*V%zH~1!!)R8N^d`d@npjL`;J5Ojt7ho ziQU|ic*{AlpZv~(cE=vFGPVy4kljEtl1y^S0X_Wr_j&*2&=>=9JN^gn-Q z-TQK9Hvzgb6vI#P`2+jY=c74GdFT}fbDV2nXk9zr6R9Z%)}q^((1l#zJA71$xIhMv z9hSbne%PUx25r*sG=8uwbs{!4c0g(JligUY(JD_GfsPG5j(?Z_Qs|*q>4G)=uQ4{1 zT~Q5)&fRBmjQO;d11|$bn{!zP5`aOO`rnF$@>@ScH+T1w?IG6QD}A*lSkDQDm##~w zebV_IK<~q+7_Ed62W|BroV*k)4~A3;+=(lG*1dN=o+&)Q%ZAh0=2Ym*ImDpwErAnL z2gW9qZ3z_`F8=!O;KAR7@;G?|^$6V?xGtVrE6PchqUuH#AVB z$a6O~G&C6RkEXCG-emdwJ8LoX_V&(L^u`HHkuOs+w|CL!O_DE4WYVatv0ddUE-4vk zy2yUP$<&#J3A{OI$9tvH{O(l<2N2Dc5s=g(JqBz`eVVutCnh@vT|`4P2ZW@2jCJYa!vb>m9^x3xS81%L7o4v) z&24n}#MtuK$T1`VX6NSS`oIbYvmi>C)kb4{1eCtOWGoPT(Wf*52_TTd2w!?vq!w#z z|L;&qNl90i`}s-$j>I^95pxKI>R+L_`o$VMB7pug@yj!+6ZlC+1Lnblt4sDD>;p&d z=ljo%X{S}odP|h9)#=-4A$$J}0H3Yc4|<-2@L(UtaK9JNtSFY(FQc81$&puj8#1n7 zylr;1cc%$S7KaLop#Fu>~K*jZ0#P=8N zi-6v16IxOUeOZGh`>dIb4SNLfc)*%#*&h0#bITV_Fp9z)h%y0yDQ<&0R-2m~WVZ?o z`V;<{v#-$(12c$Ri~}5!j8%1N@ZOKDoau1@w(w5`vruvfO;G`4i&SmXX|bC*E)luK z@NxLT;iv3|k~g0n2=Y$}da`r~ih%{w?3VA?)YRvXT;+d28;u8=(xa+V1ZDwyS`jl|WXQ znKm@<8kysV{bxpPT!pz14A_JN>~)z{>cthJQ<;8+7_ZuM+I=8dAQuDZ~@=V zDQielk?P1K&3+R=VP4q=Q6j;MoonI`_$T;-fe$_aidc4*EY|+bN&*>}VKus0Lz7Rt z%5Z!IBlu+9Z72DcmvGC=Cz;Lhhu(`9DJ+A{K$c>2{J!3cQG;>6&1~^B)+@gd(@hjI znVTcy5Y0TdosFU9`2WaO28J|5$JpZRn&xA)Pwq%#=%9=iz4Zb!-4Xv#REj6i4X*+M zv8*)A;Z7Pc&DUbKw{vjl;sPsBrpWg++5suz6=;cAaWH$hCJ;t2Fheld6zjz0!;Hxj zWV>sbwNgU`BJ9%B(wg-c8dPo8t?;Fl7*aIkY2J38^hLeyv^ftgnBUubG+&o&riIoB zhqwZDaS2>L8S92%PwHSl2i9iw=hRj#&cn{>}jl_{>5yR)|{Sb4pLul$(|zem`7bdXEh2d<&~x zC=A1e4e7B6=(0nZ)3OvBS)_$zF#hpchnk!I%iJB17XpM?xw@(+%bySK6*k&5=*TnN zEy&Kn0Q%UB(ziX@t0aTN3GFp+m)Uy9-6_mBt7I=DhM5v%jcjetIzaV_V8ImCa{z}# zI5prj3s2BRE&Pt&ND!CBkiiZm8vyRiSiA}LuRkffv}ysO%8Ew0()dawfRIT#F% z1Et4WrK5`TuLTqGl2fPf@k?#r4bw!0m>X$4M;v5A?FQ^drnFwtv4EjgoU2!ycD!smaiN^orp7Vkf(XjHB13O{NlT{|7^6M0{~LJ?M*8>KC>9*i<_&SH&^X zpy(*ANQ?LMfr&!FPZZC1)_{`_;NNAi>t-IsE_g~XOQy4>#SPf(-`U=hJ0WX9g=BaN zht*W>D&v7m!oC*19#HO5vIV}wJ8HiYcS^rfeZ)LA;Zxz(G2E4S+uR|7dMaG6fxtvf z(vu7V46y`#r3W(`E0pLv6uc#PsJ(|rghH~g0!2$j?WKg000z)A#KG{Xe@5~$*n-*) zz^0%q@>mFk>9E5;w48KlkBP(b5fb}4Qz!A)pwZzc;{ybCsqee?TBhva;y*QEzMF=9 z<8}aNQ1XmUNgBUO#R4;=;cGhXlN;fl#2Xv#BFtOj$HxvWzKnm)fPf#NR2I-n)4>M3 zaN|xk>j&4!Ix)nQyjv=E$31%L}!uiRAb2{7LVro zY`yO2G@fLug48$W-GwoR6qh82UE zDuWqalH6RQo#b^8!^OK^mtnYPr*4-ay;PUB->fh5-o?Q0w1-x-FJDk)zhB?R^Z`R> z82|xsHLP}>(hKEF6DC^Go@lIpy#ZUlbk#>iSEpcs+-;s0a|@Ovk8tL2a2eC-x2tST zchVPplZS;nUQ$AL3cDX1Fm=vFxwt?rda<^vv`cO=OY?I4BjPcUdq?k!{Y5%i z`}zUkuMyC$WjFm1(}H4rJ0iV+x3AM|vg2#;Z$jLu+&6e=f!W}BZt9DRrek4s8E2)C zp%ZNtHk4thHieX}wiAIpF+Ck`WKKv*iVNtEB@v8%$XV_znD?sBNmYo9@U~XhY zp1E4f%%LbF%YaIWg{cy<+nkWaTm-^^j~T*DfENca>=R2w{`+q3nT=TVDTv&%*|4sP z2&{8jxG0e4X7q&tq60DC5b{2dvV^RID9Q60j^ET+_g{p#U?4;>9{@ef7&mm=xY zkYoxe)ds#+4-tZWJM}UV&HShIi`Fr&C!!)Dv@lPO?4`ddN7N))J8+N0>h4iwa6@^gH z)lI8Sf|Ho60D6HN(w9t6+_NNg8O-i~US2X^BpwPxe7vMY`;7Pa`k|SNH~Z_u&%-v1 zn=3sG^nnYj!^y1tjt+h5BspkU9335DNB~t>e}x+3!voIG&%eq$F{bROGZv|pB};qu zSOT8PE2?Ju`uf`ap4~}FNsBu>MHG~k)qH#e!Nqd&43WbWKv*CJc~J;7%LiTib!|IK zsW5HcA2#dGyd}6{YfH^^CKMGm&=w{4j7!+qvDLAm1lvlI8sxrCWZgX%00Xkp{dfdT z;vB@a+Lz@kJBYd+$X~D=Y}pU!dj*Q_fUBZh!645bA%mQX1&;%R5Ibu7(oNnzaljH3 zso3t~WJ8$Pna$lcQMY#WhClBI=>sR8(BohpXju2S@8T55ZF{*lIi65i_l9u6&#S;W zB%NdPCcuLf>)zPB=-(Vm{rtSsn-_kauAkj!9v}3EMWINrDY;xwMv#qgg}}NO(An*a z$`yXliny4r`Y-Y=;oJEAT~H}v^#_Gq6bZSlyCkIT%cnlg;SNbj!5SQ~`&6ev_uT4g zdlhCe3A%Qc!OB&a@qR@lx}*{OR5OAGorzn&O)kZ`E5FUsHdzp;-%Xam4Fi7kMrfZe z*2KK5A+^!2;`-WYeSIAQW3(0_xg--%?;!m4T;}p7&Dp{8uao%0m4(W#ORmc6tIBx#j9EzjY01I2h@4P1 zYs~!@`VcqqceE`gy7Ak+HA)3WnZM(7cS+-_`Qb!< zhV{fV*Ds@#7(2az0=OF4Qp8uWSiBA;$``bkyY}xTC*L=twJF~jdhcJNAcVaW;N6p~ z^P2gF{^smH-%9g!w2VA@V3P;U1Ga-_OC25WagB#~+=a0EfqvUyOSMBXA|hfMfy;xD zcE1{3@Ze2e9tB}|e~K4AAt5XP1qH>((=)BLt&QR2O%tM_Sd^S1Uj#+NiE;P6{ABr} zG3S=GU{!fo0Hi@fzKk459ViA}e$8O=8eax846Nxi=ge=J@hk%yFnP)nl5;KOFwQkm(4YeW=DPR6X+qozzqw`UU~2djX%mPEE7JvEebF`; zo-cVzsKX3v2$&3g0Y$M}P}-)bz_ZPoJSM~UvUR{;eT|9@M(8~n69D)$$2+VPc5Jxc z5(8wQjj!52Y0Jw7A=@t4#=}n$1Ku2;5$~ejz5)Is)= zNW9L8KjgCE<5rIbt7%92y41t&+-(~cQ5&+cXydjeT5M?_@*=^OjY6PPB+RsVemZFJvRh5H|I&bm`3e^QAm zgM7(czB(hc|G@NX><<7dc2`ddRE-j}1?NNwP3Gblp!Crtn}+m@i;K6&#T6<_ULfp} zoBl7bJ|O$h>j#F!pMP9#ZV+}g22Pryg-KiYxVT@P$s?vsrgeX$6D*Q{e%D?k-sW>I zphT6CN1D1Jd{UanA9o_=iw$;eiB>HOQ7wa?O(y4=_kP1g^1b z6DQM>ta|0wB`ze6(S7gNT=j9t2?HKRZz)t2xkb-ihvE1qF8CH4EG948 z$My-3HDT^`IEm%$lhIlLZSm9LxK$k8knjHb?dlXDXGDI#HMf|t;n?}|S@cRzFw3=` zDs;2$51jke)|Ljz9l2q=rwQu7*frbK<6iEQZ0i|_y*g7_gI(4d%&_st1 zFgG`c=gbH*Uhcd!gvR6>zX1*D6f;6^YJrMN)sfpAmkKlPyRC_d$$dJv&0EuAD^OM! zXsp3lWrg2K1fN>DAm7_qQ4A%-@m$PIcUmpPiHe^VI22uCD{$~qsVMkKP2yySoHE1O z_FGxY7p&(q2(q&5l;sILb(oZGjycD2S&10tDo;#ib~iQ*Nb&Lc6a`A0~HY_H2*fZ1s5*7;k?D38BtLXqag=Sf@ZOqzGwfF&RMS z1i~@_VUxngq1J>KCl3!7nu6o3J8i8@p1s2%Y*tdzVEyG|Mw|5bQ;&5C!xM(s4}D1RJcOl{jItIebl zO(4WYB&2UTfOvoRG-{{agYHe52{JOuttgF~Md z$t|)LI5Sh?zB;JZ2Q)ay%r`2I~&m8E>DY@=NxZAvEjlVWy7QQ@uh=VEp?$E=U7@+on2GRZPj<{bF8Ha`O=C-}Xh<T_`5J&ZGyE$|tQ^Pzo1CsXpC5|VTtLbEhtulSjNqm9MDC6R}+#xtEH zmpe~Iz5+*MT{WqMGbqC5m%GSoQPtUbPAu*Cqvr>Vfi>x%RlB3u>-{UgSQO5+h)t#J z@z2dS)yvCny}8^(n%iX4@A8)EWh*J=aj5oWjl(_STr}CmsI$UTb=VQ0UZ+g;GW91Q z=ezrS5<)jIyB5O&@H6L)Vufb)8!rQm4a909otw9*scCme^o{-BGE7B&jK}YN}^t z75t)2N(wO3h984P2_}a(Ha8dkciDvyTi1fA6lbqupxn+(S?f*->#C0j4NUtxcmRF| z?-X&o^PN9KaG&_rrN!cN1KK~tA0qvgbZKSy@FR>W6Ppbcn)ZKSg#}uR_6JC?pwJtN zr1KG@7hN<}JEeXdV$_MSrAdk6!FyV+X&f$tzeDlC$CQKbebIrsQ(&QGaC<}2Y@@-9 z>ANSspI<@yGQ09_D9lNh10c62$uF~T1bfNu`n`&&taw-qCq1&?8yOk9lR)9O*)Nx* zSeFM!DKvD4C6{ozSy#$gZD?2?w^pT0m}8G;rl+Srm6~ajWo~kC)uK@TjaZA9FPhcD zq6I5#0Jd67vb|3-Wo=_u)Id-2YwHmQ(Zh6DKAI4n&@Zel@X*F^sjiS(T4p9lQ`2Oa zEmLle8J80bUI{}LM6lI0h*!X3jxt(>r}(<$3ZMY$a26Ny7h>0spqJHnmZ;`$-JhtIh9E-${i1vY5m)q#@Bymh7V)4 zJ_kgd!XL+xkI!gNM#!Sx3}KaJWEb+HZEARb@oE@9G55kRK{^UWT=|!DPJT_s*F*W& zcbRsoeY<^&td-L_QmhkUiJXlpIengOP;P`l)GXDRX_5curT>xEPETdHt*e_GfvS8) zcp|hDB+SX_q9%~l$z`33gH)HG`{{FGG^;uT&FDS{V+wNQ040>!20^2ocy8u1sbZvN z@X$wYsxd0cCLAV>t(TiA84hs&{QM`qre>FYc`q9dZPsib`|S=pyEp#4B1twB@&t1F z4{5YNEE`e7FyI*obbf+U#k<)i9Cb0++%G#T-$WVIiF>;z90tDs#It^Im)N3He4A_P zGC7e}VNb4bCOkhcN0;HQ`Q|V;_!;ANXvUl7r&(Y*)`&yQ=}qUAY=7WCk{ocbmXV36s$%^j5B?-!3Jn=vmlnP6-@+aQ)DrNC6M`?F$@9a2 zL{^m0Iwp44$lM&ENEHd{CE$W0P_O;k30PSyp#i%^M5R#|C-+k>T zW0HrBjQ&f#S*f^pmLJMG^sczn9ye}FufxwB`m-3>Wr>|ih&|F`*|a%_q9=Do6RD>5 z9q8hAM_)w+0#cr|l{KcCMRa8%P-HWK;dEDeHP$Pj!pcKQ} zVsu0m!^BW4yi2APMrHbDZxej;b>!m({&G2Bd}KE-OVA_oTZIMz6!D6!Xrl&pWYo&$ zi&SpuD6?gkV9eVtKZpb7xQHUWX1+ta56{$CNYDc+M}3MK;O~f~3W{)uYRU*FC!Ong&G3gsuje zXC7#v2WU5}Cv@|;C=vNBfQ)kCw_An4mIMw%kbYofv9O|o1f z7~g1Mx-+a4(+Rvx&+eoho;#}3+*%wAcci}F=I-P=F+q|2@1HxA{7gVAq1F4>LX4f@ z5z|_6Y86<+J?nw>!eOjPfoG|H%!aHhq3Q(sH2I>hkT5^Up~q#E$3s*sCLLkbJug~N zZi1KZ0hra`zSRlp4`!i-NwOgzDv&GLK9ZH?1ki;%%#y4T!}Ot%Jpe9I<(BZlPiccHVh z{c=rjz=~P>T}nDy+bd8Xu5fTT4Vo%w*`dZwP`ULsmD6_`c$1zVtp&`X$n|mc*%cFD z#sgHaB(%tDVJtDg0Ql%M77EZqz^mm_%fq0)Ch_H=r-b7H@@sI^M77@U2>WNrz?|SP zyZI4n4SZOVpmCnKGC(;(z% zKwyQoCbvt3oI>#3CzvE7VJQW*@ib#d6aYtC4HK5LKh1c@DtO#VmXX6JCFE2P{Ec9f z)JM;5K!YR>!p)pLGou324VAc3F(}1BT_li9z&K4L-%iM7bZN?xS27!!gpn6cWg z5RJo-`5)RJ=|z-<3i#9MoI6-MZV7Bx)PsyeSX0fA*rr-l@&>=d)b!}VC7@Cwng0m) z2xU7tjA+dz###{F@V>kD4WmP`S-lf>Si60|#@iwakli{gd6hJv}N1_cbqBVx+ zp=nRddj;*3t~HoxO+Cgd?ea@?toU7d-s^&A3hd;neuPqnq<+Nyh6<_B$wdyUh=7|I zm%y+Jqaatnw-vLdfUi@fG=i)8nqQvA7&iS))m@Rs#(?|#*v7_vMGp)c`nb*r>W*B= z9JD>Am1;)H@4VM{eqJZsd00(_lQ8A`g{HhLvI(Etq!_eUuHx4)Y57`iF5$veVvHZN z0%;z=(H6!tY)5Rgn`a>^Crdi1QZGGcvjH@;rhEs~5cPxhByHFa(*S+H5Z+FIs8yfZ z9)0yN^vU)(O}YJJ$hP&lzWzdPfI`nVIeba`8x$m~*A#;e< zX|fYw^*OZ67CGsh$?D#VhY_;qB7lIB_wQIU297ZgjAaB4luJd$kLCUD+Q@Vw$zvVo zoF0%(=DB%&VML@S5YXV8p2jVfh(wC{OUEOLB2p?Z<)GDwqqNIj?~Or3h6H z6bbC*Q2+X|5IpUV8GDH*2>aZgnc3+VM;d!9;KUVfVQnq{Unh1RX8eTH36oz*z$qyF zXWQ-`R+E4J`HanVf6rrho8!z)cv`+4oZ2thw#R-k< ztYq|PL|W`f)_o>a51eaE)=E&Ye`BBoi^F12ijfC0XGThXFB&Rq!XuAF9z9URvg!2^ zBAB}IdC9JSG;zt6&ujnl2tq7b<|mnYms`D<3dYs5fH1VqzJwSplBp0Lr4x1s=^!9mp#mB{4ZCvmlFQUsVSEjW3qhMz&CsIIR1hey7*peO^-}vn*Gn8V z#D+o$zjJ6%c#9a!&kgxSSOuKCyvcf(8Rn_ zhx@}E*Gb;ZANcO8aw<#6N$S@l5lk9P9bvTIjUgleEC_ZS2e{4U>>C1T?DB?h%hryo zUi)YL@OQ7iq!G0$b7^rwh0#$3{EcSbLEkcV`N7^iaMUij7Hy^5X+W;Q)fP7I5@ zr;@s8{``q^)4R#ZZX>X1dgTBR$l={b+DF_b3o8~s0Js`XFn#)6_ABf1((m|B{duQ5 z>|hM<)ptDm>zrXTZV!h)qstmf-Du<7>d$)J zMsjz~{gBjO1{gN03)sX4@{vH8Wk+x_)o^LAYC}j#rfTk5EOOzkGvP15zNC+(8_Spd zs!yRys?8XXI8*`7e^equ>t$`N(w>fvr^JdDB7~Yr#`t?)*qYU_;fF!bZ?yfv)uF=aT&D)4v2Hk0~46 z0Gohro)aMi`#2uopYB%}SC}d$#OZs0p9@19CZ5iHOvO6uaiP>+eKteHy}NcrY!O3p zj!o*z*Rq81@b^p3+X$ZF?9w?*fw%3MxBn2^?G`y9o+=2x{``$e`~`;k+MM3hwcs1D z2SV_05JT0bK=m5hcb9^9tglwE#@`s$gpPjN*>i53q8H74#4Wl4?0X}z^}h50 z7~s5Bsd%y>sZ$>dUdmm{5;kvV9d)vJ6!o-#T9%g7&y; z%z9YuI#@nd?EZ>nRHG5Pl0r0jcm(s(_LE{%20Pz+M! z;=wJud8Row!`g158R1i?*qhy=?GAqK$oU!3-Cpx?V^|M5f#jiNlf|uA_ubn1q@Yaw zWQhZeqFVMzVa_&WzM#L`)5$`pfR8ex)RdAjBm8Muoe>9mB#)UD&RJ0>jY#|bI&F2~ zNZq~o^Aa@UGDR{#^Xp8SmMUIhkTXSc_IIWBUnG5&50r3up-HgQ5jEj$*xREmK0Uq| zs*79C#<+FK@MQ|><+#@N$O}4zDLM!#)>r{AcTKy$fA1<&Hil@B`R)(jH%xxwo;8Cc zev@j1Ya~YPTW9ru3??8JKJ+|zad-_SLc94w2aHGg7ZCz?Kq$tIELk9uA>nXn_@tGJ zW~Xo4*>;!XZ-wr#`mv|sy0*td)XpKRGQtL&q0vqTM|mdFrq=c9rfd1GP+S^a4k^c9 zTCUZC)n6bw@hbg|wx}_qM@1 ziuG`Ekn%=Xy}~?%ZHGjYlRcB&WT>p{!6W>6h379WMyFrbhX~zOBO9WU_tAY zGK5{ce|I!KX;$)gg`mF8XD=AXl5BkmWXlVxF!WUUKl6M_Wr$lrkwrUz z%b!j6-mG%rfWXc68;nh(ctdqH_Q3nW1&4)Ewb+U*v79Pq6l4^ew0BKl z`|@Vu!ms7z`ngI3Skvj@u#j4=_#lC79%?!9|-l;8Yy>atuEq8#vbt+0@(Pm z&%MS08)HaD(scQFQPpqu=E)LMg@bf!U;;77;{H+5zhz|lBGX;#EV7d18;CTX&IOZ* z@)v2vLedj9EN7m1e~uG6^m8rnXW&Qa8hbnUSzM8B1nSQ5(b1MVP{dRzo z@2J~MhVhgixCjIIU{1DO-tZHH6|VuW8gx zy!Vs#Sccqrg)rE2B+~5*E!hbf#R=IXM#vp!2otxE4cqsL9)jJ2OQCFU7D;m!<)ZR3 z9v@AoHA13QE89&G=HAo5p6*0ggqxYHh3B4e&{q_i4B3YHE@)Ltu0k)Cp0OfW2225*V6pWDwUn>iVWxF^zt<7jC)@HYl*qG$|E(*o&H zdFonoWFxhd5ymqN5?zi@{w;O5Z#A)X?vcxVaDqL1+uVc536Z~I;h505G_JOA>^ZtQc;W)DJ ziDu-vezGLMDV2!Ekdt#3-pVZO$1WIXKS6$^(awgUh?4TyYXd5Ro(IXU-3g&bfJ~J5 zCH1t-5BO7+Kp<#msq>O|c+`nFtr#liu|Z{WsD1}cYYx{hLb*pynbExx^V&;{SZR_R z`OKE>q_Iaa;K`$zbM8(fHR8)tegkv=ySiWm#)SuPo$c1ZnVRe9>? z!VmCX@x6S@e+(;EcHqanfnm!|=L$H^H+b~gG*L^FGbz$`E5a`*c!~8m>%F>i7dE_v zPQ{A=ns%vqlq{sZZ^OO%`1O0*1d^;N8HULh#7{5+CF462my8JdZIJmo&aGj|6~`li zd12)IU*W-H;_`L6mn(PEa$h(tF{V2Go;~M^70cBb8OCaTDf+u`qXwp6EyG7=YP(df z&DSI%C=G8Qnc=RKrz39qg{o!JKJ%UrLag*dOmn+K5&Z|`KnNCuL7LcDo%)P5TsmCX zc_1V=>?3aC!r7@r2sJhZVF{OHg|{gx3`$;&4^)_I_}Irm?NJid8HN-L3jxDXx`WHg zzqN2Eo(|7R0ZqUsG{vICp zuT`gSLOP|aI-^Az6%!N*&?I8{52tHjNIGVvV&O!{<9NAKa3T?hiX*bJ+L6qDt#Gf^ z4J%R3@^{FpZ@|C1(iTnA8CimjG?gXyW)Trzg zc@EOol-2&=^!Nt1xZ;!3DB_$icNiKZrV^*R#z3(OmWmx#AnH`0_D01%!fbQ5v)bcS zc^}3h-$ms6P>5~3g6Y7o$G#{DKG*T#r;;n<8s&k*W3lM`mrVNcjwBC1o=`rBFL3^c zX{rsD&9}p}zV2zHDVxY?a?&BE67Yt>i^ig8%727LSbhy2gwOulq;nojZ2G({&X-`P&jwxXOE^QqDdYprN#d5D6wL z_na%QLPU~Ndn=Me^lqa?PxE#nZU-->kXzGY>a-JV#t*6TN92LdzW7zj{)!y^*i-)` z&kKdCeJZXmln?t8&}cbh7!w^6Q)4oRKeh3p%2Fk{@h4OgGiRJ^v!7z8zgr}t0oaU) z%Lz|`!-Qc8FlF_)O0{8Vbz01XyMF5-JrwzN_g%2vcEDeJB4*Rk{jZ2;O~Gz$SgkDa zjGX%_VFY-r7M&>sBE!sS+%}dFF=@cW4-;8qqH^_>p^gqSQlW@_HYoHTAJ2@Ks(xd{ zIezXueD0(wVz#LJGX=_mD@dWr|Aw2dYdX>I;zr3-ssrK4mSNQpa>iNTk#Ht;*>#~C{^wgq}xxQ&ptpNwziXzbtijR}kL=DK0y z{MLcdMw*;dkNJ|y8Aq{IWj~iR9w}Z3PmW3f3q))0){NB8%5ZIVaDA3TDv*Ju^F@fR z8|yDM=;}ZPbwl}MHWw**?X#n!hY|k6%$q#bvfFX!v}AE{@qsD1Ooc4Se&P1kbytHi zC4R(|@YUrYYIY)0YS;8ri_!JQq_K8b(BZLkJtNS3U|Uf(-;EM9Ax0AL(t+l4a5jrl&uhZ=(PSmi>@Kc#+vZbv>#CD zV%)2Hqk8@M{V(#fi)PYRWeLN6PhH92*v^5zFKyudf?s=cH`83XLSPv_u9X>5_q-~R z8Q+dgTc#+?bU=I33c{}{;iczUn@OaLvs0vh?e2B=`oXEM1ro~2Q7l0T>}i};df6E% zkdI?1v*TY;WK-h_<8ez0_mcmy9?e8e-JVU8XG4d;pjE0ti*wPf&}U#!_nlDn=(yC9 zTS*W({w8!<{LrOkP1C~M94$5`W_vh+3ZIN@Xr@4h9ZE3@Wa3PGecQ$PpgZN}j-}TZ zUh-!=KiPEdV=uYv*lX0EUk~y2-1G{OOnry{5q20F2gY=%z^HRI&v_PEDsXf%Nyo|Y zGhEVd)IOz)@4g5gb7^ShR7(%X;WTxHtH+}!kR^~E(23=&KT$l9Ic|js`+eE(+aDM> zYS#-fY*$6m|5fu!ynuC_yuE^>%={(O_jeCgsWvTFH*6S&M7I$HRlN9N60WQwd2lGs zLrEO?#Ow3kUZt621!MeF@E4c#{_1e5JsZ$liv-56d~=q|Ujv$I>@O+0Z7pgHc{M*|O6*Ox+QG&(`< zB87ea>A{inL$zXq!nqLR)0!Sl^$C#xnh4-^Bhigb*G?hV=1v4@TucL13S%Ev%Wtim z|50cgTVll540oXIo;Wd zdl~(mJoHCw%)-Wk z2>M58(&pOp)Yk9D>zx)N_~H(!Y?CbD0ko8=IyF{Ub;VYi%bcX^fo8XDB29G7c6Nf$ z#rkQsM$CpJnz2<tMfD}(sBmWpVX)sC5#3?k$jNh*VO|reJM5%$*n&p`r zKS-9@*}CDz_`9)YJS9*2yR)*g2m_t%!y(a$w}R5CMFTO3^&U=KYY+l;HB} z>hmj9FMKsJF@cTU?Y?Q}mvHj^FnuIqf8D=c`p~L9F*rCv=iTmeFWp=fw#()#>Y9+R zyS5OyRyMqI?PssWo}lzeN1$#|5q}-l*O0d{j&!;CjJK6ex7-RBCJ->*Y3>ZOZ;eZe zlqkh|qVRiooZ!4X^9|so1kvHe)MtISi@|ZW^g51v@5l%sJRyr1g ze?A13h1^MZIq~_=&G;neoFdu5ryN4ceNL`@ipa24ZH9FT)x%klvJAe8R6y77KKMQ9G{w!O zXV1~=Lrb(4Xc`vsoPk%|Nr*r^YQ3QCL<+yC2C}2*WYrVFGF{ERX!pE*^q{VXYZ(85 zcN5_KAOGn(qwiS{*IPxdyEwn9Zs=+PWcErI76EA`!79)aEb6XK#%EPr< zoej$HedmAY3OD!|jn>ofi|H+UN&3#m!DHadUV}$T%AR!DAH4_1iC;$c~>s(hIoTVn#g#gIMdY!xX9$v#wOgYH#@ zjvMU2I3}y&K-^U1`S;;_n*X*_bzYMFB|f}b;kM}{!ATfg&kHBde;y_n-M;zXEI@gL zX4_DXOcCyNvGGjf<1^^{TfokS@MzUdIrhu>Yu1q8JfuXPF@-EKWm!($9ZSZYG`=6r zi5wdXAJ!S67r1wOYuW4SMn?Hw-eUt z@1(?YtyCIaMq&B8=IWcLPKV3K-8Gj}dA>$BmN_3tMQf|uq{pPN+vVli>#EQDzokxh z)I?CcS&+Zs*H4kmNfgtcq>vPF;?)hNc}i`QW*7e9Oq*(dTUE1vUOqwnuD=(bHOciP ztit#yGfGu@S|Pc%H?&1;t-gGZ*Mg(VS$vaC^Ip*t@BaeCK0Co`Q5-eD^xq!GyMICu zbYIk8dc+7CyaJ#6#T$Z0cHgq#K41uEFa16IP4oVqx9+p|0VG=~?Y?TqCipksU_a($ zygT-@*+NSm+P}*^R(P5mXaAi|zp4aPVr7sRhq1R1wR7g9&U!EYIvtUou{2)SfMN z)r#*qcI=qU%*;3dg|#+S)xL;yh-fp3wv zKz_F8qs4@yBy+V*&d{aJl-L(JcTVGau@XnXz zf2S%Q#I~37HCOAn`*-=z>}t4;+|gCxu9}gad*@C0Up}+Rvl~0n&&TVX+|leL&=Pb+O#;QL2NqL5i9JdcIFnR<2IUeW4`}zUlh>tH&;c`>w`%MDTCDq4-1?h`rE{ z#`4N)fo?WqO$DS360rLFPsImBamB#M1bg#>eO${PWd~>hqLf7XL}8Z#9*x16so1h|=^Ou}h2EGOG4A5>kLEz}oqq?@XCe3Ek z$K5V%r70(Iocm5EFnJ#3X_|<0{YlloTF>*J5RqX<%X>crpDMF8+GILfyK{M;)@U2W zC@)k2PUT6RKVQemlQmp_eFkF~BIOW2=X5xQg1M|>uG9&u43-FnlBpHPQ>E`m3lSeZ zGhUbl0P~G*$4ig`L8`(jnEIlUibk0+rl{AgrwnrUu_aZ75*-4TA<^ms9*buS8-^^_ z@e{#&9_zXJAAc+V;(v_MxoPYZ8nHd}g}d*=&prqt%YhLiDp1M65cSF@*T>@%F1K2! z7w@_;{|qz9h3?qi$t8B<4)-_LPRoTC6ArdwU4@b|sgSZ4s5{>?V>P1A)a7_Rpd6&0 z04GE_DJ4wkdv<*VCDw&wS3XbGq;s}y=0yiW$5&{J17aC~CuZjr&H#>TaCAAb{1OLT z&+7J#Oo$`^)M~Zp)?06-ef#!NxO+EU(`sQ3z|J_9X;qmK@e@Vi-hBMHzhh-(sKqlX zlQ9Y$qaoR7MynDR8x@5g<%&kbwo&PgqA2j!f4zvOo{G`$mqc?FcBQEdb$LoMS<&yy zF#Bb#B1y`9%Iw%Szq3tN1IN#g4?GJK-3_8JQ3MHb*e8t>!(kFcCJUuebhFg2?p{?a zmq4!yT|NX|Ts+{hd$%omlylhX8>`(jbla)_&;R;Q_A!6|*e5h%HEiDSYJBv70yXh2 zP>6VF=0&^2*gDsx7Yz~w$hTi#{8=MH4u#*m3Y^hotWUprZ*gD6rSx(d%L|;Y%WB!F zO#%|HLeekjjpM8}+tAZs5)4RXQe;e;0-Sgoram{h^;cf~3;+QmS(uc~(`_?W*vo`s z_mo_$h-C#F!#Pp7f69vG%AU>RsdSj>=+UFRbLUQ;o15c$y>7VO4p6U$JUtz?h@$@L zYTOKhF!er|dgPItZ#Z`Br(z;JH9d`|78bzF2*VK7%&bwt_RFV-j>=#F7`9AYE)YMO zIjcaZTJNi0xu%$zc_L~w%BiAJM8g?dl|+V!A_y+^bgF2!>e;GN@jz9@On7o_yyzfc zk=c5-AsQr#pf73?A|yaPA&0`F?cFM5w=Q0Ck5NEz2)O(16M`jJ^Z*+gnm~xI?9)&2 zAN;F#(NF%{DV%!IvJ=*Is+AnVFdhL?mvv+jY}uG-ju!np4f@#8jivnwy+#?Tq8r4G%y3 zhJDA5{a;NYGy(kUuY3jHeeBrKv#Gq8%RQRW)cdF=bM^YO?NdpqR@+x$S*@no%WlX| zZLZIq>U2sErr(!g#;dGyE&-)_o~8rhIMZP|zVv(q-UCTedOUfdIJq&N$1`0^I-sDZ zh!f&CA%uOUI8h36uUt5tcJa-#{@Aho&vvKLBljE>?1#@L+E%U4@-XZdoOVT<8-MD5 z{}(Ul&3`b~iH+C<&hJ&yNQI4%sz3_weIMSnb4M>Kq-%tF{*D{+F9Ir1@tvH4!qbbA zl-N7tzjW=iTdU+=pISHL6U)=?j1rU-9zy=uWfE@ycMe7=BKBBf@fzTd-uYB^{Z$-@(5}~2vLgZ21NLQ z6DRP#6DRP&+it^SJ9Z3bq*o)2s|x4pdFB0Fu0l9k*E1TDRlf&-$p&rB&-pV&hNRbt zGw6;J)~>xR41s#R^nOY)vue6%B?3kx$FFpMs>(bJS-gD1C&Lk+Hbnu`Yy!!~Ur8dw5BCn7}C@i`D6@K$K z-(h|_UBE;Ce5?}$5MyhB)kT6JU?uVbAH`wzwWp~miYpeMAGJ4JXa6D$$SL3fwNGuB zv53*(xdyuN)_wL10EsdjL5mB$@i?P6(9K4ySt*n+!XTFv7|Wv|f}d(g4^SZ{r@~f@ zFIct6Eo@B#_lFO}H)FisIDO?#|4kuAzo4p0KKS5+`1;PBI5s(nV^dRjbgsPFm06||gsRqw%K@h%m@g-nE25f+Fc;%|-S`WV z`i@iW7DoCmM1k7O9~QFp4(DWN5R{{DjH%|Um+#k@lD`RpZIwa*gJQz%uv6r}oD{g1!< zPW-Gc&_h2t&N(uC*rGF2UF=B|Y7h{#@bctl{S{-saR7^x{;Myaw@(8k1aeU1=X(62 z_?-jS*uRVewF>gAuma7u#`FSOv96LrK`KP#g~VG=V})6Ukdo+za-R7Kbr=REwmHZ`84^D&Cea7 z<>h4nFL0RPm^K8SA?VD_nd8TgM-vkhF@Q#rBu6GDCT@@8cqn^1)IWacA>hFWVTiy0 z%)o;P0U!)ZV%&S&(r)ACbLW6C1iZ(`_wL2Y%nVj$W-jU78f^&O7W^u`o6*640PxCZ zp26hiM!x#$S8bBlo_gOF?>9Yb$A&(&HSe3#jsFTQUbeBBeQ&eL!=ZoG?5%1vPMTIi zVKkJ`(1DPc_rR&m@quU8M1GbiPDD*cCQ3*-C5kdcQutoY9b3;7cg@IiWfD|XiHIuj z!OU*0y|U2F4r^2xAy)Yu{fCcyFMjxCEv$a$IOkbtOFSfGXb7+ozqN@zU!MgVgSd2DIH9tD}I2tyi4p_h1ArPH^`M36UKUjZ4sKrJh>^%U&n$}5b4l2`^v9yuGn?Ea^NA6LcLH8udCgtE>JDh7cA z#KBnay^}wAc;b5iTyf!FJ=6;auFbz83SCde1D*k~?7fiw#iO+!IN#+<8h#a6XlL}9 zBVVciv;Xn-^pjI(yV7pQeqmukfIIy1GURH5&k%TyA3tu2q6p%mh-a z_KArJ1VM0#$U6Y6{mQSv|HD7P3_>el8+ZUfMSyx8Hab&Rnqo3RM&+8;P7M5&#*1zA7>z1gbCqrcOLPUo6a@CaZnT(IJ&h3Zv{rXjUF=mc;kGb5hFL8I;aq>bQkIF>t%0Ic5#~ZB zC(pSuXI`~%DsF2tmSV1}OLGVH$Pr*T!$~i7erWhl`Ewc2<>do@b@f9irfyQC4rE%o zMK@?4J3rmR>i>Kt=b2+-iZ}kmo>sL`K4UP!s`a3I~i#$}abFD1pbTUh+FX_*rdN{R{xa z8=H&4!89>$YYITmwhoH-cKj49*da@p%1!!6*z*xP~^GtMp zO-ajv&n4$ik6ny+iHCVV6JL-2*KYpYA*m`Y8DGqJW=A&7qDCzZQKyqgaS}(J>Ye_%_P-Jv z0#AQxDwwR*qSe*aw>6v1e^Ia35yvsYFhmdpLw=?Dng9LY54-$mWHACjC6NL|5#Ss& zjzP5=&}x;Bb{pp0IruaMPy!C41Q;DWci0A=(T5*7W;OjT+Um@4EqumjaGYzdiiC-} zQa6RhfHM*q;yNO9MWiD_EmdvJ%$QH9qA@*fj(U$8k%l4~s)9wpBG4zEdHuBjzHOX~ zyEy4jh{gpGSy5O}SdfY>Jlm)lySK~tEKTCnp8*)S(E1uCfA=&l{L&rr?*IK`{DqI* z+Aef+Xe|1zT4f7p~&A$437zLUeqM z#u5o5KyIA(C(6P;F53oFG7{>a@A6n&OfAs$>ALnsRTShvlnY5pDoO8ozD(cBRAIh! zl|W};w2|_}jtS`#vBG&k93DJZ-`&gc%i}Eg>IM5Z24$_%TF*57n1cLIt_OE|d45vb zD|Q3e0WSp+`bCx+)I1u9WFBjB_%LL7`RaH*L*S{^YJvAYR@I*#<#a}El-xDg28qf$ zsXQJPf#x|(3ICux2WDn~{rgMcdFmvEx<# z|MTfq68pA|9hR0nFfYr8A%_Pw7b`3Kb!KLt|Gu3E_k>8k=St4gq2B+7{LnFCQiv)k zlwhQtji*jnk94gbYM~$@hyzg$4igsYck}VYt0rrDX25ZIs9I&op`0+8e(q^306mBxoV*}=A)o^Q zwLnj^nmIMd;5i6FQc2Yj1-4n6cSmuQua?&{1RiT`SQJGq2!h*~c^Fzf8~8l^OTScx zJ2a#uAcOD-1I~v4_%sC%vRl;cmZia225fGY;56877-9|9szR%ZR<3^U2B624(jf+6 zod`#TGag`Pl^`szWWC{B>P1m+)s^dFyqd&&^Z}{^sEhcTD%Dg`6YpaY4gn1SW$(cv zj5FPry=R;YI}yv-I5a7NoF_QLu+Fk2BKvy(D|;8r!ygCqIX_GRvhTftKliR5@%P_z zw*LCx{CwkskF}Cb+qSVgJ$1w{;SO0@SyKRb|H2)w3y^#axUzKXS$*AumYQzh&Uz2; ziQqF!V-?a(#siRmdVs7dDlkRsrbvX*bg2IyOHqhOL5Ml){6BEpi@K? zfuMjdDAX+Qn)+U0?wp7mP_|UP*cAH^c%mo@&!0d4Gp$x@$m3LXGna!8W7{i{!2^So zx}XG&5P&j6tt~TJX$m~~WI0ai+&O5T!>bNGnF@4d@P6FLF-A?W4RY0fsdG2YFdtP& z5IJHeQeK&}>d4!o7g-lIS`>su7PP`N%Q$h)#z9~rRUdgzvG*nfG+=76i)qJs}&*-h$WaTvoHPJvpv)P2~}+}2tvrcXiO9bKK7;+N3^=yqQi#| zUzHZp(b?%?9LGWB?Ti-qRh7jL{F|Mj;BGS={Q zhP^Q&d*kqh%4HnWzOFy?=^n1@5wTZQ2U06A#n;b;uNrsd#YsI4kSN%Jyj4O@8e|Wj zGy5>c7m)zjGv&@=5ONT)74e0N=4ZR%SZVZ^(wv~_gvRbbKd@*&xqC`4Lg87}Dp4+k zG;{Ql0?%YkpS<;&;z=)Y3{=@GD9E7H?@BX*@2Bu}^K#vo>w8siv#evLr(5hjOc*+2tr#F?5#^GW5`Jvs z^<&-jYoV^cV&0!pK)~tR;b0Enu1BC;%$D}275 z#ABt=iQulEa_7o=7V#=X4NCT5QQjcP>2X+E8wyfLH-HasQ(G=mGkbi zueqjpv}~p=3nW!cO62=q=p`FD6EMPjG zK*ktTPTsV`j_=Xls8N}U+&L5|iQnprZ?PR73CcPgQAIug3{izc=^0hqR)AEkV+Y$f zl=VB+K7vbu&JLbu*v@h(z*+$hz+RP*0&M{2H}~TY>%TLxF&8T^>xh=zu3fJvf?&G1 zfa&b~`Kc6;9?V#Lvh8|DioVi@jxK!eEmo#vW_EBNr z=~UUQsx}AMu3#2m=;7#PoKBS` za_fKog*2Rew}NJ1!N2gOkNom`_dI%N;nh9S);j3aNuS^(_Rj9bQ~DIU^*PVoKxzYcz~QZ=NN%?e!P(`b4@*?OhORxDxQfgL@gw= z`}eqw2hT(qaP{-s z558(Dxo~UPZNA+^_#s|jKcLC6UGj=o>~gECbH3j{?H=5E*V_SHvDWEKU5@XlONT)M zQcoNd1T7ws_dlrMt0ve!j$P2DuYKD8=Re9ZomCSMR3%rX#AsP+@W7d1A4;$Bifue)D-qq;#udNqbH%8}VA#66^#UFa$1Gww1 zee&DCz3i>8{nR)Y^yb~}i$fJUB}>o(f;{25UV+wU$652mnjo;p^_`#njQ*!Tb*Nbd zJAxJfG6MC9wCl-qRjEfzo8um5vE@pT5ET;f>YM|sZN$ZBRQ!UC3GTWXcMb!M8wDJM zEjX}+Exbn|wNU@dxaT`+aiCjoy`lL1+paCX0g%kp-PVEY>>m$uCs*AjYx>l?UYY&Y zt9SV)ASx<@nkQ%ipevw`dfyiKjtKQ$w>x{%upYe{$KE|D55D*2{P$*J--Ajyf=4A+ zXrhW9NV}@k^Cn9ruX+(PNx>=kDRHW=J za$sWx}bkLz~mGvN&~40R%-wk0*+(j-*<=qBopo%=bS5>Ys#bVy*dA_ zSL`fHAedm8D1Xg@d-&FC+=qyU_s$n>hLPU9;6C|3y*B&3-IH=rc@XY0XGG|OxC=s? z7+WB;*#=z^pSZ~6vkmuu1LL1dz({Vp)_(lmuS);C5lW`aPC8KXH z8cfnhT1@BOZQgZ4mJc1$t0j>!1Rm#{pPrunYP;P=k|apeboj`!40)appNj~h0|zbv zfgIaBj8#QZk;&LjlULcPihLd=nTx?b7TcVT9RacGwaUw~gZCd0bp*%@uG!zZ^|#-* zRa3f-1~;>>@S7}YgfAdDV!S)@H_WuSW%7_uY5j%VXvpPoF*eGjSZh zuhnXyUay0hhu!H_QDLQ%bK*^J!Xy!DD9dG|K@lNiyKif>)MPXbU%g&nJG2@Nx3YnU zQ-MqZAW=n%($nb;$mLn)M*`s3@9zKiH$Fc5#^>~O{?VHU+(fLOZN&Oz22OQz-qA1c zlR5?;am|$f@^`8rk~pMe=LeOKi@H@>+ z&mRvC7oMI|tc(EJ(Ug_fEZV={H!G(>unM1%az_d4M7jpmiwL+q*_=(i>C1)AR``u4 zr}sT}fqymkbjNe850qim4YU5<+pjGis)fj?YCawO?VzQE2Urqi%Hc$Mj_QB=MD2$z z^!R(OM2xEy>oeC)`-fk>%YCC&mwqWc1`kp%N|uRo6-|lCkXKYXM!922x+dg)0AvZ^ z`q(MgPPR>U!PoxuG4uUvee?f_;yEQ`iQsom$RoEd7WZC1qvuPhSQ-MJC~{>@0^zQw za_(24(oxkO`6%(VtsJYn?c(AAzr0+Q^S#jb{d_hAo_p`TcMlQG20^gv%$YO48prV~ z;y6aVUWYLTVHjSbjUyts_>qqQAN?q515KV7+hSk=N`_Lf-N9a^+pDI~DmzvAj+OW1 z2H}-Q8J1PA_XYse9{?2q>?Hc^dOUyeS8o6K`#c5V)w(cOVsW4w-+xQ~+s#OlGK|rb zlsg`>p<*r?nDsDrodn3R1q2NrYh+sNX$D?qne6NmfAY19xc@+l&hDvWebJzJUSeBd zY#+N;w{-8*7j^&BPw00&mC}xEkaCprgT{^tR-r}tg_1T03dI6yJi(2eV+?AlPXm|#^YCDo1s z>uSP_P}$%>x=5WhRO3H+Ja~6j&|OSATMHqzK&2L_uLUULP>aQuoZmU&+U3*-^5yJ! zO;oi*gmtE1O^a-^s0W>ycAPu6C0nrxg3vcY6Hor#iTFFtb%XEAEcO?kcB{gKM!Ss= zYZI|tT%43AZ`p01Fbprl{x1x84&(%+MCgl1p9y`3Fbm*Cxtuw+neeW!pEY-^^~~*w zrR$xiNw26GMiv=u$APvRA=*MkDoX;O@B}zzDp)mF;*`Yqq3985 z*O7E1je0KZqyZ)}v!2?yxw=0J;Fk5&U=DFV2_`NS;k6GwQ#;sB>8`?KkM%UogrXkm z+C-#lGYvVjw96fvYob$r9){KA4xoY{8I%$s=^IeTIqecj*T>SEM3^M#6)zR&03*Qj zr7wMH(HJu&BJ*2YTW{}lIzQiNG*GM65XUiy2+VxR&^=Yfxp%z_Eh5y35TFzU3$P79 zRTF9XMJcmY)$@vIuAWyRR~1$z1As|Uay%(Y(5beaW&XNRef-Fc|7Q0C3*Y_iSM$QW zP-B99$IJ5%@0oFDOATPo6zD;ut!yqD^6Oeeo4(%b&GaY-7SInmk*&F=$^E1-O*8Q% zfC&&cAikzV;T*m>H%H%`kI`vH=rlrPkwwF%I+doFO%m)(F6t|{9M#I&%Rz$_4FCt_ zWpo5C6vzpZ!BFCb`hikUL-d@r{YEoPHi}*zqFzL+Ex)+f)%Drb7fl)gal$GB~nsl6;kmEE>tA}1#R_qlLFo_qFY(W{RZG%>I_WW5YDGrgE@iD zfz1@FHWeB{)s%fegQ=bjr%E{y^;M+`hllW)##L?Z#XS)1n7D1`aux&Y+(A-?q!9c zJe#=IV*iRSN6rANs~<90JP-oihB$7)`B|{cG6mDB(o&{6gCbQmgtGb`#6!Rg#CCv%Qgpk7f#4z<0E+K0YE1LPj=d=oV-aR#Ekh;&J{=fgNP=oKA1?}9v%&AU#> z%;)wYom{ukM3jl+zVi}*$pEAz;#E-tBP@&TmC70EDx&ID*eWzi+0cUaW?ipE#FL=zM$b~Z(M7>BOBV?%*T_X$D zm_Vh%0ssbth`oq+%v6YK#;PeZ^*vFalzRo)q{v)4J>fG<*NgsRkzZUq;6L=C16SSC zscgGtqF%RB6nPK?eG%zQO-x+lWf@yUGDj^CO~1JJCS70msuNKj<{o+M z#i+4{eCCA`Ls}z3O+b+nMNl6aVxvMvRg9Ld2EmjUi-=TI6iNa@St+ezSz*D*A;_6D z6+sp-rQSp-BhE4uMGd`T4XMLh4*I!chxN!khjjVyVFK=uc6-fh+$d~hQiGsN;z>!p ziq8ZlP=Nsn3|PvnlXvQaoC#&NjJYdflNd$OMcrZQv?Q3B?P@g)dIHK8HC6nIR^I zFo?t{f}Ggbl@O6gprBHnRH!U)Bq>NW1CWZR)YPc&Y>|dxEpLNvoWXjyvPgJ zFI;2NMytC$Hc!Zrdk#u9PMnBnX?aFH84jzjKXujC6s4_ey5Bh4v|B6vaC)qnMPr!0e9nFTZ7{ zLZBIl`UdEEpjU`b0+`JA3R}N%&Tp>F$l~IidhRVy96P2pds=+k^)$_qc@=C;4zgU8dSE5)HQIkwg;`bam7oNg zs!pd0xiDB`iuvoT`jh|{yy{s;<{a3ZKe_wc?4RuYxBo}VjW@ld7mVOvv)g_0_UrOT zD$p4gei3&?u?3Y4A>FJ6)HX;HtRp}7mY%!kVCgn5FCV6r{rhQVa~~IHyQTpI2@p_j zLW(&gOJP9$$RiFQHe^ts#uybf1Yr@PFerI27F7icF?sUr4d6uKVAPTm3nMm^uvpiQ zo31r&nITyd>_6z2jvdzJLx;)__+@YN?juKd;foW2pR0#C;>Z*(F2u)iU_(ZOEm8)6 z5OooF;efpdITT_;EsE6F3Tapyt$x#QZqCTk(lK3G*-u!4nZdrGmz|3v-;ATCi{Kie zLmmXajMI$^Rp7-s>uV;oNhsDJE@I?`nZ4G|ZJhSN7i4+)kg7t7K+DUA3Alq#0s$vs zST|Xe#bAehLP@XfgjITR&>eSl3_ud+$ z>2v@L2mD=bmFH7nJM>auSbSI!%lTkC1rQPSn!pJIJmrClUiE?!ohy_tNEoe2Yp&yV zzqzeEFT6P#ZkU#cZ-U%UE_O&kqK`mvzE!I8`R^v5i3T**ogCn;g}Gx zcspbf*o3MGMBqf#30d}011`;t=PdD!scE;>YkM;h`99X9`Z66lgl{>vgotQ)d6`!B zA0iw(W@d0Ah+%>R97x_UhKgbRR}j@T&%HKKNEjR6NkShqHhsKq{M=mK19!^up_0;7 z1*$L2=3_Cl8Y+s}5L%4hx z1RP~xC$}ftrhQI=m^H{qgL>?ZSTQ*q*9Wa*MJQTBC;}@cH$I62Z_>UG>Vc2jv3G7u zD!^GM{IS(b&fv$K)+zV5xBaL%<*N;gi4bJO11N%DR|lB6kFR?}`b z#@1G-TU!BdYy`Zy8LWTvo3BmU?N`;X?e$dNPL)O<)#RzNR8_@tHj*xEXi7}?9`{Lyc} zp}60WI;tv@p#=yj3Hk`A4e#5^!KN42sfqS%Je^_{-!dghR8Dm|d>FK{{|L=|Zj(0` z-%L$h;0QeqFu?|O?jmK=&bd|#$i{|jZic`U#$LnRYZg28h^2+Pc%^73I?S=moBGn*X8*YUZa$1_v=DDAD&u3ZZN&f)xdpgu9D z&32)iQ@QrBQw$%ZE## zoqv||m_;dAxPc8!q5h9Q4;9!QI;5bNW@z7Yo_}?`!-o$u0G^$lHPh46fiWhk)oL|s zZNpkSK|~WIG9lJZcx#(d6m`k6n)Z4Tce|miuZL!9E1->yklO7y=yq!tE?#_7*V@;F z*w$#q$j{NboV^8nyl ziQ4eoc9HKyKraBYHLMj_fj@H3L3x&NX8VsoWzw}Ib`N1?{}Ea`HczXoE!teH)57{G z>dw_^rX5p%YMp@5VVq~tY|rWDRIaVrROdGK=<4oN7teNeW&hg$-`=(C#&KNHb8l65 z&x1o#Vg#8C904+-#Y}*}FoFOHf@tAQ7FkL_ejvX=^Lx0=HVc1%y$c740~j!zj4V?# zLvp64A60d47TrzG(4-~G@*_zfU|x+v-RiEYGq-M?s?usI_7GJAyPX?-NfcFQI~m=h z#{ediPYI~Bn*00JRtX;gxOaS_qtUv(>l^gt&}jW$Um?#|=%Ck?`O#!R^Zm~V7-0n9 z7yxjLJCldHzuyqRB`JTC4I&~y@wM{r4QT%CGa6xp>GX2~fG>9+=(?TD`x)!O!NE&y zy$o0XxGvjFb+5R3pTozBqa*x~gmY2$HM`BWh8N@$LWq(iNmR8{mStB}dr}l#QSE9` zB${PONYjYZ)biPx#cUSwY!>m^S;FV%9g}5!6h;4wJpX;E`qNDHzO6UUU0);$Z1&16 zqR$7wrvhX_H5H=s0Gz4nX&{ zQfP-QZU1Y=?|wRqetoj!_m%}cyy;{CBKTgUU)}4=KOf!=e}DKB|8FLUsH!0oL?tw& zQ%zAz3gU%PJ{RaYJ6RND(rywmGtJy(T<6s*xFI10aM%#h@e$z(a5Ans{#ASg;NI{= zaRfA-^x)v27L!zO-=={zoo%yRm)NxRYW8lM=WT}pP5xEKte)d04lnJzwvDgX)%AF@ z^>O=hRQKBa`MhcSuLHVb|AKsm!y(V-bKCFtZ3rRq-X~>Q#;Tf_5aLi2vCs3!WSNyT zwKSg_b9!nqoknIpPt0=JL7w-xDEjLC7DCt(pf9Su=c>O_)%rLtB2lFsqJIb=0=Pg_ zibxTNRthXdbs3XUu$x5Y8R*LX26tmCgO#`#${gJsCXuz)ZW_9oo9vQ{e%V z*;b_i5w-yB5p!~y>&{tb?ko#zGXaBGv$wjk>?d_tNu-j?D3q%6rUQXJ2u`3S6K7Ca zDJr!o8N2Y#r6%Ikug;5p7L{NA?hk%6KGY_z^IDbDbj}7hxJ{d#zWVV)H>@8Uh%V>_ z&BJ=Loqs+5i>nvkzOVYYEXO8(Z0+G{09FqU4sdvQcyY>%b54vg!F%sR2n7-4g{lqC zS@qruk?|pzNQ9kp)~Z?|iWNvyq-#`rqS_~-zN+>W=NTNrN$&Nz=jrW!Sy%O=p2}o`x)WN8`{DW+%!T$g2}J zg=)wd+TD&h+eu^!l}G^#C@UGFT9~J76sk(3)yzM!S5ikoOCrt!BqO3!K}$9+l~q_d zqgetJUu2QndIO{byn18Ni?@v{E!MF4EZ_X|xxTKx|9beb5zI}v>hWA$2Y{zfpYmul zA^`m0!2^Er;)S^@!sl^pvMe)O0Lya8x>~W$W?atarvLo8i53g%(=_JQszXK5QIT#? z?XhY%sCHGgqd=^H^?*@T5&%jR1n>fsN>r#w=75ZeQpda^?^9)7F>@wamJ3jJ>*ZY& zK=&U%*1tUZ6aD5F?{JuPqh%429#coj_8f&Cy!6;m7qA^tO&A&rV42wngt>OQ0|HoC zh^sw*AnF)gDuqIV$qZ`-2`fs>Do>H`^pUSHDChXhV~8*skH0nPv}p0ajGLyMwLUvX z4i67$I2`JDJeIw^y^t0KpUq|jfQx>gdT~rAiv@SGj8udPU@c2iibP%SqoP_nny_jo zs3v7iI;0u}z=|zyQ%{B#jIJJ#8(ER-oDvWY@Fq?!bhn1rIB!4Rlk$5T7w#6c(o zhV_7R0a{wJg&5?{`vM)weSyMKr#yvo@dN>L$kD+QIr;&Eb}d@`H{d3Z=Q2SZ>}Z02 z!{Ly|<1qoi-ef}0_V;Nzozl+%_>Vv4^RlFSdCqn+G0uCt5{ZmR6hvZHjTDGg)p~2A zW@GlomUm8=D7a?p9-`6{Ib|+|xwL8OlG?+W0-*q84#)`54=XQIn@IoDr$^ifzIuSw zJdLyyMILc1d59CskqSl5_{fT_gn3+fJSEjcM&f#BzO z=o{TfrB`W5r$vjG;ibg0k(h|8c!F-sLL46-(-Q#WlM|XO7POz|gf!*7vgFgUG~%4q z5Uf=-Dq=;|`YO202B1*A)YpsEEm3epL5aMsR$c+00%5lnJx_q}0U%>Q4*(@>j%~k5 zpw~5Qb0!-Tti&DDaluFs<1JHUE74Vv7l>g*)C*e<9C7e~?*aa*K<=A#A1zw6xE{A6 zo@+B$i=r!l!?lAZ_5dmX_5cTf(@PJBF&HpZxvbCe0f3lDv0O?4Xi_iV`U;Q)2p*6E zkp0V@H1J^)SG`el(dc79$3xJazkb3=@)cXV!!OK&Bkr@Mj16_T?4$&2!xbxvlAgwS z&@A^l*vTZID;`U^Nody2BDH97JA7;6xi-_~=2|t!F3Hf9swCz+jr`m%9)2 z&Lq3F(5yv^7B}NNA)brOo1qyh5;_K|Az4K{^ge)RYs9k$=qCVbuLcd-0Kj!as@Ew` zBZm2KU7QC1Pp%|Bsy;RZd9NunYtf>`CcabR*)UWO$<~SJrnCojvfFw#uUDpP!#En2i_(cnL+#;29|D|})A0000 + + + + +Super-Simple JSmol + + + + + + + + + + From 02a8c3c3a3da62af2da3fc4da3618b2a0fcd2fff Mon Sep 17 00:00:00 2001 From: Subindev D <64056430+subindev-d@users.noreply.github.com> Date: Thu, 11 Jul 2024 16:49:48 +0100 Subject: [PATCH 2/4] update width and heigh to cover 80% of space --- config/plugins/visualizations/jmol/templates/jmol.mako | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/plugins/visualizations/jmol/templates/jmol.mako b/config/plugins/visualizations/jmol/templates/jmol.mako index c73c24eaa9f3..445444cc7cb5 100644 --- a/config/plugins/visualizations/jmol/templates/jmol.mako +++ b/config/plugins/visualizations/jmol/templates/jmol.mako @@ -20,8 +20,8 @@ Info = { - width: 500, - height: 500, + width: window.innerWidth*.8, + height: window.innerHeight*.8, debug: false, j2sPath: '${j2s}', color: "0xC0C0C0", From cc7a0f09b866d41575e67ad54f8ca604a88b6b0b Mon Sep 17 00:00:00 2001 From: Subindev D <64056430+subindev-d@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:39:34 +0100 Subject: [PATCH 3/4] add readme file --- config/plugins/visualizations/jmol/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 config/plugins/visualizations/jmol/README.md diff --git a/config/plugins/visualizations/jmol/README.md b/config/plugins/visualizations/jmol/README.md new file mode 100644 index 000000000000..0d43ce03ccb3 --- /dev/null +++ b/config/plugins/visualizations/jmol/README.md @@ -0,0 +1,14 @@ +## Jmol Visualizer Plugin for Galaxy + +This plugin allows you to visualize molecular structures within the Galaxy platform using [JSmol](http://wiki.jmol.org/index.php/JSmol), a powerful JavaScript library for molecular visualization. + +**Usage:** + +1. In your Galaxy workflow, select a dataset containing a supported molecular format (e.g., cif file). +2. Choose the "jmol Visualization" tool from the available tools. +3. The molecule will be rendered within the visualization panel. You can interact with the molecule using the controls provided by JSmol. + +**Additional Notes:** + +* For detailed information on JSmol and supported features, refer to the JSmol documentation: [https://sourceforge.net/projects/jmol/](https://sourceforge.net/projects/jmol/) + From a991d90d915027ec503dfd183576d5bf487a5ed2 Mon Sep 17 00:00:00 2001 From: Subindev D <64056430+subindev-d@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:45:23 +0100 Subject: [PATCH 4/4] add jmol in visualizations list --- client/gulpfile.js | 1 + 1 file changed, 1 insertion(+) diff --git a/client/gulpfile.js b/client/gulpfile.js index 873bae0c0bd8..bf9858c7408c 100644 --- a/client/gulpfile.js +++ b/client/gulpfile.js @@ -22,6 +22,7 @@ const STATIC_PLUGIN_BUILD_IDS = [ "h5web", "heatmap/heatmap_default", "hyphyvision", + "jmol", "jqplot/jqplot_bar", "media_player", "msa",